All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: MIN
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIN(X,Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: JITTER
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JITTER(X)
  - 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: FUZZY
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FUZZY(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - DMN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: IS_UP
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_UP(DMN)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/watchfrr/watchfrr.c:210,1
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr.c:210,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:216,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - vty
    - dname
    - ignore
    argTypes:
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 221
    functionName: watchfrr_set_ignore_daemon
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    - vty_out
    linkageType: ''
    returnType: void
    signature: void watchfrr_set_ignore_daemon(struct vty *vty, const char *dname,
      bool ignore)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:225,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - target
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 300
    functionName: printhelp
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void printhelp(FILE *target)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/frr/watchfrr/watchfrr.c:306,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:308,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:310,1
    - Dst: setpgid
      Src: /src/frr/watchfrr/watchfrr.c:316,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:317,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:318,1
    - Dst: execv
      Src: /src/frr/watchfrr/watchfrr.c:323,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:324,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:326,1
    - Dst: _exit
      Src: /src/frr/watchfrr/watchfrr.c:327,1
    - Dst: zlog_info
      Src: /src/frr/watchfrr/watchfrr.c:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - shell_cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 335
    functionName: run_background
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - setpgid
    - zlog_warn
    - safe_strerror
    - execv
    - flog_err_sys
    - fork
    - _exit
    linkageType: ''
    returnType: pid_t
    signature: pid_t run_background(char *shell_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/watchfrr/watchfrr.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - result
    - start_time
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 348
    functionName: time_elapsed
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: struct timeval
    signature: "struct timeval *time_elapsed(struct timeval *result,\n\t\t\t\t    const
      struct timeval *start_time)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:352,1
    - Dst: time_elapsed
      Src: /src/frr/watchfrr/watchfrr.c:355,1
    - Dst: zlog_err
      Src: /src/frr/watchfrr/watchfrr.c:358,1
    - Dst: event_add_timer
      Src: /src/frr/watchfrr/watchfrr.c:361,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:366,1
    - Dst: kill
      Src: /src/frr/watchfrr/watchfrr.c:370,1
    - Dst: event_add_timer
      Src: /src/frr/watchfrr/watchfrr.c:372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - t_kill
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 374
    functionName: restart_kill
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - zlog_err
    - zlog_warn
    - kill
    - time_elapsed
    - EVENT_ARG
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void restart_kill(struct event *t_kill)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - child
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 387
    functionName: find_child
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct restart_info
    signature: struct restart_info *find_child(pid_t child)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/frr/watchfrr/watchfrr.c:398,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:400,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:401,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:404,1
    - Dst: integrated_write_sigchld
      Src: /src/frr/watchfrr/watchfrr.c:409,1
    - Dst: find_child
      Src: /src/frr/watchfrr/watchfrr.c:413,1
    - Dst: event_cancel
      Src: /src/frr/watchfrr/watchfrr.c:418,1
    - Dst: gettimeofday
      Src: /src/frr/watchfrr/watchfrr.c:422,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:424,1
    - Dst: WIFSTOPPED
      Src: /src/frr/watchfrr/watchfrr.c:431,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:432,1
    - Dst: WIFSIGNALED
      Src: /src/frr/watchfrr/watchfrr.c:434,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:435,1
    - Dst: WTERMSIG
      Src: /src/frr/watchfrr/watchfrr.c:436,1
    - Dst: WIFEXITED
      Src: /src/frr/watchfrr/watchfrr.c:437,1
    - Dst: WEXITSTATUS
      Src: /src/frr/watchfrr/watchfrr.c:438,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:439,1
    - Dst: WEXITSTATUS
      Src: /src/frr/watchfrr/watchfrr.c:441,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:443,1
    - Dst: container_of
      Src: /src/frr/watchfrr/watchfrr.c:447,1
    - Dst: restart_done
      Src: /src/frr/watchfrr/watchfrr.c:449,1
    - Dst: restart_done
      Src: /src/frr/watchfrr/watchfrr.c:452,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:455,1
    - Dst: phase_check
      Src: /src/frr/watchfrr/watchfrr.c:459,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 460
    functionName: sigchild
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - restart_done
    - event_cancel
    - integrated_write_sigchld
    - find_child
    - container_of
    - waitpid
    - zlog_warn
    - safe_strerror
    - WEXITSTATUS
    - gettimeofday
    - WIFEXITED
    - WIFSTOPPED
    - zlog_debug
    - flog_err_sys
    - WTERMSIG
    - phase_check
    - WIFSIGNALED
    linkageType: ''
    returnType: void
    signature: void sigchild(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:468,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:472,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:480,1
    - Dst: systemd_send_status
      Src: /src/frr/watchfrr/watchfrr.c:481,1
    - Dst: time_elapsed
      Src: /src/frr/watchfrr/watchfrr.c:487,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:491,1
    - Dst: gettimeofday
      Src: /src/frr/watchfrr/watchfrr.c:498,1
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr.c:501,1
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr.c:501,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:505,1
    - Dst: run_background
      Src: /src/frr/watchfrr/watchfrr.c:507,1
    - Dst: event_add_timer
      Src: /src/frr/watchfrr/watchfrr.c:508,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:523,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 5
    argNames:
    - restart
    - cmdtype
    - command
    - force
    - update_interval
    argTypes:
    - struct restart_info*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 527
    functionName: run_job
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - run_background
    - systemd_send_status
    - zlog_debug
    - gettimeofday
    - time_elapsed
    - event_add_timer
    linkageType: ''
    returnType: int
    signature: "int run_job(struct restart_info *restart, const char *cmdtype,\n\t\t
      \  const char *command, int force, int update_interval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - DMN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 535
    functionName: SET_READ_HANDLER
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_READ_HANDLER(DMN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - DMN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 542
    functionName: SET_WAKEUP_DOWN
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_WAKEUP_DOWN(DMN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - DMN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 549
    functionName: SET_WAKEUP_UNRESPONSIVE
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_WAKEUP_UNRESPONSIVE(DMN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - DMN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 556
    functionName: SET_WAKEUP_ECHO
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_WAKEUP_ECHO(DMN)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:559,1
    - Dst: try_connect
      Src: /src/frr/watchfrr/watchfrr.c:562,1
    - Dst: SET_WAKEUP_DOWN
      Src: /src/frr/watchfrr/watchfrr.c:563,1
    - Dst: try_restart
      Src: /src/frr/watchfrr/watchfrr.c:565,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - t_wakeup
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 566
    functionName: wakeup_down
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - try_restart
    - SET_WAKEUP_DOWN
    - try_connect
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void wakeup_down(struct event *t_wakeup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:570,1
    - Dst: try_connect
      Src: /src/frr/watchfrr/watchfrr.c:573,1
    - Dst: zlog_info
      Src: /src/frr/watchfrr/watchfrr.c:574,1
    - Dst: phase_check
      Src: /src/frr/watchfrr/watchfrr.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t_wakeup
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 580
    functionName: wakeup_init
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - phase_check
    - zlog_info
    - try_connect
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void wakeup_init(struct event *t_wakeup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:585,1
    - Dst: EVENT_OFF
      Src: /src/frr/watchfrr/watchfrr.c:590,1
    - Dst: try_connect
      Src: /src/frr/watchfrr/watchfrr.c:592,1
    - Dst: SET_WAKEUP_DOWN
      Src: /src/frr/watchfrr/watchfrr.c:593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - dmn
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 594
    functionName: restart_done
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 1
    functionsReached:
    - SET_WAKEUP_DOWN
    - zlog_warn
    - EVENT_OFF
    - try_connect
    linkageType: ''
    returnType: void
    signature: void restart_done(struct daemon *dmn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: systemd_send_status
      Src: /src/frr/watchfrr/watchfrr.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 599
    functionName: daemon_restarting_operational
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - systemd_send_status
    linkageType: ''
    returnType: void
    signature: void daemon_restarting_operational(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_UP
      Src: /src/frr/watchfrr/watchfrr.c:603,1
    - Dst: flog_err
      Src: /src/frr/watchfrr/watchfrr.c:604,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:607,1
    - Dst: IS_UP
      Src: /src/frr/watchfrr/watchfrr.c:608,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr.c:612,1
    - Dst: EVENT_OFF
      Src: /src/frr/watchfrr/watchfrr.c:615,1
    - Dst: EVENT_OFF
      Src: /src/frr/watchfrr/watchfrr.c:616,1
    - Dst: EVENT_OFF
      Src: /src/frr/watchfrr/watchfrr.c:617,1
    - Dst: try_connect
      Src: /src/frr/watchfrr/watchfrr.c:618,1
    - Dst: SET_WAKEUP_DOWN
      Src: /src/frr/watchfrr/watchfrr.c:619,1
    - Dst: systemd_send_status
      Src: /src/frr/watchfrr/watchfrr.c:621,1
    - Dst: phase_check
      Src: /src/frr/watchfrr/watchfrr.c:622,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - dmn
    - why
    argTypes:
    - struct daemon*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 623
    functionName: daemon_down
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - IS_UP
    - close
    - systemd_send_status
    - flog_err
    - EVENT_OFF
    - zlog_debug
    - SET_WAKEUP_DOWN
    - phase_check
    - try_connect
    linkageType: ''
    returnType: void
    signature: void daemon_down(struct daemon *dmn, const char *why)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:627,1
    - Dst: read
      Src: /src/frr/watchfrr/watchfrr.c:634,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/watchfrr/watchfrr.c:637,1
    - Dst: SET_READ_HANDLER
      Src: /src/frr/watchfrr/watchfrr.c:639,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:642,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:643,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:644,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:648,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:653,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:656,1
    - Dst: memcmp
      Src: /src/frr/watchfrr/watchfrr.c:663,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:665,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:668,1
    - Dst: time_elapsed
      Src: /src/frr/watchfrr/watchfrr.c:672,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:677,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:682,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:687,1
    - Dst: SET_READ_HANDLER
      Src: /src/frr/watchfrr/watchfrr.c:690,1
    - Dst: event_cancel
      Src: /src/frr/watchfrr/watchfrr.c:691,1
    - Dst: SET_WAKEUP_ECHO
      Src: /src/frr/watchfrr/watchfrr.c:692,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 1
    argNames:
    - t_read
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 693
    functionName: handle_read
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - read
    - snprintf
    - event_cancel
    - daemon_down
    - memcmp
    - ERRNO_IO_RETRY
    - zlog_warn
    - safe_strerror
    - zlog_debug
    - SET_WAKEUP_ECHO
    - SET_READ_HANDLER
    - EVENT_ARG
    - time_elapsed
    linkageType: ''
    returnType: void
    signature: void handle_read(struct event *t_read)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/watchfrr/watchfrr.c:709,1
    - Dst: flog_err
      Src: /src/frr/watchfrr/watchfrr.c:711,1
    - Dst: flog_err
      Src: /src/frr/watchfrr/watchfrr.c:715,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:717,1
    - Dst: frr_detach
      Src: /src/frr/watchfrr/watchfrr.c:721,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:723,1
    - Dst: fopen
      Src: /src/frr/watchfrr/watchfrr.c:725,1
    - Dst: fclose
      Src: /src/frr/watchfrr/watchfrr.c:727,1
    - Dst: systemd_send_started
      Src: /src/frr/watchfrr/watchfrr.c:729,1
    - Dst: systemd_send_status
      Src: /src/frr/watchfrr/watchfrr.c:730,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - exitcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 732
    functionName: daemon_send_ready
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - exit
    - fopen
    - frr_detach
    - snprintf
    - systemd_send_status
    - fclose
    - flog_err
    - systemd_send_started
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void daemon_send_ready(int exitcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/watchfrr/watchfrr.c:739,1
    - Dst: daemon_send_ready
      Src: /src/frr/watchfrr/watchfrr.c:741,1
    - Dst: EVENT_OFF
      Src: /src/frr/watchfrr/watchfrr.c:743,1
    - Dst: event_add_timer
      Src: /src/frr/watchfrr/watchfrr.c:745,1
    - Dst: SET_WAKEUP_ECHO
      Src: /src/frr/watchfrr/watchfrr.c:749,1
    - Dst: phase_check
      Src: /src/frr/watchfrr/watchfrr.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - dmn
    - why
    argTypes:
    - struct daemon*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 734
    functionDepth: 2
    functionLinenumber: 734
    functionLinenumberEnd: 751
    functionName: daemon_up
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - daemon_send_ready
    - SET_WAKEUP_ECHO
    - EVENT_OFF
    - event_add_timer
    - zlog_notice
    - phase_check
    linkageType: ''
    returnType: void
    signature: void daemon_up(struct daemon *dmn, const char *why)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:755,1
    - Dst: getsockopt
      Src: /src/frr/watchfrr/watchfrr.c:760,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr.c:762,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:763,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:764,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:770,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:773,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:774,1
    - Dst: daemon_up
      Src: /src/frr/watchfrr/watchfrr.c:778,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - t_write
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 753
    functionDepth: 3
    functionLinenumber: 753
    functionLinenumberEnd: 779
    functionName: check_connect
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - snprintf
    - getsockopt
    - daemon_down
    - zlog_warn
    - safe_strerror
    - daemon_up
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void check_connect(struct event *t_write)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:783,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:787,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t_wakeup
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 781
    functionDepth: 2
    functionLinenumber: 781
    functionLinenumberEnd: 790
    functionName: wakeup_connect_hanging
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - daemon_down
    - snprintf
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void wakeup_connect_hanging(struct event *t_wakeup)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:800,1
    - Dst: memset
      Src: /src/frr/watchfrr/watchfrr.c:803,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:805,1
    - Dst: SUN_LEN
      Src: /src/frr/watchfrr/watchfrr.c:808,1
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr.c:810,1
    - Dst: access
      Src: /src/frr/watchfrr/watchfrr.c:815,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:817,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:820,1
    - Dst: socket
      Src: /src/frr/watchfrr/watchfrr.c:824,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:825,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:826,1
    - Dst: set_nonblocking
      Src: /src/frr/watchfrr/watchfrr.c:830,1
    - Dst: set_cloexec
      Src: /src/frr/watchfrr/watchfrr.c:830,1
    - Dst: flog_err_sys
      Src: /src/frr/watchfrr/watchfrr.c:831,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr.c:834,1
    - Dst: connect
      Src: /src/frr/watchfrr/watchfrr.c:838,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:841,1
    - Dst: safe_strerror
      Src: /src/frr/watchfrr/watchfrr.c:843,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr.c:844,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:848,1
    - Dst: event_add_write
      Src: /src/frr/watchfrr/watchfrr.c:851,1
    - Dst: event_add_timer
      Src: /src/frr/watchfrr/watchfrr.c:853,1
    - Dst: SET_READ_HANDLER
      Src: /src/frr/watchfrr/watchfrr.c:855,1
    - Dst: SET_READ_HANDLER
      Src: /src/frr/watchfrr/watchfrr.c:860,1
    - Dst: daemon_up
      Src: /src/frr/watchfrr/watchfrr.c:861,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 1
    argNames:
    - dmn
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 793
    functionDepth: 3
    functionLinenumber: 793
    functionLinenumberEnd: 863
    functionName: try_connect
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 4
    functionsReached:
    - strlen
    - event_add_write
    - snprintf
    - memset
    - set_cloexec
    - connect
    - socket
    - close
    - SUN_LEN
    - zlog_debug
    - safe_strerror
    - daemon_up
    - SET_READ_HANDLER
    - set_nonblocking
    - flog_err_sys
    - access
    - event_add_timer
    linkageType: ''
    returnType: int
    signature: int try_connect(struct daemon *dmn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/watchfrr/watchfrr.c:868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t_hanging
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 872
    functionName: phase_hanging
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - flog_err
    linkageType: ''
    returnType: void
    signature: void phase_hanging(struct event *t_hanging)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/watchfrr/watchfrr.c:877,1
    - Dst: event_add_timer
      Src: /src/frr/watchfrr/watchfrr.c:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - new_phase
    argTypes:
    - enum restart_phase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 881
    functionName: set_phase
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - event_cancel
    linkageType: ''
    returnType: void
    signature: void set_phase(enum restart_phase new_phase)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SET_WAKEUP_DOWN
      Src: /src/frr/watchfrr/watchfrr.c:900,1
    - Dst: try_restart
      Src: /src/frr/watchfrr/watchfrr.c:901,1
    - Dst: zlog_info
      Src: /src/frr/watchfrr/watchfrr.c:907,1
    - Dst: set_phase
      Src: /src/frr/watchfrr/watchfrr.c:909,1
    - Dst: IS_UP
      Src: /src/frr/watchfrr/watchfrr.c:913,1
    - Dst: systemd_send_status
      Src: /src/frr/watchfrr/watchfrr.c:915,1
    - Dst: zlog_info
      Src: /src/frr/watchfrr/watchfrr.c:916,1
    - Dst: run_job
      Src: /src/frr/watchfrr/watchfrr.c:917,1
    - Dst: set_phase
      Src: /src/frr/watchfrr/watchfrr.c:919,1
    - Dst: systemd_send_status
      Src: /src/frr/watchfrr/watchfrr.c:925,1
    - Dst: zlog_info
      Src: /src/frr/watchfrr/watchfrr.c:926,1
    - Dst: set_phase
      Src: /src/frr/watchfrr/watchfrr.c:928,1
    - Dst: IS_UP
      Src: /src/frr/watchfrr/watchfrr.c:932,1
    - Dst: zlog_info
      Src: /src/frr/watchfrr/watchfrr.c:934,1
    - Dst: run_job
      Src: /src/frr/watchfrr/watchfrr.c:937,1
    - Dst: EVENT_OFF
      Src: /src/frr/watchfrr/watchfrr.c:941,1
    - Dst: zlog_notice
      Src: /src/frr/watchfrr/watchfrr.c:942,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 883
    functionDepth: 3
    functionLinenumber: 883
    functionLinenumberEnd: 945
    functionName: phase_check
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 4
    functionsReached:
    - zlog_info
    - IS_UP
    - systemd_send_status
    - SET_WAKEUP_DOWN
    - EVENT_OFF
    - run_job
    - set_phase
    - try_restart
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void phase_check(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: run_job
      Src: /src/frr/watchfrr/watchfrr.c:955,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:958,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:967,1
    - Dst: time_elapsed
      Src: /src/frr/watchfrr/watchfrr.c:975,1
    - Dst: zlog_debug
      Src: /src/frr/watchfrr/watchfrr.c:978,1
    - Dst: run_job
      Src: /src/frr/watchfrr/watchfrr.c:985,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - dmn
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 947
    functionDepth: 3
    functionLinenumber: 947
    functionLinenumberEnd: 986
    functionName: try_restart
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - run_job
    - time_elapsed
    linkageType: ''
    returnType: void
    signature: void try_restart(struct daemon *dmn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:990,1
    - Dst: flog_err
      Src: /src/frr/watchfrr/watchfrr.c:994,1
    - Dst: SET_WAKEUP_UNRESPONSIVE
      Src: /src/frr/watchfrr/watchfrr.c:998,1
    - Dst: try_restart
      Src: /src/frr/watchfrr/watchfrr.c:999,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t_wakeup
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 988
    functionDepth: 4
    functionLinenumber: 988
    functionLinenumberEnd: 1001
    functionName: wakeup_unresponsive
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - try_restart
    - flog_err
    - SET_WAKEUP_UNRESPONSIVE
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void wakeup_unresponsive(struct event *t_wakeup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:1005,1
    - Dst: flog_err
      Src: /src/frr/watchfrr/watchfrr.c:1011,1
    - Dst: SET_WAKEUP_UNRESPONSIVE
      Src: /src/frr/watchfrr/watchfrr.c:1014,1
    - Dst: try_restart
      Src: /src/frr/watchfrr/watchfrr.c:1015,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - t_wakeup
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 1003
    functionDepth: 4
    functionLinenumber: 1003
    functionLinenumberEnd: 1016
    functionName: wakeup_no_answer
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - try_restart
    - flog_err
    - SET_WAKEUP_UNRESPONSIVE
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void wakeup_no_answer(struct event *t_wakeup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/watchfrr/watchfrr.c:1022,1
    - Dst: write
      Src: /src/frr/watchfrr/watchfrr.c:1025,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:1028,1
    - Dst: daemon_down
      Src: /src/frr/watchfrr/watchfrr.c:1031,1
    - Dst: gettimeofday
      Src: /src/frr/watchfrr/watchfrr.c:1033,1
    - Dst: event_add_timer
      Src: /src/frr/watchfrr/watchfrr.c:1034,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - t_wakeup
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1018
    functionDepth: 2
    functionLinenumber: 1018
    functionLinenumberEnd: 1037
    functionName: wakeup_send_echo
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - snprintf
    - daemon_down
    - gettimeofday
    - EVENT_ARG
    - event_add_timer
    - write
    linkageType: ''
    returnType: void
    signature: void wakeup_send_echo(struct event *t_wakeup)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1047
    functionName: check_all_up
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool check_all_up(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1054,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1055,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1056,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1057,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1058,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1059,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1060,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1061,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1064,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1068,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1071,1
    - Dst: time_elapsed
      Src: /src/frr/watchfrr/watchfrr.c:1074,1
    - Dst: vty_out
      Src: /src/frr/watchfrr/watchfrr.c:1076,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1081
    functionName: watchfrr_status
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - vty_out
    - time_elapsed
    linkageType: ''
    returnType: void
    signature: void watchfrr_status(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/watchfrr/watchfrr.c:1085,1
    - Dst: systemd_send_stopping
      Src: /src/frr/watchfrr/watchfrr.c:1086,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1088
    functionName: sigint
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - systemd_send_stopping
    - zlog_notice
    - exit
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/watchfrr/watchfrr.c:1097,1
    - Dst: strchr
      Src: /src/frr/watchfrr/watchfrr.c:1098,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1099
    functionName: valid_command
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: int
    signature: int valid_command(const char *cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr.c:1107,1
    - Dst: strdup
      Src: /src/frr/watchfrr/watchfrr.c:1109,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1110,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1111,1
    - Dst: strstr
      Src: /src/frr/watchfrr/watchfrr.c:1113,1
    - Dst: memmove
      Src: /src/frr/watchfrr/watchfrr.c:1116,1
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr.c:1116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - cmd
    - blankstr
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1103
    functionDepth: 0
    functionLinenumber: 1103
    functionLinenumberEnd: 1119
    functionName: translate_blanks
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - strstr
    - exit
    - strlen
    - perror
    - memmove
    - strdup
    linkageType: ''
    returnType: char
    signature: char *translate_blanks(const char *cmd, const char *blankstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: daemon_send_ready
      Src: /src/frr/watchfrr/watchfrr.c:1123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t_wakeup
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1121
    functionDepth: 2
    functionLinenumber: 1121
    functionLinenumberEnd: 1124
    functionName: startup_timeout
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - daemon_send_ready
    linkageType: ''
    returnType: void
    signature: void startup_timeout(struct event *t_wakeup)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: mount
      Src: /src/frr/watchfrr/watchfrr.c:1138,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1140,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1141,1
    - Dst: mount
      Src: /src/frr/watchfrr/watchfrr.c:1144,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1146,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1147,1
    - Dst: mount
      Src: /src/frr/watchfrr/watchfrr.c:1150,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1152,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1153,1
    - Dst: openat
      Src: /src/frr/watchfrr/watchfrr.c:1158,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1161,1
    - Dst: strerror
      Src: /src/frr/watchfrr/watchfrr.c:1162,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1163,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr.c:1165,1
    - Dst: unshare
      Src: /src/frr/watchfrr/watchfrr.c:1167,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1168,1
    - Dst: unlinkat
      Src: /src/frr/watchfrr/watchfrr.c:1169,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1170,1
    - Dst: asprintfrr
      Src: /src/frr/watchfrr/watchfrr.c:1173,1
    - Dst: mount
      Src: /src/frr/watchfrr/watchfrr.c:1176,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1177,1
    - Dst: strerror
      Src: /src/frr/watchfrr/watchfrr.c:1178,1
    - Dst: unlinkat
      Src: /src/frr/watchfrr/watchfrr.c:1179,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1180,1
    - Dst: XFREE
      Src: /src/frr/watchfrr/watchfrr.c:1183,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - dirfd
    - nsname
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1133
    functionDepth: 1
    functionLinenumber: 1133
    functionLinenumberEnd: 1184
    functionName: netns_create
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - strerror
    - unlinkat
    - mount
    - close
    - openat
    - unshare
    - fprintf
    - XFREE
    - asprintfrr
    linkageType: ''
    returnType: void
    signature: void netns_create(int dirfd, const char *nsname)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/watchfrr/watchfrr.c:1190,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1193,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1195,1
    - Dst: mkdir
      Src: /src/frr/watchfrr/watchfrr.c:1197,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1198,1
    - Dst: strerror
      Src: /src/frr/watchfrr/watchfrr.c:1199,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1200,1
    - Dst: open
      Src: /src/frr/watchfrr/watchfrr.c:1202,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1204,1
    - Dst: strerror
      Src: /src/frr/watchfrr/watchfrr.c:1205,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1206,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1209,1
    - Dst: strerror
      Src: /src/frr/watchfrr/watchfrr.c:1210,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1211,1
    - Dst: openat
      Src: /src/frr/watchfrr/watchfrr.c:1215,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1217,1
    - Dst: strerror
      Src: /src/frr/watchfrr/watchfrr.c:1218,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1219,1
    - Dst: netns_create
      Src: /src/frr/watchfrr/watchfrr.c:1222,1
    - Dst: setns
      Src: /src/frr/watchfrr/watchfrr.c:1224,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1225,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1226,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr.c:1228,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr.c:1230,1
    - Dst: strlcpy
      Src: /src/frr/watchfrr/watchfrr.c:1238,1
    - Dst: socket
      Src: /src/frr/watchfrr/watchfrr.c:1240,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1242,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1243,1
    - Dst: ioctl
      Src: /src/frr/watchfrr/watchfrr.c:1245,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1246,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1247,1
    - Dst: ioctl
      Src: /src/frr/watchfrr/watchfrr.c:1251,1
    - Dst: perror
      Src: /src/frr/watchfrr/watchfrr.c:1252,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1253,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr.c:1256,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 1
    argNames:
    - nsname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1186
    functionDepth: 2
    functionLinenumber: 1186
    functionLinenumberEnd: 1257
    functionName: netns_setup
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - exit
    - netns_create
    - open
    - perror
    - mkdir
    - strerror
    - strlcpy
    - socket
    - close
    - openat
    - ioctl
    - fprintf
    - setns
    linkageType: ''
    returnType: void
    signature: void netns_setup(const char *nsname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1263,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nsname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1261
    functionDepth: 0
    functionLinenumber: 1261
    functionLinenumberEnd: 1265
    functionName: netns_setup
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - fprintf
    - exit
    linkageType: ''
    returnType: void
    signature: void netns_setup(const char *nsname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1268
    functionDepth: 0
    functionLinenumber: 1268
    functionLinenumberEnd: 1271
    functionName: watchfrr_start_config
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void watchfrr_start_config(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1273
    functionDepth: 0
    functionLinenumber: 1273
    functionLinenumberEnd: 1276
    functionName: watchfrr_end_config
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void watchfrr_end_config(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer_msec
      Src: /src/frr/watchfrr/watchfrr.c:1285,1
    - Dst: XCALLOC
      Src: /src/frr/watchfrr/watchfrr.c:1289,1
    - Dst: event_add_timer_msec
      Src: /src/frr/watchfrr/watchfrr.c:1296,1
    - Dst: strcmp
      Src: /src/frr/watchfrr/watchfrr.c:1302,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1307,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1309,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1312,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1314,1
    - Dst: snprintf
      Src: /src/frr/watchfrr/watchfrr.c:1318,1
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr.c:1320,1
    - Dst: zlog_notice
      Src: /src/frr/watchfrr/watchfrr.c:1322,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1278
    functionDepth: 1
    functionLinenumber: 1278
    functionLinenumberEnd: 1324
    functionName: watchfrr_init
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - frr_help_exit
    - strlen
    - snprintf
    - XCALLOC
    - strcmp
    - event_add_timer_msec
    - fprintf
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void watchfrr_init(int argc, char **argv)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/watchfrr/watchfrr.c:1370,1
    - Dst: frr_opt_add
      Src: /src/frr/watchfrr/watchfrr.c:1373,1
    - Dst: frr_getopt
      Src: /src/frr/watchfrr/watchfrr.c:1376,1
    - Dst: strchr
      Src: /src/frr/watchfrr/watchfrr.c:1377,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1378,1
    - Dst: exit
      Src: /src/frr/watchfrr/watchfrr.c:1382,1
    - Dst: valid_command
      Src: /src/frr/watchfrr/watchfrr.c:1395,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1396,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1399,1
    - Dst: sscanf
      Src: /src/frr/watchfrr/watchfrr.c:1405,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1408,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1411,1
    - Dst: sscanf
      Src: /src/frr/watchfrr/watchfrr.c:1416,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1420,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1423,1
    - Dst: sscanf
      Src: /src/frr/watchfrr/watchfrr.c:1428,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1432,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1435,1
    - Dst: sscanf
      Src: /src/frr/watchfrr/watchfrr.c:1441,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1444,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1447,1
    - Dst: strchr
      Src: /src/frr/watchfrr/watchfrr.c:1452,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1453,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1456,1
    - Dst: sscanf
      Src: /src/frr/watchfrr/watchfrr.c:1463,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1465,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1468,1
    - Dst: valid_command
      Src: /src/frr/watchfrr/watchfrr.c:1476,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1477,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1480,1
    - Dst: valid_command
      Src: /src/frr/watchfrr/watchfrr.c:1485,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1486,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1489,1
    - Dst: sscanf
      Src: /src/frr/watchfrr/watchfrr.c:1498,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1501,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1504,1
    - Dst: sscanf
      Src: /src/frr/watchfrr/watchfrr.c:1509,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1513,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1516,1
    - Dst: fputs
      Src: /src/frr/watchfrr/watchfrr.c:1520,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1521,1
    - Dst: fputs
      Src: /src/frr/watchfrr/watchfrr.c:1527,1
    - Dst: fprintf
      Src: /src/frr/watchfrr/watchfrr.c:1532,1
    - Dst: frr_help_exit
      Src: /src/frr/watchfrr/watchfrr.c:1534,1
    - Dst: translate_blanks
      Src: /src/frr/watchfrr/watchfrr.c:1540,1
    - Dst: translate_blanks
      Src: /src/frr/watchfrr/watchfrr.c:1543,1
    - Dst: translate_blanks
      Src: /src/frr/watchfrr/watchfrr.c:1546,1
    - Dst: setenv
      Src: /src/frr/watchfrr/watchfrr.c:1553,1
    - Dst: unsetenv
      Src: /src/frr/watchfrr/watchfrr.c:1555,1
    - Dst: netns_setup
      Src: /src/frr/watchfrr/watchfrr.c:1567,1
    - Dst: frr_init
      Src: /src/frr/watchfrr/watchfrr.c:1569,1
    - Dst: watchfrr_error_init
      Src: /src/frr/watchfrr/watchfrr.c:1570,1
    - Dst: watchfrr_init
      Src: /src/frr/watchfrr/watchfrr.c:1571,1
    - Dst: cmd_init_config_callbacks
      Src: /src/frr/watchfrr/watchfrr.c:1572,1
    - Dst: watchfrr_vty_init
      Src: /src/frr/watchfrr/watchfrr.c:1573,1
    - Dst: frr_config_fork
      Src: /src/frr/watchfrr/watchfrr.c:1575,1
    - Dst: zlog_syslog_set_prio_min
      Src: /src/frr/watchfrr/watchfrr.c:1578,1
    - Dst: MIN
      Src: /src/frr/watchfrr/watchfrr.c:1578,1
    - Dst: zlog_aux_init
      Src: /src/frr/watchfrr/watchfrr.c:1580,1
    - Dst: MIN
      Src: /src/frr/watchfrr/watchfrr.c:1580,1
    - Dst: frr_run
      Src: /src/frr/watchfrr/watchfrr.c:1582,1
    - Dst: systemd_send_stopping
      Src: /src/frr/watchfrr/watchfrr.c:1584,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 145
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1363
    functionDepth: 3
    functionLinenumber: 1363
    functionLinenumberEnd: 1587
    functionName: main
    functionSourceFile: /src/frr/watchfrr/watchfrr.c
    functionUses: 0
    functionsReached:
    - frr_getopt
    - strchr
    - MIN
    - exit
    - translate_blanks
    - unsetenv
    - valid_command
    - fprintf
    - sscanf
    - frr_help_exit
    - netns_setup
    - frr_init
    - frr_config_fork
    - fputs
    - cmd_init_config_callbacks
    - systemd_send_stopping
    - frr_opt_add
    - frr_preinit
    - zlog_syslog_set_prio_min
    - setenv
    - watchfrr_error_init
    - watchfrr_init
    - zlog_aux_init
    - frr_run
    - watchfrr_vty_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/watchfrr/watchfrr_errors.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: watchfrr_error_init
    functionSourceFile: /src/frr/watchfrr/watchfrr_errors.c
    functionUses: 1
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void watchfrr_error_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WIFEXITED
      Src: /src/frr/watchfrr/watchfrr_vty.c:162,1
    - Dst: zlog_info
      Src: /src/frr/watchfrr/watchfrr_vty.c:163,1
    - Dst: WEXITSTATUS
      Src: /src/frr/watchfrr/watchfrr_vty.c:164,1
    - Dst: WEXITSTATUS
      Src: /src/frr/watchfrr/watchfrr_vty.c:165,1
    - Dst: WIFSIGNALED
      Src: /src/frr/watchfrr/watchfrr_vty.c:166,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr_vty.c:167,1
    - Dst: WTERMSIG
      Src: /src/frr/watchfrr/watchfrr_vty.c:168,1
    - Dst: zlog_warn
      Src: /src/frr/watchfrr/watchfrr_vty.c:170,1
    - Dst: write
      Src: /src/frr/watchfrr/watchfrr_vty.c:176,1
    - Dst: strlen
      Src: /src/frr/watchfrr/watchfrr_vty.c:176,1
    - Dst: write
      Src: /src/frr/watchfrr/watchfrr_vty.c:181,1
    - Dst: close
      Src: /src/frr/watchfrr/watchfrr_vty.c:182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 185
    functionName: integrated_write_sigchld
    functionSourceFile: /src/frr/watchfrr/watchfrr_vty.c
    functionUses: 1
    functionsReached:
    - zlog_info
    - strlen
    - close
    - WEXITSTATUS
    - zlog_warn
    - WIFEXITED
    - WTERMSIG
    - write
    - WIFSIGNALED
    linkageType: ''
    returnType: void
    signature: void integrated_write_sigchld(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/watchfrr/watchfrr_vty.c:190,1
    - Dst: install_element
      Src: /src/frr/watchfrr/watchfrr_vty.c:191,1
    - Dst: install_element
      Src: /src/frr/watchfrr/watchfrr_vty.c:193,1
    - Dst: install_element
      Src: /src/frr/watchfrr/watchfrr_vty.c:195,1
    - Dst: install_element
      Src: /src/frr/watchfrr/watchfrr_vty.c:196,1
    - Dst: install_element
      Src: /src/frr/watchfrr/watchfrr_vty.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 198
    functionName: watchfrr_vty_init
    functionSourceFile: /src/frr/watchfrr/watchfrr_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void watchfrr_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_2words
      Src: /src/frr/nhrpd/nhrp_vc.c:34,1
    - Dst: sockunion_hash
      Src: /src/frr/nhrpd/nhrp_vc.c:34,1
    - Dst: sockunion_hash
      Src: /src/frr/nhrpd/nhrp_vc.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 36
    functionName: nhrp_vc_key
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - jhash_2words
    - sockunion_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nhrp_vc_key(const void *peer_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_vc.c:43,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_vc.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - cache_data
    - key_data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: nhrp_vc_cmp
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - sockunion_same
    linkageType: ''
    returnType: bool
    signature: bool nhrp_vc_cmp(const void *cache_data, const void *key_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/nhrpd/nhrp_vc.c:51,1
    - Dst: NOTIFIER_LIST_INITIALIZER
      Src: /src/frr/nhrpd/nhrp_vc.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 61
    functionName: nhrp_vc_alloc
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - NOTIFIER_LIST_INITIALIZER
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *nhrp_vc_alloc(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_vc.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: nhrp_vc_free
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_free(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/nhrpd/nhrp_vc.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - src
    - dst
    - create
    argTypes:
    - union sockunion*
    - union sockunion*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: nhrp_vc_get
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: struct nhrp_vc
    signature: "struct nhrp_vc *nhrp_vc_get(const union sockunion *src,\n\t\t\t    const
      union sockunion *dst, int create)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notifier_active
      Src: /src/frr/nhrpd/nhrp_vc.c:79,1
    - Dst: hash_release
      Src: /src/frr/nhrpd/nhrp_vc.c:81,1
    - Dst: nhrp_vc_free
      Src: /src/frr/nhrpd/nhrp_vc.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - vc
    argTypes:
    - struct nhrp_vc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 83
    functionName: nhrp_vc_check_delete
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - hash_release
    - nhrp_vc_free
    - notifier_active
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_check_delete(struct nhrp_vc *vc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_vc.c:88,1
    - Dst: nhrp_vc_check_delete
      Src: /src/frr/nhrpd/nhrp_vc.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vc
    - cmd
    argTypes:
    - struct nhrp_vc*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: nhrp_vc_update
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - notifier_call
    - nhrp_vc_check_delete
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_update(struct nhrp_vc *vc, long cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vc
    argTypes:
    - struct nhrp_vc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: nhrp_vc_ipsec_reset
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_ipsec_reset(struct nhrp_vc *vc)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/nhrpd/nhrp_vc.c:104,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_vc.c:107,1
    - Dst: XMALLOC
      Src: /src/frr/nhrpd/nhrp_vc.c:118,1
    - Dst: childlist_add_tail
      Src: /src/frr/nhrpd/nhrp_vc.c:124,1
    - Dst: nhrp_vc_update
      Src: /src/frr/nhrpd/nhrp_vc.c:133,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_vc.c:138,1
    - Dst: nhrp_vc_update
      Src: /src/frr/nhrpd/nhrp_vc.c:140,1
    - Dst: nhrp_vc_ipsec_reset
      Src: /src/frr/nhrpd/nhrp_vc.c:147,1
    - Dst: nhrp_vc_update
      Src: /src/frr/nhrpd/nhrp_vc.c:148,1
    - Dst: childlist_del
      Src: /src/frr/nhrpd/nhrp_vc.c:154,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_vc.c:155,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 2
    argNames:
    - child_id
    - vc
    argTypes:
    - uint32_t
    - struct nhrp_vc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 159
    functionName: nhrp_vc_ipsec_updown
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - frr_each
    - debugf
    - nhrp_vc_update
    - XMALLOC
    - childlist_del
    - array_size
    - nhrp_vc_ipsec_reset
    - XFREE
    - childlist_add_tail
    linkageType: ''
    returnType: int
    signature: int nhrp_vc_ipsec_updown(uint32_t child_id, struct nhrp_vc *vc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_add
      Src: /src/frr/nhrpd/nhrp_vc.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vc
    - n
    - action
    argTypes:
    - struct nhrp_vc*
    - struct notifier_block*
    - notifier_fn_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: nhrp_vc_notify_add
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - notifier_add
    linkageType: ''
    returnType: void
    signature: "void nhrp_vc_notify_add(struct nhrp_vc *vc, struct notifier_block
      *n,\n\t\t\tnotifier_fn_t action)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_del
      Src: /src/frr/nhrpd/nhrp_vc.c:169,1
    - Dst: nhrp_vc_check_delete
      Src: /src/frr/nhrpd/nhrp_vc.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vc
    - n
    argTypes:
    - struct nhrp_vc*
    - struct notifier_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: nhrp_vc_notify_del
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - notifier_del
    - nhrp_vc_check_delete
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_notify_del(struct nhrp_vc *vc, struct notifier_block *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct nhrp_vc_iterator_ctx*::cb
      Src: /src/frr/nhrpd/nhrp_vc.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - ctx
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: nhrp_vc_iterator
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - struct nhrp_vc_iterator_ctx*::cb
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_iterator(struct hash_bucket *b, void *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/nhrpd/nhrp_vc.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 191
    functionName: nhrp_vc_foreach
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_foreach(void (*cb)(struct nhrp_vc *, void *), void *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/nhrpd/nhrp_vc.c:197,1
    - Dst: array_size
      Src: /src/frr/nhrpd/nhrp_vc.c:198,1
    - Dst: childlist_init
      Src: /src/frr/nhrpd/nhrp_vc.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: nhrp_vc_init
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - hash_create
    - childlist_init
    - array_size
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/nhrpd/nhrp_vc.c:207,1
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_vc.c:208,1
    - Dst: nhrp_vc_ipsec_updown
      Src: /src/frr/nhrpd/nhrp_vc.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: nhrp_vc_reset
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - nhrp_vc_ipsec_updown
    - array_size
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_vc_reset
      Src: /src/frr/nhrpd/nhrp_vc.c:215,1
    - Dst: hash_clean
      Src: /src/frr/nhrpd/nhrp_vc.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 213
    functionDepth: 5
    functionLinenumber: 213
    functionLinenumberEnd: 217
    functionName: nhrp_vc_terminate
    functionSourceFile: /src/frr/nhrpd/nhrp_vc.c
    functionUses: 0
    functionsReached:
    - nhrp_vc_reset
    - hash_clean
    linkageType: ''
    returnType: void
    signature: void nhrp_vc_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 9
    functionName: nhrp_reqid_key
    functionSourceFile: /src/frr/nhrpd/reqid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nhrp_reqid_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - key
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 16
    functionName: nhrp_reqid_cmp
    functionSourceFile: /src/frr/nhrpd/reqid.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nhrp_reqid_cmp(const void *data, const void *key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/nhrpd/reqid.c:22,1
    - Dst: hash_get
      Src: /src/frr/nhrpd/reqid.c:32,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - p
    - r
    argTypes:
    - struct nhrp_reqid_pool*
    - struct nhrp_reqid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 35
    functionName: nhrp_reqid_alloc
    functionSourceFile: /src/frr/nhrpd/reqid.c
    functionUses: 0
    functionsReached:
    - hash_create
    - hash_get
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t nhrp_reqid_alloc(struct nhrp_reqid_pool *p, struct nhrp_reqid
      *r,\n\t\t\t  void (*cb)(struct nhrp_reqid *, void *))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/nhrpd/reqid.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - p
    - r
    argTypes:
    - struct nhrp_reqid_pool*
    - struct nhrp_reqid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: nhrp_reqid_free
    functionSourceFile: /src/frr/nhrpd/reqid.c
    functionUses: 0
    functionsReached:
    - hash_release
    linkageType: ''
    returnType: void
    signature: void nhrp_reqid_free(struct nhrp_reqid_pool *p, struct nhrp_reqid *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/nhrpd/reqid.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - p
    - reqid
    argTypes:
    - struct nhrp_reqid_pool*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: nhrp_reqid_lookup
    functionSourceFile: /src/frr/nhrpd/reqid.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct nhrp_reqid
    signature: struct nhrp_reqid *nhrp_reqid_lookup(struct nhrp_reqid_pool *p, uint32_t
      reqid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - EN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: ERRNO_IO_RETRY
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRNO_IO_RETRY(EN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/nhrpd/zbuf.c:26,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/zbuf.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 32
    functionName: zbuf_alloc
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - zbuf_init
    - XCALLOC
    linkageType: ''
    returnType: struct zbuf
    signature: struct zbuf *zbuf_alloc(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - zb
    - buf
    - len
    - datalen
    argTypes:
    - struct zbuf*
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: zbuf_init
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zbuf_init(struct zbuf *zb, void *buf, size_t len, size_t datalen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/nhrpd/zbuf.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: zbuf_free
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zbuf_free(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: zbuf_reset
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zbuf_reset(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/nhrpd/zbuf.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - zb
    - ptr
    argTypes:
    - struct zbuf*
    - void*
    assertStmts:
    - condition: ((void *)zb->buf <= ptr && ptr <= (void *)zb->tail)
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/frr/nhrpd/zbuf.c
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: zbuf_reset_head
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void zbuf_reset_head(struct zbuf *zb, void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_headroom
      Src: /src/frr/nhrpd/zbuf.c:64,1
    - Dst: memmove
      Src: /src/frr/nhrpd/zbuf.c:67,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 70
    functionName: zbuf_remove_headroom
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - zbuf_used
    - zbuf_headroom
    - memmove
    linkageType: ''
    returnType: void
    signature: void zbuf_remove_headroom(struct zbuf *zb)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_remove_headroom
      Src: /src/frr/nhrpd/zbuf.c:79,1
    - Dst: zbuf_tailroom
      Src: /src/frr/nhrpd/zbuf.c:80,1
    - Dst: zbuf_tailroom
      Src: /src/frr/nhrpd/zbuf.c:81,1
    - Dst: read
      Src: /src/frr/nhrpd/zbuf.c:83,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/nhrpd/zbuf.c:88,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - zb
    - fd
    - maxlen
    argTypes:
    - struct zbuf*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 92
    functionName: zbuf_read
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - ERRNO_IO_RETRY
    - zbuf_tailroom
    - read
    - zbuf_remove_headroom
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t zbuf_read(struct zbuf *zb, int fd, size_t maxlen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/frr/nhrpd/zbuf.c:101,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.c:101,1
    - Dst: zbuf_reset
      Src: /src/frr/nhrpd/zbuf.c:105,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/nhrpd/zbuf.c:108,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - zb
    - fd
    argTypes:
    - struct zbuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: zbuf_write
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - ERRNO_IO_RETRY
    - write
    - zbuf_reset
    - zbuf_used
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t zbuf_write(struct zbuf *zb, int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_remove_headroom
      Src: /src/frr/nhrpd/zbuf.c:121,1
    - Dst: recv
      Src: /src/frr/nhrpd/zbuf.c:122,1
    - Dst: zbuf_tailroom
      Src: /src/frr/nhrpd/zbuf.c:122,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/nhrpd/zbuf.c:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - zb
    - fd
    argTypes:
    - struct zbuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 130
    functionName: zbuf_recv
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - recv
    - ERRNO_IO_RETRY
    - zbuf_tailroom
    - zbuf_remove_headroom
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t zbuf_recv(struct zbuf *zb, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/frr/nhrpd/zbuf.c:139,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.c:139,1
    - Dst: zbuf_reset
      Src: /src/frr/nhrpd/zbuf.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - zb
    - fd
    argTypes:
    - struct zbuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 144
    functionName: zbuf_send
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - send
    - zbuf_reset
    - zbuf_used
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t zbuf_send(struct zbuf *zb, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/nhrpd/zbuf.c:148,1
    - Dst: memmem
      Src: /src/frr/nhrpd/zbuf.c:151,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.c:151,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/zbuf.c:156,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/zbuf.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - zb
    - sep
    - msg
    argTypes:
    - struct zbuf*
    - char*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 158
    functionName: zbuf_may_pull_until
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - strlen
    - zbuf_pulln
    - zbuf_used
    - zbuf_init
    - memmem
    linkageType: ''
    returnType: void
    signature: void *zbuf_may_pull_until(struct zbuf *zb, const char *sep, struct
      zbuf *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INIT_DLIST
      Src: /src/frr/nhrpd/zbuf.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zbq
    argTypes:
    - struct zbuf_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 165
    functionName: zbufq_init
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - INIT_DLIST
    linkageType: ''
    returnType: void
    signature: void zbufq_init(struct zbuf_queue *zbq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/zbuf.c:171,1
    - Dst: zbuf_queue_del
      Src: /src/frr/nhrpd/zbuf.c:172,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/zbuf.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - zbq
    argTypes:
    - struct zbuf_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 175
    functionName: zbufq_reset
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - zbuf_free
    - frr_each_safe
    - zbuf_queue_del
    linkageType: ''
    returnType: void
    signature: void zbufq_reset(struct zbuf_queue *zbq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_queue_add_tail
      Src: /src/frr/nhrpd/zbuf.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zbq
    - zb
    argTypes:
    - struct zbuf_queue*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 180
    functionName: zbufq_queue
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - zbuf_queue_add_tail
    linkageType: ''
    returnType: void
    signature: void zbufq_queue(struct zbuf_queue *zbq, struct zbuf *zb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/zbuf.c:189,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.c:191,1
    - Dst: array_size
      Src: /src/frr/nhrpd/zbuf.c:193,1
    - Dst: writev
      Src: /src/frr/nhrpd/zbuf.c:197,1
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/zbuf.c:201,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.c:202,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.c:207,1
    - Dst: zbuf_queue_del
      Src: /src/frr/nhrpd/zbuf.c:208,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/zbuf.c:209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - zbq
    - fd
    argTypes:
    - struct zbuf_queue*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 213
    functionName: zbufq_write
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - zbuf_used
    - zbuf_free
    - array_size
    - frr_each_safe
    - zbuf_queue_del
    - writev
    linkageType: ''
    returnType: int
    signature: int zbufq_write(struct zbuf_queue *zbq, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pushn
      Src: /src/frr/nhrpd/zbuf.c:220,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/zbuf.c:221,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/zbuf.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - zdst
    - zsrc
    - len
    argTypes:
    - struct zbuf*
    - struct zbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 225
    functionName: zbuf_copy
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - zbuf_pushn
    - zbuf_pulln
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zbuf_copy(struct zbuf *zdst, struct zbuf *zsrc, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pushn
      Src: /src/frr/nhrpd/zbuf.c:232,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/zbuf.c:233,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/zbuf.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - zdst
    - zsrc
    - len
    argTypes:
    - struct zbuf*
    - struct zbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 237
    functionName: zbuf_copy_peek
    functionSourceFile: /src/frr/nhrpd/zbuf.c
    functionUses: 0
    functionsReached:
    - zbuf_pushn
    - zbuf_pulln
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zbuf_copy_peek(struct zbuf *zdst, struct zbuf *zsrc, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: ZNL_ALIGN
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZNL_ALIGN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pushn
      Src: /src/frr/nhrpd/znl.c:25,1
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zb
    - n
    argTypes:
    - struct zbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: znl_push
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - zbuf_pushn
    - ZNL_ALIGN
    linkageType: ''
    returnType: void
    signature: void *znl_push(struct zbuf *zb, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/znl.c:30,1
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zb
    - n
    argTypes:
    - struct zbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: znl_pull
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - ZNL_ALIGN
    - zbuf_pulln
    linkageType: ''
    returnType: void
    signature: void *znl_pull(struct zbuf *zb, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: znl_push
      Src: /src/frr/nhrpd/znl.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - zb
    - type
    - flags
    argTypes:
    - struct zbuf*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 45
    functionName: znl_nlmsg_push
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - znl_push
    linkageType: ''
    returnType: struct nlmsghdr
    signature: struct nlmsghdr *znl_nlmsg_push(struct zbuf *zb, uint16_t type, uint16_t
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zb
    - n
    argTypes:
    - struct zbuf*
    - struct nlmsghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: znl_nlmsg_complete
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void znl_nlmsg_complete(struct zbuf *zb, struct nlmsghdr *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: znl_pull
      Src: /src/frr/nhrpd/znl.c:57,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/znl.c:62,1
    - Dst: znl_pull
      Src: /src/frr/nhrpd/znl.c:62,1
    - Dst: zbuf_may_pulln
      Src: /src/frr/nhrpd/znl.c:63,1
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - zb
    - payload
    argTypes:
    - struct zbuf*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 66
    functionName: znl_nlmsg_pull
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - zbuf_init
    - ZNL_ALIGN
    - znl_pull
    - zbuf_may_pulln
    linkageType: ''
    returnType: struct nlmsghdr
    signature: struct nlmsghdr *znl_nlmsg_pull(struct zbuf *zb, struct zbuf *payload)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: znl_push
      Src: /src/frr/nhrpd/znl.c:74,1
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:74,1
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:74,1
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:79,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/znl.c:83,1
    - Dst: memset
      Src: /src/frr/nhrpd/znl.c:84,1
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - zb
    - type
    - val
    - len
    argTypes:
    - struct zbuf*
    - uint16_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 87
    functionName: znl_rta_push
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - memset
    - ZNL_ALIGN
    - znl_push
    - memcpy
    linkageType: ''
    returnType: struct rtattr
    signature: "struct rtattr *znl_rta_push(struct zbuf *zb, uint16_t type, const
      void *val,\n\t\t\t    size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: znl_rta_push
      Src: /src/frr/nhrpd/znl.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - zb
    - type
    - val
    argTypes:
    - struct zbuf*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: znl_rta_push_u32
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - znl_rta_push
    linkageType: ''
    returnType: struct rtattr
    signature: struct rtattr *znl_rta_push_u32(struct zbuf *zb, uint16_t type, uint32_t
      val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: znl_push
      Src: /src/frr/nhrpd/znl.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - zb
    - type
    argTypes:
    - struct zbuf*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 106
    functionName: znl_rta_nested_push
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - znl_push
    linkageType: ''
    returnType: struct rtattr
    signature: struct rtattr *znl_rta_nested_push(struct zbuf *zb, uint16_t type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZNL_ALIGN
      Src: /src/frr/nhrpd/znl.c:111,1
    - Dst: zbuf_pushn
      Src: /src/frr/nhrpd/znl.c:114,1
    - Dst: memset
      Src: /src/frr/nhrpd/znl.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - zb
    - rta
    argTypes:
    - struct zbuf*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 119
    functionName: znl_rta_nested_complete
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - zbuf_pushn
    - ZNL_ALIGN
    - memset
    linkageType: ''
    returnType: void
    signature: void znl_rta_nested_complete(struct zbuf *zb, struct rtattr *rta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: znl_pull
      Src: /src/frr/nhrpd/znl.c:126,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/znl.c:132,1
    - Dst: znl_pull
      Src: /src/frr/nhrpd/znl.c:132,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/znl.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - zb
    - payload
    argTypes:
    - struct zbuf*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 138
    functionName: znl_rta_pull
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - zbuf_init
    - znl_pull
    linkageType: ''
    returnType: struct rtattr
    signature: struct rtattr *znl_rta_pull(struct zbuf *zb, struct zbuf *payload)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/nhrpd/znl.c:145,1
    - Dst: fcntl
      Src: /src/frr/nhrpd/znl.c:149,1
    - Dst: fcntl
      Src: /src/frr/nhrpd/znl.c:149,1
    - Dst: fcntl
      Src: /src/frr/nhrpd/znl.c:151,1
    - Dst: setsockopt
      Src: /src/frr/nhrpd/znl.c:153,1
    - Dst: memset
      Src: /src/frr/nhrpd/znl.c:156,1
    - Dst: bind
      Src: /src/frr/nhrpd/znl.c:159,1
    - Dst: close
      Src: /src/frr/nhrpd/znl.c:164,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - protocol
    - groups
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 166
    functionName: znl_open
    functionSourceFile: /src/frr/nhrpd/znl.c
    functionUses: 0
    functionsReached:
    - memset
    - socket
    - close
    - bind
    - setsockopt
    - fcntl
    linkageType: ''
    returnType: int
    signature: int znl_open(int protocol, int groups)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - level
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 18
    functionName: debugf
    functionSourceFile: /src/frr/nhrpd/debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debugf(level, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: NOTIFIER_LIST_INITIALIZER
    functionSourceFile: /src/frr/nhrpd/nhrpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NOTIFIER_LIST_INITIALIZER(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_list_init
      Src: /src/frr/nhrpd/nhrpd.h:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct notifier_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: notifier_init
    functionSourceFile: /src/frr/nhrpd/nhrpd.h
    functionUses: 0
    functionsReached:
    - notifier_list_init
    linkageType: ''
    returnType: void
    signature: void notifier_init(struct notifier_list *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_list_add_tail
      Src: /src/frr/nhrpd/nhrpd.h:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - n
    - l
    - action
    argTypes:
    - struct notifier_block*
    - struct notifier_list*
    - notifier_fn_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: notifier_add
    functionSourceFile: /src/frr/nhrpd/nhrpd.h
    functionUses: 1
    functionsReached:
    - notifier_list_add_tail
    linkageType: ''
    returnType: void
    signature: "void notifier_add(struct notifier_block *n,\n\t\t\t\tstruct notifier_list
      *l, notifier_fn_t action)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_list_del
      Src: /src/frr/nhrpd/nhrpd.h:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - l
    argTypes:
    - struct notifier_block*
    - struct notifier_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: notifier_del
    functionSourceFile: /src/frr/nhrpd/nhrpd.h
    functionUses: 1
    functionsReached:
    - notifier_list_del
    linkageType: ''
    returnType: void
    signature: "void notifier_del(struct notifier_block *n,\n\t\t\t\tstruct notifier_list
      *l)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrpd.h:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - l
    - cmd
    argTypes:
    - struct notifier_list*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: notifier_call
    functionSourceFile: /src/frr/nhrpd/nhrpd.h
    functionUses: 1
    functionsReached:
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void notifier_call(struct notifier_list *l, int cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_list_count
      Src: /src/frr/nhrpd/nhrpd.h:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct notifier_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: notifier_active
    functionSourceFile: /src/frr/nhrpd/nhrpd.h
    functionUses: 1
    functionsReached:
    - notifier_list_count
    linkageType: ''
    returnType: int
    signature: int notifier_active(struct notifier_list *l)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_getopt
      Src: /src/frr/nhrpd/nhrp_main.c:63,1
    - Dst: frr_help_exit
      Src: /src/frr/nhrpd/nhrp_main.c:71,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 74
    functionName: parse_arguments
    functionSourceFile: /src/frr/nhrpd/nhrp_main.c
    functionUses: 0
    functionsReached:
    - frr_getopt
    - frr_help_exit
    linkageType: ''
    returnType: void
    signature: void parse_arguments(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/nhrpd/nhrp_main.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: nhrp_sigusr1
    functionSourceFile: /src/frr/nhrpd/nhrp_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void nhrp_sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_main.c:83,1
    - Dst: frr_early_fini
      Src: /src/frr/nhrpd/nhrp_main.c:84,1
    - Dst: nhrp_shortcut_terminate
      Src: /src/frr/nhrpd/nhrp_main.c:86,1
    - Dst: nhrp_nhs_terminate
      Src: /src/frr/nhrpd/nhrp_main.c:87,1
    - Dst: nhrp_zebra_terminate
      Src: /src/frr/nhrpd/nhrp_main.c:88,1
    - Dst: vici_terminate
      Src: /src/frr/nhrpd/nhrp_main.c:89,1
    - Dst: evmgr_terminate
      Src: /src/frr/nhrpd/nhrp_main.c:90,1
    - Dst: nhrp_vc_terminate
      Src: /src/frr/nhrpd/nhrp_main.c:91,1
    - Dst: vrf_terminate
      Src: /src/frr/nhrpd/nhrp_main.c:92,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_main.c:94,1
    - Dst: frr_fini
      Src: /src/frr/nhrpd/nhrp_main.c:95,1
    - Dst: exit
      Src: /src/frr/nhrpd/nhrp_main.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 81
    functionDepth: 6
    functionLinenumber: 81
    functionLinenumberEnd: 98
    functionName: nhrp_request_stop
    functionSourceFile: /src/frr/nhrpd/nhrp_main.c
    functionUses: 0
    functionsReached:
    - nhrp_shortcut_terminate
    - evmgr_terminate
    - nhrp_vc_terminate
    - exit
    - nhrp_nhs_terminate
    - debugf
    - vici_terminate
    - vrf_terminate
    - frr_fini
    - frr_early_fini
    - nhrp_zebra_terminate
    linkageType: ''
    returnType: void
    signature: void nhrp_request_stop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/nhrpd/nhrp_main.c:133,1
    - Dst: frr_opt_add
      Src: /src/frr/nhrpd/nhrp_main.c:134,1
    - Dst: parse_arguments
      Src: /src/frr/nhrpd/nhrp_main.c:136,1
    - Dst: frr_init
      Src: /src/frr/nhrpd/nhrp_main.c:139,1
    - Dst: nhrp_error_init
      Src: /src/frr/nhrpd/nhrp_main.c:140,1
    - Dst: vrf_init
      Src: /src/frr/nhrpd/nhrp_main.c:141,1
    - Dst: nhrp_interface_init
      Src: /src/frr/nhrpd/nhrp_main.c:142,1
    - Dst: resolver_init
      Src: /src/frr/nhrpd/nhrp_main.c:143,1
    - Dst: assert
      Src: /src/frr/nhrpd/nhrp_main.c:151,1
    - Dst: change
      Src: /src/frr/nhrpd/nhrp_main.c:152,1
    - Dst: evmgr_init
      Src: /src/frr/nhrpd/nhrp_main.c:154,1
    - Dst: nhrp_vc_init
      Src: /src/frr/nhrpd/nhrp_main.c:155,1
    - Dst: nhrp_packet_init
      Src: /src/frr/nhrpd/nhrp_main.c:156,1
    - Dst: vici_init
      Src: /src/frr/nhrpd/nhrp_main.c:157,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/nhrpd/nhrp_main.c:158,1
    - Dst: nhrp_zebra_init
      Src: /src/frr/nhrpd/nhrp_main.c:160,1
    - Dst: nhrp_shortcut_init
      Src: /src/frr/nhrpd/nhrp_main.c:161,1
    - Dst: nhrp_config_init
      Src: /src/frr/nhrpd/nhrp_main.c:163,1
    - Dst: frr_config_fork
      Src: /src/frr/nhrpd/nhrp_main.c:165,1
    - Dst: frr_run
      Src: /src/frr/nhrpd/nhrp_main.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (nhrpd_privs.change)
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/frr/nhrpd/nhrp_main.c
    constantsTouched: []
    func_position:
      end: 168
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 168
    functionName: main
    functionSourceFile: /src/frr/nhrpd/nhrp_main.c
    functionUses: 0
    functionsReached:
    - nhrp_zebra_init
    - resolver_init
    - evmgr_init
    - nhrp_error_init
    - parse_arguments
    - change
    - assert
    - nhrp_config_init
    - frr_init
    - vrf_init
    - frr_config_fork
    - nhrp_interface_init
    - nhrp_shortcut_init
    - vici_init
    - frr_opt_add
    - frr_preinit
    - nhrp_vc_init
    - if_zapi_callbacks
    - frr_run
    - nhrp_packet_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 30
    functionName: family2proto
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t family2proto(int family)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - proto
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 41
    functionName: proto2family
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int proto2family(uint16_t proto)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/nhrp_packet.c:50,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:55,1
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_packet.c:55,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_packet.c:55,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:57,1
    - Dst: family2proto
      Src: /src/frr/nhrpd/nhrp_packet.c:57,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_packet.c:57,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_packet.c:61,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_packet.c:62,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_packet.c:63,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_packet.c:66,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/nhrp_packet.c:66,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_packet.c:67,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/nhrp_packet.c:67,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_packet.c:69,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/nhrp_packet.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - zb
    - type
    - src_nbma
    - src_proto
    - dst_proto
    argTypes:
    - struct zbuf*
    - uint8_t
    - union sockunion*
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 73
    functionName: nhrp_packet_push
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - family2proto
    - sockunion_family
    - htons
    - zbuf_put
    - sockunion_get_addr
    - sockunion_get_addrlen
    - zbuf_push
    - family2afi
    linkageType: ''
    returnType: struct nhrp_packet_header
    signature: "struct nhrp_packet_header *nhrp_packet_push(struct zbuf *zb, uint8_t
      type,\n\t\t\t\t\t    const union sockunion *src_nbma,\n\t\t\t\t\t    const union
      sockunion *src_proto,\n\t\t\t\t\t    const union sockunion *dst_proto)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/nhrp_packet.c:82,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_packet.c:86,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_packet.c:86,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:86,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_packet.c:87,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_packet.c:91,1
    - Dst: proto2family
      Src: /src/frr/nhrpd/nhrp_packet.c:91,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:91,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_packet.c:92,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_packet.c:94,1
    - Dst: proto2family
      Src: /src/frr/nhrpd/nhrp_packet.c:94,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:94,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_packet.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - zb
    - src_nbma
    - src_proto
    - dst_proto
    argTypes:
    - struct zbuf*
    - union sockunion*
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 99
    functionName: nhrp_packet_pull
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - zbuf_pulln
    - htons
    - sockunion_set
    - afi2family
    - zbuf_pull
    - proto2family
    linkageType: ''
    returnType: struct nhrp_packet_header
    signature: "struct nhrp_packet_header *nhrp_packet_pull(struct zbuf *zb,\n\t\t\t\t\t
      \   union sockunion *src_nbma,\n\t\t\t\t\t    union sockunion *src_proto,\n\t\t\t\t\t
      \   union sockunion *dst_proto)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - pdu
    - len
    argTypes:
    - uint8_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 116
    functionName: nhrp_packet_calculate_checksum
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t nhrp_packet_calculate_checksum(const uint8_t *pdu, uint16_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_packet.c:123,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:128,1
    - Dst: nhrp_packet_calculate_checksum
      Src: /src/frr/nhrpd/nhrp_packet.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - zb
    - hdr
    argTypes:
    - struct zbuf*
    - struct nhrp_packet_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 131
    functionName: nhrp_packet_complete
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - nhrp_packet_calculate_checksum
    - nhrp_ext_push
    - htons
    linkageType: ''
    returnType: void
    signature: void nhrp_packet_complete(struct zbuf *zb, struct nhrp_packet_header
      *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/nhrp_packet.c:139,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_packet.c:144,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_packet.c:145,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/nhrp_packet.c:145,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_packet.c:148,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_packet.c:149,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/nhrp_packet.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - zb
    - code
    - nbma
    - proto
    argTypes:
    - struct zbuf*
    - uint8_t
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 154
    functionName: nhrp_cie_push
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - sockunion_get_addr
    - sockunion_get_addrlen
    - zbuf_push
    - zbuf_put
    linkageType: ''
    returnType: struct nhrp_cie_header
    signature: "struct nhrp_cie_header *nhrp_cie_push(struct zbuf *zb, uint8_t code,\n\t\t\t\t
      \     const union sockunion *nbma,\n\t\t\t\t      const union sockunion *proto)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/nhrp_packet.c:163,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_packet.c:168,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_packet.c:168,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:168,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_packet.c:169,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_packet.c:174,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_packet.c:178,1
    - Dst: proto2family
      Src: /src/frr/nhrpd/nhrp_packet.c:178,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:178,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_packet.c:179,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_packet.c:182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - zb
    - hdr
    - nbma
    - proto
    argTypes:
    - struct zbuf*
    - struct nhrp_packet_header*
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 186
    functionName: nhrp_cie_pull
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - zbuf_pulln
    - htons
    - sockunion_set
    - afi2family
    - zbuf_pull
    - proto2family
    linkageType: ''
    returnType: struct nhrp_cie_header
    signature: "struct nhrp_cie_header *nhrp_cie_pull(struct zbuf *zb,\n\t\t\t\t      struct
      nhrp_packet_header *hdr,\n\t\t\t\t      union sockunion *nbma,\n\t\t\t\t      union
      sockunion *proto)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/nhrp_packet.c:192,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:198,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - zb
    - hdr
    - type
    argTypes:
    - struct zbuf*
    - struct nhrp_packet_header*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 205
    functionName: nhrp_ext_push
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 1
    functionsReached:
    - zbuf_push
    - htons
    linkageType: ''
    returnType: struct nhrp_extension_header
    signature: 'struct nhrp_extension_header *

      nhrp_ext_push(struct zbuf *zb, struct nhrp_packet_header *hdr, uint16_t type)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zb
    - ext
    argTypes:
    - struct zbuf*
    - struct nhrp_extension_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: nhrp_ext_complete
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: void nhrp_ext_complete(struct zbuf *zb, struct nhrp_extension_header
      *ext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/nhrp_packet.c:219,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:223,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/nhrp_packet.c:224,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_packet.c:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - zb
    - payload
    argTypes:
    - struct zbuf*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 226
    functionName: nhrp_ext_pull
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - zbuf_pull
    - zbuf_init
    - zbuf_pulln
    - htons
    linkageType: ''
    returnType: struct nhrp_extension_header
    signature: "struct nhrp_extension_header *nhrp_ext_pull(struct zbuf *zb,\n\t\t\t\t\t
      \   struct zbuf *payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_packet.c:232,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_packet.c:235,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_packet.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - zb
    - hdr
    - ifp
    argTypes:
    - struct zbuf*
    - struct nhrp_packet_header*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 241
    functionName: nhrp_ext_request
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - nhrp_ext_push
    linkageType: ''
    returnType: void
    signature: "void nhrp_ext_request(struct zbuf *zb, struct nhrp_packet_header *hdr,\n\t\t
      \     struct interface *ifp)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:248,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:253,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_packet.c:257,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:257,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_packet.c:263,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:267,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_packet.c:268,1
    - Dst: zbuf_copy
      Src: /src/frr/nhrpd/nhrp_packet.c:279,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_packet.c:279,1
    - Dst: nhrp_ext_complete
      Src: /src/frr/nhrpd/nhrp_packet.c:282,1
    - Dst: zbuf_set_werror
      Src: /src/frr/nhrpd/nhrp_packet.c:285,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 5
    argNames:
    - zb
    - hdr
    - ifp
    - ext
    - extpayload
    argTypes:
    - struct zbuf*
    - struct nhrp_packet_header*
    - struct interface*
    - struct nhrp_extension_header*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 287
    functionName: nhrp_ext_reply
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - nhrp_cie_push
    - zbuf_used
    - nhrp_ext_push
    - htons
    - nhrp_ext_complete
    - zbuf_set_werror
    - zbuf_copy
    linkageType: ''
    returnType: int
    signature: "int nhrp_ext_reply(struct zbuf *zb, struct nhrp_packet_header *hdr,\n\t\t
      \  struct interface *ifp, struct nhrp_extension_header *ext,\n\t\t   struct
      zbuf *extpayload)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/nhrpd/nhrp_packet.c:291,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/nhrp_packet.c:299,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_packet.c:301,1
    - Dst: zbuf_size
      Src: /src/frr/nhrpd/nhrp_packet.c:305,1
    - Dst: os_recvmsg
      Src: /src/frr/nhrpd/nhrp_packet.c:307,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_packet.c:315,1
    - Dst: if_lookup_by_index
      Src: /src/frr/nhrpd/nhrp_packet.c:321,1
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_packet.c:325,1
    - Dst: nhrp_peer_recv
      Src: /src/frr/nhrpd/nhrp_packet.c:329,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_packet.c:330,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_packet.c:334,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 335
    functionName: nhrp_packet_recvraw
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 0
    functionsReached:
    - os_recvmsg
    - if_lookup_by_index
    - EVENT_FD
    - nhrp_peer_get
    - sockunion_set
    - zbuf_size
    - zbuf_free
    - nhrp_peer_recv
    - nhrp_peer_unref
    - event_add_read
    - zbuf_alloc
    linkageType: ''
    returnType: void
    signature: void nhrp_packet_recvraw(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/nhrpd/nhrp_packet.c:339,1
    - Dst: os_socket
      Src: /src/frr/nhrpd/nhrp_packet.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 341
    functionName: nhrp_packet_init
    functionSourceFile: /src/frr/nhrpd/nhrp_packet.c
    functionUses: 1
    functionsReached:
    - event_add_read
    - os_socket
    linkageType: ''
    returnType: int
    signature: int nhrp_packet_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_multicast.c:43,1
    - Dst: os_sendmsg
      Src: /src/frr/nhrpd/nhrp_multicast.c:44,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_multicast.c:44,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/nhrp_multicast.c:45,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:48,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_multicast.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - p
    - zb
    argTypes:
    - struct nhrp_peer*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: nhrp_multicast_send
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - zbuf_used
    - sockunion_get_addr
    - debugf
    - sockunion_get_addrlen
    - os_sendmsg
    linkageType: ''
    returnType: void
    signature: void nhrp_multicast_send(struct nhrp_peer *p, struct zbuf *zb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_multicast.c:57,1
    - Dst: nhrp_multicast_send
      Src: /src/frr/nhrpd/nhrp_multicast.c:61,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_multicast.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - nbma_addr
    - ifp
    - pkt
    argTypes:
    - union sockunion*
    - struct interface*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 64
    functionName: nhrp_multicast_forward_nbma
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - nhrp_peer_unref
    - nhrp_peer_get
    - nhrp_multicast_send
    linkageType: ''
    returnType: void
    signature: "void nhrp_multicast_forward_nbma(union sockunion *nbma_addr,\n\t\t\t\t\tstruct
      interface *ifp, struct zbuf *pkt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_multicast_forward_nbma
      Src: /src/frr/nhrpd/nhrp_multicast.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - c
    - pctx
    argTypes:
    - struct nhrp_cache*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: nhrp_multicast_forward_cache
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - nhrp_multicast_forward_nbma
    linkageType: ''
    returnType: void
    signature: void nhrp_multicast_forward_cache(struct nhrp_cache *c, void *pctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_multicast.c:84,1
    - Dst: nhrp_cache_foreach
      Src: /src/frr/nhrpd/nhrp_multicast.c:85,1
    - Dst: nhrp_multicast_forward_nbma
      Src: /src/frr/nhrpd/nhrp_multicast.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - mcast
    - pctx
    argTypes:
    - struct nhrp_multicast*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 92
    functionName: nhrp_multicast_forward
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_foreach
    - sockunion_family
    - nhrp_multicast_forward_nbma
    linkageType: ''
    returnType: void
    signature: void nhrp_multicast_forward(struct nhrp_multicast *mcast, void *pctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: znl_pull
      Src: /src/frr/nhrpd/nhrp_multicast.c:103,1
    - Dst: znl_rta_pull
      Src: /src/frr/nhrpd/nhrp_multicast.c:108,1
    - Dst: znl_pull
      Src: /src/frr/nhrpd/nhrp_multicast.c:111,1
    - Dst: if_lookup_by_index
      Src: /src/frr/nhrpd/nhrp_multicast.c:127,1
    - Dst: htonl
      Src: /src/frr/nhrpd/nhrp_multicast.c:127,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:131,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_multicast.c:133,1
    - Dst: nhrp_multicast_foreach
      Src: /src/frr/nhrpd/nhrp_multicast.c:136,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - msg
    - zb
    argTypes:
    - struct nlmsghdr*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 139
    functionName: netlink_mcast_log_handler
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - nhrp_multicast_foreach
    - if_lookup_by_index
    - zbuf_used
    - debugf
    - znl_pull
    - znl_rta_pull
    - htonl
    linkageType: ''
    returnType: void
    signature: void netlink_mcast_log_handler(struct nlmsghdr *msg, struct zbuf *zb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/nhrpd/nhrp_multicast.c:144,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/nhrp_multicast.c:149,1
    - Dst: zbuf_recv
      Src: /src/frr/nhrpd/nhrp_multicast.c:150,1
    - Dst: znl_nlmsg_pull
      Src: /src/frr/nhrpd/nhrp_multicast.c:151,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:152,1
    - Dst: netlink_mcast_log_handler
      Src: /src/frr/nhrpd/nhrp_multicast.c:157,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/nhrp_multicast.c:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 165
    functionName: netlink_mcast_log_recv
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - zbuf_init
    - debugf
    - netlink_mcast_log_handler
    - znl_nlmsg_pull
    - zbuf_recv
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void netlink_mcast_log_recv(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_multicast.c:172,1
    - Dst: znl_nlmsg_push
      Src: /src/frr/nhrpd/nhrp_multicast.c:174,1
    - Dst: znl_push
      Src: /src/frr/nhrpd/nhrp_multicast.c:176,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_multicast.c:180,1
    - Dst: znl_rta_push
      Src: /src/frr/nhrpd/nhrp_multicast.c:183,1
    - Dst: znl_nlmsg_complete
      Src: /src/frr/nhrpd/nhrp_multicast.c:184,1
    - Dst: zbuf_send
      Src: /src/frr/nhrpd/nhrp_multicast.c:186,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_multicast.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - fd
    - group
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 167
    functionDepth: 3
    functionLinenumber: 167
    functionLinenumberEnd: 188
    functionName: netlink_mcast_log_register
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - znl_nlmsg_push
    - htons
    - zbuf_free
    - zbuf_send
    - znl_rta_push
    - znl_push
    - zbuf_alloc
    - znl_nlmsg_complete
    linkageType: ''
    returnType: void
    signature: void netlink_mcast_log_register(int fd, int group)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_multicast.c:193,1
    - Dst: close
      Src: /src/frr/nhrpd/nhrp_multicast.c:194,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:196,1
    - Dst: znl_open
      Src: /src/frr/nhrpd/nhrp_multicast.c:200,1
    - Dst: netlink_mcast_log_register
      Src: /src/frr/nhrpd/nhrp_multicast.c:204,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/nhrp_multicast.c:205,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - nlgroup
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 210
    functionName: netlink_mcast_set_nflog_group
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - debugf
    - close
    - znl_open
    - netlink_mcast_log_register
    - EVENT_OFF
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void netlink_mcast_set_nflog_group(int nlgroup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_mcastlist_del
      Src: /src/frr/nhrpd/nhrp_multicast.c:217,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_multicast.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ifp
    - mcast
    argTypes:
    - struct interface*
    - struct nhrp_multicast*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 220
    functionName: nhrp_multicast_free
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - nhrp_mcastlist_del
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int nhrp_multicast_free(struct interface *ifp,\n\t\t\t       struct
      nhrp_multicast *mcast)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_multicast.c:228,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_multicast.c:229,1
    - Dst: XMALLOC
      Src: /src/frr/nhrpd/nhrp_multicast.c:233,1
    - Dst: nhrp_mcastlist_add_tail
      Src: /src/frr/nhrpd/nhrp_multicast.c:238,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ifp
    - afi
    - nbma_addr
    argTypes:
    - struct interface*
    - afi_t
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 243
    functionName: nhrp_multicast_add
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - frr_each
    - debugf
    - nhrp_mcastlist_add_tail
    - sockunion_same
    - XMALLOC
    linkageType: ''
    returnType: int
    signature: "int nhrp_multicast_add(struct interface *ifp, afi_t afi,\n\t\t       union
      sockunion *nbma_addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_multicast.c:251,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_multicast.c:252,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:255,1
    - Dst: nhrp_multicast_free
      Src: /src/frr/nhrpd/nhrp_multicast.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ifp
    - afi
    - nbma_addr
    argTypes:
    - struct interface*
    - afi_t
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 264
    functionName: nhrp_multicast_del
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - debugf
    - nhrp_multicast_free
    - sockunion_same
    - frr_each_safe
    linkageType: ''
    returnType: int
    signature: "int nhrp_multicast_del(struct interface *ifp, afi_t afi,\n\t\t       union
      sockunion *nbma_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_multicast.c:273,1
    - Dst: nhrp_mcastlist_count
      Src: /src/frr/nhrpd/nhrp_multicast.c:274,1
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_multicast.c:276,1
    - Dst: nhrp_multicast_free
      Src: /src/frr/nhrpd/nhrp_multicast.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 281
    functionName: nhrp_multicast_interface_del
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 0
    functionsReached:
    - debugf
    - nhrp_multicast_free
    - nhrp_mcastlist_count
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void nhrp_multicast_interface_del(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_multicast.c:290,1
    - Dst: cb
      Src: /src/frr/nhrpd/nhrp_multicast.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ifp
    - afi
    - ctx
    argTypes:
    - struct interface*
    - afi_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 293
    functionName: nhrp_multicast_foreach
    functionSourceFile: /src/frr/nhrpd/nhrp_multicast.c
    functionUses: 1
    functionsReached:
    - cb
    - frr_each
    linkageType: ''
    returnType: void
    signature: "void nhrp_multicast_foreach(struct interface *ifp, afi_t afi,\n\t\t\t
      \   void (*cb)(struct nhrp_multicast *, void *),\n\t\t\t    void *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/nhrpd/nhrp_errors.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: nhrp_error_init
    functionSourceFile: /src/frr/nhrpd/nhrp_errors.c
    functionUses: 1
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void nhrp_error_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_route.c:32,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_route.c:32,1
    - Dst: route_node_get
      Src: /src/frr/nhrpd/nhrp_route.c:38,1
    - Dst: XCALLOC
      Src: /src/frr/nhrpd/nhrp_route.c:40,1
    - Dst: route_lock_node
      Src: /src/frr/nhrpd/nhrp_route.c:42,1
    - Dst: route_node_lookup
      Src: /src/frr/nhrpd/nhrp_route.c:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - p
    - create
    argTypes:
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 48
    functionName: nhrp_route_update_get
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - route_lock_node
    - route_node_lookup
    - PREFIX_FAMILY
    - XCALLOC
    - route_node_get
    - family2afi
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *nhrp_route_update_get(const struct prefix *p,\n\t\t\t\t\t\tint
      create)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_is_null
      Src: /src/frr/nhrpd/nhrp_route.c:55,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_route.c:56,1
    - Dst: route_unlock_node
      Src: /src/frr/nhrpd/nhrp_route.c:57,1
    - Dst: route_unlock_node
      Src: /src/frr/nhrpd/nhrp_route.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 60
    functionName: nhrp_route_update_put
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - sockunion_is_null
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nhrp_route_update_put(struct route_node *rn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_route_update_get
      Src: /src/frr/nhrpd/nhrp_route.c:69,1
    - Dst: sockunion_is_null
      Src: /src/frr/nhrpd/nhrp_route.c:69,1
    - Dst: nhrp_route_update_put
      Src: /src/frr/nhrpd/nhrp_route.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - p
    - nexthop
    - ifp
    argTypes:
    - struct prefix*
    - union sockunion*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 76
    functionName: nhrp_route_update_zebra
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - sockunion_is_null
    - nhrp_route_update_put
    - nhrp_route_update_get
    linkageType: ''
    returnType: void
    signature: "void nhrp_route_update_zebra(const struct prefix *p,\n\t\t\t\t    union
      sockunion *nexthop,\n\t\t\t\t    struct interface *ifp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/nhrpd/nhrp_route.c:86,1
    - Dst: zclient_create_header
      Src: /src/frr/nhrpd/nhrp_route.c:88,1
    - Dst: stream_putw
      Src: /src/frr/nhrpd/nhrp_route.c:91,1
    - Dst: stream_putw_at
      Src: /src/frr/nhrpd/nhrp_route.c:92,1
    - Dst: stream_get_endp
      Src: /src/frr/nhrpd/nhrp_route.c:92,1
    - Dst: zclient_send_message
      Src: /src/frr/nhrpd/nhrp_route.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - vrf_id
    - afi
    - reg
    argTypes:
    - vrf_id_t
    - afi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 94
    functionName: nhrp_zebra_register_neigh
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    linkageType: ''
    returnType: void
    signature: void nhrp_zebra_register_neigh(vrf_id_t vrf_id, afi_t afi, bool reg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_route_update_get
      Src: /src/frr/nhrpd/nhrp_route.c:101,1
    - Dst: nhrp_route_update_put
      Src: /src/frr/nhrpd/nhrp_route.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - p
    - ifp
    argTypes:
    - struct prefix*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 107
    functionName: nhrp_route_update_nhrp
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - nhrp_route_update_put
    - nhrp_route_update_get
    linkageType: ''
    returnType: void
    signature: void nhrp_route_update_nhrp(const struct prefix *p, struct interface
      *ifp)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_route.c:120,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/nhrpd/nhrp_route.c:128,1
    - Dst: SET_FLAG
      Src: /src/frr/nhrpd/nhrp_route.c:149,1
    - Dst: SET_FLAG
      Src: /src/frr/nhrpd/nhrp_route.c:152,1
    - Dst: SET_FLAG
      Src: /src/frr/nhrpd/nhrp_route.c:154,1
    - Dst: memcmp
      Src: /src/frr/nhrpd/nhrp_route.c:163,1
    - Dst: memcmp
      Src: /src/frr/nhrpd/nhrp_route.c:182,1
    - Dst: SET_FLAG
      Src: /src/frr/nhrpd/nhrp_route.c:200,1
    - Dst: unlikely
      Src: /src/frr/nhrpd/nhrp_route.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/nhrpd/nhrp_route.c:207,1
    - Dst: inet_ntop
      Src: /src/frr/nhrpd/nhrp_route.c:210,1
    - Dst: zclient_route_send
      Src: /src/frr/nhrpd/nhrp_route.c:217,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 71
    argCount: 6
    argNames:
    - add
    - type
    - p
    - ifp
    - nexthop
    - mtu
    argTypes:
    - int
    - enum nhrp_cache_type
    - struct prefix*
    - struct interface*
    - union sockunion*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 219
    functionName: nhrp_route_announce
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - memset
    - memcmp
    - inet_ntop
    - SET_FLAG
    - zlog_debug
    - unlikely
    - zclient_route_send
    - zapi_route_set_blackhole
    linkageType: ''
    returnType: void
    signature: "void nhrp_route_announce(int add, enum nhrp_cache_type type,\n\t\t\t
      const struct prefix *p, struct interface *ifp,\n\t\t\t const union sockunion
      *nexthop, uint32_t mtu)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_decode
      Src: /src/frr/nhrpd/nhrp_route.c:229,1
    - Dst: CHECK_FLAG
      Src: /src/frr/nhrpd/nhrp_route.c:233,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_route.c:240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/nhrpd/nhrp_route.c:241,1
    - Dst: if_lookup_by_index
      Src: /src/frr/nhrpd/nhrp_route.c:255,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_route.c:259,1
    - Dst: nhrp_route_update_zebra
      Src: /src/frr/nhrpd/nhrp_route.c:263,1
    - Dst: nhrp_shortcut_prefix_change
      Src: /src/frr/nhrpd/nhrp_route.c:264,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 267
    functionName: nhrp_route_read
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - if_lookup_by_index
    - nhrp_shortcut_prefix_change
    - debugf
    - CHECK_FLAG
    - zapi_route_decode
    - nhrp_route_update_zebra
    linkageType: ''
    returnType: int
    signature: int nhrp_route_read(ZAPI_CALLBACK_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_route.c:275,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_route.c:275,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/nhrpd/nhrp_route.c:277,1
    - Dst: route_node_match
      Src: /src/frr/nhrpd/nhrp_route.c:279,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_route.c:285,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_route.c:289,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_route.c:293,1
    - Dst: route_unlock_node
      Src: /src/frr/nhrpd/nhrp_route.c:303,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - addr
    - p
    - via
    - ifp
    argTypes:
    - union sockunion*
    - struct prefix*
    - union sockunion*
    - struct interface**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 305
    functionName: nhrp_route_get_nexthop
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - sockunion2hostprefix
    - route_unlock_node
    - sockunion_family
    - debugf
    - family2afi
    - route_node_match
    linkageType: ''
    returnType: int
    signature: "int nhrp_route_get_nexthop(const union sockunion *addr, struct prefix
      *p,\n\t\t\t   union sockunion *via, struct interface **ifp)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_route.c:316,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_route.c:316,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_route.c:323,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_route.c:326,1
    - Dst: nhrp_route_get_nexthop
      Src: /src/frr/nhrpd/nhrp_route.c:332,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_route.c:341,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_route.c:349,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_route.c:352,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_route.c:356,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 4
    argNames:
    - in_ifp
    - addr
    - p
    - peer
    argTypes:
    - struct interface*
    - union sockunion*
    - struct prefix*
    - struct nhrp_peer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 362
    functionName: nhrp_route_address
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - nhrp_route_get_nexthop
    - nhrp_peer_ref
    - memset
    - nhrp_cache_get
    - family2afi
    linkageType: ''
    returnType: enum nhrp_route_type
    signature: "enum nhrp_route_type nhrp_route_address(struct interface *in_ifp,\n\t\t\t\t\tunion
      sockunion *addr, struct prefix *p,\n\t\t\t\t\tstruct nhrp_peer **peer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/nhrpd/nhrp_route.c:366,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/nhrpd/nhrp_route.c:367,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/nhrpd/nhrp_route.c:369,1
    - Dst: nhrp_zebra_register_neigh
      Src: /src/frr/nhrpd/nhrp_route.c:371,1
    - Dst: nhrp_zebra_register_neigh
      Src: /src/frr/nhrpd/nhrp_route.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 373
    functionName: nhrp_zebra_connected
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - zebra_redistribute_send
    - nhrp_zebra_register_neigh
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void nhrp_zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init
      Src: /src/frr/nhrpd/nhrp_route.c:388,1
    - Dst: route_table_init
      Src: /src/frr/nhrpd/nhrp_route.c:389,1
    - Dst: zclient_new
      Src: /src/frr/nhrpd/nhrp_route.c:391,1
    - Dst: array_size
      Src: /src/frr/nhrpd/nhrp_route.c:392,1
    - Dst: zclient_init
      Src: /src/frr/nhrpd/nhrp_route.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 395
    functionName: nhrp_zebra_init
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 1
    functionsReached:
    - route_table_init
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void nhrp_zebra_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_route.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 404
    functionName: nhrp_table_node_cleanup
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void nhrp_table_node_cleanup(struct route_table *table,\n\t\t\t\t
      \   struct route_node *node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_route.c:411,1
    - Dst: stream_reset
      Src: /src/frr/nhrpd/nhrp_route.c:416,1
    - Dst: zclient_create_header
      Src: /src/frr/nhrpd/nhrp_route.c:417,1
    - Dst: stream_putc
      Src: /src/frr/nhrpd/nhrp_route.c:418,1
    - Dst: stream_putl
      Src: /src/frr/nhrpd/nhrp_route.c:419,1
    - Dst: stream_putw_at
      Src: /src/frr/nhrpd/nhrp_route.c:420,1
    - Dst: stream_get_endp
      Src: /src/frr/nhrpd/nhrp_route.c:420,1
    - Dst: zclient_send_message
      Src: /src/frr/nhrpd/nhrp_route.c:421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ifp
    - family
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 422
    functionName: nhrp_send_zebra_configure_arp
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - debugf
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void nhrp_send_zebra_configure_arp(struct interface *ifp, int family)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/nhrpd/nhrp_route.c:431,1
    - Dst: stream_reset
      Src: /src/frr/nhrpd/nhrp_route.c:439,1
    - Dst: zclient_create_header
      Src: /src/frr/nhrpd/nhrp_route.c:440,1
    - Dst: stream_putl
      Src: /src/frr/nhrpd/nhrp_route.c:441,1
    - Dst: stream_putl
      Src: /src/frr/nhrpd/nhrp_route.c:442,1
    - Dst: stream_putl
      Src: /src/frr/nhrpd/nhrp_route.c:443,1
    - Dst: stream_putl
      Src: /src/frr/nhrpd/nhrp_route.c:444,1
    - Dst: stream_putw_at
      Src: /src/frr/nhrpd/nhrp_route.c:445,1
    - Dst: stream_get_endp
      Src: /src/frr/nhrpd/nhrp_route.c:445,1
    - Dst: zclient_send_message
      Src: /src/frr/nhrpd/nhrp_route.c:446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ifp
    - link_idx
    - link_vrf_id
    argTypes:
    - struct interface*
    - unsigned int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 447
    functionName: nhrp_send_zebra_gre_source_set
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - zlog_err
    - stream_putw_at
    - stream_get_endp
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void nhrp_send_zebra_gre_source_set(struct interface *ifp,\n\t\t\t\t
      \   unsigned int link_idx,\n\t\t\t\t    vrf_id_t link_vrf_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/nhrpd/nhrp_route.c:458,1
    - Dst: zclient_neigh_ip_encode
      Src: /src/frr/nhrpd/nhrp_route.c:459,1
    - Dst: stream_putw_at
      Src: /src/frr/nhrpd/nhrp_route.c:463,1
    - Dst: stream_get_endp
      Src: /src/frr/nhrpd/nhrp_route.c:463,1
    - Dst: zclient_send_message
      Src: /src/frr/nhrpd/nhrp_route.c:464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - in
    - out
    - ifp
    argTypes:
    - union sockunion*
    - union sockunion*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 465
    functionName: nhrp_send_zebra_nbr
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zclient_neigh_ip_encode
    - stream_reset
    linkageType: ''
    returnType: void
    signature: "void nhrp_send_zebra_nbr(union sockunion *in,\n\t\t\t union sockunion
      *out,\n\t\t\t struct interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_zebra_gre_request
      Src: /src/frr/nhrpd/nhrp_route.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 470
    functionName: nhrp_send_zebra_gre_request
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - zclient_send_zebra_gre_request
    linkageType: ''
    returnType: int
    signature: int nhrp_send_zebra_gre_request(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_zebra_register_neigh
      Src: /src/frr/nhrpd/nhrp_route.c:474,1
    - Dst: nhrp_zebra_register_neigh
      Src: /src/frr/nhrpd/nhrp_route.c:475,1
    - Dst: zclient_stop
      Src: /src/frr/nhrpd/nhrp_route.c:476,1
    - Dst: zclient_free
      Src: /src/frr/nhrpd/nhrp_route.c:477,1
    - Dst: route_table_finish
      Src: /src/frr/nhrpd/nhrp_route.c:481,1
    - Dst: route_table_finish
      Src: /src/frr/nhrpd/nhrp_route.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 483
    functionName: nhrp_zebra_terminate
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 1
    functionsReached:
    - zclient_free
    - nhrp_zebra_register_neigh
    - zclient_stop
    - route_table_finish
    linkageType: ''
    returnType: void
    signature: void nhrp_zebra_terminate(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/nhrpd/nhrp_route.c:497,1
    - Dst: STREAM_GETL
      Src: /src/frr/nhrpd/nhrp_route.c:498,1
    - Dst: STREAM_GETL
      Src: /src/frr/nhrpd/nhrp_route.c:499,1
    - Dst: STREAM_GETL
      Src: /src/frr/nhrpd/nhrp_route.c:500,1
    - Dst: STREAM_GETL
      Src: /src/frr/nhrpd/nhrp_route.c:501,1
    - Dst: STREAM_GETL
      Src: /src/frr/nhrpd/nhrp_route.c:502,1
    - Dst: STREAM_GETL
      Src: /src/frr/nhrpd/nhrp_route.c:503,1
    - Dst: hash_lookup
      Src: /src/frr/nhrpd/nhrp_route.c:507,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/nhrp_route.c:515,1
    - Dst: nhrp_gre_info_alloc
      Src: /src/frr/nhrpd/nhrp_route.c:518,1
    - Dst: if_lookup_by_index
      Src: /src/frr/nhrpd/nhrp_route.c:520,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_route.c:521,1
    - Dst: nhrp_interface_update_nbma
      Src: /src/frr/nhrpd/nhrp_route.c:524,1
    - Dst: zlog_err
      Src: /src/frr/nhrpd/nhrp_route.c:528,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 530
    functionName: nhrp_gre_update
    functionSourceFile: /src/frr/nhrpd/nhrp_route.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - nhrp_gre_info_alloc
    - debugf
    - zlog_err
    - hash_lookup
    - STREAM_GETL
    - memcpy
    - nhrp_interface_update_nbma
    linkageType: ''
    returnType: int
    signature: int nhrp_gre_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: nhrp_gre_info_key
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nhrp_gre_info_key(const void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - data
    - key
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: nhrp_gre_info_cmp
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nhrp_gre_info_cmp(const void *data, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/nhrpd/nhrp_interface.c:50,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/nhrp_interface.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: nhrp_interface_gre_alloc
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *nhrp_interface_gre_alloc(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/nhrpd/nhrp_interface.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhrp_gre_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: nhrp_gre_info_alloc
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 1
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: struct nhrp_gre_info
    signature: struct nhrp_gre_info *nhrp_gre_info_alloc(struct nhrp_gre_info *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/nhrpd/nhrp_interface.c:69,1
    - Dst: notifier_init
      Src: /src/frr/nhrpd/nhrp_interface.c:74,1
    - Dst: nhrp_nhslist_init
      Src: /src/frr/nhrpd/nhrp_interface.c:78,1
    - Dst: nhrp_mcastlist_init
      Src: /src/frr/nhrpd/nhrp_interface.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 83
    functionName: nhrp_if_new_hook
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - nhrp_mcastlist_init
    - notifier_init
    - nhrp_nhslist_init
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int nhrp_if_new_hook(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:89,1
    - Dst: nhrp_cache_interface_del
      Src: /src/frr/nhrpd/nhrp_interface.c:91,1
    - Dst: nhrp_nhs_interface_del
      Src: /src/frr/nhrpd/nhrp_interface.c:92,1
    - Dst: nhrp_multicast_interface_del
      Src: /src/frr/nhrpd/nhrp_interface.c:93,1
    - Dst: nhrp_peer_interface_del
      Src: /src/frr/nhrpd/nhrp_interface.c:94,1
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_interface.c:97,1
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_interface.c:99,1
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_interface.c:101,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_interface.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 105
    functionName: nhrp_if_delete_hook
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - nhrp_multicast_interface_del
    - debugf
    - free
    - nhrp_peer_interface_del
    - nhrp_nhs_interface_del
    - XFREE
    - nhrp_cache_interface_del
    linkageType: ''
    returnType: int
    signature: int nhrp_if_delete_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/nhrpd/nhrp_interface.c:109,1
    - Dst: hook_register_prio
      Src: /src/frr/nhrpd/nhrp_interface.c:110,1
    - Dst: hash_create
      Src: /src/frr/nhrpd/nhrp_interface.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: nhrp_interface_init
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 1
    functionsReached:
    - hook_register_prio
    - hash_create
    linkageType: ''
    returnType: void
    signature: void nhrp_interface_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:130,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_interface.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ifp
    - afi
    argTypes:
    - struct interface*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 136
    functionName: nhrp_interface_update_mtu
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - debugf
    - notifier_call
    linkageType: ''
    returnType: void
    signature: void nhrp_interface_update_mtu(struct interface *ifp, afi_t afi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:149,1
    - Dst: nhrp_send_zebra_gre_source_set
      Src: /src/frr/nhrpd/nhrp_interface.c:151,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 152
    functionName: nhrp_interface_update_source
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - debugf
    - nhrp_send_zebra_gre_source_set
    linkageType: ''
    returnType: void
    signature: void nhrp_interface_update_source(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_interface.c:158,1
    - Dst: nhrp_interface_update_nbma
      Src: /src/frr/nhrpd/nhrp_interface.c:164,1
    - Dst: nhrp_interface_update
      Src: /src/frr/nhrpd/nhrp_interface.c:168,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_interface.c:169,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - n
    - cmd
    argTypes:
    - struct notifier_block*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 175
    functionName: nhrp_interface_interface_notifier
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - notifier_call
    - debugf
    - container_of
    - nhrp_interface_update
    - nhrp_interface_update_nbma
    linkageType: ''
    returnType: void
    signature: "void nhrp_interface_interface_notifier(struct notifier_block *n,\n\t\t\t\t\t
      \     unsigned long cmd)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_interface.c:185,1
    - Dst: if_lookup_by_name
      Src: /src/frr/nhrpd/nhrp_interface.c:188,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:191,1
    - Dst: nhrp_send_zebra_gre_request
      Src: /src/frr/nhrpd/nhrp_interface.c:195,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:204,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_interface.c:207,1
    - Dst: if_lookup_by_index
      Src: /src/frr/nhrpd/nhrp_interface.c:212,1
    - Dst: notifier_del
      Src: /src/frr/nhrpd/nhrp_interface.c:223,1
    - Dst: notifier_add
      Src: /src/frr/nhrpd/nhrp_interface.c:228,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:231,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_interface.c:237,1
    - Dst: nhrp_interface_update_mtu
      Src: /src/frr/nhrpd/nhrp_interface.c:239,1
    - Dst: nhrp_interface_update_source
      Src: /src/frr/nhrpd/nhrp_interface.c:240,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_interface.c:243,1
    - Dst: nhrp_interface_update
      Src: /src/frr/nhrpd/nhrp_interface.c:245,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:246,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_interface.c:247,1
    - Dst: nhrp_interface_update
      Src: /src/frr/nhrpd/nhrp_interface.c:251,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 2
    argNames:
    - ifp
    - gre_info
    argTypes:
    - struct interface*
    - struct nhrp_gre_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 252
    functionName: nhrp_interface_update_nbma
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 2
    functionsReached:
    - sockunion_family
    - if_lookup_by_name
    - if_lookup_by_index
    - nhrp_interface_update_source
    - debugf
    - notifier_call
    - sockunion_set
    - sockunion_same
    - nhrp_send_zebra_gre_request
    - nhrp_interface_update
    - nhrp_interface_update_mtu
    - notifier_del
    - notifier_add
    linkageType: ''
    returnType: void
    signature: "void nhrp_interface_update_nbma(struct interface *ifp,\n\t\t\t\tstruct
      nhrp_gre_info *gre_info)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_interface.c:257,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/nhrpd/nhrp_interface.c:268,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_interface.c:269,1
    - Dst: if
      Src: /src/frr/nhrpd/nhrp_interface.c:271,1
    - Dst: continue
      Src: /src/frr/nhrpd/nhrp_interface.c:273,1
    - Dst: prefix_blen
      Src: /src/frr/nhrpd/nhrp_interface.c:293,1
    - Dst: zlog_notice
      Src: /src/frr/nhrpd/nhrp_interface.c:294,1
    - Dst: prefix2sockunion
      Src: /src/frr/nhrpd/nhrp_interface.c:301,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_interface.c:303,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_interface.c:305,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_interface.c:308,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_interface.c:309,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_interface.c:311,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:315,1
    - Dst: prefix2str
      Src: /src/frr/nhrpd/nhrp_interface.c:317,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_interface.c:320,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_interface.c:321,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_interface.c:323,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_interface.c:327,1
    - Dst: nhrp_interface_update
      Src: /src/frr/nhrpd/nhrp_interface.c:330,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_interface.c:337,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_interface.c:342,1
    - Dst: if_is_up
      Src: /src/frr/nhrpd/nhrp_interface.c:343,1
    - Dst: nhrp_interface_update_address
      Src: /src/frr/nhrpd/nhrp_interface.c:347,1
    - Dst: os_configure_dmvpn
      Src: /src/frr/nhrpd/nhrp_interface.c:353,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_interface.c:354,1
    - Dst: nhrp_send_zebra_configure_arp
      Src: /src/frr/nhrpd/nhrp_interface.c:355,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_interface.c:355,1
    - Dst: nhrp_interface_update_address
      Src: /src/frr/nhrpd/nhrp_interface.c:357,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_interface.c:365,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 23
    argCount: 3
    argNames:
    - ifp
    - afi
    - force
    argTypes:
    - struct interface*
    - afi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 369
    functionName: nhrp_interface_update_address
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - sockunion_family
    - notifier_call
    - prefix2sockunion
    - continue
    - memset
    - ALL_LIST_ELEMENTS_RO
    - nhrp_interface_update_address
    - prefix_blen
    - if
    - if_is_up
    - nhrp_cache_update_binding
    - afi2family
    - os_configure_dmvpn
    - nhrp_send_zebra_configure_arp
    - nhrp_cache_get
    - nhrp_interface_update
    - PREFIX_FAMILY
    - debugf
    - sockunion_same
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: "void nhrp_interface_update_address(struct interface *ifp, afi_t afi,\n\t\t\t\t\t
      \ int force)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:373,1
    - Dst: if_link_type_str
      Src: /src/frr/nhrpd/nhrp_interface.c:375,1
    - Dst: nhrp_interface_update_nbma
      Src: /src/frr/nhrpd/nhrp_interface.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 371
    functionDepth: 4
    functionLinenumber: 371
    functionLinenumberEnd: 380
    functionName: nhrp_ifp_create
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - debugf
    - if_link_type_str
    - nhrp_interface_update_nbma
    linkageType: ''
    returnType: int
    signature: int nhrp_ifp_create(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:384,1
    - Dst: nhrp_interface_update_cache_config
      Src: /src/frr/nhrpd/nhrp_interface.c:386,1
    - Dst: nhrp_interface_update_cache_config
      Src: /src/frr/nhrpd/nhrp_interface.c:387,1
    - Dst: nhrp_interface_update
      Src: /src/frr/nhrpd/nhrp_interface.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 391
    functionName: nhrp_ifp_destroy
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - nhrp_interface_update_cache_config
    - debugf
    - nhrp_interface_update
    linkageType: ''
    returnType: int
    signature: int nhrp_ifp_destroy(struct interface *ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_interface.c:406,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_interface.c:413,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_interface.c:420,1
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_interface.c:422,1
    - Dst: assert
      Src: /src/frr/nhrpd/nhrp_interface.c:428,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_interface.c:432,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_interface.c:435,1
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_interface.c:436,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - cc
    - data
    argTypes:
    - struct nhrp_cache_config*
    - void*
    assertStmts:
    - condition: (c != NULL)
      pos:
        line_end: 427
        line_start: 427
        source_file: /src/frr/nhrpd/nhrp_interface.c
    constantsTouched: []
    func_position:
      end: 439
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 439
    functionName: interface_config_update_nhrp_map
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - nhrp_peer_get
    - nhrp_cache_update_binding
    - nhrp_cache_get
    - assert
    linkageType: ''
    returnType: void
    signature: "void interface_config_update_nhrp_map(struct nhrp_cache_config *cc,\n\t\t\t\t\t
      \    void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_cache_config_foreach
      Src: /src/frr/nhrpd/nhrp_interface.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ifp
    - available
    - family
    argTypes:
    - struct interface*
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 452
    functionName: nhrp_interface_update_cache_config
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 1
    functionsReached:
    - nhrp_cache_config_foreach
    linkageType: ''
    returnType: void
    signature: void nhrp_interface_update_cache_config(struct interface *ifp, bool
      available, uint8_t family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:456,1
    - Dst: nhrp_interface_update_nbma
      Src: /src/frr/nhrpd/nhrp_interface.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 454
    functionDepth: 4
    functionLinenumber: 454
    functionLinenumberEnd: 460
    functionName: nhrp_ifp_up
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - debugf
    - nhrp_interface_update_nbma
    linkageType: ''
    returnType: int
    signature: int nhrp_ifp_up(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:464,1
    - Dst: nhrp_interface_update
      Src: /src/frr/nhrpd/nhrp_interface.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 468
    functionName: nhrp_ifp_down
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - nhrp_interface_update
    - debugf
    linkageType: ''
    returnType: int
    signature: int nhrp_ifp_down(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/nhrpd/nhrp_interface.c:474,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:478,1
    - Dst: nhrp_interface_update_address
      Src: /src/frr/nhrpd/nhrp_interface.c:481,1
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_interface.c:482,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_interface.c:482,1
    - Dst: nhrp_interface_update_cache_config
      Src: /src/frr/nhrpd/nhrp_interface.c:483,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_interface.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 485
    functionName: nhrp_interface_address_add
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - zebra_interface_address_read
    - PREFIX_FAMILY
    - nhrp_interface_update_cache_config
    - debugf
    - nhrp_interface_update_address
    - family2afi
    linkageType: ''
    returnType: int
    signature: int nhrp_interface_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/nhrpd/nhrp_interface.c:491,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_interface.c:495,1
    - Dst: nhrp_interface_update_address
      Src: /src/frr/nhrpd/nhrp_interface.c:498,1
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_interface.c:499,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_interface.c:499,1
    - Dst: connected_free
      Src: /src/frr/nhrpd/nhrp_interface.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 487
    functionDepth: 3
    functionLinenumber: 487
    functionLinenumberEnd: 503
    functionName: nhrp_interface_address_delete
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - zebra_interface_address_read
    - PREFIX_FAMILY
    - debugf
    - connected_free
    - nhrp_interface_update_address
    - family2afi
    linkageType: ''
    returnType: int
    signature: int nhrp_interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_add
      Src: /src/frr/nhrpd/nhrp_interface.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ifp
    - n
    - fn
    argTypes:
    - struct interface*
    - struct notifier_block*
    - notifier_fn_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 511
    functionName: nhrp_interface_notify_add
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - notifier_add
    linkageType: ''
    returnType: void
    signature: "void nhrp_interface_notify_add(struct interface *ifp, struct notifier_block
      *n,\n\t\t\t       notifier_fn_t fn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_del
      Src: /src/frr/nhrpd/nhrp_interface.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - n
    argTypes:
    - struct interface*
    - struct notifier_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 518
    functionName: nhrp_interface_notify_del
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - notifier_del
    linkageType: ''
    returnType: void
    signature: void nhrp_interface_notify_del(struct interface *ifp, struct notifier_block
      *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vici_terminate_vc_by_profile_name
      Src: /src/frr/nhrpd/nhrp_interface.c:526,1
    - Dst: nhrp_vc_reset
      Src: /src/frr/nhrpd/nhrp_interface.c:527,1
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_interface.c:528,1
    - Dst: strdup
      Src: /src/frr/nhrpd/nhrp_interface.c:530,1
    - Dst: vici_terminate_vc_by_profile_name
      Src: /src/frr/nhrpd/nhrp_interface.c:533,1
    - Dst: nhrp_vc_reset
      Src: /src/frr/nhrpd/nhrp_interface.c:534,1
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_interface.c:535,1
    - Dst: strdup
      Src: /src/frr/nhrpd/nhrp_interface.c:538,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_interface.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - ifp
    - profile
    - fallback_profile
    argTypes:
    - struct interface*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 520
    functionDepth: 5
    functionLinenumber: 520
    functionLinenumberEnd: 541
    functionName: nhrp_interface_set_protection
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - vici_terminate_vc_by_profile_name
    - notifier_call
    - free
    - strdup
    - nhrp_vc_reset
    linkageType: ''
    returnType: void
    signature: "void nhrp_interface_set_protection(struct interface *ifp, const char
      *profile,\n\t\t\t\t   const char *fallback_profile)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_interface.c:548,1
    - Dst: strdup
      Src: /src/frr/nhrpd/nhrp_interface.c:549,1
    - Dst: nhrp_interface_update_nbma
      Src: /src/frr/nhrpd/nhrp_interface.c:551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - ifname
    argTypes:
    - struct interface*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 543
    functionDepth: 4
    functionLinenumber: 543
    functionLinenumberEnd: 552
    functionName: nhrp_interface_set_source
    functionSourceFile: /src/frr/nhrpd/nhrp_interface.c
    functionUses: 0
    functionsReached:
    - strdup
    - free
    - nhrp_interface_update_nbma
    linkageType: ''
    returnType: void
    signature: void nhrp_interface_set_source(struct interface *ifp, const char *ifname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/nhrpd/nhrp_vty.c:74,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:77,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - vty
    - ret
    argTypes:
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 81
    functionName: nhrp_vty_return
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - snprintf
    linkageType: ''
    returnType: int
    signature: int nhrp_vty_return(struct vty *vty, int ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/nhrpd/nhrp_vty.c:89,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - vty
    - flag_desc
    - name
    - on_off
    - flags
    argTypes:
    - struct vty*
    - struct message*
    - char*
    - int
    - unsigned*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 101
    functionName: toggle_flag
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - strcmp
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int toggle_flag(struct vty *vty, const struct message *flag_desc,\n\t\t
      \      const char *name, int on_off, unsigned *flags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:157,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:166,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:170,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:174,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:177,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:180,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 184
    functionName: nhrp_config_write
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int nhrp_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/nhrpd/nhrp_vty.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tok
    argTypes:
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: cmd_to_afi
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: afi_t
    signature: afi_t cmd_to_afi(const struct cmd_token *tok)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - afi
    argTypes:
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 202
    functionName: afi_to_cmd
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *afi_to_cmd(afi_t afi)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_vty.c:700,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:700,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:705,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:711,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:715,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:716,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:717,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/nhrp_vty.c:719,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/nhrp_vty.c:720,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:724,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:725,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:728,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/nhrp_vty.c:731,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:734,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:736,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/nhrp_vty.c:739,1
    - Dst: json_object_new_object
      Src: /src/frr/nhrpd/nhrp_vty.c:743,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:744,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:745,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:747,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:748,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:749,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/nhrpd/nhrp_vty.c:752,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/nhrpd/nhrp_vty.c:754,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/nhrpd/nhrp_vty.c:757,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/nhrpd/nhrp_vty.c:759,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/nhrpd/nhrp_vty.c:762,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/nhrpd/nhrp_vty.c:764,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:767,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:770,1
    - Dst: json_object_array_add
      Src: /src/frr/nhrpd/nhrp_vty.c:772,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:775,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 2
    argNames:
    - c
    - pctx
    argTypes:
    - struct nhrp_cache*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 782
    functionName: show_ip_nhrp_cache
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - sockunion_family
    - vty_out
    - snprintf
    - json_object_array_add
    - json_object_boolean_false_add
    - json_object_boolean_true_add
    - json_object_string_add
    - family2afi
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: void show_ip_nhrp_cache(struct nhrp_cache *c, void *pctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:793,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:799,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/nhrp_vty.c:802,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:803,1
    - Dst: json_object_new_object
      Src: /src/frr/nhrpd/nhrp_vty.c:807,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:808,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:809,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:810,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:811,1
    - Dst: json_object_array_add
      Src: /src/frr/nhrpd/nhrp_vty.c:813,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:817,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - n
    - reg
    - pctx
    argTypes:
    - struct nhrp_nhs*
    - struct nhrp_registration*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 819
    functionName: show_ip_nhrp_nhs
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - snprintf
    - json_object_array_add
    - json_object_string_add
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: "void show_ip_nhrp_nhs(struct nhrp_nhs *n, struct nhrp_registration
      *reg,\n\t\t\t     void *pctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:830,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:838,1
    - Dst: prefix2str
      Src: /src/frr/nhrpd/nhrp_vty.c:839,1
    - Dst: json_object_new_object
      Src: /src/frr/nhrpd/nhrp_vty.c:842,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:843,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:845,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:848,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:851,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:854,1
    - Dst: json_object_array_add
      Src: /src/frr/nhrpd/nhrp_vty.c:856,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:860,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - s
    - pctx
    argTypes:
    - struct nhrp_shortcut*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 864
    functionName: show_ip_nhrp_shortcut
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - vty_out
    - json_object_array_add
    - json_object_string_add
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: void show_ip_nhrp_shortcut(struct nhrp_shortcut *s, void *pctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_vty.c:873,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:873,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:876,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:878,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:880,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_vty.c:881,1
    - Dst: json_object_new_object
      Src: /src/frr/nhrpd/nhrp_vty.c:884,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:885,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/nhrpd/nhrp_vty.c:889,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/nhrpd/nhrp_vty.c:891,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/nhrpd/nhrp_vty.c:894,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/nhrpd/nhrp_vty.c:896,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:898,1
    - Dst: json_object_int_add
      Src: /src/frr/nhrpd/nhrp_vty.c:899,1
    - Dst: family2addrsize
      Src: /src/frr/nhrpd/nhrp_vty.c:900,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:900,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:904,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:906,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:907,1
    - Dst: json_object_array_add
      Src: /src/frr/nhrpd/nhrp_vty.c:910,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:913,1
    - Dst: family2addrsize
      Src: /src/frr/nhrpd/nhrp_vty.c:921,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:921,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:924,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:926,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:927,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:929,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 2
    argNames:
    - c
    - pctx
    argTypes:
    - struct nhrp_cache*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 930
    functionName: show_ip_opennhrp_cache
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - sockunion_family
    - json_object_array_add
    - vty_out
    - json_object_boolean_false_add
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_string_add
    - family2addrsize
    - family2afi
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: void show_ip_opennhrp_cache(struct nhrp_cache *c, void *pctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/nhrpd/nhrp_vty.c:1008,1
    - Dst: json_object_string_addf
      Src: /src/frr/nhrpd/nhrp_vty.c:1009,1
    - Dst: json_object_string_addf
      Src: /src/frr/nhrpd/nhrp_vty.c:1010,1
    - Dst: notifier_active
      Src: /src/frr/nhrpd/nhrp_vty.c:1012,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/nhrpd/nhrp_vty.c:1013,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/nhrpd/nhrp_vty.c:1015,1
    - Dst: json_object_int_add
      Src: /src/frr/nhrpd/nhrp_vty.c:1017,1
    - Dst: json_object_string_add
      Src: /src/frr/nhrpd/nhrp_vty.c:1018,1
    - Dst: json_object_array_add
      Src: /src/frr/nhrpd/nhrp_vty.c:1019,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1021,1
    - Dst: notifier_active
      Src: /src/frr/nhrpd/nhrp_vty.c:1023,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - vc
    - ctx
    argTypes:
    - struct nhrp_vc*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 998
    functionDepth: 1
    functionLinenumber: 998
    functionLinenumberEnd: 1026
    functionName: show_dmvpn_entry
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_array_add
    - vty_out
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_string_addf
    - json_object_boolean_false_add
    - notifier_active
    linkageType: ''
    returnType: void
    signature: void show_dmvpn_entry(struct nhrp_vc *vc, void *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_vty.c:1057,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - c
    - data
    argTypes:
    - struct nhrp_cache*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1053
    functionDepth: 1
    functionLinenumber: 1053
    functionLinenumberEnd: 1062
    functionName: clear_nhrp_cache
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_update_binding
    linkageType: ''
    returnType: void
    signature: void clear_nhrp_cache(struct nhrp_cache *c, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_shortcut_purge
      Src: /src/frr/nhrpd/nhrp_vty.c:1067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s
    - data
    argTypes:
    - struct nhrp_shortcut*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1069
    functionName: clear_nhrp_shortcut
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - nhrp_shortcut_purge
    linkageType: ''
    returnType: void
    signature: void clear_nhrp_shortcut(struct nhrp_shortcut *s, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:1119,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1122,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1124,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - c
    - data
    argTypes:
    - struct nhrp_cache_config*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1113
    functionDepth: 1
    functionLinenumber: 1113
    functionLinenumberEnd: 1127
    functionName: interface_config_write_nhrp_map
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void interface_config_write_nhrp_map(struct nhrp_cache_config *c,\n\t\t\t\t\t
      \   void *data)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/nhrpd/nhrp_vty.c:1131,1
    - Dst: if_vty_config_start
      Src: /src/frr/nhrpd/nhrp_vty.c:1142,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1144,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1148,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1151,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1153,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1156,1
    - Dst: afi_to_cmd
      Src: /src/frr/nhrpd/nhrp_vty.c:1161,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1164,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1168,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1172,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1174,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1180,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_vty.c:1186,1
    - Dst: nhrp_cache_config_foreach
      Src: /src/frr/nhrpd/nhrp_vty.c:1189,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_vty.c:1192,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1193,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:1194,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1196,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1198,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1199,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_vty.c:1202,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1203,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:1204,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1206,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1208,1
    - Dst: if_vty_config_end
      Src: /src/frr/nhrpd/nhrp_vty.c:1213,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1129
    functionDepth: 1
    functionLinenumber: 1129
    functionLinenumberEnd: 1217
    functionName: interface_config_write
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - sockunion_family
    - vty_out
    - if_vty_config_start
    - afi_to_cmd
    - frr_each
    - afi2family
    - vrf_lookup_by_id
    - nhrp_cache_config_foreach
    linkageType: ''
    returnType: int
    signature: int interface_config_write(struct vty *vty)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: if_vty_config_start
      Src: /src/frr/nhrpd/nhrp_vty.c:1142,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1144,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1148,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1151,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1153,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1156,1
    - Dst: afi_to_cmd
      Src: /src/frr/nhrpd/nhrp_vty.c:1161,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1164,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1168,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1172,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1174,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1180,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_vty.c:1186,1
    - Dst: nhrp_cache_config_foreach
      Src: /src/frr/nhrpd/nhrp_vty.c:1189,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_vty.c:1192,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1193,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:1194,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1196,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1198,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1199,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_vty.c:1202,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1203,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_vty.c:1204,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1206,1
    - Dst: vty_out
      Src: /src/frr/nhrpd/nhrp_vty.c:1208,1
    - Dst: if_vty_config_end
      Src: /src/frr/nhrpd/nhrp_vty.c:1213,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1141
    functionDepth: 1
    functionLinenumber: 1141
    functionLinenumberEnd: 1214
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - sockunion_family
    - vty_out
    - if_vty_config_start
    - afi_to_cmd
    - frr_each
    - afi2family
    - nhrp_cache_config_foreach
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/nhrpd/nhrp_vty.c:1221,1
    - Dst: install_default
      Src: /src/frr/nhrpd/nhrp_vty.c:1222,1
    - Dst: access_list_init
      Src: /src/frr/nhrpd/nhrp_vty.c:1225,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1228,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1229,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1230,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1232,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1234,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1235,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1237,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1238,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1240,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1241,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1242,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1243,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1244,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1245,1
    - Dst: vrf_cmd_init
      Src: /src/frr/nhrpd/nhrp_vty.c:1247,1
    - Dst: if_cmd_init
      Src: /src/frr/nhrpd/nhrp_vty.c:1250,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1251,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1252,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1253,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1254,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1255,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1256,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1257,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1258,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1259,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1260,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1261,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1262,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1263,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1264,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1265,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1266,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1267,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1268,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1269,1
    - Dst: install_element
      Src: /src/frr/nhrpd/nhrp_vty.c:1270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1219
    functionDepth: 1
    functionLinenumber: 1219
    functionLinenumberEnd: 1271
    functionName: nhrp_config_init
    functionSourceFile: /src/frr/nhrpd/nhrp_vty.c
    functionUses: 1
    functionsReached:
    - install_node
    - access_list_init
    - install_default
    - if_cmd_init
    - install_element
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void nhrp_config_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_hash
      Src: /src/frr/nhrpd/nhrp_cache.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: nhrp_cache_protocol_key
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - sockunion_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nhrp_cache_protocol_key(const void *peer_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_cache.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cache_data
    - key_data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: nhrp_cache_protocol_cmp
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - sockunion_same
    linkageType: ''
    returnType: bool
    signature: "bool nhrp_cache_protocol_cmp(const void *cache_data,\n\t\t\t\t    const
      void *key_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/nhrpd/nhrp_cache.c:49,1
    - Dst: NOTIFIER_LIST_INITIALIZER
      Src: /src/frr/nhrpd/nhrp_cache.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 62
    functionName: nhrp_cache_alloc
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - NOTIFIER_LIST_INITIALIZER
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *nhrp_cache_alloc(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:68,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_cache.c:70,1
    - Dst: assert
      Src: /src/frr/nhrpd/nhrp_cache.c:71,1
    - Dst: notifier_active
      Src: /src/frr/nhrpd/nhrp_cache.c:71,1
    - Dst: hash_release
      Src: /src/frr/nhrpd/nhrp_cache.c:72,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_cache.c:73,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_cache.c:74,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_cache.c:75,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_cache.c:76,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_cache.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct nhrp_cache*
    assertStmts:
    - condition: (!notifier_active(&c->notifier_list))
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/frr/nhrpd/nhrp_cache.c
    constantsTouched: []
    func_position:
      end: 78
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 78
    functionName: nhrp_cache_free
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - assert
    - debugf
    - notifier_call
    - nhrp_peer_unref
    - EVENT_OFF
    - XFREE
    - hash_release
    - notifier_active
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_free(struct nhrp_cache *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_hash
      Src: /src/frr/nhrpd/nhrp_cache.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: nhrp_cache_config_protocol_key
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - sockunion_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nhrp_cache_config_protocol_key(const void *peer_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_cache.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - cache_data
    - key_data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 97
    functionName: nhrp_cache_config_protocol_cmp
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - sockunion_same
    linkageType: ''
    returnType: bool
    signature: "bool nhrp_cache_config_protocol_cmp(const void *cache_data,\n\t\t\t\t\t
      \  const void *key_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/nhrpd/nhrp_cache.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 110
    functionName: nhrp_cache_config_alloc
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *nhrp_cache_config_alloc(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/nhrpd/nhrp_cache.c:116,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_cache.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct nhrp_cache_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 118
    functionName: nhrp_cache_config_free
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - hash_release
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_config_free(struct nhrp_cache_config *c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/nhrpd/nhrp_cache.c:129,1
    - Dst: hash_get
      Src: /src/frr/nhrpd/nhrp_cache.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ifp
    - remote_addr
    - create
    argTypes:
    - struct interface*
    - union sockunion*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 140
    functionName: nhrp_cache_config_get
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - hash_create
    - hash_get
    linkageType: ''
    returnType: struct nhrp_cache_config
    signature: "struct nhrp_cache_config *nhrp_cache_config_get(struct interface *ifp,\n\t\t\t\t\t\tunion
      sockunion *remote_addr,\n\t\t\t\t\t\tint create)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_cache_free
      Src: /src/frr/nhrpd/nhrp_cache.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: do_nhrp_cache_free
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_free
    linkageType: ''
    returnType: void
    signature: "void do_nhrp_cache_free(struct hash_bucket *hb,\n\t\t\t       void
      *arg __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_cache_config_free
      Src: /src/frr/nhrpd/nhrp_cache.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: do_nhrp_cache_config_free
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_config_free
    linkageType: ''
    returnType: void
    signature: "void do_nhrp_cache_config_free(struct hash_bucket *hb,\n\t\t\t\t      void
      *arg __attribute__((__unused__)))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:162,1
    - Dst: hash_iterate
      Src: /src/frr/nhrpd/nhrp_cache.c:166,1
    - Dst: hash_free
      Src: /src/frr/nhrpd/nhrp_cache.c:167,1
    - Dst: hash_iterate
      Src: /src/frr/nhrpd/nhrp_cache.c:171,1
    - Dst: hash_free
      Src: /src/frr/nhrpd/nhrp_cache.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 175
    functionName: nhrp_cache_interface_del
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - debugf
    - hash_free
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_interface_del(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/nhrpd/nhrp_cache.c:185,1
    - Dst: hash_get
      Src: /src/frr/nhrpd/nhrp_cache.c:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ifp
    - remote_addr
    - create
    argTypes:
    - struct interface*
    - union sockunion*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 196
    functionName: nhrp_cache_get
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 3
    functionsReached:
    - hash_create
    - hash_get
    linkageType: ''
    returnType: struct nhrp_cache
    signature: "struct nhrp_cache *nhrp_cache_get(struct interface *ifp,\n\t\t\t\t
      \ union sockunion *remote_addr, int create)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_cache.c:200,1
    - Dst: nhrp_cache_free
      Src: /src/frr/nhrpd/nhrp_cache.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 204
    functionName: nhrp_cache_do_free
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_free
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_do_free(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_cache.c:208,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: nhrp_cache_do_timeout
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_update_binding
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_do_timeout(struct event *t)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2hostprefix
      Src: /src/frr/nhrpd/nhrp_cache.c:222,1
    - Dst: nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_cache.c:225,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_cache.c:226,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:231,1
    - Dst: netlink_update_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:236,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:240,1
    - Dst: netlink_update_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:245,1
    - Dst: nhrp_route_announce
      Src: /src/frr/nhrpd/nhrp_cache.c:249,1
    - Dst: nhrp_route_update_nhrp
      Src: /src/frr/nhrpd/nhrp_cache.c:252,1
    - Dst: nhrp_route_update_nhrp
      Src: /src/frr/nhrpd/nhrp_cache.c:255,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_cache.c:259,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:266,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:271,1
    - Dst: nhrp_route_update_nhrp
      Src: /src/frr/nhrpd/nhrp_cache.c:275,1
    - Dst: assert
      Src: /src/frr/nhrpd/nhrp_cache.c:279,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/nhrpd/nhrp_cache.c:279,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_cache.c:280,1
    - Dst: nhrp_route_announce
      Src: /src/frr/nhrpd/nhrp_cache.c:281,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct nhrp_cache*
    assertStmts:
    - condition: (sockunion2hostprefix(&c->remote_addr, &pfx))
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/frr/nhrpd/nhrp_cache.c
    constantsTouched: []
    func_position:
      end: 286
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 286
    functionName: nhrp_cache_update_route
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - sockunion2hostprefix
    - sockunion_family
    - nhrp_route_update_nhrp
    - debugf
    - nhrp_peer_check
    - notifier_call
    - netlink_update_binding
    - nhrp_route_announce
    - assert
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_update_route(struct nhrp_cache *c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_cache.c:292,1
    - Dst: nhrp_cache_update_route
      Src: /src/frr/nhrpd/nhrp_cache.c:296,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_cache.c:300,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:301,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - n
    - cmd
    argTypes:
    - struct notifier_block*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 288
    functionDepth: 4
    functionLinenumber: 288
    functionLinenumberEnd: 309
    functionName: nhrp_cache_peer_notifier
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - notifier_call
    - nhrp_cache_update_route
    - nhrp_cache_update_binding
    - container_of
    linkageType: ''
    returnType: void
    signature: "void nhrp_cache_peer_notifier(struct notifier_block *n,\n\t\t\t\t
      \    unsigned long cmd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_cache.c:313,1
    - Dst: notifier_list_anywhere
      Src: /src/frr/nhrpd/nhrp_cache.c:314,1
    - Dst: nhrp_peer_notify_del
      Src: /src/frr/nhrpd/nhrp_cache.c:315,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_cache.c:316,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_cache.c:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct nhrp_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 319
    functionName: nhrp_cache_reset_new
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - memset
    - nhrp_peer_notify_del
    - nhrp_peer_unref
    - notifier_list_anywhere
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_reset_new(struct nhrp_cache *c)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_cache.c:323,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_cache.c:328,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_cache.c:340,1
    - Dst: monotime
      Src: /src/frr/nhrpd/nhrp_cache.c:341,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct nhrp_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 345
    functionName: nhrp_cache_update_timers
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - EVENT_OFF
    - monotime
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_update_timers(struct nhrp_cache *c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_cache.c:349,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:352,1
    - Dst: nhrp_reqid_free
      Src: /src/frr/nhrpd/nhrp_cache.c:355,1
    - Dst: strcmp
      Src: /src/frr/nhrpd/nhrp_cache.c:357,1
    - Dst: netlink_update_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:359,1
    - Dst: nhrp_peer_notify_del
      Src: /src/frr/nhrpd/nhrp_cache.c:361,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_cache.c:362,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_cache.c:367,1
    - Dst: nhrp_cache_reset_new
      Src: /src/frr/nhrpd/nhrp_cache.c:368,1
    - Dst: nhrp_peer_notify_add
      Src: /src/frr/nhrpd/nhrp_cache.c:370,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_cache.c:373,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:374,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_cache.c:377,1
    - Dst: netlink_update_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:384,1
    - Dst: nhrp_cache_update_route
      Src: /src/frr/nhrpd/nhrp_cache.c:389,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_cache.c:390,1
    - Dst: nhrp_cache_reset_new
      Src: /src/frr/nhrpd/nhrp_cache.c:392,1
    - Dst: nhrp_cache_update_timers
      Src: /src/frr/nhrpd/nhrp_cache.c:395,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - r
    - arg
    argTypes:
    - struct nhrp_reqid*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 347
    functionDepth: 4
    functionLinenumber: 347
    functionLinenumberEnd: 396
    functionName: nhrp_cache_authorize_binding
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - nhrp_peer_ref
    - sockunion_family
    - nhrp_cache_reset_new
    - debugf
    - notifier_call
    - strcmp
    - container_of
    - nhrp_peer_notify_del
    - netlink_update_binding
    - nhrp_reqid_free
    - nhrp_cache_update_timers
    - nhrp_peer_unref
    - nhrp_cache_update_route
    - nhrp_peer_notify_add
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_authorize_binding(struct nhrp_reqid *r, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_cache.c:400,1
    - Dst: nhrp_cache_authorize_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 398
    functionDepth: 5
    functionLinenumber: 398
    functionLinenumberEnd: 403
    functionName: nhrp_cache_do_auth_timeout
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_authorize_binding
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_do_auth_timeout(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_cache.c:409,1
    - Dst: nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_cache.c:413,1
    - Dst: evmgr_notify
      Src: /src/frr/nhrpd/nhrp_cache.c:414,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_cache.c:416,1
    - Dst: nhrp_cache_reset_new
      Src: /src/frr/nhrpd/nhrp_cache.c:422,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - n
    - cmd
    argTypes:
    - struct notifier_block*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 425
    functionName: nhrp_cache_newpeer_notifier
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - evmgr_notify
    - nhrp_cache_reset_new
    - nhrp_peer_check
    - container_of
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void nhrp_cache_newpeer_notifier(struct notifier_block *n,\n\t\t\t\t\tunsigned
      long cmd)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_cache.c:435,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_cache.c:440,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_cache.c:454,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_cache.c:456,1
    - Dst: nhrp_cache_reset_new
      Src: /src/frr/nhrpd/nhrp_cache.c:458,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:460,1
    - Dst: monotime
      Src: /src/frr/nhrpd/nhrp_cache.c:464,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_cache.c:469,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_cache.c:475,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_cache.c:478,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_cache.c:480,1
    - Dst: monotime
      Src: /src/frr/nhrpd/nhrp_cache.c:496,1
    - Dst: nhrp_cache_reset_new
      Src: /src/frr/nhrpd/nhrp_cache.c:498,1
    - Dst: nhrp_cache_authorize_binding
      Src: /src/frr/nhrpd/nhrp_cache.c:502,1
    - Dst: nhrp_peer_notify_add
      Src: /src/frr/nhrpd/nhrp_cache.c:505,1
    - Dst: nhrp_cache_newpeer_notifier
      Src: /src/frr/nhrpd/nhrp_cache.c:507,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_cache.c:509,1
    - Dst: nhrp_cache_update_timers
      Src: /src/frr/nhrpd/nhrp_cache.c:513,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 55
    argCount: 7
    argNames:
    - c
    - type
    - holding_time
    - p
    - mtu
    - nbma_oa
    - nbma_claimed
    argTypes:
    - struct nhrp_cache*
    - enum nhrp_cache_type
    - int
    - struct nhrp_peer*
    - uint32_t
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 427
    functionDepth: 5
    functionLinenumber: 427
    functionLinenumberEnd: 516
    functionName: nhrp_cache_update_binding
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 5
    functionsReached:
    - sockunion_family
    - event_add_timer
    - memset
    - nhrp_cache_reset_new
    - debugf
    - monotime
    - nhrp_cache_update_timers
    - nhrp_peer_unref
    - nhrp_peer_notify_add
    - nhrp_cache_newpeer_notifier
    - nhrp_cache_authorize_binding
    - sockunion2str
    linkageType: ''
    returnType: int
    signature: "int nhrp_cache_update_binding(struct nhrp_cache *c, enum nhrp_cache_type
      type,\n\t\t\t      int holding_time, struct nhrp_peer *p,\n\t\t\t      uint32_t
      mtu, union sockunion *nbma_oa,\n\t\t\t      union sockunion *nbma_claimed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_cache.c:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - c
    - used
    argTypes:
    - struct nhrp_cache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 523
    functionName: nhrp_cache_set_used
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - notifier_call
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_set_used(struct nhrp_cache *c, int used)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct nhrp_cache_iterator_ctx*::cb
      Src: /src/frr/nhrpd/nhrp_cache.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - ctx
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 539
    functionName: nhrp_cache_iterator
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - struct nhrp_cache_iterator_ctx*::cb
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_iterator(struct hash_bucket *b, void *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct nhrp_cache_config_iterator_ctx*::cb
      Src: /src/frr/nhrpd/nhrp_cache.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - ctx
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 545
    functionName: nhrp_cache_config_iterator
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - struct nhrp_cache_config_iterator_ctx*::cb
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_config_iterator(struct hash_bucket *b, void *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/nhrpd/nhrp_cache.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - ctx
    argTypes:
    - struct interface*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 557
    functionName: nhrp_cache_foreach
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: "void nhrp_cache_foreach(struct interface *ifp,\n\t\t\tvoid (*cb)(struct
      nhrp_cache *, void *), void *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/nhrpd/nhrp_cache.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - ctx
    argTypes:
    - struct interface*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 569
    functionName: nhrp_cache_config_foreach
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 3
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: "void nhrp_cache_config_foreach(struct interface *ifp,\n\t\t\t       void
      (*cb)(struct nhrp_cache_config *, void *), void *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_add
      Src: /src/frr/nhrpd/nhrp_cache.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - c
    - n
    - fn
    argTypes:
    - struct nhrp_cache*
    - struct notifier_block*
    - notifier_fn_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 575
    functionName: nhrp_cache_notify_add
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - notifier_add
    linkageType: ''
    returnType: void
    signature: "void nhrp_cache_notify_add(struct nhrp_cache *c, struct notifier_block
      *n,\n\t\t\t   notifier_fn_t fn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_del
      Src: /src/frr/nhrpd/nhrp_cache.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - n
    argTypes:
    - struct nhrp_cache*
    - struct notifier_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 580
    functionName: nhrp_cache_notify_del
    functionSourceFile: /src/frr/nhrpd/nhrp_cache.c
    functionUses: 0
    functionsReached:
    - notifier_del
    linkageType: ''
    returnType: void
    signature: void nhrp_cache_notify_del(struct nhrp_cache *c, struct notifier_block
      *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:28,1
    - Dst: nhrp_shortcut_send_resolution_req
      Src: /src/frr/nhrpd/nhrp_shortcut.c:30,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct nhrp_shortcut*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: nhrp_shortcut_check_use
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - debugf
    - nhrp_shortcut_send_resolution_req
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_check_use(struct nhrp_shortcut *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_shortcut.c:36,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_shortcut.c:38,1
    - Dst: nhrp_shortcut_check_use
      Src: /src/frr/nhrpd/nhrp_shortcut.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: nhrp_shortcut_do_expire
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - nhrp_shortcut_check_use
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_do_expire(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_shortcut.c:48,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:54,1
    - Dst: nhrp_route_announce
      Src: /src/frr/nhrpd/nhrp_shortcut.c:59,1
    - Dst: nhrp_shortcut_check_use
      Src: /src/frr/nhrpd/nhrp_shortcut.c:65,1
    - Dst: nhrp_route_announce
      Src: /src/frr/nhrpd/nhrp_shortcut.c:70,1
    - Dst: nhrp_shortcut_delete
      Src: /src/frr/nhrpd/nhrp_shortcut.c:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - n
    - cmd
    argTypes:
    - struct notifier_block*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 78
    functionName: nhrp_shortcut_cache_notify
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - debugf
    - container_of
    - nhrp_route_announce
    - nhrp_shortcut_check_use
    - nhrp_shortcut_delete
    linkageType: ''
    returnType: void
    signature: "void nhrp_shortcut_cache_notify(struct notifier_block *n,\n\t\t\t\t
      \      unsigned long cmd)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_cache_notify_del
      Src: /src/frr/nhrpd/nhrp_shortcut.c:87,1
    - Dst: nhrp_cache_notify_add
      Src: /src/frr/nhrpd/nhrp_shortcut.c:92,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:98,1
    - Dst: nhrp_shortcut_cache_notify
      Src: /src/frr/nhrpd/nhrp_shortcut.c:103,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:108,1
    - Dst: nhrp_shortcut_cache_notify
      Src: /src/frr/nhrpd/nhrp_shortcut.c:114,1
    - Dst: nhrp_route_announce
      Src: /src/frr/nhrpd/nhrp_shortcut.c:119,1
    - Dst: nhrp_route_announce
      Src: /src/frr/nhrpd/nhrp_shortcut.c:122,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_shortcut.c:126,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_shortcut.c:130,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 4
    argNames:
    - s
    - type
    - c
    - holding_time
    argTypes:
    - struct nhrp_shortcut*
    - enum nhrp_cache_type
    - struct nhrp_cache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 133
    functionName: nhrp_shortcut_update_binding
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - nhrp_cache_notify_del
    - debugf
    - EVENT_OFF
    - nhrp_route_announce
    - nhrp_shortcut_cache_notify
    - nhrp_cache_notify_add
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void nhrp_shortcut_update_binding(struct nhrp_shortcut *s,\n\t\t\t\t\t
      enum nhrp_cache_type type,\n\t\t\t\t\t struct nhrp_cache *c, int holding_time)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_shortcut.c:138,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_shortcut.c:138,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_shortcut.c:140,1
    - Dst: nhrp_reqid_free
      Src: /src/frr/nhrpd/nhrp_shortcut.c:141,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:143,1
    - Dst: nhrp_shortcut_update_binding
      Src: /src/frr/nhrpd/nhrp_shortcut.c:145,1
    - Dst: route_node_lookup
      Src: /src/frr/nhrpd/nhrp_shortcut.c:148,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_shortcut.c:150,1
    - Dst: route_unlock_node
      Src: /src/frr/nhrpd/nhrp_shortcut.c:152,1
    - Dst: route_unlock_node
      Src: /src/frr/nhrpd/nhrp_shortcut.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct nhrp_shortcut*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 135
    functionDepth: 4
    functionLinenumber: 135
    functionLinenumberEnd: 155
    functionName: nhrp_shortcut_delete
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - PREFIX_FAMILY
    - debugf
    - nhrp_reqid_free
    - EVENT_OFF
    - XFREE
    - family2afi
    - nhrp_shortcut_update_binding
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_delete(struct nhrp_shortcut *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_shortcut.c:159,1
    - Dst: nhrp_shortcut_delete
      Src: /src/frr/nhrpd/nhrp_shortcut.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 5
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: nhrp_shortcut_do_purge
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - nhrp_shortcut_delete
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_do_purge(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_shortcut.c:168,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_shortcut.c:168,1
    - Dst: route_node_get
      Src: /src/frr/nhrpd/nhrp_shortcut.c:173,1
    - Dst: XCALLOC
      Src: /src/frr/nhrpd/nhrp_shortcut.c:175,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:180,1
    - Dst: route_unlock_node
      Src: /src/frr/nhrpd/nhrp_shortcut.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 186
    functionName: nhrp_shortcut_get
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - PREFIX_FAMILY
    - XCALLOC
    - debugf
    - route_node_get
    - family2afi
    linkageType: ''
    returnType: struct nhrp_shortcut
    signature: struct nhrp_shortcut *nhrp_shortcut_get(struct prefix *p)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_shortcut.c:195,1
    - Dst: nhrp_reqid_free
      Src: /src/frr/nhrpd/nhrp_shortcut.c:206,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_shortcut.c:207,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_shortcut.c:208,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:214,1
    - Dst: nhrp_shortcut_update_binding
      Src: /src/frr/nhrpd/nhrp_shortcut.c:216,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:219,1
    - Dst: prefix2sockunion
      Src: /src/frr/nhrpd/nhrp_shortcut.c:226,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_shortcut.c:227,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:228,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_shortcut.c:235,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:237,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:242,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:245,1
    - Dst: prefix_blen
      Src: /src/frr/nhrpd/nhrp_shortcut.c:251,1
    - Dst: prefix_blen
      Src: /src/frr/nhrpd/nhrp_shortcut.c:253,1
    - Dst: nhrp_route_address
      Src: /src/frr/nhrpd/nhrp_shortcut.c:254,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_shortcut.c:261,1
    - Dst: nhrp_ext_pull
      Src: /src/frr/nhrpd/nhrp_shortcut.c:262,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:263,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:270,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:271,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_shortcut.c:272,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_shortcut.c:277,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:288,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:289,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_shortcut.c:297,1
    - Dst: nhrp_nhs_match_ip
      Src: /src/frr/nhrpd/nhrp_shortcut.c:298,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:299,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:308,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:311,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:313,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_shortcut.c:314,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:316,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_shortcut.c:318,1
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_shortcut.c:320,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:321,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:325,1
    - Dst: sockunion_cmp
      Src: /src/frr/nhrpd/nhrp_shortcut.c:330,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_shortcut.c:331,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:333,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_shortcut.c:335,1
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_shortcut.c:338,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:339,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:343,1
    - Dst: nhrp_shortcut_get
      Src: /src/frr/nhrpd/nhrp_shortcut.c:352,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:355,1
    - Dst: nhrp_shortcut_update_binding
      Src: /src/frr/nhrpd/nhrp_shortcut.c:357,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:360,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:364,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_shortcut.c:367,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:372,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 96
    argCount: 2
    argNames:
    - reqid
    - arg
    argTypes:
    - struct nhrp_reqid*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 188
    functionDepth: 6
    functionLinenumber: 188
    functionLinenumberEnd: 373
    functionName: nhrp_shortcut_recv_resolution_rep
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - htons
    - nhrp_ext_pull
    - container_of
    - sockunion_cmp
    - prefix2sockunion
    - nhrp_cie_pull
    - memset
    - nhrp_peer_get
    - nhrp_shortcut_get
    - nhrp_reqid_free
    - prefix_blen
    - nhrp_nhs_match_ip
    - nhrp_cache_update_binding
    - nhrp_route_address
    - EVENT_OFF
    - nhrp_cache_get
    - event_add_timer
    - nhrp_shortcut_update_binding
    - debugf
    - sockunion_same
    linkageType: ''
    returnType: void
    signature: "void nhrp_shortcut_recv_resolution_rep(struct nhrp_reqid *reqid,\n\t\t\t\t\t
      \     void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_route_address
      Src: /src/frr/nhrpd/nhrp_shortcut.c:386,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_shortcut.c:397,1
    - Dst: nhrp_packet_push
      Src: /src/frr/nhrpd/nhrp_shortcut.c:398,1
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_shortcut.c:400,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:400,1
    - Dst: htonl
      Src: /src/frr/nhrpd/nhrp_shortcut.c:403,1
    - Dst: nhrp_reqid_alloc
      Src: /src/frr/nhrpd/nhrp_shortcut.c:403,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:405,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_shortcut.c:415,1
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_shortcut.c:416,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:416,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_shortcut.c:418,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:420,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:421,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_shortcut.c:422,1
    - Dst: ntohs
      Src: /src/frr/nhrpd/nhrp_shortcut.c:424,1
    - Dst: ntohs
      Src: /src/frr/nhrpd/nhrp_shortcut.c:424,1
    - Dst: nhrp_ext_request
      Src: /src/frr/nhrpd/nhrp_shortcut.c:426,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:429,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_shortcut.c:430,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_shortcut.c:431,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_shortcut.c:432,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_shortcut.c:434,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_shortcut.c:435,1
    - Dst: nhrp_ext_complete
      Src: /src/frr/nhrpd/nhrp_shortcut.c:436,1
    - Dst: nhrp_packet_complete
      Src: /src/frr/nhrpd/nhrp_shortcut.c:439,1
    - Dst: nhrp_peer_send
      Src: /src/frr/nhrpd/nhrp_shortcut.c:441,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_shortcut.c:442,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_shortcut.c:443,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct nhrp_shortcut*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 444
    functionName: nhrp_shortcut_send_resolution_req
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 1
    functionsReached:
    - sockunion_family
    - htons
    - nhrp_peer_send
    - nhrp_ext_complete
    - ntohs
    - nhrp_peer_unref
    - htonl
    - zbuf_alloc
    - nhrp_ext_push
    - sockunion_get_addrlen
    - nhrp_reqid_alloc
    - zbuf_free
    - nhrp_route_address
    - nhrp_packet_complete
    - nhrp_ext_request
    - family2afi
    - nhrp_cie_push
    - debugf
    - nhrp_packet_push
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_send_resolution_req(struct nhrp_shortcut *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2hostprefix
      Src: /src/frr/nhrpd/nhrp_shortcut.c:451,1
    - Dst: nhrp_shortcut_get
      Src: /src/frr/nhrpd/nhrp_shortcut.c:454,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_shortcut.c:457,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_shortcut.c:458,1
    - Dst: nhrp_shortcut_send_resolution_req
      Src: /src/frr/nhrpd/nhrp_shortcut.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - addr
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 446
    functionDepth: 4
    functionLinenumber: 446
    functionLinenumberEnd: 462
    functionName: nhrp_shortcut_initiate
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - sockunion2hostprefix
    - nhrp_shortcut_get
    - EVENT_OFF
    - event_add_timer
    - nhrp_shortcut_send_resolution_req
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_initiate(union sockunion *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init
      Src: /src/frr/nhrpd/nhrp_shortcut.c:466,1
    - Dst: route_table_init
      Src: /src/frr/nhrpd/nhrp_shortcut.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: nhrp_shortcut_init
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 1
    functionsReached:
    - route_table_init
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_finish
      Src: /src/frr/nhrpd/nhrp_shortcut.c:472,1
    - Dst: route_table_finish
      Src: /src/frr/nhrpd/nhrp_shortcut.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 474
    functionName: nhrp_shortcut_terminate
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 1
    functionsReached:
    - route_table_finish
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_terminate(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_table_iter_init
      Src: /src/frr/nhrpd/nhrp_shortcut.c:487,1
    - Dst: route_table_iter_next
      Src: /src/frr/nhrpd/nhrp_shortcut.c:488,1
    - Dst: cb
      Src: /src/frr/nhrpd/nhrp_shortcut.c:490,1
    - Dst: route_table_iter_cleanup
      Src: /src/frr/nhrpd/nhrp_shortcut.c:492,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - afi
    - ctx
    argTypes:
    - afi_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 493
    functionName: nhrp_shortcut_foreach
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - route_table_iter_next
    - route_table_iter_init
    - cb
    - route_table_iter_cleanup
    linkageType: ''
    returnType: void
    signature: "void nhrp_shortcut_foreach(afi_t afi,\n\t\t\t   void (*cb)(struct
      nhrp_shortcut *, void *),\n\t\t\t   void *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_shortcut.c:502,1
    - Dst: nhrp_reqid_free
      Src: /src/frr/nhrpd/nhrp_shortcut.c:503,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_shortcut.c:507,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_shortcut.c:517,1
    - Dst: nhrp_shortcut_check_use
      Src: /src/frr/nhrpd/nhrp_shortcut.c:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - s
    - force
    argTypes:
    - struct nhrp_shortcut*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 522
    functionName: nhrp_shortcut_purge
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 1
    functionsReached:
    - event_add_timer_msec
    - nhrp_shortcut_check_use
    - EVENT_OFF
    - nhrp_reqid_free
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_purge(struct nhrp_shortcut *s, int force)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_match
      Src: /src/frr/nhrpd/nhrp_shortcut.c:528,1
    - Dst: nhrp_shortcut_purge
      Src: /src/frr/nhrpd/nhrp_shortcut.c:529,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - s
    - ctx
    argTypes:
    - struct nhrp_shortcut*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 530
    functionName: nhrp_shortcut_purge_prefix
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 0
    functionsReached:
    - nhrp_shortcut_purge
    - prefix_match
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_purge_prefix(struct nhrp_shortcut *s, void *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_shortcut_foreach
      Src: /src/frr/nhrpd/nhrp_shortcut.c:537,1
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_shortcut.c:537,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/nhrpd/nhrp_shortcut.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - deleted
    argTypes:
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 539
    functionName: nhrp_shortcut_prefix_change
    functionSourceFile: /src/frr/nhrpd/nhrp_shortcut.c
    functionUses: 1
    functionsReached:
    - family2afi
    - PREFIX_FAMILY
    - nhrp_shortcut_foreach
    linkageType: ''
    returnType: void
    signature: void nhrp_shortcut_prefix_change(const struct prefix *p, int deleted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - EN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: ERRNO_IO_RETRY
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRNO_IO_RETRY(EN)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:32,1
    - Dst: memcmp
      Src: /src/frr/nhrpd/vici.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - b
    - str
    argTypes:
    - struct blob*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: blob_equal
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - strlen
    - memcmp
    linkageType: ''
    returnType: int
    signature: int blob_equal(const struct blob *b, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/nhrpd/vici.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - b
    - buf
    - n
    argTypes:
    - struct blob*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: blob2buf
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int blob2buf(const struct blob *b, char *buf, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:64,1
    - Dst: zbuf_put8
      Src: /src/frr/nhrpd/vici.c:65,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/vici.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - obuf
    - str
    argTypes:
    - struct zbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: vici_zbuf_puts
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - zbuf_put8
    - strlen
    - zbuf_put
    linkageType: ''
    returnType: void
    signature: void vici_zbuf_puts(struct zbuf *obuf, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_vc_reset
      Src: /src/frr/nhrpd/vici.c:71,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/vici.c:73,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/vici.c:74,1
    - Dst: zbuf_reset
      Src: /src/frr/nhrpd/vici.c:75,1
    - Dst: zbufq_reset
      Src: /src/frr/nhrpd/vici.c:76,1
    - Dst: close
      Src: /src/frr/nhrpd/vici.c:78,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/vici.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - vici
    argTypes:
    - struct vici_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 81
    functionName: vici_connection_error
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - close
    - zbuf_reset
    - nhrp_vc_reset
    - EVENT_OFF
    - zbufq_reset
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void vici_connection_error(struct vici_conn *vici)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_may_pull
      Src: /src/frr/nhrpd/vici.c:94,1
    - Dst: zbuf_get8
      Src: /src/frr/nhrpd/vici.c:97,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/vici.c:98,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:99,1
    - Dst: parser
      Src: /src/frr/nhrpd/vici.c:101,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:105,1
    - Dst: parser
      Src: /src/frr/nhrpd/vici.c:106,1
    - Dst: zbuf_get8
      Src: /src/frr/nhrpd/vici.c:110,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/vici.c:111,1
    - Dst: zbuf_get_be16
      Src: /src/frr/nhrpd/vici.c:112,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/vici.c:113,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:114,1
    - Dst: parser
      Src: /src/frr/nhrpd/vici.c:116,1
    - Dst: zbuf_get8
      Src: /src/frr/nhrpd/vici.c:119,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/vici.c:120,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:121,1
    - Dst: zbuf_get_be16
      Src: /src/frr/nhrpd/vici.c:125,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/vici.c:126,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:127,1
    - Dst: parser
      Src: /src/frr/nhrpd/vici.c:129,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:132,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 3
    argNames:
    - vici
    - msg
    - ctx
    argTypes:
    - struct vici_conn*
    - struct zbuf*
    - struct vici_message_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 136
    functionName: vici_parse_message
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - zbuf_pulln
    - debugf
    - zbuf_get_be16
    - parser
    - zbuf_may_pull
    - zbuf_get8
    linkageType: ''
    returnType: void
    signature: "void vici_parse_message(struct vici_conn *vici, struct zbuf *msg,\n\t\t\t
      \      void (*parser)(struct vici_message_ctx *ctx,\n\t\t\t\t\t      enum vici_type_t
      msgtype,\n\t\t\t\t\t      const struct blob *key,\n\t\t\t\t\t      const struct
      blob *val),\n\t\t\t       struct vici_message_ctx *ctx)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/vici.c:155,1
    - Dst: nhrp_vc_get
      Src: /src/frr/nhrpd/vici.c:172,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:175,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:177,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:182,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:185,1
    - Dst: nhrp_vc_ipsec_updown
      Src: /src/frr/nhrpd/vici.c:191,1
    - Dst: nhrp_vc_ipsec_updown
      Src: /src/frr/nhrpd/vici.c:197,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:212,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:214,1
    - Dst: str2sockunion
      Src: /src/frr/nhrpd/vici.c:215,1
    - Dst: flog_err
      Src: /src/frr/nhrpd/vici.c:218,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:222,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:225,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:231,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:233,1
    - Dst: str2sockunion
      Src: /src/frr/nhrpd/vici.c:234,1
    - Dst: flog_err
      Src: /src/frr/nhrpd/vici.c:237,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:241,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:244,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:250,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:251,1
    - Dst: strtoul
      Src: /src/frr/nhrpd/vici.c:254,1
    - Dst: strtoul
      Src: /src/frr/nhrpd/vici.c:257,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:261,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:264,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:265,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 78
    argCount: 4
    argNames:
    - ctx
    - msgtype
    - key
    - val
    argTypes:
    - struct vici_message_ctx*
    - enum vici_type_t
    - struct blob*
    - struct blob*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 271
    functionName: parse_sa_message
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - blob2buf
    - strtoul
    - nhrp_vc_get
    - str2sockunion
    - container_of
    - nhrp_vc_ipsec_updown
    - flog_err
    - blob_equal
    linkageType: ''
    returnType: void
    signature: "void parse_sa_message(struct vici_message_ctx *ctx,\n\t\t\t     enum
      vici_type_t msgtype, const struct blob *key,\n\t\t\t     const struct blob *val)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:281,1
    - Dst: blob2buf
      Src: /src/frr/nhrpd/vici.c:282,1
    - Dst: flog_err
      Src: /src/frr/nhrpd/vici.c:283,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - ctx
    - msgtype
    - key
    - val
    argTypes:
    - struct vici_message_ctx*
    - enum vici_type_t
    - struct blob*
    - struct blob*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 294
    functionName: parse_cmd_response
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - blob2buf
    - flog_err
    - blob_equal
    linkageType: ''
    returnType: void
    signature: "void parse_cmd_response(struct vici_message_ctx *ctx,\n\t\t\t       enum
      vici_type_t msgtype, const struct blob *key,\n\t\t\t       const struct blob
      *val)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vici_parse_message
      Src: /src/frr/nhrpd/vici.c:304,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:307,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/vici.c:309,1
    - Dst: vici_submit_request
      Src: /src/frr/nhrpd/vici.c:310,1
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - vici
    - msg
    - event
    argTypes:
    - struct vici_conn*
    - struct zbuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 313
    functionName: vici_recv_sa
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - strlen
    - vici_submit_request
    - snprintf
    - debugf
    - vici_parse_message
    linkageType: ''
    returnType: void
    signature: void vici_recv_sa(struct vici_conn *vici, struct zbuf *msg, int event)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_get_be32
      Src: /src/frr/nhrpd/vici.c:322,1
    - Dst: zbuf_get8
      Src: /src/frr/nhrpd/vici.c:323,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:324,1
    - Dst: zbuf_get8
      Src: /src/frr/nhrpd/vici.c:328,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/vici.c:329,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:331,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:333,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:334,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:335,1
    - Dst: vici_recv_sa
      Src: /src/frr/nhrpd/vici.c:336,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:337,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:338,1
    - Dst: vici_recv_sa
      Src: /src/frr/nhrpd/vici.c:339,1
    - Dst: blob_equal
      Src: /src/frr/nhrpd/vici.c:340,1
    - Dst: vici_recv_sa
      Src: /src/frr/nhrpd/vici.c:341,1
    - Dst: vici_parse_message
      Src: /src/frr/nhrpd/vici.c:344,1
    - Dst: flog_err
      Src: /src/frr/nhrpd/vici.c:348,1
    - Dst: zlog_notice
      Src: /src/frr/nhrpd/vici.c:355,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 2
    argNames:
    - vici
    - msg
    argTypes:
    - struct vici_conn*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 358
    functionName: vici_recv_message
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - zbuf_pulln
    - debugf
    - vici_recv_sa
    - zlog_notice
    - flog_err
    - zbuf_get_be32
    - vici_parse_message
    - zbuf_get8
    - blob_equal
    linkageType: ''
    returnType: void
    signature: void vici_recv_message(struct vici_conn *vici, struct zbuf *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/vici.c:362,1
    - Dst: zbuf_read
      Src: /src/frr/nhrpd/vici.c:366,1
    - Dst: vici_connection_error
      Src: /src/frr/nhrpd/vici.c:367,1
    - Dst: zbuf_may_pull
      Src: /src/frr/nhrpd/vici.c:373,1
    - Dst: zbuf_may_pulln
      Src: /src/frr/nhrpd/vici.c:376,1
    - Dst: ntohl
      Src: /src/frr/nhrpd/vici.c:376,1
    - Dst: zbuf_reset_head
      Src: /src/frr/nhrpd/vici.c:377,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/vici.c:382,1
    - Dst: htonl
      Src: /src/frr/nhrpd/vici.c:382,1
    - Dst: htonl
      Src: /src/frr/nhrpd/vici.c:383,1
    - Dst: vici_recv_message
      Src: /src/frr/nhrpd/vici.c:384,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/vici.c:387,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 360
    functionDepth: 6
    functionLinenumber: 360
    functionLinenumberEnd: 388
    functionName: vici_read
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - htonl
    - zbuf_init
    - event_add_read
    - vici_recv_message
    - vici_connection_error
    - zbuf_read
    - zbuf_reset_head
    - EVENT_ARG
    - zbuf_may_pull
    - zbuf_may_pulln
    - ntohl
    linkageType: ''
    returnType: void
    signature: void vici_read(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/vici.c:392,1
    - Dst: zbufq_write
      Src: /src/frr/nhrpd/vici.c:395,1
    - Dst: event_add_write
      Src: /src/frr/nhrpd/vici.c:397,1
    - Dst: vici_connection_error
      Src: /src/frr/nhrpd/vici.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 390
    functionDepth: 6
    functionLinenumber: 390
    functionLinenumberEnd: 402
    functionName: vici_write
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - zbufq_write
    - vici_connection_error
    - event_add_write
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void vici_write(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/vici.c:407,1
    - Dst: zbufq_queue
      Src: /src/frr/nhrpd/vici.c:411,1
    - Dst: event_add_write
      Src: /src/frr/nhrpd/vici.c:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vici
    - obuf
    argTypes:
    - struct vici_conn*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 413
    functionName: vici_submit
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - zbuf_free
    - event_add_write
    - zbufq_queue
    linkageType: ''
    returnType: void
    signature: void vici_submit(struct vici_conn *vici, struct zbuf *obuf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/vici.c:423,1
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/vici.c:427,1
    - Dst: zbuf_put8
      Src: /src/frr/nhrpd/vici.c:428,1
    - Dst: vici_zbuf_puts
      Src: /src/frr/nhrpd/vici.c:429,1
    - Dst: va_start
      Src: /src/frr/nhrpd/vici.c:431,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/vici.c:432,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/vici.c:432,1
    - Dst: zbuf_put8
      Src: /src/frr/nhrpd/vici.c:433,1
    - Dst: vici_zbuf_puts
      Src: /src/frr/nhrpd/vici.c:436,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/vici.c:436,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/vici.c:437,1
    - Dst: zbuf_put_be16
      Src: /src/frr/nhrpd/vici.c:438,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/vici.c:439,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/vici.c:439,1
    - Dst: va_end
      Src: /src/frr/nhrpd/vici.c:445,1
    - Dst: htonl
      Src: /src/frr/nhrpd/vici.c:446,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/vici.c:446,1
    - Dst: vici_submit
      Src: /src/frr/nhrpd/vici.c:447,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - vici
    - name
    argTypes:
    - struct vici_conn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 448
    functionName: vici_submit_request
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 1
    functionsReached:
    - zbuf_put8
    - vici_zbuf_puts
    - va_arg
    - zbuf_put
    - zbuf_used
    - vici_submit
    - zbuf_put_be16
    - va_start
    - va_end
    - zbuf_push
    - htonl
    - zbuf_alloc
    linkageType: ''
    returnType: void
    signature: void vici_submit_request(struct vici_conn *vici, const char *name,
      ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:456,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/vici.c:457,1
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/vici.c:461,1
    - Dst: zbuf_put8
      Src: /src/frr/nhrpd/vici.c:462,1
    - Dst: zbuf_put8
      Src: /src/frr/nhrpd/vici.c:463,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/vici.c:464,1
    - Dst: htonl
      Src: /src/frr/nhrpd/vici.c:465,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/vici.c:465,1
    - Dst: vici_submit
      Src: /src/frr/nhrpd/vici.c:467,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - vici
    - name
    argTypes:
    - struct vici_conn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 468
    functionName: vici_register_event
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - zbuf_put8
    - strlen
    - zbuf_put
    - zbuf_used
    - vici_submit
    - zbuf_push
    - htonl
    - zbuf_alloc
    linkageType: ''
    returnType: void
    signature: void vici_register_event(struct vici_conn *vici, const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: popen
      Src: /src/frr/nhrpd/vici.c:482,1
    - Dst: flog_err
      Src: /src/frr/nhrpd/vici.c:485,1
    - Dst: fgets
      Src: /src/frr/nhrpd/vici.c:492,1
    - Dst: strchr
      Src: /src/frr/nhrpd/vici.c:493,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/vici.c:496,1
    - Dst: pclose
      Src: /src/frr/nhrpd/vici.c:498,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 501
    functionName: vici_get_charon_filepath
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - snprintf
    - popen
    - flog_err
    - strchr
    - fgets
    - pclose
    linkageType: ''
    returnType: char
    signature: char *vici_get_charon_filepath(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/vici.c:505,1
    - Dst: sock_open_unix
      Src: /src/frr/nhrpd/vici.c:512,1
    - Dst: vici_get_charon_filepath
      Src: /src/frr/nhrpd/vici.c:514,1
    - Dst: sock_open_unix
      Src: /src/frr/nhrpd/vici.c:516,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:519,1
    - Dst: strerror
      Src: /src/frr/nhrpd/vici.c:521,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/vici.c:522,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:527,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/vici.c:529,1
    - Dst: vici_register_event
      Src: /src/frr/nhrpd/vici.c:534,1
    - Dst: vici_register_event
      Src: /src/frr/nhrpd/vici.c:535,1
    - Dst: vici_register_event
      Src: /src/frr/nhrpd/vici.c:536,1
    - Dst: vici_register_event
      Src: /src/frr/nhrpd/vici.c:537,1
    - Dst: vici_submit_request
      Src: /src/frr/nhrpd/vici.c:538,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 503
    functionDepth: 3
    functionLinenumber: 503
    functionLinenumberEnd: 539
    functionName: vici_reconnect
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - vici_get_charon_filepath
    - vici_submit_request
    - debugf
    - strerror
    - event_add_read
    - sock_open_unix
    - EVENT_ARG
    - event_add_timer
    - vici_register_event
    linkageType: ''
    returnType: void
    signature: void vici_reconnect(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/vici.c:548,1
    - Dst: zbufq_init
      Src: /src/frr/nhrpd/vici.c:549,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/vici.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 552
    functionName: vici_init
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 1
    functionsReached:
    - event_add_timer_msec
    - zbuf_init
    - zbufq_init
    linkageType: ''
    returnType: void
    signature: void vici_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 556
    functionName: vici_terminate
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vici_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:562,1
    - Dst: vici_submit_request
      Src: /src/frr/nhrpd/vici.c:563,1
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - profile_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 3
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: vici_terminate_vc_by_profile_name
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 1
    functionsReached:
    - debugf
    - strlen
    - vici_submit_request
    linkageType: ''
    returnType: void
    signature: void vici_terminate_vc_by_profile_name(char *profile_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/nhrpd/vici.c:572,1
    - Dst: debugf
      Src: /src/frr/nhrpd/vici.c:573,1
    - Dst: vici_submit_request
      Src: /src/frr/nhrpd/vici.c:574,1
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ike_id
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 576
    functionName: vici_terminate_vc_by_ike_id
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - debugf
    - strlen
    - vici_submit_request
    - snprintf
    linkageType: ''
    returnType: void
    signature: void vici_terminate_vc_by_ike_id(unsigned int ike_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/vici.c:584,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/vici.c:585,1
    - Dst: vici_submit_request
      Src: /src/frr/nhrpd/vici.c:587,1
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:588,1
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:592,1
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - profile
    - src
    - dst
    - prio
    argTypes:
    - char*
    - union sockunion*
    - union sockunion*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 578
    functionDepth: 3
    functionLinenumber: 578
    functionLinenumberEnd: 594
    functionName: vici_request_vc
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 0
    functionsReached:
    - strlen
    - vici_submit_request
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: "void vici_request_vc(const char *profile, union sockunion *src,\n\t\t
      \    union sockunion *dst, int prio)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/nhrpd/vici.c:601,1
    - Dst: memset
      Src: /src/frr/nhrpd/vici.c:605,1
    - Dst: strlcpy
      Src: /src/frr/nhrpd/vici.c:607,1
    - Dst: connect
      Src: /src/frr/nhrpd/vici.c:609,1
    - Dst: strlen
      Src: /src/frr/nhrpd/vici.c:610,1
    - Dst: close
      Src: /src/frr/nhrpd/vici.c:612,1
    - Dst: fcntl
      Src: /src/frr/nhrpd/vici.c:616,1
    - Dst: fcntl
      Src: /src/frr/nhrpd/vici.c:616,1
    - Dst: close
      Src: /src/frr/nhrpd/vici.c:618,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 623
    functionName: sock_open_unix
    functionSourceFile: /src/frr/nhrpd/vici.c
    functionUses: 1
    functionsReached:
    - strlen
    - memset
    - connect
    - socket
    - strlcpy
    - close
    - fcntl
    linkageType: ''
    returnType: int
    signature: int sock_open_unix(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notifier_active
      Src: /src/frr/nhrpd/nhrp_peer.c:40,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:43,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_peer.c:46,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_peer.c:47,1
    - Dst: hash_release
      Src: /src/frr/nhrpd/nhrp_peer.c:48,1
    - Dst: nhrp_interface_notify_del
      Src: /src/frr/nhrpd/nhrp_peer.c:49,1
    - Dst: nhrp_vc_notify_del
      Src: /src/frr/nhrpd/nhrp_peer.c:50,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_peer.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhrp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 52
    functionName: nhrp_peer_check_delete
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - debugf
    - nhrp_interface_notify_del
    - EVENT_OFF
    - nhrp_vc_notify_del
    - XFREE
    - hash_release
    - notifier_active
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_check_delete(struct nhrp_peer *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_peer.c:56,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_peer.c:64,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_peer.c:65,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_peer.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 68
    functionName: nhrp_peer_notify_up
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - notifier_call
    - nhrp_peer_ref
    - nhrp_peer_unref
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_notify_up(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_peer.c:79,1
    - Dst: notifier_active
      Src: /src/frr/nhrpd/nhrp_peer.c:80,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_peer.c:85,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_peer.c:88,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_peer.c:91,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_peer.c:95,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_peer.c:98,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhrp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 101
    functionName: __nhrp_peer_check
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - nhrp_peer_ref
    - notifier_call
    - event_add_timer_msec
    - nhrp_peer_unref
    - EVENT_OFF
    - notifier_active
    linkageType: ''
    returnType: void
    signature: void __nhrp_peer_check(struct nhrp_peer *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_peer.c:105,1
    - Dst: __nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_peer.c:109,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_peer.c:112,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_peer.c:113,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_peer.c:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - n
    - cmd
    argTypes:
    - struct notifier_block*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 117
    functionName: nhrp_peer_vc_notify
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - nhrp_peer_ref
    - notifier_call
    - container_of
    - __nhrp_peer_check
    - nhrp_peer_unref
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_vc_notify(struct notifier_block *n, unsigned long cmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_peer.c:121,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_peer.c:125,1
    - Dst: __nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_peer.c:129,1
    - Dst: nhrp_vc_get
      Src: /src/frr/nhrpd/nhrp_peer.c:134,1
    - Dst: nhrp_vc_notify_del
      Src: /src/frr/nhrpd/nhrp_peer.c:136,1
    - Dst: nhrp_vc_notify_add
      Src: /src/frr/nhrpd/nhrp_peer.c:138,1
    - Dst: __nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_peer.c:140,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_peer.c:144,1
    - Dst: __nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_peer.c:147,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_peer.c:148,1
    - Dst: notifier_call
      Src: /src/frr/nhrpd/nhrp_peer.c:151,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_peer.c:154,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - n
    - cmd
    argTypes:
    - struct notifier_block*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 155
    functionName: nhrp_peer_ifp_notify
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - nhrp_peer_ref
    - nhrp_vc_get
    - notifier_call
    - container_of
    - nhrp_vc_notify_add
    - __nhrp_peer_check
    - nhrp_peer_unref
    - nhrp_vc_notify_del
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_ifp_notify(struct notifier_block *n, unsigned long cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_hash
      Src: /src/frr/nhrpd/nhrp_peer.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: nhrp_peer_key
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - sockunion_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nhrp_peer_key(const void *peer_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - cache_data
    - key_data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 169
    functionName: nhrp_peer_cmp
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nhrp_peer_cmp(const void *cache_data, const void *key_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/nhrpd/nhrp_peer.c:175,1
    - Dst: NOTIFIER_LIST_INITIALIZER
      Src: /src/frr/nhrpd/nhrp_peer.c:181,1
    - Dst: nhrp_vc_notify_add
      Src: /src/frr/nhrpd/nhrp_peer.c:183,1
    - Dst: nhrp_interface_notify_add
      Src: /src/frr/nhrpd/nhrp_peer.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 188
    functionName: nhrp_peer_create
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - NOTIFIER_LIST_INITIALIZER
    - nhrp_interface_notify_add
    - XMALLOC
    - nhrp_vc_notify_add
    linkageType: ''
    returnType: void
    signature: void *nhrp_peer_create(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_peer_check_delete
      Src: /src/frr/nhrpd/nhrp_peer.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hb_data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 4
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: do_peer_hash_free
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - nhrp_peer_check_delete
    linkageType: ''
    returnType: void
    signature: void do_peer_hash_free(void *hb_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:201,1
    - Dst: hash_clean_and_free
      Src: /src/frr/nhrpd/nhrp_peer.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: nhrp_peer_interface_del
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    - debugf
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_interface_del(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/nhrpd/nhrp_peer.c:215,1
    - Dst: nhrp_vc_get
      Src: /src/frr/nhrpd/nhrp_peer.c:221,1
    - Dst: hash_get
      Src: /src/frr/nhrpd/nhrp_peer.c:228,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_peer.c:229,1
    - Dst: __nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_peer.c:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ifp
    - remote_nbma
    argTypes:
    - struct interface*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 234
    functionName: nhrp_peer_get
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 4
    functionsReached:
    - nhrp_peer_ref
    - nhrp_vc_get
    - hash_create
    - __nhrp_peer_check
    - hash_get
    linkageType: ''
    returnType: struct nhrp_peer
    signature: "struct nhrp_peer *nhrp_peer_get(struct interface *ifp,\n\t\t\t\tconst
      union sockunion *remote_nbma)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhrp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 241
    functionName: nhrp_peer_ref
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: struct nhrp_peer
    signature: struct nhrp_peer *nhrp_peer_ref(struct nhrp_peer *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_peer_check_delete
      Src: /src/frr/nhrpd/nhrp_peer.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhrp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 4
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: nhrp_peer_unref
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 11
    functionsReached:
    - nhrp_peer_check_delete
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_unref(struct nhrp_peer *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_peer.c:253,1
    - Dst: vici_request_vc
      Src: /src/frr/nhrpd/nhrp_peer.c:265,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_peer.c:267,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 272
    functionName: nhrp_peer_request_timeout
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - vici_request_vc
    - event_add_timer
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_request_timeout(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_peer.c:276,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_peer.c:281,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:284,1
    - Dst: vici_request_vc
      Src: /src/frr/nhrpd/nhrp_peer.c:288,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_peer.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 295
    functionName: nhrp_peer_defer_vici_request
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - vici_request_vc
    - debugf
    - EVENT_OFF
    - EVENT_ARG
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_defer_vici_request(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:311,1
    - Dst: vici_request_vc
      Src: /src/frr/nhrpd/nhrp_peer.c:321,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_peer.c:323,1
    - Dst: frr_weak_random
      Src: /src/frr/nhrpd/nhrp_peer.c:329,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:331,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_peer.c:334,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - p
    - establish
    argTypes:
    - struct nhrp_peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 297
    functionDepth: 4
    functionLinenumber: 297
    functionLinenumberEnd: 339
    functionName: nhrp_peer_check
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 5
    functionsReached:
    - sockunion_family
    - frr_weak_random
    - vici_request_vc
    - debugf
    - event_add_timer_msec
    - event_add_timer
    linkageType: ''
    returnType: int
    signature: int nhrp_peer_check(struct nhrp_peer *p, int establish)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_add
      Src: /src/frr/nhrpd/nhrp_peer.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - p
    - n
    - fn
    argTypes:
    - struct nhrp_peer*
    - struct notifier_block*
    - notifier_fn_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 345
    functionName: nhrp_peer_notify_add
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 2
    functionsReached:
    - notifier_add
    linkageType: ''
    returnType: void
    signature: "void nhrp_peer_notify_add(struct nhrp_peer *p, struct notifier_block
      *n,\n\t\t\t  notifier_fn_t fn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifier_del
      Src: /src/frr/nhrpd/nhrp_peer.c:349,1
    - Dst: nhrp_peer_check_delete
      Src: /src/frr/nhrpd/nhrp_peer.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - struct nhrp_peer*
    - struct notifier_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 347
    functionDepth: 4
    functionLinenumber: 347
    functionLinenumberEnd: 351
    functionName: nhrp_peer_notify_del
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 2
    functionsReached:
    - nhrp_peer_check_delete
    - notifier_del
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_notify_del(struct nhrp_peer *p, struct notifier_block
      *n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_packet_debug
      Src: /src/frr/nhrpd/nhrp_peer.c:355,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:360,1
    - Dst: os_sendmsg
      Src: /src/frr/nhrpd/nhrp_peer.c:363,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:363,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/nhrp_peer.c:364,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_peer.c:365,1
    - Dst: zbuf_reset
      Src: /src/frr/nhrpd/nhrp_peer.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - p
    - zb
    argTypes:
    - struct nhrp_peer*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 367
    functionName: nhrp_peer_send
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 1
    functionsReached:
    - zbuf_used
    - sockunion_get_addr
    - debugf
    - sockunion_get_addrlen
    - zbuf_reset
    - nhrp_packet_debug
    - os_sendmsg
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_send(struct nhrp_peer *p, struct zbuf *zb)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:381,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:383,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_peer.c:387,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:387,1
    - Dst: zbuf_copy_peek
      Src: /src/frr/nhrpd/nhrp_peer.c:389,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:390,1
    - Dst: nhrp_ext_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:391,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:392,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:401,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:404,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:406,1
    - Dst: sockunion_cmp
      Src: /src/frr/nhrpd/nhrp_peer.c:410,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:411,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:419,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 3
    argNames:
    - pp
    - proto
    - cie_nbma
    argTypes:
    - struct nhrp_packet_parser*
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 421
    functionName: nhrp_process_nat_extension
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - nhrp_cie_pull
    - nhrp_ext_pull
    - zbuf_used
    - htons
    - debugf
    - zbuf_free
    - sockunion_cmp
    - zbuf_copy_peek
    - zbuf_alloc
    linkageType: ''
    returnType: void
    signature: "void nhrp_process_nat_extension(struct nhrp_packet_parser *pp,\n\t\t\t\t
      \      union sockunion *proto,\n\t\t\t\t       union sockunion *cie_nbma)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:439,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:446,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:451,1
    - Dst: nhrp_route_address
      Src: /src/frr/nhrpd/nhrp_peer.c:453,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_peer.c:458,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:459,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:460,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:462,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:466,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:474,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:485,1
    - Dst: nhrp_process_nat_extension
      Src: /src/frr/nhrpd/nhrp_peer.c:490,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:492,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:497,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_peer.c:501,1
    - Dst: nhrp_nhs_match_ip
      Src: /src/frr/nhrpd/nhrp_peer.c:503,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:506,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:512,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:514,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:519,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:524,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:525,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_peer.c:531,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:533,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:539,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_peer.c:542,1
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_peer.c:544,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:544,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_peer.c:554,1
    - Dst: nhrp_packet_push
      Src: /src/frr/nhrpd/nhrp_peer.c:555,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:560,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:562,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_peer.c:567,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:569,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:570,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_peer.c:575,1
    - Dst: nhrp_ext_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:578,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:579,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_peer.c:581,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:585,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_peer.c:586,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_peer.c:592,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:595,1
    - Dst: nhrp_ext_complete
      Src: /src/frr/nhrpd/nhrp_peer.c:596,1
    - Dst: nhrp_ext_reply
      Src: /src/frr/nhrpd/nhrp_peer.c:600,1
    - Dst: nhrp_packet_complete
      Src: /src/frr/nhrpd/nhrp_peer.c:605,1
    - Dst: nhrp_peer_send
      Src: /src/frr/nhrpd/nhrp_peer.c:606,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_peer.c:608,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:609,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 103
    argCount: 1
    argNames:
    - pp
    argTypes:
    - struct nhrp_packet_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 423
    functionDepth: 6
    functionLinenumber: 423
    functionLinenumberEnd: 610
    functionName: nhrp_handle_resolution_req
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - nhrp_process_nat_extension
    - sockunion_family
    - zbuf_used
    - htons
    - nhrp_ext_pull
    - nhrp_peer_send
    - nhrp_ext_complete
    - nhrp_peer_unref
    - zbuf_alloc
    - nhrp_cie_pull
    - nhrp_peer_get
    - nhrp_ext_push
    - sockunion_get_addrlen
    - nhrp_ext_reply
    - nhrp_nhs_match_ip
    - nhrp_cache_update_binding
    - zbuf_free
    - nhrp_route_address
    - nhrp_packet_complete
    - nhrp_cache_get
    - nhrp_cie_push
    - debugf
    - sockunion_same
    - nhrp_packet_push
    linkageType: ''
    returnType: void
    signature: void nhrp_handle_resolution_req(struct nhrp_packet_parser *pp)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:626,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_peer.c:627,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_peer.c:629,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_peer.c:633,1
    - Dst: nhrp_packet_push
      Src: /src/frr/nhrpd/nhrp_peer.c:634,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:638,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:643,1
    - Dst: zbuf_pushn
      Src: /src/frr/nhrpd/nhrp_peer.c:644,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/nhrp_peer.c:647,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_peer.c:647,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/nhrp_peer.c:648,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:650,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:658,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:669,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:672,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:678,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:684,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_peer.c:688,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_peer.c:694,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_peer.c:695,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:696,1
    - Dst: nhrp_ext_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:706,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:707,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_peer.c:709,1
    - Dst: zbuf_copy
      Src: /src/frr/nhrpd/nhrp_peer.c:713,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:713,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_peer.c:715,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_peer.c:719,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:721,1
    - Dst: nhrp_ext_complete
      Src: /src/frr/nhrpd/nhrp_peer.c:723,1
    - Dst: nhrp_ext_reply
      Src: /src/frr/nhrpd/nhrp_peer.c:726,1
    - Dst: nhrp_packet_complete
      Src: /src/frr/nhrpd/nhrp_peer.c:732,1
    - Dst: nhrp_peer_send
      Src: /src/frr/nhrpd/nhrp_peer.c:733,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:735,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 75
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhrp_packet_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 612
    functionDepth: 6
    functionLinenumber: 612
    functionLinenumberEnd: 736
    functionName: nhrp_handle_registration_request
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - htons
    - zbuf_used
    - nhrp_ext_pull
    - nhrp_peer_send
    - nhrp_ext_complete
    - zbuf_alloc
    - zbuf_pushn
    - nhrp_peer_ref
    - nhrp_cie_pull
    - nhrp_ext_push
    - zbuf_init
    - sockunion_get_addrlen
    - zbuf_copy
    - nhrp_ext_reply
    - zbuf_pulln
    - nhrp_cache_update_binding
    - zbuf_free
    - nhrp_packet_complete
    - nhrp_cache_get
    - memcpy
    - nhrp_cie_push
    - debugf
    - sockunion_same
    - nhrp_packet_push
    linkageType: ''
    returnType: void
    signature: void nhrp_handle_registration_request(struct nhrp_packet_parser *p)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:743,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_peer.c:746,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_peer.c:750,1
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:756,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_peer.c:759,1
    - Dst: sockunion_set
      Src: /src/frr/nhrpd/nhrp_peer.c:763,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - zb
    - protocol_type
    - src
    - dst
    argTypes:
    - struct zbuf*
    - uint16_t
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 772
    functionName: parse_ether_packet
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - zbuf_pull
    - sockunion_set
    linkageType: ''
    returnType: int
    signature: "int parse_ether_packet(struct zbuf *zb, uint16_t protocol_type,\n\t\t\t
      \     union sockunion *src, union sockunion *dst)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parse_ether_packet
      Src: /src/frr/nhrpd/nhrp_peer.c:788,1
    - Dst: nhrp_route_address
      Src: /src/frr/nhrpd/nhrp_peer.c:791,1
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_peer.c:794,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:794,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:796,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:802,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_peer.c:807,1
    - Dst: nhrp_packet_push
      Src: /src/frr/nhrpd/nhrp_peer.c:808,1
    - Dst: zbuf_copy
      Src: /src/frr/nhrpd/nhrp_peer.c:813,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:813,1
    - Dst: nhrp_packet_complete
      Src: /src/frr/nhrpd/nhrp_peer.c:814,1
    - Dst: nhrp_peer_send
      Src: /src/frr/nhrpd/nhrp_peer.c:815,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_peer.c:816,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:817,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - ifp
    - protocol_type
    - pkt
    argTypes:
    - struct interface*
    - uint16_t
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 774
    functionDepth: 5
    functionLinenumber: 774
    functionLinenumberEnd: 818
    functionName: nhrp_peer_send_indication
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - parse_ether_packet
    - zbuf_used
    - debugf
    - nhrp_peer_send
    - zbuf_free
    - nhrp_peer_unref
    - nhrp_route_address
    - nhrp_packet_complete
    - family2afi
    - nhrp_packet_push
    - zbuf_alloc
    - zbuf_copy
    linkageType: ''
    returnType: void
    signature: "void nhrp_peer_send_indication(struct interface *ifp, uint16_t protocol_type,\n\t\t\t
      \      struct zbuf *pkt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_packet_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:827,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:831,1
    - Dst: nhrp_reqid_lookup
      Src: /src/frr/nhrpd/nhrp_peer.c:835,1
    - Dst: htonl
      Src: /src/frr/nhrpd/nhrp_peer.c:835,1
    - Dst: struct nhrp_reqid*::cb
      Src: /src/frr/nhrpd/nhrp_peer.c:837,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pp
    argTypes:
    - struct nhrp_packet_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 820
    functionDepth: 2
    functionLinenumber: 820
    functionLinenumberEnd: 838
    functionName: nhrp_handle_error_ind
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - nhrp_packet_pull
    - debugf
    - nhrp_reqid_lookup
    - struct nhrp_reqid*::cb
    - htonl
    linkageType: ''
    returnType: void
    signature: void nhrp_handle_error_ind(struct nhrp_packet_parser *pp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_ether_packet
      Src: /src/frr/nhrpd/nhrp_peer.c:844,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:844,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:848,1
    - Dst: nhrp_shortcut_initiate
      Src: /src/frr/nhrpd/nhrp_peer.c:855,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhrp_packet_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 840
    functionDepth: 5
    functionLinenumber: 840
    functionLinenumberEnd: 856
    functionName: nhrp_handle_traffic_ind
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - debugf
    - nhrp_shortcut_initiate
    - parse_ether_packet
    - htons
    linkageType: ''
    returnType: void
    signature: void nhrp_handle_traffic_ind(struct nhrp_packet_parser *p)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_peer.c:935,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_peer.c:936,1
    - Dst: nhrp_packet_push
      Src: /src/frr/nhrpd/nhrp_peer.c:938,1
    - Dst: zbuf_copy_peek
      Src: /src/frr/nhrpd/nhrp_peer.c:945,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:945,1
    - Dst: zbuf_copy
      Src: /src/frr/nhrpd/nhrp_peer.c:946,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:946,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:949,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:950,1
    - Dst: nhrp_ext_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:953,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:954,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:955,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_peer.c:960,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:960,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_peer.c:967,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:971,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_peer.c:974,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_peer.c:979,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:983,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:984,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:997,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:1002,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:1008,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:1016,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_peer.c:1018,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:1022,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_peer.c:1025,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_peer.c:1027,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:1037,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_peer.c:1044,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:1048,1
    - Dst: zbuf_copy
      Src: /src/frr/nhrpd/nhrp_peer.c:1059,1
    - Dst: nhrp_ext_complete
      Src: /src/frr/nhrpd/nhrp_peer.c:1062,1
    - Dst: nhrp_packet_complete
      Src: /src/frr/nhrpd/nhrp_peer.c:1065,1
    - Dst: nhrp_peer_send
      Src: /src/frr/nhrpd/nhrp_peer.c:1066,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:1067,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:1068,1
    - Dst: nhrp_packet_debug
      Src: /src/frr/nhrpd/nhrp_peer.c:1071,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:1072,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:1073,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 92
    argCount: 2
    argNames:
    - p
    - pp
    argTypes:
    - struct nhrp_peer*
    - struct nhrp_packet_parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 1074
    functionName: nhrp_peer_forward
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - zbuf_used
    - nhrp_ext_pull
    - htons
    - zbuf_put
    - nhrp_peer_send
    - nhrp_ext_complete
    - nhrp_packet_debug
    - zbuf_alloc
    - nhrp_cie_pull
    - nhrp_ext_push
    - zbuf_copy
    - zbuf_free
    - nhrp_packet_complete
    - nhrp_cache_get
    - nhrp_cie_push
    - debugf
    - sockunion_same
    - nhrp_packet_push
    - zbuf_copy_peek
    linkageType: ''
    returnType: void
    signature: "void nhrp_peer_forward(struct nhrp_peer *p,\n\t\t\t      struct nhrp_packet_parser
      *pp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: likely
      Src: /src/frr/nhrpd/nhrp_peer.c:1083,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/nhrp_peer.c:1086,1
    - Dst: nhrp_packet_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:1087,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:1090,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - zb
    - dir
    argTypes:
    - struct zbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1076
    functionDepth: 2
    functionLinenumber: 1076
    functionLinenumberEnd: 1095
    functionName: nhrp_packet_debug
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 2
    functionsReached:
    - zbuf_init
    - debugf
    - nhrp_packet_pull
    - likely
    linkageType: ''
    returnType: void
    signature: void nhrp_packet_debug(struct zbuf *zb, const char *dir)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - proto
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1097
    functionDepth: 0
    functionLinenumber: 1097
    functionLinenumberEnd: 1106
    functionName: proto2afi
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int proto2afi(uint16_t proto)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_peer.c:1128,1
    - Dst: nhrp_packet_calculate_checksum
      Src: /src/frr/nhrpd/nhrp_peer.c:1136,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:1136,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:1141,1
    - Dst: nhrp_packet_pull
      Src: /src/frr/nhrpd/nhrp_peer.c:1142,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:1153,1
    - Dst: proto2afi
      Src: /src/frr/nhrpd/nhrp_peer.c:1154,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:1154,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:1158,1
    - Dst: zlog_info
      Src: /src/frr/nhrpd/nhrp_peer.c:1159,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:1162,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:1163,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_peer.c:1168,1
    - Dst: assert
      Src: /src/frr/nhrpd/nhrp_peer.c:1170,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:1182,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/nhrp_peer.c:1184,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_peer.c:1184,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_peer.c:1185,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/nhrp_peer.c:1186,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_peer.c:1186,1
    - Dst: nhrp_packet_debug
      Src: /src/frr/nhrpd/nhrp_peer.c:1193,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_peer.c:1203,1
    - Dst: nhrp_route_address
      Src: /src/frr/nhrpd/nhrp_peer.c:1206,1
    - Dst: nhrp_packet_debug
      Src: /src/frr/nhrpd/nhrp_peer.c:1211,1
    - Dst: nhrp_reqid_lookup
      Src: /src/frr/nhrpd/nhrp_peer.c:1213,1
    - Dst: htonl
      Src: /src/frr/nhrpd/nhrp_peer.c:1214,1
    - Dst: struct nhrp_reqid*::cb
      Src: /src/frr/nhrpd/nhrp_peer.c:1216,1
    - Dst: nhrp_packet_debug
      Src: /src/frr/nhrpd/nhrp_peer.c:1219,1
    - Dst: handler
      Src: /src/frr/nhrpd/nhrp_peer.c:1226,1
    - Dst: nhrp_peer_forward
      Src: /src/frr/nhrpd/nhrp_peer.c:1231,1
    - Dst: zlog_info
      Src: /src/frr/nhrpd/nhrp_peer.c:1239,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_peer.c:1242,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_peer.c:1243,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 93
    argCount: 2
    argNames:
    - p
    - zb
    argTypes:
    - struct nhrp_peer*
    - struct zbuf*
    assertStmts:
    - condition: (zb->head > zb->buf)
      pos:
        line_end: 1169
        line_start: 1169
        source_file: /src/frr/nhrpd/nhrp_peer.c
    constantsTouched: []
    func_position:
      end: 1244
      start: 1114
    functionDepth: 5
    functionLinenumber: 1114
    functionLinenumberEnd: 1244
    functionName: nhrp_peer_recv
    functionSourceFile: /src/frr/nhrpd/nhrp_peer.c
    functionUses: 1
    functionsReached:
    - nhrp_packet_pull
    - htons
    - zbuf_used
    - nhrp_reqid_lookup
    - nhrp_peer_unref
    - nhrp_packet_debug
    - htonl
    - zbuf_init
    - proto2afi
    - assert
    - zlog_info
    - zbuf_pulln
    - zbuf_free
    - nhrp_route_address
    - nhrp_packet_calculate_checksum
    - debugf
    - sockunion_same
    - handler
    - struct nhrp_reqid*::cb
    - nhrp_peer_forward
    linkageType: ''
    returnType: void
    signature: void nhrp_peer_recv(struct nhrp_peer *p, struct zbuf *zb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/nhrpd/linux.c:25,1
    - Dst: htons
      Src: /src/frr/nhrpd/linux.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: os_socket
    functionSourceFile: /src/frr/nhrpd/linux.c
    functionUses: 1
    functionsReached:
    - socket
    - htons
    linkageType: ''
    returnType: int
    signature: int os_socket(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/nhrpd/linux.c:47,1
    - Dst: htons
      Src: /src/frr/nhrpd/linux.c:49,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/linux.c:52,1
    - Dst: os_socket
      Src: /src/frr/nhrpd/linux.c:54,1
    - Dst: sendmsg
      Src: /src/frr/nhrpd/linux.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 6
    argNames:
    - buf
    - len
    - ifindex
    - addr
    - addrlen
    - protocol
    argTypes:
    - uint8_t*
    - size_t
    - int
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 63
    functionName: os_sendmsg
    functionSourceFile: /src/frr/nhrpd/linux.c
    functionUses: 2
    functionsReached:
    - memset
    - htons
    - os_socket
    - sendmsg
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int os_sendmsg(const uint8_t *buf, size_t len, int ifindex, const
      uint8_t *addr,\n\t       size_t addrlen, uint16_t protocol)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: recvmsg
      Src: /src/frr/nhrpd/linux.c:80,1
    - Dst: memcmp
      Src: /src/frr/nhrpd/linux.c:88,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/linux.c:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - buf
    - len
    - ifindex
    - addr
    - addrlen
    argTypes:
    - uint8_t*
    - size_t*
    - int*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 97
    functionName: os_recvmsg
    functionSourceFile: /src/frr/nhrpd/linux.c
    functionUses: 1
    functionsReached:
    - memcpy
    - recvmsg
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int os_recvmsg(uint8_t *buf, size_t *len, int *ifindex, uint8_t *addr,\n\t
      \      size_t *addrlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/nhrpd/linux.c:103,1
    - Dst: ioctl
      Src: /src/frr/nhrpd/linux.c:104,1
    - Dst: ioctl
      Src: /src/frr/nhrpd/linux.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - iface
    - 'on'
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 116
    functionName: linux_configure_arp
    functionSourceFile: /src/frr/nhrpd/linux.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - ioctl
    linkageType: ''
    returnType: int
    signature: int linux_configure_arp(const char *iface, int on)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/nhrpd/linux.c:123,1
    - Dst: open
      Src: /src/frr/nhrpd/linux.c:125,1
    - Dst: write
      Src: /src/frr/nhrpd/linux.c:128,1
    - Dst: close
      Src: /src/frr/nhrpd/linux.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - iface
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 133
    functionName: linux_icmp_redirect_off
    functionSourceFile: /src/frr/nhrpd/linux.c
    functionUses: 0
    functionsReached:
    - close
    - open
    - write
    - snprintf
    linkageType: ''
    returnType: int
    signature: int linux_icmp_redirect_off(const char *iface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linux_icmp_redirect_off
      Src: /src/frr/nhrpd/linux.c:141,1
    - Dst: linux_icmp_redirect_off
      Src: /src/frr/nhrpd/linux.c:142,1
    - Dst: linux_configure_arp
      Src: /src/frr/nhrpd/linux.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ifindex
    - ifname
    - af
    argTypes:
    - unsigned int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 148
    functionName: os_configure_dmvpn
    functionSourceFile: /src/frr/nhrpd/linux.c
    functionUses: 1
    functionsReached:
    - linux_configure_arp
    - linux_icmp_redirect_off
    linkageType: ''
    returnType: int
    signature: int os_configure_dmvpn(unsigned int ifindex, const char *ifname, int
      af)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: zbuf_size
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t zbuf_size(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: zbuf_used
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t zbuf_used(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: zbuf_tailroom
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t zbuf_tailroom(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: zbuf_headroom
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t zbuf_headroom(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: zbuf_set_rerror
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zbuf_set_rerror(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: zbuf_set_werror
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zbuf_set_werror(struct zbuf *zb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/zbuf.h:78,1
    - Dst: zbuf_set_rerror
      Src: /src/frr/nhrpd/zbuf.h:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - zb
    - size
    - error
    argTypes:
    - struct zbuf*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: __zbuf_pull
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached:
    - zbuf_set_rerror
    - zbuf_used
    linkageType: ''
    returnType: void
    signature: void *__zbuf_pull(struct zbuf *zb, size_t size, int error)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: zbuf_pull
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_pull(zb, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: zbuf_pulln
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_pulln(zb, sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: zbuf_may_pull
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_may_pull(zb, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: zbuf_may_pulln
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_may_pulln(zb, sz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/zbuf.h:96,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/zbuf.h:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - zb
    - dst
    - len
    argTypes:
    - struct zbuf*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: zbuf_get
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached:
    - zbuf_pulln
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zbuf_get(struct zbuf *zb, void *dst, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/zbuf.h:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 107
    functionName: zbuf_get8
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 2
    functionsReached:
    - zbuf_pull
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t zbuf_get8(struct zbuf *zb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/zbuf.h:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 119
    functionName: zbuf_get32
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached:
    - zbuf_pull
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zbuf_get32(struct zbuf *zb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pull
      Src: /src/frr/nhrpd/zbuf.h:127,1
    - Dst: be16toh
      Src: /src/frr/nhrpd/zbuf.h:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 131
    functionName: zbuf_get_be16
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 1
    functionsReached:
    - zbuf_pull
    - be16toh
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t zbuf_get_be16(struct zbuf *zb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be32toh
      Src: /src/frr/nhrpd/zbuf.h:135,1
    - Dst: zbuf_get32
      Src: /src/frr/nhrpd/zbuf.h:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zb
    argTypes:
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: zbuf_get_be32
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 1
    functionsReached:
    - be32toh
    - zbuf_get32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zbuf_get_be32(struct zbuf *zb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_tailroom
      Src: /src/frr/nhrpd/zbuf.h:141,1
    - Dst: zbuf_set_werror
      Src: /src/frr/nhrpd/zbuf.h:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - zb
    - size
    - error
    argTypes:
    - struct zbuf*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 148
    functionName: __zbuf_push
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached:
    - zbuf_set_werror
    - zbuf_tailroom
    linkageType: ''
    returnType: void
    signature: void *__zbuf_push(struct zbuf *zb, size_t size, int error)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: zbuf_push
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_push(zb, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: zbuf_pushn
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_pushn(zb, sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: zbuf_may_push
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_may_push(zb, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - zb
    - ','
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    functionName: zbuf_may_pushn
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zbuf_may_pushn(zb, sz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pushn
      Src: /src/frr/nhrpd/zbuf.h:157,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/zbuf.h:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - zb
    - src
    - len
    argTypes:
    - struct zbuf*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 160
    functionName: zbuf_put
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 6
    functionsReached:
    - zbuf_pushn
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zbuf_put(struct zbuf *zb, const void *src, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/zbuf.h:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - zb
    - val
    argTypes:
    - struct zbuf*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 167
    functionName: zbuf_put8
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 3
    functionsReached:
    - zbuf_push
    linkageType: ''
    returnType: void
    signature: void zbuf_put8(struct zbuf *zb, uint8_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/zbuf.h:175,1
    - Dst: htobe16
      Src: /src/frr/nhrpd/zbuf.h:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - zb
    - val
    argTypes:
    - struct zbuf*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 178
    functionName: zbuf_put_be16
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 1
    functionsReached:
    - htobe16
    - zbuf_push
    linkageType: ''
    returnType: void
    signature: void zbuf_put_be16(struct zbuf *zb, uint16_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_push
      Src: /src/frr/nhrpd/zbuf.h:186,1
    - Dst: htobe32
      Src: /src/frr/nhrpd/zbuf.h:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - zb
    - val
    argTypes:
    - struct zbuf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 189
    functionName: zbuf_put_be32
    functionSourceFile: /src/frr/nhrpd/zbuf.h
    functionUses: 0
    functionsReached:
    - zbuf_push
    - htobe32
    linkageType: ''
    returnType: void
    signature: void zbuf_put_be32(struct zbuf *zb, uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_send_zebra_nbr
      Src: /src/frr/nhrpd/netlink_arp.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ifp
    - proto
    - nbma
    argTypes:
    - struct interface*
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: netlink_update_binding
    functionSourceFile: /src/frr/nhrpd/netlink_arp.c
    functionUses: 2
    functionsReached:
    - nhrp_send_zebra_nbr
    linkageType: ''
    returnType: void
    signature: "void netlink_update_binding(struct interface *ifp, union sockunion
      *proto,\n\t\t\t    union sockunion *nbma)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/netlink_arp.c:39,1
    - Dst: znl_nlmsg_push
      Src: /src/frr/nhrpd/netlink_arp.c:41,1
    - Dst: znl_push
      Src: /src/frr/nhrpd/netlink_arp.c:43,1
    - Dst: htons
      Src: /src/frr/nhrpd/netlink_arp.c:47,1
    - Dst: znl_rta_push
      Src: /src/frr/nhrpd/netlink_arp.c:50,1
    - Dst: znl_nlmsg_complete
      Src: /src/frr/nhrpd/netlink_arp.c:51,1
    - Dst: zbuf_send
      Src: /src/frr/nhrpd/netlink_arp.c:53,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/netlink_arp.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - fd
    - group
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 55
    functionName: netlink_log_register
    functionSourceFile: /src/frr/nhrpd/netlink_arp.c
    functionUses: 0
    functionsReached:
    - znl_nlmsg_push
    - htons
    - zbuf_free
    - zbuf_send
    - znl_rta_push
    - znl_push
    - zbuf_alloc
    - znl_nlmsg_complete
    linkageType: ''
    returnType: void
    signature: void netlink_log_register(int fd, int group)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: znl_pull
      Src: /src/frr/nhrpd/netlink_arp.c:66,1
    - Dst: memset
      Src: /src/frr/nhrpd/netlink_arp.c:70,1
    - Dst: znl_rta_pull
      Src: /src/frr/nhrpd/netlink_arp.c:71,1
    - Dst: znl_pull
      Src: /src/frr/nhrpd/netlink_arp.c:74,1
    - Dst: znl_pull
      Src: /src/frr/nhrpd/netlink_arp.c:77,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/netlink_arp.c:89,1
    - Dst: if_lookup_by_index
      Src: /src/frr/nhrpd/netlink_arp.c:92,1
    - Dst: htonl
      Src: /src/frr/nhrpd/netlink_arp.c:92,1
    - Dst: nhrp_peer_send_indication
      Src: /src/frr/nhrpd/netlink_arp.c:96,1
    - Dst: htons
      Src: /src/frr/nhrpd/netlink_arp.c:96,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - msg
    - zb
    argTypes:
    - struct nlmsghdr*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 57
    functionDepth: 6
    functionLinenumber: 57
    functionLinenumberEnd: 97
    functionName: netlink_log_indication
    functionSourceFile: /src/frr/nhrpd/netlink_arp.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - nhrp_peer_send_indication
    - memset
    - zbuf_used
    - htons
    - znl_pull
    - znl_rta_pull
    - htonl
    linkageType: ''
    returnType: void
    signature: void netlink_log_indication(struct nlmsghdr *msg, struct zbuf *zb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/nhrpd/netlink_arp.c:102,1
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/netlink_arp.c:107,1
    - Dst: zbuf_recv
      Src: /src/frr/nhrpd/netlink_arp.c:108,1
    - Dst: znl_nlmsg_pull
      Src: /src/frr/nhrpd/netlink_arp.c:109,1
    - Dst: debugf
      Src: /src/frr/nhrpd/netlink_arp.c:110,1
    - Dst: netlink_log_indication
      Src: /src/frr/nhrpd/netlink_arp.c:115,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/netlink_arp.c:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 99
    functionDepth: 7
    functionLinenumber: 99
    functionLinenumberEnd: 123
    functionName: netlink_log_recv
    functionSourceFile: /src/frr/nhrpd/netlink_arp.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - zbuf_init
    - debugf
    - znl_nlmsg_pull
    - zbuf_recv
    - event_add_read
    - netlink_log_indication
    linkageType: ''
    returnType: void
    signature: void netlink_log_recv(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/nhrpd/netlink_arp.c:128,1
    - Dst: close
      Src: /src/frr/nhrpd/netlink_arp.c:129,1
    - Dst: znl_open
      Src: /src/frr/nhrpd/netlink_arp.c:134,1
    - Dst: netlink_log_register
      Src: /src/frr/nhrpd/netlink_arp.c:138,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/netlink_arp.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - nlgroup
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 142
    functionName: netlink_set_nflog_group
    functionSourceFile: /src/frr/nhrpd/netlink_arp.c
    functionUses: 0
    functionsReached:
    - event_cancel
    - close
    - znl_open
    - netlink_log_register
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void netlink_set_nflog_group(int nlgroup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zclient_neigh_ip_decode
      Src: /src/frr/nhrpd/netlink_arp.c:152,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/netlink_arp.c:155,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/netlink_arp.c:156,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/netlink_arp.c:156,1
    - Dst: family2addrsize
      Src: /src/frr/nhrpd/netlink_arp.c:157,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/netlink_arp.c:159,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/netlink_arp.c:161,1
    - Dst: sockunion_get_addr
      Src: /src/frr/nhrpd/netlink_arp.c:161,1
    - Dst: family2addrsize
      Src: /src/frr/nhrpd/netlink_arp.c:163,1
    - Dst: if_lookup_by_index
      Src: /src/frr/nhrpd/netlink_arp.c:165,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/netlink_arp.c:170,1
    - Dst: debugf
      Src: /src/frr/nhrpd/netlink_arp.c:173,1
    - Dst: nhrp_cache_set_used
      Src: /src/frr/nhrpd/netlink_arp.c:182,1
    - Dst: debugf
      Src: /src/frr/nhrpd/netlink_arp.c:183,1
    - Dst: netlink_update_binding
      Src: /src/frr/nhrpd/netlink_arp.c:190,1
    - Dst: nhrp_cache_set_used
      Src: /src/frr/nhrpd/netlink_arp.c:195,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 198
    functionName: nhrp_neighbor_operation
    functionSourceFile: /src/frr/nhrpd/netlink_arp.c
    functionUses: 0
    functionsReached:
    - zclient_neigh_ip_decode
    - sockunion_family
    - if_lookup_by_index
    - sockunion_get_addr
    - debugf
    - netlink_update_binding
    - nhrp_cache_get
    - family2addrsize
    - nhrp_cache_set_used
    - memcpy
    linkageType: ''
    returnType: int
    signature: int nhrp_neighbor_operation(ZAPI_CALLBACK_ARGS)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_nhs.c:23,1
    - Dst: nhrp_reqid_free
      Src: /src/frr/nhrpd/nhrp_nhs.c:36,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:39,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:43,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_nhs.c:46,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:48,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:51,1
    - Dst: ntohs
      Src: /src/frr/nhrpd/nhrp_nhs.c:57,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:58,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:65,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:66,1
    - Dst: nhrp_ext_pull
      Src: /src/frr/nhrpd/nhrp_nhs.c:67,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_nhs.c:68,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_nhs.c:71,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_nhs.c:72,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:75,1
    - Dst: nhrp_cie_pull
      Src: /src/frr/nhrpd/nhrp_nhs.c:82,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_nhs.c:91,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_nhs.c:95,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_nhs.c:99,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_nhs.c:101,1
    - Dst: nhrp_peer_ref
      Src: /src/frr/nhrpd/nhrp_nhs.c:102,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - reqid
    - arg
    argTypes:
    - struct nhrp_reqid*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 19
    functionDepth: 6
    functionLinenumber: 19
    functionLinenumberEnd: 104
    functionName: nhrp_reg_reply
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - nhrp_peer_ref
    - nhrp_cie_pull
    - nhrp_ext_pull
    - htons
    - debugf
    - nhrp_cache_update_binding
    - container_of
    - nhrp_reqid_free
    - ntohs
    - EVENT_OFF
    - nhrp_cache_get
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void nhrp_reg_reply(struct nhrp_reqid *reqid, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_nhs.c:108,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:112,1
    - Dst: nhrp_reqid_free
      Src: /src/frr/nhrpd/nhrp_nhs.c:113,1
    - Dst: nhrp_cache_get
      Src: /src/frr/nhrpd/nhrp_nhs.c:114,1
    - Dst: nhrp_cache_update_binding
      Src: /src/frr/nhrpd/nhrp_nhs.c:116,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:118,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:128,1
    - Dst: vici_terminate_vc_by_ike_id
      Src: /src/frr/nhrpd/nhrp_nhs.c:131,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_nhs.c:136,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 106
    functionDepth: 6
    functionLinenumber: 106
    functionLinenumberEnd: 137
    functionName: nhrp_reg_timeout
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - debugf
    - nhrp_cache_update_binding
    - vici_terminate_vc_by_ike_id
    - nhrp_reqid_free
    - event_add_timer_msec
    - nhrp_cache_get
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_reg_timeout(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_nhs.c:142,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:149,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_nhs.c:151,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_nhs.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - n
    - cmd
    argTypes:
    - struct notifier_block*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 156
    functionName: nhrp_reg_peer_notify
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - debugf
    - EVENT_OFF
    - container_of
    linkageType: ''
    returnType: void
    signature: void nhrp_reg_peer_notify(struct notifier_block *n, unsigned long cmd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_nhs.c:160,1
    - Dst: nhrp_peer_check
      Src: /src/frr/nhrpd/nhrp_nhs.c:171,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:172,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_nhs.c:174,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_nhs.c:179,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:184,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:187,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:191,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_nhs.c:194,1
    - Dst: nhrp_packet_push
      Src: /src/frr/nhrpd/nhrp_nhs.c:195,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_nhs.c:199,1
    - Dst: htonl
      Src: /src/frr/nhrpd/nhrp_nhs.c:201,1
    - Dst: nhrp_reqid_alloc
      Src: /src/frr/nhrpd/nhrp_nhs.c:201,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_nhs.c:205,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_nhs.c:208,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_nhs.c:210,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_nhs.c:211,1
    - Dst: nhrp_ext_request
      Src: /src/frr/nhrpd/nhrp_nhs.c:213,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:216,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:218,1
    - Dst: memset
      Src: /src/frr/nhrpd/nhrp_nhs.c:224,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:225,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_nhs.c:225,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_nhs.c:228,1
    - Dst: nhrp_ext_push
      Src: /src/frr/nhrpd/nhrp_nhs.c:229,1
    - Dst: nhrp_cie_push
      Src: /src/frr/nhrpd/nhrp_nhs.c:231,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/nhrpd/nhrp_nhs.c:233,1
    - Dst: htons
      Src: /src/frr/nhrpd/nhrp_nhs.c:234,1
    - Dst: nhrp_ext_complete
      Src: /src/frr/nhrpd/nhrp_nhs.c:235,1
    - Dst: nhrp_packet_complete
      Src: /src/frr/nhrpd/nhrp_nhs.c:237,1
    - Dst: nhrp_peer_send
      Src: /src/frr/nhrpd/nhrp_nhs.c:238,1
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_nhs.c:239,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 158
    functionDepth: 5
    functionLinenumber: 158
    functionLinenumberEnd: 240
    functionName: nhrp_reg_send_req
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - htons
    - nhrp_peer_send
    - nhrp_ext_complete
    - htonl
    - zbuf_alloc
    - memset
    - nhrp_ext_push
    - sockunion_get_addrlen
    - EVENT_ARG
    - nhrp_reqid_alloc
    - nhrp_peer_check
    - zbuf_free
    - afi2family
    - nhrp_packet_complete
    - nhrp_ext_request
    - event_add_timer
    - nhrp_cie_push
    - debugf
    - nhrp_packet_push
    linkageType: ''
    returnType: void
    signature: void nhrp_reg_send_req(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_peer_notify_del
      Src: /src/frr/nhrpd/nhrp_nhs.c:244,1
    - Dst: nhrp_peer_unref
      Src: /src/frr/nhrpd/nhrp_nhs.c:245,1
    - Dst: nhrp_reglist_del
      Src: /src/frr/nhrpd/nhrp_nhs.c:246,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_nhs.c:247,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_nhs.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct nhrp_registration*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 242
    functionDepth: 5
    functionLinenumber: 242
    functionLinenumberEnd: 249
    functionName: nhrp_reg_delete
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - nhrp_reglist_del
    - nhrp_peer_notify_del
    - nhrp_peer_unref
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nhrp_reg_delete(struct nhrp_registration *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_nhs.c:256,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_nhs.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - nhs
    - nbma_addr
    argTypes:
    - struct nhrp_nhs*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 260
    functionName: nhrp_reg_by_nbma
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - sockunion_same
    - frr_each
    linkageType: ''
    returnType: struct nhrp_registration
    signature: 'struct nhrp_registration *

      nhrp_reg_by_nbma(struct nhrp_nhs *nhs, const union sockunion *nbma_addr)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/nhrpd/nhrp_nhs.c:265,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_nhs.c:272,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_nhs.c:277,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_nhs.c:280,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_nhs.c:285,1
    - Dst: nhrp_reg_by_nbma
      Src: /src/frr/nhrpd/nhrp_nhs.c:290,1
    - Dst: XCALLOC
      Src: /src/frr/nhrpd/nhrp_nhs.c:296,1
    - Dst: nhrp_peer_get
      Src: /src/frr/nhrpd/nhrp_nhs.c:297,1
    - Dst: nhrp_reglist_add_tail
      Src: /src/frr/nhrpd/nhrp_nhs.c:300,1
    - Dst: nhrp_peer_notify_add
      Src: /src/frr/nhrpd/nhrp_nhs.c:301,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_nhs.c:303,1
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_nhs.c:307,1
    - Dst: nhrp_reg_delete
      Src: /src/frr/nhrpd/nhrp_nhs.c:309,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - q
    - errstr
    - n
    - addrs
    argTypes:
    - struct resolver_query*
    - char*
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 262
    functionDepth: 6
    functionLinenumber: 262
    functionLinenumberEnd: 310
    functionName: nhrp_nhs_resolve_cb
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - nhrp_reglist_add_tail
    - nhrp_peer_get
    - frr_each
    - nhrp_reg_by_nbma
    - XCALLOC
    - sockunion_same
    - container_of
    - event_add_timer_msec
    - nhrp_peer_notify_add
    - frr_each_safe
    - event_add_timer
    - nhrp_reg_delete
    linkageType: ''
    returnType: void
    signature: "void nhrp_nhs_resolve_cb(struct resolver_query *q, const char *errstr,\n\t\t\t\tint
      n, union sockunion *addrs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_nhs.c:314,1
    - Dst: resolver_resolve
      Src: /src/frr/nhrpd/nhrp_nhs.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 318
    functionName: nhrp_nhs_resolve
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - resolver_resolve
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nhrp_nhs_resolve(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:326,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:327,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_nhs.c:327,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_nhs.c:330,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:331,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:332,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_nhs.c:333,1
    - Dst: strcmp
      Src: /src/frr/nhrpd/nhrp_nhs.c:336,1
    - Dst: XMALLOC
      Src: /src/frr/nhrpd/nhrp_nhs.c:340,1
    - Dst: strdup
      Src: /src/frr/nhrpd/nhrp_nhs.c:346,1
    - Dst: INIT_DLIST
      Src: /src/frr/nhrpd/nhrp_nhs.c:347,1
    - Dst: nhrp_nhslist_add_tail
      Src: /src/frr/nhrpd/nhrp_nhs.c:349,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_nhs.c:350,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - ifp
    - afi
    - proto_addr
    - nbma_fqdn
    argTypes:
    - struct interface*
    - afi_t
    - union sockunion*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 354
    functionName: nhrp_nhs_add
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - frr_each
    - strcmp
    - sockunion_same
    - afi2family
    - XMALLOC
    - strdup
    - INIT_DLIST
    - event_add_timer_msec
    - nhrp_nhslist_add_tail
    linkageType: ''
    returnType: int
    signature: "int nhrp_nhs_add(struct interface *ifp, afi_t afi, union sockunion
      *proto_addr,\n\t\t const char *nbma_fqdn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:363,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_nhs.c:364,1
    - Dst: afi2family
      Src: /src/frr/nhrpd/nhrp_nhs.c:364,1
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_nhs.c:367,1
    - Dst: sockunion_same
      Src: /src/frr/nhrpd/nhrp_nhs.c:368,1
    - Dst: strcmp
      Src: /src/frr/nhrpd/nhrp_nhs.c:370,1
    - Dst: nhrp_nhs_free
      Src: /src/frr/nhrpd/nhrp_nhs.c:373,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - ifp
    - afi
    - proto_addr
    - nbma_fqdn
    argTypes:
    - struct interface*
    - afi_t
    - union sockunion*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 378
    functionName: nhrp_nhs_del
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - sockunion_same
    - afi2family
    - strcmp
    - nhrp_nhs_free
    - frr_each_safe
    linkageType: ''
    returnType: int
    signature: "int nhrp_nhs_del(struct interface *ifp, afi_t afi, union sockunion
      *proto_addr,\n\t\t const char *nbma_fqdn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_nhs.c:384,1
    - Dst: nhrp_reg_delete
      Src: /src/frr/nhrpd/nhrp_nhs.c:385,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_nhs.c:386,1
    - Dst: nhrp_nhslist_del
      Src: /src/frr/nhrpd/nhrp_nhs.c:387,1
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_nhs.c:388,1
    - Dst: XFREE
      Src: /src/frr/nhrpd/nhrp_nhs.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - nifp
    - afi
    - nhs
    argTypes:
    - struct nhrp_interface*
    - afi_t
    - struct nhrp_nhs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 380
    functionDepth: 6
    functionLinenumber: 380
    functionLinenumberEnd: 391
    functionName: nhrp_nhs_free
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 1
    functionsReached:
    - nhrp_nhslist_del
    - free
    - EVENT_OFF
    - frr_each_safe
    - XFREE
    - nhrp_reg_delete
    linkageType: ''
    returnType: int
    signature: int nhrp_nhs_free(struct nhrp_interface *nifp, afi_t afi, struct nhrp_nhs
      *nhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_nhs.c:400,1
    - Dst: nhrp_nhslist_count
      Src: /src/frr/nhrpd/nhrp_nhs.c:401,1
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_nhs.c:403,1
    - Dst: nhrp_nhs_free
      Src: /src/frr/nhrpd/nhrp_nhs.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 393
    functionDepth: 7
    functionLinenumber: 393
    functionLinenumberEnd: 406
    functionName: nhrp_nhs_interface_del
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 1
    functionsReached:
    - debugf
    - nhrp_nhslist_count
    - nhrp_nhs_free
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void nhrp_nhs_interface_del(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/nhrpd/nhrp_nhs.c:410,1
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_nhs.c:419,1
    - Dst: nhrp_nhs_free
      Src: /src/frr/nhrpd/nhrp_nhs.c:421,1
    - Dst: nhrp_peer_interface_del
      Src: /src/frr/nhrpd/nhrp_nhs.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 408
    functionDepth: 7
    functionLinenumber: 408
    functionLinenumberEnd: 425
    functionName: nhrp_nhs_terminate
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 1
    functionsReached:
    - nhrp_nhs_free
    - frr_each_safe
    - vrf_lookup_by_id
    - nhrp_peer_interface_del
    linkageType: ''
    returnType: void
    signature: void nhrp_nhs_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/nhrpd/nhrp_nhs.c:419,1
    - Dst: nhrp_nhs_free
      Src: /src/frr/nhrpd/nhrp_nhs.c:421,1
    - Dst: nhrp_peer_interface_del
      Src: /src/frr/nhrpd/nhrp_nhs.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 416
    functionDepth: 7
    functionLinenumber: 416
    functionLinenumberEnd: 424
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - nhrp_nhs_free
    - frr_each_safe
    - nhrp_peer_interface_del
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_nhs.c:436,1
    - Dst: nhrp_reglist_count
      Src: /src/frr/nhrpd/nhrp_nhs.c:437,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_nhs.c:438,1
    - Dst: cb
      Src: /src/frr/nhrpd/nhrp_nhs.c:439,1
    - Dst: cb
      Src: /src/frr/nhrpd/nhrp_nhs.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ifp
    - afi
    - ctx
    argTypes:
    - struct interface*
    - afi_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 443
    functionName: nhrp_nhs_foreach
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 0
    functionsReached:
    - cb
    - nhrp_reglist_count
    - frr_each
    linkageType: ''
    returnType: void
    signature: "void nhrp_nhs_foreach(struct interface *ifp, afi_t afi,\n\t\t      void
      (*cb)(struct nhrp_nhs *, struct nhrp_registration *,\n\t\t\t\t void *),\n\t\t
      \     void *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_nhs.c:452,1
    - Dst: nhrp_reglist_count
      Src: /src/frr/nhrpd/nhrp_nhs.c:453,1
    - Dst: frr_each
      Src: /src/frr/nhrpd/nhrp_nhs.c:456,1
    - Dst: sockunion_cmp
      Src: /src/frr/nhrpd/nhrp_nhs.c:457,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - in_ip
    - nifp
    argTypes:
    - union sockunion*
    - struct nhrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 464
    functionName: nhrp_nhs_match_ip
    functionSourceFile: /src/frr/nhrpd/nhrp_nhs.c
    functionUses: 2
    functionsReached:
    - sockunion_cmp
    - nhrp_reglist_count
    - frr_each
    linkageType: ''
    returnType: int
    signature: int nhrp_nhs_match_ip(union sockunion *in_ip, struct nhrp_interface
      *nifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_event.c:34,1
    - Dst: EVENT_OFF
      Src: /src/frr/nhrpd/nhrp_event.c:35,1
    - Dst: zbuf_reset
      Src: /src/frr/nhrpd/nhrp_event.c:36,1
    - Dst: zbufq_reset
      Src: /src/frr/nhrpd/nhrp_event.c:37,1
    - Dst: close
      Src: /src/frr/nhrpd/nhrp_event.c:40,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_event.c:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - evmgr
    argTypes:
    - struct event_manager*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 45
    functionName: evmgr_connection_error
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - close
    - zbuf_reset
    - event_add_timer_msec
    - EVENT_OFF
    - zbufq_reset
    linkageType: ''
    returnType: void
    signature: void evmgr_connection_error(struct event_manager *evmgr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_may_pull_until
      Src: /src/frr/nhrpd/nhrp_event.c:54,1
    - Dst: zbuf_used
      Src: /src/frr/nhrpd/nhrp_event.c:55,1
    - Dst: memcpy
      Src: /src/frr/nhrpd/nhrp_event.c:58,1
    - Dst: zbuf_pulln
      Src: /src/frr/nhrpd/nhrp_event.c:58,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_event.c:61,1
    - Dst: sscanf
      Src: /src/frr/nhrpd/nhrp_event.c:62,1
    - Dst: sscanf
      Src: /src/frr/nhrpd/nhrp_event.c:64,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_event.c:67,1
    - Dst: nhrp_reqid_lookup
      Src: /src/frr/nhrpd/nhrp_event.c:71,1
    - Dst: struct nhrp_reqid*::cb
      Src: /src/frr/nhrpd/nhrp_event.c:73,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 2
    argNames:
    - evmgr
    - zb
    argTypes:
    - struct event_manager*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 75
    functionName: evmgr_recv_message
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - zbuf_pulln
    - zbuf_used
    - debugf
    - nhrp_reqid_lookup
    - struct nhrp_reqid*::cb
    - sscanf
    - zbuf_may_pull_until
    - memcpy
    linkageType: ''
    returnType: void
    signature: void evmgr_recv_message(struct event_manager *evmgr, struct zbuf *zb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_event.c:79,1
    - Dst: zbuf_read
      Src: /src/frr/nhrpd/nhrp_event.c:83,1
    - Dst: evmgr_connection_error
      Src: /src/frr/nhrpd/nhrp_event.c:84,1
    - Dst: zbuf_may_pull_until
      Src: /src/frr/nhrpd/nhrp_event.c:89,1
    - Dst: evmgr_recv_message
      Src: /src/frr/nhrpd/nhrp_event.c:90,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/nhrp_event.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 93
    functionName: evmgr_read
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - evmgr_recv_message
    - evmgr_connection_error
    - zbuf_read
    - EVENT_ARG
    - event_add_read
    - zbuf_may_pull_until
    linkageType: ''
    returnType: void
    signature: void evmgr_read(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_event.c:97,1
    - Dst: zbufq_write
      Src: /src/frr/nhrpd/nhrp_event.c:100,1
    - Dst: event_add_write
      Src: /src/frr/nhrpd/nhrp_event.c:102,1
    - Dst: evmgr_connection_error
      Src: /src/frr/nhrpd/nhrp_event.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 107
    functionName: evmgr_write
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - zbufq_write
    - evmgr_connection_error
    - event_add_write
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void evmgr_write(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_pushn
      Src: /src/frr/nhrpd/nhrp_event.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - zb
    - val
    - vallen
    argTypes:
    - struct zbuf*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 124
    functionName: evmgr_hexdump
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - zbuf_pushn
    linkageType: ''
    returnType: void
    signature: void evmgr_hexdump(struct zbuf *zb, const uint8_t *val, size_t vallen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/nhrpd/nhrp_event.c:134,1
    - Dst: strchr
      Src: /src/frr/nhrpd/nhrp_event.c:135,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_event.c:136,1
    - Dst: zbuf_put8
      Src: /src/frr/nhrpd/nhrp_event.c:139,1
    - Dst: snprintf
      Src: /src/frr/nhrpd/nhrp_event.c:143,1
    - Dst: zbuf_tailroom
      Src: /src/frr/nhrpd/nhrp_event.c:143,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/nhrp_event.c:144,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/nhrp_event.c:147,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_event.c:148,1
    - Dst: strlen
      Src: /src/frr/nhrpd/nhrp_event.c:148,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/nhrp_event.c:151,1
    - Dst: sockunion2str
      Src: /src/frr/nhrpd/nhrp_event.c:152,1
    - Dst: zbuf_tailroom
      Src: /src/frr/nhrpd/nhrp_event.c:153,1
    - Dst: strlen
      Src: /src/frr/nhrpd/nhrp_event.c:154,1
    - Dst: zbuf_set_werror
      Src: /src/frr/nhrpd/nhrp_event.c:156,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/nhrp_event.c:159,1
    - Dst: va_arg
      Src: /src/frr/nhrpd/nhrp_event.c:160,1
    - Dst: evmgr_hexdump
      Src: /src/frr/nhrpd/nhrp_event.c:161,1
    - Dst: va_end
      Src: /src/frr/nhrpd/nhrp_event.c:165,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_event.c:166,1
    - Dst: strlen
      Src: /src/frr/nhrpd/nhrp_event.c:166,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - zb
    - fmt
    argTypes:
    - struct zbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 167
    functionName: evmgr_put
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - evmgr_hexdump
    - zbuf_put8
    - strlen
    - va_arg
    - snprintf
    - zbuf_put
    - va_start
    - zbuf_tailroom
    - strchr
    - va_end
    - zbuf_set_werror
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: void evmgr_put(struct zbuf *zb, const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_free
      Src: /src/frr/nhrpd/nhrp_event.c:172,1
    - Dst: zbuf_put
      Src: /src/frr/nhrpd/nhrp_event.c:175,1
    - Dst: zbufq_queue
      Src: /src/frr/nhrpd/nhrp_event.c:176,1
    - Dst: event_add_write
      Src: /src/frr/nhrpd/nhrp_event.c:178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - evmgr
    - obuf
    argTypes:
    - struct event_manager*
    - struct zbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 180
    functionName: evmgr_submit
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - zbuf_free
    - event_add_write
    - zbufq_queue
    - zbuf_put
    linkageType: ''
    returnType: void
    signature: void evmgr_submit(struct event_manager *evmgr, struct zbuf *obuf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/nhrpd/nhrp_event.c:184,1
    - Dst: sock_open_unix
      Src: /src/frr/nhrpd/nhrp_event.c:190,1
    - Dst: zlog_warn
      Src: /src/frr/nhrpd/nhrp_event.c:192,1
    - Dst: strerror
      Src: /src/frr/nhrpd/nhrp_event.c:193,1
    - Dst: zbufq_reset
      Src: /src/frr/nhrpd/nhrp_event.c:194,1
    - Dst: event_add_timer
      Src: /src/frr/nhrpd/nhrp_event.c:195,1
    - Dst: zlog_info
      Src: /src/frr/nhrpd/nhrp_event.c:200,1
    - Dst: event_add_read
      Src: /src/frr/nhrpd/nhrp_event.c:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 203
    functionName: evmgr_reconnect
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - strerror
    - event_add_read
    - sock_open_unix
    - zlog_warn
    - zbufq_reset
    - EVENT_ARG
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void evmgr_reconnect(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zbuf_init
      Src: /src/frr/nhrpd/nhrp_event.c:212,1
    - Dst: zbufq_init
      Src: /src/frr/nhrpd/nhrp_event.c:213,1
    - Dst: event_add_timer_msec
      Src: /src/frr/nhrpd/nhrp_event.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 216
    functionName: evmgr_init
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 1
    functionsReached:
    - event_add_timer_msec
    - zbuf_init
    - zbufq_init
    linkageType: ''
    returnType: void
    signature: void evmgr_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/nhrpd/nhrp_event.c:221,1
    - Dst: strdup
      Src: /src/frr/nhrpd/nhrp_event.c:225,1
    - Dst: evmgr_connection_error
      Src: /src/frr/nhrpd/nhrp_event.c:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - socket
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 227
    functionName: evmgr_set_socket
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 0
    functionsReached:
    - strdup
    - free
    - evmgr_connection_error
    linkageType: ''
    returnType: void
    signature: void evmgr_set_socket(const char *socket)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 231
    functionName: evmgr_terminate
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void evmgr_terminate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/nhrpd/nhrp_event.c:240,1
    - Dst: sockunion_family
      Src: /src/frr/nhrpd/nhrp_event.c:240,1
    - Dst: cb
      Src: /src/frr/nhrpd/nhrp_event.c:243,1
    - Dst: debugf
      Src: /src/frr/nhrpd/nhrp_event.c:247,1
    - Dst: zbuf_alloc
      Src: /src/frr/nhrpd/nhrp_event.c:250,1
    - Dst: nhrp_reqid_free
      Src: /src/frr/nhrpd/nhrp_event.c:254,1
    - Dst: evmgr_put
      Src: /src/frr/nhrpd/nhrp_event.c:255,1
    - Dst: nhrp_reqid_alloc
      Src: /src/frr/nhrpd/nhrp_event.c:256,1
    - Dst: evmgr_put
      Src: /src/frr/nhrpd/nhrp_event.c:259,1
    - Dst: evmgr_put
      Src: /src/frr/nhrpd/nhrp_event.c:272,1
    - Dst: evmgr_submit
      Src: /src/frr/nhrpd/nhrp_event.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - name
    - c
    argTypes:
    - char*
    - struct nhrp_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 286
    functionName: evmgr_notify
    functionSourceFile: /src/frr/nhrpd/nhrp_event.c
    functionUses: 1
    functionsReached:
    - sockunion_family
    - debugf
    - nhrp_reqid_free
    - evmgr_put
    - evmgr_submit
    - cb
    - family2afi
    - zbuf_alloc
    - nhrp_reqid_alloc
    linkageType: ''
    returnType: void
    signature: "void evmgr_notify(const char *name, struct nhrp_cache *c,\n\t\t  void
      (*cb)(struct nhrp_reqid *, void *))"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/tests/ospfd/common.c:26,1
    - Dst: strmatch
      Src: /src/frr/tests/ospfd/common.c:28,1
    - Dst: strmatch
      Src: /src/frr/tests/ospfd/common.c:30,1
    - Dst: strmatch
      Src: /src/frr/tests/ospfd/common.c:32,1
    - Dst: strmatch
      Src: /src/frr/tests/ospfd/common.c:34,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 38
    functionName: test_find_topology
    functionSourceFile: /src/frr/tests/ospfd/common.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: struct ospf_topology
    signature: struct ospf_topology *test_find_topology(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path1
    - path2
    argTypes:
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: sort_paths
    functionSourceFile: /src/frr/tests/ospfd/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sort_paths(const void **path1, const void **path2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/tests/ospfd/common.c:57,1
    - Dst: route_next
      Src: /src/frr/tests/ospfd/common.c:57,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/common.c:61,1
    - Dst: list_sort
      Src: /src/frr/tests/ospfd/common.c:64,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/tests/ospfd/common.c:66,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/common.c:70,1
    - Dst: if
      Src: /src/frr/tests/ospfd/common.c:73,1
    - Dst: mpls_label2str
      Src: /src/frr/tests/ospfd/common.c:75,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/common.c:79,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/common.c:81,1
    - Dst: test_find_node
      Src: /src/frr/tests/ospfd/common.c:86,1
    - Dst: strmatch
      Src: /src/frr/tests/ospfd/common.c:90,1
    - Dst: inject_router_lsa
      Src: /src/frr/tests/ospfd/common.c:96,1
    - Dst: struct ospf_test_node::struct ospf_test_node
      Src: /src/frr/tests/ospfd/common.c:108,1
    - Dst: inet_aton
      Src: /src/frr/tests/ospfd/common.c:117,1
    - Dst: strncmp
      Src: /src/frr/tests/ospfd/common.c:119,1
    - Dst: stream_new
      Src: /src/frr/tests/ospfd/common.c:122,1
    - Dst: lsa_header_set
      Src: /src/frr/tests/ospfd/common.c:123,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/tests/ospfd/common.c:123,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/tests/ospfd/common.c:123,1
    - Dst: stream_putc
      Src: /src/frr/tests/ospfd/common.c:126,1
    - Dst: router_lsa_flags
      Src: /src/frr/tests/ospfd/common.c:126,1
    - Dst: stream_putc
      Src: /src/frr/tests/ospfd/common.c:127,1
    - Dst: stream_get_endp
      Src: /src/frr/tests/ospfd/common.c:129,1
    - Dst: stream_putw
      Src: /src/frr/tests/ospfd/common.c:130,1
    - Dst: test_find_node
      Src: /src/frr/tests/ospfd/common.c:135,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/ospfd/common.c:136,1
    - Dst: inet_aton
      Src: /src/frr/tests/ospfd/common.c:139,1
    - Dst: link_info_set
      Src: /src/frr/tests/ospfd/common.c:141,1
    - Dst: masklen2ip
      Src: /src/frr/tests/ospfd/common.c:144,1
    - Dst: link_info_set
      Src: /src/frr/tests/ospfd/common.c:145,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/ospfd/common.c:150,1
    - Dst: link_info_set
      Src: /src/frr/tests/ospfd/common.c:152,1
    - Dst: stream_putw_at
      Src: /src/frr/tests/ospfd/common.c:155,1
    - Dst: stream_get_endp
      Src: /src/frr/tests/ospfd/common.c:157,1
    - Dst: STREAM_DATA
      Src: /src/frr/tests/ospfd/common.c:158,1
    - Dst: htons
      Src: /src/frr/tests/ospfd/common.c:159,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/tests/ospfd/common.c:161,1
    - Dst: memcpy
      Src: /src/frr/tests/ospfd/common.c:168,1
    - Dst: data::data
      Src: /src/frr/tests/ospfd/common.c:168,1
    - Dst: stream_free
      Src: /src/frr/tests/ospfd/common.c:169,1
    - Dst: ospf_lsdb_add
      Src: /src/frr/tests/ospfd/common.c:171,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/tests/ospfd/common.c:174,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/tests/ospfd/common.c:175,1
    - Dst: inet_aton
      Src: /src/frr/tests/ospfd/common.c:191,1
    - Dst: ospf_sr_node_create
      Src: /src/frr/tests/ospfd/common.c:193,1
    - Dst: XCALLOC
      Src: /src/frr/tests/ospfd/common.c:203,1
    - Dst: listnode_add
      Src: /src/frr/tests/ospfd/common.c:208,1
    - Dst: test_find_node
      Src: /src/frr/tests/ospfd/common.c:214,1
    - Dst: XCALLOC
      Src: /src/frr/tests/ospfd/common.c:216,1
    - Dst: inet_aton
      Src: /src/frr/tests/ospfd/common.c:219,1
    - Dst: listnode_add
      Src: /src/frr/tests/ospfd/common.c:226,1
    - Dst: inject_router_lsa
      Src: /src/frr/tests/ospfd/common.c:239,1
    - Dst: inject_sr_db_entry
      Src: /src/frr/tests/ospfd/common.c:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 2
    argNames:
    - vty
    - rt
    argTypes:
    - struct vty*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 249
    functionName: print_route_table
    functionSourceFile: /src/frr/tests/ospfd/common.c
    functionUses: 0
    functionsReached:
    - inject_sr_db_entry
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - route_top
    - link_info_set
    - listnode_add
    - strncmp
    - data::data
    - stream_putc
    - list_sort
    - ospf_lsdb_add
    - strmatch
    - lsa_header_set
    - router_lsa_flags
    - inject_router_lsa
    - masklen2ip
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - stream_putw_at
    - LSA_OPTIONS_GET
    - if
    - LSA_OPTIONS_NSSA_GET
    - stream_free
    - vty_out
    - ospf_sr_node_create
    - route_next
    - test_find_node
    - memcpy
    - str2prefix_ipv4
    - stream_new
    - inet_aton
    - mpls_label2str
    - STREAM_DATA
    - stream_putw
    - stream_get_endp
    - ospf_lsa_unlock
    - ospf_lsa_lock
    - struct ospf_test_node::struct ospf_test_node
    linkageType: ''
    returnType: void
    signature: void print_route_table(struct vty *vty, struct route_table *rt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_aton
      Src: /src/frr/tests/ospfd/common.c:191,1
    - Dst: ospf_sr_node_create
      Src: /src/frr/tests/ospfd/common.c:193,1
    - Dst: XCALLOC
      Src: /src/frr/tests/ospfd/common.c:203,1
    - Dst: listnode_add
      Src: /src/frr/tests/ospfd/common.c:208,1
    - Dst: test_find_node
      Src: /src/frr/tests/ospfd/common.c:214,1
    - Dst: XCALLOC
      Src: /src/frr/tests/ospfd/common.c:216,1
    - Dst: inet_aton
      Src: /src/frr/tests/ospfd/common.c:219,1
    - Dst: listnode_add
      Src: /src/frr/tests/ospfd/common.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 3
    argNames:
    - vty
    - tnode
    - topology
    argTypes:
    - struct vty*
    - struct ospf_test_node*
    - struct ospf_topology*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 228
    functionName: inject_sr_db_entry
    functionSourceFile: /src/frr/tests/ospfd/common.c
    functionUses: 1
    functionsReached:
    - ospf_sr_node_create
    - XCALLOC
    - inet_aton
    - listnode_add
    - test_find_node
    linkageType: ''
    returnType: void
    signature: "void inject_sr_db_entry(struct vty *vty, struct ospf_test_node *tnode,\n\t\t\t
      \      struct ospf_topology *topology)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inject_router_lsa
      Src: /src/frr/tests/ospfd/common.c:239,1
    - Dst: inject_sr_db_entry
      Src: /src/frr/tests/ospfd/common.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - vty
    - topology
    - root
    - ospf
    argTypes:
    - struct vty*
    - struct ospf_topology*
    - struct ospf_test_node*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 249
    functionName: topology_load
    functionSourceFile: /src/frr/tests/ospfd/common.c
    functionUses: 0
    functionsReached:
    - inject_sr_db_entry
    - inject_router_lsa
    linkageType: ''
    returnType: int
    signature: "int topology_load(struct vty *vty, struct ospf_topology *topology,\n\t\t
      \ struct ospf_test_node *root, struct ospf *ospf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_new_alloc
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:37,1
    - Dst: ospf_area_new
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:40,1
    - Dst: listnode_add_sort
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:41,1
    - Dst: inet_aton
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct ospf_test_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 49
    functionName: test_init
    functionSourceFile: /src/frr/tests/ospfd/test_ospf_spf.c
    functionUses: 0
    functionsReached:
    - ospf_new_alloc
    - ospf_area_new
    - listnode_add_sort
    - inet_aton
    linkageType: ''
    returnType: struct ospf
    signature: struct ospf *test_init(struct ospf_test_node *root)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:65,1
    - Dst: route_table_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:66,1
    - Dst: route_table_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:67,1
    - Dst: ospf_spf_calculate
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:70,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:74,1
    - Dst: ospf_spf_print
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:75,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:77,1
    - Dst: print_route_table
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:79,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:83,1
    - Dst: ospf_ti_lfa_generate_p_spaces
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:86,1
    - Dst: ospf_ti_lfa_insert_backup_paths
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:87,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:91,1
    - Dst: frr_each
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:92,1
    - Dst: ospf_print_protected_resource
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:93,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:95,1
    - Dst: ospf_spf_print
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:97,1
    - Dst: frr_each
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:99,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:100,1
    - Dst: ospf_spf_print
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:103,1
    - Dst: mpls_label2str
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:105,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:111,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:114,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:119,1
    - Dst: ospf_spf_print
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:120,1
    - Dst: ospf_ti_lfa_free_p_spaces
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:125,1
    - Dst: ospf_spf_cleanup
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:126,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:133,1
    - Dst: print_route_table
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:136,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 4
    argNames:
    - vty
    - ospf
    - protection_type
    - verbose
    argTypes:
    - struct vty*
    - struct ospf*
    - enum protection_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 137
    functionName: test_run_spf
    functionSourceFile: /src/frr/tests/ospfd/test_ospf_spf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - frr_each
    - ospf_spf_print
    - ospf_ti_lfa_generate_p_spaces
    - ospf_spf_cleanup
    - mpls_label2str
    - ospf_print_protected_resource
    - route_table_init
    - ospf_spf_calculate
    - print_route_table
    - ospf_ti_lfa_insert_backup_paths
    - ospf_ti_lfa_free_p_spaces
    linkageType: ''
    returnType: void
    signature: "void test_run_spf(struct vty *vty, struct ospf *ospf,\n\t\t\t enum
      protection_type protection_type, bool verbose)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:145,1
    - Dst: topology_load
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:148,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:149,1
    - Dst: vty_out
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:154,1
    - Dst: show_ip_ospf_database_summary
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:155,1
    - Dst: test_run_spf
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - vty
    - topology
    - root
    - protection_type
    - verbose
    argTypes:
    - struct vty*
    - struct ospf_topology*
    - struct ospf_test_node*
    - enum protection_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 161
    functionName: test_run
    functionSourceFile: /src/frr/tests/ospfd/test_ospf_spf.c
    functionUses: 0
    functionsReached:
    - test_init
    - vty_out
    - topology_load
    - test_run_spf
    - show_ip_ospf_database_summary
    linkageType: ''
    returnType: int
    signature: "int test_run(struct vty *vty, struct ospf_topology *topology,\n\t\t
      \   struct ospf_test_node *root,\n\t\t    enum protection_type protection_type,
      bool verbose)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:207,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:209,1
    - Dst: vty_terminate
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:210,1
    - Dst: event_master_free
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:211,1
    - Dst: exit
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - isexit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 215
    functionName: vty_do_exit
    functionSourceFile: /src/frr/tests/ospfd/test_ospf_spf.c
    functionUses: 0
    functionsReached:
    - exit
    - event_master_free
    - vty_terminate
    - printf
    - cmd_terminate
    linkageType: ''
    returnType: void
    signature: void vty_do_exit(int isexit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:225,1
    - Dst: printf
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:228,1
    - Dst: exit
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - progname
    - status
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 237
    functionName: usage
    functionSourceFile: /src/frr/tests/ospfd/test_ospf_spf.c
    functionUses: 0
    functionsReached:
    - fprintf
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void usage(char *progname, int status)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:247,1
    - Dst: strrchr
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:250,1
    - Dst: getopt_long
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:255,1
    - Dst: usage
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:267,1
    - Dst: usage
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:270,1
    - Dst: event_master_create
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:276,1
    - Dst: cmd_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:279,1
    - Dst: cmd_hostname_set
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:280,1
    - Dst: vty_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:281,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:283,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:285,1
    - Dst: install_element
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:288,1
    - Dst: ospf_vty_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:291,1
    - Dst: ospf_sr_init
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:292,1
    - Dst: vty_stdio
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:297,1
    - Dst: event_fetch
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:300,1
    - Dst: event_call
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:301,1
    - Dst: exit
      Src: /src/frr/tests/ospfd/test_ospf_spf.c:304,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 305
    functionName: main
    functionSourceFile: /src/frr/tests/ospfd/test_ospf_spf.c
    functionUses: 0
    functionsReached:
    - exit
    - ospf_sr_init
    - event_call
    - cmd_init
    - ospf_vty_init
    - cmd_hostname_set
    - event_master_create
    - usage
    - strrchr
    - zlog_aux_init
    - getopt_long
    - vty_init
    - install_element
    - event_fetch
    - umask
    - vty_stdio
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - proto
    - instance
    - session_id
    argTypes:
    - uint8_t
    - unsigned short
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 20
    functionName: zserv_find_client_session
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct zserv
    signature: "struct zserv *zserv_find_client_session(uint8_t proto, unsigned short
      instance,\n\t\t\t\t\tuint32_t session_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - vrf_id
    - result
    argTypes:
    - struct zserv*
    - vrf_id_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 26
    functionName: zsend_label_manager_connect_response
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zsend_label_manager_connect_response(struct zserv *client, vrf_id_t
      vrf_id,\n\t\t\t\t\t unsigned short result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - vrf_id
    - lmc
    argTypes:
    - struct zserv*
    - vrf_id_t
    - struct label_manager_chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: zsend_assign_label_chunk_response
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zsend_assign_label_chunk_response(struct zserv *client, vrf_id_t
      vrf_id,\n\t\t\t\t      struct label_manager_chunk *lmc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - vrf_id
    argTypes:
    - struct zserv*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: test_client_connect
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_client_connect(struct zserv *client, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: test_client_disconnect
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_client_disconnect(struct zserv *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_label_chunk
      Src: /src/frr/tests/zebra/test_lm_plugin.c:51,1
    - Dst: assign_label_chunk
      Src: /src/frr/tests/zebra/test_lm_plugin.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - lmc
    - client
    - keep
    - size
    - base
    - vrf_id
    argTypes:
    - struct label_manager_chunk**
    - struct zserv*
    - uint8_t
    - uint32_t
    - uint32_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 56
    functionName: lm_get_chunk_pi
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached:
    - assign_label_chunk
    - create_label_chunk
    linkageType: ''
    returnType: int
    signature: "int lm_get_chunk_pi(struct label_manager_chunk **lmc,\n\t\t\t   struct
      zserv *client, uint8_t keep, uint32_t size,\n\t\t\t   uint32_t base, vrf_id_t
      vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: release_label_chunk
      Src: /src/frr/tests/zebra/test_lm_plugin.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - start
    - end
    argTypes:
    - struct zserv*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: lm_release_chunk_pi
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached:
    - release_label_chunk
    linkageType: ''
    returnType: int
    signature: "int lm_release_chunk_pi(struct zserv *client, uint32_t start,\n\t\t\t
      \      uint32_t end)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/tests/zebra/test_lm_plugin.c:70,1
    - Dst: hook_register
      Src: /src/frr/tests/zebra/test_lm_plugin.c:71,1
    - Dst: hook_register
      Src: /src/frr/tests/zebra/test_lm_plugin.c:72,1
    - Dst: hook_register
      Src: /src/frr/tests/zebra/test_lm_plugin.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: lp_plugin_init
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void lp_plugin_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_unregister
      Src: /src/frr/tests/zebra/test_lm_plugin.c:79,1
    - Dst: hook_unregister
      Src: /src/frr/tests/zebra/test_lm_plugin.c:80,1
    - Dst: hook_unregister
      Src: /src/frr/tests/zebra/test_lm_plugin.c:81,1
    - Dst: hook_unregister
      Src: /src/frr/tests/zebra/test_lm_plugin.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: lp_plugin_cleanup
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached:
    - hook_unregister
    linkageType: ''
    returnType: void
    signature: void lp_plugin_cleanup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign_label_chunk
      Src: /src/frr/tests/zebra/test_lm_plugin.c:92,1
    - Dst: fprintf
      Src: /src/frr/tests/zebra/test_lm_plugin.c:93,1
    - Dst: delete_label_chunk
      Src: /src/frr/tests/zebra/test_lm_plugin.c:97,1
    - Dst: assign_label_chunk
      Src: /src/frr/tests/zebra/test_lm_plugin.c:99,1
    - Dst: fprintf
      Src: /src/frr/tests/zebra/test_lm_plugin.c:100,1
    - Dst: release_label_chunk
      Src: /src/frr/tests/zebra/test_lm_plugin.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 105
    functionName: test_lp_plugin
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached:
    - release_label_chunk
    - assign_label_chunk
    - fprintf
    - delete_label_chunk
    linkageType: ''
    returnType: void
    signature: void test_lp_plugin(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: label_manager_init
      Src: /src/frr/tests/zebra/test_lm_plugin.c:110,1
    - Dst: lm_hooks_unregister
      Src: /src/frr/tests/zebra/test_lm_plugin.c:111,1
    - Dst: lp_plugin_init
      Src: /src/frr/tests/zebra/test_lm_plugin.c:114,1
    - Dst: test_lp_plugin
      Src: /src/frr/tests/zebra/test_lm_plugin.c:115,1
    - Dst: lp_plugin_cleanup
      Src: /src/frr/tests/zebra/test_lm_plugin.c:116,1
    - Dst: hook_call
      Src: /src/frr/tests/zebra/test_lm_plugin.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 121
    functionName: main
    functionSourceFile: /src/frr/tests/zebra/test_lm_plugin.c
    functionUses: 0
    functionsReached:
    - lp_plugin_init
    - lm_hooks_unregister
    - hook_call
    - label_manager_init
    - test_lp_plugin
    - lp_plugin_cleanup
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/tests/bgpd/test_capability.c:815,1
    - Dst: stream_put
      Src: /src/frr/tests/bgpd/test_capability.c:816,1
    - Dst: stream_set_getp
      Src: /src/frr/tests/bgpd/test_capability.c:817,1
    - Dst: stream_putc
      Src: /src/frr/tests/bgpd/test_capability.c:821,1
    - Dst: stream_putc
      Src: /src/frr/tests/bgpd/test_capability.c:822,1
    - Dst: stream_write
      Src: /src/frr/tests/bgpd/test_capability.c:831,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:833,1
    - Dst: peek_for_as4_capability
      Src: /src/frr/tests/bgpd/test_capability.c:842,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:843,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_capability.c:845,1
    - Dst: stream_get_getp
      Src: /src/frr/tests/bgpd/test_capability.c:845,1
    - Dst: bgp_open_option_parse
      Src: /src/frr/tests/bgpd/test_capability.c:847,1
    - Dst: bgp_capability_receive
      Src: /src/frr/tests/bgpd/test_capability.c:850,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:853,1
    - Dst: exit
      Src: /src/frr/tests/bgpd/test_capability.c:854,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/tests/bgpd/test_capability.c:862,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:866,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:880,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:892,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:895,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:900,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:904,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:907,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:909,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    argCount: 3
    argNames:
    - peer
    - t
    - type
    argTypes:
    - struct peer*
    - struct test_segment*
    - int
    assertStmts:
    - condition: (stream_get_getp(peer->curr) == RANDOM_FUZZ)
      pos:
        line_end: 844
        line_start: 844
        source_file: /src/frr/tests/bgpd/test_capability.c
    constantsTouched: []
    func_position:
      end: 910
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 910
    functionName: parse_test
    functionSourceFile: /src/frr/tests/bgpd/test_capability.c
    functionUses: 0
    functionsReached:
    - exit
    - stream_set_getp
    - stream_put
    - bgp_open_option_parse
    - bgp_capability_receive
    - peek_for_as4_capability
    - stream_write
    - printf
    - stream_get_getp
    - stream_reset
    - bgp_map_afi_safi_iana2int
    - stream_putc
    - assert
    linkageType: ''
    returnType: void
    signature: void parse_test(struct peer *peer, struct test_segment *t, int type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qobj_init
      Src: /src/frr/tests/bgpd/test_capability.c:927,1
    - Dst: event_master_create
      Src: /src/frr/tests/bgpd/test_capability.c:928,1
    - Dst: bgp_master_init
      Src: /src/frr/tests/bgpd/test_capability.c:929,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_capability.c:929,1
    - Dst: vrf_init
      Src: /src/frr/tests/bgpd/test_capability.c:930,1
    - Dst: bgp_option_set
      Src: /src/frr/tests/bgpd/test_capability.c:931,1
    - Dst: frr_pthread_init
      Src: /src/frr/tests/bgpd/test_capability.c:933,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/tests/bgpd/test_capability.c:934,1
    - Dst: fileno
      Src: /src/frr/tests/bgpd/test_capability.c:937,1
    - Dst: isatty
      Src: /src/frr/tests/bgpd/test_capability.c:938,1
    - Dst: fileno
      Src: /src/frr/tests/bgpd/test_capability.c:938,1
    - Dst: bgp_get
      Src: /src/frr/tests/bgpd/test_capability.c:940,1
    - Dst: peer_create_accept
      Src: /src/frr/tests/bgpd/test_capability.c:944,1
    - Dst: stream_new
      Src: /src/frr/tests/bgpd/test_capability.c:953,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_capability.c:957,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_capability.c:964,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_capability.c:968,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_capability.c:972,1
    - Dst: SET_FLAG
      Src: /src/frr/tests/bgpd/test_capability.c:974,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_capability.c:979,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_capability.c:981,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 983
    functionName: main
    functionSourceFile: /src/frr/tests/bgpd/test_capability.c
    functionUses: 0
    functionsReached:
    - stream_new
    - vrf_init
    - isatty
    - peer_create_accept
    - parse_test
    - bgp_get
    - event_master_create
    - fileno
    - bgp_option_set
    - bgp_master_init
    - list_new
    - frr_pthread_init
    - bgp_pthreads_init
    - qobj_init
    - SET_FLAG
    - printf
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 39
    functionName: TEST_ASSERT
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ASSERT(T, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 51
    functionName: TEST_ASSERT_EQ
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ASSERT_EQ(T, A, B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: TEST_HANDLER
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_HANDLER(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: TEST_HANDLER_DECL
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_HANDLER_DECL(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - attr
    - ','
    - pval
    - ','
    - gval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: TEST_ATTR_HANDLER_DECL
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ATTR_HANDLER_DECL(name, attr, pval, gval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - attr
    - ','
    - pval
    - ','
    - gval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 88
    functionName: TEST_STR_ATTR_HANDLER_DECL
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_STR_ATTR_HANDLER_DECL(name, attr, pval, gval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - attr
    - ','
    - pval
    - ','
    - gval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 106
    functionName: TEST_SU_ATTR_HANDLER_DECL
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SU_ATTR_HANDLER_DECL(name, attr, pval, gval)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_peer_attr.c:668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - afi
    argTypes:
    - afi_t
    assertStmts:
    - condition: (!"Reached end of function we should never reach")
      pos:
        line_end: 667
        line_start: 667
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
    constantsTouched: []
    func_position:
      end: 669
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 669
    functionName: str_from_afi
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *str_from_afi(afi_t afi)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - at
    argTypes:
    - enum test_peer_attr_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 686
    functionName: str_from_attr_type
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *str_from_attr_type(enum test_peer_attr_type at)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - at
    argTypes:
    - enum test_peer_attr_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 691
    functionName: is_attr_type_global
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_attr_type_global(enum test_peer_attr_type at)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/bgpd/test_peer_attr.c:703,1
    - Dst: listnode_add
      Src: /src/frr/tests/bgpd/test_peer_attr.c:704,1
    - Dst: vasprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:704,1
    - Dst: va_end
      Src: /src/frr/tests/bgpd/test_peer_attr.c:705,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - test
    - fmt
    argTypes:
    - struct test*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 706
    functionName: test_log
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vasprintfrr
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void test_log(struct test *test, const char *fmt, ...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/bgpd/test_peer_attr.c:721,1
    - Dst: vasprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:722,1
    - Dst: va_end
      Src: /src/frr/tests/bgpd/test_peer_attr.c:723,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:726,1
    - Dst: cmd_make_strvec
      Src: /src/frr/tests/bgpd/test_peer_attr.c:732,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:735,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:739,1
    - Dst: cmd_execute_command
      Src: /src/frr/tests/bgpd/test_peer_attr.c:745,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:748,1
    - Dst: cmd_free_strvec
      Src: /src/frr/tests/bgpd/test_peer_attr.c:755,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:756,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - test
    - fmt
    argTypes:
    - struct test*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 757
    functionName: test_execute
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - vasprintfrr
    - cmd_make_strvec
    - cmd_free_strvec
    - va_start
    - va_end
    - XFREE
    - cmd_execute_command
    - asprintfrr
    linkageType: ''
    returnType: void
    signature: void test_execute(struct test *test, const char *fmt, ...)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: va_copy
      Src: /src/frr/tests/bgpd/test_peer_attr.c:773,1
    - Dst: vasprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:774,1
    - Dst: va_end
      Src: /src/frr/tests/bgpd/test_peer_attr.c:775,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:778,1
    - Dst: bgp_config_write
      Src: /src/frr/tests/bgpd/test_peer_attr.c:784,1
    - Dst: buffer_getstr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:785,1
    - Dst: buffer_reset
      Src: /src/frr/tests/bgpd/test_peer_attr.c:786,1
    - Dst: strstr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:789,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:792,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:797,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:803,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:804,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - test
    - fmt
    - invert
    - ap
    argTypes:
    - struct test*
    - char*
    - bool
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 805
    functionName: test_config
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - va_copy
    - strstr
    - vasprintfrr
    - buffer_reset
    - bgp_config_write
    - buffer_getstr
    - va_end
    - XFREE
    - asprintfrr
    linkageType: ''
    returnType: void
    signature: "void test_config(struct test *test, const char *fmt, bool invert,\n\t\t\tva_list
      ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/bgpd/test_peer_attr.c:812,1
    - Dst: test_config
      Src: /src/frr/tests/bgpd/test_peer_attr.c:813,1
    - Dst: va_end
      Src: /src/frr/tests/bgpd/test_peer_attr.c:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - test
    - fmt
    argTypes:
    - struct test*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 808
    functionDepth: 2
    functionLinenumber: 808
    functionLinenumberEnd: 815
    functionName: test_config_present
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - test_config
    linkageType: ''
    returnType: void
    signature: void test_config_present(struct test *test, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/bgpd/test_peer_attr.c:822,1
    - Dst: test_config
      Src: /src/frr/tests/bgpd/test_peer_attr.c:823,1
    - Dst: va_end
      Src: /src/frr/tests/bgpd/test_peer_attr.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - test
    - fmt
    argTypes:
    - struct test*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 818
    functionDepth: 2
    functionLinenumber: 818
    functionLinenumberEnd: 825
    functionName: test_config_absent
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - test_config
    linkageType: ''
    returnType: void
    signature: void test_config_absent(struct test *test, const char *fmt, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:836,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:840,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:844,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:845,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:846,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:848,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:849,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:853,1
    - Dst: bgp_get_default
      Src: /src/frr/tests/bgpd/test_peer_attr.c:861,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:864,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/tests/bgpd/test_peer_attr.c:872,1
    - Dst: str2sockunion
      Src: /src/frr/tests/bgpd/test_peer_attr.c:874,1
    - Dst: peer_lookup
      Src: /src/frr/tests/bgpd/test_peer_attr.c:875,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:879,1
    - Dst: peer_group_lookup
      Src: /src/frr/tests/bgpd/test_peer_attr.c:887,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:890,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 1
    argNames:
    - test
    argTypes:
    - struct test*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 896
    functionName: test_initialize
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - test_execute
    - str2sockunion
    - bgp_get_default
    - test_log
    - peer_lookup
    - asprintfrr
    - peer_group_lookup
    - peer_lookup_by_conf_if
    linkageType: ''
    returnType: void
    signature: void test_initialize(struct test *test)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/tests/bgpd/test_peer_attr.c:903,1
    - Dst: XSTRDUP
      Src: /src/frr/tests/bgpd/test_peer_attr.c:905,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_peer_attr.c:906,1
    - Dst: vty_new
      Src: /src/frr/tests/bgpd/test_peer_attr.c:910,1
    - Dst: test_initialize
      Src: /src/frr/tests/bgpd/test_peer_attr.c:914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - desc
    - use_ibgp
    - use_iface_peer
    argTypes:
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 898
    functionDepth: 3
    functionLinenumber: 898
    functionLinenumberEnd: 917
    functionName: test_new
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - vty_new
    - list_new
    - XSTRDUP
    - test_initialize
    linkageType: ''
    returnType: struct test
    signature: "struct test *test_new(const char *desc, bool use_ibgp,\n\t\t\t     bool
      use_iface_peer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_peer_attr.c:925,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/tests/bgpd/test_peer_attr.c:930,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_peer_attr.c:931,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:932,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_peer_attr.c:937,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_peer_attr.c:940,1
    - Dst: vty_close
      Src: /src/frr/tests/bgpd/test_peer_attr.c:944,1
    - Dst: list_delete
      Src: /src/frr/tests/bgpd/test_peer_attr.c:948,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:950,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:952,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:953,1
    - Dst: test_peer_flags
      Src: /src/frr/tests/bgpd/test_peer_attr.c:956,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:966,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:976,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:977,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:978,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:980,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:982,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:984,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:989,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:990,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:991,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - test
    argTypes:
    - struct test*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 992
    functionName: test_finish
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - list_delete
    - TEST_ASSERT_EQ
    - CHECK_FLAG
    - test_peer_flags
    - XFREE
    - printf
    - ALL_LIST_ELEMENTS
    - vty_close
    linkageType: ''
    returnType: void
    signature: void test_finish(struct test *test)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1005,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1009,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1016,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1021,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1026,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1031,1
    - Dst: TEST_ASSERT_EQ
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1035,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 5
    argNames:
    - test
    - pa
    - peer
    - exp_state
    - exp_ovrd
    argTypes:
    - struct test*
    - struct test_peer_attr*
    - struct peer*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 994
    functionDepth: 1
    functionLinenumber: 994
    functionLinenumberEnd: 1038
    functionName: test_af_filter
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - TEST_ASSERT_EQ
    linkageType: ''
    returnType: void
    signature: "void test_af_filter(struct test *test, struct test_peer_attr *pa,\n\t\t\t
      \  struct peer *peer, bool exp_state, bool exp_ovrd)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1061,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1064,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 6
    argNames:
    - test
    - pa
    - peer
    - group
    - peer_set
    - group_set
    argTypes:
    - struct test*
    - struct test_peer_attr*
    - struct peer*
    - struct peer*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1067
    functionName: test_custom
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - asprintfrr
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void test_custom(struct test *test, struct test_peer_attr *pa,\n\t\t\tstruct
      peer *peer, struct peer *group, bool peer_set,\n\t\t\tbool group_set)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: test_peer_flags
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1077,1
    - Dst: peer_group_active
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1079,1
    - Dst: test_peer_flags
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1081,1
    - Dst: test_af_filter
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1085,1
    - Dst: peer_group_active
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1087,1
    - Dst: test_af_filter
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1089,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1104,1
    - Dst: test_custom
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1110,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 6
    argNames:
    - test
    - pa
    - peer
    - group
    - peer_set
    - group_set
    argTypes:
    - struct test*
    - struct test_peer_attr*
    - struct peer*
    - struct peer*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1070
    functionDepth: 2
    functionLinenumber: 1070
    functionLinenumberEnd: 1111
    functionName: test_process
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - test_af_filter
    - test_custom
    - test_peer_flags
    - peer_group_active
    - asprintfrr
    linkageType: ''
    returnType: void
    signature: "void test_process(struct test *test, struct test_peer_attr *pa,\n\t\t\t
      struct peer *peer, struct peer *group, bool peer_set,\n\t\t\t bool group_set)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_from_attr_type
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1127,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1130,1
    - Dst: is_attr_type_global
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1150,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1151,1
    - Dst: get_afi_safi_str
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1152,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1153,1
    - Dst: str_from_afi
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1154,1
    - Dst: safi2str
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1154,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1155,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1156,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1164,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1166,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1167,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1168,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1169,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1172,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1174,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1175,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1176,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1177,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1180,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1182,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1183,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1185,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1186,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1187,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1190,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1192,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1193,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1194,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1195,1
    - Dst: test_initialize
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1212,1
    - Dst: is_attr_type_global
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1217,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1218,1
    - Dst: get_afi_safi_str
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1219,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1220,1
    - Dst: str_from_afi
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1221,1
    - Dst: safi2str
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1221,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1222,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1223,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1227,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1229,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1230,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1231,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1232,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1235,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1237,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1238,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1240,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1241,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1242,1
    - Dst: test_initialize
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1260,1
    - Dst: is_attr_type_global
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1265,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1266,1
    - Dst: get_afi_safi_str
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1267,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1268,1
    - Dst: str_from_afi
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1269,1
    - Dst: safi2str
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1269,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1270,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1271,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1275,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1277,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1278,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1279,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1280,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1283,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1285,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1286,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1288,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1289,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1290,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1293,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1295,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1296,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1298,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1299,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1300,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1303,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1305,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1306,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1307,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1308,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1311,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1313,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1314,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1315,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1316,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1319,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1321,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1322,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1323,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1324,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1327,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1329,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1330,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1331,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1332,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1335,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1337,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1338,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1339,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1340,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1343,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1345,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1346,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1347,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1348,1
    - Dst: test_log
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1351,1
    - Dst: test_execute
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1353,1
    - Dst: test_config_present
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1354,1
    - Dst: test_config_absent
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1355,1
    - Dst: test_process
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1356,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 119
    argCount: 2
    argNames:
    - test
    - pa
    argTypes:
    - struct test*
    - struct test_peer_attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1113
    functionDepth: 3
    functionLinenumber: 1113
    functionLinenumberEnd: 1357
    functionName: test_peer_attr
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - test_config_present
    - test_execute
    - str_from_attr_type
    - str_from_afi
    - safi2str
    - test_process
    - test_log
    - test_config_absent
    - get_afi_safi_str
    - asprintfrr
    - is_attr_type_global
    - test_initialize
    linkageType: ''
    returnType: void
    signature: void test_peer_attr(struct test *test, struct test_peer_attr *pa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1361,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1362,1
    - Dst: zprivs_preinit
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1363,1
    - Dst: zprivs_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1364,1
    - Dst: event_master_create
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1366,1
    - Dst: nb_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1367,1
    - Dst: bgp_master_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1368,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1368,1
    - Dst: bgp_option_set
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1369,1
    - Dst: vrf_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1370,1
    - Dst: frr_pthread_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1371,1
    - Dst: bgp_init
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1372,1
    - Dst: bgp_pthreads_run
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1374
    functionName: bgp_startup
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - bgp_init
    - vrf_init
    - zprivs_init
    - cmd_init
    - event_master_create
    - nb_init
    - zlog_aux_init
    - zprivs_preinit
    - bgp_master_init
    - list_new
    - bgp_option_set
    - frr_pthread_init
    - bgp_pthreads_run
    linkageType: ''
    returnType: void
    signature: void bgp_startup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1381,1
    - Dst: bgp_close
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1382,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1383,1
    - Dst: bgp_delete
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1384,1
    - Dst: bgp_dump_finish
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1385,1
    - Dst: bgp_route_finish
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1386,1
    - Dst: bgp_route_map_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1387,1
    - Dst: bgp_attr_finish
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1388,1
    - Dst: bgp_pthreads_finish
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1389,1
    - Dst: access_list_add_hook
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1390,1
    - Dst: access_list_delete_hook
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1391,1
    - Dst: access_list_reset
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1392,1
    - Dst: as_list_add_hook
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1393,1
    - Dst: as_list_delete_hook
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1394,1
    - Dst: bgp_filter_reset
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1395,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1396,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1397,1
    - Dst: prefix_list_reset
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1398,1
    - Dst: community_list_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1399,1
    - Dst: vrf_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1400,1
    - Dst: vnc_zebra_destroy
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1402,1
    - Dst: bgp_zebra_destroy
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1404,1
    - Dst: bf_free
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1406,1
    - Dst: list_delete
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1407,1
    - Dst: memset
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1408,1
    - Dst: vty_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1410,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1411,1
    - Dst: nb_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1412,1
    - Dst: yang_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1413,1
    - Dst: zprivs_terminate
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1414,1
    - Dst: event_master_free
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1415,1
    - Dst: main
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1419,1
    - Dst: bgp_startup
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1426,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1428,1
    - Dst: is_attr_type_global
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1434,1
    - Dst: XMALLOC
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1435,1
    - Dst: memcpy
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1436,1
    - Dst: listnode_add
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1437,1
    - Dst: if
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1442,1
    - Dst: memcpy
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1443,1
    - Dst: XMALLOC
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1449,1
    - Dst: memcpy
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1450,1
    - Dst: listnode_add
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1454,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1460,1
    - Dst: asprintfrr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1466,1
    - Dst: str_from_afi
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1467,1
    - Dst: safi2str
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1468,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1474,1
    - Dst: test_peer_attr
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1477,1
    - Dst: test_finish
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1478,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1481,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_peer_attr.c:1484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1376
    functionDepth: 4
    functionLinenumber: 1376
    functionLinenumberEnd: 1485
    functionName: bgp_shutdown
    functionSourceFile: /src/frr/tests/bgpd/test_peer_attr.c
    functionUses: 0
    functionsReached:
    - access_list_reset
    - list_delete
    - safi2str
    - test_peer_attr
    - prefix_list_add_hook
    - zprivs_terminate
    - vrf_terminate
    - listnode_add
    - event_master_free
    - as_list_add_hook
    - vty_terminate
    - asprintfrr
    - yang_terminate
    - memset
    - as_list_delete_hook
    - nb_terminate
    - bgp_terminate
    - bgp_route_finish
    - printf
    - bgp_startup
    - if
    - bgp_attr_finish
    - prefix_list_delete_hook
    - str_from_afi
    - main
    - test_finish
    - bgp_zebra_destroy
    - XFREE
    - community_list_terminate
    - access_list_delete_hook
    - bgp_delete
    - bgp_filter_reset
    - cmd_terminate
    - memcpy
    - prefix_list_reset
    - XMALLOC
    - bgp_route_map_terminate
    - bgp_close
    - vnc_zebra_destroy
    - bgp_pthreads_finish
    - bf_free
    - bgp_dump_finish
    - access_list_add_hook
    - list_new
    - ALL_LIST_ELEMENTS
    - is_attr_type_global
    linkageType: ''
    returnType: void
    signature: void bgp_shutdown(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:45,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/bgpd/test_bgp_table.c:47,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:48,1
    - Dst: bgp_node_get
      Src: /src/frr/tests/bgpd/test_bgp_table.c:50,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:52,1
    - Dst: malloc
      Src: /src/frr/tests/bgpd/test_bgp_table.c:56,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:57,1
    - Dst: strdup
      Src: /src/frr/tests/bgpd/test_bgp_table.c:58,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - table
    - prefix_str
    argTypes:
    - struct bgp_table*
    - char*
    assertStmts:
    - condition: (prefix_str)
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    - condition: (0)
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    - condition: (0)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    - condition: (node)
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    - condition: (node->prefix_str)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    constantsTouched: []
    func_position:
      end: 61
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 61
    functionName: add_node
    functionSourceFile: /src/frr/tests/bgpd/test_bgp_table.c
    functionUses: 0
    functionsReached:
    - str2prefix_ipv4
    - malloc
    - strdup
    - assert
    - bgp_node_get
    linkageType: ''
    returnType: void
    signature: void add_node(struct bgp_table *table, const char *prefix_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/tests/bgpd/test_bgp_table.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - p
    - prefix_array
    - prefix_array_size
    argTypes:
    - struct prefix*
    - struct prefix*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: prefix_in_array
    functionSourceFile: /src/frr/tests/bgpd/test_bgp_table.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: bool
    signature: "bool prefix_in_array(const struct prefix *p, struct prefix *prefix_array,\n\t\t\t
      \   size_t prefix_array_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_arg
      Src: /src/frr/tests/bgpd/test_bgp_table.c:79,1
    - Dst: realloc
      Src: /src/frr/tests/bgpd/test_bgp_table.c:81,1
    - Dst: str2prefix
      Src: /src/frr/tests/bgpd/test_bgp_table.c:83,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:84,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:88,1
    - Dst: bgp_route_next_until
      Src: /src/frr/tests/bgpd/test_bgp_table.c:94,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/tests/bgpd/test_bgp_table.c:95,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/tests/bgpd/test_bgp_table.c:97,1
    - Dst: prefix_in_array
      Src: /src/frr/tests/bgpd/test_bgp_table.c:98,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_bgp_table.c:99,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:100,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - match
    - arglist
    argTypes:
    - struct bgp_dest*
    - va_list
    assertStmts:
    - condition: ((prefix_count == 0 && !match) || prefix_count > 0)
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    - condition: (0)
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    - condition: (0)
      pos:
        line_end: 99
        line_start: 99
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    constantsTouched: []
    func_position:
      end: 103
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 103
    functionName: check_lookup_result
    functionSourceFile: /src/frr/tests/bgpd/test_bgp_table.c
    functionUses: 0
    functionsReached:
    - va_arg
    - prefix_in_array
    - bgp_dest_get_prefix
    - bgp_dest_has_bgp_path_info_data
    - str2prefix
    - printf
    - realloc
    - bgp_route_next_until
    - assert
    linkageType: ''
    returnType: void
    signature: void check_lookup_result(struct bgp_dest *match, va_list arglist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/bgpd/test_bgp_table.c:111,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_bgp_table.c:112,1
    - Dst: str2prefix
      Src: /src/frr/tests/bgpd/test_bgp_table.c:113,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_bgp_table.c:114,1
    - Dst: bgp_table_subtree_lookup
      Src: /src/frr/tests/bgpd/test_bgp_table.c:115,1
    - Dst: check_lookup_result
      Src: /src/frr/tests/bgpd/test_bgp_table.c:117,1
    - Dst: va_end
      Src: /src/frr/tests/bgpd/test_bgp_table.c:119,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_bgp_table.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - table
    - prefix
    argTypes:
    - struct bgp_table*
    - char*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 113
        line_start: 113
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    constantsTouched: []
    func_position:
      end: 122
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 122
    functionName: do_test
    functionSourceFile: /src/frr/tests/bgpd/test_bgp_table.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - bgp_table_subtree_lookup
    - str2prefix
    - printf
    - check_lookup_result
    - assert
    linkageType: ''
    returnType: void
    signature: void do_test(struct bgp_table *table, const char *prefix, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_init
      Src: /src/frr/tests/bgpd/test_bgp_table.c:129,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_bgp_table.c:131,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_bgp_table.c:133,1
    - Dst: array_size
      Src: /src/frr/tests/bgpd/test_bgp_table.c:139,1
    - Dst: add_node
      Src: /src/frr/tests/bgpd/test_bgp_table.c:142,1
    - Dst: do_test
      Src: /src/frr/tests/bgpd/test_bgp_table.c:144,1
    - Dst: do_test
      Src: /src/frr/tests/bgpd/test_bgp_table.c:146,1
    - Dst: do_test
      Src: /src/frr/tests/bgpd/test_bgp_table.c:149,1
    - Dst: do_test
      Src: /src/frr/tests/bgpd/test_bgp_table.c:153,1
    - Dst: do_test
      Src: /src/frr/tests/bgpd/test_bgp_table.c:155,1
    - Dst: do_test
      Src: /src/frr/tests/bgpd/test_bgp_table.c:157,1
    - Dst: do_test
      Src: /src/frr/tests/bgpd/test_bgp_table.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 127
    functionDepth: 4
    functionLinenumber: 127
    functionLinenumberEnd: 162
    functionName: test_range_lookup
    functionSourceFile: /src/frr/tests/bgpd/test_bgp_table.c
    functionUses: 0
    functionsReached:
    - do_test
    - add_node
    - bgp_table_init
    - array_size
    - printf
    linkageType: ''
    returnType: void
    signature: void test_range_lookup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_range_lookup
      Src: /src/frr/tests/bgpd/test_bgp_table.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 5
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: main
    functionSourceFile: /src/frr/tests/bgpd/test_bgp_table.c
    functionUses: 1
    functionsReached:
    - test_range_lookup
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - expr
    - ','
    - res
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: EXPECT_TRUE
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPECT_TRUE(expr, res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/tests/bgpd/test_mpath.c:81,1
    - Dst: bgp_lock
      Src: /src/frr/tests/bgpd/test_mpath.c:84,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_mpath.c:89,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_mpath.c:92,1
    - Dst: bgp_evpn_init
      Src: /src/frr/tests/bgpd/test_mpath.c:95,1
    - Dst: bgp_table_init
      Src: /src/frr/tests/bgpd/test_mpath.c:97,1
    - Dst: bgp_table_init
      Src: /src/frr/tests/bgpd/test_mpath.c:98,1
    - Dst: bgp_table_init
      Src: /src/frr/tests/bgpd/test_mpath.c:99,1
    - Dst: bgp_scan_init
      Src: /src/frr/tests/bgpd/test_mpath.c:104,1
    - Dst: strdup
      Src: /src/frr/tests/bgpd/test_mpath.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - as
    - name
    argTypes:
    - as_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 117
    functionName: bgp_create_fake
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - bgp_table_init
    - bgp_evpn_init
    - strdup
    - bgp_lock
    - list_new
    - bgp_scan_init
    linkageType: ''
    returnType: struct bgp
    signature: struct bgp *bgp_create_fake(as_t *as, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_init
      Src: /src/frr/tests/bgpd/test_mpath.c:97,1
    - Dst: bgp_table_init
      Src: /src/frr/tests/bgpd/test_mpath.c:98,1
    - Dst: bgp_table_init
      Src: /src/frr/tests/bgpd/test_mpath.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_table_init
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_create_fake
      Src: /src/frr/tests/bgpd/test_mpath.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 129
    functionName: setup_bgp_cfg_maximum_paths
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_create_fake
    linkageType: ''
    returnType: int
    signature: int setup_bgp_cfg_maximum_paths(testcase_t *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/tests/bgpd/test_mpath.c:142,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:144,1
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/tests/bgpd/test_mpath.c:145,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:147,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:148,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:150,1
    - Dst: bgp_maximum_paths_unset
      Src: /src/frr/tests/bgpd/test_mpath.c:155,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:156,1
    - Dst: bgp_maximum_paths_unset
      Src: /src/frr/tests/bgpd/test_mpath.c:158,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:159,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:160,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 169
    functionName: run_bgp_cfg_maximum_paths
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_maximum_paths_set
    - bgp_maximum_paths_unset
    - EXPECT_TRUE
    linkageType: ''
    returnType: int
    signature: int run_bgp_cfg_maximum_paths(testcase_t *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/tests/bgpd/test_mpath.c:142,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:144,1
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/tests/bgpd/test_mpath.c:145,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:147,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:148,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:150,1
    - Dst: bgp_maximum_paths_unset
      Src: /src/frr/tests/bgpd/test_mpath.c:155,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:156,1
    - Dst: bgp_maximum_paths_unset
      Src: /src/frr/tests/bgpd/test_mpath.c:158,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:159,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:160,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 166
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_maximum_paths_set
    - bgp_maximum_paths_unset
    - EXPECT_TRUE
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_delete
      Src: /src/frr/tests/bgpd/test_mpath.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 174
    functionName: cleanup_bgp_cfg_maximum_paths
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_delete
    linkageType: ''
    returnType: int
    signature: int cleanup_bgp_cfg_maximum_paths(testcase_t *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_str2su
      Src: /src/frr/tests/bgpd/test_mpath.c:209,1
    - Dst: sockunion_str2su
      Src: /src/frr/tests/bgpd/test_mpath.c:212,1
    - Dst: sockunion_str2su
      Src: /src/frr/tests/bgpd/test_mpath.c:215,1
    - Dst: sockunion_str2su
      Src: /src/frr/tests/bgpd/test_mpath.c:218,1
    - Dst: sockunion_str2su
      Src: /src/frr/tests/bgpd/test_mpath.c:221,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 226
    functionName: setup_bgp_mp_list
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - sockunion_str2su
    linkageType: ''
    returnType: int
    signature: int setup_bgp_mp_list(testcase_t *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_mp_list_init
      Src: /src/frr/tests/bgpd/test_mpath.c:235,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:236,1
    - Dst: listcount
      Src: /src/frr/tests/bgpd/test_mpath.c:236,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:238,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:239,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:240,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:241,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:242,1
    - Dst: listnextnode
      Src: /src/frr/tests/bgpd/test_mpath.c:245,1
    - Dst: listgetdata
      Src: /src/frr/tests/bgpd/test_mpath.c:246,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:247,1
    - Dst: bgp_mp_list_clear
      Src: /src/frr/tests/bgpd/test_mpath.c:250,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:251,1
    - Dst: listcount
      Src: /src/frr/tests/bgpd/test_mpath.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 254
    functionName: run_bgp_mp_list
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - bgp_mp_list_add
    - listcount
    - bgp_mp_list_init
    - bgp_mp_list_clear
    - listgetdata
    - EXPECT_TRUE
    linkageType: ''
    returnType: int
    signature: int run_bgp_mp_list(testcase_t *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_free
      Src: /src/frr/tests/bgpd/test_mpath.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 264
    functionName: cleanup_bgp_mp_list
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - sockunion_free
    linkageType: ''
    returnType: int
    signature: int cleanup_bgp_mp_list(testcase_t *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_create_fake
      Src: /src/frr/tests/bgpd/test_mpath.c:287,1
    - Dst: str2prefix
      Src: /src/frr/tests/bgpd/test_mpath.c:297,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/tests/bgpd/test_mpath.c:298,1
    - Dst: memcpy
      Src: /src/frr/tests/bgpd/test_mpath.c:299,1
    - Dst: setup_bgp_mp_list
      Src: /src/frr/tests/bgpd/test_mpath.c:301,1
    - Dst: bgp_path_info_add
      Src: /src/frr/tests/bgpd/test_mpath.c:303,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 305
    functionName: setup_bgp_path_info_mpath_update
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - setup_bgp_mp_list
    - bgp_path_info_add
    - bgp_dest_to_rnode
    - str2prefix
    - bgp_create_fake
    - memcpy
    linkageType: ''
    returnType: int
    signature: int setup_bgp_path_info_mpath_update(testcase_t *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_mp_list_init
      Src: /src/frr/tests/bgpd/test_mpath.c:313,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:314,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:315,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:316,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:317,1
    - Dst: bgp_path_info_mpath_update
      Src: /src/frr/tests/bgpd/test_mpath.c:320,1
    - Dst: bgp_mp_list_clear
      Src: /src/frr/tests/bgpd/test_mpath.c:322,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:323,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/tests/bgpd/test_mpath.c:323,1
    - Dst: bgp_path_info_mpath_first
      Src: /src/frr/tests/bgpd/test_mpath.c:324,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:325,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:326,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_mpath.c:326,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/tests/bgpd/test_mpath.c:327,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:328,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:329,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_mpath.c:329,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:331,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/tests/bgpd/test_mpath.c:332,1
    - Dst: bgp_path_info_mpath_update
      Src: /src/frr/tests/bgpd/test_mpath.c:335,1
    - Dst: bgp_mp_list_clear
      Src: /src/frr/tests/bgpd/test_mpath.c:337,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:338,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/tests/bgpd/test_mpath.c:338,1
    - Dst: bgp_path_info_mpath_first
      Src: /src/frr/tests/bgpd/test_mpath.c:339,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:340,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:341,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_mpath.c:341,1
    - Dst: EXPECT_TRUE
      Src: /src/frr/tests/bgpd/test_mpath.c:342,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/bgpd/test_mpath.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 346
    functionName: run_bgp_path_info_mpath_update
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_mpath_update
    - bgp_mp_list_add
    - bgp_path_info_mpath_first
    - CHECK_FLAG
    - bgp_mp_list_init
    - bgp_path_info_mpath_next
    - bgp_path_info_mpath_count
    - bgp_mp_list_clear
    - EXPECT_TRUE
    linkageType: ''
    returnType: int
    signature: int run_bgp_path_info_mpath_update(testcase_t *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_free
      Src: /src/frr/tests/bgpd/test_mpath.c:353,1
    - Dst: bgp_delete
      Src: /src/frr/tests/bgpd/test_mpath.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 356
    functionName: cleanup_bgp_path_info_mpath_update
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - sockunion_free
    - bgp_delete
    linkageType: ''
    returnType: int
    signature: int cleanup_bgp_path_info_mpath_update(testcase_t *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qobj_init
      Src: /src/frr/tests/bgpd/test_mpath.c:380,1
    - Dst: event_master_create
      Src: /src/frr/tests/bgpd/test_mpath.c:381,1
    - Dst: zclient_new
      Src: /src/frr/tests/bgpd/test_mpath.c:382,1
    - Dst: bgp_master_init
      Src: /src/frr/tests/bgpd/test_mpath.c:383,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_mpath.c:383,1
    - Dst: vrf_init
      Src: /src/frr/tests/bgpd/test_mpath.c:384,1
    - Dst: bgp_option_set
      Src: /src/frr/tests/bgpd/test_mpath.c:385,1
    - Dst: fileno
      Src: /src/frr/tests/bgpd/test_mpath.c:387,1
    - Dst: isatty
      Src: /src/frr/tests/bgpd/test_mpath.c:388,1
    - Dst: fileno
      Src: /src/frr/tests/bgpd/test_mpath.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 390
    functionName: global_test_init
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - zclient_new
    - vrf_init
    - isatty
    - event_master_create
    - fileno
    - bgp_option_set
    - bgp_master_init
    - list_new
    - qobj_init
    linkageType: ''
    returnType: int
    signature: int global_test_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_free
      Src: /src/frr/tests/bgpd/test_mpath.c:395,1
    - Dst: event_master_free
      Src: /src/frr/tests/bgpd/test_mpath.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 398
    functionName: global_test_cleanup
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - event_master_free
    - zclient_free
    linkageType: ''
    returnType: int
    signature: int global_test_cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:403,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - test
    - result
    argTypes:
    - testcase_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 408
    functionName: display_result
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void display_result(testcase_t *test, int result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: testcase_t*::setup
      Src: /src/frr/tests/bgpd/test_mpath.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 416
    functionName: setup_test
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - testcase_t*::setup
    linkageType: ''
    returnType: int
    signature: int setup_test(testcase_t *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: testcase_t*::cleanup
      Src: /src/frr/tests/bgpd/test_mpath.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - testcase_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 424
    functionName: cleanup_test
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - testcase_t*::cleanup
    linkageType: ''
    returnType: int
    signature: int cleanup_test(testcase_t *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:437,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:442,1
    - Dst: setup_test
      Src: /src/frr/tests/bgpd/test_mpath.c:446,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:447,1
    - Dst: testcase_t*::run
      Src: /src/frr/tests/bgpd/test_mpath.c:451,1
    - Dst: display_result
      Src: /src/frr/tests/bgpd/test_mpath.c:456,1
    - Dst: cleanup_test
      Src: /src/frr/tests/bgpd/test_mpath.c:457,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:458,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 4
    argNames:
    - tests
    - num_tests
    - pass_count
    - fail_count
    argTypes:
    - testcase_t*[]
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 463
    functionName: run_tests
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 0
    functionsReached:
    - setup_test
    - cleanup_test
    - printf
    - testcase_t*::run
    - display_result
    linkageType: ''
    returnType: void
    signature: "void run_tests(testcase_t *tests[], int num_tests, int *pass_count,\n\t\t
      \     int *fail_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/tests/bgpd/test_mpath.c:470,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:471,1
    - Dst: ctime
      Src: /src/frr/tests/bgpd/test_mpath.c:471,1
    - Dst: global_test_init
      Src: /src/frr/tests/bgpd/test_mpath.c:472,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:473,1
    - Dst: exit
      Src: /src/frr/tests/bgpd/test_mpath.c:474,1
    - Dst: run_tests
      Src: /src/frr/tests/bgpd/test_mpath.c:476,1
    - Dst: global_test_cleanup
      Src: /src/frr/tests/bgpd/test_mpath.c:477,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mpath.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 480
    functionName: main
    functionSourceFile: /src/frr/tests/bgpd/test_mpath.c
    functionUses: 1
    functionsReached:
    - exit
    - global_test_init
    - ctime
    - run_tests
    - printf
    - global_test_cleanup
    - time
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qobj_init
      Src: /src/frr/tests/bgpd/test_packet.c:46,1
    - Dst: bgp_attr_init
      Src: /src/frr/tests/bgpd/test_packet.c:47,1
    - Dst: event_master_create
      Src: /src/frr/tests/bgpd/test_packet.c:48,1
    - Dst: bgp_master_init
      Src: /src/frr/tests/bgpd/test_packet.c:49,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_packet.c:49,1
    - Dst: vrf_init
      Src: /src/frr/tests/bgpd/test_packet.c:50,1
    - Dst: bgp_option_set
      Src: /src/frr/tests/bgpd/test_packet.c:51,1
    - Dst: bgp_get
      Src: /src/frr/tests/bgpd/test_packet.c:53,1
    - Dst: peer_create_accept
      Src: /src/frr/tests/bgpd/test_packet.c:57,1
    - Dst: SET_FLAG
      Src: /src/frr/tests/bgpd/test_packet.c:66,1
    - Dst: open
      Src: /src/frr/tests/bgpd/test_packet.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 74
    functionName: main
    functionSourceFile: /src/frr/tests/bgpd/test_packet.c
    functionUses: 1
    functionsReached:
    - open
    - vrf_init
    - peer_create_accept
    - bgp_get
    - event_master_create
    - bgp_option_set
    - bgp_master_init
    - list_new
    - SET_FLAG
    - qobj_init
    - bgp_attr_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:74,1
    - Dst: ecommunity_str
      Src: /src/frr/tests/bgpd/test_ecommunity.c:74,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/tests/bgpd/test_ecommunity.c:75,1
    - Dst: ecommunity_str2com
      Src: /src/frr/tests/bgpd/test_ecommunity.c:76,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/tests/bgpd/test_ecommunity.c:78,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_ecommunity.c:83,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:86,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_ecommunity.c:88,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:91,1
    - Dst: ecommunity_free
      Src: /src/frr/tests/bgpd/test_ecommunity.c:95,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_ecommunity.c:96,1
    - Dst: XFREE
      Src: /src/frr/tests/bgpd/test_ecommunity.c:97,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ecom
    - sp
    argTypes:
    - struct ecommunity*
    - struct test_spec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 100
    functionName: validate
    functionSourceFile: /src/frr/tests/bgpd/test_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_str
    - ecommunity_ecom2str
    - strcmp
    - printf
    - XFREE
    - ecommunity_str2com
    - ecommunity_free
    linkageType: ''
    returnType: int
    signature: int validate(struct ecommunity *ecom, const struct test_spec *sp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:107,1
    - Dst: ecommunity_parse
      Src: /src/frr/tests/bgpd/test_ecommunity.c:109,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:111,1
    - Dst: ecommunity_str
      Src: /src/frr/tests/bgpd/test_ecommunity.c:111,1
    - Dst: validate
      Src: /src/frr/tests/bgpd/test_ecommunity.c:113,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:114,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:116,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:118,1
    - Dst: ecommunity_unintern
      Src: /src/frr/tests/bgpd/test_ecommunity.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct test_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 120
    functionName: parse_test
    functionSourceFile: /src/frr/tests/bgpd/test_ecommunity.c
    functionUses: 1
    functionsReached:
    - ecommunity_parse
    - validate
    - ecommunity_str
    - printf
    - ecommunity_unintern
    linkageType: ''
    returnType: void
    signature: void parse_test(struct test_segment *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_init
      Src: /src/frr/tests/bgpd/test_ecommunity.c:126,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_ecommunity.c:128,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_ecommunity.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 134
    functionName: main
    functionSourceFile: /src/frr/tests/bgpd/test_ecommunity.c
    functionUses: 1
    functionsReached:
    - ecommunity_init
    - parse_test
    - printf
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:968,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:970,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:971,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:978,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:982,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:985,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:987,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - peer
    - t
    - parse_ret
    - nlri_ret
    argTypes:
    - struct peer*
    - struct test_segment*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 988
    functionName: handle_result
    functionSourceFile: /src/frr/tests/bgpd/test_mp_attr.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: "void handle_result(struct peer *peer, struct test_segment *t,\n\t\t\t
      \ int parse_ret, int nlri_ret)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1003,1
    - Dst: stream_reset
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1006,1
    - Dst: stream_put
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1007,1
    - Dst: stream_set_getp
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1008,1
    - Dst: stream_write
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1010,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1012,1
    - Dst: bgp_mp_reach_parse
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1016,1
    - Dst: bgp_mp_unreach_parse
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1019,1
    - Dst: bgp_attr_prefix_sid
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1022,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1025,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1033,1
    - Dst: assert
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1035,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1037,1
    - Dst: bgp_nlri_parse
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1045,1
    - Dst: bgp_nlri_parse
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1047,1
    - Dst: handle_result
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1049,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - peer
    - t
    - type
    argTypes:
    - struct peer*
    - struct test_segment*
    - int
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1034
        line_start: 1034
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
    constantsTouched: []
    func_position:
      end: 1050
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1050
    functionName: parse_test
    functionSourceFile: /src/frr/tests/bgpd/test_mp_attr.c
    functionUses: 2
    functionsReached:
    - stream_set_getp
    - handle_result
    - stream_put
    - bgp_mp_reach_parse
    - bgp_mp_unreach_parse
    - bgp_nlri_parse
    - bgp_attr_prefix_sid
    - stream_write
    - bgp_map_afi_safi_int2iana
    - BGP_INPUT_PNT
    - printf
    - stream_reset
    - assert
    linkageType: ''
    returnType: void
    signature: void parse_test(struct peer *peer, struct test_segment *t, int type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qobj_init
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1070,1
    - Dst: cmd_init
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1071,1
    - Dst: bgp_vty_init
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1072,1
    - Dst: event_master_create
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1073,1
    - Dst: bgp_master_init
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1074,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1074,1
    - Dst: vrf_init
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1075,1
    - Dst: bgp_option_set
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1076,1
    - Dst: bgp_attr_init
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1077,1
    - Dst: fileno
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1079,1
    - Dst: isatty
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1080,1
    - Dst: fileno
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1080,1
    - Dst: bgp_get
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1082,1
    - Dst: peer_create_accept
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1086,1
    - Dst: stream_new
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1089,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1102,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1107,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1112,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_mp_attr.c:1114,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1116
    functionName: main
    functionSourceFile: /src/frr/tests/bgpd/test_mp_attr.c
    functionUses: 1
    functionsReached:
    - stream_new
    - vrf_init
    - isatty
    - peer_create_accept
    - cmd_init
    - bgp_get
    - bgp_vty_init
    - event_master_create
    - fileno
    - parse_test
    - bgp_option_set
    - bgp_master_init
    - list_new
    - printf
    - qobj_init
    - bgp_attr_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/tests/bgpd/test_aspath.c:986,1
    - Dst: stream_put
      Src: /src/frr/tests/bgpd/test_aspath.c:987,1
    - Dst: aspath_parse
      Src: /src/frr/tests/bgpd/test_aspath.c:989,1
    - Dst: stream_free
      Src: /src/frr/tests/bgpd/test_aspath.c:992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - data
    - len
    - use32bit
    - asnotation
    argTypes:
    - uint8_t*
    - size_t
    - int
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 995
    functionName: make_aspath
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_parse
    - stream_free
    - stream_new
    - stream_put
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *make_aspath(const uint8_t *data, size_t len, int use32bit,\n\t\t\t\t
      \ enum asnotation_mode asnotation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1002,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1004,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bytes
    - len
    argTypes:
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1008
    functionName: printbytes
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void printbytes(const uint8_t *bytes, int len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1020,1
    - Dst: aspath_snmp_pathseg
      Src: /src/frr/tests/bgpd/test_aspath.c:1024,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1025,1
    - Dst: stream_new
      Src: /src/frr/tests/bgpd/test_aspath.c:1028,1
    - Dst: aspath_put
      Src: /src/frr/tests/bgpd/test_aspath.c:1029,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1030,1
    - Dst: STREAM_DATA
      Src: /src/frr/tests/bgpd/test_aspath.c:1030,1
    - Dst: asn_relax_as_zero
      Src: /src/frr/tests/bgpd/test_aspath.c:1032,1
    - Dst: aspath_str2aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1033,1
    - Dst: asn_relax_as_zero
      Src: /src/frr/tests/bgpd/test_aspath.c:1034,1
    - Dst: aspath_delete_confed_seq
      Src: /src/frr/tests/bgpd/test_aspath.c:1036,1
    - Dst: aspath_dup
      Src: /src/frr/tests/bgpd/test_aspath.c:1036,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1038,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1038,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_aspath.c:1063,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1063,1
    - Dst: aspath_key_make
      Src: /src/frr/tests/bgpd/test_aspath.c:1065,1
    - Dst: aspath_key_make
      Src: /src/frr/tests/bgpd/test_aspath.c:1065,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_aspath.c:1067,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1067,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_aspath.c:1069,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1069,1
    - Dst: aspath_count_hops
      Src: /src/frr/tests/bgpd/test_aspath.c:1071,1
    - Dst: aspath_count_confeds
      Src: /src/frr/tests/bgpd/test_aspath.c:1072,1
    - Dst: aspath_count_hops
      Src: /src/frr/tests/bgpd/test_aspath.c:1073,1
    - Dst: aspath_count_confeds
      Src: /src/frr/tests/bgpd/test_aspath.c:1074,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1077,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1078,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1078,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1079,1
    - Dst: aspath_key_make
      Src: /src/frr/tests/bgpd/test_aspath.c:1079,1
    - Dst: aspath_key_make
      Src: /src/frr/tests/bgpd/test_aspath.c:1080,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1081,1
    - Dst: aspath_count_hops
      Src: /src/frr/tests/bgpd/test_aspath.c:1082,1
    - Dst: aspath_count_hops
      Src: /src/frr/tests/bgpd/test_aspath.c:1082,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1083,1
    - Dst: aspath_count_confeds
      Src: /src/frr/tests/bgpd/test_aspath.c:1084,1
    - Dst: aspath_count_confeds
      Src: /src/frr/tests/bgpd/test_aspath.c:1084,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1085,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1085,1
    - Dst: printbytes
      Src: /src/frr/tests/bgpd/test_aspath.c:1086,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1089,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1091,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_aspath.c:1093,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1093,1
    - Dst: aspath_key_make
      Src: /src/frr/tests/bgpd/test_aspath.c:1095,1
    - Dst: aspath_key_make
      Src: /src/frr/tests/bgpd/test_aspath.c:1096,1
    - Dst: aspath_delete_confed_seq
      Src: /src/frr/tests/bgpd/test_aspath.c:1096,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1099,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1100,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1101,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1105,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1106,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_aspath.c:1107,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1107,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1110,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1110,1
    - Dst: aspath_loop_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1114,1
    - Dst: aspath_loop_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1115,1
    - Dst: aspath_private_as_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1116,1
    - Dst: aspath_firstas_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1117,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1120,1
    - Dst: aspath_firstas_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1121,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1122,1
    - Dst: aspath_loop_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1123,1
    - Dst: aspath_loop_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1124,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1125,1
    - Dst: aspath_private_as_check
      Src: /src/frr/tests/bgpd/test_aspath.c:1126,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1128,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1129,1
    - Dst: aspath_free
      Src: /src/frr/tests/bgpd/test_aspath.c:1131,1
    - Dst: aspath_free
      Src: /src/frr/tests/bgpd/test_aspath.c:1132,1
    - Dst: stream_reset
      Src: /src/frr/tests/bgpd/test_aspath.c:1133,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 51
    argCount: 2
    argNames:
    - as
    - sp
    argTypes:
    - struct aspath*
    - struct test_spec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1011
    functionDepth: 2
    functionLinenumber: 1011
    functionLinenumberEnd: 1136
    functionName: validate
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 1
    functionsReached:
    - aspath_delete_confed_seq
    - printbytes
    - aspath_key_make
    - aspath_str2aspath
    - stream_reset
    - aspath_put
    - asn_relax_as_zero
    - make_aspath
    - aspath_snmp_pathseg
    - printf
    - aspath_print
    - aspath_loop_check
    - aspath_count_hops
    - aspath_unintern
    - aspath_dup
    - aspath_count_confeds
    - aspath_private_as_check
    - aspath_free
    - stream_new
    - STREAM_DATA
    - strcmp
    - aspath_firstas_check
    linkageType: ''
    returnType: int
    signature: int validate(struct aspath *as, const struct test_spec *sp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aspath_empty_get
      Src: /src/frr/tests/bgpd/test_aspath.c:1140,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1143,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1143,1
    - Dst: validate
      Src: /src/frr/tests/bgpd/test_aspath.c:1144,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1145,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1147,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1149,1
    - Dst: aspath_free
      Src: /src/frr/tests/bgpd/test_aspath.c:1151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1138
    functionDepth: 1
    functionLinenumber: 1138
    functionLinenumberEnd: 1152
    functionName: empty_get_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_empty_get
    - aspath_free
    - validate
    - aspath_print
    - printf
    linkageType: ''
    returnType: void
    signature: void empty_get_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1159,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1161,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1163,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1163,1
    - Dst: validate
      Src: /src/frr/tests/bgpd/test_aspath.c:1165,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1166,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1168,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1170,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct test_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1155
    functionDepth: 2
    functionLinenumber: 1155
    functionLinenumberEnd: 1173
    functionName: parse_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 3
    functionsReached:
    - aspath_unintern
    - validate
    - make_aspath
    - aspath_print
    - printf
    linkageType: ''
    returnType: void
    signature: void parse_test(struct test_segment *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1180,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1181,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1183,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1185,1
    - Dst: aspath_dup
      Src: /src/frr/tests/bgpd/test_aspath.c:1188,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1189,1
    - Dst: aspath_prepend
      Src: /src/frr/tests/bgpd/test_aspath.c:1191,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1193,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1193,1
    - Dst: validate
      Src: /src/frr/tests/bgpd/test_aspath.c:1195,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1196,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1198,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1200,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1201,1
    - Dst: aspath_free
      Src: /src/frr/tests/bgpd/test_aspath.c:1202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct tests*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1176
    functionDepth: 2
    functionLinenumber: 1176
    functionLinenumberEnd: 1203
    functionName: prepend_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_unintern
    - aspath_free
    - make_aspath
    - aspath_dup
    - validate
    - aspath_prepend
    - printf
    - aspath_print
    linkageType: ''
    returnType: void
    signature: void prepend_test(struct tests *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1210,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1212,1
    - Dst: aspath_empty
      Src: /src/frr/tests/bgpd/test_aspath.c:1213,1
    - Dst: aspath_dup
      Src: /src/frr/tests/bgpd/test_aspath.c:1215,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1216,1
    - Dst: aspath_prepend
      Src: /src/frr/tests/bgpd/test_aspath.c:1218,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1220,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1220,1
    - Dst: validate
      Src: /src/frr/tests/bgpd/test_aspath.c:1222,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1223,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1225,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1227,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1228,1
    - Dst: aspath_free
      Src: /src/frr/tests/bgpd/test_aspath.c:1229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct test_segment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1206
    functionDepth: 2
    functionLinenumber: 1206
    functionLinenumberEnd: 1230
    functionName: empty_prepend_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_unintern
    - aspath_free
    - make_aspath
    - aspath_dup
    - validate
    - aspath_prepend
    - printf
    - aspath_print
    - aspath_empty
    linkageType: ''
    returnType: void
    signature: void empty_prepend_test(struct test_segment *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1237,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1238,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1240,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1242,1
    - Dst: aspath_reconcile_as4
      Src: /src/frr/tests/bgpd/test_aspath.c:1245,1
    - Dst: validate
      Src: /src/frr/tests/bgpd/test_aspath.c:1247,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1248,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1250,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1252,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1253,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1254,1
    - Dst: aspath_free
      Src: /src/frr/tests/bgpd/test_aspath.c:1255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct tests*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1233
    functionDepth: 2
    functionLinenumber: 1233
    functionLinenumberEnd: 1256
    functionName: as4_reconcile_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_unintern
    - aspath_free
    - make_aspath
    - validate
    - aspath_reconcile_as4
    - printf
    linkageType: ''
    returnType: void
    signature: void as4_reconcile_test(struct tests *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1264,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1265,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1267,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1269,1
    - Dst: aspath_aggregate
      Src: /src/frr/tests/bgpd/test_aspath.c:1272,1
    - Dst: validate
      Src: /src/frr/tests/bgpd/test_aspath.c:1274,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1275,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1277,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1279,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1280,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1281,1
    - Dst: aspath_free
      Src: /src/frr/tests/bgpd/test_aspath.c:1282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct tests*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1260
    functionDepth: 2
    functionLinenumber: 1260
    functionLinenumberEnd: 1284
    functionName: aggregate_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_unintern
    - aspath_free
    - validate
    - aspath_aggregate
    - make_aspath
    - printf
    linkageType: ''
    returnType: void
    signature: void aggregate_test(struct tests *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1299,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1300,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1302,1
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1303,1
    - Dst: aspath_cmp_left
      Src: /src/frr/tests/bgpd/test_aspath.c:1305,1
    - Dst: aspath_cmp_left
      Src: /src/frr/tests/bgpd/test_aspath.c:1306,1
    - Dst: aspath_cmp_left_confed
      Src: /src/frr/tests/bgpd/test_aspath.c:1308,1
    - Dst: aspath_cmp_left_confed
      Src: /src/frr/tests/bgpd/test_aspath.c:1310,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1313,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1314,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1317,1
    - Dst: aspath_cmp_left
      Src: /src/frr/tests/bgpd/test_aspath.c:1318,1
    - Dst: aspath_cmp_left_confed
      Src: /src/frr/tests/bgpd/test_aspath.c:1319,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1320,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1320,1
    - Dst: aspath_print
      Src: /src/frr/tests/bgpd/test_aspath.c:1321,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1323,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1325,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1326,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1287
    functionDepth: 2
    functionLinenumber: 1287
    functionLinenumberEnd: 1329
    functionName: cmp_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_unintern
    - make_aspath
    - aspath_cmp_left
    - printf
    - aspath_print
    - aspath_cmp_left_confed
    linkageType: ''
    returnType: void
    signature: void cmp_test(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: make_aspath
      Src: /src/frr/tests/bgpd/test_aspath.c:1341,1
    - Dst: stream_new
      Src: /src/frr/tests/bgpd/test_aspath.c:1345,1
    - Dst: stream_fifo_new
      Src: /src/frr/tests/bgpd/test_aspath.c:1346,1
    - Dst: stream_write
      Src: /src/frr/tests/bgpd/test_aspath.c:1353,1
    - Dst: aspath_put
      Src: /src/frr/tests/bgpd/test_aspath.c:1354,1
    - Dst: stream_write
      Src: /src/frr/tests/bgpd/test_aspath.c:1358,1
    - Dst: stream_write
      Src: /src/frr/tests/bgpd/test_aspath.c:1359,1
    - Dst: bgp_attr_parse
      Src: /src/frr/tests/bgpd/test_aspath.c:1364,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1367,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1369,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1376,1
    - Dst: strcmp
      Src: /src/frr/tests/bgpd/test_aspath.c:1380,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1381,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1388,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1393,1
    - Dst: aspath_unintern
      Src: /src/frr/tests/bgpd/test_aspath.c:1394,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct aspath_tests*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1331
    functionDepth: 2
    functionLinenumber: 1331
    functionLinenumberEnd: 1396
    functionName: handle_attr_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_unintern
    - stream_new
    - make_aspath
    - stream_fifo_new
    - strcmp
    - bgp_attr_parse
    - stream_write
    - printf
    - aspath_put
    linkageType: ''
    returnType: int
    signature: int handle_attr_test(struct aspath_tests *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1400,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1401,1
    - Dst: handle_attr_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct aspath_tests*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1398
    functionDepth: 3
    functionLinenumber: 1398
    functionLinenumberEnd: 1402
    functionName: attr_test
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 1
    functionsReached:
    - printf
    - handle_attr_test
    linkageType: ''
    returnType: void
    signature: void attr_test(struct aspath_tests *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qobj_init
      Src: /src/frr/tests/bgpd/test_aspath.c:1407,1
    - Dst: bgp_master_init
      Src: /src/frr/tests/bgpd/test_aspath.c:1408,1
    - Dst: event_master_create
      Src: /src/frr/tests/bgpd/test_aspath.c:1408,1
    - Dst: list_new
      Src: /src/frr/tests/bgpd/test_aspath.c:1409,1
    - Dst: bgp_option_set
      Src: /src/frr/tests/bgpd/test_aspath.c:1411,1
    - Dst: bgp_attr_init
      Src: /src/frr/tests/bgpd/test_aspath.c:1412,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1415,1
    - Dst: parse_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1416,1
    - Dst: empty_prepend_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1417,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1422,1
    - Dst: prepend_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1423,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1428,1
    - Dst: aggregate_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1429,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1435,1
    - Dst: as4_reconcile_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1436,1
    - Dst: cmp_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1441,1
    - Dst: empty_get_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1445,1
    - Dst: frr_pthread_init
      Src: /src/frr/tests/bgpd/test_aspath.c:1449,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/tests/bgpd/test_aspath.c:1450,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1454,1
    - Dst: attr_test
      Src: /src/frr/tests/bgpd/test_aspath.c:1455,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1458,1
    - Dst: printf
      Src: /src/frr/tests/bgpd/test_aspath.c:1459,1
    - Dst: aspath_count
      Src: /src/frr/tests/bgpd/test_aspath.c:1459,1
    - Dst: aspath_count
      Src: /src/frr/tests/bgpd/test_aspath.c:1461,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1404
    functionDepth: 4
    functionLinenumber: 1404
    functionLinenumberEnd: 1462
    functionName: main
    functionSourceFile: /src/frr/tests/bgpd/test_aspath.c
    functionUses: 1
    functionsReached:
    - prepend_test
    - empty_get_test
    - aggregate_test
    - cmp_test
    - parse_test
    - empty_prepend_test
    - event_master_create
    - bgp_option_set
    - bgp_master_init
    - list_new
    - frr_pthread_init
    - printf
    - qobj_init
    - bgp_attr_init
    - bgp_pthreads_init
    - attr_test
    - as4_reconcile_test
    - aspath_count
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:18,1
    - Dst: inet_pton
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:22,1
    - Dst: isis_vertex_new
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:23,1
    - Dst: inet_pton
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:29,1
    - Dst: isis_vertex_new
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:30,1
    - Dst: memset
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:34,1
    - Dst: isis_vertex_new
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:36,1
    - Dst: memset
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:41,1
    - Dst: isis_vertex_new
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:43,1
    - Dst: inet_pton
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:50,1
    - Dst: isis_vertex_new
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 54
    functionName: setup_test_vertices
    functionSourceFile: /src/frr/tests/isisd/test_isis_vertex_queue.c
    functionUses: 0
    functionsReached:
    - memset
    - inet_pton
    - XMALLOC
    - isis_vertex_new
    linkageType: ''
    returnType: void
    signature: void setup_test_vertices(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_vertex_del
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:59,1
    - Dst: XFREE
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: cleanup_test_vertices
    functionSourceFile: /src/frr/tests/isisd/test_isis_vertex_queue.c
    functionUses: 0
    functionsReached:
    - isis_vertex_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cleanup_test_vertices(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_vertex_queue_init
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:68,1
    - Dst: isis_vertex_queue_insert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:70,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:72,1
    - Dst: isis_vertex_queue_count
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:72,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:75,1
    - Dst: isis_find_vertex
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:75,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:78,1
    - Dst: isis_vertex_queue_pop
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:78,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:79,1
    - Dst: isis_find_vertex
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:79,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:81,1
    - Dst: isis_vertex_queue_pop
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:81,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:82,1
    - Dst: isis_find_vertex
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:82,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:84,1
    - Dst: isis_vertex_queue_pop
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:84,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:85,1
    - Dst: isis_find_vertex
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:85,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:87,1
    - Dst: isis_vertex_queue_pop
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:87,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:88,1
    - Dst: isis_find_vertex
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:88,1
    - Dst: isis_vertex_queue_delete
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:90,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:91,1
    - Dst: isis_find_vertex
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:91,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:93,1
    - Dst: isis_vertex_queue_count
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:93,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:94,1
    - Dst: isis_vertex_queue_pop
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:94,1
    - Dst: isis_vertex_queue_free
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (isis_vertex_queue_pop(&q) == vertices[2])
      pos:
        line_end: 77
        line_start: 77
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_find_vertex(&q, &vertices[2]->N, vertices[2]->type) == NULL)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_vertex_queue_pop(&q) == vertices[0])
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_find_vertex(&q, &vertices[0]->N, vertices[0]->type) == NULL)
      pos:
        line_end: 84
        line_start: 84
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_vertex_queue_pop(&q) == NULL)
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_vertex_queue_count(&q) == vertex_count)
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_find_vertex(&q, &vertices[i]->N, vertices[i]->type) == vertices[i])
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_vertex_queue_pop(&q) == vertices[1])
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_find_vertex(&q, &vertices[1]->N, vertices[1]->type) == NULL)
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_find_vertex(&q, &vertices[3]->N, vertices[3]->type) == NULL)
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_vertex_queue_pop(&q) == vertices[3])
      pos:
        line_end: 80
        line_start: 80
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_find_vertex(&q, &vertices[4]->N, vertices[4]->type) == NULL)
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    - condition: (isis_vertex_queue_count(&q) == 0)
      pos:
        line_end: 92
        line_start: 92
        source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
    constantsTouched: []
    func_position:
      end: 97
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 97
    functionName: test_ordered
    functionSourceFile: /src/frr/tests/isisd/test_isis_vertex_queue.c
    functionUses: 0
    functionsReached:
    - isis_vertex_queue_insert
    - isis_vertex_queue_count
    - isis_vertex_queue_delete
    - isis_vertex_queue_init
    - isis_vertex_queue_pop
    - isis_vertex_queue_free
    - assert
    - isis_find_vertex
    linkageType: ''
    returnType: void
    signature: void test_ordered(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_test_vertices
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:101,1
    - Dst: test_ordered
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:102,1
    - Dst: cleanup_test_vertices
      Src: /src/frr/tests/isisd/test_isis_vertex_queue.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: main
    functionSourceFile: /src/frr/tests/isisd/test_isis_vertex_queue.c
    functionUses: 1
    functionsReached:
    - cleanup_test_vertices
    - setup_test_vertices
    - test_ordered
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_spftree_new
      Src: /src/frr/tests/isisd/test_isis_spf.c:51,1
    - Dst: isis_run_spf
      Src: /src/frr/tests/isisd/test_isis_spf.c:54,1
    - Dst: isis_print_spftree
      Src: /src/frr/tests/isisd/test_isis_spf.c:57,1
    - Dst: isis_print_routes
      Src: /src/frr/tests/isisd/test_isis_spf.c:58,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 8
    argNames:
    - vty
    - topology
    - root
    - area
    - lspdb
    - level
    - tree
    - reverse
    argTypes:
    - struct vty*
    - struct isis_topology*
    - struct isis_test_node*
    - struct isis_area*
    - struct lspdb_head*
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 62
    functionName: test_run_spf
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 1
    functionsReached:
    - isis_spftree_new
    - isis_print_spftree
    - isis_spftree_del
    - isis_print_routes
    - isis_run_spf
    linkageType: ''
    returnType: void
    signature: "void test_run_spf(struct vty *vty, const struct isis_topology *topology,\n\t\t\t
      const struct isis_test_node *root,\n\t\t\t struct isis_area *area, struct lspdb_head
      *lspdb,\n\t\t\t int level, int tree, bool reverse)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_spftree_new
      Src: /src/frr/tests/isisd/test_isis_spf.c:76,1
    - Dst: isis_run_spf
      Src: /src/frr/tests/isisd/test_isis_spf.c:78,1
    - Dst: isis_spf_run_neighbors
      Src: /src/frr/tests/isisd/test_isis_spf.c:81,1
    - Dst: isis_lfa_compute
      Src: /src/frr/tests/isisd/test_isis_spf.c:84,1
    - Dst: isis_print_spftree
      Src: /src/frr/tests/isisd/test_isis_spf.c:87,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:88,1
    - Dst: isis_print_routes
      Src: /src/frr/tests/isisd/test_isis_spf.c:89,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:90,1
    - Dst: isis_print_routes
      Src: /src/frr/tests/isisd/test_isis_spf.c:91,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 8
    argNames:
    - vty
    - topology
    - root
    - area
    - lspdb
    - level
    - tree
    - protected_resource
    argTypes:
    - struct vty*
    - struct isis_topology*
    - struct isis_test_node*
    - struct isis_area*
    - struct lspdb_head*
    - int
    - int
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 95
    functionName: test_run_lfa
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_spftree_new
    - vty_out
    - isis_print_spftree
    - isis_print_routes
    - isis_spftree_del
    - isis_run_spf
    - isis_spf_run_neighbors
    - isis_lfa_compute
    linkageType: ''
    returnType: void
    signature: "void test_run_lfa(struct vty *vty, const struct isis_topology *topology,\n\t\t\t
      const struct isis_test_node *root,\n\t\t\t struct isis_area *area, struct lspdb_head
      *lspdb,\n\t\t\t int level, int tree,\n\t\t\t struct lfa_protected_resource *protected_resource)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_spftree_new
      Src: /src/frr/tests/isisd/test_isis_spf.c:113,1
    - Dst: isis_run_spf
      Src: /src/frr/tests/isisd/test_isis_spf.c:115,1
    - Dst: isis_spf_reverse_run
      Src: /src/frr/tests/isisd/test_isis_spf.c:118,1
    - Dst: isis_spf_run_neighbors
      Src: /src/frr/tests/isisd/test_isis_spf.c:121,1
    - Dst: isis_lfa_compute
      Src: /src/frr/tests/isisd/test_isis_spf.c:124,1
    - Dst: isis_rlfa_compute
      Src: /src/frr/tests/isisd/test_isis_spf.c:127,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:131,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:132,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:133,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:133,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:134,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:135,1
    - Dst: RB_EMPTY
      Src: /src/frr/tests/isisd/test_isis_spf.c:136,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:138,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:139,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:140,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:141,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:141,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:142,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:144,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:145,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:146,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:146,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:147,1
    - Dst: isis_print_spftree
      Src: /src/frr/tests/isisd/test_isis_spf.c:150,1
    - Dst: frr_each_safe
      Src: /src/frr/tests/isisd/test_isis_spf.c:156,1
    - Dst: test_topology_node_ldp_label
      Src: /src/frr/tests/isisd/test_isis_spf.c:159,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_spf.c:161,1
    - Dst: isis_rlfa_activate
      Src: /src/frr/tests/isisd/test_isis_spf.c:162,1
    - Dst: isis_print_spftree
      Src: /src/frr/tests/isisd/test_isis_spf.c:166,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:167,1
    - Dst: isis_print_routes
      Src: /src/frr/tests/isisd/test_isis_spf.c:168,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:169,1
    - Dst: isis_print_routes
      Src: /src/frr/tests/isisd/test_isis_spf.c:170,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:173,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:174,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 8
    argNames:
    - vty
    - topology
    - root
    - area
    - lspdb
    - level
    - tree
    - protected_resource
    argTypes:
    - struct vty*
    - struct isis_topology*
    - struct isis_test_node*
    - struct isis_area*
    - struct lspdb_head*
    - int
    - int
    - struct lfa_protected_resource*
    assertStmts:
    - condition: (response.pq_label != MPLS_INVALID_LABEL)
      pos:
        line_end: 160
        line_start: 160
        source_file: /src/frr/tests/isisd/test_isis_spf.c
    constantsTouched: []
    func_position:
      end: 176
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 176
    functionName: test_run_rlfa
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_spftree_new
    - vty_out
    - test_topology_node_ldp_label
    - isis_rlfa_compute
    - print_sys_hostname
    - isis_spf_reverse_run
    - RB_FOREACH
    - isis_lfa_compute
    - isis_print_spftree
    - isis_rlfa_activate
    - frr_each_safe
    - isis_print_routes
    - isis_spftree_del
    - RB_EMPTY
    - isis_spf_run_neighbors
    - isis_run_spf
    - assert
    linkageType: ''
    returnType: void
    signature: "void test_run_rlfa(struct vty *vty, const struct isis_topology *topology,\n\t\t\t
      \ const struct isis_test_node *root,\n\t\t\t  struct isis_area *area, struct
      lspdb_head *lspdb,\n\t\t\t  int level, int tree,\n\t\t\t  struct lfa_protected_resource
      *protected_resource)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_spftree_new
      Src: /src/frr/tests/isisd/test_isis_spf.c:194,1
    - Dst: isis_run_spf
      Src: /src/frr/tests/isisd/test_isis_spf.c:196,1
    - Dst: isis_spf_reverse_run
      Src: /src/frr/tests/isisd/test_isis_spf.c:199,1
    - Dst: isis_spf_run_neighbors
      Src: /src/frr/tests/isisd/test_isis_spf.c:202,1
    - Dst: isis_tilfa_compute
      Src: /src/frr/tests/isisd/test_isis_spf.c:205,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:209,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:210,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:211,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:211,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:212,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:213,1
    - Dst: RB_EMPTY
      Src: /src/frr/tests/isisd/test_isis_spf.c:214,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:216,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:217,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:218,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:219,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:219,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:220,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:222,1
    - Dst: RB_FOREACH
      Src: /src/frr/tests/isisd/test_isis_spf.c:223,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:224,1
    - Dst: print_sys_hostname
      Src: /src/frr/tests/isisd/test_isis_spf.c:224,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:225,1
    - Dst: isis_print_spftree
      Src: /src/frr/tests/isisd/test_isis_spf.c:230,1
    - Dst: isis_print_routes
      Src: /src/frr/tests/isisd/test_isis_spf.c:231,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:234,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:235,1
    - Dst: isis_spftree_del
      Src: /src/frr/tests/isisd/test_isis_spf.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 8
    argNames:
    - vty
    - topology
    - root
    - area
    - lspdb
    - level
    - tree
    - protected_resource
    argTypes:
    - struct vty*
    - struct isis_topology*
    - struct isis_test_node*
    - struct isis_area*
    - struct lspdb_head*
    - int
    - int
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 237
    functionName: test_run_ti_lfa
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_spftree_new
    - vty_out
    - print_sys_hostname
    - isis_spf_reverse_run
    - RB_FOREACH
    - isis_print_spftree
    - isis_print_routes
    - isis_spftree_del
    - isis_tilfa_compute
    - isis_spf_run_neighbors
    - isis_run_spf
    - RB_EMPTY
    linkageType: ''
    returnType: void
    signature: "void test_run_ti_lfa(struct vty *vty,\n\t\t\t    const struct isis_topology
      *topology,\n\t\t\t    const struct isis_test_node *root,\n\t\t\t    struct isis_area
      *area, struct lspdb_head *lspdb,\n\t\t\t    int level, int tree,\n\t\t\t    struct
      lfa_protected_resource *protected_resource)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: isis_area_create
      Src: /src/frr/tests/isisd/test_isis_spf.c:249,1
    - Dst: memcpy
      Src: /src/frr/tests/isisd/test_isis_spf.c:250,1
    - Dst: test_topology_load
      Src: /src/frr/tests/isisd/test_isis_spf.c:253,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:254,1
    - Dst: sysid2buff
      Src: /src/frr/tests/isisd/test_isis_spf.c:260,1
    - Dst: dynhn_find_by_name
      Src: /src/frr/tests/isisd/test_isis_spf.c:263,1
    - Dst: vty_out
      Src: /src/frr/tests/isisd/test_isis_spf.c:265,1
    - Dst: memcpy
      Src: /src/frr/tests/isisd/test_isis_spf.c:269,1
    - Dst: memcpy
      Src: /src/frr/tests/isisd/test_isis_spf.c:273,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/tests/isisd/test_isis_spf.c:274,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_isis_spf.c:279,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_isis_spf.c:281,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_isis_spf.c:287,1
    - Dst: show_isis_database_lspdb_vty
      Src: /src/frr/tests/isisd/test_isis_spf.c:288,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_isis_spf.c:294,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_isis_spf.c:297,1
    - Dst: test_run_spf
      Src: /src/frr/tests/isisd/test_isis_spf.c:302,1
    - Dst: test_run_spf
      Src: /src/frr/tests/isisd/test_isis_spf.c:307,1
    - Dst: test_run_lfa
      Src: /src/frr/tests/isisd/test_isis_spf.c:312,1
    - Dst: test_run_rlfa
      Src: /src/frr/tests/isisd/test_isis_spf.c:317,1
    - Dst: test_run_ti_lfa
      Src: /src/frr/tests/isisd/test_isis_spf.c:322,1
    - Dst: isis_area_destroy
      Src: /src/frr/tests/isisd/test_isis_spf.c:331,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 57
    argCount: 8
    argNames:
    - vty
    - topology
    - root
    - test_type
    - flags
    - protection_type
    - fail_sysid_str
    - fail_pseudonode_id
    argTypes:
    - struct vty*
    - struct isis_topology*
    - struct isis_test_node*
    - enum test_type
    - uint8_t
    - enum lfa_protection_type
    - char*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 334
    functionName: test_run
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 0
    functionsReached:
    - test_run_ti_lfa
    - vty_out
    - test_topology_load
    - isis_area_destroy
    - test_run_rlfa
    - LSP_PSEUDO_ID
    - CHECK_FLAG
    - show_isis_database_lspdb_vty
    - isis_area_create
    - sysid2buff
    - dynhn_find_by_name
    - test_run_spf
    - test_run_lfa
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int test_run(struct vty *vty, const struct isis_topology *topology,\n\t\t
      \   const struct isis_test_node *root, enum test_type test_type,\n\t\t    uint8_t
      flags, enum lfa_protection_type protection_type,\n\t\t    const char *fail_sysid_str,
      uint8_t fail_pseudonode_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/isisd/test_isis_spf.c:457,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/isisd/test_isis_spf.c:459,1
    - Dst: vty_terminate
      Src: /src/frr/tests/isisd/test_isis_spf.c:460,1
    - Dst: yang_terminate
      Src: /src/frr/tests/isisd/test_isis_spf.c:461,1
    - Dst: event_master_free
      Src: /src/frr/tests/isisd/test_isis_spf.c:462,1
    - Dst: log_memstats
      Src: /src/frr/tests/isisd/test_isis_spf.c:464,1
    - Dst: exit
      Src: /src/frr/tests/isisd/test_isis_spf.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - isexit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 467
    functionName: vty_do_exit
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 0
    functionsReached:
    - exit
    - event_master_free
    - log_memstats
    - vty_terminate
    - printf
    - yang_terminate
    - cmd_terminate
    linkageType: ''
    returnType: void
    signature: void vty_do_exit(int isexit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_isis_spf.c:477,1
    - Dst: printf
      Src: /src/frr/tests/isisd/test_isis_spf.c:480,1
    - Dst: exit
      Src: /src/frr/tests/isisd/test_isis_spf.c:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - progname
    - status
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 489
    functionName: usage
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 1
    functionsReached:
    - fprintf
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void usage(char *progname, int status)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/tests/isisd/test_isis_spf.c:499,1
    - Dst: strrchr
      Src: /src/frr/tests/isisd/test_isis_spf.c:502,1
    - Dst: getopt_long
      Src: /src/frr/tests/isisd/test_isis_spf.c:507,1
    - Dst: usage
      Src: /src/frr/tests/isisd/test_isis_spf.c:519,1
    - Dst: usage
      Src: /src/frr/tests/isisd/test_isis_spf.c:522,1
    - Dst: event_master_create
      Src: /src/frr/tests/isisd/test_isis_spf.c:528,1
    - Dst: isis_master_init
      Src: /src/frr/tests/isisd/test_isis_spf.c:529,1
    - Dst: cmd_init
      Src: /src/frr/tests/isisd/test_isis_spf.c:532,1
    - Dst: cmd_hostname_set
      Src: /src/frr/tests/isisd/test_isis_spf.c:533,1
    - Dst: vty_init
      Src: /src/frr/tests/isisd/test_isis_spf.c:534,1
    - Dst: yang_init
      Src: /src/frr/tests/isisd/test_isis_spf.c:535,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/isisd/test_isis_spf.c:537,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/isisd/test_isis_spf.c:539,1
    - Dst: yang_module_load
      Src: /src/frr/tests/isisd/test_isis_spf.c:542,1
    - Dst: SET_FLAG
      Src: /src/frr/tests/isisd/test_isis_spf.c:543,1
    - Dst: install_element
      Src: /src/frr/tests/isisd/test_isis_spf.c:550,1
    - Dst: vty_stdio
      Src: /src/frr/tests/isisd/test_isis_spf.c:553,1
    - Dst: event_fetch
      Src: /src/frr/tests/isisd/test_isis_spf.c:556,1
    - Dst: event_call
      Src: /src/frr/tests/isisd/test_isis_spf.c:557,1
    - Dst: exit
      Src: /src/frr/tests/isisd/test_isis_spf.c:560,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 561
    functionName: main
    functionSourceFile: /src/frr/tests/isisd/test_isis_spf.c
    functionUses: 1
    functionsReached:
    - isis_master_init
    - exit
    - yang_init
    - yang_module_load
    - event_call
    - cmd_init
    - cmd_hostname_set
    - event_master_create
    - usage
    - strrchr
    - SET_FLAG
    - zlog_aux_init
    - getopt_long
    - vty_init
    - install_element
    - event_fetch
    - umask
    - vty_stdio
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: isis_sock_init
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_sock_init(struct isis_circuit *circuit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/tests/isisd/test_common.c:28,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - topology
    - hostname
    - pseudonode_id
    argTypes:
    - struct isis_topology*
    - char*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 33
    functionName: test_topology_find_node
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: struct isis_test_node
    signature: "struct isis_test_node *\ntest_topology_find_node(const struct isis_topology
      *topology,\n\t\t\tconst char *hostname, uint8_t pseudonode_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - test_topologies
    - number
    argTypes:
    - struct isis_topology*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 43
    functionName: test_topology_find
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct isis_topology
    signature: 'struct isis_topology *

      test_topology_find(struct isis_topology *test_topologies, uint16_t number)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/tests/isisd/test_common.c:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - tnode
    - hostname
    argTypes:
    - struct isis_test_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: test_find_adjacency
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: struct isis_test_node
    signature: 'struct isis_test_node *

      test_find_adjacency(const struct isis_test_node *tnode, const char *hostname)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/tests/isisd/test_common.c:69,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/tests/isisd/test_common.c:70,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - topology
    - router_id
    argTypes:
    - struct isis_topology*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 75
    functionName: test_topology_node_ldp_label
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 1
    functionsReached:
    - IPV4_ADDR_SAME
    - inet_pton
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t test_topology_node_ldp_label(const struct isis_topology
      *topology,\n\t\t\t\t\t  struct in_addr router_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/tests/isisd/test_common.c:84,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/tests/isisd/test_common.c:85,1
    - Dst: lsp_new
      Src: /src/frr/tests/isisd/test_common.c:88,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/tests/isisd/test_common.c:89,1
    - Dst: lspdb_add
      Src: /src/frr/tests/isisd/test_common.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - lspdb
    - area
    - level
    - sysid
    - pseudonode_id
    argTypes:
    - struct lspdb_head*
    - struct isis_area*
    - int
    - uint8_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 93
    functionName: lsp_add
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - LSP_PSEUDO_ID
    - lspdb_add
    - isis_alloc_tlvs
    - lsp_new
    - memcpy
    linkageType: ''
    returnType: struct isis_lsp
    signature: "struct isis_lsp *lsp_add(struct lspdb_head *lspdb,\n\t\t\t\tstruct
      isis_area *area, int level,\n\t\t\t\tconst uint8_t *sysid, uint8_t pseudonode_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lspid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix
      Src: /src/frr/tests/isisd/test_common.c:103,1
    - Dst: zlog_debug
      Src: /src/frr/tests/isisd/test_common.c:104,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_common.c:108,1
    - Dst: isis_tlvs_add_extended_ip_reach
      Src: /src/frr/tests/isisd/test_common.c:119,1
    - Dst: isis_tlvs_add_ipv6_reach
      Src: /src/frr/tests/isisd/test_common.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - lsp
    - tnode
    - prefix_str
    - next_sid_index
    argTypes:
    - struct isis_lsp*
    - struct isis_test_node*
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 126
    functionName: lsp_add_ip_reach
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_add_extended_ip_reach
    - CHECK_FLAG
    - zlog_debug
    - isis_tlvs_add_ipv6_reach
    - str2prefix
    linkageType: ''
    returnType: void
    signature: "void lsp_add_ip_reach(struct isis_lsp *lsp,\n\t\t\t     const struct
      isis_test_node *tnode,\n\t\t\t     const char *prefix_str, uint32_t *next_sid_index)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/tests/isisd/test_common.c:137,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/tests/isisd/test_common.c:138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_common.c:140,1
    - Dst: XCALLOC
      Src: /src/frr/tests/isisd/test_common.c:143,1
    - Dst: SET_FLAG
      Src: /src/frr/tests/isisd/test_common.c:145,1
    - Dst: SET_FLAG
      Src: /src/frr/tests/isisd/test_common.c:146,1
    - Dst: SET_FLAG
      Src: /src/frr/tests/isisd/test_common.c:148,1
    - Dst: isis_alloc_ext_subtlvs
      Src: /src/frr/tests/isisd/test_common.c:153,1
    - Dst: isis_tlvs_add_adj_sid
      Src: /src/frr/tests/isisd/test_common.c:154,1
    - Dst: isis_tlvs_add_extended_reach
      Src: /src/frr/tests/isisd/test_common.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 7
    argNames:
    - lsp
    - tnode
    - ne_id
    - pseudonode_id
    - metric
    - family
    - next_label
    argTypes:
    - struct isis_lsp*
    - struct isis_test_node*
    - uint8_t*
    - uint8_t
    - uint32_t
    - int
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 161
    functionName: lsp_add_reach
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - LSP_PSEUDO_ID
    - CHECK_FLAG
    - isis_tlvs_add_extended_reach
    - isis_tlvs_add_adj_sid
    - isis_alloc_ext_subtlvs
    - SET_FLAG
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lsp_add_reach(struct isis_lsp *lsp,\n\t\t\t  const struct isis_test_node
      *tnode,\n\t\t\t  const uint8_t *ne_id, uint8_t pseudonode_id,\n\t\t\t  uint32_t
      metric, int family, mpls_label_t *next_label)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_tlvs_init_router_capability
      Src: /src/frr/tests/isisd/test_common.c:171,1
    - Dst: inet_pton
      Src: /src/frr/tests/isisd/test_common.c:173,1
    - Dst: zlog_debug
      Src: /src/frr/tests/isisd/test_common.c:174,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/isisd/test_common.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - lsp
    - tnode
    argTypes:
    - struct isis_lsp*
    - struct isis_test_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 192
    functionName: lsp_add_router_capability
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_init_router_capability
    - inet_pton
    - zlog_debug
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: "void lsp_add_router_capability(struct isis_lsp *lsp,\n\t\t\t\t      const
      struct isis_test_node *tnode)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_tlvs_add_mt_router_info
      Src: /src/frr/tests/isisd/test_common.c:198,1
    - Dst: isis_tlvs_add_mt_router_info
      Src: /src/frr/tests/isisd/test_common.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - lsp
    - tnode
    argTypes:
    - struct isis_lsp*
    - struct isis_test_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 203
    functionName: lsp_add_mt_router_info
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_add_mt_router_info
    linkageType: ''
    returnType: void
    signature: "void lsp_add_mt_router_info(struct isis_lsp *lsp,\n\t\t\t\t   const
      struct isis_test_node *tnode)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_tlvs_set_protocols_supported
      Src: /src/frr/tests/isisd/test_common.c:221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - lsp
    - tnode
    argTypes:
    - struct isis_lsp*
    - struct isis_test_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 222
    functionName: lsp_add_protocols_supported
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_set_protocols_supported
    linkageType: ''
    returnType: void
    signature: "void lsp_add_protocols_supported(struct isis_lsp *lsp,\n\t\t\t\t\tconst
      struct isis_test_node *tnode)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lsp_add
      Src: /src/frr/tests/isisd/test_common.c:233,1
    - Dst: lsp_add_mt_router_info
      Src: /src/frr/tests/isisd/test_common.c:234,1
    - Dst: lsp_add_protocols_supported
      Src: /src/frr/tests/isisd/test_common.c:235,1
    - Dst: lsp_add_router_capability
      Src: /src/frr/tests/isisd/test_common.c:236,1
    - Dst: zlog_debug
      Src: /src/frr/tests/isisd/test_common.c:241,1
    - Dst: lsp_add_ip_reach
      Src: /src/frr/tests/isisd/test_common.c:246,1
    - Dst: zlog_debug
      Src: /src/frr/tests/isisd/test_common.c:256,1
    - Dst: test_topology_find_node
      Src: /src/frr/tests/isisd/test_common.c:263,1
    - Dst: zlog_debug
      Src: /src/frr/tests/isisd/test_common.c:266,1
    - Dst: test_find_adjacency
      Src: /src/frr/tests/isisd/test_common.c:271,1
    - Dst: zlog_debug
      Src: /src/frr/tests/isisd/test_common.c:272,1
    - Dst: lsp_add_reach
      Src: /src/frr/tests/isisd/test_common.c:280,1
    - Dst: lsp_add_reach
      Src: /src/frr/tests/isisd/test_common.c:285,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 6
    argNames:
    - topology
    - tnode
    - tnode_index
    - area
    - lspdb
    - level
    argTypes:
    - struct isis_topology*
    - struct isis_test_node*
    - size_t
    - struct isis_area*
    - struct lspdb_head*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 291
    functionName: topology_load_node_level
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - test_topology_find_node
    - lsp_add_mt_router_info
    - lsp_add
    - lsp_add_ip_reach
    - lsp_add_protocols_supported
    - zlog_debug
    - test_find_adjacency
    - lsp_add_router_capability
    - lsp_add_reach
    linkageType: ''
    returnType: int
    signature: "int topology_load_node_level(const struct isis_topology *topology,\n\t\t\t\t
      \   const struct isis_test_node *tnode,\n\t\t\t\t    size_t tnode_index, struct
      isis_area *area,\n\t\t\t\t    struct lspdb_head *lspdb, int level)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_dynhn_insert
      Src: /src/frr/tests/isisd/test_common.c:300,1
    - Dst: topology_load_node_level
      Src: /src/frr/tests/isisd/test_common.c:307,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - topology
    - tnode
    - tnode_index
    - area
    - lspdb
    argTypes:
    - struct isis_topology*
    - struct isis_test_node*
    - size_t
    - struct isis_area*
    - struct lspdb_head[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 314
    functionName: topology_load_node
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 0
    functionsReached:
    - topology_load_node_level
    - isis_dynhn_insert
    linkageType: ''
    returnType: int
    signature: "int topology_load_node(const struct isis_topology *topology,\n\t\t\t
      \     const struct isis_test_node *tnode,\n\t\t\t      size_t tnode_index, struct
      isis_area *area,\n\t\t\t      struct lspdb_head lspdb[])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lsp_db_init
      Src: /src/frr/tests/isisd/test_common.c:320,1
    - Dst: zlog_debug
      Src: /src/frr/tests/isisd/test_common.c:327,1
    - Dst: topology_load_node
      Src: /src/frr/tests/isisd/test_common.c:333,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - topology
    - area
    - lspdb
    argTypes:
    - struct isis_topology*
    - struct isis_area*
    - struct lspdb_head[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 316
    functionDepth: 4
    functionLinenumber: 316
    functionLinenumberEnd: 339
    functionName: test_topology_load
    functionSourceFile: /src/frr/tests/isisd/test_common.c
    functionUses: 1
    functionsReached:
    - lsp_db_init
    - zlog_debug
    - topology_load_node
    linkageType: ''
    returnType: int
    signature: "int test_topology_load(const struct isis_topology *topology,\n\t\t
      \      struct isis_area *area, struct lspdb_head lspdb[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_memstats
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: show_meminfo_at_exit
    functionSourceFile: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    functionUses: 0
    functionsReached:
    - log_memstats
    linkageType: ''
    returnType: void
    signature: void show_meminfo_at_exit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: comp_line
    functionSourceFile: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int comp_line(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:36,1
    - Dst: XMALLOC
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:38,1
    - Dst: strncpy
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:46,1
    - Dst: XCALLOC
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:50,1
    - Dst: strtok_r
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:54,1
    - Dst: strtok_r
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:55,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:57,1
    - Dst: qsort
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:62,1
    - Dst: snprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:65,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:66,1
    - Dst: XFREE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:70,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - in
    argTypes:
    - char*
    assertStmts:
    - condition: (i <= line_count)
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    - condition: (printf_rv >= 0)
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    constantsTouched: []
    func_position:
      end: 72
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 72
    functionName: sortlines
    functionSourceFile: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - XCALLOC
    - qsort
    - XMALLOC
    - strncpy
    - strtok_r
    - XFREE
    - assert
    linkageType: ''
    returnType: char
    signature: char *sortlines(char *in)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:76,1
    - Dst: atexit
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:81,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:85,1
    - Dst: feof
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:85,1
    - Dst: fread
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:86,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:86,1
    - Dst: stream_put
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:89,1
    - Dst: feof
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:92,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:93,1
    - Dst: stream_free
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:94,1
    - Dst: stream_set_getp
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:98,1
    - Dst: isis_unpack_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:101,1
    - Dst: STREAM_READABLE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:101,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:104,1
    - Dst: isis_free_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:105,1
    - Dst: stream_free
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:106,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:110,1
    - Dst: isis_format_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:111,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:112,1
    - Dst: isis_format_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:116,1
    - Dst: isis_copy_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:117,1
    - Dst: isis_free_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:119,1
    - Dst: stream_new
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:121,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:123,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:124,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:125,1
    - Dst: stream_set_getp
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:128,1
    - Dst: isis_unpack_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:129,1
    - Dst: STREAM_READABLE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:129,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:131,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:132,1
    - Dst: XSTRDUP
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:135,1
    - Dst: isis_format_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:136,1
    - Dst: strcmp
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:138,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:139,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:141,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:142,1
    - Dst: isis_free_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:145,1
    - Dst: stream_free
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:146,1
    - Dst: stream_free
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:147,1
    - Dst: isis_fragment_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:149,1
    - Dst: isis_free_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:150,1
    - Dst: XFREE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:152,1
    - Dst: stream_new
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:156,1
    - Dst: sbuf_init
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:159,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:162,1
    - Dst: stream_reset
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:163,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:164,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:166,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:167,1
    - Dst: sbuf_push
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:169,1
    - Dst: isis_format_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:169,1
    - Dst: isis_free_tlvs
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:170,1
    - Dst: list_delete
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:172,1
    - Dst: stream_free
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:173,1
    - Dst: sortlines
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:175,1
    - Dst: sbuf_buf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:175,1
    - Dst: sbuf_free
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:176,1
    - Dst: sortlines
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:177,1
    - Dst: XFREE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:178,1
    - Dst: strcmp
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:180,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:181,1
    - Dst: fprintf
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:182,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:184,1
    - Dst: XFREE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:187,1
    - Dst: XFREE
      Src: /src/frr/tests/isisd/test_fuzz_isis_tlv.c:188,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 75
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - FILE*
    - FILE*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    - condition: (0)
      pos:
        line_end: 141
        line_start: 141
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    - condition: (0)
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    - condition: (0)
      pos:
        line_end: 183
        line_start: 183
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    - condition: (0)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    constantsTouched: []
    func_position:
      end: 191
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 191
    functionName: test
    functionSourceFile: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
    functionUses: 7
    functionsReached:
    - list_delete
    - stream_put
    - isis_free_tlvs
    - sbuf_free
    - stream_reset
    - sortlines
    - isis_pack_tlvs
    - isis_fragment_tlvs
    - stream_set_getp
    - ALL_LIST_ELEMENTS_RO
    - fprintf
    - sbuf_push
    - sbuf_buf
    - assert
    - isis_format_tlvs
    - stream_free
    - STREAM_READABLE
    - sbuf_init
    - isis_copy_tlvs
    - XFREE
    - XSTRDUP
    - stream_new
    - fread
    - strcmp
    - STREAM_WRITEABLE
    - feof
    - atexit
    - isis_unpack_tlvs
    linkageType: ''
    returnType: int
    signature: int test(FILE *input, FILE *output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:19,1
    - Dst: lsp_db_init
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:24,1
    - Dst: lsp_new
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:27,1
    - Dst: lspdb_add
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:29,1
    - Dst: lsp_new
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:32,1
    - Dst: lspdb_add
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:34,1
    - Dst: list_new
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:36,1
    - Dst: lsp_build_list_nonzero_ht
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:38,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:39,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:40,1
    - Dst: listgetdata
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:40,1
    - Dst: listhead
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:40,1
    - Dst: list_delete_all_node
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:41,1
    - Dst: lsp_build_list_nonzero_ht
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:46,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:47,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:48,1
    - Dst: listgetdata
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:48,1
    - Dst: listhead
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:48,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:49,1
    - Dst: listgetdata
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:49,1
    - Dst: listtail
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:49,1
    - Dst: list_delete_all_node
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:50,1
    - Dst: memcpy
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:52,1
    - Dst: lsp_build_list_nonzero_ht
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:54,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:55,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:56,1
    - Dst: listgetdata
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:56,1
    - Dst: listhead
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:56,1
    - Dst: list_delete_all_node
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:57,1
    - Dst: lsp_build_list_nonzero_ht
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:62,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:63,1
    - Dst: list_delete_all_node
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:64,1
    - Dst: lsp_build_list_nonzero_ht
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:68,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:69,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:70,1
    - Dst: listgetdata
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:70,1
    - Dst: listhead
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:70,1
    - Dst: assert
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:71,1
    - Dst: listgetdata
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:71,1
    - Dst: listtail
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:71,1
    - Dst: list_delete_all_node
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (listgetdata(listhead(list)) == lsp1)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (list->count == 1)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (list->count == 2)
      pos:
        line_end: 68
        line_start: 68
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (listgetdata(listtail(list)) == lsp2)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (list->count == 1)
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (listgetdata(listhead(list)) == lsp2)
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (list->count == 2)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (list->count == 0)
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (listgetdata(listhead(list)) == lsp1)
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (listgetdata(listhead(list)) == lsp1)
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    - condition: (listgetdata(listtail(list)) == lsp2)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/frr/tests/isisd/test_isis_lspdb.c
    constantsTouched: []
    func_position:
      end: 73
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 73
    functionName: test_lsp_build_list_nonzero_ht
    functionSourceFile: /src/frr/tests/isisd/test_isis_lspdb.c
    functionUses: 0
    functionsReached:
    - assert
    - lsp_db_init
    - memcpy
    - lsp_build_list_nonzero_ht
    - listtail
    - lspdb_add
    - listhead
    - list_delete_all_node
    - list_new
    - listgetdata
    - lsp_new
    - calloc
    linkageType: ''
    returnType: void
    signature: void test_lsp_build_list_nonzero_ht(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:78,1
    - Dst: test_lsp_build_list_nonzero_ht
      Src: /src/frr/tests/isisd/test_isis_lspdb.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: main
    functionSourceFile: /src/frr/tests/isisd/test_isis_lspdb.c
    functionUses: 1
    functionsReached:
    - calloc
    - test_lsp_build_list_nonzero_ht
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: func1
    functionSourceFile: /src/frr/tests/lib/test_segv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void func1(int *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: func2
      Src: /src/frr/tests/lib/test_segv.c:39,1
    - Dst: func1
      Src: /src/frr/tests/lib/test_segv.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - depth
    - arg
    argTypes:
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 44
    functionName: func2
    functionSourceFile: /src/frr/tests/lib/test_segv.c
    functionUses: 1
    functionsReached:
    - func1
    - func2
    linkageType: ''
    returnType: void
    signature: void func2(size_t depth, int *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: func2
      Src: /src/frr/tests/lib/test_segv.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: func3
    functionSourceFile: /src/frr/tests/lib/test_segv.c
    functionUses: 0
    functionsReached:
    - func2
    linkageType: ''
    returnType: void
    signature: void func3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: func3
      Src: /src/frr/tests/lib/test_segv.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: threadfunc
    functionSourceFile: /src/frr/tests/lib/test_segv.c
    functionUses: 0
    functionsReached:
    - func3
    linkageType: ''
    returnType: void
    signature: void threadfunc(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_master_create
      Src: /src/frr/tests/lib/test_segv.c:59,1
    - Dst: signal_init
      Src: /src/frr/tests/lib/test_segv.c:60,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_segv.c:60,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/test_segv.c:62,1
    - Dst: event_execute
      Src: /src/frr/tests/lib/test_segv.c:64,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_segv.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 67
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_segv.c
    functionUses: 1
    functionsReached:
    - exit
    - event_execute
    - event_master_create
    - zlog_aux_init
    - array_size
    - signal_init
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_heavy_wq.c:49,1
    - Dst: XSTRDUP
      Src: /src/frr/tests/lib/test_heavy_wq.c:52,1
    - Dst: work_queue_add
      Src: /src/frr/tests/lib/test_heavy_wq.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - str
    - i
    argTypes:
    - struct vty*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: heavy_wq_add
    functionSourceFile: /src/frr/tests/lib/test_heavy_wq.c
    functionUses: 0
    functionsReached:
    - work_queue_add
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void heavy_wq_add(struct vty *vty, const char *str, int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_heavy_wq.c:62,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy_wq.c:63,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_heavy_wq.c:64,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_heavy_wq.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts:
    - condition: (hn && hn->str)
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/frr/tests/lib/test_heavy_wq.c
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: slow_func_del
    functionSourceFile: /src/frr/tests/lib/test_heavy_wq.c
    functionUses: 0
    functionsReached:
    - XFREE
    - printf
    - assert
    linkageType: ''
    returnType: void
    signature: void slow_func_del(struct work_queue *wq, void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_heavy_wq.c:74,1
    - Dst: sin
      Src: /src/frr/tests/lib/test_heavy_wq.c:77,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy_wq.c:86,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts:
    - condition: (hn && hn->str)
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/frr/tests/lib/test_heavy_wq.c
    constantsTouched: []
    func_position:
      end: 89
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 89
    functionName: slow_func
    functionSourceFile: /src/frr/tests/lib/test_heavy_wq.c
    functionUses: 0
    functionsReached:
    - sin
    - printf
    - assert
    linkageType: ''
    returnType: wq_item_status
    signature: wq_item_status slow_func(struct work_queue *wq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: heavy_wq_add
      Src: /src/frr/tests/lib/test_heavy_wq.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: clear_something
    functionSourceFile: /src/frr/tests/lib/test_heavy_wq.c
    functionUses: 0
    functionsReached:
    - heavy_wq_add
    linkageType: ''
    returnType: void
    signature: void clear_something(struct vty *vty, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: work_queue_new
      Src: /src/frr/tests/lib/test_heavy_wq.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 132
    functionName: heavy_wq_init
    functionSourceFile: /src/frr/tests/lib/test_heavy_wq.c
    functionUses: 0
    functionsReached:
    - work_queue_new
    linkageType: ''
    returnType: int
    signature: int heavy_wq_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/tests/lib/test_heavy_wq.c:136,1
    - Dst: heavy_wq_init
      Src: /src/frr/tests/lib/test_heavy_wq.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: test_init
    functionSourceFile: /src/frr/tests/lib/test_heavy_wq.c
    functionUses: 2
    functionsReached:
    - install_element
    - heavy_wq_init
    linkageType: ''
    returnType: void
    signature: void test_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_privs.c:38,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:41,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_privs.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - progname
    - status
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 51
    functionName: usage
    functionSourceFile: /src/frr/tests/lib/test_privs.c
    functionUses: 2
    functionsReached:
    - fprintf
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void usage(char *progname, int status)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/tests/lib/test_privs.c:62,1
    - Dst: strrchr
      Src: /src/frr/tests/lib/test_privs.c:65,1
    - Dst: getopt_long
      Src: /src/frr/tests/lib/test_privs.c:70,1
    - Dst: usage
      Src: /src/frr/tests/lib/test_privs.c:85,1
    - Dst: usage
      Src: /src/frr/tests/lib/test_privs.c:88,1
    - Dst: lib_cmd_init
      Src: /src/frr/tests/lib/test_privs.c:94,1
    - Dst: zprivs_preinit
      Src: /src/frr/tests/lib/test_privs.c:95,1
    - Dst: zprivs_init
      Src: /src/frr/tests/lib/test_privs.c:96,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:101,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:101,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:103,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:103,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:106,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:106,1
    - Dst: zprivs_get_ids
      Src: /src/frr/tests/lib/test_privs.c:107,1
    - Dst: zprivs_terminate
      Src: /src/frr/tests/lib/test_privs.c:110,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:113,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:113,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:115,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:115,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:118,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:118,1
    - Dst: zprivs_get_ids
      Src: /src/frr/tests/lib/test_privs.c:119,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:121,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 123
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_privs.c
    functionUses: 1
    functionsReached:
    - zprivs_get_ids
    - PRIV_STATE
    - lib_cmd_init
    - zprivs_init
    - zprivs_terminate
    - usage
    - strrchr
    - zprivs_preinit
    - getopt_long
    - printf
    - umask
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: PRIV_STATE
    functionSourceFile: /src/frr/tests/lib/test_privs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRIV_STATE()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:103,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: (&test_privs)
    functionSourceFile: /src/frr/tests/lib/test_privs.c
    functionUses: 0
    functionsReached:
    - PRIV_STATE
    - printf
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&test_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_privs.c:115,1
    - Dst: PRIV_STATE
      Src: /src/frr/tests/lib/test_privs.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: (&test_privs)
    functionSourceFile: /src/frr/tests/lib/test_privs.c
    functionUses: 0
    functionsReached:
    - PRIV_STATE
    - printf
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&test_privs)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/frr/tests/lib/fuzz_zlog.c:28,1
    - Dst: socketpair
      Src: /src/frr/tests/lib/fuzz_zlog.c:38,1
    - Dst: socketpair
      Src: /src/frr/tests/lib/fuzz_zlog.c:42,1
    - Dst: socketpair
      Src: /src/frr/tests/lib/fuzz_zlog.c:46,1
    - Dst: fork
      Src: /src/frr/tests/lib/fuzz_zlog.c:56,1
    - Dst: close
      Src: /src/frr/tests/lib/fuzz_zlog.c:61,1
    - Dst: read
      Src: /src/frr/tests/lib/fuzz_zlog.c:63,1
    - Dst: exit
      Src: /src/frr/tests/lib/fuzz_zlog.c:65,1
    - Dst: perror
      Src: /src/frr/tests/lib/fuzz_zlog.c:67,1
    - Dst: close
      Src: /src/frr/tests/lib/fuzz_zlog.c:70,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/fuzz_zlog.c:76,1
    - Dst: zlog_tls_buffer_init
      Src: /src/frr/tests/lib/fuzz_zlog.c:77,1
    - Dst: zlog_5424_init
      Src: /src/frr/tests/lib/fuzz_zlog.c:81,1
    - Dst: cmd_hostname_set
      Src: /src/frr/tests/lib/fuzz_zlog.c:96,1
    - Dst: event_master_create
      Src: /src/frr/tests/lib/fuzz_zlog.c:97,1
    - Dst: zlog_5424_apply_dst
      Src: /src/frr/tests/lib/fuzz_zlog.c:99,1
    - Dst: zlog_debug
      Src: /src/frr/tests/lib/fuzz_zlog.c:101,1
    - Dst: zlog_debug
      Src: /src/frr/tests/lib/fuzz_zlog.c:102,1
    - Dst: zlog_warn
      Src: /src/frr/tests/lib/fuzz_zlog.c:103,1
    - Dst: zlog_tls_buffer_flush
      Src: /src/frr/tests/lib/fuzz_zlog.c:105,1
    - Dst: zlog_tls_buffer_fini
      Src: /src/frr/tests/lib/fuzz_zlog.c:106,1
    - Dst: close
      Src: /src/frr/tests/lib/fuzz_zlog.c:112,1
    - Dst: kill
      Src: /src/frr/tests/lib/fuzz_zlog.c:114,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 66
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 117
    functionName: main
    functionSourceFile: /src/frr/tests/lib/fuzz_zlog.c
    functionUses: 1
    functionsReached:
    - exit
    - read
    - zlog_tls_buffer_fini
    - perror
    - cmd_hostname_set
    - close
    - socketpair
    - event_master_create
    - zlog_tls_buffer_flush
    - zlog_tls_buffer_init
    - zlog_aux_init
    - zlog_debug
    - zlog_warn
    - kill
    - zlog_5424_init
    - fork
    - zlog_5424_apply_dst
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/tests/lib/test_stream.c:18,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_stream.c:20,1
    - Dst: stream_get_endp
      Src: /src/frr/tests/lib/test_stream.c:21,1
    - Dst: STREAM_READABLE
      Src: /src/frr/tests/lib/test_stream.c:21,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/tests/lib/test_stream.c:21,1
    - Dst: STREAM_READABLE
      Src: /src/frr/tests/lib/test_stream.c:23,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_stream.c:24,1
    - Dst: stream_pnt
      Src: /src/frr/tests/lib/test_stream.c:24,1
    - Dst: stream_forward_getp
      Src: /src/frr/tests/lib/test_stream.c:25,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_stream.c:28,1
    - Dst: stream_set_getp
      Src: /src/frr/tests/lib/test_stream.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 32
    functionName: print_stream
    functionSourceFile: /src/frr/tests/lib/test_stream.c
    functionUses: 0
    functionsReached:
    - stream_set_getp
    - STREAM_READABLE
    - stream_forward_getp
    - STREAM_WRITEABLE
    - stream_get_endp
    - printfrr
    - stream_pnt
    - stream_get_getp
    linkageType: ''
    returnType: void
    signature: void print_stream(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/tests/lib/test_stream.c:38,1
    - Dst: stream_putc
      Src: /src/frr/tests/lib/test_stream.c:40,1
    - Dst: stream_putw
      Src: /src/frr/tests/lib/test_stream.c:41,1
    - Dst: stream_putl
      Src: /src/frr/tests/lib/test_stream.c:42,1
    - Dst: stream_putq
      Src: /src/frr/tests/lib/test_stream.c:43,1
    - Dst: print_stream
      Src: /src/frr/tests/lib/test_stream.c:45,1
    - Dst: stream_resize_inplace
      Src: /src/frr/tests/lib/test_stream.c:47,1
    - Dst: stream_get_endp
      Src: /src/frr/tests/lib/test_stream.c:47,1
    - Dst: print_stream
      Src: /src/frr/tests/lib/test_stream.c:49,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_stream.c:51,1
    - Dst: stream_getc
      Src: /src/frr/tests/lib/test_stream.c:51,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_stream.c:52,1
    - Dst: stream_getw
      Src: /src/frr/tests/lib/test_stream.c:52,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_stream.c:53,1
    - Dst: stream_getl
      Src: /src/frr/tests/lib/test_stream.c:53,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_stream.c:54,1
    - Dst: stream_getq
      Src: /src/frr/tests/lib/test_stream.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 57
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_stream.c
    functionUses: 1
    functionsReached:
    - stream_resize_inplace
    - stream_new
    - stream_putw
    - stream_get_endp
    - printfrr
    - stream_getw
    - stream_getl
    - stream_getq
    - print_stream
    - stream_getc
    - stream_putq
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/frr/tests/lib/test_nexthop_iter.c:22,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_nexthop_iter.c:22,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_nexthop_iter.c:22,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:23,1
    - Dst: strncpy
      Src: /src/frr/tests/lib/test_nexthop_iter.c:24,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_nexthop_iter.c:24,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_nexthop_iter.c:24,1
    - Dst: strdup
      Src: /src/frr/tests/lib/test_nexthop_iter.c:26,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - repr
    argTypes:
    - char**
    - char*
    assertStmts:
    - condition: (*buf)
      pos:
        line_end: 22
        line_start: 22
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    - condition: (*buf)
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    constantsTouched: []
    func_position:
      end: 29
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 29
    functionName: str_append
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - strlen
    - strdup
    - strncpy
    - realloc
    - assert
    linkageType: ''
    returnType: void
    signature: void str_append(char **buf, const char *repr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/lib/test_nexthop_iter.c:38,1
    - Dst: vasprintf
      Src: /src/frr/tests/lib/test_nexthop_iter.c:39,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_nexthop_iter.c:40,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:41,1
    - Dst: str_append
      Src: /src/frr/tests/lib/test_nexthop_iter.c:43,1
    - Dst: free
      Src: /src/frr/tests/lib/test_nexthop_iter.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - format
    argTypes:
    - char**
    - char*
    assertStmts:
    - condition: (rv >= 0)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    constantsTouched: []
    func_position:
      end: 45
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 45
    functionName: str_appendf
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - vasprintf
    - free
    - va_start
    - va_end
    - str_append
    - assert
    linkageType: ''
    returnType: void
    signature: void str_appendf(char **buf, const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/tests/lib/test_nexthop_iter.c:64,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rv)
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: nexthop_chain_new
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - assert
    - calloc
    linkageType: ''
    returnType: struct nexthop_chain
    signature: struct nexthop_chain *nexthop_chain_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/tests/lib/test_nexthop_iter.c:73,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:74,1
    - Dst: str_appendf
      Src: /src/frr/tests/lib/test_nexthop_iter.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - nc
    argTypes:
    - struct nexthop_chain*
    assertStmts:
    - condition: (nh)
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    constantsTouched: []
    func_position:
      end: 85
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 85
    functionName: nexthop_chain_add_top
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - assert
    - str_appendf
    - calloc
    linkageType: ''
    returnType: void
    signature: void nexthop_chain_add_top(struct nexthop_chain *nc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str_appendf
      Src: /src/frr/tests/lib/test_nexthop_iter.c:94,1
    - Dst: str_appendf
      Src: /src/frr/tests/lib/test_nexthop_iter.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - repr
    - nh
    argTypes:
    - char**
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: add_string_representation
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - str_appendf
    linkageType: ''
    returnType: void
    signature: void add_string_representation(char **repr, struct nexthop *nh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/tests/lib/test_nexthop_iter.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - nc
    - nh
    argTypes:
    - struct nexthop_chain*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: start_recursive_chain
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void start_recursive_chain(struct nexthop_chain *nc, struct nexthop
      *nh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/tests/lib/test_nexthop_iter.c:111,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:112,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:114,1
    - Dst: start_recursive_chain
      Src: /src/frr/tests/lib/test_nexthop_iter.c:121,1
    - Dst: add_string_representation
      Src: /src/frr/tests/lib/test_nexthop_iter.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - nc
    argTypes:
    - struct nexthop_chain*
    assertStmts:
    - condition: (nh)
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    - condition: (nc->current_top)
      pos:
        line_end: 113
        line_start: 113
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    constantsTouched: []
    func_position:
      end: 124
      start: 107
    functionDepth: 4
    functionLinenumber: 107
    functionLinenumberEnd: 124
    functionName: nexthop_chain_add_recursive
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - assert
    - add_string_representation
    - start_recursive_chain
    - calloc
    linkageType: ''
    returnType: void
    signature: void nexthop_chain_add_recursive(struct nexthop_chain *nc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/tests/lib/test_nexthop_iter.c:130,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:131,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:133,1
    - Dst: SET_FLAG
      Src: /src/frr/tests/lib/test_nexthop_iter.c:135,1
    - Dst: start_recursive_chain
      Src: /src/frr/tests/lib/test_nexthop_iter.c:140,1
    - Dst: add_string_representation
      Src: /src/frr/tests/lib/test_nexthop_iter.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - nc
    argTypes:
    - struct nexthop_chain*
    assertStmts:
    - condition: (nc->current_top)
      pos:
        line_end: 132
        line_start: 132
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    - condition: (nh)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    constantsTouched: []
    func_position:
      end: 143
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 143
    functionName: nexthop_chain_add_recursive_level
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - start_recursive_chain
    - SET_FLAG
    - calloc
    - add_string_representation
    - assert
    linkageType: ''
    returnType: void
    signature: void nexthop_chain_add_recursive_level(struct nexthop_chain *nc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/tests/lib/test_nexthop_iter.c:149,1
    - Dst: nexthop_clear_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:150,1
    - Dst: nexthop_clear_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:152,1
    - Dst: free
      Src: /src/frr/tests/lib/test_nexthop_iter.c:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - tcur
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 154
    functionName: nexthop_clear_recursive
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 1
    functionsReached:
    - nexthop_clear_recursive
    - CHECK_FLAG
    - free
    linkageType: ''
    returnType: void
    signature: void nexthop_clear_recursive(struct nexthop *tcur)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_clear_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:157,1
    - Dst: free
      Src: /src/frr/tests/lib/test_nexthop_iter.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - nc
    argTypes:
    - struct nexthop_chain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 161
    functionName: nexthop_chain_clear
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - nexthop_clear_recursive
    - free
    linkageType: ''
    returnType: void
    signature: void nexthop_chain_clear(struct nexthop_chain *nc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_chain_clear
      Src: /src/frr/tests/lib/test_nexthop_iter.c:167,1
    - Dst: free
      Src: /src/frr/tests/lib/test_nexthop_iter.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nc
    argTypes:
    - struct nexthop_chain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 169
    functionName: nexthop_chain_free
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 0
    functionsReached:
    - free
    - nexthop_chain_clear
    linkageType: ''
    returnType: void
    signature: void nexthop_chain_free(struct nexthop_chain *nc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/tests/lib/test_nexthop_iter.c:182,1
    - Dst: add_string_representation
      Src: /src/frr/tests/lib/test_nexthop_iter.c:183,1
    - Dst: if
      Src: /src/frr/tests/lib/test_nexthop_iter.c:185,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_nexthop_iter.c:186,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop_iter.c:187,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_nexthop_iter.c:188,1
    - Dst: free
      Src: /src/frr/tests/lib/test_nexthop_iter.c:189,1
    - Dst: nexthop_chain_new
      Src: /src/frr/tests/lib/test_nexthop_iter.c:201,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:202,1
    - Dst: nexthop_chain_add_top
      Src: /src/frr/tests/lib/test_nexthop_iter.c:204,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:205,1
    - Dst: nexthop_chain_add_top
      Src: /src/frr/tests/lib/test_nexthop_iter.c:207,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:208,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:210,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:211,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:213,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:214,1
    - Dst: nexthop_chain_add_top
      Src: /src/frr/tests/lib/test_nexthop_iter.c:216,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:217,1
    - Dst: nexthop_chain_add_top
      Src: /src/frr/tests/lib/test_nexthop_iter.c:219,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:220,1
    - Dst: nexthop_chain_add_top
      Src: /src/frr/tests/lib/test_nexthop_iter.c:222,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:223,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:225,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:226,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:228,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:229,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:231,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:232,1
    - Dst: nexthop_chain_add_recursive_level
      Src: /src/frr/tests/lib/test_nexthop_iter.c:234,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:235,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:237,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:238,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:240,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:241,1
    - Dst: nexthop_chain_add_top
      Src: /src/frr/tests/lib/test_nexthop_iter.c:243,1
    - Dst: nexthop_chain_verify_iter
      Src: /src/frr/tests/lib/test_nexthop_iter.c:244,1
    - Dst: nexthop_chain_free
      Src: /src/frr/tests/lib/test_nexthop_iter.c:246,1
    - Dst: switch
      Src: /src/frr/tests/lib/test_nexthop_iter.c:263,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_nexthop_iter.c:263,1
    - Dst: nexthop_chain_clear
      Src: /src/frr/tests/lib/test_nexthop_iter.c:265,1
    - Dst: nexthop_chain_add_top
      Src: /src/frr/tests/lib/test_nexthop_iter.c:272,1
    - Dst: if
      Src: /src/frr/tests/lib/test_nexthop_iter.c:277,1
    - Dst: nexthop_chain_add_recursive
      Src: /src/frr/tests/lib/test_nexthop_iter.c:278,1
    - Dst: if
      Src: /src/frr/tests/lib/test_nexthop_iter.c:281,1
    - Dst: nexthop_chain_add_recursive_level
      Src: /src/frr/tests/lib/test_nexthop_iter.c:282,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_nexthop_iter.c:293,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 1
    argNames:
    - nc
    argTypes:
    - struct nexthop_chain*
    assertStmts:
    - condition: "((!repr && !nc->repr)\n\t       || (repr && nc->repr && !strcmp(repr,
        nc->repr)))"
      pos:
        line_end: 187
        line_start: 186
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    constantsTouched: []
    func_position:
      end: 299
      start: 177
    functionDepth: 5
    functionLinenumber: 177
    functionLinenumberEnd: 299
    functionName: nexthop_chain_verify_iter
    functionSourceFile: /src/frr/tests/lib/test_nexthop_iter.c
    functionUses: 1
    functionsReached:
    - switch
    - prng_rand
    - nexthop_chain_new
    - ALL_NEXTHOPS
    - nexthop_chain_add_recursive_level
    - strcmp
    - free
    - nexthop_chain_add_top
    - nexthop_chain_verify_iter
    - nexthop_chain_free
    - nexthop_chain_add_recursive
    - printf
    - nexthop_chain_clear
    - if
    - add_string_representation
    - assert
    linkageType: ''
    returnType: void
    signature: void nexthop_chain_verify_iter(struct nexthop_chain *nc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:13,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:14,1
    - Dst: ringbuf_remain
      Src: /src/frr/tests/lib/test_ringbuf.c:14,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:15,1
    - Dst: ringbuf_space
      Src: /src/frr/tests/lib/test_ringbuf.c:15,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buf
    - size
    - contains
    argTypes:
    - struct ringbuf*
    - size_t
    - size_t
    assertStmts:
    - condition: (buf->size == size)
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_space(buf) == buf->size - contains)
      pos:
        line_end: 14
        line_start: 14
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_remain(buf) == contains)
      pos:
        line_end: 13
        line_start: 13
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (buf->empty != (bool)contains)
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/frr/tests/lib/test_ringbuf.c
    constantsTouched: []
    func_position:
      end: 17
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 17
    functionName: validate_state
    functionSourceFile: /src/frr/tests/lib/test_ringbuf.c
    functionUses: 0
    functionsReached:
    - ringbuf_space
    - assert
    - ringbuf_remain
    linkageType: ''
    returnType: void
    signature: void validate_state(struct ringbuf *buf, size_t size, size_t contains)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ringbuf_new
      Src: /src/frr/tests/lib/test_ringbuf.c:21,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:23,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:26,1
    - Dst: ringbuf_reset
      Src: /src/frr/tests/lib/test_ringbuf.c:27,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:29,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:32,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:34,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:34,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:36,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:39,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:41,1
    - Dst: ringbuf_get
      Src: /src/frr/tests/lib/test_ringbuf.c:41,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:44,1
    - Dst: ringbuf_reset
      Src: /src/frr/tests/lib/test_ringbuf.c:45,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:46,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:49,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:51,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:51,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:53,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:54,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:55,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:58,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:59,1
    - Dst: ringbuf_get
      Src: /src/frr/tests/lib/test_ringbuf.c:59,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:61,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:62,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:63,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:66,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:67,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:67,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:69,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:70,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:71,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:74,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:75,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:75,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:76,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:79,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:80,1
    - Dst: ringbuf_get
      Src: /src/frr/tests/lib/test_ringbuf.c:80,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:82,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:83,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:84,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:85,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:88,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:89,1
    - Dst: ringbuf_get
      Src: /src/frr/tests/lib/test_ringbuf.c:89,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:90,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:93,1
    - Dst: ringbuf_reset
      Src: /src/frr/tests/lib/test_ringbuf.c:94,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:95,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:96,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:97,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:100,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_ringbuf.c:101,1
    - Dst: ringbuf_wipe
      Src: /src/frr/tests/lib/test_ringbuf.c:102,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:103,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_ringbuf.c:103,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:106,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:108,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:108,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:110,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:113,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_ringbuf.c:114,1
    - Dst: ringbuf_wipe
      Src: /src/frr/tests/lib/test_ringbuf.c:115,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:116,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_ringbuf.c:116,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:120,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:121,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:121,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:121,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:122,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:123,1
    - Dst: ringbuf_get
      Src: /src/frr/tests/lib/test_ringbuf.c:123,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:123,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:124,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:125,1
    - Dst: validate_state
      Src: /src/frr/tests/lib/test_ringbuf.c:127,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:133,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:134,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:134,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:134,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:135,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:136,1
    - Dst: ringbuf_get
      Src: /src/frr/tests/lib/test_ringbuf.c:136,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:137,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:138,1
    - Dst: ringbuf_wipe
      Src: /src/frr/tests/lib/test_ringbuf.c:140,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:146,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:147,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:147,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:147,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:148,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:149,1
    - Dst: ringbuf_peek
      Src: /src/frr/tests/lib/test_ringbuf.c:149,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:150,1
    - Dst: ringbuf_peek
      Src: /src/frr/tests/lib/test_ringbuf.c:150,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:151,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:152,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_ringbuf.c:152,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:153,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:155,1
    - Dst: ringbuf_del
      Src: /src/frr/tests/lib/test_ringbuf.c:156,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:158,1
    - Dst: ringbuf_new
      Src: /src/frr/tests/lib/test_ringbuf.c:159,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:165,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:166,1
    - Dst: ringbuf_put
      Src: /src/frr/tests/lib/test_ringbuf.c:166,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ringbuf.c:166,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:167,1
    - Dst: ringbuf_get
      Src: /src/frr/tests/lib/test_ringbuf.c:167,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:169,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ringbuf.c:170,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_ringbuf.c:170,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:172,1
    - Dst: ringbuf_del
      Src: /src/frr/tests/lib/test_ringbuf.c:173,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ringbuf.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 94
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (memcmp(&compost, soil->data, sizeof(compost)) == 0)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->start == 15)
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, twenty, strlen(twenty)) == 15)
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_get(soil, sixteen, 20))
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, &compost, 15) == 5)
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->end == 0)
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, &compost[BUFSIZ/2], 10) == 10)
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->start == 15)
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, phloem, strlen(phloem)) == 4)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->start == 0)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->start == 15)
      pos:
        line_end: 84
        line_start: 84
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->empty == true)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, &flower, sizeof(flower)) == BUFSIZ)
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_get(soil, &xylem, 100) == 4)
      pos:
        line_end: 135
        line_start: 135
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_peek(soil, 2, &chloroplast[0], 100) == 2)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_get(soil, &compost, BUFSIZ) == BUFSIZ)
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, &compost, sizeof(compost)) == BUFSIZ)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->end == 0)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->end == 0)
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, cytoplasm, strlen(cytoplasm)) == 4)
      pos:
        line_end: 146
        line_start: 146
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, &walnut, sizeof(walnut)) == 1)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_get(soil, &nuts, sizeof(nuts)) == 1)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_get(soil, &compost, 15) == 15)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->start == soil->end)
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (!strcmp(sixteen, "vascular plants"))
      pos:
        line_end: 169
        line_start: 169
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_get(soil, &compost, 1) == 0)
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_put(soil, organ, strlen(organ)) == 4)
      pos:
        line_end: 120
        line_start: 120
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->end == 10)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (memcmp(&compost, soil->data, sizeof(compost)) == 0)
      pos:
        line_end: 102
        line_start: 102
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_peek(soil, 0, &chloroplast[2], 2) == 2)
      pos:
        line_end: 149
        line_start: 149
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (soil->start == 0)
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (ringbuf_get(soil, &water, strlen(organ)) == 4)
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/frr/tests/lib/test_ringbuf.c
    - condition: (!strcmp(chloroplast, "eetr"))
      pos:
        line_end: 151
        line_start: 151
        source_file: /src/frr/tests/lib/test_ringbuf.c
    constantsTouched: []
    func_position:
      end: 177
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 177
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_ringbuf.c
    functionUses: 2
    functionsReached:
    - ringbuf_put
    - strlen
    - ringbuf_reset
    - ringbuf_del
    - memset
    - ringbuf_new
    - strcmp
    - memcmp
    - ringbuf_get
    - printf
    - validate_state
    - ringbuf_wipe
    - ringbuf_peek
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/tests/lib/test_zlog.c:28,1
    - Dst: zlog_hexdump
      Src: /src/frr/tests/lib/test_zlog.c:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 35
    functionName: test_zlog_hexdump
    functionSourceFile: /src/frr/tests/lib/test_zlog.c
    functionUses: 0
    functionsReached:
    - zlog_hexdump
    - frr_weak_random
    linkageType: ''
    returnType: bool
    signature: bool test_zlog_hexdump(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/test_zlog.c:43,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_zlog.c:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_zlog.c
    functionUses: 2
    functionsReached:
    - zlog_aux_init
    - array_size
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_zmq.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - hint
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 20
    functionName: msg_buf_free
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void msg_buf_free(void *data, void *hint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zmq_msg_init
      Src: /src/frr/tests/lib/test_zmq.c:27,1
    - Dst: zmq_msg_recv
      Src: /src/frr/tests/lib/test_zmq.c:28,1
    - Dst: zmq_msg_more
      Src: /src/frr/tests/lib/test_zmq.c:29,1
    - Dst: zmq_msg_close
      Src: /src/frr/tests/lib/test_zmq.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - zmqsock
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 32
    functionName: recv_delim
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - zmq_msg_close
    - zmq_msg_recv
    - zmq_msg_init
    - zmq_msg_more
    linkageType: ''
    returnType: int
    signature: int recv_delim(void *zmqsock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zmq_msg_init
      Src: /src/frr/tests/lib/test_zmq.c:37,1
    - Dst: zmq_msg_send
      Src: /src/frr/tests/lib/test_zmq.c:38,1
    - Dst: zmq_msg_close
      Src: /src/frr/tests/lib/test_zmq.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zmqsock
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: send_delim
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - zmq_msg_close
    - zmq_msg_send
    - zmq_msg_init
    linkageType: ''
    returnType: void
    signature: void send_delim(void *zmqsock)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/frr/tests/lib/test_zmq.c:50,1
    - Dst: zmq_ctx_new
      Src: /src/frr/tests/lib/test_zmq.c:52,1
    - Dst: zmq_ctx_set
      Src: /src/frr/tests/lib/test_zmq.c:53,1
    - Dst: zmq_socket
      Src: /src/frr/tests/lib/test_zmq.c:55,1
    - Dst: zmq_connect
      Src: /src/frr/tests/lib/test_zmq.c:56,1
    - Dst: perror
      Src: /src/frr/tests/lib/test_zmq.c:57,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_zmq.c:58,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_zmq.c:63,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:65,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_zmq.c:66,1
    - Dst: send_delim
      Src: /src/frr/tests/lib/test_zmq.c:67,1
    - Dst: zmq_send
      Src: /src/frr/tests/lib/test_zmq.c:68,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:68,1
    - Dst: recv_delim
      Src: /src/frr/tests/lib/test_zmq.c:69,1
    - Dst: zmq_recv
      Src: /src/frr/tests/lib/test_zmq.c:71,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:72,1
    - Dst: zmq_getsockopt
      Src: /src/frr/tests/lib/test_zmq.c:74,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:81,1
    - Dst: send_delim
      Src: /src/frr/tests/lib/test_zmq.c:82,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_zmq.c:85,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_zmq.c:87,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:88,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_zmq.c:89,1
    - Dst: zmq_msg_init_data
      Src: /src/frr/tests/lib/test_zmq.c:91,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:91,1
    - Dst: zmq_msg_send
      Src: /src/frr/tests/lib/test_zmq.c:93,1
    - Dst: recv_delim
      Src: /src/frr/tests/lib/test_zmq.c:96,1
    - Dst: zmq_msg_recv
      Src: /src/frr/tests/lib/test_zmq.c:100,1
    - Dst: zmq_msg_data
      Src: /src/frr/tests/lib/test_zmq.c:101,1
    - Dst: zmq_msg_more
      Src: /src/frr/tests/lib/test_zmq.c:102,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:103,1
    - Dst: zmq_msg_close
      Src: /src/frr/tests/lib/test_zmq.c:105,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:109,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_zmq.c:110,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:111,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_zmq.c:112,1
    - Dst: send_delim
      Src: /src/frr/tests/lib/test_zmq.c:113,1
    - Dst: zmq_send
      Src: /src/frr/tests/lib/test_zmq.c:114,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:114,1
    - Dst: recv_delim
      Src: /src/frr/tests/lib/test_zmq.c:116,1
    - Dst: zmq_recv
      Src: /src/frr/tests/lib/test_zmq.c:118,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:119,1
    - Dst: zmq_getsockopt
      Src: /src/frr/tests/lib/test_zmq.c:121,1
    - Dst: zmq_close
      Src: /src/frr/tests/lib/test_zmq.c:125,1
    - Dst: zmq_ctx_term
      Src: /src/frr/tests/lib/test_zmq.c:126,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 1
    argNames:
    - syncfd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 127
    functionName: run_client
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - strlen
    - zmq_msg_more
    - zmq_msg_send
    - zmq_close
    - recv_delim
    - zmq_msg_data
    - exit
    - snprintf
    - fflush
    - printf
    - zmq_msg_close
    - zmq_msg_recv
    - zmq_ctx_set
    - zmq_ctx_new
    - zmq_msg_init_data
    - send_delim
    - zmq_getsockopt
    - zmq_socket
    - zmq_ctx_term
    - read
    - perror
    - XMALLOC
    - zmq_connect
    - zmq_recv
    - zmq_send
    linkageType: ''
    returnType: void
    signature: void run_client(int syncfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zmq_msg_init
      Src: /src/frr/tests/lib/test_zmq.c:134,1
    - Dst: zmq_msg_recv
      Src: /src/frr/tests/lib/test_zmq.c:135,1
    - Dst: recv_delim
      Src: /src/frr/tests/lib/test_zmq.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - zmqsock
    - msg_id
    argTypes:
    - void*
    - zmq_msg_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 138
    functionName: recv_id_and_delim
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - zmq_msg_recv
    - zmq_msg_init
    - recv_delim
    linkageType: ''
    returnType: void
    signature: void recv_id_and_delim(void *zmqsock, zmq_msg_t *msg_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zmq_msg_send
      Src: /src/frr/tests/lib/test_zmq.c:142,1
    - Dst: send_delim
      Src: /src/frr/tests/lib/test_zmq.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - zmqsock
    - msg_id
    argTypes:
    - void*
    - zmq_msg_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: send_id_and_delim
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - send_delim
    - zmq_msg_send
    linkageType: ''
    returnType: void
    signature: void send_id_and_delim(void *zmqsock, zmq_msg_t *msg_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:151,1
    - Dst: toupper
      Src: /src/frr/tests/lib/test_zmq.c:152,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:153,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_zmq.c:154,1
    - Dst: send_id_and_delim
      Src: /src/frr/tests/lib/test_zmq.c:155,1
    - Dst: zmq_send
      Src: /src/frr/tests/lib/test_zmq.c:156,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:156,1
    - Dst: frrzmq_thread_cancel
      Src: /src/frr/tests/lib/test_zmq.c:159,1
    - Dst: zmq_msg_close
      Src: /src/frr/tests/lib/test_zmq.c:161,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_zmq.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - arg
    - zmqsock
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 163
    functionName: serverwritefn
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - send_id_and_delim
    - strlen
    - fflush
    - printf
    - toupper
    - XFREE
    - zmq_msg_close
    - zmq_send
    - frrzmq_thread_cancel
    linkageType: ''
    returnType: void
    signature: void serverwritefn(void *arg, void *zmqsock)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zmq_msg_more
      Src: /src/frr/tests/lib/test_zmq.c:168,1
    - Dst: zmq_msg_data
      Src: /src/frr/tests/lib/test_zmq.c:169,1
    - Dst: send_id_and_delim
      Src: /src/frr/tests/lib/test_zmq.c:176,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:184,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_zmq.c:185,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_zmq.c:187,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:187,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:188,1
    - Dst: toupper
      Src: /src/frr/tests/lib/test_zmq.c:189,1
    - Dst: zmq_msg_init_data
      Src: /src/frr/tests/lib/test_zmq.c:191,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:191,1
    - Dst: zmq_msg_send
      Src: /src/frr/tests/lib/test_zmq.c:192,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_zmq.c:197,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_zmq.c:198,1
    - Dst: zmq_msg_init_data
      Src: /src/frr/tests/lib/test_zmq.c:199,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:199,1
    - Dst: zmq_msg_send
      Src: /src/frr/tests/lib/test_zmq.c:200,1
    - Dst: zmq_msg_close
      Src: /src/frr/tests/lib/test_zmq.c:202,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_zmq.c:209,1
    - Dst: recv_id_and_delim
      Src: /src/frr/tests/lib/test_zmq.c:210,1
    - Dst: zmq_recv
      Src: /src/frr/tests/lib/test_zmq.c:211,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:212,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_zmq.c:213,1
    - Dst: frrzmq_event_add_write_msg
      Src: /src/frr/tests/lib/test_zmq.c:215,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - arg
    - zmqsock
    - msg
    - partnum
    argTypes:
    - void*
    - void*
    - zmq_msg_t*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 217
    functionName: serverpartfn
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - send_id_and_delim
    - strlen
    - zmq_msg_more
    - snprintf
    - XMALLOC
    - zmq_msg_init_data
    - recv_id_and_delim
    - fflush
    - zmq_msg_send
    - printf
    - toupper
    - zmq_msg_data
    - zmq_recv
    - frrzmq_event_add_write_msg
    - zmq_msg_close
    linkageType: ''
    returnType: void
    signature: "void serverpartfn(void *arg, void *zmqsock, zmq_msg_t *msg,\n\t\t\t
      unsigned partnum)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recv_id_and_delim
      Src: /src/frr/tests/lib/test_zmq.c:227,1
    - Dst: zmq_recv
      Src: /src/frr/tests/lib/test_zmq.c:228,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:230,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_zmq.c:231,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:232,1
    - Dst: toupper
      Src: /src/frr/tests/lib/test_zmq.c:233,1
    - Dst: send_id_and_delim
      Src: /src/frr/tests/lib/test_zmq.c:234,1
    - Dst: zmq_msg_close
      Src: /src/frr/tests/lib/test_zmq.c:235,1
    - Dst: zmq_send
      Src: /src/frr/tests/lib/test_zmq.c:236,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_zmq.c:236,1
    - Dst: frrzmq_thread_cancel
      Src: /src/frr/tests/lib/test_zmq.c:242,1
    - Dst: frrzmq_thread_cancel
      Src: /src/frr/tests/lib/test_zmq.c:243,1
    - Dst: frrzmq_event_add_read_part
      Src: /src/frr/tests/lib/test_zmq.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - arg
    - zmqsock
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 247
    functionName: serverfn
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - send_id_and_delim
    - strlen
    - zmq_send
    - frrzmq_event_add_read_part
    - fflush
    - printf
    - zmq_recv
    - toupper
    - zmq_msg_close
    - recv_id_and_delim
    - frrzmq_thread_cancel
    linkageType: ''
    returnType: void
    signature: void serverfn(void *arg, void *zmqsock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_zmq.c:251,1
    - Dst: frrzmq_thread_cancel
      Src: /src/frr/tests/lib/test_zmq.c:252,1
    - Dst: frrzmq_thread_cancel
      Src: /src/frr/tests/lib/test_zmq.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: sigchld
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 1
    functionsReached:
    - frrzmq_thread_cancel
    - printf
    linkageType: ''
    returnType: void
    signature: void sigchld(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_master_create
      Src: /src/frr/tests/lib/test_zmq.c:269,1
    - Dst: signal_init
      Src: /src/frr/tests/lib/test_zmq.c:270,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_zmq.c:270,1
    - Dst: frrzmq_init
      Src: /src/frr/tests/lib/test_zmq.c:271,1
    - Dst: zmq_socket
      Src: /src/frr/tests/lib/test_zmq.c:273,1
    - Dst: zmq_bind
      Src: /src/frr/tests/lib/test_zmq.c:274,1
    - Dst: perror
      Src: /src/frr/tests/lib/test_zmq.c:275,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_zmq.c:276,1
    - Dst: frrzmq_event_add_read_msg
      Src: /src/frr/tests/lib/test_zmq.c:279,1
    - Dst: write
      Src: /src/frr/tests/lib/test_zmq.c:281,1
    - Dst: event_fetch
      Src: /src/frr/tests/lib/test_zmq.c:282,1
    - Dst: event_call
      Src: /src/frr/tests/lib/test_zmq.c:283,1
    - Dst: zmq_close
      Src: /src/frr/tests/lib/test_zmq.c:285,1
    - Dst: frrzmq_finish
      Src: /src/frr/tests/lib/test_zmq.c:286,1
    - Dst: event_master_free
      Src: /src/frr/tests/lib/test_zmq.c:287,1
    - Dst: log_memstats_stderr
      Src: /src/frr/tests/lib/test_zmq.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - syncfd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 289
    functionName: run_server
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - log_memstats_stderr
    - event_fetch
    - frrzmq_event_add_read_msg
    - event_master_create
    - zmq_bind
    - event_master_free
    - array_size
    - zmq_close
    - signal_init
    - frrzmq_finish
    - frrzmq_init
    - event_call
    - zmq_socket
    - write
    linkageType: ''
    returnType: void
    signature: void run_server(int syncfd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/frr/tests/lib/test_zmq.c:296,1
    - Dst: perror
      Src: /src/frr/tests/lib/test_zmq.c:297,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_zmq.c:298,1
    - Dst: fork
      Src: /src/frr/tests/lib/test_zmq.c:301,1
    - Dst: perror
      Src: /src/frr/tests/lib/test_zmq.c:303,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_zmq.c:304,1
    - Dst: run_client
      Src: /src/frr/tests/lib/test_zmq.c:306,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_zmq.c:307,1
    - Dst: run_server
      Src: /src/frr/tests/lib/test_zmq.c:310,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_zmq.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 312
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_zmq.c
    functionUses: 2
    functionsReached:
    - exit
    - perror
    - pipe
    - run_client
    - run_server
    - fork
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_ntop.c:29,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_ntop.c:32,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:33,1
    - Dst: frr_inet_ntop
      Src: /src/frr/tests/lib/test_ntop.c:33,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:34,1
    - Dst: inet_ntop
      Src: /src/frr/tests/lib/test_ntop.c:34,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:35,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_ntop.c:35,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_ntop.c:40,1
    - Dst: frr_inet_ntop
      Src: /src/frr/tests/lib/test_ntop.c:41,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_ntop.c:42,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:43,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:45,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_ntop.c:45,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_ntop.c:52,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_ntop.c:55,1
    - Dst: __builtin_ctz
      Src: /src/frr/tests/lib/test_ntop.c:57,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_ntop.c:57,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_ntop.c:58,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:64,1
    - Dst: frr_inet_ntop
      Src: /src/frr/tests/lib/test_ntop.c:64,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:65,1
    - Dst: inet_ntop
      Src: /src/frr/tests/lib/test_ntop.c:65,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_ntop.c:66,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_ntop.c:67,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:69,1
    - Dst: inet_pton
      Src: /src/frr/tests/lib/test_ntop.c:69,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ntop.c:70,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_ntop.c:70,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (frr_inet_ntop(AF_INET, &i4, buf1, sizeof(buf1)))
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (inet_ntop(AF_INET, &i4, buf2, sizeof(buf2)))
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (!rv)
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (frr_inet_ntop(AF_INET6, &i6, buf1, sizeof(buf1)))
      pos:
        line_end: 63
        line_start: 63
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (rv && !strcmp(buf1, buf2))
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (inet_ntop(AF_INET6, &i6, buf2, sizeof(buf2)))
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (inet_pton(AF_INET6, buf1, &i6check))
      pos:
        line_end: 68
        line_start: 68
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (!memcmp(&i6, &i6check, sizeof(i6)))
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/frr/tests/lib/test_ntop.c
    - condition: (!strcmp(buf1, buf2))
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/frr/tests/lib/test_ntop.c
    constantsTouched: []
    func_position:
      end: 73
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 73
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_ntop.c
    functionUses: 2
    functionsReached:
    - prng_rand
    - strlen
    - prng_new
    - memset
    - strcmp
    - memcmp
    - inet_ntop
    - frr_inet_ntop
    - inet_pton
    - __builtin_ctz
    - printf
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime_since
      Src: /src/frr/tests/lib/test_seqlock.c:32,1
    - Dst: snprintfrr
      Src: /src/frr/tests/lib/test_seqlock.c:34,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_seqlock.c:37,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_seqlock.c:39,1
    - Dst: writev
      Src: /src/frr/tests/lib/test_seqlock.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 41
    functionName: writestr
    functionSourceFile: /src/frr/tests/lib/test_seqlock.c
    functionUses: 0
    functionsReached:
    - strlen
    - monotime_since
    - snprintfrr
    - writev
    linkageType: ''
    returnType: void
    signature: void writestr(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:45,1
    - Dst: seqlock_held
      Src: /src/frr/tests/lib/test_seqlock.c:45,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:46,1
    - Dst: seqlock_check
      Src: /src/frr/tests/lib/test_seqlock.c:46,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_seqlock.c:47,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:48,1
    - Dst: sleep
      Src: /src/frr/tests/lib/test_seqlock.c:50,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:52,1
    - Dst: seqlock_held
      Src: /src/frr/tests/lib/test_seqlock.c:52,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:53,1
    - Dst: seqlock_check
      Src: /src/frr/tests/lib/test_seqlock.c:53,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_seqlock.c:54,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:55,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_seqlock.c:57,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:58,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_seqlock.c:60,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:61,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_seqlock.c:63,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:64,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_seqlock.c:66,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:67,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_seqlock.c:69,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts:
    - condition: (seqlock_check(&sqlo, 1))
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_check(&sqlo, 1))
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (!seqlock_held(&sqlo))
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_held(&sqlo))
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/frr/tests/lib/test_seqlock.c
    constantsTouched: []
    func_position:
      end: 72
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 72
    functionName: thr1func
    functionSourceFile: /src/frr/tests/lib/test_seqlock.c
    functionUses: 0
    functionsReached:
    - seqlock_held
    - sleep
    - seqlock_check
    - writestr
    - assert
    - seqlock_wait
    linkageType: ''
    returnType: void
    signature: void *thr1func(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/tests/lib/test_seqlock.c:76,1
    - Dst: seqlock_init
      Src: /src/frr/tests/lib/test_seqlock.c:78,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:80,1
    - Dst: seqlock_held
      Src: /src/frr/tests/lib/test_seqlock.c:80,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/tests/lib/test_seqlock.c:81,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:82,1
    - Dst: seqlock_held
      Src: /src/frr/tests/lib/test_seqlock.c:82,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:84,1
    - Dst: seqlock_cur
      Src: /src/frr/tests/lib/test_seqlock.c:84,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:85,1
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_seqlock.c:85,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:86,1
    - Dst: seqlock_cur
      Src: /src/frr/tests/lib/test_seqlock.c:86,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:87,1
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_seqlock.c:87,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:88,1
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_seqlock.c:88,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:89,1
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_seqlock.c:89,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:90,1
    - Dst: seqlock_cur
      Src: /src/frr/tests/lib/test_seqlock.c:90,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:92,1
    - Dst: seqlock_held
      Src: /src/frr/tests/lib/test_seqlock.c:92,1
    - Dst: seqlock_release
      Src: /src/frr/tests/lib/test_seqlock.c:93,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_seqlock.c:94,1
    - Dst: seqlock_held
      Src: /src/frr/tests/lib/test_seqlock.c:94,1
    - Dst: pthread_create
      Src: /src/frr/tests/lib/test_seqlock.c:96,1
    - Dst: sleep
      Src: /src/frr/tests/lib/test_seqlock.c:97,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:99,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/tests/lib/test_seqlock.c:100,1
    - Dst: sleep
      Src: /src/frr/tests/lib/test_seqlock.c:101,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:103,1
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_seqlock.c:104,1
    - Dst: sleep
      Src: /src/frr/tests/lib/test_seqlock.c:105,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:107,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/tests/lib/test_seqlock.c:108,1
    - Dst: sleep
      Src: /src/frr/tests/lib/test_seqlock.c:109,1
    - Dst: writestr
      Src: /src/frr/tests/lib/test_seqlock.c:111,1
    - Dst: seqlock_release
      Src: /src/frr/tests/lib/test_seqlock.c:112,1
    - Dst: sleep
      Src: /src/frr/tests/lib/test_seqlock.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (!seqlock_held(&sqlo))
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_held(&sqlo))
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_cur(&sqlo) == 1)
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_bump(&sqlo) == 5)
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_bump(&sqlo) == 13)
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_held(&sqlo))
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (!seqlock_held(&sqlo))
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_bump(&sqlo) == 1)
      pos:
        line_end: 84
        line_start: 84
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_cur(&sqlo) == 5)
      pos:
        line_end: 85
        line_start: 85
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_bump(&sqlo) == 9)
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/frr/tests/lib/test_seqlock.c
    - condition: (seqlock_cur(&sqlo) == 17)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/tests/lib/test_seqlock.c
    constantsTouched: []
    func_position:
      end: 114
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 114
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_seqlock.c
    functionUses: 2
    functionsReached:
    - seqlock_held
    - seqlock_acquire_val
    - seqlock_bump
    - seqlock_init
    - pthread_create
    - writestr
    - monotime
    - seqlock_release
    - seqlock_cur
    - sleep
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _CONSTRUCTOR
      Src: /src/frr/tests/lib/test_plist.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: test_yang_modules_set
    functionSourceFile: /src/frr/tests/lib/test_plist.c
    functionUses: 0
    functionsReached:
    - _CONSTRUCTOR
    linkageType: ''
    returnType: void
    signature: void test_yang_modules_set(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_init
      Src: /src/frr/tests/lib/test_plist.c:28,1
    - Dst: filter_cli_init
      Src: /src/frr/tests/lib/test_plist.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 35
    functionName: test_init
    functionSourceFile: /src/frr/tests/lib/test_plist.c
    functionUses: 2
    functionsReached:
    - prefix_list_init
    - filter_cli_init
    linkageType: ''
    returnType: void
    signature: void test_init(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_assert.c:19,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_assert.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - number
    argTypes:
    - int
    assertStmts:
    - condition: (number > 2)
      pos:
        line_end: 18
        line_start: 18
        source_file: /src/frr/tests/lib/test_assert.c
    constantsTouched: []
    func_position:
      end: 21
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 21
    functionName: func_for_bt
    functionSourceFile: /src/frr/tests/lib/test_assert.c
    functionUses: 0
    functionsReached:
    - assertf
    - assert
    linkageType: ''
    returnType: void
    signature: void func_for_bt(int number)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/test_assert.c:33,1
    - Dst: atoi
      Src: /src/frr/tests/lib/test_assert.c:36,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_assert.c:38,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_assert.c:39,1
    - Dst: event_master_create
      Src: /src/frr/tests/lib/test_assert.c:42,1
    - Dst: signal_init
      Src: /src/frr/tests/lib/test_assert.c:43,1
    - Dst: func_for_bt
      Src: /src/frr/tests/lib/test_assert.c:45,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_assert.c:46,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_assert.c:47,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_assert.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (number > 0)
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/frr/tests/lib/test_assert.c
    - condition: (number > 4)
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/frr/tests/lib/test_assert.c
    constantsTouched: []
    func_position:
      end: 51
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 51
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_assert.c
    functionUses: 2
    functionsReached:
    - assertf
    - event_master_create
    - func_for_bt
    - zlog_aux_init
    - signal_init
    - atoi
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_prefix2str.c:23,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_prefix2str.c:27,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_prefix2str.c:28,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_prefix2str.c:29,1
    - Dst: inet_ntop
      Src: /src/frr/tests/lib/test_prefix2str.c:30,1
    - Dst: prefix2str
      Src: /src/frr/tests/lib/test_prefix2str.c:33,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_prefix2str.c:34,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_prefix2str.c:34,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_prefix2str.c:35,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_prefix2str.c:43,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_prefix2str.c:46,1
    - Dst: __builtin_ctz
      Src: /src/frr/tests/lib/test_prefix2str.c:48,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_prefix2str.c:48,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_prefix2str.c:49,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_prefix2str.c:55,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_prefix2str.c:56,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_prefix2str.c:57,1
    - Dst: inet_ntop
      Src: /src/frr/tests/lib/test_prefix2str.c:58,1
    - Dst: prefix2str
      Src: /src/frr/tests/lib/test_prefix2str.c:61,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_prefix2str.c:62,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_prefix2str.c:62,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_prefix2str.c:63,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (!strcmp(buf1, buf2))
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/tests/lib/test_prefix2str.c
    - condition: (!strcmp(buf1, buf2))
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/frr/tests/lib/test_prefix2str.c
    constantsTouched: []
    func_position:
      end: 67
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 67
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_prefix2str.c
    functionUses: 2
    functionsReached:
    - prng_rand
    - prefix2str
    - snprintf
    - prng_new
    - strcmp
    - inet_ntop
    - fprintf
    - __builtin_ctz
    - memcpy
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - vals
    - len
    - 'off'
    argTypes:
    - struct csum_vals*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 60
    functionName: reduce_ospfd
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t reduce_ospfd(struct csum_vals *vals, testsz_t len,\n\t\t\t
      \    testoff_t off)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - vals
    - len
    - 'off'
    argTypes:
    - struct csum_vals*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 84
    functionName: reduce_ospfd1
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t reduce_ospfd1(struct csum_vals *vals, testsz_t len,\n\t\t\t
      \     testoff_t off)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vals
    - len
    - 'off'
    argTypes:
    - struct csum_vals*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 119
    functionName: reduce_isisd
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t reduce_isisd(struct csum_vals *vals, testsz_t len,\n\t\t\t
      \    testoff_t off)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vals
    - len
    - 'off'
    argTypes:
    - struct csum_vals*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 154
    functionName: reduce_isisd_yfix
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t reduce_isisd_yfix(struct csum_vals *vals, testsz_t len,\n\t\t\t\t
      \ testoff_t off)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vals
    - len
    - 'off'
    argTypes:
    - struct csum_vals*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 189
    functionName: reduce_isisd_mod
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t reduce_isisd_mod(struct csum_vals *vals, testsz_t len,\n\t\t\t\t
      testoff_t off)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vals
    - len
    - 'off'
    argTypes:
    - struct csum_vals*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 224
    functionName: reduce_isisd_mody
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t reduce_isisd_mody(struct csum_vals *vals, testsz_t len,\n\t\t\t\t
      \ testoff_t off)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:285,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 3
    argNames:
    - buffer
    - len
    - 'off'
    argTypes:
    - uint8_t*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 288
    functionName: ospfd_checksum
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospfd_checksum(uint8_t *buffer, testsz_t len, testoff_t off)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/tests/lib/test_checksum.c:314,1
    - Dst: htons
      Src: /src/frr/tests/lib/test_checksum.c:351,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 3
    argNames:
    - buffer
    - len
    - 'off'
    argTypes:
    - uint8_t*
    - testsz_t
    - testoff_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 357
    functionName: iso_csum_create
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - MIN
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t iso_csum_create(uint8_t *buffer, testsz_t len, testoff_t off)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/tests/lib/test_checksum.c:372,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - buffer
    - len
    argTypes:
    - uint8_t*
    - testsz_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 388
    functionName: verify
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached:
    - MIN
    linkageType: ''
    returnType: int
    signature: int verify(uint8_t *buffer, testsz_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - parg
    - nbytes
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 419
    functionName: in_cksum_optimized
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int in_cksum_optimized(void *parg, int nbytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - parg
    - count
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 446
    functionName: in_cksum_rfc
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int in_cksum_rfc(void *parg, int count)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_checksum.c:457,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:466,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_checksum.c:469,1
    - Dst: in_cksum
      Src: /src/frr/tests/lib/test_checksum.c:471,1
    - Dst: in_cksum_optimized
      Src: /src/frr/tests/lib/test_checksum.c:472,1
    - Dst: in_cksum_rfc
      Src: /src/frr/tests/lib/test_checksum.c:473,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:475,1
    - Dst: in_cksumv
      Src: /src/frr/tests/lib/test_checksum.c:486,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:488,1
    - Dst: in_cksumv
      Src: /src/frr/tests/lib/test_checksum.c:500,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:502,1
    - Dst: in_cksumv
      Src: /src/frr/tests/lib/test_checksum.c:514,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:516,1
    - Dst: ospfd_checksum
      Src: /src/frr/tests/lib/test_checksum.c:524,1
    - Dst: verify
      Src: /src/frr/tests/lib/test_checksum.c:526,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:527,1
    - Dst: iso_csum_create
      Src: /src/frr/tests/lib/test_checksum.c:528,1
    - Dst: verify
      Src: /src/frr/tests/lib/test_checksum.c:530,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:531,1
    - Dst: fletcher_checksum
      Src: /src/frr/tests/lib/test_checksum.c:532,1
    - Dst: verify
      Src: /src/frr/tests/lib/test_checksum.c:534,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:535,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:538,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:550,1
    - Dst: f
      Src: /src/frr/tests/lib/test_checksum.c:552,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:556,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:563,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:565,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_checksum.c:568,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_checksum.c:569,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 67
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 572
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_checksum.c
    functionUses: 2
    functionsReached:
    - in_cksumv
    - prng_rand
    - exit
    - in_cksum_optimized
    - fletcher_checksum
    - prng_new
    - in_cksum
    - in_cksum_rfc
    - f
    - printf
    - iso_csum_create
    - verify
    - ospfd_checksum
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: dummy_func
    functionSourceFile: /src/frr/tests/lib/test_timer_performance.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dummy_func(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_master_create
      Src: /src/frr/tests/lib/test_timer_performance.c:37,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_timer_performance.c:38,1
    - Dst: calloc
      Src: /src/frr/tests/lib/test_timer_performance.c:39,1
    - Dst: event_add_timer_msec
      Src: /src/frr/tests/lib/test_timer_performance.c:44,1
    - Dst: event_cancel
      Src: /src/frr/tests/lib/test_timer_performance.c:47,1
    - Dst: monotime
      Src: /src/frr/tests/lib/test_timer_performance.c:49,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_timer_performance.c:54,1
    - Dst: event_add_timer_msec
      Src: /src/frr/tests/lib/test_timer_performance.c:55,1
    - Dst: monotime
      Src: /src/frr/tests/lib/test_timer_performance.c:59,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_timer_performance.c:64,1
    - Dst: event_cancel
      Src: /src/frr/tests/lib/test_timer_performance.c:65,1
    - Dst: monotime
      Src: /src/frr/tests/lib/test_timer_performance.c:68,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_timer_performance.c:76,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_timer_performance.c:78,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_timer_performance.c:80,1
    - Dst: free
      Src: /src/frr/tests/lib/test_timer_performance.c:82,1
    - Dst: event_master_free
      Src: /src/frr/tests/lib/test_timer_performance.c:83,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_timer_performance.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 86
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_timer_performance.c
    functionUses: 2
    functionsReached:
    - prng_rand
    - prng_new
    - event_cancel
    - monotime
    - free
    - event_master_create
    - event_add_timer_msec
    - event_master_free
    - prng_free
    - fflush
    - printf
    - calloc
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - x
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 16
    functionName: rel
    functionSourceFile: /src/frr/tests/lib/test_versioncmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rel(int x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_version_cmp
      Src: /src/frr/tests/lib/test_versioncmp.c:22,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_versioncmp.c:25,1
    - Dst: rel
      Src: /src/frr/tests/lib/test_versioncmp.c:25,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_versioncmp.c:27,1
    - Dst: rel
      Src: /src/frr/tests/lib/test_versioncmp.c:27,1
    - Dst: rel
      Src: /src/frr/tests/lib/test_versioncmp.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - expect
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: compare
    functionSourceFile: /src/frr/tests/lib/test_versioncmp.c
    functionUses: 0
    functionsReached:
    - frr_version_cmp
    - rel
    - printf
    linkageType: ''
    returnType: void
    signature: void compare(const char *a, const char *b, int expect)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:35,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:36,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:37,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:38,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:39,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:40,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:41,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:42,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:43,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:44,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:45,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:46,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:47,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:48,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:49,1
    - Dst: compare
      Src: /src/frr/tests/lib/test_versioncmp.c:50,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_versioncmp.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 53
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_versioncmp.c
    functionUses: 2
    functionsReached:
    - compare
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct item*
    - struct item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: icmp
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int icmp(const struct item *a, const struct item *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - _desc
    - ','
    - _prefill
    - ','
    - _sorted
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 99
    functionName: deftestrun
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: deftestrun(name, _desc, _prefill, _sorted)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_atomlist.c:246,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_atomlist.c:247,1
    - Dst: struct testrun*::func
      Src: /src/frr/tests/lib/test_atomlist.c:249,1
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_atomlist.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 254
    functionName: thr1func
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 0
    functionsReached:
    - struct testrun*::func
    - seqlock_bump
    - seqlock_wait
    linkageType: ''
    returnType: endtestrun
    signature: endtestrun *thr1func(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/tests/lib/test_atomlist.c:260,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_atomlist.c:261,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_atomlist.c:262,1
    - Dst: alist_add_tail
      Src: /src/frr/tests/lib/test_atomlist.c:266,1
    - Dst: asort_add
      Src: /src/frr/tests/lib/test_atomlist.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - prefill
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 270
    functionName: clear_list
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 0
    functionsReached:
    - asort_add
    - alist_add_tail
    - memset
    linkageType: ''
    returnType: void
    signature: void clear_list(size_t prefill)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:281,1
    - Dst: seqlock_cur
      Src: /src/frr/tests/lib/test_atomlist.c:281,1
    - Dst: fflush
      Src: /src/frr/tests/lib/test_atomlist.c:282,1
    - Dst: clear_list
      Src: /src/frr/tests/lib/test_atomlist.c:285,1
    - Dst: monotime
      Src: /src/frr/tests/lib/test_atomlist.c:287,1
    - Dst: seqlock_bump
      Src: /src/frr/tests/lib/test_atomlist.c:288,1
    - Dst: seqlock_wait
      Src: /src/frr/tests/lib/test_atomlist.c:290,1
    - Dst: seqlock_cur
      Src: /src/frr/tests/lib/test_atomlist.c:290,1
    - Dst: monotime_since
      Src: /src/frr/tests/lib/test_atomlist.c:297,1
    - Dst: frr_each
      Src: /src/frr/tests/lib/test_atomlist.c:301,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_atomlist.c:302,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_atomlist.c:306,1
    - Dst: asort_count
      Src: /src/frr/tests/lib/test_atomlist.c:306,1
    - Dst: frr_each
      Src: /src/frr/tests/lib/test_atomlist.c:309,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_atomlist.c:310,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_atomlist.c:313,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_atomlist.c:315,1
    - Dst: alist_count
      Src: /src/frr/tests/lib/test_atomlist.c:315,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 1
    argNames:
    - tr
    argTypes:
    - struct testrun*
    assertStmts:
    - condition: (item != prev)
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/frr/tests/lib/test_atomlist.c
    - condition: (item->val1 >= prevval)
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/frr/tests/lib/test_atomlist.c
    - condition: (c == asort_count(&shead))
      pos:
        line_end: 305
        line_start: 305
        source_file: /src/frr/tests/lib/test_atomlist.c
    - condition: (c <= NITEM)
      pos:
        line_end: 312
        line_start: 312
        source_file: /src/frr/tests/lib/test_atomlist.c
    - condition: (c == alist_count(&ahead))
      pos:
        line_end: 314
        line_start: 314
        source_file: /src/frr/tests/lib/test_atomlist.c
    constantsTouched: []
    func_position:
      end: 319
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 319
    functionName: run_tr
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 0
    functionsReached:
    - seqlock_bump
    - frr_each
    - monotime
    - printfrr
    - clear_list
    - fflush
    - monotime_since
    - seqlock_cur
    - alist_count
    - asort_count
    - assert
    - seqlock_wait
    linkageType: ''
    returnType: void
    signature: void run_tr(struct testrun *tr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:327,1
    - Dst: frr_each_safe
      Src: /src/frr/tests/lib/test_atomlist.c:328,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - lbl
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 332
    functionName: dump
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 2
    functionsReached:
    - frr_each_safe
    - printfrr
    linkageType: ''
    returnType: void
    signature: void dump(const char *lbl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/tests/lib/test_atomlist.c:338,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_atomlist.c:339,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_atomlist.c:343,1
    - Dst: alist_first
      Src: /src/frr/tests/lib/test_atomlist.c:343,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:344,1
    - Dst: alist_add_head
      Src: /src/frr/tests/lib/test_atomlist.c:345,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:346,1
    - Dst: alist_add_head
      Src: /src/frr/tests/lib/test_atomlist.c:347,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:348,1
    - Dst: alist_add_tail
      Src: /src/frr/tests/lib/test_atomlist.c:349,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:350,1
    - Dst: alist_add_tail
      Src: /src/frr/tests/lib/test_atomlist.c:351,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:352,1
    - Dst: alist_del
      Src: /src/frr/tests/lib/test_atomlist.c:353,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:354,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:355,1
    - Dst: alist_pop
      Src: /src/frr/tests/lib/test_atomlist.c:355,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:356,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:357,1
    - Dst: alist_pop
      Src: /src/frr/tests/lib/test_atomlist.c:357,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:358,1
    - Dst: alist_pop
      Src: /src/frr/tests/lib/test_atomlist.c:358,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:359,1
    - Dst: alist_pop
      Src: /src/frr/tests/lib/test_atomlist.c:359,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_atomlist.c:360,1
    - Dst: alist_pop
      Src: /src/frr/tests/lib/test_atomlist.c:360,1
    - Dst: dump
      Src: /src/frr/tests/lib/test_atomlist.c:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (alist_first(&ahead) == NULL)
      pos:
        line_end: 342
        line_start: 342
        source_file: /src/frr/tests/lib/test_atomlist.c
    constantsTouched: []
    func_position:
      end: 362
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 362
    functionName: basic_tests
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 0
    functionsReached:
    - alist_add_tail
    - memset
    - alist_pop
    - alist_del
    - printfrr
    - alist_add_head
    - alist_first
    - dump
    - assert
    linkageType: ''
    returnType: void
    signature: void basic_tests(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 365
    functionName: basic_tests
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: basic_tests()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: basic_tests
      Src: /src/frr/tests/lib/test_atomlist.c:371,1
    - Dst: seqlock_init
      Src: /src/frr/tests/lib/test_atomlist.c:373,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/tests/lib/test_atomlist.c:374,1
    - Dst: seqlock_init
      Src: /src/frr/tests/lib/test_atomlist.c:377,1
    - Dst: seqlock_acquire
      Src: /src/frr/tests/lib/test_atomlist.c:378,1
    - Dst: pthread_create
      Src: /src/frr/tests/lib/test_atomlist.c:382,1
    - Dst: run_tr
      Src: /src/frr/tests/lib/test_atomlist.c:388,1
    - Dst: pthread_join
      Src: /src/frr/tests/lib/test_atomlist.c:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 394
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_atomlist.c
    functionUses: 2
    functionsReached:
    - seqlock_acquire_val
    - pthread_join
    - seqlock_init
    - run_tr
    - pthread_create
    - seqlock_acquire
    - basic_tests
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ttable_new
      Src: /src/frr/tests/lib/test_ttable.c:15,1
    - Dst: ttable_add_row
      Src: /src/frr/tests/lib/test_ttable.c:18,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:19,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:20,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:21,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:22,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:23,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:26,1
    - Dst: ttable_add_row
      Src: /src/frr/tests/lib/test_ttable.c:26,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:27,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:28,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:29,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:30,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:31,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:34,1
    - Dst: ttable_add_row
      Src: /src/frr/tests/lib/test_ttable.c:34,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:35,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:36,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:37,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:38,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:39,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:42,1
    - Dst: ttable_add_row
      Src: /src/frr/tests/lib/test_ttable.c:42,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:43,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:44,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:45,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:46,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:47,1
    - Dst: ttable_del_row
      Src: /src/frr/tests/lib/test_ttable.c:50,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:51,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:52,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:53,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:54,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:55,1
    - Dst: ttable_del_row
      Src: /src/frr/tests/lib/test_ttable.c:58,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:59,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:60,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:61,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:62,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:63,1
    - Dst: ttable_del_row
      Src: /src/frr/tests/lib/test_ttable.c:66,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:67,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:68,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:69,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:70,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:71,1
    - Dst: ttable_add_row
      Src: /src/frr/tests/lib/test_ttable.c:74,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:75,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:76,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:77,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:78,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:79,1
    - Dst: ttable_add_row
      Src: /src/frr/tests/lib/test_ttable.c:82,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:85,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:86,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:87,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:88,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:89,1
    - Dst: ttable_insert_row
      Src: /src/frr/tests/lib/test_ttable.c:92,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:94,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:95,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:96,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:97,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:98,1
    - Dst: ttable_insert_row
      Src: /src/frr/tests/lib/test_ttable.c:101,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:103,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:104,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:105,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:106,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:107,1
    - Dst: ttable_insert_row
      Src: /src/frr/tests/lib/test_ttable.c:110,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:111,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:112,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:113,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:114,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:115,1
    - Dst: ttable_align
      Src: /src/frr/tests/lib/test_ttable.c:118,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:119,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:120,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:121,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:122,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:123,1
    - Dst: ttable_align
      Src: /src/frr/tests/lib/test_ttable.c:125,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:126,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:127,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:128,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:129,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:130,1
    - Dst: ttable_pad
      Src: /src/frr/tests/lib/test_ttable.c:133,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:134,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:135,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:136,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:137,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:138,1
    - Dst: ttable_pad
      Src: /src/frr/tests/lib/test_ttable.c:140,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:141,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_ttable.c:142,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:143,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:144,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:145,1
    - Dst: ttable_restyle
      Src: /src/frr/tests/lib/test_ttable.c:152,1
    - Dst: ttable_rowseps
      Src: /src/frr/tests/lib/test_ttable.c:155,1
    - Dst: ttable_rowseps
      Src: /src/frr/tests/lib/test_ttable.c:156,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:157,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:158,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:159,1
    - Dst: ttable_colseps
      Src: /src/frr/tests/lib/test_ttable.c:162,1
    - Dst: ttable_dump
      Src: /src/frr/tests/lib/test_ttable.c:163,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_ttable.c:164,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_ttable.c:165,1
    - Dst: ttable_del
      Src: /src/frr/tests/lib/test_ttable.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 112
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (tt->nrows == 1)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (ttable_add_row(tt, "%s|%s|%s", "a", "b", "c"))
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 5)
      pos:
        line_end: 134
        line_start: 134
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 0)
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 3)
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 3)
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 1)
      pos:
        line_end: 19
        line_start: 19
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 3)
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 0)
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 3)
      pos:
        line_end: 18
        line_start: 18
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 4)
      pos:
        line_end: 103
        line_start: 103
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 1)
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (ttable_add_row(tt, "%s", "Garbage") == NULL)
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 3)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 102
        line_start: 102
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 5)
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 5)
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 2)
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 5)
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (ttable_add_row(tt, "||"))
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 3)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 2)
      pos:
        line_end: 85
        line_start: 85
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 118
        line_start: 118
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 3)
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 2)
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 1)
      pos:
        line_end: 75
        line_start: 75
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 84
        line_start: 84
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->nrows == 5)
      pos:
        line_end: 141
        line_start: 141
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 3)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/frr/tests/lib/test_ttable.c
    - condition: (tt->ncols == 5)
      pos:
        line_end: 140
        line_start: 140
        source_file: /src/frr/tests/lib/test_ttable.c
    constantsTouched: []
    func_position:
      end: 169
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 169
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_ttable.c
    functionUses: 2
    functionsReached:
    - ttable_insert_row
    - ttable_del
    - ttable_add_row
    - ttable_new
    - ttable_del_row
    - ttable_restyle
    - ttable_rowseps
    - ttable_dump
    - fprintf
    - XFREE
    - ttable_align
    - ttable_colseps
    - ttable_pad
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/tests/lib/test_printfrr.c:25,1
    - Dst: va_start
      Src: /src/frr/tests/lib/test_printfrr.c:27,1
    - Dst: vsnprintf
      Src: /src/frr/tests/lib/test_printfrr.c:28,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_printfrr.c:29,1
    - Dst: va_start
      Src: /src/frr/tests/lib/test_printfrr.c:31,1
    - Dst: vsnprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:32,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_printfrr.c:33,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:35,1
    - Dst: strstr
      Src: /src/frr/tests/lib/test_printfrr.c:38,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:40,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_printfrr.c:44,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 49
    functionName: printcmp
    functionSourceFile: /src/frr/tests/lib/test_printfrr.c
    functionUses: 0
    functionsReached:
    - strstr
    - memset
    - vsnprintfrr
    - vsnprintf
    - strcmp
    - va_start
    - va_end
    - printf
    linkageType: ''
    returnType: void
    signature: void printcmp(const char *fmt, ...)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/tests/lib/test_printfrr.c:60,1
    - Dst: va_start
      Src: /src/frr/tests/lib/test_printfrr.c:62,1
    - Dst: vsnprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:63,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_printfrr.c:64,1
    - Dst: va_start
      Src: /src/frr/tests/lib/test_printfrr.c:66,1
    - Dst: vsnprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:67,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_printfrr.c:68,1
    - Dst: strnlen
      Src: /src/frr/tests/lib/test_printfrr.c:70,1
    - Dst: strnlen
      Src: /src/frr/tests/lib/test_printfrr.c:72,1
    - Dst: strncmp
      Src: /src/frr/tests/lib/test_printfrr.c:72,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_printfrr.c:81,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:83,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_printfrr.c:93,1
    - Dst: va_start
      Src: /src/frr/tests/lib/test_printfrr.c:96,1
    - Dst: vbprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:97,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_printfrr.c:99,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_printfrr.c:101,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:102,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:103,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_printfrr.c:105,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_printfrr.c:106,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_printfrr.c:111,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_printfrr.c:116,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - ref
    - fmt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 118
    functionName: printchk
    functionSourceFile: /src/frr/tests/lib/test_printfrr.c
    functionUses: 0
    functionsReached:
    - strlen
    - memset
    - vsnprintfrr
    - strcmp
    - va_start
    - va_end
    - strncmp
    - vbprintfrr
    - array_size
    - printf
    - strnlen
    linkageType: ''
    returnType: int
    signature: int printchk(const char *ref, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/lib/test_printfrr.c:126,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:130,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_printfrr.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ref
    - fmt
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 133
    functionName: test_va
    functionSourceFile: /src/frr/tests/lib/test_printfrr.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - printchk
    linkageType: ''
    returnType: void
    signature: void test_va(const char *ref, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:151,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:152,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:154,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:155,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:156,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:157,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_printfrr.c:159,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:160,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:161,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:162,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:163,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:166,1
    - Dst: inet_aton
      Src: /src/frr/tests/lib/test_printfrr.c:169,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:170,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:171,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:172,1
    - Dst: printcmp
      Src: /src/frr/tests/lib/test_printfrr.c:174,1
    - Dst: test_va
      Src: /src/frr/tests/lib/test_printfrr.c:176,1
    - Dst: inet_aton
      Src: /src/frr/tests/lib/test_printfrr.c:178,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:179,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:180,1
    - Dst: snprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:182,1
    - Dst: csnprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:183,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_printfrr.c:184,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:184,1
    - Dst: asnprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:186,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_printfrr.c:187,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_printfrr.c:188,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:188,1
    - Dst: asnprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:190,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_printfrr.c:191,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_printfrr.c:192,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:192,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_printfrr.c:193,1
    - Dst: asprintfrr
      Src: /src/frr/tests/lib/test_printfrr.c:195,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_printfrr.c:196,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_printfrr.c:196,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_printfrr.c:197,1
    - Dst: str2prefix
      Src: /src/frr/tests/lib/test_printfrr.c:201,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:202,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:203,1
    - Dst: str2prefix
      Src: /src/frr/tests/lib/test_printfrr.c:205,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:206,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:207,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:210,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:211,1
    - Dst: str2prefix_eth
      Src: /src/frr/tests/lib/test_printfrr.c:213,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:214,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:215,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:220,1
    - Dst: inet_aton
      Src: /src/frr/tests/lib/test_printfrr.c:222,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:223,1
    - Dst: inet_aton
      Src: /src/frr/tests/lib/test_printfrr.c:225,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:226,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:229,1
    - Dst: FMT_NSTD
      Src: /src/frr/tests/lib/test_printfrr.c:233,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:233,1
    - Dst: FMT_NSTD
      Src: /src/frr/tests/lib/test_printfrr.c:234,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:234,1
    - Dst: FMT_NSTD
      Src: /src/frr/tests/lib/test_printfrr.c:236,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:236,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:238,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:239,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:241,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:243,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:245,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:246,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:248,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:250,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:255,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:256,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:258,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:260,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:262,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:264,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:265,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:266,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:273,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:274,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_printfrr.c:278,1
    - Dst: inet_aton
      Src: /src/frr/tests/lib/test_printfrr.c:281,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:282,1
    - Dst: inet_pton
      Src: /src/frr/tests/lib/test_printfrr.c:285,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:286,1
    - Dst: setenv
      Src: /src/frr/tests/lib/test_printfrr.c:291,1
    - Dst: tzset
      Src: /src/frr/tests/lib/test_printfrr.c:292,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:302,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:303,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:304,1
    - Dst: FMT_NSTD
      Src: /src/frr/tests/lib/test_printfrr.c:306,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:306,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:308,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:309,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:310,1
    - Dst: FMT_NSTD
      Src: /src/frr/tests/lib/test_printfrr.c:311,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:311,1
    - Dst: FMT_NSTD
      Src: /src/frr/tests/lib/test_printfrr.c:312,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:312,1
    - Dst: FMT_NSTD
      Src: /src/frr/tests/lib/test_printfrr.c:313,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:313,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:317,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:318,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:319,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:320,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:322,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:323,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:325,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:326,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:330,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:331,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:333,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:334,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:336,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:338,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:339,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:343,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:344,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:345,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:346,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:348,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:349,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:351,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:353,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:354,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:358,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:359,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:360,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:361,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:363,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:364,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:366,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:367,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:368,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:370,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:371,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:372,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:373,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:377,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:378,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:379,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:380,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:382,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:383,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:384,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:385,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:387,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:388,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:390,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:391,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:392,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:394,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:395,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:396,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:399,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:401,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:402,1
    - Dst: printchk
      Src: /src/frr/tests/lib/test_printfrr.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 165
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (strcmp(buf, "test#3") == 0)
      pos:
        line_end: 187
        line_start: 187
        source_file: /src/frr/tests/lib/test_printfrr.c
    - condition: (p == buf)
      pos:
        line_end: 186
        line_start: 186
        source_file: /src/frr/tests/lib/test_printfrr.c
    - condition: (strcmp(buf, "test#1test#2") == 0)
      pos:
        line_end: 183
        line_start: 183
        source_file: /src/frr/tests/lib/test_printfrr.c
    - condition: (strcmp(p, "test#4") == 0)
      pos:
        line_end: 191
        line_start: 191
        source_file: /src/frr/tests/lib/test_printfrr.c
    - condition: (p != buf)
      pos:
        line_end: 190
        line_start: 190
        source_file: /src/frr/tests/lib/test_printfrr.c
    - condition: (strcmp(p, "test#5") == 0)
      pos:
        line_end: 195
        line_start: 195
        source_file: /src/frr/tests/lib/test_printfrr.c
    constantsTouched: []
    func_position:
      end: 406
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 406
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_printfrr.c
    functionUses: 2
    functionsReached:
    - FMT_NSTD
    - asprintfrr
    - memset
    - asnprintfrr
    - tzset
    - array_size
    - str2prefix
    - assert
    - printcmp
    - csnprintfrr
    - inet_pton
    - XFREE
    - setenv
    - test_va
    - inet_aton
    - strcmp
    - snprintfrr
    - str2prefix_eth
    - printchk
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/tests/lib/test_srcdest_table.c:52,1
    - Dst: prefix2str
      Src: /src/frr/tests/lib/test_srcdest_table.c:54,1
    - Dst: asprintf
      Src: /src/frr/tests/lib/test_srcdest_table.c:59,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - dst_p
    - src_p
    argTypes:
    - struct prefix_ipv6*
    - struct prefix_ipv6*
    assertStmts:
    - condition: (ec > 0)
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 64
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 64
    functionName: format_srcdest
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - asprintf
    - assert
    linkageType: ''
    returnType: char
    signature: "char *format_srcdest(const struct prefix_ipv6 *dst_p,\n\t\t\t    const
      struct prefix_ipv6 *src_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 85
    functionName: log_key
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int log_key(const void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_srcdest_table.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 93
    functionName: log_cmp
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool log_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_srcdest_table.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: log_free
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void log_free(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_srcdest_table.c:102,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: log_alloc
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *log_alloc(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_srcdest_table.c:111,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:112,1
    - Dst: srcdest_table_init
      Src: /src/frr/tests/lib/test_srcdest_table.c:114,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:115,1
    - Dst: hash_create
      Src: /src/frr/tests/lib/test_srcdest_table.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rv)
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    - condition: (rv->table)
      pos:
        line_end: 114
        line_start: 114
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 119
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 119
    functionName: test_state_new
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - hash_create
    - srcdest_table_init
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct test_state
    signature: struct test_state *test_state_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_finish
      Src: /src/frr/tests/lib/test_srcdest_table.c:123,1
    - Dst: hash_clean_and_free
      Src: /src/frr/tests/lib/test_srcdest_table.c:124,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_srcdest_table.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - test
    argTypes:
    - struct test_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: test_state_free
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - route_table_finish
    - XFREE
    linkageType: ''
    returnType: void
    signature: void test_state_free(struct test_state *test)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_get
      Src: /src/frr/tests/lib/test_srcdest_table.c:133,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_srcdest_table.c:136,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:137,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:138,1
    - Dst: route_unlock_node
      Src: /src/frr/tests/lib/test_srcdest_table.c:141,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:142,1
    - Dst: hash_lookup
      Src: /src/frr/tests/lib/test_srcdest_table.c:142,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:145,1
    - Dst: hash_lookup
      Src: /src/frr/tests/lib/test_srcdest_table.c:145,1
    - Dst: hash_get
      Src: /src/frr/tests/lib/test_srcdest_table.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - test
    - dst_p
    - src_p
    argTypes:
    - struct test_state*
    - struct prefix_ipv6*
    - struct prefix_ipv6*
    assertStmts:
    - condition: (hash_lookup(test->log, hash_entry) != NULL)
      pos:
        line_end: 141
        line_start: 141
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    - condition: (hash_lookup(test->log, hash_entry) == NULL)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 150
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 150
    functionName: test_state_add_route
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - assert
    - route_unlock_node
    - memset
    - hash_lookup
    - hash_get
    - memcpy
    - srcdest_rnode_get
    linkageType: ''
    returnType: void
    signature: "void test_state_add_route(struct test_state *test,\n\t\t\t\t struct
      prefix_ipv6 *dst_p,\n\t\t\t\t struct prefix_ipv6 *src_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/tests/lib/test_srcdest_table.c:156,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_srcdest_table.c:160,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:161,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:162,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:165,1
    - Dst: hash_lookup
      Src: /src/frr/tests/lib/test_srcdest_table.c:165,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:169,1
    - Dst: route_unlock_node
      Src: /src/frr/tests/lib/test_srcdest_table.c:171,1
    - Dst: route_unlock_node
      Src: /src/frr/tests/lib/test_srcdest_table.c:172,1
    - Dst: hash_release
      Src: /src/frr/tests/lib/test_srcdest_table.c:174,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:175,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_srcdest_table.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - test
    - dst_p
    - src_p
    argTypes:
    - struct test_state*
    - struct prefix_ipv6*
    - struct prefix_ipv6*
    assertStmts:
    - condition: (!hash_lookup(test->log, hash_entry))
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    - condition: (rn->info == (void *)0xdeadbeef)
      pos:
        line_end: 168
        line_start: 168
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    - condition: (hash_entry_intern != NULL)
      pos:
        line_end: 174
        line_start: 174
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 177
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 177
    functionName: test_state_del_route
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - assert
    - route_unlock_node
    - memset
    - hash_lookup
    - XFREE
    - hash_release
    - memcpy
    - srcdest_rnode_lookup
    linkageType: ''
    returnType: void
    signature: "void test_state_del_route(struct test_state *test,\n\t\t\t\t struct
      prefix_ipv6 *dst_p,\n\t\t\t\t struct prefix_ipv6 *src_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/tests/lib/test_srcdest_table.c:185,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:187,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:188,1
    - Dst: route_unlock_node
      Src: /src/frr/tests/lib/test_srcdest_table.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts:
    - condition: (rn)
      pos:
        line_end: 186
        line_start: 186
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    - condition: (rn->info == (void *)0xdeadbeef)
      pos:
        line_end: 187
        line_start: 187
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 191
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 191
    functionName: verify_log
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - assert
    - route_unlock_node
    - srcdest_rnode_lookup
    linkageType: ''
    returnType: void
    signature: void verify_log(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_srcdest
      Src: /src/frr/tests/lib/test_srcdest_table.c:198,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_srcdest_table.c:200,1
    - Dst: free
      Src: /src/frr/tests/lib/test_srcdest_table.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 202
    functionName: dump_log
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - fprintf
    - free
    - format_srcdest
    linkageType: ''
    returnType: void
    signature: void dump_log(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_srcdest_table.c:206,1
    - Dst: hash_iterate
      Src: /src/frr/tests/lib/test_srcdest_table.c:207,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_srcdest_table.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - test
    argTypes:
    - struct test_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 209
    functionName: test_dump
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - fprintf
    linkageType: ''
    returnType: void
    signature: void test_dump(struct test_state *test)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_srcdest
      Src: /src/frr/tests/lib/test_srcdest_table.c:215,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_srcdest_table.c:217,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_srcdest_table.c:218,1
    - Dst: free
      Src: /src/frr/tests/lib/test_srcdest_table.c:219,1
    - Dst: test_dump
      Src: /src/frr/tests/lib/test_srcdest_table.c:221,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - test
    - message
    - dst_p
    - src_p
    argTypes:
    - struct test_state*
    - char*
    - struct prefix_ipv6*
    - struct prefix_ipv6*
    assertStmts:
    - condition: (3 == 4)
      pos:
        line_end: 221
        line_start: 221
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 223
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 223
    functionName: test_failed
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - test_dump
    - free
    - fprintf
    - format_srcdest
    - assert
    linkageType: ''
    returnType: void
    signature: "void test_failed(struct test_state *test, const char *message,\n\t\t\tconst
      struct prefix_ipv6 *dst_p,\n\t\t\tconst struct prefix_ipv6 *src_p)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/tests/lib/test_srcdest_table.c:230,1
    - Dst: route_top
      Src: /src/frr/tests/lib/test_srcdest_table.c:234,1
    - Dst: srcdest_route_next
      Src: /src/frr/tests/lib/test_srcdest_table.c:234,1
    - Dst: rnode_is_dstnode
      Src: /src/frr/tests/lib/test_srcdest_table.c:249,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/tests/lib/test_srcdest_table.c:260,1
    - Dst: test_failed
      Src: /src/frr/tests/lib/test_srcdest_table.c:261,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/tests/lib/test_srcdest_table.c:272,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/tests/lib/test_srcdest_table.c:273,1
    - Dst: test_failed
      Src: /src/frr/tests/lib/test_srcdest_table.c:277,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:287,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/tests/lib/test_srcdest_table.c:289,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:291,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:293,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_srcdest_table.c:295,1
    - Dst: hash_lookup
      Src: /src/frr/tests/lib/test_srcdest_table.c:297,1
    - Dst: test_failed
      Src: /src/frr/tests/lib/test_srcdest_table.c:298,1
    - Dst: hash_iterate
      Src: /src/frr/tests/lib/test_srcdest_table.c:303,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 1
    argNames:
    - test
    argTypes:
    - struct test_state*
    assertStmts:
    - condition: (rn->info == (void *)0xdeadbeef)
      pos:
        line_end: 286
        line_start: 286
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 304
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 304
    functionName: test_state_verify
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - memset
    - srcdest_route_next
    - rnode_is_dstnode
    - route_top
    - test_failed
    - route_node_get_lock_count
    - hash_lookup
    - srcdest_rnode_prefixes
    - hash_iterate
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: void test_state_verify(struct test_state *test)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/tests/lib/test_srcdest_table.c:310,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_srcdest_table.c:313,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_srcdest_table.c:314,1
    - Dst: apply_mask
      Src: /src/frr/tests/lib/test_srcdest_table.c:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - prng
    - p
    argTypes:
    - struct prng*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 318
    functionName: get_rand_prefix
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - prng_rand
    - apply_mask
    - memset
    linkageType: ''
    returnType: void
    signature: void get_rand_prefix(struct prng *prng, struct prefix_ipv6 *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_rand_prefix
      Src: /src/frr/tests/lib/test_srcdest_table.c:323,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_srcdest_table.c:324,1
    - Dst: get_rand_prefix
      Src: /src/frr/tests/lib/test_srcdest_table.c:325,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_srcdest_table.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - prng
    - dst_p
    - src_p
    argTypes:
    - struct prng*
    - struct prefix_ipv6*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 331
    functionName: get_rand_prefix_pair
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - get_rand_prefix
    - prng_rand
    - memset
    linkageType: ''
    returnType: void
    signature: "void get_rand_prefix_pair(struct prng *prng, struct prefix_ipv6 *dst_p,\n\t\t\t\t
      struct prefix_ipv6 *src_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_rand_prefix_pair
      Src: /src/frr/tests/lib/test_srcdest_table.c:338,1
    - Dst: test_state_add_route
      Src: /src/frr/tests/lib/test_srcdest_table.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - test
    - prng
    argTypes:
    - struct test_state*
    - struct prng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 340
    functionName: test_state_add_rand_route
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - test_state_add_route
    - get_rand_prefix_pair
    linkageType: ''
    returnType: void
    signature: "void test_state_add_rand_route(struct test_state *test,\n\t\t\t\t
      \     struct prng *prng)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_rand_prefix_pair
      Src: /src/frr/tests/lib/test_srcdest_table.c:347,1
    - Dst: test_state_del_route
      Src: /src/frr/tests/lib/test_srcdest_table.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - test
    - prng
    argTypes:
    - struct test_state*
    - struct prng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 342
    functionDepth: 3
    functionLinenumber: 342
    functionLinenumberEnd: 349
    functionName: test_state_del_rand_route
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - test_state_del_route
    - get_rand_prefix_pair
    linkageType: ''
    returnType: void
    signature: "void test_state_del_rand_route(struct test_state *test,\n\t\t\t\t
      \     struct prng *prng)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_srcdest_table.c:358,1
    - Dst: route_top
      Src: /src/frr/tests/lib/test_srcdest_table.c:364,1
    - Dst: srcdest_route_next
      Src: /src/frr/tests/lib/test_srcdest_table.c:364,1
    - Dst: route_unlock_node
      Src: /src/frr/tests/lib/test_srcdest_table.c:368,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_srcdest_table.c:374,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/tests/lib/test_srcdest_table.c:375,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:376,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/test_srcdest_table.c:378,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_srcdest_table.c:380,1
    - Dst: test_state_del_route
      Src: /src/frr/tests/lib/test_srcdest_table.c:382,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - test
    - prng
    argTypes:
    - struct test_state*
    - struct prng*
    assertStmts:
    - condition: (rn)
      pos:
        line_end: 373
        line_start: 373
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    constantsTouched: []
    func_position:
      end: 383
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 383
    functionName: test_state_del_one_route
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - prng_rand
    - memset
    - srcdest_route_next
    - route_top
    - test_state_del_route
    - srcdest_rnode_prefixes
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: void test_state_del_one_route(struct test_state *test, struct prng
      *prng)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: test_state_new
      Src: /src/frr/tests/lib/test_srcdest_table.c:387,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_srcdest_table.c:388,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_srcdest_table.c:392,1
    - Dst: test_state_add_rand_route
      Src: /src/frr/tests/lib/test_srcdest_table.c:398,1
    - Dst: test_state_del_one_route
      Src: /src/frr/tests/lib/test_srcdest_table.c:403,1
    - Dst: test_state_del_rand_route
      Src: /src/frr/tests/lib/test_srcdest_table.c:407,1
    - Dst: test_state_verify
      Src: /src/frr/tests/lib/test_srcdest_table.c:410,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_srcdest_table.c:413,1
    - Dst: test_state_free
      Src: /src/frr/tests/lib/test_srcdest_table.c:414,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 385
    functionDepth: 4
    functionLinenumber: 385
    functionLinenumberEnd: 415
    functionName: run_prng_test
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 0
    functionsReached:
    - prng_rand
    - test_state_verify
    - test_state_del_rand_route
    - test_state_free
    - prng_new
    - test_state_new
    - test_state_add_rand_route
    - test_state_del_one_route
    - prng_free
    linkageType: ''
    returnType: void
    signature: void run_prng_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_prng_test
      Src: /src/frr/tests/lib/test_srcdest_table.c:419,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_srcdest_table.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 417
    functionDepth: 5
    functionLinenumber: 417
    functionLinenumberEnd: 422
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_srcdest_table.c
    functionUses: 2
    functionsReached:
    - run_prng_test
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/tests/lib/test_resolver.c:37,1
    - Dst: zlog_info
      Src: /src/frr/tests/lib/test_resolver.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - resq
    - errstr
    - numaddrs
    - addr
    argTypes:
    - struct resolver_query*
    - char*
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 43
    functionName: resolver_result
    functionSourceFile: /src/frr/tests/lib/test_resolver.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - zlog_info
    linkageType: ''
    returnType: void
    signature: "void resolver_result(struct resolver_query *resq, const char *errstr,\n\t\t\t
      \   int numaddrs, union sockunion *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _CONSTRUCTOR
      Src: /src/frr/tests/lib/test_resolver.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: test_setup
    functionSourceFile: /src/frr/tests/lib/test_resolver.c
    functionUses: 0
    functionsReached:
    - _CONSTRUCTOR
    linkageType: ''
    returnType: void
    signature: void test_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resolver_init
      Src: /src/frr/tests/lib/test_resolver.c:65,1
    - Dst: install_element
      Src: /src/frr/tests/lib/test_resolver.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: test_init
    functionSourceFile: /src/frr/tests/lib/test_resolver.c
    functionUses: 2
    functionsReached:
    - resolver_init
    - install_element
    linkageType: ''
    returnType: void
    signature: void test_init(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_timer_correctness.c:46,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_timer_correctness.c:47,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_timer_correctness.c:49,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_timer_correctness.c:50,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_timer_correctness.c:53,1
    - Dst: event_master_free
      Src: /src/frr/tests/lib/test_timer_correctness.c:57,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_timer_correctness.c:58,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_timer_correctness.c:59,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_timer_correctness.c:60,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_timer_correctness.c:61,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_timer_correctness.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 64
    functionName: terminate_test
    functionSourceFile: /src/frr/tests/lib/test_timer_correctness.c
    functionUses: 0
    functionsReached:
    - exit
    - strcmp
    - event_master_free
    - fprintf
    - printf
    - XFREE
    - prng_free
    linkageType: ''
    returnType: void
    signature: void terminate_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_timer_correctness.c:70,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_timer_correctness.c:72,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_timer_correctness.c:74,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_timer_correctness.c:75,1
    - Dst: terminate_test
      Src: /src/frr/tests/lib/test_timer_correctness.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (rv >= 0)
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/frr/tests/lib/test_timer_correctness.c
    - condition: (log_buf_pos < log_buf_len)
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/frr/tests/lib/test_timer_correctness.c
    constantsTouched: []
    func_position:
      end: 80
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 80
    functionName: timer_func
    functionSourceFile: /src/frr/tests/lib/test_timer_correctness.c
    functionUses: 0
    functionsReached:
    - assert
    - XFREE
    - terminate_test
    - snprintf
    linkageType: ''
    returnType: void
    signature: void timer_func(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timercmp
      Src: /src/frr/tests/lib/test_timer_correctness.c:87,1
    - Dst: timercmp
      Src: /src/frr/tests/lib/test_timer_correctness.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: cmp_timeval
    functionSourceFile: /src/frr/tests/lib/test_timer_correctness.c
    functionUses: 0
    functionsReached:
    - timercmp
    linkageType: ''
    returnType: int
    signature: int cmp_timeval(const void *a, const void *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_master_create
      Src: /src/frr/tests/lib/test_timer_correctness.c:100,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_timer_correctness.c:104,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_timer_correctness.c:108,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_timer_correctness.c:110,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_timer_correctness.c:112,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_timer_correctness.c:120,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_timer_correctness.c:121,1
    - Dst: event_add_timer_msec
      Src: /src/frr/tests/lib/test_timer_correctness.c:122,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_timer_correctness.c:124,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_timer_correctness.c:127,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_timer_correctness.c:128,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_timer_correctness.c:135,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_timer_correctness.c:139,1
    - Dst: event_cancel
      Src: /src/frr/tests/lib/test_timer_correctness.c:140,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_timer_correctness.c:149,1
    - Dst: qsort
      Src: /src/frr/tests/lib/test_timer_correctness.c:155,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_timer_correctness.c:159,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_timer_correctness.c:163,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_timer_correctness.c:165,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_timer_correctness.c:167,1
    - Dst: event_fetch
      Src: /src/frr/tests/lib/test_timer_correctness.c:169,1
    - Dst: event_call
      Src: /src/frr/tests/lib/test_timer_correctness.c:170,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: ((size_t)ret < TIMESTR_LEN + 1)
      pos:
        line_end: 127
        line_start: 127
        source_file: /src/frr/tests/lib/test_timer_correctness.c
    - condition: (ret > 0)
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/frr/tests/lib/test_timer_correctness.c
    - condition: (expected_buf_pos < expected_buf_len)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/tests/lib/test_timer_correctness.c
    - condition: (ret > 0)
      pos:
        line_end: 162
        line_start: 162
        source_file: /src/frr/tests/lib/test_timer_correctness.c
    constantsTouched: []
    func_position:
      end: 173
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 173
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_timer_correctness.c
    functionUses: 2
    functionsReached:
    - prng_rand
    - prng_new
    - XCALLOC
    - snprintf
    - event_cancel
    - qsort
    - XMALLOC
    - event_master_create
    - event_add_timer_msec
    - XFREE
    - event_fetch
    - event_call
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: darr_ensure_i
      Src: /src/frr/tests/lib/test_darr.c:46,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:48,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:48,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:49,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:49,1
    - Dst: darr_ensure_i
      Src: /src/frr/tests/lib/test_darr.c:51,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:52,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:52,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:53,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:53,1
    - Dst: darr_ensure_i
      Src: /src/frr/tests/lib/test_darr.c:55,1
    - Dst: darr_foreach_i
      Src: /src/frr/tests/lib/test_darr.c:56,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:59,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:59,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:61,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:61,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:62,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:62,1
    - Dst: darr_foreach_p
      Src: /src/frr/tests/lib/test_darr.c:65,1
    - Dst: darr_end
      Src: /src/frr/tests/lib/test_darr.c:66,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:67,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:67,1
    - Dst: darr_append_n
      Src: /src/frr/tests/lib/test_darr.c:69,1
    - Dst: darr_foreach_p
      Src: /src/frr/tests/lib/test_darr.c:70,1
    - Dst: darr_end
      Src: /src/frr/tests/lib/test_darr.c:71,1
    - Dst: darr_pop_n
      Src: /src/frr/tests/lib/test_darr.c:73,1
    - Dst: darr_append_nz
      Src: /src/frr/tests/lib/test_darr.c:74,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:75,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:75,1
    - Dst: _darr_esize
      Src: /src/frr/tests/lib/test_darr.c:75,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:77,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:77,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:78,1
    - Dst: darr_maxi
      Src: /src/frr/tests/lib/test_darr.c:78,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:79,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:79,1
    - Dst: darr_setlen
      Src: /src/frr/tests/lib/test_darr.c:81,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:82,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:82,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:83,1
    - Dst: darr_maxi
      Src: /src/frr/tests/lib/test_darr.c:83,1
    - Dst: darr_remove_n
      Src: /src/frr/tests/lib/test_darr.c:89,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:90,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:90,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_darr.c:90,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:91,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:91,1
    - Dst: darr_insert_n
      Src: /src/frr/tests/lib/test_darr.c:96,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:97,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:97,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:98,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:99,1
    - Dst: darr_reset
      Src: /src/frr/tests/lib/test_darr.c:101,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:102,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:102,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:103,1
    - Dst: darr_maxi
      Src: /src/frr/tests/lib/test_darr.c:103,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:104,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:104,1
    - Dst: darr_insert_n
      Src: /src/frr/tests/lib/test_darr.c:107,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:108,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:108,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:109,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:109,1
    - Dst: darr_insert
      Src: /src/frr/tests/lib/test_darr.c:112,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:113,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:114,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:115,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:115,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:116,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:116,1
    - Dst: darr_free
      Src: /src/frr/tests/lib/test_darr.c:118,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:119,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:120,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:120,1
    - Dst: darr_setlen
      Src: /src/frr/tests/lib/test_darr.c:121,1
    - Dst: darr_reset
      Src: /src/frr/tests/lib/test_darr.c:122,1
    - Dst: darr_free
      Src: /src/frr/tests/lib/test_darr.c:123,1
    - Dst: darr_append
      Src: /src/frr/tests/lib/test_darr.c:125,1
    - Dst: darr_append
      Src: /src/frr/tests/lib/test_darr.c:126,1
    - Dst: darr_push
      Src: /src/frr/tests/lib/test_darr.c:127,1
    - Dst: darr_push
      Src: /src/frr/tests/lib/test_darr.c:128,1
    - Dst: darr_push
      Src: /src/frr/tests/lib/test_darr.c:129,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:131,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:131,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:133,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:133,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:134,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:134,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:135,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:135,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:136,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:136,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:137,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:137,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:138,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:138,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:139,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:139,1
    - Dst: darr_free
      Src: /src/frr/tests/lib/test_darr.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (darr_maxi(da1) == 127)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 0)
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da2) == 2)
      pos:
        line_end: 135
        line_start: 135
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 400)
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(da2, a1, sizeof(a1)))
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_pop(da2) == 1)
      pos:
        line_end: 136
        line_start: 136
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 2)
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 102)
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_maxi(da1) == 127)
      pos:
        line_end: 77
        line_start: 77
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 0)
      pos:
        line_end: 101
        line_start: 101
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (da1[0] == 0xF00D)
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_pop(da2) == 4)
      pos:
        line_end: 132
        line_start: 132
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 401)
      pos:
        line_end: 114
        line_start: 114
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(da1, a3, sizeof(a3)))
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 8)
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(da1, a2, sizeof(a2)))
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(&da1[5], z105, _darr_esize(da1) * 100))
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 2)
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == array_size(a3))
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (da1[101] == a3[0])
      pos:
        line_end: 98
        line_start: 98
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (da1 == NULL)
      pos:
        line_end: 118
        line_start: 118
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (da1[0] == a3[1])
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (da1[400] == 0x0BAD)
      pos:
        line_end: 113
        line_start: 113
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 1)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_maxi(da1) == 127)
      pos:
        line_end: 102
        line_start: 102
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_pop(da2) == 3)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_pop(da2) == 0)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 128)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 512)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 512)
      pos:
        line_end: 108
        line_start: 108
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 102)
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(da1, a1, sizeof(a1)))
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 128)
      pos:
        line_end: 103
        line_start: 103
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 1)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_pop(da2) == 2)
      pos:
        line_end: 134
        line_start: 134
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da2) == 0)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 105)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 5)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/frr/tests/lib/test_darr.c
    constantsTouched: []
    func_position:
      end: 142
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 142
    functionName: test_int
    functionSourceFile: /src/frr/tests/lib/test_darr.c
    functionUses: 0
    functionsReached:
    - darr_reset
    - darr_append_n
    - darr_append
    - memcmp
    - darr_cap
    - _darr_esize
    - darr_foreach_i
    - darr_ensure_i
    - array_size
    - darr_append_nz
    - assert
    - darr_maxi
    - darr_pop
    - darr_push
    - darr_free
    - darr_end
    - darr_pop_n
    - darr_insert
    - darr_len
    - darr_remove_n
    - darr_setlen
    - darr_foreach_p
    - darr_insert_n
    linkageType: ''
    returnType: void
    signature: void test_int(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: darr_ensure_i
      Src: /src/frr/tests/lib/test_darr.c:162,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:165,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:165,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:166,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:166,1
    - Dst: darr_ensure_i
      Src: /src/frr/tests/lib/test_darr.c:168,1
    - Dst: darr_ensure_i
      Src: /src/frr/tests/lib/test_darr.c:169,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:170,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:170,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:171,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:171,1
    - Dst: darr_ensure_i
      Src: /src/frr/tests/lib/test_darr.c:173,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:183,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:183,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:185,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:185,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:186,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:186,1
    - Dst: darr_append_n
      Src: /src/frr/tests/lib/test_darr.c:188,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:190,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:190,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:191,1
    - Dst: darr_maxi
      Src: /src/frr/tests/lib/test_darr.c:191,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:192,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:192,1
    - Dst: darr_setlen
      Src: /src/frr/tests/lib/test_darr.c:194,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:195,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:195,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:196,1
    - Dst: darr_maxi
      Src: /src/frr/tests/lib/test_darr.c:196,1
    - Dst: darr_remove_n
      Src: /src/frr/tests/lib/test_darr.c:204,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:205,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:205,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_darr.c:205,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:206,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:206,1
    - Dst: darr_insert_n
      Src: /src/frr/tests/lib/test_darr.c:211,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:212,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:212,1
    - Dst: darr_remove_n
      Src: /src/frr/tests/lib/test_darr.c:217,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:218,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:218,1
    - Dst: darr_insert_nz
      Src: /src/frr/tests/lib/test_darr.c:219,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:220,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:220,1
    - Dst: darr_reset
      Src: /src/frr/tests/lib/test_darr.c:224,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:225,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:225,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:226,1
    - Dst: darr_maxi
      Src: /src/frr/tests/lib/test_darr.c:226,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:227,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:227,1
    - Dst: darr_insert_n
      Src: /src/frr/tests/lib/test_darr.c:230,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:232,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:232,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:233,1
    - Dst: darr_cap
      Src: /src/frr/tests/lib/test_darr.c:233,1
    - Dst: darr_free
      Src: /src/frr/tests/lib/test_darr.c:235,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:236,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:238,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:238,1
    - Dst: darr_setlen
      Src: /src/frr/tests/lib/test_darr.c:239,1
    - Dst: darr_reset
      Src: /src/frr/tests/lib/test_darr.c:240,1
    - Dst: darr_free
      Src: /src/frr/tests/lib/test_darr.c:242,1
    - Dst: darr_append
      Src: /src/frr/tests/lib/test_darr.c:250,1
    - Dst: darr_append
      Src: /src/frr/tests/lib/test_darr.c:251,1
    - Dst: darr_push
      Src: /src/frr/tests/lib/test_darr.c:252,1
    - Dst: darr_push
      Src: /src/frr/tests/lib/test_darr.c:253,1
    - Dst: darr_push
      Src: /src/frr/tests/lib/test_darr.c:254,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:256,1
    - Dst: memcmp
      Src: /src/frr/tests/lib/test_darr.c:256,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:260,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:261,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:262,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:263,1
    - Dst: darr_pop
      Src: /src/frr/tests/lib/test_darr.c:264,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:265,1
    - Dst: darr_len
      Src: /src/frr/tests/lib/test_darr.c:265,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:266,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:267,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:268,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:269,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_darr.c:270,1
    - Dst: darr_free
      Src: /src/frr/tests/lib/test_darr.c:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (darr_maxi(da1) == 127)
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da2) == 0)
      pos:
        line_end: 264
        line_start: 264
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (p0.a == i0.a && p0.b == i0.b)
      pos:
        line_end: 269
        line_start: 269
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 512)
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (p1.a == i1.a && p1.b == i1.b)
      pos:
        line_end: 268
        line_start: 268
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 2)
      pos:
        line_end: 169
        line_start: 169
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(da1, a2, sizeof(a2)))
      pos:
        line_end: 205
        line_start: 205
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (da1 == NULL)
      pos:
        line_end: 235
        line_start: 235
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(da1, a1, sizeof(a1)))
      pos:
        line_end: 185
        line_start: 185
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 0)
      pos:
        line_end: 237
        line_start: 237
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 1)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 128)
      pos:
        line_end: 226
        line_start: 226
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 105)
      pos:
        line_end: 189
        line_start: 189
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == array_size(a2))
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 2)
      pos:
        line_end: 170
        line_start: 170
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 102)
      pos:
        line_end: 211
        line_start: 211
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(&da1[1], z102, 100 * sizeof(da1[0])))
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (p3.a == i3.a && p3.b == i3.b)
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 1)
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 102)
      pos:
        line_end: 194
        line_start: 194
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 5)
      pos:
        line_end: 182
        line_start: 182
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_maxi(da1) == 127)
      pos:
        line_end: 190
        line_start: 190
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (p4.a == i4.a && p4.b == i4.b)
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 2)
      pos:
        line_end: 217
        line_start: 217
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 0)
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_maxi(da1) == 127)
      pos:
        line_end: 195
        line_start: 195
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_len(da1) == 400)
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 8)
      pos:
        line_end: 184
        line_start: 184
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (darr_cap(da1) == 128)
      pos:
        line_end: 191
        line_start: 191
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (!memcmp(da2, a1, sizeof(a1)))
      pos:
        line_end: 255
        line_start: 255
        source_file: /src/frr/tests/lib/test_darr.c
    - condition: (p2.a == i2.a && p2.b == i2.b)
      pos:
        line_end: 267
        line_start: 267
        source_file: /src/frr/tests/lib/test_darr.c
    constantsTouched: []
    func_position:
      end: 273
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 273
    functionName: test_struct
    functionSourceFile: /src/frr/tests/lib/test_darr.c
    functionUses: 0
    functionsReached:
    - darr_reset
    - darr_len
    - darr_append_n
    - darr_maxi
    - darr_pop
    - darr_cap
    - darr_insert_nz
    - darr_append
    - darr_push
    - memcmp
    - darr_remove_n
    - darr_setlen
    - darr_free
    - darr_ensure_i
    - array_size
    - darr_insert_n
    - assert
    linkageType: ''
    returnType: void
    signature: void test_struct(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: darr_foreach_i
    functionSourceFile: /src/frr/tests/lib/test_darr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void darr_foreach_i (da1, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_int
      Src: /src/frr/tests/lib/test_darr.c:277,1
    - Dst: test_struct
      Src: /src/frr/tests/lib/test_darr.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 279
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_darr.c
    functionUses: 2
    functionsReached:
    - test_int
    - test_struct
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:41,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/lib/test_table.c:43,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:44,1
    - Dst: route_node_get
      Src: /src/frr/tests/lib/test_table.c:47,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:49,1
    - Dst: malloc
      Src: /src/frr/tests/lib/test_table.c:53,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:54,1
    - Dst: strdup
      Src: /src/frr/tests/lib/test_table.c:55,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - table
    - prefix_str
    argTypes:
    - struct route_table*
    - char*
    assertStmts:
    - condition: (prefix_str)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (0)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (0)
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (node)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (node->prefix_str)
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/frr/tests/lib/test_table.c
    constantsTouched: []
    func_position:
      end: 58
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 58
    functionName: add_node
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 1
    functionsReached:
    - str2prefix_ipv4
    - malloc
    - strdup
    - route_node_get
    - assert
    linkageType: ''
    returnType: void
    signature: void add_node(struct route_table *table, const char *prefix_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tests/lib/test_table.c:73,1
    - Dst: va_arg
      Src: /src/frr/tests/lib/test_table.c:75,1
    - Dst: add_node
      Src: /src/frr/tests/lib/test_table.c:77,1
    - Dst: va_arg
      Src: /src/frr/tests/lib/test_table.c:78,1
    - Dst: va_end
      Src: /src/frr/tests/lib/test_table.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 82
    functionName: add_nodes
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - add_node
    - va_arg
    linkageType: ''
    returnType: void
    signature: void add_nodes(struct route_table *table, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:100,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_table.c:103,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:105,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:107,1
    - Dst: print_subtree
      Src: /src/frr/tests/lib/test_table.c:109,1
    - Dst: print_subtree
      Src: /src/frr/tests/lib/test_table.c:112,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - rn
    - legend
    - indent_level
    argTypes:
    - struct route_node*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 114
    functionName: print_subtree
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 1
    functionsReached:
    - print_subtree
    - printf
    - printfrr
    linkageType: ''
    returnType: void
    signature: "void print_subtree(struct route_node *rn, const char *legend,\n\t\t\t
      \ int indent_level)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:128,1
    - Dst: print_subtree
      Src: /src/frr/tests/lib/test_table.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 133
    functionName: print_table
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - printf
    - print_subtree
    linkageType: ''
    returnType: void
    signature: void print_table(struct route_table *table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_table_iter_init
      Src: /src/frr/tests/lib/test_table.c:146,1
    - Dst: route_table_iter_next
      Src: /src/frr/tests/lib/test_table.c:148,1
    - Dst: route_unlock_node
      Src: /src/frr/tests/lib/test_table.c:154,1
    - Dst: free
      Src: /src/frr/tests/lib/test_table.c:155,1
    - Dst: free
      Src: /src/frr/tests/lib/test_table.c:156,1
    - Dst: route_table_iter_cleanup
      Src: /src/frr/tests/lib/test_table.c:159,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts:
    - condition: (table->top == NULL)
      pos:
        line_end: 160
        line_start: 160
        source_file: /src/frr/tests/lib/test_table.c
    constantsTouched: []
    func_position:
      end: 162
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 162
    functionName: clear_table
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_table_iter_init
    - route_table_iter_cleanup
    - route_table_iter_next
    - free
    - assert
    linkageType: ''
    returnType: void
    signature: void clear_table(struct route_table *table)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_table_iter_init
      Src: /src/frr/tests/lib/test_table.c:178,1
    - Dst: route_table_iter_next
      Src: /src/frr/tests/lib/test_table.c:179,1
    - Dst: route_table_prefix_iter_cmp
      Src: /src/frr/tests/lib/test_table.c:180,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:181,1
    - Dst: prefix_cmp
      Src: /src/frr/tests/lib/test_table.c:181,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:187,1
    - Dst: route_table_iter_cleanup
      Src: /src/frr/tests/lib/test_table.c:190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - table
    - target_pfx
    - next_pfx
    argTypes:
    - struct route_table*
    - struct prefix*
    - struct prefix*
    assertStmts:
    - condition: (!prefix_cmp(&rn->p, next_pfx))
      pos:
        line_end: 180
        line_start: 180
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (!next_pfx)
      pos:
        line_end: 186
        line_start: 186
        source_file: /src/frr/tests/lib/test_table.c
    constantsTouched: []
    func_position:
      end: 191
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 191
    functionName: verify_next_by_iterating
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - route_table_iter_init
    - prefix_cmp
    - route_table_iter_cleanup
    - route_table_iter_next
    - route_table_prefix_iter_cmp
    - assert
    linkageType: ''
    returnType: void
    signature: "void verify_next_by_iterating(struct route_table *table,\n\t\t\t\t
      \    struct prefix *target_pfx,\n\t\t\t\t     struct prefix *next_pfx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/lib/test_table.c:206,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:207,1
    - Dst: route_table_get_next
      Src: /src/frr/tests/lib/test_table.c:210,1
    - Dst: prefix2str
      Src: /src/frr/tests/lib/test_table.c:212,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_table.c:214,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:217,1
    - Dst: print_table
      Src: /src/frr/tests/lib/test_table.c:218,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:219,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:223,1
    - Dst: verify_next_by_iterating
      Src: /src/frr/tests/lib/test_table.c:224,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:229,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/lib/test_table.c:231,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:232,1
    - Dst: prefix_cmp
      Src: /src/frr/tests/lib/test_table.c:235,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:236,1
    - Dst: route_unlock_node
      Src: /src/frr/tests/lib/test_table.c:238,1
    - Dst: verify_next_by_iterating
      Src: /src/frr/tests/lib/test_table.c:240,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - table
    - target
    - next
    argTypes:
    - struct route_table*
    - char*
    - char*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 206
        line_start: 206
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (!next)
      pos:
        line_end: 222
        line_start: 222
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (0)
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (0)
      pos:
        line_end: 235
        line_start: 235
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (next)
      pos:
        line_end: 228
        line_start: 228
        source_file: /src/frr/tests/lib/test_table.c
    constantsTouched: []
    func_position:
      end: 242
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 242
    functionName: verify_next
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - verify_next_by_iterating
    - prefix2str
    - str2prefix_ipv4
    - route_table_get_next
    - print_table
    - route_unlock_node
    - snprintf
    - prefix_cmp
    - printf
    - assert
    linkageType: ''
    returnType: void
    signature: "void verify_next(struct route_table *table, const char *target,\n\t\t\tconst
      char *next)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:251,1
    - Dst: route_table_init
      Src: /src/frr/tests/lib/test_table.c:252,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:257,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:258,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:259,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:264,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:265,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:266,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:271,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:272,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:273,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:278,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:279,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:280,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:290,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:291,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:292,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:297,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:298,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:299,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:304,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:305,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:306,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:313,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:314,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:315,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:321,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:323,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:324,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:335,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:336,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:337,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:339,1
    - Dst: verify_next
      Src: /src/frr/tests/lib/test_table.c:341,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:342,1
    - Dst: route_table_finish
      Src: /src/frr/tests/lib/test_table.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 247
    functionDepth: 4
    functionLinenumber: 247
    functionLinenumberEnd: 345
    functionName: test_get_next
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - verify_next
    - clear_table
    - route_table_finish
    - route_table_init
    - add_nodes
    - printf
    linkageType: ''
    returnType: void
    signature: void test_get_next(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/lib/test_table.c:356,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:357,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/lib/test_table.c:360,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:361,1
    - Dst: route_table_prefix_iter_cmp
      Src: /src/frr/tests/lib/test_table.c:364,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:367,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:369,1
    - Dst: route_table_prefix_iter_cmp
      Src: /src/frr/tests/lib/test_table.c:374,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:381,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:382,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - p1
    - p2
    - exp_result
    argTypes:
    - char*
    - char*
    - int
    assertStmts:
    - condition: (0)
      pos:
        line_end: 356
        line_start: 356
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (0)
      pos:
        line_end: 360
        line_start: 360
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (exp_result == result)
      pos:
        line_end: 368
        line_start: 368
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (result == exp_result)
      pos:
        line_end: 381
        line_start: 381
        source_file: /src/frr/tests/lib/test_table.c
    constantsTouched: []
    func_position:
      end: 383
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 383
    functionName: verify_prefix_iter_cmp
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - str2prefix_ipv4
    - printf
    - assert
    - route_table_prefix_iter_cmp
    linkageType: ''
    returnType: void
    signature: "void verify_prefix_iter_cmp(const char *p1, const char *p2,\n\t\t\t\t
      \  int exp_result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:392,1
    - Dst: verify_prefix_iter_cmp
      Src: /src/frr/tests/lib/test_table.c:394,1
    - Dst: verify_prefix_iter_cmp
      Src: /src/frr/tests/lib/test_table.c:396,1
    - Dst: verify_prefix_iter_cmp
      Src: /src/frr/tests/lib/test_table.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 390
    functionDepth: 2
    functionLinenumber: 390
    functionLinenumberEnd: 399
    functionName: test_prefix_iter_cmp
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - verify_prefix_iter_cmp
    - printf
    linkageType: ''
    returnType: void
    signature: void test_prefix_iter_cmp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_table_iter_init
      Src: /src/frr/tests/lib/test_table.c:415,1
    - Dst: route_top
      Src: /src/frr/tests/lib/test_table.c:418,1
    - Dst: route_next
      Src: /src/frr/tests/lib/test_table.c:418,1
    - Dst: route_table_iter_pause
      Src: /src/frr/tests/lib/test_table.c:420,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:422,1
    - Dst: route_table_iter_started
      Src: /src/frr/tests/lib/test_table.c:423,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:424,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:426,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:427,1
    - Dst: route_table_iter_next
      Src: /src/frr/tests/lib/test_table.c:430,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:435,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:438,1
    - Dst: route_table_count
      Src: /src/frr/tests/lib/test_table.c:438,1
    - Dst: route_table_iter_pause
      Src: /src/frr/tests/lib/test_table.c:440,1
    - Dst: route_table_iter_next
      Src: /src/frr/tests/lib/test_table.c:441,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:443,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:444,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:446,1
    - Dst: route_table_iter_next
      Src: /src/frr/tests/lib/test_table.c:446,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_table.c:447,1
    - Dst: route_table_iter_cleanup
      Src: /src/frr/tests/lib/test_table.c:449,1
    - Dst: print_table
      Src: /src/frr/tests/lib/test_table.c:451,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts:
    - condition: (iter->current == NULL)
      pos:
        line_end: 421
        line_start: 421
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (rn == table->top)
      pos:
        line_end: 425
        line_start: 425
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (rn == iter_rn)
      pos:
        line_end: 434
        line_start: 434
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (iter->state == RT_ITER_STATE_DONE)
      pos:
        line_end: 446
        line_start: 446
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (iter->state == RT_ITER_STATE_INIT)
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (iter->state == RT_ITER_STATE_DONE)
      pos:
        line_end: 443
        line_start: 443
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (iter->state == RT_ITER_STATE_PAUSED)
      pos:
        line_end: 423
        line_start: 423
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (num_nodes == route_table_count(table))
      pos:
        line_end: 437
        line_start: 437
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (iter_rn == NULL)
      pos:
        line_end: 442
        line_start: 442
        source_file: /src/frr/tests/lib/test_table.c
    - condition: (route_table_iter_next(iter) == NULL)
      pos:
        line_end: 445
        line_start: 445
        source_file: /src/frr/tests/lib/test_table.c
    constantsTouched: []
    func_position:
      end: 454
      start: 408
    functionDepth: 3
    functionLinenumber: 408
    functionLinenumberEnd: 454
    functionName: verify_iter_with_pause
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - print_table
    - route_table_iter_init
    - route_table_iter_started
    - route_table_iter_cleanup
    - route_top
    - route_table_iter_next
    - route_next
    - route_table_count
    - printf
    - route_table_iter_pause
    - assert
    linkageType: ''
    returnType: void
    signature: void verify_iter_with_pause(struct route_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/tests/lib/test_table.c:466,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_table.c:468,1
    - Dst: route_table_init
      Src: /src/frr/tests/lib/test_table.c:469,1
    - Dst: add_nodes
      Src: /src/frr/tests/lib/test_table.c:471,1
    - Dst: verify_iter_with_pause
      Src: /src/frr/tests/lib/test_table.c:474,1
    - Dst: clear_table
      Src: /src/frr/tests/lib/test_table.c:476,1
    - Dst: route_table_finish
      Src: /src/frr/tests/lib/test_table.c:477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 459
    functionDepth: 4
    functionLinenumber: 459
    functionLinenumberEnd: 478
    functionName: test_iter_pause
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 0
    functionsReached:
    - clear_table
    - route_table_finish
    - verify_iter_with_pause
    - route_table_init
    - add_nodes
    - array_size
    - printf
    linkageType: ''
    returnType: void
    signature: void test_iter_pause(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_prefix_iter_cmp
      Src: /src/frr/tests/lib/test_table.c:485,1
    - Dst: test_get_next
      Src: /src/frr/tests/lib/test_table.c:486,1
    - Dst: test_iter_pause
      Src: /src/frr/tests/lib/test_table.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 483
    functionDepth: 5
    functionLinenumber: 483
    functionLinenumberEnd: 488
    functionName: run_tests
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 1
    functionsReached:
    - test_get_next
    - test_prefix_iter_cmp
    - test_iter_pause
    linkageType: ''
    returnType: void
    signature: void run_tests(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_tests
      Src: /src/frr/tests/lib/test_table.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 496
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_table.c
    functionUses: 2
    functionsReached:
    - run_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sin
      Src: /src/frr/tests/lib/test_heavy.c:37,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy.c:40,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy.c:44,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - str
    - i
    argTypes:
    - struct vty*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 48
    functionName: slow_func
    functionSourceFile: /src/frr/tests/lib/test_heavy.c
    functionUses: 0
    functionsReached:
    - sin
    - printf
    linkageType: ''
    returnType: void
    signature: void slow_func(struct vty *vty, const char *str, const int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slow_func
      Src: /src/frr/tests/lib/test_heavy.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 60
    functionName: clear_something
    functionSourceFile: /src/frr/tests/lib/test_heavy.c
    functionUses: 0
    functionsReached:
    - slow_func
    linkageType: ''
    returnType: void
    signature: void clear_something(struct vty *vty, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/tests/lib/test_heavy.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: slow_vty_init
    functionSourceFile: /src/frr/tests/lib/test_heavy.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void slow_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slow_vty_init
      Src: /src/frr/tests/lib/test_heavy.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: test_init
    functionSourceFile: /src/frr/tests/lib/test_heavy.c
    functionUses: 2
    functionsReached:
    - slow_vty_init
    linkageType: ''
    returnType: void
    signature: void test_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sin
      Src: /src/frr/tests/lib/test_heavy_thread.c:46,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy_thread.c:49,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy_thread.c:53,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_heavy_thread.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - str
    - i
    argTypes:
    - struct vty*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 57
    functionName: slow_func
    functionSourceFile: /src/frr/tests/lib/test_heavy_thread.c
    functionUses: 1
    functionsReached:
    - sin
    - printf
    linkageType: ''
    returnType: void
    signature: void slow_func(struct vty *vty, const char *str, const int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/tests/lib/test_heavy_thread.c:61,1
    - Dst: slow_func
      Src: /src/frr/tests/lib/test_heavy_thread.c:68,1
    - Dst: event_should_yield
      Src: /src/frr/tests/lib/test_heavy_thread.c:70,1
    - Dst: event_add_timer_msec
      Src: /src/frr/tests/lib/test_heavy_thread.c:71,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_heavy_thread.c:78,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_heavy_thread.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 80
    functionName: clear_something
    functionSourceFile: /src/frr/tests/lib/test_heavy_thread.c
    functionUses: 0
    functionsReached:
    - slow_func
    - event_add_timer_msec
    - event_should_yield
    - XFREE
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void clear_something(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/tests/lib/test_heavy_thread.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: test_init
    functionSourceFile: /src/frr/tests/lib/test_heavy_thread.c
    functionUses: 2
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void test_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: _concat
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _concat(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: concat
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: concat(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: _str
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _str(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: str
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: _PREDECL
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _PREDECL(type, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: PREDECL
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL(type, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: _DECLARE
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DECLARE(type, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: DECLARE
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE(type, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: _T_TYPE
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _T_TYPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: IS_SORTED
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SORTED(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: IS_UNIQ
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_UNIQ(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: IS_HASH
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_HASH(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: IS_HEAP
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_HEAP(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: IS_ATOMIC
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ATOMIC(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: IS_REVERSE
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_REVERSE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/tests/lib/test_typelist.c:78,1
    - Dst: monotime
      Src: /src/frr/tests/lib/test_typelist.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: ts_start
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached:
    - monotime
    linkageType: ''
    returnType: void
    signature: void ts_start(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime_since
      Src: /src/frr/tests/lib/test_typelist.c:84,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_typelist.c:85,1
    - Dst: monotime
      Src: /src/frr/tests/lib/test_typelist.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 87
    functionName: ts_ref
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached:
    - monotime
    - monotime_since
    - printfrr
    linkageType: ''
    returnType: void
    signature: void ts_ref(const char *text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime_since
      Src: /src/frr/tests/lib/test_typelist.c:91,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_typelist.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: ts_end
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 0
    functionsReached:
    - monotime_since
    - printfrr
    linkageType: ''
    returnType: void
    signature: void ts_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srandom
      Src: /src/frr/tests/lib/test_typelist.c:142,1
    - Dst: test_LIST
      Src: /src/frr/tests/lib/test_typelist.c:144,1
    - Dst: test_DLIST
      Src: /src/frr/tests/lib/test_typelist.c:145,1
    - Dst: test_ATOMLIST
      Src: /src/frr/tests/lib/test_typelist.c:146,1
    - Dst: test_HEAP
      Src: /src/frr/tests/lib/test_typelist.c:147,1
    - Dst: test_SORTLIST_UNIQ
      Src: /src/frr/tests/lib/test_typelist.c:148,1
    - Dst: test_SORTLIST_NONUNIQ
      Src: /src/frr/tests/lib/test_typelist.c:149,1
    - Dst: test_HASH
      Src: /src/frr/tests/lib/test_typelist.c:150,1
    - Dst: test_HASH_collisions
      Src: /src/frr/tests/lib/test_typelist.c:151,1
    - Dst: test_SKIPLIST_UNIQ
      Src: /src/frr/tests/lib/test_typelist.c:152,1
    - Dst: test_SKIPLIST_NONUNIQ
      Src: /src/frr/tests/lib/test_typelist.c:153,1
    - Dst: test_RBTREE_UNIQ
      Src: /src/frr/tests/lib/test_typelist.c:154,1
    - Dst: test_RBTREE_NONUNIQ
      Src: /src/frr/tests/lib/test_typelist.c:155,1
    - Dst: test_ATOMSORT_UNIQ
      Src: /src/frr/tests/lib/test_typelist.c:156,1
    - Dst: test_ATOMSORT_NONUNIQ
      Src: /src/frr/tests/lib/test_typelist.c:157,1
    - Dst: log_memstats_stderr
      Src: /src/frr/tests/lib/test_typelist.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 161
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_typelist.c
    functionUses: 2
    functionsReached:
    - srandom
    - test_SORTLIST_NONUNIQ
    - test_DLIST
    - test_SKIPLIST_UNIQ
    - log_memstats_stderr
    - test_SORTLIST_UNIQ
    - test_HASH
    - test_RBTREE_UNIQ
    - test_LIST
    - test_SKIPLIST_NONUNIQ
    - test_ATOMSORT_NONUNIQ
    - test_ATOMLIST
    - test_ATOMSORT_UNIQ
    - test_RBTREE_NONUNIQ
    - test_HEAP
    - test_HASH_collisions
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/tests/lib/test_graph.c:19,1
    - Dst: vector_slot
      Src: /src/frr/tests/lib/test_graph.c:20,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_graph.c:23,1
    - Dst: buffer_putstr
      Src: /src/frr/tests/lib/test_graph.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - gn
    - buf
    argTypes:
    - struct graph_node*
    - struct buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 26
    functionName: graph_custom_print_cb
    functionSourceFile: /src/frr/tests/lib/test_graph.c
    functionUses: 0
    functionsReached:
    - buffer_putstr
    - vector_active
    - vector_slot
    - snprintf
    linkageType: ''
    returnType: void
    signature: void graph_custom_print_cb(struct graph_node *gn, struct buffer *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: graph_new
      Src: /src/frr/tests/lib/test_graph.c:30,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_graph.c:36,1
    - Dst: graph_new_node
      Src: /src/frr/tests/lib/test_graph.c:37,1
    - Dst: graph_add_edge
      Src: /src/frr/tests/lib/test_graph.c:42,1
    - Dst: graph_add_edge
      Src: /src/frr/tests/lib/test_graph.c:43,1
    - Dst: graph_add_edge
      Src: /src/frr/tests/lib/test_graph.c:45,1
    - Dst: graph_add_edge
      Src: /src/frr/tests/lib/test_graph.c:46,1
    - Dst: graph_dump_dot
      Src: /src/frr/tests/lib/test_graph.c:49,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_graph.c:51,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_graph.c:52,1
    - Dst: graph_remove_edge
      Src: /src/frr/tests/lib/test_graph.c:57,1
    - Dst: graph_delete_node
      Src: /src/frr/tests/lib/test_graph.c:61,1
    - Dst: graph_delete_graph
      Src: /src/frr/tests/lib/test_graph.c:63,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 64
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_graph.c
    functionUses: 2
    functionsReached:
    - graph_dump_dot
    - snprintf
    - graph_new
    - graph_delete_graph
    - fprintf
    - graph_add_edge
    - XFREE
    - graph_remove_edge
    - graph_delete_node
    - graph_new_node
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: test_debug
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_debug(const std::string &s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cookie
    - errstr
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: _err_print
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _err_print(const void *cookie, const char *errstr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cmd_init
      Src: /src/frr/tests/lib/test_grpc.cpp:81,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/test_grpc.cpp:83,1
    - Dst: zprivs_preinit
      Src: /src/frr/tests/lib/test_grpc.cpp:84,1
    - Dst: zprivs_init
      Src: /src/frr/tests/lib/test_grpc.cpp:85,1
    - Dst: std::string
      Src: /src/frr/tests/lib/test_grpc.cpp:88,1
    - Dst: std::string
      Src: /src/frr/tests/lib/test_grpc.cpp:88,1
    - Dst: frrmod_load
      Src: /src/frr/tests/lib/test_grpc.cpp:89,1
    - Dst: std::string::c_str
      Src: /src/frr/tests/lib/test_grpc.cpp:89,1
    - Dst: std::string
      Src: /src/frr/tests/lib/test_grpc.cpp:91,1
    - Dst: std::string
      Src: /src/frr/tests/lib/test_grpc.cpp:91,1
    - Dst: frrmod_load
      Src: /src/frr/tests/lib/test_grpc.cpp:92,1
    - Dst: std::string::c_str
      Src: /src/frr/tests/lib/test_grpc.cpp:92,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_grpc.cpp:96,1
    - Dst: static_debug_init
      Src: /src/frr/tests/lib/test_grpc.cpp:98,1
    - Dst: event_master_create
      Src: /src/frr/tests/lib/test_grpc.cpp:100,1
    - Dst: nb_init
      Src: /src/frr/tests/lib/test_grpc.cpp:101,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_grpc.cpp:101,1
    - Dst: static_zebra_init
      Src: /src/frr/tests/lib/test_grpc.cpp:104,1
    - Dst: vty_init
      Src: /src/frr/tests/lib/test_grpc.cpp:105,1
    - Dst: static_vrf_init
      Src: /src/frr/tests/lib/test_grpc.cpp:106,1
    - Dst: static_vty_init
      Src: /src/frr/tests/lib/test_grpc.cpp:107,1
    - Dst: hook_register
      Src: /src/frr/tests/lib/test_grpc.cpp:109,1
    - Dst: routing_control_plane_protocols_register_vrf_dependency
      Src: /src/frr/tests/lib/test_grpc.cpp:112,1
    - Dst: vty_new
      Src: /src/frr/tests/lib/test_grpc.cpp:115,1
    - Dst: vty_config_enter
      Src: /src/frr/tests/lib/test_grpc.cpp:117,1
    - Dst: cmd_execute
      Src: /src/frr/tests/lib/test_grpc.cpp:119,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_grpc.cpp:120,1
    - Dst: cmd_execute
      Src: /src/frr/tests/lib/test_grpc.cpp:122,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_grpc.cpp:123,1
    - Dst: nb_cli_pending_commit_check
      Src: /src/frr/tests/lib/test_grpc.cpp:125,1
    - Dst: frr_pthread_init
      Src: /src/frr/tests/lib/test_grpc.cpp:127,1
    - Dst: hook_call
      Src: /src/frr/tests/lib/test_grpc.cpp:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!ret)
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/frr/tests/lib/test_grpc.cpp
    - condition: (!ret)
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/frr/tests/lib/test_grpc.cpp
    constantsTouched: []
    func_position:
      end: 131
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 131
    functionName: static_startup
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - vty_new
    - std::string
    - exit
    - hook_register
    - hook_call
    - cmd_init
    - static_zebra_init
    - array_size
    - vty_config_enter
    - frr_pthread_init
    - cmd_execute
    - assert
    - static_debug_init
    - zprivs_init
    - std::string::c_str
    - frrmod_load
    - event_master_create
    - nb_init
    - vty_init
    - static_vrf_init
    - nb_cli_pending_commit_check
    - static_vty_init
    - zlog_aux_init
    - zprivs_preinit
    - routing_control_plane_protocols_register_vrf_dependency
    linkageType: ''
    returnType: void
    signature: void static_startup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/tests/lib/test_grpc.cpp:135,1
    - Dst: vty_close
      Src: /src/frr/tests/lib/test_grpc.cpp:136,1
    - Dst: vrf_terminate
      Src: /src/frr/tests/lib/test_grpc.cpp:137,1
    - Dst: vty_terminate
      Src: /src/frr/tests/lib/test_grpc.cpp:138,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/lib/test_grpc.cpp:139,1
    - Dst: nb_terminate
      Src: /src/frr/tests/lib/test_grpc.cpp:140,1
    - Dst: yang_terminate
      Src: /src/frr/tests/lib/test_grpc.cpp:141,1
    - Dst: event_master_free
      Src: /src/frr/tests/lib/test_grpc.cpp:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: static_shutdown
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - hook_call
    - vrf_terminate
    - nb_terminate
    - event_master_free
    - vty_terminate
    - vty_close
    - yang_terminate
    - cmd_terminate
    linkageType: ''
    returnType: void
    signature: void static_shutdown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr::Northbound::NewStub
      Src: /src/frr/tests/lib/test_grpc.cpp:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - channel
    argTypes:
    - std::shared_ptr<Channel>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: NorthboundClient::NorthboundClient
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - frr::Northbound::NewStub
    linkageType: ''
    returnType: void
    signature: void NorthboundClient(std::shared_ptr<Channel> channel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr::CommitRequest::set_candidate_id
      Src: /src/frr/tests/lib/test_grpc.cpp:168,1
    - Dst: frr::CommitRequest::set_phase
      Src: /src/frr/tests/lib/test_grpc.cpp:170,1
    - Dst: NorthboundClient::Commit
      Src: /src/frr/tests/lib/test_grpc.cpp:171,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:172,1
    - Dst: frr::CommitRequest::set_phase
      Src: /src/frr/tests/lib/test_grpc.cpp:174,1
    - Dst: NorthboundClient::Commit
      Src: /src/frr/tests/lib/test_grpc.cpp:175,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:176,1
    - Dst: frr::CommitRequest::set_phase
      Src: /src/frr/tests/lib/test_grpc.cpp:178,1
    - Dst: NorthboundClient::Commit
      Src: /src/frr/tests/lib/test_grpc.cpp:179,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:180,1
    - Dst: frr::CommitRequest::set_phase
      Src: /src/frr/tests/lib/test_grpc.cpp:182,1
    - Dst: NorthboundClient::Commit
      Src: /src/frr/tests/lib/test_grpc.cpp:183,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - candidate_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 186
    functionName: NorthboundClient::Commit
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - NorthboundClient::Commit
    - NorthboundClient::_throw_if_not_ok
    - frr::CommitRequest::set_candidate_id
    - frr::CommitRequest::set_phase
    linkageType: ''
    returnType: void
    signature: void Commit(uint32_t candidate_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NorthboundClient::CreateCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:195,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:196,1
    - Dst: frr::CreateCandidateResponse::candidate_id
      Src: /src/frr/tests/lib/test_grpc.cpp:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 198
    functionName: NorthboundClient::CreateCandidate
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - frr::CreateCandidateResponse::candidate_id
    - NorthboundClient::_throw_if_not_ok
    - NorthboundClient::CreateCandidate
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t CreateCandidate()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr::DeleteCandidateRequest::set_candidate_id
      Src: /src/frr/tests/lib/test_grpc.cpp:207,1
    - Dst: NorthboundClient::DeleteCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:208,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - candidate_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 210
    functionName: NorthboundClient::DeleteCandidate
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - NorthboundClient::DeleteCandidate
    - NorthboundClient::_throw_if_not_ok
    - frr::DeleteCandidateRequest::set_candidate_id
    linkageType: ''
    returnType: void
    signature: void DeleteCandidate(uint32_t candidate_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr::EditCandidateRequest::set_candidate_id
      Src: /src/frr/tests/lib/test_grpc.cpp:219,1
    - Dst: frr::EditCandidateRequest::add_update
      Src: /src/frr/tests/lib/test_grpc.cpp:220,1
    - Dst: frr::PathValue*::set_path
      Src: /src/frr/tests/lib/test_grpc.cpp:221,1
    - Dst: frr::PathValue*::set_value
      Src: /src/frr/tests/lib/test_grpc.cpp:222,1
    - Dst: NorthboundClient::EditCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:224,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - candidate_id
    - path
    - value
    argTypes:
    - uint32_t
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 226
    functionName: NorthboundClient::EditCandidate
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - NorthboundClient::_throw_if_not_ok
    - frr::EditCandidateRequest::add_update
    - frr::PathValue*::set_path
    - frr::PathValue*::set_value
    - frr::EditCandidateRequest::set_candidate_id
    - NorthboundClient::EditCandidate
    linkageType: ''
    returnType: void
    signature: "void EditCandidate(uint32_t candidate_id, const std::string &path,\n\t\t\t
      \  const std::string &value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr::GetRequest::set_type
      Src: /src/frr/tests/lib/test_grpc.cpp:237,1
    - Dst: frr::GetRequest::set_encoding
      Src: /src/frr/tests/lib/test_grpc.cpp:238,1
    - Dst: frr::GetRequest::set_with_defaults
      Src: /src/frr/tests/lib/test_grpc.cpp:239,1
    - Dst: frr::GetRequest::add_path
      Src: /src/frr/tests/lib/test_grpc.cpp:240,1
    - Dst: NorthboundClient::Get
      Src: /src/frr/tests/lib/test_grpc.cpp:242,1
    - Dst: auto::Read
      Src: /src/frr/tests/lib/test_grpc.cpp:243,1
    - Dst: frr::GetResponse::data
      Src: /src/frr/tests/lib/test_grpc.cpp:244,1
    - Dst: auto::Finish
      Src: /src/frr/tests/lib/test_grpc.cpp:246,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:247,1
    - Dst: std::ostringstream::str
      Src: /src/frr/tests/lib/test_grpc.cpp:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - path
    - dtype
    - enc
    - with_defaults
    argTypes:
    - std::string
    - frr::GetRequest::DataType
    - frr::Encoding
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 249
    functionName: NorthboundClient::Get
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - NorthboundClient::Get
    - frr::GetRequest::set_with_defaults
    - std::ostringstream::str
    - auto::Finish
    - NorthboundClient::_throw_if_not_ok
    - auto::Read
    - frr::GetResponse::data
    - frr::GetRequest::set_encoding
    - frr::GetRequest::add_path
    - frr::GetRequest::set_type
    linkageType: ''
    returnType: std::string
    signature: "std::string Get(const std::string &path,\n\t\t\tfrr::GetRequest::DataType
      dtype, frr::Encoding enc,\n\t\t\tbool with_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NorthboundClient::GetCapabilities
      Src: /src/frr/tests/lib/test_grpc.cpp:258,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:259,1
    - Dst: frr::GetCapabilitiesResponse::frr_version
      Src: /src/frr/tests/lib/test_grpc.cpp:263,1
    - Dst: frr::GetCapabilitiesResponse::rollback_support
      Src: /src/frr/tests/lib/test_grpc.cpp:264,1
    - Dst: frr::GetCapabilitiesResponse::supported_modules_size
      Src: /src/frr/tests/lib/test_grpc.cpp:268,1
    - Dst: frr::GetCapabilitiesResponse::supported_modules
      Src: /src/frr/tests/lib/test_grpc.cpp:269,1
    - Dst: auto::name
      Src: /src/frr/tests/lib/test_grpc.cpp:271,1
    - Dst: auto::revision
      Src: /src/frr/tests/lib/test_grpc.cpp:272,1
    - Dst: auto::organization
      Src: /src/frr/tests/lib/test_grpc.cpp:273,1
    - Dst: frr::GetCapabilitiesResponse::supported_encodings_size
      Src: /src/frr/tests/lib/test_grpc.cpp:278,1
    - Dst: frr::GetCapabilitiesResponse::supported_encodings
      Src: /src/frr/tests/lib/test_grpc.cpp:279,1
    - Dst: "google::protobuf::GetEnumDescriptor<decltype(\n\t\t\t\t\tse)>"
      Src: /src/frr/tests/lib/test_grpc.cpp:281,1
    - Dst: auto::FindValueByNumber
      Src: /src/frr/tests/lib/test_grpc.cpp:284,1
    - Dst: std::ostringstream::str
      Src: /src/frr/tests/lib/test_grpc.cpp:289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 290
    functionName: NorthboundClient::GetCapabilities
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - std::ostringstream::str
    - frr::GetCapabilitiesResponse::rollback_support
    - auto::FindValueByNumber
    - frr::GetCapabilitiesResponse::supported_modules
    - NorthboundClient::_throw_if_not_ok
    - auto::revision
    - frr::GetCapabilitiesResponse::frr_version
    - "google::protobuf::GetEnumDescriptor<decltype(\n\t\t\t\t\tse)>"
    - frr::GetCapabilitiesResponse::supported_modules_size
    - frr::GetCapabilitiesResponse::supported_encodings
    - auto::organization
    - frr::GetCapabilitiesResponse::supported_encodings_size
    - NorthboundClient::GetCapabilities
    - auto::name
    linkageType: ''
    returnType: std::string
    signature: std::string GetCapabilities()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr::DataTree::DataTree
      Src: /src/frr/tests/lib/test_grpc.cpp:297,1
    - Dst: frr::LoadToCandidateRequest::set_candidate_id
      Src: /src/frr/tests/lib/test_grpc.cpp:300,1
    - Dst: frr::LoadToCandidateRequest::set_type
      Src: /src/frr/tests/lib/test_grpc.cpp:301,1
    - Dst: frr::DataTree*::set_encoding
      Src: /src/frr/tests/lib/test_grpc.cpp:304,1
    - Dst: frr::DataTree*::set_data
      Src: /src/frr/tests/lib/test_grpc.cpp:305,1
    - Dst: frr::LoadToCandidateRequest::set_allocated_config
      Src: /src/frr/tests/lib/test_grpc.cpp:306,1
    - Dst: NorthboundClient::LoadToCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:309,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - candidate_id
    - is_replace
    - is_json
    - data
    argTypes:
    - uint32_t
    - bool
    - bool
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 311
    functionName: NorthboundClient::LoadToCandidate
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - NorthboundClient::LoadToCandidate
    - frr::LoadToCandidateRequest::set_type
    - frr::DataTree*::set_encoding
    - NorthboundClient::_throw_if_not_ok
    - frr::LoadToCandidateRequest::set_candidate_id
    - frr::DataTree::DataTree
    - frr::LoadToCandidateRequest::set_allocated_config
    - frr::DataTree*::set_data
    linkageType: ''
    returnType: void
    signature: "void LoadToCandidate(uint32_t candidate_id, bool is_replace,\n\t\t\t
      \    bool is_json, const std::string &data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NorthboundClient::ListTransactions
      Src: /src/frr/tests/lib/test_grpc.cpp:320,1
    - Dst: auto::Read
      Src: /src/frr/tests/lib/test_grpc.cpp:322,1
    - Dst: frr::ListTransactionsResponse::id
      Src: /src/frr/tests/lib/test_grpc.cpp:323,1
    - Dst: frr::ListTransactionsResponse::client
      Src: /src/frr/tests/lib/test_grpc.cpp:324,1
    - Dst: frr::ListTransactionsResponse::date
      Src: /src/frr/tests/lib/test_grpc.cpp:325,1
    - Dst: frr::ListTransactionsResponse::comment
      Src: /src/frr/tests/lib/test_grpc.cpp:326,1
    - Dst: auto::Finish
      Src: /src/frr/tests/lib/test_grpc.cpp:329,1
    - Dst: NorthboundClient::_throw_if_not_ok
      Src: /src/frr/tests/lib/test_grpc.cpp:330,1
    - Dst: std::ostringstream::str
      Src: /src/frr/tests/lib/test_grpc.cpp:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 332
    functionName: NorthboundClient::ListTransactions
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 1
    functionsReached:
    - frr::ListTransactionsResponse::comment
    - std::ostringstream::str
    - frr::ListTransactionsResponse::date
    - NorthboundClient::_throw_if_not_ok
    - auto::Read
    - frr::ListTransactionsResponse::client
    - NorthboundClient::ListTransactions
    - frr::ListTransactionsResponse::id
    - auto::Finish
    linkageType: ''
    returnType: std::string
    signature: std::string ListTransactions()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Status::ok
      Src: /src/frr/tests/lib/test_grpc.cpp:339,1
    - Dst: std::runtime_error
      Src: /src/frr/tests/lib/test_grpc.cpp:340,1
    - Dst: std::to_string
      Src: /src/frr/tests/lib/test_grpc.cpp:341,1
    - Dst: Status::error_code
      Src: /src/frr/tests/lib/test_grpc.cpp:341,1
    - Dst: Status::error_message
      Src: /src/frr/tests/lib/test_grpc.cpp:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - Status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 343
    functionName: NorthboundClient::_throw_if_not_ok
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 8
    functionsReached:
    - Status::error_code
    - Status::ok
    - std::to_string
    - Status::error_message
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void _throw_if_not_ok(Status &status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_debug
      Src: /src/frr/tests/lib/test_grpc.cpp:351,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_grpc.cpp:353,1
    - Dst: atomic_store_explicit
      Src: /src/frr/tests/lib/test_grpc.cpp:354,1
    - Dst: test_debug
      Src: /src/frr/tests/lib/test_grpc.cpp:356,1
    - Dst: pthread_join
      Src: /src/frr/tests/lib/test_grpc.cpp:357,1
    - Dst: test_debug
      Src: /src/frr/tests/lib/test_grpc.cpp:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - fpt
    - result
    argTypes:
    - struct frr_pthread*
    - void**
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 352
        line_start: 352
        source_file: /src/frr/tests/lib/test_grpc.cpp
    constantsTouched: []
    func_position:
      end: 361
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 361
    functionName: grpc_client_test_stop
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - assert
    - atomic_store_explicit
    - pthread_join
    - test_debug
    linkageType: ''
    returnType: int
    signature: int grpc_client_test_stop(struct frr_pthread *fpt, void **result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::length
      Src: /src/frr/tests/lib/test_grpc.cpp:365,1
    - Dst: std::string::length
      Src: /src/frr/tests/lib/test_grpc.cpp:366,1
    - Dst: std::min
      Src: /src/frr/tests/lib/test_grpc.cpp:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 373
    functionName: find_first_diff
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - std::min
    - std::string::length
    linkageType: ''
    returnType: int
    signature: int find_first_diff(const std::string &s1, const std::string &s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_first_diff
      Src: /src/frr/tests/lib/test_grpc.cpp:377,1
    - Dst: std::string::substr
      Src: /src/frr/tests/lib/test_grpc.cpp:381,1
    - Dst: std::string::substr
      Src: /src/frr/tests/lib/test_grpc.cpp:382,1
    - Dst: std::string::substr
      Src: /src/frr/tests/lib/test_grpc.cpp:383,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_grpc.cpp:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - std::string
    - std::string
    assertStmts:
    - condition: (false)
      pos:
        line_end: 383
        line_start: 383
        source_file: /src/frr/tests/lib/test_grpc.cpp
    constantsTouched: []
    func_position:
      end: 385
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 385
    functionName: assert_no_diff
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - find_first_diff
    - std::string::substr
    - assert
    linkageType: ''
    returnType: void
    signature: void assert_no_diff(const std::string &s1, const std::string &s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NorthboundClient::Get
      Src: /src/frr/tests/lib/test_grpc.cpp:389,1
    - Dst: assert_no_diff
      Src: /src/frr/tests/lib/test_grpc.cpp:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - client
    - compare
    argTypes:
    - NorthboundClient
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 393
    functionName: assert_config_same
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - assert_no_diff
    - NorthboundClient::Get
    linkageType: ''
    returnType: void
    signature: void assert_config_same(NorthboundClient &client, const std::string
      &compare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: grpc::CreateChannel
      Src: /src/frr/tests/lib/test_grpc.cpp:397,1
    - Dst: grpc::InsecureChannelCredentials
      Src: /src/frr/tests/lib/test_grpc.cpp:398,1
    - Dst: NorthboundClient::GetCapabilities
      Src: /src/frr/tests/lib/test_grpc.cpp:400,1
    - Dst: NorthboundClient::CreateCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:403,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_grpc.cpp:405,1
    - Dst: NorthboundClient::DeleteCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:406,1
    - Dst: NorthboundClient::CreateCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:408,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_grpc.cpp:409,1
    - Dst: assert_config_same
      Src: /src/frr/tests/lib/test_grpc.cpp:416,1
    - Dst: strlcpy
      Src: /src/frr/tests/lib/test_grpc.cpp:423,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_grpc.cpp:428,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/test_grpc.cpp:430,1
    - Dst: NorthboundClient::EditCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:437,1
    - Dst: NorthboundClient::Commit
      Src: /src/frr/tests/lib/test_grpc.cpp:439,1
    - Dst: assert_config_same
      Src: /src/frr/tests/lib/test_grpc.cpp:441,1
    - Dst: NorthboundClient::DeleteCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:443,1
    - Dst: NorthboundClient::CreateCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:450,1
    - Dst: NorthboundClient::LoadToCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:453,1
    - Dst: NorthboundClient::Commit
      Src: /src/frr/tests/lib/test_grpc.cpp:454,1
    - Dst: assert_config_same
      Src: /src/frr/tests/lib/test_grpc.cpp:457,1
    - Dst: NorthboundClient::DeleteCandidate
      Src: /src/frr/tests/lib/test_grpc.cpp:459,1
    - Dst: NorthboundClient::ListTransactions
      Src: /src/frr/tests/lib/test_grpc.cpp:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (cid == 1)
      pos:
        line_end: 404
        line_start: 404
        source_file: /src/frr/tests/lib/test_grpc.cpp
    - condition: (cid == 2)
      pos:
        line_end: 408
        line_start: 408
        source_file: /src/frr/tests/lib/test_grpc.cpp
    constantsTouched: []
    func_position:
      end: 464
      start: 395
    functionDepth: 3
    functionLinenumber: 395
    functionLinenumberEnd: 464
    functionName: grpc_client_run_test
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - NorthboundClient::LoadToCandidate
    - strlen
    - NorthboundClient::Commit
    - grpc::InsecureChannelCredentials
    - NorthboundClient::CreateCandidate
    - snprintf
    - strlcpy
    - NorthboundClient::DeleteCandidate
    - assert_config_same
    - NorthboundClient::ListTransactions
    - grpc::CreateChannel
    - NorthboundClient::GetCapabilities
    - NorthboundClient::EditCandidate
    - assert
    linkageType: ''
    returnType: void
    signature: void grpc_client_run_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/frr/tests/lib/test_grpc.cpp:469,1
    - Dst: frr_pthread_set_name
      Src: /src/frr/tests/lib/test_grpc.cpp:470,1
    - Dst: frr_pthread_notify_running
      Src: /src/frr/tests/lib/test_grpc.cpp:471,1
    - Dst: grpc_client_run_test
      Src: /src/frr/tests/lib/test_grpc.cpp:474,1
    - Dst: what
      Src: /src/frr/tests/lib/test_grpc.cpp:477,1
    - Dst: test_debug
      Src: /src/frr/tests/lib/test_grpc.cpp:481,1
    - Dst: event_add_event
      Src: /src/frr/tests/lib/test_grpc.cpp:482,1
    - Dst: test_debug
      Src: /src/frr/tests/lib/test_grpc.cpp:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 466
    functionDepth: 4
    functionLinenumber: 466
    functionLinenumberEnd: 487
    functionName: grpc_client_test_start
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc_client_run_test
    - frr_pthread_notify_running
    - pthread_self
    - frr_pthread_set_name
    - what
    - test_debug
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void *grpc_client_test_start(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_pthread_new
      Src: /src/frr/tests/lib/test_grpc.cpp:496,1
    - Dst: frr_pthread_run
      Src: /src/frr/tests/lib/test_grpc.cpp:497,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/tests/lib/test_grpc.cpp:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 499
    functionName: grpc_thread_start
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - frr_pthread_run
    - frr_pthread_wait_running
    - frr_pthread_new
    linkageType: ''
    returnType: void
    signature: void grpc_thread_start(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_pthread_stop_all
      Src: /src/frr/tests/lib/test_grpc.cpp:504,1
    - Dst: static_shutdown
      Src: /src/frr/tests/lib/test_grpc.cpp:506,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_grpc.cpp:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 509
    functionName: grpc_thread_stop
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - frr_pthread_stop_all
    - static_shutdown
    - exit
    linkageType: ''
    returnType: void
    signature: void grpc_thread_stop(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/frr/tests/lib/test_grpc.cpp:520,1
    - Dst: strlcpy
      Src: /src/frr/tests/lib/test_grpc.cpp:521,1
    - Dst: MIN
      Src: /src/frr/tests/lib/test_grpc.cpp:521,1
    - Dst: strrchr
      Src: /src/frr/tests/lib/test_grpc.cpp:524,1
    - Dst: getcwd
      Src: /src/frr/tests/lib/test_grpc.cpp:529,1
    - Dst: strlen
      Src: /src/frr/tests/lib/test_grpc.cpp:531,1
    - Dst: strlcpy
      Src: /src/frr/tests/lib/test_grpc.cpp:533,1
    - Dst: MIN
      Src: /src/frr/tests/lib/test_grpc.cpp:533,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - argv0
    - cwd
    argTypes:
    - char*
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 535
    functionName: get_binpath
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 0
    functionsReached:
    - MIN
    - strlen
    - strlcpy
    - strrchr
    - getcwd
    linkageType: ''
    returnType: int
    signature: int get_binpath(const char *argv0, char cwd[2 * MAXPATHLEN + 1])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_grpc.cpp:539,1
    - Dst: get_binpath
      Src: /src/frr/tests/lib/test_grpc.cpp:540,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_grpc.cpp:541,1
    - Dst: static_startup
      Src: /src/frr/tests/lib/test_grpc.cpp:543,1
    - Dst: event_add_event
      Src: /src/frr/tests/lib/test_grpc.cpp:545,1
    - Dst: event_fetch
      Src: /src/frr/tests/lib/test_grpc.cpp:549,1
    - Dst: event_call
      Src: /src/frr/tests/lib/test_grpc.cpp:550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (argc >= 1)
      pos:
        line_end: 538
        line_start: 538
        source_file: /src/frr/tests/lib/test_grpc.cpp
    constantsTouched: []
    func_position:
      end: 552
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 552
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_grpc.cpp
    functionUses: 2
    functionsReached:
    - exit
    - get_binpath
    - event_fetch
    - event_call
    - static_startup
    - assert
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lib_cmd_init
      Src: /src/frr/tests/lib/test_buffer.c:20,1
    - Dst: sscanf
      Src: /src/frr/tests/lib/test_buffer.c:22,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/test_buffer.c:23,1
    - Dst: buffer_new
      Src: /src/frr/tests/lib/test_buffer.c:28,1
    - Dst: buffer_new
      Src: /src/frr/tests/lib/test_buffer.c:29,1
    - Dst: buffer_put
      Src: /src/frr/tests/lib/test_buffer.c:32,1
    - Dst: buffer_put
      Src: /src/frr/tests/lib/test_buffer.c:33,1
    - Dst: buffer_reset
      Src: /src/frr/tests/lib/test_buffer.c:36,1
    - Dst: buffer_reset
      Src: /src/frr/tests/lib/test_buffer.c:37,1
    - Dst: buffer_free
      Src: /src/frr/tests/lib/test_buffer.c:39,1
    - Dst: buffer_free
      Src: /src/frr/tests/lib/test_buffer.c:40,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 42
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_buffer.c
    functionUses: 2
    functionsReached:
    - buffer_new
    - buffer_free
    - buffer_reset
    - lib_cmd_init
    - fprintf
    - buffer_put
    - sscanf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: XMALLOC
    functionSourceFile: /src/frr/tests/lib/test_memory.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XMALLOC(T,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: XCALLOC
    functionSourceFile: /src/frr/tests/lib/test_memory.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XCALLOC(T,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - P
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: XREALLOC
    functionSourceFile: /src/frr/tests/lib/test_memory.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XREALLOC(T,P,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: XFREE
    functionSourceFile: /src/frr/tests/lib/test_memory.c
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XFREE(T,P)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:38,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_memory.c:41,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:42,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_memory.c:43,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:44,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:45,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_memory.c:46,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:48,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:49,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:52,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_memory.c:55,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:56,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_memory.c:57,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:58,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:59,1
    - Dst: XMALLOC
      Src: /src/frr/tests/lib/test_memory.c:60,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:61,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:62,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:66,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_memory.c:69,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:70,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_memory.c:71,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:72,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:73,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:74,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:78,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:81,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_memory.c:82,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:83,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:85,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_memory.c:86,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:87,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:89,1
    - Dst: XREALLOC
      Src: /src/frr/tests/lib/test_memory.c:90,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:93,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:95,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/test_memory.c:96,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_memory.c:97,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_memory.c:99,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:100,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:101,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_memory.c:102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 54
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 106
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_memory.c
    functionUses: 2
    functionsReached:
    - memset
    - XCALLOC
    - XMALLOC
    - XFREE
    - printf
    - XREALLOC
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/tests/lib/test_xref.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: test_logcall
    functionSourceFile: /src/frr/tests/lib/test_xref.c
    functionUses: 0
    functionsReached:
    - zlog_err
    linkageType: ''
    returnType: bool
    signature: bool test_logcall(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/frr/tests/lib/test_xref.c:45,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_xref.c:49,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_xref.c:53,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_xref.c:56,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_xref.c:61,1
    - Dst: container_of
      Src: /src/frr/tests/lib/test_xref.c:67,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_xref.c:68,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_xref.c:69,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_xref.c:73,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_xref.c:80,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_xref.c:85,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_xref.c:86,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - xref
    - found
    - error
    argTypes:
    - struct xref*
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 90
    functionName: check_xref
    functionSourceFile: /src/frr/tests/lib/test_xref.c
    functionUses: 0
    functionsReached:
    - strrchr
    - strcmp
    - container_of
    - printf
    linkageType: ''
    returnType: void
    signature: void check_xref(const struct xref *xref, bool *found, bool *error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_xref
      Src: /src/frr/tests/lib/test_xref.c:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 110
    functionName: test_lookup
    functionSourceFile: /src/frr/tests/lib/test_xref.c
    functionUses: 0
    functionsReached:
    - check_xref
    linkageType: ''
    returnType: bool
    signature: bool test_lookup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/test_xref.c:121,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_xref.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 127
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_xref.c
    functionUses: 2
    functionsReached:
    - zlog_aux_init
    - array_size
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newstate
      Src: /src/frr/tests/lib/test_frrlua.c:14,1
    - Dst: lua_pushintegerp
      Src: /src/frr/tests/lib/test_frrlua.c:19,1
    - Dst: lua_decode_integerp
      Src: /src/frr/tests/lib/test_frrlua.c:20,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:21,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:22,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:22,1
    - Dst: lua_pushinteger
      Src: /src/frr/tests/lib/test_frrlua.c:27,1
    - Dst: lua_tointeger
      Src: /src/frr/tests/lib/test_frrlua.c:28,1
    - Dst: lua_pop
      Src: /src/frr/tests/lib/test_frrlua.c:29,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:30,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:31,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:31,1
    - Dst: strlcpy
      Src: /src/frr/tests/lib/test_frrlua.c:35,1
    - Dst: lua_pushstring_wrapper
      Src: /src/frr/tests/lib/test_frrlua.c:36,1
    - Dst: lua_decode_stringp
      Src: /src/frr/tests/lib/test_frrlua.c:37,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:38,1
    - Dst: strncmp
      Src: /src/frr/tests/lib/test_frrlua.c:38,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:39,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:39,1
    - Dst: strlcpy
      Src: /src/frr/tests/lib/test_frrlua.c:44,1
    - Dst: str2prefix
      Src: /src/frr/tests/lib/test_frrlua.c:45,1
    - Dst: lua_pushprefix
      Src: /src/frr/tests/lib/test_frrlua.c:46,1
    - Dst: lua_decode_prefix
      Src: /src/frr/tests/lib/test_frrlua.c:47,1
    - Dst: prefix2str
      Src: /src/frr/tests/lib/test_frrlua.c:48,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:49,1
    - Dst: strncmp
      Src: /src/frr/tests/lib/test_frrlua.c:49,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:50,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:50,1
    - Dst: lua_pushinterface
      Src: /src/frr/tests/lib/test_frrlua.c:55,1
    - Dst: lua_decode_interface
      Src: /src/frr/tests/lib/test_frrlua.c:56,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:57,1
    - Dst: strncmp
      Src: /src/frr/tests/lib/test_frrlua.c:57,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:58,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:59,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:60,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:61,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:62,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:63,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:64,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:65,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:66,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:67,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:68,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:68,1
    - Dst: lua_pushinaddr
      Src: /src/frr/tests/lib/test_frrlua.c:73,1
    - Dst: lua_decode_inaddr
      Src: /src/frr/tests/lib/test_frrlua.c:74,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:75,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:76,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:76,1
    - Dst: lua_pushin6addr
      Src: /src/frr/tests/lib/test_frrlua.c:81,1
    - Dst: lua_decode_in6addr
      Src: /src/frr/tests/lib/test_frrlua.c:82,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:83,1
    - Dst: in6addr_cmp
      Src: /src/frr/tests/lib/test_frrlua.c:83,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:84,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:84,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_frrlua.c:88,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_frrlua.c:89,1
    - Dst: lua_pushsockunion
      Src: /src/frr/tests/lib/test_frrlua.c:90,1
    - Dst: lua_decode_sockunion
      Src: /src/frr/tests/lib/test_frrlua.c:91,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:92,1
    - Dst: sockunion_cmp
      Src: /src/frr/tests/lib/test_frrlua.c:92,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrlua.c:93,1
    - Dst: lua_gettop
      Src: /src/frr/tests/lib/test_frrlua.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (a == b)
      pos:
        line_end: 20
        line_start: 20
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (strncmp(ifp_a.name, ifp_b.name, sizeof(ifp_b.name)) == 0)
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.metric == ifp_b.metric)
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.mtu == ifp_b.mtu)
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.bandwidth == ifp_b.bandwidth)
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.ifindex == ifp_b.ifindex)
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.speed == ifp_b.speed)
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 75
        line_start: 75
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (sockunion_cmp(&su_a, &su_b) == 0)
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.ll_type == ifp_b.ll_type)
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (in6addr_cmp(&in6addr_a, &in6addr_b) == 0)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (addr_a.s_addr == addr_b.s_addr)
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 21
        line_start: 21
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (strncmp(str_a, str_b, sizeof(str_b)) == 0)
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (strncmp(p_a_str, p_b_str, sizeof(p_b_str)) == 0)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.status == ifp_b.status)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.mtu6 == ifp_b.mtu6)
      pos:
        line_end: 63
        line_start: 63
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 92
        line_start: 92
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (time_a == time_b)
      pos:
        line_end: 29
        line_start: 29
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.flags == ifp_b.flags)
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (ifp_a.link_ifindex == ifp_b.link_ifindex)
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/frr/tests/lib/test_frrlua.c
    - condition: (lua_gettop(L) == 0)
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/frr/tests/lib/test_frrlua.c
    constantsTouched: []
    func_position:
      end: 94
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 94
    functionName: test_encode_decode
    functionSourceFile: /src/frr/tests/lib/test_frrlua.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - lua_pushinaddr
    - lua_pushprefix
    - sockunion_cmp
    - strncmp
    - lua_pop
    - lua_pushintegerp
    - luaL_newstate
    - lua_decode_stringp
    - memset
    - lua_decode_prefix
    - lua_tointeger
    - str2prefix
    - lua_pushinteger
    - assert
    - lua_gettop
    - lua_pushin6addr
    - lua_decode_sockunion
    - strlcpy
    - lua_pushsockunion
    - lua_decode_inaddr
    - lua_decode_integerp
    - lua_decode_in6addr
    - lua_pushstring_wrapper
    - lua_decode_interface
    - in6addr_cmp
    - lua_pushinterface
    linkageType: ''
    returnType: void
    signature: void test_encode_decode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_encode_decode
      Src: /src/frr/tests/lib/test_frrlua.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_frrlua.c
    functionUses: 2
    functionsReached:
    - test_encode_decode
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: idalloc_new
      Src: /src/frr/tests/lib/test_idalloc.c:24,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:26,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:26,1
    - Dst: idalloc_destroy
      Src: /src/frr/tests/lib/test_idalloc.c:28,1
    - Dst: idalloc_new
      Src: /src/frr/tests/lib/test_idalloc.c:33,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:34,1
    - Dst: idalloc_reserve
      Src: /src/frr/tests/lib/test_idalloc.c:34,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:35,1
    - Dst: idalloc_reserve
      Src: /src/frr/tests/lib/test_idalloc.c:35,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:36,1
    - Dst: idalloc_reserve
      Src: /src/frr/tests/lib/test_idalloc.c:36,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:38,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:39,1
    - Dst: idalloc_destroy
      Src: /src/frr/tests/lib/test_idalloc.c:41,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_idalloc.c:46,1
    - Dst: idalloc_new
      Src: /src/frr/tests/lib/test_idalloc.c:49,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:53,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:54,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:55,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:56,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:60,1
    - Dst: idalloc_free
      Src: /src/frr/tests/lib/test_idalloc.c:63,1
    - Dst: idalloc_free
      Src: /src/frr/tests/lib/test_idalloc.c:65,1
    - Dst: idalloc_free
      Src: /src/frr/tests/lib/test_idalloc.c:67,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:70,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:76,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:77,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:78,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:79,1
    - Dst: idalloc_destroy
      Src: /src/frr/tests/lib/test_idalloc.c:82,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_idalloc.c:85,1
    - Dst: idalloc_new
      Src: /src/frr/tests/lib/test_idalloc.c:88,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:92,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:93,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:94,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:97,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:98,1
    - Dst: idalloc_free
      Src: /src/frr/tests/lib/test_idalloc.c:102,1
    - Dst: idalloc_free
      Src: /src/frr/tests/lib/test_idalloc.c:105,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:109,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:115,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:116,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:117,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:118,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:122,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:123,1
    - Dst: idalloc_free
      Src: /src/frr/tests/lib/test_idalloc.c:127,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:128,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:129,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:130,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:131,1
    - Dst: idalloc_destroy
      Src: /src/frr/tests/lib/test_idalloc.c:133,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_idalloc.c:141,1
    - Dst: idalloc_new
      Src: /src/frr/tests/lib/test_idalloc.c:144,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:148,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:149,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:150,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:153,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:154,1
    - Dst: idalloc_free
      Src: /src/frr/tests/lib/test_idalloc.c:168,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:172,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:173,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:176,1
    - Dst: idalloc_reserve
      Src: /src/frr/tests/lib/test_idalloc.c:176,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:180,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:181,1
    - Dst: idalloc_allocate
      Src: /src/frr/tests/lib/test_idalloc.c:185,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:186,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:187,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:190,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_idalloc.c:191,1
    - Dst: idalloc_destroy
      Src: /src/frr/tests/lib/test_idalloc.c:193,1
    - Dst: puts
      Src: /src/frr/tests/lib/test_idalloc.c:195,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 109
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (idalloc_allocate(a) != 0)
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val != 1 && val != 3 && val != 5)
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == IDS_PER_PAGE-3)
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val < IDS_PER_PAGE)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val < 3*IDS_PER_PAGE)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val < 3*IDS_PER_PAGE)
      pos:
        line_end: 185
        line_start: 185
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE)
      pos:
        line_end: 190
        line_start: 190
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 179
        line_start: 179
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val < 3*IDS_PER_PAGE)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (idalloc_reserve(a, 1) == 1)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (idalloc_reserve(a, 5) == 5)
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val < IDS_PER_PAGE)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (allocated_markers[val] == 0)
      pos:
        line_end: 116
        line_start: 116
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE)
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 152
        line_start: 152
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE-2)
      pos:
        line_end: 180
        line_start: 180
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE-3)
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE - 6)
      pos:
        line_end: 108
        line_start: 108
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE)
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 189
        line_start: 189
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (allocated_markers[val] == 0)
      pos:
        line_end: 186
        line_start: 186
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (allocated_markers[val] == 0)
      pos:
        line_end: 149
        line_start: 149
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (allocated_markers[val] == 0)
      pos:
        line_end: 77
        line_start: 77
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == IDS_PER_PAGE)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (allocated_markers[val] == 0)
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 117
        line_start: 117
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 121
        line_start: 121
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == 3*IDS_PER_PAGE)
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == 3*IDS_PER_PAGE)
      pos:
        line_end: 153
        line_start: 153
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (idalloc_reserve(a, 3) == 3)
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (allocated_markers[val] == 0)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->capacity == IDS_PER_PAGE)
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (a->allocated == IDS_PER_PAGE)
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val < 3*IDS_PER_PAGE)
      pos:
        line_end: 92
        line_start: 92
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: "(idalloc_reserve(a, pg*IDS_PER_PAGE + 17) ==\n\t\t       pg*IDS_PER_PAGE
        + 17)"
      pos:
        line_end: 176
        line_start: 175
        source_file: /src/frr/tests/lib/test_idalloc.c
    - condition: (val == i)
      pos:
        line_end: 128
        line_start: 128
        source_file: /src/frr/tests/lib/test_idalloc.c
    constantsTouched: []
    func_position:
      end: 197
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 197
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_idalloc.c
    functionUses: 2
    functionsReached:
    - assert
    - memset
    - idalloc_free
    - idalloc_destroy
    - idalloc_reserve
    - idalloc_new
    - puts
    - idalloc_allocate
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:16,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:18,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct skiplist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 19
    functionName: sl_debug
    functionSourceFile: /src/frr/tests/lib/test_skiplist.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void sl_debug(struct skiplist *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 29
    functionName: scramble
    functionSourceFile: /src/frr/tests/lib/test_skiplist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *scramble(int i)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_new
      Src: /src/frr/tests/lib/test_skiplist.c:39,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:41,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:47,1
    - Dst: scramble
      Src: /src/frr/tests/lib/test_skiplist.c:49,1
    - Dst: skiplist_insert
      Src: /src/frr/tests/lib/test_skiplist.c:50,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:52,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:56,1
    - Dst: sl_debug
      Src: /src/frr/tests/lib/test_skiplist.c:57,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:62,1
    - Dst: skiplist_search
      Src: /src/frr/tests/lib/test_skiplist.c:64,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:66,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:71,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:74,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:80,1
    - Dst: skiplist_delete
      Src: /src/frr/tests/lib/test_skiplist.c:82,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:84,1
    - Dst: scramble
      Src: /src/frr/tests/lib/test_skiplist.c:86,1
    - Dst: skiplist_insert
      Src: /src/frr/tests/lib/test_skiplist.c:87,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:89,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:93,1
    - Dst: sl_debug
      Src: /src/frr/tests/lib/test_skiplist.c:94,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:99,1
    - Dst: skiplist_delete_first
      Src: /src/frr/tests/lib/test_skiplist.c:101,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_skiplist.c:103,1
    - Dst: sl_debug
      Src: /src/frr/tests/lib/test_skiplist.c:108,1
    - Dst: skiplist_free
      Src: /src/frr/tests/lib/test_skiplist.c:110,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 113
    functionName: sl_test
    functionSourceFile: /src/frr/tests/lib/test_skiplist.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    - skiplist_delete
    - scramble
    - skiplist_new
    - skiplist_free
    - printf
    - skiplist_delete_first
    - sl_debug
    - skiplist_insert
    linkageType: ''
    returnType: int
    signature: int sl_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sl_test
      Src: /src/frr/tests/lib/test_skiplist.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 122
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_skiplist.c
    functionUses: 2
    functionsReached:
    - sl_test
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_from_ifindex
      Src: /src/frr/tests/lib/test_nexthop.c:24,1
    - Dst: nexthop_from_ifindex
      Src: /src/frr/tests/lib/test_nexthop.c:25,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:27,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:28,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:30,1
    - Dst: nexthop_from_ifindex
      Src: /src/frr/tests/lib/test_nexthop.c:31,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:33,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:34,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:36,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:37,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:41,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:42,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:44,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:45,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:47,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:50,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:52,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:53,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:55,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:58,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:60,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:61,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:66,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:67,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:69,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:70,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_nexthop.c:73,1
    - Dst: nexthop_from_ipv6
      Src: /src/frr/tests/lib/test_nexthop.c:74,1
    - Dst: nexthop_from_ipv6
      Src: /src/frr/tests/lib/test_nexthop.c:75,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:77,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:78,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:80,1
    - Dst: nexthop_from_ipv6
      Src: /src/frr/tests/lib/test_nexthop.c:82,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:84,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:85,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:87,1
    - Dst: nexthop_from_ipv6
      Src: /src/frr/tests/lib/test_nexthop.c:91,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:93,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:94,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:96,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:97,1
    - Dst: nexthop_from_blackhole
      Src: /src/frr/tests/lib/test_nexthop.c:100,1
    - Dst: nexthop_from_blackhole
      Src: /src/frr/tests/lib/test_nexthop.c:101,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:103,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:104,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:106,1
    - Dst: nexthop_from_blackhole
      Src: /src/frr/tests/lib/test_nexthop.c:108,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:110,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:111,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:115,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:116,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_nexthop.c:118,1
    - Dst: nexthop_add_labels
      Src: /src/frr/tests/lib/test_nexthop.c:122,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:124,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:125,1
    - Dst: nexthop_add_labels
      Src: /src/frr/tests/lib/test_nexthop.c:127,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:129,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:130,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:132,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:135,1
    - Dst: nexthop_add_labels
      Src: /src/frr/tests/lib/test_nexthop.c:136,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:138,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:139,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:141,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:144,1
    - Dst: nexthop_add_labels
      Src: /src/frr/tests/lib/test_nexthop.c:145,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:147,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:148,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:150,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:151,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:153,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:154,1
    - Dst: nexthop_add_labels
      Src: /src/frr/tests/lib/test_nexthop.c:159,1
    - Dst: nexthop_add_labels
      Src: /src/frr/tests/lib/test_nexthop.c:160,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:162,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:163,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:165,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/tests/lib/test_nexthop.c:169,1
    - Dst: nexthop_add_labels
      Src: /src/frr/tests/lib/test_nexthop.c:170,1
    - Dst: nexthop_cmp_basic
      Src: /src/frr/tests/lib/test_nexthop.c:172,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_nexthop.c:173,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:176,1
    - Dst: nexthop_free
      Src: /src/frr/tests/lib/test_nexthop.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ret != 0)
      pos:
        line_end: 84
        line_start: 84
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret == 0)
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret == 0)
      pos:
        line_end: 77
        line_start: 77
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret < 0)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret == 0)
      pos:
        line_end: 162
        line_start: 162
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret == 0)
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret == 0)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret == 0)
      pos:
        line_end: 103
        line_start: 103
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret != 0)
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/frr/tests/lib/test_nexthop.c
    - condition: (ret == 0)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/tests/lib/test_nexthop.c
    constantsTouched: []
    func_position:
      end: 178
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 178
    functionName: test_run_first
    functionSourceFile: /src/frr/tests/lib/test_nexthop.c
    functionUses: 0
    functionsReached:
    - nexthop_free
    - nexthop_from_ipv6
    - nexthop_cmp_basic
    - memset
    - nexthop_add_labels
    - nexthop_from_blackhole
    - nexthop_from_ifindex
    - nexthop_from_ipv4
    - assert
    linkageType: ''
    returnType: void
    signature: void test_run_first(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_nexthop.c:182,1
    - Dst: test_run_first
      Src: /src/frr/tests/lib/test_nexthop.c:184,1
    - Dst: printf
      Src: /src/frr/tests/lib/test_nexthop.c:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 186
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_nexthop.c
    functionUses: 2
    functionsReached:
    - test_run_first
    - strcmp
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrscript_init
      Src: /src/frr/tests/lib/test_frrscript.c:14,1
    - Dst: frrscript_new
      Src: /src/frr/tests/lib/test_frrscript.c:15,1
    - Dst: frrscript_load
      Src: /src/frr/tests/lib/test_frrscript.c:22,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:23,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:24,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:25,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:26,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:27,1
    - Dst: frrscript_load
      Src: /src/frr/tests/lib/test_frrscript.c:31,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:32,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:33,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:34,1
    - Dst: frrscript_get_result
      Src: /src/frr/tests/lib/test_frrscript.c:35,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:38,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:39,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:40,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_frrscript.c:41,1
    - Dst: frrscript_load
      Src: /src/frr/tests/lib/test_frrscript.c:45,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:46,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:47,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:48,1
    - Dst: frrscript_get_result
      Src: /src/frr/tests/lib/test_frrscript.c:50,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:51,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:55,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:56,1
    - Dst: frrscript_get_result
      Src: /src/frr/tests/lib/test_frrscript.c:57,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:58,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/test_frrscript.c:60,1
    - Dst: frrscript_load
      Src: /src/frr/tests/lib/test_frrscript.c:65,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:66,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:69,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:70,1
    - Dst: frrscript_get_result
      Src: /src/frr/tests/lib/test_frrscript.c:74,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:75,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:78,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:79,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:82,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:83,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:86,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:87,1
    - Dst: frrscript_get_result
      Src: /src/frr/tests/lib/test_frrscript.c:89,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:90,1
    - Dst: frrscript_call
      Src: /src/frr/tests/lib/test_frrscript.c:93,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_frrscript.c:94,1
    - Dst: frrscript_delete
      Src: /src/frr/tests/lib/test_frrscript.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (llptr == NULL)
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 1)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 0)
      pos:
        line_end: 22
        line_start: 22
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 0)
      pos:
        line_end: 24
        line_start: 24
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (b == 201)
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (a == 100)
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 1)
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 1)
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (a == 101)
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 0)
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (*cptr == 303)
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 0)
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 0)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 0)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (*ansptr == 24)
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 1)
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (cllptr == NULL)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (b == 201)
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (*ansptr == 120)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 0)
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 1)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/frr/tests/lib/test_frrscript.c
    - condition: (result == 1)
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/tests/lib/test_frrscript.c
    constantsTouched: []
    func_position:
      end: 99
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 99
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_frrscript.c
    functionUses: 2
    functionsReached:
    - frrscript_get_result
    - frrscript_call
    - frrscript_init
    - frrscript_new
    - frrscript_load
    - XFREE
    - frrscript_delete
    - assert
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_sig.c:12,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 13
    functionName: sighup
    functionSourceFile: /src/frr/tests/lib/test_sig.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_sig.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 18
    functionName: sigusr1
    functionSourceFile: /src/frr/tests/lib/test_sig.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/test_sig.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: sigusr2
    functionSourceFile: /src/frr/tests/lib/test_sig.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void sigusr2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_master_create
      Src: /src/frr/tests/lib/test_sig.c:43,1
    - Dst: signal_init
      Src: /src/frr/tests/lib/test_sig.c:44,1
    - Dst: array_size
      Src: /src/frr/tests/lib/test_sig.c:44,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/test_sig.c:46,1
    - Dst: event_fetch
      Src: /src/frr/tests/lib/test_sig.c:48,1
    - Dst: event_call
      Src: /src/frr/tests/lib/test_sig.c:49,1
    - Dst: exit
      Src: /src/frr/tests/lib/test_sig.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: main
    functionSourceFile: /src/frr/tests/lib/test_sig.c
    functionUses: 2
    functionsReached:
    - exit
    - event_master_create
    - zlog_aux_init
    - array_size
    - signal_init
    - event_fetch
    - event_call
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/tests/lib/test_typelist.h:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 70
    functionName: list_hash
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t list_hash(const struct item *a)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct item*
    - struct item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: list_cmp
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int list_cmp(const struct item *a, const struct item *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime_since
      Src: /src/frr/tests/lib/test_typelist.h:97,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:105,1
    - Dst: htonl
      Src: /src/frr/tests/lib/test_typelist.h:106,1
    - Dst: SHA256_Init
      Src: /src/frr/tests/lib/test_typelist.h:108,1
    - Dst: SHA256_Update
      Src: /src/frr/tests/lib/test_typelist.h:109,1
    - Dst: htonl
      Src: /src/frr/tests/lib/test_typelist.h:115,1
    - Dst: htonl
      Src: /src/frr/tests/lib/test_typelist.h:116,1
    - Dst: htonl
      Src: /src/frr/tests/lib/test_typelist.h:117,1
    - Dst: SHA256_Update
      Src: /src/frr/tests/lib/test_typelist.h:119,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:121,1
    - Dst: SHA256_Final
      Src: /src/frr/tests/lib/test_typelist.h:123,1
    - Dst: sprintf
      Src: /src/frr/tests/lib/test_typelist.h:126,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_typelist.h:128,1
    - Dst: strcmp
      Src: /src/frr/tests/lib/test_typelist.h:130,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_typelist.h:131,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:132,1
    - Dst: monotime
      Src: /src/frr/tests/lib/test_typelist.h:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - h
    - text
    - expect
    argTypes:
    - struct list_head*
    - char*
    - char*
    assertStmts:
    - condition: (i <= count)
      pos:
        line_end: 120
        line_start: 120
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (0)
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/frr/tests/lib/test_typelist.h
    constantsTouched: []
    func_position:
      end: 135
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 135
    functionName: ts_hash_head
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached:
    - SHA256_Init
    - SHA256_Update
    - strcmp
    - monotime
    - printfrr
    - sprintf
    - monotime_since
    - SHA256_Final
    - list_count
    - htonl
    - assert
    linkageType: ''
    returnType: void
    signature: "void ts_hash_head(struct list_head *h, const char *text,\n\t\t\t const
      char *expect)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/tests/lib/test_typelist.h:115,1
    - Dst: htonl
      Src: /src/frr/tests/lib/test_typelist.h:116,1
    - Dst: htonl
      Src: /src/frr/tests/lib/test_typelist.h:117,1
    - Dst: SHA256_Update
      Src: /src/frr/tests/lib/test_typelist.h:119,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (i <= count)
      pos:
        line_end: 120
        line_start: 120
        source_file: /src/frr/tests/lib/test_typelist.h
    constantsTouched: []
    func_position:
      end: 122
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 122
    functionName: frr_each
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 12
    functionsReached:
    - htonl
    - SHA256_Update
    - assert
    linkageType: ''
    returnType: void
    signature: void frr_each (list, h, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pos
    - ','
    - csum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: ts_hash
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ts_hash(pos, csum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pos
    - ','
    - csum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: ts_hashx
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ts_hashx(pos, csum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - pos
    - ','
    - csum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: ts_hash_headx
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ts_hash_headx(head, pos, csum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pos
    - ','
    - csum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 143
    functionName: ts_hash
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ts_hash(pos, csum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pos
    - ','
    - csum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: ts_hashx
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ts_hashx(pos, csum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - pos
    - ','
    - csum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: ts_hash_headx
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ts_hash_headx(head, pos, csum)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: IS_HASH
      Src: /src/frr/tests/lib/test_typelist.h:273,1
    - Dst: IS_HEAP
      Src: /src/frr/tests/lib/test_typelist.h:273,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:277,1
    - Dst: IS_REVERSE
      Src: /src/frr/tests/lib/test_typelist.h:278,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:279,1
    - Dst: list_const_prev
      Src: /src/frr/tests/lib/test_typelist.h:279,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:285,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:285,1
    - Dst: IS_REVERSE
      Src: /src/frr/tests/lib/test_typelist.h:286,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:287,1
    - Dst: list_const_last
      Src: /src/frr/tests/lib/test_typelist.h:287,1
    - Dst: ts_ref
      Src: /src/frr/tests/lib/test_typelist.h:289,1
    - Dst: IS_REVERSE
      Src: /src/frr/tests/lib/test_typelist.h:291,1
    - Dst: IS_HASH
      Src: /src/frr/tests/lib/test_typelist.h:291,1
    - Dst: IS_HEAP
      Src: /src/frr/tests/lib/test_typelist.h:291,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:296,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:297,1
    - Dst: list_const_next
      Src: /src/frr/tests/lib/test_typelist.h:297,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:302,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:302,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:303,1
    - Dst: list_const_first
      Src: /src/frr/tests/lib/test_typelist.h:303,1
    - Dst: ts_ref
      Src: /src/frr/tests/lib/test_typelist.h:305,1
    - Dst: IS_UNIQ
      Src: /src/frr/tests/lib/test_typelist.h:308,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_typelist.h:309,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_typelist.h:310,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:313,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:315,1
    - Dst: list_find
      Src: /src/frr/tests/lib/test_typelist.h:315,1
    - Dst: ts_ref
      Src: /src/frr/tests/lib/test_typelist.h:317,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:320,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_typelist.h:321,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:324,1
    - Dst: list_add
      Src: /src/frr/tests/lib/test_typelist.h:324,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:326,1
    - Dst: list_add
      Src: /src/frr/tests/lib/test_typelist.h:326,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:327,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:327,1
    - Dst: ts_hashx
      Src: /src/frr/tests/lib/test_typelist.h:330,1
    - Dst: IS_HEAP
      Src: /src/frr/tests/lib/test_typelist.h:332,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:337,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:339,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:344,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_typelist.h:347,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:347,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:349,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:350,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:354,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:356,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:361,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:365,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_typelist.h:366,1
    - Dst: list_add
      Src: /src/frr/tests/lib/test_typelist.h:369,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:373,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:373,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:374,1
    - Dst: memset
      Src: /src/frr/tests/lib/test_typelist.h:376,1
    - Dst: list_find_lt
      Src: /src/frr/tests/lib/test_typelist.h:378,1
    - Dst: list_find_gteq
      Src: /src/frr/tests/lib/test_typelist.h:379,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:381,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:383,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:383,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:384,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:386,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:386,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:387,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:388,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:389,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:389,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:390,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:390,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:392,1
    - Dst: IS_HASH
      Src: /src/frr/tests/lib/test_typelist.h:394,1
    - Dst: IS_HEAP
      Src: /src/frr/tests/lib/test_typelist.h:394,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_typelist.h:395,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_typelist.h:396,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:402,1
    - Dst: list_find_lt
      Src: /src/frr/tests/lib/test_typelist.h:405,1
    - Dst: list_find_gteq
      Src: /src/frr/tests/lib/test_typelist.h:406,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:409,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:410,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:411,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:412,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:414,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:414,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:417,1
    - Dst: ts_ref
      Src: /src/frr/tests/lib/test_typelist.h:419,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_typelist.h:422,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_typelist.h:423,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:427,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:428,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:430,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:430,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:435,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:435,1
    - Dst: ts_hashx
      Src: /src/frr/tests/lib/test_typelist.h:436,1
    - Dst: IS_ATOMIC
      Src: /src/frr/tests/lib/test_typelist.h:438,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_typelist.h:440,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:440,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:442,1
    - Dst: ts_hashx
      Src: /src/frr/tests/lib/test_typelist.h:443,1
    - Dst: frr_each_safe
      Src: /src/frr/tests/lib/test_typelist.h:446,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:447,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:450,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:450,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:455,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:455,1
    - Dst: ts_hashx
      Src: /src/frr/tests/lib/test_typelist.h:456,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_typelist.h:459,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:462,1
    - Dst: list_add_tail
      Src: /src/frr/tests/lib/test_typelist.h:464,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:469,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:469,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:470,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:470,1
    - Dst: IS_REVERSE
      Src: /src/frr/tests/lib/test_typelist.h:471,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:472,1
    - Dst: list_last
      Src: /src/frr/tests/lib/test_typelist.h:472,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:474,1
    - Dst: IS_ATOMIC
      Src: /src/frr/tests/lib/test_typelist.h:476,1
    - Dst: list_init
      Src: /src/frr/tests/lib/test_typelist.h:479,1
    - Dst: list_swap_all
      Src: /src/frr/tests/lib/test_typelist.h:480,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:482,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:482,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:483,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:483,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:484,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:484,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:485,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:485,1
    - Dst: IS_REVERSE
      Src: /src/frr/tests/lib/test_typelist.h:486,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:487,1
    - Dst: list_last
      Src: /src/frr/tests/lib/test_typelist.h:487,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:488,1
    - Dst: list_last
      Src: /src/frr/tests/lib/test_typelist.h:488,1
    - Dst: ts_hash_head
      Src: /src/frr/tests/lib/test_typelist.h:490,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_typelist.h:494,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:497,1
    - Dst: list_add_tail
      Src: /src/frr/tests/lib/test_typelist.h:499,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:504,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:504,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:505,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:505,1
    - Dst: ts_hash_head
      Src: /src/frr/tests/lib/test_typelist.h:506,1
    - Dst: list_swap_all
      Src: /src/frr/tests/lib/test_typelist.h:510,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:512,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:512,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:513,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:513,1
    - Dst: ts_hash_head
      Src: /src/frr/tests/lib/test_typelist.h:514,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:517,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:517,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:518,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:518,1
    - Dst: ts_hash_head
      Src: /src/frr/tests/lib/test_typelist.h:519,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:523,1
    - Dst: list_fini
      Src: /src/frr/tests/lib/test_typelist.h:525,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_typelist.h:526,1
    - Dst: ts_ref
      Src: /src/frr/tests/lib/test_typelist.h:528,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:532,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:534,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:534,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:539,1
    - Dst: IS_ATOMIC
      Src: /src/frr/tests/lib/test_typelist.h:541,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_typelist.h:543,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:543,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:545,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_typelist.h:546,1
    - Dst: list_anywhere
      Src: /src/frr/tests/lib/test_typelist.h:546,1
    - Dst: list_anywhere
      Src: /src/frr/tests/lib/test_typelist.h:548,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:550,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:554,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:555,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:560,1
    - Dst: IS_ATOMIC
      Src: /src/frr/tests/lib/test_typelist.h:562,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_typelist.h:564,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:564,1
    - Dst: list_member
      Src: /src/frr/tests/lib/test_typelist.h:566,1
    - Dst: assertf
      Src: /src/frr/tests/lib/test_typelist.h:567,1
    - Dst: list_anywhere
      Src: /src/frr/tests/lib/test_typelist.h:567,1
    - Dst: list_anywhere
      Src: /src/frr/tests/lib/test_typelist.h:569,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:571,1
    - Dst: IS_REVERSE
      Src: /src/frr/tests/lib/test_typelist.h:573,1
    - Dst: frr_rev_each
      Src: /src/frr/tests/lib/test_typelist.h:577,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:578,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:579,1
    - Dst: list_next
      Src: /src/frr/tests/lib/test_typelist.h:579,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:584,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:584,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:585,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:585,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:586,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:589,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:590,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:595,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:596,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:596,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:597,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:597,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:598,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_typelist.h:600,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_typelist.h:601,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:605,1
    - Dst: list_add_head
      Src: /src/frr/tests/lib/test_typelist.h:607,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:612,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:612,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:613,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:613,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:614,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:617,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:619,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:619,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:624,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:627,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:628,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:633,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:634,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:634,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:635,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:635,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:636,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_typelist.h:638,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/test_typelist.h:639,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:643,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:645,1
    - Dst: list_add_tail
      Src: /src/frr/tests/lib/test_typelist.h:646,1
    - Dst: list_add_head
      Src: /src/frr/tests/lib/test_typelist.h:648,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:654,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:654,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:655,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:655,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:656,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:659,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:660,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:665,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:672,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:672,1
    - Dst: list_add_head
      Src: /src/frr/tests/lib/test_typelist.h:686,1
    - Dst: list_add_tail
      Src: /src/frr/tests/lib/test_typelist.h:689,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:692,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:696,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:696,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:697,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:697,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:698,1
    - Dst: IS_ATOMIC
      Src: /src/frr/tests/lib/test_typelist.h:700,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:704,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:705,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:710,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:717,1
    - Dst: list_del
      Src: /src/frr/tests/lib/test_typelist.h:717,1
    - Dst: list_add_head
      Src: /src/frr/tests/lib/test_typelist.h:731,1
    - Dst: list_add_tail
      Src: /src/frr/tests/lib/test_typelist.h:734,1
    - Dst: prng_rand
      Src: /src/frr/tests/lib/test_typelist.h:741,1
    - Dst: list_add_after
      Src: /src/frr/tests/lib/test_typelist.h:748,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:751,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:755,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:755,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:756,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:756,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:757,1
    - Dst: list_pop
      Src: /src/frr/tests/lib/test_typelist.h:763,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:764,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:769,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:770,1
    - Dst: list_count
      Src: /src/frr/tests/lib/test_typelist.h:770,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:771,1
    - Dst: list_first
      Src: /src/frr/tests/lib/test_typelist.h:771,1
    - Dst: ts_hash
      Src: /src/frr/tests/lib/test_typelist.h:772,1
    - Dst: list_fini
      Src: /src/frr/tests/lib/test_typelist.h:774,1
    - Dst: ts_ref
      Src: /src/frr/tests/lib/test_typelist.h:775,1
    - Dst: ts_end
      Src: /src/frr/tests/lib/test_typelist.h:776,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/test_typelist.h:777,1
    - Dst: printfrr
      Src: /src/frr/tests/lib/test_typelist.h:778,1
    - Dst: str
      Src: /src/frr/tests/lib/test_typelist.h:778,1
    CyclomaticComplexity: 80
    EdgeCount: 80
    ICount: 375
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (list_count(chead) == k)
      pos:
        line_end: 284
        line_start: 284
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_const_next(chead, citem) == cprev)
      pos:
        line_end: 296
        line_start: 296
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_add(&head, &dummy) == &itm[j])
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (gteq->val >= j)
      pos:
        line_end: 416
        line_start: 416
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, &itm[j]) != NULL)
      pos:
        line_end: 533
        line_start: 533
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == k)
      pos:
        line_end: 611
        line_start: 611
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, item) != NULL)
      pos:
        line_end: 449
        line_start: 449
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) != NULL)
      pos:
        line_end: 517
        line_start: 517
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, item) != NULL)
      pos:
        line_end: 671
        line_start: 671
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (item->scratchpad != 0)
      pos:
        line_end: 763
        line_start: 763
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, &dummy) != NULL)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == k)
      pos:
        line_end: 653
        line_start: 653
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (l == k)
      pos:
        line_end: 768
        line_start: 768
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) == NULL)
      pos:
        line_end: 634
        line_start: 634
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == k)
      pos:
        line_end: 516
        line_start: 516
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(chead) == k)
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (0)
      pos:
        line_end: 691
        line_start: 691
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_next(&head, item) == prev)
      pos:
        line_end: 578
        line_start: 578
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) != NULL)
      pos:
        line_end: 696
        line_start: 696
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: "(list_next(&head, &itm[j]) == &dummy ||\n\t\t\t\tlist_next(&head,
        &dummy) == &itm[j])"
      pos:
        line_end: 373
        line_start: 372
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (!cprev || cprev->val < citem->val)
      pos:
        line_end: 276
        line_start: 276
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (!cprev || cprev->val > citem->val)
      pos:
        line_end: 295
        line_start: 295
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_find(&head, &dummy) == &itm[j])
      pos:
        line_end: 314
        line_start: 314
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&other) == l)
      pos:
        line_end: 511
        line_start: 511
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&other))
      pos:
        line_end: 512
        line_start: 512
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (tmp == gteq)
      pos:
        line_end: 410
        line_start: 410
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == k)
      pos:
        line_end: 468
        line_start: 468
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (item->scratchpad != 0)
      pos:
        line_end: 577
        line_start: 577
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) != NULL)
      pos:
        line_end: 504
        line_start: 504
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (item->scratchpad != 0)
      pos:
        line_end: 627
        line_start: 627
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: "(list_next(&head, lt) == &itm[j] ||\n\t\t\t\t\tlist_next(&head,
        lt) == &dummy)"
      pos:
        line_end: 383
        line_start: 382
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (l + list_count(&head) == k)
      pos:
        line_end: 454
        line_start: 454
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) != NULL)
      pos:
        line_end: 469
        line_start: 469
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == 0)
      pos:
        line_end: 481
        line_start: 481
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (!list_first(&head))
      pos:
        line_end: 482
        line_start: 482
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == i)
      pos:
        line_end: 584
        line_start: 584
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) == NULL)
      pos:
        line_end: 770
        line_start: 770
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == k)
      pos:
        line_end: 754
        line_start: 754
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) == NULL)
      pos:
        line_end: 596
        line_start: 596
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == 0)
      pos:
        line_end: 769
        line_start: 769
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (prev->val < item->val)
      pos:
        line_end: 355
        line_start: 355
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_add(&head, &dummy) == NULL)
      pos:
        line_end: 325
        line_start: 325
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (gteq == &itm[j] || gteq == &dummy)
      pos:
        line_end: 380
        line_start: 380
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, &itm[j]) != NULL)
      pos:
        line_end: 429
        line_start: 429
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (!list_last(&head))
      pos:
        line_end: 486
        line_start: 486
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (item->scratchpad != 0)
      pos:
        line_end: 589
        line_start: 589
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) != NULL)
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) == prev)
      pos:
        line_end: 583
        line_start: 583
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_last(&head) != NULL)
      pos:
        line_end: 471
        line_start: 471
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (prev->scratchpad != 0)
      pos:
        line_end: 554
        line_start: 554
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (l == k)
      pos:
        line_end: 594
        line_start: 594
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, item) != NULL)
      pos:
        line_end: 716
        line_start: 716
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) != NULL)
      pos:
        line_end: 654
        line_start: 654
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_const_prev(chead, citem) == cprev)
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (lt->val < j)
      pos:
        line_end: 408
        line_start: 408
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (l + list_count(&head) == k)
      pos:
        line_end: 434
        line_start: 434
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == l)
      pos:
        line_end: 503
        line_start: 503
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == 0)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (0)
      pos:
        line_end: 750
        line_start: 750
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (prev->val < item->val)
      pos:
        line_end: 338
        line_start: 338
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&other) == k)
      pos:
        line_end: 483
        line_start: 483
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == k)
      pos:
        line_end: 695
        line_start: 695
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, &itm[j]) != NULL)
      pos:
        line_end: 618
        line_start: 618
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_del(&head, &dummy) != NULL)
      pos:
        line_end: 389
        line_start: 389
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (!tmp || tmp->val >= j)
      pos:
        line_end: 411
        line_start: 411
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_last(&other) != NULL)
      pos:
        line_end: 487
        line_start: 487
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (cprev == list_const_last(chead))
      pos:
        line_end: 286
        line_start: 286
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (cprev == list_const_first(chead))
      pos:
        line_end: 302
        line_start: 302
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&other) != NULL)
      pos:
        line_end: 484
        line_start: 484
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_next(&head, &dummy)->val > j)
      pos:
        line_end: 388
        line_start: 388
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: "(list_first(&head) == &itm[j] ||\n\t\t\t\t\tlist_first(&head) ==
        &dummy)"
      pos:
        line_end: 386
        line_start: 385
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_count(&head) == 0)
      pos:
        line_end: 595
        line_start: 595
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_first(&head) != NULL)
      pos:
        line_end: 755
        line_start: 755
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (gteq == list_first(&head))
      pos:
        line_end: 413
        line_start: 413
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (item->scratchpad != 0)
      pos:
        line_end: 446
        line_start: 446
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (l == k)
      pos:
        line_end: 632
        line_start: 632
        source_file: /src/frr/tests/lib/test_typelist.h
    constantsTouched: []
    func_position:
      end: 779
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 779
    functionName: frr_each
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 12
    functionsReached:
    - list_pop
    - assertf
    - IS_HASH
    - list_swap_all
    - ts_hash_head
    - list_next
    - list_count
    - list_const_last
    - frr_each_safe
    - list_find
    - list_del
    - list_add_tail
    - list_member
    - prng_new
    - memset
    - printfrr
    - IS_UNIQ
    - list_last
    - ts_hashx
    - IS_HEAP
    - assert
    - prng_free
    - prng_rand
    - list_init
    - list_add_head
    - list_fini
    - IS_ATOMIC
    - str
    - list_find_lt
    - ts_end
    - list_const_first
    - list_add_after
    - list_const_next
    - list_find_gteq
    - list_first
    - frr_rev_each
    - ts_ref
    - list_const_prev
    - ts_hash
    - list_anywhere
    - list_add
    - IS_REVERSE
    linkageType: ''
    returnType: void
    signature: void frr_each(list, chead, citem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_HASH
      Src: /src/frr/tests/lib/test_typelist.h:273,1
    - Dst: IS_HEAP
      Src: /src/frr/tests/lib/test_typelist.h:273,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:277,1
    - Dst: IS_REVERSE
      Src: /src/frr/tests/lib/test_typelist.h:278,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:279,1
    - Dst: list_const_prev
      Src: /src/frr/tests/lib/test_typelist.h:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!cprev || cprev->val < citem->val)
      pos:
        line_end: 276
        line_start: 276
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_const_prev(chead, citem) == cprev)
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/frr/tests/lib/test_typelist.h
    constantsTouched: []
    func_position:
      end: 284
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 284
    functionName: frr_each
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 12
    functionsReached:
    - assert
    - list_const_prev
    - IS_HASH
    - IS_HEAP
    - IS_REVERSE
    linkageType: ''
    returnType: void
    signature: void frr_each(list_const, chead, citem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:296,1
    - Dst: assert
      Src: /src/frr/tests/lib/test_typelist.h:297,1
    - Dst: list_const_next
      Src: /src/frr/tests/lib/test_typelist.h:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!cprev || cprev->val > citem->val)
      pos:
        line_end: 295
        line_start: 295
        source_file: /src/frr/tests/lib/test_typelist.h
    - condition: (list_const_next(chead, citem) == cprev)
      pos:
        line_end: 296
        line_start: 296
        source_file: /src/frr/tests/lib/test_typelist.h
    constantsTouched: []
    func_position:
      end: 301
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 301
    functionName: frr_rev_each
    functionSourceFile: /src/frr/tests/lib/test_typelist.h
    functionUses: 1
    functionsReached:
    - list_const_next
    - assert
    linkageType: ''
    returnType: void
    signature: void frr_rev_each(list_const, chead, citem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/tests/lib/cxxcompat.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct foo*
    - struct foo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: foocmp
    functionSourceFile: /src/frr/tests/lib/cxxcompat.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int foocmp(const struct foo *a, const struct foo *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: main
    functionSourceFile: /src/frr/tests/lib/cxxcompat.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/tests/lib/cli/test_cli.c:48,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:50,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:51,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:52,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:53,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:54,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:55,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:56,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:57,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:58,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:59,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:60,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:61,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:62,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:63,1
    - Dst: uninstall_element
      Src: /src/frr/tests/lib/cli/test_cli.c:65,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:66,1
    - Dst: uninstall_element
      Src: /src/frr/tests/lib/cli/test_cli.c:69,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:70,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:72,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:73,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:74,1
    - Dst: install_element
      Src: /src/frr/tests/lib/cli/test_cli.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 76
    functionName: test_init
    functionSourceFile: /src/frr/tests/lib/cli/test_cli.c
    functionUses: 2
    functionsReached:
    - install_element
    - uninstall_element
    - strtoul
    linkageType: ''
    returnType: void
    signature: void test_init(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/tests/lib/cli/common_cli.c:26,1
    - Dst: vty_out
      Src: /src/frr/tests/lib/cli/common_cli.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - descr
    - argc
    - argv
    argTypes:
    - struct vty*
    - char*
    - int
    - struct cmd_token*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 33
    functionName: dump_args
    functionSourceFile: /src/frr/tests/lib/cli/common_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int dump_args(struct vty *vty, const char *descr, int argc,\n\t      struct
      cmd_token *argv[])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/cli/common_cli.c:37,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/lib/cli/common_cli.c:38,1
    - Dst: vty_terminate
      Src: /src/frr/tests/lib/cli/common_cli.c:39,1
    - Dst: nb_terminate
      Src: /src/frr/tests/lib/cli/common_cli.c:40,1
    - Dst: yang_terminate
      Src: /src/frr/tests/lib/cli/common_cli.c:41,1
    - Dst: event_master_free
      Src: /src/frr/tests/lib/cli/common_cli.c:42,1
    - Dst: log_memstats
      Src: /src/frr/tests/lib/cli/common_cli.c:44,1
    - Dst: exit
      Src: /src/frr/tests/lib/cli/common_cli.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - isexit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: vty_do_exit
    functionSourceFile: /src/frr/tests/lib/cli/common_cli.c
    functionUses: 0
    functionsReached:
    - exit
    - nb_terminate
    - event_master_free
    - log_memstats
    - vty_terminate
    - printf
    - yang_terminate
    - cmd_terminate
    linkageType: ''
    returnType: void
    signature: void vty_do_exit(int isexit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/tests/lib/cli/common_cli.c:59,1
    - Dst: event_master_create
      Src: /src/frr/tests/lib/cli/common_cli.c:62,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/cli/common_cli.c:64,1
    - Dst: cmd_init
      Src: /src/frr/tests/lib/cli/common_cli.c:67,1
    - Dst: cmd_hostname_set
      Src: /src/frr/tests/lib/cli/common_cli.c:68,1
    - Dst: cmd_domainname_set
      Src: /src/frr/tests/lib/cli/common_cli.c:69,1
    - Dst: vty_init
      Src: /src/frr/tests/lib/cli/common_cli.c:71,1
    - Dst: lib_cmd_init
      Src: /src/frr/tests/lib/cli/common_cli.c:72,1
    - Dst: nb_init
      Src: /src/frr/tests/lib/cli/common_cli.c:77,1
    - Dst: test_init
      Src: /src/frr/tests/lib/cli/common_cli.c:79,1
    - Dst: vty_stdio
      Src: /src/frr/tests/lib/cli/common_cli.c:81,1
    - Dst: event_fetch
      Src: /src/frr/tests/lib/cli/common_cli.c:84,1
    - Dst: event_call
      Src: /src/frr/tests/lib/cli/common_cli.c:85,1
    - Dst: exit
      Src: /src/frr/tests/lib/cli/common_cli.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 89
    functionName: main
    functionSourceFile: /src/frr/tests/lib/cli/common_cli.c
    functionUses: 2
    functionsReached:
    - cmd_domainname_set
    - exit
    - test_init
    - event_call
    - lib_cmd_init
    - cmd_init
    - cmd_hostname_set
    - event_master_create
    - nb_init
    - zlog_aux_init
    - vty_init
    - event_fetch
    - umask
    - vty_stdio
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/tests/lib/cli/test_commands.c:158,1
    - Dst: abort
      Src: /src/frr/tests/lib/cli/test_commands.c:160,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/cli/test_commands.c:165,1
    - Dst: abort
      Src: /src/frr/tests/lib/cli/test_commands.c:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - cmd
    - vty
    - argc
    - argv
    argTypes:
    - struct cmd_element*
    - struct vty*
    - int
    - struct cmd_token*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 173
    functionName: test_callback
    functionSourceFile: /src/frr/tests/lib/cli/test_commands.c
    functionUses: 0
    functionsReached:
    - abort
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int test_callback(const struct cmd_element *cmd, struct vty *vty,\n\t\t\t
      int argc, struct cmd_token *argv[])"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector_init
      Src: /src/frr/tests/lib/cli/test_commands.c:179,1
    - Dst: fgets
      Src: /src/frr/tests/lib/cli/test_commands.c:181,1
    - Dst: strlen
      Src: /src/frr/tests/lib/cli/test_commands.c:182,1
    - Dst: strlen
      Src: /src/frr/tests/lib/cli/test_commands.c:183,1
    - Dst: vector_set
      Src: /src/frr/tests/lib/cli/test_commands.c:186,1
    - Dst: XSTRDUP
      Src: /src/frr/tests/lib/cli/test_commands.c:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: test_load
    functionSourceFile: /src/frr/tests/lib/cli/test_commands.c
    functionUses: 0
    functionsReached:
    - strlen
    - vector_init
    - vector_set
    - fgets
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void test_load(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cmd_init
      Src: /src/frr/tests/lib/cli/test_commands.c:197,1
    - Dst: nb_init
      Src: /src/frr/tests/lib/cli/test_commands.c:198,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:200,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:201,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:202,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:203,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:204,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:205,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:206,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:207,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:208,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:209,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:210,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:211,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:212,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:213,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:214,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:215,1
    - Dst: install_node
      Src: /src/frr/tests/lib/cli/test_commands.c:216,1
    - Dst: test_init_cmd
      Src: /src/frr/tests/lib/cli/test_commands.c:218,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:220,1
    - Dst: vector_slot
      Src: /src/frr/tests/lib/cli/test_commands.c:221,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:222,1
    - Dst: vector_slot
      Src: /src/frr/tests/lib/cli/test_commands.c:223,1
    - Dst: test_load
      Src: /src/frr/tests/lib/cli/test_commands.c:228,1
    - Dst: vty_init_vtysh
      Src: /src/frr/tests/lib/cli/test_commands.c:229,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 230
    functionName: test_init
    functionSourceFile: /src/frr/tests/lib/cli/test_commands.c
    functionUses: 3
    functionsReached:
    - install_node
    - test_load
    - cmd_init
    - vector_active
    - vector_slot
    - test_init_cmd
    - vty_init_vtysh
    - nb_init
    linkageType: ''
    returnType: void
    signature: void test_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_terminate
      Src: /src/frr/tests/lib/cli/test_commands.c:236,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:237,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/cli/test_commands.c:238,1
    - Dst: vector_slot
      Src: /src/frr/tests/lib/cli/test_commands.c:238,1
    - Dst: vector_free
      Src: /src/frr/tests/lib/cli/test_commands.c:239,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/lib/cli/test_commands.c:240,1
    - Dst: nb_terminate
      Src: /src/frr/tests/lib/cli/test_commands.c:241,1
    - Dst: yang_terminate
      Src: /src/frr/tests/lib/cli/test_commands.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 243
    functionName: test_terminate
    functionSourceFile: /src/frr/tests/lib/cli/test_commands.c
    functionUses: 0
    functionsReached:
    - vector_free
    - vector_active
    - vector_slot
    - nb_terminate
    - vty_terminate
    - XFREE
    - yang_terminate
    - cmd_terminate
    linkageType: ''
    returnType: void
    signature: void test_terminate(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: prng_fuzz
      Src: /src/frr/tests/lib/cli/test_commands.c:260,1
    - Dst: cmd_make_strvec
      Src: /src/frr/tests/lib/cli/test_commands.c:264,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:270,1
    - Dst: vector_slot
      Src: /src/frr/tests/lib/cli/test_commands.c:271,1
    - Dst: vector_unset
      Src: /src/frr/tests/lib/cli/test_commands.c:276,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:276,1
    - Dst: cmd_execute_command
      Src: /src/frr/tests/lib/cli/test_commands.c:281,1
    - Dst: printf
      Src: /src/frr/tests/lib/cli/test_commands.c:284,1
    - Dst: cmd_execute_command_strict
      Src: /src/frr/tests/lib/cli/test_commands.c:291,1
    - Dst: printf
      Src: /src/frr/tests/lib/cli/test_commands.c:293,1
    - Dst: isspace
      Src: /src/frr/tests/lib/cli/test_commands.c:298,1
    - Dst: strlen
      Src: /src/frr/tests/lib/cli/test_commands.c:299,1
    - Dst: vector_set
      Src: /src/frr/tests/lib/cli/test_commands.c:300,1
    - Dst: cmd_complete_command
      Src: /src/frr/tests/lib/cli/test_commands.c:305,1
    - Dst: printf
      Src: /src/frr/tests/lib/cli/test_commands.c:307,1
    - Dst: printf
      Src: /src/frr/tests/lib/cli/test_commands.c:311,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/cli/test_commands.c:312,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/cli/test_commands.c:314,1
    - Dst: cmd_describe_command
      Src: /src/frr/tests/lib/cli/test_commands.c:318,1
    - Dst: printf
      Src: /src/frr/tests/lib/cli/test_commands.c:320,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:323,1
    - Dst: vector_slot
      Src: /src/frr/tests/lib/cli/test_commands.c:326,1
    - Dst: printf
      Src: /src/frr/tests/lib/cli/test_commands.c:327,1
    - Dst: vector_free
      Src: /src/frr/tests/lib/cli/test_commands.c:330,1
    - Dst: cmd_free_strvec
      Src: /src/frr/tests/lib/cli/test_commands.c:333,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 6
    argNames:
    - prng
    - vty
    - cmd
    - edit_dist
    - node_index
    - verbose
    argTypes:
    - struct prng*
    - struct vty*
    - char*
    - unsigned int
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 334
    functionName: test_run
    functionSourceFile: /src/frr/tests/lib/cli/test_commands.c
    functionUses: 0
    functionsReached:
    - cmd_complete_command
    - vector_free
    - strlen
    - cmd_make_strvec
    - cmd_execute_command_strict
    - prng_fuzz
    - vector_active
    - vector_slot
    - vector_unset
    - cmd_free_strvec
    - vector_set
    - isspace
    - cmd_describe_command
    - cmd_execute_command
    - printf
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void test_run(struct prng *prng, struct vty *vty, const char *cmd,\n\t\t
      \    unsigned int edit_dist, unsigned int node_index,\n\t\t     int verbose)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/frr/tests/lib/cli/test_commands.c:353,1
    - Dst: atoi
      Src: /src/frr/tests/lib/cli/test_commands.c:356,1
    - Dst: atoi
      Src: /src/frr/tests/lib/cli/test_commands.c:359,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/cli/test_commands.c:365,1
    - Dst: exit
      Src: /src/frr/tests/lib/cli/test_commands.c:368,1
    - Dst: test_init
      Src: /src/frr/tests/lib/cli/test_commands.c:373,1
    - Dst: prng_new
      Src: /src/frr/tests/lib/cli/test_commands.c:374,1
    - Dst: vty_new
      Src: /src/frr/tests/lib/cli/test_commands.c:376,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/cli/test_commands.c:379,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:379,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:380,1
    - Dst: test_run
      Src: /src/frr/tests/lib/cli/test_commands.c:388,1
    - Dst: vector_slot
      Src: /src/frr/tests/lib/cli/test_commands.c:389,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/cli/test_commands.c:392,1
    - Dst: vector_active
      Src: /src/frr/tests/lib/cli/test_commands.c:393,1
    - Dst: fprintf
      Src: /src/frr/tests/lib/cli/test_commands.c:395,1
    - Dst: vty_close
      Src: /src/frr/tests/lib/cli/test_commands.c:397,1
    - Dst: prng_free
      Src: /src/frr/tests/lib/cli/test_commands.c:398,1
    - Dst: test_terminate
      Src: /src/frr/tests/lib/cli/test_commands.c:399,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 401
    functionName: main
    functionSourceFile: /src/frr/tests/lib/cli/test_commands.c
    functionUses: 2
    functionsReached:
    - exit
    - test_init
    - prng_new
    - getopt
    - vector_active
    - vector_slot
    - fprintf
    - vty_new
    - test_run
    - vty_close
    - atoi
    - prng_free
    - test_terminate
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - cmdstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: DUMMY_DEFUN
    functionSourceFile: /src/frr/tests/lib/cli/common_cli.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUMMY_DEFUN(name, cmdstr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:44,1
    - Dst: listnextnode
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: frr_test_module_vrfs_vrf_get_next
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - listhead
    linkageType: ''
    returnType: void
    signature: 'void *

      frr_test_module_vrfs_vrf_get_next(struct nb_cb_get_next_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:55,1
    - Dst: strlcpy
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: frr_test_module_vrfs_vrf_get_keys
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 0
    functionsReached:
    - listgetdata
    - strlcpy
    linkageType: ''
    returnType: int
    signature: int frr_test_module_vrfs_vrf_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:72,1
    - Dst: strmatch
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:73,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:88,1
    - Dst: yang_data_new_string
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:89,1
    - Dst: frr_test_module_vrfs_vrf_interfaces_interface_get_elem
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:95,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:100,1
    - Dst: yang_data_new_string
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:101,1
    - Dst: frr_test_module_vrfs_vrf_interfaces_interface_get_next
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:104,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:110,1
    - Dst: listhead
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:112,1
    - Dst: listnextnode
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:114,1
    - Dst: frr_test_module_vrfs_vrf_routes_route_get_next
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:123,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:128,1
    - Dst: listhead
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:130,1
    - Dst: listnextnode
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:132,1
    - Dst: frr_test_module_vrfs_vrf_routes_route_prefix_get_elem
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:140,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:145,1
    - Dst: yang_data_new_ipv4p
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:146,1
    - Dst: frr_test_module_vrfs_vrf_routes_route_next_hop_get_elem
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:153,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:158,1
    - Dst: yang_data_new_ipv4
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:159,1
    - Dst: frr_test_module_vrfs_vrf_routes_route_interface_get_elem
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:166,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:171,1
    - Dst: yang_data_new_string
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:172,1
    - Dst: frr_test_module_vrfs_vrf_routes_route_metric_get_elem
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:178,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:183,1
    - Dst: yang_data_new_uint8
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:184,1
    - Dst: frr_test_module_vrfs_vrf_routes_route_active_get_elem
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:190,1
    - Dst: listgetdata
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:195,1
    - Dst: yang_data_new
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:197,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:262,1
    - Dst: inet_pton
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:263,1
    - Dst: list_new
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:265,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:271,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:272,1
    - Dst: list_new
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:273,1
    - Dst: list_new
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:274,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:281,1
    - Dst: XSTRDUP
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:282,1
    - Dst: listnode_add
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:283,1
    - Dst: XCALLOC
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:290,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:292,1
    - Dst: htonl
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:295,1
    - Dst: ntohl
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:295,1
    - Dst: memcpy
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:297,1
    - Dst: htonl
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:300,1
    - Dst: ntohl
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:300,1
    - Dst: snprintf
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:302,1
    - Dst: listnode_add
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:306,1
    - Dst: listnode_add
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:309,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:317,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:324,1
    - Dst: list_delete
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:332,1
    - Dst: list_delete
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:334,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:335,1
    - Dst: list_delete
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:341,1
    - Dst: printf
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:346,1
    - Dst: delete_data
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:348,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:350,1
    - Dst: vty_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:351,1
    - Dst: nb_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:352,1
    - Dst: yang_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:353,1
    - Dst: event_master_free
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:354,1
    - Dst: log_memstats
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:356,1
    - Dst: exit
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:358,1
    - Dst: atoi
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:370,1
    - Dst: atoi
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:372,1
    - Dst: atoi
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:374,1
    - Dst: umask
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:377,1
    - Dst: event_master_create
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:380,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:382,1
    - Dst: cmd_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:385,1
    - Dst: cmd_hostname_set
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:386,1
    - Dst: vty_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:387,1
    - Dst: lib_cmd_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:388,1
    - Dst: nb_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:389,1
    - Dst: array_size
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:389,1
    - Dst: create_data
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:392,1
    - Dst: vty_stdio
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:395,1
    - Dst: event_fetch
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:398,1
    - Dst: event_call
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:399,1
    - Dst: exit
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:402,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 74
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 403
    functionName: frr_test_module_vrfs_vrf_lookup_entry
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 0
    functionsReached:
    - frr_test_module_vrfs_vrf_routes_route_next_hop_get_elem
    - list_delete
    - frr_test_module_vrfs_vrf_routes_route_metric_get_elem
    - lib_cmd_init
    - listhead
    - listnode_add
    - event_master_free
    - vty_terminate
    - yang_data_new_uint8
    - htonl
    - delete_data
    - yang_data_new
    - yang_data_new_ipv4
    - yang_terminate
    - umask
    - strmatch
    - exit
    - snprintf
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - cmd_init
    - nb_terminate
    - create_data
    - array_size
    - frr_test_module_vrfs_vrf_interfaces_interface_get_next
    - printf
    - listgetdata
    - event_call
    - ntohl
    - event_fetch
    - listnextnode
    - yang_data_new_ipv4p
    - cmd_hostname_set
    - event_master_create
    - frr_test_module_vrfs_vrf_routes_route_active_get_elem
    - inet_pton
    - nb_init
    - vty_init
    - XFREE
    - frr_test_module_vrfs_vrf_routes_route_interface_get_elem
    - atoi
    - XSTRDUP
    - memcpy
    - cmd_terminate
    - str2prefix_ipv4
    - frr_test_module_vrfs_vrf_routes_route_prefix_get_elem
    - frr_test_module_vrfs_vrf_routes_route_get_next
    - zlog_aux_init
    - frr_test_module_vrfs_vrf_interfaces_interface_get_elem
    - list_new
    - yang_data_new_string
    - vty_stdio
    - log_memstats
    linkageType: ''
    returnType: void
    signature: 'void *

      frr_test_module_vrfs_vrf_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 318
    functionName: interface_delete
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void interface_delete(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 325
    functionName: route_delete
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_delete(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:332,1
    - Dst: list_delete
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:334,1
    - Dst: XFREE
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 336
    functionName: vrf_delete
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vrf_delete(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: delete_data
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 1
    functionsReached:
    - list_delete
    linkageType: ''
    returnType: void
    signature: void delete_data(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:346,1
    - Dst: delete_data
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:348,1
    - Dst: cmd_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:350,1
    - Dst: vty_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:351,1
    - Dst: nb_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:352,1
    - Dst: yang_terminate
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:353,1
    - Dst: event_master_free
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:354,1
    - Dst: log_memstats
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:356,1
    - Dst: exit
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - isexit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 359
    functionName: vty_do_exit
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 0
    functionsReached:
    - exit
    - nb_terminate
    - event_master_free
    - log_memstats
    - vty_terminate
    - printf
    - delete_data
    - yang_terminate
    - cmd_terminate
    linkageType: ''
    returnType: void
    signature: void vty_do_exit(int isexit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:370,1
    - Dst: atoi
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:372,1
    - Dst: atoi
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:374,1
    - Dst: umask
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:377,1
    - Dst: event_master_create
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:380,1
    - Dst: zlog_aux_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:382,1
    - Dst: cmd_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:385,1
    - Dst: cmd_hostname_set
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:386,1
    - Dst: vty_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:387,1
    - Dst: lib_cmd_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:388,1
    - Dst: nb_init
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:389,1
    - Dst: array_size
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:389,1
    - Dst: create_data
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:392,1
    - Dst: vty_stdio
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:395,1
    - Dst: event_fetch
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:398,1
    - Dst: event_call
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:399,1
    - Dst: exit
      Src: /src/frr/tests/lib/northbound/test_oper_data.c:402,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 403
    functionName: main
    functionSourceFile: /src/frr/tests/lib/northbound/test_oper_data.c
    functionUses: 2
    functionsReached:
    - exit
    - event_call
    - lib_cmd_init
    - cmd_init
    - vty_stdio
    - cmd_hostname_set
    - event_master_create
    - nb_init
    - zlog_aux_init
    - array_size
    - vty_init
    - create_data
    - event_fetch
    - umask
    - atoi
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/frr/tests/ospf6d/test_lsdb.c:32,1
    - Dst: memset
      Src: /src/frr/tests/ospf6d/test_lsdb.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 40
    functionName: lsa_check_resize
    functionSourceFile: /src/frr/tests/ospf6d/test_lsdb.c
    functionUses: 0
    functionsReached:
    - realloc
    - memset
    linkageType: ''
    returnType: void
    signature: void lsa_check_resize(size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/tests/ospf6d/test_lsdb.c:109,1
    - Dst: inet_ntop
      Src: /src/frr/tests/ospf6d/test_lsdb.c:112,1
    - Dst: inet_ntop
      Src: /src/frr/tests/ospf6d/test_lsdb.c:113,1
    - Dst: vty_out
      Src: /src/frr/tests/ospf6d/test_lsdb.c:115,1
    - Dst: ntohs
      Src: /src/frr/tests/ospf6d/test_lsdb.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - lsa
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 117
    functionName: lsa_show_oneline
    functionSourceFile: /src/frr/tests/ospf6d/test_lsdb.c
    functionUses: 0
    functionsReached:
    - ntohs
    - inet_ntop
    - vty_out
    linkageType: ''
    returnType: void
    signature: void lsa_show_oneline(struct vty *vty, struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_init
      Src: /src/frr/tests/ospf6d/test_lsdb.c:231,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:233,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:234,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:235,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:237,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:238,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:240,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:241,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:242,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:243,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:244,1
    - Dst: install_element
      Src: /src/frr/tests/ospf6d/test_lsdb.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 246
    functionName: test_init
    functionSourceFile: /src/frr/tests/ospf6d/test_lsdb.c
    functionUses: 4
    functionsReached:
    - install_element
    - ospf6_lsa_init
    linkageType: ''
    returnType: void
    signature: void test_init(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/tests/helpers/c/main.c:38,1
    - Dst: printf
      Src: /src/frr/tests/helpers/c/main.c:40,1
    - Dst: event_add_timer
      Src: /src/frr/tests/helpers/c/main.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: test_timer
    functionSourceFile: /src/frr/tests/helpers/c/main.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - printf
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void test_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer
      Src: /src/frr/tests/helpers/c/main.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: test_timer_init
    functionSourceFile: /src/frr/tests/helpers/c/main.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void test_timer_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/tests/helpers/c/main.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: test_vty_init
    functionSourceFile: /src/frr/tests/helpers/c/main.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void test_vty_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tests/helpers/c/main.c:58,1
    - Dst: printf
      Src: /src/frr/tests/helpers/c/main.c:61,1
    - Dst: exit
      Src: /src/frr/tests/helpers/c/main.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - progname
    - status
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 74
    functionName: usage
    functionSourceFile: /src/frr/tests/helpers/c/main.c
    functionUses: 3
    functionsReached:
    - fprintf
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void usage(char *progname, int status)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/tests/helpers/c/main.c:89,1
    - Dst: strrchr
      Src: /src/frr/tests/helpers/c/main.c:92,1
    - Dst: event_master_create
      Src: /src/frr/tests/helpers/c/main.c:95,1
    - Dst: getopt_long
      Src: /src/frr/tests/helpers/c/main.c:100,1
    - Dst: strcmp
      Src: /src/frr/tests/helpers/c/main.c:119,1
    - Dst: atoi
      Src: /src/frr/tests/helpers/c/main.c:123,1
    - Dst: print_version
      Src: /src/frr/tests/helpers/c/main.c:127,1
    - Dst: exit
      Src: /src/frr/tests/helpers/c/main.c:128,1
    - Dst: usage
      Src: /src/frr/tests/helpers/c/main.c:131,1
    - Dst: usage
      Src: /src/frr/tests/helpers/c/main.c:134,1
    - Dst: cmd_init
      Src: /src/frr/tests/helpers/c/main.c:140,1
    - Dst: vty_init
      Src: /src/frr/tests/helpers/c/main.c:141,1
    - Dst: lib_cmd_init
      Src: /src/frr/tests/helpers/c/main.c:142,1
    - Dst: nb_init
      Src: /src/frr/tests/helpers/c/main.c:143,1
    - Dst: test_vty_init
      Src: /src/frr/tests/helpers/c/main.c:146,1
    - Dst: daemon
      Src: /src/frr/tests/helpers/c/main.c:149,1
    - Dst: fprintf
      Src: /src/frr/tests/helpers/c/main.c:150,1
    - Dst: strerror
      Src: /src/frr/tests/helpers/c/main.c:150,1
    - Dst: exit
      Src: /src/frr/tests/helpers/c/main.c:151,1
    - Dst: vty_serv_start
      Src: /src/frr/tests/helpers/c/main.c:155,1
    - Dst: usage
      Src: /src/frr/tests/helpers/c/main.c:159,1
    - Dst: vty_read_config
      Src: /src/frr/tests/helpers/c/main.c:160,1
    - Dst: test_timer_init
      Src: /src/frr/tests/helpers/c/main.c:162,1
    - Dst: test_init
      Src: /src/frr/tests/helpers/c/main.c:164,1
    - Dst: event_fetch
      Src: /src/frr/tests/helpers/c/main.c:167,1
    - Dst: event_call
      Src: /src/frr/tests/helpers/c/main.c:168,1
    - Dst: exit
      Src: /src/frr/tests/helpers/c/main.c:171,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 172
    functionName: main
    functionSourceFile: /src/frr/tests/helpers/c/main.c
    functionUses: 2
    functionsReached:
    - test_init
    - print_version
    - lib_cmd_init
    - umask
    - exit
    - cmd_init
    - test_vty_init
    - fprintf
    - getopt_long
    - event_call
    - test_timer_init
    - event_master_create
    - nb_init
    - vty_read_config
    - vty_init
    - atoi
    - strerror
    - strcmp
    - usage
    - strrchr
    - daemon
    - vty_serv_start
    - event_fetch
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/tests/helpers/c/prng.c:27,1
    - Dst: assert
      Src: /src/frr/tests/helpers/c/prng.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - seed
    argTypes:
    - unsigned long long
    assertStmts:
    - condition: (rv)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/frr/tests/helpers/c/prng.c
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: prng_new
    functionSourceFile: /src/frr/tests/helpers/c/prng.c
    functionUses: 8
    functionsReached:
    - assert
    - calloc
    linkageType: ''
    returnType: struct prng
    signature: struct prng *prng_new(unsigned long long seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - prng
    argTypes:
    - struct prng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: prng_rand
    functionSourceFile: /src/frr/tests/helpers/c/prng.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int prng_rand(struct prng *prng)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/tests/helpers/c/prng.c:58,1
    - Dst: strlen
      Src: /src/frr/tests/helpers/c/prng.c:58,1
    - Dst: strncpy
      Src: /src/frr/tests/helpers/c/prng.c:60,1
    - Dst: strlen
      Src: /src/frr/tests/helpers/c/prng.c:61,1
    - Dst: prng_rand
      Src: /src/frr/tests/helpers/c/prng.c:64,1
    - Dst: strlen
      Src: /src/frr/tests/helpers/c/prng.c:64,1
    - Dst: prng_rand
      Src: /src/frr/tests/helpers/c/prng.c:65,1
    - Dst: prng_rand
      Src: /src/frr/tests/helpers/c/prng.c:70,1
    - Dst: memmove
      Src: /src/frr/tests/helpers/c/prng.c:75,1
    - Dst: strlen
      Src: /src/frr/tests/helpers/c/prng.c:76,1
    - Dst: assert
      Src: /src/frr/tests/helpers/c/prng.c:80,1
    - Dst: strlen
      Src: /src/frr/tests/helpers/c/prng.c:80,1
    - Dst: memmove
      Src: /src/frr/tests/helpers/c/prng.c:82,1
    - Dst: strlen
      Src: /src/frr/tests/helpers/c/prng.c:83,1
    - Dst: prng_rand
      Src: /src/frr/tests/helpers/c/prng.c:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - prng
    - string
    - charset
    - operations
    argTypes:
    - struct prng*
    - char*
    - char*
    - unsigned int
    assertStmts:
    - condition: (strlen(string) < sizeof(buf))
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/frr/tests/helpers/c/prng.c
    - condition: (strlen(buf) + 1 < sizeof(buf))
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/frr/tests/helpers/c/prng.c
    constantsTouched: []
    func_position:
      end: 90
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 90
    functionName: prng_fuzz
    functionSourceFile: /src/frr/tests/helpers/c/prng.c
    functionUses: 1
    functionsReached:
    - prng_rand
    - strlen
    - memmove
    - strncpy
    - assert
    linkageType: ''
    returnType: char
    signature: "char *prng_fuzz(struct prng *prng, const char *string,\n\t\t      const
      char *charset, unsigned int operations)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/tests/helpers/c/prng.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prng
    argTypes:
    - struct prng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: prng_free
    functionSourceFile: /src/frr/tests/helpers/c/prng.c
    functionUses: 5
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void prng_free(struct prng *prng)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: fpm_msg_align
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t fpm_msg_align(size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: COMPILE_ASSERT
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ASSERT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data_len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: fpm_data_len_to_msg_len
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t fpm_data_len_to_msg_len(size_t data_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - fpm_msg_hdr_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: fpm_msg_data
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *fpm_msg_data(fpm_msg_hdr_t *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/fpm/fpm.h:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - fpm_msg_hdr_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: fpm_msg_len
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: size_t
    signature: size_t fpm_msg_len(const fpm_msg_hdr_t *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fpm_msg_len
      Src: /src/frr/fpm/fpm.h:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - fpm_msg_hdr_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: fpm_msg_data_len
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached:
    - fpm_msg_len
    linkageType: ''
    returnType: size_t
    signature: size_t fpm_msg_data_len(const fpm_msg_hdr_t *hdr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fpm_msg_len
      Src: /src/frr/fpm/fpm.h:202,1
    - Dst: assert
      Src: /src/frr/fpm/fpm.h:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - hdr
    - len
    argTypes:
    - fpm_msg_hdr_t*
    - size_t*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 205
        line_start: 205
        source_file: /src/frr/fpm/fpm.h
    constantsTouched: []
    func_position:
      end: 213
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 213
    functionName: fpm_msg_next
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached:
    - fpm_msg_len
    - assert
    linkageType: ''
    returnType: fpm_msg_hdr_t
    signature: fpm_msg_hdr_t *fpm_msg_next(fpm_msg_hdr_t *hdr, size_t *len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fpm_msg_len
      Src: /src/frr/fpm/fpm.h:227,1
    - Dst: fpm_msg_align
      Src: /src/frr/fpm/fpm.h:236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - hdr
    argTypes:
    - fpm_msg_hdr_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 240
    functionName: fpm_msg_hdr_ok
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached:
    - fpm_msg_len
    - fpm_msg_align
    linkageType: ''
    returnType: int
    signature: int fpm_msg_hdr_ok(const fpm_msg_hdr_t *hdr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fpm_msg_hdr_ok
      Src: /src/frr/fpm/fpm.h:254,1
    - Dst: fpm_msg_len
      Src: /src/frr/fpm/fpm.h:257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - hdr
    - len
    argTypes:
    - fpm_msg_hdr_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 261
    functionName: fpm_msg_ok
    functionSourceFile: /src/frr/fpm/fpm.h
    functionUses: 0
    functionsReached:
    - fpm_msg_len
    - fpm_msg_hdr_ok
    linkageType: ''
    returnType: int
    signature: int fpm_msg_ok(const fpm_msg_hdr_t *hdr, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/fpm/fpm_pb.h:31,1
    - Dst: typeof
      Src: /src/frr/fpm/fpm_pb.h:31,1
    - Dst: fpm__route_key__init
      Src: /src/frr/fpm/fpm_pb.h:35,1
    - Dst: qpb__l3_prefix__create
      Src: /src/frr/fpm/fpm_pb.h:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - allocator
    - prefix
    argTypes:
    - qpb_allocator_t*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 43
    functionName: fpm__route_key__create
    functionSourceFile: /src/frr/fpm/fpm_pb.h
    functionUses: 0
    functionsReached:
    - QPB_ALLOC
    - typeof
    - fpm__route_key__init
    - qpb__l3_prefix__create
    linkageType: ''
    returnType: Fpm__RouteKey
    signature: "Fpm__RouteKey *fpm__route_key__create(qpb_allocator_t *allocator,\n\t\t\t\t\t\t
      \   struct prefix *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_router_id_update_read
      Src: /src/frr/eigrpd/eigrp_zebra.c:60,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_zebra.c:64,1
    - Dst: eigrp_router_id_update
      Src: /src/frr/eigrpd/eigrp_zebra.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 70
    functionName: eigrp_router_id_update_zebra
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - eigrp_lookup
    - eigrp_router_id_update
    - zebra_router_id_update_read
    linkageType: ''
    returnType: int
    signature: int eigrp_router_id_update_zebra(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_notify_decode
      Src: /src/frr/eigrpd/eigrp_zebra.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 83
    functionName: eigrp_zebra_route_notify_owner
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - zapi_route_notify_decode
    linkageType: ''
    returnType: int
    signature: int eigrp_zebra_route_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/eigrpd/eigrp_zebra.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: eigrp_zebra_connected
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void eigrp_zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/eigrpd/eigrp_zebra.c:103,1
    - Dst: array_size
      Src: /src/frr/eigrpd/eigrp_zebra.c:104,1
    - Dst: zclient_init
      Src: /src/frr/eigrpd/eigrp_zebra.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 108
    functionName: eigrp_zebra_init
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void eigrp_zebra_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_decode
      Src: /src/frr/eigrpd/eigrp_zebra.c:117,1
    - Dst: IPV4_NET127
      Src: /src/frr/eigrpd/eigrp_zebra.c:120,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_zebra.c:120,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_zebra.c:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 134
    functionName: eigrp_zebra_read_route
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - IPV4_NET127
    - ntohl
    - eigrp_lookup
    - zapi_route_decode
    linkageType: ''
    returnType: int
    signature: int eigrp_zebra_read_route(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/eigrpd/eigrp_zebra.c:140,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_zebra.c:145,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_zebra.c:146,1
    - Dst: eigrp_if_update
      Src: /src/frr/eigrpd/eigrp_zebra.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 152
    functionName: eigrp_interface_address_add
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_EIGRP
    - zlog_debug
    - zebra_interface_address_read
    - eigrp_if_update
    linkageType: ''
    returnType: int
    signature: int eigrp_interface_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/eigrpd/eigrp_zebra.c:160,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_zebra.c:165,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_zebra.c:166,1
    - Dst: prefix_cmp
      Src: /src/frr/eigrpd/eigrp_zebra.c:175,1
    - Dst: eigrp_if_free
      Src: /src/frr/eigrpd/eigrp_zebra.c:176,1
    - Dst: connected_free
      Src: /src/frr/eigrpd/eigrp_zebra.c:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 181
    functionName: eigrp_interface_address_delete
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_interface_address_read
    - prefix_cmp
    - IS_DEBUG_EIGRP
    - connected_free
    - zlog_debug
    - eigrp_if_free
    linkageType: ''
    returnType: int
    signature: int eigrp_interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_zebra.c:195,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_zebra.c:200,1
    - Dst: SET_FLAG
      Src: /src/frr/eigrpd/eigrp_zebra.c:202,1
    - Dst: SET_FLAG
      Src: /src/frr/eigrpd/eigrp_zebra.c:203,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_zebra.c:206,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_zebra.c:222,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_zebra.c:223,1
    - Dst: zclient_route_send
      Src: /src/frr/eigrpd/eigrp_zebra.c:226,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - eigrp
    - p
    - successors
    - distance
    argTypes:
    - struct eigrp*
    - struct prefix*
    - struct list*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 227
    functionName: eigrp_zebra_route_add
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - IS_DEBUG_EIGRP
    - ALL_LIST_ELEMENTS_RO
    - SET_FLAG
    - zlog_debug
    - zclient_route_send
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void eigrp_zebra_route_add(struct eigrp *eigrp, struct prefix *p,\n\t\t\t
      \  struct list *successors, uint32_t distance)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_zebra.c:236,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_zebra.c:240,1
    - Dst: zclient_route_send
      Src: /src/frr/eigrpd/eigrp_zebra.c:241,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_zebra.c:243,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_zebra.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - eigrp
    - p
    argTypes:
    - struct eigrp*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 247
    functionName: eigrp_zebra_route_delete
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - IS_DEBUG_EIGRP
    - zlog_debug
    - zclient_route_send
    - memcpy
    linkageType: ''
    returnType: void
    signature: void eigrp_zebra_route_delete(struct eigrp *eigrp, struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEFAULT_ROUTE_TYPE
      Src: /src/frr/eigrpd/eigrp_zebra.c:251,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/eigrpd/eigrp_zebra.c:252,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/eigrpd/eigrp_zebra.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - type
    - vrf_id
    argTypes:
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 256
    functionName: eigrp_is_type_redistributed
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - DEFAULT_ROUTE_TYPE
    linkageType: ''
    returnType: int
    signature: int eigrp_is_type_redistributed(int type, vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_is_type_redistributed
      Src: /src/frr/eigrpd/eigrp_zebra.c:262,1
    - Dst: eigrp_metrics_is_same
      Src: /src/frr/eigrpd/eigrp_zebra.c:263,1
    - Dst: eigrp_external_routes_refresh
      Src: /src/frr/eigrpd/eigrp_zebra.c:267,1
    - Dst: zclient_redistribute
      Src: /src/frr/eigrpd/eigrp_zebra.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - eigrp
    - type
    - metric
    argTypes:
    - struct eigrp*
    - int
    - struct eigrp_metrics
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 286
    functionName: eigrp_redistribute_set
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - eigrp_is_type_redistributed
    - zclient_redistribute
    - eigrp_external_routes_refresh
    - eigrp_metrics_is_same
    linkageType: ''
    returnType: int
    signature: "int eigrp_redistribute_set(struct eigrp *eigrp, int type,\n\t\t\t
      \  struct eigrp_metrics metric)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_is_type_redistributed
      Src: /src/frr/eigrpd/eigrp_zebra.c:291,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_zebra.c:292,1
    - Dst: zclient_redistribute
      Src: /src/frr/eigrpd/eigrp_zebra.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - eigrp
    - type
    argTypes:
    - struct eigrp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 299
    functionName: eigrp_redistribute_unset
    functionSourceFile: /src/frr/eigrpd/eigrp_zebra.c
    functionUses: 0
    functionsReached:
    - eigrp_is_type_redistributed
    - zclient_redistribute
    - memset
    linkageType: ''
    returnType: int
    signature: int eigrp_redistribute_unset(struct eigrp *eigrp, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/eigrpd/eigrp_errors.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: eigrp_error_init
    functionSourceFile: /src/frr/eigrpd/eigrp_errors.c
    functionUses: 0
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void eigrp_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:485,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:486,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/eigrpd/eigrp_snmp.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - eigrp
    - nbr_addr
    - ifindex
    argTypes:
    - struct eigrp*
    - struct in_addr*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 490
    functionName: eigrp_snmp_nbr_lookup
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *eigrp_snmp_nbr_lookup(struct eigrp *eigrp,\n\t\t\t\t\t\t
      \   struct in_addr *nbr_addr,\n\t\t\t\t\t\t    unsigned int *ifindex)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:505,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:507,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:508,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_snmp.c:512,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_snmp.c:513,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_snmp.c:515,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_snmp.c:516,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_snmp.c:519,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_snmp.c:520,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - nbr_addr
    - ifindex
    - first
    argTypes:
    - struct in_addr*
    - unsigned int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 524
    functionName: eigrp_snmp_nbr_lookup_next
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - eigrp_lookup
    - ntohl
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *\neigrp_snmp_nbr_lookup_next(struct in_addr
      *nbr_addr, unsigned int *ifindex,\n\t\t\t   int first)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:543,1
    - Dst: oid2in_addr
      Src: /src/frr/eigrpd/eigrp_snmp.c:552,1
    - Dst: eigrp_snmp_nbr_lookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:555,1
    - Dst: oid2in_addr
      Src: /src/frr/eigrpd/eigrp_snmp.c:566,1
    - Dst: eigrp_snmp_nbr_lookup_next
      Src: /src/frr/eigrpd/eigrp_snmp.c:572,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/eigrpd/eigrp_snmp.c:576,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 6
    argNames:
    - v
    - name
    - length
    - nbr_addr
    - ifindex
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - unsigned int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 582
    functionName: eigrpNbrLookup
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - eigrp_snmp_nbr_lookup
    - eigrp_snmp_nbr_lookup_next
    - oid2in_addr
    - eigrp_lookup
    - oid_copy_in_addr
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *eigrpNbrLookup(struct variable *v, oid *name,\n\t\t\t\t\t
      \    size_t *length,\n\t\t\t\t\t     struct in_addr *nbr_addr,\n\t\t\t\t\t     unsigned
      int *ifindex, int exact)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:591,1
    - Dst: smux_header_generic
      Src: /src/frr/eigrpd/eigrp_snmp.c:594,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:603,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:605,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:609,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:611,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 616
    functionName: eigrpVpnEntry
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - eigrp_lookup
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *eigrpVpnEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t
      \     int exact, size_t *var_len,\n\t\t\t      WriteMethod **write_method)"
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_snmp.c:630,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:631,1
    - Dst: eigrpTraffStatsEntry
      Src: /src/frr/eigrpd/eigrp_snmp.c:641,1
    - Dst: smux_header_generic
      Src: /src/frr/eigrpd/eigrp_snmp.c:653,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:662,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:664,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:668,1
    - Dst: eigrp_neighbor_count
      Src: /src/frr/eigrpd/eigrp_snmp.c:668,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:670,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:675,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:679,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:681,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:686,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:690,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:692,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:697,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:701,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:703,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:708,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:712,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:714,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:719,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:723,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:725,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:730,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:734,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:736,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:741,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:745,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:747,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:752,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:756,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:758,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:763,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:767,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:769,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:774,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:778,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:780,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:784,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:786,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:790,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:792,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:797,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:801,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:803,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:808,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:812,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:814,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:819,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:821,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:823,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:828,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:830,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:832,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:837,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:839,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:844,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:846,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:851,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:853,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:858,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:860,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:865,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:867,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 165
    argCount: 1
    argNames:
    - eigrp
    argTypes:
    - struct eigrp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 872
    functionName: eigrp_neighbor_count
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 1
    functionsReached:
    - eigrp_neighbor_count
    - eigrpTraffStatsEntry
    - ALL_LIST_ELEMENTS_RO
    - SNMP_INTEGER
    - ALL_LIST_ELEMENTS
    - smux_header_generic
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t eigrp_neighbor_count(struct eigrp *eigrp)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:880,1
    - Dst: smux_header_generic
      Src: /src/frr/eigrpd/eigrp_snmp.c:883,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:893,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:895,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:900,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:902,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:908,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:910,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:917,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:919,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:926,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:928,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:932,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:934,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:939,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:941,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:946,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:948,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:953,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:955,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:962,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:964,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:968,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:970,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:974,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:976,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:981,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:983,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:988,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:990,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:996,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:998,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 84
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 1003
    functionName: eigrpTopologyEntry
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - eigrp_lookup
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *eigrpTopologyEntry(struct variable *v, oid *name,\n\t\t\t\t
      \  size_t *length, int exact, size_t *var_len,\n\t\t\t\t   WriteMethod **write_method)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:1015,1
    - Dst: smux_header_generic
      Src: /src/frr/eigrpd/eigrp_snmp.c:1018,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_snmp.c:1022,1
    - Dst: eigrpNbrLookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:1025,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1037,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1039,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1044,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1046,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1050,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1052,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1056,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1058,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1064,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1066,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1071,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1073,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1078,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1080,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1084,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1086,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1090,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1092,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1096,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1098,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1102,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1104,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1108,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1110,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1115,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1117,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 82
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1005
    functionDepth: 3
    functionLinenumber: 1005
    functionLinenumberEnd: 1122
    functionName: eigrpPeerEntry
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - memset
    - eigrp_lookup
    - SNMP_INTEGER
    - eigrpNbrLookup
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *eigrpPeerEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t
      \      int exact, size_t *var_len,\n\t\t\t       WriteMethod **write_method)"
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_snmp.c:1133,1
    - Dst: smux_header_generic
      Src: /src/frr/eigrpd/eigrp_snmp.c:1136,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1146,1
    - Dst: eigrp_neighbor_count
      Src: /src/frr/eigrpd/eigrp_snmp.c:1146,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1148,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1153,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1155,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1161,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1163,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1169,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1171,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1176,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1178,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1185,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1187,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1191,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1193,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1198,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1200,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1205,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1207,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1213,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1215,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1220,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1222,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1227,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1229,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1234,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1236,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1241,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1243,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1248,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1250,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1255,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1257,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1264,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1266,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1271,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1273,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1277,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1279,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1283,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/eigrpd/eigrp_snmp.c:1285,1
    - Dst: keychain_list_get
      Src: /src/frr/eigrpd/eigrp_snmp.c:1289,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_snmp.c:1290,1
    - Dst: str_len
      Src: /src/frr/eigrpd/eigrp_snmp.c:1294,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 119
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1124
    functionDepth: 2
    functionLinenumber: 1124
    functionLinenumberEnd: 1303
    functionName: eigrpInterfaceEntry
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - eigrp_neighbor_count
    - keychain_list_get
    - eigrp_lookup
    - str_len
    - SNMP_INTEGER
    - ALL_LIST_ELEMENTS
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *eigrpInterfaceEntry(struct variable *v, oid *name,\n\t\t\t\t
      \   size_t *length, int exact, size_t *var_len,\n\t\t\t\t    WriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_snmp.c:1308,1
    - Dst: smux_init
      Src: /src/frr/eigrpd/eigrp_snmp.c:1309,1
    - Dst: REGISTER_MIB
      Src: /src/frr/eigrpd/eigrp_snmp.c:1310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1306
    functionDepth: 1
    functionLinenumber: 1306
    functionLinenumberEnd: 1311
    functionName: eigrp_snmp_init
    functionSourceFile: /src/frr/eigrpd/eigrp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_init
    - REGISTER_MIB
    - list_new
    linkageType: ''
    returnType: void
    signature: void eigrp_snmp_init()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - bandwidth
    argTypes:
    - eigrp_bandwidth_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 29
    functionName: eigrp_bandwidth_to_scaled
    functionSourceFile: /src/frr/eigrpd/eigrp_metric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: eigrp_scaled_t
    signature: eigrp_scaled_t eigrp_bandwidth_to_scaled(eigrp_bandwidth_t bandwidth)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - scaled
    argTypes:
    - eigrp_scaled_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 44
    functionName: eigrp_scaled_to_bandwidth
    functionSourceFile: /src/frr/eigrpd/eigrp_metric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: eigrp_bandwidth_t
    signature: eigrp_bandwidth_t eigrp_scaled_to_bandwidth(eigrp_scaled_t scaled)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - delay
    argTypes:
    - eigrp_delay_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: eigrp_delay_to_scaled
    functionSourceFile: /src/frr/eigrpd/eigrp_metric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: eigrp_scaled_t
    signature: eigrp_scaled_t eigrp_delay_to_scaled(eigrp_delay_t delay)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - scaled
    argTypes:
    - eigrp_scaled_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 58
    functionName: eigrp_scaled_to_delay
    functionSourceFile: /src/frr/eigrpd/eigrp_metric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: eigrp_delay_t
    signature: eigrp_delay_t eigrp_scaled_to_delay(eigrp_scaled_t scaled)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 2
    argNames:
    - eigrp
    - metric
    argTypes:
    - struct eigrp*
    - struct eigrp_metrics
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 97
    functionName: eigrp_calculate_metrics
    functionSourceFile: /src/frr/eigrpd/eigrp_metric.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: eigrp_metric_t
    signature: "eigrp_metric_t eigrp_calculate_metrics(struct eigrp *eigrp,\n\t\t\t\t
      \      struct eigrp_metrics metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_delay_to_scaled
      Src: /src/frr/eigrpd/eigrp_metric.c:109,1
    - Dst: eigrp_bandwidth_to_scaled
      Src: /src/frr/eigrpd/eigrp_metric.c:115,1
    - Dst: eigrp_calculate_metrics
      Src: /src/frr/eigrpd/eigrp_metric.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - eigrp
    - entry
    argTypes:
    - struct eigrp*
    - struct eigrp_route_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 121
    functionName: eigrp_calculate_total_metrics
    functionSourceFile: /src/frr/eigrpd/eigrp_metric.c
    functionUses: 0
    functionsReached:
    - eigrp_delay_to_scaled
    - eigrp_bandwidth_to_scaled
    - eigrp_calculate_metrics
    linkageType: ''
    returnType: eigrp_metric_t
    signature: "eigrp_metric_t eigrp_calculate_total_metrics(struct eigrp *eigrp,\n\t\t\t
      \     struct eigrp_route_descriptor *entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 5
    argCount: 2
    argNames:
    - metric1
    - metric2
    argTypes:
    - struct eigrp_metrics
    - struct eigrp_metrics
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 138
    functionName: eigrp_metrics_is_same
    functionSourceFile: /src/frr/eigrpd/eigrp_metric.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool eigrp_metrics_is_same(struct eigrp_metrics metric1,\n\t\t\t   struct
      eigrp_metrics metric2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_nbr_get
      Src: /src/frr/eigrpd/eigrp_siareply.c:54,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_siareply.c:57,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_siareply.c:59,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_siareply.c:62,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_siareply.c:66,1
    - Dst: eigrp_read_ipv4_tlv
      Src: /src/frr/eigrpd/eigrp_siareply.c:68,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_siareply.c:74,1
    - Dst: eigrp_route_descriptor_lookup
      Src: /src/frr/eigrpd/eigrp_siareply.c:82,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_siareply.c:91,1
    - Dst: eigrp_IPv4_InternalTLV_free
      Src: /src/frr/eigrpd/eigrp_siareply.c:93,1
    - Dst: eigrp_hello_send_ack
      Src: /src/frr/eigrpd/eigrp_siareply.c:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 6
    argNames:
    - eigrp
    - iph
    - eigrph
    - s
    - ei
    - size
    argTypes:
    - struct eigrp*
    - struct ip*
    - struct eigrp_header*
    - struct stream*
    - struct eigrp_interface*
    - int
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/frr/eigrpd/eigrp_siareply.c
    constantsTouched: []
    func_position:
      end: 97
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 97
    functionName: eigrp_siareply_receive
    functionSourceFile: /src/frr/eigrpd/eigrp_siareply.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_get
    - stream_set_getp
    - eigrp_read_ipv4_tlv
    - eigrp_fsm_event
    - eigrp_IPv4_InternalTLV_free
    - eigrp_topology_table_lookup_ipv4
    - stream_getw
    - eigrp_hello_send_ack
    - eigrp_route_descriptor_lookup
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: "void eigrp_siareply_receive(struct eigrp *eigrp, struct ip *iph,\n\t\t\t
      \   struct eigrp_header *eigrph, struct stream *s,\n\t\t\t    struct eigrp_interface
      *ei, int size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_siareply.c:105,1
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_siareply.c:105,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_siareply.c:108,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_siareply.c:114,1
    - Dst: eigrp_add_internalTLV_to_stream
      Src: /src/frr/eigrpd/eigrp_siareply.c:117,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_siareply.c:121,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_siareply.c:125,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_siareply.c:135,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_siareply.c:138,1
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_siareply.c:141,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - nbr
    - pe
    argTypes:
    - struct eigrp_neighbor*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 142
    functionName: eigrp_send_siareply
    functionSourceFile: /src/frr/eigrpd/eigrp_siareply.c
    functionUses: 0
    functionsReached:
    - eigrp_add_internalTLV_to_stream
    - eigrp_packet_header_init
    - eigrp_packet_free
    - eigrp_make_md5_digest
    - eigrp_packet_new
    - eigrp_fifo_push
    - EIGRP_PACKET_MTU
    - eigrp_packet_checksum
    - eigrp_send_packet_reliably
    - eigrp_add_authTLV_MD5_to_stream
    linkageType: ''
    returnType: void
    signature: "void eigrp_send_siareply(struct eigrp_neighbor *nbr,\n\t\t\t struct
      eigrp_prefix_descriptor *pe)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:52,1
    - Dst: access_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:66,1
    - Dst: access_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:78,1
    - Dst: prefix_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:90,1
    - Dst: prefix_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:101,1
    - Dst: event_cancel
      Src: /src/frr/eigrpd/eigrp_filter.c:114,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_filter.c:117,1
    - Dst: if_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_filter.c:123,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_filter.c:132,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_filter.c:133,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_filter.c:138,1
    - Dst: access_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:142,1
    - Dst: access_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:154,1
    - Dst: prefix_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:166,1
    - Dst: prefix_list_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:177,1
    - Dst: event_cancel
      Src: /src/frr/eigrpd/eigrp_filter.c:189,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_filter.c:191,1
    - Dst: eigrp_distribute_update_interface
      Src: /src/frr/eigrpd/eigrp_filter.c:198,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:203,1
    - Dst: distribute_lookup
      Src: /src/frr/eigrpd/eigrp_filter.c:206,1
    - Dst: eigrp_distribute_update
      Src: /src/frr/eigrpd/eigrp_filter.c:208,1
    - Dst: eigrp_distribute_update_all
      Src: /src/frr/eigrpd/eigrp_filter.c:215,1
    - Dst: RB_FOREACH
      Src: /src/frr/eigrpd/eigrp_filter.c:220,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/eigrpd/eigrp_filter.c:221,1
    - Dst: eigrp_distribute_update_interface
      Src: /src/frr/eigrpd/eigrp_filter.c:222,1
    - Dst: eigrp_distribute_update_all_wrapper
      Src: /src/frr/eigrpd/eigrp_filter.c:229,1
    - Dst: eigrp_distribute_update_all
      Src: /src/frr/eigrpd/eigrp_filter.c:231,1
    - Dst: eigrp_distribute_timer_process
      Src: /src/frr/eigrpd/eigrp_filter.c:245,1
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_filter.c:249,1
    - Dst: eigrp_update_send_process_GR
      Src: /src/frr/eigrpd/eigrp_filter.c:252,1
    - Dst: eigrp_distribute_timer_interface
      Src: /src/frr/eigrpd/eigrp_filter.c:266,1
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_filter.c:270,1
    - Dst: eigrp_update_send_interface_GR
      Src: /src/frr/eigrpd/eigrp_filter.c:274,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - dist
    argTypes:
    - struct distribute_ctx*
    - struct distribute*
    assertStmts:
    - condition: (ei != NULL)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/frr/eigrpd/eigrp_filter.c
    constantsTouched: []
    func_position:
      end: 275
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 275
    functionName: eigrp_distribute_update
    functionSourceFile: /src/frr/eigrpd/eigrp_filter.c
    functionUses: 1
    functionsReached:
    - eigrp_distribute_update_interface
    - eigrp_distribute_timer_interface
    - eigrp_update_send_process_GR
    - access_list_lookup
    - eigrp_distribute_timer_process
    - prefix_list_lookup
    - FOR_ALL_INTERFACES
    - EVENT_ARG
    - assert
    - eigrp_lookup
    - event_add_timer
    - eigrp_distribute_update
    - if_lookup_by_name
    - eigrp_update_send_interface_GR
    - event_cancel
    - strcmp
    - distribute_lookup
    - eigrp_distribute_update_all
    - eigrp_distribute_update_all_wrapper
    - ALL_LIST_ELEMENTS
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void eigrp_distribute_update(struct distribute_ctx *ctx,\n\t\t\t     struct
      distribute *dist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:72,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:73,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:75,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_cli.c:76,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:77,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 79
    functionName: eigrp_cli_show_header
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_header(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:83,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: eigrp_cli_show_end_header
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void eigrp_cli_show_end_header(struct vty *vty, const struct lyd_node
      *dnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:118,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: eigrp_cli_show_router_id
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_router_id(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:148,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 151
    functionName: eigrp_cli_show_passive_interface
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_passive_interface(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:191,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 194
    functionName: eigrp_cli_show_active_time
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_active_time(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:225,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 228
    functionName: eigrp_cli_show_variance
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_variance(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:260,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 263
    functionName: eigrp_cli_show_maximum_paths
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_maximum_paths(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:326,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:327,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:328,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:329,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:330,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:331,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:332,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:333,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:334,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:335,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:336,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:337,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:339,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:342,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 344
    functionName: eigrp_cli_show_metrics
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_metrics(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:370,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: eigrp_cli_show_network
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_network(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:399,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 402
    functionName: eigrp_cli_show_neighbor
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_neighbor(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:459,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:462,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:463,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:464,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:465,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:466,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:467,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:468,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:469,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_cli.c:470,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:471,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:473,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:475,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 478
    functionName: eigrp_cli_show_redistribute
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_redistribute(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:511,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 514
    functionName: eigrp_cli_show_delay
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_delay(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:549,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 552
    functionName: eigrp_cli_show_bandwidth
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_bandwidth(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:591,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 594
    functionName: eigrp_cli_show_hello_interval
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_hello_interval(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:631,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 634
    functionName: eigrp_cli_show_hold_time
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_hold_time(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/eigrpd/eigrp_cli.c:695,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_cli.c:696,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:697,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 701
    functionName: eigrp_cli_show_summarize_address
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - yang_dnode_get_uint16
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_summarize_address(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/eigrpd/eigrp_cli.c:761,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_cli.c:762,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:763,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 766
    functionName: eigrp_cli_show_authentication
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - yang_dnode_get_uint16
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_authentication(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/eigrpd/eigrp_cli.c:821,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_cli.c:822,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_cli.c:823,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_cli.c:825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 827
    functionName: eigrp_cli_show_keychain
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - yang_dnode_get_uint16
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void eigrp_cli_show_keychain(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/eigrpd/eigrp_cli.c:847,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/eigrpd/eigrp_cli.c:849,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 854
    functionName: eigrp_config_write
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int eigrp_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:859,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:860,1
    - Dst: install_node
      Src: /src/frr/eigrpd/eigrp_cli.c:862,1
    - Dst: install_default
      Src: /src/frr/eigrpd/eigrp_cli.c:863,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:865,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:866,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:867,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:868,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:869,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:870,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:871,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:872,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:873,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:874,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:875,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:876,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:877,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:878,1
    - Dst: vrf_cmd_init
      Src: /src/frr/eigrpd/eigrp_cli.c:880,1
    - Dst: if_cmd_init_default
      Src: /src/frr/eigrpd/eigrp_cli.c:882,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:884,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:885,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:886,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:887,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:888,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:889,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:890,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:891,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:892,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:893,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:894,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:895,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:896,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_cli.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 898
    functionName: eigrp_cli_init
    functionSourceFile: /src/frr/eigrpd/eigrp_cli.c
    functionUses: 0
    functionsReached:
    - install_node
    - if_cmd_init_default
    - install_default
    - install_element
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void eigrp_cli_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: CONF_DEBUG_NEI_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_NEI_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: CONF_DEBUG_NEI_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_NEI_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: TERM_DEBUG_NEI_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_NEI_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: TERM_DEBUG_NEI_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_NEI_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: DEBUG_NEI_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_NEI_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: DEBUG_NEI_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_NEI_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: CONF_DEBUG_PACKET_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_PACKET_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: CONF_DEBUG_PACKET_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_PACKET_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: TERM_DEBUG_PACKET_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_PACKET_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: TERM_DEBUG_PACKET_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_PACKET_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: DEBUG_PACKET_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_PACKET_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: DEBUG_PACKET_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_PACKET_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: CONF_DEBUG_TRANSMIT_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_TRANSMIT_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: CONF_DEBUG_TRANSMIT_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_TRANSMIT_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: TERM_DEBUG_TRANSMIT_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_TRANSMIT_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: TERM_DEBUG_TRANSMIT_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_TRANSMIT_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: DEBUG_TRANSMIT_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_TRANSMIT_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: DEBUG_TRANSMIT_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_TRANSMIT_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: CONF_DEBUG_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: CONF_DEBUG_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: TERM_DEBUG_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: TERM_DEBUG_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: DEBUG_ON
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: DEBUG_OFF
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: IS_DEBUG_EIGRP_PACKET
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DEBUG_EIGRP_PACKET(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: IS_DEBUG_EIGRP_TRANSMIT
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DEBUG_EIGRP_TRANSMIT(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: IS_DEBUG_EIGRP_NEI
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DEBUG_EIGRP_NEI(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: IS_DEBUG_EIGRP
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DEBUG_EIGRP(a, b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: access_list_apply
      Src: /src/frr/eigrpd/eigrp_update.c:59,1
    - Dst: prefix_list_apply
      Src: /src/frr/eigrpd/eigrp_update.c:63,1
    - Dst: access_list_apply
      Src: /src/frr/eigrpd/eigrp_update.c:67,1
    - Dst: prefix_list_apply
      Src: /src/frr/eigrpd/eigrp_update.c:71,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - eigrp
    - ei
    - in
    - prefix
    argTypes:
    - struct eigrp*
    - struct eigrp_interface*
    - int
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: eigrp_update_prefix_apply
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - prefix_list_apply
    - access_list_apply
    linkageType: ''
    returnType: bool
    signature: "bool eigrp_update_prefix_apply(struct eigrp *eigrp, struct eigrp_interface
      *ei,\n\t\t\t       int in, struct prefix *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_update.c:98,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_update.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - nbr_prefixes
    - recv_prefix
    argTypes:
    - struct list*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 104
    functionName: remove_received_prefix_gr
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void remove_received_prefix_gr(struct list *nbr_prefixes,\n\t\t\t
      \ struct eigrp_prefix_descriptor *recv_prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_update.c:130,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_update.c:131,1
    - Dst: eigrp_route_descriptor_lookup
      Src: /src/frr/eigrpd/eigrp_update.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - eigrp
    - nbr
    - nbr_prefixes
    argTypes:
    - struct eigrp*
    - struct eigrp_neighbor*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 150
    functionName: eigrp_update_receive_GR_ask
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - eigrp_route_descriptor_lookup
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_receive_GR_ask(struct eigrp *eigrp,\n\t\t\t\t\tstruct
      eigrp_neighbor *nbr,\n\t\t\t\t\tstruct list *nbr_prefixes)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_nbr_get
      Src: /src/frr/eigrpd/eigrp_update.c:177,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_update.c:180,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_update.c:182,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_update.c:191,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_update.c:194,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_update.c:195,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_update.c:196,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:199,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:207,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:209,1
    - Dst: eigrp_neighbor_prefixes_lookup
      Src: /src/frr/eigrpd/eigrp_update.c:212,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:219,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:221,1
    - Dst: eigrp_neighbor_prefixes_lookup
      Src: /src/frr/eigrpd/eigrp_update.c:224,1
    - Dst: eigrp_update_send_init
      Src: /src/frr/eigrpd/eigrp_update.c:261,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_update.c:264,1
    - Dst: eigrp_topology_neighbor_down
      Src: /src/frr/eigrpd/eigrp_update.c:265,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_update.c:266,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:267,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:269,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_update.c:271,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:272,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:275,1
    - Dst: eigrp_update_send_init
      Src: /src/frr/eigrpd/eigrp_update.c:277,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_update.c:283,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_update.c:286,1
    - Dst: eigrp_read_ipv4_tlv
      Src: /src/frr/eigrpd/eigrp_update.c:288,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_update.c:295,1
    - Dst: remove_received_prefix_gr
      Src: /src/frr/eigrpd/eigrp_update.c:303,1
    - Dst: eigrp_route_descriptor_lookup
      Src: /src/frr/eigrpd/eigrp_update.c:308,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_update.c:318,1
    - Dst: eigrp_prefix_descriptor_new
      Src: /src/frr/eigrpd/eigrp_update.c:321,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/eigrpd/eigrp_update.c:324,1
    - Dst: prefix_copy
      Src: /src/frr/eigrpd/eigrp_update.c:325,1
    - Dst: eigrp_route_descriptor_new
      Src: /src/frr/eigrpd/eigrp_update.c:330,1
    - Dst: eigrp_calculate_metrics
      Src: /src/frr/eigrpd/eigrp_update.c:334,1
    - Dst: eigrp_update_prefix_apply
      Src: /src/frr/eigrpd/eigrp_update.c:339,1
    - Dst: eigrp_calculate_total_metrics
      Src: /src/frr/eigrpd/eigrp_update.c:345,1
    - Dst: eigrp_prefix_descriptor_add
      Src: /src/frr/eigrpd/eigrp_update.c:354,1
    - Dst: eigrp_route_descriptor_add
      Src: /src/frr/eigrpd/eigrp_update.c:356,1
    - Dst: eigrp_topology_update_node_flags
      Src: /src/frr/eigrpd/eigrp_update.c:360,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_update.c:363,1
    - Dst: eigrp_IPv4_InternalTLV_free
      Src: /src/frr/eigrpd/eigrp_update.c:367,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_update.c:375,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_update.c:378,1
    - Dst: eigrp_update_receive_GR_ask
      Src: /src/frr/eigrpd/eigrp_update.c:386,1
    - Dst: eigrp_hello_send_ack
      Src: /src/frr/eigrpd/eigrp_update.c:394,1
    - Dst: eigrp_query_send_all
      Src: /src/frr/eigrpd/eigrp_update.c:397,1
    - Dst: eigrp_update_send_all
      Src: /src/frr/eigrpd/eigrp_update.c:398,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_update.c:401,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 124
    argCount: 6
    argNames:
    - eigrp
    - iph
    - eigrph
    - s
    - ei
    - size
    argTypes:
    - struct eigrp*
    - struct ip*
    - struct eigrp_header*
    - struct stream*
    - struct eigrp_interface*
    - int
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 179
        line_start: 179
        source_file: /src/frr/eigrpd/eigrp_update.c
    constantsTouched: []
    func_position:
      end: 402
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 402
    functionName: eigrp_update_receive
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - eigrp_calculate_total_metrics
    - ifindex2ifname
    - list_delete
    - eigrp_topology_table_lookup_ipv4
    - listnode_add
    - eigrp_hello_send_ack
    - eigrp_route_descriptor_add
    - prefix_ipv4_new
    - stream_getc
    - eigrp_update_receive_GR_ask
    - stream_set_getp
    - eigrp_topology_neighbor_down
    - eigrp_IPv4_InternalTLV_free
    - zlog_debug
    - eigrp_route_descriptor_new
    - IS_DEBUG_EIGRP_PACKET
    - eigrp_prefix_descriptor_new
    - eigrp_update_prefix_apply
    - prefix_copy
    - ntohl
    - assert
    - eigrp_nbr_get
    - zlog_info
    - eigrp_topology_update_node_flags
    - eigrp_fsm_event
    - eigrp_calculate_metrics
    - eigrp_nbr_state_set
    - eigrp_route_descriptor_lookup
    - eigrp_update_send_all
    - eigrp_query_send_all
    - eigrp_prefix_descriptor_add
    - eigrp_neighbor_prefixes_lookup
    - stream_getw
    - eigrp_update_send_init
    - remove_received_prefix_gr
    - eigrp_read_ipv4_tlv
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_receive(struct eigrp *eigrp, struct ip *iph,\n\t\t\t
      \ struct eigrp_header *eigrph, struct stream *s,\n\t\t\t  struct eigrp_interface
      *ei, int size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_update.c:410,1
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_update.c:410,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_update.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_update.c:414,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_update.c:418,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_update.c:425,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_update.c:426,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_update.c:431,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_update.c:439,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_update.c:440,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_update.c:445,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_update.c:448,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 450
    functionName: eigrp_update_send_init
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 1
    functionsReached:
    - eigrp_packet_header_init
    - zlog_debug
    - eigrp_packet_new
    - IS_DEBUG_EIGRP_PACKET
    - EIGRP_PACKET_MTU
    - eigrp_make_md5_digest
    - eigrp_packet_checksum
    - eigrp_add_authTLV_MD5_to_stream
    - eigrp_fifo_push
    - eigrp_send_packet_reliably
    linkageType: ''
    returnType: void
    signature: void eigrp_update_send_init(struct eigrp_neighbor *nbr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_update.c:458,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_update.c:462,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_update.c:470,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_update.c:471,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_update.c:476,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_update.c:479,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - nbr
    - ep
    - seq_no
    - length
    argTypes:
    - struct eigrp_neighbor*
    - struct eigrp_packet*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 480
    functionName: eigrp_update_place_on_nbr_queue
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - eigrp_make_md5_digest
    - eigrp_fifo_push
    - IS_DEBUG_EIGRP_PACKET
    - eigrp_packet_checksum
    - zlog_debug
    - eigrp_send_packet_reliably
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_place_on_nbr_queue(struct eigrp_neighbor *nbr,\n\t\t\t\t\t
      \   struct eigrp_packet *ep,\n\t\t\t\t\t    uint32_t seq_no, int length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_update.c:489,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_update.c:492,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_update.c:495,1
    - Dst: eigrp_packet_duplicate
      Src: /src/frr/eigrpd/eigrp_update.c:496,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_update.c:503,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_update.c:505,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_update.c:506,1
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_update.c:511,1
    - Dst: eigrp_update_send_EOT
      Src: /src/frr/eigrpd/eigrp_update.c:514,1
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_update.c:528,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_update.c:531,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_update.c:535,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_update.c:537,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_update.c:540,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_update.c:540,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_update.c:545,1
    - Dst: eigrp_nbr_split_horizon_check
      Src: /src/frr/eigrpd/eigrp_update.c:546,1
    - Dst: eigrp_update_place_on_nbr_queue
      Src: /src/frr/eigrpd/eigrp_update.c:550,1
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_update.c:555,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_update.c:556,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_update.c:565,1
    - Dst: eigrp_update_prefix_apply
      Src: /src/frr/eigrpd/eigrp_update.c:573,1
    - Dst: eigrp_add_internalTLV_to_stream
      Src: /src/frr/eigrpd/eigrp_update.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ei
    - ep
    argTypes:
    - struct eigrp_interface*
    - struct eigrp_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 585
    functionName: eigrp_update_send_to_all_nbrs
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - eigrp_add_internalTLV_to_stream
    - eigrp_update_place_on_nbr_queue
    - eigrp_update_send_EOT
    - eigrp_packet_header_init
    - eigrp_packet_duplicate
    - route_top
    - eigrp_packet_free
    - eigrp_add_authTLV_MD5_to_stream
    - route_next
    - eigrp_fifo_push
    - eigrp_packet_new
    - eigrp_update_prefix_apply
    - eigrp_send_packet_reliably
    - if
    - ALL_LIST_ELEMENTS
    - eigrp_nbr_split_horizon_check
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_send_to_all_nbrs(struct eigrp_interface *ei,\n\t\t\t\t\t
      \ struct eigrp_packet *ep)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_update.c:596,1
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_update.c:603,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_update.c:606,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_update.c:611,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_update.c:615,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_update.c:619,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_update.c:622,1
    - Dst: eigrp_nbr_split_horizon_check
      Src: /src/frr/eigrpd/eigrp_update.c:623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 631
    functionName: eigrp_update_send
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_split_horizon_check
    - eigrp_packet_header_init
    - eigrp_packet_new
    - EIGRP_PACKET_MTU
    - listnode_head
    - eigrp_add_authTLV_MD5_to_stream
    - ALL_LIST_ELEMENTS
    - if
    linkageType: ''
    returnType: void
    signature: void eigrp_update_send(struct eigrp_interface *ei)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_update.c:700,1
    - Dst: eigrp_update_send
      Src: /src/frr/eigrpd/eigrp_update.c:702,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_update.c:706,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_update.c:710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - eigrp
    - exception
    argTypes:
    - struct eigrp*
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 693
    functionDepth: 2
    functionLinenumber: 693
    functionLinenumberEnd: 714
    functionName: eigrp_update_send_all
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 1
    functionsReached:
    - listnode_delete
    - ALL_LIST_ELEMENTS
    - ALL_LIST_ELEMENTS_RO
    - eigrp_update_send
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_send_all(struct eigrp *eigrp,\n\t\t\t   struct eigrp_interface
      *exception)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_update.c:781,1
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_update.c:781,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_update.c:784,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_update.c:791,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_update.c:794,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_update.c:794,1
    - Dst: eigrp_update_prefix_apply
      Src: /src/frr/eigrpd/eigrp_update.c:804,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:807,1
    - Dst: eigrp_add_internalTLV_to_stream
      Src: /src/frr/eigrpd/eigrp_update.c:811,1
    - Dst: eigrp_update_prefix_apply
      Src: /src/frr/eigrpd/eigrp_update.c:819,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:822,1
    - Dst: eigrp_route_descriptor_lookup
      Src: /src/frr/eigrpd/eigrp_update.c:829,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_update.c:842,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_update.c:846,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_update.c:856,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_update.c:860,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_update.c:868,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_update.c:869,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_update.c:874,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_update.c:877,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 67
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 732
    functionDepth: 2
    functionLinenumber: 732
    functionLinenumberEnd: 879
    functionName: eigrp_update_send_GR_part
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - eigrp_add_internalTLV_to_stream
    - zlog_info
    - eigrp_packet_header_init
    - listnode_delete
    - eigrp_fsm_event
    - route_top
    - route_next
    - eigrp_make_md5_digest
    - eigrp_packet_new
    - eigrp_update_prefix_apply
    - EIGRP_PACKET_MTU
    - eigrp_packet_checksum
    - eigrp_route_descriptor_lookup
    - eigrp_add_authTLV_MD5_to_stream
    - IS_DEBUG_EIGRP_PACKET
    - zlog_debug
    - eigrp_fifo_push
    - eigrp_send_packet_reliably
    linkageType: ''
    returnType: void
    signature: void eigrp_update_send_GR_part(struct eigrp_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_update.c:900,1
    - Dst: event_add_timer_msec
      Src: /src/frr/eigrpd/eigrp_update.c:906,1
    - Dst: eigrp_update_send_GR_part
      Src: /src/frr/eigrpd/eigrp_update.c:912,1
    - Dst: event_execute
      Src: /src/frr/eigrpd/eigrp_update.c:916,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 895
    functionDepth: 3
    functionLinenumber: 895
    functionLinenumberEnd: 918
    functionName: eigrp_update_send_GR_thread
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - eigrp_update_send_GR_part
    - event_execute
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void eigrp_update_send_GR_thread(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:947,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:950,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_update.c:953,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:955,1
    - Dst: vty_time_print
      Src: /src/frr/eigrpd/eigrp_update.c:958,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_update.c:959,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_update.c:962,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_update.c:967,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_update.c:969,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_update.c:969,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_update.c:974,1
    - Dst: event_execute
      Src: /src/frr/eigrpd/eigrp_update.c:982,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - nbr
    - gr_type
    - vty
    argTypes:
    - struct eigrp_neighbor*
    - enum GR_type
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 983
    functionName: eigrp_update_send_GR
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - ifindex2ifname
    - vty_out
    - route_top
    - event_execute
    - listnode_add
    - route_next
    - list_new
    - vty_time_print
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_send_GR(struct eigrp_neighbor *nbr, enum GR_type
      gr_type,\n\t\t\t  struct vty *vty)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_update.c:1008,1
    - Dst: eigrp_update_send_GR
      Src: /src/frr/eigrpd/eigrp_update.c:1010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ei
    - gr_type
    - vty
    argTypes:
    - struct eigrp_interface*
    - enum GR_type
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1012
    functionName: eigrp_update_send_interface_GR
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - eigrp_update_send_GR
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_send_interface_GR(struct eigrp_interface *ei,\n\t\t\t\t
      \   enum GR_type gr_type, struct vty *vty)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_update.c:1034,1
    - Dst: eigrp_update_send_interface_GR
      Src: /src/frr/eigrpd/eigrp_update.c:1036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - eigrp
    - gr_type
    - vty
    argTypes:
    - struct eigrp*
    - enum GR_type
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1027
    functionDepth: 3
    functionLinenumber: 1027
    functionLinenumberEnd: 1038
    functionName: eigrp_update_send_process_GR
    functionSourceFile: /src/frr/eigrpd/eigrp_update.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - eigrp_update_send_interface_GR
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_send_process_GR(struct eigrp *eigrp, enum GR_type
      gr_type,\n\t\t\t\t  struct vty *vty)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_main.c:87,1
    - Dst: vty_read_config
      Src: /src/frr/eigrpd/eigrp_main.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: sighup
    functionSourceFile: /src/frr/eigrpd/eigrp_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vty_read_config
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/eigrpd/eigrp_main.c:96,1
    - Dst: eigrp_terminate
      Src: /src/frr/eigrpd/eigrp_main.c:97,1
    - Dst: exit
      Src: /src/frr/eigrpd/eigrp_main.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: sigint
    functionSourceFile: /src/frr/eigrpd/eigrp_main.c
    functionUses: 0
    functionsReached:
    - exit
    - eigrp_terminate
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/eigrpd/eigrp_main.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: sigusr1
    functionSourceFile: /src/frr/eigrpd/eigrp_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/eigrpd/eigrp_main.c:149,1
    - Dst: frr_opt_add
      Src: /src/frr/eigrpd/eigrp_main.c:150,1
    - Dst: frr_getopt
      Src: /src/frr/eigrpd/eigrp_main.c:155,1
    - Dst: frr_help_exit
      Src: /src/frr/eigrpd/eigrp_main.c:164,1
    - Dst: eigrp_sw_version_initialize
      Src: /src/frr/eigrpd/eigrp_main.c:168,1
    - Dst: eigrp_master_init
      Src: /src/frr/eigrpd/eigrp_main.c:171,1
    - Dst: frr_init
      Src: /src/frr/eigrpd/eigrp_main.c:172,1
    - Dst: eigrp_error_init
      Src: /src/frr/eigrpd/eigrp_main.c:175,1
    - Dst: eigrp_vrf_init
      Src: /src/frr/eigrpd/eigrp_main.c:176,1
    - Dst: vrf_init
      Src: /src/frr/eigrpd/eigrp_main.c:177,1
    - Dst: eigrp_if_init
      Src: /src/frr/eigrpd/eigrp_main.c:180,1
    - Dst: eigrp_zebra_init
      Src: /src/frr/eigrpd/eigrp_main.c:181,1
    - Dst: eigrp_debug_init
      Src: /src/frr/eigrpd/eigrp_main.c:182,1
    - Dst: eigrp_vty_init
      Src: /src/frr/eigrpd/eigrp_main.c:186,1
    - Dst: keychain_init
      Src: /src/frr/eigrpd/eigrp_main.c:187,1
    - Dst: eigrp_vty_show_init
      Src: /src/frr/eigrpd/eigrp_main.c:188,1
    - Dst: eigrp_cli_init
      Src: /src/frr/eigrpd/eigrp_main.c:189,1
    - Dst: eigrp_snmp_init
      Src: /src/frr/eigrpd/eigrp_main.c:192,1
    - Dst: access_list_init
      Src: /src/frr/eigrpd/eigrp_main.c:196,1
    - Dst: access_list_add_hook
      Src: /src/frr/eigrpd/eigrp_main.c:197,1
    - Dst: access_list_delete_hook
      Src: /src/frr/eigrpd/eigrp_main.c:198,1
    - Dst: prefix_list_init
      Src: /src/frr/eigrpd/eigrp_main.c:201,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/eigrpd/eigrp_main.c:202,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/eigrpd/eigrp_main.c:203,1
    - Dst: route_map_init
      Src: /src/frr/eigrpd/eigrp_main.c:209,1
    - Dst: frr_config_fork
      Src: /src/frr/eigrpd/eigrp_main.c:215,1
    - Dst: frr_run
      Src: /src/frr/eigrpd/eigrp_main.c:216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 220
    functionName: main
    functionSourceFile: /src/frr/eigrpd/eigrp_main.c
    functionUses: 2
    functionsReached:
    - frr_getopt
    - prefix_list_add_hook
    - eigrp_debug_init
    - eigrp_vty_show_init
    - route_map_init
    - access_list_init
    - eigrp_master_init
    - eigrp_cli_init
    - keychain_init
    - prefix_list_delete_hook
    - frr_help_exit
    - prefix_list_init
    - frr_init
    - vrf_init
    - frr_config_fork
    - eigrp_snmp_init
    - eigrp_error_init
    - frr_opt_add
    - access_list_delete_hook
    - frr_preinit
    - eigrp_zebra_init
    - eigrp_vrf_init
    - eigrp_if_init
    - eigrp_vty_init
    - access_list_add_hook
    - frr_run
    - eigrp_sw_version_initialize
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init
      Src: /src/frr/eigrpd/eigrp_topology.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: eigrp_topology_new
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 0
    functionsReached:
    - route_table_init
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *eigrp_topology_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_topology.c:65,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_topology.c:67,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_topology.c:68,1
    - Dst: entries::entries
      Src: /src/frr/eigrpd/eigrp_topology.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 74
    functionName: eigrp_prefix_descriptor_new
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 1
    functionsReached:
    - XCALLOC::XCALLOC
    - list_new
    - entries::entries
    linkageType: ''
    returnType: struct eigrp_prefix_descriptor
    signature: struct eigrp_prefix_descriptor *eigrp_prefix_descriptor_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - entry1
    - entry2
    argTypes:
    - struct eigrp_route_descriptor*
    - struct eigrp_route_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: eigrp_route_descriptor_cmp
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int eigrp_route_descriptor_cmp(struct eigrp_route_descriptor *entry1,\n\t\t\t\t
      \     struct eigrp_route_descriptor *entry2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_topology.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 104
    functionName: eigrp_route_descriptor_new
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 1
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct eigrp_route_descriptor
    signature: struct eigrp_route_descriptor *eigrp_route_descriptor_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_delete_all
      Src: /src/frr/eigrpd/eigrp_topology.c:111,1
    - Dst: route_table_finish
      Src: /src/frr/eigrpd/eigrp_topology.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - eigrp
    - table
    argTypes:
    - struct eigrp*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: eigrp_topology_free
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 0
    functionsReached:
    - eigrp_topology_delete_all
    - route_table_finish
    linkageType: ''
    returnType: void
    signature: void eigrp_topology_free(struct eigrp *eigrp, struct route_table *table)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/eigrpd/eigrp_topology.c:123,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_topology.c:126,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_topology.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - topology
    - pe
    argTypes:
    - struct route_table*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 133
    functionName: eigrp_prefix_descriptor_add
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - zlog_debug
    - route_node_get
    linkageType: ''
    returnType: void
    signature: "void eigrp_prefix_descriptor_add(struct route_table *topology,\n\t\t\t\t
      struct eigrp_prefix_descriptor *pe)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_topology.c:142,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_topology.c:144,1
    - Dst: listnode_lookup
      Src: /src/frr/eigrpd/eigrp_topology.c:146,1
    - Dst: listnode_add_sort
      Src: /src/frr/eigrpd/eigrp_topology.c:147,1
    - Dst: eigrp_zebra_route_add
      Src: /src/frr/eigrpd/eigrp_topology.c:150,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - eigrp
    - node
    - entry
    argTypes:
    - struct eigrp*
    - struct eigrp_prefix_descriptor*
    - struct eigrp_route_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 155
    functionName: eigrp_route_descriptor_add
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 1
    functionsReached:
    - list_delete
    - listnode_add_sort
    - listnode_lookup
    - listnode_add
    - eigrp_zebra_route_add
    - list_new
    linkageType: ''
    returnType: void
    signature: "void eigrp_route_descriptor_add(struct eigrp *eigrp,\n\t\t\t\tstruct
      eigrp_prefix_descriptor *node,\n\t\t\t\tstruct eigrp_route_descriptor *entry)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/eigrpd/eigrp_topology.c:171,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:179,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_topology.c:181,1
    - Dst: eigrp_route_descriptor_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:182,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:183,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:184,1
    - Dst: eigrp_zebra_route_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:185,1
    - Dst: prefix_free
      Src: /src/frr/eigrpd/eigrp_topology.c:186,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_topology.c:189,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_topology.c:190,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_topology.c:191,1
    - Dst: eigrp_route_descriptor_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:197,1
    - Dst: listnode_lookup
      Src: /src/frr/eigrpd/eigrp_topology.c:201,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:202,1
    - Dst: eigrp_zebra_route_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:203,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_topology.c:204,1
    - Dst: eigrp_topology_delete_all
      Src: /src/frr/eigrpd/eigrp_topology.c:211,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_topology.c:217,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_topology.c:217,1
    - Dst: eigrp_prefix_descriptor_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:223,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_topology.c:228,1
    - Dst: route_node_lookup
      Src: /src/frr/eigrpd/eigrp_topology.c:234,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_topology.c:240,1
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_topology.c:253,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_topology.c:255,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_topology.c:261,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:269,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - eigrp
    - table
    - pe
    argTypes:
    - struct eigrp*
    - struct route_table*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 274
    functionName: eigrp_prefix_descriptor_delete
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - prefix_free
    - route_node_lookup
    - list_delete
    - eigrp_topology_delete_all
    - eigrp_prefix_descriptor_delete
    - eigrp_topology_get_successor
    - eigrp_zebra_route_delete
    - listnode_lookup
    - route_top
    - eigrp_topology_table_lookup_ipv4
    - listnode_add
    - route_next
    - eigrp_route_descriptor_delete
    - list_new
    - XFREE
    - listnode_delete
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void eigrp_prefix_descriptor_delete(struct eigrp *eigrp,\n\t\t\t\t
      \   struct route_table *table,\n\t\t\t\t    struct eigrp_prefix_descriptor *pe)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_topology.c:280,1
    - Dst: listtail
      Src: /src/frr/eigrpd/eigrp_topology.c:284,1
    - Dst: list_delete_node
      Src: /src/frr/eigrpd/eigrp_topology.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - table_node
    - maxpaths
    argTypes:
    - struct eigrp_prefix_descriptor*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 292
    functionName: eigrp_topology_get_successor_max
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 0
    functionsReached:
    - listtail
    - list_delete_node
    - eigrp_topology_get_successor
    linkageType: ''
    returnType: struct list
    signature: "struct list *\neigrp_topology_get_successor_max(struct eigrp_prefix_descriptor
      *table_node,\n\t\t\t\t unsigned int maxpaths)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_topology.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - entries
    - nbr
    argTypes:
    - struct list*
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 306
    functionName: eigrp_route_descriptor_lookup
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 4
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct eigrp_route_descriptor
    signature: 'struct eigrp_route_descriptor *

      eigrp_route_descriptor_lookup(struct list *entries, struct eigrp_neighbor *nbr)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_topology.c:318,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_topology.c:321,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_topology.c:321,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_topology.c:326,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_topology.c:329,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - eigrp
    - nbr
    argTypes:
    - struct eigrp*
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 336
    functionName: eigrp_neighbor_prefixes_lookup
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 1
    functionsReached:
    - route_top
    - listnode_add
    - route_next
    - list_new
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct list
    signature: "struct list *eigrp_neighbor_prefixes_lookup(struct eigrp *eigrp,\n\t\t\t\t\t
      \   struct eigrp_neighbor *nbr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_topology.c:347,1
    - Dst: eigrp_metrics_is_same
      Src: /src/frr/eigrpd/eigrp_topology.c:361,1
    - Dst: eigrp_calculate_metrics
      Src: /src/frr/eigrpd/eigrp_topology.c:367,1
    - Dst: eigrp_calculate_metrics
      Src: /src/frr/eigrpd/eigrp_topology.c:377,1
    - Dst: eigrp_calculate_total_metrics
      Src: /src/frr/eigrpd/eigrp_topology.c:378,1
    - Dst: eigrp_metrics_is_same
      Src: /src/frr/eigrpd/eigrp_topology.c:382,1
    - Dst: flog_err
      Src: /src/frr/eigrpd/eigrp_topology.c:391,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:399,1
    - Dst: listnode_add_sort
      Src: /src/frr/eigrpd/eigrp_topology.c:400,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (entry)
      pos:
        line_end: 346
        line_start: 346
        source_file: /src/frr/eigrpd/eigrp_topology.c
    constantsTouched: []
    func_position:
      end: 403
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 403
    functionName: eigrp_topology_update_distance
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 0
    functionsReached:
    - eigrp_calculate_total_metrics
    - listnode_add_sort
    - eigrp_calculate_metrics
    - flog_err
    - eigrp_metrics_is_same
    - listnode_delete
    - assert
    linkageType: ''
    returnType: enum metric_change
    signature: enum metric_change eigrp_topology_update_distance(struct eigrp_fsm_action_message
      *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_topology.c:413,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_topology.c:413,1
    - Dst: eigrp_topology_update_node_flags
      Src: /src/frr/eigrpd/eigrp_topology.c:419,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - eigrp
    argTypes:
    - struct eigrp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 421
    functionName: eigrp_topology_update_all_node_flags
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 0
    functionsReached:
    - route_top
    - eigrp_topology_update_node_flags
    - route_next
    linkageType: ''
    returnType: void
    signature: void eigrp_topology_update_all_node_flags(struct eigrp *eigrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_topology.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - eigrp
    - dest
    argTypes:
    - struct eigrp*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 451
    functionName: eigrp_topology_update_node_flags
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: "void eigrp_topology_update_node_flags(struct eigrp *eigrp,\n\t\t\t\t
      \     struct eigrp_prefix_descriptor *dest)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor_max
      Src: /src/frr/eigrpd/eigrp_topology.c:462,1
    - Dst: eigrp_zebra_route_add
      Src: /src/frr/eigrpd/eigrp_topology.c:465,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_topology.c:467,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:470,1
    - Dst: eigrp_zebra_route_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:472,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_topology.c:473,1
    - Dst: eigrp_topology_neighbor_down
      Src: /src/frr/eigrpd/eigrp_topology.c:478,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_topology.c:486,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_topology.c:492,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_topology.c:495,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_topology.c:498,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_topology.c:506,1
    - Dst: eigrp_query_send_all
      Src: /src/frr/eigrpd/eigrp_topology.c:510,1
    - Dst: eigrp_update_send_all
      Src: /src/frr/eigrpd/eigrp_topology.c:511,1
    - Dst: eigrp_update_topology_table_prefix
      Src: /src/frr/eigrpd/eigrp_topology.c:514,1
    - Dst: for
      Src: /src/frr/eigrpd/eigrp_topology.c:521,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_topology.c:521,1
    - Dst: eigrp_route_descriptor_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:523,1
    - Dst: eigrp_prefix_descriptor_delete
      Src: /src/frr/eigrpd/eigrp_topology.c:528,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - eigrp
    - prefix
    argTypes:
    - struct eigrp*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 530
    functionName: eigrp_update_routing_table
    functionSourceFile: /src/frr/eigrpd/eigrp_topology.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - list_delete
    - eigrp_prefix_descriptor_delete
    - memset
    - ALL_LIST_ELEMENTS_RO
    - eigrp_topology_neighbor_down
    - eigrp_fsm_event
    - eigrp_topology_get_successor_max
    - route_next
    - eigrp_route_descriptor_delete
    - eigrp_zebra_route_add
    - eigrp_update_send_all
    - if
    - eigrp_zebra_route_delete
    - for
    - eigrp_query_send_all
    - eigrp_update_topology_table_prefix
    linkageType: ''
    returnType: void
    signature: "void eigrp_update_routing_table(struct eigrp *eigrp,\n\t\t\t\tstruct
      eigrp_prefix_descriptor *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_routemap.c:50,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_routemap.c:55,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_routemap.c:56,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_routemap.c:57,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_routemap.c:64,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_routemap.c:73,1
    - Dst: eigrp_if_rmap_update_interface
      Src: /src/frr/eigrpd/eigrp_routemap.c:82,1
    - Dst: if_rmap_lookup
      Src: /src/frr/eigrpd/eigrp_routemap.c:86,1
    - Dst: eigrp_if_rmap_update
      Src: /src/frr/eigrpd/eigrp_routemap.c:88,1
    - Dst: eigrp_routemap_update_redistribute
      Src: /src/frr/eigrpd/eigrp_routemap.c:91,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_routemap.c:96,1
    - Dst: for
      Src: /src/frr/eigrpd/eigrp_routemap.c:99,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_routemap.c:100,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_routemap.c:101,1
    - Dst: eigrp_if_rmap_update_interface
      Src: /src/frr/eigrpd/eigrp_routemap.c:114,1
    - Dst: eigrp_routemap_update_redistribute
      Src: /src/frr/eigrpd/eigrp_routemap.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - if_rmap
    argTypes:
    - struct if_rmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 117
    functionName: eigrp_if_rmap_update
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 1
    functionsReached:
    - if_lookup_by_name
    - if_rmap_lookup
    - strcmp
    - route_map_lookup_by_name
    - eigrp_lookup
    - if
    - ALL_LIST_ELEMENTS
    - for
    - eigrp_routemap_update_redistribute
    - eigrp_if_rmap_update_interface
    - eigrp_if_rmap_update
    linkageType: ''
    returnType: void
    signature: void eigrp_if_rmap_update(struct if_rmap *if_rmap)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_add_match
      Src: /src/frr/eigrpd/eigrp_routemap.c:125,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:128,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - index
    - command
    - arg
    argTypes:
    - struct vty*
    - struct route_map_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 141
    functionName: eigrp_route_match_add
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - vty_out
    - route_map_add_match
    linkageType: ''
    returnType: int
    signature: "int eigrp_route_match_add(struct vty *vty, struct route_map_index
      *index,\n\t\t\t\t const char *command, const char *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_delete_match
      Src: /src/frr/eigrpd/eigrp_routemap.c:150,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:153,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - index
    - command
    - arg
    argTypes:
    - struct vty*
    - struct route_map_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 166
    functionName: eigrp_route_match_delete
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - vty_out
    - route_map_delete_match
    linkageType: ''
    returnType: int
    signature: "int eigrp_route_match_delete(struct vty *vty,\n\t\t\t\t    struct
      route_map_index *index,\n\t\t\t\t    const char *command, const char *arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_map_add_set
      Src: /src/frr/eigrpd/eigrp_routemap.c:174,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:177,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_routemap.c:186,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - vty
    - index
    - command
    - arg
    argTypes:
    - struct vty*
    - struct route_map_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 199
    functionName: eigrp_route_set_add
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - route_map_add_set
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int eigrp_route_set_add(struct vty *vty, struct route_map_index *index,\n\t\t\t
      \      const char *command, const char *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_delete_set
      Src: /src/frr/eigrpd/eigrp_routemap.c:208,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:211,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_routemap.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - index
    - command
    - arg
    argTypes:
    - struct vty*
    - struct route_map_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 224
    functionName: eigrp_route_set_delete
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - vty_out
    - route_map_delete_set
    linkageType: ''
    returnType: int
    signature: "int eigrp_route_set_delete(struct vty *vty,\n\t\t\t\t  struct route_map_index
      *index,\n\t\t\t\t  const char *command, const char *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_routemap.c:232,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_routemap.c:237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - notused
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 241
    functionName: eigrp_route_map_update
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_lookup_by_name
    - eigrp_lookup
    linkageType: ''
    returnType: void
    signature: void eigrp_route_map_update(const char *notused)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 276
    functionName: route_match_metric
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_metric(void *rule, struct
      prefix *prefix, route_map_object_t type,\n\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 291
    functionName: route_match_metric_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_match_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 297
    functionName: route_match_metric_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_metric_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 334
    functionName: route_match_interface
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_interface(void *rule, struct
      prefix *prefix,\n\t\t      route_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/eigrpd/eigrp_routemap.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: route_match_interface_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_interface_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: route_match_interface_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_interface_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 384
    functionName: route_match_ip_next_hop
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop(void *rule, struct
      prefix *prefix,\n\t\t\troute_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/eigrpd/eigrp_routemap.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: route_match_ip_next_hop_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 397
    functionName: route_match_ip_next_hop_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 433
    functionName: route_match_ip_next_hop_prefix_list
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_prefix_list(void
      *rule, struct prefix *prefix,\n\t\t\t\t    route_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/eigrpd/eigrp_routemap.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: route_match_ip_next_hop_prefix_list_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 443
    functionName: route_match_ip_next_hop_prefix_list_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_prefix_list_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/eigrpd/eigrp_routemap.c:464,1
    - Dst: access_list_apply
      Src: /src/frr/eigrpd/eigrp_routemap.c:468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 473
    functionName: route_match_ip_address
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - access_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_address(void *rule, struct
      prefix *prefix,\n\t\t       route_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/eigrpd/eigrp_routemap.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 480
    functionName: route_match_ip_address_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 486
    functionName: route_match_ip_address_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/eigrpd/eigrp_routemap.c:505,1
    - Dst: prefix_list_apply
      Src: /src/frr/eigrpd/eigrp_routemap.c:509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 514
    functionName: route_match_ip_address_prefix_list
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_address_prefix_list(void
      *rule, struct prefix *prefix,\n\t\t\t\t   route_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/eigrpd/eigrp_routemap.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 519
    functionName: route_match_ip_address_prefix_list_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 524
    functionName: route_match_ip_address_prefix_list_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_prefix_list_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 555
    functionName: route_match_tag
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_tag(void *rule, struct prefix
      *prefix, route_map_object_t type,\n\t\tvoid *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 566
    functionName: route_match_tag_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_match_tag_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 572
    functionName: route_match_tag_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_tag_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 610
    functionName: route_set_metric
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_metric(void *rule, struct prefix
      *prefix,\n\t\t route_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 660
    functionName: route_set_metric_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_set_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 666
    functionName: route_set_metric_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_metric_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 697
    functionName: route_set_ip_nexthop
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_ip_nexthop(void *rule, struct
      prefix *prefix,\n\t\t     route_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 718
    functionName: route_set_ip_nexthop_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_set_ip_nexthop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: route_set_ip_nexthop_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ip_nexthop_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rule
    - prefix
    - type
    - object
    argTypes:
    - void*
    - struct prefix*
    - route_map_object_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 737
    functionDepth: 0
    functionLinenumber: 737
    functionLinenumberEnd: 755
    functionName: route_set_tag
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_tag(void *rule, struct prefix
      *prefix,\n\t      route_map_object_t type, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 767
    functionName: route_set_tag_compile
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_set_tag_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_routemap.c:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 770
    functionDepth: 0
    functionLinenumber: 770
    functionLinenumberEnd: 773
    functionName: route_set_tag_free
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_tag_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/eigrpd/eigrp_routemap.c:1156,1
    - Dst: route_map_init_vty
      Src: /src/frr/eigrpd/eigrp_routemap.c:1157,1
    - Dst: route_map_add_hook
      Src: /src/frr/eigrpd/eigrp_routemap.c:1158,1
    - Dst: route_map_delete_hook
      Src: /src/frr/eigrpd/eigrp_routemap.c:1159,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_routemap.c:1161,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_routemap.c:1162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1154
    functionDepth: 1
    functionLinenumber: 1154
    functionLinenumberEnd: 1210
    functionName: eigrp_route_map_init
    functionSourceFile: /src/frr/eigrpd/eigrp_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_init
    - route_map_delete_hook
    - route_map_init_vty
    - route_map_add_hook
    - install_element
    linkageType: ''
    returnType: void
    signature: void eigrp_route_map_init()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_hello.c:73,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_hello.c:75,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_hello.c:76,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_hello.c:76,1
    - Dst: eigrp_hello_send
      Src: /src/frr/eigrpd/eigrp_hello.c:80,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_hello.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 85
    functionName: eigrp_hello_timer
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached:
    - eigrp_hello_send
    - IS_DEBUG_EIGRP
    - zlog_debug
    - EVENT_ARG
    - event_add_timer
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void eigrp_hello_timer(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_hello.c:120,1
    - Dst: eigrp_nbr_state_get
      Src: /src/frr/eigrpd/eigrp_hello.c:131,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_hello.c:132,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_hello.c:135,1
    - Dst: eigrp_hello_send
      Src: /src/frr/eigrpd/eigrp_hello.c:139,1
    - Dst: eigrp_update_send_init
      Src: /src/frr/eigrpd/eigrp_hello.c:143,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_hello.c:145,1
    - Dst: eigrp_nbr_state_get
      Src: /src/frr/eigrpd/eigrp_hello.c:148,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_hello.c:152,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_hello.c:155,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrp_hello.c:157,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_hello.c:160,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_hello.c:163,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_hello.c:165,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - nbr
    - tlv
    argTypes:
    - struct eigrp_neighbor*
    - struct eigrp_tlv_hdr_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 171
    functionName: eigrp_hello_parameter_decode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - ifindex2ifname
    - eigrp_hello_send
    - eigrp_nbr_delete
    - ntohs
    - eigrp_nbr_state_set
    - eigrp_update_send_init
    - eigrp_nbr_state_get
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *\neigrp_hello_parameter_decode(struct eigrp_neighbor
      *nbr,\n\t\t\t     struct eigrp_tlv_hdr_type *tlv)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_check_md5_digest
      Src: /src/frr/eigrpd/eigrp_hello.c:187,1
    - Dst: eigrp_check_sha256_digest
      Src: /src/frr/eigrpd/eigrp_hello.c:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - s
    - tlv_header
    - nbr
    argTypes:
    - struct stream*
    - struct eigrp_tlv_hdr_type*
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 200
    functionName: eigrp_hello_authentication_decode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached:
    - eigrp_check_sha256_digest
    - eigrp_check_md5_digest
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t eigrp_hello_authentication_decode(struct stream *s,\n\t\t\t\t
      \ struct eigrp_tlv_hdr_type *tlv_header,\n\t\t\t\t  struct eigrp_neighbor *nbr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - nbr
    - tlv
    argTypes:
    - struct eigrp_neighbor*
    - struct eigrp_tlv_hdr_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: eigrp_sw_version_decode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void eigrp_sw_version_decode(struct eigrp_neighbor *nbr,\n\t\t\t\t
      \   struct eigrp_tlv_hdr_type *tlv)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_hello.c:259,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_hello.c:262,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrp_hello.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - nbr
    - tlv
    argTypes:
    - struct eigrp_neighbor*
    - struct eigrp_tlv_hdr_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 268
    functionName: eigrp_peer_termination_decode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - ifindex2ifname
    - eigrp_nbr_delete
    linkageType: ''
    returnType: void
    signature: "void eigrp_peer_termination_decode(struct eigrp_neighbor *nbr,\n\t\t\t\t\t
      \ struct eigrp_tlv_hdr_type *tlv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:288,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:289,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:292,1
    - Dst: stream_put_ipv4
      Src: /src/frr/eigrpd/eigrp_hello.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - s
    - nbr_addr
    argTypes:
    - struct stream*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 298
    functionName: eigrp_peer_termination_encode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached:
    - stream_put_ipv4
    - stream_putw
    - stream_putc
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t eigrp_peer_termination_encode(struct stream *s,\n\t\t\t\t\t
      \     struct in_addr *nbr_addr)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_nbr_get
      Src: /src/frr/eigrpd/eigrp_hello.c:331,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_hello.c:334,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_hello.c:336,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_hello.c:337,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_hello.c:338,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_hello.c:348,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_hello.c:349,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_hello.c:356,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_hello.c:357,1
    - Dst: lookup_msg
      Src: /src/frr/eigrpd/eigrp_hello.c:359,1
    - Dst: eigrp_hello_parameter_decode
      Src: /src/frr/eigrpd/eigrp_hello.c:365,1
    - Dst: eigrp_hello_authentication_decode
      Src: /src/frr/eigrpd/eigrp_hello.c:371,1
    - Dst: eigrp_sw_version_decode
      Src: /src/frr/eigrpd/eigrp_hello.c:382,1
    - Dst: eigrp_peer_termination_decode
      Src: /src/frr/eigrpd/eigrp_hello.c:387,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_hello.c:406,1
    - Dst: eigrp_nbr_state_update
      Src: /src/frr/eigrpd/eigrp_hello.c:410,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_hello.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_hello.c:414,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 6
    argNames:
    - eigrp
    - iph
    - eigrph
    - s
    - ei
    - size
    argTypes:
    - struct eigrp*
    - struct ip*
    - struct eigrp_header*
    - struct stream*
    - struct eigrp_interface*
    - int
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 333
        line_start: 333
        source_file: /src/frr/eigrpd/eigrp_hello.c
    constantsTouched: []
    func_position:
      end: 415
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 415
    functionName: eigrp_hello_receive
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_get
    - ifindex2ifname
    - eigrp_peer_termination_decode
    - eigrp_hello_authentication_decode
    - eigrp_sw_version_decode
    - ntohl
    - ntohs
    - zlog_debug
    - IS_DEBUG_EIGRP_PACKET
    - eigrp_nbr_state_update
    - eigrp_hello_parameter_decode
    - lookup_msg
    - assert
    linkageType: ''
    returnType: void
    signature: "void eigrp_hello_receive(struct eigrp *eigrp, struct ip *iph,\n\t\t\t
      struct eigrp_header *eigrph, struct stream *s,\n\t\t\t struct eigrp_interface
      *ei, int size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/frr/eigrpd/eigrp_hello.c:423,1
    - Dst: sscanf
      Src: /src/frr/eigrpd/eigrp_hello.c:429,1
    - Dst: flog_err
      Src: /src/frr/eigrpd/eigrp_hello.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 435
    functionName: eigrp_sw_version_initialize
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 1
    functionsReached:
    - strstr
    - flog_err
    - sscanf
    linkageType: ''
    returnType: void
    signature: void eigrp_sw_version_initialize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:454,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:455,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:457,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:458,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:461,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 465
    functionName: eigrp_sw_version_encode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - stream_putc
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t eigrp_sw_version_encode(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 482
    functionName: eigrp_tidlist_encode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t eigrp_tidlist_encode(struct stream *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/eigrpd/eigrp_hello.c:505,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:506,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:508,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:509,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_hello.c:512,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_hello.c:513,1
    - Dst: stream_put_ipv4
      Src: /src/frr/eigrpd/eigrp_hello.c:515,1
    - Dst: stream_set_endp
      Src: /src/frr/eigrpd/eigrp_hello.c:523,1
    - Dst: stream_get_endp
      Src: /src/frr/eigrpd/eigrp_hello.c:527,1
    - Dst: stream_set_endp
      Src: /src/frr/eigrpd/eigrp_hello.c:528,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:529,1
    - Dst: stream_set_endp
      Src: /src/frr/eigrpd/eigrp_hello.c:530,1
    - Dst: eigrp_next_sequence_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:546,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:552,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:553,1
    - Dst: stream_putl
      Src: /src/frr/eigrpd/eigrp_hello.c:554,1
    - Dst: eigrp_hello_parameter_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:574,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:578,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:579,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:584,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:585,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:586,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:587,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:588,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:589,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:592,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:593,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:594,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:595,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:596,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_hello.c:597,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_hello.c:601,1
    - Dst: eigrp_hello_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:622,1
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_hello.c:631,1
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_hello.c:631,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_hello.c:635,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_hello.c:641,1
    - Dst: eigrp_add_authTLV_SHA256_to_stream
      Src: /src/frr/eigrpd/eigrp_hello.c:644,1
    - Dst: eigrp_hello_parameter_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:649,1
    - Dst: eigrp_sw_version_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:656,1
    - Dst: eigrp_sequence_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:659,1
    - Dst: eigrp_next_sequence_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:660,1
    - Dst: eigrp_tidlist_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:664,1
    - Dst: eigrp_peer_termination_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:669,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_hello.c:679,1
    - Dst: eigrp_make_sha256_digest
      Src: /src/frr/eigrpd/eigrp_hello.c:683,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_hello.c:688,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - eigrp
    - s
    argTypes:
    - struct eigrp*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 495
    functionDepth: 2
    functionLinenumber: 495
    functionLinenumberEnd: 689
    functionName: eigrp_sequence_encode
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 1
    functionsReached:
    - eigrp_hello_parameter_encode
    - eigrp_peer_termination_encode
    - eigrp_next_sequence_encode
    - stream_put_ipv4
    - stream_set_endp
    - stream_putc
    - ALL_LIST_ELEMENTS_RO
    - eigrp_make_md5_digest
    - stream_putl
    - eigrp_add_authTLV_MD5_to_stream
    - eigrp_add_authTLV_SHA256_to_stream
    - eigrp_hello_encode
    - eigrp_packet_header_init
    - eigrp_sequence_encode
    - eigrp_packet_new
    - eigrp_packet_checksum
    - eigrp_sw_version_encode
    - eigrp_make_sha256_digest
    - stream_putw
    - stream_get_endp
    - EIGRP_PACKET_MTU
    - ALL_LIST_ELEMENTS
    - eigrp_tidlist_encode
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t eigrp_sequence_encode(struct eigrp *eigrp, struct stream *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_hello_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:712,1
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_hello.c:717,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_hello.c:718,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_hello.c:722,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_hello.c:726,1
    - Dst: event_add_write
      Src: /src/frr/eigrpd/eigrp_hello.c:729,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 732
    functionName: eigrp_hello_send_ack
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 2
    functionsReached:
    - event_add_write
    - eigrp_hello_encode
    - listnode_add
    - zlog_debug
    - eigrp_fifo_push
    - IS_DEBUG_EIGRP_PACKET
    linkageType: ''
    returnType: void
    signature: void eigrp_hello_send_ack(struct eigrp_neighbor *nbr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_EIGRP_PACKET
      Src: /src/frr/eigrpd/eigrp_hello.c:754,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_hello.c:755,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_hello.c:755,1
    - Dst: eigrp_hello_encode
      Src: /src/frr/eigrpd/eigrp_hello.c:759,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_hello.c:759,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_hello.c:764,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_hello.c:768,1
    - Dst: event_execute
      Src: /src/frr/eigrpd/eigrp_hello.c:774,1
    - Dst: event_add_write
      Src: /src/frr/eigrpd/eigrp_hello.c:777,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ei
    - flags
    - nbr_addr
    argTypes:
    - struct eigrp_interface*
    - uint8_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 783
    functionName: eigrp_hello_send
    functionSourceFile: /src/frr/eigrpd/eigrp_hello.c
    functionUses: 2
    functionsReached:
    - event_add_write
    - eigrp_hello_encode
    - event_execute
    - listnode_add
    - zlog_debug
    - eigrp_fifo_push
    - IS_DEBUG_EIGRP_PACKET
    - htonl
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void eigrp_hello_send(struct eigrp_interface *ei, uint8_t flags,\n\t\t
      \     struct in_addr *nbr_addr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/eigrpd/eigrpd.c:84,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/eigrpd/eigrpd.c:102,1
    - Dst: eigrp_if_update
      Src: /src/frr/eigrpd/eigrpd.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - eigrp
    argTypes:
    - struct eigrp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 105
    functionName: eigrp_router_id_update
    functionSourceFile: /src/frr/eigrpd/eigrpd.c
    functionUses: 1
    functionsReached:
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    - eigrp_if_update
    linkageType: ''
    returnType: void
    signature: void eigrp_router_id_update(struct eigrp *eigrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/eigrpd/eigrpd.c:111,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrpd.c:114,1
    - Dst: monotime
      Src: /src/frr/eigrpd/eigrpd.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 118
    functionName: eigrp_master_init
    functionSourceFile: /src/frr/eigrpd/eigrpd.c
    functionUses: 1
    functionsReached:
    - monotime
    - list_new
    - memset
    linkageType: ''
    returnType: void
    signature: void eigrp_master_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/eigrpd/eigrpd.c:123,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrpd.c:142,1
    - Dst: eigrp_topology_new
      Src: /src/frr/eigrpd/eigrpd.c:144,1
    - Dst: eigrp_sock_init
      Src: /src/frr/eigrpd/eigrpd.c:146,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/eigrpd/eigrpd.c:146,1
    - Dst: flog_err_sys
      Src: /src/frr/eigrpd/eigrpd.c:149,1
    - Dst: exit
      Src: /src/frr/eigrpd/eigrpd.c:153,1
    - Dst: getsockopt_so_sendbuf
      Src: /src/frr/eigrpd/eigrpd.c:156,1
    - Dst: stream_new
      Src: /src/frr/eigrpd/eigrpd.c:158,1
    - Dst: event_add_read
      Src: /src/frr/eigrpd/eigrpd.c:160,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrpd.c:161,1
    - Dst: route_table_init
      Src: /src/frr/eigrpd/eigrpd.c:163,1
    - Dst: eigrp_nbr_new
      Src: /src/frr/eigrpd/eigrpd.c:165,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrpd.c:173,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrpd.c:174,1
    - Dst: distribute_list_ctx_create
      Src: /src/frr/eigrpd/eigrpd.c:187,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/eigrpd/eigrpd.c:187,1
    - Dst: distribute_list_add_hook
      Src: /src/frr/eigrpd/eigrpd.c:188,1
    - Dst: distribute_list_delete_hook
      Src: /src/frr/eigrpd/eigrpd.c:190,1
    - Dst: QOBJ_REG
      Src: /src/frr/eigrpd/eigrpd.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 45
    argCount: 2
    argNames:
    - as
    - vrf_id
    argTypes:
    - uint16_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 200
    functionName: eigrp_new
    functionSourceFile: /src/frr/eigrpd/eigrpd.c
    functionUses: 0
    functionsReached:
    - exit
    - stream_new
    - eigrp_sock_init
    - XCALLOC
    - QOBJ_REG
    - eigrp_nbr_new
    - getsockopt_so_sendbuf
    - eigrp_topology_new
    - distribute_list_add_hook
    - route_table_init
    - list_new
    - vrf_lookup_by_id
    - event_add_read
    - flog_err_sys
    - distribute_list_delete_hook
    - distribute_list_ctx_create
    linkageType: ''
    returnType: struct eigrp
    signature: struct eigrp *eigrp_new(uint16_t as, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrpd.c:206,1
    - Dst: eigrp_new
      Src: /src/frr/eigrpd/eigrpd.c:208,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrpd.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - as
    - vrf_id
    argTypes:
    - uint16_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 213
    functionName: eigrp_get
    functionSourceFile: /src/frr/eigrpd/eigrpd.c
    functionUses: 0
    functionsReached:
    - eigrp_lookup
    - eigrp_new
    - listnode_add
    linkageType: ''
    returnType: struct eigrp
    signature: struct eigrp *eigrp_get(uint16_t as, vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/eigrpd/eigrpd.c:222,1
    - Dst: SET_FLAG
      Src: /src/frr/eigrpd/eigrpd.c:225,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrpd.c:227,1
    - Dst: eigrp_finish
      Src: /src/frr/eigrpd/eigrpd.c:228,1
    - Dst: frr_fini
      Src: /src/frr/eigrpd/eigrpd.c:230,1
    - Dst: eigrp_finish
      Src: /src/frr/eigrpd/eigrpd.c:233,1
    - Dst: eigrp_finish_final
      Src: /src/frr/eigrpd/eigrpd.c:235,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrpd.c:238,1
    - Dst: CHECK_FLAG
      Src: /src/frr/eigrpd/eigrpd.c:238,1
    - Dst: listcount
      Src: /src/frr/eigrpd/eigrpd.c:239,1
    - Dst: zclient_stop
      Src: /src/frr/eigrpd/eigrpd.c:241,1
    - Dst: zclient_free
      Src: /src/frr/eigrpd/eigrpd.c:242,1
    - Dst: exit
      Src: /src/frr/eigrpd/eigrpd.c:244,1
    - Dst: eigrp_finish_final
      Src: /src/frr/eigrpd/eigrpd.c:251,1
    - Dst: for
      Src: /src/frr/eigrpd/eigrpd.c:257,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrpd.c:257,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrpd.c:258,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrpd.c:259,1
    - Dst: eigrp_if_free
      Src: /src/frr/eigrpd/eigrpd.c:260,1
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrpd.c:263,1
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrpd.c:264,1
    - Dst: close
      Src: /src/frr/eigrpd/eigrpd.c:265,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrpd.c:267,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrpd.c:268,1
    - Dst: eigrp_topology_free
      Src: /src/frr/eigrpd/eigrpd.c:270,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrpd.c:272,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrpd.c:274,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrpd.c:275,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrpd.c:277,1
    - Dst: stream_free
      Src: /src/frr/eigrpd/eigrpd.c:279,1
    - Dst: distribute_list_delete
      Src: /src/frr/eigrpd/eigrpd.c:280,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrpd.c:281,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrpd.c:285,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 295
    functionName: eigrp_terminate
    functionSourceFile: /src/frr/eigrpd/eigrpd.c
    functionUses: 1
    functionsReached:
    - list_delete
    - exit
    - zclient_stop
    - frr_fini
    - distribute_list_delete
    - if
    - for
    - eigrp_if_free
    - eigrp_finish
    - stream_free
    - eigrp_nbr_delete
    - listcount
    - eigrp_lookup
    - EVENT_OFF
    - XFREE
    - listnode_delete
    - CHECK_FLAG
    - eigrp_finish_final
    - close
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - zclient_free
    - eigrp_topology_free
    linkageType: ''
    returnType: void
    signature: void eigrp_terminate(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/eigrpd/eigrp_network.c:53,1
    - Dst: zlog_err
      Src: /src/frr/eigrpd/eigrp_network.c:57,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:58,1
    - Dst: exit
      Src: /src/frr/eigrpd/eigrp_network.c:59,1
    - Dst: setsockopt
      Src: /src/frr/eigrpd/eigrp_network.c:64,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:67,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:68,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/eigrpd/eigrp_network.c:73,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:76,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:77,1
    - Dst: close
      Src: /src/frr/eigrpd/eigrp_network.c:78,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:83,1
    - Dst: setsockopt_ifindex
      Src: /src/frr/eigrpd/eigrp_network.c:86,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:88,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 93
    functionName: eigrp_sock_init
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 1
    functionsReached:
    - exit
    - vrf_socket
    - zlog_err
    - close
    - zlog_warn
    - safe_strerror
    - setsockopt_ipv4_tos
    - setsockopt
    - setsockopt_ifindex
    linkageType: ''
    returnType: int
    signature: int eigrp_sock_init(struct vrf *vrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/eigrpd/eigrp_network.c:53,1
    - Dst: zlog_err
      Src: /src/frr/eigrpd/eigrp_network.c:57,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:58,1
    - Dst: exit
      Src: /src/frr/eigrpd/eigrp_network.c:59,1
    - Dst: setsockopt
      Src: /src/frr/eigrpd/eigrp_network.c:64,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:67,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:68,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/eigrpd/eigrp_network.c:73,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:76,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:77,1
    - Dst: close
      Src: /src/frr/eigrpd/eigrp_network.c:78,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:83,1
    - Dst: setsockopt_ifindex
      Src: /src/frr/eigrpd/eigrp_network.c:86,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 90
    functionName: (&eigrpd_privs)
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - exit
    - vrf_socket
    - zlog_err
    - close
    - zlog_warn
    - safe_strerror
    - setsockopt_ipv4_tos
    - setsockopt
    - setsockopt_ifindex
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&eigrpd_privs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/eigrpd/eigrp_network.c:109,1
    - Dst: getsockopt_so_sendbuf
      Src: /src/frr/eigrpd/eigrp_network.c:110,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:112,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - eigrp
    - buflen
    argTypes:
    - struct eigrp*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 118
    functionName: eigrp_adjust_sndbuflen
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - setsockopt_so_sendbuf
    - zlog_warn
    - getsockopt_so_sendbuf
    linkageType: ''
    returnType: void
    signature: void eigrp_adjust_sndbuflen(struct eigrp *eigrp, unsigned int buflen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/eigrpd/eigrp_network.c:130,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:133,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:135,1
    - Dst: setsockopt
      Src: /src/frr/eigrpd/eigrp_network.c:139,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:142,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:143,1
    - Dst: setsockopt_ipv4_multicast_if
      Src: /src/frr/eigrpd/eigrp_network.c:145,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:147,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:149,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - top
    - p
    - ifindex
    argTypes:
    - struct eigrp*
    - struct prefix*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 152
    functionName: eigrp_if_ipmulticast
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - setsockopt
    - safe_strerror
    - setsockopt_ipv4_multicast_if
    linkageType: ''
    returnType: int
    signature: "int eigrp_if_ipmulticast(struct eigrp *top, struct prefix *p,\n\t\t\t
      unsigned int ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/eigrpd/eigrp_network.c:160,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_network.c:162,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:164,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:166,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_network.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - top
    - p
    - ifindex
    argTypes:
    - struct eigrp*
    - struct prefix*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 172
    functionName: eigrp_if_add_allspfrouters
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - safe_strerror
    - zlog_debug
    - htonl
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int eigrp_if_add_allspfrouters(struct eigrp *top, struct prefix *p,\n\t\t\t
      \      unsigned int ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/eigrpd/eigrp_network.c:179,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_network.c:181,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_network.c:183,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_network.c:185,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_network.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - top
    - p
    - ifindex
    argTypes:
    - struct eigrp*
    - struct prefix*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 191
    functionName: eigrp_if_drop_allspfrouters
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - safe_strerror
    - zlog_debug
    - htonl
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int eigrp_if_drop_allspfrouters(struct eigrp *top, struct prefix *p,\n\t\t\t\tunsigned
      int ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/eigrpd/eigrp_network.c:195,1
    - Dst: route_node_get
      Src: /src/frr/eigrpd/eigrp_network.c:199,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_network.c:202,1
    - Dst: prefix_new
      Src: /src/frr/eigrpd/eigrp_network.c:206,1
    - Dst: prefix_copy
      Src: /src/frr/eigrpd/eigrp_network.c:207,1
    - Dst: eigrp_router_id_update
      Src: /src/frr/eigrpd/eigrp_network.c:212,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_network.c:216,1
    - Dst: eigrp_network_run_interface
      Src: /src/frr/eigrpd/eigrp_network.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - eigrp
    - p
    argTypes:
    - struct eigrp*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 220
    functionName: eigrp_network_set
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - prefix_new
    - eigrp_network_run_interface
    - zlog_debug
    - route_node_get
    - eigrp_router_id_update
    - vrf_lookup_by_id
    - prefix_copy
    linkageType: ''
    returnType: int
    signature: int eigrp_network_set(struct eigrp *eigrp, struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_network.c:216,1
    - Dst: eigrp_network_run_interface
      Src: /src/frr/eigrpd/eigrp_network.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 218
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 2
    functionsReached:
    - eigrp_network_run_interface
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_match_network_statement
      Src: /src/frr/eigrpd/eigrp_network.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - co_prefix
    - net
    argTypes:
    - struct prefix*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 230
    functionName: eigrp_network_match_iface
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - prefix_match_network_statement
    linkageType: ''
    returnType: int
    signature: "int eigrp_network_match_iface(const struct prefix *co_prefix,\n\t\t\t\t
      \    const struct prefix *net)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_network.c:241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/eigrpd/eigrp_network.c:243,1
    - Dst: eigrp_network_match_iface
      Src: /src/frr/eigrpd/eigrp_network.c:247,1
    - Dst: eigrp_if_new
      Src: /src/frr/eigrpd/eigrp_network.c:249,1
    - Dst: if_is_operative
      Src: /src/frr/eigrpd/eigrp_network.c:259,1
    - Dst: eigrp_if_up
      Src: /src/frr/eigrpd/eigrp_network.c:260,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 3
    argNames:
    - eigrp
    - p
    - ifp
    argTypes:
    - struct eigrp*
    - struct prefix*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 263
    functionName: eigrp_network_run_interface
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - eigrp_network_match_iface
    - eigrp_if_up
    - if_is_operative
    - eigrp_if_new
    linkageType: ''
    returnType: void
    signature: "void eigrp_network_run_interface(struct eigrp *eigrp, struct prefix
      *p,\n\t\t\t\t\tstruct interface *ifp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_network.c:275,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_network.c:280,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_network.c:284,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_network.c:284,1
    - Dst: eigrp_network_run_interface
      Src: /src/frr/eigrpd/eigrp_network.c:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 288
    functionName: eigrp_if_update
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 2
    functionsReached:
    - eigrp_network_run_interface
    - route_top
    - route_next
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void eigrp_if_update(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/eigrpd/eigrp_network.c:298,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_network.c:303,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/eigrpd/eigrp_network.c:305,1
    - Dst: prefix_ipv4_free
      Src: /src/frr/eigrpd/eigrp_network.c:308,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_network.c:309,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_network.c:312,1
    - Dst: for
      Src: /src/frr/eigrpd/eigrp_network.c:315,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_network.c:315,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_network.c:315,1
    - Dst: eigrp_network_match_iface
      Src: /src/frr/eigrpd/eigrp_network.c:319,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_network.c:321,1
    - Dst: eigrp_if_free
      Src: /src/frr/eigrpd/eigrp_network.c:327,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - eigrp
    - p
    argTypes:
    - struct eigrp*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 329
    functionName: eigrp_network_unset
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - route_top
    - route_next
    - IPV4_ADDR_SAME
    - eigrp_network_match_iface
    - prefix_ipv4_free
    - ALL_LIST_ELEMENTS
    - for
    - eigrp_if_free
    linkageType: ''
    returnType: int
    signature: int eigrp_network_unset(struct eigrp *eigrp, struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - eigrp
    - type
    argTypes:
    - struct eigrp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: eigrp_external_routes_refresh
    functionSourceFile: /src/frr/eigrpd/eigrp_network.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void eigrp_external_routes_refresh(struct eigrp *eigrp, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: eigrp_vrf_new
    functionSourceFile: /src/frr/eigrpd/eigrp_vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int eigrp_vrf_new(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: eigrp_vrf_enable
    functionSourceFile: /src/frr/eigrpd/eigrp_vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int eigrp_vrf_enable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: eigrp_vrf_disable
    functionSourceFile: /src/frr/eigrpd/eigrp_vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int eigrp_vrf_disable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: eigrp_vrf_delete
    functionSourceFile: /src/frr/eigrpd/eigrp_vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int eigrp_vrf_delete(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/eigrpd/eigrp_vrf.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 37
    functionName: eigrp_vrf_init
    functionSourceFile: /src/frr/eigrpd/eigrp_vrf.c
    functionUses: 1
    functionsReached:
    - vrf_init
    linkageType: ''
    returnType: void
    signature: void eigrp_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ep
    - nbr
    argTypes:
    - struct eigrp_packet*
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: eigrp_retrans_count_exceeded
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int eigrp_retrans_count_exceeded(struct eigrp_packet *ep,\n\t\t\t\t\tstruct
      eigrp_neighbor *nbr)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_authTLV_MD5_new
      Src: /src/frr/eigrpd/eigrp_packet.c:101,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_packet.c:103,1
    - Dst: stream_get
      Src: /src/frr/eigrpd/eigrp_packet.c:104,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_packet.c:105,1
    - Dst: keychain_lookup
      Src: /src/frr/eigrpd/eigrp_packet.c:107,1
    - Dst: key_lookup_for_send
      Src: /src/frr/eigrpd/eigrp_packet.c:109,1
    - Dst: eigrp_authTLV_MD5_free
      Src: /src/frr/eigrpd/eigrp_packet.c:111,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:115,1
    - Dst: MD5Init
      Src: /src/frr/eigrpd/eigrp_packet.c:116,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:120,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:121,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:121,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:122,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:123,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:123,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:125,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:127,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:128,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:128,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:129,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:130,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:130,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:132,1
    - Dst: MD5Final
      Src: /src/frr/eigrpd/eigrp_packet.c:141,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_packet.c:144,1
    - Dst: stream_set_endp
      Src: /src/frr/eigrpd/eigrp_packet.c:146,1
    - Dst: stream_put
      Src: /src/frr/eigrpd/eigrp_packet.c:147,1
    - Dst: stream_set_endp
      Src: /src/frr/eigrpd/eigrp_packet.c:148,1
    - Dst: eigrp_authTLV_MD5_free
      Src: /src/frr/eigrpd/eigrp_packet.c:150,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 3
    argNames:
    - ei
    - s
    - flags
    argTypes:
    - struct eigrp_interface*
    - struct stream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 152
    functionName: eigrp_make_md5_digest
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 5
    functionsReached:
    - strlen
    - stream_set_getp
    - keychain_lookup
    - stream_put
    - memset
    - MD5Init
    - MD5Update
    - stream_get
    - stream_set_endp
    - key_lookup_for_send
    - eigrp_authTLV_MD5_free
    - eigrp_authTLV_MD5_new
    - memcpy
    - MD5Final
    linkageType: ''
    returnType: int
    signature: "int eigrp_make_md5_digest(struct eigrp_interface *ei, struct stream
      *s,\n\t\t\t  uint8_t flags)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:168,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:168,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:169,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_packet.c:171,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:171,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:172,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_packet.c:181,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:182,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:183,1
    - Dst: keychain_lookup
      Src: /src/frr/eigrpd/eigrp_packet.c:188,1
    - Dst: key_lookup_for_send
      Src: /src/frr/eigrpd/eigrp_packet.c:190,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:193,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:199,1
    - Dst: MD5Init
      Src: /src/frr/eigrpd/eigrp_packet.c:200,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:204,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:205,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:205,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:206,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:207,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:207,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:209,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:211,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:212,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:212,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:213,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:214,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:214,1
    - Dst: MD5Update
      Src: /src/frr/eigrpd/eigrp_packet.c:216,1
    - Dst: MD5Final
      Src: /src/frr/eigrpd/eigrp_packet.c:225,1
    - Dst: memcmp
      Src: /src/frr/eigrpd/eigrp_packet.c:228,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:229,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_packet.c:230,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 4
    argNames:
    - s
    - authTLV
    - nbr
    - flags
    argTypes:
    - struct stream*
    - struct TLV_MD5_Authentication_Type*
    - struct eigrp_neighbor*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 238
    functionName: eigrp_check_md5_digest
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached:
    - strlen
    - keychain_lookup
    - memset
    - MD5Init
    - MD5Update
    - memcmp
    - zlog_warn
    - key_lookup_for_send
    - MD5Final
    - ntohl
    - memcpy
    - IF_NAME
    linkageType: ''
    returnType: int
    signature: "int eigrp_check_md5_digest(struct stream *s,\n\t\t\t   struct TLV_MD5_Authentication_Type
      *authTLV,\n\t\t\t   struct eigrp_neighbor *nbr, uint8_t flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_authTLV_SHA256_new
      Src: /src/frr/eigrpd/eigrp_packet.c:259,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_packet.c:261,1
    - Dst: stream_get
      Src: /src/frr/eigrpd/eigrp_packet.c:262,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_packet.c:263,1
    - Dst: keychain_lookup
      Src: /src/frr/eigrpd/eigrp_packet.c:265,1
    - Dst: key_lookup_for_send
      Src: /src/frr/eigrpd/eigrp_packet.c:267,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:270,1
    - Dst: eigrp_authTLV_SHA256_free
      Src: /src/frr/eigrpd/eigrp_packet.c:273,1
    - Dst: inet_ntop
      Src: /src/frr/eigrpd/eigrp_packet.c:277,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:279,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_packet.c:281,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:281,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_packet.c:282,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:282,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:282,1
    - Dst: HMAC__SHA256_Init
      Src: /src/frr/eigrpd/eigrp_packet.c:283,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:284,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:284,1
    - Dst: HMAC__SHA256_Update
      Src: /src/frr/eigrpd/eigrp_packet.c:285,1
    - Dst: strlen
      Src: /src/frr/eigrpd/eigrp_packet.c:285,1
    - Dst: HMAC__SHA256_Final
      Src: /src/frr/eigrpd/eigrp_packet.c:286,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_packet.c:290,1
    - Dst: stream_set_endp
      Src: /src/frr/eigrpd/eigrp_packet.c:292,1
    - Dst: stream_put
      Src: /src/frr/eigrpd/eigrp_packet.c:293,1
    - Dst: stream_set_endp
      Src: /src/frr/eigrpd/eigrp_packet.c:294,1
    - Dst: eigrp_authTLV_SHA256_free
      Src: /src/frr/eigrpd/eigrp_packet.c:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 3
    argNames:
    - ei
    - s
    - flags
    argTypes:
    - struct eigrp_interface*
    - struct stream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 299
    functionName: eigrp_make_sha256_digest
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached:
    - strlen
    - stream_set_getp
    - keychain_lookup
    - stream_put
    - eigrp_authTLV_SHA256_free
    - memset
    - HMAC__SHA256_Update
    - HMAC__SHA256_Init
    - HMAC__SHA256_Final
    - inet_ntop
    - stream_get
    - zlog_warn
    - key_lookup_for_send
    - stream_set_endp
    - eigrp_authTLV_SHA256_new
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int eigrp_make_sha256_digest(struct eigrp_interface *ei, struct stream
      *s,\n\t\t\t     uint8_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - s
    - authTLV
    - nbr
    - flags
    argTypes:
    - struct stream*
    - struct TLV_SHA256_Authentication_Type*
    - struct eigrp_neighbor*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 306
    functionName: eigrp_check_sha256_digest
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int eigrp_check_sha256_digest(struct stream *s,\n\t\t\t      struct
      TLV_SHA256_Authentication_Type *authTLV,\n\t\t\t      struct eigrp_neighbor
      *nbr, uint8_t flags)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_packet.c:310,1
    - Dst: listhead
      Src: /src/frr/eigrpd/eigrp_packet.c:328,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_packet.c:329,1
    - Dst: listgetdata
      Src: /src/frr/eigrpd/eigrp_packet.c:330,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_packet.c:331,1
    - Dst: time
      Src: /src/frr/eigrpd/eigrp_packet.c:336,1
    - Dst: eigrp_fifo_next
      Src: /src/frr/eigrpd/eigrp_packet.c:340,1
    - Dst: flog_err
      Src: /src/frr/eigrpd/eigrp_packet.c:342,1
    - Dst: flog_err
      Src: /src/frr/eigrpd/eigrp_packet.c:348,1
    - Dst: eigrp_header_dump
      Src: /src/frr/eigrpd/eigrp_packet.c:350,1
    - Dst: eigrp_packet_delete
      Src: /src/frr/eigrpd/eigrp_packet.c:351,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:355,1
    - Dst: eigrp_if_ipmulticast
      Src: /src/frr/eigrpd/eigrp_packet.c:356,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:358,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:359,1
    - Dst: STREAM_DATA
      Src: /src/frr/eigrpd/eigrp_packet.c:369,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:370,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:371,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:373,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_packet.c:376,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:384,1
    - Dst: IN_MULTICAST
      Src: /src/frr/eigrpd/eigrp_packet.c:387,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:387,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:405,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:415,1
    - Dst: stream_pnt
      Src: /src/frr/eigrpd/eigrp_packet.c:423,1
    - Dst: sockopt_iphdrincl_swab_htosys
      Src: /src/frr/eigrpd/eigrp_packet.c:427,1
    - Dst: sendmsg
      Src: /src/frr/eigrpd/eigrp_packet.c:428,1
    - Dst: sockopt_iphdrincl_swab_systoh
      Src: /src/frr/eigrpd/eigrp_packet.c:429,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:431,1
    - Dst: STREAM_DATA
      Src: /src/frr/eigrpd/eigrp_packet.c:432,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_packet.c:433,1
    - Dst: lookup_msg
      Src: /src/frr/eigrpd/eigrp_packet.c:435,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_packet.c:436,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:440,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_packet.c:443,1
    - Dst: eigrp_packet_delete
      Src: /src/frr/eigrpd/eigrp_packet.c:446,1
    - Dst: eigrp_fifo_next
      Src: /src/frr/eigrpd/eigrp_packet.c:449,1
    - Dst: list_delete_node
      Src: /src/frr/eigrpd/eigrp_packet.c:451,1
    - Dst: list_isempty
      Src: /src/frr/eigrpd/eigrp_packet.c:455,1
    - Dst: event_add_write
      Src: /src/frr/eigrpd/eigrp_packet.c:456,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 80
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (ei)
      pos:
        line_end: 330
        line_start: 330
        source_file: /src/frr/eigrpd/eigrp_packet.c
    - condition: (node)
      pos:
        line_end: 328
        line_start: 328
        source_file: /src/frr/eigrpd/eigrp_packet.c
    constantsTouched: []
    func_position:
      end: 459
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 459
    functionName: eigrp_write
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - htons
    - listhead
    - flog_err
    - zlog_warn
    - htonl
    - eigrp_fifo_next
    - lookup_msg
    - event_add_write
    - memset
    - eigrp_if_ipmulticast
    - sockopt_iphdrincl_swab_htosys
    - zlog_debug
    - sockopt_iphdrincl_swab_systoh
    - safe_strerror
    - EVENT_ARG
    - listgetdata
    - ntohl
    - assert
    - list_delete_node
    - eigrp_packet_checksum
    - sendmsg
    - IN_MULTICAST
    - stream_pnt
    - IF_NAME
    - list_isempty
    - STREAM_DATA
    - eigrp_packet_delete
    - IS_DEBUG_EIGRP_TRANSMIT
    - eigrp_header_dump
    - time
    linkageType: ''
    returnType: void
    signature: void eigrp_write(struct event *thread)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_packet.c:477,1
    - Dst: event_add_read
      Src: /src/frr/eigrpd/eigrp_packet.c:480,1
    - Dst: stream_reset
      Src: /src/frr/eigrpd/eigrp_packet.c:482,1
    - Dst: eigrp_recv_packet
      Src: /src/frr/eigrpd/eigrp_packet.c:483,1
    - Dst: STREAM_DATA
      Src: /src/frr/eigrpd/eigrp_packet.c:491,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:500,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:501,1
    - Dst: eigrp_ip_header_dump
      Src: /src/frr/eigrpd/eigrp_packet.c:502,1
    - Dst: if_lookup_address
      Src: /src/frr/eigrpd/eigrp_packet.c:513,1
    - Dst: eigrp_if_lookup_by_local_addr
      Src: /src/frr/eigrpd/eigrp_packet.c:535,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/eigrpd/eigrp_packet.c:536,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:537,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_packet.c:538,1
    - Dst: stream_forward_getp
      Src: /src/frr/eigrpd/eigrp_packet.c:547,1
    - Dst: stream_pnt
      Src: /src/frr/eigrpd/eigrp_packet.c:548,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:550,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:551,1
    - Dst: eigrp_header_dump
      Src: /src/frr/eigrpd/eigrp_packet.c:552,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_packet.c:554,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:555,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_packet.c:556,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_packet.c:558,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_packet.c:559,1
    - Dst: eigrp_if_is_passive
      Src: /src/frr/eigrpd/eigrp_packet.c:564,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:565,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_packet.c:566,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_packet.c:568,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:571,1
    - Dst: eigrp_if_set_multicast
      Src: /src/frr/eigrpd/eigrp_packet.c:572,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:581,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:582,1
    - Dst: eigrp_verify_header
      Src: /src/frr/eigrpd/eigrp_packet.c:589,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:591,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_packet.c:592,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:602,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_packet.c:603,1
    - Dst: lookup_msg
      Src: /src/frr/eigrpd/eigrp_packet.c:605,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:606,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:606,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_packet.c:607,1
    - Dst: stream_forward_getp
      Src: /src/frr/eigrpd/eigrp_packet.c:610,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:613,1
    - Dst: eigrp_nbr_get
      Src: /src/frr/eigrpd/eigrp_packet.c:616,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_packet.c:619,1
    - Dst: eigrp_fifo_next
      Src: /src/frr/eigrpd/eigrp_packet.c:621,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:622,1
    - Dst: eigrp_fifo_pop
      Src: /src/frr/eigrpd/eigrp_packet.c:623,1
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_packet.c:624,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:627,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_packet.c:629,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_packet.c:630,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:635,1
    - Dst: eigrp_update_send_EOT
      Src: /src/frr/eigrpd/eigrp_packet.c:636,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_packet.c:638,1
    - Dst: eigrp_fifo_next
      Src: /src/frr/eigrpd/eigrp_packet.c:640,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:642,1
    - Dst: eigrp_fifo_pop
      Src: /src/frr/eigrpd/eigrp_packet.c:643,1
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_packet.c:644,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_packet.c:646,1
    - Dst: eigrp_hello_receive
      Src: /src/frr/eigrpd/eigrp_packet.c:655,1
    - Dst: eigrp_query_receive
      Src: /src/frr/eigrpd/eigrp_packet.c:662,1
    - Dst: eigrp_reply_receive
      Src: /src/frr/eigrpd/eigrp_packet.c:665,1
    - Dst: eigrp_query_receive
      Src: /src/frr/eigrpd/eigrp_packet.c:672,1
    - Dst: eigrp_reply_receive
      Src: /src/frr/eigrpd/eigrp_packet.c:675,1
    - Dst: eigrp_update_receive
      Src: /src/frr/eigrpd/eigrp_packet.c:678,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:681,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_packet.c:683,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 113
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 618
        line_start: 618
        source_file: /src/frr/eigrpd/eigrp_packet.c
    constantsTouched: []
    func_position:
      end: 686
      start: 462
    functionDepth: 4
    functionLinenumber: 462
    functionLinenumberEnd: 686
    functionName: eigrp_read
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - eigrp_if_is_passive
    - eigrp_query_receive
    - eigrp_ip_header_dump
    - ntohs
    - IPV4_ADDR_SAME
    - zlog_warn
    - eigrp_if_set_multicast
    - htonl
    - stream_reset
    - eigrp_fifo_next
    - lookup_msg
    - eigrp_update_send_EOT
    - eigrp_packet_free
    - zlog_debug
    - eigrp_send_packet_reliably
    - EVENT_ARG
    - ntohl
    - assert
    - eigrp_nbr_get
    - zlog_info
    - eigrp_update_receive
    - if_lookup_address
    - stream_forward_getp
    - eigrp_verify_header
    - eigrp_nbr_state_set
    - event_add_read
    - stream_pnt
    - eigrp_fifo_pop
    - IF_NAME
    - eigrp_if_lookup_by_local_addr
    - eigrp_recv_packet
    - STREAM_DATA
    - IS_DEBUG_EIGRP_TRANSMIT
    - eigrp_reply_receive
    - eigrp_header_dump
    - eigrp_hello_receive
    linkageType: ''
    returnType: void
    signature: void eigrp_read(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/eigrpd/eigrp_packet.c:698,1
    - Dst: SOPT_SIZE_CMSG_IFINDEX_IPV4
      Src: /src/frr/eigrpd/eigrp_packet.c:698,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:701,1
    - Dst: stream_recvmsg
      Src: /src/frr/eigrpd/eigrp_packet.c:707,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:709,1
    - Dst: safe_strerror
      Src: /src/frr/eigrpd/eigrp_packet.c:709,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:714,1
    - Dst: STREAM_DATA
      Src: /src/frr/eigrpd/eigrp_packet.c:722,1
    - Dst: sockopt_iphdrincl_swab_systoh
      Src: /src/frr/eigrpd/eigrp_packet.c:723,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_packet.c:751,1
    - Dst: getsockopt_ifindex
      Src: /src/frr/eigrpd/eigrp_packet.c:754,1
    - Dst: if_lookup_by_index
      Src: /src/frr/eigrpd/eigrp_packet.c:756,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:759,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - eigrp
    - fd
    - ifp
    - ibuf
    argTypes:
    - struct eigrp*
    - int
    - struct interface**
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 766
    functionName: eigrp_recv_packet
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached:
    - SOPT_SIZE_CMSG_IFINDEX_IPV4
    - if_lookup_by_index
    - getsockopt_ifindex
    - memset
    - STREAM_DATA
    - ntohs
    - zlog_warn
    - safe_strerror
    - sockopt_iphdrincl_swab_systoh
    - stream_recvmsg
    - CMSG_SPACE
    linkageType: ''
    returnType: struct stream
    signature: "struct stream *eigrp_recv_packet(struct eigrp *eigrp,\n\t\t\t\t\tint
      fd, struct interface **ifp,\n\t\t\t\t\tstruct stream *ibuf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_packet.c:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 774
    functionName: eigrp_fifo_new
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct eigrp_fifo
    signature: struct eigrp_fifo *eigrp_fifo_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_packet.c:784,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_packet.c:789,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct eigrp_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 777
    functionDepth: 1
    functionLinenumber: 777
    functionLinenumberEnd: 790
    functionName: eigrp_fifo_free
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - eigrp_packet_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void eigrp_fifo_free(struct eigrp_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_packet.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct eigrp_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 804
    functionName: eigrp_fifo_reset
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - eigrp_packet_free
    linkageType: ''
    returnType: void
    signature: void eigrp_fifo_reset(struct eigrp_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_packet.c:810,1
    - Dst: stream_new
      Src: /src/frr/eigrpd/eigrp_packet.c:811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - size
    - nbr
    argTypes:
    - size_t
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 816
    functionName: eigrp_packet_new
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 6
    functionsReached:
    - XCALLOC::XCALLOC
    - stream_new
    linkageType: ''
    returnType: struct eigrp_packet
    signature: struct eigrp_packet *eigrp_packet_new(size_t size, struct eigrp_neighbor
      *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_fifo_next
      Src: /src/frr/eigrpd/eigrp_packet.c:822,1
    - Dst: eigrp_packet_duplicate
      Src: /src/frr/eigrpd/eigrp_packet.c:826,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_packet.c:828,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_packet.c:831,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_packet.c:840,1
    - Dst: event_add_write
      Src: /src/frr/eigrpd/eigrp_packet.c:843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 846
    functionName: eigrp_send_packet_reliably
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 6
    functionsReached:
    - event_add_write
    - eigrp_packet_duplicate
    - listnode_add
    - eigrp_fifo_push
    - event_add_timer
    - eigrp_fifo_next
    linkageType: ''
    returnType: void
    signature: void eigrp_send_packet_reliably(struct eigrp_neighbor *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/eigrpd/eigrp_packet.c:854,1
    - Dst: in_cksum
      Src: /src/frr/eigrpd/eigrp_packet.c:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ei
    - s
    - length
    argTypes:
    - struct eigrp_interface*
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 858
    functionName: eigrp_packet_checksum
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 6
    functionsReached:
    - in_cksum
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: "void eigrp_packet_checksum(struct eigrp_interface *ei, struct stream
      *s,\n\t\t\t   uint16_t length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/eigrpd/eigrp_packet.c:866,1
    - Dst: STREAM_DATA
      Src: /src/frr/eigrpd/eigrp_packet.c:867,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:873,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:874,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:875,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:876,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:879,1
    - Dst: IS_DEBUG_EIGRP_TRANSMIT
      Src: /src/frr/eigrpd/eigrp_packet.c:881,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_packet.c:882,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:883,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:883,1
    - Dst: stream_forward_endp
      Src: /src/frr/eigrpd/eigrp_packet.c:885,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 6
    argNames:
    - type
    - eigrp
    - s
    - flags
    - sequence
    - ack
    argTypes:
    - int
    - struct eigrp*
    - struct stream*
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 886
    functionName: eigrp_packet_header_init
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 6
    functionsReached:
    - htons
    - stream_forward_endp
    - STREAM_DATA
    - zlog_debug
    - IS_DEBUG_EIGRP_TRANSMIT
    - htonl
    - stream_reset
    linkageType: ''
    returnType: void
    signature: "void eigrp_packet_header_init(int type, struct eigrp *eigrp, struct
      stream *s,\n\t\t\t      uint32_t flags, uint32_t sequence, uint32_t ack)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - fifo
    - ep
    argTypes:
    - struct eigrp_fifo*
    - struct eigrp_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 889
    functionDepth: 0
    functionLinenumber: 889
    functionLinenumberEnd: 903
    functionName: eigrp_fifo_push
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void eigrp_fifo_push(struct eigrp_fifo *fifo, struct eigrp_packet *ep)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct eigrp_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 909
    functionName: eigrp_fifo_next
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct eigrp_packet
    signature: struct eigrp_packet *eigrp_fifo_next(struct eigrp_fifo *fifo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_fifo_pop
      Src: /src/frr/eigrpd/eigrp_packet.c:915,1
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_packet.c:918,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 911
    functionDepth: 1
    functionLinenumber: 911
    functionLinenumberEnd: 919
    functionName: eigrp_packet_delete
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached:
    - eigrp_fifo_pop
    - eigrp_packet_free
    linkageType: ''
    returnType: void
    signature: void eigrp_packet_delete(struct eigrp_interface *ei)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/eigrpd/eigrp_packet.c:924,1
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrp_packet.c:926,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_packet.c:928,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ep
    argTypes:
    - struct eigrp_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 929
    functionName: eigrp_packet_free
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 6
    functionsReached:
    - stream_free
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void eigrp_packet_free(struct eigrp_packet *ep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_check_network_mask
      Src: /src/frr/eigrpd/eigrp_packet.c:936,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_packet.c:937,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_packet.c:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ibuf
    - ei
    - iph
    - eigrph
    argTypes:
    - struct stream*
    - struct eigrp_interface*
    - struct ip*
    - struct eigrp_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 949
    functionName: eigrp_verify_header
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - eigrp_check_network_mask
    - IF_NAME
    linkageType: ''
    returnType: int
    signature: "int eigrp_verify_header(struct stream *ibuf, struct eigrp_interface
      *ei,\n\t\t\t       struct ip *iph, struct eigrp_header *eigrph)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: masklen2ip
      Src: /src/frr/eigrpd/eigrp_packet.c:962,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/eigrpd/eigrp_packet.c:967,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ei
    - ip_src
    argTypes:
    - struct eigrp_interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 971
    functionName: eigrp_check_network_mask
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached:
    - IPV4_ADDR_SAME
    - masklen2ip
    linkageType: ''
    returnType: int
    signature: "int eigrp_check_network_mask(struct eigrp_interface *ei,\n\t\t\t\t
      \   struct in_addr ip_src)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_packet.c:976,1
    - Dst: eigrp_fifo_next
      Src: /src/frr/eigrpd/eigrp_packet.c:979,1
    - Dst: eigrp_packet_duplicate
      Src: /src/frr/eigrpd/eigrp_packet.c:983,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_packet.c:986,1
    - Dst: eigrp_retrans_count_exceeded
      Src: /src/frr/eigrpd/eigrp_packet.c:990,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_packet.c:995,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_packet.c:1001,1
    - Dst: event_add_write
      Src: /src/frr/eigrpd/eigrp_packet.c:1004,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 1007
    functionName: eigrp_unack_packet_retrans
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - eigrp_retrans_count_exceeded
    - eigrp_packet_duplicate
    - listnode_add
    - eigrp_fifo_push
    - EVENT_ARG
    - event_add_timer
    - eigrp_fifo_next
    linkageType: ''
    returnType: void
    signature: void eigrp_unack_packet_retrans(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_packet.c:1012,1
    - Dst: eigrp_fifo_next
      Src: /src/frr/eigrpd/eigrp_packet.c:1015,1
    - Dst: eigrp_packet_duplicate
      Src: /src/frr/eigrpd/eigrp_packet.c:1019,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_packet.c:1021,1
    - Dst: eigrp_retrans_count_exceeded
      Src: /src/frr/eigrpd/eigrp_packet.c:1025,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_packet.c:1030,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_packet.c:1036,1
    - Dst: event_add_write
      Src: /src/frr/eigrpd/eigrp_packet.c:1039,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1009
    functionDepth: 1
    functionLinenumber: 1009
    functionLinenumberEnd: 1042
    functionName: eigrp_unack_multicast_packet_retrans
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - eigrp_retrans_count_exceeded
    - eigrp_packet_duplicate
    - listnode_add
    - eigrp_fifo_push
    - EVENT_ARG
    - event_add_timer
    - eigrp_fifo_next
    linkageType: ''
    returnType: void
    signature: void eigrp_unack_multicast_packet_retrans(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct eigrp_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1063
    functionName: eigrp_fifo_pop
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct eigrp_packet
    signature: struct eigrp_packet *eigrp_fifo_pop(struct eigrp_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_packet.c:1070,1
    - Dst: eigrp_packet_new::eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_packet.c:1070,1
    - Dst: stream_copy
      Src: /src/frr/eigrpd/eigrp_packet.c:1075,1
    - Dst: s::s
      Src: /src/frr/eigrpd/eigrp_packet.c:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - old
    - nbr
    argTypes:
    - struct eigrp_packet*
    - struct eigrp_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1065
    functionDepth: 2
    functionLinenumber: 1065
    functionLinenumberEnd: 1078
    functionName: eigrp_packet_duplicate
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 4
    functionsReached:
    - s::s
    - stream_copy
    - EIGRP_PACKET_MTU
    - eigrp_packet_new::eigrp_packet_new
    linkageType: ''
    returnType: struct eigrp_packet
    signature: "struct eigrp_packet *eigrp_packet_duplicate(struct eigrp_packet *old,\n\t\t\t\t\t
      \   struct eigrp_neighbor *nbr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_packet.c:1084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1080
    functionDepth: 0
    functionLinenumber: 1080
    functionLinenumberEnd: 1088
    functionName: eigrp_IPv4_InternalTLV_new
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct TLV_IPv4_Internal_type
    signature: struct TLV_IPv4_Internal_type *eigrp_IPv4_InternalTLV_new(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_IPv4_InternalTLV_new
      Src: /src/frr/eigrpd/eigrp_packet.c:1095,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_packet.c:1097,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_packet.c:1098,1
    - Dst: stream_getl
      Src: /src/frr/eigrpd/eigrp_packet.c:1099,1
    - Dst: stream_getl
      Src: /src/frr/eigrpd/eigrp_packet.c:1100,1
    - Dst: stream_getl
      Src: /src/frr/eigrpd/eigrp_packet.c:1101,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1102,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1103,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1104,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1105,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1106,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1107,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1108,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1109,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1111,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1113,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1115,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1117,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_packet.c:1119,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:1121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1124
    functionName: eigrp_read_ipv4_tlv
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 2
    functionsReached:
    - stream_getw
    - stream_getl
    - htonl
    - stream_getc
    - eigrp_IPv4_InternalTLV_new
    linkageType: ''
    returnType: struct TLV_IPv4_Internal_type
    signature: struct TLV_IPv4_Internal_type *eigrp_read_ipv4_tlv(struct stream *s)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_packet.c:1131,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_packet.c:1143,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_packet.c:1154,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_packet.c:1165,1
    - Dst: stream_putw
      Src: /src/frr/eigrpd/eigrp_packet.c:1176,1
    - Dst: flog_err
      Src: /src/frr/eigrpd/eigrp_packet.c:1179,1
    - Dst: stream_putl
      Src: /src/frr/eigrpd/eigrp_packet.c:1183,1
    - Dst: stream_putl
      Src: /src/frr/eigrpd/eigrp_packet.c:1186,1
    - Dst: stream_putl
      Src: /src/frr/eigrpd/eigrp_packet.c:1187,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1188,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1189,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1190,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1191,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1192,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1193,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1194,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1195,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1197,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1199,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:1199,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1201,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:1201,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1203,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:1203,1
    - Dst: stream_putc
      Src: /src/frr/eigrpd/eigrp_packet.c:1205,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_packet.c:1205,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 72
    argCount: 2
    argNames:
    - s
    - pe
    argTypes:
    - struct stream*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1208
    functionName: eigrp_add_internalTLV_to_stream
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 3
    functionsReached:
    - stream_putw
    - flog_err
    - ntohl
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t eigrp_add_internalTLV_to_stream(struct stream *s,\n\t\t\t\t\t
      struct eigrp_prefix_descriptor *pe)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_authTLV_MD5_new
      Src: /src/frr/eigrpd/eigrp_packet.c:1217,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1219,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1220,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1221,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1222,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:1224,1
    - Dst: keychain_lookup
      Src: /src/frr/eigrpd/eigrp_packet.c:1226,1
    - Dst: key_lookup_for_send
      Src: /src/frr/eigrpd/eigrp_packet.c:1228,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_packet.c:1230,1
    - Dst: eigrp_authTLV_MD5_free
      Src: /src/frr/eigrpd/eigrp_packet.c:1232,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_packet.c:1237,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:1238,1
    - Dst: stream_put
      Src: /src/frr/eigrpd/eigrp_packet.c:1239,1
    - Dst: eigrp_authTLV_MD5_free
      Src: /src/frr/eigrpd/eigrp_packet.c:1241,1
    - Dst: eigrp_authTLV_MD5_free
      Src: /src/frr/eigrpd/eigrp_packet.c:1245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 2
    argNames:
    - s
    - ei
    argTypes:
    - struct stream*
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1248
    functionName: eigrp_add_authTLV_MD5_to_stream
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 6
    functionsReached:
    - keychain_lookup
    - htonl
    - memset
    - htons
    - stream_put
    - free
    - key_lookup_for_send
    - eigrp_authTLV_MD5_free
    - eigrp_authTLV_MD5_new
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t eigrp_add_authTLV_MD5_to_stream(struct stream *s,\n\t\t\t\t\t
      struct eigrp_interface *ei)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_authTLV_SHA256_new
      Src: /src/frr/eigrpd/eigrp_packet.c:1257,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1259,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1260,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1261,1
    - Dst: htons
      Src: /src/frr/eigrpd/eigrp_packet.c:1262,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:1264,1
    - Dst: keychain_lookup
      Src: /src/frr/eigrpd/eigrp_packet.c:1266,1
    - Dst: key_lookup_for_send
      Src: /src/frr/eigrpd/eigrp_packet.c:1268,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_packet.c:1270,1
    - Dst: eigrp_authTLV_SHA256_free
      Src: /src/frr/eigrpd/eigrp_packet.c:1272,1
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_packet.c:1278,1
    - Dst: stream_put
      Src: /src/frr/eigrpd/eigrp_packet.c:1279,1
    - Dst: eigrp_authTLV_SHA256_free
      Src: /src/frr/eigrpd/eigrp_packet.c:1281,1
    - Dst: eigrp_authTLV_SHA256_free
      Src: /src/frr/eigrpd/eigrp_packet.c:1285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 2
    argNames:
    - s
    - ei
    argTypes:
    - struct stream*
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1250
    functionDepth: 1
    functionLinenumber: 1250
    functionLinenumberEnd: 1288
    functionName: eigrp_add_authTLV_SHA256_to_stream
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 1
    functionsReached:
    - keychain_lookup
    - stream_put
    - memset
    - htons
    - eigrp_authTLV_SHA256_free
    - free
    - key_lookup_for_send
    - eigrp_authTLV_SHA256_new
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t eigrp_add_authTLV_SHA256_to_stream(struct stream *s,\n\t\t\t\t\t
      \   struct eigrp_interface *ei)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_packet.c:1294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1290
    functionDepth: 0
    functionLinenumber: 1290
    functionLinenumberEnd: 1298
    functionName: eigrp_authTLV_MD5_new
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 2
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct TLV_MD5_Authentication_Type
    signature: struct TLV_MD5_Authentication_Type *eigrp_authTLV_MD5_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_packet.c:1302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - authTLV
    argTypes:
    - struct TLV_MD5_Authentication_Type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1300
    functionDepth: 0
    functionLinenumber: 1300
    functionLinenumberEnd: 1303
    functionName: eigrp_authTLV_MD5_free
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void eigrp_authTLV_MD5_free(struct TLV_MD5_Authentication_Type *authTLV)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_packet.c:1309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1305
    functionDepth: 0
    functionLinenumber: 1305
    functionLinenumberEnd: 1313
    functionName: eigrp_authTLV_SHA256_new
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 2
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct TLV_SHA256_Authentication_Type
    signature: struct TLV_SHA256_Authentication_Type *eigrp_authTLV_SHA256_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_packet.c:1317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - authTLV
    argTypes:
    - struct TLV_SHA256_Authentication_Type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1315
    functionDepth: 0
    functionLinenumber: 1315
    functionLinenumberEnd: 1318
    functionName: eigrp_authTLV_SHA256_free
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void eigrp_authTLV_SHA256_free(struct TLV_SHA256_Authentication_Type
      *authTLV)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_packet.c:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - IPv4_InternalTLV
    argTypes:
    - struct TLV_IPv4_Internal_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1320
    functionDepth: 0
    functionLinenumber: 1320
    functionLinenumberEnd: 1324
    functionName: eigrp_IPv4_InternalTLV_free
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void eigrp_IPv4_InternalTLV_free(\n\tstruct TLV_IPv4_Internal_type
      *IPv4_InternalTLV)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/eigrpd/eigrp_packet.c:1330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1326
    functionDepth: 0
    functionLinenumber: 1326
    functionLinenumberEnd: 1333
    functionName: eigrp_SequenceTLV_new
    functionSourceFile: /src/frr/eigrpd/eigrp_packet.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct TLV_Sequence_Type
    signature: struct TLV_Sequence_Type *eigrp_SequenceTLV_new(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/eigrpd/eigrp_reply.c:60,1
    - Dst: memcpy
      Src: /src/frr/eigrpd/eigrp_reply.c:62,1
    - Dst: eigrp_update_prefix_apply
      Src: /src/frr/eigrpd/eigrp_reply.c:64,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_reply.c:66,1
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_reply.c:74,1
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_reply.c:74,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_reply.c:77,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_reply.c:83,1
    - Dst: eigrp_add_internalTLV_to_stream
      Src: /src/frr/eigrpd/eigrp_reply.c:87,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_reply.c:91,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_reply.c:95,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_reply.c:104,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_reply.c:107,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_reply.c:110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - nbr
    - pe
    argTypes:
    - struct eigrp_neighbor*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 111
    functionName: eigrp_send_reply
    functionSourceFile: /src/frr/eigrpd/eigrp_reply.c
    functionUses: 0
    functionsReached:
    - eigrp_add_internalTLV_to_stream
    - zlog_info
    - XCALLOC
    - eigrp_packet_header_init
    - eigrp_make_md5_digest
    - eigrp_update_prefix_apply
    - eigrp_packet_new
    - EIGRP_PACKET_MTU
    - eigrp_packet_checksum
    - eigrp_fifo_push
    - eigrp_add_authTLV_MD5_to_stream
    - eigrp_send_packet_reliably
    - XFREE
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void eigrp_send_reply(struct eigrp_neighbor *nbr,\n\t\t      struct
      eigrp_prefix_descriptor *pe)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_nbr_get
      Src: /src/frr/eigrpd/eigrp_reply.c:127,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_reply.c:130,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_reply.c:132,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_reply.c:135,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_reply.c:142,1
    - Dst: eigrp_read_ipv4_tlv
      Src: /src/frr/eigrpd/eigrp_reply.c:144,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_reply.c:150,1
    - Dst: flog_err
      Src: /src/frr/eigrpd/eigrp_reply.c:156,1
    - Dst: eigrp_IPv4_InternalTLV_free
      Src: /src/frr/eigrpd/eigrp_reply.c:160,1
    - Dst: eigrp_route_descriptor_lookup
      Src: /src/frr/eigrpd/eigrp_reply.c:166,1
    - Dst: eigrp_update_prefix_apply
      Src: /src/frr/eigrpd/eigrp_reply.c:168,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_reply.c:183,1
    - Dst: eigrp_IPv4_InternalTLV_free
      Src: /src/frr/eigrpd/eigrp_reply.c:185,1
    - Dst: eigrp_hello_send_ack
      Src: /src/frr/eigrpd/eigrp_reply.c:187,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 6
    argNames:
    - eigrp
    - iph
    - eigrph
    - s
    - ei
    - size
    argTypes:
    - struct eigrp*
    - struct ip*
    - struct eigrp_header*
    - struct stream*
    - struct eigrp_interface*
    - int
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/frr/eigrpd/eigrp_reply.c
    constantsTouched: []
    func_position:
      end: 188
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 188
    functionName: eigrp_reply_receive
    functionSourceFile: /src/frr/eigrpd/eigrp_reply.c
    functionUses: 1
    functionsReached:
    - eigrp_nbr_get
    - stream_set_getp
    - eigrp_read_ipv4_tlv
    - eigrp_fsm_event
    - eigrp_IPv4_InternalTLV_free
    - eigrp_topology_table_lookup_ipv4
    - stream_getw
    - eigrp_hello_send_ack
    - flog_err
    - eigrp_update_prefix_apply
    - eigrp_route_descriptor_lookup
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: "void eigrp_reply_receive(struct eigrp *eigrp, struct ip *iph,\n\t\t\t
      struct eigrp_header *eigrph, struct stream *s,\n\t\t\t struct eigrp_interface
      *ei, int size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/eigrpd/eigrp_interface.c:58,1
    - Dst: prefix_copy
      Src: /src/frr/eigrpd/eigrp_interface.c:62,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_interface.c:65,1
    - Dst: list_new
      Src: /src/frr/eigrpd/eigrp_interface.c:70,1
    - Dst: frr_sequence32_next
      Src: /src/frr/eigrpd/eigrp_interface.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 3
    argNames:
    - eigrp
    - ifp
    - p
    argTypes:
    - struct eigrp*
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 96
    functionName: eigrp_if_new
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - listnode_add
    - list_new
    - prefix_copy
    - frr_sequence32_next
    linkageType: ''
    returnType: struct eigrp_interface
    signature: "struct eigrp_interface *eigrp_if_new(struct eigrp *eigrp, struct interface
      *ifp,\n\t\t\t\t     struct prefix *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_interface.c:106,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_interface.c:109,1
    - Dst: eigrp_fifo_free
      Src: /src/frr/eigrpd/eigrp_interface.c:111,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_interface.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 116
    functionName: eigrp_if_delete_hook
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - list_delete
    - XFREE
    - eigrp_fifo_free
    linkageType: ''
    returnType: int
    signature: int eigrp_if_delete_hook(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_default_iftype
      Src: /src/frr/eigrpd/eigrp_interface.c:125,1
    - Dst: eigrp_if_update
      Src: /src/frr/eigrpd/eigrp_interface.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 118
    functionDepth: 4
    functionLinenumber: 118
    functionLinenumberEnd: 130
    functionName: eigrp_ifp_create
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 0
    functionsReached:
    - eigrp_default_iftype
    - eigrp_if_update
    linkageType: ''
    returnType: int
    signature: int eigrp_ifp_create(struct interface *ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_interface.c:136,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_interface.c:137,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_interface.c:144,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_interface.c:145,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_interface.c:155,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_interface.c:156,1
    - Dst: eigrp_if_reset
      Src: /src/frr/eigrpd/eigrp_interface.c:163,1
    - Dst: eigrp_if_up
      Src: /src/frr/eigrpd/eigrp_interface.c:167,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 170
    functionName: eigrp_ifp_up
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_EIGRP
    - zlog_debug
    - eigrp_if_reset
    - eigrp_if_up
    linkageType: ''
    returnType: int
    signature: int eigrp_ifp_up(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_interface.c:174,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_interface.c:175,1
    - Dst: eigrp_if_down
      Src: /src/frr/eigrpd/eigrp_interface.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 182
    functionName: eigrp_ifp_down
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_EIGRP
    - zlog_debug
    - eigrp_if_down
    linkageType: ''
    returnType: int
    signature: int eigrp_ifp_down(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_up
      Src: /src/frr/eigrpd/eigrp_interface.c:186,1
    - Dst: zlog_warn
      Src: /src/frr/eigrpd/eigrp_interface.c:187,1
    - Dst: IS_DEBUG_EIGRP
      Src: /src/frr/eigrpd/eigrp_interface.c:190,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_interface.c:191,1
    - Dst: eigrp_if_free
      Src: /src/frr/eigrpd/eigrp_interface.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 200
    functionName: eigrp_ifp_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_EIGRP
    - zlog_warn
    - zlog_debug
    - eigrp_if_free
    - if_is_up
    linkageType: ''
    returnType: int
    signature: int eigrp_ifp_destroy(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_zapi_callbacks
      Src: /src/frr/eigrpd/eigrp_interface.c:206,1
    - Dst: hook_register_prio
      Src: /src/frr/eigrpd/eigrp_interface.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 211
    functionName: eigrp_if_init
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - hook_register_prio
    - if_zapi_callbacks
    linkageType: ''
    returnType: void
    signature: void eigrp_if_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_interface.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - eip
    argTypes:
    - struct eigrp_if_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: eigrp_del_if_params
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void eigrp_del_if_params(struct eigrp_if_params *eip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_interface.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - metric
    - host_mtu
    argTypes:
    - struct eigrp_metrics*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: eigrp_mtu_convert
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: void eigrp_mtu_convert(struct eigrp_metrics *metric, uint32_t host_mtu)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_adjust_sndbuflen
      Src: /src/frr/eigrpd/eigrp_interface.c:247,1
    - Dst: eigrp_if_stream_set
      Src: /src/frr/eigrpd/eigrp_interface.c:249,1
    - Dst: eigrp_if_set_multicast
      Src: /src/frr/eigrpd/eigrp_interface.c:252,1
    - Dst: event_add_event
      Src: /src/frr/eigrpd/eigrp_interface.c:254,1
    - Dst: eigrp_bandwidth_to_scaled
      Src: /src/frr/eigrpd/eigrp_interface.c:257,1
    - Dst: eigrp_delay_to_scaled
      Src: /src/frr/eigrpd/eigrp_interface.c:258,1
    - Dst: eigrp_mtu_convert
      Src: /src/frr/eigrpd/eigrp_interface.c:261,1
    - Dst: eigrp_route_descriptor_new
      Src: /src/frr/eigrpd/eigrp_interface.c:268,1
    - Dst: eigrp_calculate_metrics
      Src: /src/frr/eigrpd/eigrp_interface.c:272,1
    - Dst: apply_mask
      Src: /src/frr/eigrpd/eigrp_interface.c:280,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_interface.c:281,1
    - Dst: eigrp_prefix_descriptor_new
      Src: /src/frr/eigrpd/eigrp_interface.c:285,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/eigrpd/eigrp_interface.c:287,1
    - Dst: prefix_copy
      Src: /src/frr/eigrpd/eigrp_interface.c:288,1
    - Dst: eigrp_calculate_metrics
      Src: /src/frr/eigrpd/eigrp_interface.c:295,1
    - Dst: eigrp_prefix_descriptor_add
      Src: /src/frr/eigrpd/eigrp_interface.c:297,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_interface.c:298,1
    - Dst: eigrp_route_descriptor_add
      Src: /src/frr/eigrpd/eigrp_interface.c:300,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_interface.c:302,1
    - Dst: eigrp_update_send
      Src: /src/frr/eigrpd/eigrp_interface.c:303,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_interface.c:307,1
    - Dst: eigrp_route_descriptor_add
      Src: /src/frr/eigrpd/eigrp_interface.c:312,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_interface.c:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 58
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 325
    functionName: eigrp_if_up
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 2
    functionsReached:
    - eigrp_delay_to_scaled
    - eigrp_topology_table_lookup_ipv4
    - listnode_add
    - eigrp_mtu_convert
    - eigrp_route_descriptor_add
    - prefix_ipv4_new
    - eigrp_if_set_multicast
    - eigrp_if_stream_set
    - eigrp_route_descriptor_new
    - eigrp_prefix_descriptor_new
    - prefix_copy
    - eigrp_adjust_sndbuflen
    - apply_mask
    - eigrp_fsm_event
    - eigrp_calculate_metrics
    - eigrp_update_send
    - listnode_delete
    - eigrp_bandwidth_to_scaled
    - eigrp_prefix_descriptor_add
    - ALL_LIST_ELEMENTS
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int eigrp_if_up(struct eigrp_interface *ei)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrp_interface.c:336,1
    - Dst: eigrp_if_stream_unset
      Src: /src/frr/eigrpd/eigrp_interface.c:338,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_interface.c:342,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrp_interface.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 347
    functionName: eigrp_if_down
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - eigrp_if_stream_unset
    - EVENT_OFF
    - eigrp_nbr_delete
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int eigrp_if_down(struct eigrp_interface *ei)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_fifo_new
      Src: /src/frr/eigrpd/eigrp_interface.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 354
    functionName: eigrp_if_stream_set
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - eigrp_fifo_new
    linkageType: ''
    returnType: void
    signature: void eigrp_if_stream_set(struct eigrp_interface *ei)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_interface.c:361,1
    - Dst: list_isempty
      Src: /src/frr/eigrpd/eigrp_interface.c:362,1
    - Dst: event_cancel
      Src: /src/frr/eigrpd/eigrp_interface.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 366
    functionName: eigrp_if_stream_unset
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - listnode_delete
    - event_cancel
    - list_isempty
    linkageType: ''
    returnType: void
    signature: void eigrp_if_stream_unset(struct eigrp_interface *ei)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 377
    functionName: eigrp_if_is_passive
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eigrp_if_is_passive(struct eigrp_interface *ei)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_if_is_passive
      Src: /src/frr/eigrpd/eigrp_interface.c:381,1
    - Dst: eigrp_if_add_allspfrouters
      Src: /src/frr/eigrpd/eigrp_interface.c:385,1
    - Dst: eigrp_if_drop_allspfrouters
      Src: /src/frr/eigrpd/eigrp_interface.c:396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 406
    functionName: eigrp_if_set_multicast
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 2
    functionsReached:
    - eigrp_if_is_passive
    - eigrp_if_drop_allspfrouters
    - eigrp_if_add_allspfrouters
    linkageType: ''
    returnType: void
    signature: void eigrp_if_set_multicast(struct eigrp_interface *ei)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_pointopoint
      Src: /src/frr/eigrpd/eigrp_interface.c:410,1
    - Dst: if_is_loopback
      Src: /src/frr/eigrpd/eigrp_interface.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 416
    functionName: eigrp_default_iftype
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - if_is_pointopoint
    - if_is_loopback
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t eigrp_default_iftype(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/eigrpd/eigrp_interface.c:425,1
    - Dst: eigrp_hello_send
      Src: /src/frr/eigrpd/eigrp_interface.c:426,1
    - Dst: apply_mask
      Src: /src/frr/eigrpd/eigrp_interface.c:430,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_interface.c:431,1
    - Dst: eigrp_prefix_descriptor_delete
      Src: /src/frr/eigrpd/eigrp_interface.c:434,1
    - Dst: eigrp_if_down
      Src: /src/frr/eigrpd/eigrp_interface.c:437,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_interface.c:439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ei
    - source
    argTypes:
    - struct eigrp_interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 440
    functionName: eigrp_if_free
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 4
    functionsReached:
    - eigrp_hello_send
    - eigrp_if_down
    - eigrp_prefix_descriptor_delete
    - apply_mask
    - event_cancel
    - eigrp_topology_table_lookup_ipv4
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: void eigrp_if_free(struct eigrp_interface *ei, int source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_if_down
      Src: /src/frr/eigrpd/eigrp_interface.c:451,1
    - Dst: eigrp_if_up
      Src: /src/frr/eigrpd/eigrp_interface.c:452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 444
    functionDepth: 4
    functionLinenumber: 444
    functionLinenumberEnd: 453
    functionName: eigrp_if_reset
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - eigrp_if_down
    - eigrp_if_up
    linkageType: ''
    returnType: void
    signature: void eigrp_if_reset(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_interface.c:462,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_interface.c:466,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/eigrpd/eigrp_interface.c:466,1
    - Dst: for
      Src: /src/frr/eigrpd/eigrp_interface.c:491,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_interface.c:491,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_interface.c:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - eigrp
    - ifp
    - address
    argTypes:
    - struct eigrp*
    - struct interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 499
    functionName: eigrp_if_lookup_by_local_addr
    functionSourceFile: /src/frr/eigrpd/eigrp_interface.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - IPV4_ADDR_SAME
    - if
    - for
    linkageType: ''
    returnType: struct eigrp_interface
    signature: "struct eigrp_interface *eigrp_if_lookup_by_local_addr(struct eigrp
      *eigrp,\n\t\t\t\t\t\t      struct interface *ifp,\n\t\t\t\t\t\t      struct
      in_addr address)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 79
    functionName: config_write_debug
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_dump.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: eigrp_neighbor_packet_queue_sum
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int eigrp_neighbor_packet_queue_sum(struct eigrp_interface *ei)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:101,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:102,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:103,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:104,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:105,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:106,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:107,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:108,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:109,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:110,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - iph
    argTypes:
    - struct ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 112
    functionName: eigrp_ip_header_dump
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void eigrp_ip_header_dump(struct ip *iph)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:120,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:121,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:122,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_dump.c:122,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:123,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_dump.c:123,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:124,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_dump.c:124,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:125,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_dump.c:125,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:126,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_dump.c:126,1
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_dump.c:127,1
    - Dst: ntohs
      Src: /src/frr/eigrpd/eigrp_dump.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - eigrph
    argTypes:
    - struct eigrp_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 128
    functionName: eigrp_header_dump
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 2
    functionsReached:
    - ntohs
    - zlog_debug
    - ntohl
    linkageType: ''
    returnType: void
    signature: void eigrp_header_dump(struct eigrp_header *eigrph)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: eigrp_if_name_string
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *eigrp_if_name_string(struct eigrp_interface *ei)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - eigrp
    argTypes:
    - struct vty*
    - struct eigrp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: show_ip_eigrp_interface_header
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_ip_eigrp_interface_header(struct vty *vty, struct eigrp *eigrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:152,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_dump.c:152,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:153,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:154,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:155,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:156,1
    - Dst: eigrp_neighbor_packet_queue_sum
      Src: /src/frr/eigrpd/eigrp_dump.c:157,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:158,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - eigrp
    - ei
    argTypes:
    - struct vty*
    - struct eigrp*
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 160
    functionName: show_ip_eigrp_interface_sub
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    - eigrp_neighbor_packet_queue_sum
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void show_ip_eigrp_interface_sub(struct vty *vty, struct eigrp *eigrp,\n\t\t\t\t
      struct eigrp_interface *ei)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:165,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:166,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:167,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:170,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:172,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:174,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - eigrp
    - ei
    argTypes:
    - struct vty*
    - struct eigrp*
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 177
    functionName: show_ip_eigrp_interface_detail
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void show_ip_eigrp_interface_detail(struct vty *vty, struct eigrp
      *eigrp,\n\t\t\t\t    struct eigrp_interface *ei)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - eigrp
    argTypes:
    - struct vty*
    - struct eigrp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 186
    functionName: show_ip_eigrp_neighbor_header
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_ip_eigrp_neighbor_header(struct vty *vty, struct eigrp *eigrp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:192,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_dump.c:192,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:194,1
    - Dst: event_timer_remain_second
      Src: /src/frr/eigrpd/eigrp_dump.c:195,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:197,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:198,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:199,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:200,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:204,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:207,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:209,1
    - Dst: eigrp_nbr_state_str
      Src: /src/frr/eigrpd/eigrp_dump.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - vty
    - nbr
    - detail
    argTypes:
    - struct vty*
    - struct eigrp_neighbor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 211
    functionName: show_ip_eigrp_neighbor_sub
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - event_timer_remain_second
    - vty_out
    - eigrp_nbr_state_str
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void show_ip_eigrp_neighbor_sub(struct vty *vty, struct eigrp_neighbor
      *nbr,\n\t\t\t\tint detail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:218,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - eigrp
    argTypes:
    - struct vty*
    - struct eigrp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 222
    functionName: show_ip_eigrp_topology_header
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_ip_eigrp_topology_header(struct vty *vty, struct eigrp *eigrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_dump.c:227,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:229,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:231,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:232,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:233,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_dump.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - tn
    argTypes:
    - struct vty*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 238
    functionName: show_ip_eigrp_prefix_descriptor
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - eigrp_topology_get_successor
    - list_delete
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void show_ip_eigrp_prefix_descriptor(struct vty *vty,\n\t\t\t\t     struct
      eigrp_prefix_descriptor *tn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_eigrp_prefix_descriptor
      Src: /src/frr/eigrpd/eigrp_dump.c:248,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:253,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_dump.c:254,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_dump.c:256,1
    - Dst: IF_NAME
      Src: /src/frr/eigrpd/eigrp_dump.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - vty
    - eigrp
    - te
    - first
    argTypes:
    - struct vty*
    - struct eigrp*
    - struct eigrp_route_descriptor*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 260
    functionName: show_ip_eigrp_route_descriptor
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    - IF_NAME
    - show_ip_eigrp_prefix_descriptor
    linkageType: ''
    returnType: void
    signature: "void show_ip_eigrp_route_descriptor(struct vty *vty, struct eigrp
      *eigrp,\n\t\t\t\t    struct eigrp_route_descriptor *te,\n\t\t\t\t    bool *first)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/eigrpd/eigrp_dump.c:553,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:555,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:556,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:557,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:558,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:559,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:561,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:562,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:563,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:564,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_dump.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 566
    functionName: eigrp_debug_init
    functionSourceFile: /src/frr/eigrpd/eigrp_dump.c
    functionUses: 1
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void eigrp_debug_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: IF_NAME
    functionSourceFile: /src/frr/eigrpd/eigrp_macros.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_NAME(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mtu
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: EIGRP_PACKET_MTU
    functionSourceFile: /src/frr/eigrpd/eigrp_macros.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EIGRP_PACKET_MTU(mtu)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - I
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: EIGRP_FSM_EVENT_SCHEDULE
    functionSourceFile: /src/frr/eigrpd/eigrp_macros.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EIGRP_FSM_EVENT_SCHEDULE(I, E)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/eigrpd/eigrp_neighbor.c:49,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_neighbor.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 58
    functionName: eigrp_nbr_new
    functionSourceFile: /src/frr/eigrpd/eigrp_neighbor.c
    functionUses: 1
    functionsReached:
    - eigrp_nbr_state_set
    - XCALLOC
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: struct eigrp_neighbor *eigrp_nbr_new(struct eigrp_interface *ei)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_nbr_new
      Src: /src/frr/eigrpd/eigrp_neighbor.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ei
    - eigrph
    - iph
    argTypes:
    - struct eigrp_interface*
    - struct eigrp_header*
    - struct ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: eigrp_nbr_add
    functionSourceFile: /src/frr/eigrpd/eigrp_neighbor.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_new
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *eigrp_nbr_add(struct eigrp_interface *ei,\n\t\t\t\t\t
      \   struct eigrp_header *eigrph,\n\t\t\t\t\t    struct ip *iph)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_neighbor.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ei
    - eigrph
    - iph
    argTypes:
    - struct eigrp_interface*
    - struct eigrp_header*
    - struct ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 90
    functionName: eigrp_nbr_get
    functionSourceFile: /src/frr/eigrpd/eigrp_neighbor.c
    functionUses: 5
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *eigrp_nbr_get(struct eigrp_interface *ei,\n\t\t\t\t
      \    struct eigrp_header *eigrph,\n\t\t\t\t     struct ip *iph)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_neighbor.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ei
    - addr
    argTypes:
    - struct eigrp_interface*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: eigrp_nbr_lookup_by_addr
    functionSourceFile: /src/frr/eigrpd/eigrp_neighbor.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *eigrp_nbr_lookup_by_addr(struct eigrp_interface
      *ei,\n\t\t\t\t\t\tstruct in_addr *addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_neighbor.c:145,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_neighbor.c:147,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrp_neighbor.c:160,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_neighbor.c:162,1
    - Dst: eigrp_topology_neighbor_down
      Src: /src/frr/eigrpd/eigrp_neighbor.c:164,1
    - Dst: event_cancel_event
      Src: /src/frr/eigrpd/eigrp_neighbor.c:167,1
    - Dst: eigrp_fifo_free
      Src: /src/frr/eigrpd/eigrp_neighbor.c:168,1
    - Dst: eigrp_fifo_free
      Src: /src/frr/eigrpd/eigrp_neighbor.c:169,1
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrp_neighbor.c:170,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_neighbor.c:173,1
    - Dst: XFREE
      Src: /src/frr/eigrpd/eigrp_neighbor.c:174,1
    - Dst: holddown_timer_expired
      Src: /src/frr/eigrpd/eigrp_neighbor.c:177,1
    - Dst: EVENT_ARG
      Src: /src/frr/eigrpd/eigrp_neighbor.c:179,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_neighbor.c:182,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_neighbor.c:183,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrp_neighbor.c:185,1
    - Dst: eigrp_nbr_state_get
      Src: /src/frr/eigrpd/eigrp_neighbor.c:188,1
    - Dst: eigrp_nbr_state_set
      Src: /src/frr/eigrpd/eigrp_neighbor.c:193,1
    - Dst: eigrp_nbr_state_get
      Src: /src/frr/eigrpd/eigrp_neighbor.c:197,1
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrp_neighbor.c:213,1
    - Dst: eigrp_fifo_free
      Src: /src/frr/eigrpd/eigrp_neighbor.c:217,1
    - Dst: eigrp_fifo_free
      Src: /src/frr/eigrpd/eigrp_neighbor.c:219,1
    - Dst: eigrp_fifo_new
      Src: /src/frr/eigrpd/eigrp_neighbor.c:222,1
    - Dst: eigrp_fifo_new
      Src: /src/frr/eigrpd/eigrp_neighbor.c:223,1
    - Dst: eigrp_nbr_state_str
      Src: /src/frr/eigrpd/eigrp_neighbor.c:229,1
    - Dst: eigrp_nbr_state_update
      Src: /src/frr/eigrpd/eigrp_neighbor.c:250,1
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrp_neighbor.c:263,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_neighbor.c:264,1
    - Dst: EVENT_OFF
      Src: /src/frr/eigrpd/eigrp_neighbor.c:270,1
    - Dst: event_add_timer
      Src: /src/frr/eigrpd/eigrp_neighbor.c:271,1
    - Dst: eigrp_nbr_count_get
      Src: /src/frr/eigrpd/eigrp_neighbor.c:278,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_neighbor.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - eigrp
    - nbr_addr
    argTypes:
    - struct eigrp*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 292
    functionName: eigrp_nbr_lookup_by_addr_process
    functionSourceFile: /src/frr/eigrpd/eigrp_neighbor.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_count_get
    - ifindex2ifname
    - eigrp_fifo_new
    - holddown_timer_expired
    - ALL_LIST_ELEMENTS_RO
    - eigrp_topology_neighbor_down
    - event_cancel_event
    - EVENT_ARG
    - eigrp_fifo_free
    - zlog_info
    - eigrp_nbr_delete
    - eigrp_nbr_state_str
    - eigrp_nbr_state_set
    - EVENT_OFF
    - eigrp_nbr_state_update
    - XFREE
    - listnode_delete
    - event_add_timer
    - eigrp_nbr_state_get
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct eigrp_neighbor
    signature: "struct eigrp_neighbor *eigrp_nbr_lookup_by_addr_process(struct eigrp
      *eigrp,\n\t\t\t\t\t\t\tstruct in_addr nbr_addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_neighbor.c:312,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_neighbor.c:313,1
    - Dst: vty_time_print
      Src: /src/frr/eigrpd/eigrp_neighbor.c:315,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_neighbor.c:316,1
    - Dst: ifindex2ifname
      Src: /src/frr/eigrpd/eigrp_neighbor.c:318,1
    - Dst: eigrp_hello_send
      Src: /src/frr/eigrpd/eigrp_neighbor.c:322,1
    - Dst: eigrp_nbr_delete
      Src: /src/frr/eigrpd/eigrp_neighbor.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - nbr
    - vty
    argTypes:
    - struct eigrp_neighbor*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 328
    functionName: eigrp_nbr_hard_restart
    functionSourceFile: /src/frr/eigrpd/eigrp_neighbor.c
    functionUses: 0
    functionsReached:
    - eigrp_hello_send
    - ifindex2ifname
    - vty_out
    - eigrp_nbr_delete
    - zlog_debug
    - vty_time_print
    linkageType: ''
    returnType: void
    signature: void eigrp_nbr_hard_restart(struct eigrp_neighbor *nbr, struct vty
      *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ne
    - ei
    argTypes:
    - struct eigrp_route_descriptor*
    - struct eigrp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 337
    functionName: eigrp_nbr_split_horizon_check
    functionSourceFile: /src/frr/eigrpd/eigrp_neighbor.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int eigrp_nbr_split_horizon_check(struct eigrp_route_descriptor *ne,\n\t\t\t\t
      \ struct eigrp_interface *ei)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_vty.c:53,1
    - Dst: eigrp_vty_get_eigrp
      Src: /src/frr/eigrpd/eigrp_vty.c:65,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_vty.c:70,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/eigrpd/eigrp_vty.c:72,1
    - Dst: vty_out
      Src: /src/frr/eigrpd/eigrp_vty.c:75,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_vty.c:80,1
    - Dst: eigrp_topology_helper
      Src: /src/frr/eigrpd/eigrp_vty.c:83,1
    - Dst: show_ip_eigrp_topology_header
      Src: /src/frr/eigrpd/eigrp_vty.c:89,1
    - Dst: route_top
      Src: /src/frr/eigrpd/eigrp_vty.c:91,1
    - Dst: route_next
      Src: /src/frr/eigrpd/eigrp_vty.c:91,1
    - Dst: eigrp_vty_display_prefix_entry
      Src: /src/frr/eigrpd/eigrp_vty.c:96,1
    - Dst: DEFPY
      Src: /src/frr/eigrpd/eigrp_vty.c:101,1
    - Dst: strncmp
      Src: /src/frr/eigrpd/eigrp_vty.c:113,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_vty.c:117,1
    - Dst: eigrp_topology_helper
      Src: /src/frr/eigrpd/eigrp_vty.c:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 4
    argNames:
    - vty
    - eigrp
    - pe
    - all
    argTypes:
    - struct vty*
    - struct eigrp*
    - struct eigrp_prefix_descriptor*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 124
    functionName: eigrp_vty_display_prefix_entry
    functionSourceFile: /src/frr/eigrpd/eigrp_vty.c
    functionUses: 1
    functionsReached:
    - vty_out
    - eigrp_vty_display_prefix_entry
    - show_ip_eigrp_topology_header
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - vrf_lookup_by_name
    - route_next
    - eigrp_lookup
    - strncmp
    - vrf_lookup_by_id
    - eigrp_vty_get_eigrp
    - DEFPY
    - eigrp_topology_helper
    linkageType: ''
    returnType: void
    signature: "void eigrp_vty_display_prefix_entry(struct vty *vty, struct eigrp
      *eigrp,\n\t\t\t\t\t   struct eigrp_prefix_descriptor *pe,\n\t\t\t\t\t   bool
      all)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_eigrp_interface_header
      Src: /src/frr/eigrpd/eigrp_vty.c:201,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_vty.c:203,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_vty.c:204,1
    - Dst: show_ip_eigrp_interface_sub
      Src: /src/frr/eigrpd/eigrp_vty.c:205,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_vty.c:206,1
    - Dst: show_ip_eigrp_interface_detail
      Src: /src/frr/eigrpd/eigrp_vty.c:207,1
    - Dst: DEFPY
      Src: /src/frr/eigrpd/eigrp_vty.c:212,1
    - Dst: strncmp
      Src: /src/frr/eigrpd/eigrp_vty.c:225,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_vty.c:229,1
    - Dst: eigrp_interface_helper
      Src: /src/frr/eigrpd/eigrp_vty.c:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - eigrp
    - ifname
    - detail
    argTypes:
    - struct vty*
    - struct eigrp*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 236
    functionName: eigrp_interface_helper
    functionSourceFile: /src/frr/eigrpd/eigrp_vty.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - show_ip_eigrp_interface_detail
    - eigrp_interface_helper
    - strncmp
    - eigrp_lookup
    - if
    - show_ip_eigrp_interface_header
    - DEFPY
    - show_ip_eigrp_interface_sub
    linkageType: ''
    returnType: void
    signature: "void eigrp_interface_helper(struct vty *vty, struct eigrp *eigrp,\n\t\t\t\t
      \  const char *ifname, const char *detail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_eigrp_neighbor_header
      Src: /src/frr/eigrpd/eigrp_vty.c:258,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_vty.c:260,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_vty.c:261,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_vty.c:262,1
    - Dst: show_ip_eigrp_neighbor_sub
      Src: /src/frr/eigrpd/eigrp_vty.c:264,1
    - Dst: DEFPY
      Src: /src/frr/eigrpd/eigrp_vty.c:271,1
    - Dst: strncmp
      Src: /src/frr/eigrpd/eigrp_vty.c:284,1
    - Dst: eigrp_lookup
      Src: /src/frr/eigrpd/eigrp_vty.c:288,1
    - Dst: eigrp_neighbors_helper
      Src: /src/frr/eigrpd/eigrp_vty.c:294,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 4
    argNames:
    - vty
    - eigrp
    - ifname
    - detail
    argTypes:
    - struct vty*
    - struct eigrp*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 295
    functionName: eigrp_neighbors_helper
    functionSourceFile: /src/frr/eigrpd/eigrp_vty.c
    functionUses: 1
    functionsReached:
    - show_ip_eigrp_neighbor_sub
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - eigrp_neighbors_helper
    - strncmp
    - eigrp_lookup
    - show_ip_eigrp_neighbor_header
    - ALL_LIST_ELEMENTS
    - DEFPY
    linkageType: ''
    returnType: void
    signature: "void eigrp_neighbors_helper(struct vty *vty, struct eigrp *eigrp,\n\t\t\t\t
      \  const char *ifname, const char *detail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:568,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:570,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:572,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 574
    functionName: eigrp_vty_show_init
    functionSourceFile: /src/frr/eigrpd/eigrp_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void eigrp_vty_show_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:580,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:581,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:582,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:584,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:585,1
    - Dst: install_element
      Src: /src/frr/eigrpd/eigrp_vty.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 587
    functionName: eigrp_vty_init
    functionSourceFile: /src/frr/eigrpd/eigrp_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void eigrp_vty_init(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - packet_type
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 182
    functionName: packet_type2str
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *packet_type2str(uint8_t packet_type)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum eigrp_fsm_states
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 200
    functionName: prefix_state2str
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *prefix_state2str(enum eigrp_fsm_states state)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - event
    argTypes:
    - enum eigrp_fsm_events
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 224
    functionName: fsm_state2str
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *fsm_state2str(enum eigrp_fsm_events event)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - change
    argTypes:
    - enum metric_change
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 238
    functionName: change2str
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *change2str(enum metric_change change)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_route_descriptor_new
      Src: /src/frr/eigrpd/eigrp_fsm.c:258,1
    - Dst: eigrp_topology_update_distance
      Src: /src/frr/eigrpd/eigrp_fsm.c:269,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:277,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:298,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:300,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_fsm.c:304,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:325,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_fsm.c:334,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:350,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:352,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_fsm.c:356,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:371,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_fsm.c:380,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 98
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 396
    functionName: eigrp_get_fsm_event
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - listnode_delete
    - eigrp_route_descriptor_new
    - listnode_head
    - eigrp_topology_update_distance
    linkageType: ''
    returnType: enum eigrp_fsm_events
    signature: enum eigrp_fsm_events eigrp_get_fsm_event(struct eigrp_fsm_action_message
      *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_get_fsm_event
      Src: /src/frr/eigrpd/eigrp_fsm.c:404,1
    - Dst: zlog_info
      Src: /src/frr/eigrpd/eigrp_fsm.c:406,1
    - Dst: prefix_state2str
      Src: /src/frr/eigrpd/eigrp_fsm.c:408,1
    - Dst: fsm_state2str
      Src: /src/frr/eigrpd/eigrp_fsm.c:409,1
    - Dst: packet_type2str
      Src: /src/frr/eigrpd/eigrp_fsm.c:410,1
    - Dst: change2str
      Src: /src/frr/eigrpd/eigrp_fsm.c:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 402
    functionDepth: 4
    functionLinenumber: 402
    functionLinenumberEnd: 415
    functionName: eigrp_fsm_event
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 6
    functionsReached:
    - change2str
    - zlog_info
    - fsm_state2str
    - eigrp_get_fsm_event
    - prefix_state2str
    - packet_type2str
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event(struct eigrp_fsm_action_message *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_fsm.c:425,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_fsm.c:428,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:430,1
    - Dst: eigrp_nbr_count_get
      Src: /src/frr/eigrpd/eigrp_fsm.c:435,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_fsm.c:437,1
    - Dst: eigrp_fsm_event_lr
      Src: /src/frr/eigrpd/eigrp_fsm.c:439,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (successors)
      pos:
        line_end: 427
        line_start: 427
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    constantsTouched: []
    func_position:
      end: 446
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 446
    functionName: eigrp_fsm_event_nq_fcn
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_count_get
    - eigrp_topology_get_successor
    - list_delete
    - eigrp_fsm_event_lr
    - listnode_add
    - listnode_head
    - assert
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_nq_fcn(struct eigrp_fsm_action_message *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_fsm.c:452,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_fsm.c:455,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:457,1
    - Dst: eigrp_nbr_count_get
      Src: /src/frr/eigrpd/eigrp_fsm.c:461,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_fsm.c:463,1
    - Dst: eigrp_fsm_event_lr
      Src: /src/frr/eigrpd/eigrp_fsm.c:465,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (successors)
      pos:
        line_end: 454
        line_start: 454
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    constantsTouched: []
    func_position:
      end: 472
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 472
    functionName: eigrp_fsm_event_q_fcn
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_count_get
    - eigrp_topology_get_successor
    - list_delete
    - eigrp_fsm_event_lr
    - listnode_add
    - listnode_head
    - assert
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_q_fcn(struct eigrp_fsm_action_message *msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:478,1
    - Dst: eigrp_metrics_is_same
      Src: /src/frr/eigrpd/eigrp_fsm.c:481,1
    - Dst: eigrp_send_reply
      Src: /src/frr/eigrpd/eigrp_fsm.c:487,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_fsm.c:489,1
    - Dst: eigrp_topology_update_node_flags
      Src: /src/frr/eigrpd/eigrp_fsm.c:492,1
    - Dst: eigrp_update_routing_table
      Src: /src/frr/eigrpd/eigrp_fsm.c:493,1
    - Dst: eigrp_send_reply
      Src: /src/frr/eigrpd/eigrp_fsm.c:497,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 474
    functionDepth: 4
    functionLinenumber: 474
    functionLinenumberEnd: 500
    functionName: eigrp_fsm_event_keep_state
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - eigrp_topology_update_node_flags
    - eigrp_update_routing_table
    - eigrp_send_reply
    - listnode_add
    - eigrp_metrics_is_same
    - listnode_head
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_keep_state(struct eigrp_fsm_action_message *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:506,1
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_fsm.c:512,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_fsm.c:514,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:516,1
    - Dst: eigrp_send_reply
      Src: /src/frr/eigrpd/eigrp_fsm.c:517,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:518,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_fsm.c:523,1
    - Dst: eigrp_topology_update_node_flags
      Src: /src/frr/eigrpd/eigrp_fsm.c:524,1
    - Dst: eigrp_update_routing_table
      Src: /src/frr/eigrpd/eigrp_fsm.c:525,1
    - Dst: eigrp_update_topology_table_prefix
      Src: /src/frr/eigrpd/eigrp_fsm.c:526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (successors)
      pos:
        line_end: 513
        line_start: 513
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    constantsTouched: []
    func_position:
      end: 530
      start: 502
    functionDepth: 4
    functionLinenumber: 502
    functionLinenumberEnd: 530
    functionName: eigrp_fsm_event_lr
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 2
    functionsReached:
    - eigrp_topology_get_successor
    - list_delete
    - eigrp_topology_update_node_flags
    - eigrp_update_routing_table
    - eigrp_send_reply
    - eigrp_update_topology_table_prefix
    - listnode_add
    - listnode_head
    - assert
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_lr(struct eigrp_fsm_action_message *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_fsm.c:534,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_fsm.c:537,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:539,1
    - Dst: eigrp_get_fsm_event
      Src: /src/frr/eigrpd/eigrp_fsm.c:545,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (successors)
      pos:
        line_end: 536
        line_start: 536
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    constantsTouched: []
    func_position:
      end: 551
      start: 532
    functionDepth: 4
    functionLinenumber: 532
    functionLinenumberEnd: 551
    functionName: eigrp_fsm_event_dinc
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - eigrp_topology_get_successor
    - list_delete
    - eigrp_get_fsm_event
    - listnode_head
    - assert
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_dinc(struct eigrp_fsm_action_message *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:557,1
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_fsm.c:566,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_fsm.c:568,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:570,1
    - Dst: eigrp_send_reply
      Src: /src/frr/eigrpd/eigrp_fsm.c:571,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:573,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_fsm.c:576,1
    - Dst: eigrp_topology_update_node_flags
      Src: /src/frr/eigrpd/eigrp_fsm.c:577,1
    - Dst: eigrp_update_routing_table
      Src: /src/frr/eigrpd/eigrp_fsm.c:578,1
    - Dst: eigrp_update_topology_table_prefix
      Src: /src/frr/eigrpd/eigrp_fsm.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (successors)
      pos:
        line_end: 567
        line_start: 567
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    constantsTouched: []
    func_position:
      end: 583
      start: 553
    functionDepth: 4
    functionLinenumber: 553
    functionLinenumberEnd: 583
    functionName: eigrp_fsm_event_lr_fcs
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - eigrp_topology_get_successor
    - list_delete
    - eigrp_topology_update_node_flags
    - eigrp_update_routing_table
    - eigrp_send_reply
    - eigrp_update_topology_table_prefix
    - listnode_add
    - listnode_head
    - assert
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_lr_fcs(struct eigrp_fsm_action_message *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_fsm.c:590,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_fsm.c:592,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:598,1
    - Dst: eigrp_nbr_count_get
      Src: /src/frr/eigrpd/eigrp_fsm.c:602,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_fsm.c:604,1
    - Dst: eigrp_fsm_event_lr
      Src: /src/frr/eigrpd/eigrp_fsm.c:606,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (successors)
      pos:
        line_end: 591
        line_start: 591
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    constantsTouched: []
    func_position:
      end: 613
      start: 585
    functionDepth: 5
    functionLinenumber: 585
    functionLinenumberEnd: 613
    functionName: eigrp_fsm_event_lr_fcn
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_count_get
    - eigrp_topology_get_successor
    - list_delete
    - eigrp_fsm_event_lr
    - listnode_add
    - listnode_head
    - assert
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_lr_fcn(struct eigrp_fsm_action_message *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_topology_get_successor
      Src: /src/frr/eigrpd/eigrp_fsm.c:617,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_fsm.c:620,1
    - Dst: listnode_head
      Src: /src/frr/eigrpd/eigrp_fsm.c:622,1
    - Dst: list_delete
      Src: /src/frr/eigrpd/eigrp_fsm.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct eigrp_fsm_action_message*
    assertStmts:
    - condition: (successors)
      pos:
        line_end: 619
        line_start: 619
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    constantsTouched: []
    func_position:
      end: 628
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 628
    functionName: eigrp_fsm_event_qact
    functionSourceFile: /src/frr/eigrpd/eigrp_fsm.c
    functionUses: 0
    functionsReached:
    - eigrp_topology_get_successor
    - list_delete
    - assert
    - listnode_head
    linkageType: ''
    returnType: int
    signature: int eigrp_fsm_event_qact(struct eigrp_fsm_action_message *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: DEFAULT_ROUTE_TYPE
    functionSourceFile: /src/frr/eigrpd/eigrp_const.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFAULT_ROUTE_TYPE(T)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/eigrpd/eigrp_query.c:49,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_query.c:54,1
    - Dst: eigrp_send_query
      Src: /src/frr/eigrpd/eigrp_query.c:55,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_query.c:59,1
    - Dst: listnode_delete
      Src: /src/frr/eigrpd/eigrp_query.c:63,1
    - Dst: eigrp_query_receive
      Src: /src/frr/eigrpd/eigrp_query.c:72,1
    - Dst: eigrp_nbr_get
      Src: /src/frr/eigrpd/eigrp_query.c:87,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_query.c:90,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_query.c:92,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_query.c:95,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_query.c:98,1
    - Dst: eigrp_read_ipv4_tlv
      Src: /src/frr/eigrpd/eigrp_query.c:100,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_query.c:106,1
    - Dst: eigrp_route_descriptor_lookup
      Src: /src/frr/eigrpd/eigrp_query.c:114,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_query.c:123,1
    - Dst: eigrp_IPv4_InternalTLV_free
      Src: /src/frr/eigrpd/eigrp_query.c:125,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_query.c:133,1
    - Dst: stream_getc
      Src: /src/frr/eigrpd/eigrp_query.c:136,1
    - Dst: eigrp_hello_send_ack
      Src: /src/frr/eigrpd/eigrp_query.c:140,1
    - Dst: eigrp_query_send_all
      Src: /src/frr/eigrpd/eigrp_query.c:141,1
    - Dst: eigrp_update_send_all
      Src: /src/frr/eigrpd/eigrp_query.c:142,1
    - Dst: eigrp_send_query
      Src: /src/frr/eigrpd/eigrp_query.c:145,1
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_query.c:154,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_query.c:156,1
    - Dst: if
      Src: /src/frr/eigrpd/eigrp_query.c:161,1
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_query.c:162,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_query.c:165,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_query.c:172,1
    - Dst: eigrp_add_internalTLV_to_stream
      Src: /src/frr/eigrpd/eigrp_query.c:178,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_query.c:180,1
    - Dst: listnode_add
      Src: /src/frr/eigrpd/eigrp_query.c:182,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_query.c:188,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_query.c:192,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_query.c:195,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_query.c:200,1
    - Dst: eigrp_packet_duplicate
      Src: /src/frr/eigrpd/eigrp_query.c:206,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_query.c:208,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_query.c:211,1
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_query.c:216,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_query.c:227,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_query.c:231,1
    - Dst: htonl
      Src: /src/frr/eigrpd/eigrp_query.c:234,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/eigrpd/eigrp_query.c:240,1
    - Dst: eigrp_packet_duplicate
      Src: /src/frr/eigrpd/eigrp_query.c:246,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_query.c:251,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - eigrp
    argTypes:
    - struct eigrp*
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/eigrpd/eigrp_query.c
    constantsTouched: []
    func_position:
      end: 255
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 255
    functionName: eigrp_query_send_all
    functionSourceFile: /src/frr/eigrpd/eigrp_query.c
    functionUses: 3
    functionsReached:
    - eigrp_add_internalTLV_to_stream
    - eigrp_topology_table_lookup_ipv4
    - eigrp_hello_send_ack
    - listnode_add
    - htonl
    - stream_getc
    - stream_set_getp
    - ALL_LIST_ELEMENTS_RO
    - eigrp_IPv4_InternalTLV_free
    - eigrp_packet_free
    - zlog_debug
    - eigrp_make_md5_digest
    - eigrp_send_packet_reliably
    - if
    - eigrp_add_authTLV_MD5_to_stream
    - ntohl
    - assert
    - eigrp_nbr_get
    - eigrp_packet_header_init
    - eigrp_fsm_event
    - eigrp_send_query
    - eigrp_packet_duplicate
    - eigrp_packet_new
    - eigrp_packet_checksum
    - eigrp_route_descriptor_lookup
    - listnode_delete
    - eigrp_update_send_all
    - eigrp_query_send_all
    - stream_getw
    - eigrp_fifo_push
    - EIGRP_PACKET_MTU
    - ALL_LIST_ELEMENTS
    - eigrp_query_receive
    - eigrp_read_ipv4_tlv
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t eigrp_query_send_all(struct eigrp *eigrp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_nbr_get
      Src: /src/frr/eigrpd/eigrp_siaquery.c:55,1
    - Dst: assert
      Src: /src/frr/eigrpd/eigrp_siaquery.c:58,1
    - Dst: ntohl
      Src: /src/frr/eigrpd/eigrp_siaquery.c:60,1
    - Dst: stream_getw
      Src: /src/frr/eigrpd/eigrp_siaquery.c:63,1
    - Dst: stream_set_getp
      Src: /src/frr/eigrpd/eigrp_siaquery.c:67,1
    - Dst: eigrp_read_ipv4_tlv
      Src: /src/frr/eigrpd/eigrp_siaquery.c:69,1
    - Dst: eigrp_topology_table_lookup_ipv4
      Src: /src/frr/eigrpd/eigrp_siaquery.c:75,1
    - Dst: eigrp_route_descriptor_lookup
      Src: /src/frr/eigrpd/eigrp_siaquery.c:83,1
    - Dst: eigrp_fsm_event
      Src: /src/frr/eigrpd/eigrp_siaquery.c:92,1
    - Dst: eigrp_IPv4_InternalTLV_free
      Src: /src/frr/eigrpd/eigrp_siaquery.c:94,1
    - Dst: eigrp_hello_send_ack
      Src: /src/frr/eigrpd/eigrp_siaquery.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 6
    argNames:
    - eigrp
    - iph
    - eigrph
    - s
    - ei
    - size
    argTypes:
    - struct eigrp*
    - struct ip*
    - struct eigrp_header*
    - struct stream*
    - struct eigrp_interface*
    - int
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/frr/eigrpd/eigrp_siaquery.c
    constantsTouched: []
    func_position:
      end: 98
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 98
    functionName: eigrp_siaquery_receive
    functionSourceFile: /src/frr/eigrpd/eigrp_siaquery.c
    functionUses: 0
    functionsReached:
    - eigrp_nbr_get
    - stream_set_getp
    - eigrp_read_ipv4_tlv
    - eigrp_fsm_event
    - eigrp_IPv4_InternalTLV_free
    - eigrp_topology_table_lookup_ipv4
    - stream_getw
    - eigrp_hello_send_ack
    - eigrp_route_descriptor_lookup
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: "void eigrp_siaquery_receive(struct eigrp *eigrp, struct ip *iph,\n\t\t\t
      \   struct eigrp_header *eigrph, struct stream *s,\n\t\t\t    struct eigrp_interface
      *ei, int size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: eigrp_packet_new
      Src: /src/frr/eigrpd/eigrp_siaquery.c:106,1
    - Dst: EIGRP_PACKET_MTU
      Src: /src/frr/eigrpd/eigrp_siaquery.c:106,1
    - Dst: eigrp_packet_header_init
      Src: /src/frr/eigrpd/eigrp_siaquery.c:109,1
    - Dst: eigrp_add_authTLV_MD5_to_stream
      Src: /src/frr/eigrpd/eigrp_siaquery.c:115,1
    - Dst: eigrp_add_internalTLV_to_stream
      Src: /src/frr/eigrpd/eigrp_siaquery.c:118,1
    - Dst: eigrp_make_md5_digest
      Src: /src/frr/eigrpd/eigrp_siaquery.c:122,1
    - Dst: eigrp_packet_checksum
      Src: /src/frr/eigrpd/eigrp_siaquery.c:126,1
    - Dst: eigrp_fifo_push
      Src: /src/frr/eigrpd/eigrp_siaquery.c:136,1
    - Dst: eigrp_send_packet_reliably
      Src: /src/frr/eigrpd/eigrp_siaquery.c:139,1
    - Dst: eigrp_packet_free
      Src: /src/frr/eigrpd/eigrp_siaquery.c:142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - nbr
    - pe
    argTypes:
    - struct eigrp_neighbor*
    - struct eigrp_prefix_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 143
    functionName: eigrp_send_siaquery
    functionSourceFile: /src/frr/eigrpd/eigrp_siaquery.c
    functionUses: 0
    functionsReached:
    - eigrp_add_internalTLV_to_stream
    - eigrp_packet_header_init
    - eigrp_packet_free
    - eigrp_make_md5_digest
    - eigrp_packet_new
    - eigrp_fifo_push
    - EIGRP_PACKET_MTU
    - eigrp_packet_checksum
    - eigrp_send_packet_reliably
    - eigrp_add_authTLV_MD5_to_stream
    linkageType: ''
    returnType: void
    signature: "void eigrp_send_siaquery(struct eigrp_neighbor *nbr,\n\t\t\t struct
      eigrp_prefix_descriptor *pe)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/eigrpd/eigrp_northbound.c:29,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_northbound.c:31,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:32,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_northbound.c:33,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:34,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_northbound.c:36,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:37,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_northbound.c:39,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:40,1
    - Dst: yang_dnode_exists
      Src: /src/frr/eigrpd/eigrp_northbound.c:41,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:42,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - dnode
    - em
    argTypes:
    - struct lyd_node*
    - struct eigrp_metrics*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 43
    functionName: redistribute_get_metrics
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint32
    - yang_dnode_exists
    - memset
    linkageType: ''
    returnType: void
    signature: "void redistribute_get_metrics(const struct lyd_node *dnode,\n\t\t\t\t
      \    struct eigrp_metrics *em)"
  - BBCount: 203
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/eigrpd/eigrp_northbound.c:51,1
    - Dst: strcmp
      Src: /src/frr/eigrpd/eigrp_northbound.c:52,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:76,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_northbound.c:78,1
    - Dst: eigrp_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:84,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:84,1
    - Dst: eigrp_finish_final
      Src: /src/frr/eigrpd/eigrp_northbound.c:89,1
    - Dst: nb_running_set_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:92,1
    - Dst: eigrpd_instance_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:99,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:110,1
    - Dst: eigrp_finish_final
      Src: /src/frr/eigrpd/eigrp_northbound.c:111,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:132,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/eigrpd/eigrp_northbound.c:133,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:152,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:172,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:181,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:182,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:191,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:192,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:193,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:218,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:219,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:220,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:243,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:266,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:267,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:285,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:307,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:308,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:327,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:350,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:351,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:370,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:393,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:394,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:413,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:436,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:437,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:456,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:479,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:480,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:499,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:522,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:523,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:542,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:565,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:566,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:585,1
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/eigrpd/eigrp_northbound.c:603,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:607,1
    - Dst: route_node_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:612,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_northbound.c:614,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:623,1
    - Dst: eigrp_network_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:624,1
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/eigrpd/eigrp_northbound.c:639,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:643,1
    - Dst: route_node_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:648,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_northbound.c:650,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:659,1
    - Dst: eigrp_network_unset
      Src: /src/frr/eigrpd/eigrp_northbound.c:660,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:679,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:696,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:718,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:719,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_northbound.c:721,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/eigrpd/eigrp_northbound.c:727,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:735,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:736,1
    - Dst: redistribute_get_metrics
      Src: /src/frr/eigrpd/eigrp_northbound.c:737,1
    - Dst: eigrp_redistribute_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:738,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:757,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:758,1
    - Dst: eigrp_redistribute_unset
      Src: /src/frr/eigrpd/eigrp_northbound.c:759,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:779,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:798,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:824,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:825,1
    - Dst: redistribute_get_metrics
      Src: /src/frr/eigrpd/eigrp_northbound.c:826,1
    - Dst: eigrp_redistribute_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:827,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:848,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:849,1
    - Dst: redistribute_get_metrics
      Src: /src/frr/eigrpd/eigrp_northbound.c:850,1
    - Dst: eigrp_redistribute_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:851,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:864,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:870,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:879,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:885,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:894,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:900,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:909,1
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:915,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:928,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:946,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:951,1
    - Dst: eigrp_if_reset
      Src: /src/frr/eigrpd/eigrp_northbound.c:952,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:969,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:987,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:992,1
    - Dst: eigrp_if_reset
      Src: /src/frr/eigrpd/eigrp_northbound.c:993,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1011,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1029,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1034,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1051,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1069,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1074,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:1094,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1114,1
    - Dst: eigrp_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:1123,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1123,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1125,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1134,1
    - Dst: eigrp_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:1135,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1135,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1137,1
    - Dst: nb_running_set_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1141,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1157,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:1178,1
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:1196,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1220,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:1221,1
    - Dst: keychain_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1239,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:1240,1
    - Dst: strdup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1246,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:1246,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_northbound.c:1251,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1255,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_northbound.c:1257,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1278,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_northbound.c:1280,1
    CyclomaticComplexity: 172
    EdgeCount: 172
    ICount: 653
    argCount: 2
    argNames:
    - eigrp
    - ifname
    argTypes:
    - struct eigrp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 1523
    functionName: eigrp_interface_lookup
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 1
    functionsReached:
    - nb_running_set_entry
    - eigrp_redistribute_set
    - keychain_lookup
    - vrf_lookup_by_name
    - strdup
    - yang_dnode_get_string
    - nb_running_unset_entry
    - vrf_bitmap_check
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - nb_running_get_entry
    - eigrp_redistribute_unset
    - eigrp_interface_lookup
    - yang_dnode_get_uint32
    - yang_dnode_get_uint16
    - eigrp_network_set
    - route_unlock_node
    - yang_dnode_get_uint8
    - free
    - yang_dnode_get_ipv4
    - eigrpd_instance_redistribute_metrics_bandwidth_modify
    - yang_dnode_get_ipv4p
    - eigrpd_instance_destroy
    - eigrp_network_unset
    - strcmp
    - eigrp_if_reset
    - eigrp_get
    - eigrp_finish_final
    - route_node_get
    - yang_dnode_get_enum
    - redistribute_get_metrics
    - eigrpd_instance_redistribute_metrics_bandwidth_destroy
    linkageType: ''
    returnType: struct eigrp_interface
    signature: "struct eigrp_interface *eigrp_interface_lookup(const struct eigrp
      *eigrp,\n\t\t\t\t\t\t      const char *ifname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 158
    functionName: eigrpd_instance_router_id_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_router_id_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:172,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:181,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:182,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:191,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:192,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:193,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 163
    functionDepth: 6
    functionLinenumber: 163
    functionLinenumberEnd: 202
    functionName: eigrpd_instance_passive_interface_create
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrp_interface_lookup
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_passive_interface_create(struct nb_cb_create_args
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:218,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:219,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 204
    functionDepth: 6
    functionLinenumber: 204
    functionLinenumberEnd: 229
    functionName: eigrpd_instance_passive_interface_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrp_interface_lookup
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_passive_interface_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 250
    functionName: eigrpd_instance_active_time_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_active_time_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:266,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 272
    functionName: eigrpd_instance_variance_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_variance_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 291
    functionName: eigrpd_instance_variance_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_variance_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:307,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:308,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 313
    functionName: eigrpd_instance_maximum_paths_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_maximum_paths_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 333
    functionName: eigrpd_instance_maximum_paths_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_maximum_paths_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:350,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 356
    functionName: eigrpd_instance_metric_weights_K1_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K1_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:370,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 376
    functionName: eigrpd_instance_metric_weights_K1_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K1_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:393,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 399
    functionName: eigrpd_instance_metric_weights_K2_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K2_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 419
    functionName: eigrpd_instance_metric_weights_K2_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K2_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:436,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:437,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 442
    functionName: eigrpd_instance_metric_weights_K3_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K3_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 462
    functionName: eigrpd_instance_metric_weights_K3_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K3_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:479,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:480,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 485
    functionName: eigrpd_instance_metric_weights_K4_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K4_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 505
    functionName: eigrpd_instance_metric_weights_K4_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K4_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:522,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:523,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 528
    functionName: eigrpd_instance_metric_weights_K5_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K5_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:542,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 548
    functionName: eigrpd_instance_metric_weights_K5_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K5_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:565,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/eigrpd/eigrp_northbound.c:566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 571
    functionName: eigrpd_instance_metric_weights_K6_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K6_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:585,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 591
    functionName: eigrpd_instance_metric_weights_K6_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_metric_weights_K6_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/eigrpd/eigrp_northbound.c:603,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:607,1
    - Dst: route_node_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:612,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_northbound.c:614,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:623,1
    - Dst: eigrp_network_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:624,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 596
    functionDepth: 3
    functionLinenumber: 596
    functionLinenumberEnd: 630
    functionName: eigrpd_instance_network_create
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - nb_running_get_entry
    - route_node_get
    - yang_dnode_get_ipv4p
    - eigrp_network_set
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_network_create(struct nb_cb_create_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/eigrpd/eigrp_northbound.c:639,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:643,1
    - Dst: route_node_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:648,1
    - Dst: route_unlock_node
      Src: /src/frr/eigrpd/eigrp_northbound.c:650,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:659,1
    - Dst: eigrp_network_unset
      Src: /src/frr/eigrpd/eigrp_northbound.c:660,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 632
    functionDepth: 3
    functionLinenumber: 632
    functionLinenumberEnd: 665
    functionName: eigrpd_instance_network_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - eigrp_network_unset
    - nb_running_get_entry
    - route_node_get
    - yang_dnode_get_ipv4p
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_network_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:679,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 670
    functionDepth: 0
    functionLinenumber: 670
    functionLinenumberEnd: 685
    functionName: eigrpd_instance_neighbor_create
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_neighbor_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:696,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 702
    functionName: eigrpd_instance_neighbor_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_neighbor_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:718,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:719,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/eigrpd/eigrp_northbound.c:721,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/eigrpd/eigrp_northbound.c:727,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:735,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:736,1
    - Dst: redistribute_get_metrics
      Src: /src/frr/eigrpd/eigrp_northbound.c:737,1
    - Dst: eigrp_redistribute_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:738,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 707
    functionDepth: 3
    functionLinenumber: 707
    functionLinenumberEnd: 743
    functionName: eigrpd_instance_redistribute_create
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - eigrp_redistribute_set
    - nb_running_get_entry
    - vrf_lookup_by_name
    - yang_dnode_get_string
    - yang_dnode_get_enum
    - redistribute_get_metrics
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_redistribute_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:757,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:758,1
    - Dst: eigrp_redistribute_unset
      Src: /src/frr/eigrpd/eigrp_northbound.c:759,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 745
    functionDepth: 3
    functionLinenumber: 745
    functionLinenumberEnd: 764
    functionName: eigrpd_instance_redistribute_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - eigrp_redistribute_unset
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_redistribute_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 786
    functionName: eigrpd_instance_redistribute_route_map_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_redistribute_route_map_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:798,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 805
    functionName: eigrpd_instance_redistribute_route_map_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_redistribute_route_map_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:824,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:825,1
    - Dst: redistribute_get_metrics
      Src: /src/frr/eigrpd/eigrp_northbound.c:826,1
    - Dst: eigrp_redistribute_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:827,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 810
    functionDepth: 3
    functionLinenumber: 810
    functionLinenumberEnd: 832
    functionName: eigrpd_instance_redistribute_metrics_bandwidth_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 1
    functionsReached:
    - yang_dnode_get_enum
    - redistribute_get_metrics
    - nb_running_get_entry
    - eigrp_redistribute_set
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_bandwidth_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:848,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:849,1
    - Dst: redistribute_get_metrics
      Src: /src/frr/eigrpd/eigrp_northbound.c:850,1
    - Dst: eigrp_redistribute_set
      Src: /src/frr/eigrpd/eigrp_northbound.c:851,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 834
    functionDepth: 3
    functionLinenumber: 834
    functionLinenumberEnd: 856
    functionName: eigrpd_instance_redistribute_metrics_bandwidth_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 1
    functionsReached:
    - yang_dnode_get_enum
    - redistribute_get_metrics
    - nb_running_get_entry
    - eigrp_redistribute_set
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_bandwidth_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 861
    functionDepth: 4
    functionLinenumber: 861
    functionLinenumberEnd: 865
    functionName: eigrpd_instance_redistribute_metrics_delay_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_modify
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_delay_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 867
    functionDepth: 4
    functionLinenumber: 867
    functionLinenumberEnd: 871
    functionName: eigrpd_instance_redistribute_metrics_delay_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_destroy
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_delay_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 876
    functionDepth: 4
    functionLinenumber: 876
    functionLinenumberEnd: 880
    functionName: eigrpd_instance_redistribute_metrics_reliability_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_modify
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_reliability_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 882
    functionDepth: 4
    functionLinenumber: 882
    functionLinenumberEnd: 886
    functionName: eigrpd_instance_redistribute_metrics_reliability_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_destroy
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_reliability_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 891
    functionDepth: 4
    functionLinenumber: 891
    functionLinenumberEnd: 895
    functionName: eigrpd_instance_redistribute_metrics_load_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_modify
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_redistribute_metrics_load_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 897
    functionDepth: 4
    functionLinenumber: 897
    functionLinenumberEnd: 901
    functionName: eigrpd_instance_redistribute_metrics_load_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_destroy
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_load_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_modify
      Src: /src/frr/eigrpd/eigrp_northbound.c:909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 906
    functionDepth: 4
    functionLinenumber: 906
    functionLinenumberEnd: 910
    functionName: eigrpd_instance_redistribute_metrics_mtu_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_modify
    linkageType: ''
    returnType: int
    signature: int eigrpd_instance_redistribute_metrics_mtu_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eigrpd_instance_redistribute_metrics_bandwidth_destroy
      Src: /src/frr/eigrpd/eigrp_northbound.c:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 912
    functionDepth: 4
    functionLinenumber: 912
    functionLinenumberEnd: 916
    functionName: eigrpd_instance_redistribute_metrics_mtu_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrpd_instance_redistribute_metrics_bandwidth_destroy
    linkageType: ''
    returnType: int
    signature: "int eigrpd_instance_redistribute_metrics_mtu_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:928,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:946,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:951,1
    - Dst: eigrp_if_reset
      Src: /src/frr/eigrpd/eigrp_northbound.c:952,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 921
    functionDepth: 5
    functionLinenumber: 921
    functionLinenumberEnd: 957
    functionName: lib_interface_eigrp_delay_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrp_if_reset
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_delay_modify(struct nb_cb_modify_args *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:969,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:987,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/eigrpd/eigrp_northbound.c:992,1
    - Dst: eigrp_if_reset
      Src: /src/frr/eigrpd/eigrp_northbound.c:993,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 962
    functionDepth: 5
    functionLinenumber: 962
    functionLinenumberEnd: 998
    functionName: lib_interface_eigrp_bandwidth_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - eigrp_if_reset
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_bandwidth_modify(struct nb_cb_modify_args *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1011,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1029,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1034,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1003
    functionDepth: 1
    functionLinenumber: 1003
    functionLinenumberEnd: 1039
    functionName: lib_interface_eigrp_hello_interval_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_hello_interval_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1051,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1069,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1074,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1079
    functionName: lib_interface_eigrp_hold_time_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_hold_time_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:1094,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1084
    functionDepth: 0
    functionLinenumber: 1084
    functionLinenumberEnd: 1101
    functionName: lib_interface_eigrp_split_horizon_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_split_horizon_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1114,1
    - Dst: eigrp_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:1123,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1123,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1125,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1134,1
    - Dst: eigrp_get
      Src: /src/frr/eigrpd/eigrp_northbound.c:1135,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/eigrpd/eigrp_northbound.c:1135,1
    - Dst: eigrp_interface_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1137,1
    - Dst: nb_running_set_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1141,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1106
    functionDepth: 6
    functionLinenumber: 1106
    functionLinenumberEnd: 1146
    functionName: lib_interface_eigrp_instance_create
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - eigrp_get
    - nb_running_get_entry
    - eigrp_interface_lookup
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_instance_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1148
    functionDepth: 0
    functionLinenumber: 1148
    functionLinenumberEnd: 1162
    functionName: lib_interface_eigrp_instance_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_instance_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:1178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1168
    functionDepth: 0
    functionLinenumber: 1168
    functionLinenumberEnd: 1184
    functionName: lib_interface_eigrp_instance_summarize_addresses_create
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int lib_interface_eigrp_instance_summarize_addresses_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/eigrpd/eigrp_northbound.c:1196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1186
    functionDepth: 0
    functionLinenumber: 1186
    functionLinenumberEnd: 1203
    functionName: lib_interface_eigrp_instance_summarize_addresses_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int lib_interface_eigrp_instance_summarize_addresses_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1220,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/eigrpd/eigrp_northbound.c:1221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1208
    functionDepth: 1
    functionLinenumber: 1208
    functionLinenumberEnd: 1226
    functionName: lib_interface_eigrp_instance_authentication_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_eigrp_instance_authentication_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: keychain_lookup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1239,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:1240,1
    - Dst: strdup
      Src: /src/frr/eigrpd/eigrp_northbound.c:1246,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/eigrpd/eigrp_northbound.c:1246,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_northbound.c:1251,1
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1255,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_northbound.c:1257,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1231
    functionDepth: 1
    functionLinenumber: 1231
    functionLinenumberEnd: 1264
    functionName: lib_interface_eigrp_instance_keychain_modify
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - keychain_lookup
    - free
    - nb_running_get_entry
    - strdup
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_instance_keychain_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/eigrpd/eigrp_northbound.c:1278,1
    - Dst: free
      Src: /src/frr/eigrpd/eigrp_northbound.c:1280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1266
    functionDepth: 1
    functionLinenumber: 1266
    functionLinenumberEnd: 1287
    functionName: lib_interface_eigrp_instance_keychain_destroy
    functionSourceFile: /src/frr/eigrpd/eigrp_northbound.c
    functionUses: 0
    functionsReached:
    - free
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_eigrp_instance_keychain_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tools/gen_northbound_callbacks.c:21,1
    - Dst: exit
      Src: /src/frr/tools/gen_northbound_callbacks.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 23
    functionName: usage
    functionSourceFile: /src/frr/tools/gen_northbound_callbacks.c
    functionUses: 4
    functionsReached:
    - fprintf
    - exit
    linkageType: ''
    returnType: void
    signature: void usage(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gen_northbound_callbacks.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: replace_hyphens_by_underscores
    functionSourceFile: /src/frr/tools/gen_northbound_callbacks.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: void
    signature: void replace_hyphens_by_underscores(char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/tools/gen_northbound_callbacks.c:115,1
    - Dst: CHECK_FLAG
      Src: /src/frr/tools/gen_northbound_callbacks.c:118,1
    - Dst: listnode_add_head
      Src: /src/frr/tools/gen_northbound_callbacks.c:123,1
    - Dst: memset
      Src: /src/frr/tools/gen_northbound_callbacks.c:126,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/tools/gen_northbound_callbacks.c:127,1
    - Dst: strlcat
      Src: /src/frr/tools/gen_northbound_callbacks.c:128,1
    - Dst: strlcat
      Src: /src/frr/tools/gen_northbound_callbacks.c:129,1
    - Dst: strlcat
      Src: /src/frr/tools/gen_northbound_callbacks.c:131,1
    - Dst: nb_operation_name
      Src: /src/frr/tools/gen_northbound_callbacks.c:131,1
    - Dst: list_delete
      Src: /src/frr/tools/gen_northbound_callbacks.c:132,1
    - Dst: replace_hyphens_by_underscores
      Src: /src/frr/tools/gen_northbound_callbacks.c:134,1
    - Dst: generate_prototype
      Src: /src/frr/tools/gen_northbound_callbacks.c:137,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:140,1
    - Dst: generate_prototypes
      Src: /src/frr/tools/gen_northbound_callbacks.c:143,1
    - Dst: YANG_ITER_CONTINUE
      Src: /src/frr/tools/gen_northbound_callbacks.c:154,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/tools/gen_northbound_callbacks.c:162,1
    - Dst: generate_callback_name
      Src: /src/frr/tools/gen_northbound_callbacks.c:165,1
    - Dst: generate_prototype
      Src: /src/frr/tools/gen_northbound_callbacks.c:167,1
    - Dst: generate_callback
      Src: /src/frr/tools/gen_northbound_callbacks.c:173,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:176,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:184,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:196,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:200,1
    - Dst: generate_callbacks
      Src: /src/frr/tools/gen_northbound_callbacks.c:203,1
    - Dst: YANG_ITER_CONTINUE
      Src: /src/frr/tools/gen_northbound_callbacks.c:216,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/tools/gen_northbound_callbacks.c:224,1
    - Dst: yang_snode_get_path
      Src: /src/frr/tools/gen_northbound_callbacks.c:230,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:233,1
    - Dst: generate_callback_name
      Src: /src/frr/tools/gen_northbound_callbacks.c:240,1
    - Dst: generate_callback
      Src: /src/frr/tools/gen_northbound_callbacks.c:242,1
    - Dst: generate_nb_nodes
      Src: /src/frr/tools/gen_northbound_callbacks.c:248,1
    - Dst: YANG_ITER_CONTINUE
      Src: /src/frr/tools/gen_northbound_callbacks.c:261,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/tools/gen_northbound_callbacks.c:269,1
    - Dst: yang_snode_get_path
      Src: /src/frr/tools/gen_northbound_callbacks.c:275,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:278,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:281,1
    - Dst: generate_callback_name
      Src: /src/frr/tools/gen_northbound_callbacks.c:285,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:287,1
    - Dst: nb_operation_name
      Src: /src/frr/tools/gen_northbound_callbacks.c:287,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:292,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:293,1
    - Dst: main
      Src: /src/frr/tools/gen_northbound_callbacks.c:299,1
    - Dst: getopt
      Src: /src/frr/tools/gen_northbound_callbacks.c:307,1
    - Dst: usage
      Src: /src/frr/tools/gen_northbound_callbacks.c:310,1
    - Dst: stat
      Src: /src/frr/tools/gen_northbound_callbacks.c:313,1
    - Dst: fprintf
      Src: /src/frr/tools/gen_northbound_callbacks.c:314,1
    - Dst: strerror
      Src: /src/frr/tools/gen_northbound_callbacks.c:316,1
    - Dst: exit
      Src: /src/frr/tools/gen_northbound_callbacks.c:317,1
    - Dst: S_ISDIR
      Src: /src/frr/tools/gen_northbound_callbacks.c:319,1
    - Dst: fprintf
      Src: /src/frr/tools/gen_northbound_callbacks.c:320,1
    - Dst: exit
      Src: /src/frr/tools/gen_northbound_callbacks.c:322,1
    - Dst: usage
      Src: /src/frr/tools/gen_northbound_callbacks.c:331,1
    - Dst: usage
      Src: /src/frr/tools/gen_northbound_callbacks.c:338,1
    - Dst: yang_init
      Src: /src/frr/tools/gen_northbound_callbacks.c:340,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/frr/tools/gen_northbound_callbacks.c:343,1
    - Dst: yang_module_load_all
      Src: /src/frr/tools/gen_northbound_callbacks.c:346,1
    - Dst: yang_module_find
      Src: /src/frr/tools/gen_northbound_callbacks.c:348,1
    - Dst: yang_module_load
      Src: /src/frr/tools/gen_northbound_callbacks.c:351,1
    - Dst: yang_init_loading_complete
      Src: /src/frr/tools/gen_northbound_callbacks.c:353,1
    - Dst: nb_nodes_create
      Src: /src/frr/tools/gen_northbound_callbacks.c:356,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:360,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/tools/gen_northbound_callbacks.c:361,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:362,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/tools/gen_northbound_callbacks.c:366,1
    - Dst: strlcpy
      Src: /src/frr/tools/gen_northbound_callbacks.c:368,1
    - Dst: replace_hyphens_by_underscores
      Src: /src/frr/tools/gen_northbound_callbacks.c:370,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:373,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:379,1
    - Dst: printf
      Src: /src/frr/tools/gen_northbound_callbacks.c:382,1
    - Dst: nb_nodes_delete
      Src: /src/frr/tools/gen_northbound_callbacks.c:386,1
    - Dst: yang_terminate
      Src: /src/frr/tools/gen_northbound_callbacks.c:387,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - snode
    - operation
    - buffer
    - size
    argTypes:
    - struct lysc_node*
    - enum nb_operation
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 390
    functionName: generate_callback_name
    functionSourceFile: /src/frr/tools/gen_northbound_callbacks.c
    functionUses: 1
    functionsReached:
    - replace_hyphens_by_underscores
    - list_delete
    - generate_prototypes
    - generate_prototype
    - YANG_ITER_CONTINUE
    - yang_snodes_iterate
    - yang_terminate
    - strlcat
    - exit
    - generate_callbacks
    - memset
    - yang_module_find
    - ALL_LIST_ELEMENTS_RO
    - fprintf
    - printf
    - generate_nb_nodes
    - yang_init_loading_complete
    - stat
    - yang_module_load_all
    - yang_module_load
    - main
    - yang_snode_get_path
    - strlcpy
    - generate_callback
    - getopt
    - ly_ctx_set_searchdir
    - S_ISDIR
    - nb_operation_name
    - nb_operation_is_valid
    - yang_init
    - nb_nodes_delete
    - strerror
    - CHECK_FLAG
    - generate_callback_name
    - usage
    - list_new
    - nb_nodes_create
    - listnode_add_head
    linkageType: ''
    returnType: void
    signature: "void generate_callback_name(const struct lysc_node *snode,\n\t\t\t\t
      \  enum nb_operation operation, char *buffer,\n\t\t\t\t   size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - str
    - ','
    - help
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 7
    functionName: DEFUN
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN(funcname, cmdname, str, help)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - str
    - ','
    - help
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 7
    functionDepth: 0
    functionLinenumber: 7
    functionLinenumberEnd: 10
    functionName: DEFUN_HIDDEN
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_HIDDEN(funcname, cmdname, str, help)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - str
    - ','
    - help
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 13
    functionName: DEFUN_NOSH
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_NOSH(funcname, cmdname, str, help)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - str
    - ','
    - help
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: DEFPY
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY(funcname, cmdname, str, help)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - str
    - ','
    - help
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 19
    functionName: DEFPY_HIDDEN
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY_HIDDEN(funcname, cmdname, str, help)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - str
    - ','
    - help
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 22
    functionName: DEFPY_NOSH
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY_NOSH(funcname, cmdname, str, help)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - list
    - ','
    - node
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: ALL_LIST_ELEMENTS_RO
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LIST_ELEMENTS_RO(list, node, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - list
    - ','
    - node
    - ','
    - nextnode
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: ALL_LIST_ELEMENTS
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LIST_ELEMENTS(list, node, nextnode, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: LIST_ENTRY
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_ENTRY(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: STREAM_GETC
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETC(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 58
    functionName: STREAM_GETW
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETW(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: STREAM_GETL
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETL(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: STREAM_GETF
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETF(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: STREAM_GETQ
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETQ(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - P
    - ','
    - STR
    - ','
    - SIZE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: STREAM_GET
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GET(P, STR, SIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - af
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: AF_FOREACH
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AF_FOREACH(af)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - afi
    - ','
    - safi
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_AFI_SAFI(afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - safi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: FOREACH_SAFI
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_SAFI(safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: frr_with_privs
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_with_privs(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: frr_with_mutex
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_with_mutex(m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - lsdb
    - ','
    - type
    - ','
    - adv_router
    - ','
    - lsa
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: ALL_LSDB_TYPED_ADVRTR
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LSDB_TYPED_ADVRTR(lsdb, type, adv_router, lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - lsdb
    - ','
    - type
    - ','
    - lsa
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: ALL_LSDB_TYPED
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LSDB_TYPED(lsdb, type, lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lsdb
    - ','
    - lsa
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: ALL_LSDB
    functionSourceFile: /src/frr/tools/cocci.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LSDB(lsdb, lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tools/permutations.c:24,1
    - Dst: exit
      Src: /src/frr/tools/permutations.c:25,1
    - Dst: XCALLOC
      Src: /src/frr/tools/permutations.c:27,1
    - Dst: strdup
      Src: /src/frr/tools/permutations.c:29,1
    - Dst: graph_new
      Src: /src/frr/tools/permutations.c:31,1
    - Dst: cmd_token_new
      Src: /src/frr/tools/permutations.c:33,1
    - Dst: graph_new_node
      Src: /src/frr/tools/permutations.c:34,1
    - Dst: cmd_graph_parse
      Src: /src/frr/tools/permutations.c:35,1
    - Dst: permute
      Src: /src/frr/tools/permutations.c:37,1
    - Dst: vector_slot
      Src: /src/frr/tools/permutations.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 38
    functionName: main
    functionSourceFile: /src/frr/tools/permutations.c
    functionUses: 3
    functionsReached:
    - exit
    - cmd_token_new
    - graph_new
    - XCALLOC
    - permute
    - vector_slot
    - strdup
    - fprintf
    - cmd_graph_parse
    - graph_new_node
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: llvm::unwrap
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:28,1
    - Dst: dbginfo::dbginfo
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:29,1
    - Dst: struct dbginfo*::finder::processModule
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:31,1
    - Dst: struct dbginfo*::finder::types
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:33,1
    - Dst: getMetadataID
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:34,1
    - Dst: llvm::DICompositeType*::getElements
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:39,1
    - Dst: struct dbginfo*::tab::emplace
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:42,1
    - Dst: std::move
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:42,1
    - Dst: getName
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:42,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - _mod
    argTypes:
    - LLVMModuleRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 46
    functionName: dbginfo_load
    functionSourceFile: /src/frr/tools/frr-llvm-debuginfo.cpp
    functionUses: 0
    functionsReached:
    - struct dbginfo*::finder::processModule
    - dbginfo::dbginfo
    - getName
    - std::move
    - getMetadataID
    - llvm::unwrap
    - struct dbginfo*::finder::types
    - llvm::DICompositeType*::getElements
    - struct dbginfo*::tab::emplace
    linkageType: ''
    returnType: struct dbginfo
    signature: struct dbginfo *dbginfo_load(LLVMModuleRef _mod)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: llvm::unwrap
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:55,1
    - Dst: llvm::Type*::isStructTy
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:57,1
    - Dst: llvm::StructType*::getStructName
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:61,1
    - Dst: auto::startswith
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:63,1
    - Dst: auto::drop_front
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:65,1
    - Dst: auto::find_last_of
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:67,1
    - Dst: auto::take_front
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:69,1
    - Dst: struct dbginfo*::tab::find
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:71,1
    - Dst: auto::str
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:71,1
    - Dst: struct dbginfo*::tab::end
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:72,1
    - Dst: auto::second::getElements
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:75,1
    - Dst: auto::size
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:76,1
    - Dst: auto::getMetadataID
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:81,1
    - Dst: strdup
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:86,1
    - Dst: auto::str
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:86,1
    - Dst: strdup
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:87,1
    - Dst: llvm::DIDerivedType*::getName
      Src: /src/frr/tools/frr-llvm-debuginfo.cpp:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 5
    argNames:
    - info
    - _typ
    - idx
    - struct_name
    - member_name
    argTypes:
    - struct dbginfo*
    - LLVMTypeRef
    - unsigned long long
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 89
    functionName: dbginfo_struct_member
    functionSourceFile: /src/frr/tools/frr-llvm-debuginfo.cpp
    functionUses: 0
    functionsReached:
    - auto::find_last_of
    - llvm::Type*::isStructTy
    - auto::getMetadataID
    - auto::startswith
    - llvm::StructType*::getStructName
    - auto::drop_front
    - struct dbginfo*::tab::find
    - llvm::unwrap
    - strdup
    - struct dbginfo*::tab::end
    - auto::second::getElements
    - llvm::DIDerivedType*::getName
    - auto::take_front
    - auto::str
    - auto::size
    linkageType: ''
    returnType: bool
    signature: "bool dbginfo_struct_member(struct dbginfo *info, LLVMTypeRef _typ,\n\t\t\t
      \  unsigned long long idx, char **struct_name,\n\t\t\t   char **member_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetDebugLocFilename
      Src: /src/frr/tools/frr-llvm-cg.c:41,1
    - Dst: LLVMGetDebugLocLine
      Src: /src/frr/tools/frr-llvm-cg.c:42,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:49,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:50,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:51,1
    - Dst: json_object_new_int64
      Src: /src/frr/tools/frr-llvm-cg.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - jsobj
    - obj
    argTypes:
    - struct json_object*
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: dbgloc_add
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - LLVMGetDebugLocLine
    - json_object_new_int64
    - LLVMGetDebugLocFilename
    - json_object_object_add
    - json_object_new_string_len
    linkageType: ''
    returnType: void
    signature: void dbgloc_add(struct json_object *jsobj, LLVMValueRef obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get
      Src: /src/frr/tools/frr-llvm-cg.c:60,1
    - Dst: maker
      Src: /src/frr/tools/frr-llvm-cg.c:63,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - parent
    - key
    - (*maker)(void)
    argTypes:
    - struct json_object*
    - char*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 66
    functionName: js_get_or_make
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - maker
    - json_object_object_get
    - json_object_object_add
    linkageType: ''
    returnType: struct json_object
    signature: "struct json_object *js_get_or_make(struct json_object *parent,\n\t\t\t\t\t
      \ const char *key,\n\t\t\t\t\t  struct json_object *(*maker)(void))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LLVMTypeOf
      Src: /src/frr/tools/frr-llvm-cg.c:73,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:73,1
    - Dst: LLVMGetNumOperands
      Src: /src/frr/tools/frr-llvm-cg.c:77,1
    - Dst: LLVMGetTypeKind
      Src: /src/frr/tools/frr-llvm-cg.c:78,1
    - Dst: LLVMGetTypeKind
      Src: /src/frr/tools/frr-llvm-cg.c:79,1
    - Dst: LLVMGetTypeKind
      Src: /src/frr/tools/frr-llvm-cg.c:80,1
    - Dst: LLVMGetElementType
      Src: /src/frr/tools/frr-llvm-cg.c:81,1
    - Dst: LLVMGetTypeKind
      Src: /src/frr/tools/frr-llvm-cg.c:85,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:88,1
    - Dst: LLVMIsConstant
      Src: /src/frr/tools/frr-llvm-cg.c:89,1
    - Dst: LLVMConstIntGetZExtValue
      Src: /src/frr/tools/frr-llvm-cg.c:91,1
    - Dst: LLVMGetNumContainedTypes
      Src: /src/frr/tools/frr-llvm-cg.c:93,1
    - Dst: LLVMGetSubtypes
      Src: /src/frr/tools/frr-llvm-cg.c:99,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:106,1
    - Dst: LLVMGetNumOperands
      Src: /src/frr/tools/frr-llvm-cg.c:106,1
    - Dst: LLVMIsConstant
      Src: /src/frr/tools/frr-llvm-cg.c:107,1
    - Dst: LLVMConstIntGetZExtValue
      Src: /src/frr/tools/frr-llvm-cg.c:110,1
    - Dst: dbginfo_struct_member
      Src: /src/frr/tools/frr-llvm-cg.c:114,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:115,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:118,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:119,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:120,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:121,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:122,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:123,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:126,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:127,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 3
    argNames:
    - js_call
    - gep
    - prefix
    argTypes:
    - struct json_object*
    - LLVMValueRef
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 130
    functionName: try_struct_fptr
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - LLVMIsConstant
    - LLVMGetSubtypes
    - LLVMTypeOf
    - LLVMGetNumContainedTypes
    - LLVMGetTypeKind
    - LLVMConstIntGetZExtValue
    - free
    - fprintf
    - json_object_new_string
    - json_object_object_add
    - LLVMGetOperand
    - LLVMGetElementType
    - dbginfo_struct_member
    - LLVMGetNumOperands
    linkageType: ''
    returnType: bool
    signature: "bool try_struct_fptr(struct json_object *js_call, LLVMValueRef gep,\n\t\t\t
      \   const char *prefix)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LLVMIsAGlobalVariable
      Src: /src/frr/tools/frr-llvm-cg.c:148,1
    - Dst: LLVMGlobalGetValueType
      Src: /src/frr/tools/frr-llvm-cg.c:149,1
    - Dst: LLVMGetInitializer
      Src: /src/frr/tools/frr-llvm-cg.c:150,1
    - Dst: LLVMTypeOf
      Src: /src/frr/tools/frr-llvm-cg.c:152,1
    - Dst: LLVMIsAFunction
      Src: /src/frr/tools/frr-llvm-cg.c:155,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:158,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:162,1
    - Dst: json_object_array_length
      Src: /src/frr/tools/frr-llvm-cg.c:164,1
    - Dst: json_object_array_get_idx
      Src: /src/frr/tools/frr-llvm-cg.c:169,1
    - Dst: json_object_get_string
      Src: /src/frr/tools/frr-llvm-cg.c:170,1
    - Dst: strcmp
      Src: /src/frr/tools/frr-llvm-cg.c:172,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:177,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:183,1
    - Dst: json_object_array_add
      Src: /src/frr/tools/frr-llvm-cg.c:186,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:187,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:192,1
    - Dst: LLVMCountStructElementTypes
      Src: /src/frr/tools/frr-llvm-cg.c:209,1
    - Dst: walk_const_fptrs
      Src: /src/frr/tools/frr-llvm-cg.c:211,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:211,1
    - Dst: LLVMGetArrayLength
      Src: /src/frr/tools/frr-llvm-cg.c:216,1
    - Dst: walk_const_fptrs
      Src: /src/frr/tools/frr-llvm-cg.c:218,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:218,1
    - Dst: LLVMGetConstOpcode
      Src: /src/frr/tools/frr-llvm-cg.c:223,1
    - Dst: try_struct_fptr
      Src: /src/frr/tools/frr-llvm-cg.c:225,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:230,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:238,1
    - Dst: LLVMPrintValueToString
      Src: /src/frr/tools/frr-llvm-cg.c:243,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:244,1
    - Dst: LLVMGetConstOpcode
      Src: /src/frr/tools/frr-llvm-cg.c:245,1
    - Dst: LLVMDisposeMessage
      Src: /src/frr/tools/frr-llvm-cg.c:246,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:253,1
    - Dst: LLVMPrintValueToString
      Src: /src/frr/tools/frr-llvm-cg.c:258,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:259,1
    - Dst: LLVMDisposeMessage
      Src: /src/frr/tools/frr-llvm-cg.c:263,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 72
    argCount: 4
    argNames:
    - js_call
    - value
    - prefix
    - hdr_written
    argTypes:
    - struct json_object*
    - LLVMValueRef
    - char*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 267
    functionName: walk_const_fptrs
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 1
    functionsReached:
    - LLVMGetConstOpcode
    - LLVMIsAFunction
    - walk_const_fptrs
    - js_get_or_make
    - LLVMIsAGlobalVariable
    - LLVMDisposeMessage
    - LLVMTypeOf
    - try_struct_fptr
    - fprintf
    - LLVMGetValueKind
    - LLVMPrintValueToString
    - LLVMGetValueName2
    - LLVMGetInitializer
    - LLVMGlobalGetValueType
    - json_object_new_string_len
    - json_object_get_string
    - LLVMGetOperand
    - json_object_array_length
    - json_object_array_add
    - LLVMGetArrayLength
    - strcmp
    - LLVMCountStructElementTypes
    - json_object_array_get_idx
    linkageType: ''
    returnType: void
    signature: "void walk_const_fptrs(struct json_object *js_call, LLVMValueRef value,\n\t\t\t
      \    const char *prefix, bool *hdr_written)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/tools/frr-llvm-cg.c:284,1
    - Dst: memcmp
      Src: /src/frr/tools/frr-llvm-cg.c:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - name
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 290
    functionName: is_thread_sched
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - strlen
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool is_thread_sched(const char *name, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LLVMPrintValueToString
      Src: /src/frr/tools/frr-llvm-cg.c:298,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:299,1
    - Dst: LLVMDisposeMessage
      Src: /src/frr/tools/frr-llvm-cg.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cond
    - text
    - dumpval
    argTypes:
    - bool
    - char*
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 302
    functionName: _check_val
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - fprintf
    - LLVMDisposeMessage
    - LLVMPrintValueToString
    linkageType: ''
    returnType: bool
    signature: bool _check_val(bool cond, const char *text, LLVMValueRef dumpval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cond
    - ','
    - dump
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: check_val
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_val(cond, dump)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LLVMIsAConstant
      Src: /src/frr/tools/frr-llvm-cg.c:310,1
    - Dst: strdup
      Src: /src/frr/tools/frr-llvm-cg.c:311,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:313,1
    - Dst: LLVMGetConstOpcode
      Src: /src/frr/tools/frr-llvm-cg.c:314,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:315,1
    - Dst: LLVMIsAConstant
      Src: /src/frr/tools/frr-llvm-cg.c:317,1
    - Dst: strdup
      Src: /src/frr/tools/frr-llvm-cg.c:318,1
    - Dst: LLVMIsAGlobalVariable
      Src: /src/frr/tools/frr-llvm-cg.c:321,1
    - Dst: LLVMGetInitializer
      Src: /src/frr/tools/frr-llvm-cg.c:322,1
    - Dst: LLVMGetAsString
      Src: /src/frr/tools/frr-llvm-cg.c:325,1
    - Dst: strndup
      Src: /src/frr/tools/frr-llvm-cg.c:327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - value
    argTypes:
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 328
    functionName: get_string
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 23
    functionsReached:
    - LLVMIsAGlobalVariable
    - LLVMGetConstOpcode
    - strdup
    - LLVMGetInitializer
    - LLVMGetValueKind
    - LLVMIsAConstant
    - LLVMGetOperand
    - strndup
    - LLVMGetAsString
    linkageType: ''
    returnType: char
    signature: char *get_string(LLVMValueRef value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:333,1
    - Dst: LLVMIsAGlobalVariable
      Src: /src/frr/tools/frr-llvm-cg.c:333,1
    - Dst: LLVMGetInitializer
      Src: /src/frr/tools/frr-llvm-cg.c:337,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:338,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:340,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:343,1
    - Dst: memcpy
      Src: /src/frr/tools/frr-llvm-cg.c:346,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:351,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:352,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:353,1
    - Dst: get_string
      Src: /src/frr/tools/frr-llvm-cg.c:355,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:355,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:356,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:357,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:358,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:360,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:361,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:362,1
    - Dst: LLVMGetArrayLength
      Src: /src/frr/tools/frr-llvm-cg.c:364,1
    - Dst: LLVMTypeOf
      Src: /src/frr/tools/frr-llvm-cg.c:364,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:368,1
    - Dst: get_string
      Src: /src/frr/tools/frr-llvm-cg.c:369,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:369,1
    - Dst: json_object_new_object
      Src: /src/frr/tools/frr-llvm-cg.c:371,1
    - Dst: json_object_array_add
      Src: /src/frr/tools/frr-llvm-cg.c:372,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:374,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:375,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:376,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:378,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:380,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:382,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:382,1
    - Dst: LLVMTypeOf
      Src: /src/frr/tools/frr-llvm-cg.c:385,1
    - Dst: LLVMCountStructElementTypes
      Src: /src/frr/tools/frr-llvm-cg.c:386,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:389,1
    - Dst: dbginfo_struct_member
      Src: /src/frr/tools/frr-llvm-cg.c:394,1
    - Dst: LLVMIsAFunction
      Src: /src/frr/tools/frr-llvm-cg.c:399,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:403,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:405,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:407,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:411,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 2
    argNames:
    - js_special
    - yang_mod
    argTypes:
    - struct json_object*
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 415
    functionName: handle_yang_module
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - LLVMIsAFunction
    - js_get_or_make
    - LLVMIsAGlobalVariable
    - LLVMTypeOf
    - check_val
    - LLVMGetValueKind
    - LLVMGetValueName2
    - free
    - LLVMGetInitializer
    - json_object_new_string
    - json_object_new_string_len
    - LLVMGetOperand
    - dbginfo_struct_member
    - memcpy
    - get_string
    - json_object_new_object
    - json_object_array_add
    - LLVMGetArrayLength
    - json_object_object_add
    - LLVMCountStructElementTypes
    linkageType: ''
    returnType: void
    signature: "void handle_yang_module(struct json_object *js_special,\n\t\t\t       LLVMValueRef
      yang_mod)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:420,1
    - Dst: LLVMIsAGlobalVariable
      Src: /src/frr/tools/frr-llvm-cg.c:420,1
    - Dst: LLVMGlobalGetValueType
      Src: /src/frr/tools/frr-llvm-cg.c:426,1
    - Dst: LLVMGetInitializer
      Src: /src/frr/tools/frr-llvm-cg.c:427,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:428,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:430,1
    - Dst: LLVMCountStructElementTypes
      Src: /src/frr/tools/frr-llvm-cg.c:434,1
    - Dst: LLVMGetSubtypes
      Src: /src/frr/tools/frr-llvm-cg.c:437,1
    - Dst: LLVMGetTypeKind
      Src: /src/frr/tools/frr-llvm-cg.c:442,1
    - Dst: LLVMGetElementType
      Src: /src/frr/tools/frr-llvm-cg.c:444,1
    - Dst: LLVMGetTypeKind
      Src: /src/frr/tools/frr-llvm-cg.c:445,1
    - Dst: LLVMGetElementType
      Src: /src/frr/tools/frr-llvm-cg.c:447,1
    - Dst: LLVMGetTypeKind
      Src: /src/frr/tools/frr-llvm-cg.c:448,1
    - Dst: LLVMGetStructName
      Src: /src/frr/tools/frr-llvm-cg.c:451,1
    - Dst: strcmp
      Src: /src/frr/tools/frr-llvm-cg.c:452,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:459,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:460,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:462,1
    - Dst: LLVMIsConstant
      Src: /src/frr/tools/frr-llvm-cg.c:462,1
    - Dst: LLVMConstIntGetZExtValue
      Src: /src/frr/tools/frr-llvm-cg.c:464,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:466,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:466,1
    - Dst: LLVMGetConstOpcode
      Src: /src/frr/tools/frr-llvm-cg.c:467,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:470,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:472,1
    - Dst: LLVMIsAGlobalVariable
      Src: /src/frr/tools/frr-llvm-cg.c:472,1
    - Dst: LLVMGetInitializer
      Src: /src/frr/tools/frr-llvm-cg.c:474,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:476,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:476,1
    - Dst: LLVMGetArrayLength
      Src: /src/frr/tools/frr-llvm-cg.c:479,1
    - Dst: LLVMTypeOf
      Src: /src/frr/tools/frr-llvm-cg.c:479,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:482,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:487,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:488,1
    - Dst: check_val
      Src: /src/frr/tools/frr-llvm-cg.c:490,1
    - Dst: LLVMGetConstOpcode
      Src: /src/frr/tools/frr-llvm-cg.c:497,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:500,1
    - Dst: handle_yang_module
      Src: /src/frr/tools/frr-llvm-cg.c:501,1
    - Dst: LLVMPrintValueToString
      Src: /src/frr/tools/frr-llvm-cg.c:505,1
    - Dst: printf
      Src: /src/frr/tools/frr-llvm-cg.c:506,1
    - Dst: LLVMDisposeMessage
      Src: /src/frr/tools/frr-llvm-cg.c:507,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 45
    argCount: 2
    argNames:
    - js_special
    - daemoninfo
    argTypes:
    - struct json_object*
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 510
    functionName: handle_daemoninfo
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - LLVMIsConstant
    - LLVMGetStructName
    - LLVMGetConstOpcode
    - handle_yang_module
    - LLVMIsAGlobalVariable
    - LLVMDisposeMessage
    - LLVMTypeOf
    - LLVMGetTypeKind
    - fprintf
    - check_val
    - LLVMGetValueKind
    - printf
    - LLVMConstIntGetZExtValue
    - LLVMGetElementType
    - LLVMGetSubtypes
    - LLVMPrintValueToString
    - LLVMGetInitializer
    - LLVMGlobalGetValueType
    - LLVMGetOperand
    - LLVMGetArrayLength
    - strcmp
    - LLVMCountStructElementTypes
    linkageType: ''
    returnType: void
    signature: "void handle_daemoninfo(struct json_object *js_special,\n\t\t\t      LLVMValueRef
      daemoninfo)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetCalledValue
      Src: /src/frr/tools/frr-llvm-cg.c:519,1
    - Dst: LLVMIsAInlineAsm
      Src: /src/frr/tools/frr-llvm-cg.c:521,1
    - Dst: LLVMIsAConstantExpr
      Src: /src/frr/tools/frr-llvm-cg.c:524,1
    - Dst: LLVMGetConstOpcode
      Src: /src/frr/tools/frr-llvm-cg.c:525,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:528,1
    - Dst: LLVMIsAFunction
      Src: /src/frr/tools/frr-llvm-cg.c:530,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:536,1
    - Dst: LLVMGetNumArgOperands
      Src: /src/frr/tools/frr-llvm-cg.c:537,1
    - Dst: LLVMIsDeclaration
      Src: /src/frr/tools/frr-llvm-cg.c:539,1
    - Dst: json_object_new_object
      Src: /src/frr/tools/frr-llvm-cg.c:541,1
    - Dst: json_object_array_add
      Src: /src/frr/tools/frr-llvm-cg.c:542,1
    - Dst: dbgloc_add
      Src: /src/frr/tools/frr-llvm-cg.c:543,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:544,1
    - Dst: json_object_new_boolean
      Src: /src/frr/tools/frr-llvm-cg.c:545,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:548,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:549,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:554,1
    - Dst: strncmp
      Src: /src/frr/tools/frr-llvm-cg.c:560,1
    - Dst: LLVMGetDebugLocFilename
      Src: /src/frr/tools/frr-llvm-cg.c:565,1
    - Dst: LLVMGetDebugLocLine
      Src: /src/frr/tools/frr-llvm-cg.c:566,1
    - Dst: snprintf
      Src: /src/frr/tools/frr-llvm-cg.c:569,1
    - Dst: LLVMIsALoadInst
      Src: /src/frr/tools/frr-llvm-cg.c:572,1
    - Dst: LLVMIsAGetElementPtrInst
      Src: /src/frr/tools/frr-llvm-cg.c:573,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:573,1
    - Dst: try_struct_fptr
      Src: /src/frr/tools/frr-llvm-cg.c:574,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:574,1
    - Dst: LLVMIsALoadInst
      Src: /src/frr/tools/frr-llvm-cg.c:578,1
    - Dst: LLVMIsAGetElementPtrInst
      Src: /src/frr/tools/frr-llvm-cg.c:578,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:580,1
    - Dst: LLVMIsAAllocaInst
      Src: /src/frr/tools/frr-llvm-cg.c:582,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:590,1
    - Dst: LLVMPrintValueToString
      Src: /src/frr/tools/frr-llvm-cg.c:595,1
    - Dst: printf
      Src: /src/frr/tools/frr-llvm-cg.c:596,1
    - Dst: LLVMDisposeMessage
      Src: /src/frr/tools/frr-llvm-cg.c:597,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:600,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:602,1
    - Dst: LLVMIsACallInst
      Src: /src/frr/tools/frr-llvm-cg.c:603,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:609,1
    - Dst: process_call
      Src: /src/frr/tools/frr-llvm-cg.c:612,1
    - Dst: LLVMIsAConstant
      Src: /src/frr/tools/frr-llvm-cg.c:613,1
    - Dst: walk_const_fptrs
      Src: /src/frr/tools/frr-llvm-cg.c:618,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:620,1
    - Dst: LLVMPrintValueToString
      Src: /src/frr/tools/frr-llvm-cg.c:624,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:625,1
    - Dst: LLVMDisposeMessage
      Src: /src/frr/tools/frr-llvm-cg.c:626,1
    - Dst: strcmp
      Src: /src/frr/tools/frr-llvm-cg.c:629,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:630,1
    - Dst: LLVMIsAConstantInt
      Src: /src/frr/tools/frr-llvm-cg.c:631,1
    - Dst: LLVMConstIntGetSExtValue
      Src: /src/frr/tools/frr-llvm-cg.c:634,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:635,1
    - Dst: json_object_new_int64
      Src: /src/frr/tools/frr-llvm-cg.c:636,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:638,1
    - Dst: LLVMIsAGlobalVariable
      Src: /src/frr/tools/frr-llvm-cg.c:639,1
    - Dst: LLVMGetInitializer
      Src: /src/frr/tools/frr-llvm-cg.c:642,1
    - Dst: assert
      Src: /src/frr/tools/frr-llvm-cg.c:643,1
    - Dst: LLVMIsConstant
      Src: /src/frr/tools/frr-llvm-cg.c:643,1
    - Dst: LLVMGetValueKind
      Src: /src/frr/tools/frr-llvm-cg.c:645,1
    - Dst: assert
      Src: /src/frr/tools/frr-llvm-cg.c:646,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:648,1
    - Dst: assert
      Src: /src/frr/tools/frr-llvm-cg.c:649,1
    - Dst: LLVMIsAFunction
      Src: /src/frr/tools/frr-llvm-cg.c:649,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:653,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:655,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:657,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:658,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:660,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:664,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:666,1
    - Dst: is_thread_sched
      Src: /src/frr/tools/frr-llvm-cg.c:668,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:669,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:670,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:671,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:673,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:676,1
    - Dst: assert
      Src: /src/frr/tools/frr-llvm-cg.c:677,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:681,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:683,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:685,1
    - Dst: LLVMIsAFunction
      Src: /src/frr/tools/frr-llvm-cg.c:686,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:687,1
    - Dst: json_object_new_boolean
      Src: /src/frr/tools/frr-llvm-cg.c:688,1
    - Dst: strncmp
      Src: /src/frr/tools/frr-llvm-cg.c:690,1
    - Dst: strlen
      Src: /src/frr/tools/frr-llvm-cg.c:691,1
    - Dst: strlen
      Src: /src/frr/tools/frr-llvm-cg.c:695,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:697,1
    - Dst: json_object_new_string
      Src: /src/frr/tools/frr-llvm-cg.c:698,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:700,1
    - Dst: LLVMIsAFunction
      Src: /src/frr/tools/frr-llvm-cg.c:701,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:706,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:708,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:710,1
    - Dst: json_object_new_object
      Src: /src/frr/tools/frr-llvm-cg.c:713,1
    - Dst: json_object_array_add
      Src: /src/frr/tools/frr-llvm-cg.c:714,1
    - Dst: dbgloc_add
      Src: /src/frr/tools/frr-llvm-cg.c:716,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:717,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:719,1
    - Dst: strcmp
      Src: /src/frr/tools/frr-llvm-cg.c:727,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:728,1
    - Dst: handle_daemoninfo
      Src: /src/frr/tools/frr-llvm-cg.c:730,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:732,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:734,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:736,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:738,1
    - Dst: LLVMGetOperand
      Src: /src/frr/tools/frr-llvm-cg.c:743,1
    - Dst: LLVMIsAFunction
      Src: /src/frr/tools/frr-llvm-cg.c:747,1
    - Dst: js_get_or_make
      Src: /src/frr/tools/frr-llvm-cg.c:748,1
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:751,1
    - Dst: json_object_array_add
      Src: /src/frr/tools/frr-llvm-cg.c:753,1
    - Dst: json_object_new_string_len
      Src: /src/frr/tools/frr-llvm-cg.c:754,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 104
    argCount: 4
    argNames:
    - js_calls
    - js_special
    - instr
    - function
    argTypes:
    - struct json_object*
    - struct json_object*
    - LLVMValueRef
    - LLVMValueRef
    assertStmts:
    - condition: (fparam)
      pos:
        line_end: 676
        line_start: 676
        source_file: /src/frr/tools/frr-llvm-cg.c
    - condition: (intlz && LLVMIsConstant(intlz))
      pos:
        line_end: 642
        line_start: 642
        source_file: /src/frr/tools/frr-llvm-cg.c
    - condition: (intlzkind == LLVMConstantStructValueKind)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/frr/tools/frr-llvm-cg.c
    - condition: (LLVMIsAFunction(funcptr))
      pos:
        line_end: 648
        line_start: 648
        source_file: /src/frr/tools/frr-llvm-cg.c
    constantsTouched: []
    func_position:
      end: 758
      start: 512
    functionDepth: 4
    functionLinenumber: 512
    functionLinenumberEnd: 758
    functionName: process_call
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 1
    functionsReached:
    - LLVMIsConstant
    - strlen
    - LLVMGetConstOpcode
    - LLVMIsAFunction
    - LLVMIsAInlineAsm
    - json_object_new_int64
    - LLVMIsAConstantExpr
    - walk_const_fptrs
    - strncmp
    - js_get_or_make
    - LLVMIsAConstantInt
    - dbgloc_add
    - LLVMDisposeMessage
    - LLVMIsAGlobalVariable
    - snprintf
    - try_struct_fptr
    - process_call
    - fprintf
    - LLVMGetDebugLocFilename
    - LLVMIsAConstant
    - LLVMGetValueKind
    - printf
    - LLVMIsAGetElementPtrInst
    - handle_daemoninfo
    - LLVMGetCalledValue
    - assert
    - LLVMPrintValueToString
    - json_object_new_boolean
    - LLVMGetValueName2
    - LLVMGetDebugLocLine
    - is_thread_sched
    - LLVMIsDeclaration
    - LLVMGetInitializer
    - json_object_new_string
    - json_object_new_string_len
    - LLVMGetOperand
    - LLVMConstIntGetSExtValue
    - json_object_new_object
    - json_object_array_add
    - LLVMIsACallInst
    - strcmp
    - LLVMGetNumArgOperands
    - LLVMIsAAllocaInst
    - json_object_object_add
    - LLVMIsALoadInst
    linkageType: ''
    returnType: void
    signature: "void process_call(struct json_object *js_calls,\n\t\t\t struct json_object
      *js_special,\n\t\t\t LLVMValueRef instr,\n\t\t\t LLVMValueRef function)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LLVMGetValueName2
      Src: /src/frr/tools/frr-llvm-cg.c:767,1
    - Dst: strndup
      Src: /src/frr/tools/frr-llvm-cg.c:770,1
    - Dst: json_object_object_get
      Src: /src/frr/tools/frr-llvm-cg.c:772,1
    - Dst: LLVMGetDebugLocFilename
      Src: /src/frr/tools/frr-llvm-cg.c:775,1
    - Dst: LLVMGetDebugLocLine
      Src: /src/frr/tools/frr-llvm-cg.c:776,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:778,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:780,1
    - Dst: json_object_new_object
      Src: /src/frr/tools/frr-llvm-cg.c:784,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:785,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:786,1
    - Dst: json_object_new_array
      Src: /src/frr/tools/frr-llvm-cg.c:788,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:789,1
    - Dst: dbgloc_add
      Src: /src/frr/tools/frr-llvm-cg.c:791,1
    - Dst: LLVMGetFirstBasicBlock
      Src: /src/frr/tools/frr-llvm-cg.c:793,1
    - Dst: LLVMGetNextBasicBlock
      Src: /src/frr/tools/frr-llvm-cg.c:794,1
    - Dst: LLVMGetFirstInstruction
      Src: /src/frr/tools/frr-llvm-cg.c:796,1
    - Dst: LLVMGetNextInstruction
      Src: /src/frr/tools/frr-llvm-cg.c:797,1
    - Dst: LLVMIsAIntrinsicInst
      Src: /src/frr/tools/frr-llvm-cg.c:799,1
    - Dst: LLVMIsACallInst
      Src: /src/frr/tools/frr-llvm-cg.c:802,1
    - Dst: LLVMIsAInvokeInst
      Src: /src/frr/tools/frr-llvm-cg.c:802,1
    - Dst: process_call
      Src: /src/frr/tools/frr-llvm-cg.c:803,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - funcs
    - js_special
    - function
    argTypes:
    - struct json_object*
    - struct json_object*
    - LLVMValueRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 760
    functionDepth: 5
    functionLinenumber: 760
    functionLinenumberEnd: 807
    functionName: process_fn
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - LLVMIsAInvokeInst
    - LLVMGetFirstInstruction
    - dbgloc_add
    - LLVMIsAIntrinsicInst
    - process_call
    - fprintf
    - json_object_object_get
    - LLVMGetDebugLocFilename
    - LLVMGetFirstBasicBlock
    - LLVMGetValueName2
    - LLVMGetNextInstruction
    - LLVMGetDebugLocLine
    - free
    - strndup
    - json_object_new_object
    - json_object_new_array
    - LLVMGetNextBasicBlock
    - LLVMIsACallInst
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void process_fn(struct json_object *funcs,\n\t\t       struct json_object
      *js_special,\n\t\t       LLVMValueRef function)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:811,1
    - Dst: exit
      Src: /src/frr/tools/frr-llvm-cg.c:825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - retcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 809
    functionDepth: 0
    functionLinenumber: 809
    functionLinenumberEnd: 826
    functionName: help
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 0
    functionsReached:
    - fprintf
    - exit
    linkageType: ''
    returnType: void
    signature: void help(int retcode)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/frr/tools/frr-llvm-cg.c:835,1
    - Dst: help
      Src: /src/frr/tools/frr-llvm-cg.c:839,1
    - Dst: help
      Src: /src/frr/tools/frr-llvm-cg.c:844,1
    - Dst: help
      Src: /src/frr/tools/frr-llvm-cg.c:851,1
    - Dst: help
      Src: /src/frr/tools/frr-llvm-cg.c:857,1
    - Dst: help
      Src: /src/frr/tools/frr-llvm-cg.c:860,1
    - Dst: help
      Src: /src/frr/tools/frr-llvm-cg.c:865,1
    - Dst: strcmp
      Src: /src/frr/tools/frr-llvm-cg.c:874,1
    - Dst: LLVMCreateMemoryBufferWithSTDIN
      Src: /src/frr/tools/frr-llvm-cg.c:876,1
    - Dst: LLVMCreateMemoryBufferWithContentsOfFile
      Src: /src/frr/tools/frr-llvm-cg.c:878,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:883,1
    - Dst: free
      Src: /src/frr/tools/frr-llvm-cg.c:884,1
    - Dst: LLVMParseBitcode2
      Src: /src/frr/tools/frr-llvm-cg.c:890,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:891,1
    - Dst: LLVMDisposeMemoryBuffer
      Src: /src/frr/tools/frr-llvm-cg.c:892,1
    - Dst: LLVMDisposeMemoryBuffer
      Src: /src/frr/tools/frr-llvm-cg.c:897,1
    - Dst: dbginfo_load
      Src: /src/frr/tools/frr-llvm-cg.c:899,1
    - Dst: json_object_new_object
      Src: /src/frr/tools/frr-llvm-cg.c:903,1
    - Dst: json_object_new_object
      Src: /src/frr/tools/frr-llvm-cg.c:904,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:905,1
    - Dst: json_object_new_object
      Src: /src/frr/tools/frr-llvm-cg.c:906,1
    - Dst: json_object_object_add
      Src: /src/frr/tools/frr-llvm-cg.c:907,1
    - Dst: LLVMGetFirstFunction
      Src: /src/frr/tools/frr-llvm-cg.c:910,1
    - Dst: LLVMGetNextFunction
      Src: /src/frr/tools/frr-llvm-cg.c:911,1
    - Dst: LLVMIsDeclaration
      Src: /src/frr/tools/frr-llvm-cg.c:912,1
    - Dst: process_fn
      Src: /src/frr/tools/frr-llvm-cg.c:915,1
    - Dst: strlen
      Src: /src/frr/tools/frr-llvm-cg.c:919,1
    - Dst: snprintf
      Src: /src/frr/tools/frr-llvm-cg.c:921,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/tools/frr-llvm-cg.c:922,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:927,1
    - Dst: rename
      Src: /src/frr/tools/frr-llvm-cg.c:930,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:931,1
    - Dst: strerror
      Src: /src/frr/tools/frr-llvm-cg.c:932,1
    - Dst: unlink
      Src: /src/frr/tools/frr-llvm-cg.c:933,1
    - Dst: json_object_to_fd
      Src: /src/frr/tools/frr-llvm-cg.c:937,1
    - Dst: fprintf
      Src: /src/frr/tools/frr-llvm-cg.c:942,1
    - Dst: LLVMDisposeModule
      Src: /src/frr/tools/frr-llvm-cg.c:947,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 81
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 828
    functionDepth: 6
    functionLinenumber: 828
    functionLinenumberEnd: 950
    functionName: main
    functionSourceFile: /src/frr/tools/frr-llvm-cg.c
    functionUses: 3
    functionsReached:
    - LLVMParseBitcode2
    - strlen
    - LLVMCreateMemoryBufferWithSTDIN
    - process_fn
    - unlink
    - snprintf
    - LLVMGetNextFunction
    - json_object_to_file_ext
    - LLVMCreateMemoryBufferWithContentsOfFile
    - fprintf
    - dbginfo_load
    - getopt
    - free
    - LLVMDisposeMemoryBuffer
    - LLVMGetFirstFunction
    - LLVMDisposeModule
    - LLVMIsDeclaration
    - help
    - json_object_new_object
    - rename
    - json_object_to_fd
    - strerror
    - strcmp
    - json_object_object_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tools/gen_yang_deviations.c:18,1
    - Dst: exit
      Src: /src/frr/tools/gen_yang_deviations.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 20
    functionName: usage
    functionSourceFile: /src/frr/tools/gen_yang_deviations.c
    functionUses: 5
    functionsReached:
    - fprintf
    - exit
    linkageType: ''
    returnType: void
    signature: void usage(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_snode_get_path
      Src: /src/frr/tools/gen_yang_deviations.c:26,1
    - Dst: printf
      Src: /src/frr/tools/gen_yang_deviations.c:28,1
    - Dst: printf
      Src: /src/frr/tools/gen_yang_deviations.c:29,1
    - Dst: printf
      Src: /src/frr/tools/gen_yang_deviations.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - snode
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 33
    functionName: generate_yang_deviation
    functionSourceFile: /src/frr/tools/gen_yang_deviations.c
    functionUses: 0
    functionsReached:
    - yang_snode_get_path
    - printf
    linkageType: ''
    returnType: int
    signature: int generate_yang_deviation(const struct lysc_node *snode, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/frr/tools/gen_yang_deviations.c:40,1
    - Dst: usage
      Src: /src/frr/tools/gen_yang_deviations.c:43,1
    - Dst: usage
      Src: /src/frr/tools/gen_yang_deviations.c:46,1
    - Dst: usage
      Src: /src/frr/tools/gen_yang_deviations.c:53,1
    - Dst: yang_init
      Src: /src/frr/tools/gen_yang_deviations.c:55,1
    - Dst: yang_module_load
      Src: /src/frr/tools/gen_yang_deviations.c:58,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/tools/gen_yang_deviations.c:61,1
    - Dst: yang_terminate
      Src: /src/frr/tools/gen_yang_deviations.c:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 67
    functionName: main
    functionSourceFile: /src/frr/tools/gen_yang_deviations.c
    functionUses: 3
    functionsReached:
    - yang_init
    - yang_module_load
    - getopt
    - usage
    - yang_snodes_iterate
    - yang_terminate
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: tvselector_sec
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long tvselector_sec(const struct timeval *tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 166
    functionName: tvselector_usec
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long tvselector_usec(const struct timeval *tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - result
    - ','
    - expr
    - ','
    - sec
    - ','
    - adj
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 174
    functionName: TVCALC_ELEM
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TVCALC_ELEM(result, expr, sec, adj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - result
    - ','
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 181
    functionName: TVCALC
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TVCALC(result, expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tools/start-stop-daemon.c:187,1
    - Dst: va_start
      Src: /src/frr/tools/start-stop-daemon.c:188,1
    - Dst: vfprintf
      Src: /src/frr/tools/start-stop-daemon.c:189,1
    - Dst: va_end
      Src: /src/frr/tools/start-stop-daemon.c:190,1
    - Dst: putc
      Src: /src/frr/tools/start-stop-daemon.c:191,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 193
    functionName: fatal
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - exit
    - putc
    - vfprintf
    - va_start
    - fprintf
    - va_end
    linkageType: ''
    returnType: void
    signature: void fatal(const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/tools/start-stop-daemon.c:200,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 204
    functionName: xmalloc
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - malloc
    - fatal
    linkageType: ''
    returnType: void
    signature: void *xmalloc(int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/tools/start-stop-daemon.c:208,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:209,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 210
    functionName: xgettimeofday
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - strerror
    - gettimeofday
    - fatal
    linkageType: ''
    returnType: void
    signature: void xgettimeofday(struct timeval *tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xmalloc
      Src: /src/frr/tools/start-stop-daemon.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - list
    - pid
    argTypes:
    - struct pid_list**
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 220
    functionName: push
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 39
    functionsReached:
    - xmalloc
    linkageType: ''
    returnType: void
    signature: void push(struct pid_list **list, pid_t pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/tools/start-stop-daemon.c:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct pid_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: clear
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void clear(struct pid_list **list)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 251
    functionName: next_dirname
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *next_dirname(const char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next_dirname
      Src: /src/frr/tools/start-stop-daemon.c:262,1
    - Dst: strncmp
      Src: /src/frr/tools/start-stop-daemon.c:267,1
    - Dst: strlen
      Src: /src/frr/tools/start-stop-daemon.c:267,1
    - Dst: strncmp
      Src: /src/frr/tools/start-stop-daemon.c:269,1
    - Dst: strlen
      Src: /src/frr/tools/start-stop-daemon.c:269,1
    - Dst: strncmp
      Src: /src/frr/tools/start-stop-daemon.c:271,1
    - Dst: strlen
      Src: /src/frr/tools/start-stop-daemon.c:271,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:274,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/tools/start-stop-daemon.c:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 280
    functionName: add_namespace
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - strlen
    - LIST_INSERT_HEAD
    - badusage
    - strncmp
    - next_dirname
    linkageType: ''
    returnType: void
    signature: void add_namespace(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/tools/start-stop-daemon.c:289,1
    - Dst: open
      Src: /src/frr/tools/start-stop-daemon.c:290,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:291,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:292,1
    - Dst: setns
      Src: /src/frr/tools/start-stop-daemon.c:293,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:294,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 296
    functionName: set_namespaces
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - open
    - strerror
    - setns
    - fatal
    linkageType: ''
    returnType: void
    signature: void set_namespaces(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_EMPTY
      Src: /src/frr/tools/start-stop-daemon.c:300,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: set_namespaces
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - fatal
    - LIST_EMPTY
    linkageType: ''
    returnType: void
    signature: void set_namespaces(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 342
    functionName: do_help
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void do_help(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/tools/start-stop-daemon.c:348,1
    - Dst: fprintf
      Src: /src/frr/tools/start-stop-daemon.c:349,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 351
    functionName: badusage
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 1
    functionsReached:
    - fprintf
    - exit
    linkageType: ''
    returnType: void
    signature: void badusage(const char *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/tools/start-stop-daemon.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - string
    - value_r
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 381
    functionName: parse_integer
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: int
    signature: int parse_integer(const char *string, int *value_r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_integer
      Src: /src/frr/tools/start-stop-daemon.c:387,1
    - Dst: strcmp
      Src: /src/frr/tools/start-stop-daemon.c:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - signal_str
    - signal_nr
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 397
    functionName: parse_signal
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - parse_integer
    - strcmp
    linkageType: ''
    returnType: int
    signature: int parse_signal(const char *signal_str, int *signal_nr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/tools/start-stop-daemon.c:403,1
    - Dst: isdigit
      Src: /src/frr/tools/start-stop-daemon.c:405,1
    - Dst: parse_integer
      Src: /src/frr/tools/start-stop-daemon.c:407,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:408,1
    - Dst: parse_signal
      Src: /src/frr/tools/start-stop-daemon.c:410,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - string
    - item
    argTypes:
    - char*
    - struct schedule_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 416
    functionName: parse_schedule_item
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - isdigit
    - parse_signal
    - strcmp
    - parse_integer
    - badusage
    linkageType: ''
    returnType: void
    signature: void parse_schedule_item(const char *string, struct schedule_item *item)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: xmalloc
      Src: /src/frr/tools/start-stop-daemon.c:431,1
    - Dst: parse_schedule_item
      Src: /src/frr/tools/start-stop-daemon.c:436,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:438,1
    - Dst: strchr
      Src: /src/frr/tools/start-stop-daemon.c:448,1
    - Dst: strlen
      Src: /src/frr/tools/start-stop-daemon.c:450,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:452,1
    - Dst: memcpy
      Src: /src/frr/tools/start-stop-daemon.c:454,1
    - Dst: parse_schedule_item
      Src: /src/frr/tools/start-stop-daemon.c:458,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:461,1
    - Dst: assert
      Src: /src/frr/tools/start-stop-daemon.c:473,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 1
    argNames:
    - schedule_str
    argTypes:
    - char*
    assertStmts:
    - condition: (count == schedule_length)
      pos:
        line_end: 472
        line_start: 472
        source_file: /src/frr/tools/start-stop-daemon.c
    constantsTouched: []
    func_position:
      end: 475
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 475
    functionName: parse_schedule
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - parse_schedule_item
    - assert
    - strlen
    - xmalloc
    - badusage
    - strchr
    - memcpy
    linkageType: ''
    returnType: void
    signature: void parse_schedule(const char *schedule_str)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/frr/tools/start-stop-daemon.c:494,1
    - Dst: do_help
      Src: /src/frr/tools/start-stop-daemon.c:501,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:502,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:510,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:511,1
    - Dst: strtok
      Src: /src/frr/tools/start-stop-daemon.c:543,1
    - Dst: strtok
      Src: /src/frr/tools/start-stop-daemon.c:544,1
    - Dst: add_namespace
      Src: /src/frr/tools/start-stop-daemon.c:551,1
    - Dst: atoi
      Src: /src/frr/tools/start-stop-daemon.c:555,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:567,1
    - Dst: parse_signal
      Src: /src/frr/tools/start-stop-daemon.c:572,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:573,1
    - Dst: parse_schedule
      Src: /src/frr/tools/start-stop-daemon.c:578,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:582,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:585,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:592,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:595,1
    - Dst: badusage
      Src: /src/frr/tools/start-stop-daemon.c:598,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 93
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 477
    functionDepth: 4
    functionLinenumber: 477
    functionLinenumberEnd: 599
    functionName: parse_options
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - exit
    - parse_signal
    - strtok
    - do_help
    - badusage
    - getopt_long
    - printf
    - add_namespace
    - atoi
    - parse_schedule
    linkageType: ''
    returnType: void
    signature: void parse_options(int argc, char *const *argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/tools/start-stop-daemon.c:606,1
    - Dst: stat
      Src: /src/frr/tools/start-stop-daemon.c:607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - pid
    - esb
    argTypes:
    - pid_t
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 610
    functionName: pid_is_exec
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - snprintf
    - stat
    linkageType: ''
    returnType: int
    signature: int pid_is_exec(pid_t pid, const struct stat *esb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/tools/start-stop-daemon.c:618,1
    - Dst: stat
      Src: /src/frr/tools/start-stop-daemon.c:619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pid
    - uid
    argTypes:
    - pid_t
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 622
    functionName: pid_is_user
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - snprintf
    - stat
    linkageType: ''
    returnType: int
    signature: int pid_is_user(pid_t pid, uid_t uid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/tools/start-stop-daemon.c:631,1
    - Dst: fopen
      Src: /src/frr/tools/start-stop-daemon.c:632,1
    - Dst: getc
      Src: /src/frr/tools/start-stop-daemon.c:635,1
    - Dst: fclose
      Src: /src/frr/tools/start-stop-daemon.c:638,1
    - Dst: getc
      Src: /src/frr/tools/start-stop-daemon.c:642,1
    - Dst: fclose
      Src: /src/frr/tools/start-stop-daemon.c:644,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - pid
    - name
    argTypes:
    - pid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 646
    functionName: pid_is_cmd
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - fopen
    - fclose
    - snprintf
    - getc
    linkageType: ''
    returnType: int
    signature: int pid_is_cmd(pid_t pid, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pid_is_exec
      Src: /src/frr/tools/start-stop-daemon.c:651,1
    - Dst: pid_is_user
      Src: /src/frr/tools/start-stop-daemon.c:653,1
    - Dst: pid_is_cmd
      Src: /src/frr/tools/start-stop-daemon.c:655,1
    - Dst: push
      Src: /src/frr/tools/start-stop-daemon.c:657,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 649
    functionDepth: 2
    functionLinenumber: 649
    functionLinenumberEnd: 658
    functionName: check
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 18
    functionsReached:
    - pid_is_exec
    - push
    - pid_is_user
    - pid_is_cmd
    linkageType: ''
    returnType: void
    signature: void check(pid_t pid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/tools/start-stop-daemon.c:665,1
    - Dst: fscanf
      Src: /src/frr/tools/start-stop-daemon.c:667,1
    - Dst: check
      Src: /src/frr/tools/start-stop-daemon.c:668,1
    - Dst: fclose
      Src: /src/frr/tools/start-stop-daemon.c:669,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:671,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:671,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 660
    functionDepth: 3
    functionLinenumber: 660
    functionLinenumberEnd: 672
    functionName: do_pidfile
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - fopen
    - strerror
    - fclose
    - fscanf
    - check
    - fatal
    linkageType: ''
    returnType: void
    signature: void do_pidfile(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/frr/tools/start-stop-daemon.c:683,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:685,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:685,1
    - Dst: readdir
      Src: /src/frr/tools/start-stop-daemon.c:688,1
    - Dst: sscanf
      Src: /src/frr/tools/start-stop-daemon.c:689,1
    - Dst: check
      Src: /src/frr/tools/start-stop-daemon.c:692,1
    - Dst: closedir
      Src: /src/frr/tools/start-stop-daemon.c:694,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:696,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 676
    functionDepth: 3
    functionLinenumber: 676
    functionLinenumberEnd: 697
    functionName: do_procinit
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - fatal
    - strerror
    - readdir
    - closedir
    - check
    - opendir
    - sscanf
    linkageType: ''
    returnType: void
    signature: void do_procinit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/frr/tools/start-stop-daemon.c:701,1
    - Dst: do_pidfile
      Src: /src/frr/tools/start-stop-daemon.c:704,1
    - Dst: do_procinit
      Src: /src/frr/tools/start-stop-daemon.c:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 699
    functionDepth: 4
    functionLinenumber: 699
    functionLinenumberEnd: 707
    functionName: do_findprocs
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - do_procinit
    - do_pidfile
    - clear
    linkageType: ''
    returnType: void
    signature: void do_findprocs(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: do_findprocs
      Src: /src/frr/tools/start-stop-daemon.c:715,1
    - Dst: clear
      Src: /src/frr/tools/start-stop-daemon.c:723,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:727,1
    - Dst: kill
      Src: /src/frr/tools/start-stop-daemon.c:729,1
    - Dst: push
      Src: /src/frr/tools/start-stop-daemon.c:730,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:733,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:734,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:739,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:741,1
    - Dst: putchar
      Src: /src/frr/tools/start-stop-daemon.c:742,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:744,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:745,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 5
    argNames:
    - signal_nr
    - quietmode
    - n_killed
    - n_notkilled
    - retry_nr
    argTypes:
    - int
    - int
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 710
    functionDepth: 5
    functionLinenumber: 710
    functionLinenumberEnd: 747
    functionName: do_stop
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - strerror
    - clear
    - do_findprocs
    - putchar
    - push
    - kill
    - printf
    linkageType: ''
    returnType: void
    signature: "void do_stop(int signal_nr, int quietmode, int *n_killed,\n\t\t    int
      *n_notkilled, int retry_nr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncpy
      Src: /src/frr/tools/start-stop-daemon.c:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 750
    functionDepth: 0
    functionLinenumber: 750
    functionLinenumberEnd: 754
    functionName: set_what_stop
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - strncpy
    linkageType: ''
    returnType: void
    signature: void set_what_stop(const char *str)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:764,1
    - Dst: set_what_stop
      Src: /src/frr/tools/start-stop-daemon.c:770,1
    - Dst: set_what_stop
      Src: /src/frr/tools/start-stop-daemon.c:772,1
    - Dst: sprintf
      Src: /src/frr/tools/start-stop-daemon.c:774,1
    - Dst: sprintf
      Src: /src/frr/tools/start-stop-daemon.c:776,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:778,1
    - Dst: do_stop
      Src: /src/frr/tools/start-stop-daemon.c:785,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:787,1
    - Dst: do_stop
      Src: /src/frr/tools/start-stop-daemon.c:804,1
    - Dst: xgettimeofday
      Src: /src/frr/tools/start-stop-daemon.c:849,1
    - Dst: xgettimeofday
      Src: /src/frr/tools/start-stop-daemon.c:853,1
    - Dst: timercmp
      Src: /src/frr/tools/start-stop-daemon.c:854,1
    - Dst: do_stop
      Src: /src/frr/tools/start-stop-daemon.c:857,1
    - Dst: xgettimeofday
      Src: /src/frr/tools/start-stop-daemon.c:861,1
    - Dst: timercmp
      Src: /src/frr/tools/start-stop-daemon.c:863,1
    - Dst: TVCALC
      Src: /src/frr/tools/start-stop-daemon.c:869,1
    - Dst: TVELEM
      Src: /src/frr/tools/start-stop-daemon.c:870,1
    - Dst: TVELEM
      Src: /src/frr/tools/start-stop-daemon.c:870,1
    - Dst: TVCALC
      Src: /src/frr/tools/start-stop-daemon.c:872,1
    - Dst: TVELEM
      Src: /src/frr/tools/start-stop-daemon.c:873,1
    - Dst: TVELEM
      Src: /src/frr/tools/start-stop-daemon.c:873,1
    - Dst: timercmp
      Src: /src/frr/tools/start-stop-daemon.c:876,1
    - Dst: select
      Src: /src/frr/tools/start-stop-daemon.c:883,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:885,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:886,1
    - Dst: assert
      Src: /src/frr/tools/start-stop-daemon.c:890,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:898,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:906,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!"schedule[].type value must be valid")
      pos:
        line_end: 889
        line_start: 889
        source_file: /src/frr/tools/start-stop-daemon.c
    constantsTouched: []
    func_position:
      end: 912
      start: 756
    functionDepth: 6
    functionLinenumber: 756
    functionLinenumberEnd: 912
    functionName: run_stop_schedule
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 0
    functionsReached:
    - assert
    - set_what_stop
    - TVCALC
    - strerror
    - do_stop
    - TVELEM
    - timercmp
    - select
    - sprintf
    - printf
    - xgettimeofday
    - fatal
    linkageType: ''
    returnType: int
    signature: int run_stop_schedule(void)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: LIST_INIT
      Src: /src/frr/tools/start-stop-daemon.c:922,1
    - Dst: parse_options
      Src: /src/frr/tools/start-stop-daemon.c:924,1
    - Dst: stat
      Src: /src/frr/tools/start-stop-daemon.c:928,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:929,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:929,1
    - Dst: sscanf
      Src: /src/frr/tools/start-stop-daemon.c:931,1
    - Dst: getpwnam
      Src: /src/frr/tools/start-stop-daemon.c:934,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:936,1
    - Dst: sscanf
      Src: /src/frr/tools/start-stop-daemon.c:941,1
    - Dst: getgrnam
      Src: /src/frr/tools/start-stop-daemon.c:942,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:944,1
    - Dst: sscanf
      Src: /src/frr/tools/start-stop-daemon.c:947,1
    - Dst: getpwnam
      Src: /src/frr/tools/start-stop-daemon.c:948,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:950,1
    - Dst: run_stop_schedule
      Src: /src/frr/tools/start-stop-daemon.c:960,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:961,1
    - Dst: do_findprocs
      Src: /src/frr/tools/start-stop-daemon.c:964,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:968,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:969,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:972,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:974,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:976,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:978,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:981,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:984,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:986,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:987,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:988,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:991,1
    - Dst: chdir
      Src: /src/frr/tools/start-stop-daemon.c:994,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:995,1
    - Dst: chroot
      Src: /src/frr/tools/start-stop-daemon.c:996,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:997,1
    - Dst: setgid
      Src: /src/frr/tools/start-stop-daemon.c:1000,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:1001,1
    - Dst: initgroups
      Src: /src/frr/tools/start-stop-daemon.c:1002,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:1003,1
    - Dst: setuid
      Src: /src/frr/tools/start-stop-daemon.c:1005,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:1006,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:1012,1
    - Dst: fork
      Src: /src/frr/tools/start-stop-daemon.c:1013,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:1015,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:1019,1
    - Dst: exit
      Src: /src/frr/tools/start-stop-daemon.c:1020,1
    - Dst: getdtablesize
      Src: /src/frr/tools/start-stop-daemon.c:1024,1
    - Dst: close
      Src: /src/frr/tools/start-stop-daemon.c:1025,1
    - Dst: open
      Src: /src/frr/tools/start-stop-daemon.c:1027,1
    - Dst: ioctl
      Src: /src/frr/tools/start-stop-daemon.c:1029,1
    - Dst: printf
      Src: /src/frr/tools/start-stop-daemon.c:1030,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:1031,1
    - Dst: close
      Src: /src/frr/tools/start-stop-daemon.c:1032,1
    - Dst: chdir
      Src: /src/frr/tools/start-stop-daemon.c:1034,1
    - Dst: umask
      Src: /src/frr/tools/start-stop-daemon.c:1035,1
    - Dst: setpgid
      Src: /src/frr/tools/start-stop-daemon.c:1036,1
    - Dst: open
      Src: /src/frr/tools/start-stop-daemon.c:1037,1
    - Dst: dup
      Src: /src/frr/tools/start-stop-daemon.c:1039,1
    - Dst: dup
      Src: /src/frr/tools/start-stop-daemon.c:1040,1
    - Dst: nice
      Src: /src/frr/tools/start-stop-daemon.c:1045,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:1046,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:1047,1
    - Dst: fopen
      Src: /src/frr/tools/start-stop-daemon.c:1051,1
    - Dst: getpid
      Src: /src/frr/tools/start-stop-daemon.c:1052,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:1054,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:1055,1
    - Dst: fprintf
      Src: /src/frr/tools/start-stop-daemon.c:1056,1
    - Dst: fclose
      Src: /src/frr/tools/start-stop-daemon.c:1057,1
    - Dst: set_namespaces
      Src: /src/frr/tools/start-stop-daemon.c:1059,1
    - Dst: execv
      Src: /src/frr/tools/start-stop-daemon.c:1060,1
    - Dst: fatal
      Src: /src/frr/tools/start-stop-daemon.c:1061,1
    - Dst: strerror
      Src: /src/frr/tools/start-stop-daemon.c:1061,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 114
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 918
    functionDepth: 7
    functionLinenumber: 918
    functionLinenumberEnd: 1062
    functionName: main
    functionSourceFile: /src/frr/tools/start-stop-daemon.c
    functionUses: 3
    functionsReached:
    - open
    - parse_options
    - getdtablesize
    - execv
    - umask
    - exit
    - initgroups
    - set_namespaces
    - nice
    - getgrnam
    - fclose
    - fprintf
    - setuid
    - printf
    - sscanf
    - stat
    - run_stop_schedule
    - do_findprocs
    - chdir
    - ioctl
    - fatal
    - fopen
    - LIST_INIT
    - strerror
    - getpid
    - setpgid
    - chroot
    - close
    - setgid
    - getpwnam
    - fork
    - dup
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:37,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:38,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:39,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:40,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:41,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:42,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:43,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:44,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:46,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:47,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:48,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:49,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:50,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:51,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:53,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:54,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:55,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:56,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:57,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:58,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:60,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:61,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:62,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:63,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:64,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:65,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:67,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:68,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:69,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:70,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:71,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:72,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:73,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:74,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:76,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:77,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:78,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:79,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:80,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:81,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:82,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:83,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:86,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:87,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:88,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:89,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:91,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:98,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:99,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:100,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:101,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:108,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:109,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:110,1
    - Dst: testfn
      Src: /src/frr/tools/gcc-plugins/format-test.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 57
    argCount: 1
    argNames:
    - ay
    argTypes:
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 113
    functionName: test
    functionSourceFile: /src/frr/tools/gcc-plugins/format-test.c
    functionUses: 11
    functionsReached:
    - testfn
    linkageType: ''
    returnType: int
    signature: int test(unsigned long long ay)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/tools/gcc-plugins/frr-format.c:116,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:117,1
    - Dst: format_string_diagnostic_t::emit_warning_va
      Src: /src/frr/tools/gcc-plugins/frr-format.c:132,1
    - Dst: format_warning_va
      Src: /src/frr/tools/gcc-plugins/frr-format.c:134,1
    - Dst: va_end
      Src: /src/frr/tools/gcc-plugins/frr-format.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - fmt_string_loc
    - format_string_cst
    - char_idx
    - opt
    - gmsgid
    argTypes:
    - location_t
    - tree
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 140
    functionName: format_warning_at_char
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - format_warning_va
    - format_string_diagnostic_t::emit_warning_va
    - TREE_TYPE
    - va_start
    - va_end
    linkageType: ''
    returnType: bool
    signature: "bool format_warning_at_char (location_t fmt_string_loc, tree format_string_cst,\n\t\t\tint
      char_idx, int opt, const char *gmsgid, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:157,1
    - Dst: TYPE_MAIN_VARIANT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:158,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:158,1
    - Dst: objc_string_ref_type_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - strref
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: valid_stringptr_type_p
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - objc_string_ref_type_p
    - TREE_CODE
    - TREE_TYPE
    - TYPE_MAIN_VARIANT
    linkageType: ''
    returnType: bool
    signature: bool valid_stringptr_type_p (tree strref)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:170,1
    - Dst: get_constant
      Src: /src/frr/tools/gcc-plugins/frr-format.c:173,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:175,1
    - Dst: prototype_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:180,1
    - Dst: check_format_string
      Src: /src/frr/tools/gcc-plugins/frr-format.c:184,1
    - Dst: valid_stringptr_type_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:188,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:188,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:191,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - node
    - ARG_UNUSED
    - args
    - flags
    - no_add_attrs
    argTypes:
    - tree*
    - tree
    - tree
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 197
    functionName: handle_frr_format_arg_attribute
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_TYPE
    - check_format_string
    - valid_stringptr_type_p
    - get_constant
    - TREE_VALUE
    - prototype_p
    - error
    linkageType: ''
    returnType: tree
    signature: "tree handle_frr_format_arg_attribute (tree *node, tree ARG_UNUSED
      (name),\n\t\t\t     tree args, int flags, bool *no_add_attrs)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: valid_stringptr_type_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:222,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:225,1
    - Dst: TYPE_MAIN_VARIANT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:236,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:236,1
    - Dst: format_flags
      Src: /src/frr/tools/gcc-plugins/frr-format.c:238,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:247,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:257,1
    - Dst: format_name
      Src: /src/frr/tools/gcc-plugins/frr-format.c:257,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:269,1
    - Dst: format_name
      Src: /src/frr/tools/gcc-plugins/frr-format.c:270,1
    - Dst: gcc_unreachable
      Src: /src/frr/tools/gcc-plugins/frr-format.c:275,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 5
    argNames:
    - fntype
    - format_num
    - flags
    - no_add_attrs
    - expected_format_type
    argTypes:
    - tree
    - unsigned HOST_WIDE_INT
    - int
    - bool*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 276
    functionName: check_format_string
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - TYPE_MAIN_VARIANT
    - TREE_TYPE
    - gcc_unreachable
    - valid_stringptr_type_p
    - error
    - format_name
    - format_flags
    linkageType: ''
    returnType: bool
    signature: "bool check_format_string (tree fntype, unsigned HOST_WIDE_INT format_num,\n\t\t
      \    int flags, bool *no_add_attrs, int expected_format_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 219
    functionName: FOREACH_FUNCTION_ARGS
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_FUNCTION_ARGS (fntype, ref, iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tree_fits_uhwi_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:284,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:286,1
    - Dst: TREE_INT_CST_LOW
      Src: /src/frr/tools/gcc-plugins/frr-format.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - expr
    - value
    - validated_p
    argTypes:
    - tree
    - unsigned HOST_WIDE_INT*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 293
    functionName: get_constant
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - gcc_assert
    - tree_fits_uhwi_p
    - TREE_INT_CST_LOW
    linkageType: ''
    returnType: bool
    signature: bool get_constant (tree expr, unsigned HOST_WIDE_INT *value, int validated_p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:305,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:306,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:306,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:308,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:308,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:308,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:310,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:312,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:313,1
    - Dst: TREE_STRING_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:318,1
    - Dst: convert_format_name_to_system_name
      Src: /src/frr/tools/gcc-plugins/frr-format.c:320,1
    - Dst: decode_format_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:322,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:326,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:327,1
    - Dst: get_constant
      Src: /src/frr/tools/gcc-plugins/frr-format.c:333,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:335,1
    - Dst: get_constant
      Src: /src/frr/tools/gcc-plugins/frr-format.c:339,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:341,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:347,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:348,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - args
    - info
    - validated_p
    argTypes:
    - tree
    - function_format_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 353
    functionName: decode_format_attr
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - decode_format_type
    - convert_format_name_to_system_name
    - warning
    - TREE_CODE
    - TREE_STRING_POINTER
    - get_constant
    - TREE_VALUE
    - gcc_assert
    - error
    linkageType: ''
    returnType: bool
    signature: bool decode_format_attr (tree args, function_format_info *info, int
      validated_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FEATURE_VER
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: C_STD_NAME
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: C_STD_NAME(FEATURE_VER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - VER
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 380
    functionName: ADJ_STD
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADJ_STD(VER)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gcc_unreachable
      Src: /src/frr/tools/gcc-plugins/frr-format.c:573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - format_num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 574
    functionName: format_name
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - gcc_unreachable
    linkageType: ''
    returnType: char
    signature: 'char *

      format_name (int format_num)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gcc_unreachable
      Src: /src/frr/tools/gcc-plugins/frr-format.c:583,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - format_num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 584
    functionName: format_flags
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - gcc_unreachable
    linkageType: ''
    returnType: int
    signature: int format_flags (int format_num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: convert_format_name_to_system_name
      Src: /src/frr/tools/gcc-plugins/frr-format.c:640,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:641,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:645,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:647,1
    - Dst: strncmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:650,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 654
    functionName: decode_format_type
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - strlen
    - strcmp
    - convert_format_name_to_system_name
    - strncmp
    linkageType: ''
    returnType: int
    signature: int decode_format_type (const char *s)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:671,1
    - Dst: is_attribute_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:673,1
    - Dst: TREE_PURPOSE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:673,1
    - Dst: decode_format_attr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:677,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:677,1
    - Dst: tree_cons
      Src: /src/frr/tools/gcc-plugins/frr-format.c:686,1
    - Dst: check_format_info
      Src: /src/frr/tools/gcc-plugins/frr-format.c:687,1
    - Dst: c_strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:701,1
    - Dst: TYPE_ATTRIBUTES
      Src: /src/frr/tools/gcc-plugins/frr-format.c:704,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:704,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:706,1
    - Dst: is_attribute_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:707,1
    - Dst: TREE_PURPOSE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:707,1
    - Dst: decode_format_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:708,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:708,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:709,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:709,1
    - Dst: DECL_ARGUMENTS
      Src: /src/frr/tools/gcc-plugins/frr-format.c:719,1
    - Dst: DECL_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:721,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:723,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:723,1
    - Dst: TYPE_MAIN_VARIANT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:724,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:724,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:724,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:729,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 24
    argCount: 4
    argNames:
    - attrs
    - nargs
    - argarray
    - arglocs
    argTypes:
    - tree
    - int
    - tree*
    - vec<location_t>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 664
    functionDepth: 3
    functionLinenumber: 664
    functionLinenumberEnd: 737
    functionName: check_function_format
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - decode_format_type
    - TYPE_MAIN_VARIANT
    - warning
    - TREE_PURPOSE
    - TREE_TYPE
    - tree_cons
    - DECL_CHAIN
    - TREE_CODE
    - c_strlen
    - DECL_ARGUMENTS
    - decode_format_attr
    - TREE_VALUE
    - check_format_info
    - IDENTIFIER_POINTER
    - is_attribute_p
    - TYPE_ATTRIBUTES
    linkageType: ''
    returnType: void
    signature: "void check_function_format (tree attrs, int nargs, tree *argarray,\n\t\t
      \      vec<location_t> *arglocs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:769,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:774,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:775,1
    - Dst: XNEWVEC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:777,1
    - Dst: XNEWVEC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:778,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:782,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:789,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:789,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:789,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:791,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - first_arg_num
    - params
    argTypes:
    - int
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 796
    functionName: init_dollar_format_checking
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - memset
    - TREE_TYPE
    - XNEWVEC
    - free
    - TREE_CODE
    - TREE_VALUE
    linkageType: ''
    returnType: void
    signature: void init_dollar_format_checking (int first_arg_num, tree params)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:816,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:820,1
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:828,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:841,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:850,1
    - Dst: C_STD_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:851,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:857,1
    - Dst: XRESIZEVEC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:868,1
    - Dst: XRESIZEVEC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:870,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:872,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:880,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:890,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:893,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 5
    argNames:
    - format
    - dollar_needed
    - params
    - param_ptr
    - fki
    argTypes:
    - char**
    - int
    - tree
    - tree*
    - format_kind_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 898
    functionName: maybe_read_dollar_number
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - memset
    - warning
    - XRESIZEVEC
    - gcc_assert
    - ISDIGIT
    - C_STD_NAME
    linkageType: ''
    returnType: int
    signature: "int maybe_read_dollar_number (const char **format,\n\t\t\t  int dollar_needed,
      tree params, tree *param_ptr,\n\t\t\t  const format_kind_info *fki)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:906,1
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:908,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 903
    functionDepth: 0
    functionLinenumber: 903
    functionLinenumberEnd: 916
    functionName: avoid_dollar_number
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - ISDIGIT
    - warning
    linkageType: ''
    returnType: bool
    signature: bool avoid_dollar_number (const char *format)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:942,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - res
    - pointer_gap_ok
    argTypes:
    - format_check_results*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 954
    functionName: finish_dollar_format_checking
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - warning_at
    linkageType: ''
    returnType: void
    signature: void finish_dollar_format_checking (format_check_results *res, int
      pointer_gap_ok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:976,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:982,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - spec
    - flag
    - predicates
    argTypes:
    - format_flag_spec*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 984
    functionName: get_flag_spec
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - gcc_assert
    - strchr
    linkageType: ''
    returnType: format_flag_spec
    signature: 'format_flag_spec *

      get_flag_spec (const format_flag_spec *spec, int flag, const char *predicates)'
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1007,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1009,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1010,1
    - Dst: check_function_arguments_recurse
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1030,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1044,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1055,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1059,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1062,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1065,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1082,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1087,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1090,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1094,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1097,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1101,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 60
    argCount: 3
    argNames:
    - info
    - params
    - arglocs
    argTypes:
    - function_format_info*
    - tree
    - vec<location_t>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1102
    functionName: check_format_info
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - TREE_CHAIN
    - warning_at
    - TREE_VALUE
    - check_function_arguments_recurse
    linkageType: ''
    returnType: void
    signature: "void check_format_info (function_format_info *info, tree params,\n\t\t
      \  vec<location_t> *arglocs)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: EXPR_LOC_OR_LOC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1125,1
    - Dst: fold_for_warn
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1129,1
    - Dst: STRIP_NOPS
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1130,1
    - Dst: integer_zerop
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1132,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1140,1
    - Dst: EXPR_LOC_OR_LOC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1149,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1149,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1157,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1161,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1162,1
    - Dst: STRIP_NOPS
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1163,1
    - Dst: STRIP_NOPS
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1164,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1165,1
    - Dst: cst_and_fits_in_hwi
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1173,1
    - Dst: int_cst_value
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1178,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1180,1
    - Dst: EXPR_LOC_OR_LOC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1185,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1186,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1192,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1202,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1207,1
    - Dst: tree_fits_shwi_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1208,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1208,1
    - Dst: tree_to_shwi
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1209,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1209,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1210,1
    - Dst: VAR_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1216,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1217,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1217,1
    - Dst: decl_constant_value
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1218,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1219,1
    - Dst: DECL_SIZE_UNIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1224,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1227,1
    - Dst: TYPE_MAIN_VARIANT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1233,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1233,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1233,1
    - Dst: TREE_STRING_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1244,1
    - Dst: TREE_STRING_LENGTH
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1245,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1249,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1249,1
    - Dst: tree_fits_shwi_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1251,1
    - Dst: tree_to_shwi
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1253,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1286,1
    - Dst: check_format_info_main
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1294,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 107
    argCount: 3
    argNames:
    - ctx
    - format_tree
    - arg_num
    argTypes:
    - void*
    - tree
    - unsigned HOST_WIDE_INT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1109
    functionDepth: 1
    functionLinenumber: 1109
    functionLinenumberEnd: 1296
    functionName: check_format_arg
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - tree_to_shwi
    - decl_constant_value
    - fold_for_warn
    - DECL_SIZE_UNIT
    - TREE_STRING_POINTER
    - TREE_VALUE
    - STRIP_NOPS
    - TYPE_MAIN_VARIANT
    - gcc_assert
    - VAR_P
    - check_format_info_main
    - TREE_CHAIN
    - cst_and_fits_in_hwi
    - TREE_TYPE
    - EXPR_LOC_OR_LOC
    - TREE_OPERAND
    - TREE_CODE
    - integer_zerop
    - tree_fits_shwi_p
    - TREE_STRING_LENGTH
    - int_cst_value
    linkageType: ''
    returnType: void
    signature: "void check_format_arg (void *ctx, tree format_tree,\n\t\t  unsigned
      HOST_WIDE_INT arg_num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1333
    functionName: length_modifier
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void length_modifier ()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - chars_
    - val_
    - std_
    - scalar_identity_flag_
    argTypes:
    - char*
    - enum format_lengths
    - enum format_std_version
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1335
    functionDepth: 0
    functionLinenumber: 1335
    functionLinenumberEnd: 1342
    functionName: length_modifier
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void length_modifier (const char *chars_,\n\t\t   enum format_lengths
      val_,\n\t\t   enum format_std_version std_,\n\t\t   int scalar_identity_flag_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1446
    functionDepth: 0
    functionLinenumber: 1446
    functionLinenumberEnd: 1449
    functionName: flag_chars_t::flag_chars_t
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void flag_chars_t::flag_chars_t ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1453
    functionDepth: 0
    functionLinenumber: 1453
    functionLinenumberEnd: 1457
    functionName: flag_chars_t::has_char_p
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: bool
    signature: bool flag_chars_t::has_char_p (char ch) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1467
    functionName: flag_chars_t::add_char
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: void flag_chars_t::add_char (char ch)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_flag_spec
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1488,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1497,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1499,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1503,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1510,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1511,1
    - Dst: C_STD_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1513,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1513,1
    - Dst: get_flag_spec
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1514,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1515,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1515,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1520,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1521,1
    - Dst: C_STD_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1523,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1523,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1532,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1536,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1543,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1545,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 9
    argNames:
    - fki
    - fci
    - flag_specs
    - format_chars
    - format_string_cst
    - format_string_loc
    - orig_format_chars
    - format_char
    - quoted
    argTypes:
    - format_kind_info*
    - format_char_info*
    - format_flag_spec*
    - char*
    - tree
    - location_t
    - char*
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1551
    functionName: flag_chars_t::validate
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_flag_spec
    - warning_at
    - ADJ_STD
    - strchr
    - format_warning_at_char
    - _
    - C_STD_NAME
    linkageType: ''
    returnType: void
    signature: "void flag_chars_t::validate (const format_kind_info *fki,\n\t\t\tconst
      format_char_info *fci,\n\t\t\tconst format_flag_spec *flag_specs,\n\t\t\tconst
      char * const format_chars,\n\t\t\ttree format_string_cst,\n\t\t\tlocation_t
      format_string_loc,\n\t\t\tconst char * const orig_format_chars,\n\t\t\tchar
      format_char,\n\t\t\tbool quoted)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flag_chars_t::has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1561,1
    - Dst: flag_chars_t::has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1563,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - fki
    argTypes:
    - format_kind_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1566
      start: 1557
    functionDepth: 1
    functionLinenumber: 1557
    functionLinenumberEnd: 1566
    functionName: flag_chars_t::get_alloc_flag
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - flag_chars_t::has_char_p
    linkageType: ''
    returnType: int
    signature: int flag_chars_t::get_alloc_flag (const format_kind_info *fki)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flag_chars_t::has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1575,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - fki
    argTypes:
    - format_kind_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 1571
    functionDepth: 1
    functionLinenumber: 1571
    functionLinenumberEnd: 1578
    functionName: flag_chars_t::assignment_suppression_p
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - flag_chars_t::has_char_p
    linkageType: ''
    returnType: int
    signature: int flag_chars_t::assignment_suppression_p (const format_kind_info
      *fki)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 10
    argNames:
    - info_
    - format_chars_
    - format_string_cst_
    - orig_format_chars_
    - format_string_loc_
    - flag_chars_
    - has_operand_number_
    - first_fillin_param_
    - fwt_pool_
    - arglocs_
    argTypes:
    - function_format_info*
    - char*
    - tree
    - char*
    - location_t
    - flag_chars_t
    - int
    - tree
    - object_allocator <format_wanted_type>
    - vec<location_t>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1583
    functionDepth: 0
    functionLinenumber: 1583
    functionLinenumberEnd: 1611
    functionName: argument_parser::argument_parser
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void argument_parser::\nargument_parser (function_format_info *info_,
      const char *&format_chars_,\n\t\t tree format_string_cst_,\n\t\t const char
      * const orig_format_chars_,\n\t\t location_t format_string_loc_,\n\t\t flag_chars_t
      &flag_chars_,\n\t\t int &has_operand_number_,\n\t\t tree first_fillin_param_,\n\t\t
      object_allocator <format_wanted_type> &fwt_pool_,\n\t\t vec<location_t> *arglocs_)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: maybe_read_dollar_number
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1628,1
    - Dst: avoid_dollar_number
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1641,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1645
      start: 1618
    functionDepth: 2
    functionLinenumber: 1618
    functionLinenumberEnd: 1645
    functionName: argument_parser::read_any_dollar
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - avoid_dollar_number
    - maybe_read_dollar_number
    linkageType: ''
    returnType: bool
    signature: bool argument_parser::read_any_dollar ()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1657,1
    - Dst: get_flag_spec
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1659,1
    - Dst: has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1661,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1663,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1666,1
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1669,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1676,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1653
    functionDepth: 1
    functionLinenumber: 1653
    functionLinenumberEnd: 1685
    functionName: argument_parser::read_format_flags
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_flag_spec
    - warning_at
    - has_char_p
    - strchr
    - format_warning_at_char
    - _
    - add_char
    linkageType: ''
    returnType: bool
    signature: bool argument_parser::read_format_flags ()
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1701,1
    - Dst: maybe_read_dollar_number
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1708,1
    - Dst: avoid_dollar_number
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1724,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1734,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1737,1
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1769,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1778,1
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1781,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 2
    argNames:
    - params
    - arg_num
    argTypes:
    - tree
    - unsigned HOST_WIDE_INT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1691
    functionDepth: 2
    functionLinenumber: 1691
    functionLinenumberEnd: 1785
    functionName: argument_parser::read_any_format_width
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - warning_at
    - maybe_read_dollar_number
    - avoid_dollar_number
    - TREE_VALUE
    - ISDIGIT
    - add_char
    linkageType: ''
    returnType: bool
    signature: "bool argument_parser::\nread_any_format_width (tree &params,\n\t\t
      \      unsigned HOST_WIDE_INT &arg_num)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1797,1
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1798,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1799,1
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1803,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1788
    functionDepth: 1
    functionLinenumber: 1788
    functionLinenumberEnd: 1805
    functionName: argument_parser::read_any_format_left_precision
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - ISDIGIT
    - format_warning_at_char
    - add_char
    linkageType: ''
    returnType: void
    signature: void argument_parser::read_any_format_left_precision ()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1822,1
    - Dst: maybe_read_dollar_number
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1831,1
    - Dst: avoid_dollar_number
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1847,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1857,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1860,1
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1889,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1890,1
    - Dst: ISDIGIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1894,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 2
    argNames:
    - params
    - arg_num
    argTypes:
    - tree
    - unsigned HOST_WIDE_INT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1899
      start: 1811
    functionDepth: 2
    functionLinenumber: 1811
    functionLinenumberEnd: 1899
    functionName: argument_parser::read_any_format_precision
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - maybe_read_dollar_number
    - avoid_dollar_number
    - TREE_VALUE
    - format_warning_at_char
    - ISDIGIT
    - add_char
    linkageType: ''
    returnType: bool
    signature: "bool argument_parser::\nread_any_format_precision (tree &params,\n\t\t\t
      \  unsigned HOST_WIDE_INT &arg_num)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1912,1
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1925,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1907
    functionDepth: 0
    functionLinenumber: 1907
    functionLinenumberEnd: 1930
    functionName: argument_parser::handle_alloc_chars
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - add_char
    linkageType: ''
    returnType: void
    signature: void argument_parser::handle_alloc_chars ()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1948,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1948,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1952,1
    - Dst: length_modifier
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1956,1
    - Dst: length_modifier
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1961,1
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1964,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1969,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1970,1
    - Dst: C_STD_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1972,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1977
      start: 1938
    functionDepth: 1
    functionLinenumber: 1938
    functionLinenumberEnd: 1977
    functionName: argument_parser::read_any_length_modifier
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - warning_at
    - strlen
    - ADJ_STD
    - length_modifier
    - strncmp
    - C_STD_NAME
    - add_char
    linkageType: ''
    returnType: length_modifier
    signature: length_modifier argument_parser::read_any_length_modifier ()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1988,1
    - Dst: has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1990,1
    - Dst: get_flag_spec
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1992,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1994,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:1997,1
    - Dst: add_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2000,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1981
    functionDepth: 1
    functionLinenumber: 1981
    functionLinenumberEnd: 2003
    functionName: argument_parser::read_any_other_modifier
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_flag_spec
    - has_char_p
    - strchr
    - format_warning_at_char
    - _
    - add_char
    linkageType: ''
    returnType: void
    signature: void argument_parser::read_any_other_modifier ()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2020,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2024,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2034,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2035,1
    - Dst: C_STD_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2039,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - format_char
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 2014
    functionDepth: 1
    functionLinenumber: 2014
    functionLinenumberEnd: 2043
    functionName: argument_parser::find_format_char_info
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - strchr
    - ADJ_STD
    - format_warning_at_char
    - C_STD_NAME
    linkageType: ''
    returnType: format_char_info
    signature: 'format_char_info *

      argument_parser::find_format_char_info (char format_char)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2057,1
    - Dst: has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2059,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2062,1
    - Dst: get_flag_spec
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2064,1
    - Dst: get_flag_spec
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2065,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2069,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2071,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2071,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2074,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2076,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2076,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2081,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2083,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2083,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2086,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2088,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2088,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 2
    argNames:
    - fci
    - format_char
    argTypes:
    - format_char_info*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2048
    functionDepth: 1
    functionLinenumber: 2048
    functionLinenumberEnd: 2091
    functionName: argument_parser::validate_flag_pairs
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_flag_spec
    - warning_at
    - has_char_p
    - strchr
    - _
    linkageType: ''
    returnType: void
    signature: "void argument_parser::validate_flag_pairs (const format_char_info
      *fci,\n\t\t\t\t      char format_char)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2103,1
    - Dst: has_char_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2104,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2108,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2110,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2113,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2116,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - fci
    - format_char
    argTypes:
    - format_char_info*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2119
      start: 2095
    functionDepth: 0
    functionLinenumber: 2095
    functionLinenumberEnd: 2119
    functionName: argument_parser::give_y2k_warnings
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - warning_at
    - strchr
    - has_char_p
    linkageType: ''
    returnType: void
    signature: "void argument_parser::give_y2k_warnings (const format_char_info *fci,\n\t\t\t\t
      \   char format_char)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2127,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2141,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - fci
    argTypes:
    - format_char_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2145
      start: 2124
    functionDepth: 1
    functionLinenumber: 2124
    functionLinenumberEnd: 2145
    functionName: argument_parser::parse_any_scan_set
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - strchr
    - format_warning_at_char
    linkageType: ''
    returnType: void
    signature: void argument_parser::parse_any_scan_set (const format_char_info *fci)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2170,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2179,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2186,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2186,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2187,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2187,1
    - Dst: ADJ_STD
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2189,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2190,1
    - Dst: C_STD_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2194,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 7
    argNames:
    - fci
    - len_modifier
    - wanted_type
    - wanted_type_name
    - arg_num
    - params
    - format_char
    argTypes:
    - format_char_info*
    - length_modifier
    - tree
    - char*
    - unsigned HOST_WIDE_INT
    - tree
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2200
      start: 2150
    functionDepth: 1
    functionLinenumber: 2150
    functionLinenumberEnd: 2200
    functionName: argument_parser::handle_conversions
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - ADJ_STD
    - format_warning_at_char
    - C_STD_NAME
    linkageType: ''
    returnType: bool
    signature: "bool argument_parser::handle_conversions (const format_char_info *fci,\n\t\t\t\t
      \    const length_modifier &len_modifier,\n\t\t\t\t     tree &wanted_type,\n\t\t\t\t
      \    const char *&wanted_type_name,\n\t\t\t\t     unsigned HOST_WIDE_INT &arg_num,\n\t\t\t\t
      \    tree &params,\n\t\t\t\t     char format_char)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2231,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2234,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2252,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2268,1
    - Dst: TREE_CHAIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2269,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2276,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2287,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2289,1
    - Dst: allocate
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2308,1
    - Dst: check_format_types
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2325,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2338,1
    - Dst: check_kef_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2340,1
    - Dst: EXPR_HAS_LOCATION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2351,1
    - Dst: EXPR_LOCATION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2352,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2356,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2360,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2361,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 85
    argCount: 13
    argNames:
    - fci
    - kef
    - len_modifier
    - wanted_type
    - wanted_type_name
    - suppressed
    - arg_num
    - params
    - alloc_flag
    - format_start
    - type_start
    - fmt_param_loc
    - conversion_char
    argTypes:
    - format_char_info*
    - struct kernel_ext_fmt*
    - length_modifier
    - tree
    - char*
    - bool
    - unsigned HOST_WIDE_INT
    - tree
    - int
    - char*
    - char*
    - location_t
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2366
      start: 2206
    functionDepth: 1
    functionLinenumber: 2206
    functionLinenumberEnd: 2366
    functionName: argument_parser::check_argument_type
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CHAIN
    - warning_at
    - check_format_types
    - TREE_TYPE
    - gcc_assert
    - strcmp
    - EXPR_HAS_LOCATION
    - TREE_VALUE
    - strchr
    - format_type_warning
    - EXPR_LOCATION
    - check_kef_type
    - allocate
    linkageType: ''
    returnType: bool
    signature: "bool argument_parser::\ncheck_argument_type (const format_char_info
      *fci,\n\t\t     const struct kernel_ext_fmt *kef,\n\t\t     const length_modifier
      &len_modifier,\n\t\t     tree &wanted_type,\n\t\t     const char *&wanted_type_name,\n\t\t
      \    const bool suppressed,\n\t\t     unsigned HOST_WIDE_INT &arg_num,\n\t\t
      \    tree &params,\n\t\t     const int alloc_flag,\n\t\t     const char * const
      format_start,\n\t\t     const char * const type_start,\n\t\t     location_t
      fmt_param_loc,\n\t\t     char conversion_char)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: init_dollar_format_checking
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2405,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2413,1
    - Dst: flag_chars_t::flag_chars_t
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2425,1
    - Dst: argument_parser::read_any_dollar
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2431,1
    - Dst: argument_parser::read_format_flags
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2434,1
    - Dst: argument_parser::read_any_format_width
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2438,1
    - Dst: argument_parser::read_any_format_left_precision
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2442,1
    - Dst: argument_parser::read_any_format_precision
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2445,1
    - Dst: argument_parser::handle_alloc_chars
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2450,1
    - Dst: argument_parser::read_any_length_modifier
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2461,1
    - Dst: argument_parser::read_any_other_modifier
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2464,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2471,1
    - Dst: argument_parser::find_format_char_info
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2480,1
    - Dst: strncmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2492,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2492,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2498,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2506,1
    - Dst: flag_chars_t::validate
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2512,1
    - Dst: auto_vec::length
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2515,1
    - Dst: flag_chars_t::get_alloc_flag
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2517,1
    - Dst: flag_chars_t::assignment_suppression_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2518,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2522,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2523,1
    - Dst: auto_vec::length
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2527,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2528,1
    - Dst: auto_vec::safe_push
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2532,1
    - Dst: auto_vec::length
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2536,1
    - Dst: auto_vec::pop
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2537,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2539,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2545,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2551,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2554,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2559,1
    - Dst: auto_vec::length
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2568,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2570,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2571,1
    - Dst: argument_parser::validate_flag_pairs
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2579,1
    - Dst: argument_parser::give_y2k_warnings
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2581,1
    - Dst: argument_parser::parse_any_scan_set
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2583,1
    - Dst: argument_parser::handle_conversions
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2588,1
    - Dst: argument_parser::check_argument_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2598,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2610,1
    - Dst: finish_dollar_format_checking
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2621,1
    - Dst: auto_vec::length
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2623,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2624,1
    - Dst: auto_vec::pop
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2625,1
    - Dst: format_warning_at_char
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2628,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 91
    argCount: 10
    argNames:
    - res
    - info
    - format_chars
    - fmt_param_loc
    - format_string_cst
    - format_length
    - params
    - arg_num
    - fwt_pool
    - arglocs
    argTypes:
    - format_check_results*
    - function_format_info*
    - char*
    - location_t
    - tree
    - int
    - tree
    - unsigned HOST_WIDE_INT
    - object_allocator <format_wanted_type>
    - vec<location_t>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2631
      start: 2375
    functionDepth: 3
    functionLinenumber: 2375
    functionLinenumberEnd: 2631
    functionName: check_format_info_main
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - strlen
    - argument_parser::validate_flag_pairs
    - argument_parser::read_format_flags
    - flag_chars_t::validate
    - auto_vec::length
    - strncmp
    - strchr
    - init_dollar_format_checking
    - argument_parser::check_argument_type
    - argument_parser::read_any_format_width
    - argument_parser::read_any_format_left_precision
    - finish_dollar_format_checking
    - argument_parser::read_any_other_modifier
    - auto_vec::pop
    - auto_vec::safe_push
    - flag_chars_t::get_alloc_flag
    - argument_parser::parse_any_scan_set
    - argument_parser::read_any_length_modifier
    - argument_parser::find_format_char_info
    - argument_parser::handle_alloc_chars
    - argument_parser::give_y2k_warnings
    - flag_chars_t::assignment_suppression_p
    - format_warning_at_char
    - argument_parser::read_any_dollar
    - argument_parser::read_any_format_precision
    - flag_chars_t::flag_chars_t
    - argument_parser::handle_conversions
    linkageType: ''
    returnType: void
    signature: "void check_format_info_main (format_check_results *res,\n\t\t\tfunction_format_info
      *info, const char *format_chars,\n\t\t\tlocation_t fmt_param_loc, tree format_string_cst,\n\t\t\tint
      format_length, tree params,\n\t\t\tunsigned HOST_WIDE_INT arg_num,\n\t\t\tobject_allocator
      <format_wanted_type> &fwt_pool,\n\t\t\tvec<location_t> *arglocs)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2684,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2684,1
    - Dst: build_qualified_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2688,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2689,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2689,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2692,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2700,1
    - Dst: DECL_ORIGINAL_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2709,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2709,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 2
    argNames:
    - type
    - cousin
    argTypes:
    - tree
    - tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2716
      start: 2680
    functionDepth: 0
    functionLinenumber: 2680
    functionLinenumberEnd: 2716
    functionName: type_normalize
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - build_qualified_type
    - TYPE_NAME
    - TREE_CODE
    - DECL_ORIGINAL_TYPE
    linkageType: ''
    returnType: tree
    signature: tree type_normalize (tree type, tree *cousin, tree target = NULL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2722,1
    - Dst: DECL_ORIGINAL_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - typ
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2726
      start: 2719
    functionDepth: 0
    functionLinenumber: 2719
    functionLinenumberEnd: 2726
    functionName: decl_deref
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TREE_CODE
    - DECL_ORIGINAL_TYPE
    linkageType: ''
    returnType: tree
    signature: tree decl_deref(tree typ)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: decl_deref
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2749,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2752,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2753,1
    - Dst: types::type_promotes_to
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2756,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2758,1
    - Dst: TYPE_MAIN_VARIANT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2763,1
    - Dst: DECL_ORIGINAL_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2763,1
    - Dst: TYPE_MAIN_VARIANT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2766,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2773,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2779,1
    - Dst: EXPR_HAS_LOCATION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2786,1
    - Dst: EXPR_LOCATION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2787,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2791,1
    - Dst: STRIP_NOPS
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2795,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2801,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2803,1
    - Dst: integer_zerop
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2811,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2812,1
    - Dst: integer_zerop
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2818,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2819,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2821,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2822,1
    - Dst: TYPE_READONLY
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2833,1
    - Dst: CONSTANT_CLASS_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2835,1
    - Dst: DECL_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2836,1
    - Dst: TREE_READONLY
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2837,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2838,1
    - Dst: TYPE_READONLY
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2845,1
    - Dst: TYPE_VOLATILE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2846,1
    - Dst: TYPE_ATOMIC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2847,1
    - Dst: TYPE_RESTRICT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2848,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2849,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2855,1
    - Dst: type_normalize
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2865,1
    - Dst: types_compatible_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2874,1
    - Dst: decl_deref
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2874,1
    - Dst: decl_deref
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2874,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2876,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2879,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2883,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2886,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2887,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2891,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2897,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2899,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2901,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2911,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2937,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2938,1
    - Dst: TYPE_UNSIGNED
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2942,1
    - Dst: c_common_unsigned_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2943,1
    - Dst: c_common_signed_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2944,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2948,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2949,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2953,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2959,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2961,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2963,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2973,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2985,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2986,1
    - Dst: TYPE_UNSIGNED
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2988,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2990,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2992,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2992,1
    - Dst: TYPE_UNSIGNED
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2993,1
    - Dst: types::type_promotes_to
      Src: /src/frr/tools/gcc-plugins/frr-format.c:2994,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3004,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3004,1
    - Dst: INTEGRAL_TYPE_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3005,1
    - Dst: INTEGRAL_TYPE_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3006,1
    - Dst: TYPE_PRECISION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3007,1
    - Dst: TYPE_PRECISION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3007,1
    - Dst: format_type_warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3010,1
    CyclomaticComplexity: 115
    EdgeCount: 115
    ICount: 122
    argCount: 6
    argNames:
    - fmt_loc
    - types
    - fki
    - offset_to_type_start
    - conversion_char
    - arglocs
    argTypes:
    - substring_loc
    - format_wanted_type*
    - format_kind_info*
    - int
    - char
    - vec<location_t>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 2728
    functionDepth: 1
    functionLinenumber: 2728
    functionLinenumberEnd: 3014
    functionName: check_format_types
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - DECL_P
    - TYPE_RESTRICT
    - EXPR_HAS_LOCATION
    - types_compatible_p
    - types::type_promotes_to
    - format_type_warning
    - TREE_READONLY
    - STRIP_NOPS
    - TYPE_UNSIGNED
    - TYPE_NAME
    - TYPE_READONLY
    - INTEGRAL_TYPE_P
    - TYPE_MAIN_VARIANT
    - DECL_ORIGINAL_TYPE
    - TYPE_ATOMIC
    - type_normalize
    - c_common_unsigned_type
    - gcc_assert
    - TREE_TYPE
    - TYPE_VOLATILE
    - TREE_OPERAND
    - EXPR_LOCATION
    - c_common_signed_type
    - TYPE_PRECISION
    - warning
    - TREE_CODE
    - CONSTANT_CLASS_P
    - integer_zerop
    - decl_deref
    linkageType: ''
    returnType: void
    signature: "void check_format_types (const substring_loc &fmt_loc,\n\t\t    format_wanted_type
      *types, const format_kind_info *fki,\n\t\t    int offset_to_type_start,\n\t\t
      \   char conversion_char,\n\t\t    vec<location_t> *arglocs)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3032,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3033,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3035,1
    - Dst: DECL_ORIGINAL_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3036,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3041,1
    - Dst: EXPR_HAS_LOCATION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3046,1
    - Dst: EXPR_LOCATION
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3047,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3051,1
    - Dst: STRIP_NOPS
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3056,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3062,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3064,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3068,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3069,1
    - Dst: TYPE_READONLY
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3078,1
    - Dst: TYPE_VOLATILE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3079,1
    - Dst: TYPE_ATOMIC
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3080,1
    - Dst: TYPE_RESTRICT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3081,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3082,1
    - Dst: types_compatible_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3096,1
    - Dst: type_normalize
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3104,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 39
    argCount: 9
    argNames:
    - fmt_loc
    - kef
    - arg_num
    - cur_param
    - wanted_type
    - fki
    - offset_to_type_start
    - conversion_char
    - arglocs
    argTypes:
    - substring_loc
    - struct kernel_ext_fmt*
    - unsigned
    - tree
    - tree
    - format_kind_info*
    - int
    - char
    - vec<location_t>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3107
      start: 3016
    functionDepth: 1
    functionLinenumber: 3016
    functionLinenumberEnd: 3107
    functionName: check_kef_type
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - TYPE_READONLY
    - DECL_ORIGINAL_TYPE
    - warning
    - TREE_TYPE
    - TREE_CODE
    - TYPE_VOLATILE
    - EXPR_HAS_LOCATION
    - TYPE_RESTRICT
    - types_compatible_p
    - TYPE_ATOMIC
    - TREE_OPERAND
    - type_normalize
    - STRIP_NOPS
    - EXPR_LOCATION
    - gcc_assert
    linkageType: ''
    returnType: bool
    signature: "bool check_kef_type (const substring_loc &fmt_loc,\n\t\tconst struct
      kernel_ext_fmt *kef,\n\t\tunsigned arg_num,\n\t\ttree cur_param,\n\t\ttree wanted_type,\n\t\tconst
      format_kind_info *fki,\n\t\tint offset_to_type_start,\n\t\tchar conversion_char,\n\t\tvec<location_t>
      *arglocs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3120,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3124,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3126,1
    - Dst: build_qualified_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - type
    - n
    argTypes:
    - tree
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3130
      start: 3117
    functionDepth: 0
    functionLinenumber: 3117
    functionLinenumberEnd: 3130
    functionName: deref_n_times
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - gcc_assert
    - build_qualified_type
    - TREE_CODE
    - TREE_TYPE
    linkageType: ''
    returnType: tree
    signature: tree deref_n_times (tree type, int n)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - fli
    - format_len
    argTypes:
    - format_length_info*
    - enum format_lengths
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3148
      start: 3136
    functionDepth: 0
    functionLinenumber: 3136
    functionLinenumberEnd: 3148
    functionName: get_modifier_for_format_len
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *\nget_modifier_for_format_len (const format_length_info *fli,\n\t\t\t
      \    enum format_lengths format_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3157,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3158,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3159,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3160,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3161,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3162,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3163,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3165
      start: 3154
    functionDepth: 1
    functionLinenumber: 3154
    functionLinenumberEnd: 3165
    functionName: selftest::test_get_modifier_for_format_len
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_modifier_for_format_len
    - ASSERT_STREQ
    - ASSERT_EQ
    linkageType: ''
    returnType: void
    signature: void test_get_modifier_for_format_len ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3157,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3158,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3159,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3160,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3161,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3162,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3163,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3165
      start: 3154
    functionDepth: 1
    functionLinenumber: 3154
    functionLinenumberEnd: 3165
    functionName: selftest::test_get_modifier_for_format_len
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_modifier_for_format_len
    - ASSERT_STREQ
    - ASSERT_EQ
    linkageType: ''
    returnType: void
    signature: void test_get_modifier_for_format_len ()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3178,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3179,1
    - Dst: decl_deref
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3181,1
    - Dst: decl_deref
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3182,1
    - Dst: TYPE_STRUCTURAL_EQUALITY_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3186,1
    - Dst: TYPE_STRUCTURAL_EQUALITY_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3187,1
    - Dst: TYPE_CANONICAL
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3190,1
    - Dst: TYPE_CANONICAL
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3191,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3193,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3194,1
    - Dst: TYPE_UNSIGNED
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3195,1
    - Dst: c_common_unsigned_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3196,1
    - Dst: c_common_signed_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - spec_type
    - arg_type
    argTypes:
    - tree
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3201
      start: 3175
    functionDepth: 1
    functionLinenumber: 3175
    functionLinenumberEnd: 3201
    functionName: matching_type_p
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - c_common_unsigned_type
    - TREE_CODE
    - c_common_signed_type
    - TYPE_UNSIGNED
    - gcc_assert
    - decl_deref
    - TYPE_CANONICAL
    - TYPE_STRUCTURAL_EQUALITY_P
    linkageType: ''
    returnType: bool
    signature: bool matching_type_p (tree spec_type, tree arg_type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3222,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3230,1
    - Dst: deref_n_times
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3233,1
    - Dst: matching_type_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3242,1
    - Dst: get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3245,1
    - Dst: xasprintf
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3255,1
    - Dst: xasprintf
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3261,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 3
    argNames:
    - fki
    - arg_type
    - conversion_char
    argTypes:
    - format_kind_info*
    - tree
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3267
      start: 3218
    functionDepth: 2
    functionLinenumber: 3218
    functionLinenumberEnd: 3267
    functionName: get_format_for_type_1
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_modifier_for_format_len
    - deref_n_times
    - xasprintf
    - strchr
    - gcc_assert
    - matching_type_p
    linkageType: ''
    returnType: char
    signature: "char *\nget_format_for_type_1 (const format_kind_info *fki, tree arg_type,\n\t\t
      \      char conversion_char)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3281,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3282,1
    - Dst: get_format_for_type_1
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3287,1
    - Dst: get_format_for_type_1
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - fki
    - arg_type
    - conversion_char
    argTypes:
    - format_kind_info*
    - tree
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3294
      start: 3277
    functionDepth: 3
    functionLinenumber: 3277
    functionLinenumberEnd: 3294
    functionName: get_format_for_type
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - gcc_assert
    - get_format_for_type_1
    linkageType: ''
    returnType: char
    signature: "char *\nget_format_for_type (const format_kind_info *fki, tree arg_type,\n\t\t
      \    char conversion_char)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: substring_loc::set_caret_index
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3345,1
    - Dst: substring_loc::get_location
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3348,1
    - Dst: get_range_from_loc
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3353,1
    - Dst: expand_location_to_spelling_point
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3356,1
    - Dst: expand_location_to_spelling_point
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3358,1
    - Dst: expand_location_to_spelling_point
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3360,1
    - Dst: location_get_source_line
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3377,1
    - Dst: char_span::subspan
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3388,1
    - Dst: char_span::xstrdup
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3389,1
    - Dst: get_format_for_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3398,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3401,1
    - Dst: concat
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3408,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3409,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3410,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 6
    argNames:
    - fmt_loc
    - type
    - arg_type
    - fki
    - offset_to_type_start
    - conversion_char
    argTypes:
    - substring_loc
    - format_wanted_type*
    - tree
    - format_kind_info*
    - int
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3412
      start: 3326
    functionDepth: 4
    functionLinenumber: 3326
    functionLinenumberEnd: 3412
    functionName: get_corrected_substring
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - get_range_from_loc
    - location_get_source_line
    - expand_location_to_spelling_point
    - free
    - char_span::subspan
    - char_span::xstrdup
    - concat
    - substring_loc::set_caret_index
    - get_format_for_type
    - substring_loc::get_location
    linkageType: ''
    returnType: char
    signature: "char *\nget_corrected_substring (const substring_loc &fmt_loc,\n\t\t\t
      format_wanted_type *type, tree arg_type,\n\t\t\t const format_kind_info *fki,\n\t\t\t
      int offset_to_type_start, char conversion_char)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pointer_count
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3425
      start: 3425
    functionDepth: 0
    functionLinenumber: 3425
    functionLinenumberEnd: 3425
    functionName: indirection_suffix::indirection_suffix
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void indirection_suffix (int pointer_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3432
      start: 3429
    functionDepth: 0
    functionLinenumber: 3429
    functionLinenumberEnd: 3432
    functionName: indirection_suffix::get_buffer_size
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t get_buffer_size () const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: c_dialect_cxx
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3440,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3442,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - dst
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3451
      start: 3436
    functionDepth: 0
    functionLinenumber: 3436
    functionLinenumberEnd: 3451
    functionName: indirection_suffix::fill_buffer
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - memset
    - c_dialect_cxx
    linkageType: ''
    returnType: void
    signature: void fill_buffer (char *dst) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - labelled_type
    - other_type
    argTypes:
    - tree
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3465
      start: 3462
    functionDepth: 0
    functionLinenumber: 3462
    functionLinenumberEnd: 3465
    functionName: frr_range_label_for_type_mismatch::frr_range_label_for_type_mismatch
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void frr_range_label_for_type_mismatch (tree labelled_type, tree other_type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3479,1
    - Dst: TYPE_P
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3479,1
    - Dst: pp_buffer
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3480,1
    - Dst: obstack_base
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3481,1
    - Dst: obstack_object_size
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3483,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3485,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3486,1
    - Dst: DECL_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3486,1
    - Dst: pp_identifier
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3487,1
    - Dst: decl_printable_name
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3487,1
    - Dst: c_pretty_printer*::type_id
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3489,1
    - Dst: TYPE_CANONICAL
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3495,1
    - Dst: TYPE_CANONICAL
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3495,1
    - Dst: c_pretty_printer::type_id
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3499,1
    - Dst: TYPE_CANONICAL
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3499,1
    - Dst: obstack_base
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3502,1
    - Dst: obstack_object_size
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3503,1
    - Dst: obstack_object_size
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3504,1
    - Dst: memcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3507,1
    - Dst: pp_end_quote
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3512,1
    - Dst: pp_show_color
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3512,1
    - Dst: pp_c_whitespace
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3513,1
    - Dst: pp_left_brace
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3514,1
    - Dst: pp_c_ws_string
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3515,1
    - Dst: _
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3515,1
    - Dst: pp_c_whitespace
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3516,1
    - Dst: pp_begin_quote
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3518,1
    - Dst: pp_show_color
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3518,1
    - Dst: c_pretty_printer*::type_id
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3519,1
    - Dst: TYPE_CANONICAL
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3519,1
    - Dst: pp_end_quote
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3521,1
    - Dst: pp_show_color
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3521,1
    - Dst: pp_right_brace
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3522,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - cpp
    - t
    - quoted
    argTypes:
    - c_pretty_printer*
    - tree
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3526
      start: 3476
    functionDepth: 0
    functionLinenumber: 3476
    functionLinenumberEnd: 3526
    functionName: print_type
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - TYPE_P
    - c_pretty_printer*::type_id
    - memcmp
    - TYPE_NAME
    - c_pretty_printer::type_id
    - pp_identifier
    - pp_left_brace
    - pp_c_ws_string
    - pp_end_quote
    - gcc_assert
    - decl_printable_name
    - _
    - DECL_NAME
    - obstack_object_size
    - obstack_base
    - pp_buffer
    - pp_right_brace
    - pp_begin_quote
    - pp_show_color
    - pp_c_whitespace
    - TREE_CODE
    - TYPE_CANONICAL
    linkageType: ''
    returnType: void
    signature: void print_type (c_pretty_printer *cpp, tree t, bool *quoted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3532
      start: 3531
    functionDepth: 0
    functionLinenumber: 3531
    functionLinenumberEnd: 3532
    functionName: label_borrow
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: label_borrow(text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3533
      start: 3532
    functionDepth: 0
    functionLinenumber: 3532
    functionLinenumberEnd: 3533
    functionName: label_take
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: label_take(text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3535
      start: 3534
    functionDepth: 0
    functionLinenumber: 3534
    functionLinenumberEnd: 3535
    functionName: label_borrow
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: label_borrow(text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3536
      start: 3535
    functionDepth: 0
    functionLinenumber: 3535
    functionLinenumberEnd: 3536
    functionName: label_take
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: label_take(text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: label_borrow
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3542,1
    - Dst: print_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3546,1
    - Dst: label_take
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3547,1
    - Dst: xstrdup
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3547,1
    - Dst: pp_formatted_text
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3548
      start: 3538
    functionDepth: 1
    functionLinenumber: 3538
    functionLinenumberEnd: 3548
    functionName: frr_range_label_for_type_mismatch::get_text
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - xstrdup
    - print_type
    - label_take
    - label_borrow
    - pp_formatted_text
    linkageType: ''
    returnType: label_text
    signature: label_text frr_range_label_for_type_mismatch::get_text (unsigned /*range_idx*/)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - labelled_type
    - other_type
    - pointer_count
    argTypes:
    - tree
    - tree
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3565
      start: 3560
    functionDepth: 0
    functionLinenumber: 3560
    functionLinenumberEnd: 3565
    functionName: range_label_for_format_type_mismatch::range_label_for_format_type_mismatch
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void range_label_for_format_type_mismatch (tree labelled_type, tree
      other_type,\n\t\t\t\t\tint pointer_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_range_label_for_type_mismatch::get_text
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3569,1
    - Dst: alloca
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3574,1
    - Dst: indirection_suffix::get_buffer_size
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3574,1
    - Dst: indirection_suffix::fill_buffer
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3575,1
    - Dst: concat
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3577,1
    - Dst: label_text::maybe_free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3578,1
    - Dst: label_take
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3580
      start: 3567
    functionDepth: 2
    functionLinenumber: 3567
    functionLinenumberEnd: 3580
    functionName: range_label_for_format_type_mismatch::OVERRIDE
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - label_text::maybe_free
    - frr_range_label_for_type_mismatch::get_text
    - alloca
    - label_take
    - indirection_suffix::fill_buffer
    - indirection_suffix::get_buffer_size
    - concat
    linkageType: ''
    returnType: FINAL
    signature: FINAL OVERRIDE
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3643,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3644,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3644,1
    - Dst: DECL_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3645,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3645,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3646,1
    - Dst: decl_printable_name
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3647,1
    - Dst: TYPE_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3647,1
    - Dst: TYPE_MAIN_VARIANT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3648,1
    - Dst: alloca
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3651,1
    - Dst: indirection_suffix::get_buffer_size
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3651,1
    - Dst: indirection_suffix::fill_buffer
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3652,1
    - Dst: substring_loc::set_caret_index
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3658,1
    - Dst: get_corrected_substring
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3668,1
    - Dst: get_corrected_substring
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3680,1
    - Dst: format_warning_at_substring
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3688,1
    - Dst: gettext
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3692,1
    - Dst: format_warning_at_substring
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3697,1
    - Dst: gettext
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3701,1
    - Dst: format_warning_at_substring
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3708,1
    - Dst: gettext
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3712,1
    - Dst: format_warning_at_substring
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3717,1
    - Dst: gettext
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3721,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3726,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 9
    argNames:
    - whole_fmt_loc
    - param_loc
    - type
    - wanted_type
    - arg_type
    - fki
    - offset_to_type_start
    - conversion_char
    - extra
    argTypes:
    - substring_loc
    - location_t
    - format_wanted_type*
    - tree
    - tree
    - format_kind_info*
    - int
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3727
      start: 3618
    functionDepth: 5
    functionLinenumber: 3618
    functionLinenumberEnd: 3727
    functionName: format_type_warning
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 2
    functionsReached:
    - indirection_suffix::get_buffer_size
    - TYPE_MAIN_VARIANT
    - strcmp
    - free
    - TREE_CODE
    - alloca
    - gettext
    - format_warning_at_substring
    - get_corrected_substring
    - substring_loc::set_caret_index
    - indirection_suffix::fill_buffer
    - decl_printable_name
    - TYPE_NAME
    - DECL_NAME
    linkageType: ''
    returnType: void
    signature: "void format_type_warning (const substring_loc &whole_fmt_loc,\n\t\t
      \    location_t param_loc,\n\t\t     format_wanted_type *type,\n\t\t     tree
      wanted_type, tree arg_type,\n\t\t     const format_kind_info *fki,\n\t\t     int
      offset_to_type_start,\n\t\t     char conversion_char,\n\t\t     const char *extra)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3674
      start: 3672
    functionDepth: 0
    functionLinenumber: 3672
    functionLinenumberEnd: 3674
    functionName: format_warning_at_substring
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: format_warning_at_substring(a,b,c,d,e,...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3677
      start: 3675
    functionDepth: 0
    functionLinenumber: 3675
    functionLinenumberEnd: 3677
    functionName: format_warning_at_substring
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: format_warning_at_substring(a,b,c,d,...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3740,1
    - Dst: gcc_unreachable
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - fci
    - c
    argTypes:
    - format_char_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3745
      start: 3734
    functionDepth: 0
    functionLinenumber: 3734
    functionLinenumberEnd: 3745
    functionName: find_char_info_specifier_index
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - strchr
    - gcc_unreachable
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int find_char_info_specifier_index (const format_char_info
      *fci, int c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3756,1
    - Dst: gcc_unreachable
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - fli
    - c
    argTypes:
    - format_length_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3761
      start: 3750
    functionDepth: 0
    functionLinenumber: 3750
    functionLinenumberEnd: 3761
    functionName: find_length_info_modifier_index
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - strchr
    - gcc_unreachable
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int find_length_info_modifier_index (const format_length_info
      *fli, int c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3792,1
    - Dst: TARGET_OVERRIDES_FORMAT_INIT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3795,1
    - Dst: cmp_attribs
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3805,1
    - Dst: cmp_attribs
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3808,1
    - Dst: cmp_attribs
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3819,1
    - Dst: cmp_attribs
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3822,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 1
    argNames:
    - attr_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3828
      start: 3786
    functionDepth: 0
    functionLinenumber: 3786
    functionLinenumberEnd: 3828
    functionName: convert_format_name_to_system_name
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 2
    functionsReached:
    - strncmp
    - cmp_attribs
    - TARGET_OVERRIDES_FORMAT_INIT
    linkageType: ''
    returnType: char
    signature: 'char *

      convert_format_name_to_system_name (const char *attr_name)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3840,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3840,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3841,1
    - Dst: canonicalize_attr_name
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3841,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3841,1
    - Dst: decode_format_attr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3843,1
    - Dst: prototype_p
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3849,1
    - Dst: check_format_string
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3851,1
    - Dst: FOREACH_FUNCTION_ARGS
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3863,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3869,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3881,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 5
    argNames:
    - node
    - ARG_UNUSED
    - args
    - flags
    - no_add_attrs
    argTypes:
    - tree*
    - tree
    - tree
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3887
      start: 3832
    functionDepth: 3
    functionLinenumber: 3832
    functionLinenumberEnd: 3887
    functionName: handle_frr_format_attribute
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - check_format_string
    - FOREACH_FUNCTION_ARGS
    - canonicalize_attr_name
    - TREE_CODE
    - decode_format_attr
    - TREE_VALUE
    - prototype_p
    - error
    linkageType: ''
    returnType: tree
    signature: "tree handle_frr_format_attribute (tree *node, tree ARG_UNUSED (name),
      tree args,\n\t\t\t int flags, bool *no_add_attrs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: decode_format_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3900,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3904
      start: 3897
    functionDepth: 2
    functionLinenumber: 3897
    functionLinenumberEnd: 3904
    functionName: selftest::get_info
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - decode_format_type
    - ASSERT_STREQ
    linkageType: ''
    returnType: format_kind_info
    signature: 'format_kind_info *

      get_info (const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3914,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3915,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3916,1
    - Dst: get_format_for_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3918,1
    - Dst: ASSERT_STREQ_AT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3919,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - loc
    - fki
    - expected_format
    - type
    - conversion_char
    argTypes:
    - location
    - format_kind_info*
    - char*
    - tree
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3921
      start: 3909
    functionDepth: 4
    functionLinenumber: 3909
    functionLinenumberEnd: 3921
    functionName: selftest::assert_format_for_type_streq
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - gcc_assert
    - get_format_for_type
    - free
    - ASSERT_STREQ_AT
    linkageType: ''
    returnType: void
    signature: "void assert_format_for_type_streq (const location &loc, const format_kind_info
      *fki,\n\t\t\t      const char *expected_format, tree type,\n\t\t\t      char
      conversion_char)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - EXPECTED_FORMAT
    - ','
    - TYPE
    - ','
    - CONVERSION_CHAR
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3925
    functionDepth: 0
    functionLinenumber: 3925
    functionLinenumberEnd: 3928
    functionName: ASSERT_FORMAT_FOR_TYPE_STREQ
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSERT_FORMAT_FOR_TYPE_STREQ(EXPECTED_FORMAT, TYPE, CONVERSION_CHAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: selftest::get_info
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3934,1
    - Dst: ASSERT_NE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3935,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3937,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3938,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3939,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3940,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3941,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3942,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3943,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3944,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3945,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3946,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3947,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3948,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3949,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3950,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3951,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3952,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3953,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3954,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3955,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3956,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3957,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3958,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3959,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3960,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3961,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3962,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3963,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3964,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3965
      start: 3931
    functionDepth: 3
    functionLinenumber: 3931
    functionLinenumberEnd: 3965
    functionName: selftest::test_get_format_for_type_printf
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - ASSERT_FORMAT_FOR_TYPE_STREQ
    - ASSERT_NE
    - build_pointer_type
    - selftest::get_info
    linkageType: ''
    returnType: void
    signature: void test_get_format_for_type_printf ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: selftest::get_info
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3972,1
    - Dst: ASSERT_NE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3973,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3974,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3974,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3975,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3975,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3976,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3977,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3978,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3979,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3980,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3981,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3982,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3983,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3984,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3984,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3985,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3986
      start: 3969
    functionDepth: 3
    functionLinenumber: 3969
    functionLinenumberEnd: 3986
    functionName: selftest::test_get_format_for_type_scanf
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - ASSERT_FORMAT_FOR_TYPE_STREQ
    - ASSERT_NE
    - build_pointer_type
    - selftest::get_info
    linkageType: ''
    returnType: void
    signature: void test_get_format_for_type_scanf ()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linemap_add
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4004,1
    - Dst: temp_source_file::get_filename
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4004,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4006,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4007,1
    - Dst: LOCATION_COLUMN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4007,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4008,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4009,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4010,1
    - Dst: make_location
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4016,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4017,1
    - Dst: LOCATION_COLUMN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4017,1
    - Dst: make_location
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4019,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4020,1
    - Dst: LOCATION_COLUMN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4020,1
    - Dst: gcc_rich_location::add_range
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4027,1
    - Dst: diagnostic_show_locus
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4030,1
    - Dst: c_dialect_cxx
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4031,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4033,1
    - Dst: pp_formatted_text
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4038,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4041,1
    - Dst: pp_formatted_text
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4048
      start: 3994
    functionDepth: 0
    functionLinenumber: 3994
    functionLinenumberEnd: 4048
    functionName: selftest::test_type_mismatch_range_labels
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - diagnostic_show_locus
    - pp_formatted_text
    - linemap_position_for_column
    - linemap_add
    - temp_source_file::get_filename
    - c_dialect_cxx
    - ASSERT_STREQ
    - make_location
    - LOCATION_COLUMN
    - gcc_rich_location::add_range
    - ASSERT_EQ
    linkageType: ''
    returnType: void
    signature: void test_type_mismatch_range_labels ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: selftest::test_get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4055,1
    - Dst: selftest::test_get_format_for_type_printf
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4056,1
    - Dst: selftest::test_get_format_for_type_scanf
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4057,1
    - Dst: selftest::test_type_mismatch_range_labels
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4059
      start: 4052
    functionDepth: 4
    functionLinenumber: 4052
    functionLinenumberEnd: 4059
    functionName: selftest::c_format_c_tests
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - selftest::test_get_format_for_type_scanf
    - selftest::test_get_format_for_type_printf
    - selftest::test_get_modifier_for_format_len
    - selftest::test_type_mismatch_range_labels
    linkageType: ''
    returnType: void
    signature: void c_format_c_tests ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: decode_format_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3900,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3904
      start: 3897
    functionDepth: 2
    functionLinenumber: 3897
    functionLinenumberEnd: 3904
    functionName: selftest::get_info
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 2
    functionsReached:
    - decode_format_type
    - ASSERT_STREQ
    linkageType: ''
    returnType: format_kind_info
    signature: 'format_kind_info *

      get_info (const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3914,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3915,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3916,1
    - Dst: get_format_for_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3918,1
    - Dst: ASSERT_STREQ_AT
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3919,1
    - Dst: free
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - loc
    - fki
    - expected_format
    - type
    - conversion_char
    argTypes:
    - location
    - format_kind_info*
    - char*
    - tree
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3921
      start: 3909
    functionDepth: 4
    functionLinenumber: 3909
    functionLinenumberEnd: 3921
    functionName: selftest::assert_format_for_type_streq
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - gcc_assert
    - get_format_for_type
    - free
    - ASSERT_STREQ_AT
    linkageType: ''
    returnType: void
    signature: "void assert_format_for_type_streq (const location &loc, const format_kind_info
      *fki,\n\t\t\t      const char *expected_format, tree type,\n\t\t\t      char
      conversion_char)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - EXPECTED_FORMAT
    - ','
    - TYPE
    - ','
    - CONVERSION_CHAR
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3925
    functionDepth: 0
    functionLinenumber: 3925
    functionLinenumberEnd: 3928
    functionName: ASSERT_FORMAT_FOR_TYPE_STREQ
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSERT_FORMAT_FOR_TYPE_STREQ(EXPECTED_FORMAT, TYPE, CONVERSION_CHAR)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: selftest::get_info
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3934,1
    - Dst: ASSERT_NE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3935,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3937,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3938,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3939,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3940,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3941,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3942,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3943,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3944,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3945,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3946,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3947,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3948,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3949,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3950,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3951,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3952,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3953,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3954,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3955,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3956,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3957,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3958,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3959,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3960,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3961,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3962,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3963,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3964,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3965
      start: 3931
    functionDepth: 3
    functionLinenumber: 3931
    functionLinenumberEnd: 3965
    functionName: selftest::test_get_format_for_type_printf
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - ASSERT_FORMAT_FOR_TYPE_STREQ
    - ASSERT_NE
    - build_pointer_type
    - selftest::get_info
    linkageType: ''
    returnType: void
    signature: void test_get_format_for_type_printf ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: selftest::get_info
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3972,1
    - Dst: ASSERT_NE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3973,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3974,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3974,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3975,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3975,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3976,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3977,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3978,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3979,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3980,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3981,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3982,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3983,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3984,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3984,1
    - Dst: ASSERT_FORMAT_FOR_TYPE_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3985,1
    - Dst: build_pointer_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:3985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3986
      start: 3969
    functionDepth: 3
    functionLinenumber: 3969
    functionLinenumberEnd: 3986
    functionName: selftest::test_get_format_for_type_scanf
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - ASSERT_FORMAT_FOR_TYPE_STREQ
    - ASSERT_NE
    - build_pointer_type
    - selftest::get_info
    linkageType: ''
    returnType: void
    signature: void test_get_format_for_type_scanf ()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: linemap_add
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4004,1
    - Dst: temp_source_file::get_filename
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4004,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4006,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4007,1
    - Dst: LOCATION_COLUMN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4007,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4008,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4009,1
    - Dst: linemap_position_for_column
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4010,1
    - Dst: make_location
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4016,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4017,1
    - Dst: LOCATION_COLUMN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4017,1
    - Dst: make_location
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4019,1
    - Dst: ASSERT_EQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4020,1
    - Dst: LOCATION_COLUMN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4020,1
    - Dst: gcc_rich_location::add_range
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4027,1
    - Dst: diagnostic_show_locus
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4030,1
    - Dst: c_dialect_cxx
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4031,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4033,1
    - Dst: pp_formatted_text
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4038,1
    - Dst: ASSERT_STREQ
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4041,1
    - Dst: pp_formatted_text
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4047,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4048
      start: 3994
    functionDepth: 0
    functionLinenumber: 3994
    functionLinenumberEnd: 4048
    functionName: selftest::test_type_mismatch_range_labels
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - diagnostic_show_locus
    - pp_formatted_text
    - linemap_position_for_column
    - linemap_add
    - temp_source_file::get_filename
    - c_dialect_cxx
    - ASSERT_STREQ
    - make_location
    - LOCATION_COLUMN
    - gcc_rich_location::add_range
    - ASSERT_EQ
    linkageType: ''
    returnType: void
    signature: void test_type_mismatch_range_labels ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: selftest::test_get_modifier_for_format_len
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4055,1
    - Dst: selftest::test_get_format_for_type_printf
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4056,1
    - Dst: selftest::test_get_format_for_type_scanf
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4057,1
    - Dst: selftest::test_type_mismatch_range_labels
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4059
      start: 4052
    functionDepth: 4
    functionLinenumber: 4052
    functionLinenumberEnd: 4059
    functionName: selftest::c_format_c_tests
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - selftest::test_get_format_for_type_scanf
    - selftest::test_get_format_for_type_printf
    - selftest::test_get_modifier_for_format_len
    - selftest::test_type_mismatch_range_labels
    linkageType: ''
    returnType: void
    signature: void c_format_c_tests ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: register_attribute
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event_data
    - data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4083
      start: 4078
    functionDepth: 0
    functionLinenumber: 4078
    functionLinenumberEnd: 4083
    functionName: register_attributes
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - register_attribute
    linkageType: ''
    returnType: void
    signature: void register_attributes (void *event_data, void *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4088,1
    - Dst: call_expr_nargs
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4093,1
    - Dst: CALL_EXPR_FN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4094,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4096,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4099,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4100,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4104,1
    - Dst: G_
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4104,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4105,1
    - Dst: DECL_NAME
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4105,1
    - Dst: alloca
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4109,1
    - Dst: CALL_EXPR_ARG
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4113,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4117,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4118,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4118,1
    - Dst: TREE_OPERAND
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4119,1
    - Dst: check_function_format
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4124,1
    - Dst: TYPE_ATTRIBUTES
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4124,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4124,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - tp
    - walk_subtrees
    - ATTRIBUTE_UNUSED
    argTypes:
    - tree*
    - int*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4126
      start: 4085
    functionDepth: 4
    functionLinenumber: 4085
    functionLinenumberEnd: 4126
    functionName: cb_walk_tree_fn
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - warning
    - TREE_TYPE
    - CALL_EXPR_ARG
    - call_expr_nargs
    - TREE_CODE
    - alloca
    - check_function_format
    - CALL_EXPR_FN
    - IDENTIFIER_POINTER
    - TREE_OPERAND
    - TYPE_ATTRIBUTES
    - DECL_NAME
    - G_
    linkageType: ''
    returnType: tree
    signature: tree cb_walk_tree_fn (tree * tp, int * walk_subtrees, void * data ATTRIBUTE_UNUSED)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: maybe_get_identifier
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4136,1
    - Dst: identifier_global_value
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4140,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4141,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4143,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4147,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - name
    - dst
    argTypes:
    - char*
    - tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4151
      start: 4128
    functionDepth: 0
    functionLinenumber: 4128
    functionLinenumberEnd: 4151
    functionName: setup_type
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - warning
    - identifier_global_value
    - maybe_get_identifier
    - TREE_CODE
    linkageType: ''
    returnType: void
    signature: void setup_type (const char *name, tree *dst)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4157,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4157,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4159,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4160,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4162,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4163,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4164,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4165,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4166,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4168,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4169,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4170,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4171,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4173,1
    - Dst: setup_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4174,1
    - Dst: maybe_get_identifier
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4193,1
    - Dst: identifier_global_tag
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4200,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4208,1
    - Dst: identifier_global_value
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4216,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4220,1
    - Dst: warning
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4224,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4229,1
    - Dst: c_common_unsigned_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4232,1
    - Dst: c_common_signed_type
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4234,1
    - Dst: walk_tree
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4241,1
    - Dst: DECL_SAVED_TREE
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4241,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 56
    argCount: 2
    argNames:
    - event_data
    - data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4242
      start: 4153
    functionDepth: 1
    functionLinenumber: 4153
    functionLinenumberEnd: 4242
    functionName: handle_finish_parse
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - warning
    - TREE_TYPE
    - TREE_CODE
    - maybe_get_identifier
    - identifier_global_tag
    - identifier_global_value
    - walk_tree
    - c_common_unsigned_type
    - gcc_assert
    - c_common_signed_type
    - setup_type
    - DECL_SAVED_TREE
    linkageType: ''
    returnType: void
    signature: void handle_finish_parse (void *event_data, void *data)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4251,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4254,1
    - Dst: TREE_STRING_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4258,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4262,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4273,1
    - Dst: strchr
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4280,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4283,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4284,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4295,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4302,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4308,1
    - Dst: memmove
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4310,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4314,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4316,1
    - Dst: strncmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4324,1
    - Dst: MIN
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4324,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4324,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4324,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4326,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4328,1
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4334,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4336,1
    - Dst: xstrdup
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4337,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4341,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4344,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4348,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4353,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4353,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4355,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4355,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4357,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4357,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4362,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4366,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4366,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4369,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4371,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4371,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4374,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4376,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4376,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4379,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4385,1
    - Dst: xstrdup
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4389,1
    - Dst: IDENTIFIER_POINTER
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4389,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4391,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4395,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4403,1
    - Dst: error_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4407,1
    - Dst: pragma_lex
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4412,1
    - Dst: warning_at
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4414,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4420,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 117
    argCount: 1
    argNames:
    - dummy
    argTypes:
    - cpp_reader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4421
      start: 4244
    functionDepth: 0
    functionLinenumber: 4244
    functionLinenumberEnd: 4421
    functionName: handle_pragma_printfrr_ext
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - MIN
    - warning_at
    - strlen
    - memset
    - error_at
    - strcmp
    - xstrdup
    - memmove
    - TREE_STRING_POINTER
    - pragma_lex
    - strchr
    - strncmp
    - IDENTIFIER_POINTER
    - gcc_assert
    linkageType: ''
    returnType: void
    signature: void handle_pragma_printfrr_ext (cpp_reader *dummy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_register_pragma_with_expansion
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - event_data
    - data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4427
      start: 4423
    functionDepth: 0
    functionLinenumber: 4423
    functionLinenumberEnd: 4427
    functionName: register_pragma_printfrr_ext
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - c_register_pragma_with_expansion
    linkageType: ''
    returnType: void
    signature: void register_pragma_printfrr_ext (void *event_data, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpp_define
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - gcc_data
    - user_data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4433
      start: 4429
    functionDepth: 0
    functionLinenumber: 4429
    functionLinenumberEnd: 4433
    functionName: define_vars
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 0
    functionsReached:
    - cpp_define
    linkageType: ''
    returnType: void
    signature: void define_vars (void *gcc_data, void *user_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: plugin_default_version_check
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4447,1
    - Dst: error
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4449,1
    - Dst: G_
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4449,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4453,1
    - Dst: memset
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4454,1
    - Dst: register_callback
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4456,1
    - Dst: register_callback
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4457,1
    - Dst: register_callback
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4458,1
    - Dst: register_callback
      Src: /src/frr/tools/gcc-plugins/frr-format.c:4459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - plugin_info
    - version
    argTypes:
    - struct plugin_name_args*
    - struct plugin_gcc_version*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4461
      start: 4441
    functionDepth: 0
    functionLinenumber: 4441
    functionLinenumberEnd: 4461
    functionName: plugin_init
    functionSourceFile: /src/frr/tools/gcc-plugins/frr-format.c
    functionUses: 1
    functionsReached:
    - register_callback
    - memset
    - plugin_default_version_check
    - error
    - G_
    linkageType: ''
    returnType: __visible
    signature: "__visible plugin_init (struct plugin_name_args *plugin_info,\n             struct
      plugin_gcc_version *version)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    functionName: DECL_NAME_POINTER
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECL_NAME_POINTER(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: DECL_NAME_LENGTH
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECL_NAME_LENGTH(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: TYPE_NAME_POINTER
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE_NAME_POINTER(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: TYPE_NAME_LENGTH
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE_NAME_LENGTH(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: C_TYPE_FIELDS_READONLY
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: C_TYPE_FIELDS_READONLY(TYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: build_string
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:179,1
    - Dst: build_type_variant
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:180,1
    - Dst: build_index_type
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:181,1
    - Dst: size_int
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:181,1
    - Dst: build_array_type
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:182,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:183,1
    - Dst: TREE_CONSTANT
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:184,1
    - Dst: TREE_READONLY
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:185,1
    - Dst: TREE_STATIC
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - len
    - str
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: build_const_char_string
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - TREE_CONSTANT
    - build_index_type
    - TREE_TYPE
    - build_string
    - TREE_STATIC
    - TREE_READONLY
    - build_array_type
    - build_type_variant
    - size_int
    linkageType: ''
    returnType: tree
    signature: tree build_const_char_string(int len, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NAME
    - ','
    - REF
    - ','
    - ID
    - ','
    - POS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 197
    functionName: PASS_INFO
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PASS_INFO(NAME, REF, ID, POS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - FUN
    - ','
    - I
    - ','
    - D
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: FOR_EACH_LOCAL_DECL
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_LOCAL_DECL(FUN, I, D)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NODE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: DECL_CHAIN
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECL_CHAIN(NODE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - T
    - ','
    - V
    - ','
    - I
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 206
    functionName: FOR_EACH_VEC_ELT
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_VEC_ELT(T, V, I, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - EXP
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: SCOPE_FILE_SCOPE_P
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SCOPE_FILE_SCOPE_P(EXP)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_gimple_call
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:219,1
    - Dst: gimple_call_fndecl
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:221,1
    - Dst: DECL_BUILT_IN_CLASS
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:222,1
    - Dst: DECL_FUNCTION_CODE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - stmt
    - code
    argTypes:
    - gimple
    - enum built_in_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 225
    functionName: gimple_call_builtin_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - gimple_call_fndecl
    - DECL_BUILT_IN_CLASS
    - is_gimple_call
    - DECL_FUNCTION_CODE
    linkageType: ''
    returnType: bool
    signature: bool gimple_call_builtin_p(gimple stmt, enum built_in_function code)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: DECL_BUILT_IN_CLASS
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:229,1
    - Dst: DECL_FUNCTION_CODE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - decl
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 257
    functionName: is_simple_builtin
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - DECL_BUILT_IN_CLASS
    - DECL_FUNCTION_CODE
    linkageType: ''
    returnType: bool
    signature: bool is_simple_builtin(tree decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:261,1
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:261,1
    - Dst: tree_cons
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fun
    - d
    argTypes:
    - struct function*
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 263
    functionName: add_local_decl
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - gcc_assert
    - tree_cons
    - TREE_CODE
    linkageType: ''
    returnType: void
    signature: void add_local_decl(struct function *fun, tree d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rtx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: ANY_RETURN_P
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ANY_RETURN_P(rtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - EXP
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 269
    functionName: C_DECL_REGISTER
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: C_DECL_REGISTER(EXP)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - noinit
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 277
    functionName: get_random_seed
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: get_random_seed(noinit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - code
    - ','
    - arg1
    - ','
    - arg2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 280
    functionName: int_const_binop
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: int_const_binop(code, arg1, arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - __unused
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: gimple_clobber_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool gimple_clobber_p(gimple s __unused)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gimple_asm_nclobbers
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:290,1
    - Dst: gimple_asm_clobber_op
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:291,1
    - Dst: strcmp
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:293,1
    - Dst: TREE_STRING_POINTER
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:293,1
    - Dst: TREE_VALUE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 298
    functionName: gimple_asm_clobbers_memory_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - strcmp
    - TREE_STRING_POINTER
    - gimple_asm_clobber_op
    - TREE_VALUE
    - gimple_asm_nclobbers
    linkageType: ''
    returnType: bool
    signature: bool gimple_asm_clobbers_memory_p(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fncode
    argTypes:
    - enum built_in_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: builtin_decl_implicit
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: tree
    signature: tree builtin_decl_implicit(enum built_in_function fncode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_postorder
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - order
    argTypes:
    - struct cgraph_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 308
    functionName: ipa_reverse_postorder
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_postorder
    linkageType: ''
    returnType: int
    signature: int ipa_reverse_postorder(struct cgraph_node **order)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_node
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decl
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 313
    functionName: cgraph_create_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_node
    linkageType: ''
    returnType: struct cgraph_node
    signature: struct cgraph_node *cgraph_create_node(tree decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_get_node
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:317,1
    - Dst: cgraph_node
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decl
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 320
    functionName: cgraph_get_create_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_node
    - cgraph_get_node
    linkageType: ''
    returnType: struct cgraph_node
    signature: struct cgraph_node *cgraph_get_create_node(tree decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct cgraph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 325
    functionName: cgraph_function_with_gimple_body_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool cgraph_function_with_gimple_body_p(struct cgraph_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_function_with_gimple_body_p
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 335
    functionName: cgraph_first_function_with_gimple_body
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_function_with_gimple_body_p
    linkageType: ''
    returnType: struct cgraph_node
    signature: struct cgraph_node *cgraph_first_function_with_gimple_body(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_function_with_gimple_body_p
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:340,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct cgraph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 343
    functionName: cgraph_next_function_with_gimple_body
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_function_with_gimple_body_p
    linkageType: ''
    returnType: struct cgraph_node
    signature: struct cgraph_node *cgraph_next_function_with_gimple_body(struct cgraph_node
      *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:349,1
    - Dst: cgraph_function_body_availability
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:353,1
    - Dst: cgraph_for_node_and_aliases
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:354,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - node
    - data
    - include_overwritable
    argTypes:
    - cgraph_node_ptr
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 359
    functionName: cgraph_for_node_and_aliases
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - cgraph_for_node_and_aliases
    - cgraph_function_body_availability
    - callback
    linkageType: ''
    returnType: bool
    signature: bool cgraph_for_node_and_aliases(cgraph_node_ptr node, bool (*callback)(cgraph_node_ptr,
      void *), void *data, bool include_overwritable)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 364
    functionName: FOR_EACH_FUNCTION_WITH_GIMPLE_BODY
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: varpool_finalize_decl
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decl
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: varpool_add_new_variable
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - varpool_finalize_decl
    linkageType: ''
    returnType: void
    signature: void varpool_add_new_variable(tree decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 374
    functionName: FOR_EACH_FUNCTION
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_FUNCTION(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 376
    functionName: FOR_EACH_VARIABLE
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_VARIABLE(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 378
    functionName: NODE_SYMBOL
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_SYMBOL(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 379
    functionName: NODE_DECL
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_DECL(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - INSN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 380
    functionName: INSN_LOCATION
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSN_LOCATION(INSN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: loop_depth
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bb
    argTypes:
    - const_basic_block
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 385
    functionName: bb_loop_depth
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - loop_depth
    linkageType: ''
    returnType: int
    signature: int bb_loop_depth(const_basic_block bb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gimple_get_lhs
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:389,1
    - Dst: is_gimple_reg
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - gs
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 392
    functionName: gimple_store_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - gimple_get_lhs
    - is_gimple_reg
    linkageType: ''
    returnType: bool
    signature: bool gimple_store_p(gimple gs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - __unused
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 396
    functionName: gimple_init_singleton
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gimple_init_singleton(gimple g __unused)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_alias_aliased_node
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct cgraph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 403
    functionName: cgraph_alias_target
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_alias_aliased_node
    linkageType: ''
    returnType: struct cgraph_node
    signature: struct cgraph_node *cgraph_alias_target(struct cgraph_node *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 408
    functionName: ENTRY_BLOCK_PTR_FOR_FN
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENTRY_BLOCK_PTR_FOR_FN(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 409
    functionName: EXIT_BLOCK_PTR_FOR_FN
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXIT_BLOCK_PTR_FOR_FN(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 410
    functionName: basic_block_info_for_fn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: basic_block_info_for_fn(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 411
    functionName: n_basic_blocks_for_fn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: n_basic_blocks_for_fn(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 412
    functionName: n_edges_for_fn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: n_edges_for_fn(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 413
    functionName: last_basic_block_for_fn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: last_basic_block_for_fn(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 414
    functionName: label_to_block_map_for_fn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: label_to_block_map_for_fn(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 415
    functionName: profile_status_for_fn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: profile_status_for_fn(FN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - FN
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 416
    functionName: BASIC_BLOCK_FOR_FN
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BASIC_BLOCK_FOR_FN(FN, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 417
    functionName: NODE_IMPLICIT_ALIAS
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_IMPLICIT_ALIAS(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NODE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 418
    functionName: VAR_P
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VAR_P(NODE)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:421,1
    - Dst: TREE_INT_CST_HIGH
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:424,1
    - Dst: TREE_INT_CST_LOW
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:424,1
    - Dst: TREE_INT_CST_HIGH
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:427,1
    - Dst: TREE_INT_CST_LOW
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:427,1
    - Dst: TYPE_UNSIGNED
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:427,1
    - Dst: TREE_TYPE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:427,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - const_tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 431
    functionName: tree_fits_shwi_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - TREE_INT_CST_HIGH
    - TREE_TYPE
    - TREE_CODE
    - TREE_INT_CST_LOW
    - TYPE_UNSIGNED
    linkageType: ''
    returnType: bool
    signature: bool tree_fits_shwi_p(const_tree t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TREE_CODE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:435,1
    - Dst: TREE_INT_CST_HIGH
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:438,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - const_tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 439
    functionName: tree_fits_uhwi_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - TREE_INT_CST_HIGH
    - TREE_CODE
    linkageType: ''
    returnType: bool
    signature: bool tree_fits_uhwi_p(const_tree t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:443,1
    - Dst: tree_fits_shwi_p
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:443,1
    - Dst: TREE_INT_CST_LOW
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - const_tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 445
    functionName: tree_to_shwi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - gcc_assert
    - tree_fits_shwi_p
    - TREE_INT_CST_LOW
    linkageType: ''
    returnType: HOST_WIDE_INT
    signature: HOST_WIDE_INT tree_to_shwi(const_tree t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:449,1
    - Dst: tree_fits_uhwi_p
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:449,1
    - Dst: TREE_INT_CST_LOW
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - const_tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 451
    functionName: tree_to_uhwi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - gcc_assert
    - tree_fits_uhwi_p
    - TREE_INT_CST_LOW
    linkageType: ''
    returnType: unsigned HOST_WIDE_INT
    signature: unsigned HOST_WIDE_INT tree_to_uhwi(const_tree t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gcc_assert
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - code
    argTypes:
    - enum tree_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 457
    functionName: get_tree_code_name
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - gcc_assert
    linkageType: ''
    returnType: char
    signature: char *get_tree_code_name(enum tree_code code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 473
    functionName: as_a_gasm
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gasm
    signature: gasm *as_a_gasm(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 478
    functionName: as_a_const_gasm
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gasm
    signature: gasm *as_a_const_gasm(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 483
    functionName: as_a_gassign
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gassign
    signature: gassign *as_a_gassign(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: as_a_const_gassign
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gassign
    signature: gassign *as_a_const_gassign(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 493
    functionName: as_a_gcall
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gcall
    signature: gcall *as_a_gcall(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: as_a_const_gcall
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gcall
    signature: gcall *as_a_const_gcall(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 503
    functionName: as_a_gcond
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gcond
    signature: gcond *as_a_gcond(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 508
    functionName: as_a_const_gcond
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gcond
    signature: gcond *as_a_const_gcond(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 513
    functionName: as_a_gdebug
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gdebug
    signature: gdebug *as_a_gdebug(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 518
    functionName: as_a_const_gdebug
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gdebug
    signature: gdebug *as_a_const_gdebug(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 523
    functionName: as_a_ggoto
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ggoto
    signature: ggoto *as_a_ggoto(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 528
    functionName: as_a_const_ggoto
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ggoto
    signature: ggoto *as_a_const_ggoto(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 533
    functionName: as_a_gphi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gphi
    signature: gphi *as_a_gphi(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: as_a_const_gphi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gphi
    signature: gphi *as_a_const_gphi(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 543
    functionName: as_a_greturn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: greturn
    signature: greturn *as_a_greturn(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: as_a_const_greturn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: greturn
    signature: greturn *as_a_const_greturn(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 553
    functionName: NODE_SYMBOL
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_SYMBOL(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 554
    functionName: NODE_DECL
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_DECL(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - loc
    - ','
    - gmsgid
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 571
    functionName: fatal_error
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fatal_error(loc, gmsgid, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DECL_SECTION_NAME
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:578,1
    - Dst: TREE_STRING_POINTER
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:581,1
    - Dst: DECL_SECTION_NAME
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - decl
    argTypes:
    - const_tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 582
    functionName: get_decl_section_name
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - TREE_STRING_POINTER
    - DECL_SECTION_NAME
    linkageType: ''
    returnType: char
    signature: char *get_decl_section_name(const_tree decl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DECL_SECTION_NAME
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:587,1
    - Dst: build_string
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:587,1
    - Dst: strlen
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:587,1
    - Dst: DECL_SECTION_NAME
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - value
    argTypes:
    - tree
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 590
    functionName: set_decl_section_name
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - DECL_SECTION_NAME
    - strlen
    - build_string
    linkageType: ''
    returnType: void
    signature: void set_decl_section_name(tree node, const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<gasm>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 606
    functionName: as_a_gasm
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<gasm>
    linkageType: ''
    returnType: gasm
    signature: gasm *as_a_gasm(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const gasm>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 611
    functionName: as_a_const_gasm
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const gasm>
    linkageType: ''
    returnType: gasm
    signature: gasm *as_a_const_gasm(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 616
    functionName: as_a_gassign
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gassign
    signature: gassign *as_a_gassign(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 621
    functionName: as_a_const_gassign
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gassign
    signature: gassign *as_a_const_gassign(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<gcall>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 626
    functionName: as_a_gcall
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<gcall>
    linkageType: ''
    returnType: gcall
    signature: gcall *as_a_gcall(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const gcall>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 631
    functionName: as_a_const_gcall
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const gcall>
    linkageType: ''
    returnType: gcall
    signature: gcall *as_a_const_gcall(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 636
    functionName: as_a_gcond
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gcond
    signature: gcond *as_a_gcond(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 641
    functionName: as_a_const_gcond
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gcond
    signature: gcond *as_a_const_gcond(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 646
    functionName: as_a_gdebug
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gdebug
    signature: gdebug *as_a_gdebug(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 651
    functionName: as_a_const_gdebug
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gdebug
    signature: gdebug *as_a_const_gdebug(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 653
    functionDepth: 0
    functionLinenumber: 653
    functionLinenumberEnd: 656
    functionName: as_a_ggoto
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ggoto
    signature: ggoto *as_a_ggoto(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 661
    functionName: as_a_const_ggoto
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ggoto
    signature: ggoto *as_a_const_ggoto(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<gphi>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 666
    functionName: as_a_gphi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<gphi>
    linkageType: ''
    returnType: gphi
    signature: gphi *as_a_gphi(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const gphi>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 671
    functionName: as_a_const_gphi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const gphi>
    linkageType: ''
    returnType: gphi
    signature: gphi *as_a_const_gphi(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 676
    functionName: as_a_greturn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: greturn
    signature: greturn *as_a_greturn(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 681
    functionName: as_a_const_greturn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: greturn
    signature: greturn *as_a_const_greturn(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 687
    functionName: NODE_SYMBOL
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_SYMBOL(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 688
    functionName: NODE_DECL
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_DECL(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 689
    functionName: cgraph_node_name
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cgraph_node_name(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 690
    functionName: NODE_IMPLICIT_ALIAS
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NODE_IMPLICIT_ALIAS(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_passes
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 694
    functionName: get_pass_for_id
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - get_passes
    linkageType: ''
    returnType: opt_pass
    signature: opt_pass *get_pass_for_id(int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gs
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 704
    functionName: is_a_helper<const gassign *>::test
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_a_helper<const gassign *>::test(const_gimple gs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - insn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 714
    functionName: INSN_DELETED_P
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSN_DELETED_P(insn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DECL_SECTION_NAME
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decl
    argTypes:
    - const_tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 718
    functionName: get_decl_section_name
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - DECL_SECTION_NAME
    linkageType: ''
    returnType: char
    signature: char *get_decl_section_name(const_tree decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 722
    functionName: debug_cgraph_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_cgraph_node(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decl
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 723
    functionName: cgraph_get_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cgraph_get_node(decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decl
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 723
    functionDepth: 0
    functionLinenumber: 723
    functionLinenumberEnd: 724
    functionName: cgraph_get_create_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cgraph_get_create_node(decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decl
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 725
    functionName: cgraph_create_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cgraph_create_node(decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - decl
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 727
    functionDepth: 0
    functionLinenumber: 727
    functionLinenumberEnd: 728
    functionName: varpool_get_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: varpool_get_node(decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - file
    - ','
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 729
    functionName: dump_varpool_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dump_varpool_node(file, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - caller
    - ','
    - callee
    - ','
    - call_stmt
    - ','
    - count
    - ','
    - freq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 731
    functionDepth: 0
    functionLinenumber: 731
    functionLinenumberEnd: 733
    functionName: cgraph_create_edge
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cgraph_create_edge(caller, callee, call_stmt, count, freq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - caller
    - ','
    - callee
    - ','
    - old_call_stmt
    - ','
    - call_stmt
    - ','
    - count
    - ','
    - freq
    - ','
    - reason
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 738
    functionName: cgraph_create_edge_including_clones
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "cgraph_create_edge_including_clones(caller, callee,\t\\\n\t\told_call_stmt,
      call_stmt, count, freq, reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - caller
    - ','
    - callee
    - ','
    - call_stmt
    - ','
    - count
    - ','
    - freq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 741
    functionName: cgraph_create_edge
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: cgraph_create_edge(caller, callee, call_stmt, count, freq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - caller
    - ','
    - callee
    - ','
    - old_call_stmt
    - ','
    - call_stmt
    - ','
    - count
    - ','
    - freq
    - ','
    - reason
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 746
    functionName: cgraph_create_edge_including_clones
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "cgraph_create_edge_including_clones(caller, callee,\t\\\n\t\told_call_stmt,
      call_stmt, count, freq, reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: change_decl_assembler_name
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - decl
    - name
    argTypes:
    - tree
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 755
    functionName: change_decl_assembler_name
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - change_decl_assembler_name
    linkageType: ''
    returnType: void
    signature: void change_decl_assembler_name(tree decl, tree name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: varpool_finalize_decl
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decl
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 760
    functionName: varpool_finalize_decl
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 2
    functionsReached:
    - varpool_finalize_decl
    linkageType: ''
    returnType: void
    signature: void varpool_finalize_decl(tree decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhrp_vc_notify_add
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decl
    argTypes:
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 765
    functionName: varpool_add_new_variable
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - nhrp_vc_notify_add
    linkageType: ''
    returnType: void
    signature: void varpool_add_new_variable(tree decl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_edge::rebuild_edges
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: rebuild_cgraph_edges
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_edge::rebuild_edges
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int rebuild_cgraph_edges(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_node_ptr::function_symbol
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - availability
    argTypes:
    - cgraph_node_ptr
    - enum availability*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 775
    functionName: cgraph_function_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_node_ptr::function_symbol
    linkageType: ''
    returnType: cgraph_node_ptr
    signature: cgraph_node_ptr cgraph_function_node(cgraph_node_ptr node, enum availability
      *availability)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_node_ptr::ultimate_alias_target
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - cgraph_node_ptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 780
    functionName: cgraph_function_or_thunk_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_node_ptr::ultimate_alias_target
    linkageType: ''
    returnType: cgraph_node_ptr
    signature: cgraph_node_ptr cgraph_function_or_thunk_node(cgraph_node_ptr node,
      enum availability *availability = NULL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_node_ptr::only_called_directly_p
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - cgraph_node_ptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 782
    functionDepth: 0
    functionLinenumber: 782
    functionLinenumberEnd: 785
    functionName: cgraph_only_called_directly_p
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_node_ptr::only_called_directly_p
    linkageType: ''
    returnType: bool
    signature: bool cgraph_only_called_directly_p(cgraph_node_ptr node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_node_ptr::get_availability
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - cgraph_node_ptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 790
    functionName: cgraph_function_body_availability
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - cgraph_node_ptr::get_availability
    linkageType: ''
    returnType: enum availability
    signature: enum availability cgraph_function_body_availability(cgraph_node_ptr
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_node_ptr::get_alias_target
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - cgraph_node_ptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: cgraph_alias_target
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - cgraph_node_ptr::get_alias_target
    linkageType: ''
    returnType: cgraph_node_ptr
    signature: cgraph_node_ptr cgraph_alias_target(cgraph_node_ptr node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cgraph_node_ptr::call_for_symbol_thunks_and_aliases
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - node
    - data
    - include_overwritable
    argTypes:
    - cgraph_node_ptr
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 797
    functionDepth: 0
    functionLinenumber: 797
    functionLinenumberEnd: 800
    functionName: cgraph_for_node_and_aliases
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - cgraph_node_ptr::call_for_symbol_thunks_and_aliases
    linkageType: ''
    returnType: bool
    signature: bool cgraph_for_node_and_aliases(cgraph_node_ptr node, bool (*callback)(cgraph_node_ptr,
      void *), void *data, bool include_overwritable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_cgraph_insertion_hook
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hook
    - data
    argTypes:
    - cgraph_node_hook
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 802
    functionDepth: 0
    functionLinenumber: 802
    functionLinenumberEnd: 805
    functionName: cgraph_add_function_insertion_hook
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - add_cgraph_insertion_hook
    linkageType: ''
    returnType: struct cgraph_node_hook_list
    signature: struct cgraph_node_hook_list *cgraph_add_function_insertion_hook(cgraph_node_hook
      hook, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove_cgraph_insertion_hook
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct cgraph_node_hook_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 810
    functionName: cgraph_remove_function_insertion_hook
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - remove_cgraph_insertion_hook
    linkageType: ''
    returnType: void
    signature: void cgraph_remove_function_insertion_hook(struct cgraph_node_hook_list
      *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_cgraph_removal_hook
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hook
    - data
    argTypes:
    - cgraph_node_hook
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 815
    functionName: cgraph_add_node_removal_hook
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - add_cgraph_removal_hook
    linkageType: ''
    returnType: struct cgraph_node_hook_list
    signature: struct cgraph_node_hook_list *cgraph_add_node_removal_hook(cgraph_node_hook
      hook, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove_cgraph_removal_hook
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct cgraph_node_hook_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 820
    functionName: cgraph_remove_node_removal_hook
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - remove_cgraph_removal_hook
    linkageType: ''
    returnType: void
    signature: void cgraph_remove_node_removal_hook(struct cgraph_node_hook_list *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_cgraph_duplication_hook
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hook
    - data
    argTypes:
    - cgraph_2node_hook
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 822
    functionDepth: 0
    functionLinenumber: 822
    functionLinenumberEnd: 825
    functionName: cgraph_add_node_duplication_hook
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - add_cgraph_duplication_hook
    linkageType: ''
    returnType: struct cgraph_2node_hook_list
    signature: struct cgraph_2node_hook_list *cgraph_add_node_duplication_hook(cgraph_2node_hook
      hook, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove_cgraph_duplication_hook
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct cgraph_2node_hook_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 830
    functionName: cgraph_remove_node_duplication_hook
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - remove_cgraph_duplication_hook
    linkageType: ''
    returnType: void
    signature: void cgraph_remove_node_duplication_hook(struct cgraph_2node_hook_list
      *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: call_cgraph_duplication_hooks
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - node2
    argTypes:
    - cgraph_node_ptr
    - cgraph_node_ptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 835
    functionName: cgraph_call_node_duplication_hooks
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - call_cgraph_duplication_hooks
    linkageType: ''
    returnType: void
    signature: void cgraph_call_node_duplication_hooks(cgraph_node_ptr node, cgraph_node_ptr
      node2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: call_edge_duplication_hooks
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cs1
    - cs2
    argTypes:
    - cgraph_edge*
    - cgraph_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 840
    functionName: cgraph_call_edge_duplication_hooks
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - call_edge_duplication_hooks
    linkageType: ''
    returnType: void
    signature: void cgraph_call_edge_duplication_hooks(cgraph_edge *cs1, cgraph_edge
      *cs2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 848
    functionDepth: 0
    functionLinenumber: 848
    functionLinenumberEnd: 849
    functionName: CONST_CAST_GIMPLE
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONST_CAST_GIMPLE(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gimple_build_assign
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - subcode
    - lhs
    - op1
    - MEM_STAT_DECL
    argTypes:
    - enum tree_code
    - tree
    - tree
    - tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 855
    functionName: gimple_build_assign_with_ops
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - gimple_build_assign
    linkageType: ''
    returnType: gimple
    signature: gimple gimple_build_assign_with_ops(enum tree_code subcode, tree lhs,
      tree op1, tree op2 MEM_STAT_DECL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gs
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 863
    functionName: is_a_helper<const ggoto *>::test
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_a_helper<const ggoto *>::test(const_gimple gs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gs
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 870
    functionName: is_a_helper<const greturn *>::test
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_a_helper<const greturn *>::test(const_gimple gs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<gasm *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 876
    functionName: as_a_gasm
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<gasm *>
    linkageType: ''
    returnType: gasm
    signature: gasm *as_a_gasm(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const gasm *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 881
    functionName: as_a_const_gasm
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const gasm *>
    linkageType: ''
    returnType: gasm
    signature: gasm *as_a_const_gasm(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<gassign *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 883
    functionDepth: 0
    functionLinenumber: 883
    functionLinenumberEnd: 886
    functionName: as_a_gassign
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<gassign *>
    linkageType: ''
    returnType: gassign
    signature: gassign *as_a_gassign(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const gassign *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 891
    functionName: as_a_const_gassign
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const gassign *>
    linkageType: ''
    returnType: gassign
    signature: gassign *as_a_const_gassign(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<gcall *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 896
    functionName: as_a_gcall
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<gcall *>
    linkageType: ''
    returnType: gcall
    signature: gcall *as_a_gcall(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const gcall *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 901
    functionName: as_a_const_gcall
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const gcall *>
    linkageType: ''
    returnType: gcall
    signature: gcall *as_a_const_gcall(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<ggoto *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 903
    functionDepth: 0
    functionLinenumber: 903
    functionLinenumberEnd: 906
    functionName: as_a_ggoto
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<ggoto *>
    linkageType: ''
    returnType: ggoto
    signature: ggoto *as_a_ggoto(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const ggoto *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:910,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 911
    functionName: as_a_const_ggoto
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const ggoto *>
    linkageType: ''
    returnType: ggoto
    signature: ggoto *as_a_const_ggoto(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<gphi *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 916
    functionName: as_a_gphi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<gphi *>
    linkageType: ''
    returnType: gphi
    signature: gphi *as_a_gphi(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const gphi *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 921
    functionName: as_a_const_gphi
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const gphi *>
    linkageType: ''
    returnType: gphi
    signature: gphi *as_a_const_gphi(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<greturn *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 926
    functionName: as_a_greturn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<greturn *>
    linkageType: ''
    returnType: greturn
    signature: greturn *as_a_greturn(gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_a<const greturn *>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 931
    functionName: as_a_const_greturn
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - as_a<const greturn *>
    linkageType: ''
    returnType: greturn
    signature: greturn *as_a_const_greturn(const_gimple stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - L
    - ','
    - I
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 936
    functionName: ipa_ref_list_referring_iterate
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ipa_ref_list_referring_iterate(L, I, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - L
    - ','
    - I
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 938
    functionName: ipa_ref_list_reference_iterate
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ipa_ref_list_reference_iterate(L, I, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dyn_cast<cgraph_node_ptr>
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - struct ipa_ref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 942
    functionName: ipa_ref_referring_node
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - dyn_cast<cgraph_node_ptr>
    linkageType: ''
    returnType: cgraph_node_ptr
    signature: cgraph_node_ptr ipa_ref_referring_node(struct ipa_ref *ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: symtab_node*::remove_stmt_references
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - referring_node
    - stmt
    argTypes:
    - symtab_node*
    - gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 944
    functionDepth: 0
    functionLinenumber: 944
    functionLinenumberEnd: 947
    functionName: ipa_remove_stmt_references
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached:
    - symtab_node*::remove_stmt_references
    linkageType: ''
    returnType: void
    signature: void ipa_remove_stmt_references(symtab_node *referring_node, gimple
      stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - exp
    - ','
    - pbitsize
    - ','
    - pbitpos
    - ','
    - poffset
    - ','
    - pmode
    - ','
    - punsignedp
    - ','
    - preversep
    - ','
    - pvolatilep
    - ','
    - keep_aligning
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 953
    functionName: get_inner_reference
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: get_inner_reference(exp, pbitsize, pbitpos, poffset, pmode, punsignedp,
      preversep, pvolatilep, keep_aligning)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ARG0
    - ','
    - ARG1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 954
    functionName: gen_rtx_set
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gen_rtx_set(ARG0, ARG1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ARG0
    - ','
    - ARG1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 958
    functionName: gen_rtx_set
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gen_rtx_set(ARG0, ARG1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_tree
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:963,1
    - Dst: CONST_CAST_TREE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - const_tree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 964
    functionName: debug_tree
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - CONST_CAST_TREE
    - debug_tree
    linkageType: ''
    returnType: void
    signature: void debug_tree(const_tree t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_gimple_stmt
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:968,1
    - Dst: CONST_CAST_GIMPLE
      Src: /src/frr/tools/gcc-plugins/gcc-common.h:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - const_gimple
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 966
    functionDepth: 1
    functionLinenumber: 966
    functionLinenumberEnd: 969
    functionName: debug_gimple_stmt
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached:
    - CONST_CAST_GIMPLE
    - debug_gimple_stmt
    linkageType: ''
    returnType: void
    signature: void debug_gimple_stmt(const_gimple s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 972
    functionName: debug_tree
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_tree(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 973
    functionName: debug_gimple_stmt
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_gimple_stmt(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - exp
    - ','
    - pbitsize
    - ','
    - pbitpos
    - ','
    - poffset
    - ','
    - pmode
    - ','
    - punsignedp
    - ','
    - preversep
    - ','
    - pvolatilep
    - ','
    - keep_aligning
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 978
    functionName: get_inner_reference
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: get_inner_reference(exp, pbitsize, pbitpos, poffset, pmode, punsignedp,
      preversep, pvolatilep, keep_aligning)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - decl
    - ','
    - align
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 981
    functionDepth: 0
    functionLinenumber: 981
    functionLinenumberEnd: 982
    functionName: SET_DECL_ALIGN
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_DECL_ALIGN(decl, align)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - decl
    - ','
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 982
    functionDepth: 0
    functionLinenumber: 982
    functionLinenumberEnd: 983
    functionName: SET_DECL_MODE
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_DECL_MODE(decl, mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - arg
    - ','
    - ctx
    - ','
    - tree
    - ','
    - num
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 986
    functionDepth: 0
    functionLinenumber: 986
    functionLinenumberEnd: 988
    functionName: check_function_arguments_recurse
    functionSourceFile: /src/frr/tools/gcc-plugins/gcc-common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_function_arguments_recurse(arg, ctx, tree, num, opt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/ripd/rip_snmp.c:146,1
    - Dst: rip_lookup_by_vrf_id
      Src: /src/frr/ripd/rip_snmp.c:150,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ripd/rip_snmp.c:157,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ripd/rip_snmp.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 164
    functionName: rip2Globals
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    - rip_lookup_by_vrf_id
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *rip2Globals(struct variable *v, oid name[], size_t *length,\n\t\t\t
      \   int exact, size_t *var_len,\n\t\t\t    WriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/ripd/rip_snmp.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 180
    functionName: rip_snmp_ifaddr_add
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - route_node_get
    linkageType: ''
    returnType: int
    signature: int rip_snmp_ifaddr_add(struct connected *ifc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ripd/rip_snmp.c:194,1
    - Dst: strncmp
      Src: /src/frr/ripd/rip_snmp.c:198,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_snmp.c:200,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_snmp.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 204
    functionName: rip_snmp_ifaddr_del
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - strncmp
    - route_node_lookup
    linkageType: ''
    returnType: int
    signature: int rip_snmp_ifaddr_del(struct connected *ifc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/ripd/rip_snmp.c:216,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_snmp.c:218,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_snmp.c:218,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_snmp.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 229
    functionName: rip_ifaddr_lookup_next
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_get
    - route_next
    linkageType: ''
    returnType: struct interface
    signature: struct interface *rip_ifaddr_lookup_next(struct in_addr *addr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: oid2in_addr
      Src: /src/frr/ripd/rip_snmp.c:243,1
    - Dst: if_lookup_address_local
      Src: /src/frr/ripd/rip_snmp.c:245,1
    - Dst: oid2in_addr
      Src: /src/frr/ripd/rip_snmp.c:252,1
    - Dst: rip_ifaddr_lookup_next
      Src: /src/frr/ripd/rip_snmp.c:254,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ripd/rip_snmp.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - v
    - name
    - length
    - addr
    - exact
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 266
    functionName: rip2IfLookup
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - oid2in_addr
    - oid_copy_in_addr
    - rip_ifaddr_lookup_next
    - if_lookup_address_local
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *rip2IfLookup(struct variable *v, oid name[],\n\t\t\t\t
      \     size_t *length, struct in_addr *addr,\n\t\t\t\t      int exact)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: rip_lookup_by_vrf_id
      Src: /src/frr/ripd/rip_snmp.c:276,1
    - Dst: oid2in_addr
      Src: /src/frr/ripd/rip_snmp.c:285,1
    - Dst: rip_peer_lookup
      Src: /src/frr/ripd/rip_snmp.c:287,1
    - Dst: oid2in_addr
      Src: /src/frr/ripd/rip_snmp.c:299,1
    - Dst: rip_peer_lookup
      Src: /src/frr/ripd/rip_snmp.c:302,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ripd/rip_snmp.c:308,1
    - Dst: rip_peer_lookup_next
      Src: /src/frr/ripd/rip_snmp.c:317,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ripd/rip_snmp.c:322,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - v
    - name
    - length
    - addr
    - exact
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 329
    functionName: rip2PeerLookup
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - rip_peer_lookup_next
    - oid2in_addr
    - rip_peer_lookup
    - rip_lookup_by_vrf_id
    - oid_copy_in_addr
    linkageType: ''
    returnType: struct rip_peer
    signature: "struct rip_peer *rip2PeerLookup(struct variable *v, oid name[],\n\t\t\t\t
      \      size_t *length, struct in_addr *addr,\n\t\t\t\t       int exact)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ripd/rip_snmp.c:340,1
    - Dst: memset
      Src: /src/frr/ripd/rip_snmp.c:344,1
    - Dst: rip2IfLookup
      Src: /src/frr/ripd/rip_snmp.c:347,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ripd/rip_snmp.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 378
    functionName: rip2IfStatEntry
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - SNMP_IPADDRESS
    - smux_header_table
    - rip2IfLookup
    - memset
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *rip2IfStatEntry(struct variable *v, oid name[], size_t *length,\n\t\t\t\tint
      exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ri
    argTypes:
    - struct rip_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 403
    functionName: rip2IfConfSend
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long rip2IfConfSend(struct rip_interface *ri)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ri
    argTypes:
    - struct rip_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 427
    functionName: rip2IfConfReceive
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long rip2IfConfReceive(struct rip_interface *ri)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ripd/rip_snmp.c:441,1
    - Dst: memset
      Src: /src/frr/ripd/rip_snmp.c:445,1
    - Dst: rip2IfLookup
      Src: /src/frr/ripd/rip_snmp.c:448,1
    - Dst: rip2IfConfSend
      Src: /src/frr/ripd/rip_snmp.c:474,1
    - Dst: rip2IfConfReceive
      Src: /src/frr/ripd/rip_snmp.c:479,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 48
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - val_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 429
    functionDepth: 3
    functionLinenumber: 429
    functionLinenumberEnd: 500
    functionName: rip2IfConfAddress
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - rip2IfLookup
    - memset
    - rip2IfConfSend
    - rip2IfConfReceive
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *rip2IfConfAddress(struct variable *v, oid name[],\n\t\t\t\t
      \ size_t *length, int exact, size_t *val_len,\n\t\t\t\t  WriteMethod **write_method)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ripd/rip_snmp.c:513,1
    - Dst: memset
      Src: /src/frr/ripd/rip_snmp.c:517,1
    - Dst: rip2PeerLookup
      Src: /src/frr/ripd/rip_snmp.c:520,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - val_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 502
    functionDepth: 2
    functionLinenumber: 502
    functionLinenumberEnd: 553
    functionName: rip2PeerTable
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - rip2PeerLookup
    - memset
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *rip2PeerTable(struct variable *v, oid name[], size_t *length,\n\t\t\t
      \     int exact, size_t *val_len,\n\t\t\t      WriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init
      Src: /src/frr/ripd/rip_snmp.c:558,1
    - Dst: smux_init
      Src: /src/frr/ripd/rip_snmp.c:560,1
    - Dst: REGISTER_MIB
      Src: /src/frr/ripd/rip_snmp.c:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 563
    functionName: rip_snmp_init
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - route_table_init
    - smux_init
    - REGISTER_MIB
    linkageType: ''
    returnType: int
    signature: int rip_snmp_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/ripd/rip_snmp.c:567,1
    - Dst: hook_register
      Src: /src/frr/ripd/rip_snmp.c:568,1
    - Dst: hook_register
      Src: /src/frr/ripd/rip_snmp.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 572
    functionName: rip_snmp_module_init
    functionSourceFile: /src/frr/ripd/rip_snmp.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int rip_snmp_module_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 48
    functionName: route_match_metric
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/ripd/rip_routemap.c:55,1
    - Dst: atoi
      Src: /src/frr/ripd/rip_routemap.c:56,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 63
    functionName: route_match_metric_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - atoi
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_match_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: route_match_metric_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_metric_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/ripd/rip_routemap.c:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 101
    functionName: route_match_interface
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_interface(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_routemap.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: route_match_interface_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_interface_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: route_match_interface_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_interface_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/ripd/rip_routemap.c:141,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/rip_routemap.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 147
    functionName: route_match_ip_next_hop
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - access_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_next_hop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_routemap.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: route_match_ip_next_hop_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: route_match_ip_next_hop_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/ripd/rip_routemap.c:187,1
    - Dst: prefix_list_apply
      Src: /src/frr/ripd/rip_routemap.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 193
    functionName: route_match_ip_next_hop_prefix_list
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t    void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_routemap.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: route_match_ip_next_hop_prefix_list_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: route_match_ip_next_hop_prefix_list_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_prefix_list_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 230
    functionName: route_match_ip_next_hop_type
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_type(void *rule,
      const struct prefix *prefix,\n\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_routemap.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: route_match_ip_next_hop_type_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 240
    functionName: route_match_ip_next_hop_type_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_type_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/ripd/rip_routemap.c:259,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/rip_routemap.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 265
    functionName: route_match_ip_address
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - access_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_routemap.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: route_match_ip_address_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: route_match_ip_address_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/ripd/rip_routemap.c:296,1
    - Dst: prefix_list_apply
      Src: /src/frr/ripd/rip_routemap.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 302
    functionName: route_match_ip_address_prefix_list
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_routemap.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: route_match_ip_address_prefix_list_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: route_match_ip_address_prefix_list_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_prefix_list_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 340
    functionName: route_match_tag
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_tag(void *rule, const struct
      prefix *p, void *object)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 379
    functionName: route_set_metric
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/ripd/rip_routemap.c:390,1
    - Dst: strlen
      Src: /src/frr/ripd/rip_routemap.c:394,1
    - Dst: strtol
      Src: /src/frr/ripd/rip_routemap.c:415,1
    - Dst: zlog_info
      Src: /src/frr/ripd/rip_routemap.c:421,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 431
    functionName: route_set_metric_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - strlen
    - XMALLOC
    - zlog_info
    - strtol
    linkageType: ''
    returnType: void
    signature: void *route_set_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: route_set_metric_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_metric_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 466
    functionName: route_set_ip_nexthop
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_ip_nexthop(void *rule, const
      struct prefix *prefix,\n\n\t\t     void *object)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/ripd/rip_routemap.c:475,1
    - Dst: inet_aton
      Src: /src/frr/ripd/rip_routemap.c:477,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 485
    functionName: route_set_ip_nexthop_compile
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - XFREE
    - inet_aton
    linkageType: ''
    returnType: void
    signature: void *route_set_ip_nexthop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/rip_routemap.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 491
    functionName: route_set_ip_nexthop_free
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ip_nexthop_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 518
    functionName: route_set_tag
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_tag(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/ripd/rip_routemap.c:534,1
    - Dst: route_map_match_interface_hook
      Src: /src/frr/ripd/rip_routemap.c:536,1
    - Dst: route_map_no_match_interface_hook
      Src: /src/frr/ripd/rip_routemap.c:537,1
    - Dst: route_map_match_ip_address_hook
      Src: /src/frr/ripd/rip_routemap.c:539,1
    - Dst: route_map_no_match_ip_address_hook
      Src: /src/frr/ripd/rip_routemap.c:540,1
    - Dst: route_map_match_ip_address_prefix_list_hook
      Src: /src/frr/ripd/rip_routemap.c:542,1
    - Dst: route_map_no_match_ip_address_prefix_list_hook
      Src: /src/frr/ripd/rip_routemap.c:543,1
    - Dst: route_map_match_ip_next_hop_hook
      Src: /src/frr/ripd/rip_routemap.c:545,1
    - Dst: route_map_no_match_ip_next_hop_hook
      Src: /src/frr/ripd/rip_routemap.c:546,1
    - Dst: route_map_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/ripd/rip_routemap.c:548,1
    - Dst: route_map_no_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/ripd/rip_routemap.c:549,1
    - Dst: route_map_match_ip_next_hop_type_hook
      Src: /src/frr/ripd/rip_routemap.c:551,1
    - Dst: route_map_no_match_ip_next_hop_type_hook
      Src: /src/frr/ripd/rip_routemap.c:552,1
    - Dst: route_map_match_metric_hook
      Src: /src/frr/ripd/rip_routemap.c:554,1
    - Dst: route_map_no_match_metric_hook
      Src: /src/frr/ripd/rip_routemap.c:555,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/ripd/rip_routemap.c:557,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/ripd/rip_routemap.c:558,1
    - Dst: route_map_set_ip_nexthop_hook
      Src: /src/frr/ripd/rip_routemap.c:560,1
    - Dst: route_map_no_set_ip_nexthop_hook
      Src: /src/frr/ripd/rip_routemap.c:561,1
    - Dst: route_map_set_metric_hook
      Src: /src/frr/ripd/rip_routemap.c:563,1
    - Dst: route_map_no_set_metric_hook
      Src: /src/frr/ripd/rip_routemap.c:564,1
    - Dst: route_map_set_tag_hook
      Src: /src/frr/ripd/rip_routemap.c:566,1
    - Dst: route_map_no_set_tag_hook
      Src: /src/frr/ripd/rip_routemap.c:567,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:569,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:570,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:571,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:572,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:573,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:574,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:575,1
    - Dst: route_map_install_match
      Src: /src/frr/ripd/rip_routemap.c:576,1
    - Dst: route_map_install_set
      Src: /src/frr/ripd/rip_routemap.c:578,1
    - Dst: route_map_install_set
      Src: /src/frr/ripd/rip_routemap.c:579,1
    - Dst: route_map_install_set
      Src: /src/frr/ripd/rip_routemap.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 581
    functionName: rip_route_map_init
    functionSourceFile: /src/frr/ripd/rip_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_match_tag_hook
    - route_map_no_match_metric_hook
    - route_map_match_ip_next_hop_prefix_list_hook
    - route_map_set_metric_hook
    - route_map_match_interface_hook
    - route_map_install_set
    - route_map_init
    - route_map_no_match_ip_address_prefix_list_hook
    - route_map_match_ip_next_hop_hook
    - route_map_match_ip_address_hook
    - route_map_set_tag_hook
    - route_map_no_match_interface_hook
    - route_map_no_match_tag_hook
    - route_map_set_ip_nexthop_hook
    - route_map_no_match_ip_next_hop_prefix_list_hook
    - route_map_no_match_ip_next_hop_hook
    - route_map_no_set_ip_nexthop_hook
    - route_map_match_ip_next_hop_type_hook
    - route_map_no_set_tag_hook
    - route_map_match_metric_hook
    - route_map_install_match
    - route_map_no_set_metric_hook
    - route_map_no_match_ip_address_hook
    - route_map_match_ip_address_prefix_list_hook
    - route_map_no_match_ip_next_hop_type_hook
    linkageType: ''
    returnType: void
    signature: void rip_route_map_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/ripd/rip_nb_notifications.c:34,1
    - Dst: snprintf
      Src: /src/frr/ripd/rip_nb_notifications.c:36,1
    - Dst: yang_data_new_string
      Src: /src/frr/ripd/rip_nb_notifications.c:37,1
    - Dst: listnode_add
      Src: /src/frr/ripd/rip_nb_notifications.c:38,1
    - Dst: nb_notification_send
      Src: /src/frr/ripd/rip_nb_notifications.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 41
    functionName: ripd_notif_send_auth_type_failure
    functionSourceFile: /src/frr/ripd/rip_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nb_notification_send
    - listnode_add
    - yang_data_list_new
    - yang_data_new_string
    linkageType: ''
    returnType: void
    signature: void ripd_notif_send_auth_type_failure(const char *ifname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/ripd/rip_nb_notifications.c:53,1
    - Dst: snprintf
      Src: /src/frr/ripd/rip_nb_notifications.c:55,1
    - Dst: yang_data_new_string
      Src: /src/frr/ripd/rip_nb_notifications.c:56,1
    - Dst: listnode_add
      Src: /src/frr/ripd/rip_nb_notifications.c:57,1
    - Dst: nb_notification_send
      Src: /src/frr/ripd/rip_nb_notifications.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 60
    functionName: ripd_notif_send_auth_failure
    functionSourceFile: /src/frr/ripd/rip_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nb_notification_send
    - listnode_add
    - yang_data_list_new
    - yang_data_new_string
    linkageType: ''
    returnType: void
    signature: void ripd_notif_send_auth_failure(const char *ifname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 410
    functionName: RIP_TIMER_ON
    functionSourceFile: /src/frr/ripd/ripd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIP_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ripd/rip_main.c:61,1
    - Dst: vty_read_config
      Src: /src/frr/ripd/rip_main.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: sighup
    functionSourceFile: /src/frr/ripd/rip_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vty_read_config
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/ripd/rip_main.c:70,1
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/ripd/rip_main.c:72,1
    - Dst: rip_vrf_terminate
      Src: /src/frr/ripd/rip_main.c:73,1
    - Dst: if_rmap_terminate
      Src: /src/frr/ripd/rip_main.c:74,1
    - Dst: rip_zclient_stop
      Src: /src/frr/ripd/rip_main.c:75,1
    - Dst: frr_fini
      Src: /src/frr/ripd/rip_main.c:76,1
    - Dst: exit
      Src: /src/frr/ripd/rip_main.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 79
    functionName: sigint
    functionSourceFile: /src/frr/ripd/rip_main.c
    functionUses: 0
    functionsReached:
    - exit
    - rip_vrf_terminate
    - if_rmap_terminate
    - rip_zclient_stop
    - frr_fini
    - bfd_protocol_integration_set_shutdown
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/ripd/rip_main.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: sigusr1
    functionSourceFile: /src/frr/ripd/rip_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/ripd/rip_main.c:129,1
    - Dst: frr_opt_add
      Src: /src/frr/ripd/rip_main.c:131,1
    - Dst: frr_getopt
      Src: /src/frr/ripd/rip_main.c:137,1
    - Dst: strchr
      Src: /src/frr/ripd/rip_main.c:139,1
    - Dst: fprintf
      Src: /src/frr/ripd/rip_main.c:140,1
    - Dst: frr_help_exit
      Src: /src/frr/ripd/rip_main.c:153,1
    - Dst: frr_init
      Src: /src/frr/ripd/rip_main.c:158,1
    - Dst: rip_error_init
      Src: /src/frr/ripd/rip_main.c:161,1
    - Dst: keychain_init
      Src: /src/frr/ripd/rip_main.c:162,1
    - Dst: rip_vrf_init
      Src: /src/frr/ripd/rip_main.c:163,1
    - Dst: rip_init
      Src: /src/frr/ripd/rip_main.c:166,1
    - Dst: rip_if_init
      Src: /src/frr/ripd/rip_main.c:167,1
    - Dst: rip_cli_init
      Src: /src/frr/ripd/rip_main.c:168,1
    - Dst: rip_zclient_init
      Src: /src/frr/ripd/rip_main.c:169,1
    - Dst: rip_bfd_init
      Src: /src/frr/ripd/rip_main.c:170,1
    - Dst: frr_config_fork
      Src: /src/frr/ripd/rip_main.c:172,1
    - Dst: frr_run
      Src: /src/frr/ripd/rip_main.c:173,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 177
    functionName: main
    functionSourceFile: /src/frr/ripd/rip_main.c
    functionUses: 4
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - rip_if_init
    - rip_cli_init
    - frr_getopt
    - frr_init
    - rip_vrf_init
    - frr_config_fork
    - rip_error_init
    - rip_bfd_init
    - fprintf
    - strchr
    - frr_run
    - rip_zclient_init
    - keychain_init
    - frr_opt_add
    - rip_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/ripd/rip_errors.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: rip_error_init
    functionSourceFile: /src/frr/ripd/rip_errors.c
    functionUses: 1
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void rip_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: OFFSET_LIST_IN_NAME
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_IN_NAME(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: OFFSET_LIST_IN_METRIC
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_IN_METRIC(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: OFFSET_LIST_OUT_NAME
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_OUT_NAME(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: OFFSET_LIST_OUT_METRIC
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_OUT_METRIC(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripd/rip_offset.c:29,1
    - Dst: strdup
      Src: /src/frr/ripd/rip_offset.c:31,1
    - Dst: listnode_add_sort
      Src: /src/frr/ripd/rip_offset.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rip
    - ifname
    argTypes:
    - struct rip*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 35
    functionName: rip_offset_list_new
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 0
    functionsReached:
    - strdup
    - listnode_add_sort
    - XCALLOC
    linkageType: ''
    returnType: struct rip_offset_list
    signature: struct rip_offset_list *rip_offset_list_new(struct rip *rip, const
      char *ifname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/ripd/rip_offset.c:39,1
    - Dst: offset_list_free
      Src: /src/frr/ripd/rip_offset.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - offset
    argTypes:
    - struct rip_offset_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: offset_list_del
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - offset_list_free
    linkageType: ''
    returnType: void
    signature: void offset_list_del(struct rip_offset_list *offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripd/rip_offset.c:45,1
    - Dst: free
      Src: /src/frr/ripd/rip_offset.c:46,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripd/rip_offset.c:46,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripd/rip_offset.c:47,1
    - Dst: free
      Src: /src/frr/ripd/rip_offset.c:48,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripd/rip_offset.c:48,1
    - Dst: free
      Src: /src/frr/ripd/rip_offset.c:49,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_offset.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - offset
    argTypes:
    - struct rip_offset_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 51
    functionName: offset_list_free
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 1
    functionsReached:
    - OFFSET_LIST_OUT_NAME
    - XFREE
    - free
    - OFFSET_LIST_IN_NAME
    linkageType: ''
    returnType: void
    signature: void offset_list_free(struct rip_offset_list *offset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_offset.c:59,1
    - Dst: strcmp
      Src: /src/frr/ripd/rip_offset.c:60,1
    - Dst: rip_offset_list_apply_in
      Src: /src/frr/ripd/rip_offset.c:67,1
    - Dst: rip_offset_list_lookup
      Src: /src/frr/ripd/rip_offset.c:75,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripd/rip_offset.c:76,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/rip_offset.c:77,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripd/rip_offset.c:77,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/rip_offset.c:80,1
    - Dst: OFFSET_LIST_IN_METRIC
      Src: /src/frr/ripd/rip_offset.c:82,1
    - Dst: rip_offset_list_lookup
      Src: /src/frr/ripd/rip_offset.c:88,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripd/rip_offset.c:89,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/rip_offset.c:90,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripd/rip_offset.c:90,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/rip_offset.c:93,1
    - Dst: OFFSET_LIST_IN_METRIC
      Src: /src/frr/ripd/rip_offset.c:95,1
    - Dst: rip_offset_list_lookup
      Src: /src/frr/ripd/rip_offset.c:112,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripd/rip_offset.c:113,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/rip_offset.c:114,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripd/rip_offset.c:115,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/rip_offset.c:118,1
    - Dst: OFFSET_LIST_OUT_METRIC
      Src: /src/frr/ripd/rip_offset.c:120,1
    - Dst: rip_offset_list_lookup
      Src: /src/frr/ripd/rip_offset.c:127,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripd/rip_offset.c:128,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/rip_offset.c:129,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripd/rip_offset.c:130,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/rip_offset.c:133,1
    - Dst: OFFSET_LIST_OUT_METRIC
      Src: /src/frr/ripd/rip_offset.c:135,1
    - Dst: strcmp
      Src: /src/frr/ripd/rip_offset.c:145,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 2
    argNames:
    - rip
    - ifname
    argTypes:
    - struct rip*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 146
    functionName: rip_offset_list_lookup
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 1
    functionsReached:
    - rip_offset_list_lookup
    - OFFSET_LIST_IN_NAME
    - OFFSET_LIST_OUT_NAME
    - strcmp
    - OFFSET_LIST_OUT_METRIC
    - rip_offset_list_apply_in
    - access_list_lookup
    - access_list_apply
    - OFFSET_LIST_IN_METRIC
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct rip_offset_list
    signature: "struct rip_offset_list *rip_offset_list_lookup(struct rip *rip,\n\t\t\t\t\t
      \      const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ripd/rip_offset.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - o1
    - o2
    argTypes:
    - struct rip_offset_list*
    - struct rip_offset_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: offset_list_cmp
    functionSourceFile: /src/frr/ripd/rip_offset.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int offset_list_cmp(struct rip_offset_list *o1, struct rip_offset_list
      *o2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripd/rip_peer.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: rip_peer_new
    functionSourceFile: /src/frr/ripd/rip_peer.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rip_peer
    signature: struct rip_peer *rip_peer_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_free
      Src: /src/frr/ripd/rip_peer.c:28,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_peer.c:29,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_peer.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct rip_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 31
    functionName: rip_peer_free
    functionSourceFile: /src/frr/ripd/rip_peer.c
    functionUses: 0
    functionsReached:
    - XFREE
    - EVENT_OFF
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: void rip_peer_free(struct rip_peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_peer.c:38,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ripd/rip_peer.c:39,1
    - Dst: for
      Src: /src/frr/ripd/rip_peer.c:50,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_peer.c:50,1
    - Dst: htonl
      Src: /src/frr/ripd/rip_peer.c:51,1
    - Dst: htonl
      Src: /src/frr/ripd/rip_peer.c:51,1
    - Dst: rip_peer_timeout
      Src: /src/frr/ripd/rip_peer.c:58,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripd/rip_peer.c:62,1
    - Dst: listnode_delete
      Src: /src/frr/ripd/rip_peer.c:63,1
    - Dst: rip_peer_free
      Src: /src/frr/ripd/rip_peer.c:64,1
    - Dst: rip_peer_get
      Src: /src/frr/ripd/rip_peer.c:68,1
    - Dst: rip_peer_lookup
      Src: /src/frr/ripd/rip_peer.c:73,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_peer.c:76,1
    - Dst: rip_peer_new
      Src: /src/frr/ripd/rip_peer.c:78,1
    - Dst: rip_bfd_session_update
      Src: /src/frr/ripd/rip_peer.c:82,1
    - Dst: listnode_add_sort
      Src: /src/frr/ripd/rip_peer.c:83,1
    - Dst: event_add_timer
      Src: /src/frr/ripd/rip_peer.c:87,1
    - Dst: time
      Src: /src/frr/ripd/rip_peer.c:91,1
    - Dst: rip_peer_update
      Src: /src/frr/ripd/rip_peer.c:96,1
    - Dst: rip_peer_get
      Src: /src/frr/ripd/rip_peer.c:100,1
    - Dst: rip_peer_bad_route
      Src: /src/frr/ripd/rip_peer.c:104,1
    - Dst: rip_peer_get
      Src: /src/frr/ripd/rip_peer.c:108,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/rip_peer.c:112,1
    - Dst: rip_peer_get
      Src: /src/frr/ripd/rip_peer.c:116,1
    - Dst: rip_peer_uptime
      Src: /src/frr/ripd/rip_peer.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rip
    - addr
    argTypes:
    - struct rip*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 129
    functionName: rip_peer_lookup
    functionSourceFile: /src/frr/ripd/rip_peer.c
    functionUses: 2
    functionsReached:
    - rip_bfd_session_update
    - IPV4_ADDR_SAME
    - htonl
    - rip_peer_uptime
    - rip_peer_bad_packet
    - rip_peer_free
    - EVENT_ARG
    - for
    - rip_peer_update
    - listnode_add_sort
    - rip_peer_timeout
    - rip_peer_bad_route
    - EVENT_OFF
    - event_add_timer
    - listnode_delete
    - rip_peer_get
    - rip_peer_lookup
    - ALL_LIST_ELEMENTS
    - time
    - rip_peer_new
    linkageType: ''
    returnType: struct rip_peer
    signature: struct rip_peer *rip_peer_lookup(struct rip *rip, struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_peer.c:147,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_peer.c:148,1
    - Dst: rip_peer_uptime
      Src: /src/frr/ripd/rip_peer.c:151,1
    - Dst: return
      Src: /src/frr/ripd/rip_peer.c:160,1
    - Dst: htonl
      Src: /src/frr/ripd/rip_peer.c:160,1
    - Dst: htonl
      Src: /src/frr/ripd/rip_peer.c:160,1
    - Dst: rip_peer_list_del
      Src: /src/frr/ripd/rip_peer.c:163,1
    - Dst: rip_peer_free
      Src: /src/frr/ripd/rip_peer.c:165,1
    - Dst: rip_peer_delete_routes
      Src: /src/frr/ripd/rip_peer.c:168,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_peer.c:172,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_peer.c:173,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_peer.c:183,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/rip_peer.c:185,1
    - Dst: listcount
      Src: /src/frr/ripd/rip_peer.c:190,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_peer.c:191,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_peer.c:192,1
    - Dst: listnode_delete
      Src: /src/frr/ripd/rip_peer.c:193,1
    - Dst: list_isempty
      Src: /src/frr/ripd/rip_peer.c:194,1
    - Dst: list_delete
      Src: /src/frr/ripd/rip_peer.c:195,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_peer.c:197,1
    - Dst: rip_info_free
      Src: /src/frr/ripd/rip_peer.c:199,1
    - Dst: rip_event
      Src: /src/frr/ripd/rip_peer.c:203,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/rip_peer.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - rip
    argTypes:
    - struct vty*
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 209
    functionName: rip_peer_display
    functionSourceFile: /src/frr/ripd/rip_peer.c
    functionUses: 0
    functionsReached:
    - list_delete
    - route_top
    - htonl
    - rip_event
    - rip_peer_uptime
    - return
    - rip_ecmp_delete
    - rip_peer_free
    - route_unlock_node
    - vty_out
    - listcount
    - route_next
    - rip_route_rte
    - EVENT_OFF
    - listnode_delete
    - rip_info_free
    - rip_peer_list_del
    - list_isempty
    - rip_peer_delete_routes
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void rip_peer_display(struct vty *vty, struct rip *rip)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:38,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/ripd/rip_nb_config.c:39,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ripd/rip_nb_config.c:49,1
    - Dst: rip_create_socket
      Src: /src/frr/ripd/rip_nb_config.c:52,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ripd/rip_nb_config.c:58,1
    - Dst: close
      Src: /src/frr/ripd/rip_nb_config.c:62,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ripd/rip_nb_config.c:65,1
    - Dst: rip_create
      Src: /src/frr/ripd/rip_nb_config.c:70,1
    - Dst: nb_running_set_entry
      Src: /src/frr/ripd/rip_nb_config.c:71,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 76
    functionName: ripd_instance_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_create
    - nb_running_set_entry
    - vrf_lookup_by_name
    - close
    - vrf_is_enabled
    - yang_dnode_get_string
    - rip_create_socket
    linkageType: ''
    returnType: int
    signature: int ripd_instance_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/ripd/rip_nb_config.c:85,1
    - Dst: rip_clean
      Src: /src/frr/ripd/rip_nb_config.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: ripd_instance_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_clean
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:101,1
    - Dst: MIN
      Src: /src/frr/ripd/rip_nb_config.c:103,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripd/rip_nb_config.c:103,1
    - Dst: rip_ecmp_disable
      Src: /src/frr/ripd/rip_nb_config.c:105,1
    - Dst: rip_ecmp_change
      Src: /src/frr/ripd/rip_nb_config.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: ripd_instance_allow_ecmp_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - MIN
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - rip_ecmp_disable
    - rip_ecmp_change
    linkageType: ''
    returnType: int
    signature: int ripd_instance_allow_ecmp_modify(struct nb_cb_modify_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:127,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_nb_config.c:128,1
    - Dst: memset
      Src: /src/frr/ripd/rip_nb_config.c:130,1
    - Dst: memset
      Src: /src/frr/ripd/rip_nb_config.c:135,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_nb_config.c:137,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_nb_config.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 145
    functionName: ripd_instance_default_information_originate_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - rip_redistribute_add
    - memset
    - rip_redistribute_delete
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_default_information_originate_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:157,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripd/rip_nb_config.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 162
    functionName: ripd_instance_default_metric_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_default_metric_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:174,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripd/rip_nb_config.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 178
    functionName: ripd_instance_distance_default_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_distance_default_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/ripd/rip_nb_config.c:192,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_nb_config.c:193,1
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:196,1
    - Dst: route_node_get
      Src: /src/frr/ripd/rip_nb_config.c:197,1
    - Dst: rip_distance_new
      Src: /src/frr/ripd/rip_nb_config.c:198,1
    - Dst: nb_running_set_entry
      Src: /src/frr/ripd/rip_nb_config.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 202
    functionName: ripd_instance_distance_source_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - nb_running_set_entry
    - rip_distance_new
    - nb_running_get_entry
    - route_node_get
    - yang_dnode_get_ipv4p
    linkageType: ''
    returnType: int
    signature: int ripd_instance_distance_source_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/ripd/rip_nb_config.c:212,1
    - Dst: rip_distance_free
      Src: /src/frr/ripd/rip_nb_config.c:214,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_nb_config.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 219
    functionName: ripd_instance_distance_source_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - nb_running_unset_entry
    - rip_distance_free
    linkageType: ''
    returnType: int
    signature: int ripd_instance_distance_source_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:235,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripd/rip_nb_config.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 241
    functionName: ripd_instance_distance_source_distance_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_distance_source_distance_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:256,1
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:259,1
    - Dst: free
      Src: /src/frr/ripd/rip_nb_config.c:262,1
    - Dst: strdup
      Src: /src/frr/ripd/rip_nb_config.c:263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 266
    functionName: ripd_instance_distance_source_access_list_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - strdup
    - yang_dnode_get_string
    - free
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_distance_source_access_list_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:278,1
    - Dst: free
      Src: /src/frr/ripd/rip_nb_config.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 284
    functionName: ripd_instance_distance_source_access_list_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - free
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_distance_source_access_list_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:297,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/ripd/rip_nb_config.c:300,1
    - Dst: rip_neighbor_add
      Src: /src/frr/ripd/rip_nb_config.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 303
    functionName: ripd_instance_explicit_neighbor_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ipv4
    - rip_neighbor_add
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_explicit_neighbor_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:313,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/ripd/rip_nb_config.c:316,1
    - Dst: rip_neighbor_delete
      Src: /src/frr/ripd/rip_nb_config.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 319
    functionName: ripd_instance_explicit_neighbor_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ipv4
    - rip_neighbor_delete
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_explicit_neighbor_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:332,1
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/ripd/rip_nb_config.c:333,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_nb_config.c:334,1
    - Dst: rip_enable_network_add
      Src: /src/frr/ripd/rip_nb_config.c:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 337
    functionName: ripd_instance_network_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - rip_enable_network_add
    - nb_running_get_entry
    - yang_dnode_get_ipv4p
    linkageType: ''
    returnType: int
    signature: int ripd_instance_network_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:347,1
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/ripd/rip_nb_config.c:348,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_nb_config.c:349,1
    - Dst: rip_enable_network_delete
      Src: /src/frr/ripd/rip_nb_config.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 352
    functionName: ripd_instance_network_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_enable_network_delete
    - apply_mask_ipv4
    - nb_running_get_entry
    - yang_dnode_get_ipv4p
    linkageType: ''
    returnType: int
    signature: int ripd_instance_network_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:365,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:366,1
    - Dst: rip_enable_if_add
      Src: /src/frr/ripd/rip_nb_config.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: ripd_instance_interface_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_enable_if_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_interface_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:379,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:380,1
    - Dst: rip_enable_if_delete
      Src: /src/frr/ripd/rip_nb_config.c:382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 383
    functionName: ripd_instance_interface_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_enable_if_delete
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_interface_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:397,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:398,1
    - Dst: rip_offset_list_new
      Src: /src/frr/ripd/rip_nb_config.c:400,1
    - Dst: nb_running_set_entry
      Src: /src/frr/ripd/rip_nb_config.c:401,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 404
    functionName: ripd_instance_offset_list_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_get_string
    - rip_offset_list_new
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_offset_list_create(struct nb_cb_create_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:414,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/ripd/rip_nb_config.c:416,1
    - Dst: free
      Src: /src/frr/ripd/rip_nb_config.c:418,1
    - Dst: offset_list_del
      Src: /src/frr/ripd/rip_nb_config.c:423,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 426
    functionName: ripd_instance_offset_list_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - free
    - nb_running_unset_entry
    - offset_list_del
    linkageType: ''
    returnType: int
    signature: int ripd_instance_offset_list_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:440,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:441,1
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:443,1
    - Dst: free
      Src: /src/frr/ripd/rip_nb_config.c:445,1
    - Dst: strdup
      Src: /src/frr/ripd/rip_nb_config.c:446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 449
    functionName: ripd_instance_offset_list_access_list_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - free
    - nb_running_get_entry
    - strdup
    - yang_dnode_get_string
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: int ripd_instance_offset_list_access_list_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:463,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripd/rip_nb_config.c:464,1
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 470
    functionName: ripd_instance_offset_list_metric_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_offset_list_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:482,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_nb_config.c:483,1
    - Dst: rip_passive_nondefault_clean
      Src: /src/frr/ripd/rip_nb_config.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 487
    functionName: ripd_instance_passive_default_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - rip_passive_nondefault_clean
    linkageType: ''
    returnType: int
    signature: int ripd_instance_passive_default_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:500,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:501,1
    - Dst: rip_passive_nondefault_set
      Src: /src/frr/ripd/rip_nb_config.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 504
    functionName: ripd_instance_passive_interface_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_passive_nondefault_set
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_passive_interface_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:514,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:515,1
    - Dst: rip_passive_nondefault_unset
      Src: /src/frr/ripd/rip_nb_config.c:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 518
    functionName: ripd_instance_passive_interface_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_passive_nondefault_unset
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_passive_interface_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:531,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:532,1
    - Dst: rip_passive_nondefault_set
      Src: /src/frr/ripd/rip_nb_config.c:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 535
    functionName: ripd_instance_non_passive_interface_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_passive_nondefault_set
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_non_passive_interface_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:545,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:546,1
    - Dst: rip_passive_nondefault_unset
      Src: /src/frr/ripd/rip_nb_config.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 549
    functionName: ripd_instance_non_passive_interface_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_passive_nondefault_unset
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_non_passive_interface_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:562,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 568
    functionName: ripd_instance_redistribute_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_redistribute_create(struct nb_cb_create_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:578,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:579,1
    - Dst: free
      Src: /src/frr/ripd/rip_nb_config.c:583,1
    - Dst: rip_redistribute_conf_delete
      Src: /src/frr/ripd/rip_nb_config.c:591,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 594
    functionName: ripd_instance_redistribute_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - rip_redistribute_conf_delete
    - free
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_redistribute_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:602,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:603,1
    - Dst: rip_redistribute_conf_update
      Src: /src/frr/ripd/rip_nb_config.c:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 607
    functionName: ripd_instance_redistribute_apply_finish
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    - rip_redistribute_conf_update
    linkageType: ''
    returnType: void
    signature: "void ripd_instance_redistribute_apply_finish(\n\tstruct nb_cb_apply_finish_args
      *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:621,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:622,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:623,1
    - Dst: free
      Src: /src/frr/ripd/rip_nb_config.c:626,1
    - Dst: strdup
      Src: /src/frr/ripd/rip_nb_config.c:627,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ripd/rip_nb_config.c:628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 631
    functionName: ripd_instance_redistribute_route_map_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - free
    - nb_running_get_entry
    - strdup
    - route_map_lookup_by_name
    - yang_dnode_get_string
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: int ripd_instance_redistribute_route_map_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:642,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:643,1
    - Dst: free
      Src: /src/frr/ripd/rip_nb_config.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 650
    functionName: ripd_instance_redistribute_route_map_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - free
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_redistribute_route_map_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:664,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:665,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripd/rip_nb_config.c:666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 672
    functionName: ripd_instance_redistribute_metric_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_redistribute_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:682,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 689
    functionName: ripd_instance_redistribute_metric_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_redistribute_metric_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 699
    functionName: ripd_instance_if_route_maps_if_route_map_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_if_route_maps_if_route_map_create(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:715,1
    - Dst: if_rmap_yang_destroy_cb
      Src: /src/frr/ripd/rip_nb_config.c:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 719
    functionName: ripd_instance_if_route_maps_if_route_map_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - if_rmap_yang_destroy_cb
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_if_route_maps_if_route_map_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:724,1
    - Dst: if_rmap_yang_modify_cb
      Src: /src/frr/ripd/rip_nb_config.c:726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnode
    - type
    - delete
    argTypes:
    - struct lyd_node*
    - enum if_rmap_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 727
    functionName: if_route_map_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - if_rmap_yang_modify_cb
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void if_route_map_modify(const struct lyd_node *dnode,\n\t\t\t\tenum
      if_rmap_type type, bool delete)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripd/rip_nb_config.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 741
    functionName: ripd_instance_if_route_maps_if_route_map_in_route_map_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_if_route_maps_if_route_map_in_route_map_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripd/rip_nb_config.c:749,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 752
    functionName: ripd_instance_if_route_maps_if_route_map_in_route_map_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_if_route_maps_if_route_map_in_route_map_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripd/rip_nb_config.c:763,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 766
    functionName: ripd_instance_if_route_maps_if_route_map_out_route_map_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_if_route_maps_if_route_map_out_route_map_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripd/rip_nb_config.c:774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 777
    functionName: ripd_instance_if_route_maps_if_route_map_out_route_map_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_if_route_maps_if_route_map_out_route_map_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:791,1
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/ripd/rip_nb_config.c:792,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_nb_config.c:793,1
    - Dst: memset
      Src: /src/frr/ripd/rip_nb_config.c:795,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_nb_config.c:797,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 801
    functionName: ripd_instance_static_route_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_redistribute_add
    - apply_mask_ipv4
    - memset
    - nb_running_get_entry
    - yang_dnode_get_ipv4p
    linkageType: ''
    returnType: int
    signature: int ripd_instance_static_route_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:811,1
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/ripd/rip_nb_config.c:812,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_nb_config.c:813,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_nb_config.c:815,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 818
    functionName: ripd_instance_static_route_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - rip_redistribute_delete
    - nb_running_get_entry
    - yang_dnode_get_ipv4p
    linkageType: ''
    returnType: int
    signature: int ripd_instance_static_route_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:827,1
    - Dst: rip_event
      Src: /src/frr/ripd/rip_nb_config.c:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 831
    functionName: ripd_instance_timers_apply_finish
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_event
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: void ripd_instance_timers_apply_finish(struct nb_cb_apply_finish_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:843,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/ripd/rip_nb_config.c:844,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 847
    functionName: ripd_instance_timers_flush_interval_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int ripd_instance_timers_flush_interval_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:860,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/ripd/rip_nb_config.c:861,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 852
    functionDepth: 1
    functionLinenumber: 852
    functionLinenumberEnd: 864
    functionName: ripd_instance_timers_holddown_interval_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_timers_holddown_interval_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:876,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/ripd/rip_nb_config.c:877,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 869
    functionDepth: 1
    functionLinenumber: 869
    functionLinenumberEnd: 880
    functionName: ripd_instance_timers_update_interval_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int ripd_instance_timers_update_interval_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:892,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:893,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 896
    functionName: ripd_instance_version_receive_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_version_receive_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:908,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 912
    functionName: ripd_instance_version_send_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripd_instance_version_send_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:924,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:925,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_nb_config.c:927,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:928,1
    - Dst: rip_bfd_instance_update
      Src: /src/frr/ripd/rip_nb_config.c:929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 932
    functionName: ripd_instance_default_bfd_profile_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_bfd_instance_update
    - nb_running_get_entry
    - yang_dnode_get_string
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: int ripd_instance_default_bfd_profile_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:941,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:942,1
    - Dst: rip_bfd_instance_update
      Src: /src/frr/ripd/rip_nb_config.c:943,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 946
    functionName: ripd_instance_default_bfd_profile_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_bfd_instance_update
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int ripd_instance_default_bfd_profile_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:959,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:961,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 951
    functionDepth: 1
    functionLinenumber: 951
    functionLinenumberEnd: 964
    functionName: lib_interface_rip_split_horizon_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_split_horizon_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:977,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_nb_config.c:979,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 982
    functionName: lib_interface_rip_v2_broadcast_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_v2_broadcast_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:995,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:997,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1000
    functionName: lib_interface_rip_version_receive_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_version_receive_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1013,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:1015,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1018
    functionName: lib_interface_rip_version_send_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_version_send_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1032,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:1034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1037
    functionName: lib_interface_rip_authentication_scheme_mode_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_rip_authentication_scheme_mode_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1052,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_nb_config.c:1054,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1057
    functionName: lib_interface_rip_authentication_scheme_md5_auth_length_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_rip_authentication_scheme_md5_auth_length_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1068,1
    - Dst: yang_get_default_enum
      Src: /src/frr/ripd/rip_nb_config.c:1070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1074
    functionName: lib_interface_rip_authentication_scheme_md5_auth_length_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_get_default_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_rip_authentication_scheme_md5_auth_length_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1088,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1090,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_nb_config.c:1091,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:1092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1079
    functionDepth: 1
    functionLinenumber: 1079
    functionLinenumberEnd: 1095
    functionName: lib_interface_rip_authentication_password_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_rip_authentication_password_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1106,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1097
    functionDepth: 1
    functionLinenumber: 1097
    functionLinenumberEnd: 1111
    functionName: lib_interface_rip_authentication_password_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_rip_authentication_password_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1124,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_nb_config.c:1126,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1127,1
    - Dst: yang_dnode_exists
      Src: /src/frr/ripd/rip_nb_config.c:1128,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_nb_config.c:1129,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:1131,1
    - Dst: rip_bfd_interface_update
      Src: /src/frr/ripd/rip_nb_config.c:1133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1116
    functionDepth: 1
    functionLinenumber: 1116
    functionLinenumberEnd: 1136
    functionName: lib_interface_rip_bfd_create
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - rip_bfd_interface_update
    - yang_dnode_get_string
    - XFREE
    - yang_dnode_exists
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_bfd_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1146,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1149,1
    - Dst: rip_bfd_interface_update
      Src: /src/frr/ripd/rip_nb_config.c:1150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1138
    functionDepth: 1
    functionLinenumber: 1138
    functionLinenumberEnd: 1153
    functionName: lib_interface_rip_bfd_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_bfd_interface_update
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_bfd_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1166,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_nb_config.c:1168,1
    - Dst: rip_bfd_interface_update
      Src: /src/frr/ripd/rip_nb_config.c:1169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1158
    functionDepth: 1
    functionLinenumber: 1158
    functionLinenumberEnd: 1172
    functionName: lib_interface_rip_bfd_enable_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - rip_bfd_interface_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_bfd_enable_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1185,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1187,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_nb_config.c:1188,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:1189,1
    - Dst: rip_bfd_interface_update
      Src: /src/frr/ripd/rip_nb_config.c:1190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1177
    functionDepth: 1
    functionLinenumber: 1177
    functionLinenumberEnd: 1193
    functionName: lib_interface_rip_bfd_profile_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - rip_bfd_interface_update
    - yang_dnode_get_string
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_bfd_profile_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1203,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1205,1
    - Dst: rip_bfd_interface_update
      Src: /src/frr/ripd/rip_nb_config.c:1206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1195
    functionDepth: 1
    functionLinenumber: 1195
    functionLinenumberEnd: 1209
    functionName: lib_interface_rip_bfd_profile_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - rip_bfd_interface_update
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_interface_rip_bfd_profile_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1223,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1225,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_nb_config.c:1226,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_nb_config.c:1227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1230
    functionName: lib_interface_rip_authentication_key_chain_modify
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_rip_authentication_key_chain_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripd/rip_nb_config.c:1241,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_nb_config.c:1243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1232
    functionDepth: 1
    functionLinenumber: 1232
    functionLinenumberEnd: 1246
    functionName: lib_interface_rip_authentication_key_chain_destroy
    functionSourceFile: /src/frr/ripd/rip_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_rip_authentication_key_chain_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ripd/ripd.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct rip*
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: rip_instance_compare
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int rip_instance_compare(const struct rip *a, const struct rip *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ripd/ripd.c:94,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/ripd.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: sockopt_broadcast
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int sockopt_broadcast(int sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: rip_route_rte
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rip_route_rte(struct rip_info *rinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripd/ripd.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: rip_info_new
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rip_info
    signature: struct rip_info *rip_info_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripd/ripd.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: rip_info_free
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rip_info_free(struct rip_info *rinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_info
      Src: /src/frr/ripd/ripd.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: rip_info_get_instance
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - route_table_get_info
    linkageType: ''
    returnType: struct rip
    signature: struct rip *rip_info_get_instance(const struct rip_info *rinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ripd/ripd.c:130,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:133,1
    - Dst: listnode_delete
      Src: /src/frr/ripd/ripd.c:139,1
    - Dst: list_isempty
      Src: /src/frr/ripd/ripd.c:140,1
    - Dst: list_delete
      Src: /src/frr/ripd/ripd.c:141,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:142,1
    - Dst: rip_info_free
      Src: /src/frr/ripd/ripd.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 147
    functionName: rip_garbage_collect
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - list_delete
    - list_isempty
    - EVENT_OFF
    - EVENT_ARG
    - listnode_delete
    - rip_info_free
    linkageType: ''
    returnType: void
    signature: void rip_garbage_collect(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ripd/ripd.c:165,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:170,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:174,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:174,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/ripd.c:178,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ripd/ripd.c:181,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ripd/ripd.c:191,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/ripd.c:192,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 2
    argNames:
    - rip
    - rinfo_new
    argTypes:
    - struct rip*
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 197
    functionName: rip_ecmp_add
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - listcount
    - rip_ecmp_delete
    - list_new
    - ALL_LIST_ELEMENTS
    - IPV4_ADDR_CMP
    linkageType: ''
    returnType: struct rip_info
    signature: struct rip_info *rip_ecmp_add(struct rip *rip, struct rip_info *rinfo_new)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:229,1
    - Dst: rip_ecmp_add
      Src: /src/frr/ripd/ripd.c:230,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:233,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:233,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/ripd.c:236,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/ripd.c:236,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripd/ripd.c:237,1
    - Dst: rip_zebra_ipv4_delete
      Src: /src/frr/ripd/ripd.c:238,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/ripd.c:241,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:245,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:246,1
    - Dst: list_delete_node
      Src: /src/frr/ripd/ripd.c:247,1
    - Dst: rip_info_free
      Src: /src/frr/ripd/ripd.c:248,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:251,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:252,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:253,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/ripd.c:255,1
    - Dst: rip_timeout_update
      Src: /src/frr/ripd/ripd.c:256,1
    - Dst: rip_zebra_ipv4_add
      Src: /src/frr/ripd/ripd.c:258,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/ripd.c:262,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:265,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - rip
    - rinfo_new
    argTypes:
    - struct rip*
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 268
    functionName: rip_ecmp_replace
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_info_free
    - rip_timeout_update
    - listcount
    - CHECK_FLAG
    - listhead
    - rip_ecmp_add
    - rip_route_rte
    - list_delete_node
    - rip_zebra_ipv4_add
    - EVENT_OFF
    - SET_FLAG
    - listgetdata
    - ALL_LIST_ELEMENTS
    - rip_event
    - rip_zebra_ipv4_delete
    - memcpy
    linkageType: ''
    returnType: struct rip_info
    signature: struct rip_info *rip_ecmp_replace(struct rip *rip, struct rip_info
      *rinfo_new)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:281,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:283,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:286,1
    - Dst: listnode_delete
      Src: /src/frr/ripd/ripd.c:287,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/ripd.c:288,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripd/ripd.c:289,1
    - Dst: rip_zebra_ipv4_add
      Src: /src/frr/ripd/ripd.c:291,1
    - Dst: rip_info_free
      Src: /src/frr/ripd/ripd.c:292,1
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:295,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:295,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:295,1
    - Dst: RIP_TIMER_ON
      Src: /src/frr/ripd/ripd.c:302,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/ripd.c:305,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripd/ripd.c:306,1
    - Dst: rip_zebra_ipv4_delete
      Src: /src/frr/ripd/ripd.c:307,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:311,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:311,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/ripd.c:312,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - rip
    - rinfo
    argTypes:
    - struct rip*
    - struct rip_info*
    assertStmts:
    - condition: (rinfo == listgetdata(listhead(list)))
      pos:
        line_end: 294
        line_start: 294
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 318
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 318
    functionName: rip_ecmp_delete
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 2
    functionsReached:
    - RIP_TIMER_ON
    - listcount
    - CHECK_FLAG
    - listgetdata
    - listhead
    - rip_route_rte
    - rip_zebra_ipv4_add
    - EVENT_OFF
    - SET_FLAG
    - listnode_delete
    - rip_info_free
    - rip_event
    - rip_zebra_ipv4_delete
    - assert
    linkageType: ''
    returnType: struct rip_info
    signature: struct rip_info *rip_ecmp_delete(struct rip *rip, struct rip_info *rinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ripd/ripd.c:323,1
    - Dst: rip_info_get_instance
      Src: /src/frr/ripd/ripd.c:324,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/ripd.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 327
    functionName: rip_timeout
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_ecmp_delete
    - rip_info_get_instance
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void rip_timeout(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:332,1
    - Dst: event_add_timer
      Src: /src/frr/ripd/ripd.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rip
    - rinfo
    argTypes:
    - struct rip*
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 336
    functionName: rip_timeout_update
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void rip_timeout_update(struct rip *rip, struct rip_info *rinfo)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: access_list_apply
      Src: /src/frr/ripd/ripd.c:350,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:353,1
    - Dst: prefix_list_apply
      Src: /src/frr/ripd/ripd.c:358,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:361,1
    - Dst: distribute_lookup
      Src: /src/frr/ripd/ripd.c:366,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/ripd.c:371,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/ripd.c:374,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:377,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ripd/ripd.c:385,1
    - Dst: prefix_list_apply
      Src: /src/frr/ripd/ripd.c:388,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:391,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 3
    argNames:
    - rip_distribute
    - p
    - ri
    argTypes:
    - int
    - struct prefix_ipv4*
    - struct rip_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 400
    functionName: rip_filter
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_apply
    - zlog_debug
    - distribute_lookup
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: int
    signature: "int rip_filter(int rip_distribute, struct prefix_ipv4 *p,\n\t\t      struct
      rip_interface *ri)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/ripd.c:413,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/ripd.c:414,1
    - Dst: if
      Src: /src/frr/ripd/ripd.c:417,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ripd/ripd.c:418,1
    - Dst: rip_rte_process
      Src: /src/frr/ripd/ripd.c:426,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:442,1
    - Dst: ip_masklen
      Src: /src/frr/ripd/ripd.c:445,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/ripd.c:448,1
    - Dst: rip_filter
      Src: /src/frr/ripd/ripd.c:454,1
    - Dst: if
      Src: /src/frr/ripd/ripd.c:455,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:458,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:467,1
    - Dst: if
      Src: /src/frr/ripd/ripd.c:470,1
    - Dst: route_map_apply
      Src: /src/frr/ripd/ripd.c:472,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:477,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:485,1
    - Dst: rip_offset_list_apply_in
      Src: /src/frr/ripd/ripd.c:495,1
    - Dst: rip_nexthop_check
      Src: /src/frr/ripd/ripd.c:512,1
    - Dst: route_node_get
      Src: /src/frr/ripd/ripd.c:520,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:526,1
    - Dst: rip_distance_apply
      Src: /src/frr/ripd/ripd.c:527,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/ripd.c:534,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/ripd.c:537,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ripd/ripd.c:540,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ripd/ripd.c:541,1
    - Dst: listnextnode
      Src: /src/frr/ripd/ripd.c:544,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:552,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:570,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:592,1
    - Dst: rip_ecmp_replace
      Src: /src/frr/ripd/ripd.c:611,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:613,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:620,1
    - Dst: rip_ecmp_add
      Src: /src/frr/ripd/ripd.c:628,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ripd/ripd.c:637,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:655,1
    - Dst: rip_ecmp_replace
      Src: /src/frr/ripd/ripd.c:657,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/ripd.c:659,1
    - Dst: rip_ecmp_replace
      Src: /src/frr/ripd/ripd.c:662,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/ripd.c:664,1
    - Dst: rip_ecmp_replace
      Src: /src/frr/ripd/ripd.c:666,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/ripd.c:668,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripd/ripd.c:670,1
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:675,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:678,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:679,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:680,1
    - Dst: rip_timeout_update
      Src: /src/frr/ripd/ripd.c:682,1
    - Dst: rip_zebra_ipv4_add
      Src: /src/frr/ripd/ripd.c:685,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:689,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:689,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/ripd.c:690,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:691,1
    - Dst: rip_timeout_update
      Src: /src/frr/ripd/ripd.c:695,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:698,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 88
    argCount: 2
    argNames:
    - rip
    - addr
    argTypes:
    - struct rip*
    - struct in_addr*
    assertStmts:
    - condition: "(newinfo.metric\n\t\t\t\t\t       != RIP_METRIC_INFINITY)"
      pos:
        line_end: 675
        line_start: 674
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 700
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 700
    functionName: rip_nexthop_check
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv4
    - rip_filter
    - htons
    - listhead
    - rip_nexthop_check
    - ntohs
    - IPV4_ADDR_SAME
    - rip_event
    - rip_ecmp_replace
    - memset
    - ALL_LIST_ELEMENTS_RO
    - rip_ecmp_delete
    - FOR_ALL_INTERFACES
    - zlog_debug
    - rip_zebra_ipv4_add
    - if
    - listgetdata
    - assert
    - listnextnode
    - route_unlock_node
    - listcount
    - ip_masklen
    - rip_rte_process
    - rip_route_rte
    - rip_offset_list_apply_in
    - EVENT_OFF
    - memcpy
    - rip_timeout_update
    - CHECK_FLAG
    - rip_ecmp_add
    - SET_FLAG
    - route_node_get
    - route_map_apply
    - rip_distance_apply
    linkageType: ''
    returnType: int
    signature: int rip_nexthop_check(struct rip *rip, struct in_addr *addr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/ripd/ripd.c:714,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:719,1
    - Dst: ip_masklen
      Src: /src/frr/ripd/ripd.c:727,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:729,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:731,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:734,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:736,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:737,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:738,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:744,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:746,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:747,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:748,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:750,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:752,1
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:753,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:755,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:758,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:760,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:761,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:762,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:769,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:771,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:772,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:775,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:779,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:780,1
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:781,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:783,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:785,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:786,1
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:787,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - packet
    - size
    - sndrcv
    argTypes:
    - struct rip_packet*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 790
    functionName: rip_packet_dump
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - htons
    - ntohl
    - ip_masklen
    - ntohs
    - zlog_debug
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: "void rip_packet_dump(struct rip_packet *packet, int size,\n\t\t\t
      \   const char *sndrcv)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:800,1
    - Dst: IPV4_NET127
      Src: /src/frr/ripd/ripd.c:802,1
    - Dst: IPV4_NET0
      Src: /src/frr/ripd/ripd.c:806,1
    - Dst: IN_CLASSA
      Src: /src/frr/ripd/ripd.c:810,1
    - Dst: IN_CLASSB
      Src: /src/frr/ripd/ripd.c:812,1
    - Dst: IN_CLASSC
      Src: /src/frr/ripd/ripd.c:814,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 818
    functionName: rip_destination_check
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - IN_CLASSC
    - IPV4_NET127
    - IN_CLASSA
    - IN_CLASSB
    - ntohl
    - IPV4_NET0
    linkageType: ''
    returnType: int
    signature: int rip_destination_check(struct in_addr addr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/frr/ripd/ripd.c:829,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:835,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:841,1
    - Dst: strncmp
      Src: /src/frr/ripd/ripd.c:846,1
    - Dst: keychain_lookup
      Src: /src/frr/ripd/ripd.c:853,1
    - Dst: key_match_for_accept
      Src: /src/frr/ripd/ripd.c:857,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - rte
    - from
    - ifp
    argTypes:
    - struct rte*
    - struct sockaddr_in*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 862
    functionName: rip_auth_simple_password
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - keychain_lookup
    - htons
    - key_match_for_accept
    - zlog_debug
    - strncmp
    - strnlen
    linkageType: ''
    returnType: int
    signature: "int rip_auth_simple_password(struct rte *rte, struct sockaddr_in *from,\n\t\t\t\t
      \   struct interface *ifp)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:883,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:890,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:902,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:909,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:913,1
    - Dst: keychain_lookup
      Src: /src/frr/ripd/ripd.c:923,1
    - Dst: key_lookup_for_accept
      Src: /src/frr/ripd/ripd.c:927,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:931,1
    - Dst: MIN
      Src: /src/frr/ripd/ripd.c:932,1
    - Dst: strlen
      Src: /src/frr/ripd/ripd.c:932,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:934,1
    - Dst: MIN
      Src: /src/frr/ripd/ripd.c:935,1
    - Dst: strlen
      Src: /src/frr/ripd/ripd.c:935,1
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ripd/ripd.c:943,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ripd/ripd.c:944,1
    - Dst: EVP_md5
      Src: /src/frr/ripd/ripd.c:944,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ripd/ripd.c:945,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ripd/ripd.c:946,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ripd/ripd.c:947,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ripd/ripd.c:948,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:950,1
    - Dst: MD5Init
      Src: /src/frr/ripd/ripd.c:951,1
    - Dst: MD5Update
      Src: /src/frr/ripd/ripd.c:952,1
    - Dst: MD5Update
      Src: /src/frr/ripd/ripd.c:953,1
    - Dst: MD5Final
      Src: /src/frr/ripd/ripd.c:954,1
    - Dst: memcmp
      Src: /src/frr/ripd/ripd.c:957,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 4
    argNames:
    - packet
    - from
    - length
    - ifp
    argTypes:
    - struct rip_packet*
    - struct sockaddr_in*
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 961
    functionName: rip_auth_md5
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - strlen
    - keychain_lookup
    - EVP_DigestUpdate
    - htons
    - MD5Init
    - MD5Update
    - memcmp
    - ntohs
    - MD5Final
    - key_lookup_for_accept
    - MIN
    - memset
    - EVP_DigestInit
    - EVP_md5
    - zlog_debug
    - memcpy
    - EVP_DigestFinal
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    linkageType: ''
    returnType: int
    signature: "int rip_auth_md5(struct rip_packet *packet, struct sockaddr_in *from,\n\t\t\tint
      length, struct interface *ifp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:974,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:976,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:978,1
    - Dst: MIN
      Src: /src/frr/ripd/ripd.c:979,1
    - Dst: strlen
      Src: /src/frr/ripd/ripd.c:979,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:981,1
    - Dst: MIN
      Src: /src/frr/ripd/ripd.c:982,1
    - Dst: strlen
      Src: /src/frr/ripd/ripd.c:982,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - ri
    - key
    - auth_str
    - len
    argTypes:
    - struct rip_interface*
    - struct key*
    - char*
    - int
    assertStmts:
    - condition: (ri || key)
      pos:
        line_end: 973
        line_start: 973
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 985
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 985
    functionName: rip_auth_prepare_str_send
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - assert
    - MIN
    - strlen
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void rip_auth_prepare_str_send(struct rip_interface *ri, struct key
      *key,\n\t\t\t\t      char *auth_str, int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:994,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:996,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:997,1
    - Dst: stream_put
      Src: /src/frr/ripd/ripd.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - auth_str
    - len
    argTypes:
    - struct stream*
    - char*
    - int
    assertStmts:
    - condition: (s && len == RIP_AUTH_SIMPLE_SIZE)
      pos:
        line_end: 993
        line_start: 993
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 1001
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1001
    functionName: rip_auth_simple_write
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_putw
    - assert
    linkageType: ''
    returnType: void
    signature: void rip_auth_simple_write(struct stream *s, char *auth_str, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:1017,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:1020,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:1021,1
    - Dst: stream_get_endp
      Src: /src/frr/ripd/ripd.c:1028,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:1029,1
    - Dst: stream_putc
      Src: /src/frr/ripd/ripd.c:1033,1
    - Dst: stream_putc
      Src: /src/frr/ripd/ripd.c:1035,1
    - Dst: stream_putc
      Src: /src/frr/ripd/ripd.c:1042,1
    - Dst: stream_putl
      Src: /src/frr/ripd/ripd.c:1048,1
    - Dst: stream_putl
      Src: /src/frr/ripd/ripd.c:1051,1
    - Dst: stream_putl
      Src: /src/frr/ripd/ripd.c:1052,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - s
    - ri
    - key
    argTypes:
    - struct stream*
    - struct rip_interface*
    - struct key*
    assertStmts:
    - condition: (s && ri && ri->auth_type == RIP_AUTH_MD5)
      pos:
        line_end: 1016
        line_start: 1016
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 1055
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1055
    functionName: rip_auth_md5_ah_write
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - stream_get_endp
    - stream_putc
    - assert
    - stream_putl
    linkageType: ''
    returnType: size_t
    signature: "size_t rip_auth_md5_ah_write(struct stream *s, struct rip_interface
      *ri,\n\t\t\t\t    struct key *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:1064,1
    - Dst: rip_auth_prepare_str_send
      Src: /src/frr/ripd/ripd.c:1068,1
    - Dst: rip_auth_simple_write
      Src: /src/frr/ripd/ripd.c:1069,1
    - Dst: rip_auth_md5_ah_write
      Src: /src/frr/ripd/ripd.c:1072,1
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:1074,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - s
    - ri
    - key
    - auth_str
    - len
    argTypes:
    - struct stream*
    - struct rip_interface*
    - struct key*
    - char*
    - int
    assertStmts:
    - condition: (ri->auth_type != RIP_NO_AUTH)
      pos:
        line_end: 1063
        line_start: 1063
        source_file: /src/frr/ripd/ripd.c
    - condition: (1)
      pos:
        line_end: 1073
        line_start: 1073
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 1076
      start: 1061
    functionDepth: 2
    functionLinenumber: 1061
    functionLinenumberEnd: 1076
    functionName: rip_auth_header_write
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_auth_prepare_str_send
    - rip_auth_simple_write
    - rip_auth_md5_ah_write
    - assert
    linkageType: ''
    returnType: size_t
    signature: "size_t rip_auth_header_write(struct stream *s, struct rip_interface
      *ri,\n\t\t\t\t    struct key *key, char *auth_str, int len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:1092,1
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:1094,1
    - Dst: stream_get_endp
      Src: /src/frr/ripd/ripd.c:1097,1
    - Dst: flog_err
      Src: /src/frr/ripd/ripd.c:1101,1
    - Dst: stream_putw_at
      Src: /src/frr/ripd/ripd.c:1108,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:1111,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:1112,1
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ripd/ripd.c:1117,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ripd/ripd.c:1118,1
    - Dst: EVP_md5
      Src: /src/frr/ripd/ripd.c:1118,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ripd/ripd.c:1119,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripd/ripd.c:1119,1
    - Dst: stream_get_endp
      Src: /src/frr/ripd/ripd.c:1119,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ripd/ripd.c:1120,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ripd/ripd.c:1121,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ripd/ripd.c:1122,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:1124,1
    - Dst: MD5Init
      Src: /src/frr/ripd/ripd.c:1125,1
    - Dst: MD5Update
      Src: /src/frr/ripd/ripd.c:1126,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripd/ripd.c:1126,1
    - Dst: stream_get_endp
      Src: /src/frr/ripd/ripd.c:1126,1
    - Dst: MD5Update
      Src: /src/frr/ripd/ripd.c:1127,1
    - Dst: MD5Final
      Src: /src/frr/ripd/ripd.c:1128,1
    - Dst: stream_write
      Src: /src/frr/ripd/ripd.c:1132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 5
    argNames:
    - s
    - ri
    - doff
    - auth_str
    - authlen
    argTypes:
    - struct stream*
    - struct rip_interface*
    - size_t
    - char*
    - int
    assertStmts:
    - condition: "((ri->auth_type == RIP_AUTH_MD5)\n\t       && (authlen == RIP_AUTH_MD5_SIZE))"
      pos:
        line_end: 1092
        line_start: 1091
        source_file: /src/frr/ripd/ripd.c
    - condition: (doff > 0)
      pos:
        line_end: 1093
        line_start: 1093
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 1133
      start: 1079
    functionDepth: 1
    functionLinenumber: 1079
    functionLinenumberEnd: 1133
    functionName: rip_auth_md5_set
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - EVP_DigestUpdate
    - memset
    - EVP_DigestInit
    - EVP_md5
    - STREAM_DATA
    - MD5Init
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - MD5Update
    - stream_write
    - flog_err
    - EVP_DigestFinal
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    - assert
    - MD5Final
    linkageType: ''
    returnType: void
    signature: "void rip_auth_md5_set(struct stream *s, struct rip_interface *ri,\n\t\t\t
      \    size_t doff, char *auth_str, int authlen)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:1148,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:1154,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1155,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1157,1
    - Dst: if_lookup_address
      Src: /src/frr/ripd/ripd.c:1165,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1168,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1171,1
    - Dst: rip_peer_update
      Src: /src/frr/ripd/ripd.c:1181,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:1194,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:1197,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1199,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1200,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/ripd.c:1206,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1207,1
    - Dst: rip_destination_check
      Src: /src/frr/ripd/ripd.c:1213,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1214,1
    - Dst: rip_peer_bad_route
      Src: /src/frr/ripd/ripd.c:1216,1
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:1221,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1225,1
    - Dst: rip_peer_bad_route
      Src: /src/frr/ripd/ripd.c:1226,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1233,1
    - Dst: rip_peer_bad_route
      Src: /src/frr/ripd/ripd.c:1235,1
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:1248,1
    - Dst: IN_CLASSD
      Src: /src/frr/ripd/ripd.c:1249,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1250,1
    - Dst: if_lookup_address
      Src: /src/frr/ripd/ripd.c:1256,1
    - Dst: route_node_match_ipv4
      Src: /src/frr/ripd/ripd.c:1261,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1271,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1277,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:1284,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1287,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:1312,1
    - Dst: memcpy
      Src: /src/frr/ripd/ripd.c:1313,1
    - Dst: apply_classful_mask_ipv4
      Src: /src/frr/ripd/ripd.c:1315,1
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:1321,1
    - Dst: IN_CLASSA
      Src: /src/frr/ripd/ripd.c:1323,1
    - Dst: masklen2ip
      Src: /src/frr/ripd/ripd.c:1324,1
    - Dst: IN_CLASSB
      Src: /src/frr/ripd/ripd.c:1325,1
    - Dst: masklen2ip
      Src: /src/frr/ripd/ripd.c:1326,1
    - Dst: IN_CLASSC
      Src: /src/frr/ripd/ripd.c:1327,1
    - Dst: masklen2ip
      Src: /src/frr/ripd/ripd.c:1328,1
    - Dst: masklen2ip
      Src: /src/frr/ripd/ripd.c:1331,1
    - Dst: masklen2ip
      Src: /src/frr/ripd/ripd.c:1336,1
    - Dst: masklen2ip
      Src: /src/frr/ripd/ripd.c:1339,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1341,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1350,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1352,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/ripd.c:1363,1
    - Dst: ip_masklen
      Src: /src/frr/ripd/ripd.c:1365,1
    - Dst: rip_peer_bad_route
      Src: /src/frr/ripd/ripd.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1375,1
    - Dst: rip_rte_process
      Src: /src/frr/ripd/ripd.c:1381,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 115
    argCount: 4
    argNames:
    - packet
    - size
    - from
    - ifc
    argTypes:
    - struct rip_packet*
    - int
    - struct sockaddr_in*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1136
    functionDepth: 2
    functionLinenumber: 1136
    functionLinenumberEnd: 1383
    functionName: rip_response_process
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - htons
    - ntohs
    - zlog_warn
    - memset
    - masklen2ip
    - rip_peer_bad_packet
    - zlog_debug
    - ntohl
    - rip_peer_update
    - route_unlock_node
    - zlog_info
    - if_lookup_address
    - apply_classful_mask_ipv4
    - IN_CLASSC
    - rip_peer_bad_route
    - ip_masklen
    - rip_rte_process
    - IN_CLASSB
    - memcpy
    - rip_destination_check
    - route_node_match_ipv4
    - IN_CLASSA
    - IN_CLASSD
    linkageType: ''
    returnType: void
    signature: "void rip_response_process(struct rip_packet *packet, int size,\n\t\t\t\t
      struct sockaddr_in *from,\n\t\t\t\t struct connected *ifc)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:1393,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:1400,1
    - Dst: vrf_socket
      Src: /src/frr/ripd/ripd.c:1406,1
    - Dst: flog_err_sys
      Src: /src/frr/ripd/ripd.c:1409,1
    - Dst: safe_strerror
      Src: /src/frr/ripd/ripd.c:1411,1
    - Dst: sockopt_broadcast
      Src: /src/frr/ripd/ripd.c:1416,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/ripd/ripd.c:1417,1
    - Dst: sockopt_reuseport
      Src: /src/frr/ripd/ripd.c:1418,1
    - Dst: setsockopt_ipv4_multicast_loop
      Src: /src/frr/ripd/ripd.c:1419,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/ripd/ripd.c:1421,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/ripd/ripd.c:1423,1
    - Dst: bind
      Src: /src/frr/ripd/ripd.c:1426,1
    - Dst: zlog_err
      Src: /src/frr/ripd/ripd.c:1428,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1430,1
    - Dst: safe_strerror
      Src: /src/frr/ripd/ripd.c:1431,1
    - Dst: close
      Src: /src/frr/ripd/ripd.c:1433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1386
    functionDepth: 2
    functionLinenumber: 1386
    functionLinenumberEnd: 1439
    functionName: rip_create_socket
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - memset
    - vrf_socket
    - htons
    - sockopt_reuseaddr
    - setsockopt_ipv4_multicast_loop
    - sockopt_reuseport
    - zlog_err
    - ntohs
    - close
    - sockopt_broadcast
    - safe_strerror
    - setsockopt_ipv4_tos
    - bind
    - setsockopt_so_recvbuf
    - flog_err_sys
    linkageType: ''
    returnType: int
    signature: int rip_create_socket(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/ripd/ripd.c:1406,1
    - Dst: flog_err_sys
      Src: /src/frr/ripd/ripd.c:1409,1
    - Dst: safe_strerror
      Src: /src/frr/ripd/ripd.c:1411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1405
    functionDepth: 1
    functionLinenumber: 1405
    functionLinenumberEnd: 1414
    functionName: (&ripd_privs)
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - safe_strerror
    - vrf_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ripd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/frr/ripd/ripd.c:1426,1
    - Dst: zlog_err
      Src: /src/frr/ripd/ripd.c:1428,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1430,1
    - Dst: safe_strerror
      Src: /src/frr/ripd/ripd.c:1431,1
    - Dst: close
      Src: /src/frr/ripd/ripd.c:1433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1425
    functionDepth: 1
    functionLinenumber: 1425
    functionLinenumberEnd: 1436
    functionName: (&ripd_privs)
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - close
    - zlog_err
    - ntohs
    - safe_strerror
    - bind
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ripd_privs)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:1460,1
    - Dst: inet_ntop
      Src: /src/frr/ripd/ripd.c:1469,1
    - Dst: htonl
      Src: /src/frr/ripd/ripd.c:1471,1
    - Dst: inet_ntop
      Src: /src/frr/ripd/ripd.c:1472,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripd/ripd.c:1479,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1494,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:1499,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:1510,1
    - Dst: htonl
      Src: /src/frr/ripd/ripd.c:1511,1
    - Dst: rip_interface_multicast_set
      Src: /src/frr/ripd/ripd.c:1513,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:1516,1
    - Dst: CMSG_SPACE
      Src: /src/frr/ripd/ripd.c:1526,1
    - Dst: CMSG_LEN
      Src: /src/frr/ripd/ripd.c:1529,1
    - Dst: CMSG_DATA
      Src: /src/frr/ripd/ripd.c:1532,1
    - Dst: sendmsg
      Src: /src/frr/ripd/ripd.c:1537,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1540,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1541,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/ripd.c:1544,1
    - Dst: safe_strerror
      Src: /src/frr/ripd/ripd.c:1544,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 51
    argCount: 4
    argNames:
    - buf
    - size
    - to
    - ifc
    argTypes:
    - uint8_t*
    - int
    - struct sockaddr_in*
    - struct connected*
    assertStmts:
    - condition: (ifc != NULL)
      pos:
        line_end: 1459
        line_start: 1459
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 1547
      start: 1445
    functionDepth: 1
    functionLinenumber: 1445
    functionLinenumberEnd: 1547
    functionName: rip_send_packet
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - CHECK_FLAG
    - ntohs
    - inet_ntop
    - zlog_debug
    - zlog_warn
    - safe_strerror
    - rip_interface_multicast_set
    - CMSG_SPACE
    - CMSG_DATA
    - htonl
    - sendmsg
    - CMSG_LEN
    - assert
    linkageType: ''
    returnType: int
    signature: "int rip_send_packet(uint8_t *buf, int size, struct sockaddr_in *to,\n\t\t\t
      \  struct connected *ifc)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rip_destination_check
      Src: /src/frr/ripd/ripd.c:1561,1
    - Dst: route_node_get
      Src: /src/frr/ripd/ripd.c:1565,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:1567,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:1578,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:1579,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:1579,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:1584,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:1595,1
    - Dst: rip_ecmp_replace
      Src: /src/frr/ripd/ripd.c:1600,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:1601,1
    - Dst: rip_ecmp_add
      Src: /src/frr/ripd/ripd.c:1603,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1606,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:1609,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 8
    argNames:
    - rip
    - type
    - sub_type
    - p
    - nh
    - metric
    - distance
    - tag
    argTypes:
    - struct rip*
    - int
    - int
    - struct prefix_ipv4*
    - struct nexthop*
    - unsigned int
    - unsigned char
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1550
    functionDepth: 3
    functionLinenumber: 1550
    functionLinenumberEnd: 1610
    functionName: rip_redistribute_add
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - memset
    - listcount
    - listhead
    - rip_destination_check
    - rip_ecmp_add
    - zlog_debug
    - route_node_get
    - listgetdata
    - rip_event
    - rip_ecmp_replace
    linkageType: ''
    returnType: void
    signature: "void rip_redistribute_add(struct rip *rip, int type, int sub_type,\n\t\t\t
      \ struct prefix_ipv4 *p, struct nexthop *nh,\n\t\t\t  unsigned int metric, unsigned
      char distance,\n\t\t\t  route_tag_t tag)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rip_destination_check
      Src: /src/frr/ripd/ripd.c:1620,1
    - Dst: route_node_lookup
      Src: /src/frr/ripd/ripd.c:1624,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:1628,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:1629,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:1629,1
    - Dst: RIP_TIMER_ON
      Src: /src/frr/ripd/ripd.c:1635,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:1638,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1642,1
    - Dst: ifindex2ifname
      Src: /src/frr/ripd/ripd.c:1645,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:1649,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:1652,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 5
    argNames:
    - rip
    - type
    - sub_type
    - p
    - ifindex
    argTypes:
    - struct rip*
    - int
    - int
    - struct prefix_ipv4*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1613
    functionDepth: 2
    functionLinenumber: 1613
    functionLinenumberEnd: 1654
    functionName: rip_redistribute_delete
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - ifindex2ifname
    - RIP_TIMER_ON
    - listcount
    - listhead
    - rip_destination_check
    - zlog_debug
    - EVENT_OFF
    - listgetdata
    - rip_event
    linkageType: ''
    returnType: void
    signature: "void rip_redistribute_delete(struct rip *rip, int type, int sub_type,\n\t\t\t
      \    struct prefix_ipv4 *p, ifindex_t ifindex)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ripd/ripd.c:1669,1
    - Dst: rip_peer_update
      Src: /src/frr/ripd/ripd.c:1683,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1697,1
    - Dst: ntohl
      Src: /src/frr/ripd/ripd.c:1698,1
    - Dst: rip_output_process
      Src: /src/frr/ripd/ripd.c:1700,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1702,1
    - Dst: ip_masklen
      Src: /src/frr/ripd/ripd.c:1717,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/ripd.c:1718,1
    - Dst: route_node_lookup
      Src: /src/frr/ripd/ripd.c:1720,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:1722,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:1723,1
    - Dst: htonl
      Src: /src/frr/ripd/ripd.c:1724,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:1725,1
    - Dst: htonl
      Src: /src/frr/ripd/ripd.c:1727,1
    - Dst: rip_send_packet
      Src: /src/frr/ripd/ripd.c:1731,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 4
    argNames:
    - packet
    - size
    - from
    - ifc
    argTypes:
    - struct rip_packet*
    - int
    - struct sockaddr_in*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1657
    functionDepth: 2
    functionLinenumber: 1657
    functionLinenumberEnd: 1734
    functionName: rip_request_process
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_peer_update
    - apply_mask_ipv4
    - route_node_lookup
    - route_unlock_node
    - htonl
    - rip_send_packet
    - if_is_loopback
    - listhead
    - ip_masklen
    - ntohs
    - listgetdata
    - ntohl
    - rip_output_process
    linkageType: ''
    returnType: void
    signature: "void rip_request_process(struct rip_packet *packet, int size,\n\t\t\t\tstruct
      sockaddr_in *from, struct connected *ifc)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ripd/ripd.c:1739,1
    - Dst: EVENT_FD
      Src: /src/frr/ripd/ripd.c:1755,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:1758,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:1761,1
    - Dst: recvfrom
      Src: /src/frr/ripd/ripd.c:1764,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1767,1
    - Dst: safe_strerror
      Src: /src/frr/ripd/ripd.c:1768,1
    - Dst: if_check_address
      Src: /src/frr/ripd/ripd.c:1773,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1775,1
    - Dst: if_lookup_address
      Src: /src/frr/ripd/ripd.c:1781,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1790,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1791,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1796,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1798,1
    - Dst: connected_lookup_prefix
      Src: /src/frr/ripd/ripd.c:1807,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1810,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1812,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/ripd.c:1819,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1821,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/ripd.c:1825,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1827,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/ripd.c:1833,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1835,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:1847,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1849,1
    - Dst: rip_packet_dump
      Src: /src/frr/ripd/ripd.c:1855,1
    - Dst: rip_neighbor_lookup
      Src: /src/frr/ripd/ripd.c:1865,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1867,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1869,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1880,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1883,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:1892,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1894,1
    - Dst: ripd_notif_send_auth_type_failure
      Src: /src/frr/ripd/ripd.c:1897,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1898,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1931,1
    - Dst: ripd_notif_send_auth_type_failure
      Src: /src/frr/ripd/ripd.c:1933,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1934,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1944,1
    - Dst: ripd_notif_send_auth_type_failure
      Src: /src/frr/ripd/ripd.c:1946,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1947,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:1952,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1954,1
    - Dst: ripd_notif_send_auth_type_failure
      Src: /src/frr/ripd/ripd.c:1956,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1957,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1962,1
    - Dst: rip_auth_simple_password
      Src: /src/frr/ripd/ripd.c:1965,1
    - Dst: rip_auth_md5
      Src: /src/frr/ripd/ripd.c:1970,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1979,1
    - Dst: ntohs
      Src: /src/frr/ripd/ripd.c:1981,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1986,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:1990,1
    - Dst: ripd_notif_send_auth_failure
      Src: /src/frr/ripd/ripd.c:1992,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:1993,1
    - Dst: rip_response_process
      Src: /src/frr/ripd/ripd.c:2001,1
    - Dst: rip_request_process
      Src: /src/frr/ripd/ripd.c:2005,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:2009,1
    - Dst: lookup_msg
      Src: /src/frr/ripd/ripd.c:2011,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:2012,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:2015,1
    - Dst: lookup_msg
      Src: /src/frr/ripd/ripd.c:2016,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:2017,1
    - Dst: zlog_info
      Src: /src/frr/ripd/ripd.c:2020,1
    - Dst: rip_peer_bad_packet
      Src: /src/frr/ripd/ripd.c:2021,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 153
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 1737
    functionDepth: 3
    functionLinenumber: 1737
    functionLinenumberEnd: 2024
    functionName: rip_read
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - ripd_notif_send_auth_type_failure
    - htons
    - ripd_notif_send_auth_failure
    - rip_auth_simple_password
    - if_check_address
    - ntohs
    - zlog_warn
    - recvfrom
    - rip_event
    - lookup_msg
    - memset
    - rip_peer_bad_packet
    - zlog_debug
    - safe_strerror
    - EVENT_ARG
    - zlog_info
    - rip_request_process
    - if_lookup_address
    - rip_packet_dump
    - rip_neighbor_lookup
    - connected_lookup_prefix
    - EVENT_FD
    - rip_auth_md5
    - rip_response_process
    linkageType: ''
    returnType: void
    signature: void rip_read(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:2035,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:2036,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ripd/ripd.c:2037,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ripd/ripd.c:2038,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ripd/ripd.c:2039,1
    - Dst: stream_putl
      Src: /src/frr/ripd/ripd.c:2040,1
    - Dst: masklen2ip
      Src: /src/frr/ripd/ripd.c:2042,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:2044,1
    - Dst: stream_putw
      Src: /src/frr/ripd/ripd.c:2045,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ripd/ripd.c:2046,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ripd/ripd.c:2047,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ripd/ripd.c:2048,1
    - Dst: stream_putl
      Src: /src/frr/ripd/ripd.c:2049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 5
    argNames:
    - num
    - s
    - p
    - version
    - rinfo
    argTypes:
    - int
    - struct stream*
    - struct prefix_ipv4*
    - uint8_t
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2028
    functionDepth: 1
    functionLinenumber: 2028
    functionLinenumberEnd: 2053
    functionName: rip_write_rte
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - masklen2ip
    - stream_putw
    - stream_put_ipv4
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int rip_write_rte(int num, struct stream *s, struct prefix_ipv4 *p,\n\t\t\t
      uint8_t version, struct rip_info *rinfo)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: if_is_multicast
      Src: /src/frr/ripd/ripd.c:2397,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:2399,1
    - Dst: rip_output_process
      Src: /src/frr/ripd/ripd.c:2401,1
    - Dst: if_is_broadcast
      Src: /src/frr/ripd/ripd.c:2406,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ripd/ripd.c:2406,1
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:2409,1
    - Dst: ipv4_broadcast_addr
      Src: /src/frr/ripd/ripd.c:2417,1
    - Dst: htons
      Src: /src/frr/ripd/ripd.c:2423,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/ripd.c:2426,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/ripd/ripd.c:2427,1
    - Dst: rip_output_process
      Src: /src/frr/ripd/ripd.c:2431,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 3
    argNames:
    - ifc
    - version
    - route_type
    argTypes:
    - struct connected*
    - uint8_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2389
    functionDepth: 1
    functionLinenumber: 2389
    functionLinenumberEnd: 2434
    functionName: rip_update_interface
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - CONNECTED_PEER
    - if_is_broadcast
    - if_is_pointopoint
    - memset
    - htons
    - zlog_debug
    - ipv4_broadcast_addr
    - if_is_multicast
    - rip_output_process
    linkageType: ''
    returnType: void
    signature: "void rip_update_interface(struct connected *ifc, uint8_t version,\n\t\t\t\t
      int route_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:2772,1
    - Dst: htonl
      Src: /src/frr/ripd/ripd.c:2777,1
    - Dst: rip_send_packet
      Src: /src/frr/ripd/ripd.c:2785,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/ripd.c:2794,1
    - Dst: if
      Src: /src/frr/ripd/ripd.c:2799,1
    - Dst: rip_send_packet
      Src: /src/frr/ripd/ripd.c:2802,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - to
    - ifp
    - version
    - connected
    argTypes:
    - struct sockaddr_in*
    - struct interface*
    - uint8_t
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2808
      start: 2765
    functionDepth: 2
    functionLinenumber: 2765
    functionLinenumberEnd: 2808
    functionName: rip_request_send
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - memset
    - rip_send_packet
    - htonl
    - ALL_LIST_ELEMENTS
    - if
    linkageType: ''
    returnType: int
    signature: "int rip_request_send(struct sockaddr_in *to, struct interface *ifp,\n\t\t
      \    uint8_t version, struct connected *connected)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/ripd/ripd.c:2825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - time
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2829
      start: 2810
    functionDepth: 1
    functionLinenumber: 2810
    functionLinenumberEnd: 2829
    functionName: rip_update_jitter
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    linkageType: ''
    returnType: int
    signature: int rip_update_jitter(unsigned long time)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/ripd/ripd.c:2837,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:2840,1
    - Dst: rip_update_jitter
      Src: /src/frr/ripd/ripd.c:2841,1
    - Dst: event_add_timer
      Src: /src/frr/ripd/ripd.c:2842,1
    - Dst: event_add_event
      Src: /src/frr/ripd/ripd.c:2850,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - rip
    - event
    - sock
    argTypes:
    - struct rip*
    - enum rip_event
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2856
      start: 2831
    functionDepth: 2
    functionLinenumber: 2831
    functionLinenumberEnd: 2856
    functionName: rip_event
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 8
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    - event_add_read
    - rip_update_jitter
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void rip_event(struct rip *rip, enum rip_event event, int sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripd/ripd.c:2860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2858
    functionDepth: 0
    functionLinenumber: 2858
    functionLinenumberEnd: 2861
    functionName: rip_distance_new
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rip_distance
    signature: struct rip_distance *rip_distance_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/ripd/ripd.c:2866,1
    - Dst: XFREE
      Src: /src/frr/ripd/ripd.c:2867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rdistance
    argTypes:
    - struct rip_distance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2868
      start: 2863
    functionDepth: 0
    functionLinenumber: 2863
    functionLinenumberEnd: 2868
    functionName: rip_distance_free
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rip_distance_free(struct rip_distance *rdistance)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_distance_free
      Src: /src/frr/ripd/ripd.c:2877,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2878
      start: 2870
    functionDepth: 1
    functionLinenumber: 2870
    functionLinenumberEnd: 2878
    functionName: rip_distance_table_node_cleanup
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_distance_free
    linkageType: ''
    returnType: void
    signature: "void rip_distance_table_node_cleanup(struct route_table *table,\n\t\t\t\t\t
      \   struct route_node *node)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripd/ripd.c:2888,1
    - Dst: route_node_match
      Src: /src/frr/ripd/ripd.c:2894,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/ripd.c:2897,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/ripd.c:2900,1
    - Dst: access_list_apply
      Src: /src/frr/ripd/ripd.c:2904,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - rip
    - rinfo
    argTypes:
    - struct rip*
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2912
      start: 2881
    functionDepth: 1
    functionLinenumber: 2881
    functionLinenumberEnd: 2912
    functionName: rip_distance_apply
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - memset
    - access_list_apply
    - access_list_lookup
    - route_node_match
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t rip_distance_apply(struct rip *rip, struct rip_info *rinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/ripd.c:2921,1
    - Dst: route_top
      Src: /src/frr/ripd/ripd.c:2924,1
    - Dst: route_next
      Src: /src/frr/ripd/ripd.c:2924,1
    - Dst: vty_out
      Src: /src/frr/ripd/ripd.c:2931,1
    - Dst: snprintfrr
      Src: /src/frr/ripd/ripd.c:2934,1
    - Dst: vty_out
      Src: /src/frr/ripd/ripd.c:2935,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - vty
    - rip
    argTypes:
    - struct vty*
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2938
      start: 2914
    functionDepth: 1
    functionLinenumber: 2914
    functionLinenumberEnd: 2938
    functionName: rip_distance_show
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - route_top
    - snprintfrr
    - vty_out
    - route_next
    linkageType: ''
    returnType: void
    signature: void rip_distance_show(struct vty *vty, struct rip *rip)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ripd/ripd.c:2948,1
    - Dst: route_next
      Src: /src/frr/ripd/ripd.c:2948,1
    - Dst: listcount
      Src: /src/frr/ripd/ripd.c:2953,1
    - Dst: listgetdata
      Src: /src/frr/ripd/ripd.c:2956,1
    - Dst: listhead
      Src: /src/frr/ripd/ripd.c:2956,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/ripd.c:2957,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/ripd.c:2961,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:2965,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/ripd.c:2966,1
    - Dst: list_delete_node
      Src: /src/frr/ripd/ripd.c:2967,1
    - Dst: rip_info_free
      Src: /src/frr/ripd/ripd.c:2968,1
    - Dst: rip_zebra_ipv4_add
      Src: /src/frr/ripd/ripd.c:2972,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/ripd.c:2975,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:2978,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2980
      start: 2941
    functionDepth: 3
    functionLinenumber: 2941
    functionLinenumberEnd: 2980
    functionName: rip_ecmp_disable
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - rip_info_free
    - listcount
    - route_top
    - listhead
    - route_next
    - rip_route_rte
    - list_delete_node
    - rip_zebra_ipv4_add
    - EVENT_OFF
    - SET_FLAG
    - listgetdata
    - ALL_LIST_ELEMENTS
    - rip_event
    linkageType: ''
    returnType: void
    signature: void rip_ecmp_disable(struct rip *rip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_second
      Src: /src/frr/ripd/ripd.c:2992,1
    - Dst: gmtime_r
      Src: /src/frr/ripd/ripd.c:2993,1
    - Dst: strftime
      Src: /src/frr/ripd/ripd.c:2994,1
    - Dst: vty_out
      Src: /src/frr/ripd/ripd.c:2995,1
    - Dst: event_timer_remain_second
      Src: /src/frr/ripd/ripd.c:2997,1
    - Dst: gmtime_r
      Src: /src/frr/ripd/ripd.c:2998,1
    - Dst: strftime
      Src: /src/frr/ripd/ripd.c:2999,1
    - Dst: vty_out
      Src: /src/frr/ripd/ripd.c:3000,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - vty
    - rinfo
    argTypes:
    - struct vty*
    - struct rip_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3002
      start: 2983
    functionDepth: 1
    functionLinenumber: 2983
    functionLinenumberEnd: 3002
    functionName: rip_vty_out_uptime
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - event_timer_remain_second
    - strftime
    - vty_out
    - gmtime_r
    linkageType: ''
    returnType: void
    signature: void rip_vty_out_uptime(struct vty *vty, struct rip_info *rinfo)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - sub_type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 3004
    functionDepth: 0
    functionLinenumber: 3004
    functionLinenumberEnd: 3020
    functionName: rip_route_type_print
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rip_route_type_print(int sub_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ripd/ripd.c:3260,1
    - Dst: snprintf
      Src: /src/frr/ripd/ripd.c:3264,1
    - Dst: yang_dnode_get
      Src: /src/frr/ripd/ripd.c:3267,1
    - Dst: assert
      Src: /src/frr/ripd/ripd.c:3268,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/ripd/ripd.c:3270,1
    - Dst: config_write_distribute
      Src: /src/frr/ripd/ripd.c:3273,1
    - Dst: vty_out
      Src: /src/frr/ripd/ripd.c:3275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts:
    - condition: (dnode)
      pos:
        line_end: 3267
        line_start: 3267
        source_file: /src/frr/ripd/ripd.c
    constantsTouched: []
    func_position:
      end: 3281
      start: 3255
    functionDepth: 1
    functionLinenumber: 3255
    functionLinenumberEnd: 3281
    functionName: config_write_rip
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - config_write_distribute
    - vty_out
    - snprintf
    - yang_dnode_get
    - nb_cli_show_dnode_cmds
    - RB_FOREACH
    - assert
    linkageType: ''
    returnType: int
    signature: int config_write_rip(struct vty *vty)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/ripd/ripd.c:3305,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/ripd.c:3312,1
    - Dst: access_list_lookup
      Src: /src/frr/ripd/ripd.c:3322,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ripd/ripd.c:3332,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ripd/ripd.c:3342,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - dist
    argTypes:
    - struct distribute_ctx*
    - struct distribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3350
      start: 3294
    functionDepth: 1
    functionLinenumber: 3294
    functionLinenumberEnd: 3350
    functionName: rip_distribute_update
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - prefix_list_lookup
    - if_lookup_by_name
    linkageType: ''
    returnType: void
    signature: "void rip_distribute_update(struct distribute_ctx *ctx,\n\t\t\t\t  struct
      distribute *dist)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: distribute_lookup
      Src: /src/frr/ripd/ripd.c:3360,1
    - Dst: rip_distribute_update
      Src: /src/frr/ripd/ripd.c:3362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3363
      start: 3352
    functionDepth: 2
    functionLinenumber: 3352
    functionLinenumberEnd: 3363
    functionName: rip_distribute_update_interface
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - distribute_lookup
    - rip_distribute_update
    linkageType: ''
    returnType: void
    signature: void rip_distribute_update_interface(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ripd/ripd.c:3369,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/ripd.c:3372,1
    - Dst: rip_distribute_update_interface
      Src: /src/frr/ripd/ripd.c:3373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - notused
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3374
      start: 3367
    functionDepth: 3
    functionLinenumber: 3367
    functionLinenumberEnd: 3374
    functionName: rip_distribute_update_all
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - rip_distribute_update_interface
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void rip_distribute_update_all(struct prefix_list *notused)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rip_distribute_update_all
      Src: /src/frr/ripd/ripd.c:3378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - notused
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3379
      start: 3376
    functionDepth: 4
    functionLinenumber: 3376
    functionLinenumberEnd: 3379
    functionName: rip_distribute_update_all_wrapper
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_distribute_update_all
    linkageType: ''
    returnType: void
    signature: void rip_distribute_update_all_wrapper(struct access_list *notused)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rip_interfaces_clean
      Src: /src/frr/ripd/ripd.c:3384,1
    - Dst: rip_instance_disable
      Src: /src/frr/ripd/ripd.c:3387,1
    - Dst: stream_free
      Src: /src/frr/ripd/ripd.c:3389,1
    - Dst: free
      Src: /src/frr/ripd/ripd.c:3393,1
    - Dst: route_table_finish
      Src: /src/frr/ripd/ripd.c:3395,1
    - Dst: route_table_finish
      Src: /src/frr/ripd/ripd.c:3396,1
    - Dst: list_delete
      Src: /src/frr/ripd/ripd.c:3397,1
    - Dst: distribute_list_delete
      Src: /src/frr/ripd/ripd.c:3398,1
    - Dst: if_rmap_ctx_delete
      Src: /src/frr/ripd/ripd.c:3399,1
    - Dst: rip_clean_network
      Src: /src/frr/ripd/ripd.c:3401,1
    - Dst: rip_passive_nondefault_clean
      Src: /src/frr/ripd/ripd.c:3402,1
    - Dst: vector_free
      Src: /src/frr/ripd/ripd.c:3403,1
    - Dst: route_table_finish
      Src: /src/frr/ripd/ripd.c:3404,1
    - Dst: vector_free
      Src: /src/frr/ripd/ripd.c:3405,1
    - Dst: list_delete
      Src: /src/frr/ripd/ripd.c:3406,1
    - Dst: route_table_finish
      Src: /src/frr/ripd/ripd.c:3407,1
    - Dst: RB_REMOVE
      Src: /src/frr/ripd/ripd.c:3409,1
    - Dst: XFREE
      Src: /src/frr/ripd/ripd.c:3410,1
    - Dst: XFREE
      Src: /src/frr/ripd/ripd.c:3411,1
    - Dst: XFREE
      Src: /src/frr/ripd/ripd.c:3412,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3413
      start: 3382
    functionDepth: 1
    functionLinenumber: 3382
    functionLinenumberEnd: 3413
    functionName: rip_clean
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 1
    functionsReached:
    - vector_free
    - stream_free
    - list_delete
    - route_table_finish
    - RB_REMOVE
    - if_rmap_ctx_delete
    - rip_interfaces_clean
    - free
    - distribute_list_delete
    - rip_passive_nondefault_clean
    - rip_clean_network
    - XFREE
    - rip_instance_disable
    linkageType: ''
    returnType: void
    signature: void rip_clean(struct rip *rip)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/ripd/ripd.c:3424,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ripd/ripd.c:3426,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ripd/ripd.c:3432,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ripd/ripd.c:3441,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - if_rmap
    argTypes:
    - struct if_rmap_ctx*
    - struct if_rmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3448
      start: 3415
    functionDepth: 1
    functionLinenumber: 3415
    functionLinenumberEnd: 3448
    functionName: rip_if_rmap_update
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - route_map_lookup_by_name
    - if_lookup_by_name
    - vrf_lookup_by_name
    linkageType: ''
    returnType: void
    signature: "void rip_if_rmap_update(struct if_rmap_ctx *ctx,\n\t\t\t       struct
      if_rmap *if_rmap)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_rmap_lookup
      Src: /src/frr/ripd/ripd.c:3462,1
    - Dst: rip_if_rmap_update
      Src: /src/frr/ripd/ripd.c:3464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3465
      start: 3450
    functionDepth: 2
    functionLinenumber: 3450
    functionLinenumberEnd: 3465
    functionName: rip_if_rmap_update_interface
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_if_rmap_update
    - if_rmap_lookup
    linkageType: ''
    returnType: void
    signature: void rip_if_rmap_update_interface(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ripd/ripd.c:3471,1
    - Dst: route_map_counter_increment
      Src: /src/frr/ripd/ripd.c:3473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3477
      start: 3467
    functionDepth: 1
    functionLinenumber: 3467
    functionLinenumberEnd: 3477
    functionName: rip_routemap_update_redistribute
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - route_map_lookup_by_name
    - route_map_counter_increment
    linkageType: ''
    returnType: void
    signature: void rip_routemap_update_redistribute(struct rip *rip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ripd/ripd.c:3482,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/ripd.c:3486,1
    - Dst: rip_if_rmap_update_interface
      Src: /src/frr/ripd/ripd.c:3487,1
    - Dst: rip_routemap_update_redistribute
      Src: /src/frr/ripd/ripd.c:3491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - notused
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3492
      start: 3480
    functionDepth: 3
    functionLinenumber: 3480
    functionLinenumberEnd: 3492
    functionName: rip_routemap_update
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - rip_if_rmap_update_interface
    - rip_routemap_update_redistribute
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void rip_routemap_update(const char *notused)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/ripd.c:3503,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/ripd.c:3504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rip
    - vrf
    argTypes:
    - struct rip*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3505
      start: 3495
    functionDepth: 1
    functionLinenumber: 3495
    functionLinenumberEnd: 3505
    functionName: rip_vrf_link
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - rip_interface_sync
    linkageType: ''
    returnType: void
    signature: void rip_vrf_link(struct rip *rip, struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/ripd.c:3516,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/ripd.c:3517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rip
    - vrf
    argTypes:
    - struct rip*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3518
      start: 3508
    functionDepth: 1
    functionLinenumber: 3508
    functionLinenumberEnd: 3518
    functionName: rip_vrf_unlink
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - rip_interface_sync
    linkageType: ''
    returnType: void
    signature: void rip_vrf_unlink(struct rip *rip, struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rip_vrf_link
      Src: /src/frr/ripd/ripd.c:3524,1
    - Dst: rip_redistribute_enable
      Src: /src/frr/ripd/ripd.c:3528,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:3531,1
    - Dst: rip_event
      Src: /src/frr/ripd/ripd.c:3532,1
    - Dst: rip_zebra_vrf_register
      Src: /src/frr/ripd/ripd.c:3534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - rip
    - vrf
    - sock
    argTypes:
    - struct rip*
    - struct vrf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3535
      start: 3520
    functionDepth: 3
    functionLinenumber: 3520
    functionLinenumberEnd: 3535
    functionName: rip_instance_enable
    functionSourceFile: /src/frr/ripd/ripd.c
    functionUses: 0
    functionsReached:
    - rip_zebra_vrf_register
    - rip_vrf_link
    - rip_event
    - rip_redistribute_enable
    linkageType: ''
    returnType: void
    signature: void rip_instance_enable(struct rip *rip, struct vrf *vrf, int sock)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_debug.c:176,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_debug.c:181,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_debug.c:185,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_debug.c:187,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_debug.c:192,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 196
    functionName: config_write_debug
    functionSourceFile: /src/frr/ripd/rip_debug.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/ripd/rip_debug.c:204,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:206,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:207,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:208,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:209,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:210,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:211,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:212,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:213,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:214,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:216,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:217,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:218,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:219,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:220,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:221,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:222,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_debug.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 224
    functionName: rip_debug_init
    functionSourceFile: /src/frr/ripd/rip_debug.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void rip_debug_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ri
    argTypes:
    - struct rip_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: rip_bfd_interface_profile
    functionSourceFile: /src/frr/ripd/rip_bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rip_bfd_interface_profile(struct rip_interface *ri)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_bfd.c:43,1
    - Dst: rip_peer_delete_routes
      Src: /src/frr/ripd/rip_bfd.c:46,1
    - Dst: listnode_delete
      Src: /src/frr/ripd/rip_bfd.c:47,1
    - Dst: rip_peer_free
      Src: /src/frr/ripd/rip_bfd.c:48,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_bfd.c:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - bsp
    - bss
    - arg
    argTypes:
    - struct bfd_session_params*
    - struct bfd_session_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 57
    functionName: rip_bfd_session_change
    functionSourceFile: /src/frr/ripd/rip_bfd.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - zlog_debug
    - rip_peer_delete_routes
    - rip_peer_free
    linkageType: ''
    returnType: void
    signature: "void rip_bfd_session_change(struct bfd_session_params *bsp,\n\t\t\t\t
      \  const struct bfd_session_status *bss,\n\t\t\t\t   void *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_free
      Src: /src/frr/ripd/rip_bfd.c:65,1
    - Dst: bfd_sess_new
      Src: /src/frr/ripd/rip_bfd.c:71,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/ripd/rip_bfd.c:72,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/ripd/rip_bfd.c:73,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/ripd/rip_bfd.c:74,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/ripd/rip_bfd.c:78,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/ripd/rip_bfd.c:80,1
    - Dst: rip_bfd_interface_profile
      Src: /src/frr/ripd/rip_bfd.c:80,1
    - Dst: bfd_sess_install
      Src: /src/frr/ripd/rip_bfd.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - rp
    argTypes:
    - struct rip_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 83
    functionName: rip_bfd_session_update
    functionSourceFile: /src/frr/ripd/rip_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_sess_set_profile
    - bfd_sess_new
    - bfd_sess_install
    - bfd_sess_set_ipv4_addrs
    - bfd_sess_free
    - bfd_sess_set_timers
    - rip_bfd_interface_profile
    - bfd_sess_set_interface
    - bfd_sess_set_vrf
    linkageType: ''
    returnType: void
    signature: void rip_bfd_session_update(struct rip_peer *rp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_bfd.c:95,1
    - Dst: rip_bfd_session_update
      Src: /src/frr/ripd/rip_bfd.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ri
    argTypes:
    - struct rip_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 101
    functionName: rip_bfd_interface_update
    functionSourceFile: /src/frr/ripd/rip_bfd.c
    functionUses: 5
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - rip_bfd_session_update
    linkageType: ''
    returnType: void
    signature: void rip_bfd_interface_update(struct rip_interface *ri)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/rip_bfd.c:107,1
    - Dst: rip_bfd_interface_update
      Src: /src/frr/ripd/rip_bfd.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: rip_bfd_instance_update
    functionSourceFile: /src/frr/ripd/rip_bfd.c
    functionUses: 2
    functionsReached:
    - FOR_ALL_INTERFACES
    - rip_bfd_interface_update
    linkageType: ''
    returnType: void
    signature: void rip_bfd_instance_update(struct rip *rip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_init
      Src: /src/frr/ripd/rip_bfd.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: rip_bfd_init
    functionSourceFile: /src/frr/ripd/rip_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_protocol_integration_init
    linkageType: ''
    returnType: void
    signature: void rip_bfd_init(struct event_loop *tm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_nb_rpcs.c:32,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_nb_rpcs.c:35,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_nb_rpcs.c:35,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_nb_rpcs.c:44,1
    - Dst: rip_route_rte
      Src: /src/frr/ripd/rip_nb_rpcs.c:45,1
    - Dst: if
      Src: /src/frr/ripd/rip_nb_rpcs.c:48,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripd/rip_nb_rpcs.c:48,1
    - Dst: rip_zebra_ipv4_delete
      Src: /src/frr/ripd/rip_nb_rpcs.c:49,1
    - Dst: break
      Src: /src/frr/ripd/rip_nb_rpcs.c:50,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_nb_rpcs.c:54,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_nb_rpcs.c:55,1
    - Dst: listnode_delete
      Src: /src/frr/ripd/rip_nb_rpcs.c:56,1
    - Dst: rip_info_free
      Src: /src/frr/ripd/rip_nb_rpcs.c:57,1
    - Dst: list_isempty
      Src: /src/frr/ripd/rip_nb_rpcs.c:60,1
    - Dst: list_delete
      Src: /src/frr/ripd/rip_nb_rpcs.c:61,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_nb_rpcs.c:63,1
    - Dst: clear_rip_route_rpc
      Src: /src/frr/ripd/rip_nb_rpcs.c:68,1
    - Dst: yang_data_list_find
      Src: /src/frr/ripd/rip_nb_rpcs.c:73,1
    - Dst: rip_lookup_by_vrf_name
      Src: /src/frr/ripd/rip_nb_rpcs.c:76,1
    - Dst: clear_rip_route
      Src: /src/frr/ripd/rip_nb_rpcs.c:78,1
    - Dst: RB_FOREACH
      Src: /src/frr/ripd/rip_nb_rpcs.c:82,1
    - Dst: clear_rip_route
      Src: /src/frr/ripd/rip_nb_rpcs.c:87,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 92
    functionName: clear_rip_route
    functionSourceFile: /src/frr/ripd/rip_nb_rpcs.c
    functionUses: 1
    functionsReached:
    - list_delete
    - clear_rip_route_rpc
    - route_top
    - clear_rip_route
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - if
    - rip_lookup_by_vrf_name
    - break
    - route_unlock_node
    - yang_data_list_find
    - route_next
    - rip_route_rte
    - EVENT_OFF
    - listnode_delete
    - rip_info_free
    - CHECK_FLAG
    - list_isempty
    - RB_FOREACH
    - rip_zebra_ipv4_delete
    linkageType: ''
    returnType: void
    signature: void clear_rip_route(struct rip *rip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/ripd/rip_nb_state.c:32,1
    - Dst: RB_NEXT
      Src: /src/frr/ripd/rip_nb_state.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 37
    functionName: ripd_instance_get_next
    functionSourceFile: /src/frr/ripd/rip_nb_state.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    - RB_NEXT
    linkageType: ''
    returnType: void
    signature: void *ripd_instance_get_next(struct nb_cb_get_next_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ripd/rip_nb_state.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: ripd_instance_get_keys
    functionSourceFile: /src/frr/ripd/rip_nb_state.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: int
    signature: int ripd_instance_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rip_lookup_by_vrf_name
      Src: /src/frr/ripd/rip_nb_state.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: ripd_instance_lookup_entry
    functionSourceFile: /src/frr/ripd/rip_nb_state.c
    functionUses: 0
    functionsReached:
    - rip_lookup_by_vrf_name
    linkageType: ''
    returnType: void
    signature: void *ripd_instance_lookup_entry(struct nb_cb_lookup_entry_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/ripd/rip_nb_state.c:66,1
    - Dst: listnextnode
      Src: /src/frr/ripd/rip_nb_state.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 71
    functionName: ripd_instance_state_neighbors_neighbor_get_next
    functionSourceFile: /src/frr/ripd/rip_nb_state.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - listhead
    linkageType: ''
    returnType: void
    signature: "void *ripd_instance_state_neighbors_neighbor_get_next(\n\tstruct nb_cb_get_next_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/ripd/rip_nb_state.c:77,1
    - Dst: inet_ntop
      Src: /src/frr/ripd/rip_nb_state.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 84
    functionName: ripd_instance_state_neighbors_neighbor_get_keys
    functionSourceFile: /src/frr/ripd/rip_nb_state.c
    functionUses: 0
    functionsReached:
    - listgetdata
    - inet_ntop
    linkageType: ''
    returnType: int
    signature: "int ripd_instance_state_neighbors_neighbor_get_keys(\n\tstruct nb_cb_get_keys_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_str2ipv4
      Src: /src/frr/ripd/rip_nb_state.c:94,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_nb_state.c:96,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ripd/rip_nb_state.c:97,1
    - Dst: yang_data_new_ipv4
      Src: /src/frr/ripd/rip_nb_state.c:386,1
    - Dst: assert
      Src: /src/frr/ripd/rip_nb_state.c:394,1
    - Dst: ripd_instance_state_routes_route_interface_get_elem
      Src: /src/frr/ripd/rip_nb_state.c:400,1
    - Dst: listnode_head
      Src: /src/frr/ripd/rip_nb_state.c:404,1
    - Dst: rip_info_get_instance
      Src: /src/frr/ripd/rip_nb_state.c:405,1
    - Dst: yang_data_new_string
      Src: /src/frr/ripd/rip_nb_state.c:410,1
    - Dst: ifindex2ifname
      Src: /src/frr/ripd/rip_nb_state.c:412,1
    - Dst: assert
      Src: /src/frr/ripd/rip_nb_state.c:420,1
    - Dst: listnode_head
      Src: /src/frr/ripd/rip_nb_state.c:430,1
    - Dst: yang_data_new_uint8
      Src: /src/frr/ripd/rip_nb_state.c:432,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts:
    - condition: (!"Reached end of function where we do not expect to reach")
      pos:
        line_end: 393
        line_start: 393
        source_file: /src/frr/ripd/rip_nb_state.c
    - condition: (!"Reached end of function where we do not expect to reach")
      pos:
        line_end: 419
        line_start: 419
        source_file: /src/frr/ripd/rip_nb_state.c
    constantsTouched: []
    func_position:
      end: 433
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 433
    functionName: ripd_instance_state_neighbors_neighbor_lookup_entry
    functionSourceFile: /src/frr/ripd/rip_nb_state.c
    functionUses: 0
    functionsReached:
    - ifindex2ifname
    - ripd_instance_state_routes_route_interface_get_elem
    - ALL_LIST_ELEMENTS_RO
    - rip_info_get_instance
    - yang_str2ipv4
    - IPV4_ADDR_SAME
    - listnode_head
    - yang_data_new_uint8
    - yang_data_new_string
    - yang_data_new_ipv4
    - assert
    linkageType: ''
    returnType: void
    signature: "void *ripd_instance_state_neighbors_neighbor_lookup_entry(\n\tstruct
      nb_cb_lookup_entry_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:76,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:78,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:79,1
    - Dst: strmatch
      Src: /src/frr/ripd/rip_cli.c:80,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:81,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: cli_show_router_rip
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_router_rip(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripd/rip_cli.c:124,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:127,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 130
    functionName: cli_show_rip_allow_ecmp
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_allow_ecmp(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_cli.c:152,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:153,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: cli_show_rip_default_information_originate
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_default_information_originate(struct vty *vty,\n\t\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:188,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 190
    functionName: cli_show_rip_default_metric
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_default_metric(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_is_default
      Src: /src/frr/ripd/rip_cli.c:222,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:223,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:225,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 227
    functionName: cli_show_rip_distance
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_distance(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:257,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:258,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:259,1
    - Dst: yang_dnode_exists
      Src: /src/frr/ripd/rip_cli.c:260,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:261,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:262,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 264
    functionName: cli_show_rip_distance_source
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - yang_dnode_exists
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_distance_source(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:285,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: cli_show_rip_neighbor
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_neighbor(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:307,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 308
    functionName: cli_show_rip_network_prefix
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_network_prefix(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:330,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: cli_show_rip_network_interface
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_network_interface(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:365,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:367,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:368,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:369,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:370,1
    - Dst: strmatch
      Src: /src/frr/ripd/rip_cli.c:371,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:372,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 374
    functionName: cli_show_rip_offset_list
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_offset_list(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_cli.c:395,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:396,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 399
    functionName: cli_show_rip_passive_default
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_passive_default(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:433,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 435
    functionName: cli_show_rip_passive_interface
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_passive_interface(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:441,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 443
    functionName: cli_show_rip_non_passive_interface
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_non_passive_interface(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:477,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:478,1
    - Dst: yang_dnode_exists
      Src: /src/frr/ripd/rip_cli.c:479,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:480,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:481,1
    - Dst: yang_dnode_exists
      Src: /src/frr/ripd/rip_cli.c:482,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:483,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:484,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 486
    functionName: cli_show_rip_redistribute
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - yang_dnode_exists
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_redistribute(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t       bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:507,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 508
    functionName: cli_show_rip_route
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_route(struct vty *vty, const struct lyd_node *dnode,\n\t\t\tbool
      show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:552,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:553,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:554,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 556
    functionName: cli_show_rip_timers
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_timers(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_cli.c:594,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:596,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:599,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:602,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 605
    functionName: cli_show_rip_version
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_rip_version(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:639,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 641
    functionName: cli_show_ripd_instance_default_bfd_profile
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripd_instance_default_bfd_profile(struct vty *vty,\n\t\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\t\tbool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_cli.c:675,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:678,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:681,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:684,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 687
    functionName: cli_show_ip_rip_split_horizon
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_split_horizon(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripd/rip_cli.c:709,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:710,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 713
    functionName: cli_show_ip_rip_v2_broadcast
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_v2_broadcast(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_cli.c:766,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:768,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:771,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:774,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:777,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:780,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 783
    functionName: cli_show_ip_rip_receive_version
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_receive_version(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_cli.c:835,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:837,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:840,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:843,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:846,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:849,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 832
    functionDepth: 1
    functionLinenumber: 832
    functionLinenumberEnd: 852
    functionName: cli_show_ip_rip_send_version
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_send_version(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_cli.c:915,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:917,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:920,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:923,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/ripd/rip_cli.c:925,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripd/rip_cli.c:926,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:928,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:930,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:932,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 911
    functionDepth: 1
    functionLinenumber: 911
    functionLinenumberEnd: 935
    functionName: cli_show_ip_rip_authentication_scheme
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_authentication_scheme(struct vty *vty,\n\t\t\t\t\t
      \  const struct lyd_node *dnode,\n\t\t\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:988,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 984
    functionDepth: 1
    functionLinenumber: 984
    functionLinenumberEnd: 990
    functionName: cli_show_ip_rip_authentication_string
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_authentication_string(struct vty *vty,\n\t\t\t\t\t
      \  const struct lyd_node *dnode,\n\t\t\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:1037,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1039
    functionName: cli_show_ip_rip_authentication_key_chain
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_authentication_key_chain(struct vty *vty,\n\t\t\t\t\t
      \     const struct lyd_node *dnode,\n\t\t\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1059
    functionName: cli_show_ip_rip_bfd_enable
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_bfd_enable(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripd/rip_cli.c:1097,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripd/rip_cli.c:1098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1099
    functionName: cli_show_ip_rip_bfd_profile
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_rip_bfd_profile(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1175,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1176,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1178,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1179,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1181,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1182,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1183,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1184,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1185,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1186,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1187,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1188,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1189,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1190,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1191,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1192,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1193,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1194,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1195,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1196,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1197,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1198,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1199,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1200,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1201,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1202,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1204,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1205,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1206,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1207,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1208,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1209,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1210,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1211,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1212,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1213,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1214,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1215,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1217,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1218,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1219,1
    - Dst: install_element
      Src: /src/frr/ripd/rip_cli.c:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1222
    functionName: rip_cli_init
    functionSourceFile: /src/frr/ripd/rip_cli.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void rip_cli_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ripd/rip_interface.c:57,1
    - Dst: zlog_info
      Src: /src/frr/ripd/rip_interface.c:61,1
    - Dst: safe_strerror
      Src: /src/frr/ripd/rip_interface.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - sock
    - group
    - ifa
    - ifindex
    argTypes:
    - int
    - struct in_addr
    - struct in_addr
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: ipv4_multicast_join
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - safe_strerror
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int ipv4_multicast_join(int sock, struct in_addr group,\n\t\t\t       struct
      in_addr ifa, ifindex_t ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ripd/rip_interface.c:73,1
    - Dst: zlog_info
      Src: /src/frr/ripd/rip_interface.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - sock
    - group
    - ifa
    - ifindex
    argTypes:
    - int
    - struct in_addr
    - struct in_addr
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: ipv4_multicast_leave
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int ipv4_multicast_leave(int sock, struct in_addr group,\n\t\t\t\tstruct
      in_addr ifa, ifindex_t ifindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripd/rip_interface.c:89,1
    - Dst: rip_interface_reset
      Src: /src/frr/ripd/rip_interface.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 94
    functionName: rip_interface_new
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - rip_interface_reset
    - XCALLOC
    linkageType: ''
    returnType: struct rip_interface
    signature: struct rip_interface *rip_interface_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripd/rip_interface.c:100,1
    - Dst: CONNECTED_ID
      Src: /src/frr/ripd/rip_interface.c:102,1
    - Dst: setsockopt_ipv4_multicast_if
      Src: /src/frr/ripd/rip_interface.c:104,1
    - Dst: zlog_warn
      Src: /src/frr/ripd/rip_interface.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - sock
    - connected
    argTypes:
    - int
    - struct connected*
    assertStmts:
    - condition: (connected != NULL)
      pos:
        line_end: 99
        line_start: 99
        source_file: /src/frr/ripd/rip_interface.c
    constantsTouched: []
    func_position:
      end: 112
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 112
    functionName: rip_interface_multicast_set
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - CONNECTED_ID
    - zlog_warn
    - setsockopt_ipv4_multicast_if
    - assert
    linkageType: ''
    returnType: void
    signature: void rip_interface_multicast_set(int sock, struct connected *connected)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_is_multicast
      Src: /src/frr/ripd/rip_interface.c:120,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:123,1
    - Dst: rip_request_send
      Src: /src/frr/ripd/rip_interface.c:125,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ripd/rip_interface.c:130,1
    - Dst: if_is_broadcast
      Src: /src/frr/ripd/rip_interface.c:130,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:135,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:137,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:142,1
    - Dst: htons
      Src: /src/frr/ripd/rip_interface.c:143,1
    - Dst: ipv4_broadcast_addr
      Src: /src/frr/ripd/rip_interface.c:152,1
    - Dst: rip_request_send
      Src: /src/frr/ripd/rip_interface.c:164,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ifp
    - version
    argTypes:
    - struct interface*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 166
    functionName: rip_request_interface_send
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - if_is_pointopoint
    - if_is_broadcast
    - memset
    - htons
    - zlog_debug
    - ipv4_broadcast_addr
    - ALL_LIST_ELEMENTS
    - if_is_multicast
    - rip_request_send
    linkageType: ''
    returnType: void
    signature: void rip_request_interface_send(struct interface *ifp, uint8_t version)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ripd/rip_interface.c:177,1
    - Dst: if_is_operative
      Src: /src/frr/ripd/rip_interface.c:181,1
    - Dst: rip_request_interface_send
      Src: /src/frr/ripd/rip_interface.c:192,1
    - Dst: rip_request_interface_send
      Src: /src/frr/ripd/rip_interface.c:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 195
    functionName: rip_request_interface
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - rip_request_interface_send
    - if_is_loopback
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void rip_request_interface(struct interface *ifp)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/ripd/rip_interface.c:203,1
    - Dst: if_is_multicast
      Src: /src/frr/ripd/rip_interface.c:203,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:205,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_interface.c:207,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:213,1
    - Dst: htonl
      Src: /src/frr/ripd/rip_interface.c:216,1
    - Dst: ipv4_multicast_join
      Src: /src/frr/ripd/rip_interface.c:217,1
    - Dst: rip_multicast_leave
      Src: /src/frr/ripd/rip_interface.c:229,1
    - Dst: if_is_up
      Src: /src/frr/ripd/rip_interface.c:234,1
    - Dst: if_is_multicast
      Src: /src/frr/ripd/rip_interface.c:234,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:236,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_interface.c:238,1
    - Dst: htonl
      Src: /src/frr/ripd/rip_interface.c:247,1
    - Dst: ipv4_multicast_leave
      Src: /src/frr/ripd/rip_interface.c:248,1
    - Dst: rip_if_ipv4_address_check
      Src: /src/frr/ripd/rip_interface.c:257,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_interface.c:263,1
    - Dst: if_check_address
      Src: /src/frr/ripd/rip_interface.c:277,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/rip_interface.c:281,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_interface.c:285,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ripd/rip_interface.c:293,1
    - Dst: rip_ifp_down
      Src: /src/frr/ripd/rip_interface.c:301,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/rip_interface.c:303,1
    - Dst: rip_if_down
      Src: /src/frr/ripd/rip_interface.c:304,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:307,1
    - Dst: rip_ifp_up
      Src: /src/frr/ripd/rip_interface.c:317,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:320,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/rip_interface.c:326,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:329,1
    - Dst: rip_passive_interface_apply
      Src: /src/frr/ripd/rip_interface.c:332,1
    - Dst: rip_distribute_update_interface
      Src: /src/frr/ripd/rip_interface.c:335,1
    - Dst: rip_ifp_create
      Src: /src/frr/ripd/rip_interface.c:341,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/rip_interface.c:343,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:346,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:353,1
    - Dst: rip_passive_interface_apply
      Src: /src/frr/ripd/rip_interface.c:356,1
    - Dst: rip_distribute_update_interface
      Src: /src/frr/ripd/rip_interface.c:359,1
    - Dst: rip_if_rmap_update_interface
      Src: /src/frr/ripd/rip_interface.c:364,1
    - Dst: rip_ifp_destroy
      Src: /src/frr/ripd/rip_interface.c:369,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/rip_interface.c:371,1
    - Dst: if_is_up
      Src: /src/frr/ripd/rip_interface.c:372,1
    - Dst: rip_if_down
      Src: /src/frr/ripd/rip_interface.c:373,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:377,1
    - Dst: rip_interface_vrf_update
      Src: /src/frr/ripd/rip_interface.c:387,1
    - Dst: zebra_interface_vrf_update_read
      Src: /src/frr/ripd/rip_interface.c:392,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ripd/rip_interface.c:398,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:400,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/ripd/rip_interface.c:401,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/ripd/rip_interface.c:405,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/rip_interface.c:406,1
    - Dst: rip_interface_clean
      Src: /src/frr/ripd/rip_interface.c:411,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_interface.c:417,1
    - Dst: rip_interfaces_clean
      Src: /src/frr/ripd/rip_interface.c:420,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/rip_interface.c:424,1
    - Dst: rip_interface_clean
      Src: /src/frr/ripd/rip_interface.c:425,1
    - Dst: rip_interface_reset
      Src: /src/frr/ripd/rip_interface.c:428,1
    - Dst: yang_get_default_enum
      Src: /src/frr/ripd/rip_interface.c:430,1
    - Dst: yang_get_default_enum
      Src: /src/frr/ripd/rip_interface.c:432,1
    - Dst: yang_get_default_enum
      Src: /src/frr/ripd/rip_interface.c:440,1
    - Dst: yang_get_default_enum
      Src: /src/frr/ripd/rip_interface.c:442,1
    - Dst: yang_get_default_enum
      Src: /src/frr/ripd/rip_interface.c:443,1
    - Dst: yang_get_default_bool
      Src: /src/frr/ripd/rip_interface.c:444,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:448,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:461,1
    - Dst: rip_interface_clean
      Src: /src/frr/ripd/rip_interface.c:463,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_interface.c:477,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:481,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:481,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:483,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/rip_interface.c:486,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:490,1
    - Dst: rip_multicast_leave
      Src: /src/frr/ripd/rip_interface.c:493,1
    - Dst: rip_apply_address_add
      Src: /src/frr/ripd/rip_interface.c:502,1
    - Dst: if_is_up
      Src: /src/frr/ripd/rip_interface.c:513,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:518,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:519,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_interface.c:524,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:531,1
    - Dst: rip_enable_network_lookup2
      Src: /src/frr/ripd/rip_interface.c:532,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:533,1
    - Dst: rip_interface_address_add
      Src: /src/frr/ripd/rip_interface.c:538,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ripd/rip_interface.c:543,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:553,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:555,1
    - Dst: rip_apply_address_add
      Src: /src/frr/ripd/rip_interface.c:557,1
    - Dst: hook_call
      Src: /src/frr/ripd/rip_interface.c:559,1
    - Dst: rip_apply_address_del
      Src: /src/frr/ripd/rip_interface.c:565,1
    - Dst: if_is_up
      Src: /src/frr/ripd/rip_interface.c:575,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:580,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_interface.c:584,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_interface.c:586,1
    - Dst: rip_interface_address_delete
      Src: /src/frr/ripd/rip_interface.c:590,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ripd/rip_interface.c:595,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:602,1
    - Dst: hook_call
      Src: /src/frr/ripd/rip_interface.c:605,1
    - Dst: rip_apply_address_del
      Src: /src/frr/ripd/rip_interface.c:608,1
    - Dst: connected_free
      Src: /src/frr/ripd/rip_interface.c:611,1
    - Dst: rip_enable_network_lookup_if
      Src: /src/frr/ripd/rip_interface.c:620,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:631,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:637,1
    - Dst: route_node_match
      Src: /src/frr/ripd/rip_interface.c:642,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:645,1
    - Dst: rip_enable_network_lookup2
      Src: /src/frr/ripd/rip_interface.c:654,1
    - Dst: route_node_match
      Src: /src/frr/ripd/rip_interface.c:672,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:676,1
    - Dst: rip_enable_network_add
      Src: /src/frr/ripd/rip_interface.c:684,1
    - Dst: route_node_get
      Src: /src/frr/ripd/rip_interface.c:688,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:691,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:697,1
    - Dst: rip_enable_network_delete
      Src: /src/frr/ripd/rip_interface.c:703,1
    - Dst: route_node_lookup
      Src: /src/frr/ripd/rip_interface.c:707,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:712,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:715,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:718,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:727,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:735,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:736,1
    - Dst: strcmp
      Src: /src/frr/ripd/rip_interface.c:737,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:747,1
    - Dst: vector_set
      Src: /src/frr/ripd/rip_interface.c:751,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_interface.c:752,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:754,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:765,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:769,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:770,1
    - Dst: vector_unset
      Src: /src/frr/ripd/rip_interface.c:771,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:773,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripd/rip_interface.c:785,1
    - Dst: rip_multicast_join
      Src: /src/frr/ripd/rip_interface.c:790,1
    - Dst: flog_err_sys
      Src: /src/frr/ripd/rip_interface.c:791,1
    - Dst: rip_request_interface
      Src: /src/frr/ripd/rip_interface.c:801,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:813,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:815,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:819,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_interface.c:825,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:832,1
    - Dst: rip_enable_network_lookup2
      Src: /src/frr/ripd/rip_interface.c:834,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:835,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_interface.c:839,1
    - Dst: rip_redistribute_check
      Src: /src/frr/ripd/rip_interface.c:842,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:843,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:851,1
    - Dst: if_is_operative
      Src: /src/frr/ripd/rip_interface.c:857,1
    - Dst: rip_enable_network_lookup_if
      Src: /src/frr/ripd/rip_interface.c:863,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:872,1
    - Dst: rip_if_ipv4_address_check
      Src: /src/frr/ripd/rip_interface.c:879,1
    - Dst: rip_if_down
      Src: /src/frr/ripd/rip_interface.c:898,1
    - Dst: rip_connect_set
      Src: /src/frr/ripd/rip_interface.c:900,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/rip_interface.c:910,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:911,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:919,1
    - Dst: route_node_lookup
      Src: /src/frr/ripd/rip_interface.c:924,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:926,1
    - Dst: route_node_get
      Src: /src/frr/ripd/rip_interface.c:937,1
    - Dst: route_node_lookup
      Src: /src/frr/ripd/rip_interface.c:953,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:960,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:963,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:976,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:976,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:979,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:983,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:984,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:985,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:986,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:996,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:997,1
    - Dst: strcmp
      Src: /src/frr/ripd/rip_interface.c:998,1
    - Dst: rip_passive_nondefault_lookup
      Src: /src/frr/ripd/rip_interface.c:1013,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:1018,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/rip_interface.c:1026,1
    - Dst: rip_passive_interface_apply
      Src: /src/frr/ripd/rip_interface.c:1027,1
    - Dst: rip_passive_nondefault_lookup
      Src: /src/frr/ripd/rip_interface.c:1033,1
    - Dst: vector_set
      Src: /src/frr/ripd/rip_interface.c:1040,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_interface.c:1041,1
    - Dst: rip_passive_interface_apply_all
      Src: /src/frr/ripd/rip_interface.c:1043,1
    - Dst: rip_passive_nondefault_lookup
      Src: /src/frr/ripd/rip_interface.c:1053,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1061,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:1062,1
    - Dst: vector_unset
      Src: /src/frr/ripd/rip_interface.c:1063,1
    - Dst: rip_passive_interface_apply_all
      Src: /src/frr/ripd/rip_interface.c:1065,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:1076,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1077,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:1078,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1079,1
    - Dst: rip_passive_interface_apply_all
      Src: /src/frr/ripd/rip_interface.c:1081,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:1091,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:1092,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_interface.c:1094,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:1097,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1098,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_interface.c:1099,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:1102,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:1102,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_interface.c:1104,1
    - Dst: rip_interface_new
      Src: /src/frr/ripd/rip_interface.c:1123,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/rip_interface.c:1124,1
    - Dst: rip_interface_reset
      Src: /src/frr/ripd/rip_interface.c:1132,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:1133,1
    - Dst: hook_register_prio
      Src: /src/frr/ripd/rip_interface.c:1141,1
    - Dst: hook_register_prio
      Src: /src/frr/ripd/rip_interface.c:1142,1
    - Dst: if_cmd_init_default
      Src: /src/frr/ripd/rip_interface.c:1145,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/ripd/rip_interface.c:1146,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 175
    argCount: 2
    argNames:
    - ifp
    - sock
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 198
    functionDepth: 5
    functionLinenumber: 198
    functionLinenumberEnd: 1148
    functionName: rip_multicast_join
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - rip_if_rmap_update_interface
    - route_top
    - yang_get_default_enum
    - rip_if_down
    - memset
    - yang_get_default_bool
    - vector_set
    - if
    - if_is_up
    - if_update_to_new_vrf
    - route_unlock_node
    - EVENT_OFF
    - rip_passive_nondefault_lookup
    - rip_apply_address_add
    - if_zapi_callbacks
    - rip_interface_address_delete
    - rip_request_interface
    - rip_enable_if_lookup
    - rip_passive_interface_apply
    - rip_multicast_join
    - ALL_LIST_ELEMENTS
    - rip_redistribute_add
    - rip_enable_apply
    - if_cmd_init_default
    - if_check_address
    - route_node_lookup
    - vector_unset
    - rip_ecmp_delete
    - route_node_match
    - rip_apply_address_del
    - rip_ifp_create
    - vector_active
    - rip_interface_clean
    - rip_passive_interface_apply_all
    - strcmp
    - rip_if_ipv4_address_check
    - VRF_LOGNAME
    - rip_enable_apply_all
    - if_is_operative
    - apply_mask_ipv4
    - rip_enable_network_delete
    - ipv4_multicast_leave
    - hook_register_prio
    - rip_interfaces_clean
    - rip_ifp_down
    - FOR_ALL_INTERFACES
    - rip_ifp_up
    - zlog_debug
    - vrf_lookup_by_id
    - rip_connect_set
    - rip_interface_sync
    - vty_out
    - route_next
    - rip_distribute_update_interface
    - XFREE
    - rip_enable_network_lookup_if
    - IPV4_ADDR_CMP
    - rip_enable_network_lookup2
    - zebra_interface_vrf_update_read
    - rip_redistribute_delete
    - route_node_get
    - rip_enable_network_add
    - vector_slot
    - connected_free
    - htonl
    - rip_interface_vrf_update
    - hook_call
    - rip_ifp_destroy
    - ALL_LIST_ELEMENTS_RO
    - rip_multicast_leave
    - rip_interface_address_add
    - EVENT_ARG
    - rip_redistribute_check
    - if_is_multicast
    - flog_err_sys
    - zebra_interface_address_read
    - rip_interface_reset
    - ipv4_multicast_join
    - XSTRDUP
    - rip_interface_new
    linkageType: ''
    returnType: int
    signature: int rip_multicast_join(struct interface *ifp, int sock)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ripd/rip_interface.c:477,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:481,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:481,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:483,1
    - Dst: rip_ecmp_delete
      Src: /src/frr/ripd/rip_interface.c:486,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:490,1
    - Dst: rip_multicast_leave
      Src: /src/frr/ripd/rip_interface.c:493,1
    - Dst: rip_apply_address_add
      Src: /src/frr/ripd/rip_interface.c:502,1
    - Dst: if_is_up
      Src: /src/frr/ripd/rip_interface.c:513,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:518,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:519,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_interface.c:524,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:531,1
    - Dst: rip_enable_network_lookup2
      Src: /src/frr/ripd/rip_interface.c:532,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:533,1
    - Dst: rip_interface_address_add
      Src: /src/frr/ripd/rip_interface.c:538,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ripd/rip_interface.c:543,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:553,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:555,1
    - Dst: rip_apply_address_add
      Src: /src/frr/ripd/rip_interface.c:557,1
    - Dst: hook_call
      Src: /src/frr/ripd/rip_interface.c:559,1
    - Dst: rip_apply_address_del
      Src: /src/frr/ripd/rip_interface.c:565,1
    - Dst: if_is_up
      Src: /src/frr/ripd/rip_interface.c:575,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:580,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_interface.c:584,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_interface.c:586,1
    - Dst: rip_interface_address_delete
      Src: /src/frr/ripd/rip_interface.c:590,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ripd/rip_interface.c:595,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:602,1
    - Dst: hook_call
      Src: /src/frr/ripd/rip_interface.c:605,1
    - Dst: rip_apply_address_del
      Src: /src/frr/ripd/rip_interface.c:608,1
    - Dst: connected_free
      Src: /src/frr/ripd/rip_interface.c:611,1
    - Dst: rip_enable_network_lookup_if
      Src: /src/frr/ripd/rip_interface.c:620,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:631,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:637,1
    - Dst: route_node_match
      Src: /src/frr/ripd/rip_interface.c:642,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:645,1
    - Dst: rip_enable_network_lookup2
      Src: /src/frr/ripd/rip_interface.c:654,1
    - Dst: route_node_match
      Src: /src/frr/ripd/rip_interface.c:672,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:676,1
    - Dst: rip_enable_network_add
      Src: /src/frr/ripd/rip_interface.c:684,1
    - Dst: route_node_get
      Src: /src/frr/ripd/rip_interface.c:688,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:691,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:697,1
    - Dst: rip_enable_network_delete
      Src: /src/frr/ripd/rip_interface.c:703,1
    - Dst: route_node_lookup
      Src: /src/frr/ripd/rip_interface.c:707,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:712,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:715,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:718,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:727,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:735,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:736,1
    - Dst: strcmp
      Src: /src/frr/ripd/rip_interface.c:737,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:747,1
    - Dst: vector_set
      Src: /src/frr/ripd/rip_interface.c:751,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_interface.c:752,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:754,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:765,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:769,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:770,1
    - Dst: vector_unset
      Src: /src/frr/ripd/rip_interface.c:771,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:773,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripd/rip_interface.c:785,1
    - Dst: rip_multicast_join
      Src: /src/frr/ripd/rip_interface.c:790,1
    - Dst: flog_err_sys
      Src: /src/frr/ripd/rip_interface.c:791,1
    - Dst: rip_request_interface
      Src: /src/frr/ripd/rip_interface.c:801,1
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:813,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:815,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:819,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_interface.c:825,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:832,1
    - Dst: rip_enable_network_lookup2
      Src: /src/frr/ripd/rip_interface.c:834,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:835,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_interface.c:839,1
    - Dst: rip_redistribute_check
      Src: /src/frr/ripd/rip_interface.c:842,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:843,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:851,1
    - Dst: if_is_operative
      Src: /src/frr/ripd/rip_interface.c:857,1
    - Dst: rip_enable_network_lookup_if
      Src: /src/frr/ripd/rip_interface.c:863,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:872,1
    - Dst: rip_if_ipv4_address_check
      Src: /src/frr/ripd/rip_interface.c:879,1
    - Dst: rip_if_down
      Src: /src/frr/ripd/rip_interface.c:898,1
    - Dst: rip_connect_set
      Src: /src/frr/ripd/rip_interface.c:900,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 466
    functionDepth: 6
    functionLinenumber: 466
    functionLinenumberEnd: 902
    functionName: rip_if_down
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 2
    functionsReached:
    - rip_redistribute_add
    - apply_mask_ipv4
    - rip_multicast_join
    - rip_enable_network_add
    - rip_enable_apply
    - route_top
    - vector_slot
    - connected_free
    - rip_enable_network_delete
    - route_node_lookup
    - rip_if_down
    - memset
    - hook_call
    - rip_multicast_leave
    - rip_ecmp_delete
    - vector_unset
    - zlog_debug
    - vector_set
    - rip_interface_address_add
    - EVENT_ARG
    - if
    - route_node_match
    - flog_err_sys
    - rip_redistribute_check
    - rip_connect_set
    - if_is_up
    - route_unlock_node
    - rip_apply_address_del
    - zebra_interface_address_read
    - vector_active
    - route_next
    - EVENT_OFF
    - rip_enable_network_lookup_if
    - XFREE
    - rip_enable_network_lookup2
    - XSTRDUP
    - rip_apply_address_add
    - rip_interface_address_delete
    - rip_request_interface
    - rip_redistribute_delete
    - strcmp
    - rip_if_ipv4_address_check
    - route_node_get
    - rip_enable_apply_all
    - rip_enable_if_lookup
    - ALL_LIST_ELEMENTS
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int rip_if_down(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:747,1
    - Dst: vector_set
      Src: /src/frr/ripd/rip_interface.c:751,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_interface.c:752,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rip
    - ifname
    argTypes:
    - struct rip*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: rip_enable_if_add
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - rip_enable_apply_all
    - vector_set
    - XSTRDUP
    - rip_enable_if_lookup
    linkageType: ''
    returnType: int
    signature: int rip_enable_if_add(struct rip *rip, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:765,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:769,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:770,1
    - Dst: vector_unset
      Src: /src/frr/ripd/rip_interface.c:771,1
    - Dst: rip_enable_apply_all
      Src: /src/frr/ripd/rip_interface.c:773,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - rip
    - ifname
    argTypes:
    - struct rip*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 776
    functionName: rip_enable_if_delete
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - vector_slot
    - vector_unset
    - rip_enable_apply_all
    - XFREE
    - rip_enable_if_lookup
    linkageType: ''
    returnType: int
    signature: int rip_enable_if_delete(struct rip *rip, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ripd/rip_interface.c:785,1
    - Dst: rip_multicast_join
      Src: /src/frr/ripd/rip_interface.c:790,1
    - Dst: flog_err_sys
      Src: /src/frr/ripd/rip_interface.c:791,1
    - Dst: rip_request_interface
      Src: /src/frr/ripd/rip_interface.c:801,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 779
    functionDepth: 6
    functionLinenumber: 779
    functionLinenumberEnd: 802
    functionName: rip_interface_wakeup
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - rip_multicast_join
    - flog_err_sys
    - rip_request_interface
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void rip_interface_wakeup(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:813,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripd/rip_interface.c:815,1
    - Dst: if
      Src: /src/frr/ripd/rip_interface.c:819,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ripd/rip_interface.c:825,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:832,1
    - Dst: rip_enable_network_lookup2
      Src: /src/frr/ripd/rip_interface.c:834,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:835,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_interface.c:839,1
    - Dst: rip_redistribute_check
      Src: /src/frr/ripd/rip_interface.c:842,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_interface.c:843,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:851,1
    - Dst: if_is_operative
      Src: /src/frr/ripd/rip_interface.c:857,1
    - Dst: rip_enable_network_lookup_if
      Src: /src/frr/ripd/rip_interface.c:863,1
    - Dst: rip_enable_if_lookup
      Src: /src/frr/ripd/rip_interface.c:872,1
    - Dst: rip_if_ipv4_address_check
      Src: /src/frr/ripd/rip_interface.c:879,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - ifp
    - set
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 804
    functionDepth: 4
    functionLinenumber: 804
    functionLinenumberEnd: 893
    functionName: rip_connect_set
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 2
    functionsReached:
    - rip_redistribute_add
    - apply_mask_ipv4
    - memset
    - rip_enable_apply
    - rip_redistribute_delete
    - rip_if_ipv4_address_check
    - rip_enable_if_lookup
    - rip_redistribute_check
    - if
    - ALL_LIST_ELEMENTS
    - rip_enable_network_lookup2
    - if_is_operative
    - rip_enable_network_lookup_if
    linkageType: ''
    returnType: void
    signature: void rip_connect_set(struct interface *ifp, int set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/rip_interface.c:910,1
    - Dst: rip_enable_apply
      Src: /src/frr/ripd/rip_interface.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 905
    functionDepth: 0
    functionLinenumber: 905
    functionLinenumberEnd: 912
    functionName: rip_enable_apply_all
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 4
    functionsReached:
    - FOR_ALL_INTERFACES
    - rip_enable_apply
    linkageType: ''
    returnType: void
    signature: void rip_enable_apply_all(struct rip *rip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripd/rip_interface.c:919,1
    - Dst: route_node_lookup
      Src: /src/frr/ripd/rip_interface.c:924,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - rip
    - from
    argTypes:
    - struct rip*
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 930
    functionName: rip_neighbor_lookup
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - memset
    linkageType: ''
    returnType: int
    signature: int rip_neighbor_lookup(struct rip *rip, struct sockaddr_in *from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/ripd/rip_interface.c:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rip
    - p
    argTypes:
    - struct rip*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 945
    functionName: rip_neighbor_add
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - route_node_get
    linkageType: ''
    returnType: int
    signature: int rip_neighbor_add(struct rip *rip, struct prefix_ipv4 *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ripd/rip_interface.c:953,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:960,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - rip
    - p
    argTypes:
    - struct rip*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 966
    functionName: rip_neighbor_delete
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    linkageType: ''
    returnType: int
    signature: int rip_neighbor_delete(struct rip *rip, struct prefix_ipv4 *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:976,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:976,1
    - Dst: route_unlock_node
      Src: /src/frr/ripd/rip_interface.c:979,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:983,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:984,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:985,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:986,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 988
    functionName: rip_clean_network
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_top
    - vector_active
    - vector_slot
    - route_next
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rip_clean_network(struct rip *rip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:996,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:997,1
    - Dst: strcmp
      Src: /src/frr/ripd/rip_interface.c:998,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - rip
    - ifname
    argTypes:
    - struct rip*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1001
    functionName: rip_passive_nondefault_lookup
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - vector_active
    - vector_slot
    - strcmp
    linkageType: ''
    returnType: int
    signature: int rip_passive_nondefault_lookup(struct rip *rip, const char *ifname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rip_passive_nondefault_lookup
      Src: /src/frr/ripd/rip_interface.c:1013,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_interface.c:1018,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1003
    functionDepth: 2
    functionLinenumber: 1003
    functionLinenumberEnd: 1020
    functionName: rip_passive_interface_apply
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - rip_passive_nondefault_lookup
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void rip_passive_interface_apply(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripd/rip_interface.c:1026,1
    - Dst: rip_passive_interface_apply
      Src: /src/frr/ripd/rip_interface.c:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1022
    functionDepth: 3
    functionLinenumber: 1022
    functionLinenumberEnd: 1028
    functionName: rip_passive_interface_apply_all
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - FOR_ALL_INTERFACES
    - rip_passive_interface_apply
    linkageType: ''
    returnType: void
    signature: void rip_passive_interface_apply_all(struct rip *rip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_passive_nondefault_lookup
      Src: /src/frr/ripd/rip_interface.c:1033,1
    - Dst: vector_set
      Src: /src/frr/ripd/rip_interface.c:1040,1
    - Dst: XSTRDUP
      Src: /src/frr/ripd/rip_interface.c:1041,1
    - Dst: rip_passive_interface_apply_all
      Src: /src/frr/ripd/rip_interface.c:1043,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rip
    - ifname
    argTypes:
    - struct rip*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1031
    functionDepth: 4
    functionLinenumber: 1031
    functionLinenumberEnd: 1046
    functionName: rip_passive_nondefault_set
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 2
    functionsReached:
    - rip_passive_nondefault_lookup
    - vector_set
    - XSTRDUP
    - rip_passive_interface_apply_all
    linkageType: ''
    returnType: int
    signature: int rip_passive_nondefault_set(struct rip *rip, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_passive_nondefault_lookup
      Src: /src/frr/ripd/rip_interface.c:1053,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1061,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:1062,1
    - Dst: vector_unset
      Src: /src/frr/ripd/rip_interface.c:1063,1
    - Dst: rip_passive_interface_apply_all
      Src: /src/frr/ripd/rip_interface.c:1065,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - rip
    - ifname
    argTypes:
    - struct rip*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1048
    functionDepth: 4
    functionLinenumber: 1048
    functionLinenumberEnd: 1068
    functionName: rip_passive_nondefault_unset
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 2
    functionsReached:
    - vector_slot
    - vector_unset
    - rip_passive_interface_apply_all
    - XFREE
    - rip_passive_nondefault_lookup
    linkageType: ''
    returnType: int
    signature: int rip_passive_nondefault_unset(struct rip *rip, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:1076,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1077,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:1078,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1079,1
    - Dst: rip_passive_interface_apply_all
      Src: /src/frr/ripd/rip_interface.c:1081,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1071
    functionDepth: 4
    functionLinenumber: 1071
    functionLinenumberEnd: 1082
    functionName: rip_passive_nondefault_clean
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 2
    functionsReached:
    - vector_active
    - vector_slot
    - XFREE
    - rip_passive_interface_apply_all
    linkageType: ''
    returnType: void
    signature: void rip_passive_nondefault_clean(struct rip *rip)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:1091,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:1092,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_interface.c:1094,1
    - Dst: vector_active
      Src: /src/frr/ripd/rip_interface.c:1097,1
    - Dst: vector_slot
      Src: /src/frr/ripd/rip_interface.c:1098,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_interface.c:1099,1
    - Dst: route_top
      Src: /src/frr/ripd/rip_interface.c:1102,1
    - Dst: route_next
      Src: /src/frr/ripd/rip_interface.c:1102,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_interface.c:1104,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - rip
    argTypes:
    - struct vty*
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1107
    functionName: rip_show_network_config
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - vty_out
    - route_top
    - vector_active
    - vector_slot
    - route_next
    linkageType: ''
    returnType: int
    signature: int rip_show_network_config(struct vty *vty, struct rip *rip)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1118
    functionName: rip_interface_sync
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rip_interface_sync(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rip_interface_new
      Src: /src/frr/ripd/rip_interface.c:1123,1
    - Dst: rip_interface_sync
      Src: /src/frr/ripd/rip_interface.c:1124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1127
    functionName: rip_interface_new_hook
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - rip_interface_sync
    - rip_interface_new
    linkageType: ''
    returnType: int
    signature: int rip_interface_new_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rip_interface_reset
      Src: /src/frr/ripd/rip_interface.c:1132,1
    - Dst: XFREE
      Src: /src/frr/ripd/rip_interface.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1130
    functionDepth: 0
    functionLinenumber: 1130
    functionLinenumberEnd: 1135
    functionName: rip_interface_delete_hook
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 0
    functionsReached:
    - rip_interface_reset
    - XFREE
    linkageType: ''
    returnType: int
    signature: int rip_interface_delete_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/ripd/rip_interface.c:1141,1
    - Dst: hook_register_prio
      Src: /src/frr/ripd/rip_interface.c:1142,1
    - Dst: if_cmd_init_default
      Src: /src/frr/ripd/rip_interface.c:1145,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/ripd/rip_interface.c:1146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1138
    functionDepth: 1
    functionLinenumber: 1138
    functionLinenumberEnd: 1148
    functionName: rip_if_init
    functionSourceFile: /src/frr/ripd/rip_interface.c
    functionUses: 1
    functionsReached:
    - hook_register_prio
    - if_cmd_init_default
    - if_zapi_callbacks
    linkageType: ''
    returnType: void
    signature: void rip_if_init(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripd/rip_zebra.c:35,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/rip_zebra.c:40,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripd/rip_zebra.c:41,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/rip_zebra.c:49,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ripd/rip_zebra.c:51,1
    - Dst: listgetdata
      Src: /src/frr/ripd/rip_zebra.c:58,1
    - Dst: listhead
      Src: /src/frr/ripd/rip_zebra.c:58,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/rip_zebra.c:60,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/rip_zebra.c:64,1
    - Dst: SET_FLAG
      Src: /src/frr/ripd/rip_zebra.c:69,1
    - Dst: zclient_route_send
      Src: /src/frr/ripd/rip_zebra.c:73,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_zebra.c:77,1
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_zebra.c:83,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 3
    argNames:
    - rip
    - rp
    - cmd
    argTypes:
    - struct rip*
    - struct route_node*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 90
    functionName: rip_zebra_ipv4_send
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - ALL_LIST_ELEMENTS_RO
    - listhead
    - SET_FLAG
    - UNSET_FLAG
    - zlog_debug
    - zclient_route_send
    - listgetdata
    linkageType: ''
    returnType: void
    signature: "void rip_zebra_ipv4_send(struct rip *rip, struct route_node *rp,\n\t\t\t\tuint8_t
      cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rip_zebra_ipv4_send
      Src: /src/frr/ripd/rip_zebra.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rip
    - rp
    argTypes:
    - struct rip*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: rip_zebra_ipv4_add
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 4
    functionsReached:
    - rip_zebra_ipv4_send
    linkageType: ''
    returnType: void
    signature: void rip_zebra_ipv4_add(struct rip *rip, struct route_node *rp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rip_zebra_ipv4_send
      Src: /src/frr/ripd/rip_zebra.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rip
    - rp
    argTypes:
    - struct rip*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: rip_zebra_ipv4_delete
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 3
    functionsReached:
    - rip_zebra_ipv4_send
    linkageType: ''
    returnType: void
    signature: void rip_zebra_ipv4_delete(struct rip *rip, struct route_node *rp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rip_lookup_by_vrf_id
      Src: /src/frr/ripd/rip_zebra.c:111,1
    - Dst: zapi_route_decode
      Src: /src/frr/ripd/rip_zebra.c:115,1
    - Dst: memset
      Src: /src/frr/ripd/rip_zebra.c:118,1
    - Dst: rip_redistribute_add
      Src: /src/frr/ripd/rip_zebra.c:125,1
    - Dst: rip_redistribute_delete
      Src: /src/frr/ripd/rip_zebra.c:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 105
    functionDepth: 4
    functionLinenumber: 105
    functionLinenumberEnd: 134
    functionName: rip_zebra_read_route
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 0
    functionsReached:
    - rip_redistribute_add
    - memset
    - rip_redistribute_delete
    - zapi_route_decode
    - rip_lookup_by_vrf_id
    linkageType: ''
    returnType: int
    signature: int rip_zebra_read_route(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripd/rip_zebra.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rip
    - type
    argTypes:
    - struct rip*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: rip_redistribute_conf_update
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 1
    functionsReached:
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void rip_redistribute_conf_update(struct rip *rip, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripd/rip_zebra.c:145,1
    - Dst: rip_redistribute_withdraw
      Src: /src/frr/ripd/rip_zebra.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rip
    - type
    argTypes:
    - struct rip*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: rip_redistribute_conf_delete
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 1
    functionsReached:
    - rip_redistribute_withdraw
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void rip_redistribute_conf_delete(struct rip *rip, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rip
    - type
    argTypes:
    - struct rip*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: rip_redistribute_check
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rip_redistribute_check(struct rip *rip, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_redistribute_check
      Src: /src/frr/ripd/rip_zebra.c:160,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripd/rip_zebra.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 166
    functionName: rip_redistribute_enable
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 1
    functionsReached:
    - rip_redistribute_check
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void rip_redistribute_enable(struct rip *rip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_redistribute_check
      Src: /src/frr/ripd/rip_zebra.c:171,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripd/rip_zebra.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - rip
    argTypes:
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 177
    functionName: rip_redistribute_disable
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 0
    functionsReached:
    - rip_redistribute_check
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void rip_redistribute_disable(struct rip *rip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rip_redistribute_check
      Src: /src/frr/ripd/rip_zebra.c:183,1
    - Dst: vty_out
      Src: /src/frr/ripd/rip_zebra.c:186,1
    - Dst: zebra_route_string
      Src: /src/frr/ripd/rip_zebra.c:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - rip
    argTypes:
    - struct vty*
    - struct rip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 188
    functionName: rip_show_redistribute_config
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 0
    functionsReached:
    - rip_redistribute_check
    - zebra_route_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: void rip_show_redistribute_config(struct vty *vty, struct rip *rip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_zebra.c:196,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ripd/rip_zebra.c:199,1
    - Dst: bfd_client_sendmsg
      Src: /src/frr/ripd/rip_zebra.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: rip_zebra_vrf_register
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - bfd_client_sendmsg
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void rip_zebra_vrf_register(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripd/rip_zebra.c:209,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/ripd/rip_zebra.c:212,1
    - Dst: bfd_client_sendmsg
      Src: /src/frr/ripd/rip_zebra.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 214
    functionName: rip_zebra_vrf_deregister
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_dereg_requests
    - zlog_debug
    - bfd_client_sendmsg
    linkageType: ''
    returnType: void
    signature: void rip_zebra_vrf_deregister(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ripd/rip_zebra.c:218,1
    - Dst: bfd_client_sendmsg
      Src: /src/frr/ripd/rip_zebra.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: rip_zebra_connected
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 0
    functionsReached:
    - bfd_client_sendmsg
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void rip_zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/ripd/rip_zebra.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - struct zclient_capabilities*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: rip_zebra_capabilities
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 0
    functionsReached:
    - MIN
    linkageType: ''
    returnType: void
    signature: void rip_zebra_capabilities(struct zclient_capabilities *cap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/ripd/rip_zebra.c:238,1
    - Dst: array_size
      Src: /src/frr/ripd/rip_zebra.c:239,1
    - Dst: zclient_init
      Src: /src/frr/ripd/rip_zebra.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 243
    functionName: rip_zclient_init
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void rip_zclient_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/ripd/rip_zebra.c:247,1
    - Dst: zclient_free
      Src: /src/frr/ripd/rip_zebra.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: rip_zclient_stop
    functionSourceFile: /src/frr/ripd/rip_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_free
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void rip_zclient_stop(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:17,1
    - Dst: inet_pton
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:21,1
    - Dst: free
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:22,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - type_name
    - value_str
    - value
    - err_msg
    argTypes:
    - char*
    - char*
    - lyd_val*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 27
    functionName: ipv4_address_store_clb
    functionSourceFile: /src/frr/yang/libyang_plugins/frr_user_types.c
    functionUses: 0
    functionsReached:
    - malloc
    - inet_pton
    - free
    linkageType: ''
    returnType: int
    signature: "int ipv4_address_store_clb(const char *type_name, const char *value_str,\n\t\t\t\t
      \ lyd_val *value, char **err_msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:32,1
    - Dst: inet_pton
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:36,1
    - Dst: free
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - type_name
    - value_str
    - value
    - err_msg
    argTypes:
    - char*
    - char*
    - lyd_val*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 42
    functionName: ipv6_address_store_clb
    functionSourceFile: /src/frr/yang/libyang_plugins/frr_user_types.c
    functionUses: 0
    functionsReached:
    - malloc
    - inet_pton
    - free
    linkageType: ''
    returnType: int
    signature: "int ipv6_address_store_clb(const char *type_name, const char *value_str,\n\t\t\t\t
      \ lyd_val *value, char **err_msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:47,1
    - Dst: str2ipaddr
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:51,1
    - Dst: free
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - type_name
    - value_str
    - value
    - err_msg
    argTypes:
    - char*
    - char*
    - lyd_val*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 57
    functionName: ip_address_store_clb
    functionSourceFile: /src/frr/yang/libyang_plugins/frr_user_types.c
    functionUses: 0
    functionsReached:
    - malloc
    - str2ipaddr
    - free
    linkageType: ''
    returnType: int
    signature: "int ip_address_store_clb(const char *type_name, const char *value_str,\n\t\t\t\tlyd_val
      *value, char **err_msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:62,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:66,1
    - Dst: free
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - type_name
    - value_str
    - value
    - err_msg
    argTypes:
    - char*
    - char*
    - lyd_val*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 72
    functionName: ipv4_prefix_store_clb
    functionSourceFile: /src/frr/yang/libyang_plugins/frr_user_types.c
    functionUses: 0
    functionsReached:
    - malloc
    - str2prefix_ipv4
    - free
    linkageType: ''
    returnType: int
    signature: "int ipv4_prefix_store_clb(const char *type_name, const char *value_str,\n\t\t\t\t
      lyd_val *value, char **err_msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:77,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:81,1
    - Dst: free
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - type_name
    - value_str
    - value
    - err_msg
    argTypes:
    - char*
    - char*
    - lyd_val*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 87
    functionName: ipv6_prefix_store_clb
    functionSourceFile: /src/frr/yang/libyang_plugins/frr_user_types.c
    functionUses: 0
    functionsReached:
    - malloc
    - str2prefix_ipv6
    - free
    linkageType: ''
    returnType: int
    signature: "int ipv6_prefix_store_clb(const char *type_name, const char *value_str,\n\t\t\t\t
      lyd_val *value, char **err_msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:92,1
    - Dst: str2prefix
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:96,1
    - Dst: free
      Src: /src/frr/yang/libyang_plugins/frr_user_types.c:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - type_name
    - value_str
    - value
    - err_msg
    argTypes:
    - char*
    - char*
    - lyd_val*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: ip_prefix_store_clb
    functionSourceFile: /src/frr/yang/libyang_plugins/frr_user_types.c
    functionUses: 0
    functionsReached:
    - malloc
    - free
    - str2prefix
    linkageType: ''
    returnType: int
    signature: "int ip_prefix_store_clb(const char *type_name, const char *value_str,\n\t\t\t
      \      lyd_val *value, char **err_msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qpb_allocator_t*::alloc
      Src: /src/frr/qpb/qpb_allocator.h:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - allocator
    - size
    argTypes:
    - qpb_allocator_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: qpb_alloc
    functionSourceFile: /src/frr/qpb/qpb_allocator.h
    functionUses: 0
    functionsReached:
    - qpb_allocator_t*::alloc
    linkageType: ''
    returnType: void
    signature: void *qpb_alloc(qpb_allocator_t *allocator, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qpb_alloc
      Src: /src/frr/qpb/qpb_allocator.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - allocator
    - num_ptrs
    argTypes:
    - qpb_allocator_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: qpb_alloc_ptr_array
    functionSourceFile: /src/frr/qpb/qpb_allocator.h
    functionUses: 0
    functionsReached:
    - qpb_alloc
    linkageType: ''
    returnType: void
    signature: "void *qpb_alloc_ptr_array(qpb_allocator_t *allocator,\n\t\t\t\t\tsize_t
      num_ptrs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qpb_allocator_t*::free
      Src: /src/frr/qpb/qpb_allocator.h:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - allocator
    - ptr
    argTypes:
    - qpb_allocator_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: qpb_free
    functionSourceFile: /src/frr/qpb/qpb_allocator.h
    functionUses: 0
    functionsReached:
    - qpb_allocator_t*::free
    linkageType: ''
    returnType: void
    signature: void qpb_free(qpb_allocator_t *allocator, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - allocator
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: QPB_ALLOC
    functionSourceFile: /src/frr/qpb/qpb_allocator.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QPB_ALLOC(allocator, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - allocator
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: QPB_DECLARE_STACK_ALLOCATOR
    functionSourceFile: /src/frr/qpb/qpb_allocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QPB_DECLARE_STACK_ALLOCATOR(allocator, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - allocator
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: QPB_INIT_STACK_ALLOCATOR
    functionSourceFile: /src/frr/qpb/qpb_allocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QPB_INIT_STACK_ALLOCATOR(allocator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - allocator
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: QPB_RESET_STACK_ALLOCATOR
    functionSourceFile: /src/frr/qpb/qpb_allocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QPB_RESET_STACK_ALLOCATOR(allocator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: LINEAR_ALLOCATOR_ALIGN
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LINEAR_ALLOCATOR_ALIGN(value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LINEAR_ALLOCATOR_ALIGN
      Src: /src/frr/qpb/linear_allocator.h:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: linear_allocator_align_ptr
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached:
    - LINEAR_ALLOCATOR_ALIGN
    linkageType: ''
    returnType: char
    signature: char *linear_allocator_align_ptr(char *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LINEAR_ALLOCATOR_ALIGN
      Src: /src/frr/qpb/linear_allocator.h:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - user_size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: linear_allocator_block_size
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached:
    - LINEAR_ALLOCATOR_ALIGN
    linkageType: ''
    returnType: size_t
    signature: size_t linear_allocator_block_size(size_t user_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: linear_allocator_ptr_to_block
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: linear_allocator_block_t
    signature: linear_allocator_block_t *linear_allocator_ptr_to_block(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/qpb/linear_allocator.h:111,1
    - Dst: assert
      Src: /src/frr/qpb/linear_allocator.h:113,1
    - Dst: linear_allocator_align_ptr
      Src: /src/frr/qpb/linear_allocator.h:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - allocator
    - buf
    - buf_len
    argTypes:
    - linear_allocator_t*
    - char*
    - size_t
    assertStmts:
    - condition: (linear_allocator_align_ptr(buf) == buf)
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/frr/qpb/linear_allocator.h
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: linear_allocator_init
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached:
    - assert
    - linear_allocator_align_ptr
    - memset
    linkageType: ''
    returnType: void
    signature: "void linear_allocator_init(linear_allocator_t *allocator,\n\t\t\t\t\t
      char *buf, size_t buf_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - allocator
    argTypes:
    - linear_allocator_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 131
    functionName: linear_allocator_reset
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void linear_allocator_reset(linear_allocator_t *allocator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linear_allocator_block_size
      Src: /src/frr/qpb/linear_allocator.h:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - allocator
    - user_size
    argTypes:
    - linear_allocator_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 155
    functionName: linear_allocator_alloc
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached:
    - linear_allocator_block_size
    linkageType: ''
    returnType: void
    signature: "void *linear_allocator_alloc(linear_allocator_t *allocator,\n\t\t\t\t\t
      \  size_t user_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/qpb/linear_allocator.h:166,1
    - Dst: linear_allocator_ptr_to_block
      Src: /src/frr/qpb/linear_allocator.h:170,1
    - Dst: assert
      Src: /src/frr/qpb/linear_allocator.h:172,1
    - Dst: assert
      Src: /src/frr/qpb/linear_allocator.h:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - allocator
    - ptr
    argTypes:
    - linear_allocator_t*
    - void*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/frr/qpb/linear_allocator.h
    - condition: (0)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/frr/qpb/linear_allocator.h
    - condition: (0)
      pos:
        line_end: 178
        line_start: 178
        source_file: /src/frr/qpb/linear_allocator.h
    constantsTouched: []
    func_position:
      end: 181
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 181
    functionName: linear_allocator_free
    functionSourceFile: /src/frr/qpb/linear_allocator.h
    functionUses: 0
    functionsReached:
    - assert
    - linear_allocator_ptr_to_block
    linkageType: ''
    returnType: void
    signature: "void linear_allocator_free(linear_allocator_t *allocator,\n\t\t\t\t\t
      void *ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - pb_family
    - family
    argTypes:
    - Qpb__AddressFamily*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 44
    functionName: qpb__address_family__set
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int qpb__address_family__set(Qpb__AddressFamily *pb_family,\n\t\t\t\t\t
      \  uint8_t family)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - pb_family
    - family
    argTypes:
    - Qpb__AddressFamily
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 70
    functionName: qpb__address_family__get
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int qpb__address_family__get(Qpb__AddressFamily pb_family,\n\t\t\t\t\t
      \  uint8_t *family)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/qpb/qpb.h:81,1
    - Dst: typeof
      Src: /src/frr/qpb/qpb.h:81,1
    - Dst: qpb__l3_prefix__init
      Src: /src/frr/qpb/qpb.h:85,1
    - Dst: qpb_alloc
      Src: /src/frr/qpb/qpb.h:88,1
    - Dst: memcpy
      Src: /src/frr/qpb/qpb.h:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - allocator
    - p
    argTypes:
    - qpb_allocator_t*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 96
    functionName: qpb__l3_prefix__create
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 1
    functionsReached:
    - qpb_alloc
    - typeof
    - QPB_ALLOC
    - qpb__l3_prefix__init
    - memcpy
    linkageType: ''
    returnType: Qpb__L3Prefix
    signature: "Qpb__L3Prefix *qpb__l3_prefix__create(qpb_allocator_t *allocator,\n\t\t\t\t\t\t
      \   struct prefix *p)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/qpb/qpb.h:109,1
    - Dst: memset
      Src: /src/frr/qpb/qpb.h:114,1
    - Dst: memset
      Src: /src/frr/qpb/qpb.h:119,1
    - Dst: memcpy
      Src: /src/frr/qpb/qpb.h:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - pb_prefix
    - family
    - prefix
    argTypes:
    - Qpb__L3Prefix*
    - uint8_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 126
    functionName: qpb__l3_prefix__get
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: int
    signature: "int qpb__l3_prefix__get(const Qpb__L3Prefix *pb_prefix,\n\t\t\t\t
      \     uint8_t family, struct prefix *prefix)"
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - pb_proto
    - route_type
    argTypes:
    - Qpb__Protocol*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 179
    functionName: qpb__protocol__set
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int qpb__protocol__set(Qpb__Protocol *pb_proto, int route_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/qpb/qpb.h:189,1
    - Dst: typeof
      Src: /src/frr/qpb/qpb.h:189,1
    - Dst: qpb__ipv4_address__init
      Src: /src/frr/qpb/qpb.h:193,1
    - Dst: ntohl
      Src: /src/frr/qpb/qpb.h:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - allocator
    - addr
    argTypes:
    - qpb_allocator_t*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 197
    functionName: qpb__ipv4_address__create
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - QPB_ALLOC
    - qpb__ipv4_address__init
    - typeof
    - ntohl
    linkageType: ''
    returnType: Qpb__Ipv4Address
    signature: 'Qpb__Ipv4Address *

      qpb__ipv4_address__create(qpb_allocator_t *allocator, struct in_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/qpb/qpb.h:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v4
    - addr
    argTypes:
    - Qpb__Ipv4Address*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 207
    functionName: qpb__ipv4_address__get
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: int
    signature: "int qpb__ipv4_address__get(const Qpb__Ipv4Address *v4,\n\t\t\t\t\t
      struct in_addr *addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/qpb/qpb.h:217,1
    - Dst: typeof
      Src: /src/frr/qpb/qpb.h:217,1
    - Dst: qpb__ipv6_address__init
      Src: /src/frr/qpb/qpb.h:221,1
    - Dst: qpb_alloc
      Src: /src/frr/qpb/qpb.h:223,1
    - Dst: memcpy
      Src: /src/frr/qpb/qpb.h:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - allocator
    - addr
    argTypes:
    - qpb_allocator_t*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 229
    functionName: qpb__ipv6_address__create
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - qpb_alloc
    - typeof
    - qpb__ipv6_address__init
    - QPB_ALLOC
    - memcpy
    linkageType: ''
    returnType: Qpb__Ipv6Address
    signature: 'Qpb__Ipv6Address *

      qpb__ipv6_address__create(qpb_allocator_t *allocator, struct in6_addr *addr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/qpb/qpb.h:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - v6
    - addr
    argTypes:
    - Qpb__Ipv6Address*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 244
    functionName: qpb__ipv6_address__get
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int qpb__ipv6_address__get(const Qpb__Ipv6Address *v6,\n\t\t\t\t\t
      struct in6_addr *addr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/qpb/qpb.h:256,1
    - Dst: typeof
      Src: /src/frr/qpb/qpb.h:256,1
    - Dst: qpb__l3_address__init
      Src: /src/frr/qpb/qpb.h:260,1
    - Dst: qpb__ipv4_address__create
      Src: /src/frr/qpb/qpb.h:265,1
    - Dst: qpb__ipv6_address__create
      Src: /src/frr/qpb/qpb.h:272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - allocator
    - addr
    - family
    argTypes:
    - qpb_allocator_t*
    - union g_addr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 279
    functionName: qpb__l3_address__create
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - typeof
    - qpb__ipv4_address__create
    - QPB_ALLOC
    - qpb__ipv6_address__create
    - qpb__l3_address__init
    linkageType: ''
    returnType: Qpb__L3Address
    signature: "Qpb__L3Address *\nqpb__l3_address__create(qpb_allocator_t *allocator,
      union g_addr *addr,\n\t\t\tuint8_t family)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qpb__ipv4_address__get
      Src: /src/frr/qpb/qpb.h:291,1
    - Dst: qpb__ipv6_address__get
      Src: /src/frr/qpb/qpb.h:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - l3_addr
    - family
    - addr
    argTypes:
    - Qpb__L3Address*
    - uint8_t*
    - union g_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 303
    functionName: qpb__l3_address__get
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - qpb__ipv4_address__get
    - qpb__ipv6_address__get
    linkageType: ''
    returnType: int
    signature: "int qpb__l3_address__get(const Qpb__L3Address *l3_addr,\n\t\t\t\t
      \      uint8_t *family, union g_addr *addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/qpb/qpb.h:314,1
    - Dst: typeof
      Src: /src/frr/qpb/qpb.h:314,1
    - Dst: qpb__if_identifier__init
      Src: /src/frr/qpb/qpb.h:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - allocator
    - if_index
    argTypes:
    - qpb_allocator_t*
    - uint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 322
    functionName: qpb__if_identifier__create
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached:
    - qpb__if_identifier__init
    - QPB_ALLOC
    - typeof
    linkageType: ''
    returnType: Qpb__IfIdentifier
    signature: 'Qpb__IfIdentifier *

      qpb__if_identifier__create(qpb_allocator_t *allocator, uint if_index)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - if_id
    - if_index
    - name
    argTypes:
    - Qpb__IfIdentifier*
    - uint*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 349
    functionName: qpb__if_identifier__get
    functionSourceFile: /src/frr/qpb/qpb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int qpb__if_identifier__get(Qpb__IfIdentifier *if_id,\n\t\t\t\t\t
      \ uint *if_index, char **name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: linear_allocator_alloc
      Src: /src/frr/qpb/qpb_allocator.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - allocator_data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 3
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: _qpb_alloc
    functionSourceFile: /src/frr/qpb/qpb_allocator.c
    functionUses: 0
    functionsReached:
    - linear_allocator_alloc
    linkageType: ''
    returnType: void
    signature: void *_qpb_alloc(void *allocator_data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: linear_allocator_free
      Src: /src/frr/qpb/qpb_allocator.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - allocator_data
    - ptr
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: _qpb_free
    functionSourceFile: /src/frr/qpb/qpb_allocator.c
    functionUses: 0
    functionsReached:
    - linear_allocator_free
    linkageType: ''
    returnType: void
    signature: void _qpb_free(void *allocator_data, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - allocator
    - linear_allocator
    argTypes:
    - qpb_allocator_t*
    - linear_allocator_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: qpb_allocator_init_linear
    functionSourceFile: /src/frr/qpb/qpb_allocator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void qpb_allocator_init_linear(qpb_allocator_t *allocator,\n\t\t\t
      \      linear_allocator_t *linear_allocator)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/staticd/static_zebra.c:54,1
    - Dst: numcmp
      Src: /src/frr/staticd/static_zebra.c:56,1
    - Dst: prefix_cmp
      Src: /src/frr/staticd/static_zebra.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - nhtd1
    - nhtd2
    argTypes:
    - struct static_nht_data*
    - struct static_nht_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: static_nht_data_cmp
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - numcmp
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int static_nht_data_cmp(const struct static_nht_data *nhtd1,\n\t\t\t
      \      const struct static_nht_data *nhtd2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_hash_key
      Src: /src/frr/staticd/static_zebra.c:65,1
    - Dst: jhash_2words
      Src: /src/frr/staticd/static_zebra.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nhtd
    argTypes:
    - struct static_nht_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 67
    functionName: static_nht_data_hash
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    - jhash_2words
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int static_nht_data_hash(const struct static_nht_data *nhtd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_ifindex_update
      Src: /src/frr/staticd/static_zebra.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: static_ifp_create
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_ifindex_update
    linkageType: ''
    returnType: int
    signature: int static_ifp_create(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_ifindex_update
      Src: /src/frr/staticd/static_zebra.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: static_ifp_destroy
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_ifindex_update
    linkageType: ''
    returnType: int
    signature: int static_ifp_destroy(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/staticd/static_zebra.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: interface_address_add
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 2
    functionsReached:
    - zebra_interface_address_read
    linkageType: ''
    returnType: int
    signature: int interface_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/staticd/static_zebra.c:103,1
    - Dst: connected_free
      Src: /src/frr/staticd/static_zebra.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 110
    functionName: interface_address_delete
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 2
    functionsReached:
    - zebra_interface_address_read
    - connected_free
    linkageType: ''
    returnType: int
    signature: int interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_install_intf_nh
      Src: /src/frr/staticd/static_zebra.c:115,1
    - Dst: static_ifindex_update
      Src: /src/frr/staticd/static_zebra.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: static_ifp_up
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_ifindex_update
    - static_install_intf_nh
    linkageType: ''
    returnType: int
    signature: int static_ifp_up(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_ifindex_update
      Src: /src/frr/staticd/static_zebra.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: static_ifp_down
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_ifindex_update
    linkageType: ''
    returnType: int
    signature: int static_ifp_down(struct interface *ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_notify_decode
      Src: /src/frr/staticd/static_zebra.c:135,1
    - Dst: static_nht_mark_state
      Src: /src/frr/staticd/static_zebra.c:141,1
    - Dst: zlog_warn
      Src: /src/frr/staticd/static_zebra.c:142,1
    - Dst: static_nht_mark_state
      Src: /src/frr/staticd/static_zebra.c:146,1
    - Dst: zlog_warn
      Src: /src/frr/staticd/static_zebra.c:147,1
    - Dst: static_nht_mark_state
      Src: /src/frr/staticd/static_zebra.c:152,1
    - Dst: static_nht_mark_state
      Src: /src/frr/staticd/static_zebra.c:155,1
    - Dst: static_nht_mark_state
      Src: /src/frr/staticd/static_zebra.c:158,1
    - Dst: zlog_warn
      Src: /src/frr/staticd/static_zebra.c:159,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 165
    functionName: route_notify_owner
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_nht_mark_state
    - zlog_warn
    - zapi_route_notify_decode
    linkageType: ''
    returnType: int
    signature: int route_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/staticd/static_zebra.c:169,1
    - Dst: static_fixup_vrf_ids
      Src: /src/frr/staticd/static_zebra.c:171,1
    - Dst: vrf_info_lookup
      Src: /src/frr/staticd/static_zebra.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: zebra_connected
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_fixup_vrf_ids
    - vrf_info_lookup
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void zebra_connected(struct zclient *zclient)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_address_is_local
      Src: /src/frr/staticd/static_zebra.c:181,1
    - Dst: if_address_is_local
      Src: /src/frr/staticd/static_zebra.c:184,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - vrfid
    - addr
    - family
    argTypes:
    - vrf_id_t
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 188
    functionName: static_nexthop_is_local
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - if_address_is_local
    linkageType: ''
    returnType: bool
    signature: bool static_nexthop_is_local(vrf_id_t vrfid, struct prefix *addr, int
      family)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/staticd/static_zebra.c:196,1
    - Dst: zlog_err
      Src: /src/frr/staticd/static_zebra.c:197,1
    - Dst: bfd_nht_update
      Src: /src/frr/staticd/static_zebra.c:202,1
    - Dst: static_nexthop_is_local
      Src: /src/frr/staticd/static_zebra.c:208,1
    - Dst: memset
      Src: /src/frr/staticd/static_zebra.c:213,1
    - Dst: static_nht_hash_find
      Src: /src/frr/staticd/static_zebra.c:218,1
    - Dst: static_nht_reset_start
      Src: /src/frr/staticd/static_zebra.c:223,1
    - Dst: static_nht_update
      Src: /src/frr/staticd/static_zebra.c:225,1
    - Dst: zlog_err
      Src: /src/frr/staticd/static_zebra.c:228,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 231
    functionName: static_zebra_nexthop_update
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_nht_reset_start
    - static_nht_hash_find
    - memset
    - static_nexthop_is_local
    - zlog_err
    - bfd_nht_update
    - zapi_nexthop_update_decode
    - static_nht_update
    linkageType: ''
    returnType: int
    signature: int static_zebra_nexthop_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cap
    argTypes:
    - struct zclient_capabilities*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 237
    functionName: static_zebra_capabilities
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void static_zebra_capabilities(struct zclient_capabilities *cap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_nht_hash_find
      Src: /src/frr/staticd/static_zebra.c:244,1
    - Dst: XCALLOC
      Src: /src/frr/staticd/static_zebra.c:246,1
    - Dst: prefix_copy
      Src: /src/frr/staticd/static_zebra.c:248,1
    - Dst: static_nht_hash_add
      Src: /src/frr/staticd/static_zebra.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ref
    argTypes:
    - struct static_nht_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 257
    functionName: static_nht_hash_getref
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_nht_hash_add
    - prefix_copy
    - static_nht_hash_find
    - XCALLOC
    linkageType: ''
    returnType: struct static_nht_data
    signature: 'struct static_nht_data *

      static_nht_hash_getref(const struct static_nht_data *ref)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_nht_hash_del
      Src: /src/frr/staticd/static_zebra.c:268,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_zebra.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - nhtd_p
    argTypes:
    - struct static_nht_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 271
    functionName: static_nht_hash_decref
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_nht_hash_del
    - XFREE
    linkageType: ''
    returnType: bool
    signature: bool static_nht_hash_decref(struct static_nht_data **nhtd_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nht_hash_pop
      Src: /src/frr/staticd/static_zebra.c:277,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_zebra.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 279
    functionName: static_nht_hash_clear
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_nht_hash_pop
    - XFREE
    linkageType: ''
    returnType: void
    signature: void static_nht_hash_clear(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assertf
      Src: /src/frr/staticd/static_zebra.c:305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - nh
    - p
    argTypes:
    - struct static_nexthop*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 307
    functionName: static_zebra_nht_get_prefix
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - assertf
    linkageType: ''
    returnType: bool
    signature: "bool static_zebra_nht_get_prefix(const struct static_nexthop *nh,\n\t\t\t\t\tstruct
      prefix *p)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_zebra.c:313,1
    - Dst: static_zebra_nht_get_prefix
      Src: /src/frr/staticd/static_zebra.c:317,1
    - Dst: static_nht_hash_find
      Src: /src/frr/staticd/static_zebra.c:324,1
    - Dst: assertf
      Src: /src/frr/staticd/static_zebra.c:326,1
    - Dst: static_nht_hash_getref
      Src: /src/frr/staticd/static_zebra.c:329,1
    - Dst: DEBUGD
      Src: /src/frr/staticd/static_zebra.c:332,1
    - Dst: zlog_warn
      Src: /src/frr/staticd/static_zebra.c:337,1
    - Dst: prefix_afi
      Src: /src/frr/staticd/static_zebra.c:347,1
    - Dst: static_nht_update
      Src: /src/frr/staticd/static_zebra.c:351,1
    - Dst: DEBUGD
      Src: /src/frr/staticd/static_zebra.c:361,1
    - Dst: static_nht_hash_decref
      Src: /src/frr/staticd/static_zebra.c:367,1
    - Dst: DEBUGD
      Src: /src/frr/staticd/static_zebra.c:376,1
    - Dst: zclient_send_rnh
      Src: /src/frr/staticd/static_zebra.c:380,1
    - Dst: zlog_warn
      Src: /src/frr/staticd/static_zebra.c:382,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - nh
    - reg
    argTypes:
    - struct static_nexthop*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 386
    functionName: static_zebra_nht_register
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - static_nht_hash_find
    - DEBUGD
    - assertf
    - static_nht_hash_getref
    - static_nht_hash_decref
    - prefix_afi
    - zclient_send_rnh
    - zlog_warn
    - static_nht_update
    - static_zebra_nht_get_prefix
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: void static_zebra_nht_register(struct static_nexthop *nh, bool reg)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/staticd/static_zebra.c:399,1
    - Dst: memset
      Src: /src/frr/staticd/static_zebra.c:401,1
    - Dst: memcpy
      Src: /src/frr/staticd/static_zebra.c:405,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:408,1
    - Dst: memcpy
      Src: /src/frr/staticd/static_zebra.c:409,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:411,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:412,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:413,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:415,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:419,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:423,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_zebra.c:426,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:440,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:442,1
    - Dst: SET_FLAG
      Src: /src/frr/staticd/static_zebra.c:497,1
    - Dst: zclient_route_send
      Src: /src/frr/staticd/static_zebra.c:514,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 100
    argCount: 2
    argNames:
    - pn
    - install
    argTypes:
    - struct static_path*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 517
    functionName: static_zebra_route_add
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - frr_each
    - SET_FLAG
    - srcdest_rnode_prefixes
    - zclient_route_send
    - memcpy
    linkageType: ''
    returnType: void
    signature: void static_zebra_route_add(struct static_path *pn, bool install)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_zapi_callbacks
      Src: /src/frr/staticd/static_zebra.c:530,1
    - Dst: zclient_new
      Src: /src/frr/staticd/static_zebra.c:533,1
    - Dst: array_size
      Src: /src/frr/staticd/static_zebra.c:534,1
    - Dst: zclient_init
      Src: /src/frr/staticd/static_zebra.c:536,1
    - Dst: static_nht_hash_init
      Src: /src/frr/staticd/static_zebra.c:540,1
    - Dst: static_bfd_initialize
      Src: /src/frr/staticd/static_zebra.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 542
    functionName: static_zebra_init
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 1
    functionsReached:
    - if_zapi_callbacks
    - zclient_new
    - static_nht_hash_init
    - static_bfd_initialize
    - array_size
    - zclient_init
    linkageType: ''
    returnType: void
    signature: void static_zebra_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_nht_hash_clear
      Src: /src/frr/staticd/static_zebra.c:547,1
    - Dst: static_nht_hash_fini
      Src: /src/frr/staticd/static_zebra.c:548,1
    - Dst: zclient_stop
      Src: /src/frr/staticd/static_zebra.c:552,1
    - Dst: zclient_free
      Src: /src/frr/staticd/static_zebra.c:553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 555
    functionName: static_zebra_stop
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_free
    - static_nht_hash_clear
    - zclient_stop
    - static_nht_hash_fini
    linkageType: ''
    returnType: void
    signature: void static_zebra_stop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/staticd/static_zebra.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 562
    functionName: static_zebra_vrf_register
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void static_zebra_vrf_register(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/staticd/static_zebra.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 569
    functionName: static_zebra_vrf_unregister
    functionSourceFile: /src/frr/staticd/static_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_dereg_requests
    linkageType: ''
    returnType: void
    signature: void static_zebra_vrf_unregister(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/staticd/static_debug.c:51,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/staticd/static_debug.c:52,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/staticd/static_debug.c:55,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/staticd/static_debug.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: static_debug_set_all
    functionSourceFile: /src/frr/staticd/static_debug.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - array_size
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: void
    signature: void static_debug_set_all(uint32_t flags, bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/staticd/static_debug.c:67,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/staticd/static_debug.c:68,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_debug.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - config
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 72
    functionName: static_debug_config_write_helper
    functionSourceFile: /src/frr/staticd/static_debug.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - array_size
    - vty_out
    linkageType: ''
    returnType: int
    signature: int static_debug_config_write_helper(struct vty *vty, bool config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_debug_config_write_helper
      Src: /src/frr/staticd/static_debug.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: static_config_write_debug
    functionSourceFile: /src/frr/staticd/static_debug.c
    functionUses: 0
    functionsReached:
    - static_debug_config_write_helper
    linkageType: ''
    returnType: int
    signature: int static_config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_debug_config_write_helper
      Src: /src/frr/staticd/static_debug.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: static_debug_status_write
    functionSourceFile: /src/frr/staticd/static_debug.c
    functionUses: 0
    functionsReached:
    - static_debug_config_write_helper
    linkageType: ''
    returnType: int
    signature: int static_debug_status_write(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_NODE2MODE
      Src: /src/frr/staticd/static_debug.c:100,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/staticd/static_debug.c:103,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/staticd/static_debug.c:105,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/staticd/static_debug.c:107,1
    - Dst: bfd_protocol_integration_set_debug
      Src: /src/frr/staticd/static_debug.c:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - vtynode
    - onoff
    - events
    - route
    - bfd
    argTypes:
    - int
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 110
    functionName: static_debug_set
    functionSourceFile: /src/frr/staticd/static_debug.c
    functionUses: 0
    functionsReached:
    - DEBUG_NODE2MODE
    - DEBUG_MODE_SET
    - bfd_protocol_integration_set_debug
    linkageType: ''
    returnType: void
    signature: "void static_debug_set(int vtynode, bool onoff, bool events, bool route,\n\t\t
      \     bool bfd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_init
      Src: /src/frr/staticd/static_debug.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: static_debug_init
    functionSourceFile: /src/frr/staticd/static_debug.c
    functionUses: 1
    functionsReached:
    - debug_init
    linkageType: ''
    returnType: void
    signature: void static_debug_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_nb_config.c:34,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:36,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_nb_config.c:37,1
    - Dst: strcmp
      Src: /src/frr/staticd/static_nb_config.c:45,1
    - Dst: vrf_get_default_name
      Src: /src/frr/staticd/static_nb_config.c:45,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/staticd/static_nb_config.c:46,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:47,1
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:57,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/staticd/static_nb_config.c:58,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_nb_config.c:59,1
    - Dst: static_add_path
      Src: /src/frr/staticd/static_nb_config.c:60,1
    - Dst: nb_running_set_entry
      Src: /src/frr/staticd/static_nb_config.c:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 65
    functionName: static_path_list_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - nb_running_set_entry
    - snprintf
    - yang_dnode_get_parent
    - yang_dnode_get_uint8
    - strcmp
    - nb_running_get_entry
    - static_add_path
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - vrf_get_default_name
    linkageType: ''
    returnType: int
    signature: int static_path_list_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/staticd/static_nb_config.c:77,1
    - Dst: static_del_path
      Src: /src/frr/staticd/static_nb_config.c:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: static_path_list_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - static_del_path
    linkageType: ''
    returnType: int
    signature: int static_path_list_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:95,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_nb_config.c:96,1
    - Dst: static_install_path
      Src: /src/frr/staticd/static_nb_config.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 102
    functionName: static_path_list_tag_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_install_path
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int static_path_list_tag_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_nb_config.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 122
    functionName: nexthop_iter_cb
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: int nexthop_iter_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:137,1
    - Dst: strcasecmp
      Src: /src/frr/staticd/static_nb_config.c:139,1
    - Dst: strcasecmp
      Src: /src/frr/staticd/static_nb_config.c:140,1
    - Dst: strcasecmp
      Src: /src/frr/staticd/static_nb_config.c:141,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:142,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_nb_config.c:152,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/staticd/static_nb_config.c:153,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:157,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:162,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/staticd/static_nb_config.c:172,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_nb_config.c:173,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:174,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:175,1
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:176,1
    - Dst: static_add_nexthop_validate
      Src: /src/frr/staticd/static_nb_config.c:178,1
    - Dst: flog_warn
      Src: /src/frr/staticd/static_nb_config.c:179,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:182,1
    - Dst: static_add_nexthop
      Src: /src/frr/staticd/static_nb_config.c:184,1
    - Dst: nb_running_set_entry
      Src: /src/frr/staticd/static_nb_config.c:186,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 191
    functionName: static_nexthop_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_iterate
    - flog_warn
    - snprintf
    - static_add_nexthop
    - yang_dnode_get_ip
    - yang_dnode_get_parent
    - nb_running_get_entry
    - static_add_nexthop_validate
    - yang_dnode_get_string
    - yang_dnode_get_enum
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool static_nexthop_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/staticd/static_nb_config.c:203,1
    - Dst: static_delete_nexthop
      Src: /src/frr/staticd/static_nb_config.c:204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 209
    functionName: static_nexthop_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - static_delete_nexthop
    linkageType: ''
    returnType: bool
    signature: bool static_nexthop_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:220,1
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:230,1
    - Dst: yang_get_list_pos
      Src: /src/frr/staticd/static_nb_config.c:231,1
    - Dst: flog_warn
      Src: /src/frr/staticd/static_nb_config.c:233,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 245
    functionName: nexthop_mpls_label_stack_entry_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - nb_running_get_entry
    - snprintf
    - yang_get_list_pos
    linkageType: ''
    returnType: int
    signature: int nexthop_mpls_label_stack_entry_create(struct nb_cb_create_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:261,1
    - Dst: yang_get_list_pos
      Src: /src/frr/staticd/static_nb_config.c:262,1
    - Dst: flog_warn
      Src: /src/frr/staticd/static_nb_config.c:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 279
    functionName: nexthop_mpls_label_stack_entry_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - nb_running_get_entry
    - yang_get_list_pos
    linkageType: ''
    returnType: int
    signature: int nexthop_mpls_label_stack_entry_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:288,1
    - Dst: yang_get_list_pos
      Src: /src/frr/staticd/static_nb_config.c:289,1
    - Dst: lyd_parent
      Src: /src/frr/staticd/static_nb_config.c:289,1
    - Dst: flog_warn
      Src: /src/frr/staticd/static_nb_config.c:291,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_nb_config.c:299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 305
    functionName: static_nexthop_mpls_label_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - flog_warn
    - yang_get_list_pos
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int static_nexthop_mpls_label_modify(struct nb_cb_modify_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_nb_config.c:315,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:318,1
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:328,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/staticd/static_nb_config.c:330,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 338
    functionName: static_nexthop_onlink_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_enum
    - nb_running_get_entry
    - snprintf
    linkageType: ''
    returnType: int
    signature: int static_nexthop_onlink_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:345,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_nb_config.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 353
    functionName: static_nexthop_color_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int static_nexthop_color_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 368
    functionName: static_nexthop_color_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int static_nexthop_color_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_nb_config.c:377,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:379,1
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:388,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_nb_config.c:389,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 394
    functionName: static_nexthop_bh_type_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    - snprintf
    linkageType: ''
    returnType: int
    signature: int static_nexthop_bh_type_modify(struct nb_cb_modify_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:401,1
    - Dst: static_install_nexthop
      Src: /src/frr/staticd/static_nb_config.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 404
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_apply_finish
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_install_nexthop
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:411,1
    - Dst: static_install_nexthop
      Src: /src/frr/staticd/static_nb_config.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 414
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_apply_finish
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_install_nexthop
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/staticd/static_nb_config.c:422,1
    - Dst: yang_get_list_elements_count
      Src: /src/frr/staticd/static_nb_config.c:423,1
    - Dst: lyd_child
      Src: /src/frr/staticd/static_nb_config.c:423,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_pre_validate_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 432
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_pre_validate
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_dnode_get
    - yang_get_list_elements_count
    - lyd_child
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_pre_validate(\n\tstruct
      nb_cb_pre_validate_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:439,1
    - Dst: strmatch
      Src: /src/frr/staticd/static_nb_config.c:440,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 446
    functionName: routing_control_plane_protocols_name_validate
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_name_validate(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_nb_config.c:466,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:467,1
    - Dst: yang_afi_safi_identity2value
      Src: /src/frr/staticd/static_nb_config.c:468,1
    - Dst: family2afi
      Src: /src/frr/staticd/static_nb_config.c:469,1
    - Dst: flog_warn
      Src: /src/frr/staticd/static_nb_config.c:471,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:474,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_nb_config.c:482,1
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:484,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_nb_config.c:487,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:488,1
    - Dst: yang_afi_safi_identity2value
      Src: /src/frr/staticd/static_nb_config.c:489,1
    - Dst: static_add_route
      Src: /src/frr/staticd/static_nb_config.c:491,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_nb_config.c:493,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:496,1
    - Dst: nb_running_set_entry
      Src: /src/frr/staticd/static_nb_config.c:497,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 501
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - flog_warn
    - snprintf
    - yang_dnode_get_parent
    - nb_running_get_entry
    - yang_dnode_get_string
    - yang_afi_safi_identity2value
    - family2afi
    - yang_dnode_get_prefix
    - static_add_route
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/staticd/static_nb_config.c:514,1
    - Dst: static_del_route
      Src: /src/frr/staticd/static_nb_config.c:515,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 519
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - static_del_route
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_path_list_create
      Src: /src/frr/staticd/static_nb_config.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 529
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_path_list_create
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_path_list_destroy
      Src: /src/frr/staticd/static_nb_config.c:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 535
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_path_list_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_path_list_tag_modify
      Src: /src/frr/staticd/static_nb_config.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 545
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_tag_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_path_list_tag_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_tag_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_create
      Src: /src/frr/staticd/static_nb_config.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 555
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_create
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_destroy
      Src: /src/frr/staticd/static_nb_config.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 561
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_bh_type_modify
      Src: /src/frr/staticd/static_nb_config.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 567
    functionDepth: 2
    functionLinenumber: 567
    functionLinenumberEnd: 571
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_bh_type_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_bh_type_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_bh_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_onlink_modify
      Src: /src/frr/staticd/static_nb_config.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 581
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_onlink_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_onlink_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_onlink_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_color_modify
      Src: /src/frr/staticd/static_nb_config.c:596,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 587
    functionDepth: 2
    functionLinenumber: 587
    functionLinenumberEnd: 602
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_color_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_color_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_color_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_color_destroy
      Src: /src/frr/staticd/static_nb_config.c:613,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 618
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_color_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_color_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_color_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_mpls_label_stack_entry_create
      Src: /src/frr/staticd/static_nb_config.c:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 624
    functionDepth: 2
    functionLinenumber: 624
    functionLinenumberEnd: 628
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nexthop_mpls_label_stack_entry_create
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_mpls_label_stack_entry_destroy
      Src: /src/frr/staticd/static_nb_config.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 634
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nexthop_mpls_label_stack_entry_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_mpls_label_modify
      Src: /src/frr/staticd/static_nb_config.c:649,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 654
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_mpls_label_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 672
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 690
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 704
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 722
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 736
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:749,1
    - Dst: static_next_hop_bfd_monitor_enable
      Src: /src/frr/staticd/static_nb_config.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 752
    functionName: route_next_hop_bfd_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_next_hop_bfd_monitor_enable
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int route_next_hop_bfd_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:761,1
    - Dst: static_next_hop_bfd_monitor_disable
      Src: /src/frr/staticd/static_nb_config.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 764
    functionName: route_next_hop_bfd_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - static_next_hop_bfd_monitor_disable
    linkageType: ''
    returnType: int
    signature: int route_next_hop_bfd_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:778,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/staticd/static_nb_config.c:779,1
    - Dst: static_next_hop_bfd_source
      Src: /src/frr/staticd/static_nb_config.c:780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 782
    functionName: route_next_hop_bfd_source_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ip
    - static_next_hop_bfd_source
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int route_next_hop_bfd_source_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:791,1
    - Dst: static_next_hop_bfd_auto_source
      Src: /src/frr/staticd/static_nb_config.c:792,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 794
    functionName: route_next_hop_bfd_source_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - static_next_hop_bfd_auto_source
    linkageType: ''
    returnType: int
    signature: int route_next_hop_bfd_source_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:807,1
    - Dst: static_next_hop_bfd_multi_hop
      Src: /src/frr/staticd/static_nb_config.c:808,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/staticd/static_nb_config.c:809,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 812
    functionName: route_next_hop_bfd_multi_hop_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - static_next_hop_bfd_multi_hop
    linkageType: ''
    returnType: int
    signature: int route_next_hop_bfd_multi_hop_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:825,1
    - Dst: static_next_hop_bfd_profile
      Src: /src/frr/staticd/static_nb_config.c:826,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_nb_config.c:827,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 830
    functionName: route_next_hop_bfd_profile_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - static_next_hop_bfd_profile
    linkageType: ''
    returnType: int
    signature: int route_next_hop_bfd_profile_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:839,1
    - Dst: static_next_hop_bfd_profile
      Src: /src/frr/staticd/static_nb_config.c:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 832
    functionDepth: 1
    functionLinenumber: 832
    functionLinenumberEnd: 843
    functionName: route_next_hop_bfd_profile_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - static_next_hop_bfd_profile
    linkageType: ''
    returnType: int
    signature: int route_next_hop_bfd_profile_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/staticd/static_nb_config.c:866,1
    - Dst: route_table_get_info
      Src: /src/frr/staticd/static_nb_config.c:867,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/staticd/static_nb_config.c:869,1
    - Dst: family2afi
      Src: /src/frr/staticd/static_nb_config.c:870,1
    - Dst: static_add_route
      Src: /src/frr/staticd/static_nb_config.c:872,1
    - Dst: nb_running_set_entry
      Src: /src/frr/staticd/static_nb_config.c:873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 877
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - route_table_get_info
    - nb_running_get_entry
    - family2afi
    - static_add_route
    - yang_dnode_get_ipv6p
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/staticd/static_nb_config.c:890,1
    - Dst: static_del_route
      Src: /src/frr/staticd/static_nb_config.c:891,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 896
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - static_del_route
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_path_list_create
      Src: /src/frr/staticd/static_nb_config.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 906
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_path_list_create
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_path_list_destroy
      Src: /src/frr/staticd/static_nb_config.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 908
    functionDepth: 2
    functionLinenumber: 908
    functionLinenumberEnd: 912
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_path_list_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_path_list_tag_modify
      Src: /src/frr/staticd/static_nb_config.c:921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 922
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_tag_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_path_list_tag_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_tag_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_create
      Src: /src/frr/staticd/static_nb_config.c:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 932
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_create
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_destroy
      Src: /src/frr/staticd/static_nb_config.c:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 934
    functionDepth: 2
    functionLinenumber: 934
    functionLinenumberEnd: 938
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_bh_type_modify
      Src: /src/frr/staticd/static_nb_config.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 948
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_bh_type_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_bh_type_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_bh_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_onlink_modify
      Src: /src/frr/staticd/static_nb_config.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 954
    functionDepth: 2
    functionLinenumber: 954
    functionLinenumberEnd: 958
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_onlink_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_onlink_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_onlink_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_color_modify
      Src: /src/frr/staticd/static_nb_config.c:973,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 964
    functionDepth: 2
    functionLinenumber: 964
    functionLinenumberEnd: 979
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_color_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_color_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_color_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_color_destroy
      Src: /src/frr/staticd/static_nb_config.c:991,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 982
    functionDepth: 2
    functionLinenumber: 982
    functionLinenumberEnd: 996
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_color_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_color_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_color_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_mpls_label_stack_entry_create
      Src: /src/frr/staticd/static_nb_config.c:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 1002
    functionDepth: 2
    functionLinenumber: 1002
    functionLinenumberEnd: 1006
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_create
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nexthop_mpls_label_stack_entry_create
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_mpls_label_stack_entry_destroy
      Src: /src/frr/staticd/static_nb_config.c:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1008
    functionDepth: 2
    functionLinenumber: 1008
    functionLinenumberEnd: 1012
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - nexthop_mpls_label_stack_entry_destroy
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_mpls_label_modify
      Src: /src/frr/staticd/static_nb_config.c:1027,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1018
    functionDepth: 2
    functionLinenumber: 1018
    functionLinenumberEnd: 1032
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached:
    - static_nexthop_mpls_label_modify
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1034
    functionDepth: 0
    functionLinenumber: 1034
    functionLinenumberEnd: 1050
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_label_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1056
    functionDepth: 0
    functionLinenumber: 1056
    functionLinenumberEnd: 1068
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1082
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1088
    functionDepth: 0
    functionLinenumber: 1088
    functionLinenumberEnd: 1100
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_modify
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1102
    functionDepth: 0
    functionLinenumber: 1102
    functionLinenumberEnd: 1114
    functionName: routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_destroy
    functionSourceFile: /src/frr/staticd/static_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/staticd/static_vrf.c:29,1
    - Dst: srcdest_table_init
      Src: /src/frr/staticd/static_vrf.c:34,1
    - Dst: route_table_init
      Src: /src/frr/staticd/static_vrf.c:36,1
    - Dst: XCALLOC
      Src: /src/frr/staticd/static_vrf.c:38,1
    - Dst: route_table_set_info
      Src: /src/frr/staticd/static_vrf.c:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 50
    functionName: static_vrf_alloc
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - route_table_init
    - srcdest_table_init
    - route_table_set_info
    - XCALLOC
    linkageType: ''
    returnType: struct static_vrf
    signature: struct static_vrf *static_vrf_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_vrf_alloc
      Src: /src/frr/staticd/static_vrf.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 61
    functionName: static_vrf_new
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - static_vrf_alloc
    linkageType: ''
    returnType: int
    signature: int static_vrf_new(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_zebra_vrf_register
      Src: /src/frr/staticd/static_vrf.c:65,1
    - Dst: static_fixup_vrf_ids
      Src: /src/frr/staticd/static_vrf.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: static_vrf_enable
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - static_zebra_vrf_register
    - static_fixup_vrf_ids
    linkageType: ''
    returnType: int
    signature: int static_vrf_enable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_zebra_vrf_unregister
      Src: /src/frr/staticd/static_vrf.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: static_vrf_disable
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - static_zebra_vrf_unregister
    linkageType: ''
    returnType: int
    signature: int static_vrf_disable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_info
      Src: /src/frr/staticd/static_vrf.c:90,1
    - Dst: route_table_finish
      Src: /src/frr/staticd/static_vrf.c:91,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_vrf.c:92,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_vrf.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 98
    functionName: static_vrf_delete
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - route_table_finish
    - route_table_get_info
    - XFREE
    linkageType: ''
    returnType: int
    signature: int static_vrf_delete(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - afi
    - safi
    - svrf
    argTypes:
    - afi_t
    - safi_t
    - struct static_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 111
    functionName: static_vrf_static_table
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct route_table
    signature: "struct route_table *static_vrf_static_table(afi_t afi, safi_t safi,\n\t\t\t\t\t
      \   struct static_vrf *svrf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/staticd/static_vrf.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 125
    functionName: static_vrf_lookup_by_name
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - vrf_lookup_by_name
    linkageType: ''
    returnType: struct static_vrf
    signature: struct static_vrf *static_vrf_lookup_by_name(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/staticd/static_vrf.c:132,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/staticd/static_vrf.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 139
    functionName: static_vrf_config_write
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int static_vrf_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/staticd/static_vrf.c:143,1
    - Dst: vrf_cmd_init
      Src: /src/frr/staticd/static_vrf.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 147
    functionName: static_vrf_init
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 1
    functionsReached:
    - vrf_init
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void static_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_terminate
      Src: /src/frr/staticd/static_vrf.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: static_vrf_terminate
    functionSourceFile: /src/frr/staticd/static_vrf.c
    functionUses: 0
    functionsReached:
    - vrf_terminate
    linkageType: ''
    returnType: void
    signature: void static_vrf_terminate(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/staticd/static_routes.c:44,1
    - Dst: frr_each_safe
      Src: /src/frr/staticd/static_routes.c:45,1
    - Dst: static_nexthop_list_del
      Src: /src/frr/staticd/static_routes.c:47,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:48,1
    - Dst: static_path_list_del
      Src: /src/frr/staticd/static_routes.c:50,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:51,1
    - Dst: srcdest_srcnode_table
      Src: /src/frr/staticd/static_routes.c:55,1
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:60,1
    - Dst: route_next
      Src: /src/frr/staticd/static_routes.c:61,1
    - Dst: frr_each_safe
      Src: /src/frr/staticd/static_routes.c:64,1
    - Dst: frr_each_safe
      Src: /src/frr/staticd/static_routes.c:66,1
    - Dst: static_nexthop_list_del
      Src: /src/frr/staticd/static_routes.c:69,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:72,1
    - Dst: static_path_list_del
      Src: /src/frr/staticd/static_routes.c:74,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:76,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:79,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 85
    functionName: zebra_stable_node_cleanup
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_path_list_del
    - route_top
    - route_next
    - frr_each_safe
    - XFREE
    - static_nexthop_list_del
    - srcdest_srcnode_table
    linkageType: ''
    returnType: void
    signature: "void zebra_stable_node_cleanup(struct route_table *table,\n\t\t\t
      \      struct route_node *node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:92,1
    - Dst: static_zebra_nht_register
      Src: /src/frr/staticd/static_routes.c:93,1
    - Dst: static_nexthop_list_count
      Src: /src/frr/staticd/static_routes.c:95,1
    - Dst: static_zebra_route_add
      Src: /src/frr/staticd/static_routes.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct static_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: static_install_path
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 1
    functionsReached:
    - static_zebra_nht_register
    - static_nexthop_list_count
    - static_zebra_route_add
    - frr_each
    linkageType: ''
    returnType: void
    signature: void static_install_path(struct static_path *pn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_list_count
      Src: /src/frr/staticd/static_routes.c:102,1
    - Dst: static_zebra_route_add
      Src: /src/frr/staticd/static_routes.c:103,1
    - Dst: static_zebra_route_add
      Src: /src/frr/staticd/static_routes.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct static_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: static_uninstall_path
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_nexthop_list_count
    - static_zebra_route_add
    linkageType: ''
    returnType: void
    signature: void static_uninstall_path(struct static_path *pn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/staticd/static_routes.c:116,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/staticd/static_routes.c:119,1
    - Dst: XCALLOC
      Src: /src/frr/staticd/static_routes.c:121,1
    - Dst: static_path_list_init
      Src: /src/frr/staticd/static_routes.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - afi
    - safi
    - p
    - src_p
    - svrf
    argTypes:
    - afi_t
    - safi_t
    - struct prefix*
    - struct prefix_ipv6*
    - struct static_vrf*
    assertStmts:
    - condition: (stable)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/frr/staticd/static_routes.c
    constantsTouched: []
    func_position:
      end: 130
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 130
    functionName: static_add_route
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 2
    functionsReached:
    - static_path_list_init
    - XCALLOC
    - assert
    - srcdest_rnode_get
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *static_add_route(afi_t afi, safi_t safi, struct
      prefix *p,\n\t\t\t\t    struct prefix_ipv6 *src_p,\n\t\t\t\t    struct static_vrf
      *svrf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/staticd/static_routes.c:140,1
    - Dst: static_del_path
      Src: /src/frr/staticd/static_routes.c:141,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:144,1
    - Dst: route_unlock_node
      Src: /src/frr/staticd/static_routes.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: static_del_src_route
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - frr_each_safe
    - XFREE
    - static_del_path
    linkageType: ''
    returnType: void
    signature: void static_del_src_route(struct route_node *rn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/staticd/static_routes.c:157,1
    - Dst: static_del_path
      Src: /src/frr/staticd/static_routes.c:158,1
    - Dst: srcdest_srcnode_table
      Src: /src/frr/staticd/static_routes.c:162,1
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:167,1
    - Dst: route_next
      Src: /src/frr/staticd/static_routes.c:168,1
    - Dst: static_del_src_route
      Src: /src/frr/staticd/static_routes.c:169,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:172,1
    - Dst: route_unlock_node
      Src: /src/frr/staticd/static_routes.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 174
    functionName: static_del_route
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - route_top
    - static_del_src_route
    - route_next
    - frr_each_safe
    - XFREE
    - srcdest_srcnode_table
    - static_del_path
    linkageType: ''
    returnType: void
    signature: void static_del_route(struct route_node *rn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/staticd/static_routes.c:182,1
    - Dst: if_address_is_local
      Src: /src/frr/staticd/static_routes.c:189,1
    - Dst: if_address_is_local
      Src: /src/frr/staticd/static_routes.c:195,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - nh_vrf_name
    - type
    - ipaddr
    argTypes:
    - char*
    - enum static_nh_type
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 205
    functionName: static_add_nexthop_validate
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 1
    functionsReached:
    - vrf_lookup_by_name
    - if_address_is_local
    linkageType: ''
    returnType: bool
    signature: "bool static_add_nexthop_validate(const char *nh_vrf_name,\n\t\t\t\t
      enum static_nh_type type,\n\t\t\t\t struct ipaddr *ipaddr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/staticd/static_routes.c:213,1
    - Dst: XCALLOC
      Src: /src/frr/staticd/static_routes.c:216,1
    - Dst: static_nexthop_list_init
      Src: /src/frr/staticd/static_routes.c:221,1
    - Dst: static_path_list_add_head
      Src: /src/frr/staticd/static_routes.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - rn
    - table_id
    - distance
    argTypes:
    - struct route_node*
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 227
    functionName: static_add_path
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 1
    functionsReached:
    - static_path_list_add_head
    - route_lock_node
    - static_nexthop_list_init
    - XCALLOC
    linkageType: ''
    returnType: struct static_path
    signature: "struct static_path *static_add_path(struct route_node *rn, uint32_t
      table_id,\n\t\t\t\t    uint8_t distance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_path_list_del
      Src: /src/frr/staticd/static_routes.c:237,1
    - Dst: frr_each_safe
      Src: /src/frr/staticd/static_routes.c:239,1
    - Dst: static_delete_nexthop
      Src: /src/frr/staticd/static_routes.c:240,1
    - Dst: route_unlock_node
      Src: /src/frr/staticd/static_routes.c:243,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct static_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 246
    functionName: static_del_path
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 3
    functionsReached:
    - route_unlock_node
    - static_path_list_del
    - frr_each_safe
    - XFREE
    - static_delete_nexthop
    linkageType: ''
    returnType: void
    signature: void static_del_path(struct static_path *pn)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/staticd/static_routes.c:260,1
    - Dst: static_vrf_lookup_by_name
      Src: /src/frr/staticd/static_routes.c:262,1
    - Dst: XCALLOC
      Src: /src/frr/staticd/static_routes.c:265,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.c:278,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.c:281,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:301,1
    - Dst: ntohl
      Src: /src/frr/staticd/static_routes.c:304,1
    - Dst: ntohl
      Src: /src/frr/staticd/static_routes.c:305,1
    - Dst: ntohl
      Src: /src/frr/staticd/static_routes.c:307,1
    - Dst: ntohl
      Src: /src/frr/staticd/static_routes.c:308,1
    - Dst: static_nexthop_list_add_after
      Src: /src/frr/staticd/static_routes.c:312,1
    - Dst: zlog_warn
      Src: /src/frr/staticd/static_routes.c:315,1
    - Dst: if_lookup_by_name
      Src: /src/frr/staticd/static_routes.c:330,1
    - Dst: zlog_warn
      Src: /src/frr/staticd/static_routes.c:334,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 6
    argNames:
    - pn
    - type
    - ipaddr
    - ifname
    - nh_vrf
    - color
    argTypes:
    - struct static_path*
    - enum static_nh_type
    - struct ipaddr*
    - char*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 341
    functionName: static_add_nexthop
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 1
    functionsReached:
    - route_lock_node
    - if_lookup_by_name
    - frr_each
    - XCALLOC
    - static_vrf_lookup_by_name
    - strlcpy
    - static_nexthop_list_add_after
    - zlog_warn
    - ntohl
    linkageType: ''
    returnType: struct static_nexthop
    signature: "struct static_nexthop *static_add_nexthop(struct static_path *pn,\n\t\t\t\t\t
      \ enum static_nh_type type,\n\t\t\t\t\t  struct ipaddr *ipaddr,\n\t\t\t\t\t
      \ const char *ifname,\n\t\t\t\t\t  const char *nh_vrf, uint32_t color)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: static_get_nh_str
      Src: /src/frr/staticd/static_routes.c:352,1
    - Dst: DEBUGD
      Src: /src/frr/staticd/static_routes.c:353,1
    - Dst: static_zebra_nht_register
      Src: /src/frr/staticd/static_routes.c:363,1
    - Dst: static_zebra_nht_register
      Src: /src/frr/staticd/static_routes.c:367,1
    - Dst: static_install_path
      Src: /src/frr/staticd/static_routes.c:370,1
    - Dst: if_lookup_by_name
      Src: /src/frr/staticd/static_routes.c:373,1
    - Dst: static_install_path
      Src: /src/frr/staticd/static_routes.c:375,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct static_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 379
    functionName: static_install_nexthop
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 2
    functionsReached:
    - if_lookup_by_name
    - DEBUGD
    - static_zebra_nht_register
    - static_get_nh_str
    - static_install_path
    linkageType: ''
    returnType: void
    signature: void static_install_nexthop(struct static_nexthop *nh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_nexthop_list_del
      Src: /src/frr/staticd/static_routes.c:386,1
    - Dst: bfd_sess_free
      Src: /src/frr/staticd/static_routes.c:388,1
    - Dst: static_zebra_nht_register
      Src: /src/frr/staticd/static_routes.c:393,1
    - Dst: static_uninstall_path
      Src: /src/frr/staticd/static_routes.c:398,1
    - Dst: route_unlock_node
      Src: /src/frr/staticd/static_routes.c:401,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_routes.c:403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct static_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 404
    functionName: static_delete_nexthop
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - static_zebra_nht_register
    - XFREE
    - static_uninstall_path
    - static_nexthop_list_del
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: void static_delete_nexthop(struct static_nexthop *nh)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/staticd/static_routes.c:415,1
    - Dst: static_uninstall_path
      Src: /src/frr/staticd/static_routes.c:429,1
    - Dst: static_install_path
      Src: /src/frr/staticd/static_routes.c:430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 7
    argNames:
    - ifp
    - up
    - rn
    - pn
    - nh
    - svrf
    - safi
    argTypes:
    - struct interface*
    - bool
    - struct route_node*
    - struct static_path*
    - struct static_nexthop*
    - struct static_vrf*
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 431
    functionName: static_ifindex_update_nh
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_uninstall_path
    - static_install_path
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void static_ifindex_update_nh(struct interface *ifp, bool up,\n\t\t\t\t
      \    struct route_node *rn,\n\t\t\t\t     struct static_path *pn,\n\t\t\t\t
      \    struct static_nexthop *nh,\n\t\t\t\t     struct static_vrf *svrf, safi_t
      safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_routes.c:443,1
    - Dst: static_vrf_static_table
      Src: /src/frr/staticd/static_routes.c:448,1
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:451,1
    - Dst: srcdest_route_next
      Src: /src/frr/staticd/static_routes.c:451,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_routes.c:452,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:455,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:456,1
    - Dst: static_ifindex_update_nh
      Src: /src/frr/staticd/static_routes.c:458,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - ifp
    - up
    - afi
    - safi
    argTypes:
    - struct interface*
    - bool
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 433
    functionDepth: 5
    functionLinenumber: 433
    functionLinenumberEnd: 465
    functionName: static_ifindex_update_af
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_ifindex_update_nh
    - srcdest_route_next
    - frr_each
    - route_top
    - static_vrf_static_table
    - RB_FOREACH
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_ifindex_update_af(struct interface *ifp, bool up, afi_t
      afi,\n\t\t\t\t     safi_t safi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:488,1
    - Dst: route_next
      Src: /src/frr/staticd/static_routes.c:488,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_routes.c:489,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:492,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:493,1
    - Dst: strcmp
      Src: /src/frr/staticd/static_routes.c:494,1
    - Dst: if_lookup_by_name
      Src: /src/frr/staticd/static_routes.c:501,1
    - Dst: static_install_path
      Src: /src/frr/staticd/static_routes.c:509,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - svrf
    - stable
    - afi
    - safi
    argTypes:
    - struct static_vrf*
    - struct route_table*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 479
    functionDepth: 4
    functionLinenumber: 479
    functionLinenumberEnd: 513
    functionName: static_fixup_vrf
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - frr_each
    - strcmp
    - route_top
    - route_next
    - static_install_path
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_fixup_vrf(struct static_vrf *svrf,\n\t\t\t     struct
      route_table *stable, afi_t afi, safi_t safi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:534,1
    - Dst: route_next
      Src: /src/frr/staticd/static_routes.c:534,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_routes.c:535,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:538,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:539,1
    - Dst: if_lookup_by_name
      Src: /src/frr/staticd/static_routes.c:541,1
    - Dst: static_install_path
      Src: /src/frr/staticd/static_routes.c:550,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - svrf
    - stable
    - afi
    - safi
    argTypes:
    - struct static_vrf*
    - struct route_table*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 524
    functionDepth: 4
    functionLinenumber: 524
    functionLinenumberEnd: 554
    functionName: static_enable_vrf
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - frr_each
    - route_top
    - route_next
    - static_install_path
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_enable_vrf(struct static_vrf *svrf,\n\t\t\t      struct
      route_table *stable, afi_t afi,\n\t\t\t      safi_t safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_routes.c:570,1
    - Dst: static_fixup_vrf
      Src: /src/frr/staticd/static_routes.c:580,1
    - Dst: static_enable_vrf
      Src: /src/frr/staticd/static_routes.c:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - enable_svrf
    argTypes:
    - struct static_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 563
    functionDepth: 5
    functionLinenumber: 563
    functionLinenumberEnd: 586
    functionName: static_fixup_vrf_ids
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 2
    functionsReached:
    - static_fixup_vrf
    - static_enable_vrf
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void static_fixup_vrf_ids(struct static_vrf *enable_svrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_fixup_vrf
      Src: /src/frr/staticd/static_routes.c:580,1
    - Dst: static_enable_vrf
      Src: /src/frr/staticd/static_routes.c:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 575
    functionDepth: 5
    functionLinenumber: 575
    functionLinenumberEnd: 584
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_fixup_vrf
    - static_enable_vrf
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:607,1
    - Dst: route_next
      Src: /src/frr/staticd/static_routes.c:607,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_routes.c:608,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:611,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:612,1
    - Dst: strcmp
      Src: /src/frr/staticd/static_routes.c:613,1
    - Dst: static_uninstall_path
      Src: /src/frr/staticd/static_routes.c:617,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - svrf
    - stable
    - afi
    - safi
    argTypes:
    - struct static_vrf*
    - struct route_table*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 598
    functionDepth: 3
    functionLinenumber: 598
    functionLinenumberEnd: 621
    functionName: static_cleanup_vrf
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - frr_each
    - strcmp
    - route_top
    - route_next
    - static_uninstall_path
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_cleanup_vrf(struct static_vrf *svrf,\n\t\t\t       struct
      route_table *stable,\n\t\t\t       afi_t afi, safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:639,1
    - Dst: route_next
      Src: /src/frr/staticd/static_routes.c:639,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_routes.c:640,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:643,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:644,1
    - Dst: static_uninstall_path
      Src: /src/frr/staticd/static_routes.c:645,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - stable
    - afi
    - safi
    argTypes:
    - struct route_table*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 631
    functionDepth: 3
    functionLinenumber: 631
    functionLinenumberEnd: 649
    functionName: static_disable_vrf
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - frr_each
    - route_top
    - route_next
    - static_uninstall_path
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_disable_vrf(struct route_table *stable,\n\t\t\t       afi_t
      afi, safi_t safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_routes.c:665,1
    - Dst: static_cleanup_vrf
      Src: /src/frr/staticd/static_routes.c:678,1
    - Dst: static_disable_vrf
      Src: /src/frr/staticd/static_routes.c:681,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - disable_svrf
    argTypes:
    - struct static_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 659
    functionDepth: 4
    functionLinenumber: 659
    functionLinenumberEnd: 684
    functionName: static_cleanup_vrf_ids
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_cleanup_vrf
    - RB_FOREACH
    - static_disable_vrf
    linkageType: ''
    returnType: void
    signature: void static_cleanup_vrf_ids(struct static_vrf *disable_svrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cleanup_vrf
      Src: /src/frr/staticd/static_routes.c:678,1
    - Dst: static_disable_vrf
      Src: /src/frr/staticd/static_routes.c:681,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 671
    functionDepth: 4
    functionLinenumber: 671
    functionLinenumberEnd: 682
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_cleanup_vrf
    - static_disable_vrf
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/staticd/static_routes.c:704,1
    - Dst: route_next
      Src: /src/frr/staticd/static_routes.c:704,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_routes.c:705,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:708,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_routes.c:709,1
    - Dst: static_install_path
      Src: /src/frr/staticd/static_routes.c:716,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - stable
    - ifp
    - afi
    - safi
    argTypes:
    - struct route_table*
    - struct interface*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 695
    functionDepth: 4
    functionLinenumber: 695
    functionLinenumberEnd: 720
    functionName: static_fixup_intf_nh
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - frr_each
    - route_top
    - route_next
    - static_install_path
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_fixup_intf_nh(struct route_table *stable,\n\t\t\t\t struct
      interface *ifp,\n\t\t\t\t afi_t afi, safi_t safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_routes.c:733,1
    - Dst: static_fixup_intf_nh
      Src: /src/frr/staticd/static_routes.c:746,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 726
    functionDepth: 5
    functionLinenumber: 726
    functionLinenumberEnd: 749
    functionName: static_install_intf_nh
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 1
    functionsReached:
    - static_fixup_intf_nh
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void static_install_intf_nh(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_fixup_intf_nh
      Src: /src/frr/staticd/static_routes.c:746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 741
    functionDepth: 5
    functionLinenumber: 741
    functionLinenumberEnd: 747
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - static_fixup_intf_nh
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_ifindex_update_af
      Src: /src/frr/staticd/static_routes.c:754,1
    - Dst: static_ifindex_update_af
      Src: /src/frr/staticd/static_routes.c:755,1
    - Dst: static_ifindex_update_af
      Src: /src/frr/staticd/static_routes.c:756,1
    - Dst: static_ifindex_update_af
      Src: /src/frr/staticd/static_routes.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - up
    argTypes:
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 752
    functionDepth: 6
    functionLinenumber: 752
    functionLinenumberEnd: 758
    functionName: static_ifindex_update
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 4
    functionsReached:
    - static_ifindex_update_af
    linkageType: ''
    returnType: void
    signature: void static_ifindex_update(struct interface *ifp, bool up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_table
      Src: /src/frr/staticd/static_routes.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 766
    functionName: static_get_stable_info
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 0
    functionsReached:
    - srcdest_rnode_table
    linkageType: ''
    returnType: struct stable_info
    signature: struct stable_info *static_get_stable_info(struct route_node *rn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/staticd/static_routes.c:772,1
    - Dst: snprintfrr
      Src: /src/frr/staticd/static_routes.c:775,1
    - Dst: snprintfrr
      Src: /src/frr/staticd/static_routes.c:778,1
    - Dst: snprintfrr
      Src: /src/frr/staticd/static_routes.c:782,1
    - Dst: snprintfrr
      Src: /src/frr/staticd/static_routes.c:785,1
    - Dst: snprintfrr
      Src: /src/frr/staticd/static_routes.c:788,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - nh
    - nexthop
    - size
    argTypes:
    - struct static_nexthop*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 792
    functionName: static_get_nh_str
    functionSourceFile: /src/frr/staticd/static_routes.c
    functionUses: 1
    functionsReached:
    - snprintfrr
    linkageType: ''
    returnType: void
    signature: void static_get_nh_str(struct static_nexthop *nh, char *nexthop, size_t
      size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/staticd/static_bfd.c:35,1
    - Dst: static_zebra_route_add
      Src: /src/frr/staticd/static_bfd.c:38,1
    - Dst: DEBUGD
      Src: /src/frr/staticd/static_bfd.c:42,1
    - Dst: static_zebra_route_add
      Src: /src/frr/staticd/static_bfd.c:45,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - sn
    - bss
    argTypes:
    - struct static_nexthop*
    - struct bfd_session_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 48
    functionName: static_next_hop_bfd_change
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - static_zebra_route_add
    linkageType: ''
    returnType: void
    signature: "void static_next_hop_bfd_change(struct static_nexthop *sn,\n\t\t\t\t
      \      const struct bfd_session_status *bss)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_next_hop_bfd_change
      Src: /src/frr/staticd/static_bfd.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - bsp
    - bss
    - arg
    argTypes:
    - struct bfd_session_params*
    - struct bfd_session_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: static_next_hop_bfd_updatecb
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - static_next_hop_bfd_change
    linkageType: ''
    returnType: void
    signature: "void static_next_hop_bfd_updatecb(\n\t__attribute__((unused)) struct
      bfd_session_params *bsp,\n\tconst struct bfd_session_status *bss, void *arg)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/staticd/static_bfd.c:74,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - sn
    argTypes:
    - struct static_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 79
    functionName: static_next_hop_type_to_family
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - zlog_err
    linkageType: ''
    returnType: int
    signature: int static_next_hop_type_to_family(const struct static_nexthop *sn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_bfd.c:93,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_bfd.c:94,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_bfd.c:95,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/staticd/static_bfd.c:96,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/staticd/static_bfd.c:97,1
    - Dst: static_next_hop_type_to_family
      Src: /src/frr/staticd/static_bfd.c:100,1
    - Dst: bfd_sess_new
      Src: /src/frr/staticd/static_bfd.c:110,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/staticd/static_bfd.c:114,1
    - Dst: bfd_sess_set_auto_source
      Src: /src/frr/staticd/static_bfd.c:117,1
    - Dst: bfd_sess_set_auto_source
      Src: /src/frr/staticd/static_bfd.c:119,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/staticd/static_bfd.c:123,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/staticd/static_bfd.c:127,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/staticd/static_bfd.c:131,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/staticd/static_bfd.c:133,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_bfd.c:133,1
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/staticd/static_bfd.c:137,1
    - Dst: bfd_sess_install
      Src: /src/frr/staticd/static_bfd.c:140,1
    - Dst: bfd_sess_status
      Src: /src/frr/staticd/static_bfd.c:143,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - sn
    - dnode
    argTypes:
    - struct static_nexthop*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 144
    functionName: static_next_hop_bfd_monitor_enable
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 1
    functionsReached:
    - yang_dnode_get_bool
    - bfd_sess_set_profile
    - static_next_hop_type_to_family
    - bfd_sess_new
    - yang_dnode_get_ip
    - bfd_sess_set_auto_source
    - bfd_sess_install
    - bfd_sess_set_hop_count
    - bfd_sess_set_ipv4_addrs
    - yang_dnode_get_string
    - bfd_sess_status
    - bfd_sess_set_interface
    - yang_dnode_exists
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: "void static_next_hop_bfd_monitor_enable(struct static_nexthop *sn,\n\t\t\t\t\tconst
      struct lyd_node *dnode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_free
      Src: /src/frr/staticd/static_bfd.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sn
    argTypes:
    - struct static_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 152
    functionName: static_next_hop_bfd_monitor_disable
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: void static_next_hop_bfd_monitor_disable(struct static_nexthop *sn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_next_hop_type_to_family
      Src: /src/frr/staticd/static_bfd.c:162,1
    - Dst: bfd_sess_set_auto_source
      Src: /src/frr/staticd/static_bfd.c:166,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/staticd/static_bfd.c:168,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/staticd/static_bfd.c:171,1
    - Dst: bfd_sess_install
      Src: /src/frr/staticd/static_bfd.c:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - sn
    - source
    argTypes:
    - struct static_nexthop*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 175
    functionName: static_next_hop_bfd_source
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 1
    functionsReached:
    - static_next_hop_type_to_family
    - bfd_sess_install
    - bfd_sess_set_auto_source
    - bfd_sess_set_ipv4_addrs
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: "void static_next_hop_bfd_source(struct static_nexthop *sn,\n\t\t\t\tconst
      struct ipaddr *source)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_set_auto_source
      Src: /src/frr/staticd/static_bfd.c:182,1
    - Dst: bfd_sess_install
      Src: /src/frr/staticd/static_bfd.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sn
    argTypes:
    - struct static_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: static_next_hop_bfd_auto_source
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_sess_install
    - bfd_sess_set_auto_source
    linkageType: ''
    returnType: void
    signature: void static_next_hop_bfd_auto_source(struct static_nexthop *sn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/staticd/static_bfd.c:191,1
    - Dst: bfd_sess_install
      Src: /src/frr/staticd/static_bfd.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sn
    - mhop
    argTypes:
    - struct static_nexthop*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 193
    functionName: static_next_hop_bfd_multi_hop
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_sess_install
    - bfd_sess_set_hop_count
    linkageType: ''
    returnType: void
    signature: void static_next_hop_bfd_multi_hop(struct static_nexthop *sn, bool
      mhop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_set_profile
      Src: /src/frr/staticd/static_bfd.c:200,1
    - Dst: bfd_sess_install
      Src: /src/frr/staticd/static_bfd.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sn
    - name
    argTypes:
    - struct static_nexthop*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 202
    functionName: static_next_hop_bfd_profile
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 2
    functionsReached:
    - bfd_sess_set_profile
    - bfd_sess_install
    linkageType: ''
    returnType: void
    signature: void static_next_hop_bfd_profile(struct static_nexthop *sn, const char
      *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_init
      Src: /src/frr/staticd/static_bfd.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zc
    - tm
    argTypes:
    - struct zclient*
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: static_bfd_initialize
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_protocol_integration_init
    linkageType: ''
    returnType: void
    signature: void static_bfd_initialize(struct zclient *zc, struct event_loop *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/staticd/static_bfd.c:220,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/staticd/static_bfd.c:222,1
    - Dst: json_object_string_addf
      Src: /src/frr/staticd/static_bfd.c:224,1
    - Dst: json_object_string_addf
      Src: /src/frr/staticd/static_bfd.c:226,1
    - Dst: json_object_string_add
      Src: /src/frr/staticd/static_bfd.c:227,1
    - Dst: json_object_boolean_add
      Src: /src/frr/staticd/static_bfd.c:229,1
    - Dst: json_object_array_add
      Src: /src/frr/staticd/static_bfd.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - jo
    - sn
    argTypes:
    - struct vty*
    - struct json_object*
    - struct static_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 232
    functionName: static_bfd_show_nexthop_json
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - json_object_array_add
    - srcdest_rnode_prefixes
    - json_object_string_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void static_bfd_show_nexthop_json(struct vty *vty,\n\t\t\t\t\t struct
      json_object *jo,\n\t\t\t\t\t const struct static_nexthop *sn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/staticd/static_bfd.c:239,1
    - Dst: srcdest_route_next
      Src: /src/frr/staticd/static_bfd.c:239,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_bfd.c:240,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_bfd.c:246,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_bfd.c:249,1
    - Dst: static_bfd_show_nexthop_json
      Src: /src/frr/staticd/static_bfd.c:254,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - jo
    - rt
    argTypes:
    - struct vty*
    - struct json_object*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 258
    functionName: static_bfd_show_path_json
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - static_bfd_show_nexthop_json
    - frr_each
    - srcdest_route_next
    - route_top
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_bfd_show_path_json(struct vty *vty, struct json_object
      *jo,\n\t\t\t\t      struct route_table *rt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/staticd/static_bfd.c:265,1
    - Dst: json_object_new_object
      Src: /src/frr/staticd/static_bfd.c:266,1
    - Dst: json_object_object_add
      Src: /src/frr/staticd/static_bfd.c:268,1
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_bfd.c:269,1
    - Dst: json_object_new_array
      Src: /src/frr/staticd/static_bfd.c:273,1
    - Dst: json_object_object_add
      Src: /src/frr/staticd/static_bfd.c:274,1
    - Dst: static_bfd_show_path_json
      Src: /src/frr/staticd/static_bfd.c:277,1
    - Dst: json_object_new_array
      Src: /src/frr/staticd/static_bfd.c:279,1
    - Dst: json_object_object_add
      Src: /src/frr/staticd/static_bfd.c:280,1
    - Dst: static_bfd_show_path_json
      Src: /src/frr/staticd/static_bfd.c:283,1
    - Dst: json_object_new_array
      Src: /src/frr/staticd/static_bfd.c:285,1
    - Dst: json_object_object_add
      Src: /src/frr/staticd/static_bfd.c:286,1
    - Dst: static_bfd_show_path_json
      Src: /src/frr/staticd/static_bfd.c:289,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:292,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/staticd/static_bfd.c:292,1
    - Dst: json_object_free
      Src: /src/frr/staticd/static_bfd.c:293,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 260
    functionDepth: 3
    functionLinenumber: 260
    functionLinenumberEnd: 294
    functionName: static_bfd_show_json
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - vty_out
    - static_bfd_show_path_json
    - json_object_free
    - json_object_object_add
    - json_object_to_json_string_ext
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void static_bfd_show_json(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:299,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:302,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:308,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:311,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:313,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - sn
    argTypes:
    - struct vty*
    - struct static_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 317
    functionName: static_bfd_show_nexthop
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void static_bfd_show_nexthop(struct vty *vty,\n\t\t\t\t    const struct
      static_nexthop *sn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/staticd/static_bfd.c:323,1
    - Dst: srcdest_route_next
      Src: /src/frr/staticd/static_bfd.c:323,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_bfd.c:324,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_bfd.c:330,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_bfd.c:333,1
    - Dst: static_bfd_show_nexthop
      Src: /src/frr/staticd/static_bfd.c:338,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - rt
    argTypes:
    - struct vty*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 342
    functionName: static_bfd_show_path
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - frr_each
    - srcdest_route_next
    - route_top
    - static_bfd_show_nexthop
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: void static_bfd_show_path(struct vty *vty, struct route_table *rt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_bfd_show_json
      Src: /src/frr/staticd/static_bfd.c:349,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:353,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:354,1
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_bfd.c:355,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:359,1
    - Dst: static_bfd_show_path
      Src: /src/frr/staticd/static_bfd.c:362,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:364,1
    - Dst: static_bfd_show_path
      Src: /src/frr/staticd/static_bfd.c:367,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:369,1
    - Dst: static_bfd_show_path
      Src: /src/frr/staticd/static_bfd.c:372,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_bfd.c:375,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 344
    functionDepth: 4
    functionLinenumber: 344
    functionLinenumberEnd: 376
    functionName: static_bfd_show
    functionSourceFile: /src/frr/staticd/static_bfd.c
    functionUses: 0
    functionsReached:
    - static_bfd_show_path
    - RB_FOREACH
    - vty_out
    - static_bfd_show_json
    linkageType: ''
    returnType: void
    signature: void static_bfd_show(struct vty *vty, bool json)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - info
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: GET_STABLE_VRF_ID
    functionSourceFile: /src/frr/staticd/static_vrf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_STABLE_VRF_ID(info)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/staticd/static_nht.c:26,1
    - Dst: memcmp
      Src: /src/frr/staticd/static_nht.c:41,1
    - Dst: static_zebra_route_add
      Src: /src/frr/staticd/static_nht.c:46,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 13
    argCount: 5
    argNames:
    - pn
    - nhp
    - nh_num
    - nh_vrf_id
    - vrf
    argTypes:
    - struct static_path*
    - struct prefix*
    - uint32_t
    - vrf_id_t
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 48
    functionName: static_nht_update_path
    functionSourceFile: /src/frr/staticd/static_nht.c
    functionUses: 0
    functionsReached:
    - static_zebra_route_add
    - memcmp
    - frr_each
    linkageType: ''
    returnType: void
    signature: "void static_nht_update_path(struct static_path *pn, struct prefix
      *nhp,\n\t\t\t\t   uint32_t nh_num, vrf_id_t nh_vrf_id,\n\t\t\t\t   struct vrf
      *vrf)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_vrf_static_table
      Src: /src/frr/staticd/static_nht.c:64,1
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/staticd/static_nht.c:69,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_nht.c:71,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_nht.c:72,1
    - Dst: static_nht_update_path
      Src: /src/frr/staticd/static_nht.c:73,1
    - Dst: route_unlock_node
      Src: /src/frr/staticd/static_nht.c:76,1
    - Dst: route_top
      Src: /src/frr/staticd/static_nht.c:81,1
    - Dst: route_next
      Src: /src/frr/staticd/static_nht.c:81,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_nht.c:82,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_nht.c:85,1
    - Dst: static_nht_update_path
      Src: /src/frr/staticd/static_nht.c:86,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 7
    argNames:
    - sp
    - nhp
    - nh_num
    - afi
    - safi
    - vrf
    - nh_vrf_id
    argTypes:
    - struct prefix*
    - struct prefix*
    - uint32_t
    - afi_t
    - safi_t
    - struct vrf*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 89
    functionName: static_nht_update_safi
    functionSourceFile: /src/frr/staticd/static_nht.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - static_nht_update_path
    - frr_each
    - route_top
    - route_next
    - static_vrf_static_table
    - static_route_info_from_rnode
    - srcdest_rnode_lookup
    linkageType: ''
    returnType: void
    signature: "void static_nht_update_safi(struct prefix *sp, struct prefix *nhp,\n\t\t\t\t
      \  uint32_t nh_num, afi_t afi, safi_t safi,\n\t\t\t\t   struct vrf *vrf, vrf_id_t
      nh_vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_nht.c:97,1
    - Dst: static_nht_update_safi
      Src: /src/frr/staticd/static_nht.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - sp
    - nhp
    - nh_num
    - afi
    - safi
    - nh_vrf_id
    argTypes:
    - struct prefix*
    - struct prefix*
    - uint32_t
    - afi_t
    - safi_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: static_nht_update
    functionSourceFile: /src/frr/staticd/static_nht.c
    functionUses: 2
    functionsReached:
    - static_nht_update_safi
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void static_nht_update(struct prefix *sp, struct prefix *nhp, uint32_t
      nh_num,\n\t\t       afi_t afi, safi_t safi, vrf_id_t nh_vrf_id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: static_vrf_static_table
      Src: /src/frr/staticd/static_nht.c:117,1
    - Dst: route_top
      Src: /src/frr/staticd/static_nht.c:121,1
    - Dst: route_next
      Src: /src/frr/staticd/static_nht.c:121,1
    - Dst: static_route_info_from_rnode
      Src: /src/frr/staticd/static_nht.c:122,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_nht.c:125,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_nht.c:126,1
    - Dst: memcmp
      Src: /src/frr/staticd/static_nht.c:136,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 5
    argNames:
    - nhp
    - afi
    - safi
    - vrf
    - nh_vrf_id
    argTypes:
    - struct prefix*
    - afi_t
    - safi_t
    - struct vrf*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 151
    functionName: static_nht_reset_start_safi
    functionSourceFile: /src/frr/staticd/static_nht.c
    functionUses: 0
    functionsReached:
    - frr_each
    - route_top
    - memcmp
    - route_next
    - static_vrf_static_table
    - static_route_info_from_rnode
    linkageType: ''
    returnType: void
    signature: "void static_nht_reset_start_safi(struct prefix *nhp, afi_t afi,\n\t\t\t\t\tsafi_t
      safi, struct vrf *vrf,\n\t\t\t\t\tvrf_id_t nh_vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/staticd/static_nht.c:158,1
    - Dst: static_nht_reset_start_safi
      Src: /src/frr/staticd/static_nht.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - nhp
    - afi
    - safi
    - nh_vrf_id
    argTypes:
    - struct prefix*
    - afi_t
    - safi_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: static_nht_reset_start
    functionSourceFile: /src/frr/staticd/static_nht.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    - static_nht_reset_start_safi
    linkageType: ''
    returnType: void
    signature: "void static_nht_reset_start(struct prefix *nhp, afi_t afi, safi_t
      safi,\n\t\t\t    vrf_id_t nh_vrf_id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_vrf_static_table
      Src: /src/frr/staticd/static_nht.c:177,1
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/staticd/static_nht.c:181,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_nht.c:186,1
    - Dst: frr_each
      Src: /src/frr/staticd/static_nht.c:187,1
    - Dst: route_unlock_node
      Src: /src/frr/staticd/static_nht.c:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - sp
    - afi
    - safi
    - vrf
    - state
    argTypes:
    - struct prefix*
    - afi_t
    - safi_t
    - struct vrf*
    - enum static_install_states
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 194
    functionName: static_nht_mark_state_safi
    functionSourceFile: /src/frr/staticd/static_nht.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - static_vrf_static_table
    - srcdest_rnode_lookup
    - frr_each
    linkageType: ''
    returnType: void
    signature: "void static_nht_mark_state_safi(struct prefix *sp, afi_t afi,\n\t\t\t\t
      \      safi_t safi, struct vrf *vrf,\n\t\t\t\t       enum static_install_states
      state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/staticd/static_nht.c:206,1
    - Dst: static_nht_mark_state_safi
      Src: /src/frr/staticd/static_nht.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - sp
    - safi
    - vrf_id
    - state
    argTypes:
    - struct prefix*
    - safi_t
    - vrf_id_t
    - enum static_install_states
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 211
    functionName: static_nht_mark_state
    functionSourceFile: /src/frr/staticd/static_nht.c
    functionUses: 1
    functionsReached:
    - static_nht_mark_state_safi
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: "void static_nht_mark_state(struct prefix *sp, safi_t safi, vrf_id_t
      vrf_id,\n\t\t\t   enum static_install_states state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: static_route_info_from_rnode
    functionSourceFile: /src/frr/staticd/static_routes.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: struct static_route_info
    signature: 'struct static_route_info *

      static_route_info_from_rnode(struct route_node *rn)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.h:167,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.h:170,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.h:173,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.h:176,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.h:179,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_routes.h:182,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - stype
    - type
    - size
    argTypes:
    - enum static_nh_type
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 185
    functionName: static_get_nh_type
    functionSourceFile: /src/frr/staticd/static_routes.h
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: void
    signature: "void static_get_nh_type(enum static_nh_type stype, char *type,\n\t\t\t\t
      \     size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/staticd/static_main.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: sighup
    functionSourceFile: /src/frr/staticd/static_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/staticd/static_main.c:69,1
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/staticd/static_main.c:72,1
    - Dst: mgmt_be_client_destroy
      Src: /src/frr/staticd/static_main.c:74,1
    - Dst: static_vrf_terminate
      Src: /src/frr/staticd/static_main.c:76,1
    - Dst: static_zebra_stop
      Src: /src/frr/staticd/static_main.c:78,1
    - Dst: frr_fini
      Src: /src/frr/staticd/static_main.c:79,1
    - Dst: exit
      Src: /src/frr/staticd/static_main.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 82
    functionName: sigint
    functionSourceFile: /src/frr/staticd/static_main.c
    functionUses: 0
    functionsReached:
    - exit
    - static_vrf_terminate
    - mgmt_be_client_destroy
    - frr_fini
    - static_zebra_stop
    - bfd_protocol_integration_set_shutdown
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/staticd/static_main.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: sigusr1
    functionSourceFile: /src/frr/staticd/static_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/staticd/static_main.c:136,1
    - Dst: frr_opt_add
      Src: /src/frr/staticd/static_main.c:137,1
    - Dst: frr_getopt
      Src: /src/frr/staticd/static_main.c:142,1
    - Dst: frr_help_exit
      Src: /src/frr/staticd/static_main.c:151,1
    - Dst: frr_init
      Src: /src/frr/staticd/static_main.c:155,1
    - Dst: static_debug_init
      Src: /src/frr/staticd/static_main.c:157,1
    - Dst: static_vrf_init
      Src: /src/frr/staticd/static_main.c:158,1
    - Dst: static_zebra_init
      Src: /src/frr/staticd/static_main.c:160,1
    - Dst: static_vty_init
      Src: /src/frr/staticd/static_main.c:161,1
    - Dst: mgmt_be_client_create
      Src: /src/frr/staticd/static_main.c:164,1
    - Dst: hook_register
      Src: /src/frr/staticd/static_main.c:166,1
    - Dst: routing_control_plane_protocols_register_vrf_dependency
      Src: /src/frr/staticd/static_main.c:169,1
    - Dst: host_config_set
      Src: /src/frr/staticd/static_main.c:176,1
    - Dst: frr_config_fork
      Src: /src/frr/staticd/static_main.c:178,1
    - Dst: frr_run
      Src: /src/frr/staticd/static_main.c:179,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 183
    functionName: main
    functionSourceFile: /src/frr/staticd/static_main.c
    functionUses: 4
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - static_debug_init
    - host_config_set
    - hook_register
    - frr_getopt
    - frr_init
    - frr_config_fork
    - mgmt_be_client_create
    - static_vty_init
    - static_zebra_init
    - frr_run
    - routing_control_plane_protocols_register_vrf_dependency
    - frr_opt_add
    - static_vrf_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/staticd/static_vty.c:88,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:91,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:96,1
    - Dst: strcasecmp
      Src: /src/frr/staticd/static_vty.c:105,1
    - Dst: assert
      Src: /src/frr/staticd/static_vty.c:110,1
    - Dst: str2prefix
      Src: /src/frr/staticd/static_vty.c:110,1
    - Dst: assert
      Src: /src/frr/staticd/static_vty.c:116,1
    - Dst: inet_pton
      Src: /src/frr/staticd/static_vty.c:116,1
    - Dst: ip_masklen
      Src: /src/frr/staticd/static_vty.c:118,1
    - Dst: assert
      Src: /src/frr/staticd/static_vty.c:124,1
    - Dst: str2prefix
      Src: /src/frr/staticd/static_vty.c:124,1
    - Dst: apply_mask
      Src: /src/frr/staticd/static_vty.c:133,1
    - Dst: prefix2str
      Src: /src/frr/staticd/static_vty.c:134,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:137,1
    - Dst: prefix2str
      Src: /src/frr/staticd/static_vty.c:142,1
    - Dst: strtol
      Src: /src/frr/staticd/static_vty.c:166,1
    - Dst: strtoul
      Src: /src/frr/staticd/static_vty.c:170,1
    - Dst: strtol
      Src: /src/frr/staticd/static_vty.c:174,1
    - Dst: static_get_nh_type
      Src: /src/frr/staticd/static_vty.c:176,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:179,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:183,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:189,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:193,1
    - Dst: yang_dnode_get
      Src: /src/frr/staticd/static_vty.c:202,1
    - Dst: yang_get_subtree_with_no_sibling
      Src: /src/frr/staticd/static_vty.c:204,1
    - Dst: assert
      Src: /src/frr/staticd/static_vty.c:205,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/staticd/static_vty.c:206,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:208,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:214,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:218,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:222,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:226,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:230,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:233,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:234,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:235,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:237,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:241,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:244,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:245,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:246,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:249,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:250,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:269,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:272,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:278,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:279,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:283,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:286,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:293,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:294,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:297,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:307,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:308,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:311,1
    - Dst: XSTRDUP
      Src: /src/frr/staticd/static_vty.c:314,1
    - Dst: strsep
      Src: /src/frr/staticd/static_vty.c:315,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:316,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:319,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:321,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:323,1
    - Dst: XFREE
      Src: /src/frr/staticd/static_vty.c:327,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:329,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:330,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:332,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:340,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:342,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:345,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:350,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:351,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:354,1
    - Dst: strlcpy
      Src: /src/frr/staticd/static_vty.c:359,1
    - Dst: strlcat
      Src: /src/frr/staticd/static_vty.c:361,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:364,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/staticd/static_vty.c:370,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:374,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:378,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:384,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:389,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:396,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:400,1
    - Dst: snprintf
      Src: /src/frr/staticd/static_vty.c:406,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/staticd/static_vty.c:411,1
    - Dst: yang_dnode_get
      Src: /src/frr/staticd/static_vty.c:418,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:420,1
    - Dst: yang_get_subtree_with_no_sibling
      Src: /src/frr/staticd/static_vty.c:425,1
    - Dst: assert
      Src: /src/frr/staticd/static_vty.c:426,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/staticd/static_vty.c:427,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/staticd/static_vty.c:429,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/staticd/static_vty.c:430,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 181
    argCount: 2
    argNames:
    - vty
    - args
    argTypes:
    - struct vty*
    - struct static_route_args*
    assertStmts:
    - condition: (!!str2prefix(args->source, &src))
      pos:
        line_end: 123
        line_start: 123
        source_file: /src/frr/staticd/static_vty.c
    - condition: (!!str2prefix(args->prefix, &p))
      pos:
        line_end: 109
        line_start: 109
        source_file: /src/frr/staticd/static_vty.c
    - condition: "(inet_pton(AF_INET, args->prefix_mask, &mask) ==\n\t\t\t       1)"
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/frr/staticd/static_vty.c
    - condition: (dnode)
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/staticd/static_vty.c
    - condition: (dnode)
      pos:
        line_end: 425
        line_start: 425
        source_file: /src/frr/staticd/static_vty.c
    constantsTouched: []
    func_position:
      end: 434
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 434
    functionName: static_route_nb_run
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - yang_afi_safi_value2identity
    - yang_get_subtree_with_no_sibling
    - yang_dnode_get_string
    - yang_dnode_get_path
    - strlcat
    - snprintf
    - str2prefix
    - assert
    - vty_out
    - apply_mask
    - yang_dnode_get
    - strlcpy
    - nb_cli_enqueue_change
    - ip_masklen
    - inet_pton
    - XFREE
    - strsep
    - nb_cli_apply_changes
    - strcasecmp
    - XSTRDUP
    - strtoul
    - static_get_nh_type
    - strtol
    linkageType: ''
    returnType: int
    signature: int static_route_nb_run(struct vty *vty, struct static_route_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1186,1
    - Dst: strcmp
      Src: /src/frr/staticd/static_vty.c:1187,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1181
    functionDepth: 1
    functionLinenumber: 1181
    functionLinenumberEnd: 1189
    functionName: static_cli_show
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void static_cli_show(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1195,1
    - Dst: strcmp
      Src: /src/frr/staticd/static_vty.c:1196,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1191
    functionDepth: 1
    functionLinenumber: 1191
    functionLinenumberEnd: 1198
    functionName: static_cli_show_end
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - strcmp
    linkageType: ''
    returnType: void
    signature: void static_cli_show_end(struct vty *vty, const struct lyd_node *dnode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_vty.c:1209,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1211,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1212,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1214,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1205
    functionDepth: 1
    functionLinenumber: 1205
    functionLinenumberEnd: 1220
    functionName: mpls_label_iter_cb
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_exists
    linkageType: ''
    returnType: int
    signature: int mpls_label_iter_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1240,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1242,1
    - Dst: yang_afi_safi_identity2value
      Src: /src/frr/staticd/static_vty.c:1243,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1246,1
    - Dst: strmatch
      Src: /src/frr/staticd/static_vty.c:1247,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1249,1
    - Dst: strmatch
      Src: /src/frr/staticd/static_vty.c:1250,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1253,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1255,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1257,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1257,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1260,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1261,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_vty.c:1263,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1266,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1267,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1271,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1272,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1276,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1277,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1278,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1279,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_vty.c:1282,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1285,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1288,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1291,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_vty.c:1297,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_vty.c:1298,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1300,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/staticd/static_vty.c:1303,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1305,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/staticd/static_vty.c:1309,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1312,1
    - Dst: strcmp
      Src: /src/frr/staticd/static_vty.c:1313,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1314,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_vty.c:1316,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1318,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_vty.c:1320,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/staticd/static_vty.c:1321,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1323,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_vty.c:1326,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1327,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1328,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_vty.c:1330,1
    - Dst: yang_dnode_get
      Src: /src/frr/staticd/static_vty.c:1332,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/staticd/static_vty.c:1334,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1335,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_vty.c:1337,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1338,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1339,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1342,1
    - Dst: yang_dnode_exists
      Src: /src/frr/staticd/static_vty.c:1344,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1345,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1346,1
    - Dst: vty_out
      Src: /src/frr/staticd/static_vty.c:1349,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 77
    argCount: 6
    argNames:
    - vty
    - route
    - src
    - path
    - nexthop
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1350
    functionName: nexthop_cli_show
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_bool
    - yang_dnode_iterate
    - vty_out
    - yang_dnode_get
    - yang_dnode_get_uint8
    - strcmp
    - yang_dnode_get_string
    - yang_afi_safi_identity2value
    - yang_dnode_get_uint32
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void nexthop_cli_show(struct vty *vty, const struct lyd_node *route,\n\t\t\t
      \    const struct lyd_node *src,\n\t\t\t     const struct lyd_node *path,\n\t\t\t
      \    const struct lyd_node *nexthop, bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_vty.c:1355,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_vty.c:1357,1
    - Dst: nexthop_cli_show
      Src: /src/frr/staticd/static_vty.c:1359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1352
    functionDepth: 2
    functionLinenumber: 1352
    functionLinenumberEnd: 1360
    functionName: static_nexthop_cli_show
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - nexthop_cli_show
    linkageType: ''
    returnType: void
    signature: "void static_nexthop_cli_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_vty.c:1365,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_vty.c:1366,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/staticd/static_vty.c:1367,1
    - Dst: nexthop_cli_show
      Src: /src/frr/staticd/static_vty.c:1369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1362
    functionDepth: 2
    functionLinenumber: 1362
    functionLinenumberEnd: 1370
    functionName: static_src_nexthop_cli_show
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - nexthop_cli_show
    linkageType: ''
    returnType: void
    signature: "void static_src_nexthop_cli_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_vty.c:1379,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/staticd/static_vty.c:1380,1
    - Dst: if_cmp_name_func
      Src: /src/frr/staticd/static_vty.c:1387,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1388,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1389,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1393,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1394,1
    - Dst: prefix_cmp
      Src: /src/frr/staticd/static_vty.c:1395,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1399,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1400,1
    - Dst: prefix_cmp
      Src: /src/frr/staticd/static_vty.c:1401,1
    - Dst: if_cmp_name_func
      Src: /src/frr/staticd/static_vty.c:1403,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1404,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1405,1
    - Dst: if_cmp_name_func
      Src: /src/frr/staticd/static_vty.c:1416,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1416,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1417,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1372
    functionDepth: 1
    functionLinenumber: 1372
    functionLinenumberEnd: 1418
    functionName: static_nexthop_cli_cmp
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    - if_cmp_name_func
    - yang_dnode_get_string
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: "int static_nexthop_cli_cmp(const struct lyd_node *dnode1,\n\t\t\t
      \  const struct lyd_node *dnode2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1428,1
    - Dst: yang_afi_safi_identity2value
      Src: /src/frr/staticd/static_vty.c:1429,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/staticd/static_vty.c:1431,1
    - Dst: yang_afi_safi_identity2value
      Src: /src/frr/staticd/static_vty.c:1432,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1440,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1441,1
    - Dst: prefix_cmp
      Src: /src/frr/staticd/static_vty.c:1443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1420
    functionDepth: 1
    functionLinenumber: 1420
    functionLinenumberEnd: 1444
    functionName: static_route_list_cli_cmp
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_prefix
    - yang_dnode_get_string
    - yang_afi_safi_identity2value
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int static_route_list_cli_cmp(const struct lyd_node *dnode1,\n\t\t\t
      \     const struct lyd_node *dnode2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1451,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/staticd/static_vty.c:1452,1
    - Dst: prefix_cmp
      Src: /src/frr/staticd/static_vty.c:1454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1446
    functionDepth: 1
    functionLinenumber: 1446
    functionLinenumberEnd: 1455
    functionName: static_src_list_cli_cmp
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_prefix
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int static_src_list_cli_cmp(const struct lyd_node *dnode1,\n\t\t\t
      \   const struct lyd_node *dnode2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_vty.c:1463,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/staticd/static_vty.c:1464,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/staticd/static_vty.c:1469,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/staticd/static_vty.c:1470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1457
    functionDepth: 1
    functionLinenumber: 1457
    functionLinenumberEnd: 1473
    functionName: static_path_list_cli_cmp
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int static_path_list_cli_cmp(const struct lyd_node *dnode1,\n\t\t\t
      \    const struct lyd_node *dnode2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/staticd/static_vty.c:1534,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1535,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1536,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1539,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1541,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1542,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1543,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1544,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1545,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1546,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1548,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1549,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1550,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1551,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1552,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1553,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1555,1
    - Dst: install_element
      Src: /src/frr/staticd/static_vty.c:1556,1
    - Dst: mgmt_be_client_lib_vty_init
      Src: /src/frr/staticd/static_vty.c:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1531
    functionDepth: 1
    functionLinenumber: 1531
    functionLinenumberEnd: 1559
    functionName: static_vty_init
    functionSourceFile: /src/frr/staticd/static_vty.c
    functionUses: 2
    functionsReached:
    - install_element
    - mgmt_be_client_lib_vty_init
    - install_node
    linkageType: ''
    returnType: void
    signature: void static_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - metric
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: get_metric
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_metric(uint8_t *metric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:79,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: ospf_check_dna_lsa
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - IS_LSA_SELF
    linkageType: ''
    returnType: bool
    signature: bool ospf_check_dna_lsa(const struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - a
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: int2tv
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval int2tv(int a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - a
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: msec2tv
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval msec2tv(int a)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_lsa.c:109,1
    - Dst: msec2tv
      Src: /src/frr/ospfd/ospf_lsa.c:111,1
    - Dst: timersub
      Src: /src/frr/ospfd/ospf_lsa.c:112,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:117,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:118,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts:
    - condition: (delay > 0)
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 127
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 127
    functionName: ospf_lsa_refresh_delay
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - timersub
    - msec2tv
    - zlog_debug
    - monotime_since
    - assert
    linkageType: ''
    returnType: int
    signature: int ospf_lsa_refresh_delay(struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:141,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:141,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsa.c:142,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_lsa.c:144,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsa.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 146
    functionName: get_age
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ntohs
    - CHECK_FLAG
    - monotime_since
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: int get_age(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsa.c:159,1
    - Dst: fletcher_checksum
      Src: /src/frr/ospfd/ospf_lsa.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 166
    functionName: ospf_lsa_checksum
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ntohs
    - fletcher_checksum
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospf_lsa_checksum(struct lsa_header *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsa.c:174,1
    - Dst: fletcher_checksum
      Src: /src/frr/ospfd/ospf_lsa.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 178
    functionName: ospf_lsa_checksum_valid
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ntohs
    - fletcher_checksum
    linkageType: ''
    returnType: int
    signature: int ospf_lsa_checksum_valid(struct lsa_header *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_lsa.c:186,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_lsa.c:191,1
    - Dst: tv_recv::tv_recv
      Src: /src/frr/ospfd/ospf_lsa.c:191,1
    - Dst: tv_recv::tv_recv
      Src: /src/frr/ospfd/ospf_lsa.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 199
    functionName: ospf_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - monotime
    - tv_recv::tv_recv
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_lsa_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_new::ospf_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:205,1
    - Dst: ospf_lsa_data_new
      Src: /src/frr/ospfd/ospf_lsa.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 210
    functionName: ospf_lsa_new_and_data
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - ospf_lsa_new::ospf_lsa_new
    - ospf_lsa_data_new
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_lsa_new_and_data(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_lsa.c:220,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:223,1
    - Dst: ospf_lsa_data_dup
      Src: /src/frr/ospfd/ospf_lsa.c:226,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:234,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:235,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 239
    functionName: ospf_lsa_dup
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - XCALLOC::XCALLOC
    - ospf_lsa_data_dup
    - zlog_debug
    - UNSET_FLAG
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_lsa_dup(struct ospf_lsa *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:244,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:246,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:247,1
    - Dst: ospf_lsa_data_free
      Src: /src/frr/ospfd/ospf_lsa.c:251,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:253,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_lsa.c:255,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_lsa.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->lock == 0)
      pos:
        line_end: 243
        line_start: 243
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (lsa->refresh_list < 0)
      pos:
        line_end: 252
        line_start: 252
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 257
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 257
    functionName: ospf_lsa_free
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - memset
    - zlog_debug
    - XFREE
    - assert
    - ospf_lsa_data_free
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_free(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 264
    functionName: ospf_lsa_lock
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_lsa_lock(struct ospf_lsa *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:275,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:278,1
    - Dst: ospf_lsa_free
      Src: /src/frr/ospfd/ospf_lsa.c:279,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa**
    assertStmts:
    - condition: ((*lsa)->lock >= 0)
      pos:
        line_end: 274
        line_start: 274
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (CHECK_FLAG((*lsa)->flags, OSPF_LSA_DISCARD))
      pos:
        line_end: 277
        line_start: 277
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 282
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 282
    functionName: ospf_lsa_unlock
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - ospf_lsa_free
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_unlock(struct ospf_lsa **lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:287,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:288,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsa.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 291
    functionName: ospf_lsa_discard
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ospf_lsa_unlock
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_discard(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_lsa.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 297
    functionName: ospf_lsa_data_new
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct lsa_header
    signature: struct lsa_header *ospf_lsa_data_new(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsa.c:304,1
    - Dst: ospf_lsa_data_new::ospf_lsa_data_new
      Src: /src/frr/ospfd/ospf_lsa.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lsah
    argTypes:
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 308
    functionName: ospf_lsa_data_dup
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - ntohs
    - ospf_lsa_data_new::ospf_lsa_data_new
    linkageType: ''
    returnType: struct lsa_header
    signature: struct lsa_header *ospf_lsa_data_dup(struct lsa_header *lsah)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:313,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:314,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_lsa.c:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lsah
    argTypes:
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 318
    functionName: ospf_lsa_data_free
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_data_free(struct lsa_header *lsah)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_lsa.c:330,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_lsa.c:331,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_lsa.c:333,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_lsa.c:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 339
    functionName: dump_lsa_key
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - strlcpy
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *dump_lsa_key(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_lsa.c:345,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_lsa.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 348
    functionName: lsa_seqnum_increment
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - htonl
    - ntohl
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t lsa_seqnum_increment(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_lsa.c:355,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_lsa.c:357,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_lsa.c:362,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospfd/ospf_lsa.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - s
    - options
    - type
    - id
    - router_id
    argTypes:
    - struct stream*
    - uint8_t
    - uint8_t
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 365
    functionName: lsa_header_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - htonl
    - stream_forward_endp
    - STREAM_DATA
    - htons
    linkageType: ''
    returnType: void
    signature: "void lsa_header_set(struct stream *s, uint8_t options, uint8_t type,\n\t\t
      \   struct in_addr id, struct in_addr router_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf_full_virtual_nbrs
      Src: /src/frr/ospfd/ospf_lsa.c:377,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:378,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:381,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:384,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_lsa.c:386,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:391,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:395,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_lsa.c:397,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:398,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_lsa.c:401,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:402,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:409,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 412
    functionName: router_lsa_flags
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - IS_OSPF_ASBR
    - ospf_full_virtual_nbrs
    - IS_OSPF_ABR
    - SET_FLAG
    - UNSET_FLAG
    - OSPF_IS_AREA_BACKBONE
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t router_lsa_flags(struct ospf_area *area)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_lsa.c:423,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsa.c:423,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:425,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsa.c:428,1
    - Dst: ospf_nbr_count
      Src: /src/frr/ospfd/ospf_lsa.c:433,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:434,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 440
    functionName: ospf_nbr_lookup_ptop
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - flog_warn
    - route_top
    - route_next
    - IPV4_ADDR_SAME
    - ospf_nbr_count
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: struct ospf_neighbor *ospf_nbr_lookup_ptop(struct ospf_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 452
    functionName: ospf_link_cost
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospf_link_cost(struct ospf_interface *oi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/ospfd/ospf_lsa.c:463,1
    - Dst: STREAM_SIZE
      Src: /src/frr/ospfd/ospf_lsa.c:467,1
    - Dst: stream_resize_inplace
      Src: /src/frr/ospfd/ospf_lsa.c:479,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:484,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/ospfd/ospf_lsa.c:487,1
    - Dst: STREAM_SIZE
      Src: /src/frr/ospfd/ospf_lsa.c:488,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_lsa.c:494,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_lsa.c:495,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_lsa.c:496,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_lsa.c:497,1
    - Dst: stream_putw
      Src: /src/frr/ospfd/ospf_lsa.c:498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 6
    argNames:
    - s
    - id
    - data
    - type
    - tos
    - cost
    argTypes:
    - struct stream**
    - struct in_addr
    - struct in_addr
    - uint8_t
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 501
    functionName: link_info_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - stream_resize_inplace
    - flog_warn
    - STREAM_WRITEABLE
    - stream_putw
    - stream_put_ipv4
    - stream_putc
    - STREAM_SIZE
    linkageType: ''
    returnType: char
    signature: "char link_info_set(struct stream **s, struct in_addr id, struct in_addr
      data,\n\t\t   uint8_t type, uint8_t tos, uint16_t cost)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_link_cost
      Src: /src/frr/ospfd/ospf_lsa.c:515,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:517,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:518,1
    - Dst: ospf_nbr_lookup_ptop
      Src: /src/frr/ospfd/ospf_lsa.c:520,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:522,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_lsa.c:529,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:530,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:534,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:543,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:547,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/ospfd/ospf_lsa.c:548,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:550,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - s
    - oi
    argTypes:
    - struct stream**
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 555
    functionName: lsa_link_ptop_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - masklen2ip
    - CHECK_FLAG
    - link_info_set
    - ospf_nbr_lookup_ptop
    - zlog_debug
    - CONNECTED_PREFIX
    - htonl
    - ospf_link_cost
    linkageType: ''
    returnType: int
    signature: int lsa_link_ptop_set(struct stream **s, struct ospf_interface *oi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_link_cost
      Src: /src/frr/ospfd/ospf_lsa.c:562,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:566,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:567,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:570,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:572,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_lsa.c:576,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_lsa.c:576,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:579,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_lsa.c:579,1
    - Dst: ospf_nbr_count
      Src: /src/frr/ospfd/ospf_lsa.c:580,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:581,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:582,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:585,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_lsa.c:585,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:590,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:591,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:594,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:596,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - s
    - oi
    argTypes:
    - struct stream**
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 558
    functionDepth: 2
    functionLinenumber: 558
    functionLinenumberEnd: 599
    functionName: lsa_link_broadcast_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - DR
    - masklen2ip
    - ospf_nbr_lookup_by_addr
    - link_info_set
    - IPV4_ADDR_SAME
    - zlog_debug
    - ospf_nbr_count
    - ospf_link_cost
    linkageType: ''
    returnType: int
    signature: int lsa_link_broadcast_set(struct stream **s, struct ospf_interface
      *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - s
    - oi
    argTypes:
    - struct stream**
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 601
    functionDepth: 2
    functionLinenumber: 601
    functionLinenumberEnd: 613
    functionName: lsa_link_loopback_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - link_info_set
    linkageType: ''
    returnType: int
    signature: int lsa_link_loopback_set(struct stream **s, struct ospf_interface
      *oi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_link_cost
      Src: /src/frr/ospfd/ospf_lsa.c:620,1
    - Dst: ospf_nbr_lookup_ptop
      Src: /src/frr/ospfd/ospf_lsa.c:623,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - s
    - oi
    argTypes:
    - struct stream**
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 632
    functionName: lsa_link_virtuallink_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_link_cost
    - link_info_set
    - ospf_nbr_lookup_ptop
    linkageType: ''
    returnType: int
    signature: "int lsa_link_virtuallink_set(struct stream **s,\n\t\t\t\t    struct
      ospf_interface *oi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 634
    functionDepth: 0
    functionLinenumber: 634
    functionLinenumberEnd: 635
    functionName: lsa_link_nbma_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsa_link_nbma_set(S,O)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_link_cost
      Src: /src/frr/ospfd/ospf_lsa.c:646,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:650,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:652,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:653,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_lsa.c:656,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsa.c:656,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:659,1
    - Dst: link_info_set
      Src: /src/frr/ospfd/ospf_lsa.c:664,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:669,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:670,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - s
    - oi
    argTypes:
    - struct stream**
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 676
    functionName: lsa_link_ptomp_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - link_info_set
    - route_top
    - route_next
    - IPV4_ADDR_SAME
    - zlog_debug
    - ospf_link_cost
    linkageType: ''
    returnType: int
    signature: int lsa_link_ptomp_set(struct stream **s, struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_lsa.c:685,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:689,1
    - Dst: if_is_operative
      Src: /src/frr/ospfd/ospf_lsa.c:689,1
    - Dst: switch
      Src: /src/frr/ospfd/ospf_lsa.c:693,1
    - Dst: lsa_link_ptop_set
      Src: /src/frr/ospfd/ospf_lsa.c:695,1
    - Dst: lsa_link_broadcast_set
      Src: /src/frr/ospfd/ospf_lsa.c:698,1
    - Dst: lsa_link_nbma_set
      Src: /src/frr/ospfd/ospf_lsa.c:701,1
    - Dst: lsa_link_ptomp_set
      Src: /src/frr/ospfd/ospf_lsa.c:704,1
    - Dst: lsa_link_virtuallink_set
      Src: /src/frr/ospfd/ospf_lsa.c:708,1
    - Dst: lsa_link_loopback_set
      Src: /src/frr/ospfd/ospf_lsa.c:711,1
    - Dst: ospf_router_lsa_body_set
      Src: /src/frr/ospfd/ospf_lsa.c:722,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_lsa.c:728,1
    - Dst: router_lsa_flags
      Src: /src/frr/ospfd/ospf_lsa.c:728,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_lsa.c:731,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_lsa.c:734,1
    - Dst: stream_putw
      Src: /src/frr/ospfd/ospf_lsa.c:737,1
    - Dst: router_lsa_link_set
      Src: /src/frr/ospfd/ospf_lsa.c:740,1
    - Dst: stream_putw_at
      Src: /src/frr/ospfd/ospf_lsa.c:743,1
    - Dst: ospf_stub_router_timer
      Src: /src/frr/ospfd/ospf_lsa.c:746,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_lsa.c:748,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:752,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:757,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:760,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_lsa.c:762,1
    - Dst: ospf_stub_router_check
      Src: /src/frr/ospfd/ospf_lsa.c:765,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:772,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:773,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:780,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:790,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:796,1
    - Dst: OSPF_AREA_TIMER_ON
      Src: /src/frr/ospfd/ospf_lsa.c:798,1
    - Dst: ospf_router_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:803,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:811,1
    - Dst: int::int
      Src: /src/frr/ospfd/ospf_lsa.c:808,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:812,1
    - Dst: ospf_stub_router_check
      Src: /src/frr/ospfd/ospf_lsa.c:817,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_lsa.c:820,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_lsa.c:822,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_lsa.c:822,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/ospfd/ospf_lsa.c:822,1
    - Dst: ospf_router_lsa_body_set
      Src: /src/frr/ospfd/ospf_lsa.c:826,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_lsa.c:829,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_lsa.c:830,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_lsa.c:831,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_lsa.c:834,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_lsa.c:841,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:841,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_lsa.c:842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - s
    - area
    argTypes:
    - struct stream**
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 679
    functionDepth: 3
    functionLinenumber: 679
    functionLinenumberEnd: 845
    functionName: router_lsa_link_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - switch
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - lsa_link_broadcast_set
    - data::data
    - stream_putc
    - OSPF_AREA_TIMER_ON
    - ospf_stub_router_timer
    - IS_DEBUG_OSPF
    - lsa_header_set
    - router_lsa_flags
    - ALL_LIST_ELEMENTS_RO
    - stream_putw_at
    - ospf_stub_router_check
    - zlog_debug
    - LSA_OPTIONS_GET
    - EVENT_ARG
    - if
    - LSA_OPTIONS_NSSA_GET
    - lsa_link_ptomp_set
    - stream_free
    - lsa_link_ptop_set
    - lsa_link_nbma_set
    - ospf_router_lsa_body_set
    - router_lsa_link_set
    - int::int
    - UNSET_FLAG
    - ospf_router_lsa_update_area
    - memcpy
    - lsa_link_loopback_set
    - stream_new
    - CHECK_FLAG
    - STREAM_DATA
    - stream_putw
    - stream_get_endp
    - SET_FLAG
    - if_is_operative
    - ospf_router_lsa_new
    - lsa_link_virtuallink_set
    linkageType: ''
    returnType: int
    signature: int router_lsa_link_set(struct stream **s, struct ospf_area *area)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:853,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:854,1
    - Dst: ospf_router_lsa_new::ospf_router_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:861,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_lsa.c:862,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:867,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:869,1
    - Dst: ospf_lsa_install::ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:875,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:883,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:884,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:885,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:885,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:887,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:887,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 848
    functionDepth: 1
    functionLinenumber: 848
    functionLinenumberEnd: 891
    functionName: ospf_router_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_router_lsa_new::ospf_router_lsa_new
    - ospf_lsa_install::ospf_lsa_install
    - zlog_err
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_router_lsa_originate(struct ospf_area *area)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:900,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_lsa.c:903,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:906,1
    - Dst: ospf_router_lsa_new::ospf_router_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:909,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_lsa.c:910,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:914,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:914,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:916,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:922,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:923,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:924,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:924,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:925,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->data)
      pos:
        line_end: 899
        line_start: 899
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 929
      start: 894
    functionDepth: 1
    functionLinenumber: 894
    functionLinenumberEnd: 929
    functionName: ospf_router_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_refresher_unregister_lsa
    - ospf_router_lsa_new::ospf_router_lsa_new
    - ospf_lsa_install
    - zlog_err
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    - ospf_ls_retransmit_delete_nbr_area
    - lsa_seqnum_increment
    - assert
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_router_lsa_refresh(struct ospf_lsa *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:934,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:938,1
    - Dst: ospf_router_lsa_originate
      Src: /src/frr/ospfd/ospf_lsa.c:941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 931
    functionDepth: 2
    functionLinenumber: 931
    functionLinenumberEnd: 944
    functionName: ospf_router_lsa_update_area
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - ospf_router_lsa_originate
    - ospf_lsa_refresh
    linkageType: ''
    returnType: int
    signature: int ospf_router_lsa_update_area(struct ospf_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:951,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:952,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_lsa.c:954,1
    - Dst: AREA_NAME
      Src: /src/frr/ospfd/ospf_lsa.c:960,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:963,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:964,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:965,1
    - Dst: ospf_router_lsa_originate
      Src: /src/frr/ospfd/ospf_lsa.c:969,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:973,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:974,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:975,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:979,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_lsa.c:980,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsa.c:981,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_lsa.c:986,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_lsa.c:992,1
    - Dst: ospf_network_lsa_body_set
      Src: /src/frr/ospfd/ospf_lsa.c:1002,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:1009,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_lsa.c:1010,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_lsa.c:1017,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsa.c:1017,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 946
    functionDepth: 3
    functionLinenumber: 946
    functionLinenumberEnd: 1021
    functionName: ospf_router_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_flush_area
    - IS_DEBUG_OSPF
    - ospf_refresher_unregister_lsa
    - masklen2ip
    - ospf_router_lsa_originate
    - route_top
    - ospf_lsa_unlock
    - route_next
    - IPV4_ADDR_SAME
    - zlog_debug
    - ospf_router_lsa_update_area
    - stream_put_ipv4
    - ospf_network_lsa_body_set
    - if
    - ALL_LIST_ELEMENTS
    - AREA_NAME
    linkageType: ''
    returnType: int
    signature: int ospf_router_lsa_update(struct ospf *ospf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1036,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1037,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_lsa.c:1040,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_lsa.c:1041,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_lsa.c:1043,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_lsa.c:1043,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_lsa.c:1043,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_lsa.c:1044,1
    - Dst: ospf_network_lsa_body_set
      Src: /src/frr/ospfd/ospf_lsa.c:1047,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_lsa.c:1050,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_lsa.c:1051,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_lsa.c:1054,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:1057,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_lsa.c:1057,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_lsa.c:1061,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1061,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_lsa.c:1062,1
    - Dst: ospf_lookup_if_params
      Src: /src/frr/ospfd/ospf_lsa.c:1069,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1070,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1071,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:1071,1
    - Dst: ospf_get_if_params
      Src: /src/frr/ospfd/ospf_lsa.c:1073,1
    - Dst: ospf_if_update_params
      Src: /src/frr/ospfd/ospf_lsa.c:1074,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1076,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1023
    functionDepth: 3
    functionLinenumber: 1023
    functionLinenumberEnd: 1079
    functionName: ospf_network_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - data::data
    - IS_DEBUG_OSPF
    - lsa_header_set
    - zlog_debug
    - LSA_OPTIONS_GET
    - ospf_lookup_if_params
    - ospf_get_if_params
    - OPTIONS
    - stream_free
    - DR
    - flags::flags
    - ospf_network_lsa_body_set
    - memcpy
    - stream_new
    - STREAM_DATA
    - stream_get_endp
    - SET_FLAG
    - lsa_seqnum_increment
    - ospf_if_update_params
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_network_lsa_new(struct ospf_interface *oi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1087,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1088,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:1095,1
    - Dst: ospf_network_lsa_new::ospf_network_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:1100,1
    - Dst: ospf_lsa_install::ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:1105,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_lsa.c:1111,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1113,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1114,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1115,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1115,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:1117,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1117,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1082
    functionDepth: 4
    functionLinenumber: 1082
    functionLinenumberEnd: 1121
    functionName: ospf_network_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_lsa_install::ospf_lsa_install
    - ospf_network_lsa_new::ospf_network_lsa_new
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    - ospf_flood_through_area
    - ospf_lsa_refresh
    linkageType: ''
    returnType: void
    signature: void ospf_network_lsa_update(struct ospf_interface *oi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:1130,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_lsa.c:1133,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1135,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1136,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:1139,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_lsa.c:1148,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:1151,1
    - Dst: ospf_network_lsa_new::ospf_network_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:1154,1
    - Dst: ospf_lookup_if_params
      Src: /src/frr/ospfd/ospf_lsa.c:1158,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:1159,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1160,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:1161,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:1163,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:1165,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1170,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1171,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1172,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1172,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:1173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->data)
      pos:
        line_end: 1129
        line_start: 1129
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (oip != NULL)
      pos:
        line_end: 1158
        line_start: 1158
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (new2 == new)
      pos:
        line_end: 1164
        line_start: 1164
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 1177
      start: 1123
    functionDepth: 4
    functionLinenumber: 1123
    functionLinenumberEnd: 1177
    functionName: ospf_network_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_refresher_unregister_lsa
    - ospf_network_lsa_new::ospf_network_lsa_new
    - ospf_lsa_install
    - zlog_debug
    - ospf_lsa_header_dump
    - ospf_lookup_if_params
    - data::data
    - ospf_ls_retransmit_delete_nbr_area
    - ospf_if_lookup_by_local_addr
    - lsa_seqnum_increment
    - assert
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_network_lsa_refresh(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_lsa.c:1185,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_lsa.c:1188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - s
    - metric_value
    argTypes:
    - struct stream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1179
    functionDepth: 1
    functionLinenumber: 1179
    functionLinenumberEnd: 1189
    functionName: stream_put_ospf_metric
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - htonl
    - stream_put
    linkageType: ''
    returnType: void
    signature: void stream_put_ospf_metric(struct stream *s, uint32_t metric_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:1197,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_lsa.c:1200,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_lsa.c:1203,1
    - Dst: stream_put_ospf_metric
      Src: /src/frr/ospfd/ospf_lsa.c:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - s
    - p
    - metric
    argTypes:
    - struct stream*
    - struct prefix*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1192
    functionDepth: 2
    functionLinenumber: 1192
    functionLinenumberEnd: 1207
    functionName: ospf_summary_lsa_body_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - stream_put_ospf_metric
    - stream_putc
    - stream_put_ipv4
    - masklen2ip
    linkageType: ''
    returnType: void
    signature: "void ospf_summary_lsa_body_set(struct stream *s, struct prefix *p,\n\t\t\t\t
      \     uint32_t metric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1220,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1221,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1227,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1228,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_lsa.c:1231,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_lsa.c:1232,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_lsa.c:1234,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_lsa.c:1234,1
    - Dst: ospf_summary_lsa_body_set
      Src: /src/frr/ospfd/ospf_lsa.c:1238,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_lsa.c:1241,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_lsa.c:1242,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_lsa.c:1245,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:1247,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_lsa.c:1247,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_lsa.c:1251,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1251,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_lsa.c:1252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - area
    - p
    - metric
    - id
    argTypes:
    - struct ospf_area*
    - struct prefix*
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1209
    functionDepth: 3
    functionLinenumber: 1209
    functionLinenumberEnd: 1255
    functionName: ospf_summary_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - lsa_header_set
    - stream_new
    - stream_free
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - STREAM_DATA
    - stream_get_endp
    - zlog_debug
    - SET_FLAG
    - flags::flags
    - LSA_OPTIONS_GET
    - data::data
    - memcpy
    - ospf_summary_lsa_body_set
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_summary_lsa_new(struct ospf_area *area,\n\t\t\t\t\t
      \    struct prefix *p, uint32_t metric,\n\t\t\t\t\t     struct in_addr id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_summary_lsa_new::ospf_summary_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:1265,1
    - Dst: ospf_lsa_install::ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:1269,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1277,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1278,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1279,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1279,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:1281,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - p
    - metric
    - area
    - id
    argTypes:
    - struct prefix_ipv4*
    - uint32_t
    - struct ospf_area*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1258
    functionDepth: 4
    functionLinenumber: 1258
    functionLinenumberEnd: 1285
    functionName: ospf_summary_lsa_prepare_and_flood
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_lsa_install::ospf_lsa_install
    - ospf_summary_lsa_new::ospf_summary_lsa_new
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *\nospf_summary_lsa_prepare_and_flood(struct prefix_ipv4
      *p, uint32_t metric,\n\t\t\t\t   struct ospf_area *area, struct in_addr id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:1304,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:1308,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_lsa.c:1315,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:1317,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:1322,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_lsa.c:1326,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_lsa.c:1328,1
    - Dst: ospf_summary_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:1332,1
    - Dst: ospf_summary_lsa_prepare_and_flood
      Src: /src/frr/ospfd/ospf_lsa.c:1334,1
    - Dst: ospf_summary_asbr_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:1338,1
    - Dst: ospf_asbr_summary_lsa_prepare_and_flood
      Src: /src/frr/ospfd/ospf_lsa.c:1340,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 5
    argNames:
    - area
    - p
    - type
    - metric
    - old_id
    argTypes:
    - struct ospf_area*
    - struct prefix_ipv4*
    - uint8_t
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1287
    functionDepth: 5
    functionLinenumber: 1287
    functionLinenumberEnd: 1345
    functionName: ospf_handle_summarylsa_lsId_chg
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_summary_lsa_prepare_and_flood
    - flog_warn
    - GET_METRIC
    - masklen2ip
    - ospf_summary_lsa_refresh
    - ospf_asbr_summary_lsa_prepare_and_flood
    - ip_masklen
    - htonl
    - ospf_lsdb_lookup_by_id
    - ospf_summary_asbr_lsa_refresh
    - memcpy
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_handle_summarylsa_lsId_chg(struct ospf_area
      *area,\n\t\t\t\t\t\t\tstruct prefix_ipv4 *p,\n\t\t\t\t\t\t\tuint8_t type,\n\t\t\t\t\t\t\tuint32_t
      metric,\n\t\t\t\t\t\t\tstruct in_addr old_id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_unique_id
      Src: /src/frr/ospfd/ospf_lsa.c:1356,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1360,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1361,1
    - Dst: ospf_handle_summarylsa_lsId_chg::ospf_handle_summarylsa_lsId_chg
      Src: /src/frr/ospfd/ospf_lsa.c:1363,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1368,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1369,1
    - Dst: ospf_summary_lsa_prepare_and_flood::ospf_summary_lsa_prepare_and_flood
      Src: /src/frr/ospfd/ospf_lsa.c:1375,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - p
    - metric
    - area
    argTypes:
    - struct prefix_ipv4*
    - uint32_t
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1348
    functionDepth: 6
    functionLinenumber: 1348
    functionLinenumberEnd: 1377
    functionName: ospf_summary_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_handle_summarylsa_lsId_chg::ospf_handle_summarylsa_lsId_chg
    - zlog_debug
    - ospf_summary_lsa_prepare_and_flood::ospf_summary_lsa_prepare_and_flood
    - ospf_lsa_unique_id
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_summary_lsa_originate(struct prefix_ipv4 *p,\n\t\t\t\t\t
      \   uint32_t metric,\n\t\t\t\t\t    struct ospf_area *area)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:1387,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:1390,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_lsa.c:1391,1
    - Dst: ospf_summary_lsa_new::ospf_summary_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:1391,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1397,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:1397,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_lsa.c:1402,1
    - Dst: area::area
      Src: /src/frr/ospfd/ospf_lsa.c:1402,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1405,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1406,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1407,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1407,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:1408,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->data)
      pos:
        line_end: 1386
        line_start: 1386
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 1412
      start: 1379
    functionDepth: 4
    functionLinenumber: 1379
    functionLinenumberEnd: 1412
    functionName: ospf_summary_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - GET_METRIC
    - area::area
    - ip_masklen
    - ospf_summary_lsa_new::ospf_summary_lsa_new
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    - lsa_seqnum_increment
    - ospf_flood_through_area
    - assert
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_summary_lsa_refresh(struct ospf *ospf,\n\t\t\t\t\t\t
      struct ospf_lsa *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_lsa.c:1420,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_lsa.c:1423,1
    - Dst: stream_put_ospf_metric
      Src: /src/frr/ospfd/ospf_lsa.c:1426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - s
    - p
    - metric
    argTypes:
    - struct stream*
    - struct prefix*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1416
    functionDepth: 2
    functionLinenumber: 1416
    functionLinenumberEnd: 1427
    functionName: ospf_summary_asbr_lsa_body_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - stream_put_ospf_metric
    - stream_putc
    - stream_put_ipv4
    linkageType: ''
    returnType: void
    signature: "void ospf_summary_asbr_lsa_body_set(struct stream *s, struct prefix
      *p,\n\t\t\t\t\t   uint32_t metric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1441,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1442,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1448,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1449,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_lsa.c:1452,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_lsa.c:1453,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_lsa.c:1455,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_lsa.c:1455,1
    - Dst: ospf_summary_asbr_lsa_body_set
      Src: /src/frr/ospfd/ospf_lsa.c:1459,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_lsa.c:1462,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_lsa.c:1463,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_lsa.c:1466,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:1468,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_lsa.c:1468,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_lsa.c:1472,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1472,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_lsa.c:1473,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - area
    - p
    - metric
    - id
    argTypes:
    - struct ospf_area*
    - struct prefix*
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1429
    functionDepth: 3
    functionLinenumber: 1429
    functionLinenumberEnd: 1476
    functionName: ospf_summary_asbr_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - lsa_header_set
    - stream_new
    - stream_free
    - htons
    - ospf_summary_asbr_lsa_body_set
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - STREAM_DATA
    - stream_get_endp
    - zlog_debug
    - SET_FLAG
    - flags::flags
    - LSA_OPTIONS_GET
    - data::data
    - memcpy
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_summary_asbr_lsa_new(struct ospf_area *area,\n\t\t\t\t\t\t
      \ struct prefix *p,\n\t\t\t\t\t\t  uint32_t metric,\n\t\t\t\t\t\t  struct in_addr
      id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_summary_asbr_lsa_new::ospf_summary_asbr_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:1487,1
    - Dst: ospf_lsa_install::ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:1492,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1500,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1501,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1502,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1502,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:1504,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - p
    - metric
    - area
    - id
    argTypes:
    - struct prefix_ipv4*
    - uint32_t
    - struct ospf_area*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1479
    functionDepth: 4
    functionLinenumber: 1479
    functionLinenumberEnd: 1508
    functionName: ospf_asbr_summary_lsa_prepare_and_flood
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_lsa_install::ospf_lsa_install
    - ospf_summary_asbr_lsa_new::ospf_summary_asbr_lsa_new
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *\nospf_asbr_summary_lsa_prepare_and_flood(struct
      prefix_ipv4 *p, uint32_t metric,\n\t\t\t\t\tstruct ospf_area *area,\n\t\t\t\t\tstruct
      in_addr id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_unique_id
      Src: /src/frr/ospfd/ospf_lsa.c:1518,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1522,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1523,1
    - Dst: ospf_handle_summarylsa_lsId_chg::ospf_handle_summarylsa_lsId_chg
      Src: /src/frr/ospfd/ospf_lsa.c:1525,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1530,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1531,1
    - Dst: ospf_asbr_summary_lsa_prepare_and_flood::ospf_asbr_summary_lsa_prepare_and_flood
      Src: /src/frr/ospfd/ospf_lsa.c:1537,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - p
    - metric
    - area
    argTypes:
    - struct prefix_ipv4*
    - uint32_t
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1510
    functionDepth: 6
    functionLinenumber: 1510
    functionLinenumberEnd: 1539
    functionName: ospf_summary_asbr_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_asbr_summary_lsa_prepare_and_flood::ospf_asbr_summary_lsa_prepare_and_flood
    - ospf_handle_summarylsa_lsId_chg::ospf_handle_summarylsa_lsId_chg
    - zlog_debug
    - ospf_lsa_unique_id
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_summary_asbr_lsa_originate(struct prefix_ipv4
      *p,\n\t\t\t\t\t\t uint32_t metric,\n\t\t\t\t\t\t struct ospf_area *area)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:1550,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:1557,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_lsa.c:1558,1
    - Dst: ospf_summary_asbr_lsa_new::ospf_summary_asbr_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:1558,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1563,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:1563,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_lsa.c:1568,1
    - Dst: area::area
      Src: /src/frr/ospfd/ospf_lsa.c:1568,1
    - Dst: area::area
      Src: /src/frr/ospfd/ospf_lsa.c:1571,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1573,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1574,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1575,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1575,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:1576,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->data)
      pos:
        line_end: 1549
        line_start: 1549
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 1580
      start: 1541
    functionDepth: 4
    functionLinenumber: 1541
    functionLinenumberEnd: 1580
    functionName: ospf_summary_asbr_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - GET_METRIC
    - area::area
    - ip_masklen
    - ospf_summary_asbr_lsa_new::ospf_summary_asbr_lsa_new
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    - lsa_seqnum_increment
    - ospf_flood_through_area
    - assert
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_summary_asbr_lsa_refresh(struct ospf *ospf,\n\t\t\t\t\t\t
      \     struct ospf_lsa *lsa)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_lsa.c:1675,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - ospf
    - src
    - instance
    argTypes:
    - struct ospf*
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1671
    functionDepth: 1
    functionLinenumber: 1671
    functionLinenumberEnd: 1689
    functionName: metric_value
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_redist_lookup
    linkageType: ''
    returnType: int
    signature: int metric_value(struct ospf *ospf, uint8_t src, unsigned short instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:1704,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_lsa.c:1705,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_lsa.c:1708,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_lsa.c:1709,1
    - Dst: ROUTEMAP_METRIC_TYPE
      Src: /src/frr/ospfd/ospf_lsa.c:1711,1
    - Dst: ROUTEMAP_METRIC_TYPE
      Src: /src/frr/ospfd/ospf_lsa.c:1712,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_lsa.c:1713,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_lsa.c:1715,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_lsa.c:1716,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_lsa.c:1717,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_lsa.c:1720,1
    - Dst: stream_put_ospf_metric
      Src: /src/frr/ospfd/ospf_lsa.c:1723,1
    - Dst: ospf_external_lsa_nexthop_get
      Src: /src/frr/ospfd/ospf_lsa.c:1727,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_lsa.c:1730,1
    - Dst: stream_putl
      Src: /src/frr/ospfd/ospf_lsa.c:1733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - s
    - ei
    - ospf
    argTypes:
    - struct stream*
    - struct external_info*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1692
    functionDepth: 2
    functionLinenumber: 1692
    functionLinenumberEnd: 1734
    functionName: ospf_external_lsa_body_set
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - masklen2ip
    - metric_type
    - stream_put_ospf_metric
    - ROUTEMAP_METRIC_TYPE
    - metric_value
    - stream_put_ipv4
    - ospf_external_lsa_nexthop_get
    - ROUTEMAP_METRIC
    - is_default_prefix4
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void ospf_external_lsa_body_set(struct stream *s,\n\t\t\t\t       struct
      external_info *ei,\n\t\t\t\t       struct ospf *ospf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_lsa.c:1747,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_lsa.c:1748,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_lsa.c:1751,1
    - Dst: ospf_external_lsa_body_set
      Src: /src/frr/ospfd/ospf_lsa.c:1755,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_lsa.c:1758,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_lsa.c:1759,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_lsa.c:1762,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:1764,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_lsa.c:1764,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_lsa.c:1769,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1769,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_lsa.c:1770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - ospf
    - ei
    - id
    argTypes:
    - struct ospf*
    - struct external_info*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1737
    functionDepth: 3
    functionLinenumber: 1737
    functionLinenumberEnd: 1773
    functionName: ospf_exnl_lsa_prepare_and_flood
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - stream_free
    - lsa_header_set
    - stream_new
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - ospf_external_lsa_body_set
    - STREAM_DATA
    - stream_get_endp
    - SET_FLAG
    - flags::flags
    - data::data
    - memcpy
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *\nospf_exnl_lsa_prepare_and_flood(struct ospf *ospf,
      struct external_info *ei,\n\t\t\t\tstruct in_addr id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:1786,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:1790,1
    - Dst: ospf_external_info_check
      Src: /src/frr/ospfd/ospf_lsa.c:1794,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:1804,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_lsa.c:1805,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:1810,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:1814,1
    - Dst: ospf_exnl_lsa_prepare_and_flood::ospf_exnl_lsa_prepare_and_flood
      Src: /src/frr/ospfd/ospf_lsa.c:1817,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - ospf
    - ei
    - id
    argTypes:
    - struct ospf*
    - struct external_info*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1775
    functionDepth: 4
    functionLinenumber: 1775
    functionLinenumberEnd: 1820
    functionName: ospf_handle_exnl_lsa_lsId_chg
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - ospf_external_lsa_refresh
    - ospf_external_info_check
    - masklen2ip
    - ospf_exnl_lsa_prepare_and_flood::ospf_exnl_lsa_prepare_and_flood
    - ip_masklen
    - ospf_lsdb_lookup_by_id
    - ntohl
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_handle_exnl_lsa_lsId_chg(struct ospf *ospf,\n\t\t\t\t\t\t
      \     struct external_info *ei,\n\t\t\t\t\t\t      struct in_addr id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1831,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1832,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1837,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1838,1
    - Dst: ospf_lsa_unique_id
      Src: /src/frr/ospfd/ospf_lsa.c:1845,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1849,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1850,1
    - Dst: ospf_handle_exnl_lsa_lsId_chg::ospf_handle_exnl_lsa_lsId_chg
      Src: /src/frr/ospfd/ospf_lsa.c:1852,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:1856,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1857,1
    - Dst: ospf_exnl_lsa_prepare_and_flood::ospf_exnl_lsa_prepare_and_flood
      Src: /src/frr/ospfd/ospf_lsa.c:1863,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - ospf
    - ei
    - old_id
    argTypes:
    - struct ospf*
    - struct external_info*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1822
    functionDepth: 5
    functionLinenumber: 1822
    functionLinenumberEnd: 1866
    functionName: ospf_external_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_exnl_lsa_prepare_and_flood::ospf_exnl_lsa_prepare_and_flood
    - zlog_debug
    - ospf_handle_exnl_lsa_lsId_chg::ospf_handle_exnl_lsa_lsId_chg
    - ospf_lsa_unique_id
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_external_lsa_new(struct ospf *ospf,\n\t\t\t\t\t
      \     struct external_info *ei,\n\t\t\t\t\t      struct in_addr *old_id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:1880,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_lsa.c:1898,1
    - Dst: ospf_lsa_dup::ospf_lsa_dup
      Src: /src/frr/ospfd/ospf_lsa.c:1904,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1906,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_lsa.c:1909,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:1910,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1936,1
    - Dst: ospf_get_nssa_ip
      Src: /src/frr/ospfd/ospf_lsa.c:1939,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1944,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1869
    functionDepth: 2
    functionLinenumber: 1869
    functionLinenumberEnd: 1959
    functionName: ospf_install_flood_nssa
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - IS_OSPF_ABR
    - ospf_lsa_dup::ospf_lsa_dup
    - SET_FLAG
    - zlog_debug
    - data::data
    - ALL_LIST_ELEMENTS
    - ospf_get_nssa_ip
    linkageType: ''
    returnType: void
    signature: void ospf_install_flood_nssa(struct ospf *ospf, struct ospf_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:1974,1
    - Dst: ospf_external_lsa_new::ospf_external_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:1985,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:1988,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:1994,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2002,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2006,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:2009,1
    - Dst: ospf_lsa_lock::ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_lsa.c:2010,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - ospf
    - type7
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 1961
    functionDepth: 6
    functionLinenumber: 1961
    functionLinenumberEnd: 2013
    functionName: ospf_lsa_translated_nssa_new
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_lock::ospf_lsa_lock
    - ip_masklen
    - zlog_debug
    - SET_FLAG
    - data::data
    - ospf_external_lsa_new::ospf_external_lsa_new
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_lsa_translated_nssa_new(struct ospf *ospf,\n\t\t\t\t\t\t
      \    struct ospf_lsa *type7)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:2024,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2025,1
    - Dst: ospf_lsa_translated_nssa_new
      Src: /src/frr/ospfd/ospf_lsa.c:2034,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2037,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:2047,1
    - Dst: ospf_lsa_install::ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:2049,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:2050,1
    - Dst: ospf_lsa_free
      Src: /src/frr/ospfd/ospf_lsa.c:2053,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2058,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:2059,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2060,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:2060,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2061,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - ospf
    - type7
    - type5
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2069
      start: 2016
    functionDepth: 7
    functionLinenumber: 2016
    functionLinenumberEnd: 2069
    functionName: ospf_translated_nssa_originate
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_lsa_free
    - flog_warn
    - ospf_lsa_install::ospf_lsa_install
    - ip_masklen
    - zlog_debug
    - ospf_lsa_header_dump
    - lsa_seqnum_increment
    - ospf_lsa_translated_nssa_new
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_translated_nssa_originate(struct ospf *ospf,\n\t\t\t\t\t\tstruct
      ospf_lsa *type7,\n\t\t\t\t\t\tstruct ospf_lsa *type5)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:2081,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:2085,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:2087,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:2088,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:2097,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:2101,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_lsa.c:2111,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:2115,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:2115,1
    - Dst: break
      Src: /src/frr/ospfd/ospf_lsa.c:2119,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2128,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:2134,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2136,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_lsa.c:2145,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_lsa.c:2149,1
    - Dst: ospf_lsa_translated_nssa_new
      Src: /src/frr/ospfd/ospf_lsa.c:2152,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2155,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_lsa.c:2163,1
    - Dst: ospf_lsa_install::ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:2166,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:2167,1
    - Dst: ospf_lsa_free
      Src: /src/frr/ospfd/ospf_lsa.c:2170,1
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_lsa.c:2175,1
    - Dst: struct ospf_lsa::struct ospf_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:2177,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_lsa.c:2181,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:2187,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2188,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2231,1
    - Dst: ospf_external_lsa_new::ospf_external_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:2238,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:2258,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_lsa.c:2258,1
    - Dst: ospf_install_flood_nssa
      Src: /src/frr/ospfd/ospf_lsa.c:2259,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:2263,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2264,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2265,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2265,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:2267,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2267,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:2281,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:2281,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2282,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2289,1
    - Dst: ospf_external_lsa_new::ospf_external_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:2296,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2298,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2303,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_lsa.c:2307,1
    - Dst: ospf::ospf
      Src: /src/frr/ospfd/ospf_lsa.c:2307,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_lsa.c:2313,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:2316,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2318,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2318,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2319,1
    - Dst: ospf_lsa_header_dump::ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:2318,1
    - Dst: ospf_nssa_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:2326,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_lsa.c:2334,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:2337,1
    - Dst: ospf_external_lsa_new::ospf_external_lsa_new
      Src: /src/frr/ospfd/ospf_lsa.c:2340,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2342,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2347,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2348,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:2348,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:2358,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2359,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2360,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_lsa.c:2360,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_lsa.c:2361,1
    - Dst: zlog_debug::zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2313,1
    - Dst: ospf_external_default_routemap_apply_walk
      Src: /src/frr/ospfd/ospf_lsa.c:2393,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_lsa.c:2421,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:2426,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_lsa.c:2429,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsa.c:2429,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_lsa.c:2435,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:2438,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_lsa.c:2440,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_lsa.c:2443,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:2447,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:2448,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:2452,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:2459,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:2464,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_lsa.c:2467,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_lsa.c:2471,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:2473,1
    - Dst: ospf_default_external_info
      Src: /src/frr/ospfd/ospf_lsa.c:2481,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_lsa.c:2482,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_lsa.c:2483,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 94
    argCount: 3
    argNames:
    - ospf
    - type7
    - type5
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    - struct ospf_lsa*
    assertStmts:
    - condition: (type7 || type5)
      pos:
        line_end: 2080
        line_start: 2080
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (type7->data)
      pos:
        line_end: 2084
        line_start: 2084
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (ospf->anyNSSA)
      pos:
        line_end: 2087
        line_start: 2087
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (type5->data)
      pos:
        line_end: 2086
        line_start: 2086
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 2486
      start: 2072
    functionDepth: 7
    functionLinenumber: 2072
    functionLinenumberEnd: 2486
    functionName: ospf_translated_nssa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_external_lsa_refresh
    - ospf_install_flood_nssa
    - route_top
    - ospf_nssa_lsa_refresh
    - NSSA_LSDB
    - ospf_external_lsa_originate
    - data::data
    - htonl
    - ospf_lsa_translated_nssa_new
    - ospf_flood_through_area
    - ospf_external_info_find_lsa
    - ospf_lsa_free
    - IS_DEBUG_OSPF
    - flog_warn
    - ALL_LIST_ELEMENTS_RO
    - ospf_lsa_install::ospf_lsa_install
    - zlog_debug::zlog_debug
    - ospf_flood_through_as
    - zlog_debug
    - ospf::ospf
    - ospf_redistribute_check
    - ospf_originate_summary_lsa
    - if
    - ospf_lsa_header_dump::ospf_lsa_header_dump
    - ntohl
    - break
    - assert
    - ospf_external_default_routemap_apply_walk
    - ospf_refresher_unregister_lsa
    - ospf_default_external_info
    - ospf_lsa_install
    - ip_masklen
    - route_next
    - ospf_lsa_header_dump
    - flags::flags
    - ospf_external_aggr_match
    - is_default_prefix4
    - ospf_external_lsa_new::ospf_external_lsa_new
    - ospf_ls_retransmit_delete_nbr_as
    - CHECK_FLAG
    - struct ospf_lsa::struct ospf_lsa
    - IS_LSA_MAXAGE
    - lsa_seqnum_increment
    - ALL_LIST_ELEMENTS
    - LSDB_LOOP
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_translated_nssa_refresh(struct ospf *ospf,\n\t\t\t\t\t
      \     struct ospf_lsa *type7,\n\t\t\t\t\t      struct ospf_lsa *type5)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_lookup_by_header
      Src: /src/frr/ospfd/ospf_lsa.c:3248,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3250,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3252,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3253,1
    - Dst: ospf_lsa_maxage_delete
      Src: /src/frr/ospfd/ospf_lsa.c:3258,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_lsa.c:3260,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3262,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - oi
    - recv_lsa
    argTypes:
    - struct ospf_interface*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3263
      start: 3242
    functionDepth: 1
    functionLinenumber: 3242
    functionLinenumberEnd: 3263
    functionName: ospf_check_and_gen_init_seq_lsa
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - CHECK_FLAG
    - zlog_debug
    - ospf_lsa_maxage_delete
    - lsa_seqnum_increment
    - ospf_lsa_lookup_by_header
    - ospf_lsa_refresh
    linkageType: ''
    returnType: void
    signature: "void ospf_check_and_gen_init_seq_lsa(struct ospf_interface *oi,\n\t\t\t\t
      \    struct ospf_lsa *recv_lsa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_lsa.c:3270,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_lsa.c:3275,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3277,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsa.c:3278,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsa.c:3280,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsa.c:3283,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3286,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_lsa.c:3287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3289
      start: 3265
    functionDepth: 3
    functionLinenumber: 3265
    functionLinenumberEnd: 3289
    functionName: ospf_lsa_maxage_delete
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - memset
    - ospf_lsa_unlock
    - zlog_debug
    - UNSET_FLAG
    - dump_lsa_key
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_maxage_delete(struct ospf *ospf, struct ospf_lsa *lsa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3303,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3304,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3305,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_lsa.c:3307,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_lsa.c:3311,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_lsa.c:3316,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3318,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3319,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_lsa.c:3321,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsa.c:3323,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_lsa.c:3325,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3326,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3329,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3330,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_lsa.c:3331,1
    - Dst: OSPF_TIMER_ON
      Src: /src/frr/ospfd/ospf_lsa.c:3333,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3335
      start: 3296
    functionDepth: 2
    functionLinenumber: 3296
    functionLinenumberEnd: 3335
    functionName: ospf_lsa_maxage
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - IS_DEBUG_OSPF
    - memset
    - CHECK_FLAG
    - ospf_lsa_lock
    - OSPF_TIMER_ON
    - zlog_debug
    - route_node_get
    - dump_lsa_key
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_maxage(struct ospf *ospf, struct ospf_lsa *lsa)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3341,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3344,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_lsa.c:3348,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3349,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3350,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_lsa.c:3351,1
    - Dst: ospf_ase_incremental_update
      Src: /src/frr/ospfd/ospf_lsa.c:3374,1
    - Dst: ospf_spf_calculate_schedule
      Src: /src/frr/ospfd/ospf_lsa.c:3377,1
    - Dst: ospf_lsa_maxage
      Src: /src/frr/ospfd/ospf_lsa.c:3381,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3384,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_lsa.c:3384,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_lsa.c:3385,1
    - Dst: printf
      Src: /src/frr/ospfd/ospf_lsa.c:3386,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3389
      start: 3337
    functionDepth: 3
    functionLinenumber: 3337
    functionLinenumberEnd: 3389
    functionName: ospf_lsa_maxage_walker_remover
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_spf_calculate_schedule
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - LS_AGE
    - zlog_debug
    - ospf_lsa_is_self_originated
    - dump_lsa_key
    - ospf_lsa_maxage
    - printf
    - ospf_ase_incremental_update
    linkageType: ''
    returnType: int
    signature: "int ospf_lsa_maxage_walker_remover(struct ospf *ospf,\n\t\t\t\t\t
      \ struct ospf_lsa *lsa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_lsa.c:3394,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_lsa.c:3402,1
    - Dst: ROUTER_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3403,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3404,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3405,1
    - Dst: NETWORK_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3405,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3406,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3407,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3407,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3408,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3409,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3409,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3410,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3411,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3411,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3412,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3413,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3413,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3414,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3415,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3415,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3416,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3421,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3421,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3422,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3423,1
    - Dst: OPAQUE_AS_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3423,1
    - Dst: ospf_lsa_maxage_walker_remover
      Src: /src/frr/ospfd/ospf_lsa.c:3424,1
    - Dst: OSPF_TIMER_ON
      Src: /src/frr/ospfd/ospf_lsa.c:3427,1
    - Dst: ospf_lsa_lookup_by_prefix
      Src: /src/frr/ospfd/ospf_lsa.c:3431,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:3446,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3458
      start: 3392
    functionDepth: 4
    functionLinenumber: 3392
    functionLinenumberEnd: 3458
    functionName: ospf_lsa_maxage_walker
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - SUMMARY_LSDB
    - ROUTER_LSDB
    - masklen2ip
    - ospf_lsa_lookup_by_prefix
    - ASBR_SUMMARY_LSDB
    - OPAQUE_AREA_LSDB
    - NSSA_LSDB
    - OSPF_TIMER_ON
    - OPAQUE_LINK_LSDB
    - EVENT_ARG
    - ospf_lsa_maxage_walker_remover
    - ALL_LIST_ELEMENTS
    - ospf_lsdb_lookup_by_id
    - LSDB_LOOP
    - EXTERNAL_LSDB
    - NETWORK_LSDB
    - OPAQUE_AS_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_maxage_walker(struct event *thread)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3475,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - ospf
    - area
    - type
    - id
    - adv_router
    argTypes:
    - struct ospf*
    - struct ospf_area*
    - uint32_t
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3484
      start: 3460
    functionDepth: 1
    functionLinenumber: 3460
    functionLinenumberEnd: 3484
    functionName: ospf_lsa_lookup
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_lsdb_lookup_by_id
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_lsa_lookup(struct ospf *ospf, struct ospf_area
      *area,\n\t\t\t\t uint32_t type, struct in_addr id,\n\t\t\t\t struct in_addr
      adv_router)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3494,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_lsa.c:3496,1
    - Dst: NETWORK_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3496,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsa.c:3497,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:3499,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsa.c:3500,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:3507,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3508,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - area
    - type
    - id
    argTypes:
    - struct ospf_area*
    - uint32_t
    - struct in_addr
    assertStmts:
    - condition: (1)
      pos:
        line_end: 3506
        line_start: 3506
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 3521
      start: 3486
    functionDepth: 1
    functionLinenumber: 3486
    functionLinenumberEnd: 3521
    functionName: ospf_lsa_lookup_by_id
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_top
    - route_next
    - IPV4_ADDR_SAME
    - ospf_lsdb_lookup_by_id
    - NETWORK_LSDB
    - assert
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_lsa_lookup_by_id(struct ospf_area *area, uint32_t
      type,\n\t\t\t\t       struct in_addr id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_lookup
      Src: /src/frr/ospfd/ospf_lsa.c:3535,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3539,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - area
    - lsah
    argTypes:
    - struct ospf_area*
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3544
      start: 3523
    functionDepth: 2
    functionLinenumber: 3523
    functionLinenumberEnd: 3544
    functionName: ospf_lsa_lookup_by_header
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 1
    functionsReached:
    - ospf_lsa_lookup
    - IS_DEBUG_OSPF
    - zlog_debug
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_lsa_lookup_by_header(struct ospf_area *area,\n\t\t\t\t\t
      \  struct lsa_header *lsah)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_lsa.c:3562,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_lsa.c:3563,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsa.c:3570,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsa.c:3570,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3575,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3575,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3577,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3577,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_lsa.c:3581,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_lsa.c:3581,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_lsa.c:3583,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_lsa.c:3583,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 2
    argNames:
    - l1
    - l2
    argTypes:
    - struct ospf_lsa*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3588
      start: 3549
    functionDepth: 1
    functionLinenumber: 3549
    functionLinenumberEnd: 3588
    functionName: ospf_lsa_more_recent
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ntohs
    - LS_AGE
    - IS_LSA_MAXAGE
    - ntohl
    linkageType: ''
    returnType: int
    signature: int ospf_lsa_more_recent(struct ospf_lsa *l1, struct ospf_lsa *l2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:3611,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:3612,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:3613,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:3614,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3619,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3619,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3622,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_lsa.c:3622,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3632,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_lsa.c:3641,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - l1
    - l2
    - ignore_rcvd_flag
    argTypes:
    - struct ospf_lsa*
    - struct ospf_lsa*
    - bool
    assertStmts:
    - condition: (l1)
      pos:
        line_end: 3610
        line_start: 3610
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (l1->data)
      pos:
        line_end: 3612
        line_start: 3612
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (l2->data)
      pos:
        line_end: 3613
        line_start: 3613
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (l2)
      pos:
        line_end: 3611
        line_start: 3611
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 3647
      start: 3607
    functionDepth: 1
    functionLinenumber: 3607
    functionLinenumberEnd: 3647
    functionName: ospf_lsa_different
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_LSA_MAXAGE
    - CHECK_FLAG
    - assert
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int ospf_lsa_different(struct ospf_lsa *l1, struct ospf_lsa *l2,\n\t\t
      \      bool ignore_rcvd_flag)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3651,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3655,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_lsa.c:3660,1
    - Dst: ospf_opaque_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3667,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:3670,1
    - Dst: ospf_lsa_flush
      Src: /src/frr/ospfd/ospf_lsa.c:3671,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3676
      start: 3649
    functionDepth: 1
    functionLinenumber: 3649
    functionLinenumberEnd: 3676
    functionName: ospf_lsa_flush_schedule
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_refresher_unregister_lsa
    - ospf_opaque_lsa_refresh
    - htons
    - zlog_debug
    - ospf_lsa_flush
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: int ospf_lsa_flush_schedule(struct ospf *ospf, struct ospf_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_lsa.c:3691,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3694,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:3699,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_lsa.c:3700,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsa.c:3701,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_lsa.c:3705,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3709,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_lsa.c:3714,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_lsa.c:3716,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsa.c:3717,1
    - Dst: ospf_lookup_if_params
      Src: /src/frr/ospfd/ospf_lsa.c:3720,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_lsa.c:3723,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3732,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3732,1
    - Dst: ospf_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_lsa.c:3733,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3734,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3734,1
    - Dst: ospf_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_lsa.c:3735,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3736,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3736,1
    - Dst: ospf_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_lsa.c:3737,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3738,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3738,1
    - Dst: ospf_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_lsa.c:3739,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3743,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3743,1
    - Dst: ospf_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_lsa.c:3744,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3745,1
    - Dst: OPAQUE_AS_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3745,1
    - Dst: ospf_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_lsa.c:3746,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_lsa.c:3754,1
    - Dst: event_execute
      Src: /src/frr/ospfd/ospf_lsa.c:3755,1
    - Dst: ospf_refresh_area_self_lsas
      Src: /src/frr/ospfd/ospf_lsa.c:3766,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3778,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_lsa.c:3780,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:3781,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3782,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3784,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3784,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:3785,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3785,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3786,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3787,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3787,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:3788,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3788,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3789,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3790,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3790,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:3791,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3791,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3792,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3793,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3793,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:3794,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3794,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3795,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3796,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3796,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:3797,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3797,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3798,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_lsa.c:3799,1
    - Dst: OPAQUE_AS_LSDB
      Src: /src/frr/ospfd/ospf_lsa.c:3799,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_lsa.c:3800,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3800,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:3801,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_lsa.c:3806,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3812,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3813,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3816,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:3819,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:3824,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3825,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_lsa.c:3829,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_lsa.c:3833,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:3837,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3839,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:3843,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3844
      start: 3678
    functionDepth: 3
    functionLinenumber: 3678
    functionLinenumberEnd: 3844
    functionName: ospf_flush_self_originated_lsas_now
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - ospf_lsa_flush_schedule
    - OPAQUE_LINK_LSDB
    - EXTERNAL_LSDB
    - htonl
    - ospf_lsa_refresh
    - IS_LSA_SELF
    - SUMMARY_LSDB
    - ospf_refresh_area_self_lsas
    - ALL_LIST_ELEMENTS_RO
    - ASBR_SUMMARY_LSDB
    - zlog_debug
    - ospf_lookup_if_params
    - if
    - OPAQUE_AREA_LSDB
    - ospf_refresher_unregister_lsa
    - EVENT_OFF
    - ospf_lsa_flush_area
    - CHECK_FLAG
    - event_execute
    - ospf_lsa_unlock
    - SET_FLAG
    - ospf_lsa_is_self_originated
    - ALL_LIST_ELEMENTS
    - LSDB_LOOP
    - OPAQUE_AS_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf_flush_self_originated_lsas_now(struct ospf *ospf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3857,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:3866,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3867,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3868,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:3874,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_lsa.c:3884,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3887,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3890,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3891,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_lsa.c:3913,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:3915,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3916,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3917,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 5
    argNames:
    - ospf
    - lsdb
    - type
    - p
    - id
    argTypes:
    - struct ospf*
    - struct ospf_lsdb*
    - uint8_t
    - struct prefix_ipv4*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3847
    functionDepth: 1
    functionLinenumber: 3847
    functionLinenumberEnd: 3928
    functionName: ospf_lsa_unique_id
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 3
    functionsReached:
    - IS_DEBUG_OSPF
    - masklen2ip
    - ip_masklen
    - zlog_debug
    - ospf_lsdb_lookup_by_id
    linkageType: ''
    returnType: enum lsid_status
    signature: "enum lsid_status ospf_lsa_unique_id(struct ospf *ospf, struct ospf_lsdb
      *lsdb,\n\t\t\t\t    uint8_t type, struct prefix_ipv4 *p,\n\t\t\t\t    struct
      in_addr *id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_lsa.c:3944,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:3946,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:3947,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_lsa.c:3952,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_lsa.c:3955,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsa.c:3959,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_lsa.c:3960,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3961
      start: 3940
    functionDepth: 3
    functionLinenumber: 3940
    functionLinenumberEnd: 3961
    functionName: ospf_lsa_action
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_flush_area
    - IS_DEBUG_OSPF
    - ospf_lsa_unlock
    - zlog_debug
    - XFREE
    - EVENT_ARG
    - ospf_flood_through_area
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_action(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_lsa.c:3967,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_lsa.c:3970,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_lsa.c:3972,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_lsa.c:3974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - area
    - lsa
    argTypes:
    - struct ospf_area*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3976
      start: 3963
    functionDepth: 1
    functionLinenumber: 3963
    functionLinenumberEnd: 3976
    functionName: ospf_schedule_lsa_flood_area
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - event_add_event
    - ospf_lsa_lock
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void ospf_schedule_lsa_flood_area(struct ospf_area *area, struct ospf_lsa
      *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_lsa.c:3982,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_lsa.c:3985,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_lsa.c:3987,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_lsa.c:3989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - area
    - lsa
    argTypes:
    - struct ospf_area*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3991
      start: 3978
    functionDepth: 1
    functionLinenumber: 3978
    functionLinenumberEnd: 3991
    functionName: ospf_schedule_lsa_flush_area
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - event_add_event
    - ospf_lsa_lock
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void ospf_schedule_lsa_flush_area(struct ospf_area *area, struct ospf_lsa
      *lsa)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:4003,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:4003,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:4004,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:4004,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:4005,1
    - Dst: ospf_router_lsa_refresh::ospf_router_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:4010,1
    - Dst: ospf_network_lsa_refresh::ospf_network_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:4013,1
    - Dst: ospf_summary_lsa_refresh::ospf_summary_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:4016,1
    - Dst: ospf_summary_asbr_lsa_refresh::ospf_summary_asbr_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:4019,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_lsa.c:4028,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:4031,1
    - Dst: ospf_external_info_check
      Src: /src/frr/ospfd/ospf_lsa.c:4033,1
    - Dst: ospf_external_lsa_refresh::ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:4035,1
    - Dst: ospf_extrenal_aggregator_lookup
      Src: /src/frr/ospfd/ospf_lsa.c:4039,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_lsa.c:4043,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:4050,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_lsa.c:4052,1
    - Dst: ospf_lsa_flush_as
      Src: /src/frr/ospfd/ospf_lsa.c:4055,1
    - Dst: ospf_opaque_lsa_refresh::ospf_opaque_lsa_refresh
      Src: /src/frr/ospfd/ospf_lsa.c:4061,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts:
    - condition: (CHECK_FLAG(lsa->flags, OSPF_LSA_SELF))
      pos:
        line_end: 4002
        line_start: 4002
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (IS_LSA_SELF(lsa))
      pos:
        line_end: 4003
        line_start: 4003
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (lsa->lock > 0)
      pos:
        line_end: 4004
        line_start: 4004
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 4067
      start: 3995
    functionDepth: 5
    functionLinenumber: 3995
    functionLinenumberEnd: 4067
    functionName: ospf_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 4
    functionsReached:
    - assert
    - ospf_external_lsa_refresh
    - ospf_summary_asbr_lsa_refresh::ospf_summary_asbr_lsa_refresh
    - ospf_external_info_check
    - memset
    - ospf_opaque_lsa_refresh::ospf_opaque_lsa_refresh
    - CHECK_FLAG
    - ospf_extrenal_aggregator_lookup
    - ip_masklen
    - ospf_external_lsa_refresh::ospf_external_lsa_refresh
    - ospf_lsa_flush_as
    - SET_FLAG
    - ospf_network_lsa_refresh::ospf_network_lsa_refresh
    - ospf_summary_lsa_refresh::ospf_summary_lsa_refresh
    - IS_LSA_SELF
    - ospf_router_lsa_refresh::ospf_router_lsa_refresh
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_lsa_refresh(struct ospf *ospf, struct ospf_lsa
      *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:4073,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:4074,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:4074,1
    - Dst: frr_weak_random
      Src: /src/frr/ospfd/ospf_lsa.c:4089,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_lsa.c:4093,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:4099,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:4100,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_lsa.c:4103,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_lsa.c:4106,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_lsa.c:4108,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_lsa.c:4109,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_lsa.c:4112,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_lsa.c:4113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->lock > 0)
      pos:
        line_end: 4072
        line_start: 4072
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (IS_LSA_SELF(lsa))
      pos:
        line_end: 4073
        line_start: 4073
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 4118
      start: 4069
    functionDepth: 1
    functionLinenumber: 4069
    functionLinenumberEnd: 4118
    functionName: ospf_refresher_register_lsa
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - frr_weak_random
    - monotime
    - ospf_lsa_lock
    - listnode_add
    - LS_AGE
    - zlog_debug
    - list_new
    - IS_LSA_SELF
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_refresher_register_lsa(struct ospf *ospf, struct ospf_lsa
      *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:4122,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsa.c:4123,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsa.c:4123,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_lsa.c:4127,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_lsa.c:4128,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_lsa.c:4129,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsa.c:4133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->lock > 0)
      pos:
        line_end: 4121
        line_start: 4121
        source_file: /src/frr/ospfd/ospf_lsa.c
    - condition: (IS_LSA_SELF(lsa))
      pos:
        line_end: 4122
        line_start: 4122
        source_file: /src/frr/ospfd/ospf_lsa.c
    constantsTouched: []
    func_position:
      end: 4135
      start: 4120
    functionDepth: 3
    functionLinenumber: 4120
    functionLinenumberEnd: 4135
    functionName: ospf_refresher_unregister_lsa
    functionSourceFile: /src/frr/ospfd/ospf_lsa.c
    functionUses: 6
    functionsReached:
    - list_delete
    - listcount
    - ospf_lsa_unlock
    - listnode_delete
    - IS_LSA_SELF
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_refresher_unregister_lsa(struct ospf *ospf, struct ospf_lsa
      *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: ospf_clear_spf_reason_flags
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_clear_spf_reason_flags(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reason
    argTypes:
    - ospf_spf_reason_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: ospf_spf_set_reason
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_spf_set_reason(ospf_spf_reason_t reason)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - struct vertex*
    - struct vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 80
    functionName: vertex_cmp
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vertex_cmp(const struct vertex *v1, const struct vertex *v2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_spf.c:92,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_spf.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: lsdb_clean_stat
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - route_top
    - route_next
    linkageType: ''
    returnType: void
    signature: void lsdb_clean_stat(struct ospf_lsdb *lsdb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_spf.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: vertex_nexthop_new
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct vertex_nexthop
    signature: struct vertex_nexthop *vertex_nexthop_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_spf.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct vertex_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: vertex_nexthop_free
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vertex_nexthop_free(struct vertex_nexthop *nh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:118,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_spf.c:130,1
    - Dst: ospf_canonical_nexthops_free
      Src: /src/frr/ospfd/ospf_spf.c:131,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_spf.c:134,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:134,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:136,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:139,1
    - Dst: vertex_parent_new
      Src: /src/frr/ospfd/ospf_spf.c:151,1
    - Dst: XMALLOC::XMALLOC
      Src: /src/frr/ospfd/ospf_spf.c:157,1
    - Dst: vertex_parent_free::vertex_parent_free
      Src: /src/frr/ospfd/ospf_spf.c:164,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:169,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:170,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_spf.c:171,1
    - Dst: vertex_parent_cmp
      Src: /src/frr/ospfd/ospf_spf.c:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - root
    argTypes:
    - struct vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 178
    functionName: ospf_canonical_nexthops_free
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 1
    functionsReached:
    - vertex_parent_free::vertex_parent_free
    - XMALLOC::XMALLOC
    - vertex_parent_new
    - vertex_nexthop_free
    - ospf_canonical_nexthops_free
    - XFREE
    - if
    - ALL_LIST_ELEMENTS
    - for
    - vertex_parent_cmp
    linkageType: ''
    returnType: void
    signature: void ospf_canonical_nexthops_free(struct vertex *root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_spf.c:185,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_spf.c:191,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_spf.c:192,1
    - Dst: parents::parents
      Src: /src/frr/ospfd/ospf_spf.c:193,1
    - Dst: parents::parents
      Src: /src/frr/ospfd/ospf_spf.c:194,1
    - Dst: listnode_add::listnode_add
      Src: /src/frr/ospfd/ospf_spf.c:197,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:202,1
    - Dst: type::type
      Src: /src/frr/ospfd/ospf_spf.c:203,1
    - Dst: lsa::lsa
      Src: /src/frr/ospfd/ospf_spf.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - area
    - lsa
    argTypes:
    - struct ospf_area*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 208
    functionName: ospf_vertex_new
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - lsa::lsa
    - zlog_debug
    - list_new
    - listnode_add::listnode_add
    - type::type
    - parents::parents
    linkageType: ''
    returnType: struct vertex
    signature: "struct vertex *ospf_vertex_new(struct ospf_area *area,\n\t\t\t\t      struct
      ospf_lsa *lsa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:215,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_spf.c:220,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_spf.c:223,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_spf.c:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 228
    functionName: ospf_vertex_free
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_vertex_free(void *data)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:236,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:244,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:246,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:259,1
    - Dst: ospf_vertex_dump
      Src: /src/frr/ospfd/ospf_spf.c:260,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:271,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_spf.c:273,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:273,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:274,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_spf.c:277,1
    - Dst: listnode_lookup
      Src: /src/frr/ospfd/ospf_spf.c:277,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_spf.c:278,1
    - Dst: ospf_spf_remove_link
      Src: /src/frr/ospfd/ospf_spf.c:509,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_spf.c:512,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:521,1
    - Dst: ospf_spf_remove_branch
      Src: /src/frr/ospfd/ospf_spf.c:523,1
    - Dst: ospf_spf_init
      Src: /src/frr/ospfd/ospf_spf.c:533,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_spf.c:540,1
    - Dst: ospf_vertex_new
      Src: /src/frr/ospfd/ospf_spf.c:545,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:569,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_spf.c:572,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:581,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:583,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_spf.c:591,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_spf.c:599,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:640,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_spf.c:651,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:664,1
    - Dst: list_delete_node
      Src: /src/frr/ospfd/ospf_spf.c:665,1
    - Dst: vertex_parent_free
      Src: /src/frr/ospfd/ospf_spf.c:666,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:687,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:688,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:697,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:702,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:710,1
    - Dst: ospf_spf_flush_parents
      Src: /src/frr/ospfd/ospf_spf.c:713,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:721,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_spf.c:722,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:724,1
    - Dst: vertex_parent_new
      Src: /src/frr/ospfd/ospf_spf.c:732,1
    - Dst: ospf_lsa_has_link
      Src: /src/frr/ospfd/ospf_spf.c:732,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospfd/ospf_spf.c:734,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 90
    argCount: 4
    argNames:
    - msg
    - v
    - print_parents
    - print_children
    argTypes:
    - char*
    - struct vertex*
    - int
    - int
    assertStmts:
    - condition: (distance)
      pos:
        line_end: 687
        line_start: 687
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (v && w && newhop)
      pos:
        line_end: 686
        line_start: 686
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (v && v->parents)
      pos:
        line_end: 270
        line_start: 270
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (vp->parent && vp->parent->children)
      pos:
        line_end: 273
        line_start: 273
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (distance <= w->distance)
      pos:
        line_end: 696
        line_start: 696
        source_file: /src/frr/ospfd/ospf_spf.c
    constantsTouched: []
    func_position:
      end: 737
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 737
    functionName: ospf_vertex_dump
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 1
    functionsReached:
    - ospf_vertex_new
    - listnode_add
    - memcmp
    - ntohs
    - IPV4_ADDR_SAME
    - ALL_LIST_ELEMENTS_RO
    - ospf_vertex_dump
    - zlog_debug
    - if
    - for
    - assert
    - vertex_parent_free
    - listnode_add_sort
    - ospf_spf_remove_link
    - ospf_spf_flush_parents
    - list_delete_node
    - ospf_lsa_has_link
    - ospf_spf_init
    - ospf_spf_remove_branch
    - ospf_spf_vertex_find
    - listnode_lookup
    - vertex_parent_new
    - list_new
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void ospf_vertex_dump(const char *msg, struct vertex *v,\n\t\t\t     int
      print_parents, int print_children)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:640,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_spf.c:651,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - v
    - w
    - prev_link
    argTypes:
    - struct vertex*
    - struct vertex*
    - struct router_lsa_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 656
    functionName: ospf_get_next_link
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - ntohs
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: struct router_lsa_link
    signature: "struct router_lsa_link *\nospf_get_next_link(struct vertex *v, struct
      vertex *w,\n\t\t   struct router_lsa_link *prev_link)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:664,1
    - Dst: list_delete_node
      Src: /src/frr/ospfd/ospf_spf.c:665,1
    - Dst: vertex_parent_free
      Src: /src/frr/ospfd/ospf_spf.c:666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 667
    functionName: ospf_spf_flush_parents
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 1
    functionsReached:
    - list_delete_node
    - ALL_LIST_ELEMENTS
    - vertex_parent_free
    linkageType: ''
    returnType: void
    signature: void ospf_spf_flush_parents(struct vertex *w)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:687,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:688,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:697,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:702,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:710,1
    - Dst: ospf_spf_flush_parents
      Src: /src/frr/ospfd/ospf_spf.c:713,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:721,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_spf.c:722,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:724,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 5
    argNames:
    - v
    - w
    - newhop
    - newlhop
    - distance
    argTypes:
    - struct vertex*
    - struct vertex*
    - struct vertex_nexthop*
    - struct vertex_nexthop*
    - unsigned int
    assertStmts:
    - condition: (v && w && newhop)
      pos:
        line_end: 686
        line_start: 686
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (distance)
      pos:
        line_end: 687
        line_start: 687
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (distance <= w->distance)
      pos:
        line_end: 696
        line_start: 696
        source_file: /src/frr/ospfd/ospf_spf.c
    constantsTouched: []
    func_position:
      end: 730
      start: 677
    functionDepth: 2
    functionLinenumber: 677
    functionLinenumberEnd: 730
    functionName: ospf_spf_add_parent
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - ospf_spf_flush_parents
    - memcmp
    - zlog_debug
    - assert
    linkageType: ''
    returnType: struct vertex_parent
    signature: "struct vertex_parent *ospf_spf_add_parent(struct vertex *v,\n\t\t\t\t\t\t
      struct vertex *w,\n\t\t\t\t\t\t struct vertex_nexthop *newhop,\n\t\t\t\t\t\t
      struct vertex_nexthop *newlhop,\n\t\t\t\t\t\t unsigned int distance)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:750,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - lsa
    - v_link_addr
    - w_link_addr
    argTypes:
    - struct lsa_header*
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 772
    functionName: match_stub_prefix
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int match_stub_prefix(struct lsa_header *lsa, struct in_addr v_link_addr,\n\t\t\t
      \    struct in_addr w_link_addr)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:797,1
    - Dst: ospf_vertex_dump
      Src: /src/frr/ospfd/ospf_spf.c:798,1
    - Dst: ospf_vertex_dump
      Src: /src/frr/ospfd/ospf_spf.c:799,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:800,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:814,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:817,1
    - Dst: ospf_if_lookup_by_lsa_pos
      Src: /src/frr/ospfd/ospf_spf.c:833,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:836,1
    - Dst: ospf_nbr_lookup_by_routerid
      Src: /src/frr/ospfd/ospf_spf.c:912,1
    - Dst: ospf_get_next_link
      Src: /src/frr/ospfd/ospf_spf.c:922,1
    - Dst: match_stub_prefix
      Src: /src/frr/ospfd/ospf_spf.c:924,1
    - Dst: ospf_get_next_link
      Src: /src/frr/ospfd/ospf_spf.c:946,1
    - Dst: prefix_cmp
      Src: /src/frr/ospfd/ospf_spf.c:950,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:962,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:970,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_spf.c:971,1
    - Dst: ospf_spf_add_parent
      Src: /src/frr/ospfd/ospf_spf.c:974,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:977,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:978,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:982,1
    - Dst: ospf_vl_lookup
      Src: /src/frr/ospfd/ospf_spf.c:1000,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_spf.c:1004,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:1006,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:1014,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_spf.c:1015,1
    - Dst: ospf_spf_add_parent
      Src: /src/frr/ospfd/ospf_spf.c:1018,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:1021,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:1022,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1027,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:1034,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:1036,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:1044,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_spf.c:1045,1
    - Dst: ospf_spf_add_parent
      Src: /src/frr/ospfd/ospf_spf.c:1047,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:1049,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:1050,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:1059,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:1070,1
    - Dst: ospf_get_next_link
      Src: /src/frr/ospfd/ospf_spf.c:1071,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:1082,1
    - Dst: vertex_nexthop_new
      Src: /src/frr/ospfd/ospf_spf.c:1090,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_spf.c:1091,1
    - Dst: ospf_spf_add_parent
      Src: /src/frr/ospfd/ospf_spf.c:1095,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:1098,1
    - Dst: vertex_nexthop_free
      Src: /src/frr/ospfd/ospf_spf.c:1099,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 113
    argCount: 6
    argNames:
    - area
    - v
    - w
    - l
    - distance
    - lsa_pos
    argTypes:
    - struct ospf_area*
    - struct vertex*
    - struct vertex*
    - struct router_lsa_link*
    - unsigned int
    - int
    assertStmts:
    - condition: (w->type == OSPF_VERTEX_ROUTER)
      pos:
        line_end: 1069
        line_start: 1069
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (w->type == OSPF_VERTEX_NETWORK)
      pos:
        line_end: 1033
        line_start: 1033
        source_file: /src/frr/ospfd/ospf_spf.c
    - condition: (l != NULL)
      pos:
        line_end: 813
        line_start: 813
        source_file: /src/frr/ospfd/ospf_spf.c
    constantsTouched: []
    func_position:
      end: 1134
      start: 786
    functionDepth: 3
    functionLinenumber: 786
    functionLinenumberEnd: 1134
    functionName: ospf_nexthop_calculation
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_info
    - ospf_vl_lookup
    - vertex_nexthop_new
    - prefix_cmp
    - CHECK_FLAG
    - vertex_nexthop_free
    - ospf_vertex_dump
    - ospf_nbr_lookup_by_routerid
    - zlog_debug
    - match_stub_prefix
    - ospf_get_next_link
    - ospf_spf_add_parent
    - memcpy
    - ospf_if_lookup_by_lsa_pos
    - assert
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int ospf_nexthop_calculation(struct ospf_area *area,\n\t\t\t\t\t
      \    struct vertex *v, struct vertex *w,\n\t\t\t\t\t     struct router_lsa_link
      *l,\n\t\t\t\t\t     unsigned int distance, int lsa_pos)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_spf.c:1270,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:1273,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:1283,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:1294,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1297,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - v
    - l
    - w_lsa
    argTypes:
    - struct vertex*
    - struct router_lsa_link*
    - struct ospf_lsa*
    assertStmts:
    - condition: (w_lsa && w_lsa->data)
      pos:
        line_end: 1269
        line_start: 1269
        source_file: /src/frr/ospfd/ospf_spf.c
    constantsTouched: []
    func_position:
      end: 1300
      start: 1262
    functionDepth: 1
    functionLinenumber: 1262
    functionLinenumberEnd: 1300
    functionName: get_reverse_distance
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_debug
    - assert
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t get_reverse_distance(struct vertex *v,\n\t\t\t\t     struct
      router_lsa_link *l,\n\t\t\t\t     struct ospf_lsa *w_lsa)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: IS_ROUTER_LSA_VIRTUAL
      Src: /src/frr/ospfd/ospf_spf.c:1324,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1329,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:1334,1
    - Dst: ospf_spf_is_protected_resource
      Src: /src/frr/ospfd/ospf_spf.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1380,1
    - Dst: ospf_lsa_lookup
      Src: /src/frr/ospfd/ospf_spf.c:1383,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1387,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1392,1
    - Dst: ospf_lsa_lookup_by_id
      Src: /src/frr/ospfd/ospf_spf.c:1395,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1398,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_spf.c:1401,1
    - Dst: get_reverse_distance
      Src: /src/frr/ospfd/ospf_spf.c:1413,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:1415,1
    - Dst: ospf_lsa_lookup_by_id
      Src: /src/frr/ospfd/ospf_spf.c:1425,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1428,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1442,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_spf.c:1446,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1448,1
    - Dst: ospf_lsa_has_link
      Src: /src/frr/ospfd/ospf_spf.c:1452,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1454,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1464,1
    - Dst: ospf_vertex_new
      Src: /src/frr/ospfd/ospf_spf.c:1481,1
    - Dst: ospf_nexthop_calculation
      Src: /src/frr/ospfd/ospf_spf.c:1484,1
    - Dst: vertex_pqueue_add
      Src: /src/frr/ospfd/ospf_spf.c:1486,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_spf.c:1488,1
    - Dst: ospf_vertex_free
      Src: /src/frr/ospfd/ospf_spf.c:1489,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1492,1
    - Dst: ospf_nexthop_calculation
      Src: /src/frr/ospfd/ospf_spf.c:1504,1
    - Dst: vertex_pqueue_del
      Src: /src/frr/ospfd/ospf_spf.c:1515,1
    - Dst: ospf_nexthop_calculation
      Src: /src/frr/ospfd/ospf_spf.c:1516,1
    - Dst: vertex_pqueue_add
      Src: /src/frr/ospfd/ospf_spf.c:1518,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 96
    argCount: 3
    argNames:
    - v
    - area
    - candidate
    argTypes:
    - struct vertex*
    - struct ospf_area*
    - struct vertex_pqueue_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1308
    functionDepth: 4
    functionLinenumber: 1308
    functionLinenumberEnd: 1522
    functionName: ospf_spf_next
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - ospf_vertex_new
    - vertex_pqueue_add
    - get_reverse_distance
    - flog_warn
    - IS_LSA_MAXAGE
    - ospf_lsa_lookup_by_id
    - ospf_spf_is_protected_resource
    - ntohs
    - ospf_lsa_lookup
    - zlog_debug
    - IS_ROUTER_LSA_VIRTUAL
    - ospf_lsa_has_link
    - listnode_delete
    - ospf_nexthop_calculation
    - vertex_pqueue_del
    - ospf_vertex_free
    linkageType: ''
    returnType: void
    signature: "void ospf_spf_next(struct vertex *v, struct ospf_area *area,\n\t\t\t
      \ struct vertex_pqueue_head *candidate)"
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1532,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1537,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_spf.c:1539,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:1543,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1544,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_spf.c:1552,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:1552,1
    - Dst: ospf_spf_dump
      Src: /src/frr/ospfd/ospf_spf.c:1553,1
    - Dst: ospf_spf_print
      Src: /src/frr/ospfd/ospf_spf.c:1556,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_spf.c:1563,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_spf.c:1566,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_spf.c:1567,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:1570,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_spf.c:1571,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_spf.c:1580,1
    - Dst: ospf_spf_print
      Src: /src/frr/ospfd/ospf_spf.c:1581,1
    - Dst: ospf_spf_process_stubs
      Src: /src/frr/ospfd/ospf_spf.c:1585,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1592,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1603,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1609,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:1610,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_spf.c:1613,1
    - Dst: ospf_spf_is_protected_resource
      Src: /src/frr/ospfd/ospf_spf.c:1623,1
    - Dst: ospf_intra_add_stub
      Src: /src/frr/ospfd/ospf_spf.c:1624,1
    - Dst: ospf_vertex_dump
      Src: /src/frr/ospfd/ospf_spf.c:1630,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:1633,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_spf.c:1634,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_spf.c:1642,1
    - Dst: else
      Src: /src/frr/ospfd/ospf_spf.c:1644,1
    - Dst: ospf_spf_process_stubs
      Src: /src/frr/ospfd/ospf_spf.c:1647,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_spf.c:1649,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospf_spf.c:1653,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1661,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_spf.c:1663,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_spf.c:1663,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_spf.c:1665,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_spf.c:1666,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_spf.c:1668,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_spf.c:1672,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_spf.c:1675,1
    - Dst: ospf_spf_cleanup
      Src: /src/frr/ospfd/ospf_spf.c:1678,1
    - Dst: ospf_canonical_nexthops_free
      Src: /src/frr/ospfd/ospf_spf.c:1686,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_spf.c:1690,1
    - Dst: ospf_spf_calculate
      Src: /src/frr/ospfd/ospf_spf.c:1694,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1704,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1715,1
    - Dst: lsdb_clean_stat
      Src: /src/frr/ospfd/ospf_spf.c:1727,1
    - Dst: vertex_pqueue_init
      Src: /src/frr/ospfd/ospf_spf.c:1730,1
    - Dst: ospf_spf_init
      Src: /src/frr/ospfd/ospf_spf.c:1736,1
    - Dst: ospf_spf_next
      Src: /src/frr/ospfd/ospf_spf.c:1751,1
    - Dst: vertex_pqueue_pop
      Src: /src/frr/ospfd/ospf_spf.c:1754,1
    - Dst: ospf_vertex_add_parent
      Src: /src/frr/ospfd/ospf_spf.c:1761,1
    - Dst: ospf_intra_add_transit
      Src: /src/frr/ospfd/ospf_spf.c:1765,1
    - Dst: ospf_intra_add_router
      Src: /src/frr/ospfd/ospf_spf.c:1768,1
    - Dst: ospf_intra_add_router
      Src: /src/frr/ospfd/ospf_spf.c:1770,1
    - Dst: ospf_spf_dump
      Src: /src/frr/ospfd/ospf_spf.c:1777,1
    - Dst: ospf_route_table_dump
      Src: /src/frr/ospfd/ospf_spf.c:1778,1
    - Dst: ospf_router_route_table_dump
      Src: /src/frr/ospfd/ospf_spf.c:1780,1
    - Dst: ospf_spf_process_stubs
      Src: /src/frr/ospfd/ospf_spf.c:1787,1
    - Dst: ospf_vertex_dump
      Src: /src/frr/ospfd/ospf_spf.c:1789,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1794,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1798,1
    - Dst: mtype_stats_alloc
      Src: /src/frr/ospfd/ospf_spf.c:1799,1
    - Dst: ospf_spf_calculate_area
      Src: /src/frr/ospfd/ospf_spf.c:1802,1
    - Dst: ospf_spf_calculate
      Src: /src/frr/ospfd/ospf_spf.c:1807,1
    - Dst: ospf_ti_lfa_compute
      Src: /src/frr/ospfd/ospf_spf.c:1811,1
    - Dst: ospf_spf_cleanup
      Src: /src/frr/ospfd/ospf_spf.c:1814,1
    - Dst: ospf_spf_calculate_areas
      Src: /src/frr/ospfd/ospf_spf.c:1820,1
    - Dst: ospf_spf_calculate_area
      Src: /src/frr/ospfd/ospf_spf.c:1834,1
    - Dst: ospf_spf_calculate_area
      Src: /src/frr/ospfd/ospf_spf.c:1840,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_spf.c:1847,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1856,1
    - Dst: ospf_vl_unapprove
      Src: /src/frr/ospfd/ospf_spf.c:1860,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1863,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:1864,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:1865,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_spf.c:1868,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:1869,1
    - Dst: ospf_spf_calculate_areas
      Src: /src/frr/ospfd/ospf_spf.c:1871,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1872,1
    - Dst: ospf_vl_shut_unapproved
      Src: /src/frr/ospfd/ospf_spf.c:1874,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1877,1
    - Dst: ospf_ia_routing
      Src: /src/frr/ospfd/ospf_spf.c:1878,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1879,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1882,1
    - Dst: ospf_prune_unreachable_networks
      Src: /src/frr/ospfd/ospf_spf.c:1883,1
    - Dst: ospf_prune_unreachable_routers
      Src: /src/frr/ospfd/ospf_spf.c:1885,1
    - Dst: ospf_prune_unreachable_routers
      Src: /src/frr/ospfd/ospf_spf.c:1886,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1887,1
    - Dst: ospf_ase_calculate_schedule
      Src: /src/frr/ospfd/ospf_spf.c:1896,1
    - Dst: ospf_ase_calculate_timer_add
      Src: /src/frr/ospfd/ospf_spf.c:1897,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1900,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_spf.c:1902,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1906,1
    - Dst: ospf_route_install
      Src: /src/frr/ospfd/ospf_spf.c:1907,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1908,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospf_spf.c:1912,1
    - Dst: ospf_apiserver_notify_reachable
      Src: /src/frr/ospfd/ospf_spf.c:1920,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospf_spf.c:1925,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1934,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_spf.c:1935,1
    - Dst: ospf_abr_nssa_check_status
      Src: /src/frr/ospfd/ospf_spf.c:1937,1
    - Dst: ospf_abr_task
      Src: /src/frr/ospfd/ospf_spf.c:1938,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1940,1
    - Dst: ospf_sr_update_task
      Src: /src/frr/ospfd/ospf_spf.c:1943,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1946,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1951,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1953,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1955,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1957,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1959,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1961,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1963,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1965,1
    - Dst: strlen
      Src: /src/frr/ospfd/ospf_spf.c:1967,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1975,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1976,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1977,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1978,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1979,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_spf.c:1980,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1981,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1983,1
    - Dst: ospf_clear_spf_reason_flags
      Src: /src/frr/ospfd/ospf_spf.c:1986,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1998,1
    - Dst: ospf_spf_set_reason
      Src: /src/frr/ospfd/ospf_spf.c:2004,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:2009,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:2015,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:2044,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_spf.c:2047,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:2055,1
    - Dst: ospf_route_delete
      Src: /src/frr/ospfd/ospf_spf.c:2059,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospf_spf.c:2060,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:2061,1
    - Dst: ospf_route_delete
      Src: /src/frr/ospfd/ospf_spf.c:2066,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospf_spf.c:2067,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:2068,1
    - Dst: ospf_spf_calculate_schedule
      Src: /src/frr/ospfd/ospf_spf.c:2072,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 167
    argCount: 2
    argNames:
    - v
    - i
    argTypes:
    - struct vertex*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 1524
    functionDepth: 5
    functionLinenumber: 1524
    functionLinenumberEnd: 2073
    functionName: ospf_spf_dump
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 1
    functionsReached:
    - strlen
    - list_delete
    - route_top
    - ntohs
    - ospf_spf_calculate
    - ospf_clear_spf_reason_flags
    - ospf_spf_process_stubs
    - ospf_ti_lfa_compute
    - ospf_sr_update_task
    - ospf_abr_task
    - ospf_spf_set_reason
    - ospf_intra_add_router
    - strlcat
    - ospf_spf_calculate_areas
    - ospf_spf_calculate_schedule
    - ospf_vertex_add_parent
    - ospf_spf_print
    - ospf_vrf_id_to_name
    - ALL_LIST_ELEMENTS_RO
    - IS_OSPF_ABR
    - ospf_rtrs_free
    - ospf_route_table_dump
    - ospf_spf_is_protected_resource
    - ospf_intra_add_stub
    - ospf_vertex_dump
    - zlog_debug
    - vertex_pqueue_pop
    - event_add_timer_msec
    - ospf_route_install
    - EVENT_ARG
    - if
    - ospf_ia_routing
    - for
    - ospf_route_free
    - vertex_pqueue_init
    - ospf_ase_calculate_timer_add
    - route_unlock_node
    - zlog_info
    - vty_out
    - route_table_finish
    - ospf_vl_unapprove
    - monotime
    - ip_masklen
    - ospf_spf_dump
    - route_next
    - ospf_vl_shut_unapproved
    - monotime_since
    - ospf_canonical_nexthops_free
    - lsdb_clean_stat
    - ospf_spf_init
    - ospf_router_route_table_dump
    - ospf_prune_unreachable_networks
    - ospf_route_table_free
    - ospf_apiserver_notify_reachable
    - ospf_spf_cleanup
    - ospf_spf_next
    - CHECK_FLAG
    - ospf_route_delete
    - route_table_init
    - SET_FLAG
    - mtype_stats_alloc
    - else
    - ospf_ase_calculate_schedule
    - ospf_abr_nssa_check_status
    - ALL_LIST_ELEMENTS
    - ospf_prune_unreachable_routers
    - ospf_spf_calculate_area
    - ospf_intra_add_transit
    linkageType: ''
    returnType: void
    signature: void ospf_spf_dump(struct vertex *v, int i)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_spf.c:1847,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1856,1
    - Dst: ospf_vl_unapprove
      Src: /src/frr/ospfd/ospf_spf.c:1860,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1863,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:1864,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:1865,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_spf.c:1868,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:1869,1
    - Dst: ospf_spf_calculate_areas
      Src: /src/frr/ospfd/ospf_spf.c:1871,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1872,1
    - Dst: ospf_vl_shut_unapproved
      Src: /src/frr/ospfd/ospf_spf.c:1874,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1877,1
    - Dst: ospf_ia_routing
      Src: /src/frr/ospfd/ospf_spf.c:1878,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1879,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1882,1
    - Dst: ospf_prune_unreachable_networks
      Src: /src/frr/ospfd/ospf_spf.c:1883,1
    - Dst: ospf_prune_unreachable_routers
      Src: /src/frr/ospfd/ospf_spf.c:1885,1
    - Dst: ospf_prune_unreachable_routers
      Src: /src/frr/ospfd/ospf_spf.c:1886,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1887,1
    - Dst: ospf_ase_calculate_schedule
      Src: /src/frr/ospfd/ospf_spf.c:1896,1
    - Dst: ospf_ase_calculate_timer_add
      Src: /src/frr/ospfd/ospf_spf.c:1897,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1900,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_spf.c:1902,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1906,1
    - Dst: ospf_route_install
      Src: /src/frr/ospfd/ospf_spf.c:1907,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1908,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospf_spf.c:1912,1
    - Dst: ospf_apiserver_notify_reachable
      Src: /src/frr/ospfd/ospf_spf.c:1920,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospf_spf.c:1925,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_spf.c:1934,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_spf.c:1935,1
    - Dst: ospf_abr_nssa_check_status
      Src: /src/frr/ospfd/ospf_spf.c:1937,1
    - Dst: ospf_abr_task
      Src: /src/frr/ospfd/ospf_spf.c:1938,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1940,1
    - Dst: ospf_sr_update_task
      Src: /src/frr/ospfd/ospf_spf.c:1943,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:1946,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1951,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1953,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1955,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1957,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1959,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1961,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1963,1
    - Dst: strlcat
      Src: /src/frr/ospfd/ospf_spf.c:1965,1
    - Dst: strlen
      Src: /src/frr/ospfd/ospf_spf.c:1967,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1975,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1976,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1977,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1978,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1979,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_spf.c:1980,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1981,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_spf.c:1983,1
    - Dst: ospf_clear_spf_reason_flags
      Src: /src/frr/ospfd/ospf_spf.c:1986,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 84
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1987
      start: 1845
    functionDepth: 1
    functionLinenumber: 1845
    functionLinenumberEnd: 1987
    functionName: ospf_spf_calculate_schedule_worker
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - strlen
    - ospf_clear_spf_reason_flags
    - ospf_sr_update_task
    - ospf_abr_task
    - strlcat
    - ospf_spf_calculate_areas
    - ospf_vrf_id_to_name
    - IS_OSPF_ABR
    - ospf_rtrs_free
    - zlog_debug
    - ospf_route_install
    - EVENT_ARG
    - ospf_ia_routing
    - ospf_ase_calculate_timer_add
    - zlog_info
    - ospf_vl_unapprove
    - monotime
    - ospf_vl_shut_unapproved
    - monotime_since
    - ospf_prune_unreachable_networks
    - ospf_apiserver_notify_reachable
    - CHECK_FLAG
    - route_table_init
    - ospf_ase_calculate_schedule
    - ospf_abr_nssa_check_status
    - ospf_prune_unreachable_routers
    linkageType: ''
    returnType: void
    signature: void ospf_spf_calculate_schedule_worker(struct event *thread)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:1998,1
    - Dst: ospf_spf_set_reason
      Src: /src/frr/ospfd/ospf_spf.c:2004,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:2009,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_spf.c:2015,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:2044,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_spf.c:2047,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - ospf
    - reason
    argTypes:
    - struct ospf*
    - ospf_spf_reason_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 1993
    functionDepth: 1
    functionLinenumber: 1993
    functionLinenumberEnd: 2049
    functionName: ospf_spf_calculate_schedule
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 2
    functionsReached:
    - event_add_timer_msec
    - ospf_spf_set_reason
    - zlog_debug
    - monotime_since
    linkageType: ''
    returnType: void
    signature: void ospf_spf_calculate_schedule(struct ospf *ospf, ospf_spf_reason_t
      reason)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_spf.c:2055,1
    - Dst: ospf_route_delete
      Src: /src/frr/ospfd/ospf_spf.c:2059,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospf_spf.c:2060,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:2061,1
    - Dst: ospf_route_delete
      Src: /src/frr/ospfd/ospf_spf.c:2066,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospf_spf.c:2067,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_spf.c:2068,1
    - Dst: ospf_spf_calculate_schedule
      Src: /src/frr/ospfd/ospf_spf.c:2072,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 2052
    functionDepth: 2
    functionLinenumber: 2052
    functionLinenumberEnd: 2073
    functionName: ospf_restart_spf
    functionSourceFile: /src/frr/ospfd/ospf_spf.c
    functionUses: 0
    functionsReached:
    - ospf_route_table_free
    - ospf_spf_calculate_schedule
    - ospf_route_delete
    - route_table_init
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf_restart_spf(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: IS_DEL_ZERO_LEN_LSA
    functionSourceFile: /src/frr/ospfd/ospf_api.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DEL_ZERO_LEN_LSA(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_install
      Src: /src/frr/ospfd/ospf_bfd.c:42,1
    - Dst: bfd_sess_uninstall
      Src: /src/frr/ospfd/ospf_bfd.c:44,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - nbr
    - old_state
    - state
    argTypes:
    - struct ospf_neighbor*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: ospf_bfd_trigger_event
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_sess_install
    - bfd_sess_uninstall
    linkageType: ''
    returnType: void
    signature: void ospf_bfd_trigger_event(struct ospf_neighbor *nbr, int old_state,
      int state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_bfd.c:56,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_bfd.c:57,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_bfd.c:58,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_bfd.c:60,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_bfd.c:65,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_bfd.c:66,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_bfd.c:67,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 3
    argNames:
    - bsp
    - bss
    - arg
    argTypes:
    - struct bfd_session_params*
    - struct bfd_session_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 68
    functionName: ospf_bfd_session_change
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - OSPF_NSM_EVENT_SCHEDULE
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void ospf_bfd_session_change(struct bfd_session_params *bsp,\n\t\t\t\t
      \   const struct bfd_session_status *bss,\n\t\t\t\t    void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_bfd.c:73,1
    - Dst: bfd_sess_free
      Src: /src/frr/ospfd/ospf_bfd.c:77,1
    - Dst: bfd_sess_new
      Src: /src/frr/ospfd/ospf_bfd.c:83,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/ospfd/ospf_bfd.c:84,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/ospfd/ospf_bfd.c:85,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/ospfd/ospf_bfd.c:86,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/ospfd/ospf_bfd.c:90,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/ospfd/ospf_bfd.c:93,1
    - Dst: bfd_sess_install
      Src: /src/frr/ospfd/ospf_bfd.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 100
    functionName: ospf_neighbor_bfd_apply
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_sess_set_profile
    - bfd_sess_set_vrf
    - bfd_sess_new
    - bfd_sess_install
    - bfd_sess_set_ipv4_addrs
    - IF_DEF_PARAMS
    - bfd_sess_set_timers
    - bfd_sess_set_interface
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: void ospf_neighbor_bfd_apply(struct ospf_neighbor *nbr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_bfd.c:111,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_bfd.c:111,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_bfd.c:111,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_bfd.c:116,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_bfd.c:116,1
    - Dst: ospf_neighbor_bfd_apply
      Src: /src/frr/ospfd/ospf_bfd.c:120,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 123
    functionName: ospf_interface_bfd_apply
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - route_top
    - ospf_neighbor_bfd_apply
    - route_next
    - IF_OIFS
    linkageType: ''
    returnType: void
    signature: void ospf_interface_bfd_apply(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_bfd.c:127,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_bfd.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: ospf_interface_enable_bfd
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - IF_DEF_PARAMS
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void ospf_interface_enable_bfd(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_bfd.c:142,1
    - Dst: ospf_interface_bfd_apply
      Src: /src/frr/ospfd/ospf_bfd.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - oip
    argTypes:
    - struct interface*
    - struct ospf_if_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: ospf_interface_disable_bfd
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - ospf_interface_bfd_apply
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void ospf_interface_disable_bfd(struct interface *ifp,\n\t\t\t\tstruct
      ospf_if_params *oip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_bfd.c:156,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_bfd.c:161,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_bfd.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - params
    argTypes:
    - struct vty*
    - struct ospf_if_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 166
    functionName: ospf_bfd_write_config
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void ospf_bfd_write_config(struct vty *vty, const struct ospf_if_params
      *params\n\t\t\t   __attribute__((unused)))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_bfd.c:171,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_bfd.c:179,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_bfd.c:180,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_bfd.c:182,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_bfd.c:184,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_bfd.c:186,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_bfd.c:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - ifp
    - json
    argTypes:
    - struct vty*
    - struct interface*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 192
    functionName: ospf_interface_bfd_show
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - IF_DEF_PARAMS
    - json_object_int_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void ospf_interface_bfd_show(struct vty *vty, const struct interface
      *ifp,\n\t\t\t     struct json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_init
      Src: /src/frr/ospfd/ospf_bfd.c:315,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_bfd.c:318,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_bfd.c:319,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_bfd.c:320,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_bfd.c:321,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_bfd.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 323
    functionName: ospf_bfd_init
    functionSourceFile: /src/frr/ospfd/ospf_bfd.c
    functionUses: 0
    functionsReached:
    - install_element
    - bfd_protocol_integration_init
    linkageType: ''
    returnType: void
    signature: void ospf_bfd_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: ROUTEMAP_METRIC
    functionSourceFile: /src/frr/ospfd/ospf_asbr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTEMAP_METRIC(E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: ROUTEMAP_METRIC_TYPE
    functionSourceFile: /src/frr/ospfd/ospf_asbr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTEMAP_METRIC_TYPE(E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - aggr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: OSPF_EXTERNAL_RT_COUNT
    functionSourceFile: /src/frr/ospfd/ospf_asbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_EXTERNAL_RT_COUNT(aggr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 17
    functionName: IS_OPAQUE_LSA
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OPAQUE_LSA(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: GET_OPAQUE_TYPE
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_OPAQUE_TYPE(lsid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsid
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: GET_OPAQUE_ID
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_OPAQUE_ID(lsid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: SET_OPAQUE_LSID
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_OPAQUE_LSID(type, id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: OPAQUE_TYPE_RANGE_UNASSIGNED
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPAQUE_TYPE_RANGE_UNASSIGNED(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: OPAQUE_TYPE_RANGE_RESERVED
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPAQUE_TYPE_RANGE_RESERVED(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsahdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: VALID_OPAQUE_INFO_LEN
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALID_OPAQUE_INFO_LEN(lsahdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: TLV_BODY_SIZE
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_BODY_SIZE(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: TLV_SIZE
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_SIZE(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsah
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: TLV_HDR_TOP
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_HDR_TOP(lsah)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: TLV_HDR_NEXT
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_HDR_NEXT(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: TLV_HDR_SUBTLV
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_HDR_SUBTLV(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: TLV_DATA
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_DATA(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: TLV_TYPE
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_TYPE(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: TLV_LEN
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_LEN(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: TLV_HDR
    functionSourceFile: /src/frr/ospfd/ospf_opaque.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_HDR(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_lsdb.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 27
    functionName: ospf_lsdb_new
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct ospf_lsdb
    signature: struct ospf_lsdb *ospf_lsdb_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_lsdb.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 35
    functionName: ospf_lsdb_init
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached:
    - route_table_init
    linkageType: ''
    returnType: void
    signature: void ospf_lsdb_init(struct ospf_lsdb *lsdb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_cleanup
      Src: /src/frr/ospfd/ospf_lsdb.c:39,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_lsdb.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: ospf_lsdb_free
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached:
    - ospf_lsdb_cleanup
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_lsdb_free(struct ospf_lsdb *lsdb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsdb.c:46,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsdb.c:47,1
    - Dst: ospf_lsdb_delete_all
      Src: /src/frr/ospfd/ospf_lsdb.c:49,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_lsdb.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf_lsdb*
    assertStmts:
    - condition: (lsdb)
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/frr/ospfd/ospf_lsdb.c
    - condition: (lsdb->total == 0)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/frr/ospfd/ospf_lsdb.c
    constantsTouched: []
    func_position:
      end: 53
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 53
    functionName: ospf_lsdb_cleanup
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 1
    functionsReached:
    - ospf_lsdb_delete_all
    - route_table_finish
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_lsdb_cleanup(struct ospf_lsdb *lsdb)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - lp
    - lsa
    argTypes:
    - struct prefix_ls*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: ls_prefix_set
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ls_prefix_set(struct prefix_ls *lp, struct ospf_lsa *lsa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsdb.c:73,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsdb.c:75,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsdb.c:78,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsdb.c:82,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsdb.c:84,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsdb.c:96,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_lsdb.c:101,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 2
    argNames:
    - lsdb
    - rn
    argTypes:
    - struct ospf_lsdb*
    - struct route_node*
    assertStmts:
    - condition: (rn->table == lsdb->type[lsa->data->type].db)
      pos:
        line_end: 72
        line_start: 72
        source_file: /src/frr/ospfd/ospf_lsdb.c
    constantsTouched: []
    func_position:
      end: 103
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 103
    functionName: ospf_lsdb_delete_entry
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - CHECK_FLAG
    - ospf_lsa_unlock
    - ntohs
    - IS_LSA_SELF
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf_lsdb_delete_entry(struct ospf_lsdb *lsdb,\n\t\t\t\t   struct
      route_node *rn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ls_prefix_set
      Src: /src/frr/ospfd/ospf_lsdb.c:113,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_lsdb.c:114,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsdb.c:118,1
    - Dst: ospf_lsdb_delete_entry
      Src: /src/frr/ospfd/ospf_lsdb.c:124,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsdb.c:126,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_lsdb.c:132,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsdb.c:134,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_lsdb.c:141,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_lsdb.c:142,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - lsdb
    - lsa
    argTypes:
    - struct ospf_lsdb*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 106
    functionDepth: 4
    functionLinenumber: 106
    functionLinenumberEnd: 143
    functionName: ospf_lsdb_add
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - ls_prefix_set
    - CHECK_FLAG
    - ospf_lsa_lock
    - ntohs
    - route_node_get
    - ospf_lsdb_delete_entry
    - IS_LSA_SELF
    linkageType: ''
    returnType: void
    signature: void ospf_lsdb_add(struct ospf_lsdb *lsdb, struct ospf_lsa *lsa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_lsdb.c:154,1
    - Dst: ls_prefix_set
      Src: /src/frr/ospfd/ospf_lsdb.c:156,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_lsdb.c:157,1
    - Dst: ospf_lsdb_delete_entry
      Src: /src/frr/ospfd/ospf_lsdb.c:159,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsdb.c:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - lsdb
    - lsa
    argTypes:
    - struct ospf_lsdb*
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa->data->type < OSPF_MAX_LSA)
      pos:
        line_end: 153
        line_start: 153
        source_file: /src/frr/ospfd/ospf_lsdb.c
    constantsTouched: []
    func_position:
      end: 162
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 162
    functionName: ospf_lsdb_delete
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - ls_prefix_set
    - ospf_lsdb_delete_entry
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_lsdb_delete(struct ospf_lsdb *lsdb, struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_lsdb.c:172,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsdb.c:172,1
    - Dst: ospf_lsdb_delete_entry
      Src: /src/frr/ospfd/ospf_lsdb.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 164
    functionDepth: 4
    functionLinenumber: 164
    functionLinenumberEnd: 176
    functionName: ospf_lsdb_delete_all
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 1
    functionsReached:
    - route_top
    - ospf_lsdb_delete_entry
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_lsdb_delete_all(struct ospf_lsdb *lsdb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_prefix_set
      Src: /src/frr/ospfd/ospf_lsdb.c:186,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_lsdb.c:187,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsdb.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - lsdb
    - lsa
    argTypes:
    - struct ospf_lsdb*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 194
    functionName: ospf_lsdb_lookup
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - ls_prefix_set
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_lsdb_lookup(struct ospf_lsdb *lsdb, struct ospf_lsa
      *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_lsdb.c:207,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_lsdb.c:213,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsdb.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - lsdb
    - type
    - id
    - adv_router
    argTypes:
    - struct ospf_lsdb*
    - uint8_t
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 220
    functionName: ospf_lsdb_lookup_by_id
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 6
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - memset
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_lsdb_lookup_by_id(struct ospf_lsdb *lsdb, uint8_t
      type,\n\t\t\t\t\tstruct in_addr id,\n\t\t\t\t\tstruct in_addr adv_router)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_lsdb.c:234,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_lsdb.c:241,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_lsdb.c:243,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsdb.c:246,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_lsdb.c:249,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_lsdb.c:255,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 5
    argNames:
    - lsdb
    - type
    - id
    - adv_router
    - first
    argTypes:
    - struct ospf_lsdb*
    - uint8_t
    - struct in_addr
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 259
    functionName: ospf_lsdb_lookup_by_id_next
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - memset
    - route_top
    - route_next
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_lsdb_lookup_by_id_next(struct ospf_lsdb *lsdb,\n\t\t\t\t\t
      \    uint8_t type, struct in_addr id,\n\t\t\t\t\t     struct in_addr adv_router,\n\t\t\t\t\t
      \    int first)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: ospf_lsdb_count_all
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ospf_lsdb_count_all(struct ospf_lsdb *lsdb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lsdb
    - type
    argTypes:
    - struct ospf_lsdb*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: ospf_lsdb_count
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ospf_lsdb_count(struct ospf_lsdb *lsdb, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lsdb
    - type
    argTypes:
    - struct ospf_lsdb*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: ospf_lsdb_count_self
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ospf_lsdb_count_self(struct ospf_lsdb *lsdb, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lsdb
    - type
    argTypes:
    - struct ospf_lsdb*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 279
    functionName: ospf_lsdb_checksum
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf_lsdb_checksum(struct ospf_lsdb *lsdb, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: ospf_lsdb_isempty
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ospf_lsdb_isempty(struct ospf_lsdb *lsdb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump_api.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - options
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 104
    functionName: ospf_options_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump_api.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf_options_dump(uint8_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump_api.c:108,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:110,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:111,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump_api.c:111,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:112,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_dump_api.c:113,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:114,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:116,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:117,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:118,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_dump_api.c:119,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:120,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump_api.c:120,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump_api.c:121,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump_api.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - lsah
    argTypes:
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 122
    functionName: ospf_lsa_header_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump_api.c
    functionUses: 10
    functionsReached:
    - ospf_options_dump
    - ntohl
    - ntohs
    - zlog_debug
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_header_dump(struct lsa_header *lsah)
  - 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: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: CONF_DEBUG_PACKET_ON
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_PACKET_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: CONF_DEBUG_PACKET_OFF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_PACKET_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: TERM_DEBUG_PACKET_ON
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_PACKET_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: TERM_DEBUG_PACKET_OFF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_PACKET_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: DEBUG_PACKET_ON
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_PACKET_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: DEBUG_PACKET_OFF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_PACKET_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: CONF_DEBUG_ON
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: CONF_DEBUG_OFF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: TERM_DEBUG_ON
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: TERM_DEBUG_OFF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: DEBUG_ON
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: DEBUG_OFF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: IS_DEBUG_OSPF_PACKET
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DEBUG_OSPF_PACKET(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: IS_DEBUG_OSPF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DEBUG_OSPF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: IS_CONF_DEBUG_OSPF_PACKET
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_CONF_DEBUG_OSPF_PACKET(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: IS_CONF_DEBUG_OSPF
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_CONF_DEBUG_OSPF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: AREA_NAME
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AREA_NAME(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: IF_NAME
    functionSourceFile: /src/frr/ospfd/ospf_dump.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_NAME(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: DEFAULT_ROUTE_TYPE
    functionSourceFile: /src/frr/ospfd/ospf_zebra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFAULT_ROUTE_TYPE(T)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ospfd/ospf_network.c:36,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_network.c:37,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:40,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:44,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_network.c:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - top
    - p
    - ifindex
    argTypes:
    - struct ospf*
    - struct prefix*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 53
    functionName: ospf_if_add_allspfrouters
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - flog_err
    - safe_strerror
    - zlog_debug
    - htonl
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int ospf_if_add_allspfrouters(struct ospf *top, struct prefix *p,\n\t\t\t
      \     ifindex_t ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ospfd/ospf_network.c:60,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_network.c:61,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:64,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:67,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_network.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - top
    - p
    - ifindex
    argTypes:
    - struct ospf*
    - struct prefix*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: ospf_if_drop_allspfrouters
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - flog_err
    - safe_strerror
    - zlog_debug
    - htonl
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int ospf_if_drop_allspfrouters(struct ospf *top, struct prefix *p,\n\t\t\t
      \      ifindex_t ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ospfd/ospf_network.c:84,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_network.c:85,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:88,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:92,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_network.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - top
    - p
    - ifindex
    argTypes:
    - struct ospf*
    - struct prefix*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 100
    functionName: ospf_if_add_alldrouters
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - flog_err
    - safe_strerror
    - zlog_debug
    - htonl
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int ospf_if_add_alldrouters(struct ospf *top, struct prefix *p,\n\t\t\t
      \   ifindex_t ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ospfd/ospf_network.c:107,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_network.c:108,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:111,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:114,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_network.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - top
    - p
    - ifindex
    argTypes:
    - struct ospf*
    - struct prefix*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 121
    functionName: ospf_if_drop_alldrouters
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - flog_err
    - safe_strerror
    - zlog_debug
    - htonl
    - setsockopt_ipv4_multicast
    linkageType: ''
    returnType: int
    signature: "int ospf_if_drop_alldrouters(struct ospf *top, struct prefix *p,\n\t\t\t
      \    ifindex_t ifindex)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast_loop
      Src: /src/frr/ospfd/ospf_network.c:129,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:131,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:133,1
    - Dst: setsockopt
      Src: /src/frr/ospfd/ospf_network.c:138,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:140,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:142,1
    - Dst: setsockopt_ipv4_multicast_if
      Src: /src/frr/ospfd/ospf_network.c:147,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:149,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - fd
    - p
    - ifindex
    argTypes:
    - int
    - struct prefix*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 156
    functionName: ospf_if_ipmulticast
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - setsockopt_ipv4_multicast_if
    - setsockopt_ipv4_multicast_loop
    - flog_err
    - safe_strerror
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int ospf_if_ipmulticast(int fd, struct prefix *p, ifindex_t ifindex)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/ospfd/ospf_network.c:173,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:176,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:177,1
    - Dst: setsockopt
      Src: /src/frr/ospfd/ospf_network.c:183,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:186,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:188,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/ospfd/ospf_network.c:194,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:197,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:199,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:204,1
    - Dst: setsockopt_ifindex
      Src: /src/frr/ospfd/ospf_network.c:207,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:210,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - vrf_id
    - name
    - pfd
    argTypes:
    - vrf_id_t
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 218
    functionName: sock_init_common
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - vrf_socket
    - flog_err
    - setsockopt_ipv4_tos
    - safe_strerror
    - setsockopt
    - setsockopt_ifindex
    linkageType: ''
    returnType: int
    signature: int sock_init_common(vrf_id_t vrf_id, const char *name, int *pfd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/ospfd/ospf_network.c:173,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:176,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:177,1
    - Dst: setsockopt
      Src: /src/frr/ospfd/ospf_network.c:183,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:186,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:188,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/ospfd/ospf_network.c:194,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:197,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_network.c:199,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:204,1
    - Dst: setsockopt_ifindex
      Src: /src/frr/ospfd/ospf_network.c:207,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_network.c:210,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 213
    functionName: (&ospfd_privs)
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - vrf_socket
    - flog_err
    - setsockopt_ipv4_tos
    - safe_strerror
    - setsockopt
    - setsockopt_ifindex
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ospfd_privs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/ospfd/ospf_network.c:230,1
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/ospfd/ospf_network.c:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - ospf
    - sock
    - type
    argTypes:
    - struct ospf*
    - int
    - enum ospf_sock_type_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 237
    functionName: ospf_sock_bufsize_update
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - setsockopt_so_sendbuf
    - setsockopt_so_recvbuf
    linkageType: ''
    returnType: void
    signature: "void ospf_sock_bufsize_update(const struct ospf *ospf, int sock,\n\t\t\t
      \     enum ospf_sock_type_e type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sock_init_common
      Src: /src/frr/ospfd/ospf_network.c:250,1
    - Dst: ospf_sock_bufsize_update
      Src: /src/frr/ospfd/ospf_network.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 256
    functionName: ospf_sock_init
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - sock_init_common
    - ospf_sock_bufsize_update
    linkageType: ''
    returnType: int
    signature: int ospf_sock_init(struct ospf *ospf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IF_OSPF_IF_INFO
      Src: /src/frr/ospfd/ospf_network.c:269,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_network.c:276,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_network.c:276,1
    - Dst: sock_init_common
      Src: /src/frr/ospfd/ospf_network.c:283,1
    - Dst: ospf_sock_bufsize_update
      Src: /src/frr/ospfd/ospf_network.c:286,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_network.c:289,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 293
    functionName: ospf_ifp_sock_init
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - IF_OSPF_IF_INFO
    - sock_init_common
    - route_top
    - ospf_sock_bufsize_update
    - IF_OIFS
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int ospf_ifp_sock_init(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IF_OSPF_IF_INFO
      Src: /src/frr/ospfd/ospf_network.c:302,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_network.c:308,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_network.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 316
    functionName: ospf_ifp_sock_close
    functionSourceFile: /src/frr/ospfd/ospf_network.c
    functionUses: 0
    functionsReached:
    - IF_OSPF_IF_INFO
    - zlog_debug
    - close
    linkageType: ''
    returnType: int
    signature: int ospf_ifp_sock_close(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_abr.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: ospf_area_range_new
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ospf_area_range
    signature: struct ospf_area_range *ospf_area_range_new(struct prefix_ipv4 *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_abr.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - range
    argTypes:
    - struct ospf_area_range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: ospf_area_range_free
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_area_range_free(struct ospf_area_range *range)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_abr.c:66,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_abr.c:68,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_abr.c:70,1
    - Dst: ospf_area_range_free
      Src: /src/frr/ospfd/ospf_abr.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - area
    - ranges
    - range
    argTypes:
    - struct ospf_area*
    - struct route_table*
    - struct ospf_area_range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 75
    functionName: ospf_area_range_add
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - apply_mask_ipv4
    - route_node_get
    - ospf_area_range_free
    linkageType: ''
    returnType: void
    signature: "void ospf_area_range_add(struct ospf_area *area,\n\t\t\t\tstruct route_table
      *ranges,\n\t\t\t\tstruct ospf_area_range *range)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:81,1
    - Dst: ospf_area_range_active
      Src: /src/frr/ospfd/ospf_abr.c:83,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:84,1
    - Dst: ospf_delete_discard_route
      Src: /src/frr/ospfd/ospf_abr.c:85,1
    - Dst: ospf_area_range_free
      Src: /src/frr/ospfd/ospf_abr.c:88,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_abr.c:90,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_abr.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - area
    - rn
    argTypes:
    - struct ospf_area*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: ospf_area_range_delete
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - ospf_area_range_active
    - CHECK_FLAG
    - ospf_area_range_free
    - ospf_delete_discard_route
    linkageType: ''
    returnType: void
    signature: "void ospf_area_range_delete(struct ospf_area *area,\n\t\t\t\t   struct
      route_node *rn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_abr.c:100,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_abr.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - area
    - ranges
    - p
    argTypes:
    - struct ospf_area*
    - struct route_table*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 106
    functionName: ospf_area_range_lookup
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    linkageType: ''
    returnType: struct ospf_area_range
    signature: "struct ospf_area_range *ospf_area_range_lookup(struct ospf_area *area,\n\t\t\t\t\t
      \      struct route_table *ranges,\n\t\t\t\t\t       struct prefix_ipv4 *p)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_abr.c:119,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:122,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_abr.c:124,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:125,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:128,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_abr.c:135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - area
    - range_net
    - first
    argTypes:
    - struct ospf_area*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 139
    functionName: ospf_area_range_lookup_next
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - apply_mask_ipv4
    - route_top
    - route_next
    - route_node_get
    linkageType: ''
    returnType: struct ospf_area_range
    signature: "struct ospf_area_range *ospf_area_range_lookup_next(struct ospf_area
      *area,\n\t\t\t\t\t\t    struct in_addr *range_net,\n\t\t\t\t\t\t    int first)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_match
      Src: /src/frr/ospfd/ospf_abr.c:147,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_abr.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - area
    - ranges
    - p
    argTypes:
    - struct ospf_area*
    - struct route_table*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 153
    functionName: ospf_area_range_match
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_match
    linkageType: ''
    returnType: struct ospf_area_range
    signature: "struct ospf_area_range *ospf_area_range_match(struct ospf_area *area,\n\t\t\t\t\t\t
      \    struct route_table *ranges,\n\t\t\t\t\t\t     struct prefix_ipv4 *p)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:162,1
    - Dst: ospf_area_range_match
      Src: /src/frr/ospfd/ospf_abr.c:163,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:307,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:307,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_abr.c:313,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_abr.c:351,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:357,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_abr.c:362,1
    - Dst: ospf_abr_nssa_check_status
      Src: /src/frr/ospfd/ospf_abr.c:371,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_abr.c:382,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:383,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:386,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_abr.c:387,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:388,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_abr.c:396,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:397,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_abr.c:408,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:409,1
    - Dst: ospf_abr_nssa_am_elected
      Src: /src/frr/ospfd/ospf_abr.c:417,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_abr.c:420,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:421,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_abr.c:427,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:428,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_abr.c:443,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_abr.c:447,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 43
    argCount: 2
    argNames:
    - ospf
    - p
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 451
    functionName: ospf_area_range_match_any
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - IS_DEBUG_OSPF
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - IS_OSPF_ABR
    - ospf_abr_nssa_am_elected
    - route_next
    - ospf_area_range_match
    - zlog_debug
    - ospf_abr_nssa_check_status
    - ospf_asbr_status_update
    - IPV4_ADDR_CMP
    linkageType: ''
    returnType: struct ospf_area_range
    signature: "struct ospf_area_range *ospf_area_range_match_any(struct ospf *ospf,\n\t\t\t\t\t\t
      \ struct prefix_ipv4 *p)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:465,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_abr.c:467,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_abr.c:468,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:486,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:490,1
    - Dst: OSPF_ABR_STAND
      Src: /src/frr/ospfd/ospf_abr.c:496,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:498,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:500,1
    - Dst: OSPF_ABR_IBM
      Src: /src/frr/ospfd/ospf_abr.c:503,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:505,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:507,1
    - Dst: OSPF_ABR_CISCO
      Src: /src/frr/ospfd/ospf_abr.c:510,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:512,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:514,1
    - Dst: ospf_spf_calculate_schedule
      Src: /src/frr/ospfd/ospf_abr.c:521,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:523,1
    - Dst: ospf_router_lsa_update
      Src: /src/frr/ospfd/ospf_abr.c:526,1
    - Dst: ospf_abr_update_aggregate
      Src: /src/frr/ospfd/ospf_abr.c:530,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:534,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:536,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:540,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:544,1
    - Dst: ospf_area_range_active
      Src: /src/frr/ospfd/ospf_abr.c:549,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:551,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:558,1
    - Dst: set_metric
      Src: /src/frr/ospfd/ospf_abr.c:567,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_abr.c:571,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_abr.c:575,1
    - Dst: ospf_abr_translate_nssa
      Src: /src/frr/ospfd/ospf_abr.c:579,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:599,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:605,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_abr.c:610,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:614,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_abr.c:621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:623,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:626,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:628,1
    - Dst: ospf_area_range_match
      Src: /src/frr/ospfd/ospf_abr.c:637,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:640,1
    - Dst: ospf_abr_update_aggregate
      Src: /src/frr/ospfd/ospf_abr.c:644,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_abr.c:644,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:649,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:651,1
    - Dst: ospf_translated_nssa_refresh::ospf_translated_nssa_refresh
      Src: /src/frr/ospfd/ospf_abr.c:656,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:659,1
    - Dst: ospf_translated_nssa_originate
      Src: /src/frr/ospfd/ospf_abr.c:668,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:671,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 454
    functionDepth: 8
    functionLinenumber: 454
    functionLinenumberEnd: 679
    functionName: ospf_check_abr_status
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_translated_nssa_originate
    - OSPF_ABR_IBM
    - htonl
    - ospf_external_info_find_lsa
    - ospf_abr_update_aggregate
    - ospf_translated_nssa_refresh::ospf_translated_nssa_refresh
    - ospf_spf_calculate_schedule
    - GET_METRIC
    - OSPF_ABR_CISCO
    - zlog_debug
    - OSPF_ABR_STAND
    - ospf_router_lsa_update
    - ospf_area_range_active
    - listcount
    - ip_masklen
    - UNSET_FLAG
    - set_metric
    - memcpy
    - CHECK_FLAG
    - ospf_abr_translate_nssa
    - ospf_area_range_match
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ospf_check_abr_status(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/ospfd/ospf_abr.c:687,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_abr.c:692,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_abr.c:694,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:697,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ospf
    - p
    - cost
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 681
    functionDepth: 1
    functionLinenumber: 681
    functionLinenumberEnd: 699
    functionName: ospf_abr_translate_nssa_range
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_external_info_find_lsa
    - ospf_external_lsa_refresh
    - SET_FLAG
    - ospf_external_lsa_originate
    - prefix_copy
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_translate_nssa_range(struct ospf *ospf,\n\t\t\t\t\t
      \ struct prefix_ipv4 *p, uint32_t cost)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:709,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:711,1
    - Dst: ospf_lsa_lookup_by_prefix
      Src: /src/frr/ospfd/ospf_abr.c:716,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:720,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:725,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_abr.c:726,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_abr.c:728,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:732,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:734,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:738,1
    - Dst: set_metric
      Src: /src/frr/ospfd/ospf_abr.c:739,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_abr.c:740,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_abr.c:743,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:750,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:755,1
    - Dst: ospf_summary_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:756,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_abr.c:760,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:767,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:769,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:774,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 3
    argNames:
    - p
    - cost
    - area
    argTypes:
    - struct prefix_ipv4*
    - uint32_t
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 701
    functionDepth: 7
    functionLinenumber: 701
    functionLinenumberEnd: 775
    functionName: ospf_abr_announce_network_to_area
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - GET_METRIC
    - ospf_summary_lsa_originate
    - ospf_lsa_lookup_by_prefix
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    - set_metric
    - ospf_lsa_refresh
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_announce_network_to_area(struct prefix_ipv4 *p, uint32_t
      cost,\n\t\t\t\t       struct ospf_area *area)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:784,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:785,1
    - Dst: ospf_abr_should_accept
      Src: /src/frr/ospfd/ospf_abr.c:792,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospf_abr.c:794,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:795,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:796,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_abr.c:797,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospf_abr.c:797,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:799,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:800,1
    - Dst: access_list_apply
      Src: /src/frr/ospfd/ospf_abr.c:800,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:800,1
    - Dst: ospf_abr_plist_in_check
      Src: /src/frr/ospfd/ospf_abr.c:808,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospfd/ospf_abr.c:812,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospfd/ospf_abr.c:813,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospfd/ospf_abr.c:814,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ospfd/ospf_abr.c:814,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospfd/ospf_abr.c:815,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospfd/ospf_abr.c:816,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:817,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospfd/ospf_abr.c:817,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospfd/ospf_abr.c:817,1
    - Dst: ospf_abr_plist_out_check
      Src: /src/frr/ospfd/ospf_abr.c:824,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospfd/ospf_abr.c:828,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospfd/ospf_abr.c:829,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospfd/ospf_abr.c:830,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ospfd/ospf_abr.c:830,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospfd/ospf_abr.c:831,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospfd/ospf_abr.c:832,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:833,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospfd/ospf_abr.c:833,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospfd/ospf_abr.c:833,1
    - Dst: ospf_abr_announce_network
      Src: /src/frr/ospfd/ospf_abr.c:840,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:848,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_abr.c:850,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_abr.c:851,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:853,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:855,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_abr.c:858,1
    - Dst: ospf_abr_nexthops_belong_to_area
      Src: /src/frr/ospfd/ospf_abr.c:861,1
    - Dst: ospf_abr_should_accept
      Src: /src/frr/ospfd/ospf_abr.c:864,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:866,1
    - Dst: ospf_abr_plist_in_check
      Src: /src/frr/ospfd/ospf_abr.c:872,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:874,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:883,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:891,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:895,1
    - Dst: ospf_abr_announce_network_to_area
      Src: /src/frr/ospfd/ospf_abr.c:896,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:902,1
    - Dst: ospf_area_range_match
      Src: /src/frr/ospfd/ospf_abr.c:905,1
    - Dst: ospf_area_is_transit
      Src: /src/frr/ospfd/ospf_abr.c:907,1
    - Dst: ospf_abr_update_aggregate
      Src: /src/frr/ospfd/ospf_abr.c:908,1
    - Dst: ospf_abr_announce_network_to_area
      Src: /src/frr/ospfd/ospf_abr.c:911,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 40
    argCount: 2
    argNames:
    - or
    - area
    argTypes:
    - struct ospf_route*
    - struct ospf_area*
    assertStmts:
    - condition: (or_area)
      pos:
        line_end: 850
        line_start: 850
        source_file: /src/frr/ospfd/ospf_abr.c
    constantsTouched: []
    func_position:
      end: 915
      start: 777
    functionDepth: 8
    functionLinenumber: 777
    functionLinenumberEnd: 915
    functionName: ospf_abr_nexthops_belong_to_area
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 1
    functionsReached:
    - IMPORT_NAME
    - IPV4_ADDR_SAME
    - access_list_apply
    - ospf_abr_announce_network_to_area
    - PREFIX_NAME_IN
    - OSPF_IS_AREA_BACKBONE
    - ospf_abr_should_accept
    - prefix_list_lookup
    - ospf_abr_update_aggregate
    - PREFIX_LIST_OUT
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - PREFIX_LIST_IN
    - if
    - ospf_abr_plist_in_check
    - assert
    - IMPORT_LIST
    - ospf_abr_nexthops_belong_to_area
    - ospf_abr_announce_network
    - prefix_list_apply
    - PREFIX_NAME_OUT
    - ospf_area_lookup_by_area_id
    - ospf_area_is_transit
    - ospf_abr_plist_out_check
    - ospf_area_range_match
    - access_list_lookup
    linkageType: ''
    returnType: int
    signature: "int ospf_abr_nexthops_belong_to_area(struct ospf_route * or,\n\t\t\t\t\t
      \   struct ospf_area *area)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_abr.c:922,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_abr.c:924,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospf_abr.c:926,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:927,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:928,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_abr.c:929,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospf_abr.c:929,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:931,1
    - Dst: access_list_apply
      Src: /src/frr/ospfd/ospf_abr.c:932,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospf_abr.c:932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ospf
    - p
    - or
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    - struct ospf_route*
    assertStmts:
    - condition: (area)
      pos:
        line_end: 923
        line_start: 923
        source_file: /src/frr/ospfd/ospf_abr.c
    constantsTouched: []
    func_position:
      end: 938
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 938
    functionName: ospf_abr_should_announce
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_area_lookup_by_area_id
    - EXPORT_NAME
    - access_list_apply
    - EXPORT_LIST
    - access_list_lookup
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_abr_should_announce(struct ospf *ospf, struct prefix_ipv4
      *p,\n\t\t\t\t    struct ospf_route * or)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:954,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:956,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:964,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_abr.c:967,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospf_abr.c:967,1
    - Dst: ospf_abr_translate_nssa
      Src: /src/frr/ospfd/ospf_abr.c:968,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:972,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 973
    functionName: ospf_abr_process_nssa_translates
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - NSSA_LSDB
    - ospf_abr_translate_nssa
    - zlog_debug
    - LSDB_LOOP
    linkageType: ''
    returnType: void
    signature: void ospf_abr_process_nssa_translates(struct ospf *ospf)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:983,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:985,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:985,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_abr.c:989,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:992,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:999,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1003,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1011,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1019,1
    - Dst: ospf_abr_should_announce
      Src: /src/frr/ospfd/ospf_abr.c:1027,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1031,1
    - Dst: ospf_abr_plist_out_check
      Src: /src/frr/ospfd/ospf_abr.c:1038,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1042,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1048,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1050,1
    - Dst: ospf_act_bb_connection
      Src: /src/frr/ospfd/ospf_abr.c:1060,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1063,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1070,1
    - Dst: ospf_abr_announce_network
      Src: /src/frr/ospfd/ospf_abr.c:1071,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1076,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 55
    argCount: 2
    argNames:
    - ospf
    - rt
    argTypes:
    - struct ospf*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 975
    functionDepth: 2
    functionLinenumber: 975
    functionLinenumberEnd: 1077
    functionName: ospf_abr_process_network_rt
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_area_lookup_by_area_id
    - OSPF_IS_AREA_ID_BACKBONE
    - ospf_act_bb_connection
    - route_top
    - ospf_abr_announce_network
    - route_next
    - ospf_abr_plist_out_check
    - zlog_debug
    - ospf_abr_should_announce
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_process_network_rt(struct ospf *ospf,\n\t\t\t\t\tstruct
      route_table *rt)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1086,1
    - Dst: ospf_lsa_lookup_by_prefix
      Src: /src/frr/ospfd/ospf_abr.c:1088,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1092,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1096,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_abr.c:1097,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_abr.c:1100,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1103,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1104,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1107,1
    - Dst: set_metric
      Src: /src/frr/ospfd/ospf_abr.c:1110,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_abr.c:1111,1
    - Dst: ospf_summary_asbr_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:1113,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_abr.c:1115,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1123,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1131,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1136,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 3
    argNames:
    - p
    - cost
    - area
    argTypes:
    - struct prefix_ipv4*
    - uint32_t
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1079
    functionDepth: 7
    functionLinenumber: 1079
    functionLinenumberEnd: 1137
    functionName: ospf_abr_announce_rtr_to_area
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - GET_METRIC
    - ospf_summary_asbr_lsa_originate
    - ospf_lsa_lookup_by_prefix
    - zlog_debug
    - SET_FLAG
    - set_metric
    - ospf_lsa_refresh
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_announce_rtr_to_area(struct prefix_ipv4 *p, uint32_t
      cost,\n\t\t\t\t\t  struct ospf_area *area)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1147,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1149,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1151,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_abr.c:1154,1
    - Dst: ospf_abr_nexthops_belong_to_area
      Src: /src/frr/ospfd/ospf_abr.c:1157,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1163,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1171,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1179,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1182,1
    - Dst: ospf_abr_announce_rtr_to_area
      Src: /src/frr/ospfd/ospf_abr.c:1183,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1189,1
    - Dst: ospf_abr_announce_rtr_to_area
      Src: /src/frr/ospfd/ospf_abr.c:1192,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1197,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 33
    argCount: 3
    argNames:
    - ospf
    - p
    - or
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    - struct ospf_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1140
    functionDepth: 9
    functionLinenumber: 1140
    functionLinenumberEnd: 1198
    functionName: ospf_abr_announce_rtr
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_abr_nexthops_belong_to_area
    - ospf_abr_announce_rtr_to_area
    - ALL_LIST_ELEMENTS_RO
    - IPV4_ADDR_SAME
    - zlog_debug
    - OSPF_IS_AREA_BACKBONE
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_announce_rtr(struct ospf *ospf, struct prefix_ipv4 *p,\n\t\t\t\t
      \ struct ospf_route * or)"
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1208,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:1210,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:1210,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1221,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_abr.c:1224,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_abr.c:1225,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1228,1
    - Dst: continue
      Src: /src/frr/ospfd/ospf_abr.c:1231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1235,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1237,1
    - Dst: ospf_find_asbr_route
      Src: /src/frr/ospfd/ospf_abr.c:1244,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1254,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1262,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1265,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1273,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1281,1
    - Dst: ospf_act_bb_connection
      Src: /src/frr/ospfd/ospf_abr.c:1281,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1284,1
    - Dst: ospf_abr_announce_rtr
      Src: /src/frr/ospfd/ospf_abr.c:1290,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1296,1
    - Dst: ospf_abr_unapprove_translates
      Src: /src/frr/ospfd/ospf_abr.c:1300,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1306,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_abr.c:1311,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_abr.c:1311,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1312,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1313,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1315,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1320,1
    - Dst: ospf_abr_unapprove_summaries
      Src: /src/frr/ospfd/ospf_abr.c:1323,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1331,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1333,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1335,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_abr.c:1337,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_abr.c:1337,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1338,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_abr.c:1338,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1340,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1343,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_abr.c:1346,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_abr.c:1346,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1347,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_abr.c:1347,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1349,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1352,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1357,1
    - Dst: ospf_abr_prepare_aggregates
      Src: /src/frr/ospfd/ospf_abr.c:1360,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1368,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1370,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:1378,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:1378,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1379,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1386,1
    - Dst: ospf_abr_announce_aggregates
      Src: /src/frr/ospfd/ospf_abr.c:1389,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1398,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1400,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1402,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:1405,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:1405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1407,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1410,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1424,1
    - Dst: ospf_area_range_active
      Src: /src/frr/ospfd/ospf_abr.c:1431,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1433,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1436,1
    - Dst: ospf_area_is_transit
      Src: /src/frr/ospfd/ospf_abr.c:1452,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1453,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1456,1
    - Dst: ospf_abr_announce_network_to_area
      Src: /src/frr/ospfd/ospf_abr.c:1461,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1471,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1482,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1484,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1489,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:1492,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:1493,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1505,1
    - Dst: ospf_area_range_active
      Src: /src/frr/ospfd/ospf_abr.c:1508,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1509,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1512,1
    - Dst: ospf_abr_translate_nssa_range
      Src: /src/frr/ospfd/ospf_abr.c:1520,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1527,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:1536,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1540,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1546,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1548,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1555,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1559,1
    - Dst: ospf_abr_announce_network_to_area
      Src: /src/frr/ospfd/ospf_abr.c:1561,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1565,1
    - Dst: ospf_check_fr_enabled_all
      Src: /src/frr/ospfd/ospf_abr.c:1583,1
    - Dst: ospf_summary_asbr_lsa_originate::ospf_summary_asbr_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:1600,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1603,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_abr.c:1619,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_abr.c:1619,1
    - Dst: ospf_check_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1620,1
    - Dst: OSPF_LOG_INFO
      Src: /src/frr/ospfd/ospf_abr.c:1623,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:1626,1
    - Dst: ospf_generate_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1633,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1650,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1663,1
    - Dst: ospf_summary_asbr_lsa_originate::ospf_summary_asbr_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:1676,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1679,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1700,1
    - Dst: OSPF_LOG_INFO
      Src: /src/frr/ospfd/ospf_abr.c:1702,1
    - Dst: ospf_schedule_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1706,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1723,1
    - Dst: ospf_check_area_fr_enabled
      Src: /src/frr/ospfd/ospf_abr.c:1724,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1749,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1750,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1753,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1758,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1760,1
    - Dst: ospf_abr_generate_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1769,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1772,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1772,1
    - Dst: ospf_abr_generate_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1784,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1787,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1795,1
    - Dst: ospf_check_fr_enabled_all
      Src: /src/frr/ospfd/ospf_abr.c:1795,1
    - Dst: ospf_flush_indication_lsas
      Src: /src/frr/ospfd/ospf_abr.c:1796,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1805,1
    - Dst: ospf_schedule_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1807,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1823,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_abr.c:1828,1
    - Dst: ospf_nssa_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:1848,1
    - Dst: ospf_nssa_lsa_refresh
      Src: /src/frr/ospfd/ospf_abr.c:1850,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1857,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1859,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_abr.c:1863,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1864,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1865,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1875,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_abr.c:1879,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1881,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:1883,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_abr.c:1884,1
    CyclomaticComplexity: 84
    EdgeCount: 84
    ICount: 172
    argCount: 2
    argNames:
    - ospf
    - rt
    argTypes:
    - struct ospf*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1200
    functionDepth: 10
    functionLinenumber: 1200
    functionLinenumberEnd: 1890
    functionName: ospf_abr_process_router_rt
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_act_bb_connection
    - ospf_abr_announce_aggregates
    - route_top
    - ospf_nssa_lsa_refresh
    - ospf_find_asbr_route
    - ospf_abr_announce_rtr
    - continue
    - EXTERNAL_LSDB
    - ospf_schedule_lsa_flush_area
    - ospf_ls_retransmit_delete_nbr_area
    - ospf_abr_announce_network_to_area
    - IS_LSA_SELF
    - OSPF_IS_AREA_BACKBONE
    - IS_OSPF_ASBR
    - SUMMARY_LSDB
    - memset
    - ALL_LIST_ELEMENTS_RO
    - ASBR_SUMMARY_LSDB
    - IS_OSPF_ABR
    - OSPF_LOG_DEBUG
    - zlog_debug
    - if
    - ospf_nssa_lsa_originate
    - OSPF_IS_AREA_ID_BACKBONE
    - OSPF_LOG_INFO
    - ospf_refresher_unregister_lsa
    - ospf_area_range_active
    - ospf_flush_indication_lsas
    - ospf_check_area_fr_enabled
    - ospf_abr_generate_indication_lsa
    - route_next
    - UNSET_FLAG
    - ospf_generate_indication_lsa
    - ospf_check_indication_lsa
    - ospf_lsdb_lookup_by_id
    - ospf_abr_translate_nssa_range
    - ospf_lsa_flush_area
    - ospf_area_lookup_by_area_id
    - ospf_summary_asbr_lsa_originate::ospf_summary_asbr_lsa_originate
    - ospf_abr_prepare_aggregates
    - CHECK_FLAG
    - ospf_area_is_transit
    - ospf_check_fr_enabled_all
    - ospf_abr_unapprove_translates
    - IS_LSA_MAXAGE
    - ospf_abr_unapprove_summaries
    - ospf_lsa_is_self_originated
    - ALL_LIST_ELEMENTS
    - LSDB_LOOP
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_process_router_rt(struct ospf *ospf,\n\t\t\t\t       struct
      route_table *rt)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1482,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1484,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1489,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:1492,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:1493,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1505,1
    - Dst: ospf_area_range_active
      Src: /src/frr/ospfd/ospf_abr.c:1508,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1509,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1512,1
    - Dst: ospf_abr_translate_nssa_range
      Src: /src/frr/ospfd/ospf_abr.c:1520,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1527,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1474
    functionDepth: 2
    functionLinenumber: 1474
    functionLinenumberEnd: 1528
    functionName: ospf_abr_send_nssa_aggregates
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_area_range_active
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - CHECK_FLAG
    - route_next
    - zlog_debug
    - ospf_abr_translate_nssa_range
    linkageType: ''
    returnType: void
    signature: void ospf_abr_send_nssa_aggregates(struct ospf *ospf)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:1536,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1540,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1546,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1548,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1555,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1559,1
    - Dst: ospf_abr_announce_network_to_area
      Src: /src/frr/ospfd/ospf_abr.c:1561,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1565,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1566
      start: 1530
    functionDepth: 8
    functionLinenumber: 1530
    functionLinenumberEnd: 1566
    functionName: ospf_abr_announce_stub_defaults
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - IS_OSPF_ABR
    - zlog_debug
    - ospf_abr_announce_network_to_area
    - OSPF_IS_AREA_BACKBONE
    linkageType: ''
    returnType: void
    signature: void ospf_abr_announce_stub_defaults(struct ospf *ospf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_check_fr_enabled_all
      Src: /src/frr/ospfd/ospf_abr.c:1583,1
    - Dst: ospf_summary_asbr_lsa_originate::ospf_summary_asbr_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:1600,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1603,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ospf
    - area
    argTypes:
    - struct ospf*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1575
    functionDepth: 7
    functionLinenumber: 1575
    functionLinenumberEnd: 1610
    functionName: ospf_generate_indication_lsa
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 1
    functionsReached:
    - ospf_check_fr_enabled_all
    - zlog_debug
    - ospf_summary_asbr_lsa_originate::ospf_summary_asbr_lsa_originate
    linkageType: ''
    returnType: void
    signature: void ospf_generate_indication_lsa(struct ospf *ospf, struct ospf_area
      *area)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_abr.c:1619,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_abr.c:1619,1
    - Dst: ospf_check_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1620,1
    - Dst: OSPF_LOG_INFO
      Src: /src/frr/ospfd/ospf_abr.c:1623,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:1626,1
    - Dst: ospf_generate_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1617
    functionDepth: 8
    functionLinenumber: 1617
    functionLinenumberEnd: 1635
    functionName: ospf_recv_indication_lsa_flush
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - OSPF_LOG_INFO
    - IS_LSA_MAXAGE
    - IS_OSPF_ABR
    - ospf_generate_indication_lsa
    - ospf_check_indication_lsa
    - IS_LSA_SELF
    linkageType: ''
    returnType: void
    signature: void ospf_recv_indication_lsa_flush(struct ospf_lsa *lsa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1650,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1663,1
    - Dst: ospf_summary_asbr_lsa_originate::ospf_summary_asbr_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:1676,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1679,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - ospf
    - area
    argTypes:
    - struct ospf*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1688
      start: 1643
    functionDepth: 7
    functionLinenumber: 1643
    functionLinenumberEnd: 1688
    functionName: ospf_abr_generate_indication_lsa
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 1
    functionsReached:
    - OSPF_LOG_DEBUG
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - ospf_summary_asbr_lsa_originate::ospf_summary_asbr_lsa_originate
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_generate_indication_lsa(struct ospf *ospf,\n\t\t\t\t
      \     const struct ospf_area *area)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1700,1
    - Dst: OSPF_LOG_INFO
      Src: /src/frr/ospfd/ospf_abr.c:1702,1
    - Dst: ospf_schedule_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1695
    functionDepth: 2
    functionLinenumber: 1695
    functionLinenumberEnd: 1711
    functionName: ospf_flush_indication_lsas
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - OSPF_LOG_INFO
    - ospf_schedule_lsa_flush_area
    linkageType: ''
    returnType: void
    signature: void ospf_flush_indication_lsas(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1723,1
    - Dst: ospf_check_area_fr_enabled
      Src: /src/frr/ospfd/ospf_abr.c:1724,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1749,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1750,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1753,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:1758,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1760,1
    - Dst: ospf_abr_generate_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1769,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1772,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_abr.c:1772,1
    - Dst: ospf_abr_generate_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1784,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1787,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1795,1
    - Dst: ospf_check_fr_enabled_all
      Src: /src/frr/ospfd/ospf_abr.c:1795,1
    - Dst: ospf_flush_indication_lsas
      Src: /src/frr/ospfd/ospf_abr.c:1796,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1805,1
    - Dst: ospf_schedule_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1807,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 3
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1718
    functionDepth: 8
    functionLinenumber: 1718
    functionLinenumberEnd: 1814
    functionName: ospf_check_fr_enabled_all
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 3
    functionsReached:
    - ospf_check_fr_enabled_all
    - ALL_LIST_ELEMENTS_RO
    - ospf_flush_indication_lsas
    - ospf_check_area_fr_enabled
    - ospf_abr_generate_indication_lsa
    - OSPF_LOG_DEBUG
    - ospf_schedule_lsa_flush_area
    - if
    - OSPF_IS_AREA_BACKBONE
    linkageType: ''
    returnType: bool
    signature: bool ospf_check_fr_enabled_all(struct ospf *ospf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1823,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_abr.c:1828,1
    - Dst: ospf_nssa_lsa_originate
      Src: /src/frr/ospfd/ospf_abr.c:1848,1
    - Dst: ospf_nssa_lsa_refresh
      Src: /src/frr/ospfd/ospf_abr.c:1850,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ospf
    - area
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_area*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1816
    functionDepth: 1
    functionLinenumber: 1816
    functionLinenumberEnd: 1851
    functionName: ospf_abr_nssa_type7_default_create
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf_nssa_lsa_originate
    - ospf_nssa_lsa_refresh
    - memset
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_nssa_type7_default_create(struct ospf *ospf,\n\t\t\t\t\t
      \      struct ospf_area *area,\n\t\t\t\t\t       struct ospf_lsa *lsa)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1857,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1859,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_abr.c:1863,1
    - Dst: ospf_refresher_unregister_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1864,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1865,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ospf
    - area
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_area*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1853
    functionDepth: 4
    functionLinenumber: 1853
    functionLinenumberEnd: 1867
    functionName: ospf_abr_nssa_type7_default_delete
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_flush_area
    - ospf_refresher_unregister_lsa
    - CHECK_FLAG
    - zlog_debug
    - ospf_ls_retransmit_delete_nbr_area
    linkageType: ''
    returnType: void
    signature: "void ospf_abr_nssa_type7_default_delete(struct ospf *ospf,\n\t\t\t\t\t
      \      struct ospf_area *area,\n\t\t\t\t\t       struct ospf_lsa *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1875,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_abr.c:1879,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1881,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:1883,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_abr.c:1884,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1870
    functionDepth: 2
    functionLinenumber: 1870
    functionLinenumberEnd: 1889
    functionName: ospf_abr_nssa_type7_defaults
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - IS_OSPF_ASBR
    - ALL_LIST_ELEMENTS_RO
    - IS_OSPF_ABR
    - if
    - ospf_lsdb_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void ospf_abr_nssa_type7_defaults(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1895,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1896,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_abr.c:1897,1
    - Dst: ospf_lsa_flush_as
      Src: /src/frr/ospfd/ospf_abr.c:1901,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1906
      start: 1892
    functionDepth: 1
    functionLinenumber: 1892
    functionLinenumberEnd: 1906
    functionName: ospf_abr_remove_unapproved_translates_apply
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_flush_as
    - CHECK_FLAG
    - zlog_info
    linkageType: ''
    returnType: int
    signature: "int ospf_abr_remove_unapproved_translates_apply(struct ospf *ospf,\n\t\t\t\t\t\t
      \      struct ospf_lsa *lsa)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1916,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_abr.c:1918,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_abr.c:1918,1
    - Dst: ospf_abr_remove_unapproved_translates_apply
      Src: /src/frr/ospfd/ospf_abr.c:1919,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1922,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1908
    functionDepth: 2
    functionLinenumber: 1908
    functionLinenumberEnd: 1923
    functionName: ospf_abr_remove_unapproved_translates
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - LSDB_LOOP
    - ospf_abr_remove_unapproved_translates_apply
    - EXTERNAL_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf_abr_remove_unapproved_translates(struct ospf *ospf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1933,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_abr.c:1935,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1937,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_abr.c:1940,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_abr.c:1940,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_abr.c:1941,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1942,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1943,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_abr.c:1945,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_abr.c:1945,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_abr.c:1946,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1947,1
    - Dst: ospf_check_indication_lsa
      Src: /src/frr/ospfd/ospf_abr.c:1951,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_abr.c:1952,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:1956,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1957
      start: 1925
    functionDepth: 1
    functionLinenumber: 1925
    functionLinenumberEnd: 1957
    functionName: ospf_abr_remove_unapproved_summaries
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_flush_area
    - SUMMARY_LSDB
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - ASBR_SUMMARY_LSDB
    - zlog_debug
    - ospf_lsa_is_self_originated
    - ospf_check_indication_lsa
    - LSDB_LOOP
    linkageType: ''
    returnType: void
    signature: void ospf_abr_remove_unapproved_summaries(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_abr.c:1965,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_abr.c:1968,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_abr.c:1973,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_abr.c:1973,1
    - Dst: ospf_area_range_active
      Src: /src/frr/ospfd/ospf_abr.c:1980,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_abr.c:1981,1
    - Dst: ospf_add_discard_route
      Src: /src/frr/ospfd/ospf_abr.c:1983,1
    - Dst: ospf_delete_discard_route
      Src: /src/frr/ospfd/ospf_abr.c:1987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ospf
    - nssa
    argTypes:
    - struct ospf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1959
    functionDepth: 1
    functionLinenumber: 1959
    functionLinenumberEnd: 1992
    functionName: ospf_abr_manage_discard_routes
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_area_range_active
    - CHECK_FLAG
    - route_top
    - route_next
    - if
    - ALL_LIST_ELEMENTS
    - ospf_delete_discard_route
    - ospf_add_discard_route
    linkageType: ''
    returnType: void
    signature: void ospf_abr_manage_discard_routes(struct ospf *ospf, bool nssa)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2025,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:2027,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2035,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2039,1
    - Dst: ospf_abr_unapprove_translates
      Src: /src/frr/ospfd/ospf_abr.c:2041,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2045,1
    - Dst: ospf_abr_prepare_aggregates
      Src: /src/frr/ospfd/ospf_abr.c:2046,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2053,1
    - Dst: ospf_abr_process_nssa_translates
      Src: /src/frr/ospfd/ospf_abr.c:2054,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2062,1
    - Dst: ospf_abr_send_nssa_aggregates
      Src: /src/frr/ospfd/ospf_abr.c:2063,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2074,1
    - Dst: ospf_abr_remove_unapproved_translates
      Src: /src/frr/ospfd/ospf_abr.c:2075,1
    - Dst: ospf_abr_manage_discard_routes
      Src: /src/frr/ospfd/ospf_abr.c:2077,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2080,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2019
    functionDepth: 3
    functionLinenumber: 2019
    functionLinenumberEnd: 2081
    functionName: ospf_abr_nssa_task
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_abr_process_nssa_translates
    - ospf_abr_send_nssa_aggregates
    - ospf_abr_prepare_aggregates
    - ospf_abr_manage_discard_routes
    - IS_OSPF_ABR
    - ospf_abr_unapprove_translates
    - zlog_debug
    - ospf_abr_remove_unapproved_translates
    linkageType: ''
    returnType: void
    signature: void ospf_abr_nssa_task(struct ospf *ospf)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2091,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2095,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2101,1
    - Dst: ospf_abr_unapprove_summaries
      Src: /src/frr/ospfd/ospf_abr.c:2102,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2105,1
    - Dst: ospf_abr_prepare_aggregates
      Src: /src/frr/ospfd/ospf_abr.c:2106,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_abr.c:2108,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2110,1
    - Dst: ospf_abr_process_network_rt
      Src: /src/frr/ospfd/ospf_abr.c:2111,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2114,1
    - Dst: ospf_abr_process_router_rt
      Src: /src/frr/ospfd/ospf_abr.c:2115,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2118,1
    - Dst: ospf_abr_announce_aggregates
      Src: /src/frr/ospfd/ospf_abr.c:2119,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2122,1
    - Dst: ospf_abr_announce_stub_defaults
      Src: /src/frr/ospfd/ospf_abr.c:2123,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2126,1
    - Dst: ospf_abr_nssa_type7_defaults
      Src: /src/frr/ospfd/ospf_abr.c:2128,1
    - Dst: OSPF_LOG_DEBUG
      Src: /src/frr/ospfd/ospf_abr.c:2131,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_abr.c:2139,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2146,1
    - Dst: ospf_abr_remove_unapproved_summaries
      Src: /src/frr/ospfd/ospf_abr.c:2147,1
    - Dst: ospf_abr_manage_discard_routes
      Src: /src/frr/ospfd/ospf_abr.c:2149,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2152,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 2085
    functionDepth: 11
    functionLinenumber: 2085
    functionLinenumberEnd: 2153
    functionName: ospf_abr_task
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 2
    functionsReached:
    - ospf_abr_announce_aggregates
    - ospf_abr_remove_unapproved_summaries
    - ospf_abr_prepare_aggregates
    - IS_OSPF_ABR
    - ospf_abr_process_network_rt
    - ospf_abr_unapprove_summaries
    - OSPF_LOG_DEBUG
    - zlog_debug
    - ospf_abr_announce_stub_defaults
    - ospf_abr_nssa_type7_defaults
    - ospf_abr_process_router_rt
    - ospf_abr_manage_discard_routes
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void ospf_abr_task(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_abr.c:2157,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2162,1
    - Dst: ospf_check_abr_status
      Src: /src/frr/ospfd/ospf_abr.c:2164,1
    - Dst: ospf_abr_nssa_check_status
      Src: /src/frr/ospfd/ospf_abr.c:2165,1
    - Dst: ospf_abr_task
      Src: /src/frr/ospfd/ospf_abr.c:2167,1
    - Dst: ospf_abr_nssa_task
      Src: /src/frr/ospfd/ospf_abr.c:2168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2169
      start: 2155
    functionDepth: 12
    functionLinenumber: 2155
    functionLinenumberEnd: 2169
    functionName: ospf_abr_task_timer
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - ospf_abr_nssa_task
    - ospf_abr_nssa_check_status
    - zlog_debug
    - EVENT_ARG
    - ospf_abr_task
    - ospf_check_abr_status
    linkageType: ''
    returnType: void
    signature: void ospf_abr_task_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_abr.c:2174,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_abr.c:2176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2171
    functionDepth: 1
    functionLinenumber: 2171
    functionLinenumberEnd: 2178
    functionName: ospf_schedule_abr_task
    functionSourceFile: /src/frr/ospfd/ospf_abr.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf_schedule_abr_task(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: IF_OSPF_IF_INFO
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_OSPF_IF_INFO(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: IF_DEF_PARAMS
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_DEF_PARAMS(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: IF_OIFS
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_OIFS(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: IF_OIFS_PARAMS
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_OIFS_PARAMS(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: OSPF_IF_PARAM_CONFIGURED
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_IF_PARAM_CONFIGURED(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: OSPF_IF_PARAM_IS_SET
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_IF_PARAM_IS_SET(O, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: OSPF_IF_PARAM
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_IF_PARAM(O, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: DECLARE_IF_PARAM
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_IF_PARAM(T, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: UNSET_IF_PARAM
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSET_IF_PARAM(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: SET_IF_PARAM
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_IF_PARAM(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: OSPF_IF_PASSIVE_STATUS
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_IF_PASSIVE_STATUS(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - M
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: OI_MEMBER_FLAG
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OI_MEMBER_FLAG(M)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - M
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: OI_MEMBER_COUNT
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OI_MEMBER_COUNT(O,M)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - M
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: OI_MEMBER_CHECK
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OI_MEMBER_CHECK(O, M)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - M
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 200
    functionName: OI_MEMBER_JOINED
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OI_MEMBER_JOINED(O, M)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - M
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 205
    functionName: OI_MEMBER_LEFT
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OI_MEMBER_LEFT(O, M)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 219
    functionName: DR
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DR(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    functionName: BDR
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BDR(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 221
    functionName: OPTIONS
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPTIONS(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: PRIORITY
    functionSourceFile: /src/frr/ospfd/ospf_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRIORITY(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/ospfd/ospf_errors.c:179,1
    - Dst: log_ref_add
      Src: /src/frr/ospfd/ospf_errors.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: ospf_error_init
    functionSourceFile: /src/frr/ospfd/ospf_errors.c
    functionUses: 0
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void ospf_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: NBR_IS_DR
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NBR_IS_DR(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: NBR_IS_BDR
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NBR_IS_BDR(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ospf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: OSPF_HELPER_ENABLE_RTR_COUNT
    functionSourceFile: /src/frr/ospfd/ospf_gr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_HELPER_ENABLE_RTR_COUNT(ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - reason
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: OSPF_GR_IS_PLANNED_RESTART
    functionSourceFile: /src/frr/ospfd/ospf_gr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_GR_IS_PLANNED_RESTART(reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: OSPF_GR_IS_ACTIVE_HELPER
    functionSourceFile: /src/frr/ospfd/ospf_gr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_GR_IS_ACTIVE_HELPER(N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: IS_GRACE_LSA
    functionSourceFile: /src/frr/ospfd/ospf_gr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_GRACE_LSA(lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nbr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: IS_NBR_STATE_FULL
    functionSourceFile: /src/frr/ospfd/ospf_gr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NBR_STATE_FULL(nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nbr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: IS_NBR_STATE_2_WAY_WITH_DROTHER
    functionSourceFile: /src/frr/ospfd/ospf_gr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NBR_STATE_2_WAY_WITH_DROTHER(nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_main.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: sighup
    functionSourceFile: /src/frr/ospfd/ospf_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/ospfd/ospf_main.c:93,1
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/ospfd/ospf_main.c:94,1
    - Dst: ospf_terminate
      Src: /src/frr/ospfd/ospf_main.c:95,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_main.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: sigint
    functionSourceFile: /src/frr/ospfd/ospf_main.c
    functionUses: 0
    functionsReached:
    - ospf_terminate
    - exit
    - zlog_notice
    - bfd_protocol_integration_set_shutdown
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/ospfd/ospf_main.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: sigusr1
    functionSourceFile: /src/frr/ospfd/ospf_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/ospfd/ospf_main.c:153,1
    - Dst: ospf_master_init
      Src: /src/frr/ospfd/ospf_main.c:157,1
    - Dst: frr_init_fast
      Src: /src/frr/ospfd/ospf_main.c:157,1
    - Dst: ospf_debug_init
      Src: /src/frr/ospfd/ospf_main.c:158,1
    - Dst: ospf_vrf_init
      Src: /src/frr/ospfd/ospf_main.c:159,1
    - Dst: access_list_init
      Src: /src/frr/ospfd/ospf_main.c:160,1
    - Dst: prefix_list_init
      Src: /src/frr/ospfd/ospf_main.c:161,1
    - Dst: ospf_if_init
      Src: /src/frr/ospfd/ospf_main.c:162,1
    - Dst: ospf_zebra_init
      Src: /src/frr/ospfd/ospf_main.c:163,1
    - Dst: ospf_bfd_init
      Src: /src/frr/ospfd/ospf_main.c:164,1
    - Dst: ospf_route_map_init
      Src: /src/frr/ospfd/ospf_main.c:165,1
    - Dst: ospf_opaque_init
      Src: /src/frr/ospfd/ospf_main.c:166,1
    - Dst: ospf_error_init
      Src: /src/frr/ospfd/ospf_main.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 170
    functionName: FuzzingInit
    functionSourceFile: /src/frr/ospfd/ospf_main.c
    functionUses: 0
    functionsReached:
    - frr_preinit
    - ospf_zebra_init
    - prefix_list_init
    - ospf_if_init
    - ospf_master_init
    - ospf_opaque_init
    - ospf_vrf_init
    - access_list_init
    - ospf_bfd_init
    - ospf_route_map_init
    - ospf_error_init
    - frr_init_fast
    - ospf_debug_init
    linkageType: ''
    returnType: bool
    signature: bool FuzzingInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_get_by_name
      Src: /src/frr/ospfd/ospf_main.c:175,1
    - Dst: vrf_get
      Src: /src/frr/ospfd/ospf_main.c:176,1
    - Dst: str2prefix
      Src: /src/frr/ospfd/ospf_main.c:178,1
    - Dst: ospf_get
      Src: /src/frr/ospfd/ospf_main.c:181,1
    - Dst: inet_pton
      Src: /src/frr/ospfd/ospf_main.c:185,1
    - Dst: ospf_area_new
      Src: /src/frr/ospfd/ospf_main.c:186,1
    - Dst: connected_add_by_prefix
      Src: /src/frr/ospfd/ospf_main.c:188,1
    - Dst: add_ospf_interface
      Src: /src/frr/ospfd/ospf_main.c:189,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_main.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 197
    functionName: FuzzingCreateOspf
    functionSourceFile: /src/frr/ospfd/ospf_main.c
    functionUses: 0
    functionsReached:
    - if_get_by_name
    - vrf_get
    - ospf_get
    - connected_add_by_prefix
    - ospf_area_new
    - listhead
    - inet_pton
    - str2prefix
    - add_ospf_interface
    linkageType: ''
    returnType: struct ospf
    signature: struct ospf *FuzzingCreateOspf(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FuzzingInit
      Src: /src/frr/ospfd/ospf_main.c:205,1
    - Dst: FuzzingCreateOspf
      Src: /src/frr/ospfd/ospf_main.c:207,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_main.c:219,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_main.c:220,1
    - Dst: MAX
      Src: /src/frr/ospfd/ospf_main.c:220,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_main.c:222,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_main.c:230,1
    - Dst: sockopt_iphdrincl_swab_systoh
      Src: /src/frr/ospfd/ospf_main.c:231,1
    - Dst: ospf_read_helper
      Src: /src/frr/ospfd/ospf_main.c:241,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 245
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/frr/ospfd/ospf_main.c
    functionUses: 0
    functionsReached:
    - stream_free
    - ospf_read_helper
    - stream_new
    - stream_put
    - FuzzingCreateOspf
    - FuzzingInit
    - STREAM_DATA
    - sockopt_iphdrincl_swab_systoh
    - MAX
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: FuzzingInit
      Src: /src/frr/ospfd/ospf_main.c:254,1
    - Dst: FuzzingCreateOspf
      Src: /src/frr/ospfd/ospf_main.c:255,1
    - Dst: __AFL_INIT
      Src: /src/frr/ospfd/ospf_main.c:258,1
    - Dst: frrfuzz_read_input
      Src: /src/frr/ospfd/ospf_main.c:261,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/frr/ospfd/ospf_main.c:266,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_main.c:268,1
    - Dst: frr_preinit
      Src: /src/frr/ospfd/ospf_main.c:278,1
    - Dst: frr_opt_add
      Src: /src/frr/ospfd/ospf_main.c:279,1
    - Dst: frr_getopt
      Src: /src/frr/ospfd/ospf_main.c:286,1
    - Dst: atoi
      Src: /src/frr/ospfd/ospf_main.c:293,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_main.c:295,1
    - Dst: frr_help_exit
      Src: /src/frr/ospfd/ospf_main.c:305,1
    - Dst: geteuid
      Src: /src/frr/ospfd/ospf_main.c:310,1
    - Dst: perror
      Src: /src/frr/ospfd/ospf_main.c:312,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_main.c:313,1
    - Dst: ospf_master_init
      Src: /src/frr/ospfd/ospf_main.c:317,1
    - Dst: frr_init
      Src: /src/frr/ospfd/ospf_main.c:317,1
    - Dst: ospf_debug_init
      Src: /src/frr/ospfd/ospf_main.c:323,1
    - Dst: ospf_vrf_init
      Src: /src/frr/ospfd/ospf_main.c:324,1
    - Dst: access_list_init
      Src: /src/frr/ospfd/ospf_main.c:326,1
    - Dst: prefix_list_init
      Src: /src/frr/ospfd/ospf_main.c:327,1
    - Dst: ospf_if_init
      Src: /src/frr/ospfd/ospf_main.c:330,1
    - Dst: ospf_zebra_init
      Src: /src/frr/ospfd/ospf_main.c:331,1
    - Dst: ospf_vty_init
      Src: /src/frr/ospfd/ospf_main.c:334,1
    - Dst: ospf_vty_show_init
      Src: /src/frr/ospfd/ospf_main.c:335,1
    - Dst: ospf_vty_clear_init
      Src: /src/frr/ospfd/ospf_main.c:336,1
    - Dst: ospf_bfd_init
      Src: /src/frr/ospfd/ospf_main.c:339,1
    - Dst: ospf_ldp_sync_init
      Src: /src/frr/ospfd/ospf_main.c:342,1
    - Dst: ospf_route_map_init
      Src: /src/frr/ospfd/ospf_main.c:344,1
    - Dst: ospf_opaque_init
      Src: /src/frr/ospfd/ospf_main.c:345,1
    - Dst: ospf_gr_init
      Src: /src/frr/ospfd/ospf_main.c:346,1
    - Dst: ospf_gr_helper_init
      Src: /src/frr/ospfd/ospf_main.c:347,1
    - Dst: ospf_error_init
      Src: /src/frr/ospfd/ospf_main.c:350,1
    - Dst: frr_config_fork
      Src: /src/frr/ospfd/ospf_main.c:352,1
    - Dst: frr_run
      Src: /src/frr/ospfd/ospf_main.c:353,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 60
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 357
    functionName: main
    functionSourceFile: /src/frr/ospfd/ospf_main.c
    functionUses: 4
    functionsReached:
    - geteuid
    - FuzzingCreateOspf
    - FuzzingInit
    - frr_getopt
    - ospf_vty_clear_init
    - frrfuzz_read_input
    - ospf_gr_helper_init
    - __AFL_INIT
    - ospf_debug_init
    - exit
    - ospf_gr_init
    - ospf_opaque_init
    - ospf_vty_show_init
    - access_list_init
    - ospf_ldp_sync_init
    - frr_help_exit
    - prefix_list_init
    - frr_init
    - ospf_if_init
    - frr_config_fork
    - ospf_vty_init
    - free
    - ospf_vrf_init
    - ospf_error_init
    - atoi
    - frr_opt_add
    - frr_preinit
    - ospf_zebra_init
    - perror
    - ospf_master_init
    - ospf_bfd_init
    - ospf_route_map_init
    - frr_run
    - LLVMFuzzerTestOneInput
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospfd.c:211,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospfd.c:213,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospfd.c:215,1
    - Dst: ospf_lsa_flush_schedule
      Src: /src/frr/ospfd/ospfd.c:216,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 222
    functionName: LSDB_LOOP
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 7
    functionsReached:
    - IPV4_ADDR_SAME
    - SET_FLAG
    - ospf_discard_from_db
    - ospf_lsa_flush_schedule
    linkageType: ''
    returnType: void
    signature: void LSDB_LOOP (EXTERNAL_LSDB(ospf), rn, lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_new_alloc::ospf_new_alloc
      Src: /src/frr/ospfd/ospfd.c:435,1
    - Dst: vrf_id::vrf_id
      Src: /src/frr/ospfd/ospfd.c:438,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospfd.c:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - instance
    - name
    argTypes:
    - unsigned short
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 462
    functionName: ospf_new
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - vrf_id::vrf_id
    - flog_err
    - ospf_new_alloc::ospf_new_alloc
    linkageType: ''
    returnType: struct ospf
    signature: struct ospf *ospf_new(unsigned short instance, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ospfd/ospfd.c:469,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:472,1
    - Dst: for
      Src: /src/frr/ospfd/ospfd.c:495,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:495,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospfd.c:499,1
    - Dst: ospf_lookup
      Src: /src/frr/ospfd/ospfd.c:505,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospfd.c:510,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospfd.c:512,1
    - Dst: ospf_get
      Src: /src/frr/ospfd/ospfd.c:518,1
    - Dst: ospf_lookup
      Src: /src/frr/ospfd/ospfd.c:522,1
    - Dst: ospf_new
      Src: /src/frr/ospfd/ospfd.c:526,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospfd.c:531,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospfd.c:535,1
    - Dst: ospf_count_area_params
      Src: /src/frr/ospfd/ospfd.c:541,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospfd.c:548,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ospfd/ospfd.c:550,1
    - Dst: ospf_if_count_area_params
      Src: /src/frr/ospfd/ospfd.c:551,1
    - Dst: ospf_lookup_by_name
      Src: /src/frr/ospfd/ospfd.c:562,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospfd.c:570,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 8
    argCount: 1
    argNames:
    - instance
    argTypes:
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 464
    functionDepth: 2
    functionLinenumber: 464
    functionLinenumberEnd: 573
    functionName: ospf_lookup_instance
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 1
    functionsReached:
    - ospf_lookup_by_vrf_id
    - ospf_get
    - listcount
    - strcmp
    - ospf_lookup_by_inst_name
    - ospf_new
    - ospf_lookup_instance
    - ospf_count_area_params
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    - ospf_lookup
    - ALL_LIST_ELEMENTS
    - for
    - ospf_if_count_area_params
    - ospf_lookup_by_name
    linkageType: ''
    returnType: struct ospf
    signature: struct ospf *ospf_lookup_instance(unsigned short instance)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:586,1
    - Dst: ospf_finish_final
      Src: /src/frr/ospfd/ospfd.c:588,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospfd.c:593,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospfd.c:594,1
    - Dst: frr_fini
      Src: /src/frr/ospfd/ospfd.c:595,1
    - Dst: exit
      Src: /src/frr/ospfd/ospfd.c:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 600
    functionName: ospf_deferred_shutdown_finish
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - exit
    - CHECK_FLAG
    - listcount
    - frr_fini
    - ospf_finish_final
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void ospf_deferred_shutdown_finish(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospfd.c:605,1
    - Dst: ospf_deferred_shutdown_finish
      Src: /src/frr/ospfd/ospfd.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 608
    functionName: ospf_deferred_shutdown_timer
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_deferred_shutdown_finish
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_deferred_shutdown_timer(struct event *t)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospfd.c:704,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ospfd/ospfd.c:715,1
    - Dst: ospf_opaque_type11_lsa_term
      Src: /src/frr/ospfd/ospfd.c:717,1
    - Dst: ospf_opaque_finish
      Src: /src/frr/ospfd/ospfd.c:719,1
    - Dst: ospf_flush_self_originated_lsas_now
      Src: /src/frr/ospfd/ospfd.c:722,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospfd.c:723,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:733,1
    - Dst: ospf_redistribute_unset
      Src: /src/frr/ospfd/ospfd.c:734,1
    - Dst: ospf_redist_del
      Src: /src/frr/ospfd/ospfd.c:735,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospfd.c:738,1
    - Dst: ospf_routemap_unset
      Src: /src/frr/ospfd/ospfd.c:740,1
    - Dst: ospf_redist_del
      Src: /src/frr/ospfd/ospfd.c:741,1
    - Dst: ospf_redistribute_default_set
      Src: /src/frr/ospfd/ospfd.c:742,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:745,1
    - Dst: ospf_remove_vls_through_area
      Src: /src/frr/ospfd/ospfd.c:746,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:748,1
    - Dst: ospf_vl_delete
      Src: /src/frr/ospfd/ospfd.c:749,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospfd.c:751,1
    - Dst: ospf_ldp_sync_gbl_exit
      Src: /src/frr/ospfd/ospfd.c:755,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:758,1
    - Dst: ospf_if_free
      Src: /src/frr/ospfd/ospfd.c:759,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospfd.c:760,1
    - Dst: ospf_zebra_vrf_deregister
      Src: /src/frr/ospfd/ospfd.c:764,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:767,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:767,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospfd.c:777,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospfd.c:782,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospfd.c:785,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:788,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:788,1
    - Dst: ospf_network_free
      Src: /src/frr/ospfd/ospfd.c:792,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:794,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospfd.c:797,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:799,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospfd.c:800,1
    - Dst: ospf_area_free
      Src: /src/frr/ospfd/ospfd.c:801,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:804,1
    - Dst: OPAQUE_AS_LSDB
      Src: /src/frr/ospfd/ospfd.c:804,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:805,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:806,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospfd.c:806,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:807,1
    - Dst: ospf_lsdb_delete_all
      Src: /src/frr/ospfd/ospfd.c:809,1
    - Dst: ospf_lsdb_free
      Src: /src/frr/ospfd/ospfd.c:810,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:812,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:812,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospfd.c:814,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:816,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospfd.c:819,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospfd.c:822,1
    - Dst: ospf_route_delete
      Src: /src/frr/ospfd/ospfd.c:825,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospfd.c:826,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospfd.c:829,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospfd.c:831,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospfd.c:833,1
    - Dst: ospf_rtrs_free
      Src: /src/frr/ospfd/ospfd.c:835,1
    - Dst: ospf_route_delete
      Src: /src/frr/ospfd/ospfd.c:838,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospfd.c:839,1
    - Dst: ospf_route_delete
      Src: /src/frr/ospfd/ospfd.c:843,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospfd.c:844,1
    - Dst: ospf_ase_external_lsas_finish
      Src: /src/frr/ospfd/ospfd.c:847,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:858,1
    - Dst: for
      Src: /src/frr/ospfd/ospfd.c:860,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:860,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:861,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospfd.c:865,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:868,1
    - Dst: ospf_external_del
      Src: /src/frr/ospfd/ospfd.c:871,1
    - Dst: ospf_distance_reset
      Src: /src/frr/ospfd/ospfd.c:875,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospfd.c:876,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:879,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:879,1
    - Dst: ospf_external_aggregator_free
      Src: /src/frr/ospfd/ospfd.c:885,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:887,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:892,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:893,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:894,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:895,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:896,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:897,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:898,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:899,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:900,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:901,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:902,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:903,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:904,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:905,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:906,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:907,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:908,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospfd.c:910,1
    - Dst: ospf_free_refresh_queue
      Src: /src/frr/ospfd/ospfd.c:912,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospfd.c:914,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospfd.c:915,1
    - Dst: ospf_gr_helper_instance_stop
      Src: /src/frr/ospfd/ospfd.c:918,1
    - Dst: close
      Src: /src/frr/ospfd/ospfd.c:920,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospfd.c:921,1
    - Dst: ospf_delete
      Src: /src/frr/ospfd/ospfd.c:924,1
    - Dst: ospf_vrf_unlink
      Src: /src/frr/ospfd/ospfd.c:927,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospfd.c:929,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospfd.c:930,1
    - Dst: ospf_area_new
      Src: /src/frr/ospfd/ospfd.c:935,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospfd.c:940,1
    - Dst: ospf_lsdb_new
      Src: /src/frr/ospfd/ospfd.c:952,1
    - Dst: fr_info::fr_info
      Src: /src/frr/ospfd/ospfd.c:958,1
    - Dst: fr_info::fr_info
      Src: /src/frr/ospfd/ospfd.c:959,1
    - Dst: fr_info::fr_info
      Src: /src/frr/ospfd/ospfd.c:960,1
    - Dst: fr_info::fr_info
      Src: /src/frr/ospfd/ospfd.c:961,1
    - Dst: fr_info::fr_info
      Src: /src/frr/ospfd/ospfd.c:962,1
    - Dst: fr_info::fr_info
      Src: /src/frr/ospfd/ospfd.c:963,1
    - Dst: fr_info::fr_info
      Src: /src/frr/ospfd/ospfd.c:964,1
    - Dst: ospf_opaque_type10_lsa_init
      Src: /src/frr/ospfd/ospfd.c:966,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospfd.c:968,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospfd.c:969,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospfd.c:970,1
    - Dst: ospf_area_lsdb_discard_delete::ospf_area_lsdb_discard_delete
      Src: /src/frr/ospfd/ospfd.c:975,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:983,1
    - Dst: ROUTER_LSDB
      Src: /src/frr/ospfd/ospfd.c:983,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:984,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:985,1
    - Dst: NETWORK_LSDB
      Src: /src/frr/ospfd/ospfd.c:985,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:986,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:987,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospfd.c:987,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:988,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:989,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospfd.c:989,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:990,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:992,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospfd.c:992,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:993,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:994,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospfd.c:994,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:995,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospfd.c:996,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospfd.c:996,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospfd.c:997,1
    - Dst: ospf_lsdb_delete_all
      Src: /src/frr/ospfd/ospfd.c:999,1
    - Dst: ospf_area_lsdb_discard_delete
      Src: /src/frr/ospfd/ospfd.c:1007,1
    - Dst: ospf_lsdb_free
      Src: /src/frr/ospfd/ospfd.c:1009,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospfd.c:1011,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospfd.c:1013,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospfd.c:1014,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospfd.c:1015,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1017,1
    - Dst: free
      Src: /src/frr/ospfd/ospfd.c:1018,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1018,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1020,1
    - Dst: free
      Src: /src/frr/ospfd/ospfd.c:1021,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1021,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:1024,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:1025,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospfd.c:1027,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospfd.c:1030,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 49
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 702
    functionDepth: 5
    functionLinenumber: 702
    functionLinenumberEnd: 1031
    functionName: ospf_finish_final
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 1
    functionsReached:
    - ospf_redistribute_default_set
    - ALL_LIST_ELEMENTS
    - ospf_flush_self_originated_lsas_now
    - ospf_redist_lookup
    - list_delete
    - ospf_distance_reset
    - ROUTER_LSDB
    - EXPORT_NAME
    - route_top
    - NSSA_LSDB
    - IMPORT_NAME
    - ospf_redist_del
    - OPAQUE_LINK_LSDB
    - ospf_delete
    - ospf_area_lsdb_discard_delete
    - EXTERNAL_LSDB
    - ospf_lsdb_free
    - OSPF_IS_AREA_BACKBONE
    - SUMMARY_LSDB
    - ospf_lsdb_delete_all
    - ASBR_SUMMARY_LSDB
    - ospf_vl_delete
    - ospf_rtrs_free
    - ospf_if_free
    - ospf_ldp_sync_gbl_exit
    - ospf_free_refresh_queue
    - vrf_lookup_by_id
    - ospf_external_del
    - ospf_routemap_unset
    - for
    - OPAQUE_AREA_LSDB
    - NETWORK_LSDB
    - ospf_opaque_finish
    - route_unlock_node
    - stream_free
    - XCALLOC::XCALLOC
    - route_table_finish
    - ospf_vrf_unlink
    - ospf_opaque_type10_lsa_init
    - ospf_area_free
    - ospf_ase_external_lsas_finish
    - ospf_area_new
    - route_next
    - ospf_lsdb_new
    - fr_info::fr_info
    - ospf_area_lsdb_discard_delete::ospf_area_lsdb_discard_delete
    - EVENT_OFF
    - free
    - XFREE
    - listnode_delete
    - ospf_route_table_free
    - ospf_network_free
    - QOBJ_UNREG
    - ospf_route_delete
    - ospf_external_aggregator_free
    - ospf_lsa_unlock
    - close
    - route_table_init
    - ospf_zebra_vrf_deregister
    - ospf_remove_vls_through_area
    - ospf_opaque_type11_lsa_term
    - ospf_discard_from_db
    - ospf_gr_helper_instance_stop
    - ospf_redistribute_unset
    - list_new
    - LSDB_LOOP
    - OPAQUE_AS_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf_finish_final(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1037,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospfd.c:1038,1
    - Dst: ospf_vl_count
      Src: /src/frr/ospfd/ospfd.c:1040,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1044,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1044,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospfd.c:1046,1
    - Dst: ospf_area_free
      Src: /src/frr/ospfd/ospfd.c:1047,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 6
    argCount: 2
    argNames:
    - ospf
    - area_id
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1049
    functionName: ospf_area_check_free
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_area_lookup_by_area_id
    - EXPORT_NAME
    - listcount
    - ospf_area_free
    - IMPORT_NAME
    - listnode_delete
    - ospf_vl_count
    linkageType: ''
    returnType: void
    signature: void ospf_area_check_free(struct ospf *ospf, struct in_addr area_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1055,1
    - Dst: ospf_area_new
      Src: /src/frr/ospfd/ospfd.c:1057,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospfd/ospfd.c:1058,1
    - Dst: ospf_check_abr_status
      Src: /src/frr/ospfd/ospfd.c:1059,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospfd.c:1062,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ospf
    - area_id
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1051
    functionDepth: 9
    functionLinenumber: 1051
    functionLinenumberEnd: 1068
    functionName: ospf_area_get
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_area_lookup_by_area_id
    - listnode_add_sort
    - ospf_area_new
    - SET_FLAG
    - ospf_check_abr_status
    linkageType: ''
    returnType: struct ospf_area
    signature: struct ospf_area *ospf_area_get(struct ospf *ospf, struct in_addr area_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospfd.c:1076,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospfd.c:1077,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:1158,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospfd.c:1158,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:1159,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospfd.c:1249,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:1254,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospfd.c:1255,1
    - Dst: ospf_network_free
      Src: /src/frr/ospfd/ospfd.c:1258,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:1260,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:1263,1
    - Dst: ospf_network_run_subnet
      Src: /src/frr/ospfd/ospfd.c:1268,1
    - Dst: update_redistributed
      Src: /src/frr/ospfd/ospfd.c:1272,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1273,1
    - Dst: ospf_interface_area_set
      Src: /src/frr/ospfd/ospfd.c:1283,1
    - Dst: ospf_if_update
      Src: /src/frr/ospfd/ospfd.c:1288,1
    - Dst: ospf_interface_area_unset
      Src: /src/frr/ospfd/ospfd.c:1294,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:1302,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospfd.c:1302,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:1303,1
    - Dst: ospf_network_run_subnet
      Src: /src/frr/ospfd/ospfd.c:1312,1
    - Dst: update_redistributed
      Src: /src/frr/ospfd/ospfd.c:1316,1
    - Dst: ospf_network_match_iface
      Src: /src/frr/ospfd/ospfd.c:1322,1
    - Dst: prefix_match_network_statement
      Src: /src/frr/ospfd/ospfd.c:1326,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/ospfd/ospfd.c:1326,1
    - Dst: ospf_update_interface_area
      Src: /src/frr/ospfd/ospfd.c:1329,1
    - Dst: ospf_if_table_lookup
      Src: /src/frr/ospfd/ospfd.c:1332,1
    - Dst: ospf_if_free
      Src: /src/frr/ospfd/ospfd.c:1340,1
    - Dst: add_ospf_interface
      Src: /src/frr/ospfd/ospfd.c:1342,1
    - Dst: ospf_network_run_subnet
      Src: /src/frr/ospfd/ospfd.c:1354,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospfd.c:1364,1
    - Dst: ospf_lookup_if_params
      Src: /src/frr/ospfd/ospfd.c:1373,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospfd.c:1374,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospfd.c:1375,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospfd.c:1377,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospfd.c:1378,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospfd.c:1379,1
    - Dst: ospf_update_interface_area
      Src: /src/frr/ospfd/ospfd.c:1386,1
    - Dst: assert
      Src: /src/frr/ospfd/ospfd.c:1393,1
    - Dst: ospf_network_match_iface
      Src: /src/frr/ospfd/ospfd.c:1399,1
    - Dst: ospf_update_interface_area
      Src: /src/frr/ospfd/ospfd.c:1400,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:1408,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:1408,1
    - Dst: if
      Src: /src/frr/ospfd/ospfd.c:1409,1
    - Dst: ospf_network_match_iface
      Src: /src/frr/ospfd/ospfd.c:1409,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospfd.c:1412,1
    - Dst: ospf_update_interface_area
      Src: /src/frr/ospfd/ospfd.c:1413,1
    - Dst: ospf_if_table_lookup
      Src: /src/frr/ospfd/ospfd.c:1418,1
    - Dst: ospf_if_free
      Src: /src/frr/ospfd/ospfd.c:1419,1
    - Dst: ospf_network_run_interface
      Src: /src/frr/ospfd/ospfd.c:1422,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospfd.c:1429,1
    - Dst: assert
      Src: /src/frr/ospfd/ospfd.c:1434,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospfd.c:1438,1
    - Dst: ospf_network_run_subnet
      Src: /src/frr/ospfd/ospfd.c:1439,1
    - Dst: ospf_network_run
      Src: /src/frr/ospfd/ospfd.c:1442,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospfd.c:1444,1
    - Dst: ospf_router_id_update
      Src: /src/frr/ospfd/ospfd.c:1449,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ospfd/ospfd.c:1452,1
    - Dst: ospf_network_run_interface
      Src: /src/frr/ospfd/ospfd.c:1453,1
    - Dst: ospf_ls_upd_queue_empty
      Src: /src/frr/ospfd/ospfd.c:1456,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:1464,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:1464,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospfd.c:1486,1
    - Dst: ospf_is_ready
      Src: /src/frr/ospfd/ospfd.c:1490,1
    - Dst: ospf_network_run_interface
      Src: /src/frr/ospfd/ospfd.c:1493,1
    - Dst: update_redistributed
      Src: /src/frr/ospfd/ospfd.c:1496,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 7
    argCount: 2
    argNames:
    - ospf
    - area_id
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts:
    - condition: (given_area != NULL)
      pos:
        line_end: 1433
        line_start: 1433
        source_file: /src/frr/ospfd/ospfd.c
    - condition: (given_area != NULL)
      pos:
        line_end: 1392
        line_start: 1392
        source_file: /src/frr/ospfd/ospfd.c
    constantsTouched: []
    func_position:
      end: 1498
      start: 1070
    functionDepth: 10
    functionLinenumber: 1070
    functionLinenumberEnd: 1498
    functionName: ospf_area_lookup_by_area_id
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 6
    functionsReached:
    - ospf_area_get
    - route_top
    - prefix_match_network_statement
    - memcmp
    - ospf_network_run_subnet
    - IPV4_ADDR_SAME
    - ospf_ls_upd_queue_empty
    - ospf_if_update
    - route_node_lookup
    - ospf_vrf_id_to_name
    - ALL_LIST_ELEMENTS_RO
    - ospf_if_free
    - FOR_ALL_INTERFACES
    - CONNECTED_PREFIX
    - ospf_lookup_if_params
    - vrf_lookup_by_id
    - if
    - ospf_network_run
    - assert
    - route_unlock_node
    - ospf_area_check_free
    - ospf_network_match_iface
    - ospf_interface_area_set
    - route_next
    - ospf_if_table_lookup
    - ospf_interface_area_unset
    - ospf_network_run_interface
    - EXTERNAL_INFO
    - ospf_router_id_update
    - ospf_update_interface_area
    - ospf_network_free
    - update_redistributed
    - CHECK_FLAG
    - IF_DEF_PARAMS
    - IF_OIFS
    - OSPF_IF_PARAM_CONFIGURED
    - ospf_is_ready
    - add_ospf_interface
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct ospf_area
    signature: "struct ospf_area *ospf_area_lookup_by_area_id(struct ospf *ospf,\n\t\t\t\t\t
      \     struct in_addr area_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospfd.c:1505,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospfd.c:1506,1
    - Dst: ospf_vl_delete
      Src: /src/frr/ospfd/ospfd.c:1507,1
    - Dst: if
      Src: /src/frr/ospfd/ospfd.c:1522,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:1524,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:1532,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospfd.c:1534,1
    - Dst: OSPF_AREA_DEFAULT
      Src: /src/frr/ospfd/ospfd.c:1537,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospfd.c:1538,1
    - Dst: if
      Src: /src/frr/ospfd/ospfd.c:1539,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospfd.c:1540,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospfd.c:1542,1
    - Dst: OSPF_AREA_STUB
      Src: /src/frr/ospfd/ospfd.c:1545,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospfd.c:1546,1
    - Dst: if
      Src: /src/frr/ospfd/ospfd.c:1547,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:1549,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospfd.c:1551,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospfd.c:1552,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospfd.c:1554,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:1557,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospfd.c:1558,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospfd.c:1558,1
    - Dst: OSPF_AREA_NSSA
      Src: /src/frr/ospfd/ospfd.c:1561,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospfd.c:1562,1
    - Dst: if
      Src: /src/frr/ospfd/ospfd.c:1563,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:1564,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospfd.c:1566,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospfd.c:1567,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospfd.c:1569,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:1570,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospfd.c:1570,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospfd.c:1571,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospfd.c:1578,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospfd.c:1579,1
    - Dst: ospf_area_shortcut_set
      Src: /src/frr/ospfd/ospfd.c:1582,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospfd.c:1588,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospfd.c:1589,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1591,1
    - Dst: ospf_area_shortcut_unset
      Src: /src/frr/ospfd/ospfd.c:1596,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospfd.c:1599,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1600,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospfd.c:1601,1
    - Dst: ospf_area_vlink_count
      Src: /src/frr/ospfd/ospfd.c:1606,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospfd.c:1612,1
    - Dst: if
      Src: /src/frr/ospfd/ospfd.c:1613,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospfd.c:1613,1
    - Dst: ospf_area_display_format_set
      Src: /src/frr/ospfd/ospfd.c:1619,1
    - Dst: ospf_area_stub_set
      Src: /src/frr/ospfd/ospfd.c:1627,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospfd.c:1631,1
    - Dst: ospf_area_vlink_count
      Src: /src/frr/ospfd/ospfd.c:1632,1
    - Dst: ospf_area_type_set
      Src: /src/frr/ospfd/ospfd.c:1636,1
    - Dst: ospf_area_stub_unset
      Src: /src/frr/ospfd/ospfd.c:1641,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1645,1
    - Dst: ospf_area_type_set
      Src: /src/frr/ospfd/ospfd.c:1650,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1652,1
    - Dst: ospf_area_no_summary_set
      Src: /src/frr/ospfd/ospfd.c:1657,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospfd.c:1661,1
    - Dst: ospf_area_no_summary_unset
      Src: /src/frr/ospfd/ospfd.c:1667,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1671,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1676,1
    - Dst: ospf_area_nssa_no_summary_set
      Src: /src/frr/ospfd/ospfd.c:1681,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospfd.c:1685,1
    - Dst: ospf_area_vlink_count
      Src: /src/frr/ospfd/ospfd.c:1686,1
    - Dst: ospf_area_type_set
      Src: /src/frr/ospfd/ospfd.c:1690,1
    - Dst: ospf_area_no_summary_set
      Src: /src/frr/ospfd/ospfd.c:1695,1
    - Dst: ospf_area_nssa_set
      Src: /src/frr/ospfd/ospfd.c:1700,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospfd.c:1704,1
    - Dst: ospf_area_vlink_count
      Src: /src/frr/ospfd/ospfd.c:1705,1
    - Dst: ospf_area_type_set
      Src: /src/frr/ospfd/ospfd.c:1709,1
    - Dst: ospf_area_nssa_unset
      Src: /src/frr/ospfd/ospfd.c:1723,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1727,1
    - Dst: ospf_area_type_set
      Src: /src/frr/ospfd/ospfd.c:1738,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1739,1
    - Dst: ospf_area_nssa_suppress_fa_set
      Src: /src/frr/ospfd/ospfd.c:1744,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1748,1
    - Dst: ospf_area_nssa_suppress_fa_unset
      Src: /src/frr/ospfd/ospfd.c:1757,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1761,1
    - Dst: ospf_area_nssa_translator_role_set
      Src: /src/frr/ospfd/ospfd.c:1770,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1775,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospfd.c:1788,1
    - Dst: ospf_area_nssa_default_originate_set
      Src: /src/frr/ospfd/ospfd.c:1796,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1802,1
    - Dst: ospf_zebra_import_default_route
      Src: /src/frr/ospfd/ospfd.c:1810,1
    - Dst: ospf_area_nssa_default_originate_unset
      Src: /src/frr/ospfd/ospfd.c:1818,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospfd.c:1823,1
    - Dst: ospf_zebra_import_default_route
      Src: /src/frr/ospfd/ospfd.c:1831,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospfd.c:1836,1
    - Dst: ospf_abr_nssa_type7_defaults
      Src: /src/frr/ospfd/ospfd.c:1837,1
    - Dst: ospf_area_export_list_set
      Src: /src/frr/ospfd/ospfd.c:1841,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospfd.c:1845,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospfd.c:1847,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1849,1
    - Dst: free
      Src: /src/frr/ospfd/ospfd.c:1850,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1850,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1852,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospfd.c:1852,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospfd.c:1853,1
    - Dst: ospf_area_export_list_unset
      Src: /src/frr/ospfd/ospfd.c:1858,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospfd.c:1861,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1863,1
    - Dst: free
      Src: /src/frr/ospfd/ospfd.c:1864,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1864,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1866,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1868,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospfd.c:1870,1
    - Dst: ospf_area_import_list_set
      Src: /src/frr/ospfd/ospfd.c:1875,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospfd.c:1879,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospfd.c:1881,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1883,1
    - Dst: free
      Src: /src/frr/ospfd/ospfd.c:1884,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1884,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1886,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospfd.c:1886,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospfd.c:1887,1
    - Dst: ospf_area_import_list_unset
      Src: /src/frr/ospfd/ospfd.c:1892,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospfd.c:1894,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1896,1
    - Dst: free
      Src: /src/frr/ospfd/ospfd.c:1897,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1897,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospfd.c:1899,1
    - Dst: ospf_area_check_free
      Src: /src/frr/ospfd/ospfd.c:1900,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospfd.c:1902,1
    - Dst: ospf_timers_refresh_set
      Src: /src/frr/ospfd/ospfd.c:1907,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospfd.c:1915,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:1918,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospfd.c:1919,1
    - Dst: ospf_timers_refresh_unset
      Src: /src/frr/ospfd/ospfd.c:1927,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospfd.c:1932,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:1935,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospfd.c:1937,1
    - Dst: ospf_nbr_nbma_new
      Src: /src/frr/ospfd/ospfd.c:1948,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospfd.c:1952,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ospf
    - area
    argTypes:
    - struct ospf*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1500
    functionDepth: 11
    functionLinenumber: 1500
    functionLinenumberEnd: 1964
    functionName: ospf_remove_vls_through_area
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 1
    functionsReached:
    - ospf_schedule_abr_task
    - EXPORT_NAME
    - ospf_area_get
    - ospf_area_nssa_no_summary_set
    - ospf_area_nssa_translator_role_set
    - strdup
    - IPV4_ADDR_SAME
    - ospf_area_shortcut_set
    - OSPF_AREA_DEFAULT
    - ospf_area_no_summary_unset
    - access_list_lookup
    - IMPORT_NAME
    - ospf_area_nssa_suppress_fa_set
    - lookup_msg
    - ospf_area_nssa_suppress_fa_unset
    - ospf_area_type_set
    - ospf_area_display_format_set
    - ospf_area_import_list_set
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - ospf_area_shortcut_unset
    - ospf_vl_delete
    - IS_OSPF_ABR
    - ospf_zebra_import_default_route
    - zlog_debug
    - if
    - ospf_area_export_list_unset
    - ospf_area_nssa_unset
    - ospf_nbr_nbma_new
    - OPTIONS
    - ospf_area_check_free
    - ospf_area_nssa_set
    - ospf_area_nssa_default_originate_set
    - ospf_area_stub_set
    - IMPORT_LIST
    - ospf_area_no_summary_set
    - ospf_area_vlink_count
    - ospf_area_stub_unset
    - OSPF_AREA_STUB
    - free
    - monotime
    - ospf_abr_nssa_type7_defaults
    - UNSET_FLAG
    - ospf_router_lsa_update_area
    - EVENT_OFF
    - EXPORT_LIST
    - event_add_timer
    - OSPF_AREA_NSSA
    - ospf_timers_refresh_set
    - ospf_area_import_list_unset
    - IF_NAME
    - ospf_area_lookup_by_area_id
    - ospf_area_export_list_set
    - ospf_timers_refresh_unset
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - ospf_area_nssa_default_originate_unset
    linkageType: ''
    returnType: void
    signature: void ospf_remove_vls_through_area(struct ospf *ospf, struct ospf_area
      *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospfd.c:1976,1
    - Dst: ospf_nbr_nbma_free
      Src: /src/frr/ospfd/ospfd.c:1978,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:1980,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:1981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ospf
    - nbr_nbma
    argTypes:
    - struct ospf*
    - struct ospf_nbr_nbma*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1966
    functionDepth: 1
    functionLinenumber: 1966
    functionLinenumberEnd: 1983
    functionName: ospf_nbr_nbma_delete
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - ospf_nbr_nbma_free
    - route_node_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf_nbr_nbma_delete(struct ospf *ospf,\n\t\t\t\t struct ospf_nbr_nbma
      *nbr_nbma)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:1987,1
    - Dst: OSPF_NSM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospfd.c:1991,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospfd.c:1995,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - nbr_nbma
    argTypes:
    - struct ospf_nbr_nbma*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1985
    functionDepth: 1
    functionLinenumber: 1985
    functionLinenumberEnd: 1996
    functionName: ospf_nbr_nbma_down
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - OSPF_NSM_EVENT_EXECUTE
    - EVENT_OFF
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: void ospf_nbr_nbma_down(struct ospf_nbr_nbma *nbr_nbma)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospfd.c:2011,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospfd.c:2015,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospfd.c:2022,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:2028,1
    - Dst: ospf_nbr_new
      Src: /src/frr/ospfd/ospfd.c:2030,1
    - Dst: ospf_neighbor_bfd_apply
      Src: /src/frr/ospfd/ospfd.c:2040,1
    - Dst: OSPF_NSM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospfd.c:2042,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - nbr_nbma
    - oi
    argTypes:
    - struct ospf_nbr_nbma*
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 1998
    functionDepth: 2
    functionLinenumber: 1998
    functionLinenumberEnd: 2044
    functionName: ospf_nbr_nbma_add
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - listnode_add
    - OSPF_NSM_EVENT_EXECUTE
    - IPV4_ADDR_SAME
    - route_node_get
    - ospf_neighbor_bfd_apply
    - ospf_nbr_new
    linkageType: ''
    returnType: void
    signature: "void ospf_nbr_nbma_add(struct ospf_nbr_nbma *nbr_nbma,\n\t\t\t      struct
      ospf_interface *oi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospfd.c:2055,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospfd.c:2055,1
    - Dst: prefix_match
      Src: /src/frr/ospfd/ospfd.c:2062,1
    - Dst: ospf_nbr_nbma_add
      Src: /src/frr/ospfd/ospfd.c:2064,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - ospf
    - oi
    argTypes:
    - struct ospf*
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2046
    functionDepth: 3
    functionLinenumber: 2046
    functionLinenumberEnd: 2066
    functionName: ospf_nbr_nbma_if_update
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - prefix_match
    - route_top
    - ospf_nbr_nbma_add
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_nbr_nbma_if_update(struct ospf *ospf, struct ospf_interface
      *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospfd.c:2078,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:2080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ospf
    - nbr_addr
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2068
    functionDepth: 1
    functionLinenumber: 2068
    functionLinenumberEnd: 2084
    functionName: ospf_nbr_nbma_lookup
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    linkageType: ''
    returnType: struct ospf_nbr_nbma
    signature: "struct ospf_nbr_nbma *ospf_nbr_nbma_lookup(struct ospf *ospf,\n\t\t\t\t\t
      \  struct in_addr nbr_addr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_nbma_lookup
      Src: /src/frr/ospfd/ospfd.c:2094,1
    - Dst: ospf_nbr_nbma_new
      Src: /src/frr/ospfd/ospfd.c:2098,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospfd.c:2105,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospfd.c:2107,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospfd.c:2110,1
    - Dst: prefix_match
      Src: /src/frr/ospfd/ospfd.c:2112,1
    - Dst: ospf_nbr_nbma_add
      Src: /src/frr/ospfd/ospfd.c:2113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ospf
    - nbr_addr
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2119
      start: 2086
    functionDepth: 3
    functionLinenumber: 2086
    functionLinenumberEnd: 2119
    functionName: ospf_nbr_nbma_set
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - ospf_nbr_nbma_add
    - route_node_get
    - ospf_nbr_nbma_lookup
    - ospf_nbr_nbma_new
    linkageType: ''
    returnType: int
    signature: int ospf_nbr_nbma_set(struct ospf *ospf, struct in_addr nbr_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_nbma_lookup
      Src: /src/frr/ospfd/ospfd.c:2125,1
    - Dst: ospf_nbr_nbma_down
      Src: /src/frr/ospfd/ospfd.c:2129,1
    - Dst: ospf_nbr_nbma_delete
      Src: /src/frr/ospfd/ospfd.c:2130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ospf
    - nbr_addr
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2133
      start: 2121
    functionDepth: 2
    functionLinenumber: 2121
    functionLinenumberEnd: 2133
    functionName: ospf_nbr_nbma_unset
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_nbr_nbma_delete
    - ospf_nbr_nbma_lookup
    - ospf_nbr_nbma_down
    linkageType: ''
    returnType: int
    signature: int ospf_nbr_nbma_unset(struct ospf *ospf, struct in_addr nbr_addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_nbma_lookup
      Src: /src/frr/ospfd/ospfd.c:2140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ospf
    - nbr_addr
    - priority
    argTypes:
    - struct ospf*
    - struct in_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2148
      start: 2135
    functionDepth: 2
    functionLinenumber: 2135
    functionLinenumberEnd: 2148
    functionName: ospf_nbr_nbma_priority_set
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_nbr_nbma_lookup
    linkageType: ''
    returnType: int
    signature: "int ospf_nbr_nbma_priority_set(struct ospf *ospf, struct in_addr nbr_addr,\n\t\t\t
      \      uint8_t priority)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_nbma_lookup
      Src: /src/frr/ospfd/ospfd.c:2154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ospf
    - nbr_addr
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2150
    functionDepth: 2
    functionLinenumber: 2150
    functionLinenumberEnd: 2162
    functionName: ospf_nbr_nbma_priority_unset
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_nbr_nbma_lookup
    linkageType: ''
    returnType: int
    signature: int ospf_nbr_nbma_priority_unset(struct ospf *ospf, struct in_addr
      nbr_addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_nbma_lookup
      Src: /src/frr/ospfd/ospfd.c:2169,1
    - Dst: ospf_if_is_up
      Src: /src/frr/ospfd/ospfd.c:2175,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:2176,1
    - Dst: OSPF_POLL_TIMER_ON
      Src: /src/frr/ospfd/ospfd.c:2177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ospf
    - nbr_addr
    - interval
    argTypes:
    - struct ospf*
    - struct in_addr
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2164
    functionDepth: 2
    functionLinenumber: 2164
    functionLinenumberEnd: 2183
    functionName: ospf_nbr_nbma_poll_interval_set
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - ospf_if_is_up
    - ospf_nbr_nbma_lookup
    - OSPF_POLL_TIMER_ON
    linkageType: ''
    returnType: int
    signature: "int ospf_nbr_nbma_poll_interval_set(struct ospf *ospf, struct in_addr
      nbr_addr,\n\t\t\t\t    unsigned int interval)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_nbma_lookup
      Src: /src/frr/ospfd/ospfd.c:2189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ospf
    - addr
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2185
    functionDepth: 2
    functionLinenumber: 2185
    functionLinenumberEnd: 2197
    functionName: ospf_nbr_nbma_poll_interval_unset
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_nbr_nbma_lookup
    linkageType: ''
    returnType: int
    signature: int ospf_nbr_nbma_poll_interval_unset(struct ospf *ospf, struct in_addr
      addr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_sock_bufsize_update
      Src: /src/frr/ospfd/ospfd.c:2222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ospf
    - recvsize
    - sendsize
    argTypes:
    - struct ospf*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2223
      start: 2202
    functionDepth: 2
    functionLinenumber: 2202
    functionLinenumberEnd: 2223
    functionName: ospf_update_bufsize
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_sock_bufsize_update
    linkageType: ''
    returnType: void
    signature: "void ospf_update_bufsize(struct ospf *ospf, uint32_t recvsize,\n\t\t\t
      uint32_t sendsize)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospfd.c:2227,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospfd.c:2230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2225
    functionDepth: 1
    functionLinenumber: 2225
    functionLinenumberEnd: 2232
    functionName: ospf_master_init
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 2
    functionsReached:
    - list_new
    - memset
    linkageType: ''
    returnType: void
    signature: void ospf_master_init(struct event_loop *master)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf
    - vrf
    argTypes:
    - struct ospf*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2235
    functionDepth: 0
    functionLinenumber: 2235
    functionLinenumberEnd: 2240
    functionName: ospf_vrf_link
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_vrf_link(struct ospf *ospf, struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf
    - vrf
    argTypes:
    - struct ospf*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2243
    functionDepth: 0
    functionLinenumber: 2243
    functionLinenumberEnd: 2248
    functionName: ospf_vrf_unlink
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_vrf_unlink(struct ospf *ospf, struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:2254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2258
      start: 2251
    functionDepth: 1
    functionLinenumber: 2251
    functionLinenumberEnd: 2258
    functionName: ospf_vrf_new
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int ospf_vrf_new(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:2264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2268
      start: 2261
    functionDepth: 1
    functionLinenumber: 2261
    functionLinenumberEnd: 2268
    functionName: ospf_vrf_delete
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int ospf_vrf_delete(struct vrf *vrf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:2280,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/ospfd/ospfd.c:2284,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/ospfd/ospfd.c:2287,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/ospfd/ospfd.c:2294,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/ospfd/ospfd.c:2297,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - ospf
    - set
    argTypes:
    - struct ospf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2270
    functionDepth: 1
    functionLinenumber: 2270
    functionLinenumberEnd: 2300
    functionName: ospf_set_redist_vrf_bitmaps
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - vrf_bitmap_set
    - vrf_bitmap_unset
    linkageType: ''
    returnType: void
    signature: void ospf_set_redist_vrf_bitmaps(struct ospf *ospf, bool set)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:2310,1
    - Dst: ospf_lookup_by_name
      Src: /src/frr/ospfd/ospfd.c:2313,1
    - Dst: ospf_vrf_link
      Src: /src/frr/ospfd/ospfd.c:2317,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:2319,1
    - Dst: ospf_set_redist_vrf_bitmaps
      Src: /src/frr/ospfd/ospfd.c:2324,1
    - Dst: ospf_zebra_vrf_register
      Src: /src/frr/ospfd/ospfd.c:2327,1
    - Dst: ospf_sock_init
      Src: /src/frr/ospfd/ospfd.c:2329,1
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospfd.c:2332,1
    - Dst: ospf_router_id_update
      Src: /src/frr/ospfd/ospfd.c:2335,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2303
    functionDepth: 3
    functionLinenumber: 2303
    functionLinenumberEnd: 2340
    functionName: ospf_vrf_enable
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - ospf_set_redist_vrf_bitmaps
    - ospf_sock_init
    - zlog_debug
    - ospf_zebra_vrf_register
    - ospf_vrf_link
    - ospf_lookup_by_name
    - ospf_router_id_update
    linkageType: ''
    returnType: int
    signature: int ospf_vrf_enable(struct vrf *vrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:2352,1
    - Dst: ospf_lookup_by_name
      Src: /src/frr/ospfd/ospfd.c:2355,1
    - Dst: ospf_zebra_vrf_deregister
      Src: /src/frr/ospfd/ospfd.c:2359,1
    - Dst: ospf_set_redist_vrf_bitmaps
      Src: /src/frr/ospfd/ospfd.c:2361,1
    - Dst: ospf_vrf_unlink
      Src: /src/frr/ospfd/ospfd.c:2366,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospfd.c:2369,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospfd.c:2371,1
    - Dst: close
      Src: /src/frr/ospfd/ospfd.c:2372,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2378
      start: 2343
    functionDepth: 2
    functionLinenumber: 2343
    functionLinenumberEnd: 2378
    functionName: ospf_vrf_disable
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - ospf_vrf_unlink
    - close
    - zlog_debug
    - EVENT_OFF
    - ospf_zebra_vrf_deregister
    - ospf_set_redist_vrf_bitmaps
    - ospf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int ospf_vrf_disable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/ospfd/ospfd.c:2382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2380
    functionDepth: 1
    functionLinenumber: 2380
    functionLinenumberEnd: 2384
    functionName: ospf_vrf_init
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 2
    functionsReached:
    - vrf_init
    linkageType: ''
    returnType: void
    signature: void ospf_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_terminate
      Src: /src/frr/ospfd/ospfd.c:2388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2389
      start: 2386
    functionDepth: 1
    functionLinenumber: 2386
    functionLinenumberEnd: 2389
    functionName: ospf_vrf_terminate
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached:
    - vrf_terminate
    linkageType: ''
    returnType: void
    signature: void ospf_vrf_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospfd.c:2393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2391
    functionDepth: 1
    functionLinenumber: 2391
    functionLinenumberEnd: 2396
    functionName: ospf_vrf_id_to_name
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 3
    functionsReached:
    - vrf_lookup_by_id
    linkageType: ''
    returnType: char
    signature: char *ospf_vrf_id_to_name(vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2398
    functionDepth: 0
    functionLinenumber: 2398
    functionLinenumberEnd: 2404
    functionName: ospf_get_name
    functionSourceFile: /src/frr/ospfd/ospfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ospf_get_name(const struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: ISM_SNMP
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISM_SNMP(x)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:510,1
    - Dst: ospfGeneralGroup
      Src: /src/frr/ospfd/ospf_snmp.c:517,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:523,1
    - Dst: smux_header_generic
      Src: /src/frr/ospfd/ospf_snmp.c:526,1
    - Dst: OSPFROUTERID
      Src: /src/frr/ospfd/ospf_snmp.c:532,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:535,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:537,1
    - Dst: OSPFADMINSTAT
      Src: /src/frr/ospfd/ospf_snmp.c:538,1
    - Dst: ospf_admin_stat
      Src: /src/frr/ospfd/ospf_snmp.c:540,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:541,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:543,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:546,1
    - Dst: OSPFAREABDRRTRSTATUS
      Src: /src/frr/ospfd/ospf_snmp.c:547,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_snmp.c:549,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:550,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:552,1
    - Dst: OSPFASBDRRTRSTATUS
      Src: /src/frr/ospfd/ospf_snmp.c:553,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_snmp.c:555,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:556,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:558,1
    - Dst: OSPFEXTERNLSACOUNT
      Src: /src/frr/ospfd/ospf_snmp.c:559,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:562,1
    - Dst: ospf_lsdb_count_all
      Src: /src/frr/ospfd/ospf_snmp.c:562,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:564,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:567,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:570,1
    - Dst: OSPFORIGINATENEWLSAS
      Src: /src/frr/ospfd/ospf_snmp.c:571,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:574,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:576,1
    - Dst: OSPFRXNEWLSAS
      Src: /src/frr/ospfd/ospf_snmp.c:577,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:581,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:583,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:587,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:590,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:593,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:596,1
    - Dst: ospf_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:604,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_snmp.c:613,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_snmp.c:615,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:621,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:622,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:622,1
    - Dst: ospfAreaLookup
      Src: /src/frr/ospfd/ospf_snmp.c:630,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:638,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:647,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_snmp.c:649,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:657,1
    - Dst: ospf_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:659,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:664,1
    - Dst: ospfAreaEntry
      Src: /src/frr/ospfd/ospf_snmp.c:672,1
    - Dst: in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:677,1
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:679,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:683,1
    - Dst: ospfAreaLookup
      Src: /src/frr/ospfd/ospf_snmp.c:685,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:692,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:694,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:696,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:698,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:700,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:702,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:704,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:706,1
    - Dst: OSPF_sendAreaSummary
      Src: /src/frr/ospfd/ospf_snmp.c:709,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:711,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:713,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:715,1
    - Dst: ospf_stub_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:722,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:729,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:733,1
    - Dst: area
      Src: /src/frr/ospfd/ospf_snmp.c:737,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:738,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:739,1
    - Dst: ospfStubAreaLookup
      Src: /src/frr/ospfd/ospf_snmp.c:748,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:756,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:770,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_snmp.c:772,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:783,1
    - Dst: ospf_stub_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:785,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:790,1
    - Dst: ospfStubAreaEntry
      Src: /src/frr/ospfd/ospf_snmp.c:800,1
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:807,1
    - Dst: ospfStubAreaLookup
      Src: /src/frr/ospfd/ospf_snmp.c:813,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:821,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:824,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:827,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:830,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:836,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 502
    functionDepth: 11
    functionLinenumber: 502
    functionLinenumberEnd: 841
    functionName: ospf_admin_stat
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 1
    functionsReached:
    - OSPFEXTERNLSACOUNT
    - listhead
    - OSPF_sendAreaSummary
    - area
    - OSPFAREABDRRTRSTATUS
    - OSPFORIGINATENEWLSAS
    - ospf_admin_stat
    - ospfAreaEntry
    - ospf_lookup_by_vrf_id
    - memset
    - ALL_LIST_ELEMENTS_RO
    - OSPFASBDRRTRSTATUS
    - in_addr
    - ospfStubAreaLookup
    - SNMP_INTEGER
    - listgetdata
    - SNMP_IPADDRESS
    - OSPFRXNEWLSAS
    - ospfGeneralGroup
    - ntohl
    - ospfAreaLookup
    - OSPFADMINSTAT
    - ospfStubAreaEntry
    - smux_header_table
    - OSPFROUTERID
    - oid2in_addr
    - ospf_area_lookup_next
    - smux_header_generic
    - ospf_area_lookup_by_area_id
    - ospf_stub_area_lookup_next
    - CHECK_FLAG
    - ospf_lsdb_count_all
    - oid_copy_in_addr
    linkageType: ''
    returnType: int
    signature: int ospf_admin_stat(struct ospf *ospf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_snmp.c:860,1
    - Dst: ospf_lsdb_lookup_by_id_next
      Src: /src/frr/ospfd/ospf_snmp.c:867,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 7
    argNames:
    - area
    - type
    - type_next
    - ls_id
    - ls_id_next
    - router_id
    - router_id_next
    argTypes:
    - struct ospf_area*
    - uint8_t*
    - int
    - struct in_addr*
    - int
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 875
    functionName: lsdb_lookup_next
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf_lsdb_lookup_by_id_next
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *lsdb_lookup_next(struct ospf_area *area, uint8_t
      *type,\n\t\t\t\t\t int type_next, struct in_addr *ls_id,\n\t\t\t\t\t int ls_id_next,\n\t\t\t\t\t
      struct in_addr *router_id,\n\t\t\t\t\t int router_id_next)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:892,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:905,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_snmp.c:906,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:916,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:920,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_snmp.c:923,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:934,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_snmp.c:938,1
    - Dst: ospf_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:940,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:970,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:985,1
    - Dst: lsdb_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:988,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:998,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1002,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1004,1
    - Dst: ospf_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:1009,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 74
    argCount: 8
    argNames:
    - v
    - name
    - length
    - area_id
    - type
    - ls_id
    - router_id
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - uint8_t*
    - struct in_addr*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 877
    functionDepth: 11
    functionLinenumber: 877
    functionLinenumberEnd: 1013
    functionName: ospfLsdbLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospf_area_lookup_by_area_id
    - ospf_lookup_by_vrf_id
    - oid2in_addr
    - lsdb_lookup_next
    - ospf_area_lookup_next
    - oid_copy_in_addr
    - ospf_lsdb_lookup_by_id
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospfLsdbLookup(struct variable *v, oid *name,\n\t\t\t\t
      \      size_t *length, struct in_addr *area_id,\n\t\t\t\t       uint8_t *type,
      struct in_addr *ls_id,\n\t\t\t\t       struct in_addr *router_id, int exact)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:1027,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1034,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1036,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1037,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1040,1
    - Dst: ospfLsdbLookup
      Src: /src/frr/ospfd/ospf_snmp.c:1044,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1054,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1056,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1058,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1060,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1062,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1064,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1066,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_snmp.c:1068,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1015
    functionDepth: 12
    functionLinenumber: 1015
    functionLinenumberEnd: 1074
    functionName: ospfLsdbEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ospfLsdbLookup
    - ospf_lookup_by_vrf_id
    - memset
    - ntohs
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfLsdbEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t
      \     int exact, size_t *var_len,\n\t\t\t      WriteMethod **write_method)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1092,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1103,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_snmp.c:1105,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1112,1
    - Dst: ospf_area_range_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:1115,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1125,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_snmp.c:1129,1
    - Dst: ospf_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:1131,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1147,1
    - Dst: ospf_area_range_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:1149,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1159,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1161,1
    - Dst: ospf_area_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:1165,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 6
    argNames:
    - v
    - name
    - length
    - area_id
    - range_net
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1076
    functionDepth: 11
    functionLinenumber: 1076
    functionLinenumberEnd: 1169
    functionName: ospfAreaRangeLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospf_area_lookup_by_area_id
    - ospf_lookup_by_vrf_id
    - oid2in_addr
    - oid_copy_in_addr
    - ospf_area_range_lookup_next
    - ospf_area_range_lookup
    - ospf_area_lookup_next
    linkageType: ''
    returnType: struct ospf_area_range
    signature: "struct ospf_area_range *ospfAreaRangeLookup(struct variable *v,\n\t\t\t\t\t\t
      \  oid *name, size_t *length,\n\t\t\t\t\t\t   struct in_addr *area_id,\n\t\t\t\t\t\t
      \  struct in_addr *range_net,\n\t\t\t\t\t\t   int exact)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:1181,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1186,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1190,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1191,1
    - Dst: ospfAreaRangeLookup
      Src: /src/frr/ospfd/ospf_snmp.c:1193,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_snmp.c:1199,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1204,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1206,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1208,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1210,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1171
    functionDepth: 12
    functionLinenumber: 1171
    functionLinenumberEnd: 1219
    functionName: ospfAreaRangeEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ospf_lookup_by_vrf_id
    - memset
    - masklen2ip
    - ospfAreaRangeLookup
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfAreaRangeEntry(struct variable *v, oid *name,\n\t\t\t\t
      \  size_t *length, int exact, size_t *var_len,\n\t\t\t\t   WriteMethod **write_method)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1228,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1241,1
    - Dst: ospf_nbr_nbma_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:1243,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 5
    argNames:
    - v
    - name
    - length
    - addr
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1221
    functionDepth: 2
    functionLinenumber: 1221
    functionLinenumberEnd: 1249
    functionName: ospfHostLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - oid2in_addr
    - ospf_nbr_nbma_lookup
    - ospf_lookup_by_vrf_id
    linkageType: ''
    returnType: struct ospf_nbr_nbma
    signature: "struct ospf_nbr_nbma *ospfHostLookup(struct variable *v, oid *name,\n\t\t\t\t\t
      \   size_t *length,\n\t\t\t\t\t    struct in_addr *addr, int exact)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:1260,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1265,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1269,1
    - Dst: ospfHostLookup
      Src: /src/frr/ospfd/ospf_snmp.c:1271,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1280,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1282,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1285,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1287,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1289,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1292,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1294,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1251
    functionDepth: 3
    functionLinenumber: 1251
    functionLinenumberEnd: 1299
    functionName: ospfHostEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ospfHostLookup
    - ospf_lookup_by_vrf_id
    - memset
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfHostEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t
      \     int exact, size_t *var_len,\n\t\t\t      WriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_snmp.c:1311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1309
    functionDepth: 0
    functionLinenumber: 1309
    functionLinenumberEnd: 1312
    functionName: ospf_snmp_if_new
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ospf_snmp_if
    signature: struct ospf_snmp_if *ospf_snmp_if_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_snmp.c:1316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - osif
    argTypes:
    - struct ospf_snmp_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1314
    functionDepth: 0
    functionLinenumber: 1314
    functionLinenumberEnd: 1317
    functionName: ospf_snmp_if_free
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_snmp_if_free(struct ospf_snmp_if *osif)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_snmp.c:1324,1
    - Dst: list_delete_node
      Src: /src/frr/ospfd/ospf_snmp.c:1326,1
    - Dst: ospf_snmp_if_free
      Src: /src/frr/ospfd/ospf_snmp.c:1327,1
    - Dst: ospf_snmp_if_delete
      Src: /src/frr/ospfd/ospf_snmp.c:1344,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_snmp.c:1351,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:1351,1
    - Dst: CONNECTED_ID
      Src: /src/frr/ospfd/ospf_snmp.c:1352,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_snmp.c:1354,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:1364,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:1368,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:1368,1
    - Dst: listnode_add_after
      Src: /src/frr/ospfd/ospf_snmp.c:1393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1319
    functionDepth: 1
    functionLinenumber: 1319
    functionLinenumberEnd: 1395
    functionName: ospf_snmp_if_delete
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 1
    functionsReached:
    - CONNECTED_ID
    - listnode_add_after
    - ALL_LIST_ELEMENTS_RO
    - ospf_snmp_if_delete
    - list_delete_node
    - ospf_snmp_if_free
    - if
    - ALL_LIST_ELEMENTS
    - for
    - ntohl
    linkageType: ''
    returnType: int
    signature: int ospf_snmp_if_delete(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:1403,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/ospfd/ospf_snmp.c:1404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1397
    functionDepth: 1
    functionLinenumber: 1397
    functionLinenumberEnd: 1409
    functionName: ospf_snmp_is_if_have_addr
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - CONNECTED_PREFIX
    linkageType: ''
    returnType: int
    signature: int ospf_snmp_is_if_have_addr(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1417,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:1419,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_snmp.c:1421,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1422,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ifaddr
    - ifindex
    argTypes:
    - struct in_addr*
    - ifindex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1411
    functionDepth: 1
    functionLinenumber: 1411
    functionLinenumberEnd: 1431
    functionName: ospf_snmp_if_lookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospf_if_lookup_by_local_addr
    - IPV4_ADDR_SAME
    - ALL_LIST_ELEMENTS_RO
    - ospf_lookup_by_vrf_id
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *ospf_snmp_if_lookup(struct in_addr *ifaddr,\n\t\t\t\t\t\t
      \ ifindex_t *ifindex)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1440,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:1448,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_snmp.c:1449,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1457,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_snmp.c:1459,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:1466,1
    - Dst: ospf_snmp_is_if_have_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1473,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:1474,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:1475,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - ifaddr
    - ifindex
    - ifaddr_next
    - ifindex_next
    argTypes:
    - struct in_addr*
    - ifindex_t*
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1433
    functionDepth: 2
    functionLinenumber: 1433
    functionLinenumberEnd: 1485
    functionName: ospf_snmp_if_lookup_next
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospf_lookup_by_vrf_id
    - ospf_snmp_is_if_have_addr
    - ALL_LIST_ELEMENTS_RO
    - ospf_if_lookup_by_local_addr
    - listgetdata
    - if
    - ntohl
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *ospf_snmp_if_lookup_next(struct in_addr *ifaddr,\n\t\t\t\t\t\t
      \      ifindex_t *ifindex,\n\t\t\t\t\t\t       int ifaddr_next,\n\t\t\t\t\t\t
      \      ifindex_t ifindex_next)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_broadcast
      Src: /src/frr/ospfd/ospf_snmp.c:1513,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ospfd/ospf_snmp.c:1515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1507
    functionDepth: 0
    functionLinenumber: 1507
    functionLinenumberEnd: 1518
    functionName: ospf_snmp_iftype
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - if_is_pointopoint
    linkageType: ''
    returnType: int
    signature: int ospf_snmp_iftype(struct interface *ifp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1535,1
    - Dst: ospf_snmp_if_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:1538,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1546,1
    - Dst: ospf_snmp_if_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:1557,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1562,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 6
    argNames:
    - v
    - name
    - length
    - ifaddr
    - ifindex
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - ifindex_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1520
    functionDepth: 3
    functionLinenumber: 1520
    functionLinenumberEnd: 1569
    functionName: ospfIfLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - oid2in_addr
    - oid_copy_in_addr
    - ospf_snmp_if_lookup
    - ospf_snmp_if_lookup_next
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *ospfIfLookup(struct variable *v, oid *name,\n\t\t\t\t\t
      \  size_t *length,\n\t\t\t\t\t   struct in_addr *ifaddr,\n\t\t\t\t\t   ifindex_t
      *ifindex, int exact)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:1580,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1585,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1588,1
    - Dst: ospfIfLookup
      Src: /src/frr/ospfd/ospf_snmp.c:1592,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1599,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1601,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1604,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1606,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1608,1
    - Dst: ospf_snmp_iftype
      Src: /src/frr/ospfd/ospf_snmp.c:1608,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1611,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1613,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1615,1
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_snmp.c:1615,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1617,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1617,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1619,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1619,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1621,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1621,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1623,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1623,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1625,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1627,1
    - Dst: ISM_SNMP
      Src: /src/frr/ospfd/ospf_snmp.c:1627,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1629,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_snmp.c:1629,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1631,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_snmp.c:1631,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1633,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1636,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1638,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1643,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1645,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1648,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1650,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 63
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1571
    functionDepth: 4
    functionLinenumber: 1571
    functionLinenumberEnd: 1655
    functionName: ospfIfEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospfIfLookup
    - smux_header_table
    - DR
    - ospf_lookup_by_vrf_id
    - memset
    - PRIORITY
    - OSPF_IF_PARAM
    - BDR
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    - ospf_snmp_iftype
    - ISM_SNMP
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfIfEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t
      \   int exact, size_t *var_len,\n\t\t\t    WriteMethod **write_method)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1675,1
    - Dst: ospf_snmp_if_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:1682,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1690,1
    - Dst: ospf_snmp_if_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:1701,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1706,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 6
    argNames:
    - v
    - name
    - length
    - ifaddr
    - ifindex
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - ifindex_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1659
    functionDepth: 3
    functionLinenumber: 1659
    functionLinenumberEnd: 1715
    functionName: ospfIfMetricLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - oid2in_addr
    - oid_copy_in_addr
    - ospf_snmp_if_lookup
    - ospf_snmp_if_lookup_next
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *ospfIfMetricLookup(struct variable *v, oid
      *name,\n\t\t\t\t\t\t size_t *length,\n\t\t\t\t\t\t struct in_addr *ifaddr,\n\t\t\t\t\t\t
      ifindex_t *ifindex, int exact)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:1727,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1732,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1735,1
    - Dst: ospfIfMetricLookup
      Src: /src/frr/ospfd/ospf_snmp.c:1739,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1746,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1748,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1750,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1752,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1717
    functionDepth: 4
    functionLinenumber: 1717
    functionLinenumberEnd: 1759
    functionName: ospfIfMetricEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ospf_lookup_by_vrf_id
    - ospfIfMetricLookup
    - memset
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfIfMetricEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t\t
      \ int exact, size_t *var_len,\n\t\t\t\t  WriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1768,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_snmp.c:1774,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_snmp.c:1776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - vl_data
    argTypes:
    - struct ospf_vl_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1763
    functionDepth: 1
    functionLinenumber: 1763
    functionLinenumberEnd: 1780
    functionName: ospf_snmp_vl_add
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_get
    - memset
    linkageType: ''
    returnType: int
    signature: int ospf_snmp_vl_add(struct ospf_vl_data *vl_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1787,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:1793,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_snmp.c:1797,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_snmp.c:1798,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - vl_data
    argTypes:
    - struct ospf_vl_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1782
    functionDepth: 1
    functionLinenumber: 1782
    functionLinenumberEnd: 1800
    functionName: ospf_snmp_vl_delete
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - memset
    linkageType: ''
    returnType: int
    signature: int ospf_snmp_vl_delete(struct ospf_vl_data *vl_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1809,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:1815,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_snmp.c:1818,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - area_id
    - neighbor
    argTypes:
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1802
    functionDepth: 1
    functionLinenumber: 1802
    functionLinenumberEnd: 1822
    functionName: ospf_snmp_vl_lookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - memset
    linkageType: ''
    returnType: struct ospf_vl_data
    signature: "struct ospf_vl_data *ospf_snmp_vl_lookup(struct in_addr *area_id,\n\t\t\t\t\t\tstruct
      in_addr *neighbor)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1832,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_snmp.c:1839,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_snmp.c:1841,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_snmp.c:1842,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_snmp.c:1845,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_snmp.c:1853,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - area_id
    - neighbor
    - first
    argTypes:
    - struct in_addr*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1824
    functionDepth: 1
    functionLinenumber: 1824
    functionLinenumberEnd: 1857
    functionName: ospf_snmp_vl_lookup_next
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - memset
    - route_top
    - route_next
    - route_node_get
    linkageType: ''
    returnType: struct ospf_vl_data
    signature: "struct ospf_vl_data *ospf_snmp_vl_lookup_next(struct in_addr *area_id,\n\t\t\t\t\t\t
      \    struct in_addr *neighbor,\n\t\t\t\t\t\t     int first)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1871,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1872,1
    - Dst: ospf_snmp_vl_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:1875,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1884,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1889,1
    - Dst: ospf_snmp_vl_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:1891,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1895,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:1896,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 6
    argNames:
    - v
    - name
    - length
    - area_id
    - neighbor
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1859
    functionDepth: 2
    functionLinenumber: 1859
    functionLinenumberEnd: 1902
    functionName: ospfVirtIfLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - oid2in_addr
    - oid_copy_in_addr
    - ospf_snmp_vl_lookup_next
    - ospf_snmp_vl_lookup
    linkageType: ''
    returnType: struct ospf_vl_data
    signature: "struct ospf_vl_data *\nospfVirtIfLookup(struct variable *v, oid *name,
      size_t *length,\n\t\t struct in_addr *area_id, struct in_addr *neighbor, int
      exact)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:1913,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1917,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:1918,1
    - Dst: ospfVirtIfLookup
      Src: /src/frr/ospfd/ospf_snmp.c:1920,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1930,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:1932,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1934,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1934,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1936,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1936,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1938,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1938,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1940,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1940,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1942,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1944,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_snmp.c:1947,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1949,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1952,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:1954,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1904
    functionDepth: 3
    functionLinenumber: 1904
    functionLinenumberEnd: 1959
    functionName: ospfVirtIfEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - memset
    - OSPF_IF_PARAM
    - ospfVirtIfLookup
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfVirtIfEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t\tint
      exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_snmp.c:1970,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_snmp.c:1971,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_snmp.c:1971,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_snmp.c:1978,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_snmp.c:1979,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - ospf
    - nbr_addr
    - ifindex
    argTypes:
    - struct ospf*
    - struct in_addr*
    - ifindex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1961
    functionDepth: 1
    functionLinenumber: 1961
    functionLinenumberEnd: 1983
    functionName: ospf_snmp_nbr_lookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_top
    - route_next
    - IPV4_ADDR_SAME
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_snmp_nbr_lookup(struct ospf *ospf,\n\t\t\t\t\t\t
      \ struct in_addr *nbr_addr,\n\t\t\t\t\t\t  ifindex_t *ifindex)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:1998,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_snmp.c:2000,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_snmp.c:2001,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_snmp.c:2001,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:2008,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:2009,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:2011,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:2012,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:2015,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_snmp.c:2016,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 3
    argNames:
    - nbr_addr
    - ifindex
    - first
    argTypes:
    - struct in_addr*
    - ifindex_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2020
      start: 1987
    functionDepth: 1
    functionLinenumber: 1987
    functionLinenumberEnd: 2020
    functionName: ospf_snmp_nbr_lookup_next
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospf_lookup_by_vrf_id
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - route_next
    - ntohl
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_snmp_nbr_lookup_next(struct in_addr *nbr_addr,\n\t\t\t\t\t\t
      \      ifindex_t *ifindex,\n\t\t\t\t\t\t       int first)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:2039,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2048,1
    - Dst: ospf_snmp_nbr_lookup
      Src: /src/frr/ospfd/ospf_snmp.c:2051,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2062,1
    - Dst: ospf_snmp_nbr_lookup_next
      Src: /src/frr/ospfd/ospf_snmp.c:2068,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2072,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 6
    argNames:
    - v
    - name
    - length
    - nbr_addr
    - ifindex
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - struct in_addr*
    - ifindex_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2029
    functionDepth: 2
    functionLinenumber: 2029
    functionLinenumberEnd: 2078
    functionName: ospfNbrLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospf_lookup_by_vrf_id
    - oid2in_addr
    - ospf_snmp_nbr_lookup_next
    - ospf_snmp_nbr_lookup
    - oid_copy_in_addr
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospfNbrLookup(struct variable *v, oid *name,\n\t\t\t\t\t
      \  size_t *length,\n\t\t\t\t\t   struct in_addr *nbr_addr,\n\t\t\t\t\t   ifindex_t
      *ifindex, int exact)"
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - nst
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2094
    functionDepth: 0
    functionLinenumber: 2094
    functionLinenumberEnd: 2114
    functionName: ospf_snmp_neighbor_state
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int32_t
    signature: int32_t ospf_snmp_neighbor_state(uint8_t nst)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:2125,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:2129,1
    - Dst: ospfNbrLookup
      Src: /src/frr/ospfd/ospf_snmp.c:2132,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:2140,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2142,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:2144,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2146,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2148,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2150,1
    - Dst: ospf_snmp_neighbor_state
      Src: /src/frr/ospfd/ospf_snmp.c:2150,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2152,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2154,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_snmp.c:2154,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2156,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2158,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2165
      start: 2116
    functionDepth: 3
    functionLinenumber: 2116
    functionLinenumberEnd: 2165
    functionName: ospfNbrEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ospf_snmp_neighbor_state
    - memset
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    - ospf_ls_retransmit_count
    - ospfNbrLookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfNbrEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t
      \    int exact, size_t *var_len,\n\t\t\t     WriteMethod **write_method)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:2176,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:2180,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:2181,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:2184,1
    - Dst: ospfVirtIfLookup
      Src: /src/frr/ospfd/ospf_snmp.c:2188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2214
      start: 2167
    functionDepth: 3
    functionLinenumber: 2167
    functionLinenumberEnd: 2214
    functionName: ospfVirtNbrEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ospfVirtIfLookup
    - ospf_lookup_by_vrf_id
    - memset
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfVirtNbrEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t\t
      int exact, size_t *var_len,\n\t\t\t\t WriteMethod **write_method)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:2229,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2244,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2248,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_snmp.c:2250,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2271,1
    - Dst: oid2in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2281,1
    - Dst: ospf_lsdb_lookup_by_id_next
      Src: /src/frr/ospfd/ospf_snmp.c:2283,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2295,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2297,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 7
    argNames:
    - v
    - name
    - length
    - type
    - ls_id
    - router_id
    - exact
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - uint8_t*
    - struct in_addr*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2303
      start: 2216
    functionDepth: 2
    functionLinenumber: 2216
    functionLinenumberEnd: 2303
    functionName: ospfExtLsdbLookup
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospf_lookup_by_vrf_id
    - oid2in_addr
    - oid_copy_in_addr
    - ospf_lsdb_lookup_by_id
    - ospf_lsdb_lookup_by_id_next
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospfExtLsdbLookup(struct variable *v, oid *name,\n\t\t\t\t\t
      \ size_t *length, uint8_t *type,\n\t\t\t\t\t  struct in_addr *ls_id,\n\t\t\t\t\t
      \ struct in_addr *router_id, int exact)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:2316,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:2321,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_snmp.c:2322,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_snmp.c:2325,1
    - Dst: ospfExtLsdbLookup
      Src: /src/frr/ospfd/ospf_snmp.c:2329,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2339,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:2341,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/ospfd/ospf_snmp.c:2343,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2345,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2347,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ospfd/ospf_snmp.c:2349,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_snmp.c:2351,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 2305
    functionDepth: 3
    functionLinenumber: 2305
    functionLinenumberEnd: 2357
    functionName: ospfExtLsdbEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ospf_lookup_by_vrf_id
    - memset
    - ntohs
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    - ospfExtLsdbLookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfExtLsdbEntry(struct variable *v, oid *name, size_t *length,\n\t\t\t\t
      int exact, size_t *var_len,\n\t\t\t\t WriteMethod **write_method)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ospfd/ospf_snmp.c:2364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2386
      start: 2359
    functionDepth: 1
    functionLinenumber: 2359
    functionLinenumberEnd: 2386
    functionName: ospfAreaAggregateEntry
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ospfAreaAggregateEntry(struct variable *v, oid *name,\n\t\t\t\t
      \      size_t *length, int exact,\n\t\t\t\t       size_t *var_len,\n\t\t\t\t
      \      WriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_ism_state_message
      Src: /src/frr/ospfd/ospf_snmp.c:2422,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_snmp.c:2424,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2427,1
    - Dst: smux_trap
      Src: /src/frr/ospfd/ospf_snmp.c:2430,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2430,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2431,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - 'on'
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2417
    functionDepth: 1
    functionLinenumber: 2417
    functionLinenumberEnd: 2434
    functionName: ospfTrapNbrStateChange
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - smux_trap
    - array_size
    - oid_copy_in_addr
    - ospf_nbr_ism_state_message
    linkageType: ''
    returnType: void
    signature: void ospfTrapNbrStateChange(struct ospf_neighbor *on)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_snmp.c:2440,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2442,1
    - Dst: smux_trap
      Src: /src/frr/ospfd/ospf_snmp.c:2445,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2445,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2446,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - 'on'
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2436
    functionDepth: 1
    functionLinenumber: 2436
    functionLinenumberEnd: 2450
    functionName: ospfTrapVirtNbrStateChange
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - oid_copy_in_addr
    - zlog_info
    - array_size
    - smux_trap
    linkageType: ''
    returnType: void
    signature: void ospfTrapVirtNbrStateChange(struct ospf_neighbor *on)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospfTrapVirtNbrStateChange
      Src: /src/frr/ospfd/ospf_snmp.c:2470,1
    - Dst: ospfTrapNbrStateChange
      Src: /src/frr/ospfd/ospf_snmp.c:2472,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 9
    argCount: 3
    argNames:
    - nbr
    - next_state
    - old_state
    argTypes:
    - struct ospf_neighbor*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2475
      start: 2452
    functionDepth: 2
    functionLinenumber: 2452
    functionLinenumberEnd: 2475
    functionName: ospf_snmp_nsm_change
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospfTrapNbrStateChange
    - ospfTrapVirtNbrStateChange
    linkageType: ''
    returnType: int
    signature: "int ospf_snmp_nsm_change(struct ospf_neighbor *nbr, int next_state,\n\t\t\t\tint
      old_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_snmp.c:2482,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_snmp.c:2484,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2486,1
    - Dst: smux_trap
      Src: /src/frr/ospfd/ospf_snmp.c:2489,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2489,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2490,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2477
    functionDepth: 1
    functionLinenumber: 2477
    functionLinenumberEnd: 2493
    functionName: ospfTrapIfStateChange
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - smux_trap
    - array_size
    - oid_copy_in_addr
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: void ospfTrapIfStateChange(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_snmp.c:2499,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ospfd/ospf_snmp.c:2501,1
    - Dst: smux_trap
      Src: /src/frr/ospfd/ospf_snmp.c:2504,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2504,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2505,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_snmp.c:2507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2509
      start: 2495
    functionDepth: 1
    functionLinenumber: 2495
    functionLinenumberEnd: 2509
    functionName: ospfTrapVirtIfStateChange
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - oid_copy_in_addr
    - zlog_info
    - array_size
    - smux_trap
    linkageType: ''
    returnType: void
    signature: void ospfTrapVirtIfStateChange(struct ospf_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospfTrapVirtIfStateChange
      Src: /src/frr/ospfd/ospf_snmp.c:2519,1
    - Dst: ospfTrapIfStateChange
      Src: /src/frr/ospfd/ospf_snmp.c:2522,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 3
    argNames:
    - oi
    - state
    - old_state
    argTypes:
    - struct ospf_interface*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2525
      start: 2511
    functionDepth: 2
    functionLinenumber: 2511
    functionLinenumberEnd: 2525
    functionName: ospf_snmp_ism_change
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - ospfTrapIfStateChange
    - ospfTrapVirtIfStateChange
    linkageType: ''
    returnType: int
    signature: "int ospf_snmp_ism_change(struct ospf_interface *oi, int state,\n\t\t\t\tint
      old_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_snmp.c:2530,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_snmp.c:2531,1
    - Dst: smux_init
      Src: /src/frr/ospfd/ospf_snmp.c:2532,1
    - Dst: REGISTER_MIB
      Src: /src/frr/ospfd/ospf_snmp.c:2533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2535
      start: 2528
    functionDepth: 1
    functionLinenumber: 2528
    functionLinenumberEnd: 2535
    functionName: ospf_snmp_init
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - route_table_init
    - smux_init
    - REGISTER_MIB
    - list_new
    linkageType: ''
    returnType: int
    signature: int ospf_snmp_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_snmp.c:2539,1
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_snmp.c:2540,1
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_snmp.c:2541,1
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_snmp.c:2542,1
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_snmp.c:2543,1
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_snmp.c:2544,1
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_snmp.c:2546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2537
    functionDepth: 1
    functionLinenumber: 2537
    functionLinenumberEnd: 2548
    functionName: ospf_snmp_module_init
    functionSourceFile: /src/frr/ospfd/ospf_snmp.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int ospf_snmp_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - range_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: SET_RANGE_SIZE
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_RANGE_SIZE(range_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - range_size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: GET_RANGE_SIZE
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_RANGE_SIZE(range_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - label
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: SET_LABEL
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_LABEL(label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - label
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: GET_LABEL
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_LABEL(label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - U
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: SID_LABEL_SIZE
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SID_LABEL_SIZE(U)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - U
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: SID_INDEX_SIZE
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SID_INDEX_SIZE(U)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: osr_debug
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: osr_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - srp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: IS_NO_ROUTE
    functionSourceFile: /src/frr/ospfd/ospf_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NO_ROUTE(srp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - V
    - ','
    - F
    - ','
    - STR
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 19
    functionName: VTY_GET_OSPF_AREA_ID
    functionSourceFile: /src/frr/ospfd/ospf_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_GET_OSPF_AREA_ID(V, F, STR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NAME
    - ','
    - V
    - ','
    - F
    - ','
    - STR
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 35
    functionName: VTY_GET_OSPF_AREA_ID_NO_BB
    functionSourceFile: /src/frr/ospfd/ospf_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_GET_OSPF_AREA_ID_NO_BB(NAME, V, F, STR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: IS_ROUTER_LSA_VIRTUAL
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ROUTER_LSA_VIRTUAL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: IS_ROUTER_LSA_EXTERNAL
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ROUTER_LSA_EXTERNAL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: IS_ROUTER_LSA_BORDER
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ROUTER_LSA_BORDER(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    functionName: IS_ROUTER_LSA_SHORTCUT
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ROUTER_LSA_SHORTCUT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: IS_ROUTER_LSA_NT
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ROUTER_LSA_NT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 206
    functionName: GET_METRIC
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_METRIC(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: IS_EXTERNAL_METRIC
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EXTERNAL_METRIC(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: GET_AGE
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_AGE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: LS_AGE
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LS_AGE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    functionName: IS_LSA_SELF
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LSA_SELF(L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    functionName: IS_LSA_MAXAGE
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LSA_MAXAGE(L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 214
    functionName: IS_LSA_MAX_SEQ
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LSA_MAX_SEQ(L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 221
    functionName: CHECK_LSA_TYPE_1_TO_5_OR_7
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LSA_TYPE_1_TO_5_OR_7(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - o
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: OSPF_FR_CONFIG
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_FR_CONFIG(o, a)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_lsa.h:368,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_lsa.h:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 374
    functionName: ospf_check_indication_lsa
    functionSourceFile: /src/frr/ospfd/ospf_lsa.h
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - GET_METRIC
    linkageType: ''
    returnType: bool
    signature: bool ospf_check_indication_lsa(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ri.c:76,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ri.c:78,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ri.c:83,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ri.c:88,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ri.c:90,1
    - Dst: ospf_router_info_register_vty
      Src: /src/frr/ospfd/ospf_ri.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 99
    functionName: ospf_router_info_init
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - ospf_router_info_register_vty
    - zlog_info
    - list_new
    - memset
    linkageType: ''
    returnType: int
    signature: int ospf_router_info_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ri.c:108,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_ri.c:111,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - scope
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 134
    functionName: ospf_router_info_register
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - ospf_register_opaque_functab
    - zlog_info
    - flog_warn
    linkageType: ''
    returnType: int
    signature: int ospf_router_info_register(uint8_t scope)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ri.c:141,1
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_ri.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: "(\"Unable to unregister Router Info functions: Wrong scope!\"\n\t\t
        \      == NULL)"
      pos:
        line_end: 141
        line_start: 140
        source_file: /src/frr/ospfd/ospf_ri.c
    constantsTouched: []
    func_position:
      end: 151
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 151
    functionName: ospf_router_info_unregister
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - ospf_delete_opaque_functab
    - assert
    linkageType: ''
    returnType: int
    signature: int ospf_router_info_unregister(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ri.c:156,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ri.c:157,1
    - Dst: ospf_router_info_unregister
      Src: /src/frr/ospfd/ospf_ri.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 164
    functionName: ospf_router_info_term
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - list_delete
    - ospf_router_info_unregister
    linkageType: ''
    returnType: void
    signature: void ospf_router_info_term(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_ri.c:172,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:173,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:174,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_ri.c:176,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_ri.c:177,1
    - Dst: del_area_info
      Src: /src/frr/ospfd/ospf_ri.c:182,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ri.c:184,1
    - Dst: del_pce_info
      Src: /src/frr/ospfd/ospf_ri.c:187,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ri.c:189,1
    - Dst: ospf_router_info_get_flooding_scope
      Src: /src/frr/ospfd/ospf_ri.c:193,1
    - Dst: flooding_scope
      Src: /src/frr/ospfd/ospf_ri.c:195,1
    - Dst: lookup_by_area
      Src: /src/frr/ospfd/ospf_ri.c:207,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_ri.c:212,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:213,1
    - Dst: set_router_info_capabilities
      Src: /src/frr/ospfd/ospf_ri.c:224,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:227,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:228,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:229,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:241,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:242,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:245,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:246,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:249,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:250,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:251,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:255,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:256,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:257,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:261,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:262,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:265,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:266,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:281,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:283,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:284,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:285,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:295,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:296,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:297,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:309,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:312,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:312,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:313,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:313,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:314,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:315,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:318,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:331,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:332,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:333,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_ri.c:341,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ri.c:344,1
    - Dst: set_pce_neighbor
      Src: /src/frr/ospfd/ospf_ri.c:348,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:355,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:358,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:358,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:359,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:359,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:360,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:361,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:364,1
    - Dst: unset_pce_neighbor::unset_pce_neighbor
      Src: /src/frr/ospfd/ospf_ri.c:364,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:377,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:378,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:379,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_ri.c:387,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ri.c:390,1
    - Dst: set_pce_cap_flag
      Src: /src/frr/ospfd/ospf_ri.c:394,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:398,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:399,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:400,1
    - Dst: set_sr_algorithm
      Src: /src/frr/ospfd/ospf_ri.c:408,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:416,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:416,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:417,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:417,1
    - Dst: unset_sr_algorithm
      Src: /src/frr/ospfd/ospf_ri.c:421,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_ri.c:424,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:428,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:428,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:429,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:429,1
    - Dst: set_sr_global_label_range
      Src: /src/frr/ospfd/ospf_ri.c:433,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:436,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:436,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:437,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:437,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:439,1
    - Dst: SET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:439,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:441,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:441,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:442,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:442,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:443,1
    - Dst: SET_LABEL
      Src: /src/frr/ospfd/ospf_ri.c:443,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:449,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:450,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:450,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:451,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:451,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:452,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:452,1
    - Dst: set_sr_local_label_range
      Src: /src/frr/ospfd/ospf_ri.c:456,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:459,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:459,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:460,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:460,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:462,1
    - Dst: SET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:462,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:464,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:464,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:465,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:465,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:466,1
    - Dst: SET_LABEL
      Src: /src/frr/ospfd/ospf_ri.c:466,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:472,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:473,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:473,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:474,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:474,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:475,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:475,1
    - Dst: set_sr_node_msd
      Src: /src/frr/ospfd/ospf_ri.c:479,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:481,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:481,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:482,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:482,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:489,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:490,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:490,1
    - Dst: unset_param
      Src: /src/frr/ospfd/ospf_ri.c:493,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ri.c:499,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ri.c:499,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:499,1
    - Dst: cap::cap
      Src: /src/frr/ospfd/ospf_ri.c:511,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:522,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ri.c:523,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:529,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_ri.c:529,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_ri.c:530,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_ri.c:531,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:532,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:534,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:538,1
    - Dst: set_pce_address::set_pce_address
      Src: /src/frr/ospfd/ospf_ri.c:538,1
    - Dst: set_pce_path_scope
      Src: /src/frr/ospfd/ospf_ri.c:551,1
    - Dst: set_pce_cap_flag
      Src: /src/frr/ospfd/ospf_ri.c:556,1
    - Dst: is_mandated_params_set
      Src: /src/frr/ospfd/ospf_ri.c:561,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:568,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:571,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:572,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:573,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:576,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:576,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:577,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:577,1
    - Dst: ospf_router_info_register
      Src: /src/frr/ospfd/ospf_ri.c:600,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_ri.c:604,1
    - Dst: unset_sr_algorithm
      Src: /src/frr/ospfd/ospf_ri.c:627,1
    - Dst: unset_sr_global_label_range
      Src: /src/frr/ospfd/ospf_ri.c:628,1
    - Dst: unset_sr_local_label_range
      Src: /src/frr/ospfd/ospf_ri.c:629,1
    - Dst: unset_sr_node_msd
      Src: /src/frr/ospfd/ospf_ri.c:630,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:646,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:646,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:647,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:649,1
    - Dst: lookup_by_area
      Src: /src/frr/ospfd/ospf_ri.c:665,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:672,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:675,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ri.c:687,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:694,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:694,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_ri.c:695,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ri.c:696,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ri.c:696,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:696,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:714,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:714,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:716,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:716,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:718,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:718,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:720,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:720,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:733,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:736,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:739,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:741,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:744,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:746,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:749,1
    - Dst: ospf_router_info_lsa_new
      Src: /src/frr/ospfd/ospf_ri.c:756,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_ri.c:768,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_ri.c:770,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ri.c:778,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:779,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ri.c:781,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:782,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:786,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_ri.c:789,1
    - Dst: ospf_router_info_lsa_body_set
      Src: /src/frr/ospfd/ospf_ri.c:792,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_ri.c:795,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:796,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_ri.c:799,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:805,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_ri.c:805,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_ri.c:806,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:806,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_ri.c:807,1
    - Dst: struct ospf::struct ospf
      Src: /src/frr/ospfd/ospf_ri.c:814,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:833,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:841,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_ri.c:844,1
    - Dst: rc::rc
      Src: /src/frr/ospfd/ospf_ri.c:844,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:852,1
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_ri.c:853,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ri.c:855,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:858,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:858,1
    - Dst: zlog_debug::zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:853,1
    - Dst: ospf_router_info_lsa_originate_area
      Src: /src/frr/ospfd/ospf_ri.c:866,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:875,1
    - Dst: lookup_by_area
      Src: /src/frr/ospfd/ospf_ri.c:883,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:885,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:894,1
    - Dst: ospf_router_info_lsa_new::ospf_router_info_lsa_new
      Src: /src/frr/ospfd/ospf_ri.c:896,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:900,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ri.c:907,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:908,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:919,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_ri.c:920,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ri.c:922,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:923,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:925,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:925,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_ri.c:926,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:948,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:949,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 956
    functionName: ospf_router_info_finish
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - ntohs
    - del_area_info
    - flog_warn
    - memset
    - XCALLOC
    - unset_sr_global_label_range
    - zlog_debug::zlog_debug
    - if
    - set_sr_local_label_range
    - for
    - build_tlv
    - ospf_lsa_header_dump
    - flags::flags
    - memcpy
    - set_sr_global_label_range
    - list_isempty
    - ospf_router_info_lsa_body_set
    - ALL_LIST_ELEMENTS
    - ospf_router_info_lsa_originate_area
    - htons
    - ospf_lookup_by_vrf_id
    - ospf_router_info_lsa_new::ospf_router_info_lsa_new
    - stream_free
    - is_mandated_params_set
    - set_sr_node_msd
    - ospf_lsa_install
    - del_pce_info
    - set_router_info_capabilities
    - set_pce_cap_flag
    - STREAM_DATA
    - unset_sr_algorithm
    - stream_put
    - unset_param
    - build_tlv_header
    - struct ospf::struct ospf
    - data::data
    - unset_pce_neighbor::unset_pce_neighbor
    - TLV_SIZE
    - lookup_by_area
    - lsa_header_set
    - unset_sr_local_label_range
    - ospf_flood_through_as
    - TLV_TYPE
    - zlog_debug
    - set_pce_neighbor
    - XCALLOC::XCALLOC
    - zlog_info
    - SET_LABEL
    - zlog_err
    - SET_RANGE_SIZE
    - TLV_DATA
    - XFREE
    - flooding_scope
    - stream_new
    - set_pce_path_scope
    - set_pce_address::set_pce_address
    - unset_sr_node_msd
    - SET_FLAG
    - set_sr_algorithm
    - ospf_router_info_lsa_schedule
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - TLV_BODY_SIZE
    - cap::cap
    - listnode_add
    - htonl
    - ospf_flood_through_area
    - IS_DEBUG_OSPF
    - TLV_LEN
    - ALL_LIST_ELEMENTS_RO
    - TLV_HDR
    - ospf_router_info_lsa_new
    - list_delete_all_node
    - header::header
    - SET_OPAQUE_LSID
    - rc::rc
    - ospf_router_info_get_flooding_scope
    - listnode_delete
    - ospf_router_info_register
    - CHECK_FLAG
    - stream_get_endp
    - ospf_lsa_unlock
    linkageType: ''
    returnType: void
    signature: void ospf_router_info_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:295,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:296,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - scope
    - pce
    argTypes:
    - uint32_t
    - struct ospf_pce_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 300
    functionName: set_pce_path_scope
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 1
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: void set_pce_path_scope(uint32_t scope, struct ospf_pce_info *pce)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:309,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:312,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:312,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:313,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:313,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:314,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:315,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - type
    - domain
    - pce
    argTypes:
    - uint16_t
    - uint32_t
    - struct ospf_pce_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 321
    functionName: set_pce_domain
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - htons
    - listnode_add
    - htonl
    - header::header
    linkageType: ''
    returnType: void
    signature: "void set_pce_domain(uint16_t type, uint32_t domain,\n\t\t\t   struct
      ospf_pce_info *pce)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:331,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:332,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:333,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_ri.c:341,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ri.c:344,1
    - Dst: set_pce_neighbor
      Src: /src/frr/ospfd/ospf_ri.c:348,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:355,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:358,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:358,1
    - Dst: header::header
      Src: /src/frr/ospfd/ospf_ri.c:359,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:359,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:360,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:361,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:364,1
    - Dst: unset_pce_neighbor::unset_pce_neighbor
      Src: /src/frr/ospfd/ospf_ri.c:364,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:377,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:378,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:379,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_ri.c:387,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ri.c:390,1
    - Dst: set_pce_cap_flag
      Src: /src/frr/ospfd/ospf_ri.c:394,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:398,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:399,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:400,1
    - Dst: set_sr_algorithm
      Src: /src/frr/ospfd/ospf_ri.c:408,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:416,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:416,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:417,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:417,1
    - Dst: unset_sr_algorithm
      Src: /src/frr/ospfd/ospf_ri.c:421,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_ri.c:424,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:428,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:428,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:429,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:429,1
    - Dst: set_sr_global_label_range
      Src: /src/frr/ospfd/ospf_ri.c:433,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:436,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:436,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:437,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:437,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:439,1
    - Dst: SET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:439,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:441,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:441,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:442,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:442,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:443,1
    - Dst: SET_LABEL
      Src: /src/frr/ospfd/ospf_ri.c:443,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:449,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:450,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:450,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:451,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:451,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:452,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:452,1
    - Dst: set_sr_local_label_range
      Src: /src/frr/ospfd/ospf_ri.c:456,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:459,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:459,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:460,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:460,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:462,1
    - Dst: SET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:462,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:464,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:464,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:465,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:465,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:466,1
    - Dst: SET_LABEL
      Src: /src/frr/ospfd/ospf_ri.c:466,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:472,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:473,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:473,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:474,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:474,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:475,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:475,1
    - Dst: set_sr_node_msd
      Src: /src/frr/ospfd/ospf_ri.c:479,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:481,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:481,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:482,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:482,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:489,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ri.c:490,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:490,1
    - Dst: unset_param
      Src: /src/frr/ospfd/ospf_ri.c:493,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ri.c:499,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ri.c:499,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:499,1
    - Dst: cap::cap
      Src: /src/frr/ospfd/ospf_ri.c:511,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:522,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ri.c:523,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:529,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_ri.c:529,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_ri.c:530,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_ri.c:531,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:532,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:534,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:538,1
    - Dst: set_pce_address::set_pce_address
      Src: /src/frr/ospfd/ospf_ri.c:538,1
    - Dst: set_pce_path_scope
      Src: /src/frr/ospfd/ospf_ri.c:551,1
    - Dst: set_pce_cap_flag
      Src: /src/frr/ospfd/ospf_ri.c:556,1
    - Dst: is_mandated_params_set
      Src: /src/frr/ospfd/ospf_ri.c:561,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:568,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:571,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:572,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:573,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:576,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:576,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:577,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:577,1
    - Dst: ospf_router_info_register
      Src: /src/frr/ospfd/ospf_ri.c:600,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_ri.c:604,1
    - Dst: unset_sr_algorithm
      Src: /src/frr/ospfd/ospf_ri.c:627,1
    - Dst: unset_sr_global_label_range
      Src: /src/frr/ospfd/ospf_ri.c:628,1
    - Dst: unset_sr_local_label_range
      Src: /src/frr/ospfd/ospf_ri.c:629,1
    - Dst: unset_sr_node_msd
      Src: /src/frr/ospfd/ospf_ri.c:630,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:646,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:646,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:647,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:649,1
    - Dst: lookup_by_area
      Src: /src/frr/ospfd/ospf_ri.c:665,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ri.c:672,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ri.c:675,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ri.c:687,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:694,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:694,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_ri.c:695,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ri.c:696,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ri.c:696,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:696,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:714,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:714,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:716,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:716,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:718,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:718,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:720,1
    - Dst: TLV_HDR
      Src: /src/frr/ospfd/ospf_ri.c:720,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:733,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:736,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:739,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:741,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:744,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:746,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ri.c:749,1
    - Dst: ospf_router_info_lsa_new
      Src: /src/frr/ospfd/ospf_ri.c:756,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_ri.c:768,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_ri.c:770,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ri.c:778,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:779,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ri.c:781,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:782,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:786,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_ri.c:789,1
    - Dst: ospf_router_info_lsa_body_set
      Src: /src/frr/ospfd/ospf_ri.c:792,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_ri.c:795,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:796,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_ri.c:799,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:805,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_ri.c:805,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_ri.c:806,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:806,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_ri.c:807,1
    - Dst: struct ospf::struct ospf
      Src: /src/frr/ospfd/ospf_ri.c:814,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:833,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:841,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_ri.c:844,1
    - Dst: rc::rc
      Src: /src/frr/ospfd/ospf_ri.c:844,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:852,1
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_ri.c:853,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ri.c:855,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:858,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:858,1
    - Dst: zlog_debug::zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:853,1
    - Dst: ospf_router_info_lsa_originate_area
      Src: /src/frr/ospfd/ospf_ri.c:866,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:875,1
    - Dst: lookup_by_area
      Src: /src/frr/ospfd/ospf_ri.c:883,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:885,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:894,1
    - Dst: ospf_router_info_lsa_new::ospf_router_info_lsa_new
      Src: /src/frr/ospfd/ospf_ri.c:896,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:900,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ri.c:907,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:908,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:919,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_ri.c:920,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ri.c:922,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:923,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:925,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:925,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_ri.c:926,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:948,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:949,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 3
    argNames:
    - type
    - domain
    - pce
    argTypes:
    - uint16_t
    - uint32_t
    - struct ospf_pce_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 323
    functionDepth: 3
    functionLinenumber: 323
    functionLinenumberEnd: 955
    functionName: unset_pce_domain
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - ospf_router_info_lsa_originate_area
    - stream_put
    - ospf_router_info_lsa_schedule
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - TLV_BODY_SIZE
    - unset_param
    - cap::cap
    - build_tlv_header
    - listnode_add
    - struct ospf::struct ospf
    - ntohs
    - data::data
    - htonl
    - unset_pce_neighbor::unset_pce_neighbor
    - ospf_flood_through_area
    - lookup_by_area
    - TLV_LEN
    - unset_sr_local_label_range
    - ospf_lookup_by_vrf_id
    - memset
    - XCALLOC
    - unset_sr_global_label_range
    - IS_DEBUG_OSPF
    - ALL_LIST_ELEMENTS_RO
    - TLV_HDR
    - ospf_router_info_lsa_new
    - flog_warn
    - ospf_flood_through_as
    - zlog_debug::zlog_debug
    - TLV_TYPE
    - zlog_debug
    - list_delete_all_node
    - ospf_router_info_lsa_new::ospf_router_info_lsa_new
    - set_pce_neighbor
    - if
    - set_sr_local_label_range
    - for
    - lsa_header_set
    - header::header
    - build_tlv
    - SET_OPAQUE_LSID
    - XCALLOC::XCALLOC
    - zlog_info
    - SET_LABEL
    - stream_free
    - is_mandated_params_set
    - set_sr_node_msd
    - ospf_lsa_install
    - rc::rc
    - zlog_err
    - SET_RANGE_SIZE
    - ospf_lsa_header_dump
    - flags::flags
    - TLV_DATA
    - XFREE
    - listnode_delete
    - set_pce_cap_flag
    - memcpy
    - ospf_router_info_register
    - set_pce_path_scope
    - stream_new
    - set_sr_global_label_range
    - list_isempty
    - CHECK_FLAG
    - set_pce_address::set_pce_address
    - STREAM_DATA
    - stream_get_endp
    - ospf_lsa_unlock
    - unset_sr_node_msd
    - ospf_router_info_lsa_body_set
    - SET_FLAG
    - unset_sr_algorithm
    - ALL_LIST_ELEMENTS
    - set_sr_algorithm
    linkageType: ''
    returnType: void
    signature: "void unset_pce_domain(uint16_t type, uint32_t domain,\n\t\t\t     struct
      ospf_pce_info *pce)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ri.c:1001,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ri.c:1004,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_ri.c:1008,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1008,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:1009,1
    - Dst: lookup_by_area
      Src: /src/frr/ospfd/ospf_ri.c:1019,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:1021,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ri.c:1027,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1028,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1029,1
    - Dst: ospf_router_info_lsa_new::ospf_router_info_lsa_new
      Src: /src/frr/ospfd/ospf_ri.c:1033,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:1034,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_ri.c:1034,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:1037,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ri.c:1038,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:1039,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_ri.c:1045,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ri.c:1049,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1050,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1051,1
    - Dst: ospf_router_info_lsa_new::ospf_router_info_lsa_new
      Src: /src/frr/ospfd/ospf_ri.c:1055,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:1056,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_ri.c:1056,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:1059,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ri.c:1060,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:1061,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ri.c:1071,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1072,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:1074,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ri.c:1074,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_ri.c:1075,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 989
    functionDepth: 2
    functionLinenumber: 989
    functionLinenumberEnd: 1079
    functionName: ospf_router_info_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - lookup_by_area
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_lookup_by_vrf_id
    - htons
    - IS_LSA_MAXAGE
    - ospf_lsa_install
    - ospf_opaque_lsa_flush_schedule
    - ospf_router_info_lsa_new::ospf_router_info_lsa_new
    - UNSET_FLAG
    - zlog_debug
    - ospf_lsa_header_dump
    - data::data
    - lsa_seqnum_increment
    - ospf_flood_through_area
    - ntohl
    - GET_OPAQUE_ID
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_router_info_lsa_refresh(struct ospf_lsa *lsa)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ri.c:1089,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ri.c:1090,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1092,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:1100,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1111,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1122,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ri.c:1126,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ri.c:1134,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ri.c:1135,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1140,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1144,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1149,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1153,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1155,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1156,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 2
    argNames:
    - ai
    - opcode
    argTypes:
    - struct ospf_ri_area_info*
    - enum lsa_opcode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1081
    functionDepth: 1
    functionLinenumber: 1081
    functionLinenumberEnd: 1161
    functionName: ospf_router_info_lsa_schedule
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 2
    functionsReached:
    - SET_OPAQUE_LSID
    - ospf_lookup_by_vrf_id
    - flog_warn
    - memset
    - CHECK_FLAG
    - ospf_opaque_lsa_refresh_schedule
    - zlog_debug
    - UNSET_FLAG
    - htonl
    - ospf_opaque_lsa_flush_schedule
    - ospf_opaque_lsa_reoriginate_schedule
    linkageType: ''
    returnType: void
    signature: "void ospf_router_info_lsa_schedule(struct ospf_ri_area_info *ai,\n\t\t\t\t\t
      \ enum lsa_opcode opcode)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ri.c:1169,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_ri.c:1180,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1180,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_ri.c:1185,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ri.c:1193,1
    - Dst: ospf_sr_ri_lsa_update
      Src: /src/frr/ospfd/ospf_ri.c:1194,1
    - Dst: ospf_sr_ri_lsa_delete
      Src: /src/frr/ospfd/ospf_ri.c:1196,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1199
    functionName: ospf_router_info_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - GET_OPAQUE_TYPE
    - flog_warn
    - IS_LSA_MAXAGE
    - ospf_sr_ri_lsa_delete
    - ospf_sr_ri_lsa_update
    - ntohl
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: int ospf_router_info_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - size
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1205
    functionDepth: 0
    functionLinenumber: 1205
    functionLinenumberEnd: 1217
    functionName: check_tlv_size
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_tlv_size(size, msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1222,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1225,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1226,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1228,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1228,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1231
    functionName: show_vty_router_cap
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t show_vty_router_cap(struct vty *vty, struct tlv_header *tlvh)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1239,1
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1240,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1242,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1245,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1247,1
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1249,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1251,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1252,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1254,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1255,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1258,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1259,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1261,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1262,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1265,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1233
    functionDepth: 1
    functionLinenumber: 1233
    functionLinenumberEnd: 1266
    functionName: show_vty_pce_subtlv_address
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - ntohs
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_pce_subtlv_address(struct vty *vty,\n\t\t\t\t\t
      \   struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1274,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1277,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1277,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1279,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1279,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1268
    functionDepth: 1
    functionLinenumber: 1268
    functionLinenumberEnd: 1282
    functionName: show_vty_pce_subtlv_path_scope
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_pce_subtlv_path_scope(struct vty *vty,\n\t\t\t\t\t
      \      struct tlv_header *tlvh)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1290,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1292,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1295,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1297,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1298,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1300,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1301,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1303,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1303,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1306,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1307,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1309,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1310,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1313,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1284
    functionDepth: 1
    functionLinenumber: 1284
    functionLinenumberEnd: 1314
    functionName: show_vty_pce_subtlv_domain
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - ntohs
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_pce_subtlv_domain(struct vty *vty,\n\t\t\t\t\t   struct
      tlv_header *tlvh)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1324,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1326,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1329,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1331,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1332,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1334,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1335,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1337,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1338,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1341,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1342,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1344,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1345,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1316
    functionDepth: 1
    functionLinenumber: 1316
    functionLinenumberEnd: 1349
    functionName: show_vty_pce_subtlv_neighbor
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - ntohs
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_pce_subtlv_neighbor(struct vty *vty,\n\t\t\t\t\t
      \    struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1357,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1360,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1361,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1363,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1364,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1351
    functionDepth: 1
    functionLinenumber: 1351
    functionLinenumberEnd: 1367
    functionName: show_vty_pce_subtlv_cap_flag
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_pce_subtlv_cap_flag(struct vty *vty,\n\t\t\t\t\t
      \    struct tlv_header *tlvh)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1372,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1374,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1376,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1378,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1380,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1385,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1386,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1386,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1388,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1389,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1389,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - tlvh
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1369
    functionDepth: 1
    functionLinenumber: 1369
    functionLinenumberEnd: 1392
    functionName: show_vty_unknown_tlv
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_debug
    - vty_out
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_unknown_tlv(struct vty *vty, struct tlv_header *tlvh,\n\t\t\t\t
      \    size_t buf_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1398,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1403,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_ri.c:1409,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1410,1
    - Dst: show_vty_pce_subtlv_address
      Src: /src/frr/ospfd/ospf_ri.c:1412,1
    - Dst: show_vty_pce_subtlv_path_scope
      Src: /src/frr/ospfd/ospf_ri.c:1415,1
    - Dst: show_vty_pce_subtlv_domain
      Src: /src/frr/ospfd/ospf_ri.c:1418,1
    - Dst: show_vty_pce_subtlv_neighbor
      Src: /src/frr/ospfd/ospf_ri.c:1421,1
    - Dst: show_vty_pce_subtlv_cap_flag
      Src: /src/frr/ospfd/ospf_ri.c:1424,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_ri.c:1427,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - vty
    - ri
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1394
    functionDepth: 2
    functionLinenumber: 1394
    functionLinenumberEnd: 1432
    functionName: show_vty_pce_info
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - show_vty_unknown_tlv
    - show_vty_pce_subtlv_domain
    - show_vty_pce_subtlv_address
    - show_vty_pce_subtlv_path_scope
    - ntohs
    - show_vty_pce_subtlv_neighbor
    - TLV_HDR_NEXT
    - show_vty_pce_subtlv_cap_flag
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_pce_info(struct vty *vty, struct tlv_header *ri,\n\t\t\t\t
      \ size_t buf_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1441,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1444,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1445,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1448,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1451,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1455,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1462,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1463,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1466,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1469,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1472,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1478,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1435
    functionDepth: 1
    functionLinenumber: 1435
    functionLinenumberEnd: 1479
    functionName: show_vty_sr_algorithm
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - vty_out
    - ntohs
    - zlog_debug
    - check_tlv_size
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t show_vty_sr_algorithm(struct vty *vty, struct tlv_header *tlvh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1487,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1490,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1494,1
    - Dst: GET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1497,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1497,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_ri.c:1498,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1498,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1500,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1502,1
    - Dst: GET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1505,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1505,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_ri.c:1506,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1506,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1482
    functionDepth: 1
    functionLinenumber: 1482
    functionLinenumberEnd: 1510
    functionName: show_vty_sr_range
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - vty_out
    - GET_RANGE_SIZE
    - ntohs
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t show_vty_sr_range(struct vty *vty, struct tlv_header *tlvh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ri.c:1517,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1520,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1525,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ri.c:1530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1513
    functionDepth: 1
    functionLinenumber: 1513
    functionLinenumberEnd: 1531
    functionName: show_vty_sr_msd
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - TLV_SIZE
    - vty_out
    - check_tlv_size
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t show_vty_sr_msd(struct vty *vty, struct tlv_header *tlvh)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_ri.c:1547,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_ri.c:1548,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1549,1
    - Dst: show_vty_router_cap
      Src: /src/frr/ospfd/ospf_ri.c:1551,1
    - Dst: show_vty_pce_info
      Src: /src/frr/ospfd/ospf_ri.c:1556,1
    - Dst: show_vty_sr_algorithm
      Src: /src/frr/ospfd/ospf_ri.c:1559,1
    - Dst: show_vty_sr_range
      Src: /src/frr/ospfd/ospf_ri.c:1563,1
    - Dst: show_vty_sr_msd
      Src: /src/frr/ospfd/ospf_ri.c:1566,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_ri.c:1570,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - vty
    - json
    - lsa
    argTypes:
    - struct vty*
    - struct json_object*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1533
    functionDepth: 3
    functionLinenumber: 1533
    functionLinenumberEnd: 1576
    functionName: ospf_router_info_show_info
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - show_vty_pce_info
    - show_vty_sr_range
    - TLV_HDR_TOP
    - show_vty_unknown_tlv
    - show_vty_sr_algorithm
    - show_vty_sr_msd
    - ntohs
    - TLV_HDR_NEXT
    - show_vty_router_cap
    linkageType: ''
    returnType: void
    signature: "void ospf_router_info_show_info(struct vty *vty,\n\t\t\t\t       struct
      json_object *json,\n\t\t\t\t       struct ospf_lsa *lsa)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1590,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1592,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1597,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1601,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1602,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:1604,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1608,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1611,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1612,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:1617,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1621,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1625,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1626,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1632,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1633,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1642,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1648,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1649,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1651,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_ri.c:1653,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_ri.c:1653,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ri.c:1654,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ri.c:1654,1
    - Dst: ospf_router_info_lsa_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1655,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1660,1
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_ri.c:1670,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1677,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_ri.c:1683,1
    - Dst: ospf_router_info_register
      Src: /src/frr/ospfd/ospf_ri.c:1689,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1690,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_ri.c:1692,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1702,1
    - Dst: initialize_params
      Src: /src/frr/ospfd/ospf_ri.c:1715,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1718,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1723,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ri.c:1734,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1736,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1749,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1754,1
    - Dst: ospf_ri_enabled
      Src: /src/frr/ospfd/ospf_ri.c:1765,1
    - Dst: inet_aton
      Src: /src/frr/ospfd/ospf_ri.c:1768,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1769,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ri.c:1773,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1774,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1775,1
    - Dst: set_pce_address
      Src: /src/frr/ospfd/ospf_ri.c:1777,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1780,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1786,1
    - Dst: unset_param
      Src: /src/frr/ospfd/ospf_ri.c:1795,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1798,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1803,1
    - Dst: ospf_ri_enabled
      Src: /src/frr/ospfd/ospf_ri.c:1814,1
    - Dst: sscanf
      Src: /src/frr/ospfd/ospf_ri.c:1817,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1818,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_ri.c:1819,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1823,1
    - Dst: set_pce_path_scope
      Src: /src/frr/ospfd/ospf_ri.c:1825,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1828,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1834,1
    - Dst: unset_param
      Src: /src/frr/ospfd/ospf_ri.c:1843,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1846,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1851,1
    - Dst: ospf_ri_enabled
      Src: /src/frr/ospfd/ospf_ri.c:1866,1
    - Dst: sscanf
      Src: /src/frr/ospfd/ospf_ri.c:1869,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1870,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_ri.c:1870,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ri.c:1875,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ri.c:1876,1
    - Dst: set_pce_domain
      Src: /src/frr/ospfd/ospf_ri.c:1881,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1884,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_ri.c:1889,1
    - Dst: sscanf
      Src: /src/frr/ospfd/ospf_ri.c:1903,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_ri.c:1905,1
    - Dst: unset_pce_domain
      Src: /src/frr/ospfd/ospf_ri.c:1910,1
    - Dst: ospf_router_info_schedule
      Src: /src/frr/ospfd/ospf_ri.c:1913,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 107
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1578
    functionDepth: 4
    functionLinenumber: 1578
    functionLinenumberEnd: 1916
    functionName: ospf_router_info_config_write_router
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 0
    functionsReached:
    - ospf_router_info_lsa_schedule
    - unset_param
    - ospf_router_info_schedule
    - ntohs
    - strncmp
    - flog_err
    - VTY_DECLVAR_INSTANCE_CONTEXT
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - safe_strerror
    - unset_pce_domain
    - if
    - for
    - ntohl
    - sscanf
    - DEFUN
    - vty_out
    - set_pce_domain
    - set_pce_address
    - ospf_router_info_register
    - set_pce_path_scope
    - inet_aton
    - CHECK_FLAG
    - initialize_params
    - ospf_ri_enabled
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ospf_router_info_config_write_router(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ri.c:1749,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1743
    functionDepth: 1
    functionLinenumber: 1743
    functionLinenumberEnd: 1752
    functionName: ospf_ri_enabled
    functionSourceFile: /src/frr/ospfd/ospf_ri.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int ospf_ri_enabled(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: ROUTEMAP_NAME
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTEMAP_NAME(R)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: ROUTEMAP
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTEMAP(R)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 303
    functionName: DISTRIBUTE_NAME
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISTRIBUTE_NAME(O,T)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    functionName: DISTRIBUTE_LIST
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISTRIBUTE_LIST(O,T)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 367
    functionName: EXTERNAL_INFO
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXTERNAL_INFO(E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 568
    functionName: EXPORT_NAME
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPORT_NAME(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 569
    functionName: EXPORT_LIST
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPORT_LIST(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 576
    functionName: IMPORT_NAME
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMPORT_NAME(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 577
    functionName: IMPORT_LIST
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMPORT_LIST(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 584
    functionName: PREFIX_LIST_IN
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_IN(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 585
    functionName: PREFIX_NAME_IN
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_NAME_IN(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 591
    functionName: PREFIX_LIST_OUT
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_OUT(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 591
    functionDepth: 0
    functionLinenumber: 591
    functionLinenumberEnd: 592
    functionName: PREFIX_NAME_OUT
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_NAME_OUT(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 674
    functionName: OSPF_AREA_SAME
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_AREA_SAME(X, Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 676
    functionName: IS_OSPF_ABR
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF_ABR(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 677
    functionName: IS_OSPF_ASBR
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF_ASBR(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 679
    functionName: OSPF_IS_AREA_ID_BACKBONE
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_IS_AREA_ID_BACKBONE(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 680
    functionName: OSPF_IS_AREA_BACKBONE
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_IS_AREA_BACKBONE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - gran
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 683
    functionName: ROUNDUP
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(val, gran)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - gran
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 685
    functionName: ROUNDUP
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(val, gran)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - area
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 689
    functionName: LSA_OPTIONS_GET
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LSA_OPTIONS_GET(area)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - area
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 691
    functionName: LSA_OPTIONS_NSSA_GET
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LSA_OPTIONS_NSSA_GET(area)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 693
    functionName: OSPF_TIMER_ON
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 695
    functionName: OSPF_AREA_TIMER_ON
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_AREA_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 697
    functionName: OSPF_POLL_TIMER_ON
    functionSourceFile: /src/frr/ospfd/ospfd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_POLL_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_gr.c:46,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_gr.c:47,1
    - Dst: ospf_lsa_lookup
      Src: /src/frr/ospfd/ospf_gr.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ospf
    - area
    argTypes:
    - struct ospf*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 52
    functionName: ospf_gr_lsa_lookup
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - SET_OPAQUE_LSID
    - ospf_lsa_lookup
    - htonl
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_gr_lsa_lookup(struct ospf *ospf,\n\t\t\t\t\t
      \  struct ospf_area *area)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:65,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:66,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_gr.c:67,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_gr.c:68,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:71,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:72,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_gr.c:74,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:79,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:80,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_gr.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - gr_info
    - oi
    - reason
    - s
    argTypes:
    - struct ospf_gr_info*
    - struct ospf_interface*
    - enum ospf_gr_restart_reason
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 84
    functionName: ospf_gr_lsa_body_set
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - htonl
    - stream_put
    - htons
    linkageType: ''
    returnType: void
    signature: "void ospf_gr_lsa_body_set(struct ospf_gr_info *gr_info,\n\t\t\t\t
      struct ospf_interface *oi,\n\t\t\t\t enum ospf_gr_restart_reason reason,\n\t\t\t\t
      struct stream *s)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_gr.c:99,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_gr.c:101,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_gr.c:103,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/ospfd/ospf_gr.c:104,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_gr.c:108,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_gr.c:109,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_gr.c:112,1
    - Dst: ospf_gr_lsa_body_set
      Src: /src/frr/ospfd/ospf_gr.c:115,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_gr.c:118,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:119,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_gr.c:122,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr.c:125,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_gr.c:130,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_gr.c:130,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_gr.c:131,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_gr.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 2
    argNames:
    - oi
    - reason
    argTypes:
    - struct ospf_interface*
    - enum ospf_gr_restart_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 135
    functionName: ospf_gr_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - SET_OPAQUE_LSID
    - stream_free
    - lsa_header_set
    - stream_new
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - STREAM_DATA
    - stream_get_endp
    - zlog_debug
    - SET_FLAG
    - flags::flags
    - LSA_OPTIONS_GET
    - htonl
    - ospf_gr_lsa_body_set
    - LSA_OPTIONS_NSSA_GET
    - memcpy
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_gr_lsa_new(struct ospf_interface *oi,\n\t\t\t\t\tenum
      ospf_gr_restart_reason reason)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/ospfd/ospf_gr.c:145,1
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_gr.c:145,1
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_gr.c:147,1
    - Dst: ospf_gr_lsa_new
      Src: /src/frr/ospfd/ospf_gr.c:151,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_gr.c:153,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_gr.c:158,1
    - Dst: ospf_gr_lsa_lookup
      Src: /src/frr/ospfd/ospf_gr.c:161,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_gr.c:163,1
    - Dst: ospf_lsa_checksum
      Src: /src/frr/ospfd/ospf_gr.c:173,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_gr.c:174,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_gr.c:175,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_gr.c:176,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_gr.c:177,1
    - Dst: ospf_ls_upd_queue_send
      Src: /src/frr/ospfd/ospf_gr.c:178,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_gr.c:179,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_gr.c:180,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_gr.c:183,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_gr.c:184,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_gr.c:185,1
    - Dst: ospf_flood_through_interface
      Src: /src/frr/ospfd/ospf_gr.c:190,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - oi
    - reason
    - maxage
    argTypes:
    - struct ospf_interface*
    - enum ospf_gr_restart_reason
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 138
    functionDepth: 4
    functionLinenumber: 138
    functionLinenumberEnd: 195
    functionName: ospf_gr_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - list_delete
    - ospf_interface_neighbor_count
    - htons
    - listnode_add
    - zlog_warn
    - htonl
    - if_is_loopback
    - ospf_gr_lsa_lookup
    - ospf_gr_lsa_new
    - ospf_lsa_discard
    - ospf_lsa_checksum
    - ospf_lsa_install
    - if_is_operative
    - ospf_lsa_lock
    - ospf_lsa_unlock
    - list_new
    - lsa_seqnum_increment
    - ospf_ls_upd_queue_send
    - ospf_flood_through_interface
    linkageType: ''
    returnType: void
    signature: "void ospf_gr_lsa_originate(struct ospf_interface *oi,\n\t\t\t\t  enum
      ospf_gr_restart_reason reason,\n\t\t\t\t  bool maxage)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_gr.c:203,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_gr.c:207,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_gr.c:207,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr.c:209,1
    - Dst: ospf_gr_lsa_originate
      Src: /src/frr/ospfd/ospf_gr.c:213,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_gr.c:228,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_gr.c:230,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_gr.c:238,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_gr.c:240,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_gr.c:240,1
    - Dst: OSPF_ISM_TIMER_MSEC_ON
      Src: /src/frr/ospfd/ospf_gr.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 198
    functionDepth: 5
    functionLinenumber: 198
    functionLinenumberEnd: 247
    functionName: ospf_gr_flush_grace_lsas
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - ospf_gr_lsa_originate
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - EVENT_OFF
    - ospf_router_lsa_update_area
    - for
    - OSPF_ISM_TIMER_MSEC_ON
    linkageType: ''
    returnType: void
    signature: void ospf_gr_flush_grace_lsas(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/ospfd/ospf_gr.c:293,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr.c:295,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_gr.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ospf
    - reason
    - timestamp
    argTypes:
    - struct ospf*
    - enum ospf_gr_restart_reason
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 301
    functionName: ospf_gr_restart_enter
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_debug
    - time
    linkageType: ''
    returnType: void
    signature: "void ospf_gr_restart_enter(struct ospf *ospf,\n\t\t\t   enum ospf_gr_restart_reason
      reason, time_t timestamp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr.c:310,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_gr.c:316,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - lsa
    - id
    argTypes:
    - struct ospf_lsa*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 321
    functionName: ospf_router_lsa_contains_adj
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - ntohs
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: bool
    signature: "bool ospf_router_lsa_contains_adj(struct ospf_lsa *lsa,\n\t\t\t\t\t
      struct in_addr *id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_gr.c:327,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr.c:331,1
    - Dst: ospf_lsa_lookup_by_id
      Src: /src/frr/ospfd/ospf_gr.c:338,1
    - Dst: ospf_router_lsa_contains_adj
      Src: /src/frr/ospfd/ospf_gr.c:343,1
    - Dst: ospf_lsa_lookup_by_id
      Src: /src/frr/ospfd/ospf_gr.c:350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_gr.c:353,1
    - Dst: ospf_router_lsa_contains_adj
      Src: /src/frr/ospfd/ospf_gr.c:356,1
    - Dst: ospf_router_lsa_contains_adj
      Src: /src/frr/ospfd/ospf_gr.c:357,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 3
    argNames:
    - ospf
    - area
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_area*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 362
    functionName: ospf_gr_check_router_lsa_consistency
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - ntohs
    - CHECK_FLAG
    - ospf_lsa_lookup_by_id
    - ospf_router_lsa_contains_adj
    linkageType: ''
    returnType: bool
    signature: "bool ospf_gr_check_router_lsa_consistency(struct ospf *ospf,\n\t\t\t\t\t\t
      struct ospf_area *area,\n\t\t\t\t\t\t struct ospf_lsa *lsa)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_gr.c:373,1
    - Dst: ROUTER_LSDB
      Src: /src/frr/ospfd/ospf_gr.c:373,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_gr.c:373,1
    - Dst: ospf_gr_check_router_lsa_consistency
      Src: /src/frr/ospfd/ospf_gr.c:378,1
    - Dst: snprintfrr
      Src: /src/frr/ospfd/ospf_gr.c:381,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_gr.c:383,1
    - Dst: ospf_gr_restart_exit
      Src: /src/frr/ospfd/ospf_gr.c:384,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_gr.c:385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ospf
    - area
    argTypes:
    - struct ospf*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 389
    functionName: ospf_gr_check_lsdb_consistency
    functionSourceFile: /src/frr/ospfd/ospf_gr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - ospf_gr_restart_exit
    - route_top
    - snprintfrr
    - route_next
    - dump_lsa_key
    - ospf_gr_check_router_lsa_consistency
    - ROUTER_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf_gr_check_lsdb_consistency(struct ospf *ospf, struct ospf_area
      *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/ospfd/ospf_gr_helper.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: ospf_enable_rtr_hash_key
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf_enable_rtr_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: ospf_enable_rtr_hash_cmp
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ospf_enable_rtr_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_gr_helper.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: ospf_enable_rtr_hash_alloc
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *ospf_enable_rtr_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_gr_helper.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: ospf_disable_rtr_hash_free
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_disable_rtr_hash_free(void *rtr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/ospfd/ospf_gr_helper.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: ospf_enable_rtr_hash_destroy
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void ospf_enable_rtr_hash_destroy(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_gr_helper.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reason
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: ospf_exit_reason2str
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: char
    signature: char *ospf_exit_reason2str(unsigned int reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_gr_helper.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reason
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 125
    functionName: ospf_restart_reason2str
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: char
    signature: char *ospf_restart_reason2str(unsigned int reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_gr_helper.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - reason
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: ospf_rejected_reason2str
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: char
    signature: char *ospf_rejected_reason2str(unsigned int reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:150,1
    - Dst: hash_create
      Src: /src/frr/ospfd/ospf_gr_helper.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 162
    functionName: ospf_gr_helper_instance_init
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - hash_create
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf_gr_helper_instance_init(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:176,1
    - Dst: ospf_enable_rtr_hash_destroy
      Src: /src/frr/ospfd/ospf_gr_helper.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 179
    functionName: ospf_gr_helper_instance_stop
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - ospf_enable_rtr_hash_destroy
    linkageType: ''
    returnType: void
    signature: void ospf_gr_helper_instance_stop(struct ospf *ospf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:192,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_gr_helper.c:194,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_gr_helper.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 203
    functionName: ospf_gr_helper_init
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 1
    functionsReached:
    - ospf_register_opaque_functab
    - zlog_debug
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void ospf_gr_helper_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:214,1
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_gr_helper.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 217
    functionName: ospf_gr_helper_stop
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf_delete_opaque_functab
    linkageType: ''
    returnType: void
    signature: void ospf_gr_helper_stop(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:247,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:254,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_gr_helper.c:255,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:258,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:260,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:261,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr_helper.c:265,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:267,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:269,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:270,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_gr_helper.c:275,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:276,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:284,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:286,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:287,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:293,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:299,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:301,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:302,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:308,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:312,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr_helper.c:314,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 4
    argNames:
    - lsa
    - interval
    - addr
    - reason
    argTypes:
    - struct ospf_lsa*
    - uint32_t*
    - struct in_addr*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 320
    functionName: ospf_extract_grace_lsa_fields
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - ntohs
    - zlog_debug
    - TLV_HDR_NEXT
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: int
    signature: "int ospf_extract_grace_lsa_fields(struct ospf_lsa *lsa,\n\t\t\t\t\t
      uint32_t *interval,\n\t\t\t\t\t struct in_addr *addr, uint8_t *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_gr_helper.c:334,1
    - Dst: ospf_gr_helper_exit
      Src: /src/frr/ospfd/ospf_gr_helper.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 339
    functionName: ospf_handle_grace_timer_expiry
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - ospf_gr_helper_exit
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_handle_grace_timer_expiry(struct event *thread)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: ospf_extract_grace_lsa_fields
      Src: /src/frr/ospfd/ospf_gr_helper.c:374,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:378,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:383,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_gr_helper.c:386,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_gr_helper.c:393,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:397,1
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_gr_helper.c:412,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:414,1
    - Dst: IS_NBR_STATE_FULL
      Src: /src/frr/ospfd/ospf_gr_helper.c:427,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:429,1
    - Dst: OSPF_GR_IS_PLANNED_RESTART
      Src: /src/frr/ospfd/ospf_gr_helper.c:441,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:443,1
    - Dst: ospf_ls_retransmit_isempty
      Src: /src/frr/ospfd/ospf_gr_helper.c:454,1
    - Dst: ospf_check_change_in_rxmt_list
      Src: /src/frr/ospfd/ospf_gr_helper.c:455,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:457,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr_helper.c:466,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:468,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:478,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:494,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_gr_helper.c:501,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_gr_helper.c:503,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:509,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:514,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:532,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_gr_helper.c:536,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 84
    argCount: 3
    argNames:
    - ospf
    - lsa
    - nbr
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 541
    functionName: ospf_process_grace_lsa
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - ospf_ls_retransmit_isempty
    - OSPF_GR_IS_PLANNED_RESTART
    - ospf_nbr_lookup_by_addr
    - ospf_extract_grace_lsa_fields
    - ospf_check_change_in_rxmt_list
    - ospf_restart_reason2str
    - ntohs
    - hash_lookup
    - zlog_debug
    - EVENT_OFF
    - event_add_timer
    - IS_NBR_STATE_FULL
    linkageType: ''
    returnType: int
    signature: "int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,\n\t\t\t
      \  struct ospf_neighbor *nbr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:561,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:565,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:570,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:575,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:580,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:585,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 590
    functionName: ospf_check_change_in_rxmt_list
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 1
    functionsReached:
    - LSDB_LOOP
    linkageType: ''
    returnType: bool
    signature: bool ospf_check_change_in_rxmt_list(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:616,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_gr_helper.c:617,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_gr_helper.c:621,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_gr_helper.c:624,1
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_gr_helper.c:624,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_gr_helper.c:632,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_gr_helper.c:637,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_gr_helper.c:637,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_gr_helper.c:645,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 648
    functionName: ospf_helper_handle_topo_chg
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - ospf_interface_neighbor_count
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - route_next
    - zlog_debug
    - dump_lsa_key
    - if
    linkageType: ''
    returnType: void
    signature: void ospf_helper_handle_topo_chg(struct ospf *ospf, struct ospf_lsa
      *lsa)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_gr_helper.c:675,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:679,1
    - Dst: ospf_exit_reason2str
      Src: /src/frr/ospfd/ospf_gr_helper.c:680,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_gr_helper.c:691,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_gr_helper.c:702,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:709,1
    - Dst: ospf_dr_election
      Src: /src/frr/ospfd/ospf_gr_helper.c:714,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_gr_helper.c:717,1
    - Dst: ospf_network_lsa_update
      Src: /src/frr/ospfd/ospf_gr_helper.c:721,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - nbr
    - reason
    argTypes:
    - struct ospf_neighbor*
    - enum ospf_helper_exit_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 669
    functionDepth: 5
    functionLinenumber: 669
    functionLinenumberEnd: 722
    functionName: ospf_gr_helper_exit
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 1
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - zlog_err
    - zlog_debug
    - EVENT_OFF
    - ospf_dr_election
    - ospf_router_lsa_update_area
    - ospf_network_lsa_update
    - ospf_exit_reason2str
    linkageType: ''
    returnType: void
    signature: "void ospf_gr_helper_exit(struct ospf_neighbor *nbr,\n\t\t\t enum ospf_helper_exit_reason
      reason)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ospf_extract_grace_lsa_fields
      Src: /src/frr/ospfd/ospf_gr_helper.c:753,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:757,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:762,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_gr_helper.c:770,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:774,1
    - Dst: ospf_gr_helper_exit
      Src: /src/frr/ospfd/ospf_gr_helper.c:783,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - ospf
    - lsa
    - nbr
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 742
    functionDepth: 6
    functionLinenumber: 742
    functionLinenumberEnd: 784
    functionName: ospf_process_maxage_grace_lsa
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - ospf_nbr_lookup_by_addr
    - zlog_debug
    - ospf_gr_helper_exit
    - ospf_extract_grace_lsa_fields
    linkageType: ''
    returnType: void
    signature: "void ospf_process_maxage_grace_lsa(struct ospf *ospf, struct ospf_lsa
      *lsa,\n\t\t\t\t   struct ospf_neighbor *nbr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_gr_helper.c:814,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_gr_helper.c:817,1
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_gr_helper.c:817,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_gr_helper.c:820,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_gr_helper.c:821,1
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_gr_helper.c:835,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_gr_helper.c:838,1
    - Dst: ospf_gr_helper_exit
      Src: /src/frr/ospfd/ospf_gr_helper.c:839,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - ospf
    - support
    argTypes:
    - struct ospf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 799
    functionDepth: 6
    functionLinenumber: 799
    functionLinenumberEnd: 843
    functionName: ospf_gr_helper_support_set
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - ospf_interface_neighbor_count
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - route_next
    - ospf_gr_helper_exit
    - hash_lookup
    - if
    linkageType: ''
    returnType: void
    signature: void ospf_gr_helper_support_set(struct ospf *ospf, bool support)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_gr_helper.c:877,1
    - Dst: hash_release
      Src: /src/frr/ospfd/ospf_gr_helper.c:880,1
    - Dst: ospf_disable_rtr_hash_free
      Src: /src/frr/ospfd/ospf_gr_helper.c:881,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_gr_helper.c:893,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_gr_helper.c:896,1
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_gr_helper.c:896,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_gr_helper.c:899,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_gr_helper.c:900,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_gr_helper.c:911,1
    - Dst: ospf_gr_helper_exit
      Src: /src/frr/ospfd/ospf_gr_helper.c:912,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - ospf
    - advrtr
    - support
    argTypes:
    - struct ospf*
    - struct in_addr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 864
    functionDepth: 6
    functionLinenumber: 864
    functionLinenumberEnd: 917
    functionName: ospf_gr_helper_support_set_per_routerid
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - ospf_interface_neighbor_count
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - route_next
    - ospf_gr_helper_exit
    - hash_lookup
    - if
    - hash_release
    - ospf_disable_rtr_hash_free
    linkageType: ''
    returnType: void
    signature: "void ospf_gr_helper_support_set_per_routerid(struct ospf *ospf,\n\t\t\t\t\t
      \    struct in_addr *advrtr,\n\t\t\t\t\t     bool support)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf
    - enabled
    argTypes:
    - struct ospf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 943
    functionName: ospf_gr_helper_lsa_check_set
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_gr_helper_lsa_check_set(struct ospf *ospf, bool enabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ospf
    - interval
    argTypes:
    - struct ospf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 961
    functionName: ospf_gr_helper_supported_gracetime_set
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ospf_gr_helper_supported_gracetime_set(struct ospf *ospf,\n\t\t\t\t\t
      \   uint32_t interval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ospf
    - planned_only
    argTypes:
    - struct ospf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 980
    functionName: ospf_gr_helper_set_supported_planned_only_restart
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ospf_gr_helper_set_supported_planned_only_restart(struct ospf
      *ospf,\n\t\t\t\t\t\t      bool planned_only)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1013,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1015,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1022,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1024,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_gr_helper.c:1026,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_gr_helper.c:1027,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1029,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1031,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1032,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1034,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1035,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr_helper.c:1039,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1041,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1044,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1046,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1048,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1050,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1055,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1058,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_gr_helper.c:1059,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1061,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_gr_helper.c:1062,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1065,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1068,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1070,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1072,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1074,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1079,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1082,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_gr_helper.c:1083,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1086,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_gr_helper.c:1087,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1091,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1094,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1096,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1098,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1100,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_gr_helper.c:1105,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1108,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1111,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_gr_helper.c:1116,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr_helper.c:1117,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_gr_helper.c:1119,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_gr_helper.c:1120,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 68
    argCount: 3
    argNames:
    - vty
    - json
    - lsa
    argTypes:
    - struct vty*
    - struct json_object*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 995
    functionDepth: 2
    functionLinenumber: 995
    functionLinenumberEnd: 1125
    functionName: show_ospf_grace_lsa_info
    functionSourceFile: /src/frr/ospfd/ospf_gr_helper.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - vty_out
    - ospf_restart_reason2str
    - ntohs
    - zlog_debug
    - TLV_HDR_NEXT
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: void
    signature: "void show_ospf_grace_lsa_info(struct vty *vty, struct json_object
      *json,\n\t\t\t\t     struct ospf_lsa *lsa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/ospfd/ospf_ti_lfa.c:42,1
    - Dst: snprintfrr
      Src: /src/frr/ospfd/ospf_ti_lfa.c:47,1
    - Dst: snprintfrr
      Src: /src/frr/ospfd/ospf_ti_lfa.c:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - protected_resource
    - buf
    argTypes:
    - struct protected_resource*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 56
    functionName: ospf_print_protected_resource
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - snprintfrr
    linkageType: ''
    returnType: void
    signature: "void ospf_print_protected_resource(\n\tstruct protected_resource *protected_resource,
      char *buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_lookup
      Src: /src/frr/ospfd/ospf_ti_lfa.c:66,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_ti_lfa.c:67,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:71,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_ti_lfa.c:78,1
    - Dst: ospf_spf_vertex_parent_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:79,1
    - Dst: ospf_ti_lfa_find_p_node
      Src: /src/frr/ospfd/ospf_ti_lfa.c:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - pc_node
    - p_space
    - q_space
    argTypes:
    - struct vertex*
    - struct p_space*
    - struct q_space*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 97
    functionName: ospf_ti_lfa_find_p_node
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - ospf_spf_vertex_find
    - ospf_spf_vertex_parent_find
    - listnode_lookup
    - ospf_ti_lfa_find_p_node
    - listgetdata
    linkageType: ''
    returnType: enum ospf_ti_lfa_p_q_space_adjacency
    signature: "enum ospf_ti_lfa_p_q_space_adjacency ospf_ti_lfa_find_p_node(struct
      vertex *pc_node, struct p_space *p_space,\n\t\t\tstruct q_space *q_space)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_lookup
      Src: /src/frr/ospfd/ospf_ti_lfa.c:107,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_ti_lfa.c:109,1
    - Dst: ospf_spf_vertex_parent_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:111,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:113,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:114,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ti_lfa.c:117,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:134,1
    - Dst: ospf_ti_lfa_find_q_node
      Src: /src/frr/ospfd/ospf_ti_lfa.c:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - pc_node
    - p_space
    - q_space
    argTypes:
    - struct vertex*
    - struct p_space*
    - struct q_space*
    assertStmts:
    - condition: (q_node)
      pos:
        line_end: 116
        line_start: 116
        source_file: /src/frr/ospfd/ospf_ti_lfa.c
    constantsTouched: []
    func_position:
      end: 149
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 149
    functionName: ospf_ti_lfa_find_q_node
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - ospf_spf_vertex_find
    - ospf_spf_vertex_parent_find
    - listnode_lookup
    - ospf_ti_lfa_find_q_node
    - listgetdata
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf_ti_lfa_find_q_node(struct vertex *pc_node,\n\t\t\t\t    struct
      p_space *p_space,\n\t\t\t\t    struct q_space *q_space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - label_stack
    - labels
    - num_labels
    argTypes:
    - struct mpls_label_stack*
    - mpls_label_t[]
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 164
    functionName: ospf_ti_lfa_append_label_stack
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ospf_ti_lfa_append_label_stack(struct mpls_label_stack *label_stack,\n\t\t\t\t\t
      \  mpls_label_t labels[],\n\t\t\t\t\t   uint32_t num_labels)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - labels
    - num_labels
    argTypes:
    - mpls_label_t[]
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 188
    functionName: ospf_ti_lfa_create_label_stack
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct mpls_label_stack
    signature: 'struct mpls_label_stack *

      ospf_ti_lfa_create_label_stack(mpls_label_t labels[], uint32_t num_labels)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ti_lfa.c:198,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:200,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:201,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ti_lfa.c:202,1
    - Dst: ospf_ti_lfa_cut_out_pc_path
      Src: /src/frr/ospfd/ospf_ti_lfa.c:208,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ti_lfa.c:217,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:218,1
    - Dst: listnode_lookup
      Src: /src/frr/ospfd/ospf_ti_lfa.c:219,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_ti_lfa.c:223,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ti_lfa.c:224,1
    - Dst: ospf_ti_lfa_generate_inner_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:235,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_ti_lfa.c:271,1
    - Dst: ospf_sr_get_adj_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - path
    - pc_vertex_list
    argTypes:
    - struct list*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 274
    functionName: ospf_ti_lfa_map_path_to_pc_vertices
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 0
    functionsReached:
    - ospf_spf_vertex_find
    - ospf_ti_lfa_generate_inner_label_stack
    - ALL_LIST_ELEMENTS_RO
    - ospf_ti_lfa_cut_out_pc_path
    - listnode_lookup
    - listnode_add
    - list_new
    - listgetdata
    - ospf_sr_get_adj_sid_by_id
    linkageType: ''
    returnType: struct list
    signature: "struct list *\nospf_ti_lfa_map_path_to_pc_vertices(struct list *path,\n\t\t\t\t
      \   struct list *pc_vertex_list)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:383,1
    - Dst: listnode_head
      Src: /src/frr/ospfd/ospf_ti_lfa.c:387,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:391,1
    - Dst: ospf_ti_lfa_find_q_node
      Src: /src/frr/ospfd/ospf_ti_lfa.c:397,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:400,1
    - Dst: ospf_spf_vertex_parent_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:410,1
    - Dst: ospf_sr_get_adj_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:412,1
    - Dst: ospf_sr_get_prefix_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:416,1
    - Dst: ospf_ti_lfa_create_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:420,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:427,1
    - Dst: ospf_ti_lfa_find_p_node
      Src: /src/frr/ospfd/ospf_ti_lfa.c:429,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:433,1
    - Dst: ospf_sr_get_adj_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:450,1
    - Dst: ospf_ti_lfa_create_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:454,1
    - Dst: ospf_spf_vertex_parent_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:467,1
    - Dst: ospf_sr_get_adj_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:469,1
    - Dst: ospf_sr_get_prefix_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:473,1
    - Dst: ospf_sr_get_adj_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:476,1
    - Dst: ospf_ti_lfa_create_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:481,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:494,1
    - Dst: ospf_ti_lfa_generate_inner_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:498,1
    - Dst: ospf_ti_lfa_create_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:512,1
    - Dst: ospf_spf_vertex_parent_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:525,1
    - Dst: ospf_sr_get_adj_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:534,1
    - Dst: ospf_ti_lfa_create_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:538,1
    - Dst: ospf_ti_lfa_append_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:539,1
    - Dst: ospf_sr_get_prefix_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:546,1
    - Dst: ospf_ti_lfa_create_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:549,1
    - Dst: ospf_ti_lfa_append_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:550,1
    - Dst: ospf_spf_vertex_parent_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:558,1
    - Dst: ospf_sr_get_adj_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:565,1
    - Dst: ospf_ti_lfa_append_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:568,1
    - Dst: ospf_sr_get_prefix_sid_by_id
      Src: /src/frr/ospfd/ospf_ti_lfa.c:572,1
    - Dst: ospf_ti_lfa_append_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:574,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 71
    argCount: 3
    argNames:
    - area
    - p_space
    - q_space
    argTypes:
    - struct ospf_area*
    - struct p_space*
    - struct q_space*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 582
    functionName: ospf_ti_lfa_generate_label_stack
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 0
    functionsReached:
    - ospf_spf_vertex_find
    - ospf_spf_vertex_parent_find
    - ospf_ti_lfa_create_label_stack
    - XCALLOC
    - ospf_sr_get_prefix_sid_by_id
    - ospf_ti_lfa_generate_inner_label_stack
    - ospf_ti_lfa_append_label_stack
    - zlog_debug
    - ospf_ti_lfa_find_p_node
    - ospf_ti_lfa_find_q_node
    - listnode_head
    - ospf_sr_get_adj_sid_by_id
    linkageType: ''
    returnType: void
    signature: "void ospf_ti_lfa_generate_label_stack(struct ospf_area *area,\n\t\t\t\t\t
      \    struct p_space *p_space,\n\t\t\t\t\t     struct q_space *q_space)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:592,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:595,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ti_lfa.c:601,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ti_lfa.c:602,1
    - Dst: listnode_head
      Src: /src/frr/ospfd/ospf_ti_lfa.c:606,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ti_lfa.c:610,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - pc_vertex_list
    - dest
    argTypes:
    - struct list*
    - struct vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 615
    functionName: ospf_ti_lfa_generate_post_convergence_path
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 0
    functionsReached:
    - ospf_spf_vertex_find
    - listnode_add
    - zlog_debug
    - list_new
    - listnode_head
    linkageType: ''
    returnType: struct list
    signature: "struct list *\nospf_ti_lfa_generate_post_convergence_path(struct list
      *pc_vertex_list,\n\t\t\t\t\t   struct vertex *dest)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ospf_print_protected_resource
      Src: /src/frr/ospfd/ospf_ti_lfa.c:630,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:643,1
    - Dst: ospf_ti_lfa_generate_q_spaces
      Src: /src/frr/ospfd/ospf_ti_lfa.c:644,1
    - Dst: q_spaces_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:653,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:656,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:657,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:659,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_ti_lfa.c:662,1
    - Dst: ospf_spf_calculate
      Src: /src/frr/ospfd/ospf_ti_lfa.c:669,1
    - Dst: ospf_ti_lfa_map_path_to_pc_vertices
      Src: /src/frr/ospfd/ospf_ti_lfa.c:680,1
    - Dst: ospf_ti_lfa_generate_post_convergence_path
      Src: /src/frr/ospfd/ospf_ti_lfa.c:683,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ti_lfa.c:688,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:693,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:694,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:695,1
    - Dst: ospf_spf_remove_resource
      Src: /src/frr/ospfd/ospf_ti_lfa.c:701,1
    - Dst: ospf_ti_lfa_generate_label_stack
      Src: /src/frr/ospfd/ospf_ti_lfa.c:708,1
    - Dst: mpls_label2str
      Src: /src/frr/ospfd/ospf_ti_lfa.c:711,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ti_lfa.c:714,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ti_lfa.c:719,1
    - Dst: q_spaces_add
      Src: /src/frr/ospfd/ospf_ti_lfa.c:726,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:730,1
    - Dst: ospf_ti_lfa_generate_q_spaces
      Src: /src/frr/ospfd/ospf_ti_lfa.c:731,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_ti_lfa.c:741,1
    - Dst: ospf_spf_calculate
      Src: /src/frr/ospfd/ospf_ti_lfa.c:760,1
    - Dst: ospf_ti_lfa_generate_p_space
      Src: /src/frr/ospfd/ospf_ti_lfa.c:770,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ti_lfa.c:779,1
    - Dst: ospf_spf_copy
      Src: /src/frr/ospfd/ospf_ti_lfa.c:782,1
    - Dst: listnode_head
      Src: /src/frr/ospfd/ospf_ti_lfa.c:783,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:789,1
    - Dst: q_spaces_init
      Src: /src/frr/ospfd/ospf_ti_lfa.c:790,1
    - Dst: ospf_spf_remove_resource
      Src: /src/frr/ospfd/ospf_ti_lfa.c:793,1
    - Dst: ospf_ti_lfa_generate_post_convergence_spf
      Src: /src/frr/ospfd/ospf_ti_lfa.c:804,1
    - Dst: ospf_ti_lfa_generate_q_spaces
      Src: /src/frr/ospfd/ospf_ti_lfa.c:807,1
    - Dst: p_spaces_add
      Src: /src/frr/ospfd/ospf_ti_lfa.c:814,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:829,1
    - Dst: p_spaces_init
      Src: /src/frr/ospfd/ospf_ti_lfa.c:830,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ti_lfa.c:843,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ti_lfa.c:845,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:860,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:865,1
    - Dst: ospf_ti_lfa_generate_p_space
      Src: /src/frr/ospfd/ospf_ti_lfa.c:869,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ti_lfa.c:884,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:887,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:892,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ti_lfa.c:905,1
    - Dst: prefix_match
      Src: /src/frr/ospfd/ospf_ti_lfa.c:905,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ti_lfa.c:906,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:910,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 101
    argCount: 5
    argNames:
    - area
    - p_space
    - dest
    - recursive
    - pc_path
    argTypes:
    - struct ospf_area*
    - struct p_space*
    - struct vertex*
    - bool
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 617
    functionDepth: 3
    functionLinenumber: 617
    functionLinenumberEnd: 924
    functionName: ospf_ti_lfa_generate_q_spaces
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - ntohs
    - ospf_spf_calculate
    - ospf_spf_remove_resource
    - ospf_spf_copy
    - ospf_ti_lfa_map_path_to_pc_vertices
    - XCALLOC
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - ospf_print_protected_resource
    - ospf_ti_lfa_generate_post_convergence_spf
    - if
    - ospf_ti_lfa_generate_label_stack
    - zlog_info
    - p_spaces_add
    - ip_masklen
    - XFREE
    - listnode_head
    - ospf_ti_lfa_generate_q_spaces
    - ospf_spf_vertex_find
    - q_spaces_find
    - ospf_ti_lfa_generate_p_space
    - mpls_label2str
    - route_table_init
    - q_spaces_add
    - p_spaces_init
    - list_new
    - q_spaces_init
    - ospf_ti_lfa_generate_post_convergence_path
    linkageType: ''
    returnType: void
    signature: "void ospf_ti_lfa_generate_q_spaces(struct ospf_area *area,\n\t\t\t\t\t
      \ struct p_space *p_space,\n\t\t\t\t\t  struct vertex *dest, bool recursive,\n\t\t\t\t\t
      \ struct list *pc_path)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:829,1
    - Dst: p_spaces_init
      Src: /src/frr/ospfd/ospf_ti_lfa.c:830,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ti_lfa.c:843,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ti_lfa.c:845,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:860,1
    - Dst: ospf_spf_vertex_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:865,1
    - Dst: ospf_ti_lfa_generate_p_space
      Src: /src/frr/ospfd/ospf_ti_lfa.c:869,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ti_lfa.c:884,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:887,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:892,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ti_lfa.c:905,1
    - Dst: prefix_match
      Src: /src/frr/ospfd/ospf_ti_lfa.c:905,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ti_lfa.c:906,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:910,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - area
    - protection_type
    argTypes:
    - struct ospf_area*
    - enum protection_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 923
    functionName: ospf_ti_lfa_generate_p_spaces
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - ospf_spf_vertex_find
    - zlog_info
    - XCALLOC
    - prefix_match
    - ospf_ti_lfa_generate_p_space
    - ALL_LIST_ELEMENTS_RO
    - ip_masklen
    - ntohs
    - p_spaces_init
    - if
    linkageType: ''
    returnType: void
    signature: "void ospf_ti_lfa_generate_p_spaces(struct ospf_area *area,\n\t\t\t\t
      \  enum protection_type protection_type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/ospfd/ospf_ti_lfa.c:935,1
    - Dst: ospf_spf_vertex_by_nexthop
      Src: /src/frr/ospfd/ospf_ti_lfa.c:946,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - area
    - path
    argTypes:
    - struct ospf_area*
    - struct ospf_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 956
    functionName: ospf_ti_lfa_get_p_space_by_path
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 0
    functionsReached:
    - ospf_spf_vertex_by_nexthop
    - frr_each
    linkageType: ''
    returnType: struct p_space
    signature: "struct p_space *ospf_ti_lfa_get_p_space_by_path(struct ospf_area *area,\n\t\t\t\t\t\t
      \      struct ospf_path *path)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ti_lfa.c:970,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ti_lfa.c:970,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ti_lfa.c:976,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ti_lfa.c:982,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:983,1
    - Dst: ospf_ti_lfa_get_p_space_by_path
      Src: /src/frr/ospfd/ospf_ti_lfa.c:988,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:991,1
    - Dst: q_spaces_find
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1000,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1004,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1013,1
    - Dst: mpls_label2str
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1034,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1040,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1047,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - area
    - new_table
    argTypes:
    - struct ospf_area*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 958
    functionDepth: 1
    functionLinenumber: 958
    functionLinenumberEnd: 1053
    functionName: ospf_ti_lfa_insert_backup_paths
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - ospf_ti_lfa_get_p_space_by_path
    - q_spaces_find
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - mpls_label2str
    - route_next
    - zlog_debug
    - if
    linkageType: ''
    returnType: void
    signature: "void ospf_ti_lfa_insert_backup_paths(struct ospf_area *area,\n\t\t\t\t
      \    struct route_table *new_table)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: p_spaces_pop
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1062,1
    - Dst: q_spaces_pop
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1063,1
    - Dst: ospf_spf_cleanup
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1064,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1067,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1069,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1070,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1071,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1072,1
    - Dst: ospf_spf_cleanup
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1075,1
    - Dst: ospf_spf_cleanup
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1076,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1077,1
    - Dst: q_spaces_fini
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1079,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1080,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1081,1
    - Dst: p_spaces_fini
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1084,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1085,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1057
    functionDepth: 0
    functionLinenumber: 1057
    functionLinenumberEnd: 1086
    functionName: ospf_ti_lfa_free_p_spaces
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - p_spaces_pop
    - list_delete
    - ospf_spf_cleanup
    - p_spaces_fini
    - XFREE
    - q_spaces_pop
    - q_spaces_fini
    linkageType: ''
    returnType: void
    signature: void ospf_ti_lfa_free_p_spaces(struct ospf_area *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ti_lfa_generate_p_spaces
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1096,1
    - Dst: ospf_ti_lfa_insert_backup_paths
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1099,1
    - Dst: ospf_ti_lfa_free_p_spaces
      Src: /src/frr/ospfd/ospf_ti_lfa.c:1102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - area
    - new_table
    - protection_type
    argTypes:
    - struct ospf_area*
    - struct route_table*
    - enum protection_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1088
    functionDepth: 2
    functionLinenumber: 1088
    functionLinenumberEnd: 1103
    functionName: ospf_ti_lfa_compute
    functionSourceFile: /src/frr/ospfd/ospf_ti_lfa.c
    functionUses: 1
    functionsReached:
    - ospf_ti_lfa_generate_p_spaces
    - ospf_ti_lfa_insert_backup_paths
    - ospf_ti_lfa_free_p_spaces
    linkageType: ''
    returnType: void
    signature: "void ospf_ti_lfa_compute(struct ospf_area *area, struct route_table
      *new_table,\n\t\t\t enum protection_type protection_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_te.c:92,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:107,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_te.c:119,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:126,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_te.c:133,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:140,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:147,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_te.c:151,1
    - Dst: ospf_mpls_te_register_vty
      Src: /src/frr/ospfd/ospf_te.c:154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 157
    functionName: ospf_mpls_te_init
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - memset
    - ospf_register_opaque_functab
    - list_new
    - ospf_mpls_te_register_vty
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_te.c:161,1
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_te.c:163,1
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_te.c:165,1
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_te.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 175
    functionName: ospf_mpls_te_term
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - list_delete
    - ospf_delete_opaque_functab
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_term(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 182
    functionName: ospf_mpls_te_finish
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_te.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 191
    functionName: del_mpls_te_link
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void del_mpls_te_link(void *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: get_mpls_te_instance_value
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_mpls_te_instance_value(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_te.c:210,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_te.c:223,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_te.c:223,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:227,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_te.c:240,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_te.c:240,1
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:242,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_te.c:244,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:246,1
    - Dst: listnextnode
      Src: /src/frr/ospfd/ospf_te.c:252,1
    - Dst: listnextnode
      Src: /src/frr/ospfd/ospf_te.c:253,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_te.c:254,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_te.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 260
    functionName: lookup_linkparams_by_ifp
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - listgetdata
    - IS_INTER_AS
    - ote_debug
    - IPV4_ADDR_SAME
    - if
    - ALL_LIST_ELEMENTS
    - for
    linkageType: ''
    returnType: struct mpls_te_link
    signature: struct mpls_te_link *lookup_linkparams_by_ifp(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:393,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - link_id
    argTypes:
    - struct mpls_te_link*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 397
    functionName: set_linkparams_link_id
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_link_id(struct mpls_te_link *lp,\n\t\t\t\t   struct
      in_addr link_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:403,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - lclif
    argTypes:
    - struct mpls_te_link*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 407
    functionName: set_linkparams_lclif_ipaddr
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_lclif_ipaddr(struct mpls_te_link *lp,\n\t\t\t\t\tstruct
      in_addr lclif)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:413,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - rmtif
    argTypes:
    - struct mpls_te_link*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 417
    functionName: set_linkparams_rmtif_ipaddr
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_rmtif_ipaddr(struct mpls_te_link *lp,\n\t\t\t\t\tstruct
      in_addr rmtif)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:422,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:423,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - te_metric
    argTypes:
    - struct mpls_te_link*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 426
    functionName: set_linkparams_te_metric
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_te_metric(struct mpls_te_link *lp,\n\t\t\t\t     uint32_t
      te_metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:430,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:431,1
    - Dst: htonf
      Src: /src/frr/ospfd/ospf_te.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - fp
    argTypes:
    - struct mpls_te_link*
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 434
    functionName: set_linkparams_max_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonf
    - htons
    linkageType: ''
    returnType: void
    signature: void set_linkparams_max_bw(struct mpls_te_link *lp, float fp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:438,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:439,1
    - Dst: htonf
      Src: /src/frr/ospfd/ospf_te.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - fp
    argTypes:
    - struct mpls_te_link*
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 442
    functionName: set_linkparams_max_rsv_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonf
    - htons
    linkageType: ''
    returnType: void
    signature: void set_linkparams_max_rsv_bw(struct mpls_te_link *lp, float fp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:448,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:449,1
    - Dst: htonf
      Src: /src/frr/ospfd/ospf_te.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - lp
    - priority
    - fp
    argTypes:
    - struct mpls_te_link*
    - int
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 452
    functionName: set_linkparams_unrsv_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonf
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_unrsv_bw(struct mpls_te_link *lp, int priority,\n\t\t\t\t
      \   float fp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:457,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:458,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - classcolor
    argTypes:
    - struct mpls_te_link*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 461
    functionName: set_linkparams_rsc_clsclr
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_rsc_clsclr(struct mpls_te_link *lp,\n\t\t\t\t
      \     uint32_t classcolor)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:468,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:469,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:472,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:473,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:474,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:479,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - lp
    - addr
    - as
    argTypes:
    - struct mpls_te_link*
    - struct in_addr
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 482
    functionName: set_linkparams_inter_as
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - SET_FLAG
    - UNSET_FLAG
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_inter_as(struct mpls_te_link *lp,\n\t\t\t\t    struct
      in_addr addr, uint32_t as)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:488,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:489,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:490,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:492,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:493,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:494,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - lp
    argTypes:
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 499
    functionName: unset_linkparams_inter_as
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - UNSET_FLAG
    - htons
    linkageType: ''
    returnType: void
    signature: void unset_linkparams_inter_as(struct mpls_te_link *lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:505,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:506,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:507,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - lp
    - local
    - remote
    argTypes:
    - struct mpls_te_link*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 509
    functionName: set_linkparams_llri
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_llri(struct mpls_te_link *lp, uint32_t local,\n\t\t\t
      uint32_t remote)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:515,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - lp
    - local
    - remote
    argTypes:
    - struct mpls_te_link*
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 519
    functionName: set_linkparams_lrrid
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_lrrid(struct mpls_te_link *lp, struct in_addr
      local,\n\t\t\t  struct in_addr remote)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:526,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:527,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - lp
    - delay
    - anormal
    argTypes:
    - struct mpls_te_link*
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 533
    functionName: set_linkparams_av_delay
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_av_delay(struct mpls_te_link *lp, uint32_t delay,\n\t\t\t\t
      \   uint8_t anormal)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:540,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:541,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:545,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - lp
    - low
    - high
    - anormal
    argTypes:
    - struct mpls_te_link*
    - uint32_t
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 548
    functionName: set_linkparams_mm_delay
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_mm_delay(struct mpls_te_link *lp, uint32_t low,\n\t\t\t\t
      \   uint32_t high, uint8_t anormal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:553,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:554,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - jitter
    argTypes:
    - struct mpls_te_link*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 557
    functionName: set_linkparams_delay_var
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: void set_linkparams_delay_var(struct mpls_te_link *lp, uint32_t jitter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:564,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:565,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - lp
    - loss
    - anormal
    argTypes:
    - struct mpls_te_link*
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 571
    functionName: set_linkparams_pkt_loss
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    linkageType: ''
    returnType: void
    signature: "void set_linkparams_pkt_loss(struct mpls_te_link *lp, uint32_t loss,\n\t\t\t\t
      \   uint8_t anormal)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:576,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:577,1
    - Dst: htonf
      Src: /src/frr/ospfd/ospf_te.c:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - fp
    argTypes:
    - struct mpls_te_link*
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 580
    functionName: set_linkparams_res_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonf
    - htons
    linkageType: ''
    returnType: void
    signature: void set_linkparams_res_bw(struct mpls_te_link *lp, float fp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:585,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:586,1
    - Dst: htonf
      Src: /src/frr/ospfd/ospf_te.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - fp
    argTypes:
    - struct mpls_te_link*
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 589
    functionName: set_linkparams_ava_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonf
    - htons
    linkageType: ''
    returnType: void
    signature: void set_linkparams_ava_bw(struct mpls_te_link *lp, float fp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:594,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:595,1
    - Dst: htonf
      Src: /src/frr/ospfd/ospf_te.c:596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lp
    - fp
    argTypes:
    - struct mpls_te_link*
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 598
    functionName: set_linkparams_use_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - htonf
    - htons
    linkageType: ''
    returnType: void
    signature: void set_linkparams_use_bw(struct mpls_te_link *lp, float fp)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:608,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/ospfd/ospf_te.c:613,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:614,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:621,1
    - Dst: set_linkparams_rsc_clsclr
      Src: /src/frr/ospfd/ospf_te.c:622,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:624,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:626,1
    - Dst: set_linkparams_max_bw
      Src: /src/frr/ospfd/ospf_te.c:627,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:629,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:631,1
    - Dst: set_linkparams_max_rsv_bw
      Src: /src/frr/ospfd/ospf_te.c:632,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:634,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:636,1
    - Dst: set_linkparams_unrsv_bw
      Src: /src/frr/ospfd/ospf_te.c:638,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:641,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:643,1
    - Dst: set_linkparams_te_metric
      Src: /src/frr/ospfd/ospf_te.c:644,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:646,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:649,1
    - Dst: set_linkparams_av_delay
      Src: /src/frr/ospfd/ospf_te.c:650,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:652,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:654,1
    - Dst: set_linkparams_mm_delay
      Src: /src/frr/ospfd/ospf_te.c:655,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:658,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:660,1
    - Dst: set_linkparams_delay_var
      Src: /src/frr/ospfd/ospf_te.c:661,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:663,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:665,1
    - Dst: set_linkparams_pkt_loss
      Src: /src/frr/ospfd/ospf_te.c:666,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:668,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:670,1
    - Dst: set_linkparams_res_bw
      Src: /src/frr/ospfd/ospf_te.c:671,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:673,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:675,1
    - Dst: set_linkparams_ava_bw
      Src: /src/frr/ospfd/ospf_te.c:676,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:678,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:680,1
    - Dst: set_linkparams_use_bw
      Src: /src/frr/ospfd/ospf_te.c:681,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_te.c:683,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/ospfd/ospf_te.c:686,1
    - Dst: IS_STD_TE
      Src: /src/frr/ospfd/ospf_te.c:688,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:689,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:690,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:694,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:698,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:701,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_te.c:702,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_te.c:703,1
    - Dst: set_linkparams_inter_as
      Src: /src/frr/ospfd/ospf_te.c:707,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:710,1
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:716,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:717,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:718,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:721,1
    - Dst: unset_linkparams_inter_as
      Src: /src/frr/ospfd/ospf_te.c:723,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 69
    argCount: 1
    argNames:
    - lp
    argTypes:
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 601
    functionDepth: 11
    functionLinenumber: 601
    functionLinenumberEnd: 725
    functionName: update_linkparams
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - IS_STD_TE
    - set_linkparams_te_metric
    - ospf_mpls_te_lsa_schedule
    - HAS_LINK_PARAMS
    - set_linkparams_unrsv_bw
    - ospf_lookup_by_vrf_id
    - set_linkparams_av_delay
    - TLV_TYPE
    - IS_INTER_AS
    - IS_PARAM_SET
    - unset_linkparams_inter_as
    - set_linkparams_res_bw
    - set_linkparams_delay_var
    - ote_debug
    - UNSET_FLAG
    - set_linkparams_use_bw
    - set_linkparams_ava_bw
    - set_linkparams_max_bw
    - ospf_area_lookup_by_area_id
    - CHECK_FLAG
    - set_linkparams_rsc_clsclr
    - set_linkparams_pkt_loss
    - SET_FLAG
    - set_linkparams_inter_as
    - set_linkparams_mm_delay
    - set_linkparams_max_rsv_bw
    linkageType: ''
    returnType: void
    signature: void update_linkparams(struct mpls_te_link *lp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:733,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_te.c:737,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_te.c:737,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_te.c:737,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:747,1
    - Dst: set_linkparams_link_type
      Src: /src/frr/ospfd/ospf_te.c:757,1
    - Dst: set_linkparams_lclif_ipaddr
      Src: /src/frr/ospfd/ospf_te.c:760,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/ospfd/ospf_te.c:764,1
    - Dst: set_linkparams_rmtif_ipaddr
      Src: /src/frr/ospfd/ospf_te.c:766,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - lp
    argTypes:
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 773
    functionName: initialize_linkparams
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - route_top
    - set_linkparams_lclif_ipaddr
    - set_linkparams_rmtif_ipaddr
    - route_next
    - IF_OIFS
    - ote_debug
    - CONNECTED_PREFIX
    - set_linkparams_link_type
    linkageType: ''
    returnType: void
    signature: void initialize_linkparams(struct mpls_te_link *lp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:779,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:780,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:785,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:786,1
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:791,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:791,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:792,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - lp
    argTypes:
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 799
    functionName: is_mandated_params_set
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 2
    functionsReached:
    - ntohs
    - IS_INTER_AS
    - flog_warn
    linkageType: ''
    returnType: int
    signature: int is_mandated_params_set(struct mpls_te_link *lp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:809,1
    - Dst: lookup_linkparams_by_ifp
      Src: /src/frr/ospfd/ospf_te.c:813,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_te.c:816,1
    - Dst: get_mpls_te_instance_value
      Src: /src/frr/ospfd/ospf_te.c:818,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_te.c:834,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:836,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_te.c:837,1
    - Dst: type::type
      Src: /src/frr/ospfd/ospf_te.c:837,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 805
    functionDepth: 2
    functionLinenumber: 805
    functionLinenumberEnd: 841
    functionName: ospf_mpls_te_new_if
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - get_mpls_te_instance_value
    - listnode_add
    - ote_debug
    - flags::flags
    - type::type
    - lookup_linkparams_by_ifp
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_new_if(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup_linkparams_by_ifp
      Src: /src/frr/ospfd/ospf_te.c:848,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_te.c:852,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_te.c:854,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 861
    functionName: ospf_mpls_te_del_if
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - lookup_linkparams_by_ifp
    - XFREE
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_del_if(struct interface *ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:870,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/ospfd/ospf_te.c:871,1
    - Dst: lookup_linkparams_by_ifp
      Src: /src/frr/ospfd/ospf_te.c:874,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:875,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/ospfd/ospf_te.c:883,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:884,1
    - Dst: update_linkparams
      Src: /src/frr/ospfd/ospf_te.c:887,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:893,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:894,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:897,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:903,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:904,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 866
    functionDepth: 12
    functionLinenumber: 866
    functionLinenumberEnd: 911
    functionName: ospf_mpls_te_update_if
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - update_linkparams
    - CHECK_FLAG
    - ote_debug
    - SET_FLAG
    - ospf_mpls_te_lsa_schedule
    - HAS_LINK_PARAMS
    - lookup_linkparams_by_ifp
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_update_if(struct interface *ifp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lookup_linkparams_by_ifp
      Src: /src/frr/ospfd/ospf_te.c:923,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:925,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:928,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:933,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:936,1
    - Dst: set_linkparams_link_type
      Src: /src/frr/ospfd/ospf_te.c:949,1
    - Dst: set_linkparams_lclif_ipaddr
      Src: /src/frr/ospfd/ospf_te.c:950,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:955,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:956,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:958,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:959,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:967,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:968,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - oi
    - old_state
    argTypes:
    - struct ospf_interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 971
    functionName: ospf_mpls_te_ism_change
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - CHECK_FLAG
    - set_linkparams_lclif_ipaddr
    - ote_debug
    - ospf_mpls_te_lsa_schedule
    - lookup_linkparams_by_ifp
    - set_linkparams_link_type
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_ism_change(struct ospf_interface *oi, int old_state)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lookup_linkparams_by_ifp
      Src: /src/frr/ospfd/ospf_te.c:988,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:990,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:993,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:998,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:1001,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1008,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1009,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:1011,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:1012,1
    - Dst: set_linkparams_link_id
      Src: /src/frr/ospfd/ospf_te.c:1027,1
    - Dst: set_linkparams_rmtif_ipaddr
      Src: /src/frr/ospfd/ospf_te.c:1029,1
    - Dst: set_linkparams_link_id
      Src: /src/frr/ospfd/ospf_te.c:1036,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_te.c:1036,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1042,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1043,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_te.c:1045,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:1046,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1053,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1058,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:1059,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:1061,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 2
    argNames:
    - nbr
    - old_state
    argTypes:
    - struct ospf_neighbor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 978
    functionDepth: 2
    functionLinenumber: 978
    functionLinenumberEnd: 1064
    functionName: ospf_mpls_te_nsm_change
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - DR
    - flog_warn
    - CHECK_FLAG
    - set_linkparams_link_id
    - ote_debug
    - ospf_mpls_te_lsa_schedule
    - lookup_linkparams_by_ifp
    - set_linkparams_rmtif_ipaddr
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_nsm_change(struct ospf_neighbor *nbr, int old_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_te.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s
    - tlvh
    argTypes:
    - struct stream*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1074
    functionName: build_tlv_header
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 2
    functionsReached:
    - stream_put
    linkageType: ''
    returnType: void
    signature: void build_tlv_header(struct stream *s, struct tlv_header *tlvh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:1079,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_te.c:1080,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_te.c:1081,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_te.c:1081,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_te.c:1081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1076
    functionDepth: 1
    functionLinenumber: 1076
    functionLinenumberEnd: 1084
    functionName: build_router_tlv
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - stream_put
    - TLV_BODY_SIZE
    - build_tlv_header
    - ntohs
    - TLV_DATA
    linkageType: ''
    returnType: void
    signature: void build_router_tlv(struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:1089,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_te.c:1090,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_te.c:1091,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_te.c:1091,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_te.c:1091,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - s
    - tlvh
    argTypes:
    - struct stream*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1086
    functionDepth: 1
    functionLinenumber: 1086
    functionLinenumberEnd: 1094
    functionName: build_link_subtlv
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - stream_put
    - TLV_BODY_SIZE
    - build_tlv_header
    - ntohs
    - TLV_DATA
    linkageType: ''
    returnType: void
    signature: void build_link_subtlv(struct stream *s, struct tlv_header *tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_linkparams_link_header
      Src: /src/frr/ospfd/ospf_te.c:1098,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_te.c:1099,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1101,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1102,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1103,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1104,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1105,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1106,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1107,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1108,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1109,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1110,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1111,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1112,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1113,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1114,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1115,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1116,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1117,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1118,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1119,1
    - Dst: build_link_subtlv
      Src: /src/frr/ospfd/ospf_te.c:1120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 2
    argNames:
    - s
    - lp
    argTypes:
    - struct stream*
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1096
    functionDepth: 2
    functionLinenumber: 1096
    functionLinenumberEnd: 1123
    functionName: build_link_tlv
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - build_link_subtlv
    - set_linkparams_link_header
    - build_tlv_header
    linkageType: ''
    returnType: void
    signature: void build_link_tlv(struct stream *s, struct mpls_te_link *lp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:1132,1
    - Dst: build_router_tlv
      Src: /src/frr/ospfd/ospf_te.c:1133,1
    - Dst: build_link_tlv
      Src: /src/frr/ospfd/ospf_te.c:1139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - s
    - lp
    argTypes:
    - struct stream*
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1125
    functionDepth: 3
    functionLinenumber: 1125
    functionLinenumberEnd: 1141
    functionName: ospf_mpls_te_lsa_body_set
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - IS_INTER_AS
    - build_link_tlv
    - build_router_tlv
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_lsa_body_set(struct stream *s, struct mpls_te_link
      *lp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_te.c:1157,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_te.c:1158,1
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:1163,1
    - Dst: IS_FLOOD_AS
      Src: /src/frr/ospfd/ospf_te.c:1164,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_te.c:1171,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/ospfd/ospf_te.c:1173,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_te.c:1176,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:1177,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_te.c:1180,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_te.c:1184,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_te.c:1186,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/ospfd/ospf_te.c:1187,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_te.c:1189,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:1191,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_te.c:1192,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1196,1
    - Dst: ospf_mpls_te_lsa_body_set
      Src: /src/frr/ospfd/ospf_te.c:1201,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_te.c:1204,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:1205,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_te.c:1208,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1213,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_te.c:1213,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:1214,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_te.c:1215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 3
    argNames:
    - ospf
    - area
    - lp
    argTypes:
    - struct ospf*
    - struct ospf_area*
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1144
    functionDepth: 4
    functionLinenumber: 1144
    functionLinenumberEnd: 1218
    functionName: ospf_mpls_te_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - SET_OPAQUE_LSID
    - stream_free
    - lsa_header_set
    - stream_new
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - IS_FLOOD_AS
    - STREAM_DATA
    - stream_get_endp
    - IS_INTER_AS
    - ote_debug
    - ospf_mpls_te_lsa_body_set
    - SET_FLAG
    - LSA_OPTIONS_GET
    - flags::flags
    - htonl
    - LSA_OPTIONS_NSSA_GET
    - memcpy
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_mpls_te_lsa_new(struct ospf *ospf,\n\t\t\t\t\t
      \    struct ospf_area *area,\n\t\t\t\t\t     struct mpls_te_link *lp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_mpls_te_lsa_new::ospf_mpls_te_lsa_new
      Src: /src/frr/ospfd/ospf_te.c:1227,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1229,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_te.c:1235,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1236,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1243,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1250,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1252,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1252,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_te.c:1254,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_te.c:1255,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - area
    - lp
    argTypes:
    - struct ospf_area*
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1220
    functionDepth: 5
    functionLinenumber: 1220
    functionLinenumberEnd: 1259
    functionName: ospf_mpls_te_lsa_originate1
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_mpls_te_lsa_new::ospf_mpls_te_lsa_new
    - ospf_lsa_install
    - ote_debug
    - SET_FLAG
    - ospf_lsa_header_dump
    - data::data
    linkageType: ''
    returnType: int
    signature: "int ospf_mpls_te_lsa_originate1(struct ospf_area *area,\n\t\t\t\t
      \      struct mpls_te_link *lp)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1269,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_te.c:1274,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1276,1
    - Dst: IS_FLOOD_AS
      Src: /src/frr/ospfd/ospf_te.c:1277,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_te.c:1283,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1286,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1287,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1288,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1289,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:1292,1
    - Dst: is_mandated_params_set
      Src: /src/frr/ospfd/ospf_te.c:1297,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1298,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1305,1
    - Dst: ospf_mpls_te_lsa_originate1
      Src: /src/frr/ospfd/ospf_te.c:1309,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1261
    functionDepth: 6
    functionLinenumber: 1261
    functionLinenumberEnd: 1315
    functionName: ospf_mpls_te_lsa_originate_area
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - is_mandated_params_set
    - IS_FLOOD_AS
    - CHECK_FLAG
    - ote_debug
    - IPV4_ADDR_SAME
    - UNSET_FLAG
    - ALL_LIST_ELEMENTS
    - ospf_mpls_te_lsa_originate1
    - ospf_mpls_te_lsa_schedule
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_lsa_originate_area(void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_mpls_te_lsa_new::ospf_mpls_te_lsa_new
      Src: /src/frr/ospfd/ospf_te.c:1324,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1326,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_te.c:1333,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1334,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1341,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1348,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1350,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1350,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_te.c:1351,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_te.c:1352,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - top
    - lp
    argTypes:
    - struct ospf*
    - struct mpls_te_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1317
    functionDepth: 5
    functionLinenumber: 1317
    functionLinenumberEnd: 1357
    functionName: ospf_mpls_te_lsa_originate2
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_mpls_te_lsa_new::ospf_mpls_te_lsa_new
    - ospf_lsa_install
    - ote_debug
    - SET_FLAG
    - ospf_lsa_header_dump
    - data::data
    linkageType: ''
    returnType: int
    signature: "int ospf_mpls_te_lsa_originate2(struct ospf *top,\n\t\t\t\t       struct
      mpls_te_link *lp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1368,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_te.c:1374,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1376,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1377,1
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:1378,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1381,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1382,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1383,1
    - Dst: ospf_mpls_te_lsa_schedule
      Src: /src/frr/ospfd/ospf_te.c:1384,1
    - Dst: is_mandated_params_set
      Src: /src/frr/ospfd/ospf_te.c:1389,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1390,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1398,1
    - Dst: IS_FLOOD_AS
      Src: /src/frr/ospfd/ospf_te.c:1401,1
    - Dst: IS_FLOOD_AS
      Src: /src/frr/ospfd/ospf_te.c:1404,1
    - Dst: ospf_mpls_te_lsa_originate2
      Src: /src/frr/ospfd/ospf_te.c:1406,1
    - Dst: ospf_mpls_te_lsa_originate1
      Src: /src/frr/ospfd/ospf_te.c:1409,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1359
    functionDepth: 6
    functionLinenumber: 1359
    functionLinenumberEnd: 1415
    functionName: ospf_mpls_te_lsa_originate_as
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - is_mandated_params_set
    - IS_FLOOD_AS
    - CHECK_FLAG
    - ote_debug
    - IS_INTER_AS
    - UNSET_FLAG
    - ospf_mpls_te_lsa_originate2
    - ALL_LIST_ELEMENTS
    - ospf_mpls_te_lsa_originate1
    - ospf_mpls_te_lsa_schedule
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_lsa_originate_as(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_mpls_te_lsa_originate_as
      Src: /src/frr/ospfd/ospf_te.c:1428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1425
    functionDepth: 7
    functionLinenumber: 1425
    functionLinenumberEnd: 1431
    functionName: ospf_mpls_te_lsa_inter_as_as
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ospf_mpls_te_lsa_originate_as
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_lsa_inter_as_as(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_mpls_te_lsa_originate_area
      Src: /src/frr/ospfd/ospf_te.c:1436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1433
    functionDepth: 7
    functionLinenumber: 1433
    functionLinenumberEnd: 1439
    functionName: ospf_mpls_te_lsa_inter_as_area
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ospf_mpls_te_lsa_originate_area
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_lsa_inter_as_area(void *arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1454,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:1456,1
    - Dst: lookup_linkparams_by_instance
      Src: /src/frr/ospfd/ospf_te.c:1460,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1461,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:1464,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_te.c:1465,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1470,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1471,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_te.c:1474,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_te.c:1478,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1479,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_te.c:1480,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_te.c:1483,1
    - Dst: ospf_mpls_te_lsa_new::ospf_mpls_te_lsa_new
      Src: /src/frr/ospfd/ospf_te.c:1485,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1487,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1491,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_te.c:1491,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_te.c:1500,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1501,1
    - Dst: IS_FLOOD_AS
      Src: /src/frr/ospfd/ospf_te.c:1509,1
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_te.c:1510,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_te.c:1512,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1515,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1516,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1516,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_te.c:1517,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_te.c:1518,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_te.c:1518,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1441
    functionDepth: 5
    functionLinenumber: 1441
    functionLinenumberEnd: 1521
    functionName: ospf_mpls_te_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_lookup_by_vrf_id
    - htons
    - ospf_mpls_te_lsa_new::ospf_mpls_te_lsa_new
    - IS_FLOOD_AS
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - ospf_lsa_install
    - ospf_flood_through_as
    - ote_debug
    - lookup_linkparams_by_instance
    - UNSET_FLAG
    - ospf_lsa_header_dump
    - data::data
    - lsa_seqnum_increment
    - ospf_flood_through_area
    - ospf_opaque_lsa_flush_schedule
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_mpls_te_lsa_refresh(struct ospf_lsa *lsa)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:1530,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:1531,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_te.c:1532,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1535,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1538,1
    - Dst: IS_FLOOD_AS
      Src: /src/frr/ospfd/ospf_te.c:1547,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_te.c:1549,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:1550,1
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:1553,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_te.c:1556,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1560,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_te.c:1566,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_te.c:1569,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_te.c:1572,1
    - Dst: IS_FLOOD_AS
      Src: /src/frr/ospfd/ospf_te.c:1577,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_te.c:1578,1
    - Dst: IS_INTER_AS
      Src: /src/frr/ospfd/ospf_te.c:1582,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_te.c:1583,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_te.c:1587,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_te.c:1593,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_te.c:1598,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:1601,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - lp
    - opcode
    argTypes:
    - struct mpls_te_link*
    - enum lsa_opcode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1523
    functionDepth: 11
    functionLinenumber: 1523
    functionLinenumberEnd: 1606
    functionName: ospf_mpls_te_lsa_schedule
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 6
    functionsReached:
    - SET_OPAQUE_LSID
    - ospf_area_lookup_by_area_id
    - ospf_lookup_by_vrf_id
    - memset
    - flog_warn
    - IS_FLOOD_AS
    - CHECK_FLAG
    - ospf_opaque_lsa_refresh_schedule
    - ote_debug
    - IS_INTER_AS
    - htonl
    - ospf_opaque_lsa_flush_schedule
    - ospf_opaque_lsa_reoriginate_schedule
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_lsa_schedule(struct mpls_te_link *lp, enum lsa_opcode
      opcode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/ospfd/ospf_te.c:1637,1
    - Dst: ls_node_new
      Src: /src/frr/ospfd/ospf_te.c:1643,1
    - Dst: snprintfrr
      Src: /src/frr/ospfd/ospf_te.c:1644,1
    - Dst: ls_vertex_add
      Src: /src/frr/ospfd/ospf_te.c:1646,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_te.c:1649,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1623
    functionDepth: 1
    functionLinenumber: 1623
    functionLinenumberEnd: 1653
    functionName: get_vertex
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - snprintfrr
    - ls_find_vertex_by_id
    - ls_vertex_add
    - IS_LSA_SELF
    - ls_node_new
    linkageType: ''
    returnType: struct ls_vertex
    signature: struct ls_vertex *get_vertex(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_te.c:1674,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/ospfd/ospf_te.c:1675,1
    - Dst: ls_attributes_new
      Src: /src/frr/ospfd/ospf_te.c:1679,1
    - Dst: ls_edge_add
      Src: /src/frr/ospfd/ospf_te.c:1680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ted
    - adv
    - link_id
    argTypes:
    - struct ls_ted*
    - struct ls_node_id
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1665
    functionDepth: 1
    functionLinenumber: 1665
    functionLinenumberEnd: 1684
    functionName: get_edge
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ls_attributes_new
    - IPV4_ADDR_COPY
    - ls_edge_add
    - ls_find_edge_by_key
    linkageType: ''
    returnType: struct ls_edge
    signature: "struct ls_edge *get_edge(struct ls_ted *ted, struct ls_node_id adv,\n\t\t\t\tstruct
      in_addr link_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ls_vertex2msg
      Src: /src/frr/ospfd/ospf_te.c:1705,1
    - Dst: ls_send_msg
      Src: /src/frr/ospfd/ospf_te.c:1706,1
    - Dst: ls_edge2msg
      Src: /src/frr/ospfd/ospf_te.c:1709,1
    - Dst: ls_send_msg
      Src: /src/frr/ospfd/ospf_te.c:1710,1
    - Dst: ls_subnet2msg
      Src: /src/frr/ospfd/ospf_te.c:1713,1
    - Dst: ls_send_msg
      Src: /src/frr/ospfd/ospf_te.c:1714,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - type
    - link_state
    argTypes:
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1695
    functionDepth: 1
    functionLinenumber: 1695
    functionLinenumberEnd: 1722
    functionName: ospf_te_export
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ls_edge2msg
    - ls_subnet2msg
    - ls_vertex2msg
    - ls_send_msg
    linkageType: ''
    returnType: int
    signature: int ospf_te_export(uint8_t type, void *link_state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_edge
      Src: /src/frr/ospfd/ospf_te.c:1744,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1752,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1760,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1764,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:1769,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - ted
    - vertex
    - link_data
    - metric
    argTypes:
    - struct ls_ted*
    - struct ls_vertex*
    - struct in_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1733
    functionDepth: 2
    functionLinenumber: 1733
    functionLinenumberEnd: 1771
    functionName: ospf_te_update_link
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - get_edge
    - ospf_te_export
    - ote_debug
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void ospf_te_update_link(struct ls_ted *ted, struct ls_vertex *vertex,\n\t\t\t\tstruct
      in_addr link_data, uint8_t metric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ls_find_subnet
      Src: /src/frr/ospfd/ospf_te.c:1789,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/ospfd/ospf_te.c:1796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1800,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1806,1
    - Dst: ls_prefix_new
      Src: /src/frr/ospfd/ospf_te.c:1810,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1812,1
    - Dst: ls_subnet_add
      Src: /src/frr/ospfd/ospf_te.c:1814,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1817,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:1822,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - ted
    - vertex
    - p
    - metric
    argTypes:
    - struct ls_ted*
    - struct ls_vertex*
    - struct prefix*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1782
    functionDepth: 2
    functionLinenumber: 1782
    functionLinenumberEnd: 1824
    functionName: ospf_te_update_subnet
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ls_prefix_new
    - CHECK_FLAG
    - ospf_te_export
    - ls_find_subnet
    - ote_debug
    - SET_FLAG
    - ls_subnet_add
    - listnode_add_sort_nodup
    linkageType: ''
    returnType: void
    signature: "void ospf_te_update_subnet(struct ls_ted *ted, struct ls_vertex *vertex,\n\t\t\t\t
      \ struct prefix *p, uint8_t metric)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_find_subnet
      Src: /src/frr/ospfd/ospf_te.c:1842,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:1847,1
    - Dst: ls_subnet_del_all
      Src: /src/frr/ospfd/ospf_te.c:1848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ted
    - addr
    argTypes:
    - struct ls_ted*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1833
    functionDepth: 2
    functionLinenumber: 1833
    functionLinenumberEnd: 1850
    functionName: ospf_te_delete_subnet
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ospf_te_export
    - ls_subnet_del_all
    - ls_find_subnet
    linkageType: ''
    returnType: void
    signature: void ospf_te_delete_subnet(struct ls_ted *ted, struct in_addr addr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1876,1
    - Dst: get_vertex
      Src: /src/frr/ospfd/ospf_te.c:1880,1
    - Dst: IS_ROUTER_LSA_VIRTUAL
      Src: /src/frr/ospfd/ospf_te.c:1884,1
    - Dst: IS_ROUTER_LSA_EXTERNAL
      Src: /src/frr/ospfd/ospf_te.c:1886,1
    - Dst: IS_ROUTER_LSA_BORDER
      Src: /src/frr/ospfd/ospf_te.c:1888,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:1895,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1903,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:1908,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_te.c:1913,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_te.c:1916,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_te.c:1916,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:1921,1
    - Dst: ospf_te_update_link
      Src: /src/frr/ospfd/ospf_te.c:1928,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:1929,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:1934,1
    - Dst: ospf_te_update_subnet
      Src: /src/frr/ospfd/ospf_te.c:1935,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_te.c:1939,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:1943,1
    - Dst: ospf_te_update_subnet
      Src: /src/frr/ospfd/ospf_te.c:1944,1
    - Dst: ls_vertex_clean
      Src: /src/frr/ospfd/ospf_te.c:1953,1
    - Dst: ls_vertex_clean
      Src: /src/frr/ospfd/ospf_te.c:1955,1
    - Dst: ospf_te_delete_router_lsa
      Src: /src/frr/ospfd/ospf_te.c:1970,1
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/ospfd/ospf_te.c:1983,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:1987,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:1992,1
    - Dst: ls_vertex_del_all
      Src: /src/frr/ospfd/ospf_te.c:1995,1
    - Dst: ospf_te_update_remote_asbr
      Src: /src/frr/ospfd/ospf_te.c:2007,1
    - Dst: prefix
      Src: /src/frr/ospfd/ospf_te.c:2013,1
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/ospfd/ospf_te.c:2024,1
    - Dst: ls_node_new
      Src: /src/frr/ospfd/ospf_te.c:2030,1
    - Dst: snprintfrr
      Src: /src/frr/ospfd/ospf_te.c:2031,1
    - Dst: ls_vertex_add
      Src: /src/frr/ospfd/ospf_te.c:2033,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2038,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 1862
    functionDepth: 3
    functionLinenumber: 1862
    functionLinenumberEnd: 2049
    functionName: ospf_te_parse_router_lsa
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ospf_te_export
    - ntohs
    - IS_ROUTER_LSA_BORDER
    - prefix
    - ospf_te_update_link
    - ls_node_new
    - ALL_LIST_ELEMENTS_RO
    - IS_ROUTER_LSA_VIRTUAL
    - ospf_te_update_subnet
    - for
    - get_vertex
    - ip_masklen
    - ospf_te_update_remote_asbr
    - ote_debug
    - ls_find_vertex_by_id
    - ls_vertex_clean
    - CHECK_FLAG
    - snprintfrr
    - ospf_te_delete_router_lsa
    - SET_FLAG
    - IS_ROUTER_LSA_EXTERNAL
    - ls_vertex_del_all
    - ls_vertex_add
    linkageType: ''
    returnType: int
    signature: int ospf_te_parse_router_lsa(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:2140,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2144,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:2151,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2155,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_te.c:2160,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:2160,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_te.c:2165,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2166,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2168,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2170,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2173,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2175,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2178,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2179,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2180,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2183,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:2184,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2185,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2188,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:2189,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2190,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2193,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:2195,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2196,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2199,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2200,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2201,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2204,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2205,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2206,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2207,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2208,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2211,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2213,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2216,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2217,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2218,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2221,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2222,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2223,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2226,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2227,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2228,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2229,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2232,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2233,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2234,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2237,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2238,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2239,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2242,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:2243,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2244,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2247,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:2248,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2249,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2252,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:2253,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2254,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2259,1
    - Dst: get_edge
      Src: /src/frr/ospfd/ospf_te.c:2263,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2266,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_te.c:2272,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2273,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2278,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_te.c:2286,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2287,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2292,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_te.c:2299,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2299,1
    - Dst: ospf_te_update_remote_asbr
      Src: /src/frr/ospfd/ospf_te.c:2301,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2304,1
    - Dst: ls_find_edge_by_destination
      Src: /src/frr/ospfd/ospf_te.c:2307,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/ospfd/ospf_te.c:2312,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/ospfd/ospf_te.c:2320,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2328,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2332,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 166
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2337
      start: 2123
    functionDepth: 2
    functionLinenumber: 2123
    functionLinenumberEnd: 2337
    functionName: ospf_te_parse_te
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - GET_OPAQUE_TYPE
    - CHECK_FLAG
    - get_edge
    - ospf_te_export
    - memcmp
    - ntohs
    - ote_debug
    - SET_FLAG
    - ospf_te_update_remote_asbr
    - listnode_add_sort_nodup
    - TLV_DATA
    - ntohf
    - TLV_HDR_NEXT
    - ls_find_edge_by_destination
    - ntohl
    - TLV_SIZE
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ospf_te_parse_te(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:2359,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2361,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:2362,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2363,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_te.c:2367,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:2367,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2368,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_te.c:2369,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_te.c:2369,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_te.c:2371,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2374,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/ospfd/ospf_te.c:2380,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_te.c:2386,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2386,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2388,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2392,1
    - Dst: ls_vertex_del_all
      Src: /src/frr/ospfd/ospf_te.c:2393,1
    - Dst: ospf_te_delete_subnet
      Src: /src/frr/ospfd/ospf_te.c:2396,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2399,1
    - Dst: ls_edge_del_all
      Src: /src/frr/ospfd/ospf_te.c:2400,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2405,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:2409,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:2411,1
    - Dst: ls_attributes_srlg_del
      Src: /src/frr/ospfd/ospf_te.c:2413,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2416,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2417,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2419,1
    - Dst: ospf_te_delete_subnet
      Src: /src/frr/ospfd/ospf_te.c:2423,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2425,1
    - Dst: ls_edge_del_all
      Src: /src/frr/ospfd/ospf_te.c:2426,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2430
      start: 2348
    functionDepth: 3
    functionLinenumber: 2348
    functionLinenumberEnd: 2430
    functionName: ospf_te_delete_te
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - TLV_BODY_SIZE
    - ospf_te_export
    - ospf_te_delete_subnet
    - ntohs
    - TLV_SIZE
    - memset
    - ls_find_edge_by_key
    - ntohl
    - ls_edge_del_all
    - ls_attributes_srlg_del
    - TLV_HDR_TOP
    - ote_debug
    - TLV_DATA
    - memcpy
    - GET_OPAQUE_TYPE
    - CHECK_FLAG
    - IPV4_ADDR_COPY
    - ls_vertex_del_all
    - TLV_HDR_NEXT
    linkageType: ''
    returnType: int
    signature: int ospf_te_delete_te(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: get_vertex
      Src: /src/frr/ospfd/ospf_te.c:2450,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2453,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:2458,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:2459,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2465,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2469,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2470,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2475,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2481,1
    - Dst: GET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2492,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2492,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_te.c:2493,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2493,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2494,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2501,1
    - Dst: GET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2509,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2509,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_te.c:2510,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2510,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2511,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2518,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2526,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2531,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2540,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2545,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2551,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 67
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2556
      start: 2441
    functionDepth: 2
    functionLinenumber: 2441
    functionLinenumberEnd: 2556
    functionName: ospf_te_parse_ri
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - TLV_HDR_TOP
    - get_vertex
    - CHECK_FLAG
    - ospf_te_export
    - GET_RANGE_SIZE
    - ntohs
    - ote_debug
    - SET_FLAG
    - TLV_HDR_NEXT
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: int
    signature: int ospf_te_parse_ri(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/ospfd/ospf_te.c:2578,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2584,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:2585,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2588,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:2589,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2590,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2594,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2602
      start: 2568
    functionDepth: 2
    functionLinenumber: 2568
    functionLinenumberEnd: 2602
    functionName: ospf_te_delete_ri
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - memset
    - ospf_te_export
    - ls_find_vertex_by_id
    - ote_debug
    - UNSET_FLAG
    linkageType: ''
    returnType: int
    signature: int ospf_te_delete_ri(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:2624,1
    - Dst: ls_find_subnet
      Src: /src/frr/ospfd/ospf_te.c:2628,1
    - Dst: ls_prefix_new
      Src: /src/frr/ospfd/ospf_te.c:2635,1
    - Dst: ls_subnet_add
      Src: /src/frr/ospfd/ospf_te.c:2637,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2640,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2647,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_te.c:2648,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2648,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2649,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2652,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2662,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2668,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2672,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2613
    functionDepth: 2
    functionLinenumber: 2613
    functionLinenumberEnd: 2677
    functionName: ospf_te_parse_ext_pref
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - TLV_HDR_TOP
    - ls_prefix_new
    - CHECK_FLAG
    - ospf_te_export
    - ls_find_subnet
    - ote_debug
    - SET_FLAG
    - ls_subnet_add
    - ntohl
    linkageType: ''
    returnType: int
    signature: int ospf_te_parse_ext_pref(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:2697,1
    - Dst: ls_find_subnet
      Src: /src/frr/ospfd/ospf_te.c:2701,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2707,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2712,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:2713,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2721
      start: 2689
    functionDepth: 2
    functionLinenumber: 2689
    functionLinenumberEnd: 2721
    functionName: ospf_te_delete_ext_pref
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - memset
    - ospf_te_export
    - ls_find_subnet
    - ote_debug
    - UNSET_FLAG
    linkageType: ''
    returnType: int
    signature: int ospf_te_delete_ext_pref(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:2746,1
    - Dst: get_edge
      Src: /src/frr/ospfd/ospf_te.c:2747,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2750,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2754,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:2757,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:2762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2765,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_te.c:2767,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2767,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2768,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2771,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2772,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2782,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2784,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2791,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_te.c:2793,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2793,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2794,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2795,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2797,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2798,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_te.c:2802,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2811,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2813,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2820,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_te.c:2821,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2826,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:2834,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2839,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2845,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 63
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2850
      start: 2732
    functionDepth: 2
    functionLinenumber: 2732
    functionLinenumberEnd: 2850
    functionName: ospf_te_parse_ext_link
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - TLV_HDR_TOP
    - TLV_BODY_SIZE
    - CHECK_FLAG
    - get_edge
    - ospf_te_export
    - ntohs
    - ote_debug
    - SET_FLAG
    - IPV4_ADDR_SAME
    - TLV_HDR_NEXT
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: int
    signature: int ospf_te_parse_ext_link(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:2870,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_te.c:2872,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/ospfd/ospf_te.c:2873,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2879,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2885,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_te.c:2886,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_te.c:2887,1
    - Dst: ospf_te_export
      Src: /src/frr/ospfd/ospf_te.c:2891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2895
      start: 2862
    functionDepth: 2
    functionLinenumber: 2862
    functionLinenumberEnd: 2895
    functionName: ospf_te_delete_ext_link
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - memset
    - ospf_te_export
    - ls_find_edge_by_key
    - ote_debug
    - IPV4_ADDR_COPY
    - UNSET_FLAG
    linkageType: ''
    returnType: int
    signature: int ospf_te_delete_ext_link(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_te.c:2907,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2907,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2910,1
    - Dst: ospf_te_parse_te
      Src: /src/frr/ospfd/ospf_te.c:2916,1
    - Dst: ospf_te_parse_ri
      Src: /src/frr/ospfd/ospf_te.c:2919,1
    - Dst: ospf_te_parse_ext_pref
      Src: /src/frr/ospfd/ospf_te.c:2922,1
    - Dst: ospf_te_parse_ext_link
      Src: /src/frr/ospfd/ospf_te.c:2925,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2932
      start: 2905
    functionDepth: 3
    functionLinenumber: 2905
    functionLinenumberEnd: 2932
    functionName: ospf_te_parse_opaque_lsa
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - GET_OPAQUE_TYPE
    - ospf_te_parse_ext_pref
    - ote_debug
    - ospf_te_parse_te
    - ospf_te_parse_ext_link
    - ospf_te_parse_ri
    - ntohl
    linkageType: ''
    returnType: int
    signature: int ospf_te_parse_opaque_lsa(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_te.c:2944,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:2944,1
    - Dst: ote_debug
      Src: /src/frr/ospfd/ospf_te.c:2947,1
    - Dst: ospf_te_delete_te
      Src: /src/frr/ospfd/ospf_te.c:2953,1
    - Dst: ospf_te_delete_ri
      Src: /src/frr/ospfd/ospf_te.c:2956,1
    - Dst: ospf_te_delete_ext_pref
      Src: /src/frr/ospfd/ospf_te.c:2959,1
    - Dst: ospf_te_delete_ext_link
      Src: /src/frr/ospfd/ospf_te.c:2962,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ted
    - lsa
    argTypes:
    - struct ls_ted*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2969
      start: 2942
    functionDepth: 4
    functionLinenumber: 2942
    functionLinenumberEnd: 2969
    functionName: ospf_te_delete_opaque_lsa
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - GET_OPAQUE_TYPE
    - ospf_te_delete_ext_link
    - ote_debug
    - ospf_te_delete_te
    - ospf_te_delete_ext_pref
    - ntohl
    - ospf_te_delete_ri
    linkageType: ''
    returnType: int
    signature: int ospf_te_delete_opaque_lsa(struct ls_ted *ted, struct ospf_lsa *lsa)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:2990,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_te.c:2996,1
    - Dst: ospf_te_delete_router_lsa
      Src: /src/frr/ospfd/ospf_te.c:2999,1
    - Dst: ospf_te_delete_opaque_lsa
      Src: /src/frr/ospfd/ospf_te.c:3003,1
    - Dst: ospf_te_parse_router_lsa
      Src: /src/frr/ospfd/ospf_te.c:3013,1
    - Dst: ospf_te_parse_opaque_lsa
      Src: /src/frr/ospfd/ospf_te.c:3017,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3026
      start: 2979
    functionDepth: 5
    functionLinenumber: 2979
    functionLinenumberEnd: 3026
    functionName: ospf_mpls_te_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - ospf_te_delete_opaque_lsa
    - IS_LSA_MAXAGE
    - ospf_te_delete_router_lsa
    - ospf_te_parse_opaque_lsa
    - ospf_te_parse_router_lsa
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_te.c:3049,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_te.c:3064,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_te.c:3064,1
    - Dst: ospf_te_delete_router_lsa
      Src: /src/frr/ospfd/ospf_te.c:3070,1
    - Dst: ospf_te_delete_opaque_lsa
      Src: /src/frr/ospfd/ospf_te.c:3074,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3038
    functionDepth: 5
    functionLinenumber: 3038
    functionLinenumberEnd: 3082
    functionName: ospf_mpls_te_lsa_delete
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - ospf_te_delete_opaque_lsa
    - IS_LSA_MAXAGE
    - ospf_te_delete_router_lsa
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: int ospf_mpls_te_lsa_delete(struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_sync_ted
      Src: /src/frr/ospfd/ospf_te.c:3100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dst
    argTypes:
    - struct zapi_opaque_reg_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3103
      start: 3092
    functionDepth: 1
    functionLinenumber: 3092
    functionLinenumberEnd: 3103
    functionName: ospf_te_sync_ted
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ls_sync_ted
    linkageType: ''
    returnType: int
    signature: int ospf_te_sync_ted(struct zapi_opaque_reg_info dst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_te.c:3120,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_te.c:3125,1
    - Dst: ROUTER_LSDB
      Src: /src/frr/ospfd/ospf_te.c:3125,1
    - Dst: ospf_te_parse_router_lsa
      Src: /src/frr/ospfd/ospf_te.c:3126,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_te.c:3129,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_te.c:3129,1
    - Dst: ospf_te_parse_opaque_lsa
      Src: /src/frr/ospfd/ospf_te.c:3130,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_te.c:3135,1
    - Dst: OPAQUE_AS_LSDB
      Src: /src/frr/ospfd/ospf_te.c:3135,1
    - Dst: ospf_te_parse_opaque_lsa
      Src: /src/frr/ospfd/ospf_te.c:3136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ted
    - ospf
    argTypes:
    - struct ls_ted*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3139
      start: 3112
    functionDepth: 4
    functionLinenumber: 3112
    functionLinenumberEnd: 3139
    functionName: ospf_te_init_ted
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ROUTER_LSDB
    - OPAQUE_AREA_LSDB
    - ospf_te_parse_opaque_lsa
    - ALL_LIST_ELEMENTS
    - ospf_te_parse_router_lsa
    - LSDB_LOOP
    - OPAQUE_AS_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf_te_init_ted(struct ls_ted *ted, struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - size
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3156
      start: 3144
    functionDepth: 0
    functionLinenumber: 3144
    functionLinenumberEnd: 3156
    functionName: check_tlv_size
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_tlv_size(size, msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3161,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3164,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3166,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3169
      start: 3157
    functionDepth: 1
    functionLinenumber: 3157
    functionLinenumberEnd: 3169
    functionName: show_vty_router_addr
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - TLV_SIZE
    - vty_out
    - check_tlv_size
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t show_vty_router_addr(struct vty *vty, struct tlv_header *tlvh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3176,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3178,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3180,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3182,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3184,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3189,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3190,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3192,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - tlvh
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3196
      start: 3171
    functionDepth: 1
    functionLinenumber: 3171
    functionLinenumberEnd: 3196
    functionName: show_vty_link_header
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_debug
    - vty_out
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_header(struct vty *vty, struct tlv_header *tlvh,\n\t\t\t\t
      \    size_t buf_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3204,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3219,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3222,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3225
      start: 3198
    functionDepth: 1
    functionLinenumber: 3198
    functionLinenumberEnd: 3225
    functionName: show_vty_link_subtlv_link_type
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - TLV_SIZE
    - vty_out
    - check_tlv_size
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_link_type(struct vty *vty,\n\t\t\t\t\t
      \      struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3232,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3236,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3238,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3241
      start: 3227
    functionDepth: 1
    functionLinenumber: 3227
    functionLinenumberEnd: 3241
    functionName: show_vty_link_subtlv_link_id
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - TLV_SIZE
    - vty_out
    - check_tlv_size
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_link_id(struct vty *vty,\n\t\t\t\t\t
      \    struct tlv_header *tlvh)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3250,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3252,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3254,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3256,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3258,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3263,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3266,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3268,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3272,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3274,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3276,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - tlvh
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3277
      start: 3243
    functionDepth: 1
    functionLinenumber: 3243
    functionLinenumberEnd: 3277
    functionName: show_vty_link_subtlv_lclif_ipaddr
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_debug
    - vty_out
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_lclif_ipaddr(struct vty *vty,\n\t\t\t\t\t\t
      \ struct tlv_header *tlvh,\n\t\t\t\t\t\t  size_t buf_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3286,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3288,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3290,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3292,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3294,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3299,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3301,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3303,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3307,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3309,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3311,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - tlvh
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3312
      start: 3279
    functionDepth: 1
    functionLinenumber: 3279
    functionLinenumberEnd: 3312
    functionName: show_vty_link_subtlv_rmtif_ipaddr
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_debug
    - vty_out
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_rmtif_ipaddr(struct vty *vty,\n\t\t\t\t\t\t
      \ struct tlv_header *tlvh,\n\t\t\t\t\t\t  size_t buf_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3319,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3323,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3324,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3326,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3327,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3330
      start: 3314
    functionDepth: 1
    functionLinenumber: 3314
    functionLinenumberEnd: 3330
    functionName: show_vty_link_subtlv_te_metric
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_te_metric(struct vty *vty,\n\t\t\t\t\t
      \      struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3338,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:3341,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3344,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3346,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3349
      start: 3332
    functionDepth: 1
    functionLinenumber: 3332
    functionLinenumberEnd: 3349
    functionName: show_vty_link_subtlv_max_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - ntohf
    - check_tlv_size
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_max_bw(struct vty *vty,\n\t\t\t\t\t
      \   struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3357,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:3360,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3363,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3366,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3370
      start: 3351
    functionDepth: 1
    functionLinenumber: 3351
    functionLinenumberEnd: 3370
    functionName: show_vty_link_subtlv_max_rsv_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - ntohf
    - check_tlv_size
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_max_rsv_bw(struct vty *vty,\n\t\t\t\t\t\tstruct
      tlv_header *tlvh)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3379,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3383,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3386,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:3389,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:3390,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3393,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3397,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3402,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3403
      start: 3372
    functionDepth: 1
    functionLinenumber: 3372
    functionLinenumberEnd: 3403
    functionName: show_vty_link_subtlv_unrsv_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - ntohf
    - check_tlv_size
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_unrsv_bw(struct vty *vty,\n\t\t\t\t\t
      \     struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3410,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3414,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3415,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3417,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3418,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3421
      start: 3405
    functionDepth: 1
    functionLinenumber: 3405
    functionLinenumberEnd: 3421
    functionName: show_vty_link_subtlv_rsc_clsclr
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_rsc_clsclr(struct vty *vty,\n\t\t\t\t\t\tstruct
      tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3428,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3433,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3435,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3438,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3440,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3445
      start: 3423
    functionDepth: 1
    functionLinenumber: 3423
    functionLinenumberEnd: 3445
    functionName: show_vty_link_subtlv_lrrid
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - TLV_SIZE
    - vty_out
    - check_tlv_size
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_lrrid(struct vty *vty,\n\t\t\t\t\t   struct
      tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3452,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3457,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3458,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3459,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3460,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3462,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3463,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3464,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3465,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3469
      start: 3447
    functionDepth: 1
    functionLinenumber: 3447
    functionLinenumberEnd: 3469
    functionName: show_vty_link_subtlv_llri
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_llri(struct vty *vty,\n\t\t\t\t\t  struct
      tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3476,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3481,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3484,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3488
      start: 3471
    functionDepth: 1
    functionLinenumber: 3471
    functionLinenumberEnd: 3488
    functionName: show_vty_link_subtlv_rip
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - TLV_SIZE
    - vty_out
    - check_tlv_size
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_rip(struct vty *vty,\n\t\t\t\t\t struct
      tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3495,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3500,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3501,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3503,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3504,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3506,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3507
      start: 3490
    functionDepth: 1
    functionLinenumber: 3490
    functionLinenumberEnd: 3507
    functionName: show_vty_link_subtlv_ras
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_ras(struct vty *vty,\n\t\t\t\t\t struct
      tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3516,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3519,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3520,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3523,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3526,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3530
      start: 3509
    functionDepth: 1
    functionLinenumber: 3509
    functionLinenumberEnd: 3530
    functionName: show_vty_link_subtlv_av_delay
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_av_delay(struct vty *vty,\n\t\t\t\t\t
      \     struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3539,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3542,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3543,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3544,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3547,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3550,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3554
      start: 3532
    functionDepth: 1
    functionLinenumber: 3532
    functionLinenumberEnd: 3554
    functionName: show_vty_link_subtlv_mm_delay
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_mm_delay(struct vty *vty,\n\t\t\t\t\t
      \     struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3562,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3565,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3568,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3570,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3573
      start: 3556
    functionDepth: 1
    functionLinenumber: 3556
    functionLinenumberEnd: 3573
    functionName: show_vty_link_subtlv_delay_var
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_delay_var(struct vty *vty,\n\t\t\t\t\t
      \      struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3583,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3586,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_te.c:3588,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3591,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3594,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3598
      start: 3575
    functionDepth: 1
    functionLinenumber: 3575
    functionLinenumberEnd: 3598
    functionName: show_vty_link_subtlv_pkt_loss
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_pkt_loss(struct vty *vty,\n\t\t\t\t\t
      \     struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3606,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:3609,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3612,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3616,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3621
      start: 3600
    functionDepth: 1
    functionLinenumber: 3600
    functionLinenumberEnd: 3621
    functionName: show_vty_link_subtlv_res_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - ntohf
    - check_tlv_size
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_res_bw(struct vty *vty,\n\t\t\t\t\t
      \   struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3629,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:3632,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3635,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3639,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3644
      start: 3623
    functionDepth: 1
    functionLinenumber: 3623
    functionLinenumberEnd: 3644
    functionName: show_vty_link_subtlv_ava_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - ntohf
    - check_tlv_size
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_ava_bw(struct vty *vty,\n\t\t\t\t\t
      \   struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_te.c:3652,1
    - Dst: ntohf
      Src: /src/frr/ospfd/ospf_te.c:3655,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3658,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3662,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3667
      start: 3646
    functionDepth: 1
    functionLinenumber: 3646
    functionLinenumberEnd: 3667
    functionName: show_vty_link_subtlv_use_bw
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zlog_debug
    - ntohf
    - check_tlv_size
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_subtlv_use_bw(struct vty *vty,\n\t\t\t\t\t
      \   struct tlv_header *tlvh)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3672,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3674,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3676,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3678,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3680,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3685,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3686,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3686,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_te.c:3688,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3689,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3689,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_te.c:3691,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - tlvh
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3692
      start: 3669
    functionDepth: 1
    functionLinenumber: 3669
    functionLinenumberEnd: 3692
    functionName: show_vty_unknown_tlv
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 2
    functionsReached:
    - ntohs
    - zlog_debug
    - vty_out
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_unknown_tlv(struct vty *vty, struct tlv_header *tlvh,\n\t\t\t\t
      \    size_t buf_size)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:3701,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3702,1
    - Dst: show_vty_link_subtlv_link_type
      Src: /src/frr/ospfd/ospf_te.c:3704,1
    - Dst: show_vty_link_subtlv_link_id
      Src: /src/frr/ospfd/ospf_te.c:3707,1
    - Dst: show_vty_link_subtlv_lclif_ipaddr
      Src: /src/frr/ospfd/ospf_te.c:3710,1
    - Dst: show_vty_link_subtlv_rmtif_ipaddr
      Src: /src/frr/ospfd/ospf_te.c:3714,1
    - Dst: show_vty_link_subtlv_te_metric
      Src: /src/frr/ospfd/ospf_te.c:3718,1
    - Dst: show_vty_link_subtlv_max_bw
      Src: /src/frr/ospfd/ospf_te.c:3721,1
    - Dst: show_vty_link_subtlv_max_rsv_bw
      Src: /src/frr/ospfd/ospf_te.c:3724,1
    - Dst: show_vty_link_subtlv_unrsv_bw
      Src: /src/frr/ospfd/ospf_te.c:3727,1
    - Dst: show_vty_link_subtlv_rsc_clsclr
      Src: /src/frr/ospfd/ospf_te.c:3730,1
    - Dst: show_vty_link_subtlv_lrrid
      Src: /src/frr/ospfd/ospf_te.c:3733,1
    - Dst: show_vty_link_subtlv_llri
      Src: /src/frr/ospfd/ospf_te.c:3736,1
    - Dst: show_vty_link_subtlv_rip
      Src: /src/frr/ospfd/ospf_te.c:3739,1
    - Dst: show_vty_link_subtlv_ras
      Src: /src/frr/ospfd/ospf_te.c:3742,1
    - Dst: show_vty_link_subtlv_av_delay
      Src: /src/frr/ospfd/ospf_te.c:3745,1
    - Dst: show_vty_link_subtlv_mm_delay
      Src: /src/frr/ospfd/ospf_te.c:3748,1
    - Dst: show_vty_link_subtlv_delay_var
      Src: /src/frr/ospfd/ospf_te.c:3751,1
    - Dst: show_vty_link_subtlv_pkt_loss
      Src: /src/frr/ospfd/ospf_te.c:3754,1
    - Dst: show_vty_link_subtlv_res_bw
      Src: /src/frr/ospfd/ospf_te.c:3757,1
    - Dst: show_vty_link_subtlv_ava_bw
      Src: /src/frr/ospfd/ospf_te.c:3760,1
    - Dst: show_vty_link_subtlv_use_bw
      Src: /src/frr/ospfd/ospf_te.c:3763,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_te.c:3766,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 69
    argCount: 4
    argNames:
    - vty
    - tlvh0
    - subtotal
    - total
    argTypes:
    - struct vty*
    - struct tlv_header*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3771
      start: 3694
    functionDepth: 2
    functionLinenumber: 3694
    functionLinenumberEnd: 3771
    functionName: ospf_mpls_te_show_link_subtlv
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - show_vty_link_subtlv_max_rsv_bw
    - ntohs
    - show_vty_link_subtlv_te_metric
    - show_vty_link_subtlv_mm_delay
    - show_vty_link_subtlv_res_bw
    - show_vty_link_subtlv_rmtif_ipaddr
    - show_vty_link_subtlv_ras
    - show_vty_link_subtlv_av_delay
    - show_vty_link_subtlv_max_bw
    - show_vty_link_subtlv_delay_var
    - show_vty_link_subtlv_ava_bw
    - show_vty_unknown_tlv
    - show_vty_link_subtlv_llri
    - show_vty_link_subtlv_unrsv_bw
    - show_vty_link_subtlv_lclif_ipaddr
    - show_vty_link_subtlv_use_bw
    - show_vty_link_subtlv_link_id
    - show_vty_link_subtlv_link_type
    - show_vty_link_subtlv_pkt_loss
    - show_vty_link_subtlv_lrrid
    - show_vty_link_subtlv_rsc_clsclr
    - TLV_HDR_NEXT
    - show_vty_link_subtlv_rip
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t ospf_mpls_te_show_link_subtlv(struct vty *vty,\n\t\t\t\t\t
      \     struct tlv_header *tlvh0,\n\t\t\t\t\t      uint16_t subtotal, uint16_t
      total)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_te.c:3788,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_te.c:3789,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_te.c:3798,1
    - Dst: show_vty_router_addr
      Src: /src/frr/ospfd/ospf_te.c:3800,1
    - Dst: show_vty_link_header
      Src: /src/frr/ospfd/ospf_te.c:3803,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_te.c:3805,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_te.c:3808,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - vty
    - json
    - lsa
    argTypes:
    - struct vty*
    - struct json_object*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3813
      start: 3773
    functionDepth: 2
    functionLinenumber: 3773
    functionLinenumberEnd: 3813
    functionName: ospf_mpls_te_show_info
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - show_vty_unknown_tlv
    - show_vty_router_addr
    - show_vty_link_header
    - ntohs
    - TLV_DATA
    - TLV_HDR_NEXT
    linkageType: ''
    returnType: void
    signature: "void ospf_mpls_te_show_info(struct vty *vty, struct json_object *json,\n\t\t\t\t
      \  struct ospf_lsa *lsa)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3819,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3820,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3824,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3826,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_te.c:3829,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3832
      start: 3815
    functionDepth: 1
    functionLinenumber: 3815
    functionLinenumberEnd: 3832
    functionName: ospf_mpls_te_config_write_router
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_config_write_router(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4409,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4410,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4411,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4413,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4414,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4415,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4416,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4417,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4418,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4419,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_te.c:4420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4423
      start: 4407
    functionDepth: 1
    functionLinenumber: 4407
    functionLinenumberEnd: 4423
    functionName: ospf_mpls_te_register_vty
    functionSourceFile: /src/frr/ospfd/ospf_te.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf_mpls_te_register_vty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_api.c:58,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_api.c:63,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_api.c:66,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_api.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 69
    functionName: api_opaque_lsa_print
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf_lsa_header_dump
    linkageType: ''
    returnType: void
    signature: void api_opaque_lsa_print(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_api.c:81,1
    - Dst: hdr::hdr
      Src: /src/frr/ospfd/ospf_api.c:83,1
    - Dst: hdr::hdr
      Src: /src/frr/ospfd/ospf_api.c:84,1
    - Dst: hdr::hdr
      Src: /src/frr/ospfd/ospf_api.c:85,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_api.c:85,1
    - Dst: hdr::hdr
      Src: /src/frr/ospfd/ospf_api.c:86,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_api.c:86,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_api.c:88,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_api.c:89,1
    - Dst: s::s
      Src: /src/frr/ospfd/ospf_api.c:89,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_api.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - msgtype
    - msgbody
    - seqnum
    - msglen
    argTypes:
    - uint8_t
    - void*
    - uint32_t
    - uint16_t
    assertStmts:
    - condition: (new->s)
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/frr/ospfd/ospf_api.c
    constantsTouched: []
    func_position:
      end: 93
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 93
    functionName: msg_new
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - stream_new
    - stream_put
    - htons
    - s::s
    - hdr::hdr
    - htonl
    - assert
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *msg_new(uint8_t msgtype, void *msgbody, uint32_t seqnum,\n\t\t
      \   uint16_t msglen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_api.c:102,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_api.c:104,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_api.c:108,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_api.c:109,1
    - Dst: msg_new::msg_new
      Src: /src/frr/ospfd/ospf_api.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct msg*
    assertStmts:
    - condition: (msg)
      pos:
        line_end: 101
        line_start: 101
        source_file: /src/frr/ospfd/ospf_api.c
    constantsTouched: []
    func_position:
      end: 111
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 111
    functionName: msg_dup
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    - msg_new::msg_new
    - ntohs
    - ntohl
    - assert
    linkageType: ''
    returnType: struct msg
    signature: struct msg *msg_dup(struct msg *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_api.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - msgtype
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 183
    functionName: ospf_api_typename
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: char
    signature: char *ospf_api_typename(int msgtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_api.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - errcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 235
    functionName: ospf_api_errname
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: char
    signature: char *ospf_api_errname(int errcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_api.c:240,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_api.c:245,1
    - Dst: ospf_api_typename
      Src: /src/frr/ospfd/ospf_api.c:246,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_api.c:247,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_api.c:248,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_api.c:248,1
    - Dst: STREAM_SIZE
      Src: /src/frr/ospfd/ospf_api.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 252
    functionName: msg_print
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - ospf_api_typename
    - STREAM_DATA
    - ntohs
    - zlog_debug
    - ntohl
    - STREAM_SIZE
    linkageType: ''
    returnType: void
    signature: void msg_print(struct msg *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_api.c:257,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_api.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 260
    functionName: msg_free
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - stream_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void msg_free(struct msg *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_api.c:266,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_api.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - msg
    - seqnr
    argTypes:
    - struct msg*
    - uint32_t
    assertStmts:
    - condition: (msg)
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/frr/ospfd/ospf_api.c
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: msg_set_seq
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - htonl
    - assert
    linkageType: ''
    returnType: void
    signature: void msg_set_seq(struct msg *msg, uint32_t seqnr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_api.c:273,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_api.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct msg*
    assertStmts:
    - condition: (msg)
      pos:
        line_end: 272
        line_start: 272
        source_file: /src/frr/ospfd/ospf_api.c
    constantsTouched: []
    func_position:
      end: 275
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 275
    functionName: msg_get_seq
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - ntohl
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t msg_get_seq(struct msg *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_api.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: msg_fifo_new
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct msg_fifo
    signature: struct msg_fifo *msg_fifo_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fifo
    - msg
    argTypes:
    - struct msg_fifo*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 297
    functionName: msg_fifo_push
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void msg_fifo_push(struct msg_fifo *fifo, struct msg *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct msg_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 315
    functionName: msg_fifo_pop
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct msg
    signature: struct msg *msg_fifo_pop(struct msg_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct msg_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: msg_fifo_head
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct msg
    signature: struct msg *msg_fifo_head(struct msg_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_api.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct msg_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 336
    functionName: msg_fifo_flush
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_free
    linkageType: ''
    returnType: void
    signature: void msg_fifo_flush(struct msg_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_fifo_flush
      Src: /src/frr/ospfd/ospf_api.c:341,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_api.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct msg_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 344
    functionName: msg_fifo_free
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_fifo_flush
    - XFREE
    linkageType: ''
    returnType: void
    signature: void msg_fifo_free(struct msg_fifo *fifo)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: readn
      Src: /src/frr/ospfd/ospf_api.c:355,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:358,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_api.c:358,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:361,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:364,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:370,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_api.c:375,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:377,1
    - Dst: readn
      Src: /src/frr/ospfd/ospf_api.c:384,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:386,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_api.c:386,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:389,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:392,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:398,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_api.c:398,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 401
    functionName: msg_read
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - readn
    - ntohs
    - zlog_warn
    - safe_strerror
    - ntohl
    linkageType: ''
    returnType: struct msg
    signature: struct msg *msg_read(int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_api.c:409,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_api.c:410,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_api.c:413,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:415,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_api.c:420,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_api.c:421,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_api.c:421,1
    - Dst: writen
      Src: /src/frr/ospfd/ospf_api.c:425,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:427,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_api.c:427,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:430,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_api.c:433,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - fd
    - msg
    argTypes:
    - int
    - struct msg*
    assertStmts:
    - condition: (msg)
      pos:
        line_end: 408
        line_start: 408
        source_file: /src/frr/ospfd/ospf_api.c
    - condition: (msg->s)
      pos:
        line_end: 409
        line_start: 409
        source_file: /src/frr/ospfd/ospf_api.c
    constantsTouched: []
    func_position:
      end: 437
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 437
    functionName: msg_write
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - assert
    - STREAM_DATA
    - ntohs
    - writen
    - zlog_warn
    - safe_strerror
    - memcpy
    linkageType: ''
    returnType: int
    signature: int msg_write(int fd, struct msg *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_api.c:451,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - seqnum
    - ltype
    - otype
    argTypes:
    - uint32_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 444
    functionDepth: 2
    functionLinenumber: 444
    functionLinenumberEnd: 455
    functionName: new_msg_register_opaque_type
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - memset
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_register_opaque_type(uint32_t seqnum, uint8_t
      ltype,\n\t\t\t\t\t uint8_t otype)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_api.c:467,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - seqnum
    - filter
    argTypes:
    - uint32_t
    - struct lsa_filter_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 474
    functionName: new_msg_register_event
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - htons
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_register_event(uint32_t seqnum,\n\t\t\t\t   struct
      lsa_filter_type *filter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospfd/ospf_api.c:485,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - seqnum
    - filter
    argTypes:
    - uint32_t
    - struct lsa_filter_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 476
    functionDepth: 2
    functionLinenumber: 476
    functionLinenumberEnd: 492
    functionName: new_msg_sync_lsdb
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - htons
    linkageType: ''
    returnType: struct msg
    signature: struct msg *new_msg_sync_lsdb(uint32_t seqnum, struct lsa_filter_type
      *filter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_api.c:510,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_api.c:513,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - seqnum
    - ifaddr
    - area_id
    - data
    argTypes:
    - uint32_t
    - struct in_addr
    - struct in_addr
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 495
    functionDepth: 2
    functionLinenumber: 495
    functionLinenumberEnd: 518
    functionName: new_msg_originate_request
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - ntohs
    - msg_new
    - memcpy
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_originate_request(uint32_t seqnum, struct in_addr
      ifaddr,\n\t\t\t\t      struct in_addr area_id,\n\t\t\t\t      struct lsa_header
      *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_api.c:528,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_api.c:529,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - seqnum
    - addr
    - lsa_type
    - opaque_type
    - opaque_id
    - flags
    argTypes:
    - uint32_t
    - struct in_addr
    - uint8_t
    - uint8_t
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 520
    functionDepth: 2
    functionLinenumber: 520
    functionLinenumberEnd: 534
    functionName: new_msg_delete_request
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - htonl
    - msg_new
    - memset
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_delete_request(uint32_t seqnum, struct in_addr
      addr,\n\t\t\t\t   uint8_t lsa_type, uint8_t opaque_type,\n\t\t\t\t   uint32_t
      opaque_id, uint8_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_api.c:544,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - seqnr
    - rc
    argTypes:
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 549
    functionName: new_msg_reply
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - memset
    linkageType: ''
    returnType: struct msg
    signature: struct msg *new_msg_reply(uint32_t seqnr, uint8_t rc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_api.c:558,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - seqnr
    - lsa_type
    - opaque_type
    - addr
    argTypes:
    - uint32_t
    - uint8_t
    - uint8_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 563
    functionName: new_msg_ready_notify
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - memset
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_ready_notify(uint32_t seqnr, uint8_t lsa_type,\n\t\t\t\t
      uint8_t opaque_type, struct in_addr addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - seqnr
    - ifaddr
    - area_id
    argTypes:
    - uint32_t
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 565
    functionDepth: 2
    functionLinenumber: 565
    functionLinenumberEnd: 574
    functionName: new_msg_new_if
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_new_if(uint32_t seqnr, struct in_addr ifaddr,\n\t\t\t
      \  struct in_addr area_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - seqnr
    - ifaddr
    argTypes:
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 583
    functionName: new_msg_del_if
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    linkageType: ''
    returnType: struct msg
    signature: struct msg *new_msg_del_if(uint32_t seqnr, struct in_addr ifaddr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_api.c:593,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - seqnr
    - ifaddr
    - area_id
    - status
    argTypes:
    - uint32_t
    - struct in_addr
    - struct in_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 585
    functionDepth: 2
    functionLinenumber: 585
    functionLinenumberEnd: 597
    functionName: new_msg_ism_change
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - memset
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_ism_change(uint32_t seqnr, struct in_addr ifaddr,\n\t\t\t
      \      struct in_addr area_id, uint8_t status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_api.c:609,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - seqnr
    - ifaddr
    - nbraddr
    - router_id
    - status
    argTypes:
    - uint32_t
    - struct in_addr
    - struct in_addr
    - struct in_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 613
    functionName: new_msg_nsm_change
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - memset
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_nsm_change(uint32_t seqnr, struct in_addr ifaddr,\n\t\t\t
      \      struct in_addr nbraddr, struct in_addr router_id,\n\t\t\t       uint8_t
      status)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_api.c:628,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_api.c:634,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_api.c:636,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_api.c:639,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 6
    argNames:
    - msgtype
    - seqnum
    - ifaddr
    - area_id
    - is_self_originated
    - data
    argTypes:
    - uint8_t
    - uint32_t
    - struct in_addr
    - struct in_addr
    - uint8_t
    - struct lsa_header*
    assertStmts:
    - condition: (data)
      pos:
        line_end: 627
        line_start: 627
        source_file: /src/frr/ospfd/ospf_api.c
    constantsTouched: []
    func_position:
      end: 643
      start: 615
    functionDepth: 2
    functionLinenumber: 615
    functionLinenumberEnd: 643
    functionName: new_msg_lsa_change_notify
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - assert
    - memset
    - msg_new
    - ntohs
    - memcpy
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_lsa_change_notify(uint8_t msgtype, uint32_t seqnum,\n\t\t\t\t
      \     struct in_addr ifaddr,\n\t\t\t\t      struct in_addr area_id,\n\t\t\t\t
      \     uint8_t is_self_originated,\n\t\t\t\t      struct lsa_header *data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_api.c:661,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_api.c:663,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_api.c:665,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_api.c:666,1
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:669,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - seqnum
    - nadd
    - add
    - nremove
    - remove
    argTypes:
    - uint32_t
    - uint16_t
    - struct in_addr*
    - uint16_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 670
    functionName: new_msg_reachable_change
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    - memcpy
    - htons
    linkageType: ''
    returnType: struct msg
    signature: "struct msg *new_msg_reachable_change(uint32_t seqnum, uint16_t nadd,\n\t\t\t\t
      \    struct in_addr *add, uint16_t nremove,\n\t\t\t\t     struct in_addr *remove)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_new
      Src: /src/frr/ospfd/ospf_api.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - seqnum
    - router_id
    argTypes:
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 678
    functionName: new_msg_router_id_change
    functionSourceFile: /src/frr/ospfd/ospf_api.c
    functionUses: 0
    functionsReached:
    - msg_new
    linkageType: ''
    returnType: struct msg
    signature: struct msg *new_msg_router_id_change(uint32_t seqnum, struct in_addr
      router_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: OSPF_NSM_TIMER_ON
    functionSourceFile: /src/frr/ospfd/ospf_nsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_NSM_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: OSPF_NSM_EVENT_SCHEDULE
    functionSourceFile: /src/frr/ospfd/ospf_nsm.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_NSM_EVENT_SCHEDULE(N, E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: OSPF_NSM_EVENT_EXECUTE
    functionSourceFile: /src/frr/ospfd/ospf_nsm.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_NSM_EVENT_EXECUTE(N, E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 18
    functionName: ols_debug
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ols_debug(...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:76,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:80,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_apiserver.c:82,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:94,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_apiserver.c:95,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:98,1
    - Dst: getservbyname
      Src: /src/frr/ospfd/ospf_apiserver.c:112,1
    - Dst: ospf_apiserver_init
      Src: /src/frr/ospfd/ospf_apiserver.c:118,1
    - Dst: ospf_apiserver_serv_sock_family
      Src: /src/frr/ospfd/ospf_apiserver.c:124,1
    - Dst: ospf_apiserver_getport
      Src: /src/frr/ospfd/ospf_apiserver.c:124,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:130,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_apiserver.c:133,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_apiserver.c:137,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:172,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_apiserver.c:173,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_apiserver.c:173,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:175,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_apiserver.c:180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - address
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 184
    functionName: ospf_apiserver_if_lookup_by_addr
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - list_delete
    - ospf_apiserver_init
    - ospf_lookup_by_vrf_id
    - ospf_apiserver_serv_sock_family
    - ospf_apiserver_event
    - getservbyname
    - listcount
    - listgetdata
    - listhead
    - IPV4_ADDR_SAME
    - ospf_register_opaque_functab
    - ospf_apiserver_getport
    - list_new
    - if
    - ALL_LIST_ELEMENTS
    - ospf_apiserver_free
    linkageType: ''
    returnType: struct ospf_interface
    signature: struct ospf_interface *ospf_apiserver_if_lookup_by_addr(struct in_addr
      address)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_apiserver.c:194,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_apiserver.c:195,1
    - Dst: lookup_apiserver_by_lsa
      Src: /src/frr/ospfd/ospf_apiserver.c:206,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_apiserver.c:211,1
    - Dst: lookup_apiserver
      Src: /src/frr/ospfd/ospf_apiserver.c:212,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_apiserver.c:213,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:213,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:225,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_apiserver.c:226,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:233,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_apiserver.c:234,1
    - Dst: XMALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:242,1
    - Dst: XMALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:244,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_apiserver.c:251,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_apiserver.c:254,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:254,1
    - Dst: ospf_lsdb_init
      Src: /src/frr/ospfd/ospf_apiserver.c:255,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:255,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:257,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:258,1
    - Dst: msg_fifo_new
      Src: /src/frr/ospfd/ospf_apiserver.c:260,1
    - Dst: msg_fifo_new
      Src: /src/frr/ospfd/ospf_apiserver.c:261,1
    - Dst: filter::filter
      Src: /src/frr/ospfd/ospf_apiserver.c:269,1
    - Dst: filter::filter
      Src: /src/frr/ospfd/ospf_apiserver.c:270,1
    - Dst: filter::filter
      Src: /src/frr/ospfd/ospf_apiserver.c:271,1
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospf_apiserver.c:281,1
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospf_apiserver.c:286,1
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospf_apiserver.c:292,1
    - Dst: event_add_write
      Src: /src/frr/ospfd/ospf_apiserver.c:297,1
    - Dst: event_add_write
      Src: /src/frr/ospfd/ospf_apiserver.c:301,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:315,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:317,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:319,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:320,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_apiserver.c:325,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_apiserver.c:326,1
    - Dst: ospf_apiserver_unregister_opaque_type
      Src: /src/frr/ospfd/ospf_apiserver.c:328,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_apiserver.c:331,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:335,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:339,1
    - Dst: msg_fifo_free
      Src: /src/frr/ospfd/ospf_apiserver.c:343,1
    - Dst: msg_fifo_free
      Src: /src/frr/ospfd/ospf_apiserver.c:344,1
    - Dst: ospf_lsdb_delete_all
      Src: /src/frr/ospfd/ospf_apiserver.c:347,1
    - Dst: ospf_lsdb_cleanup
      Src: /src/frr/ospfd/ospf_apiserver.c:348,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_apiserver.c:351,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:353,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:356,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:360,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_apiserver.c:370,1
    - Dst: EVENT_FD
      Src: /src/frr/ospfd/ospf_apiserver.c:371,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:378,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:380,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:388,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:390,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:394,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:395,1
    - Dst: msg_read
      Src: /src/frr/ospfd/ospf_apiserver.c:400,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:402,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:406,1
    - Dst: msg_print
      Src: /src/frr/ospfd/ospf_apiserver.c:411,1
    - Dst: ospf_apiserver_handle_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:414,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:417,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:419,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 102
    argCount: 2
    argNames:
    - lsa_type
    - opaque_type
    argTypes:
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 186
    functionDepth: 5
    functionLinenumber: 186
    functionLinenumberEnd: 420
    functionName: lookup_apiserver
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - list_delete
    - lookup_apiserver_by_lsa
    - listhead
    - ospf_apiserver_unregister_opaque_type
    - ntohs
    - zlog_warn
    - lookup_apiserver
    - msg_print
    - ospf_apiserver_handle_msg
    - reserve::reserve
    - ospf_lsdb_cleanup
    - ospf_lsdb_delete_all
    - event_add_write
    - memset
    - ospf_apiserver_event
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - filter::filter
    - dump_lsa_key
    - EVENT_ARG
    - listgetdata
    - ntohl
    - IS_OPAQUE_LSA
    - msg_fifo_free
    - msg_free
    - ospf_lsdb_init
    - EVENT_OFF
    - XFREE
    - event_add_read
    - listnode_delete
    - ospf_apiserver_free
    - msg_read
    - GET_OPAQUE_TYPE
    - EVENT_FD
    - XMALLOC
    - msg_fifo_new
    - close
    - list_new
    linkageType: ''
    returnType: struct ospf_apiserver
    signature: "struct ospf_apiserver *lookup_apiserver(uint8_t lsa_type,\n\t\t\t\t\t
      \      uint8_t opaque_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:233,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_apiserver.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 236
    functionName: ospf_apiserver_del_lsa_hook
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - dump_lsa_key
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_del_lsa_hook(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:242,1
    - Dst: XMALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:244,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_apiserver.c:251,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_apiserver.c:254,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:254,1
    - Dst: ospf_lsdb_init
      Src: /src/frr/ospfd/ospf_apiserver.c:255,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:255,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:257,1
    - Dst: reserve::reserve
      Src: /src/frr/ospfd/ospf_apiserver.c:258,1
    - Dst: msg_fifo_new
      Src: /src/frr/ospfd/ospf_apiserver.c:260,1
    - Dst: msg_fifo_new
      Src: /src/frr/ospfd/ospf_apiserver.c:261,1
    - Dst: filter::filter
      Src: /src/frr/ospfd/ospf_apiserver.c:269,1
    - Dst: filter::filter
      Src: /src/frr/ospfd/ospf_apiserver.c:270,1
    - Dst: filter::filter
      Src: /src/frr/ospfd/ospf_apiserver.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 2
    argNames:
    - fd_sync
    - fd_async
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 274
    functionName: ospf_apiserver_new
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - reserve::reserve
    - memset
    - XMALLOC
    - msg_fifo_new
    - filter::filter
    - ospf_lsdb_init
    - list_new
    linkageType: ''
    returnType: struct ospf_apiserver
    signature: struct ospf_apiserver *ospf_apiserver_new(int fd_sync, int fd_async)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospf_apiserver.c:281,1
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospf_apiserver.c:286,1
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospf_apiserver.c:292,1
    - Dst: event_add_write
      Src: /src/frr/ospfd/ospf_apiserver.c:297,1
    - Dst: event_add_write
      Src: /src/frr/ospfd/ospf_apiserver.c:301,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - event
    - fd
    - apiserv
    argTypes:
    - enum ospf_apiserver_event
    - int
    - struct ospf_apiserver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 305
    functionName: ospf_apiserver_event
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 2
    functionsReached:
    - event_add_read
    - event_add_write
    linkageType: ''
    returnType: void
    signature: "void ospf_apiserver_event(enum ospf_apiserver_event event, int fd,\n\t\t\t
      \ struct ospf_apiserver *apiserv)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:315,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:317,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:319,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_apiserver.c:320,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_apiserver.c:325,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_apiserver.c:326,1
    - Dst: ospf_apiserver_unregister_opaque_type
      Src: /src/frr/ospfd/ospf_apiserver.c:328,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_apiserver.c:331,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:335,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:339,1
    - Dst: msg_fifo_free
      Src: /src/frr/ospfd/ospf_apiserver.c:343,1
    - Dst: msg_fifo_free
      Src: /src/frr/ospfd/ospf_apiserver.c:344,1
    - Dst: ospf_lsdb_delete_all
      Src: /src/frr/ospfd/ospf_apiserver.c:347,1
    - Dst: ospf_lsdb_cleanup
      Src: /src/frr/ospfd/ospf_apiserver.c:348,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_apiserver.c:351,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:353,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:356,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:360,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - apiserv
    argTypes:
    - struct ospf_apiserver*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 310
    functionDepth: 5
    functionLinenumber: 310
    functionLinenumberEnd: 361
    functionName: ospf_apiserver_free
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 2
    functionsReached:
    - ospf_lsdb_cleanup
    - msg_fifo_free
    - list_delete
    - ospf_lsdb_delete_all
    - listnode_delete
    - listhead
    - close
    - ospf_apiserver_unregister_opaque_type
    - zlog_debug
    - EVENT_OFF
    - XFREE
    - listgetdata
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_free(struct ospf_apiserver *apiserv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_apiserver.c:370,1
    - Dst: EVENT_FD
      Src: /src/frr/ospfd/ospf_apiserver.c:371,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:378,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:380,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:388,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:390,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:394,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:395,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 363
    functionDepth: 6
    functionLinenumber: 363
    functionLinenumberEnd: 397
    functionName: ospf_apiserver_read
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - ntohs
    - zlog_warn
    - zlog_debug
    - EVENT_ARG
    - ospf_apiserver_free
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_read(struct event *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_apiserver.c:429,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:430,1
    - Dst: EVENT_FD
      Src: /src/frr/ospfd/ospf_apiserver.c:431,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:437,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:442,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:444,1
    - Dst: msg_fifo_pop
      Src: /src/frr/ospfd/ospf_apiserver.c:447,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:449,1
    - Dst: msg_print
      Src: /src/frr/ospfd/ospf_apiserver.c:454,1
    - Dst: msg_write
      Src: /src/frr/ospfd/ospf_apiserver.c:456,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:459,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:462,1
    - Dst: msg_fifo_head
      Src: /src/frr/ospfd/ospf_apiserver.c:468,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:469,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:477,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (apiserv)
      pos:
        line_end: 429
        line_start: 429
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 479
      start: 422
    functionDepth: 6
    functionLinenumber: 422
    functionLinenumberEnd: 479
    functionName: ospf_apiserver_sync_write
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - msg_fifo_head
    - msg_free
    - EVENT_FD
    - ospf_apiserver_event
    - msg_fifo_pop
    - msg_write
    - ntohs
    - zlog_warn
    - zlog_debug
    - msg_print
    - EVENT_ARG
    - ospf_apiserver_free
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_sync_write(struct event *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_apiserver.c:489,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:490,1
    - Dst: EVENT_FD
      Src: /src/frr/ospfd/ospf_apiserver.c:491,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:497,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:502,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:504,1
    - Dst: msg_fifo_pop
      Src: /src/frr/ospfd/ospf_apiserver.c:507,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:509,1
    - Dst: msg_print
      Src: /src/frr/ospfd/ospf_apiserver.c:514,1
    - Dst: msg_write
      Src: /src/frr/ospfd/ospf_apiserver.c:516,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:519,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:522,1
    - Dst: msg_fifo_head
      Src: /src/frr/ospfd/ospf_apiserver.c:528,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:529,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:537,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (apiserv)
      pos:
        line_end: 489
        line_start: 489
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 539
      start: 482
    functionDepth: 6
    functionLinenumber: 482
    functionLinenumberEnd: 539
    functionName: ospf_apiserver_async_write
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - msg_fifo_head
    - msg_free
    - EVENT_FD
    - ospf_apiserver_event
    - msg_fifo_pop
    - msg_write
    - ntohs
    - zlog_warn
    - zlog_debug
    - msg_print
    - EVENT_ARG
    - ospf_apiserver_free
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_async_write(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_apiserver.c:548,1
    - Dst: sockunion_stream_socket
      Src: /src/frr/ospfd/ospf_apiserver.c:552,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/ospfd/ospf_apiserver.c:557,1
    - Dst: sockopt_reuseport
      Src: /src/frr/ospfd/ospf_apiserver.c:558,1
    - Dst: sockunion_bind
      Src: /src/frr/ospfd/ospf_apiserver.c:561,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:563,1
    - Dst: listen
      Src: /src/frr/ospfd/ospf_apiserver.c:568,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:570,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_apiserver.c:570,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - port
    - family
    argTypes:
    - unsigned short
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 575
    functionName: ospf_apiserver_serv_sock_family
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - memset
    - sockopt_reuseaddr
    - sockopt_reuseport
    - close
    - zlog_warn
    - safe_strerror
    - listen
    - sockunion_bind
    - sockunion_stream_socket
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_serv_sock_family(unsigned short port, int family)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/ospfd/ospf_apiserver.c:593,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:596,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_apiserver.c:598,1
    - Dst: sockunion_accept
      Src: /src/frr/ospfd/ospf_apiserver.c:600,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:602,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_apiserver.c:602,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_apiserver.c:609,1
    - Dst: getpeername
      Src: /src/frr/ospfd/ospf_apiserver.c:612,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:615,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_apiserver.c:616,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:617,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:622,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:623,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_apiserver.c:627,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:627,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:631,1
    - Dst: ospf_apiserver_getport
      Src: /src/frr/ospfd/ospf_apiserver.c:631,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:632,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:634,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:635,1
    - Dst: socket
      Src: /src/frr/ospfd/ospf_apiserver.c:639,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:641,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_apiserver.c:641,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:642,1
    - Dst: connect
      Src: /src/frr/ospfd/ospf_apiserver.c:646,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:650,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_apiserver.c:650,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:651,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:652,1
    - Dst: shutdown
      Src: /src/frr/ospfd/ospf_apiserver.c:659,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:661,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_apiserver.c:661,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:662,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_apiserver.c:663,1
    - Dst: ospf_apiserver_new
      Src: /src/frr/ospfd/ospf_apiserver.c:669,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_apiserver.c:672,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:677,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:679,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:684,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 54
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 580
    functionDepth: 3
    functionLinenumber: 580
    functionLinenumberEnd: 686
    functionName: ospf_apiserver_accept
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - getpeername
    - ospf_apiserver_event
    - memset
    - EVENT_FD
    - htons
    - socket
    - connect
    - ospf_apiserver_new
    - close
    - listnode_add
    - ntohs
    - zlog_warn
    - safe_strerror
    - zlog_debug
    - ospf_apiserver_getport
    - sockunion_accept
    - shutdown
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_accept(struct event *thread)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:722,1
    - Dst: msg_dup
      Src: /src/frr/ospfd/ospf_apiserver.c:730,1
    - Dst: msg_fifo_push
      Src: /src/frr/ospfd/ospf_apiserver.c:733,1
    - Dst: ospf_apiserver_event
      Src: /src/frr/ospfd/ospf_apiserver.c:736,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 694
    functionDepth: 3
    functionLinenumber: 694
    functionLinenumberEnd: 738
    functionName: ospf_apiserver_send_msg
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - msg_dup
    - zlog_warn
    - ospf_apiserver_event
    - msg_fifo_push
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_send_msg(struct ospf_apiserver *apiserv,\n\t\t\t\t
      \  struct msg *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new_msg_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:743,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:747,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:750,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:755,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:756,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - apiserv
    - seqnr
    - rc
    argTypes:
    - struct ospf_apiserver*
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 740
    functionDepth: 6
    functionLinenumber: 740
    functionLinenumberEnd: 758
    functionName: ospf_apiserver_send_reply
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - msg_free
    - zlog_warn
    - ospf_apiserver_send_msg
    - new_msg_reply
    - ospf_apiserver_free
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_send_reply(struct ospf_apiserver *apiserv, uint32_t
      seqnr,\n\t\t\t      uint8_t rc)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ospf_apiserver_handle_register_opaque_type
      Src: /src/frr/ospfd/ospf_apiserver.c:773,1
    - Dst: ospf_apiserver_handle_unregister_opaque_type
      Src: /src/frr/ospfd/ospf_apiserver.c:776,1
    - Dst: ospf_apiserver_handle_register_event
      Src: /src/frr/ospfd/ospf_apiserver.c:779,1
    - Dst: ospf_apiserver_handle_sync_lsdb
      Src: /src/frr/ospfd/ospf_apiserver.c:782,1
    - Dst: ospf_apiserver_handle_originate_request
      Src: /src/frr/ospfd/ospf_apiserver.c:785,1
    - Dst: ospf_apiserver_handle_delete_request
      Src: /src/frr/ospfd/ospf_apiserver.c:788,1
    - Dst: ospf_apiserver_handle_sync_reachable
      Src: /src/frr/ospfd/ospf_apiserver.c:791,1
    - Dst: ospf_apiserver_handle_sync_ism
      Src: /src/frr/ospfd/ospf_apiserver.c:794,1
    - Dst: ospf_apiserver_handle_sync_nsm
      Src: /src/frr/ospfd/ospf_apiserver.c:797,1
    - Dst: ospf_apiserver_handle_sync_router_id
      Src: /src/frr/ospfd/ospf_apiserver.c:800,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:803,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 808
    functionName: ospf_apiserver_handle_msg
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - ospf_apiserver_handle_register_event
    - ospf_apiserver_handle_delete_request
    - ospf_apiserver_handle_sync_lsdb
    - ospf_apiserver_handle_sync_reachable
    - ospf_apiserver_handle_sync_nsm
    - ospf_apiserver_handle_register_opaque_type
    - ospf_apiserver_handle_originate_request
    - zlog_warn
    - ospf_apiserver_handle_sync_ism
    - ospf_apiserver_handle_unregister_opaque_type
    - ospf_apiserver_handle_sync_router_id
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_handle_msg(struct ospf_apiserver *apiserv, struct
      msg *msg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:834,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_apiserver.c:841,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:852,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:863,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_apiserver.c:868,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:871,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:874,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - apiserv
    - lsa_type
    - opaque_type
    argTypes:
    - struct ospf_apiserver*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 877
    functionName: ospf_apiserver_register_opaque_type
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - XCALLOC
    - listcount
    - listnode_add
    - ospf_register_opaque_functab
    - zlog_warn
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_register_opaque_type(struct ospf_apiserver *apiserv,\n\t\t\t\t\tuint8_t
      lsa_type, uint8_t opaque_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:885,1
    - Dst: ospf_apiserver_flush_opaque_lsa
      Src: /src/frr/ospfd/ospf_apiserver.c:893,1
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_apiserver.c:895,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_apiserver.c:898,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:900,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:902,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:905,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - apiserv
    - lsa_type
    - opaque_type
    argTypes:
    - struct ospf_apiserver*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 915
    functionName: ospf_apiserver_unregister_opaque_type
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 2
    functionsReached:
    - ospf_delete_opaque_functab
    - listcount
    - zlog_debug
    - zlog_warn
    - XFREE
    - listnode_delete
    - ALL_LIST_ELEMENTS
    - ospf_apiserver_flush_opaque_lsa
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_unregister_opaque_type(struct ospf_apiserver *apiserv,\n\t\t\t\t\t
      \ uint8_t lsa_type, uint8_t opaque_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:926,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - apiserv
    - lsa_type
    - opaque_type
    argTypes:
    - struct ospf_apiserver*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 936
    functionName: apiserver_is_opaque_type_registered
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int apiserver_is_opaque_type_registered(struct ospf_apiserver *apiserv,\n\t\t\t\t\t
      \      uint8_t lsa_type,\n\t\t\t\t\t       uint8_t opaque_type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:947,1
    - Dst: ospf_apiserver_register_opaque_type
      Src: /src/frr/ospfd/ospf_apiserver.c:952,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:956,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:956,1
    - Dst: ospf_apiserver_notify_ready_type9
      Src: /src/frr/ospfd/ospf_apiserver.c:963,1
    - Dst: ospf_apiserver_notify_ready_type10
      Src: /src/frr/ospfd/ospf_apiserver.c:966,1
    - Dst: ospf_apiserver_notify_ready_type11
      Src: /src/frr/ospfd/ospf_apiserver.c:969,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 938
    functionDepth: 7
    functionLinenumber: 938
    functionLinenumberEnd: 974
    functionName: ospf_apiserver_handle_register_opaque_type
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - ospf_apiserver_notify_ready_type11
    - ospf_apiserver_notify_ready_type9
    - STREAM_DATA
    - ospf_apiserver_send_reply
    - ospf_apiserver_notify_ready_type10
    - ntohl
    - ospf_apiserver_register_opaque_type
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_handle_register_opaque_type(struct ospf_apiserver
      *apiserv,\n\t\t\t\t\t       struct msg *msg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:986,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:988,1
    - Dst: ospf_apiserver_is_ready_type9
      Src: /src/frr/ospfd/ospf_apiserver.c:990,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:995,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_apiserver.c:999,1
    - Dst: new_msg_ready_notify
      Src: /src/frr/ospfd/ospf_apiserver.c:1002,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_apiserver.c:1005,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1006,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1011,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1015,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1016,1
    - Dst: ospf_apiserver_notify_ready_type10
      Src: /src/frr/ospfd/ospf_apiserver.c:1027,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:1036,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_apiserver.c:1039,1
    - Dst: ospf_apiserver_is_ready_type10
      Src: /src/frr/ospfd/ospf_apiserver.c:1039,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:1045,1
    - Dst: new_msg_ready_notify
      Src: /src/frr/ospfd/ospf_apiserver.c:1051,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1055,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1060,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1064,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1065,1
    - Dst: ospf_apiserver_notify_ready_type11
      Src: /src/frr/ospfd/ospf_apiserver.c:1075,1
    - Dst: ospf_apiserver_is_ready_type11
      Src: /src/frr/ospfd/ospf_apiserver.c:1084,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:1088,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_apiserver.c:1092,1
    - Dst: new_msg_ready_notify
      Src: /src/frr/ospfd/ospf_apiserver.c:1094,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_apiserver.c:1097,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1098,1
    - Dst: ospf_apiserver_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1102,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1106,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1107,1
    - Dst: ospf_apiserver_handle_unregister_opaque_type
      Src: /src/frr/ospfd/ospf_apiserver.c:1115,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:1124,1
    - Dst: ospf_apiserver_unregister_opaque_type
      Src: /src/frr/ospfd/ospf_apiserver.c:1129,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:1132,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1132,1
    - Dst: ospf_apiserver_handle_register_event
      Src: /src/frr/ospfd/ospf_apiserver.c:1142,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:1150,1
    - Dst: msg_get_seq
      Src: /src/frr/ospfd/ospf_apiserver.c:1153,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:1156,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:1158,1
    - Dst: XMALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:1161,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_apiserver.c:1164,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:1170,1
    - Dst: apiserver_sync_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:1180,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1193,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1194,1
    - Dst: new_msg_lsa_change_notify
      Src: /src/frr/ospfd/ospf_apiserver.c:1217,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1221,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1232,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1233,1
    - Dst: ospf_apiserver_handle_sync_lsdb
      Src: /src/frr/ospfd/ospf_apiserver.c:1241,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1258,1
    - Dst: msg_get_seq
      Src: /src/frr/ospfd/ospf_apiserver.c:1261,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:1263,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:1270,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:1273,1
    - Dst: ROUTER_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:1297,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_apiserver.c:1301,1
    - Dst: NETWORK_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:1301,1
    - Dst: apiserver_sync_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:1302,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_apiserver.c:1305,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:1305,1
    - Dst: apiserver_sync_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:1306,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_apiserver.c:1309,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:1309,1
    - Dst: apiserver_sync_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:1310,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_apiserver.c:1313,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:1313,1
    - Dst: apiserver_sync_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:1314,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_apiserver.c:1317,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:1317,1
    - Dst: apiserver_sync_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:1318,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 1
    argNames:
    - apiserv
    argTypes:
    - struct ospf_apiserver*
    assertStmts:
    - condition: (p_arg)
      pos:
        line_end: 1193
        line_start: 1193
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (lsa->data)
      pos:
        line_end: 1192
        line_start: 1192
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 1321
      start: 978
    functionDepth: 7
    functionLinenumber: 978
    functionLinenumberEnd: 1321
    functionName: ospf_apiserver_notify_ready_type9
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - ROUTER_LSDB
    - ospf_apiserver_handle_sync_lsdb
    - apiserver_sync_callback
    - ospf_apiserver_unregister_opaque_type
    - ntohs
    - zlog_warn
    - OPAQUE_LINK_LSDB
    - msg_get_seq
    - new_msg_ready_notify
    - SUMMARY_LSDB
    - ospf_lookup_by_vrf_id
    - ASBR_SUMMARY_LSDB
    - ospf_apiserver_is_ready_type11
    - if
    - OPAQUE_AREA_LSDB
    - ntohl
    - ospf_apiserver_handle_unregister_opaque_type
    - ospf_apiserver_notify_ready_type10
    - assert
    - NETWORK_LSDB
    - msg_free
    - ospf_apiserver_is_ready_type10
    - ospf_apiserver_notify_ready_type11
    - ospf_apiserver_send_msg
    - XFREE
    - ospf_apiserver_is_ready_type9
    - ospf_apiserver_free
    - memcpy
    - ospf_apiserver_handle_register_event
    - STREAM_DATA
    - ospf_apiserver_send_reply
    - XMALLOC
    - new_msg_lsa_change_notify
    - ALL_LIST_ELEMENTS
    - LSDB_LOOP
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_notify_ready_type9(struct ospf_apiserver *apiserv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1353,1
    - Dst: msg_get_seq
      Src: /src/frr/ospfd/ospf_apiserver.c:1355,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:1366,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_apiserver.c:1367,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:1367,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_apiserver.c:1368,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1371,1
    - Dst: new_msg_reachable_change
      Src: /src/frr/ospfd/ospf_apiserver.c:1376,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:1377,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:1378,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:1378,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1379,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1382,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1383,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:1385,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:1389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts:
    - condition: ((a - abuf) <= (long)rt->count)
      pos:
        line_end: 1370
        line_start: 1370
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (mcount <= count)
      pos:
        line_end: 1378
        line_start: 1378
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 1393
      start: 1350
    functionDepth: 7
    functionLinenumber: 1350
    functionLinenumberEnd: 1393
    functionName: ospf_apiserver_handle_sync_reachable
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - msg_free
    - ospf_lookup_by_vrf_id
    - XCALLOC
    - new_msg_reachable_change
    - route_top
    - listhead
    - STREAM_DATA
    - ospf_apiserver_send_reply
    - route_next
    - ntohs
    - ospf_apiserver_send_msg
    - XFREE
    - msg_get_seq
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_handle_sync_reachable(struct ospf_apiserver *apiserv,\n\t\t\t\t\t
      struct msg *msg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1398,1
    - Dst: msg_get_seq
      Src: /src/frr/ospfd/ospf_apiserver.c:1403,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_apiserver.c:1407,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_apiserver.c:1409,1
    - Dst: new_msg_ism_change
      Src: /src/frr/ospfd/ospf_apiserver.c:1410,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1412,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1413,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:1421,1
    - Dst: ospf_apiserver_handle_sync_nsm
      Src: /src/frr/ospfd/ospf_apiserver.c:1426,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1429,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_apiserver.c:1440,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_apiserver.c:1442,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_apiserver.c:1444,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:1445,1
    - Dst: new_msg_nsm_change
      Src: /src/frr/ospfd/ospf_apiserver.c:1449,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1452,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1453,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1395
    functionDepth: 7
    functionLinenumber: 1395
    functionLinenumberEnd: 1462
    functionName: ospf_apiserver_handle_sync_ism
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - msg_free
    - ospf_lookup_by_vrf_id
    - new_msg_ism_change
    - ALL_LIST_ELEMENTS_RO
    - ospf_apiserver_handle_sync_nsm
    - ospf_apiserver_send_reply
    - route_top
    - route_next
    - ospf_apiserver_send_msg
    - new_msg_nsm_change
    - msg_get_seq
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_handle_sync_ism(struct ospf_apiserver *apiserv,\n\t\t\t\t
      \  struct msg *msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1472,1
    - Dst: msg_get_seq
      Src: /src/frr/ospfd/ospf_apiserver.c:1473,1
    - Dst: new_msg_router_id_change
      Src: /src/frr/ospfd/ospf_apiserver.c:1477,1
    - Dst: ospf_apiserver_send_msg
      Src: /src/frr/ospfd/ospf_apiserver.c:1478,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1479,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:1482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1469
    functionDepth: 7
    functionLinenumber: 1469
    functionLinenumberEnd: 1484
    functionName: ospf_apiserver_handle_sync_router_id
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - msg_free
    - ospf_lookup_by_vrf_id
    - ospf_apiserver_send_reply
    - new_msg_router_id_change
    - ospf_apiserver_send_msg
    - msg_get_seq
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_handle_sync_router_id(struct ospf_apiserver *apiserv,\n\t\t\t\t\t
      struct msg *msg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1513,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1515,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_apiserver.c:1518,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1519,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:1523,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_apiserver.c:1529,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/ospfd/ospf_apiserver.c:1530,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_apiserver.c:1535,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:1536,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_apiserver.c:1541,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_apiserver.c:1545,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:1546,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_apiserver.c:1549,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_apiserver.c:1550,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_apiserver.c:1553,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_apiserver.c:1559,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_apiserver.c:1559,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_apiserver.c:1560,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_apiserver.c:1561,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - area
    - oi
    - protolsa
    argTypes:
    - struct ospf_area*
    - struct ospf_interface*
    - struct lsa_header*
    assertStmts:
    - condition: (ospf)
      pos:
        line_end: 1514
        line_start: 1514
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 1564
      start: 1498
    functionDepth: 3
    functionLinenumber: 1498
    functionLinenumberEnd: 1564
    functionName: ospf_apiserver_opaque_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - stream_put
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - ntohs
    - zlog_warn
    - IS_DEBUG_OSPF
    - lsa_header_set
    - ospf_lookup_by_vrf_id
    - zlog_debug
    - LSA_OPTIONS_GET
    - LSA_OPTIONS_NSSA_GET
    - assert
    - stream_free
    - flags::flags
    - memcpy
    - stream_new
    - STREAM_DATA
    - stream_get_endp
    - SET_FLAG
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_apiserver_opaque_lsa_new(struct ospf_area *area,\n\t\t\t\t\t
      \      struct ospf_interface *oi,\n\t\t\t\t\t       struct lsa_header *protolsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1567
    functionDepth: 0
    functionLinenumber: 1567
    functionLinenumberEnd: 1571
    functionName: ospf_apiserver_is_ready_type9
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_is_ready_type9(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1573
    functionDepth: 0
    functionLinenumber: 1573
    functionLinenumberEnd: 1577
    functionName: ospf_apiserver_is_ready_type10
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_is_ready_type10(struct ospf_area *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1579
    functionDepth: 0
    functionLinenumber: 1579
    functionLinenumberEnd: 1583
    functionName: ospf_apiserver_is_ready_type11
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_is_ready_type11(struct ospf *ospf)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1601,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:1604,1
    - Dst: ospf_apiserver_if_lookup_by_addr
      Src: /src/frr/ospfd/ospf_apiserver.c:1610,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1612,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1621,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1623,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1635,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_apiserver.c:1643,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1643,1
    - Dst: apiserver_is_opaque_type_registered
      Src: /src/frr/ospfd/ospf_apiserver.c:1645,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1647,1
    - Dst: ospf_apiserver_is_ready_type9
      Src: /src/frr/ospfd/ospf_apiserver.c:1656,1
    - Dst: ospf_apiserver_is_ready_type10
      Src: /src/frr/ospfd/ospf_apiserver.c:1659,1
    - Dst: ospf_apiserver_is_ready_type11
      Src: /src/frr/ospfd/ospf_apiserver.c:1662,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1669,1
    - Dst: ospf_apiserver_opaque_lsa_new::ospf_apiserver_opaque_lsa_new
      Src: /src/frr/ospfd/ospf_apiserver.c:1676,1
    - Dst: ospf_lsdb_lookup
      Src: /src/frr/ospfd/ospf_apiserver.c:1683,1
    - Dst: ospf_opaque_is_owned
      Src: /src/frr/ospfd/ospf_apiserver.c:1685,1
    - Dst: ospf_apiserver_originate1
      Src: /src/frr/ospfd/ospf_apiserver.c:1687,1
    - Dst: old::old
      Src: /src/frr/ospfd/ospf_apiserver.c:1687,1
    - Dst: ospf_lsdb_add
      Src: /src/frr/ospfd/ospf_apiserver.c:1697,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_apiserver.c:1700,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:1706,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1706,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 80
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1586
    functionDepth: 11
    functionLinenumber: 1586
    functionLinenumberEnd: 1708
    functionName: ospf_apiserver_handle_originate_request
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - apiserver_is_opaque_type_registered
    - ospf_apiserver_opaque_lsa_new::ospf_apiserver_opaque_lsa_new
    - zlog_warn
    - ospf_apiserver_originate1
    - ospf_lsdb_add
    - ospf_lookup_by_vrf_id
    - old::old
    - ospf_apiserver_is_ready_type11
    - ntohl
    - ospf_apiserver_is_ready_type10
    - ospf_lsdb_lookup
    - ospf_opaque_lsa_refresh_schedule
    - ospf_apiserver_is_ready_type9
    - ospf_opaque_is_owned
    - ospf_area_lookup_by_area_id
    - GET_OPAQUE_TYPE
    - STREAM_DATA
    - ospf_apiserver_send_reply
    - ospf_apiserver_if_lookup_by_addr
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_handle_originate_request(struct ospf_apiserver
      *apiserv,\n\t\t\t\t\t    struct msg *msg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1722,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_apiserver.c:1729,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1733,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_apiserver.c:1737,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1742,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1743,1
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_apiserver.c:1748,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa)
      pos:
        line_end: 1721
        line_start: 1721
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (lsa->area)
      pos:
        line_end: 1732
        line_start: 1732
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (ospf)
      pos:
        line_end: 1742
        line_start: 1742
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 1752
      start: 1720
    functionDepth: 1
    functionLinenumber: 1720
    functionLinenumberEnd: 1752
    functionName: ospf_apiserver_flood_opaque_lsa
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - ospf_flood_through_as
    - ospf_flood_through_area
    - ospf_lookup_by_vrf_id
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_flood_opaque_lsa(struct ospf_lsa *lsa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1758,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1759,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1766,1
    - Dst: ospf_opaque_is_owned
      Src: /src/frr/ospfd/ospf_apiserver.c:1766,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:1768,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1771,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1772,1
    - Dst: IS_LSA_MAX_SEQ
      Src: /src/frr/ospfd/ospf_apiserver.c:1773,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1774,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_apiserver.c:1778,1
    - Dst: ospf_discard_from_db
      Src: /src/frr/ospfd/ospf_apiserver.c:1779,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:1782,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1785,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1785,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_apiserver.c:1788,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1789,1
    - Dst: ospf_flood_through
      Src: /src/frr/ospfd/ospf_apiserver.c:1801,1
    - Dst: ospf_apiserver_flood_opaque_lsa
      Src: /src/frr/ospfd/ospf_apiserver.c:1804,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - lsa
    - old
    argTypes:
    - struct ospf_lsa*
    - struct ospf_lsa*
    assertStmts:
    - condition: (!ospf_opaque_is_owned(old))
      pos:
        line_end: 1765
        line_start: 1765
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (ospf)
      pos:
        line_end: 1758
        line_start: 1758
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 1808
      start: 1754
    functionDepth: 2
    functionLinenumber: 1754
    functionLinenumberEnd: 1808
    functionName: ospf_apiserver_originate1
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - ospf_flood_through
    - ospf_apiserver_flood_opaque_lsa
    - ospf_lookup_by_vrf_id
    - flog_warn
    - ntohl
    - ospf_lsa_install
    - IS_LSA_MAX_SEQ
    - zlog_debug
    - ospf_discard_from_db
    - lsa_seqnum_increment
    - ospf_opaque_is_owned
    - assert
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_originate1(struct ospf_lsa *lsa, struct ospf_lsa
      *old)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:1818,1
    - Dst: ospf_apiserver_clients_notify_ready_type9
      Src: /src/frr/ospfd/ospf_apiserver.c:1819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1813
    functionDepth: 1
    functionLinenumber: 1813
    functionLinenumberEnd: 1822
    functionName: ospf_apiserver_lsa9_originator
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - ospf_apiserver_clients_notify_ready_type9
    - listcount
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_lsa9_originator(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:1829,1
    - Dst: ospf_apiserver_clients_notify_ready_type10
      Src: /src/frr/ospfd/ospf_apiserver.c:1830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1824
    functionDepth: 1
    functionLinenumber: 1824
    functionLinenumberEnd: 1833
    functionName: ospf_apiserver_lsa10_originator
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - ospf_apiserver_clients_notify_ready_type10
    - listcount
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_lsa10_originator(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:1840,1
    - Dst: ospf_apiserver_clients_notify_ready_type11
      Src: /src/frr/ospfd/ospf_apiserver.c:1841,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1835
    functionDepth: 1
    functionLinenumber: 1835
    functionLinenumberEnd: 1844
    functionName: ospf_apiserver_lsa11_originator
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - listcount
    - ospf_apiserver_clients_notify_ready_type11
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_lsa11_originator(void *arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1855,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1857,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1858,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_apiserver.c:1860,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:1861,1
    - Dst: lookup_apiserver_by_lsa
      Src: /src/frr/ospfd/ospf_apiserver.c:1865,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1867,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_apiserver.c:1868,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_apiserver.c:1870,1
    - Dst: ospf_lsdb_lookup::ospf_lsdb_lookup
      Src: /src/frr/ospfd/ospf_apiserver.c:1875,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_apiserver.c:1877,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_apiserver.c:1878,1
    - Dst: ospf_apiserver_opaque_lsa_new::ospf_apiserver_opaque_lsa_new
      Src: /src/frr/ospfd/ospf_apiserver.c:1883,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1886,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_apiserver.c:1891,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_apiserver.c:1896,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_apiserver.c:1896,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_apiserver.c:1900,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_apiserver.c:1900,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_apiserver.c:1903,1
    - Dst: oi::oi
      Src: /src/frr/ospfd/ospf_apiserver.c:1903,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1904,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_apiserver.c:1918,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:1919,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_apiserver.c:1920,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_apiserver.c:1920,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_apiserver.c:1921,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa)
      pos:
        line_end: 1854
        line_start: 1854
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (ospf)
      pos:
        line_end: 1857
        line_start: 1857
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 1926
      start: 1849
    functionDepth: 5
    functionLinenumber: 1849
    functionLinenumberEnd: 1926
    functionName: ospf_apiserver_lsa_refresher
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - htons
    - lookup_apiserver_by_lsa
    - ospf_lsdb_lookup::ospf_lsdb_lookup
    - oi::oi
    - ospf_apiserver_opaque_lsa_new::ospf_apiserver_opaque_lsa_new
    - zlog_warn
    - data::data
    - IS_DEBUG_OSPF
    - ospf_lookup_by_vrf_id
    - flog_warn
    - zlog_debug
    - dump_lsa_key
    - assert
    - ospf_lsa_install
    - ospf_lsa_header_dump
    - flags::flags
    - ospf_opaque_lsa_flush_schedule
    - ospf_lsdb_delete
    - IS_LSA_MAXAGE
    - SET_FLAG
    - lsa_seqnum_increment
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_apiserver_lsa_refresher(struct ospf_lsa *lsa)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1946,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:1947,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:1950,1
    - Dst: ospf_apiserver_if_lookup_by_addr
      Src: /src/frr/ospfd/ospf_apiserver.c:1955,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1957,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_apiserver.c:1965,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1967,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1978,1
    - Dst: apiserver_is_opaque_type_registered
      Src: /src/frr/ospfd/ospf_apiserver.c:1988,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:1990,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_apiserver.c:1997,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_apiserver.c:1998,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:1998,1
    - Dst: ospf_lsa_lookup
      Src: /src/frr/ospfd/ospf_apiserver.c:2005,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2007,1
    - Dst: IS_DEL_ZERO_LEN_LSA
      Src: /src/frr/ospfd/ospf_apiserver.c:2013,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_apiserver.c:2021,1
    - Dst: ospf_apiserver_send_reply
      Src: /src/frr/ospfd/ospf_apiserver.c:2026,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:2026,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 2
    argNames:
    - apiserv
    - msg
    argTypes:
    - struct ospf_apiserver*
    - struct msg*
    assertStmts:
    - condition: (ospf)
      pos:
        line_end: 1946
        line_start: 1946
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 2028
      start: 1934
    functionDepth: 11
    functionLinenumber: 1934
    functionLinenumberEnd: 2028
    functionName: ospf_apiserver_handle_delete_request
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - apiserver_is_opaque_type_registered
    - SET_OPAQUE_LSID
    - ospf_area_lookup_by_area_id
    - ospf_lookup_by_vrf_id
    - htonl
    - STREAM_DATA
    - ospf_apiserver_send_reply
    - ospf_lsa_lookup
    - zlog_warn
    - ospf_apiserver_if_lookup_by_addr
    - IS_DEL_ZERO_LEN_LSA
    - ntohl
    - ospf_opaque_lsa_flush_schedule
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_apiserver_handle_delete_request(struct ospf_apiserver *apiserv,\n\t\t\t\t\t
      struct msg *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:2041,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:2042,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_apiserver.c:2046,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_apiserver.c:2047,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:2047,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_apiserver.c:2049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - lsa
    - p_arg
    - int_arg
    argTypes:
    - struct ospf_lsa*
    - void*
    - int
    assertStmts:
    - condition: (lsa->data)
      pos:
        line_end: 2040
        line_start: 2040
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (p_arg)
      pos:
        line_end: 2041
        line_start: 2041
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 2052
      start: 2031
    functionDepth: 1
    functionLinenumber: 2031
    functionLinenumberEnd: 2052
    functionName: apiserver_flush_opaque_type_callback
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - GET_OPAQUE_TYPE
    - IS_LSA_SELF
    - ntohl
    - ospf_opaque_lsa_flush_schedule
    - assert
    linkageType: ''
    returnType: int
    signature: "int apiserver_flush_opaque_type_callback(struct ospf_lsa *lsa,\n\t\t\t\t\t\tvoid
      *p_arg, int int_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_apiserver.c:2070,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:2071,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:2083,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:2084,1
    - Dst: apiserver_flush_opaque_type_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:2085,1
    - Dst: OSPF_OPAQUE_AREA_LSA
      Src: /src/frr/ospfd/ospf_apiserver.c:2088,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_apiserver.c:2089,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_apiserver.c:2090,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:2090,1
    - Dst: apiserver_flush_opaque_type_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:2091,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_apiserver.c:2095,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospf_apiserver.c:2095,1
    - Dst: apiserver_flush_opaque_type_callback
      Src: /src/frr/ospfd/ospf_apiserver.c:2096,1
    - Dst: ospf_apiserver_new_if
      Src: /src/frr/ospfd/ospf_apiserver.c:2111,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2121,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2126,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2127,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2132,1
    - Dst: ospf_apiserver_if_lookup_by_ifp
      Src: /src/frr/ospfd/ospf_apiserver.c:2136,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2141,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:2146,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:2149,1
    - Dst: ospf_apiserver_clients_notify_new_if
      Src: /src/frr/ospfd/ospf_apiserver.c:2150,1
    - Dst: ospf_apiserver_del_if
      Src: /src/frr/ospfd/ospf_apiserver.c:2155,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2160,1
    - Dst: ospf_apiserver_if_lookup_by_ifp
      Src: /src/frr/ospfd/ospf_apiserver.c:2163,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2168,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:2173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - apiserv
    - lsa_type
    - opaque_type
    argTypes:
    - struct ospf_apiserver*
    - uint8_t
    - uint8_t
    assertStmts:
    - condition: (oi)
      pos:
        line_end: 2145
        line_start: 2145
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (ospf)
      pos:
        line_end: 2070
        line_start: 2070
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 2177
      start: 2058
    functionDepth: 2
    functionLinenumber: 2058
    functionLinenumberEnd: 2177
    functionName: ospf_apiserver_flush_opaque_lsa
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 1
    functionsReached:
    - ospf_apiserver_del_if
    - ospf_lookup_by_vrf_id
    - apiserver_flush_opaque_type_callback
    - listcount
    - OPAQUE_AREA_LSDB
    - ospf_apiserver_new_if
    - ospf_apiserver_clients_notify_new_if
    - zlog_warn
    - OPAQUE_LINK_LSDB
    - OSPF_OPAQUE_AREA_LSA
    - ospf_apiserver_if_lookup_by_ifp
    - ALL_LIST_ELEMENTS
    - LSDB_LOOP
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf_apiserver_flush_opaque_lsa(struct ospf_apiserver *apiserv,\n\t\t\t\t
      \    uint8_t lsa_type, uint8_t opaque_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2184,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:2185,1
    - Dst: ospf_apiserver_clients_notify_ism_change
      Src: /src/frr/ospfd/ospf_apiserver.c:2186,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - oi
    - old_state
    argTypes:
    - struct ospf_interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 2179
    functionDepth: 1
    functionLinenumber: 2179
    functionLinenumberEnd: 2191
    functionName: ospf_apiserver_ism_change
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - ospf_apiserver_clients_notify_ism_change
    - zlog_warn
    - listcount
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_ism_change(struct ospf_interface *oi, int old_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2196,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_apiserver.c:2197,1
    - Dst: ospf_apiserver_clients_notify_nsm_change
      Src: /src/frr/ospfd/ospf_apiserver.c:2198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - nbr
    - old_status
    argTypes:
    - struct ospf_neighbor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2200
      start: 2193
    functionDepth: 1
    functionLinenumber: 2193
    functionLinenumberEnd: 2200
    functionName: ospf_apiserver_nsm_change
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - ospf_apiserver_clients_notify_nsm_change
    - listcount
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_nsm_change(struct ospf_neighbor *nbr, int old_status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_apiserver.c:2216,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:2217,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_apiserver.c:2223,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_apiserver.c:2227,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_apiserver.c:2230,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_apiserver.c:2232,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_apiserver.c:2235,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_apiserver.c:2237,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2240,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_apiserver.c:2243,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2245,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - vty
    - json
    - lsa
    argTypes:
    - struct vty*
    - struct json_object*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2202
    functionDepth: 1
    functionLinenumber: 2202
    functionLinenumberEnd: 2252
    functionName: ospf_apiserver_show_info
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - vty_out
    - ntohs
    - zlog_debug
    - json_object_string_addf
    - VALID_OPAQUE_INFO_LEN
    linkageType: ''
    returnType: void
    signature: "void ospf_apiserver_show_info(struct vty *vty, struct json_object
      *json,\n\t\t\t      struct ospf_lsa *lsa)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_apiserver.c:2584,1
    - Dst: apiserver_clients_lsa_change_notify
      Src: /src/frr/ospfd/ospf_apiserver.c:2586,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2587
      start: 2577
    functionDepth: 1
    functionLinenumber: 2577
    functionLinenumberEnd: 2587
    functionName: ospf_apiserver_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - IS_LSA_MAXAGE
    - apiserver_clients_lsa_change_notify
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apiserver_clients_lsa_change_notify
      Src: /src/frr/ospfd/ospf_apiserver.c:2591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2592
      start: 2589
    functionDepth: 0
    functionLinenumber: 2589
    functionLinenumberEnd: 2592
    functionName: ospf_apiserver_lsa_delete
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - apiserver_clients_lsa_change_notify
    linkageType: ''
    returnType: int
    signature: int ospf_apiserver_lsa_delete(struct ospf_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:2607,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_apiserver.c:2608,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - orn
    - nrn
    argTypes:
    - struct route_node*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2615
      start: 2599
    functionDepth: 0
    functionLinenumber: 2599
    functionLinenumberEnd: 2615
    functionName: cmp_route_nodes
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int cmp_route_nodes(struct route_node *orn,\n\t\t\t\t  struct route_node
      *nrn)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2631,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:2635,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_apiserver.c:2637,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_apiserver.c:2640,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_apiserver.c:2641,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_apiserver.c:2643,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:2644,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_apiserver.c:2647,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:2648,1
    - Dst: cmp_route_nodes
      Src: /src/frr/ospfd/ospf_apiserver.c:2651,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2655,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:2657,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:2658,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:2660,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2665,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:2667,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_apiserver.c:2669,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2674,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_apiserver.c:2676,1
    - Dst: new_msg_reachable_change
      Src: /src/frr/ospfd/ospf_apiserver.c:2686,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_apiserver.c:2687,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:2689,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:2690,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:2692,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:2693,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_apiserver.c:2696,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:2697,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_apiserver.c:2697,1
    - Dst: ospf_apiserver_clients_notify_all
      Src: /src/frr/ospfd/ospf_apiserver.c:2698,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:2699,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:2702,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_apiserver.c:2704,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 62
    argCount: 2
    argNames:
    - ort
    - nrt
    argTypes:
    - struct route_table*
    - struct route_table*
    assertStmts:
    - condition: (d != NULL)
      pos:
        line_end: 2659
        line_start: 2659
        source_file: /src/frr/ospfd/ospf_apiserver.c
    - condition: (a != NULL)
      pos:
        line_end: 2668
        line_start: 2668
        source_file: /src/frr/ospfd/ospf_apiserver.c
    constantsTouched: []
    func_position:
      end: 2705
      start: 2617
    functionDepth: 3
    functionLinenumber: 2617
    functionLinenumberEnd: 2705
    functionName: ospf_apiserver_notify_reachable
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 2
    functionsReached:
    - msg_free
    - XCALLOC
    - new_msg_reachable_change
    - route_top
    - listhead
    - STREAM_DATA
    - cmp_route_nodes
    - route_next
    - ntohs
    - ospf_apiserver_clients_notify_all
    - zlog_debug
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf_apiserver_notify_reachable(struct route_table *ort,\n\t\t\t\t
      \    struct route_table *nrt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new_msg_router_id_change
      Src: /src/frr/ospfd/ospf_apiserver.c:2712,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_apiserver.c:2714,1
    - Dst: ospf_apiserver_clients_notify_all
      Src: /src/frr/ospfd/ospf_apiserver.c:2718,1
    - Dst: msg_free
      Src: /src/frr/ospfd/ospf_apiserver.c:2719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - router_id
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2720
      start: 2708
    functionDepth: 3
    functionLinenumber: 2708
    functionLinenumberEnd: 2720
    functionName: ospf_apiserver_clients_notify_router_id_change
    functionSourceFile: /src/frr/ospfd/ospf_apiserver.c
    functionUses: 0
    functionsReached:
    - msg_free
    - new_msg_router_id_change
    - ospf_apiserver_clients_notify_all
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void ospf_apiserver_clients_notify_router_id_change(struct in_addr
      router_id)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ia.c:41,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ia.c:44,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ia.c:46,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ia.c:47,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ia.c:66,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ia.c:66,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ia.c:69,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ia.c:71,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:73,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ia.c:77,1
    - Dst: ospf_route_cmp
      Src: /src/frr/ospfd/ospf_ia.c:77,1
    - Dst: ospf_route_subst
      Src: /src/frr/ospfd/ospf_ia.c:79,1
    - Dst: route_lock_node
      Src: /src/frr/ospfd/ospf_ia.c:83,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_ia.c:84,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ia.c:85,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_ia.c:89,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_ia.c:92,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:99,1
    - Dst: ospf_route_add
      Src: /src/frr/ospfd/ospf_ia.c:100,1
    - Dst: ospf_ia_router_route
      Src: /src/frr/ospfd/ospf_ia.c:104,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:114,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_ia.c:117,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ia.c:121,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_ia.c:124,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ia.c:126,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ia.c:128,1
    - Dst: ospf_find_asbr_route_through_area
      Src: /src/frr/ospfd/ospf_ia.c:129,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:134,1
    - Dst: ospf_route_cmp
      Src: /src/frr/ospfd/ospf_ia.c:138,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_ia.c:139,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_ia.c:140,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:146,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_ia.c:149,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_ia.c:150,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:156,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_ia.c:158,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_ia.c:163,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:166,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ia.c:168,1
    - Dst: process_summary_lsa
      Src: /src/frr/ospfd/ospf_ia.c:172,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:188,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_ia.c:190,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ia.c:195,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_ia.c:198,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ia.c:205,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ia.c:209,1
    - Dst: ospf_area_range_match_any
      Src: /src/frr/ospfd/ospf_ia.c:212,1
    - Dst: ospf_area_range_active
      Src: /src/frr/ospfd/ospf_ia.c:213,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_ia.c:220,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ia.c:228,1
    - Dst: ospf_find_abr_route
      Src: /src/frr/ospfd/ospf_ia.c:230,1
    - Dst: ospf_route_new
      Src: /src/frr/ospfd/ospf_ia.c:235,1
    - Dst: ospf_ia_network_route
      Src: /src/frr/ospfd/ospf_ia.c:247,1
    - Dst: ospf_ia_router_route
      Src: /src/frr/ospfd/ospf_ia.c:251,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 3
    argNames:
    - rtrs
    - abr
    - area
    argTypes:
    - struct route_table*
    - struct prefix_ipv4*
    - struct ospf_area*
    assertStmts:
    - condition: (or_area)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/frr/ospfd/ospf_ia.c
    constantsTouched: []
    func_position:
      end: 255
      start: 33
    functionDepth: 11
    functionLinenumber: 33
    functionLinenumberEnd: 255
    functionName: ospf_find_abr_route
    functionSourceFile: /src/frr/ospfd/ospf_ia.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv4
    - ospf_find_abr_route
    - ospf_route_add
    - listnode_add
    - IPV4_ADDR_SAME
    - ospf_find_asbr_route_through_area
    - route_node_lookup
    - GET_METRIC
    - ospf_route_cmp
    - ALL_LIST_ELEMENTS_RO
    - ospf_route_copy_nexthops
    - IS_OSPF_ABR
    - zlog_debug
    - if
    - ospf_route_free
    - assert
    - route_unlock_node
    - ospf_ia_router_route
    - ospf_area_range_active
    - process_summary_lsa
    - ip_masklen
    - ospf_route_new
    - listnode_delete
    - ospf_area_lookup_by_area_id
    - route_lock_node
    - IS_LSA_MAXAGE
    - route_node_get
    - list_new
    - ospf_lsa_is_self_originated
    - ospf_area_range_match_any
    - ospf_ia_network_route
    - ospf_route_subst
    linkageType: ''
    returnType: struct ospf_route
    signature: "struct ospf_route *ospf_find_abr_route(struct route_table *rtrs,\n\t\t\t\t\t
      \     struct prefix_ipv4 *abr,\n\t\t\t\t\t      struct ospf_area *area)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_ia.c:265,1
    - Dst: process_summary_lsa
      Src: /src/frr/ospfd/ospf_ia.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - area
    - lsdb_rt
    - rt
    - rtrs
    argTypes:
    - struct ospf_area*
    - struct route_table*
    - struct route_table*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 267
    functionName: ospf_examine_summaries
    functionSourceFile: /src/frr/ospfd/ospf_ia.c
    functionUses: 0
    functionsReached:
    - LSDB_LOOP
    - process_summary_lsa
    linkageType: ''
    returnType: void
    signature: "void ospf_examine_summaries(struct ospf_area *area,\n\t\t\t\t   struct
      route_table *lsdb_rt,\n\t\t\t\t   struct route_table *rt,\n\t\t\t\t   struct
      route_table *rtrs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_full_virtual_nbrs
      Src: /src/frr/ospfd/ospf_ia.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 274
    functionName: ospf_area_is_transit
    functionSourceFile: /src/frr/ospfd/ospf_ia.c
    functionUses: 2
    functionsReached:
    - ospf_full_virtual_nbrs
    linkageType: ''
    returnType: int
    signature: int ospf_area_is_transit(struct ospf_area *area)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ia.c:290,1
    - Dst: ospf_find_abr_route
      Src: /src/frr/ospfd/ospf_ia.c:292,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:296,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_ia.c:301,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ia.c:303,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:311,1
    - Dst: ospf_route_new
      Src: /src/frr/ospfd/ospf_ia.c:313,1
    - Dst: ospf_route_add
      Src: /src/frr/ospfd/ospf_ia.c:323,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ia.c:327,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:337,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_ia.c:344,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:347,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_ia.c:354,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:356,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:364,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:370,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_ia.c:373,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:378,1
    - Dst: ospf_route_subst_nexthops
      Src: /src/frr/ospfd/ospf_ia.c:381,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_ia.c:385,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 75
    argCount: 6
    argNames:
    - ospf
    - rt
    - rtrs
    - lsa
    - p
    - area
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct route_table*
    - struct summary_lsa*
    - struct prefix_ipv4*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 276
    functionDepth: 12
    functionLinenumber: 276
    functionLinenumberEnd: 396
    functionName: ospf_update_network_route
    functionSourceFile: /src/frr/ospfd/ospf_ia.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - route_unlock_node
    - route_node_lookup
    - OSPF_IS_AREA_ID_BACKBONE
    - GET_METRIC
    - ospf_route_subst_nexthops
    - ospf_find_abr_route
    - ospf_route_add
    - ospf_route_copy_nexthops
    - ospf_route_new
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void ospf_update_network_route(struct ospf *ospf, struct route_table
      *rt,\n\t\t\t\t      struct route_table *rtrs,\n\t\t\t\t      struct summary_lsa
      *lsa,\n\t\t\t\t      struct prefix_ipv4 *p,\n\t\t\t\t      struct ospf_area
      *area)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ia.c:411,1
    - Dst: ospf_find_abr_route
      Src: /src/frr/ospfd/ospf_ia.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:417,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_ia.c:422,1
    - Dst: ospf_find_asbr_route_through_area
      Src: /src/frr/ospfd/ospf_ia.c:432,1
    - Dst: ospf_route_new
      Src: /src/frr/ospfd/ospf_ia.c:446,1
    - Dst: ospf_ia_router_route
      Src: /src/frr/ospfd/ospf_ia.c:457,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:467,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_ia.c:480,1
    - Dst: ospf_route_subst_nexthops
      Src: /src/frr/ospfd/ospf_ia.c:483,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 5
    argNames:
    - ospf
    - rtrs
    - lsa
    - p
    - area
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct summary_lsa*
    - struct prefix_ipv4*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 398
    functionDepth: 12
    functionLinenumber: 398
    functionLinenumberEnd: 492
    functionName: ospf_update_router_route
    functionSourceFile: /src/frr/ospfd/ospf_ia.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - GET_METRIC
    - ospf_route_subst_nexthops
    - ospf_find_abr_route
    - ospf_ia_router_route
    - ospf_route_copy_nexthops
    - ospf_route_new
    - zlog_debug
    - ospf_find_asbr_route_through_area
    linkageType: ''
    returnType: void
    signature: "void ospf_update_router_route(struct ospf *ospf,\n\t\t\t\t     struct
      route_table *rtrs,\n\t\t\t\t     struct summary_lsa *lsa,\n\t\t\t\t     struct
      prefix_ipv4 *p,\n\t\t\t\t     struct ospf_area *area)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:510,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_ia.c:511,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:515,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ia.c:519,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:521,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_ia.c:525,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ia.c:527,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ia.c:535,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ia.c:539,1
    - Dst: ospf_update_network_route
      Src: /src/frr/ospfd/ospf_ia.c:542,1
    - Dst: ospf_update_router_route
      Src: /src/frr/ospfd/ospf_ia.c:544,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 4
    argNames:
    - area
    - rt
    - rtrs
    - lsa
    argTypes:
    - struct ospf_area*
    - struct route_table*
    - struct route_table*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 494
    functionDepth: 13
    functionLinenumber: 494
    functionLinenumberEnd: 547
    functionName: process_transit_summary_lsa
    functionSourceFile: /src/frr/ospfd/ospf_ia.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - ospf_update_network_route
    - GET_METRIC
    - ospf_update_router_route
    - IS_LSA_MAXAGE
    - ip_masklen
    - zlog_debug
    - ospf_lsa_is_self_originated
    linkageType: ''
    returnType: int
    signature: "int process_transit_summary_lsa(struct ospf_area *area,\n\t\t\t\t
      \      struct route_table *rt,\n\t\t\t\t       struct route_table *rtrs,\n\t\t\t\t
      \      struct ospf_lsa *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_ia.c:557,1
    - Dst: process_transit_summary_lsa
      Src: /src/frr/ospfd/ospf_ia.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - area
    - lsdb_rt
    - rt
    - rtrs
    argTypes:
    - struct ospf_area*
    - struct route_table*
    - struct route_table*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 549
    functionDepth: 14
    functionLinenumber: 549
    functionLinenumberEnd: 559
    functionName: ospf_examine_transit_summaries
    functionSourceFile: /src/frr/ospfd/ospf_ia.c
    functionUses: 0
    functionsReached:
    - LSDB_LOOP
    - process_transit_summary_lsa
    linkageType: ''
    returnType: void
    signature: "void ospf_examine_transit_summaries(struct ospf_area *area,\n\t\t\t\t\t
      \  struct route_table *lsdb_rt,\n\t\t\t\t\t   struct route_table *rt,\n\t\t\t\t\t
      \  struct route_table *rtrs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:110,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:113,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_packet.c:117,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 121
    functionName: ospf_auth_type
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - OSPF_IF_PARAM
    - list_isempty
    linkageType: ''
    returnType: int
    signature: int ospf_auth_type(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_packet.c:127,1
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_packet.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 131
    functionName: ospf_packet_new
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - stream_new
    linkageType: ''
    returnType: struct ospf_packet
    signature: struct ospf_packet *ospf_packet_new(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_packet.c:136,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_packet.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - struct ospf_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: ospf_packet_free
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - stream_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_packet_free(struct ospf_packet *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_packet.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 147
    functionName: ospf_fifo_new
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct ospf_fifo
    signature: struct ospf_fifo *ospf_fifo_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fifo
    - op
    argTypes:
    - struct ospf_fifo*
    - struct ospf_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 160
    functionName: ospf_fifo_push
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_fifo_push(struct ospf_fifo *fifo, struct ospf_packet *op)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fifo
    - op
    argTypes:
    - struct ospf_fifo*
    - struct ospf_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 173
    functionName: ospf_fifo_push_head
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_fifo_push_head(struct ospf_fifo *fifo, struct ospf_packet
      *op)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 192
    functionName: ospf_fifo_pop
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ospf_packet
    signature: struct ospf_packet *ospf_fifo_pop(struct ospf_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: ospf_fifo_head
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ospf_packet
    signature: struct ospf_packet *ospf_fifo_head(struct ospf_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_packet_free
      Src: /src/frr/ospfd/ospf_packet.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 212
    functionName: ospf_fifo_flush
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_packet_free
    linkageType: ''
    returnType: void
    signature: void ospf_fifo_flush(struct ospf_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_fifo_flush
      Src: /src/frr/ospfd/ospf_packet.c:217,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_packet.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: ospf_fifo_free
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_fifo_flush
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_fifo_free(struct ospf_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_fifo_push
      Src: /src/frr/ospfd/ospf_packet.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oi
    - op
    argTypes:
    - struct ospf_interface*
    - struct ospf_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 229
    functionName: ospf_packet_add
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_fifo_push
    linkageType: ''
    returnType: void
    signature: void ospf_packet_add(struct ospf_interface *oi, struct ospf_packet
      *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_fifo_push_head
      Src: /src/frr/ospfd/ospf_packet.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oi
    - op
    argTypes:
    - struct ospf_interface*
    - struct ospf_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 239
    functionName: ospf_packet_add_top
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_fifo_push_head
    linkageType: ''
    returnType: void
    signature: "void ospf_packet_add_top(struct ospf_interface *oi,\n\t\t\t\tstruct
      ospf_packet *op)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_fifo_pop
      Src: /src/frr/ospfd/ospf_packet.c:245,1
    - Dst: ospf_packet_free
      Src: /src/frr/ospfd/ospf_packet.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 249
    functionName: ospf_packet_delete
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_packet_free
    - ospf_fifo_pop
    linkageType: ''
    returnType: void
    signature: void ospf_packet_delete(struct ospf_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:255,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:257,1
    - Dst: STREAM_SIZE
      Src: /src/frr/ospfd/ospf_packet.c:259,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:262,1
    - Dst: ospf_packet_new::ospf_packet_new
      Src: /src/frr/ospfd/ospf_packet.c:262,1
    - Dst: stream_copy
      Src: /src/frr/ospfd/ospf_packet.c:263,1
    - Dst: s::s
      Src: /src/frr/ospfd/ospf_packet.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - struct ospf_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 269
    functionName: ospf_packet_dup
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - stream_copy
    - s::s
    - ospf_packet_new::ospf_packet_new
    - stream_get_endp
    - zlog_debug
    - STREAM_SIZE
    linkageType: ''
    returnType: struct ospf_packet
    signature: struct ospf_packet *ospf_packet_dup(struct ospf_packet *op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_auth_type
      Src: /src/frr/ospfd/ospf_packet.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 280
    functionName: ospf_packet_authspace
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_auth_type
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf_packet_authspace(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_packet_authspace
      Src: /src/frr/ospfd/ospf_packet.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 282
    functionDepth: 3
    functionLinenumber: 282
    functionLinenumberEnd: 291
    functionName: ospf_packet_max
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_packet_authspace
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf_packet_max(struct ospf_interface *oi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:305,1
    - Dst: ospf_crypt_key_lookup
      Src: /src/frr/ospfd/ospf_packet.c:308,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:308,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:311,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:314,1
    - Dst: ospf_nbr_lookup_by_routerid
      Src: /src/frr/ospfd/ospf_packet.c:319,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:322,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:322,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:323,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:326,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:326,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:327,1
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ospfd/ospf_packet.c:334,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ospfd/ospf_packet.c:335,1
    - Dst: EVP_md5
      Src: /src/frr/ospfd/ospf_packet.c:335,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospfd/ospf_packet.c:336,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospfd/ospf_packet.c:337,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ospfd/ospf_packet.c:338,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ospfd/ospf_packet.c:339,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:341,1
    - Dst: MD5Init
      Src: /src/frr/ospfd/ospf_packet.c:342,1
    - Dst: MD5Update
      Src: /src/frr/ospfd/ospf_packet.c:343,1
    - Dst: MD5Update
      Src: /src/frr/ospfd/ospf_packet.c:344,1
    - Dst: MD5Final
      Src: /src/frr/ospfd/ospf_packet.c:345,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_packet.c:349,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:350,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:353,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - oi
    - ospfh
    argTypes:
    - struct ospf_interface*
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 361
    functionName: ospf_check_md5_digest
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - EVP_DigestUpdate
    - memset
    - EVP_DigestInit
    - OSPF_IF_PARAM
    - EVP_md5
    - ospf_crypt_key_lookup
    - MD5Init
    - MD5Update
    - memcmp
    - ntohs
    - ospf_nbr_lookup_by_routerid
    - EVP_DigestFinal
    - MD5Final
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    - ntohl
    - IF_NAME
    linkageType: ''
    returnType: int
    signature: "int ospf_check_md5_digest(struct ospf_interface *oi,\n\t\t\t\t struct
      ospf_header *ospfh)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_packet.c:381,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:384,1
    - Dst: time
      Src: /src/frr/ospfd/ospf_packet.c:391,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:397,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_packet.c:400,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:400,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_packet.c:403,1
    - Dst: listtail
      Src: /src/frr/ospfd/ospf_packet.c:403,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:403,1
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ospfd/ospf_packet.c:410,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ospfd/ospf_packet.c:411,1
    - Dst: EVP_md5
      Src: /src/frr/ospfd/ospf_packet.c:411,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospfd/ospf_packet.c:412,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:412,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospfd/ospf_packet.c:413,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ospfd/ospf_packet.c:414,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ospfd/ospf_packet.c:415,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:417,1
    - Dst: MD5Init
      Src: /src/frr/ospfd/ospf_packet.c:418,1
    - Dst: MD5Update
      Src: /src/frr/ospfd/ospf_packet.c:419,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:419,1
    - Dst: MD5Update
      Src: /src/frr/ospfd/ospf_packet.c:420,1
    - Dst: MD5Final
      Src: /src/frr/ospfd/ospf_packet.c:421,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_packet.c:425,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:428,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:430,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:432,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:435,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 2
    argNames:
    - oi
    - op
    argTypes:
    - struct ospf_interface*
    - struct ospf_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 439
    functionName: ospf_make_md5_digest
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - stream_put
    - EVP_DigestUpdate
    - MD5Init
    - MD5Update
    - ntohs
    - htonl
    - MD5Final
    - flog_warn
    - memset
    - EVP_DigestInit
    - EVP_md5
    - listgetdata
    - listtail
    - OSPF_IF_PARAM
    - list_isempty
    - STREAM_DATA
    - stream_get_endp
    - EVP_DigestFinal
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    - time
    linkageType: ''
    returnType: int
    signature: "int ospf_make_md5_digest(struct ospf_interface *oi,\n\t\t\t\tstruct
      ospf_packet *op)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:446,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_packet.c:450,1
    - Dst: ospf_ls_req_send
      Src: /src/frr/ospfd/ospf_packet.c:451,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_packet.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 455
    functionName: ospf_ls_req_timer
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_ls_req_send
    - ospf_ls_request_count
    - OSPF_NSM_TIMER_ON
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_ls_req_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_packet.c:459,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_packet.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 461
    functionName: ospf_ls_req_event
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf_ls_req_event(struct ospf_neighbor *nbr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:469,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_packet.c:473,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:480,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_packet.c:483,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:489,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:489,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_packet.c:506,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:508,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:513,1
    - Dst: ospf_ls_upd_send
      Src: /src/frr/ospfd/ospf_packet.c:514,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:516,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_packet.c:520,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 521
    functionName: ospf_ls_upd_timer
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - list_delete
    - OSPF_IF_PARAM
    - listcount
    - route_top
    - ospf_ls_upd_send
    - OSPF_NSM_TIMER_ON
    - listnode_add
    - route_next
    - list_new
    - monotime_since
    - EVENT_ARG
    - ospf_ls_retransmit_count
    linkageType: ''
    returnType: void
    signature: void ospf_ls_upd_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:527,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:531,1
    - Dst: ospf_ls_ack_send_delayed
      Src: /src/frr/ospfd/ospf_packet.c:532,1
    - Dst: OSPF_ISM_TIMER_ON
      Src: /src/frr/ospfd/ospf_packet.c:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 536
    functionName: ospf_ls_ack_timer
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - OSPF_ISM_TIMER_ON
    - listcount
    - ospf_ls_ack_send_delayed
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_ls_ack_timer(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:548,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:548,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:549,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:573,1
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_packet.c:573,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:578,1
    - Dst: sockopt_iphdrincl_swab_htosys
      Src: /src/frr/ospfd/ospf_packet.c:580,1
    - Dst: sendmsg
      Src: /src/frr/ospfd/ospf_packet.c:582,1
    - Dst: sockopt_iphdrincl_swab_systoh
      Src: /src/frr/ospfd/ospf_packet.c:584,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_packet.c:587,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_packet.c:591,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:593,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:594,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_packet.c:600,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:601,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:605,1
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_packet.c:605,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 8
    argNames:
    - fd
    - op
    - iph
    - msg
    - maxdatasize
    - mtu
    - flags
    - type
    argTypes:
    - int
    - struct ospf_packet*
    - struct ip*
    - struct msghdr*
    - unsigned int
    - unsigned int
    - int
    - uint8_t
    assertStmts:
    - condition: (op->length == stream_get_endp(op->s))
      pos:
        line_end: 547
        line_start: 547
        source_file: /src/frr/ospfd/ospf_packet.c
    - condition: (msg->msg_iovlen == 2)
      pos:
        line_end: 548
        line_start: 548
        source_file: /src/frr/ospfd/ospf_packet.c
    - condition: (iph->ip_len <= mtu)
      pos:
        line_end: 577
        line_start: 577
        source_file: /src/frr/ospfd/ospf_packet.c
    constantsTouched: []
    func_position:
      end: 608
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 608
    functionName: ospf_write_frags
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - stream_forward_getp
    - sockopt_iphdrincl_swab_htosys
    - stream_get_endp
    - flog_err
    - sockopt_iphdrincl_swab_systoh
    - safe_strerror
    - sendmsg
    - IS_DEBUG_OSPF_PACKET
    - zlog_debug
    - stream_pnt
    - stream_get_getp
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf_write_frags(int fd, struct ospf_packet *op, struct ip *iph,\n\t\t\t
      \    struct msghdr *msg, unsigned int maxdatasize,\n\t\t\t     unsigned int
      mtu, int flags, uint8_t type)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:613,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:640,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_packet.c:645,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:646,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_packet.c:647,1
    - Dst: time
      Src: /src/frr/ospfd/ospf_packet.c:652,1
    - Dst: IF_OSPF_IF_INFO
      Src: /src/frr/ospfd/ospf_packet.c:667,1
    - Dst: IF_OSPF_IF_INFO
      Src: /src/frr/ospfd/ospf_packet.c:668,1
    - Dst: ospf_fifo_head
      Src: /src/frr/ospfd/ospf_packet.c:671,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:672,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:673,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:675,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:676,1
    - Dst: ospf_if_ipmulticast
      Src: /src/frr/ospfd/ospf_packet.c:677,1
    - Dst: ospf_make_md5_digest
      Src: /src/frr/ospfd/ospf_packet.c:680,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_packet.c:683,1
    - Dst: stream_getc
      Src: /src/frr/ospfd/ospf_packet.c:684,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_packet.c:687,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:689,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:690,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_packet.c:697,1
    - Dst: IN_MULTICAST
      Src: /src/frr/ospfd/ospf_packet.c:701,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:701,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_packet.c:721,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:743,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:751,1
    - Dst: CMSG_LEN
      Src: /src/frr/ospfd/ospf_packet.c:758,1
    - Dst: CMSG_DATA
      Src: /src/frr/ospfd/ospf_packet.c:759,1
    - Dst: ospf_write_frags
      Src: /src/frr/ospfd/ospf_packet.c:772,1
    - Dst: sockopt_iphdrincl_swab_htosys
      Src: /src/frr/ospfd/ospf_packet.c:777,1
    - Dst: sendmsg
      Src: /src/frr/ospfd/ospf_packet.c:778,1
    - Dst: sockopt_iphdrincl_swab_systoh
      Src: /src/frr/ospfd/ospf_packet.c:779,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:781,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_packet.c:793,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_packet.c:798,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:801,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:802,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:803,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_packet.c:805,1
    - Dst: ospf_packet_dump
      Src: /src/frr/ospfd/ospf_packet.c:806,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:809,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:810,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:811,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:813,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:814,1
    - Dst: ospf_packet_delete
      Src: /src/frr/ospfd/ospf_packet.c:839,1
    - Dst: list_delete_node
      Src: /src/frr/ospfd/ospf_packet.c:843,1
    - Dst: ospf_fifo_head
      Src: /src/frr/ospfd/ospf_packet.c:844,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:848,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_packet.c:851,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_packet.c:852,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_packet.c:853,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_packet.c:858,1
    - Dst: event_add_write
      Src: /src/frr/ospfd/ospf_packet.c:859,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 120
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (node)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/frr/ospfd/ospf_packet.c
    - condition: (op)
      pos:
        line_end: 671
        line_start: 671
        source_file: /src/frr/ospfd/ospf_packet.c
    - condition: (op->length >= OSPF_HEADER_SIZE)
      pos:
        line_end: 672
        line_start: 672
        source_file: /src/frr/ospfd/ospf_packet.c
    constantsTouched: []
    func_position:
      end: 861
      start: 611
    functionDepth: 3
    functionLinenumber: 611
    functionLinenumberEnd: 861
    functionName: ospf_write
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - htons
    - listhead
    - listnode_add
    - flog_err
    - ospf_write_frags
    - htonl
    - stream_getc
    - ospf_if_ipmulticast
    - lookup_msg
    - IF_OSPF_IF_INFO
    - stream_set_getp
    - event_add_write
    - memset
    - sockopt_iphdrincl_swab_htosys
    - zlog_debug
    - sockopt_iphdrincl_swab_systoh
    - safe_strerror
    - IS_DEBUG_OSPF_PACKET
    - EVENT_ARG
    - listgetdata
    - CMSG_LEN
    - assert
    - list_delete_node
    - sendmsg
    - CMSG_DATA
    - IN_MULTICAST
    - stream_pnt
    - ospf_packet_dump
    - ospf_make_md5_digest
    - IF_NAME
    - ospf_fifo_head
    - list_isempty
    - ospf_packet_delete
    - time
    linkageType: ''
    returnType: void
    signature: void ospf_write(struct event *thread)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:875,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:878,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:879,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:880,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:882,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_packet.c:891,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:902,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:905,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:911,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:911,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:912,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:915,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:916,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:916,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:921,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:922,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:923,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:924,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:927,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:928,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:929,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:935,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:936,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_packet.c:937,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_packet.c:938,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:943,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:949,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:956,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:957,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:962,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:964,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:968,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:975,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:975,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:976,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:977,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:977,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:978,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:979,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:982,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:987,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:995,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:995,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:996,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:997,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:1000,1
    - Dst: ospf_nbr_get
      Src: /src/frr/ospfd/ospf_packet.c:1006,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:1009,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1014,1
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_packet.c:1022,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1023,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_packet.c:1023,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1024,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_packet.c:1024,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_packet.c:1025,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1035,1
    - Dst: ospf_nbr_bidirectional
      Src: /src/frr/ospfd/ospf_packet.c:1042,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1044,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_packet.c:1055,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1056,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_packet.c:1064,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1076,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1082,1
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1085,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1089,1
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1091,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1094,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1095,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1096,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1097,1
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1099,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1102,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1103,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1104,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1106,1
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1108,1
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1112,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1132,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_packet.c:1133,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 96
    argCount: 5
    argNames:
    - iph
    - ospfh
    - s
    - oi
    - size
    argTypes:
    - struct ip*
    - struct ospf_header*
    - struct stream*
    - struct ospf_interface*
    - int
    assertStmts:
    - condition: (nbr)
      pos:
        line_end: 1008
        line_start: 1008
        source_file: /src/frr/ospfd/ospf_packet.c
    constantsTouched: []
    func_position:
      end: 1134
      start: 864
    functionDepth: 2
    functionLinenumber: 864
    functionLinenumberEnd: 1134
    functionName: ospf_hello
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_options_dump
    - ntohs
    - IPV4_ADDR_SAME
    - BDR
    - lookup_msg
    - OSPF_ISM_EVENT_SCHEDULE
    - OSPF_GR_IS_ACTIVE_HELPER
    - flog_warn
    - ospf_vrf_id_to_name
    - PRIORITY
    - zlog_debug
    - IS_DEBUG_OSPF_PACKET
    - ospf_nbr_get
    - ntohl
    - OSPF_NSM_EVENT_SCHEDULE
    - assert
    - OPTIONS
    - DR
    - ospf_nbr_bidirectional
    - OSPF_NSM_TIMER_ON
    - ip_masklen
    - UNSET_FLAG
    - IPV4_ADDR_CMP
    - stream_pnt
    - IF_NAME
    - OSPF_IF_PARAM
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: "void ospf_hello(struct ip *iph, struct ospf_header *ospfh,\n\t\t       struct
      stream *s, struct ospf_interface *oi, int size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - nbr
    - dd
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_db_desc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1137
    functionDepth: 0
    functionLinenumber: 1137
    functionLinenumberEnd: 1143
    functionName: ospf_db_desc_save_current
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: void
    signature: "void ospf_db_desc_save_current(struct ospf_neighbor *nbr,\n\t\t\t\t
      \     struct ospf_db_desc *dd)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_packet.c:1153,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:1156,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_packet.c:1157,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1161,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1164,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1168,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1169,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1170,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1173,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1184,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1192,1
    - Dst: ospf_ls_request_new::ospf_ls_request_new
      Src: /src/frr/ospfd/ospf_packet.c:1202,1
    - Dst: ospf_lsa_lookup_by_header
      Src: /src/frr/ospfd/ospf_packet.c:1205,1
    - Dst: ospf_lsa_more_recent
      Src: /src/frr/ospfd/ospf_packet.c:1208,1
    - Dst: ospf_ls_request_add
      Src: /src/frr/ospfd/ospf_packet.c:1212,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_packet.c:1232,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1241,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1249,1
    - Dst: IS_SET_DD_M
      Src: /src/frr/ospfd/ospf_packet.c:1253,1
    - Dst: IS_SET_DD_M
      Src: /src/frr/ospfd/ospf_packet.c:1253,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1254,1
    - Dst: ospf_db_desc_send
      Src: /src/frr/ospfd/ospf_packet.c:1256,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:1260,1
    - Dst: ospf_db_desc_send
      Src: /src/frr/ospfd/ospf_packet.c:1270,1
    - Dst: IS_SET_DD_M
      Src: /src/frr/ospfd/ospf_packet.c:1273,1
    - Dst: IS_SET_DD_M
      Src: /src/frr/ospfd/ospf_packet.c:1273,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1274,1
    - Dst: ospf_db_desc_save_current
      Src: /src/frr/ospfd/ospf_packet.c:1278,1
    - Dst: ospf_ls_req_send
      Src: /src/frr/ospfd/ospf_packet.c:1281,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 5
    argNames:
    - s
    - oi
    - nbr
    - dd
    - size
    argTypes:
    - struct stream*
    - struct ospf_interface*
    - struct ospf_neighbor*
    - struct ospf_db_desc*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1146
    functionDepth: 5
    functionLinenumber: 1146
    functionLinenumberEnd: 1282
    functionName: ospf_db_desc_proc
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - IS_SET_DD_M
    - ospf_db_desc_save_current
    - flog_warn
    - stream_forward_getp
    - ospf_ls_request_add
    - IS_SET_DD_MS
    - CHECK_FLAG
    - ntohl
    - ospf_db_desc_send
    - ospf_lsdb_delete
    - zlog_debug
    - ospf_ls_req_send
    - ospf_lsa_more_recent
    - ospf_lsa_lookup_by_header
    - stream_pnt
    - ospf_ls_request_new::ospf_ls_request_new
    - IS_OPAQUE_LSA
    - OSPF_NSM_EVENT_SCHEDULE
    linkageType: ''
    returnType: void
    signature: "void ospf_db_desc_proc(struct stream *s, struct ospf_interface *oi,\n\t\t\t
      \     struct ospf_neighbor *nbr,\n\t\t\t      struct ospf_db_desc *dd, uint16_t
      size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:1290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - dd
    - nbr
    argTypes:
    - struct ospf_db_desc*
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1284
    functionDepth: 0
    functionLinenumber: 1284
    functionLinenumberEnd: 1294
    functionName: ospf_db_desc_is_dup
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: int
    signature: "int ospf_db_desc_is_dup(struct ospf_db_desc *dd,\n\t\t\t       struct
      ospf_neighbor *nbr)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:1307,1
    - Dst: ospf_nbr_lookup
      Src: /src/frr/ospfd/ospf_packet.c:1309,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1311,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:1317,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:1318,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1319,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:1322,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:1322,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1344,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1345,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1347,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1354,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1359,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1365,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1366,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1372,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1375,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1376,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_packet.c:1378,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:1379,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:1380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1387,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1388,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:1391,1
    - Dst: OSPF_NSM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospf_packet.c:1395,1
    - Dst: IS_SET_DD_ALL
      Src: /src/frr/ospfd/ospf_packet.c:1404,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1406,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1409,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1411,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:1415,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1418,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1423,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1425,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1432,1
    - Dst: IS_SET_DD_I
      Src: /src/frr/ospfd/ospf_packet.c:1432,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:1433,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:1434,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1436,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1440,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1442,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1451,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1453,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1456,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1460,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1461,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_packet.c:1461,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1463,1
    - Dst: OSPF_NSM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospf_packet.c:1472,1
    - Dst: ospf_db_desc_proc
      Src: /src/frr/ospfd/ospf_packet.c:1475,1
    - Dst: ospf_db_desc_is_dup
      Src: /src/frr/ospfd/ospf_packet.c:1478,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1479,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1481,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1488,1
    - Dst: ospf_db_desc_resend
      Src: /src/frr/ospfd/ospf_packet.c:1491,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1498,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1499,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1500,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1503,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1505,1
    - Dst: IS_SET_DD_I
      Src: /src/frr/ospfd/ospf_packet.c:1512,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1513,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1515,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1521,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1524,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1529,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:1530,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1531,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:1532,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1533,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1537,1
    - Dst: ospf_db_desc_proc
      Src: /src/frr/ospfd/ospf_packet.c:1542,1
    - Dst: ospf_db_desc_is_dup
      Src: /src/frr/ospfd/ospf_packet.c:1546,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_packet.c:1547,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:1549,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_packet.c:1554,1
    - Dst: ospf_db_desc_resend
      Src: /src/frr/ospfd/ospf_packet.c:1574,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1580,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1583,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 120
    argCount: 5
    argNames:
    - iph
    - ospfh
    - s
    - oi
    - size
    argTypes:
    - struct ip*
    - struct ospf_header*
    - struct stream*
    - struct ospf_interface*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1297
    functionDepth: 6
    functionLinenumber: 1297
    functionLinenumberEnd: 1588
    functionName: ospf_db_desc
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ntohs
    - IPV4_ADDR_SAME
    - lookup_msg
    - flog_warn
    - IS_SET_DD_ALL
    - zlog_debug
    - ntohl
    - ospf_get_name
    - OSPF_NSM_EVENT_SCHEDULE
    - zlog_info
    - DR
    - UNSET_FLAG
    - monotime_since
    - IPV4_ADDR_CMP
    - stream_pnt
    - IS_SET_DD_I
    - IF_NAME
    - OSPF_IF_PARAM
    - CHECK_FLAG
    - IS_SET_DD_MS
    - OSPF_NSM_EVENT_EXECUTE
    - SET_FLAG
    - ospf_db_desc_is_dup
    - ospf_nbr_lookup
    - ospf_db_desc_resend
    - ospf_db_desc_proc
    linkageType: ''
    returnType: void
    signature: "void ospf_db_desc(struct ip *iph, struct ospf_header *ospfh,\n\t\t\t
      struct stream *s, struct ospf_interface *oi,\n\t\t\t uint16_t size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_lookup
      Src: /src/frr/ospfd/ospf_packet.c:1608,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1610,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1619,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:1623,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_packet.c:1628,1
    - Dst: stream_getl
      Src: /src/frr/ospfd/ospf_packet.c:1633,1
    - Dst: stream_get_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:1634,1
    - Dst: stream_get_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:1635,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1639,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:1640,1
    - Dst: ospf_lsa_lookup
      Src: /src/frr/ospfd/ospf_packet.c:1645,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:1649,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:1650,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:1655,1
    - Dst: ospf_packet_max
      Src: /src/frr/ospfd/ospf_packet.c:1655,1
    - Dst: ospf_ls_upd_send
      Src: /src/frr/ospfd/ospf_packet.c:1657,1
    - Dst: ospf_ls_upd_send
      Src: /src/frr/ospfd/ospf_packet.c:1660,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_packet.c:1664,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:1670,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:1671,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:1676,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:1681,1
    - Dst: ospf_ls_upd_send
      Src: /src/frr/ospfd/ospf_packet.c:1683,1
    - Dst: ospf_ls_upd_send
      Src: /src/frr/ospfd/ospf_packet.c:1686,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:1689,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:1691,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 5
    argNames:
    - iph
    - ospfh
    - s
    - oi
    - size
    argTypes:
    - struct ip*
    - struct ospf_header*
    - struct stream*
    - struct ospf_interface*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1593
    functionDepth: 4
    functionLinenumber: 1593
    functionLinenumberEnd: 1692
    functionName: ospf_ls_req
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - list_delete
    - flog_warn
    - stream_get_ipv4
    - listcount
    - ospf_ls_upd_send
    - listnode_add
    - ospf_lsa_lookup
    - ntohs
    - stream_getl
    - list_new
    - list_delete_all_node
    - ospf_packet_max
    - ospf_nbr_lookup
    - lookup_msg
    - OSPF_NSM_EVENT_SCHEDULE
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_req(struct ip *iph, struct ospf_header *ospfh,\n\t\t\tstruct
      stream *s, struct ospf_interface *oi,\n\t\t\tuint16_t size)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_packet.c:1706,1
    - Dst: stream_getl
      Src: /src/frr/ospfd/ospf_packet.c:1708,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_packet.c:1712,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:1713,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:1714,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1717,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1724,1
    - Dst: ospf_lsa_checksum_valid
      Src: /src/frr/ospfd/ospf_packet.c:1731,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1738,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1749,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:1759,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_packet.c:1760,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1762,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1764,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1765,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:1767,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1774,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1787,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1793,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:1794,1
    - Dst: ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_packet.c:1802,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_packet.c:1821,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1824,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:1828,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 60
    argCount: 4
    argNames:
    - nbr
    - s
    - oi
    - size
    argTypes:
    - struct ospf_neighbor*
    - struct stream*
    - struct ospf_interface*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1696
    functionDepth: 3
    functionLinenumber: 1696
    functionLinenumberEnd: 1832
    functionName: ospf_ls_upd_list_lsa
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - stream_forward_getp
    - htons
    - CHECK_FLAG
    - listnode_add
    - ntohs
    - zlog_debug
    - stream_getl
    - list_new
    - ospf_lsa_checksum_valid
    - stream_pnt
    - IS_OPAQUE_LSA
    - memcpy
    - ospf_lsa_new_and_data
    linkageType: ''
    returnType: struct list
    signature: "struct list *ospf_ls_upd_list_lsa(struct ospf_neighbor *nbr,\n\t\t\t\t\t
      struct stream *s,\n\t\t\t\t\t struct ospf_interface *oi, size_t size)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_packet.c:1840,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_packet.c:1841,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:1843,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:1868,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_packet.c:1874,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1875,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:1878,1
    - Dst: ospf_ls_upd_list_lsa
      Src: /src/frr/ospfd/ospf_packet.c:1887,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1891,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1894,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_packet.c:1898,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_packet.c:1907,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1912,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_packet.c:1916,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1943,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1945,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1951,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1953,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1958,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_packet.c:1960,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_packet.c:1965,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1968,1
    - Dst: ospf_lsa_lookup_by_header
      Src: /src/frr/ospfd/ospf_packet.c:1973,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_packet.c:1982,1
    - Dst: ospf_check_nbr_status
      Src: /src/frr/ospfd/ospf_packet.c:1983,1
    - Dst: ospf_ls_ack_send
      Src: /src/frr/ospfd/ospf_packet.c:1985,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_packet.c:1988,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:1989,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_packet.c:1991,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1993,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_packet.c:1996,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:1997,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_packet.c:2007,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:2008,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_packet.c:2009,1
    - Dst: ospf_ls_ack_send
      Src: /src/frr/ospfd/ospf_packet.c:2010,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_packet.c:2011,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_packet.c:2013,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_packet.c:2014,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2038,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_packet.c:2040,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:2042,1
    - Dst: ospf_ls_ack_send
      Src: /src/frr/ospfd/ospf_packet.c:2044,1
    - Dst: ospf_opaque_self_originated_lsa_received
      Src: /src/frr/ospfd/ospf_packet.c:2047,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_packet.c:2070,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_packet.c:2075,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:2075,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:2077,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_packet.c:2081,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_packet.c:2083,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2084,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_packet.c:2089,1
    - Dst: ospf_lsa_more_recent
      Src: /src/frr/ospfd/ospf_packet.c:2108,1
    - Dst: IS_LSA_MAX_SEQ
      Src: /src/frr/ospfd/ospf_packet.c:2110,1
    - Dst: IS_LSA_MAX_SEQ
      Src: /src/frr/ospfd/ospf_packet.c:2111,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_packet.c:2111,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2112,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_packet.c:2114,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:2116,1
    - Dst: ospf_flood
      Src: /src/frr/ospfd/ospf_packet.c:2120,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:2122,1
    - Dst: ospf_ls_request_lookup
      Src: /src/frr/ospfd/ospf_packet.c:2141,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_packet.c:2142,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2143,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_packet.c:2146,1
    - Dst: ospf_upd_list_clean
      Src: /src/frr/ospfd/ospf_packet.c:2149,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_packet.c:2151,1
    - Dst: ospf_ls_retransmit_lookup
      Src: /src/frr/ospfd/ospf_packet.c:2172,1
    - Dst: ospf_ls_retransmit_delete
      Src: /src/frr/ospfd/ospf_packet.c:2175,1
    - Dst: NBR_IS_DR
      Src: /src/frr/ospfd/ospf_packet.c:2182,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:2183,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_packet.c:2185,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:2187,1
    - Dst: ospf_ls_ack_send
      Src: /src/frr/ospfd/ospf_packet.c:2194,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:2195,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_packet.c:2209,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:2211,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:2212,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_packet.c:2229,1
    - Dst: ospf_ls_upd_send_lsa
      Src: /src/frr/ospfd/ospf_packet.c:2232,1
    - Dst: DISCARD_LSA
      Src: /src/frr/ospfd/ospf_packet.c:2235,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 85
    argCount: 1
    argNames:
    - lsas
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2238
      start: 1835
    functionDepth: 4
    functionLinenumber: 1835
    functionLinenumberEnd: 2238
    functionName: ospf_upd_list_clean
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - list_delete
    - ospf_opaque_self_originated_lsa_received
    - ospf_ls_retransmit_delete
    - listnode_add
    - IPV4_ADDR_SAME
    - flog_err
    - ospf_ls_retransmit_lookup
    - htonl
    - lookup_msg
    - IS_DEBUG_OSPF
    - flog_warn
    - zlog_debug
    - dump_lsa_key
    - if
    - ospf_ls_request_lookup
    - IS_OPAQUE_LSA
    - ospf_lsa_more_recent
    - OSPF_NSM_EVENT_SCHEDULE
    - zlog_info
    - ospf_flood
    - ospf_lsa_discard
    - ospf_opaque_lsa_refresh_schedule
    - IS_LSA_MAX_SEQ
    - monotime_since
    - ospf_ls_upd_list_lsa
    - ospf_upd_list_clean
    - ospf_lsa_lookup_by_header
    - listnode_delete
    - ospf_check_nbr_status
    - ospf_ls_upd_send_lsa
    - IF_NAME
    - ospf_lsa_flush_area
    - ospf_ls_ack_send
    - IS_LSA_MAXAGE
    - NBR_IS_DR
    - ospf_lsa_lock
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - DISCARD_LSA
    linkageType: ''
    returnType: void
    signature: void ospf_upd_list_clean(struct list *lsas)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_lookup
      Src: /src/frr/ospfd/ospf_packet.c:2255,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2257,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_packet.c:2264,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2265,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2268,1
    - Dst: ospf_lsa_new
      Src: /src/frr/ospfd/ospf_packet.c:2276,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:2277,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_packet.c:2282,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_packet.c:2287,1
    - Dst: ospf_ls_retransmit_lookup
      Src: /src/frr/ospfd/ospf_packet.c:2291,1
    - Dst: ospf_lsa_more_recent
      Src: /src/frr/ospfd/ospf_packet.c:2293,1
    - Dst: ospf_ls_retransmit_delete
      Src: /src/frr/ospfd/ospf_packet.c:2294,1
    - Dst: ospf_check_and_gen_init_seq_lsa
      Src: /src/frr/ospfd/ospf_packet.c:2295,1
    - Dst: ospf_lsa_discard
      Src: /src/frr/ospfd/ospf_packet.c:2299,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 5
    argNames:
    - iph
    - ospfh
    - s
    - oi
    - size
    argTypes:
    - struct ip*
    - struct ospf_header*
    - struct stream*
    - struct ospf_interface*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2303
      start: 2246
    functionDepth: 4
    functionLinenumber: 2246
    functionLinenumberEnd: 2303
    functionName: ospf_ls_ack
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_lsa_new
    - stream_forward_getp
    - ospf_ls_retransmit_delete
    - ospf_lsa_discard
    - zlog_debug
    - ospf_check_and_gen_init_seq_lsa
    - ospf_ls_retransmit_lookup
    - ospf_nbr_lookup
    - stream_pnt
    - lookup_msg
    - ospf_lsa_more_recent
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_ack(struct ip *iph, struct ospf_header *ospfh,\n\t\t\tstruct
      stream *s, struct ospf_interface *oi,\n\t\t\tuint16_t size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/ospfd/ospf_packet.c:2315,1
    - Dst: SOPT_SIZE_CMSG_IFINDEX_IPV4
      Src: /src/frr/ospfd/ospf_packet.c:2315,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:2318,1
    - Dst: stream_recvmsg
      Src: /src/frr/ospfd/ospf_packet.c:2325,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2331,1
    - Dst: safe_strerror
      Src: /src/frr/ospfd/ospf_packet.c:2332,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2336,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_packet.c:2345,1
    - Dst: sockopt_iphdrincl_swab_systoh
      Src: /src/frr/ospfd/ospf_packet.c:2346,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:2374,1
    - Dst: getsockopt_ifindex
      Src: /src/frr/ospfd/ospf_packet.c:2377,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ospfd/ospf_packet.c:2379,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2382,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2389,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2390,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_packet.c:2391,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 4
    argNames:
    - ospf
    - fd
    - ifp
    - ibuf
    argTypes:
    - struct ospf*
    - int
    - struct interface**
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2305
    functionDepth: 1
    functionLinenumber: 2305
    functionLinenumberEnd: 2394
    functionName: ospf_recv_packet
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - SOPT_SIZE_CMSG_IFINDEX_IPV4
    - if_lookup_by_index
    - getsockopt_ifindex
    - flog_warn
    - memset
    - STREAM_DATA
    - ntohs
    - zlog_debug
    - safe_strerror
    - sockopt_iphdrincl_swab_systoh
    - IS_DEBUG_OSPF_PACKET
    - stream_recvmsg
    - CMSG_SPACE
    - ospf_get_name
    linkageType: ''
    returnType: struct stream
    signature: "struct stream *ospf_recv_packet(struct ospf *ospf, int fd,\n\t\t\t\t
      \      struct interface **ifp,\n\t\t\t\t       struct stream *ibuf)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IN_MULTICAST
      Src: /src/frr/ospfd/ospf_packet.c:2405,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:2405,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_packet.c:2406,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_packet.c:2414,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_packet.c:2418,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_packet.c:2420,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_packet.c:2421,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_packet.c:2424,1
    - Dst: OSPF_AREA_SAME
      Src: /src/frr/ospfd/ospf_packet.c:2424,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:2425,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2427,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2428,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:2429,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2431,1
    - Dst: struct ospf_vl_data*::vl_oi
      Src: /src/frr/ospfd/ospf_packet.c:2436,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2441,1
    - Dst: ospf_check_area_id
      Src: /src/frr/ospfd/ospf_packet.c:2446,1
    - Dst: OSPF_AREA_SAME
      Src: /src/frr/ospfd/ospf_packet.c:2450,1
    - Dst: ospf_check_network_mask
      Src: /src/frr/ospfd/ospf_packet.c:2459,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_packet.c:2473,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:2478,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 4
    argNames:
    - ospf
    - ifp
    - iph
    - ospfh
    argTypes:
    - struct ospf*
    - struct interface*
    - struct ip*
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2482
      start: 2396
    functionDepth: 11
    functionLinenumber: 2396
    functionLinenumberEnd: 2482
    functionName: ospf_associate_packet_vl
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_check_network_mask
    - ospf_area_lookup_by_area_id
    - ospf_check_area_id
    - masklen2ip
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - struct ospf_vl_data*::vl_oi
    - IPV4_ADDR_SAME
    - zlog_debug
    - ospf_if_lookup_by_local_addr
    - IN_MULTICAST
    - OSPF_AREA_SAME
    - if
    - ntohl
    - OSPF_IS_AREA_BACKBONE
    - IF_NAME
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *\nospf_associate_packet_vl(struct ospf *ospf,
      struct interface *ifp,\n\t\t\t struct ip *iph, struct ospf_header *ospfh)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:2491,1
    - Dst: ospf_auth_type
      Src: /src/frr/ospfd/ospf_packet.c:2495,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2496,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2497,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2500,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2501,1
    - Dst: ospf_check_sum
      Src: /src/frr/ospfd/ospf_packet.c:2508,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2509,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2510,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2513,1
    - Dst: ospf_auth_type
      Src: /src/frr/ospfd/ospf_packet.c:2522,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2523,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2524,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2527,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2528,1
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_packet.c:2533,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:2533,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2535,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2536,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2539,1
    - Dst: ospf_check_sum
      Src: /src/frr/ospfd/ospf_packet.c:2542,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2543,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2544,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2547,1
    - Dst: ospf_auth_type
      Src: /src/frr/ospfd/ospf_packet.c:2554,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2555,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2556,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2559,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2560,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2566,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2567,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2570,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_packet.c:2574,1
    - Dst: listtail
      Src: /src/frr/ospfd/ospf_packet.c:2575,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:2575,1
    - Dst: ospf_check_md5_digest
      Src: /src/frr/ospfd/ospf_packet.c:2581,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2582,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2583,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2586,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2591,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2592,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2595,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 2
    argNames:
    - oi
    - ospfh
    argTypes:
    - struct ospf_interface*
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2598
      start: 2487
    functionDepth: 2
    functionLinenumber: 2487
    functionLinenumberEnd: 2598
    functionName: ospf_check_auth
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_check_sum
    - flog_warn
    - listtail
    - OSPF_IF_PARAM
    - ospf_auth_type
    - memcmp
    - ntohs
    - IS_DEBUG_OSPF_PACKET
    - listgetdata
    - ospf_check_md5_digest
    - lookup_msg
    - IF_NAME
    linkageType: ''
    returnType: int
    signature: int ospf_check_auth(struct ospf_interface *oi, struct ospf_header *ospfh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:2606,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:2610,1
    - Dst: in_cksum
      Src: /src/frr/ospfd/ospf_packet.c:2613,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:2613,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:2616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ospfh
    argTypes:
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2622
      start: 2600
    functionDepth: 1
    functionLinenumber: 2600
    functionLinenumberEnd: 2622
    functionName: ospf_check_sum
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - in_cksum
    - ntohs
    - zlog_info
    - memset
    linkageType: ''
    returnType: int
    signature: int ospf_check_sum(struct ospf_header *ospfh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2636,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2637,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2646,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2647,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - link
    - linkbytes
    - num_links
    argTypes:
    - struct router_lsa_link*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2652
      start: 2626
    functionDepth: 1
    functionLinenumber: 2626
    functionLinenumberEnd: 2652
    functionName: ospf_router_lsa_links_examin
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - IS_DEBUG_OSPF_PACKET
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf_router_lsa_links_examin(struct router_lsa_link *link,\n\t\t\t\t\t
      \    uint16_t linkbytes,\n\t\t\t\t\t     const uint16_t num_links)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2663,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2664,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2665,1
    - Dst: ospf_router_lsa_links_examin
      Src: /src/frr/ospfd/ospf_packet.c:2690,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:2693,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2730,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2731,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2735,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2736,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2737,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 3
    argNames:
    - lsah
    - lsalen
    - headeronly
    argTypes:
    - struct lsa_header*
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2739
      start: 2656
    functionDepth: 2
    functionLinenumber: 2656
    functionLinenumberEnd: 2739
    functionName: ospf_lsa_examin
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_router_lsa_links_examin
    - ntohs
    - zlog_debug
    - IS_DEBUG_OSPF_PACKET
    - lookup_msg
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf_lsa_examin(struct lsa_header *lsah, const uint16_t lsalen,\n\t\t\t\tconst
      uint8_t headeronly)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2757,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2758,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:2764,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2766,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2767,1
    - Dst: ospf_lsa_examin
      Src: /src/frr/ospfd/ospf_packet.c:2774,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2775,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2776,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2788,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2789,1
    - Dst: ospf_lsa_examin
      Src: /src/frr/ospfd/ospf_packet.c:2795,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2796,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2797,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2808,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2809,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 4
    argNames:
    - lsah
    - length
    - headeronly
    - declared_num_lsas
    argTypes:
    - struct lsa_header*
    - size_t
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2744
    functionDepth: 3
    functionLinenumber: 2744
    functionLinenumberEnd: 2815
    functionName: ospf_lsaseq_examin
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ntohs
    - ospf_lsa_examin
    - zlog_debug
    - IS_DEBUG_OSPF_PACKET
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf_lsaseq_examin(struct lsa_header *lsah, /* start of buffered
      data */\n\t\t   size_t length, const uint8_t headeronly,\n\t\t   /* When declared_num_lsas
      is not 0, compare it to the real\n\t\t      number of LSAs\n\t\t      and treat
      the difference as an error. */\n\t\t   const uint32_t declared_num_lsas)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2827,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2828,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2838,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2839,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:2843,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:2844,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2848,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2849,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2857,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2858,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2869,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2870,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2872,1
    - Dst: ospf_lsaseq_examin
      Src: /src/frr/ospfd/ospf_packet.c:2890,1
    - Dst: ospf_lsaseq_examin
      Src: /src/frr/ospfd/ospf_packet.c:2912,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_packet.c:2917,1
    - Dst: ospf_lsaseq_examin
      Src: /src/frr/ospfd/ospf_packet.c:2923,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2931,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2932,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:2936,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:2937,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:2938,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 2
    argNames:
    - oh
    - bytesonwire
    argTypes:
    - struct ospf_header*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2818
    functionDepth: 4
    functionLinenumber: 2818
    functionLinenumberEnd: 2940
    functionName: ospf_packet_examin
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_lsaseq_examin
    - ntohl
    - ntohs
    - zlog_debug
    - IS_DEBUG_OSPF_PACKET
    - lookup_msg
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf_packet_examin(struct ospf_header *oh,\n\t\t\t\t   const
      unsigned bytesonwire)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_check_area_id
      Src: /src/frr/ospfd/ospf_packet.c:2947,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2948,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2950,1
    - Dst: ospf_check_network_mask
      Src: /src/frr/ospfd/ospf_packet.c:2955,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:2956,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:2959,1
    - Dst: ospf_check_auth
      Src: /src/frr/ospfd/ospf_packet.c:2965,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ibuf
    - oi
    - iph
    - ospfh
    argTypes:
    - struct stream*
    - struct ospf_interface*
    - struct ip*
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2969
      start: 2943
    functionDepth: 3
    functionLinenumber: 2943
    functionLinenumberEnd: 2969
    functionName: ospf_verify_header
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_check_network_mask
    - ospf_check_area_id
    - flog_warn
    - ospf_check_auth
    - IF_NAME
    linkageType: ''
    returnType: int
    signature: "int ospf_verify_header(struct stream *ibuf, struct ospf_interface
      *oi,\n\t\t\t      struct ip *iph, struct ospf_header *ospfh)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/ospfd/ospf_packet.c:2983,1
    - Dst: ospf_recv_packet
      Src: /src/frr/ospfd/ospf_packet.c:2984,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_packet.c:2998,1
    - Dst: if_lookup_address
      Src: /src/frr/ospfd/ospf_packet.c:3010,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:3015,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3016,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_packet.c:3019,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_packet.c:3035,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:3036,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3037,1
    - Dst: STREAM_READABLE
      Src: /src/frr/ospfd/ospf_packet.c:3045,1
    - Dst: STREAM_READABLE
      Src: /src/frr/ospfd/ospf_packet.c:3046,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:3047,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:3051,1
    - Dst: STREAM_READABLE
      Src: /src/frr/ospfd/ospf_packet.c:3055,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_packet.c:3060,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_packet.c:3062,1
    - Dst: ospf_packet_examin
      Src: /src/frr/ospfd/ospf_packet.c:3064,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:3064,1
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_packet.c:3065,1
    - Dst: ospf_if_lookup_recv_if
      Src: /src/frr/ospfd/ospf_packet.c:3070,1
    - Dst: OSPF_IF_PASSIVE_STATUS
      Src: /src/frr/ospfd/ospf_packet.c:3081,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3083,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:3088,1
    - Dst: OI_MEMBER_JOINED
      Src: /src/frr/ospfd/ospf_packet.c:3093,1
    - Dst: ospf_if_set_multicast
      Src: /src/frr/ospfd/ospf_packet.c:3094,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_packet.c:3105,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_packet.c:3106,1
    - Dst: ospf_associate_packet_vl
      Src: /src/frr/ospfd/ospf_packet.c:3107,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3110,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:3123,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:3128,1
    - Dst: if_flag_dump
      Src: /src/frr/ospfd/ospf_packet.c:3132,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:3134,1
    - Dst: OI_MEMBER_JOINED
      Src: /src/frr/ospfd/ospf_packet.c:3135,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:3136,1
    - Dst: OI_MEMBER_JOINED
      Src: /src/frr/ospfd/ospf_packet.c:3137,1
    - Dst: ospf_if_set_multicast
      Src: /src/frr/ospfd/ospf_packet.c:3139,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:3150,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:3152,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:3155,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:3156,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3158,1
    - Dst: ospf_if_set_multicast
      Src: /src/frr/ospfd/ospf_packet.c:3159,1
    - Dst: ospf_verify_header
      Src: /src/frr/ospfd/ospf_packet.c:3164,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:3166,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3167,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:3174,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:3175,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3176,1
    - Dst: ospf_packet_dump
      Src: /src/frr/ospfd/ospf_packet.c:3178,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3181,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_packet.c:3182,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:3183,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3184,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3185,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:3187,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3188,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_packet.c:3192,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:3195,1
    - Dst: ospf_nbr_get
      Src: /src/frr/ospfd/ospf_packet.c:3207,1
    - Dst: ospf_hello
      Src: /src/frr/ospfd/ospf_packet.c:3215,1
    - Dst: ospf_db_desc
      Src: /src/frr/ospfd/ospf_packet.c:3218,1
    - Dst: ospf_ls_req
      Src: /src/frr/ospfd/ospf_packet.c:3221,1
    - Dst: ospf_ls_upd
      Src: /src/frr/ospfd/ospf_packet.c:3224,1
    - Dst: ospf_ls_ack
      Src: /src/frr/ospfd/ospf_packet.c:3227,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:3230,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:3233,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_packet.c:3233,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 121
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3238
      start: 2971
    functionDepth: 12
    functionLinenumber: 2971
    functionLinenumberEnd: 3238
    functionName: ospf_read_helper
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - ospf_packet_examin
    - ntohs
    - htonl
    - stream_reset
    - OI_MEMBER_JOINED
    - OSPF_IF_PASSIVE_STATUS
    - lookup_msg
    - flog_warn
    - zlog_debug
    - IS_DEBUG_OSPF_PACKET
    - ospf_nbr_get
    - ospf_ls_ack
    - if_flag_dump
    - ospf_get_name
    - stream_get_getp
    - OSPF_IS_AREA_ID_BACKBONE
    - ospf_recv_packet
    - if_lookup_address
    - STREAM_READABLE
    - stream_forward_getp
    - ospf_ls_req
    - ospf_if_lookup_recv_if
    - ospf_if_lookup_by_local_addr
    - stream_pnt
    - IF_NAME
    - ospf_packet_dump
    - ospf_associate_packet_vl
    - ospf_db_desc
    - STREAM_DATA
    - ospf_hello
    - ospf_ls_upd
    - stream_get_endp
    - SET_FLAG
    - ospf_if_set_multicast
    - ospf_verify_header
    linkageType: ''
    returnType: enum ospf_read_return_enum
    signature: enum ospf_read_return_enum ospf_read_helper(struct ospf *ospf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:3248,1
    - Dst: event_add_read
      Src: /src/frr/ospfd/ospf_packet.c:3251,1
    - Dst: ospf_read_helper
      Src: /src/frr/ospfd/ospf_packet.c:3255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3263
      start: 3241
    functionDepth: 13
    functionLinenumber: 3241
    functionLinenumberEnd: 3263
    functionName: ospf_read
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - ospf_read_helper
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_read(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_packet.c:3271,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_packet.c:3280,1
    - Dst: ospf_auth_type
      Src: /src/frr/ospfd/ospf_packet.c:3280,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:3282,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospfd/ospf_packet.c:3284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - type
    - oi
    - s
    argTypes:
    - int
    - struct ospf_interface*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3285
      start: 3266
    functionDepth: 2
    functionLinenumber: 3266
    functionLinenumberEnd: 3285
    functionName: ospf_make_header
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - stream_forward_endp
    - STREAM_DATA
    - ospf_auth_type
    linkageType: ''
    returnType: void
    signature: "void ospf_make_header(int type, struct ospf_interface *oi,\n\t\t\t
      \    struct stream *s)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_auth_type
      Src: /src/frr/ospfd/ospf_packet.c:3292,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_packet.c:3298,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:3298,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_packet.c:3303,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:3303,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_packet.c:3308,1
    - Dst: listtail
      Src: /src/frr/ospfd/ospf_packet.c:3309,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:3309,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - oi
    - ospfh
    argTypes:
    - struct ospf_interface*
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3323
      start: 3288
    functionDepth: 2
    functionLinenumber: 3288
    functionLinenumberEnd: 3323
    functionName: ospf_make_auth
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - listtail
    - OSPF_IF_PARAM
    - list_isempty
    - ospf_auth_type
    - listgetdata
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ospf_make_auth(struct ospf_interface *oi, struct ospf_header *ospfh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_packet.c:3331,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_packet.c:3334,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:3337,1
    - Dst: in_cksum
      Src: /src/frr/ospfd/ospf_packet.c:3338,1
    - Dst: ospf_make_auth
      Src: /src/frr/ospfd/ospf_packet.c:3343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - oi
    - s
    - length
    argTypes:
    - struct ospf_interface*
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3344
      start: 3326
    functionDepth: 3
    functionLinenumber: 3326
    functionLinenumberEnd: 3344
    functionName: ospf_fill_header
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - htons
    - in_cksum
    - STREAM_DATA
    - ospf_make_auth
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void ospf_fill_header(struct ospf_interface *oi, struct stream *s,\n\t\t\t
      \    uint16_t length)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3356,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_packet.c:3359,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_packet.c:3361,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:3362,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:3365,1
    - Dst: stream_putw
      Src: /src/frr/ospfd/ospf_packet.c:3366,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:3366,1
    - Dst: stream_putw
      Src: /src/frr/ospfd/ospf_packet.c:3368,1
    - Dst: OSPF_FR_CONFIG
      Src: /src/frr/ospfd/ospf_packet.c:3373,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3374,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:3374,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3375,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:3375,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3376,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:3376,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3379,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:3379,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:3380,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_packet.c:3383,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:3383,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_packet.c:3386,1
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_packet.c:3386,1
    - Dst: stream_putl
      Src: /src/frr/ospfd/ospf_packet.c:3389,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:3389,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:3392,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_packet.c:3392,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:3394,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:3397,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_packet.c:3397,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:3400,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:3400,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:3418,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:3422,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:3423,1
    - Dst: ospf_packet_max
      Src: /src/frr/ospfd/ospf_packet.c:3428,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_packet.c:3429,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:3435,1
    - Dst: stream_putl_at
      Src: /src/frr/ospfd/ospf_packet.c:3441,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 44
    argCount: 2
    argNames:
    - oi
    - s
    argTypes:
    - struct ospf_interface*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3444
      start: 3346
    functionDepth: 4
    functionLinenumber: 3346
    functionLinenumberEnd: 3444
    functionName: ospf_make_hello
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - route_top
    - IPV4_ADDR_SAME
    - flog_err
    - BDR
    - stream_put_ipv4
    - stream_putl_at
    - stream_putc
    - memset
    - masklen2ip
    - PRIORITY
    - zlog_debug
    - OPTIONS
    - DR
    - route_next
    - UNSET_FLAG
    - IF_NAME
    - OSPF_IF_PARAM
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - SET_FLAG
    - OSPF_FR_CONFIG
    - ospf_packet_max
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int ospf_make_hello(struct ospf_interface *oi, struct stream *s)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/ospfd/ospf_packet.c:3458,1
    - Dst: stream_putw
      Src: /src/frr/ospfd/ospf_packet.c:3460,1
    - Dst: OPTIONS
      Src: /src/frr/ospfd/ospf_packet.c:3463,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3464,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3465,1
    - Dst: OSPF_FR_CONFIG
      Src: /src/frr/ospfd/ospf_packet.c:3466,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3467,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_packet.c:3468,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:3471,1
    - Dst: stream_putc
      Src: /src/frr/ospfd/ospf_packet.c:3472,1
    - Dst: stream_putl
      Src: /src/frr/ospfd/ospf_packet.c:3475,1
    - Dst: ospf_db_summary_isempty
      Src: /src/frr/ospfd/ospf_packet.c:3478,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:3488,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:3488,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_packet.c:3490,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3491,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_packet.c:3495,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3499,1
    - Dst: ospf_packet_max
      Src: /src/frr/ospfd/ospf_packet.c:3505,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_packet.c:3510,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:3511,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_packet.c:3515,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_packet.c:3520,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_packet.c:3521,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_packet.c:3525,1
    - Dst: ospf_db_summary_isempty
      Src: /src/frr/ospfd/ospf_packet.c:3530,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3533,1
    - Dst: stream_putc_at
      Src: /src/frr/ospfd/ospf_packet.c:3535,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:3537,1
    - Dst: IS_SET_DD_M
      Src: /src/frr/ospfd/ospf_packet.c:3537,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 3
    argNames:
    - oi
    - nbr
    - s
    argTypes:
    - struct ospf_interface*
    - struct ospf_neighbor*
    - struct stream*
    assertStmts:
    - condition: (IS_SET_DD_M(nbr->dd_flags))
      pos:
        line_end: 3536
        line_start: 3536
        source_file: /src/frr/ospfd/ospf_packet.c
    constantsTouched: []
    func_position:
      end: 3541
      start: 3446
    functionDepth: 5
    functionLinenumber: 3446
    functionLinenumberEnd: 3541
    functionName: ospf_make_db_desc
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - stream_put
    - htons
    - route_top
    - LS_AGE
    - IS_SET_DD_M
    - stream_putc
    - stream_putc_at
    - IS_OPAQUE_LSA
    - assert
    - OPTIONS
    - route_next
    - UNSET_FLAG
    - ospf_db_summary_isempty
    - ospf_lsdb_delete
    - CHECK_FLAG
    - STREAM_DATA
    - stream_putw
    - stream_get_endp
    - SET_FLAG
    - OSPF_FR_CONFIG
    - ospf_packet_max
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int ospf_make_db_desc(struct ospf_interface *oi,\n\t\t\t     struct
      ospf_neighbor *nbr, struct stream *s)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_packet_max
      Src: /src/frr/ospfd/ospf_packet.c:3559,1
    - Dst: stream_putl
      Src: /src/frr/ospfd/ospf_packet.c:3562,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:3563,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospfd/ospf_packet.c:3564,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_packet.c:3566,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_packet.c:3567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - s
    - length
    - delta
    - nbr
    - lsa
    argTypes:
    - struct stream*
    - uint16_t*
    - unsigned long
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3571
      start: 3543
    functionDepth: 4
    functionLinenumber: 3543
    functionLinenumberEnd: 3571
    functionName: ospf_make_ls_req_func
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_lock
    - ospf_lsa_unlock
    - stream_put_ipv4
    - ospf_packet_max
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int ospf_make_ls_req_func(struct stream *s, uint16_t *length,\n\t\t\t\t
      unsigned long delta, struct ospf_neighbor *nbr,\n\t\t\t\t struct ospf_lsa *lsa)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:3587,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:3587,1
    - Dst: ospf_make_ls_req_func
      Src: /src/frr/ospfd/ospf_packet.c:3589,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_packet.c:3592,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - nbr
    - s
    argTypes:
    - struct ospf_neighbor*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3597
      start: 3573
    functionDepth: 5
    functionLinenumber: 3573
    functionLinenumberEnd: 3597
    functionName: ospf_make_ls_req
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_top
    - ospf_make_ls_req_func
    - route_next
    linkageType: ''
    returnType: int
    signature: int ospf_make_ls_req(struct ospf_neighbor *nbr, struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_packet.c:3603,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_packet.c:3603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lsa
    - delay
    argTypes:
    - struct ospf_lsa*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3606
      start: 3599
    functionDepth: 1
    functionLinenumber: 3599
    functionLinenumberEnd: 3606
    functionName: ls_age_increment
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - LS_AGE
    - IS_LSA_MAXAGE
    linkageType: ''
    returnType: int
    signature: int ls_age_increment(struct ospf_lsa *lsa, int delay)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:3615,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3620,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:3622,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospfd/ospf_packet.c:3623,1
    - Dst: stream_get_size
      Src: /src/frr/ospfd/ospf_packet.c:3627,1
    - Dst: ospf_packet_authspace
      Src: /src/frr/ospfd/ospf_packet.c:3627,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_packet.c:3629,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_packet.c:3633,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:3634,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3637,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_packet.c:3638,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:3641,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_packet.c:3646,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_packet.c:3647,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_packet.c:3650,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:3650,1
    - Dst: ls_age_increment
      Src: /src/frr/ospfd/ospf_packet.c:3655,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_packet.c:3656,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_packet.c:3657,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:3659,1
    - Dst: list_delete_node
      Src: /src/frr/ospfd/ospf_packet.c:3662,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_packet.c:3663,1
    - Dst: stream_putl_at
      Src: /src/frr/ospfd/ospf_packet.c:3667,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3670,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - oi
    - update
    - s
    argTypes:
    - struct ospf_interface*
    - struct list*
    - struct stream*
    assertStmts:
    - condition: (lsa->data)
      pos:
        line_end: 3633
        line_start: 3633
        source_file: /src/frr/ospfd/ospf_packet.c
    constantsTouched: []
    func_position:
      end: 3672
      start: 3608
    functionDepth: 3
    functionLinenumber: 3608
    functionLinenumberEnd: 3672
    functionName: ospf_make_ls_upd
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - stream_put
    - htons
    - stream_forward_endp
    - OSPF_IF_PARAM
    - STREAM_DATA
    - listhead
    - stream_get_endp
    - ls_age_increment
    - ntohs
    - list_delete_node
    - zlog_debug
    - ospf_lsa_unlock
    - dump_lsa_key
    - stream_get_size
    - stream_putl_at
    - listgetdata
    - ospf_packet_authspace
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_make_ls_upd(struct ospf_interface *oi, struct list *update,\n\t\t\t
      \   struct stream *s)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_packet.c:3682,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:3683,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_packet.c:3693,1
    - Dst: ospf_packet_max
      Src: /src/frr/ospfd/ospf_packet.c:3693,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_packet.c:3696,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_packet.c:3699,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_packet.c:3700,1
    - Dst: ospf_hello_send_sub
      Src: /src/frr/ospfd/ospf_packet.c:3706,1
    - Dst: ospf_packet_new
      Src: /src/frr/ospfd/ospf_packet.c:3711,1
    - Dst: ospf_make_header
      Src: /src/frr/ospfd/ospf_packet.c:3714,1
    - Dst: ospf_make_hello
      Src: /src/frr/ospfd/ospf_packet.c:3717,1
    - Dst: ospf_packet_free
      Src: /src/frr/ospfd/ospf_packet.c:3720,1
    - Dst: ospf_fill_header
      Src: /src/frr/ospfd/ospf_packet.c:3725,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3734,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_packet.c:3737,1
    - Dst: ospf_packet_add_top
      Src: /src/frr/ospfd/ospf_packet.c:3743,1
    - Dst: OSPF_ISM_WRITE_ON
      Src: /src/frr/ospfd/ospf_packet.c:3746,1
    - Dst: ospf_poll_send
      Src: /src/frr/ospfd/ospf_packet.c:3749,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:3754,1
    - Dst: OSPF_IF_PASSIVE_STATUS
      Src: /src/frr/ospfd/ospf_packet.c:3757,1
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_packet.c:3766,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 3
    argNames:
    - oi
    - ack
    - s
    argTypes:
    - struct ospf_interface*
    - struct list*
    - struct stream*
    assertStmts:
    - condition: (lsa)
      pos:
        line_end: 3682
        line_start: 3682
        source_file: /src/frr/ospfd/ospf_packet.c
    - condition: (oi)
      pos:
        line_end: 3753
        line_start: 3753
        source_file: /src/frr/ospfd/ospf_packet.c
    constantsTouched: []
    func_position:
      end: 3774
      start: 3674
    functionDepth: 5
    functionLinenumber: 3674
    functionLinenumberEnd: 3774
    functionName: ospf_make_ls_ack
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - stream_put
    - ospf_make_hello
    - OSPF_IF_PASSIVE_STATUS
    - ospf_vrf_id_to_name
    - ospf_make_header
    - PRIORITY
    - ospf_fill_header
    - zlog_debug
    - if
    - assert
    - OSPF_ISM_WRITE_ON
    - ospf_packet_new
    - listnode_delete
    - ospf_packet_free
    - ospf_lsa_unlock
    - ospf_packet_add_top
    - ospf_packet_max
    - ospf_poll_send
    - ospf_hello_send_sub
    linkageType: ''
    returnType: int
    signature: "int ospf_make_ls_ack(struct ospf_interface *oi, struct list *ack,\n\t\t\t
      \   struct stream *s)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:3780,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_packet.c:3783,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3784,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:3785,1
    - Dst: ospf_poll_send
      Src: /src/frr/ospfd/ospf_packet.c:3787,1
    - Dst: OSPF_POLL_TIMER_ON
      Src: /src/frr/ospfd/ospf_packet.c:3790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3792
      start: 3776
    functionDepth: 1
    functionLinenumber: 3776
    functionLinenumberEnd: 3792
    functionName: ospf_poll_timer
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - OSPF_POLL_TIMER_ON
    - zlog_debug
    - EVENT_ARG
    - ospf_poll_send
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_poll_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:3799,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_packet.c:3802,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:3803,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:3804,1
    - Dst: ospf_hello_send_sub
      Src: /src/frr/ospfd/ospf_packet.c:3806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3807
      start: 3795
    functionDepth: 1
    functionLinenumber: 3795
    functionLinenumberEnd: 3807
    functionName: ospf_hello_reply_timer
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - EVENT_ARG
    - ospf_hello_send_sub
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_hello_reply_timer(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: OSPF_IF_PASSIVE_STATUS
      Src: /src/frr/ospfd/ospf_packet.c:3813,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:3820,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:3820,1
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_packet.c:3838,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:3839,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_packet.c:3839,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_packet.c:3840,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_packet.c:3840,1
    - Dst: ospf_hello_send_sub
      Src: /src/frr/ospfd/ospf_packet.c:3856,1
    - Dst: ospf_hello_send_sub
      Src: /src/frr/ospfd/ospf_packet.c:3861,1
    - Dst: ospf_hello_send_sub
      Src: /src/frr/ospfd/ospf_packet.c:3863,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:3863,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 23
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3865
      start: 3810
    functionDepth: 1
    functionLinenumber: 3810
    functionLinenumberEnd: 3865
    functionName: ospf_hello_send
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - DR
    - ospf_hello_send_sub
    - PRIORITY
    - route_top
    - route_next
    - BDR
    - htonl
    - IPV4_ADDR_CMP
    - OSPF_IF_PASSIVE_STATUS
    linkageType: ''
    returnType: void
    signature: void ospf_hello_send(struct ospf_interface *oi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_packet_new
      Src: /src/frr/ospfd/ospf_packet.c:3875,1
    - Dst: ospf_make_header
      Src: /src/frr/ospfd/ospf_packet.c:3878,1
    - Dst: ospf_make_db_desc
      Src: /src/frr/ospfd/ospf_packet.c:3881,1
    - Dst: ospf_fill_header
      Src: /src/frr/ospfd/ospf_packet.c:3884,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:3891,1
    - Dst: ospf_packet_add
      Src: /src/frr/ospfd/ospf_packet.c:3896,1
    - Dst: OSPF_ISM_WRITE_ON
      Src: /src/frr/ospfd/ospf_packet.c:3899,1
    - Dst: ospf_packet_free
      Src: /src/frr/ospfd/ospf_packet.c:3904,1
    - Dst: ospf_packet_dup
      Src: /src/frr/ospfd/ospf_packet.c:3905,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_packet.c:3906,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3907,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:3908,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_packet.c:3910,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3912
      start: 3868
    functionDepth: 6
    functionLinenumber: 3868
    functionLinenumberEnd: 3912
    functionName: ospf_db_desc_send
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - zlog_info
    - ospf_make_db_desc
    - htonl
    - OSPF_ISM_WRITE_ON
    - ospf_make_header
    - CHECK_FLAG
    - ospf_fill_header
    - monotime
    - ospf_packet_add
    - ospf_packet_free
    - ospf_packet_dup
    - ospf_packet_new
    - ospf_get_name
    linkageType: ''
    returnType: void
    signature: void ospf_db_desc_send(struct ospf_neighbor *nbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_packet_add
      Src: /src/frr/ospfd/ospf_packet.c:3922,1
    - Dst: ospf_packet_dup
      Src: /src/frr/ospfd/ospf_packet.c:3922,1
    - Dst: OSPF_ISM_WRITE_ON
      Src: /src/frr/ospfd/ospf_packet.c:3925,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_packet.c:3926,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_packet.c:3927,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_packet.c:3929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3931
      start: 3915
    functionDepth: 3
    functionLinenumber: 3915
    functionLinenumberEnd: 3931
    functionName: ospf_db_desc_resend
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - zlog_info
    - OSPF_ISM_WRITE_ON
    - CHECK_FLAG
    - ospf_packet_add
    - ospf_packet_dup
    - ospf_get_name
    linkageType: ''
    returnType: void
    signature: void ospf_db_desc_resend(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_packet_new
      Src: /src/frr/ospfd/ospf_packet.c:3941,1
    - Dst: ospf_make_header
      Src: /src/frr/ospfd/ospf_packet.c:3944,1
    - Dst: ospf_make_ls_req
      Src: /src/frr/ospfd/ospf_packet.c:3947,1
    - Dst: ospf_packet_free
      Src: /src/frr/ospfd/ospf_packet.c:3949,1
    - Dst: ospf_fill_header
      Src: /src/frr/ospfd/ospf_packet.c:3954,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:3961,1
    - Dst: ospf_packet_add
      Src: /src/frr/ospfd/ospf_packet.c:3966,1
    - Dst: OSPF_ISM_WRITE_ON
      Src: /src/frr/ospfd/ospf_packet.c:3969,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_packet.c:3972,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3973
      start: 3934
    functionDepth: 6
    functionLinenumber: 3934
    functionLinenumberEnd: 3973
    functionName: ospf_ls_req_send
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 2
    functionsReached:
    - htonl
    - OSPF_ISM_WRITE_ON
    - ospf_make_header
    - ospf_fill_header
    - OSPF_NSM_TIMER_ON
    - ospf_packet_free
    - ospf_packet_add
    - ospf_make_ls_req
    - ospf_packet_new
    linkageType: ''
    returnType: void
    signature: void ospf_ls_req_send(struct ospf_neighbor *nbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_packet.c:3981,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:3983,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_packet.c:3987,1
    - Dst: ospf_ls_upd_send
      Src: /src/frr/ospfd/ospf_packet.c:3988,1
    - Dst: ospf_ls_upd_send
      Src: /src/frr/ospfd/ospf_packet.c:3990,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:3992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - nbr
    - lsa
    - flag
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3993
      start: 3976
    functionDepth: 1
    functionLinenumber: 3976
    functionLinenumberEnd: 3993
    functionName: ospf_ls_upd_send_lsa
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - list_delete
    - IS_LSA_MAXAGE
    - ospf_ls_upd_send
    - listnode_add
    - list_new
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_upd_send_lsa(struct ospf_neighbor *nbr, struct ospf_lsa
      *lsa,\n\t\t\t  int flag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_packet.c:4010,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_packet.c:4010,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_packet.c:4011,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:4013,1
    - Dst: ospf_packet_max
      Src: /src/frr/ospfd/ospf_packet.c:4014,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:4016,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_packet.c:4023,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:4024,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:4027,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:4035,1
    - Dst: ospf_packet_max
      Src: /src/frr/ospfd/ospf_packet.c:4036,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:4042,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_packet.c:4045,1
    - Dst: list_delete_node
      Src: /src/frr/ospfd/ospf_packet.c:4047,1
    - Dst: ospf_packet_new
      Src: /src/frr/ospfd/ospf_packet.c:4066,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - update
    - oi
    argTypes:
    - struct list*
    - struct ospf_interface*
    assertStmts:
    - condition: (lsa->data)
      pos:
        line_end: 4010
        line_start: 4010
        source_file: /src/frr/ospfd/ospf_packet.c
    constantsTouched: []
    func_position:
      end: 4067
      start: 4002
    functionDepth: 4
    functionLinenumber: 4002
    functionLinenumberEnd: 4067
    functionName: ospf_ls_upd_packet_new
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_packet_new
    - flog_warn
    - listhead
    - ntohs
    - list_delete_node
    - zlog_debug
    - IS_DEBUG_OSPF_PACKET
    - ospf_packet_max
    - listgetdata
    - assert
    linkageType: ''
    returnType: struct ospf_packet
    signature: "struct ospf_packet *ospf_ls_upd_packet_new(struct list *update,\n\t\t\t\t\t\t
      \ struct ospf_interface *oi)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:4076,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:4076,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_packet.c:4077,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:4080,1
    - Dst: ospf_ls_upd_packet_new
      Src: /src/frr/ospfd/ospf_packet.c:4083,1
    - Dst: ospf_make_header
      Src: /src/frr/ospfd/ospf_packet.c:4086,1
    - Dst: ospf_make_ls_upd
      Src: /src/frr/ospfd/ospf_packet.c:4091,1
    - Dst: ospf_fill_header
      Src: /src/frr/ospfd/ospf_packet.c:4094,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4101,1
    - Dst: ospf_packet_add
      Src: /src/frr/ospfd/ospf_packet.c:4106,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:4113,1
    - Dst: ospf_write
      Src: /src/frr/ospfd/ospf_packet.c:4116,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_packet.c:4132,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_packet.c:4133,1
    - Dst: OSPF_ISM_WRITE_ON
      Src: /src/frr/ospfd/ospf_packet.c:4136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 4
    argNames:
    - oi
    - update
    - addr
    - send_lsupd_now
    argTypes:
    - struct ospf_interface*
    - struct list*
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4138
      start: 4069
    functionDepth: 5
    functionLinenumber: 4069
    functionLinenumberEnd: 4138
    functionName: ospf_ls_upd_queue_send
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - OSPF_ISM_WRITE_ON
    - ospf_ls_upd_packet_new
    - ospf_make_header
    - listcount
    - ospf_fill_header
    - ospf_packet_add
    - listnode_add
    - list_isempty
    - zlog_debug
    - ospf_write
    - EVENT_OFF
    - ospf_make_ls_upd
    - htonl
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_upd_queue_send(struct ospf_interface *oi, struct list
      *update,\n\t\t\t    struct in_addr addr, int send_lsupd_now)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:4142,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:4151,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:4153,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:4154,1
    - Dst: ospf_ls_upd_queue_send
      Src: /src/frr/ospfd/ospf_packet.c:4161,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:4164,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_packet.c:4165,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_packet.c:4166,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:4173,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_packet.c:4177,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:4182,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4183
      start: 4140
    functionDepth: 6
    functionLinenumber: 4140
    functionLinenumberEnd: 4183
    functionName: ospf_ls_upd_send_queue_event
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - list_delete
    - listcount
    - route_top
    - route_next
    - zlog_debug
    - EVENT_ARG
    - ospf_ls_upd_queue_send
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf_ls_upd_send_queue_event(struct event *thread)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4203,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4207,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4209,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4211,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:4215,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_packet.c:4218,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_packet.c:4219,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_packet.c:4223,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_packet.c:4226,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_packet.c:4228,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_packet.c:4230,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:4231,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_packet.c:4232,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_packet.c:4233,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_packet.c:4237,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:4237,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:4238,1
    - Dst: ospf_ls_upd_queue_send
      Src: /src/frr/ospfd/ospf_packet.c:4245,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 4
    argNames:
    - nbr
    - update
    - flag
    - send_lsupd_now
    argTypes:
    - struct ospf_neighbor*
    - struct list*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4248
      start: 4185
    functionDepth: 6
    functionLinenumber: 4185
    functionLinenumberEnd: 4248
    functionName: ospf_ls_upd_send
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 3
    functionsReached:
    - route_unlock_node
    - flog_warn
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - ospf_lsa_lock
    - listnode_add
    - route_next
    - IPV4_ADDR_SAME
    - route_node_get
    - list_new
    - for
    - htonl
    - if
    - ospf_ls_upd_queue_send
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_upd_send(struct ospf_neighbor *nbr, struct list *update,
      int flag,\n\t\t      int send_lsupd_now)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_packet_new
      Src: /src/frr/ospfd/ospf_packet.c:4259,1
    - Dst: ospf_make_header
      Src: /src/frr/ospfd/ospf_packet.c:4262,1
    - Dst: ospf_make_ls_ack
      Src: /src/frr/ospfd/ospf_packet.c:4265,1
    - Dst: ospf_fill_header
      Src: /src/frr/ospfd/ospf_packet.c:4268,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4276,1
    - Dst: ospf_packet_add
      Src: /src/frr/ospfd/ospf_packet.c:4281,1
    - Dst: OSPF_ISM_WRITE_ON
      Src: /src/frr/ospfd/ospf_packet.c:4284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - oi
    - ack
    - dst
    argTypes:
    - struct ospf_interface*
    - struct list*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4285
      start: 4253
    functionDepth: 6
    functionLinenumber: 4253
    functionLinenumberEnd: 4285
    functionName: ospf_ls_ack_send_list
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - htonl
    - OSPF_ISM_WRITE_ON
    - ospf_make_header
    - ospf_fill_header
    - ospf_packet_add
    - ospf_make_ls_ack
    - ospf_packet_new
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_ack_send_list(struct ospf_interface *oi, struct list
      *ack,\n\t\t\t\t  struct in_addr dst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_packet.c:4289,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:4293,1
    - Dst: ospf_ls_ack_send_list
      Src: /src/frr/ospfd/ospf_packet.c:4294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4296
      start: 4287
    functionDepth: 7
    functionLinenumber: 4287
    functionLinenumberEnd: 4296
    functionName: ospf_ls_ack_send_event
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - listcount
    - ospf_ls_ack_send_list
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_ls_ack_send_event(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_GRACE_LSA
      Src: /src/frr/ospfd/ospf_packet.c:4302,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_packet.c:4304,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:4308,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_packet.c:4311,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_packet.c:4311,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_packet.c:4313,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4315
      start: 4298
    functionDepth: 1
    functionLinenumber: 4298
    functionLinenumberEnd: 4315
    functionName: ospf_ls_ack_send
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - IS_GRACE_LSA
    - listcount
    - ospf_lsa_lock
    - listnode_add
    - zlog_debug
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf_ls_ack_send(struct ospf_neighbor *nbr, struct ospf_lsa *lsa)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_packet.c:4331,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_packet.c:4331,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:4338,1
    - Dst: ospf_ls_ack_send_list
      Src: /src/frr/ospfd/ospf_packet.c:4339,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4348,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4350,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4352,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_packet.c:4354,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_packet.c:4356,1
    - Dst: ospf_ls_ack_send_list
      Src: /src/frr/ospfd/ospf_packet.c:4357,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4358
      start: 4318
    functionDepth: 7
    functionLinenumber: 4318
    functionLinenumberEnd: 4358
    functionName: ospf_ls_ack_send_delayed
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 1
    functionsReached:
    - ospf_ls_ack_send_list
    - listcount
    - route_top
    - route_next
    - htonl
    linkageType: ''
    returnType: void
    signature: void ospf_ls_ack_send_delayed(struct ospf_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_zebra_send_arp
      Src: /src/frr/ospfd/ospf_packet.c:4375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4376
      start: 4370
    functionDepth: 1
    functionLinenumber: 4370
    functionLinenumberEnd: 4376
    functionName: ospf_proactively_arp
    functionSourceFile: /src/frr/ospfd/ospf_packet.c
    functionUses: 0
    functionsReached:
    - ospf_zebra_send_arp
    linkageType: ''
    returnType: void
    signature: void ospf_proactively_arp(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ext.c:104,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ext.c:109,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ext.c:112,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_ext.c:113,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:129,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ext.c:135,1
    - Dst: ospf_register_opaque_functab
      Src: /src/frr/ospfd/ospf_ext.c:136,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 158
    functionName: ospf_ext_init
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - flog_warn
    - memset
    - ospf_register_opaque_functab
    - list_new
    linkageType: ''
    returnType: int
    signature: int ospf_ext_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_ext.c:171,1
    - Dst: ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_ext.c:174,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ext.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 182
    functionName: ospf_ext_term
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - list_delete
    - ospf_delete_opaque_functab
    linkageType: ''
    returnType: void
    signature: void ospf_ext_term(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ext.c:197,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:198,1
    - Dst: ospf_ext_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: ospf_ext_finish
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - ospf_ext_lsa_schedule
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void ospf_ext_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ext.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: del_ext_info
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void del_ext_info(void *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 228
    functionName: get_ext_pref_instance_value
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_ext_pref_instance_value(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 241
    functionName: get_ext_link_instance_value
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_ext_link_instance_value(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ext.c:249,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:325,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:328,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:328,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:336,1
    - Dst: SID_LABEL_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:336,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:337,1
    - Dst: SET_LABEL
      Src: /src/frr/ospfd/ospf_ext.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 338
    functionName: lookup_ext_by_ifp
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - SET_LABEL
    - htons
    - ALL_LIST_ELEMENTS_RO
    - TLV_TYPE
    - SET_FLAG
    - htonl
    - SID_LABEL_SIZE
    linkageType: ''
    returnType: struct ext_itf
    signature: struct ext_itf *lookup_ext_by_ifp(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:362,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:362,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:365,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:371,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:372,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:373,1
    - Dst: SID_LABEL_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:373,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:374,1
    - Dst: SET_LABEL
      Src: /src/frr/ospfd/ospf_ext.c:374,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:376,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:377,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:378,1
    - Dst: SID_INDEX_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:378,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:379,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - exti
    - backup
    - value
    - value_type
    argTypes:
    - struct ext_itf*
    - bool
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 385
    functionName: set_adj_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - SID_INDEX_SIZE
    - TLV_LEN
    - SET_LABEL
    - htons
    - TLV_TYPE
    - SET_FLAG
    - UNSET_FLAG
    - htonl
    - SID_LABEL_SIZE
    linkageType: ''
    returnType: void
    signature: "void set_adj_sid(struct ext_itf *exti, bool backup, uint32_t value,\n\t\t\tint
      value_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:405,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:405,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:408,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:412,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:413,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:414,1
    - Dst: SID_LABEL_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:414,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:415,1
    - Dst: SET_LABEL
      Src: /src/frr/ospfd/ospf_ext.c:415,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:417,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:418,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:419,1
    - Dst: SID_INDEX_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:419,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 5
    argNames:
    - exti
    - backup
    - value
    - value_type
    - neighbor_id
    argTypes:
    - struct ext_itf*
    - bool
    - uint32_t
    - int
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 427
    functionName: set_lan_adj_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - SID_INDEX_SIZE
    - TLV_LEN
    - SET_LABEL
    - htons
    - TLV_TYPE
    - SET_FLAG
    - UNSET_FLAG
    - htonl
    - SID_LABEL_SIZE
    linkageType: ''
    returnType: void
    signature: "void set_lan_adj_sid(struct ext_itf *exti, bool backup, uint32_t value,\n\t\t\t
      \   int value_type, struct in_addr neighbor_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:433,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:434,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:438,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - exti
    argTypes:
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 441
    functionName: unset_adjacency_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - TLV_TYPE
    linkageType: ''
    returnType: void
    signature: void unset_adjacency_sid(struct ext_itf *exti)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:447,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:447,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:448,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - exti
    - rmtif
    argTypes:
    - struct ext_itf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 450
    functionName: set_rmt_itf_addr
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - TLV_TYPE
    - TLV_LEN
    - htons
    linkageType: ''
    returnType: void
    signature: void set_rmt_itf_addr(struct ext_itf *exti, struct in_addr rmtif)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:461,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:464,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:471,1
    - Dst: ospf_ext_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:472,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:473,1
    - Dst: ospf_ext_link_delete_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:479,1
    - Dst: ospf_sr_ext_itf_delete
      Src: /src/frr/ospfd/ospf_ext.c:481,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - exti
    argTypes:
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 482
    functionName: ospf_extended_lsa_delete
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ospf_sr_ext_itf_delete
    - ospf_ext_link_delete_adj_sid
    - CHECK_FLAG
    - osr_debug
    - ospf_ext_lsa_schedule
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void ospf_extended_lsa_delete(struct ext_itf *exti)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ext_by_ifp
      Src: /src/frr/ospfd/ospf_ext.c:501,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:506,1
    - Dst: set_ext_prefix
      Src: /src/frr/ospfd/ospf_ext.c:509,1
    - Dst: set_prefix_sid
      Src: /src/frr/ospfd/ospf_ext.c:511,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:514,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:515,1
    - Dst: ospf_ext_pref_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:516,1
    - Dst: ospf_ext_pref_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:519,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:523,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:526,1
    - Dst: ospf_ext_pref_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:527,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ext.c:530,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - ifp
    - index
    - p
    - flags
    argTypes:
    - struct interface*
    - uint32_t
    - struct prefix_ipv4*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 531
    functionName: ospf_ext_schedule_prefix_index
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - SET_OPAQUE_LSID
    - lookup_ext_by_ifp
    - CHECK_FLAG
    - osr_debug
    - set_ext_prefix
    - set_prefix_sid
    - ospf_ext_pref_lsa_schedule
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t ospf_ext_schedule_prefix_index(struct interface *ifp, uint32_t
      index,\n\t\t\t\t\tstruct prefix_ipv4 *p, uint8_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_sr_local_block_request_label
      Src: /src/frr/ospfd/ospf_ext.c:548,1
    - Dst: ospf_sr_local_block_request_label
      Src: /src/frr/ospfd/ospf_ext.c:549,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:551,1
    - Dst: ospf_ext_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:552,1
    - Dst: set_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:558,1
    - Dst: set_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:559,1
    - Dst: set_lan_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:561,1
    - Dst: set_lan_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:563,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:568,1
    - Dst: ospf_sr_ext_itf_add
      Src: /src/frr/ospfd/ospf_ext.c:569,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - exti
    argTypes:
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 538
    functionDepth: 2
    functionLinenumber: 538
    functionLinenumberEnd: 570
    functionName: ospf_ext_link_update_adj_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - set_lan_adj_sid
    - CHECK_FLAG
    - ospf_ext_lsa_schedule
    - SET_FLAG
    - set_adj_sid
    - ospf_sr_local_block_request_label
    - ospf_sr_ext_itf_add
    linkageType: ''
    returnType: void
    signature: void ospf_ext_link_update_adj_sid(struct ext_itf *exti)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_sr_local_block_release_label
      Src: /src/frr/ospfd/ospf_ext.c:585,1
    - Dst: ospf_sr_local_block_release_label
      Src: /src/frr/ospfd/ospf_ext.c:586,1
    - Dst: ospf_sr_local_block_release_label
      Src: /src/frr/ospfd/ospf_ext.c:588,1
    - Dst: ospf_sr_local_block_release_label
      Src: /src/frr/ospfd/ospf_ext.c:589,1
    - Dst: unset_adjacency_sid
      Src: /src/frr/ospfd/ospf_ext.c:592,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:595,1
    - Dst: ospf_sr_ext_itf_delete
      Src: /src/frr/ospfd/ospf_ext.c:596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - exti
    argTypes:
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 597
    functionName: ospf_ext_link_delete_adj_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    - unset_adjacency_sid
    - ospf_sr_ext_itf_delete
    - ospf_sr_local_block_release_label
    linkageType: ''
    returnType: void
    signature: void ospf_ext_link_delete_adj_sid(struct ext_itf *exti)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:608,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ext.c:611,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:617,1
    - Dst: ospf_ext_link_update_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 602
    functionDepth: 3
    functionLinenumber: 602
    functionLinenumberEnd: 622
    functionName: ospf_ext_link_srlb_update
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - osr_debug
    - ospf_ext_link_update_adj_sid
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void ospf_ext_link_srlb_update(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:636,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ext.c:643,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:645,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:649,1
    - Dst: ospf_ext_link_update_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:650,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:653,1
    - Dst: ospf_ext_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:654,1
    - Dst: ospf_ext_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:656,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ext.c:661,1
    - Dst: ospf_extended_lsa_delete
      Src: /src/frr/ospfd/ospf_ext.c:662,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 631
    functionDepth: 3
    functionLinenumber: 631
    functionLinenumberEnd: 667
    functionName: ospf_ext_update_sr
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ospf_extended_lsa_delete
    - ALL_LIST_ELEMENTS_RO
    - osr_debug
    - CHECK_FLAG
    - ospf_ext_lsa_schedule
    - ospf_ext_link_update_adj_sid
    linkageType: ''
    returnType: void
    signature: void ospf_ext_update_sr(bool enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ext_by_ifp
      Src: /src/frr/ospfd/ospf_ext.c:681,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_ext.c:686,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ext.c:692,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 696
    functionName: ospf_ext_link_new_if
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - lookup_ext_by_ifp
    - XCALLOC::XCALLOC
    - listnode_add
    linkageType: ''
    returnType: int
    signature: int ospf_ext_link_new_if(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ext_by_ifp
      Src: /src/frr/ospfd/ospf_ext.c:704,1
    - Dst: ospf_extended_lsa_delete
      Src: /src/frr/ospfd/ospf_ext.c:707,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_ext.c:710,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_ext.c:712,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 699
    functionDepth: 2
    functionLinenumber: 699
    functionLinenumberEnd: 722
    functionName: ospf_ext_link_del_if
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - ospf_extended_lsa_delete
    - lookup_ext_by_ifp
    - XFREE
    - listnode_delete
    linkageType: ''
    returnType: int
    signature: int ospf_ext_link_del_if(struct interface *ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ext_by_ifp
      Src: /src/frr/ospfd/ospf_ext.c:733,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:735,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ext.c:737,1
    - Dst: ospf_extended_lsa_delete
      Src: /src/frr/ospfd/ospf_ext.c:743,1
    - Dst: get_ext_pref_instance_value
      Src: /src/frr/ospfd/ospf_ext.c:753,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:758,1
    - Dst: ospf_sr_update_local_prefix
      Src: /src/frr/ospfd/ospf_ext.c:760,1
    - Dst: get_ext_link_instance_value
      Src: /src/frr/ospfd/ospf_ext.c:770,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:778,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - oi
    - old_status
    argTypes:
    - struct ospf_interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 728
    functionDepth: 2
    functionLinenumber: 728
    functionLinenumberEnd: 783
    functionName: ospf_ext_ism_change
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ospf_sr_update_local_prefix
    - flog_warn
    - ospf_extended_lsa_delete
    - lookup_ext_by_ifp
    - get_ext_link_instance_value
    - osr_debug
    - get_ext_pref_instance_value
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_ext_ism_change(struct ospf_interface *oi, int old_status)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lookup_ext_by_ifp
      Src: /src/frr/ospfd/ospf_ext.c:799,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:801,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ext.c:803,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:809,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ext.c:811,1
    - Dst: ospf_ext_link_delete_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:818,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:819,1
    - Dst: ospf_ext_link_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:820,1
    - Dst: set_ext_link
      Src: /src/frr/ospfd/ospf_ext.c:838,1
    - Dst: set_rmt_itf_addr
      Src: /src/frr/ospfd/ospf_ext.c:842,1
    - Dst: set_ext_link
      Src: /src/frr/ospfd/ospf_ext.c:851,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ext.c:851,1
    - Dst: set_ext_link
      Src: /src/frr/ospfd/ospf_ext.c:866,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ext.c:866,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:872,1
    - Dst: ospf_ext_link_delete_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:873,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:874,1
    - Dst: ospf_ext_link_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:875,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:880,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:883,1
    - Dst: ospf_ext_link_update_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:888,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:891,1
    - Dst: ospf_ext_link_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:892,1
    - Dst: ospf_ext_link_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:894,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 55
    argCount: 2
    argNames:
    - nbr
    - old_status
    argTypes:
    - struct ospf_neighbor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 789
    functionDepth: 3
    functionLinenumber: 789
    functionLinenumberEnd: 896
    functionName: ospf_ext_link_nsm_change
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - DR
    - ospf_ext_link_delete_adj_sid
    - flog_warn
    - ospf_ext_link_lsa_schedule
    - set_rmt_itf_addr
    - lookup_ext_by_ifp
    - CHECK_FLAG
    - osr_debug
    - ospf_ext_link_update_adj_sid
    - SET_FLAG
    - set_ext_link
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_ext_link_nsm_change(struct ospf_neighbor *nbr, int old_status)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:903,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:914,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:914,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_ext.c:919,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ext.c:927,1
    - Dst: ospf_sr_ext_link_lsa_update
      Src: /src/frr/ospfd/ospf_ext.c:928,1
    - Dst: ospf_sr_ext_link_lsa_delete
      Src: /src/frr/ospfd/ospf_ext.c:930,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 933
    functionName: ospf_ext_link_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - GET_OPAQUE_TYPE
    - flog_warn
    - IS_LSA_MAXAGE
    - ospf_sr_ext_link_lsa_update
    - ospf_sr_ext_link_lsa_delete
    - ntohl
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: int ospf_ext_link_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:941,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:952,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:952,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_ext.c:957,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ext.c:965,1
    - Dst: ospf_sr_ext_prefix_lsa_update
      Src: /src/frr/ospfd/ospf_ext.c:966,1
    - Dst: ospf_sr_ext_prefix_lsa_delete
      Src: /src/frr/ospfd/ospf_ext.c:968,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 971
    functionName: ospf_ext_pref_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ospf_sr_ext_prefix_lsa_update
    - GET_OPAQUE_TYPE
    - flog_warn
    - IS_LSA_MAXAGE
    - ospf_sr_ext_prefix_lsa_delete
    - ntohl
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: int ospf_ext_pref_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ext.c:982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - tlvh
    argTypes:
    - struct stream*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 983
    functionName: build_tlv_header
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 5
    functionsReached:
    - stream_put
    linkageType: ''
    returnType: void
    signature: void build_tlv_header(struct stream *s, struct tlv_header *tlvh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:988,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_ext.c:989,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ext.c:990,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ext.c:990,1
    - Dst: TLV_BODY_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:990,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - s
    - tlvh
    argTypes:
    - struct stream*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 992
    functionName: build_tlv
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 2
    functionsReached:
    - stream_put
    - TLV_BODY_SIZE
    - build_tlv_header
    - ntohs
    - TLV_DATA
    linkageType: ''
    returnType: void
    signature: void build_tlv(struct stream *s, struct tlv_header *tlvh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:1003,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1003,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1003,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:1003,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_ext.c:1007,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ext.c:1008,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ext.c:1008,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1010,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - exti
    argTypes:
    - struct stream*
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 995
    functionDepth: 2
    functionLinenumber: 995
    functionLinenumberEnd: 1011
    functionName: ospf_ext_pref_lsa_body_set
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - TLV_LEN
    - stream_put
    - htons
    - build_tlv_header
    - ntohs
    - TLV_DATA
    - build_tlv
    linkageType: ''
    returnType: void
    signature: void ospf_ext_pref_lsa_body_set(struct stream *s, struct ext_itf *exti)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1027,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:1027,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:1030,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1030,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_ext.c:1033,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ext.c:1034,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ext.c:1034,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1036,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1037,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1040,1
    - Dst: TLV_TYPE
      Src: /src/frr/ospfd/ospf_ext.c:1040,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1041,1
    - Dst: TLV_LEN
      Src: /src/frr/ospfd/ospf_ext.c:1046,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1046,1
    - Dst: build_tlv_header
      Src: /src/frr/ospfd/ospf_ext.c:1049,1
    - Dst: stream_put
      Src: /src/frr/ospfd/ospf_ext.c:1050,1
    - Dst: TLV_DATA
      Src: /src/frr/ospfd/ospf_ext.c:1050,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1052,1
    - Dst: build_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1053,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - s
    - exti
    argTypes:
    - struct stream*
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1014
    functionDepth: 2
    functionLinenumber: 1014
    functionLinenumberEnd: 1055
    functionName: ospf_ext_link_lsa_body_set
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - TLV_LEN
    - stream_put
    - htons
    - build_tlv_header
    - ntohs
    - TLV_TYPE
    - TLV_DATA
    - build_tlv
    linkageType: ''
    returnType: void
    signature: void ospf_ext_link_lsa_body_set(struct stream *s, struct ext_itf *exti)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_ext.c:1076,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_ext.c:1079,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ext.c:1087,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:1088,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ext.c:1095,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_ext.c:1098,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/ospfd/ospf_ext.c:1099,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_ext.c:1104,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1106,1
    - Dst: ospf_ext_pref_lsa_body_set
      Src: /src/frr/ospfd/ospf_ext.c:1111,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_ext.c:1114,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1115,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_ext.c:1118,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1123,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_ext.c:1123,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_ext.c:1124,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_ext.c:1125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 2
    argNames:
    - area
    - exti
    argTypes:
    - struct ospf_area*
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1058
    functionDepth: 3
    functionLinenumber: 1058
    functionLinenumberEnd: 1128
    functionName: ospf_ext_pref_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - SET_OPAQUE_LSID
    - stream_free
    - lsa_header_set
    - stream_new
    - ospf_lookup_by_vrf_id
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - STREAM_DATA
    - osr_debug
    - stream_get_endp
    - ospf_ext_pref_lsa_body_set
    - SET_FLAG
    - flags::flags
    - LSA_OPTIONS_GET
    - htonl
    - LSA_OPTIONS_NSSA_GET
    - memcpy
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_ext_pref_lsa_new(struct ospf_area *area,\n\t\t\t\t\t
      \     struct ext_itf *exti)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/ospfd/ospf_ext.c:1147,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfd/ospf_ext.c:1148,1
    - Dst: LSA_OPTIONS_GET
      Src: /src/frr/ospfd/ospf_ext.c:1151,1
    - Dst: LSA_OPTIONS_NSSA_GET
      Src: /src/frr/ospfd/ospf_ext.c:1152,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ext.c:1160,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:1161,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1163,1
    - Dst: lsa_header_set
      Src: /src/frr/ospfd/ospf_ext.c:1168,1
    - Dst: ospf_ext_link_lsa_body_set
      Src: /src/frr/ospfd/ospf_ext.c:1171,1
    - Dst: stream_get_endp
      Src: /src/frr/ospfd/ospf_ext.c:1174,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1175,1
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_ext.c:1178,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1183,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_ext.c:1183,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_ext.c:1184,1
    - Dst: stream_free
      Src: /src/frr/ospfd/ospf_ext.c:1185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - area
    - exti
    argTypes:
    - struct ospf_area*
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1188
    functionName: ospf_ext_link_lsa_new
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - SET_OPAQUE_LSID
    - stream_free
    - lsa_header_set
    - stream_new
    - htons
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    - STREAM_DATA
    - osr_debug
    - ospf_ext_link_lsa_body_set
    - stream_get_endp
    - SET_FLAG
    - flags::flags
    - LSA_OPTIONS_GET
    - htonl
    - LSA_OPTIONS_NSSA_GET
    - memcpy
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_ext_link_lsa_new(struct ospf_area *area,\n\t\t\t\t\t
      \     struct ext_itf *exti)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ext_pref_lsa_new::ospf_ext_pref_lsa_new
      Src: /src/frr/ospfd/ospf_ext.c:1202,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1204,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ext.c:1210,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1211,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1220,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1228,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1230,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1230,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ext.c:1232,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_ext.c:1233,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1233,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - area
    - exti
    argTypes:
    - struct ospf_area*
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1194
    functionDepth: 4
    functionLinenumber: 1194
    functionLinenumberEnd: 1238
    functionName: ospf_ext_pref_lsa_originate1
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_ext_pref_lsa_new::ospf_ext_pref_lsa_new
    - osr_debug
    - ospf_lsa_install
    - SET_FLAG
    - ospf_lsa_header_dump
    - data::data
    linkageType: ''
    returnType: int
    signature: "int ospf_ext_pref_lsa_originate1(struct ospf_area *area,\n\t\t\t\t\tstruct
      ext_itf *exti)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ext_link_lsa_new::ospf_ext_link_lsa_new
      Src: /src/frr/ospfd/ospf_ext.c:1251,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1253,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ext.c:1259,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1260,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1267,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1275,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1277,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1277,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ext.c:1279,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_ext.c:1280,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - area
    - exti
    argTypes:
    - struct ospf_area*
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1244
    functionDepth: 4
    functionLinenumber: 1244
    functionLinenumberEnd: 1285
    functionName: ospf_ext_link_lsa_originate1
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_ext_link_lsa_new::ospf_ext_link_lsa_new
    - osr_debug
    - ospf_lsa_install
    - SET_FLAG
    - ospf_lsa_header_dump
    - data::data
    linkageType: ''
    returnType: int
    signature: "int ospf_ext_link_lsa_originate1(struct ospf_area *area,\n\t\t\t\t\tstruct
      ext_itf *exti)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ext.c:1296,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1302,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ext.c:1306,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ext.c:1314,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1318,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1320,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1324,1
    - Dst: ospf_ext_pref_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1326,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1333,1
    - Dst: ospf_ext_pref_lsa_originate1
      Src: /src/frr/ospfd/ospf_ext.c:1336,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1288
    functionDepth: 5
    functionLinenumber: 1288
    functionLinenumberEnd: 1341
    functionName: ospf_ext_pref_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ospf_ext_pref_lsa_originate1
    - zlog_info
    - flog_warn
    - ALL_LIST_ELEMENTS_RO
    - osr_debug
    - CHECK_FLAG
    - IPV4_ADDR_SAME
    - UNSET_FLAG
    - ospf_ext_pref_lsa_schedule
    linkageType: ''
    returnType: int
    signature: int ospf_ext_pref_lsa_originate(void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ext.c:1352,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ext.c:1360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1366,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ext.c:1371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1376,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1378,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1382,1
    - Dst: ospf_ext_link_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1384,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1391,1
    - Dst: ospf_ext_link_lsa_originate1
      Src: /src/frr/ospfd/ospf_ext.c:1395,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1344
    functionDepth: 5
    functionLinenumber: 1344
    functionLinenumberEnd: 1400
    functionName: ospf_ext_link_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - flog_warn
    - ospf_ext_link_lsa_schedule
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - osr_debug
    - ospf_ext_link_lsa_originate1
    - IPV4_ADDR_SAME
    - UNSET_FLAG
    linkageType: ''
    returnType: int
    signature: int ospf_ext_link_lsa_originate(void *arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ext.c:1416,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1420,1
    - Dst: lookup_ext_by_instance
      Src: /src/frr/ospfd/ospf_ext.c:1424,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1426,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1429,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1433,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1434,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1438,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ext.c:1442,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1444,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1445,1
    - Dst: ospf_ext_pref_lsa_new::ospf_ext_pref_lsa_new
      Src: /src/frr/ospfd/ospf_ext.c:1450,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1453,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1457,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_ext.c:1457,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ext.c:1468,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ext.c:1470,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1471,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1481,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1482,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1482,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ext.c:1483,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_ext.c:1484,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1484,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1403
    functionDepth: 4
    functionLinenumber: 1403
    functionLinenumberEnd: 1488
    functionName: ospf_ext_pref_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - IS_DEBUG_OSPF
    - flog_warn
    - ospf_ext_pref_lsa_new::ospf_ext_pref_lsa_new
    - htons
    - ospf_lookup_by_vrf_id
    - lookup_ext_by_instance
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - ospf_lsa_install
    - osr_debug
    - UNSET_FLAG
    - ospf_lsa_header_dump
    - data::data
    - lsa_seqnum_increment
    - ospf_opaque_lsa_flush_schedule
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_ext_pref_lsa_refresh(struct ospf_lsa *lsa)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ext.c:1503,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1506,1
    - Dst: lookup_ext_by_instance
      Src: /src/frr/ospfd/ospf_ext.c:1510,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1512,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1515,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1519,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1520,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_ext.c:1523,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ext.c:1527,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1529,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1530,1
    - Dst: ospf_ext_link_lsa_new::ospf_ext_link_lsa_new
      Src: /src/frr/ospfd/ospf_ext.c:1535,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1537,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1541,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_ext.c:1541,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_ext.c:1545,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1546,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1556,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1557,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1557,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ext.c:1558,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_ext.c:1559,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_ext.c:1559,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1491
    functionDepth: 4
    functionLinenumber: 1491
    functionLinenumberEnd: 1562
    functionName: ospf_ext_link_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - IS_DEBUG_OSPF
    - flog_warn
    - htons
    - ospf_ext_link_lsa_new::ospf_ext_link_lsa_new
    - lookup_ext_by_instance
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - ospf_lsa_install
    - osr_debug
    - UNSET_FLAG
    - ospf_lsa_header_dump
    - data::data
    - lsa_seqnum_increment
    - ospf_opaque_lsa_flush_schedule
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_ext_link_lsa_refresh(struct ospf_lsa *lsa)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ext.c:1573,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ext.c:1574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1581,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1584,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1592,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ext.c:1596,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_ext.c:1598,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1600,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ext.c:1609,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:1610,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1614,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1619,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1622,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1623,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - exti
    - opcode
    argTypes:
    - struct ext_itf*
    - enum lsa_opcode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1565
    functionDepth: 11
    functionLinenumber: 1565
    functionLinenumberEnd: 1626
    functionName: ospf_ext_pref_lsa_schedule
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 2
    functionsReached:
    - SET_OPAQUE_LSID
    - ospf_area_lookup_by_area_id
    - ospf_lookup_by_vrf_id
    - memset
    - flog_warn
    - CHECK_FLAG
    - osr_debug
    - ospf_opaque_lsa_refresh_schedule
    - UNSET_FLAG
    - htonl
    - ospf_opaque_lsa_flush_schedule
    - ospf_opaque_lsa_reoriginate_schedule
    linkageType: ''
    returnType: void
    signature: "void ospf_ext_pref_lsa_schedule(struct ext_itf *exti,\n\t\t\t\t       enum
      lsa_opcode opcode)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ext.c:1637,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ext.c:1638,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1645,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1648,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_ext.c:1656,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ext.c:1660,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_ext.c:1662,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_ext.c:1664,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_ext.c:1673,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_ext.c:1674,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1678,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1683,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1686,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - exti
    - opcode
    argTypes:
    - struct ext_itf*
    - enum lsa_opcode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1629
    functionDepth: 11
    functionLinenumber: 1629
    functionLinenumberEnd: 1689
    functionName: ospf_ext_link_lsa_schedule
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 2
    functionsReached:
    - SET_OPAQUE_LSID
    - ospf_area_lookup_by_area_id
    - ospf_lookup_by_vrf_id
    - memset
    - flog_warn
    - CHECK_FLAG
    - osr_debug
    - ospf_opaque_lsa_refresh_schedule
    - htonl
    - ospf_opaque_lsa_flush_schedule
    - ospf_opaque_lsa_reoriginate_schedule
    linkageType: ''
    returnType: void
    signature: "void ospf_ext_link_lsa_schedule(struct ext_itf *exti,\n\t\t\t\t       enum
      lsa_opcode opcode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ext_pref_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1696,1
    - Dst: ospf_ext_link_lsa_schedule
      Src: /src/frr/ospfd/ospf_ext.c:1698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - exti
    - op
    argTypes:
    - struct ext_itf*
    - enum lsa_opcode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1692
    functionDepth: 12
    functionLinenumber: 1692
    functionLinenumberEnd: 1699
    functionName: ospf_ext_lsa_schedule
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 4
    functionsReached:
    - ospf_ext_pref_lsa_schedule
    - ospf_ext_link_lsa_schedule
    linkageType: ''
    returnType: void
    signature: void ospf_ext_lsa_schedule(struct ext_itf *exti, enum lsa_opcode op)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - size
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1707
    functionDepth: 0
    functionLinenumber: 1707
    functionLinenumberEnd: 1715
    functionName: check_tlv_size
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_tlv_size(size, msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ext.c:1723,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1725,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1727,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:1729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1717
    functionDepth: 1
    functionLinenumber: 1717
    functionLinenumberEnd: 1730
    functionName: show_vty_ext_link_rmt_itf_addr
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - ntohs
    - TLV_SIZE
    - vty_out
    - check_tlv_size
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_ext_link_rmt_itf_addr(struct vty *vty,\n\t\t\t\t\t
      \      struct tlv_header *tlvh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ext.c:1738,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1740,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1742,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1743,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1745,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_ext.c:1746,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:1746,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:1747,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:1749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1733
    functionDepth: 1
    functionLinenumber: 1733
    functionLinenumberEnd: 1750
    functionName: show_vty_ext_link_adj_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - vty_out
    - CHECK_FLAG
    - ntohs
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_ext_link_adj_sid(struct vty *vty,\n\t\t\t\t\t  struct
      tlv_header *tlvh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ext.c:1759,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1761,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1763,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1765,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1767,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_ext.c:1768,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:1768,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:1769,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:1771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1753
    functionDepth: 1
    functionLinenumber: 1753
    functionLinenumberEnd: 1772
    functionName: show_vty_ext_link_lan_adj_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - vty_out
    - CHECK_FLAG
    - ntohs
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_ext_link_lan_adj_sid(struct vty *vty,\n\t\t\t\t\t
      \     struct tlv_header *tlvh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:1777,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1778,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:1779,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1783,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1784,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1784,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:1786,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - tlvh
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1774
    functionDepth: 1
    functionLinenumber: 1774
    functionLinenumberEnd: 1787
    functionName: show_vty_unknown_tlv
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 4
    functionsReached:
    - ntohs
    - vty_out
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_unknown_tlv(struct vty *vty, struct tlv_header *tlvh,\n\t\t\t\t
      \    size_t buf_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1795,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1800,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1806,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1809,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1811,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_ext.c:1817,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1818,1
    - Dst: show_vty_ext_link_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:1820,1
    - Dst: show_vty_ext_link_lan_adj_sid
      Src: /src/frr/ospfd/ospf_ext.c:1823,1
    - Dst: show_vty_ext_link_rmt_itf_addr
      Src: /src/frr/ospfd/ospf_ext.c:1826,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1829,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - vty
    - ext
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1790
    functionDepth: 2
    functionLinenumber: 1790
    functionLinenumberEnd: 1835
    functionName: show_vty_link_info
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - vty_out
    - show_vty_unknown_tlv
    - ntohs
    - show_vty_ext_link_adj_sid
    - show_vty_ext_link_rmt_itf_addr
    - TLV_HDR_NEXT
    - show_vty_ext_link_lan_adj_sid
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_link_info(struct vty *vty, struct tlv_header *ext,\n\t\t\t\t
      \  size_t buf_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_ext.c:1851,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_ext.c:1852,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1853,1
    - Dst: show_vty_link_info
      Src: /src/frr/ospfd/ospf_ext.c:1855,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1858,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - json
    - lsa
    argTypes:
    - struct vty*
    - struct json_object*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1838
    functionDepth: 3
    functionLinenumber: 1838
    functionLinenumberEnd: 1862
    functionName: ospf_ext_link_show_info
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - show_vty_unknown_tlv
    - show_vty_link_info
    - ntohs
    - TLV_HDR_NEXT
    linkageType: ''
    returnType: void
    signature: "void ospf_ext_link_show_info(struct vty *vty, struct json_object *json,\n\t\t\t\t
      \   struct ospf_lsa *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_size
      Src: /src/frr/ospfd/ospf_ext.c:1871,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1873,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1875,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1877,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ext.c:1879,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_ext.c:1880,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:1880,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ext.c:1881,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_ext.c:1883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - tlvh
    argTypes:
    - struct vty*
    - struct tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1884
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1884
    functionName: show_vty_ext_pref_pref_sid
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - vty_out
    - CHECK_FLAG
    - ntohs
    - check_tlv_size
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_ext_pref_pref_sid(struct vty *vty,\n\t\t\t\t\t   struct
      tlv_header *tlvh)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1892,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1897,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ext.c:1903,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1906,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_ext.c:1913,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1914,1
    - Dst: show_vty_ext_pref_pref_sid
      Src: /src/frr/ospfd/ospf_ext.c:1916,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1919,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - vty
    - ext
    - buf_size
    argTypes:
    - struct vty*
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1887
    functionDepth: 2
    functionLinenumber: 1887
    functionLinenumberEnd: 1925
    functionName: show_vty_pref_info
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - vty_out
    - show_vty_unknown_tlv
    - ntohs
    - show_vty_ext_pref_pref_sid
    - TLV_HDR_NEXT
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t show_vty_pref_info(struct vty *vty, struct tlv_header *ext,\n\t\t\t\t
      \  size_t buf_size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_ext.c:1941,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_ext.c:1942,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_ext.c:1943,1
    - Dst: show_vty_pref_info
      Src: /src/frr/ospfd/ospf_ext.c:1945,1
    - Dst: show_vty_unknown_tlv
      Src: /src/frr/ospfd/ospf_ext.c:1948,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - json
    - lsa
    argTypes:
    - struct vty*
    - struct json_object*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1928
    functionDepth: 3
    functionLinenumber: 1928
    functionLinenumberEnd: 1952
    functionName: ospf_ext_pref_show_info
    functionSourceFile: /src/frr/ospfd/ospf_ext.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - show_vty_unknown_tlv
    - ntohs
    - TLV_HDR_NEXT
    - show_vty_pref_info
    linkageType: ''
    returnType: void
    signature: "void ospf_ext_pref_show_info(struct vty *vty, struct json_object *json,\n\t\t\t\t
      \   struct ospf_lsa *lsa)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_opaque_register_vty
      Src: /src/frr/ospfd/ospf_opaque.c:70,1
    - Dst: ospf_opaque_funclist_init
      Src: /src/frr/ospfd/ospf_opaque.c:71,1
    - Dst: ospf_mpls_te_init
      Src: /src/frr/ospfd/ospf_opaque.c:73,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_opaque.c:74,1
    - Dst: ospf_sr_init
      Src: /src/frr/ospfd/ospf_opaque.c:77,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_opaque.c:78,1
    - Dst: ospf_router_info_init
      Src: /src/frr/ospfd/ospf_opaque.c:80,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_opaque.c:81,1
    - Dst: ospf_ext_init
      Src: /src/frr/ospfd/ospf_opaque.c:83,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_opaque.c:84,1
    - Dst: ospf_apiserver_init
      Src: /src/frr/ospfd/ospf_opaque.c:87,1
    - Dst: exit
      Src: /src/frr/ospfd/ospf_opaque.c:88,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 92
    functionName: ospf_opaque_init
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 2
    functionsReached:
    - exit
    - ospf_sr_init
    - ospf_apiserver_init
    - ospf_router_info_init
    - ospf_opaque_register_vty
    - ospf_mpls_te_init
    - ospf_opaque_funclist_init
    - ospf_ext_init
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_mpls_te_term
      Src: /src/frr/ospfd/ospf_opaque.c:96,1
    - Dst: ospf_router_info_term
      Src: /src/frr/ospfd/ospf_opaque.c:98,1
    - Dst: ospf_ext_term
      Src: /src/frr/ospfd/ospf_opaque.c:100,1
    - Dst: ospf_sr_term
      Src: /src/frr/ospfd/ospf_opaque.c:102,1
    - Dst: ospf_apiserver_term
      Src: /src/frr/ospfd/ospf_opaque.c:105,1
    - Dst: ospf_opaque_funclist_term
      Src: /src/frr/ospfd/ospf_opaque.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 110
    functionName: ospf_opaque_term
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - ospf_router_info_term
    - ospf_sr_term
    - ospf_apiserver_term
    - ospf_opaque_funclist_term
    - ospf_ext_term
    - ospf_mpls_te_term
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_term(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_mpls_te_finish
      Src: /src/frr/ospfd/ospf_opaque.c:114,1
    - Dst: ospf_router_info_finish
      Src: /src/frr/ospfd/ospf_opaque.c:116,1
    - Dst: ospf_ext_finish
      Src: /src/frr/ospfd/ospf_opaque.c:118,1
    - Dst: ospf_apiserver_term
      Src: /src/frr/ospfd/ospf_opaque.c:121,1
    - Dst: ospf_sr_finish
      Src: /src/frr/ospfd/ospf_opaque.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 125
    functionName: ospf_opaque_finish
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 1
    functionsReached:
    - ospf_mpls_te_finish
    - ospf_sr_finish
    - ospf_apiserver_term
    - ospf_router_info_finish
    - ospf_ext_finish
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_finish(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:130,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 136
    functionName: ospf_opaque_type9_lsa_init
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - list_delete
    - list_new
    linkageType: ''
    returnType: int
    signature: int ospf_opaque_type9_lsa_init(struct ospf_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_opaque.c:140,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 145
    functionName: ospf_opaque_type9_lsa_term
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - list_delete
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type9_lsa_term(struct ospf_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:150,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 161
    functionName: ospf_opaque_type10_lsa_init
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 1
    functionsReached:
    - list_delete
    - list_new
    linkageType: ''
    returnType: int
    signature: int ospf_opaque_type10_lsa_init(struct ospf_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_opaque.c:169,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 173
    functionName: ospf_opaque_type10_lsa_term
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - list_delete
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type10_lsa_term(struct ospf_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:178,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - top
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 189
    functionName: ospf_opaque_type11_lsa_init
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - list_delete
    - list_new
    linkageType: ''
    returnType: int
    signature: int ospf_opaque_type11_lsa_init(struct ospf *top)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_opaque.c:197,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - top
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 201
    functionName: ospf_opaque_type11_lsa_term
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    - list_delete
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type11_lsa_term(struct ospf *top)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: OPAQUE_TYPE_RANGE_UNASSIGNED
      Src: /src/frr/ospfd/ospf_opaque.c:233,1
    - Dst: OPAQUE_TYPE_RANGE_RESERVED
      Src: /src/frr/ospfd/ospf_opaque.c:241,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - opaque_type
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 247
    functionName: ospf_opaque_type_name
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - OPAQUE_TYPE_RANGE_UNASSIGNED
    - OPAQUE_TYPE_RANGE_RESERVED
    linkageType: ''
    returnType: char
    signature: char *ospf_opaque_type_name(uint8_t opaque_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_opaque.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 287
    functionName: ospf_opaque_del_functab
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_del_functab(void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:293,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:296,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:299,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 305
    functionName: ospf_opaque_funclist_init
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 1
    functionsReached:
    - list_new
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_funclist_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:312,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:315,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:318,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_opaque.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 323
    functionName: ospf_opaque_funclist_term
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 1
    functionsReached:
    - list_delete
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_funclist_term(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:351,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - lsa_type
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 356
    functionName: ospf_get_opaque_funclist
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - flog_warn
    linkageType: ''
    returnType: struct list
    signature: struct list *ospf_get_opaque_funclist(uint8_t lsa_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_get_opaque_funclist
      Src: /src/frr/ospfd/ospf_opaque.c:378,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:384,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:386,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_opaque.c:393,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_opaque.c:411,1
    - Dst: ospf_delete_opaque_functab::ospf_delete_opaque_functab
      Src: /src/frr/ospfd/ospf_opaque.c:411,1
    - Dst: ospf_get_opaque_funclist
      Src: /src/frr/ospfd/ospf_opaque.c:422,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:423,1
    - Dst: free_opaque_info_per_type
      Src: /src/frr/ospfd/ospf_opaque.c:428,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_opaque.c:431,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_opaque.c:433,1
    - Dst: ospf_get_opaque_funclist
      Src: /src/frr/ospfd/ospf_opaque.c:449,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_opaque.c:450,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - lsa_type
    - opaque_type
    - (*lsa_refresher)(struct ospf_lsa *lsa)
    argTypes:
    - uint8_t
    - uint8_t
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 455
    functionName: ospf_register_opaque_functab
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 6
    functionsReached:
    - XCALLOC::XCALLOC
    - flog_warn
    - ospf_delete_opaque_functab::ospf_delete_opaque_functab
    - ALL_LIST_ELEMENTS_RO
    - listnode_add
    - ospf_get_opaque_funclist
    - free_opaque_info_per_type
    - XFREE
    - listnode_delete
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int ospf_register_opaque_functab(\n\tuint8_t lsa_type, uint8_t opaque_type,\n\tint
      (*new_if_hook)(struct interface *ifp),\n\tint (*del_if_hook)(struct interface
      *ifp),\n\tvoid (*ism_change_hook)(struct ospf_interface *oi, int old_status),\n\tvoid
      (*nsm_change_hook)(struct ospf_neighbor *nbr, int old_status),\n\tvoid (*config_write_router)(struct
      vty *vty),\n\tvoid (*config_write_if)(struct vty *vty, struct interface *ifp),\n\tvoid
      (*config_write_debug)(struct vty *vty),\n\tvoid (*show_opaque_info)(struct vty
      *vty, struct json_object *json,\n\t\t\t\t struct ospf_lsa *lsa),\n\tint (*lsa_originator)(void
      *arg),\n\tstruct ospf_lsa *(*lsa_refresher)(struct ospf_lsa *lsa),\n\tint (*new_lsa_hook)(struct
      ospf_lsa *lsa),\n\tint (*del_lsa_hook)(struct ospf_lsa *lsa))"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_opaque.c:534,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_opaque.c:537,1
    - Dst: oi::oi
      Src: /src/frr/ospfd/ospf_opaque.c:539,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_opaque.c:540,1
    - Dst: area::area
      Src: /src/frr/ospfd/ospf_opaque.c:543,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_opaque.c:544,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:547,1
    - Dst: area::area
      Src: /src/frr/ospfd/ospf_opaque.c:548,1
    - Dst: area::area
      Src: /src/frr/ospfd/ospf_opaque.c:548,1
    - Dst: free_opaque_info_per_type
      Src: /src/frr/ospfd/ospf_opaque.c:549,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_opaque.c:554,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:557,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_opaque.c:558,1
    - Dst: free_opaque_info_per_type
      Src: /src/frr/ospfd/ospf_opaque.c:559,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_opaque.c:564,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:565,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:565,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_opaque.c:565,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_opaque.c:569,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 2
    argNames:
    - functab
    - new
    argTypes:
    - struct ospf_opaque_functab*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 574
    functionName: register_opaque_info_per_type
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - ospf_lookup_by_vrf_id
    - flog_warn
    - area::area
    - XCALLOC
    - GET_OPAQUE_TYPE
    - oi::oi
    - listnode_add
    - free_opaque_info_per_type
    - list_new
    - data::data
    - ntohl
    linkageType: ''
    returnType: struct opaque_info_per_type
    signature: "struct opaque_info_per_type *\nregister_opaque_info_per_type(struct
      ospf_opaque_functab *functab,\n\t\t\t      struct ospf_lsa *new)"
  - BBCount: 97
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:585,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:609,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_opaque.c:615,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_opaque.c:617,1
    - Dst: free_opaque_info_per_type_del
      Src: /src/frr/ospfd/ospf_opaque.c:621,1
    - Dst: free_opaque_info_per_type
      Src: /src/frr/ospfd/ospf_opaque.c:623,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:635,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:635,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:642,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:650,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:655,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:657,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:665,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:671,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_opaque.c:684,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:687,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:687,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_opaque.c:687,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_opaque.c:689,1
    - Dst: listnode_add::listnode_add
      Src: /src/frr/ospfd/ospf_opaque.c:689,1
    - Dst: free_opaque_info_per_id
      Src: /src/frr/ospfd/ospf_opaque.c:696,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_opaque.c:700,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_opaque.c:702,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_opaque.c:703,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:708,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:713,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:713,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:715,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_opaque.c:728,1
    - Dst: ospf_opaque_functab_lookup
      Src: /src/frr/ospfd/ospf_opaque.c:728,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_opaque.c:731,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:731,1
    - Dst: register_opaque_info_per_type
      Src: /src/frr/ospfd/ospf_opaque.c:732,1
    - Dst: register_opaque_info_per_id
      Src: /src/frr/ospfd/ospf_opaque.c:735,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:744,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:746,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_opaque.c:753,1
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_opaque.c:759,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:763,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:769,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:771,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:773,1
    - Dst: ospf_renegotiate_optional_capabilities
      Src: /src/frr/ospfd/ospf_opaque.c:774,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_opaque.c:779,1
    - Dst: capability_opaque
      Src: /src/frr/ospfd/ospf_opaque.c:785,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_opaque.c:788,1
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_opaque.c:795,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:798,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:800,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:802,1
    - Dst: ospf_renegotiate_optional_capabilities
      Src: /src/frr/ospfd/ospf_opaque.c:803,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_opaque.c:808,1
    - Dst: no_capability_opaque
      Src: /src/frr/ospfd/ospf_opaque.c:815,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:820,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:821,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:822,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:823,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:838,1
    - Dst: ospf_opaque_new_if
      Src: /src/frr/ospfd/ospf_opaque.c:979,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:985,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:989,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:993,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:997,1
    - Dst: ospf_opaque_del_if
      Src: /src/frr/ospfd/ospf_opaque.c:1005,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1011,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1015,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1019,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1023,1
    - Dst: ospf_opaque_ism_change
      Src: /src/frr/ospfd/ospf_opaque.c:1031,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1036,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1039,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1042,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1045,1
    - Dst: ospf_opaque_nsm_change
      Src: /src/frr/ospfd/ospf_opaque.c:1050,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1055,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1056,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1059,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1060,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1063,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1066,1
    - Dst: ospf_opaque_lsa_originate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1070,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1084,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1087,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1090,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1093,1
    - Dst: ospf_opaque_config_write_router
      Src: /src/frr/ospfd/ospf_opaque.c:1099,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1103,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1104,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1107,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1110,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1113,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1116,1
    - Dst: ospf_opaque_config_write_if
      Src: /src/frr/ospfd/ospf_opaque.c:1121,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1126,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1129,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1132,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1135,1
    - Dst: ospf_opaque_config_write_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1140,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1145,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1148,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1151,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1154,1
    - Dst: show_opaque_info_detail
      Src: /src/frr/ospfd/ospf_opaque.c:1159,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1165,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:1166,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1173,1
    - Dst: ospf_opaque_type_name
      Src: /src/frr/ospfd/ospf_opaque.c:1174,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1175,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1177,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_opaque.c:1178,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_opaque.c:1179,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_opaque.c:1183,1
    - Dst: ospf_opaque_type_name
      Src: /src/frr/ospfd/ospf_opaque.c:1185,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_opaque.c:1186,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_opaque.c:1187,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_opaque.c:1188,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_opaque.c:1189,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospfd/ospf_opaque.c:1190,1
    - Dst: asnprintfrr
      Src: /src/frr/ospfd/ospf_opaque.c:1193,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_opaque.c:1196,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_opaque.c:1198,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1202,1
    - Dst: ospf_opaque_type_name
      Src: /src/frr/ospfd/ospf_opaque.c:1203,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1204,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1206,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_opaque.c:1207,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_opaque.c:1208,1
    - Dst: ospf_opaque_functab_lookup
      Src: /src/frr/ospfd/ospf_opaque.c:1213,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_opaque.c:1224,1
    - Dst: show_opaque_info_detail
      Src: /src/frr/ospfd/ospf_opaque.c:1226,1
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1240,1
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1244,1
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1248,1
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1252,1
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1270,1
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1274,1
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1278,1
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1282,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1307,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1309,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1314,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1316,1
    - Dst: ospf_opaque_lsa_reoriginate_resume
      Src: /src/frr/ospfd/ospf_opaque.c:1327,1
    - Dst: ospf_opaque_lsa_reoriginate_resume
      Src: /src/frr/ospfd/ospf_opaque.c:1328,1
    - Dst: ospf_opaque_lsa_reoriginate_resume
      Src: /src/frr/ospfd/ospf_opaque.c:1329,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1334,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1335,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1338,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_opaque.c:1342,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1347,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1348,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1356,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_opaque.c:1360,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1365,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1374,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_opaque.c:1378,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1387,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1388,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1389,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1406,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1412,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1413,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1414,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1431,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1437,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1438,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1439,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1456,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1470,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1474,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1475,1
    - Dst: opaque_lsa_originate_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1477,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1484,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1488,1
    - Dst: opaque_lsa_originate_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1492,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1499,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1503,1
    - Dst: opaque_lsa_originate_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1506,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1522,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1533,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_opaque.c:1552,1
    - Dst: lsa::lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1553,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_opaque.c:1557,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1558,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1561,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1561,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:1562,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1562,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:1565,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:1566,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_opaque.c:1567,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_opaque.c:1568,1
    - Dst: register_opaque_lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1571,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1572,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1582,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1584,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1592,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:1598,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1601,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1607,1
    - Dst: ospf_refresher_register_lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1612,1
    - Dst: lsa::lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1613,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:1625,1
    - Dst: ospf_opaque_functab_lookup
      Src: /src/frr/ospfd/ospf_opaque.c:1627,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1637,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_opaque.c:1640,1
    - Dst: ospf_lsa_flush
      Src: /src/frr/ospfd/ospf_opaque.c:1641,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1680,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1685,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1686,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1687,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1690,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1691,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1693,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1696,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1703,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1709,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1713,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1714,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1716,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1726,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1731,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1732,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1734,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1754,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1756,1
    - Dst: pseudo_lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1761,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:1764,1
    - Dst: ospf_opaque_functab_lookup
      Src: /src/frr/ospfd/ospf_opaque.c:1766,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1767,1
    - Dst: register_opaque_info_per_type
      Src: /src/frr/ospfd/ospf_opaque.c:1773,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1775,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1785,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1788,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1788,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1802,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1805,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1805,1
    - Dst: OSPF_OPAQUE_TIMER_ON
      Src: /src/frr/ospfd/ospf_opaque.c:1807,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_opaque.c:1827,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_opaque.c:1828,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1840,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1844,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1849,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1850,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1854,1
    - Dst: ospf_if_is_enable
      Src: /src/frr/ospfd/ospf_opaque.c:1855,1
    - Dst: ospf_nbr_count_opaque_capable
      Src: /src/frr/ospfd/ospf_opaque.c:1856,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1858,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1867,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1869,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1884,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1888,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1894,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1900,1
    - Dst: ospf_nbr_count_opaque_capable
      Src: /src/frr/ospfd/ospf_opaque.c:1901,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1905,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1907,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1916,1
    - Dst: ospf_opaque_type11_lsa_reoriginate_timer
      Src: /src/frr/ospfd/ospf_opaque.c:1923,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1929,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1933,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1938,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1942,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1944,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1953,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1960,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:1968,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:1969,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1970,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1971,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1976,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1977,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1982,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1985,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1985,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:1986,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1986,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1987,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_opaque.c:1994,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:1997,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_opaque.c:2000,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2003,1
    - Dst: ospf_lsa_refresh_delay
      Src: /src/frr/ospfd/ospf_opaque.c:2008,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:2011,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:2014,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:2014,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:2015,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:2015,1
    - Dst: OSPF_OPAQUE_TIMER_ON
      Src: /src/frr/ospfd/ospf_opaque.c:2017,1
    - Dst: ospf_opaque_lsa_refresh_timer
      Src: /src/frr/ospfd/ospf_opaque.c:2023,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:2030,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:2032,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_opaque.c:2035,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_opaque.c:2036,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:2040,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:2047,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:2049,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:2050,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2051,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:2052,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2057,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:2058,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_opaque.c:2062,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_opaque.c:2066,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_opaque.c:2067,1
    - Dst: ospf_lsa_checksum
      Src: /src/frr/ospfd/ospf_opaque.c:2069,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_opaque.c:2081,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2084,1
    - Dst: ospf_lsa_flush
      Src: /src/frr/ospfd/ospf_opaque.c:2090,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_opaque.c:2093,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:2096,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:2099,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:2099,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:2100,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:2100,1
    - Dst: free_opaque_info_per_id
      Src: /src/frr/ospfd/ospf_opaque.c:2103,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:2114,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:2118,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_opaque.c:2130,1
    - Dst: ospf_lsa_install
      Src: /src/frr/ospfd/ospf_opaque.c:2131,1
    - Dst: ospf_lsa_maxage
      Src: /src/frr/ospfd/ospf_opaque.c:2134,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_opaque.c:2139,1
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_opaque.c:2142,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2145,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:2155,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2162,1
    CyclomaticComplexity: 180
    EdgeCount: 180
    ICount: 492
    argCount: 2
    argNames:
    - oipt
    - cleanup_owner
    argTypes:
    - struct opaque_info_per_type*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 576
    functionDepth: 3
    functionLinenumber: 576
    functionLinenumberEnd: 2166
    functionName: free_opaque_info_per_type
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 3
    functionsReached:
    - ntohs
    - ospf_lsa_maxage
    - ospf_ls_retransmit_delete_nbr_area
    - json_object_boolean_add
    - flog_warn
    - XCALLOC
    - opaque_lsa_ism_change_callback
    - ospf_lsa_flush
    - if
    - capability_opaque
    - ospf_opaque_functab_lookup
    - ospf_opaque_lsa_reoriginate_schedule
    - opaque_lsa_del_if_callback
    - ospf_opaque_config_write_if
    - ospf_nbr_count_opaque_capable
    - oi_to_top
    - EVENT_OFF
    - lookup_opaque_info_by_type
    - free_opaque_info_per_id
    - free_opaque_info_per_type_del
    - IF_NAME
    - ospf_refresher_register_lsa
    - ospf_ls_retransmit_delete_nbr_as
    - GET_OPAQUE_TYPE
    - lsa::lsa
    - list_isempty
    - ALL_LIST_ELEMENTS
    - ospf_opaque_type_name
    - htons
    - VTY_DECLVAR_INSTANCE_CONTEXT
    - ospf_lookup_by_vrf_id
    - ospf_opaque_del_if
    - register_opaque_info_per_id
    - ospf_opaque_lsa_refresh_timer
    - event_add_timer_msec
    - VALID_OPAQUE_INFO_LEN
    - DEFUN
    - ospf_lsa_install
    - ospf_lsa_checksum
    - ospf_lsa_refresh_delay
    - stream_pnt
    - opaque_lsa_config_write_debug_callback
    - show_opaque_info_detail
    - lsa_seqnum_increment
    - ospf_opaque_lsa_reoriginate_resume
    - opaque_lsa_new_if_callback
    - opaque_lsa_originate_callback
    - ospf_opaque_ism_change
    - lookup_opaque_info_by_id
    - ospf_opaque_new_if
    - json_object_string_add
    - data::data
    - ospf_renegotiate_optional_capabilities
    - install_element
    - ospf_opaque_config_write_debug
    - register_opaque_info_per_type
    - opaque_lsa_config_write_if_callback
    - asnprintfrr
    - ospf_flood_through_as
    - zlog_debug
    - GET_OPAQUE_ID
    - new_lsa_callback
    - vty_out
    - register_opaque_lsa
    - ospf_opaque_lsa_refresh_schedule
    - json_object_int_add
    - ospf_if_is_enable
    - XFREE
    - no_capability_opaque
    - opaque_lsa_config_write_router_callback
    - ospf_lsa_lock
    - ospf_opaque_type11_lsa_reoriginate_timer
    - SET_FLAG
    - out
    - opaque_lsa_nsm_change_callback
    - htonl
    - ospf_flood_through_area
    - IS_LSA_SELF
    - IS_DEBUG_OSPF
    - ospf_opaque_lsa_originate_schedule
    - EVENT_ARG
    - ntohl
    - SET_OPAQUE_LSID
    - ospf_opaque_config_write_router
    - del_lsa_callback
    - UNSET_FLAG
    - listnode_delete
    - ospf_opaque_lsa_flush_schedule
    - ospf_opaque_nsm_change
    - OSPF_OPAQUE_TIMER_ON
    - CHECK_FLAG
    - ospf_lsa_unlock
    - free_opaque_info_per_type
    - pseudo_lsa
    - listnode_add::listnode_add
    linkageType: ''
    returnType: void
    signature: "void free_opaque_info_per_type(struct opaque_info_per_type *oipt,\n\t\t\t\t
      \     bool cleanup_owner)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:820,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:821,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:822,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_opaque.c:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 825
    functionName: ospf_opaque_register_vty
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_register_vty(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:838,1
    - Dst: ospf_opaque_new_if
      Src: /src/frr/ospfd/ospf_opaque.c:979,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:985,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:989,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:993,1
    - Dst: opaque_lsa_new_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:997,1
    - Dst: ospf_opaque_del_if
      Src: /src/frr/ospfd/ospf_opaque.c:1005,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1011,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1015,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1019,1
    - Dst: opaque_lsa_del_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1023,1
    - Dst: ospf_opaque_ism_change
      Src: /src/frr/ospfd/ospf_opaque.c:1031,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1036,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1039,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1042,1
    - Dst: opaque_lsa_ism_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1045,1
    - Dst: ospf_opaque_nsm_change
      Src: /src/frr/ospfd/ospf_opaque.c:1050,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1055,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1056,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1059,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1060,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1063,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1066,1
    - Dst: ospf_opaque_lsa_originate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1070,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1084,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1087,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1090,1
    - Dst: opaque_lsa_nsm_change_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1093,1
    - Dst: ospf_opaque_config_write_router
      Src: /src/frr/ospfd/ospf_opaque.c:1099,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1103,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1104,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1107,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1110,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1113,1
    - Dst: opaque_lsa_config_write_router_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1116,1
    - Dst: ospf_opaque_config_write_if
      Src: /src/frr/ospfd/ospf_opaque.c:1121,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1126,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1129,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1132,1
    - Dst: opaque_lsa_config_write_if_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1135,1
    - Dst: ospf_opaque_config_write_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1140,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1145,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1148,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1151,1
    - Dst: opaque_lsa_config_write_debug_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1154,1
    - Dst: show_opaque_info_detail
      Src: /src/frr/ospfd/ospf_opaque.c:1159,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1165,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:1166,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1173,1
    - Dst: ospf_opaque_type_name
      Src: /src/frr/ospfd/ospf_opaque.c:1174,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1175,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_opaque.c:1177,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_opaque.c:1178,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_opaque.c:1179,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_opaque.c:1183,1
    - Dst: ospf_opaque_type_name
      Src: /src/frr/ospfd/ospf_opaque.c:1185,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_opaque.c:1186,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_opaque.c:1187,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_opaque.c:1188,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_opaque.c:1189,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospfd/ospf_opaque.c:1190,1
    - Dst: asnprintfrr
      Src: /src/frr/ospfd/ospf_opaque.c:1193,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_opaque.c:1196,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_opaque.c:1198,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1202,1
    - Dst: ospf_opaque_type_name
      Src: /src/frr/ospfd/ospf_opaque.c:1203,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1204,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1206,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_opaque.c:1207,1
    - Dst: VALID_OPAQUE_INFO_LEN
      Src: /src/frr/ospfd/ospf_opaque.c:1208,1
    - Dst: ospf_opaque_functab_lookup
      Src: /src/frr/ospfd/ospf_opaque.c:1213,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 66
    argCount: 2
    argNames:
    - funclist
    - ifp
    argTypes:
    - struct list*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 831
    functionDepth: 2
    functionLinenumber: 831
    functionLinenumberEnd: 1218
    functionName: opaque_lsa_new_if_callback
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 2
    functionsReached:
    - out
    - ospf_opaque_ism_change
    - opaque_lsa_nsm_change_callback
    - ntohs
    - ospf_opaque_new_if
    - json_object_string_add
    - ospf_opaque_config_write_debug
    - json_object_boolean_add
    - ospf_opaque_del_if
    - ospf_opaque_lsa_originate_schedule
    - opaque_lsa_config_write_if_callback
    - opaque_lsa_ism_change_callback
    - asnprintfrr
    - zlog_debug
    - VALID_OPAQUE_INFO_LEN
    - GET_OPAQUE_ID
    - ospf_opaque_functab_lookup
    - opaque_lsa_del_if_callback
    - vty_out
    - ospf_opaque_config_write_router
    - ospf_opaque_config_write_if
    - oi_to_top
    - json_object_int_add
    - XFREE
    - ospf_opaque_nsm_change
    - opaque_lsa_config_write_debug_callback
    - GET_OPAQUE_TYPE
    - opaque_lsa_config_write_router_callback
    - CHECK_FLAG
    - show_opaque_info_detail
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - ospf_opaque_type_name
    - opaque_lsa_new_if_callback
    linkageType: ''
    returnType: int
    signature: "int opaque_lsa_new_if_callback(struct list *funclist,\n\t\t\t\t      struct
      interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_opaque.c:1224,1
    - Dst: show_opaque_info_detail
      Src: /src/frr/ospfd/ospf_opaque.c:1226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1220
    functionDepth: 1
    functionLinenumber: 1220
    functionLinenumberEnd: 1228
    functionName: ospf_opaque_lsa_dump
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - stream_pnt
    - show_opaque_info_detail
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_lsa_dump(struct stream *s, uint16_t length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1240,1
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1244,1
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1248,1
    - Dst: new_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1252,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1230
    functionDepth: 0
    functionLinenumber: 1230
    functionLinenumberEnd: 1258
    functionName: ospf_opaque_lsa_install_hook
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - new_lsa_callback
    linkageType: ''
    returnType: int
    signature: int ospf_opaque_lsa_install_hook(struct ospf_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1270,1
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1274,1
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1278,1
    - Dst: del_lsa_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1282,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1260
    functionDepth: 0
    functionLinenumber: 1260
    functionLinenumberEnd: 1288
    functionName: ospf_opaque_lsa_delete_hook
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - del_lsa_callback
    linkageType: ''
    returnType: int
    signature: int ospf_opaque_lsa_delete_hook(struct ospf_lsa *lsa)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1307,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1309,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1314,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1316,1
    - Dst: ospf_opaque_lsa_reoriginate_resume
      Src: /src/frr/ospfd/ospf_opaque.c:1327,1
    - Dst: ospf_opaque_lsa_reoriginate_resume
      Src: /src/frr/ospfd/ospf_opaque.c:1328,1
    - Dst: ospf_opaque_lsa_reoriginate_resume
      Src: /src/frr/ospfd/ospf_opaque.c:1329,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1334,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1335,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1338,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_opaque.c:1342,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1347,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1348,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1356,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_opaque.c:1360,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1365,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1374,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_opaque.c:1378,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1387,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1388,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1389,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1406,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1412,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1413,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1414,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1431,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1437,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1438,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1439,1
    - Dst: ospf_opaque_lsa_reoriginate_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1456,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 57
    argCount: 2
    argNames:
    - oi
    - delay0
    argTypes:
    - struct ospf_interface*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1299
    functionDepth: 1
    functionLinenumber: 1299
    functionLinenumberEnd: 1464
    functionName: ospf_opaque_lsa_originate_schedule
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 2
    functionsReached:
    - list_isempty
    - CHECK_FLAG
    - oi_to_top
    - event_add_timer_msec
    - zlog_debug
    - ALL_LIST_ELEMENTS
    - ospf_opaque_lsa_reoriginate_resume
    - ospf_opaque_lsa_reoriginate_schedule
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_lsa_originate_schedule(struct ospf_interface *oi,
      int *delay0)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1470,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1474,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1475,1
    - Dst: opaque_lsa_originate_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1466
    functionDepth: 1
    functionLinenumber: 1466
    functionLinenumberEnd: 1478
    functionName: ospf_opaque_type9_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - opaque_lsa_originate_callback
    - zlog_debug
    - IF_NAME
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type9_lsa_originate(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1484,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1488,1
    - Dst: opaque_lsa_originate_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1493
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1493
    functionName: ospf_opaque_type10_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - opaque_lsa_originate_callback
    - zlog_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type10_lsa_originate(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1499,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1503,1
    - Dst: opaque_lsa_originate_callback
      Src: /src/frr/ospfd/ospf_opaque.c:1506,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1495
    functionDepth: 1
    functionLinenumber: 1495
    functionLinenumberEnd: 1507
    functionName: ospf_opaque_type11_lsa_originate
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - opaque_lsa_originate_callback
    - zlog_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type11_lsa_originate(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1522,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1533,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - listtop
    - arg
    argTypes:
    - struct list*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1541
    functionName: ospf_opaque_lsa_reoriginate_resume
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_lsa_reoriginate_resume(struct list *listtop, void
      *arg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_opaque.c:1552,1
    - Dst: lsa::lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1553,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_opaque.c:1557,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1558,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1561,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1561,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:1562,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1562,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:1565,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:1566,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_opaque.c:1567,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_opaque.c:1568,1
    - Dst: register_opaque_lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1571,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1572,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1582,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1584,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1592,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:1598,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1601,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1607,1
    - Dst: ospf_refresher_register_lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1612,1
    - Dst: lsa::lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1613,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 50
    argCount: 2
    argNames:
    - lsa
    - rt_recalc
    argTypes:
    - struct ospf_lsa*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1543
    functionDepth: 3
    functionLinenumber: 1543
    functionLinenumberEnd: 1617
    functionName: ospf_opaque_lsa_install
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - ospf_refresher_register_lsa
    - IS_DEBUG_OSPF
    - lsa::lsa
    - GET_OPAQUE_TYPE
    - register_opaque_lsa
    - flog_warn
    - ospf_lookup_by_vrf_id
    - GET_OPAQUE_ID
    - ospf_lsa_lock
    - ospf_lsa_unlock
    - lookup_opaque_info_by_id
    - oi_to_top
    - zlog_debug
    - lookup_opaque_info_by_type
    - ntohl
    - IS_LSA_SELF
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_opaque_lsa_install(struct ospf_lsa *lsa, int
      rt_recalc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:1625,1
    - Dst: ospf_opaque_functab_lookup
      Src: /src/frr/ospfd/ospf_opaque.c:1627,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1637,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_opaque.c:1640,1
    - Dst: ospf_lsa_flush
      Src: /src/frr/ospfd/ospf_opaque.c:1641,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1619
    functionDepth: 1
    functionLinenumber: 1619
    functionLinenumberEnd: 1646
    functionName: ospf_opaque_lsa_refresh
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 2
    functionsReached:
    - ospf_lookup_by_vrf_id
    - htons
    - zlog_debug
    - ospf_lsa_flush
    - ospf_opaque_functab_lookup
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_opaque_lsa_refresh(struct ospf_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - L
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1653
    functionDepth: 0
    functionLinenumber: 1653
    functionLinenumberEnd: 1655
    functionName: OSPF_OPAQUE_TIMER_ON
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_OPAQUE_TIMER_ON(T, F, L, V)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1680,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1685,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1686,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1687,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1690,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1691,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1693,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1696,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1703,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1709,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1713,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1714,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1716,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1726,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1731,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_opaque.c:1732,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1734,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1754,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1756,1
    - Dst: pseudo_lsa
      Src: /src/frr/ospfd/ospf_opaque.c:1761,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:1764,1
    - Dst: ospf_opaque_functab_lookup
      Src: /src/frr/ospfd/ospf_opaque.c:1766,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1767,1
    - Dst: register_opaque_info_per_type
      Src: /src/frr/ospfd/ospf_opaque.c:1773,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1775,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1785,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1788,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1788,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1802,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1805,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1805,1
    - Dst: OSPF_OPAQUE_TIMER_ON
      Src: /src/frr/ospfd/ospf_opaque.c:1807,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 91
    argCount: 3
    argNames:
    - lsa_type_dependent
    - lsa_type
    - opaque_type
    argTypes:
    - void*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1664
    functionDepth: 2
    functionLinenumber: 1664
    functionLinenumberEnd: 1811
    functionName: ospf_opaque_lsa_reoriginate_schedule
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 6
    functionsReached:
    - flog_warn
    - GET_OPAQUE_TYPE
    - register_opaque_info_per_type
    - OSPF_OPAQUE_TIMER_ON
    - list_isempty
    - CHECK_FLAG
    - oi_to_top
    - zlog_debug
    - pseudo_lsa
    - lookup_opaque_info_by_type
    - ntohl
    - ospf_opaque_functab_lookup
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void ospf_opaque_lsa_reoriginate_schedule(void *lsa_type_dependent,\n\t\t\t\t\t
      \ uint8_t lsa_type, uint8_t opaque_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_opaque.c:1827,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_opaque.c:1828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - oi
    - area
    - lsa_type
    - opaque_type
    argTypes:
    - struct ospf_interface*
    - struct ospf_area*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1813
    functionDepth: 1
    functionLinenumber: 1813
    functionLinenumberEnd: 1831
    functionName: pseudo_lsa
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 2
    functionsReached:
    - SET_OPAQUE_LSID
    - htonl
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *pseudo_lsa(struct ospf_interface *oi,\n\t\t\t\t   struct
      ospf_area *area, uint8_t lsa_type,\n\t\t\t\t   uint8_t opaque_type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1840,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1844,1
    - Dst: oi_to_top
      Src: /src/frr/ospfd/ospf_opaque.c:1849,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1850,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1854,1
    - Dst: ospf_if_is_enable
      Src: /src/frr/ospfd/ospf_opaque.c:1855,1
    - Dst: ospf_nbr_count_opaque_capable
      Src: /src/frr/ospfd/ospf_opaque.c:1856,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1858,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1867,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_opaque.c:1869,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1833
    functionDepth: 1
    functionLinenumber: 1833
    functionLinenumberEnd: 1872
    functionName: ospf_opaque_type9_lsa_reoriginate_timer
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - CHECK_FLAG
    - ospf_nbr_count_opaque_capable
    - ospf_if_is_enable
    - oi_to_top
    - zlog_debug
    - EVENT_ARG
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type9_lsa_reoriginate_timer(struct event *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1884,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1888,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1894,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_opaque.c:1900,1
    - Dst: ospf_nbr_count_opaque_capable
      Src: /src/frr/ospfd/ospf_opaque.c:1901,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1905,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1907,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1916,1
    - Dst: ospf_opaque_type11_lsa_reoriginate_timer
      Src: /src/frr/ospfd/ospf_opaque.c:1923,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:1929,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1933,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1938,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_opaque.c:1942,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1944,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1953,1
    - Dst: ospf_opaque_lsa_refresh_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:1960,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:1968,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:1969,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1970,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1971,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:1976,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1977,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:1982,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:1985,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1985,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:1986,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:1986,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:1987,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_opaque.c:1994,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:1997,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_opaque.c:2000,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2003,1
    - Dst: ospf_lsa_refresh_delay
      Src: /src/frr/ospfd/ospf_opaque.c:2008,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:2011,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_opaque.c:2014,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:2014,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_opaque.c:2015,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_opaque.c:2015,1
    - Dst: OSPF_OPAQUE_TIMER_ON
      Src: /src/frr/ospfd/ospf_opaque.c:2017,1
    - Dst: ospf_opaque_lsa_refresh_timer
      Src: /src/frr/ospfd/ospf_opaque.c:2023,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_opaque.c:2030,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_opaque.c:2032,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_opaque.c:2035,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_opaque.c:2036,1
    - Dst: ospf_opaque_lsa_flush_schedule
      Src: /src/frr/ospfd/ospf_opaque.c:2040,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_opaque.c:2047,1
    - Dst: lookup_opaque_info_by_type
      Src: /src/frr/ospfd/ospf_opaque.c:2049,1
    - Dst: lookup_opaque_info_by_id
      Src: /src/frr/ospfd/ospf_opaque.c:2050,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2051,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:2052,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2057,1
    - Dst: out
      Src: /src/frr/ospfd/ospf_opaque.c:2058,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_opaque.c:2062,1
    - Dst: lsa_seqnum_increment
      Src: /src/frr/ospfd/ospf_opaque.c:2066,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_opaque.c:2067,1
    - Dst: ospf_lsa_checksum
      Src: /src/frr/ospfd/ospf_opaque.c:2069,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_opaque.c:2081,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_opaque.c:2084,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 24
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 1874
    functionDepth: 2
    functionLinenumber: 1874
    functionLinenumberEnd: 2087
    functionName: ospf_opaque_type10_lsa_reoriginate_timer
    functionSourceFile: /src/frr/ospfd/ospf_opaque.c
    functionUses: 0
    functionsReached:
    - out
    - htons
    - lookup_opaque_info_by_id
    - ospf_ls_retransmit_delete_nbr_area
    - flog_warn
    - ospf_lookup_by_vrf_id
    - ospf_opaque_lsa_refresh_timer
    - zlog_debug
    - EVENT_ARG
    - if
    - ntohl
    - GET_OPAQUE_ID
    - ospf_nbr_count_opaque_capable
    - ospf_lsa_checksum
    - ospf_opaque_lsa_refresh_schedule
    - ospf_lsa_refresh_delay
    - lookup_opaque_info_by_type
    - ospf_opaque_lsa_flush_schedule
    - ospf_ls_retransmit_delete_nbr_as
    - GET_OPAQUE_TYPE
    - OSPF_OPAQUE_TIMER_ON
    - CHECK_FLAG
    - ospf_opaque_type11_lsa_reoriginate_timer
    - lsa_seqnum_increment
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ospf_opaque_type10_lsa_reoriginate_timer(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ospfd/ospf_routemap_nb_config.c:30,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ospfd/ospf_routemap_nb_config.c:31,1
    - Dst: generic_set_add
      Src: /src/frr/ospfd/ospf_routemap_nb_config.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 46
    functionName: lib_route_map_entry_set_action_rmap_set_action_metric_type_modify
    functionSourceFile: /src/frr/ospfd/ospf_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_metric_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/ospfd/ospf_routemap_nb_config.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: lib_route_map_entry_set_action_rmap_set_action_metric_type_destroy
    functionSourceFile: /src/frr/ospfd/ospf_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_metric_type_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - N
    - ','
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: LSDB_LOOP
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LSDB_LOOP(T, N, L)
  - 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: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: ROUTER_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTER_LSDB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: NETWORK_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NETWORK_LSDB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: SUMMARY_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUMMARY_LSDB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: ASBR_SUMMARY_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASBR_SUMMARY_LSDB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: EXTERNAL_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXTERNAL_LSDB(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: NSSA_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NSSA_LSDB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: OPAQUE_LINK_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPAQUE_LINK_LSDB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: OPAQUE_AREA_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPAQUE_AREA_LSDB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: OPAQUE_AS_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPAQUE_AS_LSDB(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: AREA_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AREA_LSDB(A,T)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - O
    - ','
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: AS_LSDB
    functionSourceFile: /src/frr/ospfd/ospf_lsdb.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AS_LSDB(O,T)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_route_string
      Src: /src/frr/ospfd/ospf_dump.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - route_type
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: ospf_redist_string
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - zebra_route_string
    linkageType: ''
    returnType: char
    signature: char *ospf_redist_string(unsigned int route_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_dump.c:83,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 87
    functionName: ospf_area_name_string
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - ntohl
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf_area_name_string(struct ospf_area *area)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:101,1
    - Dst: ospf_area_name_string
      Src: /src/frr/ospfd/ospf_dump.c:102,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:105,1
    - Dst: ospf_area_name_string
      Src: /src/frr/ospfd/ospf_dump.c:106,1
    - Dst: ospf_area_name_string
      Src: /src/frr/ospfd/ospf_dump.c:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 113
    functionName: ospf_area_desc_string
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - ospf_area_name_string
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf_area_desc_string(struct ospf_area *area)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_dump.c:129,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 134
    functionName: ospf_if_name_string
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - ntohl
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf_if_name_string(struct ospf_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_dump.c:141,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_dump.c:141,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_dump.c:143,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_dump.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 149
    functionName: ospf_nbr_ism_state
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - DR
    - BDR
    linkageType: ''
    returnType: int
    signature: int ospf_nbr_ism_state(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:162,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:163,1
    - Dst: ospf_nbr_ism_state
      Src: /src/frr/ospfd/ospf_dump.c:167,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:169,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:170,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - nbr
    - buf
    - size
    argTypes:
    - struct ospf_neighbor*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 172
    functionName: ospf_nbr_ism_state_message
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 1
    functionsReached:
    - lookup_msg
    - ospf_nbr_ism_state
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void ospf_nbr_ism_state_message(struct ospf_neighbor *nbr, char *buf,\n\t\t\t\tsize_t
      size)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_dump.c:186,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:221,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:223,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:225,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:227,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:229,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:231,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:233,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 3
    argNames:
    - t
    - buf
    - size
    argTypes:
    - struct timeval*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 236
    functionName: ospf_timeval_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - snprintf
    - memset
    linkageType: ''
    returnType: char
    signature: char *ospf_timeval_dump(struct timeval *t, char *buf, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_dump.c:244,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_dump.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - t
    - buf
    - size
    argTypes:
    - struct event*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 246
    functionName: ospf_timer_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - ospf_timeval_dump
    - monotime_until
    linkageType: ''
    returnType: char
    signature: char *ospf_timer_dump(struct event *t, char *buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:253,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:255,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:256,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:257,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:257,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:258,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_dump.c:259,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:260,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:261,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_dump.c:262,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:263,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:264,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:267,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 270
    functionName: ospf_packet_hello_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - ospf_options_dump
    - ntohs
    - zlog_debug
    - stream_pnt
    - ntohl
    linkageType: ''
    returnType: void
    signature: void ospf_packet_hello_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - flags
    - buf
    - size
    argTypes:
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 279
    functionName: ospf_dd_flags_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf_dd_flags_dump(uint8_t flags, char *buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - flags
    - buf
    - size
    argTypes:
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 289
    functionName: ospf_router_lsa_flags_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf_router_lsa_flags_dump(uint8_t flags, char *buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:298,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:300,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:301,1
    - Dst: ospf_router_lsa_flags_dump
      Src: /src/frr/ospfd/ospf_dump.c:302,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:303,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:303,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:309,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:310,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:311,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:312,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:313,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 315
    functionName: ospf_router_lsa_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - ntohs
    - ospf_router_lsa_flags_dump
    - zlog_debug
    - stream_pnt
    linkageType: ''
    returnType: void
    signature: void ospf_router_lsa_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:322,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:324,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:332,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:333,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 337
    functionName: ospf_network_lsa_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - stream_pnt
    linkageType: ''
    returnType: void
    signature: void ospf_network_lsa_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:343,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:345,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:346,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:347,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_dump.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 348
    functionName: ospf_summary_lsa_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - stream_pnt
    - GET_METRIC
    linkageType: ''
    returnType: void
    signature: void ospf_summary_lsa_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:357,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:358,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:359,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:365,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_dump.c:366,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_dump.c:367,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:368,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:369,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_dump.c:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 372
    functionName: ospf_as_external_lsa_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - IS_EXTERNAL_METRIC
    - GET_METRIC
    - zlog_debug
    - stream_pnt
    - ntohl
    linkageType: ''
    returnType: void
    signature: void ospf_as_external_lsa_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:379,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:384,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_dump.c:385,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_dump.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 390
    functionName: ospf_lsa_header_list_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - stream_pnt
    - ospf_lsa_header_dump
    - stream_forward_getp
    linkageType: ''
    returnType: void
    signature: void ospf_lsa_header_list_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_dump.c:399,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:400,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:402,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:403,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:403,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:404,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_dump.c:405,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:406,1
    - Dst: ospf_dd_flags_dump
      Src: /src/frr/ospfd/ospf_dump.c:407,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:408,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_dump.c:409,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_dump.c:413,1
    - Dst: ospf_lsa_header_list_dump
      Src: /src/frr/ospfd/ospf_dump.c:415,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_dump.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 418
    functionName: ospf_packet_db_desc_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - stream_set_getp
    - stream_forward_getp
    - ospf_options_dump
    - ospf_lsa_header_list_dump
    - ntohs
    - zlog_debug
    - ospf_dd_flags_dump
    - stream_pnt
    - ntohl
    - stream_get_getp
    linkageType: ''
    returnType: void
    signature: void ospf_packet_db_desc_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_dump.c:428,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:432,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:433,1
    - Dst: stream_getl
      Src: /src/frr/ospfd/ospf_dump.c:437,1
    - Dst: stream_get_ipv4
      Src: /src/frr/ospfd/ospf_dump.c:438,1
    - Dst: stream_get_ipv4
      Src: /src/frr/ospfd/ospf_dump.c:439,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:441,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:442,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:443,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_dump.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 447
    functionName: ospf_packet_ls_req_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - stream_set_getp
    - stream_get_ipv4
    - zlog_debug
    - stream_getl
    - stream_get_getp
    linkageType: ''
    returnType: void
    signature: void ospf_packet_ls_req_dump(struct stream *s, uint16_t length)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_dump.c:458,1
    - Dst: stream_getl
      Src: /src/frr/ospfd/ospf_dump.c:460,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:463,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:464,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:468,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:473,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:474,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfd/ospf_dump.c:475,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:479,1
    - Dst: ospf_router_lsa_dump
      Src: /src/frr/ospfd/ospf_dump.c:484,1
    - Dst: ospf_network_lsa_dump
      Src: /src/frr/ospfd/ospf_dump.c:487,1
    - Dst: ospf_summary_lsa_dump
      Src: /src/frr/ospfd/ospf_dump.c:491,1
    - Dst: ospf_as_external_lsa_dump
      Src: /src/frr/ospfd/ospf_dump.c:494,1
    - Dst: ospf_as_external_lsa_dump
      Src: /src/frr/ospfd/ospf_dump.c:497,1
    - Dst: ospf_opaque_lsa_dump
      Src: /src/frr/ospfd/ospf_dump.c:502,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_dump.c:508,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_dump.c:513,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 514
    functionName: ospf_packet_ls_upd_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - ospf_summary_lsa_dump
    - stream_set_getp
    - ospf_opaque_lsa_dump
    - stream_forward_getp
    - ospf_router_lsa_dump
    - ntohs
    - zlog_debug
    - stream_getl
    - ospf_lsa_header_dump
    - ospf_network_lsa_dump
    - ospf_as_external_lsa_dump
    - stream_pnt
    - stream_get_getp
    linkageType: ''
    returnType: void
    signature: void ospf_packet_ls_upd_dump(struct stream *s, uint16_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_dump.c:521,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:523,1
    - Dst: ospf_lsa_header_list_dump
      Src: /src/frr/ospfd/ospf_dump.c:524,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_dump.c:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - s
    - length
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 516
    functionDepth: 3
    functionLinenumber: 516
    functionLinenumberEnd: 527
    functionName: ospf_packet_ls_ack_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - stream_set_getp
    - stream_get_getp
    - ospf_lsa_header_list_dump
    linkageType: ''
    returnType: void
    signature: void ospf_packet_ls_ack_dump(struct stream *s, uint16_t length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:532,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:534,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:535,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:536,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:537,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:538,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:538,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:539,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:540,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:541,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:541,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:542,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:543,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_dump.c:549,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:550,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:553,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:554,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:555,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:556,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_dump.c:557,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_dump.c:560,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - ospfh
    argTypes:
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 563
    functionName: ospf_header_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - ntohl
    - ntohs
    - zlog_debug
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: void ospf_header_dump(struct ospf_header *ospfh)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/ospfd/ospf_dump.c:571,1
    - Dst: stream_pnt
      Src: /src/frr/ospfd/ospf_dump.c:574,1
    - Dst: ospf_header_dump
      Src: /src/frr/ospfd/ospf_dump.c:581,1
    - Dst: stream_forward_getp
      Src: /src/frr/ospfd/ospf_dump.c:582,1
    - Dst: ospf_packet_hello_dump
      Src: /src/frr/ospfd/ospf_dump.c:586,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:586,1
    - Dst: ospf_packet_db_desc_dump
      Src: /src/frr/ospfd/ospf_dump.c:589,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:589,1
    - Dst: ospf_packet_ls_req_dump
      Src: /src/frr/ospfd/ospf_dump.c:592,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:592,1
    - Dst: ospf_packet_ls_upd_dump
      Src: /src/frr/ospfd/ospf_dump.c:595,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:595,1
    - Dst: ospf_packet_ls_ack_dump
      Src: /src/frr/ospfd/ospf_dump.c:598,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_dump.c:598,1
    - Dst: stream_set_getp
      Src: /src/frr/ospfd/ospf_dump.c:604,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 565
    functionDepth: 4
    functionLinenumber: 565
    functionLinenumberEnd: 605
    functionName: ospf_packet_dump
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 2
    functionsReached:
    - ospf_header_dump
    - stream_set_getp
    - ospf_packet_ls_upd_dump
    - stream_forward_getp
    - ospf_packet_hello_dump
    - ntohs
    - ospf_packet_ls_ack_dump
    - ospf_packet_db_desc_dump
    - ospf_packet_ls_req_dump
    - stream_pnt
    - stream_get_getp
    linkageType: ''
    returnType: void
    signature: void ospf_packet_dump(struct stream *s)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:796,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:798,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:799,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:800,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:801,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:802,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:803,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:811,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:813,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:814,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:815,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:816,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:817,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:818,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - vty
    - arg_base
    - argc
    - argv
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 822
    functionName: debug_ospf_nsm_common
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - strmatch
    - DEBUG_ON
    - TERM_DEBUG_ON
    linkageType: ''
    returnType: int
    signature: "int debug_ospf_nsm_common(struct vty *vty, int arg_base, int argc,\n\t\t\t\t
      struct cmd_token **argv)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:865,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:867,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:868,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:869,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:870,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:871,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:872,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:880,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:882,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:883,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:884,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:885,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:886,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:887,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - vty
    - arg_base
    - argc
    - argv
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 859
    functionDepth: 1
    functionLinenumber: 859
    functionLinenumberEnd: 891
    functionName: no_debug_ospf_nsm_common
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - strmatch
    - TERM_DEBUG_OFF
    - DEBUG_OFF
    linkageType: ''
    returnType: int
    signature: "int no_debug_ospf_nsm_common(struct vty *vty, int arg_base, int argc,\n\t\t\t\t
      \   struct cmd_token **argv)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:936,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:938,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:939,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:940,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:941,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:942,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:943,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:944,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:945,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:946,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:947,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:955,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:957,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:958,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:959,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:960,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:961,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:962,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:963,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:964,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:965,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:966,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 4
    argNames:
    - vty
    - arg_base
    - argc
    - argv
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 931
    functionDepth: 1
    functionLinenumber: 931
    functionLinenumberEnd: 970
    functionName: debug_ospf_lsa_common
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - strmatch
    - DEBUG_ON
    - TERM_DEBUG_ON
    linkageType: ''
    returnType: int
    signature: "int debug_ospf_lsa_common(struct vty *vty, int arg_base, int argc,\n\t\t\t\t
      struct cmd_token **argv)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1017,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1019,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1020,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1021,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1022,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1023,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1024,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1025,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1026,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1027,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1028,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1036,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1038,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1039,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1040,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1041,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1042,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1043,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1044,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1045,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1046,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1047,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 4
    argNames:
    - vty
    - arg_base
    - argc
    - argv
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1012
    functionDepth: 1
    functionLinenumber: 1012
    functionLinenumberEnd: 1051
    functionName: no_debug_ospf_lsa_common
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - strmatch
    - TERM_DEBUG_OFF
    - DEBUG_OFF
    linkageType: ''
    returnType: int
    signature: "int no_debug_ospf_lsa_common(struct vty *vty, int arg_base, int argc,\n\t\t\t\t
      \   struct cmd_token **argv)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:1100,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1102,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:1103,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1104,1
    - Dst: DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:1105,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:1113,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1115,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:1116,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1117,1
    - Dst: TERM_DEBUG_ON
      Src: /src/frr/ospfd/ospf_dump.c:1118,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - vty
    - arg_base
    - argc
    - argv
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1122
    functionName: debug_ospf_zebra_common
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - strmatch
    - DEBUG_ON
    - TERM_DEBUG_ON
    linkageType: ''
    returnType: int
    signature: "int debug_ospf_zebra_common(struct vty *vty, int arg_base, int argc,\n\t\t\t\t
      \  struct cmd_token **argv)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1162,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1164,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1165,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1166,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1167,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1175,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1177,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1178,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_dump.c:1179,1
    - Dst: TERM_DEBUG_OFF
      Src: /src/frr/ospfd/ospf_dump.c:1180,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - vty
    - arg_base
    - argc
    - argv
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1157
    functionDepth: 1
    functionLinenumber: 1157
    functionLinenumberEnd: 1184
    functionName: no_debug_ospf_zebra_common
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - strmatch
    - TERM_DEBUG_OFF
    - DEBUG_OFF
    linkageType: ''
    returnType: int
    signature: "int no_debug_ospf_zebra_common(struct vty *vty, int arg_base, int
      argc,\n\t\t\t\t      struct cmd_token **argv)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1661,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1663,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1666,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1667,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1670,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1671,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1673,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1674,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1675,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1676,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1677,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1678,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1682,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1683,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1685,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1686,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1687,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1688,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1689,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1690,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_dump.c:1695,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_dump.c:1696,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1697,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:1698,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_dump.c:1699,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_dump.c:1702,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1703,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:1705,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_dump.c:1707,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_dump.c:1710,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1711,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_dump.c:1713,1
    - Dst: IS_DEBUG_OSPF_PACKET
      Src: /src/frr/ospfd/ospf_dump.c:1715,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1721,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1722,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1724,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1725,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1726,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1727,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1728,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1729,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1730,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1731,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1735,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1736,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1738,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1739,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1741,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1742,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1746,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1747,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1750,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1751,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1754,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1755,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1758,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1759,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1762,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1763,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1766,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1767,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1770,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1771,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1773,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1774,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1778,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1779,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 70
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1656
    functionDepth: 1
    functionLinenumber: 1656
    functionLinenumberEnd: 1782
    functionName: show_debugging_ospf_common
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - IS_DEBUG_OSPF_PACKET
    - lookup_msg
    - vty_out
    linkageType: ''
    returnType: int
    signature: int show_debugging_ospf_common(struct vty *vty)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_dump.c:1841,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_dump.c:1844,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1847,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1848,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1850,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1851,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1852,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1853,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1854,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1855,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1859,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1860,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1862,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1863,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1864,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1865,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1866,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1867,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1871,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1872,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1874,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1875,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1876,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1877,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1878,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1879,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1880,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1881,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1887,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1888,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1890,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1891,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1892,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1893,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1899,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1900,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1905,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1906,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1916,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1925,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1928,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1939,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1945,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1946,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1951,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1952,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1957,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1958,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1963,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1964,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1969,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1970,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1974,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1975,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1980,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1982,1
    - Dst: IS_CONF_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_dump.c:1987,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_dump.c:1989,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 106
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1829
    functionDepth: 1
    functionLinenumber: 1829
    functionLinenumberEnd: 1994
    functionName: config_write_debug
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 2
    functionsReached:
    - snprintf
    - IS_CONF_DEBUG_OSPF
    - vty_out
    - memset
    linkageType: ''
    returnType: int
    signature: int config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/ospfd/ospf_dump.c:1999,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2001,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2002,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2003,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2004,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2005,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2006,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2007,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2008,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2009,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2010,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2011,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2012,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2013,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2014,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2015,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2016,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2017,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2018,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2019,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2020,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2021,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2023,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2024,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2026,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2027,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2028,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2029,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2030,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2031,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2032,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2033,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2034,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2035,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2036,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2038,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2039,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2040,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2042,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2043,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2044,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2045,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2046,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2047,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2048,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2049,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2050,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2051,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2052,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2053,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2054,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2055,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2056,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2057,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2058,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2059,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2061,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2062,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2063,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2064,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2065,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2066,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2067,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2068,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2069,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2070,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_dump.c:2071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 1997
    functionDepth: 1
    functionLinenumber: 1997
    functionLinenumberEnd: 2072
    functionName: ospf_debug_init
    functionSourceFile: /src/frr/ospfd/ospf_dump.c
    functionUses: 2
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void ospf_debug_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: ospf_check_area_fr_enabled
    functionSourceFile: /src/frr/ospfd/ospf_abr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ospf_check_area_fr_enabled(const struct ospf_area *area)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_nsm.c:51,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_nsm.c:54,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_nsm.c:55,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_nsm.c:56,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:57,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_nsm.c:62,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_nsm.c:63,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_nsm.c:66,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_nsm.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 72
    functionName: ospf_inactivity_timer
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - IS_DEBUG_OSPF
    - OSPF_NSM_TIMER_ON
    - zlog_debug
    - EVENT_ARG
    - ospf_get_name
    - OSPF_NSM_EVENT_SCHEDULE
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_inactivity_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_nsm.c:78,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_nsm.c:81,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_nsm.c:82,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_nsm.c:83,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:84,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_nsm.c:87,1
    - Dst: ospf_db_desc_resend
      Src: /src/frr/ospfd/ospf_nsm.c:88,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_nsm.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (nbr->last_send)
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/frr/ospfd/ospf_nsm.c
    constantsTouched: []
    func_position:
      end: 92
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 92
    functionName: ospf_db_desc_timer
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - OSPF_NSM_TIMER_ON
    - zlog_debug
    - EVENT_ARG
    - ospf_get_name
    - ospf_db_desc_resend
    - assert
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_db_desc_timer(struct event *thread)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:108,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:109,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:114,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:115,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:116,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_nsm.c:119,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:121,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:122,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_nsm.c:125,1
    - Dst: IS_SET_DD_MS
      Src: /src/frr/ospfd/ospf_nsm.c:127,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:128,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:133,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 136
    functionName: nsm_timer_set
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - IS_SET_DD_MS
    - EVENT_OFF
    - OSPF_NSM_TIMER_ON
    linkageType: ''
    returnType: void
    signature: void nsm_timer_set(struct ospf_neighbor *nbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_nsm.c:150,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_nsm.c:150,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_nsm.c:151,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_nsm.c:151,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_nsm.c:153,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_nsm.c:153,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_nsm.c:154,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_nsm.c:154,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 4
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 158
    functionName: nsm_should_adj
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - DR
    - BDR
    linkageType: ''
    returnType: int
    signature: int nsm_should_adj(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:164,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_nsm.c:166,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:170,1
    - Dst: ospf_proactively_arp
      Src: /src/frr/ospfd/ospf_nsm.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 177
    functionName: nsm_hello_received
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - ospf_proactively_arp
    - EVENT_OFF
    - OSPF_NSM_TIMER_ON
    linkageType: ''
    returnType: int
    signature: int nsm_hello_received(struct ospf_neighbor *nbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:182,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_nsm.c:184,1
    - Dst: OSPF_NSM_TIMER_ON
      Src: /src/frr/ospfd/ospf_nsm.c:186,1
    - Dst: ospf_proactively_arp
      Src: /src/frr/ospfd/ospf_nsm.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 193
    functionName: nsm_start
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - ospf_proactively_arp
    - EVENT_OFF
    - OSPF_NSM_TIMER_ON
    linkageType: ''
    returnType: int
    signature: int nsm_start(struct ospf_neighbor *nbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nsm_should_adj
      Src: /src/frr/ospfd/ospf_nsm.c:197,1
    - Dst: ospf_proactively_arp
      Src: /src/frr/ospfd/ospf_nsm.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 204
    functionName: nsm_twoway_received
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - nsm_should_adj
    - ospf_proactively_arp
    linkageType: ''
    returnType: int
    signature: int nsm_twoway_received(struct ospf_neighbor *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_count_all
      Src: /src/frr/ospfd/ospf_nsm.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: ospf_db_summary_count
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - ospf_lsdb_count_all
    linkageType: ''
    returnType: int
    signature: int ospf_db_summary_count(struct ospf_neighbor *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_isempty
      Src: /src/frr/ospfd/ospf_nsm.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: ospf_db_summary_isempty
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 1
    functionsReached:
    - ospf_lsdb_isempty
    linkageType: ''
    returnType: int
    signature: int ospf_db_summary_isempty(struct ospf_neighbor *nbr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ospf_if_exists
      Src: /src/frr/ospfd/ospf_nsm.c:222,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:237,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_nsm.c:240,1
    - Dst: ospf_ls_retransmit_add
      Src: /src/frr/ospfd/ospf_nsm.c:241,1
    - Dst: ospf_lsdb_add
      Src: /src/frr/ospfd/ospf_nsm.c:243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 246
    functionName: ospf_db_summary_add
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - ospf_ls_retransmit_add
    - ospf_if_exists
    - ospf_lsdb_add
    linkageType: ''
    returnType: int
    signature: int ospf_db_summary_add(struct ospf_neighbor *nbr, struct ospf_lsa
      *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_nsm.c:258,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_nsm.c:258,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_nsm.c:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 248
    functionDepth: 5
    functionLinenumber: 248
    functionLinenumberEnd: 262
    functionName: ospf_db_summary_clear
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - route_top
    - ospf_lsdb_delete
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_db_summary_clear(struct ospf_neighbor *nbr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_proactively_arp
      Src: /src/frr/ospfd/ospf_nsm.c:278,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:280,1
    - Dst: ROUTER_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:280,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:281,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:282,1
    - Dst: NETWORK_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:282,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:283,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:284,1
    - Dst: SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:284,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:285,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:288,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:289,1
    - Dst: OPAQUE_LINK_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:289,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:290,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:291,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:291,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:292,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:295,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:296,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:296,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:297,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:303,1
    - Dst: ASBR_SUMMARY_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:303,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:304,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:305,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:305,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:306,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:309,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_nsm.c:312,1
    - Dst: OPAQUE_AS_LSDB
      Src: /src/frr/ospfd/ospf_nsm.c:312,1
    - Dst: ospf_db_summary_add
      Src: /src/frr/ospfd/ospf_nsm.c:313,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 271
    functionDepth: 6
    functionLinenumber: 271
    functionLinenumberEnd: 316
    functionName: nsm_negotiation_done
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - SUMMARY_LSDB
    - CHECK_FLAG
    - ASBR_SUMMARY_LSDB
    - OPAQUE_AREA_LSDB
    - NSSA_LSDB
    - ospf_proactively_arp
    - OPAQUE_LINK_LSDB
    - EXTERNAL_LSDB
    - ROUTER_LSDB
    - LSDB_LOOP
    - ospf_db_summary_add
    - NETWORK_LSDB
    - OPAQUE_AS_LSDB
    linkageType: ''
    returnType: int
    signature: int nsm_negotiation_done(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ls_request_isempty
      Src: /src/frr/ospfd/ospf_nsm.c:320,1
    - Dst: ospf_ls_req_send
      Src: /src/frr/ospfd/ospf_nsm.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 318
    functionDepth: 7
    functionLinenumber: 318
    functionLinenumberEnd: 328
    functionName: nsm_exchange_done
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - ospf_ls_request_isempty
    - ospf_ls_req_send
    linkageType: ''
    returnType: int
    signature: int nsm_exchange_done(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nsm_should_adj
      Src: /src/frr/ospfd/ospf_nsm.c:333,1
    - Dst: ospf_proactively_arp
      Src: /src/frr/ospfd/ospf_nsm.c:339,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 344
    functionName: nsm_adj_ok
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - nsm_should_adj
    - ospf_proactively_arp
    linkageType: ''
    returnType: int
    signature: int nsm_adj_ok(struct ospf_neighbor *nbr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_db_summary_isempty
      Src: /src/frr/ospfd/ospf_nsm.c:353,1
    - Dst: ospf_db_summary_clear
      Src: /src/frr/ospfd/ospf_nsm.c:354,1
    - Dst: ospf_ls_request_isempty
      Src: /src/frr/ospfd/ospf_nsm.c:357,1
    - Dst: ospf_ls_request_delete_all
      Src: /src/frr/ospfd/ospf_nsm.c:358,1
    - Dst: ospf_ls_retransmit_isempty
      Src: /src/frr/ospfd/ospf_nsm.c:361,1
    - Dst: ospf_ls_retransmit_clear
      Src: /src/frr/ospfd/ospf_nsm.c:362,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:364,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:365,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 350
    functionDepth: 6
    functionLinenumber: 350
    functionLinenumberEnd: 366
    functionName: nsm_clear_adj
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - ospf_ls_request_isempty
    - ospf_ls_retransmit_isempty
    - ospf_ls_request_delete_all
    - ospf_db_summary_clear
    - CHECK_FLAG
    - UNSET_FLAG
    - ospf_ls_retransmit_clear
    - ospf_db_summary_isempty
    linkageType: ''
    returnType: void
    signature: void nsm_clear_adj(struct ospf_neighbor *nbr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_nsm.c:376,1
    - Dst: OSPF_POLL_TIMER_ON
      Src: /src/frr/ospfd/ospf_nsm.c:388,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_nsm.c:391,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_nsm.c:392,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_nsm.c:394,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:396,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_nsm.c:403,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_nsm.c:403,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_nsm.c:417,1
    - Dst: ospf_interface_fifo_flush
      Src: /src/frr/ospfd/ospf_nsm.c:427,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts:
    - condition: (nbr != nbr->oi->nbr_self)
      pos:
        line_end: 375
        line_start: 375
        source_file: /src/frr/ospfd/ospf_nsm.c
    constantsTouched: []
    func_position:
      end: 429
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 429
    functionName: nsm_kill_nbr
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - IS_DEBUG_OSPF
    - route_top
    - OSPF_POLL_TIMER_ON
    - route_next
    - zlog_debug
    - ospf_interface_fifo_flush
    - ospf_get_name
    - assert
    - IF_NAME
    linkageType: ''
    returnType: int
    signature: int nsm_kill_nbr(struct ospf_neighbor *nbr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_nsm.c:620,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_nsm.c:621,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_nsm.c:622,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:623,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:624,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:625,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:629,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:630,1
    - Dst: zlog_notice
      Src: /src/frr/ospfd/ospf_nsm.c:632,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:635,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_nsm.c:635,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:636,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:637,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_nsm.c:642,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_nsm.c:645,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 3
    argNames:
    - nbr
    - next_state
    - event
    argTypes:
    - struct ospf_neighbor*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 648
    functionName: nsm_notice_state_change
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    - IS_DEBUG_OSPF
    - CHECK_FLAG
    - monotime
    - zlog_notice
    - zlog_debug
    - ospf_get_name
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void nsm_notice_state_change(struct ospf_neighbor *nbr, int next_state,\n\t\t\t\t
      \   int event)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_nsm.c:666,1
    - Dst: OSPF_ISM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospf_nsm.c:681,1
    - Dst: ospf_check_abr_status
      Src: /src/frr/ospfd/ospf_nsm.c:696,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospf_nsm.c:700,1
    - Dst: ospf_check_abr_status
      Src: /src/frr/ospfd/ospf_nsm.c:705,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospf_nsm.c:710,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:714,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_nsm.c:715,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:718,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:719,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:720,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_nsm.c:725,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_nsm.c:726,1
    - Dst: ospf_area_lookup_by_area_id
      Src: /src/frr/ospfd/ospf_nsm.c:729,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_nsm.c:733,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_nsm.c:739,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_nsm.c:744,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_nsm.c:746,1
    - Dst: ospf_network_lsa_update
      Src: /src/frr/ospfd/ospf_nsm.c:749,1
    - Dst: ospf_gr_check_adjs
      Src: /src/frr/ospfd/ospf_nsm.c:754,1
    - Dst: ospf_opaque_nsm_change
      Src: /src/frr/ospfd/ospf_nsm.c:757,1
    - Dst: nsm_clear_adj
      Src: /src/frr/ospfd/ospf_nsm.c:764,1
    - Dst: frr_weak_random
      Src: /src/frr/ospfd/ospf_nsm.c:769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_nsm.c:775,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_nsm.c:776,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:778,1
    - Dst: ospf_db_desc_send
      Src: /src/frr/ospfd/ospf_nsm.c:780,1
    - Dst: ospf_bfd_trigger_event
      Src: /src/frr/ospfd/ospf_nsm.c:788,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 71
    argCount: 2
    argNames:
    - nbr
    - state
    argTypes:
    - struct ospf_neighbor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 650
    functionDepth: 11
    functionLinenumber: 650
    functionLinenumberEnd: 791
    functionName: nsm_change_state
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - ospf_schedule_abr_task
    - lookup_msg
    - ospf_bfd_trigger_event
    - OSPF_GR_IS_ACTIVE_HELPER
    - frr_weak_random
    - ospf_db_desc_send
    - ospf_get_name
    - zlog_info
    - ospf_gr_check_adjs
    - ospf_router_lsa_update_area
    - ospf_network_lsa_update
    - ospf_opaque_nsm_change
    - ospf_lsa_flush_area
    - ospf_check_abr_status
    - ospf_area_lookup_by_area_id
    - CHECK_FLAG
    - ospf_lsa_unlock
    - OSPF_ISM_EVENT_EXECUTE
    - nsm_clear_adj
    linkageType: ''
    returnType: void
    signature: void nsm_change_state(struct ospf_neighbor *nbr, int state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_nsm.c:800,1
    - Dst: EVENT_VAL
      Src: /src/frr/ospfd/ospf_nsm.c:801,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_nsm.c:803,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_nsm.c:804,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_nsm.c:804,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:806,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:807,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_nsm.c:827,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_nsm.c:830,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_nsm.c:831,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:832,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_nsm.c:835,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_nsm.c:840,1
    - Dst: nsm_notice_state_change
      Src: /src/frr/ospfd/ospf_nsm.c:846,1
    - Dst: nsm_change_state
      Src: /src/frr/ospfd/ospf_nsm.c:847,1
    - Dst: hook_call
      Src: /src/frr/ospfd/ospf_nsm.c:849,1
    - Dst: nsm_timer_set
      Src: /src/frr/ospfd/ospf_nsm.c:853,1
    - Dst: ospf_nbr_delete
      Src: /src/frr/ospfd/ospf_nsm.c:863,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (next_state != NSM_DependUpon)
      pos:
        line_end: 839
        line_start: 839
        source_file: /src/frr/ospfd/ospf_nsm.c
    constantsTouched: []
    func_position:
      end: 864
      start: 794
    functionDepth: 12
    functionLinenumber: 794
    functionLinenumberEnd: 864
    functionName: ospf_nsm_event
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    - IS_DEBUG_OSPF
    - nsm_timer_set
    - ospf_nbr_delete
    - hook_call
    - EVENT_VAL
    - zlog_debug
    - flog_err
    - nsm_change_state
    - nsm_notice_state_change
    - EVENT_ARG
    - ospf_get_name
    - assert
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_nsm_event(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ls_request_isempty
      Src: /src/frr/ospfd/ospf_nsm.c:870,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_nsm.c:871,1
    - Dst: ospf_ls_req_event
      Src: /src/frr/ospfd/ospf_nsm.c:873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 867
    functionDepth: 2
    functionLinenumber: 867
    functionLinenumberEnd: 875
    functionName: ospf_check_nbr_loading
    functionSourceFile: /src/frr/ospfd/ospf_nsm.c
    functionUses: 0
    functionsReached:
    - ospf_ls_request_isempty
    - ospf_ls_req_event
    - OSPF_NSM_EVENT_SCHEDULE
    linkageType: ''
    returnType: void
    signature: void ospf_check_nbr_loading(struct ospf_neighbor *nbr)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - path_type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 41
    functionName: ospf_path_type_name
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ospf_path_type_name(int path_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_route.c:47,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_route.c:49,1
    - Dst: paths::paths
      Src: /src/frr/ospfd/ospf_route.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 53
    functionName: ospf_route_new
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 3
    functionsReached:
    - XCALLOC::XCALLOC
    - paths::paths
    - list_new
    linkageType: ''
    returnType: struct ospf_route
    signature: struct ospf_route *ospf_route_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_route.c:58,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_route.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - or
    argTypes:
    - struct ospf_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: ospf_route_free
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 2
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_route_free(struct ospf_route *or)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_route.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: ospf_path_new
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct ospf_path
    signature: struct ospf_path *ospf_path_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_path_new::ospf_path_new
      Src: /src/frr/ospfd/ospf_route.c:77,1
    - Dst: srni::srni
      Src: /src/frr/ospfd/ospf_route.c:85,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_route.c:86,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_route.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct ospf_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 92
    functionName: ospf_path_dup
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - ospf_path_new::ospf_path_new
    - srni::srni
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct ospf_path
    signature: struct ospf_path *ospf_path_dup(struct ospf_path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_route.c:98,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_route.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - struct ospf_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: ospf_path_free
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_path_free(struct ospf_path *op)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_route.c:108,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_route.c:108,1
    - Dst: ospf_zebra_delete
      Src: /src/frr/ospfd/ospf_route.c:111,1
    - Dst: ospf_zebra_delete_discard
      Src: /src/frr/ospfd/ospf_route.c:114,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ospf
    - rt
    argTypes:
    - struct ospf*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 117
    functionName: ospf_route_delete
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 3
    functionsReached:
    - ospf_zebra_delete
    - route_top
    - ospf_zebra_delete_discard
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_route_delete(struct ospf *ospf, struct route_table *rt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_route.c:124,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_route.c:124,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:126,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:129,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_route.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 133
    functionName: ospf_route_table_free
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 3
    functionsReached:
    - route_unlock_node
    - route_table_finish
    - route_top
    - route_next
    - ospf_route_free
    linkageType: ''
    returnType: void
    signature: void ospf_route_table_free(struct route_table *rt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_route.c:144,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_route.c:145,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_route.c:147,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - rt
    - prefix
    argTypes:
    - struct route_table*
    - struct prefix_ipv4*
    assertStmts:
    - condition: (rt)
      pos:
        line_end: 143
        line_start: 143
        source_file: /src/frr/ospfd/ospf_route.c
    - condition: (prefix)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/frr/ospfd/ospf_route.c
    constantsTouched: []
    func_position:
      end: 158
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 158
    functionName: ospf_route_exist_new_table
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_route_exist_new_table(struct route_table *rt,\n\t\t\t\t      struct
      prefix_ipv4 *prefix)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_route.c:183,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 2
    argNames:
    - srni1
    - srni2
    argTypes:
    - struct sr_nexthop_info*
    - struct sr_nexthop_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 187
    functionName: ospf_route_backup_path_same
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: int
    signature: "int ospf_route_backup_path_same(struct sr_nexthop_info *srni1,\n\t\t\t\t
      \      struct sr_nexthop_info *srni2)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_route.c:204,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:208,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_route.c:220,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_route.c:221,1
    - Dst: listnextnode_unchecked
      Src: /src/frr/ospfd/ospf_route.c:222,1
    - Dst: listnextnode_unchecked
      Src: /src/frr/ospfd/ospf_route.c:223,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_route.c:224,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_route.c:225,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_route.c:227,1
    - Dst: ospf_route_backup_path_same
      Src: /src/frr/ospfd/ospf_route.c:234,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_route.c:239,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 3
    argNames:
    - rt
    - prefix
    - newor
    argTypes:
    - struct route_table*
    - struct prefix_ipv4*
    - struct ospf_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 243
    functionName: ospf_route_match_same
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - prefix_same
    - listhead
    - listnextnode_unchecked
    - IPV4_ADDR_SAME
    - ospf_route_backup_path_same
    - listgetdata
    linkageType: ''
    returnType: int
    signature: "int ospf_route_match_same(struct route_table *rt, struct prefix_ipv4
      *prefix,\n\t\t\t  struct ospf_route *newor)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_route.c:258,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_route.c:258,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_route.c:261,1
    - Dst: ospf_zebra_delete
      Src: /src/frr/ospfd/ospf_route.c:264,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:266,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:269,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - ospf
    - external_routes
    - routes
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 273
    functionName: ospf_route_delete_same_ext
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - route_top
    - route_next
    - ospf_zebra_delete
    - ospf_route_free
    linkageType: ''
    returnType: void
    signature: "void ospf_route_delete_same_ext(struct ospf *ospf,\n\t\t\t\t       struct
      route_table *external_routes,\n\t\t\t\t       struct route_table *routes)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_route.c:282,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_route.c:282,1
    - Dst: ospf_route_exist_new_table
      Src: /src/frr/ospfd/ospf_route.c:287,1
    - Dst: ospf_zebra_delete
      Src: /src/frr/ospfd/ospf_route.c:291,1
    - Dst: ospf_route_exist_new_table
      Src: /src/frr/ospfd/ospf_route.c:297,1
    - Dst: ospf_zebra_delete_discard
      Src: /src/frr/ospfd/ospf_route.c:301,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 3
    argNames:
    - ospf
    - rt
    - cmprt
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 306
    functionName: ospf_route_delete_uniq
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 0
    functionsReached:
    - ospf_route_exist_new_table
    - route_top
    - route_next
    - ospf_zebra_delete
    - ospf_zebra_delete_discard
    linkageType: ''
    returnType: void
    signature: "void ospf_route_delete_uniq(struct ospf *ospf, struct route_table
      *rt,\n\t\t\t\t   struct route_table *cmprt)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospf_route.c:317,1
    - Dst: ospf_route_delete_uniq
      Src: /src/frr/ospfd/ospf_route.c:324,1
    - Dst: ospf_route_delete_same_ext
      Src: /src/frr/ospfd/ospf_route.c:326,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_route.c:329,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_route.c:329,1
    - Dst: ospf_route_match_same
      Src: /src/frr/ospfd/ospf_route.c:332,1
    - Dst: ospf_zebra_add
      Src: /src/frr/ospfd/ospf_route.c:335,1
    - Dst: ospf_route_match_same
      Src: /src/frr/ospfd/ospf_route.c:340,1
    - Dst: ospf_zebra_add_discard
      Src: /src/frr/ospfd/ospf_route.c:343,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - ospf
    - rt
    argTypes:
    - struct ospf*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 309
    functionDepth: 3
    functionLinenumber: 309
    functionLinenumberEnd: 347
    functionName: ospf_route_install
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 2
    functionsReached:
    - ospf_route_table_free
    - route_top
    - ospf_zebra_add
    - route_next
    - ospf_zebra_add_discard
    - ospf_route_delete_uniq
    - ospf_route_delete_same_ext
    - ospf_route_match_same
    linkageType: ''
    returnType: void
    signature: void ospf_route_install(struct ospf *ospf, struct route_table *rt)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:360,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:362,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:367,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_route.c:370,1
    - Dst: ospf_vl_up_check
      Src: /src/frr/ospfd/ospf_route.c:371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_route.c:373,1
    - Dst: IS_ROUTER_LSA_BORDER
      Src: /src/frr/ospfd/ospf_route.c:379,1
    - Dst: IS_ROUTER_LSA_EXTERNAL
      Src: /src/frr/ospfd/ospf_route.c:380,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:382,1
    - Dst: IS_ROUTER_LSA_BORDER
      Src: /src/frr/ospfd/ospf_route.c:389,1
    - Dst: IS_ROUTER_LSA_EXTERNAL
      Src: /src/frr/ospfd/ospf_route.c:391,1
    - Dst: ospf_route_new
      Src: /src/frr/ospfd/ospf_route.c:398,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_route.c:424,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:427,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_route.c:429,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_route.c:433,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:435,1
    - Dst: ospf_route_copy_nexthops_from_vertex
      Src: /src/frr/ospfd/ospf_route.c:437,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_route.c:439,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:443,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:445,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 4
    argNames:
    - rt
    - v
    - area
    - add_only
    argTypes:
    - struct route_table*
    - struct vertex*
    - struct ospf_area*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 447
    functionName: ospf_intra_add_router
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv4
    - route_unlock_node
    - ospf_route_copy_nexthops_from_vertex
    - CHECK_FLAG
    - listnode_add
    - ospf_route_new
    - zlog_debug
    - IS_ROUTER_LSA_EXTERNAL
    - route_node_get
    - IS_ROUTER_LSA_BORDER
    - list_new
    - OSPF_IS_AREA_BACKBONE
    - ospf_vl_up_check
    linkageType: ''
    returnType: void
    signature: "void ospf_intra_add_router(struct route_table *rt, struct vertex *v,\n\t\t\t
      \  struct ospf_area *area, bool add_only)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_route.c:467,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_route.c:468,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_route.c:470,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:483,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_route.c:487,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:491,1
    - Dst: ospf_route_new
      Src: /src/frr/ospfd/ospf_route.c:494,1
    - Dst: ospf_route_copy_nexthops_from_vertex
      Src: /src/frr/ospfd/ospf_route.c:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 3
    argNames:
    - rt
    - v
    - area
    argTypes:
    - struct route_table*
    - struct vertex*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 507
    functionName: ospf_intra_add_transit
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - apply_mask_ipv4
    - ospf_route_copy_nexthops_from_vertex
    - ospf_route_free
    - ip_masklen
    - ospf_route_new
    - route_node_get
    - IPV4_ADDR_CMP
    linkageType: ''
    returnType: void
    signature: "void ospf_intra_add_transit(struct route_table *rt, struct vertex
      *v,\n\t\t\t    struct ospf_area *area)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:523,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_route.c:529,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_route.c:530,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:533,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_route.c:539,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:542,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_route.c:543,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_route.c:550,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:552,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_route.c:557,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:563,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:568,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:579,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:599,1
    - Dst: ospf_route_copy_nexthops_from_vertex
      Src: /src/frr/ospfd/ospf_route.c:602,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_route.c:604,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:620,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_route.c:625,1
    - Dst: ospf_route_copy_nexthops_from_vertex
      Src: /src/frr/ospfd/ospf_route.c:627,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:635,1
    - Dst: ospf_route_new
      Src: /src/frr/ospfd/ospf_route.c:637,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:650,1
    - Dst: ospf_route_copy_nexthops_from_vertex
      Src: /src/frr/ospfd/ospf_route.c:652,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:655,1
    - Dst: ospf_if_lookup_by_lsa_pos
      Src: /src/frr/ospfd/ospf_route.c:663,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:667,1
    - Dst: ospf_path_new
      Src: /src/frr/ospfd/ospf_route.c:670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_route.c:675,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_route.c:680,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:683,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:691,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 6
    argNames:
    - rt
    - link
    - v
    - area
    - parent_is_root
    - lsa_pos
    argTypes:
    - struct route_table*
    - struct router_lsa_link*
    - struct vertex*
    - struct ospf_area*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 692
    functionName: ospf_intra_add_stub
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv4
    - route_unlock_node
    - ospf_route_copy_nexthops_from_vertex
    - CHECK_FLAG
    - ip_masklen
    - listnode_add
    - ntohs
    - ospf_route_new
    - zlog_debug
    - route_node_get
    - list_delete_all_node
    - ospf_path_new
    - ospf_if_lookup_by_local_addr
    - IPV4_ADDR_CMP
    - ospf_if_lookup_by_lsa_pos
    linkageType: ''
    returnType: void
    signature: "void ospf_intra_add_stub(struct route_table *rt, struct router_lsa_link
      *link,\n\t\t\t struct vertex *v, struct ospf_area *area,\n\t\t\t int parent_is_root,
      int lsa_pos)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_route.c:818,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_route.c:819,1
    - Dst: ospf_route_copy_nexthops_from_vertex
      Src: /src/frr/ospfd/ospf_route.c:826,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_route.c:836,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_route.c:838,1
    - Dst: ospf_if_lookup_by_lsa_pos
      Src: /src/frr/ospfd/ospf_route.c:846,1
    - Dst: ospf_path_exist
      Src: /src/frr/ospfd/ospf_route.c:848,1
    - Dst: ospf_path_new
      Src: /src/frr/ospfd/ospf_route.c:850,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_route.c:856,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_route.c:861,1
    - Dst: ospf_path_lookup
      Src: /src/frr/ospfd/ospf_route.c:866,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_route.c:871,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_route.c:872,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_route.c:874,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_route.c:883,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_route.c:890,1
    - Dst: ospf_path_lookup
      Src: /src/frr/ospfd/ospf_route.c:892,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_route.c:893,1
    - Dst: ospf_path_dup
      Src: /src/frr/ospfd/ospf_route.c:893,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 3
    argNames:
    - plist
    - nexthop
    - oi
    argTypes:
    - struct list*
    - struct in_addr
    - struct ospf_interface*
    assertStmts:
    - condition: (to->paths)
      pos:
        line_end: 835
        line_start: 835
        source_file: /src/frr/ospfd/ospf_route.c
    constantsTouched: []
    func_position:
      end: 894
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 894
    functionName: ospf_path_exist
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 1
    functionsReached:
    - ospf_path_lookup
    - ospf_path_dup
    - ospf_route_copy_nexthops_from_vertex
    - ospf_path_exist
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - ospf_route_copy_nexthops
    - listnode_add
    - IPV4_ADDR_SAME
    - ospf_path_new
    - ALL_LIST_ELEMENTS
    - ospf_if_lookup_by_lsa_pos
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_path_exist(struct list *plist, struct in_addr nexthop,\n\t\t\t
      \  struct ospf_interface *oi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_route.c:899,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_route.c:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - to
    - from
    argTypes:
    - struct ospf_route*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 901
    functionName: ospf_route_subst_nexthops
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 2
    functionsReached:
    - list_delete_all_node
    - ospf_route_copy_nexthops
    linkageType: ''
    returnType: void
    signature: void ospf_route_subst_nexthops(struct ospf_route *to, struct list *from)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/ospfd/ospf_route.c:906,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:907,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_route.c:909,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - rn
    - new_or
    - over
    argTypes:
    - struct route_node*
    - struct ospf_route*
    - struct ospf_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 912
    functionName: ospf_route_subst
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - ospf_route_free
    - route_lock_node
    - ospf_route_copy_nexthops
    linkageType: ''
    returnType: void
    signature: "void ospf_route_subst(struct route_node *rn, struct ospf_route *new_or,\n\t\t
      \     struct ospf_route *over)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_route.c:919,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_route.c:921,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:925,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:926,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - rt
    - p
    - new_or
    - over
    argTypes:
    - struct route_table*
    - struct prefix_ipv4*
    - struct ospf_route*
    - struct ospf_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 931
    functionName: ospf_route_add
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - zlog_debug
    - route_node_get
    - ospf_route_copy_nexthops
    linkageType: ''
    returnType: void
    signature: "void ospf_route_add(struct route_table *rt, struct prefix_ipv4 *p,\n\t\t
      \   struct ospf_route *new_or, struct ospf_route *over)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:939,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_route.c:941,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_route.c:942,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_route.c:945,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:947,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:950,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:952,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 956
    functionName: ospf_prune_unreachable_networks
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - listcount
    - route_top
    - route_next
    - zlog_debug
    - ospf_route_free
    linkageType: ''
    returnType: void
    signature: void ospf_prune_unreachable_networks(struct route_table *rt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:966,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_route.c:968,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_route.c:969,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_route.c:973,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_route.c:974,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:976,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:978,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_route.c:987,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_route.c:989,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_route.c:993,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:994,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_route.c:998,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1000,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_route.c:1003,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:1005,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - rtrs
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 958
    functionDepth: 1
    functionLinenumber: 958
    functionLinenumberEnd: 1007
    functionName: ospf_prune_unreachable_routers
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - list_delete
    - listcount
    - route_top
    - CHECK_FLAG
    - route_next
    - zlog_debug
    - UNSET_FLAG
    - listnode_delete
    - ALL_LIST_ELEMENTS
    - ospf_route_free
    linkageType: ''
    returnType: void
    signature: void ospf_prune_unreachable_routers(struct route_table *rtrs)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_route.c:1017,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1021,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:1027,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1033,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1040,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:1046,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1050,1
    - Dst: ospf_route_new
      Src: /src/frr/ospfd/ospf_route.c:1052,1
    - Dst: ospf_zebra_add_discard
      Src: /src/frr/ospfd/ospf_route.c:1064,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 5
    argNames:
    - ospf
    - rt
    - area
    - p
    - nssa
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct ospf_area*
    - struct prefix_ipv4*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1010
    functionDepth: 2
    functionLinenumber: 1010
    functionLinenumberEnd: 1067
    functionName: ospf_add_discard_route
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - ospf_zebra_add_discard
    - ospf_route_new
    - zlog_debug
    - route_node_get
    - ospf_route_free
    linkageType: ''
    returnType: int
    signature: "int ospf_add_discard_route(struct ospf *ospf, struct route_table *rt,\n\t\t\t
      \  struct ospf_area *area, struct prefix_ipv4 *p,\n\t\t\t   bool nssa)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1076,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_route.c:1078,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1082,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1090,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_route.c:1096,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_route.c:1101,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:1104,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_route.c:1105,1
    - Dst: ospf_zebra_delete_discard
      Src: /src/frr/ospfd/ospf_route.c:1108,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - ospf
    - rt
    - p
    - nssa
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct prefix_ipv4*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1111
    functionName: ospf_delete_discard_route
    functionSourceFile: /src/frr/ospfd/ospf_route.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - zlog_debug
    - ospf_zebra_delete_discard
    - ospf_route_free
    linkageType: ''
    returnType: void
    signature: "void ospf_delete_discard_route(struct ospf *ospf, struct route_table
      *rt,\n\t\t\t       struct prefix_ipv4 *p, bool nssa)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - oi
    - nbr
    - key
    argTypes:
    - struct ospf_interface*
    - struct ospf_neighbor*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 52
    functionName: ospf_nbr_key
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ospf_nbr_key(struct ospf_interface *oi, struct ospf_neighbor
      *nbr,\n\t\t\t struct prefix *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_neighbor.c:59,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_neighbor.c:68,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_neighbor.c:69,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_neighbor.c:70,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_neighbor.c:71,1
    - Dst: ospf_lsdb_init
      Src: /src/frr/ospfd/ospf_neighbor.c:82,1
    - Dst: ospf_lsdb_init
      Src: /src/frr/ospfd/ospf_neighbor.c:83,1
    - Dst: ospf_lsdb_init
      Src: /src/frr/ospfd/ospf_neighbor.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 96
    functionName: ospf_nbr_new
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 1
    functionsReached:
    - OSPF_IF_PARAM
    - ospf_lsdb_init
    - XCALLOC
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: struct ospf_neighbor *ospf_nbr_new(struct ospf_interface *oi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_neighbor.c:101,1
    - Dst: ospf_db_summary_clear
      Src: /src/frr/ospfd/ospf_neighbor.c:102,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_neighbor.c:106,1
    - Dst: ospf_ls_request_delete_all
      Src: /src/frr/ospfd/ospf_neighbor.c:107,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_neighbor.c:110,1
    - Dst: ospf_ls_retransmit_clear
      Src: /src/frr/ospfd/ospf_neighbor.c:111,1
    - Dst: ospf_lsdb_cleanup
      Src: /src/frr/ospfd/ospf_neighbor.c:114,1
    - Dst: ospf_lsdb_cleanup
      Src: /src/frr/ospfd/ospf_neighbor.c:115,1
    - Dst: ospf_lsdb_cleanup
      Src: /src/frr/ospfd/ospf_neighbor.c:116,1
    - Dst: ospf_packet_free
      Src: /src/frr/ospfd/ospf_neighbor.c:120,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_neighbor.c:128,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_neighbor.c:129,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_neighbor.c:130,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_neighbor.c:131,1
    - Dst: event_cancel_event
      Src: /src/frr/ospfd/ospf_neighbor.c:134,1
    - Dst: bfd_sess_free
      Src: /src/frr/ospfd/ospf_neighbor.c:136,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_neighbor.c:138,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_neighbor.c:141,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 98
    functionDepth: 6
    functionLinenumber: 98
    functionLinenumberEnd: 142
    functionName: ospf_nbr_free
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 0
    functionsReached:
    - ospf_lsdb_cleanup
    - ospf_db_summary_count
    - ospf_ls_request_delete_all
    - ospf_db_summary_clear
    - ospf_packet_free
    - ospf_ls_request_count
    - EVENT_OFF
    - event_cancel_event
    - ospf_ls_retransmit_clear
    - XFREE
    - ospf_ls_retransmit_count
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: void ospf_nbr_free(struct ospf_neighbor *nbr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_key
      Src: /src/frr/ospfd/ospf_neighbor.c:154,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_neighbor.c:156,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_neighbor.c:165,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:169,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_neighbor.c:171,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_neighbor.c:172,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:174,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_neighbor.c:189,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:198,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:200,1
    - Dst: ospf_nbr_free
      Src: /src/frr/ospfd/ospf_neighbor.c:205,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts:
    - condition: (rn->info)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/ospfd/ospf_neighbor.c
    constantsTouched: []
    func_position:
      end: 206
      start: 145
    functionDepth: 7
    functionLinenumber: 145
    functionLinenumberEnd: 206
    functionName: ospf_nbr_delete
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - zlog_info
    - route_node_lookup
    - ospf_nbr_free
    - ospf_nbr_key
    - assert
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_nbr_delete(struct ospf_neighbor *nbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_neighbor.c:218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - router_id
    - neighbors
    - size
    argTypes:
    - struct in_addr*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 222
    functionName: ospf_nbr_bidirectional
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 1
    functionsReached:
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: int
    signature: "int ospf_nbr_bidirectional(struct in_addr *router_id, struct in_addr
      *neighbors,\n\t\t\t   int size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_delete
      Src: /src/frr/ospfd/ospf_neighbor.c:228,1
    - Dst: ospf_nbr_new
      Src: /src/frr/ospfd/ospf_neighbor.c:230,1
    - Dst: ospf_nbr_add_self
      Src: /src/frr/ospfd/ospf_neighbor.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oi
    - router_id
    argTypes:
    - struct ospf_interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 225
    functionDepth: 8
    functionLinenumber: 225
    functionLinenumberEnd: 232
    functionName: ospf_nbr_self_reset
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 0
    functionsReached:
    - ospf_nbr_new
    - ospf_nbr_delete
    - ospf_nbr_add_self
    linkageType: ''
    returnType: void
    signature: void ospf_nbr_self_reset(struct ospf_interface *oi, struct in_addr
      router_id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_new
      Src: /src/frr/ospfd/ospf_neighbor.c:241,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_neighbor.c:245,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_neighbor.c:252,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_neighbor.c:255,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_neighbor.c:258,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_neighbor.c:259,1
    - Dst: ospf_nbr_key
      Src: /src/frr/ospfd/ospf_neighbor.c:264,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_neighbor.c:266,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_neighbor.c:270,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/ospfd/ospf_neighbor.c:272,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:273,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - oi
    - router_id
    argTypes:
    - struct ospf_interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 276
    functionName: ospf_nbr_add_self
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - OSPF_IF_PARAM
    - ospf_nbr_key
    - route_node_get_lock_count
    - SET_FLAG
    - UNSET_FLAG
    - route_node_get
    - zlog_debug
    - ospf_nbr_new
    linkageType: ''
    returnType: void
    signature: void ospf_nbr_add_self(struct ospf_interface *oi, struct in_addr router_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_neighbor.c:286,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_neighbor.c:286,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_neighbor.c:288,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - oi
    - state
    argTypes:
    - struct ospf_interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 294
    functionName: ospf_nbr_count
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 2
    functionsReached:
    - IPV4_ADDR_SAME
    - route_top
    - route_next
    linkageType: ''
    returnType: int
    signature: int ospf_nbr_count(struct ospf_interface *oi, int state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_neighbor.c:302,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_neighbor.c:302,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_neighbor.c:304,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_neighbor.c:307,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 312
    functionName: ospf_nbr_count_opaque_capable
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 3
    functionsReached:
    - IPV4_ADDR_SAME
    - CHECK_FLAG
    - route_top
    - route_next
    linkageType: ''
    returnType: int
    signature: int ospf_nbr_count_opaque_capable(struct ospf_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_neighbor.c:329,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_neighbor.c:334,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:337,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - nbrs
    - addr
    argTypes:
    - struct route_table*
    - struct in_addr*
    assertStmts:
    - condition: (rn->info)
      pos:
        line_end: 333
        line_start: 333
        source_file: /src/frr/ospfd/ospf_neighbor.c
    constantsTouched: []
    func_position:
      end: 345
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 345
    functionName: ospf_nbr_lookup_by_addr
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 3
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - assert
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_nbr_lookup_by_addr(struct route_table *nbrs,\n\t\t\t\t\t
      \     struct in_addr *addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_neighbor.c:353,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_neighbor.c:353,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_neighbor.c:355,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - nbrs
    - id
    argTypes:
    - struct route_table*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 361
    functionName: ospf_nbr_lookup_by_routerid
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - IPV4_ADDR_SAME
    - route_top
    - route_next
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_nbr_lookup_by_routerid(struct route_table
      *nbrs,\n\t\t\t\t\t\t  struct in_addr *id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_flush_self_originated_lsas_now
      Src: /src/frr/ospfd/ospf_neighbor.c:373,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_neighbor.c:382,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_neighbor.c:386,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_neighbor.c:386,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_neighbor.c:386,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_neighbor.c:394,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_neighbor.c:398,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - top
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 400
    functionName: ospf_renegotiate_optional_capabilities
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 1
    functionsReached:
    - ospf_flush_self_originated_lsas_now
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - route_next
    - zlog_debug
    - for
    - OSPF_NSM_EVENT_SCHEDULE
    linkageType: ''
    returnType: void
    signature: void ospf_renegotiate_optional_capabilities(struct ospf *top)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_lookup_by_routerid
      Src: /src/frr/ospfd/ospf_neighbor.c:416,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_neighbor.c:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - oi
    - iph
    - ospfh
    argTypes:
    - struct ospf_interface*
    - struct ip*
    - struct ospf_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 420
    functionName: ospf_nbr_lookup
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 3
    functionsReached:
    - ospf_nbr_lookup_by_routerid
    - ospf_nbr_lookup_by_addr
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_nbr_lookup(struct ospf_interface *oi, struct
      ip *iph,\n\t\t\t\t      struct ospf_header *ospfh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_nbr_new
      Src: /src/frr/ospfd/ospf_neighbor.c:428,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_neighbor.c:431,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_neighbor.c:438,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_neighbor.c:439,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_neighbor.c:443,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_neighbor.c:444,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_neighbor.c:453,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_neighbor.c:453,1
    - Dst: ospf_neighbor_bfd_apply
      Src: /src/frr/ospfd/ospf_neighbor.c:457,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_neighbor.c:460,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_neighbor.c:460,1
    - Dst: ospf_nbr_get
      Src: /src/frr/ospfd/ospf_neighbor.c:466,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_neighbor.c:484,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_neighbor.c:486,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_neighbor.c:491,1
    - Dst: ospf_nbr_add
      Src: /src/frr/ospfd/ospf_neighbor.c:494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - oi
    - ospfh
    - p
    argTypes:
    - struct ospf_interface*
    - struct ospf_header*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 500
    functionName: ospf_nbr_add
    functionSourceFile: /src/frr/ospfd/ospf_neighbor.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - ALL_LIST_ELEMENTS_RO
    - ospf_nbr_add
    - ntohs
    - IPV4_ADDR_SAME
    - zlog_debug
    - EVENT_OFF
    - ospf_neighbor_bfd_apply
    - route_node_get
    - ospf_nbr_get
    - if
    - ospf_nbr_new
    - memcpy
    - IF_NAME
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_nbr_add(struct ospf_interface *oi,\n\t\t\t\t\t
      \ struct ospf_header *ospfh,\n\t\t\t\t\t  struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: LEGAL_EXT_INSTANCE_RANGE
    functionSourceFile: /src/frr/ospfd/ospf_ext.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEGAL_EXT_INSTANCE_RANGE(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/ospfd/ospf_sr.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: sr_hash
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int sr_hash(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_sr.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 94
    functionName: sr_cmp
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: bool
    signature: bool sr_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:101,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:102,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 104
    functionName: del_sr_link
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - del_adj_sid
    - XFREE
    linkageType: ''
    returnType: void
    signature: void del_sr_link(void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_zebra_delete_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:111,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 113
    functionName: del_sr_pref
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - ospf_zebra_delete_prefix_sid
    - XFREE
    linkageType: ''
    returnType: void
    signature: void del_sr_pref(void *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_sr.c:125,1
    - Dst: srgb::srgb
      Src: /src/frr/ospfd/ospf_sr.c:131,1
    - Dst: srgb::srgb
      Src: /src/frr/ospfd/ospf_sr.c:132,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_sr.c:136,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_sr.c:137,1
    - Dst: ext_link::ext_link
      Src: /src/frr/ospfd/ospf_sr.c:138,1
    - Dst: ext_prefix::ext_prefix
      Src: /src/frr/ospfd/ospf_sr.c:139,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:141,1
    - Dst: adv_router::adv_router
      Src: /src/frr/ospfd/ospf_sr.c:141,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:145,1
    - Dst: adv_router::adv_router
      Src: /src/frr/ospfd/ospf_sr.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - rid
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 147
    functionName: sr_node_new
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - srgb::srgb
    - ext_link::ext_link
    - osr_debug
    - IPV4_ADDR_COPY
    - list_new
    - ext_prefix::ext_prefix
    - adv_router::adv_router
    linkageType: ''
    returnType: struct sr_node
    signature: struct sr_node *sr_node_new(struct in_addr *rid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/ospfd/ospf_sr.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rid
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 157
    functionName: ospf_sr_node_create
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 2
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: struct sr_node
    signature: struct sr_node *ospf_sr_node_create(struct in_addr *rid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:166,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_sr.c:169,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_sr.c:172,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - srn
    argTypes:
    - struct sr_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 175
    functionName: sr_node_del
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - osr_debug
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void sr_node_del(struct sr_node *srn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:192,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:196,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_sr.c:197,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_sr.c:197,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_sr.c:199,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ospf
    - nexthop
    argTypes:
    - struct ospf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 206
    functionName: get_sr_node_by_nexthop
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - osr_debug
    - route_next
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: struct sr_node
    signature: "struct sr_node *get_sr_node_by_nexthop(struct ospf *ospf,\n\t\t\t\t\t
      \     struct in_addr nexthop)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_zebra_request_label_range
      Src: /src/frr/ospfd/ospf_sr.c:268,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_sr.c:269,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:274,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_sr.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - lower_bound
    - upper_bound
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 291
    functionName: sr_local_block_init
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - osr_debug
    - XCALLOC
    - zlog_err
    - ospf_zebra_request_label_range
    linkageType: ''
    returnType: int
    signature: int sr_local_block_init(uint32_t lower_bound, uint32_t upper_bound)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_zebra_request_label_range
      Src: /src/frr/ospfd/ospf_sr.c:303,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_sr.c:304,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - start
    - size
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 316
    functionName: sr_global_block_init
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - osr_debug
    - zlog_err
    - ospf_zebra_request_label_range
    linkageType: ''
    returnType: int
    signature: int sr_global_block_init(uint32_t start, uint32_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:330,1
    - Dst: ospf_zebra_release_label_range
      Src: /src/frr/ospfd/ospf_sr.c:334,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 341
    functionName: sr_local_block_delete
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - osr_debug
    - ospf_zebra_release_label_range
    - XFREE
    linkageType: ''
    returnType: void
    signature: void sr_local_block_delete(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:353,1
    - Dst: ospf_zebra_release_label_range
      Src: /src/frr/ospfd/ospf_sr.c:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 360
    functionName: sr_global_block_delete
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - osr_debug
    - ospf_zebra_release_label_range
    linkageType: ''
    returnType: void
    signature: void sr_global_block_delete(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_sr.c:402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 406
    functionName: ospf_sr_local_block_request_label
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t ospf_sr_local_block_request_label(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_sr.c:423,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 446
    functionName: ospf_sr_local_block_release_label
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - flog_warn
    linkageType: ''
    returnType: int
    signature: int ospf_sr_local_block_release_label(mpls_label_t label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_sr.c:464,1
    - Dst: ospf_sr_start
      Src: /src/frr/ospfd/ospf_sr.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - start
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 468
    functionName: sr_start_label_manager
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - ospf_sr_start
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void sr_start_label_manager(struct event *start)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:478,1
    - Dst: hash_get
      Src: /src/frr/ospfd/ospf_sr.c:482,1
    - Dst: ospf_zebra_label_manager_ready
      Src: /src/frr/ospfd/ospf_sr.c:496,1
    - Dst: ospf_zebra_label_manager_connect
      Src: /src/frr/ospfd/ospf_sr.c:497,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_sr.c:499,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:501,1
    - Dst: sr_local_block_init
      Src: /src/frr/ospfd/ospf_sr.c:510,1
    - Dst: sr_global_block_init
      Src: /src/frr/ospfd/ospf_sr.c:513,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:520,1
    - Dst: ospf_router_info_update_sr
      Src: /src/frr/ospfd/ospf_sr.c:522,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:525,1
    - Dst: ospf_ext_update_sr
      Src: /src/frr/ospfd/ospf_sr.c:527,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:529,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_sr.c:533,1
    - Dst: OPAQUE_AREA_LSDB
      Src: /src/frr/ospfd/ospf_sr.c:533,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_sr.c:534,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_sr.c:534,1
    - Dst: GET_OPAQUE_TYPE
      Src: /src/frr/ospfd/ospf_sr.c:537,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:537,1
    - Dst: ospf_sr_ri_lsa_update
      Src: /src/frr/ospfd/ospf_sr.c:540,1
    - Dst: ospf_sr_ext_prefix_lsa_update
      Src: /src/frr/ospfd/ospf_sr.c:543,1
    - Dst: ospf_sr_ext_link_lsa_update
      Src: /src/frr/ospfd/ospf_sr.c:546,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 471
    functionDepth: 4
    functionLinenumber: 471
    functionLinenumberEnd: 556
    functionName: ospf_sr_start
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - ospf_router_info_update_sr
    - ospf_zebra_label_manager_ready
    - ospf_sr_ext_prefix_lsa_update
    - GET_OPAQUE_TYPE
    - IS_LSA_MAXAGE
    - osr_debug
    - ospf_zebra_label_manager_connect
    - LSDB_LOOP
    - sr_local_block_init
    - OPAQUE_AREA_LSDB
    - ospf_sr_ext_link_lsa_update
    - ospf_sr_ri_lsa_update
    - event_add_timer
    - sr_global_block_init
    - hash_get
    - ntohl
    - IS_LSA_SELF
    - ospf_ext_update_sr
    linkageType: ''
    returnType: int
    signature: int ospf_sr_start(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:565,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_sr.c:568,1
    - Dst: sr_global_block_delete
      Src: /src/frr/ospfd/ospf_sr.c:571,1
    - Dst: sr_local_block_delete
      Src: /src/frr/ospfd/ospf_sr.c:574,1
    - Dst: hash_clean
      Src: /src/frr/ospfd/ospf_sr.c:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 583
    functionName: ospf_sr_stop
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - osr_debug
    - sr_local_block_delete
    - EVENT_OFF
    - hash_clean
    - sr_global_block_delete
    linkageType: ''
    returnType: void
    signature: void ospf_sr_stop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:596,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_sr.c:598,1
    - Dst: hash_create
      Src: /src/frr/ospfd/ospf_sr.c:619,1
    - Dst: ospf_sr_register_vty
      Src: /src/frr/ospfd/ospf_sr.c:624,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 628
    functionName: ospf_sr_init
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 2
    functionsReached:
    - hash_create
    - osr_debug
    - ospf_sr_register_vty
    - memset
    linkageType: ''
    returnType: int
    signature: int ospf_sr_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_sr_stop
      Src: /src/frr/ospfd/ospf_sr.c:640,1
    - Dst: hash_clean_and_free
      Src: /src/frr/ospfd/ospf_sr.c:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 636
    functionDepth: 3
    functionLinenumber: 636
    functionLinenumberEnd: 643
    functionName: ospf_sr_term
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    - ospf_sr_stop
    linkageType: ''
    returnType: void
    signature: void ospf_sr_term(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_sr_stop
      Src: /src/frr/ospfd/ospf_sr.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 651
    functionDepth: 3
    functionLinenumber: 651
    functionLinenumberEnd: 655
    functionName: ospf_sr_finish
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - ospf_sr_stop
    linkageType: ''
    returnType: void
    signature: void ospf_sr_finish(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_sr.c:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - index
    - srgb
    argTypes:
    - uint32_t
    - struct sr_block
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 675
    functionName: index2label
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - flog_warn
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t index2label(uint32_t index, struct sr_block srgb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_sr.c:684,1
    - Dst: listnode_head
      Src: /src/frr/ospfd/ospf_sr.c:692,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - id
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 699
    functionName: ospf_sr_get_prefix_sid_by_id
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - hash_lookup
    - index2label
    - listnode_head
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t ospf_sr_get_prefix_sid_by_id(struct in_addr *id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_sr.c:710,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:715,1
    - Dst: get_neighbor_by_addr
      Src: /src/frr/ospfd/ospf_sr.c:728,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:740,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_sr.c:741,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_sr.c:741,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_sr.c:741,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_sr.c:746,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_sr.c:747,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_sr.c:748,1
    - Dst: get_nexthop_by_addr
      Src: /src/frr/ospfd/ospf_sr.c:756,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:765,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_sr.c:768,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_sr.c:777,1
    - Dst: compute_link_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:782,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_sr.c:784,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:788,1
    - Dst: get_neighbor_by_addr
      Src: /src/frr/ospfd/ospf_sr.c:791,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:800,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:809,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:813,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:817,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:818,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:822,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - root_id
    - neighbor_id
    argTypes:
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 702
    functionDepth: 2
    functionLinenumber: 702
    functionLinenumberEnd: 829
    functionName: ospf_sr_get_adj_sid_by_id
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - index2label
    - ospf_lookup_by_vrf_id
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - osr_debug
    - CHECK_FLAG
    - route_next
    - hash_lookup
    - IPV4_ADDR_SAME
    - get_nexthop_by_addr
    - IPV4_ADDR_COPY
    - get_neighbor_by_addr
    - for
    - compute_link_nhlfe
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t ospf_sr_get_adj_sid_by_id(struct in_addr *root_id,\n\t\t\t\t
      \      struct in_addr *neighbor_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:849,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:855,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:867,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - srp
    - srnext
    argTypes:
    - struct sr_prefix*
    - struct sr_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 839
    functionDepth: 2
    functionLinenumber: 839
    functionLinenumberEnd: 868
    functionName: sr_prefix_out_label
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - index2label
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t sr_prefix_out_label(const struct sr_prefix *srp,\n\t\t\t\t\tconst
      struct sr_node *srnext)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_sr.c:880,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:886,1
    - Dst: get_nexthop_by_addr
      Src: /src/frr/ospfd/ospf_sr.c:891,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:901,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:904,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:906,1
    - Dst: get_sr_node_by_nexthop
      Src: /src/frr/ospfd/ospf_sr.c:914,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_sr.c:915,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:929,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:936,1
    - Dst: sr_prefix_out_label
      Src: /src/frr/ospfd/ospf_sr.c:941,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:943,1
    - Dst: add_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:951,1
    - Dst: ospf_zebra_send_adjacency_sid
      Src: /src/frr/ospfd/ospf_sr.c:954,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:958,1
    - Dst: ospf_zebra_send_adjacency_sid
      Src: /src/frr/ospfd/ospf_sr.c:961,1
    - Dst: update_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:965,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:967,1
    - Dst: add_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:968,1
    - Dst: get_ext_link_sid
      Src: /src/frr/ospfd/ospf_sr.c:977,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:991,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_sr.c:992,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_sr.c:996,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:999,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_sr.c:1002,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1003,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1007,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1012,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1014,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1014,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1016,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1017,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1022,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1027,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1029,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1029,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1031,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1032,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1037,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1038,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_sr.c:1043,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1046,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1048,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 1
    argNames:
    - srp
    argTypes:
    - struct sr_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 878
    functionDepth: 2
    functionLinenumber: 878
    functionLinenumberEnd: 1052
    functionName: compute_prefix_nhlfe
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - GET_LABEL
    - get_ext_link_sid
    - update_adj_sid
    - osr_debug
    - ntohs
    - add_adj_sid
    - zlog_warn
    - TLV_SIZE
    - ospf_lookup_by_vrf_id
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - del_adj_sid
    - sr_prefix_out_label
    - if
    - ospf_zebra_send_adjacency_sid
    - ntohl
    - index2label
    - get_sr_node_by_nexthop
    - CHECK_FLAG
    - get_nexthop_by_addr
    - IPV4_ADDR_COPY
    - TLV_HDR_NEXT
    linkageType: ''
    returnType: int
    signature: int compute_prefix_nhlfe(struct sr_prefix *srp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1067,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1068,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_sr.c:1069,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_sr.c:1073,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1076,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_sr.c:1079,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1080,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1084,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1087,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1092,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1093,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1093,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1095,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1096,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_sr.c:1099,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_sr.c:1104,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1107,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - tlvh
    - size
    argTypes:
    - struct tlv_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1111
    functionName: get_ext_prefix_sid
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - GET_LABEL
    - XCALLOC
    - CHECK_FLAG
    - osr_debug
    - ntohs
    - IPV4_ADDR_COPY
    - zlog_warn
    - flog_err
    - XFREE
    - TLV_HDR_NEXT
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: struct sr_prefix
    signature: "struct sr_prefix *get_ext_prefix_sid(struct tlv_header *tlvh,\n\t\t\t\t\t
      \   size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 2
    argNames:
    - srl1
    - srl2
    argTypes:
    - struct sr_link*
    - struct sr_link*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1126
    functionName: sr_link_cmp
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sr_link_cmp(struct sr_link *srl1, struct sr_link *srl2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - srp1
    - srp2
    argTypes:
    - struct sr_prefix*
    - struct sr_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1129
    functionDepth: 0
    functionLinenumber: 1129
    functionLinenumberEnd: 1135
    functionName: sr_prefix_cmp
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sr_prefix_cmp(struct sr_prefix *srp1, struct sr_prefix *srp2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1150,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1153,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1154,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1155,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1159,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1165,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1166,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1173,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_sr.c:1174,1
    - Dst: compute_link_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:1176,1
    - Dst: add_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1177,1
    - Dst: add_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1178,1
    - Dst: sr_link_cmp
      Src: /src/frr/ospfd/ospf_sr.c:1182,1
    - Dst: compute_link_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:1185,1
    - Dst: update_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1186,1
    - Dst: update_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1188,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1191,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1192,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_sr.c:1196,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1197,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1199,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_sr.c:1200,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1206,1
    - Dst: update_ext_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1212,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1223,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1226,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1230,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_sr.c:1232,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1238,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1239,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1244,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_sr.c:1249,1
    - Dst: compute_prefix_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:1251,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1252,1
    - Dst: sr_prefix_cmp
      Src: /src/frr/ospfd/ospf_sr.c:1258,1
    - Dst: compute_prefix_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:1259,1
    - Dst: ospf_zebra_delete_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1260,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_sr.c:1262,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1263,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_sr.c:1264,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1265,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1270,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1276,1
    - Dst: update_in_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:1285,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1292,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1299,1
    - Dst: ospf_zebra_delete_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1303,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:1305,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1307,1
    - Dst: update_out_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:1315,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1327,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1330,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1335,1
    - Dst: sr_prefix_out_label
      Src: /src/frr/ospfd/ospf_sr.c:1341,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1345,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 19
    argCount: 3
    argNames:
    - srn
    - srl
    - lsa_flags
    argTypes:
    - struct sr_node*
    - struct sr_link*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1138
    functionDepth: 3
    functionLinenumber: 1138
    functionLinenumberEnd: 1347
    functionName: update_ext_link_sid
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - update_out_nhlfe
    - compute_prefix_nhlfe
    - update_adj_sid
    - osr_debug
    - update_ext_prefix_sid
    - listnode_add
    - sr_prefix_cmp
    - add_adj_sid
    - ALL_LIST_ELEMENTS_RO
    - del_adj_sid
    - sr_prefix_out_label
    - sr_link_cmp
    - GET_OPAQUE_ID
    - ospf_zebra_delete_prefix_sid
    - prefix_same
    - index2label
    - XFREE
    - listnode_delete
    - CHECK_FLAG
    - IPV4_ADDR_COPY
    - ospf_zebra_update_prefix_sid
    - update_in_nhlfe
    - compute_link_nhlfe
    linkageType: ''
    returnType: void
    signature: "void update_ext_link_sid(struct sr_node *srn, struct sr_link *srl,\n\t\t\t\tuint8_t
      lsa_flags)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1369,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1370,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1370,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_sr.c:1374,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1378,1
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_sr.c:1384,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_sr.c:1394,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_sr.c:1395,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1396,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_sr.c:1412,1
    - Dst: hash_release
      Src: /src/frr/ospfd/ospf_sr.c:1425,1
    - Dst: sr_node_del
      Src: /src/frr/ospfd/ospf_sr.c:1426,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1433,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1434,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1436,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1436,1
    - Dst: GET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_sr.c:1442,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1442,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1443,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1443,1
    - Dst: hash_get
      Src: /src/frr/ospfd/ospf_sr.c:1448,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1452,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1461,1
    - Dst: GET_RANGE_SIZE
      Src: /src/frr/ospfd/ospf_sr.c:1470,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1470,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1471,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1471,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1483,1
    - Dst: hash_iterate
      Src: /src/frr/ospfd/ospf_sr.c:1490,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 72
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1357
    functionDepth: 2
    functionLinenumber: 1357
    functionLinenumberEnd: 1491
    functionName: ospf_sr_ri_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 2
    functionsReached:
    - GET_LABEL
    - TLV_HDR_TOP
    - sr_node_del
    - osr_debug
    - IS_LSA_SELF
    - GET_RANGE_SIZE
    - ntohs
    - hash_lookup
    - flog_err
    - TLV_HDR_NEXT
    - hash_iterate
    - hash_release
    - TLV_SIZE
    - hash_get
    - ntohl
    - GET_OPAQUE_ID
    linkageType: ''
    returnType: void
    signature: void ospf_sr_ri_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1502,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1503,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1503,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1507,1
    - Dst: hash_release
      Src: /src/frr/ospfd/ospf_sr.c:1513,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1517,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1523,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1524,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1527,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1527,1
    - Dst: sr_node_del
      Src: /src/frr/ospfd/ospf_sr.c:1533,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1497
    functionDepth: 2
    functionLinenumber: 1497
    functionLinenumberEnd: 1534
    functionName: ospf_sr_ri_lsa_delete
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - sr_node_del
    - osr_debug
    - flog_err
    - hash_release
    - ntohl
    - GET_OPAQUE_ID
    linkageType: ''
    returnType: void
    signature: void ospf_sr_ri_lsa_delete(struct ospf_lsa *lsa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1546,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1547,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1547,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1552,1
    - Dst: hash_get
      Src: /src/frr/ospfd/ospf_sr.c:1558,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_sr.c:1564,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_sr.c:1565,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1566,1
    - Dst: get_ext_link_sid
      Src: /src/frr/ospfd/ospf_sr.c:1568,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1571,1
    - Dst: update_ext_link_sid
      Src: /src/frr/ospfd/ospf_sr.c:1572,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_sr.c:1575,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1537
    functionDepth: 4
    functionLinenumber: 1537
    functionLinenumberEnd: 1577
    functionName: ospf_sr_ext_link_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 2
    functionsReached:
    - update_ext_link_sid
    - TLV_HDR_TOP
    - get_ext_link_sid
    - osr_debug
    - ntohs
    - flog_err
    - TLV_HDR_NEXT
    - TLV_SIZE
    - hash_get
    - ntohl
    - GET_OPAQUE_ID
    linkageType: ''
    returnType: void
    signature: void ospf_sr_ext_link_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1586,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1588,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1589,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1589,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1594,1
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_sr.c:1600,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1608,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1615,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_sr.c:1621,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1622,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1623,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_sr.c:1624,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1625,1
    - Dst: ospf_sr_ext_itf_add
      Src: /src/frr/ospfd/ospf_sr.c:1630,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1635,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_sr.c:1643,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_sr.c:1648,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1655,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1657,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1657,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1659,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1668,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1670,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1670,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1672,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1682,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1684,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1684,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1686,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1695,1
    - Dst: GET_LABEL
      Src: /src/frr/ospfd/ospf_sr.c:1697,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1697,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1699,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1580
    functionDepth: 1
    functionLinenumber: 1580
    functionLinenumberEnd: 1710
    functionName: ospf_sr_ext_link_lsa_delete
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - SET_OPAQUE_LSID
    - GET_LABEL
    - listnode_delete
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - osr_debug
    - del_adj_sid
    - CHECK_FLAG
    - hash_lookup
    - flog_err
    - ospf_sr_ext_itf_add
    - XFREE
    - if
    - ntohl
    - GET_OPAQUE_ID
    linkageType: ''
    returnType: void
    signature: void ospf_sr_ext_link_lsa_delete(struct ospf_lsa *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1725,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_sr.c:1734,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1736,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_sr.c:1741,1
    - Dst: ospf_zebra_delete_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1742,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfd/ospf_sr.c:1745,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1747,1
    - Dst: del_adj_sid
      Src: /src/frr/ospfd/ospf_sr.c:1754,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_sr.c:1755,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1756,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - exti
    argTypes:
    - struct ext_itf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1717
    functionDepth: 1
    functionLinenumber: 1717
    functionLinenumberEnd: 1758
    functionName: ospf_sr_ext_itf_delete
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 2
    functionsReached:
    - SET_OPAQUE_LSID
    - ospf_zebra_delete_prefix_sid
    - listnode_delete
    - ALL_LIST_ELEMENTS_RO
    - osr_debug
    - del_adj_sid
    - XFREE
    - if
    linkageType: ''
    returnType: void
    signature: void ospf_sr_ext_itf_delete(struct ext_itf *exti)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1771,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1772,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1772,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1777,1
    - Dst: hash_get
      Src: /src/frr/ospfd/ospf_sr.c:1783,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospfd/ospf_sr.c:1788,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospfd/ospf_sr.c:1789,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_sr.c:1790,1
    - Dst: get_ext_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1792,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1795,1
    - Dst: update_ext_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1796,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospfd/ospf_sr.c:1799,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1762
    functionDepth: 2
    functionLinenumber: 1762
    functionLinenumberEnd: 1801
    functionName: ospf_sr_ext_prefix_lsa_update
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 2
    functionsReached:
    - TLV_HDR_TOP
    - osr_debug
    - update_ext_prefix_sid
    - ntohs
    - get_ext_prefix_sid
    - flog_err
    - TLV_HDR_NEXT
    - TLV_SIZE
    - hash_get
    - ntohl
    - GET_OPAQUE_ID
    linkageType: ''
    returnType: void
    signature: void ospf_sr_ext_prefix_lsa_update(struct ospf_lsa *lsa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1810,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1812,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1813,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1813,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1818,1
    - Dst: hash_lookup
      Src: /src/frr/ospfd/ospf_sr.c:1824,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1832,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1839,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_sr.c:1844,1
    - Dst: ospf_zebra_delete_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1845,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_sr.c:1846,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:1847,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_sr.c:1849,1
    - Dst: GET_OPAQUE_ID
      Src: /src/frr/ospfd/ospf_sr.c:1852,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_sr.c:1852,1
    - Dst: ospf_sr_update_local_prefix
      Src: /src/frr/ospfd/ospf_sr.c:1866,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1879,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_sr.c:1881,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:1889,1
    - Dst: ospf_ext_schedule_prefix_index
      Src: /src/frr/ospfd/ospf_sr.c:1892,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1895,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1900,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:1901,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:1903,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1906,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1804
    functionDepth: 3
    functionLinenumber: 1804
    functionLinenumberEnd: 1908
    functionName: ospf_sr_ext_prefix_lsa_delete
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - ospf_zebra_delete_prefix_sid
    - ospf_sr_update_local_prefix
    - ospf_ext_schedule_prefix_index
    - index2label
    - listnode_delete
    - ALL_LIST_ELEMENTS_RO
    - osr_debug
    - CHECK_FLAG
    - hash_lookup
    - flog_err
    - IPV4_ADDR_SAME
    - IPV4_ADDR_COPY
    - ospf_zebra_update_prefix_sid
    - XFREE
    - if
    - ntohl
    - GET_OPAQUE_ID
    linkageType: ''
    returnType: void
    signature: void ospf_sr_ext_prefix_lsa_delete(struct ospf_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1925,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:1932,1
    - Dst: compute_prefix_nhlfe
      Src: /src/frr/ospfd/ospf_sr.c:1938,1
    - Dst: switch
      Src: /src/frr/ospfd/ospf_sr.c:1941,1
    - Dst: ospf_zebra_delete_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1945,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:1952,1
    - Dst: ospf_sr_update_task
      Src: /src/frr/ospfd/ospf_sr.c:1960,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_sr.c:1969,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1971,1
    - Dst: hash_iterate
      Src: /src/frr/ospfd/ospf_sr.c:1973,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_sr.c:1977,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:1979,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1916
    functionDepth: 3
    functionLinenumber: 1916
    functionLinenumberEnd: 1982
    functionName: ospf_sr_nhlfe_update
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - switch
    - ospf_zebra_delete_prefix_sid
    - compute_prefix_nhlfe
    - ALL_LIST_ELEMENTS_RO
    - osr_debug
    - monotime
    - ospf_zebra_update_prefix_sid
    - hash_iterate
    - ospf_sr_update_task
    linkageType: ''
    returnType: void
    signature: void ospf_sr_nhlfe_update(struct hash_bucket *bucket, void *args)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2008,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2013,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2020,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2022,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2025,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2028,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:2031,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2032,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_sr.c:2034,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:2034,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2035,1
    - Dst: else
      Src: /src/frr/ospfd/ospf_sr.c:2036,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:2036,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2038,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2040,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_sr.c:2045,1
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_sr.c:2052,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_sr.c:2055,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2058,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:2063,1
    - Dst: ospf_sr_start
      Src: /src/frr/ospfd/ospf_sr.c:2067,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_sr.c:2072,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:2083,1
    - Dst: ospf_ext_update_sr
      Src: /src/frr/ospfd/ospf_sr.c:2086,1
    - Dst: ospf_router_info_update_sr
      Src: /src/frr/ospfd/ospf_sr.c:2089,1
    - Dst: ospf_sr_stop
      Src: /src/frr/ospfd/ospf_sr.c:2092,1
    - Dst: ospf_sr_enabled
      Src: /src/frr/ospfd/ospf_sr.c:2097,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2103,1
    - Dst: ranges_overlap
      Src: /src/frr/ospfd/ospf_sr.c:2109,1
    - Dst: sr_range_is_valid
      Src: /src/frr/ospfd/ospf_sr.c:2117,1
    - Dst: update_sr_blocks
      Src: /src/frr/ospfd/ospf_sr.c:2132,1
    - Dst: sr_global_block_delete
      Src: /src/frr/ospfd/ospf_sr.c:2160,1
    - Dst: sr_local_block_delete
      Src: /src/frr/ospfd/ospf_sr.c:2175,1
    - Dst: sr_local_block_init
      Src: /src/frr/ospfd/ospf_sr.c:2178,1
    - Dst: ospf_sr_stop
      Src: /src/frr/ospfd/ospf_sr.c:2179,1
    - Dst: sr_global_block_init
      Src: /src/frr/ospfd/ospf_sr.c:2194,1
    - Dst: ospf_sr_stop
      Src: /src/frr/ospfd/ospf_sr.c:2196,1
    - Dst: ospf_router_info_update_sr
      Src: /src/frr/ospfd/ospf_sr.c:2204,1
    - Dst: hash_iterate
      Src: /src/frr/ospfd/ospf_sr.c:2208,1
    - Dst: ospf_ext_link_srlb_update
      Src: /src/frr/ospfd/ospf_sr.c:2215,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_sr.c:2221,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_sr.c:2237,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_sr.c:2238,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_sr.c:2241,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_sr.c:2243,1
    - Dst: sr_range_is_valid
      Src: /src/frr/ospfd/ospf_sr.c:2247,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2248,1
    - Dst: sr_range_is_valid
      Src: /src/frr/ospfd/ospf_sr.c:2253,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2254,1
    - Dst: ranges_overlap
      Src: /src/frr/ospfd/ospf_sr.c:2259,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2260,1
    - Dst: update_sr_blocks
      Src: /src/frr/ospfd/ospf_sr.c:2266,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_sr.c:2272,1
    - Dst: update_sr_blocks
      Src: /src/frr/ospfd/ospf_sr.c:2282,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_sr.c:2290,1
    - Dst: ospf_sr_enabled
      Src: /src/frr/ospfd/ospf_sr.c:2300,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_sr.c:2304,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_sr.c:2305,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2307,1
    - Dst: ospf_router_info_update_sr
      Src: /src/frr/ospfd/ospf_sr.c:2323,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_sr.c:2329,1
    - Dst: ospf_sr_enabled
      Src: /src/frr/ospfd/ospf_sr.c:2338,1
    - Dst: ospf_router_info_update_sr
      Src: /src/frr/ospfd/ospf_sr.c:2348,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_sr.c:2354,1
    - Dst: ospf_sr_enabled
      Src: /src/frr/ospfd/ospf_sr.c:2376,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_sr.c:2380,1
    - Dst: str2prefix
      Src: /src/frr/ospfd/ospf_sr.c:2381,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2382,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_sr.c:2387,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_sr.c:2388,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2390,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_sr.c:2396,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_sr.c:2397,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_sr.c:2404,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_sr.c:2405,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_sr.c:2407,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:2425,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_sr.c:2426,1
    - Dst: ospf_zebra_delete_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:2427,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_sr.c:2431,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/ospfd/ospf_sr.c:2432,1
    - Dst: index2label
      Src: /src/frr/ospfd/ospf_sr.c:2450,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_sr.c:2454,1
    - Dst: if_lookup_prefix
      Src: /src/frr/ospfd/ospf_sr.c:2458,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_sr.c:2467,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_sr.c:2468,1
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_sr.c:2474,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2475,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_sr.c:2476,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_sr.c:2483,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_sr.c:2488,1
    - Dst: ospf_ext_schedule_prefix_index
      Src: /src/frr/ospfd/ospf_sr.c:2493,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_sr.c:2496,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 188
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2502
      start: 2001
    functionDepth: 5
    functionLinenumber: 2001
    functionLinenumberEnd: 2502
    functionName: ospf_sr_config_write_router
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 0
    functionsReached:
    - ospf_router_info_update_sr
    - osr_debug
    - listnode_add
    - VTY_DECLVAR_INSTANCE_CONTEXT
    - ospf_ext_schedule_prefix_index
    - if_lookup_prefix
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - sr_local_block_delete
    - ospf_sr_stop
    - if_is_loopback
    - ospf_sr_enabled
    - sr_local_block_init
    - ospf_ext_link_srlb_update
    - str2prefix
    - if
    - hash_iterate
    - ospf_sr_start
    - DEFUN
    - ospf_zebra_delete_prefix_sid
    - zlog_info
    - prefix_same
    - vty_out
    - index2label
    - sr_range_is_valid
    - XFREE
    - sr_global_block_init
    - sr_global_block_delete
    - argv_find
    - update_sr_blocks
    - strtoul
    - CHECK_FLAG
    - CMD_SUCCESS
    - ranges_overlap
    - IPV4_ADDR_COPY
    - else
    - ospf_zebra_update_prefix_sid
    - ospf_ext_update_sr
    linkageType: ''
    returnType: void
    signature: void ospf_sr_config_write_router(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2951,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2953,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2954,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2955,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2956,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2957,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2958,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2959,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_sr.c:2960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2961
      start: 2949
    functionDepth: 1
    functionLinenumber: 2949
    functionLinenumberEnd: 2961
    functionName: ospf_sr_register_vty
    functionSourceFile: /src/frr/ospfd/ospf_sr.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf_sr_register_vty(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ldp_sync.c:42,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:44,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ospfd/ospf_ldp_sync.c:48,1
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:49,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:52,1
    - Dst: ospf_ldp_sync_if_start
      Src: /src/frr/ospfd/ospf_ldp_sync.c:55,1
    - Dst: ospf_ldp_sync_if_complete
      Src: /src/frr/ospfd/ospf_ldp_sync.c:57,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct ldp_igp_sync_if_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 60
    functionName: ospf_ldp_sync_state_update
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ospf_ldp_sync_if_start
    - if_lookup_by_index
    - ospf_lookup_by_vrf_id
    - ols_debug
    - CHECK_FLAG
    - if_is_loopback
    - ospf_ldp_sync_if_complete
    linkageType: ''
    returnType: int
    signature: int ospf_ldp_sync_state_update(struct ldp_igp_sync_if_state state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ldp_sync.c:69,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:71,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:77,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_ldp_sync.c:83,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ospfd/ospf_ldp_sync.c:84,1
    - Dst: ospf_ldp_sync_if_start
      Src: /src/frr/ospfd/ospf_ldp_sync.c:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - announce
    argTypes:
    - struct ldp_igp_sync_announce
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 88
    functionName: ospf_ldp_sync_announce_update
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ospf_ldp_sync_if_start
    - ospf_lookup_by_vrf_id
    - ols_debug
    - CHECK_FLAG
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int ospf_ldp_sync_announce_update(struct ldp_igp_sync_announce announce)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:94,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_ldp_sync.c:96,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_ldp_sync.c:97,1
    - Dst: zclient_send_opaque
      Src: /src/frr/ospfd/ospf_ldp_sync.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 103
    functionName: ospf_ldp_sync_state_req_msg
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ols_debug
    - strlcpy
    - memset
    - zclient_send_opaque
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_state_req_msg(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:119,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:123,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:124,1
    - Dst: ldp_sync_info_create
      Src: /src/frr/ospfd/ospf_ldp_sync.c:126,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:131,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:134,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ospfd/ospf_ldp_sync.c:138,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 141
    functionName: ospf_ldp_sync_if_init
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ldp_sync_info_create
    - if_is_pointopoint
    - if_is_loopback
    - ols_debug
    - CHECK_FLAG
    - IF_DEF_PARAMS
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_if_init(struct ospf_interface *oi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:148,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:151,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:163,1
    - Dst: ospf_if_recalculate_output_cost
      Src: /src/frr/ospfd/ospf_ldp_sync.c:166,1
    - Dst: ospf_ldp_sync_holddown_timer_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:167,1
    - Dst: ospf_ldp_sync_state_req_msg
      Src: /src/frr/ospfd/ospf_ldp_sync.c:170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ifp
    - send_state_req
    argTypes:
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 172
    functionName: ospf_ldp_sync_if_start
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 2
    functionsReached:
    - ospf_ldp_sync_holddown_timer_add
    - if_is_loopback
    - ols_debug
    - IF_DEF_PARAMS
    - ospf_if_recalculate_output_cost
    - ospf_ldp_sync_state_req_msg
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_if_start(struct interface *ifp, bool send_state_req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:179,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:182,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ldp_sync.c:193,1
    - Dst: ospf_if_recalculate_output_cost
      Src: /src/frr/ospfd/ospf_ldp_sync.c:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 196
    functionName: ospf_ldp_sync_if_complete
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 1
    functionsReached:
    - ospf_if_recalculate_output_cost
    - if_is_loopback
    - EVENT_OFF
    - IF_DEF_PARAMS
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_if_complete(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_ldp_sync.c:205,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:207,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_ldp_sync.c:218,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_ldp_sync.c:220,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ospfd/ospf_ldp_sync.c:221,1
    - Dst: ospf_ldp_sync_ldp_fail
      Src: /src/frr/ospfd/ospf_ldp_sync.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct zapi_client_close_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 223
    functionName: ospf_ldp_sync_handle_client_close
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ospf_lookup_by_vrf_id
    - CHECK_FLAG
    - zlog_err
    - ospf_ldp_sync_ldp_fail
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_handle_client_close(struct zapi_client_close_info
      *info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:230,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:233,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ldp_sync.c:244,1
    - Dst: ospf_if_recalculate_output_cost
      Src: /src/frr/ospfd/ospf_ldp_sync.c:246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 248
    functionName: ospf_ldp_sync_ldp_fail
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 1
    functionsReached:
    - ospf_if_recalculate_output_cost
    - if_is_loopback
    - EVENT_OFF
    - IF_DEF_PARAMS
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_ldp_fail(struct interface *ifp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:255,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:258,1
    - Dst: ldp_sync_if_down
      Src: /src/frr/ospfd/ospf_ldp_sync.c:261,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:264,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ospfd/ospf_ldp_sync.c:274,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ospfd/ospf_ldp_sync.c:280,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 288
    functionName: ospf_ldp_sync_if_down
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - if_is_pointopoint
    - if_is_loopback
    - ols_debug
    - IF_DEF_PARAMS
    - ldp_sync_if_down
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_if_down(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:295,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:306,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ldp_sync.c:308,1
    - Dst: ospf_if_recalculate_output_cost
      Src: /src/frr/ospfd/ospf_ldp_sync.c:311,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:312,1
    - Dst: ldp_sync_info_free
      Src: /src/frr/ospfd/ospf_ldp_sync.c:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ifp
    - remove
    argTypes:
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 318
    functionName: ospf_ldp_sync_if_remove
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ols_debug
    - CHECK_FLAG
    - IF_DEF_PARAMS
    - ospf_if_recalculate_output_cost
    - EVENT_OFF
    - ldp_sync_info_free
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_if_remove(struct interface *ifp, bool remove)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ldp_sync_if_start
      Src: /src/frr/ospfd/ospf_ldp_sync.c:327,1
    - Dst: ospf_ldp_sync_if_down
      Src: /src/frr/ospfd/ospf_ldp_sync.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - oi
    - state
    - old_state
    argTypes:
    - struct ospf_interface*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 320
    functionDepth: 3
    functionLinenumber: 320
    functionLinenumberEnd: 337
    functionName: ospf_ldp_sync_ism_change
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ospf_ldp_sync_if_start
    - ospf_ldp_sync_if_down
    linkageType: ''
    returnType: int
    signature: "int ospf_ldp_sync_ism_change(struct ospf_interface *oi, int state,\n\t\t\t\t
      \   int old_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:352,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:353,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:359,1
    - Dst: ospf_if_recalculate_output_cost
      Src: /src/frr/ospfd/ospf_ldp_sync.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 364
    functionName: ospf_ldp_sync_holddown_timer
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ospf_if_recalculate_output_cost
    - ols_debug
    - IF_DEF_PARAMS
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_holddown_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:371,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:383,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_ldp_sync.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 388
    functionName: ospf_ldp_sync_holddown_timer_add
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - ols_debug
    - IF_DEF_PARAMS
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_holddown_timer_add(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:401,1
    - Dst: zclient_unregister_opaque
      Src: /src/frr/ospfd/ospf_ldp_sync.c:403,1
    - Dst: zclient_unregister_opaque
      Src: /src/frr/ospfd/ospf_ldp_sync.c:405,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:409,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:410,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_ldp_sync.c:414,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ospfd/ospf_ldp_sync.c:415,1
    - Dst: ospf_ldp_sync_if_remove
      Src: /src/frr/ospfd/ospf_ldp_sync.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ospf
    - remove
    argTypes:
    - struct ospf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 418
    functionName: ospf_ldp_sync_gbl_exit
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 1
    functionsReached:
    - zclient_unregister_opaque
    - ospf_ldp_sync_if_remove
    - CHECK_FLAG
    - FOR_ALL_INTERFACES
    - UNSET_FLAG
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_gbl_exit(struct ospf *ospf, bool remove)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:432,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:435,1
    - Dst: ldp_sync_info_create
      Src: /src/frr/ospfd/ospf_ldp_sync.c:437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:441,1
    - Dst: ols_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:447,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ospfd/ospf_ldp_sync.c:451,1
    - Dst: ospf_ldp_sync_state_req_msg
      Src: /src/frr/ospfd/ospf_ldp_sync.c:453,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ldp_sync.c:456,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - ospf
    - ifp
    argTypes:
    - struct ospf*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 423
    functionDepth: 2
    functionLinenumber: 423
    functionLinenumberEnd: 459
    functionName: ospf_if_set_ldp_sync_enable
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ldp_sync_info_create
    - if_is_pointopoint
    - ols_debug
    - if_is_loopback
    - CHECK_FLAG
    - IF_DEF_PARAMS
    - zlog_debug
    - ospf_ldp_sync_state_req_msg
    linkageType: ''
    returnType: void
    signature: void ospf_if_set_ldp_sync_enable(struct ospf *ospf, struct interface
      *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_ldp_sync.c:469,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:472,1
    - Dst: ldp_sync_info_create
      Src: /src/frr/ospfd/ospf_ldp_sync.c:474,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:478,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ospf
    - ifp
    argTypes:
    - struct ospf*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 484
    functionName: ospf_if_set_ldp_sync_holddown
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - if_is_loopback
    - ldp_sync_info_create
    - CHECK_FLAG
    - IF_DEF_PARAMS
    linkageType: ''
    returnType: void
    signature: void ospf_if_set_ldp_sync_holddown(struct ospf *ospf, struct interface
      *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:494,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:496,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:498,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:501,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:503,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - vty
    - ospf
    - json_vrf
    - use_json
    argTypes:
    - struct vty*
    - struct ospf*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 511
    functionName: ospf_ldp_sync_show_info
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - vty_out
    - json_object_boolean_true_add
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void ospf_ldp_sync_show_info(struct vty *vty, struct ospf *ospf,\n\t\t\t
      \    json_object *json_vrf, bool use_json)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:524,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:531,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:534,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:537,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:541,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:542,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:546,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:553,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:557,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_ldp_sync.c:564,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:569,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:573,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:577,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_ldp_sync.c:579,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:584,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:589,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:593,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:598,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ospfd/ospf_ldp_sync.c:599,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:605,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:609,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 5
    argNames:
    - vty
    - oi
    - ifp
    - json_interface_sub
    - use_json
    argTypes:
    - struct vty*
    - struct ospf_interface*
    - struct interface*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 513
    functionDepth: 2
    functionLinenumber: 513
    functionLinenumberEnd: 612
    functionName: show_ip_ospf_mpls_ldp_interface_sub
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ospf_timer_dump
    - if_is_pointopoint
    - vty_out
    - IF_DEF_PARAMS
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_boolean_false_add
    - monotime_until
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_mpls_ldp_interface_sub(struct vty *vty,\n\t\t\t\t\t
      \      struct ospf_interface *oi,\n\t\t\t\t\t       struct interface *ifp,\n\t\t\t\t\t
      \      json_object *json_interface_sub,\n\t\t\t\t\t       bool use_json)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_ldp_sync.c:621,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_ldp_sync.c:630,1
    - Dst: if_is_up
      Src: /src/frr/ospfd/ospf_ldp_sync.c:631,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:632,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ldp_sync.c:636,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:636,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ldp_sync.c:637,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_ldp_sync.c:645,1
    - Dst: show_ip_ospf_mpls_ldp_interface_sub
      Src: /src/frr/ospfd/ospf_ldp_sync.c:647,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:652,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_ldp_sync.c:660,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_ldp_sync.c:665,1
    - Dst: if_is_up
      Src: /src/frr/ospfd/ospf_ldp_sync.c:666,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:667,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:670,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ldp_sync.c:674,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:674,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ldp_sync.c:675,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_ldp_sync.c:683,1
    - Dst: show_ip_ospf_mpls_ldp_interface_sub
      Src: /src/frr/ospfd/ospf_ldp_sync.c:685,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:690,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 43
    argCount: 5
    argNames:
    - vty
    - ospf
    - intf_name
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf*
    - char*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 698
    functionName: show_ip_ospf_mpls_ldp_interface_common
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - show_ip_ospf_mpls_ldp_interface_sub
    - if_lookup_by_name
    - vty_out
    - ospf_oi_count
    - route_top
    - IF_OIFS
    - route_next
    - json_object_object_add
    - vrf_lookup_by_id
    - if_is_up
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_mpls_ldp_interface_common(struct vty *vty,\n\t\t\t\t\t\t
      \ struct ospf *ospf,\n\t\t\t\t\t\t  char *intf_name,\n\t\t\t\t\t\t  json_object
      *json,\n\t\t\t\t\t\t  bool use_json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_ldp_sync.c:630,1
    - Dst: if_is_up
      Src: /src/frr/ospfd/ospf_ldp_sync.c:631,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:632,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ldp_sync.c:636,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_ldp_sync.c:636,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ldp_sync.c:637,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_ldp_sync.c:645,1
    - Dst: show_ip_ospf_mpls_ldp_interface_sub
      Src: /src/frr/ospfd/ospf_ldp_sync.c:647,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_ldp_sync.c:652,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 626
    functionDepth: 3
    functionLinenumber: 626
    functionLinenumberEnd: 657
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 16
    functionsReached:
    - json_object_new_object
    - show_ip_ospf_mpls_ldp_interface_sub
    - vty_out
    - ospf_oi_count
    - route_top
    - IF_OIFS
    - route_next
    - json_object_object_add
    - if_is_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:705,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:706,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:707,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - ospf
    argTypes:
    - struct vty*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 710
    functionName: ospf_ldp_sync_write_config
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_write_config(struct vty *vty, struct ospf *ospf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:725,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:727,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:729,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ldp_sync.c:731,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_ldp_sync.c:732,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - params
    argTypes:
    - struct vty*
    - struct ospf_if_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 734
    functionName: ospf_ldp_sync_if_write_config
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void ospf_ldp_sync_if_write_config(struct vty *vty,\n\t\t\t\t   struct
      ospf_if_params *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1048,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1049,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1050,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1051,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1054,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1055,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1056,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1057,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1060,1
    - Dst: hook_register
      Src: /src/frr/ospfd/ospf_ldp_sync.c:1062,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1045
    functionDepth: 1
    functionLinenumber: 1045
    functionLinenumberEnd: 1064
    functionName: ospf_ldp_sync_init
    functionSourceFile: /src/frr/ospfd/ospf_ldp_sync.c
    functionUses: 1
    functionsReached:
    - install_element
    - hook_register
    linkageType: ''
    returnType: void
    signature: void ospf_ldp_sync_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ism.c:43,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_ism.c:50,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - routers
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 58
    functionName: ospf_dr_election_sub
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - IPV4_ADDR_CMP
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: struct ospf_neighbor *ospf_dr_election_sub(struct list *routers)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ism.c:67,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ism.c:70,1
    - Dst: NBR_IS_DR
      Src: /src/frr/ospfd/ospf_ism.c:72,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ism.c:73,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ism.c:76,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:76,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_ism.c:81,1
    - Dst: ospf_dr_election_sub
      Src: /src/frr/ospfd/ospf_ism.c:82,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ism.c:88,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ism.c:90,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ism.c:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - oi
    - el_list
    argTypes:
    - struct ospf_interface*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 95
    functionName: ospf_elect_dr
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - DR
    - list_delete
    - ALL_LIST_ELEMENTS_RO
    - NBR_IS_DR
    - listcount
    - ospf_dr_election_sub
    - listnode_add
    - IPV4_ADDR_SAME
    - list_new
    - BDR
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_elect_dr(struct ospf_interface *oi,\n\t\t\t\t\t
      \  struct list *el_list)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ism.c:104,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ism.c:105,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ism.c:108,1
    - Dst: NBR_IS_DR
      Src: /src/frr/ospfd/ospf_ism.c:110,1
    - Dst: NBR_IS_BDR
      Src: /src/frr/ospfd/ospf_ism.c:114,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ism.c:115,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ism.c:117,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_ism.c:121,1
    - Dst: ospf_dr_election_sub
      Src: /src/frr/ospfd/ospf_ism.c:122,1
    - Dst: ospf_dr_election_sub
      Src: /src/frr/ospfd/ospf_ism.c:124,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:128,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:130,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ism.c:132,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ism.c:133,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - oi
    - el_list
    argTypes:
    - struct ospf_interface*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 136
    functionName: ospf_elect_bdr
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - list_delete
    - ALL_LIST_ELEMENTS_RO
    - NBR_IS_DR
    - listcount
    - ospf_dr_election_sub
    - listnode_add
    - list_new
    - BDR
    - NBR_IS_BDR
    linkageType: ''
    returnType: struct ospf_neighbor
    signature: "struct ospf_neighbor *ospf_elect_bdr(struct ospf_interface *oi,\n\t\t\t\t\t
      \   struct list *el_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ism.c:140,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ism.c:140,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ism.c:142,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: ospf_ism_state
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - DR
    - BDR
    linkageType: ''
    returnType: int
    signature: int ospf_ism_state(struct ospf_interface *oi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ism.c:154,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ism.c:154,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ism.c:162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - nbrs
    - el_list
    argTypes:
    - struct route_table*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 163
    functionName: ospf_dr_eligible_routers
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - route_top
    - listnode_add
    - route_next
    linkageType: ''
    returnType: void
    signature: "void ospf_dr_eligible_routers(struct route_table *nbrs,\n\t\t\t\t
      \    struct list *el_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ism.c:171,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ism.c:171,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ism.c:184,1
    - Dst: OSPF_NSM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_ism.c:185,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - ospf
    - nbrs
    argTypes:
    - struct ospf*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 187
    functionName: ospf_dr_change
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - route_top
    - OSPF_NSM_EVENT_SCHEDULE
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_dr_change(struct ospf *ospf, struct route_table *nbrs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ism.c:196,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:197,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ism.c:200,1
    - Dst: ospf_dr_eligible_routers
      Src: /src/frr/ospfd/ospf_ism.c:203,1
    - Dst: ospf_elect_bdr
      Src: /src/frr/ospfd/ospf_ism.c:206,1
    - Dst: ospf_elect_dr
      Src: /src/frr/ospfd/ospf_ism.c:207,1
    - Dst: ospf_ism_state
      Src: /src/frr/ospfd/ospf_ism.c:209,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ism.c:211,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:212,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:212,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:213,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ism.c:213,1
    - Dst: ospf_elect_bdr
      Src: /src/frr/ospfd/ospf_ism.c:218,1
    - Dst: ospf_elect_dr
      Src: /src/frr/ospfd/ospf_ism.c:219,1
    - Dst: ospf_ism_state
      Src: /src/frr/ospfd/ospf_ism.c:221,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ism.c:223,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:224,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:224,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:225,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ism.c:225,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ism.c:229,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ism.c:232,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_ism.c:232,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ism.c:233,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_ism.c:233,1
    - Dst: ospf_dr_change
      Src: /src/frr/ospfd/ospf_ism.c:234,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 237
    functionName: ospf_dr_election
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 1
    functionsReached:
    - ospf_elect_bdr
    - IS_DEBUG_OSPF
    - DR
    - list_delete
    - ospf_elect_dr
    - ospf_dr_eligible_routers
    - ospf_dr_change
    - IPV4_ADDR_SAME
    - zlog_debug
    - list_new
    - BDR
    - ospf_ism_state
    linkageType: ''
    returnType: int
    signature: int ospf_dr_election(struct ospf_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_ism.c:244,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ism.c:251,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:252,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ism.c:252,1
    - Dst: ospf_hello_send
      Src: /src/frr/ospfd/ospf_ism.c:255,1
    - Dst: OSPF_HELLO_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 259
    functionName: ospf_hello_timer
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - EVENT_ARG
    - ospf_hello_send
    - OSPF_HELLO_TIMER_ON
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_hello_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_ism.c:265,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ism.c:268,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:269,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ism.c:269,1
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_ism.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 272
    functionName: ospf_wait_timer
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - EVENT_ARG
    - IF_NAME
    - OSPF_ISM_EVENT_SCHEDULE
    linkageType: ''
    returnType: void
    signature: void ospf_wait_timer(struct event *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:286,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:287,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:288,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:289,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:294,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:295,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:296,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:297,1
    - Dst: OSPF_ISM_TIMER_MSEC_ON
      Src: /src/frr/ospfd/ospf_ism.c:304,1
    - Dst: OSPF_ISM_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:305,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_ism.c:306,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:307,1
    - Dst: OSPF_ISM_TIMER_MSEC_ON
      Src: /src/frr/ospfd/ospf_ism.c:315,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:316,1
    - Dst: OSPF_ISM_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:317,1
    - Dst: OSPF_HELLO_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:325,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:326,1
    - Dst: OSPF_ISM_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:327,1
    - Dst: OSPF_HELLO_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:334,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:335,1
    - Dst: OSPF_ISM_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:336,1
    - Dst: OSPF_HELLO_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:343,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_ism.c:344,1
    - Dst: OSPF_ISM_TIMER_ON
      Src: /src/frr/ospfd/ospf_ism.c:345,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 349
    functionName: ism_timer_set
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - OSPF_ISM_TIMER_ON
    - OSPF_IF_PARAM
    - EVENT_OFF
    - OSPF_HELLO_TIMER_ON
    - OSPF_ISM_TIMER_MSEC_ON
    linkageType: ''
    returnType: void
    signature: void ism_timer_set(struct ospf_interface *oi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_ism.c:364,1
    - Dst: ospf_nbr_nbma_if_update
      Src: /src/frr/ospfd/ospf_ism.c:371,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 351
    functionDepth: 4
    functionLinenumber: 351
    functionLinenumberEnd: 375
    functionName: ism_interface_up
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - PRIORITY
    - ospf_nbr_nbma_if_update
    linkageType: ''
    returnType: int
    signature: int ism_interface_up(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: ism_loop_ind
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ism_loop_ind(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_if_cleanup
      Src: /src/frr/ospfd/ospf_ism.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 390
    functionName: ism_interface_down
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - ospf_if_cleanup
    linkageType: ''
    returnType: int
    signature: int ism_interface_down(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_dr_election
      Src: /src/frr/ospfd/ospf_ism.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 393
    functionDepth: 4
    functionLinenumber: 393
    functionLinenumberEnd: 396
    functionName: ism_backup_seen
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - ospf_dr_election
    linkageType: ''
    returnType: int
    signature: int ism_backup_seen(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_dr_election
      Src: /src/frr/ospfd/ospf_ism.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 398
    functionDepth: 4
    functionLinenumber: 398
    functionLinenumberEnd: 401
    functionName: ism_wait_timer
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - ospf_dr_election
    linkageType: ''
    returnType: int
    signature: int ism_wait_timer(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_dr_election
      Src: /src/frr/ospfd/ospf_ism.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: ism_neighbor_change
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - ospf_dr_election
    linkageType: ''
    returnType: int
    signature: int ism_neighbor_change(struct ospf_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ism.c:410,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:411,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ism.c:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 414
    functionName: ism_ignore
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - IF_NAME
    linkageType: ''
    returnType: int
    signature: int ism_ignore(struct ospf_interface *oi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ism.c:522,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:523,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ism.c:523,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_ism.c:524,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_ism.c:525,1
    - Dst: hook_call
      Src: /src/frr/ospfd/ospf_ism.c:531,1
    - Dst: ospf_if_set_multicast
      Src: /src/frr/ospfd/ospf_ism.c:534,1
    - Dst: ospf_check_abr_status
      Src: /src/frr/ospfd/ospf_ism.c:537,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_ism.c:547,1
    - Dst: ospf_network_lsa_update
      Src: /src/frr/ospfd/ospf_ism.c:551,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_ism.c:556,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_ism.c:558,1
    - Dst: ospf_opaque_ism_change
      Src: /src/frr/ospfd/ospf_ism.c:562,1
    - Dst: ospf_check_abr_status
      Src: /src/frr/ospfd/ospf_ism.c:565,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - oi
    - state
    argTypes:
    - struct ospf_interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 516
    functionDepth: 9
    functionLinenumber: 516
    functionLinenumberEnd: 566
    functionName: ism_change_state
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_flush_area
    - IS_DEBUG_OSPF
    - hook_call
    - ospf_lsa_unlock
    - ospf_opaque_ism_change
    - zlog_debug
    - ospf_check_abr_status
    - ospf_router_lsa_update_area
    - ospf_network_lsa_update
    - ospf_if_set_multicast
    - lookup_msg
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ism_change_state(struct ospf_interface *oi, int state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_ism.c:575,1
    - Dst: EVENT_VAL
      Src: /src/frr/ospfd/ospf_ism.c:576,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ism.c:584,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ism.c:585,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_ism.c:585,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_ism.c:586,1
    - Dst: ism_change_state
      Src: /src/frr/ospfd/ospf_ism.c:591,1
    - Dst: ism_timer_set
      Src: /src/frr/ospfd/ospf_ism.c:594,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 569
    functionDepth: 10
    functionLinenumber: 569
    functionLinenumberEnd: 595
    functionName: ospf_ism_event
    functionSourceFile: /src/frr/ospfd/ospf_ism.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ism_change_state
    - EVENT_VAL
    - zlog_debug
    - ism_timer_set
    - EVENT_ARG
    - lookup_msg
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_ism_event(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - A
    - ','
    - N
    - ','
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 16
    functionName: OSPF_EXAMINE_SUMMARIES_ALL
    functionSourceFile: /src/frr/ospfd/ospf_ia.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_EXAMINE_SUMMARIES_ALL(A, N, R)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - A
    - ','
    - N
    - ','
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL
    functionSourceFile: /src/frr/ospfd/ospf_ia.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL(A, N, R)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:53,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:53,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 68
    functionName: ospf_interface_neighbor_count
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 4
    functionsReached:
    - route_top
    - route_next
    linkageType: ''
    returnType: int
    signature: int ospf_interface_neighbor_count(struct ospf_interface *oi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ldp_sync_if_is_enabled
      Src: /src/frr/ospfd/ospf_interface.c:79,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:79,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:93,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:93,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:94,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:95,1
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_interface.c:105,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 110
    functionName: ospf_if_get_output_cost
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - ldp_sync_if_is_enabled
    - OSPF_IF_PARAM
    - if_is_loopback
    - IF_DEF_PARAMS
    - OSPF_IF_PARAM_CONFIGURED
    linkageType: ''
    returnType: int
    signature: int ospf_if_get_output_cost(struct ospf_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:117,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:117,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:117,1
    - Dst: ospf_if_get_output_cost
      Src: /src/frr/ospfd/ospf_interface.c:123,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_interface.c:128,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 131
    functionName: ospf_if_recalculate_output_cost
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 5
    functionsReached:
    - route_top
    - ospf_if_get_output_cost
    - route_next
    - IF_OIFS
    - ospf_router_lsa_update_area
    linkageType: ''
    returnType: void
    signature: void ospf_if_recalculate_output_cost(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:139,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:139,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:139,1
    - Dst: ospf_if_down
      Src: /src/frr/ospfd/ospf_interface.c:145,1
    - Dst: ospf_if_up
      Src: /src/frr/ospfd/ospf_interface.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 148
    functionName: ospf_if_reset
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - route_top
    - route_next
    - IF_OIFS
    - ospf_if_down
    - ospf_if_up
    linkageType: ''
    returnType: void
    signature: void ospf_if_reset(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 170
    functionName: ospf_if_reset_variables
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_if_reset_variables(struct ospf_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_interface.c:184,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:184,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_interface.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ifp
    - prefix
    argTypes:
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 190
    functionName: ospf_if_table_lookup
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - IF_OIFS
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *ospf_if_table_lookup(struct interface *ifp,\n\t\t\t\t\t
      \   struct prefix *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask
      Src: /src/frr/ospfd/ospf_interface.c:199,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_interface.c:201,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:201,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_interface.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ifp
    - oi
    argTypes:
    - struct interface*
    - struct ospf_interface*
    assertStmts:
    - condition: (!rn->info || rn->info == oi)
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/ospfd/ospf_interface.c
    constantsTouched: []
    func_position:
      end: 207
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 207
    functionName: ospf_add_to_if
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - route_node_get
    - apply_mask
    - assert
    - IF_OIFS
    linkageType: ''
    returnType: void
    signature: void ospf_add_to_if(struct interface *ifp, struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_interface.c:218,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:218,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_interface.c:219,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_interface.c:220,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_interface.c:222,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_interface.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - oi
    argTypes:
    - struct interface*
    - struct ospf_interface*
    assertStmts:
    - condition: (rn)
      pos:
        line_end: 218
        line_start: 218
        source_file: /src/frr/ospfd/ospf_interface.c
    - condition: (rn->info)
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/frr/ospfd/ospf_interface.c
    constantsTouched: []
    func_position:
      end: 224
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 224
    functionName: ospf_delete_from_if
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - assert
    - IF_OIFS
    linkageType: ''
    returnType: void
    signature: "void ospf_delete_from_if(struct interface *ifp,\n\t\t\t\tstruct ospf_interface
      *oi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_if_table_lookup
      Src: /src/frr/ospfd/ospf_interface.c:231,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_interface.c:235,1
    - Dst: ospf_fifo_new
      Src: /src/frr/ospfd/ospf_interface.c:237,1
    - Dst: ospf_add_to_if
      Src: /src/frr/ospfd/ospf_interface.c:243,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_interface.c:244,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_interface.c:247,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_interface.c:250,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_interface.c:253,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_interface.c:254,1
    - Dst: ospf_if_reset_variables
      Src: /src/frr/ospfd/ospf_interface.c:257,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_interface.c:262,1
    - Dst: frr_sequence32_next
      Src: /src/frr/ospfd/ospf_interface.c:266,1
    - Dst: ospf_opaque_type9_lsa_init
      Src: /src/frr/ospfd/ospf_interface.c:268,1
    - Dst: QOBJ_REG
      Src: /src/frr/ospfd/ospf_interface.c:272,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:275,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_interface.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 3
    argNames:
    - ospf
    - ifp
    - p
    argTypes:
    - struct ospf*
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 280
    functionName: ospf_if_new
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - ospf_fifo_new
    - ospf_add_to_if
    - QOBJ_REG
    - listnode_add
    - ospf_if_table_lookup
    - route_table_init
    - zlog_debug
    - list_new
    - ospf_opaque_type9_lsa_init
    - ospf_if_reset_variables
    - ospf_get_name
    - frr_sequence32_next
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *ospf_if_new(struct ospf *ospf, struct interface
      *ifp,\n\t\t\t\t   struct prefix *p)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_interface.c:294,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_interface.c:295,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_interface.c:297,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_interface.c:304,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:308,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:308,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_interface.c:310,1
    - Dst: OSPF_NSM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospf_interface.c:311,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_interface.c:315,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_interface.c:316,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospfd/ospf_interface.c:317,1
    - Dst: ospf_ls_upd_queue_empty
      Src: /src/frr/ospfd/ospf_interface.c:322,1
    - Dst: ospf_nbr_self_reset
      Src: /src/frr/ospfd/ospf_interface.c:325,1
    - Dst: ospf_if_free
      Src: /src/frr/ospfd/ospf_interface.c:328,1
    - Dst: ospf_if_down
      Src: /src/frr/ospfd/ospf_interface.c:330,1
    - Dst: ospf_fifo_free
      Src: /src/frr/ospfd/ospf_interface.c:332,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_interface.c:334,1
    - Dst: ospf_opaque_type9_lsa_term
      Src: /src/frr/ospfd/ospf_interface.c:336,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ospfd/ospf_interface.c:338,1
    - Dst: ospf_nbr_delete
      Src: /src/frr/ospfd/ospf_interface.c:341,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_interface.c:343,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_interface.c:344,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_interface.c:347,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_interface.c:349,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_interface.c:350,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:353,1
    - Dst: ospf_delete_from_if
      Src: /src/frr/ospfd/ospf_interface.c:357,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_interface.c:359,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_interface.c:360,1
    - Dst: event_cancel_event
      Src: /src/frr/ospfd/ospf_interface.c:362,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_interface.c:364,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_interface.c:365,1
    - Dst: ospf_if_is_up
      Src: /src/frr/ospfd/ospf_interface.c:368,1
    - Dst: if_is_up
      Src: /src/frr/ospfd/ospf_interface.c:370,1
    - Dst: ospf_if_exists
      Src: /src/frr/ospfd/ospf_interface.c:373,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:386,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_interface.c:387,1
    - Dst: ospf_if_lookup_by_lsa_pos
      Src: /src/frr/ospfd/ospf_interface.c:394,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:400,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_interface.c:407,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:414,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_interface.c:415,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:419,1
    - Dst: ospf_if_lookup_by_prefix
      Src: /src/frr/ospfd/ospf_interface.c:426,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:433,1
    - Dst: prefix_copy
      Src: /src/frr/ospfd/ospf_interface.c:437,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/ospfd/ospf_interface.c:437,1
    - Dst: apply_mask
      Src: /src/frr/ospfd/ospf_interface.c:438,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_interface.c:439,1
    - Dst: ospf_if_lookup_recv_if
      Src: /src/frr/ospfd/ospf_interface.c:447,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:461,1
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_interface.c:470,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_interface.c:473,1
    - Dst: prefix_match
      Src: /src/frr/ospfd/ospf_interface.c:475,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/ospfd/ospf_interface.c:475,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 21
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts:
    - condition: (oi->state == ISM_Down)
      pos:
        line_end: 333
        line_start: 333
        source_file: /src/frr/ospfd/ospf_interface.c
    constantsTouched: []
    func_position:
      end: 487
      start: 284
    functionDepth: 9
    functionLinenumber: 284
    functionLinenumberEnd: 487
    functionName: ospf_if_cleanup
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - ospf_nbr_self_reset
    - list_delete
    - ospf_opaque_type9_lsa_term
    - route_top
    - IPV4_ADDR_SAME
    - ospf_if_lookup_by_lsa_pos
    - ospf_ls_upd_queue_empty
    - ospf_nbr_delete
    - memset
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - ospf_if_lookup_by_prefix
    - if_is_loopback
    - ospf_if_free
    - zlog_debug
    - list_delete_all_node
    - event_cancel_event
    - CONNECTED_PREFIX
    - if
    - prefix_copy
    - if_is_up
    - assert
    - prefix_same
    - route_table_finish
    - apply_mask
    - ospf_fifo_free
    - ospf_if_lookup_recv_if
    - route_next
    - EVENT_OFF
    - XFREE
    - listnode_delete
    - ospf_if_lookup_by_local_addr
    - ospf_delete_from_if
    - QOBJ_UNREG
    - CHECK_FLAG
    - ospf_if_is_up
    - ospf_lsa_unlock
    - OSPF_NSM_EVENT_EXECUTE
    - ospf_if_down
    - ospf_if_exists
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ospf_if_cleanup(struct ospf_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_fifo_flush
      Src: /src/frr/ospfd/ospf_interface.c:493,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_interface.c:496,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_interface.c:497,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_interface.c:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 501
    functionName: ospf_interface_fifo_flush
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - listnode_delete
    - list_isempty
    - EVENT_OFF
    - ospf_fifo_flush
    linkageType: ''
    returnType: void
    signature: void ospf_interface_fifo_flush(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 510
    functionName: ospf_if_reset_stats
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_if_reset_stats(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_interface_fifo_flush
      Src: /src/frr/ospfd/ospf_interface.c:515,1
    - Dst: ospf_if_reset_stats
      Src: /src/frr/ospfd/ospf_interface.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 512
    functionDepth: 4
    functionLinenumber: 512
    functionLinenumberEnd: 518
    functionName: ospf_if_stream_unset
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - ospf_interface_fifo_flush
    - ospf_if_reset_stats
    linkageType: ''
    returnType: void
    signature: void ospf_if_stream_unset(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_interface.c:525,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:527,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:528,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:529,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:530,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:531,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:532,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:533,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:534,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:535,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:536,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:537,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:538,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:539,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:540,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_interface.c:542,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_interface.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 551
    functionName: ospf_new_if_params
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - htonl
    - UNSET_IF_PARAM
    - list_new
    - XCALLOC
    linkageType: ''
    returnType: struct ospf_if_params
    signature: struct ospf_if_params *ospf_new_if_params(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_interface.c:556,1
    - Dst: ospf_interface_disable_bfd
      Src: /src/frr/ospfd/ospf_interface.c:557,1
    - Dst: ldp_sync_info_free
      Src: /src/frr/ospfd/ospf_interface.c:558,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_interface.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - oip
    argTypes:
    - struct interface*
    - struct ospf_if_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 553
    functionDepth: 4
    functionLinenumber: 553
    functionLinenumberEnd: 560
    functionName: ospf_del_if_params
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - XFREE
    - list_delete
    - ospf_interface_disable_bfd
    - ldp_sync_info_free
    linkageType: ''
    returnType: void
    signature: "void ospf_del_if_params(struct interface *ifp,\n\t\t\t       struct
      ospf_if_params *oip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_interface.c:571,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:571,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_interface.c:576,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:578,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:579,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:580,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:581,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:582,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:583,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:584,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:585,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:586,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:587,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:588,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:589,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_interface.c:590,1
    - Dst: ospf_del_if_params
      Src: /src/frr/ospfd/ospf_interface.c:591,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_interface.c:593,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 14
    argCount: 2
    argNames:
    - ifp
    - addr
    argTypes:
    - struct interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 562
    functionDepth: 5
    functionLinenumber: 562
    functionLinenumberEnd: 595
    functionName: ospf_free_if_params
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - listcount
    - ospf_del_if_params
    - IF_OIFS_PARAMS
    - OSPF_IF_PARAM_CONFIGURED
    linkageType: ''
    returnType: void
    signature: void ospf_free_if_params(struct interface *ifp, struct in_addr addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_interface.c:607,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:607,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_interface.c:610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ifp
    - addr
    argTypes:
    - struct interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 615
    functionName: ospf_lookup_if_params
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 4
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - IF_OIFS_PARAMS
    linkageType: ''
    returnType: struct ospf_if_params
    signature: "struct ospf_if_params *ospf_lookup_if_params(struct interface *ifp,\n\t\t\t\t\t
      \    struct in_addr addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_interface.c:626,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_interface.c:628,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:628,1
    - Dst: ospf_new_if_params
      Src: /src/frr/ospfd/ospf_interface.c:631,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_interface.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ifp
    - addr
    argTypes:
    - struct interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 617
    functionDepth: 2
    functionLinenumber: 617
    functionLinenumberEnd: 636
    functionName: ospf_get_if_params
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - apply_mask_ipv4
    - ospf_new_if_params
    - IF_OIFS_PARAMS
    - route_node_get
    linkageType: ''
    returnType: struct ospf_if_params
    signature: "struct ospf_if_params *ospf_get_if_params(struct interface *ifp,\n\t\t\t\t\t
      \ struct in_addr addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:643,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:643,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:643,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:647,1
    - Dst: ospf_lookup_if_params
      Src: /src/frr/ospfd/ospf_interface.c:648,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ifp
    - addr
    argTypes:
    - struct interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 638
    functionDepth: 2
    functionLinenumber: 638
    functionLinenumberEnd: 651
    functionName: ospf_if_update_params
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - route_top
    - route_next
    - IF_OIFS
    - IPV4_ADDR_SAME
    - ospf_lookup_if_params
    linkageType: ''
    returnType: void
    signature: void ospf_if_update_params(struct interface *ifp, struct in_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_interface.c:657,1
    - Dst: IF_OSPF_IF_INFO
      Src: /src/frr/ospfd/ospf_interface.c:659,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:661,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_interface.c:661,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:662,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_interface.c:662,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:664,1
    - Dst: ospf_new_if_params
      Src: /src/frr/ospfd/ospf_interface.c:664,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:666,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:666,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:667,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:669,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:669,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:670,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:673,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:673,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:674,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:676,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:678,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:678,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:679,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:681,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:681,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:682,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:684,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:684,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:685,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:687,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:687,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:688,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:690,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:690,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_interface.c:691,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:691,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:693,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:693,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:694,1
    - Dst: ospf_opaque_new_if
      Src: /src/frr/ospfd/ospf_interface.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 698
    functionName: ospf_if_new_hook
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - IF_OSPF_IF_INFO
    - ospf_new_if_params
    - memset
    - XCALLOC
    - IF_OIFS_PARAMS
    - IF_OIFS
    - IF_DEF_PARAMS
    - route_table_init
    - ospf_opaque_new_if
    - SET_IF_PARAM
    linkageType: ''
    returnType: int
    signature: int ospf_if_new_hook(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_opaque_del_if
      Src: /src/frr/ospfd/ospf_interface.c:706,1
    - Dst: ospf_del_if_params
      Src: /src/frr/ospfd/ospf_interface.c:713,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:713,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:715,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:715,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:715,1
    - Dst: ospf_del_if_params
      Src: /src/frr/ospfd/ospf_interface.c:717,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_interface.c:719,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:719,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_interface.c:720,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:720,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_interface.c:725,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_interface.c:729,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 700
    functionDepth: 5
    functionLinenumber: 700
    functionLinenumberEnd: 732
    functionName: ospf_if_delete_hook
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - route_table_finish
    - ospf_opaque_del_if
    - ospf_del_if_params
    - route_top
    - IF_OIFS_PARAMS
    - IF_DEF_PARAMS
    - route_next
    - IF_OIFS
    - close
    - XFREE
    linkageType: ''
    returnType: int
    signature: int ospf_if_delete_hook(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_interface.c:736,1
    - Dst: if_is_up
      Src: /src/frr/ospfd/ospf_interface.c:737,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 741
    functionName: ospf_if_is_enable
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 2
    functionsReached:
    - if_is_loopback
    - if_is_up
    linkageType: ''
    returnType: int
    signature: int ospf_if_is_enable(struct ospf_interface *oi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: OSPF_IF_PASSIVE_STATUS
      Src: /src/frr/ospfd/ospf_interface.c:747,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_interface.c:749,1
    - Dst: ospf_if_add_allspfrouters
      Src: /src/frr/ospfd/ospf_interface.c:750,1
    - Dst: OI_MEMBER_JOINED
      Src: /src/frr/ospfd/ospf_interface.c:755,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_interface.c:759,1
    - Dst: OI_MEMBER_COUNT
      Src: /src/frr/ospfd/ospf_interface.c:761,1
    - Dst: ospf_if_drop_allspfrouters
      Src: /src/frr/ospfd/ospf_interface.c:762,1
    - Dst: OI_MEMBER_LEFT
      Src: /src/frr/ospfd/ospf_interface.c:770,1
    - Dst: OSPF_IF_PASSIVE_STATUS
      Src: /src/frr/ospfd/ospf_interface.c:777,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_interface.c:780,1
    - Dst: ospf_if_add_alldrouters
      Src: /src/frr/ospfd/ospf_interface.c:781,1
    - Dst: OI_MEMBER_JOINED
      Src: /src/frr/ospfd/ospf_interface.c:786,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_interface.c:790,1
    - Dst: OI_MEMBER_COUNT
      Src: /src/frr/ospfd/ospf_interface.c:792,1
    - Dst: ospf_if_drop_alldrouters
      Src: /src/frr/ospfd/ospf_interface.c:793,1
    - Dst: OI_MEMBER_LEFT
      Src: /src/frr/ospfd/ospf_interface.c:801,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 21
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 743
    functionDepth: 2
    functionLinenumber: 743
    functionLinenumberEnd: 804
    functionName: ospf_if_set_multicast
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 2
    functionsReached:
    - OI_MEMBER_JOINED
    - ospf_if_drop_allspfrouters
    - OI_MEMBER_CHECK
    - OI_MEMBER_LEFT
    - OI_MEMBER_COUNT
    - ospf_if_add_allspfrouters
    - ospf_if_add_alldrouters
    - ospf_if_drop_alldrouters
    - OSPF_IF_PASSIVE_STATUS
    linkageType: ''
    returnType: void
    signature: void ospf_if_set_multicast(struct ospf_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_interface.c:812,1
    - Dst: OSPF_ISM_EVENT_SCHEDULE
      Src: /src/frr/ospfd/ospf_interface.c:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 818
    functionName: ospf_if_up
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - OSPF_ISM_EVENT_SCHEDULE
    linkageType: ''
    returnType: int
    signature: int ospf_if_up(struct ospf_interface *oi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_interface.c:839,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:840,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:841,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_interface.c:849,1
    - Dst: ospf_gr_helper_exit
      Src: /src/frr/ospfd/ospf_interface.c:850,1
    - Dst: OSPF_ISM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospf_interface.c:856,1
    - Dst: ospf_if_stream_unset
      Src: /src/frr/ospfd/ospf_interface.c:861,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:865,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:865,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_interface.c:871,1
    - Dst: listnextnode_unchecked
      Src: /src/frr/ospfd/ospf_interface.c:872,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_interface.c:873,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 820
    functionDepth: 6
    functionLinenumber: 820
    functionLinenumberEnd: 882
    functionName: ospf_if_down
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 2
    functionsReached:
    - OSPF_GR_IS_ACTIVE_HELPER
    - ospf_interface_neighbor_count
    - route_top
    - listhead
    - ospf_gr_helper_exit
    - route_next
    - listnextnode_unchecked
    - ospf_if_stream_unset
    - OSPF_ISM_EVENT_EXECUTE
    - listgetdata
    linkageType: ''
    returnType: int
    signature: int ospf_if_down(struct ospf_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_interface.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - area
    - vl_peer
    argTypes:
    - struct ospf_area*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 899
    functionName: ospf_vl_data_new
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ospf_vl_data
    signature: "struct ospf_vl_data *ospf_vl_data_new(struct ospf_area *area,\n\t\t\t\t
      \     struct in_addr vl_peer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_interface.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vl_data
    argTypes:
    - struct ospf_vl_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: ospf_vl_data_free
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_vl_data_free(struct ospf_vl_data *vl_data)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:920,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_interface.c:920,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:923,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:931,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_interface.c:934,1
    - Dst: if_get_by_name
      Src: /src/frr/ospfd/ospf_interface.c:935,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_interface.c:940,1
    - Dst: connected_new
      Src: /src/frr/ospfd/ospf_interface.c:941,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_interface.c:943,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/ospfd/ospf_interface.c:945,1
    - Dst: ospf_if_new
      Src: /src/frr/ospfd/ospf_interface.c:952,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:955,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:968,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospf_interface.c:972,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:976,1
    - Dst: ospf_nbr_self_reset
      Src: /src/frr/ospfd/ospf_interface.c:979,1
    - Dst: ospf_area_add_if
      Src: /src/frr/ospfd/ospf_interface.c:981,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:984,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - ospf
    - vl_data
    argTypes:
    - struct ospf*
    - struct ospf_vl_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 908
    functionDepth: 10
    functionLinenumber: 908
    functionLinenumberEnd: 986
    functionName: ospf_vl_new
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - if_get_by_name
    - connected_new
    - ospf_nbr_self_reset
    - snprintf
    - ospf_area_get
    - listnode_add
    - zlog_debug
    - UNSET_FLAG
    - ospf_if_new
    - prefix_ipv4_new
    - ospf_get_name
    - ospf_area_add_if
    linkageType: ''
    returnType: struct ospf_interface
    signature: "struct ospf_interface *ospf_vl_new(struct ospf *ospf,\n\t\t\t\t   struct
      ospf_vl_data *vl_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_if_free
      Src: /src/frr/ospfd/ospf_interface.c:995,1
    - Dst: if_delete
      Src: /src/frr/ospfd/ospf_interface.c:996,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ospfd/ospf_interface.c:997,1
    - Dst: vrf_delete
      Src: /src/frr/ospfd/ospf_interface.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vl_data
    argTypes:
    - struct ospf_vl_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 999
    functionName: ospf_vl_if_delete
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - vrf_is_enabled
    - if_delete
    - vrf_delete
    - ospf_if_free
    linkageType: ''
    returnType: void
    signature: void ospf_vl_if_delete(struct ospf_vl_data *vl_data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:1009,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1011,1
    - Dst: ospf_vl_lookup
      Src: /src/frr/ospfd/ospf_interface.c:1021,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1028,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1030,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:1034,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1036,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1041,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1044,1
    - Dst: ospf_vl_shutdown
      Src: /src/frr/ospfd/ospf_interface.c:1051,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_interface.c:1061,1
    - Dst: OSPF_ISM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospf_interface.c:1063,1
    - Dst: ospf_vl_add
      Src: /src/frr/ospfd/ospf_interface.c:1066,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_interface.c:1068,1
    - Dst: hook_call
      Src: /src/frr/ospfd/ospf_interface.c:1069,1
    - Dst: ospf_vl_delete
      Src: /src/frr/ospfd/ospf_interface.c:1072,1
    - Dst: ospf_vl_shutdown
      Src: /src/frr/ospfd/ospf_interface.c:1074,1
    - Dst: ospf_vl_if_delete
      Src: /src/frr/ospfd/ospf_interface.c:1075,1
    - Dst: hook_call
      Src: /src/frr/ospfd/ospf_interface.c:1077,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_interface.c:1078,1
    - Dst: ospf_vl_data_free
      Src: /src/frr/ospfd/ospf_interface.c:1080,1
    - Dst: ospf_vl_set_params
      Src: /src/frr/ospfd/ospf_interface.c:1083,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:1102,1
    - Dst: ospf_if_lookup_by_lsa_pos
      Src: /src/frr/ospfd/ospf_interface.c:1111,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1114,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1131,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_interface.c:1140,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_interface.c:1142,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1146,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1151,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - ospf
    - area
    argTypes:
    - struct ospf*
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1003
    functionDepth: 2
    functionLinenumber: 1003
    functionLinenumberEnd: 1157
    functionName: ospf_vl_count
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - ospf_vl_lookup
    - zlog_info
    - ospf_vl_add
    - hook_call
    - ospf_vl_shutdown
    - ospf_vl_set_params
    - ALL_LIST_ELEMENTS_RO
    - ospf_vl_delete
    - listnode_add
    - ntohs
    - IPV4_ADDR_SAME
    - zlog_debug
    - UNSET_FLAG
    - ospf_vl_data_free
    - OSPF_ISM_EVENT_EXECUTE
    - listnode_delete
    - ospf_vl_if_delete
    - ospf_if_lookup_by_lsa_pos
    linkageType: ''
    returnType: int
    signature: int ospf_vl_count(struct ospf *ospf, struct ospf_area *area)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1178,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1179,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:1183,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1185,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1188,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1192,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1193,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_interface.c:1195,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1198,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1202,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_interface.c:1205,1
    - Dst: OSPF_ISM_EVENT_EXECUTE
      Src: /src/frr/ospfd/ospf_interface.c:1206,1
    - Dst: ospf_vl_set_params
      Src: /src/frr/ospfd/ospf_interface.c:1209,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_interface.c:1210,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1211,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_interface.c:1215,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_interface.c:1217,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1218,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - area
    - rid
    - v
    argTypes:
    - struct ospf_area*
    - struct in_addr
    - struct vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1169
    functionDepth: 3
    functionLinenumber: 1169
    functionLinenumberEnd: 1224
    functionName: ospf_vl_up_check
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_vl_set_params
    - ALL_LIST_ELEMENTS_RO
    - IPV4_ADDR_SAME
    - zlog_debug
    - SET_FLAG
    - ospf_router_lsa_update_area
    - OSPF_ISM_EVENT_EXECUTE
    linkageType: ''
    returnType: void
    signature: "void ospf_vl_up_check(struct ospf_area *area, struct in_addr rid,\n\t\t
      \     struct vertex *v)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:1231,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_interface.c:1232,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_interface.c:1240,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_interface.c:1240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_interface.c:1241,1
    - Dst: ospf_vl_shutdown
      Src: /src/frr/ospfd/ospf_interface.c:1242,1
    - Dst: ospf_full_virtual_nbrs
      Src: /src/frr/ospfd/ospf_interface.c:1245,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1248,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1251,1
    - Dst: ospf_vls_in_area
      Src: /src/frr/ospfd/ospf_interface.c:1257,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:1263,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_interface.c:1264,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_interface.c:1264,1
    - Dst: ospf_crypt_key_new
      Src: /src/frr/ospfd/ospf_interface.c:1271,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_interface.c:1273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1226
    functionDepth: 1
    functionLinenumber: 1226
    functionLinenumberEnd: 1279
    functionName: ospf_vl_unapprove
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    - ospf_vl_shutdown
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - ospf_full_virtual_nbrs
    - ospf_crypt_key_new
    - IPV4_ADDR_SAME
    - zlog_debug
    - UNSET_FLAG
    - ospf_vls_in_area
    - if
    - ALL_LIST_ELEMENTS
    - for
    linkageType: ''
    returnType: void
    signature: void ospf_vl_unapprove(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_interface.c:1286,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_interface.c:1298,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_interface.c:1298,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_interface.c:1300,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_interface.c:1301,1
    - Dst: ospf_default_iftype
      Src: /src/frr/ospfd/ospf_interface.c:1309,1
    - Dst: if_is_pointopoint
      Src: /src/frr/ospfd/ospf_interface.c:1311,1
    - Dst: OSPF_IFTYPE_POINTOPOINT
      Src: /src/frr/ospfd/ospf_interface.c:1312,1
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_interface.c:1313,1
    - Dst: ospf_if_interface
      Src: /src/frr/ospfd/ospf_interface.c:1319,1
    - Dst: hook_call
      Src: /src/frr/ospfd/ospf_interface.c:1321,1
    - Dst: ospf_if_count_area_params
      Src: /src/frr/ospfd/ospf_interface.c:1324,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:1330,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:1331,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:1334,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:1334,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:1334,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_interface.c:1335,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:1336,1
    - Dst: ospf_ifp_create
      Src: /src/frr/ospfd/ospf_interface.c:1342,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_interface.c:1347,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1348,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_interface.c:1354,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:1368,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:1369,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:1369,1
    - Dst: if_is_loopback
      Src: /src/frr/ospfd/ospf_interface.c:1370,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_interface.c:1371,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:1371,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:1372,1
    - Dst: ospf_default_iftype
      Src: /src/frr/ospfd/ospf_interface.c:1372,1
    - Dst: ospf_if_count_area_params
      Src: /src/frr/ospfd/ospf_interface.c:1379,1
    - Dst: ospf_interface_area_set
      Src: /src/frr/ospfd/ospf_interface.c:1380,1
    - Dst: ospf_if_recalculate_output_cost
      Src: /src/frr/ospfd/ospf_interface.c:1382,1
    - Dst: ospf_if_update
      Src: /src/frr/ospfd/ospf_interface.c:1384,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/ospfd/ospf_interface.c:1386,1
    - Dst: ospf_mpls_te_update_if
      Src: /src/frr/ospfd/ospf_interface.c:1387,1
    - Dst: hook_call
      Src: /src/frr/ospfd/ospf_interface.c:1389,1
    - Dst: ospf_ifp_up
      Src: /src/frr/ospfd/ospf_interface.c:1394,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_interface.c:1401,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1402,1
    - Dst: ospf_ifp_sock_init
      Src: /src/frr/ospfd/ospf_interface.c:1408,1
    - Dst: ospf_if_recalculate_output_cost
      Src: /src/frr/ospfd/ospf_interface.c:1410,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_interface.c:1413,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1414,1
    - Dst: ospf_if_reset
      Src: /src/frr/ospfd/ospf_interface.c:1421,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:1426,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:1426,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:1426,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 2
    argNames:
    - auth_crypt
    - key_id
    argTypes:
    - struct list*
    - uint8_t
    assertStmts:
    - condition: (ifp->info)
      pos:
        line_end: 1353
        line_start: 1353
        source_file: /src/frr/ospfd/ospf_interface.c
    constantsTouched: []
    func_position:
      end: 1431
      start: 1281
    functionDepth: 13
    functionLinenumber: 1281
    functionLinenumberEnd: 1431
    functionName: ospf_crypt_key_lookup
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 1
    functionsReached:
    - OSPF_IFTYPE_POINTOPOINT
    - route_top
    - IF_OIFS_PARAMS
    - HAS_LINK_PARAMS
    - ospf_ifp_sock_init
    - ospf_if_update
    - IS_DEBUG_OSPF
    - hook_call
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - ospf_if_interface
    - ospf_mpls_te_update_if
    - zlog_debug
    - if
    - for
    - assert
    - ospf_ifp_up
    - ospf_interface_area_set
    - route_next
    - ospf_if_recalculate_output_cost
    - SET_IF_PARAM
    - XFREE
    - listnode_delete
    - ospf_if_reset
    - ospf_if_count_area_params
    - if_is_pointopoint
    - IF_DEF_PARAMS
    - IF_OIFS
    - ospf_default_iftype
    - OSPF_IF_PARAM_CONFIGURED
    - ALL_LIST_ELEMENTS
    - ospf_ifp_create
    linkageType: ''
    returnType: struct crypt_key
    signature: struct crypt_key *ospf_crypt_key_lookup(struct list *auth_crypt, uint8_t
      key_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_interface.c:1444,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1445,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:1448,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:1448,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:1448,1
    - Dst: ospf_if_down
      Src: /src/frr/ospfd/ospf_interface.c:1451,1
    - Dst: ospf_ifp_sock_close
      Src: /src/frr/ospfd/ospf_interface.c:1455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1439
    functionDepth: 7
    functionLinenumber: 1439
    functionLinenumberEnd: 1458
    functionName: ospf_ifp_down
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_ifp_sock_close
    - route_top
    - route_next
    - IF_OIFS
    - zlog_debug
    - ospf_if_down
    linkageType: ''
    returnType: int
    signature: int ospf_ifp_down(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_interface.c:1465,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_interface.c:1466,1
    - Dst: hook_call
      Src: /src/frr/ospfd/ospf_interface.c:1472,1
    - Dst: ospf_if_count_area_params
      Src: /src/frr/ospfd/ospf_interface.c:1476,1
    - Dst: ospf_interface_area_unset
      Src: /src/frr/ospfd/ospf_interface.c:1477,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:1480,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:1480,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:1480,1
    - Dst: ospf_if_free
      Src: /src/frr/ospfd/ospf_interface.c:1482,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1460
    functionDepth: 1
    functionLinenumber: 1460
    functionLinenumberEnd: 1485
    functionName: ospf_ifp_destroy
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - hook_call
    - route_top
    - IF_OIFS
    - route_next
    - ospf_if_free
    - zlog_debug
    - ospf_interface_area_unset
    - ospf_if_count_area_params
    linkageType: ''
    returnType: int
    signature: int ospf_ifp_destroy(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_if_table_lookup
      Src: /src/frr/ospfd/ospf_interface.c:1501,1
    - Dst: ospf_hello_send
      Src: /src/frr/ospfd/ospf_interface.c:1508,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_interface.c:1511,1
    - Dst: OSPF_HELLO_TIMER_ON
      Src: /src/frr/ospfd/ospf_interface.c:1512,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_interface.c:1518,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_interface.c:1518,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_interface.c:1518,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_interface.c:1525,1
    - Dst: ospf_hello_send
      Src: /src/frr/ospfd/ospf_interface.c:1532,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_interface.c:1535,1
    - Dst: OSPF_HELLO_TIMER_ON
      Src: /src/frr/ospfd/ospf_interface.c:1536,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - ifp
    - addr
    - is_addr
    argTypes:
    - struct interface*
    - struct in_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1488
    functionDepth: 2
    functionLinenumber: 1488
    functionLinenumberEnd: 1538
    functionName: ospf_reset_hello_timer
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 0
    functionsReached:
    - route_top
    - IF_OIFS
    - route_next
    - ospf_if_table_lookup
    - EVENT_OFF
    - OSPF_IF_PARAM_CONFIGURED
    - ospf_hello_send
    - OSPF_HELLO_TIMER_ON
    linkageType: ''
    returnType: void
    signature: "void ospf_reset_hello_timer(struct interface *ifp, struct in_addr
      addr,\n\t\t\t    bool is_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_zapi_callbacks
      Src: /src/frr/ospfd/ospf_interface.c:1542,1
    - Dst: hook_register_prio
      Src: /src/frr/ospfd/ospf_interface.c:1546,1
    - Dst: hook_register_prio
      Src: /src/frr/ospfd/ospf_interface.c:1547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1540
    functionDepth: 1
    functionLinenumber: 1540
    functionLinenumberEnd: 1548
    functionName: ospf_if_init
    functionSourceFile: /src/frr/ospfd/ospf_interface.c
    functionUses: 2
    functionsReached:
    - hook_register_prio
    - if_zapi_callbacks
    linkageType: ''
    returnType: void
    signature: void ospf_if_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_flood.c:48,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_flood.c:48,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_flood.c:49,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:50,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_flood.c:51,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_flood.c:53,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospf_flood.c:53,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_flood.c:54,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:55,1
    - Dst: ospf_lsa_refresh
      Src: /src/frr/ospfd/ospf_flood.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 43
    functionDepth: 6
    functionLinenumber: 43
    functionLinenumberEnd: 57
    functionName: ospf_refresh_dna_type5_and_type7_lsas
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - NSSA_LSDB
    - EXTERNAL_LSDB
    - LSDB_LOOP
    - ospf_lsa_refresh
    - IS_LSA_SELF
    linkageType: ''
    returnType: void
    signature: void ospf_refresh_dna_type5_and_type7_lsas(struct ospf *ospf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_flood.c:71,1
    - Dst: ospf_lsdb_count_self
      Src: /src/frr/ospfd/ospf_flood.c:72,1
    - Dst: OSPF_LOG_ERR
      Src: /src/frr/ospfd/ospf_flood.c:85,1
    - Dst: OSPF_LOG_ERR
      Src: /src/frr/ospfd/ospf_flood.c:87,1
    - Dst: OSPF_FR_CONFIG
      Src: /src/frr/ospfd/ospf_flood.c:96,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 105
    functionName: ospf_area_update_fr_state
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 0
    functionsReached:
    - ospf_lsdb_count_self
    - ospf_lsdb_count
    - OSPF_FR_CONFIG
    - OSPF_LOG_ERR
    linkageType: ''
    returnType: void
    signature: void ospf_area_update_fr_state(struct ospf_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NBR_IS_DR
      Src: /src/frr/ospfd/ospf_flood.c:125,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_flood.c:129,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_flood.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - inbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 131
    functionName: ospf_flood_delayed_lsa_ack
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 0
    functionsReached:
    - NBR_IS_DR
    - ospf_lsa_lock
    - listnode_add
    linkageType: ''
    returnType: void
    signature: "void ospf_flood_delayed_lsa_ack(struct ospf_neighbor *inbr,\n\t\t\t\t
      \      struct ospf_lsa *lsa)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_flood.c:149,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_flood.c:155,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/ospfd/ospf_flood.c:156,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/ospfd/ospf_flood.c:160,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_flood.c:169,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:171,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_flood.c:172,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:175,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_flood.c:176,1
    - Dst: return
      Src: /src/frr/ospfd/ospf_flood.c:178,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_flood.c:185,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_flood.c:188,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_flood.c:192,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_flood.c:196,1
    - Dst: struct ospf_area::struct ospf_area
      Src: /src/frr/ospfd/ospf_flood.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:216,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:218,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:218,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:219,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:227,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:232,1
    - Dst: ospf_router_lsa_update_area
      Src: /src/frr/ospfd/ospf_flood.c:233,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_flood.c:246,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_flood.c:248,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:249,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_flood.c:252,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_flood.c:253,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:258,1
    - Dst: ospf_opaque_lsa_refresh
      Src: /src/frr/ospfd/ospf_flood.c:259,1
    - Dst: oi::oi
      Src: /src/frr/ospfd/ospf_flood.c:259,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:265,1
    - Dst: ospf_network_lsa_update
      Src: /src/frr/ospfd/ospf_flood.c:267,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospf_flood.c:273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:278,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_flood.c:278,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:283,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_flood.c:285,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:286,1
    - Dst: ospf_external_info_check
      Src: /src/frr/ospfd/ospf_flood.c:288,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_flood.c:290,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:291,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:292,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_flood.c:300,1
    - Dst: ospf_lsa_flush_as
      Src: /src/frr/ospfd/ospf_flood.c:301,1
    - Dst: ospf_extrenal_aggregator_lookup
      Src: /src/frr/ospfd/ospf_flood.c:310,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_flood.c:314,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:324,1
    - Dst: ospf_lsa_flush_as
      Src: /src/frr/ospfd/ospf_flood.c:327,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:376,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:378,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_flood.c:379,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:380,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_flood.c:390,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_flood.c:391,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_flood.c:392,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:395,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:397,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_flood.c:400,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:403,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:405,1
    - Dst: ospf_flood_through
      Src: /src/frr/ospfd/ospf_flood.c:415,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_flood.c:426,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_flood.c:429,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:435,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_flood.c:435,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_flood.c:436,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:444,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:445,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:447,1
    - Dst: ospf_process_maxage_grace_lsa
      Src: /src/frr/ospfd/ospf_flood.c:450,1
    - Dst: nbr::nbr
      Src: /src/frr/ospfd/ospf_flood.c:450,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:452,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:453,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:459,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:460,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:462,1
    - Dst: ospf_process_grace_lsa
      Src: /src/frr/ospfd/ospf_flood.c:464,1
    - Dst: nbr::nbr
      Src: /src/frr/ospfd/ospf_flood.c:464,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:467,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 114
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 134
    functionDepth: 7
    functionLinenumber: 134
    functionLinenumberEnd: 472
    functionName: ospf_external_info_check
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 3
    functionsReached:
    - ospf_schedule_abr_task
    - ospf_opaque_lsa_refresh
    - oi::oi
    - ntohs
    - IPV4_ADDR_SAME
    - data::data
    - ospf_ls_retransmit_delete_nbr_area
    - lookup_msg
    - IS_LSA_SELF
    - nbr::nbr
    - vrf_bitmap_check
    - IS_DEBUG_OSPF
    - route_node_lookup
    - ospf_flood_through
    - memset
    - ALL_LIST_ELEMENTS_RO
    - return
    - zlog_debug
    - dump_lsa_key
    - ospf_process_maxage_grace_lsa
    - if
    - ospf_get_name
    - ntohl
    - struct ospf_area::struct ospf_area
    - route_unlock_node
    - DR
    - ospf_external_info_check
    - ip_masklen
    - ospf_lsa_flush_as
    - ospf_router_lsa_update_area
    - flags::flags
    - monotime_since
    - ospf_network_lsa_update
    - is_default_prefix4
    - ospf_ls_retransmit_delete_nbr_as
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - ospf_extrenal_aggregator_lookup
    - SET_FLAG
    - ospf_lsa_is_self_originated
    - ospf_process_grace_lsa
    - ospf_external_aggr_match
    linkageType: ''
    returnType: struct external_info
    signature: "struct external_info *ospf_external_info_check(struct ospf *ospf,\n\t\t\t\t\t
      \      struct ospf_lsa *lsa)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:376,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:378,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_flood.c:379,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:380,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_flood.c:390,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_flood.c:391,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_flood.c:392,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:395,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:397,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_flood.c:400,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:403,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:405,1
    - Dst: ospf_flood_through
      Src: /src/frr/ospfd/ospf_flood.c:415,1
    - Dst: ospf_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospfd/ospf_flood.c:426,1
    - Dst: ospf_ls_retransmit_delete_nbr_area
      Src: /src/frr/ospfd/ospf_flood.c:429,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:435,1
    - Dst: flags::flags
      Src: /src/frr/ospfd/ospf_flood.c:435,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_flood.c:436,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:444,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:445,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:447,1
    - Dst: ospf_process_maxage_grace_lsa
      Src: /src/frr/ospfd/ospf_flood.c:450,1
    - Dst: nbr::nbr
      Src: /src/frr/ospfd/ospf_flood.c:450,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:452,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:453,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 4
    argNames:
    - ospf
    - nbr
    - current
    - new
    argTypes:
    - struct ospf*
    - struct ospf_neighbor*
    - struct ospf_lsa*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 366
    functionDepth: 7
    functionLinenumber: 366
    functionLinenumberEnd: 457
    functionName: ospf_flood
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 1
    functionsReached:
    - ospf_ls_retransmit_delete_nbr_as
    - if
    - ospf_flood_through
    - ntohl
    - nbr::nbr
    - ntohs
    - zlog_debug
    - SET_FLAG
    - dump_lsa_key
    - monotime_since
    - flags::flags
    - ospf_ls_retransmit_delete_nbr_area
    - ospf_lsa_is_self_originated
    - data::data
    - ospf_get_name
    - ospf_process_maxage_grace_lsa
    - lookup_msg
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: "int ospf_flood(struct ospf *ospf, struct ospf_neighbor *nbr,\n\t       struct
      ospf_lsa *current, struct ospf_lsa *new)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:562,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:564,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:564,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:565,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_flood.c:566,1
    - Dst: ospf_if_is_enable
      Src: /src/frr/ospfd/ospf_flood.c:568,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_flood.c:572,1
    - Dst: OSPF_FR_CONFIG
      Src: /src/frr/ospfd/ospf_flood.c:573,1
    - Dst: ospf_check_indication_lsa
      Src: /src/frr/ospfd/ospf_flood.c:574,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:575,1
    - Dst: ospf_lsa_checksum
      Src: /src/frr/ospfd/ospf_flood.c:576,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:578,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:579,1
    - Dst: ospf_lsa_checksum
      Src: /src/frr/ospfd/ospf_flood.c:580,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:587,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_flood.c:596,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_flood.c:596,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:604,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:606,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:607,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_flood.c:608,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:625,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_flood.c:628,1
    - Dst: ospf_ls_request_lookup
      Src: /src/frr/ospfd/ospf_flood.c:630,1
    - Dst: ospf_lsa_more_recent
      Src: /src/frr/ospfd/ospf_flood.c:634,1
    - Dst: ospf_ls_request_delete
      Src: /src/frr/ospfd/ospf_flood.c:642,1
    - Dst: ospf_check_nbr_loading
      Src: /src/frr/ospfd/ospf_flood.c:643,1
    - Dst: ospf_ls_request_delete
      Src: /src/frr/ospfd/ospf_flood.c:649,1
    - Dst: ospf_check_nbr_loading
      Src: /src/frr/ospfd/ospf_flood.c:650,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfd/ospf_flood.c:655,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:656,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:657,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:658,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:660,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_flood.c:673,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:675,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:676,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:678,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_flood.c:687,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:689,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:690,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:692,1
    - Dst: ospf_ls_retransmit_add
      Src: /src/frr/ospfd/ospf_flood.c:702,1
    - Dst: NBR_IS_DR
      Src: /src/frr/ospfd/ospf_flood.c:720,1
    - Dst: NBR_IS_BDR
      Src: /src/frr/ospfd/ospf_flood.c:720,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:721,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:722,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:723,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:724,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:735,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:736,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:738,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:739,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:750,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:751,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:752,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:752,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_flood.c:763,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_flood.c:763,1
    - Dst: ospf_ls_upd_send_lsa
      Src: /src/frr/ospfd/ospf_flood.c:769,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:783,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:784,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:786,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_flood.c:789,1
    - Dst: ospf_ls_upd_send_lsa
      Src: /src/frr/ospfd/ospf_flood.c:791,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 101
    argCount: 3
    argNames:
    - oi
    - inbr
    - lsa
    argTypes:
    - struct ospf_interface*
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 553
    functionDepth: 3
    functionLinenumber: 553
    functionLinenumberEnd: 795
    functionName: ospf_flood_through_interface
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 1
    functionsReached:
    - route_top
    - ntohs
    - IPV4_ADDR_SAME
    - NBR_IS_BDR
    - lookup_msg
    - IS_LSA_SELF
    - IS_DEBUG_OSPF
    - zlog_debug
    - dump_lsa_key
    - ospf_ls_request_delete
    - ospf_ls_request_lookup
    - ospf_get_name
    - ospf_lsa_more_recent
    - IS_OPAQUE_LSA
    - ospf_check_nbr_loading
    - ospf_lsa_checksum
    - ospf_if_is_enable
    - route_next
    - UNSET_FLAG
    - ospf_check_indication_lsa
    - ospf_ls_upd_send_lsa
    - IF_NAME
    - CHECK_FLAG
    - NBR_IS_DR
    - ospf_ls_retransmit_add
    - SET_FLAG
    - OSPF_FR_CONFIG
    linkageType: ''
    returnType: int
    signature: "int ospf_flood_through_interface(struct ospf_interface *oi,\n\t\t\t\t
      struct ospf_neighbor *inbr,\n\t\t\t\t struct ospf_lsa *lsa)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_flood.c:804,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_flood.c:809,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_flood.c:814,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:820,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:821,1
    - Dst: continue
      Src: /src/frr/ospfd/ospf_flood.c:824,1
    - Dst: ospf_flood_through_interface
      Src: /src/frr/ospfd/ospf_flood.c:827,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_flood.c:854,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:856,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_flood.c:858,1
    - Dst: switch
      Src: /src/frr/ospfd/ospf_flood.c:863,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_flood.c:900,1
    - Dst: ospf_flood_through_interface
      Src: /src/frr/ospfd/ospf_flood.c:903,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 3
    argNames:
    - area
    - inbr
    - lsa
    argTypes:
    - struct ospf_area*
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts:
    - condition: (area)
      pos:
        line_end: 803
        line_start: 803
        source_file: /src/frr/ospfd/ospf_flood.c
    constantsTouched: []
    func_position:
      end: 910
      start: 797
    functionDepth: 4
    functionLinenumber: 797
    functionLinenumberEnd: 910
    functionName: ospf_flood_through_area
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 11
    functionsReached:
    - switch
    - IS_DEBUG_OSPF
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - continue
    - if
    - ALL_LIST_ELEMENTS
    - assert
    - ospf_flood_through_interface
    linkageType: ''
    returnType: int
    signature: "int ospf_flood_through_area(struct ospf_area *area, struct ospf_neighbor
      *inbr,\n\t\t\t    struct ospf_lsa *lsa)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_flood.c:940,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:947,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_flood.c:950,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - ospf
    - inbr
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 912
    functionDepth: 5
    functionLinenumber: 912
    functionLinenumberEnd: 960
    functionName: ospf_flood_through
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 3
    functionsReached:
    - zlog_debug
    - ospf_flood_through_as
    - ospf_flood_through_area
    linkageType: ''
    returnType: int
    signature: "int ospf_flood_through(struct ospf *ospf, struct ospf_neighbor *inbr,\n\t\t
      \      struct ospf_lsa *lsa)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:972,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:973,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_flood.c:974,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:976,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:976,1
    - Dst: ospf_lsdb_add
      Src: /src/frr/ospfd/ospf_flood.c:978,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 964
    functionDepth: 5
    functionLinenumber: 964
    functionLinenumberEnd: 979
    functionName: ospf_ls_request_add
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_ls_request_count
    - zlog_debug
    - dump_lsa_key
    - ospf_get_name
    - ospf_lsdb_add
    linkageType: ''
    returnType: void
    signature: void ospf_ls_request_add(struct ospf_neighbor *nbr, struct ospf_lsa
      *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_count_all
      Src: /src/frr/ospfd/ospf_flood.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 984
    functionName: ospf_ls_request_count
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 3
    functionsReached:
    - ospf_lsdb_count_all
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ospf_ls_request_count(struct ospf_neighbor *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_isempty
      Src: /src/frr/ospfd/ospf_flood.c:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 989
    functionName: ospf_ls_request_isempty
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 3
    functionsReached:
    - ospf_lsdb_isempty
    linkageType: ''
    returnType: int
    signature: int ospf_ls_request_isempty(struct ospf_neighbor *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_flood.c:995,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:999,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1000,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_flood.c:1001,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:1003,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:1003,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_flood.c:1005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 992
    functionDepth: 5
    functionLinenumber: 992
    functionLinenumberEnd: 1006
    functionName: ospf_ls_request_delete
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_lsa_unlock
    - ospf_ls_request_count
    - zlog_debug
    - dump_lsa_key
    - ospf_get_name
    - ospf_lsdb_delete
    linkageType: ''
    returnType: void
    signature: void ospf_ls_request_delete(struct ospf_neighbor *nbr, struct ospf_lsa
      *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_flood.c:1011,1
    - Dst: ospf_lsdb_delete_all
      Src: /src/frr/ospfd/ospf_flood.c:1013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 1009
    functionDepth: 5
    functionLinenumber: 1009
    functionLinenumberEnd: 1014
    functionName: ospf_ls_request_delete_all
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 2
    functionsReached:
    - ospf_lsdb_delete_all
    - ospf_lsa_unlock
    linkageType: ''
    returnType: void
    signature: void ospf_ls_request_delete_all(struct ospf_neighbor *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_lookup
      Src: /src/frr/ospfd/ospf_flood.c:1020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1017
    functionDepth: 2
    functionLinenumber: 1017
    functionLinenumberEnd: 1021
    functionName: ospf_ls_request_lookup
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 2
    functionsReached:
    - ospf_lsdb_lookup
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_ls_request_lookup(struct ospf_neighbor *nbr,\n\t\t\t\t\tstruct
      ospf_lsa *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsa_new_and_data::ospf_lsa_new_and_data
      Src: /src/frr/ospfd/ospf_flood.c:1027,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_flood.c:1028,1
    - Dst: data::data
      Src: /src/frr/ospfd/ospf_flood.c:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lsah
    argTypes:
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1023
    functionDepth: 3
    functionLinenumber: 1023
    functionLinenumberEnd: 1031
    functionName: ospf_ls_request_new
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 1
    functionsReached:
    - data::data
    - memcpy
    - ospf_lsa_new_and_data::ospf_lsa_new_and_data
    linkageType: ''
    returnType: struct ospf_lsa
    signature: struct ospf_lsa *ospf_ls_request_new(struct lsa_header *lsah)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_count_all
      Src: /src/frr/ospfd/ospf_flood.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1038
    functionName: ospf_ls_retransmit_count
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 3
    functionsReached:
    - ospf_lsdb_count_all
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ospf_ls_retransmit_count(struct ospf_neighbor *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_count_self
      Src: /src/frr/ospfd/ospf_flood.c:1043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nbr
    - lsa_type
    argTypes:
    - struct ospf_neighbor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1044
    functionName: ospf_ls_retransmit_count_self
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 0
    functionsReached:
    - ospf_lsdb_count_self
    linkageType: ''
    returnType: unsigned long
    signature: "unsigned long ospf_ls_retransmit_count_self(struct ospf_neighbor *nbr,\n\t\t\t\t\t
      \   int lsa_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_isempty
      Src: /src/frr/ospfd/ospf_flood.c:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1049
    functionName: ospf_ls_retransmit_isempty
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 2
    functionsReached:
    - ospf_lsdb_isempty
    linkageType: ''
    returnType: int
    signature: int ospf_ls_retransmit_isempty(struct ospf_neighbor *nbr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ls_retransmit_lookup
      Src: /src/frr/ospfd/ospf_flood.c:1056,1
    - Dst: ospf_lsa_more_recent
      Src: /src/frr/ospfd/ospf_flood.c:1058,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:1061,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1062,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_flood.c:1063,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:1065,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:1066,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_flood.c:1067,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:1078,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1079,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_flood.c:1080,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:1082,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:1083,1
    - Dst: ospf_lsdb_add
      Src: /src/frr/ospfd/ospf_flood.c:1084,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1052
    functionDepth: 5
    functionLinenumber: 1052
    functionLinenumberEnd: 1086
    functionName: ospf_ls_retransmit_add
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 2
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - dump_lsa_key
    - ospf_lsdb_add
    - ospf_ls_retransmit_lookup
    - ospf_ls_retransmit_count
    - ospf_get_name
    - ospf_lsa_more_recent
    - ospf_lsdb_delete
    linkageType: ''
    returnType: void
    signature: void ospf_ls_retransmit_add(struct ospf_neighbor *nbr, struct ospf_lsa
      *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_ls_retransmit_lookup
      Src: /src/frr/ospfd/ospf_flood.c:1091,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:1093,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1094,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_flood.c:1095,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:1097,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:1098,1
    - Dst: ospf_lsdb_delete
      Src: /src/frr/ospfd/ospf_flood.c:1099,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1089
    functionDepth: 5
    functionLinenumber: 1089
    functionLinenumberEnd: 1101
    functionName: ospf_ls_retransmit_delete
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 2
    functionsReached:
    - IS_DEBUG_OSPF
    - zlog_debug
    - dump_lsa_key
    - ospf_ls_retransmit_lookup
    - ospf_ls_retransmit_count
    - ospf_get_name
    - ospf_lsdb_delete
    linkageType: ''
    returnType: void
    signature: void ospf_ls_retransmit_delete(struct ospf_neighbor *nbr, struct ospf_lsa
      *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_flood.c:1116,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_flood.c:1116,1
    - Dst: ospf_ls_retransmit_delete
      Src: /src/frr/ospfd/ospf_flood.c:1118,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_flood.c:1121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1104
    functionDepth: 6
    functionLinenumber: 1104
    functionLinenumberEnd: 1123
    functionName: ospf_ls_retransmit_clear
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 2
    functionsReached:
    - ospf_ls_retransmit_delete
    - route_top
    - ospf_lsa_unlock
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_ls_retransmit_clear(struct ospf_neighbor *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lsdb_lookup
      Src: /src/frr/ospfd/ospf_flood.c:1129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nbr
    - lsa
    argTypes:
    - struct ospf_neighbor*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1126
    functionDepth: 2
    functionLinenumber: 1126
    functionLinenumberEnd: 1130
    functionName: ospf_ls_retransmit_lookup
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 4
    functionsReached:
    - ospf_lsdb_lookup
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_ls_retransmit_lookup(struct ospf_neighbor *nbr,\n\t\t\t\t\t
      \  struct ospf_lsa *lsa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_if_is_enable
      Src: /src/frr/ospfd/ospf_flood.c:1139,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_flood.c:1140,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_flood.c:1140,1
    - Dst: ospf_ls_retransmit_lookup
      Src: /src/frr/ospfd/ospf_flood.c:1147,1
    - Dst: ospf_ls_retransmit_delete
      Src: /src/frr/ospfd/ospf_flood.c:1152,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - oi
    - lsa
    argTypes:
    - struct ospf_interface*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1132
    functionDepth: 6
    functionLinenumber: 1132
    functionLinenumberEnd: 1154
    functionName: ospf_ls_retransmit_delete_nbr_if
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 0
    functionsReached:
    - ospf_ls_retransmit_delete
    - route_top
    - route_next
    - ospf_if_is_enable
    - ospf_ls_retransmit_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_retransmit_delete_nbr_if(struct ospf_interface *oi,\n\t\t\t\t\t
      \    struct ospf_lsa *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_flood.c:1162,1
    - Dst: ospf_ls_retransmit_delete_nbr_if
      Src: /src/frr/ospfd/ospf_flood.c:1163,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_flood.c:1171,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_flood.c:1171,1
    - Dst: ospf_ls_retransmit_delete_nbr_if
      Src: /src/frr/ospfd/ospf_flood.c:1172,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_flood.c:1179,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_flood.c:1183,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:1185,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1186,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:1188,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_flood.c:1196,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1198,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:1199,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_flood.c:1200,1
    - Dst: ospf_flood_through_area
      Src: /src/frr/ospfd/ospf_flood.c:1202,1
    - Dst: ospf_lsa_maxage
      Src: /src/frr/ospfd/ospf_flood.c:1203,1
    - Dst: ospf_lsa_flush_as
      Src: /src/frr/ospfd/ospf_flood.c:1206,1
    - Dst: ospf_lsa_is_self_originated
      Src: /src/frr/ospfd/ospf_flood.c:1208,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_flood.c:1210,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1211,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_flood.c:1213,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_flood.c:1221,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_flood.c:1223,1
    - Dst: dump_lsa_key
      Src: /src/frr/ospfd/ospf_flood.c:1224,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_flood.c:1225,1
    - Dst: ospf_flood_through_as
      Src: /src/frr/ospfd/ospf_flood.c:1227,1
    - Dst: ospf_lsa_maxage
      Src: /src/frr/ospfd/ospf_flood.c:1228,1
    - Dst: ospf_lsa_flush
      Src: /src/frr/ospfd/ospf_flood.c:1231,1
    - Dst: htons
      Src: /src/frr/ospfd/ospf_flood.c:1233,1
    - Dst: ospf_lsa_flush_area
      Src: /src/frr/ospfd/ospf_flood.c:1243,1
    - Dst: ospf_lsa_flush_as
      Src: /src/frr/ospfd/ospf_flood.c:1247,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_flood.c:1250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - area
    - lsa
    argTypes:
    - struct ospf_area*
    - struct ospf_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1156
    functionDepth: 7
    functionLinenumber: 1156
    functionLinenumberEnd: 1253
    functionName: ospf_ls_retransmit_delete_nbr_area
    functionSourceFile: /src/frr/ospfd/ospf_flood.c
    functionUses: 8
    functionsReached:
    - ospf_lsa_flush_area
    - IS_DEBUG_OSPF
    - ospf_ls_retransmit_delete_nbr_if
    - zlog_info
    - htons
    - monotime
    - ospf_flood_through_as
    - ospf_flood_through_area
    - ospf_lsa_flush_as
    - zlog_debug
    - ospf_lsa_is_self_originated
    - dump_lsa_key
    - ospf_lsa_maxage
    - ospf_lsa_flush
    - ALL_LIST_ELEMENTS
    - for
    - ospf_get_name
    linkageType: ''
    returnType: void
    signature: "void ospf_ls_retransmit_delete_nbr_area(struct ospf_area *area,\n\t\t\t\t\tstruct
      ospf_lsa *lsa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_router_id_update_read
      Src: /src/frr/ospfd/ospf_zebra.c:60,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:62,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:63,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:64,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:66,1
    - Dst: ospf_router_id_update
      Src: /src/frr/ospfd/ospf_zebra.c:70,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:73,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: ospf_router_id_update_zebra
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_lookup_by_vrf_id
    - zebra_router_id_update_read
    - ospf_vrf_id_to_name
    - zlog_debug
    - ospf_router_id_update
    linkageType: ''
    returnType: int
    signature: int ospf_router_id_update_zebra(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/ospfd/ospf_zebra.c:87,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:92,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:93,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:95,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:97,1
    - Dst: ospf_if_update
      Src: /src/frr/ospfd/ospf_zebra.c:101,1
    - Dst: ospf_if_interface
      Src: /src/frr/ospfd/ospf_zebra.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 106
    functionName: ospf_interface_address_add
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - zebra_interface_address_read
    - ospf_lookup_by_vrf_id
    - ospf_vrf_id_to_name
    - ospf_if_interface
    - zlog_debug
    - ospf_if_update
    linkageType: ''
    returnType: int
    signature: int ospf_interface_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/ospfd/ospf_zebra.c:116,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:121,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:122,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:129,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_zebra.c:129,1
    - Dst: connected_free
      Src: /src/frr/ospfd/ospf_zebra.c:131,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_zebra.c:135,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_zebra.c:137,1
    - Dst: ospf_if_free
      Src: /src/frr/ospfd/ospf_zebra.c:140,1
    - Dst: ospf_if_interface
      Src: /src/frr/ospfd/ospf_zebra.c:142,1
    - Dst: connected_free
      Src: /src/frr/ospfd/ospf_zebra.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rn->info)
      pos:
        line_end: 134
        line_start: 134
        source_file: /src/frr/ospfd/ospf_zebra.c
    constantsTouched: []
    func_position:
      end: 147
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 147
    functionName: ospf_interface_address_delete
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - IS_DEBUG_OSPF
    - route_node_lookup
    - zebra_interface_address_read
    - ospf_if_interface
    - IF_OIFS
    - connected_free
    - ospf_if_free
    - zlog_debug
    - assert
    linkageType: ''
    returnType: int
    signature: int ospf_interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_link_params_read
      Src: /src/frr/ospfd/ospf_zebra.c:154,1
    - Dst: ospf_mpls_te_update_if
      Src: /src/frr/ospfd/ospf_zebra.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 149
    functionDepth: 13
    functionLinenumber: 149
    functionLinenumberEnd: 163
    functionName: ospf_interface_link_params
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - ospf_mpls_te_update_if
    - zebra_interface_link_params_read
    linkageType: ''
    returnType: int
    signature: int ospf_interface_link_params(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_vrf_update_read
      Src: /src/frr/ospfd/ospf_zebra.c:171,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:177,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:180,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/ospfd/ospf_zebra.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 186
    functionName: ospf_interface_vrf_update
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_interface_vrf_update_read
    - zlog_debug
    - ospf_vrf_id_to_name
    - if_update_to_new_vrf
    linkageType: ''
    returnType: int
    signature: int ospf_interface_vrf_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:205,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:234,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:235,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_zebra.c:251,1
    - Dst: ospf_path_type_name
      Src: /src/frr/ospfd/ospf_zebra.c:252,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_zebra.c:258,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_zebra.c:265,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:272,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:274,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:287,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:293,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:299,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:300,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:303,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:315,1
    - Dst: ospf_distance_apply
      Src: /src/frr/ospfd/ospf_zebra.c:320,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:322,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:326,1
    - Dst: ospf_zebra_add_nexthop
      Src: /src/frr/ospfd/ospf_zebra.c:330,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:332,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:332,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ospfd/ospf_zebra.c:335,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:337,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:344,1
    - Dst: ospf_zebra_append_opaque_attr
      Src: /src/frr/ospfd/ospf_zebra.c:345,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:347,1
    - Dst: ospf_zebra_delete
      Src: /src/frr/ospfd/ospf_zebra.c:350,1
    - Dst: zapi_route
      Src: /src/frr/ospfd/ospf_zebra.c:353,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:357,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:363,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:368,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:370,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:371,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:373,1
    - Dst: ospf_zebra_add_discard
      Src: /src/frr/ospfd/ospf_zebra.c:376,1
    - Dst: zapi_route
      Src: /src/frr/ospfd/ospf_zebra.c:378,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:382,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:388,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:393,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/ospfd/ospf_zebra.c:394,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:396,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:398,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:399,1
    - Dst: ospf_zebra_delete_discard
      Src: /src/frr/ospfd/ospf_zebra.c:402,1
    - Dst: zapi_route
      Src: /src/frr/ospfd/ospf_zebra.c:404,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:408,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:414,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:419,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/ospfd/ospf_zebra.c:420,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:422,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:424,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:425,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:428,1
    - Dst: return
      Src: /src/frr/ospfd/ospf_zebra.c:437,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:439,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:440,1
    - Dst: ospf_external_add
      Src: /src/frr/ospfd/ospf_zebra.c:446,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:452,1
    - Dst: ext
      Src: /src/frr/ospfd/ospf_zebra.c:454,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_zebra.c:457,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_zebra.c:460,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:462,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_zebra.c:462,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_zebra.c:464,1
    - Dst: ospf_external_default_routemap_apply_walk
      Src: /src/frr/ospfd/ospf_zebra.c:473,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:483,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_zebra.c:487,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_zebra.c:488,1
    - Dst: ospf_external_info_apply_default_routemap
      Src: /src/frr/ospfd/ospf_zebra.c:492,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:501,1
    - Dst: ospf_external_lsa_default_routemap_timer
      Src: /src/frr/ospfd/ospf_zebra.c:513,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_zebra.c:516,1
    - Dst: ospf_external_info_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:528,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:533,1
    - Dst: ospf_external_default_routemap_apply_walk
      Src: /src/frr/ospfd/ospf_zebra.c:543,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:550,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:554,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:555,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:556,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:558,1
    - Dst: ospf_external_del
      Src: /src/frr/ospfd/ospf_zebra.c:562,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:566,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:569,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_zebra.c:570,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:570,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_zebra.c:572,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_zebra.c:575,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_zebra.c:577,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_zebra.c:583,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_zebra.c:588,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:597,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:610,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:618,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:630,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:633,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:676,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:681,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:682,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 100
    argCount: 3
    argNames:
    - ospf
    - path
    - api
    argTypes:
    - struct ospf*
    - struct ospf_path*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 695
    functionName: ospf_zebra_add_nexthop
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - list_delete
    - ospf_external_lsa_refresh
    - route_top
    - osr_debug
    - listnode_add
    - ospf_zebra_add_discard
    - ospf_external_info_lookup
    - ospf_zebra_add_nexthop
    - ospf_external_lsa_originate
    - ospf_external_add
    - IS_DEBUG_OSPF
    - if_lookup_by_index
    - ospf_external_info_find_lsa
    - snprintf
    - memset
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - ospf_zebra_append_opaque_attr
    - return
    - inet_ntop
    - zlog_debug
    - ospf_zebra_delete_discard
    - ospf_external_del
    - zclient_route_send
    - ospf_path_type_name
    - if
    - EVENT_ARG
    - ospf_external_default_routemap_apply_walk
    - ospf_external_info_apply_default_routemap
    - route_table_finish
    - route_next
    - ospf_zebra_delete
    - zapi_route
    - XFREE
    - listnode_delete
    - EXTERNAL_INFO
    - zapi_route_set_blackhole
    - memcpy
    - ext
    - ospf_distance_apply
    - ospf_external_lsa_default_routemap_timer
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - ospf_external_lookup
    - SET_FLAG
    - route_table_init
    - list_new
    - ospf_zebra_update_prefix_sid
    - ospf_external_lsa_flush
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void ospf_zebra_add_nexthop(struct ospf *ospf, struct ospf_path *path,\n\t\t\t\t
      \  struct zapi_route *api)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_zebra.c:251,1
    - Dst: ospf_path_type_name
      Src: /src/frr/ospfd/ospf_zebra.c:252,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_zebra.c:258,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_zebra.c:265,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:272,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - or
    - api
    argTypes:
    - struct ospf_route*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 275
    functionName: ospf_zebra_append_opaque_attr
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - snprintf
    - inet_ntop
    - SET_FLAG
    - ospf_path_type_name
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf_zebra_append_opaque_attr(struct ospf_route *or,\n\t\t\t\t\t
      \ struct zapi_route *api)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:287,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:293,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:299,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:300,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:303,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:315,1
    - Dst: ospf_distance_apply
      Src: /src/frr/ospfd/ospf_zebra.c:320,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:322,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:326,1
    - Dst: ospf_zebra_add_nexthop
      Src: /src/frr/ospfd/ospf_zebra.c:330,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:332,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:332,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ospfd/ospf_zebra.c:335,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:337,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:344,1
    - Dst: ospf_zebra_append_opaque_attr
      Src: /src/frr/ospfd/ospf_zebra.c:345,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:347,1
    - Dst: ospf_zebra_delete
      Src: /src/frr/ospfd/ospf_zebra.c:350,1
    - Dst: zapi_route
      Src: /src/frr/ospfd/ospf_zebra.c:353,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:357,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:363,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:368,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:370,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:371,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:373,1
    - Dst: ospf_zebra_add_discard
      Src: /src/frr/ospfd/ospf_zebra.c:376,1
    - Dst: zapi_route
      Src: /src/frr/ospfd/ospf_zebra.c:378,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:382,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:388,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:393,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/ospfd/ospf_zebra.c:394,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:396,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:398,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:399,1
    - Dst: ospf_zebra_delete_discard
      Src: /src/frr/ospfd/ospf_zebra.c:402,1
    - Dst: zapi_route
      Src: /src/frr/ospfd/ospf_zebra.c:404,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:408,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:414,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:419,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/ospfd/ospf_zebra.c:420,1
    - Dst: zclient_route_send
      Src: /src/frr/ospfd/ospf_zebra.c:422,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:424,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:425,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:428,1
    - Dst: return
      Src: /src/frr/ospfd/ospf_zebra.c:437,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:439,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:440,1
    - Dst: ospf_external_add
      Src: /src/frr/ospfd/ospf_zebra.c:446,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:452,1
    - Dst: ext
      Src: /src/frr/ospfd/ospf_zebra.c:454,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_zebra.c:457,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_zebra.c:460,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:462,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_zebra.c:462,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_zebra.c:464,1
    - Dst: ospf_external_default_routemap_apply_walk
      Src: /src/frr/ospfd/ospf_zebra.c:473,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:483,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_zebra.c:487,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_zebra.c:488,1
    - Dst: ospf_external_info_apply_default_routemap
      Src: /src/frr/ospfd/ospf_zebra.c:492,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:501,1
    - Dst: ospf_external_lsa_default_routemap_timer
      Src: /src/frr/ospfd/ospf_zebra.c:513,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_zebra.c:516,1
    - Dst: ospf_external_info_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:528,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:533,1
    - Dst: ospf_external_default_routemap_apply_walk
      Src: /src/frr/ospfd/ospf_zebra.c:543,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:550,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:554,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:555,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:556,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:558,1
    - Dst: ospf_external_del
      Src: /src/frr/ospfd/ospf_zebra.c:562,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:566,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:569,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_zebra.c:570,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:570,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_zebra.c:572,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_zebra.c:575,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_zebra.c:577,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_zebra.c:583,1
    - Dst: ospf_zebra_update_prefix_sid
      Src: /src/frr/ospfd/ospf_zebra.c:588,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:597,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:610,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:618,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:630,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:633,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 33
    argCount: 3
    argNames:
    - ospf
    - p
    - or
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    - struct ospf_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 667
    functionName: ospf_zebra_add
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - list_delete
    - ospf_external_lsa_refresh
    - route_top
    - osr_debug
    - listnode_add
    - ospf_zebra_add_discard
    - ospf_external_info_lookup
    - ospf_zebra_add_nexthop
    - ospf_external_lsa_originate
    - ospf_external_add
    - IS_DEBUG_OSPF
    - if_lookup_by_index
    - ospf_external_info_find_lsa
    - memset
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - ospf_zebra_append_opaque_attr
    - return
    - zlog_debug
    - ospf_zebra_delete_discard
    - ospf_external_del
    - zclient_route_send
    - if
    - EVENT_ARG
    - ospf_external_default_routemap_apply_walk
    - ospf_external_info_apply_default_routemap
    - route_table_finish
    - route_next
    - ospf_zebra_delete
    - zapi_route
    - XFREE
    - listnode_delete
    - EXTERNAL_INFO
    - zapi_route_set_blackhole
    - memcpy
    - ext
    - ospf_distance_apply
    - ospf_external_lsa_default_routemap_timer
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - ospf_external_lookup
    - SET_FLAG
    - route_table_init
    - list_new
    - ospf_zebra_update_prefix_sid
    - ospf_external_lsa_flush
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void ospf_zebra_add(struct ospf *ospf, struct prefix_ipv4 *p,\n\t\t
      \   struct ospf_route * or)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:706,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:710,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_zebra.c:716,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/ospfd/ospf_zebra.c:725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - srp
    argTypes:
    - struct sr_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 726
    functionName: ospf_zebra_delete_prefix_sid
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 6
    functionsReached:
    - zebra_send_mpls_labels
    - SET_FLAG
    - osr_debug
    - memset
    linkageType: ''
    returnType: void
    signature: void ospf_zebra_delete_prefix_sid(const struct sr_prefix *srp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:734,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:738,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/ospfd/ospf_zebra.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - cmd
    - nhlfe
    argTypes:
    - int
    - struct sr_nhlfe
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 750
    functionName: ospf_zebra_send_adjacency_sid
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - zebra_send_mpls_labels
    - osr_debug
    - memset
    linkageType: ''
    returnType: void
    signature: void ospf_zebra_send_adjacency_sid(int cmd, struct sr_nhlfe nhlfe)
  - BBCount: 103
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:763,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:776,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:777,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_zebra.c:781,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_zebra.c:784,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:788,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:789,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_zebra.c:791,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:800,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:802,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_zebra.c:803,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_zebra.c:805,1
    - Dst: ospf_routemap_unset
      Src: /src/frr/ospfd/ospf_zebra.c:807,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_zebra.c:808,1
    - Dst: ospf_is_type_redistributed
      Src: /src/frr/ospfd/ospf_zebra.c:813,1
    - Dst: DEFAULT_ROUTE_TYPE
      Src: /src/frr/ospfd/ospf_zebra.c:816,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/ospfd/ospf_zebra.c:817,1
    - Dst: redist_check_instance
      Src: /src/frr/ospfd/ospf_zebra.c:820,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/ospfd/ospf_zebra.c:824,1
    - Dst: ospf_external_lsa_refresh_type
      Src: /src/frr/ospfd/ospf_zebra.c:844,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:846,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:847,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:849,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_zebra.c:850,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_zebra.c:851,1
    - Dst: ospf_external_add
      Src: /src/frr/ospfd/ospf_zebra.c:862,1
    - Dst: zclient_redistribute
      Src: /src/frr/ospfd/ospf_zebra.c:864,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:867,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:868,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:870,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_zebra.c:871,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_zebra.c:872,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_zebra.c:874,1
    - Dst: zclient_redistribute
      Src: /src/frr/ospfd/ospf_zebra.c:885,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:888,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:889,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:890,1
    - Dst: ospf_redistribute_withdraw
      Src: /src/frr/ospfd/ospf_zebra.c:893,1
    - Dst: ospf_external_del
      Src: /src/frr/ospfd/ospf_zebra.c:895,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_zebra.c:897,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:919,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:920,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:922,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_zebra.c:923,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_zebra.c:924,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:926,1
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospfd/ospf_zebra.c:934,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:939,1
    - Dst: ospf_external_del
      Src: /src/frr/ospfd/ospf_zebra.c:940,1
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospfd/ospf_zebra.c:952,1
    - Dst: ospf_external_add
      Src: /src/frr/ospfd/ospf_zebra.c:958,1
    - Dst: ospf_external_info_add
      Src: /src/frr/ospfd/ospf_zebra.c:959,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:964,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:965,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_zebra.c:967,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_zebra.c:968,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:970,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_zebra.c:971,1
    - Dst: IN_MULTICAST
      Src: /src/frr/ospfd/ospf_zebra.c:979,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_zebra.c:979,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_zebra.c:980,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:987,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_zebra.c:989,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1004,1
    - Dst: prefix_match
      Src: /src/frr/ospfd/ospf_zebra.c:1005,1
    - Dst: ospf_external_info_apply_default_routemap
      Src: /src/frr/ospfd/ospf_zebra.c:1012,1
    - Dst: route_map_set_values
      Src: /src/frr/ospfd/ospf_zebra.c:1019,1
    - Dst: ospf_external_lsa_originate_check
      Src: /src/frr/ospfd/ospf_zebra.c:1022,1
    - Dst: ospf_reset_route_map_set_values
      Src: /src/frr/ospfd/ospf_zebra.c:1026,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1029,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1030,1
    - Dst: route_map_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1033,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1033,1
    - Dst: ospf_external_info_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1065,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1073,1
    - Dst: ospf_external_info_apply_default_routemap
      Src: /src/frr/ospfd/ospf_zebra.c:1076,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1081,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1087,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:1092,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1094,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1099,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:1101,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1103,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1108,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1114,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1120,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_zebra.c:1128,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1143,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1144,1
    - Dst: ospf_external_lsa_originate_check
      Src: /src/frr/ospfd/ospf_zebra.c:1154,1
    - Dst: ospf_distribute_check_connected
      Src: /src/frr/ospfd/ospf_zebra.c:1159,1
    - Dst: DEFAULT_ROUTE_TYPE
      Src: /src/frr/ospfd/ospf_zebra.c:1162,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1162,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1164,1
    - Dst: access_list_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1165,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1165,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1167,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1168,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:1170,1
    - Dst: ospf_reset_route_map_set_values
      Src: /src/frr/ospfd/ospf_zebra.c:1175,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1182,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1183,1
    - Dst: route_map_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1186,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1186,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1190,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1191,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:1193,1
    - Dst: ospf_route_map_set_compare
      Src: /src/frr/ospfd/ospf_zebra.c:1199,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1213,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospfd/ospf_zebra.c:1214,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1214,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1215,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1215,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1218,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospf_zebra.c:1218,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1219,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ospfd/ospf_zebra.c:1219,1
    - Dst: route_map_counter_increment
      Src: /src/frr/ospfd/ospf_zebra.c:1220,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1220,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1225,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospfd/ospf_zebra.c:1226,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1226,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1227,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1227,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1230,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1231,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:1242,1
    - Dst: zclient_capabilities_send
      Src: /src/frr/ospfd/ospf_zebra.c:1247,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1256,1
    - Dst: ospf_zebra_gr_update
      Src: /src/frr/ospfd/ospf_zebra.c:1258,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1265,1
    - Dst: ospf_zebra_gr_update
      Src: /src/frr/ospfd/ospf_zebra.c:1267,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:1283,1
    - Dst: zapi_route_decode
      Src: /src/frr/ospfd/ospf_zebra.c:1287,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:1294,1
    - Dst: IPV4_NET127
      Src: /src/frr/ospfd/ospf_zebra.c:1295,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_zebra.c:1295,1
    - Dst: is_default_prefix
      Src: /src/frr/ospfd/ospf_zebra.c:1308,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1311,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1312,1
    - Dst: zserv_command_string
      Src: /src/frr/ospfd/ospf_zebra.c:1314,1
    - Dst: zebra_route_string
      Src: /src/frr/ospfd/ospf_zebra.c:1315,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1339,1
    - Dst: ospf_external_info_add
      Src: /src/frr/ospfd/ospf_zebra.c:1342,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1350,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1351,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1358,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1364,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1368,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1369,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1375,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_zebra.c:1385,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1390,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_zebra.c:1396,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:1403,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1410,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1418,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1422,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1425,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1428,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1432,1
    - Dst: ospf_external_lsa_default_routemap_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1445,1
    - Dst: ospf_external_info_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1450,1
    - Dst: ospf_external_lsa_default_routemap_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1459,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1461,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_zebra.c:1464,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1466,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1469,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1472,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1473,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:1475,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1489,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1490,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1502,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1503,1
    - Dst: zserv_command_string
      Src: /src/frr/ospfd/ospf_zebra.c:1504,1
    - Dst: zclient_send_rnh
      Src: /src/frr/ospfd/ospf_zebra.c:1507,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_zebra.c:1509,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:1519,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_zebra.c:1520,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/ospfd/ospf_zebra.c:1523,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_zebra.c:1524,1
    - Dst: ospf_abr_nssa_type7_defaults
      Src: /src/frr/ospfd/ospf_zebra.c:1534,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1542,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1542,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1545,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1546,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1546,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1549,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospf_zebra.c:1549,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1552,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1553,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1562,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1563,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1566,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1569,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1570,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1570,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1572,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_zebra.c:1585,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_zebra.c:1592,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1595,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:1596,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1610,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:1612,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_zebra.c:1614,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_zebra.c:1614,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1619,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1624,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1631,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_zebra.c:1634,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1639,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1642,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1651,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1654,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:1676,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1679,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1683,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1686,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1694,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1704,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:1705,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_zebra.c:1709,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_zebra.c:1723,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1727,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1735,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1737,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1741,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:1753,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1753,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1756,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1759,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1760,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1762,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1766,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1770,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_zebra.c:1771,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1780,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1781,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1782,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1786,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1787,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_zebra.c:1793,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospf_zebra.c:1794,1
    CyclomaticComplexity: 136
    EdgeCount: 136
    ICount: 399
    argCount: 3
    argNames:
    - ospf
    - type
    - instance
    argTypes:
    - struct ospf*
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 752
    functionDepth: 3
    functionLinenumber: 752
    functionLinenumberEnd: 1796
    functionName: ospf_redist_lookup
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 3
    functionsReached:
    - ospf_schedule_abr_task
    - ospf_external_lsa_refresh_default
    - route_top
    - ospf_redistribute_withdraw
    - flog_err
    - IS_OSPF_ASBR
    - memset
    - XCALLOC
    - ospf_vrf_id_to_name
    - ospf_external_lsa_refresh_type
    - zapi_route_decode
    - ospf_reset_route_map_set_values
    - ospf_distribute_list_update
    - if
    - ospf_routemap_unset
    - listcount
    - zapi_nexthop_update_decode
    - memcpy
    - route_map_counter_decrement
    - redist_check_instance
    - IS_LSA_MAXAGE
    - zclient_send_rnh
    - list_new
    - route_map_apply
    - ospf_asbr_status_update
    - ospf_redist_lookup
    - ospf_external_lsa_originate_check
    - ospf_external_lsa_refresh
    - ROUTEMAP
    - metric_value
    - ospf_external_info_lookup
    - ospf_lookup_by_vrf_id
    - ospf_redist_string
    - masklen2ip
    - IS_OSPF_ABR
    - event_add_timer_msec
    - ospf_redistribute_check
    - DEFAULT_ROUTE_TYPE
    - zserv_command_string
    - ospf_distribute_check_connected
    - IN_MULTICAST
    - zclient_capabilities_send
    - EXTERNAL_INFO
    - DISTRIBUTE_LIST
    - strcmp
    - ospf_external_lookup
    - IPV4_NET127
    - access_list_lookup
    - ospf_zebra_gr_update
    - event_add_event
    - EXPORT_NAME
    - metric_type
    - access_list_apply
    - vrf_bitmap_check
    - ospf_route_map_set_compare
    - zlog_debug
    - ospf_originate_summary_lsa
    - zclient_redistribute
    - zlog_info
    - ospf_external_info_apply_default_routemap
    - IMPORT_LIST
    - zlog_err
    - route_next
    - ospf_abr_nssa_type7_defaults
    - XFREE
    - EXPORT_LIST
    - is_default_prefix4
    - route_map_lookup_by_name
    - DISTRIBUTE_NAME
    - ospf_external_aggr_match
    - is_default_prefix
    - list_delete
    - listnode_add
    - strdup
    - IMPORT_NAME
    - route_map_counter_increment
    - ospf_external_lsa_originate
    - htonl
    - ospf_external_add
    - IS_DEBUG_OSPF
    - ospf_external_info_find_lsa
    - zclient_redistribute_default
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - ospf_external_lsa_default_routemap_apply
    - ospf_external_del
    - EVENT_ARG
    - ospf_external_info_delete
    - ROUTEMAP_NAME
    - ntohl
    - prefix_same
    - free
    - ospf_unlink_ei_from_aggr
    - route_map_set_values
    - listnode_delete
    - zebra_route_string
    - ospf_is_type_redistributed
    - ospf_external_lsa_flush
    - ospf_external_info_add
    linkageType: ''
    returnType: struct ospf_redist
    signature: "struct ospf_redist *ospf_redist_lookup(struct ospf *ospf, uint8_t
      type,\n\t\t\t\t       unsigned short instance)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_external_add
      Src: /src/frr/ospfd/ospf_zebra.c:862,1
    - Dst: zclient_redistribute
      Src: /src/frr/ospfd/ospf_zebra.c:864,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:867,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:868,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:870,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_zebra.c:871,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_zebra.c:872,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_zebra.c:874,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - ospf
    - red
    - type
    - instance
    - mtype
    - mvalue
    argTypes:
    - struct ospf*
    - struct ospf_redist*
    - int
    - unsigned short
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 856
    functionDepth: 2
    functionLinenumber: 856
    functionLinenumberEnd: 877
    functionName: ospf_redistribute_set
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - ospf_external_add
    - IS_DEBUG_OSPF
    - ospf_redist_string
    - metric_type
    - zlog_debug
    - metric_value
    - ospf_asbr_status_update
    - zclient_redistribute
    linkageType: ''
    returnType: int
    signature: "int ospf_redistribute_set(struct ospf *ospf, struct ospf_redist *red,
      int type,\n\t\t\t  unsigned short instance, int mtype, int mvalue)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zclient_redistribute
      Src: /src/frr/ospfd/ospf_zebra.c:885,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:888,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:889,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:890,1
    - Dst: ospf_redistribute_withdraw
      Src: /src/frr/ospfd/ospf_zebra.c:893,1
    - Dst: ospf_external_del
      Src: /src/frr/ospfd/ospf_zebra.c:895,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_zebra.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ospf
    - type
    - instance
    argTypes:
    - struct ospf*
    - int
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 879
    functionDepth: 2
    functionLinenumber: 879
    functionLinenumberEnd: 900
    functionName: ospf_redistribute_unset
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_redist_string
    - ospf_redistribute_withdraw
    - zlog_debug
    - ospf_external_del
    - ospf_asbr_status_update
    - zclient_redistribute
    linkageType: ''
    returnType: int
    signature: "int ospf_redistribute_unset(struct ospf *ospf, int type,\n\t\t\t    unsigned
      short instance)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:919,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:920,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:922,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_zebra.c:923,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_zebra.c:924,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:926,1
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospfd/ospf_zebra.c:934,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:939,1
    - Dst: ospf_external_del
      Src: /src/frr/ospfd/ospf_zebra.c:940,1
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospfd/ospf_zebra.c:952,1
    - Dst: ospf_external_add
      Src: /src/frr/ospfd/ospf_zebra.c:958,1
    - Dst: ospf_external_info_add
      Src: /src/frr/ospfd/ospf_zebra.c:959,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:964,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:965,1
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_zebra.c:967,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_zebra.c:968,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:970,1
    - Dst: ospf_asbr_status_update
      Src: /src/frr/ospfd/ospf_zebra.c:971,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 4
    argNames:
    - ospf
    - originate
    - mtype
    - mvalue
    argTypes:
    - struct ospf*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 973
    functionName: ospf_redistribute_default_set
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - ospf_external_add
    - IS_DEBUG_OSPF
    - zclient_redistribute_default
    - ospf_redist_string
    - ospf_external_lsa_refresh_default
    - metric_type
    - zlog_debug
    - metric_value
    - ospf_external_del
    - ospf_external_info_delete
    - ospf_asbr_status_update
    - ospf_external_info_add
    linkageType: ''
    returnType: int
    signature: "int ospf_redistribute_default_set(struct ospf *ospf, int originate,
      int mtype,\n\t\t\t\t  int mvalue)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IN_MULTICAST
      Src: /src/frr/ospfd/ospf_zebra.c:979,1
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_zebra.c:979,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_zebra.c:980,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:987,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_zebra.c:989,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ospf
    - ei
    argTypes:
    - struct ospf*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 995
    functionName: ospf_external_lsa_originate_check
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - IN_MULTICAST
    - is_default_prefix4
    - zlog_info
    - htonl
    linkageType: ''
    returnType: int
    signature: "int ospf_external_lsa_originate_check(struct ospf *ospf,\n\t\t\t\t\t
      \    struct external_info *ei)"
  - BBCount: 78
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1004,1
    - Dst: prefix_match
      Src: /src/frr/ospfd/ospf_zebra.c:1005,1
    - Dst: ospf_external_info_apply_default_routemap
      Src: /src/frr/ospfd/ospf_zebra.c:1012,1
    - Dst: route_map_set_values
      Src: /src/frr/ospfd/ospf_zebra.c:1019,1
    - Dst: ospf_external_lsa_originate_check
      Src: /src/frr/ospfd/ospf_zebra.c:1022,1
    - Dst: ospf_reset_route_map_set_values
      Src: /src/frr/ospfd/ospf_zebra.c:1026,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1029,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1030,1
    - Dst: route_map_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1033,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1033,1
    - Dst: ospf_external_info_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1065,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1073,1
    - Dst: ospf_external_info_apply_default_routemap
      Src: /src/frr/ospfd/ospf_zebra.c:1076,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1081,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1087,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:1092,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1094,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1099,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:1101,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1103,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1108,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1114,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1120,1
    - Dst: event_add_event
      Src: /src/frr/ospfd/ospf_zebra.c:1128,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1143,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1144,1
    - Dst: ospf_external_lsa_originate_check
      Src: /src/frr/ospfd/ospf_zebra.c:1154,1
    - Dst: ospf_distribute_check_connected
      Src: /src/frr/ospfd/ospf_zebra.c:1159,1
    - Dst: DEFAULT_ROUTE_TYPE
      Src: /src/frr/ospfd/ospf_zebra.c:1162,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1162,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1164,1
    - Dst: access_list_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1165,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1165,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1167,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1168,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:1170,1
    - Dst: ospf_reset_route_map_set_values
      Src: /src/frr/ospfd/ospf_zebra.c:1175,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1182,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1183,1
    - Dst: route_map_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1186,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1186,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1190,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1191,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:1193,1
    - Dst: ospf_route_map_set_compare
      Src: /src/frr/ospfd/ospf_zebra.c:1199,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1213,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospfd/ospf_zebra.c:1214,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1214,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1215,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1215,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1218,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospf_zebra.c:1218,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1219,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ospfd/ospf_zebra.c:1219,1
    - Dst: route_map_counter_increment
      Src: /src/frr/ospfd/ospf_zebra.c:1220,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1220,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1225,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospfd/ospf_zebra.c:1226,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1226,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1227,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1227,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1230,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1231,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:1242,1
    - Dst: zclient_capabilities_send
      Src: /src/frr/ospfd/ospf_zebra.c:1247,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1256,1
    - Dst: ospf_zebra_gr_update
      Src: /src/frr/ospfd/ospf_zebra.c:1258,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1265,1
    - Dst: ospf_zebra_gr_update
      Src: /src/frr/ospfd/ospf_zebra.c:1267,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:1283,1
    - Dst: zapi_route_decode
      Src: /src/frr/ospfd/ospf_zebra.c:1287,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:1294,1
    - Dst: IPV4_NET127
      Src: /src/frr/ospfd/ospf_zebra.c:1295,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_zebra.c:1295,1
    - Dst: is_default_prefix
      Src: /src/frr/ospfd/ospf_zebra.c:1308,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1311,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1312,1
    - Dst: zserv_command_string
      Src: /src/frr/ospfd/ospf_zebra.c:1314,1
    - Dst: zebra_route_string
      Src: /src/frr/ospfd/ospf_zebra.c:1315,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1339,1
    - Dst: ospf_external_info_add
      Src: /src/frr/ospfd/ospf_zebra.c:1342,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1350,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1351,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1358,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1364,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1368,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1369,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1375,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_zebra.c:1385,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1390,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_zebra.c:1396,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:1403,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1410,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1418,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1422,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1425,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1428,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1432,1
    - Dst: ospf_external_lsa_default_routemap_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1445,1
    - Dst: ospf_external_info_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1450,1
    - Dst: ospf_external_lsa_default_routemap_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1459,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1461,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_zebra.c:1464,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1466,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1469,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1472,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1473,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:1475,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1489,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1490,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1502,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1503,1
    - Dst: zserv_command_string
      Src: /src/frr/ospfd/ospf_zebra.c:1504,1
    - Dst: zclient_send_rnh
      Src: /src/frr/ospfd/ospf_zebra.c:1507,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_zebra.c:1509,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:1519,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_zebra.c:1520,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/ospfd/ospf_zebra.c:1523,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_zebra.c:1524,1
    - Dst: ospf_abr_nssa_type7_defaults
      Src: /src/frr/ospfd/ospf_zebra.c:1534,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1542,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1542,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1545,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1546,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1546,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1549,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospf_zebra.c:1549,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1552,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1553,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1562,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1563,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1566,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1569,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1570,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1570,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1572,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_zebra.c:1585,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_zebra.c:1592,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1595,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:1596,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1610,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:1612,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_zebra.c:1614,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_zebra.c:1614,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1619,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1624,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1631,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_zebra.c:1634,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1639,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1642,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1651,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1654,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:1676,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1679,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1683,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1686,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1694,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 276
    argCount: 2
    argNames:
    - ospf
    - ei
    argTypes:
    - struct ospf*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 998
    functionDepth: 4
    functionLinenumber: 998
    functionLinenumberEnd: 1695
    functionName: ospf_distribute_check_connected
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 2
    functionsReached:
    - is_default_prefix
    - ospf_redist_lookup
    - ospf_external_lsa_originate_check
    - ospf_external_lsa_refresh
    - ospf_external_lsa_refresh_default
    - route_top
    - ROUTEMAP
    - strdup
    - route_map_counter_increment
    - ospf_external_info_lookup
    - flog_err
    - ospf_external_lsa_originate
    - access_list_apply
    - access_list_lookup
    - ospf_external_lsa_flush
    - IS_OSPF_ASBR
    - ospf_external_info_find_lsa
    - IS_DEBUG_OSPF
    - ospf_route_map_set_compare
    - ospf_lookup_by_vrf_id
    - memset
    - prefix_match
    - ospf_redist_string
    - masklen2ip
    - ALL_LIST_ELEMENTS_RO
    - ospf_vrf_id_to_name
    - zapi_route_decode
    - ospf_external_lsa_default_routemap_apply
    - zlog_debug
    - ospf_redistribute_check
    - ospf_reset_route_map_set_values
    - ospf_originate_summary_lsa
    - ospf_external_info_delete
    - ospf_distribute_list_update
    - EVENT_ARG
    - if
    - ROUTEMAP_NAME
    - ntohl
    - zlog_info
    - prefix_same
    - ospf_external_info_apply_default_routemap
    - DEFAULT_ROUTE_TYPE
    - zserv_command_string
    - free
    - ospf_unlink_ei_from_aggr
    - ospf_distribute_check_connected
    - zlog_err
    - route_next
    - ospf_abr_nssa_type7_defaults
    - route_map_set_values
    - zapi_nexthop_update_decode
    - is_default_prefix4
    - zclient_capabilities_send
    - zebra_route_string
    - memcpy
    - route_map_counter_decrement
    - DISTRIBUTE_LIST
    - IS_LSA_MAXAGE
    - route_map_lookup_by_name
    - DISTRIBUTE_NAME
    - IPV4_NET127
    - zclient_send_rnh
    - route_map_apply
    - ospf_external_aggr_match
    - ospf_zebra_gr_update
    - ospf_external_info_add
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int ospf_distribute_check_connected(struct ospf *ospf, struct external_info
      *ei)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1143,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1144,1
    - Dst: ospf_external_lsa_originate_check
      Src: /src/frr/ospfd/ospf_zebra.c:1154,1
    - Dst: ospf_distribute_check_connected
      Src: /src/frr/ospfd/ospf_zebra.c:1159,1
    - Dst: DEFAULT_ROUTE_TYPE
      Src: /src/frr/ospfd/ospf_zebra.c:1162,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1162,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1164,1
    - Dst: access_list_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1165,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1165,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1167,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1168,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:1170,1
    - Dst: ospf_reset_route_map_set_values
      Src: /src/frr/ospfd/ospf_zebra.c:1175,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1182,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1183,1
    - Dst: route_map_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1186,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1186,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1190,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1191,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_zebra.c:1193,1
    - Dst: ospf_route_map_set_compare
      Src: /src/frr/ospfd/ospf_zebra.c:1199,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 3
    argNames:
    - ospf
    - ei
    - changed
    argTypes:
    - struct ospf*
    - struct external_info*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1137
    functionDepth: 5
    functionLinenumber: 1137
    functionLinenumberEnd: 1208
    functionName: ospf_redistribute_check
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 3
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_redist_lookup
    - ospf_external_lsa_originate_check
    - DEFAULT_ROUTE_TYPE
    - DISTRIBUTE_LIST
    - ospf_redist_string
    - ospf_route_map_set_compare
    - ROUTEMAP
    - ospf_distribute_check_connected
    - DISTRIBUTE_NAME
    - zlog_debug
    - route_map_apply
    - access_list_apply
    - ospf_reset_route_map_set_values
    - is_default_prefix4
    - ROUTEMAP_NAME
    linkageType: ''
    returnType: int
    signature: "int ospf_redistribute_check(struct ospf *ospf, struct external_info
      *ei,\n\t\t\t    int *changed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1213,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospfd/ospf_zebra.c:1214,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1214,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1215,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1215,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1218,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospf_zebra.c:1218,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1219,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ospfd/ospf_zebra.c:1219,1
    - Dst: route_map_counter_increment
      Src: /src/frr/ospfd/ospf_zebra.c:1220,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - red
    - name
    argTypes:
    - struct ospf_redist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1221
    functionName: ospf_routemap_set
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - route_map_counter_decrement
    - free
    - ROUTEMAP
    - strdup
    - route_map_lookup_by_name
    - route_map_counter_increment
    - ROUTEMAP_NAME
    linkageType: ''
    returnType: void
    signature: void ospf_routemap_set(struct ospf_redist *red, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1225,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospfd/ospf_zebra.c:1226,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1226,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1227,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1227,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1230,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - red
    argTypes:
    - struct ospf_redist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1232
    functionName: ospf_routemap_unset
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 2
    functionsReached:
    - route_map_counter_decrement
    - free
    - ROUTEMAP_NAME
    - ROUTEMAP
    linkageType: ''
    returnType: void
    signature: void ospf_routemap_unset(struct ospf_redist *red)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_zebra.c:1242,1
    - Dst: zclient_capabilities_send
      Src: /src/frr/ospfd/ospf_zebra.c:1247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ospf
    - command
    - stale_time
    argTypes:
    - struct ospf*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1234
    functionDepth: 1
    functionLinenumber: 1234
    functionLinenumberEnd: 1251
    functionName: ospf_zebra_gr_update
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 2
    functionsReached:
    - zclient_capabilities_send
    - memset
    linkageType: ''
    returnType: int
    signature: "int ospf_zebra_gr_update(struct ospf *ospf, int command,\n\t\t\t\tuint32_t
      stale_time)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1256,1
    - Dst: ospf_zebra_gr_update
      Src: /src/frr/ospfd/ospf_zebra.c:1258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf
    - stale_time
    argTypes:
    - struct ospf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1253
    functionDepth: 2
    functionLinenumber: 1253
    functionLinenumberEnd: 1260
    functionName: ospf_zebra_gr_enable
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf_zebra_gr_update
    linkageType: ''
    returnType: int
    signature: int ospf_zebra_gr_enable(struct ospf *ospf, uint32_t stale_time)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1265,1
    - Dst: ospf_zebra_gr_update
      Src: /src/frr/ospfd/ospf_zebra.c:1267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1268
    functionName: ospf_zebra_gr_disable
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf_zebra_gr_update
    linkageType: ''
    returnType: int
    signature: int ospf_zebra_gr_disable(struct ospf *ospf)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:1283,1
    - Dst: zapi_route_decode
      Src: /src/frr/ospfd/ospf_zebra.c:1287,1
    - Dst: memcpy
      Src: /src/frr/ospfd/ospf_zebra.c:1294,1
    - Dst: IPV4_NET127
      Src: /src/frr/ospfd/ospf_zebra.c:1295,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_zebra.c:1295,1
    - Dst: is_default_prefix
      Src: /src/frr/ospfd/ospf_zebra.c:1308,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1311,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1312,1
    - Dst: zserv_command_string
      Src: /src/frr/ospfd/ospf_zebra.c:1314,1
    - Dst: zebra_route_string
      Src: /src/frr/ospfd/ospf_zebra.c:1315,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1339,1
    - Dst: ospf_external_info_add
      Src: /src/frr/ospfd/ospf_zebra.c:1342,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1350,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1351,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1358,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1364,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1368,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1369,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1375,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_zebra.c:1385,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1390,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_zebra.c:1396,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:1403,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1410,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1418,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1422,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1425,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1428,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1432,1
    - Dst: ospf_external_lsa_default_routemap_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1445,1
    - Dst: ospf_external_info_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1450,1
    - Dst: ospf_external_lsa_default_routemap_apply
      Src: /src/frr/ospfd/ospf_zebra.c:1459,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1461,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_zebra.c:1464,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1466,1
    - Dst: ospf_external_info_delete
      Src: /src/frr/ospfd/ospf_zebra.c:1469,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1472,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_zebra.c:1473,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_zebra.c:1475,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1271
    functionDepth: 6
    functionLinenumber: 1271
    functionLinenumberEnd: 1481
    functionName: ospf_zebra_read_route
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - is_default_prefix
    - ospf_external_lsa_refresh
    - ospf_external_lsa_refresh_default
    - ospf_external_info_lookup
    - ospf_external_lsa_originate
    - IS_DEBUG_OSPF
    - ospf_external_info_find_lsa
    - ospf_lookup_by_vrf_id
    - masklen2ip
    - zapi_route_decode
    - ospf_external_lsa_default_routemap_apply
    - zlog_debug
    - ospf_redistribute_check
    - ospf_originate_summary_lsa
    - ospf_external_info_delete
    - ntohl
    - prefix_same
    - zserv_command_string
    - ospf_unlink_ei_from_aggr
    - is_default_prefix4
    - zebra_route_string
    - memcpy
    - IPV4_NET127
    - ospf_external_aggr_match
    - ospf_external_lsa_flush
    - ospf_external_info_add
    linkageType: ''
    returnType: int
    signature: int ospf_zebra_read_route(ZAPI_CALLBACK_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1489,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1490,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1502,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1503,1
    - Dst: zserv_command_string
      Src: /src/frr/ospfd/ospf_zebra.c:1504,1
    - Dst: zclient_send_rnh
      Src: /src/frr/ospfd/ospf_zebra.c:1507,1
    - Dst: flog_err
      Src: /src/frr/ospfd/ospf_zebra.c:1509,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ospf
    - unreg
    argTypes:
    - struct ospf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1483
    functionDepth: 1
    functionLinenumber: 1483
    functionLinenumberEnd: 1511
    functionName: ospf_zebra_import_default_route
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - zserv_command_string
    - zclient_send_rnh
    - flog_err
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf_zebra_import_default_route(struct ospf *ospf, bool unreg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_zebra.c:1519,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_zebra.c:1520,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/ospfd/ospf_zebra.c:1523,1
    - Dst: zlog_err
      Src: /src/frr/ospfd/ospf_zebra.c:1524,1
    - Dst: ospf_abr_nssa_type7_defaults
      Src: /src/frr/ospfd/ospf_zebra.c:1534,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1513
    functionDepth: 3
    functionLinenumber: 1513
    functionLinenumberEnd: 1537
    functionName: ospf_zebra_import_check_update
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - IS_OSPF_ASBR
    - ospf_lookup_by_vrf_id
    - zlog_err
    - ospf_abr_nssa_type7_defaults
    - zapi_nexthop_update_decode
    linkageType: ''
    returnType: int
    signature: int ospf_zebra_import_check_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1542,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1542,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1545,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1546,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1546,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1549,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospf_zebra.c:1549,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1552,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ospf
    - type
    - name
    argTypes:
    - struct ospf*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1539
    functionDepth: 1
    functionLinenumber: 1539
    functionLinenumberEnd: 1556
    functionName: ospf_distribute_list_out_set
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - DISTRIBUTE_LIST
    - free
    - strdup
    - DISTRIBUTE_NAME
    - ospf_distribute_list_update
    - access_list_lookup
    linkageType: ''
    returnType: int
    signature: int ospf_distribute_list_out_set(struct ospf *ospf, int type, const
      char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1562,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1563,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1566,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1569,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1570,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1570,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ospf
    - type
    - name
    argTypes:
    - struct ospf*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1558
    functionDepth: 1
    functionLinenumber: 1558
    functionLinenumberEnd: 1575
    functionName: ospf_distribute_list_out_unset
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - DISTRIBUTE_NAME
    - free
    - DISTRIBUTE_LIST
    - ospf_distribute_list_update
    linkageType: ''
    returnType: int
    signature: "int ospf_distribute_list_out_unset(struct ospf *ospf, int type,\n\t\t\t\t
      \  const char *name)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_zebra.c:1585,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_zebra.c:1592,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1595,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:1596,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1610,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:1612,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_zebra.c:1614,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_zebra.c:1614,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_zebra.c:1619,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_zebra.c:1624,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1631,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_zebra.c:1634,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_zebra.c:1639,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:1642,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1651,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_zebra.c:1654,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_zebra.c:1676,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_zebra.c:1679,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_zebra.c:1683,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_zebra.c:1686,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 40
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1578
    functionDepth: 6
    functionLinenumber: 1578
    functionLinenumberEnd: 1692
    functionName: ospf_distribute_list_update_timer
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - IS_DEBUG_OSPF
    - ospf_external_info_find_lsa
    - ospf_external_lsa_refresh
    - ospf_vrf_id_to_name
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - ospf_unlink_ei_from_aggr
    - ospf_originate_summary_lsa
    - IS_LSA_MAXAGE
    - route_next
    - zlog_debug
    - ospf_redistribute_check
    - ospf_external_lsa_originate
    - EVENT_ARG
    - if
    - ospf_external_aggr_match
    - is_default_prefix4
    linkageType: ''
    returnType: void
    signature: void ospf_distribute_list_update_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1704,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_zebra.c:1705,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospfd/ospf_zebra.c:1709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ospf
    - type
    - instance
    argTypes:
    - struct ospf*
    - int
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1698
    functionDepth: 1
    functionLinenumber: 1698
    functionLinenumberEnd: 1711
    functionName: ospf_distribute_list_update
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 4
    functionsReached:
    - event_add_timer_msec
    - ospf_external_lookup
    - EXTERNAL_INFO
    linkageType: ''
    returnType: void
    signature: "void ospf_distribute_list_update(struct ospf *ospf, int type,\n\t\t\t\t
      unsigned short instance)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_zebra.c:1723,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1727,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1735,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1737,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1741,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_zebra.c:1753,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1753,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1756,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1759,1
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1760,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1762,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1766,1
    - Dst: DISTRIBUTE_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1770,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_zebra.c:1771,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1780,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1781,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1782,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospf_zebra.c:1786,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospfd/ospf_zebra.c:1787,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_zebra.c:1793,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospf_zebra.c:1794,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - access
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1714
    functionDepth: 2
    functionLinenumber: 1714
    functionLinenumberEnd: 1795
    functionName: ospf_filter_update
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - ospf_schedule_abr_task
    - DISTRIBUTE_LIST
    - EXPORT_NAME
    - IMPORT_LIST
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - strcmp
    - ROUTEMAP
    - IS_OSPF_ABR
    - IMPORT_NAME
    - DISTRIBUTE_NAME
    - ospf_distribute_list_update
    - EXPORT_LIST
    - if
    - access_list_lookup
    linkageType: ''
    returnType: void
    signature: void ospf_filter_update(struct access_list *access)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_zebra.c:1808,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1812,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1826,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospfd/ospf_zebra.c:1827,1
    - Dst: ospf_distribute_list_update
      Src: /src/frr/ospfd/ospf_zebra.c:1831,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:1838,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospfd/ospf_zebra.c:1840,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_zebra.c:1841,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospfd/ospf_zebra.c:1841,1
    - Dst: prefix_list_name
      Src: /src/frr/ospfd/ospf_zebra.c:1842,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospfd/ospf_zebra.c:1844,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1844,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospfd/ospf_zebra.c:1845,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospfd/ospf_zebra.c:1850,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_zebra.c:1851,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospfd/ospf_zebra.c:1851,1
    - Dst: prefix_list_name
      Src: /src/frr/ospfd/ospf_zebra.c:1852,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospfd/ospf_zebra.c:1854,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1854,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospfd/ospf_zebra.c:1855,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_zebra.c:1861,1
    - Dst: ospf_schedule_abr_task
      Src: /src/frr/ospfd/ospf_zebra.c:1862,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1799
    functionDepth: 2
    functionLinenumber: 1799
    functionLinenumberEnd: 1864
    functionName: ospf_prefix_list_update
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - ospf_schedule_abr_task
    - prefix_list_lookup
    - prefix_list_name
    - PREFIX_LIST_OUT
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - strcmp
    - ROUTEMAP
    - IS_OSPF_ABR
    - PREFIX_LIST_IN
    - ospf_distribute_list_update
    - PREFIX_NAME_IN
    - PREFIX_NAME_OUT
    linkageType: ''
    returnType: void
    signature: void ospf_prefix_list_update(struct prefix_list *plist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_zebra.c:1868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1866
    functionDepth: 0
    functionLinenumber: 1866
    functionLinenumberEnd: 1869
    functionName: ospf_distance_new
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ospf_distance
    signature: struct ospf_distance *ospf_distance_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_zebra.c:1873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - odistance
    argTypes:
    - struct ospf_distance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1871
    functionDepth: 0
    functionLinenumber: 1871
    functionLinenumberEnd: 1874
    functionName: ospf_distance_free
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_distance_free(struct ospf_distance *odistance)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/ospfd/ospf_zebra.c:1886,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_zebra.c:1888,1
    - Dst: atoi
      Src: /src/frr/ospfd/ospf_zebra.c:1892,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_zebra.c:1895,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_zebra.c:1898,1
    - Dst: ospf_distance_new
      Src: /src/frr/ospfd/ospf_zebra.c:1900,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1909,1
    - Dst: strdup
      Src: /src/frr/ospfd/ospf_zebra.c:1913,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 5
    argNames:
    - vty
    - ospf
    - distance_str
    - ip_str
    - access_list_str
    argTypes:
    - struct vty*
    - struct ospf*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1876
    functionDepth: 1
    functionLinenumber: 1876
    functionLinenumberEnd: 1916
    functionName: ospf_distance_set
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - str2prefix_ipv4
    - vty_out
    - free
    - ospf_distance_new
    - strdup
    - route_node_get
    - atoi
    linkageType: ''
    returnType: int
    signature: "int ospf_distance_set(struct vty *vty, struct ospf *ospf,\n\t\t      const
      char *distance_str, const char *ip_str,\n\t\t      const char *access_list_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/ospfd/ospf_zebra.c:1927,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_zebra.c:1929,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_zebra.c:1933,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_zebra.c:1935,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1942,1
    - Dst: ospf_distance_free
      Src: /src/frr/ospfd/ospf_zebra.c:1943,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_zebra.c:1946,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_zebra.c:1947,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - vty
    - ospf
    - distance_str
    - ip_str
    - access_list_str
    argTypes:
    - struct vty*
    - struct ospf*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1918
    functionDepth: 1
    functionLinenumber: 1918
    functionLinenumberEnd: 1950
    functionName: ospf_distance_unset
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - str2prefix_ipv4
    - route_node_lookup
    - vty_out
    - free
    - ospf_distance_free
    linkageType: ''
    returnType: int
    signature: "int ospf_distance_unset(struct vty *vty, struct ospf *ospf,\n\t\t\tconst
      char *distance_str, const char *ip_str,\n\t\t\tchar const *access_list_str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_zebra.c:1957,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_zebra.c:1957,1
    - Dst: free
      Src: /src/frr/ospfd/ospf_zebra.c:1963,1
    - Dst: ospf_distance_free
      Src: /src/frr/ospfd/ospf_zebra.c:1964,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_zebra.c:1966,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1952
    functionDepth: 1
    functionLinenumber: 1952
    functionLinenumberEnd: 1968
    functionName: ospf_distance_reset
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_top
    - free
    - route_next
    - ospf_distance_free
    linkageType: ''
    returnType: void
    signature: void ospf_distance_reset(struct ospf *ospf)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 3
    argNames:
    - ospf
    - p
    - or
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    - struct ospf_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1970
    functionDepth: 0
    functionLinenumber: 1970
    functionLinenumberEnd: 1992
    functionName: ospf_distance_apply
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t ospf_distance_apply(struct ospf *ospf, struct prefix_ipv4
      *p,\n\t\t\t    struct ospf_route * or)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:2001,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:2002,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ospfd/ospf_zebra.c:2004,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 1994
    functionDepth: 2
    functionLinenumber: 1994
    functionLinenumberEnd: 2006
    functionName: ospf_zebra_vrf_register
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - ospf_vrf_id_to_name
    - zlog_debug
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void ospf_zebra_vrf_register(struct ospf *ospf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_zebra.c:2015,1
    - Dst: ospf_vrf_id_to_name
      Src: /src/frr/ospfd/ospf_zebra.c:2016,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/ospfd/ospf_zebra.c:2020,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2008
    functionDepth: 2
    functionLinenumber: 2008
    functionLinenumberEnd: 2022
    functionName: ospf_zebra_vrf_deregister
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 2
    functionsReached:
    - ospf_vrf_id_to_name
    - zclient_send_dereg_requests
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf_zebra_vrf_deregister(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2031
    functionDepth: 0
    functionLinenumber: 2031
    functionLinenumberEnd: 2034
    functionName: ospf_zebra_label_manager_ready
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ospf_zebra_label_manager_ready(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lm_get_label_chunk
      Src: /src/frr/ospfd/ospf_zebra.c:2052,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_zebra.c:2055,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - base
    - chunk_size
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 2044
    functionDepth: 1
    functionLinenumber: 2044
    functionLinenumberEnd: 2060
    functionName: ospf_zebra_request_label_range
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 2
    functionsReached:
    - zlog_warn
    - lm_get_label_chunk
    linkageType: ''
    returnType: int
    signature: int ospf_zebra_request_label_range(uint32_t base, uint32_t chunk_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lm_release_label_chunk
      Src: /src/frr/ospfd/ospf_zebra.c:2077,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_zebra.c:2079,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2084
    functionName: ospf_zebra_release_label_range
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 2
    functionsReached:
    - zlog_warn
    - lm_release_label_chunk
    linkageType: ''
    returnType: int
    signature: int ospf_zebra_release_label_range(uint32_t start, uint32_t end)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zclient_socket_connect
      Src: /src/frr/ospfd/ospf_zebra.c:2094,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_zebra.c:2095,1
    - Dst: set_nonblocking
      Src: /src/frr/ospfd/ospf_zebra.c:2100,1
    - Dst: zclient_send_hello
      Src: /src/frr/ospfd/ospf_zebra.c:2103,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_zebra.c:2104,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_zebra.c:2106,1
    - Dst: lm_label_manager_connect
      Src: /src/frr/ospfd/ospf_zebra.c:2112,1
    - Dst: zlog_warn
      Src: /src/frr/ospfd/ospf_zebra.c:2113,1
    - Dst: close
      Src: /src/frr/ospfd/ospf_zebra.c:2115,1
    - Dst: osr_debug
      Src: /src/frr/ospfd/ospf_zebra.c:2121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2091
    functionDepth: 1
    functionLinenumber: 2091
    functionLinenumberEnd: 2125
    functionName: ospf_zebra_label_manager_connect
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - osr_debug
    - close
    - zlog_warn
    - set_nonblocking
    - lm_label_manager_connect
    - zclient_socket_connect
    - zclient_send_hello
    linkageType: ''
    returnType: int
    signature: int ospf_zebra_label_manager_connect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_client_sendmsg
      Src: /src/frr/ospfd/ospf_zebra.c:2133,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ospfd/ospf_zebra.c:2135,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_zebra.c:2138,1
    - Dst: ospf_zebra_gr_enable
      Src: /src/frr/ospfd/ospf_zebra.c:2141,1
    - Dst: ospf_opaque_msg_handler
      Src: /src/frr/ospfd/ospf_zebra.c:2148,1
    - Dst: zclient_opaque_decode
      Src: /src/frr/ospfd/ospf_zebra.c:2159,1
    - Dst: STREAM_GETC
      Src: /src/frr/ospfd/ospf_zebra.c:2164,1
    - Dst: STREAM_GETW
      Src: /src/frr/ospfd/ospf_zebra.c:2165,1
    - Dst: STREAM_GETL
      Src: /src/frr/ospfd/ospf_zebra.c:2166,1
    - Dst: ospf_te_sync_ted
      Src: /src/frr/ospfd/ospf_zebra.c:2168,1
    - Dst: STREAM_GET
      Src: /src/frr/ospfd/ospf_zebra.c:2171,1
    - Dst: ospf_ldp_sync_state_update
      Src: /src/frr/ospfd/ospf_zebra.c:2172,1
    - Dst: STREAM_GET
      Src: /src/frr/ospfd/ospf_zebra.c:2175,1
    - Dst: ospf_ldp_sync_announce_update
      Src: /src/frr/ospfd/ospf_zebra.c:2176,1
    - Dst: ospf_zebra_client_close_notify
      Src: /src/frr/ospfd/ospf_zebra.c:2187,1
    - Dst: zapi_client_close_info
      Src: /src/frr/ospfd/ospf_zebra.c:2191,1
    - Dst: zapi_client_close_notify_decode
      Src: /src/frr/ospfd/ospf_zebra.c:2193,1
    - Dst: ospf_ldp_sync_handle_client_close
      Src: /src/frr/ospfd/ospf_zebra.c:2196,1
    - Dst: zclient_new
      Src: /src/frr/ospfd/ospf_zebra.c:2220,1
    - Dst: array_size
      Src: /src/frr/ospfd/ospf_zebra.c:2221,1
    - Dst: zclient_init
      Src: /src/frr/ospfd/ospf_zebra.c:2222,1
    - Dst: zclient_new
      Src: /src/frr/ospfd/ospf_zebra.c:2228,1
    - Dst: access_list_add_hook
      Src: /src/frr/ospfd/ospf_zebra.c:2239,1
    - Dst: access_list_delete_hook
      Src: /src/frr/ospfd/ospf_zebra.c:2240,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/ospfd/ospf_zebra.c:2241,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/ospfd/ospf_zebra.c:2242,1
    - Dst: zclient_send_neigh_discovery_req
      Src: /src/frr/ospfd/ospf_zebra.c:2247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2127
    functionDepth: 3
    functionLinenumber: 2127
    functionLinenumberEnd: 2248
    functionName: ospf_zebra_connected
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 0
    functionsReached:
    - prefix_list_add_hook
    - STREAM_GETC
    - ospf_te_sync_ted
    - ALL_LIST_ELEMENTS_RO
    - zclient_opaque_decode
    - zclient_send_reg_requests
    - STREAM_GETW
    - array_size
    - ospf_zebra_client_close_notify
    - zapi_client_close_info
    - zclient_init
    - prefix_list_delete_hook
    - ospf_ldp_sync_state_update
    - bfd_client_sendmsg
    - ospf_opaque_msg_handler
    - access_list_delete_hook
    - ospf_zebra_gr_enable
    - ospf_ldp_sync_handle_client_close
    - ospf_ldp_sync_announce_update
    - zclient_new
    - zclient_send_neigh_discovery_req
    - STREAM_GETL
    - STREAM_GET
    - access_list_add_hook
    - zapi_client_close_notify_decode
    linkageType: ''
    returnType: void
    signature: void ospf_zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_neigh_discovery_req
      Src: /src/frr/ospfd/ospf_zebra.c:2247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - p
    argTypes:
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2245
    functionDepth: 1
    functionLinenumber: 2245
    functionLinenumberEnd: 2248
    functionName: ospf_zebra_send_arp
    functionSourceFile: /src/frr/ospfd/ospf_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_send_neigh_discovery_req
    linkageType: ''
    returnType: void
    signature: void ospf_zebra_send_arp(const struct interface *ifp, const struct
      prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: OSPF_ISM_WRITE_ON
    functionSourceFile: /src/frr/ospfd/ospf_ism.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_ISM_WRITE_ON(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: OSPF_ISM_TIMER_ON
    functionSourceFile: /src/frr/ospfd/ospf_ism.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_ISM_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: OSPF_ISM_TIMER_MSEC_ON
    functionSourceFile: /src/frr/ospfd/ospf_ism.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_ISM_TIMER_MSEC_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 65
    functionName: OSPF_HELLO_TIMER_ON
    functionSourceFile: /src/frr/ospfd/ospf_ism.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_HELLO_TIMER_ON(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - I
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: OSPF_ISM_EVENT_SCHEDULE
    functionSourceFile: /src/frr/ospfd/ospf_ism.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_ISM_EVENT_SCHEDULE(I, E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - I
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: OSPF_ISM_EVENT_EXECUTE
    functionSourceFile: /src/frr/ospfd/ospf_ism.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_ISM_EVENT_EXECUTE(I, E)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:38,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_asbr.c:41,1
    - Dst: ospf_zebra_delete
      Src: /src/frr/ospfd/ospf_asbr.c:45,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_asbr.c:48,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:51,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:52,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_asbr.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ospf
    - p
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 57
    functionName: ospf_external_route_remove
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - zlog_info
    - route_node_lookup
    - ospf_zebra_delete
    - ospf_route_free
    linkageType: ''
    returnType: void
    signature: void ospf_external_route_remove(struct ospf *ospf, struct prefix_ipv4
      *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfd/ospf_asbr.c:65,1
    - Dst: ospf_reset_route_map_set_values
      Src: /src/frr/ospfd/ospf_asbr.c:71,1
    - Dst: route_map_set::route_map_set
      Src: /src/frr/ospfd/ospf_asbr.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ospf
    - type
    - instance
    argTypes:
    - struct ospf*
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 73
    functionName: ospf_external_info_new
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - route_map_set::route_map_set
    - ospf_reset_route_map_set_values
    linkageType: ''
    returnType: struct external_info
    signature: "struct external_info *ospf_external_info_new(struct ospf *ospf, uint8_t
      type,\n\t\t\t\t\t     unsigned short instance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_asbr.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ei
    argTypes:
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: ospf_external_info_free
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf_external_info_free(struct external_info *ei)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - values
    argTypes:
    - struct route_map_set_values*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: ospf_reset_route_map_set_values
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_reset_route_map_set_values(struct route_map_set_values *values)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - values1
    - values2
    argTypes:
    - struct route_map_set_values*
    - struct route_map_set_values*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: ospf_route_map_set_compare
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ospf_route_map_set_compare(struct route_map_set_values *values1,\n\t\t\t
      \      struct route_map_set_values *values2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:103,1
    - Dst: ospf_external_add
      Src: /src/frr/ospfd/ospf_asbr.c:105,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_asbr.c:107,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_asbr.c:107,1
    - Dst: rn::rn
      Src: /src/frr/ospfd/ospf_asbr.c:110,1
    - Dst: ifindex::ifindex
      Src: /src/frr/ospfd/ospf_asbr.c:111,1
    - Dst: nexthop::nexthop
      Src: /src/frr/ospfd/ospf_asbr.c:112,1
    - Dst: tag::tag
      Src: /src/frr/ospfd/ospf_asbr.c:113,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:114,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:118,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:119,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_asbr.c:121,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_asbr.c:123,1
    - Dst: ospf_external_info_new::ospf_external_info_new
      Src: /src/frr/ospfd/ospf_asbr.c:127,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:142,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:143,1
    - Dst: ospf_redist_string
      Src: /src/frr/ospfd/ospf_asbr.c:145,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 8
    argNames:
    - ospf
    - type
    - instance
    - p
    - ifindex
    - nexthop
    - tag
    - metric
    argTypes:
    - struct ospf*
    - uint8_t
    - unsigned short
    - struct prefix_ipv4
    - ifindex_t
    - struct in_addr
    - route_tag_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 149
    functionName: ospf_external_info_add
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 4
    functionsReached:
    - ifindex::ifindex
    - ospf_external_add
    - route_unlock_node
    - IS_DEBUG_OSPF
    - tag::tag
    - ospf_redist_string
    - ospf_external_info_new::ospf_external_info_new
    - nexthop::nexthop
    - ospf_external_lookup
    - zlog_debug
    - route_node_get
    - XFREE
    - EXTERNAL_INFO
    - rn::rn
    linkageType: ''
    returnType: struct external_info
    signature: "struct external_info *\nospf_external_info_add(struct ospf *ospf,
      uint8_t type, unsigned short instance,\n\t\t       struct prefix_ipv4 p, ifindex_t
      ifindex,\n\t\t       struct in_addr nexthop, route_tag_t tag, uint32_t metric)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:157,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:161,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_asbr.c:161,1
    - Dst: ospf_external_info_free
      Src: /src/frr/ospfd/ospf_asbr.c:163,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:165,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ospf
    - type
    - instance
    - p
    argTypes:
    - struct ospf*
    - uint8_t
    - unsigned short
    - struct prefix_ipv4
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 168
    functionName: ospf_external_info_delete
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 4
    functionsReached:
    - route_unlock_node
    - ospf_external_info_free
    - route_node_lookup
    - ospf_external_lookup
    - EXTERNAL_INFO
    linkageType: ''
    returnType: void
    signature: "void ospf_external_info_delete(struct ospf *ospf, uint8_t type,\n\t\t\t
      \      unsigned short instance, struct prefix_ipv4 p)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:177,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:181,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_asbr.c:181,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - ospf
    - type
    - instance
    - p
    argTypes:
    - struct ospf*
    - uint8_t
    - unsigned short
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 189
    functionName: ospf_external_info_lookup
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 5
    functionsReached:
    - route_unlock_node
    - ospf_external_lookup
    - route_node_lookup
    - EXTERNAL_INFO
    linkageType: ''
    returnType: struct external_info
    signature: "struct external_info *ospf_external_info_lookup(struct ospf *ospf,
      uint8_t type,\n\t\t\t\t\t\tunsigned short instance,\n\t\t\t\t\t\tstruct prefix_ipv4
      *p)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_asbr.c:210,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_asbr.c:212,1
    - Dst: ospf_lsdb_lookup_by_id
      Src: /src/frr/ospfd/ospf_asbr.c:224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ospf
    - p
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 234
    functionName: ospf_external_info_find_lsa
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 9
    functionsReached:
    - ospf_lsdb_lookup_by_id
    - masklen2ip
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_external_info_find_lsa(struct ospf *ospf,\n\t\t\t\t\t
      \    struct prefix_ipv4 *p)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_asbr.c:240,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_asbr.c:241,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_asbr.c:246,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_asbr.c:247,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_asbr.c:248,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:251,1
    - Dst: IS_OSPF_ASBR
      Src: /src/frr/ospfd/ospf_asbr.c:254,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_asbr.c:255,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_asbr.c:256,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:259,1
    - Dst: ospf_spf_calculate_schedule
      Src: /src/frr/ospfd/ospf_asbr.c:263,1
    - Dst: ospf_router_lsa_update
      Src: /src/frr/ospfd/ospf_asbr.c:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ospf
    - status
    argTypes:
    - struct ospf*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 265
    functionName: ospf_asbr_status_update
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 5
    functionsReached:
    - IS_OSPF_ASBR
    - zlog_info
    - ospf_spf_calculate_schedule
    - SET_FLAG
    - UNSET_FLAG
    - ospf_get_name
    - ospf_router_lsa_update
    linkageType: ''
    returnType: void
    signature: void ospf_asbr_status_update(struct ospf *ospf, uint8_t status)
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_asbr.c:272,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:278,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_asbr.c:289,1
    - Dst: ospf_external_lsa_refresh_type
      Src: /src/frr/ospfd/ospf_asbr.c:290,1
    - Dst: ospf_external_lsa_refresh_default
      Src: /src/frr/ospfd/ospf_asbr.c:295,1
    - Dst: ospf_schedule_asbr_nssa_redist_update
      Src: /src/frr/ospfd/ospf_asbr.c:298,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:301,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_asbr.c:303,1
    - Dst: ospf_redistribute_withdraw
      Src: /src/frr/ospfd/ospf_asbr.c:308,1
    - Dst: ospf_external_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:315,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_asbr.c:320,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:323,1
    - Dst: EXTERNAL_INFO
      Src: /src/frr/ospfd/ospf_asbr.c:323,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:323,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_asbr.c:331,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_asbr.c:338,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:339,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:340,1
    - Dst: ospf_external_info_free
      Src: /src/frr/ospfd/ospf_asbr.c:343,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:344,1
    - Dst: is_valid_summary_addr
      Src: /src/frr/ospfd/ospf_asbr.c:351,1
    - Dst: ospf_asbr_external_aggregator_init
      Src: /src/frr/ospfd/ospf_asbr.c:363,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_asbr.c:365,1
    - Dst: ospf_external_rt_hash_key
      Src: /src/frr/ospfd/ospf_asbr.c:374,1
    - Dst: prefix_hash_key
      Src: /src/frr/ospfd/ospf_asbr.c:379,1
    - Dst: ospf_external_rt_hash_cmp
      Src: /src/frr/ospfd/ospf_asbr.c:383,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_asbr.c:388,1
    - Dst: ospf_external_aggregator_new
      Src: /src/frr/ospfd/ospf_asbr.c:392,1
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_asbr.c:396,1
    - Dst: hash_create
      Src: /src/frr/ospfd/ospf_asbr.c:406,1
    - Dst: ospf_aggr_handle_external_info
      Src: /src/frr/ospfd/ospf_asbr.c:412,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:423,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:424,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_asbr.c:427,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_asbr.c:429,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_asbr.c:432,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:434,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:438,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:440,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_asbr.c:442,1
    - Dst: ospf_aggr_unlink_external_info
      Src: /src/frr/ospfd/ospf_asbr.c:445,1
    - Dst: ospf_external_aggregator_free
      Src: /src/frr/ospfd/ospf_asbr.c:454,1
    - Dst: hash_clean_and_free
      Src: /src/frr/ospfd/ospf_asbr.c:456,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:459,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:460,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_asbr.c:463,1
    - Dst: ospf_external_aggr_add
      Src: /src/frr/ospfd/ospf_asbr.c:466,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:471,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:472,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_asbr.c:474,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:476,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:485,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:490,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:491,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:492,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:495,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:499,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:508,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:511,1
    - Dst: route_node_match
      Src: /src/frr/ospfd/ospf_asbr.c:523,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:526,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:530,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:537,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:547,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:548,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_asbr.c:552,1
    - Dst: hash_release
      Src: /src/frr/ospfd/ospf_asbr.c:553,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_asbr.c:559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:560,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:562,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:563,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:568,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:571,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:578,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:579,1
    - Dst: hash_get
      Src: /src/frr/ospfd/ospf_asbr.c:583,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:597,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:598,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_asbr.c:608,1
    - Dst: ospf_link_ei_to_aggr
      Src: /src/frr/ospfd/ospf_asbr.c:613,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:619,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:625,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:626,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:628,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:629,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_asbr.c:636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:647,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_asbr.c:649,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_asbr.c:656,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:662,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:663,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:668,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_asbr.c:674,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:680,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:681,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:685,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:687,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_asbr.c:696,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:698,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:699,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:702,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:704,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:708,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:709,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_asbr.c:713,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:715,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:716,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:718,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:727,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:728,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:730,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:730,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:736,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:748,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:748,1
    - Dst: ospf_external_aggr_delete
      Src: /src/frr/ospfd/ospf_asbr.c:758,1
    - Dst: ospf_external_aggregator_free
      Src: /src/frr/ospfd/ospf_asbr.c:759,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_asbr.c:775,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:776,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:777,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:783,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_asbr.c:786,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:791,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:809,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:812,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:814,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:815,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_asbr.c:818,1
    - Dst: ospf_delete_all_marked_aggregators
      Src: /src/frr/ospfd/ospf_asbr.c:832,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_asbr.c:844,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_asbr.c:846,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:849,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:849,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_asbr.c:854,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_asbr.c:860,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_asbr.c:863,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:874,1
    - Dst: ospf_handle_aggregated_exnl_rt
      Src: /src/frr/ospfd/ospf_asbr.c:880,1
    - Dst: ospf_handle_exnl_rt_after_aggr_del
      Src: /src/frr/ospfd/ospf_asbr.c:888,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 199
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (ospf)
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/frr/ospfd/ospf_asbr.c
    constantsTouched: []
    func_position:
      end: 892
      start: 270
    functionDepth: 6
    functionLinenumber: 270
    functionLinenumberEnd: 892
    functionName: ospf_asbr_nssa_redist_update_timer
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    - ospf_external_lsa_refresh
    - ospf_external_lsa_refresh_default
    - hash_create
    - ospf_handle_aggregated_exnl_rt
    - route_top
    - ospf_external_aggregator_new
    - ospf_handle_exnl_rt_after_aggr_del
    - ospf_redistribute_withdraw
    - ospf_schedule_asbr_nssa_redist_update
    - ospf_external_rt_hash_key
    - ospf_external_lsa_originate
    - ospf_aggr_handle_external_info
    - ospf_external_info_find_lsa
    - IS_DEBUG_OSPF
    - route_node_lookup
    - flog_warn
    - memset
    - XCALLOC
    - masklen2ip
    - ALL_LIST_ELEMENTS_RO
    - ospf_external_lsa_refresh_type
    - zlog_debug
    - OSPF_EXTERNAL_RT_COUNT
    - ospf_redistribute_check
    - EVENT_ARG
    - ospf_originate_summary_lsa
    - ospf_external_aggr_add
    - route_node_match
    - hash_get
    - ntohl
    - ospf_link_ei_to_aggr
    - assert
    - ospf_external_aggr_delete
    - hash_clean_and_free
    - route_unlock_node
    - ospf_external_rt_hash_cmp
    - prefix_same
    - ospf_aggr_unlink_external_info
    - ospf_unlink_ei_from_aggr
    - route_next
    - ospf_asbr_external_aggregator_init
    - UNSET_FLAG
    - XFREE
    - event_add_timer
    - hash_release
    - is_default_prefix4
    - EXTERNAL_INFO
    - ospf_delete_all_marked_aggregators
    - ospf_external_info_free
    - ospf_external_aggregator_free
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - is_valid_summary_addr
    - ospf_external_lookup
    - route_table_init
    - route_node_get
    - SET_FLAG
    - ospf_external_aggr_match
    - if
    - ospf_external_lsa_flush
    linkageType: ''
    returnType: void
    signature: void ospf_asbr_nssa_redist_update_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:508,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ospf
    - p
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 515
    functionName: ospf_extrenal_aggregator_lookup
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    linkageType: ''
    returnType: struct ospf_external_aggr_rt
    signature: 'struct ospf_external_aggr_rt *

      ospf_extrenal_aggregator_lookup(struct ospf *ospf, struct prefix_ipv4 *p)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_match
      Src: /src/frr/ospfd/ospf_asbr.c:523,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:526,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:530,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ospf
    - p
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 541
    functionName: ospf_external_aggr_match
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 7
    functionsReached:
    - route_unlock_node
    - route_node_match
    - IS_DEBUG_OSPF
    - zlog_debug
    linkageType: ''
    returnType: struct ospf_external_aggr_rt
    signature: "struct ospf_external_aggr_rt *ospf_external_aggr_match(struct ospf
      *ospf,\n\t\t\t\t\t\t       struct prefix_ipv4 *p)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:547,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:548,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_asbr.c:552,1
    - Dst: hash_release
      Src: /src/frr/ospfd/ospf_asbr.c:553,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_asbr.c:559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:560,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:562,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:563,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:568,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:571,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ospf
    - aggr
    - ei
    argTypes:
    - struct ospf*
    - struct ospf_external_aggr_rt*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 573
    functionName: ospf_unlink_ei_from_aggr
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 5
    functionsReached:
    - IS_DEBUG_OSPF
    - CHECK_FLAG
    - OSPF_EXTERNAL_RT_COUNT
    - zlog_debug
    - UNSET_FLAG
    - hash_release
    - ospf_external_lsa_flush
    linkageType: ''
    returnType: void
    signature: "void ospf_unlink_ei_from_aggr(struct ospf *ospf,\n\t\t\t      struct
      ospf_external_aggr_rt *aggr,\n\t\t\t      struct external_info *ei)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:578,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:579,1
    - Dst: hash_get
      Src: /src/frr/ospfd/ospf_asbr.c:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - aggr
    - ei
    argTypes:
    - struct ospf_external_aggr_rt*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 585
    functionName: ospf_link_ei_to_aggr
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - hash_get
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void ospf_link_ei_to_aggr(struct ospf_external_aggr_rt *aggr,\n\t\t\t\t
      struct external_info *ei)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:597,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:598,1
    - Dst: ospf_unlink_ei_from_aggr
      Src: /src/frr/ospfd/ospf_asbr.c:608,1
    - Dst: ospf_link_ei_to_aggr
      Src: /src/frr/ospfd/ospf_asbr.c:613,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:619,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:625,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:626,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:628,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:629,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_asbr.c:636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:647,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_asbr.c:649,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_asbr.c:656,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:662,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:663,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:668,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_asbr.c:674,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:680,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:681,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:685,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:687,1
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_asbr.c:696,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:698,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:699,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:702,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:704,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:708,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:709,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_asbr.c:713,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:715,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:716,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:718,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 3
    argNames:
    - ospf
    - aggr
    - ei
    argTypes:
    - struct ospf*
    - struct ospf_external_aggr_rt*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 587
    functionDepth: 3
    functionLinenumber: 587
    functionLinenumberEnd: 722
    functionName: ospf_originate_summary_lsa
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 6
    functionsReached:
    - ospf_external_info_find_lsa
    - IS_DEBUG_OSPF
    - prefix_same
    - flog_warn
    - memset
    - ospf_external_lsa_refresh
    - CHECK_FLAG
    - ntohl
    - ospf_unlink_ei_from_aggr
    - IS_LSA_MAXAGE
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - ospf_external_lsa_originate
    - ospf_external_lsa_flush
    - ospf_link_ei_to_aggr
    linkageType: ''
    returnType: struct ospf_lsa
    signature: "struct ospf_lsa *ospf_originate_summary_lsa(struct ospf *ospf,\n\t\t\t\t\t
      \   struct ospf_external_aggr_rt *aggr,\n\t\t\t\t\t    struct external_info
      *ei)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:727,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:728,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:730,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:730,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:736,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 723
    functionDepth: 1
    functionLinenumber: 723
    functionLinenumberEnd: 738
    functionName: ospf_unset_all_aggr_flag
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - route_top
    - route_next
    - zlog_debug
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void ospf_unset_all_aggr_flag(struct ospf *ospf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:748,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:748,1
    - Dst: ospf_external_aggr_delete
      Src: /src/frr/ospfd/ospf_asbr.c:758,1
    - Dst: ospf_external_aggregator_free
      Src: /src/frr/ospfd/ospf_asbr.c:759,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 761
    functionName: ospf_delete_all_marked_aggregators
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 1
    functionsReached:
    - ospf_external_aggregator_free
    - route_top
    - ospf_external_aggr_delete
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_delete_all_marked_aggregators(struct ospf *ospf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/ospfd/ospf_asbr.c:775,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:776,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:777,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:783,1
    - Dst: masklen2ip
      Src: /src/frr/ospfd/ospf_asbr.c:786,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:791,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ospf
    - aggr
    - ei
    argTypes:
    - struct ospf*
    - struct ospf_external_aggr_rt*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 763
    functionDepth: 3
    functionLinenumber: 763
    functionLinenumberEnd: 793
    functionName: ospf_handle_aggregated_exnl_rt
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 1
    functionsReached:
    - ospf_external_info_find_lsa
    - IS_DEBUG_OSPF
    - prefix_same
    - masklen2ip
    - zlog_debug
    - ospf_external_lsa_flush
    linkageType: ''
    returnType: void
    signature: "void ospf_handle_aggregated_exnl_rt(struct ospf *ospf,\n\t\t\t\t\t
      \  struct ospf_external_aggr_rt *aggr,\n\t\t\t\t\t   struct external_info *ei)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:809,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:812,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:814,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:815,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_asbr.c:818,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ospf
    - ei
    argTypes:
    - struct ospf*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 795
    functionDepth: 3
    functionLinenumber: 795
    functionLinenumberEnd: 820
    functionName: ospf_handle_exnl_rt_after_aggr_del
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 1
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_external_info_find_lsa
    - ospf_external_lsa_refresh
    - zlog_debug
    - ospf_external_lsa_originate
    linkageType: ''
    returnType: void
    signature: "void ospf_handle_exnl_rt_after_aggr_del(struct ospf *ospf,\n\t\t\t\t\t
      \      struct external_info *ei)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf_delete_all_marked_aggregators
      Src: /src/frr/ospfd/ospf_asbr.c:832,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_asbr.c:844,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_asbr.c:846,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:849,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:849,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_asbr.c:854,1
    - Dst: ospf_redistribute_check
      Src: /src/frr/ospfd/ospf_asbr.c:860,1
    - Dst: ospf_external_aggr_match
      Src: /src/frr/ospfd/ospf_asbr.c:863,1
    - Dst: ospf_originate_summary_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:874,1
    - Dst: ospf_handle_aggregated_exnl_rt
      Src: /src/frr/ospfd/ospf_asbr.c:880,1
    - Dst: ospf_handle_exnl_rt_after_aggr_del
      Src: /src/frr/ospfd/ospf_asbr.c:888,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 822
    functionDepth: 6
    functionLinenumber: 822
    functionLinenumberEnd: 891
    functionName: ospf_handle_external_aggr_add
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - ospf_handle_aggregated_exnl_rt
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - ospf_handle_exnl_rt_after_aggr_del
    - route_next
    - ospf_redistribute_check
    - ospf_originate_summary_lsa
    - if
    - ospf_external_aggr_match
    - is_default_prefix4
    - ospf_delete_all_marked_aggregators
    linkageType: ''
    returnType: void
    signature: void ospf_handle_external_aggr_add(struct ospf *ospf)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:902,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:904,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:905,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:909,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:911,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:912,1
    - Dst: ospf_external_lsa_flush
      Src: /src/frr/ospfd/ospf_asbr.c:917,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:919,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:924,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:925,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:926,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:928,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_asbr.c:929,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:935,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:936,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:941,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:944,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:948,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:949,1
    - Dst: ospf_external_lsa_originate
      Src: /src/frr/ospfd/ospf_asbr.c:955,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:957,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 3
    argNames:
    - ospf
    - aggr
    - ei_aggr
    argTypes:
    - struct ospf*
    - struct ospf_external_aggr_rt*
    - struct external_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 894
    functionDepth: 3
    functionLinenumber: 894
    functionLinenumberEnd: 961
    functionName: ospf_aggr_handle_advertise_change
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - IS_DEBUG_OSPF
    - ospf_external_info_find_lsa
    - ospf_external_lsa_refresh
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - ospf_external_lsa_originate
    - ospf_external_lsa_flush
    linkageType: ''
    returnType: void
    signature: "void ospf_aggr_handle_advertise_change(struct ospf *ospf,\n\t\t\t\t
      \ struct ospf_external_aggr_rt *aggr,\n\t\t\t\t  struct external_info *ei_aggr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:967,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:968,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_asbr.c:970,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_asbr.c:970,1
    - Dst: ospf_external_aggr_delete
      Src: /src/frr/ospfd/ospf_asbr.c:984,1
    - Dst: hash_clean_and_free
      Src: /src/frr/ospfd/ospf_asbr.c:986,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_asbr.c:995,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1004,1
    - Dst: ospf_external_info_find_lsa
      Src: /src/frr/ospfd/ospf_asbr.c:1006,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_asbr.c:1009,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_asbr.c:1017,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:1024,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:1025,1
    - Dst: ospf_external_lsa_refresh
      Src: /src/frr/ospfd/ospf_asbr.c:1032,1
    - Dst: ospf_aggr_handle_advertise_change
      Src: /src/frr/ospfd/ospf_asbr.c:1041,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 963
    functionDepth: 4
    functionLinenumber: 963
    functionLinenumberEnd: 1044
    functionName: ospf_handle_external_aggr_update
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - IS_DEBUG_OSPF
    - ospf_external_info_find_lsa
    - flog_warn
    - memset
    - ospf_external_lsa_refresh
    - CHECK_FLAG
    - route_top
    - ntohl
    - route_next
    - zlog_debug
    - ospf_aggr_handle_advertise_change
    - ospf_external_aggr_delete
    linkageType: ''
    returnType: void
    signature: void ospf_handle_external_aggr_update(struct ospf *ospf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_asbr.c:1048,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:1054,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:1055,1
    - Dst: ospf_handle_external_aggr_add
      Src: /src/frr/ospfd/ospf_asbr.c:1059,1
    - Dst: ospf_handle_external_aggr_update
      Src: /src/frr/ospfd/ospf_asbr.c:1063,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1046
    functionDepth: 7
    functionLinenumber: 1046
    functionLinenumberEnd: 1068
    functionName: ospf_asbr_external_aggr_process
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - EVENT_ARG
    - IS_DEBUG_OSPF
    - ospf_handle_external_aggr_update
    - zlog_debug
    - ospf_handle_external_aggr_add
    linkageType: ''
    returnType: void
    signature: void ospf_asbr_external_aggr_process(struct event *thread)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:1078,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:1079,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:1086,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:1087,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospfd/ospf_asbr.c:1090,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_asbr.c:1094,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_asbr.c:1095,1
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_asbr.c:1099,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - ospf
    - aggr
    - operation
    argTypes:
    - struct ospf*
    - struct ospf_external_aggr_rt*
    - enum ospf_aggr_action_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1101
    functionName: ospf_external_aggr_timer
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - IS_DEBUG_OSPF
    - EVENT_OFF
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void ospf_external_aggr_timer(struct ospf *ospf,\n\t\t\t\t     struct
      ospf_external_aggr_rt *aggr,\n\t\t\t\t     enum ospf_aggr_action_t operation)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_extrenal_aggregator_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:1108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1111,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1113,1
    - Dst: ospf_external_aggr_timer
      Src: /src/frr/ospfd/ospf_asbr.c:1120,1
    - Dst: ospf_external_aggregator_new
      Src: /src/frr/ospfd/ospf_asbr.c:1123,1
    - Dst: ospf_external_aggr_add
      Src: /src/frr/ospfd/ospf_asbr.c:1129,1
    - Dst: ospf_external_aggr_timer
      Src: /src/frr/ospfd/ospf_asbr.c:1130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ospf
    - p
    - tag
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1103
    functionDepth: 2
    functionLinenumber: 1103
    functionLinenumberEnd: 1134
    functionName: ospf_asbr_external_aggregator_set
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - ospf_external_aggr_timer
    - ospf_extrenal_aggregator_lookup
    - CHECK_FLAG
    - ospf_external_aggregator_new
    - UNSET_FLAG
    - ospf_external_aggr_add
    linkageType: ''
    returnType: int
    signature: "int ospf_asbr_external_aggregator_set(struct ospf *ospf, struct prefix_ipv4
      *p,\n\t\t\t\t      route_tag_t tag)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:1142,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:1145,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_asbr.c:1152,1
    - Dst: ospf_external_aggr_delete
      Src: /src/frr/ospfd/ospf_asbr.c:1153,1
    - Dst: ospf_external_aggregator_free
      Src: /src/frr/ospfd/ospf_asbr.c:1154,1
    - Dst: ospf_external_aggr_timer
      Src: /src/frr/ospfd/ospf_asbr.c:1158,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ospf
    - p
    - tag
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1136
    functionDepth: 2
    functionLinenumber: 1136
    functionLinenumberEnd: 1161
    functionName: ospf_asbr_external_aggregator_unset
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - ospf_external_aggr_timer
    - ospf_external_aggregator_free
    - OSPF_EXTERNAL_RT_COUNT
    - ospf_external_aggr_delete
    linkageType: ''
    returnType: int
    signature: "int ospf_asbr_external_aggregator_unset(struct ospf *ospf,\n\t\t\t\t\tstruct
      prefix_ipv4 *p, route_tag_t tag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_extrenal_aggregator_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:1168,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1170,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1173,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_asbr.c:1177,1
    - Dst: ospf_external_aggr_timer
      Src: /src/frr/ospfd/ospf_asbr.c:1180,1
    - Dst: ospf_external_aggregator_new
      Src: /src/frr/ospfd/ospf_asbr.c:1182,1
    - Dst: SET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1187,1
    - Dst: ospf_external_aggr_add
      Src: /src/frr/ospfd/ospf_asbr.c:1188,1
    - Dst: ospf_external_aggr_timer
      Src: /src/frr/ospfd/ospf_asbr.c:1189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ospf
    - p
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1163
    functionDepth: 2
    functionLinenumber: 1163
    functionLinenumberEnd: 1193
    functionName: ospf_asbr_external_rt_no_advertise
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - ospf_external_aggr_timer
    - ospf_extrenal_aggregator_lookup
    - CHECK_FLAG
    - ospf_external_aggregator_new
    - OSPF_EXTERNAL_RT_COUNT
    - SET_FLAG
    - ospf_external_aggr_add
    linkageType: ''
    returnType: int
    signature: int ospf_asbr_external_rt_no_advertise(struct ospf *ospf, struct prefix_ipv4
      *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_asbr.c:1200,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_asbr.c:1203,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1207,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospfd/ospf_asbr.c:1210,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_asbr.c:1212,1
    - Dst: ospf_external_aggr_timer
      Src: /src/frr/ospfd/ospf_asbr.c:1215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ospf
    - p
    argTypes:
    - struct ospf*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1195
    functionDepth: 2
    functionLinenumber: 1195
    functionLinenumberEnd: 1217
    functionName: ospf_asbr_external_rt_advertise
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - ospf_external_aggr_timer
    - CHECK_FLAG
    - OSPF_EXTERNAL_RT_COUNT
    - UNSET_FLAG
    linkageType: ''
    returnType: int
    signature: int ospf_asbr_external_rt_advertise(struct ospf *ospf, struct prefix_ipv4
      *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ospf
    - interval
    argTypes:
    - struct ospf*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1219
    functionDepth: 0
    functionLinenumber: 1219
    functionLinenumberEnd: 1223
    functionName: ospf_external_aggregator_timer_set
    functionSourceFile: /src/frr/ospfd/ospf_asbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ospf_external_aggregator_timer_set(struct ospf *ospf, uint16_t
      interval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:46,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:50,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ase.c:52,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ase.c:55,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ase.c:56,1
    - Dst: OSPF_IS_AREA_ID_BACKBONE
      Src: /src/frr/ospfd/ospf_ase.c:58,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ase.c:61,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:64,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_ase.c:64,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ase.c:65,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ase.c:70,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:71,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospfd/ospf_ase.c:78,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ase.c:86,1
    - Dst: ospf_find_asbr_route_through_area
      Src: /src/frr/ospfd/ospf_ase.c:91,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:101,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:107,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ase.c:109,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:110,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ase.c:110,1
    - Dst: ospf_ase_complete_direct_routes
      Src: /src/frr/ospfd/ospf_ase.c:117,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ase.c:123,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:124,1
    - Dst: ospf_ase_forward_address_check
      Src: /src/frr/ospfd/ospf_ase.c:128,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ase.c:134,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:135,1
    - Dst: if_is_operative
      Src: /src/frr/ospfd/ospf_ase.c:135,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:136,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:137,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ase.c:137,1
    - Dst: ospf_ase_calculate_new_route
      Src: /src/frr/ospfd/ospf_ase.c:145,1
    - Dst: al::al
      Src: /src/frr/ospfd/ospf_ase.c:149,1
    - Dst: ospf_route_new::ospf_route_new
      Src: /src/frr/ospfd/ospf_ase.c:153,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_ase.c:160,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:161,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:162,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:168,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:169,1
    - Dst: u::u
      Src: /src/frr/ospfd/ospf_ase.c:172,1
    - Dst: u::u
      Src: /src/frr/ospfd/ospf_ase.c:176,1
    - Dst: u::u
      Src: /src/frr/ospfd/ospf_ase.c:177,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_ase.c:177,1
    - Dst: u::u
      Src: /src/frr/ospfd/ospf_ase.c:178,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ospf
    - rtrs
    - asbr
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 183
    functionName: ospf_find_asbr_route
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 1
    functionsReached:
    - list_delete
    - listnode_add
    - ospf_ase_complete_direct_routes
    - IPV4_ADDR_SAME
    - IS_DEBUG_OSPF
    - route_node_lookup
    - ospf_ase_calculate_new_route
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - if
    - ntohl
    - IS_EXTERNAL_METRIC
    - route_unlock_node
    - OSPF_IS_AREA_ID_BACKBONE
    - u::u
    - listcount
    - al::al
    - IPV4_ADDR_CMP
    - ospf_ase_forward_address_check
    - CHECK_FLAG
    - list_new
    - ospf_route_new::ospf_route_new
    - ospf_find_asbr_route_through_area
    - if_is_operative
    linkageType: ''
    returnType: struct ospf_route
    signature: "struct ospf_route *ospf_find_asbr_route(struct ospf *ospf,\n\t\t\t\t\tstruct
      route_table *rtrs,\n\t\t\t\t\tstruct prefix_ipv4 *asbr)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ase.c:197,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_ase.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:207,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:211,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:212,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ase.c:214,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_ase.c:220,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:221,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:222,1
    - Dst: IS_LSA_MAXAGE
      Src: /src/frr/ospfd/ospf_ase.c:226,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:227,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:228,1
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_ase.c:235,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:236,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:237,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ase.c:254,1
    - Dst: ospf_find_asbr_route
      Src: /src/frr/ospfd/ospf_ase.c:256,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:258,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:259,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:264,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:265,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:277,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:278,1
    - Dst: ospf_ase_forward_address_check
      Src: /src/frr/ospfd/ospf_ase.c:308,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:309,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:310,1
    - Dst: route_node_match
      Src: /src/frr/ospfd/ospf_ase.c:319,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:322,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:323,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:326,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:330,1
    - Dst: ospf_ase_calculate_new_route::ospf_ase_calculate_new_route
      Src: /src/frr/ospfd/ospf_ase.c:348,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ase.c:360,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:364,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:365,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ase.c:367,1
    - Dst: ospf_route_free::ospf_route_free
      Src: /src/frr/ospfd/ospf_ase.c:368,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:374,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:376,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:379,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:380,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_ase.c:381,1
    - Dst: ospf_route_add
      Src: /src/frr/ospfd/ospf_ase.c:383,1
    - Dst: asbr_route::asbr_route
      Src: /src/frr/ospfd/ospf_ase.c:383,1
    - Dst: ospf_ase_complete_direct_routes
      Src: /src/frr/ospfd/ospf_ase.c:386,1
    - Dst: al::al
      Src: /src/frr/ospfd/ospf_ase.c:386,1
    - Dst: ospf_route_cmp
      Src: /src/frr/ospfd/ospf_ase.c:396,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:423,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:424,1
    - Dst: ospf_ase_complete_direct_routes
      Src: /src/frr/ospfd/ospf_ase.c:428,1
    - Dst: al::al
      Src: /src/frr/ospfd/ospf_ase.c:429,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:435,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:436,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_ase.c:442,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:443,1
    - Dst: ospf_route_copy_nexthops
      Src: /src/frr/ospfd/ospf_ase.c:444,1
    - Dst: ospf_ase_complete_direct_routes
      Src: /src/frr/ospfd/ospf_ase.c:446,1
    - Dst: ospf_route_free::ospf_route_free
      Src: /src/frr/ospfd/ospf_ase.c:452,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 119
    argCount: 2
    argNames:
    - ospf
    - lsa
    argTypes:
    - struct ospf*
    - struct ospf_lsa*
    assertStmts:
    - condition: (lsa)
      pos:
        line_end: 196
        line_start: 196
        source_file: /src/frr/ospfd/ospf_ase.c
    constantsTouched: []
    func_position:
      end: 457
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 457
    functionName: ospf_ase_calculate_route
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - ospf_route_add
    - ospf_ase_calculate_new_route::ospf_ase_calculate_new_route
    - ospf_ase_complete_direct_routes
    - ospf_find_asbr_route
    - IS_LSA_SELF
    - IS_DEBUG_OSPF
    - route_node_lookup
    - GET_METRIC
    - ospf_route_cmp
    - ospf_route_copy_nexthops
    - ospf_route_free::ospf_route_free
    - zlog_debug
    - route_node_match
    - assert
    - route_unlock_node
    - zlog_info
    - listcount
    - ip_masklen
    - al::al
    - CHECK_FLAG
    - IS_LSA_MAXAGE
    - asbr_route::asbr_route
    - ospf_ase_forward_address_check
    linkageType: ''
    returnType: int
    signature: int ospf_ase_calculate_route(struct ospf *ospf, struct ospf_lsa *lsa)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:473,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:477,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ase.c:481,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ase.c:497,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ase.c:501,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_ase.c:507,1
    - Dst: listhead
      Src: /src/frr/ospfd/ospf_ase.c:507,1
    - Dst: listnextnode_unchecked
      Src: /src/frr/ospfd/ospf_ase.c:508,1
    - Dst: listnextnode_unchecked
      Src: /src/frr/ospfd/ospf_ase.c:508,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_ase.c:509,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_ase.c:510,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_ase.c:512,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 3
    argNames:
    - rt
    - prefix
    - newor
    argTypes:
    - struct route_table*
    - struct prefix*
    - struct ospf_route*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 496
        line_start: 496
        source_file: /src/frr/ospfd/ospf_ase.c
    - condition: (or->paths)
      pos:
        line_end: 500
        line_start: 500
        source_file: /src/frr/ospfd/ospf_ase.c
    - condition: (or)
      pos:
        line_end: 480
        line_start: 480
        source_file: /src/frr/ospfd/ospf_ase.c
    constantsTouched: []
    func_position:
      end: 522
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 522
    functionName: ospf_ase_route_match_same
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - listhead
    - listnextnode_unchecked
    - IPV4_ADDR_SAME
    - listgetdata
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_ase_route_match_same(struct route_table *rt,\n\t\t\t\t     struct
      prefix *prefix,\n\t\t\t\t     struct ospf_route *newor)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ase.c:532,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ase.c:532,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:534,1
    - Dst: ospf_zebra_delete
      Src: /src/frr/ospfd/ospf_ase.c:536,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:539,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ase.c:544,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ase.c:544,1
    - Dst: ospf_ase_route_match_same
      Src: /src/frr/ospfd/ospf_ase.c:546,1
    - Dst: ospf_zebra_add
      Src: /src/frr/ospfd/ospf_ase.c:548,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ospf
    - new_external_route
    - old_external_route
    argTypes:
    - struct ospf*
    - struct route_table*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 552
    functionName: ospf_ase_compare_tables
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - route_top
    - ospf_zebra_add
    - route_next
    - ospf_zebra_delete
    - ospf_ase_route_match_same
    linkageType: ''
    returnType: int
    signature: "int ospf_ase_compare_tables(struct ospf *ospf,\n\t\t\t\t   struct
      route_table *new_external_route,\n\t\t\t\t   struct route_table *old_external_route)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfd/ospf_ase.c:563,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_ase.c:569,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_ase.c:572,1
    - Dst: EXTERNAL_LSDB
      Src: /src/frr/ospfd/ospf_ase.c:572,1
    - Dst: ospf_ase_calculate_route
      Src: /src/frr/ospfd/ospf_ase.c:573,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ase.c:577,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_ase.c:579,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_ase.c:583,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospf_ase.c:583,1
    - Dst: ospf_ase_calculate_route
      Src: /src/frr/ospfd/ospf_ase.c:584,1
    - Dst: LSDB_LOOP
      Src: /src/frr/ospfd/ospf_ase.c:588,1
    - Dst: NSSA_LSDB
      Src: /src/frr/ospfd/ospf_ase.c:588,1
    - Dst: ospf_ase_calculate_route
      Src: /src/frr/ospfd/ospf_ase.c:589,1
    - Dst: ospf_ase_compare_tables
      Src: /src/frr/ospfd/ospf_ase.c:593,1
    - Dst: ospf_route_table_free
      Src: /src/frr/ospfd/ospf_ase.c:597,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_ase.c:599,1
    - Dst: monotime
      Src: /src/frr/ospfd/ospf_ase.c:601,1
    - Dst: zlog_info
      Src: /src/frr/ospfd/ospf_ase.c:604,1
    - Dst: ospf_zebra_gr_disable
      Src: /src/frr/ospfd/ospf_ase.c:617,1
    - Dst: ospf_zebra_gr_enable
      Src: /src/frr/ospfd/ospf_ase.c:618,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 554
    functionDepth: 4
    functionLinenumber: 554
    functionLinenumberEnd: 621
    functionName: ospf_ase_calculate_timer
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 0
    functionsReached:
    - ospf_zebra_gr_enable
    - EVENT_ARG
    - zlog_info
    - ospf_route_table_free
    - ALL_LIST_ELEMENTS_RO
    - monotime
    - ospf_ase_calculate_route
    - NSSA_LSDB
    - ospf_ase_compare_tables
    - zlog_debug
    - route_table_init
    - EXTERNAL_LSDB
    - ospf_zebra_gr_disable
    - LSDB_LOOP
    linkageType: ''
    returnType: void
    signature: void ospf_ase_calculate_timer(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 629
    functionName: ospf_ase_calculate_schedule
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf_ase_calculate_schedule(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer
      Src: /src/frr/ospfd/ospf_ase.c:636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 638
    functionName: ospf_ase_calculate_timer_add
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void ospf_ase_calculate_timer_add(struct ospf *ospf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ase.c:650,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ase.c:651,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_ase.c:653,1
    - Dst: list_new
      Src: /src/frr/ospfd/ospf_ase.c:655,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:657,1
    - Dst: listnode_add
      Src: /src/frr/ospfd/ospf_ase.c:661,1
    - Dst: ospf_lsa_lock
      Src: /src/frr/ospfd/ospf_ase.c:661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - lsa
    - top
    argTypes:
    - struct ospf_lsa*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 662
    functionName: ospf_ase_register_external_lsa
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - apply_mask_ipv4
    - ospf_lsa_lock
    - ip_masklen
    - listnode_add
    - route_node_get
    - list_new
    linkageType: ''
    returnType: void
    signature: void ospf_ase_register_external_lsa(struct ospf_lsa *lsa, struct ospf
      *top)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ase.c:674,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ase.c:675,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:677,1
    - Dst: listnode_lookup
      Src: /src/frr/ospfd/ospf_ase.c:681,1
    - Dst: listnode_delete
      Src: /src/frr/ospfd/ospf_ase.c:684,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_ase.c:685,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:688,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - lsa
    - top
    argTypes:
    - struct ospf_lsa*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 664
    functionDepth: 3
    functionLinenumber: 664
    functionLinenumberEnd: 690
    functionName: ospf_ase_unregister_external_lsa
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - route_unlock_node
    - route_node_lookup
    - listnode_lookup
    - ip_masklen
    - ospf_lsa_unlock
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: void ospf_ase_unregister_external_lsa(struct ospf_lsa *lsa, struct
      ospf *top)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_ase.c:699,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_ase.c:699,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_ase.c:701,1
    - Dst: ospf_lsa_unlock
      Src: /src/frr/ospfd/ospf_ase.c:702,1
    - Dst: list_delete
      Src: /src/frr/ospfd/ospf_ase.c:703,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_ase.c:706,1
    - Dst: ospf_ase_incremental_update
      Src: /src/frr/ospfd/ospf_ase.c:709,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_ase.c:721,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_ase.c:722,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_ase.c:726,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:733,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:735,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:740,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ase.c:741,1
    - Dst: assert
      Src: /src/frr/ospfd/ospf_ase.c:742,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:744,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_ase.c:746,1
    - Dst: ospf_ase_calculate_route
      Src: /src/frr/ospfd/ospf_ase.c:747,1
    - Dst: route_table_init
      Src: /src/frr/ospfd/ospf_ase.c:750,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:751,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_ase.c:753,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:755,1
    - Dst: ospf_ase_compare_tables
      Src: /src/frr/ospfd/ospf_ase.c:759,1
    - Dst: ospf_route_free
      Src: /src/frr/ospfd/ospf_ase.c:763,1
    - Dst: route_node_lookup
      Src: /src/frr/ospfd/ospf_ase.c:765,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_ase.c:769,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:776,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:784,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_ase.c:785,1
    - Dst: route_table_finish
      Src: /src/frr/ospfd/ospf_ase.c:788,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct route_table*
    assertStmts:
    - condition: (rn->info)
      pos:
        line_end: 741
        line_start: 741
        source_file: /src/frr/ospfd/ospf_ase.c
    - condition: (rn)
      pos:
        line_end: 740
        line_start: 740
        source_file: /src/frr/ospfd/ospf_ase.c
    constantsTouched: []
    func_position:
      end: 789
      start: 692
    functionDepth: 4
    functionLinenumber: 692
    functionLinenumberEnd: 789
    functionName: ospf_ase_external_lsas_finish
    functionSourceFile: /src/frr/ospfd/ospf_ase.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv4
    - list_delete
    - route_top
    - route_node_lookup
    - ALL_LIST_ELEMENTS_RO
    - ospf_ase_calculate_route
    - if
    - ospf_route_free
    - assert
    - route_unlock_node
    - route_table_finish
    - ip_masklen
    - route_next
    - ospf_ase_incremental_update
    - ospf_lsa_unlock
    - route_table_init
    - ospf_ase_compare_tables
    - route_node_get
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ospf_ase_external_lsas_finish(struct route_table *rt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: OSPF_PACKET_MAX
    functionSourceFile: /src/frr/ospfd/ospf_packet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_PACKET_MAX(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: OSPF_OUTPUT_PNT
    functionSourceFile: /src/frr/ospfd/ospf_packet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_OUTPUT_PNT(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: OSPF_OUTPUT_LENGTH
    functionSourceFile: /src/frr/ospfd/ospf_packet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_OUTPUT_LENGTH(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: IS_SET_DD_MS
    functionSourceFile: /src/frr/ospfd/ospf_packet.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_DD_MS(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: IS_SET_DD_M
    functionSourceFile: /src/frr/ospfd/ospf_packet.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_DD_M(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: IS_SET_DD_I
    functionSourceFile: /src/frr/ospfd/ospf_packet.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_DD_I(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: IS_SET_DD_ALL
    functionSourceFile: /src/frr/ospfd/ospf_packet.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_DD_ALL(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: LEGAL_TE_INSTANCE_RANGE
    functionSourceFile: /src/frr/ospfd/ospf_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEGAL_TE_INSTANCE_RANGE(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: IS_STD_TE
    functionSourceFile: /src/frr/ospfd/ospf_te.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STD_TE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: IS_PSEUDO_TE
    functionSourceFile: /src/frr/ospfd/ospf_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PSEUDO_TE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: IS_INTER_AS
    functionSourceFile: /src/frr/ospfd/ospf_te.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_INTER_AS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: IS_EMULATED
    functionSourceFile: /src/frr/ospfd/ospf_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EMULATED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: IS_FLOOD_AS
    functionSourceFile: /src/frr/ospfd/ospf_te.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_FLOOD_AS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: ote_debug
    functionSourceFile: /src/frr/ospfd/ospf_te.h
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ote_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: route_match_ip_nexthop_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_nexthop_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/ospfd/ospf_routemap.c:169,1
    - Dst: unlikely
      Src: /src/frr/ospfd/ospf_routemap.c:171,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_routemap.c:171,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_routemap.c:172,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospfd/ospf_routemap.c:178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 180
    functionName: route_match_ip_next_hop_prefix_list
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t    void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ospfd/ospf_routemap.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: route_match_ip_next_hop_prefix_list_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: route_match_ip_next_hop_prefix_list_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_prefix_list_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 217
    functionName: route_match_ip_next_hop_type
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_type(void *rule,
      const struct prefix *prefix,\n\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ospfd/ospf_routemap.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: route_match_ip_next_hop_type_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: route_match_ip_next_hop_type_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_type_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/ospfd/ospf_routemap.c:246,1
    - Dst: unlikely
      Src: /src/frr/ospfd/ospf_routemap.c:248,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_routemap.c:248,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_routemap.c:249,1
    - Dst: access_list_apply
      Src: /src/frr/ospfd/ospf_routemap.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: route_match_ip_address
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ospfd/ospf_routemap.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: route_match_ip_address_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: route_match_ip_address_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/ospfd/ospf_routemap.c:287,1
    - Dst: unlikely
      Src: /src/frr/ospfd/ospf_routemap.c:289,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_routemap.c:289,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_routemap.c:290,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospfd/ospf_routemap.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 299
    functionName: route_match_ip_address_prefix_list
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ospfd/ospf_routemap.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: route_match_ip_address_prefix_list_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: route_match_ip_address_prefix_list_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_prefix_list_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_routemap.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 335
    functionName: route_match_interface
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_interface(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ospfd/ospf_routemap.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 342
    functionName: route_match_interface_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_interface_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: route_match_interface_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_interface_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 369
    functionName: route_match_tag
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_tag(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:401,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:404,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:406,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:408,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:410,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:411,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:412,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:413,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 416
    functionName: route_set_metric
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - ROUTEMAP_METRIC
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_routemap.c:423,1
    - Dst: all_digit
      Src: /src/frr/ospfd/ospf_routemap.c:426,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_routemap.c:429,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_routemap.c:429,1
    - Dst: flog_warn
      Src: /src/frr/ospfd/ospf_routemap.c:430,1
    - Dst: all_digit
      Src: /src/frr/ospfd/ospf_routemap.c:435,1
    - Dst: all_digit
      Src: /src/frr/ospfd/ospf_routemap.c:440,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_routemap.c:445,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 451
    functionName: route_set_metric_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - strmatch
    - strtoul
    - flog_warn
    - XCALLOC
    - all_digit
    linkageType: ''
    returnType: void
    signature: void *route_set_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 457
    functionName: route_set_metric_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_metric_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:484,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 488
    functionName: route_set_min_metric
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - ROUTEMAP_METRIC
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_min_metric(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_routemap.c:496,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_routemap.c:498,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 505
    functionName: route_set_min_metric_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_min_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 511
    functionName: route_set_min_metric_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_min_metric_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:539,1
    - Dst: ROUTEMAP_METRIC
      Src: /src/frr/ospfd/ospf_routemap.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 543
    functionName: route_set_max_metric
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - ROUTEMAP_METRIC
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_max_metric(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_routemap.c:551,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_routemap.c:553,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 560
    functionName: route_set_max_metric_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_max_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 566
    functionName: route_set_max_metric_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_max_metric_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROUTEMAP_METRIC_TYPE
      Src: /src/frr/ospfd/ospf_routemap.c:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 592
    functionName: route_set_metric_type
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - ROUTEMAP_METRIC_TYPE
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_metric_type(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospfd/ospf_routemap.c:599,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_routemap.c:600,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_routemap.c:602,1
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:609,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 611
    functionName: route_set_metric_type_compile
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_metric_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospfd/ospf_routemap.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 617
    functionName: route_set_metric_type_free
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_metric_type_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 640
    functionName: route_set_tag
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_tag(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/ospfd/ospf_routemap.c:690,1
    - Dst: route_map_add_hook
      Src: /src/frr/ospfd/ospf_routemap.c:692,1
    - Dst: route_map_delete_hook
      Src: /src/frr/ospfd/ospf_routemap.c:693,1
    - Dst: route_map_event_hook
      Src: /src/frr/ospfd/ospf_routemap.c:694,1
    - Dst: route_map_match_ip_next_hop_hook
      Src: /src/frr/ospfd/ospf_routemap.c:696,1
    - Dst: route_map_no_match_ip_next_hop_hook
      Src: /src/frr/ospfd/ospf_routemap.c:697,1
    - Dst: route_map_match_interface_hook
      Src: /src/frr/ospfd/ospf_routemap.c:699,1
    - Dst: route_map_no_match_interface_hook
      Src: /src/frr/ospfd/ospf_routemap.c:700,1
    - Dst: route_map_match_ip_address_hook
      Src: /src/frr/ospfd/ospf_routemap.c:702,1
    - Dst: route_map_no_match_ip_address_hook
      Src: /src/frr/ospfd/ospf_routemap.c:703,1
    - Dst: route_map_match_ip_address_prefix_list_hook
      Src: /src/frr/ospfd/ospf_routemap.c:705,1
    - Dst: route_map_no_match_ip_address_prefix_list_hook
      Src: /src/frr/ospfd/ospf_routemap.c:706,1
    - Dst: route_map_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/ospfd/ospf_routemap.c:708,1
    - Dst: route_map_no_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/ospfd/ospf_routemap.c:709,1
    - Dst: route_map_match_ip_next_hop_type_hook
      Src: /src/frr/ospfd/ospf_routemap.c:711,1
    - Dst: route_map_no_match_ip_next_hop_type_hook
      Src: /src/frr/ospfd/ospf_routemap.c:712,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/ospfd/ospf_routemap.c:714,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/ospfd/ospf_routemap.c:715,1
    - Dst: route_map_set_metric_hook
      Src: /src/frr/ospfd/ospf_routemap.c:717,1
    - Dst: route_map_no_set_metric_hook
      Src: /src/frr/ospfd/ospf_routemap.c:718,1
    - Dst: route_map_set_min_metric_hook
      Src: /src/frr/ospfd/ospf_routemap.c:720,1
    - Dst: route_map_no_set_min_metric_hook
      Src: /src/frr/ospfd/ospf_routemap.c:721,1
    - Dst: route_map_set_max_metric_hook
      Src: /src/frr/ospfd/ospf_routemap.c:723,1
    - Dst: route_map_no_set_max_metric_hook
      Src: /src/frr/ospfd/ospf_routemap.c:724,1
    - Dst: route_map_set_tag_hook
      Src: /src/frr/ospfd/ospf_routemap.c:726,1
    - Dst: route_map_no_set_tag_hook
      Src: /src/frr/ospfd/ospf_routemap.c:727,1
    - Dst: route_map_install_match
      Src: /src/frr/ospfd/ospf_routemap.c:729,1
    - Dst: route_map_install_match
      Src: /src/frr/ospfd/ospf_routemap.c:730,1
    - Dst: route_map_install_match
      Src: /src/frr/ospfd/ospf_routemap.c:731,1
    - Dst: route_map_install_match
      Src: /src/frr/ospfd/ospf_routemap.c:732,1
    - Dst: route_map_install_match
      Src: /src/frr/ospfd/ospf_routemap.c:733,1
    - Dst: route_map_install_match
      Src: /src/frr/ospfd/ospf_routemap.c:734,1
    - Dst: route_map_install_match
      Src: /src/frr/ospfd/ospf_routemap.c:735,1
    - Dst: route_map_install_set
      Src: /src/frr/ospfd/ospf_routemap.c:737,1
    - Dst: route_map_install_set
      Src: /src/frr/ospfd/ospf_routemap.c:738,1
    - Dst: route_map_install_set
      Src: /src/frr/ospfd/ospf_routemap.c:739,1
    - Dst: route_map_install_set
      Src: /src/frr/ospfd/ospf_routemap.c:740,1
    - Dst: route_map_install_set
      Src: /src/frr/ospfd/ospf_routemap.c:741,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_routemap.c:743,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_routemap.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 745
    functionName: ospf_route_map_init
    functionSourceFile: /src/frr/ospfd/ospf_routemap.c
    functionUses: 2
    functionsReached:
    - route_map_event_hook
    - route_map_match_tag_hook
    - route_map_match_ip_next_hop_prefix_list_hook
    - route_map_no_set_max_metric_hook
    - route_map_set_metric_hook
    - install_element
    - route_map_match_interface_hook
    - route_map_no_set_min_metric_hook
    - route_map_install_set
    - route_map_init
    - route_map_no_match_ip_address_prefix_list_hook
    - route_map_match_ip_next_hop_hook
    - route_map_match_ip_address_hook
    - route_map_set_tag_hook
    - route_map_no_match_interface_hook
    - route_map_delete_hook
    - route_map_no_match_tag_hook
    - route_map_no_match_ip_next_hop_prefix_list_hook
    - route_map_no_match_ip_next_hop_hook
    - route_map_set_max_metric_hook
    - route_map_match_ip_next_hop_type_hook
    - route_map_set_min_metric_hook
    - route_map_no_set_tag_hook
    - route_map_install_match
    - route_map_no_set_metric_hook
    - route_map_no_match_ip_address_hook
    - route_map_add_hook
    - route_map_match_ip_address_prefix_list_hook
    - route_map_no_match_ip_next_hop_type_hook
    linkageType: ''
    returnType: void
    signature: void ospf_route_map_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ospfd/ospf_vty.c:58,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:58,1
    - Dst: inet_aton
      Src: /src/frr/ospfd/ospf_vty.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - str
    - area_id
    - area_id_fmt
    argTypes:
    - char*
    - struct in_addr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 66
    functionName: str2area_id
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - htonl
    - strtoul
    - inet_aton
    linkageType: ''
    returnType: int
    signature: int str2area_id(const char *str, struct in_addr *area_id, int *area_id_fmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:72,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:74,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buf
    - length
    - area_id
    - area_id_fmt
    argTypes:
    - char*
    - int
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: area_id2str
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - ntohl
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void area_id2str(char *buf, int length, struct in_addr *area_id,\n\t\t\tint
      area_id_fmt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/frr/ospfd/ospf_vty.c:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - str
    - metric
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: str2metric
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int
    signature: int str2metric(const char *str, int *metric)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:99,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - str
    - metric_type
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: str2metric_type
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int str2metric_type(const char *str, int *metric_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:114,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:114,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 119
    functionName: ospf_oi_count
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 2
    functionsReached:
    - route_top
    - route_next
    - IF_OIFS
    linkageType: ''
    returnType: int
    signature: int ospf_oi_count(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - argv
    - ','
    - argc
    - ','
    - idx_vrf
    - ','
    - vrf_name
    - ','
    - all_vrf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: OSPF_FIND_VRF_ARGS
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_vty.c:134,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:136,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:141,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_vty.c:145,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:147,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - vty
    - argv
    - argc
    - instance
    - vrf_name
    argTypes:
    - struct vty*
    - struct cmd_token*[]
    - int
    - unsigned short*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 156
    functionName: ospf_router_cmd_parse
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - strtoul
    - vty_out
    - argv_find
    linkageType: ''
    returnType: int
    signature: "int ospf_router_cmd_parse(struct vty *vty, struct cmd_token *argv[],\n\t\t\t\t
      const int argc, unsigned short *instance,\n\t\t\t\t const char **vrf_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:163,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:164,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:165,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:167,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ospf
    - vty
    - json
    - use_vrf
    argTypes:
    - struct ospf*
    - struct vty*
    - json_object*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 169
    functionName: ospf_show_vrf_name
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_get_name
    - json_object_string_add
    - vty_out
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void ospf_show_vrf_name(struct ospf *ospf, struct vty *vty,\n\t\t\t
      \      json_object *json, uint8_t use_vrf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_vty.c:820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vl_config
    - vty
    argTypes:
    - struct ospf_vl_config_data*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 823
    functionName: ospf_vl_config_data_init
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void ospf_vl_config_data_init(struct ospf_vl_config_data *vl_config,\n\t\t\t\t
      \    struct vty *vty)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:837,1
    - Dst: ospf_area_get
      Src: /src/frr/ospfd/ospf_vty.c:841,1
    - Dst: ospf_area_display_format_set
      Src: /src/frr/ospfd/ospf_vty.c:842,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:846,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:851,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:852,1
    - Dst: ospf_vl_lookup
      Src: /src/frr/ospfd/ospf_vty.c:859,1
    - Dst: ospf_vl_data_new
      Src: /src/frr/ospfd/ospf_vty.c:861,1
    - Dst: ospf_vl_new
      Src: /src/frr/ospfd/ospf_vty.c:863,1
    - Dst: ospf_vl_add
      Src: /src/frr/ospfd/ospf_vty.c:864,1
    - Dst: ospf_spf_calculate_schedule
      Src: /src/frr/ospfd/ospf_vty.c:865,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - ospf
    - vl_config
    argTypes:
    - struct ospf*
    - struct ospf_vl_config_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 825
    functionDepth: 11
    functionLinenumber: 825
    functionLinenumberEnd: 870
    functionName: ospf_find_vl_data
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_vl_new
    - ospf_area_display_format_set
    - ospf_vl_lookup
    - ospf_vl_add
    - vty_out
    - ospf_spf_calculate_schedule
    - ospf_area_get
    - ospf_vl_data_new
    - ntohl
    linkageType: ''
    returnType: struct ospf_vl_data
    signature: 'struct ospf_vl_data *

      ospf_find_vl_data(struct ospf *ospf, struct ospf_vl_config_data *vl_config)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:883,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:883,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:884,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_vty.c:888,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:888,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_vty.c:890,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:890,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:892,1
    - Dst: ospf_crypt_key_lookup
      Src: /src/frr/ospfd/ospf_vty.c:894,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:894,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:897,1
    - Dst: ospf_crypt_key_new
      Src: /src/frr/ospfd/ospf_vty.c:901,1
    - Dst: memset
      Src: /src/frr/ospfd/ospf_vty.c:903,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_vty.c:904,1
    - Dst: ospf_crypt_key_add
      Src: /src/frr/ospfd/ospf_vty.c:907,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:907,1
    - Dst: ospf_crypt_key_lookup
      Src: /src/frr/ospfd/ospf_vty.c:911,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:911,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:914,1
    - Dst: ospf_crypt_key_delete
      Src: /src/frr/ospfd/ospf_vty.c:919,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:919,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - vl_data
    - vl_config
    argTypes:
    - struct ospf_vl_data*
    - struct ospf_vl_config_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 873
    functionDepth: 14
    functionLinenumber: 873
    functionLinenumberEnd: 924
    functionName: ospf_vl_set_security
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_crypt_key_delete
    - vty_out
    - memset
    - strlcpy
    - ospf_crypt_key_lookup
    - ospf_crypt_key_new
    - IF_DEF_PARAMS
    - SET_IF_PARAM
    - ospf_crypt_key_add
    linkageType: ''
    returnType: int
    signature: "int ospf_vl_set_security(struct ospf_vl_data *vl_data,\n\t\t\t\tstruct
      ospf_vl_config_data *vl_config)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:933,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:933,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:934,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:938,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:938,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:939,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:943,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:943,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:944,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:949,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:949,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:950,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - vl_data
    - vl_config
    argTypes:
    - struct ospf_vl_data*
    - struct ospf_vl_config_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 954
    functionName: ospf_vl_set_timers
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - SET_IF_PARAM
    - IF_DEF_PARAMS
    linkageType: ''
    returnType: int
    signature: "int ospf_vl_set_timers(struct ospf_vl_data *vl_data,\n\t\t\t      struct
      ospf_vl_config_data *vl_config)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_find_vl_data
      Src: /src/frr/ospfd/ospf_vty.c:963,1
    - Dst: ospf_vl_set_security
      Src: /src/frr/ospfd/ospf_vty.c:972,1
    - Dst: ospf_vl_set_timers
      Src: /src/frr/ospfd/ospf_vty.c:978,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ospf
    - vl_config
    argTypes:
    - struct ospf*
    - struct ospf_vl_config_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 958
    functionDepth: 15
    functionLinenumber: 958
    functionLinenumberEnd: 983
    functionName: ospf_vl_set
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_vl_set_timers
    - ospf_find_vl_data
    - ospf_vl_set_security
    linkageType: ''
    returnType: int
    signature: int ospf_vl_set(struct ospf *ospf, struct ospf_vl_config_data *vl_config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:2201,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:2201,1
    - Dst: ospf_zebra_add
      Src: /src/frr/ospfd/ospf_vty.c:2209,1
    - Dst: ospf_zebra_add_discard
      Src: /src/frr/ospfd/ospf_vty.c:2211,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - ospf
    - rt
    argTypes:
    - struct ospf*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2214
      start: 2193
    functionDepth: 3
    functionLinenumber: 2193
    functionLinenumberEnd: 2214
    functionName: ospf_table_reinstall_routes
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_zebra_add_discard
    - route_top
    - ospf_zebra_add
    - route_next
    linkageType: ''
    returnType: void
    signature: "void ospf_table_reinstall_routes(struct ospf *ospf,\n\t\t\t\t\tstruct
      route_table *rt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf_table_reinstall_routes
      Src: /src/frr/ospfd/ospf_vty.c:2218,1
    - Dst: ospf_table_reinstall_routes
      Src: /src/frr/ospfd/ospf_vty.c:2219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2220
      start: 2216
    functionDepth: 4
    functionLinenumber: 2216
    functionLinenumberEnd: 2220
    functionName: ospf_reinstall_routes
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_table_reinstall_routes
    linkageType: ''
    returnType: void
    signature: void ospf_reinstall_routes(struct ospf *ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_vty.c:2246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - delay
    - hold
    - max
    argTypes:
    - struct vty*
    - unsigned int
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2243
    functionDepth: 1
    functionLinenumber: 2243
    functionLinenumberEnd: 2253
    functionName: ospf_timers_spf_set
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - VTY_DECLVAR_INSTANCE_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int ospf_timers_spf_set(struct vty *vty, unsigned int delay,\n\t\t\t
      \      unsigned int hold, unsigned int max)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf_restart_spf
      Src: /src/frr/ospfd/ospf_vty.c:2704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - ospf
    - paths
    argTypes:
    - struct vty*
    - struct ospf*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2705
      start: 2693
    functionDepth: 3
    functionLinenumber: 2693
    functionLinenumberEnd: 2705
    functionName: ospf_maxpath_set
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_restart_spf
    linkageType: ''
    returnType: void
    signature: void ospf_maxpath_set(struct vty *vty, struct ospf *ospf, uint16_t
      paths)
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:2753,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2757,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_vty.c:2760,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2762,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2764,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2769,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2772,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2776,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2779,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:2783,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2788,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2792,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2796,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2800,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2801,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2804,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2811,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:2812,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2813,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2816,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:2818,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2822,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_vty.c:2823,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospfd/ospf_vty.c:2824,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2826,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2829,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2834,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2838,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2842,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospfd/ospf_vty.c:2845,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2849,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2854,1
    - Dst: IS_OSPF_ABR
      Src: /src/frr/ospfd/ospf_vty.c:2856,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2857,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2860,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2863,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2867,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2870,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2873,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2876,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2879,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:2886,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2890,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:2892,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:2894,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:2899,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2903,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2909,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:2911,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2913,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2916,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:2918,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2926,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:2931,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:2934,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:2937,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_vty.c:2940,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2941,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2946,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2948,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2949,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:2951,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2952,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:2954,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2955,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:2957,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2958,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:2960,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2961,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:2963,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2964,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:2966,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2967,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:2969,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2970,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:2972,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2973,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:2975,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:2976,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:2978,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2981,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2986,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2988,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2990,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2992,1
    - Dst: OSPF_IS_AREA_BACKBONE
      Src: /src/frr/ospfd/ospf_vty.c:2994,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:2995,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3000,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3004,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3005,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3007,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3008,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3009,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3011,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3012,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3013,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3015,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3016,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3017,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3019,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3020,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3021,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3022,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3023,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3027,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3029,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3030,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3032,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3033,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3035,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3036,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3038,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3040,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3042,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3043,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3044,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3046,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3047,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3052,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3055,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3060,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3063,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3066,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3070,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3075,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3076,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3079,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3081,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:3088,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:3089,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3093,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 171
    argCount: 4
    argNames:
    - vty
    - area
    - json_areas
    - use_json
    argTypes:
    - struct vty*
    - struct ospf_area*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3094
      start: 2746
    functionDepth: 2
    functionLinenumber: 2746
    functionLinenumberEnd: 3094
    functionName: show_ip_ospf_area
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf_timer_dump
    - vty_out
    - listcount
    - CHECK_FLAG
    - IS_OSPF_ABR
    - ospf_lsdb_count
    - json_object_int_add
    - inet_ntop
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - json_object_boolean_false_add
    - monotime_until
    - ospf_lsdb_checksum
    - OSPF_IS_AREA_BACKBONE
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_area(struct vty *vty, struct ospf_area *area,\n\t\t\t
      \     json_object *json_areas, bool use_json)"
  - BBCount: 223
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3108,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3111,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3116,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3119,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:3123,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3127,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3130,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:3139,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3143,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3146,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:3148,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3155,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3156,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3157,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3158,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3162,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3163,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3164,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3165,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3171,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3172,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3176,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3186,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3190,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3195,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3199,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3203,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3208,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3216,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3218,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3220,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3222,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3225,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:3239,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3240,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3245,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3248,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3250,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:3252,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3253,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:3254,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3256,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:3257,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3260,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:3267,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3269,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3273,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3275,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3278,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3281,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3285,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3289,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3294,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:3296,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3299,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3301,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3305,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3309,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3313,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3317,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3324,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3327,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3331,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3333,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3337,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3341,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3343,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3347,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3353,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3355,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3356,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3358,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3360,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3362,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3363,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3367,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3369,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3370,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3372,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3374,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:3376,1
    - Dst: ospf_lsdb_checksum
      Src: /src/frr/ospfd/ospf_vty.c:3377,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3382,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:3383,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3385,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:3386,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3389,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3391,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3394,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3398,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3401,1
    - Dst: ospf_ldp_sync_show_info
      Src: /src/frr/ospfd/ospf_vty.c:3406,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3411,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3414,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3418,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3421,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_vty.c:3426,1
    - Dst: show_ip_ospf_area
      Src: /src/frr/ospfd/ospf_vty.c:3427,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:3429,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:3431,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:3432,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:3432,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:3435,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3438,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:3443,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:3454,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:3464,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:3467,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3470,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:3479,1
    - Dst: show_ip_ospf_common
      Src: /src/frr/ospfd/ospf_vty.c:3483,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:3487,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3489,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:3492,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:3495,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3497,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:3504,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:3508,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3510,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:3513,1
    - Dst: show_ip_ospf_common
      Src: /src/frr/ospfd/ospf_vty.c:3518,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3520,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/ospfd/ospf_vty.c:3521,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:3526,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:3531,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:3543,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:3547,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:3551,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:3553,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3556,1
    - Dst: show_ip_ospf_common
      Src: /src/frr/ospfd/ospf_vty.c:3558,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:3561,1
    - Dst: ospf_interface_auth_show
      Src: /src/frr/ospfd/ospf_vty.c:3566,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3571,1
    - Dst: OSPF_AUTH_NULL
      Src: /src/frr/ospfd/ospf_vty.c:3574,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3576,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3579,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:3582,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3583,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3586,1
    - Dst: list_isempty
      Src: /src/frr/ospfd/ospf_vty.c:3593,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3593,1
    - Dst: listgetdata
      Src: /src/frr/ospfd/ospf_vty.c:3596,1
    - Dst: listtail
      Src: /src/frr/ospfd/ospf_vty.c:3596,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3596,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:3598,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3599,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3602,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3604,1
    - Dst: if_is_operative
      Src: /src/frr/ospfd/ospf_vty.c:3627,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3629,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospfd/ospf_vty.c:3632,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3635,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3637,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3638,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3640,1
    - Dst: if_flag_dump
      Src: /src/frr/ospfd/ospf_vty.c:3641,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3643,1
    - Dst: if_is_operative
      Src: /src/frr/ospfd/ospf_vty.c:3644,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3645,1
    - Dst: if_flag_dump
      Src: /src/frr/ospfd/ospf_vty.c:3647,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:3652,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospfd/ospf_vty.c:3653,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospfd/ospf_vty.c:3657,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3661,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:3664,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3665,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3668,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:3674,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:3674,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:3674,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:3680,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3682,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3685,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3692,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3695,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3699,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/ospfd/ospf_vty.c:3708,1
    - Dst: ipv4_broadcast_addr
      Src: /src/frr/ospfd/ospf_vty.c:3714,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3720,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3724,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3728,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3732,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3736,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:3737,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3738,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3739,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3742,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3744,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3747,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3749,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3751,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:3752,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:3753,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3755,1
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_vty.c:3756,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3758,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:3759,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3761,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3762,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3765,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3771,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3773,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:3774,1
    - Dst: PRIORITY
      Src: /src/frr/ospfd/ospf_vty.c:3775,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_vty.c:3779,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3781,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_vty.c:3784,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_vty.c:3784,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3787,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3790,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3795,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3798,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_vty.c:3805,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_vty.c:3805,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3808,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3812,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:3815,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3820,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3823,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:3832,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3835,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:3838,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3840,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:3842,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3846,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3847,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3848,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3849,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3852,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3853,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3858,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3859,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3860,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3861,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3862,1
    - Dst: OI_MEMBER_CHECK
      Src: /src/frr/ospfd/ospf_vty.c:3863,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3864,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3866,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3867,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3871,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3872,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3874,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3876,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3878,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3879,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3881,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3882,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3884,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3885,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3887,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3889,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3890,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3891,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3892,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3893,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3895,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3896,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3897,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3898,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3899,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:3900,1
    - Dst: OSPF_IF_PASSIVE_STATUS
      Src: /src/frr/ospfd/ospf_vty.c:3903,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:3909,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3913,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3917,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:3918,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:3923,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3927,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3932,1
    - Dst: ospf_nbr_count
      Src: /src/frr/ospfd/ospf_vty.c:3933,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3934,1
    - Dst: ospf_nbr_count
      Src: /src/frr/ospfd/ospf_vty.c:3936,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3938,1
    - Dst: ospf_nbr_count
      Src: /src/frr/ospfd/ospf_vty.c:3940,1
    - Dst: ospf_nbr_count
      Src: /src/frr/ospfd/ospf_vty.c:3941,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:3944,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:3946,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3948,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3952,1
    - Dst: ospf_interface_bfd_show
      Src: /src/frr/ospfd/ospf_vty.c:3957,1
    - Dst: ospf_interface_auth_show
      Src: /src/frr/ospfd/ospf_vty.c:3960,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospfd/ospf_vty.c:3963,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3967,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_vty.c:3979,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3985,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3988,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3993,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3996,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:3999,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4004,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4007,1
    - Dst: show_ip_ospf_interface_sub
      Src: /src/frr/ospfd/ospf_vty.c:4009,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4014,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4021,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_vty.c:4025,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:4028,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4030,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4032,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4035,1
    - Dst: show_ip_ospf_interface_sub
      Src: /src/frr/ospfd/ospf_vty.c:4037,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4041,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4044,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4052,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4052,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4056,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4067,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4069,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4071,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4073,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4075,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4077,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4079,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4081,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4083,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4085,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4087,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4089,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:4090,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4092,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:4097,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4112,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4113,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4116,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4119,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4123,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4128,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_vty.c:4131,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4136,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4139,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:4139,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4140,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4148,1
    - Dst: show_ip_ospf_interface_traffic_sub
      Src: /src/frr/ospfd/ospf_vty.c:4151,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4154,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_vty.c:4162,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4167,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4168,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4174,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:4174,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4175,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4183,1
    - Dst: show_ip_ospf_interface_traffic_sub
      Src: /src/frr/ospfd/ospf_vty.c:4186,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4189,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4199,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4199,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4202,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4207,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4220,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:4230,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_vty.c:4232,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4236,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4242,1
    - Dst: show_ip_ospf_interface_common
      Src: /src/frr/ospfd/ospf_vty.c:4245,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4251,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4253,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:4257,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4260,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4262,1
    - Dst: show_ip_ospf_interface_common
      Src: /src/frr/ospfd/ospf_vty.c:4268,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:4273,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4276,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4278,1
    - Dst: show_ip_ospf_interface_common
      Src: /src/frr/ospfd/ospf_vty.c:4283,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4288,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4293,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4308,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:4313,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:4317,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4322,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_vty.c:4324,1
    - Dst: show_ip_ospf_interface_common
      Src: /src/frr/ospfd/ospf_vty.c:4327,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4330,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4335,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4354,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:4360,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_vty.c:4362,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4366,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4371,1
    - Dst: show_ip_ospf_interface_traffic_common
      Src: /src/frr/ospfd/ospf_vty.c:4375,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4382,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:4386,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4389,1
    - Dst: show_ip_ospf_interface_traffic_common
      Src: /src/frr/ospfd/ospf_vty.c:4393,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:4396,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4399,1
    - Dst: show_ip_ospf_interface_traffic_common
      Src: /src/frr/ospfd/ospf_vty.c:4403,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4408,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4416,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:4435,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_vty.c:4440,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_vty.c:4447,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:4449,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospfd/ospf_vty.c:4452,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:4455,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4456,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4460,1
    - Dst: ospf_nbr_ism_state_message
      Src: /src/frr/ospfd/ospf_vty.c:4462,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4463,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4465,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4468,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:4470,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4471,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:4472,1
    - Dst: ospf_nbr_ism_state
      Src: /src/frr/ospfd/ospf_vty.c:4473,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:4478,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4481,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4483,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4486,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:4488,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4490,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:4492,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4495,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4497,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:4501,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4503,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4504,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4505,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:4507,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4508,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:4510,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4511,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:4512,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:4514,1
    - Dst: ospf_nbr_ism_state_message
      Src: /src/frr/ospfd/ospf_vty.c:4516,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4520,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4523,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4526,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:4527,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4529,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:4530,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4532,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4533,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4533,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:4534,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:4535,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:4535,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4546,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4546,1
    - Dst: show_ip_ospf_neighbour_brief
      Src: /src/frr/ospfd/ospf_vty.c:4561,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4577,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4580,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4585,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4588,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4591,1
    - Dst: show_ip_ospf_neighbour_header
      Src: /src/frr/ospfd/ospf_vty.c:4593,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4595,1
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_vty.c:4596,1
    - Dst: show_ip_ospf_neighbor_sub
      Src: /src/frr/ospfd/ospf_vty.c:4598,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4602,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4604,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4604,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4607,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4612,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4624,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:4634,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4637,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4643,1
    - Dst: show_ip_ospf_neighbor_common
      Src: /src/frr/ospfd/ospf_vty.c:4646,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4651,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4653,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:4658,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4661,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4663,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:4671,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4674,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4676,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4679,1
    - Dst: show_ip_ospf_neighbor_common
      Src: /src/frr/ospfd/ospf_vty.c:4684,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4688,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/ospfd/ospf_vty.c:4689,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4695,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4701,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4714,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:4718,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:4722,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4724,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4727,1
    - Dst: show_ip_ospf_neighbor_common
      Src: /src/frr/ospfd/ospf_vty.c:4729,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4732,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4737,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4749,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4754,1
    - Dst: show_ip_ospf_neighbour_header
      Src: /src/frr/ospfd/ospf_vty.c:4756,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4760,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4763,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4766,1
    - Dst: show_ip_ospf_neighbor_sub
      Src: /src/frr/ospfd/ospf_vty.c:4770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4773,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4778,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4779,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:4782,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4785,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4788,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4789,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4792,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4795,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4798,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:4800,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4805,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4808,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4811,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4819,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4819,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4822,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4827,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4840,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:4850,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4853,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4859,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4862,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4867,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:4872,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4875,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:4880,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4883,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4884,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4889,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4892,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/ospfd/ospf_vty.c:4893,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4899,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4904,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4918,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:4922,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:4926,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4928,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4930,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4932,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4935,1
    - Dst: show_ip_ospf_neighbor_int_common
      Src: /src/frr/ospfd/ospf_vty.c:4940,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4949,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4953,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4956,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4959,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_vty.c:4961,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:4964,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4966,1
    - Dst: CMD_WARNING
      Src: /src/frr/ospfd/ospf_vty.c:4967,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4970,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:4970,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4970,1
    - Dst: show_ip_ospf_neighbor_sub
      Src: /src/frr/ospfd/ospf_vty.c:4976,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4980,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4982,1
    - Dst: DEFPY
      Src: /src/frr/ospfd/ospf_vty.c:4987,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:5006,1
    - Dst: show_ip_ospf_neighbour_header
      Src: /src/frr/ospfd/ospf_vty.c:5011,1
    - Dst: show_ip_ospf_neighbor_int_common
      Src: /src/frr/ospfd/ospf_vty.c:5013,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5025,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5027,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5031,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5034,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5039,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5040,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5041,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:5041,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5043,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5044,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:5044,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5048,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5050,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5052,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5057,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5060,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5064,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5066,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:5072,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5074,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5078,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:5079,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5086,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5089,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5093,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_vty.c:5110,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_vty.c:5116,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:5118,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospfd/ospf_vty.c:5121,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:5124,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5125,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5129,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5135,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5137,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5143,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5146,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5151,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5152,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5153,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5155,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5159,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5160,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5162,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5165,1
    - Dst: ospf_nbr_ism_state_message
      Src: /src/frr/ospfd/ospf_vty.c:5169,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5171,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5172,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5173,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:5174,1
    - Dst: ospf_nbr_ism_state
      Src: /src/frr/ospfd/ospf_vty.c:5175,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5178,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:5181,1
    - Dst: ospf_nbr_ism_state
      Src: /src/frr/ospfd/ospf_vty.c:5181,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5186,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5189,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:5196,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5198,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5201,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5203,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:5204,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:5214,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5216,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5220,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5225,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:5227,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_vty.c:5235,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5237,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_vty.c:5240,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_vty.c:5240,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5243,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5247,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_vty.c:5253,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_vty.c:5253,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5256,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5260,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5264,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5269,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5270,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_vty.c:5271,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5273,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_vty.c:5274,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:5280,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5283,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5287,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5291,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:5292,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5297,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:5298,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5300,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:5301,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5305,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:5306,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5308,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:5309,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5313,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:5315,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5317,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:5318,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5323,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5326,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5332,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5337,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5344,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5348,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5355,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5360,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5365,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_vty.c:5367,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5368,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5371,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5374,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5375,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5378,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5384,1
    - Dst: ospf_rejected_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5385,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5390,1
    - Dst: ospf_exit_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5391,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5394,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5396,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_vty.c:5397,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_vty.c:5400,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5401,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5404,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5406,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5412,1
    - Dst: ospf_rejected_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5414,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5419,1
    - Dst: ospf_exit_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5421,1
    - Dst: bfd_sess_show
      Src: /src/frr/ospfd/ospf_vty.c:5426,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:5429,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5445,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5449,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5452,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:5455,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:5457,1
    - Dst: ospf_nbr_lookup_by_routerid
      Src: /src/frr/ospfd/ospf_vty.c:5458,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:5460,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:5463,1
    - Dst: show_ip_ospf_neighbor_detail_sub
      Src: /src/frr/ospfd/ospf_vty.c:5464,1
    - Dst: show_ip_ospf_neighbour_brief
      Src: /src/frr/ospfd/ospf_vty.c:5467,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5472,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:5476,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:5480,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5482,1
    - Dst: DEFPY
      Src: /src/frr/ospfd/ospf_vty.c:5487,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_vty.c:5504,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:5505,1
    - Dst: show_ip_ospf_neighbor_id_common
      Src: /src/frr/ospfd/ospf_vty.c:5515,1
    CyclomaticComplexity: 275
    EdgeCount: 275
    ICount: 850
    argCount: 4
    argNames:
    - vty
    - ospf
    - json
    - use_vrf
    argTypes:
    - struct vty*
    - struct ospf*
    - json_object*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5517
      start: 3096
    functionDepth: 3
    functionLinenumber: 3096
    functionLinenumberEnd: 5517
    functionName: show_ip_ospf_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - route_top
    - OSPF_FIND_VRF_ARGS
    - IPV4_ADDR_SAME
    - json_object_boolean_false_add
    - OSPF_IF_PASSIVE_STATUS
    - show_ip_ospf_neighbor_common
    - json_object_boolean_add
    - ospf_restart_reason2str
    - ospf_lookup_instance
    - if
    - listgetdata
    - if_flag_dump
    - ospf_db_summary_count
    - listcount
    - ospf_nbr_lookup_by_routerid
    - monotime_since
    - argv_find
    - IF_NAME
    - json_object_new_object
    - ospf_rejected_reason2str
    - list_isempty
    - show_ip_ospf_area
    - OSPF_IF_PARAM_CONFIGURED
    - ALL_LIST_ELEMENTS
    - show_ip_ospf_interface_traffic_common
    - ospf_ldp_sync_show_info
    - OSPF_AUTH_NULL
    - use_json
    - ospf_nbr_ism_state
    - CMD_WARNING
    - ospf_nbr_lookup_by_addr
    - ospf_show_vrf_name
    - ospf_nbr_count
    - json_object_to_json_string_ext
    - DEFPY
    - lookup_msg
    - ospf_lookup_by_vrf_id
    - PRIORITY
    - ospf_lookup_by_inst_name
    - ospf_area_desc_string
    - inet_ntop
    - ospf_ls_request_count
    - DEFUN
    - DR
    - bfd_sess_show
    - json_object_free
    - json_object_new_array
    - ospf_timer_dump
    - show_ip_ospf_interface_traffic_sub
    - IF_DEF_PARAMS
    - IF_OIFS
    - json_object_object_add
    - ipv4_broadcast_addr
    - ospf_exit_reason2str
    - if_is_operative
    - vty_json
    - show_ip_ospf_neighbor_detail_sub
    - ospf_interface_neighbor_count
    - ospf_options_dump
    - ospf_interface_auth_show
    - ospf_timeval_dump
    - json_object_string_add
    - BDR
    - OSPF_GR_IS_ACTIVE_HELPER
    - strmatch
    - vrf_lookup_by_id
    - ospf_lsdb_checksum
    - show_ip_ospf_neighbor_int_common
    - vty_out
    - strlcpy
    - json_object_int_add
    - route_next
    - show_ip_ospf_neighbour_brief
    - monotime_until
    - strtoul
    - json_object_array_add
    - listtail
    - OSPF_IF_PARAM
    - json_object_object_get_ex
    - CMD_SUCCESS
    - json_object_boolean_true_add
    - ospf_nbr_ism_state_message
    - json_object_string_addf
    - ospf_oi_count
    - ALL_LIST_ELEMENTS_RO
    - show_ip_ospf_common
    - ospf_ls_retransmit_count
    - ospf_get_name
    - ntohl
    - show_ip_ospf_interface_sub
    - ospf_lsdb_count
    - OI_MEMBER_CHECK
    - show_ip_ospf_neighbor_all_common
    - show_ip_ospf_neighbour_header
    - show_ip_ospf_interface_common
    - CONNECTED_PEER
    - show_ip_ospf_neighbor_sub
    - if_lookup_by_name
    - CHECK_FLAG
    - ospf_interface_bfd_show
    - show_ip_ospf_neighbor_id_common
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_common(struct vty *vty, struct ospf *ospf,\n\t\t\t
      \      json_object *json, uint8_t use_vrf)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_vty.c:3979,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3985,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:3988,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:3993,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:3996,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:3999,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4004,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4007,1
    - Dst: show_ip_ospf_interface_sub
      Src: /src/frr/ospfd/ospf_vty.c:4009,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4014,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4021,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_vty.c:4025,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:4028,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4030,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4032,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4035,1
    - Dst: show_ip_ospf_interface_sub
      Src: /src/frr/ospfd/ospf_vty.c:4037,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4041,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4044,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4052,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4052,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4056,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 6
    argNames:
    - vty
    - ospf
    - intf_name
    - use_vrf
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf*
    - char*
    - uint8_t
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4059
      start: 3974
    functionDepth: 2
    functionLinenumber: 3974
    functionLinenumberEnd: 4059
    functionName: show_ip_ospf_interface_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - if_lookup_by_name
    - vty_out
    - ospf_oi_count
    - ospf_show_vrf_name
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_free
    - json_object_object_add
    - vrf_lookup_by_id
    - ospf_get_name
    - show_ip_ospf_interface_sub
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_interface_common(struct vty *vty, struct ospf *ospf,\n\t\t\t\t\t
      char *intf_name, uint8_t use_vrf,\n\t\t\t\t\t json_object *json, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4004,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4007,1
    - Dst: show_ip_ospf_interface_sub
      Src: /src/frr/ospfd/ospf_vty.c:4009,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4014,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4019
      start: 4003
    functionDepth: 2
    functionLinenumber: 4003
    functionLinenumberEnd: 4019
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 16
    functionsReached:
    - json_object_new_object
    - ospf_oi_count
    - show_ip_ospf_interface_sub
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4067,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4069,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4071,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4073,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4075,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4077,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4079,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4081,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4083,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4085,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4087,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4089,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:4090,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4092,1
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:4097,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 4
    argNames:
    - vty
    - oi
    - json_interface_sub
    - use_json
    argTypes:
    - struct vty*
    - struct ospf_interface*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4099
      start: 4061
    functionDepth: 1
    functionLinenumber: 4061
    functionLinenumberEnd: 4099
    functionName: show_ip_ospf_interface_traffic_sub
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - listcount
    - vty_out
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_interface_traffic_sub(struct vty *vty,\n\t\t\t\t\t
      \      struct ospf_interface *oi,\n\t\t\t\t\t       json_object *json_interface_sub,\n\t\t\t\t\t
      \      bool use_json)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4112,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4113,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4116,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4119,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4123,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4128,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospfd/ospf_vty.c:4131,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4136,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4139,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:4139,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4140,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4148,1
    - Dst: show_ip_ospf_interface_traffic_sub
      Src: /src/frr/ospfd/ospf_vty.c:4151,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4154,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_vty.c:4162,1
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4167,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4168,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4174,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:4174,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4175,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4183,1
    - Dst: show_ip_ospf_interface_traffic_sub
      Src: /src/frr/ospfd/ospf_vty.c:4186,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4189,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4199,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4199,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4202,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 57
    argCount: 7
    argNames:
    - vty
    - ospf
    - intf_name
    - json
    - display_once
    - use_vrf
    - use_json
    argTypes:
    - struct vty*
    - struct ospf*
    - char*
    - json_object*
    - int
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4205
      start: 4102
    functionDepth: 2
    functionLinenumber: 4102
    functionLinenumberEnd: 4205
    functionName: show_ip_ospf_interface_traffic_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - if_lookup_by_name
    - vty_out
    - ospf_oi_count
    - route_top
    - show_ip_ospf_interface_traffic_sub
    - ospf_show_vrf_name
    - IF_OIFS
    - route_next
    - json_object_object_add
    - vrf_lookup_by_id
    - ospf_get_name
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_interface_traffic_common(\n\tstruct vty *vty, struct
      ospf *ospf, char *intf_name, json_object *json,\n\tint display_once, uint8_t
      use_vrf, bool use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf_oi_count
      Src: /src/frr/ospfd/ospf_vty.c:4136,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4139,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:4139,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4140,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4148,1
    - Dst: show_ip_ospf_interface_traffic_sub
      Src: /src/frr/ospfd/ospf_vty.c:4151,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4154,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4159
      start: 4132
    functionDepth: 2
    functionLinenumber: 4132
    functionLinenumberEnd: 4159
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 16
    functionsReached:
    - json_object_new_object
    - ospf_oi_count
    - route_top
    - show_ip_ospf_interface_traffic_sub
    - route_next
    - IF_OIFS
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4419
      start: 4414
    functionDepth: 1
    functionLinenumber: 4414
    functionLinenumberEnd: 4419
    functionName: show_ip_ospf_neighbour_header
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_ip_ospf_neighbour_header(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:4435,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_vty.c:4440,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_vty.c:4447,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:4449,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospfd/ospf_vty.c:4452,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:4455,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4456,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4460,1
    - Dst: ospf_nbr_ism_state_message
      Src: /src/frr/ospfd/ospf_vty.c:4462,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4463,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4465,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4468,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:4470,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4471,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:4472,1
    - Dst: ospf_nbr_ism_state
      Src: /src/frr/ospfd/ospf_vty.c:4473,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:4478,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4481,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4483,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4486,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:4488,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4490,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:4492,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4495,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4497,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:4501,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4503,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4504,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4505,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:4507,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4508,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:4510,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4511,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:4512,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:4514,1
    - Dst: ospf_nbr_ism_state_message
      Src: /src/frr/ospfd/ospf_vty.c:4516,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4520,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4523,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4526,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:4527,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4529,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:4530,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4532,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4533,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4533,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:4534,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:4535,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:4535,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 5
    argNames:
    - vty
    - nbr
    - prev_nbr
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf_neighbor*
    - struct ospf_neighbor*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4537
      start: 4421
    functionDepth: 3
    functionLinenumber: 4421
    functionLinenumberEnd: 4537
    functionName: show_ip_ospf_neighbour_brief
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - ospf_nbr_ism_state
    - ospf_timeval_dump
    - IPV4_ADDR_SAME
    - json_object_string_add
    - json_object_string_addf
    - lookup_msg
    - inet_ntop
    - ospf_ls_request_count
    - ospf_ls_retransmit_count
    - ospf_db_summary_count
    - vty_out
    - strlcpy
    - json_object_int_add
    - monotime_since
    - monotime_until
    - IF_NAME
    - json_object_new_array
    - json_object_new_object
    - ospf_timer_dump
    - json_object_array_add
    - json_object_object_get_ex
    - json_object_object_add
    - ospf_nbr_ism_state_message
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_neighbour_brief(struct vty *vty,\n\t\t\t\t\t struct
      ospf_neighbor *nbr,\n\t\t\t\t\t struct ospf_neighbor *prev_nbr,\n\t\t\t\t\t
      json_object *json, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4546,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4546,1
    - Dst: show_ip_ospf_neighbour_brief
      Src: /src/frr/ospfd/ospf_vty.c:4561,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 4
    argNames:
    - vty
    - oi
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf_interface*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4564
      start: 4539
    functionDepth: 4
    functionLinenumber: 4539
    functionLinenumberEnd: 4564
    functionName: show_ip_ospf_neighbor_sub
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - show_ip_ospf_neighbour_brief
    - route_top
    - route_next
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_neighbor_sub(struct vty *vty,\n\t\t\t\t      struct
      ospf_interface *oi,\n\t\t\t\t      json_object *json, bool use_json)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4577,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4580,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4585,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4588,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4591,1
    - Dst: show_ip_ospf_neighbour_header
      Src: /src/frr/ospfd/ospf_vty.c:4593,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4595,1
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_vty.c:4596,1
    - Dst: show_ip_ospf_neighbor_sub
      Src: /src/frr/ospfd/ospf_vty.c:4598,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4602,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4604,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4604,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4607,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4612,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4624,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:4634,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4637,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4643,1
    - Dst: show_ip_ospf_neighbor_common
      Src: /src/frr/ospfd/ospf_vty.c:4646,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4651,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4653,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:4658,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4661,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4663,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:4671,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4674,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4676,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4679,1
    - Dst: show_ip_ospf_neighbor_common
      Src: /src/frr/ospfd/ospf_vty.c:4684,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4688,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/ospfd/ospf_vty.c:4689,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4695,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4701,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4714,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:4718,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:4722,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4724,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4727,1
    - Dst: show_ip_ospf_neighbor_common
      Src: /src/frr/ospfd/ospf_vty.c:4729,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4732,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4737,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4749,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4754,1
    - Dst: show_ip_ospf_neighbour_header
      Src: /src/frr/ospfd/ospf_vty.c:4756,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4760,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4763,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4766,1
    - Dst: show_ip_ospf_neighbor_sub
      Src: /src/frr/ospfd/ospf_vty.c:4770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4773,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4778,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4779,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:4782,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:4785,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4788,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4789,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4792,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4795,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4798,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:4800,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4805,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4808,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:4811,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:4819,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:4819,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4822,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4827,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4840,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:4850,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4853,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:4859,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4862,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4867,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:4872,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4875,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:4880,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4883,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4884,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4889,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4892,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/ospfd/ospf_vty.c:4893,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:4899,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:4904,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:4918,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:4922,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:4926,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:4928,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4930,1
    - Dst: show_ip_ospf_neighbor_all_common
      Src: /src/frr/ospfd/ospf_vty.c:4932,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4935,1
    - Dst: show_ip_ospf_neighbor_int_common
      Src: /src/frr/ospfd/ospf_vty.c:4940,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:4949,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:4953,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4956,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:4959,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_vty.c:4961,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:4964,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4966,1
    - Dst: CMD_WARNING
      Src: /src/frr/ospfd/ospf_vty.c:4967,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:4970,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:4970,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:4970,1
    - Dst: show_ip_ospf_neighbor_sub
      Src: /src/frr/ospfd/ospf_vty.c:4976,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:4980,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:4982,1
    - Dst: DEFPY
      Src: /src/frr/ospfd/ospf_vty.c:4987,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:5006,1
    - Dst: show_ip_ospf_neighbour_header
      Src: /src/frr/ospfd/ospf_vty.c:5011,1
    - Dst: show_ip_ospf_neighbor_int_common
      Src: /src/frr/ospfd/ospf_vty.c:5013,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 25
    argCount: 5
    argNames:
    - vty
    - ospf
    - json
    - use_json
    - use_vrf
    argTypes:
    - struct vty*
    - struct ospf*
    - json_object*
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5014
      start: 4566
    functionDepth: 5
    functionLinenumber: 4566
    functionLinenumberEnd: 5014
    functionName: show_ip_ospf_neighbor_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 2
    functionsReached:
    - ospf_interface_neighbor_count
    - use_json
    - CMD_WARNING
    - route_top
    - ospf_show_vrf_name
    - OSPF_FIND_VRF_ARGS
    - json_object_string_add
    - json_object_to_json_string_ext
    - DEFPY
    - show_ip_ospf_neighbor_common
    - ospf_lookup_by_vrf_id
    - ALL_LIST_ELEMENTS_RO
    - ospf_lookup_by_inst_name
    - ospf_lookup_instance
    - inet_ntop
    - ospf_get_name
    - DEFUN
    - show_ip_ospf_neighbor_int_common
    - vty_out
    - json_object_int_add
    - route_next
    - json_object_free
    - show_ip_ospf_neighbor_all_common
    - show_ip_ospf_neighbour_header
    - IF_NAME
    - json_object_new_object
    - show_ip_ospf_neighbor_sub
    - strtoul
    - if_lookup_by_name
    - CMD_SUCCESS
    - IF_OIFS
    - json_object_boolean_true_add
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_neighbor_common(struct vty *vty, struct ospf *ospf,\n\t\t\t\t\tjson_object
      *json, bool use_json,\n\t\t\t\t\tuint8_t use_vrf)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5025,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5027,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5031,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5034,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5039,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5040,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5041,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:5041,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5043,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5044,1
    - Dst: IF_NAME
      Src: /src/frr/ospfd/ospf_vty.c:5044,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5048,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5050,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5052,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5057,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5060,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5064,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5066,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:5072,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5074,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5078,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:5079,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5086,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5089,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5093,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 5
    argNames:
    - vty
    - oi
    - nbr_nbma
    - use_json
    - json
    argTypes:
    - struct vty*
    - struct ospf_interface*
    - struct ospf_nbr_nbma*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5094
      start: 5016
    functionDepth: 2
    functionLinenumber: 5016
    functionLinenumberEnd: 5094
    functionName: show_ip_ospf_nbr_nbma_detail_sub
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf_timer_dump
    - vty_out
    - ospf_area_desc_string
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - monotime_until
    - IF_NAME
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_nbr_nbma_detail_sub(struct vty *vty,\n\t\t\t\t\t
      \    struct ospf_interface *oi,\n\t\t\t\t\t     struct ospf_nbr_nbma *nbr_nbma,\n\t\t\t\t\t
      \    bool use_json, json_object *json)"
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_vty.c:5110,1
    - Dst: strlcpy
      Src: /src/frr/ospfd/ospf_vty.c:5116,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:5118,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospfd/ospf_vty.c:5121,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:5124,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5125,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5129,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5135,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5137,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5143,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5146,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5151,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5152,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5153,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5155,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5159,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:5160,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5162,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5165,1
    - Dst: ospf_nbr_ism_state_message
      Src: /src/frr/ospfd/ospf_vty.c:5169,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5171,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5172,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5173,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:5174,1
    - Dst: ospf_nbr_ism_state
      Src: /src/frr/ospfd/ospf_vty.c:5175,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5178,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:5181,1
    - Dst: ospf_nbr_ism_state
      Src: /src/frr/ospfd/ospf_vty.c:5181,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5186,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5189,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:5196,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5198,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5201,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5203,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:5204,1
    - Dst: monotime_since
      Src: /src/frr/ospfd/ospf_vty.c:5214,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5216,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5220,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5225,1
    - Dst: ospf_timeval_dump
      Src: /src/frr/ospfd/ospf_vty.c:5227,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_vty.c:5235,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5237,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_vty.c:5240,1
    - Dst: DR
      Src: /src/frr/ospfd/ospf_vty.c:5240,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5243,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5247,1
    - Dst: ospf_nbr_lookup_by_addr
      Src: /src/frr/ospfd/ospf_vty.c:5253,1
    - Dst: BDR
      Src: /src/frr/ospfd/ospf_vty.c:5253,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5256,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:5260,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5264,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5269,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5270,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_vty.c:5271,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5273,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_vty.c:5274,1
    - Dst: monotime_until
      Src: /src/frr/ospfd/ospf_vty.c:5280,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5283,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5287,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5291,1
    - Dst: ospf_timer_dump
      Src: /src/frr/ospfd/ospf_vty.c:5292,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5297,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:5298,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5300,1
    - Dst: ospf_db_summary_count
      Src: /src/frr/ospfd/ospf_vty.c:5301,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5305,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:5306,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5308,1
    - Dst: ospf_ls_request_count
      Src: /src/frr/ospfd/ospf_vty.c:5309,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5313,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:5315,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5317,1
    - Dst: ospf_ls_retransmit_count
      Src: /src/frr/ospfd/ospf_vty.c:5318,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5323,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5326,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5332,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5337,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5344,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5348,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5355,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5360,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5365,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_vty.c:5367,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5368,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5371,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5374,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5375,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5378,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5384,1
    - Dst: ospf_rejected_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5385,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5390,1
    - Dst: ospf_exit_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5391,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5394,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5396,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_vty.c:5397,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_vty.c:5400,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5401,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5404,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5406,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5412,1
    - Dst: ospf_rejected_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5414,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:5419,1
    - Dst: ospf_exit_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:5421,1
    - Dst: bfd_sess_show
      Src: /src/frr/ospfd/ospf_vty.c:5426,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:5429,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 153
    argCount: 6
    argNames:
    - vty
    - oi
    - nbr
    - prev_nbr
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf_interface*
    - struct ospf_neighbor*
    - struct ospf_neighbor*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5431
      start: 5096
    functionDepth: 3
    functionLinenumber: 5096
    functionLinenumberEnd: 5431
    functionName: show_ip_ospf_neighbor_detail_sub
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - ospf_nbr_ism_state
    - ospf_nbr_lookup_by_addr
    - ospf_options_dump
    - ospf_timeval_dump
    - IPV4_ADDR_SAME
    - json_object_string_add
    - BDR
    - json_object_string_addf
    - lookup_msg
    - OSPF_GR_IS_ACTIVE_HELPER
    - ospf_area_desc_string
    - ospf_restart_reason2str
    - inet_ntop
    - ospf_ls_request_count
    - ospf_ls_retransmit_count
    - ospf_db_summary_count
    - DR
    - vty_out
    - bfd_sess_show
    - strlcpy
    - json_object_int_add
    - monotime_since
    - monotime_until
    - json_object_new_array
    - json_object_new_object
    - ospf_timer_dump
    - json_object_array_add
    - ospf_rejected_reason2str
    - json_object_object_get_ex
    - json_object_object_add
    - ospf_exit_reason2str
    - ospf_nbr_ism_state_message
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_neighbor_detail_sub(struct vty *vty,\n\t\t\t\t\t
      \    struct ospf_interface *oi,\n\t\t\t\t\t     struct ospf_neighbor *nbr,\n\t\t\t\t\t
      \    struct ospf_neighbor *prev_nbr,\n\t\t\t\t\t     json_object *json, bool
      use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5445,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5449,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5452,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:5455,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:5457,1
    - Dst: ospf_nbr_lookup_by_routerid
      Src: /src/frr/ospfd/ospf_vty.c:5458,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:5460,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:5463,1
    - Dst: show_ip_ospf_neighbor_detail_sub
      Src: /src/frr/ospfd/ospf_vty.c:5464,1
    - Dst: show_ip_ospf_neighbour_brief
      Src: /src/frr/ospfd/ospf_vty.c:5467,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5472,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:5476,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:5480,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5482,1
    - Dst: DEFPY
      Src: /src/frr/ospfd/ospf_vty.c:5487,1
    - Dst: strmatch
      Src: /src/frr/ospfd/ospf_vty.c:5504,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:5505,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 7
    argNames:
    - vty
    - ospf
    - router_id
    - use_json
    - use_vrf
    - is_detail
    - json_vrf
    argTypes:
    - struct vty*
    - struct ospf*
    - struct in_addr*
    - bool
    - uint8_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5514
      start: 5433
    functionDepth: 4
    functionLinenumber: 5433
    functionLinenumberEnd: 5514
    functionName: show_ip_ospf_neighbor_id_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - strmatch
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - ospf_lookup_by_inst_name
    - DEFPY
    - ospf_show_vrf_name
    - CMD_SUCCESS
    - json_object_int_add
    - ospf_nbr_lookup_by_routerid
    - json_object_object_add
    - if
    - show_ip_ospf_neighbour_brief
    - vty_json
    - show_ip_ospf_neighbor_detail_sub
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_neighbor_id_common(struct vty *vty, struct ospf *ospf,\n\t\t\t\t\t
      \  struct in_addr *router_id,\n\t\t\t\t\t   bool use_json, uint8_t use_vrf,\n\t\t\t\t\t
      \  bool is_detail,\n\t\t\t\t\t   json_object *json_vrf)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5570,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5574,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5579,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5582,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:5585,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:5587,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_vty.c:5591,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:5591,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:5591,1
    - Dst: show_ip_ospf_neighbor_detail_sub
      Src: /src/frr/ospfd/ospf_vty.c:5599,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - vty
    - ospf
    - json
    - use_json
    - use_vrf
    argTypes:
    - struct vty*
    - struct ospf*
    - json_object*
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5606
      start: 5558
    functionDepth: 4
    functionLinenumber: 5558
    functionLinenumberEnd: 5606
    functionName: show_ip_ospf_neighbor_detail_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - ospf_show_vrf_name
    - json_object_int_add
    - route_next
    - for
    - show_ip_ospf_neighbor_detail_sub
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_neighbor_detail_common(struct vty *vty,\n\t\t\t\t\t
      \      struct ospf *ospf,\n\t\t\t\t\t       json_object *json, bool use_json,\n\t\t\t\t\t
      \      uint8_t use_vrf)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5738,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5745,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5748,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:5751,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:5753,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_vty.c:5758,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:5758,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:5758,1
    - Dst: show_ip_ospf_neighbor_detail_sub
      Src: /src/frr/ospfd/ospf_vty.c:5766,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:5777,1
    - Dst: show_ip_ospf_nbr_nbma_detail_sub
      Src: /src/frr/ospfd/ospf_vty.c:5780,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:5786,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5787,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:5787,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5790,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:5796,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:5810,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:5820,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5823,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:5829,1
    - Dst: show_ip_ospf_neighbor_detail_all_common
      Src: /src/frr/ospfd/ospf_vty.c:5832,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:5837,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:5841,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:5844,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:5849,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:5852,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:5853,1
    - Dst: show_ip_ospf_neighbor_detail_all_common
      Src: /src/frr/ospfd/ospf_vty.c:5858,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5861,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/ospfd/ospf_vty.c:5862,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:5868,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:5873,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:5888,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:5892,1
    - Dst: ospf_lookup_instance
      Src: /src/frr/ospfd/ospf_vty.c:5896,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/ospfd/ospf_vty.c:5898,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5901,1
    - Dst: show_ip_ospf_neighbor_detail_all_common
      Src: /src/frr/ospfd/ospf_vty.c:5903,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:5906,1
    - Dst: show_ip_ospf_neighbor_int_detail_common
      Src: /src/frr/ospfd/ospf_vty.c:5911,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:5924,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:5926,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:5935,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5938,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospfd/ospf_vty.c:5941,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5944,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:5947,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:5952,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:5952,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:5952,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:5958,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:5958,1
    - Dst: show_ip_ospf_neighbor_detail_sub
      Src: /src/frr/ospfd/ospf_vty.c:5970,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:5977,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:5979,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 68
    argCount: 5
    argNames:
    - vty
    - ospf
    - json
    - use_json
    - use_vrf
    argTypes:
    - struct vty*
    - struct ospf*
    - json_object*
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5983
      start: 5726
    functionDepth: 4
    functionLinenumber: 5726
    functionLinenumberEnd: 5983
    functionName: show_ip_ospf_neighbor_detail_all_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - use_json
    - route_top
    - ospf_show_vrf_name
    - OSPF_FIND_VRF_ARGS
    - json_object_to_json_string_ext
    - ospf_lookup_by_vrf_id
    - ALL_LIST_ELEMENTS_RO
    - ospf_lookup_by_inst_name
    - ospf_lookup_instance
    - if
    - for
    - ospf_get_name
    - DEFUN
    - vty_out
    - json_object_int_add
    - route_next
    - json_object_free
    - show_ip_ospf_neighbor_detail_all_common
    - json_object_new_object
    - strtoul
    - if_lookup_by_name
    - CMD_SUCCESS
    - IF_OIFS
    - show_ip_ospf_nbr_nbma_detail_sub
    - json_object_object_add
    - vty_json
    - show_ip_ospf_neighbor_detail_sub
    - show_ip_ospf_neighbor_int_detail_common
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_neighbor_detail_all_common(struct vty *vty,\n\t\t\t\t\t\t
      \  struct ospf *ospf,\n\t\t\t\t\t\t   json_object *json,\n\t\t\t\t\t\t   bool
      use_json,\n\t\t\t\t\t\t   uint8_t use_vrf)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_vty.c:6129,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6133,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6134,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_vty.c:6135,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6136,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6137,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:6142,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6143,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:6144,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6145,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6146,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6148,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6150,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_vty.c:6150,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6151,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6153,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6162,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6162,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6164,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6166,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6173,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_vty.c:6174,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6177,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6179,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6189,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/ospfd/ospf_vty.c:6190,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6193,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6194,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6198,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6201,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6203,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6206,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6208,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6210,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6224,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 60
    argCount: 4
    argNames:
    - vty
    - lsa
    - self
    - json_lsa
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - int
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6228
      start: 6117
    functionDepth: 1
    functionLinenumber: 6117
    functionLinenumberEnd: 6228
    functionName: show_lsa_summary
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - IS_EXTERNAL_METRIC
    - apply_mask_ipv4
    - vty_out
    - snprintf
    - ip_masklen
    - json_object_int_add
    - LS_AGE
    - ntohs
    - json_object_string_add
    - json_object_string_addf
    - ntohl
    - IS_LSA_SELF
    linkageType: ''
    returnType: int
    signature: "int show_lsa_summary(struct vty *vty, struct ospf_lsa *lsa, int self,\n\t\t\t
      \   json_object *json_lsa)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IS_LSA_SELF
      Src: /src/frr/ospfd/ospf_vty.c:6296,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6297,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_vty.c:6297,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:6298,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6302,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_vty.c:6302,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:6303,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6306,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_vty.c:6307,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6308,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6314,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6317,1
    - Dst: IS_ROUTER_LSA_BORDER
      Src: /src/frr/ospfd/ospf_vty.c:6318,1
    - Dst: IS_ROUTER_LSA_EXTERNAL
      Src: /src/frr/ospfd/ospf_vty.c:6320,1
    - Dst: IS_ROUTER_LSA_VIRTUAL
      Src: /src/frr/ospfd/ospf_vty.c:6322,1
    - Dst: IS_ROUTER_LSA_SHORTCUT
      Src: /src/frr/ospfd/ospf_vty.c:6325,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6329,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6331,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:6332,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6333,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:6335,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6337,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6339,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6340,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6341,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6342,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6343,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6343,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:6348,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6348,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:6349,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6349,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6351,1
    - Dst: LS_AGE
      Src: /src/frr/ospfd/ospf_vty.c:6351,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6352,1
    - Dst: ospf_options_dump
      Src: /src/frr/ospfd/ospf_vty.c:6353,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6354,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:6357,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6361,1
    - Dst: IS_ROUTER_LSA_BORDER
      Src: /src/frr/ospfd/ospf_vty.c:6364,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:6365,1
    - Dst: IS_ROUTER_LSA_EXTERNAL
      Src: /src/frr/ospfd/ospf_vty.c:6367,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:6368,1
    - Dst: IS_ROUTER_LSA_VIRTUAL
      Src: /src/frr/ospfd/ospf_vty.c:6370,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:6371,1
    - Dst: IS_ROUTER_LSA_SHORTCUT
      Src: /src/frr/ospfd/ospf_vty.c:6373,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:6374,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6379,1
    - Dst: lookup_msg
      Src: /src/frr/ospfd/ospf_vty.c:6381,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6382,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6384,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6386,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6387,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6388,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6388,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6390
      start: 6290
    functionDepth: 1
    functionLinenumber: 6290
    functionLinenumberEnd: 6390
    functionName: show_ip_ospf_database_header
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - snprintf
    - ospf_options_dump
    - CHECK_FLAG
    - ntohl
    - json_object_int_add
    - LS_AGE
    - ntohs
    - json_object_boolean_true_add
    - IS_ROUTER_LSA_EXTERNAL
    - json_object_string_add
    - IS_ROUTER_LSA_BORDER
    - IS_ROUTER_LSA_VIRTUAL
    - json_object_string_addf
    - IS_ROUTER_LSA_SHORTCUT
    - lookup_msg
    - IS_LSA_SELF
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_database_header(struct vty *vty, struct ospf_lsa
      *lsa,\n\t\t\t\t\t json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6433,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6435,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6436,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:6442,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6443,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6444,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6446,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:6448,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6451,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:6453,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6455,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6457,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6458,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6459,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6461,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6463,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6466,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6469,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6470,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6471,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6472,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6476,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - vty
    - rl
    - json
    argTypes:
    - struct vty*
    - struct router_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6477
      start: 6421
    functionDepth: 1
    functionLinenumber: 6421
    functionLinenumberEnd: 6477
    functionName: show_ip_ospf_database_router_links
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - snprintf
    - json_object_int_add
    - ntohs
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_database_router_links(struct vty *vty,\n\t\t\t\t\t
      \      struct router_lsa *rl,\n\t\t\t\t\t       json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_ospf_database_header
      Src: /src/frr/ospfd/ospf_vty.c:6486,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6489,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6490,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6492,1
    - Dst: ntohs
      Src: /src/frr/ospfd/ospf_vty.c:6493,1
    - Dst: show_ip_ospf_database_router_links
      Src: /src/frr/ospfd/ospf_vty.c:6495,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6502
      start: 6480
    functionDepth: 2
    functionLinenumber: 6480
    functionLinenumberEnd: 6502
    functionName: show_router_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - show_ip_ospf_database_router_links
    - show_ip_ospf_database_header
    - json_object_int_add
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int show_router_lsa_detail(struct vty *vty, struct ospf_lsa *lsa,\n\t\t\t\t
      \ json_object *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6514,1
    - Dst: show_ip_ospf_database_header
      Src: /src/frr/ospfd/ospf_vty.c:6520,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6523,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6524,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6526,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6527,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6534,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6536,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6538,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6539,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:6541,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6543,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:6544,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6552,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6556
      start: 6505
    functionDepth: 2
    functionLinenumber: 6505
    functionLinenumberEnd: 6556
    functionName: show_network_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - show_ip_ospf_database_header
    - ip_masklen
    - json_object_int_add
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: int
    signature: "int show_network_lsa_detail(struct vty *vty, struct ospf_lsa *lsa,\n\t\t\t\t
      \  json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_ospf_database_header
      Src: /src/frr/ospfd/ospf_vty.c:6565,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6568,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6569,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6570,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6571,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6572,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6574,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6575,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6576,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6582
      start: 6559
    functionDepth: 2
    functionLinenumber: 6559
    functionLinenumberEnd: 6582
    functionName: show_summary_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - GET_METRIC
    - show_ip_ospf_database_header
    - ip_masklen
    - json_object_int_add
    linkageType: ''
    returnType: int
    signature: "int show_summary_lsa_detail(struct vty *vty, struct ospf_lsa *lsa,\n\t\t\t\t
      \  json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_ospf_database_header
      Src: /src/frr/ospfd/ospf_vty.c:6591,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6594,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6595,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6596,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6597,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6598,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6600,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6601,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6602,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6603,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6608
      start: 6585
    functionDepth: 2
    functionLinenumber: 6585
    functionLinenumberEnd: 6608
    functionName: show_summary_asbr_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - GET_METRIC
    - show_ip_ospf_database_header
    - ip_masklen
    - json_object_int_add
    linkageType: ''
    returnType: int
    signature: "int show_summary_asbr_lsa_detail(struct vty *vty, struct ospf_lsa
      *lsa,\n\t\t\t\t\tjson_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_ospf_database_header
      Src: /src/frr/ospfd/ospf_vty.c:6620,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6623,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6624,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6625,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6626,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6629,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6630,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6631,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6632,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6634,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6636,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6638,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6639,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6640,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6642,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6645,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6646,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6647,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6648,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6650,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6652,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6657
      start: 6611
    functionDepth: 2
    functionLinenumber: 6611
    functionLinenumberEnd: 6657
    functionName: show_as_external_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - IS_EXTERNAL_METRIC
    - vty_out
    - GET_METRIC
    - show_ip_ospf_database_header
    - ip_masklen
    - json_object_int_add
    - json_object_string_add
    - json_object_string_addf
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int show_as_external_lsa_detail(struct vty *vty, struct ospf_lsa *lsa,\n\t\t\t\t
      \      json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_ospf_database_header
      Src: /src/frr/ospfd/ospf_vty.c:6669,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6672,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6673,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6674,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6675,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6678,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6679,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6680,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6681,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6683,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6686,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6688,1
    - Dst: ip_masklen
      Src: /src/frr/ospfd/ospf_vty.c:6689,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:6690,1
    - Dst: IS_EXTERNAL_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6692,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6695,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6696,1
    - Dst: GET_METRIC
      Src: /src/frr/ospfd/ospf_vty.c:6697,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:6698,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:6700,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:6702,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6707
      start: 6660
    functionDepth: 2
    functionLinenumber: 6660
    functionLinenumberEnd: 6707
    functionName: show_as_nssa_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - IS_EXTERNAL_METRIC
    - vty_out
    - GET_METRIC
    - show_ip_ospf_database_header
    - ip_masklen
    - json_object_int_add
    - json_object_string_add
    - json_object_string_addf
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int show_as_nssa_lsa_detail(struct vty *vty, struct ospf_lsa *lsa,\n\t\t\t\t
      \  json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6713
      start: 6709
    functionDepth: 0
    functionLinenumber: 6709
    functionLinenumberEnd: 6713
    functionName: show_func_dummy
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int show_func_dummy(struct vty *vty, struct ospf_lsa *lsa,\n\t\t\t
      \  json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: show_ip_ospf_database_header
      Src: /src/frr/ospfd/ospf_vty.c:6719,1
    - Dst: show_opaque_info_detail
      Src: /src/frr/ospfd/ospf_vty.c:6720,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6722,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - lsa
    - json
    argTypes:
    - struct vty*
    - struct ospf_lsa*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6725
      start: 6715
    functionDepth: 2
    functionLinenumber: 6715
    functionLinenumberEnd: 6725
    functionName: show_opaque_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - show_ip_ospf_database_header
    - show_opaque_info_detail
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int show_opaque_lsa_detail(struct vty *vty, struct ospf_lsa *lsa,\n\t\t\t\t
      \ json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospfd/ospf_vty.c:6745,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - lp
    - id
    - adv_router
    argTypes:
    - struct vty*
    - struct prefix_ls*
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6757
      start: 6742
    functionDepth: 0
    functionLinenumber: 6742
    functionLinenumberEnd: 6757
    functionName: show_lsa_prefix_set
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void show_lsa_prefix_set(struct vty *vty, struct prefix_ls *lp,\n\t\t\t\tstruct
      in_addr *id, struct in_addr *adv_router)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: show_lsa_prefix_set
      Src: /src/frr/ospfd/ospf_vty.c:6768,1
    - Dst: route_node_get
      Src: /src/frr/ospfd/ospf_vty.c:6769,1
    - Dst: route_lock_node
      Src: /src/frr/ospfd/ospf_vty.c:6771,1
    - Dst: route_next_until
      Src: /src/frr/ospfd/ospf_vty.c:6772,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6777,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:6778,1
    - Dst: route_unlock_node
      Src: /src/frr/ospfd/ospf_vty.c:6786,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - vty
    - rt
    - id
    - adv_router
    - json
    argTypes:
    - struct vty*
    - struct route_table*
    - struct in_addr*
    - struct in_addr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6788
      start: 6759
    functionDepth: 1
    functionLinenumber: 6759
    functionLinenumberEnd: 6788
    functionName: show_lsa_detail_proc
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - show_lsa_prefix_set
    - route_unlock_node
    - route_lock_node
    - json_object_array_add
    - route_node_get
    - route_next_until
    linkageType: ''
    returnType: void
    signature: "void show_lsa_detail_proc(struct vty *vty, struct route_table *rt,\n\t\t\t\t
      struct in_addr *id, struct in_addr *adv_router,\n\t\t\t\t json_object *json)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6807,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:6810,1
    - Dst: show_lsa_detail_proc
      Src: /src/frr/ospfd/ospf_vty.c:6812,1
    - Dst: AS_LSDB
      Src: /src/frr/ospfd/ospf_vty.c:6812,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6815,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6822,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:6824,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6826,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:6829,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:6831,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6832,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:6833,1
    - Dst: show_lsa_detail_proc
      Src: /src/frr/ospfd/ospf_vty.c:6840,1
    - Dst: AREA_LSDB
      Src: /src/frr/ospfd/ospf_vty.c:6840,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6845,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6846,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6848,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 6
    argNames:
    - vty
    - ospf
    - type
    - id
    - adv_router
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - int
    - struct in_addr*
    - struct in_addr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6854
      start: 6792
    functionDepth: 2
    functionLinenumber: 6792
    functionLinenumberEnd: 6854
    functionName: show_lsa_detail
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - ospf_area_desc_string
    - inet_ntop
    - json_object_object_add
    - AREA_LSDB
    - show_lsa_detail_proc
    - AS_LSDB
    linkageType: ''
    returnType: void
    signature: "void show_lsa_detail(struct vty *vty, struct ospf *ospf, int type,\n\t\t\t
      \   struct in_addr *id, struct in_addr *adv_router,\n\t\t\t    json_object *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:6865,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:6865,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ospfd/ospf_vty.c:6867,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:6869,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6872,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:6873,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - vty
    - rt
    - adv_router
    - json
    argTypes:
    - struct vty*
    - struct route_table*
    - struct in_addr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6881
      start: 6856
    functionDepth: 1
    functionLinenumber: 6856
    functionLinenumberEnd: 6881
    functionName: show_lsa_detail_adv_router_proc
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_array_add
    - CHECK_FLAG
    - route_top
    - route_next
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: void
    signature: "void show_lsa_detail_adv_router_proc(struct vty *vty,\n\t\t\t\t\t
      \   struct route_table *rt,\n\t\t\t\t\t    struct in_addr *adv_router,\n\t\t\t\t\t
      \   json_object *json)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6896,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6902,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:6905,1
    - Dst: show_lsa_detail_adv_router_proc
      Src: /src/frr/ospfd/ospf_vty.c:6907,1
    - Dst: AS_LSDB
      Src: /src/frr/ospfd/ospf_vty.c:6907,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6910,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6916,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:6918,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6920,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:6923,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:6925,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6926,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:6928,1
    - Dst: show_lsa_detail_adv_router_proc
      Src: /src/frr/ospfd/ospf_vty.c:6933,1
    - Dst: AREA_LSDB
      Src: /src/frr/ospfd/ospf_vty.c:6934,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6939,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6941,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 5
    argNames:
    - vty
    - ospf
    - type
    - adv_router
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - int
    - struct in_addr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6947
      start: 6884
    functionDepth: 2
    functionLinenumber: 6884
    functionLinenumberEnd: 6947
    functionName: show_lsa_detail_adv_router
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - show_lsa_detail_adv_router_proc
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - ospf_area_desc_string
    - inet_ntop
    - json_object_object_add
    - AREA_LSDB
    - AS_LSDB
    linkageType: ''
    returnType: void
    signature: "void show_lsa_detail_adv_router(struct vty *vty, struct ospf *ospf,\n\t\t\t\t
      \      int type, struct in_addr *adv_router,\n\t\t\t\t       json_object *json)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6965,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:6967,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:6969,1
    - Dst: ospf_lsdb_count_self
      Src: /src/frr/ospfd/ospf_vty.c:6980,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:6982,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6985,1
    - Dst: ospf_area_desc_string
      Src: /src/frr/ospfd/ospf_vty.c:6988,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:6989,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:6993,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:6994,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:7003,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:7004,1
    - Dst: show_lsa_summary
      Src: /src/frr/ospfd/ospf_vty.c:7009,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7014,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:7016,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7025,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:7026,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7033,1
    - Dst: ospf_lsdb_count_self
      Src: /src/frr/ospfd/ospf_vty.c:7044,1
    - Dst: ospf_lsdb_count
      Src: /src/frr/ospfd/ospf_vty.c:7045,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7047,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7049,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:7052,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7053,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:7060,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:7061,1
    - Dst: show_lsa_summary
      Src: /src/frr/ospfd/ospf_vty.c:7065,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7070,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:7072,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7080,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 68
    argCount: 4
    argNames:
    - vty
    - ospf
    - self
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - int
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7081
      start: 6949
    functionDepth: 2
    functionLinenumber: 6949
    functionLinenumberEnd: 7081
    functionName: show_ip_ospf_database_summary
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - show_lsa_summary
    - vty_out
    - json_object_array_add
    - ALL_LIST_ELEMENTS_RO
    - ospf_lsdb_count
    - ospf_area_desc_string
    - json_object_int_add
    - inet_ntop
    - json_object_object_add
    - ospf_lsdb_count_self
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_database_summary(struct vty *vty, struct ospf *ospf,
      int self,\n\t\t\t\t   json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:7003,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:7004,1
    - Dst: show_lsa_summary
      Src: /src/frr/ospfd/ospf_vty.c:7009,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7011
      start: 7000
    functionDepth: 2
    functionLinenumber: 7000
    functionLinenumberEnd: 7011
    functionName: LSDB_LOOP
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 18
    functionsReached:
    - json_object_new_object
    - show_lsa_summary
    - json_object_array_add
    linkageType: ''
    returnType: void
    signature: void LSDB_LOOP (AREA_LSDB(area, type), rn, lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:7060,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:7061,1
    - Dst: show_lsa_summary
      Src: /src/frr/ospfd/ospf_vty.c:7065,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7067
      start: 7058
    functionDepth: 2
    functionLinenumber: 7058
    functionLinenumberEnd: 7067
    functionName: LSDB_LOOP
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 18
    functionsReached:
    - json_object_new_object
    - show_lsa_summary
    - json_object_array_add
    linkageType: ''
    returnType: void
    signature: void LSDB_LOOP (AS_LSDB(ospf, type), rn, lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7091,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:7093,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:7095,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:7095,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7101,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7103,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7105,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7107,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7108,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:7110,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:7111,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:7113,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:7115,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:7118,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7120,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:7122,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - vty
    - ospf
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7131
      start: 7083
    functionDepth: 1
    functionLinenumber: 7083
    functionLinenumberEnd: 7131
    functionName: show_ip_ospf_database_maxage
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - route_top
    - json_object_int_add
    - route_next
    - inet_ntop
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_database_maxage(struct vty *vty, struct ospf *ospf,\n\t\t\t\t\t
      json_object *json)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:7161,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:7168,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7171,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:7174,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:7178,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7181,1
    - Dst: show_ip_ospf_database_maxage
      Src: /src/frr/ospfd/ospf_vty.c:7187,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7191,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7194,1
    - Dst: show_lsa_detail_adv_router
      Src: /src/frr/ospfd/ospf_vty.c:7216,1
    - Dst: show_lsa_detail
      Src: /src/frr/ospfd/ospf_vty.c:7220,1
    - Dst: show_ip_ospf_database_summary
      Src: /src/frr/ospfd/ospf_vty.c:7224,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7230,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7233,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7241,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7243,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7245,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7247,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7249,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7251,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7253,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7255,1
    - Dst: strncmp
      Src: /src/frr/ospfd/ospf_vty.c:7257,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:7262,1
    - Dst: show_lsa_detail_adv_router
      Src: /src/frr/ospfd/ospf_vty.c:7268,1
    - Dst: show_lsa_detail
      Src: /src/frr/ospfd/ospf_vty.c:7271,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7276,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:7279,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 88
    argCount: 11
    argNames:
    - vty
    - ospf
    - maxage
    - self
    - detail
    - type_name
    - lsid
    - adv_router
    - use_vrf
    - json
    - uj
    argTypes:
    - struct vty*
    - struct ospf*
    - bool
    - bool
    - bool
    - char*
    - struct in_addr*
    - struct in_addr*
    - bool
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7285
      start: 7150
    functionDepth: 3
    functionLinenumber: 7150
    functionLinenumberEnd: 7285
    functionName: show_ip_ospf_database_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - show_lsa_detail_adv_router
    - show_lsa_detail
    - ospf_show_vrf_name
    - json_object_int_add
    - strncmp
    - json_object_free
    - show_ip_ospf_database_maxage
    - json_object_object_add
    - show_ip_ospf_database_summary
    - json_object_string_addf
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_database_common(struct vty *vty, struct ospf *ospf,
      bool maxage,\n\t\t\t     bool self, bool detail, const char *type_name,\n\t\t\t
      \    struct in_addr *lsid, struct in_addr *adv_router,\n\t\t\t     bool use_vrf,
      json_object *json, bool uj)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:7967,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:7967,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:7973,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:7974,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:7975,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:7976,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7978
      start: 7962
    functionDepth: 1
    functionLinenumber: 7962
    functionLinenumberEnd: 7978
    functionName: ospf_nbr_timer_update
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - OSPF_IF_PARAM
    - route_top
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf_nbr_timer_update(struct ospf_interface *oi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ospfd/ospf_vty.c:7984,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:7993,1
    - Dst: inet_aton
      Src: /src/frr/ospfd/ospf_vty.c:7996,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:7998,1
    - Dst: ospf_get_if_params
      Src: /src/frr/ospfd/ospf_vty.c:8003,1
    - Dst: ospf_if_update_params
      Src: /src/frr/ospfd/ospf_vty.c:8004,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:8008,1
    - Dst: UNSET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:8011,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:8014,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:8017,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:8020,1
    - Dst: SET_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:8025,1
    - Dst: ospf_if_lookup_by_local_addr
      Src: /src/frr/ospfd/ospf_vty.c:8035,1
    - Dst: ospf_nbr_timer_update
      Src: /src/frr/ospfd/ospf_vty.c:8037,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:8040,1
    - Dst: IF_OIFS
      Src: /src/frr/ospfd/ospf_vty.c:8040,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:8040,1
    - Dst: ospf_nbr_timer_update
      Src: /src/frr/ospfd/ospf_vty.c:8042,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 4
    argNames:
    - vty
    - interval_str
    - nbr_str
    - fast_hello_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8046
      start: 7980
    functionDepth: 3
    functionLinenumber: 7980
    functionLinenumberEnd: 8046
    functionName: ospf_vty_dead_interval_set
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - strtoul
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - inet_aton
    - UNSET_IF_PARAM
    - route_top
    - ospf_nbr_timer_update
    - IF_DEF_PARAMS
    - IF_OIFS
    - route_next
    - SET_IF_PARAM
    - ospf_get_if_params
    - ospf_if_lookup_by_local_addr
    - ospf_if_update_params
    linkageType: ''
    returnType: int
    signature: "int ospf_vty_dead_interval_set(struct vty *vty, const char *interval_str,\n\t\t\t\t
      \     const char *nbr_str,\n\t\t\t\t      const char *fast_hello_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10071,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10075,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10078
      start: 10064
    functionDepth: 1
    functionLinenumber: 10064
    functionLinenumberEnd: 10078
    functionName: ospf_print_vty_helper_dis_rtr_walkcb
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int ospf_print_vty_helper_dis_rtr_walkcb(struct hash_bucket *bucket,\n\t\t\t\t\t\tvoid
      *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10087,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:10089,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:10090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10093
      start: 10080
    functionDepth: 1
    functionLinenumber: 10080
    functionLinenumberEnd: 10093
    functionName: ospf_print_json_helper_enabled_rtr_walkcb
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_array_add
    - json_object_string_addf
    linkageType: ''
    returnType: int
    signature: "int ospf_print_json_helper_enabled_rtr_walkcb(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      \    void *arg)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10106,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10113,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10116,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:10119,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10123,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:10123,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10126,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10130,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:10131,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10134,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10141,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10144,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10148,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10150,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10153,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10156,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10159,1
    - Dst: OSPF_HELPER_ENABLE_RTR_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:10163,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10164,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10165,1
    - Dst: hash_walk
      Src: /src/frr/ospfd/ospf_vty.c:10166,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10168,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10172,1
    - Dst: ospf_exit_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:10173,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10177,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10181,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10184,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10187,1
    - Dst: CPP_NOTICE
      Src: /src/frr/ospfd/ospf_vty.c:10191,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10193,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10199,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10205,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10209,1
    - Dst: ospf_exit_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:10211,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10214,1
    - Dst: OSPF_HELPER_ENABLE_RTR_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:10217,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:10219,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10221,1
    - Dst: hash_walk
      Src: /src/frr/ospfd/ospf_vty.c:10224,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:10235,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:10240,1
    - Dst: ospf_interface_neighbor_count
      Src: /src/frr/ospfd/ospf_vty.c:10240,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospfd/ospf_vty.c:10244,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10248,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10249,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:10255,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:10256,1
    - Dst: OSPF_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospfd/ospf_vty.c:10263,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10267,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10268,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10270,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10272,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10276,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10280,1
    - Dst: event_timer_remain_second
      Src: /src/frr/ospfd/ospf_vty.c:10282,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10285,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:10287,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10292,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10293,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:10295,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10298,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:10300,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10303,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10308,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10313,1
    - Dst: event_timer_remain_second
      Src: /src/frr/ospfd/ospf_vty.c:10315,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10318,1
    - Dst: ospf_restart_reason2str
      Src: /src/frr/ospfd/ospf_vty.c:10320,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10323,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:10325,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:10335,1
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_vty.c:10342,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/ospfd/ospf_vty.c:10347,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_vty.c:10349,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10350,1
    - Dst: apply_mask
      Src: /src/frr/ospfd/ospf_vty.c:10356,1
    - Dst: is_valid_summary_addr
      Src: /src/frr/ospfd/ospf_vty.c:10358,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10359,1
    - Dst: ospf_asbr_external_rt_no_advertise
      Src: /src/frr/ospfd/ospf_vty.c:10363,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10365,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:10370,1
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_vty.c:10378,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/ospfd/ospf_vty.c:10383,1
    - Dst: is_default_prefix4
      Src: /src/frr/ospfd/ospf_vty.c:10385,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10386,1
    - Dst: apply_mask
      Src: /src/frr/ospfd/ospf_vty.c:10392,1
    - Dst: is_valid_summary_addr
      Src: /src/frr/ospfd/ospf_vty.c:10394,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10395,1
    - Dst: ospf_asbr_external_rt_advertise
      Src: /src/frr/ospfd/ospf_vty.c:10399,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10401,1
    - Dst: DEFUN
      Src: /src/frr/ospfd/ospf_vty.c:10406,1
    - Dst: VTY_DECLVAR_INSTANCE_CONTEXT
      Src: /src/frr/ospfd/ospf_vty.c:10413,1
    - Dst: strtoul
      Src: /src/frr/ospfd/ospf_vty.c:10416,1
    - Dst: ospf_external_aggregator_timer_set
      Src: /src/frr/ospfd/ospf_vty.c:10418,1
    - Dst: DEFPY
      Src: /src/frr/ospfd/ospf_vty.c:10423,1
    - Dst: use_json
      Src: /src/frr/ospfd/ospf_vty.c:10442,1
    - Dst: OSPF_FIND_VRF_ARGS
      Src: /src/frr/ospfd/ospf_vty.c:10449,1
    - Dst: argv_find
      Src: /src/frr/ospfd/ospf_vty.c:10451,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10455,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:10462,1
    - Dst: ospf_show_gr_helper_details
      Src: /src/frr/ospfd/ospf_vty.c:10466,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:10471,1
    - Dst: ospf_lookup_by_inst_name
      Src: /src/frr/ospfd/ospf_vty.c:10476,1
    - Dst: vty_json
      Src: /src/frr/ospfd/ospf_vty.c:10481,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10483,1
    - Dst: ospf_lookup_by_vrf_id
      Src: /src/frr/ospfd/ospf_vty.c:10492,1
    - Dst: ospf_show_gr_helper_details
      Src: /src/frr/ospfd/ospf_vty.c:10505,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 68
    argCount: 6
    argNames:
    - vty
    - ospf
    - use_vrf
    - json
    - uj
    - detail
    argTypes:
    - struct vty*
    - struct ospf*
    - uint8_t
    - json_object*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10507
      start: 10095
    functionDepth: 3
    functionLinenumber: 10095
    functionLinenumberEnd: 10507
    functionName: ospf_show_gr_helper_details
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - ospf_interface_neighbor_count
    - use_json
    - route_top
    - ospf_show_vrf_name
    - OSPF_FIND_VRF_ARGS
    - json_object_string_add
    - hash_walk
    - DEFPY
    - VTY_DECLVAR_INSTANCE_CONTEXT
    - ospf_show_gr_helper_details
    - OSPF_HELPER_ENABLE_RTR_COUNT
    - OSPF_GR_IS_ACTIVE_HELPER
    - ospf_lookup_by_vrf_id
    - ALL_LIST_ELEMENTS_RO
    - ospf_lookup_by_inst_name
    - ospf_restart_reason2str
    - ospf_external_aggregator_timer_set
    - inet_ntop
    - if
    - ospf_get_name
    - CPP_NOTICE
    - DEFUN
    - vty_out
    - apply_mask
    - json_object_int_add
    - route_next
    - event_timer_remain_second
    - ospf_asbr_external_rt_advertise
    - is_default_prefix4
    - argv_find
    - json_object_new_object
    - json_object_new_array
    - str2prefix_ipv4
    - strtoul
    - json_object_object_get_ex
    - ospf_asbr_external_rt_no_advertise
    - is_valid_summary_addr
    - json_object_object_add
    - ospf_exit_reason2str
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int ospf_show_gr_helper_details(struct vty *vty, struct ospf *ospf,\n\t\t\t\t
      \      uint8_t use_vrf, json_object *json,\n\t\t\t\t       bool uj, bool detail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10534,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10537,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10540,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - ospf
    argTypes:
    - struct vty*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10543
      start: 10531
    functionDepth: 1
    functionLinenumber: 10531
    functionLinenumberEnd: 10543
    functionName: config_write_stub_router
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void config_write_stub_router(struct vty *vty, struct ospf *ospf)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10557,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:10560,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:10560,1
    - Dst: prefix2str
      Src: /src/frr/ospfd/ospf_vty.c:10566,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10569,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10570,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10577,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10580,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:10582,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10586,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10593,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10597,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10605,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10607,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:10609,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10613,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:10624,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10625,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_vty.c:10629,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10632,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:10633,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ospfd/ospf_vty.c:10637,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10643,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10646,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10649,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10653,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10656,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:10662,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10666,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10669,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10673,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10677,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10687,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 73
    argCount: 4
    argNames:
    - vty
    - ospf
    - rt
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - struct route_table*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10688
      start: 10545
    functionDepth: 1
    functionLinenumber: 10545
    functionLinenumberEnd: 10688
    functionName: show_ip_ospf_route_network
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - json_object_new_array
    - if_lookup_by_index
    - ifindex2ifname
    - vty_out
    - json_object_array_add
    - route_top
    - route_next
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_route_network(struct vty *vty, struct ospf *ospf,\n\t\t\t\t
      \      struct route_table *rt,\n\t\t\t\t       json_object *json)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10704,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:10708,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:10708,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10714,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10715,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:10716,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10719,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10721,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:10725,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10728,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10733,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:10735,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:10739,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospfd/ospf_vty.c:10741,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10745,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10749,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10753,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10759,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:10769,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:10774,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10776,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:10777,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ospfd/ospf_vty.c:10781,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10786,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10789,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10792,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10796,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10799,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:10805,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10809,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10812,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10816,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10820,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10830,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 62
    argCount: 4
    argNames:
    - vty
    - ospf
    - rtrs
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - struct route_table*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10831
      start: 10690
    functionDepth: 1
    functionLinenumber: 10690
    functionLinenumberEnd: 10831
    functionName: show_ip_ospf_route_router
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - if_lookup_by_index
    - ifindex2ifname
    - vty_out
    - json_object_array_add
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - route_next
    - json_object_int_add
    - inet_ntop
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_route_router(struct vty *vty, struct ospf *ospf,\n\t\t\t\t
      \     struct route_table *rtrs,\n\t\t\t\t      json_object *json)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10845,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:10848,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:10848,1
    - Dst: snprintfrr
      Src: /src/frr/ospfd/ospf_vty.c:10854,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10856,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10857,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10863,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10865,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10867,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10870,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10878,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10880,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10882,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:10884,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10887,1
    - Dst: json_object_new_array
      Src: /src/frr/ospfd/ospf_vty.c:10897,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:10898,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospfd/ospf_vty.c:10902,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:10904,1
    - Dst: json_object_array_add
      Src: /src/frr/ospfd/ospf_vty.c:10905,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ospfd/ospf_vty.c:10909,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10912,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10915,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10918,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10922,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10925,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospfd/ospf_vty.c:10931,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:10934,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10936,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10940,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospfd/ospf_vty.c:10944,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10953,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 4
    argNames:
    - vty
    - ospf
    - rt
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - struct route_table*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10954
      start: 10833
    functionDepth: 1
    functionLinenumber: 10833
    functionLinenumberEnd: 10954
    functionName: show_ip_ospf_route_external
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - if_lookup_by_index
    - ifindex2ifname
    - vty_out
    - json_object_array_add
    - route_top
    - snprintfrr
    - route_next
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void show_ip_ospf_route_external(struct vty *vty, struct ospf *ospf,\n\t\t\t\t\tstruct
      route_table *rt,\n\t\t\t\t\tjson_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10961,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:10963,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10966,1
    - Dst: show_ip_ospf_route_router
      Src: /src/frr/ospfd/ospf_vty.c:10971,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:10973,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - ospf
    - use_vrf
    argTypes:
    - struct vty*
    - struct ospf*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10976
      start: 10956
    functionDepth: 2
    functionLinenumber: 10956
    functionLinenumberEnd: 10976
    functionName: show_ip_ospf_reachable_routers_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - show_ip_ospf_route_router
    - vty_out
    - ospf_show_vrf_name
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_reachable_routers_common(struct vty *vty,\n\t\t\t\t\t\t
      struct ospf *ospf,\n\t\t\t\t\t\t uint8_t use_vrf)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:11074,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:11077,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11082,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:11084,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:11088,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11092,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:11094,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:11096,1
    - Dst: show_ip_ospf_route_router
      Src: /src/frr/ospfd/ospf_vty.c:11105,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:11108,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:11111,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:11114,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11118,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 4
    argNames:
    - vty
    - ospf
    - use_vrf
    - json
    argTypes:
    - struct vty*
    - struct ospf*
    - uint8_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11122
      start: 11064
    functionDepth: 2
    functionLinenumber: 11064
    functionLinenumberEnd: 11122
    functionName: show_ip_ospf_border_routers_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - ospf_show_vrf_name
    - json_object_int_add
    - json_object_free
    - json_object_object_add
    - show_ip_ospf_route_router
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_border_routers_common(struct vty *vty,\n\t\t\t\t\t
      \     struct ospf *ospf,\n\t\t\t\t\t      uint8_t use_vrf,\n\t\t\t\t\t      json_object
      *json)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11239,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:11244,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:11249,1
    - Dst: json_object_free
      Src: /src/frr/ospfd/ospf_vty.c:11254,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11256,1
    - Dst: show_ip_ospf_route_network
      Src: /src/frr/ospfd/ospf_vty.c:11262,1
    - Dst: show_ip_ospf_route_router
      Src: /src/frr/ospfd/ospf_vty.c:11265,1
    - Dst: show_ip_ospf_route_router
      Src: /src/frr/ospfd/ospf_vty.c:11269,1
    - Dst: show_ip_ospf_route_external
      Src: /src/frr/ospfd/ospf_vty.c:11272,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:11279,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:11279,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11283,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 4
    argNames:
    - vty
    - ospf
    - json
    - use_vrf
    argTypes:
    - struct vty*
    - struct ospf*
    - json_object*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11287
      start: 11233
    functionDepth: 2
    functionLinenumber: 11233
    functionLinenumberEnd: 11287
    functionName: show_ip_ospf_route_common
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - ospf_show_vrf_name
    - show_ip_ospf_route_external
    - json_object_free
    - show_ip_ospf_route_network
    - json_object_object_add
    - show_ip_ospf_route_router
    - ospf_get_name
    linkageType: ''
    returnType: int
    signature: "int show_ip_ospf_route_common(struct vty *vty, struct ospf *ospf,\n\t\t\t\t
      \    json_object *json, uint8_t use_vrf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11552,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11556,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:11558,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11562
      start: 11545
    functionDepth: 1
    functionLinenumber: 11545
    functionLinenumberEnd: 11562
    functionName: ospf_vty_external_rt_walkcb
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - OSPF_EXTERNAL_RT_COUNT
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int ospf_vty_external_rt_walkcb(struct hash_bucket *bucket,\n\t\t\t\t\tvoid
      *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/ospfd/ospf_vty.c:11573,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:11575,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:11577,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:11581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11585
      start: 11564
    functionDepth: 1
    functionLinenumber: 11564
    functionLinenumberEnd: 11585
    functionName: ospf_json_external_rt_walkcb
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - OSPF_EXTERNAL_RT_COUNT
    - json_object_string_add
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int ospf_json_external_rt_walkcb(struct hash_bucket *bucket,\n\t\t\t\t\tvoid
      *arg)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: metric_type
      Src: /src/frr/ospfd/ospf_vty.c:11598,1
    - Dst: metric_value
      Src: /src/frr/ospfd/ospf_vty.c:11599,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11602,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:11606,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:11613,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11616,1
    - Dst: ospf_show_vrf_name
      Src: /src/frr/ospfd/ospf_vty.c:11619,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11622,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:11625,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:11629,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:11629,1
    - Dst: prefix2str
      Src: /src/frr/ospfd/ospf_vty.c:11635,1
    - Dst: json_object_new_object
      Src: /src/frr/ospfd/ospf_vty.c:11639,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:11641,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:11643,1
    - Dst: json_object_string_add
      Src: /src/frr/ospfd/ospf_vty.c:11645,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:11651,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:11652,1
    - Dst: json_object_int_add
      Src: /src/frr/ospfd/ospf_vty.c:11654,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:11656,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:11658,1
    - Dst: hash_walk
      Src: /src/frr/ospfd/ospf_vty.c:11659,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11666,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11669,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11670,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11671,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11673,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11675,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:11676,1
    - Dst: OSPF_EXTERNAL_RT_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:11678,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11679,1
    - Dst: hash_walk
      Src: /src/frr/ospfd/ospf_vty.c:11681,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11685,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11688,1
    - Dst: json_object_object_add
      Src: /src/frr/ospfd/ospf_vty.c:11694,1
    - Dst: ospf_get_name
      Src: /src/frr/ospfd/ospf_vty.c:11694,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11697,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 6
    argNames:
    - vty
    - ospf
    - use_vrf
    - json
    - uj
    - detail
    argTypes:
    - struct vty*
    - struct ospf*
    - uint8_t
    - json_object*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11700
      start: 11587
    functionDepth: 2
    functionLinenumber: 11587
    functionLinenumberEnd: 11700
    functionName: ospf_show_summary_address
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - vty_out
    - route_top
    - metric_type
    - ospf_show_vrf_name
    - json_object_int_add
    - route_next
    - OSPF_EXTERNAL_RT_COUNT
    - metric_value
    - json_object_string_add
    - json_object_object_add
    - hash_walk
    - ospf_get_name
    linkageType: ''
    returnType: int
    signature: "int ospf_show_summary_address(struct vty *vty, struct ospf *ospf,\n\t\t\t\t
      \    uint8_t use_vrf, json_object *json,\n\t\t\t\t     bool uj, bool detail)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - params
    argTypes:
    - struct ospf_if_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11818
      start: 11796
    functionDepth: 1
    functionLinenumber: 11796
    functionLinenumberEnd: 11818
    functionName: interface_config_auth_str
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - OSPF_IF_PARAM_CONFIGURED
    linkageType: ''
    returnType: char
    signature: char *interface_config_auth_str(struct ospf_if_params *params)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_vty.c:11832,1
    - Dst: if_vty_config_start
      Src: /src/frr/ospfd/ospf_vty.c:11835,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11838,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11842,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11846,1
    - Dst: ospf_default_iftype
      Src: /src/frr/ospfd/ospf_vty.c:11848,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11849,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11855,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11859,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11860,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11861,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11863,1
    - Dst: interface_config_auth_str
      Src: /src/frr/ospfd/ospf_vty.c:11868,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11870,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11872,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11873,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11875,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11879,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11881,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11883,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11884,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11886,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:11891,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11893,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:11896,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11896,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11897,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11899,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11904,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11907,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11908,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11910,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11914,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11916,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11918,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11919,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11921,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11926,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11928,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11931,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11933,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11937,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11939,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11940,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11942,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11946,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11950,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11955,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11958,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11960,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11961,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11963,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11967,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11971,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11973,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11974,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11976,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11980,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11983,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11985,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11986,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11988,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11992,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11994,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11997,1
    - Dst: area_id2str
      Src: /src/frr/ospfd/ospf_vty.c:12001,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12003,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12004,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12005,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12007,1
    - Dst: ospf_bfd_write_config
      Src: /src/frr/ospfd/ospf_vty.c:12012,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:12015,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12018,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12020,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12021,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12022,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12024,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:12027,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12029,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12034,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12035,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12036,1
    - Dst: ospf_ldp_sync_if_write_config
      Src: /src/frr/ospfd/ospf_vty.c:12041,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12045,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12045,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12047,1
    - Dst: ospf_opaque_config_write_if
      Src: /src/frr/ospfd/ospf_vty.c:12057,1
    - Dst: if_vty_config_end
      Src: /src/frr/ospfd/ospf_vty.c:12059,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 119
    argCount: 2
    argNames:
    - vty
    - vrf
    argTypes:
    - struct vty*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12063
      start: 11820
    functionDepth: 2
    functionLinenumber: 11820
    functionLinenumberEnd: 12063
    functionName: config_write_interface_one
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - interface_config_auth_str
    - ospf_bfd_write_config
    - vty_out
    - ospf_ldp_sync_if_write_config
    - if_vty_config_start
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - ospf_opaque_config_write_if
    - IF_DEF_PARAMS
    - memcmp
    - IF_OIFS_PARAMS
    - route_next
    - ospf_default_iftype
    - OSPF_IF_PARAM_CONFIGURED
    - if
    - area_id2str
    linkageType: ''
    returnType: int
    signature: int config_write_interface_one(struct vty *vty, struct vrf *vrf)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/ospfd/ospf_vty.c:11832,1
    - Dst: if_vty_config_start
      Src: /src/frr/ospfd/ospf_vty.c:11835,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11838,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11842,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11846,1
    - Dst: ospf_default_iftype
      Src: /src/frr/ospfd/ospf_vty.c:11848,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11849,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11855,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11859,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11860,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11861,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11863,1
    - Dst: interface_config_auth_str
      Src: /src/frr/ospfd/ospf_vty.c:11868,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11870,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11872,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11873,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11875,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11879,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11881,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11883,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11884,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11886,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:11891,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11893,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:11896,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11896,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11897,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11899,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11904,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11907,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11908,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11910,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11914,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11916,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11918,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11919,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11921,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11926,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11928,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11931,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11933,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11937,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11939,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11940,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11942,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11946,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11950,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11955,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11958,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11960,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11961,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11963,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11967,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11971,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11973,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11974,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11976,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11980,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11983,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:11985,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11986,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11988,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:11992,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11994,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:11997,1
    - Dst: area_id2str
      Src: /src/frr/ospfd/ospf_vty.c:12001,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12003,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12004,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12005,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12007,1
    - Dst: ospf_bfd_write_config
      Src: /src/frr/ospfd/ospf_vty.c:12012,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:12015,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12018,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12020,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12021,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12022,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12024,1
    - Dst: OSPF_IF_PARAM_CONFIGURED
      Src: /src/frr/ospfd/ospf_vty.c:12027,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12029,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12034,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12035,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12036,1
    - Dst: ospf_ldp_sync_if_write_config
      Src: /src/frr/ospfd/ospf_vty.c:12041,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12045,1
    - Dst: IF_OIFS_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12045,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12047,1
    - Dst: ospf_opaque_config_write_if
      Src: /src/frr/ospfd/ospf_vty.c:12057,1
    - Dst: if_vty_config_end
      Src: /src/frr/ospfd/ospf_vty.c:12059,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 117
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12060
      start: 11830
    functionDepth: 2
    functionLinenumber: 11830
    functionLinenumberEnd: 12060
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 16
    functionsReached:
    - if_vty_config_end
    - interface_config_auth_str
    - ospf_bfd_write_config
    - vty_out
    - ospf_ldp_sync_if_write_config
    - if_vty_config_start
    - ALL_LIST_ELEMENTS_RO
    - route_top
    - ospf_opaque_config_write_if
    - IF_DEF_PARAMS
    - memcmp
    - IF_OIFS_PARAMS
    - route_next
    - ospf_default_iftype
    - OSPF_IF_PARAM_CONFIGURED
    - if
    - area_id2str
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ospfd/ospf_vty.c:12072,1
    - Dst: config_write_interface_one
      Src: /src/frr/ospfd/ospf_vty.c:12073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12077
      start: 12066
    functionDepth: 3
    functionLinenumber: 12066
    functionLinenumberEnd: 12077
    functionName: config_write_interface
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - config_write_interface_one
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int config_write_interface(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12085,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12085,1
    - Dst: inet_ntop
      Src: /src/frr/ospfd/ospf_vty.c:12091,1
    - Dst: snprintf
      Src: /src/frr/ospfd/ospf_vty.c:12094,1
    - Dst: ntohl
      Src: /src/frr/ospfd/ospf_vty.c:12095,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12099,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - ospf
    argTypes:
    - struct vty*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12103
      start: 12079
    functionDepth: 1
    functionLinenumber: 12079
    functionLinenumberEnd: 12103
    functionName: config_write_network_area
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - snprintf
    - route_top
    - route_next
    - inet_ntop
    - ntohl
    linkageType: ''
    returnType: int
    signature: int config_write_network_area(struct vty *vty, struct ospf *ospf)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:12112,1
    - Dst: area_id2str
      Src: /src/frr/ospfd/ospf_vty.c:12115,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:12118,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12120,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12122,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12128,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12135,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12137,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12138,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12140,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12144,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12147,1
    - Dst: OSPF_NSSA_ROLE_CANDIDATE
      Src: /src/frr/ospfd/ospf_vty.c:12149,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12154,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12158,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12164,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12168,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12170,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12171,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12173,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12174,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12181,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12186,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12189,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12192,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12194,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12199,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12203,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12203,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:12204,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12207,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12212,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12215,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12217,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12219,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12221,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12225,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12228,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12229,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12230,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12232,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12233,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12234,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospfd/ospf_vty.c:12236,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12237,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospfd/ospf_vty.c:12238,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospfd/ospf_vty.c:12240,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12241,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospfd/ospf_vty.c:12242,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12245,1
    - Dst: config_write_ospf_nbr_nbma
      Src: /src/frr/ospfd/ospf_vty.c:12251,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12257,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12257,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:12258,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12259,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12263,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12267,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12270,1
    - Dst: config_write_virtual_link
      Src: /src/frr/ospfd/ospf_vty.c:12276,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:12284,1
    - Dst: area_id2str
      Src: /src/frr/ospfd/ospf_vty.c:12290,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12295,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12297,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12299,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12301,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12306,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12307,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12308,1
    - Dst: OSPF_IF_PARAM
      Src: /src/frr/ospfd/ospf_vty.c:12309,1
    - Dst: interface_config_auth_str
      Src: /src/frr/ospfd/ospf_vty.c:12314,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12315,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12317,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12321,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12323,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12326,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:12329,1
    - Dst: IF_DEF_PARAMS
      Src: /src/frr/ospfd/ospf_vty.c:12330,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12333,1
    - Dst: for
      Src: /src/frr/ospfd/ospf_vty.c:12349,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:12358,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12359,1
    - Dst: zebra_route_string
      Src: /src/frr/ospfd/ospf_vty.c:12360,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:12361,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12362,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:12364,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12365,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12368,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12370,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12371,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12372,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12374,1
    - Dst: ospf_cfg_write_helper_dis_rtr_walkcb
      Src: /src/frr/ospfd/ospf_vty.c:12381,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12387,1
    - Dst: config_write_ospf_gr
      Src: /src/frr/ospfd/ospf_vty.c:12392,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12398,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12400,1
    - Dst: config_write_ospf_gr_helper
      Src: /src/frr/ospfd/ospf_vty.c:12404,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12407,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12410,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12414,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12417,1
    - Dst: OSPF_HELPER_ENABLE_RTR_COUNT
      Src: /src/frr/ospfd/ospf_vty.c:12421,1
    - Dst: hash_walk
      Src: /src/frr/ospfd/ospf_vty.c:12422,1
    - Dst: config_write_ospf_external_aggregator
      Src: /src/frr/ospfd/ospf_vty.c:12428,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12434,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12438,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12438,1
    - Dst: if
      Src: /src/frr/ospfd/ospf_vty.c:12439,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12442,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12445,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12447,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12449,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12451,1
    - Dst: config_write_ospf_default_metric
      Src: /src/frr/ospfd/ospf_vty.c:12457,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12460,1
    - Dst: config_write_ospf_distribute
      Src: /src/frr/ospfd/ospf_vty.c:12464,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12472,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12473,1
    - Dst: DISTRIBUTE_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12474,1
    - Dst: zebra_route_string
      Src: /src/frr/ospfd/ospf_vty.c:12475,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12479,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12481,1
    - Dst: ospf_redist_lookup
      Src: /src/frr/ospfd/ospf_vty.c:12483,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12486,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12490,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12492,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12493,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospfd/ospf_vty.c:12494,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12497,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 32
    argCount: 2
    argNames:
    - vty
    - ospf
    argTypes:
    - struct vty*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12502
      start: 12105
    functionDepth: 4
    functionLinenumber: 12105
    functionLinenumberEnd: 12502
    functionName: config_write_ospf_area
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_redist_lookup
    - EXPORT_NAME
    - route_top
    - config_write_ospf_external_aggregator
    - IMPORT_NAME
    - hash_walk
    - PREFIX_NAME_IN
    - OSPF_HELPER_ENABLE_RTR_COUNT
    - config_write_ospf_default_metric
    - ALL_LIST_ELEMENTS_RO
    - OSPF_NSSA_ROLE_CANDIDATE
    - if
    - for
    - ROUTEMAP_NAME
    - interface_config_auth_str
    - vty_out
    - route_next
    - config_write_ospf_distribute
    - config_write_ospf_gr
    - zebra_route_string
    - area_id2str
    - PREFIX_NAME_OUT
    - ospf_cfg_write_helper_dis_rtr_walkcb
    - OSPF_IF_PARAM
    - CHECK_FLAG
    - IF_DEF_PARAMS
    - DISTRIBUTE_NAME
    - config_write_virtual_link
    - config_write_ospf_gr_helper
    - config_write_ospf_nbr_nbma
    linkageType: ''
    returnType: int
    signature: int config_write_ospf_area(struct vty *vty, struct ospf *ospf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12510,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12514,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12517,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12519,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12521,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12523,1
    - Dst: route_top
      Src: /src/frr/ospfd/ospf_vty.c:12526,1
    - Dst: route_next
      Src: /src/frr/ospfd/ospf_vty.c:12526,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12528,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - ospf
    argTypes:
    - struct vty*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12534
      start: 12504
    functionDepth: 1
    functionLinenumber: 12504
    functionLinenumberEnd: 12534
    functionName: config_write_ospf_distance
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - route_top
    - vty_out
    - route_next
    linkageType: ''
    returnType: int
    signature: int config_write_ospf_distance(struct vty *vty, struct ospf *ospf)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_vty.c:12541,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12542,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12545,1
    - Dst: strcmp
      Src: /src/frr/ospfd/ospf_vty.c:12546,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12547,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12549,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12558,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12562,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12563,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12567,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12571,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12572,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12573,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12575,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12577,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospfd/ospf_vty.c:12582,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12583,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12587,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12589,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12597,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12602,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12605,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12610,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12614,1
    - Dst: config_write_stub_router
      Src: /src/frr/ospfd/ospf_vty.c:12617,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12621,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12624,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12627,1
    - Dst: config_write_ospf_redistribute
      Src: /src/frr/ospfd/ospf_vty.c:12630,1
    - Dst: config_write_ospf_gr
      Src: /src/frr/ospfd/ospf_vty.c:12633,1
    - Dst: config_write_ospf_gr_helper
      Src: /src/frr/ospfd/ospf_vty.c:12634,1
    - Dst: config_write_ospf_external_aggregator
      Src: /src/frr/ospfd/ospf_vty.c:12637,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12641,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12646,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12648,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12654,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12656,1
    - Dst: config_write_network_area
      Src: /src/frr/ospfd/ospf_vty.c:12660,1
    - Dst: config_write_ospf_area
      Src: /src/frr/ospfd/ospf_vty.c:12663,1
    - Dst: config_write_ospf_nbr_nbma
      Src: /src/frr/ospfd/ospf_vty.c:12666,1
    - Dst: config_write_virtual_link
      Src: /src/frr/ospfd/ospf_vty.c:12669,1
    - Dst: config_write_ospf_default_metric
      Src: /src/frr/ospfd/ospf_vty.c:12672,1
    - Dst: config_write_ospf_distribute
      Src: /src/frr/ospfd/ospf_vty.c:12675,1
    - Dst: config_write_ospf_distance
      Src: /src/frr/ospfd/ospf_vty.c:12678,1
    - Dst: ospf_opaque_config_write_router
      Src: /src/frr/ospfd/ospf_vty.c:12680,1
    - Dst: ospf_ldp_sync_write_config
      Src: /src/frr/ospfd/ospf_vty.c:12683,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12688,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12691,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12697,1
    - Dst: vty_out
      Src: /src/frr/ospfd/ospf_vty.c:12701,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 88
    argCount: 2
    argNames:
    - vty
    - ospf
    argTypes:
    - struct vty*
    - struct ospf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12705
      start: 12536
    functionDepth: 5
    functionLinenumber: 12536
    functionLinenumberEnd: 12705
    functionName: ospf_config_write_one
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - config_write_network_area
    - config_write_ospf_default_metric
    - config_write_stub_router
    - vty_out
    - config_write_ospf_distance
    - CHECK_FLAG
    - strcmp
    - config_write_ospf_external_aggregator
    - ospf_opaque_config_write_router
    - config_write_virtual_link
    - config_write_ospf_distribute
    - ospf_ldp_sync_write_config
    - config_write_ospf_gr_helper
    - config_write_ospf_redistribute
    - config_write_ospf_area
    - config_write_ospf_gr
    - config_write_ospf_nbr_nbma
    linkageType: ''
    returnType: int
    signature: int ospf_config_write_one(struct vty *vty, struct ospf *ospf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ospfd/ospf_vty.c:12714,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospfd/ospf_vty.c:12717,1
    - Dst: ospf_config_write_one
      Src: /src/frr/ospfd/ospf_vty.c:12722,1
    - Dst: ospf_config_write_one
      Src: /src/frr/ospfd/ospf_vty.c:12726,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12729
      start: 12708
    functionDepth: 6
    functionLinenumber: 12708
    functionLinenumberEnd: 12729
    functionName: ospf_config_write
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - ospf_config_write_one
    linkageType: ''
    returnType: int
    signature: int ospf_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12734,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12736,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12739,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12742,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12744,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12746,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12749,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12750,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12751,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12752,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12753,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12754,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12755,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12757,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12759,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12760,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12761,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12763,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12764,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12765,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12768,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12769,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12770,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12772,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12773,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12774,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12778,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12781,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12785
      start: 12731
    functionDepth: 1
    functionLinenumber: 12731
    functionLinenumberEnd: 12785
    functionName: ospf_vty_show_init
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf_vty_show_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmd_init
      Src: /src/frr/ospfd/ospf_vty.c:12791,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12794,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12795,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12796,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12798,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12799,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12800,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12802,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12806,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12807,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12810,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12811,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12814,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12815,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12818,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12819,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12821,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12824,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12825,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12828,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12829,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12832,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12833,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12836,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12837,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12841,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12842,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12845,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12846,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12849,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12850,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12853,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12854,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12855,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12856,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12857,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12858,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12859,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12860,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12861,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12862,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12863,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12864,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12865,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12866,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12867,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12868,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12870
      start: 12788
    functionDepth: 1
    functionLinenumber: 12788
    functionLinenumberEnd: 12870
    functionName: ospf_vty_if_init
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - install_element
    - if_cmd_init
    linkageType: ''
    returnType: void
    signature: void ospf_vty_if_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12874,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12875,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12876,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12877,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12879,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12880,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12882,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12883,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12885,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12886,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12888,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12889,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12890,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12891,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12894,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12895,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12896,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12897,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12898,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12899,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12900,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12901,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12904,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12905,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12906,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12908,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12910,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:12911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12912
      start: 12872
    functionDepth: 1
    functionLinenumber: 12872
    functionLinenumberEnd: 12912
    functionName: ospf_vty_zebra_init
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf_vty_zebra_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/ospfd/ospf_vty.c:12925,1
    - Dst: IS_DEBUG_OSPF
      Src: /src/frr/ospfd/ospf_vty.c:12928,1
    - Dst: zlog_debug
      Src: /src/frr/ospfd/ospf_vty.c:12929,1
    - Dst: ospf_if_reset
      Src: /src/frr/ospfd/ospf_vty.c:12931,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12932
      start: 12923
    functionDepth: 2
    functionLinenumber: 12923
    functionLinenumberEnd: 12932
    functionName: ospf_interface_clear
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 0
    functionsReached:
    - ospf_if_reset
    - IS_DEBUG_OSPF
    - if_is_operative
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf_interface_clear(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13224,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13225,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13227
      start: 13222
    functionDepth: 1
    functionLinenumber: 13222
    functionLinenumberEnd: 13227
    functionName: ospf_vty_clear_init
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf_vty_clear_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/ospfd/ospf_vty.c:13234,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13237,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13238,1
    - Dst: install_default
      Src: /src/frr/ospfd/ospf_vty.c:13241,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13244,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13245,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13246,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13249,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13250,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13251,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13252,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13255,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13256,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13259,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13260,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13261,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13262,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13265,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13266,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13267,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13268,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13271,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13274,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13275,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13278,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13280,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13281,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13284,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13285,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13286,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13287,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13288,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13291,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13292,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13293,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13294,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13298,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13299,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13300,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13301,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13304,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13305,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13306,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13307,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13309,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13310,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13312,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13313,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13315,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13316,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13318,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13319,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13321,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13322,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13325,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13326,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13329,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13330,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13331,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13332,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13335,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13336,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13339,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13340,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13341,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13342,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13343,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13344,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13347,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13348,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13351,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13352,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13353,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13354,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13357,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13358,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13359,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13360,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13363,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13364,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13367,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13368,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13371,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13372,1
    - Dst: vrf_cmd_init
      Src: /src/frr/ospfd/ospf_vty.c:13374,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13376,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13377,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13380,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13381,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13382,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13383,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13385,1
    - Dst: install_element
      Src: /src/frr/ospfd/ospf_vty.c:13386,1
    - Dst: ospf_vty_if_init
      Src: /src/frr/ospfd/ospf_vty.c:13389,1
    - Dst: ospf_vty_zebra_init
      Src: /src/frr/ospfd/ospf_vty.c:13392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 96
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13393
      start: 13231
    functionDepth: 2
    functionLinenumber: 13231
    functionLinenumberEnd: 13393
    functionName: ospf_vty_init
    functionSourceFile: /src/frr/ospfd/ospf_vty.c
    functionUses: 2
    functionsReached:
    - install_node
    - ospf_vty_zebra_init
    - ospf_vty_if_init
    - install_default
    - install_element
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void ospf_vty_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/sharpd/sharp_zebra.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: add_zclient
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void add_zclient(struct zclient *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: sharp_ifp_create
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sharp_ifp_create(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: sharp_ifp_destroy
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sharp_ifp_destroy(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/sharpd/sharp_zebra.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: interface_address_add
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 2
    functionsReached:
    - zebra_interface_address_read
    linkageType: ''
    returnType: int
    signature: int interface_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/sharpd/sharp_zebra.c:85,1
    - Dst: connected_free
      Src: /src/frr/sharpd/sharp_zebra.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 92
    functionName: interface_address_delete
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 2
    functionsReached:
    - zebra_interface_address_read
    - connected_free
    linkageType: ''
    returnType: int
    signature: int interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: sharp_ifp_up
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sharp_ifp_up(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: sharp_ifp_down
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sharp_ifp_down(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/sharpd/sharp_zebra.c:119,1
    - Dst: prefix_copy
      Src: /src/frr/sharpd/sharp_zebra.c:120,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:128,1
    - Dst: if
      Src: /src/frr/sharpd/sharp_zebra.c:132,1
    - Dst: if
      Src: /src/frr/sharpd/sharp_zebra.c:136,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:141,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:163,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:176,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/sharpd/sharp_zebra.c:201,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 8
    argNames:
    - install_p
    - update_p
    - p
    - type
    - instance
    - in_label
    - nhg
    - backup_nhg
    argTypes:
    - bool
    - bool
    - struct prefix*
    - uint8_t
    - int
    - uint32_t
    - struct nexthop_group*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 205
    functionName: sharp_install_lsps_helper
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - zebra_send_mpls_labels
    - if
    - prefix_copy
    - zapi_nexthop_from_nexthop
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: int
    signature: "int sharp_install_lsps_helper(bool install_p, bool update_p,\n\t\t\t
      \     const struct prefix *p, uint8_t type,\n\t\t\t      int instance, uint32_t
      in_label,\n\t\t\t      const struct nexthop_group *nhg,\n\t\t\t      const struct
      nexthop_group *backup_nhg)"
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/sharpd/sharp_zebra.c:242,1
    - Dst: memcpy
      Src: /src/frr/sharpd/sharp_zebra.c:247,1
    - Dst: SET_FLAG
      Src: /src/frr/sharpd/sharp_zebra.c:250,1
    - Dst: SET_FLAG
      Src: /src/frr/sharpd/sharp_zebra.c:251,1
    - Dst: sharp_nhgroup_id_is_installed
      Src: /src/frr/sharpd/sharp_zebra.c:254,1
    - Dst: SET_FLAG
      Src: /src/frr/sharpd/sharp_zebra.c:255,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:258,1
    - Dst: SET_FLAG
      Src: /src/frr/sharpd/sharp_zebra.c:262,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:266,1
    - Dst: SET_FLAG
      Src: /src/frr/sharpd/sharp_zebra.c:275,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:278,1
    - Dst: zapi_backup_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:281,1
    - Dst: strlen
      Src: /src/frr/sharpd/sharp_zebra.c:289,1
    - Dst: SET_FLAG
      Src: /src/frr/sharpd/sharp_zebra.c:290,1
    - Dst: strlen
      Src: /src/frr/sharpd/sharp_zebra.c:291,1
    - Dst: assert
      Src: /src/frr/sharpd/sharp_zebra.c:292,1
    - Dst: memcpy
      Src: /src/frr/sharpd/sharp_zebra.c:293,1
    - Dst: zclient_route_send
      Src: /src/frr/sharpd/sharp_zebra.c:296,1
    - Dst: route_delete
      Src: /src/frr/sharpd/sharp_zebra.c:309,1
    - Dst: memset
      Src: /src/frr/sharpd/sharp_zebra.c:313,1
    - Dst: memcpy
      Src: /src/frr/sharpd/sharp_zebra.c:318,1
    - Dst: zclient_route_send
      Src: /src/frr/sharpd/sharp_zebra.c:320,1
    - Dst: sharp_install_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:327,1
    - Dst: ntohl
      Src: /src/frr/sharpd/sharp_zebra.c:340,1
    - Dst: ntohl
      Src: /src/frr/sharpd/sharp_zebra.c:342,1
    - Dst: route_add
      Src: /src/frr/sharpd/sharp_zebra.c:345,1
    - Dst: htonl
      Src: /src/frr/sharpd/sharp_zebra.c:348,1
    - Dst: htonl
      Src: /src/frr/sharpd/sharp_zebra.c:350,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:376,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:382,1
    - Dst: sharp_install_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:383,1
    - Dst: ntohl
      Src: /src/frr/sharpd/sharp_zebra.c:396,1
    - Dst: ntohl
      Src: /src/frr/sharpd/sharp_zebra.c:398,1
    - Dst: route_delete
      Src: /src/frr/sharpd/sharp_zebra.c:401,1
    - Dst: htonl
      Src: /src/frr/sharpd/sharp_zebra.c:404,1
    - Dst: htonl
      Src: /src/frr/sharpd/sharp_zebra.c:406,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:424,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:426,1
    - Dst: sharp_remove_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:428,1
    - Dst: sharp_remove_routes_helper
      Src: /src/frr/sharpd/sharp_zebra.c:441,1
    - Dst: sharp_install_routes_helper
      Src: /src/frr/sharpd/sharp_zebra.c:447,1
    - Dst: sharp_install_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:458,1
    - Dst: sharp_remove_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:463,1
    - Dst: zapi_route_notify_decode
      Src: /src/frr/sharpd/sharp_zebra.c:476,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:484,1
    - Dst: timersub
      Src: /src/frr/sharpd/sharp_zebra.c:485,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:486,1
    - Dst: handle_repeated
      Src: /src/frr/sharpd/sharp_zebra.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:492,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:495,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:500,1
    - Dst: timersub
      Src: /src/frr/sharpd/sharp_zebra.c:501,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:502,1
    - Dst: handle_repeated
      Src: /src/frr/sharpd/sharp_zebra.c:504,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:508,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/sharpd/sharp_zebra.c:516,1
    - Dst: zclient_send_vrf_label
      Src: /src/frr/sharpd/sharp_zebra.c:530,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:545,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:547,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:561,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:566,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:573,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:575,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:588,1
    - Dst: zapi_backup_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:597,1
    - Dst: zclient_nhg_send
      Src: /src/frr/sharpd/sharp_zebra.c:604,1
    - Dst: zclient_nhg_send
      Src: /src/frr/sharpd/sharp_zebra.c:613,1
    - Dst: zclient_send_rnh
      Src: /src/frr/sharpd/sharp_zebra.c:626,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:628,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:636,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:646,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:653,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:659,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:663,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/sharpd/sharp_zebra.c:676,1
    - Dst: zlog_err
      Src: /src/frr/sharpd/sharp_zebra.c:677,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:681,1
    - Dst: sharp_nh_tracker_get
      Src: /src/frr/sharpd/sharp_zebra.c:684,1
    - Dst: sharp_debug_nexthops
      Src: /src/frr/sharpd/sharp_zebra.c:688,1
    - Dst: zapi_route_decode
      Src: /src/frr/sharpd/sharp_zebra.c:697,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:698,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:701,1
    - Dst: zserv_command_string
      Src: /src/frr/sharpd/sharp_zebra.c:701,1
    - Dst: zebra_route_string
      Src: /src/frr/sharpd/sharp_zebra.c:702,1
    - Dst: sharp_debug_nexthops
      Src: /src/frr/sharpd/sharp_zebra.c:704,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/sharpd/sharp_zebra.c:711,1
    - Dst: zclient_new
      Src: /src/frr/sharpd/sharp_zebra.c:731,1
    - Dst: array_size
      Src: /src/frr/sharpd/sharp_zebra.c:733,1
    - Dst: zclient_init
      Src: /src/frr/sharpd/sharp_zebra.c:737,1
    - Dst: add_zclient
      Src: /src/frr/sharpd/sharp_zebra.c:740,1
    - Dst: zclient_stop
      Src: /src/frr/sharpd/sharp_zebra.c:762,1
    - Dst: zclient_free
      Src: /src/frr/sharpd/sharp_zebra.c:763,1
    - Dst: XFREE
      Src: /src/frr/sharpd/sharp_zebra.c:766,1
    - Dst: zclient_opaque_decode
      Src: /src/frr/sharpd/sharp_zebra.c:786,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:789,1
    - Dst: ls_stream2ted
      Src: /src/frr/sharpd/sharp_zebra.c:793,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:795,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:800,1
    - Dst: zclient_send_opaque
      Src: /src/frr/sharpd/sharp_zebra.c:829,1
    - Dst: zclient_send_opaque_unicast
      Src: /src/frr/sharpd/sharp_zebra.c:832,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:836,1
    - Dst: stream_reset
      Src: /src/frr/sharpd/sharp_zebra.c:852,1
    - Dst: zclient_create_header
      Src: /src/frr/sharpd/sharp_zebra.c:855,1
    - Dst: zclient_create_header
      Src: /src/frr/sharpd/sharp_zebra.c:857,1
    - Dst: stream_putl
      Src: /src/frr/sharpd/sharp_zebra.c:860,1
    - Dst: stream_putc
      Src: /src/frr/sharpd/sharp_zebra.c:863,1
    - Dst: stream_putw
      Src: /src/frr/sharpd/sharp_zebra.c:864,1
    - Dst: stream_putl
      Src: /src/frr/sharpd/sharp_zebra.c:865,1
    - Dst: stream_putw_at
      Src: /src/frr/sharpd/sharp_zebra.c:868,1
    - Dst: stream_get_endp
      Src: /src/frr/sharpd/sharp_zebra.c:868,1
    - Dst: zclient_send_message
      Src: /src/frr/sharpd/sharp_zebra.c:870,1
    - Dst: zclient_register_opaque
      Src: /src/frr/sharpd/sharp_zebra.c:877,1
    - Dst: ls_request_sync
      Src: /src/frr/sharpd/sharp_zebra.c:880,1
    - Dst: zclient_send_neigh_discovery_req
      Src: /src/frr/sharpd/sharp_zebra.c:885,1
    - Dst: zapi_nhg_notify_decode
      Src: /src/frr/sharpd/sharp_zebra.c:893,1
    - Dst: sharp_nhgroup_id_set_installed
      Src: /src/frr/sharpd/sharp_zebra.c:898,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:899,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:902,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:905,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:908,1
    - Dst: srv6_manager_get_locator_chunk
      Src: /src/frr/sharpd/sharp_zebra.c:917,1
    - Dst: srv6_manager_release_locator_chunk
      Src: /src/frr/sharpd/sharp_zebra.c:922,1
    - Dst: zapi_srv6_locator_chunk_decode
      Src: /src/frr/sharpd/sharp_zebra.c:933,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/sharpd/sharp_zebra.c:935,1
    - Dst: if
      Src: /src/frr/sharpd/sharp_zebra.c:940,1
    - Dst: strcmp
      Src: /src/frr/sharpd/sharp_zebra.c:940,1
    - Dst: zlog_err
      Src: /src/frr/sharpd/sharp_zebra.c:941,1
    - Dst: continue
      Src: /src/frr/sharpd/sharp_zebra.c:943,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/sharpd/sharp_zebra.c:946,1
    - Dst: prefix_cmp
      Src: /src/frr/sharpd/sharp_zebra.c:947,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/sharpd/sharp_zebra.c:950,1
    - Dst: zlog_err
      Src: /src/frr/sharpd/sharp_zebra.c:956,1
    CyclomaticComplexity: 77
    EdgeCount: 77
    ICount: 334
    argCount: 8
    argNames:
    - p
    - vrf_id
    - instance
    - nhgid
    - nhg
    - backup_nhg
    - flags
    - opaque
    argTypes:
    - struct prefix*
    - vrf_id_t
    - uint8_t
    - uint32_t
    - struct nexthop_group*
    - struct nexthop_group*
    - uint32_t
    - char*
    assertStmts:
    - condition: (api.opaque.length <= ZAPI_MESSAGE_OPAQUE_LENGTH)
      pos:
        line_end: 291
        line_start: 291
        source_file: /src/frr/sharpd/sharp_zebra.c
    constantsTouched: []
    func_position:
      end: 958
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 958
    functionName: route_add
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 10
    functionsReached:
    - zapi_backup_nexthop_from_nexthop
    - strlen
    - zapi_nhg_notify_decode
    - ALL_LIST_ELEMENTS
    - zapi_srv6_locator_chunk_decode
    - srv6_manager_get_locator_chunk
    - zlog_warn
    - zclient_send_opaque_unicast
    - handle_repeated
    - continue
    - htonl
    - stream_reset
    - stream_putc
    - zclient_register_opaque
    - zclient_stop
    - memset
    - prefix_cmp
    - ALL_LIST_ELEMENTS_RO
    - zclient_nhg_send
    - zclient_opaque_decode
    - sharp_nhgroup_id_is_installed
    - zclient_send_message
    - zclient_send_reg_requests
    - zapi_route_decode
    - stream_putw_at
    - zlog_debug
    - sharp_install_routes_helper
    - array_size
    - zclient_route_send
    - if
    - zclient_init
    - ntohl
    - zapi_nexthop_from_nexthop
    - assert
    - prefix_ipv6_new
    - srv6_manager_release_locator_chunk
    - route_add
    - zserv_command_string
    - monotime
    - zlog_err
    - timersub
    - add_zclient
    - zapi_route_notify_decode
    - zapi_nexthop_update_decode
    - XFREE
    - sharp_remove_routes_restart
    - zclient_send_opaque
    - sharp_remove_routes_helper
    - sharp_debug_nexthops
    - zclient_send_vrf_label
    - route_delete
    - ALL_NEXTHOPS_PTR
    - memcpy
    - zebra_route_string
    - zclient_create_header
    - zclient_new
    - zebra_redistribute_send
    - zclient_send_neigh_discovery_req
    - strcmp
    - stream_putw
    - stream_get_endp
    - sharp_nhgroup_id_set_installed
    - ls_request_sync
    - zclient_send_rnh
    - SET_FLAG
    - sharp_install_routes_restart
    - zclient_free
    - sharp_nh_tracker_get
    - ls_stream2ted
    - stream_putl
    linkageType: ''
    returnType: bool
    signature: "bool route_add(const struct prefix *p, vrf_id_t vrf_id, uint8_t instance,\n\t\t
      \     uint32_t nhgid, const struct nexthop_group *nhg,\n\t\t      const struct
      nexthop_group *backup_nhg, uint32_t flags,\n\t\t      char *opaque)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:376,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:382,1
    - Dst: sharp_install_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 9
    argNames:
    - p
    - vrf_id
    - instance
    - nhgid
    - nhg
    - backup_nhg
    - routes
    - flags
    - opaque
    argTypes:
    - struct prefix*
    - vrf_id_t
    - uint8_t
    - uint32_t
    - struct nexthop_group*
    - struct nexthop_group*
    - uint32_t
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 385
    functionName: sharp_install_routes_helper
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 1
    functionsReached:
    - sharp_install_routes_restart
    - zlog_debug
    - monotime
    linkageType: ''
    returnType: void
    signature: "void sharp_install_routes_helper(struct prefix *p, vrf_id_t vrf_id,\n\t\t\t\t
      uint8_t instance, uint32_t nhgid,\n\t\t\t\t const struct nexthop_group *nhg,\n\t\t\t\t
      const struct nexthop_group *backup_nhg,\n\t\t\t\t uint32_t routes, uint32_t
      flags, char *opaque)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/sharpd/sharp_zebra.c:396,1
    - Dst: ntohl
      Src: /src/frr/sharpd/sharp_zebra.c:398,1
    - Dst: route_delete
      Src: /src/frr/sharpd/sharp_zebra.c:401,1
    - Dst: htonl
      Src: /src/frr/sharpd/sharp_zebra.c:404,1
    - Dst: htonl
      Src: /src/frr/sharpd/sharp_zebra.c:406,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 5
    argNames:
    - p
    - count
    - vrf_id
    - instance
    - routes
    argTypes:
    - struct prefix*
    - uint32_t
    - vrf_id_t
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 419
    functionName: sharp_remove_routes_restart
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 1
    functionsReached:
    - htonl
    - ntohl
    - route_delete
    linkageType: ''
    returnType: void
    signature: "void sharp_remove_routes_restart(struct prefix *p, uint32_t count,\n\t\t\t\t\tvrf_id_t
      vrf_id, uint8_t instance,\n\t\t\t\t\tuint32_t routes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:424,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:426,1
    - Dst: sharp_remove_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - p
    - vrf_id
    - instance
    - routes
    argTypes:
    - struct prefix*
    - vrf_id_t
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 429
    functionName: sharp_remove_routes_helper
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 1
    functionsReached:
    - sharp_remove_routes_restart
    - zlog_debug
    - monotime
    linkageType: ''
    returnType: void
    signature: "void sharp_remove_routes_helper(struct prefix *p, vrf_id_t vrf_id,\n\t\t\t\tuint8_t
      instance, uint32_t routes)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sharp_remove_routes_helper
      Src: /src/frr/sharpd/sharp_zebra.c:441,1
    - Dst: sharp_install_routes_helper
      Src: /src/frr/sharpd/sharp_zebra.c:447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - installed
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 452
    functionName: handle_repeated
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 1
    functionsReached:
    - sharp_remove_routes_helper
    - sharp_install_routes_helper
    linkageType: ''
    returnType: void
    signature: void handle_repeated(bool installed)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sharp_install_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:458,1
    - Dst: sharp_remove_routes_restart
      Src: /src/frr/sharpd/sharp_zebra.c:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 467
    functionName: sharp_zclient_buffer_ready
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - sharp_remove_routes_restart
    - sharp_install_routes_restart
    linkageType: ''
    returnType: void
    signature: void sharp_zclient_buffer_ready(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_notify_decode
      Src: /src/frr/sharpd/sharp_zebra.c:476,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:484,1
    - Dst: timersub
      Src: /src/frr/sharpd/sharp_zebra.c:485,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:486,1
    - Dst: handle_repeated
      Src: /src/frr/sharpd/sharp_zebra.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:492,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:495,1
    - Dst: monotime
      Src: /src/frr/sharpd/sharp_zebra.c:500,1
    - Dst: timersub
      Src: /src/frr/sharpd/sharp_zebra.c:501,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:502,1
    - Dst: handle_repeated
      Src: /src/frr/sharpd/sharp_zebra.c:504,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:508,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 469
    functionDepth: 4
    functionLinenumber: 469
    functionLinenumberEnd: 512
    functionName: route_notify_owner
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - monotime
    - timersub
    - zlog_debug
    - zapi_route_notify_decode
    - handle_repeated
    linkageType: ''
    returnType: int
    signature: int route_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/sharpd/sharp_zebra.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 526
    functionName: zebra_connected
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_vrf_label
      Src: /src/frr/sharpd/sharp_zebra.c:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vrf_id
    - afi
    - label
    argTypes:
    - vrf_id_t
    - afi_t
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: vrf_label_add
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_vrf_label
    linkageType: ''
    returnType: void
    signature: void vrf_label_add(vrf_id_t vrf_id, afi_t afi, mpls_label_t label)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:545,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:547,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:561,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:566,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/sharpd/sharp_zebra.c:573,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:575,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:588,1
    - Dst: zapi_backup_nexthop_from_nexthop
      Src: /src/frr/sharpd/sharp_zebra.c:597,1
    - Dst: zclient_nhg_send
      Src: /src/frr/sharpd/sharp_zebra.c:604,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 3
    argNames:
    - id
    - nhg
    - backup_nhg
    argTypes:
    - uint32_t
    - struct nexthop_group*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 605
    functionName: nhg_add
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zapi_backup_nexthop_from_nexthop
    - zclient_nhg_send
    - zlog_warn
    - zlog_debug
    - zapi_nexthop_from_nexthop
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: void
    signature: "void nhg_add(uint32_t id, const struct nexthop_group *nhg,\n\t     const
      struct nexthop_group *backup_nhg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_nhg_send
      Src: /src/frr/sharpd/sharp_zebra.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 614
    functionName: nhg_del
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_nhg_send
    linkageType: ''
    returnType: void
    signature: void nhg_del(uint32_t id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_rnh
      Src: /src/frr/sharpd/sharp_zebra.c:626,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - p
    - vrf_id
    - import
    - watch
    - connected
    argTypes:
    - struct prefix*
    - vrf_id_t
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 629
    functionName: sharp_zebra_nexthop_watch
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_rnh
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: "void sharp_zebra_nexthop_watch(struct prefix *p, vrf_id_t vrf_id,
      bool import,\n\t\t\t       bool watch, bool connected)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:636,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:646,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:653,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:659,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:663,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - api
    argTypes:
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 669
    functionName: sharp_debug_nexthops
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int sharp_debug_nexthops(struct zapi_route *api)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/sharpd/sharp_zebra.c:676,1
    - Dst: zlog_err
      Src: /src/frr/sharpd/sharp_zebra.c:677,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:681,1
    - Dst: sharp_nh_tracker_get
      Src: /src/frr/sharpd/sharp_zebra.c:684,1
    - Dst: sharp_debug_nexthops
      Src: /src/frr/sharpd/sharp_zebra.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 670
    functionDepth: 2
    functionLinenumber: 670
    functionLinenumberEnd: 691
    functionName: sharp_nexthop_update
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_err
    - zlog_debug
    - zapi_nexthop_update_decode
    - sharp_debug_nexthops
    - sharp_nh_tracker_get
    linkageType: ''
    returnType: int
    signature: int sharp_nexthop_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_decode
      Src: /src/frr/sharpd/sharp_zebra.c:697,1
    - Dst: zlog_warn
      Src: /src/frr/sharpd/sharp_zebra.c:698,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:701,1
    - Dst: zserv_command_string
      Src: /src/frr/sharpd/sharp_zebra.c:701,1
    - Dst: zebra_route_string
      Src: /src/frr/sharpd/sharp_zebra.c:702,1
    - Dst: sharp_debug_nexthops
      Src: /src/frr/sharpd/sharp_zebra.c:704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 693
    functionDepth: 2
    functionLinenumber: 693
    functionLinenumberEnd: 707
    functionName: sharp_redistribute_route
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zserv_command_string
    - zapi_route_decode
    - zlog_warn
    - zlog_debug
    - sharp_debug_nexthops
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: int sharp_redistribute_route(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_redistribute_send
      Src: /src/frr/sharpd/sharp_zebra.c:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vrf
    - type
    argTypes:
    - struct vrf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 713
    functionName: sharp_redistribute_vrf
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void sharp_redistribute_vrf(struct vrf *vrf, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/sharpd/sharp_zebra.c:731,1
    - Dst: array_size
      Src: /src/frr/sharpd/sharp_zebra.c:733,1
    - Dst: zclient_init
      Src: /src/frr/sharpd/sharp_zebra.c:737,1
    - Dst: add_zclient
      Src: /src/frr/sharpd/sharp_zebra.c:740,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - session_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 743
    functionName: sharp_zclient_create
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - add_zclient
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: int
    signature: int sharp_zclient_create(uint32_t session_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/sharpd/sharp_zebra.c:762,1
    - Dst: zclient_free
      Src: /src/frr/sharpd/sharp_zebra.c:763,1
    - Dst: XFREE
      Src: /src/frr/sharpd/sharp_zebra.c:766,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - session_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 772
    functionName: sharp_zclient_delete
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_free
    - zclient_stop
    - XFREE
    linkageType: ''
    returnType: int
    signature: int sharp_zclient_delete(uint32_t session_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zclient_opaque_decode
      Src: /src/frr/sharpd/sharp_zebra.c:786,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:789,1
    - Dst: ls_stream2ted
      Src: /src/frr/sharpd/sharp_zebra.c:793,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:795,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:800,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 806
    functionName: sharp_opaque_handler
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zclient_opaque_decode
    - ls_stream2ted
    linkageType: ''
    returnType: int
    signature: int sharp_opaque_handler(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_opaque
      Src: /src/frr/sharpd/sharp_zebra.c:829,1
    - Dst: zclient_send_opaque_unicast
      Src: /src/frr/sharpd/sharp_zebra.c:832,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:836,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 5
    argNames:
    - type
    - proto
    - instance
    - session_id
    - count
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 841
    functionName: sharp_opaque_send
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_opaque_unicast
    - zlog_debug
    - zclient_send_opaque
    linkageType: ''
    returnType: void
    signature: "void sharp_opaque_send(uint32_t type, uint32_t proto, uint32_t instance,\n\t\t
      \      uint32_t session_id, uint32_t count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/sharpd/sharp_zebra.c:852,1
    - Dst: zclient_create_header
      Src: /src/frr/sharpd/sharp_zebra.c:855,1
    - Dst: zclient_create_header
      Src: /src/frr/sharpd/sharp_zebra.c:857,1
    - Dst: stream_putl
      Src: /src/frr/sharpd/sharp_zebra.c:860,1
    - Dst: stream_putc
      Src: /src/frr/sharpd/sharp_zebra.c:863,1
    - Dst: stream_putw
      Src: /src/frr/sharpd/sharp_zebra.c:864,1
    - Dst: stream_putl
      Src: /src/frr/sharpd/sharp_zebra.c:865,1
    - Dst: stream_putw_at
      Src: /src/frr/sharpd/sharp_zebra.c:868,1
    - Dst: stream_get_endp
      Src: /src/frr/sharpd/sharp_zebra.c:868,1
    - Dst: zclient_send_message
      Src: /src/frr/sharpd/sharp_zebra.c:870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - is_reg
    - proto
    - instance
    - session_id
    - type
    argTypes:
    - bool
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 871
    functionName: sharp_opaque_reg_send
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void sharp_opaque_reg_send(bool is_reg, uint32_t proto, uint32_t instance,\n\t\t\t
      \  uint32_t session_id, uint32_t type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_register_opaque
      Src: /src/frr/sharpd/sharp_zebra.c:877,1
    - Dst: ls_request_sync
      Src: /src/frr/sharpd/sharp_zebra.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 881
    functionName: sharp_zebra_register_te
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - ls_request_sync
    - zclient_register_opaque
    linkageType: ''
    returnType: void
    signature: void sharp_zebra_register_te(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_neigh_discovery_req
      Src: /src/frr/sharpd/sharp_zebra.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - p
    argTypes:
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 886
    functionName: sharp_zebra_send_arp
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_neigh_discovery_req
    linkageType: ''
    returnType: void
    signature: void sharp_zebra_send_arp(const struct interface *ifp, const struct
      prefix *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nhg_notify_decode
      Src: /src/frr/sharpd/sharp_zebra.c:893,1
    - Dst: sharp_nhgroup_id_set_installed
      Src: /src/frr/sharpd/sharp_zebra.c:898,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:899,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:902,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:905,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:908,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 913
    functionName: nhg_notify_owner
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zapi_nhg_notify_decode
    - zlog_debug
    - sharp_nhgroup_id_set_installed
    linkageType: ''
    returnType: int
    signature: int nhg_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srv6_manager_get_locator_chunk
      Src: /src/frr/sharpd/sharp_zebra.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - locator_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 918
    functionName: sharp_zebra_srv6_manager_get_locator_chunk
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - srv6_manager_get_locator_chunk
    linkageType: ''
    returnType: int
    signature: int sharp_zebra_srv6_manager_get_locator_chunk(const char *locator_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srv6_manager_release_locator_chunk
      Src: /src/frr/sharpd/sharp_zebra.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - locator_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 923
    functionName: sharp_zebra_srv6_manager_release_locator_chunk
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - srv6_manager_release_locator_chunk
    linkageType: ''
    returnType: int
    signature: int sharp_zebra_srv6_manager_release_locator_chunk(const char *locator_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zapi_srv6_locator_chunk_decode
      Src: /src/frr/sharpd/sharp_zebra.c:933,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/sharpd/sharp_zebra.c:935,1
    - Dst: if
      Src: /src/frr/sharpd/sharp_zebra.c:940,1
    - Dst: strcmp
      Src: /src/frr/sharpd/sharp_zebra.c:940,1
    - Dst: zlog_err
      Src: /src/frr/sharpd/sharp_zebra.c:941,1
    - Dst: continue
      Src: /src/frr/sharpd/sharp_zebra.c:943,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/sharpd/sharp_zebra.c:946,1
    - Dst: prefix_cmp
      Src: /src/frr/sharpd/sharp_zebra.c:947,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/sharpd/sharp_zebra.c:950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 954
    functionName: sharp_zebra_process_srv6_locator_chunk
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    - zapi_srv6_locator_chunk_decode
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - zlog_err
    - continue
    - if
    - ALL_LIST_ELEMENTS
    - prefix_ipv6_new
    linkageType: ''
    returnType: int
    signature: int sharp_zebra_process_srv6_locator_chunk(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_zebra.c:962,1
    - Dst: zclient_send_interface_protodown
      Src: /src/frr/sharpd/sharp_zebra.c:965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - down
    argTypes:
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 970
    functionName: sharp_zebra_send_interface_protodown
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_interface_protodown
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int sharp_zebra_send_interface_protodown(struct interface *ifp, bool
      down)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zapi_tc_qdisc_encode
      Src: /src/frr/sharpd/sharp_zebra.c:985,1
    - Dst: zclient_send_message
      Src: /src/frr/sharpd/sharp_zebra.c:986,1
    - Dst: zapi_tc_class_encode
      Src: /src/frr/sharpd/sharp_zebra.c:995,1
    - Dst: zclient_send_message
      Src: /src/frr/sharpd/sharp_zebra.c:996,1
    - Dst: prefix_copy
      Src: /src/frr/sharpd/sharp_zebra.c:1014,1
    - Dst: prefix_copy
      Src: /src/frr/sharpd/sharp_zebra.c:1016,1
    - Dst: zapi_tc_filter_encode
      Src: /src/frr/sharpd/sharp_zebra.c:1023,1
    - Dst: zclient_send_message
      Src: /src/frr/sharpd/sharp_zebra.c:1024,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 7
    argNames:
    - ifp
    - source
    - destination
    - ip_proto
    - src_port
    - dst_port
    - rate
    argTypes:
    - struct interface*
    - struct prefix*
    - struct prefix*
    - uint8_t
    - uint16_t
    - uint16_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 1028
    functionName: sharp_zebra_send_tc_filter_rate
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zapi_tc_class_encode
    - zclient_send_message
    - prefix_copy
    - zapi_tc_qdisc_encode
    - zapi_tc_filter_encode
    linkageType: ''
    returnType: int
    signature: "int sharp_zebra_send_tc_filter_rate(struct interface *ifp,\n\t\t\t\t
      \   const struct prefix *source,\n\t\t\t\t    const struct prefix *destination,\n\t\t\t\t
      \   uint8_t ip_proto, uint16_t src_port,\n\t\t\t\t    uint16_t dst_port, uint64_t
      rate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_zapi_callbacks
      Src: /src/frr/sharpd/sharp_zebra.c:1047,1
    - Dst: zclient_new
      Src: /src/frr/sharpd/sharp_zebra.c:1050,1
    - Dst: array_size
      Src: /src/frr/sharpd/sharp_zebra.c:1051,1
    - Dst: zclient_init
      Src: /src/frr/sharpd/sharp_zebra.c:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1056
    functionName: sharp_zebra_init
    functionSourceFile: /src/frr/sharpd/sharp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_init
    - if_zapi_callbacks
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void sharp_zebra_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_ipv6_free
      Src: /src/frr/sharpd/sharp_vty.c:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 928
    functionName: sharp_srv6_locator_chunk_free
    functionSourceFile: /src/frr/sharpd/sharp_vty.c
    functionUses: 0
    functionsReached:
    - prefix_ipv6_free
    linkageType: ''
    returnType: void
    signature: void sharp_srv6_locator_chunk_free(struct prefix_ipv6 *chunk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/sharpd/sharp_vty.c:1275,1
    - Dst: if_lookup_by_name
      Src: /src/frr/sharpd/sharp_vty.c:1276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1282
    functionName: if_lookup_vrf_all
    functionSourceFile: /src/frr/sharpd/sharp_vty.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - if_lookup_by_name
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_lookup_vrf_all(const char *ifname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1391,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1392,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1393,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1394,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1395,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1396,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1397,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1398,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1399,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1400,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1401,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1402,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1403,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1404,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1405,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1406,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1407,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1408,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1409,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1410,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1412,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1413,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1414,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1416,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1417,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1419,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1421,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1422,1
    - Dst: install_element
      Src: /src/frr/sharpd/sharp_vty.c:1424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1389
    functionDepth: 1
    functionLinenumber: 1389
    functionLinenumberEnd: 1427
    functionName: sharp_vty_init
    functionSourceFile: /src/frr/sharpd/sharp_vty.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void sharp_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:37,1
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:38,1
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:40,1
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:44,1
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:50,1
    - Dst: frr_pthread_stop
      Src: /src/frr/sharpd/sharp_logpump.c:54,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/sharpd/sharp_logpump.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 57
    functionName: logpump_done
    functionSourceFile: /src/frr/sharpd/sharp_logpump.c
    functionUses: 0
    functionsReached:
    - frr_pthread_stop
    - frr_pthread_destroy
    - vty_out
    linkageType: ''
    returnType: void
    signature: void logpump_done(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_tls_buffer_init
      Src: /src/frr/sharpd/sharp_logpump.c:66,1
    - Dst: clock_gettime
      Src: /src/frr/sharpd/sharp_logpump.c:68,1
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_logpump.c:72,1
    - Dst: clock_gettime
      Src: /src/frr/sharpd/sharp_logpump.c:75,1
    - Dst: clock_nanosleep
      Src: /src/frr/sharpd/sharp_logpump.c:85,1
    - Dst: nanosleep
      Src: /src/frr/sharpd/sharp_logpump.c:96,1
    - Dst: zlog_tls_buffer_fini
      Src: /src/frr/sharpd/sharp_logpump.c:100,1
    - Dst: getrusage
      Src: /src/frr/sharpd/sharp_logpump.c:103,1
    - Dst: getrusage
      Src: /src/frr/sharpd/sharp_logpump.c:105,1
    - Dst: event_add_timer_msec
      Src: /src/frr/sharpd/sharp_logpump.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 110
    functionName: logpump_run
    functionSourceFile: /src/frr/sharpd/sharp_logpump.c
    functionUses: 0
    functionsReached:
    - clock_nanosleep
    - zlog_tls_buffer_fini
    - clock_gettime
    - event_add_timer_msec
    - zlog_tls_buffer_init
    - zlog_debug
    - nanosleep
    - getrusage
    linkageType: ''
    returnType: void
    signature: void *logpump_run(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fpt
    - res
    argTypes:
    - struct frr_pthread*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: logpump_halt
    functionSourceFile: /src/frr/sharpd/sharp_logpump.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int logpump_halt(struct frr_pthread *fpt, void **res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:127,1
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:131,1
    - Dst: vty_out
      Src: /src/frr/sharpd/sharp_logpump.c:132,1
    - Dst: frr_pthread_new
      Src: /src/frr/sharpd/sharp_logpump.c:141,1
    - Dst: frr_pthread_run
      Src: /src/frr/sharpd/sharp_logpump.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - vty
    - duration
    - frequency
    - burst
    argTypes:
    - struct vty*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 143
    functionName: sharp_logpump_run
    functionSourceFile: /src/frr/sharpd/sharp_logpump.c
    functionUses: 0
    functionsReached:
    - frr_pthread_run
    - vty_out
    - frr_pthread_new
    linkageType: ''
    returnType: void
    signature: "void sharp_logpump_run(struct vty *vty, unsigned duration, unsigned
      frequency,\n\t\t       unsigned burst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/sharpd/sharp_main.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: sighup
    functionSourceFile: /src/frr/sharpd/sharp_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/sharpd/sharp_main.c:69,1
    - Dst: frr_fini
      Src: /src/frr/sharpd/sharp_main.c:71,1
    - Dst: exit
      Src: /src/frr/sharpd/sharp_main.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: sigint
    functionSourceFile: /src/frr/sharpd/sharp_main.c
    functionUses: 0
    functionsReached:
    - exit
    - zlog_notice
    - frr_fini
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/sharpd/sharp_main.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: sigusr1
    functionSourceFile: /src/frr/sharpd/sharp_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/sharpd/sharp_main.c:125,1
    - Dst: list_new
      Src: /src/frr/sharpd/sharp_main.c:126,1
    - Dst: list_new
      Src: /src/frr/sharpd/sharp_main.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: sharp_global_init
    functionSourceFile: /src/frr/sharpd/sharp_main.c
    functionUses: 0
    functionsReached:
    - list_new
    - memset
    linkageType: ''
    returnType: void
    signature: void sharp_global_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_main.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: sharp_start_configuration
    functionSourceFile: /src/frr/sharpd/sharp_main.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void sharp_start_configuration(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/sharpd/sharp_main.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: sharp_end_configuration
    functionSourceFile: /src/frr/sharpd/sharp_main.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void sharp_end_configuration(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/sharpd/sharp_main.c:143,1
    - Dst: frr_opt_add
      Src: /src/frr/sharpd/sharp_main.c:144,1
    - Dst: frr_getopt
      Src: /src/frr/sharpd/sharp_main.c:149,1
    - Dst: frr_help_exit
      Src: /src/frr/sharpd/sharp_main.c:158,1
    - Dst: frr_init
      Src: /src/frr/sharpd/sharp_main.c:162,1
    - Dst: cmd_init_config_callbacks
      Src: /src/frr/sharpd/sharp_main.c:164,1
    - Dst: sharp_global_init
      Src: /src/frr/sharpd/sharp_main.c:166,1
    - Dst: sharp_nhgroup_init
      Src: /src/frr/sharpd/sharp_main.c:168,1
    - Dst: vrf_init
      Src: /src/frr/sharpd/sharp_main.c:169,1
    - Dst: sharp_zebra_init
      Src: /src/frr/sharpd/sharp_main.c:171,1
    - Dst: sharp_vty_init
      Src: /src/frr/sharpd/sharp_main.c:174,1
    - Dst: frr_config_fork
      Src: /src/frr/sharpd/sharp_main.c:176,1
    - Dst: frr_run
      Src: /src/frr/sharpd/sharp_main.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 181
    functionName: main
    functionSourceFile: /src/frr/sharpd/sharp_main.c
    functionUses: 6
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - sharp_global_init
    - frr_getopt
    - frr_init
    - vrf_init
    - sharp_zebra_init
    - sharp_vty_init
    - cmd_init_config_callbacks
    - frr_config_fork
    - sharp_nhgroup_init
    - frr_run
    - frr_opt_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/sharpd/sharp_nht.c:28,1
    - Dst: prefix_same
      Src: /src/frr/sharpd/sharp_nht.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: sharp_nh_tracker_get
    functionSourceFile: /src/frr/sharpd/sharp_nht.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - prefix_same
    linkageType: ''
    returnType: struct sharp_nh_tracker
    signature: struct sharp_nh_tracker *sharp_nh_tracker_get(struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_should_yield
      Src: /src/frr/zebra/zebra_fpm.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: zfpm_thread_should_yield
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - event_should_yield
    linkageType: ''
    returnType: int
    signature: int zfpm_thread_should_yield(struct event *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum zfpm_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 313
    functionName: zfpm_state_to_str
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zfpm_state_to_str(enum zfpm_state state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/zebra/zebra_fpm.c:324,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - reference
    argTypes:
    - time_t
    assertStmts:
    - condition: (0)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 332
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 332
    functionName: zfpm_get_elapsed_time
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - monotime
    - assert
    linkageType: ''
    returnType: time_t
    signature: time_t zfpm_get_elapsed_time(time_t reference)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm.c:339,1
    - Dst: rib_tables_iter_init
      Src: /src/frr/zebra/zebra_fpm.c:340,1
    - Dst: route_table_iter_init
      Src: /src/frr/zebra/zebra_fpm.c:347,1
    - Dst: route_table_iter_cleanup
      Src: /src/frr/zebra/zebra_fpm.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct zfpm_rnodes_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 349
    functionName: zfpm_rnodes_iter_init
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - rib_tables_iter_init
    - route_table_iter_init
    - memset
    - route_table_iter_cleanup
    linkageType: ''
    returnType: void
    signature: void zfpm_rnodes_iter_init(struct zfpm_rnodes_iter *iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_table_iter_next
      Src: /src/frr/zebra/zebra_fpm.c:361,1
    - Dst: route_table_iter_cleanup
      Src: /src/frr/zebra/zebra_fpm.c:368,1
    - Dst: rib_tables_iter_next
      Src: /src/frr/zebra/zebra_fpm.c:370,1
    - Dst: route_table_iter_init
      Src: /src/frr/zebra/zebra_fpm.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct zfpm_rnodes_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 379
    functionName: zfpm_rnodes_iter_next
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - route_table_iter_cleanup
    - route_table_iter_next
    - route_table_iter_init
    - rib_tables_iter_next
    linkageType: ''
    returnType: struct route_node
    signature: 'struct route_node *

      zfpm_rnodes_iter_next(struct zfpm_rnodes_iter *iter)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_iter_pause
      Src: /src/frr/zebra/zebra_fpm.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct zfpm_rnodes_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 387
    functionName: zfpm_rnodes_iter_pause
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - route_table_iter_pause
    linkageType: ''
    returnType: void
    signature: void zfpm_rnodes_iter_pause(struct zfpm_rnodes_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_iter_cleanup
      Src: /src/frr/zebra/zebra_fpm.c:394,1
    - Dst: rib_tables_iter_cleanup
      Src: /src/frr/zebra/zebra_fpm.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iter
    argTypes:
    - struct zfpm_rnodes_iter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 396
    functionName: zfpm_rnodes_iter_cleanup
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - route_table_iter_cleanup
    - rib_tables_iter_cleanup
    linkageType: ''
    returnType: void
    signature: void zfpm_rnodes_iter_cleanup(struct zfpm_rnodes_iter *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct zfpm_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: zfpm_stats_init
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void zfpm_stats_init(struct zfpm_stats *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_stats_init
      Src: /src/frr/zebra/zebra_fpm.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct zfpm_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 414
    functionName: zfpm_stats_reset
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_stats_init
    linkageType: ''
    returnType: void
    signature: void zfpm_stats_reset(struct zfpm_stats *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_fpm.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct zfpm_stats*
    - struct zfpm_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 423
    functionName: zfpm_stats_copy
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void zfpm_stats_copy(const struct zfpm_stats *src,\n\t\t\t\t   struct
      zfpm_stats *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - s1
    - s2
    - result
    argTypes:
    - struct zfpm_stats*
    - struct zfpm_stats*
    - struct zfpm_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 453
    functionName: zfpm_stats_compose
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zfpm_stats_compose(const struct zfpm_stats *s1,\n\t\t\t       const
      struct zfpm_stats *s2,\n\t\t\t       struct zfpm_stats *result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:460,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:461,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_fpm.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!zfpm_g->t_read)
      pos:
        line_end: 459
        line_start: 459
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->sock >= 0)
      pos:
        line_end: 460
        line_start: 460
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 465
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 465
    functionName: zfpm_read_on
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_read_on(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:472,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:473,1
    - Dst: event_add_write
      Src: /src/frr/zebra/zebra_fpm.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!zfpm_g->t_write)
      pos:
        line_end: 471
        line_start: 471
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->sock >= 0)
      pos:
        line_end: 472
        line_start: 472
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 477
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 477
    functionName: zfpm_write_on
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_write_on(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_fpm.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 485
    functionName: zfpm_read_off
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zfpm_read_off(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_fpm.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 493
    functionName: zfpm_write_off
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zfpm_write_off(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_fpm.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: zfpm_connect_off
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zfpm_connect_off(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_fpm.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 503
    functionName: zfpm_conn_down_off
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zfpm_conn_down_off(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:520,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_fpm.c:528,1
    - Dst: zfpm_rnodes_iter_next
      Src: /src/frr/zebra/zebra_fpm.c:534,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_fpm.c:535,1
    - Dst: zfpm_trigger_update
      Src: /src/frr/zebra/zebra_fpm.c:539,1
    - Dst: zfpm_thread_should_yield
      Src: /src/frr/zebra/zebra_fpm.c:545,1
    - Dst: zfpm_rnodes_iter_pause
      Src: /src/frr/zebra/zebra_fpm.c:549,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/zebra_fpm.c:550,1
    - Dst: zfpm_rnodes_iter_cleanup
      Src: /src/frr/zebra/zebra_fpm.c:558,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 559
    functionName: zfpm_conn_up_thread_cb
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_rnodes_iter_cleanup
    - zfpm_rnodes_iter_pause
    - zfpm_rnodes_iter_next
    - event_add_timer_msec
    - zfpm_debug
    - zfpm_trigger_update
    - hash_iterate
    - rib_dest_from_rnode
    - zfpm_thread_should_yield
    linkageType: ''
    returnType: void
    signature: void zfpm_conn_up_thread_cb(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:568,1
    - Dst: zfpm_read_on
      Src: /src/frr/zebra/zebra_fpm.c:569,1
    - Dst: zfpm_write_on
      Src: /src/frr/zebra/zebra_fpm.c:570,1
    - Dst: zfpm_set_state
      Src: /src/frr/zebra/zebra_fpm.c:571,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_fpm.c:576,1
    - Dst: zfpm_rnodes_iter_init
      Src: /src/frr/zebra/zebra_fpm.c:578,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:581,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/zebra_fpm.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - detail
    argTypes:
    - char*
    assertStmts:
    - condition: (zfpm_g->sock >= 0)
      pos:
        line_end: 567
        line_start: 567
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 586
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 586
    functionName: zfpm_connection_up
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_read_on
    - zfpm_write_on
    - zfpm_set_state
    - event_add_timer_msec
    - zfpm_debug
    - EVENT_OFF
    - zfpm_rnodes_iter_init
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_connection_up(const char *detail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_read_off
      Src: /src/frr/zebra/zebra_fpm.c:599,1
    - Dst: zfpm_write_off
      Src: /src/frr/zebra/zebra_fpm.c:600,1
    - Dst: getsockopt
      Src: /src/frr/zebra/zebra_fpm.c:603,1
    - Dst: zfpm_connection_up
      Src: /src/frr/zebra/zebra_fpm.c:607,1
    - Dst: close
      Src: /src/frr/zebra/zebra_fpm.c:614,1
    - Dst: zfpm_start_connect_timer
      Src: /src/frr/zebra/zebra_fpm.c:617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 619
    functionName: zfpm_connect_check
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_connection_up
    - zfpm_start_connect_timer
    - zfpm_write_off
    - getsockopt
    - close
    - zfpm_read_off
    linkageType: ''
    returnType: void
    signature: void zfpm_connect_check(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:634,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/zebra/zebra_fpm.c:640,1
    - Dst: zfpm_mac_info_del
      Src: /src/frr/zebra/zebra_fpm.c:641,1
    - Dst: zfpm_rnodes_iter_next
      Src: /src/frr/zebra/zebra_fpm.c:645,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_fpm.c:646,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:649,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/zebra/zebra_fpm.c:650,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:654,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:655,1
    - Dst: rib_gc_dest
      Src: /src/frr/zebra/zebra_fpm.c:662,1
    - Dst: zfpm_thread_should_yield
      Src: /src/frr/zebra/zebra_fpm.c:668,1
    - Dst: zfpm_rnodes_iter_pause
      Src: /src/frr/zebra/zebra_fpm.c:672,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/zebra_fpm.c:673,1
    - Dst: zfpm_rnodes_iter_cleanup
      Src: /src/frr/zebra/zebra_fpm.c:679,1
    - Dst: zfpm_start_connect_timer
      Src: /src/frr/zebra/zebra_fpm.c:684,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (zfpm_g->state == ZFPM_STATE_IDLE)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 685
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 685
    functionName: zfpm_conn_down_thread_cb
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - assert
    - zfpm_start_connect_timer
    - zfpm_rnodes_iter_cleanup
    - TAILQ_REMOVE
    - zfpm_thread_should_yield
    - zfpm_rnodes_iter_pause
    - rib_gc_dest
    - CHECK_FLAG
    - zfpm_rnodes_iter_next
    - event_add_timer_msec
    - UNSET_FLAG
    - zfpm_mac_info_del
    - rib_dest_from_rnode
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void zfpm_conn_down_thread_cb(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:697,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_fpm.c:699,1
    - Dst: zfpm_read_off
      Src: /src/frr/zebra/zebra_fpm.c:701,1
    - Dst: zfpm_write_off
      Src: /src/frr/zebra/zebra_fpm.c:702,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zebra_fpm.c:704,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zebra_fpm.c:705,1
    - Dst: close
      Src: /src/frr/zebra/zebra_fpm.c:708,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:715,1
    - Dst: zfpm_rnodes_iter_init
      Src: /src/frr/zebra/zebra_fpm.c:716,1
    - Dst: zfpm_conn_down_off
      Src: /src/frr/zebra/zebra_fpm.c:717,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/zebra_fpm.c:718,1
    - Dst: zfpm_set_state
      Src: /src/frr/zebra/zebra_fpm.c:722,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - detail
    argTypes:
    - char*
    assertStmts:
    - condition: (zfpm_g->state == ZFPM_STATE_ESTABLISHED)
      pos:
        line_end: 696
        line_start: 696
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (!zfpm_g->t_conn_down)
      pos:
        line_end: 714
        line_start: 714
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 723
      start: 692
    functionDepth: 2
    functionLinenumber: 692
    functionLinenumberEnd: 723
    functionName: zfpm_connection_down
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - zfpm_write_off
    - zfpm_conn_down_off
    - zfpm_set_state
    - close
    - event_add_timer_msec
    - zfpm_read_off
    - zfpm_rnodes_iter_init
    - stream_reset
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_connection_down(const char *detail)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_connect_check
      Src: /src/frr/zebra/zebra_fpm.c:741,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:745,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:746,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_fpm.c:750,1
    - Dst: stream_read_try
      Src: /src/frr/zebra/zebra_fpm.c:754,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_fpm.c:760,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_fpm.c:762,1
    - Dst: zfpm_connection_down
      Src: /src/frr/zebra/zebra_fpm.c:763,1
    - Dst: zfpm_connection_down
      Src: /src/frr/zebra/zebra_fpm.c:765,1
    - Dst: stream_set_getp
      Src: /src/frr/zebra/zebra_fpm.c:775,1
    - Dst: stream_pnt
      Src: /src/frr/zebra/zebra_fpm.c:777,1
    - Dst: fpm_msg_hdr_ok
      Src: /src/frr/zebra/zebra_fpm.c:779,1
    - Dst: zfpm_connection_down
      Src: /src/frr/zebra/zebra_fpm.c:780,1
    - Dst: fpm_msg_len
      Src: /src/frr/zebra/zebra_fpm.c:784,1
    - Dst: stream_read_try
      Src: /src/frr/zebra/zebra_fpm.c:792,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_fpm.c:798,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_fpm.c:800,1
    - Dst: zfpm_connection_down
      Src: /src/frr/zebra/zebra_fpm.c:801,1
    - Dst: zfpm_connection_down
      Src: /src/frr/zebra/zebra_fpm.c:803,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zebra_fpm.c:814,1
    - Dst: zfpm_read_on
      Src: /src/frr/zebra/zebra_fpm.c:817,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (zfpm_g->sock >= 0)
      pos:
        line_end: 745
        line_start: 745
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->state == ZFPM_STATE_ESTABLISHED)
      pos:
        line_end: 744
        line_start: 744
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 818
      start: 728
    functionDepth: 4
    functionLinenumber: 728
    functionLinenumberEnd: 818
    functionName: zfpm_read_cb
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - stream_read_try
    - zfpm_read_on
    - stream_set_getp
    - snprintf
    - fpm_msg_hdr_ok
    - stream_get_endp
    - safe_strerror
    - fpm_msg_len
    - zfpm_connection_down
    - stream_reset
    - stream_pnt
    - zfpm_connect_check
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_read_cb(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/zebra/zebra_fpm.c:822,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/zebra/zebra_fpm.c:822,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 826
    functionName: zfpm_updates_pending
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - TAILQ_EMPTY
    linkageType: ''
    returnType: bool
    signature: bool zfpm_updates_pending(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_fpm.c:840,1
    - Dst: stream_get_getp
      Src: /src/frr/zebra/zebra_fpm.c:840,1
    - Dst: zfpm_updates_pending
      Src: /src/frr/zebra/zebra_fpm.c:846,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 850
    functionName: zfpm_writes_pending
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_updates_pending
    - stream_get_getp
    - stream_get_endp
    linkageType: ''
    returnType: int
    signature: int zfpm_writes_pending(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_protobuf_encode_route
      Src: /src/frr/zebra/zebra_fpm.c:876,1
    - Dst: zfpm_netlink_encode_route
      Src: /src/frr/zebra/zebra_fpm.c:886,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:888,1
    - Dst: fpm_msg_align
      Src: /src/frr/zebra/zebra_fpm.c:888,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - dest
    - re
    - in_buf
    - in_buf_len
    - msg_type
    argTypes:
    - rib_dest_t*
    - struct route_entry*
    - char*
    - size_t
    - fpm_msg_type_e*
    assertStmts:
    - condition: (fpm_msg_align(len) == len)
      pos:
        line_end: 887
        line_start: 887
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 897
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 897
    functionName: zfpm_encode_route
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_netlink_encode_route
    - zfpm_protobuf_encode_route
    - fpm_msg_align
    - assert
    linkageType: ''
    returnType: int
    signature: "int zfpm_encode_route(rib_dest_t *dest, struct route_entry *re,\n\t\t\t\t
      \   char *in_buf, size_t in_buf_len,\n\t\t\t\t    fpm_msg_type_e *msg_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - rib_dest_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 907
    functionName: zfpm_route_for_update
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct route_entry
    signature: struct route_entry *zfpm_route_for_update(rib_dest_t *dest)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/zebra/zebra_fpm.c:945,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/zebra_fpm.c:955,1
    - Dst: STREAM_DATA
      Src: /src/frr/zebra/zebra_fpm.c:958,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_fpm.c:958,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/zebra_fpm.c:959,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/zebra/zebra_fpm.c:961,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:965,1
    - Dst: fpm_msg_data
      Src: /src/frr/zebra/zebra_fpm.c:970,1
    - Dst: zfpm_route_for_update
      Src: /src/frr/zebra/zebra_fpm.c:972,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:982,1
    - Dst: zfpm_encode_route
      Src: /src/frr/zebra/zebra_fpm.c:988,1
    - Dst: fpm_data_len_to_msg_len
      Src: /src/frr/zebra/zebra_fpm.c:993,1
    - Dst: htons
      Src: /src/frr/zebra/zebra_fpm.c:994,1
    - Dst: stream_forward_endp
      Src: /src/frr/zebra/zebra_fpm.c:995,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_fpm.c:1002,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1010,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/zebra/zebra_fpm.c:1011,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1014,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1016,1
    - Dst: rib_gc_dest
      Src: /src/frr/zebra/zebra_fpm.c:1022,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (CHECK_FLAG(dest->flags, RIB_DEST_UPDATE_FPM))
      pos:
        line_end: 964
        line_start: 964
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1034
      start: 932
    functionDepth: 2
    functionLinenumber: 932
    functionLinenumberEnd: 1034
    functionName: zfpm_build_route_updates
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - assert
    - zfpm_route_for_update
    - TAILQ_REMOVE
    - htons
    - stream_forward_endp
    - CHECK_FLAG
    - STREAM_DATA
    - STREAM_WRITEABLE
    - rib_gc_dest
    - stream_get_endp
    - zlog_err
    - fpm_msg_data
    - fpm_data_len_to_msg_len
    - UNSET_FLAG
    - SET_FLAG
    - zfpm_encode_route
    - TAILQ_EMPTY
    - TAILQ_FIRST
    linkageType: ''
    returnType: int
    signature: int zfpm_build_route_updates(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_netlink_encode_mac
      Src: /src/frr/zebra/zebra_fpm.c:1056,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1057,1
    - Dst: fpm_msg_align
      Src: /src/frr/zebra/zebra_fpm.c:1057,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - mac
    - in_buf
    - in_buf_len
    - msg_type
    argTypes:
    - struct fpm_mac_info_t*
    - char*
    - size_t
    - fpm_msg_type_e*
    assertStmts:
    - condition: (fpm_msg_align(len) == len)
      pos:
        line_end: 1056
        line_start: 1056
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1065
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1065
    functionName: zfpm_encode_mac
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_netlink_encode_mac
    - fpm_msg_align
    - assert
    linkageType: ''
    returnType: int
    signature: "int zfpm_encode_mac(struct fpm_mac_info_t *mac, char *in_buf,\n\t\t\t\tsize_t
      in_buf_len, fpm_msg_type_e *msg_type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/zebra/zebra_fpm.c:1077,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/zebra_fpm.c:1085,1
    - Dst: STREAM_DATA
      Src: /src/frr/zebra/zebra_fpm.c:1088,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_fpm.c:1088,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/zebra_fpm.c:1089,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/zebra/zebra_fpm.c:1091,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1096,1
    - Dst: zfpm_mac_info_del
      Src: /src/frr/zebra/zebra_fpm.c:1098,1
    - Dst: fpm_msg_data
      Src: /src/frr/zebra/zebra_fpm.c:1105,1
    - Dst: zfpm_encode_mac
      Src: /src/frr/zebra/zebra_fpm.c:1106,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1108,1
    - Dst: fpm_data_len_to_msg_len
      Src: /src/frr/zebra/zebra_fpm.c:1111,1
    - Dst: htons
      Src: /src/frr/zebra/zebra_fpm.c:1112,1
    - Dst: stream_forward_endp
      Src: /src/frr/zebra/zebra_fpm.c:1113,1
    - Dst: zfpm_mac_info_del
      Src: /src/frr/zebra/zebra_fpm.c:1116,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (data_len)
      pos:
        line_end: 1107
        line_start: 1107
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1127
      start: 1067
    functionDepth: 2
    functionLinenumber: 1067
    functionLinenumberEnd: 1127
    functionName: zfpm_build_mac_updates
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - assert
    - htons
    - stream_forward_endp
    - CHECK_FLAG
    - STREAM_DATA
    - STREAM_WRITEABLE
    - stream_get_endp
    - fpm_msg_data
    - fpm_data_len_to_msg_len
    - zfpm_encode_mac
    - TAILQ_EMPTY
    - zfpm_mac_info_del
    - TAILQ_FIRST
    linkageType: ''
    returnType: int
    signature: int zfpm_build_mac_updates(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1140,1
    - Dst: stream_empty
      Src: /src/frr/zebra/zebra_fpm.c:1140,1
    - Dst: zfpm_build_mac_updates
      Src: /src/frr/zebra/zebra_fpm.c:1147,1
    - Dst: zfpm_build_route_updates
      Src: /src/frr/zebra/zebra_fpm.c:1149,1
    - Dst: zfpm_updates_pending
      Src: /src/frr/zebra/zebra_fpm.c:1151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (stream_empty(s))
      pos:
        line_end: 1139
        line_start: 1139
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1152
      start: 1135
    functionDepth: 3
    functionLinenumber: 1135
    functionLinenumberEnd: 1152
    functionName: zfpm_build_updates
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - stream_empty
    - zfpm_build_mac_updates
    - zfpm_updates_pending
    - assert
    - zfpm_build_route_updates
    linkageType: ''
    returnType: void
    signature: void zfpm_build_updates(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_connect_check
      Src: /src/frr/zebra/zebra_fpm.c:1168,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1172,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1173,1
    - Dst: stream_empty
      Src: /src/frr/zebra/zebra_fpm.c:1185,1
    - Dst: zfpm_build_updates
      Src: /src/frr/zebra/zebra_fpm.c:1186,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_fpm.c:1189,1
    - Dst: stream_get_getp
      Src: /src/frr/zebra/zebra_fpm.c:1189,1
    - Dst: write
      Src: /src/frr/zebra/zebra_fpm.c:1194,1
    - Dst: stream_pnt
      Src: /src/frr/zebra/zebra_fpm.c:1194,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/zebra/zebra_fpm.c:1199,1
    - Dst: zfpm_connection_down
      Src: /src/frr/zebra/zebra_fpm.c:1202,1
    - Dst: stream_forward_getp
      Src: /src/frr/zebra/zebra_fpm.c:1211,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zebra_fpm.c:1219,1
    - Dst: zfpm_thread_should_yield
      Src: /src/frr/zebra/zebra_fpm.c:1226,1
    - Dst: zfpm_writes_pending
      Src: /src/frr/zebra/zebra_fpm.c:1232,1
    - Dst: zfpm_write_on
      Src: /src/frr/zebra/zebra_fpm.c:1233,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (zfpm_g->state == ZFPM_STATE_ESTABLISHED)
      pos:
        line_end: 1171
        line_start: 1171
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->sock >= 0)
      pos:
        line_end: 1172
        line_start: 1172
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1234
      start: 1157
    functionDepth: 4
    functionLinenumber: 1157
    functionLinenumberEnd: 1234
    functionName: zfpm_write_cb
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_write_on
    - zfpm_build_updates
    - write
    - stream_forward_getp
    - zfpm_thread_should_yield
    - zfpm_writes_pending
    - stream_get_endp
    - stream_empty
    - ERRNO_IO_RETRY
    - zfpm_connection_down
    - stream_reset
    - stream_pnt
    - zfpm_connect_check
    - stream_get_getp
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_write_cb(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1244,1
    - Dst: socket
      Src: /src/frr/zebra/zebra_fpm.c:1246,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_fpm.c:1248,1
    - Dst: strerror
      Src: /src/frr/zebra/zebra_fpm.c:1249,1
    - Dst: set_nonblocking
      Src: /src/frr/zebra/zebra_fpm.c:1254,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm.c:1257,1
    - Dst: htons
      Src: /src/frr/zebra/zebra_fpm.c:1259,1
    - Dst: htonl
      Src: /src/frr/zebra/zebra_fpm.c:1264,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_fpm.c:1273,1
    - Dst: connect
      Src: /src/frr/zebra/zebra_fpm.c:1275,1
    - Dst: zfpm_connection_up
      Src: /src/frr/zebra/zebra_fpm.c:1278,1
    - Dst: zfpm_read_on
      Src: /src/frr/zebra/zebra_fpm.c:1284,1
    - Dst: zfpm_write_on
      Src: /src/frr/zebra/zebra_fpm.c:1285,1
    - Dst: zfpm_set_state
      Src: /src/frr/zebra/zebra_fpm.c:1286,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_fpm.c:1291,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_fpm.c:1291,1
    - Dst: close
      Src: /src/frr/zebra/zebra_fpm.c:1292,1
    - Dst: zfpm_start_connect_timer
      Src: /src/frr/zebra/zebra_fpm.c:1297,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (zfpm_g->state == ZFPM_STATE_ACTIVE)
      pos:
        line_end: 1243
        line_start: 1243
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1298
      start: 1239
    functionDepth: 3
    functionLinenumber: 1239
    functionLinenumberEnd: 1298
    functionName: zfpm_connect_cb
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_read_on
    - zlog_info
    - zfpm_connection_up
    - zfpm_start_connect_timer
    - htonl
    - memset
    - htons
    - connect
    - strerror
    - socket
    - zfpm_write_on
    - monotime
    - zfpm_set_state
    - zlog_err
    - close
    - safe_strerror
    - set_nonblocking
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_connect_cb(struct event *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:1315,1
    - Dst: zfpm_state_to_str
      Src: /src/frr/zebra/zebra_fpm.c:1316,1
    - Dst: zfpm_state_to_str
      Src: /src/frr/zebra/zebra_fpm.c:1316,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1322,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1326,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1328,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1332,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1333,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1334,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1335,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1339,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1341,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1342,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1343,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - state
    - reason
    argTypes:
    - enum zfpm_state
    - char*
    assertStmts:
    - condition: (cur_state == ZFPM_STATE_ESTABLISHED)
      pos:
        line_end: 1321
        line_start: 1321
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: "(cur_state == ZFPM_STATE_IDLE\n\t\t       || cur_state == ZFPM_STATE_CONNECTING)"
      pos:
        line_end: 1326
        line_start: 1325
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->t_connect)
      pos:
        line_end: 1327
        line_start: 1327
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->sock)
      pos:
        line_end: 1331
        line_start: 1331
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (cur_state == ZFPM_STATE_ACTIVE)
      pos:
        line_end: 1332
        line_start: 1332
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->t_read)
      pos:
        line_end: 1333
        line_start: 1333
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->t_write)
      pos:
        line_end: 1334
        line_start: 1334
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->t_read)
      pos:
        line_end: 1341
        line_start: 1341
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->sock)
      pos:
        line_end: 1340
        line_start: 1340
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->t_write)
      pos:
        line_end: 1342
        line_start: 1342
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: "(cur_state == ZFPM_STATE_ACTIVE\n\t\t       || cur_state == ZFPM_STATE_CONNECTING)"
      pos:
        line_end: 1339
        line_start: 1338
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1348
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1348
    functionName: zfpm_set_state
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 3
    functionsReached:
    - zfpm_debug
    - zfpm_state_to_str
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_set_state(enum zfpm_state state, const char *reason)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_get_elapsed_time
      Src: /src/frr/zebra/zebra_fpm.c:1367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1356
    functionDepth: 2
    functionLinenumber: 1356
    functionLinenumberEnd: 1374
    functionName: zfpm_calc_connect_delay
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_get_elapsed_time
    linkageType: ''
    returnType: long
    signature: long zfpm_calc_connect_delay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1383,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1384,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1386,1
    - Dst: zfpm_calc_connect_delay
      Src: /src/frr/zebra/zebra_fpm.c:1390,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:1391,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_fpm.c:1393,1
    - Dst: zfpm_set_state
      Src: /src/frr/zebra/zebra_fpm.c:1395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - reason
    argTypes:
    - char*
    assertStmts:
    - condition: (!zfpm_g->t_connect)
      pos:
        line_end: 1382
        line_start: 1382
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: "(zfpm_g->state == ZFPM_STATE_IDLE\n\t       || zfpm_g->state ==
        ZFPM_STATE_ACTIVE\n\t       || zfpm_g->state == ZFPM_STATE_CONNECTING)"
      pos:
        line_end: 1387
        line_start: 1385
        source_file: /src/frr/zebra/zebra_fpm.c
    - condition: (zfpm_g->sock < 0)
      pos:
        line_end: 1383
        line_start: 1383
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1396
      start: 1379
    functionDepth: 3
    functionLinenumber: 1379
    functionLinenumberEnd: 1396
    functionName: zfpm_start_connect_timer
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 3
    functionsReached:
    - zfpm_calc_connect_delay
    - zfpm_set_state
    - zfpm_debug
    - event_add_timer
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_start_connect_timer(const char *reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1403
    functionDepth: 0
    functionLinenumber: 1403
    functionLinenumberEnd: 1406
    functionName: zfpm_is_enabled
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zfpm_is_enabled(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (zfpm_g->sock >= 0)
      pos:
        line_end: 1417
        line_start: 1417
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1421
      start: 1413
    functionDepth: 1
    functionLinenumber: 1413
    functionLinenumberEnd: 1421
    functionName: zfpm_conn_is_up
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int zfpm_conn_is_up(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_conn_is_up
      Src: /src/frr/zebra/zebra_fpm.c:1437,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_fpm.c:1440,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1442,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:1448,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1452,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/zebra/zebra_fpm.c:1453,1
    - Dst: zfpm_write_on
      Src: /src/frr/zebra/zebra_fpm.c:1462,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - rn
    - reason
    argTypes:
    - struct route_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1429
    functionDepth: 2
    functionLinenumber: 1429
    functionLinenumberEnd: 1464
    functionName: zfpm_trigger_update
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 1
    functionsReached:
    - zfpm_write_on
    - CHECK_FLAG
    - TAILQ_INSERT_TAIL
    - zfpm_debug
    - SET_FLAG
    - rib_dest_from_rnode
    - zfpm_conn_is_up
    linkageType: ''
    returnType: int
    signature: int zfpm_trigger_update(struct route_node *rn, const char *reason)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_conn_is_up
      Src: /src/frr/zebra/zebra_fpm.c:1477,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_fpm.c:1480,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1481,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:1484,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1486,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/zebra/zebra_fpm.c:1487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1490
    functionName: zfpm_trigger_remove
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - TAILQ_REMOVE
    - CHECK_FLAG
    - zfpm_debug
    - UNSET_FLAG
    - rib_dest_from_rnode
    - zfpm_conn_is_up
    linkageType: ''
    returnType: int
    signature: int zfpm_trigger_remove(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/zebra/zebra_fpm.c:1500,1
    - Dst: jhash_2words
      Src: /src/frr/zebra/zebra_fpm.c:1502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1495
    functionDepth: 1
    functionLinenumber: 1495
    functionLinenumberEnd: 1503
    functionName: zfpm_mac_info_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - jhash_2words
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zfpm_mac_info_hash_keymake(const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_fpm.c:1513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1508
    functionDepth: 0
    functionLinenumber: 1508
    functionLinenumberEnd: 1520
    functionName: zfpm_mac_info_cmp
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool zfpm_mac_info_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_fpm.c:1527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct fpm_mac_info_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1525
    functionDepth: 1
    functionLinenumber: 1525
    functionLinenumberEnd: 1528
    functionName: zfpm_mac_info_lookup
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct fpm_mac_info_t
    signature: struct fpm_mac_info_t *zfpm_mac_info_lookup(struct fpm_mac_info_t *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_fpm.c:1538,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_fpm.c:1540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1533
    functionDepth: 0
    functionLinenumber: 1533
    functionLinenumberEnd: 1544
    functionName: zfpm_mac_info_alloc
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *zfpm_mac_info_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_fpm.c:1551,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/zebra/zebra_fpm.c:1552,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_fpm.c:1553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fpm_mac
    argTypes:
    - struct fpm_mac_info_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1549
    functionDepth: 1
    functionLinenumber: 1549
    functionLinenumberEnd: 1554
    functionName: zfpm_mac_info_del
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 2
    functionsReached:
    - hash_release
    - XFREE
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: void zfpm_mac_info_del(struct fpm_mac_info_t *fpm_mac)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_conn_is_up
      Src: /src/frr/zebra/zebra_fpm.c:1577,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:1581,1
    - Dst: zl3vni_map_to_vxlan_if
      Src: /src/frr/zebra/zebra_fpm.c:1585,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_fpm.c:1586,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm.c:1588,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_fpm.c:1590,1
    - Dst: zfpm_mac_info_lookup
      Src: /src/frr/zebra/zebra_fpm.c:1594,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1605,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1607,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1608,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_fpm.c:1612,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1620,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1622,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_fpm.c:1624,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/zebra/zebra_fpm.c:1627,1
    - Dst: zfpm_write_on
      Src: /src/frr/zebra/zebra_fpm.c:1635,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 4
    argNames:
    - rmac
    - zl3vni
    - delete
    - reason
    argTypes:
    - struct zebra_mac*
    - struct zebra_l3vni*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1565
    functionDepth: 2
    functionLinenumber: 1565
    functionLinenumberEnd: 1637
    functionName: zfpm_trigger_rmac_update
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_mac_info_lookup
    - zfpm_write_on
    - memset
    - CHECK_FLAG
    - TAILQ_INSERT_TAIL
    - zfpm_debug
    - SET_FLAG
    - UNSET_FLAG
    - zl3vni_map_to_vxlan_if
    - zl3vni_map_to_svi_if
    - memcpy
    - hash_get
    - zfpm_conn_is_up
    linkageType: ''
    returnType: int
    signature: "int zfpm_trigger_rmac_update(struct zebra_mac *rmac,\n\t\t\t\t    struct
      zebra_l3vni *zl3vni, bool delete,\n\t\t\t\t    const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_trigger_rmac_update
      Src: /src/frr/zebra/zebra_fpm.c:1650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1644
    functionDepth: 3
    functionLinenumber: 1644
    functionLinenumberEnd: 1651
    functionName: zfpm_trigger_rmac_update_wrapper
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_trigger_rmac_update
    linkageType: ''
    returnType: void
    signature: "void zfpm_trigger_rmac_update_wrapper(struct hash_bucket *bucket,\n\t\t\t\t\t
      \    void *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_fpm.c:1662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1664
    functionName: zfpm_iterate_rmac_table
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void zfpm_iterate_rmac_table(struct hash_bucket *bucket, void *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_stats_copy
      Src: /src/frr/zebra/zebra_fpm.c:1677,1
    - Dst: zfpm_stats_compose
      Src: /src/frr/zebra/zebra_fpm.c:1682,1
    - Dst: zfpm_stats_reset
      Src: /src/frr/zebra/zebra_fpm.c:1688,1
    - Dst: zfpm_start_stats_timer
      Src: /src/frr/zebra/zebra_fpm.c:1690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1691
      start: 1669
    functionDepth: 2
    functionLinenumber: 1669
    functionLinenumberEnd: 1691
    functionName: zfpm_stats_timer_cb
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_stats_copy
    - zfpm_start_stats_timer
    - zfpm_stats_reset
    - zfpm_stats_compose
    linkageType: ''
    returnType: void
    signature: void zfpm_stats_timer_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm.c:1701,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_fpm.c:1702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1696
    functionDepth: 1
    functionLinenumber: 1696
    functionLinenumberEnd: 1703
    functionName: zfpm_stop_stats_timer
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zfpm_stop_stats_timer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm.c:1710,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_fpm.c:1712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!zfpm_g->t_stats)
      pos:
        line_end: 1709
        line_start: 1709
        source_file: /src/frr/zebra/zebra_fpm.c
    constantsTouched: []
    func_position:
      end: 1714
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1714
    functionName: zfpm_start_stats_timer
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - assert
    linkageType: ''
    returnType: void
    signature: void zfpm_start_stats_timer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - counter
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1719
    functionDepth: 0
    functionLinenumber: 1719
    functionLinenumberEnd: 1724
    functionName: ZFPM_SHOW_STAT
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZFPM_SHOW_STAT(counter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_fpm.c:1733,1
    - Dst: zfpm_stats_compose
      Src: /src/frr/zebra/zebra_fpm.c:1739,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1742,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1743,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1744,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1745,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1746,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1747,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1748,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1749,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1750,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1751,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1752,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1753,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1754,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1755,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1756,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1757,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1758,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1759,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1760,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1761,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1762,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1763,1
    - Dst: ZFPM_SHOW_STAT
      Src: /src/frr/zebra/zebra_fpm.c:1764,1
    - Dst: zfpm_get_elapsed_time
      Src: /src/frr/zebra/zebra_fpm.c:1769,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_fpm.c:1771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1728
    functionDepth: 2
    functionLinenumber: 1728
    functionLinenumberEnd: 1773
    functionName: zfpm_show_stats
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_get_elapsed_time
    - ZFPM_SHOW_STAT
    - vty_out
    - zfpm_stats_compose
    linkageType: ''
    returnType: void
    signature: void zfpm_show_stats(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_is_enabled
      Src: /src/frr/zebra/zebra_fpm.c:1780,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_fpm.c:1781,1
    - Dst: zfpm_stats_reset
      Src: /src/frr/zebra/zebra_fpm.c:1785,1
    - Dst: zfpm_stats_reset
      Src: /src/frr/zebra/zebra_fpm.c:1786,1
    - Dst: zfpm_stats_reset
      Src: /src/frr/zebra/zebra_fpm.c:1787,1
    - Dst: zfpm_stop_stats_timer
      Src: /src/frr/zebra/zebra_fpm.c:1789,1
    - Dst: zfpm_start_stats_timer
      Src: /src/frr/zebra/zebra_fpm.c:1790,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_fpm.c:1792,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_fpm.c:1794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1778
    functionDepth: 2
    functionLinenumber: 1778
    functionLinenumberEnd: 1795
    functionName: zfpm_clear_stats
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - vty_out
    - monotime
    - zfpm_stats_reset
    - zfpm_start_stats_timer
    - zfpm_stop_stats_timer
    - zfpm_is_enabled
    linkageType: ''
    returnType: void
    signature: void zfpm_clear_stats(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_fpm.c:1910,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_fpm.c:1912,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_fpm.c:1920,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_fpm.c:1922,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_fpm.c:1927,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_fpm.c:1933,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1935
    functionName: zfpm_init_message_format
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - flog_err
    - strcmp
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void zfpm_init_message_format(const char *format)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_fpm.c:1954,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1945
    functionDepth: 1
    functionLinenumber: 1945
    functionLinenumberEnd: 1958
    functionName: fpm_remote_srv_write
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int fpm_remote_srv_write(struct vty *vty)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm.c:1989,1
    - Dst: TAILQ_INIT
      Src: /src/frr/zebra/zebra_fpm.c:1991,1
    - Dst: TAILQ_INIT
      Src: /src/frr/zebra/zebra_fpm.c:1992,1
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_fpm.c:1995,1
    - Dst: zfpm_stats_init
      Src: /src/frr/zebra/zebra_fpm.c:2002,1
    - Dst: zfpm_stats_init
      Src: /src/frr/zebra/zebra_fpm.c:2003,1
    - Dst: zfpm_stats_init
      Src: /src/frr/zebra/zebra_fpm.c:2004,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm.c:2006,1
    - Dst: inet_pton
      Src: /src/frr/zebra/zebra_fpm.c:2007,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_fpm.c:2008,1
    - Dst: install_node
      Src: /src/frr/zebra/zebra_fpm.c:2010,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_fpm.c:2011,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_fpm.c:2012,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_fpm.c:2013,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_fpm.c:2014,1
    - Dst: zfpm_init_message_format
      Src: /src/frr/zebra/zebra_fpm.c:2016,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_fpm.c:2034,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_fpm.c:2035,1
    - Dst: zfpm_start_stats_timer
      Src: /src/frr/zebra/zebra_fpm.c:2037,1
    - Dst: zfpm_start_connect_timer
      Src: /src/frr/zebra/zebra_fpm.c:2038,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2040
      start: 1983
    functionDepth: 4
    functionLinenumber: 1983
    functionLinenumberEnd: 2040
    functionName: zfpm_init
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_stats_init
    - zfpm_start_connect_timer
    - install_node
    - stream_new
    - memset
    - hash_create
    - zfpm_init_message_format
    - zfpm_start_stats_timer
    - zlog_warn
    - inet_pton
    - install_element
    - TAILQ_INIT
    linkageType: ''
    returnType: int
    signature: int zfpm_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_write_off
      Src: /src/frr/zebra/zebra_fpm.c:2044,1
    - Dst: zfpm_read_off
      Src: /src/frr/zebra/zebra_fpm.c:2045,1
    - Dst: zfpm_connect_off
      Src: /src/frr/zebra/zebra_fpm.c:2046,1
    - Dst: zfpm_conn_down_off
      Src: /src/frr/zebra/zebra_fpm.c:2047,1
    - Dst: zfpm_stop_stats_timer
      Src: /src/frr/zebra/zebra_fpm.c:2049,1
    - Dst: hook_unregister
      Src: /src/frr/zebra/zebra_fpm.c:2051,1
    - Dst: hook_unregister
      Src: /src/frr/zebra/zebra_fpm.c:2052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2055
      start: 2042
    functionDepth: 2
    functionLinenumber: 2042
    functionLinenumberEnd: 2055
    functionName: zfpm_fini
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - zfpm_conn_down_off
    - zfpm_write_off
    - zfpm_stop_stats_timer
    - zfpm_connect_off
    - zfpm_read_off
    - hook_unregister
    linkageType: ''
    returnType: int
    signature: int zfpm_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_fpm.c:2059,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_fpm.c:2060,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_fpm.c:2061,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_fpm.c:2062,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_fpm.c:2063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2057
    functionDepth: 1
    functionLinenumber: 2057
    functionLinenumberEnd: 2065
    functionName: zebra_fpm_module_init
    functionSourceFile: /src/frr/zebra/zebra_fpm.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int zebra_fpm_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 25
    functionName: zfpm_debug
    functionSourceFile: /src/frr/zebra/zebra_fpm_private.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zfpm_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - (
    - _args
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: zfpm_debug
    functionSourceFile: /src/frr/zebra/zebra_fpm_private.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zfpm_debug(_args...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: zfpm_debug
    functionSourceFile: /src/frr/zebra/zebra_fpm_private.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zfpm_debug(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/tc_socket.c:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: kernel_tc_update
    functionSourceFile: /src/frr/zebra/tc_socket.c
    functionUses: 0
    functionsReached:
    - flog_err
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_tc_update(struct zebra_dplane_ctx *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:48,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:50,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_l2.c:51,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/zebra_l2.c:58,1
    - Dst: zebra_l2if_update_bridge_slave
      Src: /src/frr/zebra/zebra_l2.c:73,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - br_if
    - link
    - update_slave
    - chgflags
    argTypes:
    - struct interface*
    - int
    - bool
    - uint8_t
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zns)
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/frr/zebra/zebra_l2.c
    constantsTouched: []
    func_position:
      end: 86
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 86
    functionName: map_slaves_to_bridge
    functionSourceFile: /src/frr/zebra/zebra_l2.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - zebra_l2if_update_bridge_slave
    - assert
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    linkageType: ''
    returnType: void
    signature: "void map_slaves_to_bridge(struct interface *br_if, int link,\n\t\t\t\t
      bool update_slave, uint8_t chgflags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/zebra_l2.c:58,1
    - Dst: zebra_l2if_update_bridge_slave
      Src: /src/frr/zebra/zebra_l2.c:73,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 84
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/zebra_l2.c
    functionUses: 16
    functionsReached:
    - zebra_l2if_update_bridge_slave
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:95,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_l2.c:96,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_l2.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - br_slave
    - zns
    argTypes:
    - struct zebra_l2info_brslave*
    - struct zebra_ns*
    assertStmts:
    - condition: (zns)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/frr/zebra/zebra_l2.c
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: zebra_l2_map_slave_to_bridge
    functionSourceFile: /src/frr/zebra/zebra_l2.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index_per_ns
    - assert
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_l2_map_slave_to_bridge(struct zebra_l2info_brslave *br_slave,\n\t\t\t\t
      \ struct zebra_ns *zns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - br_slave
    argTypes:
    - struct zebra_l2info_brslave*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: zebra_l2_unmap_slave_from_bridge
    functionSourceFile: /src/frr/zebra/zebra_l2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_l2_unmap_slave_from_bridge(struct zebra_l2info_brslave *br_slave)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_l2.c:118,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:131,1
    - Dst: zebra_evpn_es_bypass_update
      Src: /src/frr/zebra/zebra_l2.c:140,1
    - Dst: zebra_l2_map_slave_to_bond
      Src: /src/frr/zebra/zebra_l2.c:145,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_l2.c:151,1
    - Dst: zebra_l2_unmap_slave_from_bond
      Src: /src/frr/zebra/zebra_l2.c:156,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:164,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_l2.c:168,1
    - Dst: zebra_evpn_is_es_bond
      Src: /src/frr/zebra/zebra_l2.c:170,1
    - Dst: zebra_evpn_mh_update_protodown_bond_mbr
      Src: /src/frr/zebra/zebra_l2.c:171,1
    - Dst: zebra_l2_bond_lacp_bypass_eval
      Src: /src/frr/zebra/zebra_l2.c:173,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:177,1
    - Dst: zebra_l2_unmap_slave_from_bond
      Src: /src/frr/zebra/zebra_l2.c:182,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:189,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:195,1
    - Dst: zebra_evpn_is_es_bond
      Src: /src/frr/zebra/zebra_l2.c:201,1
    - Dst: zebra_evpn_mh_update_protodown_bond_mbr
      Src: /src/frr/zebra/zebra_l2.c:202,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_l2.c:204,1
    - Dst: zebra_l2_bond_lacp_bypass_eval
      Src: /src/frr/zebra/zebra_l2.c:206,1
    - Dst: zebra_l2if_update_bond
      Src: /src/frr/zebra/zebra_l2.c:209,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:215,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:221,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_l2.c:223,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:234,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_l2.c:235,1
    - Dst: zebra_l2_unmap_slave_from_bond
      Src: /src/frr/zebra/zebra_l2.c:236,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_l2.c:238,1
    - Dst: zebra_l2_bridge_add_update
      Src: /src/frr/zebra/zebra_l2.c:246,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:254,1
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2.c:256,1
    - Dst: zebra_l2_bridge_if_add
      Src: /src/frr/zebra/zebra_l2.c:258,1
    - Dst: map_slaves_to_bridge
      Src: /src/frr/zebra/zebra_l2.c:261,1
    - Dst: zebra_l2_bridge_del
      Src: /src/frr/zebra/zebra_l2.c:267,1
    - Dst: zebra_l2_bridge_if_del
      Src: /src/frr/zebra/zebra_l2.c:269,1
    - Dst: map_slaves_to_bridge
      Src: /src/frr/zebra/zebra_l2.c:272,1
    - Dst: zebra_l2if_update_bridge
      Src: /src/frr/zebra/zebra_l2.c:275,1
    - Dst: map_slaves_to_bridge
      Src: /src/frr/zebra/zebra_l2.c:279,1
    - Dst: zebra_l2_vlanif_update
      Src: /src/frr/zebra/zebra_l2.c:286,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:292,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_l2.c:295,1
    - Dst: zebra_l2_greif_add_update
      Src: /src/frr/zebra/zebra_l2.c:303,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:310,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_l2.c:313,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_l2.c:318,1
    - Dst: zebra_l2_vxlanif_add_update
      Src: /src/frr/zebra/zebra_l2.c:330,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:338,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_l2.c:341,1
    - Dst: zebra_vxlan_if_add
      Src: /src/frr/zebra/zebra_l2.c:342,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2.c:346,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_l2.c:349,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_l2.c:354,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_l2.c:356,1
    - Dst: zebra_vxlan_if_update
      Src: /src/frr/zebra/zebra_l2.c:366,1
    - Dst: zebra_l2_vxlanif_update_access_vlan
      Src: /src/frr/zebra/zebra_l2.c:373,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:383,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:386,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_l2.c:386,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2.c:393,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_l2.c:394,1
    - Dst: zebra_evpn_vl_vxl_deref
      Src: /src/frr/zebra/zebra_l2.c:399,1
    - Dst: zebra_evpn_vl_vxl_ref
      Src: /src/frr/zebra/zebra_l2.c:400,1
    - Dst: zebra_vxlan_if_update
      Src: /src/frr/zebra/zebra_l2.c:401,1
    - Dst: zebra_l2_vxlanif_del
      Src: /src/frr/zebra/zebra_l2.c:407,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:412,1
    - Dst: zebra_vxlan_if_del
      Src: /src/frr/zebra/zebra_l2.c:414,1
    - Dst: zebra_l2if_update_bridge_slave
      Src: /src/frr/zebra/zebra_l2.c:422,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2.c:432,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:435,1
    - Dst: zebra_vxlan_if_update
      Src: /src/frr/zebra/zebra_l2.c:445,1
    - Dst: zebra_vxlan_if_update
      Src: /src/frr/zebra/zebra_l2.c:449,1
    - Dst: zebra_l2_map_slave_to_bridge
      Src: /src/frr/zebra/zebra_l2.c:465,1
    - Dst: zebra_vxlan_if_update
      Src: /src/frr/zebra/zebra_l2.c:468,1
    - Dst: zebra_evpn_es_local_br_port_update
      Src: /src/frr/zebra/zebra_l2.c:470,1
    - Dst: zebra_vxlan_if_update
      Src: /src/frr/zebra/zebra_l2.c:478,1
    - Dst: zebra_evpn_es_local_br_port_update
      Src: /src/frr/zebra/zebra_l2.c:480,1
    - Dst: zebra_l2_unmap_slave_from_bridge
      Src: /src/frr/zebra/zebra_l2.c:481,1
    - Dst: zebra_l2if_update_bond_slave
      Src: /src/frr/zebra/zebra_l2.c:485,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:494,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2.c:499,1
    - Dst: zebra_l2_bond_lacp_bypass_eval
      Src: /src/frr/zebra/zebra_l2.c:511,1
    - Dst: zebra_l2_map_slave_to_bond
      Src: /src/frr/zebra/zebra_l2.c:523,1
    - Dst: zebra_l2_unmap_slave_from_bond
      Src: /src/frr/zebra/zebra_l2.c:525,1
    - Dst: zebra_vlan_bitmap_compute
      Src: /src/frr/zebra/zebra_l2.c:528,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:535,1
    - Dst: bf_set_bit
      Src: /src/frr/zebra/zebra_l2.c:538,1
    - Dst: zebra_vlan_mbr_re_eval
      Src: /src/frr/zebra/zebra_l2.c:541,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2.c:547,1
    - Dst: bf_cmp
      Src: /src/frr/zebra/zebra_l2.c:549,1
    - Dst: bf_for_each_set_bit
      Src: /src/frr/zebra/zebra_l2.c:553,1
    - Dst: bf_test_index
      Src: /src/frr/zebra/zebra_l2.c:555,1
    - Dst: zebra_evpn_vl_mbr_ref
      Src: /src/frr/zebra/zebra_l2.c:556,1
    - Dst: bf_release_index
      Src: /src/frr/zebra/zebra_l2.c:559,1
    - Dst: bf_for_each_set_bit
      Src: /src/frr/zebra/zebra_l2.c:563,1
    - Dst: zebra_evpn_vl_mbr_deref
      Src: /src/frr/zebra/zebra_l2.c:564,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 3
    argCount: 1
    argNames:
    - bond_zif
    argTypes:
    - struct zebra_if*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (IS_ZEBRA_VXLAN_IF_VNI(zif))
      pos:
        line_end: 385
        line_start: 385
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 411
        line_start: 411
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 382
        line_start: 382
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 253
        line_start: 253
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 291
        line_start: 291
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 493
        line_start: 493
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 434
        line_start: 434
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 534
        line_start: 534
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 337
        line_start: 337
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/frr/zebra/zebra_l2.c
    - condition: (zif)
      pos:
        line_end: 546
        line_start: 546
        source_file: /src/frr/zebra/zebra_l2.c
    constantsTouched: []
    func_position:
      end: 566
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 566
    functionName: zebra_l2_bond_lacp_bypass_eval
    functionSourceFile: /src/frr/zebra/zebra_l2.c
    functionUses: 1
    functionsReached:
    - list_delete
    - BRIDGE_FROM_ZEBRA_IF
    - zebra_l2_bond_lacp_bypass_eval
    - listnode_add
    - zebra_l2_map_slave_to_bridge
    - zebra_evpn_mh_update_protodown_bond_mbr
    - IPV4_ADDR_SAME
    - zebra_l2_bridge_del
    - zebra_l2_map_slave_to_bond
    - zebra_vxlan_if_del
    - if_lookup_by_index
    - zebra_l2if_update_bridge
    - zebra_vxlan_if_add
    - zebra_l2_vlanif_update
    - memset
    - ALL_LIST_ELEMENTS_RO
    - zebra_vlan_bitmap_compute
    - zebra_vlan_mbr_re_eval
    - zlog_debug
    - zebra_l2_bridge_if_add
    - zebra_l2_bridge_if_del
    - zebra_vxlan_if_update
    - zebra_l2_vxlanif_del
    - zebra_l2_vxlanif_add_update
    - zebra_l2if_update_bridge_slave
    - assert
    - zebra_l2_bridge_add_update
    - zebra_l2_greif_add_update
    - bf_for_each_set_bit
    - bf_release_index
    - zebra_evpn_vl_vxl_ref
    - zebra_l2_unmap_slave_from_bridge
    - zebra_l2if_update_bond_slave
    - zebra_l2if_update_bond
    - zebra_evpn_es_local_br_port_update
    - bf_set_bit
    - IS_ZEBRA_VXLAN_IF_VNI
    - listnode_delete
    - memcpy
    - zebra_l2_vxlanif_update_access_vlan
    - bf_cmp
    - zebra_evpn_vl_mbr_deref
    - zebra_l2_unmap_slave_from_bond
    - zebra_evpn_vl_mbr_ref
    - zebra_evpn_is_es_bond
    - zebra_evpn_es_bypass_update
    - list_new
    - zebra_vxlan_if_vni_find
    - zebra_evpn_vl_vxl_deref
    - bf_test_index
    - ALL_LIST_ELEMENTS
    - map_slaves_to_bridge
    linkageType: ''
    returnType: void
    signature: void zebra_l2_bond_lacp_bypass_eval(struct zebra_if *bond_zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/frr/zebra/ipforward_proc.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - fp
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: dropline
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - getc
    linkageType: ''
    returnType: void
    signature: void dropline(FILE *fp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:33,1
    - Dst: dropline
      Src: /src/frr/zebra/ipforward_proc.c:39,1
    - Dst: fgets
      Src: /src/frr/zebra/ipforward_proc.c:44,1
    - Dst: sscanf
      Src: /src/frr/zebra/ipforward_proc.c:45,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 53
    functionName: ipforward
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - fclose
    - dropline
    - fgets
    - sscanf
    linkageType: ''
    returnType: int
    signature: int ipforward(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:64,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:70,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:72,1
    - Dst: ipforward
      Src: /src/frr/zebra/ipforward_proc.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 77
    functionName: ipforward_on
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - ipforward
    - fprintf
    - fclose
    linkageType: ''
    returnType: int
    signature: int ipforward_on(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:64,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:70,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 74
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - fprintf
    - fclose
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:85,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:91,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:93,1
    - Dst: ipforward
      Src: /src/frr/zebra/ipforward_proc.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 98
    functionName: ipforward_off
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - ipforward
    - fprintf
    - fclose
    linkageType: ''
    returnType: int
    signature: int ipforward_off(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:85,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:91,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 95
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - fprintf
    - fclose
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:110,1
    - Dst: fgets
      Src: /src/frr/zebra/ipforward_proc.c:115,1
    - Dst: sscanf
      Src: /src/frr/zebra/ipforward_proc.c:116,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 124
    functionName: ipforward_ipv6
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fgets
    - fopen
    - sscanf
    - fclose
    linkageType: ''
    returnType: int
    signature: int ipforward_ipv6(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:132,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:138,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:140,1
    - Dst: ipforward_ipv6
      Src: /src/frr/zebra/ipforward_proc.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 145
    functionName: ipforward_ipv6_on
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - ipforward_ipv6
    - fprintf
    - fclose
    linkageType: ''
    returnType: int
    signature: int ipforward_ipv6_on(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:132,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:138,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 142
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - fprintf
    - fclose
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:154,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:160,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:162,1
    - Dst: ipforward_ipv6
      Src: /src/frr/zebra/ipforward_proc.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 167
    functionName: ipforward_ipv6_off
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - ipforward_ipv6
    - fprintf
    - fclose
    linkageType: ''
    returnType: int
    signature: int ipforward_ipv6_off(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/ipforward_proc.c:154,1
    - Dst: fprintf
      Src: /src/frr/zebra/ipforward_proc.c:160,1
    - Dst: fclose
      Src: /src/frr/zebra/ipforward_proc.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_proc.c
    functionUses: 0
    functionsReached:
    - fopen
    - fprintf
    - fclose
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: RIB_SYSTEM_ROUTE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIB_SYSTEM_ROUTE(R)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: RIB_KERNEL_ROUTE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIB_KERNEL_ROUTE(R)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 232
    functionName: RIB_ROUTE_QUEUED
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIB_ROUTE_QUEUED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dest
    - ','
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 260
    functionName: RE_DEST_FOREACH_ROUTE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RE_DEST_FOREACH_ROUTE(dest, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - dest
    - ','
    - re
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: RE_DEST_FOREACH_ROUTE_SAFE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RE_DEST_FOREACH_ROUTE_SAFE(dest, re, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dest
    - ','
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 271
    functionName: RE_DEST_FIRST_ROUTE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RE_DEST_FIRST_ROUTE(dest, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dest
    - ','
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 274
    functionName: RE_DEST_NEXT_ROUTE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RE_DEST_NEXT_ROUTE(dest, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rn
    - ','
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RNODE_FOREACH_RE(rn, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rn
    - ','
    - re
    - ','
    - next
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 280
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RNODE_FOREACH_RE_SAFE(rn, re, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rn
    - ','
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 282
    functionName: RNODE_FIRST_RE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RNODE_FIRST_RE(rn, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rn
    - ','
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 284
    functionName: RNODE_NEXT_RE
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RNODE_NEXT_RE(rn, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - src
    - ','
    - re
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    functionName: route_entry_dump
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: route_entry_dump(prefix, src, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_info
      Src: /src/frr/zebra/rib.h:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: rib_table_info
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached:
    - route_table_get_info
    linkageType: ''
    returnType: struct rib_table_info
    signature: struct rib_table_info *rib_table_info(struct route_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 496
    functionName: rib_dest_from_rnode
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: rib_dest_t
    signature: rib_dest_t *rib_dest_from_rnode(struct route_node *rn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/rib.h:508,1
    - Dst: re_list_first
      Src: /src/frr/zebra/rib.h:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 513
    functionName: rnode_to_ribs
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached:
    - rib_dest_from_rnode
    - re_list_first
    linkageType: ''
    returnType: struct route_entry
    signature: struct route_entry *rnode_to_ribs(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - rib_dest_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 521
    functionName: rib_dest_prefix
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct prefix
    signature: struct prefix *rib_dest_prefix(rib_dest_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - rib_dest_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: rib_dest_af
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t rib_dest_af(rib_dest_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_table
      Src: /src/frr/zebra/rib.h:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - rib_dest_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 539
    functionName: rib_dest_table
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached:
    - srcdest_rnode_table
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *rib_dest_table(rib_dest_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rib_table_info
      Src: /src/frr/zebra/rib.h:546,1
    - Dst: rib_dest_table
      Src: /src/frr/zebra/rib.h:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - rib_dest_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 544
    functionDepth: 2
    functionLinenumber: 544
    functionLinenumberEnd: 547
    functionName: rib_dest_vrf
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached:
    - rib_table_info
    - rib_dest_table
    linkageType: ''
    returnType: struct zebra_vrf
    signature: struct zebra_vrf *rib_dest_vrf(rib_dest_t *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rib.h:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iter
    argTypes:
    - rib_tables_iter_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 562
    functionName: rib_tables_iter_init
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void rib_tables_iter_init(rib_tables_iter_t *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - rib_tables_iter_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 573
    functionName: rib_tables_iter_started
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rib_tables_iter_started(rib_tables_iter_t *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - rib_tables_iter_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: rib_tables_iter_cleanup
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rib_tables_iter_cleanup(rib_tables_iter_t *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rib.h:596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - re
    argTypes:
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 600
    functionName: rib_get_fib_nhg
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: struct nexthop_group
    signature: struct nexthop_group *rib_get_fib_nhg(struct route_entry *re)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - re
    argTypes:
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 610
    functionName: rib_get_fib_backup_nhg
    functionSourceFile: /src/frr/zebra/rib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct nexthop_group
    signature: "struct nexthop_group *rib_get_fib_backup_nhg(\n\tstruct route_entry
      *re)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - zns_info
    - zns
    - is_cmd
    argTypes:
    - struct zebra_dplane_info*
    - struct zebra_ns*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 53
    functionName: zebra_dplane_info_from_zns
    functionSourceFile: /src/frr/zebra/zebra_dplane.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zebra_dplane_info_from_zns(struct zebra_dplane_info *zns_info,\n\t\t\t
      \  const struct zebra_ns *zns, bool is_cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: IS_ZEBRA_NEIGH_ACTIVE
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_NEIGH_ACTIVE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: IS_ZEBRA_NEIGH_INACTIVE
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_NEIGH_INACTIVE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: ZEBRA_NEIGH_SET_ACTIVE
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_NEIGH_SET_ACTIVE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: ZEBRA_NEIGH_SET_INACTIVE
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_NEIGH_SET_INACTIVE(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: zebra_evpn_neigh_is_static
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_neigh_is_static(struct zebra_neigh *neigh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.h:144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: zebra_evpn_neigh_is_ready_for_bgp
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached:
    - IS_ZEBRA_NEIGH_ACTIVE
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_neigh_is_ready_for_bgp(struct zebra_neigh *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.h:159,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_neigh.h:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 162
    functionName: zebra_evpn_neigh_stop_hold_timer
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_neigh_stop_hold_timer(struct zebra_neigh *n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.h:175,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.h:178,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.h:179,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.h:180,1
    - Dst: zebra_evpn_sync_neigh_static_chg
      Src: /src/frr/zebra/zebra_evpn_neigh.h:182,1
    - Dst: zebra_evpn_neigh_stop_hold_timer
      Src: /src/frr/zebra/zebra_evpn_neigh.h:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 193
    functionName: zebra_evpn_neigh_clear_sync_info
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.h
    functionUses: 0
    functionsReached:
    - zebra_evpn_neigh_is_static
    - zlog_debug
    - UNSET_FLAG
    - zebra_evpn_sync_neigh_static_chg
    - zebra_evpn_neigh_stop_hold_timer
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_neigh_clear_sync_info(struct zebra_neigh *n)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:42,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:45,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:60,1
    - Dst: htonl
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:63,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:73,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:87,1
    - Dst: htonl
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:91,1
    - Dst: writev
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:108,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:112,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 51
    argCount: 3
    argNames:
    - action
    - in_label
    - nhlfe
    argTypes:
    - int
    - mpls_label_t
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 116
    functionName: kernel_send_rtmsg_v4
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - memset
    - zlog_debug
    - safe_strerror
    - htonl
    - flog_err_sys
    - writev
    linkageType: ''
    returnType: int
    signature: "int kernel_send_rtmsg_v4(int action, mpls_label_t in_label,\n\t\t\t\tconst
      struct zebra_nhlfe *nhlfe)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writev
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - writev
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: ROUNDUP
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(a)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:137,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:140,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:155,1
    - Dst: htonl
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:158,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:168,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:172,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:178,1
    - Dst: htons
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:179,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:180,1
    - Dst: ROUNDUP
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:187,1
    - Dst: ROUNDUP
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:190,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:194,1
    - Dst: htonl
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:198,1
    - Dst: writev
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:215,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:219,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 58
    argCount: 3
    argNames:
    - action
    - in_label
    - nhlfe
    argTypes:
    - int
    - mpls_label_t
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 223
    functionName: kernel_send_rtmsg_v6
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - ROUNDUP
    - IN6_IS_ADDR_LINKLOCAL
    - flog_err_sys
    - zlog_debug
    - safe_strerror
    - htonl
    - writev
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int kernel_send_rtmsg_v6(int action, mpls_label_t in_label,\n\t\t\t\tconst
      struct zebra_nhlfe *nhlfe)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writev
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 216
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - writev
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:233,1
    - Dst: dplane_ctx_get_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:297,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:307,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:308,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:311,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:313,1
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:322,1
    - Dst: kernel_send_rtmsg_v4
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:324,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:326,1
    - Dst: kernel_send_rtmsg_v6
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:330,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:332,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 89
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 342
    functionName: kernel_lsp_cmd
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - flog_warn
    - kernel_send_rtmsg_v6
    - NHLFE_FAMILY
    - CHECK_FLAG
    - kernel_send_rtmsg_v4
    - dplane_ctx_get_in_label
    - dplane_ctx_get_nhlfe_list
    linkageType: ''
    returnType: int
    signature: int kernel_lsp_cmd(struct zebra_dplane_ctx *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:307,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:308,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:311,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:313,1
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:322,1
    - Dst: kernel_send_rtmsg_v4
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:324,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:326,1
    - Dst: kernel_send_rtmsg_v6
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:330,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:332,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 339
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 28
    functionsReached:
    - flog_warn
    - kernel_send_rtmsg_v6
    - NHLFE_FAMILY
    - CHECK_FLAG
    - kernel_send_rtmsg_v4
    - dplane_ctx_get_in_label
    linkageType: ''
    returnType: void
    signature: void frr_each(nhlfe_list_const, head, nhlfe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: kernel_lsp_cmd
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 344
    functionDepth: 3
    functionLinenumber: 344
    functionLinenumberEnd: 352
    functionName: kernel_lsp_update
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - kernel_lsp_cmd
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_lsp_update(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:363,1
    - Dst: dplane_ctx_get_pw_type
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:364,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:372,1
    - Dst: dplane_ctx_get_pw_type
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:373,1
    - Dst: dplane_ctx_get_pw_flags
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:377,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:381,1
    - Dst: dplane_ctx_get_pw_dest
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:382,1
    - Dst: dplane_ctx_get_pw_af
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:383,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:395,1
    - Dst: dplane_ctx_get_pw_af
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:396,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:399,1
    - Dst: dplane_ctx_get_pw_local_label
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:403,1
    - Dst: dplane_ctx_get_pw_remote_label
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:404,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:407,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:408,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:408,1
    - Dst: ioctl
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:411,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:412,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:413,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 418
    functionName: kmpw_install
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_pw_type
    - memset
    - strlcpy
    - dplane_ctx_get_pw_af
    - dplane_ctx_get_ifname
    - ioctl
    - dplane_ctx_get_pw_dest
    - zlog_debug
    - dplane_ctx_get_pw_remote_label
    - safe_strerror
    - flog_err_sys
    - dplane_ctx_get_pw_flags
    - dplane_ctx_get_pw_local_label
    - memcpy
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kmpw_install(struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:425,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:426,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:427,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:427,1
    - Dst: ioctl
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:430,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:431,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 437
    functionName: kmpw_uninstall
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - memset
    - strlcpy
    - dplane_ctx_get_ifname
    - ioctl
    - safe_strerror
    - flog_err_sys
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kmpw_uninstall(struct zebra_dplane_ctx *ctx)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:446,1
    - Dst: kmpw_install
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:448,1
    - Dst: kmpw_uninstall
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:451,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 63
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 509
    functionName: kernel_pw_update
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - kmpw_uninstall
    - kmpw_install
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_pw_update(struct zebra_dplane_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:517,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:518,1
    - Dst: socket
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:522,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:524,1
    - Dst: getsockopt
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:530,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:533,1
    - Dst: setsockopt
      Src: /src/frr/zebra/zebra_mpls_openbsd.c:538,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 551
    functionName: mpls_kernel_init
    functionSourceFile: /src/frr/zebra/zebra_mpls_openbsd.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - getsockopt
    - socket
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int mpls_kernel_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_zebra_valid_kernel_table
      Src: /src/frr/zebra/redistribute.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - afi
    - vrf_id
    - table_id
    argTypes:
    - afi_t
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 51
    functionName: is_zebra_import_table_enabled
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - is_zebra_valid_kernel_table
    linkageType: ''
    returnType: int
    signature: int is_zebra_import_table_enabled(afi_t afi, vrf_id_t vrf_id, uint32_t
      table_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_bitmap_check
      Src: /src/frr/zebra/redistribute.c:63,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/redistribute.c:67,1
    - Dst: memset
      Src: /src/frr/zebra/redistribute.c:72,1
    - Dst: afi2family
      Src: /src/frr/zebra/redistribute.c:73,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/redistribute.c:74,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:79,1
    - Dst: zsend_redistribute_route
      Src: /src/frr/zebra/redistribute.c:80,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/redistribute.c:85,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - client
    - vrf_id
    argTypes:
    - struct zserv*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 87
    functionName: zebra_redistribute_default
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - route_unlock_node
    - route_node_lookup
    - zsend_redistribute_route
    - memset
    - CHECK_FLAG
    - afi2family
    - zebra_vrf_table
    linkageType: ''
    returnType: void
    signature: void zebra_redistribute_default(struct zserv *client, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:79,1
    - Dst: zsend_redistribute_route
      Src: /src/frr/zebra/redistribute.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zsend_redistribute_route
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, newre)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/redistribute.c:98,1
    - Dst: route_top
      Src: /src/frr/zebra/redistribute.c:102,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/redistribute.c:102,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/redistribute.c:103,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:105,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:110,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:112,1
    - Dst: zebra_check_addr
      Src: /src/frr/zebra/redistribute.c:116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:118,1
    - Dst: zebra_check_addr
      Src: /src/frr/zebra/redistribute.c:124,1
    - Dst: zsend_redistribute_route
      Src: /src/frr/zebra/redistribute.c:127,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 5
    argNames:
    - client
    - type
    - instance
    - vrf_id
    - afi
    argTypes:
    - struct zserv*
    - int
    - unsigned short
    - vrf_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 130
    functionName: zebra_redistribute
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zsend_redistribute_route
    - zebra_route_string
    - srcdest_route_next
    - CHECK_FLAG
    - route_top
    - zebra_vrf_table
    - zlog_debug
    - RNODE_FOREACH_RE
    - zebra_check_addr
    linkageType: ''
    returnType: void
    signature: "void zebra_redistribute(struct zserv *client, int type,\n\t\t\t       unsigned
      short instance, vrf_id_t vrf_id,\n\t\t\t       int afi)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/redistribute.c:147,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/redistribute.c:148,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/redistribute.c:153,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/zebra/redistribute.c:154,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/zebra/redistribute.c:158,1
    - Dst: redist_check_instance
      Src: /src/frr/zebra/redistribute.c:166,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/zebra/redistribute.c:174,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 3
    argNames:
    - rn
    - re
    - client
    argTypes:
    - struct route_node*
    - struct route_entry*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 178
    functionName: zebra_redistribute_check
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - is_default_prefix
    - zebra_vrf_lookup_by_id
    - redist_check_instance
    - family2afi
    linkageType: ''
    returnType: bool
    signature: "bool zebra_redistribute_check(const struct route_node *rn,\n\t\t\t\t
      \    const struct route_entry *re,\n\t\t\t\t     struct zserv *client)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:190,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:193,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:194,1
    - Dst: zebra_check_addr
      Src: /src/frr/zebra/redistribute.c:196,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:198,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:203,1
    - Dst: zebra_redistribute_check
      Src: /src/frr/zebra/redistribute.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:206,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:209,1
    - Dst: zsend_redistribute_route
      Src: /src/frr/zebra/redistribute.c:213,1
    - Dst: zebra_redistribute_check
      Src: /src/frr/zebra/redistribute.c:215,1
    - Dst: zsend_redistribute_route
      Src: /src/frr/zebra/redistribute.c:216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - rn
    - re
    - prev_re
    argTypes:
    - struct route_node*
    - struct route_entry*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 218
    functionName: redistribute_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zsend_redistribute_route
    - zlog_debug
    - zebra_redistribute_check
    - ALL_LIST_ELEMENTS
    - zebra_route_string
    - zebra_check_addr
    linkageType: ''
    returnType: void
    signature: "void redistribute_update(const struct route_node *rn,\n\t\t\t const
      struct route_entry *re,\n\t\t\t const struct route_entry *prev_re)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:259,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:262,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:264,1
    - Dst: zebra_check_addr
      Src: /src/frr/zebra/redistribute.c:268,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:270,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:277,1
    - Dst: zebra_redistribute_check
      Src: /src/frr/zebra/redistribute.c:285,1
    - Dst: zebra_redistribute_check
      Src: /src/frr/zebra/redistribute.c:289,1
    - Dst: zsend_redistribute_route
      Src: /src/frr/zebra/redistribute.c:290,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 3
    argNames:
    - rn
    - old_re
    - new_re
    argTypes:
    - struct route_node*
    - struct route_entry*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 293
    functionName: redistribute_delete
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 6
    functionsReached:
    - zsend_redistribute_route
    - zlog_debug
    - zebra_redistribute_check
    - ALL_LIST_ELEMENTS
    - zebra_route_string
    - zebra_check_addr
    linkageType: ''
    returnType: void
    signature: "void redistribute_delete(const struct route_node *rn,\n\t\t\t const
      struct route_entry *old_re,\n\t\t\t const struct route_entry *new_re)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/redistribute.c:302,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/redistribute.c:303,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/redistribute.c:304,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:307,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:309,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:310,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/redistribute.c:310,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:311,1
    - Dst: flog_warn
      Src: /src/frr/zebra/redistribute.c:314,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:320,1
    - Dst: redist_check_instance
      Src: /src/frr/zebra/redistribute.c:326,1
    - Dst: redist_add_instance
      Src: /src/frr/zebra/redistribute.c:328,1
    - Dst: zebra_redistribute
      Src: /src/frr/zebra/redistribute.c:330,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:331,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/zebra/redistribute.c:334,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:335,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:337,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/redistribute.c:339,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:340,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/zebra/redistribute.c:341,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:342,1
    - Dst: zebra_redistribute
      Src: /src/frr/zebra/redistribute.c:343,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:343,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 296
    functionDepth: 2
    functionLinenumber: 296
    functionLinenumberEnd: 349
    functionName: zebra_redistribute_add
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - flog_warn
    - zvrf_id
    - redist_check_instance
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETC
    - vrf_bitmap_set
    - VRF_LOGNAME
    - zebra_redistribute
    - zebra_route_string
    - redist_add_instance
    linkageType: ''
    returnType: void
    signature: void zebra_redistribute_add(ZAPI_HANDLER_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/redistribute.c:357,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/redistribute.c:358,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/redistribute.c:359,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:362,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:364,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/redistribute.c:365,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/redistribute.c:365,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:366,1
    - Dst: flog_warn
      Src: /src/frr/zebra/redistribute.c:370,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:376,1
    - Dst: redist_del_instance
      Src: /src/frr/zebra/redistribute.c:388,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/redistribute.c:390,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:390,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 394
    functionName: zebra_redistribute_delete
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - zvrf_id
    - vrf_bitmap_unset
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETC
    - VRF_LOGNAME
    - zebra_route_string
    - redist_del_instance
    linkageType: ''
    returnType: void
    signature: void zebra_redistribute_delete(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/redistribute.c:400,1
    - Dst: flog_warn
      Src: /src/frr/zebra/redistribute.c:403,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/zebra/redistribute.c:408,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:408,1
    - Dst: zebra_redistribute_default
      Src: /src/frr/zebra/redistribute.c:409,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 413
    functionName: zebra_redistribute_default_add
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zebra_redistribute_default
    - flog_warn
    - zvrf_id
    - vrf_bitmap_set
    - STREAM_GETC
    linkageType: ''
    returnType: void
    signature: void zebra_redistribute_default_add(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/redistribute.c:419,1
    - Dst: flog_warn
      Src: /src/frr/zebra/redistribute.c:422,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/redistribute.c:427,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/redistribute.c:427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 431
    functionName: zebra_redistribute_default_delete
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - vrf_bitmap_unset
    - STREAM_GETC
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void zebra_redistribute_default_delete(ZAPI_HANDLER_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:440,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:444,1
    - Dst: zsend_interface_update
      Src: /src/frr/zebra/redistribute.c:452,1
    - Dst: zsend_interface_link_params
      Src: /src/frr/zebra/redistribute.c:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 457
    functionName: zebra_interface_up_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_debug
    - zsend_interface_update
    - zsend_interface_link_params
    linkageType: ''
    returnType: void
    signature: void zebra_interface_up_update(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:466,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:469,1
    - Dst: zsend_interface_update
      Src: /src/frr/zebra/redistribute.c:474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 476
    functionName: zebra_interface_down_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_debug
    - zsend_interface_update
    linkageType: ''
    returnType: void
    signature: void zebra_interface_down_update(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:485,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:488,1
    - Dst: zsend_interface_add
      Src: /src/frr/zebra/redistribute.c:494,1
    - Dst: zsend_interface_link_params
      Src: /src/frr/zebra/redistribute.c:495,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 497
    functionName: zebra_interface_add_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_debug
    - zsend_interface_link_params
    - zsend_interface_add
    linkageType: ''
    returnType: void
    signature: void zebra_interface_add_update(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:505,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:508,1
    - Dst: zsend_interface_delete
      Src: /src/frr/zebra/redistribute.c:514,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 516
    functionName: zebra_interface_delete_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_debug
    - zsend_interface_delete
    linkageType: ''
    returnType: void
    signature: void zebra_interface_delete_update(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:526,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:531,1
    - Dst: flog_warn
      Src: /src/frr/zebra/redistribute.c:532,1
    - Dst: zebra_vxlan_add_del_gw_macip
      Src: /src/frr/zebra/redistribute.c:536,1
    - Dst: router_id_add_address
      Src: /src/frr/zebra/redistribute.c:538,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:540,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:545,1
    - Dst: zsend_interface_address
      Src: /src/frr/zebra/redistribute.c:547,1
    - Dst: zebra_interface_nhg_reinstall
      Src: /src/frr/zebra/redistribute.c:554,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 555
    functionName: zebra_interface_address_add_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_add_del_gw_macip
    - flog_warn
    - zebra_interface_nhg_reinstall
    - CHECK_FLAG
    - zlog_debug
    - router_id_add_address
    - zsend_interface_address
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void zebra_interface_address_add_update(struct interface *ifp,\n\t\t\t\t\tstruct
      connected *ifc)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:565,1
    - Dst: zebra_vxlan_add_del_gw_macip
      Src: /src/frr/zebra/redistribute.c:570,1
    - Dst: router_id_del_address
      Src: /src/frr/zebra/redistribute.c:572,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:579,1
    - Dst: zsend_interface_address
      Src: /src/frr/zebra/redistribute.c:581,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 585
    functionName: zebra_interface_address_delete_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_add_del_gw_macip
    - router_id_del_address
    - CHECK_FLAG
    - zlog_debug
    - zsend_interface_address
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void zebra_interface_address_delete_update(struct interface *ifp,\n\t\t\t\t\t
      \  struct connected *ifc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:596,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:600,1
    - Dst: zsend_interface_update
      Src: /src/frr/zebra/redistribute.c:607,1
    - Dst: zsend_interface_delete
      Src: /src/frr/zebra/redistribute.c:609,1
    - Dst: zsend_interface_vrf_update
      Src: /src/frr/zebra/redistribute.c:610,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ifp
    - new_vrf_id
    argTypes:
    - struct interface*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 612
    functionName: zebra_interface_vrf_update_del
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zsend_interface_delete
    - zsend_interface_vrf_update
    - zlog_debug
    - ALL_LIST_ELEMENTS
    - zsend_interface_update
    linkageType: ''
    returnType: void
    signature: void zebra_interface_vrf_update_del(struct interface *ifp, vrf_id_t
      new_vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:623,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:627,1
    - Dst: zsend_interface_add
      Src: /src/frr/zebra/redistribute.c:634,1
    - Dst: zsend_interface_addresses
      Src: /src/frr/zebra/redistribute.c:635,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - old_vrf_id
    argTypes:
    - struct interface*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 637
    functionName: zebra_interface_vrf_update_add
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_debug
    - zsend_interface_addresses
    - zsend_interface_add
    linkageType: ''
    returnType: void
    signature: void zebra_interface_vrf_update_add(struct interface *ifp, vrf_id_t
      old_vrf_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/redistribute.c:649,1
    - Dst: zebra_import_table_route_map_check
      Src: /src/frr/zebra/redistribute.c:651,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/redistribute.c:657,1
    - Dst: zebra_del_import_table_entry
      Src: /src/frr/zebra/redistribute.c:658,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/redistribute.c:662,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:665,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/redistribute.c:675,1
    - Dst: zebra_del_import_table_entry
      Src: /src/frr/zebra/redistribute.c:676,1
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/redistribute.c:679,1
    - Dst: nexthop_group_new
      Src: /src/frr/zebra/redistribute.c:684,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/redistribute.c:685,1
    - Dst: rib_add_multipath
      Src: /src/frr/zebra/redistribute.c:687,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 4
    argNames:
    - zvrf
    - rn
    - re
    - rmap_name
    argTypes:
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 690
    functionName: zebra_add_import_table_entry
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - rib_add_multipath
    - nexthop_group_new
    - CHECK_FLAG
    - zebra_del_import_table_entry
    - UNSET_FLAG
    - zebra_rib_route_entry_new
    - copy_nexthops
    - family2afi
    - prefix_copy
    - zebra_import_table_route_map_check
    linkageType: ''
    returnType: int
    signature: "int zebra_add_import_table_entry(struct zebra_vrf *zvrf, struct route_node
      *rn,\n\t\t\t\t struct route_entry *re, const char *rmap_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:665,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 672
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, same)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/redistribute.c:698,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/redistribute.c:699,1
    - Dst: rib_delete
      Src: /src/frr/zebra/redistribute.c:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - zvrf
    - rn
    - re
    argTypes:
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 707
    functionName: zebra_del_import_table_entry
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 1
    functionsReached:
    - family2afi
    - prefix_copy
    - rib_delete
    linkageType: ''
    returnType: int
    signature: "int zebra_del_import_table_entry(struct zebra_vrf *zvrf, struct route_node
      *rn,\n\t\t\t\t struct route_entry *re)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/redistribute.c:716,1
    - Dst: is_zebra_valid_kernel_table
      Src: /src/frr/zebra/redistribute.c:718,1
    - Dst: zebra_vrf_get_table_with_table_id
      Src: /src/frr/zebra/redistribute.c:725,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:730,1
    - Dst: zebra_add_import_table_route_map
      Src: /src/frr/zebra/redistribute.c:736,1
    - Dst: zebra_get_import_table_route_map
      Src: /src/frr/zebra/redistribute.c:740,1
    - Dst: zebra_del_import_table_route_map
      Src: /src/frr/zebra/redistribute.c:742,1
    - Dst: zebra_get_import_table_route_map
      Src: /src/frr/zebra/redistribute.c:754,1
    - Dst: zebra_del_import_table_route_map
      Src: /src/frr/zebra/redistribute.c:756,1
    - Dst: route_top
      Src: /src/frr/zebra/redistribute.c:761,1
    - Dst: route_next
      Src: /src/frr/zebra/redistribute.c:761,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:769,1
    - Dst: zebra_add_import_table_entry
      Src: /src/frr/zebra/redistribute.c:780,1
    - Dst: zebra_del_import_table_entry
      Src: /src/frr/zebra/redistribute.c:783,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 48
    argCount: 6
    argNames:
    - afi
    - vrf_id
    - table_id
    - distance
    - rmap_name
    - add
    argTypes:
    - afi_t
    - vrf_id_t
    - uint32_t
    - uint32_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 710
    functionDepth: 2
    functionLinenumber: 710
    functionLinenumberEnd: 787
    functionName: zebra_import_table
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_get_table_with_table_id
    - is_zebra_valid_kernel_table
    - zebra_add_import_table_route_map
    - zebra_add_import_table_entry
    - CHECK_FLAG
    - route_top
    - zebra_del_import_table_entry
    - route_next
    - zlog_debug
    - zebra_vrf_lookup_by_id
    - zebra_get_import_table_route_map
    - zebra_del_import_table_route_map
    linkageType: ''
    returnType: int
    signature: "int zebra_import_table(afi_t afi, vrf_id_t vrf_id, uint32_t table_id,\n\t\t
      \      uint32_t distance, const char *rmap_name, int add)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:769,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 772
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_zebra_import_table_enabled
      Src: /src/frr/zebra/redistribute.c:799,1
    - Dst: vty_out
      Src: /src/frr/zebra/redistribute.c:804,1
    - Dst: vty_out
      Src: /src/frr/zebra/redistribute.c:808,1
    - Dst: zebra_get_import_table_route_map
      Src: /src/frr/zebra/redistribute.c:812,1
    - Dst: vty_out
      Src: /src/frr/zebra/redistribute.c:814,1
    - Dst: vty_out
      Src: /src/frr/zebra/redistribute.c:816,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - vrf_id
    argTypes:
    - struct vty*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 789
    functionDepth: 2
    functionLinenumber: 789
    functionLinenumberEnd: 822
    functionName: zebra_import_table_config
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zebra_get_import_table_route_map
    - is_zebra_import_table_enabled
    - vty_out
    linkageType: ''
    returnType: int
    signature: int zebra_import_table_config(struct vty *vty, vrf_id_t vrf_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zebra_get_import_table_route_map
      Src: /src/frr/zebra/redistribute.c:833,1
    - Dst: strcmp
      Src: /src/frr/zebra/redistribute.c:834,1
    - Dst: zebra_vrf_get_table_with_table_id
      Src: /src/frr/zebra/redistribute.c:837,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:841,1
    - Dst: route_top
      Src: /src/frr/zebra/redistribute.c:846,1
    - Dst: route_next
      Src: /src/frr/zebra/redistribute.c:846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:855,1
    - Dst: zebra_add_import_table_entry
      Src: /src/frr/zebra/redistribute.c:865,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 23
    argCount: 4
    argNames:
    - zvrf
    - afi
    - table_id
    - rmap
    argTypes:
    - struct zebra_vrf*
    - afi_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 824
    functionDepth: 2
    functionLinenumber: 824
    functionLinenumberEnd: 869
    functionName: zebra_import_table_rm_update_vrf_afi
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_get_table_with_table_id
    - zebra_add_import_table_entry
    - CHECK_FLAG
    - strcmp
    - route_top
    - route_next
    - zlog_debug
    - zebra_get_import_table_route_map
    linkageType: ''
    returnType: void
    signature: "void zebra_import_table_rm_update_vrf_afi(struct zebra_vrf *zvrf,\n\t\t\t\t\t\t
      afi_t afi, int table_id,\n\t\t\t\t\t\t const char *rmap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/redistribute.c:855,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 858
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_zebra_import_table_enabled
      Src: /src/frr/zebra/redistribute.c:879,1
    - Dst: zebra_import_table_rm_update_vrf_afi
      Src: /src/frr/zebra/redistribute.c:883,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - zvrf
    - rmap
    argTypes:
    - struct zebra_vrf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 871
    functionDepth: 3
    functionLinenumber: 871
    functionLinenumberEnd: 887
    functionName: zebra_import_table_rm_update_vrf
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - is_zebra_import_table_enabled
    - zebra_import_table_rm_update_vrf_afi
    linkageType: ''
    returnType: void
    signature: "void zebra_import_table_rm_update_vrf(struct zebra_vrf *zvrf,\n\t\t\t\t\t
      \    const char *rmap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/redistribute.c:894,1
    - Dst: zebra_import_table_rm_update_vrf
      Src: /src/frr/zebra/redistribute.c:900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - rmap
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 889
    functionDepth: 4
    functionLinenumber: 889
    functionLinenumberEnd: 902
    functionName: zebra_import_table_rm_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - zebra_import_table_rm_update_vrf
    linkageType: ''
    returnType: void
    signature: void zebra_import_table_rm_update(const char *rmap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/redistribute.c:911,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/redistribute.c:914,1
    - Dst: zsend_interface_link_params
      Src: /src/frr/zebra/redistribute.c:919,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 905
    functionDepth: 1
    functionLinenumber: 905
    functionLinenumberEnd: 921
    functionName: zebra_interface_parameters_update
    functionSourceFile: /src/frr/zebra/redistribute.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_debug
    - zsend_interface_link_params
    linkageType: ''
    returnType: void
    signature: void zebra_interface_parameters_update(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/if_sysctl.c:39,1
    - Dst: flog_warn
      Src: /src/frr/zebra/if_sysctl.c:40,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_sysctl.c:41,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/if_sysctl.c:46,1
    - Dst: sysctl
      Src: /src/frr/zebra/if_sysctl.c:49,1
    - Dst: flog_warn
      Src: /src/frr/zebra/if_sysctl.c:50,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_sysctl.c:51,1
    - Dst: XFREE
      Src: /src/frr/zebra/if_sysctl.c:52,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/if_sysctl.c:60,1
    - Dst: XFREE
      Src: /src/frr/zebra/if_sysctl.c:67,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 70
    functionName: ifstat_update_sysctl
    functionSourceFile: /src/frr/zebra/if_sysctl.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - flog_warn
    - XMALLOC
    - sysctl
    - safe_strerror
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ifstat_update_sysctl(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_sysctl.c:85,1
    - Dst: sysctl
      Src: /src/frr/zebra/if_sysctl.c:90,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/if_sysctl.c:91,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_sysctl.c:93,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/if_sysctl.c:98,1
    - Dst: sysctl
      Src: /src/frr/zebra/if_sysctl.c:101,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/if_sysctl.c:102,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_sysctl.c:104,1
    - Dst: ifm_read
      Src: /src/frr/zebra/if_sysctl.c:114,1
    - Dst: ifam_read
      Src: /src/frr/zebra/if_sysctl.c:117,1
    - Dst: zlog_info
      Src: /src/frr/zebra/if_sysctl.c:120,1
    - Dst: XFREE
      Src: /src/frr/zebra/if_sysctl.c:121,1
    - Dst: XFREE
      Src: /src/frr/zebra/if_sysctl.c:128,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 129
    functionName: interface_list
    functionSourceFile: /src/frr/zebra/if_sysctl.c
    functionUses: 0
    functionsReached:
    - ifm_read
    - zlog_info
    - ifam_read
    - XMALLOC
    - zlog_debug
    - sysctl
    - safe_strerror
    - XFREE
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void interface_list(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: RKERNEL_ROUTE
    functionSourceFile: /src/frr/zebra/rt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RKERNEL_ROUTE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: RSYSTEM_ROUTE
    functionSourceFile: /src/frr/zebra/rt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RSYSTEM_ROUTE(type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_find
      Src: /src/frr/zebra/zebra_nb_rpcs.c:26,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_nb_rpcs.c:29,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_nb_rpcs.c:32,1
    - Dst: zebra_vxlan_clear_dup_detect_vni_all
      Src: /src/frr/zebra/zebra_nb_rpcs.c:33,1
    - Dst: yang_data_list_find
      Src: /src/frr/zebra/zebra_nb_rpcs.c:39,1
    - Dst: yang_str2uint32
      Src: /src/frr/zebra/zebra_nb_rpcs.c:43,1
    - Dst: yang_data_list_find
      Src: /src/frr/zebra/zebra_nb_rpcs.c:45,1
    - Dst: yang_data_list_find
      Src: /src/frr/zebra/zebra_nb_rpcs.c:48,1
    - Dst: yang_str2mac
      Src: /src/frr/zebra/zebra_nb_rpcs.c:53,1
    - Dst: zebra_vxlan_clear_dup_detect_vni_mac
      Src: /src/frr/zebra/zebra_nb_rpcs.c:54,1
    - Dst: yang_str2ip
      Src: /src/frr/zebra/zebra_nb_rpcs.c:58,1
    - Dst: zebra_vxlan_clear_dup_detect_vni_ip
      Src: /src/frr/zebra/zebra_nb_rpcs.c:59,1
    - Dst: zebra_vxlan_clear_dup_detect_vni
      Src: /src/frr/zebra/zebra_nb_rpcs.c:63,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 71
    functionName: clear_evpn_dup_addr_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached:
    - yang_str2ip
    - yang_data_list_find
    - yang_str2uint32
    - yang_str2mac
    - strcmp
    - zebra_vxlan_clear_dup_detect_vni_mac
    - zebra_vrf_get_evpn
    - zebra_vxlan_clear_dup_detect_vni
    - zebra_vxlan_clear_dup_detect_vni_ip
    - zebra_vxlan_clear_dup_detect_vni_all
    linkageType: ''
    returnType: int
    signature: int clear_evpn_dup_addr_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: get_route_information_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_route_information_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: get_v6_mroute_info_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_v6_mroute_info_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: get_vrf_info_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_vrf_info_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: get_vrf_vni_info_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_vrf_vni_info_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: get_evpn_info_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_evpn_info_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: get_vni_info_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_vni_info_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: get_evpn_vni_rmac_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_evpn_vni_rmac_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 143
    functionName: get_evpn_vni_nexthops_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_evpn_vni_nexthops_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 152
    functionName: get_evpn_macs_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_evpn_macs_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: get_evpn_arp_cache_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_evpn_arp_cache_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 170
    functionName: get_pbr_ipset_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_pbr_ipset_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 179
    functionName: get_pbr_iptable_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_pbr_iptable_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_rpc_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: get_debugs_rpc
    functionSourceFile: /src/frr/zebra/zebra_nb_rpcs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_debugs_rpc(struct nb_cb_rpc_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_tc.c:47,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_tc.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - mz
    - msg
    - nf
    argTypes:
    - struct message*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: lookup_key
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcmp
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t lookup_key(const struct message *mz, const char *msg,\n\t\t\t
      \  uint32_t nf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/zebra/zebra_tc.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: tc_qdisc_kind2str
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *tc_qdisc_kind2str(uint32_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_key
      Src: /src/frr/zebra/zebra_tc.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: tc_qdisc_str2kind
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - lookup_key
    linkageType: ''
    returnType: enum tc_qdisc_kind
    signature: enum tc_qdisc_kind tc_qdisc_str2kind(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_tc.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: zebra_tc_qdisc_hash_key
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_tc_qdisc_hash_key(const void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 88
    functionName: zebra_tc_qdisc_hash_equal
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_tc_qdisc_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 107
    functionName: tc_qdisc_lookup_ifindex_walker
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tc_qdisc_lookup_ifindex_walker(struct hash_bucket *b, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_tc.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - qdisc
    argTypes:
    - struct zebra_tc_qdisc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 119
    functionName: tc_qdisc_lookup_ifindex
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - hash_walk
    linkageType: ''
    returnType: struct zebra_tc_qdisc
    signature: 'struct zebra_tc_qdisc *

      tc_qdisc_lookup_ifindex(struct zebra_tc_qdisc *qdisc)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_tc.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 133
    functionName: tc_qdisc_alloc_intern
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *tc_qdisc_alloc_intern(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_tc.c:138,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_tc.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - hash_data
    - free_data
    argTypes:
    - struct zebra_tc_qdisc*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 146
    functionName: tc_qdisc_free
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - hash_release
    - XFREE
    linkageType: ''
    returnType: struct zebra_tc_qdisc
    signature: "struct zebra_tc_qdisc *tc_qdisc_free(struct zebra_tc_qdisc *hash_data,\n\t\t\t\t\t
      \   bool free_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_tc.c:153,1
    - Dst: tc_qdisc_free
      Src: /src/frr/zebra/zebra_tc.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - qdisc
    - free_data
    argTypes:
    - struct zebra_tc_qdisc*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 159
    functionName: tc_qdisc_release
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - tc_qdisc_free
    linkageType: ''
    returnType: struct zebra_tc_qdisc
    signature: "struct zebra_tc_qdisc *tc_qdisc_release(struct zebra_tc_qdisc *qdisc,\n\t\t\t\t\t
      \      bool free_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:164,1
    - Dst: tc_qdisc_kind2str
      Src: /src/frr/zebra/zebra_tc.c:166,1
    - Dst: tc_qdisc_lookup_ifindex
      Src: /src/frr/zebra/zebra_tc.c:172,1
    - Dst: zebra_tc_qdisc_hash_equal
      Src: /src/frr/zebra/zebra_tc.c:175,1
    - Dst: tc_qdisc_release
      Src: /src/frr/zebra/zebra_tc.c:176,1
    - Dst: dplane_tc_qdisc_uninstall
      Src: /src/frr/zebra/zebra_tc.c:177,1
    - Dst: hash_get::hash_get
      Src: /src/frr/zebra/zebra_tc.c:178,1
    - Dst: dplane_tc_qdisc_install
      Src: /src/frr/zebra/zebra_tc.c:180,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_tc.c:181,1
    - Dst: hash_get::hash_get
      Src: /src/frr/zebra/zebra_tc.c:184,1
    - Dst: dplane_tc_qdisc_install
      Src: /src/frr/zebra/zebra_tc.c:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - qdisc
    argTypes:
    - struct zebra_tc_qdisc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 188
    functionName: zebra_tc_qdisc_install
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - zebra_tc_qdisc_hash_equal
    - dplane_tc_qdisc_install
    - zlog_debug
    - dplane_tc_qdisc_uninstall
    - XFREE
    - tc_qdisc_kind2str
    - hash_get::hash_get
    - tc_qdisc_release
    - tc_qdisc_lookup_ifindex
    linkageType: ''
    returnType: void
    signature: void zebra_tc_qdisc_install(struct zebra_tc_qdisc *qdisc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:193,1
    - Dst: tc_qdisc_kind2str
      Src: /src/frr/zebra/zebra_tc.c:195,1
    - Dst: dplane_tc_qdisc_uninstall
      Src: /src/frr/zebra/zebra_tc.c:197,1
    - Dst: tc_qdisc_release
      Src: /src/frr/zebra/zebra_tc.c:199,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - qdisc
    argTypes:
    - struct zebra_tc_qdisc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 190
    functionDepth: 3
    functionLinenumber: 190
    functionLinenumberEnd: 202
    functionName: zebra_tc_qdisc_uninstall
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - dplane_tc_qdisc_uninstall
    - tc_qdisc_release
    - tc_qdisc_kind2str
    linkageType: ''
    returnType: void
    signature: void zebra_tc_qdisc_uninstall(struct zebra_tc_qdisc *qdisc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_2words
      Src: /src/frr/zebra/zebra_tc.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 214
    functionName: zebra_tc_class_hash_key
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - jhash_2words
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_tc_class_hash_key(const void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 230
    functionName: zebra_tc_class_hash_equal
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_tc_class_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_tc.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 244
    functionName: tc_class_alloc_intern
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *tc_class_alloc_intern(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_tc.c:249,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_tc.c:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - hash_data
    - free_data
    argTypes:
    - struct zebra_tc_class*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 257
    functionName: tc_class_free
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - hash_release
    - XFREE
    linkageType: ''
    returnType: struct zebra_tc_class
    signature: "struct zebra_tc_class *tc_class_free(struct zebra_tc_class *hash_data,\n\t\t\t\t\t
      \   bool free_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_tc.c:264,1
    - Dst: tc_class_free
      Src: /src/frr/zebra/zebra_tc.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - class
    - free_data
    argTypes:
    - struct zebra_tc_class*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: tc_class_release
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - tc_class_free
    linkageType: ''
    returnType: struct zebra_tc_class
    signature: "struct zebra_tc_class *tc_class_release(struct zebra_tc_class *class,\n\t\t\t\t\t
      \      bool free_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:275,1
    - Dst: tc_qdisc_kind2str
      Src: /src/frr/zebra/zebra_tc.c:280,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_tc.c:292,1
    - Dst: hash_get::hash_get
      Src: /src/frr/zebra/zebra_tc.c:293,1
    - Dst: dplane_tc_class_update
      Src: /src/frr/zebra/zebra_tc.c:296,1
    - Dst: dplane_tc_class_add
      Src: /src/frr/zebra/zebra_tc.c:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - class
    argTypes:
    - struct zebra_tc_class*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 299
    functionName: zebra_tc_class_add
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - dplane_tc_class_update
    - dplane_tc_class_add
    - hash_lookup
    - zlog_debug
    - tc_qdisc_kind2str
    - hash_get::hash_get
    linkageType: ''
    returnType: void
    signature: void zebra_tc_class_add(struct zebra_tc_class *class)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:304,1
    - Dst: tc_qdisc_kind2str
      Src: /src/frr/zebra/zebra_tc.c:309,1
    - Dst: dplane_tc_class_delete
      Src: /src/frr/zebra/zebra_tc.c:311,1
    - Dst: tc_class_release
      Src: /src/frr/zebra/zebra_tc.c:313,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - class
    argTypes:
    - struct zebra_tc_class*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 301
    functionDepth: 3
    functionLinenumber: 301
    functionLinenumberEnd: 316
    functionName: zebra_tc_class_delete
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - dplane_tc_class_delete
    - tc_class_release
    - tc_qdisc_kind2str
    linkageType: ''
    returnType: void
    signature: void zebra_tc_class_delete(struct zebra_tc_class *class)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/zebra/zebra_tc.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: tc_filter_kind2str
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *tc_filter_kind2str(uint32_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_key
      Src: /src/frr/zebra/zebra_tc.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 326
    functionName: tc_filter_str2kind
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - lookup_key
    linkageType: ''
    returnType: enum tc_qdisc_kind
    signature: enum tc_qdisc_kind tc_filter_str2kind(const char *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_2words
      Src: /src/frr/zebra/zebra_tc.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 338
    functionName: zebra_tc_filter_hash_key
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - jhash_2words
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_tc_filter_hash_key(const void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 354
    functionName: zebra_tc_filter_hash_equal
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_tc_filter_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_tc.c:359,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_tc.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - hash_data
    - free_data
    argTypes:
    - struct zebra_tc_filter*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 367
    functionName: tc_filter_free
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - hash_release
    - XFREE
    linkageType: ''
    returnType: struct zebra_tc_filter
    signature: "struct zebra_tc_filter *tc_filter_free(struct zebra_tc_filter *hash_data,\n\t\t\t\t\t
      \     bool free_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_tc.c:374,1
    - Dst: tc_filter_free
      Src: /src/frr/zebra/zebra_tc.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - filter
    - free_data
    argTypes:
    - struct zebra_tc_filter*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 380
    functionName: tc_filter_release
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - tc_filter_free
    linkageType: ''
    returnType: struct zebra_tc_filter
    signature: "struct zebra_tc_filter *tc_filter_release(struct zebra_tc_filter *filter,\n\t\t\t\t\t\t
      bool free_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_tc.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 394
    functionName: tc_filter_alloc_intern
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *tc_filter_alloc_intern(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:399,1
    - Dst: tc_filter_kind2str
      Src: /src/frr/zebra/zebra_tc.c:403,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_tc.c:408,1
    - Dst: hash_get::hash_get
      Src: /src/frr/zebra/zebra_tc.c:409,1
    - Dst: dplane_tc_filter_update
      Src: /src/frr/zebra/zebra_tc.c:412,1
    - Dst: dplane_tc_filter_add
      Src: /src/frr/zebra/zebra_tc.c:414,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct zebra_tc_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 415
    functionName: zebra_tc_filter_add
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - dplane_tc_filter_add
    - dplane_tc_filter_update
    - hash_lookup
    - zlog_debug
    - hash_get::hash_get
    - tc_filter_kind2str
    linkageType: ''
    returnType: void
    signature: void zebra_tc_filter_add(struct zebra_tc_filter *filter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:420,1
    - Dst: tc_filter_kind2str
      Src: /src/frr/zebra/zebra_tc.c:424,1
    - Dst: dplane_tc_filter_delete
      Src: /src/frr/zebra/zebra_tc.c:426,1
    - Dst: tc_filter_release
      Src: /src/frr/zebra/zebra_tc.c:428,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_tc.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct zebra_tc_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 431
    functionName: zebra_tc_filter_delete
    functionSourceFile: /src/frr/zebra/zebra_tc.c
    functionUses: 0
    functionsReached:
    - dplane_tc_filter_delete
    - zlog_debug
    - tc_filter_kind2str
    - tc_filter_release
    linkageType: ''
    returnType: void
    signature: void zebra_tc_filter_delete(struct zebra_tc_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: ROUNDUP
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: ROUNDUP
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: SAROUNDUP
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SAROUNDUP(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: SAROUNDUP
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SAROUNDUP(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: SAROUNDUP
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SAROUNDUP(X)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 232
    functionName: af_check
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int af_check(int family)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ROUNDUP
      Src: /src/frr/zebra/kernel_socket.c:243,1
    - Dst: SAROUNDUP
      Src: /src/frr/zebra/kernel_socket.c:245,1
    - Dst: af_check
      Src: /src/frr/zebra/kernel_socket.c:249,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/kernel_socket.c:264,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_socket.c:267,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_socket.c:269,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - sap
    - destp
    - destlen
    - checkaf
    argTypes:
    - caddr_t
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 273
    functionName: _rta_get
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - ROUNDUP
    - af_check
    - zlog_warn
    - memcpy
    - SAROUNDUP
    linkageType: ''
    returnType: size_t
    signature: size_t _rta_get(caddr_t sap, void *destp, size_t destlen, bool checkaf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _rta_get
      Src: /src/frr/zebra/kernel_socket.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sap
    - destp
    - destlen
    argTypes:
    - caddr_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: rta_get
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 1
    functionsReached:
    - _rta_get
    linkageType: ''
    returnType: size_t
    signature: size_t rta_get(caddr_t sap, void *destp, size_t destlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _rta_get
      Src: /src/frr/zebra/kernel_socket.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sap
    - destp
    - destlen
    argTypes:
    - caddr_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 2
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: rta_getattr
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - _rta_get
    linkageType: ''
    returnType: size_t
    signature: size_t rta_getattr(caddr_t sap, void *destp, size_t destlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ROUNDUP
      Src: /src/frr/zebra/kernel_socket.c:295,1
    - Dst: SAROUNDUP
      Src: /src/frr/zebra/kernel_socket.c:297,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/kernel_socket.c:302,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_socket.c:305,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_socket.c:309,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - sap
    - destp
    - destlen
    argTypes:
    - caddr_t
    - void*
    - short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 317
    functionName: rta_getsdlname
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - ROUNDUP
    - zlog_warn
    - memcpy
    - SAROUNDUP
    linkageType: ''
    returnType: size_t
    signature: size_t rta_getsdlname(caddr_t sap, void *destp, short *destlen)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/kernel_socket.c:378,1
    - Dst: snprintf
      Src: /src/frr/zebra/kernel_socket.c:383,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - unsigned int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 396
    functionName: rtatostr
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *rtatostr(unsigned int flags, char *buf, size_t buflen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcat
      Src: /src/frr/zebra/kernel_socket.c:407,1
    - Dst: strlcat
      Src: /src/frr/zebra/kernel_socket.c:408,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - flag
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 412
    functionName: rtm_flag_dump
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - strlcat
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void rtm_flag_dump(int flag)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/kernel_socket.c:420,1
    - Dst: assert
      Src: /src/frr/zebra/kernel_socket.c:423,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:429,1
    - Dst: if_get_by_name
      Src: /src/frr/zebra/kernel_socket.c:434,1
    - Dst: if_set_index
      Src: /src/frr/zebra/kernel_socket.c:436,1
    - Dst: if_get_metric
      Src: /src/frr/zebra/kernel_socket.c:438,1
    - Dst: if_add_update
      Src: /src/frr/zebra/kernel_socket.c:439,1
    - Dst: if_delete_update
      Src: /src/frr/zebra/kernel_socket.c:441,1
    - Dst: if_get_flags
      Src: /src/frr/zebra/kernel_socket.c:444,1
    - Dst: if_get_mtu
      Src: /src/frr/zebra/kernel_socket.c:445,1
    - Dst: if_get_metric
      Src: /src/frr/zebra/kernel_socket.c:446,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:449,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - ifan
    argTypes:
    - struct if_announcemsghdr*
    assertStmts:
    - condition: "((ifp->ifindex == ifan->ifan_index)\n\t\t       || (ifp->ifindex
        == IFINDEX_INTERNAL))"
      pos:
        line_end: 423
        line_start: 422
        source_file: /src/frr/zebra/kernel_socket.c
    constantsTouched: []
    func_position:
      end: 453
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 453
    functionName: ifan_read
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - if_set_index
    - if_lookup_by_index
    - if_get_by_name
    - if_delete_update
    - if_get_mtu
    - if_add_update
    - zlog_debug
    - if_get_flags
    - if_get_metric
    - assert
    linkageType: ''
    returnType: int
    signature: int ifan_read(struct if_announcemsghdr *ifan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/zebra/kernel_socket.c:462,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/kernel_socket.c:464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ifm
    argTypes:
    - struct if_msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 465
    functionName: bsd_linkdetect_translate
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void bsd_linkdetect_translate(struct if_msghdr *ifm)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 1
    argNames:
    - sdlt
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 499
    functionName: sdl_to_zebra_link_type
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum zebra_link_type
    signature: enum zebra_link_type sdl_to_zebra_link_type(unsigned int sdlt)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_socket.c:521,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:538,1
    - Dst: rta_getsdlname
      Src: /src/frr/zebra/kernel_socket.c:544,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:548,1
    - Dst: rtatostr
      Src: /src/frr/zebra/kernel_socket.c:550,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/kernel_socket.c:559,1
    - Dst: strncmp
      Src: /src/frr/zebra/kernel_socket.c:565,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:567,1
    - Dst: if_lookup_by_name
      Src: /src/frr/zebra/kernel_socket.c:588,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:601,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/kernel_socket.c:610,1
    - Dst: if_get_by_name
      Src: /src/frr/zebra/kernel_socket.c:617,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:620,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:625,1
    - Dst: if_set_index
      Src: /src/frr/zebra/kernel_socket.c:632,1
    - Dst: bsd_linkdetect_translate
      Src: /src/frr/zebra/kernel_socket.c:635,1
    - Dst: if_flags_update
      Src: /src/frr/zebra/kernel_socket.c:638,1
    - Dst: if_kvm_get_mtu
      Src: /src/frr/zebra/kernel_socket.c:640,1
    - Dst: if_get_mtu
      Src: /src/frr/zebra/kernel_socket.c:642,1
    - Dst: if_get_metric
      Src: /src/frr/zebra/kernel_socket.c:644,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_socket.c:660,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_socket.c:663,1
    - Dst: sdl_to_zebra_link_type
      Src: /src/frr/zebra/kernel_socket.c:667,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_socket.c:669,1
    - Dst: LLADDR
      Src: /src/frr/zebra/kernel_socket.c:669,1
    - Dst: if_add_update
      Src: /src/frr/zebra/kernel_socket.c:675,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:686,1
    - Dst: bsd_linkdetect_translate
      Src: /src/frr/zebra/kernel_socket.c:694,1
    - Dst: if_flags_update
      Src: /src/frr/zebra/kernel_socket.c:699,1
    - Dst: if_is_up
      Src: /src/frr/zebra/kernel_socket.c:702,1
    - Dst: if_delete_update
      Src: /src/frr/zebra/kernel_socket.c:714,1
    - Dst: if_is_up
      Src: /src/frr/zebra/kernel_socket.c:717,1
    - Dst: if_kvm_get_mtu
      Src: /src/frr/zebra/kernel_socket.c:719,1
    - Dst: if_get_mtu
      Src: /src/frr/zebra/kernel_socket.c:721,1
    - Dst: if_get_metric
      Src: /src/frr/zebra/kernel_socket.c:723,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:734,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 83
    argCount: 1
    argNames:
    - ifm
    argTypes:
    - struct if_msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 739
    functionName: ifm_read
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 1
    functionsReached:
    - if_get_by_name
    - if_delete_update
    - if_get_mtu
    - rta_getsdlname
    - flog_err
    - strncmp
    - sdl_to_zebra_link_type
    - if_get_metric
    - if_kvm_get_mtu
    - if_lookup_by_index
    - LLADDR
    - zlog_debug
    - if_is_up
    - bsd_linkdetect_translate
    - if_add_update
    - rta_get
    - if_flags_update
    - memcpy
    - if_set_index
    - if_lookup_by_name
    - rtatostr
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int ifm_read(struct if_msghdr *ifm)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:756,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:757,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:758,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:759,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:760,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:769,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:772,1
    - Dst: rta_getattr
      Src: /src/frr/zebra/kernel_socket.c:775,1
    - Dst: rta_getsdlname
      Src: /src/frr/zebra/kernel_socket.c:778,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:781,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:784,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:788,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/kernel_socket.c:793,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/kernel_socket.c:800,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/kernel_socket.c:804,1
    - Dst: ip_masklen
      Src: /src/frr/zebra/kernel_socket.c:805,1
    - Dst: ip6_masklen
      Src: /src/frr/zebra/kernel_socket.c:806,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:807,1
    - Dst: rtatostr
      Src: /src/frr/zebra/kernel_socket.c:811,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:816,1
    - Dst: rtatostr
      Src: /src/frr/zebra/kernel_socket.c:819,1
    - Dst: ROUNDUP
      Src: /src/frr/zebra/kernel_socket.c:826,1
    - Dst: ROUNDUP
      Src: /src/frr/zebra/kernel_socket.c:827,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:828,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 6
    argNames:
    - ifm
    - addr
    - mask
    - brd
    - ifname
    - ifnlen
    argTypes:
    - struct ifa_msghdr*
    - union sockunion*
    - union sockunion*
    - union sockunion*
    - char*
    - short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 742
    functionDepth: 3
    functionLinenumber: 742
    functionLinenumberEnd: 829
    functionName: ifam_read_mesg
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - memset
    - rta_getsdlname
    - rtatostr
    - ROUNDUP
    - rta_get
    - ip_masklen
    - ip6_masklen
    - zlog_warn
    - zlog_debug
    - rta_getattr
    linkageType: ''
    returnType: void
    signature: "void ifam_read_mesg(struct ifa_msghdr *ifm, union sockunion *addr,\n\t\t\t
      \  union sockunion *mask, union sockunion *brd,\n\t\t\t   char *ifname, short
      *ifnlen)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ifam_read_mesg
      Src: /src/frr/zebra/kernel_socket.c:845,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/kernel_socket.c:847,1
    - Dst: flog_warn
      Src: /src/frr/zebra/kernel_socket.c:848,1
    - Dst: strncmp
      Src: /src/frr/zebra/kernel_socket.c:854,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/kernel_socket.c:861,1
    - Dst: if_is_pointopoint
      Src: /src/frr/zebra/kernel_socket.c:867,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/kernel_socket.c:868,1
    - Dst: memcmp
      Src: /src/frr/zebra/kernel_socket.c:870,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/kernel_socket.c:884,1
    - Dst: connected_add_ipv4
      Src: /src/frr/zebra/kernel_socket.c:887,1
    - Dst: ip_masklen
      Src: /src/frr/zebra/kernel_socket.c:888,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/kernel_socket.c:893,1
    - Dst: ip_masklen
      Src: /src/frr/zebra/kernel_socket.c:894,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/kernel_socket.c:901,1
    - Dst: SET_IN6_LINKLOCAL_IFINDEX
      Src: /src/frr/zebra/kernel_socket.c:902,1
    - Dst: connected_add_ipv6
      Src: /src/frr/zebra/kernel_socket.c:906,1
    - Dst: ip6_masklen
      Src: /src/frr/zebra/kernel_socket.c:908,1
    - Dst: connected_delete_ipv6
      Src: /src/frr/zebra/kernel_socket.c:912,1
    - Dst: ip6_masklen
      Src: /src/frr/zebra/kernel_socket.c:913,1
    - Dst: if_refresh
      Src: /src/frr/zebra/kernel_socket.c:921,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 1
    argNames:
    - ifam
    argTypes:
    - struct ifa_msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 832
    functionDepth: 4
    functionLinenumber: 832
    functionLinenumberEnd: 924
    functionName: ifam_read
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 1
    functionsReached:
    - connected_delete_ipv6
    - if_lookup_by_index
    - if_is_pointopoint
    - sockunion_family
    - flog_warn
    - connected_add_ipv6
    - if_refresh
    - IN6_IS_ADDR_LINKLOCAL
    - ip_masklen
    - memcmp
    - connected_delete_ipv4
    - ip6_masklen
    - SET_FLAG
    - strncmp
    - ifam_read_mesg
    - connected_add_ipv4
    - SET_IN6_LINKLOCAL_IFINDEX
    linkageType: ''
    returnType: int
    signature: int ifam_read(struct ifa_msghdr *ifam)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/zebra/kernel_socket.c:940,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:945,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:946,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:947,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:957,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:960,1
    - Dst: rta_getattr
      Src: /src/frr/zebra/kernel_socket.c:963,1
    - Dst: rta_getsdlname
      Src: /src/frr/zebra/kernel_socket.c:966,1
    - Dst: rta_get
      Src: /src/frr/zebra/kernel_socket.c:970,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/kernel_socket.c:975,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:988,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 6
    argNames:
    - rtm
    - dest
    - mask
    - gate
    - ifname
    - ifnlen
    argTypes:
    - struct rt_msghdr*
    - union sockunion*
    - union sockunion*
    - union sockunion*
    - char*
    - short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 927
    functionDepth: 3
    functionLinenumber: 927
    functionLinenumberEnd: 991
    functionName: rtm_read_mesg
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - memset
    - rta_getsdlname
    - rta_get
    - zlog_warn
    - zlog_debug
    - rta_getattr
    linkageType: ''
    returnType: int
    signature: "int rtm_read_mesg(struct rt_msghdr *rtm, union sockunion *dest,\n\t\t\t
      union sockunion *mask, union sockunion *gate,\n\t\t\t char *ifname, short *ifnlen)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: rtm_read_mesg
      Src: /src/frr/zebra/kernel_socket.c:1012,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:1016,1
    - Dst: lookup_msg
      Src: /src/frr/zebra/kernel_socket.c:1018,1
    - Dst: rtatostr
      Src: /src/frr/zebra/kernel_socket.c:1019,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/kernel_socket.c:1039,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:1044,1
    - Dst: ip_masklen
      Src: /src/frr/zebra/kernel_socket.c:1069,1
    - Dst: ip6_masklen
      Src: /src/frr/zebra/kernel_socket.c:1082,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/kernel_socket.c:1085,1
    - Dst: IN6_LINKLOCAL_IFINDEX
      Src: /src/frr/zebra/kernel_socket.c:1086,1
    - Dst: SET_IN6_LINKLOCAL_IFINDEX
      Src: /src/frr/zebra/kernel_socket.c:1087,1
    - Dst: rib_add
      Src: /src/frr/zebra/kernel_socket.c:1102,1
    - Dst: rib_delete
      Src: /src/frr/zebra/kernel_socket.c:1106,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 1
    argNames:
    - rtm
    argTypes:
    - struct rt_msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 993
    functionDepth: 4
    functionLinenumber: 993
    functionLinenumberEnd: 1109
    functionName: rtm_read
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - memset
    - rtatostr
    - IN6_IS_ADDR_LINKLOCAL
    - ip_masklen
    - ip6_masklen
    - rtm_read_mesg
    - zlog_debug
    - SET_FLAG
    - rib_add
    - IN6_LINKLOCAL_IFINDEX
    - rib_delete
    - lookup_msg
    - SET_IN6_LINKLOCAL_IFINDEX
    linkageType: ''
    returnType: void
    signature: void rtm_read(struct rt_msghdr *rtm)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/kernel_socket.c:1136,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/kernel_socket.c:1154,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/kernel_socket.c:1175,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/kernel_socket.c:1178,1
    - Dst: flog_warn
      Src: /src/frr/zebra/kernel_socket.c:1180,1
    - Dst: htonl
      Src: /src/frr/zebra/kernel_socket.c:1200,1
    - Dst: SOCKADDRSET
      Src: /src/frr/zebra/kernel_socket.c:1231,1
    - Dst: SOCKADDRSET
      Src: /src/frr/zebra/kernel_socket.c:1232,1
    - Dst: SOCKADDRSET
      Src: /src/frr/zebra/kernel_socket.c:1233,1
    - Dst: SOCKADDRSET
      Src: /src/frr/zebra/kernel_socket.c:1235,1
    - Dst: write
      Src: /src/frr/zebra/kernel_socket.c:1240,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_socket.c:1250,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_socket.c:1251,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 73
    argCount: 8
    argNames:
    - message
    - dest
    - mask
    - gate
    - mpls
    - index
    - bh_type
    - metric
    argTypes:
    - int
    - union sockunion*
    - union sockunion*
    - union sockunion*
    - union sockunion*
    - unsigned int
    - enum blackhole_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1115
    functionDepth: 1
    functionLinenumber: 1115
    functionLinenumberEnd: 1255
    functionName: rtm_write
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - flog_warn
    - memset
    - write
    - inet_ntop
    - safe_strerror
    - htonl
    - flog_err_sys
    - SOCKADDRSET
    linkageType: ''
    returnType: int
    signature: "int rtm_write(int message, union sockunion *dest, union sockunion
      *mask,\n\t      union sockunion *gate, union sockunion *mpls, unsigned int index,\n\t
      \     enum blackhole_type bh_type, int metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1221
    functionDepth: 0
    functionLinenumber: 1221
    functionLinenumberEnd: 1227
    functionName: SOCKADDRSET
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOCKADDRSET(X, R)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:1266,1
    - Dst: lookup_msg
      Src: /src/frr/zebra/kernel_socket.c:1267,1
    - Dst: rtm_flag_dump
      Src: /src/frr/zebra/kernel_socket.c:1268,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:1269,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:1270,1
    - Dst: rtatostr
      Src: /src/frr/zebra/kernel_socket.c:1271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - rtm
    argTypes:
    - struct rt_msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1272
    functionName: rtmsg_debug
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - rtatostr
    - zlog_debug
    - rtm_flag_dump
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: void rtmsg_debug(struct rt_msghdr *rtm)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/zebra/kernel_socket.c:1329,1
    - Dst: read
      Src: /src/frr/zebra/kernel_socket.c:1331,1
    - Dst: event_add_read
      Src: /src/frr/zebra/kernel_socket.c:1341,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_socket.c:1345,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_socket.c:1347,1
    - Dst: exit
      Src: /src/frr/zebra/kernel_socket.c:1353,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_socket.c:1357,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_socket.c:1358,1
    - Dst: event_add_read
      Src: /src/frr/zebra/kernel_socket.c:1365,1
    - Dst: rtmsg_debug
      Src: /src/frr/zebra/kernel_socket.c:1368,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:1377,1
    - Dst: rtm_read
      Src: /src/frr/zebra/kernel_socket.c:1386,1
    - Dst: ifm_read
      Src: /src/frr/zebra/kernel_socket.c:1389,1
    - Dst: ifam_read
      Src: /src/frr/zebra/kernel_socket.c:1393,1
    - Dst: ifan_read
      Src: /src/frr/zebra/kernel_socket.c:1397,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_socket.c:1402,1
    - Dst: lookup_msg
      Src: /src/frr/zebra/kernel_socket.c:1404,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1284
    functionDepth: 5
    functionLinenumber: 1284
    functionLinenumberEnd: 1408
    functionName: kernel_read
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - ifm_read
    - exit
    - read
    - ifam_read
    - EVENT_FD
    - rtmsg_debug
    - ifan_read
    - rtm_read
    - flog_err
    - safe_strerror
    - zlog_debug
    - event_add_read
    - flog_err_sys
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: void kernel_read(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ns_socket
      Src: /src/frr/zebra/kernel_socket.c:1417,1
    - Dst: ns_socket
      Src: /src/frr/zebra/kernel_socket.c:1420,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_socket.c:1424,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_socket.c:1429,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_socket.c:1438,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_socket.c:1439,1
    - Dst: getsockopt
      Src: /src/frr/zebra/kernel_socket.c:1454,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_socket.c:1456,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_socket.c:1460,1
    - Dst: event_add_read
      Src: /src/frr/zebra/kernel_socket.c:1468,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1411
    functionDepth: 1
    functionLinenumber: 1411
    functionLinenumberEnd: 1469
    functionName: routing_socket
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - ns_socket
    - event_add_read
    - flog_err_sys
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void routing_socket(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_socket
      Src: /src/frr/zebra/kernel_socket.c:1417,1
    - Dst: ns_socket
      Src: /src/frr/zebra/kernel_socket.c:1420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1416
    functionDepth: 0
    functionLinenumber: 1416
    functionLinenumberEnd: 1421
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - ns_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: routing_socket
      Src: /src/frr/zebra/kernel_socket.c:1475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1476
    functionName: kernel_init
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - routing_socket
    linkageType: ''
    returnType: void
    signature: void kernel_init(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zns
    - complete
    argTypes:
    - struct zebra_ns*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1478
    functionDepth: 0
    functionLinenumber: 1478
    functionLinenumberEnd: 1481
    functionName: kernel_terminate
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void kernel_terminate(struct zebra_ns *zns, bool complete)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1486
    functionDepth: 0
    functionLinenumber: 1486
    functionLinenumberEnd: 1488
    functionName: kernel_router_init
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void kernel_router_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1493
    functionDepth: 0
    functionLinenumber: 1493
    functionLinenumberEnd: 1495
    functionName: kernel_router_terminate
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void kernel_router_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct zebra_dplane_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1500
    functionDepth: 0
    functionLinenumber: 1500
    functionLinenumberEnd: 1503
    functionName: kernel_dplane_read
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kernel_dplane_read(struct zebra_dplane_info *info)
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/kernel_socket.c:1511,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/kernel_socket.c:1514,1
    - Dst: dplane_ctx_is_skip_kernel
      Src: /src/frr/zebra/kernel_socket.c:1522,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/kernel_socket.c:1527,1
    - Dst: kernel_route_update
      Src: /src/frr/zebra/kernel_socket.c:1532,1
    - Dst: kernel_nexthop_update
      Src: /src/frr/zebra/kernel_socket.c:1538,1
    - Dst: kernel_lsp_update
      Src: /src/frr/zebra/kernel_socket.c:1544,1
    - Dst: kernel_pw_update
      Src: /src/frr/zebra/kernel_socket.c:1549,1
    - Dst: kernel_address_update_ctx
      Src: /src/frr/zebra/kernel_socket.c:1554,1
    - Dst: kernel_mac_update_ctx
      Src: /src/frr/zebra/kernel_socket.c:1559,1
    - Dst: kernel_neigh_update_ctx
      Src: /src/frr/zebra/kernel_socket.c:1568,1
    - Dst: kernel_pbr_rule_update
      Src: /src/frr/zebra/kernel_socket.c:1574,1
    - Dst: kernel_intf_update
      Src: /src/frr/zebra/kernel_socket.c:1580,1
    - Dst: kernel_tc_update
      Src: /src/frr/zebra/kernel_socket.c:1591,1
    - Dst: kernel_intf_netconf_update
      Src: /src/frr/zebra/kernel_socket.c:1603,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_socket.c:1620,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/kernel_socket.c:1621,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/kernel_socket.c:1621,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/kernel_socket.c:1626,1
    - Dst: dplane_ctx_enqueue_tail
      Src: /src/frr/zebra/kernel_socket.c:1628,1
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/kernel_socket.c:1631,1
    - Dst: dplane_ctx_list_append
      Src: /src/frr/zebra/kernel_socket.c:1632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 100
    argCount: 1
    argNames:
    - ctx_list
    argTypes:
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1505
    functionDepth: 2
    functionLinenumber: 1505
    functionLinenumberEnd: 1633
    functionName: kernel_update_multi
    functionSourceFile: /src/frr/zebra/kernel_socket.c
    functionUses: 0
    functionsReached:
    - kernel_intf_update
    - dplane_ctx_list_append
    - dplane_ctx_q_init
    - kernel_tc_update
    - dplane_ctx_enqueue_tail
    - kernel_neigh_update_ctx
    - dplane_ctx_get_op
    - kernel_pbr_rule_update
    - dplane_ctx_is_skip_kernel
    - kernel_pw_update
    - dplane_ctx_set_status
    - dplane_op2str
    - dplane_ctx_dequeue
    - kernel_intf_netconf_update
    - kernel_address_update_ctx
    - kernel_lsp_update
    - zlog_err
    - kernel_route_update
    - kernel_mac_update_ctx
    - kernel_nexthop_update
    linkageType: ''
    returnType: void
    signature: void kernel_update_multi(struct dplane_ctx_list_head *ctx_list)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/rule_netlink.c:61,1
    - Dst: memset
      Src: /src/frr/zebra/rule_netlink.c:65,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/rule_netlink.c:68,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/rule_netlink.c:69,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/rule_netlink.c:70,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/rule_netlink.c:71,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rule_netlink.c:78,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rule_netlink.c:84,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rule_netlink.c:89,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rule_netlink.c:93,1
    - Dst: strlen
      Src: /src/frr/zebra/rule_netlink.c:94,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rule_netlink.c:100,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rule_netlink.c:108,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rule_netlink.c:115,1
    - Dst: nl_attr_put8
      Src: /src/frr/zebra/rule_netlink.c:125,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rule_netlink.c:132,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rule_netlink.c:137,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rule_netlink.c:139,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rule_netlink.c:139,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rule_netlink.c:142,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 12
    argNames:
    - cmd
    - ctx
    - filter_bm
    - priority
    - table
    - src_ip
    - dst_ip
    - fwmark
    - dsfield
    - ip_protocol
    - buf
    - buflen
    argTypes:
    - int
    - struct zebra_dplane_ctx*
    - uint32_t
    - uint32_t
    - uint32_t
    - struct prefix*
    - struct prefix*
    - uint32_t
    - uint8_t
    - uint8_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 143
    functionName: netlink_rule_msg_encode
    functionSourceFile: /src/frr/zebra/rule_netlink.c
    functionUses: 0
    functionsReached:
    - strlen
    - nl_family_to_str
    - PREFIX_FAMILY
    - memset
    - nl_attr_put32
    - NLMSG_ALIGN
    - nl_attr_put8
    - nl_attr_put
    - zlog_debug
    - nl_msg_type_to_str
    - dplane_ctx_rule_get_ifname
    - NLMSG_LENGTH
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_rule_msg_encode(\n\tint cmd, const struct zebra_dplane_ctx
      *ctx, uint32_t filter_bm,\n\tuint32_t priority, uint32_t table, const struct
      prefix *src_ip,\n\tconst struct prefix *dst_ip, uint32_t fwmark, uint8_t dsfield,\n\tuint8_t
      ip_protocol, void *buf, size_t buflen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rule_netlink.c:150,1
    - Dst: netlink_rule_msg_encode
      Src: /src/frr/zebra/rule_netlink.c:153,1
    - Dst: dplane_ctx_rule_get_filter_bm
      Src: /src/frr/zebra/rule_netlink.c:154,1
    - Dst: dplane_ctx_rule_get_priority
      Src: /src/frr/zebra/rule_netlink.c:155,1
    - Dst: dplane_ctx_rule_get_table
      Src: /src/frr/zebra/rule_netlink.c:156,1
    - Dst: dplane_ctx_rule_get_src_ip
      Src: /src/frr/zebra/rule_netlink.c:156,1
    - Dst: dplane_ctx_rule_get_dst_ip
      Src: /src/frr/zebra/rule_netlink.c:157,1
    - Dst: dplane_ctx_rule_get_fwmark
      Src: /src/frr/zebra/rule_netlink.c:158,1
    - Dst: dplane_ctx_rule_get_dsfield
      Src: /src/frr/zebra/rule_netlink.c:159,1
    - Dst: dplane_ctx_rule_get_ipproto
      Src: /src/frr/zebra/rule_netlink.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 161
    functionName: netlink_rule_msg_encoder
    functionSourceFile: /src/frr/zebra/rule_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - dplane_ctx_rule_get_fwmark
    - dplane_ctx_rule_get_ipproto
    - dplane_ctx_rule_get_src_ip
    - dplane_ctx_rule_get_dst_ip
    - dplane_ctx_rule_get_priority
    - netlink_rule_msg_encode
    - dplane_ctx_rule_get_filter_bm
    - dplane_ctx_rule_get_dsfield
    - dplane_ctx_rule_get_table
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_rule_msg_encoder(struct zebra_dplane_ctx *ctx, void
      *buf,\n\t\t\t\t\tsize_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_rule_msg_encode
      Src: /src/frr/zebra/rule_netlink.c:166,1
    - Dst: dplane_ctx_rule_get_old_filter_bm
      Src: /src/frr/zebra/rule_netlink.c:167,1
    - Dst: dplane_ctx_rule_get_old_priority
      Src: /src/frr/zebra/rule_netlink.c:168,1
    - Dst: dplane_ctx_rule_get_old_table
      Src: /src/frr/zebra/rule_netlink.c:169,1
    - Dst: dplane_ctx_rule_get_old_src_ip
      Src: /src/frr/zebra/rule_netlink.c:170,1
    - Dst: dplane_ctx_rule_get_old_dst_ip
      Src: /src/frr/zebra/rule_netlink.c:171,1
    - Dst: dplane_ctx_rule_get_old_fwmark
      Src: /src/frr/zebra/rule_netlink.c:172,1
    - Dst: dplane_ctx_rule_get_old_dsfield
      Src: /src/frr/zebra/rule_netlink.c:173,1
    - Dst: dplane_ctx_rule_get_old_ipproto
      Src: /src/frr/zebra/rule_netlink.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 175
    functionName: netlink_oldrule_msg_encoder
    functionSourceFile: /src/frr/zebra/rule_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_rule_get_old_priority
    - dplane_ctx_rule_get_old_src_ip
    - dplane_ctx_rule_get_old_dsfield
    - dplane_ctx_rule_get_old_dst_ip
    - dplane_ctx_rule_get_old_fwmark
    - netlink_rule_msg_encode
    - dplane_ctx_rule_get_old_ipproto
    - dplane_ctx_rule_get_old_table
    - dplane_ctx_rule_get_old_filter_bm
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_oldrule_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \  void *buf, size_t buflen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rule_netlink.c:185,1
    - Dst: flog_err
      Src: /src/frr/zebra/rule_netlink.c:188,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rule_netlink.c:195,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rule_netlink.c:203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 207
    functionName: netlink_put_rule_update_msg
    functionSourceFile: /src/frr/zebra/rule_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_batch_add_msg
    - dplane_ctx_get_op
    - flog_err
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: enum netlink_msg_status netlink_put_rule_update_msg(struct nl_batch
      *bth, struct zebra_dplane_ctx *ctx)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/rule_netlink.c:231,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rule_netlink.c:237,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rule_netlink.c:239,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rule_netlink.c:242,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rule_netlink.c:246,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rule_netlink.c:252,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rule_netlink.c:257,1
    - Dst: memset
      Src: /src/frr/zebra/rule_netlink.c:266,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/rule_netlink.c:267,1
    - Dst: RTM_RTA
      Src: /src/frr/zebra/rule_netlink.c:267,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:270,1
    - Dst: memcpy
      Src: /src/frr/zebra/rule_netlink.c:274,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:275,1
    - Dst: memcpy
      Src: /src/frr/zebra/rule_netlink.c:277,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:278,1
    - Dst: memcpy
      Src: /src/frr/zebra/rule_netlink.c:286,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:287,1
    - Dst: memcpy
      Src: /src/frr/zebra/rule_netlink.c:289,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:290,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:297,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:306,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:309,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rule_netlink.c:311,1
    - Dst: strlcpy
      Src: /src/frr/zebra/rule_netlink.c:312,1
    - Dst: dplane_pbr_rule_delete
      Src: /src/frr/zebra/rule_netlink.c:322,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rule_netlink.c:324,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rule_netlink.c:330,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rule_netlink.c:340,1
    - Dst: if_lookup_by_name_per_ns
      Src: /src/frr/zebra/rule_netlink.c:343,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rule_netlink.c:347,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rule_netlink.c:349,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rule_netlink.c:350,1
    - Dst: kernel_pbr_rule_del
      Src: /src/frr/zebra/rule_netlink.c:355,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 356
    functionName: netlink_rule_change
    functionSourceFile: /src/frr/zebra/rule_netlink.c
    functionUses: 0
    functionsReached:
    - kernel_pbr_rule_del
    - netlink_parse_rtattr
    - nl_family_to_str
    - flog_warn
    - memset
    - RTM_RTA
    - strlcpy
    - dplane_pbr_rule_delete
    - NLMSG_DATA
    - zlog_err
    - zlog_debug
    - RTA_DATA
    - nl_msg_type_to_str
    - if_lookup_by_name_per_ns
    - frrtrace
    - NLMSG_LENGTH
    - memcpy
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: int netlink_rule_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rule_netlink.c:369,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rule_netlink.c:372,1
    - Dst: netlink_request
      Src: /src/frr/zebra/rule_netlink.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - zns
    - family
    - type
    argTypes:
    - struct zebra_ns*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 376
    functionName: netlink_request_rules
    functionSourceFile: /src/frr/zebra/rule_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: int netlink_request_rules(struct zebra_ns *zns, int family, int type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rule_netlink.c:386,1
    - Dst: netlink_request_rules
      Src: /src/frr/zebra/rule_netlink.c:388,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rule_netlink.c:392,1
    - Dst: netlink_request_rules
      Src: /src/frr/zebra/rule_netlink.c:397,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rule_netlink.c:401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 404
    functionName: netlink_rules_read
    functionSourceFile: /src/frr/zebra/rule_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request_rules
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int netlink_rules_read(struct zebra_ns *zns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:131,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:136,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:137,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:140,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:145,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:146,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 148
    functionName: clear_nhlfe_installed
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void clear_nhlfe_installed(struct zebra_lsp *lsp)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zebra_mpls.c:170,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:186,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:188,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:191,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:196,1
    - Dst: nexthop_labels_match
      Src: /src/frr/zebra/zebra_mpls.c:197,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:203,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:204,1
    - Dst: nhlfe_out_label_update
      Src: /src/frr/zebra/zebra_mpls.c:210,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:211,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:215,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:224,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:225,1
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:231,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:234,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:244,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:247,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 4
    argNames:
    - zvrf
    - label
    - rn
    - re
    argTypes:
    - struct zebra_vrf*
    - mpls_label_t
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 251
    functionName: lsp_install
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_add
    - nhlfe_find
    - lsp_check_free
    - nhlfe_out_label_update
    - nhlfe2str
    - NHLFE_FAMILY
    - CHECK_FLAG
    - lsp_type_from_re_type
    - zlog_debug
    - UNSET_FLAG
    - nexthop_labels_match
    - SET_FLAG
    - hash_get
    - lsp_processq_add
    linkageType: ''
    returnType: int
    signature: "int lsp_install(struct zebra_vrf *zvrf, mpls_label_t label,\n\t\t
      \      struct route_node *rn, struct route_entry *re)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:272,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:273,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:277,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:284,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:285,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:290,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:291,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:292,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:294,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:299,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:300,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:303,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - zvrf
    - label
    argTypes:
    - struct zebra_vrf*
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 307
    functionName: lsp_uninstall
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - lsp_check_free
    - nhlfe_list_first
    - nhlfe2str
    - CHECK_FLAG
    - nhlfe_del
    - hash_lookup
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - frr_each_safe
    - lsp_processq_add
    linkageType: ''
    returnType: int
    signature: int lsp_uninstall(struct zebra_vrf *zvrf, mpls_label_t label)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:325,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:326,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:348,1
    - Dst: fec_update_clients
      Src: /src/frr/zebra/zebra_mpls.c:353,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:356,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 359
    functionName: fec_evaluate
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - route_top
    - fec_change_update_lsp
    - route_next
    - zlog_debug
    - fec_update_clients
    linkageType: ''
    returnType: void
    signature: void fec_evaluate(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - zvrf
    - fec
    argTypes:
    - struct zebra_vrf*
    - struct zebra_fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 380
    functionName: fec_derive_label_from_index
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t fec_derive_label_from_index(struct zebra_vrf *zvrf,\n\t\t\t\t\t
      \   struct zebra_fec *fec)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:397,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:404,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:404,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:405,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:405,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_mpls.c:410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:415,1
    - Dst: zebra_rib_labeled_unicast
      Src: /src/frr/zebra/zebra_mpls.c:419,1
    - Dst: lsp_install
      Src: /src/frr/zebra/zebra_mpls.c:422,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 3
    argNames:
    - zvrf
    - fec
    - old_label
    argTypes:
    - struct zebra_vrf*
    - struct zebra_fec*
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 386
    functionDepth: 2
    functionLinenumber: 386
    functionLinenumberEnd: 426
    functionName: fec_change_update_lsp
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - zebra_rib_labeled_unicast
    - route_node_lookup
    - PREFIX_FAMILY
    - lsp_install
    - zvrf_id
    - CHECK_FLAG
    - zebra_vrf_table
    - family2afi
    - lsp_uninstall
    linkageType: ''
    returnType: int
    signature: "int fec_change_update_lsp(struct zebra_vrf *zvrf, struct zebra_fec
      *fec,\n\t\t\t\t mpls_label_t old_label)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 417
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mpls.c:439,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_mpls.c:441,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mpls.c:443,1
    - Dst: stream_put_prefix
      Src: /src/frr/zebra/zebra_mpls.c:444,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mpls.c:445,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_mpls.c:446,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_mpls.c:446,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_mpls.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - fec
    - client
    argTypes:
    - struct zebra_fec*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 448
    functionName: fec_send
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - stream_new
    - zclient_create_header
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zserv_send_message
    - stream_put_prefix
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int fec_send(struct zebra_fec *fec, struct zserv *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:459,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:461,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:462,1
    - Dst: fec_send
      Src: /src/frr/zebra/zebra_mpls.c:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fec
    argTypes:
    - struct zebra_fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 454
    functionDepth: 2
    functionLinenumber: 454
    functionLinenumberEnd: 465
    functionName: fec_update_clients
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zebra_route_string
    - zlog_debug
    - fec_send
    linkageType: ''
    returnType: void
    signature: void fec_update_clients(struct zebra_fec *fec)
  - BBCount: 418
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:479,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:480,1
    - Dst: label2str
      Src: /src/frr/zebra/zebra_mpls.c:480,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:482,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:483,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:484,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:485,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:486,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:487,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:488,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:490,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_mpls.c:501,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_mpls.c:502,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:503,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:506,1
    - Dst: fec_add
      Src: /src/frr/zebra/zebra_mpls.c:514,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_mpls.c:524,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_mpls.c:531,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_mpls.c:536,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:538,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_mpls.c:553,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:555,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:556,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_mpls.c:567,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:595,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls.c:600,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_mpls.c:605,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:609,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:613,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:614,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:644,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls.c:649,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_mpls.c:654,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:663,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:664,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_mpls.c:703,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_mpls.c:704,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_mpls.c:705,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:706,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:708,1
    - Dst: nhlfe_nexthop_active_ipv4
      Src: /src/frr/zebra/zebra_mpls.c:712,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:713,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:715,1
    - Dst: nhlfe_nexthop_active_ipv6
      Src: /src/frr/zebra/zebra_mpls.c:719,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:720,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:722,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/zebra_mpls.c:726,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_mpls.c:727,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_mpls.c:729,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:730,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:732,1
    - Dst: nhlfe_nexthop_active_ipv6
      Src: /src/frr/zebra/zebra_mpls.c:734,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:735,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:737,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:745,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:766,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:772,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:774,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:777,1
    - Dst: nhlfe_nexthop_active
      Src: /src/frr/zebra/zebra_mpls.c:778,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:791,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:792,1
    - Dst: nhlfe_nexthop_active
      Src: /src/frr/zebra/zebra_mpls.c:793,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:797,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:805,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:812,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:813,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:815,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:816,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:820,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:821,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:822,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:824,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:833,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:837,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:849,1
    - Dst: dplane_lsp_delete
      Src: /src/frr/zebra/zebra_mpls.c:850,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:870,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:872,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:878,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:890,1
    - Dst: lsp_select_best_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:900,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:906,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:908,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:909,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:915,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:919,1
    - Dst: dplane_lsp_add
      Src: /src/frr/zebra/zebra_mpls.c:921,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:926,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:931,1
    - Dst: dplane_lsp_delete
      Src: /src/frr/zebra/zebra_mpls.c:943,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:948,1
    - Dst: clear_nhlfe_installed
      Src: /src/frr/zebra/zebra_mpls.c:949,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:956,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:964,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:968,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:978,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:983,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:985,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:987,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:989,1
    - Dst: dplane_lsp_update
      Src: /src/frr/zebra/zebra_mpls.c:994,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:999,1
    - Dst: zebra_router_in_shutdown
      Src: /src/frr/zebra/zebra_mpls.c:1028,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:1031,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:1032,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1046,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1048,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1049,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1050,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1053,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1054,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1055,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:1058,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1076,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:1080,1
    - Dst: work_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:1085,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1086,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_mpls.c:1098,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_mpls.c:1100,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_mpls.c:1101,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1104,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1121,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1122,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1123,1
    - Dst: lsp_free
      Src: /src/frr/zebra/zebra_mpls.c:1124,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1131,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1132,1
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:1133,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1136,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1137,1
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:1138,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1156,1
    - Dst: lsp_free_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:1159,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_mpls.c:1161,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:1162,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:1179,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:1183,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:1186,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_mpls.c:1214,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_mpls.c:1221,1
    - Dst: nhlfe_nhop_match
      Src: /src/frr/zebra/zebra_mpls.c:1252,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:1271,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_mpls.c:1273,1
    - Dst: lsp_distance
      Src: /src/frr/zebra/zebra_mpls.c:1277,1
    - Dst: nexthop_new
      Src: /src/frr/zebra/zebra_mpls.c:1279,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:1281,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1303,1
    - Dst: nexthop_free
      Src: /src/frr/zebra/zebra_mpls.c:1305,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:1306,1
    - Dst: nhlfe_alloc
      Src: /src/frr/zebra/zebra_mpls.c:1330,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1338,1
    - Dst: nhlfe_list_add_tail
      Src: /src/frr/zebra/zebra_mpls.c:1339,1
    - Dst: nhlfe_list_add_head
      Src: /src/frr/zebra/zebra_mpls.c:1341,1
    - Dst: nexthop_free
      Src: /src/frr/zebra/zebra_mpls.c:1356,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:1360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1382,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1383,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1385,1
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:1389,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1410,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1414,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:1420,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1426,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1427,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1428,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1431,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1435,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:1441,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1442,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1447,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1448,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1449,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1452,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1459,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:1462,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:1465,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:1489,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1490,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:1493,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_mpls.c:1504,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1505,1
    - Dst: nhlfe_type2str
      Src: /src/frr/zebra/zebra_mpls.c:1505,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_mpls.c:1507,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1509,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1510,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1513,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_mpls.c:1515,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_mpls.c:1518,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1520,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_mpls.c:1521,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_mpls.c:1526,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1529,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1530,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_mpls.c:1535,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1539,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1540,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1545,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1546,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1553,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1554,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1556,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_mpls.c:1558,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1561,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1581,1
    - Dst: nhlfe_type2str
      Src: /src/frr/zebra/zebra_mpls.c:1582,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:1583,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1589,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1594,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1596,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1597,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1602,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:1603,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1606,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1607,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1612,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1613,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1619,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1620,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1622,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1623,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1625,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1637,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1640,1
    - Dst: nhlfe_print
      Src: /src/frr/zebra/zebra_mpls.c:1641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1644,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1653,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1660,1
    - Dst: nhlfe_print
      Src: /src/frr/zebra/zebra_mpls.c:1661,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_mpls.c:1673,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1674,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_mpls.c:1676,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1678,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_mpls.c:1679,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1681,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1682,1
    - Dst: nhlfe_json
      Src: /src/frr/zebra/zebra_mpls.c:1682,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1684,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1688,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1690,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1692,1
    - Dst: nhlfe_json
      Src: /src/frr/zebra/zebra_mpls.c:1692,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1696,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_mpls.c:1707,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_mpls.c:1713,1
    - Dst: work_queue_new
      Src: /src/frr/zebra/zebra_mpls.c:1737,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_mpls.c:1763,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_mpls.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1767,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_mpls.c:1768,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1769,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/zebra_mpls.c:1770,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1772,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:1778,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:1785,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1788,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1789,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1796,1
    - Dst: clear_nhlfe_installed
      Src: /src/frr/zebra/zebra_mpls.c:1797,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:1798,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1805,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1806,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1811,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1812,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1813,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1814,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:1821,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:1826,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1828,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:1831,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1915,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:1926,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:1933,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1939,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1943,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1948,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1959,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1966,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1967,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1968,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1973,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:2016,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:2023,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2028,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2031,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2034,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2035,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2039,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2042,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2043,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2046,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2048,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2050,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2053,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2055,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2062,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2064,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2065,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2066,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2067,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2090,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:2091,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:2094,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:2100,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:2101,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2104,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:2105,1
    - Dst: dplane_ctx_get_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2117,1
    - Dst: compare_notif_nhlfes
      Src: /src/frr/zebra/zebra_mpls.c:2119,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2123,1
    - Dst: dplane_ctx_get_backup_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2127,1
    - Dst: compare_notif_nhlfes
      Src: /src/frr/zebra/zebra_mpls.c:2129,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2135,1
    - Dst: dplane_lsp_notif_update
      Src: /src/frr/zebra/zebra_mpls.c:2145,1
    - Dst: dplane_ctx_get_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2152,1
    - Dst: update_nhlfes_from_ctx
      Src: /src/frr/zebra/zebra_mpls.c:2153,1
    - Dst: dplane_ctx_get_backup_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2155,1
    - Dst: update_nhlfes_from_ctx
      Src: /src/frr/zebra/zebra_mpls.c:2156,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2159,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:2166,1
    - Dst: dplane_lsp_notif_update
      Src: /src/frr/zebra/zebra_mpls.c:2169,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:2173,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2176,1
    - Dst: clear_nhlfe_installed
      Src: /src/frr/zebra/zebra_mpls.c:2177,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2190,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2190,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2195,1
    - Dst: lsp_install
      Src: /src/frr/zebra/zebra_mpls.c:2205,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2220,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2220,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2225,1
    - Dst: lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:2230,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2244,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2259,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2272,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2290,1
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:2304,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2329,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2329,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2334,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2338,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2343,1
    - Dst: fec_add
      Src: /src/frr/zebra/zebra_mpls.c:2345,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2347,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2350,1
    - Dst: listnode_lookup
      Src: /src/frr/zebra/zebra_mpls.c:2361,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_mpls.c:2373,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2376,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2380,1
    - Dst: fec_derive_label_from_index
      Src: /src/frr/zebra/zebra_mpls.c:2390,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2407,1
    - Dst: fec_send
      Src: /src/frr/zebra/zebra_mpls.c:2408,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2412,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2428,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2428,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2432,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2434,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2436,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_mpls.c:2440,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2443,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2444,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2450,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2453,1
    - Dst: fec_del
      Src: /src/frr/zebra/zebra_mpls.c:2454,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:2465,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2476,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2477,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2479,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:2482,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_mpls.c:2485,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:2487,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2488,1
    - Dst: fec_del
      Src: /src/frr/zebra/zebra_mpls.c:2489,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_mpls.c:2512,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:2516,1
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zebra_mpls.c:2521,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:2522,1
    - Dst: mpls_ftn_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:2526,1
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zebra_mpls.c:2527,1
    - Dst: mpls_ftn_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:2528,1
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zebra_mpls.c:2529,1
    - Dst: zebra_mpls_fec_for_label
      Src: /src/frr/zebra/zebra_mpls.c:2542,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:2550,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2553,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2554,1
    - Dst: zebra_mpls_label_already_bound
      Src: /src/frr/zebra/zebra_mpls.c:2569,1
    - Dst: zebra_mpls_fec_for_label
      Src: /src/frr/zebra/zebra_mpls.c:2571,1
    - Dst: zebra_mpls_static_fec_add
      Src: /src/frr/zebra/zebra_mpls.c:2579,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2587,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2587,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2592,1
    - Dst: fec_add
      Src: /src/frr/zebra/zebra_mpls.c:2594,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2597,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2603,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2613,1
    - Dst: fec_update_clients
      Src: /src/frr/zebra/zebra_mpls.c:2616,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2619,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2637,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2637,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2641,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2649,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2658,1
    - Dst: fec_del
      Src: /src/frr/zebra/zebra_mpls.c:2659,1
    - Dst: fec_derive_label_from_index
      Src: /src/frr/zebra/zebra_mpls.c:2664,1
    - Dst: fec_update_clients
      Src: /src/frr/zebra/zebra_mpls.c:2669,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2672,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2689,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2690,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:2701,1
    - Dst: label2str
      Src: /src/frr/zebra/zebra_mpls.c:2702,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2721,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2722,1
    - Dst: fec_print
      Src: /src/frr/zebra/zebra_mpls.c:2725,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2739,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2739,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_mpls.c:2743,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_mpls.c:2744,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:2748,1
    - Dst: fec_print
      Src: /src/frr/zebra/zebra_mpls.c:2752,1
    - Dst: zebra_nhg_rib_find_nhe
      Src: /src/frr/zebra/zebra_mpls.c:2760,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_mpls.c:2762,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:2770,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2772,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2788,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:2791,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:2791,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_mpls.c:2796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2798,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:2810,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2813,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:2816,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2819,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2822,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2823,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:2828,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:2830,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:2832,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_mpls.c:2852,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2861,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_mpls.c:2871,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2880,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2892,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:2940,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2944,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2947,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:2950,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:2950,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_mpls.c:2953,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2955,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:2972,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2981,1
    - Dst: lsp_znh_install
      Src: /src/frr/zebra/zebra_mpls.c:2998,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3000,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3006,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3007,1
    - Dst: ftn_update_znh
      Src: /src/frr/zebra/zebra_mpls.c:3019,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3024,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3025,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3035,1
    - Dst: lsp_backup_znh_install
      Src: /src/frr/zebra/zebra_mpls.c:3043,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3045,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3053,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3054,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:3062,1
    - Dst: ftn_update_znh
      Src: /src/frr/zebra/zebra_mpls.c:3068,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3074,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3075,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3088,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3090,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3091,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:3093,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:3095,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:3099,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3118,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3122,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3130,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3133,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_mpls.c:3141,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3150,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3151,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3153,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3157,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls.c:3164,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3167,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:3168,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:3173,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3181,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3183,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3186,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3188,1
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:3193,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3197,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:3225,1
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3227,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3233,1
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3254,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3256,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls.c:3261,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3263,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3266,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3271,1
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3285,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3290,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3296,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3314,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3340,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3345,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3348,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3354,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3355,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3359,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3360,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3365,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3369,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3371,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3374,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:3377,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3396,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3400,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3414,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3421,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:3439,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:3439,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:3443,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:3443,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:3449,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3457,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3458,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3459,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:3465,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3472,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3473,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3481,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:3482,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:3484,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:3488,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3518,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3522,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3534,1
    - Dst: nhlfe_list_next
      Src: /src/frr/zebra/zebra_mpls.c:3535,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3539,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:3586,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3588,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3593,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3594,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3603,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3604,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3612,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:3613,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:3618,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3624,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3625,1
    - Dst: mpls_lsp_install
      Src: /src/frr/zebra/zebra_mpls.c:3632,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3662,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3669,1
    - Dst: mpls_static_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3672,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:3675,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3676,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3680,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3687,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3688,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3693,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3697,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3703,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_mpls.c:3704,1
    - Dst: lsp_free_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3705,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:3706,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:3721,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3740,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3749,1
    - Dst: lsp_json
      Src: /src/frr/zebra/zebra_mpls.c:3754,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_mpls.c:3755,1
    - Dst: lsp_print
      Src: /src/frr/zebra/zebra_mpls.c:3757,1
    - Dst: hash_get_sorted_list
      Src: /src/frr/zebra/zebra_mpls.c:3771,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_mpls.c:3774,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3776,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:3777,1
    - Dst: label2str
      Src: /src/frr/zebra/zebra_mpls.c:3778,1
    - Dst: lsp_json
      Src: /src/frr/zebra/zebra_mpls.c:3780,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_mpls.c:3782,1
    - Dst: ttable_new
      Src: /src/frr/zebra/zebra_mpls.c:3787,1
    - Dst: ttable_add_row
      Src: /src/frr/zebra/zebra_mpls.c:3788,1
    - Dst: ttable_restyle
      Src: /src/frr/zebra/zebra_mpls.c:3791,1
    - Dst: ttable_rowseps
      Src: /src/frr/zebra/zebra_mpls.c:3792,1
    - Dst: for
      Src: /src/frr/zebra/zebra_mpls.c:3794,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3794,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:3795,1
    - Dst: switch
      Src: /src/frr/zebra/zebra_mpls.c:3802,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3807,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_mpls.c:3808,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3810,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3816,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3821,1
    - Dst: case
      Src: /src/frr/zebra/zebra_mpls.c:3824,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3830,1
    - Dst: ttable_add_row
      Src: /src/frr/zebra/zebra_mpls.c:3838,1
    - Dst: nhlfe_type2str
      Src: /src/frr/zebra/zebra_mpls.c:3840,1
    - Dst: ttable_dump
      Src: /src/frr/zebra/zebra_mpls.c:3847,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:3849,1
    - Dst: ttable_del
      Src: /src/frr/zebra/zebra_mpls.c:3851,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_mpls.c:3854,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3871,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_mpls.c:3873,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:3873,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3878,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_mpls.c:3880,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:3881,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_mpls.c:3886,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:3887,1
    - Dst: hash_get_sorted_list
      Src: /src/frr/zebra/zebra_mpls.c:3907,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3909,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:3910,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:3915,1
    - Dst: nhlfe_config_str
      Src: /src/frr/zebra/zebra_mpls.c:3918,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mpls.c:3923,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mpls.c:3926,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3929,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3934,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_mpls.c:3939,1
    - Dst: zebra_mpls_label_block_add
      Src: /src/frr/zebra/zebra_mpls.c:3946,1
    - Dst: fec_evaluate
      Src: /src/frr/zebra/zebra_mpls.c:3953,1
    - Dst: zebra_mpls_label_block_del
      Src: /src/frr/zebra/zebra_mpls.c:3960,1
    - Dst: fec_evaluate
      Src: /src/frr/zebra/zebra_mpls.c:3966,1
    - Dst: zebra_mpls_write_label_block_config
      Src: /src/frr/zebra/zebra_mpls.c:3973,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3980,1
    - Dst: zebra_mpls_cleanup_tables
      Src: /src/frr/zebra/zebra_mpls.c:3991,1
    - Dst: afi_t
      Src: /src/frr/zebra/zebra_mpls.c:3994,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:3996,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:3997,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:4003,1
    - Dst: lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:4011,1
    CyclomaticComplexity: 510
    EdgeCount: 510
    ICount: 1531
    argCount: 2
    argNames:
    - fec
    - vty
    argTypes:
    - struct zebra_fec*
    - struct vty*
    assertStmts:
    - condition: (lsp)
      pos:
        line_end: 1270
        line_start: 1270
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (nh->nh_label)
      pos:
        line_end: 3593
        line_start: 3593
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (nh)
      pos:
        line_end: 3592
        line_start: 3592
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (rn != NULL)
      pos:
        line_end: 3087
        line_start: 3087
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (zvrf)
      pos:
        line_end: 1031
        line_start: 1031
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (nh)
      pos:
        line_end: 3129
        line_start: 3129
        source_file: /src/frr/zebra/zebra_mpls.c
    constantsTouched: []
    func_position:
      end: 4014
      start: 471
    functionDepth: 3
    functionLinenumber: 471
    functionLinenumberEnd: 4014
    functionName: fec_print
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - zebra_mpls_fec_for_label
    - ifindex2ifname
    - ttable_del
    - update_nhlfes_from_ctx
    - route_top
    - lsp_type_from_re_type
    - hash_lookup
    - flog_err
    - IPV4_ADDR_SAME
    - ttable_dump
    - lsp_backup_znh_install
    - nhlfe_alloc
    - strlcat
    - nhlfe_free
    - mpls_lsp_uninstall_all
    - flog_warn
    - memset
    - XCALLOC
    - snprintf
    - if
    - for
    - dplane_ctx_get_in_label
    - work_queue_new
    - case
    - route_unlock_node
    - dplane_ctx_get_backup_nhlfe_list
    - lsp_distance
    - nexthop_new
    - memcpy
    - ttable_new
    - json_object_new_object
    - nhlfe2str
    - list_isempty
    - listnode_lookup
    - work_queue_add
    - dplane_ctx_get_status
    - nhlfe_nexthop_active
    - dplane_lsp_update
    - list_new
    - nexthop_add_labels
    - ftn_update_nexthop
    - nexthop_same
    - dplane_lsp_notif_update
    - nhlfe_find
    - zebra_nhg_rib_find_nhe
    - fec_change_update_lsp
    - jhash_1word
    - nexthop_del_labels
    - zebra_nhg_free
    - lsp_processq_add
    - dplane_lsp_add
    - rib_queue_add
    - dplane_ctx_get_op
    - if_lookup_by_index
    - route_node_lookup
    - NHLFE_FAMILY
    - clear_nhlfe_installed
    - mpls_lsp_uninstall
    - lsp_free
    - inet_ntop
    - route_node_match
    - label2str
    - zebra_ns_lookup
    - fec_derive_label_from_index
    - fec_evaluate
    - listnode_add_sort
    - hash_get_sorted_list
    - nhlfe_config_str
    - json_object_new_array
    - nhlfe_print
    - IN6_IS_ADDR_LINKLOCAL
    - route_entry_update_nhe
    - mpls_label2str
    - nhlfe_list_del
    - json_object_object_add
    - fec_add
    - if_is_operative
    - RB_FOREACH
    - vty_json
    - dplane_ctx_get_nhlfe_list
    - switch
    - zebra_mpls_label_already_bound
    - memcmp
    - mpls_static_lsp_uninstall_all
    - json_object_string_add
    - lsp_json
    - nexthop2str
    - mpls_lsp_install
    - ttable_restyle
    - zlog_debug
    - nhlfe_list_add_head
    - nhlfe_nhop_match
    - fec_update_clients
    - zebra_nhg_get_backup_nhg
    - nhlfe_list_next
    - assert
    - nhlfe_add
    - lsp_check_free
    - vty_out
    - nhlfe_list_init
    - nhlfe_nexthop_active_ipv4
    - lsp_free_nhlfe
    - strlcpy
    - fec_print
    - json_object_int_add
    - route_next
    - dplane_res2str
    - XFREE
    - zebra_mpls_label_block_add
    - hash_release
    - nexthop_free
    - json_object_array_add
    - zebra_router_in_shutdown
    - json_object_boolean_true_add
    - SET_FLAG
    - route_node_get
    - mpls_zebra_nhe_update
    - IPV6_ADDR_SAME
    - zapi_nexthop2str
    - ftn_update_znh
    - nhlfe_nexthop_active_ipv6
    - afi_t
    - nhlfe_type2str
    - list_delete
    - dplane_lsp_delete
    - lsp_select_best_nhlfe
    - frr_each
    - zebra_mpls_label_block_del
    - if_lookup_by_index_per_ns
    - nhlfe_json
    - listnode_add
    - zebra_vrf_table
    - frr_each_safe
    - fec_send
    - json_object_string_addf
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - nhlfe_del
    - zebra_mpls_cleanup_tables
    - zebra_vrf_lookup_by_id
    - hash_iterate
    - mpls_ftn_uninstall_all
    - hash_get
    - ttable_add_row
    - nhlfe_list_add_tail
    - lsp_add_nhlfe
    - dplane_op2str
    - apply_mask
    - lsp_install
    - zebra_mpls_static_fec_add
    - zebra_mpls_write_label_block_config
    - UNSET_FLAG
    - fec_del
    - family2afi
    - listnode_delete
    - zebra_route_string
    - lsp_uninstall
    - nhlfe_list_first
    - json_object_new_int
    - fec_find
    - lsp_znh_install
    - PREFIX_FAMILY
    - compare_notif_nhlfes
    - CHECK_FLAG
    - lsp_print
    - ttable_rowseps
    - zebra_nhe_copy
    - zebra_sr_policy_label_update
    linkageType: ''
    returnType: void
    signature: void fec_print(struct zebra_fec *fec, struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_mpls.c:553,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:555,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fec
    argTypes:
    - struct zebra_fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 558
    functionName: fec_del
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - list_delete
    - XFREE
    linkageType: ''
    returnType: int
    signature: int fec_del(struct zebra_fec *fec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_mpls.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 568
    functionName: label_hash
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int label_hash(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 579
    functionName: label_cmp
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool label_cmp(const void *p1, const void *p2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:595,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls.c:600,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_mpls.c:605,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:609,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:613,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:614,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - nhlfe
    - nexthop
    argTypes:
    - struct zebra_nhlfe*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 628
    functionName: nhlfe_nexthop_active_ipv4
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - memset
    - CHECK_FLAG
    - zebra_vrf_table
    - route_node_match
    linkageType: ''
    returnType: int
    signature: "int nhlfe_nexthop_active_ipv4(struct zebra_nhlfe *nhlfe,\n\t\t\t\t
      \    struct nexthop *nexthop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:613,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:614,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 625
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, match)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:644,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls.c:649,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_mpls.c:654,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:663,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:664,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - nhlfe
    - nexthop
    argTypes:
    - struct zebra_nhlfe*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 673
    functionName: nhlfe_nexthop_active_ipv6
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - memset
    - CHECK_FLAG
    - zebra_vrf_table
    - route_node_match
    linkageType: ''
    returnType: int
    signature: "int nhlfe_nexthop_active_ipv6(struct zebra_nhlfe *nhlfe,\n\t\t\t\t
      \    struct nexthop *nexthop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:663,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:664,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 666
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, match)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_mpls.c:703,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_mpls.c:704,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_mpls.c:705,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:706,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:708,1
    - Dst: nhlfe_nexthop_active_ipv4
      Src: /src/frr/zebra/zebra_mpls.c:712,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:713,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:715,1
    - Dst: nhlfe_nexthop_active_ipv6
      Src: /src/frr/zebra/zebra_mpls.c:719,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:720,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:722,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/zebra_mpls.c:726,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_mpls.c:727,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_mpls.c:729,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:730,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:732,1
    - Dst: nhlfe_nexthop_active_ipv6
      Src: /src/frr/zebra/zebra_mpls.c:734,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:735,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:737,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:745,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - nhlfe
    argTypes:
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 681
    functionDepth: 2
    functionLinenumber: 681
    functionLinenumberEnd: 746
    functionName: nhlfe_nexthop_active
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - if_lookup_by_index
    - nhlfe_nexthop_active_ipv4
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - if_lookup_by_index_per_ns
    - SET_FLAG
    - UNSET_FLAG
    - if_is_operative
    - nhlfe_nexthop_active_ipv6
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: int nhlfe_nexthop_active(struct zebra_nhlfe *nhlfe)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:766,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:772,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:774,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:777,1
    - Dst: nhlfe_nexthop_active
      Src: /src/frr/zebra/zebra_mpls.c:778,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:791,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:792,1
    - Dst: nhlfe_nexthop_active
      Src: /src/frr/zebra/zebra_mpls.c:793,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:797,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:805,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:812,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:813,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:815,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:816,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:820,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:821,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:822,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:824,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:833,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:837,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 41
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 754
    functionDepth: 3
    functionLinenumber: 754
    functionLinenumberEnd: 838
    functionName: lsp_select_best_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - frr_each
    - CHECK_FLAG
    - SET_FLAG
    - UNSET_FLAG
    - nhlfe_nexthop_active
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void lsp_select_best_nhlfe(struct zebra_lsp *lsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:849,1
    - Dst: dplane_lsp_delete
      Src: /src/frr/zebra/zebra_mpls.c:850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 844
    functionDepth: 1
    functionLinenumber: 844
    functionLinenumberEnd: 851
    functionName: lsp_uninstall_from_kernel
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - dplane_lsp_delete
    linkageType: ''
    returnType: void
    signature: void lsp_uninstall_from_kernel(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:870,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:872,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:878,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 879
    functionName: lsp_schedule
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - lsp_processq_add
    - nhlfe_list_first
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void lsp_schedule(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:890,1
    - Dst: lsp_select_best_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:900,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:906,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:908,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:909,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:915,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:919,1
    - Dst: dplane_lsp_add
      Src: /src/frr/zebra/zebra_mpls.c:921,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:926,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:931,1
    - Dst: dplane_lsp_delete
      Src: /src/frr/zebra/zebra_mpls.c:943,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:948,1
    - Dst: clear_nhlfe_installed
      Src: /src/frr/zebra/zebra_mpls.c:949,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:956,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:964,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:968,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:978,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:983,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:985,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:987,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:989,1
    - Dst: dplane_lsp_update
      Src: /src/frr/zebra/zebra_mpls.c:994,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:999,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 72
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 885
    functionDepth: 4
    functionLinenumber: 885
    functionLinenumberEnd: 1011
    functionName: lsp_process
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - lsp_select_best_nhlfe
    - nhlfe2str
    - dplane_lsp_delete
    - clear_nhlfe_installed
    - CHECK_FLAG
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - frr_each_safe
    - dplane_lsp_update
    - zebra_vrf_lookup_by_id
    - dplane_lsp_add
    linkageType: ''
    returnType: wq_item_status
    signature: wq_item_status lsp_process(struct work_queue *wq, void *data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zebra_router_in_shutdown
      Src: /src/frr/zebra/zebra_mpls.c:1028,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:1031,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:1032,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1046,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1048,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1049,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1050,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1053,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1054,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1055,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:1058,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 1031
        line_start: 1031
        source_file: /src/frr/zebra/zebra_mpls.c
    constantsTouched: []
    func_position:
      end: 1059
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1059
    functionName: lsp_processq_del
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - lsp_check_free
    - CHECK_FLAG
    - nhlfe_del
    - zebra_router_in_shutdown
    - UNSET_FLAG
    - frr_each_safe
    - zebra_vrf_lookup_by_id
    - assert
    linkageType: ''
    returnType: void
    signature: void lsp_processq_del(struct work_queue *wq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - wq
    argTypes:
    - struct work_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1068
    functionName: lsp_processq_complete
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lsp_processq_complete(struct work_queue *wq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1076,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:1080,1
    - Dst: work_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:1085,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1086,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1073
    functionDepth: 1
    functionLinenumber: 1073
    functionLinenumberEnd: 1088
    functionName: lsp_processq_add
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 4
    functionsReached:
    - CHECK_FLAG
    - flog_err
    - work_queue_add
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: int lsp_processq_add(struct zebra_lsp *lsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_mpls.c:1098,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_mpls.c:1100,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_mpls.c:1101,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1107
    functionName: lsp_alloc
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - nhlfe_list_init
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lsp_alloc(void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1121,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1122,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1123,1
    - Dst: lsp_free
      Src: /src/frr/zebra/zebra_mpls.c:1124,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - lsp_table
    - plsp
    argTypes:
    - struct hash*
    - struct zebra_lsp**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1112
    functionDepth: 1
    functionLinenumber: 1112
    functionLinenumberEnd: 1125
    functionName: lsp_check_free
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 4
    functionsReached:
    - lsp_free
    - nhlfe_list_first
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void lsp_check_free(struct hash *lsp_table, struct zebra_lsp **plsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1131,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1132,1
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:1133,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1136,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1137,1
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:1138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1140
    functionName: lsp_free_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - nhlfe_list_first
    - nhlfe_free
    - nhlfe_list_del
    linkageType: ''
    returnType: void
    signature: void lsp_free_nhlfe(struct zebra_lsp *lsp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1156,1
    - Dst: lsp_free_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:1159,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_mpls.c:1161,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:1162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - lsp_table
    - plsp
    argTypes:
    - struct hash*
    - struct zebra_lsp**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1165
    functionName: lsp_free
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - hash_release
    - zlog_debug
    - XFREE
    - lsp_free_nhlfe
    linkageType: ''
    returnType: void
    signature: void lsp_free(struct hash *lsp_table, struct zebra_lsp **plsp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:1179,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:1183,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:1186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - nhlfe
    - buf
    - size
    argTypes:
    - struct zebra_nhlfe*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1192
    functionName: nhlfe2str
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 4
    functionsReached:
    - inet_ntop
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *nhlfe2str(const struct zebra_nhlfe *nhlfe, char *buf, int size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_mpls.c:1214,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_mpls.c:1221,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 4
    argNames:
    - nhlfe
    - gtype
    - gate
    - ifindex
    argTypes:
    - struct zebra_nhlfe*
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1197
    functionDepth: 0
    functionLinenumber: 1197
    functionLinenumberEnd: 1234
    functionName: nhlfe_nhop_match
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int nhlfe_nhop_match(struct zebra_nhlfe *nhlfe,\n\t\t\t    enum nexthop_types_t
      gtype,\n\t\t\t    const union g_addr *gate, ifindex_t ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_nhop_match
      Src: /src/frr/zebra/zebra_mpls.c:1252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 5
    argNames:
    - list
    - lsp_type
    - gtype
    - gate
    - ifindex
    argTypes:
    - struct nhlfe_list_head*
    - enum lsp_types_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1241
    functionDepth: 1
    functionLinenumber: 1241
    functionLinenumberEnd: 1257
    functionName: nhlfe_find
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - nhlfe_nhop_match
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *nhlfe_find(struct nhlfe_list_head *list,\n\t\t\t\t
      \     enum lsp_types_t lsp_type,\n\t\t\t\t      enum nexthop_types_t gtype,\n\t\t\t\t
      \     const union g_addr *gate,\n\t\t\t\t      ifindex_t ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_nhop_match
      Src: /src/frr/zebra/zebra_mpls.c:1252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1249
    functionDepth: 1
    functionLinenumber: 1249
    functionLinenumberEnd: 1254
    functionName: frr_each_safe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 25
    functionsReached:
    - nhlfe_nhop_match
    linkageType: ''
    returnType: void
    signature: void frr_each_safe(nhlfe_list, list, nhlfe)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:1271,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_mpls.c:1273,1
    - Dst: lsp_distance
      Src: /src/frr/zebra/zebra_mpls.c:1277,1
    - Dst: nexthop_new
      Src: /src/frr/zebra/zebra_mpls.c:1279,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:1281,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1303,1
    - Dst: nexthop_free
      Src: /src/frr/zebra/zebra_mpls.c:1305,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:1306,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 8
    argNames:
    - lsp
    - lsp_type
    - gtype
    - gate
    - ifindex
    - vrf_id
    - num_labels
    - labels
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - vrf_id_t
    - uint8_t
    - mpls_label_t*
    assertStmts:
    - condition: (lsp)
      pos:
        line_end: 1270
        line_start: 1270
        source_file: /src/frr/zebra/zebra_mpls.c
    constantsTouched: []
    func_position:
      end: 1312
      start: 1262
    functionDepth: 1
    functionLinenumber: 1262
    functionLinenumberEnd: 1312
    functionName: nhlfe_alloc
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - nexthop_free
    - XCALLOC
    - lsp_distance
    - nexthop_new
    - zlog_debug
    - XFREE
    - nexthop_add_labels
    - assert
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *\nnhlfe_alloc(struct zebra_lsp *lsp, enum lsp_types_t
      lsp_type,\n\t    enum nexthop_types_t gtype, const union g_addr *gate,\n\t    ifindex_t
      ifindex, vrf_id_t vrf_id, uint8_t num_labels,\n\t    const mpls_label_t *labels)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_alloc
      Src: /src/frr/zebra/zebra_mpls.c:1330,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1338,1
    - Dst: nhlfe_list_add_tail
      Src: /src/frr/zebra/zebra_mpls.c:1339,1
    - Dst: nhlfe_list_add_head
      Src: /src/frr/zebra/zebra_mpls.c:1341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 9
    argNames:
    - lsp
    - lsp_type
    - gtype
    - gate
    - ifindex
    - vrf_id
    - num_labels
    - labels
    - is_backup
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - vrf_id_t
    - uint8_t
    - mpls_label_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1318
    functionDepth: 2
    functionLinenumber: 1318
    functionLinenumberEnd: 1344
    functionName: nhlfe_add
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - nhlfe_list_add_head
    - SET_FLAG
    - nhlfe_alloc
    - nhlfe_list_add_tail
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *\nnhlfe_add(struct zebra_lsp *lsp, enum lsp_types_t
      lsp_type,\n\t  enum nexthop_types_t gtype, const union g_addr *gate,\n\t  ifindex_t
      ifindex, vrf_id_t vrf_id, uint8_t num_labels,\n\t  const mpls_label_t *labels,
      bool is_backup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_free
      Src: /src/frr/zebra/zebra_mpls.c:1356,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:1360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - nhlfe
    argTypes:
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1361
    functionName: nhlfe_free
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - nexthop_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nhlfe_free(struct zebra_nhlfe *nhlfe)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1382,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1383,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_mpls.c:1385,1
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:1389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - nhlfe
    argTypes:
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1367
    functionDepth: 2
    functionLinenumber: 1367
    functionLinenumberEnd: 1392
    functionName: nhlfe_del
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - nhlfe_free
    - nhlfe_list_del
    linkageType: ''
    returnType: int
    signature: int nhlfe_del(struct zebra_nhlfe *nhlfe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nhlfe
    - nh_label
    argTypes:
    - struct zebra_nhlfe*
    - struct mpls_label_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1397
    functionDepth: 0
    functionLinenumber: 1397
    functionLinenumberEnd: 1401
    functionName: nhlfe_out_label_update
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void nhlfe_out_label_update(struct zebra_nhlfe *nhlfe,\n\t\t\t\t   struct
      mpls_label_stack *nh_label)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1410,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1414,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:1420,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1426,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1427,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1428,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1431,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:1435,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:1441,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1442,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1447,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1448,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1449,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:1452,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1459,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:1462,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:1465,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 3
    argNames:
    - lsp_table
    - lsp
    - type
    argTypes:
    - struct hash*
    - struct zebra_lsp*
    - enum lsp_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1403
    functionDepth: 3
    functionLinenumber: 1403
    functionLinenumberEnd: 1469
    functionName: mpls_lsp_uninstall_all
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - lsp_check_free
    - nhlfe2str
    - CHECK_FLAG
    - nhlfe_del
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - frr_each_safe
    - lsp_processq_add
    linkageType: ''
    returnType: int
    signature: "int mpls_lsp_uninstall_all(struct hash *lsp_table, struct zebra_lsp
      *lsp,\n\t\t\t\t  enum lsp_types_t type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:1489,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:1490,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:1493,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - zvrf
    - in_label
    argTypes:
    - struct zebra_vrf*
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1475
    functionDepth: 4
    functionLinenumber: 1475
    functionLinenumberEnd: 1494
    functionName: mpls_static_lsp_uninstall_all
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - hash_lookup
    - nhlfe_list_first
    - mpls_lsp_uninstall_all
    linkageType: ''
    returnType: int
    signature: "int mpls_static_lsp_uninstall_all(struct zebra_vrf *zvrf,\n\t\t\t\t\t
      mpls_label_t in_label)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_mpls.c:1504,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1505,1
    - Dst: nhlfe_type2str
      Src: /src/frr/zebra/zebra_mpls.c:1505,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_mpls.c:1507,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1509,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1510,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1513,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_mpls.c:1515,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_mpls.c:1518,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1520,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_mpls.c:1521,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_mpls.c:1526,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1529,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1530,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_mpls.c:1535,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1539,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1540,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_mpls.c:1545,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1546,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1553,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1554,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1556,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_mpls.c:1558,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1561,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 1
    argNames:
    - nhlfe
    argTypes:
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1566
      start: 1496
    functionDepth: 1
    functionLinenumber: 1496
    functionLinenumberEnd: 1566
    functionName: nhlfe_json
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - json_object_new_int
    - ifindex2ifname
    - json_object_array_add
    - CHECK_FLAG
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - nhlfe_type2str
    linkageType: ''
    returnType: json_object
    signature: json_object *nhlfe_json(struct zebra_nhlfe *nhlfe)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1581,1
    - Dst: nhlfe_type2str
      Src: /src/frr/zebra/zebra_mpls.c:1582,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:1583,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1589,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1594,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1596,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1597,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1602,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:1603,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1606,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1607,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1612,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:1613,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1619,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1620,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1622,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1623,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1625,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - nhlfe
    - vty
    - indent
    argTypes:
    - struct zebra_nhlfe*
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1571
    functionDepth: 1
    functionLinenumber: 1571
    functionLinenumberEnd: 1626
    functionName: nhlfe_print
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - ifindex2ifname
    - vty_out
    - CHECK_FLAG
    - mpls_label2str
    - inet_ntop
    - nhlfe_type2str
    linkageType: ''
    returnType: void
    signature: "void nhlfe_print(struct zebra_nhlfe *nhlfe, struct vty *vty,\n\t\t\tconst
      char *indent)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1637,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1640,1
    - Dst: nhlfe_print
      Src: /src/frr/zebra/zebra_mpls.c:1641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1644,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1653,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:1660,1
    - Dst: nhlfe_print
      Src: /src/frr/zebra/zebra_mpls.c:1661,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - vty
    - lsp
    argTypes:
    - struct vty*
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1631
    functionDepth: 2
    functionLinenumber: 1631
    functionLinenumberEnd: 1665
    functionName: lsp_print
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - nhlfe_print
    - CHECK_FLAG
    - vty_out
    - frr_each
    linkageType: ''
    returnType: void
    signature: void lsp_print(struct vty *vty, struct zebra_lsp *lsp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_mpls.c:1673,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1674,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_mpls.c:1676,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1678,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_mpls.c:1679,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1681,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1682,1
    - Dst: nhlfe_json
      Src: /src/frr/zebra/zebra_mpls.c:1682,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1684,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1688,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_mpls.c:1690,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_mpls.c:1692,1
    - Dst: nhlfe_json
      Src: /src/frr/zebra/zebra_mpls.c:1692,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:1696,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1670
    functionDepth: 2
    functionLinenumber: 1670
    functionLinenumberEnd: 1699
    functionName: lsp_json
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - frr_each
    - CHECK_FLAG
    - nhlfe_json
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_object_add
    linkageType: ''
    returnType: json_object
    signature: json_object *lsp_json(struct zebra_lsp *lsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/zebra/zebra_mpls.c:1707,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_mpls.c:1713,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - hash
    - cmp
    argTypes:
    - struct hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1703
    functionDepth: 1
    functionLinenumber: 1703
    functionLinenumberEnd: 1716
    functionName: hash_get_sorted_list
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - list_new
    - listnode_add_sort
    linkageType: ''
    returnType: struct list
    signature: struct list *hash_get_sorted_list(struct hash *hash, void *cmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - lsp1
    - lsp2
    argTypes:
    - struct zebra_lsp*
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1721
    functionDepth: 0
    functionLinenumber: 1721
    functionLinenumberEnd: 1730
    functionName: lsp_cmp
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lsp_cmp(const struct zebra_lsp *lsp1, const struct zebra_lsp *lsp2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: work_queue_new
      Src: /src/frr/zebra/zebra_mpls.c:1737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1744
      start: 1735
    functionDepth: 1
    functionLinenumber: 1735
    functionLinenumberEnd: 1744
    functionName: mpls_processq_init
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - work_queue_new
    linkageType: ''
    returnType: void
    signature: void mpls_processq_init(void)
  - BBCount: 63
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_mpls.c:1763,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_mpls.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1767,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_mpls.c:1768,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1769,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/zebra_mpls.c:1770,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1772,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:1778,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:1785,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1788,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1789,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1796,1
    - Dst: clear_nhlfe_installed
      Src: /src/frr/zebra/zebra_mpls.c:1797,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:1798,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1805,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:1806,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1811,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1812,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1813,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1814,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:1821,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:1826,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:1828,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:1831,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 99
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1750
    functionDepth: 2
    functionLinenumber: 1750
    functionLinenumberEnd: 1889
    functionName: zebra_mpls_lsp_dplane_result
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - dplane_op2str
    - flog_warn
    - frr_each
    - clear_nhlfe_installed
    - CHECK_FLAG
    - dplane_ctx_get_status
    - hash_lookup
    - zlog_debug
    - UNSET_FLAG
    - dplane_res2str
    - SET_FLAG
    - zebra_vrf_lookup_by_id
    - zebra_sr_policy_label_update
    - dplane_ctx_get_in_label
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_lsp_dplane_result(struct zebra_dplane_ctx *ctx)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1915,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:1926,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:1933,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1939,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1943,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1948,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1959,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1966,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1967,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1968,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1973,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 44
    argCount: 4
    argNames:
    - ctx_head
    - nhlfe_head
    - start_counter
    - end_counter
    argTypes:
    - struct nhlfe_list_head*
    - struct nhlfe_list_head*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1984
      start: 1896
    functionDepth: 1
    functionLinenumber: 1896
    functionLinenumberEnd: 1984
    functionName: compare_notif_nhlfes
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - nexthop_same
    - CHECK_FLAG
    - zlog_debug
    - nexthop2str
    linkageType: ''
    returnType: bool
    signature: "bool compare_notif_nhlfes(const struct nhlfe_list_head *ctx_head,\n\t\t\t\t
      struct nhlfe_list_head *nhlfe_head,\n\t\t\t\t int *start_counter, int *end_counter)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1915,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:1926,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:1933,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1939,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1943,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1948,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1959,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1966,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1967,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:1968,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:1973,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1908
    functionDepth: 1
    functionLinenumber: 1908
    functionLinenumberEnd: 1976
    functionName: frr_each_safe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 26
    functionsReached:
    - nexthop_same
    - CHECK_FLAG
    - zlog_debug
    - nexthop2str
    linkageType: ''
    returnType: void
    signature: void frr_each_safe(nhlfe_list, nhlfe_head, nhlfe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:1926,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1920
    functionDepth: 1
    functionLinenumber: 1920
    functionLinenumberEnd: 1930
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 33
    functionsReached:
    - nexthop_same
    linkageType: ''
    returnType: void
    signature: void frr_each(nhlfe_list_const, ctx_head, ctx_nhlfe)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:2016,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:2023,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2028,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2031,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2034,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2035,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2039,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2042,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2043,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2046,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2048,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2050,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2053,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2055,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2062,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2064,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2065,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2066,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2067,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 2
    argNames:
    - nhlfe_head
    - ctx_head
    argTypes:
    - struct nhlfe_list_head*
    - struct nhlfe_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 1991
    functionDepth: 1
    functionLinenumber: 1991
    functionLinenumberEnd: 2072
    functionName: update_nhlfes_from_ctx
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - nexthop_same
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - nexthop2str
    linkageType: ''
    returnType: int
    signature: "int update_nhlfes_from_ctx(struct nhlfe_list_head *nhlfe_head,\n\t\t\t\t
      \ const struct nhlfe_list_head *ctx_head)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:2016,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:2023,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2028,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2031,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2034,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2035,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2039,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2042,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2043,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2046,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2048,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2050,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2053,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2055,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2062,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2064,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2065,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2066,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2067,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2069
      start: 2001
    functionDepth: 1
    functionLinenumber: 2001
    functionLinenumberEnd: 2069
    functionName: frr_each_safe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 26
    functionsReached:
    - nexthop_same
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - nexthop2str
    linkageType: ''
    returnType: void
    signature: void frr_each_safe(nhlfe_list, nhlfe_head, nhlfe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_mpls.c:2016,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2020
      start: 2010
    functionDepth: 1
    functionLinenumber: 2010
    functionLinenumberEnd: 2020
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 33
    functionsReached:
    - nexthop_same
    linkageType: ''
    returnType: void
    signature: void frr_each(nhlfe_list_const, ctx_head, ctx_nhlfe)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2090,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:2091,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:2094,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:2100,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:2101,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2104,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls.c:2105,1
    - Dst: dplane_ctx_get_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2117,1
    - Dst: compare_notif_nhlfes
      Src: /src/frr/zebra/zebra_mpls.c:2119,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2123,1
    - Dst: dplane_ctx_get_backup_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2127,1
    - Dst: compare_notif_nhlfes
      Src: /src/frr/zebra/zebra_mpls.c:2129,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2135,1
    - Dst: dplane_lsp_notif_update
      Src: /src/frr/zebra/zebra_mpls.c:2145,1
    - Dst: dplane_ctx_get_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2152,1
    - Dst: update_nhlfes_from_ctx
      Src: /src/frr/zebra/zebra_mpls.c:2153,1
    - Dst: dplane_ctx_get_backup_nhlfe_list
      Src: /src/frr/zebra/zebra_mpls.c:2155,1
    - Dst: update_nhlfes_from_ctx
      Src: /src/frr/zebra/zebra_mpls.c:2156,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2159,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:2166,1
    - Dst: dplane_lsp_notif_update
      Src: /src/frr/zebra/zebra_mpls.c:2169,1
    - Dst: zebra_sr_policy_label_update
      Src: /src/frr/zebra/zebra_mpls.c:2173,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2176,1
    - Dst: clear_nhlfe_installed
      Src: /src/frr/zebra/zebra_mpls.c:2177,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2077
    functionDepth: 2
    functionLinenumber: 2077
    functionLinenumberEnd: 2179
    functionName: zebra_mpls_process_dplane_notify
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - dplane_lsp_notif_update
    - update_nhlfes_from_ctx
    - dplane_ctx_get_backup_nhlfe_list
    - compare_notif_nhlfes
    - clear_nhlfe_installed
    - hash_lookup
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - zebra_vrf_lookup_by_id
    - zebra_sr_policy_label_update
    - dplane_ctx_get_in_label
    - dplane_ctx_get_nhlfe_list
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_process_dplane_notify(struct zebra_dplane_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2190,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2190,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2195,1
    - Dst: lsp_install
      Src: /src/frr/zebra/zebra_mpls.c:2205,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - zvrf
    - rn
    - re
    argTypes:
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2184
    functionDepth: 2
    functionLinenumber: 2184
    functionLinenumberEnd: 2209
    functionName: zebra_mpls_lsp_install
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - family2afi
    - fec_find
    - lsp_install
    - PREFIX_FAMILY
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_lsp_install(struct zebra_vrf *zvrf, struct route_node
      *rn,\n\t\t\t   struct route_entry *re)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2220,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2220,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2225,1
    - Dst: lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:2230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - zvrf
    - rn
    - re
    argTypes:
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2214
    functionDepth: 2
    functionLinenumber: 2214
    functionLinenumberEnd: 2231
    functionName: zebra_mpls_lsp_uninstall
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - family2afi
    - fec_find
    - lsp_uninstall
    - PREFIX_FAMILY
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_lsp_uninstall(struct zebra_vrf *zvrf, struct route_node
      *rn,\n\t\t\t     struct route_entry *re)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - lsp
    - lsp_type
    - gtype
    - gate
    - ifindex
    - num_labels
    - out_labels
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - uint8_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 2237
    functionDepth: 3
    functionLinenumber: 2237
    functionLinenumberEnd: 2246
    functionName: zebra_mpls_lsp_add_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_add
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *\nzebra_mpls_lsp_add_nhlfe(struct zebra_lsp *lsp,
      enum lsp_types_t lsp_type,\n\t\t\t enum nexthop_types_t gtype, const union g_addr
      *gate,\n\t\t\t ifindex_t ifindex, uint8_t num_labels,\n\t\t\t const mpls_label_t
      *out_labels)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - lsp
    - lsp_type
    - gtype
    - gate
    - ifindex
    - num_labels
    - out_labels
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - uint8_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2261
      start: 2253
    functionDepth: 3
    functionLinenumber: 2253
    functionLinenumberEnd: 2261
    functionName: zebra_mpls_lsp_add_backup_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_add
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *zebra_mpls_lsp_add_backup_nhlfe(\n\tstruct zebra_lsp
      *lsp, enum lsp_types_t lsp_type,\n\tenum nexthop_types_t gtype, const union
      g_addr *gate, ifindex_t ifindex,\n\tuint8_t num_labels, const mpls_label_t *out_labels)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - lsp
    - lsp_type
    - nh
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2278
      start: 2266
    functionDepth: 3
    functionLinenumber: 2266
    functionLinenumberEnd: 2278
    functionName: zebra_mpls_lsp_add_nh
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_add
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *zebra_mpls_lsp_add_nh(struct zebra_lsp *lsp,\n\t\t\t\t\t
      \ enum lsp_types_t lsp_type,\n\t\t\t\t\t  const struct nexthop *nh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:2290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - lsp
    - lsp_type
    - nh
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2284
    functionDepth: 3
    functionLinenumber: 2284
    functionLinenumberEnd: 2296
    functionName: zebra_mpls_lsp_add_backup_nh
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_add
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *zebra_mpls_lsp_add_backup_nh(struct zebra_lsp
      *lsp,\n\t\t\t\t\t\t enum lsp_types_t lsp_type,\n\t\t\t\t\t\t const struct nexthop
      *nh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_free
      Src: /src/frr/zebra/zebra_mpls.c:2304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhlfe
    argTypes:
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2301
    functionDepth: 2
    functionLinenumber: 2301
    functionLinenumberEnd: 2305
    functionName: zebra_mpls_nhlfe_free
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_free
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_nhlfe_free(struct zebra_nhlfe *nhlfe)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2329,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2329,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2334,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2338,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2343,1
    - Dst: fec_add
      Src: /src/frr/zebra/zebra_mpls.c:2345,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2347,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2350,1
    - Dst: listnode_lookup
      Src: /src/frr/zebra/zebra_mpls.c:2361,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_mpls.c:2373,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2376,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2380,1
    - Dst: fec_derive_label_from_index
      Src: /src/frr/zebra/zebra_mpls.c:2390,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2407,1
    - Dst: fec_send
      Src: /src/frr/zebra/zebra_mpls.c:2408,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2412,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 5
    argNames:
    - zvrf
    - p
    - label
    - label_index
    - client
    argTypes:
    - struct zebra_vrf*
    - struct prefix*
    - uint32_t
    - uint32_t
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2415
      start: 2317
    functionDepth: 3
    functionLinenumber: 2317
    functionLinenumberEnd: 2415
    functionName: zebra_mpls_fec_register
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - fec_derive_label_from_index
    - fec_find
    - PREFIX_FAMILY
    - listnode_lookup
    - listnode_add
    - fec_change_update_lsp
    - flog_err
    - zlog_debug
    - fec_send
    - family2afi
    - fec_add
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_fec_register(struct zebra_vrf *zvrf, struct prefix
      *p,\n\t\t\t    uint32_t label, uint32_t label_index,\n\t\t\t    struct zserv
      *client)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2428,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2428,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2432,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2434,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2436,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_mpls.c:2440,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2443,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_mpls.c:2444,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2450,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2453,1
    - Dst: fec_del
      Src: /src/frr/zebra/zebra_mpls.c:2454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - zvrf
    - p
    - client
    argTypes:
    - struct zebra_vrf*
    - struct prefix*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2458
      start: 2422
    functionDepth: 3
    functionLinenumber: 2422
    functionLinenumberEnd: 2458
    functionName: zebra_mpls_fec_unregister
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - fec_find
    - PREFIX_FAMILY
    - listnode_delete
    - list_isempty
    - fec_change_update_lsp
    - flog_err
    - zlog_debug
    - fec_del
    - family2afi
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_fec_unregister(struct zebra_vrf *zvrf, struct prefix
      *p,\n\t\t\t      struct zserv *client)"
  - BBCount: 138
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:2465,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2476,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2477,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2479,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:2482,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_mpls.c:2485,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:2487,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2488,1
    - Dst: fec_del
      Src: /src/frr/zebra/zebra_mpls.c:2489,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_mpls.c:2512,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:2516,1
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zebra_mpls.c:2521,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:2522,1
    - Dst: mpls_ftn_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:2526,1
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zebra_mpls.c:2527,1
    - Dst: mpls_ftn_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:2528,1
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zebra_mpls.c:2529,1
    - Dst: zebra_mpls_fec_for_label
      Src: /src/frr/zebra/zebra_mpls.c:2542,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:2550,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2553,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2554,1
    - Dst: zebra_mpls_label_already_bound
      Src: /src/frr/zebra/zebra_mpls.c:2569,1
    - Dst: zebra_mpls_fec_for_label
      Src: /src/frr/zebra/zebra_mpls.c:2571,1
    - Dst: zebra_mpls_static_fec_add
      Src: /src/frr/zebra/zebra_mpls.c:2579,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2587,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2587,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2592,1
    - Dst: fec_add
      Src: /src/frr/zebra/zebra_mpls.c:2594,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_mpls.c:2597,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2603,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2613,1
    - Dst: fec_update_clients
      Src: /src/frr/zebra/zebra_mpls.c:2616,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2619,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2637,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2637,1
    - Dst: fec_find
      Src: /src/frr/zebra/zebra_mpls.c:2641,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2649,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_mpls.c:2658,1
    - Dst: fec_del
      Src: /src/frr/zebra/zebra_mpls.c:2659,1
    - Dst: fec_derive_label_from_index
      Src: /src/frr/zebra/zebra_mpls.c:2664,1
    - Dst: fec_update_clients
      Src: /src/frr/zebra/zebra_mpls.c:2669,1
    - Dst: fec_change_update_lsp
      Src: /src/frr/zebra/zebra_mpls.c:2672,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2689,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2690,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:2701,1
    - Dst: label2str
      Src: /src/frr/zebra/zebra_mpls.c:2702,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2721,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2722,1
    - Dst: fec_print
      Src: /src/frr/zebra/zebra_mpls.c:2725,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2739,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2739,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_mpls.c:2743,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_mpls.c:2744,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:2748,1
    - Dst: fec_print
      Src: /src/frr/zebra/zebra_mpls.c:2752,1
    - Dst: zebra_nhg_rib_find_nhe
      Src: /src/frr/zebra/zebra_mpls.c:2760,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_mpls.c:2762,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:2770,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2772,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2788,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:2791,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:2791,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_mpls.c:2796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2798,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:2810,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2813,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:2816,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2819,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2822,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2823,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:2828,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:2830,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:2832,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_mpls.c:2852,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2861,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_mpls.c:2871,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2880,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2892,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:2940,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2944,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2947,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:2950,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:2950,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_mpls.c:2953,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2955,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:2972,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2981,1
    - Dst: lsp_znh_install
      Src: /src/frr/zebra/zebra_mpls.c:2998,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3000,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3006,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3007,1
    - Dst: ftn_update_znh
      Src: /src/frr/zebra/zebra_mpls.c:3019,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3024,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3025,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3035,1
    - Dst: lsp_backup_znh_install
      Src: /src/frr/zebra/zebra_mpls.c:3043,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3045,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3053,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3054,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:3062,1
    - Dst: ftn_update_znh
      Src: /src/frr/zebra/zebra_mpls.c:3068,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3074,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3075,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3088,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3090,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3091,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:3093,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:3095,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:3099,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3118,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3122,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3130,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3133,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_mpls.c:3141,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3150,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3151,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3153,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3157,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls.c:3164,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3167,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:3168,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:3173,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3181,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3183,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3186,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3188,1
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:3193,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3197,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:3225,1
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3227,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3233,1
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3254,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3256,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls.c:3261,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3263,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3266,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3271,1
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3285,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3290,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3296,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3314,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3340,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3345,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3348,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3354,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3355,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3359,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3360,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3365,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3369,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3371,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3374,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:3377,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3396,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3400,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3414,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3421,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:3439,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:3439,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:3443,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:3443,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:3449,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3457,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3458,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3459,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:3465,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3472,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3473,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3481,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:3482,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:3484,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:3488,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3518,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3522,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3534,1
    - Dst: nhlfe_list_next
      Src: /src/frr/zebra/zebra_mpls.c:3535,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3539,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:3586,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3588,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3593,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3594,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3603,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3604,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3612,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:3613,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:3618,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3624,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3625,1
    - Dst: mpls_lsp_install
      Src: /src/frr/zebra/zebra_mpls.c:3632,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3662,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3669,1
    - Dst: mpls_static_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3672,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:3675,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3676,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3680,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3687,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3688,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3693,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3697,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3703,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_mpls.c:3704,1
    - Dst: lsp_free_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3705,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:3706,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:3721,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3740,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3749,1
    - Dst: lsp_json
      Src: /src/frr/zebra/zebra_mpls.c:3754,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_mpls.c:3755,1
    - Dst: lsp_print
      Src: /src/frr/zebra/zebra_mpls.c:3757,1
    - Dst: hash_get_sorted_list
      Src: /src/frr/zebra/zebra_mpls.c:3771,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_mpls.c:3774,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3776,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:3777,1
    - Dst: label2str
      Src: /src/frr/zebra/zebra_mpls.c:3778,1
    - Dst: lsp_json
      Src: /src/frr/zebra/zebra_mpls.c:3780,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_mpls.c:3782,1
    - Dst: ttable_new
      Src: /src/frr/zebra/zebra_mpls.c:3787,1
    - Dst: ttable_add_row
      Src: /src/frr/zebra/zebra_mpls.c:3788,1
    - Dst: ttable_restyle
      Src: /src/frr/zebra/zebra_mpls.c:3791,1
    - Dst: ttable_rowseps
      Src: /src/frr/zebra/zebra_mpls.c:3792,1
    - Dst: for
      Src: /src/frr/zebra/zebra_mpls.c:3794,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3794,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:3795,1
    - Dst: switch
      Src: /src/frr/zebra/zebra_mpls.c:3802,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3807,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_mpls.c:3808,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3810,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3816,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3821,1
    - Dst: case
      Src: /src/frr/zebra/zebra_mpls.c:3824,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3830,1
    - Dst: ttable_add_row
      Src: /src/frr/zebra/zebra_mpls.c:3838,1
    - Dst: nhlfe_type2str
      Src: /src/frr/zebra/zebra_mpls.c:3840,1
    - Dst: ttable_dump
      Src: /src/frr/zebra/zebra_mpls.c:3847,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:3849,1
    - Dst: ttable_del
      Src: /src/frr/zebra/zebra_mpls.c:3851,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_mpls.c:3854,1
    CyclomaticComplexity: 207
    EdgeCount: 207
    ICount: 568
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts:
    - condition: (nh->nh_label)
      pos:
        line_end: 3593
        line_start: 3593
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (rn != NULL)
      pos:
        line_end: 3087
        line_start: 3087
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (nh)
      pos:
        line_end: 3592
        line_start: 3592
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (nh)
      pos:
        line_end: 3129
        line_start: 3129
        source_file: /src/frr/zebra/zebra_mpls.c
    constantsTouched: []
    func_position:
      end: 3855
      start: 2463
    functionDepth: 5
    functionLinenumber: 2463
    functionLinenumberEnd: 3855
    functionName: zebra_mpls_cleanup_fecs_for_client
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - zebra_mpls_fec_for_label
    - ttable_del
    - route_top
    - lsp_type_from_re_type
    - IPV4_ADDR_SAME
    - flog_err
    - hash_lookup
    - ttable_dump
    - lsp_backup_znh_install
    - mpls_lsp_uninstall_all
    - snprintf
    - if
    - for
    - case
    - route_unlock_node
    - memcpy
    - ttable_new
    - json_object_new_object
    - nhlfe2str
    - list_isempty
    - ftn_update_nexthop
    - nexthop_add_labels
    - nhlfe_find
    - zebra_nhg_rib_find_nhe
    - fec_change_update_lsp
    - nexthop_del_labels
    - zebra_nhg_free
    - lsp_processq_add
    - rib_queue_add
    - route_node_lookup
    - NHLFE_FAMILY
    - mpls_lsp_uninstall
    - inet_ntop
    - label2str
    - zebra_ns_lookup
    - fec_derive_label_from_index
    - hash_get_sorted_list
    - route_entry_update_nhe
    - mpls_label2str
    - json_object_object_add
    - fec_add
    - RB_FOREACH
    - vty_json
    - switch
    - zebra_mpls_label_already_bound
    - memcmp
    - mpls_static_lsp_uninstall_all
    - lsp_json
    - mpls_lsp_install
    - ttable_restyle
    - zlog_debug
    - nhlfe_list_next
    - fec_update_clients
    - zebra_nhg_get_backup_nhg
    - assert
    - nhlfe_add
    - lsp_check_free
    - vty_out
    - lsp_free_nhlfe
    - fec_print
    - route_next
    - XFREE
    - hash_release
    - SET_FLAG
    - route_node_get
    - IPV6_ADDR_SAME
    - mpls_zebra_nhe_update
    - zapi_nexthop2str
    - ftn_update_znh
    - nhlfe_type2str
    - list_delete
    - if_lookup_by_index_per_ns
    - zebra_vrf_table
    - frr_each_safe
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - nhlfe_del
    - hash_iterate
    - zebra_vrf_lookup_by_id
    - mpls_ftn_uninstall_all
    - hash_get
    - ttable_add_row
    - lsp_add_nhlfe
    - apply_mask
    - zebra_mpls_static_fec_add
    - fec_del
    - UNSET_FLAG
    - listnode_delete
    - family2afi
    - fec_find
    - lsp_znh_install
    - nhlfe_list_first
    - PREFIX_FAMILY
    - CHECK_FLAG
    - lsp_print
    - ttable_rowseps
    - zebra_nhe_copy
    linkageType: ''
    returnType: int
    signature: int zebra_mpls_cleanup_fecs_for_client(struct zserv *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2689,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2690,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:2701,1
    - Dst: label2str
      Src: /src/frr/zebra/zebra_mpls.c:2702,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - vty
    - zvrf
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2678
    functionDepth: 1
    functionLinenumber: 2678
    functionLinenumberEnd: 2707
    functionName: zebra_mpls_write_fec_config
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - label2str
    - route_top
    - vty_out
    - route_next
    linkageType: ''
    returnType: int
    signature: int zebra_mpls_write_fec_config(struct vty *vty, struct zebra_vrf *zvrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:2721,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:2722,1
    - Dst: fec_print
      Src: /src/frr/zebra/zebra_mpls.c:2725,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - vty
    - zvrf
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2712
    functionDepth: 4
    functionLinenumber: 2712
    functionLinenumberEnd: 2728
    functionName: zebra_mpls_print_fec_table
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - route_top
    - fec_print
    - route_next
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_print_fec_table(struct vty *vty, struct zebra_vrf *zvrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2739,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:2739,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_mpls.c:2743,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_mpls.c:2744,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_mpls.c:2748,1
    - Dst: fec_print
      Src: /src/frr/zebra/zebra_mpls.c:2752,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - zvrf
    - p
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2753
      start: 2733
    functionDepth: 4
    functionLinenumber: 2733
    functionLinenumberEnd: 2753
    functionName: zebra_mpls_print_fec
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - apply_mask
    - PREFIX_FAMILY
    - fec_print
    - family2afi
    linkageType: ''
    returnType: void
    signature: "void zebra_mpls_print_fec(struct vty *vty, struct zebra_vrf *zvrf,\n\t\t\t
      \ struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_rib_find_nhe
      Src: /src/frr/zebra/zebra_mpls.c:2760,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_mpls.c:2762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - re
    - afi
    - new_nhe
    argTypes:
    - struct route_entry*
    - afi_t
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2763
      start: 2755
    functionDepth: 1
    functionLinenumber: 2755
    functionLinenumberEnd: 2763
    functionName: mpls_zebra_nhe_update
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - zebra_nhg_rib_find_nhe
    - route_entry_update_nhe
    linkageType: ''
    returnType: void
    signature: "void mpls_zebra_nhe_update(struct route_entry *re, afi_t afi,\n\t\t\t\t
      \ struct nhg_hash_entry *new_nhe)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:2770,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2772,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 4
    argNames:
    - add_p
    - nexthop
    - type
    - znh
    argTypes:
    - bool
    - struct nexthop*
    - enum lsp_types_t
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2777
      start: 2765
    functionDepth: 1
    functionLinenumber: 2765
    functionLinenumberEnd: 2777
    functionName: ftn_update_nexthop
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - nexthop_add_labels
    - nexthop_del_labels
    linkageType: ''
    returnType: bool
    signature: "bool ftn_update_nexthop(bool add_p, struct nexthop *nexthop,\n\t\t\t
      \      enum lsp_types_t type,\n\t\t\t       const struct zapi_nexthop *znh)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2788,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:2791,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:2791,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_mpls.c:2796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2798,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:2810,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2813,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:2816,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:2819,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2822,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2823,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:2828,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:2830,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:2832,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 5
    argNames:
    - zvrf
    - type
    - prefix
    - route_type
    - route_instance
    argTypes:
    - struct zebra_vrf*
    - enum lsp_types_t
    - struct prefix*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2833
      start: 2779
    functionDepth: 2
    functionLinenumber: 2779
    functionLinenumberEnd: 2833
    functionName: zebra_mpls_ftn_uninstall
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - rib_queue_add
    - zvrf_id
    - CHECK_FLAG
    - zebra_nhg_free
    - zebra_vrf_table
    - SET_FLAG
    - route_node_get
    - zebra_nhe_copy
    - mpls_zebra_nhe_update
    - nexthop_del_labels
    - family2afi
    - zebra_nhg_get_backup_nhg
    linkageType: ''
    returnType: void
    signature: "void zebra_mpls_ftn_uninstall(struct zebra_vrf *zvrf, enum lsp_types_t
      type,\n\t\t\t      struct prefix *prefix, uint8_t route_type,\n\t\t\t      uint8_t
      route_instance)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2798,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2797
    functionDepth: 1
    functionLinenumber: 2797
    functionLinenumberEnd: 2802
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_mpls.c:2852,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2861,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_mpls.c:2871,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2880,1
    - Dst: ftn_update_nexthop
      Src: /src/frr/zebra/zebra_mpls.c:2892,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 46
    argCount: 4
    argNames:
    - add_p
    - type
    - head
    - znh
    argTypes:
    - bool
    - enum lsp_types_t
    - struct nexthop*
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2906
      start: 2839
    functionDepth: 2
    functionLinenumber: 2839
    functionLinenumberEnd: 2906
    functionName: ftn_update_znh
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - ftn_update_nexthop
    - IPV4_ADDR_SAME
    - IPV6_ADDR_SAME
    linkageType: ''
    returnType: bool
    signature: "bool ftn_update_znh(bool add_p, enum lsp_types_t type,\n\t\t\t   struct
      nexthop *head, const struct zapi_nexthop *znh)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:2940,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2944,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.c:2947,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:2950,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:2950,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_mpls.c:2953,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2955,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:2972,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:2981,1
    - Dst: lsp_znh_install
      Src: /src/frr/zebra/zebra_mpls.c:2998,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3000,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3006,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3007,1
    - Dst: ftn_update_znh
      Src: /src/frr/zebra/zebra_mpls.c:3019,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3024,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3025,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3035,1
    - Dst: lsp_backup_znh_install
      Src: /src/frr/zebra/zebra_mpls.c:3043,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3045,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3053,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3054,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:3062,1
    - Dst: ftn_update_znh
      Src: /src/frr/zebra/zebra_mpls.c:3068,1
    - Dst: zapi_nexthop2str
      Src: /src/frr/zebra/zebra_mpls.c:3074,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3075,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3088,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3090,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3091,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:3093,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:3095,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:3099,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 88
    argCount: 3
    argNames:
    - add_p
    - zvrf
    - zl
    argTypes:
    - bool
    - struct zebra_vrf*
    - struct zapi_labels*
    assertStmts:
    - condition: (rn != NULL)
      pos:
        line_end: 3087
        line_start: 3087
        source_file: /src/frr/zebra/zebra_mpls.c
    constantsTouched: []
    func_position:
      end: 3100
      start: 2914
    functionDepth: 3
    functionLinenumber: 2914
    functionLinenumberEnd: 3100
    functionName: zebra_mpls_zapi_labels_process
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_table
    - lsp_backup_znh_install
    - zebra_nhg_free
    - rib_queue_add
    - zvrf_id
    - mpls_lsp_uninstall
    - zlog_debug
    - zebra_nhg_get_backup_nhg
    - hash_get
    - assert
    - family2afi
    - lsp_znh_install
    - CHECK_FLAG
    - SET_FLAG
    - route_node_get
    - zebra_nhe_copy
    - mpls_zebra_nhe_update
    - ftn_update_znh
    - zapi_nexthop2str
    linkageType: ''
    returnType: void
    signature: "void zebra_mpls_zapi_labels_process(bool add_p, struct zebra_vrf *zvrf,\n\t\t\t\t
      \   const struct zapi_labels *zl)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:2955,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2960
      start: 2954
    functionDepth: 1
    functionLinenumber: 2954
    functionLinenumberEnd: 2960
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE(rn, re)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3118,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3122,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3130,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3133,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_mpls.c:3141,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3150,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3151,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3153,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3157,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls.c:3164,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3167,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:3168,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:3173,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3181,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3183,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3186,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3188,1
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/zebra_mpls.c:3193,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3197,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 9
    argNames:
    - lsp
    - type
    - num_out_labels
    - out_labels
    - gtype
    - gate
    - ifindex
    - vrf_id
    - is_backup
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - uint8_t
    - mpls_label_t*
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - vrf_id_t
    - bool
    assertStmts:
    - condition: (nh)
      pos:
        line_end: 3129
        line_start: 3129
        source_file: /src/frr/zebra/zebra_mpls.c
    constantsTouched: []
    func_position:
      end: 3200
      start: 3107
    functionDepth: 3
    functionLinenumber: 3107
    functionLinenumberEnd: 3200
    functionName: lsp_add_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - nhlfe_add
    - nhlfe_find
    - snprintf
    - nhlfe2str
    - NHLFE_FAMILY
    - mpls_label2str
    - memcmp
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - nexthop_del_labels
    - nexthop_add_labels
    - memcpy
    - assert
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *\nlsp_add_nhlfe(struct zebra_lsp *lsp, enum lsp_types_t
      type,\n\t      uint8_t num_out_labels, const mpls_label_t *out_labels,\n\t      enum
      nexthop_types_t gtype, const union g_addr *gate,\n\t      ifindex_t ifindex,
      vrf_id_t vrf_id, bool is_backup)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:3225,1
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3227,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3233,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 8
    argNames:
    - zvrf
    - type
    - in_label
    - num_out_labels
    - out_labels
    - gtype
    - gate
    - ifindex
    argTypes:
    - struct zebra_vrf*
    - enum lsp_types_t
    - mpls_label_t
    - uint8_t
    - mpls_label_t*
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3237
      start: 3208
    functionDepth: 4
    functionLinenumber: 3208
    functionLinenumberEnd: 3237
    functionName: mpls_lsp_install
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - lsp_add_nhlfe
    - hash_get
    - lsp_processq_add
    linkageType: ''
    returnType: int
    signature: "int mpls_lsp_install(struct zebra_vrf *zvrf, enum lsp_types_t type,\n\t\t
      \    mpls_label_t in_label, uint8_t num_out_labels,\n\t\t     const mpls_label_t
      *out_labels, enum nexthop_types_t gtype,\n\t\t     const union g_addr *gate,
      ifindex_t ifindex)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3254,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3256,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mpls.c:3261,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3263,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3266,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - lsp
    - type
    - znh
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3275
      start: 3242
    functionDepth: 4
    functionLinenumber: 3242
    functionLinenumberEnd: 3275
    functionName: lsp_znh_install
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 3
    functionsReached:
    - lsp_add_nhlfe
    - CHECK_FLAG
    - nhlfe_del
    - SET_FLAG
    - UNSET_FLAG
    - lsp_processq_add
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int lsp_znh_install(struct zebra_lsp *lsp, enum lsp_types_t type,\n\t\t\t
      \  const struct zapi_nexthop *znh)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3285,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3290,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3296,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - lsp
    - type
    - znh
    argTypes:
    - struct zebra_lsp*
    - enum lsp_types_t
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3300
      start: 3280
    functionDepth: 4
    functionLinenumber: 3280
    functionLinenumberEnd: 3300
    functionName: lsp_backup_znh_install
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 3
    functionsReached:
    - lsp_add_nhlfe
    - zlog_debug
    - lsp_processq_add
    linkageType: ''
    returnType: int
    signature: "int lsp_backup_znh_install(struct zebra_lsp *lsp, enum lsp_types_t
      type,\n\t\t\t\t  const struct zapi_nexthop *znh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - zvrf
    - in_label
    argTypes:
    - struct zebra_vrf*
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3315
      start: 3302
    functionDepth: 1
    functionLinenumber: 3302
    functionLinenumberEnd: 3315
    functionName: mpls_lsp_find
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct zebra_lsp
    signature: struct zebra_lsp *mpls_lsp_find(struct zebra_vrf *zvrf, mpls_label_t
      in_label)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3340,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3345,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3348,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3354,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3355,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3359,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3360,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3365,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3369,1
    - Dst: lsp_processq_add
      Src: /src/frr/zebra/zebra_mpls.c:3371,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3374,1
    - Dst: lsp_check_free
      Src: /src/frr/zebra/zebra_mpls.c:3377,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 7
    argNames:
    - zvrf
    - type
    - in_label
    - gtype
    - gate
    - ifindex
    - backup_p
    argTypes:
    - struct zebra_vrf*
    - enum lsp_types_t
    - mpls_label_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3380
      start: 3321
    functionDepth: 3
    functionLinenumber: 3321
    functionLinenumberEnd: 3380
    functionName: mpls_lsp_uninstall
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 3
    functionsReached:
    - nhlfe_find
    - lsp_check_free
    - nhlfe2str
    - CHECK_FLAG
    - nhlfe_del
    - hash_lookup
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - lsp_processq_add
    linkageType: ''
    returnType: int
    signature: "int mpls_lsp_uninstall(struct zebra_vrf *zvrf, enum lsp_types_t type,\n\t\t
      \      mpls_label_t in_label, enum nexthop_types_t gtype,\n\t\t       const
      union g_addr *gate, ifindex_t ifindex,\n\t\t       bool backup_p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3396,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - zvrf
    - type
    - in_label
    argTypes:
    - struct zebra_vrf*
    - enum lsp_types_t
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3401
      start: 3382
    functionDepth: 4
    functionLinenumber: 3382
    functionLinenumberEnd: 3401
    functionName: mpls_lsp_uninstall_all_vrf
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - mpls_lsp_uninstall_all
    linkageType: ''
    returnType: int
    signature: "int mpls_lsp_uninstall_all_vrf(struct zebra_vrf *zvrf, enum lsp_types_t
      type,\n\t\t\t       mpls_label_t in_label)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3414,1
    - Dst: mpls_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3422
      start: 3407
    functionDepth: 4
    functionLinenumber: 3407
    functionLinenumberEnd: 3422
    functionName: mpls_lsp_uninstall_all_type
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_list_first
    - mpls_lsp_uninstall_all
    linkageType: ''
    returnType: void
    signature: void mpls_lsp_uninstall_all_type(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_mpls.c:3439,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:3439,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_mpls.c:3443,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_mpls.c:3443,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:3449,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3457,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3458,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3459,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:3465,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3472,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3473,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3481,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:3482,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:3484,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_mpls.c:3488,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - zvrf
    - afi
    - lsp_type
    argTypes:
    - struct zebra_vrf*
    - int
    - enum lsp_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3490
      start: 3428
    functionDepth: 2
    functionLinenumber: 3428
    functionLinenumberEnd: 3490
    functionName: mpls_ftn_uninstall_all
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 2
    functionsReached:
    - rib_queue_add
    - zvrf_id
    - CHECK_FLAG
    - route_top
    - zebra_nhg_free
    - route_next
    - zebra_vrf_table
    - SET_FLAG
    - zebra_nhe_copy
    - nexthop_del_labels
    - mpls_zebra_nhe_update
    - zebra_nhg_get_backup_nhg
    linkageType: ''
    returnType: void
    signature: "void mpls_ftn_uninstall_all(struct zebra_vrf *zvrf,\n\t\t\t\t   int
      afi, enum lsp_types_t lsp_type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_mpls.c:3449,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3457,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3458,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3459,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_mpls.c:3465,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3472,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3473,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.c:3481,1
    - Dst: mpls_zebra_nhe_update
      Src: /src/frr/zebra/zebra_mpls.c:3482,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_mpls.c:3484,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3485
      start: 3446
    functionDepth: 2
    functionLinenumber: 3446
    functionLinenumberEnd: 3485
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - zebra_nhg_free
    - SET_FLAG
    - zebra_nhe_copy
    - nexthop_del_labels
    - mpls_zebra_nhe_update
    - zebra_nhg_get_backup_nhg
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3518,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3522,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3534,1
    - Dst: nhlfe_list_next
      Src: /src/frr/zebra/zebra_mpls.c:3535,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3539,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 6
    argNames:
    - zvrf
    - in_label
    - out_label
    - gtype
    - gate
    - ifindex
    argTypes:
    - struct zebra_vrf*
    - mpls_label_t
    - mpls_label_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3558
      start: 3499
    functionDepth: 2
    functionLinenumber: 3499
    functionLinenumberEnd: 3558
    functionName: zebra_mpls_lsp_label_consistent
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - nhlfe_find
    - nhlfe_list_first
    - nhlfe_list_next
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_lsp_label_consistent(struct zebra_vrf *zvrf,\n\t\t\t\t
      \   mpls_label_t in_label,\n\t\t\t\t    mpls_label_t out_label,\n\t\t\t\t    enum
      nexthop_types_t gtype,\n\t\t\t\t    union g_addr *gate, ifindex_t ifindex)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_mpls.c:3586,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3588,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3593,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mpls.c:3594,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3603,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3604,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_mpls.c:3612,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_mpls.c:3613,1
    - Dst: nhlfe_add
      Src: /src/frr/zebra/zebra_mpls.c:3618,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3624,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3625,1
    - Dst: mpls_lsp_install
      Src: /src/frr/zebra/zebra_mpls.c:3632,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 6
    argNames:
    - zvrf
    - in_label
    - out_label
    - gtype
    - gate
    - ifindex
    argTypes:
    - struct zebra_vrf*
    - mpls_label_t
    - mpls_label_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    assertStmts:
    - condition: (nh->nh_label)
      pos:
        line_end: 3593
        line_start: 3593
        source_file: /src/frr/zebra/zebra_mpls.c
    - condition: (nh)
      pos:
        line_end: 3592
        line_start: 3592
        source_file: /src/frr/zebra/zebra_mpls.c
    constantsTouched: []
    func_position:
      end: 3637
      start: 3568
    functionDepth: 5
    functionLinenumber: 3568
    functionLinenumberEnd: 3637
    functionName: zebra_mpls_static_lsp_add
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_add
    - nhlfe_find
    - nhlfe2str
    - zlog_debug
    - nexthop_del_labels
    - nexthop_add_labels
    - hash_get
    - assert
    - mpls_lsp_install
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_static_lsp_add(struct zebra_vrf *zvrf, mpls_label_t
      in_label,\n\t\t\t      mpls_label_t out_label,\n\t\t\t      enum nexthop_types_t
      gtype, union g_addr *gate,\n\t\t\t      ifindex_t ifindex)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3662,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3669,1
    - Dst: mpls_static_lsp_uninstall_all
      Src: /src/frr/zebra/zebra_mpls.c:3672,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:3675,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3676,1
    - Dst: nhlfe_find
      Src: /src/frr/zebra/zebra_mpls.c:3680,1
    - Dst: nhlfe2str
      Src: /src/frr/zebra/zebra_mpls.c:3687,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls.c:3688,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:3693,1
    - Dst: nhlfe_del
      Src: /src/frr/zebra/zebra_mpls.c:3697,1
    - Dst: nhlfe_list_first
      Src: /src/frr/zebra/zebra_mpls.c:3703,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_mpls.c:3704,1
    - Dst: lsp_free_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:3705,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:3706,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 5
    argNames:
    - zvrf
    - in_label
    - gtype
    - gate
    - ifindex
    argTypes:
    - struct zebra_vrf*
    - mpls_label_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3710
      start: 3646
    functionDepth: 5
    functionLinenumber: 3646
    functionLinenumberEnd: 3710
    functionName: zebra_mpls_static_lsp_del
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - nhlfe_find
    - nhlfe_list_first
    - nhlfe2str
    - lsp_free_nhlfe
    - nhlfe_del
    - mpls_static_lsp_uninstall_all
    - mpls_lsp_uninstall
    - hash_lookup
    - zlog_debug
    - frr_each_safe
    - XFREE
    - hash_release
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_static_lsp_del(struct zebra_vrf *zvrf, mpls_label_t
      in_label,\n\t\t\t      enum nexthop_types_t gtype, union g_addr *gate,\n\t\t\t
      \     ifindex_t ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:3721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3722
      start: 3717
    functionDepth: 1
    functionLinenumber: 3717
    functionLinenumberEnd: 3722
    functionName: zebra_mpls_lsp_schedule
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_lsp_schedule(struct zebra_vrf *zvrf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3740,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3749,1
    - Dst: lsp_json
      Src: /src/frr/zebra/zebra_mpls.c:3754,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_mpls.c:3755,1
    - Dst: lsp_print
      Src: /src/frr/zebra/zebra_mpls.c:3757,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - vty
    - zvrf
    - label
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - mpls_label_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3758
      start: 3728
    functionDepth: 3
    functionLinenumber: 3728
    functionLinenumberEnd: 3758
    functionName: zebra_mpls_print_lsp
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - vty_out
    - lsp_print
    - hash_lookup
    - lsp_json
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_mpls_print_lsp(struct vty *vty, struct zebra_vrf *zvrf,\n\t\t\t
      \ mpls_label_t label, bool use_json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get_sorted_list
      Src: /src/frr/zebra/zebra_mpls.c:3771,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_mpls.c:3774,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3776,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_mpls.c:3777,1
    - Dst: label2str
      Src: /src/frr/zebra/zebra_mpls.c:3778,1
    - Dst: lsp_json
      Src: /src/frr/zebra/zebra_mpls.c:3780,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_mpls.c:3782,1
    - Dst: ttable_new
      Src: /src/frr/zebra/zebra_mpls.c:3787,1
    - Dst: ttable_add_row
      Src: /src/frr/zebra/zebra_mpls.c:3788,1
    - Dst: ttable_restyle
      Src: /src/frr/zebra/zebra_mpls.c:3791,1
    - Dst: ttable_rowseps
      Src: /src/frr/zebra/zebra_mpls.c:3792,1
    - Dst: for
      Src: /src/frr/zebra/zebra_mpls.c:3794,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3794,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_mpls.c:3795,1
    - Dst: switch
      Src: /src/frr/zebra/zebra_mpls.c:3802,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_mpls.c:3807,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_mpls.c:3808,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3810,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3816,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3821,1
    - Dst: case
      Src: /src/frr/zebra/zebra_mpls.c:3824,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_mpls.c:3830,1
    - Dst: ttable_add_row
      Src: /src/frr/zebra/zebra_mpls.c:3838,1
    - Dst: nhlfe_type2str
      Src: /src/frr/zebra/zebra_mpls.c:3840,1
    - Dst: ttable_dump
      Src: /src/frr/zebra/zebra_mpls.c:3847,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:3849,1
    - Dst: ttable_del
      Src: /src/frr/zebra/zebra_mpls.c:3851,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - vty
    - zvrf
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3852
      start: 3763
    functionDepth: 3
    functionLinenumber: 3763
    functionLinenumberEnd: 3852
    functionName: zebra_mpls_print_lsp_table
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - switch
    - ttable_del
    - if_lookup_by_index_per_ns
    - ttable_dump
    - lsp_json
    - frr_each_safe
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - ttable_restyle
    - inet_ntop
    - for
    - ttable_add_row
    - zebra_ns_lookup
    - case
    - label2str
    - hash_get_sorted_list
    - XFREE
    - ttable_new
    - json_object_new_object
    - mpls_label2str
    - ttable_rowseps
    - json_object_object_add
    - vty_json
    - nhlfe_type2str
    linkageType: ''
    returnType: void
    signature: "void zebra_mpls_print_lsp_table(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\tbool use_json)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3871,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_mpls.c:3873,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:3873,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_mpls.c:3878,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_mpls.c:3880,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:3881,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_mpls.c:3886,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_mpls.c:3887,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - nhlfe
    - buf
    - size
    argTypes:
    - struct zebra_nhlfe*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3895
      start: 3860
    functionDepth: 1
    functionLinenumber: 3860
    functionLinenumberEnd: 3895
    functionName: nhlfe_config_str
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 1
    functionsReached:
    - strlcat
    - inet_ntop
    - ifindex2ifname
    linkageType: ''
    returnType: char
    signature: "char *nhlfe_config_str(const struct zebra_nhlfe *nhlfe, char *buf,\n\t\t\t
      \     int size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get_sorted_list
      Src: /src/frr/zebra/zebra_mpls.c:3907,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mpls.c:3909,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_mpls.c:3910,1
    - Dst: if
      Src: /src/frr/zebra/zebra_mpls.c:3915,1
    - Dst: nhlfe_config_str
      Src: /src/frr/zebra/zebra_mpls.c:3918,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mpls.c:3923,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mpls.c:3926,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:3929,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3934,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_mpls.c:3939,1
    - Dst: zebra_mpls_label_block_add
      Src: /src/frr/zebra/zebra_mpls.c:3946,1
    - Dst: fec_evaluate
      Src: /src/frr/zebra/zebra_mpls.c:3953,1
    - Dst: zebra_mpls_label_block_del
      Src: /src/frr/zebra/zebra_mpls.c:3960,1
    - Dst: fec_evaluate
      Src: /src/frr/zebra/zebra_mpls.c:3966,1
    - Dst: zebra_mpls_write_label_block_config
      Src: /src/frr/zebra/zebra_mpls.c:3973,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls.c:3980,1
    - Dst: zebra_mpls_cleanup_tables
      Src: /src/frr/zebra/zebra_mpls.c:3991,1
    - Dst: afi_t
      Src: /src/frr/zebra/zebra_mpls.c:3994,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mpls.c:3996,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:3997,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:4003,1
    - Dst: lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:4011,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - zvrf
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4013
      start: 3900
    functionDepth: 2
    functionLinenumber: 3900
    functionLinenumberEnd: 4013
    functionName: zebra_mpls_write_lsp_config
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - list_delete
    - frr_each
    - zebra_mpls_label_block_del
    - snprintf
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - zebra_mpls_cleanup_tables
    - zebra_vrf_lookup_by_id
    - hash_iterate
    - if
    - fec_evaluate
    - vty_out
    - strlcpy
    - zebra_mpls_write_label_block_config
    - hash_get_sorted_list
    - zebra_mpls_label_block_add
    - lsp_uninstall
    - nhlfe_config_str
    - afi_t
    linkageType: ''
    returnType: int
    signature: int zebra_mpls_write_lsp_config(struct vty *vty, struct zebra_vrf *zvrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls.c:4024,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_mpls.c:4029,1
    - Dst: lsp_uninstall
      Src: /src/frr/zebra/zebra_mpls.c:4039,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - proto
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4048
      start: 4021
    functionDepth: 2
    functionLinenumber: 4021
    functionLinenumberEnd: 4048
    functionName: zebra_mpls_client_cleanup_vrf_label
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_lookup_by_id
    - RB_FOREACH
    - lsp_uninstall
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_client_cleanup_vrf_label(uint8_t proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_free_nhlfe
      Src: /src/frr/zebra/zebra_mpls.c:4054,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mpls.c:4056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4057
      start: 4050
    functionDepth: 2
    functionLinenumber: 4050
    functionLinenumberEnd: 4057
    functionName: lsp_table_free
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - XFREE
    - lsp_free_nhlfe
    linkageType: ''
    returnType: void
    signature: void lsp_table_free(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_mpls.c:4066,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_mpls.c:4067,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_mpls.c:4068,1
    - Dst: route_table_finish
      Src: /src/frr/zebra/zebra_mpls.c:4069,1
    - Dst: route_table_finish
      Src: /src/frr/zebra/zebra_mpls.c:4070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4071
      start: 4064
    functionDepth: 1
    functionLinenumber: 4064
    functionLinenumberEnd: 4071
    functionName: zebra_mpls_close_tables
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - hash_clean_and_free
    - route_table_finish
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_close_tables(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:4084,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_mpls.c:4086,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_mpls.c:4088,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_mpls.c:4090,1
    - Dst: route_table_init
      Src: /src/frr/zebra/zebra_mpls.c:4091,1
    - Dst: route_table_init
      Src: /src/frr/zebra/zebra_mpls.c:4092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4096
      start: 4077
    functionDepth: 1
    functionLinenumber: 4077
    functionLinenumberEnd: 4096
    functionName: zebra_mpls_init_tables
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    - route_table_init
    - snprintf
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_init_tables(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mpls_processq_init
      Src: /src/frr/zebra/zebra_mpls.c:4101,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_mpls.c:4105,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_mpls.c:4106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4107
      start: 4098
    functionDepth: 2
    functionLinenumber: 4098
    functionLinenumberEnd: 4107
    functionName: zebra_mpls_turned_on
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - hook_register
    - mpls_processq_init
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_turned_on(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mpls_kernel_init
      Src: /src/frr/zebra/zebra_mpls.c:4117,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_mpls.c:4118,1
    - Dst: zebra_mpls_turned_on
      Src: /src/frr/zebra/zebra_mpls.c:4123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4124
      start: 4112
    functionDepth: 3
    functionLinenumber: 4112
    functionLinenumberEnd: 4124
    functionName: zebra_mpls_init
    functionSourceFile: /src/frr/zebra/zebra_mpls.c
    functionUses: 0
    functionsReached:
    - mpls_kernel_init
    - flog_warn
    - zebra_mpls_turned_on
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: route_match_tag
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_tag(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/frr/zebra/zebra_routemap.c:81,1
    - Dst: ifname2ifindex
      Src: /src/frr/zebra/zebra_routemap.c:86,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 93
    functionName: route_match_interface
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - ifname2ifindex
    - strcasecmp
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_interface(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: route_match_interface_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_interface_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: route_match_interface_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_interface_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:112,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:113,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:116,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:117,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:117,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:118,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:120,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:120,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:123,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:124,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:125,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - zvrf
    - af_type
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: show_vrf_proto_rm
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - PROTO_RM_NAME
    - vty_out
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void show_vrf_proto_rm(struct vty *vty, struct zebra_vrf *zvrf,\n\t\t\t
      \     int af_type)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:136,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:137,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:142,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_routemap.c:143,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:144,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:145,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_routemap.c:147,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:148,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:150,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:151,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:152,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:153,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:155,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:156,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:161,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_routemap.c:162,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:163,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_routemap.c:165,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:167,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:168,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:169,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:171,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 4
    argNames:
    - vty
    - zvrf
    - af_type
    - json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - int
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 173
    functionName: show_vrf_nht_rm
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - NHT_RM_NAME
    - zebra_route_string
    - json_object_string_add
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void show_vrf_nht_rm(struct vty *vty, struct zebra_vrf *zvrf,\n\t\t\t
      \   int af_type, json_object *json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_routemap.c:183,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:187,1
    - Dst: show_vrf_proto_rm
      Src: /src/frr/zebra/zebra_routemap.c:188,1
    - Dst: VRF_GET_ID
      Src: /src/frr/zebra/zebra_routemap.c:194,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_routemap.c:196,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:200,1
    - Dst: show_vrf_proto_rm
      Src: /src/frr/zebra/zebra_routemap.c:201,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - vty
    - af_type
    - vrf_all
    - vrf_name
    argTypes:
    - struct vty*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 205
    functionName: show_proto_rm
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - vty_out
    - VRF_GET_ID
    - zebra_vrf_lookup_by_id
    - RB_FOREACH
    - show_vrf_proto_rm
    linkageType: ''
    returnType: int
    signature: "int show_proto_rm(struct vty *vty, int af_type, const char *vrf_all,\n\t\t\t
      const char *vrf_name)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_routemap.c:215,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_routemap.c:216,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_routemap.c:217,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_routemap.c:225,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_routemap.c:227,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_routemap.c:235,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_routemap.c:236,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_routemap.c:238,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_routemap.c:239,1
    - Dst: show_vrf_nht_rm
      Src: /src/frr/zebra/zebra_routemap.c:241,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:243,1
    - Dst: show_vrf_nht_rm
      Src: /src/frr/zebra/zebra_routemap.c:244,1
    - Dst: VRF_GET_ID
      Src: /src/frr/zebra/zebra_routemap.c:253,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_routemap.c:255,1
    - Dst: json_object_free
      Src: /src/frr/zebra/zebra_routemap.c:257,1
    - Dst: json_object_free
      Src: /src/frr/zebra/zebra_routemap.c:258,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_routemap.c:263,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_routemap.c:264,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_routemap.c:265,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_routemap.c:267,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_routemap.c:268,1
    - Dst: show_vrf_nht_rm
      Src: /src/frr/zebra/zebra_routemap.c:270,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:272,1
    - Dst: show_vrf_nht_rm
      Src: /src/frr/zebra/zebra_routemap.c:273,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_routemap.c:278,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 5
    argNames:
    - vty
    - af_type
    - vrf_all
    - vrf_name
    - use_json
    argTypes:
    - struct vty*
    - int
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 281
    functionName: show_nht_rm
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - show_vrf_nht_rm
    - VRF_GET_ID
    - json_object_free
    - json_object_string_add
    - json_object_object_add
    - zebra_vrf_lookup_by_id
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int show_nht_rm(struct vty *vty, int af_type, const char *vrf_all,\n\t\t
      \      const char *vrf_name, bool use_json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:296,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:297,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:297,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:300,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:300,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/zebra/zebra_routemap.c:302,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:302,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:303,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:303,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:304,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/zebra/zebra_routemap.c:305,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:305,1
    - Dst: route_map_counter_increment
      Src: /src/frr/zebra/zebra_routemap.c:306,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:306,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:308,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:311,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_routemap.c:315,1
    - Dst: rib_update_table
      Src: /src/frr/zebra/zebra_routemap.c:317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 5
    argNames:
    - zvrf
    - rmap
    - rtype
    - afi
    - safi
    argTypes:
    - struct zebra_vrf*
    - char*
    - int
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 322
    functionName: ip_protocol_rm_add
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - PROTO_RM_NAME
    - route_map_counter_decrement
    - PROTO_RM_MAP
    - strcmp
    - rib_update_table
    - route_map_lookup_by_name
    - zebra_vrf_table
    - route_map_counter_increment
    - zlog_debug
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int ip_protocol_rm_add(struct zebra_vrf *zvrf, const char *rmap,\n\t\t\t
      \     int rtype, afi_t afi, safi_t safi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:329,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:332,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:332,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/zebra/zebra_routemap.c:334,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:334,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:335,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:337,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:340,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_routemap.c:343,1
    - Dst: rib_update_table
      Src: /src/frr/zebra/zebra_routemap.c:345,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:348,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:348,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - zvrf
    - rmap
    - rtype
    - afi
    - safi
    argTypes:
    - struct zebra_vrf*
    - char*
    - int
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 351
    functionName: ip_protocol_rm_del
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - PROTO_RM_NAME
    - route_map_counter_decrement
    - PROTO_RM_MAP
    - strcmp
    - rib_update_table
    - zebra_vrf_table
    - zlog_debug
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int ip_protocol_rm_del(struct zebra_vrf *zvrf, const char *rmap,\n\t\t\t
      \     int rtype, afi_t afi, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:357,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:358,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:358,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:361,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:361,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/zebra/zebra_routemap.c:363,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:363,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:364,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:364,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:365,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/zebra/zebra_routemap.c:366,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:366,1
    - Dst: route_map_counter_increment
      Src: /src/frr/zebra/zebra_routemap.c:367,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:367,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:369,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zebra_routemap.c:370,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - zvrf
    - rmap
    - rtype
    - afi
    argTypes:
    - struct zebra_vrf*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 373
    functionName: ip_nht_rm_add
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_counter_decrement
    - zebra_evaluate_rnh
    - strcmp
    - NHT_RM_NAME
    - route_map_lookup_by_name
    - route_map_counter_increment
    - NHT_RM_MAP
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int ip_nht_rm_add(struct zebra_vrf *zvrf, const char *rmap, int rtype,\n\t\t\t
      int afi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:379,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:382,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:382,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/zebra/zebra_routemap.c:383,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:383,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:384,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:386,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:389,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zebra_routemap.c:391,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:393,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:393,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - zvrf
    - rmap
    - rtype
    - afi
    argTypes:
    - struct zebra_vrf*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 396
    functionName: ip_nht_rm_del
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_counter_decrement
    - zebra_evaluate_rnh
    - strcmp
    - NHT_RM_NAME
    - zlog_debug
    - NHT_RM_MAP
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int ip_nht_rm_del(struct zebra_vrf *zvrf, const char *rmap, int rtype,\n\t\t\t
      int afi)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/zebra/zebra_routemap.c:1042,1
    - Dst: unlikely
      Src: /src/frr/zebra/zebra_routemap.c:1044,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_routemap.c:1044,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1045,1
    - Dst: access_list_apply
      Src: /src/frr/zebra/zebra_routemap.c:1051,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1016
    functionDepth: 1
    functionLinenumber: 1016
    functionLinenumberEnd: 1053
    functionName: route_match_ip_next_hop
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_next_hop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:1059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1060
    functionName: route_match_ip_next_hop_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1063
    functionDepth: 0
    functionLinenumber: 1063
    functionLinenumberEnd: 1066
    functionName: route_match_ip_next_hop_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_free(void *rule)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/zebra/zebra_routemap.c:1105,1
    - Dst: unlikely
      Src: /src/frr/zebra/zebra_routemap.c:1107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_routemap.c:1107,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1108,1
    - Dst: prefix_list_apply
      Src: /src/frr/zebra/zebra_routemap.c:1114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1116
    functionName: route_match_ip_next_hop_prefix_list
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t    void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:1120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1121
    functionName: route_match_ip_next_hop_prefix_list_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1126
    functionName: route_match_ip_next_hop_prefix_list_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_prefix_list_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/zebra/zebra_routemap.c:1146,1
    - Dst: unlikely
      Src: /src/frr/zebra/zebra_routemap.c:1148,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_routemap.c:1148,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1149,1
    - Dst: access_list_apply
      Src: /src/frr/zebra/zebra_routemap.c:1155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - afi
    - rule
    - prefix
    - object
    argTypes:
    - afi_t
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1140
    functionDepth: 1
    functionLinenumber: 1140
    functionLinenumberEnd: 1157
    functionName: route_match_address
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_address(afi_t afi, void *rule,
      const struct prefix *prefix,\n\t\t    void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_match_address
      Src: /src/frr/zebra/zebra_routemap.c:1162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1159
    functionDepth: 2
    functionLinenumber: 1159
    functionLinenumberEnd: 1163
    functionName: route_match_ip_address
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_match_address
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_match_address
      Src: /src/frr/zebra/zebra_routemap.c:1168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1165
    functionDepth: 2
    functionLinenumber: 1165
    functionLinenumberEnd: 1169
    functionName: route_match_ipv6_address
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_match_address
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ipv6_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:1175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1176
    functionName: route_match_address_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1182
    functionName: route_match_address_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_address_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/zebra/zebra_routemap.c:1208,1
    - Dst: unlikely
      Src: /src/frr/zebra/zebra_routemap.c:1210,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_routemap.c:1210,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1211,1
    - Dst: prefix_list_apply
      Src: /src/frr/zebra/zebra_routemap.c:1217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - rule
    - prefix
    - object
    - afi
    argTypes:
    - void*
    - struct prefix*
    - void*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1202
    functionDepth: 1
    functionLinenumber: 1202
    functionLinenumberEnd: 1219
    functionName: route_match_address_prefix_list
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_address_prefix_list(void *rule,
      const struct prefix *prefix,\n\t\t\t\tvoid *object, afi_t afi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_match_address_prefix_list
      Src: /src/frr/zebra/zebra_routemap.c:1225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1221
    functionDepth: 0
    functionLinenumber: 1221
    functionLinenumberEnd: 1226
    functionName: route_match_ip_address_prefix_list
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_match_address_prefix_list
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:1230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1231
    functionName: route_match_address_prefix_list_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1233
    functionDepth: 0
    functionLinenumber: 1233
    functionLinenumberEnd: 1236
    functionName: route_match_address_prefix_list_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_address_prefix_list_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_match_address_prefix_list
      Src: /src/frr/zebra/zebra_routemap.c:1250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1246
    functionDepth: 0
    functionLinenumber: 1246
    functionLinenumberEnd: 1251
    functionName: route_match_ipv6_address_prefix_list
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_match_address_prefix_list
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ipv6_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t     void *object)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1263
    functionDepth: 0
    functionLinenumber: 1263
    functionLinenumberEnd: 1279
    functionName: route_match_ipv6_next_hop_type
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ipv6_next_hop_type(void *rule,
      const struct prefix *prefix,\n\t\t\t       void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:1283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1281
    functionDepth: 1
    functionLinenumber: 1281
    functionLinenumberEnd: 1284
    functionName: route_match_ipv6_next_hop_type_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_next_hop_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1286
    functionDepth: 0
    functionLinenumber: 1286
    functionLinenumberEnd: 1289
    functionName: route_match_ipv6_next_hop_type_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_next_hop_type_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1301
    functionDepth: 0
    functionLinenumber: 1301
    functionLinenumberEnd: 1308
    functionName: route_match_address_prefix_len
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_address_prefix_len(void *rule,
      const struct prefix *prefix,\n\t\t\t       void *object)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: all_digit
      Src: /src/frr/zebra/zebra_routemap.c:1317,1
    - Dst: strtoul
      Src: /src/frr/zebra/zebra_routemap.c:1321,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_routemap.c:1325,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1310
    functionDepth: 1
    functionLinenumber: 1310
    functionLinenumberEnd: 1329
    functionName: route_match_address_prefix_len_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - all_digit
    - strtoul
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_address_prefix_len_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1331
    functionDepth: 0
    functionLinenumber: 1331
    functionLinenumberEnd: 1334
    functionName: route_match_address_prefix_len_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_address_prefix_len_free(void *rule)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1354
    functionDepth: 0
    functionLinenumber: 1354
    functionLinenumberEnd: 1382
    functionName: route_match_ip_nexthop_prefix_len
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_nexthop_prefix_len(void
      *rule, const struct prefix *prefix,\n\t\t\t\t  void *object)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1394
    functionDepth: 0
    functionLinenumber: 1394
    functionLinenumberEnd: 1410
    functionName: route_match_ip_next_hop_type
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_type(void *rule,
      const struct prefix *prefix,\n\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:1414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1412
    functionDepth: 1
    functionLinenumber: 1412
    functionLinenumberEnd: 1415
    functionName: route_match_ip_next_hop_type_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1417
    functionDepth: 0
    functionLinenumber: 1417
    functionLinenumberEnd: 1420
    functionName: route_match_ip_next_hop_type_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_type_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1432
    functionDepth: 0
    functionLinenumber: 1432
    functionLinenumberEnd: 1444
    functionName: route_match_source_protocol
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_source_protocol(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: proto_name2num
      Src: /src/frr/zebra/zebra_routemap.c:1451,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_routemap.c:1452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1446
    functionDepth: 1
    functionLinenumber: 1446
    functionLinenumberEnd: 1457
    functionName: route_match_source_protocol_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - proto_name2num
    linkageType: ''
    returnType: void
    signature: void *route_match_source_protocol_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1459
    functionDepth: 0
    functionLinenumber: 1459
    functionLinenumberEnd: 1462
    functionName: route_match_source_protocol_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_source_protocol_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1472
    functionDepth: 0
    functionLinenumber: 1472
    functionLinenumberEnd: 1483
    functionName: route_match_source_instance
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_source_instance(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/frr/zebra/zebra_routemap.c:1490,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_routemap.c:1491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1485
    functionDepth: 0
    functionLinenumber: 1485
    functionLinenumberEnd: 1496
    functionName: route_match_source_instance_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - atoi
    linkageType: ''
    returnType: void
    signature: void *route_match_source_instance_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1498
    functionDepth: 0
    functionLinenumber: 1498
    functionLinenumberEnd: 1501
    functionName: route_match_source_instance_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_source_instance_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1513
    functionDepth: 0
    functionLinenumber: 1513
    functionLinenumberEnd: 1522
    functionName: route_set_src
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_src(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/zebra/zebra_routemap.c:1529,1
    - Dst: inet_pton
      Src: /src/frr/zebra/zebra_routemap.c:1530,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_routemap.c:1531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1525
    functionDepth: 0
    functionLinenumber: 1525
    functionLinenumberEnd: 1536
    functionName: route_set_src_compile
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_src_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1539
    functionDepth: 0
    functionLinenumber: 1539
    functionLinenumberEnd: 1542
    functionName: route_set_src_free
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_src_free(void *rule)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_routemap.c:1565,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1570,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:1571,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1573,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1576,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1578,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1580,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/zebra/zebra_routemap.c:1581,1
    - Dst: route_map_counter_increment
      Src: /src/frr/zebra/zebra_routemap.c:1589,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1590,1
    - Dst: rib_update_table
      Src: /src/frr/zebra/zebra_routemap.c:1595,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1601,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:1602,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1604,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1607,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1609,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1611,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/zebra/zebra_routemap.c:1612,1
    - Dst: route_map_counter_increment
      Src: /src/frr/zebra/zebra_routemap.c:1614,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1615,1
    - Dst: rib_update_table
      Src: /src/frr/zebra/zebra_routemap.c:1620,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 1
    argNames:
    - rmap
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1628
    functionName: zebra_rib_table_rm_update
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - PROTO_RM_NAME
    - PROTO_RM_MAP
    - zebra_route_string
    - strcmp
    - rib_update_table
    - route_map_lookup_by_name
    - zlog_debug
    - route_map_counter_increment
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void zebra_rib_table_rm_update(const char *rmap)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_routemap.c:1645,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1650,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:1651,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1653,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1656,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1658,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1660,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/zebra/zebra_routemap.c:1661,1
    - Dst: route_map_counter_increment
      Src: /src/frr/zebra/zebra_routemap.c:1663,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1664,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zebra_routemap.c:1674,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1681,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_routemap.c:1682,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1684,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1687,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1689,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1691,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/zebra/zebra_routemap.c:1692,1
    - Dst: route_map_counter_increment
      Src: /src/frr/zebra/zebra_routemap.c:1694,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1695,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zebra_routemap.c:1705,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 1
    argNames:
    - rmap
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1713
    functionName: zebra_nht_rm_update
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - zebra_route_string
    - zebra_evaluate_rnh
    - strcmp
    - NHT_RM_NAME
    - route_map_lookup_by_name
    - zlog_debug
    - route_map_counter_increment
    - NHT_RM_MAP
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void zebra_nht_rm_update(const char *rmap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1718,1
    - Dst: zebra_import_table_rm_update
      Src: /src/frr/zebra/zebra_routemap.c:1720,1
    - Dst: zebra_rib_table_rm_update
      Src: /src/frr/zebra/zebra_routemap.c:1721,1
    - Dst: zebra_nht_rm_update
      Src: /src/frr/zebra/zebra_routemap.c:1722,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1715
    functionDepth: 5
    functionLinenumber: 1715
    functionLinenumberEnd: 1723
    functionName: zebra_route_map_process_update_cb
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - zebra_import_table_rm_update
    - zlog_debug
    - zebra_nht_rm_update
    - zebra_rib_table_rm_update
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_process_update_cb(char *rmap_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1728,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_routemap.c:1731,1
    - Dst: route_map_walk_update_list
      Src: /src/frr/zebra/zebra_routemap.c:1735,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1725
    functionDepth: 1
    functionLinenumber: 1725
    functionLinenumberEnd: 1742
    functionName: zebra_route_map_update_timer
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - route_map_walk_update_list
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_update_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_routemap.c:1750,1
    - Dst: zebra_route_map_update_timer
      Src: /src/frr/zebra/zebra_routemap.c:1751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1753
      start: 1744
    functionDepth: 2
    functionLinenumber: 1744
    functionLinenumberEnd: 1753
    functionName: zebra_route_map_set_delay_timer
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - zebra_route_map_update_timer
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_set_delay_timer(uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_routemap.c:1760,1
    - Dst: route_map_finish
      Src: /src/frr/zebra/zebra_routemap.c:1761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1755
    functionDepth: 1
    functionLinenumber: 1755
    functionLinenumberEnd: 1762
    functionName: zebra_routemap_finish
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_finish
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zebra_routemap_finish(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1782,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1783,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1789,1
    - Dst: PROTO_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1790,1
    - Dst: route_map_apply
      Src: /src/frr/zebra/zebra_routemap.c:1796,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 7
    argNames:
    - family
    - rib_type
    - instance
    - p
    - nexthop
    - zvrf
    - tag
    argTypes:
    - afi_t
    - int
    - uint8_t
    - struct prefix*
    - struct nexthop*
    - struct zebra_vrf*
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1764
    functionDepth: 1
    functionLinenumber: 1764
    functionLinenumberEnd: 1800
    functionName: zebra_route_map_check
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - PROTO_RM_NAME
    - route_map_apply
    - PROTO_RM_MAP
    linkageType: ''
    returnType: route_map_result_t
    signature: "route_map_result_t zebra_route_map_check(afi_t family, int rib_type,
      uint8_t instance,\n\t\t      const struct prefix *p, struct nexthop *nexthop,\n\t\t
      \     struct zebra_vrf *zvrf, route_tag_t tag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - afi
    - table
    argTypes:
    - afi_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1802
    functionDepth: 0
    functionLinenumber: 1802
    functionLinenumberEnd: 1805
    functionName: zebra_get_import_table_route_map
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zebra_get_import_table_route_map(afi_t afi, uint32_t table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_routemap.c:1811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - afi
    - rmap_name
    - table
    argTypes:
    - afi_t
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1807
    functionDepth: 1
    functionLinenumber: 1807
    functionLinenumberEnd: 1812
    functionName: zebra_add_import_table_route_map
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 1
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void zebra_add_import_table_route_map(afi_t afi, const char *rmap_name,\n\t\t\t\t
      \     uint32_t table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - afi
    - table
    argTypes:
    - afi_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1817
      start: 1814
    functionDepth: 0
    functionLinenumber: 1814
    functionLinenumberEnd: 1817
    functionName: zebra_del_import_table_route_map
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_del_import_table_route_map(afi_t afi, uint32_t table)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/zebra/zebra_routemap.c:1838,1
    - Dst: route_map_apply
      Src: /src/frr/zebra/zebra_routemap.c:1840,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 8
    argNames:
    - family
    - re_type
    - instance
    - p
    - nexthop
    - vrf_id
    - tag
    - rmap_name
    argTypes:
    - int
    - int
    - uint8_t
    - struct prefix*
    - struct nexthop*
    - vrf_id_t
    - route_tag_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1819
    functionDepth: 1
    functionLinenumber: 1819
    functionLinenumberEnd: 1844
    functionName: zebra_import_table_route_map_check
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 1
    functionsReached:
    - route_map_lookup_by_name
    - route_map_apply
    linkageType: ''
    returnType: route_map_result_t
    signature: "route_map_result_t zebra_import_table_route_map_check(int family,
      int re_type, uint8_t instance,\n\t\t\t\t   const struct prefix *p,\n\t\t\t\t
      \  struct nexthop *nexthop,\n\t\t\t\t   vrf_id_t vrf_id, route_tag_t tag,\n\t\t\t\t
      \  const char *rmap_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1864,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1865,1
    - Dst: NHT_RM_MAP
      Src: /src/frr/zebra/zebra_routemap.c:1866,1
    - Dst: route_map_apply
      Src: /src/frr/zebra/zebra_routemap.c:1868,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 6
    argNames:
    - afi
    - client_proto
    - p
    - zvrf
    - re
    - nexthop
    argTypes:
    - afi_t
    - int
    - struct prefix*
    - struct zebra_vrf*
    - struct route_entry*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1871
      start: 1846
    functionDepth: 1
    functionLinenumber: 1846
    functionLinenumberEnd: 1871
    functionName: zebra_nht_route_map_check
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_apply
    - NHT_RM_MAP
    linkageType: ''
    returnType: route_map_result_t
    signature: "route_map_result_t zebra_nht_route_map_check(afi_t afi, int client_proto,\n\t\t\t\t\t
      \    const struct prefix *p,\n\t\t\t\t\t     struct zebra_vrf *zvrf,\n\t\t\t\t\t
      \    struct route_entry *re,\n\t\t\t\t\t     struct nexthop *nexthop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_routemap.c:1877,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_routemap.c:1879,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1873
    functionDepth: 1
    functionLinenumber: 1873
    functionLinenumberEnd: 1881
    functionName: zebra_route_map_mark_update
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_mark_update(const char *rmap_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_map_mark_updated
      Src: /src/frr/zebra/zebra_routemap.c:1885,1
    - Dst: zebra_route_map_mark_update
      Src: /src/frr/zebra/zebra_routemap.c:1886,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/zebra/zebra_routemap.c:1888,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1883
    functionDepth: 2
    functionLinenumber: 1883
    functionLinenumberEnd: 1889
    functionName: zebra_route_map_add
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_mark_updated
    - zebra_route_map_mark_update
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_add(const char *rmap_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_map_mark_updated
      Src: /src/frr/zebra/zebra_routemap.c:1893,1
    - Dst: zebra_route_map_mark_update
      Src: /src/frr/zebra/zebra_routemap.c:1894,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/zebra/zebra_routemap.c:1896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1891
    functionDepth: 2
    functionLinenumber: 1891
    functionLinenumberEnd: 1897
    functionName: zebra_route_map_delete
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_mark_updated
    - zebra_route_map_mark_update
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_delete(const char *rmap_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_map_mark_updated
      Src: /src/frr/zebra/zebra_routemap.c:1901,1
    - Dst: zebra_route_map_mark_update
      Src: /src/frr/zebra/zebra_routemap.c:1902,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/zebra/zebra_routemap.c:1904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1899
    functionDepth: 2
    functionLinenumber: 1899
    functionLinenumberEnd: 1905
    functionName: zebra_route_map_event
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_mark_updated
    - zebra_route_map_mark_update
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_event(const char *rmap_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1914,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1915,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1916,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1917,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_routemap.c:1918,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1919,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1907
    functionDepth: 1
    functionLinenumber: 1907
    functionLinenumberEnd: 1922
    functionName: zebra_routemap_vrf_delete
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - NHT_RM_NAME
    - PROTO_RM_NAME
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_routemap_vrf_delete(struct zebra_vrf *zvrf)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_routemap.c:1931,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_routemap.c:1933,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_routemap.c:1934,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1937,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1938,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1939,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1940,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1942,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1943,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1944,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1945,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1947,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1948,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1949,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1950,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1952,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1953,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_routemap.c:1954,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1955,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1958,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1959,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1960,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1962,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1963,1
    - Dst: PROTO_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1964,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1966,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1967,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1968,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1970,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1971,1
    - Dst: NHT_RM_NAME
      Src: /src/frr/zebra/zebra_routemap.c:1972,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_routemap.c:1974,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_routemap.c:1976,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - vty
    - zvrf
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1925
    functionDepth: 1
    functionLinenumber: 1925
    functionLinenumberEnd: 1978
    functionName: zebra_routemap_config_write_protocol
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - PROTO_RM_NAME
    - vty_out
    - snprintf
    - memset
    - zvrf_id
    - NHT_RM_NAME
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void zebra_routemap_config_write_protocol(struct vty *vty,\n\t\t\t\t\t
      \ struct zebra_vrf *zvrf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1982,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1983,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1984,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1985,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1986,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1987,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1988,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1989,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1990,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1991,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1992,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1993,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1994,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1995,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1996,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1997,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1998,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:1999,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2000,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2001,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2002,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2003,1
    - Dst: route_map_init
      Src: /src/frr/zebra/zebra_routemap.c:2005,1
    - Dst: route_map_add_hook
      Src: /src/frr/zebra/zebra_routemap.c:2007,1
    - Dst: route_map_delete_hook
      Src: /src/frr/zebra/zebra_routemap.c:2008,1
    - Dst: route_map_event_hook
      Src: /src/frr/zebra/zebra_routemap.c:2009,1
    - Dst: route_map_match_interface_hook
      Src: /src/frr/zebra/zebra_routemap.c:2011,1
    - Dst: route_map_no_match_interface_hook
      Src: /src/frr/zebra/zebra_routemap.c:2012,1
    - Dst: route_map_match_ip_address_hook
      Src: /src/frr/zebra/zebra_routemap.c:2014,1
    - Dst: route_map_no_match_ip_address_hook
      Src: /src/frr/zebra/zebra_routemap.c:2015,1
    - Dst: route_map_match_ip_address_prefix_list_hook
      Src: /src/frr/zebra/zebra_routemap.c:2017,1
    - Dst: route_map_no_match_ip_address_prefix_list_hook
      Src: /src/frr/zebra/zebra_routemap.c:2018,1
    - Dst: route_map_match_ip_next_hop_hook
      Src: /src/frr/zebra/zebra_routemap.c:2020,1
    - Dst: route_map_no_match_ip_next_hop_hook
      Src: /src/frr/zebra/zebra_routemap.c:2021,1
    - Dst: route_map_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/zebra/zebra_routemap.c:2023,1
    - Dst: route_map_no_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/zebra/zebra_routemap.c:2024,1
    - Dst: route_map_match_ip_next_hop_type_hook
      Src: /src/frr/zebra/zebra_routemap.c:2026,1
    - Dst: route_map_no_match_ip_next_hop_type_hook
      Src: /src/frr/zebra/zebra_routemap.c:2027,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/zebra/zebra_routemap.c:2029,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/zebra/zebra_routemap.c:2030,1
    - Dst: route_map_match_ipv6_address_hook
      Src: /src/frr/zebra/zebra_routemap.c:2032,1
    - Dst: route_map_no_match_ipv6_address_hook
      Src: /src/frr/zebra/zebra_routemap.c:2033,1
    - Dst: route_map_match_ipv6_address_prefix_list_hook
      Src: /src/frr/zebra/zebra_routemap.c:2035,1
    - Dst: route_map_no_match_ipv6_address_prefix_list_hook
      Src: /src/frr/zebra/zebra_routemap.c:2036,1
    - Dst: route_map_match_ipv6_next_hop_type_hook
      Src: /src/frr/zebra/zebra_routemap.c:2038,1
    - Dst: route_map_no_match_ipv6_next_hop_type_hook
      Src: /src/frr/zebra/zebra_routemap.c:2039,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2041,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2042,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2043,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2044,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2045,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2046,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2047,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2048,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2049,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2050,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2051,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2052,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2053,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2054,1
    - Dst: route_map_install_match
      Src: /src/frr/zebra/zebra_routemap.c:2055,1
    - Dst: route_map_install_set
      Src: /src/frr/zebra/zebra_routemap.c:2058,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2060,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2061,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2062,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2063,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2064,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2065,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2066,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2067,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2068,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2069,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2072,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_routemap.c:2073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 1980
    functionDepth: 1
    functionLinenumber: 1980
    functionLinenumberEnd: 2074
    functionName: zebra_route_map_init
    functionSourceFile: /src/frr/zebra/zebra_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_event_hook
    - route_map_match_tag_hook
    - route_map_match_ipv6_address_prefix_list_hook
    - route_map_match_ip_next_hop_prefix_list_hook
    - install_element
    - route_map_match_interface_hook
    - route_map_no_match_ipv6_address_prefix_list_hook
    - route_map_install_set
    - route_map_init
    - route_map_no_match_ip_address_prefix_list_hook
    - route_map_match_ip_next_hop_hook
    - route_map_match_ip_address_hook
    - route_map_no_match_interface_hook
    - route_map_match_ipv6_address_hook
    - route_map_delete_hook
    - route_map_no_match_ipv6_address_hook
    - route_map_no_match_tag_hook
    - route_map_no_match_ip_next_hop_prefix_list_hook
    - route_map_no_match_ip_next_hop_hook
    - route_map_match_ip_next_hop_type_hook
    - route_map_install_match
    - route_map_no_match_ip_address_hook
    - route_map_match_ipv6_next_hop_type_hook
    - route_map_no_match_ipv6_next_hop_type_hook
    - route_map_add_hook
    - route_map_match_ip_address_prefix_list_hook
    - route_map_no_match_ip_next_hop_type_hook
    linkageType: ''
    returnType: void
    signature: void zebra_route_map_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_fpm_dt.c:63,1
    - Dst: route_table_iter_init
      Src: /src/frr/zebra/zebra_fpm_dt.c:67,1
    - Dst: route_table_iter_next
      Src: /src/frr/zebra/zebra_fpm_dt.c:68,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_fpm_dt.c:69,1
    - Dst: zfpm_route_for_update
      Src: /src/frr/zebra/zebra_fpm_dt.c:74,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_fpm_dt.c:78,1
    - Dst: route_table_iter_cleanup
      Src: /src/frr/zebra/zebra_fpm_dt.c:90,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - dest_p
    - re_p
    argTypes:
    - rib_dest_t**
    - struct route_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 92
    functionName: zfpm_dt_find_route
    functionSourceFile: /src/frr/zebra/zebra_fpm_dt.c
    functionUses: 0
    functionsReached:
    - route_table_iter_init
    - zfpm_route_for_update
    - route_table_iter_cleanup
    - route_table_iter_next
    - zebra_vrf_table
    - rib_dest_from_rnode
    - nexthop_group_active_nexthop_num
    linkageType: ''
    returnType: int
    signature: int zfpm_dt_find_route(rib_dest_t **dest_p, struct route_entry **re_p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/frr/zebra/zebra_fpm_dt.c:107,1
    - Dst: zfpm_dt_find_route
      Src: /src/frr/zebra/zebra_fpm_dt.c:110,1
    - Dst: zfpm_netlink_encode_route
      Src: /src/frr/zebra/zebra_fpm_dt.c:115,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 122
    functionName: zfpm_dt_benchmark_netlink_encode
    functionSourceFile: /src/frr/zebra/zebra_fpm_dt.c
    functionUses: 0
    functionsReached:
    - zfpm_netlink_encode_route
    - zfpm_dt_find_route
    - atoi
    linkageType: ''
    returnType: int
    signature: int zfpm_dt_benchmark_netlink_encode(int argc, const char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/frr/zebra/zebra_fpm_dt.c:140,1
    - Dst: zfpm_dt_find_route
      Src: /src/frr/zebra/zebra_fpm_dt.c:143,1
    - Dst: zfpm_protobuf_encode_route
      Src: /src/frr/zebra/zebra_fpm_dt.c:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 154
    functionName: zfpm_dt_benchmark_protobuf_encode
    functionSourceFile: /src/frr/zebra/zebra_fpm_dt.c
    functionUses: 0
    functionsReached:
    - zfpm_dt_find_route
    - zfpm_protobuf_encode_route
    - atoi
    linkageType: ''
    returnType: int
    signature: int zfpm_dt_benchmark_protobuf_encode(int argc, const char **argv)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_dt.c:175,1
    - Dst: qpb_address_family_get
      Src: /src/frr/zebra/zebra_fpm_dt.c:178,1
    - Dst: qpb_l3_prefix_get
      Src: /src/frr/zebra/zebra_fpm_dt.c:181,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_dt.c:184,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_fpm_dt.c:185,1
    - Dst: qpb_if_identifier_get
      Src: /src/frr/zebra/zebra_fpm_dt.c:193,1
    - Dst: qpb_l3_address_get
      Src: /src/frr/zebra/zebra_fpm_dt.c:197,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_dt.c:200,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_fpm_dt.c:203,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - msg
    argTypes:
    - Fpm__Message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 206
    functionName: zfpm_dt_log_fpm_message
    functionSourceFile: /src/frr/zebra/zebra_fpm_dt.c
    functionUses: 0
    functionsReached:
    - qpb_address_family_get
    - qpb_if_identifier_get
    - qpb_l3_address_get
    - zfpm_debug
    - qpb_l3_prefix_get
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void zfpm_dt_log_fpm_message(Fpm__Message *msg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QPB_DECLARE_STACK_ALLOCATOR
      Src: /src/frr/zebra/zebra_fpm_dt.c:217,1
    - Dst: QPB_INIT_STACK_ALLOCATOR
      Src: /src/frr/zebra/zebra_fpm_dt.c:220,1
    - Dst: atoi
      Src: /src/frr/zebra/zebra_fpm_dt.c:224,1
    - Dst: zfpm_dt_find_route
      Src: /src/frr/zebra/zebra_fpm_dt.c:226,1
    - Dst: zfpm_protobuf_encode_route
      Src: /src/frr/zebra/zebra_fpm_dt.c:232,1
    - Dst: fpm__message__unpack
      Src: /src/frr/zebra/zebra_fpm_dt.c:237,1
    - Dst: zfpm_dt_log_fpm_message
      Src: /src/frr/zebra/zebra_fpm_dt.c:240,1
    - Dst: QPB_RESET_STACK_ALLOCATOR
      Src: /src/frr/zebra/zebra_fpm_dt.c:241,1
    - Dst: fpm__message__unpack
      Src: /src/frr/zebra/zebra_fpm_dt.c:248,1
    - Dst: QPB_RESET_STACK_ALLOCATOR
      Src: /src/frr/zebra/zebra_fpm_dt.c:254,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 257
    functionName: zfpm_dt_benchmark_protobuf_decode
    functionSourceFile: /src/frr/zebra/zebra_fpm_dt.c
    functionUses: 0
    functionsReached:
    - zfpm_protobuf_encode_route
    - fpm__message__unpack
    - zfpm_dt_log_fpm_message
    - QPB_DECLARE_STACK_ALLOCATOR
    - QPB_RESET_STACK_ALLOCATOR
    - zfpm_dt_find_route
    - atoi
    - QPB_INIT_STACK_ALLOCATOR
    linkageType: ''
    returnType: int
    signature: int zfpm_dt_benchmark_protobuf_decode(int argc, const char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/netconf_netlink.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ncm
    argTypes:
    - struct netconfmsg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: netconf_rta
    functionSourceFile: /src/frr/zebra/netconf_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_ALIGN
    linkageType: ''
    returnType: struct rtattr
    signature: struct rtattr *netconf_rta(struct netconfmsg *ncm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/netconf_netlink.c:41,1
    - Dst: dplane_ctx_set_op
      Src: /src/frr/zebra/netconf_netlink.c:42,1
    - Dst: dplane_ctx_set_ns_id
      Src: /src/frr/zebra/netconf_netlink.c:43,1
    - Dst: dplane_ctx_set_afi
      Src: /src/frr/zebra/netconf_netlink.c:44,1
    - Dst: dplane_ctx_set_ifindex
      Src: /src/frr/zebra/netconf_netlink.c:45,1
    - Dst: dplane_ctx_set_netconf_mpls
      Src: /src/frr/zebra/netconf_netlink.c:47,1
    - Dst: dplane_ctx_set_netconf_mcast
      Src: /src/frr/zebra/netconf_netlink.c:48,1
    - Dst: dplane_ctx_set_netconf_linkdown
      Src: /src/frr/zebra/netconf_netlink.c:49,1
    - Dst: dplane_provider_enqueue_to_zebra
      Src: /src/frr/zebra/netconf_netlink.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 6
    argNames:
    - ns_id
    - afi
    - ifindex
    - mpls_on
    - mcast_on
    - linkdown_on
    argTypes:
    - ns_id_t
    - afi_t
    - ifindex_t
    - enum dplane_netconf_status_e
    - enum dplane_netconf_status_e
    - enum dplane_netconf_status_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 55
    functionName: netlink_netconf_dplane_update
    functionSourceFile: /src/frr/zebra/netconf_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_set_netconf_linkdown
    - dplane_ctx_set_netconf_mpls
    - dplane_ctx_alloc
    - dplane_ctx_set_op
    - dplane_ctx_set_afi
    - dplane_ctx_set_ns_id
    - dplane_ctx_set_netconf_mcast
    - dplane_ctx_set_ifindex
    - dplane_provider_enqueue_to_zebra
    linkageType: ''
    returnType: int
    signature: "int netlink_netconf_dplane_update(ns_id_t ns_id, afi_t afi, ifindex_t
      ifindex,\n\t\t\t      enum dplane_netconf_status_e mpls_on,\n\t\t\t      enum
      dplane_netconf_status_e mcast_on,\n\t\t\t      enum dplane_netconf_status_e
      linkdown_on)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/netconf_netlink.c:76,1
    - Dst: zlog_err
      Src: /src/frr/zebra/netconf_netlink.c:78,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/netconf_netlink.c:80,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/netconf_netlink.c:84,1
    - Dst: family2afi
      Src: /src/frr/zebra/netconf_netlink.c:98,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/netconf_netlink.c:100,1
    - Dst: netconf_rta
      Src: /src/frr/zebra/netconf_netlink.c:100,1
    - Dst: zlog_err
      Src: /src/frr/zebra/netconf_netlink.c:103,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/netconf_netlink.c:107,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/netconf_netlink.c:110,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/netconf_netlink.c:118,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/netconf_netlink.c:126,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/netconf_netlink.c:135,1
    - Dst: netlink_netconf_dplane_update
      Src: /src/frr/zebra/netconf_netlink.c:140,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 144
    functionName: netlink_netconf_change
    functionSourceFile: /src/frr/zebra/netconf_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_parse_rtattr
    - netlink_netconf_dplane_update
    - NLMSG_DATA
    - zlog_err
    - zlog_debug
    - RTA_DATA
    - family2afi
    - NLMSG_LENGTH
    - netconf_rta
    linkageType: ''
    returnType: int
    signature: int netlink_netconf_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/netconf_netlink.c:159,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/netconf_netlink.c:162,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/netconf_netlink.c:167,1
    - Dst: netlink_request
      Src: /src/frr/zebra/netconf_netlink.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - sockfd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 173
    functionName: netlink_request_netconf
    functionSourceFile: /src/frr/zebra/netconf_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - zlog_debug
    - NLMSG_LENGTH
    - kernel_netlink_nlsock_lookup
    linkageType: ''
    returnType: int
    signature: int netlink_request_netconf(int sockfd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/netconf_netlink.c:184,1
    - Dst: dplane_ctx_get_netconf_mpls
      Src: /src/frr/zebra/netconf_netlink.c:185,1
    - Dst: snprintf
      Src: /src/frr/zebra/netconf_netlink.c:190,1
    - Dst: snprintf
      Src: /src/frr/zebra/netconf_netlink.c:194,1
    - Dst: snprintf
      Src: /src/frr/zebra/netconf_netlink.c:196,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/netconf_netlink.c:198,1
    - Dst: open
      Src: /src/frr/zebra/netconf_netlink.c:206,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/netconf_netlink.c:208,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/netconf_netlink.c:211,1
    - Dst: write
      Src: /src/frr/zebra/netconf_netlink.c:215,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/netconf_netlink.c:218,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/netconf_netlink.c:220,1
    - Dst: close
      Src: /src/frr/zebra/netconf_netlink.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 225
    functionName: netlink_put_intf_netconfig
    functionSourceFile: /src/frr/zebra/netconf_netlink.c
    functionUses: 0
    functionsReached:
    - open
    - snprintf
    - dplane_ctx_get_ifname
    - dplane_ctx_get_netconf_mpls
    - close
    - safe_strerror
    - flog_err_sys
    - write
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_intf_netconfig(struct nl_batch
      *bth,\n\t\t\t\t\t\t   struct zebra_dplane_ctx *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/zebra/netconf_netlink.c:206,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/netconf_netlink.c:208,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/netconf_netlink.c:211,1
    - Dst: write
      Src: /src/frr/zebra/netconf_netlink.c:215,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/netconf_netlink.c:218,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/netconf_netlink.c:220,1
    - Dst: close
      Src: /src/frr/zebra/netconf_netlink.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 223
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/netconf_netlink.c
    functionUses: 0
    functionsReached:
    - open
    - close
    - safe_strerror
    - flog_err_sys
    - write
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nmsg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: NLMSG_TAIL
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_TAIL(nmsg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rta
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: RTA_TAIL
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_TAIL(rta)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 180
    functionName: NLSOCK_LOCK
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLSOCK_LOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 181
    functionName: NLSOCK_UNLOCK
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLSOCK_UNLOCK()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/kernel_netlink.c:211,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/kernel_netlink.c:212,1
    - Dst: vty_out
      Src: /src/frr/zebra/kernel_netlink.c:217,1
    - Dst: if_netlink_frr_protodown_r_bit_is_set
      Src: /src/frr/zebra/kernel_netlink.c:220,1
    - Dst: vty_out
      Src: /src/frr/zebra/kernel_netlink.c:221,1
    - Dst: if_netlink_get_frr_protodown_r_bit
      Src: /src/frr/zebra/kernel_netlink.c:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 225
    functionName: netlink_config_write_helper
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - atomic_load_explicit
    - if_netlink_frr_protodown_r_bit_is_set
    - vty_out
    - if_netlink_get_frr_protodown_r_bit
    linkageType: ''
    returnType: int
    signature: int netlink_config_write_helper(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/kernel_netlink.c:234,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/kernel_netlink.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - size
    - threshold
    - set
    argTypes:
    - uint32_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 237
    functionName: netlink_set_batch_buffer_size
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - atomic_store_explicit
    linkageType: ''
    returnType: void
    signature: void netlink_set_batch_buffer_size(uint32_t size, uint32_t threshold,
      bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:252,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 255
    functionName: netlink_talk_filter
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - nl_msg_type_to_str
    linkageType: ''
    returnType: int
    signature: int netlink_talk_filter(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/frr/zebra/kernel_netlink.c:264,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:266,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:268,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:274,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:278,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:281,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:283,1
    - Dst: getsockopt
      Src: /src/frr/zebra/kernel_netlink.c:287,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:289,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - nl
    - newsize
    argTypes:
    - struct nlsock*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 295
    functionName: netlink_recvbuf
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - flog_err_sys
    - safe_strerror
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int netlink_recvbuf(struct nlsock *nl, uint32_t newsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - group
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 305
    functionName: group2str
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *group2str(uint32_t group)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ns_socket
      Src: /src/frr/zebra/kernel_netlink.c:318,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:320,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:321,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_netlink.c:325,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:334,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:339,1
    - Dst: group2str
      Src: /src/frr/zebra/kernel_netlink.c:341,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:343,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:346,1
    - Dst: group2str
      Src: /src/frr/zebra/kernel_netlink.c:348,1
    - Dst: bind
      Src: /src/frr/zebra/kernel_netlink.c:355,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:359,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:360,1
    - Dst: close
      Src: /src/frr/zebra/kernel_netlink.c:361,1
    - Dst: getsockname
      Src: /src/frr/zebra/kernel_netlink.c:367,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:369,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:370,1
    - Dst: close
      Src: /src/frr/zebra/kernel_netlink.c:371,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/kernel_netlink.c:378,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 5
    argNames:
    - nl
    - groups
    - ext_groups
    - ext_group_size
    - ns_id
    argTypes:
    - struct nlsock*
    - unsigned long
    - uint32_t[]
    - uint8_t
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 381
    functionName: netlink_socket
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - group2str
    - memset
    - XMALLOC
    - zlog_err
    - close
    - ns_socket
    - safe_strerror
    - bind
    - getsockname
    - flog_err_sys
    - setsockopt
    - zlog_notice
    linkageType: ''
    returnType: int
    signature: "int netlink_socket(struct nlsock *nl, unsigned long groups,\n\t\t\t
      \ uint32_t ext_groups[], uint8_t ext_group_size,\n\t\t\t  ns_id_t ns_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ns_socket
      Src: /src/frr/zebra/kernel_netlink.c:318,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:320,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:321,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_netlink.c:325,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:334,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:339,1
    - Dst: group2str
      Src: /src/frr/zebra/kernel_netlink.c:341,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:343,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:346,1
    - Dst: group2str
      Src: /src/frr/zebra/kernel_netlink.c:348,1
    - Dst: bind
      Src: /src/frr/zebra/kernel_netlink.c:355,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 356
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - group2str
    - memset
    - zlog_err
    - ns_socket
    - safe_strerror
    - bind
    - setsockopt
    - zlog_notice
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: netlink_route_change
      Src: /src/frr/zebra/kernel_netlink.c:401,1
    - Dst: netlink_route_change
      Src: /src/frr/zebra/kernel_netlink.c:403,1
    - Dst: netlink_link_change
      Src: /src/frr/zebra/kernel_netlink.c:405,1
    - Dst: netlink_link_change
      Src: /src/frr/zebra/kernel_netlink.c:407,1
    - Dst: netlink_neigh_change
      Src: /src/frr/zebra/kernel_netlink.c:411,1
    - Dst: netlink_rule_change
      Src: /src/frr/zebra/kernel_netlink.c:413,1
    - Dst: netlink_rule_change
      Src: /src/frr/zebra/kernel_netlink.c:415,1
    - Dst: netlink_nexthop_change
      Src: /src/frr/zebra/kernel_netlink.c:417,1
    - Dst: netlink_nexthop_change
      Src: /src/frr/zebra/kernel_netlink.c:419,1
    - Dst: netlink_qdisc_change
      Src: /src/frr/zebra/kernel_netlink.c:422,1
    - Dst: netlink_tclass_change
      Src: /src/frr/zebra/kernel_netlink.c:425,1
    - Dst: netlink_tfilter_change
      Src: /src/frr/zebra/kernel_netlink.c:428,1
    - Dst: netlink_vlan_change
      Src: /src/frr/zebra/kernel_netlink.c:430,1
    - Dst: netlink_vlan_change
      Src: /src/frr/zebra/kernel_netlink.c:432,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:451,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 48
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 458
    functionName: netlink_information_fetch
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_link_change
    - netlink_rule_change
    - netlink_nexthop_change
    - netlink_route_change
    - netlink_tclass_change
    - flog_err
    - nl_msg_type_to_str
    - netlink_tfilter_change
    - netlink_vlan_change
    - netlink_qdisc_change
    - netlink_neigh_change
    linkageType: ''
    returnType: int
    signature: "int netlink_information_fetch(struct nlmsghdr *h, ns_id_t ns_id,\n\t\t\t\t
      \    int startup)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: netlink_interface_addr_dplane
      Src: /src/frr/zebra/kernel_netlink.c:473,1
    - Dst: netlink_netconf_change
      Src: /src/frr/zebra/kernel_netlink.c:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 464
    functionDepth: 3
    functionLinenumber: 464
    functionLinenumberEnd: 489
    functionName: dplane_netlink_information_fetch
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_netconf_change
    - netlink_interface_addr_dplane
    linkageType: ''
    returnType: int
    signature: "int dplane_netlink_information_fetch(struct nlmsghdr *h, ns_id_t ns_id,\n\t\t\t\t\t
      \   int startup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/kernel_netlink.c:509,1
    - Dst: fopen
      Src: /src/frr/zebra/kernel_netlink.c:511,1
    - Dst: fwrite
      Src: /src/frr/zebra/kernel_netlink.c:514,1
    - Dst: fclose
      Src: /src/frr/zebra/kernel_netlink.c:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - buf
    - size
    - counter
    argTypes:
    - char*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 517
    functionName: netlink_write_incoming
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - fopen
    - fwrite
    - snprintf
    - fclose
    linkageType: ''
    returnType: void
    signature: "void netlink_write_incoming(const char *buf, const unsigned int size,\n\t\t\t\t
      \  unsigned int counter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/kernel_netlink.c:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 512
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - fopen
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/kernel_netlink.c:523,1
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/kernel_netlink.c:527,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/kernel_netlink.c:529,1
    - Dst: event_add_read
      Src: /src/frr/zebra/kernel_netlink.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 534
    functionName: kernel_read
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void kernel_read(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/kernel_netlink.c:541,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/kernel_netlink.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct zebra_dplane_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 547
    functionName: kernel_dplane_read
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - kernel_netlink_nlsock_lookup
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int kernel_dplane_read(struct zebra_dplane_info *info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BPF_STMT
      Src: /src/frr/zebra/kernel_netlink.c:587,1
    - Dst: BPF_JUMP
      Src: /src/frr/zebra/kernel_netlink.c:592,1
    - Dst: htonl
      Src: /src/frr/zebra/kernel_netlink.c:592,1
    - Dst: BPF_JUMP
      Src: /src/frr/zebra/kernel_netlink.c:596,1
    - Dst: htonl
      Src: /src/frr/zebra/kernel_netlink.c:596,1
    - Dst: BPF_STMT
      Src: /src/frr/zebra/kernel_netlink.c:600,1
    - Dst: BPF_JUMP
      Src: /src/frr/zebra/kernel_netlink.c:605,1
    - Dst: htons
      Src: /src/frr/zebra/kernel_netlink.c:605,1
    - Dst: BPF_JUMP
      Src: /src/frr/zebra/kernel_netlink.c:609,1
    - Dst: htons
      Src: /src/frr/zebra/kernel_netlink.c:609,1
    - Dst: BPF_JUMP
      Src: /src/frr/zebra/kernel_netlink.c:613,1
    - Dst: htons
      Src: /src/frr/zebra/kernel_netlink.c:613,1
    - Dst: BPF_JUMP
      Src: /src/frr/zebra/kernel_netlink.c:618,1
    - Dst: htons
      Src: /src/frr/zebra/kernel_netlink.c:618,1
    - Dst: BPF_STMT
      Src: /src/frr/zebra/kernel_netlink.c:624,1
    - Dst: BPF_STMT
      Src: /src/frr/zebra/kernel_netlink.c:628,1
    - Dst: array_size
      Src: /src/frr/zebra/kernel_netlink.c:632,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:635,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:637,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - sock
    - pid
    - dplane_pid
    argTypes:
    - int
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 639
    functionName: netlink_install_filter
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - htons
    - BPF_STMT
    - BPF_JUMP
    - safe_strerror
    - array_size
    - htonl
    - flog_err_sys
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void netlink_install_filter(int sock, uint32_t pid, uint32_t dplane_pid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/kernel_netlink.c:646,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/kernel_netlink.c:647,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/kernel_netlink.c:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - tb
    - max
    - rta
    - len
    - flags
    argTypes:
    - struct rtattr**
    - int
    - struct rtattr*
    - int
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 653
    functionName: netlink_parse_rtattr_flags
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - memset
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: "void netlink_parse_rtattr_flags(struct rtattr **tb, int max, struct
      rtattr *rta,\n\t\t\t\tint len, unsigned short flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/kernel_netlink.c:658,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/kernel_netlink.c:659,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/kernel_netlink.c:662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - tb
    - max
    - rta
    - len
    argTypes:
    - struct rtattr**
    - int
    - struct rtattr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 664
    functionName: netlink_parse_rtattr
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 2
    functionsReached:
    - RTA_NEXT
    - memset
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: "void netlink_parse_rtattr(struct rtattr **tb, int max, struct rtattr
      *rta,\n\t\t\t  int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/kernel_netlink.c:675,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/kernel_netlink.c:675,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/kernel_netlink.c:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tb
    - max
    - rta
    argTypes:
    - struct rtattr**
    - int
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 676
    functionName: netlink_parse_rtattr_nested
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - netlink_parse_rtattr
    - RTA_PAYLOAD
    linkageType: ''
    returnType: void
    signature: "void netlink_parse_rtattr_nested(struct rtattr **tb, int max,\n\t\t\t\t
      struct rtattr *rta)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:681,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:681,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:682,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_netlink.c:686,1
    - Dst: NLMSG_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:686,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_netlink.c:687,1
    - Dst: NLMSG_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:687,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:687,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:688,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - n
    - maxlen
    - data
    - len
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 691
    functionName: nl_addraw_l
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - memset
    - zlog_err
    - NLMSG_ALIGN
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool nl_addraw_l(struct nlmsghdr *n, unsigned int maxlen, const void
      *data,\n\t\t unsigned int len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RTA_LENGTH
      Src: /src/frr/zebra/kernel_netlink.c:699,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:701,1
    - Dst: RTA_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:701,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:704,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_netlink.c:709,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/kernel_netlink.c:709,1
    - Dst: assert
      Src: /src/frr/zebra/kernel_netlink.c:711,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:713,1
    - Dst: RTA_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:713,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - n
    - maxlen
    - type
    - data
    - alen
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - int
    - void*
    - unsigned int
    assertStmts:
    - condition: (alen == 0)
      pos:
        line_end: 710
        line_start: 710
        source_file: /src/frr/zebra/kernel_netlink.c
    constantsTouched: []
    func_position:
      end: 716
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 716
    functionName: nl_attr_put
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 1
    functionsReached:
    - assert
    - RTA_ALIGN
    - RTA_DATA
    - NLMSG_ALIGN
    - memcpy
    - RTA_LENGTH
    linkageType: ''
    returnType: bool
    signature: "bool nl_attr_put(struct nlmsghdr *n, unsigned int maxlen, int type,\n\t\t
      const void *data, unsigned int alen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put
      Src: /src/frr/zebra/kernel_netlink.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - n
    - maxlen
    - type
    - data
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 722
    functionName: nl_attr_put8
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 1
    functionsReached:
    - nl_attr_put
    linkageType: ''
    returnType: bool
    signature: "bool nl_attr_put8(struct nlmsghdr *n, unsigned int maxlen, int type,\n\t\t
      \ uint8_t data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put
      Src: /src/frr/zebra/kernel_netlink.c:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - n
    - maxlen
    - type
    - data
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 724
    functionDepth: 2
    functionLinenumber: 724
    functionLinenumberEnd: 728
    functionName: nl_attr_put16
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put
    linkageType: ''
    returnType: bool
    signature: "bool nl_attr_put16(struct nlmsghdr *n, unsigned int maxlen, int type,\n\t\t
      \  uint16_t data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put
      Src: /src/frr/zebra/kernel_netlink.c:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - n
    - maxlen
    - type
    - data
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 730
    functionDepth: 2
    functionLinenumber: 730
    functionLinenumberEnd: 734
    functionName: nl_attr_put32
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 1
    functionsReached:
    - nl_attr_put
    linkageType: ''
    returnType: bool
    signature: "bool nl_attr_put32(struct nlmsghdr *n, unsigned int maxlen, int type,\n\t\t
      \  uint32_t data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put
      Src: /src/frr/zebra/kernel_netlink.c:739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - n
    - maxlen
    - type
    - data
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 736
    functionDepth: 2
    functionLinenumber: 736
    functionLinenumberEnd: 740
    functionName: nl_attr_put64
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put
    linkageType: ''
    returnType: bool
    signature: "bool nl_attr_put64(struct nlmsghdr *n, unsigned int maxlen, int type,\n\t\t
      \  uint64_t data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:744,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/kernel_netlink.c:746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - n
    - maxlen
    - type
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 742
    functionDepth: 2
    functionLinenumber: 742
    functionLinenumberEnd: 751
    functionName: nl_attr_nest
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - nl_attr_put
    linkageType: ''
    returnType: struct rtattr
    signature: struct rtattr *nl_attr_nest(struct nlmsghdr *n, unsigned int maxlen,
      int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - n
    - nest
    argTypes:
    - struct nlmsghdr*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 753
    functionDepth: 0
    functionLinenumber: 753
    functionLinenumberEnd: 757
    functionName: nl_attr_nest_end
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    linkageType: ''
    returnType: int
    signature: int nl_attr_nest_end(struct nlmsghdr *n, struct rtattr *nest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:761,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:763,1
    - Dst: RTNH_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:763,1
    - Dst: memset
      Src: /src/frr/zebra/kernel_netlink.c:767,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:769,1
    - Dst: RTA_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - n
    - maxlen
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 772
    functionName: nl_attr_rtnh
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - memset
    - RTNH_ALIGN
    - RTA_ALIGN
    - NLMSG_ALIGN
    linkageType: ''
    returnType: struct rtnexthop
    signature: struct rtnexthop *nl_attr_rtnh(struct nlmsghdr *n, unsigned int maxlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - rtnh
    argTypes:
    - struct nlmsghdr*
    - struct rtnexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 774
    functionDepth: 0
    functionLinenumber: 774
    functionLinenumberEnd: 777
    functionName: nl_attr_rtnh_end
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    linkageType: ''
    returnType: void
    signature: void nl_attr_rtnh_end(struct nlmsghdr *n, struct rtnexthop *rtnh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RTA_LENGTH
      Src: /src/frr/zebra/kernel_netlink.c:783,1
    - Dst: RTA_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:785,1
    - Dst: RTA_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:785,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:786,1
    - Dst: RTA_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:790,1
    - Dst: memcpy
      Src: /src/frr/zebra/kernel_netlink.c:794,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/kernel_netlink.c:794,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:795,1
    - Dst: RTA_ALIGN
      Src: /src/frr/zebra/kernel_netlink.c:795,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - rta
    - maxlen
    - type
    - data
    - alen
    argTypes:
    - struct rtattr*
    - unsigned int
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 798
    functionName: nl_rta_put
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_ALIGN
    - zlog_err
    - RTA_DATA
    - NLMSG_ALIGN
    - memcpy
    - RTA_LENGTH
    linkageType: ''
    returnType: bool
    signature: "bool nl_rta_put(struct rtattr *rta, unsigned int maxlen, int type,\n\t\tconst
      void *data, int alen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nl_rta_put
      Src: /src/frr/zebra/kernel_netlink.c:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rta
    - maxlen
    - type
    - data
    argTypes:
    - struct rtattr*
    - unsigned int
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 800
    functionDepth: 2
    functionLinenumber: 800
    functionLinenumberEnd: 804
    functionName: nl_rta_put16
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - nl_rta_put
    linkageType: ''
    returnType: bool
    signature: "bool nl_rta_put16(struct rtattr *rta, unsigned int maxlen, int type,\n\t\t
      \ uint16_t data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nl_rta_put
      Src: /src/frr/zebra/kernel_netlink.c:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - rta
    - maxlen
    - type
    - data
    argTypes:
    - struct rtattr*
    - unsigned int
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 810
    functionName: nl_rta_put64
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - nl_rta_put
    linkageType: ''
    returnType: bool
    signature: "bool nl_rta_put64(struct rtattr *rta, unsigned int maxlen, int type,\n\t\t
      \ uint64_t data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RTA_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:814,1
    - Dst: nl_rta_put
      Src: /src/frr/zebra/kernel_netlink.c:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rta
    - maxlen
    - type
    argTypes:
    - struct rtattr*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 822
    functionName: nl_rta_nest
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - nl_rta_put
    - RTA_TAIL
    linkageType: ''
    returnType: struct rtattr
    signature: struct rtattr *nl_rta_nest(struct rtattr *rta, unsigned int maxlen,
      int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RTA_TAIL
      Src: /src/frr/zebra/kernel_netlink.c:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rta
    - nest
    argTypes:
    - struct rtattr*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 829
    functionName: nl_rta_nest_end
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_TAIL
    linkageType: ''
    returnType: int
    signature: int nl_rta_nest_end(struct rtattr *rta, struct rtattr *nest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/zebra/kernel_netlink.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msg_type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 834
    functionName: nl_msg_type_to_str
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 4
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *nl_msg_type_to_str(uint16_t msg_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/zebra/kernel_netlink.c:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtproto
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 839
    functionName: nl_rtproto_to_str
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *nl_rtproto_to_str(uint8_t rtproto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/zebra/kernel_netlink.c:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 1
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: nl_family_to_str
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 2
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *nl_family_to_str(uint8_t family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/zebra/kernel_netlink.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rttype
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 849
    functionName: nl_rttype_to_str
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *nl_rttype_to_str(uint8_t rttype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nla
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 851
    functionDepth: 0
    functionLinenumber: 851
    functionLinenumberEnd: 855
    functionName: NLA_OK
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLA_OK(nla, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nla
    - ','
    - attrlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 858
    functionName: NLA_NEXT
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLA_NEXT(nla, attrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 859
    functionName: NLA_LENGTH
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLA_LENGTH(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nla
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 860
    functionName: NLA_DATA
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLA_DATA(nla)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - err
    - ','
    - inner_len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 861
    functionDepth: 0
    functionLinenumber: 861
    functionLinenumberEnd: 865
    functionName: ERR_NLA
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERR_NLA(err, inner_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NLA_OK
      Src: /src/frr/zebra/kernel_netlink.c:869,1
    - Dst: NLA_NEXT
      Src: /src/frr/zebra/kernel_netlink.c:872,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - tb
    - max
    - nla
    - len
    argTypes:
    - struct nlattr**
    - int
    - struct nlattr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 874
    functionName: netlink_parse_nlattr
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLA_NEXT
    - NLA_OK
    linkageType: ''
    returnType: void
    signature: "void netlink_parse_nlattr(struct nlattr **tb, int max,\n\t\t\t\t struct
      nlattr *nla, int len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/kernel_netlink.c:879,1
    - Dst: NLMSG_PAYLOAD
      Src: /src/frr/zebra/kernel_netlink.c:889,1
    - Dst: NLMSG_PAYLOAD
      Src: /src/frr/zebra/kernel_netlink.c:891,1
    - Dst: netlink_parse_nlattr
      Src: /src/frr/zebra/kernel_netlink.c:893,1
    - Dst: ERR_NLA
      Src: /src/frr/zebra/kernel_netlink.c:893,1
    - Dst: NLA_DATA
      Src: /src/frr/zebra/kernel_netlink.c:897,1
    - Dst: NLA_DATA
      Src: /src/frr/zebra/kernel_netlink.c:900,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:903,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:911,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:912,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:920,1
    - Dst: flog_warn
      Src: /src/frr/zebra/kernel_netlink.c:922,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct nlmsghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 876
    functionDepth: 2
    functionLinenumber: 876
    functionLinenumberEnd: 925
    functionName: netlink_parse_extended_ack
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - ERR_NLA
    - flog_warn
    - NLMSG_DATA
    - zlog_err
    - zlog_debug
    - nl_msg_type_to_str
    - NLMSG_PAYLOAD
    - NLA_DATA
    - netlink_parse_nlattr
    linkageType: ''
    returnType: void
    signature: void netlink_parse_extended_ack(struct nlmsghdr *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sendmsg
      Src: /src/frr/zebra/kernel_netlink.c:952,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:957,1
    - Dst: nl_dump
      Src: /src/frr/zebra/kernel_netlink.c:959,1
    - Dst: zlog_hexdump
      Src: /src/frr/zebra/kernel_netlink.c:961,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:966,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:967,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - nl
    - buf
    - buflen
    argTypes:
    - struct nlsock*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 972
    functionName: netlink_send_msg
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_hexdump
    - nl_dump
    - zlog_debug
    - safe_strerror
    - sendmsg
    - flog_err_sys
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_send_msg(const struct nlsock *nl, void *buf,\n\t\t\t\tsize_t
      buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sendmsg
      Src: /src/frr/zebra/kernel_netlink.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 954
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - sendmsg
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/frr/zebra/kernel_netlink.c:992,1
    - Dst: XREALLOC
      Src: /src/frr/zebra/kernel_netlink.c:995,1
    - Dst: recvmsg
      Src: /src/frr/zebra/kernel_netlink.c:1001,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:1007,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1008,1
    - Dst: exit
      Src: /src/frr/zebra/kernel_netlink.c:1013,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:1017,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:1022,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1029,1
    - Dst: nl_dump
      Src: /src/frr/zebra/kernel_netlink.c:1031,1
    - Dst: zlog_hexdump
      Src: /src/frr/zebra/kernel_netlink.c:1033,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1038,1
    - Dst: netlink_write_incoming
      Src: /src/frr/zebra/kernel_netlink.c:1039,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - nl
    - msg
    argTypes:
    - struct nlsock*
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1043
    functionName: netlink_recv_msg
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_write_incoming
    - exit
    - zlog_hexdump
    - nl_dump
    - flog_err
    - safe_strerror
    - zlog_debug
    - recv
    - flog_err_sys
    - XREALLOC
    - recvmsg
    linkageType: ''
    returnType: int
    signature: int netlink_recv_msg(struct nlsock *nl, struct msghdr *msg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/kernel_netlink.c:1054,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/kernel_netlink.c:1058,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:1059,1
    - Dst: netlink_parse_extended_ack
      Src: /src/frr/zebra/kernel_netlink.c:1069,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1074,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:1076,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1097,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1098,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:1099,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1117,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1118,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:1119,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:1124,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1126,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:1127,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 26
    argCount: 4
    argNames:
    - nl
    - h
    - is_cmd
    - startup
    argTypes:
    - struct nlsock*
    - struct nlmsghdr*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1051
    functionDepth: 3
    functionLinenumber: 1051
    functionLinenumberEnd: 1132
    functionName: netlink_parse_error
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_DATA
    - flog_err
    - zlog_debug
    - nl_msg_type_to_str
    - safe_strerror
    - netlink_parse_extended_ack
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: "int netlink_parse_error(const struct nlsock *nl, struct nlmsghdr *h,\n\t\t\t
      \      bool is_cmd, bool startup)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: netlink_recv_msg
      Src: /src/frr/zebra/kernel_netlink.c:1165,1
    - Dst: NLMSG_OK
      Src: /src/frr/zebra/kernel_netlink.c:1173,1
    - Dst: NLMSG_NEXT
      Src: /src/frr/zebra/kernel_netlink.c:1174,1
    - Dst: netlink_parse_error
      Src: /src/frr/zebra/kernel_netlink.c:1181,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:1200,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1206,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:1209,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1219,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1226,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:1234,1
    - Dst: flog_err
      Src: /src/frr/zebra/kernel_netlink.c:1239,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 45
    argCount: 4
    argNames:
    - nl
    - zns
    - count
    - startup
    argTypes:
    - struct nlsock*
    - struct zebra_dplane_info*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1147
    functionDepth: 4
    functionLinenumber: 1147
    functionLinenumberEnd: 1246
    functionName: netlink_parse_info
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 3
    functionsReached:
    - NLMSG_NEXT
    - netlink_parse_error
    - flog_err
    - zlog_debug
    - nl_msg_type_to_str
    - netlink_recv_msg
    - NLMSG_OK
    linkageType: ''
    returnType: int
    signature: "int netlink_parse_info(int (*filter)(struct nlmsghdr *, ns_id_t, int),\n\t\t
      \      struct nlsock *nl, const struct zebra_dplane_info *zns,\n\t\t       int
      count, bool startup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/kernel_netlink.c:1267,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1272,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:1274,1
    - Dst: netlink_send_msg
      Src: /src/frr/zebra/kernel_netlink.c:1278,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/kernel_netlink.c:1285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - n
    - dp_info
    - startup
    argTypes:
    - struct nlmsghdr*
    - struct zebra_dplane_info*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1260
    functionDepth: 5
    functionLinenumber: 1260
    functionLinenumberEnd: 1286
    functionName: netlink_talk_info
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_send_msg
    - kernel_netlink_nlsock_lookup
    - netlink_parse_info
    - zlog_debug
    - nl_msg_type_to_str
    linkageType: ''
    returnType: int
    signature: "int netlink_talk_info(int (*filter)(struct nlmsghdr *, ns_id_t,\n\t\t\t\t\t
      \  int startup),\n\t\t\t     struct nlmsghdr *n,\n\t\t\t     struct zebra_dplane_info
      *dp_info, bool startup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/kernel_netlink.c:1304,1
    - Dst: netlink_talk_info
      Src: /src/frr/zebra/kernel_netlink.c:1306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - n
    - nl
    - zns
    - startup
    argTypes:
    - struct nlmsghdr*
    - struct nlsock*
    - struct zebra_ns*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1292
    functionDepth: 6
    functionLinenumber: 1292
    functionLinenumberEnd: 1307
    functionName: netlink_talk
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_talk_info
    - zebra_dplane_info_from_zns
    linkageType: ''
    returnType: int
    signature: "int netlink_talk(int (*filter)(struct nlmsghdr *, ns_id_t, int startup),\n\t\t
      struct nlmsghdr *n, struct nlsock *nl, struct zebra_ns *zns,\n\t\t bool startup)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:1318,1
    - Dst: netlink_send_msg
      Src: /src/frr/zebra/kernel_netlink.c:1327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - nl
    - req
    argTypes:
    - struct nlsock*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1312
    functionDepth: 2
    functionLinenumber: 1312
    functionLinenumberEnd: 1331
    functionName: netlink_request
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 2
    functionsReached:
    - netlink_send_msg
    - flog_err_sys
    linkageType: ''
    returnType: int
    signature: int netlink_request(struct nlsock *nl, void *req)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/kernel_netlink.c:1343,1
    - Dst: netlink_recv_msg
      Src: /src/frr/zebra/kernel_netlink.c:1348,1
    - Dst: NLMSG_OK
      Src: /src/frr/zebra/kernel_netlink.c:1353,1
    - Dst: NLMSG_NEXT
      Src: /src/frr/zebra/kernel_netlink.c:1354,1
    - Dst: dplane_ctx_get_head
      Src: /src/frr/zebra/kernel_netlink.c:1365,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1372,1
    - Dst: dplane_ctx_is_update
      Src: /src/frr/zebra/kernel_netlink.c:1382,1
    - Dst: dplane_ctx_get_ns
      Src: /src/frr/zebra/kernel_netlink.c:1383,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/kernel_netlink.c:1392,1
    - Dst: dplane_ctx_enqueue_tail
      Src: /src/frr/zebra/kernel_netlink.c:1393,1
    - Dst: dplane_ctx_get_ns
      Src: /src/frr/zebra/kernel_netlink.c:1396,1
    - Dst: dplane_ctx_get_ns
      Src: /src/frr/zebra/kernel_netlink.c:1399,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/kernel_netlink.c:1400,1
    - Dst: dplane_ctx_get_ns
      Src: /src/frr/zebra/kernel_netlink.c:1403,1
    - Dst: netlink_parse_error
      Src: /src/frr/zebra/kernel_netlink.c:1413,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1416,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1427,1
    - Dst: netlink_parse_error
      Src: /src/frr/zebra/kernel_netlink.c:1435,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/kernel_netlink.c:1439,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1443,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1454,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/kernel_netlink.c:1456,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 47
    argCount: 1
    argNames:
    - bth
    argTypes:
    - struct nl_batch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1333
    functionDepth: 4
    functionLinenumber: 1333
    functionLinenumberEnd: 1461
    functionName: nl_batch_read_resp
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_NEXT
    - dplane_ctx_dequeue
    - dplane_ctx_get_ns
    - kernel_netlink_nlsock_lookup
    - zlog_err
    - dplane_ctx_get_head
    - dplane_ctx_is_update
    - netlink_parse_error
    - zlog_warn
    - zlog_debug
    - dplane_ctx_set_status
    - nl_msg_type_to_str
    - netlink_recv_msg
    - NLMSG_OK
    - dplane_ctx_enqueue_tail
    linkageType: ''
    returnType: int
    signature: int nl_batch_read_resp(struct nl_batch *bth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/kernel_netlink.c:1470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bth
    argTypes:
    - struct nl_batch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1471
    functionName: nl_batch_reset
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_q_init
    linkageType: ''
    returnType: void
    signature: void nl_batch_reset(struct nl_batch *bth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/kernel_netlink.c:1481,1
    - Dst: XFREE
      Src: /src/frr/zebra/kernel_netlink.c:1484,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/kernel_netlink.c:1486,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/kernel_netlink.c:1492,1
    - Dst: nl_batch_reset
      Src: /src/frr/zebra/kernel_netlink.c:1497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - bth
    - ctx_out_q
    argTypes:
    - struct nl_batch*
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1498
    functionName: nl_batch_init
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - nl_batch_reset
    - atomic_load_explicit
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void nl_batch_init(struct nl_batch *bth,\n\t\t\t  struct dplane_ctx_list_head
      *ctx_out_q)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/kernel_netlink.c:1507,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/kernel_netlink.c:1510,1
    - Dst: netlink_send_msg
      Src: /src/frr/zebra/kernel_netlink.c:1514,1
    - Dst: nl_batch_read_resp
      Src: /src/frr/zebra/kernel_netlink.c:1518,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/kernel_netlink.c:1525,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/kernel_netlink.c:1530,1
    - Dst: dplane_ctx_enqueue_tail
      Src: /src/frr/zebra/kernel_netlink.c:1533,1
    - Dst: nl_batch_reset
      Src: /src/frr/zebra/kernel_netlink.c:1536,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 1
    argNames:
    - bth
    argTypes:
    - struct nl_batch*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1500
    functionDepth: 5
    functionLinenumber: 1500
    functionLinenumberEnd: 1537
    functionName: nl_batch_send
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_send_msg
    - nl_batch_reset
    - dplane_ctx_enqueue_tail
    - dplane_ctx_dequeue
    - kernel_netlink_nlsock_lookup
    - dplane_ctx_set_status
    - zlog_debug
    - nl_batch_read_resp
    linkageType: ''
    returnType: void
    signature: void nl_batch_send(struct nl_batch *bth)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nl_batch_send
      Src: /src/frr/zebra/kernel_netlink.c:1563,1
    - Dst: dplane_ctx_get_ns
      Src: /src/frr/zebra/kernel_netlink.c:1574,1
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/kernel_netlink.c:1575,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/kernel_netlink.c:1575,1
    - Dst: dplane_ctx_get_ns
      Src: /src/frr/zebra/kernel_netlink.c:1584,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - bth
    - ctx
    - ignore_res
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1539
    functionDepth: 6
    functionLinenumber: 1539
    functionLinenumberEnd: 1590
    functionName: netlink_batch_add_msg
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_ns_sock
    - dplane_ctx_get_ns
    - nl_batch_send
    - kernel_netlink_nlsock_lookup
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_batch_add_msg(\n\tstruct nl_batch
      *bth, struct zebra_dplane_ctx *ctx,\n\tssize_t (*msg_encoder)(struct zebra_dplane_ctx
      *, void *, size_t),\n\tbool ignore_res)"
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_is_skip_kernel
      Src: /src/frr/zebra/kernel_netlink.c:1595,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/kernel_netlink.c:1598,1
    - Dst: netlink_put_route_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1603,1
    - Dst: netlink_put_nexthop_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1608,1
    - Dst: netlink_put_lsp_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1613,1
    - Dst: netlink_put_pw_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1617,1
    - Dst: netlink_put_address_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1621,1
    - Dst: netlink_put_mac_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1625,1
    - Dst: netlink_put_neigh_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1636,1
    - Dst: netlink_put_rule_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1641,1
    - Dst: netlink_put_gre_set_msg
      Src: /src/frr/zebra/kernel_netlink.c:1659,1
    - Dst: netlink_put_intf_netconfig
      Src: /src/frr/zebra/kernel_netlink.c:1667,1
    - Dst: netlink_put_intf_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1672,1
    - Dst: netlink_put_tc_qdisc_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1676,1
    - Dst: netlink_put_tc_class_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1680,1
    - Dst: netlink_put_tc_filter_update_msg
      Src: /src/frr/zebra/kernel_netlink.c:1684,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 77
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1688
      start: 1592
    functionDepth: 2
    functionLinenumber: 1592
    functionLinenumberEnd: 1688
    functionName: nl_put_msg
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_put_gre_set_msg
    - dplane_ctx_get_op
    - netlink_put_mac_update_msg
    - netlink_put_intf_netconfig
    - netlink_put_tc_filter_update_msg
    - netlink_put_rule_update_msg
    - dplane_ctx_is_skip_kernel
    - netlink_put_tc_class_update_msg
    - netlink_put_route_update_msg
    - netlink_put_nexthop_update_msg
    - netlink_put_tc_qdisc_update_msg
    - netlink_put_pw_update_msg
    - netlink_put_neigh_update_msg
    - netlink_put_address_update_msg
    - netlink_put_intf_update_msg
    - netlink_put_lsp_update_msg
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status nl_put_msg(struct nl_batch *bth,\n\t\t\t\t\t
      \ struct zebra_dplane_ctx *ctx)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/kernel_netlink.c:1697,1
    - Dst: nl_batch_init
      Src: /src/frr/zebra/kernel_netlink.c:1698,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/kernel_netlink.c:1701,1
    - Dst: dplane_ctx_get_ns
      Src: /src/frr/zebra/kernel_netlink.c:1706,1
    - Dst: nl_batch_send
      Src: /src/frr/zebra/kernel_netlink.c:1707,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/kernel_netlink.c:1713,1
    - Dst: nl_put_msg
      Src: /src/frr/zebra/kernel_netlink.c:1715,1
    - Dst: dplane_ctx_enqueue_tail
      Src: /src/frr/zebra/kernel_netlink.c:1717,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/kernel_netlink.c:1719,1
    - Dst: nl_batch_send
      Src: /src/frr/zebra/kernel_netlink.c:1723,1
    - Dst: nl_batch_send
      Src: /src/frr/zebra/kernel_netlink.c:1726,1
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/kernel_netlink.c:1728,1
    - Dst: dplane_ctx_list_append
      Src: /src/frr/zebra/kernel_netlink.c:1729,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ctx_list
    argTypes:
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1690
    functionDepth: 6
    functionLinenumber: 1690
    functionLinenumberEnd: 1730
    functionName: kernel_update_multi
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_dequeue
    - dplane_ctx_get_ns
    - dplane_ctx_list_append
    - dplane_ctx_set_status
    - nl_batch_send
    - dplane_ctx_q_init
    - nl_put_msg
    - nl_batch_init
    - dplane_ctx_enqueue_tail
    linkageType: ''
    returnType: void
    signature: void kernel_update_multi(struct dplane_ctx_list_head *ctx_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLSOCK_LOCK
      Src: /src/frr/zebra/kernel_netlink.c:1738,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/kernel_netlink.c:1739,1
    - Dst: NLSOCK_UNLOCK
      Src: /src/frr/zebra/kernel_netlink.c:1740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1732
    functionDepth: 1
    functionLinenumber: 1732
    functionLinenumberEnd: 1743
    functionName: kernel_netlink_nlsock_lookup
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 6
    functionsReached:
    - hash_lookup
    - NLSOCK_LOCK
    - NLSOCK_UNLOCK
    linkageType: ''
    returnType: struct nlsock
    signature: struct nlsock *kernel_netlink_nlsock_lookup(int sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLSOCK_LOCK
      Src: /src/frr/zebra/kernel_netlink.c:1748,1
    - Dst: hash_get
      Src: /src/frr/zebra/kernel_netlink.c:1749,1
    - Dst: NLSOCK_UNLOCK
      Src: /src/frr/zebra/kernel_netlink.c:1750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nls
    argTypes:
    - struct nlsock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1746
    functionDepth: 1
    functionLinenumber: 1746
    functionLinenumberEnd: 1751
    functionName: kernel_netlink_nlsock_insert
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLSOCK_LOCK
    - NLSOCK_UNLOCK
    - hash_get
    linkageType: ''
    returnType: void
    signature: void kernel_netlink_nlsock_insert(struct nlsock *nls)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLSOCK_LOCK
      Src: /src/frr/zebra/kernel_netlink.c:1756,1
    - Dst: hash_release
      Src: /src/frr/zebra/kernel_netlink.c:1757,1
    - Dst: NLSOCK_UNLOCK
      Src: /src/frr/zebra/kernel_netlink.c:1758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nls
    argTypes:
    - struct nlsock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1754
    functionDepth: 1
    functionLinenumber: 1754
    functionLinenumberEnd: 1759
    functionName: kernel_netlink_nlsock_remove
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - hash_release
    - NLSOCK_LOCK
    - NLSOCK_UNLOCK
    linkageType: ''
    returnType: void
    signature: void kernel_netlink_nlsock_remove(struct nlsock *nls)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1761
    functionDepth: 0
    functionLinenumber: 1761
    functionLinenumberEnd: 1766
    functionName: kernel_netlink_nlsock_key
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t kernel_netlink_nlsock_key(const void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1768
    functionDepth: 0
    functionLinenumber: 1768
    functionLinenumberEnd: 1777
    functionName: kernel_netlink_nlsock_hash_equal
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool kernel_netlink_nlsock_hash_equal(const void *arg1, const void
      *arg2)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/kernel_netlink.c:1824,1
    - Dst: netlink_socket
      Src: /src/frr/zebra/kernel_netlink.c:1828,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1830,1
    - Dst: exit
      Src: /src/frr/zebra/kernel_netlink.c:1832,1
    - Dst: kernel_netlink_nlsock_insert
      Src: /src/frr/zebra/kernel_netlink.c:1835,1
    - Dst: snprintf
      Src: /src/frr/zebra/kernel_netlink.c:1837,1
    - Dst: netlink_socket
      Src: /src/frr/zebra/kernel_netlink.c:1841,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1842,1
    - Dst: exit
      Src: /src/frr/zebra/kernel_netlink.c:1844,1
    - Dst: kernel_netlink_nlsock_insert
      Src: /src/frr/zebra/kernel_netlink.c:1847,1
    - Dst: snprintf
      Src: /src/frr/zebra/kernel_netlink.c:1850,1
    - Dst: netlink_socket
      Src: /src/frr/zebra/kernel_netlink.c:1855,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1856,1
    - Dst: exit
      Src: /src/frr/zebra/kernel_netlink.c:1858,1
    - Dst: kernel_netlink_nlsock_insert
      Src: /src/frr/zebra/kernel_netlink.c:1861,1
    - Dst: snprintf
      Src: /src/frr/zebra/kernel_netlink.c:1864,1
    - Dst: netlink_socket
      Src: /src/frr/zebra/kernel_netlink.c:1868,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1870,1
    - Dst: exit
      Src: /src/frr/zebra/kernel_netlink.c:1872,1
    - Dst: kernel_netlink_nlsock_insert
      Src: /src/frr/zebra/kernel_netlink.c:1875,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:1889,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:1893,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1895,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:1901,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:1905,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1906,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:1909,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:1913,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1914,1
    - Dst: setsockopt
      Src: /src/frr/zebra/kernel_netlink.c:1922,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/kernel_netlink.c:1925,1
    - Dst: fcntl
      Src: /src/frr/zebra/kernel_netlink.c:1930,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/kernel_netlink.c:1931,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1932,1
    - Dst: fcntl
      Src: /src/frr/zebra/kernel_netlink.c:1934,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1935,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1936,1
    - Dst: fcntl
      Src: /src/frr/zebra/kernel_netlink.c:1938,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1939,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1940,1
    - Dst: fcntl
      Src: /src/frr/zebra/kernel_netlink.c:1943,1
    - Dst: zlog_err
      Src: /src/frr/zebra/kernel_netlink.c:1944,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/kernel_netlink.c:1945,1
    - Dst: netlink_recvbuf
      Src: /src/frr/zebra/kernel_netlink.c:1950,1
    - Dst: netlink_recvbuf
      Src: /src/frr/zebra/kernel_netlink.c:1952,1
    - Dst: netlink_recvbuf
      Src: /src/frr/zebra/kernel_netlink.c:1953,1
    - Dst: netlink_recvbuf
      Src: /src/frr/zebra/kernel_netlink.c:1954,1
    - Dst: netlink_install_filter
      Src: /src/frr/zebra/kernel_netlink.c:1961,1
    - Dst: netlink_install_filter
      Src: /src/frr/zebra/kernel_netlink.c:1964,1
    - Dst: event_add_read
      Src: /src/frr/zebra/kernel_netlink.c:1971,1
    - Dst: rt_netlink_init
      Src: /src/frr/zebra/kernel_netlink.c:1974,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 67
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1781
    functionDepth: 2
    functionLinenumber: 1781
    functionLinenumberEnd: 1975
    functionName: kernel_init
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 1
    functionsReached:
    - rt_netlink_init
    - exit
    - kernel_netlink_nlsock_insert
    - fcntl
    - snprintf
    - zlog_err
    - netlink_install_filter
    - netlink_recvbuf
    - safe_strerror
    - netlink_socket
    - event_add_read
    - flog_err_sys
    - setsockopt
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void kernel_init(struct zebra_ns *zns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_remove
      Src: /src/frr/zebra/kernel_netlink.c:1981,1
    - Dst: close
      Src: /src/frr/zebra/kernel_netlink.c:1982,1
    - Dst: XFREE
      Src: /src/frr/zebra/kernel_netlink.c:1984,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - nls
    argTypes:
    - struct nlsock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1987
      start: 1978
    functionDepth: 2
    functionLinenumber: 1978
    functionLinenumberEnd: 1987
    functionName: kernel_nlsock_fini
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - XFREE
    - kernel_netlink_nlsock_remove
    - close
    linkageType: ''
    returnType: void
    signature: void kernel_nlsock_fini(struct nlsock *nls)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/kernel_netlink.c:1991,1
    - Dst: kernel_nlsock_fini
      Src: /src/frr/zebra/kernel_netlink.c:1993,1
    - Dst: kernel_nlsock_fini
      Src: /src/frr/zebra/kernel_netlink.c:1995,1
    - Dst: kernel_nlsock_fini
      Src: /src/frr/zebra/kernel_netlink.c:1997,1
    - Dst: kernel_nlsock_fini
      Src: /src/frr/zebra/kernel_netlink.c:2003,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - zns
    - complete
    argTypes:
    - struct zebra_ns*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 1989
    functionDepth: 3
    functionLinenumber: 1989
    functionLinenumberEnd: 2004
    functionName: kernel_terminate
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - kernel_nlsock_fini
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void kernel_terminate(struct zebra_ns *zns, bool complete)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/kernel_netlink.c:2012,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/kernel_netlink.c:2013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 2009
    functionDepth: 1
    functionLinenumber: 2009
    functionLinenumberEnd: 2016
    functionName: kernel_router_init
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_init
    - hash_create_size
    linkageType: ''
    returnType: void
    signature: void kernel_router_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/kernel_netlink.c:2023,1
    - Dst: hash_free
      Src: /src/frr/zebra/kernel_netlink.c:2025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2027
      start: 2021
    functionDepth: 1
    functionLinenumber: 2021
    functionLinenumberEnd: 2027
    functionName: kernel_router_terminate
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_destroy
    - hash_free
    linkageType: ''
    returnType: void
    signature: void kernel_router_terminate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_OK
      Src: /src/frr/zebra/kernel_netlink.c:2034,1
    - Dst: netlink_information_fetch
      Src: /src/frr/zebra/kernel_netlink.c:2037,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2030
    functionDepth: 3
    functionLinenumber: 2030
    functionLinenumberEnd: 2038
    functionName: netlink_fuzz
    functionSourceFile: /src/frr/zebra/kernel_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_OK
    - netlink_information_fetch
    linkageType: ''
    returnType: void
    signature: void netlink_fuzz(const uint8_t *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: VNI_INFO_FROM_ZEBRA_IF
    functionSourceFile: /src/frr/zebra/zebra_l2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNI_INFO_FROM_ZEBRA_IF(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: IS_ZEBRA_VXLAN_IF_SVD
    functionSourceFile: /src/frr/zebra/zebra_l2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_VXLAN_IF_SVD(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: IS_ZEBRA_VXLAN_IF_VNI
    functionSourceFile: /src/frr/zebra/zebra_l2.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_VXLAN_IF_VNI(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: VLAN_ID_FROM_ZEBRA_IF
    functionSourceFile: /src/frr/zebra/zebra_l2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VLAN_ID_FROM_ZEBRA_IF(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    functionName: BRIDGE_FROM_ZEBRA_IF
    functionSourceFile: /src/frr/zebra/zebra_l2.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRIDGE_FROM_ZEBRA_IF(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    functionSourceFile: /src/frr/zebra/zebra_l2.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fnc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: FPM_RECONNECT
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FPM_RECONNECT(fnc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fnc
    - ','
    - ev
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: WALK_FINISH
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WALK_FINISH(fnc, ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - label
    - ','
    - counter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 306
    functionName: SHOW_COUNTER
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHOW_COUNTER(label, counter)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/dplane_fpm_nl.c:374,1
    - Dst: htons
      Src: /src/frr/zebra/dplane_fpm_nl.c:375,1
    - Dst: vty_out
      Src: /src/frr/zebra/dplane_fpm_nl.c:376,1
    - Dst: ntohs
      Src: /src/frr/zebra/dplane_fpm_nl.c:376,1
    - Dst: vty_out
      Src: /src/frr/zebra/dplane_fpm_nl.c:378,1
    - Dst: vty_out
      Src: /src/frr/zebra/dplane_fpm_nl.c:383,1
    - Dst: htons
      Src: /src/frr/zebra/dplane_fpm_nl.c:384,1
    - Dst: vty_out
      Src: /src/frr/zebra/dplane_fpm_nl.c:385,1
    - Dst: ntohs
      Src: /src/frr/zebra/dplane_fpm_nl.c:385,1
    - Dst: vty_out
      Src: /src/frr/zebra/dplane_fpm_nl.c:387,1
    - Dst: vty_out
      Src: /src/frr/zebra/dplane_fpm_nl.c:395,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 400
    functionName: fpm_write_config
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - ntohs
    - vty_out
    - htons
    linkageType: ''
    returnType: int
    signature: int fpm_write_config(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:417,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:418,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:419,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:420,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:421,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:422,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:423,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:424,1
    - Dst: frr_mutex_lock_autounlock
      Src: /src/frr/zebra/dplane_fpm_nl.c:430,1
    - Dst: close
      Src: /src/frr/zebra/dplane_fpm_nl.c:434,1
    - Dst: stream_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:438,1
    - Dst: stream_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:439,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:440,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:441,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - fnc
    argTypes:
    - struct fpm_nl_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 449
    functionName: fpm_reconnect
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - frr_mutex_lock_autounlock
    - event_cancel_async
    - close
    - EVENT_OFF
    - event_add_timer
    - stream_reset
    linkageType: ''
    returnType: void
    signature: void fpm_reconnect(struct fpm_nl_ctx *fnc)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:453,1
    - Dst: stream_read_try
      Src: /src/frr/zebra/dplane_fpm_nl.c:463,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/dplane_fpm_nl.c:464,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:466,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:470,1
    - Dst: FPM_RECONNECT
      Src: /src/frr/zebra/dplane_fpm_nl.c:472,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:476,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:478,1
    - Dst: strerror
      Src: /src/frr/zebra/dplane_fpm_nl.c:479,1
    - Dst: FPM_RECONNECT
      Src: /src/frr/zebra/dplane_fpm_nl.c:480,1
    - Dst: event_add_read
      Src: /src/frr/zebra/dplane_fpm_nl.c:485,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:494,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/dplane_fpm_nl.c:497,1
    - Dst: stream_pulldown
      Src: /src/frr/zebra/dplane_fpm_nl.c:500,1
    - Dst: stream_getc
      Src: /src/frr/zebra/dplane_fpm_nl.c:504,1
    - Dst: stream_getc
      Src: /src/frr/zebra/dplane_fpm_nl.c:505,1
    - Dst: stream_getw
      Src: /src/frr/zebra/dplane_fpm_nl.c:506,1
    - Dst: stream_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:510,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:511,1
    - Dst: FPM_RECONNECT
      Src: /src/frr/zebra/dplane_fpm_nl.c:515,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:524,1
    - Dst: FPM_RECONNECT
      Src: /src/frr/zebra/dplane_fpm_nl.c:527,1
    - Dst: stream_rewind_getp
      Src: /src/frr/zebra/dplane_fpm_nl.c:537,1
    - Dst: stream_pulldown
      Src: /src/frr/zebra/dplane_fpm_nl.c:538,1
    - Dst: stream_get
      Src: /src/frr/zebra/dplane_fpm_nl.c:548,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:554,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:561,1
    - Dst: FPM_RECONNECT
      Src: /src/frr/zebra/dplane_fpm_nl.c:564,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:568,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:577,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/dplane_fpm_nl.c:589,1
    - Dst: dplane_ctx_route_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:590,1
    - Dst: netlink_route_change_read_unicast_internal
      Src: /src/frr/zebra/dplane_fpm_nl.c:592,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/dplane_fpm_nl.c:594,1
    - Dst: stream_pulldown
      Src: /src/frr/zebra/dplane_fpm_nl.c:595,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:604,1
    - Dst: stream_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:611,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 82
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 612
    functionName: fpm_read
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - netlink_route_change_read_unicast_internal
    - dplane_ctx_route_init
    - atomic_fetch_add_explicit
    - zlog_warn
    - stream_reset
    - stream_getc
    - dplane_ctx_alloc
    - zlog_debug
    - EVENT_ARG
    - stream_rewind_getp
    - STREAM_READABLE
    - stream_get
    - event_add_read
    - FPM_RECONNECT
    - stream_pulldown
    - stream_read_try
    - strerror
    - STREAM_WRITEABLE
    - stream_getw
    - dplane_ctx_fini
    linkageType: ''
    returnType: void
    signature: void fpm_read(struct event *t)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:616,1
    - Dst: getsockopt
      Src: /src/frr/zebra/dplane_fpm_nl.c:626,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:630,1
    - Dst: strerror
      Src: /src/frr/zebra/dplane_fpm_nl.c:631,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:633,1
    - Dst: strerror
      Src: /src/frr/zebra/dplane_fpm_nl.c:634,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:636,1
    - Dst: FPM_RECONNECT
      Src: /src/frr/zebra/dplane_fpm_nl.c:640,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:650,1
    - Dst: event_add_read
      Src: /src/frr/zebra/dplane_fpm_nl.c:654,1
    - Dst: frr_mutex_lock_autounlock
      Src: /src/frr/zebra/dplane_fpm_nl.c:658,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/dplane_fpm_nl.c:662,1
    - Dst: stream_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:663,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/dplane_fpm_nl.c:668,1
    - Dst: stream_get_getp
      Src: /src/frr/zebra/dplane_fpm_nl.c:669,1
    - Dst: write
      Src: /src/frr/zebra/dplane_fpm_nl.c:670,1
    - Dst: stream_pnt
      Src: /src/frr/zebra/dplane_fpm_nl.c:670,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:672,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:677,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:688,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:691,1
    - Dst: strerror
      Src: /src/frr/zebra/dplane_fpm_nl.c:692,1
    - Dst: FPM_RECONNECT
      Src: /src/frr/zebra/dplane_fpm_nl.c:694,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:699,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:703,1
    - Dst: stream_forward_getp
      Src: /src/frr/zebra/dplane_fpm_nl.c:706,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/dplane_fpm_nl.c:710,1
    - Dst: stream_pulldown
      Src: /src/frr/zebra/dplane_fpm_nl.c:711,1
    - Dst: event_add_write
      Src: /src/frr/zebra/dplane_fpm_nl.c:712,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 716
    functionName: fpm_write
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - frr_mutex_lock_autounlock
    - atomic_fetch_add_explicit
    - zlog_warn
    - stream_reset
    - event_add_write
    - zlog_debug
    - EVENT_ARG
    - write
    - stream_get_getp
    - STREAM_READABLE
    - stream_forward_getp
    - event_add_read
    - event_add_timer
    - FPM_RECONNECT
    - stream_pulldown
    - stream_pnt
    - getsockopt
    - strerror
    - stream_get_endp
    - atomic_fetch_sub_explicit
    linkageType: ''
    returnType: void
    signature: void fpm_write(struct event *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:720,1
    - Dst: socket
      Src: /src/frr/zebra/dplane_fpm_nl.c:727,1
    - Dst: zlog_err
      Src: /src/frr/zebra/dplane_fpm_nl.c:729,1
    - Dst: strerror
      Src: /src/frr/zebra/dplane_fpm_nl.c:730,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:731,1
    - Dst: set_nonblocking
      Src: /src/frr/zebra/dplane_fpm_nl.c:736,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/dplane_fpm_nl.c:739,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/dplane_fpm_nl.c:742,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:747,1
    - Dst: ntohs
      Src: /src/frr/zebra/dplane_fpm_nl.c:748,1
    - Dst: connect
      Src: /src/frr/zebra/dplane_fpm_nl.c:750,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:752,1
    - Dst: close
      Src: /src/frr/zebra/dplane_fpm_nl.c:754,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dplane_fpm_nl.c:755,1
    - Dst: strerror
      Src: /src/frr/zebra/dplane_fpm_nl.c:756,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:757,1
    - Dst: event_add_read
      Src: /src/frr/zebra/dplane_fpm_nl.c:765,1
    - Dst: event_add_write
      Src: /src/frr/zebra/dplane_fpm_nl.c:767,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:777,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 779
    functionName: fpm_connect
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - connect
    - strerror
    - socket
    - event_add_read
    - zlog_err
    - close
    - ntohs
    - inet_ntop
    - zlog_debug
    - atomic_fetch_add_explicit
    - zlog_warn
    - set_nonblocking
    - EVENT_ARG
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void fpm_connect(struct event *t)
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/dplane_fpm_nl.c:795,1
    - Dst: frr_mutex_lock_autounlock
      Src: /src/frr/zebra/dplane_fpm_nl.c:808,1
    - Dst: netlink_route_multipath_msg_encode
      Src: /src/frr/zebra/dplane_fpm_nl.c:813,1
    - Dst: zlog_err
      Src: /src/frr/zebra/dplane_fpm_nl.c:817,1
    - Dst: netlink_route_multipath_msg_encode
      Src: /src/frr/zebra/dplane_fpm_nl.c:831,1
    - Dst: zlog_err
      Src: /src/frr/zebra/dplane_fpm_nl.c:835,1
    - Dst: netlink_macfdb_update_ctx
      Src: /src/frr/zebra/dplane_fpm_nl.c:846,1
    - Dst: zlog_err
      Src: /src/frr/zebra/dplane_fpm_nl.c:848,1
    - Dst: netlink_nexthop_msg_encode
      Src: /src/frr/zebra/dplane_fpm_nl.c:857,1
    - Dst: zlog_err
      Src: /src/frr/zebra/dplane_fpm_nl.c:860,1
    - Dst: netlink_nexthop_msg_encode
      Src: /src/frr/zebra/dplane_fpm_nl.c:869,1
    - Dst: zlog_err
      Src: /src/frr/zebra/dplane_fpm_nl.c:872,1
    - Dst: netlink_lsp_msg_encoder
      Src: /src/frr/zebra/dplane_fpm_nl.c:883,1
    - Dst: zlog_err
      Src: /src/frr/zebra/dplane_fpm_nl.c:885,1
    - Dst: assert
      Src: /src/frr/zebra/dplane_fpm_nl.c:946,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/dplane_fpm_nl.c:949,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:950,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:954,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/dplane_fpm_nl.c:957,1
    - Dst: stream_putc
      Src: /src/frr/zebra/dplane_fpm_nl.c:967,1
    - Dst: stream_putc
      Src: /src/frr/zebra/dplane_fpm_nl.c:968,1
    - Dst: stream_putw
      Src: /src/frr/zebra/dplane_fpm_nl.c:969,1
    - Dst: stream_write
      Src: /src/frr/zebra/dplane_fpm_nl.c:972,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:975,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:978,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:980,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:983,1
    - Dst: event_add_write
      Src: /src/frr/zebra/dplane_fpm_nl.c:987,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 125
    argCount: 2
    argNames:
    - fnc
    - ctx
    argTypes:
    - struct fpm_nl_ctx*
    - struct zebra_dplane_ctx*
    assertStmts:
    - condition: ((nl_buf_len + FPM_HEADER_SIZE) <= UINT16_MAX)
      pos:
        line_end: 945
        line_start: 945
        source_file: /src/frr/zebra/dplane_fpm_nl.c
    constantsTouched: []
    func_position:
      end: 991
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 991
    functionName: fpm_nl_enqueue
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - assert
    - dplane_ctx_get_op
    - netlink_nexthop_msg_encode
    - event_add_write
    - frr_mutex_lock_autounlock
    - stream_putc
    - atomic_store_explicit
    - STREAM_WRITEABLE
    - stream_putw
    - zlog_err
    - atomic_fetch_add_explicit
    - stream_write
    - zlog_debug
    - atomic_load_explicit
    - netlink_lsp_msg_encoder
    - netlink_route_multipath_msg_encode
    - netlink_macfdb_update_ctx
    linkageType: ''
    returnType: int
    signature: int fpm_nl_enqueue(struct fpm_nl_ctx *fnc, struct zebra_dplane_ctx
      *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1008,1
    - Dst: dplane_ctx_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:1011,1
    - Dst: dplane_ctx_lsp_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:1012,1
    - Dst: fpm_nl_enqueue
      Src: /src/frr/zebra/dplane_fpm_nl.c:1014,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1020,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1002
    functionDepth: 2
    functionLinenumber: 1002
    functionLinenumberEnd: 1022
    functionName: fpm_lsp_send_cb
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - fpm_nl_enqueue
    - CHECK_FLAG
    - SET_FLAG
    - dplane_ctx_lsp_init
    - dplane_ctx_reset
    linkageType: ''
    returnType: int
    signature: int fpm_lsp_send_cb(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1026,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/dplane_fpm_nl.c:1027,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/dplane_fpm_nl.c:1031,1
    - Dst: hash_walk
      Src: /src/frr/zebra/dplane_fpm_nl.c:1034,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/dplane_fpm_nl.c:1036,1
    - Dst: WALK_FINISH
      Src: /src/frr/zebra/dplane_fpm_nl.c:1039,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1042,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1046,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1049
    functionName: fpm_lsp_send
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_alloc
    - WALK_FINISH
    - dplane_ctx_fini
    - hash_walk
    - EVENT_ARG
    - zebra_vrf_lookup_by_id
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void fpm_lsp_send(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1066,1
    - Dst: dplane_ctx_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:1070,1
    - Dst: dplane_ctx_nexthop_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:1071,1
    - Dst: fpm_nl_enqueue
      Src: /src/frr/zebra/dplane_fpm_nl.c:1072,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1079,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1060
    functionDepth: 2
    functionLinenumber: 1060
    functionLinenumberEnd: 1082
    functionName: fpm_nhg_send_cb
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - fpm_nl_enqueue
    - CHECK_FLAG
    - SET_FLAG
    - dplane_ctx_nexthop_init
    - dplane_ctx_reset
    linkageType: ''
    returnType: int
    signature: int fpm_nhg_send_cb(struct hash_bucket *bucket, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1086,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/dplane_fpm_nl.c:1090,1
    - Dst: hash_walk
      Src: /src/frr/zebra/dplane_fpm_nl.c:1095,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/dplane_fpm_nl.c:1098,1
    - Dst: WALK_FINISH
      Src: /src/frr/zebra/dplane_fpm_nl.c:1102,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1103,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1108
    functionName: fpm_nhg_send
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_alloc
    - WALK_FINISH
    - dplane_ctx_fini
    - EVENT_ARG
    - hash_walk
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void fpm_nhg_send(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1115,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/dplane_fpm_nl.c:1123,1
    - Dst: rib_tables_iter_next
      Src: /src/frr/zebra/dplane_fpm_nl.c:1126,1
    - Dst: route_top
      Src: /src/frr/zebra/dplane_fpm_nl.c:1127,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/dplane_fpm_nl.c:1127,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/dplane_fpm_nl.c:1128,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1134,1
    - Dst: dplane_ctx_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:1138,1
    - Dst: dplane_ctx_route_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:1139,1
    - Dst: fpm_nl_enqueue
      Src: /src/frr/zebra/dplane_fpm_nl.c:1141,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/dplane_fpm_nl.c:1143,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1145,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1151,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/dplane_fpm_nl.c:1156,1
    - Dst: WALK_FINISH
      Src: /src/frr/zebra/dplane_fpm_nl.c:1159,1
    - Dst: event_add_event
      Src: /src/frr/zebra/dplane_fpm_nl.c:1162,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1113
    functionDepth: 2
    functionLinenumber: 1113
    functionLinenumberEnd: 1164
    functionName: fpm_rib_send
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - fpm_nl_enqueue
    - srcdest_route_next
    - dplane_ctx_route_init
    - CHECK_FLAG
    - route_top
    - rib_tables_iter_next
    - dplane_ctx_alloc
    - WALK_FINISH
    - SET_FLAG
    - event_add_event
    - dplane_ctx_fini
    - EVENT_ARG
    - event_add_timer
    - rib_dest_from_rnode
    - dplane_ctx_reset
    linkageType: ''
    returnType: void
    signature: void fpm_rib_send(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1187,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1190,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/dplane_fpm_nl.c:1193,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/dplane_fpm_nl.c:1194,1
    - Dst: dplane_ctx_reset
      Src: /src/frr/zebra/dplane_fpm_nl.c:1196,1
    - Dst: dplane_ctx_set_op
      Src: /src/frr/zebra/dplane_fpm_nl.c:1197,1
    - Dst: dplane_mac_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:1198,1
    - Dst: fpm_nl_enqueue
      Src: /src/frr/zebra/dplane_fpm_nl.c:1202,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1176
    functionDepth: 2
    functionLinenumber: 1176
    functionLinenumberEnd: 1207
    functionName: fpm_enqueue_rmac_table
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - fpm_nl_enqueue
    - CHECK_FLAG
    - dplane_mac_init
    - dplane_ctx_set_op
    - zebra_vxlan_if_vni_find
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - event_add_timer
    - dplane_ctx_reset
    linkageType: ''
    returnType: void
    signature: void fpm_enqueue_rmac_table(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/dplane_fpm_nl.c:1215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1216
    functionName: fpm_enqueue_l3vni_table
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void fpm_enqueue_l3vni_table(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1222,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/dplane_fpm_nl.c:1223,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/dplane_fpm_nl.c:1225,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/dplane_fpm_nl.c:1226,1
    - Dst: WALK_FINISH
      Src: /src/frr/zebra/dplane_fpm_nl.c:1230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1231
    functionName: fpm_rmac_send
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_alloc
    - WALK_FINISH
    - dplane_ctx_fini
    - EVENT_ARG
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void fpm_rmac_send(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1236
    functionDepth: 1
    functionLinenumber: 1236
    functionLinenumberEnd: 1242
    functionName: fpm_nhg_reset_cb
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void fpm_nhg_reset_cb(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1246,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/dplane_fpm_nl.c:1248,1
    - Dst: event_add_event
      Src: /src/frr/zebra/dplane_fpm_nl.c:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1244
    functionDepth: 1
    functionLinenumber: 1244
    functionLinenumberEnd: 1252
    functionName: fpm_nhg_reset
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - event_add_event
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void fpm_nhg_reset(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1257
    functionDepth: 1
    functionLinenumber: 1257
    functionLinenumberEnd: 1262
    functionName: fpm_lsp_reset_cb
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void fpm_lsp_reset_cb(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1266,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/dplane_fpm_nl.c:1267,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/dplane_fpm_nl.c:1269,1
    - Dst: event_add_event
      Src: /src/frr/zebra/dplane_fpm_nl.c:1272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1264
    functionDepth: 1
    functionLinenumber: 1264
    functionLinenumberEnd: 1273
    functionName: fpm_lsp_reset
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_lookup_by_id
    - event_add_event
    - hash_iterate
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void fpm_lsp_reset(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1280,1
    - Dst: rib_tables_iter_next
      Src: /src/frr/zebra/dplane_fpm_nl.c:1287,1
    - Dst: route_top
      Src: /src/frr/zebra/dplane_fpm_nl.c:1288,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/dplane_fpm_nl.c:1288,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/dplane_fpm_nl.c:1289,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1294,1
    - Dst: event_add_event
      Src: /src/frr/zebra/dplane_fpm_nl.c:1299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1278
    functionDepth: 1
    functionLinenumber: 1278
    functionLinenumberEnd: 1300
    functionName: fpm_rib_reset
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - srcdest_route_next
    - route_top
    - rib_tables_iter_next
    - UNSET_FLAG
    - EVENT_ARG
    - rib_dest_from_rnode
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void fpm_rib_reset(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1310
    functionName: fpm_unset_rmac_table
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void fpm_unset_rmac_table(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/dplane_fpm_nl.c:1316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1317
    functionName: fpm_unset_l3vni_table
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void fpm_unset_l3vni_table(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1321,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/dplane_fpm_nl.c:1323,1
    - Dst: event_add_event
      Src: /src/frr/zebra/dplane_fpm_nl.c:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1319
    functionDepth: 1
    functionLinenumber: 1319
    functionLinenumberEnd: 1328
    functionName: fpm_rmac_reset
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - event_add_event
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void fpm_rmac_reset(struct event *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1332,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/dplane_fpm_nl.c:1339,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/dplane_fpm_nl.c:1345,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/dplane_fpm_nl.c:1346,1
    - Dst: fpm_nl_enqueue
      Src: /src/frr/zebra/dplane_fpm_nl.c:1358,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1362,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/dplane_fpm_nl.c:1365,1
    - Dst: dplane_provider_enqueue_out_ctx
      Src: /src/frr/zebra/dplane_fpm_nl.c:1366,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1370,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1375,1
    - Dst: dplane_provider_out_ctx_queue_len
      Src: /src/frr/zebra/dplane_fpm_nl.c:1384,1
    - Dst: dplane_provider_work_ready
      Src: /src/frr/zebra/dplane_fpm_nl.c:1385,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1330
    functionDepth: 2
    functionLinenumber: 1330
    functionLinenumberEnd: 1386
    functionName: fpm_process_queue
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - dplane_provider_enqueue_out_ctx
    - fpm_nl_enqueue
    - frr_with_mutex
    - dplane_ctx_dequeue
    - STREAM_WRITEABLE
    - atomic_fetch_add_explicit
    - dplane_ctx_set_status
    - dplane_provider_out_ctx_queue_len
    - atomic_fetch_sub_explicit
    - EVENT_ARG
    - event_add_timer
    - dplane_provider_work_ready
    linkageType: ''
    returnType: void
    signature: void fpm_process_queue(struct event *t)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/dplane_fpm_nl.c:1393,1
    - Dst: EVENT_VAL
      Src: /src/frr/zebra/dplane_fpm_nl.c:1394,1
    - Dst: zlog_info
      Src: /src/frr/zebra/dplane_fpm_nl.c:1398,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1400,1
    - Dst: fpm_reconnect
      Src: /src/frr/zebra/dplane_fpm_nl.c:1404,1
    - Dst: zlog_info
      Src: /src/frr/zebra/dplane_fpm_nl.c:1408,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1410,1
    - Dst: fpm_reconnect
      Src: /src/frr/zebra/dplane_fpm_nl.c:1412,1
    - Dst: zlog_info
      Src: /src/frr/zebra/dplane_fpm_nl.c:1416,1
    - Dst: memset
      Src: /src/frr/zebra/dplane_fpm_nl.c:1417,1
    - Dst: zlog_info
      Src: /src/frr/zebra/dplane_fpm_nl.c:1421,1
    - Dst: fpm_reconnect
      Src: /src/frr/zebra/dplane_fpm_nl.c:1423,1
    - Dst: fpm_reconnect
      Src: /src/frr/zebra/dplane_fpm_nl.c:1427,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:1432,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:1437,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:1441,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:1445,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1391
    functionDepth: 2
    functionLinenumber: 1391
    functionLinenumberEnd: 1448
    functionName: fpm_process_event
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - memset
    - EVENT_VAL
    - atomic_fetch_add_explicit
    - zlog_debug
    - EVENT_ARG
    - fpm_reconnect
    linkageType: ''
    returnType: void
    signature: void fpm_process_event(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_get_data
      Src: /src/frr/zebra/dplane_fpm_nl.c:1457,1
    - Dst: frr_pthread_new
      Src: /src/frr/zebra/dplane_fpm_nl.c:1458,1
    - Dst: assert
      Src: /src/frr/zebra/dplane_fpm_nl.c:1459,1
    - Dst: frr_pthread_run
      Src: /src/frr/zebra/dplane_fpm_nl.c:1459,1
    - Dst: stream_new
      Src: /src/frr/zebra/dplane_fpm_nl.c:1460,1
    - Dst: stream_new
      Src: /src/frr/zebra/dplane_fpm_nl.c:1461,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:1462,1
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:1466,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/dplane_fpm_nl.c:1467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts:
    - condition: (frr_pthread_run(fnc->fthread, NULL) == 0)
      pos:
        line_end: 1458
        line_start: 1458
        source_file: /src/frr/zebra/dplane_fpm_nl.c
    constantsTouched: []
    func_position:
      end: 1473
      start: 1453
    functionDepth: 1
    functionLinenumber: 1453
    functionLinenumberEnd: 1473
    functionName: fpm_nl_start
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - stream_new
    - frr_pthread_run
    - dplane_provider_get_data
    - pthread_mutex_init
    - dplane_ctx_q_init
    - frr_pthread_new
    - assert
    linkageType: ''
    returnType: int
    signature: int fpm_nl_start(struct zebra_dplane_provider *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1478,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1479,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1480,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1481,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1482,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1483,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1484,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1485,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1486,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/dplane_fpm_nl.c:1487,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:1488,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:1489,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/dplane_fpm_nl.c:1490,1
    - Dst: close
      Src: /src/frr/zebra/dplane_fpm_nl.c:1493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - fnc
    argTypes:
    - struct fpm_nl_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1475
    functionDepth: 1
    functionLinenumber: 1475
    functionLinenumberEnd: 1498
    functionName: fpm_nl_finish_early
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - close
    - EVENT_OFF
    - event_cancel_async
    linkageType: ''
    returnType: int
    signature: int fpm_nl_finish_early(struct fpm_nl_ctx *fnc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_pthread_stop
      Src: /src/frr/zebra/dplane_fpm_nl.c:1503,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/dplane_fpm_nl.c:1506,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/dplane_fpm_nl.c:1507,1
    - Dst: stream_free
      Src: /src/frr/zebra/dplane_fpm_nl.c:1508,1
    - Dst: stream_free
      Src: /src/frr/zebra/dplane_fpm_nl.c:1509,1
    - Dst: free
      Src: /src/frr/zebra/dplane_fpm_nl.c:1510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - fnc
    argTypes:
    - struct fpm_nl_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1500
    functionDepth: 1
    functionLinenumber: 1500
    functionLinenumberEnd: 1514
    functionName: fpm_nl_finish_late
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - stream_free
    - pthread_mutex_destroy
    - frr_pthread_stop
    - free
    linkageType: ''
    returnType: int
    signature: int fpm_nl_finish_late(struct fpm_nl_ctx *fnc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_get_data
      Src: /src/frr/zebra/dplane_fpm_nl.c:1520,1
    - Dst: fpm_nl_finish_early
      Src: /src/frr/zebra/dplane_fpm_nl.c:1522,1
    - Dst: fpm_nl_finish_late
      Src: /src/frr/zebra/dplane_fpm_nl.c:1524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - prov
    - early
    argTypes:
    - struct zebra_dplane_provider*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1516
    functionDepth: 2
    functionLinenumber: 1516
    functionLinenumberEnd: 1525
    functionName: fpm_nl_finish
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - fpm_nl_finish_late
    - dplane_provider_get_data
    - fpm_nl_finish_early
    linkageType: ''
    returnType: int
    signature: int fpm_nl_finish(struct zebra_dplane_provider *prov, bool early)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_get_data
      Src: /src/frr/zebra/dplane_fpm_nl.c:1534,1
    - Dst: dplane_provider_get_work_limit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1535,1
    - Dst: dplane_provider_dequeue_in_ctx
      Src: /src/frr/zebra/dplane_fpm_nl.c:1537,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1550,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/dplane_fpm_nl.c:1553,1
    - Dst: dplane_ctx_enqueue_tail
      Src: /src/frr/zebra/dplane_fpm_nl.c:1554,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1557,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/dplane_fpm_nl.c:1565,1
    - Dst: dplane_provider_enqueue_out_ctx
      Src: /src/frr/zebra/dplane_fpm_nl.c:1566,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1570,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1573,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/dplane_fpm_nl.c:1576,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/dplane_fpm_nl.c:1579,1
    - Dst: dplane_provider_work_ready
      Src: /src/frr/zebra/dplane_fpm_nl.c:1584,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1587
    functionName: fpm_nl_process
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - dplane_provider_get_work_limit
    - dplane_provider_enqueue_out_ctx
    - frr_with_mutex
    - atomic_store_explicit
    - dplane_provider_dequeue_in_ctx
    - atomic_fetch_add_explicit
    - dplane_ctx_set_status
    - atomic_load_explicit
    - event_add_timer
    - dplane_provider_work_ready
    - dplane_ctx_enqueue_tail
    - dplane_provider_get_data
    linkageType: ''
    returnType: int
    signature: int fpm_nl_process(struct zebra_dplane_provider *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/zebra/dplane_fpm_nl.c:1594,1
    - Dst: dplane_provider_register
      Src: /src/frr/zebra/dplane_fpm_nl.c:1595,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dplane_fpm_nl.c:1601,1
    - Dst: install_node
      Src: /src/frr/zebra/dplane_fpm_nl.c:1603,1
    - Dst: install_element
      Src: /src/frr/zebra/dplane_fpm_nl.c:1604,1
    - Dst: install_element
      Src: /src/frr/zebra/dplane_fpm_nl.c:1605,1
    - Dst: install_element
      Src: /src/frr/zebra/dplane_fpm_nl.c:1606,1
    - Dst: install_element
      Src: /src/frr/zebra/dplane_fpm_nl.c:1607,1
    - Dst: install_element
      Src: /src/frr/zebra/dplane_fpm_nl.c:1608,1
    - Dst: install_element
      Src: /src/frr/zebra/dplane_fpm_nl.c:1609,1
    - Dst: install_element
      Src: /src/frr/zebra/dplane_fpm_nl.c:1610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1589
    functionDepth: 1
    functionLinenumber: 1589
    functionLinenumberEnd: 1613
    functionName: fpm_nl_new
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - install_node
    - dplane_provider_register
    - zlog_debug
    - install_element
    - calloc
    linkageType: ''
    returnType: int
    signature: int fpm_nl_new(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/dplane_fpm_nl.c:1617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1615
    functionDepth: 1
    functionLinenumber: 1615
    functionLinenumberEnd: 1619
    functionName: fpm_nl_init
    functionSourceFile: /src/frr/zebra/dplane_fpm_nl.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int fpm_nl_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/zebra/zebra_snmp.c:131,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_snmp.c:136,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_snmp.c:142,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_snmp.c:142,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/zebra_snmp.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - v
    - objid
    - objid_len
    - exact
    - val_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 148
    functionName: ipFwNumber
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - route_top
    - route_next
    - zebra_vrf_table
    - RNODE_FOREACH_RE
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ipFwNumber(struct variable *v, oid objid[], size_t *objid_len,\n\t\t\t
      \  int exact, size_t *val_len,\n\t\t\t   WriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/zebra/zebra_snmp.c:159,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_snmp.c:164,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_snmp.c:170,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_snmp.c:170,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/zebra_snmp.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - v
    - objid
    - objid_len
    - exact
    - val_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 176
    functionName: ipCidrNumber
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - route_top
    - route_next
    - zebra_vrf_table
    - RNODE_FOREACH_RE
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ipCidrNumber(struct variable *v, oid objid[], size_t *objid_len,\n\t\t\t
      \    int exact, size_t *val_len,\n\t\t\t     WriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 191
    functionName: in_addr_cmp
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int in_addr_cmp(uint8_t *p1, uint8_t *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - p
    - num
    argTypes:
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 215
    functionName: in_addr_add
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int in_addr_add(uint8_t *p, int num)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 241
    functionName: proto_trans
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int proto_trans(int type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: prefix_cmp
      Src: /src/frr/zebra/zebra_snmp.c:254,1
    - Dst: prefix_cmp
      Src: /src/frr/zebra/zebra_snmp.c:256,1
    - Dst: proto_trans
      Src: /src/frr/zebra/zebra_snmp.c:262,1
    - Dst: proto_trans
      Src: /src/frr/zebra/zebra_snmp.c:263,1
    - Dst: in_addr_cmp
      Src: /src/frr/zebra/zebra_snmp.c:273,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - np2
    - re2
    - np
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    - struct route_node**
    - struct route_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 281
    functionName: check_replace
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - proto_trans
    - in_addr_cmp
    - prefix_cmp
    linkageType: ''
    returnType: void
    signature: "void check_replace(struct route_node *np2, struct route_entry *re2,\n\t\t\t
      \ struct route_node **np, struct route_entry **re)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_snmp.c:321,1
    - Dst: oid2in_addr
      Src: /src/frr/zebra/zebra_snmp.c:330,1
    - Dst: MIN
      Src: /src/frr/zebra/zebra_snmp.c:331,1
    - Dst: oid2in_addr
      Src: /src/frr/zebra/zebra_snmp.c:340,1
    - Dst: MIN
      Src: /src/frr/zebra/zebra_snmp.c:341,1
    - Dst: in_addr_add
      Src: /src/frr/zebra/zebra_snmp.c:346,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_snmp.c:355,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_snmp.c:355,1
    - Dst: in_addr_cmp
      Src: /src/frr/zebra/zebra_snmp.c:356,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/zebra_snmp.c:358,1
    - Dst: in_addr_cmp
      Src: /src/frr/zebra/zebra_snmp.c:359,1
    - Dst: proto_trans
      Src: /src/frr/zebra/zebra_snmp.c:364,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_snmp.c:374,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_snmp.c:374,1
    - Dst: in_addr_cmp
      Src: /src/frr/zebra/zebra_snmp.c:377,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/zebra_snmp.c:378,1
    - Dst: check_replace
      Src: /src/frr/zebra/zebra_snmp.c:379,1
    - Dst: in_addr_cmp
      Src: /src/frr/zebra/zebra_snmp.c:382,1
    - Dst: proto_trans
      Src: /src/frr/zebra/zebra_snmp.c:387,1
    - Dst: in_addr_cmp
      Src: /src/frr/zebra/zebra_snmp.c:393,1
    - Dst: check_replace
      Src: /src/frr/zebra/zebra_snmp.c:398,1
    - Dst: proto_trans
      Src: /src/frr/zebra/zebra_snmp.c:407,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 73
    argCount: 6
    argNames:
    - v
    - objid
    - objid_len
    - exact
    - np
    - re
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - struct route_node**
    - struct route_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 429
    functionName: get_fwtable_route_node
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - MIN
    - oid2in_addr
    - proto_trans
    - route_top
    - check_replace
    - route_next
    - zebra_vrf_table
    - in_addr_add
    - in_addr_cmp
    - RNODE_FOREACH_RE
    linkageType: ''
    returnType: void
    signature: "void get_fwtable_route_node(struct variable *v, oid objid[],\n\t\t\t\t
      \  size_t *objid_len, int exact,\n\t\t\t\t   struct route_node **np,\n\t\t\t\t
      \  struct route_entry **re)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: proto_trans
      Src: /src/frr/zebra/zebra_snmp.c:387,1
    - Dst: in_addr_cmp
      Src: /src/frr/zebra/zebra_snmp.c:393,1
    - Dst: check_replace
      Src: /src/frr/zebra/zebra_snmp.c:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 399
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 4
    functionsReached:
    - proto_trans
    - in_addr_cmp
    - check_replace
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (np2, re2)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/zebra/zebra_snmp.c:442,1
    - Dst: get_fwtable_route_node
      Src: /src/frr/zebra/zebra_snmp.c:446,1
    - Dst: masklen2ip
      Src: /src/frr/zebra/zebra_snmp.c:459,1
    - Dst: proto_trans
      Src: /src/frr/zebra/zebra_snmp.c:480,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 74
    argCount: 6
    argNames:
    - v
    - objid
    - objid_len
    - exact
    - val_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 520
    functionName: ipFwTable
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - proto_trans
    - smux_header_table
    - get_fwtable_route_node
    - masklen2ip
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ipFwTable(struct variable *v, oid objid[], size_t *objid_len,\n\t\t\t
      \ int exact, size_t *val_len,\n\t\t\t  WriteMethod **write_method)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/zebra/zebra_snmp.c:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - v
    - objid
    - objid_len
    - exact
    - val_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 537
    functionName: ipCidrTable
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ipCidrTable(struct variable *v, oid objid[], size_t *objid_len,\n\t\t\t
      \   int exact, size_t *val_len,\n\t\t\t    WriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smux_init
      Src: /src/frr/zebra/zebra_snmp.c:541,1
    - Dst: REGISTER_MIB
      Src: /src/frr/zebra/zebra_snmp.c:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 544
    functionName: zebra_snmp_init
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - smux_init
    - REGISTER_MIB
    linkageType: ''
    returnType: int
    signature: int zebra_snmp_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_snmp.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 550
    functionName: zebra_snmp_module_init
    functionSourceFile: /src/frr/zebra/zebra_snmp.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int zebra_snmp_module_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_ptm.c:102,1
    - Dst: calloc
      Src: /src/frr/zebra/zebra_ptm.c:104,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:106,1
    - Dst: calloc
      Src: /src/frr/zebra/zebra_ptm.c:110,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:112,1
    - Dst: free
      Src: /src/frr/zebra/zebra_ptm.c:113,1
    - Dst: getpid
      Src: /src/frr/zebra/zebra_ptm.c:117,1
    - Dst: zebra_ptm_install_commands
      Src: /src/frr/zebra/zebra_ptm.c:118,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:120,1
    - Dst: ptm_lib_register
      Src: /src/frr/zebra/zebra_ptm.c:121,1
    - Dst: buffer_new
      Src: /src/frr/zebra/zebra_ptm.c:123,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_ptm.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 130
    functionName: zebra_ptm_init
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - buffer_new
    - memset
    - snprintf
    - hook_register
    - getpid
    - free
    - zlog_debug
    - ptm_lib_register
    - zebra_ptm_install_commands
    - calloc
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_flush_all
      Src: /src/frr/zebra/zebra_ptm.c:134,1
    - Dst: free
      Src: /src/frr/zebra/zebra_ptm.c:136,1
    - Dst: free
      Src: /src/frr/zebra/zebra_ptm.c:139,1
    - Dst: free
      Src: /src/frr/zebra/zebra_ptm.c:142,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_ptm.c:145,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_ptm.c:146,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_ptm.c:147,1
    - Dst: buffer_free
      Src: /src/frr/zebra/zebra_ptm.c:150,1
    - Dst: close
      Src: /src/frr/zebra/zebra_ptm.c:153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 154
    functionName: zebra_ptm_finish
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - buffer_free
    - free
    - close
    - EVENT_OFF
    - buffer_flush_all
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_finish(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_flush_available
      Src: /src/frr/zebra/zebra_ptm.c:165,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_ptm.c:167,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_ptm.c:168,1
    - Dst: close
      Src: /src/frr/zebra/zebra_ptm.c:169,1
    - Dst: zebra_ptm_reset_status
      Src: /src/frr/zebra/zebra_ptm.c:171,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:173,1
    - Dst: event_add_write
      Src: /src/frr/zebra/zebra_ptm.c:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 184
    functionName: zebra_ptm_flush_messages
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - zebra_ptm_reset_status
    - event_add_write
    - buffer_flush_available
    - close
    - safe_strerror
    - event_add_timer
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_flush_messages(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: buffer_write
      Src: /src/frr/zebra/zebra_ptm.c:189,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_ptm.c:191,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_ptm.c:192,1
    - Dst: close
      Src: /src/frr/zebra/zebra_ptm.c:193,1
    - Dst: zebra_ptm_reset_status
      Src: /src/frr/zebra/zebra_ptm.c:195,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:197,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_ptm.c:201,1
    - Dst: event_add_write
      Src: /src/frr/zebra/zebra_ptm.c:204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 210
    functionName: zebra_ptm_send_message
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - zebra_ptm_reset_status
    - event_add_write
    - close
    - safe_strerror
    - EVENT_OFF
    - event_add_timer
    - flog_err_sys
    - buffer_write
    linkageType: ''
    returnType: int
    signature: int zebra_ptm_send_message(char *data, int size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ptm_socket_init
      Src: /src/frr/zebra/zebra_ptm.c:217,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_ptm.c:224,1
    - Dst: zebra_bfd_peer_replay_req
      Src: /src/frr/zebra/zebra_ptm.c:226,1
    - Dst: zebra_ptm_send_status_req
      Src: /src/frr/zebra/zebra_ptm.c:228,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:236,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 241
    functionName: zebra_ptm_connect
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - zebra_ptm_socket_init
    - event_add_read
    - zebra_bfd_peer_replay_req
    - zebra_ptm_send_status_req
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_connect(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_ptm.c:352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 355
    functionName: zebra_ptm_write
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_write(struct vty *vty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/zebra_ptm.c:365,1
    - Dst: set_nonblocking
      Src: /src/frr/zebra/zebra_ptm.c:368,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:370,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_ptm.c:371,1
    - Dst: close
      Src: /src/frr/zebra/zebra_ptm.c:372,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_ptm.c:377,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_ptm.c:379,1
    - Dst: connect
      Src: /src/frr/zebra/zebra_ptm.c:382,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:387,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_ptm.c:389,1
    - Dst: close
      Src: /src/frr/zebra/zebra_ptm.c:390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 395
    functionName: zebra_ptm_socket_init
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 1
    functionsReached:
    - memset
    - connect
    - socket
    - close
    - zlog_debug
    - safe_strerror
    - set_nonblocking
    - memcpy
    linkageType: ''
    returnType: int
    signature: int zebra_ptm_socket_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/zebra/zebra_ptm.c:399,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_ptm.c:400,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_ptm.c:401,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_ptm.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 403
    functionName: zebra_ptm_install_commands
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_install_commands(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:414,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:416,1
    - Dst: bfd_get_status_str
      Src: /src/frr/zebra/zebra_ptm.c:419,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_ptm.c:421,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:423,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:425,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:428,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_ptm.c:430,1
    - Dst: bfd_get_status_str
      Src: /src/frr/zebra/zebra_ptm.c:431,1
    - Dst: zebra_interface_bfd_update
      Src: /src/frr/zebra/zebra_ptm.c:435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - ifp
    - dp
    - sp
    - status
    - vrf_id
    argTypes:
    - struct interface*
    - struct prefix*
    - struct prefix*
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 436
    functionName: if_bfd_session_update
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - bfd_get_status_str
    - inet_ntop
    - zlog_debug
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - zebra_interface_bfd_update
    linkageType: ''
    returnType: void
    signature: "void if_bfd_session_update(struct interface *ifp, struct prefix *dp,\n\t\t\t\t
      \ struct prefix *sp, int status,\n\t\t\t\t  vrf_id_t vrf_id)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ptm_lib_find_key_in_msg
      Src: /src/frr/zebra/zebra_ptm.c:449,1
    - Dst: ptm_lib_find_key_in_msg
      Src: /src/frr/zebra/zebra_ptm.c:455,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:458,1
    - Dst: ptm_lib_find_key_in_msg
      Src: /src/frr/zebra/zebra_ptm.c:463,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:466,1
    - Dst: ptm_lib_find_key_in_msg
      Src: /src/frr/zebra/zebra_ptm.c:471,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:474,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:480,1
    - Dst: str2prefix
      Src: /src/frr/zebra/zebra_ptm.c:485,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_ptm.c:486,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_ptm.c:491,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_ptm.c:492,1
    - Dst: str2prefix
      Src: /src/frr/zebra/zebra_ptm.c:493,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_ptm.c:494,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_ptm.c:501,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/zebra_ptm.c:506,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_ptm.c:513,1
    - Dst: if_bfd_session_update
      Src: /src/frr/zebra/zebra_ptm.c:514,1
    - Dst: if_bfd_session_update
      Src: /src/frr/zebra/zebra_ptm.c:517,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 3
    argNames:
    - arg
    - in_ctxt
    - ifp
    argTypes:
    - void*
    - void*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 522
    functionName: zebra_ptm_handle_bfd_msg
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - ptm_lib_find_key_in_msg
    - memset
    - strcmp
    - vrf_lookup_by_name
    - zlog_debug
    - flog_err
    - str2prefix
    - if_bfd_session_update
    linkageType: ''
    returnType: int
    signature: "int zebra_ptm_handle_bfd_msg(void *arg, void *in_ctxt,\n\t\t\t\t    struct
      interface *ifp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:530,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_ptm.c:533,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/zebra_ptm.c:539,1
    - Dst: if_up
      Src: /src/frr/zebra/zebra_ptm.c:541,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_ptm.c:542,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/zebra_ptm.c:545,1
    - Dst: if_down
      Src: /src/frr/zebra/zebra_ptm.c:546,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 4
    argNames:
    - arg
    - in_ctxt
    - ifp
    - cbl_str
    argTypes:
    - void*
    - void*
    - struct interface*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 550
    functionName: zebra_ptm_handle_cbl_msg
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - if_is_no_ptm_operative
    - strcmp
    - zlog_debug
    - if_down
    - if_up
    linkageType: ''
    returnType: int
    signature: "int zebra_ptm_handle_cbl_msg(void *arg, void *in_ctxt,\n\t\t\t\t    struct
      interface *ifp, char *cbl_str)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ptm_lib_find_key_in_msg
      Src: /src/frr/zebra/zebra_ptm.c:576,1
    - Dst: ptm_lib_find_key_in_msg
      Src: /src/frr/zebra/zebra_ptm.c:584,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:587,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_ptm.c:592,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_ptm.c:596,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/zebra/zebra_ptm.c:597,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_ptm.c:600,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_ptm.c:606,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_ptm.c:612,1
    - Dst: ptm_lib_find_key_in_msg
      Src: /src/frr/zebra/zebra_ptm.c:619,1
    - Dst: zebra_ptm_handle_bfd_msg
      Src: /src/frr/zebra/zebra_ptm.c:622,1
    - Dst: zebra_ptm_handle_cbl_msg
      Src: /src/frr/zebra/zebra_ptm.c:625,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - arg
    - in_ctxt
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 569
    functionDepth: 3
    functionLinenumber: 569
    functionLinenumberEnd: 631
    functionName: zebra_ptm_handle_msg_cb
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - ptm_lib_find_key_in_msg
    - vrf_is_backend_netns
    - zebra_ptm_handle_bfd_msg
    - flog_warn
    - strcmp
    - zebra_ptm_handle_cbl_msg
    - if_lookup_by_name_vrf
    - zlog_debug
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int zebra_ptm_handle_msg_cb(void *arg, void *in_ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/zebra/zebra_ptm.c:639,1
    - Dst: ptm_lib_process_msg
      Src: /src/frr/zebra/zebra_ptm.c:646,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_ptm.c:652,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_ptm.c:654,1
    - Dst: close
      Src: /src/frr/zebra/zebra_ptm.c:656,1
    - Dst: zebra_ptm_reset_status
      Src: /src/frr/zebra/zebra_ptm.c:658,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:660,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_ptm.c:666,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 668
    functionName: zebra_ptm_sock_read
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - zebra_ptm_reset_status
    - EVENT_FD
    - ptm_lib_process_msg
    - event_add_read
    - close
    - safe_strerror
    - event_add_timer
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_sock_read(struct event *thread)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:696,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:697,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:701,1
    - Dst: ptm_lib_init_msg
      Src: /src/frr/zebra/zebra_ptm.c:706,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:707,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:708,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:709,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:710,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:711,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_ptm.c:716,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:717,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:718,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_ptm.c:721,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:728,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:730,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:731,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:734,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:735,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_ptm.c:739,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:740,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:741,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_ptm.c:743,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:744,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:745,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_ptm.c:747,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:748,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:749,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_ptm.c:752,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:754,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:755,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_ptm.c:757,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:764,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:766,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:767,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:770,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:771,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_ptm.c:775,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:776,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:777,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_ptm.c:780,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:781,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_ptm.c:783,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_ptm.c:786,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:793,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:795,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:797,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:801,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:803,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_ptm.c:808,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:809,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:812,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_ptm.c:815,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:816,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:817,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:820,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:821,1
    - Dst: ptm_lib_complete_msg
      Src: /src/frr/zebra/zebra_ptm.c:824,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:827,1
    - Dst: zebra_ptm_send_message
      Src: /src/frr/zebra/zebra_ptm.c:829,1
    - Dst: ptm_lib_cleanup_msg
      Src: /src/frr/zebra/zebra_ptm.c:834,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 95
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 835
    functionName: zebra_ptm_bfd_dst_register
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - ptm_lib_init_msg
    - snprintf
    - ptm_lib_append_msg
    - zvrf_id
    - zvrf_name
    - STREAM_GETW
    - zlog_debug
    - inet_ntop
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - ptm_lib_complete_msg
    - event_add_timer
    - zebra_ptm_send_message
    - zebra_route_string
    - ptm_lib_cleanup_msg
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_bfd_dst_register(ZAPI_HANDLER_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:855,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:856,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:860,1
    - Dst: ptm_lib_init_msg
      Src: /src/frr/zebra/zebra_ptm.c:865,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:867,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:868,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:870,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:871,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:872,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_ptm.c:877,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:878,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:879,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_ptm.c:882,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:889,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:891,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:893,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:894,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_ptm.c:897,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:899,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:900,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_ptm.c:903,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:910,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:912,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:914,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:915,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_ptm.c:918,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:919,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_ptm.c:921,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_ptm.c:924,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:931,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:933,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:935,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_ptm.c:939,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:941,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_ptm.c:947,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_ptm.c:948,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:951,1
    - Dst: ptm_lib_complete_msg
      Src: /src/frr/zebra/zebra_ptm.c:955,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:957,1
    - Dst: zebra_ptm_send_message
      Src: /src/frr/zebra/zebra_ptm.c:960,1
    - Dst: ptm_lib_cleanup_msg
      Src: /src/frr/zebra/zebra_ptm.c:965,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 838
    functionDepth: 2
    functionLinenumber: 838
    functionLinenumberEnd: 966
    functionName: zebra_ptm_bfd_dst_deregister
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - ptm_lib_init_msg
    - snprintf
    - ptm_lib_append_msg
    - zvrf_id
    - zvrf_name
    - STREAM_GETW
    - zlog_debug
    - inet_ntop
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - ptm_lib_complete_msg
    - event_add_timer
    - zebra_ptm_send_message
    - zebra_route_string
    - ptm_lib_cleanup_msg
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_bfd_dst_deregister(ZAPI_HANDLER_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:980,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:981,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_ptm.c:984,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:988,1
    - Dst: ptm_lib_init_msg
      Src: /src/frr/zebra/zebra_ptm.c:993,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:995,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:996,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:998,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:999,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:1000,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:1003,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:1004,1
    - Dst: ptm_lib_complete_msg
      Src: /src/frr/zebra/zebra_ptm.c:1007,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1010,1
    - Dst: zebra_ptm_send_message
      Src: /src/frr/zebra/zebra_ptm.c:1012,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_ptm.c:1014,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 969
    functionDepth: 2
    functionLinenumber: 969
    functionLinenumberEnd: 1028
    functionName: zebra_ptm_bfd_client_register
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - ptm_lib_init_msg
    - snprintf
    - ptm_lib_append_msg
    - zlog_debug
    - SET_FLAG
    - ptm_lib_complete_msg
    - STREAM_GETL
    - event_add_timer
    - zebra_ptm_send_message
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_bfd_client_register(ZAPI_HANDLER_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_BFD_ENABLED_PROTOCOL
      Src: /src/frr/zebra/zebra_ptm.c:1038,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1042,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:1043,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_ptm.c:1047,1
    - Dst: ptm_lib_init_msg
      Src: /src/frr/zebra/zebra_ptm.c:1052,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:1054,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:1056,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_ptm.c:1058,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:1058,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:1059,1
    - Dst: ptm_lib_complete_msg
      Src: /src/frr/zebra/zebra_ptm.c:1062,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1065,1
    - Dst: zebra_ptm_send_message
      Src: /src/frr/zebra/zebra_ptm.c:1068,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_ptm.c:1069,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1072
    functionName: zebra_ptm_bfd_client_deregister
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - ptm_lib_init_msg
    - snprintf
    - ptm_lib_append_msg
    - zlog_debug
    - UNSET_FLAG
    - ptm_lib_complete_msg
    - IS_BFD_ENABLED_PROTOCOL
    - zebra_ptm_send_message
    - zebra_route_string
    - event_add_timer
    linkageType: ''
    returnType: int
    signature: int zebra_ptm_bfd_client_deregister(struct zserv *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1077
    functionName: zebra_ptm_get_enable_state
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_ptm_get_enable_state(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1093
    functionName: zebra_ptm_get_status_str
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zebra_ptm_get_status_str(int status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ptm_get_status_str
      Src: /src/frr/zebra/zebra_ptm.c:1101,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_ptm.c:1106,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_ptm.c:1108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - json
    - ifp
    argTypes:
    - struct vty*
    - json_object*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1109
    functionName: zebra_ptm_show_status
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - zebra_ptm_get_status_str
    - json_object_string_add
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void zebra_ptm_show_status(struct vty *vty, json_object *json,\n\t\t\t
      \  struct interface *ifp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ptm_lib_init_msg
      Src: /src/frr/zebra/zebra_ptm.c:1117,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/zebra/zebra_ptm.c:1119,1
    - Dst: ptm_lib_complete_msg
      Src: /src/frr/zebra/zebra_ptm.c:1121,1
    - Dst: zebra_ptm_send_message
      Src: /src/frr/zebra/zebra_ptm.c:1123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1111
    functionDepth: 2
    functionLinenumber: 1111
    functionLinenumberEnd: 1125
    functionName: zebra_ptm_send_status_req
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 1
    functionsReached:
    - ptm_lib_init_msg
    - zebra_ptm_send_message
    - ptm_lib_complete_msg
    - ptm_lib_append_msg
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_send_status_req(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_ptm.c:1133,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_ptm.c:1137,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_ptm.c:1145,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1147,1
    - Dst: if_up
      Src: /src/frr/zebra/zebra_ptm.c:1150,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ptm_disable
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1154
    functionName: zebra_ptm_reset_status
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 3
    functionsReached:
    - if_up
    - zlog_debug
    - RB_FOREACH
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_reset_status(int ptm_disable)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_ptm.c:1137,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_ptm.c:1145,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1147,1
    - Dst: if_up
      Src: /src/frr/zebra/zebra_ptm.c:1150,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1134
    functionDepth: 1
    functionLinenumber: 1134
    functionLinenumberEnd: 1153
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 16
    functionsReached:
    - zlog_debug
    - if_is_operative
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zebra_ifp
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1156
    functionDepth: 0
    functionLinenumber: 1156
    functionLinenumberEnd: 1159
    functionName: zebra_ptm_if_init
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_if_init(struct zebra_if *zebra_ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - zebra_ifp
    argTypes:
    - struct interface*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1161
    functionDepth: 0
    functionLinenumber: 1161
    functionLinenumberEnd: 1166
    functionName: zebra_ptm_if_set_ptm_state
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zebra_ptm_if_set_ptm_state(struct interface *ifp,\n\t\t\t\tstruct
      zebra_if *zebra_ifp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_ptm.c:1171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - zebra_ifp
    argTypes:
    - struct vty*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1168
    functionDepth: 1
    functionLinenumber: 1168
    functionLinenumberEnd: 1172
    functionName: zebra_ptm_if_write
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_if_write(struct vty *vty, struct zebra_if *zebra_ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/zebra/zebra_ptm.c:1214,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_ptm.c:1216,1
    - Dst: pp_lookup_byzs
      Src: /src/frr/zebra/zebra_ptm.c:1222,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_ptm.c:1227,1
    - Dst: TAILQ_INSERT_HEAD
      Src: /src/frr/zebra/zebra_ptm.c:1231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - pid
    - zs
    argTypes:
    - pid_t
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1208
    functionDepth: 1
    functionLinenumber: 1208
    functionLinenumberEnd: 1234
    functionName: pp_new
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - zlog_err
    - pp_lookup_byzs
    - TAILQ_INSERT_HEAD
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct ptm_process
    signature: struct ptm_process *pp_new(pid_t pid, struct zserv *zs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/zebra/zebra_ptm.c:1240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - zs
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1236
    functionDepth: 0
    functionLinenumber: 1236
    functionLinenumberEnd: 1248
    functionName: pp_lookup_byzs
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 1
    functionsReached:
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct ptm_process
    signature: struct ptm_process *pp_lookup_byzs(struct zserv *zs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_REMOVE
      Src: /src/frr/zebra/zebra_ptm.c:1255,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_ptm.c:1256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pp
    argTypes:
    - struct ptm_process*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1250
    functionDepth: 0
    functionLinenumber: 1250
    functionLinenumberEnd: 1257
    functionName: pp_free
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - XFREE
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: void pp_free(struct ptm_process *pp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/zebra/zebra_ptm.c:1263,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/zebra/zebra_ptm.c:1264,1
    - Dst: pp_free
      Src: /src/frr/zebra/zebra_ptm.c:1265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1267
    functionName: pp_free_all
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - TAILQ_EMPTY
    - pp_free
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void pp_free_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_dup
      Src: /src/frr/zebra/zebra_ptm.c:1280,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_ptm.c:1283,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_ptm.c:1287,1
    - Dst: stream_dup
      Src: /src/frr/zebra/zebra_ptm.c:1290,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_ptm.c:1293,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_ptm.c:1294,1
    - Dst: zebra_ptm_send_clients
      Src: /src/frr/zebra/zebra_ptm.c:1297,1
    - Dst: stream_dup
      Src: /src/frr/zebra/zebra_ptm.c:1304,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_ptm.c:1307,1
    - Dst: IS_BFD_ENABLED_PROTOCOL
      Src: /src/frr/zebra/zebra_ptm.c:1308,1
    - Dst: stream_dup
      Src: /src/frr/zebra/zebra_ptm.c:1314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1273
    functionDepth: 1
    functionLinenumber: 1273
    functionLinenumberEnd: 1315
    functionName: zebra_ptm_send_bfdd
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - stream_free
    - ALL_LIST_ELEMENTS_RO
    - zserv_send_message
    - zebra_ptm_send_clients
    - IS_BFD_ENABLED_PROTOCOL
    - stream_dup
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_send_bfdd(struct stream *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_BFD_ENABLED_PROTOCOL
      Src: /src/frr/zebra/zebra_ptm.c:1326,1
    - Dst: pp_lookup_byzs
      Src: /src/frr/zebra/zebra_ptm.c:1330,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_ptm.c:1332,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_ptm.c:1338,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1340,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_ptm.c:1349,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_ptm.c:1350,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_ptm.c:1353,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_ptm.c:1356,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_ptm.c:1356,1
    - Dst: zebra_ptm_send_bfdd
      Src: /src/frr/zebra/zebra_ptm.c:1358,1
    - Dst: pp_free
      Src: /src/frr/zebra/zebra_ptm.c:1360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - zs
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1321
    functionDepth: 2
    functionLinenumber: 1321
    functionLinenumberEnd: 1363
    functionName: _zebra_ptm_bfd_client_deregister
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - stream_new
    - zclient_create_header
    - zebra_ptm_send_bfdd
    - zlog_err
    - pp_lookup_byzs
    - stream_putw_at
    - stream_get_endp
    - zlog_debug
    - pp_free
    - IS_BFD_ENABLED_PROTOCOL
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int _zebra_ptm_bfd_client_deregister(struct zserv *zs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_INIT
      Src: /src/frr/zebra/zebra_ptm.c:1368,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_ptm.c:1375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1365
    functionDepth: 1
    functionLinenumber: 1365
    functionLinenumberEnd: 1376
    functionName: zebra_ptm_init
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - hook_register
    - TAILQ_INIT
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_unregister
      Src: /src/frr/zebra/zebra_ptm.c:1381,1
    - Dst: pp_free_all
      Src: /src/frr/zebra/zebra_ptm.c:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1378
    functionDepth: 2
    functionLinenumber: 1378
    functionLinenumberEnd: 1383
    functionName: zebra_ptm_finish
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - hook_unregister
    - pp_free_all
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_finish(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_ptm.c:1397,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_ptm.c:1398,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_ptm.c:1399,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zebra_ptm.c:1401,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/zebra/zebra_ptm.c:1401,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_ptm.c:1402,1
    - Dst: stream_get_from
      Src: /src/frr/zebra/zebra_ptm.c:1407,1
    - Dst: stream_get_getp
      Src: /src/frr/zebra/zebra_ptm.c:1407,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zebra_ptm.c:1407,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_ptm.c:1408,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zebra_ptm.c:1408,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_ptm.c:1411,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zebra_ptm.c:1411,1
    - Dst: zebra_ptm_send_bfdd
      Src: /src/frr/zebra/zebra_ptm.c:1413,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_ptm.c:1417,1
    - Dst: pp_new
      Src: /src/frr/zebra/zebra_ptm.c:1418,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_ptm.c:1424,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_ptm.c:1425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - zs
    - zvrf
    - msg
    - command
    argTypes:
    - struct zserv*
    - struct zebra_vrf*
    - struct stream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1389
    functionDepth: 2
    functionLinenumber: 1389
    functionLinenumberEnd: 1426
    functionName: _zebra_ptm_reroute
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_new
    - zclient_create_header
    - STREAM_READABLE
    - stream_put
    - zebra_ptm_send_bfdd
    - STREAM_WRITEABLE
    - pp_new
    - stream_putw_at
    - zlog_err
    - zlog_warn
    - stream_get_from
    - STREAM_GETL
    - stream_get_getp
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void _zebra_ptm_reroute(struct zserv *zs, struct zebra_vrf *zvrf,\n\t\t\t
      \      struct stream *msg, uint32_t command)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1431,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:1432,1
    - Dst: _zebra_ptm_reroute
      Src: /src/frr/zebra/zebra_ptm.c:1434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1428
    functionDepth: 3
    functionLinenumber: 1428
    functionLinenumberEnd: 1435
    functionName: zebra_ptm_bfd_dst_register
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - _zebra_ptm_reroute
    - zlog_debug
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_bfd_dst_register(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1440,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:1441,1
    - Dst: _zebra_ptm_reroute
      Src: /src/frr/zebra/zebra_ptm.c:1443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1437
    functionDepth: 3
    functionLinenumber: 1437
    functionLinenumberEnd: 1444
    functionName: zebra_ptm_bfd_dst_deregister
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - _zebra_ptm_reroute
    - zlog_debug
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_bfd_dst_deregister(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1449,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:1450,1
    - Dst: _zebra_ptm_reroute
      Src: /src/frr/zebra/zebra_ptm.c:1452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1446
    functionDepth: 3
    functionLinenumber: 1446
    functionLinenumberEnd: 1453
    functionName: zebra_ptm_bfd_client_register
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - _zebra_ptm_reroute
    - zlog_debug
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_bfd_client_register(ZAPI_HANDLER_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1468,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_ptm.c:1469,1
    - Dst: _zebra_ptm_reroute
      Src: /src/frr/zebra/zebra_ptm.c:1476,1
    - Dst: stream_getl2
      Src: /src/frr/zebra/zebra_ptm.c:1481,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_ptm.c:1482,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_ptm.c:1491,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_ptm.c:1493,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_ptm.c:1501,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_ptm.c:1503,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_ptm.c:1503,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_ptm.c:1508,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_ptm.c:1508,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_ptm.c:1511,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_ptm.c:1511,1
    - Dst: zebra_ptm_send_clients
      Src: /src/frr/zebra/zebra_ptm.c:1513,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1455
    functionDepth: 3
    functionLinenumber: 1455
    functionLinenumberEnd: 1514
    functionName: zebra_ptm_bfd_dst_replay
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached:
    - stream_new
    - zclient_create_header
    - zvrf_id
    - _zebra_ptm_reroute
    - zlog_err
    - stream_putw_at
    - stream_get_endp
    - zlog_debug
    - stream_getl2
    - zebra_ptm_send_clients
    - zebra_route_string
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_bfd_dst_replay(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zifp
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1519
    functionDepth: 0
    functionLinenumber: 1519
    functionLinenumberEnd: 1522
    functionName: zebra_ptm_if_init
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_if_init(struct zebra_if *zifp __attribute__((__unused__)))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1524
    functionDepth: 0
    functionLinenumber: 1524
    functionLinenumberEnd: 1527
    functionName: zebra_ptm_get_enable_state
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_ptm_get_enable_state(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - vty
    - json
    - ifp
    argTypes:
    - struct vty*
    - json_object*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1529
    functionDepth: 0
    functionLinenumber: 1529
    functionLinenumberEnd: 1534
    functionName: zebra_ptm_show_status
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zebra_ptm_show_status(struct vty *vty __attribute__((__unused__)),\n\t\t\t
      \  json_object *json __attribute__((__unused__)),\n\t\t\t   struct interface
      *ifp __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1539
    functionName: zebra_ptm_write
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_ptm_write(struct vty *vty __attribute__((__unused__)))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - vty
    - zifp
    argTypes:
    - struct vty*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1545
    functionName: zebra_ptm_if_write
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zebra_ptm_if_write(struct vty *vty __attribute__((__unused__)),\n\t\t\tstruct
      zebra_if *zifp __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - i
    - zi
    argTypes:
    - struct interface*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1546
    functionDepth: 0
    functionLinenumber: 1546
    functionLinenumberEnd: 1550
    functionName: zebra_ptm_if_set_ptm_state
    functionSourceFile: /src/frr/zebra/zebra_ptm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zebra_ptm_if_set_ptm_state(struct interface *i __attribute__((__unused__)),\n\t\t\t\tstruct
      zebra_if *zi __attribute__((__unused__)))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mlag.c:54,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:56,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:57,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:58,1
    - Dst: stream_fifo_push_safe
      Src: /src/frr/zebra/zebra_mlag.c:59,1
    - Dst: zebra_mlag_signal_write_thread
      Src: /src/frr/zebra/zebra_mlag.c:60,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: zebra_mlag_send_register
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - stream_new
    - stream_fifo_push_safe
    - stream_putw
    - zlog_debug
    - zebra_mlag_signal_write_thread
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_send_register(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mlag.c:75,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:77,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:78,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:79,1
    - Dst: stream_fifo_push_safe
      Src: /src/frr/zebra/zebra_mlag.c:80,1
    - Dst: zebra_mlag_signal_write_thread
      Src: /src/frr/zebra/zebra_mlag.c:81,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 86
    functionName: zebra_mlag_send_deregister
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - stream_new
    - stream_fifo_push_safe
    - stream_putw
    - zlog_debug
    - zebra_mlag_signal_write_thread
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_send_deregister(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mlag.c:98,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:102,1
    - Dst: zebra_mlag_protobuf_decode_message
      Src: /src/frr/zebra/zebra_mlag.c:103,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_mlag.c:107,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_mlag.c:108,1
    - Dst: stream_putl_at
      Src: /src/frr/zebra/zebra_mlag.c:116,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_mlag.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 119
    functionName: zebra_mlag_process_mlag_data
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_new
    - zebra_mlag_protobuf_decode_message
    - zlog_err
    - event_add_event
    - stream_putl_at
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_process_mlag_data(uint8_t *data, uint32_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_count_safe
      Src: /src/frr/zebra/zebra_mlag.c:143,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:145,1
    - Dst: MIN
      Src: /src/frr/zebra/zebra_mlag.c:148,1
    - Dst: stream_fifo_pop_safe
      Src: /src/frr/zebra/zebra_mlag.c:151,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:153,1
    - Dst: zebra_mlag_protobuf_encode_client_data
      Src: /src/frr/zebra/zebra_mlag.c:161,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_mlag.c:167,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_mlag.c:176,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_mlag.c:182,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:186,1
    - Dst: zebra_mlag_signal_write_thread
      Src: /src/frr/zebra/zebra_mlag.c:195,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 196
    functionName: zebra_mlag_client_msg_handler
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - MIN
    - stream_free
    - hook_call
    - stream_fifo_count_safe
    - stream_fifo_pop_safe
    - zlog_debug
    - zebra_mlag_signal_write_thread
    - zebra_mlag_protobuf_encode_client_data
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_client_msg_handler(struct event *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_mlag_publish_process_state
      Src: /src/frr/zebra/zebra_mlag.c:207,1
    - Dst: zebra_mlag_send_register
      Src: /src/frr/zebra/zebra_mlag.c:208,1
    - Dst: zebra_mlag_publish_process_state
      Src: /src/frr/zebra/zebra_mlag.c:211,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_mlag.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum zebra_mlag_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 214
    functionName: zebra_mlag_handle_process_state
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - zebra_mlag_publish_process_state
    - zebra_mlag_send_register
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_handle_process_state(enum zebra_mlag_state state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:233,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_mlag.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 244
    functionName: zebra_mlag_signal_write_thread
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 3
    functionsReached:
    - zlog_debug
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_signal_write_thread(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:263,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mlag.c:269,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_mlag.c:270,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_mlag.c:271,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mlag.c:279,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:280,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_mlag.c:281,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_mlag.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - client
    - msg_type
    argTypes:
    - struct zserv*
    - zebra_message_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 284
    functionName: zebra_mlag_publish_process_state
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 1
    functionsReached:
    - stream_new
    - zclient_create_header
    - zserv_send_message
    - zlog_debug
    - event_add_event
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void zebra_mlag_publish_process_state(struct zserv *client,\n\t\t\t\t\t
      \    zebra_message_types_t msg_type)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_mlag.c:297,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_mlag.c:307,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:309,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_mlag.c:314,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mlag.c:317,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:323,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mlag.c:327,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_mlag.c:328,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_mlag.c:330,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_mlag.c:336,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_mlag.c:342,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_mlag.c:344,1
    - Dst: zebra_mlag_spawn_pthread
      Src: /src/frr/zebra/zebra_mlag.c:353,1
    - Dst: frr_pthread_new
      Src: /src/frr/zebra/zebra_mlag.c:365,1
    - Dst: zebra_mlag_signal_write_thread
      Src: /src/frr/zebra/zebra_mlag.c:371,1
    - Dst: frr_pthread_run
      Src: /src/frr/zebra/zebra_mlag.c:373,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:387,1
    - Dst: frr_pthread_stop
      Src: /src/frr/zebra/zebra_mlag.c:392,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/zebra/zebra_mlag.c:395,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_mlag.c:404,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 405
    functionName: zebra_mlag_post_data_from_main_thread
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_new
    - frr_pthread_destroy
    - hook_call
    - frr_pthread_run
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - zserv_send_message
    - stream_putw_at
    - zlog_debug
    - frr_pthread_stop
    - STREAM_GETL
    - STREAM_GET
    - EVENT_ARG
    - zebra_mlag_signal_write_thread
    - zebra_mlag_spawn_pthread
    - frr_pthread_new
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_post_data_from_main_thread(struct event *thread)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:417,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_mlag.c:425,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:430,1
    - Dst: zebra_mlag_publish_process_state
      Src: /src/frr/zebra/zebra_mlag.c:438,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:446,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:457,1
    - Dst: zebra_mlag_spawn_pthread
      Src: /src/frr/zebra/zebra_mlag.c:460,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_mlag.c:462,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:471,1
    - Dst: zebra_mlag_publish_process_state
      Src: /src/frr/zebra/zebra_mlag.c:474,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:480,1
    - Dst: zebra_mlag_publish_process_state
      Src: /src/frr/zebra/zebra_mlag.c:483,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 486
    functionName: zebra_mlag_client_register
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - zebra_mlag_publish_process_state
    - hook_call
    - zlog_debug
    - STREAM_GETL
    - zebra_mlag_spawn_pthread
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_client_register(ZAPI_HANDLER_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:494,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:511,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_mlag.c:522,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:526,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 528
    functionName: zebra_mlag_client_unregister
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_client_unregister(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:543,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mlag.c:548,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mlag.c:554,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zebra_mlag.c:555,1
    - Dst: stream_fifo_push_safe
      Src: /src/frr/zebra/zebra_mlag.c:556,1
    - Dst: zebra_mlag_signal_write_thread
      Src: /src/frr/zebra/zebra_mlag.c:557,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 562
    functionName: zebra_mlag_forward_client_msg
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - stream_new
    - stream_put
    - stream_fifo_push_safe
    - STREAM_READABLE
    - zlog_debug
    - zebra_mlag_signal_write_thread
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_forward_client_msg(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 569
    functionName: zebra_mlag_get_role
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum mlag_role
    signature: enum mlag_role zebra_mlag_get_role(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:585,1
    - Dst: mlag_role2str
      Src: /src/frr/zebra/zebra_mlag.c:586,1
    - Dst: mlag_role2str
      Src: /src/frr/zebra/zebra_mlag.c:587,1
    - Dst: zsend_capabilities_all_clients
      Src: /src/frr/zebra/zebra_mlag.c:590,1
    - Dst: zebra_mlag_spawn_pthread
      Src: /src/frr/zebra/zebra_mlag.c:595,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_mlag.c:598,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_mlag.c:604,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - none
    - primary
    - secondary
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 610
    functionName: zebra_mlag_test_mlag_internal
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - hook_call
    - zsend_capabilities_all_clients
    - mlag_role2str
    - zlog_debug
    - zebra_mlag_spawn_pthread
    linkageType: ''
    returnType: int32_t
    signature: "int32_t zebra_mlag_test_mlag_internal(const char *none, const char
      *primary,\n\t\t\t\t      const char *secondary)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_mlag_vty_init
      Src: /src/frr/zebra/zebra_mlag.c:614,1
    - Dst: stream_fifo_new
      Src: /src/frr/zebra/zebra_mlag.c:623,1
    - Dst: zebra_mlag_reset_read_buffer
      Src: /src/frr/zebra/zebra_mlag.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 630
    functionName: zebra_mlag_init
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - zebra_mlag_reset_read_buffer
    - zebra_mlag_vty_init
    - stream_fifo_new
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 634
    functionName: zebra_mlag_terminate
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_terminate(void)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:658,1
    - Dst: mlag_lib_decode_mlag_hdr
      Src: /src/frr/zebra/zebra_mlag.c:660,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mlag.c:664,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:667,1
    - Dst: mlag_lib_msgid_to_str
      Src: /src/frr/zebra/zebra_mlag.c:669,1
    - Dst: mlag_lib_decode_mroute_add
      Src: /src/frr/zebra/zebra_mlag.c:679,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:683,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:684,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:685,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:695,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:697,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:698,1
    - Dst: zebra_mlag_mroute_add__pack
      Src: /src/frr/zebra/zebra_mlag.c:702,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:703,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:705,1
    - Dst: mlag_lib_decode_mroute_del
      Src: /src/frr/zebra/zebra_mlag.c:712,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:715,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:716,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:717,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:724,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:726,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:727,1
    - Dst: zebra_mlag_mroute_del__pack
      Src: /src/frr/zebra/zebra_mlag.c:731,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:732,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:734,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:745,1
    - Dst: mlag_lib_decode_mroute_add
      Src: /src/frr/zebra/zebra_mlag.c:752,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:757,1
    - Dst: zebra_mlag_mroute_add__init
      Src: /src/frr/zebra/zebra_mlag.c:759,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:761,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:763,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:764,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:774,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:776,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:778,1
    - Dst: zebra_mlag_mroute_add_bulk__pack
      Src: /src/frr/zebra/zebra_mlag.c:784,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:797,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:800,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:801,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:803,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:816,1
    - Dst: mlag_lib_decode_mroute_del
      Src: /src/frr/zebra/zebra_mlag.c:823,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:829,1
    - Dst: zebra_mlag_mroute_del__init
      Src: /src/frr/zebra/zebra_mlag.c:831,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:833,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:835,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:837,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:844,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:846,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag.c:848,1
    - Dst: zebra_mlag_mroute_del_bulk__pack
      Src: /src/frr/zebra/zebra_mlag.c:854,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:867,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:870,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:871,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:873,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:889,1
    - Dst: mlag_lib_msgid_to_str
      Src: /src/frr/zebra/zebra_mlag.c:891,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_mlag.c:897,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mlag.c:898,1
    - Dst: zebra_mlag__header__pack
      Src: /src/frr/zebra/zebra_mlag.c:912,1
    - Dst: htonl
      Src: /src/frr/zebra/zebra_mlag.c:914,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_mlag.c:915,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:919,1
    - Dst: mlag_lib_msgid_to_str
      Src: /src/frr/zebra/zebra_mlag.c:922,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_mlag.c:925,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 169
    argCount: 2
    argNames:
    - s
    - msg_type
    argTypes:
    - struct stream*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 928
    functionName: zebra_mlag_protobuf_encode_client_data
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 1
    functionsReached:
    - strlen
    - zebra_mlag_mroute_del__init
    - htonl
    - zebra_mlag__header__pack
    - memset
    - mlag_lib_decode_mroute_add
    - zlog_debug
    - mlag_lib_msgid_to_str
    - mlag_lib_decode_mroute_del
    - zebra_mlag_mroute_add__pack
    - strlcpy
    - zebra_mlag_mroute_del_bulk__pack
    - zebra_mlag_mroute_add__init
    - XFREE
    - zebra_mlag_mroute_del__pack
    - memcpy
    - mlag_lib_decode_mlag_hdr
    - zebra_mlag_mroute_add_bulk__pack
    - XMALLOC
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_protobuf_encode_client_data(struct stream *s, uint32_t
      *msg_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/zebra/zebra_mlag.c:932,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mlag.c:934,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mlag.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - s
    - name
    - len
    argTypes:
    - struct stream*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 937
    functionName: zebra_fill_protobuf_msg
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 0
    functionsReached:
    - strlen
    - stream_put
    linkageType: ''
    returnType: void
    signature: void zebra_fill_protobuf_msg(struct stream *s, char *name, int len)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: zebra_mlag__header__unpack
      Src: /src/frr/zebra/zebra_mlag.c:946,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_mlag.c:953,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag.c:958,1
    - Dst: mlag_lib_msgid_to_str
      Src: /src/frr/zebra/zebra_mlag.c:959,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:967,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:971,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:973,1
    - Dst: zebra_mlag_status_update__unpack
      Src: /src/frr/zebra/zebra_mlag.c:979,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:982,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:986,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:988,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:990,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:992,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:993,1
    - Dst: zebra_mlag_status_update__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:994,1
    - Dst: zebra_mlag_vxlan_update__unpack
      Src: /src/frr/zebra/zebra_mlag.c:999,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1002,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1006,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1008,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1010,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1011,1
    - Dst: zebra_mlag_vxlan_update__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1012,1
    - Dst: zebra_mlag_mroute_add__unpack
      Src: /src/frr/zebra/zebra_mlag.c:1017,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1020,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1024,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1026,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1028,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1030,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1031,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1032,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1033,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_mlag.c:1034,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_mlag.c:1035,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1036,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1038,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mlag.c:1041,1
    - Dst: zebra_mlag_mroute_add__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1042,1
    - Dst: zebra_mlag_mroute_del__unpack
      Src: /src/frr/zebra/zebra_mlag.c:1047,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1050,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1054,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1056,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1058,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1060,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1061,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1062,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1063,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1065,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mlag.c:1068,1
    - Dst: zebra_mlag_mroute_del__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1069,1
    - Dst: zebra_mlag_mroute_add_bulk__unpack
      Src: /src/frr/zebra/zebra_mlag.c:1076,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1079,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1083,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1086,1
    - Dst: STREAM_SIZE
      Src: /src/frr/zebra/zebra_mlag.c:1090,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_mlag.c:1092,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1100,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1102,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1103,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1104,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1105,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_mlag.c:1106,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_mlag.c:1107,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1108,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1110,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mlag.c:1114,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_mlag.c:1117,1
    - Dst: zebra_mlag_mroute_add_bulk__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1119,1
    - Dst: zebra_mlag_mroute_del_bulk__unpack
      Src: /src/frr/zebra/zebra_mlag.c:1127,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1130,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1134,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1137,1
    - Dst: STREAM_SIZE
      Src: /src/frr/zebra/zebra_mlag.c:1141,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_mlag.c:1143,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1150,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1152,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1153,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1154,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1155,1
    - Dst: zebra_fill_protobuf_msg
      Src: /src/frr/zebra/zebra_mlag.c:1157,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mlag.c:1161,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_mlag.c:1164,1
    - Dst: zebra_mlag_mroute_del_bulk__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1166,1
    - Dst: zebra_mlag_zebra_status_update__unpack
      Src: /src/frr/zebra/zebra_mlag.c:1172,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1175,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1179,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_mlag.c:1181,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mlag.c:1183,1
    - Dst: zebra_mlag_zebra_status_update__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1184,1
    - Dst: zebra_mlag__header__free_unpacked
      Src: /src/frr/zebra/zebra_mlag.c:1191,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 157
    argCount: 3
    argNames:
    - s
    - data
    - len
    argTypes:
    - struct stream*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 939
    functionDepth: 2
    functionLinenumber: 939
    functionLinenumberEnd: 1193
    functionName: zebra_mlag_protobuf_decode_message
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 1
    functionsReached:
    - stream_put
    - zebra_mlag_zebra_status_update__unpack
    - zlog_warn
    - stream_putc
    - zebra_mlag_mroute_del_bulk__free_unpacked
    - stream_putw_at
    - zlog_debug
    - zebra_mlag_mroute_add_bulk__unpack
    - mlag_lib_msgid_to_str
    - zebra_mlag_mroute_add__free_unpacked
    - zebra_mlag__header__unpack
    - zebra_mlag_mroute_del_bulk__unpack
    - zebra_mlag_zebra_status_update__free_unpacked
    - zebra_mlag_mroute_del__free_unpacked
    - zebra_mlag_vxlan_update__free_unpacked
    - zebra_mlag_mroute_add_bulk__free_unpacked
    - STREAM_SIZE
    - zebra_mlag_status_update__free_unpacked
    - zclient_create_header
    - zebra_fill_protobuf_msg
    - zebra_mlag_mroute_del__unpack
    - stream_putw
    - zebra_mlag_mroute_add__unpack
    - zebra_mlag_vxlan_update__unpack
    - zebra_mlag_status_update__unpack
    - zebra_mlag__header__free_unpacked
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zebra_mlag_protobuf_decode_message(struct stream *s, uint8_t *data,\n\t\t\t\t
      \      uint32_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - msg_type
    argTypes:
    - struct stream*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1199
    functionName: zebra_mlag_protobuf_encode_client_data
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_protobuf_encode_client_data(struct stream *s, uint32_t
      *msg_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - s
    - data
    - len
    argTypes:
    - struct stream*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1201
    functionDepth: 0
    functionLinenumber: 1201
    functionLinenumberEnd: 1205
    functionName: zebra_mlag_protobuf_decode_message
    functionSourceFile: /src/frr/zebra/zebra_mlag.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zebra_mlag_protobuf_decode_message(struct stream *s, uint8_t *data,\n\t\t\t\t
      \      uint32_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: NETLINK_ALIGN
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NETLINK_ALIGN(len)
  - 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: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: NETLINK_NLATTR_LEN
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NETLINK_NLATTR_LEN(_a, _b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - netnspath
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: zebra_ns_id_get_fallback
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t zebra_ns_id_get_fallback(const char *netnspath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:58,1
    - Dst: frr_sequence32_next
      Src: /src/frr/zebra/zebra_netns_id.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - buf
    - seq
    - type
    argTypes:
    - char*
    - unsigned int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 66
    functionName: initiate_nlh
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached:
    - NETLINK_ALIGN
    - frr_sequence32_next
    linkageType: ''
    returnType: struct nlmsghdr
    signature: struct nlmsghdr *initiate_nlh(char *buf, unsigned int *seq, int type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/frr/zebra/zebra_netns_id.c:74,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_id.c:77,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_netns_id.c:78,1
    - Dst: recvmsg
      Src: /src/frr/zebra/zebra_netns_id.c:96,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_id.c:98,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_netns_id.c:104,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_netns_id.c:110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - sock
    - nlh
    - seq
    - buf
    argTypes:
    - int
    - struct nlmsghdr*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 117
    functionName: send_receive
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached:
    - flog_err
    - safe_strerror
    - sendto
    - flog_err_sys
    - recvmsg
    linkageType: ''
    returnType: int
    signature: "int send_receive(int sock, struct nlmsghdr *nlh, unsigned int seq,\n\t\t\tchar
      *buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:125,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:126,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:127,1
    - Dst: NETLINK_NLATTR_LEN
      Src: /src/frr/zebra/zebra_netns_id.c:131,1
    - Dst: NETLINK_NLATTR_LEN
      Src: /src/frr/zebra/zebra_netns_id.c:133,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:134,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - nlh
    - buf
    argTypes:
    - struct nlmsghdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: extract_nsid
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached:
    - NETLINK_ALIGN
    - NETLINK_NLATTR_LEN
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t extract_nsid(struct nlmsghdr *nlh, char *buf)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/zebra/zebra_netns_id.c:161,1
    - Dst: socket
      Src: /src/frr/zebra/zebra_netns_id.c:167,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_id.c:169,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_netns_id.c:170,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:172,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_netns_id.c:175,1
    - Dst: bind
      Src: /src/frr/zebra/zebra_netns_id.c:179,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_id.c:181,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_netns_id.c:183,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:184,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:186,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_netns_id.c:196,1
    - Dst: initiate_nlh
      Src: /src/frr/zebra/zebra_netns_id.c:197,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:199,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_netns_id.c:202,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_netns_id.c:203,1
    - Dst: send_receive
      Src: /src/frr/zebra/zebra_netns_id.c:205,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:207,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:209,1
    - Dst: extract_nsid
      Src: /src/frr/zebra/zebra_netns_id.c:217,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:223,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_netns_id.c:247,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_netns_id.c:249,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:250,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:252,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_netns_id.c:254,1
    - Dst: zebra_ns_id_get_fallback
      Src: /src/frr/zebra/zebra_netns_id.c:255,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_netns_id.c:260,1
    - Dst: initiate_nlh
      Src: /src/frr/zebra/zebra_netns_id.c:261,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:263,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_netns_id.c:266,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_netns_id.c:267,1
    - Dst: send_receive
      Src: /src/frr/zebra/zebra_netns_id.c:269,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:271,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:273,1
    - Dst: extract_nsid
      Src: /src/frr/zebra/zebra_netns_id.c:281,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:287,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:295,1
    - Dst: NETLINK_ALIGN
      Src: /src/frr/zebra/zebra_netns_id.c:297,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:301,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:302,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 108
    argCount: 2
    argNames:
    - netnspath
    - fd_param
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 304
    functionName: zebra_ns_id_get
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached:
    - open
    - memset
    - nl_attr_put32
    - socket
    - initiate_nlh
    - close
    - flog_err
    - safe_strerror
    - zlog_debug
    - bind
    - zebra_ns_id_get_fallback
    - send_receive
    - flog_err_sys
    - NETLINK_ALIGN
    - extract_nsid
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t zebra_ns_id_get(const char *netnspath, int fd_param)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_id_get_fallback
      Src: /src/frr/zebra/zebra_netns_id.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - netnspath
    - fd
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: zebra_ns_id_get
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached:
    - zebra_ns_id_get_fallback
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t zebra_ns_id_get(const char *netnspath, int fd __attribute__
      ((unused)))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mkdir
      Src: /src/frr/zebra/zebra_netns_id.c:319,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_netns_id.c:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 326
    functionName: zebra_ns_create_netns_directory
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached:
    - mkdir
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void zebra_ns_create_netns_directory(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_netns_id.c:336,1
    - Dst: zebra_ns_create_netns_directory
      Src: /src/frr/zebra/zebra_netns_id.c:337,1
    - Dst: open
      Src: /src/frr/zebra/zebra_netns_id.c:338,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_netns_id.c:342,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:343,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_id.c:346,1
    - Dst: zebra_ns_id_get
      Src: /src/frr/zebra/zebra_netns_id.c:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 329
    functionDepth: 4
    functionLinenumber: 329
    functionLinenumberEnd: 351
    functionName: zebra_ns_id_get_default
    functionSourceFile: /src/frr/zebra/zebra_netns_id.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - open
    - zebra_ns_create_netns_directory
    - zebra_ns_id_get
    - close
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t zebra_ns_id_get_default(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ns_info_lookup
      Src: /src/frr/zebra/zebra_ns.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: zebra_ns_lookup
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 6
    functionsReached:
    - ns_info_lookup
    linkageType: ''
    returnType: struct zebra_ns
    signature: struct zebra_ns *zebra_ns_lookup(ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_ns.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: zebra_ns_alloc
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct zebra_ns
    signature: struct zebra_ns *zebra_ns_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_ns.c:57,1
    - Dst: zebra_ns_alloc
      Src: /src/frr/zebra/zebra_ns.c:59,1
    - Dst: route_table_init
      Src: /src/frr/zebra/zebra_ns.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 68
    functionName: zebra_ns_new
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - zebra_ns_alloc
    - route_table_init
    - zlog_info
    linkageType: ''
    returnType: int
    signature: int zebra_ns_new(struct ns *ns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_ns.c:75,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_ns.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: zebra_ns_delete
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - XFREE
    linkageType: ''
    returnType: int
    signature: int zebra_ns_delete(struct ns *ns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_ns.c:87,1
    - Dst: zebra_ns_enable
      Src: /src/frr/zebra/zebra_ns.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 91
    functionName: zebra_ns_enabled
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - zebra_ns_enable
    linkageType: ''
    returnType: int
    signature: int zebra_ns_enabled(struct ns *ns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_ns.c:98,1
    - Dst: zebra_ns_disable_internal
      Src: /src/frr/zebra/zebra_ns.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: zebra_ns_disabled
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - zebra_ns_disable_internal
    linkageType: ''
    returnType: int
    signature: int zebra_ns_disabled(struct ns *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: kernel_init
      Src: /src/frr/zebra/zebra_ns.c:111,1
    - Dst: zebra_dplane_ns_enable
      Src: /src/frr/zebra/zebra_ns.c:112,1
    - Dst: interface_list
      Src: /src/frr/zebra/zebra_ns.c:113,1
    - Dst: route_read
      Src: /src/frr/zebra/zebra_ns.c:114,1
    - Dst: vlan_read
      Src: /src/frr/zebra/zebra_ns.c:116,1
    - Dst: kernel_read_pbr_rules
      Src: /src/frr/zebra/zebra_ns.c:117,1
    - Dst: kernel_read_tc_qdisc
      Src: /src/frr/zebra/zebra_ns.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ns_id
    - info
    argTypes:
    - ns_id_t
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 121
    functionName: zebra_ns_enable
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 1
    functionsReached:
    - zebra_dplane_ns_enable
    - kernel_read_pbr_rules
    - interface_list
    - route_read
    - kernel_read_tc_qdisc
    - vlan_read
    - kernel_init
    linkageType: ''
    returnType: int
    signature: int zebra_ns_enable(ns_id_t ns_id, void **info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_table_finish
      Src: /src/frr/zebra/zebra_ns.c:129,1
    - Dst: zebra_dplane_ns_enable
      Src: /src/frr/zebra/zebra_ns.c:132,1
    - Dst: kernel_terminate
      Src: /src/frr/zebra/zebra_ns.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - zns
    - complete
    argTypes:
    - struct zebra_ns*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: zebra_ns_disable_internal
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 1
    functionsReached:
    - zebra_dplane_ns_enable
    - kernel_terminate
    - route_table_finish
    linkageType: ''
    returnType: int
    signature: int zebra_ns_disable_internal(struct zebra_ns *zns, bool complete)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_disable_internal
      Src: /src/frr/zebra/zebra_ns.c:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ns
    - param_in
    - param_out
    argTypes:
    - struct ns*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: zebra_ns_early_shutdown
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - zebra_ns_disable_internal
    linkageType: ''
    returnType: int
    signature: "int zebra_ns_early_shutdown(struct ns *ns,\n\t\t\t    void *param_in
      __attribute__((unused)),\n\t\t\t    void **param_out __attribute__((unused)))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kernel_terminate
      Src: /src/frr/zebra/zebra_ns.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ns
    - param_in
    - param_out
    argTypes:
    - struct ns*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 172
    functionName: zebra_ns_final_shutdown
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - kernel_terminate
    linkageType: ''
    returnType: int
    signature: "int zebra_ns_final_shutdown(struct ns *ns,\n\t\t\t    void *param_in
      __attribute__((unused)),\n\t\t\t    void **param_out __attribute__((unused)))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_id_get_default
      Src: /src/frr/zebra/zebra_ns.c:182,1
    - Dst: ns_map_nsid_with_external
      Src: /src/frr/zebra/zebra_ns.c:184,1
    - Dst: ns_init_management
      Src: /src/frr/zebra/zebra_ns.c:185,1
    - Dst: ns_get_default
      Src: /src/frr/zebra/zebra_ns.c:186,1
    - Dst: ns_lookup
      Src: /src/frr/zebra/zebra_ns.c:190,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_ns.c:192,1
    - Dst: exit
      Src: /src/frr/zebra/zebra_ns.c:194,1
    - Dst: zebra_ns_new
      Src: /src/frr/zebra/zebra_ns.c:198,1
    - Dst: zebra_vrf_init
      Src: /src/frr/zebra/zebra_ns.c:202,1
    - Dst: zebra_ns_enable
      Src: /src/frr/zebra/zebra_ns.c:205,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_ns.c:207,1
    - Dst: ns_add_hook
      Src: /src/frr/zebra/zebra_ns.c:208,1
    - Dst: ns_add_hook
      Src: /src/frr/zebra/zebra_ns.c:209,1
    - Dst: ns_add_hook
      Src: /src/frr/zebra/zebra_ns.c:210,1
    - Dst: ns_add_hook
      Src: /src/frr/zebra/zebra_ns.c:211,1
    - Dst: zebra_ns_notify_parse
      Src: /src/frr/zebra/zebra_ns.c:212,1
    - Dst: zebra_ns_notify_init
      Src: /src/frr/zebra/zebra_ns.c:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 174
    functionDepth: 5
    functionLinenumber: 174
    functionLinenumberEnd: 217
    functionName: zebra_ns_init
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - exit
    - vrf_is_backend_netns
    - zebra_ns_new
    - zebra_ns_notify_init
    - ns_lookup
    - ns_get_default
    - ns_init_management
    - zebra_ns_enable
    - zebra_ns_id_get_default
    - zebra_ns_notify_parse
    - flog_err
    - ns_add_hook
    - ns_map_nsid_with_external
    - zebra_vrf_init
    linkageType: ''
    returnType: int
    signature: int zebra_ns_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_id_get_default
      Src: /src/frr/zebra/zebra_ns.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 5
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - zebra_ns_id_get_default
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_ns.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - ns
    argTypes:
    - struct vty*
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 224
    functionName: zebra_ns_config_write
    functionSourceFile: /src/frr/zebra/zebra_ns.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int zebra_ns_config_write(struct vty *vty, struct ns *ns)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - struct zebra_router_table*
    - struct zebra_router_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 54
    functionName: zebra_router_table_entry_compare
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zebra_router_table_entry_compare(const struct zebra_router_table
      *e1,\n\t\t\t\t const struct zebra_router_table *e2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_router.c:63,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_router.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - zvrf
    - tableid
    - afi
    - safi
    argTypes:
    - struct zebra_vrf*
    - uint32_t
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 71
    functionName: zebra_router_find_zrt
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - memset
    linkageType: ''
    returnType: struct zebra_router_table
    signature: "struct zebra_router_table *zebra_router_find_zrt(struct zebra_vrf
      *zvrf,\n\t\t\t\t\t\t uint32_t tableid, afi_t afi,\n\t\t\t\t\t\t safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_router.c:80,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_router.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - zvrf
    - tableid
    - afi
    - safi
    argTypes:
    - struct zebra_vrf*
    - uint32_t
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 91
    functionName: zebra_router_find_table
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - memset
    linkageType: ''
    returnType: struct route_table
    signature: "struct route_table *zebra_router_find_table(struct zebra_vrf *zvrf,\n\t\t\t\t\t
      \   uint32_t tableid, afi_t afi,\n\t\t\t\t\t    safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_router.c:101,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_router.c:106,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_router.c:111,1
    - Dst: srcdest_table_init
      Src: /src/frr/zebra/zebra_router.c:117,1
    - Dst: route_table_init
      Src: /src/frr/zebra/zebra_router.c:117,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_router.c:119,1
    - Dst: route_table_set_info
      Src: /src/frr/zebra/zebra_router.c:124,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_router.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 4
    argNames:
    - zvrf
    - tableid
    - afi
    - safi
    argTypes:
    - struct zebra_vrf*
    - uint32_t
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 129
    functionName: zebra_router_get_table
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - memset
    - XCALLOC
    - RB_FIND
    - RB_INSERT
    - route_table_set_info
    - route_table_init
    - srcdest_table_init
    linkageType: ''
    returnType: struct route_table
    signature: "struct route_table *zebra_router_get_table(struct zebra_vrf *zvrf,\n\t\t\t\t\t
      \  uint32_t tableid, afi_t afi,\n\t\t\t\t\t   safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_router.c:135,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_router.c:137,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_router.c:139,1
    - Dst: route_table_get_info
      Src: /src/frr/zebra/zebra_router.c:140,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_router.c:142,1
    - Dst: afi2str
      Src: /src/frr/zebra/zebra_router.c:144,1
    - Dst: safi2str
      Src: /src/frr/zebra/zebra_router.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 148
    functionName: zebra_router_show_table_summary
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - safi2str
    - vty_out
    - route_table_get_info
    - afi2str
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void zebra_router_show_table_summary(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_router.c:154,1
    - Dst: rib_sweep_table
      Src: /src/frr/zebra/zebra_router.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 159
    functionName: zebra_router_sweep_route
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - rib_sweep_table
    linkageType: ''
    returnType: void
    signature: void zebra_router_sweep_route(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_sweep_table
      Src: /src/frr/zebra/zebra_router.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 164
    functionName: zebra_router_sweep_nhgs
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_sweep_table
    linkageType: ''
    returnType: void
    signature: void zebra_router_sweep_nhgs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_info
      Src: /src/frr/zebra/zebra_router.c:170,1
    - Dst: route_table_finish
      Src: /src/frr/zebra/zebra_router.c:171,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_router.c:172,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_router.c:174,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_router.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - zrt
    argTypes:
    - struct zebra_router_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 176
    functionName: zebra_router_free_table
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - XFREE
    - route_table_finish
    - route_table_get_info
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void zebra_router_free_table(struct zebra_router_table *zrt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_router.c:184,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_router.c:189,1
    - Dst: zebra_router_free_table
      Src: /src/frr/zebra/zebra_router.c:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - zvrf
    - tableid
    - afi
    - safi
    argTypes:
    - struct zebra_vrf*
    - uint32_t
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 195
    functionName: zebra_router_release_table
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - zebra_router_free_table
    - memset
    linkageType: ''
    returnType: void
    signature: "void zebra_router_release_table(struct zebra_vrf *zvrf, uint32_t tableid,\n\t\t\t\tafi_t
      afi, safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_router.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 202
    functionName: zebra_router_get_next_sequence
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - atomic_fetch_add_explicit
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_router_get_next_sequence(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_router.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mode
    argTypes:
    - enum multicast_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 210
    functionName: multicast_mode_ipv4_set
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void multicast_mode_ipv4_set(enum multicast_mode mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: multicast_mode_ipv4_get
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum multicast_mode
    signature: enum multicast_mode multicast_mode_ipv4_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_router.c:221,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_router.c:223,1
    - Dst: zebra_router_free_table
      Src: /src/frr/zebra/zebra_router.c:224,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/zebra/zebra_router.c:226,1
    - Dst: meta_queue_free
      Src: /src/frr/zebra/zebra_router.c:227,1
    - Dst: zebra_vxlan_disable
      Src: /src/frr/zebra/zebra_router.c:229,1
    - Dst: zebra_mlag_terminate
      Src: /src/frr/zebra/zebra_router.c:230,1
    - Dst: zebra_neigh_terminate
      Src: /src/frr/zebra/zebra_router.c:231,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_router.c:234,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_router.c:235,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_router.c:236,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_router.c:238,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_router.c:240,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_router.c:242,1
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_router.c:243,1
    - Dst: zebra_script_destroy
      Src: /src/frr/zebra/zebra_router.c:246,1
    - Dst: kernel_router_terminate
      Src: /src/frr/zebra/zebra_router.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 251
    functionName: zebra_router_terminate
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - kernel_router_terminate
    - zebra_mlag_terminate
    - zebra_script_destroy
    - zebra_router_free_table
    - RB_FOREACH_SAFE
    - EVENT_OFF
    - zebra_neigh_terminate
    - hash_iterate
    - work_queue_free_and_null
    - zebra_vxlan_disable
    - meta_queue_free
    linkageType: ''
    returnType: void
    signature: void zebra_router_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: zebra_router_notify_on_ack
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_router_notify_on_ack(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_init
      Src: /src/frr/zebra/zebra_router.c:268,1
    - Dst: zebra_mlag_init
      Src: /src/frr/zebra/zebra_router.c:269,1
    - Dst: zebra_neigh_init
      Src: /src/frr/zebra/zebra_router.c:270,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:272,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:277,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:280,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:284,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:289,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:292,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:296,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:300,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:302,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_router.c:305,1
    - Dst: CPP_NOTICE
      Src: /src/frr/zebra/zebra_router.c:318,1
    - Dst: zebra_script_init
      Src: /src/frr/zebra/zebra_router.c:324,1
    - Dst: kernel_router_init
      Src: /src/frr/zebra/zebra_router.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 2
    argNames:
    - asic_offload
    - notify_on_ack
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 329
    functionName: zebra_router_init
    functionSourceFile: /src/frr/zebra/zebra_router.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    - zebra_vxlan_init
    - kernel_router_init
    - zebra_neigh_init
    - zebra_mlag_init
    - zebra_script_init
    - CPP_NOTICE
    linkageType: ''
    returnType: void
    signature: void zebra_router_init(bool asic_offload, bool notify_on_ack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mlag_vty.c:47,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mlag_vty.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: zebra_mlag_vty_init
    functionSourceFile: /src/frr/zebra/zebra_mlag_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_vty_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_socket.c:37,1
    - Dst: memset
      Src: /src/frr/zebra/rt_socket.c:43,1
    - Dst: htonl
      Src: /src/frr/zebra/rt_socket.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - nh_label
    - smpls
    argTypes:
    - struct mpls_label_stack*
    - struct sockaddr_mpls*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 49
    functionName: kernel_rtm_add_labels
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached:
    - htonl
    - flog_warn
    - memset
    linkageType: ''
    returnType: int
    signature: "int kernel_rtm_add_labels(struct mpls_label_stack *nh_label,\n\t\t\t\t
      struct sockaddr_mpls *smpls)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_socket.c:76,1
    - Dst: lookup_msg
      Src: /src/frr/zebra/rt_socket.c:77,1
    - Dst: memset
      Src: /src/frr/zebra/rt_socket.c:81,1
    - Dst: memset
      Src: /src/frr/zebra/rt_socket.c:82,1
    - Dst: memset
      Src: /src/frr/zebra/rt_socket.c:83,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/rt_socket.c:107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_socket.c:111,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_socket.c:112,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_socket.c:117,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/rt_socket.c:147,1
    - Dst: SET_IN6_LINKLOCAL_IFINDEX
      Src: /src/frr/zebra/rt_socket.c:148,1
    - Dst: htonl
      Src: /src/frr/zebra/rt_socket.c:164,1
    - Dst: inet_pton
      Src: /src/frr/zebra/rt_socket.c:175,1
    - Dst: masklen2ip
      Src: /src/frr/zebra/rt_socket.c:191,1
    - Dst: masklen2ip6
      Src: /src/frr/zebra/rt_socket.c:198,1
    - Dst: kernel_rtm_add_labels
      Src: /src/frr/zebra/rt_socket.c:208,1
    - Dst: rtm_write
      Src: /src/frr/zebra/rt_socket.c:214,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_socket.c:220,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/rt_socket.c:226,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/rt_socket.c:232,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_socket.c:238,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_socket.c:250,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rt_socket.c:253,1
    - Dst: flog_err
      Src: /src/frr/zebra/rt_socket.c:264,1
    - Dst: flog_err
      Src: /src/frr/zebra/rt_socket.c:272,1
    - Dst: flog_err
      Src: /src/frr/zebra/rt_socket.c:277,1
    - Dst: lookup_msg
      Src: /src/frr/zebra/rt_socket.c:281,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_socket.c:289,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 134
    argCount: 4
    argNames:
    - cmd
    - p
    - ng
    - metric
    argTypes:
    - int
    - struct prefix*
    - struct nexthop_group*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 296
    functionName: kernel_rtm
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached:
    - memset
    - snprintf
    - masklen2ip
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - rtm_write
    - masklen2ip6
    - inet_ntop
    - zlog_debug
    - inet_pton
    - SET_FLAG
    - flog_err
    - htonl
    - kernel_rtm_add_labels
    - lookup_msg
    - ALL_NEXTHOPS_PTR
    - SET_IN6_LINKLOCAL_IFINDEX
    linkageType: ''
    returnType: int
    signature: "int kernel_rtm(int cmd, const struct prefix *p,\n\t\t      const struct
      nexthop_group *ng, uint32_t metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: SET_IN6_LINKLOCAL_IFINDEX
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_IN6_LINKLOCAL_IFINDEX(a, i)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_src
      Src: /src/frr/zebra/rt_socket.c:307,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_socket.c:308,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_socket.c:312,1
    - Dst: dplane_ctx_get_old_type
      Src: /src/frr/zebra/rt_socket.c:313,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:317,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:318,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:319,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:319,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_socket.c:320,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/rt_socket.c:321,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:322,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:323,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:324,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:324,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_socket.c:325,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/rt_socket.c:326,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:327,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:331,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:332,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:332,1
    - Dst: dplane_ctx_get_old_ng
      Src: /src/frr/zebra/rt_socket.c:333,1
    - Dst: dplane_ctx_get_old_metric
      Src: /src/frr/zebra/rt_socket.c:334,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:336,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:337,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:337,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_socket.c:338,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/rt_socket.c:339,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_socket.c:341,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/rt_socket.c:342,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:342,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:343,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 302
    functionDepth: 3
    functionLinenumber: 302
    functionLinenumberEnd: 349
    functionName: kernel_route_update
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_op
    - dplane_op2str
    - RSYSTEM_ROUTE
    - dplane_ctx_get_type
    - dplane_ctx_get_ng
    - dplane_ctx_get_metric
    - dplane_ctx_get_old_type
    - zlog_err
    - dplane_ctx_get_dest
    - dplane_ctx_get_src
    - kernel_rtm
    - dplane_ctx_get_old_metric
    - dplane_ctx_get_old_ng
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_route_update(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:317,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:318,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:319,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:319,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_socket.c:320,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/rt_socket.c:321,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:322,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:323,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:324,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:324,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_socket.c:325,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/rt_socket.c:326,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:327,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:331,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:332,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:332,1
    - Dst: dplane_ctx_get_old_ng
      Src: /src/frr/zebra/rt_socket.c:333,1
    - Dst: dplane_ctx_get_old_metric
      Src: /src/frr/zebra/rt_socket.c:334,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_socket.c:336,1
    - Dst: kernel_rtm
      Src: /src/frr/zebra/rt_socket.c:337,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_socket.c:337,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_socket.c:338,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/rt_socket.c:339,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_socket.c:341,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/rt_socket.c:342,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:342,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_socket.c:343,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 346
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - dplane_op2str
    - dplane_ctx_get_ng
    - RSYSTEM_ROUTE
    - dplane_ctx_get_metric
    - zlog_err
    - dplane_ctx_get_dest
    - kernel_rtm
    - dplane_ctx_get_old_metric
    - dplane_ctx_get_old_ng
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: kernel_nexthop_update
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_nexthop_update(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vrf_id
    - client
    - reg
    argTypes:
    - vrf_id_t
    - struct zserv*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 360
    functionName: kernel_neigh_register
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kernel_neigh_register(vrf_id_t vrf_id, struct zserv *client, bool
      reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - add
    - ifindex
    - addr
    - lla
    - llalen
    - ns_id
    - family
    - permanent
    argTypes:
    - int
    - int
    - void*
    - char*
    - int
    - ns_id_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 367
    functionName: kernel_neigh_update
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int kernel_neigh_update(int add, int ifindex, void *addr, char *lla,
      int llalen,\n\t\t\tns_id_t ns_id, uint8_t family, bool permanent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 373
    functionName: kernel_neigh_update_ctx
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_neigh_update_ctx(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zvrf
    - mroute
    argTypes:
    - struct zebra_vrf*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 378
    functionName: kernel_get_ipmr_sg_stats
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kernel_get_ipmr_sg_stats(struct zebra_vrf *zvrf, void *mroute)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: kernel_mac_update_ctx
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_mac_update_ctx(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - master
    - slave
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 392
    functionName: kernel_interface_set_master
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int kernel_interface_set_master(struct interface *master,\n\t\t\t\t
      \      struct interface *slave)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - error
    argTypes:
    - struct interface*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 397
    functionName: kernel_get_speed
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t kernel_get_speed(struct interface *ifp, int *error)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nh_id
    - vtep_ip
    argTypes:
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 402
    functionName: kernel_upd_mac_nh
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kernel_upd_mac_nh(uint32_t nh_id, struct in_addr vtep_ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nh_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 407
    functionName: kernel_del_mac_nh
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kernel_del_mac_nh(uint32_t nh_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - nhg_id
    - nh_cnt
    - nh_ids
    argTypes:
    - uint32_t
    - uint32_t
    - struct nh_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 413
    functionName: kernel_upd_mac_nhg
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int kernel_upd_mac_nhg(uint32_t nhg_id, uint32_t nh_cnt,\n\t\tstruct
      nh_grp *nh_ids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhg_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 418
    functionName: kernel_del_mac_nhg
    functionSourceFile: /src/frr/zebra/rt_socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kernel_del_mac_nhg(uint32_t nhg_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_pbr_rule_delete
      Src: /src/frr/zebra/zebra_pbr.c:150,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pbr.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 152
    functionName: zebra_pbr_rules_free
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - dplane_pbr_rule_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_rules_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_3words
      Src: /src/frr/zebra/zebra_pbr.c:160,1
    - Dst: prefix_hash_key
      Src: /src/frr/zebra/zebra_pbr.c:162,1
    - Dst: jhash_3words
      Src: /src/frr/zebra/zebra_pbr.c:164,1
    - Dst: jhash
      Src: /src/frr/zebra/zebra_pbr.c:167,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_pbr.c:167,1
    - Dst: jhash_3words
      Src: /src/frr/zebra/zebra_pbr.c:169,1
    - Dst: prefix_hash_key
      Src: /src/frr/zebra/zebra_pbr.c:171,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_pbr.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: zebra_pbr_rules_hash_key
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - jhash_3words
    - prefix_hash_key
    - strlen
    - jhash_1word
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_pbr_rules_hash_key(const void *arg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/zebra/zebra_pbr.c:206,1
    - Dst: prefix_same
      Src: /src/frr/zebra/zebra_pbr.c:209,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_pbr.c:212,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 219
    functionName: zebra_pbr_rules_hash_equal
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - strcmp
    - prefix_same
    linkageType: ''
    returnType: bool
    signature: bool zebra_pbr_rules_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/zebra/zebra_pbr.c:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 241
    functionName: pbr_rule_lookup_unique_walker
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int pbr_rule_lookup_unique_walker(struct hash_bucket *b, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_pbr.c:249,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_pbr.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - zrule
    argTypes:
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 255
    functionName: pbr_rule_lookup_unique
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_walk
    - strlcpy
    linkageType: ''
    returnType: struct zebra_pbr_rule
    signature: 'struct zebra_pbr_rule *

      pbr_rule_lookup_unique(struct zebra_pbr_rule *zrule)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:262,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pbr.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 264
    functionName: zebra_pbr_ipset_free
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_ipset_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_pbr.c:270,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_pbr.c:272,1
    - Dst: jhash2
      Src: /src/frr/zebra/zebra_pbr.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 275
    functionName: zebra_pbr_ipset_hash_key
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - jhash2
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_pbr_ipset_hash_key(const void *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/zebra/zebra_pbr.c:293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 297
    functionName: zebra_pbr_ipset_hash_equal
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool zebra_pbr_ipset_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:305,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pbr.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 308
    functionName: zebra_pbr_ipset_entry_free
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_ipset_entry_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_hash_key
      Src: /src/frr/zebra/zebra_pbr.c:316,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_pbr.c:317,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_pbr.c:318,1
    - Dst: prefix_hash_key
      Src: /src/frr/zebra/zebra_pbr.c:318,1
    - Dst: jhash
      Src: /src/frr/zebra/zebra_pbr.c:319,1
    - Dst: jhash
      Src: /src/frr/zebra/zebra_pbr.c:320,1
    - Dst: jhash
      Src: /src/frr/zebra/zebra_pbr.c:321,1
    - Dst: jhash
      Src: /src/frr/zebra/zebra_pbr.c:322,1
    - Dst: jhash
      Src: /src/frr/zebra/zebra_pbr.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 326
    functionName: zebra_pbr_ipset_entry_hash_key
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    - jhash_1word
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_pbr_ipset_entry_hash_key(const void *arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/zebra/zebra_pbr.c:338,1
    - Dst: prefix_same
      Src: /src/frr/zebra/zebra_pbr.c:341,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 359
    functionName: zebra_pbr_ipset_entry_hash_equal
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: bool
    signature: bool zebra_pbr_ipset_entry_hash_equal(const void *arg1, const void
      *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_pbr.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 471
    functionName: pbr_rule_alloc_intern
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *pbr_rule_alloc_intern(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_neigh_deref
      Src: /src/frr/zebra/zebra_pbr.c:477,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_pbr.c:478,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pbr.c:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - hash_data
    - free_data
    argTypes:
    - struct zebra_pbr_rule*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 485
    functionName: pbr_rule_free
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_release
    - zebra_neigh_deref
    - XFREE
    linkageType: ''
    returnType: struct zebra_pbr_rule
    signature: "struct zebra_pbr_rule *pbr_rule_free(struct zebra_pbr_rule *hash_data,\n\t\t\t\t\t
      \   bool free_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_pbr.c:492,1
    - Dst: pbr_rule_free
      Src: /src/frr/zebra/zebra_pbr.c:497,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rule
    - free_data
    argTypes:
    - struct zebra_pbr_rule*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 498
    functionName: pbr_rule_release
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - pbr_rule_free
    - hash_lookup
    linkageType: ''
    returnType: struct zebra_pbr_rule
    signature: "struct zebra_pbr_rule *pbr_rule_release(struct zebra_pbr_rule *rule,\n\t\t\t\t\t
      \      bool free_data)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:505,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:506,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:508,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:510,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:512,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:515,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:517,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:520,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:522,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:527,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:529,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:531,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_pbr.c:533,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:535,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_pbr.c:537,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:539,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 2
    argNames:
    - rule
    - vty
    argTypes:
    - struct zebra_pbr_rule*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 540
    functionName: zebra_pbr_show_rule_unit
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - ifindex2ifname
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_show_rule_unit(struct zebra_pbr_rule *rule, struct vty
      *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_pbr_show_rule_unit
      Src: /src/frr/zebra/zebra_pbr.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 542
    functionDepth: 2
    functionLinenumber: 542
    functionLinenumberEnd: 551
    functionName: zebra_pbr_show_rules_walkcb
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - zebra_pbr_show_rule_unit
    linkageType: ''
    returnType: int
    signature: int zebra_pbr_show_rules_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_pbr.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 559
    functionName: zebra_pbr_show_rule
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_walk
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_show_rule(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 565
    functionName: zebra_pbr_config_write
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 570
    functionName: zebra_pbr_expand_action_update
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_expand_action_update(bool enable)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_table_with_table_id
      Src: /src/frr/zebra/zebra_pbr.c:587,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_pbr.c:592,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_pbr.c:595,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_pbr.c:599,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_pbr.c:602,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_pbr.c:606,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_pbr.c:608,1
    - Dst: zebra_neigh_ref
      Src: /src/frr/zebra/zebra_pbr.c:622,1
    - Dst: zebra_neigh_ref
      Src: /src/frr/zebra/zebra_pbr.c:632,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_pbr.c:641,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 1
    argNames:
    - rule
    argTypes:
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 642
    functionName: zebra_pbr_expand_rule
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_get_table_with_table_id
    - route_unlock_node
    - rib_get_fib_nhg
    - route_node_lookup
    - memset
    - rib_dest_from_rnode
    - zebra_neigh_ref
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_expand_rule(struct zebra_pbr_rule *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pbr_rule_lookup_unique
      Src: /src/frr/zebra/zebra_pbr.c:654,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pbr.c:659,1
    - Dst: pbr_rule_release
      Src: /src/frr/zebra/zebra_pbr.c:667,1
    - Dst: hash_get::hash_get
      Src: /src/frr/zebra/zebra_pbr.c:670,1
    - Dst: dplane_pbr_rule_update
      Src: /src/frr/zebra/zebra_pbr.c:674,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pbr.c:677,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pbr.c:680,1
    - Dst: hash_get::hash_get
      Src: /src/frr/zebra/zebra_pbr.c:686,1
    - Dst: dplane_pbr_rule_add
      Src: /src/frr/zebra/zebra_pbr.c:689,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - rule
    argTypes:
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 644
    functionDepth: 3
    functionLinenumber: 644
    functionLinenumberEnd: 692
    functionName: zebra_pbr_add_rule
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - pbr_rule_lookup_unique
    - pbr_rule_release
    - zlog_debug
    - XFREE
    - hash_get::hash_get
    - dplane_pbr_rule_update
    - dplane_pbr_rule_add
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_add_rule(struct zebra_pbr_rule *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pbr.c:697,1
    - Dst: dplane_pbr_rule_delete
      Src: /src/frr/zebra/zebra_pbr.c:701,1
    - Dst: pbr_rule_release
      Src: /src/frr/zebra/zebra_pbr.c:703,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pbr.c:704,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rule
    argTypes:
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 694
    functionDepth: 3
    functionLinenumber: 694
    functionLinenumberEnd: 706
    functionName: zebra_pbr_del_rule
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - pbr_rule_release
    - dplane_pbr_rule_delete
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_del_rule(struct zebra_pbr_rule *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_pbr.c:713,1
    - Dst: dplane_ctx_get_pbr_iptable
      Src: /src/frr/zebra/zebra_pbr.c:718,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:720,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/zebra_pbr.c:722,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/zebra_pbr.c:724,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 725
    functionName: zebra_pbr_process_iptable
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_set_status
    - dplane_ctx_get_op
    - dplane_ctx_get_pbr_iptable
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_process_iptable(struct zebra_dplane_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_pbr.c:732,1
    - Dst: dplane_ctx_get_pbr_ipset
      Src: /src/frr/zebra/zebra_pbr.c:737,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:739,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/zebra_pbr.c:741,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/zebra_pbr.c:743,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 744
    functionName: zebra_pbr_process_ipset
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_pbr_ipset
    - dplane_ctx_get_op
    - dplane_ctx_set_status
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_process_ipset(struct zebra_dplane_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_pbr.c:752,1
    - Dst: dplane_ctx_get_pbr_ipset_entry
      Src: /src/frr/zebra/zebra_pbr.c:757,1
    - Dst: dplane_ctx_get_pbr_ipset
      Src: /src/frr/zebra/zebra_pbr.c:758,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:762,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/zebra_pbr.c:764,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/zebra_pbr.c:766,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 767
    functionName: zebra_pbr_process_ipset_entry
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - hook_call
    - dplane_ctx_get_pbr_ipset_entry
    - dplane_ctx_get_pbr_ipset
    - dplane_ctx_set_status
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_process_ipset_entry(struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_pbr_rule_delete
      Src: /src/frr/zebra/zebra_pbr.c:775,1
    - Dst: pbr_rule_free
      Src: /src/frr/zebra/zebra_pbr.c:776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 769
    functionDepth: 2
    functionLinenumber: 769
    functionLinenumberEnd: 778
    functionName: zebra_pbr_cleanup_rules
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - pbr_rule_free
    - dplane_pbr_rule_delete
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_cleanup_rules(struct hash_bucket *b, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_pbr.c:786,1
    - Dst: zebra_pbr_ipset_free
      Src: /src/frr/zebra/zebra_pbr.c:787,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 791
    functionName: zebra_pbr_cleanup_ipset
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_release
    - zebra_pbr_ipset_free
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_cleanup_ipset(struct hash_bucket *b, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_pbr.c:799,1
    - Dst: zebra_pbr_ipset_entry_free
      Src: /src/frr/zebra/zebra_pbr.c:800,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 804
    functionName: zebra_pbr_cleanup_ipset_entry
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_release
    - zebra_pbr_ipset_entry_free
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_cleanup_ipset_entry(struct hash_bucket *b, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_pbr.c:812,1
    - Dst: _zebra_pbr_iptable_free_all
      Src: /src/frr/zebra/zebra_pbr.c:813,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 817
    functionName: zebra_pbr_cleanup_iptable
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_release
    - _zebra_pbr_iptable_free_all
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_cleanup_iptable(struct hash_bucket *b, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_pbr.c:825,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_pbr.c:826,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_pbr.c:827,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_pbr.c:829,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 819
    functionDepth: 1
    functionLinenumber: 819
    functionLinenumberEnd: 831
    functionName: zebra_pbr_client_close_cleanup
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: int
    signature: int zebra_pbr_client_close_cleanup(struct zserv *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_pbr.c:835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 836
    functionName: zebra_pbr_init
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_pbr.c:845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 838
    functionDepth: 0
    functionLinenumber: 838
    functionLinenumberEnd: 850
    functionName: pbr_ipset_alloc_intern
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *pbr_ipset_alloc_intern(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_pbr.c:854,1
    - Dst: dplane_pbr_ipset_add
      Src: /src/frr/zebra/zebra_pbr.c:855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 852
    functionDepth: 1
    functionLinenumber: 852
    functionLinenumberEnd: 856
    functionName: zebra_pbr_create_ipset
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_get
    - dplane_pbr_ipset_add
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_create_ipset(struct zebra_pbr_ipset *ipset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_pbr.c:862,1
    - Dst: dplane_pbr_ipset_delete
      Src: /src/frr/zebra/zebra_pbr.c:863,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_pbr.c:865,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pbr.c:866,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pbr.c:868,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 858
    functionDepth: 1
    functionLinenumber: 858
    functionLinenumberEnd: 871
    functionName: zebra_pbr_destroy_ipset
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - dplane_pbr_ipset_delete
    - hash_lookup
    - zlog_debug
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_destroy_ipset(struct zebra_pbr_ipset *ipset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/zebra/zebra_pbr.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 882
    functionName: zebra_pbr_ipset_type2str
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *zebra_pbr_ipset_type2str(uint32_t type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/zebra/zebra_pbr.c:890,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 896
    functionName: zebra_pbr_ipset_pername_walkcb
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int zebra_pbr_ipset_pername_walkcb(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_pbr.c:905,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_pbr.c:906,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_pbr.c:908,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ipsetname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 898
    functionDepth: 1
    functionLinenumber: 898
    functionLinenumberEnd: 910
    functionName: zebra_pbr_lookup_ipset_pername
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hash_walk
    - memset
    linkageType: ''
    returnType: struct zebra_pbr_ipset
    signature: struct zebra_pbr_ipset *zebra_pbr_lookup_ipset_pername(char *ipsetname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_pbr.c:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 912
    functionDepth: 0
    functionLinenumber: 912
    functionLinenumberEnd: 924
    functionName: pbr_ipset_entry_alloc_intern
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *pbr_ipset_entry_alloc_intern(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_pbr.c:928,1
    - Dst: dplane_pbr_ipset_entry_add
      Src: /src/frr/zebra/zebra_pbr.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 931
    functionName: zebra_pbr_add_ipset_entry
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - dplane_pbr_ipset_entry_add
    - hash_get
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_add_ipset_entry(struct zebra_pbr_ipset_entry *ipset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_pbr.c:937,1
    - Dst: dplane_pbr_ipset_entry_delete
      Src: /src/frr/zebra/zebra_pbr.c:938,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_pbr.c:940,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pbr.c:941,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pbr.c:943,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 945
    functionName: zebra_pbr_del_ipset_entry
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - dplane_pbr_ipset_entry_delete
    - hash_lookup
    - zlog_debug
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_del_ipset_entry(struct zebra_pbr_ipset_entry *ipset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_pbr.c:1243,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_pbr.c:1245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - buffer
    - len
    - tcp_val
    argTypes:
    - char*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1234
    functionDepth: 0
    functionLinenumber: 1234
    functionLinenumberEnd: 1252
    functionName: zebra_pbr_tcpflags_snprintf
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - snprintf
    - memcmp
    linkageType: ''
    returnType: size_t
    signature: "size_t zebra_pbr_tcpflags_snprintf(char *buffer, size_t len,\n\t\t\t\t
      \  uint16_t tcp_val)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_pbr.c:1259,1
    - Dst: zebra_pbr_lookup_ipset_pername
      Src: /src/frr/zebra/zebra_pbr.c:1264,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1266,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1269,1
    - Dst: zebra_pbr_ipset_type2str
      Src: /src/frr/zebra/zebra_pbr.c:1270,1
    - Dst: family2str
      Src: /src/frr/zebra/zebra_pbr.c:1271,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_pbr.c:1275,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_pbr.c:1282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - ipsetname
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1256
    functionDepth: 2
    functionLinenumber: 1256
    functionLinenumberEnd: 1284
    functionName: zebra_pbr_show_ipset_list
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - vty_out
    - family2str
    - zebra_pbr_ipset_type2str
    - hash_walk
    - zebra_pbr_lookup_ipset_pername
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_show_ipset_list(struct vty *vty, char *ipsetname)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1291
    functionDepth: 0
    functionLinenumber: 1291
    functionLinenumberEnd: 1303
    functionName: zebra_pbr_rule_lookup_fwmark_walkcb
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zebra_pbr_rule_lookup_fwmark_walkcb(struct hash_bucket *bucket,\n\t\t\t\t\t
      \      void *arg)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1312,1
    - Dst: family2str
      Src: /src/frr/zebra/zebra_pbr.c:1314,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1321,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1323,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1328,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1331,1
    - Dst: zebra_pbr_tcpflags_snprintf
      Src: /src/frr/zebra/zebra_pbr.c:1339,1
    - Dst: zebra_pbr_tcpflags_snprintf
      Src: /src/frr/zebra/zebra_pbr.c:1342,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1345,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1349,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1355,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_pbr.c:1362,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1363,1
    - Dst: lookup_msg
      Src: /src/frr/zebra/zebra_pbr.c:1365,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1369,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pbr.c:1372,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1375,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_pbr.c:1382,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pbr.c:1387,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - iptable
    - vty
    - zns
    argTypes:
    - struct zebra_pbr_iptable*
    - struct vty*
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1392
    functionName: zebra_pbr_show_iptable_unit
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - vty_out
    - snprintf
    - zebra_pbr_tcpflags_snprintf
    - hook_call
    - family2str
    - hash_walk
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: "void zebra_pbr_show_iptable_unit(struct zebra_pbr_iptable *iptable,\n\t\t\t\t
      \      struct vty *vty,\n\t\t\t\t       struct zebra_ns *zns)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_pbr_show_iptable_unit
      Src: /src/frr/zebra/zebra_pbr.c:1404,1
    - Dst: strncmp
      Src: /src/frr/zebra/zebra_pbr.c:1405,1
    - Dst: zebra_pbr_show_iptable_unit
      Src: /src/frr/zebra/zebra_pbr.c:1408,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1394
    functionDepth: 2
    functionLinenumber: 1394
    functionLinenumberEnd: 1410
    functionName: zebra_pbr_show_iptable_walkcb
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - strncmp
    - zebra_pbr_show_iptable_unit
    linkageType: ''
    returnType: int
    signature: int zebra_pbr_show_iptable_walkcb(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_pbr.c:1414,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_pbr.c:1420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - iptable_name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1412
    functionDepth: 1
    functionLinenumber: 1412
    functionLinenumberEnd: 1421
    functionName: zebra_pbr_show_iptable
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - hash_walk
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: void zebra_pbr_show_iptable(struct vty *vty, char *iptable_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_pbr.c:1431,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_pbr.c:1432,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_pbr.c:1435,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_pbr.c:1436,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - s
    - zpi
    argTypes:
    - struct stream*
    - struct zebra_pbr_iptable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1423
    functionDepth: 1
    functionLinenumber: 1423
    functionLinenumberEnd: 1440
    functionName: zebra_pbr_iptable_update_interfacelist
    functionSourceFile: /src/frr/zebra/zebra_pbr.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - listnode_add
    - STREAM_GETL
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void zebra_pbr_iptable_update_interfacelist(struct stream *s,\n\t\t\t\t\t
      \   struct zebra_pbr_iptable *zpi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_mpls_netlink.c:22,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_mpls_netlink.c:24,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_mpls_netlink.c:25,1
    - Dst: dplane_ctx_get_best_nhlfe
      Src: /src/frr/zebra/zebra_mpls_netlink.c:28,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mpls_netlink.c:30,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_mpls_netlink.c:31,1
    - Dst: netlink_mpls_multipath_msg_encode
      Src: /src/frr/zebra/zebra_mpls_netlink.c:40,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 41
    functionName: netlink_lsp_msg_encoder
    functionSourceFile: /src/frr/zebra/zebra_mpls_netlink.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_op
    - dplane_ctx_get_best_nhlfe
    - zlog_debug
    - netlink_mpls_multipath_msg_encode
    - dplane_ctx_get_in_label
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_lsp_msg_encoder(struct zebra_dplane_ctx *ctx, void
      *buf,\n\t\t\t\tsize_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/zebra_mpls_netlink.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 7
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: netlink_put_lsp_update_msg
    functionSourceFile: /src/frr/zebra/zebra_mpls_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_lsp_update_msg(struct nl_batch
      *bth,\n\t\t\t\t\t\t   struct zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: netlink_put_pw_update_msg
    functionSourceFile: /src/frr/zebra/zebra_mpls_netlink.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_pw_update_msg(struct nl_batch
      *bth,\n\t\t\t\t\t\t  struct zebra_dplane_ctx *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/frr/zebra/zebra_mpls_netlink.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: mpls_kernel_init
    functionSourceFile: /src/frr/zebra/zebra_mpls_netlink.c
    functionUses: 1
    functionsReached:
    - stat
    linkageType: ''
    returnType: int
    signature: int mpls_kernel_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_vxlan_if.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: zebra_vxlan_vni_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zebra_vxlan_vni_hash_keymake(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 74
    functionName: zebra_vxlan_vni_hash_cmp
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_vxlan_vni_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct zebra_vxlan_if_ctx*::func
      Src: /src/frr/zebra/zebra_vxlan_if.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 88
    functionName: zebra_vxlan_if_vni_walk_callback
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - struct zebra_vxlan_if_ctx*::func
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_walk_callback(struct hash_bucket *bucket,\n\t\t\t\t\t
      \   void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct zebra_vxlan_if_ctx*::func
      Src: /src/frr/zebra/zebra_vxlan_if.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: zebra_vxlan_if_vni_iterate_callback
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - struct zebra_vxlan_if_ctx*::func
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_if_vni_iterate_callback(struct hash_bucket *bucket,\n\t\t\t\t\t\tvoid
      *ctxt)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_if.c:112,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:116,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:119,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:123,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:127,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:130,1
    - Dst: zl3vni_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan_if.c:134,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:139,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:143,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:145,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan_if.c:152,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan_if.c:154,1
    - Dst: zebra_evpn_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan_if.c:156,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:159,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:160,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:163,1
    - Dst: zebra_evpn_vxlan_del
      Src: /src/frr/zebra/zebra_vxlan_if.c:166,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan_if.c:167,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - ifp
    - vnip
    argTypes:
    - struct interface*
    - struct zebra_vxlan_vni*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 174
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 174
    functionName: zebra_vxlan_if_del_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_neigh_del_all
    - zebra_evpn_lookup
    - memset
    - zl3vni_from_vrf
    - zebra_vxlan_process_l3vni_oper_down
    - zebra_evpn_send_del_to_client
    - zebra_evpn_mac_del_all
    - zebra_evpn_vtep_del_all
    - zlog_debug
    - flog_err
    - is_evpn_enabled
    - listnode_delete
    - zl3vni_lookup
    - zebra_evpn_vxlan_del
    - assert
    - zl3vni_bridge_if_set
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_del_vni(struct interface *ifp,\n\t\t\t\t  struct
      zebra_vxlan_vni *vnip)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_if.c:191,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:195,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:200,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:204,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:213,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_if.c:218,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:218,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:219,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:220,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_if.c:228,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:229,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_vxlan_if.c:231,1
    - Dst: zl3vni_map_to_mac_vlan_if
      Src: /src/frr/zebra/zebra_vxlan_if.c:233,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:235,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:236,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_if.c:246,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:247,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:249,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:250,1
    - Dst: zl3vni_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan_if.c:262,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_if.c:266,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:266,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:267,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:272,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:274,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:281,1
    - Dst: zebra_evpn_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan_if.c:293,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:294,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:295,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:296,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:307,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:308,1
    - Dst: zebra_evpn_rem_mac_uninstall_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:309,1
    - Dst: zebra_vxlan_sg_deref
      Src: /src/frr/zebra/zebra_vxlan_if.c:315,1
    - Dst: zebra_vxlan_sg_ref
      Src: /src/frr/zebra/zebra_vxlan_if.c:317,1
    - Dst: zebra_evpn_es_set_base_evpn
      Src: /src/frr/zebra/zebra_vxlan_if.c:323,1
    - Dst: zevpn_vxlan_if_set
      Src: /src/frr/zebra/zebra_vxlan_if.c:325,1
    - Dst: zevpn_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan_if.c:330,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan_if.c:332,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_if.c:340,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan_if.c:347,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_vxlan_if.c:355,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_vxlan_if.c:359,1
    - Dst: zebra_evpn_rem_mac_install_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:361,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:363,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:365,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 101
    argCount: 3
    argNames:
    - ifp
    - vnip
    - ctx
    argTypes:
    - struct interface*
    - struct zebra_vxlan_vni*
    - struct zebra_vxlan_if_update_ctx*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 194
        line_start: 194
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 371
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 371
    functionName: zebra_vxlan_if_update_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_process_l3vni_oper_down
    - zebra_evpn_send_del_to_client
    - zl3vni_map_to_mac_vlan_if
    - zebra_evpn_send_add_to_client
    - zl3vni_lookup
    - zebra_evpn_es_set_base_evpn
    - is_l3vni_oper_up
    - zebra_evpn_rem_mac_uninstall_all
    - memset
    - zebra_evpn_vtep_del_all
    - zlog_debug
    - hash_iterate
    - zebra_vxlan_sg_ref
    - zebra_vxlan_process_l3vni_oper_up
    - assert
    - zebra_evpn_neigh_del_all
    - zevpn_vxlan_if_set
    - zebra_evpn_lookup
    - zevpn_bridge_if_set
    - zl3vni_map_to_svi_if
    - zvni_map_to_svi
    - zebra_evpn_read_mac_neigh
    - zebra_evpn_rem_mac_install_all
    - zebra_vxlan_sg_deref
    - zebra_evpn_mac_del_all
    - zl3vni_bridge_if_set
    - is_evpn_enabled
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_update_vni(struct interface *ifp,\n\t\t\t\t     struct
      zebra_vxlan_vni *vnip,\n\t\t\t\t     struct zebra_vxlan_if_update_ctx *ctx)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_if.c:384,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:388,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:392,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:397,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_vxlan_if.c:411,1
    - Dst: zl3vni_map_to_mac_vlan_if
      Src: /src/frr/zebra/zebra_vxlan_if.c:413,1
    - Dst: zl3vni_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan_if.c:417,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:419,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:420,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:427,1
    - Dst: zebra_evpn_add
      Src: /src/frr/zebra/zebra_vxlan_if.c:429,1
    - Dst: zebra_vxlan_sg_deref
      Src: /src/frr/zebra/zebra_vxlan_if.c:433,1
    - Dst: zebra_vxlan_sg_ref
      Src: /src/frr/zebra/zebra_vxlan_if.c:435,1
    - Dst: zebra_evpn_es_set_base_evpn
      Src: /src/frr/zebra/zebra_vxlan_if.c:441,1
    - Dst: zevpn_vxlan_if_set
      Src: /src/frr/zebra/zebra_vxlan_if.c:443,1
    - Dst: zevpn_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan_if.c:445,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan_if.c:446,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan_if.c:451,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan_if.c:453,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:457,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_if.c:466,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan_if.c:470,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_vxlan_if.c:473,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 2
    argNames:
    - ifp
    - vnip
    argTypes:
    - struct interface*
    - struct zebra_vxlan_vni*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 387
        line_start: 387
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 477
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 477
    functionName: zebra_vxlan_if_add_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zl3vni_map_to_mac_vlan_if
    - zebra_evpn_send_add_to_client
    - zl3vni_lookup
    - zebra_evpn_es_set_base_evpn
    - is_l3vni_oper_up
    - zebra_evpn_add
    - zl3vni_from_vrf
    - zlog_debug
    - zebra_vxlan_sg_ref
    - zebra_vxlan_process_l3vni_oper_up
    - listnode_add_sort_nodup
    - assert
    - zevpn_vxlan_if_set
    - zebra_evpn_lookup
    - zevpn_bridge_if_set
    - zl3vni_map_to_svi_if
    - zvni_map_to_svi
    - zebra_evpn_read_mac_neigh
    - zebra_vxlan_sg_deref
    - zl3vni_bridge_if_set
    - is_evpn_enabled
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_add_vni(struct interface *ifp,\n\t\t\t\t  struct
      zebra_vxlan_vni *vnip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_vl_vxl_deref
      Src: /src/frr/zebra/zebra_vxlan_if.c:483,1
    - Dst: zebra_vxlan_if_del_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - zif
    - vni
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 486
    functionName: zebra_vxlan_if_vni_entry_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_vl_vxl_deref
    - zebra_vxlan_if_del_vni
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_if_vni_entry_del(struct zebra_if *zif,\n\t\t\t\t\t
      struct zebra_vxlan_vni *vni)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_vl_vxl_ref
      Src: /src/frr/zebra/zebra_vxlan_if.c:491,1
    - Dst: zebra_vxlan_if_add_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - zif
    - vni
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 493
    functionName: zebra_vxlan_if_vni_entry_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_add_vni
    - zebra_evpn_vl_vxl_ref
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_entry_add(struct zebra_if *zif,\n\t\t\t\t\tstruct
      zebra_vxlan_vni *vni)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan_if.c:504,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan_if.c:506,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan_if.c:507,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:509,1
    - Dst: zebra_vxlan_if_vni_entry_add
      Src: /src/frr/zebra/zebra_vxlan_if.c:512,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:524,1
    - Dst: zebra_evpn_vl_vxl_deref
      Src: /src/frr/zebra/zebra_vxlan_if.c:530,1
    - Dst: zebra_evpn_vl_vxl_ref
      Src: /src/frr/zebra/zebra_vxlan_if.c:532,1
    - Dst: zebra_vxlan_if_update_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:533,1
    - Dst: zebra_vxlan_vni_free
      Src: /src/frr/zebra/zebra_vxlan_if.c:534,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - zif
    - vni
    - ctxt
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 495
    functionDepth: 3
    functionLinenumber: 495
    functionLinenumberEnd: 538
    functionName: zebra_vxlan_if_add_update_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_vl_vxl_ref
    - zebra_vxlan_if_vni_entry_add
    - zebra_vxlan_vni_free
    - zlog_debug
    - zebra_evpn_vl_vxl_deref
    - hash_release
    - zebra_vxlan_if_update_vni
    - hashcount
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_add_update_vni(struct zebra_if *zif,\n\t\t\t\t\t
      struct zebra_vxlan_vni *vni,\n\t\t\t\t\t void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_update_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - zif
    - vni
    - ctxt
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 540
    functionDepth: 2
    functionLinenumber: 540
    functionLinenumberEnd: 548
    functionName: zebra_vxlan_if_vni_entry_update_callback
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_update_vni
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_entry_update_callback(struct zebra_if *zif,\n\t\t\t\t\t\t
      \   struct zebra_vxlan_vni *vni,\n\t\t\t\t\t\t    void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_entry_del
      Src: /src/frr/zebra/zebra_vxlan_if.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - zif
    - vni
    - ctxt
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 550
    functionDepth: 3
    functionLinenumber: 550
    functionLinenumberEnd: 556
    functionName: zebra_vxlan_if_vni_entry_del_callback
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_entry_del
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_entry_del_callback(struct zebra_if *zif,\n\t\t\t\t\t\t
      struct zebra_vxlan_vni *vni,\n\t\t\t\t\t\t void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - zif
    - vni
    - ctxt
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 563
    functionName: zebra_vxlan_if_vni_entry_down_callback
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_down
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_entry_down_callback(struct zebra_if *zif,\n\t\t\t\t\t\t
      \ struct zebra_vxlan_vni *vni,\n\t\t\t\t\t\t  void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - zif
    - vni
    - ctxt
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 570
    functionName: zebra_vxlan_if_vni_entry_up_callback
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_up
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_entry_up_callback(struct zebra_if *zif,\n\t\t\t\t\t\tstruct
      zebra_vxlan_vni *vni,\n\t\t\t\t\t\tvoid *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_entry_del
      Src: /src/frr/zebra/zebra_vxlan_if.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 572
    functionDepth: 3
    functionLinenumber: 572
    functionLinenumberEnd: 580
    functionName: zebra_vxlan_if_vni_clean
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_entry_del
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_if_vni_clean(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan_if.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 589
    functionName: zebra_vxlan_vni_free
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_vni_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan_if.c:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 591
    functionDepth: 0
    functionLinenumber: 591
    functionLinenumberEnd: 603
    functionName: zebra_vxlan_vni_alloc
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *zebra_vxlan_vni_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_vxlan_if.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 609
    functionName: zebra_vxlan_vni_table_create
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: struct hash
    signature: struct hash *zebra_vxlan_vni_table_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_vxlan_if.c:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vni_table
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 614
    functionName: zebra_vxlan_vni_table_destroy
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_vni_table_destroy(struct hash *vni_table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:620,1
    - Dst: zebra_vxlan_if_vni_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:622,1
    - Dst: zebra_vxlan_vni_table_destroy
      Src: /src/frr/zebra/zebra_vxlan_if.c:624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 628
    functionName: zebra_vxlan_if_vni_table_destroy
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_iterate
    - VNI_INFO_FROM_ZEBRA_IF
    - zebra_vxlan_vni_table_destroy
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_vni_table_destroy(struct zebra_if *zif)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_VXLAN_IF_SVD
      Src: /src/frr/zebra/zebra_vxlan_if.c:634,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:637,1
    - Dst: zebra_vxlan_vni_table_create
      Src: /src/frr/zebra/zebra_vxlan_if.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 643
    functionName: zebra_vxlan_if_vni_table_create
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - zebra_vxlan_vni_table_create
    - IS_ZEBRA_VXLAN_IF_SVD
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_vni_table_create(struct zebra_if *zif)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:652,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:653,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:655,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:663,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:665,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:667,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:672,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - zif
    - vni
    argTypes:
    - struct zebra_if*
    - vni_t
    assertStmts:
    - condition: (vni)
      pos:
        line_end: 662
        line_start: 662
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    - condition: (vnip)
      pos:
        line_end: 654
        line_start: 654
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    - condition: (vnip->vni == vni)
      pos:
        line_end: 671
        line_start: 671
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 675
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 675
    functionName: zebra_vxlan_if_vni_find
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 2
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - memset
    - hash_lookup
    - IS_ZEBRA_VXLAN_IF_VNI
    - assert
    linkageType: ''
    returnType: struct zebra_vxlan_vni
    signature: "struct zebra_vxlan_vni *zebra_vxlan_if_vni_find(const struct zebra_if
      *zif,\n\t\t\t\t\t\tvni_t vni)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - zif
    - vnip
    - arg
    argTypes:
    - struct zebra_if*
    - struct zebra_vxlan_vni*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 690
    functionName: zif_vlanid_vni_walker
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zif_vlanid_vni_walker(struct zebra_if *zif,\n\t\t\t\t struct zebra_vxlan_vni
      *vnip, void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_VXLAN_IF_SVD
      Src: /src/frr/zebra/zebra_vxlan_if.c:697,1
    - Dst: zebra_vxlan_if_vni_walk
      Src: /src/frr/zebra/zebra_vxlan_if.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - zif
    - vid
    argTypes:
    - struct zebra_if*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 705
    functionName: zebra_vxlan_if_vlanid_vni_find
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_walk
    - IS_ZEBRA_VXLAN_IF_SVD
    linkageType: ''
    returnType: struct zebra_vxlan_vni
    signature: "struct zebra_vxlan_vni *zebra_vxlan_if_vlanid_vni_find(struct zebra_if
      *zif,\n\t\t\t\t\t\t       vlanid_t vid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:716,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:717,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan_if.c:718,1
    - Dst: func
      Src: /src/frr/zebra/zebra_vxlan_if.c:719,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:723,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - zif
    - arg
    argTypes:
    - struct zebra_if*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 707
    functionDepth: 2
    functionLinenumber: 707
    functionLinenumberEnd: 729
    functionName: zebra_vxlan_if_vni_iterate
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - memset
    - func
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_vxlan_if_vni_find
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_if_vni_iterate(struct zebra_if *zif,\n\t\t\t\tint
      (*func)(struct zebra_if *zif,\n\t\t\t\t\t    struct zebra_vxlan_vni *, void
      *),\n\t\t\t\tvoid *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:740,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:741,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan_if.c:742,1
    - Dst: func
      Src: /src/frr/zebra/zebra_vxlan_if.c:743,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:747,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_vxlan_if.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - zif
    - arg
    argTypes:
    - struct zebra_if*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 752
    functionName: zebra_vxlan_if_vni_walk
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - memset
    - func
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_vxlan_if_vni_find
    - hash_walk
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_if_vni_walk(struct zebra_if *zif,\n\t\t\t     int
      (*func)(struct zebra_if *zif,\n\t\t\t\t\t struct zebra_vxlan_vni *, void *),\n\t\t\t
      \    void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:762,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan_if.c:765,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - zif
    - br_if
    argTypes:
    - struct zebra_if*
    - struct interface*
    assertStmts:
    - condition: (vni)
      pos:
        line_end: 765
        line_start: 765
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 769
      start: 754
    functionDepth: 2
    functionLinenumber: 754
    functionLinenumberEnd: 769
    functionName: zebra_vxlan_if_access_vlan_vni_find
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_vxlan_if_vni_find
    - assert
    linkageType: ''
    returnType: vni_t
    signature: "vni_t zebra_vxlan_if_access_vlan_vni_find(struct zebra_if *zif,\n\t\t\t\t\t
      \ struct interface *br_if)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:780,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:782,1
    - Dst: zebra_vxlan_if_vni_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:786,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan_if.c:790,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:795,1
    - Dst: zebra_vxlan_vni_table_destroy
      Src: /src/frr/zebra/zebra_vxlan_if.c:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ifp
    - vni_table
    argTypes:
    - struct interface*
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 771
    functionDepth: 3
    functionLinenumber: 771
    functionLinenumberEnd: 804
    functionName: zebra_vxlan_if_vni_table_add_update
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - memset
    - zebra_vxlan_vni_table_destroy
    - zebra_vxlan_if_vni_iterate
    - hash_iterate
    - hashcount
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_table_add_update(struct interface *ifp,\n\t\t\t\t\tstruct
      hash *vni_table)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_VXLAN_IF_SVD
      Src: /src/frr/zebra/zebra_vxlan_if.c:816,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan_if.c:819,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:823,1
    - Dst: zebra_vxlan_if_update_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ifp
    - vni_id
    - mcast_group
    argTypes:
    - struct interface*
    - vni_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 830
    functionName: zebra_vxlan_if_vni_mcast_group_add_update
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_update_vni
    - zebra_vxlan_if_vni_find
    - memset
    - IS_ZEBRA_VXLAN_IF_SVD
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_mcast_group_add_update(struct interface *ifp,\n\t\t\t\t\t
      \     vni_t vni_id,\n\t\t\t\t\t      struct in_addr *mcast_group)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_VXLAN_IF_SVD
      Src: /src/frr/zebra/zebra_vxlan_if.c:841,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan_if.c:844,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan_if.c:848,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:851,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:855,1
    - Dst: zebra_vxlan_if_update_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:857,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ifp
    - vni_id
    - mcast_group
    argTypes:
    - struct interface*
    - vni_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 858
    functionName: zebra_vxlan_if_vni_mcast_group_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - memset
    - IS_ZEBRA_VXLAN_IF_SVD
    - memcmp
    - zebra_vxlan_if_vni_find
    - zebra_vxlan_if_update_vni
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_vni_mcast_group_del(struct interface *ifp, vni_t
      vni_id,\n\t\t\t\t       struct in_addr *mcast_group)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_if.c:868,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:872,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:875,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:879,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:882,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:886,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:890,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:892,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:898,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan_if.c:901,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan_if.c:903,1
    - Dst: zebra_evpn_vl_vxl_deref
      Src: /src/frr/zebra/zebra_vxlan_if.c:905,1
    - Dst: zebra_evpn_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan_if.c:908,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:911,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:912,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_vxlan_if.c:915,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - ifp
    - vnip
    argTypes:
    - struct interface*
    - struct zebra_vxlan_vni*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 871
        line_start: 871
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    - condition: (zevpn->vxlan_if == ifp)
      pos:
        line_end: 897
        line_start: 897
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 918
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 918
    functionName: zebra_vxlan_if_vni_down
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_neigh_del_all
    - zebra_evpn_lookup
    - zl3vni_from_vrf
    - zebra_vxlan_process_l3vni_oper_down
    - zebra_evpn_send_del_to_client
    - zebra_evpn_vtep_del_all
    - zlog_debug
    - zebra_evpn_vl_vxl_deref
    - is_evpn_enabled
    - listnode_delete
    - zl3vni_lookup
    - assert
    - zebra_evpn_mac_del_all
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_vni_down(struct interface *ifp, struct zebra_vxlan_vni
      *vnip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_if.c:929,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:933,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:935,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:936,1
    - Dst: zebra_vxlan_if_vni_down
      Src: /src/frr/zebra/zebra_vxlan_if.c:937,1
    - Dst: zebra_vxlan_if_vni_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:940,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 932
        line_start: 932
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 944
      start: 923
    functionDepth: 3
    functionLinenumber: 923
    functionLinenumberEnd: 944
    functionName: zebra_vxlan_if_down
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - zebra_vxlan_if_vni_iterate
    - IS_ZEBRA_VXLAN_IF_VNI
    - is_evpn_enabled
    - zebra_vxlan_if_vni_down
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_down(struct interface *ifp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_if.c:954,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:958,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:961,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_vxlan_if.c:966,1
    - Dst: zl3vni_map_to_mac_vlan_if
      Src: /src/frr/zebra/zebra_vxlan_if.c:967,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:970,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:977,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:978,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:984,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan_if.c:988,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan_if.c:990,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:996,1
    - Dst: zebra_evpn_vl_vxl_ref
      Src: /src/frr/zebra/zebra_vxlan_if.c:997,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan_if.c:998,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan_if.c:1003,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan_if.c:1005,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan_if.c:1011,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_vxlan_if.c:1012,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 2
    argNames:
    - ifp
    - vnip
    argTypes:
    - struct interface*
    - struct zebra_vxlan_vni*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 957
        line_start: 957
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    - condition: (zevpn->vxlan_if == ifp)
      pos:
        line_end: 995
        line_start: 995
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 1017
      start: 946
    functionDepth: 1
    functionLinenumber: 946
    functionLinenumberEnd: 1017
    functionName: zebra_vxlan_if_vni_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_read_mac_neigh
    - is_l3vni_oper_up
    - zebra_evpn_lookup
    - zebra_evpn_vl_vxl_ref
    - zl3vni_from_vrf
    - zl3vni_map_to_mac_vlan_if
    - listnode_add_sort_nodup
    - zlog_debug
    - zebra_evpn_send_add_to_client
    - zl3vni_map_to_svi_if
    - is_evpn_enabled
    - zvni_map_to_svi
    - zl3vni_lookup
    - zebra_vxlan_process_l3vni_oper_up
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_vni_up(struct interface *ifp, struct zebra_vxlan_vni
      *vnip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_if.c:1028,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1032,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:1034,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:1035,1
    - Dst: zebra_vxlan_if_vni_up
      Src: /src/frr/zebra/zebra_vxlan_if.c:1036,1
    - Dst: zebra_vxlan_if_vni_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:1039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 1031
        line_start: 1031
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 1043
      start: 1022
    functionDepth: 3
    functionLinenumber: 1022
    functionLinenumberEnd: 1043
    functionName: zebra_vxlan_if_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - zebra_vxlan_if_vni_iterate
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_vxlan_if_vni_up
    - is_evpn_enabled
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_up(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1053,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1056,1
    - Dst: IS_ZEBRA_VXLAN_IF_SVD
      Src: /src/frr/zebra/zebra_vxlan_if.c:1056,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:1058,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan_if.c:1059,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan_if.c:1062,1
    - Dst: zebra_vxlan_if_vni_entry_del
      Src: /src/frr/zebra/zebra_vxlan_if.c:1064,1
    - Dst: zebra_vxlan_vni_free
      Src: /src/frr/zebra/zebra_vxlan_if.c:1065,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ifp
    - vni
    argTypes:
    - struct interface*
    - vni_t
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 1052
        line_start: 1052
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    - condition: (IS_ZEBRA_VXLAN_IF_SVD(zif))
      pos:
        line_end: 1055
        line_start: 1055
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 1068
      start: 1045
    functionDepth: 3
    functionLinenumber: 1045
    functionLinenumberEnd: 1068
    functionName: zebra_vxlan_if_vni_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - memset
    - IS_ZEBRA_VXLAN_IF_SVD
    - zebra_vxlan_vni_free
    - zebra_vxlan_if_vni_entry_del
    - hash_release
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_vni_del(struct interface *ifp, vni_t vni)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1080,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:1082,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:1083,1
    - Dst: zebra_evpn_vl_vxl_deref
      Src: /src/frr/zebra/zebra_vxlan_if.c:1084,1
    - Dst: zebra_vxlan_if_del_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:1086,1
    - Dst: zebra_vxlan_if_vni_table_destroy
      Src: /src/frr/zebra/zebra_vxlan_if.c:1089,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 1079
        line_start: 1079
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 1092
      start: 1074
    functionDepth: 3
    functionLinenumber: 1074
    functionLinenumberEnd: 1092
    functionName: zebra_vxlan_if_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_vxlan_if_vni_table_destroy
    - zebra_evpn_vl_vxl_deref
    - assert
    - zebra_vxlan_if_del_vni
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_del(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1104,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:1106,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:1107,1
    - Dst: zebra_vxlan_if_update_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:1108,1
    - Dst: zebra_vxlan_if_vni_iterate
      Src: /src/frr/zebra/zebra_vxlan_if.c:1111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - ctx
    argTypes:
    - struct interface*
    - struct zebra_vxlan_if_update_ctx*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 1103
        line_start: 1103
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 1115
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1115
    functionName: zebra_vxlan_if_update
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - zebra_vxlan_if_vni_iterate
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_vxlan_if_update_vni
    - assert
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_if_update(struct interface *ifp,\n\t\t\t  struct zebra_vxlan_if_update_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1123,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1126,1
    - Dst: IS_ZEBRA_VXLAN_IF_SVD
      Src: /src/frr/zebra/zebra_vxlan_if.c:1126,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:1129,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan_if.c:1130,1
    - Dst: zebra_vxlan_if_vni_entry_add
      Src: /src/frr/zebra/zebra_vxlan_if.c:1132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ifp
    - vni
    argTypes:
    - struct interface*
    - struct zebra_vxlan_vni*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 1122
        line_start: 1122
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    - condition: (IS_ZEBRA_VXLAN_IF_SVD(zif))
      pos:
        line_end: 1125
        line_start: 1125
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 1133
      start: 1117
    functionDepth: 3
    functionLinenumber: 1117
    functionLinenumberEnd: 1133
    functionName: zebra_vxlan_if_vni_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 0
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - IS_ZEBRA_VXLAN_IF_SVD
    - zebra_vxlan_if_vni_entry_add
    - hash_get
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_vni_add(struct interface *ifp, struct zebra_vxlan_vni
      *vni)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_if.c:1145,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan_if.c:1147,1
    - Dst: VNI_INFO_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_vxlan_if.c:1148,1
    - Dst: zebra_evpn_vl_vxl_ref
      Src: /src/frr/zebra/zebra_vxlan_if.c:1149,1
    - Dst: zebra_vxlan_if_add_vni
      Src: /src/frr/zebra/zebra_vxlan_if.c:1151,1
    - Dst: zebra_vxlan_if_vni_table_create
      Src: /src/frr/zebra/zebra_vxlan_if.c:1154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 1144
        line_start: 1144
        source_file: /src/frr/zebra/zebra_vxlan_if.c
    constantsTouched: []
    func_position:
      end: 1159
      start: 1138
    functionDepth: 3
    functionLinenumber: 1138
    functionLinenumberEnd: 1159
    functionName: zebra_vxlan_if_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan_if.c
    functionUses: 1
    functionsReached:
    - VNI_INFO_FROM_ZEBRA_IF
    - zebra_evpn_vl_vxl_ref
    - zebra_vxlan_if_vni_table_create
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_vxlan_if_add_vni
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_if_add(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifreq
    - ifp
    argTypes:
    - struct ifreq*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: ifreq_set_name
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: void
    signature: void ifreq_set_name(struct ifreq *ifreq, struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/ioctl.c:45,1
    - Dst: zlog_err
      Src: /src/frr/zebra/ioctl.c:47,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:48,1
    - Dst: exit
      Src: /src/frr/zebra/ioctl.c:49,1
    - Dst: ioctl
      Src: /src/frr/zebra/ioctl.c:51,1
    - Dst: close
      Src: /src/frr/zebra/ioctl.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - request
    - buffer
    argTypes:
    - unsigned long
    - caddr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 61
    functionName: if_ioctl
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - exit
    - socket
    - ioctl
    - zlog_err
    - close
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int if_ioctl(unsigned long request, caddr_t buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/ioctl.c:45,1
    - Dst: zlog_err
      Src: /src/frr/zebra/ioctl.c:47,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:48,1
    - Dst: exit
      Src: /src/frr/zebra/ioctl.c:49,1
    - Dst: ioctl
      Src: /src/frr/zebra/ioctl.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 53
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - exit
    - socket
    - ioctl
    - zlog_err
    - safe_strerror
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/zebra/ioctl.c:72,1
    - Dst: zlog_err
      Src: /src/frr/zebra/ioctl.c:74,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:75,1
    - Dst: exit
      Src: /src/frr/zebra/ioctl.c:76,1
    - Dst: vrf_ioctl
      Src: /src/frr/zebra/ioctl.c:78,1
    - Dst: close
      Src: /src/frr/zebra/ioctl.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - request
    - buffer
    - vrf_id
    argTypes:
    - unsigned long
    - caddr_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 89
    functionName: vrf_if_ioctl
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - exit
    - vrf_ioctl
    - vrf_socket
    - zlog_err
    - close
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int vrf_if_ioctl(unsigned long request, caddr_t buffer, vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/zebra/ioctl.c:72,1
    - Dst: zlog_err
      Src: /src/frr/zebra/ioctl.c:74,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:75,1
    - Dst: exit
      Src: /src/frr/zebra/ioctl.c:76,1
    - Dst: vrf_ioctl
      Src: /src/frr/zebra/ioctl.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - exit
    - vrf_ioctl
    - vrf_socket
    - zlog_err
    - safe_strerror
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/ioctl.c:99,1
    - Dst: zlog_err
      Src: /src/frr/zebra/ioctl.c:101,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:102,1
    - Dst: exit
      Src: /src/frr/zebra/ioctl.c:103,1
    - Dst: ioctl
      Src: /src/frr/zebra/ioctl.c:106,1
    - Dst: close
      Src: /src/frr/zebra/ioctl.c:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - request
    - buffer
    argTypes:
    - unsigned long
    - caddr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 116
    functionName: if_ioctl_ipv6
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - exit
    - socket
    - ioctl
    - zlog_err
    - close
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int if_ioctl_ipv6(unsigned long request, caddr_t buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/ioctl.c:99,1
    - Dst: zlog_err
      Src: /src/frr/zebra/ioctl.c:101,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:102,1
    - Dst: exit
      Src: /src/frr/zebra/ioctl.c:103,1
    - Dst: ioctl
      Src: /src/frr/zebra/ioctl.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - exit
    - socket
    - ioctl
    - zlog_err
    - safe_strerror
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ifreq_set_name
      Src: /src/frr/zebra/ioctl.c:127,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/ioctl.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 137
    functionName: if_get_metric
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 2
    functionsReached:
    - ifreq_set_name
    - vrf_if_ioctl
    linkageType: ''
    returnType: void
    signature: void if_get_metric(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ifreq_set_name
      Src: /src/frr/zebra/ioctl.c:144,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/ioctl.c:147,1
    - Dst: zlog_info
      Src: /src/frr/zebra/ioctl.c:148,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/ioctl.c:157,1
    - Dst: zlog_info
      Src: /src/frr/zebra/ioctl.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 164
    functionName: if_get_mtu
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 2
    functionsReached:
    - zebra_interface_up_update
    - ifreq_set_name
    - vrf_if_ioctl
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void if_get_mtu(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/ioctl.c:188,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/ioctl.c:190,1
    - Dst: if_set_prefix_ctx
      Src: /src/frr/zebra/ioctl.c:192,1
    - Dst: if_set_prefix6_ctx
      Src: /src/frr/zebra/ioctl.c:194,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/ioctl.c:195,1
    - Dst: if_unset_prefix_ctx
      Src: /src/frr/zebra/ioctl.c:197,1
    - Dst: if_unset_prefix6_ctx
      Src: /src/frr/zebra/ioctl.c:199,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/ioctl.c:202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 207
    functionName: kernel_address_update_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_op
    - if_set_prefix_ctx
    - if_unset_prefix_ctx
    - if_unset_prefix6_ctx
    - dplane_ctx_get_intf_addr
    - if_set_prefix6_ctx
    - zlog_debug
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result kernel_address_update_ctx(\n\tstruct zebra_dplane_ctx
      *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/ioctl.c:221,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:223,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:224,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/ioctl.c:224,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:227,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:233,1
    - Dst: dplane_ctx_intf_is_connected
      Src: /src/frr/zebra/ioctl.c:235,1
    - Dst: dplane_ctx_get_intf_dest
      Src: /src/frr/zebra/ioctl.c:236,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:237,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:243,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:247,1
    - Dst: masklen2ip
      Src: /src/frr/zebra/ioctl.c:248,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:253,1
    - Dst: if_ioctl
      Src: /src/frr/zebra/ioctl.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 260
    functionName: if_set_prefix_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - memset
    - dplane_ctx_intf_is_connected
    - masklen2ip
    - strlcpy
    - dplane_ctx_get_ifname
    - dplane_ctx_get_intf_addr
    - if_ioctl
    - dplane_ctx_get_intf_dest
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_set_prefix_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/ioctl.c:272,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:274,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:275,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/ioctl.c:275,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:278,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:284,1
    - Dst: dplane_ctx_intf_is_connected
      Src: /src/frr/zebra/ioctl.c:286,1
    - Dst: dplane_ctx_get_intf_dest
      Src: /src/frr/zebra/ioctl.c:287,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:288,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:294,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:298,1
    - Dst: masklen2ip
      Src: /src/frr/zebra/ioctl.c:299,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:304,1
    - Dst: if_ioctl
      Src: /src/frr/zebra/ioctl.c:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 310
    functionName: if_unset_prefix_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - memset
    - dplane_ctx_intf_is_connected
    - masklen2ip
    - strlcpy
    - dplane_ctx_get_ifname
    - dplane_ctx_get_intf_addr
    - if_ioctl
    - dplane_ctx_get_intf_dest
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_unset_prefix_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/ioctl.c:324,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:328,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/ioctl.c:328,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:333,1
    - Dst: if_ioctl
      Src: /src/frr/zebra/ioctl.c:334,1
    - Dst: masklen2ip
      Src: /src/frr/zebra/ioctl.c:339,1
    - Dst: dplane_ctx_intf_is_broadcast
      Src: /src/frr/zebra/ioctl.c:341,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/zebra/ioctl.c:342,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:349,1
    - Dst: if_ioctl
      Src: /src/frr/zebra/ioctl.c:351,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:357,1
    - Dst: if_ioctl
      Src: /src/frr/zebra/ioctl.c:358,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 363
    functionName: if_set_prefix_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv4
    - masklen2ip
    - strlcpy
    - dplane_ctx_get_ifname
    - dplane_ctx_get_intf_addr
    - dplane_ctx_intf_is_broadcast
    - if_ioctl
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_set_prefix_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/ioctl.c:374,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:376,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/ioctl.c:376,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:379,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:381,1
    - Dst: if_ioctl
      Src: /src/frr/zebra/ioctl.c:382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 387
    functionName: if_unset_prefix_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - memset
    - strlcpy
    - dplane_ctx_get_ifname
    - dplane_ctx_get_intf_addr
    - if_ioctl
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_unset_prefix_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ifreq_set_name
      Src: /src/frr/zebra/ioctl.c:398,1
    - Dst: ifreq_set_name
      Src: /src/frr/zebra/ioctl.c:399,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/ioctl.c:401,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ioctl.c:404,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:406,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/ioctl.c:410,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:430,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/ioctl.c:431,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/ioctl.c:437,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ioctl.c:442,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:444,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/ioctl.c:447,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/ioctl.c:450,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/ioctl.c:452,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:468,1
    - Dst: if_ioctl
      Src: /src/frr/zebra/ioctl.c:470,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ioctl.c:472,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/ioctl.c:474,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/ioctl.c:477,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/ioctl.c:479,1
    - Dst: if_flags_update
      Src: /src/frr/zebra/ioctl.c:484,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 485
    functionName: if_get_flags
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - strlcpy
    - ifreq_set_name
    - safe_strerror
    - SET_FLAG
    - UNSET_FLAG
    - if_flags_update
    - if_ioctl
    - flog_err_sys
    - vrf_if_ioctl
    linkageType: ''
    returnType: void
    signature: void if_get_flags(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:493,1
    - Dst: ifreq_set_name
      Src: /src/frr/zebra/ioctl.c:494,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/ioctl.c:499,1
    - Dst: zlog_info
      Src: /src/frr/zebra/ioctl.c:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ifp
    - flags
    argTypes:
    - struct interface*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 507
    functionName: if_set_flags
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - ifreq_set_name
    - vrf_if_ioctl
    - zlog_info
    - memset
    linkageType: ''
    returnType: int
    signature: int if_set_flags(struct interface *ifp, uint64_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:515,1
    - Dst: ifreq_set_name
      Src: /src/frr/zebra/ioctl.c:516,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/ioctl.c:521,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/ioctl.c:524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ifp
    - flags
    argTypes:
    - struct interface*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 529
    functionName: if_unset_flags
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 0
    functionsReached:
    - ifreq_set_name
    - vrf_if_ioctl
    - memset
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int if_unset_flags(struct interface *ifp, uint64_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/ioctl.c:549,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:551,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:552,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/ioctl.c:553,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:555,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:561,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:563,1
    - Dst: masklen2ip6
      Src: /src/frr/zebra/ioctl.c:564,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:569,1
    - Dst: if_ioctl_ipv6
      Src: /src/frr/zebra/ioctl.c:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 583
    functionName: if_set_prefix6_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - memset
    - strlcpy
    - masklen2ip6
    - dplane_ctx_get_ifname
    - dplane_ctx_get_intf_addr
    - if_ioctl_ipv6
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_set_prefix6_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/ioctl.c:596,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:598,1
    - Dst: strlcpy
      Src: /src/frr/zebra/ioctl.c:599,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/ioctl.c:600,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:602,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:608,1
    - Dst: memset
      Src: /src/frr/zebra/ioctl.c:610,1
    - Dst: masklen2ip6
      Src: /src/frr/zebra/ioctl.c:611,1
    - Dst: memcpy
      Src: /src/frr/zebra/ioctl.c:616,1
    - Dst: if_ioctl_ipv6
      Src: /src/frr/zebra/ioctl.c:623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 588
    functionDepth: 2
    functionLinenumber: 588
    functionLinenumberEnd: 627
    functionName: if_unset_prefix6_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached:
    - memset
    - strlcpy
    - masklen2ip6
    - dplane_ctx_get_ifname
    - dplane_ctx_get_intf_addr
    - if_ioctl_ipv6
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_unset_prefix6_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 635
    functionName: if_set_prefix6_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int if_set_prefix6_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 640
    functionName: if_unset_prefix6_ctx
    functionSourceFile: /src/frr/zebra/ioctl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int if_unset_prefix6_ctx(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zl3vni
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: IS_ZL3VNI_SVD_BACKED
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZL3VNI_SVD_BACKED(zl3vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: zl3vni_vxlan_if_name
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zl3vni_vxlan_if_name(struct zebra_l3vni *zl3vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: zl3vni_svi_if_name
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zl3vni_svi_if_name(struct zebra_l3vni *zl3vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan_private.h:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: zl3vni_vrf_name
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached:
    - vrf_id_to_name
    linkageType: ''
    returnType: char
    signature: char *zl3vni_vrf_name(struct zebra_l3vni *zl3vni)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_vxlan_private.h:92,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_private.h:94,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan_private.h:99,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan_private.h:108,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan_private.h:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - zl3vni
    - buf
    - size
    argTypes:
    - struct zebra_l3vni*
    - char*
    - int
    assertStmts:
    - condition: (size >= ETHER_ADDR_STRLEN)
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/zebra/zebra_vxlan_private.h
    constantsTouched: []
    func_position:
      end: 120
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 120
    functionName: zl3vni_rmac2str
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached:
    - snprintf
    - XMALLOC
    - assert
    linkageType: ''
    returnType: char
    signature: "char *zl3vni_rmac2str(struct zebra_l3vni *zl3vni, char *buf,\n\t\t\t\t\t
      \ int size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/zebra/zebra_vxlan_private.h:129,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan_private.h:131,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan_private.h:136,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan_private.h:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - zl3vni
    - buf
    - size
    argTypes:
    - struct zebra_l3vni*
    - char*
    - int
    assertStmts:
    - condition: (size >= ETHER_ADDR_STRLEN)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/zebra/zebra_vxlan_private.h
    constantsTouched: []
    func_position:
      end: 148
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 148
    functionName: zl3vni_sysmac2str
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached:
    - snprintf
    - XMALLOC
    - assert
    linkageType: ''
    returnType: char
    signature: "char *zl3vni_sysmac2str(struct zebra_l3vni *zl3vni,\n\t\t\t\t\t    char
      *buf, int size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan_private.h:160,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_private.h:161,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_private.h:162,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 163
    functionName: is_l3vni_oper_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 3
    functionsReached:
    - if_is_operative
    - is_evpn_enabled
    linkageType: ''
    returnType: int
    signature: int is_l3vni_oper_up(struct zebra_l3vni *zl3vni)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_private.h:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 176
    functionName: zl3vni_state2str
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached:
    - is_l3vni_oper_up
    linkageType: ''
    returnType: char
    signature: char *zl3vni_state2str(struct zebra_l3vni *zl3vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: zl3vni_vrf_id
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t zl3vni_vrf_id(struct zebra_l3vni *zl3vni)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan_private.h:189,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan_private.h:192,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan_private.h:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - zl3vni
    - rmac
    argTypes:
    - struct zebra_l3vni*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 194
    functionName: zl3vni_get_svi_rmac
    functionSourceFile: /src/frr/zebra/zebra_vxlan_private.h
    functionUses: 0
    functionsReached:
    - is_l3vni_oper_up
    - memcpy
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void zl3vni_get_svi_rmac(struct zebra_l3vni *zl3vni,\n\t\t\t\t       struct
      ethaddr *rmac)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:34,1
    - Dst: typeof
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:34,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:36,1
    - Dst: fpm__delete_route__init
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:40,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:41,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:41,1
    - Dst: qpb_address_family_set
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:43,1
    - Dst: rib_dest_af
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:43,1
    - Dst: fpm_route_key_create
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:49,1
    - Dst: rib_dest_prefix
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:49,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - allocator
    - dest
    - re
    argTypes:
    - qpb_allocator_t*
    - rib_dest_t*
    - struct route_entry*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (0)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    constantsTouched: []
    func_position:
      end: 56
      start: 28
    functionDepth: 3
    functionLinenumber: 28
    functionLinenumberEnd: 56
    functionName: create_delete_route_message
    functionSourceFile: /src/frr/zebra/zebra_fpm_protobuf.c
    functionUses: 0
    functionsReached:
    - typeof
    - fpm_route_key_create
    - zvrf_id
    - QPB_ALLOC
    - rib_dest_prefix
    - rib_dest_af
    - fpm__delete_route__init
    - rib_dest_vrf
    - assert
    - qpb_address_family_set
    linkageType: ''
    returnType: Fpm__DeleteRoute
    signature: "Fpm__DeleteRoute *create_delete_route_message(qpb_allocator_t *allocator,\n\t\t\t\t\t\t
      \    rib_dest_t *dest,\n\t\t\t\t\t\t     struct route_entry *re)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:96,1
    - Dst: typeof
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:96,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:98,1
    - Dst: fpm__nexthop__init
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:102,1
    - Dst: qpb_if_identifier_create
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:106,1
    - Dst: qpb_l3_address_create
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:110,1
    - Dst: rib_dest_af
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:111,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 4
    argNames:
    - allocator
    - msg
    - dest
    - nexthop
    argTypes:
    - qpb_allocator_t*
    - Fpm__AddRoute*
    - rib_dest_t*
    - struct nexthop*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    constantsTouched: []
    func_position:
      end: 121
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 121
    functionName: add_nexthop
    functionSourceFile: /src/frr/zebra/zebra_fpm_protobuf.c
    functionUses: 3
    functionsReached:
    - assert
    - typeof
    - QPB_ALLOC
    - qpb_l3_address_create
    - fpm__nexthop__init
    - rib_dest_af
    - qpb_if_identifier_create
    linkageType: ''
    returnType: int
    signature: "int add_nexthop(qpb_allocator_t *allocator, Fpm__AddRoute *msg,\n\t\t\t
      \     rib_dest_t *dest, struct nexthop *nexthop)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:135,1
    - Dst: typeof
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:135,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:137,1
    - Dst: fpm__add_route__init
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:141,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:143,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:143,1
    - Dst: qpb_address_family_set
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:145,1
    - Dst: rib_dest_af
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:145,1
    - Dst: fpm_route_key_create
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:151,1
    - Dst: rib_dest_prefix
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:151,1
    - Dst: qpb_protocol_set
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:152,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:161,1
    - Dst: array_size
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:165,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:182,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:185,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:193,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:194,1
    - Dst: qpb_alloc_ptr_array
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:201,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:202,1
    - Dst: add_nexthop
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:208,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:209,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:214,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 3
    argNames:
    - allocator
    - dest
    - re
    argTypes:
    - qpb_allocator_t*
    - rib_dest_t*
    - struct route_entry*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 201
        line_start: 201
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (msg->n_nexthops == num_nhs)
      pos:
        line_end: 213
        line_start: 213
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (0)
      pos:
        line_end: 136
        line_start: 136
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (0)
      pos:
        line_end: 193
        line_start: 193
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (0)
      pos:
        line_end: 208
        line_start: 208
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    constantsTouched: []
    func_position:
      end: 217
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 217
    functionName: create_add_route_message
    functionSourceFile: /src/frr/zebra/zebra_fpm_protobuf.c
    functionUses: 0
    functionsReached:
    - add_nexthop
    - qpb_protocol_set
    - typeof
    - fpm_route_key_create
    - zvrf_id
    - ALL_NEXTHOPS
    - QPB_ALLOC
    - CHECK_FLAG
    - fpm__add_route__init
    - rib_dest_prefix
    - zfpm_debug
    - rib_dest_af
    - array_size
    - qpb_alloc_ptr_array
    - rib_dest_vrf
    - assert
    - qpb_address_family_set
    linkageType: ''
    returnType: Fpm__AddRoute
    signature: "Fpm__AddRoute *create_add_route_message(qpb_allocator_t *allocator,\n\t\t\t\t\t
      \      rib_dest_t *dest,\n\t\t\t\t\t       struct route_entry *re)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: QPB_ALLOC
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:228,1
    - Dst: typeof
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:228,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:230,1
    - Dst: fpm__message__init
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:234,1
    - Dst: create_delete_route_message
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:240,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:242,1
    - Dst: create_add_route_message
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:250,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - allocator
    - dest
    - re
    argTypes:
    - qpb_allocator_t*
    - rib_dest_t*
    - struct route_entry*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 229
        line_start: 229
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (0)
      pos:
        line_end: 241
        line_start: 241
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (0)
      pos:
        line_end: 251
        line_start: 251
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    constantsTouched: []
    func_position:
      end: 257
      start: 222
    functionDepth: 4
    functionLinenumber: 222
    functionLinenumberEnd: 257
    functionName: create_route_message
    functionSourceFile: /src/frr/zebra/zebra_fpm_protobuf.c
    functionUses: 0
    functionsReached:
    - typeof
    - QPB_ALLOC
    - fpm__message__init
    - create_add_route_message
    - create_delete_route_message
    - assert
    linkageType: ''
    returnType: Fpm__Message
    signature: "Fpm__Message *create_route_message(qpb_allocator_t *allocator,\n\t\t\t\t\t
      \ rib_dest_t *dest,\n\t\t\t\t\t  struct route_entry *re)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QPB_DECLARE_STACK_ALLOCATOR
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:272,1
    - Dst: QPB_INIT_STACK_ALLOCATOR
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:275,1
    - Dst: create_route_message
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:277,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:279,1
    - Dst: fpm__message__pack
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:283,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:284,1
    - Dst: QPB_RESET_STACK_ALLOCATOR
      Src: /src/frr/zebra/zebra_fpm_protobuf.c:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - dest
    - re
    - in_buf
    - in_buf_len
    argTypes:
    - rib_dest_t*
    - struct route_entry*
    - uint8_t*
    - size_t
    assertStmts:
    - condition: (0)
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    - condition: (len <= in_buf_len)
      pos:
        line_end: 283
        line_start: 283
        source_file: /src/frr/zebra/zebra_fpm_protobuf.c
    constantsTouched: []
    func_position:
      end: 288
      start: 268
    functionDepth: 5
    functionLinenumber: 268
    functionLinenumberEnd: 288
    functionName: zfpm_protobuf_encode_route
    functionSourceFile: /src/frr/zebra/zebra_fpm_protobuf.c
    functionUses: 3
    functionsReached:
    - assert
    - create_route_message
    - QPB_DECLARE_STACK_ALLOCATOR
    - fpm__message__pack
    - QPB_RESET_STACK_ALLOCATOR
    - QPB_INIT_STACK_ALLOCATOR
    linkageType: ''
    returnType: int
    signature: "int zfpm_protobuf_encode_route(rib_dest_t *dest, struct route_entry
      *re,\n\t\t\t       uint8_t *in_buf, size_t in_buf_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NHE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: ZEBRA_NHG_CREATED
    functionSourceFile: /src/frr/zebra/zebra_nhg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_NHG_CREATED(NHE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NHE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: ZEBRA_OWNED
    functionSourceFile: /src/frr/zebra/zebra_nhg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_OWNED(NHE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NHE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    functionName: PROTO_OWNED
    functionSourceFile: /src/frr/zebra/zebra_nhg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROTO_OWNED(NHE)
  - BBCount: 30
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 61
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 100
    functionName: nlmsg_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nlmsg_type2str(uint16_t type)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 132
    functionName: af_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *af_type2str(int type)
  - BBCount: 58
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 117
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 254
    functionName: ifi_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ifi_type2str(int type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 268
    functionName: ifla_pdr_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ifla_pdr_type2str(int type)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 288
    functionName: ifla_info_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ifla_info_type2str(int type)
  - BBCount: 48
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 97
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 398
    functionName: rta_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rta_type2str(int type)
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 430
    functionName: rtm_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rtm_type2str(int type)
  - BBCount: 21
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 476
    functionName: rtm_protocol2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rtm_protocol2str(int type)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 494
    functionName: rtm_scope2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rtm_scope2str(int type)
  - BBCount: 21
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 540
    functionName: rtm_rta2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rtm_rta2str(int type)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 570
    functionName: neigh_rta2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *neigh_rta2str(int type)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 596
    functionName: ifa_rta2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ifa_rta2str(int type)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 626
    functionName: nhm_rta2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nhm_rta2str(int type)
  - BBCount: 26
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 53
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 682
    functionName: frh_rta2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *frh_rta2str(int type)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - action
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 706
    functionName: frh_action2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *frh_action2str(uint8_t action)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 732
    functionName: ncm_rta2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ncm_rta2str(int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ival
    - prefix
    argTypes:
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 737
    functionName: dump_on_off
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void dump_on_off(uint32_t ival, const char *prefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug_nl.c:742,1
    - Dst: strlcat
      Src: /src/frr/zebra/debug_nl.c:746,1
    - Dst: strlcat
      Src: /src/frr/zebra/debug_nl.c:748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - flags
    - flag
    - flagstr
    - buf
    - buflen
    argTypes:
    - int
    - int
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 749
    functionName: flag_write
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - strlcat
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: "void flag_write(int flags, int flag, const char *flagstr,\n\t\t\t
      \     char *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:757,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:758,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:759,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:760,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:761,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:764,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:765,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:766,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - uint16_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 770
    functionName: nlmsg_flags2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - flag_write
    linkageType: ''
    returnType: char
    signature: char *nlmsg_flags2str(uint16_t flags, char *buf, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:777,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:778,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:779,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:780,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:781,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:782,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:783,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:784,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:785,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:786,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:787,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:788,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:789,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:790,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:791,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 772
    functionDepth: 2
    functionLinenumber: 772
    functionLinenumberEnd: 795
    functionName: if_flags2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - flag_write
    linkageType: ''
    returnType: char
    signature: char *if_flags2str(uint32_t flags, char *buf, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:802,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:803,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 797
    functionDepth: 2
    functionLinenumber: 797
    functionLinenumberEnd: 807
    functionName: rtm_flags2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - flag_write
    linkageType: ''
    returnType: char
    signature: char *rtm_flags2str(uint32_t flags, char *buf, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:814,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:815,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:816,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:817,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:818,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:819,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:820,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 809
    functionDepth: 2
    functionLinenumber: 809
    functionLinenumberEnd: 824
    functionName: neigh_state2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - flag_write
    linkageType: ''
    returnType: char
    signature: char *neigh_state2str(uint32_t flags, char *buf, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:831,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:832,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:833,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:834,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:835,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:837,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 826
    functionDepth: 2
    functionLinenumber: 826
    functionLinenumberEnd: 842
    functionName: neigh_flags2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - flag_write
    linkageType: ''
    returnType: char
    signature: char *neigh_flags2str(uint32_t flags, char *buf, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:849,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:850,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:851,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:852,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:853,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:854,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:855,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:856,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:857,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:858,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:859,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 844
    functionDepth: 2
    functionLinenumber: 844
    functionLinenumberEnd: 863
    functionName: ifa_flags2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - flag_write
    linkageType: ''
    returnType: char
    signature: char *ifa_flags2str(uint32_t flags, char *buf, size_t buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:870,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:871,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:872,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:873,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:874,1
    - Dst: flag_write
      Src: /src/frr/zebra/debug_nl.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - flags
    - buf
    - buflen
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 865
    functionDepth: 2
    functionLinenumber: 865
    functionLinenumberEnd: 878
    functionName: nh_flags2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - flag_write
    linkageType: ''
    returnType: char
    signature: char *nh_flags2str(uint32_t flags, char *buf, size_t buflen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:890,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:893,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:894,1
    - Dst: ifla_pdr_type2str
      Src: /src/frr/zebra/debug_nl.c:896,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:901,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:905,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:906,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:915,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - rta
    - msglen
    argTypes:
    - struct rtattr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 917
    functionName: nllink_pdr_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - ifla_pdr_type2str
    - zlog_debug
    - RTA_DATA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nllink_pdr_dump(struct rtattr *rta, size_t msglen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:926,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:929,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:930,1
    - Dst: ifla_info_type2str
      Src: /src/frr/zebra/debug_nl.c:932,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:936,1
    - Dst: snprintf
      Src: /src/frr/zebra/debug_nl.c:940,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:940,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:941,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:945,1
    - Dst: snprintf
      Src: /src/frr/zebra/debug_nl.c:949,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:949,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:950,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:959,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - rta
    - msglen
    argTypes:
    - struct rtattr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 919
    functionDepth: 1
    functionLinenumber: 919
    functionLinenumberEnd: 961
    functionName: nllink_linkinfo_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - ifla_info_type2str
    - snprintf
    - zlog_debug
    - RTA_DATA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nllink_linkinfo_dump(struct rtattr *rta, size_t msglen)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: IFLA_RTA
      Src: /src/frr/zebra/debug_nl.c:975,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:978,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:981,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:983,1
    - Dst: rta_type2str
      Src: /src/frr/zebra/debug_nl.c:984,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:988,1
    - Dst: snprintf
      Src: /src/frr/zebra/debug_nl.c:992,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:992,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:993,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1012,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1016,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1017,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1022,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1026,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1027,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1030,1
    - Dst: snprintf
      Src: /src/frr/zebra/debug_nl.c:1033,1
    - Dst: strlcat
      Src: /src/frr/zebra/debug_nl.c:1034,1
    - Dst: strlen
      Src: /src/frr/zebra/debug_nl.c:1039,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1041,1
    - Dst: nllink_linkinfo_dump
      Src: /src/frr/zebra/debug_nl.c:1045,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1045,1
    - Dst: nllink_pdr_dump
      Src: /src/frr/zebra/debug_nl.c:1049,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1049,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1058,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 68
    argCount: 2
    argNames:
    - ifi
    - msglen
    argTypes:
    - struct ifinfomsg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 963
    functionDepth: 2
    functionLinenumber: 963
    functionLinenumberEnd: 1060
    functionName: nllink_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - IFLA_RTA
    - strlcat
    - strlen
    - RTA_NEXT
    - rta_type2str
    - snprintf
    - nllink_pdr_dump
    - nllink_linkinfo_dump
    - zlog_debug
    - RTA_DATA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nllink_dump(struct ifinfomsg *ifi, size_t msglen)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: RTM_RTA
      Src: /src/frr/zebra/debug_nl.c:1071,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:1074,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1077,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1078,1
    - Dst: rtm_rta2str
      Src: /src/frr/zebra/debug_nl.c:1080,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1087,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1088,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1092,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1093,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1102,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1103,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1106,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1107,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1115,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1116,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1128,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 2
    argNames:
    - rtm
    - msglen
    argTypes:
    - struct rtmsg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1062
    functionDepth: 1
    functionLinenumber: 1062
    functionLinenumberEnd: 1130
    functionName: nlroute_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - RTM_RTA
    - rtm_rta2str
    - zlog_debug
    - RTA_DATA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nlroute_dump(struct rtmsg *rtm, size_t msglen)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: NDA_RTA
      Src: /src/frr/zebra/debug_nl.c:1150,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:1153,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1156,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1158,1
    - Dst: neigh_rta2str
      Src: /src/frr/zebra/debug_nl.c:1159,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1162,1
    - Dst: snprintf
      Src: /src/frr/zebra/debug_nl.c:1165,1
    - Dst: strlcat
      Src: /src/frr/zebra/debug_nl.c:1166,1
    - Dst: strlen
      Src: /src/frr/zebra/debug_nl.c:1171,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1173,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1179,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1180,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1183,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1184,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1192,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1193,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1202,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 2
    argNames:
    - ndm
    - msglen
    argTypes:
    - struct ndmsg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1132
    functionDepth: 1
    functionLinenumber: 1132
    functionLinenumberEnd: 1204
    functionName: nlneigh_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - strlcat
    - RTA_NEXT
    - strlen
    - snprintf
    - zlog_debug
    - RTA_DATA
    - neigh_rta2str
    - NDA_RTA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nlneigh_dump(struct ndmsg *ndm, size_t msglen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ndm
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1143
    functionDepth: 0
    functionLinenumber: 1143
    functionLinenumberEnd: 1147
    functionName: NDA_RTA
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NDA_RTA(ndm)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IFA_RTA
      Src: /src/frr/zebra/debug_nl.c:1213,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:1216,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1219,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1220,1
    - Dst: ifa_rta2str
      Src: /src/frr/zebra/debug_nl.c:1221,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1224,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1225,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1229,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1229,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1237,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1238,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1241,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1242,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1255,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 2
    argNames:
    - ifa
    - msglen
    argTypes:
    - struct ifaddrmsg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1206
    functionDepth: 1
    functionLinenumber: 1206
    functionLinenumberEnd: 1257
    functionName: nlifa_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - ifa_rta2str
    - IFA_RTA
    - zlog_debug
    - RTA_DATA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nlifa_dump(struct ifaddrmsg *ifa, size_t msglen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TUNNEL_RTA
      Src: /src/frr/zebra/debug_nl.c:1266,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:1269,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1275,1
    - Dst: memset
      Src: /src/frr/zebra/debug_nl.c:1279,1
    - Dst: netlink_parse_rtattr_flags
      Src: /src/frr/zebra/debug_nl.c:1281,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1282,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1282,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1287,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1290,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1291,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1293,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - tnlm
    - msglen
    argTypes:
    - struct tunnel_msg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1259
    functionDepth: 2
    functionLinenumber: 1259
    functionLinenumberEnd: 1295
    functionName: nltnl_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - memset
    - netlink_parse_rtattr_flags
    - zlog_debug
    - RTA_DATA
    - TUNNEL_RTA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nltnl_dump(struct tunnel_msg *tnlm, size_t msglen)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1297
    functionDepth: 0
    functionLinenumber: 1297
    functionLinenumberEnd: 1319
    functionName: lwt_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *lwt_type2str(uint16_t type)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1321
    functionDepth: 0
    functionLinenumber: 1321
    functionLinenumberEnd: 1331
    functionName: nhg_type2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nhg_type2str(uint16_t type)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: RTM_NHA
      Src: /src/frr/zebra/debug_nl.c:1344,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:1348,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1351,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1353,1
    - Dst: nhm_rta2str
      Src: /src/frr/zebra/debug_nl.c:1354,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1357,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1358,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1361,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1362,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1364,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1365,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1370,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1374,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1375,1
    - Dst: lwt_type2str
      Src: /src/frr/zebra/debug_nl.c:1375,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1378,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1379,1
    - Dst: nhg_type2str
      Src: /src/frr/zebra/debug_nl.c:1379,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1385,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1386,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1391,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1392,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1395,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1396,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1400,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1406,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1410,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1419,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 63
    argCount: 2
    argNames:
    - nhm
    - msglen
    argTypes:
    - struct nhmsg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1333
    functionDepth: 1
    functionLinenumber: 1333
    functionLinenumberEnd: 1421
    functionName: nlnh_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - nhm_rta2str
    - nhg_type2str
    - RTM_NHA
    - zlog_debug
    - RTA_DATA
    - lwt_type2str
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nlnh_dump(struct nhmsg *nhm, size_t msglen)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: RTM_RTA
      Src: /src/frr/zebra/debug_nl.c:1436,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:1439,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1442,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1443,1
    - Dst: frh_rta2str
      Src: /src/frr/zebra/debug_nl.c:1444,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1450,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1451,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1454,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1455,1
    - Dst: snprintf
      Src: /src/frr/zebra/debug_nl.c:1464,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1464,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1465,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1478,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1479,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1484,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1485,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1489,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1490,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1496,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1497,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1501,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1503,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1505,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1510,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1512,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1514,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1524,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 75
    argCount: 2
    argNames:
    - frh
    - msglen
    argTypes:
    - struct fib_rule_hdr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1423
    functionDepth: 1
    functionLinenumber: 1423
    functionLinenumberEnd: 1526
    functionName: nlrule_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - frh_rta2str
    - snprintf
    - RTM_RTA
    - zlog_debug
    - RTA_DATA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nlrule_dump(struct fib_rule_hdr *frh, size_t msglen)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - nltype
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1528
    functionDepth: 0
    functionLinenumber: 1528
    functionLinenumberEnd: 1544
    functionName: tcm_nltype2str
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *tcm_nltype2str(int nltype)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/debug_nl.c:1553,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/debug_nl.c:1557,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/debug_nl.c:1560,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1562,1
    - Dst: ncm_rta2str
      Src: /src/frr/zebra/debug_nl.c:1563,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1567,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1568,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/debug_nl.c:1579,1
    - Dst: dump_on_off
      Src: /src/frr/zebra/debug_nl.c:1580,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/debug_nl.c:1588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - ncm
    - msglen
    argTypes:
    - struct netconfmsg*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1546
    functionDepth: 2
    functionLinenumber: 1546
    functionLinenumberEnd: 1590
    functionName: nlncm_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - dump_on_off
    - ncm_rta2str
    - zlog_debug
    - RTA_DATA
    - NLMSG_ALIGN
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: void nlncm_dump(const struct netconfmsg *ncm, size_t msglen)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1611,1
    - Dst: nlmsg_type2str
      Src: /src/frr/zebra/debug_nl.c:1614,1
    - Dst: nlmsg_flags2str
      Src: /src/frr/zebra/debug_nl.c:1615,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1623,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1624,1
    - Dst: strerror
      Src: /src/frr/zebra/debug_nl.c:1625,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1636,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1637,1
    - Dst: ifi_type2str
      Src: /src/frr/zebra/debug_nl.c:1640,1
    - Dst: if_flags2str
      Src: /src/frr/zebra/debug_nl.c:1642,1
    - Dst: nllink_dump
      Src: /src/frr/zebra/debug_nl.c:1643,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1643,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1646,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1647,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1648,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1654,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1655,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1657,1
    - Dst: rtm_protocol2str
      Src: /src/frr/zebra/debug_nl.c:1660,1
    - Dst: rtm_scope2str
      Src: /src/frr/zebra/debug_nl.c:1661,1
    - Dst: rtm_type2str
      Src: /src/frr/zebra/debug_nl.c:1662,1
    - Dst: rtm_flags2str
      Src: /src/frr/zebra/debug_nl.c:1663,1
    - Dst: nlroute_dump
      Src: /src/frr/zebra/debug_nl.c:1664,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1665,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1670,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1671,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1673,1
    - Dst: neigh_state2str
      Src: /src/frr/zebra/debug_nl.c:1675,1
    - Dst: neigh_flags2str
      Src: /src/frr/zebra/debug_nl.c:1677,1
    - Dst: rtm_type2str
      Src: /src/frr/zebra/debug_nl.c:1678,1
    - Dst: nlneigh_dump
      Src: /src/frr/zebra/debug_nl.c:1679,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1680,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1685,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1686,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1688,1
    - Dst: frh_action2str
      Src: /src/frr/zebra/debug_nl.c:1690,1
    - Dst: nlrule_dump
      Src: /src/frr/zebra/debug_nl.c:1692,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1692,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1698,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1699,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1701,1
    - Dst: if_flags2str
      Src: /src/frr/zebra/debug_nl.c:1703,1
    - Dst: nlifa_dump
      Src: /src/frr/zebra/debug_nl.c:1705,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1705,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1711,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1712,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1714,1
    - Dst: rtm_scope2str
      Src: /src/frr/zebra/debug_nl.c:1715,1
    - Dst: rtm_protocol2str
      Src: /src/frr/zebra/debug_nl.c:1716,1
    - Dst: nh_flags2str
      Src: /src/frr/zebra/debug_nl.c:1718,1
    - Dst: nlnh_dump
      Src: /src/frr/zebra/debug_nl.c:1719,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1719,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1725,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1726,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1727,1
    - Dst: nltnl_dump
      Src: /src/frr/zebra/debug_nl.c:1728,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1730,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1736,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1737,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1738,1
    - Dst: nlncm_dump
      Src: /src/frr/zebra/debug_nl.c:1739,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/debug_nl.c:1739,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/debug_nl.c:1748,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/debug_nl.c:1749,1
    - Dst: tcm_nltype2str
      Src: /src/frr/zebra/debug_nl.c:1751,1
    - Dst: af_type2str
      Src: /src/frr/zebra/debug_nl.c:1752,1
    - Dst: NLMSG_NEXT
      Src: /src/frr/zebra/debug_nl.c:1766,1
    - Dst: NLMSG_OK
      Src: /src/frr/zebra/debug_nl.c:1767,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 88
    argCount: 2
    argNames:
    - msg
    - msglen
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1592
    functionDepth: 3
    functionLinenumber: 1592
    functionLinenumberEnd: 1771
    functionName: nl_dump
    functionSourceFile: /src/frr/zebra/debug_nl.c
    functionUses: 3
    functionsReached:
    - neigh_flags2str
    - rtm_scope2str
    - nlifa_dump
    - nh_flags2str
    - neigh_state2str
    - nlmsg_flags2str
    - rtm_flags2str
    - nlneigh_dump
    - NLMSG_NEXT
    - NLMSG_DATA
    - frh_action2str
    - zlog_debug
    - nllink_dump
    - rtm_type2str
    - nlroute_dump
    - nlnh_dump
    - if_flags2str
    - rtm_protocol2str
    - af_type2str
    - tcm_nltype2str
    - NLMSG_LENGTH
    - nltnl_dump
    - NLMSG_OK
    - nlrule_dump
    - ifi_type2str
    - strerror
    - nlmsg_type2str
    - nlncm_dump
    linkageType: ''
    returnType: void
    signature: void nl_dump(void *msg, size_t msglen)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:626,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:631,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:636,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:639,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:647,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:650,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:653,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:662,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:663,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:665,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:666,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:671,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:676,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:679,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:684,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:687,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:692,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:696,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:700,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:704,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:708,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:712,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:716,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:720,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:721,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:723,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:724,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:728,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:730,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:732,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:734,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:738,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:739,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/debug.c:741,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:742,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:747,1
    - Dst: vty_out
      Src: /src/frr/zebra/debug.c:752,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 121
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 757
    functionName: config_write_debug
    functionSourceFile: /src/frr/zebra/debug.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/zebra/debug.c:778,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:780,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:782,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:783,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:784,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:785,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:786,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:787,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:788,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:790,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:792,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:793,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:794,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:795,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:796,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:797,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:798,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:799,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:800,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:801,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:802,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:803,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:804,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:805,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:806,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:808,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:810,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:811,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:812,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:813,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:814,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:816,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:817,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:818,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:819,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:820,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:821,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:822,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:824,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:826,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:827,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:828,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:829,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:830,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:831,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:832,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:834,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:835,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:836,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:837,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:838,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:839,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:841,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:843,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:844,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:845,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:846,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:847,1
    - Dst: install_element
      Src: /src/frr/zebra/debug.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 849
    functionName: zebra_debug_init
    functionSourceFile: /src/frr/zebra/debug.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void zebra_debug_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/main.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: sighup
    functionSourceFile: /src/frr/zebra/main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/zebra/main.c:143,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/main.c:145,1
    - Dst: rtadv_stop_ra_all
      Src: /src/frr/zebra/main.c:149,1
    - Dst: frr_early_fini
      Src: /src/frr/zebra/main.c:151,1
    - Dst: zebra_opaque_stop
      Src: /src/frr/zebra/main.c:154,1
    - Dst: zebra_dplane_pre_finish
      Src: /src/frr/zebra/main.c:156,1
    - Dst: zebra_gr_stale_client_cleanup
      Src: /src/frr/zebra/main.c:159,1
    - Dst: list_delete_all_node
      Src: /src/frr/zebra/main.c:160,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/main.c:163,1
    - Dst: zserv_close_client
      Src: /src/frr/zebra/main.c:164,1
    - Dst: zserv_close
      Src: /src/frr/zebra/main.c:166,1
    - Dst: list_delete_all_node
      Src: /src/frr/zebra/main.c:167,1
    - Dst: zebra_opaque_finish
      Src: /src/frr/zebra/main.c:170,1
    - Dst: zebra_ptm_finish
      Src: /src/frr/zebra/main.c:172,1
    - Dst: zebra_nhg_mark_keep
      Src: /src/frr/zebra/main.c:175,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/main.c:176,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/main.c:179,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/zebra/main.c:184,1
    - Dst: access_list_reset
      Src: /src/frr/zebra/main.c:186,1
    - Dst: prefix_list_reset
      Src: /src/frr/zebra/main.c:187,1
    - Dst: zebra_routemap_finish
      Src: /src/frr/zebra/main.c:194,1
    - Dst: rib_update_finish
      Src: /src/frr/zebra/main.c:196,1
    - Dst: list_delete
      Src: /src/frr/zebra/main.c:198,1
    - Dst: zebra_dplane_finish
      Src: /src/frr/zebra/main.c:204,1
    - Dst: zebra_finalize
      Src: /src/frr/zebra/main.c:211,1
    - Dst: zlog_info
      Src: /src/frr/zebra/main.c:213,1
    - Dst: vrf_terminate
      Src: /src/frr/zebra/main.c:215,1
    - Dst: zebra_dplane_shutdown
      Src: /src/frr/zebra/main.c:223,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/main.c:225,1
    - Dst: zebra_ns_notify_close
      Src: /src/frr/zebra/main.c:226,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/main.c:229,1
    - Dst: zebra_router_terminate
      Src: /src/frr/zebra/main.c:231,1
    - Dst: ns_terminate
      Src: /src/frr/zebra/main.c:233,1
    - Dst: frr_fini
      Src: /src/frr/zebra/main.c:234,1
    - Dst: exit
      Src: /src/frr/zebra/main.c:235,1
    - Dst: sigusr1
      Src: /src/frr/zebra/main.c:239,1
    - Dst: zlog_rotate
      Src: /src/frr/zebra/main.c:241,1
    - Dst: array_size
      Src: /src/frr/zebra/main.c:282,1
    - Dst: array_size
      Src: /src/frr/zebra/main.c:287,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/frr/zebra/main.c:292,1
    - Dst: FuzzingInit
      Src: /src/frr/zebra/main.c:294,1
    - Dst: vrf_configure_backend
      Src: /src/frr/zebra/main.c:297,1
    - Dst: frr_preinit
      Src: /src/frr/zebra/main.c:301,1
    - Dst: frr_init_fast
      Src: /src/frr/zebra/main.c:304,1
    - Dst: zebra_router_init
      Src: /src/frr/zebra/main.c:306,1
    - Dst: zserv_init
      Src: /src/frr/zebra/main.c:307,1
    - Dst: rib_init
      Src: /src/frr/zebra/main.c:308,1
    - Dst: zebra_if_init
      Src: /src/frr/zebra/main.c:309,1
    - Dst: zebra_debug_init
      Src: /src/frr/zebra/main.c:310,1
    - Dst: router_id_cmd_init
      Src: /src/frr/zebra/main.c:311,1
    - Dst: zebra_ns_init
      Src: /src/frr/zebra/main.c:312,1
    - Dst: zebra_vty_init
      Src: /src/frr/zebra/main.c:313,1
    - Dst: access_list_init
      Src: /src/frr/zebra/main.c:314,1
    - Dst: prefix_list_init
      Src: /src/frr/zebra/main.c:315,1
    - Dst: zebra_mpls_init
      Src: /src/frr/zebra/main.c:316,1
    - Dst: zebra_mpls_vty_init
      Src: /src/frr/zebra/main.c:317,1
    - Dst: zebra_pw_vty_init
      Src: /src/frr/zebra/main.c:318,1
    - Dst: zebra_pbr_init
      Src: /src/frr/zebra/main.c:319,1
    - Dst: monotime
      Src: /src/frr/zebra/main.c:320,1
    - Dst: label_manager_init
      Src: /src/frr/zebra/main.c:321,1
    - Dst: zebra_rnh_init
      Src: /src/frr/zebra/main.c:322,1
    - Dst: zebra_evpn_init
      Src: /src/frr/zebra/main.c:323,1
    - Dst: zebra_error_init
      Src: /src/frr/zebra/main.c:324,1
    - Dst: frr_pthread_init
      Src: /src/frr/zebra/main.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 130
    functionDepth: 6
    functionLinenumber: 130
    functionLinenumberEnd: 344
    functionName: sigint
    functionSourceFile: /src/frr/zebra/main.c
    functionUses: 0
    functionsReached:
    - zebra_mpls_vty_init
    - access_list_reset
    - list_delete
    - zserv_init
    - FuzzingInit
    - vrf_terminate
    - zebra_opaque_finish
    - zebra_nhg_mark_keep
    - label_manager_init
    - zebra_dplane_finish
    - zserv_close_client
    - zebra_opaque_stop
    - zebra_vty_init
    - zebra_error_init
    - zebra_dplane_pre_finish
    - zebra_evpn_init
    - frr_init_fast
    - ns_terminate
    - zebra_finalize
    - exit
    - zebra_router_init
    - router_id_cmd_init
    - zebra_pbr_init
    - zebra_gr_stale_client_cleanup
    - zebra_router_terminate
    - zebra_ptm_finish
    - frr_fini
    - zebra_if_init
    - frr_early_fini
    - access_list_init
    - list_delete_all_node
    - array_size
    - zebra_mpls_init
    - zebra_debug_init
    - frr_pthread_init
    - work_queue_free_and_null
    - zlog_info
    - zebra_ns_notify_close
    - prefix_list_init
    - atomic_store_explicit
    - ns_walk_func
    - zebra_rnh_init
    - monotime
    - zebra_ns_init
    - sigusr1
    - rib_update_finish
    - rtadv_stop_ra_all
    - zserv_close
    - zebra_routemap_finish
    - rib_init
    - frr_preinit
    - prefix_list_reset
    - zebra_dplane_shutdown
    - vrf_configure_backend
    - SET_FLAG
    - zebra_pw_vty_init
    - zlog_rotate
    - ALL_LIST_ELEMENTS
    - RB_FOREACH
    - zlog_notice
    - LLVMFuzzerTestOneInput
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: FuzzingInit
      Src: /src/frr/zebra/main.c:396,1
    - Dst: zserv_client_create
      Src: /src/frr/zebra/main.c:397,1
    - Dst: __AFL_INIT
      Src: /src/frr/zebra/main.c:400,1
    - Dst: frrfuzz_read_input
      Src: /src/frr/zebra/main.c:404,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/frr/zebra/main.c:406,1
    - Dst: free
      Src: /src/frr/zebra/main.c:409,1
    - Dst: vrf_configure_backend
      Src: /src/frr/zebra/main.c:416,1
    - Dst: frr_preinit
      Src: /src/frr/zebra/main.c:418,1
    - Dst: frr_opt_add
      Src: /src/frr/zebra/main.c:420,1
    - Dst: frr_getopt
      Src: /src/frr/zebra/main.c:444,1
    - Dst: strtoul
      Src: /src/frr/zebra/main.c:460,1
    - Dst: flog_err
      Src: /src/frr/zebra/main.c:464,1
    - Dst: frr_zclient_addr
      Src: /src/frr/zebra/main.c:475,1
    - Dst: fprintf
      Src: /src/frr/zebra/main.c:476,1
    - Dst: exit
      Src: /src/frr/zebra/main.c:479,1
    - Dst: atoi
      Src: /src/frr/zebra/main.c:486,1
    - Dst: atoi
      Src: /src/frr/zebra/main.c:489,1
    - Dst: fprintf
      Src: /src/frr/zebra/main.c:491,1
    - Dst: vrf_configure_backend
      Src: /src/frr/zebra/main.c:497,1
    - Dst: strcmp
      Src: /src/frr/zebra/main.c:503,1
    - Dst: strcmp
      Src: /src/frr/zebra/main.c:505,1
    - Dst: frr_help_exit
      Src: /src/frr/zebra/main.c:511,1
    - Dst: frr_init
      Src: /src/frr/zebra/main.c:515,1
    - Dst: zebra_router_init
      Src: /src/frr/zebra/main.c:518,1
    - Dst: zserv_init
      Src: /src/frr/zebra/main.c:519,1
    - Dst: rib_init
      Src: /src/frr/zebra/main.c:520,1
    - Dst: zebra_if_init
      Src: /src/frr/zebra/main.c:521,1
    - Dst: zebra_debug_init
      Src: /src/frr/zebra/main.c:522,1
    - Dst: zebra_ns_init
      Src: /src/frr/zebra/main.c:527,1
    - Dst: router_id_cmd_init
      Src: /src/frr/zebra/main.c:528,1
    - Dst: zebra_vty_init
      Src: /src/frr/zebra/main.c:529,1
    - Dst: access_list_init
      Src: /src/frr/zebra/main.c:530,1
    - Dst: prefix_list_init
      Src: /src/frr/zebra/main.c:531,1
    - Dst: rtadv_cmd_init
      Src: /src/frr/zebra/main.c:532,1
    - Dst: zebra_ptm_init
      Src: /src/frr/zebra/main.c:535,1
    - Dst: zebra_mpls_init
      Src: /src/frr/zebra/main.c:538,1
    - Dst: zebra_mpls_vty_init
      Src: /src/frr/zebra/main.c:539,1
    - Dst: zebra_pw_vty_init
      Src: /src/frr/zebra/main.c:540,1
    - Dst: zebra_pbr_init
      Src: /src/frr/zebra/main.c:541,1
    - Dst: zebra_opaque_init
      Src: /src/frr/zebra/main.c:542,1
    - Dst: zebra_srte_init
      Src: /src/frr/zebra/main.c:543,1
    - Dst: zebra_srv6_init
      Src: /src/frr/zebra/main.c:544,1
    - Dst: zebra_srv6_vty_init
      Src: /src/frr/zebra/main.c:545,1
    - Dst: frr_config_fork
      Src: /src/frr/zebra/main.c:557,1
    - Dst: monotime
      Src: /src/frr/zebra/main.c:567,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/main.c:568,1
    - Dst: getpid
      Src: /src/frr/zebra/main.c:572,1
    - Dst: zebra_dplane_start
      Src: /src/frr/zebra/main.c:575,1
    - Dst: zebra_opaque_start
      Src: /src/frr/zebra/main.c:578,1
    - Dst: zserv_start
      Src: /src/frr/zebra/main.c:581,1
    - Dst: label_manager_init
      Src: /src/frr/zebra/main.c:584,1
    - Dst: zebra_rnh_init
      Src: /src/frr/zebra/main.c:587,1
    - Dst: zebra_evpn_init
      Src: /src/frr/zebra/main.c:590,1
    - Dst: zebra_error_init
      Src: /src/frr/zebra/main.c:593,1
    - Dst: frr_run
      Src: /src/frr/zebra/main.c:595,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 100
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 386
    functionDepth: 6
    functionLinenumber: 386
    functionLinenumberEnd: 599
    functionName: main
    functionSourceFile: /src/frr/zebra/main.c
    functionUses: 6
    functionsReached:
    - zebra_mpls_vty_init
    - zserv_init
    - FuzzingInit
    - frr_getopt
    - rtadv_cmd_init
    - zserv_start
    - frrfuzz_read_input
    - flog_err
    - label_manager_init
    - zebra_vty_init
    - zebra_error_init
    - zebra_evpn_init
    - __AFL_INIT
    - zebra_pbr_init
    - exit
    - zebra_router_init
    - router_id_cmd_init
    - zebra_dplane_start
    - zserv_client_create
    - zebra_if_init
    - fprintf
    - access_list_init
    - zebra_mpls_init
    - zebra_debug_init
    - frr_help_exit
    - prefix_list_init
    - frr_init
    - frr_config_fork
    - zebra_rnh_init
    - free
    - monotime
    - zebra_opaque_init
    - zebra_opaque_start
    - zebra_ns_init
    - event_add_timer
    - zebra_srv6_vty_init
    - zebra_srv6_init
    - atoi
    - frr_opt_add
    - zebra_srte_init
    - rib_init
    - frr_preinit
    - strtoul
    - vrf_configure_backend
    - getpid
    - strcmp
    - frr_zclient_addr
    - zebra_ptm_init
    - frr_run
    - zebra_pw_vty_init
    - LLVMFuzzerTestOneInput
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sr_policy_compare
      Src: /src/frr/zebra/zebra_srte.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct zebra_sr_policy*
    - struct zebra_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: zebra_sr_policy_instance_compare
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - sr_policy_compare
    linkageType: ''
    returnType: int
    signature: "int zebra_sr_policy_instance_compare(const struct zebra_sr_policy
      *a,\n\t\t\t\t const struct zebra_sr_policy *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_srte.c:39,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_srte.c:42,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_srte.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - color
    - endpoint
    - name
    argTypes:
    - uint32_t
    - struct ipaddr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 48
    functionName: zebra_sr_policy_add
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: struct zebra_sr_policy
    signature: "struct zebra_sr_policy *zebra_sr_policy_add(uint32_t color,\n\t\t\t\t\t
      \   struct ipaddr *endpoint, char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_sr_policy_deactivate
      Src: /src/frr/zebra/zebra_srte.c:53,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_srte.c:54,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_srte.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - policy
    argTypes:
    - struct zebra_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 57
    functionName: zebra_sr_policy_del
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - XFREE
    - RB_REMOVE
    - zebra_sr_policy_deactivate
    linkageType: ''
    returnType: void
    signature: void zebra_sr_policy_del(struct zebra_sr_policy *policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_srte.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - color
    - endpoint
    argTypes:
    - uint32_t
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 68
    functionName: zebra_sr_policy_find
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct zebra_sr_policy
    signature: "struct zebra_sr_policy *zebra_sr_policy_find(uint32_t color,\n\t\t\t\t\t
      \    struct ipaddr *endpoint)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_srte.c:75,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_srte.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 82
    functionName: zebra_sr_policy_find_by_name
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - strcmp
    linkageType: ''
    returnType: struct zebra_sr_policy
    signature: struct zebra_sr_policy *zebra_sr_policy_find_by_name(char *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_srte.c:96,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_srte.c:98,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_srte.c:98,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_srte.c:101,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_srte.c:102,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_srte.c:104,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_srte.c:113,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_srte.c:114,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_srte.c:115,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_srte.c:116,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_srte.c:117,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_srte.c:118,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_srte.c:121,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_srte.c:122,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_srte.c:123,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_srte.c:124,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_srte.c:125,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_srte.c:126,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_srte.c:129,1
    - Dst: exit
      Src: /src/frr/zebra/zebra_srte.c:132,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_srte.c:134,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_srte.c:137,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_srte.c:138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_srte.c:139,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_srte.c:143,1
    - Dst: re_type_from_lsp_type
      Src: /src/frr/zebra/zebra_srte.c:143,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_srte.c:144,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_srte.c:145,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_srte.c:146,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_srte.c:147,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_srte.c:148,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/zebra/zebra_srte.c:151,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/zebra/zebra_srte.c:152,1
    - Dst: stream_putc_at
      Src: /src/frr/zebra/zebra_srte.c:158,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_srte.c:159,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_srte.c:159,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_srte.c:161,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_srte.c:162,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_srte.c:166,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 2
    argNames:
    - policy
    - client
    argTypes:
    - struct zebra_sr_policy*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 168
    functionName: zebra_sr_policy_notify_update_client
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - stream_put
    - re_type_from_lsp_type
    - frr_each
    - zserv_send_message
    - stream_putc_at
    - stream_putc
    - exit
    - flog_warn
    - zvrf_id
    - stream_putw_at
    - zapi_nexthop_encode
    - stream_put_in_addr
    - zapi_nexthop_from_nexthop
    - stream_free
    - monotime
    - stream_new
    - zclient_create_header
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - SET_FLAG
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zebra_sr_policy_notify_update_client(struct zebra_sr_policy *policy,\n\t\t\t\t\t\tstruct
      zserv *client)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_srte.c:191,1
    - Dst: exit
      Src: /src/frr/zebra/zebra_srte.c:194,1
    - Dst: zebra_lookup_rnh
      Src: /src/frr/zebra/zebra_srte.c:197,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_srte.c:197,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_srte.c:201,1
    - Dst: zebra_sr_policy_notify_update_client
      Src: /src/frr/zebra/zebra_srte.c:203,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 1
    argNames:
    - policy
    argTypes:
    - struct zebra_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 323
    functionName: zebra_sr_policy_notify_update
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - exit
    - flog_warn
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - zebra_sr_policy_notify_update_client
    - zebra_lookup_rnh
    linkageType: ''
    returnType: void
    signature: void zebra_sr_policy_notify_update(struct zebra_sr_policy *policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mpls_lsp_uninstall_all_vrf
      Src: /src/frr/zebra/zebra_srte.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - policy
    - old_bsid
    argTypes:
    - struct zebra_sr_policy*
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 339
    functionDepth: 5
    functionLinenumber: 339
    functionLinenumberEnd: 345
    functionName: zebra_sr_policy_bsid_uninstall
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - mpls_lsp_uninstall_all_vrf
    linkageType: ''
    returnType: void
    signature: "void zebra_sr_policy_bsid_uninstall(struct zebra_sr_policy *policy,\n\t\t\t\t
      \   mpls_label_t old_bsid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_srte.c:352,1
    - Dst: zebra_sr_policy_validate
      Src: /src/frr/zebra/zebra_srte.c:364,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - label
    - mode
    argTypes:
    - mpls_label_t
    - enum zebra_sr_policy_update_label_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 370
    functionName: zebra_sr_policy_label_update
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 3
    functionsReached:
    - zebra_sr_policy_validate
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: "int zebra_sr_policy_label_update(mpls_label_t label,\n\t\t\t\t enum
      zebra_sr_policy_update_label_mode mode)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_srte.c:380,1
    - Dst: zebra_sr_policy_del
      Src: /src/frr/zebra/zebra_srte.c:383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 386
    functionName: zebra_srte_client_close_cleanup
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH_SAFE
    - zebra_sr_policy_del
    linkageType: ''
    returnType: int
    signature: int zebra_srte_client_close_cleanup(struct zserv *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_srte.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: zebra_srte_init
    functionSourceFile: /src/frr/zebra/zebra_srte.c
    functionUses: 1
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void zebra_srte_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: mpls_kernel_init
    functionSourceFile: /src/frr/zebra/zebra_mpls_null.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mpls_kernel_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: kernel_pw_update
    functionSourceFile: /src/frr/zebra/zebra_mpls_null.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_pw_update(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: kernel_lsp_update
    functionSourceFile: /src/frr/zebra/zebra_mpls_null.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_lsp_update(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/label_manager.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - vrf_id
    argTypes:
    - struct zserv*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: lm_client_connect_call
    functionSourceFile: /src/frr/zebra/label_manager.c
    functionUses: 0
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: void
    signature: void lm_client_connect_call(struct zserv *client, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/label_manager.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - lmc
    - client
    - keep
    - size
    - base
    - vrf_id
    argTypes:
    - struct label_manager_chunk**
    - struct zserv*
    - uint8_t
    - uint32_t
    - uint32_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: lm_get_chunk_call
    functionSourceFile: /src/frr/zebra/label_manager.c
    functionUses: 0
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void lm_get_chunk_call(struct label_manager_chunk **lmc, struct zserv
      *client,\n\t\t       uint8_t keep, uint32_t size, uint32_t base,\n\t\t       vrf_id_t
      vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/label_manager.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - start
    - end
    argTypes:
    - struct zserv*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: lm_release_chunk_call
    functionSourceFile: /src/frr/zebra/label_manager.c
    functionUses: 0
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: void
    signature: void lm_release_chunk_call(struct zserv *client, uint32_t start, uint32_t
      end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/label_manager.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: delete_label_chunk
    functionSourceFile: /src/frr/zebra/label_manager.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void delete_label_chunk(void *val)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/label_manager.c:105,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/label_manager.c:106,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/label_manager.c:109,1
    - Dst: release_label_chunk
      Src: /src/frr/zebra/label_manager.c:113,1
    - Dst: if
      Src: /src/frr/zebra/label_manager.c:116,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/label_manager.c:122,1
    - Dst: lm_client_disconnect_cb
      Src: /src/frr/zebra/label_manager.c:127,1
    - Dst: hook_call
      Src: /src/frr/zebra/label_manager.c:129,1
    - Dst: lm_hooks_register
      Src: /src/frr/zebra/label_manager.c:133,1
    - Dst: hook_register
      Src: /src/frr/zebra/label_manager.c:135,1
    - Dst: hook_register
      Src: /src/frr/zebra/label_manager.c:136,1
    - Dst: hook_register
      Src: /src/frr/zebra/label_manager.c:137,1
    - Dst: hook_register
      Src: /src/frr/zebra/label_manager.c:138,1
    - Dst: hook_unregister
      Src: /src/frr/zebra/label_manager.c:142,1
    - Dst: hook_unregister
      Src: /src/frr/zebra/label_manager.c:143,1
    - Dst: hook_unregister
      Src: /src/frr/zebra/label_manager.c:144,1
    - Dst: hook_unregister
      Src: /src/frr/zebra/label_manager.c:145,1
    - Dst: label_manager_init
      Src: /src/frr/zebra/label_manager.c:151,1
    - Dst: list_new
      Src: /src/frr/zebra/label_manager.c:153,1
    - Dst: hook_register
      Src: /src/frr/zebra/label_manager.c:155,1
    - Dst: lm_hooks_register
      Src: /src/frr/zebra/label_manager.c:158,1
    - Dst: hook_call
      Src: /src/frr/zebra/label_manager.c:161,1
    - Dst: create_label_chunk
      Src: /src/frr/zebra/label_manager.c:166,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/label_manager.c:171,1
    - Dst: assign_specific_label_chunk
      Src: /src/frr/zebra/label_manager.c:185,1
    - Dst: zlog_err
      Src: /src/frr/zebra/label_manager.c:201,1
    - Dst: create_label_chunk
      Src: /src/frr/zebra/label_manager.c:236,1
    - Dst: listnode_add_before
      Src: /src/frr/zebra/label_manager.c:238,1
    - Dst: listnextnode
      Src: /src/frr/zebra/label_manager.c:245,1
    - Dst: listnextnode
      Src: /src/frr/zebra/label_manager.c:253,1
    - Dst: listgetdata
      Src: /src/frr/zebra/label_manager.c:254,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/label_manager.c:255,1
    - Dst: delete_label_chunk
      Src: /src/frr/zebra/label_manager.c:256,1
    - Dst: create_label_chunk
      Src: /src/frr/zebra/label_manager.c:259,1
    - Dst: listnode_add_before
      Src: /src/frr/zebra/label_manager.c:262,1
    - Dst: listnode_add
      Src: /src/frr/zebra/label_manager.c:264,1
    - Dst: create_label_chunk
      Src: /src/frr/zebra/label_manager.c:270,1
    - Dst: listnode_add
      Src: /src/frr/zebra/label_manager.c:272,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 46
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 275
    functionName: release_daemon_label_chunks
    functionSourceFile: /src/frr/zebra/label_manager.c
    functionUses: 0
    functionsReached:
    - listnode_add
    - create_label_chunk
    - label_manager_init
    - hook_register
    - hook_call
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - listgetdata
    - if
    - lm_client_disconnect_cb
    - listnode_add_before
    - listnextnode
    - zlog_err
    - list_delete_node
    - delete_label_chunk
    - hook_unregister
    - zebra_route_string
    - lm_hooks_register
    - release_label_chunk
    - list_new
    - assign_specific_label_chunk
    linkageType: ''
    returnType: int
    signature: int release_daemon_label_chunks(struct zserv *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assign_specific_label_chunk
      Src: /src/frr/zebra/label_manager.c:300,1
    - Dst: assert
      Src: /src/frr/zebra/label_manager.c:304,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/label_manager.c:307,1
    - Dst: lmc
      Src: /src/frr/zebra/label_manager.c:314,1
    - Dst: create_label_chunk
      Src: /src/frr/zebra/label_manager.c:319,1
    - Dst: listnode_add_before
      Src: /src/frr/zebra/label_manager.c:322,1
    - Dst: list_isempty
      Src: /src/frr/zebra/label_manager.c:330,1
    - Dst: listgetdata
      Src: /src/frr/zebra/label_manager.c:333,1
    - Dst: listtail
      Src: /src/frr/zebra/label_manager.c:334,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 6
    argNames:
    - proto
    - instance
    - session_id
    - keep
    - size
    - base
    argTypes:
    - uint8_t
    - unsigned short
    - uint32_t
    - uint8_t
    - uint32_t
    - uint32_t
    assertStmts:
    - condition: (lbl_mgr.lc_list)
      pos:
        line_end: 303
        line_start: 303
        source_file: /src/frr/zebra/label_manager.c
    constantsTouched: []
    func_position:
      end: 343
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 343
    functionName: assign_label_chunk
    functionSourceFile: /src/frr/zebra/label_manager.c
    functionUses: 2
    functionsReached:
    - assert
    - listtail
    - ALL_LIST_ELEMENTS_RO
    - list_isempty
    - create_label_chunk
    - listgetdata
    - assign_specific_label_chunk
    - listnode_add_before
    - lmc
    linkageType: ''
    returnType: struct label_manager_chunk
    signature: "struct label_manager_chunk *\nassign_label_chunk(uint8_t proto, unsigned
      short instance, uint32_t session_id,\n\t\t   uint8_t keep, uint32_t size, uint32_t
      base)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: release_label_chunk
      Src: /src/frr/zebra/label_manager.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - start
    - end
    argTypes:
    - struct zserv*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 368
    functionName: label_manager_release_label_chunk
    functionSourceFile: /src/frr/zebra/label_manager.c
    functionUses: 0
    functionsReached:
    - release_label_chunk
    linkageType: ''
    returnType: int
    signature: "int label_manager_release_label_chunk(struct zserv *client,\n\t\t\t\t\t
      \    uint32_t start, uint32_t end)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_neigh.c:61,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct zebra_neigh_ent*
    - struct zebra_neigh_ent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 62
    functionName: zebra_neigh_rb_cmp
    functionSourceFile: /src/frr/zebra/zebra_neigh.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int zebra_neigh_rb_cmp(const struct zebra_neigh_ent *n1,\n\t\t\t      const
      struct zebra_neigh_ent *n2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_neigh.c:71,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_neigh.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ifindex
    - ip
    argTypes:
    - ifindex_t
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 73
    functionName: zebra_neigh_find
    functionSourceFile: /src/frr/zebra/zebra_neigh.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - memcpy
    linkageType: ''
    returnType: struct zebra_neigh_ent
    signature: "struct zebra_neigh_ent *zebra_neigh_find(ifindex_t ifindex,\n\t\t\t\t\t\tstruct
      ipaddr *ip)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_neigh.c:80,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_neigh.c:82,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_neigh.c:85,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_neigh.c:90,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_neigh.c:91,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_neigh.c:96,1
    - Dst: listset_app_node_mem
      Src: /src/frr/zebra/zebra_neigh.c:97,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_neigh.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ifindex
    - ip
    - mac
    argTypes:
    - ifindex_t
    - struct ipaddr*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 104
    functionName: zebra_neigh_new
    functionSourceFile: /src/frr/zebra/zebra_neigh.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - RB_INSERT
    - zlog_debug
    - list_new
    - listset_app_node_mem
    - XFREE
    - memcpy
    linkageType: ''
    returnType: struct zebra_neigh_ent
    signature: 'struct zebra_neigh_ent *

      zebra_neigh_new(ifindex_t ifindex, struct ipaddr *ip, struct ethaddr *mac)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_neigh.c:111,1
    - Dst: dplane_pbr_rule_update
      Src: /src/frr/zebra/zebra_neigh.c:112,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_neigh.c:133,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_neigh.c:135,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_neigh.c:137,1
    - Dst: zebra_neigh_del
      Src: /src/frr/zebra/zebra_neigh.c:141,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_neigh.c:146,1
    - Dst: zebra_neigh_find
      Src: /src/frr/zebra/zebra_neigh.c:149,1
    - Dst: zebra_neigh_free
      Src: /src/frr/zebra/zebra_neigh.c:152,1
    - Dst: zebra_neigh_add
      Src: /src/frr/zebra/zebra_neigh.c:156,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_neigh.c:162,1
    - Dst: zebra_neigh_find
      Src: /src/frr/zebra/zebra_neigh.c:165,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_neigh.c:167,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_neigh.c:170,1
    - Dst: zebra_neigh_pbr_rules_update
      Src: /src/frr/zebra/zebra_neigh.c:174,1
    - Dst: zebra_neigh_new
      Src: /src/frr/zebra/zebra_neigh.c:176,1
    - Dst: zebra_neigh_deref
      Src: /src/frr/zebra/zebra_neigh.c:180,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_neigh.c:185,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_neigh.c:190,1
    - Dst: zebra_neigh_free
      Src: /src/frr/zebra/zebra_neigh.c:192,1
    - Dst: zebra_neigh_read_on_first_ref
      Src: /src/frr/zebra/zebra_neigh.c:196,1
    - Dst: neigh_read_done
      Src: /src/frr/zebra/zebra_neigh.c:198,1
    - Dst: neigh_read
      Src: /src/frr/zebra/zebra_neigh.c:201,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_neigh.c:201,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_neigh.c:212,1
    - Dst: zebra_neigh_read_on_first_ref
      Src: /src/frr/zebra/zebra_neigh.c:215,1
    - Dst: zebra_neigh_find
      Src: /src/frr/zebra/zebra_neigh.c:216,1
    - Dst: zebra_neigh_new
      Src: /src/frr/zebra/zebra_neigh.c:218,1
    - Dst: zebra_neigh_deref
      Src: /src/frr/zebra/zebra_neigh.c:225,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_neigh.c:228,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_neigh.c:229,1
    - Dst: zebra_neigh_show_one
      Src: /src/frr/zebra/zebra_neigh.c:232,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_neigh.c:238,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_neigh.c:238,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_neigh.c:240,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_neigh.c:241,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_neigh.c:242,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_neigh.c:243,1
    - Dst: zebra_neigh_show
      Src: /src/frr/zebra/zebra_neigh.c:246,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_neigh.c:250,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_neigh.c:252,1
    - Dst: zebra_neigh_show_one
      Src: /src/frr/zebra/zebra_neigh.c:253,1
    - Dst: zebra_neigh_init
      Src: /src/frr/zebra/zebra_neigh.c:256,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_neigh.c:258,1
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_neigh.c:259,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_neigh.c:269,1
    - Dst: zebra_neigh_free
      Src: /src/frr/zebra/zebra_neigh.c:271,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_neigh.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct zebra_neigh_ent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 273
    functionName: zebra_neigh_pbr_rules_update
    functionSourceFile: /src/frr/zebra/zebra_neigh.c
    functionUses: 1
    functionsReached:
    - list_delete
    - if_lookup_by_index_per_ns
    - memcmp
    - listnode_add
    - listnode_init
    - zebra_neigh_pbr_rules_update
    - zebra_neigh_del
    - zebra_neigh_find
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - RB_INIT
    - zebra_neigh_init
    - zlog_debug
    - zebra_neigh_show
    - zebra_neigh_show_one
    - dplane_pbr_rule_update
    - zebra_ns_lookup
    - zebra_neigh_add
    - vty_out
    - neigh_read
    - listcount
    - zebra_neigh_new
    - list_delete_node
    - XFREE
    - zebra_neigh_free
    - memcpy
    - RB_REMOVE
    - zebra_neigh_read_on_first_ref
    - prefix_mac2str
    - neigh_read_done
    - RB_FOREACH_SAFE
    - ipaddr2str
    - zebra_neigh_deref
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void zebra_neigh_pbr_rules_update(struct zebra_neigh_ent *n)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/interface.c:56,1
    - Dst: kernel_get_speed
      Src: /src/frr/zebra/interface.c:62,1
    - Dst: zlog_info
      Src: /src/frr/zebra/interface.c:72,1
    - Dst: if_add_update
      Src: /src/frr/zebra/interface.c:75,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/interface.c:99,1
    - Dst: event_ignore_late_timer
      Src: /src/frr/zebra/interface.c:101,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 103
    functionName: if_zebra_speed_update
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - kernel_get_speed
    - if_add_update
    - event_ignore_late_timer
    - EVENT_ARG
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void if_zebra_speed_update(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/zebra/interface.c:110,1
    - Dst: route_node_destroy
      Src: /src/frr/zebra/interface.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - delegate
    - table
    - node
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: zebra_if_node_destroy
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - list_delete
    - route_node_destroy
    linkageType: ''
    returnType: void
    signature: "void zebra_if_node_destroy(route_table_delegate_t *delegate,\n\t\t\t\t
      \ struct route_table *table,\n\t\t\t\t  struct route_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_free
      Src: /src/frr/zebra/interface.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zebra_if
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: zebra_if_nhg_dependents_free
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_free
    linkageType: ''
    returnType: void
    signature: void zebra_if_nhg_dependents_free(struct zebra_if *zebra_if)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_init
      Src: /src/frr/zebra/interface.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zebra_if
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: zebra_if_nhg_dependents_init
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_init
    linkageType: ''
    returnType: void
    signature: void zebra_if_nhg_dependents_init(struct zebra_if *zebra_if)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/interface.c:134,1
    - Dst: zebra_if_nhg_dependents_init
      Src: /src/frr/zebra/interface.c:142,1
    - Dst: zebra_ptm_if_init
      Src: /src/frr/zebra/interface.c:144,1
    - Dst: zebra_ptm_get_enable_state
      Src: /src/frr/zebra/interface.c:146,1
    - Dst: rtadv_if_init
      Src: /src/frr/zebra/interface.c:148,1
    - Dst: memset
      Src: /src/frr/zebra/interface.c:150,1
    - Dst: route_table_init_with_delegate
      Src: /src/frr/zebra/interface.c:154,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/interface.c:166,1
    - Dst: event_ignore_late_timer
      Src: /src/frr/zebra/interface.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 171
    functionName: if_zebra_new_hook
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - memset
    - XCALLOC
    - zebra_ptm_get_enable_state
    - event_ignore_late_timer
    - zebra_ptm_if_init
    - event_add_timer
    - zebra_if_nhg_dependents_init
    - route_table_init_with_delegate
    - rtadv_if_init
    linkageType: ''
    returnType: int
    signature: int if_zebra_new_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_check_valid
      Src: /src/frr/zebra/interface.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: if_nhg_dependents_check_valid
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_check_valid
    linkageType: ''
    returnType: void
    signature: void if_nhg_dependents_check_valid(struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/zebra/interface.c:183,1
    - Dst: if_nhg_dependents_check_valid
      Src: /src/frr/zebra/interface.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 185
    functionName: if_down_nhg_dependents
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - if_nhg_dependents_check_valid
    - frr_each
    linkageType: ''
    returnType: void
    signature: void if_down_nhg_dependents(const struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/zebra/interface.c:192,1
    - Dst: if_nhg_dependents_check_valid
      Src: /src/frr/zebra/interface.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: if_nhg_dependents_release
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - if_nhg_dependents_check_valid
    - frr_each
    linkageType: ''
    returnType: void
    signature: void if_nhg_dependents_release(const struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:207,1
    - Dst: ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL
      Src: /src/frr/zebra/interface.c:208,1
    - Dst: zebra_if_update_protodown_rc
      Src: /src/frr/zebra/interface.c:209,1
    - Dst: route_table_finish
      Src: /src/frr/zebra/interface.c:215,1
    - Dst: rtadv_if_fini
      Src: /src/frr/zebra/interface.c:217,1
    - Dst: zebra_l2_bridge_if_cleanup
      Src: /src/frr/zebra/interface.c:219,1
    - Dst: zebra_evpn_if_cleanup
      Src: /src/frr/zebra/interface.c:220,1
    - Dst: zebra_evpn_mac_ifp_del
      Src: /src/frr/zebra/interface.c:221,1
    - Dst: if_nhg_dependents_release
      Src: /src/frr/zebra/interface.c:223,1
    - Dst: zebra_if_nhg_dependents_free
      Src: /src/frr/zebra/interface.c:224,1
    - Dst: XFREE
      Src: /src/frr/zebra/interface.c:226,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/interface.c:228,1
    - Dst: XFREE
      Src: /src/frr/zebra/interface.c:230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 234
    functionName: if_zebra_delete_hook
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - ZEBRA_IF_IS_PROTODOWN
    - zebra_evpn_if_cleanup
    - ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL
    - route_table_finish
    - zebra_if_update_protodown_rc
    - if_nhg_dependents_release
    - EVENT_OFF
    - XFREE
    - zebra_evpn_mac_ifp_del
    - zebra_l2_bridge_if_cleanup
    - rtadv_if_fini
    - zebra_if_nhg_dependents_free
    linkageType: ''
    returnType: int
    signature: int if_zebra_delete_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ifindex
    - p
    argTypes:
    - uint32_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: if_build_key
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void if_build_key(uint32_t ifindex, struct prefix *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_build_key
      Src: /src/frr/zebra/interface.c:253,1
    - Dst: route_node_get
      Src: /src/frr/zebra/interface.c:254,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ns
    - ifp
    argTypes:
    - struct zebra_ns*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 265
    functionName: if_link_per_ns
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_get
    - if_build_key
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_link_per_ns(struct zebra_ns *ns, struct interface
      *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 276
    functionName: if_unlink_per_ns
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    linkageType: ''
    returnType: void
    signature: void if_unlink_per_ns(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_build_key
      Src: /src/frr/zebra/interface.c:286,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/interface.c:287,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ns
    - ifindex
    argTypes:
    - struct zebra_ns*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 293
    functionName: if_lookup_by_index_per_ns
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 6
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - if_build_key
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *if_lookup_by_index_per_ns(struct zebra_ns *ns,\n\t\t\t\t\t
      \   uint32_t ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:302,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:302,1
    - Dst: strcmp
      Src: /src/frr/zebra/interface.c:304,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ns
    - ifname
    argTypes:
    - struct zebra_ns*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 311
    functionName: if_lookup_by_name_per_ns
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 1
    functionsReached:
    - strcmp
    - route_unlock_node
    - route_top
    - route_next
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *if_lookup_by_name_per_ns(struct zebra_ns *ns,\n\t\t\t\t\t
      \  const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:317,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ns_id
    - ifindex
    argTypes:
    - ns_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 319
    functionName: if_lookup_by_index_per_nsid
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index_per_ns
    - zebra_ns_lookup
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_lookup_by_index_per_nsid(ns_id_t ns_id, uint32_t
      ifindex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zns
    - ifindex
    argTypes:
    - struct zebra_ns*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 328
    functionName: ifindex2ifname_per_ns
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index_per_ns
    linkageType: ''
    returnType: char
    signature: char *ifindex2ifname_per_ns(struct zebra_ns *zns, unsigned int ifindex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/interface.c:338,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/zebra/interface.c:344,1
    - Dst: apply_mask
      Src: /src/frr/zebra/interface.c:345,1
    - Dst: route_node_get
      Src: /src/frr/zebra/interface.c:346,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:349,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:351,1
    - Dst: list_new
      Src: /src/frr/zebra/interface.c:352,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/interface.c:353,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:357,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts:
    - condition: (ifp && ifp->info && ifc)
      pos:
        line_end: 337
        line_start: 337
        source_file: /src/frr/zebra/interface.c
    constantsTouched: []
    func_position:
      end: 361
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 361
    functionName: if_subnet_add
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - route_lock_node
    - apply_mask
    - listnode_add
    - SET_FLAG
    - route_node_get
    - CONNECTED_PREFIX
    - UNSET_FLAG
    - list_new
    - assert
    linkageType: ''
    returnType: int
    signature: int if_subnet_add(struct interface *ifp, struct connected *ifc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/interface.c:371,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/zebra/interface.c:374,1
    - Dst: apply_mask
      Src: /src/frr/zebra/interface.c:375,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/interface.c:378,1
    - Dst: flog_warn
      Src: /src/frr/zebra/interface.c:380,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:384,1
    - Dst: listnode_lookup
      Src: /src/frr/zebra/interface.c:392,1
    - Dst: flog_warn
      Src: /src/frr/zebra/interface.c:393,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:399,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:400,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:406,1
    - Dst: listgetdata
      Src: /src/frr/zebra/interface.c:407,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:408,1
    - Dst: zebra_interface_address_delete_update
      Src: /src/frr/zebra/interface.c:409,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:410,1
    - Dst: zebra_interface_address_add_update
      Src: /src/frr/zebra/interface.c:416,1
    - Dst: list_delete
      Src: /src/frr/zebra/interface.c:423,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:425,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts:
    - condition: (ifp && ifp->info && ifc)
      pos:
        line_end: 370
        line_start: 370
        source_file: /src/frr/zebra/interface.c
    constantsTouched: []
    func_position:
      end: 428
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 428
    functionName: if_subnet_delete
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - list_delete
    - flog_warn
    - apply_mask
    - CHECK_FLAG
    - listnode_lookup
    - listgetdata
    - listhead
    - zebra_interface_address_delete_update
    - UNSET_FLAG
    - CONNECTED_PREFIX
    - listnode_delete
    - zebra_interface_address_add_update
    - assert
    linkageType: ''
    returnType: int
    signature: int if_subnet_delete(struct interface *ifp, struct connected *ifc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - newflags
    argTypes:
    - struct interface*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 457
    functionName: if_flags_mangle
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void if_flags_mangle(struct interface *ifp, uint64_t *newflags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_flags_mangle
      Src: /src/frr/zebra/interface.c:467,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/interface.c:469,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:472,1
    - Dst: if_down
      Src: /src/frr/zebra/interface.c:473,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:477,1
    - Dst: if_up
      Src: /src/frr/zebra/interface.c:478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ifp
    - newflags
    argTypes:
    - struct interface*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 480
    functionName: if_flags_update
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - if_is_no_ptm_operative
    - if_flags_mangle
    - if_down
    - if_is_operative
    - if_up
    linkageType: ''
    returnType: void
    signature: void if_flags_update(struct interface *ifp, uint64_t newflags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/interface.c:491,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:494,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:494,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:495,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:498,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:523,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:524,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:527,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/interface.c:530,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:533,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 543
    functionName: if_addr_wakeup
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - if_set_flags
    - dplane_intf_addr_set
    - if_refresh
    - CHECK_FLAG
    - SET_FLAG
    - dplane_res2str
    - if
    - ALL_LIST_ELEMENTS
    - flog_err_sys
    - if_is_up
    linkageType: ''
    returnType: void
    signature: void if_addr_wakeup(struct interface *ifp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:582,1
    - Dst: if_link_per_ns
      Src: /src/frr/zebra/interface.c:583,1
    - Dst: assert
      Src: /src/frr/zebra/interface.c:585,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:588,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:590,1
    - Dst: zebra_ptm_if_set_ptm_state
      Src: /src/frr/zebra/interface.c:592,1
    - Dst: zebra_interface_add_update
      Src: /src/frr/zebra/interface.c:594,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:596,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:597,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:601,1
    - Dst: if_addr_wakeup
      Src: /src/frr/zebra/interface.c:610,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:613,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:620,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (if_data)
      pos:
        line_end: 584
        line_start: 584
        source_file: /src/frr/zebra/interface.c
    constantsTouched: []
    func_position:
      end: 624
      start: 572
    functionDepth: 4
    functionLinenumber: 572
    functionLinenumberEnd: 624
    functionName: if_add_update
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 4
    functionsReached:
    - if_link_per_ns
    - if_set_flags
    - zebra_ptm_if_set_ptm_state
    - CHECK_FLAG
    - if_unset_flags
    - SET_FLAG
    - zebra_interface_add_update
    - zlog_debug
    - if_addr_wakeup
    - assert
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: void if_add_update(struct interface *ifp)
  - BBCount: 358
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/interface.c:634,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:635,1
    - Dst: zebra_interface_address_add_update
      Src: /src/frr/zebra/interface.c:636,1
    - Dst: connected_up
      Src: /src/frr/zebra/interface.c:638,1
    - Dst: if_uninstall_connected
      Src: /src/frr/zebra/interface.c:644,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/interface.c:651,1
    - Dst: zebra_interface_address_delete_update
      Src: /src/frr/zebra/interface.c:652,1
    - Dst: connected_down
      Src: /src/frr/zebra/interface.c:653,1
    - Dst: if_delete_connected
      Src: /src/frr/zebra/interface.c:660,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:674,1
    - Dst: listgetdata
      Src: /src/frr/zebra/interface.c:675,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/zebra/interface.c:677,1
    - Dst: apply_mask
      Src: /src/frr/zebra/interface.c:678,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/interface.c:681,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:687,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:691,1
    - Dst: listgetdata
      Src: /src/frr/zebra/interface.c:701,1
    - Dst: connected_down
      Src: /src/frr/zebra/interface.c:702,1
    - Dst: zebra_interface_address_delete_update
      Src: /src/frr/zebra/interface.c:710,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:713,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:714,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/interface.c:717,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:718,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:722,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:724,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:726,1
    - Dst: list_delete
      Src: /src/frr/zebra/interface.c:732,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/interface.c:734,1
    - Dst: connected_down
      Src: /src/frr/zebra/interface.c:736,1
    - Dst: zebra_interface_address_delete_update
      Src: /src/frr/zebra/interface.c:738,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:740,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:741,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:743,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:746,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:747,1
    - Dst: if_delete_update
      Src: /src/frr/zebra/interface.c:756,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:761,1
    - Dst: flog_err
      Src: /src/frr/zebra/interface.c:762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:770,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:774,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:777,1
    - Dst: if_delete_connected
      Src: /src/frr/zebra/interface.c:782,1
    - Dst: zebra_interface_delete_update
      Src: /src/frr/zebra/interface.c:785,1
    - Dst: if_unlink_per_ns
      Src: /src/frr/zebra/interface.c:787,1
    - Dst: if_set_index
      Src: /src/frr/zebra/interface.c:794,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/interface.c:803,1
    - Dst: if_handle_vrf_change
      Src: /src/frr/zebra/interface.c:804,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:806,1
    - Dst: zebra_evpn_if_cleanup
      Src: /src/frr/zebra/interface.c:811,1
    - Dst: memset
      Src: /src/frr/zebra/interface.c:814,1
    - Dst: memset
      Src: /src/frr/zebra/interface.c:815,1
    - Dst: zebra_evpn_mac_ifp_del
      Src: /src/frr/zebra/interface.c:817,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:822,1
    - Dst: if_delete
      Src: /src/frr/zebra/interface.c:824,1
    - Dst: if_handle_vrf_change
      Src: /src/frr/zebra/interface.c:829,1
    - Dst: if_uninstall_connected
      Src: /src/frr/zebra/interface.c:836,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_del_all
      Src: /src/frr/zebra/interface.c:839,1
    - Dst: if_down_del_nbr_connected
      Src: /src/frr/zebra/interface.c:842,1
    - Dst: zebra_interface_vrf_update_del
      Src: /src/frr/zebra/interface.c:846,1
    - Dst: if_is_vrf
      Src: /src/frr/zebra/interface.c:848,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/zebra/interface.c:852,1
    - Dst: zebra_interface_vrf_update_add
      Src: /src/frr/zebra/interface.c:856,1
    - Dst: ipv6_ll_address_to_mac
      Src: /src/frr/zebra/interface.c:859,1
    - Dst: if_nbr_mac_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/interface.c:869,1
    - Dst: inet_pton
      Src: /src/frr/zebra/interface.c:880,1
    - Dst: kernel_neigh_update
      Src: /src/frr/zebra/interface.c:888,1
    - Dst: memcpy
      Src: /src/frr/zebra/interface.c:904,1
    - Dst: memcpy
      Src: /src/frr/zebra/interface.c:913,1
    - Dst: ipv6_ll_address_to_mac
      Src: /src/frr/zebra/interface.c:924,1
    - Dst: if_nbr_mac_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/interface.c:925,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:930,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:934,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/interface.c:936,1
    - Dst: for
      Src: /src/frr/zebra/interface.c:947,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:947,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/interface.c:949,1
    - Dst: for
      Src: /src/frr/zebra/interface.c:959,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/interface.c:959,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:961,1
    - Dst: nbr_connected_free
      Src: /src/frr/zebra/interface.c:962,1
    - Dst: if_nhg_dependents_add
      Src: /src/frr/zebra/interface.c:966,1
    - Dst: nhg_connected_tree_add_nhe
      Src: /src/frr/zebra/interface.c:971,1
    - Dst: if_nhg_dependents_del
      Src: /src/frr/zebra/interface.c:975,1
    - Dst: nhg_connected_tree_del_nhe
      Src: /src/frr/zebra/interface.c:980,1
    - Dst: if_nhg_dependents_count
      Src: /src/frr/zebra/interface.c:984,1
    - Dst: nhg_connected_tree_count
      Src: /src/frr/zebra/interface.c:989,1
    - Dst: if_nhg_dependents_is_empty
      Src: /src/frr/zebra/interface.c:996,1
    - Dst: nhg_connected_tree_is_empty
      Src: /src/frr/zebra/interface.c:1001,1
    - Dst: if_up
      Src: /src/frr/zebra/interface.c:1008,1
    - Dst: frr_timestamp
      Src: /src/frr/zebra/interface.c:1015,1
    - Dst: flog_warn
      Src: /src/frr/zebra/interface.c:1019,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/interface.c:1024,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_add_all
      Src: /src/frr/zebra/interface.c:1026,1
    - Dst: rtadv_if_up
      Src: /src/frr/zebra/interface.c:1028,1
    - Dst: if_install_connected
      Src: /src/frr/zebra/interface.c:1032,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:1038,1
    - Dst: zebra_vxlan_if_up
      Src: /src/frr/zebra/interface.c:1039,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:1040,1
    - Dst: zebra_vxlan_svi_up
      Src: /src/frr/zebra/interface.c:1042,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:1043,1
    - Dst: zebra_vxlan_svi_up
      Src: /src/frr/zebra/interface.c:1046,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/interface.c:1047,1
    - Dst: zebra_vxlan_macvlan_up
      Src: /src/frr/zebra/interface.c:1048,1
    - Dst: zebra_evpn_es_if_oper_state_change
      Src: /src/frr/zebra/interface.c:1052,1
    - Dst: zebra_evpn_mh_uplink_oper_update
      Src: /src/frr/zebra/interface.c:1055,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/interface.c:1057,1
    - Dst: event_ignore_late_timer
      Src: /src/frr/zebra/interface.c:1059,1
    - Dst: if_down
      Src: /src/frr/zebra/interface.c:1064,1
    - Dst: frr_timestamp
      Src: /src/frr/zebra/interface.c:1071,1
    - Dst: if_down_nhg_dependents
      Src: /src/frr/zebra/interface.c:1073,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:1080,1
    - Dst: zebra_vxlan_if_down
      Src: /src/frr/zebra/interface.c:1081,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:1082,1
    - Dst: zebra_vxlan_svi_down
      Src: /src/frr/zebra/interface.c:1084,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:1085,1
    - Dst: zebra_vxlan_svi_down
      Src: /src/frr/zebra/interface.c:1088,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/interface.c:1089,1
    - Dst: zebra_vxlan_macvlan_down
      Src: /src/frr/zebra/interface.c:1090,1
    - Dst: zebra_evpn_es_if_oper_state_change
      Src: /src/frr/zebra/interface.c:1094,1
    - Dst: zebra_evpn_mh_uplink_oper_update
      Src: /src/frr/zebra/interface.c:1097,1
    - Dst: zebra_interface_down_update
      Src: /src/frr/zebra/interface.c:1100,1
    - Dst: if_uninstall_connected
      Src: /src/frr/zebra/interface.c:1103,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_del_all
      Src: /src/frr/zebra/interface.c:1105,1
    - Dst: if_down_del_nbr_connected
      Src: /src/frr/zebra/interface.c:1108,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:1111,1
    - Dst: if_get_flags
      Src: /src/frr/zebra/interface.c:1114,1
    - Dst: zebra_if_update_link
      Src: /src/frr/zebra/interface.c:1118,1
    - Dst: IS_ZEBRA_IF_VETH
      Src: /src/frr/zebra/interface.c:1123,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1128,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1128,1
    - Dst: zebra_if_update_all_links
      Src: /src/frr/zebra/interface.c:1136,1
    - Dst: zlog_info
      Src: /src/frr/zebra/interface.c:1143,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:1145,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:1145,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:1151,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1155,1
    - Dst: zebra_l2_map_slave_to_bond
      Src: /src/frr/zebra/interface.c:1158,1
    - Dst: if_lookup_by_index_per_nsid
      Src: /src/frr/zebra/interface.c:1163,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1166,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:1173,1
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/interface.c:1174,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:1175,1
    - Dst: if_ignore_set_protodown
      Src: /src/frr/zebra/interface.c:1179,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1189,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1190,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1196,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1209,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1222,1
    - Dst: if_ignore_set_protodown
      Src: /src/frr/zebra/interface.c:1243,1
    - Dst: zlog_info
      Src: /src/frr/zebra/interface.c:1246,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1254,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1256,1
    - Dst: dplane_intf_update
      Src: /src/frr/zebra/interface.c:1259,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/interface.c:1261,1
    - Dst: zebra_if_update_protodown_rc
      Src: /src/frr/zebra/interface.c:1279,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1296,1
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/interface.c:1297,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1300,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1301,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1301,1
    - Dst: dplane_ctx_get_intf_dest
      Src: /src/frr/zebra/interface.c:1305,1
    - Dst: dplane_ctx_intf_is_connected
      Src: /src/frr/zebra/interface.c:1309,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1310,1
    - Dst: dplane_ctx_intf_is_secondary
      Src: /src/frr/zebra/interface.c:1313,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1314,1
    - Dst: dplane_ctx_intf_has_label
      Src: /src/frr/zebra/interface.c:1317,1
    - Dst: dplane_ctx_get_intf_label
      Src: /src/frr/zebra/interface.c:1318,1
    - Dst: strcmp
      Src: /src/frr/zebra/interface.c:1320,1
    - Dst: dplane_ctx_get_intf_metric
      Src: /src/frr/zebra/interface.c:1323,1
    - Dst: connected_add_ipv4
      Src: /src/frr/zebra/interface.c:1328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1331,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/interface.c:1333,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/interface.c:1337,1
    - Dst: connected_add_ipv6
      Src: /src/frr/zebra/interface.c:1343,1
    - Dst: connected_delete_ipv6
      Src: /src/frr/zebra/interface.c:1347,1
    - Dst: rib_update
      Src: /src/frr/zebra/interface.c:1356,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/interface.c:1367,1
    - Dst: dplane_ctx_get_intf_pd_reason_val
      Src: /src/frr/zebra/interface.c:1368,1
    - Dst: dplane_ctx_intf_is_protodown
      Src: /src/frr/zebra/interface.c:1369,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1372,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1373,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1373,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1380,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1387,1
    - Dst: COND_FLAG
      Src: /src/frr/zebra/interface.c:1393,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:1397,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:1398,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/interface.c:1414,1
    - Dst: dplane_ctx_get_netconf_mpls
      Src: /src/frr/zebra/interface.c:1415,1
    - Dst: dplane_ctx_get_netconf_linkdown
      Src: /src/frr/zebra/interface.c:1416,1
    - Dst: dplane_ctx_get_netconf_mcast
      Src: /src/frr/zebra/interface.c:1417,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1439,1
    - Dst: zebra_mpls_turned_on
      Src: /src/frr/zebra/interface.c:1458,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1474,1
    - Dst: dplane_ctx_get_ns_id
      Src: /src/frr/zebra/interface.c:1492,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/interface.c:1493,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1494,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/interface.c:1495,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1498,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1499,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:1500,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1502,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1506,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1511,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1516,1
    - Dst: zebra_if_addr_update_ctx
      Src: /src/frr/zebra/interface.c:1527,1
    - Dst: zebra_if_update_ctx
      Src: /src/frr/zebra/interface.c:1533,1
    - Dst: zebra_if_netconf_update_ctx
      Src: /src/frr/zebra/interface.c:1537,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:1603,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/interface.c:1604,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:1605,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1607,1
    - Dst: prefix_family_str
      Src: /src/frr/zebra/interface.c:1607,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/interface.c:1611,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:1613,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1616,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:1621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1623,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1624,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1625,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:1628,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1630,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1631,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1632,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1636,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1639,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1643,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/interface.c:1656,1
    - Dst: prefix2str
      Src: /src/frr/zebra/interface.c:1656,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1658,1
    - Dst: prefix_family_str
      Src: /src/frr/zebra/interface.c:1658,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1732,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1734,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1740,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1742,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1743,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1745,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1747,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:1749,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:1750,1
    - Dst: listcount
      Src: /src/frr/zebra/interface.c:1753,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1757,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1760,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1763,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1764,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1765,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1766,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1769,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1780,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1784,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1786,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1791,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1795,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1797,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1798,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1801,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1802,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1810,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1812,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:1815,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/interface.c:1821,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:1825,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1826,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1828,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1829,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1830,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:1832,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1833,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1835,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1836,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1839,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/interface.c:1843,1
    - Dst: prefix2str
      Src: /src/frr/zebra/interface.c:1845,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:1852,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1858,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1860,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1863,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1864,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1866,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1867,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1869,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1872,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1873,1
    - Dst: strnlen
      Src: /src/frr/zebra/interface.c:1875,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1881,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:1886,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/interface.c:1888,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1894,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1904,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:1905,1
    - Dst: zebra_vxlan_if_vni_hash_dump_vty
      Src: /src/frr/zebra/interface.c:1908,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1917,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:1920,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1929,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1934,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1935,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1937,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/interface.c:1941,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1942,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/interface.c:1944,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1948,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:1952,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1963,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1964,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1967,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:1968,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1969,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1971,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1973,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1976,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1979,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1981,1
    - Dst: zebra_ptm_show_status
      Src: /src/frr/zebra/interface.c:1984,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1986,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1989,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1991,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1994,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1996,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1997,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2001,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2004,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: if_flag_dump
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2008,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2011,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2013,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2016,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2018,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: if_link_type_str
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2025,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2027,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2029,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2034,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2035,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2042,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2044,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2048,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2050,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2053,1
    - Dst: zebra_ziftype_2str
      Src: /src/frr/zebra/interface.c:2054,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2055,1
    - Dst: zebra_zifslavetype_2str
      Src: /src/frr/zebra/interface.c:2056,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:2058,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2059,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/interface.c:2060,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:2061,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2065,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:2066,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:2067,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/interface.c:2068,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2073,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2075,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2077,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2083,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2084,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2086,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/interface.c:2092,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2098,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2101,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:2106,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2112,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2115,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2121,1
    - Dst: zebra_evpn_if_es_print
      Src: /src/frr/zebra/interface.c:2123,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2124,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:2125,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:2126,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2128,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:2129,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2134,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2136,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:2139,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2142,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2143,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2144,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2145,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2146,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2148,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2149,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2152,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2153,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2156,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2162,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2163,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2165,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2166,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2168,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2169,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2171,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2174,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2176,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2177,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2180,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2181,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2183,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2184,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2186,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2187,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2189,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2190,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2192,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2193,1
    - Dst: hook_call
      Src: /src/frr/zebra/interface.c:2197,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:2199,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2200,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2201,1
    - Dst: nbr_connected_dump_vty
      Src: /src/frr/zebra/interface.c:2202,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2211,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2217,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2220,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2224,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2230,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2236,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2246,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2252,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2255,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2263,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2265,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2267,1
    - Dst: zebra_vxlan_if_vni_dump_vty_json
      Src: /src/frr/zebra/interface.c:2280,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2293,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2299,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2300,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2302,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/interface.c:2305,1
    - Dst: zebra_vxlan_if_vni_dump_vty_json
      Src: /src/frr/zebra/interface.c:2306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/interface.c:2308,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2326,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2327,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:2329,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2330,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2332,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2333,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:2334,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2336,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2338,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2342,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2347,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2348,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2350,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2353,1
    - Dst: zebra_ptm_show_status
      Src: /src/frr/zebra/interface.c:2356,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2358,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2361,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2363,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2366,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2367,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2368,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2369,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2371,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2377,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2378,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2382,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2383,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2384,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2385,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2387,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2388,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2389,1
    - Dst: if_flag_dump
      Src: /src/frr/zebra/interface.c:2389,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2392,1
    - Dst: if_link_type_str
      Src: /src/frr/zebra/interface.c:2392,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:2398,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:2400,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2402,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2407,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:2411,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2412,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:2414,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:2414,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2418,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2420,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2424,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2426,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2429,1
    - Dst: zebra_ziftype_2str
      Src: /src/frr/zebra/interface.c:2430,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2431,1
    - Dst: zebra_zifslavetype_2str
      Src: /src/frr/zebra/interface.c:2433,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:2435,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2439,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:2441,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2445,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:2446,1
    - Dst: zebra_vxlan_if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2447,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/interface.c:2449,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2454,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2457,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2465,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2466,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2468,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/interface.c:2474,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2480,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2484,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:2489,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2495,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2499,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2504,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2506,1
    - Dst: zebra_evpn_if_es_print
      Src: /src/frr/zebra/interface.c:2508,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:2510,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2511,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:2513,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2515,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:2517,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2523,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2526,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:2530,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2534,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2535,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2538,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2539,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2541,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2542,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2544,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2545,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2548,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2551,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2552,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:2557,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2559,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2564,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2565,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2567,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2568,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2570,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2571,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2573,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2577,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2578,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2580,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2581,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2583,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2584,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2586,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2587,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2589,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2590,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2592,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2593,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2595,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:2598,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:2601,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2602,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2605,1
    - Dst: nbr_connected_dump_vty
      Src: /src/frr/zebra/interface.c:2607,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2613,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2614,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2615,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2617,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2618,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2620,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2622,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2624,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2626,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2628,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2630,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2631,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2632,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2634,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2635,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2637,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2639,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2641,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2643,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2645,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2649,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2650,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2651,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2652,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2654,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2655,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2656,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2657,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2659,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2660,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2664,1
    - Dst: ifstat_update_proc
      Src: /src/frr/zebra/interface.c:2669,1
    - Dst: ifstat_update_sysctl
      Src: /src/frr/zebra/interface.c:2672,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/interface.c:2692,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2695,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2697,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2702,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:2706,1
    - Dst: ifs_dump_brief_vty
      Src: /src/frr/zebra/interface.c:2708,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2712,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2714,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2719,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:2726,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2739,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2742,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:2745,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:2748,1
    - Dst: ifs_dump_brief_vty
      Src: /src/frr/zebra/interface.c:2750,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2754,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2756,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2762,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:2769,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2782,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/interface.c:2784,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2787,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2789,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/zebra/interface.c:2793,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2796,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2798,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2803,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2806,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2808,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2811,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:2817,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2832,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:2834,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/zebra/interface.c:2835,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/interface.c:2839,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2846,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2848,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2853,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2855,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2858,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2864,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2867,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2869,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2872,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2881,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2889,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2890,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:2892,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2893,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2894,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:2896,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2897,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2904,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2909,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2913,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2920,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:2924,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/interface.c:2934,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2936,1
    - Dst: if_show_description
      Src: /src/frr/zebra/interface.c:2940,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:2946,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:2956,1
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/interface.c:2957,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2958,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/interface.c:2958,1
    - Dst: if_show_description
      Src: /src/frr/zebra/interface.c:2960,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2970,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:2971,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:2972,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:2976,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:2984,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:2989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2993,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:2994,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2996,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:2999,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:3007,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3014,1
    - Dst: dplane_intf_mpls_modify_state
      Src: /src/frr/zebra/interface.c:3018,1
    - Dst: dplane_intf_mpls_modify_state
      Src: /src/frr/zebra/interface.c:3021,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:3032,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3033,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3034,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3038,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3046,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3052,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:3056,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3057,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3059,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3062,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/interface.c:3074,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:3076,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/interface.c:3079,1
    - Dst: if_down
      Src: /src/frr/zebra/interface.c:3080,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:3082,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3085,1
    - Dst: if_up
      Src: /src/frr/zebra/interface.c:3086,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3093,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3096,1
    - Dst: if_linkdetect
      Src: /src/frr/zebra/interface.c:3098,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3104,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3110,1
    - Dst: if_linkdetect
      Src: /src/frr/zebra/interface.c:3112,1
    - Dst: rtadv_stop_ra
      Src: /src/frr/zebra/interface.c:3123,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3124,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3125,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3128,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3136,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3141,1
    - Dst: rtadv_stop_ra
      Src: /src/frr/zebra/interface.c:3147,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3148,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3150,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3153,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:3166,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3167,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3170,1
    - Dst: if_addr_wakeup
      Src: /src/frr/zebra/interface.c:3176,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3185,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3191,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:3196,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3198,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3201,1
    - Dst: if_addr_wakeup
      Src: /src/frr/zebra/interface.c:3207,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3216,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3223,1
    - Dst: strtol
      Src: /src/frr/zebra/interface.c:3226,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3230,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3237,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/interface.c:3238,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3243,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3250,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3255,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/interface.c:3256,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3274,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3276,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3280,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3281,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3289,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3291,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3295,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3296,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3306,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3309,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3310,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/zebra/interface.c:3313,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/zebra/interface.c:3324,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3335,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3340,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3346,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3350,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3351,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3354,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3355,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3360,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3368,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3371,1
    - Dst: if_link_params_free
      Src: /src/frr/zebra/interface.c:3374,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:3376,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:3380,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:3381,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:3383,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3389,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3390,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3396,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3403,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3404,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3407,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3410,1
    - Dst: link_param_cmd_set_uint32
      Src: /src/frr/zebra/interface.c:3413,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3418,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3424,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3427,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3432,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3439,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3440,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3444,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3445,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3446,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3458,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3464,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3467,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3472,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3479,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3480,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3483,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3484,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3485,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3492,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3499,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3502,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3507,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3516,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3517,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3522,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3523,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3524,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3528,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3529,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3530,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3537,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3544,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3547,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:3553,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3563,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:3565,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:3569,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3570,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3575,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3576,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3577,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3582,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:3586,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:3588,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:3592,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:3595,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:3599,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:3603,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3607,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3618,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3619,1
    - Dst: inet_aton
      Src: /src/frr/zebra/interface.c:3623,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3624,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3629,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3631,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3634,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3639,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3643,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3644,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3649,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3655,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3656,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3664,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3667,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3668,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3675,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3687,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3689,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3690,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3693,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3694,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:3708,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3710,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3717,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3720,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3722,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:3726,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3729,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3738,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3745,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3748,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3749,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3753,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3756,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3762,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3763,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3768,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3774,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3775,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3782,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3785,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3788,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3789,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3794,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3801,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3802,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3805,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3808,1
    - Dst: link_param_cmd_set_uint32
      Src: /src/frr/zebra/interface.c:3811,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3816,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3822,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3825,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3830,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3837,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3838,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3841,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3842,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3843,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3851,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3854,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3859,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3865,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3868,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3873,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3880,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3881,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3884,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3885,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3886,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3893,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3900,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3903,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3908,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3914,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3917,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3922,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3929,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3930,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3933,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3934,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3935,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3942,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3949,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3952,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3957,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3963,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3966,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3971,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3978,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3979,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3982,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3983,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3984,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3991,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3998,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:4001,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4006,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4012,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:4015,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:4024,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:4027,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:4034,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4040,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:4043,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4047,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4048,1
    - Dst: ag_change
      Src: /src/frr/zebra/interface.c:4053,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:4063,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:4072,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:4074,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:4077,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:4087,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:4089,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4096,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/interface.c:4096,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4103,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4106,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/interface.c:4107,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/interface.c:4113,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4116,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4118,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4124,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4127,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/zebra/interface.c:4128,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4129,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/zebra/interface.c:4146,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4148,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4150,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4154,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4159,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4160,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4167,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4170,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4174,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4179,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4182,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4183,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4184,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4187,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4189,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4191,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4195,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4218,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4220,1
    - Dst: ipv4_martian
      Src: /src/frr/zebra/interface.c:4224,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4225,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4231,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4236,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4238,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4243,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4245,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4249,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4254,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4255,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4262,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4269,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4270,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4274,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4277,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4278,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4279,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4282,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4284,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4285,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4289,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4306,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4308,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4315,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4319,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4322,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4325,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4326,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4327,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4328,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4333,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4335,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4336,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4339,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4354,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4356,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4362,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4367,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4369,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4375,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4377,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4382,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4385,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4389,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4390,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4391,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4396,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4398,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4399,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4402,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4408,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4416,1
    - Dst: ip_address_install
      Src: /src/frr/zebra/interface.c:4417,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4421,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4430,1
    - Dst: ip_address_uninstall
      Src: /src/frr/zebra/interface.c:4431,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4435,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4444,1
    - Dst: ip_address_install
      Src: /src/frr/zebra/interface.c:4445,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4448,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4458,1
    - Dst: ip_address_uninstall
      Src: /src/frr/zebra/interface.c:4459,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4463,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4474,1
    - Dst: ip_address_install
      Src: /src/frr/zebra/interface.c:4475,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4479,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4491,1
    - Dst: ip_address_uninstall
      Src: /src/frr/zebra/interface.c:4492,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/zebra/interface.c:4511,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4513,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4515,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/interface.c:4519,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4525,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4532,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4533,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4537,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4540,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4541,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4542,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4545,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4547,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4549,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4553,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/zebra/interface.c:4575,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4577,1
    - Dst: ipv6_martian
      Src: /src/frr/zebra/interface.c:4581,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4582,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4586,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4588,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/interface.c:4592,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4598,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4601,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4605,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4606,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4609,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4610,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4613,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4614,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4615,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4618,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4620,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4621,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4625,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:4640,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4641,1
    - Dst: ipv6_address_uninstall
      Src: /src/frr/zebra/interface.c:4648,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/zebra/interface.c:4658,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4660,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4665,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4667,1
    - Dst: CMD_WARNING_CONFIG_FAILED
      Src: /src/frr/zebra/interface.c:4668,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4672,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4678,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4679,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4680,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4681,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4686,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4688,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4689,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4693,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4699,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4707,1
    - Dst: ipv6_address_install
      Src: /src/frr/zebra/interface.c:4708,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4712,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4721,1
    - Dst: ipv6_address_uninstall
      Src: /src/frr/zebra/interface.c:4722,1
    - Dst: link_params_config_write
      Src: /src/frr/zebra/interface.c:4726,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:4732,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4737,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4738,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4739,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4740,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4741,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4742,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4743,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4745,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4746,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4749,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:4753,1
    - Dst: yang_dnode_get
      Src: /src/frr/zebra/interface.c:4757,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/zebra/interface.c:4759,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4761,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4762,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4763,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4764,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4765,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4767,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4769,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4770,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4771,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4772,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4773,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4774,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4775,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4776,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4777,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4778,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4779,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4780,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4783,1
    - Dst: zebra_ptm_write
      Src: /src/frr/zebra/interface.c:4792,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:4794,1
    - Dst: if_vty_config_start
      Src: /src/frr/zebra/interface.c:4803,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4807,1
    - Dst: zebra_ptm_if_write
      Src: /src/frr/zebra/interface.c:4809,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4813,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4819,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4821,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4823,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:4825,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4827,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4831,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:4834,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/interface.c:4837,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:4840,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4845,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4848,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4851,1
    CyclomaticComplexity: 397
    EdgeCount: 397
    ICount: 1472
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4853
      start: 627
    functionDepth: 4
    functionLinenumber: 627
    functionLinenumberEnd: 4853
    functionName: if_install_connected
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 1
    functionsReached:
    - nhg_connected_tree_is_empty
    - kernel_neigh_update
    - if_delete_update
    - route_top
    - listhead
    - IS_ZEBRA_IF_MACVLAN
    - event_ignore_late_timer
    - interface_update_stats
    - vrf_lookup_by_name
    - if_unset_flags
    - flog_err
    - connected_up
    - UNSET_PARAM
    - zebra_evpn_if_es_print
    - ifs_dump_brief_vty_json
    - zebra_ziftype_2str
    - RB_EMPTY
    - strlcat
    - zebra_evpn_if_cleanup
    - json_object_boolean_add
    - dplane_ctx_intf_has_label
    - if_link_type_str
    - flog_warn
    - memset
    - if_refresh
    - snprintf
    - nhg_connected_tree_count
    - dplane_ctx_get_intf_pd_reason_val
    - ifstat_update_sysctl
    - dplane_ctx_get_netconf_linkdown
    - dplane_ctx_intf_is_protodown
    - json_array_string_add
    - listgetdata
    - zebra_evpn_mac_ifp_del
    - for
    - IS_ZEBRA_IF_VETH
    - zebra_if_update_ctx
    - if_is_up
    - if_update_to_new_vrf
    - if
    - COND_FLAG
    - route_unlock_node
    - if_is_no_ptm_operative
    - sscanf
    - connected_new
    - ipv6_martian
    - if_is_vrf
    - listcount
    - list_delete_node
    - if_get_flags
    - inet_pton
    - IS_ZEBRA_VXLAN_IF_VNI
    - if_link_params_get
    - yang_dnode_exists
    - memcpy
    - json_object_new_object
    - zebra_interface_delete_update
    - nhg_connected_tree_add_nhe
    - zebra_interface_vrf_update_del
    - connected_delete_ipv4
    - dplane_ctx_get_status
    - if_dump_vty_json
    - strtol
    - if_is_protodown_applicable
    - dplane_ctx_get_ifindex
    - nb_cli_show_dnode_cmds
    - ALL_LIST_ELEMENTS
    - zebra_if_addr_update_ctx
    - dplane_intf_mpls_modify_state
    - zebra_ptm_if_write
    - dplane_intf_update
    - if_down
    - prefix_ipv4_new
    - zebra_vxlan_if_vni_dump_vty
    - DEFPY
    - ipv6_ll_address_to_mac
    - dplane_ctx_get_ns_id
    - dplane_ctx_get_op
    - ZEBRA_IF_IS_PROTODOWN
    - route_node_lookup
    - zebra_vxlan_if_vni_dump_vty_json
    - if_nbr_ipv6ll_to_ipv4ll_neigh_update
    - if_lookup_by_index_per_nsid
    - inet_ntop
    - CONNECTED_PREFIX
    - zebra_if_update_link
    - yang_dnode_get_uint32
    - zebra_ptm_show_status
    - IS_PARAM_SET
    - if_down_nhg_dependents
    - apply_mask_ipv6
    - prefix_ipv6_new
    - zebra_ns_lookup
    - zebra_interface_up_update
    - if_delete
    - zebra_vxlan_macvlan_down
    - dplane_ctx_get_intf_label
    - if_nbr_ipv6ll_to_ipv4ll_neigh_del_all
    - IS_ZEBRA_IF_VLAN
    - dplane_ctx_intf_is_connected
    - DEFUN
    - ip_address_uninstall
    - prefix_family_str
    - ipv6_address_install
    - yang_dnode_get
    - IS_ZEBRA_IF_BRIDGE
    - if_nbr_mac_to_ipv4ll_neigh_update
    - zebra_if_netconf_update_ctx
    - zebra_evpn_mh_uplink_oper_update
    - connected_check
    - event_add_timer
    - zebra_vxlan_if_vni_hash_dump_vty
    - nb_cli_apply_changes
    - connected_check_ptp
    - json_object_new_array
    - if_set_index
    - ipv4_martian
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - IS_PARAM_UNSET
    - if_lookup_by_name_vrf
    - if_nhg_dependents_del
    - rib_update
    - json_object_object_add
    - nbr_connected_free
    - if_handle_vrf_change
    - nbr_connected_dump_vty
    - VRF_LOGNAME
    - if_flag_dump
    - if_is_operative
    - frr_timestamp
    - if_nhg_dependents_count
    - vty_json
    - if_up
    - RB_FOREACH
    - vrf_is_backend_netns
    - nhg_connected_tree_del_nhe
    - zebra_vxlan_if_down
    - apply_mask_ipv4
    - CMD_WARNING_CONFIG_FAILED
    - zebra_evpn_es_if_oper_state_change
    - if_install_connected
    - link_param_cmd_set_uint32
    - DEFUN_NOSH
    - ifs_dump_brief_vty
    - json_object_string_add
    - SET_PARAM
    - DEFPY_YANG
    - rtadv_if_up
    - ip_address_install
    - if_set_flags
    - connected_add_ipv6
    - VTY_DECLVAR_CONTEXT
    - dplane_intf_addr_set
    - if_link_params_enable
    - link_params_config_write
    - dplane_ctx_intf_is_secondary
    - dplane_ctx_get_netconf_mpls
    - FOR_ALL_INTERFACES
    - zlog_debug
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - if_delete_connected
    - if_nhg_dependents_is_empty
    - zebra_vxlan_svi_up
    - connected_add_ipv4
    - strnlen
    - zlog_info
    - zebra_evpn_acc_bd_svi_set
    - vty_out
    - if_link_params_free
    - nb_cli_enqueue_change
    - route_next
    - json_object_int_add
    - dplane_res2str
    - zebra_interface_address_add_update
    - IS_ZEBRA_IF_GRE
    - dplane_ctx_get_intf_dest
    - strtoul
    - json_object_array_add
    - zebra_if_update_protodown_rc
    - if_vty_config_start
    - if_nbr_ipv6ll_to_ipv4ll_neigh_add_all
    - SET_FLAG
    - ag_change
    - dplane_ctx_get_netconf_mcast
    - zebra_zifslavetype_2str
    - if_unlink_per_ns
    - prefix2str
    - link_param_cmd_unset
    - list_delete
    - if_ignore_set_protodown
    - zebra_vxlan_if_dump_vty
    - dplane_ctx_get_intf_metric
    - zebra_mpls_turned_on
    - if_lookup_by_index_per_ns
    - listnode_add
    - connected_free
    - zebra_interface_address_delete_update
    - zebra_vxlan_svi_down
    - if_nhg_dependents_add
    - zlog_warn
    - dplane_ctx_get_intf_addr
    - if_addr_wakeup
    - link_param_cmd_set_float
    - json_object_string_addf
    - yang_dnode_get_string
    - zebra_l2_map_slave_to_bond
    - HAS_LINK_PARAMS
    - IS_ZEBRA_IF_BOND_SLAVE
    - connected_delete_ipv6
    - rtadv_stop_ra
    - yang_dnode_iterate
    - zebra_vxlan_macvlan_up
    - hook_call
    - IS_ZEBRA_IF_BOND
    - ALL_LIST_ELEMENTS_RO
    - json_object_double_add
    - ipv6_address_uninstall
    - safe_strerror
    - if_dump_vty
    - zebra_ptm_write
    - hash_iterate
    - str2prefix_ipv6
    - zebra_if_update_all_links
    - dplane_op2str
    - zebra_vxlan_if_dump_vty_json
    - apply_mask
    - zebra_interface_down_update
    - ifstat_update_proc
    - UNSET_FLAG
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - listnode_delete
    - zebra_protodown_rc_str
    - connected_down
    - CONNECTED_PEER
    - if_linkdetect
    - zebra_interface_parameters_update
    - XSTRDUP
    - zebra_vxlan_if_up
    - str2prefix_ipv4
    - zebra_interface_vrf_update_add
    - if_down_del_nbr_connected
    - dplane_ctx_get_afi
    - inet_aton
    - if_uninstall_connected
    - CHECK_FLAG
    - if_is_running
    - dplane_intf_addr_unset
    - IS_ZEBRA_IF_VXLAN
    - yang_dnode_get_enum
    - if_show_description
    - connected_dump_vty
    linkageType: ''
    returnType: void
    signature: void if_install_connected(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipv6_ll_address_to_mac
      Src: /src/frr/zebra/interface.c:924,1
    - Dst: if_nbr_mac_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/interface.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ifp
    - address
    - add
    argTypes:
    - struct interface*
    - struct in6_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 926
    functionName: if_nbr_ipv6ll_to_ipv4ll_neigh_update
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 1
    functionsReached:
    - ipv6_ll_address_to_mac
    - if_nbr_mac_to_ipv4ll_neigh_update
    linkageType: ''
    returnType: void
    signature: "void if_nbr_ipv6ll_to_ipv4ll_neigh_update(struct interface *ifp,\n\t\t\t\t\t
      \ struct in6_addr *address, int add)"
  - BBCount: 351
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:930,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:934,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/interface.c:936,1
    - Dst: for
      Src: /src/frr/zebra/interface.c:947,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:947,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/interface.c:949,1
    - Dst: for
      Src: /src/frr/zebra/interface.c:959,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/interface.c:959,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:961,1
    - Dst: nbr_connected_free
      Src: /src/frr/zebra/interface.c:962,1
    - Dst: if_nhg_dependents_add
      Src: /src/frr/zebra/interface.c:966,1
    - Dst: nhg_connected_tree_add_nhe
      Src: /src/frr/zebra/interface.c:971,1
    - Dst: if_nhg_dependents_del
      Src: /src/frr/zebra/interface.c:975,1
    - Dst: nhg_connected_tree_del_nhe
      Src: /src/frr/zebra/interface.c:980,1
    - Dst: if_nhg_dependents_count
      Src: /src/frr/zebra/interface.c:984,1
    - Dst: nhg_connected_tree_count
      Src: /src/frr/zebra/interface.c:989,1
    - Dst: if_nhg_dependents_is_empty
      Src: /src/frr/zebra/interface.c:996,1
    - Dst: nhg_connected_tree_is_empty
      Src: /src/frr/zebra/interface.c:1001,1
    - Dst: if_up
      Src: /src/frr/zebra/interface.c:1008,1
    - Dst: frr_timestamp
      Src: /src/frr/zebra/interface.c:1015,1
    - Dst: flog_warn
      Src: /src/frr/zebra/interface.c:1019,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/interface.c:1024,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_add_all
      Src: /src/frr/zebra/interface.c:1026,1
    - Dst: rtadv_if_up
      Src: /src/frr/zebra/interface.c:1028,1
    - Dst: if_install_connected
      Src: /src/frr/zebra/interface.c:1032,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:1038,1
    - Dst: zebra_vxlan_if_up
      Src: /src/frr/zebra/interface.c:1039,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:1040,1
    - Dst: zebra_vxlan_svi_up
      Src: /src/frr/zebra/interface.c:1042,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:1043,1
    - Dst: zebra_vxlan_svi_up
      Src: /src/frr/zebra/interface.c:1046,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/interface.c:1047,1
    - Dst: zebra_vxlan_macvlan_up
      Src: /src/frr/zebra/interface.c:1048,1
    - Dst: zebra_evpn_es_if_oper_state_change
      Src: /src/frr/zebra/interface.c:1052,1
    - Dst: zebra_evpn_mh_uplink_oper_update
      Src: /src/frr/zebra/interface.c:1055,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/interface.c:1057,1
    - Dst: event_ignore_late_timer
      Src: /src/frr/zebra/interface.c:1059,1
    - Dst: if_down
      Src: /src/frr/zebra/interface.c:1064,1
    - Dst: frr_timestamp
      Src: /src/frr/zebra/interface.c:1071,1
    - Dst: if_down_nhg_dependents
      Src: /src/frr/zebra/interface.c:1073,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:1080,1
    - Dst: zebra_vxlan_if_down
      Src: /src/frr/zebra/interface.c:1081,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:1082,1
    - Dst: zebra_vxlan_svi_down
      Src: /src/frr/zebra/interface.c:1084,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:1085,1
    - Dst: zebra_vxlan_svi_down
      Src: /src/frr/zebra/interface.c:1088,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/interface.c:1089,1
    - Dst: zebra_vxlan_macvlan_down
      Src: /src/frr/zebra/interface.c:1090,1
    - Dst: zebra_evpn_es_if_oper_state_change
      Src: /src/frr/zebra/interface.c:1094,1
    - Dst: zebra_evpn_mh_uplink_oper_update
      Src: /src/frr/zebra/interface.c:1097,1
    - Dst: zebra_interface_down_update
      Src: /src/frr/zebra/interface.c:1100,1
    - Dst: if_uninstall_connected
      Src: /src/frr/zebra/interface.c:1103,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_del_all
      Src: /src/frr/zebra/interface.c:1105,1
    - Dst: if_down_del_nbr_connected
      Src: /src/frr/zebra/interface.c:1108,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:1111,1
    - Dst: if_get_flags
      Src: /src/frr/zebra/interface.c:1114,1
    - Dst: zebra_if_update_link
      Src: /src/frr/zebra/interface.c:1118,1
    - Dst: IS_ZEBRA_IF_VETH
      Src: /src/frr/zebra/interface.c:1123,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1128,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1128,1
    - Dst: zebra_if_update_all_links
      Src: /src/frr/zebra/interface.c:1136,1
    - Dst: zlog_info
      Src: /src/frr/zebra/interface.c:1143,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:1145,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:1145,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:1151,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1155,1
    - Dst: zebra_l2_map_slave_to_bond
      Src: /src/frr/zebra/interface.c:1158,1
    - Dst: if_lookup_by_index_per_nsid
      Src: /src/frr/zebra/interface.c:1163,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1166,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:1173,1
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/interface.c:1174,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:1175,1
    - Dst: if_ignore_set_protodown
      Src: /src/frr/zebra/interface.c:1179,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1189,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1190,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1196,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1209,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1222,1
    - Dst: if_ignore_set_protodown
      Src: /src/frr/zebra/interface.c:1243,1
    - Dst: zlog_info
      Src: /src/frr/zebra/interface.c:1246,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1254,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1256,1
    - Dst: dplane_intf_update
      Src: /src/frr/zebra/interface.c:1259,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/interface.c:1261,1
    - Dst: zebra_if_update_protodown_rc
      Src: /src/frr/zebra/interface.c:1279,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1296,1
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/interface.c:1297,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1300,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1301,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1301,1
    - Dst: dplane_ctx_get_intf_dest
      Src: /src/frr/zebra/interface.c:1305,1
    - Dst: dplane_ctx_intf_is_connected
      Src: /src/frr/zebra/interface.c:1309,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1310,1
    - Dst: dplane_ctx_intf_is_secondary
      Src: /src/frr/zebra/interface.c:1313,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1314,1
    - Dst: dplane_ctx_intf_has_label
      Src: /src/frr/zebra/interface.c:1317,1
    - Dst: dplane_ctx_get_intf_label
      Src: /src/frr/zebra/interface.c:1318,1
    - Dst: strcmp
      Src: /src/frr/zebra/interface.c:1320,1
    - Dst: dplane_ctx_get_intf_metric
      Src: /src/frr/zebra/interface.c:1323,1
    - Dst: connected_add_ipv4
      Src: /src/frr/zebra/interface.c:1328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1331,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/interface.c:1333,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/interface.c:1337,1
    - Dst: connected_add_ipv6
      Src: /src/frr/zebra/interface.c:1343,1
    - Dst: connected_delete_ipv6
      Src: /src/frr/zebra/interface.c:1347,1
    - Dst: rib_update
      Src: /src/frr/zebra/interface.c:1356,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/interface.c:1367,1
    - Dst: dplane_ctx_get_intf_pd_reason_val
      Src: /src/frr/zebra/interface.c:1368,1
    - Dst: dplane_ctx_intf_is_protodown
      Src: /src/frr/zebra/interface.c:1369,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1372,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1373,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1373,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1380,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1387,1
    - Dst: COND_FLAG
      Src: /src/frr/zebra/interface.c:1393,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:1397,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:1398,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/interface.c:1414,1
    - Dst: dplane_ctx_get_netconf_mpls
      Src: /src/frr/zebra/interface.c:1415,1
    - Dst: dplane_ctx_get_netconf_linkdown
      Src: /src/frr/zebra/interface.c:1416,1
    - Dst: dplane_ctx_get_netconf_mcast
      Src: /src/frr/zebra/interface.c:1417,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1439,1
    - Dst: zebra_mpls_turned_on
      Src: /src/frr/zebra/interface.c:1458,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1474,1
    - Dst: dplane_ctx_get_ns_id
      Src: /src/frr/zebra/interface.c:1492,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/interface.c:1493,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1494,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/interface.c:1495,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1498,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1499,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:1500,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1502,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1506,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1511,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1516,1
    - Dst: zebra_if_addr_update_ctx
      Src: /src/frr/zebra/interface.c:1527,1
    - Dst: zebra_if_update_ctx
      Src: /src/frr/zebra/interface.c:1533,1
    - Dst: zebra_if_netconf_update_ctx
      Src: /src/frr/zebra/interface.c:1537,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:1603,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/interface.c:1604,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:1605,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1607,1
    - Dst: prefix_family_str
      Src: /src/frr/zebra/interface.c:1607,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/interface.c:1611,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:1613,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1616,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:1621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1623,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1624,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1625,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:1628,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1630,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1631,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1632,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1636,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1639,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1643,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/interface.c:1656,1
    - Dst: prefix2str
      Src: /src/frr/zebra/interface.c:1656,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1658,1
    - Dst: prefix_family_str
      Src: /src/frr/zebra/interface.c:1658,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1732,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1734,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1740,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1742,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1743,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1745,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1747,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:1749,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:1750,1
    - Dst: listcount
      Src: /src/frr/zebra/interface.c:1753,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1757,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1760,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1763,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1764,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1765,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1766,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1769,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1780,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1784,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1786,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1791,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1795,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1797,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1798,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1801,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1802,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1810,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1812,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:1815,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/interface.c:1821,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:1825,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1826,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1828,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1829,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1830,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:1832,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1833,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1835,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1836,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1839,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/interface.c:1843,1
    - Dst: prefix2str
      Src: /src/frr/zebra/interface.c:1845,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:1852,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1858,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1860,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1863,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1864,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1866,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1867,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1869,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1872,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1873,1
    - Dst: strnlen
      Src: /src/frr/zebra/interface.c:1875,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1881,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:1886,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/interface.c:1888,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1894,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1904,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:1905,1
    - Dst: zebra_vxlan_if_vni_hash_dump_vty
      Src: /src/frr/zebra/interface.c:1908,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1917,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:1920,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1929,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1934,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1935,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1937,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/interface.c:1941,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1942,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/interface.c:1944,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1948,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:1952,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1963,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1964,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1967,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:1968,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1969,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1971,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1973,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1976,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1979,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1981,1
    - Dst: zebra_ptm_show_status
      Src: /src/frr/zebra/interface.c:1984,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1986,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1989,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1991,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1994,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1996,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1997,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2001,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2004,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: if_flag_dump
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2008,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2011,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2013,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2016,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2018,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: if_link_type_str
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2025,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2027,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2029,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2034,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2035,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2042,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2044,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2048,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2050,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2053,1
    - Dst: zebra_ziftype_2str
      Src: /src/frr/zebra/interface.c:2054,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2055,1
    - Dst: zebra_zifslavetype_2str
      Src: /src/frr/zebra/interface.c:2056,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:2058,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2059,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/interface.c:2060,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:2061,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2065,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:2066,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:2067,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/interface.c:2068,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2073,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2075,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2077,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2083,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2084,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2086,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/interface.c:2092,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2098,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2101,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:2106,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2112,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2115,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2121,1
    - Dst: zebra_evpn_if_es_print
      Src: /src/frr/zebra/interface.c:2123,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2124,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:2125,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:2126,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2128,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:2129,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2134,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2136,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:2139,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2142,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2143,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2144,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2145,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2146,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2148,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2149,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2152,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2153,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2156,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2162,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2163,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2165,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2166,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2168,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2169,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2171,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2174,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2176,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2177,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2180,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2181,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2183,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2184,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2186,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2187,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2189,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2190,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2192,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2193,1
    - Dst: hook_call
      Src: /src/frr/zebra/interface.c:2197,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:2199,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2200,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2201,1
    - Dst: nbr_connected_dump_vty
      Src: /src/frr/zebra/interface.c:2202,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2211,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2217,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2220,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2224,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2230,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2236,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2246,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2252,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2255,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2263,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2265,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2267,1
    - Dst: zebra_vxlan_if_vni_dump_vty_json
      Src: /src/frr/zebra/interface.c:2280,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2293,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2299,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2300,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2302,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/interface.c:2305,1
    - Dst: zebra_vxlan_if_vni_dump_vty_json
      Src: /src/frr/zebra/interface.c:2306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/interface.c:2308,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2326,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2327,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:2329,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2330,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2332,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2333,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:2334,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2336,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2338,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2342,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2347,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2348,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2350,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2353,1
    - Dst: zebra_ptm_show_status
      Src: /src/frr/zebra/interface.c:2356,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2358,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2361,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2363,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2366,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2367,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2368,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2369,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2371,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2377,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2378,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2382,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2383,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2384,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2385,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2387,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2388,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2389,1
    - Dst: if_flag_dump
      Src: /src/frr/zebra/interface.c:2389,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2392,1
    - Dst: if_link_type_str
      Src: /src/frr/zebra/interface.c:2392,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:2398,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:2400,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2402,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2407,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:2411,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2412,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:2414,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:2414,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2418,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2420,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2424,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2426,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2429,1
    - Dst: zebra_ziftype_2str
      Src: /src/frr/zebra/interface.c:2430,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2431,1
    - Dst: zebra_zifslavetype_2str
      Src: /src/frr/zebra/interface.c:2433,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:2435,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2439,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:2441,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2445,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:2446,1
    - Dst: zebra_vxlan_if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2447,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/interface.c:2449,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2454,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2457,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2465,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2466,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2468,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/interface.c:2474,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2480,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2484,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:2489,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2495,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2499,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2504,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2506,1
    - Dst: zebra_evpn_if_es_print
      Src: /src/frr/zebra/interface.c:2508,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:2510,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2511,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:2513,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2515,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:2517,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2523,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2526,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:2530,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2534,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2535,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2538,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2539,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2541,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2542,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2544,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2545,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2548,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2551,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2552,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:2557,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2559,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2564,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2565,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2567,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2568,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2570,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2571,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2573,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2577,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2578,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2580,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2581,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2583,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2584,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2586,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2587,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2589,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2590,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2592,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2593,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2595,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:2598,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:2601,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2602,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2605,1
    - Dst: nbr_connected_dump_vty
      Src: /src/frr/zebra/interface.c:2607,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2613,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2614,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2615,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2617,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2618,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2620,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2622,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2624,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2626,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2628,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2630,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2631,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2632,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2634,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2635,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2637,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2639,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2641,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2643,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2645,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2649,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2650,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2651,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2652,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2654,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2655,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2656,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2657,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2659,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2660,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2664,1
    - Dst: ifstat_update_proc
      Src: /src/frr/zebra/interface.c:2669,1
    - Dst: ifstat_update_sysctl
      Src: /src/frr/zebra/interface.c:2672,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/interface.c:2692,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2695,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2697,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2702,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:2706,1
    - Dst: ifs_dump_brief_vty
      Src: /src/frr/zebra/interface.c:2708,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2712,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2714,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2719,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:2726,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2739,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2742,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:2745,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:2748,1
    - Dst: ifs_dump_brief_vty
      Src: /src/frr/zebra/interface.c:2750,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2754,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2756,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2762,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:2769,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2782,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/interface.c:2784,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2787,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2789,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/zebra/interface.c:2793,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2796,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2798,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2803,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2806,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2808,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2811,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:2817,1
    - Dst: interface_update_stats
      Src: /src/frr/zebra/interface.c:2832,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:2834,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/zebra/interface.c:2835,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/interface.c:2839,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2846,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2848,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2853,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2855,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2858,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2864,1
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2867,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2869,1
    - Dst: vty_json
      Src: /src/frr/zebra/interface.c:2872,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2881,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2889,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2890,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:2892,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2893,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2894,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:2896,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2897,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2904,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2909,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2913,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2920,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:2924,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/interface.c:2934,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2936,1
    - Dst: if_show_description
      Src: /src/frr/zebra/interface.c:2940,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:2946,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:2956,1
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/interface.c:2957,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2958,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/interface.c:2958,1
    - Dst: if_show_description
      Src: /src/frr/zebra/interface.c:2960,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2970,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:2971,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:2972,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:2976,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:2984,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:2989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2993,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:2994,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2996,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:2999,1
    - Dst: DEFPY
      Src: /src/frr/zebra/interface.c:3007,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3014,1
    - Dst: dplane_intf_mpls_modify_state
      Src: /src/frr/zebra/interface.c:3018,1
    - Dst: dplane_intf_mpls_modify_state
      Src: /src/frr/zebra/interface.c:3021,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:3032,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3033,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3034,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3038,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3046,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3052,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:3056,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3057,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3059,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3062,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/interface.c:3074,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:3076,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/interface.c:3079,1
    - Dst: if_down
      Src: /src/frr/zebra/interface.c:3080,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:3082,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3085,1
    - Dst: if_up
      Src: /src/frr/zebra/interface.c:3086,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3093,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3096,1
    - Dst: if_linkdetect
      Src: /src/frr/zebra/interface.c:3098,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3104,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3110,1
    - Dst: if_linkdetect
      Src: /src/frr/zebra/interface.c:3112,1
    - Dst: rtadv_stop_ra
      Src: /src/frr/zebra/interface.c:3123,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3124,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3125,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3128,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3136,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3141,1
    - Dst: rtadv_stop_ra
      Src: /src/frr/zebra/interface.c:3147,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3148,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3150,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3153,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:3166,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3167,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3170,1
    - Dst: if_addr_wakeup
      Src: /src/frr/zebra/interface.c:3176,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3185,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3191,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:3196,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3198,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3201,1
    - Dst: if_addr_wakeup
      Src: /src/frr/zebra/interface.c:3207,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3216,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3223,1
    - Dst: strtol
      Src: /src/frr/zebra/interface.c:3226,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3230,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3237,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/interface.c:3238,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3243,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3250,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3255,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/interface.c:3256,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3274,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3276,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3280,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3281,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3289,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3291,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3295,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3296,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3306,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3309,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3310,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/zebra/interface.c:3313,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/zebra/interface.c:3324,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3335,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3340,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3346,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3350,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3351,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3354,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3355,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3360,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3368,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3371,1
    - Dst: if_link_params_free
      Src: /src/frr/zebra/interface.c:3374,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:3376,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:3380,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:3381,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:3383,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3389,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3390,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3396,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3403,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3404,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3407,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3410,1
    - Dst: link_param_cmd_set_uint32
      Src: /src/frr/zebra/interface.c:3413,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3418,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3424,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3427,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3432,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3439,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3440,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3444,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3445,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3446,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3458,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3464,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3467,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3472,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3479,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3480,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3483,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3484,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3485,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3492,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3499,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3502,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3507,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3516,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3517,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3522,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3523,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3524,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3528,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3529,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3530,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3537,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3544,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3547,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:3553,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3563,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:3565,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:3569,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3570,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3575,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3576,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3577,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3582,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:3586,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:3588,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:3592,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:3595,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:3599,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:3603,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3607,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3618,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3619,1
    - Dst: inet_aton
      Src: /src/frr/zebra/interface.c:3623,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3624,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3629,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3631,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3634,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3639,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3643,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3644,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3649,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3655,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3656,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3664,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3667,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3668,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3675,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3687,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3689,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3690,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3693,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3694,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:3708,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3710,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3717,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3720,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3722,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:3726,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3729,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3738,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3745,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3748,1
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3749,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3753,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3756,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3762,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3763,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3768,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3774,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3775,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3782,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3785,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3788,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3789,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3794,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3801,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3802,1
    - Dst: strtoul
      Src: /src/frr/zebra/interface.c:3805,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3808,1
    - Dst: link_param_cmd_set_uint32
      Src: /src/frr/zebra/interface.c:3811,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3816,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3822,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3825,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3830,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3837,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3838,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3841,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3842,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3843,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3851,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3854,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3859,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3865,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3868,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3873,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3880,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3881,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3884,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3885,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3886,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3893,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3900,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3903,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3908,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3914,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3917,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3922,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3929,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3930,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3933,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3934,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3935,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3942,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3949,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:3952,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3957,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3963,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:3966,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:3971,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:3978,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/interface.c:3979,1
    - Dst: sscanf
      Src: /src/frr/zebra/interface.c:3982,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3983,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/interface.c:3984,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:3991,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/interface.c:3998,1
    - Dst: link_param_cmd_set_float
      Src: /src/frr/zebra/interface.c:4001,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4006,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4012,1
    - Dst: link_param_cmd_unset
      Src: /src/frr/zebra/interface.c:4015,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:4024,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:4027,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:4034,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4040,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:4043,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4047,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4048,1
    - Dst: ag_change
      Src: /src/frr/zebra/interface.c:4053,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:4063,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:4072,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:4074,1
    - Dst: DEFPY_YANG
      Src: /src/frr/zebra/interface.c:4077,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:4087,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:4089,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4096,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/interface.c:4096,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4103,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4106,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/interface.c:4107,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/interface.c:4113,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4116,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4118,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4124,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4127,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/zebra/interface.c:4128,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4129,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/zebra/interface.c:4146,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4148,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4150,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4154,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4159,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4160,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4167,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4170,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4174,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4179,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4182,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4183,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4184,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4187,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4189,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4191,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4195,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4218,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4220,1
    - Dst: ipv4_martian
      Src: /src/frr/zebra/interface.c:4224,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4225,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4231,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4236,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4238,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4243,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4245,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4249,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4254,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4255,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4262,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4269,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4270,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4274,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4277,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4278,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4279,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4282,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4284,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4285,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4289,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4306,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4308,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4315,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4319,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4322,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4325,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4326,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4327,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4328,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4333,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4335,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4336,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4339,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4354,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4356,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4362,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4367,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4369,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4375,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4377,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4382,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4385,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4389,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4390,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4391,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4396,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4398,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4399,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4402,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4408,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4416,1
    - Dst: ip_address_install
      Src: /src/frr/zebra/interface.c:4417,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4421,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4430,1
    - Dst: ip_address_uninstall
      Src: /src/frr/zebra/interface.c:4431,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4435,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4444,1
    - Dst: ip_address_install
      Src: /src/frr/zebra/interface.c:4445,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4448,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4458,1
    - Dst: ip_address_uninstall
      Src: /src/frr/zebra/interface.c:4459,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4463,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4474,1
    - Dst: ip_address_install
      Src: /src/frr/zebra/interface.c:4475,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4479,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4491,1
    - Dst: ip_address_uninstall
      Src: /src/frr/zebra/interface.c:4492,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/zebra/interface.c:4511,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4513,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4515,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/interface.c:4519,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4525,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4532,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4533,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4537,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4540,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4541,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4542,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4545,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4547,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4549,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4553,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/zebra/interface.c:4575,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4577,1
    - Dst: ipv6_martian
      Src: /src/frr/zebra/interface.c:4581,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4582,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4586,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4588,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/interface.c:4592,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4598,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4601,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4605,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4606,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4609,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4610,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4613,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4614,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4615,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4618,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4620,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4621,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4625,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:4640,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4641,1
    - Dst: ipv6_address_uninstall
      Src: /src/frr/zebra/interface.c:4648,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/zebra/interface.c:4658,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4660,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4665,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4667,1
    - Dst: CMD_WARNING_CONFIG_FAILED
      Src: /src/frr/zebra/interface.c:4668,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4672,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4678,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4679,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4680,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4681,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4686,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4688,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4689,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4693,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4699,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4707,1
    - Dst: ipv6_address_install
      Src: /src/frr/zebra/interface.c:4708,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4712,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4721,1
    - Dst: ipv6_address_uninstall
      Src: /src/frr/zebra/interface.c:4722,1
    - Dst: link_params_config_write
      Src: /src/frr/zebra/interface.c:4726,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:4732,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4737,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4738,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4739,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4740,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4741,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4742,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4743,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4745,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4746,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4749,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:4753,1
    - Dst: yang_dnode_get
      Src: /src/frr/zebra/interface.c:4757,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/zebra/interface.c:4759,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4761,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4762,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4763,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4764,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4765,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4767,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4769,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4770,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4771,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4772,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4773,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4774,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4775,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4776,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4777,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4778,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4779,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4780,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4783,1
    CyclomaticComplexity: 385
    EdgeCount: 385
    ICount: 1437
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4785
      start: 928
    functionDepth: 5
    functionLinenumber: 928
    functionLinenumberEnd: 4785
    functionName: if_nbr_ipv6ll_to_ipv4ll_neigh_add_all
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - nhg_connected_tree_is_empty
    - route_top
    - listhead
    - IS_ZEBRA_IF_MACVLAN
    - event_ignore_late_timer
    - interface_update_stats
    - vrf_lookup_by_name
    - if_unset_flags
    - UNSET_PARAM
    - zebra_evpn_if_es_print
    - ifs_dump_brief_vty_json
    - zebra_ziftype_2str
    - RB_EMPTY
    - strlcat
    - json_object_boolean_add
    - dplane_ctx_intf_has_label
    - if_link_type_str
    - flog_warn
    - snprintf
    - if_refresh
    - nhg_connected_tree_count
    - dplane_ctx_get_intf_pd_reason_val
    - ifstat_update_sysctl
    - dplane_ctx_get_netconf_linkdown
    - dplane_ctx_intf_is_protodown
    - json_array_string_add
    - zebra_if_update_ctx
    - IS_ZEBRA_IF_VETH
    - for
    - if
    - if_flag_dump
    - if_is_up
    - sscanf
    - COND_FLAG
    - if_is_no_ptm_operative
    - connected_new
    - ipv6_martian
    - listcount
    - if_get_flags
    - IS_ZEBRA_VXLAN_IF_VNI
    - if_link_params_get
    - yang_dnode_exists
    - json_object_new_object
    - nhg_connected_tree_add_nhe
    - dplane_ctx_get_status
    - connected_delete_ipv4
    - if_dump_vty_json
    - strtol
    - if_is_protodown_applicable
    - dplane_ctx_get_ifindex
    - nb_cli_show_dnode_cmds
    - ALL_LIST_ELEMENTS
    - zebra_if_addr_update_ctx
    - dplane_intf_mpls_modify_state
    - dplane_intf_update
    - if_down
    - prefix_ipv4_new
    - zebra_vxlan_if_vni_dump_vty
    - DEFPY
    - dplane_ctx_get_ns_id
    - dplane_ctx_get_op
    - ZEBRA_IF_IS_PROTODOWN
    - zebra_vxlan_if_vni_dump_vty_json
    - if_nbr_ipv6ll_to_ipv4ll_neigh_update
    - if_lookup_by_index_per_nsid
    - inet_ntop
    - zebra_if_update_link
    - yang_dnode_get_uint32
    - zebra_ptm_show_status
    - IS_PARAM_SET
    - if_down_nhg_dependents
    - apply_mask_ipv6
    - prefix_ipv6_new
    - zebra_ns_lookup
    - zebra_interface_up_update
    - zebra_vxlan_macvlan_down
    - dplane_ctx_get_intf_label
    - DEFUN
    - if_nbr_ipv6ll_to_ipv4ll_neigh_del_all
    - IS_ZEBRA_IF_VLAN
    - dplane_ctx_intf_is_connected
    - ip_address_uninstall
    - ipv6_address_install
    - prefix_family_str
    - yang_dnode_get
    - IS_ZEBRA_IF_BRIDGE
    - zebra_if_netconf_update_ctx
    - zebra_evpn_mh_uplink_oper_update
    - connected_check
    - event_add_timer
    - zebra_vxlan_if_vni_hash_dump_vty
    - nb_cli_apply_changes
    - connected_check_ptp
    - json_object_new_array
    - ipv4_martian
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - IS_PARAM_UNSET
    - if_lookup_by_name_vrf
    - if_nhg_dependents_del
    - rib_update
    - json_object_object_add
    - nbr_connected_free
    - nbr_connected_dump_vty
    - VRF_LOGNAME
    - if_addr_wakeup
    - if_is_operative
    - if_nhg_dependents_count
    - frr_timestamp
    - vty_json
    - if_up
    - RB_FOREACH
    - nhg_connected_tree_del_nhe
    - vrf_is_backend_netns
    - zebra_vxlan_if_down
    - apply_mask_ipv4
    - CMD_WARNING_CONFIG_FAILED
    - zebra_evpn_es_if_oper_state_change
    - if_install_connected
    - link_param_cmd_set_uint32
    - DEFUN_NOSH
    - ifs_dump_brief_vty
    - json_object_string_add
    - SET_PARAM
    - DEFPY_YANG
    - rtadv_if_up
    - ip_address_install
    - if_set_flags
    - connected_add_ipv6
    - VTY_DECLVAR_CONTEXT
    - dplane_intf_addr_set
    - if_link_params_enable
    - link_params_config_write
    - dplane_ctx_intf_is_secondary
    - dplane_ctx_get_netconf_mpls
    - FOR_ALL_INTERFACES
    - zlog_debug
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - if_nhg_dependents_is_empty
    - zebra_vxlan_svi_up
    - connected_add_ipv4
    - strnlen
    - zlog_info
    - zebra_evpn_acc_bd_svi_set
    - vty_out
    - if_link_params_free
    - nb_cli_enqueue_change
    - route_next
    - json_object_int_add
    - dplane_res2str
    - IS_ZEBRA_IF_GRE
    - dplane_ctx_get_intf_dest
    - strtoul
    - json_object_array_add
    - zebra_if_update_protodown_rc
    - if_nbr_ipv6ll_to_ipv4ll_neigh_add_all
    - SET_FLAG
    - ag_change
    - dplane_ctx_get_netconf_mcast
    - zebra_zifslavetype_2str
    - prefix2str
    - link_param_cmd_unset
    - if_ignore_set_protodown
    - zebra_vxlan_if_dump_vty
    - dplane_ctx_get_intf_metric
    - zebra_mpls_turned_on
    - if_lookup_by_index_per_ns
    - listnode_add
    - dplane_ctx_get_intf_addr
    - connected_free
    - zebra_vxlan_svi_down
    - if_nhg_dependents_add
    - zlog_warn
    - yang_dnode_get_string
    - link_param_cmd_set_float
    - json_object_string_addf
    - zebra_l2_map_slave_to_bond
    - HAS_LINK_PARAMS
    - IS_ZEBRA_IF_BOND_SLAVE
    - connected_delete_ipv6
    - rtadv_stop_ra
    - yang_dnode_iterate
    - zebra_vxlan_macvlan_up
    - hook_call
    - IS_ZEBRA_IF_BOND
    - ALL_LIST_ELEMENTS_RO
    - json_object_double_add
    - ipv6_address_uninstall
    - safe_strerror
    - if_dump_vty
    - hash_iterate
    - str2prefix_ipv6
    - zebra_if_update_all_links
    - dplane_op2str
    - zebra_vxlan_if_dump_vty_json
    - zebra_interface_down_update
    - ifstat_update_proc
    - UNSET_FLAG
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - listnode_delete
    - zebra_protodown_rc_str
    - CONNECTED_PEER
    - zebra_interface_parameters_update
    - if_linkdetect
    - XSTRDUP
    - zebra_vxlan_if_up
    - str2prefix_ipv4
    - if_down_del_nbr_connected
    - dplane_ctx_get_afi
    - inet_aton
    - if_uninstall_connected
    - CHECK_FLAG
    - if_is_running
    - dplane_intf_addr_unset
    - IS_ZEBRA_IF_VXLAN
    - yang_dnode_get_enum
    - if_show_description
    - connected_dump_vty
    linkageType: ''
    returnType: void
    signature: void if_nbr_ipv6ll_to_ipv4ll_neigh_add_all(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_ignore_set_protodown
      Src: /src/frr/zebra/interface.c:1243,1
    - Dst: zlog_info
      Src: /src/frr/zebra/interface.c:1246,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1254,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1256,1
    - Dst: dplane_intf_update
      Src: /src/frr/zebra/interface.c:1259,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/interface.c:1261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ifp
    - new_down
    - new_protodown_rc
    argTypes:
    - struct interface*
    - bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1264
    functionName: zebra_if_update_protodown_rc
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 3
    functionsReached:
    - zlog_info
    - if_ignore_set_protodown
    - dplane_intf_update
    - zlog_warn
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: "int zebra_if_update_protodown_rc(struct interface *ifp, bool new_down,\n\t\t\t\t
      uint32_t new_protodown_rc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_if_update_protodown_rc
      Src: /src/frr/zebra/interface.c:1279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ifp
    - new_down
    - new_reason
    argTypes:
    - struct interface*
    - bool
    - enum protodown_reasons
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1266
    functionDepth: 2
    functionLinenumber: 1266
    functionLinenumberEnd: 1280
    functionName: zebra_if_set_protodown
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - zebra_if_update_protodown_rc
    linkageType: ''
    returnType: int
    signature: "int zebra_if_set_protodown(struct interface *ifp, bool new_down,\n\t\t\t
      \  enum protodown_reasons new_reason)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1296,1
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/interface.c:1297,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1300,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1301,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1301,1
    - Dst: dplane_ctx_get_intf_dest
      Src: /src/frr/zebra/interface.c:1305,1
    - Dst: dplane_ctx_intf_is_connected
      Src: /src/frr/zebra/interface.c:1309,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1310,1
    - Dst: dplane_ctx_intf_is_secondary
      Src: /src/frr/zebra/interface.c:1313,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:1314,1
    - Dst: dplane_ctx_intf_has_label
      Src: /src/frr/zebra/interface.c:1317,1
    - Dst: dplane_ctx_get_intf_label
      Src: /src/frr/zebra/interface.c:1318,1
    - Dst: strcmp
      Src: /src/frr/zebra/interface.c:1320,1
    - Dst: dplane_ctx_get_intf_metric
      Src: /src/frr/zebra/interface.c:1323,1
    - Dst: connected_add_ipv4
      Src: /src/frr/zebra/interface.c:1328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1331,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/interface.c:1333,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/interface.c:1337,1
    - Dst: connected_add_ipv6
      Src: /src/frr/zebra/interface.c:1343,1
    - Dst: connected_delete_ipv6
      Src: /src/frr/zebra/interface.c:1347,1
    - Dst: rib_update
      Src: /src/frr/zebra/interface.c:1356,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - ifp
    argTypes:
    - struct zebra_dplane_ctx*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1287
    functionDepth: 1
    functionLinenumber: 1287
    functionLinenumberEnd: 1357
    functionName: zebra_if_addr_update_ctx
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - dplane_ctx_get_op
    - dplane_op2str
    - dplane_ctx_intf_has_label
    - dplane_ctx_get_intf_label
    - connected_add_ipv6
    - dplane_ctx_intf_is_connected
    - dplane_ctx_get_intf_metric
    - connected_delete_ipv6
    - CHECK_FLAG
    - strcmp
    - connected_add_ipv4
    - dplane_ctx_intf_is_secondary
    - connected_delete_ipv4
    - dplane_ctx_get_intf_addr
    - zlog_debug
    - SET_FLAG
    - rib_update
    - dplane_ctx_get_intf_dest
    linkageType: ''
    returnType: void
    signature: "void zebra_if_addr_update_ctx(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      \    struct interface *ifp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/interface.c:1367,1
    - Dst: dplane_ctx_get_intf_pd_reason_val
      Src: /src/frr/zebra/interface.c:1368,1
    - Dst: dplane_ctx_intf_is_protodown
      Src: /src/frr/zebra/interface.c:1369,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1372,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1373,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1373,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1380,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1387,1
    - Dst: COND_FLAG
      Src: /src/frr/zebra/interface.c:1393,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:1397,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:1398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - ifp
    argTypes:
    - struct zebra_dplane_ctx*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1399
    functionName: zebra_if_update_ctx
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - COND_FLAG
    - dplane_ctx_get_op
    - dplane_op2str
    - dplane_ctx_get_intf_pd_reason_val
    - dplane_ctx_get_status
    - zlog_debug
    - UNSET_FLAG
    - dplane_ctx_intf_is_protodown
    linkageType: ''
    returnType: void
    signature: "void zebra_if_update_ctx(struct zebra_dplane_ctx *ctx,\n\t\t\t\tstruct
      interface *ifp)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/interface.c:1414,1
    - Dst: dplane_ctx_get_netconf_mpls
      Src: /src/frr/zebra/interface.c:1415,1
    - Dst: dplane_ctx_get_netconf_linkdown
      Src: /src/frr/zebra/interface.c:1416,1
    - Dst: dplane_ctx_get_netconf_mcast
      Src: /src/frr/zebra/interface.c:1417,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1439,1
    - Dst: zebra_mpls_turned_on
      Src: /src/frr/zebra/interface.c:1458,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1474,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 3
    argNames:
    - ctx
    - ifp
    - ifindex
    argTypes:
    - struct zebra_dplane_ctx*
    - struct interface*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1405
    functionDepth: 3
    functionLinenumber: 1405
    functionLinenumberEnd: 1481
    functionName: zebra_if_netconf_update_ctx
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - dplane_ctx_get_afi
    - zebra_mpls_turned_on
    - dplane_ctx_get_netconf_linkdown
    - dplane_ctx_get_netconf_mpls
    - zlog_debug
    - dplane_ctx_get_netconf_mcast
    linkageType: ''
    returnType: void
    signature: "void zebra_if_netconf_update_ctx(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\tstruct
      interface *ifp,\n\t\t\t\t\tifindex_t ifindex)"
  - BBCount: 61
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_ns_id
      Src: /src/frr/zebra/interface.c:1492,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/interface.c:1493,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/interface.c:1494,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/interface.c:1495,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1498,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/interface.c:1499,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:1500,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1502,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1506,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1511,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:1516,1
    - Dst: zebra_if_addr_update_ctx
      Src: /src/frr/zebra/interface.c:1527,1
    - Dst: zebra_if_update_ctx
      Src: /src/frr/zebra/interface.c:1533,1
    - Dst: zebra_if_netconf_update_ctx
      Src: /src/frr/zebra/interface.c:1537,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 84
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1483
    functionDepth: 4
    functionLinenumber: 1483
    functionLinenumberEnd: 1590
    functionName: zebra_if_dplane_result
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - dplane_op2str
    - zebra_ns_lookup
    - if_lookup_by_index_per_ns
    - dplane_ctx_get_status
    - zebra_if_netconf_update_ctx
    - zlog_debug
    - dplane_res2str
    - dplane_ctx_get_ifindex
    - zebra_if_update_ctx
    - zebra_if_addr_update_ctx
    - dplane_ctx_get_ns_id
    linkageType: ''
    returnType: void
    signature: void zebra_if_dplane_result(struct zebra_dplane_ctx *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:1603,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/interface.c:1604,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:1605,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1607,1
    - Dst: prefix_family_str
      Src: /src/frr/zebra/interface.c:1607,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/interface.c:1611,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:1613,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1616,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:1621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1623,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1624,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1625,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:1628,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1630,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1631,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1632,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1636,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1639,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1643,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - vty
    - json
    - connected
    argTypes:
    - struct vty*
    - json_object*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1593
    functionDepth: 1
    functionLinenumber: 1593
    functionLinenumberEnd: 1644
    functionName: connected_dump_vty
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - vty_out
    - json_object_array_add
    - prefix_family_str
    - CHECK_FLAG
    - json_object_string_add
    - json_object_string_addf
    - CONNECTED_PEER
    linkageType: ''
    returnType: void
    signature: "void connected_dump_vty(struct vty *vty, json_object *json,\n\t\t\t
      \      struct connected *connected)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_array_string_add
      Src: /src/frr/zebra/interface.c:1656,1
    - Dst: prefix2str
      Src: /src/frr/zebra/interface.c:1656,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1658,1
    - Dst: prefix_family_str
      Src: /src/frr/zebra/interface.c:1658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - json
    - connected
    argTypes:
    - struct vty*
    - json_object*
    - struct nbr_connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1659
      start: 1647
    functionDepth: 1
    functionLinenumber: 1647
    functionLinenumberEnd: 1659
    functionName: nbr_connected_dump_vty
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - prefix2str
    - prefix_family_str
    - vty_out
    - json_array_string_add
    linkageType: ''
    returnType: void
    signature: "void nbr_connected_dump_vty(struct vty *vty, json_object *json,\n\t\t\t\t
      \  struct nbr_connected *connected)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - zif_slave_type
    argTypes:
    - enum zebra_slave_iftype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1661
    functionDepth: 0
    functionLinenumber: 1661
    functionLinenumberEnd: 1677
    functionName: zebra_zifslavetype_2str
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      zebra_zifslavetype_2str(enum zebra_slave_iftype zif_slave_type)'
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - zif_type
    argTypes:
    - enum zebra_iftype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1679
    functionDepth: 0
    functionLinenumber: 1679
    functionLinenumberEnd: 1715
    functionName: zebra_ziftype_2str
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zebra_ziftype_2str(enum zebra_iftype zif_type)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1732,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1734,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1740,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1742,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1743,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1745,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1747,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:1749,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:1750,1
    - Dst: listcount
      Src: /src/frr/zebra/interface.c:1753,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1757,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1760,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1763,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1764,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1765,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1766,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1769,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1780,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1784,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1786,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1791,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1795,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1797,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1798,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1801,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1802,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1810,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1812,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:1815,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/interface.c:1821,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:1825,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1826,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1828,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1829,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1830,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:1832,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1833,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1835,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1836,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1839,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/interface.c:1843,1
    - Dst: prefix2str
      Src: /src/frr/zebra/interface.c:1845,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:1852,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1858,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1860,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1863,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1864,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1866,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1867,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1869,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1872,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1873,1
    - Dst: strnlen
      Src: /src/frr/zebra/interface.c:1875,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1881,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:1886,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/interface.c:1888,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1894,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1904,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:1905,1
    - Dst: zebra_vxlan_if_vni_hash_dump_vty
      Src: /src/frr/zebra/interface.c:1908,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1917,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:1920,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1929,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1934,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1935,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1937,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/interface.c:1941,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1942,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/interface.c:1944,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1948,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:1952,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1963,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1964,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1967,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:1968,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1969,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1971,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1973,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1976,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1979,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1981,1
    - Dst: zebra_ptm_show_status
      Src: /src/frr/zebra/interface.c:1984,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1986,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1989,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1991,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1994,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1996,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1997,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2001,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2004,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: if_flag_dump
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2008,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2011,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2013,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2016,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2018,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: if_link_type_str
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2025,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2027,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2029,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2034,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2035,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2042,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2044,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2048,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2050,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2053,1
    - Dst: zebra_ziftype_2str
      Src: /src/frr/zebra/interface.c:2054,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2055,1
    - Dst: zebra_zifslavetype_2str
      Src: /src/frr/zebra/interface.c:2056,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:2058,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2059,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/interface.c:2060,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:2061,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2065,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:2066,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:2067,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/interface.c:2068,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2073,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2075,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2077,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2083,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2084,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2086,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/interface.c:2092,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2098,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2101,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:2106,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2112,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2115,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2121,1
    - Dst: zebra_evpn_if_es_print
      Src: /src/frr/zebra/interface.c:2123,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2124,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:2125,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:2126,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2128,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:2129,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2134,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2136,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:2139,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2142,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2143,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2144,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2145,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2146,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2148,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2149,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2152,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2153,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2156,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2162,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2163,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2165,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2166,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2168,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2169,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2171,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2174,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2176,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2177,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2180,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2181,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2183,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2184,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2186,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2187,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2189,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2190,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2192,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2193,1
    - Dst: hook_call
      Src: /src/frr/zebra/interface.c:2197,1
    - Dst: listhead
      Src: /src/frr/zebra/interface.c:2199,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2200,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2201,1
    - Dst: nbr_connected_dump_vty
      Src: /src/frr/zebra/interface.c:2202,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2211,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2217,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2220,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2224,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2230,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2236,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2246,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2252,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2255,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 62
    argCount: 2
    argNames:
    - vty
    - vrf
    argTypes:
    - struct vty*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2258
      start: 1718
    functionDepth: 2
    functionLinenumber: 1718
    functionLinenumberEnd: 2258
    functionName: ifs_dump_brief_vty
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - prefix2str
    - zebra_vxlan_if_dump_vty
    - route_top
    - if_lookup_by_index_per_ns
    - listhead
    - json_object_string_add
    - zebra_evpn_if_es_print
    - zebra_vxlan_if_vni_dump_vty
    - ifs_dump_brief_vty_json
    - zebra_ziftype_2str
    - HAS_LINK_PARAMS
    - strlcat
    - IS_ZEBRA_IF_BOND_SLAVE
    - ZEBRA_IF_IS_PROTODOWN
    - if_link_type_str
    - hook_call
    - IS_ZEBRA_IF_BOND
    - ALL_LIST_ELEMENTS_RO
    - FOR_ALL_INTERFACES
    - inet_ntop
    - if_dump_vty
    - json_array_string_add
    - if
    - hash_iterate
    - zebra_ptm_show_status
    - if_flag_dump
    - zebra_zifslavetype_2str
    - if_is_up
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - strnlen
    - zebra_ns_lookup
    - IS_PARAM_SET
    - vty_out
    - IS_ZEBRA_IF_VLAN
    - listcount
    - IS_ZEBRA_IF_BRIDGE
    - route_next
    - IS_ZEBRA_VXLAN_IF_VNI
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - zebra_protodown_rc_str
    - IS_ZEBRA_IF_GRE
    - zebra_vxlan_if_vni_hash_dump_vty
    - json_object_new_object
    - json_object_new_array
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - if_is_running
    - if_is_protodown_applicable
    - json_object_object_add
    - IS_ZEBRA_IF_VXLAN
    - nbr_connected_dump_vty
    - connected_dump_vty
    linkageType: ''
    returnType: void
    signature: void ifs_dump_brief_vty(struct vty *vty, struct vrf *vrf)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1732,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1734,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1740,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1742,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1743,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1745,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1747,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:1749,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:1750,1
    - Dst: listcount
      Src: /src/frr/zebra/interface.c:1753,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1757,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1760,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1763,1
    - Dst: if
      Src: /src/frr/zebra/interface.c:1764,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1765,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1766,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1769,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1780,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1784,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1786,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1791,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1795,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1797,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1798,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1801,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1802,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1810,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1812,1
    - Dst: ifs_dump_brief_vty_json
      Src: /src/frr/zebra/interface.c:1815,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/interface.c:1821,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:1825,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1826,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1828,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1829,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:1830,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:1832,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:1833,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:1834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1835,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1836,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/interface.c:1839,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/interface.c:1843,1
    - Dst: prefix2str
      Src: /src/frr/zebra/interface.c:1845,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:1852,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1858,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1860,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1863,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1864,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1866,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1867,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1869,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1872,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1873,1
    - Dst: strnlen
      Src: /src/frr/zebra/interface.c:1875,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:1881,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:1886,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/interface.c:1888,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1894,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1904,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:1905,1
    - Dst: zebra_vxlan_if_vni_hash_dump_vty
      Src: /src/frr/zebra/interface.c:1908,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1917,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:1920,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1929,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:1934,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:1935,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1937,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/interface.c:1941,1
    - Dst: zebra_vxlan_if_vni_dump_vty
      Src: /src/frr/zebra/interface.c:1942,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/interface.c:1944,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1948,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:1952,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1963,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:1964,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1967,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:1968,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1969,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1971,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1973,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1976,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1979,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1981,1
    - Dst: zebra_ptm_show_status
      Src: /src/frr/zebra/interface.c:1984,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1986,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1989,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1991,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1994,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:1996,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:1997,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2001,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2004,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: if_flag_dump
      Src: /src/frr/zebra/interface.c:2005,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2008,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2011,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2013,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2016,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2018,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: if_link_type_str
      Src: /src/frr/zebra/interface.c:2021,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2025,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2027,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2029,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2034,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2035,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:2038,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2042,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2044,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2048,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2050,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2053,1
    - Dst: zebra_ziftype_2str
      Src: /src/frr/zebra/interface.c:2054,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2055,1
    - Dst: zebra_zifslavetype_2str
      Src: /src/frr/zebra/interface.c:2056,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:2058,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2059,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/interface.c:2060,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:2061,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2065,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:2066,1
    - Dst: zebra_vxlan_if_dump_vty
      Src: /src/frr/zebra/interface.c:2067,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/interface.c:2068,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2073,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2075,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2077,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2083,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2084,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2086,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/interface.c:2092,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2098,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2101,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:2106,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2112,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2115,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2121,1
    - Dst: zebra_evpn_if_es_print
      Src: /src/frr/zebra/interface.c:2123,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2124,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:2125,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:2126,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2128,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:2129,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2134,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2136,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:2139,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2142,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2143,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2144,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2145,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2146,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2148,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2149,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2152,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2153,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2156,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2162,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2163,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2165,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2166,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2168,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2169,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2171,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2174,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2176,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2177,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2180,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2181,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2183,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2184,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2186,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2187,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2189,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2190,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2192,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2193,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 1728
    functionDepth: 2
    functionLinenumber: 1728
    functionLinenumberEnd: 2195
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 20
    functionsReached:
    - prefix2str
    - zebra_vxlan_if_dump_vty
    - route_top
    - if_lookup_by_index_per_ns
    - json_object_string_add
    - zebra_evpn_if_es_print
    - zebra_vxlan_if_vni_dump_vty
    - ifs_dump_brief_vty_json
    - zebra_ziftype_2str
    - HAS_LINK_PARAMS
    - strlcat
    - IS_ZEBRA_IF_BOND_SLAVE
    - ZEBRA_IF_IS_PROTODOWN
    - if_link_type_str
    - IS_ZEBRA_IF_BOND
    - ALL_LIST_ELEMENTS_RO
    - FOR_ALL_INTERFACES
    - inet_ntop
    - if_dump_vty
    - json_array_string_add
    - if
    - hash_iterate
    - zebra_ptm_show_status
    - if_flag_dump
    - zebra_zifslavetype_2str
    - if_is_up
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - strnlen
    - zebra_ns_lookup
    - IS_PARAM_SET
    - vty_out
    - IS_ZEBRA_IF_VLAN
    - listcount
    - IS_ZEBRA_IF_BRIDGE
    - route_next
    - IS_ZEBRA_VXLAN_IF_VNI
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - zebra_protodown_rc_str
    - IS_ZEBRA_IF_GRE
    - zebra_vxlan_if_vni_hash_dump_vty
    - json_object_new_object
    - json_object_new_array
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - if_is_running
    - if_is_protodown_applicable
    - json_object_object_add
    - IS_ZEBRA_IF_VXLAN
    - connected_dump_vty
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2263,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2265,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - json_if
    - vni
    argTypes:
    - json_object*
    - struct zebra_vxlan_vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2269
      start: 2260
    functionDepth: 1
    functionLinenumber: 2260
    functionLinenumberEnd: 2269
    functionName: zebra_vxlan_if_vni_dump_vty_json
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - json_object_string_addf
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_if_vni_dump_vty_json(json_object *json_if,\n\t\t\t\t\t
      \    struct zebra_vxlan_vni *vni)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_dump_vty_json
      Src: /src/frr/zebra/interface.c:2280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2271
    functionDepth: 2
    functionLinenumber: 2271
    functionLinenumberEnd: 2281
    functionName: zebra_vxlan_if_vni_hash_dump_vty_json
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_dump_vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_if_vni_hash_dump_vty_json(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      \ void *ctxt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2293,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2299,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2300,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2302,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/interface.c:2305,1
    - Dst: zebra_vxlan_if_vni_dump_vty_json
      Src: /src/frr/zebra/interface.c:2306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/interface.c:2308,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - json_if
    - zebra_if
    argTypes:
    - json_object*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2311
      start: 2283
    functionDepth: 2
    functionLinenumber: 2283
    functionLinenumberEnd: 2311
    functionName: zebra_vxlan_if_dump_vty_json
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - zebra_vxlan_if_vni_dump_vty_json
    - if_lookup_by_index_per_ns
    - IS_ZEBRA_VXLAN_IF_VNI
    - json_object_string_add
    - json_object_string_addf
    - hash_iterate
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_if_dump_vty_json(json_object *json_if,\n\t\t\t\t\t
      struct zebra_if *zebra_if)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2326,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2327,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:2329,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2330,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2332,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2333,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:2334,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2336,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2338,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2342,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2347,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2348,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2350,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2353,1
    - Dst: zebra_ptm_show_status
      Src: /src/frr/zebra/interface.c:2356,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2358,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2361,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2363,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2366,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2367,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2368,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2369,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2371,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2377,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2378,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2382,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2383,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2384,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2385,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2387,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2388,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2389,1
    - Dst: if_flag_dump
      Src: /src/frr/zebra/interface.c:2389,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2392,1
    - Dst: if_link_type_str
      Src: /src/frr/zebra/interface.c:2392,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:2398,1
    - Dst: strlcat
      Src: /src/frr/zebra/interface.c:2400,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2402,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2407,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/interface.c:2411,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2412,1
    - Dst: route_top
      Src: /src/frr/zebra/interface.c:2414,1
    - Dst: route_next
      Src: /src/frr/zebra/interface.c:2414,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2418,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2420,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:2423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2424,1
    - Dst: connected_dump_vty
      Src: /src/frr/zebra/interface.c:2426,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2429,1
    - Dst: zebra_ziftype_2str
      Src: /src/frr/zebra/interface.c:2430,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2431,1
    - Dst: zebra_zifslavetype_2str
      Src: /src/frr/zebra/interface.c:2433,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/interface.c:2435,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2439,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/interface.c:2441,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2445,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/interface.c:2446,1
    - Dst: zebra_vxlan_if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2447,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/interface.c:2449,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2454,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2457,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/interface.c:2465,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/interface.c:2466,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2468,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/interface.c:2474,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2480,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2484,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/interface.c:2489,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2495,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2499,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/interface.c:2504,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2506,1
    - Dst: zebra_evpn_if_es_print
      Src: /src/frr/zebra/interface.c:2508,1
    - Dst: if_is_protodown_applicable
      Src: /src/frr/zebra/interface.c:2510,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2511,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/interface.c:2513,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2515,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/interface.c:2517,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/interface.c:2523,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2526,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:2530,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2534,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2535,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2538,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2539,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2541,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2542,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2544,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2545,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2548,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/interface.c:2551,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/interface.c:2552,1
    - Dst: snprintf
      Src: /src/frr/zebra/interface.c:2557,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2559,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2564,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2565,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2567,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2568,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2570,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2571,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2573,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2577,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2578,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2580,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2581,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2583,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2584,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2586,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2587,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2589,1
    - Dst: json_object_double_add
      Src: /src/frr/zebra/interface.c:2590,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:2592,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/interface.c:2593,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/interface.c:2595,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 91
    argCount: 3
    argNames:
    - vty
    - ifp
    - json
    argTypes:
    - struct vty*
    - struct interface*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2596
      start: 2313
    functionDepth: 3
    functionLinenumber: 2313
    functionLinenumberEnd: 2596
    functionName: if_dump_vty_json
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 3
    functionsReached:
    - route_top
    - if_lookup_by_index_per_ns
    - json_object_string_add
    - zebra_evpn_if_es_print
    - json_object_string_addf
    - zebra_ziftype_2str
    - HAS_LINK_PARAMS
    - strlcat
    - json_object_boolean_add
    - IS_ZEBRA_IF_BOND_SLAVE
    - if_link_type_str
    - ZEBRA_IF_IS_PROTODOWN
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - json_object_double_add
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - zebra_ptm_show_status
    - if_flag_dump
    - zebra_zifslavetype_2str
    - IS_PARAM_SET
    - if_is_up
    - zebra_ns_lookup
    - zebra_vxlan_if_dump_vty_json
    - IS_ZEBRA_IF_VLAN
    - IS_ZEBRA_IF_BRIDGE
    - json_object_int_add
    - route_next
    - zebra_protodown_rc_str
    - IS_ZEBRA_IF_GRE
    - json_object_new_object
    - json_object_new_array
    - CHECK_FLAG
    - if_is_running
    - if_is_protodown_applicable
    - json_object_object_add
    - IS_ZEBRA_IF_VXLAN
    - connected_dump_vty
    linkageType: ''
    returnType: void
    signature: "void if_dump_vty_json(struct vty *vty, struct interface *ifp,\n\t\t\t
      \    json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2712,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2714,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2715
      start: 2710
    functionDepth: 4
    functionLinenumber: 2710
    functionLinenumberEnd: 2715
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 20
    functionsReached:
    - if_dump_vty
    - if_dump_vty_json
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_dump_vty_json
      Src: /src/frr/zebra/interface.c:2754,1
    - Dst: if_dump_vty
      Src: /src/frr/zebra/interface.c:2756,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2752
    functionDepth: 4
    functionLinenumber: 2752
    functionLinenumberEnd: 2757
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 20
    functionsReached:
    - if_dump_vty
    - if_dump_vty_json
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2881,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2889,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2890,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:2892,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2893,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2894,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:2896,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2897,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2904,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2909,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2913,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2920,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - vty
    - vrf
    argTypes:
    - struct vty*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2922
      start: 2877
    functionDepth: 1
    functionLinenumber: 2877
    functionLinenumberEnd: 2922
    functionName: if_show_description
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - if_is_up
    - if_is_running
    - vty_out
    linkageType: ''
    returnType: void
    signature: void if_show_description(struct vty *vty, struct vrf *vrf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2889,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2890,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:2892,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2893,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2894,1
    - Dst: if_is_running
      Src: /src/frr/zebra/interface.c:2896,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2897,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2899,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2901,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2904,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2909,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2913,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:2920,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2921
      start: 2882
    functionDepth: 1
    functionLinenumber: 2882
    functionLinenumberEnd: 2921
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 20
    functionsReached:
    - CHECK_FLAG
    - if_is_up
    - if_is_running
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:2970,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:2971,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:2972,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:2976,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2982
      start: 2966
    functionDepth: 3
    functionLinenumber: 2966
    functionLinenumberEnd: 2982
    functionName: if_multicast_set
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - if_set_flags
    - zlog_debug
    - if_refresh
    linkageType: ''
    returnType: int
    signature: int if_multicast_set(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:3032,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3033,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3034,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3038,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3044
      start: 3028
    functionDepth: 3
    functionLinenumber: 3028
    functionLinenumberEnd: 3044
    functionName: if_multicast_unset
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - if_unset_flags
    - if_refresh
    linkageType: ''
    returnType: int
    signature: int if_multicast_unset(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/interface.c:3074,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:3076,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/interface.c:3079,1
    - Dst: if_down
      Src: /src/frr/zebra/interface.c:3080,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:3082,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3085,1
    - Dst: if_up
      Src: /src/frr/zebra/interface.c:3086,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ifp
    - detect
    argTypes:
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3091
      start: 3070
    functionDepth: 1
    functionLinenumber: 3070
    functionLinenumberEnd: 3091
    functionName: if_linkdetect
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - if_is_no_ptm_operative
    - SET_FLAG
    - if_down
    - UNSET_FLAG
    - if_is_operative
    - if_up
    linkageType: ''
    returnType: int
    signature: int if_linkdetect(struct interface *ifp, bool detect)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rtadv_stop_ra
      Src: /src/frr/zebra/interface.c:3123,1
    - Dst: if_unset_flags
      Src: /src/frr/zebra/interface.c:3124,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3125,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3134
      start: 3117
    functionDepth: 3
    functionLinenumber: 3117
    functionLinenumberEnd: 3134
    functionName: if_shutdown
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - rtadv_stop_ra
    - zlog_debug
    - if_unset_flags
    - if_refresh
    linkageType: ''
    returnType: int
    signature: int if_shutdown(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:3166,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:3167,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:3170,1
    - Dst: if_addr_wakeup
      Src: /src/frr/zebra/interface.c:3176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3183
      start: 3161
    functionDepth: 4
    functionLinenumber: 3161
    functionLinenumberEnd: 3183
    functionName: if_no_shutdown
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - if_set_flags
    - if_addr_wakeup
    - if_refresh
    linkageType: ''
    returnType: int
    signature: int if_no_shutdown(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3274,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3276,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3280,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - ifp
    - field
    - type
    - value
    argTypes:
    - struct interface*
    - uint32_t*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3283
      start: 3270
    functionDepth: 2
    functionLinenumber: 3270
    functionLinenumberEnd: 3283
    functionName: link_param_cmd_set_uint32
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - zebra_interface_parameters_update
    - SET_PARAM
    - IS_PARAM_UNSET
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void link_param_cmd_set_uint32(struct interface *ifp, uint32_t *field,\n\t\t\t\t
      \     uint32_t type, uint32_t value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_PARAM_UNSET
      Src: /src/frr/zebra/interface.c:3289,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/interface.c:3291,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3295,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3296,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - ifp
    - field
    - type
    - value
    argTypes:
    - struct interface*
    - float*
    - uint32_t
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3298
      start: 3284
    functionDepth: 2
    functionLinenumber: 3284
    functionLinenumberEnd: 3298
    functionName: link_param_cmd_set_float
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - zebra_interface_parameters_update
    - SET_PARAM
    - IS_PARAM_UNSET
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void link_param_cmd_set_float(struct interface *ifp, float *field,\n\t\t\t\t
      \    uint32_t type, float value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/interface.c:3306,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/interface.c:3309,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/interface.c:3310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ifp
    - type
    argTypes:
    - struct interface*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3311
      start: 3300
    functionDepth: 2
    functionLinenumber: 3300
    functionLinenumberEnd: 3311
    functionName: link_param_cmd_unset
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - zebra_interface_parameters_update
    - if_is_operative
    - UNSET_PARAM
    linkageType: ''
    returnType: void
    signature: void link_param_cmd_unset(struct interface *ifp, uint32_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/zebra/interface.c:4024,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/zebra/interface.c:4027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - vty
    - argc
    - argv
    - xpath
    - 'no'
    - start_idx
    argTypes:
    - struct vty*
    - int
    - struct cmd_token**
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4028
      start: 4020
    functionDepth: 1
    functionLinenumber: 4020
    functionLinenumberEnd: 4028
    functionName: ag_change
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: "int ag_change(struct vty *vty, int argc, struct cmd_token **argv,\n\t\t
      \    const char *xpath, bool no, int start_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4096,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/interface.c:4096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4098
      start: 4092
    functionDepth: 1
    functionLinenumber: 4092
    functionLinenumberEnd: 4098
    functionName: ag_iter_cb
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: int
    signature: int ag_iter_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4103,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4106,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/interface.c:4107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4108
      start: 4100
    functionDepth: 1
    functionLinenumber: 4100
    functionLinenumberEnd: 4108
    functionName: cli_show_legacy_admin_group
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_dnode_exists
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: void
    signature: "void cli_show_legacy_admin_group(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/interface.c:4113,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4116,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4119
      start: 4110
    functionDepth: 1
    functionLinenumber: 4110
    functionLinenumberEnd: 4119
    functionName: cli_show_affinity_mode
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_affinity_mode(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/interface.c:4124,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4127,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/zebra/interface.c:4128,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4130
      start: 4121
    functionDepth: 1
    functionLinenumber: 4121
    functionLinenumberEnd: 4130
    functionName: cli_show_affinity
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - yang_dnode_iterate
    - vty_out
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void cli_show_affinity(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \      bool show_defaults)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv4
      Src: /src/frr/zebra/interface.c:4146,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4148,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4150,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4154,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4159,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4160,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4167,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4170,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4174,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4179,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4182,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4183,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4184,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4187,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4189,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4191,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4195,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - ifp
    - prefix
    - label
    - pp
    argTypes:
    - struct interface*
    - struct prefix*
    - char*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4203
      start: 4132
    functionDepth: 3
    functionLinenumber: 4132
    functionLinenumberEnd: 4203
    functionName: if_ip_address_install
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - connected_new
    - if_set_flags
    - dplane_intf_addr_set
    - if_refresh
    - CHECK_FLAG
    - listnode_add
    - SET_FLAG
    - if_is_up
    - zlog_debug
    - prefix_ipv4_new
    - dplane_res2str
    - connected_check_ptp
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int if_ip_address_install(struct interface *ifp, struct prefix *prefix,\n\t\t\t
      \ const char *label, struct prefix *pp)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4218,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4220,1
    - Dst: ipv4_martian
      Src: /src/frr/zebra/interface.c:4224,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4225,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4231,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4236,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4238,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4243,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4245,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4249,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4254,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/interface.c:4255,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4262,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4269,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4270,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4274,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4277,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4278,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4279,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4282,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4284,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4285,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4289,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 5
    argNames:
    - vty
    - ifp
    - addr_str
    - peer_str
    - label
    argTypes:
    - struct vty*
    - struct interface*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4297
      start: 4205
    functionDepth: 3
    functionLinenumber: 4205
    functionLinenumberEnd: 4297
    functionName: ip_address_install
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - str2prefix_ipv4
    - connected_new
    - if_set_flags
    - vty_out
    - dplane_intf_addr_set
    - ipv4_martian
    - if_refresh
    - CHECK_FLAG
    - listnode_add
    - SET_FLAG
    - if_is_up
    - dplane_res2str
    - prefix_ipv4_new
    - connected_check_ptp
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int ip_address_install(struct vty *vty, struct interface *ifp,\n\t\t\t
      \     const char *addr_str, const char *peer_str,\n\t\t\t      const char *label)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4306,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4308,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4315,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4319,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4322,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4325,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4326,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4327,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4328,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4333,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4335,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4336,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4339,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - ifp
    - prefix
    argTypes:
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4342
      start: 4299
    functionDepth: 1
    functionLinenumber: 4299
    functionLinenumberEnd: 4342
    functionName: if_ip_address_uinstall
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - connected_free
    - zlog_debug
    - UNSET_FLAG
    - dplane_intf_addr_unset
    - dplane_res2str
    - connected_check
    - listnode_delete
    - connected_check_ptp
    linkageType: ''
    returnType: int
    signature: int if_ip_address_uinstall(struct interface *ifp, struct prefix *prefix)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4354,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4356,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4362,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/zebra/interface.c:4367,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4369,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/interface.c:4375,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4377,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4382,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4385,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4389,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4390,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4391,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4396,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4398,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4399,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4402,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 5
    argNames:
    - vty
    - ifp
    - addr_str
    - peer_str
    - label
    argTypes:
    - struct vty*
    - struct interface*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4406
      start: 4344
    functionDepth: 1
    functionLinenumber: 4344
    functionLinenumberEnd: 4406
    functionName: ip_address_uninstall
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - str2prefix_ipv4
    - vty_out
    - CHECK_FLAG
    - connected_free
    - UNSET_FLAG
    - dplane_intf_addr_unset
    - dplane_res2str
    - listnode_delete
    - connected_check_ptp
    linkageType: ''
    returnType: int
    signature: "int ip_address_uninstall(struct vty *vty, struct interface *ifp,\n\t\t\t\tconst
      char *addr_str, const char *peer_str,\n\t\t\t\tconst char *label)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv6
      Src: /src/frr/zebra/interface.c:4511,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4513,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4515,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/interface.c:4519,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4525,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4532,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4533,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4537,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4540,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4541,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4542,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4545,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/interface.c:4547,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4549,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4553,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - ifp
    - prefix
    - label
    argTypes:
    - struct interface*
    - struct prefix*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4560
      start: 4497
    functionDepth: 3
    functionLinenumber: 4497
    functionLinenumberEnd: 4560
    functionName: if_ipv6_address_install
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - connected_new
    - if_set_flags
    - dplane_intf_addr_set
    - if_refresh
    - CHECK_FLAG
    - listnode_add
    - SET_FLAG
    - zlog_debug
    - dplane_res2str
    - connected_check
    - apply_mask_ipv6
    - prefix_ipv6_new
    - if_is_up
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int if_ipv6_address_install(struct interface *ifp, struct prefix *prefix,\n\t\t\t
      \   const char *label)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv6
      Src: /src/frr/zebra/interface.c:4575,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4577,1
    - Dst: ipv6_martian
      Src: /src/frr/zebra/interface.c:4581,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4582,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4586,1
    - Dst: connected_new
      Src: /src/frr/zebra/interface.c:4588,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/interface.c:4592,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/interface.c:4598,1
    - Dst: listnode_add
      Src: /src/frr/zebra/interface.c:4601,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4605,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4606,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4609,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4610,1
    - Dst: if_is_up
      Src: /src/frr/zebra/interface.c:4613,1
    - Dst: if_set_flags
      Src: /src/frr/zebra/interface.c:4614,1
    - Dst: if_refresh
      Src: /src/frr/zebra/interface.c:4615,1
    - Dst: dplane_intf_addr_set
      Src: /src/frr/zebra/interface.c:4618,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4620,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4621,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/interface.c:4625,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 5
    argNames:
    - vty
    - ifp
    - addr_str
    - peer_str
    - label
    argTypes:
    - struct vty*
    - struct interface*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4632
      start: 4562
    functionDepth: 3
    functionLinenumber: 4562
    functionLinenumberEnd: 4632
    functionName: ipv6_address_install
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - connected_new
    - if_set_flags
    - ipv6_martian
    - vty_out
    - if_refresh
    - dplane_intf_addr_set
    - CHECK_FLAG
    - listnode_add
    - SET_FLAG
    - dplane_res2str
    - connected_check
    - str2prefix_ipv6
    - prefix_ipv6_new
    - if_is_up
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int ipv6_address_install(struct vty *vty, struct interface *ifp,\n\t\t\t\tconst
      char *addr_str, const char *peer_str,\n\t\t\t\tconst char *label)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:4640,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4641,1
    - Dst: ipv6_address_uninstall
      Src: /src/frr/zebra/interface.c:4648,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/zebra/interface.c:4658,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4660,1
    - Dst: connected_check
      Src: /src/frr/zebra/interface.c:4665,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4667,1
    - Dst: CMD_WARNING_CONFIG_FAILED
      Src: /src/frr/zebra/interface.c:4668,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4672,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4678,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4679,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/interface.c:4680,1
    - Dst: connected_free
      Src: /src/frr/zebra/interface.c:4681,1
    - Dst: dplane_intf_addr_unset
      Src: /src/frr/zebra/interface.c:4686,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4688,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/interface.c:4689,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/interface.c:4693,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4699,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4707,1
    - Dst: ipv6_address_install
      Src: /src/frr/zebra/interface.c:4708,1
    - Dst: DEFUN
      Src: /src/frr/zebra/interface.c:4712,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/interface.c:4721,1
    - Dst: ipv6_address_uninstall
      Src: /src/frr/zebra/interface.c:4722,1
    - Dst: link_params_config_write
      Src: /src/frr/zebra/interface.c:4726,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/interface.c:4732,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4737,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4738,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4739,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4740,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4741,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4742,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4743,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4745,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/interface.c:4746,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4749,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4751
      start: 4635
    functionDepth: 4
    functionLinenumber: 4635
    functionLinenumberEnd: 4751
    functionName: ipv6_address_configured
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - DEFUN
    - ipv6_address_install
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - link_params_config_write
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - ipv6_address_uninstall
    - connected_free
    - UNSET_FLAG
    - dplane_intf_addr_unset
    - dplane_res2str
    - connected_check
    - IS_PARAM_SET
    - listnode_delete
    - str2prefix_ipv6
    - HAS_LINK_PARAMS
    - CMD_WARNING_CONFIG_FAILED
    linkageType: ''
    returnType: int
    signature: int ipv6_address_configured(struct interface *ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ptm_write
      Src: /src/frr/zebra/interface.c:4792,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/interface.c:4794,1
    - Dst: if_vty_config_start
      Src: /src/frr/zebra/interface.c:4803,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4807,1
    - Dst: zebra_ptm_if_write
      Src: /src/frr/zebra/interface.c:4809,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4813,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4819,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4821,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4823,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:4825,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4827,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4831,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:4834,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/interface.c:4837,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:4840,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4845,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4848,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4851,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4852
      start: 4787
    functionDepth: 2
    functionLinenumber: 4787
    functionLinenumberEnd: 4852
    functionName: if_config_write
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zebra_ptm_if_write
    - if_vty_config_start
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - inet_ntop
    - zebra_ptm_write
    - CONNECTED_PEER
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int if_config_write(struct vty *vty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_vty_config_start
      Src: /src/frr/zebra/interface.c:4803,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4807,1
    - Dst: zebra_ptm_if_write
      Src: /src/frr/zebra/interface.c:4809,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4813,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4819,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4821,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4823,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/interface.c:4825,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/interface.c:4827,1
    - Dst: vty_out
      Src: /src/frr/zebra/interface.c:4831,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:4834,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/interface.c:4837,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/interface.c:4840,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4844
      start: 4795
    functionDepth: 2
    functionLinenumber: 4795
    functionLinenumberEnd: 4844
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 20
    functionsReached:
    - vty_out
    - zebra_ptm_if_write
    - if_vty_config_start
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - inet_ntop
    - CONNECTED_PEER
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/zebra/interface.c:4879,1
    - Dst: hook_register_prio
      Src: /src/frr/zebra/interface.c:4880,1
    - Dst: if_cmd_init
      Src: /src/frr/zebra/interface.c:4883,1
    - Dst: install_node
      Src: /src/frr/zebra/interface.c:4884,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/zebra/interface.c:4889,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4891,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4892,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4893,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4894,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4896,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4897,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4898,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4899,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4900,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4901,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4902,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4903,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4904,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4905,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4906,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4907,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4908,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4909,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4910,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4911,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4912,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4914,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4915,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4917,1
    - Dst: install_default
      Src: /src/frr/zebra/interface.c:4918,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4919,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4920,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4921,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4922,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4923,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4924,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4925,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4926,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4927,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4928,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4929,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4930,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4931,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4932,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4933,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4934,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4935,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4936,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4937,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4938,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4939,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4940,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4941,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4942,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4943,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4944,1
    - Dst: install_element
      Src: /src/frr/zebra/interface.c:4945,1
    - Dst: zebra_evpn_interface_init
      Src: /src/frr/zebra/interface.c:4948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4949
      start: 4876
    functionDepth: 1
    functionLinenumber: 4876
    functionLinenumberEnd: 4949
    functionName: zebra_if_init
    functionSourceFile: /src/frr/zebra/interface.c
    functionUses: 2
    functionsReached:
    - if_zapi_callbacks
    - install_node
    - hook_register_prio
    - if_cmd_init
    - install_default
    - zebra_evpn_interface_init
    - install_element
    linkageType: ''
    returnType: void
    signature: void zebra_if_init(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:201,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:205,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:206,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:209,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:216,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:220,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:224,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:227,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:236,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:237,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:243,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 28
    argCount: 3
    argNames:
    - re
    - nhop
    - is_fib
    argTypes:
    - struct route_entry*
    - struct nexthop*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 247
    functionName: re_status_output_char
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: char
    signature: "char re_status_output_char(const struct route_entry *re,\n\t\t\t\t
      \ const struct nexthop *nhop,\n\t\t\t\t  bool is_fib)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:260,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:281,1
    - Dst: show_nexthop_detail_helper
      Src: /src/frr/zebra/zebra_vty.c:282,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:284,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_vty.c:289,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 3
    argNames:
    - vty
    - re
    - nexthop
    argTypes:
    - struct vty*
    - struct route_entry*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 296
    functionName: show_nh_backup_helper
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - nexthop_next
    - show_nexthop_detail_helper
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void show_nh_backup_helper(struct vty *vty,\n\t\t\t\t  const struct
      route_entry *re,\n\t\t\t\t  const struct nexthop *nexthop)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:312,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:315,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:316,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:322,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:325,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vty.c:326,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:332,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_vty.c:333,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:336,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vty.c:337,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:343,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vty.c:344,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:348,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:351,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:354,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:358,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vty.c:367,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:369,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_vty.c:369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:372,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:373,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:375,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:376,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:378,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:379,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:381,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:382,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:384,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:385,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_vty.c:392,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:394,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_vty.c:401,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_vty.c:403,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:405,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:416,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:420,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_vty.c:421,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:428,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:430,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:431,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:434,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 81
    argCount: 4
    argNames:
    - vty
    - re
    - nexthop
    - is_backup
    argTypes:
    - struct vty*
    - struct route_entry*
    - struct nexthop*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 436
    functionName: show_nexthop_detail_helper
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 1
    functionsReached:
    - ifindex2ifname
    - vty_out
    - re_status_output_char
    - CHECK_FLAG
    - mpls_label2str
    - inet_ntop
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - IPV6_ADDR_SAME
    linkageType: ''
    returnType: void
    signature: "void show_nexthop_detail_helper(struct vty *vty,\n\t\t\t\t       const
      struct route_entry *re,\n\t\t\t\t       const struct nexthop *nexthop,\n\t\t\t\t
      \      bool is_backup)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:450,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:453,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vty.c:458,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:461,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:462,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:464,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:466,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:469,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:472,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:476,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:479,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vty.c:485,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:488,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:491,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:494,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:497,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:500,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:503,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 3
    argNames:
    - vty
    - re
    - json
    argTypes:
    - struct vty*
    - struct route_entry*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 510
    functionName: zebra_show_ip_route_opaque
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - json_object_string_add
    - vty_out
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void zebra_show_ip_route_opaque(struct vty *vty, struct route_entry
      *re,\n\t\t\t\t       struct json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/zebra/zebra_vty.c:516,1
    - Dst: frrtime_to_interval
      Src: /src/frr/zebra/zebra_vty.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - uptime
    - buf
    - bufsize
    argTypes:
    - time_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 520
    functionName: uptime2str
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - monotime
    - frrtime_to_interval
    linkageType: ''
    returnType: void
    signature: void uptime2str(time_t uptime, char *buf, size_t bufsize)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_vty.c:532,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_vty.c:545,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:551,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:552,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:553,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:553,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:555,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:556,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:557,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:560,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:563,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:567,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vty.c:569,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:570,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vty.c:570,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:572,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:573,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:574,1
    - Dst: uptime2str
      Src: /src/frr/zebra/zebra_vty.c:576,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:578,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:581,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:584,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_vty.c:589,1
    - Dst: show_nexthop_detail_helper
      Src: /src/frr/zebra/zebra_vty.c:591,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:593,1
    - Dst: if
      Src: /src/frr/zebra/zebra_vty.c:596,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:596,1
    - Dst: show_nh_backup_helper
      Src: /src/frr/zebra/zebra_vty.c:597,1
    - Dst: zebra_show_ip_route_opaque
      Src: /src/frr/zebra/zebra_vty.c:599,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:601,1
    - Dst: vty_show_ip_route
      Src: /src/frr/zebra/zebra_vty.c:605,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_vty.c:615,1
    - Dst: uptime2str
      Src: /src/frr/zebra/zebra_vty.c:621,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_vty.c:627,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:632,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:633,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:635,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:636,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:637,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:638,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:639,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:642,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:645,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:646,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vty.c:647,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:649,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:650,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:653,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:656,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:660,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:661,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:663,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:664,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:666,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:667,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:669,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:672,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:673,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:675,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_vty.c:676,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:679,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:682,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:684,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:686,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:688,1
    - Dst: nexthop_group_nexthop_num
      Src: /src/frr/zebra/zebra_vty.c:689,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:690,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_vty.c:691,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:693,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:696,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:700,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:702,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:703,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_vty.c:704,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:707,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:711,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_vty.c:715,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_vty.c:717,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:720,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:722,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:723,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_vty.c:725,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:727,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:731,1
    - Dst: zebra_show_ip_route_opaque
      Src: /src/frr/zebra/zebra_vty.c:734,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:736,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_vty.c:745,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:749,1
    - Dst: zebra_route_char
      Src: /src/frr/zebra/zebra_vty.c:749,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:751,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:753,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:755,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:756,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:757,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:759,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:761,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:762,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:763,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:770,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:774,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:777,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:782,1
    - Dst: nexthop_level
      Src: /src/frr/zebra/zebra_vty.c:783,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:785,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:786,1
    - Dst: nexthop_level
      Src: /src/frr/zebra/zebra_vty.c:787,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 38
    argCount: 5
    argNames:
    - vty
    - rn
    - mcast
    - use_fib
    - show_ng
    argTypes:
    - struct vty*
    - struct route_node*
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 523
    functionDepth: 3
    functionLinenumber: 523
    functionLinenumberEnd: 788
    functionName: vty_show_ip_route_detail
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - show_nh_backup_helper
    - nexthop_group_nexthop_num
    - json_object_string_add
    - nexthop_level
    - uptime2str
    - json_object_boolean_false_add
    - nexthop_group_active_nexthop_num
    - rib_get_fib_backup_nhg
    - srcdest_rnode2str
    - ALL_NEXTHOPS
    - show_nexthop_json_helper
    - zebra_route_char
    - zebra_show_ip_route_opaque
    - zebra_vrf_lookup_by_id
    - if
    - rib_dest_from_rnode
    - zebra_nhg_get_backup_nhg
    - rib_get_fib_nhg
    - vty_out
    - re_status_output_char
    - zvrf_name
    - vty_show_ip_route
    - json_object_int_add
    - show_nexthop_detail_helper
    - srcdest_rnode_table_info
    - zebra_route_string
    - ALL_NEXTHOPS_PTR
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - vrf_id_to_name
    - CHECK_FLAG
    - json_object_boolean_true_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void vty_show_ip_route_detail(struct vty *vty, struct route_node *rn,\n\t\t\t\t
      \    int mcast, bool use_fib, bool show_ng)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_vty.c:545,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:551,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:552,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:553,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:553,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:555,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:556,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:557,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:560,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:563,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:567,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vty.c:569,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:570,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vty.c:570,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:572,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:573,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:574,1
    - Dst: uptime2str
      Src: /src/frr/zebra/zebra_vty.c:576,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:578,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:581,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:584,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_vty.c:589,1
    - Dst: show_nexthop_detail_helper
      Src: /src/frr/zebra/zebra_vty.c:591,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:593,1
    - Dst: if
      Src: /src/frr/zebra/zebra_vty.c:596,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:596,1
    - Dst: show_nh_backup_helper
      Src: /src/frr/zebra/zebra_vty.c:597,1
    - Dst: zebra_show_ip_route_opaque
      Src: /src/frr/zebra/zebra_vty.c:599,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:601,1
    - Dst: vty_show_ip_route
      Src: /src/frr/zebra/zebra_vty.c:605,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_vty.c:615,1
    - Dst: uptime2str
      Src: /src/frr/zebra/zebra_vty.c:621,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_vty.c:627,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:632,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:633,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:635,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:636,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:637,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:638,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:639,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:642,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:645,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:646,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vty.c:647,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:649,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:650,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:653,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:656,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:660,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:661,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:663,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:664,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:666,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:667,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:669,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:672,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:673,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:675,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_vty.c:676,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:679,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:682,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:684,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:686,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:688,1
    - Dst: nexthop_group_nexthop_num
      Src: /src/frr/zebra/zebra_vty.c:689,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:690,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_vty.c:691,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:693,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:696,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:700,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:702,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:703,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_vty.c:704,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:707,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:711,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_vty.c:715,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_vty.c:717,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:720,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:722,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:723,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_vty.c:725,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:727,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:731,1
    - Dst: zebra_show_ip_route_opaque
      Src: /src/frr/zebra/zebra_vty.c:734,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:736,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_vty.c:745,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:749,1
    - Dst: zebra_route_char
      Src: /src/frr/zebra/zebra_vty.c:749,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:751,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:753,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:755,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:756,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:757,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:759,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:761,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:762,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:763,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:770,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:774,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:777,1
    - Dst: re_status_output_char
      Src: /src/frr/zebra/zebra_vty.c:782,1
    - Dst: nexthop_level
      Src: /src/frr/zebra/zebra_vty.c:783,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 534
    functionDepth: 3
    functionLinenumber: 534
    functionLinenumberEnd: 784
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 4
    functionsReached:
    - show_nh_backup_helper
    - nexthop_group_nexthop_num
    - json_object_string_add
    - nexthop_level
    - uptime2str
    - json_object_boolean_false_add
    - nexthop_group_active_nexthop_num
    - rib_get_fib_backup_nhg
    - srcdest_rnode2str
    - ALL_NEXTHOPS
    - show_nexthop_json_helper
    - zebra_route_char
    - zebra_show_ip_route_opaque
    - zebra_vrf_lookup_by_id
    - if
    - rib_dest_from_rnode
    - zebra_nhg_get_backup_nhg
    - rib_get_fib_nhg
    - vty_out
    - re_status_output_char
    - zvrf_name
    - vty_show_ip_route
    - json_object_int_add
    - show_nexthop_detail_helper
    - srcdest_rnode_table_info
    - zebra_route_string
    - ALL_NEXTHOPS_PTR
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - vrf_id_to_name
    - CHECK_FLAG
    - json_object_boolean_true_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vty.c:980,1
    - Dst: route_table_get_info
      Src: /src/frr/zebra/zebra_vty.c:982,1
    - Dst: do_show_ip_route
      Src: /src/frr/zebra/zebra_vty.c:990,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vty.c:990,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 12
    argNames:
    - vty
    - zvrf
    - afi
    - use_fib
    - use_json
    - tag
    - longer_prefix_p
    - supernets_only
    - type
    - ospf_instance_id
    - show_ng
    - ctx
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - afi_t
    - bool
    - bool
    - route_tag_t
    - struct prefix*
    - bool
    - int
    - unsigned short
    - bool
    - struct route_show_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 995
    functionName: do_show_ip_route_all
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - zvrf_name
    - RB_FOREACH
    - route_table_get_info
    - do_show_ip_route
    linkageType: ''
    returnType: void
    signature: "void do_show_ip_route_all(struct vty *vty, struct zebra_vrf *zvrf,\n\t\t\t\t
      afi_t afi, bool use_fib, bool use_json,\n\t\t\t\t route_tag_t tag,\n\t\t\t\t
      const struct prefix *longer_prefix_p,\n\t\t\t\t bool supernets_only, int type,\n\t\t\t\t
      unsigned short ospf_instance_id, bool show_ng,\n\t\t\t\t struct route_show_ctx
      *ctx)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_name
      Src: /src/frr/zebra/zebra_vty.c:1008,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1010,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1012,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vty.c:1016,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1018,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1020,1
    - Dst: zebra_router_find_table
      Src: /src/frr/zebra/zebra_vty.c:1025,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_vty.c:1027,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vty.c:1027,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1030,1
    - Dst: do_show_route_helper
      Src: /src/frr/zebra/zebra_vty.c:1034,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 14
    argNames:
    - vty
    - vrf_name
    - afi
    - safi
    - use_fib
    - use_json
    - tag
    - longer_prefix_p
    - supernets_only
    - type
    - ospf_instance_id
    - tableid
    - show_ng
    - ctx
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - bool
    - bool
    - route_tag_t
    - struct prefix*
    - bool
    - int
    - unsigned short
    - uint32_t
    - bool
    - struct route_show_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1039
    functionName: do_show_ip_route
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 1
    functionsReached:
    - zebra_router_find_table
    - vty_out
    - zvrf_id
    - zebra_vrf_lookup_by_name
    - zebra_vrf_table
    - do_show_route_helper
    linkageType: ''
    returnType: int
    signature: "int do_show_ip_route(struct vty *vty, const char *vrf_name, afi_t
      afi,\n\t\t\t    safi_t safi, bool use_fib, bool use_json,\n\t\t\t    route_tag_t
      tag,\n\t\t\t    const struct prefix *longer_prefix_p,\n\t\t\t    bool supernets_only,
      int type,\n\t\t\t    unsigned short ospf_instance_id, uint32_t tableid,\n\t\t\t
      \   bool show_ng, struct route_show_ctx *ctx)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: uptime2str
      Src: /src/frr/zebra/zebra_vty.c:1173,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:1176,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:1179,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:1180,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:1181,1
    - Dst: event_is_scheduled
      Src: /src/frr/zebra/zebra_vty.c:1182,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:1183,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_vty.c:1185,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:1188,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:1189,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vty.c:1190,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1193,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:1194,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1195,1
    - Dst: event_is_scheduled
      Src: /src/frr/zebra/zebra_vty.c:1196,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1197,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_vty.c:1198,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1201,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1203,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1204,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vty.c:1204,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:1207,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:1209,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1211,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:1213,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vty.c:1215,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1217,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1220,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:1224,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1227,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_vty.c:1231,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:1233,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1235,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_vty.c:1236,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:1238,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_vty.c:1240,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1243,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1246,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:1248,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:1253,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_vty.c:1256,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:1258,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_vty.c:1259,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:1261,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1262,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1265,1
    - Dst: show_route_nexthop_helper
      Src: /src/frr/zebra/zebra_vty.c:1266,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:1270,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:1273,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1277,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1282,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:1284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:1292,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1296,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1298,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1300,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1302,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:1304,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:1310,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_vty.c:1313,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:1316,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1318,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:1320,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:1322,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_vty.c:1323,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:1325,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:1329,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1331,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1336,1
    - Dst: show_route_nexthop_helper
      Src: /src/frr/zebra/zebra_vty.c:1337,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1338,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:1343,1
    - Dst: zebra_nhg_dependents_is_empty
      Src: /src/frr/zebra/zebra_vty.c:1347,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:1349,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1351,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_vty.c:1352,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:1355,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_vty.c:1357,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1360,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:1363,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1366,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:1371,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:1373,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:1375,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:1377,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1380,1
    - Dst: json_object_object_addf
      Src: /src/frr/zebra/zebra_vty.c:1390,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 131
    argCount: 3
    argNames:
    - vty
    - nhe
    - json_nhe_hdr
    argTypes:
    - struct vty*
    - struct nhg_hash_entry*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1391
    functionName: show_nexthop_group_out
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - show_route_nexthop_helper
    - frr_each
    - json_object_string_add
    - uptime2str
    - zebra_nhg_depends_is_empty
    - ALL_NEXTHOPS
    - show_nexthop_json_helper
    - event_is_scheduled
    - zebra_nhg_get_backup_nhg
    - event_timer_to_hhmmss
    - vty_out
    - json_object_int_add
    - zebra_route_string
    - ALL_NEXTHOPS_PTR
    - json_object_new_object
    - json_object_new_array
    - json_object_new_int
    - json_object_object_addf
    - json_object_array_add
    - vrf_id_to_name
    - CHECK_FLAG
    - json_object_boolean_true_add
    - zebra_nhg_dependents_is_empty
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void show_nexthop_group_out(struct vty *vty, struct nhg_hash_entry
      *nhe,\n\t\t\t\t   json_object *json_nhe_hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_vty.c:1398,1
    - Dst: show_nexthop_group_out
      Src: /src/frr/zebra/zebra_vty.c:1401,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vty.c:1404,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1406,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vty.c:1412,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - id
    - json
    argTypes:
    - struct vty*
    - uint32_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1393
    functionDepth: 3
    functionLinenumber: 1393
    functionLinenumberEnd: 1415
    functionName: show_nexthop_group_id_cmd_helper
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - vty_json
    - vty_out
    - zebra_nhg_lookup_id
    - show_nexthop_group_out
    linkageType: ''
    returnType: int
    signature: "int show_nexthop_group_id_cmd_helper(struct vty *vty, uint32_t id,\n\t\t\t\t\t
      \   json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: show_nexthop_group_out
      Src: /src/frr/zebra/zebra_vty.c:1443,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1427
    functionDepth: 3
    functionLinenumber: 1427
    functionLinenumberEnd: 1447
    functionName: nhe_show_walker
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - show_nexthop_group_out
    linkageType: ''
    returnType: int
    signature: int nhe_show_walker(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_vty.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - vty
    - zvrf
    - afi
    - type
    - json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - afi_t
    - int
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1462
    functionName: show_nexthop_group_cmd_helper
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - hash_walk
    linkageType: ''
    returnType: void
    signature: "void show_nexthop_group_cmd_helper(struct vty *vty,\n\t\t\t\t\t  struct
      zebra_vrf *zvrf, afi_t afi,\n\t\t\t\t\t  int type, json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_nhg_dependents_is_empty
      Src: /src/frr/zebra/zebra_vty.c:1471,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1472,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_vty.c:1474,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:1476,1
    - Dst: show_nexthop_group_out
      Src: /src/frr/zebra/zebra_vty.c:1477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1464
    functionDepth: 3
    functionLinenumber: 1464
    functionLinenumberEnd: 1480
    functionName: if_nexthop_group_dump_vty
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - if_nhg_dependents_is_empty
    - vty_out
    - show_nexthop_group_out
    - frr_each
    linkageType: ''
    returnType: void
    signature: void if_nexthop_group_dump_vty(struct vty *vty, struct interface *ifp)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2125,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2126,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2127,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2131,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_vty.c:2132,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2134,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2137,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2139,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vty.c:2140,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_vty.c:2145,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2147,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2151,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_vty.c:2152,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2154,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2157,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2159,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vty.c:2160,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_vty.c:2164,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_vty.c:2165,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2167,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2171,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2173,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2174,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vty.c:2175,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2178,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2182,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2185,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2189,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 4
    argNames:
    - vty
    - nexthop
    - re
    - num
    argTypes:
    - struct vty*
    - struct nexthop*
    - struct route_entry*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2196
      start: 2119
    functionDepth: 1
    functionLinenumber: 2119
    functionLinenumberEnd: 2196
    functionName: show_ip_route_nht_dump
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    - inet_ntop
    - ifindex2ifname
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void show_ip_route_nht_dump(struct vty *vty, struct nexthop *nexthop,\n\t\t\t\t
      \  struct route_entry *re, unsigned int num)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2215,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_vty.c:2216,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2217,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:2218,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2219,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2220,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2221,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vty.c:2222,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2223,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2226,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2227,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2230,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_vty.c:2232,1
    - Dst: gmtime_r
      Src: /src/frr/zebra/zebra_vty.c:2234,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vty.c:2237,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vty.c:2240,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vty.c:2243,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2248,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2249,1
    - Dst: nexthop_group_nexthop_num
      Src: /src/frr/zebra/zebra_vty.c:2250,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2251,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_vty.c:2252,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2254,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2255,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_vty.c:2257,1
    - Dst: show_ip_route_nht_dump
      Src: /src/frr/zebra/zebra_vty.c:2259,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2264,1
    - Dst: vty_show_ip_route_summary
      Src: /src/frr/zebra/zebra_vty.c:2269,1
    - Dst: ZEBRA_ROUTE_TOTAL
      Src: /src/frr/zebra/zebra_vty.c:2275,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vty.c:2285,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vty.c:2286,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vty.c:2287,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vty.c:2288,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2291,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:2292,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:2293,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vty.c:2297,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_vty.c:2297,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/zebra_vty.c:2298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:2300,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:2308,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:2317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:2324,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2333,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vty.c:2335,1
    - Dst: route_table_get_info
      Src: /src/frr/zebra/zebra_vty.c:2336,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2345,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2347,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2350,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2353,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2356,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:2360,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:2362,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2366,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2368,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2371,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2374,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2377,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:2380,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:2382,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2385,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2389,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2397,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2399,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2401,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2404,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2407,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:2410,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:2412,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:2413,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2416,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:2417,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2424,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2426,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vty.c:2429,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2431,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2432,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2434,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2436
      start: 2214
    functionDepth: 2
    functionLinenumber: 2214
    functionLinenumberEnd: 2436
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 5
    functionsReached:
    - vty_show_ip_route_summary
    - route_table_get_info
    - route_top
    - nexthop_group_nexthop_num
    - show_ip_route_nht_dump
    - json_object_string_add
    - RNODE_FOREACH_RE
    - nexthop_group_active_nexthop_num
    - srcdest_rnode2str
    - snprintf
    - memset
    - vty_out
    - zvrf_name
    - monotime
    - json_object_int_add
    - zebra_route_string
    - ALL_NEXTHOPS_PTR
    - ZEBRA_ROUTE_TOTAL
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - gmtime_r
    - vrf_id_to_name
    - srcdest_route_next
    - CHECK_FLAG
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_vty.c:2461,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vty.c:2462,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2465,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vty.c:2466,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vty.c:2467,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vty.c:2471,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_vty.c:2471,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/zebra_vty.c:2472,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:2478,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:2488,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vty.c:2490,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2498,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vty.c:2500,1
    - Dst: route_table_get_info
      Src: /src/frr/zebra/zebra_vty.c:2501,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2509,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2511,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2515,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:2519,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:2521,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2525,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2527,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2530,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:2533,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:2535,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2538,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2544,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vty.c:2552,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2554,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2556,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vty.c:2558,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:2560,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vty.c:2561,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2564,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vty.c:2565,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2572,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vty.c:2574,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vty.c:2577,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2579,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2580,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:2582,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 64
    argCount: 3
    argNames:
    - vty
    - table
    - use_json
    argTypes:
    - struct vty*
    - struct route_table*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2584
      start: 2445
    functionDepth: 1
    functionLinenumber: 2445
    functionLinenumberEnd: 2584
    functionName: vty_show_ip_route_summary_prefix
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - vty_out
    - memset
    - srcdest_route_next
    - route_table_get_info
    - zvrf_name
    - CHECK_FLAG
    - route_top
    - json_object_array_add
    - zebra_route_string
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - RNODE_FOREACH_RE
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void vty_show_ip_route_summary_prefix(struct vty *vty,\n\t\t\t\t\t
      \    struct route_table *table,\n\t\t\t\t\t     bool use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_import_table_config
      Src: /src/frr/zebra/zebra_vty.c:3785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3788
      start: 3781
    functionDepth: 3
    functionLinenumber: 3781
    functionLinenumberEnd: 3788
    functionName: zebra_ip_config
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - zebra_import_table_config
    linkageType: ''
    returnType: int
    signature: int zebra_ip_config(struct vty *vty)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3950,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3953,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3956,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3959,1
    - Dst: multicast_mode_ipv4_get
      Src: /src/frr/zebra/zebra_vty.c:3962,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3965,1
    - Dst: dplane_config_write_helper
      Src: /src/frr/zebra/zebra_vty.c:3979,1
    - Dst: zebra_evpn_mh_config_write
      Src: /src/frr/zebra/zebra_vty.c:3981,1
    - Dst: zebra_pbr_config_write
      Src: /src/frr/zebra/zebra_vty.c:3983,1
    - Dst: zebra_vxlan_get_accept_bgp_seq
      Src: /src/frr/zebra/zebra_vty.c:3985,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3986,1
    - Dst: zebra_nhg_kernel_nexthops_enabled
      Src: /src/frr/zebra/zebra_vty.c:3989,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3990,1
    - Dst: zebra_nhg_proto_nexthops_only
      Src: /src/frr/zebra/zebra_vty.c:3992,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3993,1
    - Dst: zebra_nhg_recursive_use_backups
      Src: /src/frr/zebra/zebra_vty.c:3995,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3996,1
    - Dst: rnh_get_hide_backups
      Src: /src/frr/zebra/zebra_vty.c:3998,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:3999,1
    - Dst: netlink_config_write_helper
      Src: /src/frr/zebra/zebra_vty.c:4003,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4007
      start: 3947
    functionDepth: 2
    functionLinenumber: 3947
    functionLinenumberEnd: 4007
    functionName: config_write_protocol
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - rnh_get_hide_backups
    - zebra_evpn_mh_config_write
    - dplane_config_write_helper
    - vty_out
    - zebra_nhg_kernel_nexthops_enabled
    - zebra_pbr_config_write
    - multicast_mode_ipv4_get
    - netlink_config_write_helper
    - zebra_nhg_proto_nexthops_only
    - zebra_vxlan_get_accept_bgp_seq
    - zebra_nhg_recursive_use_backups
    linkageType: ''
    returnType: int
    signature: int config_write_protocol(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4321
      start: 4318
    functionDepth: 0
    functionLinenumber: 4318
    functionLinenumberEnd: 4321
    functionName: config_write_table
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int config_write_table(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ipforward
      Src: /src/frr/zebra/zebra_vty.c:4326,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:4327,1
    - Dst: ipforward_ipv6
      Src: /src/frr/zebra/zebra_vty.c:4328,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:4329,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vty.c:4330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4332
      start: 4324
    functionDepth: 1
    functionLinenumber: 4324
    functionLinenumberEnd: 4332
    functionName: config_write_forwarding
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 0
    functionsReached:
    - ipforward
    - ipforward_ipv6
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_forwarding(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/zebra/zebra_vty.c:4544,1
    - Dst: install_node
      Src: /src/frr/zebra/zebra_vty.c:4545,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4547,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4548,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4549,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4550,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4552,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4553,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4554,1
    - Dst: zebra_route_map_init
      Src: /src/frr/zebra/zebra_vty.c:4557,1
    - Dst: zebra_affinity_map_init
      Src: /src/frr/zebra/zebra_vty.c:4559,1
    - Dst: install_node
      Src: /src/frr/zebra/zebra_vty.c:4561,1
    - Dst: install_node
      Src: /src/frr/zebra/zebra_vty.c:4562,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4564,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4565,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4567,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4568,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4570,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4571,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4572,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4573,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4574,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4575,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4576,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4577,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4578,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4579,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4581,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4582,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4584,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4585,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4586,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4587,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4588,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4589,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4590,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4592,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4593,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4594,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4596,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4597,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4598,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4599,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4600,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4601,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4602,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4603,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4604,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4606,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4607,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4608,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4609,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4610,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4611,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4612,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4613,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4614,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4615,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4616,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4617,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4618,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4619,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4620,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4621,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4622,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4623,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4624,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4625,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4626,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4627,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4628,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4629,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4630,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4631,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4632,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4633,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4634,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4635,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4636,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4637,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4638,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4639,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4640,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4641,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4643,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4645,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4646,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4647,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4648,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4649,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4651,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4652,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4653,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4654,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4655,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4656,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4657,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4658,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4660,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4661,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4662,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4663,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4665,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4666,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4669,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4670,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4671,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4672,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4676,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vty.c:4679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4680
      start: 4541
    functionDepth: 2
    functionLinenumber: 4541
    functionLinenumberEnd: 4680
    functionName: zebra_vty_init
    functionSourceFile: /src/frr/zebra/zebra_vty.c
    functionUses: 2
    functionsReached:
    - install_element
    - install_node
    - zebra_route_map_init
    - zebra_affinity_map_init
    linkageType: ''
    returnType: void
    signature: void zebra_vty_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 42
    functionName: zebra_mcast_rpf_lookup_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_mcast_rpf_lookup_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: zebra_ip_forwarding_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_ip_forwarding_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: zebra_ip_forwarding_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_ip_forwarding_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 90
    functionName: zebra_ipv6_forwarding_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_ipv6_forwarding_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: zebra_ipv6_forwarding_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_ipv6_forwarding_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: zebra_workqueue_hold_timer_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_workqueue_hold_timer_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 138
    functionName: zebra_zapi_packets_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_zapi_packets_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 155
    functionName: zebra_import_kernel_table_table_id_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_import_kernel_table_table_id_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: zebra_import_kernel_table_table_id_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_import_kernel_table_table_id_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 186
    functionName: zebra_import_kernel_table_distance_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_import_kernel_table_distance_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: zebra_import_kernel_table_route_map_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_import_kernel_table_route_map_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 217
    functionName: zebra_import_kernel_table_route_map_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_import_kernel_table_route_map_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 234
    functionName: zebra_allow_external_route_update_create
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_allow_external_route_update_create(struct nb_cb_create_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 248
    functionName: zebra_allow_external_route_update_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_allow_external_route_update_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 265
    functionName: zebra_dplane_queue_limit_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_dplane_queue_limit_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 282
    functionName: zebra_debugs_debug_events_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_events_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 296
    functionName: zebra_debugs_debug_events_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_events_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 313
    functionName: zebra_debugs_debug_zapi_send_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_zapi_send_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 327
    functionName: zebra_debugs_debug_zapi_send_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_zapi_send_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 344
    functionName: zebra_debugs_debug_zapi_recv_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_zapi_recv_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 358
    functionName: zebra_debugs_debug_zapi_recv_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_zapi_recv_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 375
    functionName: zebra_debugs_debug_zapi_detail_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_zapi_detail_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 389
    functionName: zebra_debugs_debug_zapi_detail_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_zapi_detail_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 406
    functionName: zebra_debugs_debug_kernel_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_kernel_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 420
    functionName: zebra_debugs_debug_kernel_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_kernel_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 437
    functionName: zebra_debugs_debug_kernel_msg_send_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_kernel_msg_send_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 451
    functionName: zebra_debugs_debug_kernel_msg_send_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_kernel_msg_send_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 468
    functionName: zebra_debugs_debug_kernel_msg_recv_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_kernel_msg_recv_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 482
    functionName: zebra_debugs_debug_kernel_msg_recv_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_kernel_msg_recv_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 499
    functionName: zebra_debugs_debug_rib_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_rib_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 513
    functionName: zebra_debugs_debug_rib_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_rib_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 530
    functionName: zebra_debugs_debug_rib_detail_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_rib_detail_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 544
    functionName: zebra_debugs_debug_rib_detail_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_rib_detail_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 561
    functionName: zebra_debugs_debug_fpm_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_fpm_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 575
    functionName: zebra_debugs_debug_fpm_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_fpm_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 592
    functionName: zebra_debugs_debug_nht_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_nht_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 606
    functionName: zebra_debugs_debug_nht_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_nht_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 623
    functionName: zebra_debugs_debug_nht_detail_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_nht_detail_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 637
    functionName: zebra_debugs_debug_nht_detail_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_nht_detail_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 654
    functionName: zebra_debugs_debug_mpls_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_mpls_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 668
    functionName: zebra_debugs_debug_mpls_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_mpls_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 685
    functionName: zebra_debugs_debug_vxlan_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_vxlan_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 699
    functionName: zebra_debugs_debug_vxlan_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_vxlan_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 716
    functionName: zebra_debugs_debug_pw_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_pw_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 730
    functionName: zebra_debugs_debug_pw_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_pw_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 747
    functionName: zebra_debugs_debug_dplane_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_dplane_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 761
    functionName: zebra_debugs_debug_dplane_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_dplane_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 766
    functionDepth: 0
    functionLinenumber: 766
    functionLinenumberEnd: 778
    functionName: zebra_debugs_debug_dplane_detail_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_dplane_detail_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 780
    functionDepth: 0
    functionLinenumber: 780
    functionLinenumberEnd: 792
    functionName: zebra_debugs_debug_dplane_detail_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_dplane_detail_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 797
    functionDepth: 0
    functionLinenumber: 797
    functionLinenumberEnd: 809
    functionName: zebra_debugs_debug_mlag_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_mlag_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 823
    functionName: zebra_debugs_debug_mlag_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_debugs_debug_mlag_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/zebra/zebra_nb_config.c:834,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_nb_config.c:835,1
    - Dst: ipv4_martian
      Src: /src/frr/zebra/zebra_nb_config.c:840,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_nb_config.c:841,1
    - Dst: ipv6_martian
      Src: /src/frr/zebra/zebra_nb_config.c:845,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_nb_config.c:846,1
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:855,1
    - Dst: if_ip_address_install
      Src: /src/frr/zebra/zebra_nb_config.c:857,1
    - Dst: if_ipv6_address_install
      Src: /src/frr/zebra/zebra_nb_config.c:859,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 828
    functionDepth: 4
    functionLinenumber: 828
    functionLinenumberEnd: 865
    functionName: lib_interface_zebra_ip_addrs_create
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - if_ipv6_address_install
    - ipv6_martian
    - apply_mask
    - ipv4_martian
    - snprintfrr
    - nb_running_get_entry
    - yang_dnode_get_prefix
    - if_ip_address_install
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_ip_addrs_create(struct nb_cb_create_args *args)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/zebra/zebra_nb_config.c:873,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_nb_config.c:874,1
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:878,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/zebra_nb_config.c:884,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:886,1
    - Dst: connected_check
      Src: /src/frr/zebra/zebra_nb_config.c:893,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:895,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_config.c:904,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:905,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_config.c:911,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_config.c:912,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_nb_config.c:913,1
    - Dst: connected_free
      Src: /src/frr/zebra/zebra_nb_config.c:914,1
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:922,1
    - Dst: if_ip_address_uinstall
      Src: /src/frr/zebra/zebra_nb_config.c:923,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 867
    functionDepth: 2
    functionLinenumber: 867
    functionLinenumberEnd: 928
    functionName: lib_interface_zebra_ip_addrs_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask
    - snprintf
    - listnode_delete
    - CHECK_FLAG
    - nb_running_get_entry
    - connected_free
    - if_ip_address_uinstall
    - connected_check
    - yang_dnode_get_prefix
    - connected_check_ptp
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_ip_addrs_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 945
    functionName: lib_interface_zebra_ip_addrs_label_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_ip_addrs_label_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 959
    functionName: lib_interface_zebra_ip_addrs_label_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_ip_addrs_label_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 976
    functionName: lib_interface_zebra_ip_addrs_ip4_peer_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_ip_addrs_ip4_peer_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 978
    functionDepth: 0
    functionLinenumber: 978
    functionLinenumberEnd: 991
    functionName: lib_interface_zebra_ip_addrs_ip4_peer_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_interface_zebra_ip_addrs_ip4_peer_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1003,1
    - Dst: if_multicast_set
      Src: /src/frr/zebra/zebra_nb_config.c:1005,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 996
    functionDepth: 4
    functionLinenumber: 996
    functionLinenumberEnd: 1008
    functionName: lib_interface_zebra_multicast_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - if_multicast_set
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_multicast_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1017,1
    - Dst: if_multicast_unset
      Src: /src/frr/zebra/zebra_nb_config.c:1019,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1010
    functionDepth: 4
    functionLinenumber: 1010
    functionLinenumberEnd: 1022
    functionName: lib_interface_zebra_multicast_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - if_multicast_unset
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_multicast_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1035,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/zebra/zebra_nb_config.c:1036,1
    - Dst: if_linkdetect
      Src: /src/frr/zebra/zebra_nb_config.c:1038,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1027
    functionDepth: 2
    functionLinenumber: 1027
    functionLinenumberEnd: 1041
    functionName: lib_interface_zebra_link_detect_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - if_linkdetect
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_link_detect_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1051,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/zebra/zebra_nb_config.c:1052,1
    - Dst: if_linkdetect
      Src: /src/frr/zebra/zebra_nb_config.c:1054,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1043
    functionDepth: 2
    functionLinenumber: 1043
    functionLinenumberEnd: 1057
    functionName: lib_interface_zebra_link_detect_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - if_linkdetect
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_link_detect_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1069,1
    - Dst: if_shutdown
      Src: /src/frr/zebra/zebra_nb_config.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1062
    functionDepth: 4
    functionLinenumber: 1062
    functionLinenumberEnd: 1074
    functionName: lib_interface_zebra_shutdown_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - if_shutdown
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_shutdown_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1083,1
    - Dst: if_no_shutdown
      Src: /src/frr/zebra/zebra_nb_config.c:1085,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1076
    functionDepth: 5
    functionLinenumber: 1076
    functionLinenumberEnd: 1088
    functionName: lib_interface_zebra_shutdown_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - if_no_shutdown
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_shutdown_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1101,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/zebra_nb_config.c:1102,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nb_config.c:1107,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/zebra_nb_config.c:1108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1093
    functionDepth: 2
    functionLinenumber: 1093
    functionLinenumberEnd: 1111
    functionName: lib_interface_zebra_bandwidth_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - zebra_interface_up_update
    - if_is_operative
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_bandwidth_modify(struct nb_cb_modify_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1120,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nb_config.c:1125,1
    - Dst: zebra_interface_up_update
      Src: /src/frr/zebra/zebra_nb_config.c:1126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1113
    functionDepth: 2
    functionLinenumber: 1113
    functionLinenumberEnd: 1129
    functionName: lib_interface_zebra_bandwidth_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - zebra_interface_up_update
    - if_is_operative
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_bandwidth_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1142,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/zebra_nb_config.c:1143,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/zebra_nb_config.c:1148,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/zebra_nb_config.c:1157,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1160,1
    - Dst: admin_group_clear
      Src: /src/frr/zebra/zebra_nb_config.c:1162,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1163,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nb_config.c:1165,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/zebra_nb_config.c:1166,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1135
    functionDepth: 2
    functionLinenumber: 1135
    functionLinenumberEnd: 1170
    functionName: lib_interface_zebra_legacy_admin_group_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - if_link_params_enable
    - nb_running_get_entry
    - if_link_params_get
    - SET_PARAM
    - UNSET_PARAM
    - yang_dnode_get_uint32
    - zebra_interface_parameters_update
    - admin_group_clear
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: "int lib_interface_zebra_legacy_admin_group_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1178,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/zebra_nb_config.c:1183,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/zebra_nb_config.c:1192,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1195,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nb_config.c:1197,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/zebra_nb_config.c:1198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1172
    functionDepth: 2
    functionLinenumber: 1172
    functionLinenumberEnd: 1202
    functionName: lib_interface_zebra_legacy_admin_group_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - if_link_params_enable
    - nb_running_get_entry
    - if_link_params_get
    - UNSET_PARAM
    - zebra_interface_parameters_update
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: "int lib_interface_zebra_legacy_admin_group_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1217,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_nb_config.c:1218,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/zebra_nb_config.c:1219,1
    - Dst: affinity_map_get
      Src: /src/frr/zebra/zebra_nb_config.c:1224,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/zebra_nb_config.c:1225,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1230,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1236,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/zebra_nb_config.c:1248,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1254,1
    - Dst: admin_group_set
      Src: /src/frr/zebra/zebra_nb_config.c:1258,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1260,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nb_config.c:1263,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/zebra_nb_config.c:1264,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1208
    functionDepth: 2
    functionLinenumber: 1208
    functionLinenumberEnd: 1268
    functionName: lib_interface_zebra_affinity_create
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - if_link_params_enable
    - nb_running_get_entry
    - affinity_map_get
    - if_link_params_get
    - yang_dnode_get_string
    - SET_PARAM
    - admin_group_set
    - zebra_interface_parameters_update
    - yang_dnode_get_enum
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_affinity_create(struct nb_cb_create_args *args)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1278,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_nb_config.c:1279,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/zebra_nb_config.c:1280,1
    - Dst: affinity_map_get
      Src: /src/frr/zebra/zebra_nb_config.c:1285,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/zebra_nb_config.c:1286,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1291,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1307,1
    - Dst: admin_group_unset
      Src: /src/frr/zebra/zebra_nb_config.c:1311,1
    - Dst: admin_group_zero
      Src: /src/frr/zebra/zebra_nb_config.c:1313,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1314,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nb_config.c:1317,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/zebra_nb_config.c:1318,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1270
    functionDepth: 2
    functionLinenumber: 1270
    functionLinenumberEnd: 1322
    functionName: lib_interface_zebra_affinity_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - admin_group_unset
    - nb_running_get_entry
    - affinity_map_get
    - if_link_params_get
    - yang_dnode_get_string
    - UNSET_PARAM
    - zebra_interface_parameters_update
    - yang_dnode_get_enum
    - if_is_operative
    - admin_group_zero
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_affinity_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1335,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/zebra_nb_config.c:1336,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/zebra_nb_config.c:1341,1
    - Dst: admin_group_nb_words
      Src: /src/frr/zebra/zebra_nb_config.c:1346,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1347,1
    - Dst: if_link_params_enable
      Src: /src/frr/zebra/zebra_nb_config.c:1358,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1360,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1361,1
    - Dst: admin_group_get_offset
      Src: /src/frr/zebra/zebra_nb_config.c:1362,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1364,1
    - Dst: admin_group_clear
      Src: /src/frr/zebra/zebra_nb_config.c:1366,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1367,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1370,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1371,1
    - Dst: admin_group_bulk_set
      Src: /src/frr/zebra/zebra_nb_config.c:1372,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1374,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1377,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1380,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1381,1
    - Dst: admin_group_bulk_set
      Src: /src/frr/zebra/zebra_nb_config.c:1382,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1384,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1385,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/zebra/zebra_nb_config.c:1386,1
    - Dst: admin_group_get_offset
      Src: /src/frr/zebra/zebra_nb_config.c:1387,1
    - Dst: SET_PARAM
      Src: /src/frr/zebra/zebra_nb_config.c:1389,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nb_config.c:1393,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/zebra_nb_config.c:1394,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 50
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1328
    functionDepth: 2
    functionLinenumber: 1328
    functionLinenumberEnd: 1398
    functionName: lib_interface_zebra_affinity_mode_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - if_link_params_enable
    - admin_group_get_offset
    - admin_group_nb_words
    - nb_running_get_entry
    - if_link_params_get
    - IS_PARAM_SET
    - SET_PARAM
    - UNSET_PARAM
    - admin_group_bulk_set
    - zebra_interface_parameters_update
    - yang_dnode_get_enum
    - admin_group_clear
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int lib_interface_zebra_affinity_mode_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/zebra_nb_config.c:1419,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/zebra/zebra_nb_config.c:1423,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_nb_config.c:1424,1
    - Dst: zebra_vrf_lookup_by_name
      Src: /src/frr/zebra/zebra_nb_config.c:1425,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1427,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1433,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_nb_config.c:1441,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1443,1
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1451,1
    - Dst: zebra_vrf_lookup_by_name
      Src: /src/frr/zebra/zebra_nb_config.c:1452,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/zebra_nb_config.c:1453,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/zebra/zebra_nb_config.c:1457,1
    - Dst: zebra_vxlan_process_vrf_vni_cmd
      Src: /src/frr/zebra/zebra_nb_config.c:1459,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1463,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1403
    functionDepth: 1
    functionLinenumber: 1403
    functionLinenumberEnd: 1474
    functionName: lib_vrf_zebra_l3vni_id_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - zebra_vxlan_process_vrf_vni_cmd
    - snprintf
    - zebra_vrf_lookup_by_name
    - yang_dnode_get_parent
    - nb_running_get_entry
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - zl3vni_lookup
    linkageType: ''
    returnType: int
    signature: int lib_vrf_zebra_l3vni_id_modify(struct nb_cb_modify_args *args)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_nb_config.c:1490,1
    - Dst: zebra_vrf_lookup_by_name
      Src: /src/frr/zebra/zebra_nb_config.c:1491,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/zebra/zebra_nb_config.c:1492,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_nb_config.c:1494,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_nb_config.c:1498,1
    - Dst: is_l3vni_for_prefix_routes_only
      Src: /src/frr/zebra/zebra_nb_config.c:1504,1
    - Dst: zebra_vxlan_process_vrf_vni_cmd
      Src: /src/frr/zebra/zebra_nb_config.c:1507,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nb_config.c:1511,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1476
    functionDepth: 1
    functionLinenumber: 1476
    functionLinenumberEnd: 1521
    functionName: lib_vrf_zebra_l3vni_id_destroy
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_process_vrf_vni_cmd
    - snprintf
    - zebra_vrf_lookup_by_name
    - nb_running_get_entry
    - zlog_debug
    - is_l3vni_for_prefix_routes_only
    - yang_dnode_get_uint32
    - zl3vni_lookup
    linkageType: ''
    returnType: int
    signature: int lib_vrf_zebra_l3vni_id_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1526
    functionDepth: 0
    functionLinenumber: 1526
    functionLinenumberEnd: 1538
    functionName: lib_vrf_zebra_prefix_only_modify
    functionSourceFile: /src/frr/zebra/zebra_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_vrf_zebra_prefix_only_modify(struct nb_cb_modify_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zvrf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: EVPN_ENABLED
    functionSourceFile: /src/frr/zebra/zebra_vxlan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVPN_ENABLED(zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.h:33,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.h:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: is_evpn_enabled
    functionSourceFile: /src/frr/zebra/zebra_vxlan.h
    functionUses: 8
    functionsReached:
    - EVPN_ENABLED
    - zebra_vrf_get_evpn
    linkageType: ''
    returnType: int
    signature: int is_evpn_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: is_vxlan_flooding_head_end
    functionSourceFile: /src/frr/zebra/zebra_vxlan.h
    functionUses: 0
    functionsReached:
    - zebra_vrf_get_evpn
    linkageType: ''
    returnType: int
    signature: int is_vxlan_flooding_head_end(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: ZEBRA_VXLIF_VNI_UPDATE
    functionSourceFile: /src/frr/zebra/zebra_vxlan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_VXLIF_VNI_UPDATE(__flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: ZEBRA_VXLIF_UPDATE
    functionSourceFile: /src/frr/zebra/zebra_vxlan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_VXLIF_UPDATE(__flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:30,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 36
    functionName: ipforward
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 3
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: int
    signature: int ipforward(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:45,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: ipforward_on
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: int
    signature: int ipforward_on(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:45,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:61,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 68
    functionName: ipforward_off
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: int
    signature: int ipforward_off(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:61,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 66
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:86,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 93
    functionName: ipforward_ipv6
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 3
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: int
    signature: int ipforward_ipv6(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:86,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:102,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: ipforward_ipv6_on
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: int
    signature: int ipforward_ipv6_on(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:102,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:119,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: ipforward_ipv6_off
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: int
    signature: int ipforward_ipv6_off(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/ipforward_sysctl.c:119,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/ipforward_sysctl.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/ipforward_sysctl.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - sysctl
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/frr/zebra/rtread_sysctl.c:35,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtread_sysctl.c:36,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtread_sysctl.c:37,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/rtread_sysctl.c:42,1
    - Dst: sysctl
      Src: /src/frr/zebra/rtread_sysctl.c:45,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtread_sysctl.c:46,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtread_sysctl.c:47,1
    - Dst: XFREE
      Src: /src/frr/zebra/rtread_sysctl.c:48,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rtread_sysctl.c:56,1
    - Dst: rtm_read
      Src: /src/frr/zebra/rtread_sysctl.c:57,1
    - Dst: XFREE
      Src: /src/frr/zebra/rtread_sysctl.c:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 22
    functionDepth: 5
    functionLinenumber: 22
    functionLinenumberEnd: 64
    functionName: route_read
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 1
    functionsReached:
    - flog_warn
    - XMALLOC
    - rtm_read
    - SET_FLAG
    - sysctl
    - safe_strerror
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: macfdb_read
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void macfdb_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - zns
    - ifp
    - br_if
    - vid
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - struct interface*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: macfdb_read_for_bridge
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void macfdb_read_for_bridge(struct zebra_ns *zns, struct interface
      *ifp,\n\t\t\t    struct interface *br_if, vlanid_t vid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - zns
    - ifp
    - vni
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: macfdb_read_mcast_entry_for_vni
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void macfdb_read_mcast_entry_for_vni(struct zebra_ns *zns,\n\t\t\t\t
      \    struct interface *ifp, vni_t vni)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - zns
    - br_if
    - mac
    - vid
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: macfdb_read_specific_mac
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void macfdb_read_specific_mac(struct zebra_ns *zns, struct interface
      *br_if,\n\t\t\t      const struct ethaddr *mac, vlanid_t vid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: neigh_read
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void neigh_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - zns
    - vlan_if
    argTypes:
    - struct zebra_ns*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: neigh_read_for_vlan
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void neigh_read_for_vlan(struct zebra_ns *zns, struct interface *vlan_if)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ip
    - vlan_if
    argTypes:
    - struct ipaddr*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: neigh_read_specific_ip
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void neigh_read_specific_ip(const struct ipaddr *ip, struct interface
      *vlan_if)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: kernel_read_pbr_rules
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void kernel_read_pbr_rules(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: kernel_read_tc_qdisc
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void kernel_read_tc_qdisc(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: vlan_read
    functionSourceFile: /src/frr/zebra/rtread_sysctl.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vlan_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - af
    - ','
    - request
    - ','
    - buffer
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: AF_IOCTL
    functionSourceFile: /src/frr/zebra/ioctl.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AF_IOCTL(af, request, buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: sample_start
    functionSourceFile: /src/frr/zebra/sample_plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sample_start(struct zebra_dplane_provider *prov)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prov
    - early
    argTypes:
    - struct zebra_dplane_provider*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: sample_fini
    functionSourceFile: /src/frr/zebra/sample_plugin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sample_fini(struct zebra_dplane_provider *prov, bool early)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_get_work_limit
      Src: /src/frr/zebra/sample_plugin.c:57,1
    - Dst: dplane_provider_dequeue_in_ctx
      Src: /src/frr/zebra/sample_plugin.c:63,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/sample_plugin.c:68,1
    - Dst: dplane_provider_enqueue_out_ctx
      Src: /src/frr/zebra/sample_plugin.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 73
    functionName: sample_process
    functionSourceFile: /src/frr/zebra/sample_plugin.c
    functionUses: 0
    functionsReached:
    - dplane_provider_get_work_limit
    - dplane_ctx_set_status
    - dplane_provider_enqueue_out_ctx
    - dplane_provider_dequeue_in_ctx
    linkageType: ''
    returnType: int
    signature: int sample_process(struct zebra_dplane_provider *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_register
      Src: /src/frr/zebra/sample_plugin.c:92,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/sample_plugin.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 104
    functionName: init_sample_plugin
    functionSourceFile: /src/frr/zebra/sample_plugin.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - dplane_provider_register
    linkageType: ''
    returnType: int
    signature: int init_sample_plugin(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/sample_plugin.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: module_init
    functionSourceFile: /src/frr/zebra/sample_plugin.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - es_evi1
    - es_evi2
    argTypes:
    - struct zebra_evpn_es_evi*
    - struct zebra_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: zebra_es_evi_rb_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int zebra_es_evi_rb_cmp(const struct zebra_evpn_es_evi *es_evi1,\n\t\tconst
      struct zebra_evpn_es_evi *es_evi2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_mh.c:100,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_evpn_mh.c:106,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:109,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:110,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - es
    - zevpn
    argTypes:
    - struct zebra_evpn_es*
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 117
    functionName: zebra_evpn_es_evi_new
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - listnode_add
    - RB_INSERT
    - zlog_debug
    - listnode_init
    linkageType: ''
    returnType: struct zebra_evpn_es_evi
    signature: "struct zebra_evpn_es_evi *zebra_evpn_es_evi_new(struct zebra_evpn_es
      *es,\n\t\t\t\t\t\t       struct zebra_evpn *zevpn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_send_to_client_ok
      Src: /src/frr/zebra/zebra_evpn_mh.c:135,1
    - Dst: zebra_evpn_es_evi_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:146,1
    - Dst: zebra_evpn_es_evi_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct zebra_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 151
    functionName: zebra_evpn_es_evi_re_eval_send_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_send_to_client_ok
    - zebra_evpn_es_evi_send_to_client
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_es_evi_re_eval_send_to_client(\n\t\tstruct zebra_evpn_es_evi
      *es_evi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:162,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:166,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_evpn_mh.c:169,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mh.c:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct zebra_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 173
    functionName: zebra_evpn_es_evi_free
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - list_delete_node
    - zlog_debug
    - XFREE
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_evi_free(struct zebra_evpn_es_evi *es_evi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_evpn_mh.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - es
    - zevpn
    argTypes:
    - struct zebra_evpn_es*
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 184
    functionName: zebra_evpn_es_evi_find
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct zebra_evpn_es_evi
    signature: "struct zebra_evpn_es_evi *zebra_evpn_es_evi_find(struct zebra_evpn_es
      *es,\n\t\t\t\t\t\t struct zebra_evpn *zevpn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:193,1
    - Dst: zebra_evpn_es_evi_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:198,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:203,1
    - Dst: zebra_evpn_es_evi_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct zebra_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 208
    functionName: zebra_evpn_local_es_evi_do_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - list_delete_node
    - zlog_debug
    - zebra_evpn_es_evi_free
    - zebra_evpn_es_evi_send_to_client
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_local_es_evi_do_del(struct zebra_evpn_es_evi *es_evi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_evi_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:214,1
    - Dst: zebra_evpn_local_es_evi_do_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - es
    - zevpn
    argTypes:
    - struct zebra_evpn_es*
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 209
    functionDepth: 3
    functionLinenumber: 209
    functionLinenumberEnd: 217
    functionName: zebra_evpn_local_es_evi_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_local_es_evi_do_del
    - zebra_evpn_es_evi_find
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_local_es_evi_del(struct zebra_evpn_es *es,\n\t\t\t\t\tstruct
      zebra_evpn *zevpn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:232,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:233,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:236,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:240,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mh.c:243,1
    - Dst: zebra_evpn_local_es_evi_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:248,1
    - Dst: zebra_evpn_es_evi_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:253,1
    - Dst: zebra_evpn_es_evi_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:255,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:260,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:264,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:265,1
    - Dst: zebra_evpn_es_evi_re_eval_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:267,1
    - Dst: zebra_evpn_es_evi_mac_install
      Src: /src/frr/zebra/zebra_evpn_mh.c:269,1
    - Dst: zebra_evpn_es_evi_show_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:273,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:284,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:286,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:287,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:289,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:291,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:292,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:296,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:300,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:302,1
    - Dst: zebra_evpn_es_evi_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:309,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:320,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:322,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:323,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:327,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:329,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:331,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:333,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:337,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:341,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:343,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:345,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:346,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:350,1
    - Dst: zebra_evpn_es_evi_show_one_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:354,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_evpn_mh.c:360,1
    - Dst: zebra_evpn_es_evi_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:362,1
    - Dst: zebra_evpn_es_evi_show_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:365,1
    - Dst: zebra_evpn_es_evi_show_one_evpn_hash_cb
      Src: /src/frr/zebra/zebra_evpn_mh.c:375,1
    - Dst: zebra_evpn_es_evi_show_one_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:381,1
    - Dst: zebra_evpn_es_evi_show
      Src: /src/frr/zebra/zebra_evpn_mh.c:385,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:391,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:393,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:395,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:401,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:402,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mh.c:405,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:409,1
    - Dst: zebra_evpn_es_evi_show_vni
      Src: /src/frr/zebra/zebra_evpn_mh.c:412,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn_mh.c:417,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:419,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:423,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:424,1
    - Dst: zebra_evpn_es_evi_show_one_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:426,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:429,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:433,1
    - Dst: zebra_evpn_es_evi_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:437,1
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_evpn_mh.c:440,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:445,1
    - Dst: listset_app_node_mem
      Src: /src/frr/zebra/zebra_evpn_mh.c:446,1
    - Dst: zebra_evpn_es_evi_cleanup
      Src: /src/frr/zebra/zebra_evpn_mh.c:450,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_evpn_mh.c:455,1
    - Dst: zebra_evpn_local_es_evi_do_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:457,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mh.c:460,1
    - Dst: zebra_evpn_es_clear_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:461,1
    - Dst: zebra_evpn_update_all_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:467,1
    - Dst: zebra_evpn_send_to_client_ok
      Src: /src/frr/zebra/zebra_evpn_mh.c:477,1
    - Dst: zebra_evpn_es_set_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:478,1
    - Dst: zebra_evpn_es_clear_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:480,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:482,1
    - Dst: zebra_evpn_es_evi_re_eval_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:483,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn_mh.c:489,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:491,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_evpn_mh.c:494,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct zebra_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 499
    functionName: zebra_evpn_es_evi_mac_install
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - list_delete
    - zebra_vrf_get_evpn
    - listnode_add
    - json_object_string_add
    - zebra_evpn_local_es_evi_add
    - listnode_init
    - strlcat
    - zebra_evpn_local_es_evi_do_del
    - zebra_evpn_es_set_base_evpn
    - memset
    - ALL_LIST_ELEMENTS_RO
    - RB_INIT
    - zebra_evpn_es_evi_show_entry
    - zebra_evpn_es_evi_show_entry_detail
    - zebra_evpn_update_all_es
    - zebra_evpn_es_evi_show_one_evpn_hash_cb
    - zlog_debug
    - zebra_evpn_es_evi_re_eval_send_to_client
    - zebra_evpn_es_evi_init
    - json_array_string_add
    - if
    - hash_iterate
    - zebra_evpn_es_evi_show_vni
    - vty_out
    - zebra_evpn_lookup
    - listcount
    - zebra_evpn_es_evi_mac_install
    - zebra_evpn_sync_mac_dp_install
    - json_object_int_add
    - if_is_operative
    - listset_app_node_mem
    - zvni_map_to_svi
    - zebra_evpn_es_evi_find
    - json_object_new_object
    - json_object_new_array
    - zebra_evpn_send_to_client_ok
    - zebra_evpn_es_evi_show_one_evpn
    - json_object_array_add
    - CHECK_FLAG
    - zebra_evpn_es_evi_show
    - zebra_evpn_es_evi_cleanup
    - RB_FOREACH_SAFE
    - list_new
    - json_object_object_add
    - zebra_evpn_es_clear_base_evpn
    - zebra_vxlan_if_vni_find
    - RB_FOREACH
    - zebra_evpn_es_evi_new
    - vty_json
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_evi_mac_install(struct zebra_evpn_es_evi *es_evi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_2words
      Src: /src/frr/zebra/zebra_evpn_mh.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 519
    functionName: zebra_evpn_acc_vl_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - jhash_2words
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zebra_evpn_acc_vl_hash_keymake(const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 535
    functionName: zebra_evpn_acc_vl_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_acc_vl_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_evpn_mh.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vid
    - bridge_ifindex
    argTypes:
    - vlanid_t
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 549
    functionName: zebra_evpn_acc_vl_find_index
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct zebra_evpn_access_bd
    signature: 'struct zebra_evpn_access_bd *

      zebra_evpn_acc_vl_find_index(vlanid_t vid, ifindex_t bridge_ifindex)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_acc_vl_find_index
      Src: /src/frr/zebra/zebra_evpn_mh.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vid
    - br_if
    argTypes:
    - vlanid_t
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 556
    functionName: zebra_evpn_acc_vl_find
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_acc_vl_find_index
    linkageType: ''
    returnType: struct zebra_evpn_access_bd
    signature: "struct zebra_evpn_access_bd *zebra_evpn_acc_vl_find(vlanid_t vid,\n\t\t\t\t\t\t
      \   struct interface *br_if)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:568,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_mh.c:570,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:577,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_evpn_mh.c:580,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_evpn_mh.c:583,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:586,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - vid
    - br_if
    argTypes:
    - vlanid_t
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 591
    functionName: zebra_evpn_acc_vl_new
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - zlog_debug
    - list_new
    - zvni_map_to_svi
    - hash_get
    linkageType: ''
    returnType: struct zebra_evpn_access_bd
    signature: 'struct zebra_evpn_access_bd *

      zebra_evpn_acc_vl_new(vlanid_t vid, struct interface *br_if)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:600,1
    - Dst: zebra_evpn_mac_svi_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:603,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mh.c:606,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_evpn_mh.c:609,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mh.c:611,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - acc_bd
    argTypes:
    - struct zebra_evpn_access_bd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 597
    functionDepth: 1
    functionLinenumber: 597
    functionLinenumberEnd: 612
    functionName: zebra_evpn_acc_vl_free
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_svi_del
    - list_delete
    - zlog_debug
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_acc_vl_free(struct zebra_evpn_access_bd *acc_bd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_acc_vl_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 614
    functionDepth: 2
    functionLinenumber: 614
    functionLinenumberEnd: 619
    functionName: zebra_evpn_acc_vl_cleanup_all
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_acc_vl_free
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_acc_vl_cleanup_all(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_evpn_mh.c:626,1
    - Dst: zebra_l2_bridge_if_vlan_access_bd_deref
      Src: /src/frr/zebra/zebra_evpn_mh.c:630,1
    - Dst: zebra_evpn_acc_vl_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:633,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - acc_bd
    argTypes:
    - struct zebra_evpn_access_bd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 624
    functionDepth: 2
    functionLinenumber: 624
    functionLinenumberEnd: 634
    functionName: zebra_evpn_acc_bd_free_on_deref
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - list_isempty
    - zebra_l2_bridge_if_vlan_access_bd_deref
    - zebra_evpn_acc_vl_free
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_acc_bd_free_on_deref(struct zebra_evpn_access_bd *acc_bd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn_mh.c:641,1
    - Dst: zebra_evpn_acc_vl_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:642,1
    - Dst: zebra_l2_bridge_if_vlan_access_bd_ref
      Src: /src/frr/zebra/zebra_evpn_mh.c:645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - vid
    - br_if
    argTypes:
    - vlanid_t
    - struct interface*
    assertStmts:
    - condition: (br_if && br_if->info)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/frr/zebra/zebra_evpn_mh.c
    constantsTouched: []
    func_position:
      end: 648
      start: 636
    functionDepth: 2
    functionLinenumber: 636
    functionLinenumberEnd: 648
    functionName: zebra_evpn_acc_bd_alloc_on_ref
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_acc_vl_new
    - zebra_l2_bridge_if_vlan_access_bd_ref
    - assert
    linkageType: ''
    returnType: struct zebra_evpn_access_bd
    signature: 'struct zebra_evpn_access_bd *

      zebra_evpn_acc_bd_alloc_on_ref(vlanid_t vid, struct interface *br_if)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_evpn_mh.c:666,1
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:670,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:676,1
    - Dst: zebra_evpn_mac_svi_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:681,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:685,1
    - Dst: zebra_evpn_mac_svi_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:689,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 3
    argNames:
    - vlan_zif
    - br_zif
    - is_up
    argTypes:
    - struct zebra_if*
    - struct zebra_if*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 651
    functionDepth: 3
    functionLinenumber: 651
    functionLinenumberEnd: 691
    functionName: zebra_evpn_acc_bd_svi_set
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_mac_svi_del
    - zebra_evpn_mac_svi_add
    - zlog_debug
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - zebra_evpn_acc_vl_find
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_acc_bd_svi_set(struct zebra_if *vlan_zif,\n\t\t\t
      \      struct zebra_if *br_zif, bool is_up)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:698,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn_mh.c:699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vlan_if
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 696
    functionDepth: 4
    functionLinenumber: 696
    functionLinenumberEnd: 700
    functionName: zebra_evpn_acc_bd_svi_mac_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_acc_bd_svi_set
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_acc_bd_svi_mac_add(struct interface *vlan_if)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:711,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:715,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:719,1
    - Dst: zebra_evpn_local_es_evi_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:720,1
    - Dst: else
      Src: /src/frr/zebra/zebra_evpn_mh.c:721,1
    - Dst: zebra_evpn_local_es_evi_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:722,1
    - Dst: zebra_evpn_mac_svi_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:727,1
    - Dst: zebra_evpn_mac_svi_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:730,1
    - Dst: zebra_evpn_vl_vxl_ref
      Src: /src/frr/zebra/zebra_evpn_mh.c:736,1
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:755,1
    - Dst: zebra_evpn_acc_bd_alloc_on_ref
      Src: /src/frr/zebra/zebra_evpn_mh.c:757,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn_mh.c:768,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:773,1
    - Dst: zebra_evpn_acc_bd_evpn_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:776,1
    - Dst: zebra_evpn_acc_bd_evpn_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:779,1
    - Dst: zebra_evpn_vl_vxl_deref
      Src: /src/frr/zebra/zebra_evpn_mh.c:783,1
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:799,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:808,1
    - Dst: zebra_evpn_acc_bd_evpn_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:812,1
    - Dst: zebra_evpn_acc_bd_free_on_deref
      Src: /src/frr/zebra/zebra_evpn_mh.c:819,1
    - Dst: zebra_evpn_access_bd_bridge_cleanup
      Src: /src/frr/zebra/zebra_evpn_mh.c:823,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:829,1
    - Dst: zebra_evpn_acc_bd_evpn_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:834,1
    - Dst: list_delete_all_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:837,1
    - Dst: zebra_evpn_acc_bd_free_on_deref
      Src: /src/frr/zebra/zebra_evpn_mh.c:845,1
    - Dst: zebra_evpn_vxl_evpn_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:849,1
    - Dst: ifindex_t
      Src: /src/frr/zebra/zebra_evpn_mh.c:854,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:860,1
    - Dst: zebra_evpn_acc_vl_find_index
      Src: /src/frr/zebra/zebra_evpn_mh.c:869,1
    - Dst: zebra_evpn_acc_bd_evpn_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:877,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - acc_bd
    - zevpn
    - old_zevpn
    argTypes:
    - struct zebra_evpn_access_bd*
    - struct zebra_evpn*
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 703
    functionDepth: 4
    functionLinenumber: 703
    functionLinenumberEnd: 879
    functionName: zebra_evpn_acc_bd_evpn_set
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_vxl_evpn_set
    - zebra_evpn_local_es_evi_add
    - zebra_evpn_acc_vl_find_index
    - zebra_evpn_mac_svi_del
    - ALL_LIST_ELEMENTS_RO
    - ifindex_t
    - zebra_evpn_mac_svi_add
    - zlog_debug
    - list_delete_all_node
    - if
    - zebra_evpn_acc_vl_find
    - zebra_evpn_acc_bd_evpn_set
    - zebra_evpn_vl_vxl_ref
    - zebra_evpn_lookup
    - zebra_evpn_access_bd_bridge_cleanup
    - zebra_evpn_acc_bd_alloc_on_ref
    - zebra_evpn_local_es_evi_del
    - else
    - zebra_vxlan_if_vni_find
    - zebra_evpn_vl_vxl_deref
    - zebra_evpn_acc_bd_free_on_deref
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_acc_bd_evpn_set(struct zebra_evpn_access_bd *acc_bd,\n\t\t\t\t
      \      struct zebra_evpn *zevpn,\n\t\t\t\t       struct zebra_evpn *old_zevpn)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:901,1
    - Dst: zebra_evpn_acc_bd_alloc_on_ref
      Src: /src/frr/zebra/zebra_evpn_mh.c:903,1
    - Dst: listnode_lookup
      Src: /src/frr/zebra/zebra_evpn_mh.c:905,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:909,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:912,1
    - Dst: zebra_evpn_local_es_evi_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:914,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - vid
    - zif
    argTypes:
    - uint16_t
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 889
    functionDepth: 3
    functionLinenumber: 889
    functionLinenumberEnd: 915
    functionName: zebra_evpn_vl_mbr_ref
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - listnode_lookup
    - listnode_add
    - zlog_debug
    - zebra_evpn_local_es_evi_add
    - zebra_evpn_acc_bd_alloc_on_ref
    - zebra_evpn_acc_vl_find
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_vl_mbr_ref(uint16_t vid, struct zebra_if *zif)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:931,1
    - Dst: listnode_lookup
      Src: /src/frr/zebra/zebra_evpn_mh.c:935,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:940,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:943,1
    - Dst: zebra_evpn_local_es_evi_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:946,1
    - Dst: zebra_evpn_acc_bd_free_on_deref
      Src: /src/frr/zebra/zebra_evpn_mh.c:949,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - vid
    - zif
    argTypes:
    - uint16_t
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 918
    functionDepth: 4
    functionLinenumber: 918
    functionLinenumberEnd: 950
    functionName: zebra_evpn_vl_mbr_deref
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_local_es_evi_del
    - listnode_lookup
    - list_delete_node
    - zlog_debug
    - zebra_evpn_acc_bd_free_on_deref
    - zebra_evpn_acc_vl_find
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_vl_mbr_deref(uint16_t vid, struct zebra_if *zif)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_svi_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 952
    functionDepth: 1
    functionLinenumber: 952
    functionLinenumberEnd: 959
    functionName: zebra_evpn_acc_vl_adv_svi_mac_cb
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_svi_add
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_acc_vl_adv_svi_mac_cb(struct hash_bucket *bucket,\n\t\t\t\t\t
      \    void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mh.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 966
    functionName: zebra_evpn_acc_vl_adv_svi_mac_all
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_acc_vl_adv_svi_mac_all(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:971,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:973,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:976,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:978,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:979,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:988,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:989,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:990,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:991,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:993,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:995,1
    - Dst: zebra_evpn_acc_vl_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:999,1
    - Dst: zebra_evpn_acc_vl_json_fill
      Src: /src/frr/zebra/zebra_evpn_mh.c:1006,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1008,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1010,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1013,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1016,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1018,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1019,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1021,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:1022,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1023,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:1024,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1025,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1026,1
    - Dst: zebra_evpn_acc_vl_show_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:1030,1
    - Dst: zebra_evpn_acc_vl_json_fill
      Src: /src/frr/zebra/zebra_evpn_mh.c:1034,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1036,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:1041,1
    - Dst: zebra_evpn_acc_vl_show_hash
      Src: /src/frr/zebra/zebra_evpn_mh.c:1045,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:1052,1
    - Dst: zebra_evpn_acc_vl_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:1054,1
    - Dst: zebra_evpn_acc_vl_show_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:1056,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:1058,1
    - Dst: zebra_evpn_acc_vl_show
      Src: /src/frr/zebra/zebra_evpn_mh.c:1061,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:1067,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:1069,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1075,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mh.c:1078,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:1082,1
    - Dst: zebra_evpn_acc_vl_show_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:1085,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:1091,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:1092,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mh.c:1097,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:1101,1
    - Dst: zebra_evpn_acc_vl_show_vid
      Src: /src/frr/zebra/zebra_evpn_mh.c:1104,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:1111,1
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:1113,1
    - Dst: zebra_evpn_acc_vl_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:1115,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1118,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:1123,1
    - Dst: zebra_evpn_if_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:1131,1
    - Dst: zebra_evpn_is_if_es_capable
      Src: /src/frr/zebra/zebra_evpn_mh.c:1133,1
    - Dst: bf_is_inited
      Src: /src/frr/zebra/zebra_evpn_mh.c:1136,1
    - Dst: bf_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:1137,1
    - Dst: zebra_evpn_local_es_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1142,1
    - Dst: zebra_evpn_if_cleanup
      Src: /src/frr/zebra/zebra_evpn_mh.c:1148,1
    - Dst: bf_is_inited
      Src: /src/frr/zebra/zebra_evpn_mh.c:1153,1
    - Dst: bf_for_each_set_bit
      Src: /src/frr/zebra/zebra_evpn_mh.c:1154,1
    - Dst: zebra_evpn_vl_mbr_deref
      Src: /src/frr/zebra/zebra_evpn_mh.c:1156,1
    - Dst: bf_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:1159,1
    - Dst: zebra_evpn_local_es_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:1165,1
    - Dst: zebra_evpn_nhid_alloc
      Src: /src/frr/zebra/zebra_evpn_mh.c:1173,1
    - Dst: bf_assign_index
      Src: /src/frr/zebra/zebra_evpn_mh.c:1178,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_evpn_mh.c:1187,1
    - Dst: zebra_evpn_nhid_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:1195,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_evpn_mh.c:1203,1
    - Dst: bf_release_index
      Src: /src/frr/zebra/zebra_evpn_mh.c:1207,1
    - Dst: zebra_evpn_nh_ip_hash_keymake
      Src: /src/frr/zebra/zebra_evpn_mh.c:1210,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_evpn_mh.c:1214,1
    - Dst: zebra_evpn_nh_ip_cmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:1217,1
    - Dst: zebra_evpn_nhg_hash_keymake
      Src: /src/frr/zebra/zebra_evpn_mh.c:1231,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_evpn_mh.c:1235,1
    - Dst: zebra_evpn_nhg_cmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:1238,1
    - Dst: zebra_evpn_nhg_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:1253,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_evpn_mh.c:1259,1
    - Dst: zebra_evpn_nhg_is_local_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:1265,1
    - Dst: zebra_evpn_nhg_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:1270,1
    - Dst: zebra_evpn_nhg_mac_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1281,1
    - Dst: zebra_evpn_es_local_mac_via_network_port
      Src: /src/frr/zebra/zebra_evpn_mh.c:1287,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1289,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:1294,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:1295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:1296,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mh.c:1297,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1300,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_evpn_mh.c:1307,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1311,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn_mh.c:1317,1
    - Dst: zebra_evpn_nhg_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1325,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:1335,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:1342,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_evpn_mh.c:1355,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:1357,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1359,1
    - Dst: zebra_evpn_nhg_mac_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1370,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 61
    argCount: 3
    argNames:
    - acc_bd
    - json
    - detail
    argTypes:
    - struct zebra_evpn_access_bd*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 968
    functionDepth: 5
    functionLinenumber: 968
    functionLinenumberEnd: 1372
    functionName: zebra_evpn_acc_vl_json_fill
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_nh_ip_cmp
    - zebra_evpn_nhg_find
    - zebra_evpn_acc_vl_json_fill
    - zebra_evpn_acc_vl_show
    - zebra_evpn_rem_mac_install
    - zebra_evpn_es_local_mac_via_network_port
    - zebra_evpn_nhg_update
    - hash_lookup
    - jhash_1word
    - json_object_string_add
    - zebra_evpn_if_init
    - strlcat
    - zebra_evpn_acc_vl_show_detail
    - zebra_evpn_if_cleanup
    - zebra_evpn_nhg_mac_update
    - memset
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - zebra_evpn_acc_vl_show_entry_detail
    - zebra_evpn_nh_ip_hash_keymake
    - zebra_evpn_local_es_del
    - zlog_debug
    - zebra_evpn_local_es_update
    - zebra_evpn_mac_is_static
    - hash_iterate
    - hash_get
    - zebra_evpn_acc_vl_find
    - zebra_evpn_nhid_free
    - bf_for_each_set_bit
    - bf_release_index
    - vty_out
    - zebra_evpn_nhg_is_local_es
    - bf_is_inited
    - listcount
    - json_object_int_add
    - zebra_evpn_nhg_cmp
    - zebra_evpn_is_if_es_capable
    - hash_release
    - bf_assign_index
    - json_object_new_array
    - json_object_new_object
    - zebra_evpn_acc_vl_show_vid
    - json_object_array_add
    - zebra_evpn_vl_mbr_deref
    - bf_init
    - zebra_evpn_nhid_alloc
    - CHECK_FLAG
    - zebra_evpn_acc_vl_show_hash
    - bf_free
    - json_object_object_add
    - zebra_evpn_acc_vl_show_entry
    - zebra_evpn_nhg_hash_keymake
    - zebra_evpn_rem_mac_uninstall
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_acc_vl_json_fill(struct zebra_evpn_access_bd *acc_bd,\n\t\t\t\t\tjson_object
      *json, bool detail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_l2_nh_show_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:1413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1408
    functionDepth: 0
    functionLinenumber: 1408
    functionLinenumberEnd: 1414
    functionName: zebra_evpn_l2_nh_show_cb
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_l2_nh_show_entry
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_l2_nh_show_cb(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:1422,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:1424,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:1427,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mh.c:1431,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:1434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - uj
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1416
    functionDepth: 1
    functionLinenumber: 1416
    functionLinenumberEnd: 1435
    functionName: zebra_evpn_l2_nh_show
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - vty_out
    - memset
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_l2_nh_show(struct vty *vty, bool uj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_evpn_mh.c:1443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vtep_ip
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1437
    functionDepth: 1
    functionLinenumber: 1437
    functionLinenumberEnd: 1446
    functionName: zebra_evpn_l2_nh_find
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct zebra_evpn_l2_nh
    signature: struct zebra_evpn_l2_nh *zebra_evpn_l2_nh_find(struct in_addr vtep_ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_mh.c:1452,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_evpn_mh.c:1454,1
    - Dst: zebra_evpn_nhid_alloc
      Src: /src/frr/zebra/zebra_evpn_mh.c:1456,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_evpn_mh.c:1458,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mh.c:1459,1
    - Dst: kernel_upd_mac_nh
      Src: /src/frr/zebra/zebra_evpn_mh.c:1464,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - vtep_ip
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1448
    functionDepth: 1
    functionLinenumber: 1448
    functionLinenumberEnd: 1467
    functionName: zebra_evpn_l2_nh_alloc
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_nhid_alloc
    - XCALLOC
    - XFREE
    - hash_release
    - hash_get
    - kernel_upd_mac_nh
    linkageType: ''
    returnType: struct zebra_evpn_l2_nh
    signature: struct zebra_evpn_l2_nh *zebra_evpn_l2_nh_alloc(struct in_addr vtep_ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: kernel_del_mac_nh
      Src: /src/frr/zebra/zebra_evpn_mh.c:1472,1
    - Dst: zebra_evpn_nhid_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:1474,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_evpn_mh.c:1475,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mh.c:1476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct zebra_evpn_l2_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1469
    functionDepth: 1
    functionLinenumber: 1469
    functionLinenumberEnd: 1477
    functionName: zebra_evpn_l2_nh_free
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - hash_release
    - kernel_del_mac_nh
    - zebra_evpn_nhid_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_l2_nh_free(struct zebra_evpn_l2_nh *nh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_l2_nh_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:1484,1
    - Dst: zebra_evpn_l2_nh_alloc
      Src: /src/frr/zebra/zebra_evpn_mh.c:1486,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_evpn_mh.c:1489,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1497,1
    - Dst: zebra_evpn_nhg_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1502,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - es_vtep
    argTypes:
    - struct zebra_evpn_es_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1479
    functionDepth: 2
    functionLinenumber: 1479
    functionLinenumberEnd: 1503
    functionName: zebra_evpn_l2_nh_es_vtep_ref
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_l2_nh_alloc
    - zebra_evpn_l2_nh_find
    - zebra_evpn_nhg_update
    - zlog_warn
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_l2_nh_es_vtep_ref(struct zebra_evpn_es_vtep *es_vtep)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1517,1
    - Dst: zebra_evpn_nhg_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1522,1
    - Dst: zebra_evpn_l2_nh_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:1526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - es_vtep
    argTypes:
    - struct zebra_evpn_es_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1505
    functionDepth: 2
    functionLinenumber: 1505
    functionLinenumberEnd: 1527
    functionName: zebra_evpn_l2_nh_es_vtep_deref
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_evpn_nhg_update
    - zebra_evpn_l2_nh_free
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_l2_nh_es_vtep_deref(struct zebra_evpn_es_vtep *es_vtep)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1545
    functionDepth: 0
    functionLinenumber: 1545
    functionLinenumberEnd: 1551
    functionName: zebra_evpn_es_vtep_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_es_vtep_cmp(void *p1, void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_mh.c:1558,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:1562,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_evpn_mh.c:1563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - es
    - vtep_ip
    argTypes:
    - struct zebra_evpn_es*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1566
      start: 1553
    functionDepth: 1
    functionLinenumber: 1553
    functionLinenumberEnd: 1566
    functionName: zebra_evpn_es_vtep_new
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - listnode_init
    - listnode_add_sort
    - XCALLOC
    linkageType: ''
    returnType: struct zebra_evpn_es_vtep
    signature: "struct zebra_evpn_es_vtep *zebra_evpn_es_vtep_new(\n\t\tstruct zebra_evpn_es
      *es, struct in_addr vtep_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:1572,1
    - Dst: zebra_evpn_l2_nh_es_vtep_deref
      Src: /src/frr/zebra/zebra_evpn_mh.c:1574,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mh.c:1575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - es_vtep
    argTypes:
    - struct zebra_evpn_es_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1568
    functionDepth: 3
    functionLinenumber: 1568
    functionLinenumberEnd: 1576
    functionName: zebra_evpn_es_vtep_free
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - list_delete_node
    - XFREE
    - zebra_evpn_l2_nh_es_vtep_deref
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_vtep_free(struct zebra_evpn_es_vtep *es_vtep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:1586,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:1598,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:1601,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1602,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:1604,1
    - Dst: dplane_br_port_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1605,1
    - Dst: zebra_evpn_es_br_port_dplane_update_needed
      Src: /src/frr/zebra/zebra_evpn_mh.c:1611,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:1615,1
    - Dst: zebra_evpn_es_br_port_dplane_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1619,1
    - Dst: zebra_evpn_es_br_port_dplane_clear
      Src: /src/frr/zebra/zebra_evpn_mh.c:1629,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1638,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:1642,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1645,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:1649,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_evpn_mh.c:1650,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:1651,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:1654,1
    - Dst: dplane_br_port_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1665,1
    - Dst: zebra_evpn_es_df_change
      Src: /src/frr/zebra/zebra_evpn_mh.c:1672,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1680,1
    - Dst: zebra_evpn_es_br_port_dplane_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1693,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:1698,1
    - Dst: zebra_evpn_es_df_change
      Src: /src/frr/zebra/zebra_evpn_mh.c:1711,1
    - Dst: zebra_evpn_es_df_change
      Src: /src/frr/zebra/zebra_evpn_mh.c:1720,1
    - Dst: zebra_evpn_es_df_change
      Src: /src/frr/zebra/zebra_evpn_mh.c:1730,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:1734,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 3
    argCount: 2
    argNames:
    - es
    - vtep_ip
    argTypes:
    - struct zebra_evpn_es*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1580
    functionDepth: 1
    functionLinenumber: 1580
    functionLinenumberEnd: 1764
    functionName: zebra_evpn_es_vtep_find
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_run_df_election
    - zebra_evpn_es_br_port_dplane_clear
    - memset
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - zebra_evpn_es_br_port_dplane_update
    - zlog_debug
    - zlog_warn
    - dplane_br_port_update
    - if
    - zebra_evpn_es_df_change
    - zebra_evpn_es_br_port_dplane_update_needed
    linkageType: ''
    returnType: struct zebra_evpn_es_vtep
    signature: "struct zebra_evpn_es_vtep *zebra_evpn_es_vtep_find(\n\t\tstruct zebra_evpn_es
      *es, struct in_addr vtep_ip)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_vtep_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:1774,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1778,1
    - Dst: zebra_evpn_es_vtep_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:1780,1
    - Dst: zebra_evpn_l2_nh_es_vtep_ref
      Src: /src/frr/zebra/zebra_evpn_mh.c:1782,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:1797,1
    - Dst: zebra_evpn_es_br_port_dplane_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1801,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 5
    argNames:
    - es
    - vtep_ip
    - esr_rxed
    - df_alg
    - df_pref
    argTypes:
    - struct zebra_evpn_es*
    - struct in_addr
    - bool
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1766
    functionDepth: 3
    functionLinenumber: 1766
    functionLinenumberEnd: 1802
    functionName: zebra_evpn_es_vtep_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_vtep_new
    - zebra_evpn_es_run_df_election
    - zebra_evpn_l2_nh_es_vtep_ref
    - zebra_evpn_es_vtep_find
    - zebra_evpn_es_br_port_dplane_update
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_es_vtep_add(struct zebra_evpn_es *es,\n\t\t\t\t   struct
      in_addr vtep_ip, bool esr_rxed,\n\t\t\t\t   uint8_t df_alg, uint16_t df_pref)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_vtep_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:1810,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1814,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:1820,1
    - Dst: zebra_evpn_es_br_port_dplane_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:1824,1
    - Dst: zebra_evpn_es_vtep_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:1825,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - es
    - vtep_ip
    argTypes:
    - struct zebra_evpn_es*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1804
    functionDepth: 4
    functionLinenumber: 1804
    functionLinenumberEnd: 1827
    functionName: zebra_evpn_es_vtep_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_run_df_election
    - zebra_evpn_es_vtep_find
    - zebra_evpn_es_br_port_dplane_update
    - zlog_debug
    - zebra_evpn_es_vtep_free
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_es_vtep_del(struct zebra_evpn_es *es,\n\t\tstruct
      in_addr vtep_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:1833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - es1
    - es2
    argTypes:
    - struct zebra_evpn_es*
    - struct zebra_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1830
    functionDepth: 0
    functionLinenumber: 1830
    functionLinenumberEnd: 1834
    functionName: zebra_es_rb_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int zebra_es_rb_cmp(const struct zebra_evpn_es *es1,\n\t\tconst struct
      zebra_evpn_es *es2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mh.c:1842,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_evpn_mh.c:1843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - esi
    argTypes:
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1838
    functionDepth: 1
    functionLinenumber: 1838
    functionLinenumberEnd: 1844
    functionName: zebra_evpn_es_find
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - memcpy
    linkageType: ''
    returnType: struct zebra_evpn_es
    signature: struct zebra_evpn_es *zebra_evpn_es_find(const esi_t *esi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:1853,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_mh.c:1856,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mh.c:1859,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:1860,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_evpn_mh.c:1863,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:1866,1
    - Dst: listset_app_node_mem
      Src: /src/frr/zebra/zebra_evpn_mh.c:1867,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:1870,1
    - Dst: listset_app_node_mem
      Src: /src/frr/zebra/zebra_evpn_mh.c:1871,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:1875,1
    - Dst: listset_app_node_mem
      Src: /src/frr/zebra/zebra_evpn_mh.c:1876,1
    - Dst: zebra_evpn_nhid_alloc
      Src: /src/frr/zebra/zebra_evpn_mh.c:1879,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1882,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - esi
    argTypes:
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1885
      start: 1849
    functionDepth: 1
    functionLinenumber: 1849
    functionLinenumberEnd: 1885
    functionName: zebra_evpn_es_new
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_nhid_alloc
    - XCALLOC
    - esi_to_str
    - RB_INSERT
    - memcmp
    - zlog_debug
    - list_new
    - listset_app_node_mem
    - memcpy
    linkageType: ''
    returnType: struct zebra_evpn_es
    signature: struct zebra_evpn_es *zebra_evpn_es_new(const esi_t *esi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:1900,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1904,1
    - Dst: kernel_del_mac_nhg
      Src: /src/frr/zebra/zebra_evpn_mh.c:1909,1
    - Dst: zebra_evpn_nhid_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:1911,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mh.c:1914,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mh.c:1915,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mh.c:1916,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_evpn_mh.c:1919,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mh.c:1921,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - esp
    argTypes:
    - struct zebra_evpn_es**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1891
    functionDepth: 1
    functionLinenumber: 1891
    functionLinenumberEnd: 1924
    functionName: zebra_evpn_es_free
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - list_delete
    - RB_REMOVE
    - listcount
    - zlog_debug
    - kernel_del_mac_nhg
    - XFREE
    - zebra_evpn_nhid_free
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_free(struct zebra_evpn_es **esp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:1934,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:1939,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_evpn_mh.c:1941,1
    - Dst: zebra_vrf_get_evpn_id
      Src: /src/frr/zebra/zebra_evpn_mh.c:1941,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn_mh.c:1942,1
    - Dst: stream_put_ipv4
      Src: /src/frr/zebra/zebra_evpn_mh.c:1943,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_evpn_mh.c:1945,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_evpn_mh.c:1946,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_evpn_mh.c:1948,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_evpn_mh.c:1951,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_evpn_mh.c:1951,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1954,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_evpn_mh.c:1958,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_evpn_mh.c:1961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct zebra_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1927
    functionDepth: 1
    functionLinenumber: 1927
    functionLinenumberEnd: 1962
    functionName: zebra_evpn_es_send_add_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zserv_find_client
    - stream_new
    - stream_put
    - zclient_create_header
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zserv_send_message
    - zlog_debug
    - stream_put_ipv4
    - zebra_route_string
    - stream_putc
    - zebra_vrf_get_evpn_id
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_es_send_add_to_client(struct zebra_evpn_es *es)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:1970,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:1975,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zebra_evpn_mh.c:1976,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_evpn_mh.c:1978,1
    - Dst: zebra_vrf_get_evpn_id
      Src: /src/frr/zebra/zebra_evpn_mh.c:1978,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn_mh.c:1979,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_evpn_mh.c:1982,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_evpn_mh.c:1982,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:1985,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_evpn_mh.c:1986,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_evpn_mh.c:1989,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct zebra_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1965
    functionDepth: 1
    functionLinenumber: 1965
    functionLinenumberEnd: 1990
    functionName: zebra_evpn_es_send_del_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zserv_find_client
    - stream_new
    - zclient_create_header
    - stream_put
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_reset
    - zebra_route_string
    - zebra_vrf_get_evpn_id
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_es_send_del_to_client(struct zebra_evpn_es *es)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2013,1
    - Dst: zebra_evpn_es_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2015,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:2019,1
    - Dst: zebra_evpn_es_evi_re_eval_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2022,1
    - Dst: zebra_evpn_es_send_all_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2027,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:2037,1
    - Dst: zebra_evpn_es_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2040,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:2041,1
    - Dst: zebra_evpn_es_evi_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2048,1
    - Dst: zebra_evpn_es_evi_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2052,1
    - Dst: zebra_evpn_es_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2057,1
    - Dst: zebra_evpn_es_setup_evis
      Src: /src/frr/zebra/zebra_evpn_mh.c:2066,1
    - Dst: bf_is_inited
      Src: /src/frr/zebra/zebra_evpn_mh.c:2072,1
    - Dst: bf_for_each_set_bit
      Src: /src/frr/zebra/zebra_evpn_mh.c:2075,1
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:2076,1
    - Dst: zebra_evpn_local_es_evi_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2078,1
    - Dst: zebra_evpn_flush_local_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2082,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:2097,1
    - Dst: dplane_local_mac_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2104,1
    - Dst: zebra_evpn_del_local_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2106,1
    - Dst: zebra_evpn_es_flush_local_macs
      Src: /src/frr/zebra/zebra_evpn_mh.c:2109,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn_mh.c:2116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2117,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2124,1
    - Dst: zebra_evpn_flush_local_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2128,1
    - Dst: zebra_evpn_es_local_br_port_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2132,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2148,1
    - Dst: zebra_evpn_es_br_port_dplane_update_needed
      Src: /src/frr/zebra/zebra_evpn_mh.c:2152,1
    - Dst: zebra_evpn_es_br_port_dplane_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2153,1
    - Dst: zebra_evpn_mh_dup_addr_detect_off
      Src: /src/frr/zebra/zebra_evpn_mh.c:2157,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:2166,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_evpn_mh.c:2167,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_evpn_mh.c:2169,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2172,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2173,1
    - Dst: zebra_vxlan_clear_dup_detect_vni_all
      Src: /src/frr/zebra/zebra_evpn_mh.c:2177,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2206,1
    - Dst: zebra_evpn_acc_vl_adv_svi_mac_all
      Src: /src/frr/zebra/zebra_evpn_mh.c:2209,1
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2216,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2219,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2221,1
    - Dst: zebra_evpn_mh_dup_addr_detect_off
      Src: /src/frr/zebra/zebra_evpn_mh.c:2230,1
    - Dst: zebra_evpn_mh_advertise_reach_neigh_only
      Src: /src/frr/zebra/zebra_evpn_mh.c:2231,1
    - Dst: zebra_evpn_mh_advertise_svi_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2232,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2242,1
    - Dst: zebra_evpn_mh_on_first_local_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:2245,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:2248,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2249,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn_mh.c:2258,1
    - Dst: zebra_evpn_es_get_one_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:2272,1
    - Dst: zebra_evpn_es_re_eval_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2275,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_evpn_mh.c:2280,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2285,1
    - Dst: zebra_evpn_es_br_port_dplane_update_needed
      Src: /src/frr/zebra/zebra_evpn_mh.c:2289,1
    - Dst: zebra_evpn_es_br_port_dplane_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2290,1
    - Dst: zebra_evpn_es_setup_evis
      Src: /src/frr/zebra/zebra_evpn_mh.c:2297,1
    - Dst: zebra_evpn_es_flush_local_macs
      Src: /src/frr/zebra/zebra_evpn_mh.c:2301,1
    - Dst: zebra_evpn_mh_update_protodown_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:2304,1
    - Dst: zebra_evpn_es_flush_local_macs
      Src: /src/frr/zebra/zebra_evpn_mh.c:2321,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_mh.c:2325,1
    - Dst: zebra_evpn_mh_clear_protodown_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:2328,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2331,1
    - Dst: zebra_evpn_es_br_port_dplane_clear
      Src: /src/frr/zebra/zebra_evpn_mh.c:2335,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:2346,1
    - Dst: zebra_evpn_es_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:2349,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2361,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2366,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn_mh.c:2371,1
    - Dst: zebra_evpn_local_es_evi_do_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2372,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2375,1
    - Dst: zebra_evpn_es_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2376,1
    - Dst: zebra_evpn_es_local_info_clear
      Src: /src/frr/zebra/zebra_evpn_mh.c:2378,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2387,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:2387,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2390,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2391,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2398,1
    - Dst: zebra_evpn_es_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:2400,1
    - Dst: zebra_evpn_local_es_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2408,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:2413,1
    - Dst: zebra_evpn_local_es_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2419,1
    - Dst: zebra_evpn_es_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:2421,1
    - Dst: zebra_evpn_es_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:2428,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mh.c:2431,1
    - Dst: zebra_evpn_es_local_info_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:2433,1
    - Dst: zebra_evpn_type3_esi_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2438,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2447,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:2449,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mh.c:2464,1
    - Dst: zebra_evpn_local_es_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2471,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 97
    argCount: 2
    argNames:
    - es
    - es_evi_re_reval
    argTypes:
    - struct zebra_evpn_es*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 1992
    functionDepth: 3
    functionLinenumber: 1992
    functionLinenumberEnd: 2472
    functionName: zebra_evpn_es_re_eval_send_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_es_br_port_dplane_clear
    - zebra_evpn_es_re_eval_send_to_client
    - zebra_evpn_do_dup_addr_detect
    - zebra_evpn_es_get_one_base_evpn
    - zebra_vrf_get_evpn
    - listnode_add
    - zebra_evpn_es_setup_evis
    - memcmp
    - zebra_evpn_local_es_evi_add
    - zebra_evpn_es_local_info_clear
    - zebra_evpn_es_send_all_to_client
    - zebra_evpn_mh_on_first_local_es
    - listnode_init
    - zebra_evpn_es_evi_send_to_client
    - zebra_evpn_acc_vl_adv_svi_mac_all
    - zebra_evpn_type3_esi_update
    - zebra_evpn_mh_advertise_svi_mac
    - zebra_evpn_local_es_evi_do_del
    - memset
    - zebra_evpn_es_free
    - ALL_LIST_ELEMENTS_RO
    - zebra_evpn_mh_dup_addr_detect_off
    - zebra_evpn_mh_advertise_reach_neigh_only
    - zebra_evpn_local_es_del
    - zlog_debug
    - zebra_evpn_es_evi_re_eval_send_to_client
    - zebra_evpn_local_es_update
    - zebra_evpn_mh_clear_protodown_es
    - EVENT_ARG
    - if
    - zebra_vxlan_clear_dup_detect_vni_all
    - zebra_evpn_es_send_del_to_client
    - zebra_evpn_acc_vl_find
    - bf_for_each_set_bit
    - zebra_evpn_es_run_df_election
    - zebra_evpn_es_find
    - bf_is_inited
    - zebra_evpn_flush_local_mac
    - dplane_local_mac_del
    - listcount
    - zebra_evpn_es_br_port_dplane_update
    - is_zero_mac
    - zebra_evpn_es_local_br_port_update
    - list_delete_node
    - EVENT_OFF
    - zebra_evpn_es_send_add_to_client
    - event_add_timer
    - zebra_evpn_es_new
    - zebra_evpn_es_br_port_dplane_update_needed
    - memcpy
    - CHECK_FLAG
    - zebra_evpn_es_local_info_set
    - zebra_evpn_es_flush_local_macs
    - zebra_evpn_del_local_mac
    - zebra_vxlan_if_vni_find
    - zebra_evpn_mh_update_protodown_es
    - ALL_LIST_ELEMENTS
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_es_re_eval_send_to_client(struct zebra_evpn_es *es,\n\t\tbool
      es_evi_re_reval)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2206,1
    - Dst: zebra_evpn_acc_vl_adv_svi_mac_all
      Src: /src/frr/zebra/zebra_evpn_mh.c:2209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2210
      start: 2199
    functionDepth: 2
    functionLinenumber: 2199
    functionLinenumberEnd: 2210
    functionName: zebra_evpn_mh_advertise_svi_mac
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - zebra_evpn_acc_vl_adv_svi_mac_all
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_advertise_svi_mac(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2216,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2219,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2222
      start: 2212
    functionDepth: 1
    functionLinenumber: 2212
    functionLinenumberEnd: 2222
    functionName: zebra_evpn_es_df_delay_exp_cb
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_evpn_es_run_df_election
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_df_delay_exp_cb(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mh_dup_addr_detect_off
      Src: /src/frr/zebra/zebra_evpn_mh.c:2230,1
    - Dst: zebra_evpn_mh_advertise_reach_neigh_only
      Src: /src/frr/zebra/zebra_evpn_mh.c:2231,1
    - Dst: zebra_evpn_mh_advertise_svi_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2233
      start: 2228
    functionDepth: 3
    functionLinenumber: 2228
    functionLinenumberEnd: 2233
    functionName: zebra_evpn_mh_on_first_local_es
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_mh_advertise_reach_neigh_only
    - zebra_evpn_mh_advertise_svi_mac
    - zebra_evpn_mh_dup_addr_detect_off
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_on_first_local_es(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2242,1
    - Dst: zebra_evpn_mh_on_first_local_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:2245,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:2248,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2249,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn_mh.c:2258,1
    - Dst: zebra_evpn_es_get_one_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:2272,1
    - Dst: zebra_evpn_es_re_eval_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2275,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_evpn_mh.c:2280,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2285,1
    - Dst: zebra_evpn_es_br_port_dplane_update_needed
      Src: /src/frr/zebra/zebra_evpn_mh.c:2289,1
    - Dst: zebra_evpn_es_br_port_dplane_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2290,1
    - Dst: zebra_evpn_es_setup_evis
      Src: /src/frr/zebra/zebra_evpn_mh.c:2297,1
    - Dst: zebra_evpn_es_flush_local_macs
      Src: /src/frr/zebra/zebra_evpn_mh.c:2301,1
    - Dst: zebra_evpn_mh_update_protodown_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:2304,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - es
    - zif
    argTypes:
    - struct zebra_evpn_es*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2235
    functionDepth: 4
    functionLinenumber: 2235
    functionLinenumberEnd: 2305
    functionName: zebra_evpn_es_local_info_set
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_mh_update_protodown_es
    - zebra_evpn_es_run_df_election
    - zebra_evpn_es_re_eval_send_to_client
    - zebra_evpn_es_get_one_base_evpn
    - zebra_evpn_es_br_port_dplane_update
    - zebra_evpn_es_flush_local_macs
    - listnode_add
    - if_is_operative
    - zebra_evpn_es_setup_evis
    - zlog_debug
    - zebra_evpn_es_br_port_dplane_update_needed
    - event_add_timer
    - zebra_evpn_mh_on_first_local_es
    - listnode_init
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_es_local_info_set(struct zebra_evpn_es *es,\n\t\tstruct
      zebra_if *zif)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_flush_local_macs
      Src: /src/frr/zebra/zebra_evpn_mh.c:2321,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_mh.c:2325,1
    - Dst: zebra_evpn_mh_clear_protodown_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:2328,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2331,1
    - Dst: zebra_evpn_es_br_port_dplane_clear
      Src: /src/frr/zebra/zebra_evpn_mh.c:2335,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:2346,1
    - Dst: zebra_evpn_es_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:2349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - esp
    argTypes:
    - struct zebra_evpn_es**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2307
    functionDepth: 2
    functionLinenumber: 2307
    functionLinenumberEnd: 2350
    functionName: zebra_evpn_es_local_info_clear
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_es_run_df_election
    - zebra_evpn_es_br_port_dplane_clear
    - zebra_evpn_es_free
    - zebra_evpn_es_flush_local_macs
    - list_delete_node
    - EVENT_OFF
    - zebra_evpn_mh_clear_protodown_es
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_local_info_clear(struct zebra_evpn_es **esp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2361,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2366,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn_mh.c:2371,1
    - Dst: zebra_evpn_local_es_evi_do_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2372,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2375,1
    - Dst: zebra_evpn_es_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2376,1
    - Dst: zebra_evpn_es_local_info_clear
      Src: /src/frr/zebra/zebra_evpn_mh.c:2378,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2387,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:2387,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2390,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2391,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2398,1
    - Dst: zebra_evpn_es_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:2400,1
    - Dst: zebra_evpn_local_es_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2408,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:2413,1
    - Dst: zebra_evpn_local_es_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2419,1
    - Dst: zebra_evpn_es_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:2421,1
    - Dst: zebra_evpn_es_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:2428,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mh.c:2431,1
    - Dst: zebra_evpn_es_local_info_set
      Src: /src/frr/zebra/zebra_evpn_mh.c:2433,1
    - Dst: zebra_evpn_type3_esi_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2438,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2447,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:2449,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - esp
    argTypes:
    - struct zebra_evpn_es**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2454
      start: 2353
    functionDepth: 5
    functionLinenumber: 2353
    functionLinenumberEnd: 2454
    functionName: zebra_evpn_local_es_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 3
    functionsReached:
    - memcmp
    - zebra_evpn_type3_esi_update
    - zebra_evpn_local_es_evi_do_del
    - memset
    - zebra_evpn_es_free
    - zebra_evpn_local_es_del
    - zlog_debug
    - zebra_evpn_local_es_update
    - if
    - zebra_evpn_es_send_del_to_client
    - zebra_evpn_es_find
    - listcount
    - is_zero_mac
    - zebra_evpn_es_new
    - memcpy
    - CHECK_FLAG
    - zebra_evpn_es_local_info_set
    - zebra_evpn_es_local_info_clear
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_local_es_del(struct zebra_evpn_es **esp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2480,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2481,1
    - Dst: zebra_evpn_es_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:2483,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_evpn_mh.c:2485,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2486,1
    - Dst: zebra_evpn_es_vtep_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2490,1
    - Dst: zebra_evpn_es_remote_info_re_eval
      Src: /src/frr/zebra/zebra_evpn_mh.c:2491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - esi
    - vtep_ip
    argTypes:
    - esi_t*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2474
    functionDepth: 5
    functionLinenumber: 2474
    functionLinenumberEnd: 2494
    functionName: zebra_evpn_remote_es_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_vtep_del
    - zebra_evpn_es_find
    - zebra_evpn_es_remote_info_re_eval
    - esi_to_str
    - zlog_debug
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_remote_es_del(const esi_t *esi, struct in_addr vtep_ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn_mh.c:2504,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2506,1
    - Dst: zebra_evpn_es_vtep_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:2509,1
    - Dst: zebra_evpn_es_remote_info_re_eval
      Src: /src/frr/zebra/zebra_evpn_mh.c:2511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - esp
    argTypes:
    - struct zebra_evpn_es**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2497
    functionDepth: 4
    functionLinenumber: 2497
    functionLinenumberEnd: 2512
    functionName: zebra_evpn_remote_es_flush
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - zlog_debug
    - zebra_evpn_es_remote_info_re_eval
    - zebra_evpn_es_vtep_free
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_remote_es_flush(struct zebra_evpn_es **esp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2521,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2522,1
    - Dst: zebra_evpn_es_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:2526,1
    - Dst: zebra_evpn_es_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:2528,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_evpn_mh.c:2530,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2532,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_evpn_mh.c:2538,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2540,1
    - Dst: zebra_evpn_es_vtep_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2543,1
    - Dst: zebra_evpn_es_remote_info_re_eval
      Src: /src/frr/zebra/zebra_evpn_mh.c:2544,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - esi
    - vtep_ip
    - esr_rxed
    - df_alg
    - df_pref
    argTypes:
    - esi_t*
    - struct in_addr
    - bool
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2514
    functionDepth: 4
    functionLinenumber: 2514
    functionLinenumberEnd: 2547
    functionName: zebra_evpn_remote_es_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_find
    - zebra_evpn_es_remote_info_re_eval
    - esi_to_str
    - zlog_debug
    - zlog_warn
    - zebra_evpn_es_vtep_add
    - zebra_evpn_es_new
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_remote_es_add(const esi_t *esi, struct in_addr vtep_ip,\n\t\t\t
      \    bool esr_rxed, uint8_t df_alg, uint16_t df_pref)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_evpn_mh.c:2555,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2556,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:2562,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_evpn_mh.c:2565,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_evpn_mh.c:2566,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_evpn_mh.c:2574,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_evpn_mh.c:2577,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_evpn_mh.c:2578,1
    - Dst: zebra_rib_queue_evpn_rem_es_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2579,1
    - Dst: zebra_rib_queue_evpn_rem_es_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2587
      start: 2549
    functionDepth: 1
    functionLinenumber: 2549
    functionLinenumberEnd: 2587
    functionName: zebra_evpn_proc_remote_es
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memset
    - zebra_rib_queue_evpn_rem_es_del
    - zebra_rib_queue_evpn_rem_es_add
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - is_evpn_enabled
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_proc_remote_es(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mh.c:2597,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:2598,1
    - Dst: zebra_evpn_es_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:2599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2600
      start: 2589
    functionDepth: 2
    functionLinenumber: 2589
    functionLinenumberEnd: 2600
    functionName: zebra_evpn_es_mac_deref_entry
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_free
    - list_delete_node
    - listcount
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_mac_deref_entry(struct zebra_mac *mac)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_mac_deref_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:2612,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:2618,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - mac
    - es
    argTypes:
    - struct zebra_mac*
    - struct zebra_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2622
      start: 2605
    functionDepth: 3
    functionLinenumber: 2605
    functionLinenumberEnd: 2622
    functionName: zebra_evpn_es_mac_ref_entry
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_mac_deref_entry
    - listnode_init
    - listnode_add
    linkageType: ''
    returnType: bool
    signature: "bool zebra_evpn_es_mac_ref_entry(struct zebra_mac *mac,\n\t\t\t\t
      struct zebra_evpn_es *es)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:2628,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:2631,1
    - Dst: zebra_evpn_es_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:2632,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2634,1
    - Dst: zebra_evpn_es_mac_ref_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:2639,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - mac
    - esi
    argTypes:
    - struct zebra_mac*
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2640
      start: 2624
    functionDepth: 4
    functionLinenumber: 2624
    functionLinenumberEnd: 2640
    functionName: zebra_evpn_es_mac_ref
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_find
    - zebra_evpn_es_mac_ref_entry
    - memcmp
    - zlog_debug
    - zebra_evpn_es_new
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_es_mac_ref(struct zebra_mac *mac, const esi_t *esi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2649,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:2654,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_evpn_mh.c:2656,1
    - Dst: zebra_vrf_get_evpn_id
      Src: /src/frr/zebra/zebra_evpn_mh.c:2658,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn_mh.c:2659,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn_mh.c:2660,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_evpn_mh.c:2663,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_evpn_mh.c:2663,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2666,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_evpn_mh.c:2669,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_evpn_mh.c:2672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - es
    - zevpn
    - add
    argTypes:
    - struct zebra_evpn_es*
    - struct zebra_evpn*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2673
      start: 2643
    functionDepth: 1
    functionLinenumber: 2643
    functionLinenumberEnd: 2673
    functionName: zebra_evpn_es_evi_send_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 3
    functionsReached:
    - zserv_find_client
    - stream_new
    - stream_put
    - zclient_create_header
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_putl
    - zebra_route_string
    - zebra_vrf_get_evpn_id
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_es_evi_send_to_client(struct zebra_evpn_es *es,\n\t\t\t\t\t
      \   struct zebra_evpn *zevpn, bool add)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_type3_esi_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2681,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mh.c:2683,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - zif
    - sysmac
    argTypes:
    - struct zebra_if*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2676
    functionDepth: 0
    functionLinenumber: 2676
    functionLinenumberEnd: 2686
    functionName: zebra_evpn_es_sys_mac_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memcpy
    - zebra_evpn_type3_esi_update
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_es_sys_mac_update(struct zebra_if *zif,\n\t\tstruct
      ethaddr *sysmac)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_type3_esi_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - zif
    - lid
    argTypes:
    - struct zebra_if*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2689
    functionDepth: 0
    functionLinenumber: 2689
    functionLinenumberEnd: 2698
    functionName: zebra_evpn_es_lid_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_type3_esi_update
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_es_lid_update(struct zebra_if *zif, uint32_t lid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_local_es_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2705,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:2710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - zif
    - esi
    argTypes:
    - struct zebra_if*
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2714
      start: 2701
    functionDepth: 0
    functionLinenumber: 2701
    functionLinenumberEnd: 2714
    functionName: zebra_evpn_es_type0_esi_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_local_es_update
    - memset
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_es_type0_esi_update(struct zebra_if *zif, esi_t *esi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_evpn_mh.c:2721,1
    - Dst: zebra_evpn_local_es_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:2723,1
    - Dst: zebra_evpn_remote_es_flush
      Src: /src/frr/zebra/zebra_evpn_mh.c:2725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2727
      start: 2716
    functionDepth: 6
    functionLinenumber: 2716
    functionLinenumberEnd: 2727
    functionName: zebra_evpn_es_cleanup
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_local_es_del
    - RB_FOREACH_SAFE
    - zebra_evpn_remote_es_flush
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_cleanup(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2751,1
    - Dst: zebra_evpn_es_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - zif
    - df_pref
    argTypes:
    - struct zebra_if*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2755
      start: 2729
    functionDepth: 2
    functionLinenumber: 2729
    functionLinenumberEnd: 2755
    functionName: zebra_evpn_es_df_pref_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_send_add_to_client
    - zebra_evpn_es_run_df_election
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_df_pref_update(struct zebra_if *zif, uint16_t df_pref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn_mh.c:2769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2770,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2773,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2774,1
    - Dst: zebra_evpn_flush_local_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2779,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn_mh.c:2789,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2790,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2794,1
    - Dst: zebra_evpn_flush_local_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2798,1
    - Dst: zebra_evpn_es_bypass_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2802,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2818,1
    - Dst: zebra_evpn_es_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:2823,1
    - Dst: zebra_evpn_es_bypass_update_macs
      Src: /src/frr/zebra/zebra_evpn_mh.c:2825,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:2828,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:2832,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 3
    argNames:
    - es
    - ifp
    - bypass
    argTypes:
    - struct zebra_evpn_es*
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2834
      start: 2760
    functionDepth: 2
    functionLinenumber: 2760
    functionLinenumberEnd: 2834
    functionName: zebra_evpn_es_bypass_update_macs
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_es_run_df_election
    - zebra_evpn_flush_local_mac
    - CHECK_FLAG
    - zebra_evpn_es_send_add_to_client
    - zebra_evpn_es_bypass_update_macs
    - listcount
    - zlog_debug
    - zebra_evpn_es_bypass_update
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_es_bypass_update_macs(struct zebra_evpn_es *es,\n\t\t\t\t\t
      \    struct interface *ifp, bool bypass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_bypass_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:2850,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - zif
    - bypass
    argTypes:
    - struct zebra_if*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2851
      start: 2836
    functionDepth: 0
    functionLinenumber: 2836
    functionLinenumberEnd: 2851
    functionName: zebra_evpn_es_bypass_cfg_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_bypass_update
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_bypass_cfg_update(struct zebra_if *zif, bool bypass)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2868
      start: 2855
    functionDepth: 0
    functionLinenumber: 2855
    functionLinenumberEnd: 2868
    functionName: zebra_evpn_is_if_es_capable
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_is_if_es_capable(struct zebra_if *zif)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:2879,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2880,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2882,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2883,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2885,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2887,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:2889,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2891,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2892,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:2898,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:2900,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:2909,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:2910,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_evpn_mh.c:2912,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_evpn_mh.c:2912,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_evpn_mh.c:2913,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2915,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:2917,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_evpn_mh.c:2920,1
    - Dst: strnlen
      Src: /src/frr/zebra/zebra_evpn_mh.c:2920,1
    - Dst: strnlen
      Src: /src/frr/zebra/zebra_evpn_mh.c:2922,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:2924,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:2931,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:2933,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:2938,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 3
    argNames:
    - vty
    - json
    - zif
    argTypes:
    - struct vty*
    - json_object*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2870
    functionDepth: 1
    functionLinenumber: 2870
    functionLinenumberEnd: 2940
    functionName: zebra_evpn_if_es_print
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 5
    functionsReached:
    - json_object_new_object
    - strlcat
    - strlen
    - vty_out
    - snprintf
    - prefix_mac2str
    - CHECK_FLAG
    - esi_to_str
    - is_zero_mac
    - json_object_int_add
    - memcmp
    - json_object_string_add
    - json_object_object_add
    - strnlen
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_if_es_print(struct vty *vty, json_object *json,\n\t\t\t
      \   struct zebra_if *zif)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2955,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:2958,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mh.c:2960,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2963,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2965,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:2974,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mh.c:2974,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn_mh.c:2981,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:2991,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_evpn_mh.c:2999,1
    - Dst: zebra_evpn_es_if_oper_state_change
      Src: /src/frr/zebra/zebra_evpn_mh.c:3005,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3014,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:3022,1
    - Dst: zebra_evpn_local_mac_oper_state_change
      Src: /src/frr/zebra/zebra_evpn_mh.c:3023,1
    - Dst: zebra_evpn_es_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:3027,1
    - Dst: zebra_evpn_es_vtep_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3030,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:3039,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3042,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_evpn_mh.c:3043,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3047,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3048,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_evpn_mh.c:3049,1
    - Dst: zebra_evpn_es_json_vtep_fill
      Src: /src/frr/zebra/zebra_evpn_mh.c:3057,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:3065,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:3066,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_evpn_mh.c:3067,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3070,1
    - Dst: evpn_es_df_alg2str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3072,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3074,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3078,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3080,1
    - Dst: zebra_evpn_es_show_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:3084,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:3095,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3096,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:3101,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3103,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3105,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3107,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3109,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3110,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3114,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:3117,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:3118,1
    - Dst: zebra_evpn_es_json_vtep_fill
      Src: /src/frr/zebra/zebra_evpn_mh.c:3119,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3120,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3122,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3126,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3128,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3130,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3132,1
    - Dst: zebra_evpn_es_vtep_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3134,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3136,1
    - Dst: zebra_evpn_es_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:3143,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3156,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3158,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:3163,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3165,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3167,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3170,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3172,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3174,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3176,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3179,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3181,1
    - Dst: json_array_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3183,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3185,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3188,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:3189,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3190,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:3190,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3191,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3193,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_evpn_mh.c:3195,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3198,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:3199,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:3200,1
    - Dst: zebra_evpn_es_json_vtep_fill
      Src: /src/frr/zebra/zebra_evpn_mh.c:3201,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3202,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3207,1
    - Dst: strnlen
      Src: /src/frr/zebra/zebra_evpn_mh.c:3209,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3210,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_evpn_mh.c:3211,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3214,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3215,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3216,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3220,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3223,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3227,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3231,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3232,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:3232,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3233,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mh.c:3233,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3235,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3239,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_evpn_mh.c:3240,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3243,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3244,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3245,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:3246,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3247,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3250,1
    - Dst: evpn_es_df_alg2str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3251,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3255,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3259,1
    - Dst: zebra_evpn_es_show
      Src: /src/frr/zebra/zebra_evpn_mh.c:3263,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:3269,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3271,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3272,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_evpn_mh.c:3276,1
    - Dst: zebra_evpn_es_show_entry
      Src: /src/frr/zebra/zebra_evpn_mh.c:3277,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:3280,1
    - Dst: zebra_evpn_es_show_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:3283,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:3289,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_evpn_mh.c:3291,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:3295,1
    - Dst: zebra_evpn_es_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:3296,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3298,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:3302,1
    - Dst: zebra_evpn_es_show_esi
      Src: /src/frr/zebra/zebra_evpn_mh.c:3305,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mh.c:3312,1
    - Dst: zebra_evpn_es_find
      Src: /src/frr/zebra/zebra_evpn_mh.c:3314,1
    - Dst: zebra_evpn_es_show_entry_detail
      Src: /src/frr/zebra/zebra_evpn_mh.c:3317,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3320,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3321,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_evpn_mh.c:3326,1
    - Dst: zebra_evpn_mh_if_write
      Src: /src/frr/zebra/zebra_evpn_mh.c:3329,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3337,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_evpn_mh.c:3341,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3342,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3343,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mh.c:3349,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3350,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3351,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3354,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3357,1
    - Dst: DEFPY_HIDDEN
      Src: /src/frr/zebra/zebra_evpn_mh.c:3364,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/zebra_evpn_mh.c:3368,1
    - Dst: zebra_evpn_es_bypass_cfg_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:3374,1
    - Dst: zebra_evpn_is_if_es_capable
      Src: /src/frr/zebra/zebra_evpn_mh.c:3376,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3377,1
    - Dst: zebra_evpn_es_bypass_cfg_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:3381,1
    - Dst: DEFPY
      Src: /src/frr/zebra/zebra_evpn_mh.c:3387,1
    - Dst: zebra_evpn_es_df_pref_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:3399,1
    - Dst: zebra_evpn_is_if_es_capable
      Src: /src/frr/zebra/zebra_evpn_mh.c:3401,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3402,1
    - Dst: zebra_evpn_es_df_pref_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:3406,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct zebra_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3409
      start: 2942
    functionDepth: 3
    functionLinenumber: 2942
    functionLinenumberEnd: 3409
    functionName: zebra_evpn_local_mac_oper_state_change
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_es_if_oper_state_change
    - zebra_evpn_rem_mac_install
    - zebra_evpn_local_mac_oper_state_change
    - esi_to_str
    - memcmp
    - json_object_string_add
    - json_object_string_addf
    - DEFPY
    - zebra_evpn_es_bypass_cfg_update
    - strlcat
    - zebra_evpn_es_show_entry
    - zebra_evpn_mh_if_write
    - VTY_DECLVAR_CONTEXT
    - ALL_LIST_ELEMENTS_RO
    - evpn_es_df_alg2str
    - zebra_evpn_es_show_entry_detail
    - inet_ntop
    - zlog_debug
    - zebra_evpn_es_json_vtep_fill
    - zebra_evpn_mac_is_static
    - json_array_string_add
    - if
    - zebra_evpn_es_vtep_str
    - zebra_evpn_es_df_pref_update
    - strnlen
    - zebra_evpn_es_run_df_election
    - zebra_evpn_es_find
    - event_timer_to_hhmmss
    - vty_out
    - DEFPY_HIDDEN
    - listcount
    - is_zero_mac
    - zebra_evpn_sync_mac_dp_install
    - json_object_int_add
    - zebra_evpn_is_if_es_capable
    - zebra_evpn_es_send_add_to_client
    - zebra_evpn_es_show
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - zebra_evpn_es_show_esi
    - prefix_mac2str
    - zebra_evpn_es_show_detail
    - json_object_object_add
    - zebra_evpn_rem_mac_uninstall
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_local_mac_oper_state_change(struct zebra_evpn_es *es)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3538,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3539,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3540,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3541,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_evpn_mh.c:3543,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3545,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3547,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn_mh.c:3551,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:3552,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3554,1
    - Dst: json_object_new_string
      Src: /src/frr/zebra/zebra_evpn_mh.c:3556,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mh.c:3557,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3559,1
    - Dst: json_object_new_string
      Src: /src/frr/zebra/zebra_evpn_mh.c:3561,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:3562,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - json
    argTypes:
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3564
      start: 3533
    functionDepth: 1
    functionLinenumber: 3533
    functionLinenumberEnd: 3564
    functionName: zebra_evpn_mh_json
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - event_timer_to_hhmmss
    - json_object_array_add
    - CHECK_FLAG
    - json_object_int_add
    - json_object_string_add
    - json_object_new_string
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_json(json_object *json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3571,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3572,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3574,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_evpn_mh.c:3576,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3578,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:3581,1
    - Dst: zebra_protodown_rc_str
      Src: /src/frr/zebra/zebra_evpn_mh.c:3582,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3584
      start: 3566
    functionDepth: 1
    functionLinenumber: 3566
    functionLinenumberEnd: 3584
    functionName: zebra_evpn_mh_print
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_protodown_rc_str
    - event_timer_to_hhmmss
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_print(struct vty *vty)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_send_to_client_ok
      Src: /src/frr/zebra/zebra_evpn_mh.c:3605,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3609,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3623,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:3627,1
    - Dst: zebra_evpn_es_run_df_election
      Src: /src/frr/zebra/zebra_evpn_mh.c:3628,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn_mh.c:3630,1
    - Dst: zebra_evpn_es_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:3631,1
    - Dst: zebra_evpn_es_re_eval_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:3633,1
    - Dst: zebra_evpn_es_clear_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:3641,1
    - Dst: zebra_evpn_es_get_one_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:3651,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3656,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:3660,1
    - Dst: zebra_evpn_es_re_eval_send_to_client
      Src: /src/frr/zebra/zebra_evpn_mh.c:3661,1
    - Dst: zebra_evpn_es_get_one_base_evpn_cb
      Src: /src/frr/zebra/zebra_evpn_mh.c:3668,1
    - Dst: zebra_evpn_es_set_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:3672,1
    - Dst: zebra_evpn_es_get_one_base_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:3683,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn_mh.c:3687,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_evpn_mh.c:3688,1
    - Dst: zebra_evpn_is_es_bond_member
      Src: /src/frr/zebra/zebra_evpn_mh.c:3702,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/zebra_evpn_mh.c:3706,1
    - Dst: zebra_evpn_mh_update_protodown_bond_mbr
      Src: /src/frr/zebra/zebra_evpn_mh.c:3711,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3732,1
    - Dst: zebra_if_update_protodown_rc
      Src: /src/frr/zebra/zebra_evpn_mh.c:3737,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3740,1
    - Dst: zebra_evpn_mh_update_protodown_bond
      Src: /src/frr/zebra/zebra_evpn_mh.c:3746,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:3754,1
    - Dst: zebra_evpn_mh_update_protodown_bond_mbr
      Src: /src/frr/zebra/zebra_evpn_mh.c:3755,1
    - Dst: zebra_evpn_mh_update_protodown_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:3761,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3784,1
    - Dst: zebra_evpn_mh_update_protodown_bond
      Src: /src/frr/zebra/zebra_evpn_mh.c:3790,1
    - Dst: zebra_evpn_mh_clear_protodown_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:3793,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3806,1
    - Dst: zebra_evpn_mh_update_protodown_bond
      Src: /src/frr/zebra/zebra_evpn_mh.c:3812,1
    - Dst: zebra_evpn_mh_update_protodown_es_all
      Src: /src/frr/zebra/zebra_evpn_mh.c:3815,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mh.c:3820,1
    - Dst: zebra_evpn_mh_update_protodown_es
      Src: /src/frr/zebra/zebra_evpn_mh.c:3821,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3840,1
    - Dst: zebra_evpn_mh_update_protodown_es_all
      Src: /src/frr/zebra/zebra_evpn_mh.c:3842,1
    - Dst: zebra_evpn_mh_is_all_uplinks_down
      Src: /src/frr/zebra/zebra_evpn_mh.c:3845,1
    - Dst: zebra_evpn_mh_uplink_oper_flags_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:3850,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn_mh.c:3853,1
    - Dst: zebra_evpn_mh_is_all_uplinks_down
      Src: /src/frr/zebra/zebra_evpn_mh.c:3869,1
    - Dst: uplink_cfg_cnt
      Src: /src/frr/zebra/zebra_evpn_mh.c:3845,1
    - Dst: zebra_evpn_mh_is_all_uplinks_down
      Src: /src/frr/zebra/zebra_evpn_mh.c:3888,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3893,1
    - Dst: zebra_evpn_mh_update_protodown
      Src: /src/frr/zebra/zebra_evpn_mh.c:3898,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 38
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3900
      start: 3592
    functionDepth: 4
    functionLinenumber: 3592
    functionLinenumberEnd: 3900
    functionName: zebra_evpn_es_set_base_evpn
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 4
    functionsReached:
    - zebra_evpn_es_re_eval_send_to_client
    - zebra_evpn_mh_uplink_oper_flags_update
    - zebra_evpn_es_get_one_base_evpn
    - zebra_evpn_is_es_bond_member
    - zebra_evpn_mh_update_protodown
    - zebra_vrf_get_evpn
    - zebra_evpn_mh_update_protodown_bond_mbr
    - zebra_evpn_es_get_one_base_evpn_cb
    - hash_walk
    - zebra_evpn_es_set_base_evpn
    - IS_ZEBRA_IF_BOND_SLAVE
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - zebra_evpn_mh_clear_protodown_es
    - if
    - zebra_evpn_es_run_df_election
    - zebra_evpn_es_send_add_to_client
    - zebra_evpn_mh_is_all_uplinks_down
    - zebra_evpn_send_to_client_ok
    - zebra_if_update_protodown_rc
    - zebra_evpn_mh_update_protodown_bond
    - zebra_evpn_es_clear_base_evpn
    - zebra_evpn_mh_update_protodown_es
    - uplink_cfg_cnt
    - if_is_operative
    - zebra_evpn_mh_update_protodown_es_all
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_es_set_base_evpn(struct zebra_evpn *zevpn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mh_is_all_uplinks_down
      Src: /src/frr/zebra/zebra_evpn_mh.c:3904,1
    - Dst: zebra_evpn_mh_uplink_oper_flags_update
      Src: /src/frr/zebra/zebra_evpn_mh.c:3907,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3910,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn_mh.c:3913,1
    - Dst: zebra_evpn_mh_is_all_uplinks_down
      Src: /src/frr/zebra/zebra_evpn_mh.c:3916,1
    - Dst: zebra_evpn_mh_startup_delay_timer_start
      Src: /src/frr/zebra/zebra_evpn_mh.c:3925,1
    - Dst: zebra_evpn_mh_update_protodown
      Src: /src/frr/zebra/zebra_evpn_mh.c:3927,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3929
      start: 3902
    functionDepth: 1
    functionLinenumber: 3902
    functionLinenumberEnd: 3929
    functionName: zebra_evpn_mh_uplink_oper_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_mh_uplink_oper_flags_update
    - zebra_evpn_mh_update_protodown
    - zebra_evpn_mh_startup_delay_timer_start
    - zlog_debug
    - if_is_operative
    - zebra_evpn_mh_is_all_uplinks_down
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_uplink_oper_update(struct zebra_if *zif)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3934,1
    - Dst: zebra_evpn_mh_update_protodown
      Src: /src/frr/zebra/zebra_evpn_mh.c:3936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3938
      start: 3931
    functionDepth: 1
    functionLinenumber: 3931
    functionLinenumberEnd: 3938
    functionName: zebra_evpn_mh_startup_delay_exp_cb
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_evpn_mh_update_protodown
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_startup_delay_exp_cb(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3944,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_mh.c:3945,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:3950,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_evpn_mh.c:3953,1
    - Dst: zebra_evpn_mh_update_protodown
      Src: /src/frr/zebra/zebra_evpn_mh.c:3957,1
    - Dst: zebra_evpn_mh_update_protodown
      Src: /src/frr/zebra/zebra_evpn_mh.c:3960,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - rc
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3963
      start: 3940
    functionDepth: 1
    functionLinenumber: 3940
    functionLinenumberEnd: 3963
    functionName: zebra_evpn_mh_startup_delay_timer_start
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - zlog_debug
    - EVENT_OFF
    - zebra_evpn_mh_update_protodown
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_startup_delay_timer_start(const char *rc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stream_getl
      Src: /src/frr/zebra/zebra_evpn_mh.c:3993,1
    - Dst: stream_get
      Src: /src/frr/zebra/zebra_evpn_mh.c:3994,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mh.c:3996,1
    - Dst: stream_get
      Src: /src/frr/zebra/zebra_evpn_mh.c:4003,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:4005,1
    - Dst: zebra_rib_queue_evpn_route_add
      Src: /src/frr/zebra/zebra_evpn_mh.c:4008,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mh.c:4012,1
    - Dst: zebra_rib_queue_evpn_route_del
      Src: /src/frr/zebra/zebra_evpn_mh.c:4014,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4017
      start: 3974
    functionDepth: 1
    functionLinenumber: 3974
    functionLinenumberEnd: 4017
    functionName: zebra_evpn_proc_remote_nh
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memset
    - zebra_rib_queue_evpn_route_del
    - zebra_rib_queue_evpn_route_add
    - stream_get
    - stream_getl
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_proc_remote_nh(ZAPI_HANDLER_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:4023,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:4027,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:4031,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mh.c:4035,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4036
      start: 4020
    functionDepth: 1
    functionLinenumber: 4020
    functionLinenumberEnd: 4036
    functionName: zebra_evpn_mh_config_write
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - duration
    - set_default
    argTypes:
    - struct vty*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4047
      start: 4038
    functionDepth: 0
    functionLinenumber: 4038
    functionLinenumberEnd: 4047
    functionName: zebra_evpn_mh_neigh_holdtime_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_mh_neigh_holdtime_update(struct vty *vty,\n\t\tuint32_t
      duration, bool set_default)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - duration
    - set_default
    argTypes:
    - struct vty*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4058
      start: 4049
    functionDepth: 0
    functionLinenumber: 4049
    functionLinenumberEnd: 4058
    functionName: zebra_evpn_mh_mac_holdtime_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_mh_mac_holdtime_update(struct vty *vty,\n\t\tuint32_t
      duration, bool set_default)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mh_startup_delay_timer_start
      Src: /src/frr/zebra/zebra_evpn_mh.c:4072,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - duration
    - set_default
    argTypes:
    - struct vty*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4075
      start: 4060
    functionDepth: 2
    functionLinenumber: 4060
    functionLinenumberEnd: 4075
    functionName: zebra_evpn_mh_startup_delay_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mh_startup_delay_timer_start
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_mh_startup_delay_update(struct vty *vty, uint32_t duration,\n\t\t\t\t
      \      bool set_default)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - redirect_off
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4088
      start: 4077
    functionDepth: 0
    functionLinenumber: 4077
    functionLinenumberEnd: 4088
    functionName: zebra_evpn_mh_redirect_off
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_mh_redirect_off(struct vty *vty, bool redirect_off)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/zebra/zebra_evpn_mh.c:4092,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_evpn_mh.c:4093,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_evpn_mh.c:4094,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_evpn_mh.c:4095,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_evpn_mh.c:4096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4097
      start: 4090
    functionDepth: 1
    functionLinenumber: 4090
    functionLinenumberEnd: 4097
    functionName: zebra_evpn_interface_init
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_interface_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_mh.c:4101,1
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_evpn_mh.c:4106,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mh.c:4107,1
    - Dst: listset_app_node_mem
      Src: /src/frr/zebra/zebra_evpn_mh.c:4108,1
    - Dst: bf_init
      Src: /src/frr/zebra/zebra_evpn_mh.c:4110,1
    - Dst: bf_assign_zero_index
      Src: /src/frr/zebra/zebra_evpn_mh.c:4111,1
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_evpn_mh.c:4112,1
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_evpn_mh.c:4115,1
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_evpn_mh.c:4119,1
    - Dst: zebra_evpn_mh_startup_delay_timer_start
      Src: /src/frr/zebra/zebra_evpn_mh.c:4123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4124
      start: 4099
    functionDepth: 2
    functionLinenumber: 4099
    functionLinenumberEnd: 4124
    functionName: zebra_evpn_mh_init
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bf_init
    - XCALLOC
    - bf_assign_zero_index
    - hash_create
    - RB_INIT
    - list_new
    - listset_app_node_mem
    - zebra_evpn_mh_startup_delay_timer_start
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mh.c:4128,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mh.c:4130,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:4132,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:4133,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:4134,1
    - Dst: bf_free
      Src: /src/frr/zebra/zebra_evpn_mh.c:4135,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mh.c:4137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4138
      start: 4126
    functionDepth: 1
    functionLinenumber: 4126
    functionLinenumberEnd: 4138
    functionName: zebra_evpn_mh_terminate
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.c
    functionUses: 0
    functionsReached:
    - list_delete
    - hash_free
    - bf_free
    - XFREE
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mh_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - zvrf
    - ','
    - afi
    - ','
    - rtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: PROTO_RM_NAME
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROTO_RM_NAME(zvrf, afi, rtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - zvrf
    - ','
    - afi
    - ','
    - rtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: NHT_RM_NAME
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NHT_RM_NAME(zvrf, afi, rtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - zvrf
    - ','
    - afi
    - ','
    - rtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: PROTO_RM_MAP
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROTO_RM_MAP(zvrf, afi, rtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - zvrf
    - ','
    - afi
    - ','
    - rtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    functionName: NHT_RM_MAP
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NHT_RM_MAP(zvrf, afi, rtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - vrfptr
    - ','
    - zvrfptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: ZEBRA_DECLVAR_CONTEXT_VRF
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_DECLVAR_CONTEXT_VRF(vrfptr, zvrfptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: zvrf_id
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t zvrf_id(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ns_get_name
      Src: /src/frr/zebra/zebra_vrf.h:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: zvrf_ns_name
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 0
    functionsReached:
    - ns_get_name
    linkageType: ''
    returnType: char
    signature: char *zvrf_ns_name(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 203
    functionName: zvrf_name
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zvrf_name(struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: zvrf_is_active
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zvrf_is_active(struct zebra_vrf *zvrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct other_route_table*
    - struct other_route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 224
    functionName: zvrf_other_table_compare_func
    functionSourceFile: /src/frr/zebra/zebra_vrf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int zvrf_other_table_compare_func(const struct other_route_table *a,\n\t\t\t
      \     const struct other_route_table *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_router.h:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 266
    functionName: zebra_vrf_get_evpn_id
    functionSourceFile: /src/frr/zebra/zebra_router.h
    functionUses: 3
    functionsReached:
    - zvrf_id
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t zebra_vrf_get_evpn_id(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_router.h:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 271
    functionName: zebra_vrf_get_evpn
    functionSourceFile: /src/frr/zebra/zebra_router.h
    functionUses: 6
    functionsReached:
    - zebra_vrf_lookup_by_id
    linkageType: ''
    returnType: struct zebra_vrf
    signature: struct zebra_vrf *zebra_vrf_get_evpn(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - support
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: zebra_router_set_supports_nhgs
    functionSourceFile: /src/frr/zebra/zebra_router.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_router_set_supports_nhgs(bool support)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_router.h:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: zebra_router_in_shutdown
    functionSourceFile: /src/frr/zebra/zebra_router.h
    functionUses: 2
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: bool
    signature: bool zebra_router_in_shutdown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_route_read
      Src: /src/frr/zebra/rtread_netlink.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: route_read
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 2
    functionsReached:
    - netlink_route_read
    linkageType: ''
    returnType: void
    signature: void route_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_macfdb_read
      Src: /src/frr/zebra/rtread_netlink.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 28
    functionName: macfdb_read
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_macfdb_read
    linkageType: ''
    returnType: void
    signature: void macfdb_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_macfdb_read_for_bridge
      Src: /src/frr/zebra/rtread_netlink.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - zns
    - ifp
    - br_if
    - vid
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - struct interface*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: macfdb_read_for_bridge
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_macfdb_read_for_bridge
    linkageType: ''
    returnType: void
    signature: "void macfdb_read_for_bridge(struct zebra_ns *zns, struct interface
      *ifp,\n\t\t\t    struct interface *br_if, vlanid_t vid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_macfdb_read_mcast_for_vni
      Src: /src/frr/zebra/rtread_netlink.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - zns
    - ifp
    - vni
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: macfdb_read_mcast_entry_for_vni
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_macfdb_read_mcast_for_vni
    linkageType: ''
    returnType: void
    signature: "void macfdb_read_mcast_entry_for_vni(struct zebra_ns *zns,\n\t\t\t\t
      \    struct interface *ifp, vni_t vni)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_macfdb_read_specific_mac
      Src: /src/frr/zebra/rtread_netlink.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - zns
    - br_if
    - mac
    - vid
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: macfdb_read_specific_mac
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_macfdb_read_specific_mac
    linkageType: ''
    returnType: void
    signature: "void macfdb_read_specific_mac(struct zebra_ns *zns, struct interface
      *br_if,\n\t\t\t      const struct ethaddr *mac, vlanid_t vid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_neigh_read
      Src: /src/frr/zebra/rtread_netlink.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: neigh_read
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 2
    functionsReached:
    - netlink_neigh_read
    linkageType: ''
    returnType: void
    signature: void neigh_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_neigh_read_for_vlan
      Src: /src/frr/zebra/rtread_netlink.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zns
    - vlan_if
    argTypes:
    - struct zebra_ns*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: neigh_read_for_vlan
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_neigh_read_for_vlan
    linkageType: ''
    returnType: void
    signature: void neigh_read_for_vlan(struct zebra_ns *zns, struct interface *vlan_if)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_neigh_read_specific_ip
      Src: /src/frr/zebra/rtread_netlink.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ip
    - vlan_if
    argTypes:
    - struct ipaddr*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: neigh_read_specific_ip
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_neigh_read_specific_ip
    linkageType: ''
    returnType: void
    signature: void neigh_read_specific_ip(const struct ipaddr *ip, struct interface
      *vlan_if)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_rules_read
      Src: /src/frr/zebra/rtread_netlink.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: kernel_read_pbr_rules
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_rules_read
    linkageType: ''
    returnType: void
    signature: void kernel_read_pbr_rules(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_qdisc_read
      Src: /src/frr/zebra/rtread_netlink.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: kernel_read_tc_qdisc
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_qdisc_read
    linkageType: ''
    returnType: void
    signature: void kernel_read_tc_qdisc(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_vlan_read
      Src: /src/frr/zebra/rtread_netlink.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: vlan_read
    functionSourceFile: /src/frr/zebra/rtread_netlink.c
    functionUses: 2
    functionsReached:
    - netlink_vlan_read
    linkageType: ''
    returnType: void
    signature: void vlan_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_rnh.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: zebra_rnh_init
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 2
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void zebra_rnh_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:65,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - vrfid
    - afi
    - safi
    argTypes:
    - vrf_id_t
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 74
    functionName: get_rnh_table
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_lookup_by_id
    linkageType: ''
    returnType: struct route_table
    signature: "struct route_table *get_rnh_table(vrf_id_t vrfid, afi_t afi,\n\t\t\t\t\t\tsafi_t
      safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:78,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_rnh.c:86,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:91,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:92,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rnh.c:95,1
    - Dst: rnh_list_del
      Src: /src/frr/zebra/zebra_rnh.c:96,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - rnh
    argTypes:
    - struct rnh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 98
    functionName: zebra_rnh_remove_from_routing_table
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - zlog_debug
    - VRF_LOGNAME
    - zebra_vrf_lookup_by_id
    - route_node_match
    - rib_dest_from_rnode
    - rnh_list_del
    linkageType: ''
    returnType: void
    signature: void zebra_rnh_remove_from_routing_table(struct rnh *rnh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:102,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_rnh.c:107,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:112,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:113,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rnh.c:116,1
    - Dst: rnh_list_add_tail
      Src: /src/frr/zebra/zebra_rnh.c:117,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - rnh
    argTypes:
    - struct rnh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 119
    functionName: zebra_rnh_store_in_routing_table
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - rnh_list_add_tail
    - zlog_debug
    - VRF_LOGNAME
    - zebra_vrf_lookup_by_id
    - route_node_match
    - rib_dest_from_rnode
    linkageType: ''
    returnType: void
    signature: void zebra_rnh_store_in_routing_table(struct rnh *rnh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_rnh.c:127,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:130,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:132,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:133,1
    - Dst: get_rnh_table
      Src: /src/frr/zebra/zebra_rnh.c:136,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:138,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_rnh.c:140,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:142,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_rnh.c:148,1
    - Dst: route_node_get
      Src: /src/frr/zebra/zebra_rnh.c:151,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rnh.c:154,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_rnh.c:163,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_rnh.c:168,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/zebra_rnh.c:169,1
    - Dst: zebra_rnh_store_in_routing_table
      Src: /src/frr/zebra/zebra_rnh.c:174,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 4
    argNames:
    - p
    - vrfid
    - safi
    - exists
    argTypes:
    - struct prefix*
    - vrf_id_t
    - safi_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 180
    functionName: zebra_add_rnh
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zebra_rnh_store_in_routing_table
    - route_unlock_node
    - route_lock_node
    - flog_warn
    - apply_mask
    - XCALLOC
    - zlog_debug
    - route_node_get
    - list_new
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - family2afi
    - get_rnh_table
    linkageType: ''
    returnType: struct rnh
    signature: "struct rnh *zebra_add_rnh(struct prefix *p, vrf_id_t vrfid, safi_t
      safi,\n\t\t\t  bool *exists)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_rnh_table
      Src: /src/frr/zebra/zebra_rnh.c:187,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_rnh.c:187,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/zebra/zebra_rnh.c:187,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_rnh.c:192,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_rnh.c:195,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - p
    - vrfid
    - safi
    argTypes:
    - struct prefix*
    - vrf_id_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 201
    functionName: zebra_lookup_rnh
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - apply_mask
    - PREFIX_FAMILY
    - family2afi
    - get_rnh_table
    linkageType: ''
    returnType: struct rnh
    signature: struct rnh *zebra_lookup_rnh(struct prefix *p, vrf_id_t vrfid, safi_t
      safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_rnh_remove_from_routing_table
      Src: /src/frr/zebra/zebra_rnh.c:208,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_rnh.c:210,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_rnh.c:211,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:213,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_rnh.c:214,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_rnh.c:219,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:223,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rnh.c:225,1
    - Dst: rnh_list_del
      Src: /src/frr/zebra/zebra_rnh.c:226,1
    - Dst: free_state
      Src: /src/frr/zebra/zebra_rnh.c:229,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rnh.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - rnh
    argTypes:
    - struct rnh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 231
    functionName: zebra_free_rnh
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - list_delete
    - free_state
    - zebra_rnh_remove_from_routing_table
    - XFREE
    - family2afi
    - zebra_vrf_lookup_by_id
    - route_node_match
    - rib_dest_from_rnode
    - rnh_list_del
    linkageType: ''
    returnType: void
    signature: void zebra_free_rnh(struct rnh *rnh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_rnh.c:237,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_rnh.c:238,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:245,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:247,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:247,1
    - Dst: zebra_free_rnh
      Src: /src/frr/zebra/zebra_rnh.c:251,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:253,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - rnh
    argTypes:
    - struct rnh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 254
    functionName: zebra_delete_rnh
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - list_isempty
    - zlog_debug
    - zebra_free_rnh
    - VRF_LOGNAME
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void zebra_delete_rnh(struct rnh *rnh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:268,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:270,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:271,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:272,1
    - Dst: listnode_lookup
      Src: /src/frr/zebra/zebra_rnh.c:274,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rnh.c:275,1
    - Dst: zebra_send_rnh_update
      Src: /src/frr/zebra/zebra_rnh.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - rnh
    - client
    - vrf_id
    argTypes:
    - struct rnh*
    - struct zserv*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 282
    functionName: zebra_add_rnh_client
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - listnode_lookup
    - listnode_add
    - zebra_send_rnh_update
    - zlog_debug
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void zebra_add_rnh_client(struct rnh *rnh, struct zserv *client,\n\t\t\t
      \ vrf_id_t vrf_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:287,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:289,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:290,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:290,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_rnh.c:293,1
    - Dst: zebra_delete_rnh
      Src: /src/frr/zebra/zebra_rnh.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rnh
    - client
    argTypes:
    - struct rnh*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 284
    functionDepth: 4
    functionLinenumber: 284
    functionLinenumberEnd: 295
    functionName: zebra_remove_rnh_client
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zebra_delete_rnh
    - zlog_debug
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - listnode_delete
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_remove_rnh_client(struct rnh *rnh, struct zserv *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_rnh.c:313,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_rnh.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - af
    - addr
    - prefix
    argTypes:
    - int
    - union g_addr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 317
    functionName: addr2hostprefix
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - memset
    linkageType: ''
    returnType: void
    signature: "void addr2hostprefix(int af, const union g_addr *addr,\n\t\t\t    struct
      prefix *prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:329,1
    - Dst: addr2hostprefix
      Src: /src/frr/zebra/zebra_rnh.c:333,1
    - Dst: zebra_add_rnh
      Src: /src/frr/zebra/zebra_rnh.c:334,1
    - Dst: listnode_lookup
      Src: /src/frr/zebra/zebra_rnh.c:338,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rnh.c:339,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zebra_rnh.c:341,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_rnh.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - vrf_id
    - pw
    - nht_exists
    argTypes:
    - vrf_id_t
    - struct zebra_pw*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 345
    functionName: zebra_register_rnh_pseudowire
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zebra_evaluate_rnh
    - listnode_lookup
    - addr2hostprefix
    - listnode_add
    - family2afi
    - zebra_vrf_lookup_by_id
    - zebra_add_rnh
    linkageType: ''
    returnType: void
    signature: "void zebra_register_rnh_pseudowire(vrf_id_t vrf_id, struct zebra_pw
      *pw,\n\t\t\t\t   bool *nht_exists)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_rnh.c:355,1
    - Dst: zebra_delete_rnh
      Src: /src/frr/zebra/zebra_rnh.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vrf_id
    - pw
    argTypes:
    - vrf_id_t
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 347
    functionDepth: 4
    functionLinenumber: 347
    functionLinenumberEnd: 359
    functionName: zebra_deregister_rnh_pseudowire
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - zebra_delete_rnh
    linkageType: ''
    returnType: void
    signature: void zebra_deregister_rnh_pseudowire(vrf_id_t vrf_id, struct zebra_pw
      *pw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - re
    argTypes:
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 373
    functionName: zebra_rnh_clear_nexthop_rnh_filters
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void zebra_rnh_clear_nexthop_rnh_filters(struct route_entry *re)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nht_route_map_check
      Src: /src/frr/zebra/zebra_rnh.c:389,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:394,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - afi
    - zvrf
    - prn
    - re
    - proto
    argTypes:
    - afi_t
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 400
    functionName: zebra_rnh_apply_nht_rmap
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - zebra_nht_route_map_check
    linkageType: ''
    returnType: int
    signature: "int zebra_rnh_apply_nht_rmap(afi_t afi, struct zebra_vrf *zvrf,\n\t\t\t\t
      \   struct route_node *prn,\n\t\t\t\t    struct route_entry *re, int proto)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:417,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:418,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:421,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:422,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_rnh.c:426,1
    - Dst: zebra_rnh_clear_nexthop_rnh_filters
      Src: /src/frr/zebra/zebra_rnh.c:432,1
    - Dst: zebra_rnh_apply_nht_rmap
      Src: /src/frr/zebra/zebra_rnh.c:433,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:441,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:443,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:445,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:452,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:454,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:456,1
    - Dst: zebra_send_rnh_update
      Src: /src/frr/zebra/zebra_rnh.c:459,1
    - Dst: zebra_rnh_clear_nexthop_rnh_filters
      Src: /src/frr/zebra/zebra_rnh.c:463,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 6
    argNames:
    - zvrf
    - afi
    - nrn
    - rnh
    - prn
    - re
    argTypes:
    - struct zebra_vrf*
    - afi_t
    - struct route_node*
    - struct rnh*
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 405
    functionDepth: 3
    functionLinenumber: 405
    functionLinenumberEnd: 464
    functionName: zebra_rnh_notify_protocol_clients
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zebra_route_string
    - ALL_LIST_ELEMENTS_RO
    - zebra_send_rnh_update
    - zlog_debug
    - VRF_LOGNAME
    - zebra_rnh_apply_nht_rmap
    - zebra_rnh_clear_nexthop_rnh_filters
    linkageType: ''
    returnType: void
    signature: "void zebra_rnh_notify_protocol_clients(struct zebra_vrf *zvrf, afi_t
      afi,\n\t\t\t\t\t      struct route_node *nrn,\n\t\t\t\t\t      struct rnh *rnh,\n\t\t\t\t\t
      \     struct route_node *prn,\n\t\t\t\t\t      struct route_entry *re)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:478,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:479,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - re
    - nh
    argTypes:
    - struct route_entry*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 481
    functionName: rnh_nexthop_valid
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool rnh_nexthop_valid(const struct route_entry *re, const struct nexthop
      *nh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rnh.c:493,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zebra_rnh.c:494,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rnh.c:501,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zebra_rnh.c:502,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - re
    - rnh
    argTypes:
    - struct route_entry*
    - struct rnh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 505
    functionName: rnh_check_re_nexthops
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - ALL_NEXTHOPS
    - rnh_nexthop_valid
    linkageType: ''
    returnType: bool
    signature: "bool rnh_check_re_nexthops(const struct route_entry *re,\n\t\t\t\t
      \ const struct rnh *rnh)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_rnh.c:558,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:563,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:570,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:571,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/zebra_rnh.c:577,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:578,1
    - Dst: rnh_resolve_via_default
      Src: /src/frr/zebra/zebra_rnh.c:579,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:581,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:591,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:593,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:595,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:598,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:599,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:601,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:603,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:607,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:609,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:611,1
    - Dst: rnh_check_re_nexthops
      Src: /src/frr/zebra/zebra_rnh.c:618,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 43
    argCount: 5
    argNames:
    - zvrf
    - afi
    - nrn
    - rnh
    - prn
    argTypes:
    - struct zebra_vrf*
    - afi_t
    - struct route_node*
    - struct rnh*
    - struct route_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 543
    functionDepth: 3
    functionLinenumber: 543
    functionLinenumberEnd: 635
    functionName: zebra_rnh_resolve_nexthop_entry
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - is_default_prefix
    - CHECK_FLAG
    - rnh_check_re_nexthops
    - zlog_debug
    - VRF_LOGNAME
    - rnh_resolve_via_default
    - route_node_match
    - zebra_route_string
    linkageType: ''
    returnType: struct route_entry
    signature: "struct route_entry *\nzebra_rnh_resolve_nexthop_entry(struct zebra_vrf
      *zvrf, afi_t afi,\n\t\t\t\tstruct route_node *nrn, const struct rnh *rnh,\n\t\t\t\tstruct
      route_node **prn)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:591,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:593,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:595,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:598,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:599,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:601,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:603,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:607,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:609,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:611,1
    - Dst: rnh_check_re_nexthops
      Src: /src/frr/zebra/zebra_rnh.c:618,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 590
    functionDepth: 3
    functionLinenumber: 590
    functionLinenumberEnd: 620
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 6
    functionsReached:
    - rnh_check_re_nexthops
    - CHECK_FLAG
    - zebra_route_string
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_rnh.c:642,1
    - Dst: zebra_pw_update
      Src: /src/frr/zebra/zebra_rnh.c:643,1
    - Dst: zebra_rnh_remove_from_routing_table
      Src: /src/frr/zebra/zebra_rnh.c:663,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rnh.c:664,1
    - Dst: prefix_same
      Src: /src/frr/zebra/zebra_rnh.c:664,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_rnh.c:666,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_rnh.c:674,1
    - Dst: copy_state
      Src: /src/frr/zebra/zebra_rnh.c:678,1
    - Dst: compare_state
      Src: /src/frr/zebra/zebra_rnh.c:680,1
    - Dst: copy_state
      Src: /src/frr/zebra/zebra_rnh.c:681,1
    - Dst: zebra_rnh_store_in_routing_table
      Src: /src/frr/zebra/zebra_rnh.c:684,1
    - Dst: zebra_rnh_notify_protocol_clients
      Src: /src/frr/zebra/zebra_rnh.c:691,1
    - Dst: zebra_rnh_process_pseudowires
      Src: /src/frr/zebra/zebra_rnh.c:695,1
    - Dst: zebra_rnh_evaluate_entry
      Src: /src/frr/zebra/zebra_rnh.c:700,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:708,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:709,1
    - Dst: zebra_rnh_resolve_nexthop_entry
      Src: /src/frr/zebra/zebra_rnh.c:716,1
    - Dst: zebra_rnh_eval_nexthop_entry
      Src: /src/frr/zebra/zebra_rnh.c:725,1
    - Dst: zebra_rnh_clear_nhc_flag
      Src: /src/frr/zebra/zebra_rnh.c:737,1
    - Dst: zebra_rnh_resolve_nexthop_entry
      Src: /src/frr/zebra/zebra_rnh.c:747,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:750,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zebra_rnh.c:756,1
    - Dst: get_rnh_table
      Src: /src/frr/zebra/zebra_rnh.c:762,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_rnh.c:768,1
    - Dst: zebra_rnh_evaluate_entry
      Src: /src/frr/zebra/zebra_rnh.c:770,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rnh.c:773,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rnh.c:776,1
    - Dst: zebra_rnh_evaluate_entry
      Src: /src/frr/zebra/zebra_rnh.c:779,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_rnh.c:780,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rnh.c:782,1
    - Dst: zebra_rnh_clear_nhc_flag
      Src: /src/frr/zebra/zebra_rnh.c:785,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_rnh.c:786,1
    - Dst: zebra_print_rnh_table
      Src: /src/frr/zebra/zebra_rnh.c:791,1
    - Dst: get_rnh_table
      Src: /src/frr/zebra/zebra_rnh.c:798,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:801,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rnh.c:805,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_rnh.c:805,1
    - Dst: prefix_match
      Src: /src/frr/zebra/zebra_rnh.c:806,1
    - Dst: print_rnh
      Src: /src/frr/zebra/zebra_rnh.c:810,1
    - Dst: free_state
      Src: /src/frr/zebra/zebra_rnh.c:817,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_rnh.c:824,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rnh.c:825,1
    - Dst: copy_state
      Src: /src/frr/zebra/zebra_rnh.c:828,1
    - Dst: free_state
      Src: /src/frr/zebra/zebra_rnh.c:834,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rnh.c:841,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_rnh.c:848,1
    - Dst: nexthop_group_copy
      Src: /src/frr/zebra/zebra_rnh.c:854,1
    - Dst: nexthop_group_copy
      Src: /src/frr/zebra/zebra_rnh.c:856,1
    - Dst: next_valid_primary_nh
      Src: /src/frr/zebra/zebra_rnh.c:865,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_rnh.c:884,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:887,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zebra_rnh.c:890,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:893,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:923,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:928,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_rnh.c:932,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:934,1
    - Dst: nexthop_cmp
      Src: /src/frr/zebra/zebra_rnh.c:935,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:942,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_rnh.c:947,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:955,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:958,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:965,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:980,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 56
    argCount: 2
    argNames:
    - vrfid
    - rnh
    argTypes:
    - vrf_id_t
    - struct rnh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 637
    functionDepth: 4
    functionLinenumber: 637
    functionLinenumberEnd: 986
    functionName: zebra_rnh_process_pseudowires
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 1
    functionsReached:
    - zebra_rnh_notify_protocol_clients
    - route_top
    - rnh_nexthop_valid
    - zebra_nhg_free
    - zebra_rnh_store_in_routing_table
    - rib_get_fib_backup_nhg
    - route_node_lookup
    - memset
    - prefix_match
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zebra_rnh_remove_from_routing_table
    - zebra_pw_update
    - copy_state
    - zlog_debug
    - if
    - zebra_rnh_clear_nhc_flag
    - prefix_copy
    - zebra_rnh_evaluate_entry
    - zebra_rnh_process_pseudowires
    - route_unlock_node
    - rib_get_fib_nhg
    - prefix_same
    - zebra_rnh_resolve_nexthop_entry
    - route_next
    - UNSET_FLAG
    - XFREE
    - zebra_print_rnh_table
    - next_valid_primary_nh
    - print_rnh
    - zebra_rnh_eval_nexthop_entry
    - zebra_evaluate_rnh
    - free_state
    - CHECK_FLAG
    - nexthop_group_copy
    - nexthop_cmp
    - zebra_nhe_copy
    - VRF_LOGNAME
    - compare_state
    - nexthop_next
    - get_rnh_table
    linkageType: ''
    returnType: void
    signature: void zebra_rnh_process_pseudowires(vrf_id_t vrfid, struct rnh *rnh)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: next_valid_primary_nh
      Src: /src/frr/zebra/zebra_rnh.c:1001,1
    - Dst: next_valid_primary_nh
      Src: /src/frr/zebra/zebra_rnh.c:1002,1
    - Dst: nexthop_cmp
      Src: /src/frr/zebra/zebra_rnh.c:1009,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1011,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1019,1
    - Dst: next_valid_primary_nh
      Src: /src/frr/zebra/zebra_rnh.c:1026,1
    - Dst: next_valid_primary_nh
      Src: /src/frr/zebra/zebra_rnh.c:1027,1
    - Dst: nexthop_group_hash
      Src: /src/frr/zebra/zebra_rnh.c:1041,1
    - Dst: nexthop_group_hash
      Src: /src/frr/zebra/zebra_rnh.c:1045,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1049,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_rnh.c:1061,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_rnh.c:1062,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zebra_rnh.c:1069,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:1070,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zebra_rnh.c:1072,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:1073,1
    - Dst: nexthop_cmp
      Src: /src/frr/zebra/zebra_rnh.c:1077,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1079,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:1084,1
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_rnh.c:1085,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1089,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1106,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 70
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct route_entry*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 992
    functionDepth: 2
    functionLinenumber: 992
    functionLinenumberEnd: 1110
    functionName: compare_valid_nexthops
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - rib_get_fib_backup_nhg
    - nexthop_group_hash
    - nexthop_cmp
    - zlog_debug
    - rnh_nexthop_valid
    - nexthop_next
    - next_valid_primary_nh
    linkageType: ''
    returnType: bool
    signature: "bool compare_valid_nexthops(struct route_entry *r1,\n\t\t\t\t   struct
      route_entry *r2)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: compare_valid_nexthops
      Src: /src/frr/zebra/zebra_rnh.c:1128,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 2
    argNames:
    - r1
    - r2
    argTypes:
    - struct route_entry*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1113
    functionDepth: 3
    functionLinenumber: 1113
    functionLinenumberEnd: 1132
    functionName: compare_state
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 1
    functionsReached:
    - compare_valid_nexthops
    linkageType: ''
    returnType: bool
    signature: "bool compare_state(struct route_entry *r1,\n\t\t\t  struct route_entry
      *r2)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_rnh.c:1150,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_rnh.c:1152,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1156,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_rnh.c:1157,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_rnh.c:1162,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_rnh.c:1163,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1164,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_rnh.c:1167,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_rnh.c:1170,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rnh.c:1173,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_rnh.c:1182,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1183,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_rnh.c:1186,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_rnh.c:1189,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rnh.c:1192,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_rnh.c:1199,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1205,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_rnh.c:1206,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1207,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_rnh.c:1208,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_rnh.c:1210,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1211,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_rnh.c:1213,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rnh.c:1214,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zebra_rnh.c:1215,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/zebra/zebra_rnh.c:1216,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/zebra/zebra_rnh.c:1217,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rnh.c:1218,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_rnh.c:1224,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rnh.c:1226,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rnh.c:1227,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zebra_rnh.c:1227,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/zebra/zebra_rnh.c:1228,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/zebra/zebra_rnh.c:1229,1
    - Dst: stream_putc_at
      Src: /src/frr/zebra/zebra_rnh.c:1239,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1241,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zebra_rnh.c:1242,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1243,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_rnh.c:1244,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_rnh.c:1245,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_rnh.c:1247,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_rnh.c:1247,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_rnh.c:1249,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_rnh.c:1250,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_rnh.c:1254,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_rnh.c:1263,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_rnh.c:1273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1275,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1276,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1278,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1279,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_rnh.c:1284,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1286,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_rnh.c:1289,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1291,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_rnh.c:1292,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_rnh.c:1298,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1300,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_rnh.c:1303,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1305,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_rnh.c:1306,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1312,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_rnh.c:1313,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1315,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_rnh.c:1317,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1320,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1323,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1326,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1330,1
    - Dst: BLACKHOLE_UNSPEC
      Src: /src/frr/zebra/zebra_rnh.c:1332,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1343,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1346,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_rnh.c:1347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1349,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1352,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1353,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1355,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1356,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1358,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1359,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1361,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1362,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1364,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_rnh.c:1365,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_rnh.c:1367,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_rnh.c:1369,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_rnh.c:1372,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_rnh.c:1380,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_rnh.c:1385,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_rnh.c:1386,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_rnh.c:1395,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_rnh.c:1399,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_rnh.c:1401,1
    - Dst: label2vni
      Src: /src/frr/zebra/zebra_rnh.c:1404,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_rnh.c:1410,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_rnh.c:1414,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_rnh.c:1417,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_rnh.c:1421,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1422,1
    - Dst: seg6local_action2str
      Src: /src/frr/zebra/zebra_rnh.c:1424,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_rnh.c:1426,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_rnh.c:1429,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_rnh.c:1430,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_rnh.c:1432,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 86
    argCount: 4
    argNames:
    - rnh
    - client
    - vrf_id
    - srte_color
    argTypes:
    - struct rnh*
    - struct zserv*
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1134
    functionDepth: 2
    functionLinenumber: 1134
    functionLinenumberEnd: 1434
    functionName: zebra_send_rnh_update
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 2
    functionsReached:
    - ifindex2ifname
    - stream_put
    - zserv_send_message
    - flog_err
    - rnh_nexthop_valid
    - json_object_string_add
    - json_object_string_addf
    - stream_putc_at
    - stream_putc
    - rib_get_fib_backup_nhg
    - show_nexthop_json_helper
    - label2vni
    - stream_putw_at
    - zapi_nexthop_encode
    - if
    - stream_put_in_addr
    - zapi_nexthop_from_nexthop
    - rib_get_fib_nhg
    - stream_free
    - seg6local_action2str
    - monotime
    - json_object_int_add
    - ALL_NEXTHOPS_PTR
    - json_object_new_array
    - json_object_new_object
    - json_object_new_int
    - stream_new
    - zclient_create_header
    - json_object_array_add
    - vrf_id_to_name
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - SET_FLAG
    - json_object_boolean_true_add
    - json_object_object_add
    - IPV6_ADDR_SAME
    - BLACKHOLE_UNSPEC
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zebra_send_rnh_update(struct rnh *rnh, struct zserv *client,\n\t\t\t
      \ vrf_id_t vrf_id, uint32_t srte_color)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1448,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1450,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_rnh.c:1451,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1456,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rnh.c:1457,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1460,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_rnh.c:1461,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1466,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_rnh.c:1467,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1470,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1473,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1476,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1479,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1488,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_rnh.c:1488,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1490,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1491,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1493,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1494,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1496,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1497,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1499,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1500,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1506,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1509,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_rnh.c:1515,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1516,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1525,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_rnh.c:1526,1
    - Dst: seg6local_context2str
      Src: /src/frr/zebra/zebra_rnh.c:1532,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1537,1
    - Dst: seg6local_action2str
      Src: /src/frr/zebra/zebra_rnh.c:1538,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/zebra/zebra_rnh.c:1541,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1542,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1547,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1549,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1550,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1553,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 79
    argCount: 3
    argNames:
    - vty
    - re
    - nexthop
    argTypes:
    - struct vty*
    - struct route_entry*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1439
    functionDepth: 1
    functionLinenumber: 1439
    functionLinenumberEnd: 1555
    functionName: show_route_nexthop_helper
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 1
    functionsReached:
    - ifindex2ifname
    - vty_out
    - vrf_id_to_name
    - CHECK_FLAG
    - mpls_label2str
    - seg6local_action2str
    - seg6local_context2str
    - inet_ntop
    - IPV6_ADDR_SAME
    - IPV6_ADDR_CMP
    linkageType: ''
    returnType: void
    signature: "void show_route_nexthop_helper(struct vty *vty, const struct route_entry
      *re,\n\t\t\t       const struct nexthop *nexthop)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_rnh.c:1573,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_rnh.c:1574,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_rnh.c:1575,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_rnh.c:1577,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rnh.c:1579,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/zebra_rnh.c:1581,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1583,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_rnh.c:1584,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_rnh.c:1586,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1589,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rnh.c:1590,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1591,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1598,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:1600,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1602,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:1603,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_rnh.c:1608,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_rnh.c:1609,1
    - Dst: show_nexthop_json_helper
      Src: /src/frr/zebra/zebra_rnh.c:1611,1
    - Dst: show_route_nexthop_helper
      Src: /src/frr/zebra/zebra_rnh.c:1614,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1615,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/zebra_rnh.c:1620,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1622,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1624,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rnh.c:1625,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1631,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_rnh.c:1633,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_rnh.c:1635,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_rnh.c:1636,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1638,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:1640,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_rnh.c:1641,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_rnh.c:1643,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1648,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:1649,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_rnh.c:1655,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_rnh.c:1657,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1660,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_rnh.c:1664,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 3
    argNames:
    - rn
    - vty
    - json
    argTypes:
    - struct route_node*
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1557
    functionDepth: 2
    functionLinenumber: 1557
    functionLinenumberEnd: 1665
    functionName: print_rnh
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - json_object_boolean_add
    - show_route_nexthop_helper
    - vty_out
    - json_object_array_add
    - show_nexthop_json_helper
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - list_isempty
    - json_object_int_add
    - inet_ntop
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void print_rnh(struct route_node *rn, struct vty *vty, json_object
      *json)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rnh.c:1675,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1677,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rnh.c:1678,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rnh.c:1679,1
    - Dst: afi2str
      Src: /src/frr/zebra/zebra_rnh.c:1679,1
    - Dst: get_rnh_table
      Src: /src/frr/zebra/zebra_rnh.c:1682,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rnh.c:1684,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rnh.c:1688,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_rnh.c:1688,1
    - Dst: zebra_remove_rnh_client
      Src: /src/frr/zebra/zebra_rnh.c:1693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - vrf_id
    - afi
    - safi
    - client
    argTypes:
    - vrf_id_t
    - afi_t
    - safi_t
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1667
    functionDepth: 5
    functionLinenumber: 1667
    functionLinenumberEnd: 1696
    functionName: zebra_cleanup_rnh_client
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zebra_remove_rnh_client
    - route_top
    - afi2str
    - route_next
    - zlog_debug
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - zebra_route_string
    - get_rnh_table
    linkageType: ''
    returnType: int
    signature: "int zebra_cleanup_rnh_client(vrf_id_t vrf_id, afi_t afi, safi_t safi,\n\t\t\t\t
      \   struct zserv *client)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rnh.c:1704,1
    - Dst: zebra_cleanup_rnh_client
      Src: /src/frr/zebra/zebra_rnh.c:1707,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rnh.c:1707,1
    - Dst: zebra_cleanup_rnh_client
      Src: /src/frr/zebra/zebra_rnh.c:1709,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rnh.c:1709,1
    - Dst: zebra_cleanup_rnh_client
      Src: /src/frr/zebra/zebra_rnh.c:1711,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rnh.c:1711,1
    - Dst: zebra_cleanup_rnh_client
      Src: /src/frr/zebra/zebra_rnh.c:1713,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rnh.c:1713,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1699
    functionDepth: 6
    functionLinenumber: 1699
    functionLinenumberEnd: 1719
    functionName: zebra_client_cleanup_rnh
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zebra_cleanup_rnh_client
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int zebra_client_cleanup_rnh(struct zserv *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 2
    argNames:
    - zvrf
    - family
    argTypes:
    - struct zebra_vrf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1721
    functionDepth: 0
    functionLinenumber: 1721
    functionLinenumberEnd: 1728
    functionName: rnh_resolve_via_default
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rnh_resolve_via_default(struct zebra_vrf *zvrf, int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hide_p
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1733
    functionDepth: 0
    functionLinenumber: 1733
    functionLinenumberEnd: 1736
    functionName: rnh_set_hide_backups
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rnh_set_hide_backups(bool hide_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1738
    functionDepth: 0
    functionLinenumber: 1738
    functionLinenumberEnd: 1741
    functionName: rnh_get_hide_backups
    functionSourceFile: /src/frr/zebra/zebra_rnh.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool rnh_get_hide_backups(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vrf.c:52,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vrf.c:52,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_vrf.c:54,1
    - Dst: zsend_vrf_add
      Src: /src/frr/zebra/zebra_vrf.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 61
    functionName: zebra_vrf_add_update
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zsend_vrf_add
    - zvrf_name
    - zlog_debug
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void zebra_vrf_add_update(struct zebra_vrf *zvrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vrf.c:69,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vrf.c:69,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_vrf.c:71,1
    - Dst: zsend_vrf_delete
      Src: /src/frr/zebra/zebra_vrf.c:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 78
    functionName: zebra_vrf_delete_update
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zvrf_name
    - zlog_debug
    - zsend_vrf_delete
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void zebra_vrf_delete_update(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vrf.c:84,1
    - Dst: zsend_vrf_add
      Src: /src/frr/zebra/zebra_vrf.c:86,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vrf.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: zebra_vrf_update_all
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zsend_vrf_add
    - RB_FOREACH
    - vrf_info_lookup
    linkageType: ''
    returnType: void
    signature: void zebra_vrf_update_all(struct zserv *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vrf.c:96,1
    - Dst: zebra_vrf_alloc
      Src: /src/frr/zebra/zebra_vrf.c:98,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_vrf.c:99,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vrf.c:100,1
    - Dst: otable_init
      Src: /src/frr/zebra/zebra_vrf.c:102,1
    - Dst: router_id_init
      Src: /src/frr/zebra/zebra_vrf.c:104,1
    - Dst: table_manager_enable
      Src: /src/frr/zebra/zebra_vrf.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 110
    functionName: zebra_vrf_new
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - otable_init
    - table_manager_enable
    - zebra_vrf_alloc
    - zlog_debug
    - router_id_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: int zebra_vrf_new(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vrf.c:120,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vrf.c:122,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vrf.c:122,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vrf.c:123,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_vrf.c:125,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vrf.c:126,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vrf.c:128,1
    - Dst: rtadv_vrf_init
      Src: /src/frr/zebra/zebra_vrf.c:130,1
    - Dst: zebra_vrf_add_update
      Src: /src/frr/zebra/zebra_vrf.c:136,1
    - Dst: zebra_vrf_table_create
      Src: /src/frr/zebra/zebra_vrf.c:140,1
    - Dst: route_table_init
      Src: /src/frr/zebra/zebra_vrf.c:142,1
    - Dst: route_table_init
      Src: /src/frr/zebra/zebra_vrf.c:146,1
    - Dst: zebra_vxlan_vrf_enable
      Src: /src/frr/zebra/zebra_vrf.c:152,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/frr/zebra/zebra_vrf.c
    constantsTouched: []
    func_position:
      end: 155
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 155
    functionName: zebra_vrf_enable
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - zebra_vrf_table_create
    - zvrf_id
    - zvrf_name
    - route_table_init
    - zlog_debug
    - zebra_vrf_add_update
    - rtadv_vrf_init
    - zebra_vxlan_vrf_enable
    - assert
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: int zebra_vrf_enable(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vrf.c:165,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vrf.c:167,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vrf.c:167,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vrf.c:168,1
    - Dst: zebra_vxlan_vrf_disable
      Src: /src/frr/zebra/zebra_vrf.c:171,1
    - Dst: rtadv_vrf_terminate
      Src: /src/frr/zebra/zebra_vrf.c:173,1
    - Dst: zebra_vrf_delete_update
      Src: /src/frr/zebra/zebra_vrf.c:178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vrf.c:181,1
    - Dst: route_table_finish
      Src: /src/frr/zebra/zebra_vrf.c:186,1
    - Dst: route_table_finish
      Src: /src/frr/zebra/zebra_vrf.c:188,1
    - Dst: rib_close_table
      Src: /src/frr/zebra/zebra_vrf.c:192,1
    - Dst: zebra_vxlan_cleanup_tables
      Src: /src/frr/zebra/zebra_vrf.c:196,1
    - Dst: zebra_mpls_cleanup_tables
      Src: /src/frr/zebra/zebra_vrf.c:197,1
    - Dst: zebra_pw_exit
      Src: /src/frr/zebra/zebra_vrf.c:198,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/zebra_vrf.c:202,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_del_all
      Src: /src/frr/zebra/zebra_vrf.c:203,1
    - Dst: meta_queue_free
      Src: /src/frr/zebra/zebra_vrf.c:206,1
    - Dst: zebra_router_release_table
      Src: /src/frr/zebra/zebra_vrf.c:219,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/zebra/zebra_vrf.c
    constantsTouched: []
    func_position:
      end: 226
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 226
    functionName: zebra_vrf_disable
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zebra_pw_exit
    - zebra_vxlan_cleanup_tables
    - route_table_finish
    - if_nbr_ipv6ll_to_ipv4ll_neigh_del_all
    - zvrf_id
    - zvrf_name
    - CHECK_FLAG
    - zebra_vrf_delete_update
    - FOR_ALL_INTERFACES
    - rib_close_table
    - zlog_debug
    - zebra_router_release_table
    - zebra_vxlan_vrf_disable
    - rtadv_vrf_terminate
    - zebra_mpls_cleanup_tables
    - meta_queue_free
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vrf_disable(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vrf.c:233,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vrf.c:235,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vrf.c:235,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vrf.c:236,1
    - Dst: table_manager_disable
      Src: /src/frr/zebra/zebra_vrf.c:238,1
    - Dst: meta_queue_free
      Src: /src/frr/zebra/zebra_vrf.c:241,1
    - Dst: zebra_vxlan_close_tables
      Src: /src/frr/zebra/zebra_vrf.c:244,1
    - Dst: zebra_mpls_close_tables
      Src: /src/frr/zebra/zebra_vrf.c:245,1
    - Dst: otable_pop
      Src: /src/frr/zebra/zebra_vrf.c:247,1
    - Dst: zebra_router_release_table
      Src: /src/frr/zebra/zebra_vrf.c:249,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vrf.c:251,1
    - Dst: otable_pop
      Src: /src/frr/zebra/zebra_vrf.c:253,1
    - Dst: zebra_vxlan_vrf_delete
      Src: /src/frr/zebra/zebra_vrf.c:257,1
    - Dst: zebra_routemap_vrf_delete
      Src: /src/frr/zebra/zebra_vrf.c:258,1
    - Dst: list_delete_all_node
      Src: /src/frr/zebra/zebra_vrf.c:260,1
    - Dst: list_delete_all_node
      Src: /src/frr/zebra/zebra_vrf.c:261,1
    - Dst: list_delete_all_node
      Src: /src/frr/zebra/zebra_vrf.c:263,1
    - Dst: list_delete_all_node
      Src: /src/frr/zebra/zebra_vrf.c:264,1
    - Dst: otable_fini
      Src: /src/frr/zebra/zebra_vrf.c:266,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vrf.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/frr/zebra/zebra_vrf.c
    constantsTouched: []
    func_position:
      end: 271
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 271
    functionName: zebra_vrf_delete
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zebra_mpls_close_tables
    - zvrf_id
    - zvrf_name
    - zebra_vxlan_close_tables
    - meta_queue_free
    - zebra_router_release_table
    - zlog_debug
    - otable_pop
    - list_delete_all_node
    - XFREE
    - zebra_routemap_vrf_delete
    - otable_fini
    - zebra_vxlan_vrf_delete
    - table_manager_disable
    - assert
    linkageType: ''
    returnType: int
    signature: int zebra_vrf_delete(struct vrf *vrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vrf.c:282,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_vrf.c:292,1
    - Dst: otable_find
      Src: /src/frr/zebra/zebra_vrf.c:297,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - afi
    - safi
    - vrf_id
    - table_id
    argTypes:
    - afi_t
    - safi_t
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 303
    functionName: zebra_vrf_lookup_table_with_table_id
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_table
    - otable_find
    - vrf_info_lookup
    linkageType: ''
    returnType: struct route_table
    signature: "struct route_table *zebra_vrf_lookup_table_with_table_id(afi_t afi,
      safi_t safi,\n\t\t\t\t\t\t\t vrf_id_t vrf_id,\n\t\t\t\t\t\t\t uint32_t table_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vrf.c:309,1
    - Dst: zebra_vrf_lookup_table_with_table_id
      Src: /src/frr/zebra/zebra_vrf.c:313,1
    - Dst: zebra_router_get_table
      Src: /src/frr/zebra/zebra_vrf.c:320,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vrf.c:322,1
    - Dst: otable_add
      Src: /src/frr/zebra/zebra_vrf.c:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - afi
    - safi
    - vrf_id
    - table_id
    argTypes:
    - afi_t
    - safi_t
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 331
    functionName: zebra_vrf_get_table_with_table_id
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 3
    functionsReached:
    - zebra_vrf_lookup_table_with_table_id
    - XCALLOC
    - zebra_router_get_table
    - vrf_info_lookup
    - otable_add
    linkageType: ''
    returnType: struct route_table
    signature: "struct route_table *zebra_vrf_get_table_with_table_id(afi_t afi, safi_t
      safi,\n\t\t\t\t\t\t      vrf_id_t vrf_id,\n\t\t\t\t\t\t      uint32_t table_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_free_rnh
      Src: /src/frr/zebra/zebra_vrf.c:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: zebra_rnhtable_node_cleanup
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zebra_free_rnh
    linkageType: ''
    returnType: void
    signature: "void zebra_rnhtable_node_cleanup(struct route_table *table,\n\t\t\t\t\tstruct
      route_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vrf.c:349,1
    - Dst: zebra_router_get_table
      Src: /src/frr/zebra/zebra_vrf.c:352,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vrf.c:354,1
    - Dst: afi2family
      Src: /src/frr/zebra/zebra_vrf.c:355,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/zebra/zebra_vrf.c:357,1
    - Dst: zebra_rib_create_dest
      Src: /src/frr/zebra/zebra_vrf.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - zvrf
    - afi
    - safi
    argTypes:
    - struct zebra_vrf*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (!zvrf->table[afi][safi])
      pos:
        line_end: 348
        line_start: 348
        source_file: /src/frr/zebra/zebra_vrf.c
    constantsTouched: []
    func_position:
      end: 359
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 359
    functionName: zebra_vrf_table_create
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 1
    functionsReached:
    - memset
    - zebra_router_get_table
    - afi2family
    - zebra_rib_create_dest
    - assert
    - srcdest_rnode_get
    linkageType: ''
    returnType: void
    signature: "void zebra_vrf_table_create(struct zebra_vrf *zvrf, afi_t afi,\n\t\t\t\t
      \  safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vrf.c:366,1
    - Dst: zebra_vxlan_init_tables
      Src: /src/frr/zebra/zebra_vrf.c:371,1
    - Dst: zebra_mpls_init_tables
      Src: /src/frr/zebra/zebra_vrf.c:372,1
    - Dst: zebra_pw_init
      Src: /src/frr/zebra/zebra_vrf.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 377
    functionName: zebra_vrf_alloc
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 1
    functionsReached:
    - zebra_pw_init
    - zebra_vxlan_init_tables
    - zebra_mpls_init_tables
    - XCALLOC
    linkageType: ''
    returnType: struct zebra_vrf
    signature: struct zebra_vrf *zebra_vrf_alloc(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vrf.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 383
    functionName: zebra_vrf_lookup_by_id
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 22
    functionsReached:
    - vrf_info_lookup
    linkageType: ''
    returnType: struct zebra_vrf
    signature: struct zebra_vrf *zebra_vrf_lookup_by_id(vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/zebra_vrf.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 398
    functionName: zebra_vrf_lookup_by_name
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 3
    functionsReached:
    - vrf_lookup_by_name
    linkageType: ''
    returnType: struct zebra_vrf
    signature: struct zebra_vrf *zebra_vrf_lookup_by_name(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vrf.c:403,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - afi
    - safi
    - vrf_id
    argTypes:
    - afi_t
    - safi_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 412
    functionName: zebra_vrf_table
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 18
    functionsReached:
    - vrf_info_lookup
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *zebra_vrf_table(afi_t afi, safi_t safi, vrf_id_t
      vrf_id)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vrf.c:419,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vrf.c:425,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:427,1
    - Dst: is_l3vni_for_prefix_routes_only
      Src: /src/frr/zebra/zebra_vrf.c:428,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:433,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:436,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:440,1
    - Dst: vty_frame
      Src: /src/frr/zebra/zebra_vrf.c:444,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vrf.c:444,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:446,1
    - Dst: is_l3vni_for_prefix_routes_only
      Src: /src/frr/zebra/zebra_vrf.c:447,1
    - Dst: zebra_ns_config_write
      Src: /src/frr/zebra/zebra_vrf.c:451,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:453,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:456,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_vrf.c:458,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:460,1
    - Dst: zebra_routemap_config_write_protocol
      Src: /src/frr/zebra/zebra_vrf.c:466,1
    - Dst: router_id_write
      Src: /src/frr/zebra/zebra_vrf.c:467,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vrf.c:469,1
    - Dst: vty_endframe
      Src: /src/frr/zebra/zebra_vrf.c:470,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:472,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 33
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 475
    functionName: vrf_config_write
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - vty_out
    - zvrf_id
    - zvrf_name
    - zebra_routemap_config_write_protocol
    - zebra_ns_config_write
    - router_id_write
    - is_l3vni_for_prefix_routes_only
    - vty_frame
    - RB_FOREACH
    - vty_endframe
    linkageType: ''
    returnType: int
    signature: int vrf_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_netns_handler_create
      Src: /src/frr/zebra/zebra_vrf.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 494
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_netns_handler_create
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_vrf.c:547,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_vrf.c:549,1
    - Dst: vrf_enable
      Src: /src/frr/zebra/zebra_vrf.c:551,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ns_id
    - opaqueptr
    argTypes:
    - ns_id_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 552
    functionName: vrf_update_vrf_id
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - vrf_enable
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void vrf_update_vrf_id(ns_id_t ns_id, void *opaqueptr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:565,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_vrf.c:569,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_vrf.c:575,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:577,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_vrf.c:581,1
    - Dst: ns_lookup_name
      Src: /src/frr/zebra/zebra_vrf.c:587,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:594,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_vrf.c:598,1
    - Dst: ns_get_created
      Src: /src/frr/zebra/zebra_vrf.c:602,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_vrf.c:608,1
    - Dst: basename
      Src: /src/frr/zebra/zebra_vrf.c:608,1
    - Dst: ns_enable
      Src: /src/frr/zebra/zebra_vrf.c:610,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vrf.c:612,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_vrf.c:615,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 6
    argNames:
    - vty
    - vrf
    - pathname
    - ns_id
    - internal_ns_id
    - rel_def_ns_id
    argTypes:
    - struct vty*
    - struct vrf*
    - char*
    - ns_id_t
    - ns_id_t
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 621
    functionName: zebra_vrf_netns_handler_create
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 1
    functionsReached:
    - ns_lookup_name
    - zlog_info
    - vty_out
    - ns_enable
    - strlcpy
    - strcmp
    - ns_get_created
    - basename
    linkageType: ''
    returnType: int
    signature: "int zebra_vrf_netns_handler_create(struct vty *vty, struct vrf *vrf,\n\t\t\t\t
      \  char *pathname, ns_id_t ns_id,\n\t\t\t\t   ns_id_t internal_ns_id,\n\t\t\t\t
      \  ns_id_t rel_def_ns_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/zebra/zebra_vrf.c:626,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_vrf.c:629,1
    - Dst: vrf_cmd_init
      Src: /src/frr/zebra/zebra_vrf.c:631,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_vrf.c:633,1
    - Dst: ns_have_netns
      Src: /src/frr/zebra/zebra_vrf.c:633,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vrf.c:635,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_vrf.c:636,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 638
    functionName: zebra_vrf_init
    functionSourceFile: /src/frr/zebra/zebra_vrf.c
    functionUses: 1
    functionsReached:
    - vrf_is_backend_netns
    - hook_register
    - vrf_init
    - ns_have_netns
    - install_element
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void zebra_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: zebra_evpn_mac_is_static
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mac_is_static(struct zebra_mac *mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: zebra_evpn_mac_is_ready_for_bgp
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mac_is_ready_for_bgp(uint32_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.h:186,1
    - Dst: zebra_evpn_mac_stop_hold_timer
      Src: /src/frr/zebra/zebra_evpn_mac.h:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: zebra_evpn_mac_clear_sync_info
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.h
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    - zebra_evpn_mac_stop_hold_timer
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_clear_sync_info(struct zebra_mac *mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_evpn_mac.h:192,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.h:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: zebra_evpn_mac_in_use
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.h
    functionUses: 0
    functionsReached:
    - list_isempty
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mac_in_use(struct zebra_mac *mac)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/if_netlink.c:75,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:78,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:84,1
    - Dst: if_is_up
      Src: /src/frr/zebra/if_netlink.c:87,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:88,1
    - Dst: if_delete_update
      Src: /src/frr/zebra/if_netlink.c:92,1
    - Dst: if_set_index
      Src: /src/frr/zebra/if_netlink.c:95,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - ifp
    - ifi_index
    - zns
    argTypes:
    - struct interface*
    - ifindex_t
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 96
    functionName: set_ifindex
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - if_set_index
    - if_delete_update
    - if_lookup_by_index_per_ns
    - flog_err
    - zlog_debug
    - if_is_up
    linkageType: ''
    returnType: void
    signature: "void set_ifindex(struct interface *ifp, ifindex_t ifi_index,\n\t\t\tstruct
      zebra_ns *zns)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/if_netlink.c:107,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:110,1
    - Dst: memcpy
      Src: /src/frr/zebra/if_netlink.c:114,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - tb
    - ifp
    argTypes:
    - struct rtattr**
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 127
    functionName: netlink_interface_update_hw_addr
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - memcpy
    - zlog_debug
    - RTA_DATA
    - RTA_PAYLOAD
    linkageType: ''
    returnType: void
    signature: "void netlink_interface_update_hw_addr(struct rtattr **tb,\n\t\t\t\t\t
      \    struct interface *ifp)"
  - BBCount: 50
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 101
    argCount: 1
    argNames:
    - hwt
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 238
    functionName: netlink_to_zebra_link_type
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum zebra_link_type
    signature: enum zebra_link_type netlink_to_zebra_link_type(unsigned int hwt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_if_init
      Src: /src/frr/zebra/if_netlink.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ifp
    - zif_type
    - zif_slave_type
    argTypes:
    - struct interface*
    - enum zebra_iftype
    - enum zebra_slave_iftype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 258
    functionName: zebra_if_set_ziftype
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_if_init
    linkageType: ''
    returnType: void
    signature: "void zebra_if_set_ziftype(struct interface *ifp,\n\t\t\t\t\tenum zebra_iftype
      zif_type,\n\t\t\t\t\tenum zebra_slave_iftype zif_slave_type)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:268,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:270,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:272,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:274,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:276,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:278,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:280,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:282,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - kind
    - zif_type
    argTypes:
    - char*
    - enum zebra_iftype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 286
    functionName: netlink_determine_zebra_iftype
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void netlink_determine_zebra_iftype(const char *kind,\n\t\t\t\t\t
      \  enum zebra_iftype *zif_type)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/if_netlink.c:298,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:300,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:304,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:310,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:314,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:320,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:324,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/if_netlink.c:327,1
    - Dst: vrf_lookup_by_table
      Src: /src/frr/zebra/if_netlink.c:330,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/if_netlink.c:332,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:334,1
    - Dst: exit
      Src: /src/frr/zebra/if_netlink.c:338,1
    - Dst: vrf_update
      Src: /src/frr/zebra/if_netlink.c:342,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:344,1
    - Dst: vrf_enable
      Src: /src/frr/zebra/if_netlink.c:365,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:375,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/if_netlink.c:378,1
    - Dst: flog_warn
      Src: /src/frr/zebra/if_netlink.c:381,1
    - Dst: vrf_delete
      Src: /src/frr/zebra/if_netlink.c:386,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 4
    argNames:
    - h
    - tb
    - ns_id
    - name
    argTypes:
    - struct nlmsghdr*
    - struct rtattr*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 288
    functionDepth: 3
    functionLinenumber: 288
    functionLinenumberEnd: 388
    functionName: netlink_vrf_change
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - exit
    - vrf_enable
    - flog_warn
    - vrf_update
    - netlink_parse_rtattr_nested
    - NLMSG_DATA
    - vrf_lookup_by_table
    - zlog_debug
    - RTA_DATA
    - flog_err
    - vrf_delete
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: "void netlink_vrf_change(struct nlmsghdr *h, struct rtattr *tb,\n\t\t\t
      \      uint32_t ns_id, const char *name)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:401,1
    - Dst: strlcpy
      Src: /src/frr/zebra/if_netlink.c:404,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:407,1
    - Dst: vrf_socket
      Src: /src/frr/zebra/if_netlink.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:417,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_netlink.c:418,1
    - Dst: vrf_ioctl
      Src: /src/frr/zebra/if_netlink.c:425,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:430,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_netlink.c:432,1
    - Dst: close
      Src: /src/frr/zebra/if_netlink.c:440,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - interface
    - error
    argTypes:
    - struct interface*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 443
    functionName: get_iflink_speed
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - vrf_ioctl
    - memset
    - vrf_socket
    - strlcpy
    - close
    - zlog_debug
    - safe_strerror
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_iflink_speed(struct interface *interface, int *error)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/zebra/if_netlink.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:417,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_netlink.c:418,1
    - Dst: vrf_ioctl
      Src: /src/frr/zebra/if_netlink.c:425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 427
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - vrf_ioctl
    - zlog_debug
    - safe_strerror
    - vrf_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_iflink_speed
      Src: /src/frr/zebra/if_netlink.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - error
    argTypes:
    - struct interface*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: kernel_get_speed
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - get_iflink_speed
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t kernel_get_speed(struct interface *ifp, int *error)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:466,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:469,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/if_netlink.c:472,1
    - Dst: dplane_ctx_gre_get_info
      Src: /src/frr/zebra/if_netlink.c:474,1
    - Dst: dplane_ctx_gre_get_link_ifindex
      Src: /src/frr/zebra/if_netlink.c:479,1
    - Dst: dplane_ctx_gre_get_mtu
      Src: /src/frr/zebra/if_netlink.c:480,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:482,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/if_netlink.c:485,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/if_netlink.c:489,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/if_netlink.c:492,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:496,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:500,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:505,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:510,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:514,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/if_netlink.c:518,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/if_netlink.c:519,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/if_netlink.c:521,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 450
    functionDepth: 3
    functionLinenumber: 450
    functionLinenumberEnd: 522
    functionName: netlink_gre_set_msg_encoder
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_gre_get_info
    - dplane_ctx_gre_get_link_ifindex
    - nl_attr_nest_end
    - memset
    - nl_attr_put32
    - NLMSG_ALIGN
    - nl_attr_nest
    - nl_attr_put
    - dplane_ctx_get_ifindex
    - dplane_ctx_gre_get_mtu
    - NLMSG_LENGTH
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_gre_set_msg_encoder(struct zebra_dplane_ctx *ctx,
      void *buf,\n\t\t\t    size_t buflen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:529,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:530,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - link_data
    - bridge_info
    argTypes:
    - struct rtattr*
    - struct zebra_l2info_bridge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 535
    functionName: netlink_extract_bridge_info
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - netlink_parse_rtattr_nested
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_extract_bridge_info(struct rtattr *link_data,\n\t\t\t\t
      \      struct zebra_l2info_bridge *bridge_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:543,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:544,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:547,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - link_data
    - vlan_info
    argTypes:
    - struct rtattr*
    - struct zebra_l2info_vlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 537
    functionDepth: 3
    functionLinenumber: 537
    functionLinenumberEnd: 554
    functionName: netlink_extract_vlan_info
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - zlog_debug
    - netlink_parse_rtattr_nested
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_extract_vlan_info(struct rtattr *link_data,\n\t\t\t\t
      \    struct zebra_l2info_vlan *vlan_info)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:561,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:562,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:563,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:567,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:571,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:574,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:578,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:582,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:585,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:587,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:591,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:593,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - link_data
    - gre_info
    argTypes:
    - struct rtattr*
    - struct zebra_l2info_gre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 556
    functionDepth: 3
    functionLinenumber: 556
    functionLinenumberEnd: 595
    functionName: netlink_extract_gre_info
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - zlog_debug
    - netlink_parse_rtattr_nested
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_extract_gre_info(struct rtattr *link_data,\n\t\t\t\t    struct
      zebra_l2info_gre *gre_info)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:606,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:607,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:609,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:611,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:623,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:629,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:637,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:641,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:648,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:654,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:657,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - link_data
    - vxl_info
    argTypes:
    - struct rtattr*
    - struct zebra_l2info_vxlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 597
    functionDepth: 3
    functionLinenumber: 597
    functionLinenumberEnd: 661
    functionName: netlink_extract_vxlan_info
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - zlog_debug
    - netlink_parse_rtattr_nested
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_extract_vxlan_info(struct rtattr *link_data,\n\t\t\t\t
      \     struct zebra_l2info_vxlan *vxl_info)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/if_netlink.c:675,1
    - Dst: netlink_extract_bridge_info
      Src: /src/frr/zebra/if_netlink.c:678,1
    - Dst: zebra_l2_bridge_add_update
      Src: /src/frr/zebra/if_netlink.c:679,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/if_netlink.c:680,1
    - Dst: netlink_extract_vlan_info
      Src: /src/frr/zebra/if_netlink.c:683,1
    - Dst: zebra_l2_vlanif_update
      Src: /src/frr/zebra/if_netlink.c:684,1
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/if_netlink.c:685,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/if_netlink.c:686,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/if_netlink.c:687,1
    - Dst: netlink_extract_vxlan_info
      Src: /src/frr/zebra/if_netlink.c:690,1
    - Dst: zebra_l2_vxlanif_add_update
      Src: /src/frr/zebra/if_netlink.c:692,1
    - Dst: zebra_if_update_link
      Src: /src/frr/zebra/if_netlink.c:695,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/if_netlink.c:697,1
    - Dst: netlink_extract_gre_info
      Src: /src/frr/zebra/if_netlink.c:700,1
    - Dst: zebra_l2_greif_add_update
      Src: /src/frr/zebra/if_netlink.c:702,1
    - Dst: zebra_if_update_link
      Src: /src/frr/zebra/if_netlink.c:705,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - ifp
    - link_data
    - add
    - link_nsid
    argTypes:
    - struct interface*
    - struct rtattr*
    - int
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 668
    functionDepth: 4
    functionLinenumber: 668
    functionLinenumberEnd: 708
    functionName: netlink_interface_update_l2info
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - zebra_l2_bridge_add_update
    - zebra_evpn_acc_bd_svi_set
    - zebra_l2_greif_add_update
    - IS_ZEBRA_IF_VLAN
    - netlink_extract_bridge_info
    - zebra_l2_vlanif_update
    - netlink_extract_vlan_info
    - IS_ZEBRA_IF_BRIDGE
    - netlink_extract_vxlan_info
    - netlink_extract_gre_info
    - IS_ZEBRA_IF_VXLAN
    - zebra_if_update_link
    - zebra_l2_vxlanif_add_update
    - if_is_operative
    - IS_ZEBRA_IF_GRE
    linkageType: ''
    returnType: void
    signature: "void netlink_interface_update_l2info(struct interface *ifp,\n\t\t\t\t\t
      \   struct rtattr *link_data, int add,\n\t\t\t\t\t    ns_id_t link_nsid)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:725,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:726,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:728,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/if_netlink.c:728,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/if_netlink.c:728,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/if_netlink.c:729,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:734,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:735,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:743,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:745,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:746,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:750,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:767,1
    - Dst: zebra_vxlan_vni_table_create
      Src: /src/frr/zebra/if_netlink.c:774,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:782,1
    - Dst: hash_get
      Src: /src/frr/zebra/if_netlink.c:785,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:790,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:791,1
    - Dst: zebra_vxlan_if_vni_table_add_update
      Src: /src/frr/zebra/if_netlink.c:795,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 2
    argNames:
    - ifp
    - af_spec
    argTypes:
    - struct interface*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 710
    functionDepth: 4
    functionLinenumber: 710
    functionLinenumberEnd: 798
    functionName: netlink_bridge_vxlan_vlan_vni_map_update
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - memset
    - netlink_parse_rtattr_nested
    - zlog_debug
    - RTA_DATA
    - zebra_vxlan_if_vni_table_add_update
    - hash_get
    - zebra_vxlan_vni_table_create
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: int
    signature: "int netlink_bridge_vxlan_vlan_vni_map_update(struct interface *ifp,\n\t\t\t\t\t\t
      \   struct rtattr *af_spec)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_VXLAN_IF_SVD
      Src: /src/frr/zebra/if_netlink.c:814,1
    - Dst: netlink_bridge_vxlan_vlan_vni_map_update
      Src: /src/frr/zebra/if_netlink.c:815,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:820,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:824,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:830,1
    - Dst: zebra_l2_vxlanif_update_access_vlan
      Src: /src/frr/zebra/if_netlink.c:832,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ifp
    - af_spec
    argTypes:
    - struct interface*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 800
    functionDepth: 5
    functionLinenumber: 800
    functionLinenumberEnd: 834
    functionName: netlink_bridge_vxlan_update
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - zebra_l2_vxlanif_update_access_vlan
    - IS_ZEBRA_VXLAN_IF_SVD
    - netlink_parse_rtattr_nested
    - zlog_debug
    - RTA_DATA
    - netlink_bridge_vxlan_vlan_vni_map_update
    linkageType: ''
    returnType: int
    signature: "int netlink_bridge_vxlan_update(struct interface *ifp,\n\t\tstruct
      rtattr *af_spec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bf_init
      Src: /src/frr/zebra/if_netlink.c:851,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:854,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/if_netlink.c:854,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/if_netlink.c:855,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/if_netlink.c:855,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:860,1
    - Dst: zebra_vlan_bitmap_compute
      Src: /src/frr/zebra/if_netlink.c:870,1
    - Dst: zebra_vlan_mbr_re_eval
      Src: /src/frr/zebra/if_netlink.c:875,1
    - Dst: bf_free
      Src: /src/frr/zebra/if_netlink.c:877,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - ifp
    - af_spec
    argTypes:
    - struct interface*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 878
    functionName: netlink_bridge_vlan_update
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - bf_init
    - zebra_vlan_bitmap_compute
    - zebra_vlan_mbr_re_eval
    - bf_free
    - RTA_DATA
    - RTA_PAYLOAD
    - RTA_OK
    linkageType: ''
    returnType: void
    signature: "void netlink_bridge_vlan_update(struct interface *ifp,\n\t\tstruct
      rtattr *af_spec)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/if_netlink.c:891,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/if_netlink.c:892,1
    - Dst: IFLA_RTA
      Src: /src/frr/zebra/if_netlink.c:892,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:896,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/if_netlink.c:899,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/if_netlink.c:899,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:901,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/if_netlink.c:909,1
    - Dst: netlink_bridge_vxlan_update
      Src: /src/frr/zebra/if_netlink.c:910,1
    - Dst: bf_is_inited
      Src: /src/frr/zebra/if_netlink.c:916,1
    - Dst: netlink_bridge_vlan_update
      Src: /src/frr/zebra/if_netlink.c:917,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - h
    - len
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - int
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 880
    functionDepth: 6
    functionLinenumber: 880
    functionLinenumberEnd: 920
    functionName: netlink_bridge_interface
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - IFLA_RTA
    - netlink_parse_rtattr
    - bf_is_inited
    - if_lookup_by_index_per_ns
    - NLMSG_DATA
    - netlink_bridge_vlan_update
    - netlink_bridge_vxlan_update
    - zlog_debug
    - RTA_DATA
    - IS_ZEBRA_IF_VXLAN
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int netlink_bridge_interface(struct nlmsghdr *h, int len, ns_id_t
      ns_id,\n\t\t\t\t    int startup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/if_netlink.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rc_bitfield
    argTypes:
    - uint32_t
    assertStmts:
    - condition: (frr_protodown_r_bit < 32)
      pos:
        line_end: 924
        line_start: 924
        source_file: /src/frr/zebra/if_netlink.c
    constantsTouched: []
    func_position:
      end: 927
      start: 922
    functionDepth: 1
    functionLinenumber: 922
    functionLinenumberEnd: 927
    functionName: is_if_protodown_reason_only_frr
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool is_if_protodown_reason_only_frr(uint32_t rc_bitfield)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:943,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:946,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:950,1
    - Dst: COND_FLAG
      Src: /src/frr/zebra/if_netlink.c:959,1
    - Dst: is_if_protodown_reason_only_frr
      Src: /src/frr/zebra/if_netlink.c:961,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/if_netlink.c:964,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:969,1
    - Dst: COND_FLAG
      Src: /src/frr/zebra/if_netlink.c:973,1
    - Dst: zebra_evpn_is_es_bond_member
      Src: /src/frr/zebra/if_netlink.c:975,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/if_netlink.c:978,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:980,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/if_netlink.c:987,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:989,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:996,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/if_netlink.c:1001,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/if_netlink.c:1003,1
    - Dst: dplane_intf_update
      Src: /src/frr/zebra/if_netlink.c:1005,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 32
    argCount: 2
    argNames:
    - zif
    - tb
    argTypes:
    - struct zebra_if*
    - struct rtattr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 935
    functionDepth: 3
    functionLinenumber: 935
    functionLinenumberEnd: 1007
    functionName: netlink_proc_dplane_if_protodown
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - COND_FLAG
    - ZEBRA_IF_IS_PROTODOWN
    - is_if_protodown_reason_only_frr
    - CHECK_FLAG
    - netlink_parse_rtattr_nested
    - zebra_evpn_is_es_bond_member
    - dplane_intf_update
    - zlog_debug
    - RTA_DATA
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void netlink_proc_dplane_if_protodown(struct zebra_if *zif,\n\t\t\t\t\t
      \    struct rtattr **tb)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:1014,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - linkinfo
    argTypes:
    - struct rtattr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1009
    functionDepth: 3
    functionLinenumber: 1009
    functionLinenumberEnd: 1021
    functionName: netlink_parse_lacp_bypass
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - netlink_parse_rtattr_nested
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t netlink_parse_lacp_bypass(struct rtattr **linkinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/if_netlink.c:1031,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1037,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/if_netlink.c:1042,1
    - Dst: dplane_intf_update
      Src: /src/frr/zebra/if_netlink.c:1043,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1044
    functionName: if_sweep_protodown
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - ZEBRA_IF_IS_PROTODOWN
    - zlog_debug
    - UNSET_FLAG
    - dplane_intf_update
    linkageType: ''
    returnType: void
    signature: void if_sweep_protodown(struct zebra_if *zif)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/if_netlink.c:1072,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/if_netlink.c:1074,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/if_netlink.c:1075,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1080,1
    - Dst: zlog_err
      Src: /src/frr/zebra/if_netlink.c:1082,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1085,1
    - Dst: netlink_bridge_interface
      Src: /src/frr/zebra/if_netlink.c:1091,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:1094,1
    - Dst: netlink_parse_rtattr_flags
      Src: /src/frr/zebra/if_netlink.c:1095,1
    - Dst: IFLA_RTA
      Src: /src/frr/zebra/if_netlink.c:1095,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1101,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1108,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1111,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:1114,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1118,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1121,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:1123,1
    - Dst: netlink_determine_zebra_iftype
      Src: /src/frr/zebra/if_netlink.c:1124,1
    - Dst: netlink_determine_zebra_iftype
      Src: /src/frr/zebra/if_netlink.c:1126,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/if_netlink.c:1130,1
    - Dst: netlink_vrf_change
      Src: /src/frr/zebra/if_netlink.c:1131,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:1136,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/if_netlink.c:1137,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1139,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:1140,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1143,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:1144,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1146,1
    - Dst: netlink_parse_lacp_bypass
      Src: /src/frr/zebra/if_netlink.c:1147,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/if_netlink.c:1151,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1156,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1159,1
    - Dst: ns_id_get_absolute
      Src: /src/frr/zebra/if_netlink.c:1160,1
    - Dst: if_get_by_name
      Src: /src/frr/zebra/if_netlink.c:1163,1
    - Dst: set_ifindex
      Src: /src/frr/zebra/if_netlink.c:1164,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1167,1
    - Dst: get_iflink_speed
      Src: /src/frr/zebra/if_netlink.c:1169,1
    - Dst: zebra_if_set_ziftype
      Src: /src/frr/zebra/if_netlink.c:1173,1
    - Dst: IS_ZEBRA_IF_VRF
      Src: /src/frr/zebra/if_netlink.c:1174,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/if_netlink.c:1175,1
    - Dst: XFREE
      Src: /src/frr/zebra/if_netlink.c:1187,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/if_netlink.c:1188,1
    - Dst: netlink_to_zebra_link_type
      Src: /src/frr/zebra/if_netlink.c:1192,1
    - Dst: netlink_interface_update_hw_addr
      Src: /src/frr/zebra/if_netlink.c:1194,1
    - Dst: if_add_update
      Src: /src/frr/zebra/if_netlink.c:1196,1
    - Dst: netlink_interface_update_l2info
      Src: /src/frr/zebra/if_netlink.c:1200,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/if_netlink.c:1202,1
    - Dst: zebra_l2if_update_bond
      Src: /src/frr/zebra/if_netlink.c:1203,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/if_netlink.c:1204,1
    - Dst: zebra_l2if_update_bridge_slave
      Src: /src/frr/zebra/if_netlink.c:1205,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/if_netlink.c:1207,1
    - Dst: zebra_l2if_update_bond_slave
      Src: /src/frr/zebra/if_netlink.c:1208,1
    - Dst: netlink_proc_dplane_if_protodown
      Src: /src/frr/zebra/if_netlink.c:1211,1
    - Dst: if_sweep_protodown
      Src: /src/frr/zebra/if_netlink.c:1212,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 94
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1050
    functionDepth: 7
    functionLinenumber: 1050
    functionLinenumberEnd: 1216
    functionName: netlink_interface
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - netlink_bridge_interface
    - if_get_by_name
    - get_iflink_speed
    - netlink_vrf_change
    - netlink_parse_rtattr_nested
    - RTA_DATA
    - netlink_interface_update_l2info
    - frrtrace
    - ns_id_get_absolute
    - IS_ZEBRA_IF_BOND_SLAVE
    - memset
    - IS_ZEBRA_IF_BOND
    - NLMSG_DATA
    - zlog_debug
    - if_sweep_protodown
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - set_ifindex
    - zebra_l2if_update_bridge_slave
    - zebra_ns_lookup
    - if_add_update
    - zebra_l2if_update_bond_slave
    - zlog_err
    - zebra_l2if_update_bond
    - zebra_if_set_ziftype
    - netlink_parse_rtattr_flags
    - XFREE
    - NLMSG_LENGTH
    - netlink_proc_dplane_if_protodown
    - XSTRDUP
    - IFLA_RTA
    - strcmp
    - netlink_parse_lacp_bypass
    - netlink_determine_zebra_iftype
    - netlink_to_zebra_link_type
    - SET_FLAG
    - netlink_interface_update_hw_addr
    - IS_ZEBRA_IF_VRF
    linkageType: ''
    returnType: int
    signature: int netlink_interface(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/if_netlink.c:1228,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:1232,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1235,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:1240,1
    - Dst: netlink_request
      Src: /src/frr/zebra/if_netlink.c:1242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - netlink_cmd
    - family
    - type
    - filter_mask
    argTypes:
    - struct nlsock*
    - int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1219
    functionDepth: 3
    functionLinenumber: 1219
    functionLinenumberEnd: 1243
    functionName: netlink_request_intf_addr
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put32
    - memset
    - netlink_request
    - frrtrace
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: "int netlink_request_intf_addr(struct nlsock *netlink_cmd, int family,\n\t\t\t\t
      \    int type, uint32_t filter_mask)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/if_netlink.c:1251,1
    - Dst: assert
      Src: /src/frr/zebra/if_netlink.c:1252,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/if_netlink.c:1254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts:
    - condition: (op == DPLANE_OP_GRE_SET)
      pos:
        line_end: 1251
        line_start: 1251
        source_file: /src/frr/zebra/if_netlink.c
    constantsTouched: []
    func_position:
      end: 1257
      start: 1245
    functionDepth: 7
    functionLinenumber: 1245
    functionLinenumberEnd: 1257
    functionName: netlink_put_gre_set_msg
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    - dplane_ctx_get_op
    - assert
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: enum netlink_msg_status netlink_put_gre_set_msg(struct nl_batch *bth,
      struct zebra_dplane_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/if_netlink.c:1267,1
    - Dst: netlink_request_intf_addr
      Src: /src/frr/zebra/if_netlink.c:1270,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/if_netlink.c:1273,1
    - Dst: netlink_request_intf_addr
      Src: /src/frr/zebra/if_netlink.c:1279,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/if_netlink.c:1283,1
    - Dst: netlink_tunneldump_read
      Src: /src/frr/zebra/if_netlink.c:1298,1
    - Dst: zebra_if_update_all_links
      Src: /src/frr/zebra/if_netlink.c:1303,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1260
    functionDepth: 5
    functionLinenumber: 1260
    functionLinenumberEnd: 1305
    functionName: interface_lookup_netlink
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request_intf_addr
    - netlink_tunneldump_read
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    - zebra_if_update_all_links
    linkageType: ''
    returnType: int
    signature: int interface_lookup_netlink(struct zebra_ns *zns)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/if_netlink.c:1320,1
    - Dst: netlink_request_intf_addr
      Src: /src/frr/zebra/if_netlink.c:1323,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/if_netlink.c:1326,1
    - Dst: netlink_request_intf_addr
      Src: /src/frr/zebra/if_netlink.c:1332,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/if_netlink.c:1335,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1313
    functionDepth: 5
    functionLinenumber: 1313
    functionLinenumberEnd: 1341
    functionName: interface_addr_lookup_netlink
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request_intf_addr
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int interface_addr_lookup_netlink(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/if_netlink.c:1346,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:1354,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1356,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:1363,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:1364,1
    - Dst: netlink_talk
      Src: /src/frr/zebra/if_netlink.c:1366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - master
    - slave
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1343
    functionDepth: 7
    functionLinenumber: 1343
    functionLinenumberEnd: 1368
    functionName: kernel_interface_set_master
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put32
    - netlink_talk
    - memset
    - NLMSG_LENGTH
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int kernel_interface_set_master(struct interface *master,\n\t\t\t\tstruct
      interface *slave)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/if_netlink.c:1388,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:1389,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1393,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/if_netlink.c:1396,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/if_netlink.c:1404,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/if_netlink.c:1406,1
    - Dst: dplane_ctx_intf_is_connected
      Src: /src/frr/zebra/if_netlink.c:1410,1
    - Dst: dplane_ctx_get_intf_dest
      Src: /src/frr/zebra/if_netlink.c:1411,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/if_netlink.c:1412,1
    - Dst: ipv4_broadcast_addr
      Src: /src/frr/zebra/if_netlink.c:1417,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/if_netlink.c:1420,1
    - Dst: dplane_ctx_intf_is_secondary
      Src: /src/frr/zebra/if_netlink.c:1429,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/if_netlink.c:1430,1
    - Dst: dplane_ctx_intf_has_label
      Src: /src/frr/zebra/if_netlink.c:1432,1
    - Dst: dplane_ctx_get_intf_label
      Src: /src/frr/zebra/if_netlink.c:1433,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/if_netlink.c:1434,1
    - Dst: strlen
      Src: /src/frr/zebra/if_netlink.c:1435,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/if_netlink.c:1439,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1371
    functionDepth: 2
    functionLinenumber: 1371
    functionLinenumberEnd: 1440
    functionName: netlink_address_msg_encoder
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - dplane_ctx_get_intf_label
    - dplane_ctx_intf_has_label
    - strlen
    - memset
    - dplane_ctx_intf_is_connected
    - NLMSG_ALIGN
    - dplane_ctx_intf_is_secondary
    - dplane_ctx_get_intf_addr
    - nl_attr_put
    - SET_FLAG
    - dplane_ctx_get_ifindex
    - ipv4_broadcast_addr
    - NLMSG_LENGTH
    - dplane_ctx_get_intf_dest
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_address_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \  void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/if_netlink.c:1446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1442
    functionDepth: 7
    functionLinenumber: 1442
    functionLinenumberEnd: 1448
    functionName: netlink_put_address_update_msg
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_address_update_msg(struct nl_batch
      *bth,\n\t\t\t       struct zebra_dplane_ctx *ctx)"
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/if_netlink.c:1456,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:1519,1
    - Dst: netlink_intf_msg_encode
      Src: /src/frr/zebra/if_netlink.c:1526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 67
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1450
    functionDepth: 1
    functionLinenumber: 1450
    functionLinenumberEnd: 1527
    functionName: netlink_intf_msg_encoder
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - flog_err
    - netlink_intf_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_intf_msg_encoder(struct zebra_dplane_ctx *ctx, void
      *buf,\n\t\t\t\t\tsize_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/if_netlink.c:1532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1529
    functionDepth: 7
    functionLinenumber: 1529
    functionLinenumberEnd: 1533
    functionName: netlink_put_intf_update_msg
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: enum netlink_msg_status netlink_put_intf_update_msg(struct nl_batch
      *bth, struct zebra_dplane_ctx *ctx)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/if_netlink.c:1549,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/if_netlink.c:1551,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/if_netlink.c:1552,1
    - Dst: flog_warn
      Src: /src/frr/zebra/if_netlink.c:1555,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1558,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1565,1
    - Dst: zlog_err
      Src: /src/frr/zebra/if_netlink.c:1567,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1570,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/if_netlink.c:1574,1
    - Dst: IFA_RTA
      Src: /src/frr/zebra/if_netlink.c:1574,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/if_netlink.c:1576,1
    - Dst: flog_warn
      Src: /src/frr/zebra/if_netlink.c:1584,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:1589,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1598,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1605,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1606,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1609,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/if_netlink.c:1610,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1611,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1615,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/if_netlink.c:1616,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1617,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1621,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/if_netlink.c:1622,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1623,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:1626,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1626,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1627,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1628,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1631,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1632,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1644,1
    - Dst: memcmp
      Src: /src/frr/zebra/if_netlink.c:1648,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1648,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1648,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/if_netlink.c:1649,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1650,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/if_netlink.c:1651,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1654,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1659,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/if_netlink.c:1666,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1670,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:1672,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1676,1
    - Dst: zlog_err
      Src: /src/frr/zebra/if_netlink.c:1681,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1684,1
    - Dst: connected_add_ipv4
      Src: /src/frr/zebra/if_netlink.c:1689,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/if_netlink.c:1693,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/if_netlink.c:1695,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/if_netlink.c:1699,1
    - Dst: zlog_err
      Src: /src/frr/zebra/if_netlink.c:1706,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1709,1
    - Dst: connected_add_ipv6
      Src: /src/frr/zebra/if_netlink.c:1721,1
    - Dst: connected_delete_ipv6
      Src: /src/frr/zebra/if_netlink.c:1727,1
    - Dst: rib_update
      Src: /src/frr/zebra/if_netlink.c:1736,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 91
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1535
    functionDepth: 2
    functionLinenumber: 1535
    functionLinenumberEnd: 1739
    functionName: netlink_interface_addr
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_parse_rtattr
    - if_lookup_by_index_per_ns
    - IFA_RTA
    - memcmp
    - flog_err
    - RTA_DATA
    - frrtrace
    - connected_delete_ipv6
    - flog_warn
    - connected_add_ipv6
    - NLMSG_DATA
    - inet_ntop
    - zlog_debug
    - connected_add_ipv4
    - RTA_PAYLOAD
    - zebra_ns_lookup
    - zlog_err
    - NLMSG_LENGTH
    - CHECK_FLAG
    - strcmp
    - connected_delete_ipv4
    - SET_FLAG
    - rib_update
    - nl_msg_type_to_str
    linkageType: ''
    returnType: int
    signature: int netlink_interface_addr(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/if_netlink.c:1761,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1769,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1770,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1775,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1778,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1779,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1781,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/if_netlink.c:1786,1
    - Dst: IFA_RTA
      Src: /src/frr/zebra/if_netlink.c:1786,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1790,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1797,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1798,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1801,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/if_netlink.c:1802,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1803,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1807,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/if_netlink.c:1808,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1809,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1813,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/if_netlink.c:1814,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1815,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1819,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1820,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1823,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1825,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1835,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1836,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1844,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1846,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1858,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1860,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1872,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1877,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1878,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/if_netlink.c:1883,1
    - Dst: dplane_ctx_set_op
      Src: /src/frr/zebra/if_netlink.c:1885,1
    - Dst: dplane_ctx_set_op
      Src: /src/frr/zebra/if_netlink.c:1887,1
    - Dst: dplane_ctx_set_ifindex
      Src: /src/frr/zebra/if_netlink.c:1889,1
    - Dst: dplane_ctx_set_ns_id
      Src: /src/frr/zebra/if_netlink.c:1890,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:1893,1
    - Dst: dplane_ctx_set_intf_addr
      Src: /src/frr/zebra/if_netlink.c:1901,1
    - Dst: memcmp
      Src: /src/frr/zebra/if_netlink.c:1905,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1905,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1905,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/if_netlink.c:1906,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1907,1
    - Dst: dplane_ctx_intf_set_connected
      Src: /src/frr/zebra/if_netlink.c:1908,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1911,1
    - Dst: dplane_ctx_intf_set_broadcast
      Src: /src/frr/zebra/if_netlink.c:1912,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:1918,1
    - Dst: dplane_ctx_set_intf_dest
      Src: /src/frr/zebra/if_netlink.c:1926,1
    - Dst: dplane_ctx_intf_set_secondary
      Src: /src/frr/zebra/if_netlink.c:1931,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1935,1
    - Dst: dplane_ctx_set_intf_label
      Src: /src/frr/zebra/if_netlink.c:1936,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:1940,1
    - Dst: dplane_ctx_set_intf_metric
      Src: /src/frr/zebra/if_netlink.c:1942,1
    - Dst: dplane_provider_enqueue_to_zebra
      Src: /src/frr/zebra/if_netlink.c:1945,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 102
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1747
    functionDepth: 2
    functionLinenumber: 1747
    functionLinenumberEnd: 1948
    functionName: netlink_interface_addr_dplane
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_parse_rtattr
    - IFA_RTA
    - memcmp
    - RTA_DATA
    - dplane_ctx_set_ns_id
    - dplane_ctx_intf_set_broadcast
    - dplane_ctx_set_ifindex
    - memset
    - NLMSG_DATA
    - dplane_ctx_alloc
    - dplane_ctx_set_intf_metric
    - inet_ntop
    - zlog_debug
    - dplane_ctx_set_intf_addr
    - dplane_ctx_intf_set_secondary
    - RTA_PAYLOAD
    - dplane_ctx_set_intf_dest
    - dplane_ctx_intf_set_connected
    - dplane_ctx_set_op
    - NLMSG_LENGTH
    - nl_msg_type_to_str
    - dplane_ctx_set_intf_label
    - dplane_provider_enqueue_to_zebra
    linkageType: ''
    returnType: int
    signature: "int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,\n\t\t\t\t
      \ int startup /*ignored*/)"
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/if_netlink.c:1974,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/if_netlink.c:1975,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:1980,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1981,1
    - Dst: flog_warn
      Src: /src/frr/zebra/if_netlink.c:1987,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:1990,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1994,1
    - Dst: zlog_err
      Src: /src/frr/zebra/if_netlink.c:1996,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:1999,1
    - Dst: netlink_bridge_interface
      Src: /src/frr/zebra/if_netlink.c:2005,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:2008,1
    - Dst: netlink_parse_rtattr_flags
      Src: /src/frr/zebra/if_netlink.c:2009,1
    - Dst: IFLA_RTA
      Src: /src/frr/zebra/if_netlink.c:2009,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2015,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2022,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/if_netlink.c:2025,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2028,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:2033,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2037,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2040,1
    - Dst: netlink_determine_zebra_iftype
      Src: /src/frr/zebra/if_netlink.c:2042,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2047,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2050,1
    - Dst: ns_id_get_absolute
      Src: /src/frr/zebra/if_netlink.c:2051,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2054,1
    - Dst: if_lookup_by_name_per_ns
      Src: /src/frr/zebra/if_netlink.c:2058,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/if_netlink.c:2062,1
    - Dst: netlink_vrf_change
      Src: /src/frr/zebra/if_netlink.c:2063,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:2068,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/if_netlink.c:2069,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2072,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:2074,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2077,1
    - Dst: strcmp
      Src: /src/frr/zebra/if_netlink.c:2079,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2082,1
    - Dst: netlink_parse_lacp_bypass
      Src: /src/frr/zebra/if_netlink.c:2083,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/if_netlink.c:2087,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/if_netlink.c:2090,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2093,1
    - Dst: if_get_by_name
      Src: /src/frr/zebra/if_netlink.c:2101,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/zebra/if_netlink.c:2105,1
    - Dst: set_ifindex
      Src: /src/frr/zebra/if_netlink.c:2109,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2112,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2117,1
    - Dst: zebra_if_set_ziftype
      Src: /src/frr/zebra/if_netlink.c:2122,1
    - Dst: IS_ZEBRA_IF_VRF
      Src: /src/frr/zebra/if_netlink.c:2123,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/if_netlink.c:2124,1
    - Dst: zebra_if_update_link
      Src: /src/frr/zebra/if_netlink.c:2128,1
    - Dst: netlink_to_zebra_link_type
      Src: /src/frr/zebra/if_netlink.c:2131,1
    - Dst: netlink_interface_update_hw_addr
      Src: /src/frr/zebra/if_netlink.c:2132,1
    - Dst: if_add_update
      Src: /src/frr/zebra/if_netlink.c:2135,1
    - Dst: netlink_interface_update_l2info
      Src: /src/frr/zebra/if_netlink.c:2139,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/if_netlink.c:2142,1
    - Dst: zebra_l2if_update_bridge_slave
      Src: /src/frr/zebra/if_netlink.c:2143,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/if_netlink.c:2146,1
    - Dst: zebra_l2if_update_bond_slave
      Src: /src/frr/zebra/if_netlink.c:2147,1
    - Dst: netlink_proc_dplane_if_protodown
      Src: /src/frr/zebra/if_netlink.c:2151,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/if_netlink.c:2152,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2155,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/if_netlink.c:2158,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2164,1
    - Dst: if_handle_vrf_change
      Src: /src/frr/zebra/if_netlink.c:2169,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2177,1
    - Dst: set_ifindex
      Src: /src/frr/zebra/if_netlink.c:2182,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2184,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2189,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/if_netlink.c:2194,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/if_netlink.c:2195,1
    - Dst: zebra_if_set_ziftype
      Src: /src/frr/zebra/if_netlink.c:2196,1
    - Dst: memcpy
      Src: /src/frr/zebra/if_netlink.c:2198,1
    - Dst: zebra_if_update_link
      Src: /src/frr/zebra/if_netlink.c:2201,1
    - Dst: netlink_to_zebra_link_type
      Src: /src/frr/zebra/if_netlink.c:2204,1
    - Dst: netlink_interface_update_hw_addr
      Src: /src/frr/zebra/if_netlink.c:2205,1
    - Dst: netlink_proc_dplane_if_protodown
      Src: /src/frr/zebra/if_netlink.c:2208,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/if_netlink.c:2210,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/if_netlink.c:2211,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/if_netlink.c:2213,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/if_netlink.c:2214,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2217,1
    - Dst: if_down
      Src: /src/frr/zebra/if_netlink.c:2220,1
    - Dst: rib_update
      Src: /src/frr/zebra/if_netlink.c:2221,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/if_netlink.c:2222,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2228,1
    - Dst: if_up
      Src: /src/frr/zebra/if_netlink.c:2231,1
    - Dst: memcmp
      Src: /src/frr/zebra/if_netlink.c:2235,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/if_netlink.c:2238,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/if_netlink.c:2243,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/if_netlink.c:2244,1
    - Dst: zebra_vxlan_svi_up
      Src: /src/frr/zebra/if_netlink.c:2247,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/if_netlink.c:2250,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2251,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/if_netlink.c:2260,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/if_netlink.c:2261,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2264,1
    - Dst: if_up
      Src: /src/frr/zebra/if_netlink.c:2267,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/if_netlink.c:2268,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2273,1
    - Dst: if_down
      Src: /src/frr/zebra/if_netlink.c:2276,1
    - Dst: rib_update
      Src: /src/frr/zebra/if_netlink.c:2277,1
    - Dst: netlink_interface_update_l2info
      Src: /src/frr/zebra/if_netlink.c:2283,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/if_netlink.c:2286,1
    - Dst: zebra_l2if_update_bridge
      Src: /src/frr/zebra/if_netlink.c:2287,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/if_netlink.c:2288,1
    - Dst: zebra_l2if_update_bond
      Src: /src/frr/zebra/if_netlink.c:2289,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/if_netlink.c:2290,1
    - Dst: zebra_l2if_update_bridge_slave
      Src: /src/frr/zebra/if_netlink.c:2291,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/if_netlink.c:2293,1
    - Dst: zebra_l2if_update_bond_slave
      Src: /src/frr/zebra/if_netlink.c:2294,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/if_netlink.c:2296,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2298,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/if_netlink.c:2301,1
    - Dst: XFREE
      Src: /src/frr/zebra/if_netlink.c:2308,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/if_netlink.c:2310,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2316,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2323,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/if_netlink.c:2326,1
    - Dst: zebra_l2if_update_bond
      Src: /src/frr/zebra/if_netlink.c:2327,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/if_netlink.c:2328,1
    - Dst: zebra_l2if_update_bond_slave
      Src: /src/frr/zebra/if_netlink.c:2329,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/if_netlink.c:2331,1
    - Dst: zebra_l2_bridge_del
      Src: /src/frr/zebra/if_netlink.c:2332,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/if_netlink.c:2333,1
    - Dst: zebra_l2_vxlanif_del
      Src: /src/frr/zebra/if_netlink.c:2334,1
    - Dst: if_delete_update
      Src: /src/frr/zebra/if_netlink.c:2336,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/if_netlink.c:2339,1
    - Dst: netlink_vrf_change
      Src: /src/frr/zebra/if_netlink.c:2340,1
    CyclomaticComplexity: 85
    EdgeCount: 85
    ICount: 217
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2344
      start: 1950
    functionDepth: 7
    functionLinenumber: 1950
    functionLinenumberEnd: 2344
    functionName: netlink_link_change
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - vrf_is_backend_netns
    - netlink_bridge_interface
    - if_get_by_name
    - if_delete_update
    - netlink_vrf_change
    - netlink_parse_rtattr_nested
    - if_lookup_by_index_per_ns
    - memcmp
    - RTA_DATA
    - netlink_interface_update_l2info
    - if_down
    - zebra_l2_bridge_del
    - ns_id_get_absolute
    - IS_ZEBRA_IF_BOND_SLAVE
    - zebra_l2if_update_bridge
    - flog_warn
    - memset
    - IS_ZEBRA_IF_BOND
    - NLMSG_DATA
    - zlog_debug
    - zebra_l2_vxlanif_del
    - if_lookup_by_name_per_ns
    - zebra_if_update_link
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - set_ifindex
    - zebra_l2if_update_bridge_slave
    - if_update_to_new_vrf
    - RTA_PAYLOAD
    - zebra_ns_lookup
    - zebra_vxlan_svi_up
    - if_is_no_ptm_operative
    - IS_ZEBRA_IF_VLAN
    - if_add_update
    - zebra_l2if_update_bond_slave
    - zlog_err
    - IS_ZEBRA_IF_BRIDGE
    - zebra_if_set_ziftype
    - netlink_parse_rtattr_flags
    - zebra_l2if_update_bond
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - XFREE
    - NLMSG_LENGTH
    - netlink_proc_dplane_if_protodown
    - memcpy
    - XSTRDUP
    - IFLA_RTA
    - CHECK_FLAG
    - strcmp
    - netlink_parse_lacp_bypass
    - netlink_determine_zebra_iftype
    - netlink_to_zebra_link_type
    - SET_FLAG
    - rib_update
    - nl_msg_type_to_str
    - netlink_interface_update_hw_addr
    - IS_ZEBRA_IF_VRF
    - if_handle_vrf_change
    - IS_ZEBRA_IF_VXLAN
    - if_is_operative
    - if_up
    linkageType: ''
    returnType: int
    signature: int netlink_link_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/if_netlink.c:2366,1
    - Dst: dplane_ctx_intf_is_protodown
      Src: /src/frr/zebra/if_netlink.c:2367,1
    - Dst: dplane_ctx_get_intf_pd_reason_val
      Src: /src/frr/zebra/if_netlink.c:2368,1
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/if_netlink.c:2370,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/if_netlink.c:2370,1
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:2375,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_netlink.c:2378,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:2382,1
    - Dst: nl_attr_put8
      Src: /src/frr/zebra/if_netlink.c:2389,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:2390,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/if_netlink.c:2394,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:2399,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:2401,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/if_netlink.c:2404,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2407,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:2408,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/if_netlink.c:2411,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - cmd
    - ctx
    - buf
    - buflen
    argTypes:
    - uint16_t
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2412
      start: 2355
    functionDepth: 3
    functionLinenumber: 2355
    functionLinenumberEnd: 2412
    functionName: netlink_intf_msg_encode
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - nl_attr_nest_end
    - memset
    - nl_attr_put32
    - NLMSG_ALIGN
    - kernel_netlink_nlsock_lookup
    - dplane_ctx_get_intf_pd_reason_val
    - nl_attr_put8
    - dplane_ctx_get_ns_sock
    - flog_err
    - nl_attr_nest
    - dplane_ctx_intf_is_protodown
    - zlog_debug
    - dplane_ctx_get_ifindex
    - nl_msg_type_to_str
    - NLMSG_LENGTH
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_intf_msg_encode(uint16_t cmd,\n\t\t\t\tconst struct
      zebra_dplane_ctx *ctx, void *buf,\n\t\t\t\tsize_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: interface_lookup_netlink
      Src: /src/frr/zebra/if_netlink.c:2417,1
    - Dst: netlink_nexthop_read
      Src: /src/frr/zebra/if_netlink.c:2422,1
    - Dst: interface_addr_lookup_netlink
      Src: /src/frr/zebra/if_netlink.c:2424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2425
      start: 2415
    functionDepth: 6
    functionLinenumber: 2415
    functionLinenumberEnd: 2425
    functionName: interface_list
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_nexthop_read
    - interface_addr_lookup_netlink
    - interface_lookup_netlink
    linkageType: ''
    returnType: void
    signature: void interface_list(struct zebra_ns *zns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bit
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2435
      start: 2427
    functionDepth: 1
    functionLinenumber: 2427
    functionLinenumberEnd: 2435
    functionName: if_netlink_set_frr_protodown_r_bit
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void if_netlink_set_frr_protodown_r_bit(uint8_t bit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2437
    functionDepth: 1
    functionLinenumber: 2437
    functionLinenumberEnd: 2445
    functionName: if_netlink_unset_frr_protodown_r_bit
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void if_netlink_unset_frr_protodown_r_bit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2451
      start: 2448
    functionDepth: 0
    functionLinenumber: 2448
    functionLinenumberEnd: 2451
    functionName: if_netlink_frr_protodown_r_bit_is_set
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool if_netlink_frr_protodown_r_bit_is_set(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2453
    functionDepth: 0
    functionLinenumber: 2453
    functionLinenumberEnd: 2456
    functionName: if_netlink_get_frr_protodown_r_bit
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t if_netlink_get_frr_protodown_r_bit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:2477,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:2478,1
    - Dst: netlink_request
      Src: /src/frr/zebra/if_netlink.c:2484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - zns
    - family
    - ifindex
    argTypes:
    - struct zebra_ns*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2485
      start: 2467
    functionDepth: 3
    functionLinenumber: 2467
    functionLinenumberEnd: 2485
    functionName: netlink_request_tunneldump
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_request_tunneldump(struct zebra_ns *zns, int family,\n\t\t\t\t
      \     int ifindex)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/if_netlink.c:2500,1
    - Dst: route_top
      Src: /src/frr/zebra/if_netlink.c:2502,1
    - Dst: route_next
      Src: /src/frr/zebra/if_netlink.c:2502,1
    - Dst: netlink_request_tunneldump
      Src: /src/frr/zebra/if_netlink.c:2510,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/if_netlink.c:2515,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2523
      start: 2491
    functionDepth: 5
    functionLinenumber: 2491
    functionLinenumberEnd: 2523
    functionName: netlink_tunneldump_read
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - route_top
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    - route_next
    - netlink_request_tunneldump
    linkageType: ''
    returnType: int
    signature: int netlink_tunneldump_read(struct zebra_ns *zns)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2541
      start: 2525
    functionDepth: 0
    functionLinenumber: 2525
    functionLinenumberEnd: 2541
    functionName: port_state2str
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *port_state2str(uint8_t state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vlanid_vni_find
      Src: /src/frr/zebra/if_netlink.c:2548,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2552,1
    - Dst: zebra_vxlan_if_vni_up
      Src: /src/frr/zebra/if_netlink.c:2561,1
    - Dst: zebra_vxlan_if_vni_down
      Src: /src/frr/zebra/if_netlink.c:2564,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - zif
    - id
    - state
    argTypes:
    - struct zebra_if*
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2573
      start: 2543
    functionDepth: 2
    functionLinenumber: 2543
    functionLinenumberEnd: 2573
    functionName: vxlan_vni_state_change
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_vxlan_if_vni_down
    - zebra_vxlan_if_vni_up
    - zebra_vxlan_if_vlanid_vni_find
    linkageType: ''
    returnType: void
    signature: "void vxlan_vni_state_change(struct zebra_if *zif, uint16_t id,\n\t\t\t\t
      \  uint8_t state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vxlan_vni_state_change
      Src: /src/frr/zebra/if_netlink.c:2586,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ifp
    - id_start
    - id_end
    - state
    argTypes:
    - struct interface*
    - uint16_t
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2587
      start: 2575
    functionDepth: 3
    functionLinenumber: 2575
    functionLinenumberEnd: 2587
    functionName: vlan_id_range_state_change
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - vxlan_vni_state_change
    linkageType: ''
    returnType: void
    signature: "void vlan_id_range_state_change(struct interface *ifp, uint16_t id_start,\n\t\t\t\t
      \      uint16_t id_end, uint8_t state)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:2614,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/if_netlink.c:2616,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:2619,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/if_netlink.c:2623,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/if_netlink.c:2628,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/if_netlink.c:2628,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2630,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/if_netlink.c:2635,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2637,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2644,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/if_netlink.c:2645,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/if_netlink.c:2646,1
    - Dst: BRVLAN_RTA
      Src: /src/frr/zebra/if_netlink.c:2650,1
    - Dst: RTA_OK
      Src: /src/frr/zebra/if_netlink.c:2650,1
    - Dst: RTA_NEXT
      Src: /src/frr/zebra/if_netlink.c:2651,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/if_netlink.c:2661,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2667,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2677,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/if_netlink.c:2680,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2685,1
    - Dst: port_state2str
      Src: /src/frr/zebra/if_netlink.c:2687,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/if_netlink.c:2689,1
    - Dst: port_state2str
      Src: /src/frr/zebra/if_netlink.c:2690,1
    - Dst: vlan_id_range_state_change
      Src: /src/frr/zebra/if_netlink.c:2693,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2598
    functionDepth: 4
    functionLinenumber: 2598
    functionLinenumberEnd: 2698
    functionName: netlink_vlan_change
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - RTA_NEXT
    - nl_family_to_str
    - port_state2str
    - RTA_OK
    - vlan_id_range_state_change
    - netlink_parse_rtattr_nested
    - if_lookup_by_index_per_ns
    - NLMSG_DATA
    - BRVLAN_RTA
    - zlog_warn
    - zlog_debug
    - nl_msg_type_to_str
    - RTA_DATA
    - IS_ZEBRA_IF_VXLAN
    - NLMSG_LENGTH
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: int netlink_vlan_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/if_netlink.c:2717,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/if_netlink.c:2720,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/if_netlink.c:2723,1
    - Dst: netlink_request
      Src: /src/frr/zebra/if_netlink.c:2726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - zns
    - family
    - type
    argTypes:
    - struct zebra_ns*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2727
      start: 2708
    functionDepth: 3
    functionLinenumber: 2708
    functionLinenumberEnd: 2727
    functionName: netlink_request_vlan
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - nl_attr_put32
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: int netlink_request_vlan(struct zebra_ns *zns, int family, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/if_netlink.c:2742,1
    - Dst: netlink_request_vlan
      Src: /src/frr/zebra/if_netlink.c:2745,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/if_netlink.c:2749,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2753
      start: 2737
    functionDepth: 5
    functionLinenumber: 2737
    functionLinenumberEnd: 2753
    functionName: netlink_vlan_read
    functionSourceFile: /src/frr/zebra/if_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_request_vlan
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int netlink_vlan_read(struct zebra_ns *zns)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_mroute.c:28,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_mroute.c:29,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/zebra_mroute.c:33,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/zebra_mroute.c:34,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_mroute.c:35,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_mroute.c:37,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/zebra/zebra_mroute.c:41,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/zebra/zebra_mroute.c:42,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_mroute.c:43,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_mroute.c:45,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_mroute.c:49,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_mroute.c:54,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mroute.c:57,1
    - Dst: kernel_get_ipmr_sg_stats
      Src: /src/frr/zebra/zebra_mroute.c:61,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_mroute.c:64,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zebra_mroute.c:66,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_mroute.c:68,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_mroute.c:68,1
    - Dst: stream_write
      Src: /src/frr/zebra/zebra_mroute.c:71,1
    - Dst: stream_write
      Src: /src/frr/zebra/zebra_mroute.c:73,1
    - Dst: stream_write
      Src: /src/frr/zebra/zebra_mroute.c:76,1
    - Dst: stream_write
      Src: /src/frr/zebra/zebra_mroute.c:78,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_mroute.c:82,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_mroute.c:83,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_mroute.c:85,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_mroute.c:85,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_mroute.c:86,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 87
    functionName: zebra_ipmr_route_stats
    functionSourceFile: /src/frr/zebra/zebra_mroute.c
    functionUses: 0
    functionsReached:
    - kernel_get_ipmr_sg_stats
    - stream_new
    - zclient_create_header
    - memset
    - stream_put
    - zvrf_id
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - zlog_warn
    - SET_IPADDR_V6
    - zlog_debug
    - STREAM_GETL
    - STREAM_GET
    - stream_putl
    - stream_reset
    - SET_IPADDR_V4
    linkageType: ''
    returnType: void
    signature: void zebra_ipmr_route_stats(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/zebra/zebra_netns_notify.c:59,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:60,1
    - Dst: vrf_get
      Src: /src/frr/zebra/zebra_netns_notify.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - vrfname
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 67
    functionName: vrf_handler_create
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - strlen
    - vrf_get
    - flog_warn
    linkageType: ''
    returnType: struct vrf
    signature: struct vrf *vrf_handler_create(struct vty *vty, const char *vrfname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ns_netns_pathname
      Src: /src/frr/zebra/zebra_netns_notify.c:71,1
    - Dst: zebra_ns_id_get
      Src: /src/frr/zebra/zebra_netns_notify.c:81,1
    - Dst: ns_map_nsid_with_external
      Src: /src/frr/zebra/zebra_netns_notify.c:85,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_netns_notify.c:87,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_netns_notify.c:89,1
    - Dst: vrf_handler_create
      Src: /src/frr/zebra/zebra_netns_notify.c:94,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:96,1
    - Dst: ns_map_nsid_with_external
      Src: /src/frr/zebra/zebra_netns_notify.c:98,1
    - Dst: ns_get_default
      Src: /src/frr/zebra/zebra_netns_notify.c:102,1
    - Dst: ns_switch_to_netns
      Src: /src/frr/zebra/zebra_netns_notify.c:106,1
    - Dst: zebra_ns_id_get
      Src: /src/frr/zebra/zebra_netns_notify.c:107,1
    - Dst: ns_switchback_to_initial
      Src: /src/frr/zebra/zebra_netns_notify.c:108,1
    - Dst: zebra_vrf_netns_handler_create
      Src: /src/frr/zebra/zebra_netns_notify.c:112,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:117,1
    - Dst: ns_map_nsid_with_external
      Src: /src/frr/zebra/zebra_netns_notify.c:119,1
    - Dst: vrf_delete
      Src: /src/frr/zebra/zebra_netns_notify.c:120,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_netns_notify.c:123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 124
    functionName: zebra_ns_notify_create_context_from_entry_name
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - ns_switch_to_netns
    - zlog_info
    - flog_warn
    - ns_netns_pathname
    - ns_switchback_to_initial
    - vrf_handler_create
    - ns_get_default
    - zebra_ns_id_get
    - zlog_debug
    - vrf_delete
    - vrf_lookup_by_id
    - ns_map_nsid_with_external
    - zebra_vrf_netns_handler_create
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_create_context_from_entry_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_id_get
      Src: /src/frr/zebra/zebra_netns_notify.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 4
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - zebra_ns_id_get
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_switch_to_netns
      Src: /src/frr/zebra/zebra_netns_notify.c:106,1
    - Dst: zebra_ns_id_get
      Src: /src/frr/zebra/zebra_netns_notify.c:107,1
    - Dst: ns_switchback_to_initial
      Src: /src/frr/zebra/zebra_netns_notify.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 4
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - ns_switch_to_netns
    - ns_switchback_to_initial
    - zebra_ns_id_get
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_netns_handler_create
      Src: /src/frr/zebra/zebra_netns_notify.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_netns_handler_create
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_netns_notify.c:132,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_netns_notify.c:133,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/zebra_netns_notify.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - zns_info
    - stop_retry
    argTypes:
    - struct zebra_netns_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 140
    functionName: zebra_ns_continue_read
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int zebra_ns_continue_read(struct zebra_netns_info *zns_info,\n\t\t\t\t
      \ int stop_retry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/zebra/zebra_netns_notify.c:144,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:149,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_netns_notify.c:159,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_netns_notify.c:160,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/zebra/zebra_netns_notify.c:163,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_netns_notify.c:164,1
    - Dst: if_down
      Src: /src/frr/zebra/zebra_netns_notify.c:165,1
    - Dst: IS_ZEBRA_IF_BOND
      Src: /src/frr/zebra/zebra_netns_notify.c:168,1
    - Dst: zebra_l2if_update_bond
      Src: /src/frr/zebra/zebra_netns_notify.c:169,1
    - Dst: IS_ZEBRA_IF_BOND_SLAVE
      Src: /src/frr/zebra/zebra_netns_notify.c:170,1
    - Dst: zebra_l2if_update_bond_slave
      Src: /src/frr/zebra/zebra_netns_notify.c:171,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_netns_notify.c:174,1
    - Dst: zebra_l2_bridge_del
      Src: /src/frr/zebra/zebra_netns_notify.c:175,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/zebra_netns_notify.c:176,1
    - Dst: zebra_l2_vxlanif_del
      Src: /src/frr/zebra/zebra_netns_notify.c:177,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_netns_notify.c:179,1
    - Dst: if_delete_update
      Src: /src/frr/zebra/zebra_netns_notify.c:180,1
    - Dst: vrf_delete
      Src: /src/frr/zebra/zebra_netns_notify.c:188,1
    - Dst: ns_delete
      Src: /src/frr/zebra/zebra_netns_notify.c:190,1
    - Dst: zlog_info
      Src: /src/frr/zebra/zebra_netns_notify.c:192,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 194
    functionName: zebra_ns_delete
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - if_delete_update
    - vrf_lookup_by_name
    - if_down
    - zebra_l2_bridge_del
    - vrf_delete
    - IS_ZEBRA_IF_BOND_SLAVE
    - flog_warn
    - IS_ZEBRA_IF_BOND
    - zebra_l2_vxlanif_del
    - ns_delete
    - if_is_no_ptm_operative
    - zlog_info
    - zebra_l2if_update_bond_slave
    - IS_ZEBRA_IF_BRIDGE
    - zebra_l2if_update_bond
    - UNSET_FLAG
    - CHECK_FLAG
    - RB_FOREACH_SAFE
    - IS_ZEBRA_IF_VXLAN
    linkageType: ''
    returnType: int
    signature: int zebra_ns_delete(char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_netns_notify.c:201,1
    - Dst: open
      Src: /src/frr/zebra/zebra_netns_notify.c:202,1
    - Dst: fstat
      Src: /src/frr/zebra/zebra_netns_notify.c:205,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_notify.c:206,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_notify.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - netst
    argTypes:
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 211
    functionName: zebra_ns_notify_self_identify
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - close
    - open
    - snprintf
    - fstat
    linkageType: ''
    returnType: int
    signature: int zebra_ns_notify_self_identify(struct stat *netst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_notify_self_identify
      Src: /src/frr/zebra/zebra_netns_notify.c:219,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_netns_notify.c:222,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_netns_notify.c:223,1
    - Dst: stat
      Src: /src/frr/zebra/zebra_netns_notify.c:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 230
    functionName: zebra_ns_notify_is_default_netns
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - memset
    - snprintf
    - zebra_ns_notify_self_identify
    - stat
    linkageType: ''
    returnType: bool
    signature: bool zebra_ns_notify_is_default_netns(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_netns_notify.c:234,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_netns_notify.c:241,1
    - Dst: ns_switch_to_netns
      Src: /src/frr/zebra/zebra_netns_notify.c:248,1
    - Dst: zebra_ns_continue_read
      Src: /src/frr/zebra/zebra_netns_notify.c:251,1
    - Dst: ns_switchback_to_initial
      Src: /src/frr/zebra/zebra_netns_notify.c:257,1
    - Dst: zebra_ns_continue_read
      Src: /src/frr/zebra/zebra_netns_notify.c:260,1
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_netns_notify.c:265,1
    - Dst: basename
      Src: /src/frr/zebra/zebra_netns_notify.c:265,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:266,1
    - Dst: basename
      Src: /src/frr/zebra/zebra_netns_notify.c:266,1
    - Dst: zebra_ns_continue_read
      Src: /src/frr/zebra/zebra_netns_notify.c:267,1
    - Dst: zebra_ns_notify_is_default_netns
      Src: /src/frr/zebra/zebra_netns_notify.c:270,1
    - Dst: basename
      Src: /src/frr/zebra/zebra_netns_notify.c:270,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:271,1
    - Dst: basename
      Src: /src/frr/zebra/zebra_netns_notify.c:273,1
    - Dst: zebra_ns_continue_read
      Src: /src/frr/zebra/zebra_netns_notify.c:274,1
    - Dst: zebra_ns_notify_create_context_from_entry_name
      Src: /src/frr/zebra/zebra_netns_notify.c:279,1
    - Dst: basename
      Src: /src/frr/zebra/zebra_netns_notify.c:279,1
    - Dst: zebra_ns_continue_read
      Src: /src/frr/zebra/zebra_netns_notify.c:280,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 232
    functionDepth: 5
    functionLinenumber: 232
    functionLinenumberEnd: 281
    functionName: zebra_ns_ready_read
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - ns_switch_to_netns
    - strmatch
    - ns_switchback_to_initial
    - zebra_ns_continue_read
    - zebra_ns_notify_create_context_from_entry_name
    - zlog_warn
    - XFREE
    - EVENT_ARG
    - zebra_ns_notify_is_default_netns
    - basename
    linkageType: ''
    returnType: void
    signature: void zebra_ns_ready_read(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_switch_to_netns
      Src: /src/frr/zebra/zebra_netns_notify.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 249
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - ns_switch_to_netns
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_switchback_to_initial
      Src: /src/frr/zebra/zebra_netns_notify.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 258
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - ns_switchback_to_initial
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/zebra/zebra_netns_notify.c:285,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_netns_notify.c:291,1
    - Dst: read
      Src: /src/frr/zebra/zebra_netns_notify.c:293,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_notify.c:295,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_netns_notify.c:297,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_netns_notify.c:311,1
    - Dst: strnlen
      Src: /src/frr/zebra/zebra_netns_notify.c:316,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_netns_notify.c:317,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_netns_notify.c:344,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_netns_notify.c:349,1
    - Dst: zebra_ns_delete
      Src: /src/frr/zebra/zebra_netns_notify.c:353,1
    - Dst: ns_netns_pathname
      Src: /src/frr/zebra/zebra_netns_notify.c:356,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_netns_notify.c:359,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_netns_notify.c:360,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/zebra_netns_notify.c:364,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 367
    functionName: zebra_ns_notify_read
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 0
    functionsReached:
    - read
    - EVENT_FD
    - zebra_ns_delete
    - ns_netns_pathname
    - XCALLOC
    - event_add_timer_msec
    - flog_err
    - safe_strerror
    - XSTRDUP
    - event_add_read
    - flog_err_sys
    - memcpy
    - strnlen
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_read(struct event *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/frr/zebra/zebra_netns_notify.c:372,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_notify.c:375,1
    - Dst: readdir
      Src: /src/frr/zebra/zebra_netns_notify.c:379,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_netns_notify.c:382,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_netns_notify.c:383,1
    - Dst: fstatat
      Src: /src/frr/zebra/zebra_netns_notify.c:385,1
    - Dst: dirfd
      Src: /src/frr/zebra/zebra_netns_notify.c:385,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_notify.c:386,1
    - Dst: S_ISDIR
      Src: /src/frr/zebra/zebra_netns_notify.c:392,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_netns_notify.c:393,1
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_netns_notify.c:398,1
    - Dst: basename
      Src: /src/frr/zebra/zebra_netns_notify.c:398,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:399,1
    - Dst: zebra_ns_notify_is_default_netns
      Src: /src/frr/zebra/zebra_netns_notify.c:402,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_netns_notify.c:403,1
    - Dst: zebra_ns_notify_create_context_from_entry_name
      Src: /src/frr/zebra/zebra_netns_notify.c:408,1
    - Dst: closedir
      Src: /src/frr/zebra/zebra_netns_notify.c:410,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 369
    functionDepth: 5
    functionLinenumber: 369
    functionLinenumberEnd: 411
    functionName: zebra_ns_notify_parse
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 1
    functionsReached:
    - strmatch
    - dirfd
    - strcmp
    - readdir
    - zebra_ns_notify_create_context_from_entry_name
    - zlog_debug
    - zlog_warn
    - closedir
    - S_ISDIR
    - flog_err_sys
    - opendir
    - fstatat
    - zebra_ns_notify_is_default_netns
    - basename
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_parse(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inotify_init
      Src: /src/frr/zebra/zebra_netns_notify.c:417,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_notify.c:419,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_netns_notify.c:422,1
    - Dst: inotify_add_watch
      Src: /src/frr/zebra/zebra_netns_notify.c:424,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zebra_netns_notify.c:426,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zebra_netns_notify.c:428,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_netns_notify.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 432
    functionName: zebra_ns_notify_init
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 1
    functionsReached:
    - inotify_init
    - safe_strerror
    - inotify_add_watch
    - event_add_read
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_netns_notify.c:445,1
    - Dst: close
      Src: /src/frr/zebra/zebra_netns_notify.c:449,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 450
    functionName: zebra_ns_notify_close
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    - close
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_close(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 455
    functionName: zebra_ns_notify_parse
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_parse(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 459
    functionName: zebra_ns_notify_init
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 463
    functionName: zebra_ns_notify_close
    functionSourceFile: /src/frr/zebra/zebra_netns_notify.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_ns_notify_close(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/table_manager.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: delete_table_chunk
    functionSourceFile: /src/frr/zebra/table_manager.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void delete_table_chunk(void *val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/table_manager.c:62,1
    - Dst: strcmp
      Src: /src/frr/zebra/table_manager.c:63,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/table_manager.c:63,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/table_manager.c:64,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/table_manager.c:70,1
    - Dst: list_new
      Src: /src/frr/zebra/table_manager.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 73
    functionName: table_manager_enable
    functionSourceFile: /src/frr/zebra/table_manager.c
    functionUses: 1
    functionsReached:
    - vrf_is_backend_netns
    - XCALLOC
    - zvrf_name
    - strcmp
    - list_new
    - zebra_vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void table_manager_enable(struct zebra_vrf *zvrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/table_manager.c:99,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/table_manager.c:108,1
    - Dst: list_isempty
      Src: /src/frr/zebra/table_manager.c:118,1
    - Dst: tbl_mgr::start
      Src: /src/frr/zebra/table_manager.c:108,1
    - Dst: listgetdata
      Src: /src/frr/zebra/table_manager.c:124,1
    - Dst: listtail
      Src: /src/frr/zebra/table_manager.c:125,1
    - Dst: flog_err
      Src: /src/frr/zebra/table_manager.c:146,1
    - Dst: XFREE
      Src: /src/frr/zebra/table_manager.c:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 4
    argNames:
    - proto
    - instance
    - size
    - zvrf
    argTypes:
    - uint8_t
    - uint16_t
    - uint32_t
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 152
    functionName: assign_table_chunk
    functionSourceFile: /src/frr/zebra/table_manager.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - listtail
    - ALL_LIST_ELEMENTS_RO
    - list_isempty
    - tbl_mgr::start
    - flog_err
    - XFREE
    - listgetdata
    linkageType: ''
    returnType: struct table_manager_chunk
    signature: "struct table_manager_chunk *assign_table_chunk(uint8_t proto, uint16_t
      instance,\n\t\t\t\t\t       uint32_t size,\n\t\t\t\t\t       struct zebra_vrf
      *zvrf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/table_manager.c:194,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/table_manager.c:196,1
    - Dst: if
      Src: /src/frr/zebra/table_manager.c:199,1
    - Dst: if
      Src: /src/frr/zebra/table_manager.c:201,1
    - Dst: flog_err
      Src: /src/frr/zebra/table_manager.c:202,1
    - Dst: flog_err
      Src: /src/frr/zebra/table_manager.c:212,1
    - Dst: release_daemon_table_chunks
      Src: /src/frr/zebra/table_manager.c:227,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/table_manager.c:238,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/table_manager.c:243,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/table_manager.c:245,1
    - Dst: release_table_chunk
      Src: /src/frr/zebra/table_manager.c:247,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/table_manager.c:255,1
    - Dst: table_range_add
      Src: /src/frr/zebra/table_manager.c:260,1
    - Dst: table_manager_disable
      Src: /src/frr/zebra/table_manager.c:269,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/table_manager.c:273,1
    - Dst: strcmp
      Src: /src/frr/zebra/table_manager.c:274,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/table_manager.c:274,1
    - Dst: list_delete
      Src: /src/frr/zebra/table_manager.c:278,1
    - Dst: XFREE
      Src: /src/frr/zebra/table_manager.c:279,1
    - Dst: table_manager_range
      Src: /src/frr/zebra/table_manager.c:283,1
    - Dst: vty_out
      Src: /src/frr/zebra/table_manager.c:291,1
    - Dst: atoi
      Src: /src/frr/zebra/table_manager.c:294,1
    - Dst: atoi
      Src: /src/frr/zebra/table_manager.c:295,1
    - Dst: vty_out
      Src: /src/frr/zebra/table_manager.c:297,1
    - Dst: defined
      Src: /src/frr/zebra/table_manager.c:301,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 10
    argCount: 5
    argNames:
    - proto
    - instance
    - start
    - end
    - zvrf
    argTypes:
    - uint8_t
    - uint16_t
    - uint32_t
    - uint32_t
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 313
    functionName: release_table_chunk
    functionSourceFile: /src/frr/zebra/table_manager.c
    functionUses: 1
    functionsReached:
    - vrf_is_backend_netns
    - release_daemon_table_chunks
    - list_delete
    - vty_out
    - zvrf_name
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - table_range_add
    - release_table_chunk
    - zlog_debug
    - flog_err
    - XFREE
    - table_manager_range
    - if
    - defined
    - RB_FOREACH
    - atoi
    - table_manager_disable
    linkageType: ''
    returnType: int
    signature: "int release_table_chunk(uint8_t proto, uint16_t instance, uint32_t
      start,\n\t\t\tuint32_t end, struct zebra_vrf *zvrf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 266
    functionName: zebra_evpn_send_to_client_ok
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_send_to_client_ok(struct zebra_evpn *zevpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 271
    functionName: zebra_evpn_mac_is_es_local
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mac_is_es_local(struct zebra_mac *mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 278
    functionName: zebra_evpn_mh_is_fdb_nh
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mh_is_fdb_nh(uint32_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct zebra_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 285
    functionName: zebra_evpn_es_local_mac_via_network_port
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_es_local_mac_via_network_port(struct zebra_evpn_es
      *es)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: zebra_evpn_mh_do_dup_addr_detect
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mh_do_dup_addr_detect(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 295
    functionName: zebra_evpn_mh_do_adv_reachable_neigh_only
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mh_do_adv_reachable_neigh_only(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 300
    functionName: zebra_evpn_mh_do_adv_svi_mac
    functionSourceFile: /src/frr/zebra/zebra_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_mh_do_adv_svi_mac(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: LOG_GR
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG_GR(msg, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_gr.c:72,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:74,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:75,1
    - Dst: TAILQ_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_gr.c:77,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_gr.c:82,1
    - Dst: event_execute
      Src: /src/frr/zebra/zebra_gr.c:86,1
    - Dst: zebra_gr_client_info_create
      Src: /src/frr/zebra/zebra_gr.c:98,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_gr.c:102,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/zebra/zebra_gr.c:106,1
    - Dst: zebra_gr_client_info_delete
      Src: /src/frr/zebra/zebra_gr.c:113,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:116,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/zebra/zebra_gr.c:118,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_gr.c:120,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:122,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:123,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:123,1
    - Dst: zebra_gr_delete_stale_routes
      Src: /src/frr/zebra/zebra_gr.c:128,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_gr.c:130,1
    - Dst: zebra_gr_client_disconnect
      Src: /src/frr/zebra/zebra_gr.c:136,1
    - Dst: zebra_gr_find_stale_client
      Src: /src/frr/zebra/zebra_gr.c:143,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:149,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:150,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_gr.c:152,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_gr.c:156,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/zebra/zebra_gr.c:162,1
    - Dst: ZEBRA_CLIENT_GR_ENABLED
      Src: /src/frr/zebra/zebra_gr.c:163,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:165,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_gr.c:167,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:174,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:175,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:176,1
    - Dst: zebra_gr_route_stale_delete_timer_expiry
      Src: /src/frr/zebra/zebra_gr.c:186,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_gr.c:192,1
    - Dst: zebra_gr_delete_stale_client
      Src: /src/frr/zebra/zebra_gr.c:200,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:204,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/zebra/zebra_gr.c:218,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:220,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:221,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/zebra/zebra_gr.c:224,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:229,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:230,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:230,1
    - Dst: TAILQ_INIT
      Src: /src/frr/zebra/zebra_gr.c:233,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_gr.c:234,1
    - Dst: zserv_client_delete
      Src: /src/frr/zebra/zebra_gr.c:236,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_gr.c:237,1
    - Dst: zebra_gr_find_stale_client
      Src: /src/frr/zebra/zebra_gr.c:243,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 1
    argNames:
    - client_list
    argTypes:
    - struct list*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 151
        line_start: 151
        source_file: /src/frr/zebra/zebra_gr.c
    constantsTouched: []
    func_position:
      end: 258
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 258
    functionName: zebra_gr_stale_client_cleanup
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 1
    functionsReached:
    - zebra_gr_client_info_delete
    - listnode_add
    - LOG_GR
    - zserv_client_delete
    - zebra_gr_client_info_create
    - XCALLOC
    - TAILQ_INSERT_TAIL
    - zebra_gr_delete_stale_client
    - vrf_lookup_by_id
    - assert
    - TAILQ_FOREACH
    - TAILQ_INIT
    - TAILQ_REMOVE
    - zebra_gr_delete_stale_routes
    - monotime
    - zebra_gr_client_disconnect
    - zebra_gr_find_stale_client
    - EVENT_OFF
    - XFREE
    - event_add_timer
    - zebra_gr_route_stale_delete_timer_expiry
    - listnode_delete
    - zebra_route_string
    - event_execute
    - ZEBRA_CLIENT_GR_ENABLED
    - VRF_LOGNAME
    - TAILQ_FOREACH_SAFE
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void zebra_gr_stale_client_cleanup(struct list *client_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_gr.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 275
    functionName: zebra_gr_client_reconnect
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void zebra_gr_client_reconnect(struct zserv *client)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: zapi_capabilities_decode
      Src: /src/frr/zebra/zebra_gr.c:331,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:332,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:333,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:337,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:348,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:349,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/zebra/zebra_gr.c:354,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:368,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:369,1
    - Dst: zebra_gr_client_info_delete
      Src: /src/frr/zebra/zebra_gr.c:375,1
    - Dst: zebra_gr_client_info_create
      Src: /src/frr/zebra/zebra_gr.c:380,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:386,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:387,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:388,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:398,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:399,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:404,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:405,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:415,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:416,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:421,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:422,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:423,1
    - Dst: rib_add_gr_run
      Src: /src/frr/zebra/zebra_gr.c:429,1
    - Dst: zebra_gr_process_client_stale_routes
      Src: /src/frr/zebra/zebra_gr.c:431,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:435,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:436,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:439,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:440,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:441,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 448
    functionName: zread_client_capabilities
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached:
    - zebra_gr_client_info_delete
    - zebra_gr_process_client_stale_routes
    - rib_add_gr_run
    - LOG_GR
    - zebra_gr_client_info_create
    - zapi_capabilities_decode
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - zebra_route_string
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void zread_client_capabilities(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_gr.c:460,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:463,1
    - Dst: zebra_gr_delete_stale_routes
      Src: /src/frr/zebra/zebra_gr.c:467,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:471,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:472,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:473,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_gr.c:475,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:481,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:482,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:483,1
    - Dst: zebra_gr_delete_stale_client
      Src: /src/frr/zebra/zebra_gr.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 487
    functionName: zebra_gr_route_stale_delete_timer_expiry
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 1
    functionsReached:
    - zebra_gr_delete_stale_routes
    - LOG_GR
    - zebra_gr_delete_stale_client
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - EVENT_ARG
    - event_add_timer
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_gr_route_stale_delete_timer_expiry(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_gr.c:503,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:504,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_gr.c:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - client
    - rn
    - re
    argTypes:
    - struct zserv*
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 512
    functionName: zebra_gr_process_route_entry
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_route_string
    - rib_delnode
    linkageType: ''
    returnType: bool
    signature: "bool zebra_gr_process_route_entry(struct zserv *client,\n\t\t\t\t\t
      struct route_node *rn,\n\t\t\t\t\t struct route_entry *re)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_gr.c:516,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:520,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_gr.c:530,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_gr.c:530,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_gr.c:532,1
    - Dst: zebra_gr_process_route_entry
      Src: /src/frr/zebra/zebra_gr.c:542,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_gr.c:552,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_gr.c:562,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 563
    functionName: zebra_gr_delete_stale_route_table_afi
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached:
    - srcdest_route_next
    - CHECK_FLAG
    - route_top
    - zebra_gr_process_route_entry
    - EVENT_ARG
    - zebra_vrf_lookup_by_id
    - XFREE
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void zebra_gr_delete_stale_route_table_afi(struct event *event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_gr.c:532,1
    - Dst: zebra_gr_process_route_entry
      Src: /src/frr/zebra/zebra_gr.c:542,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_gr.c:552,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 558
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - CHECK_FLAG
    - zebra_gr_process_route_entry
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE_SAFE (rn, re, next)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:580,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:588,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:589,1
    - Dst: rib_add_gr_run
      Src: /src/frr/zebra/zebra_gr.c:598,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - info
    - zvrf
    argTypes:
    - struct client_gr_info*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 601
    functionName: zebra_gr_delete_stale_route
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached:
    - zebra_route_string
    - rib_add_gr_run
    - LOG_GR
    linkageType: ''
    returnType: int32_t
    signature: "int32_t zebra_gr_delete_stale_route(struct client_gr_info *info,\n\t\t\t\t\t
      \  struct zebra_vrf *zvrf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:615,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:617,1
    - Dst: zebra_gr_delete_stale_route
      Src: /src/frr/zebra/zebra_gr.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct client_gr_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 623
    functionName: zebra_gr_delete_stale_routes
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 2
    functionsReached:
    - zebra_vrf_lookup_by_id
    - zebra_gr_delete_stale_route
    - LOG_GR
    linkageType: ''
    returnType: int32_t
    signature: int32_t zebra_gr_delete_stale_routes(struct client_gr_info *info)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:640,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:642,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:643,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:644,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_gr.c:654,1
    - Dst: LOG_GR
      Src: /src/frr/zebra/zebra_gr.c:656,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_gr.c:657,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_gr.c:658,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_gr.c:659,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - client
    - info
    argTypes:
    - struct zserv*
    - struct client_gr_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 661
    functionName: zebra_gr_process_client_stale_routes
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 1
    functionsReached:
    - LOG_GR
    - EVENT_OFF
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void zebra_gr_process_client_stale_routes(struct zserv *client,\n\t\t\t\t\t\t
      struct client_gr_info *info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_gr.c:666,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/zebra/zebra_gr.c:673,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_gr.c:681,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_gr.c:687,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - afi
    - vrf_id
    - proto
    - instance
    argTypes:
    - afi_t
    - vrf_id_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 689
    functionName: zebra_gr_process_client
    functionSourceFile: /src/frr/zebra/zebra_gr.c
    functionUses: 0
    functionsReached:
    - zserv_find_client
    - event_add_event
    - XCALLOC
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: "void zebra_gr_process_client(afi_t afi, vrf_id_t vrf_id, uint8_t proto,\n\t\t\t
      \    uint8_t instance)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/irdp_interface.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: irdp_if_get
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct irdp_interface
    signature: struct irdp_interface *irdp_if_get(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/irdp_interface.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: irdp_if_delete
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: int
    signature: int irdp_if_delete(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/irdp_interface.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - b_len
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: inet_2a
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *inet_2a(uint32_t a, char *b, size_t b_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/irdp_interface.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 98
    functionName: irdp_get_prefix
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: struct prefix
    signature: struct prefix *irdp_get_prefix(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/irdp_interface.c:109,1
    - Dst: htonl
      Src: /src/frr/zebra/irdp_interface.c:110,1
    - Dst: irdp_get_prefix
      Src: /src/frr/zebra/irdp_interface.c:111,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_interface.c:114,1
    - Dst: setsockopt
      Src: /src/frr/zebra/irdp_interface.c:121,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/irdp_interface.c:124,1
    - Dst: inet_2a
      Src: /src/frr/zebra/irdp_interface.c:127,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_interface.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - ifp
    - sock
    - group
    - add_leave
    argTypes:
    - struct interface*
    - int
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 131
    functionName: if_group
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - memset
    - irdp_get_prefix
    - safe_strerror
    - htonl
    - flog_err_sys
    - setsockopt
    - inet_2a
    linkageType: ''
    returnType: int
    signature: "int if_group(struct interface *ifp, int sock, uint32_t group,\n\t\t
      \   int add_leave)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_group
      Src: /src/frr/zebra/irdp_interface.c:143,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:149,1
    - Dst: inet_2a
      Src: /src/frr/zebra/irdp_interface.c:150,1
    - Dst: htonl
      Src: /src/frr/zebra/irdp_interface.c:150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 153
    functionName: if_add_group
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - htonl
    - zlog_debug
    - if_group
    - inet_2a
    linkageType: ''
    returnType: int
    signature: int if_add_group(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_group
      Src: /src/frr/zebra/irdp_interface.c:165,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:171,1
    - Dst: inet_2a
      Src: /src/frr/zebra/irdp_interface.c:172,1
    - Dst: htonl
      Src: /src/frr/zebra/irdp_interface.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 175
    functionName: if_drop_group
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - htonl
    - zlog_debug
    - if_group
    - inet_2a
    linkageType: ''
    returnType: int
    signature: int if_drop_group(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - irdp
    argTypes:
    - struct irdp_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: if_set_defaults
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void if_set_defaults(struct irdp_interface *irdp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/irdp_interface.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: Adv_new
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct Adv
    signature: struct Adv *Adv_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/irdp_interface.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adv
    argTypes:
    - struct Adv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: Adv_free
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void Adv_free(struct Adv *adv)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/irdp_interface.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:209,1
    - Dst: irdp_sock_init
      Src: /src/frr/zebra/irdp_interface.c:212,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_interface.c:213,1
    - Dst: if_add_update
      Src: /src/frr/zebra/irdp_interface.c:223,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_interface.c:226,1
    - Dst: if_add_group
      Src: /src/frr/zebra/irdp_interface.c:233,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_interface.c:236,1
    - Dst: if_set_defaults
      Src: /src/frr/zebra/irdp_interface.c:243,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/irdp_interface.c:251,1
    - Dst: srandom
      Src: /src/frr/zebra/irdp_interface.c:256,1
    - Dst: frr_weak_random
      Src: /src/frr/zebra/irdp_interface.c:257,1
    - Dst: list_new
      Src: /src/frr/zebra/irdp_interface.c:259,1
    - Dst: if
      Src: /src/frr/zebra/irdp_interface.c:265,1
    - Dst: if
      Src: /src/frr/zebra/irdp_interface.c:270,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:271,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/irdp_interface.c:275,1
    - Dst: irdp_if_stop
      Src: /src/frr/zebra/irdp_interface.c:279,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:285,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:290,1
    - Dst: if_drop_group
      Src: /src/frr/zebra/irdp_interface.c:295,1
    - Dst: irdp_advert_off
      Src: /src/frr/zebra/irdp_interface.c:297,1
    - Dst: list_delete
      Src: /src/frr/zebra/irdp_interface.c:299,1
    - Dst: irdp_if_shutdown
      Src: /src/frr/zebra/irdp_interface.c:305,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:314,1
    - Dst: if_drop_group
      Src: /src/frr/zebra/irdp_interface.c:322,1
    - Dst: irdp_advert_off
      Src: /src/frr/zebra/irdp_interface.c:325,1
    - Dst: irdp_if_no_shutdown
      Src: /src/frr/zebra/irdp_interface.c:328,1
    - Dst: irdp_if_get
      Src: /src/frr/zebra/irdp_interface.c:330,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_interface.c:336,1
    - Dst: irdp_if_start
      Src: /src/frr/zebra/irdp_interface.c:342,1
    - Dst: irdp_config_write
      Src: /src/frr/zebra/irdp_interface.c:348,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:362,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:365,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:367,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:369,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/irdp_interface.c:371,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:372,1
    - Dst: inet_2a
      Src: /src/frr/zebra/irdp_interface.c:373,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:376,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:378,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:381,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:388,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:395,1
    - Dst: irdp_if_get
      Src: /src/frr/zebra/irdp_interface.c:396,1
    - Dst: irdp_if_start
      Src: /src/frr/zebra/irdp_interface.c:398,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:402,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:409,1
    - Dst: irdp_if_get
      Src: /src/frr/zebra/irdp_interface.c:410,1
    - Dst: irdp_if_start
      Src: /src/frr/zebra/irdp_interface.c:412,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:416,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:423,1
    - Dst: irdp_if_stop
      Src: /src/frr/zebra/irdp_interface.c:425,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:429,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:436,1
    - Dst: irdp_if_shutdown
      Src: /src/frr/zebra/irdp_interface.c:438,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:442,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:450,1
    - Dst: irdp_if_no_shutdown
      Src: /src/frr/zebra/irdp_interface.c:452,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:456,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:465,1
    - Dst: irdp_if_get
      Src: /src/frr/zebra/irdp_interface.c:466,1
    - Dst: atoi
      Src: /src/frr/zebra/irdp_interface.c:470,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:474,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:483,1
    - Dst: irdp_if_get
      Src: /src/frr/zebra/irdp_interface.c:484,1
    - Dst: IRDP_CONFIGED
      Src: /src/frr/zebra/irdp_interface.c:486,1
    - Dst: atoi
      Src: /src/frr/zebra/irdp_interface.c:488,1
    - Dst: atoi
      Src: /src/frr/zebra/irdp_interface.c:489,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:492,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:498,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/zebra/irdp_interface.c:507,1
    - Dst: irdp_if_get
      Src: /src/frr/zebra/irdp_interface.c:508,1
    - Dst: IRDP_CONFIGED
      Src: /src/frr/zebra/irdp_interface.c:510,1
    - Dst: atoi
      Src: /src/frr/zebra/irdp_interface.c:512,1
    - Dst: atoi
      Src: /src/frr/zebra/irdp_interface.c:513,1
    - Dst: vty_out
      Src: /src/frr/zebra/irdp_interface.c:516,1
    - Dst: DEFUN
      Src: /src/frr/zebra/irdp_interface.c:527,1
    - Dst: irdp_if_get
      Src: /src/frr/zebra/irdp_interface.c:537,1
    - Dst: atoi
      Src: /src/frr/zebra/irdp_interface.c:541,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - ifp
    - multicast
    - set_defaults
    argTypes:
    - struct interface*
    - int
    - int
    assertStmts:
    - condition: (irdp)
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/zebra/irdp_interface.c
    constantsTouched: []
    func_position:
      end: 543
      start: 196
    functionDepth: 5
    functionLinenumber: 196
    functionLinenumberEnd: 543
    functionName: irdp_if_start
    functionSourceFile: /src/frr/zebra/irdp_interface.c
    functionUses: 1
    functionsReached:
    - list_delete
    - if_add_group
    - if_drop_group
    - inet_2a
    - irdp_advert_off
    - irdp_if_get
    - frr_weak_random
    - flog_warn
    - irdp_config_write
    - VTY_DECLVAR_CONTEXT
    - IRDP_CONFIGED
    - ALL_LIST_ELEMENTS_RO
    - irdp_sock_init
    - if_set_defaults
    - zlog_debug
    - if
    - assert
    - irdp_if_start
    - srandom
    - irdp_if_no_shutdown
    - DEFUN
    - vty_out
    - if_add_update
    - event_add_timer
    - irdp_if_shutdown
    - atoi
    - irdp_if_stop
    - list_new
    linkageType: ''
    returnType: void
    signature: "void irdp_if_start(struct interface *ifp, int multicast,\n\t\t\t  int
      set_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: ZEBRA_IF_IS_PROTODOWN
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_IF_IS_PROTODOWN(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - zif
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL(zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: IS_ZEBRA_IF_VRF
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_VRF(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 227
    functionName: IS_ZEBRA_IF_BRIDGE
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_BRIDGE(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: IS_ZEBRA_IF_VLAN
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_VLAN(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 233
    functionName: IS_ZEBRA_IF_VXLAN
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_VXLAN(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    functionName: IS_ZEBRA_IF_MACVLAN
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_MACVLAN(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 239
    functionName: IS_ZEBRA_IF_VETH
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_VETH(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: IS_ZEBRA_IF_BOND
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_BOND(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 245
    functionName: IS_ZEBRA_IF_GRE
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_GRE(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: IS_ZEBRA_IF_BRIDGE_SLAVE
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_BRIDGE_SLAVE(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 252
    functionName: IS_ZEBRA_IF_VRF_SLAVE
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_VRF_SLAVE(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: IS_ZEBRA_IF_BOND_SLAVE
    functionSourceFile: /src/frr/zebra/interface.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ZEBRA_IF_BOND_SLAVE(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mh_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: zebra_evpn_do_dup_addr_detect
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_mh_do_dup_addr_detect
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_do_dup_addr_detect(struct zebra_vrf *zvrf)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:147,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/zebra/zebra_vxlan.c:156,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/zebra/zebra_vxlan.c:160,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:174,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - hle1
    - hle2
    argTypes:
    - struct host_rb_entry*
    - struct host_rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 178
    functionName: host_rb_entry_compare
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - is_evpn_prefix_ipaddr_v4
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int host_rb_entry_compare(const struct host_rb_entry *hle1,\n\t\t\t\t
      const struct host_rb_entry *hle2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vxlan.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hrbe
    argTypes:
    - struct host_rb_tree_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 190
    functionName: rb_host_count
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rb_host_count(struct host_rb_tree_entry *hrbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_cmp
      Src: /src/frr/zebra/zebra_vxlan.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 198
    functionName: l3vni_rmac_nh_list_cmp
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - ipaddr_cmp
    linkageType: ''
    returnType: int
    signature: int l3vni_rmac_nh_list_cmp(void *p1, void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vtep_ip
    argTypes:
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: l3vni_rmac_nh_free
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void l3vni_rmac_nh_free(struct ipaddr *vtep_ip)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_vxlan.c:212,1
    - Dst: ipaddr_cmp
      Src: /src/frr/zebra/zebra_vxlan.c:213,1
    - Dst: l3vni_rmac_nh_free
      Src: /src/frr/zebra/zebra_vxlan.c:218,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_vxlan.c:219,1
    - Dst: zevpn_print_neigh_hash_all_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:226,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:243,1
    - Dst: num_dup_detected_neighs
      Src: /src/frr/zebra/zebra_vxlan.c:246,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:249,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:253,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:254,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:255,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:260,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:268,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:273,1
    - Dst: zebra_evpn_print_neigh_hdr
      Src: /src/frr/zebra/zebra_vxlan.c:277,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:280,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:283,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:287,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - zl3vni
    - zrmac
    - vtep_ip
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_mac*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 288
    functionName: l3vni_rmac_nh_list_nh_delete
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - ipaddr_cmp
    - zevpn_print_neigh_hash_all_evpn
    - json_object_new_object
    - zebra_evpn_print_neigh_hdr
    - l3vni_rmac_nh_free
    - num_dup_detected_neighs
    - vty_out
    - snprintf
    - memset
    - json_object_int_add
    - list_delete_node
    - json_object_object_add
    - hash_iterate
    - ALL_LIST_ELEMENTS
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void l3vni_rmac_nh_list_nh_delete(struct zebra_l3vni *zl3vni,\n\t\t\t\t\t
      struct zebra_mac *zrmac,\n\t\t\t\t\t struct ipaddr *vtep_ip)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:311,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:314,1
    - Dst: num_dup_detected_neighs
      Src: /src/frr/zebra/zebra_vxlan.c:316,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:320,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:324,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:325,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:326,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:330,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:334,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:341,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:344,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:348,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 349
    functionName: zevpn_print_neigh_hash_all_evpn_detail
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - num_dup_detected_neighs
    - snprintf
    - memset
    - json_object_int_add
    - json_object_object_add
    - hash_iterate
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void zevpn_print_neigh_hash_all_evpn_detail(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      void **args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:361,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:362,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:363,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:364,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:367,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:369,1
    - Dst: rb_host_count
      Src: /src/frr/zebra/zebra_vxlan.c:370,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:371,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vxlan.c:372,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:373,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vxlan.c:376,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:377,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:378,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:379,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:381,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:384,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:386,1
    - Dst: rb_host_count
      Src: /src/frr/zebra/zebra_vxlan.c:387,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vxlan.c:388,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:389,1
    - Dst: json_object_new_string
      Src: /src/frr/zebra/zebra_vxlan.c:391,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_vxlan.c:391,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - n
    - vty
    - json
    argTypes:
    - struct zebra_neigh*
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 396
    functionName: zl3vni_print_nh
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - prefix2str
    - rb_host_count
    - vty_out
    - json_object_array_add
    - prefix_mac2str
    - json_object_int_add
    - json_object_string_add
    - json_object_new_string
    - json_object_object_add
    - ipaddr2str
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void zl3vni_print_nh(struct zebra_neigh *n, struct vty *vty,\n\t\t\t
      \   json_object *json)"
  - BBCount: 528
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:407,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:408,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vxlan.c:411,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_vxlan.c:412,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_vxlan.c:414,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_vxlan.c:416,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:417,1
    - Dst: json_object_new_stringf
      Src: /src/frr/zebra/zebra_vxlan.c:417,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:420,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:446,1
    - Dst: num_dup_detected_macs
      Src: /src/frr/zebra/zebra_vxlan.c:451,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:454,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:455,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:456,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:459,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:461,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:463,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:465,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:469,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:474,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:475,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:486,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:489,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:493,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:494,1
    - Dst: zevpn_print_mac_hash_all_evpn_detail
      Src: /src/frr/zebra/zebra_vxlan.c:501,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:518,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:526,1
    - Dst: num_dup_detected_macs
      Src: /src/frr/zebra/zebra_vxlan.c:530,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:534,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:535,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:539,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:541,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:544,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:552,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:555,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:560,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:561,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:579,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:583,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:584,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:585,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:587,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:588,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:589,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:591,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:592,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:593,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:611,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:617,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:619,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:624,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:626,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:628,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:630,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:632,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:635,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:637,1
    - Dst: zl3vni_print_nh_all_table
      Src: /src/frr/zebra/zebra_vxlan.c:652,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:671,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:676,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:677,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:681,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:682,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:684,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:690,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:693,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:695,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:711,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:715,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:716,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:719,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:721,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_vxlan.c:722,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:724,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:725,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:744,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:745,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:746,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:747,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:748,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:750,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:752,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:753,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:754,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:754,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:755,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:755,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:756,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:757,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:760,1
    - Dst: zl3vni_sysmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:761,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:762,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:763,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:764,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_vxlan.c:765,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:766,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:767,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vxlan.c:769,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:770,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:771,1
    - Dst: CPP_NOTICE
      Src: /src/frr/zebra/zebra_vxlan.c:773,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:775,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:775,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:776,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:777,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_vxlan.c:778,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:780,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:781,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:782,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:783,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:784,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:784,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:785,1
    - Dst: zl3vni_sysmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:787,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:788,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:790,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:791,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:793,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_vxlan.c:796,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:797,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_vxlan.c:798,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:800,1
    - Dst: zl3vni_print_hash
      Src: /src/frr/zebra/zebra_vxlan.c:805,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:818,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:819,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:820,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:821,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:822,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:826,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:827,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:828,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:829,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:830,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:831,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:832,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:833,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:834,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:835,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:836,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:837,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:838,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:839,1
    - Dst: zl3vni_print_hash_detail
      Src: /src/frr/zebra/zebra_vxlan.c:844,1
    - Dst: zebra_vxlan_print_vni
      Src: /src/frr/zebra/zebra_vxlan.c:858,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:862,1
    - Dst: zvni_map_to_svi_ns
      Src: /src/frr/zebra/zebra_vxlan.c:865,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:878,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:881,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:881,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:884,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:907,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:919,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:920,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:923,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:930,1
    - Dst: zebra_evpn_vxlan_del
      Src: /src/frr/zebra/zebra_vxlan.c:935,1
    - Dst: zevpn_vxlan_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:938,1
    - Dst: zevpn_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:939,1
    - Dst: zebra_vxlan_sg_deref
      Src: /src/frr/zebra/zebra_vxlan.c:942,1
    - Dst: zebra_evpn_del
      Src: /src/frr/zebra/zebra_vxlan.c:944,1
    - Dst: zevpn_build_vni_hash_table
      Src: /src/frr/zebra/zebra_vxlan.c:947,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:962,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:966,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:970,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_vxlan.c:983,1
    - Dst: zl3vni_map_to_mac_vlan_if
      Src: /src/frr/zebra/zebra_vxlan.c:986,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:989,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:995,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:996,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1002,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1010,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1012,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:1020,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1021,1
    - Dst: zebra_evpn_send_mac_list_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1024,1
    - Dst: zebra_evpn_send_neigh_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1027,1
    - Dst: zebra_evpn_add
      Src: /src/frr/zebra/zebra_vxlan.c:1029,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1031,1
    - Dst: zebra_vxlan_sg_deref
      Src: /src/frr/zebra/zebra_vxlan.c:1040,1
    - Dst: zebra_vxlan_sg_ref
      Src: /src/frr/zebra/zebra_vxlan.c:1042,1
    - Dst: zebra_evpn_es_set_base_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:1049,1
    - Dst: zevpn_vxlan_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:1051,1
    - Dst: zevpn_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:1053,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:1054,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:1059,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_vxlan.c:1061,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:1069,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1070,1
    - Dst: zevpn_build_hash_table_zns
      Src: /src/frr/zebra/zebra_vxlan.c:1077,1
    - Dst: __attribute__
      Src: /src/frr/zebra/zebra_vxlan.c:1078,1
    - Dst: __attribute__
      Src: /src/frr/zebra/zebra_vxlan.c:1079,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:1086,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:1089,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:1089,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1104,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1112,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan.c:1113,1
    - Dst: zebra_vxlan_if_vni_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:1116,1
    - Dst: zevpn_build_hash_table
      Src: /src/frr/zebra/zebra_vxlan.c:1127,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:1129,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:1143,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1145,1
    - Dst: zebra_evpn_cleanup_all
      Src: /src/frr/zebra/zebra_vxlan.c:1147,1
    - Dst: zl3vni_cleanup_all
      Src: /src/frr/zebra/zebra_vxlan.c:1151,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:1157,1
    - Dst: rb_find_or_add_host
      Src: /src/frr/zebra/zebra_vxlan.c:1160,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1166,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1167,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_vxlan.c:1169,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1173,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1174,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_vxlan.c:1176,1
    - Dst: rb_delete_host
      Src: /src/frr/zebra/zebra_vxlan.c:1179,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1184,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1185,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_vxlan.c:1187,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_vxlan.c:1189,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1190,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1199,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1205,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1206,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1207,1
    - Dst: zl3vni_rmac_alloc
      Src: /src/frr/zebra/zebra_vxlan.c:1215,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1220,1
    - Dst: zl3vni_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:1229,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1235,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1236,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1237,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_vxlan.c:1238,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1242,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1243,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1251,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1256,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1258,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1259,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1277,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1288,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:1292,1
    - Dst: dplane_rem_mac_add
      Src: /src/frr/zebra/zebra_vxlan.c:1297,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1318,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1319,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1324,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1338,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:1341,1
    - Dst: dplane_rem_mac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1346,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1362,1
    - Dst: zl3vni_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1368,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1373,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1376,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1377,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:1378,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1379,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:1382,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1386,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_vxlan.c:1387,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1390,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1397,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1398,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:1399,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1400,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1403,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1417,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1418,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/zebra_vxlan.c:1421,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1424,1
    - Dst: l3vni_rmac_nh_list_nh_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1428,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_vxlan.c:1432,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:1434,1
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_vxlan.c:1437,1
    - Dst: listhead
      Src: /src/frr/zebra/zebra_vxlan.c:1437,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1440,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1447,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:1450,1
    - Dst: zl3vni_rmac_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1452,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:1455,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1459,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1464,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1478,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1479,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1482,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1484,1
    - Dst: _nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1495,1
    - Dst: _nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1503,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1514,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1530,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1531,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1534,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1536,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:1538,1
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_vxlan.c:1540,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1542,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1543,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1544,1
    - Dst: _nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1556,1
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/zebra_vxlan.c:1567,1
    - Dst: RB_ROOT
      Src: /src/frr/zebra/zebra_vxlan.c:1568,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_vxlan.c:1570,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1571,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1574,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1575,1
    - Dst: _nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1586,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1597,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1598,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:1612,1
    - Dst: dplane_rem_neigh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1623,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:1638,1
    - Dst: dplane_rem_neigh_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1641,1
    - Dst: _nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1651,1
    - Dst: _nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1660,1
    - Dst: _nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1668,1
    - Dst: _nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1676,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1688,1
    - Dst: zl3vni_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1690,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1692,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1699,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:1700,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1702,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1707,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1709,1
    - Dst: rb_find_or_add_host
      Src: /src/frr/zebra/zebra_vxlan.c:1712,1
    - Dst: rb_delete_host
      Src: /src/frr/zebra/zebra_vxlan.c:1722,1
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/zebra_vxlan.c:1724,1
    - Dst: zl3vni_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1726,1
    - Dst: zl3vni_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:1729,1
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:1742,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1746,1
    - Dst: svd_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1748,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1750,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:1756,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1758,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1762,1
    - Dst: svd_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1773,1
    - Dst: svd_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1781,1
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:1793,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1796,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1798,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1806,1
    - Dst: svd_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1811,1
    - Dst: svd_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:1812,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1827,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1835,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1845,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1853,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_vxlan.c:1865,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1887,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1900,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1902,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1915,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1918,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_vxlan.c:1923,1
    - Dst: zebra_mac_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:1927,1
    - Dst: zebra_neigh_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:1930,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1943,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:1947,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:1951,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1955,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1956,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:1971,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:1973,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:1976,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:1976,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1991,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1998,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:2021,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2041,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2045,1
    - Dst: zebra_evpn_map_to_macvlan
      Src: /src/frr/zebra/zebra_vxlan.c:2062,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:2071,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2075,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2091,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2094,1
    - Dst: zebra_l2_bridge_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2097,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:2102,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:2102,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2109,1
    - Dst: zebra_vxlan_if_access_vlan_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2115,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2127,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_vxlan.c:2147,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2153,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:2154,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_vxlan.c:2158,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2162,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:2172,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2185,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2189,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:2203,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2206,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2207,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:2221,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:2226,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2227,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2230,1
    - Dst: zl3vni_get_svi_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2231,1
    - Dst: zl3vni_get_vrr_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2232,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_vxlan.c:2235,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2236,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:2240,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:2245,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2245,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2246,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2247,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_vxlan.c:2248,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2249,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2250,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2251,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2252,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:2255,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:2255,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2258,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:2260,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2260,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:2262,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:2265,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:2268,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:2279,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:2284,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:2286,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2286,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2287,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:2290,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:2290,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2293,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:2294,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2294,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:2295,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:2298,1
    - Dst: zl3vni_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2307,1
    - Dst: zl3vni_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2316,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2324,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_vxlan.c:2325,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2350,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2355,1
    - Dst: zebra_evpn_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2358,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2360,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2361,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2364,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2366,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan.c:2368,1
    - Dst: zebra_evpn_vxlan_del
      Src: /src/frr/zebra/zebra_vxlan.c:2371,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:2372,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2388,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2392,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:2393,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:2393,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2402,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_vxlan.c:2411,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2418,1
    - Dst: zebra_evpn_add
      Src: /src/frr/zebra/zebra_vxlan.c:2422,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2425,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2429,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:2431,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2438,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2439,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_vxlan.c:2440,1
    - Dst: zl3vni_rmac_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:2455,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:2458,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:2460,1
    - Dst: zl3vni_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:2471,1
    - Dst: zl3vni_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2472,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2481,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2486,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:2489,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2499,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:2503,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2514,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:2515,1
    - Dst: zl3vni_remote_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:2522,1
    - Dst: svd_remote_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:2525,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2532,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/zebra_vxlan.c:2535,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2538,1
    - Dst: zl3vni_remote_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:2545,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2557,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2562,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2565,1
    - Dst: zl3vni_remote_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2568,1
    - Dst: svd_remote_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2571,1
    - Dst: zl3vni_remote_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:2575,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2586,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2588,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2589,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2593,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2596,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2598,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2602,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2605,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2607,1
    - Dst: zl3vni_print_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2613,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2616,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2627,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2629,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2630,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2634,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2637,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2639,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2642,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2646,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2650,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2652,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2654,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2656,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2659,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2668,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2670,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2671,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2677,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2683,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2694,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2696,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2697,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2703,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2705,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2708,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2710,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2715,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2720,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2722,1
    - Dst: zl3vni_print_nh
      Src: /src/frr/zebra/zebra_vxlan.c:2728,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2731,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2741,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2751,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2753,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2755,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2757,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2760,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2767,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2769,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2773,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2776,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2778,1
    - Dst: l3vni_print_nh_table
      Src: /src/frr/zebra/zebra_vxlan.c:2782,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2787,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2789,1
    - Dst: l3vni_print_nh_table
      Src: /src/frr/zebra/zebra_vxlan.c:2793,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2802,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2804,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2805,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2811,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2817,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2830,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2832,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2833,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2837,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2840,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2842,1
    - Dst: zl3vni_print
      Src: /src/frr/zebra/zebra_vxlan.c:2848,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2851,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2860,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2865,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:2866,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2867,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2868,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:2868,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:2869,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2873,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2874,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:2874,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2875,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2876,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2877,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2878,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2879,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2880,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:2881,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2882,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:2884,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:2885,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2901,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2903,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2904,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2908,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2911,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2913,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2916,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2924,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2929,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2933,1
    - Dst: zebra_evpn_print_neigh_hdr
      Src: /src/frr/zebra/zebra_vxlan.c:2936,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2938,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2940,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2942,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2955,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2957,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2958,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2966,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2971,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2985,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2987,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2988,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2996,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3001,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3016,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3018,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3019,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3023,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3026,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3028,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3031,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3034,1
    - Dst: zebra_evpn_print_neigh
      Src: /src/frr/zebra/zebra_vxlan.c:3040,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3043,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3060,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3062,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3063,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3067,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3070,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3072,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3075,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3079,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3086,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3088,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3091,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3109,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3111,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3112,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3116,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3119,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3121,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3125,1
    - Dst: num_dup_detected_neighs
      Src: /src/frr/zebra/zebra_vxlan.c:3129,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3137,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3142,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3146,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3149,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3153,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3155,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3159,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3174,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3176,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3180,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3183,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3185,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3188,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3193,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3194,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3197,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3204,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3207,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3210,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3212,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3217,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3220,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3223,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3227,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3228,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3242,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3244,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3245,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3249,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3253,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3256,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3270,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3272,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3273,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3277,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3281,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3285,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3299,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3301,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3302,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3311,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3314,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3329,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3331,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3332,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3336,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3339,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3341,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3344,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3347,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3349,1
    - Dst: zebra_evpn_print_mac
      Src: /src/frr/zebra/zebra_vxlan.c:3355,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3358,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3372,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3375,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3377,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3381,1
    - Dst: num_dup_detected_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3385,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3390,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3391,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3394,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3400,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3403,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3406,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3408,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3411,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3412,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3426,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3429,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3431,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3435,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:3437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3442,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3443,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_vxlan.c:3449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3459,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_vxlan.c:3460,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3461,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_vxlan.c:3462,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3466,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3472,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3477,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3484,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3486,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_vxlan.c:3492,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3495,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_vxlan.c:3496,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_vxlan.c:3499,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3515,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3518,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3520,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3524,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3526,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:3531,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3533,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3534,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3540,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3542,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3543,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:3546,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:3551,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3554,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3561,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3565,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_vxlan.c:3566,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3586,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3589,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3594,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_vxlan.c:3597,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3598,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_vxlan.c:3600,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3609,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3611,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3620,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_vxlan.c:3621,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_vxlan.c:3624,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3642,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3643,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3646,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3650,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3651,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3654,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3663,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3668,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3681,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3684,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_vxlan.c:3686,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3690,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3691,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3694,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3698,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3699,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3702,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3721,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3722,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3726,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3729,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3731,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3734,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3739,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3740,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3743,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3749,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3752,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3754,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3755,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3777,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3779,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3780,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3787,1
    - Dst: zl3vni_print
      Src: /src/frr/zebra/zebra_vxlan.c:3789,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3791,1
    - Dst: zebra_evpn_print
      Src: /src/frr/zebra/zebra_vxlan.c:3793,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3795,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:3805,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3807,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3821,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3823,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3824,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:3828,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3830,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3831,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:3835,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:3837,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:3840,1
    - Dst: zebra_evpn_mh_do_adv_svi_mac
      Src: /src/frr/zebra/zebra_vxlan.c:3841,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3843,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3844,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3845,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3846,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vxlan.c:3847,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_vxlan.c:3850,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3852,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3853,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3854,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/zebra_vxlan.c:3856,1
    - Dst: zebra_evpn_mh_json
      Src: /src/frr/zebra/zebra_vxlan.c:3858,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3860,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3861,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3862,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3864,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3866,1
    - Dst: zebra_evpn_mh_do_adv_svi_mac
      Src: /src/frr/zebra/zebra_vxlan.c:3867,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3868,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3869,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3871,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3875,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3878,1
    - Dst: zebra_evpn_mh_print
      Src: /src/frr/zebra/zebra_vxlan.c:3881,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3885,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3898,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3900,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3901,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3906,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3914,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3920,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3925,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3939,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3940,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3941,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3942,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3943,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3945,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3947,1
    - Dst: zebra_vxlan_clear_dup_detect_vni_all
      Src: /src/frr/zebra/zebra_vxlan.c:3953,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:3961,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:3963,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3983,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3985,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3989,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vxlan.c:3994,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:4002,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:4008,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:4014,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4033,1
    - Dst: zl3vni_local_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:4035,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4040,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4043,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4050,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4057,1
    - Dst: zebra_evpn_neigh_del_ip
      Src: /src/frr/zebra/zebra_vxlan.c:4060,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4084,1
    - Dst: zl3vni_local_nh_add_update
      Src: /src/frr/zebra/zebra_vxlan.c:4086,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4091,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4096,1
    - Dst: zebra_evpn_local_neigh_update
      Src: /src/frr/zebra/zebra_vxlan.c:4106,1
    - Dst: zebra_evpn_remote_neigh_update
      Src: /src/frr/zebra/zebra_vxlan.c:4110,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:4126,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4127,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4128,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_vxlan.c:4129,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4138,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4145,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4148,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:4152,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4153,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4155,1
    - Dst: zebra_vxlan_remote_macip_helper
      Src: /src/frr/zebra/zebra_vxlan.c:4181,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4190,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:4195,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4196,1
    - Dst: zebra_rib_queue_evpn_rem_macip_del
      Src: /src/frr/zebra/zebra_vxlan.c:4199,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4225,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4226,1
    - Dst: zebra_vxlan_remote_macip_helper
      Src: /src/frr/zebra/zebra_vxlan.c:4234,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:4243,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_vxlan.c:4244,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4246,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4247,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:4254,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4256,1
    - Dst: zebra_rib_queue_evpn_rem_macip_add
      Src: /src/frr/zebra/zebra_vxlan.c:4260,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4281,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4284,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:4292,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4297,1
    - Dst: zebra_evpn_vtep_find
      Src: /src/frr/zebra/zebra_vxlan.c:4302,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4307,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_vxlan.c:4311,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4330,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4333,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4337,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4342,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4347,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4351,1
    - Dst: zebra_evpn_mac_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:4356,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:4363,1
    - Dst: zebra_evpn_mac_del
      Src: /src/frr/zebra/zebra_vxlan.c:4364,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_vxlan.c:4366,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4367,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4368,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4369,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4393,1
    - Dst: zebra_evpn_nhg_is_local_es
      Src: /src/frr/zebra/zebra_vxlan.c:4403,1
    - Dst: zebra_evpn_es_local_mac_via_network_port
      Src: /src/frr/zebra/zebra_vxlan.c:4404,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4406,1
    - Dst: zebra_vxlan_check_del_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4408,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4416,1
    - Dst: zebra_vxlan_local_mac_add_update
      Src: /src/frr/zebra/zebra_vxlan.c:4418,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4439,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4442,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4446,1
    - Dst: zebra_vxlan_readd_remote_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:4448,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4451,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4456,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4460,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4463,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_vxlan.c:4466,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4467,1
    - Dst: zebra_evpn_es_local_mac_via_network_port
      Src: /src/frr/zebra/zebra_vxlan.c:4468,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4473,1
    - Dst: zebra_evpn_del_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4476,1
    - Dst: zebra_evpn_map_vlan
      Src: /src/frr/zebra/zebra_vxlan.c:4494,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4498,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4505,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4510,1
    - Dst: zebra_evpn_del_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4513,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4528,1
    - Dst: zebra_evpn_map_vlan
      Src: /src/frr/zebra/zebra_vxlan.c:4533,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4536,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4545,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:4551,1
    - Dst: zebra_evpn_add_update_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4552,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4567,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4568,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4574,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4575,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4576,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4586,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4588,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4592,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4596,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4598,1
    - Dst: zebra_rib_queue_evpn_rem_vtep_del
      Src: /src/frr/zebra/zebra_vxlan.c:4601,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4601,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4620,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4621,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:4626,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4630,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4631,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4632,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4637,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4640,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4648,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:4656,1
    - Dst: zebra_evpn_vtep_find
      Src: /src/frr/zebra/zebra_vxlan.c:4664,1
    - Dst: zebra_evpn_vtep_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:4668,1
    - Dst: zebra_evpn_vtep_del
      Src: /src/frr/zebra/zebra_vxlan.c:4669,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4684,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4685,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:4690,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4694,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4695,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4696,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4701,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:4703,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:4712,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:4722,1
    - Dst: zebra_evpn_vtep_find
      Src: /src/frr/zebra/zebra_vxlan.c:4725,1
    - Dst: zebra_evpn_vtep_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:4736,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_vxlan.c:4738,1
    - Dst: zebra_evpn_vtep_add
      Src: /src/frr/zebra/zebra_vxlan.c:4741,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_vxlan.c:4743,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:4745,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4762,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4763,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4769,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4770,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4771,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4779,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4781,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4782,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4786,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4788,1
    - Dst: zebra_rib_queue_evpn_rem_vtep_add
      Src: /src/frr/zebra/zebra_vxlan.c:4791,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4791,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:4814,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:4815,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4818,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4821,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:4836,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4836,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4839,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4844,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:4853,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4854,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4856,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_vxlan.c:4859,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4864,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4866,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:4874,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4875,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4878,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_vxlan.c:4880,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4881,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4888,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4894,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4895,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4899,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4900,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4904,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4908,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4912,1
    - Dst: zebra_evpn_gw_macip_add
      Src: /src/frr/zebra/zebra_vxlan.c:4918,1
    - Dst: zebra_evpn_gw_macip_del
      Src: /src/frr/zebra/zebra_vxlan.c:4920,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4938,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:4942,1
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/zebra_vxlan.c:4950,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4955,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:4959,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan.c:4961,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:4967,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:4968,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4987,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:4994,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:4995,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5001,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5006,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5013,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5022,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:5024,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5026,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:5027,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:5030,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5032,1
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/zebra_vxlan.c:5036,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5039,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5040,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5041,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5061,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5065,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vxlan.c:5068,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5073,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:5075,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5075,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5078,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5081,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5082,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5100,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5103,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:5105,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5105,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5107,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5113,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5114,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:5125,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5128,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:5128,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5134,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5140,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5142,1
    - Dst: zebra_vxlan_handle_vni_transition
      Src: /src/frr/zebra/zebra_vxlan.c:5148,1
    - Dst: zl3vni_add
      Src: /src/frr/zebra/zebra_vxlan.c:5151,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5151,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:5160,1
    - Dst: zl3vni_map_to_vxlan_if
      Src: /src/frr/zebra/zebra_vxlan.c:5165,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_vxlan.c:5171,1
    - Dst: zl3vni_map_to_mac_vlan_if
      Src: /src/frr/zebra/zebra_vxlan.c:5173,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5176,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5184,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5187,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5188,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5191,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5193,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:5204,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5205,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:5210,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5213,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5217,1
    - Dst: zl3vni_del
      Src: /src/frr/zebra/zebra_vxlan.c:5221,1
    - Dst: zebra_vxlan_handle_vni_transition
      Src: /src/frr/zebra/zebra_vxlan.c:5224,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5234,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5238,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5239,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5240,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5249,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:5253,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5256,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5258,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5271,1
    - Dst: zl3vni_del
      Src: /src/frr/zebra/zebra_vxlan.c:5276,1
    - Dst: zebra_vxlan_handle_vni_transition
      Src: /src/frr/zebra/zebra_vxlan.c:5279,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5296,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_vxlan.c:5297,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5298,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5303,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5317,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5336,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5337,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5338,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5343,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:5344,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5348,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5350,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5360,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5364,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5376,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5381,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5384,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5388,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5394,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5404,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:5407,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5411,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5418,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5421,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5444,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5445,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5446,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5451,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:5452,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5454,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5462,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5476,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:5479,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5483,1
    - Dst: zebra_evpn_advertise_subnet
      Src: /src/frr/zebra/zebra_vxlan.c:5489,1
    - Dst: zebra_evpn_advertise_subnet
      Src: /src/frr/zebra/zebra_vxlan.c:5491,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5509,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5510,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5511,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5516,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:5517,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5521,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5523,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5532,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5533,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5537,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5548,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5553,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5556,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5559,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5562,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5572,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:5575,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5579,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5584,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5586,1
    - Dst: zebra_get_vrr_intf_for_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5589,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5591,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5594,1
    - Dst: zebra_get_vrr_intf_for_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5597,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5599,1
    - Dst: macfdb_read
      Src: /src/frr/zebra/zebra_vxlan.c:5613,1
    - Dst: neigh_read
      Src: /src/frr/zebra/zebra_vxlan.c:5623,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5643,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5643,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5647,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5648,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5651,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:5652,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5652,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5654,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5661,1
    - Dst: zebra_evpn_es_send_all_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:5668,1
    - Dst: zevpn_build_hash_table
      Src: /src/frr/zebra/zebra_vxlan.c:5671,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5674,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:5678,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:5681,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5686,1
    - Dst: zebra_evpn_es_send_all_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:5690,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5693,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5714,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_vxlan.c:5716,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5719,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_vxlan.c:5721,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:5728,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5730,1
    - Dst: zebra_vxlan_cleanup_sg_table
      Src: /src/frr/zebra/zebra_vxlan.c:5731,1
    - Dst: zebra_evpn_es_cleanup
      Src: /src/frr/zebra/zebra_vxlan.c:5734,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5742,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:5743,1
    - Dst: zebra_vxlan_cleanup_sg_table
      Src: /src/frr/zebra/zebra_vxlan.c:5745,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:5746,1
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_vxlan.c:5754,1
    - Dst: zebra_neigh_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:5757,1
    - Dst: zebra_evpn_mh_init
      Src: /src/frr/zebra/zebra_vxlan.c:5760,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:5766,1
    - Dst: zebra_evpn_mh_terminate
      Src: /src/frr/zebra/zebra_vxlan.c:5767,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5775,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5776,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5787,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5788,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5799,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5800,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5811,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5812,1
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:5815,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:5827,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:5831,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:5834,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:5836,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:5837,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:5838,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:5839,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:5842,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:5842,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5845,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:5848,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:5855,1
    - Dst: jhash_2words
      Src: /src/frr/zebra/zebra_vxlan.c:5862,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:5880,1
    - Dst: prefix_sg2str
      Src: /src/frr/zebra/zebra_vxlan.c:5884,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:5886,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5889,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5900,1
    - Dst: zebra_vxlan_sg_find
      Src: /src/frr/zebra/zebra_vxlan.c:5910,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:5920,1
    - Dst: zebra_vxlan_sg_do_ref
      Src: /src/frr/zebra/zebra_vxlan.c:5921,1
    - Dst: zebra_vxlan_sg_new
      Src: /src/frr/zebra/zebra_vxlan.c:5926,1
    - Dst: zebra_vxlan_sg_send
      Src: /src/frr/zebra/zebra_vxlan.c:5928,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5939,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:5947,1
    - Dst: zebra_vxlan_sg_do_deref
      Src: /src/frr/zebra/zebra_vxlan.c:5948,1
    - Dst: zebra_vxlan_sg_send
      Src: /src/frr/zebra/zebra_vxlan.c:5951,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:5954,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5957,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:5959,1
    - Dst: zebra_vxlan_sg_find
      Src: /src/frr/zebra/zebra_vxlan.c:5972,1
    - Dst: zebra_vxlan_sg_del
      Src: /src/frr/zebra/zebra_vxlan.c:5980,1
    - Dst: zebra_vxlan_sg_add
      Src: /src/frr/zebra/zebra_vxlan.c:5994,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:6010,1
    - Dst: zebra_vxlan_sg_do_deref
      Src: /src/frr/zebra/zebra_vxlan.c:6014,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:6025,1
    - Dst: zebra_vxlan_sg_do_ref
      Src: /src/frr/zebra/zebra_vxlan.c:6028,1
    - Dst: zebra_vxlan_sg_del
      Src: /src/frr/zebra/zebra_vxlan.c:6051,1
    - Dst: zebra_vxlan_sg_del
      Src: /src/frr/zebra/zebra_vxlan.c:6059,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6067,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6069,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6072,1
    - Dst: zebra_vxlan_sg_send
      Src: /src/frr/zebra/zebra_vxlan.c:6079,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:6087,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:6089,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:6091,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:6093,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6098,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6112,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:6115,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6118,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6121,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vxlan.c:6132,1
    - Dst: zebra_evpn_vrf_cfg_cleanup
      Src: /src/frr/zebra/zebra_vxlan.c:6135,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:6143,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:6145,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:6147,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:6148,1
    - Dst: zebra_evpn_bgp_cfg_clean_up
      Src: /src/frr/zebra/zebra_vxlan.c:6157,1
    - Dst: zebra_evpn_pim_cfg_clean_up
      Src: /src/frr/zebra/zebra_vxlan.c:6160,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_vxlan.c:6187,1
    CyclomaticComplexity: 605
    EdgeCount: 605
    ICount: 2405
    argCount: 3
    argNames:
    - zrmac
    - vty
    - json
    argTypes:
    - struct zebra_mac*
    - struct vty*
    - json_object*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 1537
        line_start: 1537
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (ifp)
      pos:
        line_end: 4527
        line_start: 4527
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (link_zif)
      pos:
        line_end: 5072
        line_start: 5072
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (_pifp)
      pos:
        line_end: 1972
        line_start: 1972
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (link_zif)
      pos:
        line_end: 5102
        line_start: 5102
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (in_param && p_zl3vni)
      pos:
        line_end: 2090
        line_start: 2090
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (br_zif)
      pos:
        line_end: 2093
        line_start: 2093
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 2152
        line_start: 2152
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 4438
        line_start: 4438
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 2161
        line_start: 2161
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 5099
        line_start: 5099
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 5060
        line_start: 5060
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 4329
        line_start: 4329
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zvrf)
      pos:
        line_end: 2226
        line_start: 2226
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (in_param && p_ifp)
      pos:
        line_end: 877
        line_start: 877
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 4280
        line_start: 4280
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 918
        line_start: 918
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 6188
      start: 399
    functionDepth: 7
    functionLinenumber: 399
    functionLinenumberEnd: 6188
    functionName: zl3vni_print_rmac
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - ifindex2ifname
    - zebra_vxlan_sg_send
    - zebra_evpn_send_del_to_client
    - zebra_evpn_rem_mac_install
    - zebra_evpn_from_svi
    - route_top
    - listhead
    - zebra_evpn_es_local_mac_via_network_port
    - IS_ZEBRA_IF_MACVLAN
    - hash_lookup
    - IPV4_ADDR_SAME
    - flog_err
    - _nh_uninstall
    - zebra_evpn_es_cleanup
    - json_object_boolean_false_add
    - RB_EMPTY
    - zl3vni_lookup
    - num_dup_detected_macs
    - json_object_boolean_add
    - _nh_lookup
    - zvni_map_to_svi_ns
    - zebra_evpn_add
    - snprintf
    - memset
    - XCALLOC
    - zl3vni_print_nh
    - zebra_evpn_process_neigh_on_remote_mac_add
    - zebra_evpn_gw_macip_add
    - RB_INSERT
    - zl3vni_rmac_del
    - zl3vni_get_vrr_rmac
    - zebra_evpn_vtep_del_all
    - rb_delete_host
    - STREAM_GETW
    - zebra_evpn_add_update_local_mac
    - zl3vni_add
    - listgetdata
    - stream_put_in_addr
    - zevpn_build_vni_hash_table
    - zebra_vxlan_sg_ref
    - svd_remote_nh_add
    - macfdb_read
    - zebra_evpn_pim_cfg_clean_up
    - zebra_evpn_lookup
    - zebra_evpn_nhg_is_local_es
    - zevpn_bridge_if_set
    - ns_walk_func
    - zebra_evpn_del
    - listcount
    - zl3vni_svi_if_name
    - zl3vni_remote_rmac_del
    - zebra_evpn_print_neigh
    - IS_ZEBRA_VXLAN_IF_VNI
    - EVENT_OFF
    - zvni_map_to_svi
    - zebra_vxlan_sg_deref
    - memcpy
    - zebra_evpn_mac_del_all
    - json_object_new_object
    - zebra_rib_queue_evpn_rem_vtep_add
    - prefix_sg2str
    - zebra_evpn_vrf_cfg_cleanup
    - num_dup_detected_neighs
    - dplane_rem_neigh_add
    - zl3vni_get_svi_rmac
    - zebra_evpn_map_to_macvlan
    - zebra_evpn_neigh_lookup
    - snprintfrr
    - zebra_evpn_neigh_del_ip
    - zl3vni_nh_install
    - list_new
    - STREAM_GETL
    - ALL_LIST_ELEMENTS
    - zl3vni_local_nh_add_update
    - zl3vni_state2str
    - RB_FIND
    - zebra_mac_db_create
    - zl3vni_map_to_mac_vlan_if
    - zebra_evpn_mac_lookup
    - zl3vni_nh_uninstall
    - zl3vni_sysmac2str
    - _nh_add
    - zebra_evpn_send_add_to_client
    - jhash_1word
    - l3vni_print_nh_table
    - zebra_evpn_vxlan_del
    - zl3vni_nh_add
    - zebra_vxlan_sg_add
    - zl3vni_rmac_lookup
    - hook_register
    - zl3vni_rmac_uninstall
    - zebra_evpn_neigh_send_add_to_client
    - stream_putw_at
    - zl3vni_remote_nh_add
    - zl3vni_local_nh_del
    - zebra_evpn_mac_send_del_to_client
    - zl3vni_vrf_id
    - zl3vni_vrf_name
    - zebra_ns_lookup
    - zevpn_vxlan_if_set
    - zebra_evpn_neigh_del_all
    - zebra_evpn_bgp_cfg_clean_up
    - zebra_evpn_mh_json
    - num_valid_macs
    - listnode_add_sort
    - IS_ZEBRA_IF_VLAN
    - neigh_read
    - svd_remote_nh_del
    - IS_ZEBRA_IF_BRIDGE
    - zl3vni_print
    - zl3vni_vxlan_if_name
    - zl3vni_rmac_alloc
    - json_object_new_array
    - dplane_rem_mac_add
    - svd_nh_add
    - hash_create_size
    - zclient_create_header
    - zl3vni_rmac2str
    - zebra_evpn_cleanup_all
    - json_object_new_stringf
    - RB_REMOVE
    - prefix_mac2str
    - zl3vni_print_rmac
    - zebra_evpn_mac_del
    - zl3vni_print_hash
    - zl3vni_send_add_to_client
    - _nh_install
    - zl3vni_rmac_install
    - json_object_object_add
    - zebra_vxlan_if_vni_find
    - is_evpn_enabled
    - ipaddr2str
    - if_is_operative
    - zebra_l2_bridge_if_vni_find
    - vty_json
    - RB_FOREACH
    - stream_putl
    - zebra_evpn_print_neigh_hdr
    - advertise_svi_macip_enabled
    - stream_put
    - hash_create
    - memcmp
    - zebra_evpn_remote_neigh_update
    - zebra_evpn_print_mac
    - STREAM_GETC
    - json_object_string_add
    - zevpn_build_hash_table
    - zl3vni_from_svi
    - zebra_evpn_mh_print
    - svd_nh_uninstall
    - zserv_find_client
    - advertise_gw_macip_enabled
    - zebra_vxlan_sg_del
    - is_l3vni_oper_up
    - zl3vni_from_vrf
    - zebra_evpn_add_macip_for_intf
    - hash_free
    - svd_nh_del
    - zl3vni_cleanup_all
    - zlog_debug
    - zl3vni_map_to_vxlan_if
    - zebra_evpn_send_neigh_to_client
    - jhash_2words
    - RB_ROOT
    - assert
    - listnode_add_sort_nodup
    - zebra_neigh_db_create
    - zebra_rib_queue_evpn_rem_macip_del
    - zebra_evpn_acc_bd_svi_set
    - zebra_vxlan_cleanup_sg_table
    - zebra_evpn_mh_terminate
    - vty_out
    - zvrf_name
    - strlcpy
    - zlog_err
    - json_object_int_add
    - route_next
    - zl3vni_remote_rmac_add
    - zl3vni_map_to_svi_if
    - XFREE
    - zl3vni_del
    - hash_release
    - zebra_evpn_read_mac_neigh
    - zebra_evpn_local_neigh_update
    - zebra_evpn_print
    - zebra_evpn_del_macip_for_intf
    - stream_new
    - json_object_array_add
    - zebra_evpn_vtep_add
    - vrf_id_to_name
    - zebra_vxlan_check_del_local_mac
    - zebra_vxlan_sg_find
    - dplane_rem_neigh_delete
    - zl3vni_send_del_to_client
    - SET_FLAG
    - json_object_boolean_true_add
    - zebra_vxlan_remote_macip_helper
    - ZEBRA_NEIGH_SET_INACTIVE
    - zebra_rib_queue_evpn_rem_vtep_del
    - hashcount
    - zebra_evpn_mac_send_add_to_client
    - zl3vni_nh_lookup
    - list_delete
    - zebra_evpn_do_dup_addr_detect
    - zebra_vxlan_process_l3vni_oper_down
    - l3vni_rmac_nh_list_nh_delete
    - esi_to_str
    - zebra_vrf_get_evpn
    - zserv_send_message
    - if_lookup_by_index_per_ns
    - zebra_evpn_gw_macip_del
    - zebra_evpn_send_mac_list_to_client
    - zlog_warn
    - vrf_info_lookup
    - json_object_string_addf
    - zebra_evpn_es_send_all_to_client
    - zebra_rib_queue_evpn_rem_macip_add
    - zebra_evpn_es_set_base_evpn
    - zebra_get_vrr_intf_for_svi
    - zl3vni_nh_del
    - hook_call
    - zebra_evpn_vtep_find
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - RB_INIT
    - zebra_evpn_vtep_uninstall
    - zl3vni_rmac_add
    - zebra_evpn_vtep_install
    - zebra_vxlan_sg_do_deref
    - zl3vni_remote_nh_del
    - zebra_vxlan_handle_vni_transition
    - hash_iterate
    - zebra_vrf_lookup_by_id
    - zebra_vxlan_clear_dup_detect_vni_all
    - hash_get
    - zebra_evpn_process_neigh_on_local_mac_change
    - zebra_vxlan_process_l3vni_oper_up
    - zebra_evpn_mac_clear_fwd_info
    - CPP_NOTICE
    - zebra_vxlan_local_mac_add_update
    - zebra_evpn_map_vlan
    - rb_find_or_add_host
    - dplane_rem_mac_del
    - zebra_evpn_rem_neigh_install
    - zl3vni_print_nh_all_table
    - zl3vni_print_hash_detail
    - IS_ZL3VNI_SVD_BACKED
    - zebra_vxlan_readd_remote_rmac
    - zebra_vxlan_sg_do_ref
    - is_zero_mac
    - zebra_vxlan_if_vni_iterate
    - UNSET_FLAG
    - EVPN_ENABLED
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - zebra_vxlan_if_access_vlan_vni_find
    - listnode_delete
    - zebra_evpn_mh_init
    - zebra_route_string
    - zebra_evpn_advertise_subnet
    - ipv4_mapped_ipv6_to_ipv4
    - __attribute__
    - json_object_new_int
    - zevpn_build_hash_table_zns
    - svd_nh_lookup
    - zevpn_print_mac_hash_all_evpn_detail
    - zebra_evpn_mh_do_adv_svi_mac
    - CHECK_FLAG
    - zebra_vxlan_print_vni
    - stream_get_endp
    - svd_nh_install
    - zebra_evpn_del_local_mac
    - zebra_vxlan_sg_new
    - zebra_evpn_vtep_del
    - STREAM_GET
    linkageType: ''
    returnType: void
    signature: "void zl3vni_print_rmac(struct zebra_mac *zrmac, struct vty *vty,\n\t\t\t
      \     json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:579,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:583,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:584,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:585,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:587,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:588,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:589,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:591,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:592,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - bucket
    - ctx
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 596
    functionName: zl3vni_print_nh_hash
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - prefix_mac2str
    - json_object_string_add
    - json_object_object_add
    - ipaddr2str
    linkageType: ''
    returnType: void
    signature: void zl3vni_print_nh_hash(struct hash_bucket *bucket, void *ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:611,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:617,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:619,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:624,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:626,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:628,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:630,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:632,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:635,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:637,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - nh_table
    - vni
    - vty
    - json
    argTypes:
    - struct hash*
    - vni_t
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 638
    functionName: zl3vni_print_nh_all_table
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vty_out
    - snprintf
    - memset
    - json_object_int_add
    - json_object_object_add
    - hash_iterate
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void zl3vni_print_nh_all_table(struct hash *nh_table, vni_t vni,\n\t\t\t\t
      \     struct vty *vty, json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_print_nh_all_table
      Src: /src/frr/zebra/zebra_vxlan.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 653
    functionName: zl3vni_print_nh_hash_all_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zl3vni_print_nh_all_table
    linkageType: ''
    returnType: void
    signature: "void zl3vni_print_nh_hash_all_vni(struct hash_bucket *bucket,\n\t\t\t\t\t
      void **args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:671,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:676,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:677,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:681,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:682,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:684,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:690,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:693,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:695,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 696
    functionName: zl3vni_print_rmac_hash_all_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - snprintf
    - memset
    - json_object_int_add
    - json_object_object_add
    - hash_iterate
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void zl3vni_print_rmac_hash_all_vni(struct hash_bucket *bucket,\n\t\t\t\t\t
      \  void **args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:711,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:715,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:716,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:719,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:721,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_vxlan.c:722,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:724,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:725,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - bucket
    - ctx
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 728
    functionName: zl3vni_print_rmac_hash
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - prefix_mac2str
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: void zl3vni_print_rmac_hash(struct hash_bucket *bucket, void *ctx)
  - BBCount: 246
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:744,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:745,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:746,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:747,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:748,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:750,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:752,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:753,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:754,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:754,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:755,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:755,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:756,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:757,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:760,1
    - Dst: zl3vni_sysmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:761,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:762,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:763,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:764,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_vxlan.c:765,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:766,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:767,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vxlan.c:769,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:770,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:771,1
    - Dst: CPP_NOTICE
      Src: /src/frr/zebra/zebra_vxlan.c:773,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:775,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:775,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:776,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:777,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_vxlan.c:778,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:780,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:781,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:782,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:783,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:784,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:784,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:785,1
    - Dst: zl3vni_sysmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:787,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:788,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:790,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:791,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:793,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_vxlan.c:796,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:797,1
    - Dst: json_object_new_int
      Src: /src/frr/zebra/zebra_vxlan.c:798,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:800,1
    - Dst: zl3vni_print_hash
      Src: /src/frr/zebra/zebra_vxlan.c:805,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:818,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:819,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:820,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:821,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:822,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:826,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:827,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:828,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:829,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:830,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:831,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:832,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:833,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:834,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:835,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:836,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:837,1
    - Dst: zl3vni_vrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:838,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:839,1
    - Dst: zl3vni_print_hash_detail
      Src: /src/frr/zebra/zebra_vxlan.c:844,1
    - Dst: zebra_vxlan_print_vni
      Src: /src/frr/zebra/zebra_vxlan.c:858,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:862,1
    - Dst: zvni_map_to_svi_ns
      Src: /src/frr/zebra/zebra_vxlan.c:865,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:878,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:881,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:881,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:884,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:907,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:919,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:920,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:923,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:930,1
    - Dst: zebra_evpn_vxlan_del
      Src: /src/frr/zebra/zebra_vxlan.c:935,1
    - Dst: zevpn_vxlan_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:938,1
    - Dst: zevpn_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:939,1
    - Dst: zebra_vxlan_sg_deref
      Src: /src/frr/zebra/zebra_vxlan.c:942,1
    - Dst: zebra_evpn_del
      Src: /src/frr/zebra/zebra_vxlan.c:944,1
    - Dst: zevpn_build_vni_hash_table
      Src: /src/frr/zebra/zebra_vxlan.c:947,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:962,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:966,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:970,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_vxlan.c:983,1
    - Dst: zl3vni_map_to_mac_vlan_if
      Src: /src/frr/zebra/zebra_vxlan.c:986,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:989,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:995,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:996,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1002,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1010,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1012,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:1020,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1021,1
    - Dst: zebra_evpn_send_mac_list_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1024,1
    - Dst: zebra_evpn_send_neigh_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1027,1
    - Dst: zebra_evpn_add
      Src: /src/frr/zebra/zebra_vxlan.c:1029,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1031,1
    - Dst: zebra_vxlan_sg_deref
      Src: /src/frr/zebra/zebra_vxlan.c:1040,1
    - Dst: zebra_vxlan_sg_ref
      Src: /src/frr/zebra/zebra_vxlan.c:1042,1
    - Dst: zebra_evpn_es_set_base_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:1049,1
    - Dst: zevpn_vxlan_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:1051,1
    - Dst: zevpn_bridge_if_set
      Src: /src/frr/zebra/zebra_vxlan.c:1053,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:1054,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:1059,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_vxlan.c:1061,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:1069,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:1070,1
    - Dst: zevpn_build_hash_table_zns
      Src: /src/frr/zebra/zebra_vxlan.c:1077,1
    - Dst: __attribute__
      Src: /src/frr/zebra/zebra_vxlan.c:1078,1
    - Dst: __attribute__
      Src: /src/frr/zebra/zebra_vxlan.c:1079,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:1086,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:1089,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:1089,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1104,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1112,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_vxlan.c:1113,1
    - Dst: zebra_vxlan_if_vni_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:1116,1
    - Dst: zevpn_build_hash_table
      Src: /src/frr/zebra/zebra_vxlan.c:1127,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:1129,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:1143,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1145,1
    - Dst: zebra_evpn_cleanup_all
      Src: /src/frr/zebra/zebra_vxlan.c:1147,1
    - Dst: zl3vni_cleanup_all
      Src: /src/frr/zebra/zebra_vxlan.c:1151,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:1157,1
    - Dst: rb_find_or_add_host
      Src: /src/frr/zebra/zebra_vxlan.c:1160,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1166,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1167,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_vxlan.c:1169,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1173,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1174,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_vxlan.c:1176,1
    - Dst: rb_delete_host
      Src: /src/frr/zebra/zebra_vxlan.c:1179,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1184,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1185,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_vxlan.c:1187,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_vxlan.c:1189,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1190,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1199,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1205,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1206,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1207,1
    - Dst: zl3vni_rmac_alloc
      Src: /src/frr/zebra/zebra_vxlan.c:1215,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1220,1
    - Dst: zl3vni_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:1229,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1235,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1236,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1237,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_vxlan.c:1238,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1242,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1243,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1251,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1256,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1258,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1259,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1277,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1288,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:1292,1
    - Dst: dplane_rem_mac_add
      Src: /src/frr/zebra/zebra_vxlan.c:1297,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1318,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1319,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1324,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1338,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:1341,1
    - Dst: dplane_rem_mac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1346,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1362,1
    - Dst: zl3vni_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1368,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1373,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1376,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1377,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:1378,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1379,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:1382,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1386,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_vxlan.c:1387,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1390,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1397,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1398,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:1399,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1400,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1403,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1417,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1418,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/zebra_vxlan.c:1421,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1424,1
    - Dst: l3vni_rmac_nh_list_nh_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1428,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_vxlan.c:1432,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:1434,1
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_vxlan.c:1437,1
    - Dst: listhead
      Src: /src/frr/zebra/zebra_vxlan.c:1437,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1440,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1447,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:1450,1
    - Dst: zl3vni_rmac_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1452,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:1455,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1459,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1464,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1478,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1479,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1482,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1484,1
    - Dst: _nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1495,1
    - Dst: _nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1503,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1514,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1530,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1531,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1534,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1536,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:1538,1
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_vxlan.c:1540,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1542,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1543,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1544,1
    - Dst: _nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1556,1
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/zebra_vxlan.c:1567,1
    - Dst: RB_ROOT
      Src: /src/frr/zebra/zebra_vxlan.c:1568,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_vxlan.c:1570,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1571,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1574,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1575,1
    - Dst: _nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1586,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1597,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1598,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:1612,1
    - Dst: dplane_rem_neigh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1623,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:1638,1
    - Dst: dplane_rem_neigh_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1641,1
    - Dst: _nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1651,1
    - Dst: _nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1660,1
    - Dst: _nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1668,1
    - Dst: _nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1676,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1688,1
    - Dst: zl3vni_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1690,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1692,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1699,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:1700,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1702,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1707,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1709,1
    - Dst: rb_find_or_add_host
      Src: /src/frr/zebra/zebra_vxlan.c:1712,1
    - Dst: rb_delete_host
      Src: /src/frr/zebra/zebra_vxlan.c:1722,1
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/zebra_vxlan.c:1724,1
    - Dst: zl3vni_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1726,1
    - Dst: zl3vni_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:1729,1
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:1742,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1746,1
    - Dst: svd_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1748,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1750,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:1756,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1758,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1762,1
    - Dst: svd_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1773,1
    - Dst: svd_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1781,1
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:1793,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1796,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1798,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1806,1
    - Dst: svd_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1811,1
    - Dst: svd_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:1812,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1827,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1835,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1845,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1853,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_vxlan.c:1865,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1887,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1900,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1902,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1915,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1918,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_vxlan.c:1923,1
    - Dst: zebra_mac_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:1927,1
    - Dst: zebra_neigh_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:1930,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1943,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:1947,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:1951,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1955,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1956,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:1971,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:1973,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:1976,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:1976,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1991,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1998,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:2021,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2041,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2045,1
    - Dst: zebra_evpn_map_to_macvlan
      Src: /src/frr/zebra/zebra_vxlan.c:2062,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:2071,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2075,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2091,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2094,1
    - Dst: zebra_l2_bridge_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2097,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:2102,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:2102,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2109,1
    - Dst: zebra_vxlan_if_access_vlan_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2115,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2127,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_vxlan.c:2147,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2153,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:2154,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_vxlan.c:2158,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2162,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:2172,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2185,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2189,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:2203,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2206,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2207,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:2221,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:2226,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2227,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2230,1
    - Dst: zl3vni_get_svi_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2231,1
    - Dst: zl3vni_get_vrr_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2232,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_vxlan.c:2235,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2236,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:2240,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:2245,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2245,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2246,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2247,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_vxlan.c:2248,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2249,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2250,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2251,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2252,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:2255,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:2255,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2258,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:2260,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2260,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:2262,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:2265,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:2268,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:2279,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:2284,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:2286,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2286,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2287,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:2290,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:2290,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2293,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:2294,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2294,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:2295,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:2298,1
    - Dst: zl3vni_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2307,1
    - Dst: zl3vni_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2316,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2324,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_vxlan.c:2325,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2350,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2355,1
    - Dst: zebra_evpn_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2358,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2360,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2361,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2364,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2366,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan.c:2368,1
    - Dst: zebra_evpn_vxlan_del
      Src: /src/frr/zebra/zebra_vxlan.c:2371,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:2372,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2388,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2392,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:2393,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:2393,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2402,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_vxlan.c:2411,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2418,1
    - Dst: zebra_evpn_add
      Src: /src/frr/zebra/zebra_vxlan.c:2422,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2425,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2429,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:2431,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2438,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2439,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_vxlan.c:2440,1
    - Dst: zl3vni_rmac_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:2455,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:2458,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:2460,1
    - Dst: zl3vni_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:2471,1
    - Dst: zl3vni_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2472,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2481,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2486,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:2489,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2499,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:2503,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2514,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:2515,1
    - Dst: zl3vni_remote_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:2522,1
    - Dst: svd_remote_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:2525,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2532,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/zebra_vxlan.c:2535,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2538,1
    - Dst: zl3vni_remote_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:2545,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2557,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2562,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2565,1
    - Dst: zl3vni_remote_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2568,1
    - Dst: svd_remote_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2571,1
    - Dst: zl3vni_remote_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:2575,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2586,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2588,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2589,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2593,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2596,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2598,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2602,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2605,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2607,1
    - Dst: zl3vni_print_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2613,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2616,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2627,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2629,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2630,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2634,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2637,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2639,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2642,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2646,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2650,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2652,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2654,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2656,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2659,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2668,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2670,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2671,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2677,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2683,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2694,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2696,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2697,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2703,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2705,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2708,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2710,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2715,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2720,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2722,1
    - Dst: zl3vni_print_nh
      Src: /src/frr/zebra/zebra_vxlan.c:2728,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2731,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2741,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2751,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2753,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2755,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2757,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2760,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2767,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2769,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2773,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2776,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2778,1
    - Dst: l3vni_print_nh_table
      Src: /src/frr/zebra/zebra_vxlan.c:2782,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2787,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2789,1
    - Dst: l3vni_print_nh_table
      Src: /src/frr/zebra/zebra_vxlan.c:2793,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2802,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2804,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2805,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2811,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2817,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2830,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2832,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2833,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2837,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2840,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2842,1
    - Dst: zl3vni_print
      Src: /src/frr/zebra/zebra_vxlan.c:2848,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2851,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2860,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2865,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:2866,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2867,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2868,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:2868,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:2869,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2873,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2874,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:2874,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2875,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2876,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2877,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2878,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2879,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2880,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:2881,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2882,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:2884,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:2885,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2901,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2903,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2904,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2908,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2911,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2913,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2916,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2924,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2929,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2933,1
    - Dst: zebra_evpn_print_neigh_hdr
      Src: /src/frr/zebra/zebra_vxlan.c:2936,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2938,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2940,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2942,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2955,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2957,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2958,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2966,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2971,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2985,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2987,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2988,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2996,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3001,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3016,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3018,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3019,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3023,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3026,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3028,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3031,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3034,1
    - Dst: zebra_evpn_print_neigh
      Src: /src/frr/zebra/zebra_vxlan.c:3040,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3043,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3060,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3062,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3063,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3067,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3070,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3072,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3075,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3079,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3086,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3088,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3091,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3109,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3111,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3112,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3116,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3119,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3121,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3125,1
    - Dst: num_dup_detected_neighs
      Src: /src/frr/zebra/zebra_vxlan.c:3129,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3137,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3142,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3146,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3149,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3153,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3155,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3159,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3174,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3176,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3180,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3183,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3185,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3188,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3193,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3194,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3197,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3204,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3207,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3210,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3212,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3217,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3220,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3223,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3227,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3228,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3242,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3244,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3245,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3249,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3253,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3256,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3270,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3272,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3273,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3277,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3281,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3285,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3299,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3301,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3302,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3311,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3314,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3329,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3331,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3332,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3336,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3339,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3341,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3344,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3347,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3349,1
    - Dst: zebra_evpn_print_mac
      Src: /src/frr/zebra/zebra_vxlan.c:3355,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3358,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3372,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3375,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3377,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3381,1
    - Dst: num_dup_detected_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3385,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3390,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3391,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3394,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3400,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3403,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3406,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3408,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3411,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3412,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3426,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3429,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3431,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3435,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:3437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3442,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3443,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_vxlan.c:3449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3459,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_vxlan.c:3460,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3461,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_vxlan.c:3462,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3466,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3472,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3477,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3484,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3486,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_vxlan.c:3492,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3495,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_vxlan.c:3496,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_vxlan.c:3499,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3515,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3518,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3520,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3524,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3526,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:3531,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3533,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3534,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3540,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3542,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3543,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:3546,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:3551,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3554,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3561,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3565,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_vxlan.c:3566,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3586,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3589,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3594,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_vxlan.c:3597,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3598,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_vxlan.c:3600,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3609,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3611,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3620,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_vxlan.c:3621,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_vxlan.c:3624,1
    CyclomaticComplexity: 288
    EdgeCount: 288
    ICount: 1130
    argCount: 2
    argNames:
    - zl3vni
    - ctx
    argTypes:
    - struct zebra_l3vni*
    - void**
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 2226
        line_start: 2226
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 2161
        line_start: 2161
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (in_param && p_ifp)
      pos:
        line_end: 877
        line_start: 877
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (in_param && p_zl3vni)
      pos:
        line_end: 2090
        line_start: 2090
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (n)
      pos:
        line_end: 1537
        line_start: 1537
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 918
        line_start: 918
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (br_zif)
      pos:
        line_end: 2093
        line_start: 2093
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 2152
        line_start: 2152
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (_pifp)
      pos:
        line_end: 1972
        line_start: 1972
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 3626
      start: 731
    functionDepth: 8
    functionLinenumber: 731
    functionLinenumberEnd: 3626
    functionName: zl3vni_print
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_send_del_to_client
    - zebra_evpn_rem_mac_install
    - zebra_evpn_from_svi
    - route_top
    - listhead
    - hash_lookup
    - IPV4_ADDR_SAME
    - flog_err
    - _nh_uninstall
    - RB_EMPTY
    - zl3vni_lookup
    - num_dup_detected_macs
    - _nh_lookup
    - zvni_map_to_svi_ns
    - zebra_evpn_add
    - snprintf
    - memset
    - XCALLOC
    - zl3vni_print_nh
    - zebra_evpn_process_neigh_on_remote_mac_add
    - RB_INSERT
    - zl3vni_rmac_del
    - zl3vni_get_vrr_rmac
    - zebra_evpn_vtep_del_all
    - rb_delete_host
    - listgetdata
    - stream_put_in_addr
    - zevpn_build_vni_hash_table
    - zebra_vxlan_sg_ref
    - svd_remote_nh_add
    - zebra_evpn_lookup
    - zevpn_bridge_if_set
    - ns_walk_func
    - zebra_evpn_del
    - listcount
    - zl3vni_svi_if_name
    - zl3vni_remote_rmac_del
    - zebra_evpn_print_neigh
    - IS_ZEBRA_VXLAN_IF_VNI
    - EVENT_OFF
    - zvni_map_to_svi
    - zebra_vxlan_sg_deref
    - memcpy
    - zebra_evpn_mac_del_all
    - json_object_new_object
    - num_dup_detected_neighs
    - dplane_rem_neigh_add
    - zl3vni_get_svi_rmac
    - zebra_evpn_map_to_macvlan
    - zebra_evpn_neigh_lookup
    - snprintfrr
    - zl3vni_nh_install
    - list_new
    - ALL_LIST_ELEMENTS
    - zl3vni_state2str
    - RB_FIND
    - zebra_mac_db_create
    - zl3vni_map_to_mac_vlan_if
    - zebra_evpn_mac_lookup
    - zl3vni_nh_uninstall
    - zl3vni_sysmac2str
    - _nh_add
    - zebra_evpn_send_add_to_client
    - jhash_1word
    - l3vni_print_nh_table
    - zebra_evpn_vxlan_del
    - zl3vni_nh_add
    - zl3vni_rmac_lookup
    - zl3vni_rmac_uninstall
    - zebra_evpn_neigh_send_add_to_client
    - stream_putw_at
    - zl3vni_remote_nh_add
    - zl3vni_vrf_id
    - zl3vni_vrf_name
    - zebra_ns_lookup
    - zevpn_vxlan_if_set
    - zebra_evpn_neigh_del_all
    - IS_ZEBRA_IF_VLAN
    - listnode_add_sort
    - num_valid_macs
    - svd_remote_nh_del
    - IS_ZEBRA_IF_BRIDGE
    - zl3vni_print
    - zl3vni_vxlan_if_name
    - zl3vni_rmac_alloc
    - json_object_new_array
    - dplane_rem_mac_add
    - svd_nh_add
    - zclient_create_header
    - zl3vni_rmac2str
    - zebra_evpn_cleanup_all
    - RB_REMOVE
    - zl3vni_print_rmac
    - prefix_mac2str
    - zl3vni_print_hash
    - zl3vni_send_add_to_client
    - _nh_install
    - zl3vni_rmac_install
    - json_object_object_add
    - zebra_vxlan_if_vni_find
    - is_evpn_enabled
    - ipaddr2str
    - if_is_operative
    - zebra_l2_bridge_if_vni_find
    - vty_json
    - stream_putl
    - zebra_evpn_print_neigh_hdr
    - stream_put
    - memcmp
    - zebra_evpn_print_mac
    - json_object_string_add
    - zevpn_build_hash_table
    - zl3vni_from_svi
    - svd_nh_uninstall
    - zserv_find_client
    - is_l3vni_oper_up
    - zl3vni_from_vrf
    - hash_free
    - svd_nh_del
    - zl3vni_cleanup_all
    - zlog_debug
    - zebra_evpn_send_neigh_to_client
    - RB_ROOT
    - assert
    - listnode_add_sort_nodup
    - zebra_neigh_db_create
    - vty_out
    - zvrf_name
    - zlog_err
    - json_object_int_add
    - route_next
    - zl3vni_remote_rmac_add
    - zl3vni_map_to_svi_if
    - XFREE
    - hash_release
    - zebra_evpn_read_mac_neigh
    - stream_new
    - json_object_array_add
    - vrf_id_to_name
    - dplane_rem_neigh_delete
    - zl3vni_send_del_to_client
    - SET_FLAG
    - ZEBRA_NEIGH_SET_INACTIVE
    - hashcount
    - zebra_evpn_mac_send_add_to_client
    - zl3vni_nh_lookup
    - list_delete
    - zebra_vxlan_process_l3vni_oper_down
    - l3vni_rmac_nh_list_nh_delete
    - zebra_vrf_get_evpn
    - zserv_send_message
    - zebra_evpn_send_mac_list_to_client
    - json_object_string_addf
    - zebra_evpn_es_set_base_evpn
    - zl3vni_nh_del
    - hook_call
    - ALL_LIST_ELEMENTS_RO
    - RB_INIT
    - zl3vni_rmac_add
    - zl3vni_remote_nh_del
    - zebra_vrf_lookup_by_id
    - hash_iterate
    - hash_get
    - zebra_evpn_process_neigh_on_local_mac_change
    - zebra_vxlan_process_l3vni_oper_up
    - CPP_NOTICE
    - rb_find_or_add_host
    - dplane_rem_mac_del
    - zebra_evpn_rem_neigh_install
    - zl3vni_print_hash_detail
    - IS_ZL3VNI_SVD_BACKED
    - is_zero_mac
    - zebra_vxlan_if_vni_iterate
    - UNSET_FLAG
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - zebra_vxlan_if_access_vlan_vni_find
    - listnode_delete
    - zebra_route_string
    - ipv4_mapped_ipv6_to_ipv4
    - __attribute__
    - json_object_new_int
    - zevpn_build_hash_table_zns
    - svd_nh_lookup
    - CHECK_FLAG
    - zebra_vxlan_print_vni
    - stream_get_endp
    - svd_nh_install
    linkageType: ''
    returnType: void
    signature: void zl3vni_print(struct zebra_l3vni *zl3vni, void **ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1318,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1319,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1324,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1338,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:1341,1
    - Dst: dplane_rem_mac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1346,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - zl3vni
    - zrmac
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1309
    functionDepth: 2
    functionLinenumber: 1309
    functionLinenumberEnd: 1352
    functionName: zl3vni_rmac_uninstall
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - dplane_rem_mac_del
    - CHECK_FLAG
    - zlog_debug
    - zebra_vxlan_if_vni_find
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    linkageType: ''
    returnType: int
    signature: "int zl3vni_rmac_uninstall(struct zebra_l3vni *zl3vni,\n\t\t\t\t struct
      zebra_mac *zrmac)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1362,1
    - Dst: zl3vni_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1368,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1373,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1376,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1377,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:1378,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1379,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:1382,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1386,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_vxlan.c:1387,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1390,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1397,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1398,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:1399,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1400,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1403,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - zl3vni
    - rmac
    - vtep_ip
    argTypes:
    - struct zebra_l3vni*
    - struct ethaddr*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1355
    functionDepth: 1
    functionLinenumber: 1355
    functionLinenumberEnd: 1407
    functionName: zl3vni_remote_rmac_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zl3vni_rmac_lookup
    - memset
    - XCALLOC
    - hook_call
    - zl3vni_rmac_add
    - listnode_add_sort_nodup
    - IPV4_ADDR_SAME
    - zlog_debug
    - zl3vni_rmac_install
    - XFREE
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int zl3vni_remote_rmac_add(struct zebra_l3vni *zl3vni,\n\t\t\t\t  const
      struct ethaddr *rmac,\n\t\t\t\t  const struct ipaddr *vtep_ip)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1417,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1418,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/zebra_vxlan.c:1421,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1424,1
    - Dst: l3vni_rmac_nh_list_nh_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1428,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_vxlan.c:1432,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:1434,1
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_vxlan.c:1437,1
    - Dst: listhead
      Src: /src/frr/zebra/zebra_vxlan.c:1437,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1440,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:1447,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:1450,1
    - Dst: zl3vni_rmac_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1452,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:1455,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1459,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:1464,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - zl3vni
    - zrmac
    - vtep_ip
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_mac*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1411
    functionDepth: 3
    functionLinenumber: 1411
    functionLinenumberEnd: 1467
    functionName: zl3vni_remote_rmac_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zl3vni_nh_lookup
    - memset
    - zl3vni_rmac_uninstall
    - hook_call
    - listcount
    - l3vni_rmac_nh_list_nh_delete
    - listhead
    - zl3vni_rmac_del
    - IPV4_ADDR_SAME
    - zlog_debug
    - zl3vni_rmac_install
    - listgetdata
    - ipv4_mapped_ipv6_to_ipv4
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void zl3vni_remote_rmac_del(struct zebra_l3vni *zl3vni,\n\t\t\t\t
      \  struct zebra_mac *zrmac,\n\t\t\t\t   struct ipaddr *vtep_ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1478,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1479,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1482,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - zl3vni
    - ip
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1472
    functionDepth: 1
    functionLinenumber: 1472
    functionLinenumberEnd: 1487
    functionName: _nh_lookup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 3
    functionsReached:
    - memcpy
    - hash_lookup
    - memset
    linkageType: ''
    returnType: struct zebra_neigh
    signature: "struct zebra_neigh *_nh_lookup(struct zebra_l3vni *zl3vni,\n\t\t\t\t
      \     const struct ipaddr *ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zl3vni
    - ip
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1492
    functionDepth: 2
    functionLinenumber: 1492
    functionLinenumberEnd: 1496
    functionName: zl3vni_nh_lookup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 3
    functionsReached:
    - _nh_lookup
    linkageType: ''
    returnType: struct zebra_neigh
    signature: "struct zebra_neigh *zl3vni_nh_lookup(struct zebra_l3vni *zl3vni,\n\t\t\t\t\t
      \   const struct ipaddr *ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1501
    functionDepth: 2
    functionLinenumber: 1501
    functionLinenumberEnd: 1504
    functionName: svd_nh_lookup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - _nh_lookup
    linkageType: ''
    returnType: struct zebra_neigh
    signature: struct zebra_neigh *svd_nh_lookup(const struct ipaddr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1509
    functionDepth: 0
    functionLinenumber: 1509
    functionLinenumberEnd: 1518
    functionName: zl3vni_nh_alloc
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *zl3vni_nh_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1530,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1531,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1534,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1536,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:1538,1
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_vxlan.c:1540,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1542,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1543,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:1544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - zl3vni
    - ip
    - mac
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    - struct ethaddr*
    assertStmts:
    - condition: (n)
      pos:
        line_end: 1537
        line_start: 1537
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 1547
      start: 1523
    functionDepth: 1
    functionLinenumber: 1523
    functionLinenumberEnd: 1547
    functionName: _nh_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - memset
    - RB_INIT
    - SET_FLAG
    - memcpy
    - hash_get
    - assert
    linkageType: ''
    returnType: struct zebra_neigh
    signature: "struct zebra_neigh *_nh_add(struct zebra_l3vni *zl3vni,\n\t\t\t\t
      \  const struct ipaddr *ip,\n\t\t\t\t   const struct ethaddr *mac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - zl3vni
    - ip
    - mac
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1552
    functionDepth: 2
    functionLinenumber: 1552
    functionLinenumberEnd: 1557
    functionName: zl3vni_nh_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - _nh_add
    linkageType: ''
    returnType: struct zebra_neigh
    signature: "struct zebra_neigh *zl3vni_nh_add(struct zebra_l3vni *zl3vni,\n\t\t\t\t\t
      const struct ipaddr *ip,\n\t\t\t\t\t const struct ethaddr *mac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/zebra_vxlan.c:1567,1
    - Dst: RB_ROOT
      Src: /src/frr/zebra/zebra_vxlan.c:1568,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_vxlan.c:1570,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1571,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1574,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - zl3vni
    - n
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 1562
    functionDepth: 1
    functionLinenumber: 1562
    functionLinenumberEnd: 1578
    functionName: zl3vni_nh_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - RB_REMOVE
    - XFREE
    - hash_release
    - RB_ROOT
    - RB_EMPTY
    linkageType: ''
    returnType: int
    signature: int zl3vni_nh_del(struct zebra_l3vni *zl3vni, struct zebra_neigh *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ip
    - mac
    argTypes:
    - struct ipaddr*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1583
    functionDepth: 2
    functionLinenumber: 1583
    functionLinenumberEnd: 1587
    functionName: svd_nh_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - _nh_add
    linkageType: ''
    returnType: struct zebra_neigh
    signature: "struct zebra_neigh *svd_nh_add(const struct ipaddr *ip,\n\t\t\t\t
      \     const struct ethaddr *mac)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1597,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1592
    functionDepth: 1
    functionLinenumber: 1592
    functionLinenumberEnd: 1601
    functionName: svd_nh_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - hash_release
    - XFREE
    linkageType: ''
    returnType: int
    signature: int svd_nh_del(struct zebra_neigh *n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:1612,1
    - Dst: dplane_rem_neigh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - zl3vni
    - ifp
    - n
    argTypes:
    - struct zebra_l3vni*
    - struct interface*
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1606
    functionDepth: 1
    functionLinenumber: 1606
    functionLinenumberEnd: 1627
    functionName: _nh_install
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - dplane_rem_neigh_add
    - is_l3vni_oper_up
    linkageType: ''
    returnType: int
    signature: "int _nh_install(struct zebra_l3vni *zl3vni, struct interface *ifp,\n\t\t
      \      struct zebra_neigh *n)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:1638,1
    - Dst: dplane_rem_neigh_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1641,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ifp
    - n
    argTypes:
    - struct interface*
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1632
    functionDepth: 1
    functionLinenumber: 1632
    functionLinenumberEnd: 1644
    functionName: _nh_uninstall
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - if_is_operative
    - dplane_rem_neigh_delete
    linkageType: ''
    returnType: int
    signature: int _nh_uninstall(struct interface *ifp, struct zebra_neigh *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zl3vni
    - n
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1649
    functionDepth: 2
    functionLinenumber: 1649
    functionLinenumberEnd: 1652
    functionName: zl3vni_nh_install
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - _nh_install
    linkageType: ''
    returnType: int
    signature: int zl3vni_nh_install(struct zebra_l3vni *zl3vni, struct zebra_neigh
      *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zl3vni
    - n
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1657
    functionDepth: 2
    functionLinenumber: 1657
    functionLinenumberEnd: 1661
    functionName: zl3vni_nh_uninstall
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - _nh_uninstall
    linkageType: ''
    returnType: int
    signature: "int zl3vni_nh_uninstall(struct zebra_l3vni *zl3vni,\n\t\t\t       struct
      zebra_neigh *n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zl3vni
    - n
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1669
      start: 1666
    functionDepth: 2
    functionLinenumber: 1666
    functionLinenumberEnd: 1669
    functionName: svd_nh_install
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - _nh_install
    linkageType: ''
    returnType: int
    signature: int svd_nh_install(struct zebra_l3vni *zl3vni, struct zebra_neigh *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - zl3vni
    - n
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_neigh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1674
    functionDepth: 2
    functionLinenumber: 1674
    functionLinenumberEnd: 1677
    functionName: svd_nh_uninstall
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - _nh_uninstall
    linkageType: ''
    returnType: int
    signature: int svd_nh_uninstall(struct zebra_l3vni *zl3vni, struct zebra_neigh
      *n)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1688,1
    - Dst: zl3vni_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1690,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1692,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1699,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:1700,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1702,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1707,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1709,1
    - Dst: rb_find_or_add_host
      Src: /src/frr/zebra/zebra_vxlan.c:1712,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - zl3vni
    - vtep_ip
    - rmac
    - host_prefix
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    - struct ethaddr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1680
    functionDepth: 3
    functionLinenumber: 1680
    functionLinenumberEnd: 1715
    functionName: zl3vni_remote_nh_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zl3vni_nh_lookup
    - rb_find_or_add_host
    - memcmp
    - zlog_debug
    - zl3vni_nh_install
    - zl3vni_nh_add
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int zl3vni_remote_nh_add(struct zebra_l3vni *zl3vni,\n\t\t\t\tconst
      struct ipaddr *vtep_ip,\n\t\t\t\tconst struct ethaddr *rmac,\n\t\t\t\tconst
      struct prefix *host_prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rb_delete_host
      Src: /src/frr/zebra/zebra_vxlan.c:1722,1
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/zebra_vxlan.c:1724,1
    - Dst: zl3vni_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1726,1
    - Dst: zl3vni_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:1729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - zl3vni
    - nh
    - host_prefix
    argTypes:
    - struct zebra_l3vni*
    - struct zebra_neigh*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1718
    functionDepth: 3
    functionLinenumber: 1718
    functionLinenumberEnd: 1731
    functionName: zl3vni_remote_nh_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - RB_EMPTY
    - rb_delete_host
    - zl3vni_nh_del
    - zl3vni_nh_uninstall
    linkageType: ''
    returnType: void
    signature: "void zl3vni_remote_nh_del(struct zebra_l3vni *zl3vni,\n\t\t\t\t struct
      zebra_neigh *nh,\n\t\t\t\t struct prefix *host_prefix)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:1742,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1746,1
    - Dst: svd_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:1748,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1750,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:1756,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1758,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:1762,1
    - Dst: svd_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1773,1
    - Dst: svd_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1781,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - zl3vni
    - vtep_ip
    - rmac
    - host_prefix
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    - struct ethaddr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1734
    functionDepth: 3
    functionLinenumber: 1734
    functionLinenumberEnd: 1784
    functionName: svd_remote_nh_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - svd_nh_add
    - svd_nh_lookup
    - IS_ZL3VNI_SVD_BACKED
    - memcmp
    - svd_nh_install
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int svd_remote_nh_add(struct zebra_l3vni *zl3vni,\n\t\t\t     const
      struct ipaddr *vtep_ip,\n\t\t\t     const struct ethaddr *rmac,\n\t\t\t     const
      struct prefix *host_prefix)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:1793,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1796,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1798,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1806,1
    - Dst: svd_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:1811,1
    - Dst: svd_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:1812,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - zl3vni
    - vtep_ip
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1787
    functionDepth: 3
    functionLinenumber: 1787
    functionLinenumberEnd: 1816
    functionName: svd_remote_nh_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - svd_nh_lookup
    - IS_ZL3VNI_SVD_BACKED
    - svd_nh_del
    - zlog_debug
    - svd_nh_uninstall
    linkageType: ''
    returnType: int
    signature: "int svd_remote_nh_del(struct zebra_l3vni *zl3vni,\n\t\t\t     const
      struct ipaddr *vtep_ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1827,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1835,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - zl3vni
    - ip
    - state
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1821
    functionDepth: 3
    functionLinenumber: 1821
    functionLinenumberEnd: 1838
    functionName: zl3vni_local_nh_add_update
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zl3vni_nh_lookup
    - zl3vni_nh_install
    linkageType: ''
    returnType: int
    signature: "int zl3vni_local_nh_add_update(struct zebra_l3vni *zl3vni,\n\t\t\t\t
      \     struct ipaddr *ip, uint16_t state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1845,1
    - Dst: zl3vni_nh_install
      Src: /src/frr/zebra/zebra_vxlan.c:1853,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - zl3vni
    - ip
    argTypes:
    - struct zebra_l3vni*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1841
    functionDepth: 3
    functionLinenumber: 1841
    functionLinenumberEnd: 1856
    functionName: zl3vni_local_nh_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zl3vni_nh_lookup
    - zl3vni_nh_install
    linkageType: ''
    returnType: int
    signature: int zl3vni_local_nh_del(struct zebra_l3vni *zl3vni, struct ipaddr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_vxlan.c:1865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1861
    functionDepth: 1
    functionLinenumber: 1861
    functionLinenumberEnd: 1866
    functionName: l3vni_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int l3vni_hash_keymake(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1871
    functionDepth: 0
    functionLinenumber: 1871
    functionLinenumberEnd: 1877
    functionName: l3vni_hash_cmp
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool l3vni_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:1887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1882
    functionDepth: 0
    functionLinenumber: 1882
    functionLinenumberEnd: 1890
    functionName: zl3vni_alloc
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *zl3vni_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1900,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:1902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vni
    argTypes:
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1895
    functionDepth: 1
    functionLinenumber: 1895
    functionLinenumberEnd: 1905
    functionName: zl3vni_lookup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 9
    functionsReached:
    - hash_lookup
    - memset
    linkageType: ''
    returnType: struct zebra_l3vni
    signature: struct zebra_l3vni *zl3vni_lookup(vni_t vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:1915,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:1918,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_vxlan.c:1923,1
    - Dst: zebra_mac_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:1927,1
    - Dst: zebra_neigh_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:1930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - vni
    - vrf_id
    argTypes:
    - vni_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1910
    functionDepth: 1
    functionLinenumber: 1910
    functionLinenumberEnd: 1933
    functionName: zl3vni_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_neigh_db_create
    - memset
    - zebra_mac_db_create
    - list_new
    - hash_get
    linkageType: ''
    returnType: struct zebra_l3vni
    signature: struct zebra_l3vni *zl3vni_add(vni_t vni, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_vxlan.c:1943,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:1947,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:1951,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:1955,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:1956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1938
    functionDepth: 1
    functionLinenumber: 1938
    functionLinenumberEnd: 1959
    functionName: zl3vni_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_release
    - hash_free
    - list_delete
    - XFREE
    linkageType: ''
    returnType: int
    signature: int zl3vni_del(struct zebra_l3vni *zl3vni)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:1971,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:1973,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:1976,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:1976,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:1991,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:1998,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 3
    argNames:
    - ns
    - _zl3vni
    - _pifp
    argTypes:
    - struct ns*
    - void*
    - void**
    assertStmts:
    - condition: (_pifp)
      pos:
        line_end: 1972
        line_start: 1972
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 2012
      start: 1961
    functionDepth: 2
    functionLinenumber: 1961
    functionLinenumberEnd: 2012
    functionName: zl3vni_map_to_vxlan_if_ns
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - route_top
    - zebra_vrf_get_evpn
    - route_next
    - zlog_debug
    - zebra_vxlan_if_vni_find
    - assert
    linkageType: ''
    returnType: int
    signature: "int zl3vni_map_to_vxlan_if_ns(struct ns *ns,\n\t\t\t\t     void *_zl3vni,\n\t\t\t\t
      \    void **_pifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:2021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2014
    functionDepth: 0
    functionLinenumber: 2014
    functionLinenumberEnd: 2024
    functionName: zl3vni_map_to_vxlan_if
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - ns_walk_func
    linkageType: ''
    returnType: struct interface
    signature: struct interface *zl3vni_map_to_vxlan_if(struct zebra_l3vni *zl3vni)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2041,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2045,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2026
    functionDepth: 2
    functionLinenumber: 2026
    functionLinenumberEnd: 2046
    functionName: zl3vni_map_to_svi_if
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 6
    functionsReached:
    - zebra_vxlan_if_vni_find
    - zvni_map_to_svi
    linkageType: ''
    returnType: struct interface
    signature: struct interface *zl3vni_map_to_svi_if(struct zebra_l3vni *zl3vni)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_map_to_macvlan
      Src: /src/frr/zebra/zebra_vxlan.c:2062,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2048
    functionDepth: 0
    functionLinenumber: 2048
    functionLinenumberEnd: 2064
    functionName: zl3vni_map_to_mac_vlan_if
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 5
    functionsReached:
    - zebra_evpn_map_to_macvlan
    linkageType: ''
    returnType: struct interface
    signature: struct interface *zl3vni_map_to_mac_vlan_if(struct zebra_l3vni *zl3vni)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:2071,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2075,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 2067
    functionDepth: 2
    functionLinenumber: 2067
    functionLinenumberEnd: 2076
    functionName: zl3vni_from_vrf
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 6
    functionsReached:
    - zebra_vrf_lookup_by_id
    - zl3vni_lookup
    linkageType: ''
    returnType: struct zebra_l3vni
    signature: struct zebra_l3vni *zl3vni_from_vrf(vrf_id_t vrf_id)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2091,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2094,1
    - Dst: zebra_l2_bridge_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2097,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:2102,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:2102,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2109,1
    - Dst: zebra_vxlan_if_access_vlan_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2115,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2127,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 31
    argCount: 3
    argNames:
    - ns
    - _in_param
    - _p_zl3vni
    argTypes:
    - struct ns*
    - void*
    - void**
    assertStmts:
    - condition: (in_param && p_zl3vni)
      pos:
        line_end: 2090
        line_start: 2090
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (br_zif)
      pos:
        line_end: 2093
        line_start: 2093
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 2129
      start: 2078
    functionDepth: 3
    functionLinenumber: 2078
    functionLinenumberEnd: 2129
    functionName: zl3vni_from_svi_ns
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zl3vni_lookup
    - route_top
    - zebra_l2_bridge_if_vni_find
    - route_next
    - zebra_vxlan_if_access_vlan_vni_find
    - if_is_operative
    - assert
    linkageType: ''
    returnType: int
    signature: int zl3vni_from_svi_ns(struct ns *ns, void *_in_param, void **_p_zl3vni)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_vxlan.c:2147,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2153,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_vxlan.c:2154,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_vxlan.c:2158,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2162,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:2172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ifp
    - br_if
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 2161
        line_start: 2161
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (zif)
      pos:
        line_end: 2152
        line_start: 2152
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 2174
      start: 2135
    functionDepth: 1
    functionLinenumber: 2135
    functionLinenumberEnd: 2174
    functionName: zl3vni_from_svi
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - IS_ZEBRA_IF_VLAN
    - ns_walk_func
    - IS_ZEBRA_IF_BRIDGE
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - assert
    linkageType: ''
    returnType: struct zebra_l3vni
    signature: "struct zebra_l3vni *zl3vni_from_svi(struct interface *ifp,\n\t\t\t\t\t
      \  struct interface *br_if)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2185,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - br_if
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2176
    functionDepth: 2
    functionLinenumber: 2176
    functionLinenumberEnd: 2195
    functionName: vni_id_from_svi
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_from_svi
    - zl3vni_from_svi
    linkageType: ''
    returnType: vni_t
    signature: vni_t vni_id_from_svi(struct interface *ifp, struct interface *br_if)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:2203,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2206,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - zl3vni
    - rmac
    argTypes:
    - struct zebra_l3vni*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2197
    functionDepth: 1
    functionLinenumber: 2197
    functionLinenumberEnd: 2208
    functionName: zl3vni_get_vrr_rmac
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - is_l3vni_oper_up
    - memcpy
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void zl3vni_get_vrr_rmac(struct zebra_l3vni *zl3vni,\n\t\t\t\t       struct
      ethaddr *rmac)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:2221,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:2226,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:2227,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2230,1
    - Dst: zl3vni_get_svi_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2231,1
    - Dst: zl3vni_get_vrr_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2232,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/zebra_vxlan.c:2235,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2236,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:2240,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:2245,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2245,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2246,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2247,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_vxlan.c:2248,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2249,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2250,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:2251,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2252,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:2255,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:2255,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2258,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:2260,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2260,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:2262,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:2265,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:2268,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 2226
        line_start: 2226
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 2269
      start: 2213
    functionDepth: 2
    functionLinenumber: 2213
    functionLinenumberEnd: 2269
    functionName: zl3vni_send_add_to_client
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - stream_put
    - zserv_send_message
    - zserv_find_client
    - memset
    - zl3vni_get_vrr_rmac
    - stream_putw_at
    - zlog_debug
    - zebra_vrf_lookup_by_id
    - stream_put_in_addr
    - zl3vni_vrf_id
    - assert
    - is_zero_mac
    - zebra_route_string
    - memcpy
    - stream_new
    - zclient_create_header
    - vrf_id_to_name
    - CHECK_FLAG
    - zl3vni_get_svi_rmac
    - stream_get_endp
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zl3vni_send_add_to_client(struct zebra_l3vni *zl3vni)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:2279,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:2284,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:2286,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2286,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:2287,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:2290,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:2290,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2293,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:2294,1
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2294,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:2295,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:2298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2299
      start: 2274
    functionDepth: 1
    functionLinenumber: 2274
    functionLinenumberEnd: 2299
    functionName: zl3vni_send_del_to_client
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zserv_find_client
    - stream_new
    - zclient_create_header
    - vrf_id_to_name
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - zebra_route_string
    - zl3vni_vrf_id
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zl3vni_send_del_to_client(struct zebra_l3vni *zl3vni)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2308
      start: 2301
    functionDepth: 3
    functionLinenumber: 2301
    functionLinenumberEnd: 2308
    functionName: zebra_vxlan_process_l3vni_oper_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 5
    functionsReached:
    - zl3vni_send_add_to_client
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_process_l3vni_oper_up(struct zebra_l3vni *zl3vni)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - zl3vni
    argTypes:
    - struct zebra_l3vni*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2317
      start: 2310
    functionDepth: 2
    functionLinenumber: 2310
    functionLinenumberEnd: 2317
    functionName: zebra_vxlan_process_l3vni_oper_down
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 5
    functionsReached:
    - zl3vni_send_del_to_client
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_process_l3vni_oper_down(struct zebra_l3vni *zl3vni)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_vrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:2324,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_vxlan.c:2325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2326
      start: 2319
    functionDepth: 1
    functionLinenumber: 2319
    functionLinenumberEnd: 2326
    functionName: zevpn_add_to_l3vni_list
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - listnode_add_sort
    - zl3vni_vrf_id
    linkageType: ''
    returnType: void
    signature: void zevpn_add_to_l3vni_list(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2350,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2355,1
    - Dst: zebra_evpn_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2358,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2360,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2361,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_vxlan.c:2364,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2366,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan.c:2368,1
    - Dst: zebra_evpn_vxlan_del
      Src: /src/frr/zebra/zebra_vxlan.c:2371,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:2372,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2388,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2392,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_vxlan.c:2393,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_vxlan.c:2393,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:2402,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_vxlan.c:2411,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2418,1
    - Dst: zebra_evpn_add
      Src: /src/frr/zebra/zebra_vxlan.c:2422,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:2425,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2429,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:2431,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:2438,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:2439,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_vxlan.c:2440,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 60
    argCount: 3
    argNames:
    - zvrf
    - vni
    - add
    argTypes:
    - struct zebra_vrf*
    - vni_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2334
    functionDepth: 3
    functionLinenumber: 2334
    functionLinenumberEnd: 2445
    functionName: zebra_vxlan_handle_vni_transition
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_send_del_to_client
    - route_top
    - flog_err
    - zebra_evpn_send_add_to_client
    - zebra_evpn_vxlan_del
    - zebra_evpn_add
    - zl3vni_from_vrf
    - zebra_evpn_vtep_del_all
    - zlog_debug
    - listnode_add_sort_nodup
    - zebra_ns_lookup
    - zebra_evpn_neigh_del_all
    - zebra_evpn_lookup
    - zlog_err
    - route_next
    - zvni_map_to_svi
    - listnode_delete
    - zebra_evpn_read_mac_neigh
    - zebra_evpn_mac_del_all
    - zebra_vxlan_if_vni_find
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_handle_vni_transition(struct zebra_vrf *zvrf, vni_t
      vni,\n\t\t\t\t\t     int add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_rmac_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:2455,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_vxlan.c:2458,1
    - Dst: zl3vni_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:2460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - ctx
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2461
      start: 2448
    functionDepth: 3
    functionLinenumber: 2448
    functionLinenumberEnd: 2461
    functionName: zl3vni_del_rmac_hash_entry
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - hook_call
    - zl3vni_rmac_del
    - zl3vni_rmac_uninstall
    linkageType: ''
    returnType: void
    signature: void zl3vni_del_rmac_hash_entry(struct hash_bucket *bucket, void *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_nh_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:2471,1
    - Dst: zl3vni_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - ctx
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2473
      start: 2464
    functionDepth: 3
    functionLinenumber: 2464
    functionLinenumberEnd: 2473
    functionName: zl3vni_del_nh_hash_entry
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zl3vni_nh_uninstall
    - zl3vni_nh_del
    linkageType: ''
    returnType: void
    signature: void zl3vni_del_nh_hash_entry(struct hash_bucket *bucket, void *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2481,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:2486,1
    - Dst: zl3vni_rmac_install
      Src: /src/frr/zebra/zebra_vxlan.c:2489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - zl3vni
    - rmac
    argTypes:
    - struct zebra_l3vni*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2491
      start: 2476
    functionDepth: 1
    functionLinenumber: 2476
    functionLinenumberEnd: 2491
    functionName: zebra_vxlan_readd_remote_rmac
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - zl3vni_rmac_lookup
    - zl3vni_rmac_install
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_readd_remote_rmac(struct zebra_l3vni *zl3vni,\n\t\t\t\t\t
      struct ethaddr *rmac)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2499,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:2503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vni
    argTypes:
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2495
    functionDepth: 2
    functionLinenumber: 2495
    functionLinenumberEnd: 2504
    functionName: is_l3vni_for_prefix_routes_only
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - zl3vni_lookup
    linkageType: ''
    returnType: int
    signature: int is_l3vni_for_prefix_routes_only(vni_t vni)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2514,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:2515,1
    - Dst: zl3vni_remote_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:2522,1
    - Dst: svd_remote_nh_add
      Src: /src/frr/zebra/zebra_vxlan.c:2525,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2532,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/zebra_vxlan.c:2535,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:2538,1
    - Dst: zl3vni_remote_rmac_add
      Src: /src/frr/zebra/zebra_vxlan.c:2545,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - vrf_id
    - rmac
    - vtep_ip
    - host_prefix
    argTypes:
    - vrf_id_t
    - struct ethaddr*
    - struct ipaddr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2546
      start: 2507
    functionDepth: 4
    functionLinenumber: 2507
    functionLinenumberEnd: 2546
    functionName: zebra_vxlan_evpn_vrf_route_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - is_l3vni_oper_up
    - zl3vni_from_vrf
    - memset
    - zl3vni_remote_nh_add
    - ipv4_mapped_ipv6_to_ipv4
    - zl3vni_remote_rmac_add
    - svd_remote_nh_add
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_evpn_vrf_route_add(vrf_id_t vrf_id, const struct
      ethaddr *rmac,\n\t\t\t\t    const struct ipaddr *vtep_ip,\n\t\t\t\t    const
      struct prefix *host_prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:2557,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2562,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2565,1
    - Dst: zl3vni_remote_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2568,1
    - Dst: svd_remote_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:2571,1
    - Dst: zl3vni_remote_rmac_del
      Src: /src/frr/zebra/zebra_vxlan.c:2575,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - vrf_id
    - vtep_ip
    - host_prefix
    argTypes:
    - vrf_id_t
    - struct ipaddr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2549
    functionDepth: 4
    functionLinenumber: 2549
    functionLinenumberEnd: 2576
    functionName: zebra_vxlan_evpn_vrf_route_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zl3vni_nh_lookup
    - zl3vni_rmac_lookup
    - zl3vni_from_vrf
    - zl3vni_remote_rmac_del
    - svd_remote_nh_del
    - zl3vni_remote_nh_del
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_evpn_vrf_route_del(vrf_id_t vrf_id,\n\t\t\t\t    struct
      ipaddr *vtep_ip,\n\t\t\t\t    struct prefix *host_prefix)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2586,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2588,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2589,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2593,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2596,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2598,1
    - Dst: zl3vni_rmac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2602,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2605,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2607,1
    - Dst: zl3vni_print_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:2613,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2616,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - vty
    - l3vni
    - rmac
    - use_json
    argTypes:
    - struct vty*
    - vni_t
    - struct ethaddr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2617
      start: 2578
    functionDepth: 8
    functionLinenumber: 2578
    functionLinenumberEnd: 2617
    functionName: zebra_vxlan_print_specific_rmac_l3vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - zl3vni_rmac_lookup
    - vty_out
    - zl3vni_print_rmac
    - is_evpn_enabled
    - zl3vni_lookup
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_specific_rmac_l3vni(struct vty *vty, vni_t
      l3vni,\n\t\t\t\t\t   struct ethaddr *rmac, bool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2627,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2629,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2630,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2634,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2637,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2639,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2642,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2646,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2650,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2652,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2654,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2656,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2659,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - vty
    - l3vni
    - use_json
    argTypes:
    - struct vty*
    - vni_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2660
      start: 2619
    functionDepth: 2
    functionLinenumber: 2619
    functionLinenumberEnd: 2660
    functionName: zebra_vxlan_print_rmacs_l3vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - memset
    - json_object_int_add
    - is_evpn_enabled
    - hash_iterate
    - zl3vni_lookup
    - hashcount
    - vty_json
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_print_rmacs_l3vni(struct vty *vty, vni_t l3vni, bool
      use_json)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2668,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2670,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2671,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2677,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2683,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - use_json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2684
      start: 2662
    functionDepth: 1
    functionLinenumber: 2662
    functionLinenumberEnd: 2684
    functionName: zebra_vxlan_print_rmacs_all_l3vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_json
    - hash_iterate
    - is_evpn_enabled
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_print_rmacs_all_l3vni(struct vty *vty, bool use_json)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2694,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2696,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2697,1
    - Dst: svd_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2703,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2705,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2708,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2710,1
    - Dst: zl3vni_nh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2715,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2720,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2722,1
    - Dst: zl3vni_print_nh
      Src: /src/frr/zebra/zebra_vxlan.c:2728,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2731,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - vty
    - l3vni
    - ip
    - use_json
    argTypes:
    - struct vty*
    - vni_t
    - struct ipaddr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2732
      start: 2686
    functionDepth: 3
    functionLinenumber: 2686
    functionLinenumberEnd: 2732
    functionName: zebra_vxlan_print_specific_nh_l3vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - zl3vni_nh_lookup
    - svd_nh_lookup
    - vty_out
    - zl3vni_print_nh
    - is_evpn_enabled
    - zl3vni_lookup
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_specific_nh_l3vni(struct vty *vty, vni_t l3vni,\n\t\t\t\t\t
      struct ipaddr *ip, bool use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2741,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2746,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2751,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2753,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2755,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2757,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2760,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - nh_table
    - vty
    - use_json
    argTypes:
    - struct hash*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2761
      start: 2734
    functionDepth: 1
    functionLinenumber: 2734
    functionLinenumberEnd: 2761
    functionName: l3vni_print_nh_table
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_int_add
    - hash_iterate
    - vty_json
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void l3vni_print_nh_table(struct hash *nh_table, struct vty *vty,\n\t\t\t\t
      bool use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2767,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2769,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2773,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2776,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2778,1
    - Dst: l3vni_print_nh_table
      Src: /src/frr/zebra/zebra_vxlan.c:2782,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - l3vni
    - use_json
    argTypes:
    - struct vty*
    - vni_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2783
      start: 2763
    functionDepth: 2
    functionLinenumber: 2763
    functionLinenumberEnd: 2783
    functionName: zebra_vxlan_print_nh_l3vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - l3vni_print_nh_table
    - zl3vni_lookup
    - vty_out
    - is_evpn_enabled
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_print_nh_l3vni(struct vty *vty, vni_t l3vni, bool
      use_json)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2787,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2789,1
    - Dst: l3vni_print_nh_table
      Src: /src/frr/zebra/zebra_vxlan.c:2793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - use_json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2794
      start: 2785
    functionDepth: 2
    functionLinenumber: 2785
    functionLinenumberEnd: 2794
    functionName: zebra_vxlan_print_nh_svd
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - l3vni_print_nh_table
    - vty_out
    - is_evpn_enabled
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_print_nh_svd(struct vty *vty, bool use_json)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2802,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2804,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2805,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2811,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2817,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - use_json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2818
      start: 2796
    functionDepth: 1
    functionLinenumber: 2796
    functionLinenumberEnd: 2818
    functionName: zebra_vxlan_print_nh_all_l3vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_json
    - hash_iterate
    - is_evpn_enabled
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_print_nh_all_l3vni(struct vty *vty, bool use_json)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2830,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2832,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2833,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2837,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2840,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2842,1
    - Dst: zl3vni_print
      Src: /src/frr/zebra/zebra_vxlan.c:2848,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2851,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - vty
    - vni
    - use_json
    argTypes:
    - struct vty*
    - vni_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2852
      start: 2823
    functionDepth: 9
    functionLinenumber: 2823
    functionLinenumberEnd: 2852
    functionName: zebra_vxlan_print_l3vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - zl3vni_print
    - is_evpn_enabled
    - zl3vni_lookup
    - vty_json
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_print_l3vni(struct vty *vty, vni_t vni, bool use_json)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2860,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2865,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:2866,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2867,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2868,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:2868,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:2869,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2873,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2874,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:2874,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2875,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2876,1
    - Dst: zl3vni_vxlan_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2877,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2878,1
    - Dst: zl3vni_svi_if_name
      Src: /src/frr/zebra/zebra_vxlan.c:2879,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2880,1
    - Dst: zl3vni_state2str
      Src: /src/frr/zebra/zebra_vxlan.c:2881,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:2882,1
    - Dst: zl3vni_rmac2str
      Src: /src/frr/zebra/zebra_vxlan.c:2884,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:2885,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - vty
    - zvrf
    - json_vrfs
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2887
      start: 2854
    functionDepth: 2
    functionLinenumber: 2854
    functionLinenumberEnd: 2887
    functionName: zebra_vxlan_print_vrf_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - zl3vni_rmac2str
    - zl3vni_state2str
    - json_object_array_add
    - zvrf_name
    - zl3vni_svi_if_name
    - json_object_int_add
    - json_object_string_add
    - zl3vni_vxlan_if_name
    - zl3vni_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_vrf_vni(struct vty *vty, struct zebra_vrf *zvrf,\n\t\t\t
      \      json_object *json_vrfs)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2901,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2903,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2904,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:2908,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2911,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2913,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:2916,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:2924,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2929,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:2933,1
    - Dst: zebra_evpn_print_neigh_hdr
      Src: /src/frr/zebra/zebra_vxlan.c:2936,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:2938,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2940,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2942,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 4
    argNames:
    - vty
    - zvrf
    - vni
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2943
      start: 2892
    functionDepth: 1
    functionLinenumber: 2892
    functionLinenumberEnd: 2943
    functionName: zebra_vxlan_print_neigh_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - zebra_evpn_print_neigh_hdr
    - vty_out
    - zebra_evpn_lookup
    - memset
    - json_object_int_add
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_neigh_vni(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\t vni_t vni, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2955,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2957,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2958,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2966,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2971,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - zvrf
    - print_dup
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2948
    functionDepth: 1
    functionLinenumber: 2948
    functionLinenumberEnd: 2972
    functionName: zebra_vxlan_print_neigh_all_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_json
    - hash_iterate
    - is_evpn_enabled
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_neigh_all_vni(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\t     bool print_dup, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:2985,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:2987,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:2988,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:2996,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3001,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - zvrf
    - print_dup
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3002
      start: 2977
    functionDepth: 1
    functionLinenumber: 2977
    functionLinenumberEnd: 3002
    functionName: zebra_vxlan_print_neigh_all_vni_detail
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_json
    - hash_iterate
    - is_evpn_enabled
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_neigh_all_vni_detail(struct vty *vty,\n\t\t\t\t\t
      \   struct zebra_vrf *zvrf,\n\t\t\t\t\t    bool print_dup, bool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3016,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3018,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3019,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3023,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3026,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3028,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3031,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3034,1
    - Dst: zebra_evpn_print_neigh
      Src: /src/frr/zebra/zebra_vxlan.c:3040,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3043,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 5
    argNames:
    - vty
    - zvrf
    - vni
    - ip
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - struct ipaddr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3044
      start: 3007
    functionDepth: 1
    functionLinenumber: 3007
    functionLinenumberEnd: 3044
    functionName: zebra_vxlan_print_specific_neigh_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - zebra_evpn_lookup
    - zebra_evpn_print_neigh
    - zebra_evpn_neigh_lookup
    - is_evpn_enabled
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_specific_neigh_vni(struct vty *vty,\n\t\t\t\t\t
      \ struct zebra_vrf *zvrf, vni_t vni,\n\t\t\t\t\t  struct ipaddr *ip, bool use_json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3060,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3062,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3063,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3067,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3070,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3072,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3075,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3079,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3086,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3088,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3091,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 5
    argNames:
    - vty
    - zvrf
    - vni
    - vtep_ip
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - struct in_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3092
      start: 3050
    functionDepth: 1
    functionLinenumber: 3050
    functionLinenumberEnd: 3092
    functionName: zebra_vxlan_print_neigh_vni_vtep
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - zebra_evpn_lookup
    - memset
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_neigh_vni_vtep(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\t      vni_t vni, struct in_addr vtep_ip,\n\t\t\t\t      bool
      use_json)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3109,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3111,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3112,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3116,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3119,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3121,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3125,1
    - Dst: num_dup_detected_neighs
      Src: /src/frr/zebra/zebra_vxlan.c:3129,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3137,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3142,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3146,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3149,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3153,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3155,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3159,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 4
    argNames:
    - vty
    - zvrf
    - vni
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3160
      start: 3098
    functionDepth: 1
    functionLinenumber: 3098
    functionLinenumberEnd: 3160
    functionName: zebra_vxlan_print_neigh_vni_dad
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - zebra_evpn_lookup
    - num_dup_detected_neighs
    - memset
    - json_object_int_add
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_neigh_vni_dad(struct vty *vty,\n\t\t\t\t     struct
      zebra_vrf *zvrf,\n\t\t\t\t     vni_t vni,\n\t\t\t\t     bool use_json)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3174,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3176,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3180,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3183,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3185,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3188,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3193,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3194,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3197,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3204,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3207,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3210,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3212,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3217,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3220,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3223,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3227,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3228,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 5
    argNames:
    - vty
    - zvrf
    - vni
    - use_json
    - detail
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3230
      start: 3165
    functionDepth: 1
    functionLinenumber: 3165
    functionLinenumberEnd: 3230
    functionName: zebra_vxlan_print_macs_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - num_valid_macs
    - zebra_evpn_lookup
    - vty_out
    - memset
    - json_object_int_add
    - json_object_object_add
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_macs_vni(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\tvni_t vni, bool use_json, bool detail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3242,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3244,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3245,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3249,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3253,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - vty
    - zvrf
    - print_dup
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3257
      start: 3235
    functionDepth: 1
    functionLinenumber: 3235
    functionLinenumberEnd: 3257
    functionName: zebra_vxlan_print_macs_all_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - memset
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_macs_all_vni(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\t    bool print_dup, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3270,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3272,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3273,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3277,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3281,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - vty
    - zvrf
    - print_dup
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3286
      start: 3262
    functionDepth: 1
    functionLinenumber: 3262
    functionLinenumberEnd: 3286
    functionName: zebra_vxlan_print_macs_all_vni_detail
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - memset
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_macs_all_vni_detail(struct vty *vty,\n\t\t\t\t\t
      \  struct zebra_vrf *zvrf,\n\t\t\t\t\t   bool print_dup, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3299,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3301,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3302,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3311,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - vty
    - zvrf
    - vtep_ip
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - struct in_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3315
      start: 3291
    functionDepth: 1
    functionLinenumber: 3291
    functionLinenumberEnd: 3315
    functionName: zebra_vxlan_print_macs_all_vni_vtep
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - memset
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_macs_all_vni_vtep(struct vty *vty,\n\t\t\t\t\t
      struct zebra_vrf *zvrf,\n\t\t\t\t\t struct in_addr vtep_ip, bool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3329,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3331,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3332,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3336,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3339,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3341,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3344,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3347,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3349,1
    - Dst: zebra_evpn_print_mac
      Src: /src/frr/zebra/zebra_vxlan.c:3355,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3358,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - vty
    - zvrf
    - vni
    - macaddr
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - struct ethaddr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3359
      start: 3320
    functionDepth: 1
    functionLinenumber: 3320
    functionLinenumberEnd: 3359
    functionName: zebra_vxlan_print_specific_mac_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - zebra_evpn_lookup
    - zebra_evpn_mac_lookup
    - zebra_evpn_print_mac
    - is_evpn_enabled
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_specific_mac_vni(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\t\tvni_t vni, struct ethaddr *macaddr,\n\t\t\t\t\tbool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3372,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3375,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3377,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3381,1
    - Dst: num_dup_detected_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3385,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3390,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3391,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3394,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3400,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3403,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3406,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3408,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3411,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3412,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - vty
    - zvrf
    - vni
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3415
      start: 3362
    functionDepth: 1
    functionLinenumber: 3362
    functionLinenumberEnd: 3415
    functionName: zebra_vxlan_print_macs_vni_dad
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - num_valid_macs
    - vty_out
    - zebra_evpn_lookup
    - memset
    - json_object_int_add
    - json_object_object_add
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    - num_dup_detected_macs
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_macs_vni_dad(struct vty *vty,\n\t\t\t\t    struct
      zebra_vrf *zvrf,\n\t\t\t\t    vni_t vni, bool use_json)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3426,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3429,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3431,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3435,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:3437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3442,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3443,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_vxlan.c:3449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3459,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_vxlan.c:3460,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3461,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_vxlan.c:3462,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3466,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3472,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3477,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3484,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3486,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_vxlan.c:3492,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3495,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_vxlan.c:3496,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_vxlan.c:3499,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 5
    argNames:
    - zvrf
    - vni
    - macaddr
    - errmsg
    - errmsg_len
    argTypes:
    - struct zebra_vrf*
    - vni_t
    - struct ethaddr*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3503
      start: 3417
    functionDepth: 1
    functionLinenumber: 3417
    functionLinenumberEnd: 3503
    functionName: zebra_vxlan_clear_dup_detect_vni_mac
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_mac_send_add_to_client
    - zebra_evpn_rem_neigh_install
    - zebra_evpn_lookup
    - snprintf
    - zebra_evpn_process_neigh_on_remote_mac_add
    - zebra_evpn_rem_mac_install
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - snprintfrr
    - zebra_evpn_mac_lookup
    - UNSET_FLAG
    - EVENT_OFF
    - is_evpn_enabled
    - ZEBRA_NEIGH_SET_INACTIVE
    - zebra_evpn_process_neigh_on_local_mac_change
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_clear_dup_detect_vni_mac(struct zebra_vrf *zvrf, vni_t
      vni,\n\t\t\t\t\t struct ethaddr *macaddr, char *errmsg,\n\t\t\t\t\t size_t errmsg_len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3515,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3518,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3520,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3524,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3526,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:3531,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3533,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3534,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3540,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3542,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_vxlan.c:3543,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_vxlan.c:3546,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:3551,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3554,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3561,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3565,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_vxlan.c:3566,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 5
    argNames:
    - zvrf
    - vni
    - ip
    - errmsg
    - errmsg_len
    argTypes:
    - struct zebra_vrf*
    - vni_t
    - struct ipaddr*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3570
      start: 3505
    functionDepth: 1
    functionLinenumber: 3505
    functionLinenumberEnd: 3570
    functionName: zebra_vxlan_clear_dup_detect_vni_ip
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_rem_neigh_install
    - zebra_evpn_lookup
    - prefix_mac2str
    - CHECK_FLAG
    - zebra_evpn_neigh_send_add_to_client
    - snprintfrr
    - zebra_evpn_mac_lookup
    - zebra_evpn_neigh_lookup
    - zlog_debug
    - UNSET_FLAG
    - EVENT_OFF
    - is_evpn_enabled
    - ipaddr2str
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_clear_dup_detect_vni_ip(struct zebra_vrf *zvrf, vni_t
      vni,\n\t\t\t\t\tstruct ipaddr *ip, char *errmsg,\n\t\t\t\t\tsize_t errmsg_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3586,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3589,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_vxlan.c:3594,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_vxlan.c:3597,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3598,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_vxlan.c:3600,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:3609,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:3611,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3620
      start: 3572
    functionDepth: 1
    functionLinenumber: 3572
    functionLinenumberEnd: 3620
    functionName: zevpn_clear_dup_mac_hash
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_send_add_to_client
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - UNSET_FLAG
    - EVENT_OFF
    - ZEBRA_NEIGH_SET_INACTIVE
    linkageType: ''
    returnType: void
    signature: void zevpn_clear_dup_mac_hash(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3642,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3643,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3646,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3650,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3651,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3654,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3657
      start: 3628
    functionDepth: 1
    functionLinenumber: 3628
    functionLinenumberEnd: 3657
    functionName: zevpn_clear_dup_detect_hash_vni_all
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - num_valid_macs
    - hashcount
    - memset
    linkageType: ''
    returnType: void
    signature: "void zevpn_clear_dup_detect_hash_vni_all(struct hash_bucket *bucket,\n\t\t\t\t\t
      \   void **args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3663,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3673
      start: 3659
    functionDepth: 1
    functionLinenumber: 3659
    functionLinenumberEnd: 3673
    functionName: zebra_vxlan_clear_dup_detect_vni_all
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 3
    functionsReached:
    - hash_iterate
    - is_evpn_enabled
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_clear_dup_detect_vni_all(struct zebra_vrf *zvrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3681,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3684,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_vxlan.c:3686,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3690,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3691,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3694,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3698,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3699,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3702,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - zvrf
    - vni
    argTypes:
    - struct zebra_vrf*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3706
      start: 3675
    functionDepth: 1
    functionLinenumber: 3675
    functionLinenumberEnd: 3706
    functionName: zebra_vxlan_clear_dup_detect_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_lookup
    - memset
    - num_valid_macs
    - zlog_warn
    - is_evpn_enabled
    - hash_iterate
    - hashcount
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_clear_dup_detect_vni(struct zebra_vrf *zvrf, vni_t
      vni)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3721,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3722,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3726,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3729,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3731,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_vxlan.c:3734,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3739,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3740,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:3743,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3749,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3752,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_vxlan.c:3754,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3755,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 5
    argNames:
    - vty
    - zvrf
    - vni
    - vtep_ip
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - struct in_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3757
      start: 3711
    functionDepth: 1
    functionLinenumber: 3711
    functionLinenumberEnd: 3757
    functionName: zebra_vxlan_print_macs_vni_vtep
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - num_valid_macs
    - vty_out
    - zebra_evpn_lookup
    - memset
    - json_object_int_add
    - json_object_object_add
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_macs_vni_vtep(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\t     vni_t vni, struct in_addr vtep_ip,\n\t\t\t\t     bool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3777,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3779,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3780,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3787,1
    - Dst: zl3vni_print
      Src: /src/frr/zebra/zebra_vxlan.c:3789,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3791,1
    - Dst: zebra_evpn_print
      Src: /src/frr/zebra/zebra_vxlan.c:3793,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3795,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_vxlan.c:3805,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3807,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - vty
    - zvrf
    - vni
    - use_json
    - json_array
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - vni_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3809
      start: 3768
    functionDepth: 9
    functionLinenumber: 3768
    functionLinenumberEnd: 3809
    functionName: zebra_vxlan_print_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - json_object_new_object
    - zebra_evpn_print
    - zebra_evpn_lookup
    - vty_out
    - json_object_array_add
    - zl3vni_print
    - is_evpn_enabled
    - zl3vni_lookup
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_vni(struct vty *vty, struct zebra_vrf *zvrf,
      vni_t vni,\n\t\t\t   bool use_json, json_object *json_array)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3821,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3823,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3824,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:3828,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3830,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_vxlan.c:3831,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:3835,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:3837,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_vxlan.c:3840,1
    - Dst: zebra_evpn_mh_do_adv_svi_mac
      Src: /src/frr/zebra/zebra_vxlan.c:3841,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3843,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3844,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3845,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3846,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_vxlan.c:3847,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_vxlan.c:3850,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3852,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3853,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_vxlan.c:3854,1
    - Dst: json_object_boolean_add
      Src: /src/frr/zebra/zebra_vxlan.c:3856,1
    - Dst: zebra_evpn_mh_json
      Src: /src/frr/zebra/zebra_vxlan.c:3858,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3860,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3861,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3862,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3864,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3866,1
    - Dst: zebra_evpn_mh_do_adv_svi_mac
      Src: /src/frr/zebra/zebra_vxlan.c:3867,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3868,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3869,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3871,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3875,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3878,1
    - Dst: zebra_evpn_mh_print
      Src: /src/frr/zebra/zebra_vxlan.c:3881,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3885,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 2
    argNames:
    - vty
    - uj
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3886
      start: 3812
    functionDepth: 2
    functionLinenumber: 3812
    functionLinenumberEnd: 3886
    functionName: zebra_vxlan_print_evpn
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - zebra_evpn_mh_json
    - vty_out
    - zebra_evpn_do_dup_addr_detect
    - zebra_evpn_mh_do_adv_svi_mac
    - zebra_vrf_get_evpn
    - json_object_int_add
    - zebra_evpn_mh_print
    - json_object_boolean_true_add
    - json_object_string_add
    - is_evpn_enabled
    - json_object_boolean_false_add
    - vty_json
    - hashcount
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_print_evpn(struct vty *vty, bool uj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_vxlan.c:3898,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3900,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3901,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3906,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3914,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:3920,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:3925,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vty
    - zvrf
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3926
      start: 3891
    functionDepth: 1
    functionLinenumber: 3891
    functionLinenumberEnd: 3926
    functionName: zebra_vxlan_print_vnis
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_vnis(struct vty *vty, struct zebra_vrf *zvrf,\n\t\t\t
      \   bool use_json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3939,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3940,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3941,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3942,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:3943,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3945,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_vxlan.c:3947,1
    - Dst: zebra_vxlan_clear_dup_detect_vni_all
      Src: /src/frr/zebra/zebra_vxlan.c:3953,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:3961,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_vxlan.c:3963,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3971
      start: 3928
    functionDepth: 2
    functionLinenumber: 3928
    functionLinenumberEnd: 3971
    functionName: zebra_vxlan_dup_addr_detection
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_do_dup_addr_detect
    - vrf_id_to_name
    - zlog_debug
    - STREAM_GETL
    - zebra_vxlan_clear_dup_detect_vni_all
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_dup_addr_detection(ZAPI_HANDLER_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:3983,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_vxlan.c:3985,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:3989,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_vxlan.c:3994,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:4002,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:4008,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_vxlan.c:4014,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - vty
    - zvrf
    - use_json
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4015
      start: 3976
    functionDepth: 1
    functionLinenumber: 3976
    functionLinenumberEnd: 4015
    functionName: zebra_vxlan_print_vnis_detail
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - vty_out
    - is_evpn_enabled
    - hash_iterate
    - vty_json
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_print_vnis_detail(struct vty *vty, struct zebra_vrf
      *zvrf,\n\t\t\t\t   bool use_json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4033,1
    - Dst: zl3vni_local_nh_del
      Src: /src/frr/zebra/zebra_vxlan.c:4035,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4040,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4043,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4050,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4057,1
    - Dst: zebra_evpn_neigh_del_ip
      Src: /src/frr/zebra/zebra_vxlan.c:4060,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ifp
    - link_if
    - ip
    argTypes:
    - struct interface*
    - struct interface*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4061
      start: 4023
    functionDepth: 4
    functionLinenumber: 4023
    functionLinenumberEnd: 4061
    functionName: zebra_vxlan_handle_kernel_neigh_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_from_svi
    - zebra_evpn_neigh_del_ip
    - zl3vni_local_nh_del
    - zlog_debug
    - zl3vni_from_svi
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_handle_kernel_neigh_del(struct interface *ifp,\n\t\t\t\t\tstruct
      interface *link_if,\n\t\t\t\t\tstruct ipaddr *ip)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4084,1
    - Dst: zl3vni_local_nh_add_update
      Src: /src/frr/zebra/zebra_vxlan.c:4086,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4091,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4096,1
    - Dst: zebra_evpn_local_neigh_update
      Src: /src/frr/zebra/zebra_vxlan.c:4106,1
    - Dst: zebra_evpn_remote_neigh_update
      Src: /src/frr/zebra/zebra_vxlan.c:4110,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 9
    argNames:
    - ifp
    - link_if
    - ip
    - macaddr
    - state
    - is_ext
    - is_router
    - local_inactive
    - dp_static
    argTypes:
    - struct interface*
    - struct interface*
    - struct ipaddr*
    - struct ethaddr*
    - uint16_t
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4111
      start: 4069
    functionDepth: 4
    functionLinenumber: 4069
    functionLinenumberEnd: 4111
    functionName: zebra_vxlan_handle_kernel_neigh_update
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_from_svi
    - zebra_evpn_remote_neigh_update
    - zlog_debug
    - zl3vni_from_svi
    - zl3vni_local_nh_add_update
    - zebra_evpn_local_neigh_update
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_handle_kernel_neigh_update(struct interface *ifp,\n\t\t\t\t\t
      \  struct interface *link_if,\n\t\t\t\t\t   struct ipaddr *ip,\n\t\t\t\t\t   struct
      ethaddr *macaddr,\n\t\t\t\t\t   uint16_t state,\n\t\t\t\t\t   bool is_ext,\n\t\t\t\t\t
      \  bool is_router,\n\t\t\t\t\t   bool local_inactive, bool dp_static)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:4126,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4127,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4128,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zebra_vxlan.c:4129,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4138,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4145,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4148,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:4152,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4153,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4155,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 10
    argNames:
    - add
    - s
    - vni
    - macaddr
    - ipa_len
    - ip
    - vtep_ip
    - flags
    - seq
    - esi
    argTypes:
    - bool
    - struct stream*
    - vni_t*
    - struct ethaddr*
    - uint16_t*
    - struct ipaddr*
    - struct in_addr*
    - uint8_t*
    - uint32_t*
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4163
      start: 4113
    functionDepth: 1
    functionLinenumber: 4113
    functionLinenumberEnd: 4163
    functionName: zebra_vxlan_remote_macip_helper
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - memset
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int32_t
    signature: "int32_t zebra_vxlan_remote_macip_helper(bool add, struct stream *s,
      vni_t *vni,\n\t\t\t\tstruct ethaddr *macaddr, uint16_t *ipa_len,\n\t\t\t\tstruct
      ipaddr *ip, struct in_addr *vtep_ip,\n\t\t\t\tuint8_t *flags, uint32_t *seq,
      esi_t *esi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_remote_macip_helper
      Src: /src/frr/zebra/zebra_vxlan.c:4181,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4190,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:4195,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4196,1
    - Dst: zebra_rib_queue_evpn_rem_macip_del
      Src: /src/frr/zebra/zebra_vxlan.c:4199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4204
      start: 4168
    functionDepth: 2
    functionLinenumber: 4168
    functionLinenumberEnd: 4204
    functionName: zebra_vxlan_remote_macip_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_vxlan_remote_macip_helper
    - ipaddr2str
    - zebra_route_string
    - zebra_rib_queue_evpn_rem_macip_del
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_remote_macip_del(ZAPI_HANDLER_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4225,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4226,1
    - Dst: zebra_vxlan_remote_macip_helper
      Src: /src/frr/zebra/zebra_vxlan.c:4234,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_vxlan.c:4243,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_vxlan.c:4244,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4246,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4247,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_vxlan.c:4254,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4256,1
    - Dst: zebra_rib_queue_evpn_rem_macip_add
      Src: /src/frr/zebra/zebra_vxlan.c:4260,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4266
      start: 4211
    functionDepth: 2
    functionLinenumber: 4211
    functionLinenumberEnd: 4266
    functionName: zebra_vxlan_remote_macip_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - esi_to_str
    - memcmp
    - zlog_debug
    - EVPN_ENABLED
    - zebra_vxlan_remote_macip_helper
    - ipaddr2str
    - zebra_route_string
    - zebra_rib_queue_evpn_rem_macip_add
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_remote_macip_add(ZAPI_HANDLER_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4281,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4284,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:4292,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4297,1
    - Dst: zebra_evpn_vtep_find
      Src: /src/frr/zebra/zebra_vxlan.c:4302,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4307,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_vxlan.c:4311,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - ifp
    - vni
    - vtep_ip
    argTypes:
    - struct interface*
    - vni_t
    - struct in_addr
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 4280
        line_start: 4280
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 4313
      start: 4271
    functionDepth: 2
    functionLinenumber: 4271
    functionLinenumberEnd: 4313
    functionName: zebra_vxlan_check_readd_vtep
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_lookup
    - zebra_evpn_vtep_find
    - zebra_evpn_vtep_install
    - zlog_debug
    - zebra_vxlan_if_vni_find
    - is_evpn_enabled
    - assert
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_check_readd_vtep(struct interface *ifp, vni_t vni,\n\t\t\t\t
      struct in_addr vtep_ip)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4330,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4333,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4337,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4342,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4347,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4351,1
    - Dst: zebra_evpn_mac_send_del_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:4356,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_vxlan.c:4363,1
    - Dst: zebra_evpn_mac_del
      Src: /src/frr/zebra/zebra_vxlan.c:4364,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_vxlan.c:4366,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4367,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4368,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4369,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - ifp
    - br_if
    - macaddr
    - vid
    - vni
    argTypes:
    - struct interface*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    - vni_t
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 4329
        line_start: 4329
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 4373
      start: 4320
    functionDepth: 1
    functionLinenumber: 4320
    functionLinenumberEnd: 4373
    functionName: zebra_vxlan_check_del_local_mac
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_mac_clear_fwd_info
    - zebra_evpn_lookup
    - CHECK_FLAG
    - listcount
    - zebra_evpn_mac_del
    - zebra_evpn_mac_lookup
    - zebra_evpn_mac_send_del_to_client
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - is_evpn_enabled
    - assert
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_check_del_local_mac(struct interface *ifp,\n\t\t\t\t\t
      \  struct interface *br_if,\n\t\t\t\t\t   struct ethaddr *macaddr,\n\t\t\t\t\t
      \  vlanid_t vid, vni_t vni)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4393,1
    - Dst: zebra_evpn_nhg_is_local_es
      Src: /src/frr/zebra/zebra_vxlan.c:4403,1
    - Dst: zebra_evpn_es_local_mac_via_network_port
      Src: /src/frr/zebra/zebra_vxlan.c:4404,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4406,1
    - Dst: zebra_vxlan_check_del_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4408,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4416,1
    - Dst: zebra_vxlan_local_mac_add_update
      Src: /src/frr/zebra/zebra_vxlan.c:4418,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 8
    argNames:
    - ifp
    - br_if
    - macaddr
    - vid
    - vni
    - nhg_id
    - sticky
    - dp_static
    argTypes:
    - struct interface*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    - vni_t
    - uint32_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4421
      start: 4379
    functionDepth: 2
    functionLinenumber: 4379
    functionLinenumberEnd: 4421
    functionName: zebra_vxlan_dp_network_mac_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_nhg_is_local_es
    - zebra_vxlan_check_del_local_mac
    - zebra_evpn_es_local_mac_via_network_port
    - zlog_debug
    - zebra_vxlan_local_mac_add_update
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_dp_network_mac_add(struct interface *ifp,\n\t\t\t\t
      \  struct interface *br_if,\n\t\t\t\t   struct ethaddr *macaddr, vlanid_t vid,\n\t\t\t\t
      \  vni_t vni, uint32_t nhg_id, bool sticky,\n\t\t\t\t   bool dp_static)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4439,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4442,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4446,1
    - Dst: zebra_vxlan_readd_remote_rmac
      Src: /src/frr/zebra/zebra_vxlan.c:4448,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4451,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4456,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4460,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4463,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_vxlan.c:4466,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4467,1
    - Dst: zebra_evpn_es_local_mac_via_network_port
      Src: /src/frr/zebra/zebra_vxlan.c:4468,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4473,1
    - Dst: zebra_evpn_del_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4476,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 5
    argNames:
    - ifp
    - br_if
    - macaddr
    - vid
    - vni
    argTypes:
    - struct interface*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    - vni_t
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 4438
        line_start: 4438
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 4480
      start: 4428
    functionDepth: 2
    functionLinenumber: 4428
    functionLinenumberEnd: 4480
    functionName: zebra_vxlan_dp_network_mac_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_readd_remote_rmac
    - zebra_evpn_lookup
    - zebra_evpn_rem_mac_install
    - CHECK_FLAG
    - zebra_evpn_es_local_mac_via_network_port
    - zebra_evpn_mac_lookup
    - zebra_evpn_del_local_mac
    - zlog_debug
    - is_evpn_enabled
    - zl3vni_lookup
    - assert
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_dp_network_mac_del(struct interface *ifp,\n\t\t\t\t
      \  struct interface *br_if,\n\t\t\t\t   struct ethaddr *macaddr, vlanid_t vid,\n\t\t\t\t
      \  vni_t vni)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_map_vlan
      Src: /src/frr/zebra/zebra_vxlan.c:4494,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4498,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4505,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:4510,1
    - Dst: zebra_evpn_del_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4513,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - ifp
    - br_if
    - macaddr
    - vid
    argTypes:
    - struct interface*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4514
      start: 4485
    functionDepth: 1
    functionLinenumber: 4485
    functionLinenumberEnd: 4514
    functionName: zebra_vxlan_local_mac_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zebra_evpn_mac_lookup
    - zebra_evpn_del_local_mac
    - zlog_debug
    - zebra_evpn_map_vlan
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_local_mac_del(struct interface *ifp, struct interface
      *br_if,\n\t\t\t      struct ethaddr *macaddr, vlanid_t vid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:4528,1
    - Dst: zebra_evpn_map_vlan
      Src: /src/frr/zebra/zebra_vxlan.c:4533,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4536,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4545,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:4551,1
    - Dst: zebra_evpn_add_update_local_mac
      Src: /src/frr/zebra/zebra_vxlan.c:4552,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 7
    argNames:
    - ifp
    - br_if
    - macaddr
    - vid
    - sticky
    - local_inactive
    - dp_static
    argTypes:
    - struct interface*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    - bool
    - bool
    - bool
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 4527
        line_start: 4527
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 4555
      start: 4519
    functionDepth: 2
    functionLinenumber: 4519
    functionLinenumberEnd: 4555
    functionName: zebra_vxlan_local_mac_add_update
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zebra_vrf_get_evpn
    - zlog_debug
    - zebra_evpn_add_update_local_mac
    - zebra_evpn_map_vlan
    - assert
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_local_mac_add_update(struct interface *ifp,\n\t\t\t\t
      \    struct interface *br_if,\n\t\t\t\t     struct ethaddr *macaddr, vlanid_t
      vid,\n\t\t\t\t\t bool sticky, bool local_inactive,\n\t\t\t\t\t bool dp_static)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4567,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4568,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4574,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4575,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4576,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4586,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4588,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4592,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4596,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4598,1
    - Dst: zebra_rib_queue_evpn_rem_vtep_del
      Src: /src/frr/zebra/zebra_vxlan.c:4601,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4601,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4606
      start: 4560
    functionDepth: 1
    functionLinenumber: 4560
    functionLinenumberEnd: 4606
    functionName: zebra_vxlan_remote_vtep_del_zapi
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zlog_debug
    - EVPN_ENABLED
    - STREAM_GETL
    - STREAM_GET
    - is_evpn_enabled
    - zebra_rib_queue_evpn_rem_vtep_del
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_remote_vtep_del_zapi(ZAPI_HANDLER_ARGS)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4620,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4621,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:4626,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4630,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4631,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4632,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4637,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4640,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4648,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:4656,1
    - Dst: zebra_evpn_vtep_find
      Src: /src/frr/zebra/zebra_vxlan.c:4664,1
    - Dst: zebra_evpn_vtep_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:4668,1
    - Dst: zebra_evpn_vtep_del
      Src: /src/frr/zebra/zebra_vxlan.c:4669,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - vrf_id
    - vni
    - vtep_ip
    argTypes:
    - vrf_id_t
    - vni_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4670
      start: 4611
    functionDepth: 2
    functionLinenumber: 4611
    functionLinenumberEnd: 4670
    functionName: zebra_vxlan_remote_vtep_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_lookup
    - zvrf_id
    - zebra_evpn_vtep_find
    - zebra_evpn_vtep_uninstall
    - zlog_debug
    - EVPN_ENABLED
    - zebra_evpn_vtep_del
    - is_evpn_enabled
    - zebra_vrf_lookup_by_id
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_remote_vtep_del(vrf_id_t vrf_id, vni_t vni,\n\t\t\t\t
      struct in_addr vtep_ip)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4684,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4685,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_vxlan.c:4690,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4694,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4695,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4696,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4701,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:4703,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:4712,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:4722,1
    - Dst: zebra_evpn_vtep_find
      Src: /src/frr/zebra/zebra_vxlan.c:4725,1
    - Dst: zebra_evpn_vtep_uninstall
      Src: /src/frr/zebra/zebra_vxlan.c:4736,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_vxlan.c:4738,1
    - Dst: zebra_evpn_vtep_add
      Src: /src/frr/zebra/zebra_vxlan.c:4741,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_vxlan.c:4743,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_vxlan.c:4745,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 4
    argNames:
    - vrf_id
    - vni
    - vtep_ip
    - flood_control
    argTypes:
    - vrf_id_t
    - vni_t
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4749
      start: 4675
    functionDepth: 2
    functionLinenumber: 4675
    functionLinenumberEnd: 4749
    functionName: zebra_vxlan_remote_vtep_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_lookup
    - zebra_evpn_vtep_add
    - zvrf_id
    - zebra_evpn_vtep_find
    - zebra_evpn_vtep_uninstall
    - zebra_evpn_vtep_install
    - zlog_debug
    - EVPN_ENABLED
    - flog_err
    - is_evpn_enabled
    - zebra_vrf_lookup_by_id
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_remote_vtep_add(vrf_id_t vrf_id, vni_t vni,\n\t\t\t\t
      struct in_addr vtep_ip, int flood_control)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4762,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4763,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:4769,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4770,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4771,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4779,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:4781,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:4782,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4786,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:4788,1
    - Dst: zebra_rib_queue_evpn_rem_vtep_add
      Src: /src/frr/zebra/zebra_vxlan.c:4791,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:4791,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4797
      start: 4754
    functionDepth: 1
    functionLinenumber: 4754
    functionLinenumberEnd: 4797
    functionName: zebra_vxlan_remote_vtep_add_zapi
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_rib_queue_evpn_rem_vtep_add
    - zvrf_id
    - zlog_debug
    - EVPN_ENABLED
    - STREAM_GETL
    - STREAM_GET
    - is_evpn_enabled
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_remote_vtep_add_zapi(ZAPI_HANDLER_ARGS)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:4814,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:4815,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4818,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4821,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:4836,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4836,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4839,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4844,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:4853,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4854,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4856,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_vxlan.c:4859,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4864,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4866,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:4874,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:4875,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4878,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_vxlan.c:4880,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4881,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:4888,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/zebra_vxlan.c:4894,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4895,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4899,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:4900,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4904,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4908,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_vxlan.c:4912,1
    - Dst: zebra_evpn_gw_macip_add
      Src: /src/frr/zebra/zebra_vxlan.c:4918,1
    - Dst: zebra_evpn_gw_macip_del
      Src: /src/frr/zebra/zebra_vxlan.c:4920,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 62
    argCount: 3
    argNames:
    - ifp
    - p
    - add
    argTypes:
    - struct interface*
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4923
      start: 4807
    functionDepth: 2
    functionLinenumber: 4807
    functionLinenumberEnd: 4923
    functionName: zebra_vxlan_add_del_gw_macip
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - advertise_gw_macip_enabled
    - advertise_svi_macip_enabled
    - zebra_evpn_gw_macip_add
    - IS_ZEBRA_IF_VLAN
    - memset
    - zebra_evpn_from_svi
    - if_lookup_by_index_per_ns
    - IS_ZEBRA_IF_MACVLAN
    - IS_ZEBRA_IF_BRIDGE
    - zebra_evpn_gw_macip_del
    - zlog_debug
    - is_evpn_enabled
    - memcpy
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_add_del_gw_macip(struct interface *ifp, const struct
      prefix *p,\n\t\t\t\t int add)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4938,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:4942,1
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/zebra_vxlan.c:4950,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4955,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:4959,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_vxlan.c:4961,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:4967,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:4968,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ifp
    - link_if
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4972
      start: 4934
    functionDepth: 4
    functionLinenumber: 4934
    functionLinenumberEnd: 4972
    functionName: zebra_vxlan_svi_down
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_acc_bd_svi_set
    - zl3vni_from_vrf
    - zebra_vxlan_process_l3vni_oper_down
    - zebra_evpn_from_svi
    - zebra_evpn_send_add_to_client
    - zl3vni_from_svi
    - listnode_delete
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_svi_down(struct interface *ifp, struct interface *link_if)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:4987,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:4994,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:4995,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5001,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5006,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5013,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5022,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/zebra/zebra_vxlan.c:5024,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5026,1
    - Dst: zebra_evpn_send_add_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:5027,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:5030,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5032,1
    - Dst: zebra_evpn_acc_bd_svi_set
      Src: /src/frr/zebra/zebra_vxlan.c:5036,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5039,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5040,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5041,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - ifp
    - link_if
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5046
      start: 4982
    functionDepth: 4
    functionLinenumber: 4982
    functionLinenumberEnd: 5046
    functionName: zebra_vxlan_svi_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 3
    functionsReached:
    - zebra_evpn_acc_bd_svi_set
    - is_l3vni_oper_up
    - zebra_evpn_del_macip_for_intf
    - zl3vni_from_vrf
    - memset
    - zebra_evpn_add_macip_for_intf
    - zebra_evpn_from_svi
    - zlog_debug
    - zebra_evpn_send_add_to_client
    - zl3vni_from_svi
    - hash_iterate
    - if_is_operative
    - zebra_vxlan_process_l3vni_oper_up
    - listnode_add_sort_nodup
    - advertise_svi_macip_enabled
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_svi_up(struct interface *ifp, struct interface *link_if)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5061,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5065,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_vxlan.c:5068,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5073,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:5075,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5075,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5078,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5081,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5082,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 5060
        line_start: 5060
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (link_zif)
      pos:
        line_end: 5072
        line_start: 5072
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 5084
      start: 5054
    functionDepth: 4
    functionLinenumber: 5054
    functionLinenumberEnd: 5084
    functionName: zebra_vxlan_macvlan_down
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - ifindex2ifname
    - is_l3vni_oper_up
    - if_lookup_by_index_per_ns
    - zlog_debug
    - zl3vni_from_svi
    - zebra_vxlan_process_l3vni_oper_up
    - assert
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_macvlan_down(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5100,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_vxlan.c:5103,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_vxlan.c:5105,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5105,1
    - Dst: zl3vni_from_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5107,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5113,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 5099
        line_start: 5099
        source_file: /src/frr/zebra/zebra_vxlan.c
    - condition: (link_zif)
      pos:
        line_end: 5102
        line_start: 5102
        source_file: /src/frr/zebra/zebra_vxlan.c
    constantsTouched: []
    func_position:
      end: 5116
      start: 5093
    functionDepth: 4
    functionLinenumber: 5093
    functionLinenumberEnd: 5116
    functionName: zebra_vxlan_macvlan_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - is_l3vni_oper_up
    - if_lookup_by_index_per_ns
    - zl3vni_from_svi
    - zebra_vxlan_process_l3vni_oper_up
    - assert
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_macvlan_up(struct interface *ifp)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:5125,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5128,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:5128,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5134,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5140,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5142,1
    - Dst: zebra_vxlan_handle_vni_transition
      Src: /src/frr/zebra/zebra_vxlan.c:5148,1
    - Dst: zl3vni_add
      Src: /src/frr/zebra/zebra_vxlan.c:5151,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5151,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:5160,1
    - Dst: zl3vni_map_to_vxlan_if
      Src: /src/frr/zebra/zebra_vxlan.c:5165,1
    - Dst: zl3vni_map_to_svi_if
      Src: /src/frr/zebra/zebra_vxlan.c:5171,1
    - Dst: zl3vni_map_to_mac_vlan_if
      Src: /src/frr/zebra/zebra_vxlan.c:5173,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5176,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5184,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5187,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5188,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5191,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5193,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:5204,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5205,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:5210,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5213,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5217,1
    - Dst: zl3vni_del
      Src: /src/frr/zebra/zebra_vxlan.c:5221,1
    - Dst: zebra_vxlan_handle_vni_transition
      Src: /src/frr/zebra/zebra_vxlan.c:5224,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 6
    argNames:
    - zvrf
    - vni
    - err
    - err_str_sz
    - filter
    - add
    argTypes:
    - struct zebra_vrf*
    - vni_t
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5227
      start: 5118
    functionDepth: 4
    functionLinenumber: 5118
    functionLinenumberEnd: 5227
    functionName: zebra_vxlan_process_vrf_vni_cmd
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - is_l3vni_oper_up
    - zl3vni_del
    - snprintf
    - zvrf_id
    - zvrf_name
    - CHECK_FLAG
    - zebra_vxlan_process_l3vni_oper_down
    - zl3vni_map_to_mac_vlan_if
    - zebra_vrf_get_evpn
    - zl3vni_add
    - zlog_debug
    - SET_FLAG
    - zebra_vxlan_handle_vni_transition
    - zl3vni_map_to_vxlan_if
    - zl3vni_map_to_svi_if
    - hash_iterate
    - zl3vni_lookup
    - zebra_vxlan_process_l3vni_oper_up
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_process_vrf_vni_cmd(struct zebra_vrf *zvrf, vni_t
      vni,\n\t\t\t\t    char *err, int err_str_sz, int filter,\n\t\t\t\t    int add)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5234,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5238,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5239,1
    - Dst: zebra_vxlan_process_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5242
      start: 5229
    functionDepth: 4
    functionLinenumber: 5229
    functionLinenumberEnd: 5242
    functionName: zebra_vxlan_vrf_enable
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zvrf_id
    - is_l3vni_oper_up
    - zl3vni_lookup
    - zebra_vxlan_process_l3vni_oper_up
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_vrf_enable(struct zebra_vrf *zvrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5249,1
    - Dst: zebra_vxlan_process_l3vni_oper_down
      Src: /src/frr/zebra/zebra_vxlan.c:5253,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5256,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5263
      start: 5244
    functionDepth: 3
    functionLinenumber: 5244
    functionLinenumberEnd: 5263
    functionName: zebra_vxlan_vrf_disable
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_vxlan_process_l3vni_oper_down
    - zl3vni_lookup
    - hash_iterate
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_vrf_disable(struct zebra_vrf *zvrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5271,1
    - Dst: zl3vni_del
      Src: /src/frr/zebra/zebra_vxlan.c:5276,1
    - Dst: zebra_vxlan_handle_vni_transition
      Src: /src/frr/zebra/zebra_vxlan.c:5279,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5282
      start: 5265
    functionDepth: 4
    functionLinenumber: 5265
    functionLinenumberEnd: 5282
    functionName: zebra_vxlan_vrf_delete
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zl3vni_del
    - zl3vni_lookup
    - zebra_vxlan_handle_vni_transition
    linkageType: ''
    returnType: int
    signature: int zebra_vxlan_vrf_delete(struct zebra_vrf *zvrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5296,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_vxlan.c:5297,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5298,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5303,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5306,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5322
      start: 5291
    functionDepth: 1
    functionLinenumber: 5291
    functionLinenumberEnd: 5322
    functionName: zebra_vxlan_flood_control
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zlog_err
    - zlog_debug
    - STREAM_GETC
    - EVPN_ENABLED
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_flood_control(ZAPI_HANDLER_ARGS)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5336,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5337,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5338,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5343,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:5344,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5348,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5350,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5360,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5364,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5376,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5381,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5384,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5388,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5394,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5404,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:5407,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5411,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5418,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5421,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5427
      start: 5328
    functionDepth: 2
    functionLinenumber: 5328
    functionLinenumberEnd: 5427
    functionName: zebra_vxlan_advertise_svi_macip
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_del_macip_for_intf
    - zebra_evpn_lookup
    - zebra_evpn_add_macip_for_intf
    - zvrf_id
    - zlog_debug
    - EVPN_ENABLED
    - STREAM_GETC
    - STREAM_GETL
    - zebra_vxlan_if_vni_find
    - zvni_map_to_svi
    - hash_iterate
    - if_is_operative
    - advertise_svi_macip_enabled
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_advertise_svi_macip(ZAPI_HANDLER_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5444,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5445,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5446,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5451,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zebra_vxlan.c:5452,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5454,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5462,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5476,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:5479,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5483,1
    - Dst: zebra_evpn_advertise_subnet
      Src: /src/frr/zebra/zebra_vxlan.c:5489,1
    - Dst: zebra_evpn_advertise_subnet
      Src: /src/frr/zebra/zebra_vxlan.c:5491,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5495
      start: 5433
    functionDepth: 2
    functionLinenumber: 5433
    functionLinenumberEnd: 5495
    functionName: zebra_vxlan_advertise_subnet
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_lookup
    - zvrf_id
    - zlog_debug
    - EVPN_ENABLED
    - STREAM_GETC
    - zebra_vxlan_if_vni_find
    - STREAM_GET
    - zvni_map_to_svi
    - if_is_operative
    - zebra_evpn_advertise_subnet
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_advertise_subnet(ZAPI_HANDLER_ARGS)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5509,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5510,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5511,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5516,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zebra_vxlan.c:5517,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5521,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5523,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5532,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5533,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5537,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5548,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5553,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5556,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5559,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5562,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_vxlan.c:5572,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_vxlan.c:5575,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5579,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5584,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5586,1
    - Dst: zebra_get_vrr_intf_for_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5589,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5591,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5594,1
    - Dst: zebra_get_vrr_intf_for_svi
      Src: /src/frr/zebra/zebra_vxlan.c:5597,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_vxlan.c:5599,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5605
      start: 5501
    functionDepth: 2
    functionLinenumber: 5501
    functionLinenumberEnd: 5605
    functionName: zebra_vxlan_advertise_gw_macip
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - advertise_gw_macip_enabled
    - zebra_get_vrr_intf_for_svi
    - zebra_evpn_del_macip_for_intf
    - zebra_evpn_lookup
    - zebra_evpn_add_macip_for_intf
    - zvrf_id
    - zlog_debug
    - EVPN_ENABLED
    - STREAM_GETC
    - STREAM_GETL
    - zebra_vxlan_if_vni_find
    - zvni_map_to_svi
    - hash_iterate
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_advertise_gw_macip(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: macfdb_read
      Src: /src/frr/zebra/zebra_vxlan.c:5613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ns
    - _in_param
    - out_param
    argTypes:
    - struct ns*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5615
      start: 5607
    functionDepth: 0
    functionLinenumber: 5607
    functionLinenumberEnd: 5615
    functionName: macfdb_read_ns
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - macfdb_read
    linkageType: ''
    returnType: int
    signature: "int macfdb_read_ns(struct ns *ns,\n\t\t\t  void *_in_param __attribute__((unused)),\n\t\t\t
      \ void **out_param __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: neigh_read
      Src: /src/frr/zebra/zebra_vxlan.c:5623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ns
    - _in_param
    - out_param
    argTypes:
    - struct ns*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5625
      start: 5617
    functionDepth: 0
    functionLinenumber: 5617
    functionLinenumberEnd: 5625
    functionName: neigh_read_ns
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - neigh_read
    linkageType: ''
    returnType: int
    signature: "int neigh_read_ns(struct ns *ns,\n\t\t\t void *_in_param __attribute__((unused)),\n\t\t\t
      void **out_param __attribute__((unused)))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5643,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5643,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5647,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zebra_vxlan.c:5648,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5651,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_vxlan.c:5652,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_vxlan.c:5652,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/zebra_vxlan.c:5654,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:5661,1
    - Dst: zebra_evpn_es_send_all_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:5668,1
    - Dst: zevpn_build_hash_table
      Src: /src/frr/zebra/zebra_vxlan.c:5671,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5674,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:5678,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_vxlan.c:5681,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5686,1
    - Dst: zebra_evpn_es_send_all_to_client
      Src: /src/frr/zebra/zebra_vxlan.c:5690,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5701
      start: 5635
    functionDepth: 1
    functionLinenumber: 5635
    functionLinenumberEnd: 5701
    functionName: zebra_vxlan_advertise_all_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zvrf_name
    - ns_walk_func
    - zlog_debug
    - STREAM_GETC
    - EVPN_ENABLED
    - zevpn_build_hash_table
    - is_evpn_enabled
    - hash_iterate
    - zebra_evpn_es_send_all_to_client
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_advertise_all_vni(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5714,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_vxlan.c:5716,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_vxlan.c:5719,1
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_vxlan.c:5721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5723
      start: 5707
    functionDepth: 1
    functionLinenumber: 5707
    functionLinenumberEnd: 5723
    functionName: zebra_vxlan_init_tables
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_create_size
    - snprintf
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_init_tables(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:5728,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5730,1
    - Dst: zebra_vxlan_cleanup_sg_table
      Src: /src/frr/zebra/zebra_vxlan.c:5731,1
    - Dst: zebra_evpn_es_cleanup
      Src: /src/frr/zebra/zebra_vxlan.c:5734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5735
      start: 5726
    functionDepth: 7
    functionLinenumber: 5726
    functionLinenumberEnd: 5735
    functionName: zebra_vxlan_cleanup_tables
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - zebra_vxlan_cleanup_sg_table
    - zebra_vrf_get_evpn
    - zebra_evpn_es_cleanup
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_cleanup_tables(struct zebra_vrf *zvrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:5742,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:5743,1
    - Dst: zebra_vxlan_cleanup_sg_table
      Src: /src/frr/zebra/zebra_vxlan.c:5745,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:5746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5749
      start: 5738
    functionDepth: 1
    functionLinenumber: 5738
    functionLinenumberEnd: 5749
    functionName: zebra_vxlan_close_tables
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - zebra_vxlan_cleanup_sg_table
    - hash_free
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_close_tables(struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_vxlan.c:5754,1
    - Dst: zebra_neigh_db_create
      Src: /src/frr/zebra/zebra_vxlan.c:5757,1
    - Dst: zebra_evpn_mh_init
      Src: /src/frr/zebra/zebra_vxlan.c:5760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5761
      start: 5752
    functionDepth: 3
    functionLinenumber: 5752
    functionLinenumberEnd: 5761
    functionName: zebra_vxlan_init
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_create
    - zebra_neigh_db_create
    - zebra_evpn_mh_init
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_vxlan.c:5766,1
    - Dst: zebra_evpn_mh_terminate
      Src: /src/frr/zebra/zebra_vxlan.c:5767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5768
      start: 5764
    functionDepth: 2
    functionLinenumber: 5764
    functionLinenumberEnd: 5768
    functionName: zebra_vxlan_disable
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_free
    - zebra_evpn_mh_terminate
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_disable(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5775,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5776,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5780
      start: 5771
    functionDepth: 3
    functionLinenumber: 5771
    functionLinenumberEnd: 5780
    functionName: get_l3vni_svi_ifindex
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - is_l3vni_oper_up
    - zl3vni_from_vrf
    linkageType: ''
    returnType: ifindex_t
    signature: ifindex_t get_l3vni_svi_ifindex(vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5787,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5792
      start: 5783
    functionDepth: 3
    functionLinenumber: 5783
    functionLinenumberEnd: 5792
    functionName: get_l3vni_vxlan_ifindex
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - is_l3vni_oper_up
    - zl3vni_from_vrf
    linkageType: ''
    returnType: ifindex_t
    signature: ifindex_t get_l3vni_vxlan_ifindex(vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5799,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5800,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5804
      start: 5795
    functionDepth: 3
    functionLinenumber: 5795
    functionLinenumberEnd: 5804
    functionName: get_l3vni_vni
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - is_l3vni_oper_up
    - zl3vni_from_vrf
    linkageType: ''
    returnType: vni_t
    signature: vni_t get_l3vni_vni(vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_vxlan.c:5811,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_vxlan.c:5812,1
    - Dst: IS_ZL3VNI_SVD_BACKED
      Src: /src/frr/zebra/zebra_vxlan.c:5815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5816
      start: 5807
    functionDepth: 3
    functionLinenumber: 5807
    functionLinenumberEnd: 5816
    functionName: is_vrf_l3vni_svd_backed
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - IS_ZL3VNI_SVD_BACKED
    - is_l3vni_oper_up
    - zl3vni_from_vrf
    linkageType: ''
    returnType: bool
    signature: bool is_vrf_l3vni_svd_backed(vrf_id_t vrf_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_vxlan.c:5827,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:5831,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_vxlan.c:5834,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_vxlan.c:5836,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_vxlan.c:5837,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:5838,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_vxlan.c:5839,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_vxlan.c:5842,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_vxlan.c:5842,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5845,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_vxlan.c:5848,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_vxlan.c:5855,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - zvrf
    - sg
    - sg_str
    - cmd
    argTypes:
    - struct zebra_vrf*
    - struct prefix_sg*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5856
      start: 5820
    functionDepth: 1
    functionLinenumber: 5820
    functionLinenumberEnd: 5856
    functionName: zebra_vxlan_sg_send
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zserv_find_client
    - stream_new
    - zclient_create_header
    - stream_put
    - CHECK_FLAG
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - zebra_route_string
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zebra_vxlan_sg_send(struct zebra_vrf *zvrf,\n\t\tstruct prefix_sg
      *sg,\n\t\tchar *sg_str, uint16_t cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_2words
      Src: /src/frr/zebra/zebra_vxlan.c:5862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5864
      start: 5858
    functionDepth: 1
    functionLinenumber: 5858
    functionLinenumberEnd: 5864
    functionName: zebra_vxlan_sg_hash_key_make
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - jhash_2words
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zebra_vxlan_sg_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5873
      start: 5866
    functionDepth: 0
    functionLinenumber: 5866
    functionLinenumberEnd: 5873
    functionName: zebra_vxlan_sg_hash_eq
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_vxlan_sg_hash_eq(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_vxlan.c:5880,1
    - Dst: prefix_sg2str
      Src: /src/frr/zebra/zebra_vxlan.c:5884,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_vxlan.c:5886,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - zvrf
    - sg
    argTypes:
    - struct zebra_vrf*
    - struct prefix_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5892
      start: 5875
    functionDepth: 1
    functionLinenumber: 5875
    functionLinenumberEnd: 5892
    functionName: zebra_vxlan_sg_new
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - hash_get
    - prefix_sg2str
    - XCALLOC
    linkageType: ''
    returnType: struct zebra_vxlan_sg
    signature: "struct zebra_vxlan_sg *zebra_vxlan_sg_new(struct zebra_vrf *zvrf,\n\t\t\t\t\t\t
      struct prefix_sg *sg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - zvrf
    - sg
    argTypes:
    - struct zebra_vrf*
    - struct prefix_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5901
      start: 5894
    functionDepth: 1
    functionLinenumber: 5894
    functionLinenumberEnd: 5901
    functionName: zebra_vxlan_sg_find
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct zebra_vxlan_sg
    signature: "struct zebra_vxlan_sg *zebra_vxlan_sg_find(struct zebra_vrf *zvrf,\n\t\t\t\t\t\t
      \ struct prefix_sg *sg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_sg_find
      Src: /src/frr/zebra/zebra_vxlan.c:5910,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:5920,1
    - Dst: zebra_vxlan_sg_do_ref
      Src: /src/frr/zebra/zebra_vxlan.c:5921,1
    - Dst: zebra_vxlan_sg_new
      Src: /src/frr/zebra/zebra_vxlan.c:5926,1
    - Dst: zebra_vxlan_sg_send
      Src: /src/frr/zebra/zebra_vxlan.c:5928,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - zvrf
    - sg
    argTypes:
    - struct zebra_vrf*
    - struct prefix_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5932
      start: 5903
    functionDepth: 2
    functionLinenumber: 5903
    functionLinenumberEnd: 5932
    functionName: zebra_vxlan_sg_add
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - zebra_vxlan_sg_do_ref
    - memset
    - zebra_vxlan_sg_send
    - zebra_vxlan_sg_find
    - zebra_vxlan_sg_new
    linkageType: ''
    returnType: struct zebra_vxlan_sg
    signature: "struct zebra_vxlan_sg *zebra_vxlan_sg_add(struct zebra_vrf *zvrf,\n\t\t\t\t\t\t
      struct prefix_sg *sg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:5939,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_vxlan.c:5947,1
    - Dst: zebra_vxlan_sg_do_deref
      Src: /src/frr/zebra/zebra_vxlan.c:5948,1
    - Dst: zebra_vxlan_sg_send
      Src: /src/frr/zebra/zebra_vxlan.c:5951,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_vxlan.c:5954,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:5957,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_vxlan.c:5959,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct zebra_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5960
      start: 5934
    functionDepth: 2
    functionLinenumber: 5934
    functionLinenumberEnd: 5960
    functionName: zebra_vxlan_sg_del
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - memset
    - zebra_vxlan_sg_send
    - vrf_info_lookup
    - zebra_vxlan_sg_do_deref
    - zlog_debug
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_sg_del(struct zebra_vxlan_sg *vxlan_sg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_sg_find
      Src: /src/frr/zebra/zebra_vxlan.c:5972,1
    - Dst: zebra_vxlan_sg_del
      Src: /src/frr/zebra/zebra_vxlan.c:5980,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - zvrf
    - sip
    - mcast_grp
    argTypes:
    - struct zebra_vrf*
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5981
      start: 5962
    functionDepth: 3
    functionLinenumber: 5962
    functionLinenumberEnd: 5981
    functionName: zebra_vxlan_sg_do_deref
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zebra_vxlan_sg_find
    - zebra_vxlan_sg_del
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_sg_do_deref(struct zebra_vrf *zvrf,\n\t\tstruct in_addr
      sip, struct in_addr mcast_grp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_sg_add
      Src: /src/frr/zebra/zebra_vxlan.c:5994,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - zvrf
    - sip
    - mcast_grp
    argTypes:
    - struct zebra_vrf*
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5999
      start: 5983
    functionDepth: 3
    functionLinenumber: 5983
    functionLinenumberEnd: 5999
    functionName: zebra_vxlan_sg_do_ref
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - zebra_vxlan_sg_add
    linkageType: ''
    returnType: struct zebra_vxlan_sg
    signature: "struct zebra_vxlan_sg *zebra_vxlan_sg_do_ref(struct zebra_vrf *zvrf,\n\t\t\t\t\t\t
      \   struct in_addr sip,\n\t\t\t\t\t\t    struct in_addr mcast_grp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:6010,1
    - Dst: zebra_vxlan_sg_do_deref
      Src: /src/frr/zebra/zebra_vxlan.c:6014,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - local_vtep_ip
    - mcast_grp
    argTypes:
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6015
      start: 6001
    functionDepth: 4
    functionLinenumber: 6001
    functionLinenumberEnd: 6015
    functionName: zebra_vxlan_sg_deref
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 4
    functionsReached:
    - zebra_vxlan_sg_do_deref
    - vrf_info_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_vxlan_sg_deref(struct in_addr local_vtep_ip,\n\t\t\t  struct
      in_addr mcast_grp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:6025,1
    - Dst: zebra_vxlan_sg_do_ref
      Src: /src/frr/zebra/zebra_vxlan.c:6028,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - local_vtep_ip
    - mcast_grp
    argTypes:
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6029
      start: 6017
    functionDepth: 4
    functionLinenumber: 6017
    functionLinenumberEnd: 6029
    functionName: zebra_vxlan_sg_ref
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 4
    functionsReached:
    - zebra_vxlan_sg_do_ref
    - vrf_info_lookup
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_sg_ref(struct in_addr local_vtep_ip, struct in_addr
      mcast_grp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6040
      start: 6031
    functionDepth: 0
    functionLinenumber: 6031
    functionLinenumberEnd: 6040
    functionName: zebra_vxlan_xg_pre_cleanup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_xg_pre_cleanup(struct hash_bucket *bucket, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_sg_del
      Src: /src/frr/zebra/zebra_vxlan.c:6051,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6053
      start: 6042
    functionDepth: 3
    functionLinenumber: 6042
    functionLinenumberEnd: 6053
    functionName: zebra_vxlan_xg_post_cleanup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_sg_del
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_xg_post_cleanup(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_sg_del
      Src: /src/frr/zebra/zebra_vxlan.c:6059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6060
      start: 6055
    functionDepth: 3
    functionLinenumber: 6055
    functionLinenumberEnd: 6060
    functionName: zebra_vxlan_sg_cleanup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_sg_del
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_sg_cleanup(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6067,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6069,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6073
      start: 6062
    functionDepth: 1
    functionLinenumber: 6062
    functionLinenumberEnd: 6073
    functionName: zebra_vxlan_cleanup_sg_table
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 3
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_cleanup_sg_table(struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_sg_send
      Src: /src/frr/zebra/zebra_vxlan.c:6079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6081
      start: 6075
    functionDepth: 2
    functionLinenumber: 6075
    functionLinenumberEnd: 6081
    functionName: zebra_vxlan_sg_replay_send
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_sg_send
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_sg_replay_send(struct hash_bucket *bucket, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:6087,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:6089,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/zebra/zebra_vxlan.c:6091,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:6093,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6098,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6099
      start: 6084
    functionDepth: 1
    functionLinenumber: 6084
    functionLinenumberEnd: 6099
    functionName: zebra_vxlan_sg_replay
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - zlog_debug
    - EVPN_ENABLED
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_sg_replay(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6112,1
    - Dst: zl3vni_lookup
      Src: /src/frr/zebra/zebra_vxlan.c:6115,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6118,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_vxlan.c:6121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6124
      start: 6103
    functionDepth: 2
    functionLinenumber: 6103
    functionLinenumberEnd: 6124
    functionName: zebra_evpn_vrf_cfg_cleanup
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - zl3vni_lookup
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_vrf_cfg_cleanup(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_vxlan.c:6132,1
    - Dst: zebra_evpn_vrf_cfg_cleanup
      Src: /src/frr/zebra/zebra_vxlan.c:6135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6139
      start: 6127
    functionDepth: 3
    functionLinenumber: 6127
    functionLinenumberEnd: 6139
    functionName: zebra_evpn_bgp_cfg_clean_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    - zebra_evpn_vrf_cfg_cleanup
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_bgp_cfg_clean_up(struct zserv *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_vxlan.c:6143,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:6145,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_vxlan.c:6147,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_vxlan.c:6148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6152
      start: 6141
    functionDepth: 2
    functionLinenumber: 6141
    functionLinenumberEnd: 6152
    functionName: zebra_evpn_pim_cfg_clean_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - UNSET_FLAG
    - zlog_debug
    - zebra_vrf_get_evpn
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_pim_cfg_clean_up(struct zserv *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_bgp_cfg_clean_up
      Src: /src/frr/zebra/zebra_vxlan.c:6157,1
    - Dst: zebra_evpn_pim_cfg_clean_up
      Src: /src/frr/zebra/zebra_vxlan.c:6160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6163
      start: 6154
    functionDepth: 4
    functionLinenumber: 6154
    functionLinenumberEnd: 6163
    functionName: zebra_evpn_cfg_clean_up
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_pim_cfg_clean_up
    - zebra_evpn_bgp_cfg_clean_up
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_cfg_clean_up(struct zserv *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6171
      start: 6168
    functionDepth: 0
    functionLinenumber: 6168
    functionLinenumberEnd: 6171
    functionName: zebra_vxlan_handle_result
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_handle_result(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - set
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6177
      start: 6174
    functionDepth: 0
    functionLinenumber: 6174
    functionLinenumberEnd: 6177
    functionName: zebra_vxlan_set_accept_bgp_seq
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_vxlan_set_accept_bgp_seq(bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6182
      start: 6179
    functionDepth: 0
    functionLinenumber: 6179
    functionLinenumberEnd: 6182
    functionName: zebra_vxlan_get_accept_bgp_seq
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_vxlan_get_accept_bgp_seq(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_vxlan.c:6187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6188
      start: 6185
    functionDepth: 1
    functionLinenumber: 6185
    functionLinenumberEnd: 6188
    functionName: zebra_evpn_init
    functionSourceFile: /src/frr/zebra/zebra_vxlan.c
    functionUses: 2
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_affinitymap.c:35,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:37,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:40,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:42,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - affmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 51
    functionName: zebra_affinity_map_check_use
    functionSourceFile: /src/frr/zebra/zebra_affinitymap.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - yang_dnode_exists
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool zebra_affinity_map_check_use(const char *affmap_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:37,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:40,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:42,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/zebra_affinitymap.c
    functionUses: 21
    functionsReached:
    - yang_dnode_exists
    - snprintf
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_affinitymap.c:67,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:69,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:72,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:74,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:78,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/zebra_affinitymap.c:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - affmap_name
    - new_pos
    argTypes:
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 88
    functionName: zebra_affinity_map_check_update
    functionSourceFile: /src/frr/zebra/zebra_affinitymap.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - RB_FOREACH
    - yang_dnode_exists
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool zebra_affinity_map_check_update(const char *affmap_name,\n\t\t\t\t\t
      \   uint16_t new_pos)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:69,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:72,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:74,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:78,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/zebra_affinitymap.c:80,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 85
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/zebra_affinitymap.c
    functionUses: 21
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_exists
    - snprintf
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_affinitymap.c:99,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:101,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:104,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:106,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:110,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/zebra_affinitymap.c:112,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/zebra_affinitymap.c:116,1
    - Dst: admin_group_unset
      Src: /src/frr/zebra/zebra_affinitymap.c:119,1
    - Dst: admin_group_set
      Src: /src/frr/zebra/zebra_affinitymap.c:121,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_affinitymap.c:129,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_affinitymap.c:131,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/zebra_affinitymap.c:132,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 3
    argNames:
    - affmap_name
    - old_pos
    - new_pos
    argTypes:
    - char*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 135
    functionName: zebra_affinity_map_update
    functionSourceFile: /src/frr/zebra/zebra_affinitymap.c
    functionUses: 0
    functionsReached:
    - snprintf
    - admin_group_unset
    - if_is_operative
    - if_link_params_get
    - admin_group_set
    - UNSET_PARAM
    - zebra_interface_parameters_update
    - yang_dnode_get_enum
    - RB_FOREACH
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void zebra_affinity_map_update(const char *affmap_name, uint16_t old_pos,\n\t\t\t\t
      \     uint16_t new_pos)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:101,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:104,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_affinitymap.c:106,1
    - Dst: yang_dnode_exists
      Src: /src/frr/zebra/zebra_affinitymap.c:110,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/zebra/zebra_affinitymap.c:112,1
    - Dst: if_link_params_get
      Src: /src/frr/zebra/zebra_affinitymap.c:116,1
    - Dst: admin_group_unset
      Src: /src/frr/zebra/zebra_affinitymap.c:119,1
    - Dst: admin_group_set
      Src: /src/frr/zebra/zebra_affinitymap.c:121,1
    - Dst: UNSET_PARAM
      Src: /src/frr/zebra/zebra_affinitymap.c:129,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_affinitymap.c:131,1
    - Dst: zebra_interface_parameters_update
      Src: /src/frr/zebra/zebra_affinitymap.c:132,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 133
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/zebra_affinitymap.c
    functionUses: 21
    functionsReached:
    - snprintf
    - admin_group_unset
    - if_link_params_get
    - admin_group_set
    - UNSET_PARAM
    - zebra_interface_parameters_update
    - yang_dnode_get_enum
    - if_is_operative
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: affinity_map_init
      Src: /src/frr/zebra/zebra_affinitymap.c:139,1
    - Dst: affinity_map_set_check_use_hook
      Src: /src/frr/zebra/zebra_affinitymap.c:141,1
    - Dst: affinity_map_set_check_update_hook
      Src: /src/frr/zebra/zebra_affinitymap.c:142,1
    - Dst: affinity_map_set_update_hook
      Src: /src/frr/zebra/zebra_affinitymap.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: zebra_affinity_map_init
    functionSourceFile: /src/frr/zebra/zebra_affinitymap.c
    functionUses: 1
    functionsReached:
    - affinity_map_set_update_hook
    - affinity_map_set_check_use_hook
    - affinity_map_init
    - affinity_map_set_check_update_hook
    linkageType: ''
    returnType: void
    signature: void zebra_affinity_map_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:49,1
    - Dst: zlog_hexdump
      Src: /src/frr/zebra/zebra_mlag_private.c:50,1
    - Dst: write
      Src: /src/frr/zebra/zebra_mlag_private.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 54
    functionName: zebra_mlag_private_write_data
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - zlog_hexdump
    - zlog_debug
    - write
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_private_write_data(uint8_t *data, uint32_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_mlag_private.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: zebra_mlag_sched_read
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_sched_read(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/frr/zebra/zebra_mlag_private.c:80,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:84,1
    - Dst: close
      Src: /src/frr/zebra/zebra_mlag_private.c:86,1
    - Dst: zebra_mlag_handle_process_state
      Src: /src/frr/zebra/zebra_mlag_private.c:87,1
    - Dst: zebra_mlag_sched_read
      Src: /src/frr/zebra/zebra_mlag_private.c:93,1
    - Dst: ntohl
      Src: /src/frr/zebra/zebra_mlag_private.c:101,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_mlag_private.c:113,1
    - Dst: read
      Src: /src/frr/zebra/zebra_mlag_private.c:118,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:122,1
    - Dst: close
      Src: /src/frr/zebra/zebra_mlag_private.c:124,1
    - Dst: zebra_mlag_handle_process_state
      Src: /src/frr/zebra/zebra_mlag_private.c:125,1
    - Dst: zebra_mlag_sched_read
      Src: /src/frr/zebra/zebra_mlag_private.c:131,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:137,1
    - Dst: zlog_hexdump
      Src: /src/frr/zebra/zebra_mlag_private.c:139,1
    - Dst: zebra_mlag_process_mlag_data
      Src: /src/frr/zebra/zebra_mlag_private.c:145,1
    - Dst: zebra_mlag_reset_read_buffer
      Src: /src/frr/zebra/zebra_mlag_private.c:149,1
    - Dst: zebra_mlag_sched_read
      Src: /src/frr/zebra/zebra_mlag_private.c:151,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (tot_len < ZEBRA_MLAG_BUF_LIMIT)
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/frr/zebra/zebra_mlag_private.c
    constantsTouched: []
    func_position:
      end: 152
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 152
    functionName: zebra_mlag_read
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - zlog_hexdump
    - read
    - zebra_mlag_handle_process_state
    - close
    - zebra_mlag_process_mlag_data
    - zebra_mlag_reset_read_buffer
    - zlog_debug
    - zebra_mlag_sched_read
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_read(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_mlag_private.c:163,1
    - Dst: socket
      Src: /src/frr/zebra/zebra_mlag_private.c:165,1
    - Dst: connect
      Src: /src/frr/zebra/zebra_mlag_private.c:169,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:171,1
    - Dst: close
      Src: /src/frr/zebra/zebra_mlag_private.c:174,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_mlag_private.c:176,1
    - Dst: set_nonblocking
      Src: /src/frr/zebra/zebra_mlag_private.c:181,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:184,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_mlag_private.c:187,1
    - Dst: zebra_mlag_handle_process_state
      Src: /src/frr/zebra/zebra_mlag_private.c:192,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 193
    functionName: zebra_mlag_connect
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - connect
    - strlcpy
    - socket
    - event_add_read
    - zebra_mlag_handle_process_state
    - close
    - zlog_debug
    - set_nonblocking
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_connect(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_mlag_private.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 203
    functionName: zebra_mlag_private_monitor_state
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_private_monitor_state(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:211,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:218,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_mlag_private.c:228,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 232
    functionName: zebra_mlag_private_open_channel
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_private_open_channel(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_mlag_private.c:241,1
    - Dst: zebra_mlag_send_deregister
      Src: /src/frr/zebra/zebra_mlag_private.c:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 253
    functionName: zebra_mlag_private_close_channel
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_mlag_send_deregister
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_private_close_channel(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/zebra/zebra_mlag_private.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: zebra_mlag_private_cleanup_data
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_private_cleanup_data(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_mlag_private.c:267,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_mlag_private.c:269,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_mlag_private.c:271,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_mlag_private.c:273,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_mlag_private.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 278
    functionName: zebra_mlag_module_init
    functionSourceFile: /src/frr/zebra/zebra_mlag_private.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int zebra_mlag_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - r
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: xmittime
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: xmittime(r, s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/zebra/tc_netlink.c:45,1
    - Dst: fscanf
      Src: /src/frr/zebra/tc_netlink.c:50,1
    - Dst: fclose
      Src: /src/frr/zebra/tc_netlink.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 58
    functionName: tc_get_freq
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - fopen
    - fscanf
    - fclose
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t tc_get_freq(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xmittime
      Src: /src/frr/zebra/tc_netlink.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - ratespec
    - table
    - mtu
    argTypes:
    - struct tc_ratespec*
    - uint32_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 80
    functionName: tc_calc_rate_table
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - xmittime
    linkageType: ''
    returnType: void
    signature: "void tc_calc_rate_table(struct tc_ratespec *ratespec, uint32_t *table,\n\t\t\t
      \      uint32_t mtu)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/tc_netlink.c:93,1
    - Dst: memcpy
      Src: /src/frr/zebra/tc_netlink.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - prefix
    - addr
    argTypes:
    - struct prefix*
    - struct inet_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 106
    functionName: tc_flower_get_inet_prefix
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int tc_flower_get_inet_prefix(const struct prefix *prefix,\n\t\t\t\t
      \    struct inet_prefix *addr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/tc_netlink.c:129,1
    - Dst: htonl
      Src: /src/frr/zebra/tc_netlink.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - prefix
    - addr
    argTypes:
    - struct prefix*
    - struct inet_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 146
    functionName: tc_flower_get_inet_mask
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - htonl
    - memset
    linkageType: ''
    returnType: int
    signature: "int tc_flower_get_inet_mask(const struct prefix *prefix,\n\t\t\t\t
      \  struct inet_prefix *addr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/tc_netlink.c:168,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/tc_netlink.c:168,1
    - Dst: memset
      Src: /src/frr/zebra/tc_netlink.c:170,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:172,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/tc_netlink.c:182,1
    - Dst: TC_H_MAKE
      Src: /src/frr/zebra/tc_netlink.c:188,1
    - Dst: dplane_ctx_tc_qdisc_get_kind_str
      Src: /src/frr/zebra/tc_netlink.c:190,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:192,1
    - Dst: strlen
      Src: /src/frr/zebra/tc_netlink.c:193,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/tc_netlink.c:195,1
    - Dst: dplane_ctx_tc_qdisc_get_kind
      Src: /src/frr/zebra/tc_netlink.c:197,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:203,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/tc_netlink.c:214,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/tc_netlink.c:219,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 4
    argNames:
    - cmd
    - ctx
    - data
    - datalen
    argTypes:
    - int
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 220
    functionName: netlink_qdisc_msg_encode
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - strlen
    - nl_attr_nest_end
    - memset
    - TC_H_MAKE
    - NLMSG_ALIGN
    - kernel_netlink_nlsock_lookup
    - dplane_ctx_tc_qdisc_get_kind
    - dplane_ctx_get_ns_sock
    - nl_attr_put
    - nl_attr_nest
    - dplane_ctx_get_ifindex
    - NLMSG_LENGTH
    - dplane_ctx_tc_qdisc_get_kind_str
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_qdisc_msg_encode(int cmd, struct zebra_dplane_ctx
      *ctx,\n\t\t\t\t\tvoid *data, size_t datalen)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/tc_netlink.c:228,1
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/tc_netlink.c:244,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/tc_netlink.c:244,1
    - Dst: memset
      Src: /src/frr/zebra/tc_netlink.c:246,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:248,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/tc_netlink.c:259,1
    - Dst: TC_H_MAKE
      Src: /src/frr/zebra/tc_netlink.c:261,1
    - Dst: dplane_ctx_tc_class_get_handle
      Src: /src/frr/zebra/tc_netlink.c:262,1
    - Dst: TC_H_MAKE
      Src: /src/frr/zebra/tc_netlink.c:263,1
    - Dst: dplane_ctx_tc_class_get_kind_str
      Src: /src/frr/zebra/tc_netlink.c:266,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/tc_netlink.c:269,1
    - Dst: dplane_ctx_tc_class_get_handle
      Src: /src/frr/zebra/tc_netlink.c:271,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:273,1
    - Dst: strlen
      Src: /src/frr/zebra/tc_netlink.c:274,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/tc_netlink.c:276,1
    - Dst: dplane_ctx_tc_class_get_kind
      Src: /src/frr/zebra/tc_netlink.c:278,1
    - Dst: dplane_ctx_tc_class_get_rate
      Src: /src/frr/zebra/tc_netlink.c:282,1
    - Dst: dplane_ctx_tc_class_get_ceil
      Src: /src/frr/zebra/tc_netlink.c:283,1
    - Dst: MAX
      Src: /src/frr/zebra/tc_netlink.c:293,1
    - Dst: tc_get_freq
      Src: /src/frr/zebra/tc_netlink.c:298,1
    - Dst: tc_get_freq
      Src: /src/frr/zebra/tc_netlink.c:299,1
    - Dst: tc_calc_rate_table
      Src: /src/frr/zebra/tc_netlink.c:304,1
    - Dst: tc_calc_rate_table
      Src: /src/frr/zebra/tc_netlink.c:305,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:311,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:316,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:320,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:323,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:325,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/tc_netlink.c:333,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/tc_netlink.c:336,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 51
    argCount: 4
    argNames:
    - cmd
    - ctx
    - data
    - datalen
    argTypes:
    - int
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 337
    functionName: netlink_tclass_msg_encode
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - strlen
    - nl_attr_nest_end
    - kernel_netlink_nlsock_lookup
    - dplane_ctx_get_ns_sock
    - tc_calc_rate_table
    - dplane_ctx_tc_class_get_ceil
    - dplane_ctx_tc_class_get_handle
    - dplane_ctx_get_op
    - memset
    - TC_H_MAKE
    - zlog_debug
    - tc_get_freq
    - nl_attr_put
    - nl_attr_nest
    - NLMSG_LENGTH
    - MAX
    - NLMSG_ALIGN
    - dplane_ctx_tc_class_get_rate
    - dplane_ctx_tc_class_get_kind_str
    - dplane_ctx_get_ifindex
    - dplane_ctx_tc_class_get_kind
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_tclass_msg_encode(int cmd, struct zebra_dplane_ctx
      *ctx,\n\t\t\t\t\t void *data, size_t datalen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ip_proto
    - src
    argTypes:
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 349
    functionName: netlink_tfilter_flower_port_type
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int netlink_tfilter_flower_port_type(uint8_t ip_proto, bool src)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:357,1
    - Dst: dplane_ctx_tc_filter_get_eth_proto
      Src: /src/frr/zebra/tc_netlink.c:357,1
    - Dst: dplane_ctx_tc_filter_get_filter_bm
      Src: /src/frr/zebra/tc_netlink.c:358,1
    - Dst: dplane_ctx_tc_filter_get_src_ip
      Src: /src/frr/zebra/tc_netlink.c:362,1
    - Dst: tc_flower_get_inet_prefix
      Src: /src/frr/zebra/tc_netlink.c:364,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:367,1
    - Dst: tc_flower_get_inet_mask
      Src: /src/frr/zebra/tc_netlink.c:372,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:375,1
    - Dst: dplane_ctx_tc_filter_get_dst_ip
      Src: /src/frr/zebra/tc_netlink.c:384,1
    - Dst: tc_flower_get_inet_prefix
      Src: /src/frr/zebra/tc_netlink.c:386,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:389,1
    - Dst: tc_flower_get_inet_mask
      Src: /src/frr/zebra/tc_netlink.c:394,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:397,1
    - Dst: nl_attr_put8
      Src: /src/frr/zebra/tc_netlink.c:405,1
    - Dst: dplane_ctx_tc_filter_get_ip_proto
      Src: /src/frr/zebra/tc_netlink.c:406,1
    - Dst: dplane_ctx_tc_filter_get_src_port_min
      Src: /src/frr/zebra/tc_netlink.c:412,1
    - Dst: dplane_ctx_tc_filter_get_src_port_max
      Src: /src/frr/zebra/tc_netlink.c:413,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/tc_netlink.c:416,1
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:417,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/tc_netlink.c:419,1
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:420,1
    - Dst: netlink_tfilter_flower_port_type
      Src: /src/frr/zebra/tc_netlink.c:422,1
    - Dst: dplane_ctx_tc_filter_get_ip_proto
      Src: /src/frr/zebra/tc_netlink.c:423,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/tc_netlink.c:428,1
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:428,1
    - Dst: dplane_ctx_tc_filter_get_dst_port_min
      Src: /src/frr/zebra/tc_netlink.c:433,1
    - Dst: dplane_ctx_tc_filter_get_dst_port_max
      Src: /src/frr/zebra/tc_netlink.c:434,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/tc_netlink.c:437,1
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:438,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/tc_netlink.c:440,1
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:441,1
    - Dst: netlink_tfilter_flower_port_type
      Src: /src/frr/zebra/tc_netlink.c:443,1
    - Dst: dplane_ctx_tc_filter_get_ip_proto
      Src: /src/frr/zebra/tc_netlink.c:444,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/tc_netlink.c:449,1
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:449,1
    - Dst: nl_attr_put8
      Src: /src/frr/zebra/tc_netlink.c:454,1
    - Dst: dplane_ctx_tc_filter_get_dsfield
      Src: /src/frr/zebra/tc_netlink.c:455,1
    - Dst: nl_attr_put8
      Src: /src/frr/zebra/tc_netlink.c:456,1
    - Dst: dplane_ctx_tc_filter_get_dsfield_mask
      Src: /src/frr/zebra/tc_netlink.c:457,1
    - Dst: TC_H_MAKE
      Src: /src/frr/zebra/tc_netlink.c:460,1
    - Dst: dplane_ctx_tc_filter_get_classid
      Src: /src/frr/zebra/tc_netlink.c:461,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/tc_netlink.c:462,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/tc_netlink.c:464,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/tc_netlink.c:466,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 3
    argNames:
    - n
    - datalen
    - ctx
    argTypes:
    - struct nlmsghdr*
    - size_t
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 467
    functionName: netlink_tfilter_flower_put_options
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_tc_filter_get_ip_proto
    - htons
    - tc_flower_get_inet_mask
    - dplane_ctx_tc_filter_get_dst_port_max
    - nl_attr_put8
    - dplane_ctx_tc_filter_get_src_ip
    - tc_flower_get_inet_prefix
    - TC_H_MAKE
    - dplane_ctx_tc_filter_get_dst_ip
    - netlink_tfilter_flower_port_type
    - dplane_ctx_tc_filter_get_eth_proto
    - dplane_ctx_tc_filter_get_src_port_max
    - dplane_ctx_tc_filter_get_dst_port_min
    - dplane_ctx_tc_filter_get_classid
    - nl_attr_put
    - dplane_ctx_tc_filter_get_dsfield
    - nl_attr_put16
    - nl_attr_put32
    - dplane_ctx_tc_filter_get_src_port_min
    - dplane_ctx_tc_filter_get_filter_bm
    - dplane_ctx_tc_filter_get_dsfield_mask
    linkageType: ''
    returnType: void
    signature: "void netlink_tfilter_flower_put_options(struct nlmsghdr *n,\n\t\t\t\t\t
      \      size_t datalen,\n\t\t\t\t\t       struct zebra_dplane_ctx *ctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/tc_netlink.c:475,1
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/tc_netlink.c:494,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/tc_netlink.c:494,1
    - Dst: memset
      Src: /src/frr/zebra/tc_netlink.c:496,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:498,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/tc_netlink.c:509,1
    - Dst: dplane_ctx_tc_filter_get_priority
      Src: /src/frr/zebra/tc_netlink.c:511,1
    - Dst: htons
      Src: /src/frr/zebra/tc_netlink.c:512,1
    - Dst: dplane_ctx_tc_filter_get_eth_proto
      Src: /src/frr/zebra/tc_netlink.c:512,1
    - Dst: TC_H_MAKE
      Src: /src/frr/zebra/tc_netlink.c:514,1
    - Dst: dplane_ctx_tc_filter_get_handle
      Src: /src/frr/zebra/tc_netlink.c:515,1
    - Dst: TC_H_MAKE
      Src: /src/frr/zebra/tc_netlink.c:516,1
    - Dst: dplane_ctx_tc_filter_get_kind_str
      Src: /src/frr/zebra/tc_netlink.c:518,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/tc_netlink.c:521,1
    - Dst: strlen
      Src: /src/frr/zebra/tc_netlink.c:522,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/tc_netlink.c:524,1
    - Dst: dplane_ctx_tc_filter_get_handle
      Src: /src/frr/zebra/tc_netlink.c:528,1
    - Dst: dplane_ctx_tc_filter_get_filter_bm
      Src: /src/frr/zebra/tc_netlink.c:529,1
    - Dst: dplane_ctx_tc_filter_get_ip_proto
      Src: /src/frr/zebra/tc_netlink.c:530,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/tc_netlink.c:532,1
    - Dst: dplane_ctx_tc_filter_get_kind
      Src: /src/frr/zebra/tc_netlink.c:533,1
    - Dst: netlink_tfilter_flower_put_options
      Src: /src/frr/zebra/tc_netlink.c:535,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/tc_netlink.c:542,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/tc_netlink.c:545,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 4
    argNames:
    - cmd
    - ctx
    - data
    - datalen
    argTypes:
    - int
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 472
    functionDepth: 4
    functionLinenumber: 472
    functionLinenumberEnd: 546
    functionName: netlink_tfilter_msg_encode
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - strlen
    - dplane_ctx_tc_filter_get_ip_proto
    - nl_attr_nest_end
    - htons
    - kernel_netlink_nlsock_lookup
    - dplane_ctx_get_ns_sock
    - dplane_ctx_get_op
    - memset
    - TC_H_MAKE
    - zlog_debug
    - dplane_ctx_tc_filter_get_eth_proto
    - netlink_tfilter_flower_put_options
    - dplane_ctx_tc_filter_get_priority
    - dplane_ctx_tc_filter_get_handle
    - nl_attr_put
    - nl_attr_nest
    - NLMSG_LENGTH
    - dplane_ctx_tc_filter_get_kind
    - NLMSG_ALIGN
    - dplane_ctx_tc_filter_get_kind_str
    - dplane_ctx_tc_filter_get_filter_bm
    - dplane_ctx_get_ifindex
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_tfilter_msg_encode(int cmd, struct zebra_dplane_ctx
      *ctx,\n\t\t\t\t\t  void *data, size_t datalen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_qdisc_msg_encode
      Src: /src/frr/zebra/tc_netlink.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 548
    functionDepth: 4
    functionLinenumber: 548
    functionLinenumberEnd: 552
    functionName: netlink_newqdisc_msg_encoder
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_qdisc_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_newqdisc_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \   void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_qdisc_msg_encode
      Src: /src/frr/zebra/tc_netlink.c:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 554
    functionDepth: 4
    functionLinenumber: 554
    functionLinenumberEnd: 558
    functionName: netlink_delqdisc_msg_encoder
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_qdisc_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_delqdisc_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \   void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_tclass_msg_encode
      Src: /src/frr/zebra/tc_netlink.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 560
    functionDepth: 4
    functionLinenumber: 560
    functionLinenumberEnd: 564
    functionName: netlink_newtclass_msg_encoder
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_tclass_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_newtclass_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \    void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_tclass_msg_encode
      Src: /src/frr/zebra/tc_netlink.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 566
    functionDepth: 4
    functionLinenumber: 566
    functionLinenumberEnd: 570
    functionName: netlink_deltclass_msg_encoder
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_tclass_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_deltclass_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \    void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_tfilter_msg_encode
      Src: /src/frr/zebra/tc_netlink.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 572
    functionDepth: 5
    functionLinenumber: 572
    functionLinenumberEnd: 576
    functionName: netlink_newtfilter_msg_encoder
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_tfilter_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_newtfilter_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \     void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_tfilter_msg_encode
      Src: /src/frr/zebra/tc_netlink.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 578
    functionDepth: 5
    functionLinenumber: 578
    functionLinenumberEnd: 582
    functionName: netlink_deltfilter_msg_encoder
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_tfilter_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_deltfilter_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \     void *buf, size_t buflen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/tc_netlink.c:591,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:594,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:597,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 584
    functionDepth: 7
    functionLinenumber: 584
    functionLinenumberEnd: 604
    functionName: netlink_put_tc_qdisc_update_msg
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    - dplane_ctx_get_op
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_tc_qdisc_update_msg(struct nl_batch
      *bth,\n\t\t\t\tstruct zebra_dplane_ctx *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/tc_netlink.c:613,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:616,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 606
    functionDepth: 7
    functionLinenumber: 606
    functionLinenumberEnd: 626
    functionName: netlink_put_tc_class_update_msg
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    - dplane_ctx_get_op
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_tc_class_update_msg(struct nl_batch
      *bth,\n\t\t\t\tstruct zebra_dplane_ctx *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/tc_netlink.c:635,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:638,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:648,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:650,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/tc_netlink.c:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 628
    functionDepth: 7
    functionLinenumber: 628
    functionLinenumberEnd: 660
    functionName: netlink_put_tc_filter_update_msg
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    - dplane_ctx_get_op
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_tc_filter_update_msg(struct nl_batch
      *bth,\n\t\t\t\t struct zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/tc_netlink.c:673,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:676,1
    - Dst: netlink_request
      Src: /src/frr/zebra/tc_netlink.c:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - zns
    - family
    - type
    - ifindex
    argTypes:
    - struct zebra_ns*
    - int
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 681
    functionName: netlink_request_filters
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_request_filters(struct zebra_ns *zns, int family, int
      type,\n\t\t\t\t   ifindex_t ifindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/tc_netlink.c:693,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:696,1
    - Dst: netlink_request
      Src: /src/frr/zebra/tc_netlink.c:699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - zns
    - family
    - type
    argTypes:
    - struct zebra_ns*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 686
    functionDepth: 3
    functionLinenumber: 686
    functionLinenumberEnd: 700
    functionName: netlink_request_qdiscs
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: int netlink_request_qdiscs(struct zebra_ns *zns, int family, int type)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/tc_netlink.c:712,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:714,1
    - Dst: zlog_err
      Src: /src/frr/zebra/tc_netlink.c:717,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:720,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/tc_netlink.c:724,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/tc_netlink.c:725,1
    - Dst: TCA_RTA
      Src: /src/frr/zebra/tc_netlink.c:725,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/tc_netlink.c:727,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/tc_netlink.c:728,1
    - Dst: tc_qdisc_str2kind
      Src: /src/frr/zebra/tc_netlink.c:730,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/tc_netlink.c:747,1
    - Dst: TC_H_MAJ
      Src: /src/frr/zebra/tc_netlink.c:757,1
    - Dst: dplane_tc_qdisc_uninstall
      Src: /src/frr/zebra/tc_netlink.c:760,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/tc_netlink.c:762,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 702
    functionDepth: 3
    functionLinenumber: 702
    functionLinenumberEnd: 772
    functionName: netlink_qdisc_change
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_parse_rtattr
    - netlink_parse_rtattr_nested
    - NLMSG_DATA
    - zlog_err
    - TC_H_MAJ
    - TCA_RTA
    - zlog_debug
    - RTA_DATA
    - dplane_tc_qdisc_uninstall
    - tc_qdisc_str2kind
    - frrtrace
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int netlink_qdisc_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/tc_netlink.c:781,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:783,1
    - Dst: zlog_err
      Src: /src/frr/zebra/tc_netlink.c:786,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:789,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/tc_netlink.c:793,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/tc_netlink.c:794,1
    - Dst: TCA_RTA
      Src: /src/frr/zebra/tc_netlink.c:794,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/tc_netlink.c:800,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 774
    functionDepth: 3
    functionLinenumber: 774
    functionLinenumberEnd: 808
    functionName: netlink_tclass_change
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_parse_rtattr
    - netlink_parse_rtattr_nested
    - NLMSG_DATA
    - zlog_err
    - TCA_RTA
    - frrtrace
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int netlink_tclass_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/tc_netlink.c:817,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:819,1
    - Dst: zlog_err
      Src: /src/frr/zebra/tc_netlink.c:822,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/tc_netlink.c:825,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/tc_netlink.c:829,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/tc_netlink.c:830,1
    - Dst: TCA_RTA
      Src: /src/frr/zebra/tc_netlink.c:830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 810
    functionDepth: 2
    functionLinenumber: 810
    functionLinenumberEnd: 833
    functionName: netlink_tfilter_change
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_parse_rtattr
    - NLMSG_DATA
    - zlog_err
    - TCA_RTA
    - frrtrace
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int netlink_tfilter_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/tc_netlink.c:840,1
    - Dst: netlink_request_qdiscs
      Src: /src/frr/zebra/tc_netlink.c:842,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/tc_netlink.c:846,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 835
    functionDepth: 5
    functionLinenumber: 835
    functionLinenumberEnd: 852
    functionName: netlink_qdisc_read
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_request_qdiscs
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int netlink_qdisc_read(struct zebra_ns *zns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/tc_netlink.c:859,1
    - Dst: netlink_request_filters
      Src: /src/frr/zebra/tc_netlink.c:861,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/tc_netlink.c:865,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - zns
    - ifindex
    argTypes:
    - struct zebra_ns*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 854
    functionDepth: 5
    functionLinenumber: 854
    functionLinenumberEnd: 871
    functionName: netlink_tfilter_read_for_interface
    functionSourceFile: /src/frr/zebra/tc_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request_filters
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int netlink_tfilter_read_for_interface(struct zebra_ns *zns, ifindex_t
      ifindex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/zebra/zebra_errors.c:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 800
    functionName: zebra_error_init
    functionSourceFile: /src/frr/zebra/zebra_errors.c
    functionUses: 2
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void zebra_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - protocol
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: IS_BFD_ENABLED_PROTOCOL
    functionSourceFile: /src/frr/zebra/zebra_ptm.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_BFD_ENABLED_PROTOCOL(protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_opaque.c:119,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/zebra_opaque.c:121,1
    - Dst: stream_fifo_init
      Src: /src/frr/zebra/zebra_opaque.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: zebra_opaque_init
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_init
    - stream_fifo_init
    - memset
    linkageType: ''
    returnType: void
    signature: void zebra_opaque_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:139,1
    - Dst: frr_pthread_new
      Src: /src/frr/zebra/zebra_opaque.c:142,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/zebra_opaque.c:148,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_opaque.c:151,1
    - Dst: frr_pthread_run
      Src: /src/frr/zebra/zebra_opaque.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 156
    functionName: zebra_opaque_start
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - frr_pthread_run
    - atomic_store_explicit
    - zlog_debug
    - frr_pthread_new
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zebra_opaque_start(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:164,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/zebra_opaque.c:166,1
    - Dst: frr_pthread_stop
      Src: /src/frr/zebra/zebra_opaque.c:168,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/zebra/zebra_opaque.c:170,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 174
    functionName: zebra_opaque_stop
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - atomic_store_explicit
    - zlog_debug
    - frr_pthread_stop
    - frr_pthread_destroy
    linkageType: ''
    returnType: void
    signature: void zebra_opaque_stop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:185,1
    - Dst: opq_regh_pop
      Src: /src/frr/zebra/zebra_opaque.c:188,1
    - Dst: opq_client_free
      Src: /src/frr/zebra/zebra_opaque.c:192,1
    - Dst: opq_reg_free
      Src: /src/frr/zebra/zebra_opaque.c:196,1
    - Dst: opq_regh_fini
      Src: /src/frr/zebra/zebra_opaque.c:199,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/zebra_opaque.c:201,1
    - Dst: stream_fifo_deinit
      Src: /src/frr/zebra/zebra_opaque.c:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 203
    functionName: zebra_opaque_finish
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - opq_regh_fini
    - opq_client_free
    - opq_reg_free
    - opq_regh_pop
    - zlog_debug
    - pthread_mutex_destroy
    - stream_fifo_deinit
    linkageType: ''
    returnType: void
    signature: void zebra_opaque_finish(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 223
    functionName: zebra_opaque_handles_msgid
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_opaque_handles_msgid(uint16_t id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zebra_opaque.c:237,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zebra_opaque.c:238,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zebra_opaque.c:240,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zebra_opaque.c:242,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:249,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_opaque.c:251,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - batch
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 256
    functionName: zebra_opaque_enqueue_batch
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 0
    functionsReached:
    - stream_fifo_push
    - frr_with_mutex
    - zlog_debug
    - stream_fifo_pop
    - event_add_event
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_opaque_enqueue_batch(struct stream_fifo *batch)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_init
      Src: /src/frr/zebra/zebra_opaque.c:268,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_opaque.c:271,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zebra_opaque.c:278,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zebra_opaque.c:281,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zebra_opaque.c:285,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zebra_opaque.c:292,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_opaque.c:297,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_opaque.c:300,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:306,1
    - Dst: dispatch_opq_messages
      Src: /src/frr/zebra/zebra_opaque.c:313,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_opaque.c:318,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_opaque.c:320,1
    - Dst: stream_fifo_deinit
      Src: /src/frr/zebra/zebra_opaque.c:325,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 326
    functionName: process_messages
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 0
    functionsReached:
    - stream_fifo_push
    - frr_with_mutex
    - dispatch_opq_messages
    - atomic_fetch_add_explicit
    - stream_fifo_head
    - zlog_debug
    - atomic_load_explicit
    - stream_fifo_pop
    - stream_fifo_deinit
    - stream_fifo_init
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void process_messages(struct event *event)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zebra_opaque.c:342,1
    - Dst: zapi_parse_header
      Src: /src/frr/zebra/zebra_opaque.c:343,1
    - Dst: handle_opq_registration
      Src: /src/frr/zebra/zebra_opaque.c:348,1
    - Dst: handle_opq_unregistration
      Src: /src/frr/zebra/zebra_opaque.c:351,1
    - Dst: zclient_opaque_decode
      Src: /src/frr/zebra/zebra_opaque.c:362,1
    - Dst: opq_reg_lookup
      Src: /src/frr/zebra/zebra_opaque.c:367,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:370,1
    - Dst: stream_set_getp
      Src: /src/frr/zebra/zebra_opaque.c:376,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_opaque.c:382,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:391,1
    - Dst: opq_client2str
      Src: /src/frr/zebra/zebra_opaque.c:393,1
    - Dst: stream_dup
      Src: /src/frr/zebra/zebra_opaque.c:400,1
    - Dst: zserv_acquire_client
      Src: /src/frr/zebra/zebra_opaque.c:408,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:414,1
    - Dst: opq_client2str
      Src: /src/frr/zebra/zebra_opaque.c:417,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_opaque.c:426,1
    - Dst: zserv_release_client
      Src: /src/frr/zebra/zebra_opaque.c:432,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:436,1
    - Dst: opq_client2str
      Src: /src/frr/zebra/zebra_opaque.c:438,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_opaque.c:443,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_opaque.c:447,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_opaque.c:454,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 62
    argCount: 1
    argNames:
    - msg_fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 458
    functionName: dispatch_opq_messages
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - opq_client2str
    - stream_set_getp
    - stream_free
    - zserv_acquire_client
    - CHECK_FLAG
    - zclient_opaque_decode
    - handle_opq_registration
    - zserv_send_message
    - handle_opq_unregistration
    - stream_fifo_pop
    - opq_reg_lookup
    - zlog_debug
    - zserv_release_client
    - zapi_parse_header
    - stream_dup
    linkageType: ''
    returnType: int
    signature: int dispatch_opq_messages(struct stream_fifo *msg_fifo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_opaque.c:472,1
    - Dst: zapi_opaque_reg_decode
      Src: /src/frr/zebra/zebra_opaque.c:474,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_opaque.c:479,1
    - Dst: opq_regh_find
      Src: /src/frr/zebra/zebra_opaque.c:483,1
    - Dst: opq_client_match
      Src: /src/frr/zebra/zebra_opaque.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:495,1
    - Dst: opq_client2str
      Src: /src/frr/zebra/zebra_opaque.c:497,1
    - Dst: opq_client_alloc
      Src: /src/frr/zebra/zebra_opaque.c:502,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:505,1
    - Dst: opq_client2str
      Src: /src/frr/zebra/zebra_opaque.c:507,1
    - Dst: opq_reg_alloc
      Src: /src/frr/zebra/zebra_opaque.c:520,1
    - Dst: opq_client_alloc
      Src: /src/frr/zebra/zebra_opaque.c:521,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:524,1
    - Dst: opq_client2str
      Src: /src/frr/zebra/zebra_opaque.c:526,1
    - Dst: opq_regh_add
      Src: /src/frr/zebra/zebra_opaque.c:531,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_opaque.c:536,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - hdr
    - msg
    argTypes:
    - struct zmsghdr*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 538
    functionName: handle_opq_registration
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - opq_client_match
    - opq_client2str
    - opq_regh_add
    - stream_free
    - memset
    - opq_reg_alloc
    - zapi_opaque_reg_decode
    - opq_client_alloc
    - zlog_debug
    - opq_regh_find
    linkageType: ''
    returnType: int
    signature: "int handle_opq_registration(const struct zmsghdr *hdr,\n\t\t\t\t   struct
      stream *msg)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_opaque.c:552,1
    - Dst: zapi_opaque_reg_decode
      Src: /src/frr/zebra/zebra_opaque.c:554,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_opaque.c:559,1
    - Dst: opq_regh_find
      Src: /src/frr/zebra/zebra_opaque.c:563,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:567,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_opaque.c:569,1
    - Dst: opq_client_match
      Src: /src/frr/zebra/zebra_opaque.c:577,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:584,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_opaque.c:585,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_opaque.c:591,1
    - Dst: opq_client2str
      Src: /src/frr/zebra/zebra_opaque.c:592,1
    - Dst: opq_client_free
      Src: /src/frr/zebra/zebra_opaque.c:602,1
    - Dst: opq_regh_del
      Src: /src/frr/zebra/zebra_opaque.c:606,1
    - Dst: opq_reg_free
      Src: /src/frr/zebra/zebra_opaque.c:607,1
    - Dst: stream_free
      Src: /src/frr/zebra/zebra_opaque.c:612,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 2
    argNames:
    - hdr
    - msg
    argTypes:
    - struct zmsghdr*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 614
    functionName: handle_opq_unregistration
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - opq_client_match
    - opq_client2str
    - opq_regh_del
    - stream_free
    - memset
    - opq_client_free
    - opq_reg_free
    - zapi_opaque_reg_decode
    - zlog_debug
    - zebra_route_string
    - opq_regh_find
    linkageType: ''
    returnType: int
    signature: "int handle_opq_unregistration(const struct zmsghdr *hdr,\n\t\t\t\t
      \    struct stream *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - client
    - info
    argTypes:
    - struct opq_client_reg*
    - struct zapi_opaque_reg_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 626
    functionName: opq_client_match
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool opq_client_match(const struct opq_client_reg *client,\n\t\t\t
      \    const struct zapi_opaque_reg_info *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_opaque.c:632,1
    - Dst: opq_regh_find
      Src: /src/frr/zebra/zebra_opaque.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 639
    functionName: opq_reg_lookup
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - opq_regh_find
    - memset
    linkageType: ''
    returnType: struct opq_msg_reg
    signature: struct opq_msg_reg *opq_reg_lookup(uint32_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_opaque.c:645,1
    - Dst: INIT_HASH
      Src: /src/frr/zebra/zebra_opaque.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 651
    functionName: opq_reg_alloc
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - INIT_HASH
    - XCALLOC
    linkageType: ''
    returnType: struct opq_msg_reg
    signature: struct opq_msg_reg *opq_reg_alloc(uint32_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_opaque.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reg
    argTypes:
    - struct opq_msg_reg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 653
    functionDepth: 0
    functionLinenumber: 653
    functionLinenumberEnd: 656
    functionName: opq_reg_free
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void opq_reg_free(struct opq_msg_reg **reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_opaque.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct zapi_opaque_reg_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 670
    functionName: opq_client_alloc
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct opq_client_reg
    signature: "struct opq_client_reg *opq_client_alloc(\n\tconst struct zapi_opaque_reg_info
      *info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_opaque.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct opq_client_reg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 675
    functionName: opq_client_free
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void opq_client_free(struct opq_client_reg **client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_opaque.c:682,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_opaque.c:682,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_opaque.c:685,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_opaque.c:686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - buflen
    - client
    argTypes:
    - char*
    - size_t
    - struct opq_client_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 690
    functionName: opq_client2str
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 3
    functionsReached:
    - strlcat
    - zebra_route_string
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *opq_client2str(char *buf, size_t buflen,\n\t\t\t\t  const struct
      opq_client_reg *client)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reg
    argTypes:
    - struct opq_msg_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 696
    functionName: registration_hash
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t registration_hash(const struct opq_msg_reg *reg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - reg1
    - reg2
    argTypes:
    - struct opq_msg_reg*
    - struct opq_msg_reg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 706
    functionName: registration_compare
    functionSourceFile: /src/frr/zebra/zebra_opaque.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int registration_compare(const struct opq_msg_reg *reg1,\n\t\t\t\tconst
      struct opq_msg_reg *reg2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 401
    functionName: rtadv_vrf_init
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_vrf_init(struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 404
    functionName: rtadv_vrf_terminate
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_vrf_terminate(struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 407
    functionName: rtadv_cmd_init
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_cmd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 410
    functionName: rtadv_if_init
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_if_init(struct zebra_if *zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 413
    functionName: rtadv_if_up
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_if_up(struct zebra_if *zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 416
    functionName: rtadv_if_fini
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_if_fini(struct zebra_if *zif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - zif
    - p
    argTypes:
    - struct zebra_if*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: rtadv_add_prefix
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void rtadv_add_prefix(struct zebra_if *zif,\n\t\t\t\t    const struct
      prefix_ipv6 *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - zif
    - p
    argTypes:
    - struct zebra_if*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: rtadv_delete_prefix
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void rtadv_delete_prefix(struct zebra_if *zif,\n\t\t\t\t       const
      struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 427
    functionName: rtadv_stop_ra
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_stop_ra(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 430
    functionName: rtadv_stop_ra_all
    functionSourceFile: /src/frr/zebra/rtadv.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_stop_ra_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:23,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:25,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:27,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:29,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:32,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:33,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:34,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:35,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:38,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:41,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:42,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:43,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:44,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:47,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:50,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:50,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_ptm_redistribute.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 7
    argNames:
    - cmd
    - client
    - ifp
    - dp
    - sp
    - status
    - vrf_id
    argTypes:
    - int
    - struct zserv*
    - struct interface*
    - struct prefix*
    - struct prefix*
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 54
    functionName: zsend_interface_bfd_update
    functionSourceFile: /src/frr/zebra/zebra_ptm_redistribute.c
    functionUses: 0
    functionsReached:
    - stream_new
    - zclient_create_header
    - stream_put
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - prefix_blen
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zsend_interface_bfd_update(int cmd, struct zserv *client,\n\t\t\t\t
      \     struct interface *ifp, struct prefix *dp,\n\t\t\t\t      struct prefix
      *sp, int status,\n\t\t\t\t      vrf_id_t vrf_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/if_ioctl.c:43,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/if_ioctl.c:45,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_ioctl.c:47,1
    - Dst: ioctl
      Src: /src/frr/zebra/if_ioctl.c:54,1
    - Dst: XREALLOC
      Src: /src/frr/zebra/if_ioctl.c:70,1
    - Dst: ioctl
      Src: /src/frr/zebra/if_ioctl.c:72,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/if_ioctl.c:75,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_ioctl.c:76,1
    - Dst: if_get_by_name
      Src: /src/frr/zebra/if_ioctl.c:97,1
    - Dst: if_add_update
      Src: /src/frr/zebra/if_ioctl.c:99,1
    - Dst: if_get_by_name
      Src: /src/frr/zebra/if_ioctl.c:108,1
    - Dst: if_add_update
      Src: /src/frr/zebra/if_ioctl.c:110,1
    - Dst: close
      Src: /src/frr/zebra/if_ioctl.c:116,1
    - Dst: XFREE
      Src: /src/frr/zebra/if_ioctl.c:117,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 30
    functionDepth: 5
    functionLinenumber: 30
    functionLinenumberEnd: 120
    functionName: interface_list_ioctl
    functionSourceFile: /src/frr/zebra/if_ioctl.c
    functionUses: 0
    functionsReached:
    - if_get_by_name
    - if_add_update
    - socket
    - ioctl
    - close
    - safe_strerror
    - XFREE
    - flog_err_sys
    - XREALLOC
    linkageType: ''
    returnType: int
    signature: int interface_list_ioctl(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_set_index
      Src: /src/frr/zebra/if_ioctl.c:125,1
    - Dst: if_nametoindex
      Src: /src/frr/zebra/if_ioctl.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: if_get_index
    functionSourceFile: /src/frr/zebra/if_ioctl.c
    functionUses: 0
    functionsReached:
    - if_set_index
    - if_nametoindex
    linkageType: ''
    returnType: int
    signature: int if_get_index(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/if_ioctl.c:136,1
    - Dst: vrf_if_ioctl
      Src: /src/frr/zebra/if_ioctl.c:140,1
    - Dst: memcpy
      Src: /src/frr/zebra/if_ioctl.c:144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 156
    functionName: if_get_hwaddr
    functionSourceFile: /src/frr/zebra/if_ioctl.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - vrf_if_ioctl
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_get_hwaddr(struct interface *ifp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/frr/zebra/if_ioctl.c:167,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/if_ioctl.c:169,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/if_ioctl.c:170,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_ioctl.c:176,1
    - Dst: if_lookup_by_name
      Src: /src/frr/zebra/if_ioctl.c:184,1
    - Dst: flog_err
      Src: /src/frr/zebra/if_ioctl.c:186,1
    - Dst: ip_masklen
      Src: /src/frr/zebra/if_ioctl.c:201,1
    - Dst: if_is_pointopoint
      Src: /src/frr/zebra/if_ioctl.c:205,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/if_ioctl.c:206,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/if_ioctl.c:214,1
    - Dst: connected_add_ipv4
      Src: /src/frr/zebra/if_ioctl.c:224,1
    - Dst: ip6_masklen
      Src: /src/frr/zebra/if_ioctl.c:235,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/if_ioctl.c:238,1
    - Dst: ntohs
      Src: /src/frr/zebra/if_ioctl.c:240,1
    - Dst: connected_add_ipv6
      Src: /src/frr/zebra/if_ioctl.c:247,1
    - Dst: freeifaddrs
      Src: /src/frr/zebra/if_ioctl.c:252,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 255
    functionName: if_getaddrs
    functionSourceFile: /src/frr/zebra/if_ioctl.c
    functionUses: 0
    functionsReached:
    - if_is_pointopoint
    - if_lookup_by_name
    - connected_add_ipv6
    - getifaddrs
    - IN6_IS_ADDR_LINKLOCAL
    - ip_masklen
    - ip6_masklen
    - ntohs
    - IPV4_ADDR_SAME
    - flog_err
    - safe_strerror
    - freeifaddrs
    - flog_err_sys
    - connected_add_ipv4
    linkageType: ''
    returnType: int
    signature: int if_getaddrs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/if_ioctl.c:260,1
    - Dst: if_get_index
      Src: /src/frr/zebra/if_ioctl.c:264,1
    - Dst: if_get_hwaddr
      Src: /src/frr/zebra/if_ioctl.c:266,1
    - Dst: if_get_flags
      Src: /src/frr/zebra/if_ioctl.c:268,1
    - Dst: if_get_mtu
      Src: /src/frr/zebra/if_ioctl.c:269,1
    - Dst: if_get_metric
      Src: /src/frr/zebra/if_ioctl.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 258
    functionDepth: 3
    functionLinenumber: 258
    functionLinenumberEnd: 272
    functionName: interface_info_ioctl
    functionSourceFile: /src/frr/zebra/if_ioctl.c
    functionUses: 0
    functionsReached:
    - if_get_index
    - if_get_mtu
    - if_get_hwaddr
    - if_get_flags
    - vrf_lookup_by_id
    - if_get_metric
    linkageType: ''
    returnType: void
    signature: void interface_info_ioctl()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_get_index
      Src: /src/frr/zebra/if_ioctl.c:264,1
    - Dst: if_get_hwaddr
      Src: /src/frr/zebra/if_ioctl.c:266,1
    - Dst: if_get_flags
      Src: /src/frr/zebra/if_ioctl.c:268,1
    - Dst: if_get_mtu
      Src: /src/frr/zebra/if_ioctl.c:269,1
    - Dst: if_get_metric
      Src: /src/frr/zebra/if_ioctl.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 271
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/if_ioctl.c
    functionUses: 21
    functionsReached:
    - if_get_index
    - if_get_mtu
    - if_get_hwaddr
    - if_get_flags
    - if_get_metric
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/if_ioctl.c:278,1
    - Dst: interface_list_proc
      Src: /src/frr/zebra/if_ioctl.c:283,1
    - Dst: interface_list_ioctl
      Src: /src/frr/zebra/if_ioctl.c:285,1
    - Dst: interface_info_ioctl
      Src: /src/frr/zebra/if_ioctl.c:289,1
    - Dst: if_getaddrs
      Src: /src/frr/zebra/if_ioctl.c:291,1
    - Dst: ifaddr_proc_ipv6
      Src: /src/frr/zebra/if_ioctl.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 275
    functionDepth: 6
    functionLinenumber: 275
    functionLinenumberEnd: 298
    functionName: interface_list
    functionSourceFile: /src/frr/zebra/if_ioctl.c
    functionUses: 1
    functionsReached:
    - zlog_info
    - interface_list_proc
    - interface_list_ioctl
    - interface_info_ioctl
    - ifaddr_proc_ipv6
    - if_getaddrs
    linkageType: ''
    returnType: void
    signature: void interface_list(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrscript_names_add_function_name
      Src: /src/frr/zebra/zebra_script.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: zebra_script_init
    functionSourceFile: /src/frr/zebra/zebra_script.c
    functionUses: 1
    functionsReached:
    - frrscript_names_add_function_name
    linkageType: ''
    returnType: void
    signature: void zebra_script_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrscript_names_destroy
      Src: /src/frr/zebra/zebra_script.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: zebra_script_destroy
    functionSourceFile: /src/frr/zebra/zebra_script.c
    functionUses: 1
    functionsReached:
    - frrscript_names_destroy
    linkageType: ''
    returnType: void
    signature: void zebra_script_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:25,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:26,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:27,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:28,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - L
    - nh_grp
    argTypes:
    - lua_State*
    - struct nh_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 30
    functionName: lua_pushnh_grp
    functionSourceFile: /src/frr/zebra/zebra_script.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_pushnh_grp(lua_State *L, const struct nh_grp *nh_grp)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:35,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:36,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_script.c:36,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:37,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:38,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_script.c:38,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:39,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:40,1
    - Dst: dplane_ctx_get_provider
      Src: /src/frr/zebra/zebra_script.c:40,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:41,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:42,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_script.c:42,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:43,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:44,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_script.c:44,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:45,1
    - Dst: lua_pushstring
      Src: /src/frr/zebra/zebra_script.c:46,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_script.c:46,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:47,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:48,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_script.c:48,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:49,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_script.c:51,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:60,1
    - Dst: lua_pushprefix
      Src: /src/frr/zebra/zebra_script.c:62,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/zebra_script.c:62,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:63,1
    - Dst: dplane_ctx_get_src
      Src: /src/frr/zebra/zebra_script.c:64,1
    - Dst: lua_pushprefix
      Src: /src/frr/zebra/zebra_script.c:67,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:68,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:70,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/zebra_script.c:70,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:71,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:72,1
    - Dst: dplane_ctx_get_safi
      Src: /src/frr/zebra/zebra_script.c:72,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:73,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:74,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/zebra_script.c:74,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:75,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:76,1
    - Dst: dplane_ctx_get_old_type
      Src: /src/frr/zebra/zebra_script.c:76,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:77,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:78,1
    - Dst: dplane_ctx_get_tag
      Src: /src/frr/zebra/zebra_script.c:78,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:79,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:80,1
    - Dst: dplane_ctx_get_old_tag
      Src: /src/frr/zebra/zebra_script.c:80,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:81,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:82,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/zebra_script.c:82,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:83,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:84,1
    - Dst: dplane_ctx_get_old_metric
      Src: /src/frr/zebra/zebra_script.c:84,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:85,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:86,1
    - Dst: dplane_ctx_get_instance
      Src: /src/frr/zebra/zebra_script.c:86,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:87,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:88,1
    - Dst: dplane_ctx_get_old_instance
      Src: /src/frr/zebra/zebra_script.c:88,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:89,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:90,1
    - Dst: dplane_ctx_get_distance
      Src: /src/frr/zebra/zebra_script.c:90,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:91,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:92,1
    - Dst: dplane_ctx_get_old_distance
      Src: /src/frr/zebra/zebra_script.c:92,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:93,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:94,1
    - Dst: dplane_ctx_get_mtu
      Src: /src/frr/zebra/zebra_script.c:94,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:95,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:96,1
    - Dst: dplane_ctx_get_nh_mtu
      Src: /src/frr/zebra/zebra_script.c:96,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:97,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:99,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:101,1
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/zebra_script.c:101,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:102,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:103,1
    - Dst: dplane_ctx_get_old_nhe_id
      Src: /src/frr/zebra/zebra_script.c:104,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:105,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:106,1
    - Dst: dplane_ctx_get_nhe_afi
      Src: /src/frr/zebra/zebra_script.c:106,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:107,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:108,1
    - Dst: dplane_ctx_get_nhe_vrf_id
      Src: /src/frr/zebra/zebra_script.c:109,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:110,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:111,1
    - Dst: dplane_ctx_get_nhe_type
      Src: /src/frr/zebra/zebra_script.c:112,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:113,1
    - Dst: lua_pushnexthop_group
      Src: /src/frr/zebra/zebra_script.c:114,1
    - Dst: dplane_ctx_get_nhe_ng
      Src: /src/frr/zebra/zebra_script.c:115,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:116,1
    - Dst: lua_pushnh_grp
      Src: /src/frr/zebra/zebra_script.c:117,1
    - Dst: dplane_ctx_get_nhe_nh_grp
      Src: /src/frr/zebra/zebra_script.c:118,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:119,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:120,1
    - Dst: dplane_ctx_get_nhe_nh_grp_count
      Src: /src/frr/zebra/zebra_script.c:122,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:123,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:125,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:126,1
    - Dst: dplane_ctx_get_nhg_id
      Src: /src/frr/zebra/zebra_script.c:126,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:127,1
    - Dst: lua_pushnexthop_group
      Src: /src/frr/zebra/zebra_script.c:128,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/zebra_script.c:128,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:129,1
    - Dst: lua_pushnexthop_group
      Src: /src/frr/zebra/zebra_script.c:130,1
    - Dst: dplane_ctx_get_backup_ng
      Src: /src/frr/zebra/zebra_script.c:130,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:131,1
    - Dst: lua_pushnexthop_group
      Src: /src/frr/zebra/zebra_script.c:132,1
    - Dst: dplane_ctx_get_old_ng
      Src: /src/frr/zebra/zebra_script.c:132,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:133,1
    - Dst: lua_pushnexthop_group
      Src: /src/frr/zebra/zebra_script.c:134,1
    - Dst: dplane_ctx_get_old_backup_ng
      Src: /src/frr/zebra/zebra_script.c:135,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:136,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:138,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:144,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/zebra_script.c:144,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:145,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:150,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:152,1
    - Dst: dplane_ctx_get_pw_type
      Src: /src/frr/zebra/zebra_script.c:152,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:153,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:154,1
    - Dst: dplane_ctx_get_pw_af
      Src: /src/frr/zebra/zebra_script.c:154,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:155,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:156,1
    - Dst: dplane_ctx_get_pw_status
      Src: /src/frr/zebra/zebra_script.c:156,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:157,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:158,1
    - Dst: dplane_ctx_get_pw_flags
      Src: /src/frr/zebra/zebra_script.c:158,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:159,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:160,1
    - Dst: dplane_ctx_get_pw_local_label
      Src: /src/frr/zebra/zebra_script.c:160,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:161,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:162,1
    - Dst: dplane_ctx_get_pw_remote_label
      Src: /src/frr/zebra/zebra_script.c:162,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:163,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:165,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:174,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:176,1
    - Dst: dplane_ctx_mac_get_vlan
      Src: /src/frr/zebra/zebra_script.c:176,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:177,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:178,1
    - Dst: dplane_ctx_mac_get_br_ifindex
      Src: /src/frr/zebra/zebra_script.c:178,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:179,1
    - Dst: lua_pushethaddr
      Src: /src/frr/zebra/zebra_script.c:180,1
    - Dst: dplane_ctx_mac_get_addr
      Src: /src/frr/zebra/zebra_script.c:180,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:181,1
    - Dst: lua_pushinaddr
      Src: /src/frr/zebra/zebra_script.c:182,1
    - Dst: dplane_ctx_mac_get_vtep_ip
      Src: /src/frr/zebra/zebra_script.c:182,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:183,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:184,1
    - Dst: dplane_ctx_mac_is_sticky
      Src: /src/frr/zebra/zebra_script.c:184,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:185,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:186,1
    - Dst: dplane_ctx_mac_get_nhg_id
      Src: /src/frr/zebra/zebra_script.c:186,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:187,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:188,1
    - Dst: dplane_ctx_mac_get_update_flags
      Src: /src/frr/zebra/zebra_script.c:189,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:190,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:192,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:198,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:200,1
    - Dst: dplane_ctx_rule_get_sock
      Src: /src/frr/zebra/zebra_script.c:200,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:201,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:202,1
    - Dst: dplane_ctx_rule_get_unique
      Src: /src/frr/zebra/zebra_script.c:202,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:203,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:204,1
    - Dst: dplane_ctx_rule_get_seq
      Src: /src/frr/zebra/zebra_script.c:204,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:205,1
    - Dst: lua_pushstring
      Src: /src/frr/zebra/zebra_script.c:206,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/zebra_script.c:206,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:207,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:208,1
    - Dst: dplane_ctx_rule_get_priority
      Src: /src/frr/zebra/zebra_script.c:208,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:209,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:210,1
    - Dst: dplane_ctx_rule_get_old_priority
      Src: /src/frr/zebra/zebra_script.c:211,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:212,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:213,1
    - Dst: dplane_ctx_rule_get_table
      Src: /src/frr/zebra/zebra_script.c:213,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:214,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:215,1
    - Dst: dplane_ctx_rule_get_old_table
      Src: /src/frr/zebra/zebra_script.c:215,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:216,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:217,1
    - Dst: dplane_ctx_rule_get_filter_bm
      Src: /src/frr/zebra/zebra_script.c:217,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:218,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:219,1
    - Dst: dplane_ctx_rule_get_old_filter_bm
      Src: /src/frr/zebra/zebra_script.c:220,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:221,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:222,1
    - Dst: dplane_ctx_rule_get_fwmark
      Src: /src/frr/zebra/zebra_script.c:222,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:223,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:224,1
    - Dst: dplane_ctx_rule_get_old_fwmark
      Src: /src/frr/zebra/zebra_script.c:224,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:225,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:226,1
    - Dst: dplane_ctx_rule_get_dsfield
      Src: /src/frr/zebra/zebra_script.c:226,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:227,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:228,1
    - Dst: dplane_ctx_rule_get_old_dsfield
      Src: /src/frr/zebra/zebra_script.c:229,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:230,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:231,1
    - Dst: dplane_ctx_rule_get_ipproto
      Src: /src/frr/zebra/zebra_script.c:231,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:232,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:233,1
    - Dst: dplane_ctx_rule_get_old_ipproto
      Src: /src/frr/zebra/zebra_script.c:234,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:235,1
    - Dst: lua_pushprefix
      Src: /src/frr/zebra/zebra_script.c:236,1
    - Dst: dplane_ctx_rule_get_src_ip
      Src: /src/frr/zebra/zebra_script.c:236,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:237,1
    - Dst: lua_pushprefix
      Src: /src/frr/zebra/zebra_script.c:238,1
    - Dst: dplane_ctx_rule_get_old_src_ip
      Src: /src/frr/zebra/zebra_script.c:238,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:239,1
    - Dst: lua_pushprefix
      Src: /src/frr/zebra/zebra_script.c:240,1
    - Dst: dplane_ctx_rule_get_dst_ip
      Src: /src/frr/zebra/zebra_script.c:240,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:241,1
    - Dst: lua_pushprefix
      Src: /src/frr/zebra/zebra_script.c:242,1
    - Dst: dplane_ctx_rule_get_old_dst_ip
      Src: /src/frr/zebra/zebra_script.c:242,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:243,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:245,1
    - Dst: dplane_ctx_get_pbr_iptable
      Src: /src/frr/zebra/zebra_script.c:251,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:253,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:255,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:256,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:257,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:258,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:259,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:260,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:261,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:262,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:263,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:264,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:265,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:266,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:267,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:268,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:269,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:270,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:271,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:272,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:273,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:274,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:275,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:276,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:277,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:278,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:279,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:280,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:281,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:282,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:283,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:284,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:285,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:286,1
    - Dst: lua_pushstring
      Src: /src/frr/zebra/zebra_script.c:287,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:288,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:290,1
    - Dst: dplane_ctx_get_pbr_ipset
      Src: /src/frr/zebra/zebra_script.c:299,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:301,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:303,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:304,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:305,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:306,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:307,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:308,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:309,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:310,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:311,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:312,1
    - Dst: lua_pushstring
      Src: /src/frr/zebra/zebra_script.c:313,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:314,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:316,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:326,1
    - Dst: lua_pushipaddr
      Src: /src/frr/zebra/zebra_script.c:328,1
    - Dst: dplane_ctx_neigh_get_ipaddr
      Src: /src/frr/zebra/zebra_script.c:328,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:329,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:331,1
    - Dst: lua_pushethaddr
      Src: /src/frr/zebra/zebra_script.c:333,1
    - Dst: dplane_ctx_neigh_get_mac
      Src: /src/frr/zebra/zebra_script.c:334,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:335,1
    - Dst: lua_pushipaddr
      Src: /src/frr/zebra/zebra_script.c:336,1
    - Dst: dplane_ctx_neigh_get_link_ip
      Src: /src/frr/zebra/zebra_script.c:337,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:338,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:340,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:341,1
    - Dst: dplane_ctx_neigh_get_flags
      Src: /src/frr/zebra/zebra_script.c:341,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:342,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:343,1
    - Dst: dplane_ctx_neigh_get_state
      Src: /src/frr/zebra/zebra_script.c:343,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:344,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:345,1
    - Dst: dplane_ctx_neigh_get_update_flags
      Src: /src/frr/zebra/zebra_script.c:346,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:347,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:349,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:356,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:358,1
    - Dst: dplane_ctx_get_br_port_sph_filter_cnt
      Src: /src/frr/zebra/zebra_script.c:359,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:360,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:361,1
    - Dst: dplane_ctx_get_br_port_flags
      Src: /src/frr/zebra/zebra_script.c:361,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:362,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:363,1
    - Dst: dplane_ctx_get_br_port_backup_nhg_id
      Src: /src/frr/zebra/zebra_script.c:364,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:365,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:367,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:371,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:373,1
    - Dst: dplane_ctx_neightable_get_family
      Src: /src/frr/zebra/zebra_script.c:374,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:375,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:376,1
    - Dst: dplane_ctx_neightable_get_app_probes
      Src: /src/frr/zebra/zebra_script.c:377,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:378,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:379,1
    - Dst: dplane_ctx_neightable_get_mcast_probes
      Src: /src/frr/zebra/zebra_script.c:380,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:381,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:382,1
    - Dst: dplane_ctx_neightable_get_ucast_probes
      Src: /src/frr/zebra/zebra_script.c:383,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:384,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:386,1
    - Dst: lua_newtable
      Src: /src/frr/zebra/zebra_script.c:390,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:392,1
    - Dst: dplane_ctx_gre_get_link_ifindex
      Src: /src/frr/zebra/zebra_script.c:393,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:394,1
    - Dst: lua_pushinteger
      Src: /src/frr/zebra/zebra_script.c:395,1
    - Dst: dplane_ctx_gre_get_mtu
      Src: /src/frr/zebra/zebra_script.c:395,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:396,1
    - Dst: lua_setfield
      Src: /src/frr/zebra/zebra_script.c:398,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 329
    argCount: 2
    argNames:
    - L
    - ctx
    argTypes:
    - lua_State*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 420
    functionName: lua_pushzebra_dplane_ctx
    functionSourceFile: /src/frr/zebra/zebra_script.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_old_backup_ng
    - dplane_ctx_get_pw_type
    - lua_pushinaddr
    - dplane_ctx_get_br_port_sph_filter_cnt
    - dplane_ctx_rule_get_ipproto
    - lua_pushprefix
    - dplane_ctx_get_nhe_nh_grp_count
    - dplane_ctx_get_backup_ng
    - dplane_ctx_get_nhe_type
    - dplane_ctx_get_old_metric
    - dplane_ctx_rule_get_old_src_ip
    - dplane_ctx_neigh_get_state
    - dplane_ctx_rule_get_priority
    - dplane_ctx_get_in_label
    - dplane_ctx_get_ng
    - dplane_ctx_rule_get_fwmark
    - dplane_ctx_rule_get_dst_ip
    - dplane_ctx_get_pbr_ipset
    - dplane_ctx_get_old_distance
    - dplane_ctx_neigh_get_update_flags
    - dplane_ctx_rule_get_ifname
    - dplane_ctx_get_pbr_iptable
    - dplane_ctx_gre_get_link_ifindex
    - dplane_ctx_get_pw_status
    - dplane_ctx_get_vrf
    - dplane_ctx_get_status
    - dplane_ctx_get_nhe_nh_grp
    - dplane_ctx_get_pw_remote_label
    - dplane_ctx_get_nhe_vrf_id
    - dplane_ctx_get_ifindex
    - dplane_ctx_mac_get_vlan
    - dplane_ctx_rule_get_old_table
    - dplane_ctx_neightable_get_app_probes
    - dplane_ctx_get_type
    - dplane_ctx_get_mtu
    - dplane_ctx_get_op
    - lua_pushnh_grp
    - dplane_ctx_rule_get_src_ip
    - dplane_ctx_get_distance
    - lua_pushipaddr
    - dplane_ctx_get_old_nhe_id
    - dplane_ctx_mac_is_sticky
    - lua_pushinteger
    - lua_newtable
    - dplane_ctx_get_nhg_id
    - dplane_ctx_neigh_get_mac
    - dplane_ctx_neightable_get_ucast_probes
    - dplane_ctx_mac_get_nhg_id
    - dplane_ctx_neigh_get_link_ip
    - dplane_ctx_rule_get_unique
    - dplane_ctx_get_old_type
    - dplane_ctx_neightable_get_family
    - dplane_ctx_mac_get_addr
    - dplane_ctx_rule_get_filter_bm
    - dplane_ctx_get_instance
    - dplane_ctx_gre_get_mtu
    - dplane_ctx_get_nhe_ng
    - lua_pushethaddr
    - dplane_ctx_mac_get_update_flags
    - dplane_ctx_get_ifname
    - dplane_ctx_rule_get_old_fwmark
    - dplane_ctx_get_old_tag
    - dplane_ctx_get_br_port_flags
    - dplane_ctx_get_src
    - dplane_ctx_get_safi
    - dplane_ctx_mac_get_br_ifindex
    - dplane_ctx_get_pw_local_label
    - dplane_ctx_get_metric
    - dplane_ctx_rule_get_old_dsfield
    - dplane_ctx_rule_get_old_dst_ip
    - dplane_ctx_rule_get_old_ipproto
    - dplane_ctx_get_provider
    - dplane_ctx_rule_get_old_filter_bm
    - dplane_ctx_neigh_get_flags
    - dplane_ctx_rule_get_old_priority
    - dplane_ctx_get_dest
    - dplane_ctx_rule_get_sock
    - lua_pushstring
    - dplane_ctx_get_nhe_id
    - dplane_ctx_neigh_get_ipaddr
    - lua_pushnexthop_group
    - dplane_ctx_mac_get_vtep_ip
    - lua_setfield
    - dplane_ctx_get_old_instance
    - dplane_ctx_rule_get_seq
    - dplane_ctx_get_pw_af
    - dplane_ctx_get_br_port_backup_nhg_id
    - dplane_ctx_get_table
    - dplane_ctx_rule_get_table
    - dplane_ctx_get_old_ng
    - dplane_ctx_get_pw_flags
    - dplane_ctx_get_afi
    - dplane_ctx_get_nhe_afi
    - dplane_ctx_neightable_get_mcast_probes
    - dplane_ctx_get_tag
    - dplane_ctx_get_nh_mtu
    - dplane_ctx_rule_get_dsfield
    linkageType: ''
    returnType: void
    signature: void lua_pushzebra_dplane_ctx(lua_State *L, const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/zebra/zebra_nb_state.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 30
    functionName: lib_interface_zebra_state_up_count_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_up_count_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/zebra/zebra_nb_state.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: lib_interface_zebra_state_down_count_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_down_count_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: lib_interface_zebra_state_zif_type_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_zif_type_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: lib_interface_zebra_state_ptm_status_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_ptm_status_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_nb_state.c:76,1
    - Dst: yang_data_new_uint16
      Src: /src/frr/zebra/zebra_nb_state.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 83
    functionName: lib_interface_zebra_state_vlan_id_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    - IS_ZEBRA_IF_VLAN
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_vlan_id_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/zebra_nb_state.c:95,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_nb_state.c:100,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_nb_state.c:103,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/zebra/zebra_nb_state.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 105
    functionName: lib_interface_zebra_state_vni_id_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - IS_ZEBRA_VXLAN_IF_VNI
    - yang_data_new_uint32
    - zebra_vxlan_if_vni_find
    - IS_ZEBRA_IF_VXLAN
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_vni_id_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/zebra_nb_state.c:117,1
    - Dst: yang_data_new_ipv4
      Src: /src/frr/zebra/zebra_nb_state.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 124
    functionName: lib_interface_zebra_state_remote_vtep_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_ipv4
    - IS_ZEBRA_IF_VXLAN
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_remote_vtep_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/zebra_nb_state.c:136,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/zebra_nb_state.c:141,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_nb_state.c:144,1
    - Dst: yang_data_new_ipv4
      Src: /src/frr/zebra/zebra_nb_state.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 146
    functionName: lib_interface_zebra_state_mcast_group_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - IS_ZEBRA_VXLAN_IF_VNI
    - yang_data_new_ipv4
    - zebra_vxlan_if_vni_find
    - IS_ZEBRA_IF_VXLAN
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_zebra_state_mcast_group_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_nb_state.c:158,1
    - Dst: zebra_router_find_zrt
      Src: /src/frr/zebra/zebra_nb_state.c:164,1
    - Dst: RB_NEXT
      Src: /src/frr/zebra/zebra_nb_state.c:168,1
    - Dst: RB_NEXT
      Src: /src/frr/zebra/zebra_nb_state.c:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 175
    functionName: lib_vrf_zebra_ribs_rib_get_next
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_lookup_by_id
    - zebra_router_find_zrt
    - RB_NEXT
    linkageType: ''
    returnType: void
    signature: void *lib_vrf_zebra_ribs_rib_get_next(struct nb_cb_get_next_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_nb_state.c:183,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/zebra/zebra_nb_state.c:184,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_nb_state.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 189
    functionName: lib_vrf_zebra_ribs_rib_get_keys
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - snprintfrr
    - yang_afi_safi_value2identity
    linkageType: ''
    returnType: int
    signature: int lib_vrf_zebra_ribs_rib_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_nb_state.c:200,1
    - Dst: yang_afi_safi_identity2value
      Src: /src/frr/zebra/zebra_nb_state.c:202,1
    - Dst: yang_str2uint32
      Src: /src/frr/zebra/zebra_nb_state.c:203,1
    - Dst: zebra_router_find_zrt
      Src: /src/frr/zebra/zebra_nb_state.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 209
    functionName: lib_vrf_zebra_ribs_rib_lookup_entry
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_lookup_by_id
    - yang_str2uint32
    - zebra_router_find_zrt
    - yang_afi_safi_identity2value
    linkageType: ''
    returnType: void
    signature: 'void *

      lib_vrf_zebra_ribs_rib_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:219,1
    - Dst: yang_afi_safi_value2identity
      Src: /src/frr/zebra/zebra_nb_state.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: lib_vrf_zebra_ribs_rib_afi_safi_name_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    - yang_afi_safi_value2identity
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_vrf_zebra_ribs_rib_afi_safi_name_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/zebra/zebra_nb_state.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 232
    functionName: lib_vrf_zebra_ribs_rib_table_id_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_vrf_zebra_ribs_rib_table_id_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/zebra/zebra_nb_state.c:244,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_nb_state.c:246,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_nb_state.c:249,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/zebra_nb_state.c:253,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 257
    functionName: lib_vrf_zebra_ribs_rib_route_get_next
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_LINKLOCAL
    - route_top
    - route_next
    - srcdest_route_next
    linkageType: ''
    returnType: void
    signature: 'void *

      lib_vrf_zebra_ribs_rib_route_get_next(struct nb_cb_get_next_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_nb_state.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 267
    functionName: lib_vrf_zebra_ribs_rib_route_get_keys
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - prefix2str
    linkageType: ''
    returnType: int
    signature: int lib_vrf_zebra_ribs_rib_route_get_keys(struct nb_cb_get_keys_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_str2prefix
      Src: /src/frr/zebra/zebra_nb_state.c:276,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_nb_state.c:278,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_nb_state.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 286
    functionName: lib_vrf_zebra_ribs_rib_route_lookup_entry
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - yang_str2prefix
    linkageType: ''
    returnType: void
    signature: 'void *

      lib_vrf_zebra_ribs_rib_route_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_prefix
      Src: /src/frr/zebra/zebra_nb_state.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 297
    functionName: lib_vrf_zebra_ribs_rib_route_prefix_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_prefix
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_vrf_zebra_ribs_rib_route_prefix_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RNODE_FIRST_RE
      Src: /src/frr/zebra/zebra_nb_state.c:309,1
    - Dst: RNODE_NEXT_RE
      Src: /src/frr/zebra/zebra_nb_state.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 314
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_get_next
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - RNODE_FIRST_RE
    - RNODE_NEXT_RE
    linkageType: ''
    returnType: void
    signature: "void *lib_vrf_zebra_ribs_rib_route_route_entry_get_next(\n\tstruct
      nb_cb_get_next_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:323,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nb_state.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 327
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_get_keys
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: "int lib_vrf_zebra_ribs_rib_route_route_entry_get_keys(\n\tstruct nb_cb_get_keys_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_nb_state.c:337,1
    - Dst: proto_redistnum
      Src: /src/frr/zebra/zebra_nb_state.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 346
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_lookup_entry
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - family2afi
    - proto_redistnum
    linkageType: ''
    returnType: void
    signature: "void *lib_vrf_zebra_ribs_rib_route_route_entry_lookup_entry(\n\tstruct
      nb_cb_lookup_entry_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/zebra/zebra_nb_state.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 357
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_protocol_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_protocol_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/zebra/zebra_nb_state.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 371
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_instance_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_instance_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/zebra/zebra_nb_state.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_distance_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_distance_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/zebra/zebra_nb_state.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 393
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_metric_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_metric_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/zebra/zebra_nb_state.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 407
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_tag_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_tag_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:417,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 421
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_selected_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_selected_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:431,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 435
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_installed_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_installed_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:445,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 449
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_failed_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_failed_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:459,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 463
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_queued_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_queued_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_int32
      Src: /src/frr/zebra/zebra_nb_state.c:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 479
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_internal_flags_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_int32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_internal_flags_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_int32
      Src: /src/frr/zebra/zebra_nb_state.c:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 495
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_internal_status_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_int32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_internal_status_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_date_and_time
      Src: /src/frr/zebra/zebra_nb_state.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 506
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_date_and_time
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/zebra/zebra_nb_state.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 519
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_id_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_id_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_next
      Src: /src/frr/zebra/zebra_nb_state.c:536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 539
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_next
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - nexthop_next
    linkageType: ''
    returnType: void
    signature: "void *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_next(\n\tstruct
      nb_cb_get_next_args *args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:548,1
    - Dst: yang_nexthop_type2str
      Src: /src/frr/zebra/zebra_nb_state.c:548,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_nb_state.c:551,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_nb_state.c:557,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:560,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_nb_state.c:561,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:566,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_nb_state.c:572,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:576,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_nb_state.c:577,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:582,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:587,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:588,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_nb_state.c:589,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:595,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_nb_state.c:596,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 603
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_keys
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - ifindex2ifname
    - snprintfrr
    - yang_nexthop_type2str
    linkageType: ''
    returnType: int
    signature: "int lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_get_keys(\n\tstruct
      nb_cb_get_keys_args *args)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_nb_state.c:622,1
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_nb_state.c:624,1
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_nb_state.c:626,1
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_nb_state.c:628,1
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_nb_state.c:630,1
    - Dst: strmatch
      Src: /src/frr/zebra/zebra_nb_state.c:632,1
    - Dst: yang_str2ipv4
      Src: /src/frr/zebra/zebra_nb_state.c:642,1
    - Dst: yang_str2ipv6
      Src: /src/frr/zebra/zebra_nb_state.c:646,1
    - Dst: ifname2ifindex
      Src: /src/frr/zebra/zebra_nb_state.c:659,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_nb_state.c:668,1
    - Dst: if
      Src: /src/frr/zebra/zebra_nb_state.c:671,1
    - Dst: nexthop_same_no_labels
      Src: /src/frr/zebra/zebra_nb_state.c:671,1
    - Dst: switch
      Src: /src/frr/zebra/zebra_nb_state.c:688,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:690,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:693,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:696,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:699,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:702,1
    - Dst: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_vrf_get_elem
      Src: /src/frr/zebra/zebra_nb_state.c:716,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:721,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_nb_state.c:722,1
    - Dst: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_gateway_get_elem
      Src: /src/frr/zebra/zebra_nb_state.c:730,1
    - Dst: ipaddr
      Src: /src/frr/zebra/zebra_nb_state.c:734,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_nb_state.c:740,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_nb_state.c:746,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:752,1
    - Dst: yang_data_new_ip
      Src: /src/frr/zebra/zebra_nb_state.c:758,1
    - Dst: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_interface_get_elem
      Src: /src/frr/zebra/zebra_nb_state.c:766,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:772,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/zebra_nb_state.c:774,1
    - Dst: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_bh_type_get_elem
      Src: /src/frr/zebra/zebra_nb_state.c:784,1
    - Dst: yang_data_new_string
      Src: /src/frr/zebra/zebra_nb_state.c:808,1
    - Dst: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_onlink_get_elem
      Src: /src/frr/zebra/zebra_nb_state.c:816,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:821,1
    - Dst: yang_data_new_bool
      Src: /src/frr/zebra/zebra_nb_state.c:822,1
    - Dst: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_color_get_elem
      Src: /src/frr/zebra/zebra_nb_state.c:832,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:837,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/zebra/zebra_nb_state.c:838,1
    - Dst: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_next
      Src: /src/frr/zebra/zebra_nb_state.c:848,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:928,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:929,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:944,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:945,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:960,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:961,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:976,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:977,1
    - Dst: yang_data_new_uint8
      Src: /src/frr/zebra/zebra_nb_state.c:993,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 74
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 996
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_lookup_entry
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - switch
    - lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_gateway_get_elem
    - ifindex2ifname
    - lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_get_next
    - yang_data_new_uint8
    - lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_bh_type_get_elem
    - yang_data_new_uint32
    - strmatch
    - ALL_NEXTHOPS
    - yang_str2ipv4
    - lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_color_get_elem
    - yang_str2ipv6
    - if
    - nexthop_same_no_labels
    - yang_data_new_empty
    - yang_data_new_bool
    - memcpy
    - ipaddr
    - lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_vrf_get_elem
    - vrf_id_to_name
    - ifname2ifindex
    - CHECK_FLAG
    - lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_onlink_get_elem
    - yang_data_new_ip
    - lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_interface_get_elem
    - yang_data_new_string
    linkageType: ''
    returnType: void
    signature: "void *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_lookup_entry(\n\tstruct
      nb_cb_lookup_entry_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 868
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_lookup_entry
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_lookup_entry(\n\tstruct
      nb_cb_lookup_entry_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 880
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_id_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_id_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 892
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_label_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_label_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 904
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_ttl_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_ttl_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 910
    functionDepth: 0
    functionLinenumber: 910
    functionLinenumberEnd: 916
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_traffic_class_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_mpls_label_stack_entry_traffic_class_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:928,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 922
    functionDepth: 1
    functionLinenumber: 922
    functionLinenumberEnd: 932
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_duplicate_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_duplicate_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:944,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 948
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_recursive_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_recursive_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:960,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:961,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 964
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_active_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_active_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nb_state.c:976,1
    - Dst: yang_data_new_empty
      Src: /src/frr/zebra/zebra_nb_state.c:977,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 980
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_fib_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_empty
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_fib_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/zebra/zebra_nb_state.c:993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 996
    functionName: lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_weight_get_elem
    functionSourceFile: /src/frr/zebra/zebra_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_nexthop_weight_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/zebra/zebra_evpn_neigh.c:40,1
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_evpn_neigh.c:41,1
    - Dst: jhash2
      Src: /src/frr/zebra/zebra_evpn_neigh.c:43,1
    - Dst: array_size
      Src: /src/frr/zebra/zebra_evpn_neigh.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: neigh_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - IS_IPADDR_V4
    - jhash2
    - array_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int neigh_hash_keymake(const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_cmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 62
    functionName: neigh_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - ipaddr_cmp
    linkageType: ''
    returnType: bool
    signature: bool neigh_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_cmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: neigh_list_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - ipaddr_cmp
    linkageType: ''
    returnType: int
    signature: int neigh_list_cmp(void *p1, void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_evpn_neigh.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - desc
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: zebra_neigh_db_create
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 4
    functionsReached:
    - hash_create_size
    linkageType: ''
    returnType: struct hash
    signature: struct hash *zebra_neigh_db_create(const char *desc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 97
    functionName: num_dup_detected_neighs
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 5
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t num_dup_detected_neighs(struct zebra_evpn *zevpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:113,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_evpn_neigh.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 117
    functionName: zebra_evpn_find_neigh_addr_width
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - ipaddr2str
    - strlen
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_find_neigh_addr_width(struct hash_bucket *bucket, void
      *ctxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_neigh.c:128,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:129,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:139,1
    - Dst: zevpn_map_to_svi
      Src: /src/frr/zebra/zebra_evpn_neigh.c:149,1
    - Dst: ZEBRA_NEIGH_SET_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:156,1
    - Dst: dplane_rem_neigh_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:158,1
    - Dst: zebra_evpn_install_neigh_hash
      Src: /src/frr/zebra/zebra_evpn_neigh.c:166,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:173,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:174,1
    - Dst: zebra_evpn_neigh_alloc
      Src: /src/frr/zebra/zebra_evpn_neigh.c:181,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_neigh.c:186,1
    - Dst: zebra_evpn_local_neigh_ref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:192,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_neigh.c:200,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_evpn_neigh.c:207,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:209,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:211,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:213,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:219,1
    - Dst: zebra_evpn_sync_neigh_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:226,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:236,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_evpn_neigh.c:237,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:240,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:250,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:252,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:255,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:259,1
    - Dst: dplane_local_neigh_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:266,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:286,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:292,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:295,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:296,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:298,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:299,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:300,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:301,1
    - Dst: zebra_evpn_macip_send_msg_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:303,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:311,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:316,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:317,1
    - Dst: zebra_evpn_macip_send_msg_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:322,1
    - Dst: zebra_evpn_neigh_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:326,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:331,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:335,1
    - Dst: zebra_evpn_sync_neigh_static_chg
      Src: /src/frr/zebra/zebra_evpn_neigh.c:344,1
    - Dst: zebra_evpn_sync_neigh_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:360,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:368,1
    - Dst: sync_neigh_cnt
      Src: /src/frr/zebra/zebra_evpn_neigh.c:368,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:375,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:379,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:384,1
    - Dst: zebra_evpn_neigh_hold_exp_cb
      Src: /src/frr/zebra/zebra_evpn_neigh.c:400,1
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:408,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:412,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:415,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:416,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:417,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:418,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:419,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:422,1
    - Dst: zebra_evpn_sync_neigh_static_chg
      Src: /src/frr/zebra/zebra_evpn_neigh.c:429,1
    - Dst: zebra_evpn_neigh_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:435,1
    - Dst: zebra_evpn_neigh_start_hold_timer
      Src: /src/frr/zebra/zebra_evpn_neigh.c:439,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:445,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_evpn_neigh.c:447,1
    - Dst: zebra_evpn_local_neigh_deref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:451,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:464,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:466,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:468,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:474,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_evpn_neigh.c:479,1
    - Dst: zebra_evpn_deref_ip2mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:480,1
    - Dst: zebra_evpn_neigh_is_bgp_seq_ok
      Src: /src/frr/zebra/zebra_evpn_neigh.c:483,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:492,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:502,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:505,1
    - Dst: zebra_vxlan_get_accept_bgp_seq
      Src: /src/frr/zebra/zebra_evpn_neigh.c:516,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:519,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:528,1
    - Dst: zebra_evpn_neigh_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:541,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_neigh.c:550,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_neigh.c:551,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_evpn_neigh.c:552,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_neigh.c:558,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:561,1
    - Dst: zebra_evpn_local_neigh_ref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:562,1
    - Dst: zebra_evpn_neigh_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:571,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_evpn_neigh.c:576,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_neigh.c:579,1
    - Dst: zebra_evpn_neigh_stop_hold_timer
      Src: /src/frr/zebra/zebra_evpn_neigh.c:582,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_evpn_neigh.c:585,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:586,1
    - Dst: zebra_evpn_sync_neigh_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:591,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:597,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:600,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:601,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:602,1
    - Dst: zebra_evpn_neigh_start_hold_timer
      Src: /src/frr/zebra/zebra_evpn_neigh.c:603,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:604,1
    - Dst: zebra_evpn_sync_neigh_static_chg
      Src: /src/frr/zebra/zebra_evpn_neigh.c:607,1
    - Dst: zebra_evpn_proc_sync_neigh_update
      Src: /src/frr/zebra/zebra_evpn_neigh.c:612,1
    - Dst: zevpn_map_to_svi
      Src: /src/frr/zebra/zebra_evpn_neigh.c:632,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:636,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:637,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:643,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:644,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:645,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:647,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:648,1
    - Dst: zebra_evpn_neigh_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:650,1
    - Dst: ZEBRA_NEIGH_SET_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:653,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:666,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:667,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:668,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:670,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:675,1
    - Dst: zebra_evpn_local_neigh_deref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:680,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:689,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:701,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:702,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:708,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:709,1
    - Dst: zebra_evpn_neigh_start_hold_timer
      Src: /src/frr/zebra/zebra_evpn_neigh.c:710,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:713,1
    - Dst: zebra_evpn_neigh_stop_hold_timer
      Src: /src/frr/zebra/zebra_evpn_neigh.c:717,1
    - Dst: ZEBRA_NEIGH_SET_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:719,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:722,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:727,1
    - Dst: zebra_evpn_local_neigh_ref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:732,1
    - Dst: zebra_evpn_sync_neigh_static_chg
      Src: /src/frr/zebra/zebra_evpn_neigh.c:741,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_neigh.c:753,1
    - Dst: MAX
      Src: /src/frr/zebra/zebra_evpn_neigh.c:759,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:767,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:769,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:774,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:778,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:780,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:785,1
    - Dst: zebra_evpn_sync_neigh_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:794,1
    - Dst: zebra_evpn_neigh_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:799,1
    - Dst: zebra_evpn_neigh_uninstall
      Src: /src/frr/zebra/zebra_evpn_neigh.c:808,1
    - Dst: zevpn_map_to_svi
      Src: /src/frr/zebra/zebra_evpn_neigh.c:816,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:820,1
    - Dst: dplane_rem_neigh_delete
      Src: /src/frr/zebra/zebra_evpn_neigh.c:823,1
    - Dst: zebra_evpn_neigh_del_hash_entry
      Src: /src/frr/zebra/zebra_evpn_neigh.c:831,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_evpn_neigh.c:842,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:844,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:849,1
    - Dst: zebra_evpn_sync_neigh_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:850,1
    - Dst: zebra_evpn_neigh_uninstall
      Src: /src/frr/zebra/zebra_evpn_neigh.c:855,1
    - Dst: zebra_evpn_neigh_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:858,1
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_evpn_neigh.c:867,1
    - Dst: neigh_walk_ctx
      Src: /src/frr/zebra/zebra_evpn_neigh.c:870,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_neigh.c:875,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_neigh.c:881,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:888,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_neigh.c:894,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_neigh.c:895,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:896,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_evpn_neigh.c:905,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:917,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_neigh.c:927,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:928,1
    - Dst: IS_ZEBRA_NEIGH_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:929,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_evpn_neigh.c:933,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:935,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:937,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 6
    argCount: 1
    argNames:
    - zmac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 940
    functionName: remote_neigh_count
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_do_dup_addr_detect
    - zebra_evpn_proc_sync_neigh_update
    - zebra_evpn_neigh_is_bgp_seq_ok
    - if_lookup_by_index_per_ns
    - zebra_evpn_neigh_is_static
    - zebra_evpn_mac_lookup
    - memcmp
    - zebra_evpn_local_neigh_ref_mac
    - IPV4_ADDR_SAME
    - zebra_evpn_neigh_add
    - hash_lookup
    - memset
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zebra_evpn_neigh_send_add_to_client
    - zebra_evpn_deref_ip2mac
    - zlog_debug
    - zebra_evpn_sync_neigh_dp_install
    - dplane_local_neigh_add
    - zebra_evpn_mac_is_static
    - zebra_evpn_sync_neigh_static_chg
    - zevpn_map_to_svi
    - zebra_evpn_neigh_hold_exp_cb
    - EVENT_ARG
    - hash_iterate
    - hash_get
    - zebra_evpn_process_neigh_on_local_mac_change
    - neigh_walk_ctx
    - zebra_evpn_neigh_del_hash_entry
    - zebra_ns_lookup
    - zebra_evpn_neigh_del_all
    - zebra_evpn_rem_neigh_install
    - IS_ZEBRA_NEIGH_INACTIVE
    - listnode_add_sort
    - zebra_evpn_neigh_del
    - zebra_evpn_sync_neigh_del
    - monotime
    - zebra_evpn_sync_mac_dp_install
    - UNSET_FLAG
    - sync_neigh_cnt
    - zebra_evpn_local_neigh_deref_mac
    - EVENT_OFF
    - XFREE
    - event_add_timer
    - listnode_delete
    - zebra_vxlan_get_accept_bgp_seq
    - zebra_evpn_neigh_start_hold_timer
    - zebra_evpn_install_neigh_hash
    - zebra_evpn_neigh_stop_hold_timer
    - memcpy
    - zebra_evpn_neigh_alloc
    - hash_release
    - MAX
    - zebra_evpn_macip_send_msg_to_client
    - zebra_evpn_neigh_is_ready_for_bgp
    - dplane_rem_neigh_add
    - CHECK_FLAG
    - dplane_rem_neigh_delete
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_send_del_to_client
    - SET_FLAG
    - zebra_evpn_neigh_send_add_del_to_client
    - zebra_evpn_neigh_uninstall
    - ZEBRA_NEIGH_SET_INACTIVE
    - ZEBRA_NEIGH_SET_ACTIVE
    linkageType: ''
    returnType: int
    signature: int remote_neigh_count(struct zebra_mac *zmac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:956,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_neigh.c:965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:966,1
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:967,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:968,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:970,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:982,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:989,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_neigh.c:995,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:996,1
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:997,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:998,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1000,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1012,1
    - Dst: zebra_evpn_local_neigh_update_log
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1018,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1026,1
    - Dst: zebra_evpn_ip_inherit_dad_from_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1040,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1048,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1055,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1058,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1066,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1067,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1069,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1071,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1075,1
    - Dst: zebra_evpn_dad_ip_auto_recovery_exp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1083,1
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1089,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1092,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1096,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1100,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1105,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1110,1
    - Dst: ZEBRA_NEIGH_SET_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1119,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1123,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1124,1
    - Dst: zebra_evpn_dup_addr_detect_for_neigh
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1128,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1143,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1145,1
    - Dst: monotime_since
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1168,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 2
    argNames:
    - zevpn
    - zmac
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 949
    functionDepth: 2
    functionLinenumber: 949
    functionLinenumberEnd: 1197
    functionName: zebra_evpn_process_neigh_on_local_mac_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_local_neigh_update_log
    - zebra_evpn_do_dup_addr_detect
    - vrf_info_lookup
    - zebra_evpn_ip_inherit_dad_from_mac
    - zebra_evpn_dad_ip_auto_recovery_exp
    - zebra_evpn_process_neigh_on_remote_mac_add
    - ALL_LIST_ELEMENTS_RO
    - zebra_evpn_neigh_send_add_to_client
    - zlog_debug
    - EVENT_ARG
    - zebra_evpn_rem_neigh_install
    - zebra_evpn_lookup
    - zebra_evpn_process_neigh_on_remote_mac_del
    - monotime
    - zebra_evpn_dup_addr_detect_for_neigh
    - UNSET_FLAG
    - monotime_since
    - IS_ZEBRA_NEIGH_ACTIVE
    - CHECK_FLAG
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_send_del_to_client
    - SET_FLAG
    - ZEBRA_NEIGH_SET_INACTIVE
    - ZEBRA_NEIGH_SET_ACTIVE
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_process_neigh_on_local_mac_del(struct zebra_evpn *zevpn,\n\t\t\t\t\t
      \      struct zebra_mac *zmac)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1267,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1271,1
    - Dst: zebra_evpn_mac_add_auto
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1274,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1276,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1281,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1296,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1302,1
    - Dst: zebra_evpn_neigh_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1305,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1308,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1312,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1317,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1320,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1323,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1325,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1326,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1331,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1344,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1347,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1351,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1354,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1357,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1368,1
    - Dst: zebra_evpn_local_neigh_update_log
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1371,1
    - Dst: zebra_evpn_sync_neigh_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1377,1
    - Dst: zebra_evpn_neigh_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1386,1
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1391,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1392,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1411,1
    - Dst: zebra_evpn_local_neigh_deref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1416,1
    - Dst: zebra_evpn_neigh_clear_sync_info
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1423,1
    - Dst: zebra_evpn_local_neigh_ref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1429,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1431,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1436,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1441,1
    - Dst: zebra_evpn_local_neigh_deref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1446,1
    - Dst: zebra_evpn_local_neigh_ref_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1451,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1461,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1463,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1474,1
    - Dst: MAX
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1478,1
    - Dst: MAX
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1478,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1483,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1485,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1489,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1491,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1495,1
    - Dst: zebra_evpn_ip_inherit_dad_from_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1502,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1503,1
    - Dst: zebra_evpn_dup_addr_detect_for_neigh
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1517,1
    - Dst: zebra_evpn_sync_neigh_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1521,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1528,1
    - Dst: zebra_evpn_local_neigh_update_log
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1529,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1532,1
    - Dst: zebra_evpn_local_neigh_update_log
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1538,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1548,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1553,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1557,1
    - Dst: ZEBRA_NEIGH_SET_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1565,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1566,1
    - Dst: zebra_evpn_neigh_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1567,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1571,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 144
    argCount: 7
    argNames:
    - zevpn
    - ifp
    - ip
    - macaddr
    - is_router
    - local_inactive
    - dp_static
    argTypes:
    - struct zebra_evpn*
    - struct interface*
    - struct ipaddr*
    - struct ethaddr*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1244
    functionDepth: 3
    functionLinenumber: 1244
    functionLinenumberEnd: 1574
    functionName: zebra_evpn_local_neigh_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_mac_send_add_to_client
    - zebra_evpn_do_dup_addr_detect
    - zebra_evpn_local_neigh_update_log
    - zebra_evpn_neigh_is_static
    - zebra_evpn_mac_lookup
    - memcmp
    - zebra_evpn_local_neigh_ref_mac
    - zebra_evpn_neigh_add
    - zebra_evpn_ip_inherit_dad_from_mac
    - flog_warn
    - zlog_debug
    - zebra_evpn_sync_neigh_dp_install
    - zebra_evpn_process_neigh_on_local_mac_change
    - zebra_evpn_dup_addr_detect_for_neigh
    - UNSET_FLAG
    - zebra_evpn_local_neigh_deref_mac
    - MAX
    - IS_ZEBRA_NEIGH_ACTIVE
    - zebra_evpn_neigh_clear_sync_info
    - zebra_evpn_neigh_is_ready_for_bgp
    - CHECK_FLAG
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_send_del_to_client
    - SET_FLAG
    - zebra_evpn_mac_add_auto
    - zebra_evpn_neigh_send_add_del_to_client
    - ZEBRA_NEIGH_SET_INACTIVE
    - ZEBRA_NEIGH_SET_ACTIVE
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_local_neigh_update(struct zebra_evpn *zevpn,\n\t\t\t\t
      \ struct interface *ifp,\n\t\t\t\t  const struct ipaddr *ip,\n\t\t\t\t  const
      struct ethaddr *macaddr, bool is_router,\n\t\t\t\t  bool local_inactive, bool
      dp_static)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1586,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1591,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1594,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1603,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1604,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1605,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1611,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1612,1
    - Dst: ZEBRA_NEIGH_SET_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1613,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - zevpn
    - ifp
    - ip
    - macaddr
    - state
    argTypes:
    - struct zebra_evpn*
    - struct interface*
    - struct ipaddr*
    - struct ethaddr*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1576
    functionDepth: 1
    functionLinenumber: 1576
    functionLinenumberEnd: 1618
    functionName: zebra_evpn_remote_neigh_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_rem_neigh_install
    - CHECK_FLAG
    - zebra_evpn_mac_lookup
    - zebra_evpn_neigh_lookup
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - ZEBRA_NEIGH_SET_ACTIVE
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_remote_neigh_update(struct zebra_evpn *zevpn,\n\t\t\t\t
      \  struct interface *ifp,\n\t\t\t\t   const struct ipaddr *ip,\n\t\t\t\t   const
      struct ethaddr *macaddr,\n\t\t\t\t   uint16_t state)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1629,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1632,1
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1633,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1634,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1638,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1642
    functionName: zebra_evpn_send_neigh_hash_entry_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zebra_evpn_neigh_send_add_to_client
    - IS_ZEBRA_NEIGH_ACTIVE
    - zebra_evpn_mac_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_send_neigh_hash_entry_to_client(struct hash_bucket
      *bucket,\n\t\t\t\t\t   void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1649,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1645
    functionDepth: 1
    functionLinenumber: 1645
    functionLinenumberEnd: 1654
    functionName: zebra_evpn_send_neigh_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 2
    functionsReached:
    - hash_iterate
    - memset
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_send_neigh_to_client(struct zebra_evpn *zevpn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1669,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1673,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1674,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1678,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1685,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1686,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1689,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1690,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1656
    functionDepth: 1
    functionLinenumber: 1656
    functionLinenumberEnd: 1692
    functionName: zebra_evpn_clear_dup_neigh_hash
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_rem_neigh_install
    - CHECK_FLAG
    - zebra_evpn_neigh_send_add_to_client
    - zlog_debug
    - UNSET_FLAG
    - EVENT_OFF
    - ipaddr2str
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_clear_dup_neigh_hash(struct hash_bucket *bucket, void
      *ctxt)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1713,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1714,1
    - Dst: frrtime_to_interval
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1717,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1719,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1720,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1721,1
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1722,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1727,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1728,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1729,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1730,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1731,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1732,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1733,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1734,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1735,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1736,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1739,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1740,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1743,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1744,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1748,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1749,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1755,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1756,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1758,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1759,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1760,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1761,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1763,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1764,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1765,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1767,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1768,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1770,1
    - Dst: event_timer_to_hhmmss
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1772,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1776,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1779,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1782,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1786,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1789,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1793,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1795,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1798,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1800,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1802,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1809,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1810,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1813,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1814,1
    - Dst: time_to_string
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1815,1
    - Dst: monotime_since
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1818,1
    - Dst: time_to_string
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1821,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1823,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1829,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1830,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1831,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1832,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1833,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1835,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 97
    argCount: 3
    argNames:
    - n
    - ctxt
    - json
    argTypes:
    - struct zebra_neigh*
    - void*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1697
    functionDepth: 2
    functionLinenumber: 1697
    functionLinenumberEnd: 1837
    functionName: zebra_evpn_print_neigh
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 3
    functionsReached:
    - event_timer_to_hhmmss
    - vty_out
    - prefix_mac2str
    - CHECK_FLAG
    - json_object_boolean_false_add
    - monotime
    - zebra_vrf_get_evpn
    - json_object_int_add
    - json_object_boolean_true_add
    - time_to_string
    - json_object_string_add
    - monotime_since
    - json_object_string_addf
    - ipaddr2str
    - IS_ZEBRA_NEIGH_ACTIVE
    - frrtime_to_interval
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_print_neigh(struct zebra_neigh *n, void *ctxt,\n\t\t\t
      \   json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1841,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - wctx
    argTypes:
    - struct vty*
    - struct neigh_walk_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1839
    functionDepth: 1
    functionLinenumber: 1839
    functionLinenumberEnd: 1845
    functionName: zebra_evpn_print_neigh_hdr
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 4
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_neigh_hdr(struct vty *vty, struct neigh_walk_ctx
      *wctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - n
    - flags_buf
    - flags_buf_sz
    argTypes:
    - struct zebra_neigh*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1860
      start: 1847
    functionDepth: 0
    functionLinenumber: 1847
    functionLinenumberEnd: 1860
    functionName: zebra_evpn_print_neigh_flags
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *zebra_evpn_print_neigh_flags(struct zebra_neigh *n,\n\t\t\t\t\t
      \ char *flags_buf,\n\t\t\t\t\t  uint32_t flags_buf_sz)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1882,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1884,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1885,1
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1886,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1887,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1892,1
    - Dst: zebra_evpn_print_neigh_flags
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1894,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1898,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1899,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1900,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1901,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1902,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1904,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1906,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1910,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1911,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1914,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1918,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1920,1
    - Dst: zebra_evpn_print_neigh_hdr
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1926,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1929,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1932,1
    - Dst: zebra_evpn_print_neigh_flags
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1934,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1939,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1940,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1941,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1943,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1946,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1948,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1949,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1951,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1953,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1955,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1957,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1958,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1961,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1968,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1865
    functionDepth: 2
    functionLinenumber: 1865
    functionLinenumberEnd: 1969
    functionName: zebra_evpn_print_neigh_hash
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - zebra_evpn_print_neigh_hdr
    - vty_out
    - prefix_mac2str
    - CHECK_FLAG
    - json_object_boolean_false_add
    - zebra_evpn_print_neigh_flags
    - json_object_int_add
    - IPV4_ADDR_SAME
    - json_object_boolean_true_add
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - ipaddr2str
    - IS_ZEBRA_NEIGH_ACTIVE
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_neigh_hash(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1988,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1990,1
    - Dst: zebra_evpn_print_neigh
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1992,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:1995,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1974
    functionDepth: 3
    functionLinenumber: 1974
    functionLinenumberEnd: 1996
    functionName: zebra_evpn_print_neigh_hash_detail
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - ipaddr2str
    - json_object_object_add
    - json_object_new_object
    - zebra_evpn_print_neigh
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_neigh_hash_detail(struct hash_bucket *bucket,
      void *ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2006,1
    - Dst: zebra_evpn_print_neigh_hash
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 1998
    functionDepth: 3
    functionLinenumber: 1998
    functionLinenumberEnd: 2008
    functionName: zebra_evpn_print_dad_neigh_hash
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_print_neigh_hash
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_dad_neigh_hash(struct hash_bucket *bucket, void
      *ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2019,1
    - Dst: zebra_evpn_print_neigh_hash_detail
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2020,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 2010
    functionDepth: 4
    functionLinenumber: 2010
    functionLinenumberEnd: 2021
    functionName: zebra_evpn_print_dad_neigh_hash_detail
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zebra_evpn_print_neigh_hash_detail
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_print_dad_neigh_hash_detail(struct hash_bucket *bucket,\n\t\t\t\t\t
      \   void *ctxt)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2038,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2039,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2044,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2045,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2046,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2047,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2048,1
    - Dst: zebra_evpn_neigh_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2053,1
    - Dst: zebra_evpn_neigh_is_bgp_seq_ok
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2065,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2068,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2069,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2071,1
    - Dst: IS_ZEBRA_NEIGH_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2075,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2076,1
    - Dst: zebra_evpn_neigh_clear_sync_info
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2080,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2082,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2087,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2089,1
    - Dst: zebra_evpn_deref_ip2mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2091,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2094,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2095,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2111,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2118,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2123,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2124,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2126,1
    - Dst: zebra_evpn_ip_inherit_dad_from_mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2131,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2132,1
    - Dst: zebra_evpn_dup_addr_detect_for_neigh
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2139,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2143,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 7
    argNames:
    - zevpn
    - zvrf
    - ipaddr
    - mac
    - vtep_ip
    - flags
    - seq
    argTypes:
    - struct zebra_evpn*
    - struct zebra_vrf*
    - struct ipaddr*
    - struct zebra_mac*
    - struct in_addr
    - uint8_t
    - uint32_t
    assertStmts:
    - condition: (mac)
      pos:
        line_end: 2037
        line_start: 2037
        source_file: /src/frr/zebra/zebra_evpn_neigh.c
    constantsTouched: []
    func_position:
      end: 2148
      start: 2023
    functionDepth: 3
    functionLinenumber: 2023
    functionLinenumberEnd: 2148
    functionName: zebra_evpn_neigh_remote_macip_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_neigh_is_bgp_seq_ok
    - zebra_evpn_neigh_is_static
    - memcmp
    - zebra_evpn_mac_lookup
    - IPV4_ADDR_SAME
    - zebra_evpn_neigh_add
    - zebra_evpn_ip_inherit_dad_from_mac
    - flog_warn
    - zebra_evpn_deref_ip2mac
    - zlog_debug
    - assert
    - zebra_evpn_rem_neigh_install
    - listnode_add_sort
    - zebra_evpn_dup_addr_detect_for_neigh
    - UNSET_FLAG
    - listnode_delete
    - IS_ZEBRA_NEIGH_ACTIVE
    - memcpy
    - zebra_evpn_neigh_clear_sync_info
    - CHECK_FLAG
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_send_del_to_client
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_neigh_remote_macip_add(struct zebra_evpn *zevpn,\n\t\t\t\t
      \      struct zebra_vrf *zvrf,\n\t\t\t\t       const struct ipaddr *ipaddr,\n\t\t\t\t
      \      struct zebra_mac *mac,\n\t\t\t\t       struct in_addr vtep_ip, uint8_t
      flags,\n\t\t\t\t       uint32_t seq)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2156,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2158,1
    - Dst: zebra_evpn_neigh_add
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2160,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2163,1
    - Dst: ZEBRA_NEIGH_SET_ACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2164,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2165,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2169,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2171,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2174,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2177,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2182,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2184,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2186,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2188,1
    - Dst: zebra_evpn_neigh_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - ifp
    - zevpn
    - ip
    - mac
    argTypes:
    - struct interface*
    - struct zebra_evpn*
    - struct ipaddr*
    - struct zebra_mac*
    assertStmts:
    - condition: (mac)
      pos:
        line_end: 2155
        line_start: 2155
        source_file: /src/frr/zebra/zebra_evpn_neigh.c
    constantsTouched: []
    func_position:
      end: 2198
      start: 2150
    functionDepth: 1
    functionLinenumber: 2150
    functionLinenumberEnd: 2198
    functionName: zebra_evpn_neigh_gw_macip_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - advertise_gw_macip_enabled
    - zebra_evpn_neigh_send_add_to_client
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_add
    - SET_FLAG
    - zlog_debug
    - memcpy
    - ZEBRA_NEIGH_SET_ACTIVE
    - assert
    - advertise_svi_macip_enabled
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_neigh_gw_macip_add(struct interface *ifp,\n\t\t\t\t
      \ struct zebra_evpn *zevpn, struct ipaddr *ip,\n\t\t\t\t  struct zebra_mac *mac)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2206,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2207,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2208,1
    - Dst: zevpn_map_to_svi
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2211,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2213,1
    - Dst: neigh_read_specific_ip
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2218,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2227,1
    - Dst: zebra_evpn_sync_neigh_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2228,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2229,1
    - Dst: zebra_evpn_neigh_uninstall
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2230,1
    - Dst: zebra_evpn_neigh_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2231,1
    - Dst: zebra_evpn_deref_ip2mac
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2232,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2236,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 5
    argNames:
    - zevpn
    - zvrf
    - n
    - mac
    - ipaddr
    argTypes:
    - struct zebra_evpn*
    - struct zebra_vrf*
    - struct zebra_neigh*
    - struct zebra_mac*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2241
      start: 2200
    functionDepth: 1
    functionLinenumber: 2200
    functionLinenumberEnd: 2241
    functionName: zebra_evpn_neigh_remote_uninstall
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 0
    functionsReached:
    - neigh_read_specific_ip
    - zebra_evpn_neigh_del
    - zebra_evpn_sync_neigh_del
    - CHECK_FLAG
    - memcmp
    - zebra_evpn_deref_ip2mac
    - zlog_debug
    - zebra_evpn_neigh_uninstall
    - zevpn_map_to_svi
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_neigh_remote_uninstall(struct zebra_evpn *zevpn,\n\t\t\t\t
      \      struct zebra_vrf *zvrf,\n\t\t\t\t       struct zebra_neigh *n,\n\t\t\t\t
      \      struct zebra_mac *mac,\n\t\t\t\t       const struct ipaddr *ipaddr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2252,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2256,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2259,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2270,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2271,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2278,1
    - Dst: zebra_evpn_neigh_is_static
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2279,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2281,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2285,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2286,1
    - Dst: zebra_evpn_neigh_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2288,1
    - Dst: zebra_evpn_neigh_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2289,1
    - Dst: zebra_evpn_sync_neigh_dp_install
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2293,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2302,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2311,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2312,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2315,1
    - Dst: zebra_evpn_neigh_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2320,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2323,1
    - Dst: zebra_evpn_mac_in_use
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2324,1
    - Dst: zebra_evpn_mac_del
      Src: /src/frr/zebra/zebra_evpn_neigh.c:2325,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - zevpn
    - ip
    argTypes:
    - struct zebra_evpn*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2243
    functionDepth: 2
    functionLinenumber: 2243
    functionLinenumberEnd: 2328
    functionName: zebra_evpn_neigh_del_ip
    functionSourceFile: /src/frr/zebra/zebra_evpn_neigh.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_rem_neigh_install
    - zebra_evpn_neigh_del
    - zebra_evpn_neigh_is_ready_for_bgp
    - CHECK_FLAG
    - zebra_evpn_mac_del
    - zebra_evpn_neigh_is_static
    - zebra_evpn_mac_in_use
    - zebra_evpn_mac_lookup
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_send_del_to_client
    - zlog_debug
    - SET_FLAG
    - zebra_evpn_sync_neigh_dp_install
    - zebra_evpn_neigh_send_add_del_to_client
    - ZEBRA_NEIGH_SET_INACTIVE
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_neigh_del_ip(struct zebra_evpn *zevpn, const struct
      ipaddr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_mlag.h:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: zebra_mlag_reset_read_buffer
    functionSourceFile: /src/frr/zebra/zebra_mlag.h
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void zebra_mlag_reset_read_buffer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _client
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: DYNAMIC_CLIENT_GR_DISABLED
    functionSourceFile: /src/frr/zebra/zserv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DYNAMIC_CLIENT_GR_DISABLED(_client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:64,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:65,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:66,1
    - Dst: stream_putq
      Src: /src/frr/zebra/zapi_msg.c:67,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:68,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:69,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:70,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:71,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:72,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:73,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:74,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:75,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:76,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:77,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:79,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/zebra/zapi_msg.c:82,1
    - Dst: IS_LINK_PARAMS_SET
      Src: /src/frr/zebra/zapi_msg.c:82,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:83,1
    - Dst: zebra_interface_link_params_write
      Src: /src/frr/zebra/zapi_msg.c:84,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:86,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:89,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - s
    - ifp
    argTypes:
    - struct stream*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 90
    functionName: zserv_encode_interface
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - IS_LINK_PARAMS_SET
    - stream_put
    - zebra_interface_link_params_write
    - stream_get_endp
    - stream_putw_at
    - HAS_LINK_PARAMS
    - stream_putq
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void zserv_encode_interface(struct stream *s, struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zvrf_ns_name
      Src: /src/frr/zebra/zapi_msg.c:95,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:97,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zapi_msg.c:101,1
    - Dst: basename
      Src: /src/frr/zebra/zapi_msg.c:101,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:104,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:106,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:108,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zapi_msg.c:108,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:110,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - zvrf
    argTypes:
    - struct stream*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 111
    functionName: zserv_encode_vrf
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - stream_put
    - memset
    - zvrf_name
    - zvrf_ns_name
    - strlcpy
    - stream_get_endp
    - stream_putw_at
    - basename
    linkageType: ''
    returnType: void
    signature: void zserv_encode_vrf(struct stream *s, struct zebra_vrf *zvrf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:115,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:116,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zapi_msg.c:120,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:121,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:125,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:126,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - s
    - nexthop
    argTypes:
    - struct stream*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 136
    functionName: zserv_encode_nexthop
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - stream_put_in_addr
    - stream_put
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zserv_encode_nexthop(struct stream *s, struct nexthop *nexthop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:151,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:154,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s
    - error
    argTypes:
    - struct stream*
    - enum zebra_error_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 155
    functionName: zserv_encode_error
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_get_endp
    - stream_putw_at
    linkageType: ''
    returnType: void
    signature: void zserv_encode_error(struct stream *s, enum zebra_error_types error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:172,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:174,1
    - Dst: zserv_encode_interface
      Src: /src/frr/zebra/zapi_msg.c:175,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - client
    - ifp
    argTypes:
    - struct zserv*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: zsend_interface_add
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 2
    functionsReached:
    - zserv_encode_interface
    - stream_new
    - zserv_send_message
    - zclient_create_header
    linkageType: ''
    returnType: int
    signature: int zsend_interface_add(struct zserv *client, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:184,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:186,1
    - Dst: zserv_encode_interface
      Src: /src/frr/zebra/zapi_msg.c:187,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - client
    - ifp
    argTypes:
    - struct zserv*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 191
    functionName: zsend_interface_delete
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 2
    functionsReached:
    - zserv_encode_interface
    - stream_new
    - zserv_send_message
    - zclient_create_header
    linkageType: ''
    returnType: int
    signature: int zsend_interface_delete(struct zserv *client, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:195,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:197,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:197,1
    - Dst: zserv_encode_vrf
      Src: /src/frr/zebra/zapi_msg.c:198,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - client
    - zvrf
    argTypes:
    - struct zserv*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 202
    functionName: zsend_vrf_add
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 2
    functionsReached:
    - stream_new
    - zclient_create_header
    - zvrf_id
    - zserv_send_message
    - zserv_encode_vrf
    linkageType: ''
    returnType: int
    signature: int zsend_vrf_add(struct zserv *client, struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:208,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:210,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:210,1
    - Dst: zserv_encode_vrf
      Src: /src/frr/zebra/zapi_msg.c:211,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - client
    - zvrf
    argTypes:
    - struct zserv*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 215
    functionName: zsend_vrf_delete
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 1
    functionsReached:
    - stream_new
    - zclient_create_header
    - zvrf_id
    - zserv_send_message
    - zserv_encode_vrf
    linkageType: ''
    returnType: int
    signature: int zsend_vrf_delete(struct zserv *client, struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:219,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:221,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:224,1
    - Dst: zebra_interface_link_params_write
      Src: /src/frr/zebra/zapi_msg.c:227,1
    - Dst: stream_free
      Src: /src/frr/zebra/zapi_msg.c:228,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:233,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:233,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - client
    - ifp
    argTypes:
    - struct zserv*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 236
    functionName: zsend_interface_link_params
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 3
    functionsReached:
    - stream_free
    - stream_new
    - zclient_create_header
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zebra_interface_link_params_write
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zsend_interface_link_params(struct zserv *client, struct interface
      *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:281,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:283,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:284,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:287,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:291,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:292,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:293,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:301,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:306,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:308,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:311,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:311,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - cmd
    - client
    - ifp
    - ifc
    argTypes:
    - int
    - struct zserv*
    - struct interface*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 315
    functionName: zsend_interface_address
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 2
    functionsReached:
    - stream_new
    - zclient_create_header
    - stream_put
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - prefix_blen
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zsend_interface_address(int cmd, struct zserv *client,\n\t\t\t
      \   struct interface *ifp, struct connected *ifc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:322,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:325,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:326,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:330,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:331,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:332,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:340,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:343,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:343,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - cmd
    - client
    - ifp
    - ifc
    argTypes:
    - int
    - struct zserv*
    - struct interface*
    - struct nbr_connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 346
    functionName: zsend_interface_nbr_address
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - stream_new
    - zclient_create_header
    - stream_put
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - prefix_blen
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zsend_interface_nbr_address(int cmd, struct zserv *client,\n\t\t\t\t
      \      struct interface *ifp,\n\t\t\t\t       struct nbr_connected *ifc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:360,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zapi_msg.c:362,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zapi_msg.c:367,1
    - Dst: zsend_interface_nbr_address
      Src: /src/frr/zebra/zapi_msg.c:372,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct nbr_connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 375
    functionName: zebra_interface_nbr_address_add_update
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zsend_interface_nbr_address
    - inet_ntop
    - zlog_debug
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void zebra_interface_nbr_address_add_update(struct interface *ifp,\n\t\t\t\t\t\t
      \  struct nbr_connected *ifc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:389,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zapi_msg.c:391,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zapi_msg.c:396,1
    - Dst: zsend_interface_nbr_address
      Src: /src/frr/zebra/zapi_msg.c:401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct nbr_connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 404
    functionName: zebra_interface_nbr_address_delete_update
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zsend_interface_nbr_address
    - inet_ntop
    - zlog_debug
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void zebra_interface_nbr_address_delete_update(struct interface *ifp,\n\t\t\t\t\t\t
      \     struct nbr_connected *ifc)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zapi_msg.c:414,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:415,1
    - Dst: if
      Src: /src/frr/zebra/zapi_msg.c:418,1
    - Dst: zsend_interface_address
      Src: /src/frr/zebra/zapi_msg.c:418,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zapi_msg.c:425,1
    - Dst: zsend_interface_nbr_address
      Src: /src/frr/zebra/zapi_msg.c:426,1
    - Dst: zsend_interface_vrf_update
      Src: /src/frr/zebra/zapi_msg.c:438,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:441,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:443,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:446,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:447,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:450,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:450,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:453,1
    - Dst: nbr_connected_add_ipv6
      Src: /src/frr/zebra/zapi_msg.c:457,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/zapi_msg.c:463,1
    - Dst: listnode_head
      Src: /src/frr/zebra/zapi_msg.c:466,1
    - Dst: nbr_connected_new
      Src: /src/frr/zebra/zapi_msg.c:469,1
    - Dst: prefix_new
      Src: /src/frr/zebra/zapi_msg.c:470,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zapi_msg.c:472,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zapi_msg.c:475,1
    - Dst: zebra_interface_nbr_address_add_update
      Src: /src/frr/zebra/zapi_msg.c:477,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/zapi_msg.c:479,1
    - Dst: nbr_connected_delete_ipv6
      Src: /src/frr/zebra/zapi_msg.c:482,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/zapi_msg.c:488,1
    - Dst: nbr_connected_check
      Src: /src/frr/zebra/zapi_msg.c:491,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zapi_msg.c:495,1
    - Dst: zebra_interface_nbr_address_delete_update
      Src: /src/frr/zebra/zapi_msg.c:497,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/zapi_msg.c:499,1
    - Dst: nbr_connected_free
      Src: /src/frr/zebra/zapi_msg.c:501,1
    - Dst: zsend_interface_update
      Src: /src/frr/zebra/zapi_msg.c:514,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:516,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:518,1
    - Dst: zserv_encode_interface
      Src: /src/frr/zebra/zapi_msg.c:519,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:526,1
    - Dst: zsend_redistribute_route
      Src: /src/frr/zebra/zapi_msg.c:529,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/zebra/zapi_msg.c:542,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:543,1
    - Dst: family2afi
      Src: /src/frr/zebra/zapi_msg.c:550,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:573,1
    - Dst: memcpy
      Src: /src/frr/zebra/zapi_msg.c:574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:579,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:608,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:613,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:615,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:618,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:621,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:624,1
    - Dst: zapi_route_encode
      Src: /src/frr/zebra/zapi_msg.c:627,1
    - Dst: stream_free
      Src: /src/frr/zebra/zapi_msg.c:628,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:633,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zapi_msg.c:634,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:635,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:636,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:638,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 79
    argCount: 2
    argNames:
    - client
    - ifp
    argTypes:
    - struct zserv*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 407
    functionDepth: 3
    functionLinenumber: 407
    functionLinenumberEnd: 639
    functionName: zsend_interface_addresses
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 1
    functionsReached:
    - stream_put
    - zebra_interface_nbr_address_add_update
    - zserv_send_message
    - listnode_add
    - zebra_interface_nbr_address_delete_update
    - srcdest_rnode_prefixes
    - zsend_interface_nbr_address
    - nbr_connected_new
    - zsend_redistribute_route
    - nbr_connected_add_ipv6
    - memset
    - if_nbr_ipv6ll_to_ipv4ll_neigh_update
    - stream_putw_at
    - zlog_debug
    - nbr_connected_check
    - if
    - prefix_copy
    - stream_free
    - prefix_new
    - zserv_command_string
    - nbr_connected_delete_ipv6
    - zapi_route_encode
    - listnode_head
    - listnode_delete
    - family2afi
    - zsend_interface_update
    - zebra_route_string
    - memcpy
    - stream_new
    - zclient_create_header
    - CHECK_FLAG
    - stream_get_endp
    - zsend_interface_vrf_update
    - SET_FLAG
    - zsend_interface_address
    - nbr_connected_free
    - ALL_LIST_ELEMENTS
    - IPV6_ADDR_COPY
    - zserv_encode_interface
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zsend_interface_addresses(struct zserv *client, struct interface
      *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:664,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zapi_msg.c:665,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:668,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:668,1
    - Dst: stream_put_ipaddr
      Src: /src/frr/zebra/zapi_msg.c:669,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:674,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:675,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:678,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:680,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zapi_msg.c:681,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zapi_msg.c:682,1
    - Dst: rnh_nexthop_valid
      Src: /src/frr/zebra/zapi_msg.c:683,1
    - Dst: zserv_encode_nexthop
      Src: /src/frr/zebra/zapi_msg.c:684,1
    - Dst: stream_putc_at
      Src: /src/frr/zebra/zapi_msg.c:688,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:690,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:691,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:692,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:695,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:695,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:697,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - client
    - addr
    - re
    - zvrf
    argTypes:
    - struct zserv*
    - struct ipaddr*
    - struct route_entry*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 654
    functionDepth: 2
    functionLinenumber: 654
    functionLinenumberEnd: 698
    functionName: zsend_nexthop_lookup_mrib
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - rib_get_fib_nhg
    - zserv_encode_nexthop
    - stream_new
    - zclient_create_header
    - stream_putc
    - zvrf_id
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - rnh_nexthop_valid
    - stream_reset
    - stream_putc_at
    - stream_put_ipaddr
    - ALL_NEXTHOPS_PTR
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zsend_nexthop_lookup_mrib(struct zserv *client, struct ipaddr
      *addr,\n\t\t\t\t     struct route_entry *re,\n\t\t\t\t     struct zebra_vrf
      *zvrf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client_session
      Src: /src/frr/zebra/zapi_msg.c:706,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:709,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:716,1
    - Dst: zapi_nhg_notify_owner2str
      Src: /src/frr/zebra/zapi_msg.c:717,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:719,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zapi_msg.c:720,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:722,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:724,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:725,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:727,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:727,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:729,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - type
    - instance
    - session_id
    - id
    - note
    argTypes:
    - uint16_t
    - uint16_t
    - uint32_t
    - uint32_t
    - enum zapi_nhg_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 730
    functionName: zsend_nhg_notify
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - stream_new
    - zclient_create_header
    - stream_put
    - zserv_send_message
    - zserv_find_client_session
    - zapi_nhg_notify_owner2str
    - stream_putw_at
    - stream_get_endp
    - zlog_debug
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zsend_nhg_notify(uint16_t type, uint16_t instance, uint32_t session_id,\n\t\t
      \    uint32_t id, enum zapi_nhg_notify_owner note)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zapi_msg.c:746,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:749,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:751,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:757,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:759,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:764,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zapi_msg.c:766,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:768,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:770,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:772,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:774,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:775,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:776,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:778,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:781,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:782,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:784,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:784,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:786,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 8
    argNames:
    - rn
    - type
    - instance
    - vrf_id
    - table_id
    - note
    - afi
    - safi
    argTypes:
    - struct route_node*
    - int
    - uint16_t
    - vrf_id_t
    - uint32_t
    - enum zapi_route_notify_owner
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 787
    functionName: route_notify_internal
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zserv_find_client
    - stream_new
    - zclient_create_header
    - stream_put
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - prefix_blen
    - stream_reset
    - zebra_route_string
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int route_notify_internal(const struct route_node *rn, int type,\n\t\t\t\t
      uint16_t instance, vrf_id_t vrf_id,\n\t\t\t\t uint32_t table_id,\n\t\t\t\t enum
      zapi_route_notify_owner note, afi_t afi,\n\t\t\t\t safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_notify_internal
      Src: /src/frr/zebra/zapi_msg.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rn
    - re
    - note
    - afi
    - safi
    argTypes:
    - struct route_node*
    - struct route_entry*
    - enum zapi_route_notify_owner
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 789
    functionDepth: 2
    functionLinenumber: 789
    functionLinenumberEnd: 796
    functionName: zsend_route_notify_owner
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - route_notify_internal
    linkageType: ''
    returnType: int
    signature: "int zsend_route_notify_owner(const struct route_node *rn,\n\t\t\t
      \    struct route_entry *re,\n\t\t\t     enum zapi_route_notify_owner note,
      afi_t afi,\n\t\t\t     safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rib_find_rn_from_ctx
      Src: /src/frr/zebra/zapi_msg.c:805,1
    - Dst: route_notify_internal
      Src: /src/frr/zebra/zapi_msg.c:807,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/zapi_msg.c:808,1
    - Dst: dplane_ctx_get_instance
      Src: /src/frr/zebra/zapi_msg.c:808,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zapi_msg.c:809,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zapi_msg.c:809,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/zapi_msg.c:810,1
    - Dst: dplane_ctx_get_safi
      Src: /src/frr/zebra/zapi_msg.c:810,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zapi_msg.c:812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - note
    argTypes:
    - struct zebra_dplane_ctx*
    - enum zapi_route_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 801
    functionDepth: 2
    functionLinenumber: 801
    functionLinenumberEnd: 815
    functionName: zsend_route_notify_owner_ctx
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - dplane_ctx_get_type
    - dplane_ctx_get_vrf
    - dplane_ctx_get_afi
    - dplane_ctx_get_table
    - route_notify_internal
    - dplane_ctx_get_safi
    - dplane_ctx_get_instance
    - rib_find_rn_from_ctx
    linkageType: ''
    returnType: int
    signature: "int zsend_route_notify_owner_ctx(const struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      enum zapi_route_notify_owner note)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 825
    functionName: zread_route_notify_request
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - STREAM_GETC
    linkageType: ''
    returnType: void
    signature: void zread_route_notify_request(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:835,1
    - Dst: dplane_ctx_rule_get_unique
      Src: /src/frr/zebra/zapi_msg.c:836,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zapi_msg.c:838,1
    - Dst: dplane_ctx_rule_get_sock
      Src: /src/frr/zebra/zapi_msg.c:839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - note
    argTypes:
    - struct zebra_dplane_ctx*
    - enum zapi_rule_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 827
    functionDepth: 1
    functionLinenumber: 827
    functionLinenumberEnd: 841
    functionName: zsend_rule_notify_owner
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - dplane_ctx_rule_get_sock
    - zlog_debug
    - dplane_ctx_rule_get_unique
    linkageType: ''
    returnType: void
    signature: "void zsend_rule_notify_owner(const struct zebra_dplane_ctx *ctx,\n\t\t\t
      \    enum zapi_rule_notify_owner note)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zapi_msg.c:869,1
    - Dst: dplane_ctx_get_pbr_iptable
      Src: /src/frr/zebra/zapi_msg.c:871,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zapi_msg.c:873,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:876,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:878,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:881,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:883,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:887,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zapi_msg.c:888,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zapi_msg.c:890,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - note
    argTypes:
    - struct zebra_dplane_ctx*
    - enum zapi_iptable_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 893
    functionName: zsend_iptable_notify_owner
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - CHECK_FLAG
    - zserv_command_string
    - ALL_LIST_ELEMENTS_RO
    - hash_lookup
    - zlog_debug
    - UNSET_FLAG
    - dplane_ctx_get_pbr_iptable
    linkageType: ''
    returnType: void
    signature: "void zsend_iptable_notify_owner(const struct zebra_dplane_ctx *ctx,\n\t\t\t\tenum
      zapi_iptable_notify_owner note)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_pbr_ipset
      Src: /src/frr/zebra/zapi_msg.c:918,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:921,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zapi_msg.c:922,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zapi_msg.c:924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - note
    argTypes:
    - struct zebra_dplane_ctx*
    - enum zapi_ipset_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 927
    functionName: zsend_ipset_notify_owner
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_pbr_ipset
    - zserv_command_string
    - zlog_debug
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: "void zsend_ipset_notify_owner(const struct zebra_dplane_ctx *ctx,\n\t\t\t
      \     enum zapi_ipset_notify_owner note)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_pbr_ipset_entry
      Src: /src/frr/zebra/zapi_msg.c:953,1
    - Dst: dplane_ctx_get_pbr_ipset
      Src: /src/frr/zebra/zapi_msg.c:954,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:957,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zapi_msg.c:958,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zapi_msg.c:960,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - note
    argTypes:
    - struct zebra_dplane_ctx*
    - enum zapi_ipset_entry_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 963
    functionName: zsend_ipset_entry_notify_owner
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zserv_command_string
    - ALL_LIST_ELEMENTS_RO
    - dplane_ctx_get_pbr_ipset_entry
    - dplane_ctx_get_pbr_ipset
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void zsend_ipset_entry_notify_owner(const struct zebra_dplane_ctx
      *ctx,\n\t\t\t\t    enum zapi_ipset_entry_notify_owner note)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:990,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/zapi_msg.c:992,1
    - Dst: ipaddr_family
      Src: /src/frr/zebra/zapi_msg.c:992,1
    - Dst: family2afi
      Src: /src/frr/zebra/zapi_msg.c:993,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/zapi_msg.c:993,1
    - Dst: memcpy
      Src: /src/frr/zebra/zapi_msg.c:994,1
    - Dst: sockunion_get_addr
      Src: /src/frr/zebra/zapi_msg.c:994,1
    - Dst: family2addrsize
      Src: /src/frr/zebra/zapi_msg.c:995,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/zapi_msg.c:995,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zapi_msg.c:997,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/zebra/zapi_msg.c:998,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1002,1
    - Dst: zclient_neigh_ip_encode
      Src: /src/frr/zebra/zapi_msg.c:1003,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1005,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1005,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1006,1
    - Dst: zsend_router_id_update
      Src: /src/frr/zebra/zapi_msg.c:1012,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/zebra/zapi_msg.c:1019,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1022,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1025,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:1028,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:1029,1
    - Dst: stream_put
      Src: /src/frr/zebra/zapi_msg.c:1030,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:1031,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1034,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1034,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1036,1
    - Dst: zsend_pw_update
      Src: /src/frr/zebra/zapi_msg.c:1042,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1044,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1046,1
    - Dst: stream_write
      Src: /src/frr/zebra/zapi_msg.c:1047,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:1048,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:1049,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1052,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1052,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1054,1
    - Dst: zsend_assign_label_chunk_response
      Src: /src/frr/zebra/zapi_msg.c:1058,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1061,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1063,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:1065,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zapi_msg.c:1067,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:1071,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:1073,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:1074,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1078,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1078,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1080,1
    - Dst: zsend_label_manager_connect_response
      Src: /src/frr/zebra/zapi_msg.c:1084,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1087,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1089,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:1092,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zapi_msg.c:1095,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:1098,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1101,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1101,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1103,1
    - Dst: zsend_assign_table_chunk_response
      Src: /src/frr/zebra/zapi_msg.c:1107,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1111,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1113,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:1117,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:1118,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1122,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1122,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1124,1
    - Dst: zsend_table_manager_connect_response
      Src: /src/frr/zebra/zapi_msg.c:1127,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1131,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1133,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:1136,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1138,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1138,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1140,1
    - Dst: zsend_zebra_srv6_locator_add
      Src: /src/frr/zebra/zapi_msg.c:1144,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1146,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1148,1
    - Dst: zapi_srv6_locator_encode
      Src: /src/frr/zebra/zapi_msg.c:1149,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1150,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1150,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1152,1
    - Dst: zsend_zebra_srv6_locator_delete
      Src: /src/frr/zebra/zapi_msg.c:1156,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:1159,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:1161,1
    - Dst: zapi_srv6_locator_encode
      Src: /src/frr/zebra/zapi_msg.c:1162,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:1163,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:1163,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:1165,1
    - Dst: zread_rnh_register
      Src: /src/frr/zebra/zapi_msg.c:1171,1
    - Dst: safi_t
      Src: /src/frr/zebra/zapi_msg.c:1182,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1185,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:1187,1
    - Dst: monotime
      Src: /src/frr/zebra/zapi_msg.c:1193,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1196,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1197,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1198,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1199,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1200,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1205,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:1210,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1215,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:1220,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:1223,1
    - Dst: zebra_add_rnh
      Src: /src/frr/zebra/zapi_msg.c:1229,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:1229,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1234,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1235,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1237,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1238,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1241,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zapi_msg.c:1248,1
    - Dst: family2afi
      Src: /src/frr/zebra/zapi_msg.c:1248,1
    - Dst: zebra_add_rnh_client
      Src: /src/frr/zebra/zapi_msg.c:1251,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:1251,1
    - Dst: zread_rnh_unregister
      Src: /src/frr/zebra/zapi_msg.c:1259,1
    - Dst: safi_t
      Src: /src/frr/zebra/zapi_msg.c:1265,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1268,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:1270,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1278,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1281,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1285,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1286,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1287,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1292,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:1297,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1302,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:1307,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:1310,1
    - Dst: zebra_lookup_rnh
      Src: /src/frr/zebra/zapi_msg.c:1316,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:1316,1
    - Dst: monotime
      Src: /src/frr/zebra/zapi_msg.c:1318,1
    - Dst: zebra_remove_rnh_client
      Src: /src/frr/zebra/zapi_msg.c:1319,1
    - Dst: zread_fec_register
      Src: /src/frr/zebra/zapi_msg.c:1329,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zapi_msg.c:1339,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:1348,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1356,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:1357,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1358,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:1360,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1366,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1370,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:1376,1
    - Dst: PSIZE
      Src: /src/frr/zebra/zapi_msg.c:1376,1
    - Dst: PSIZE
      Src: /src/frr/zebra/zapi_msg.c:1377,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:1379,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:1382,1
    - Dst: zebra_mpls_fec_register
      Src: /src/frr/zebra/zapi_msg.c:1386,1
    - Dst: zread_fec_unregister
      Src: /src/frr/zebra/zapi_msg.c:1394,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zapi_msg.c:1402,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:1411,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1419,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:1423,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1424,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:1426,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1432,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1436,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:1442,1
    - Dst: PSIZE
      Src: /src/frr/zebra/zapi_msg.c:1442,1
    - Dst: PSIZE
      Src: /src/frr/zebra/zapi_msg.c:1443,1
    - Dst: zebra_mpls_fec_unregister
      Src: /src/frr/zebra/zapi_msg.c:1444,1
    - Dst: zread_interface_add
      Src: /src/frr/zebra/zapi_msg.c:1456,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:1461,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/zapi_msg.c:1463,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1465,1
    - Dst: zsend_interface_add
      Src: /src/frr/zebra/zapi_msg.c:1468,1
    - Dst: zsend_interface_link_params
      Src: /src/frr/zebra/zapi_msg.c:1469,1
    - Dst: zsend_interface_addresses
      Src: /src/frr/zebra/zapi_msg.c:1470,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zapi_msg.c:1475,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/zapi_msg.c:1476,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1478,1
    - Dst: zsend_interface_add
      Src: /src/frr/zebra/zapi_msg.c:1481,1
    - Dst: zsend_interface_link_params
      Src: /src/frr/zebra/zapi_msg.c:1482,1
    - Dst: zsend_interface_addresses
      Src: /src/frr/zebra/zapi_msg.c:1483,1
    - Dst: zread_interface_delete
      Src: /src/frr/zebra/zapi_msg.c:1489,1
    - Dst: zread_interface_set_protodown
      Src: /src/frr/zebra/zapi_msg.c:1496,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:1503,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:1504,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zapi_msg.c:1507,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zapi_msg.c:1507,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:1510,1
    - Dst: zebra_if_set_protodown
      Src: /src/frr/zebra/zapi_msg.c:1529,1
    - Dst: zserv_nexthop_num_warn
      Src: /src/frr/zebra/zapi_msg.c:1535,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zapi_msg.c:1542,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:1544,1
    - Dst: nexthop_from_zapi
      Src: /src/frr/zebra/zapi_msg.c:1558,1
    - Dst: nexthop_from_ifindex
      Src: /src/frr/zebra/zapi_msg.c:1569,1
    - Dst: NEXTHOP_TYPE_IPV4
      Src: /src/frr/zebra/zapi_msg.c:1571,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zapi_msg.c:1573,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1575,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/zebra/zapi_msg.c:1578,1
    - Dst: NEXTHOP_TYPE_IPV4_IFINDEX
      Src: /src/frr/zebra/zapi_msg.c:1581,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zapi_msg.c:1583,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1585,1
    - Dst: nexthop_from_ipv4_ifindex
      Src: /src/frr/zebra/zapi_msg.c:1590,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1597,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1598,1
    - Dst: NEXTHOP_TYPE_IPV6
      Src: /src/frr/zebra/zapi_msg.c:1602,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zapi_msg.c:1604,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1606,1
    - Dst: nexthop_from_ipv6
      Src: /src/frr/zebra/zapi_msg.c:1609,1
    - Dst: NEXTHOP_TYPE_IPV6_IFINDEX
      Src: /src/frr/zebra/zapi_msg.c:1611,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zapi_msg.c:1613,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1615,1
    - Dst: nexthop_from_ipv6_ifindex
      Src: /src/frr/zebra/zapi_msg.c:1619,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1626,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1627,1
    - Dst: NEXTHOP_TYPE_BLACKHOLE
      Src: /src/frr/zebra/zapi_msg.c:1631,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1633,1
    - Dst: nexthop_from_blackhole
      Src: /src/frr/zebra/zapi_msg.c:1637,1
    - Dst: done
      Src: /src/frr/zebra/zapi_msg.c:1643,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1649,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1650,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:1652,1
    - Dst: connected_is_unnumbered
      Src: /src/frr/zebra/zapi_msg.c:1653,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1654,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1657,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1660,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1664,1
    - Dst: nexthop_free
      Src: /src/frr/zebra/zapi_msg.c:1666,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1672,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1681,1
    - Dst: nexthop_free
      Src: /src/frr/zebra/zapi_msg.c:1684,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 18
    argCount: 5
    argNames:
    - cmd
    - ifp
    - ipaddr
    - ndm_state
    - link_layer_ipv4
    argTypes:
    - int
    - struct interface*
    - struct ipaddr*
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 979
    functionDepth: 5
    functionLinenumber: 979
    functionLinenumberEnd: 1689
    functionName: zsend_nhrp_neighbor_notify
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zebra_remove_rnh_client
    - NEXTHOP_TYPE_IPV6_IFINDEX
    - flog_err
    - NEXTHOP_TYPE_IPV4_IFINDEX
    - flog_warn
    - zsend_pw_update
    - memset
    - STREAM_GETW
    - zclient_neigh_ip_encode
    - zread_rnh_register
    - zread_fec_unregister
    - nexthop_from_ifindex
    - zebra_mpls_fec_register
    - memcpy
    - zread_interface_set_protodown
    - nexthop_from_ipv4_ifindex
    - stream_putw
    - STREAM_GETL
    - nexthop_from_zapi
    - ALL_LIST_ELEMENTS
    - zread_rnh_unregister
    - sockunion_family
    - zsend_assign_label_chunk_response
    - zserv_nexthop_num_warn
    - stream_putc
    - if_lookup_by_index
    - zsend_label_manager_connect_response
    - PSIZE
    - stream_putw_at
    - inet_ntop
    - prefix_blen
    - nexthop_from_blackhole
    - safi_t
    - zebra_add_rnh
    - zebra_ns_lookup
    - monotime
    - zsend_zebra_srv6_locator_delete
    - zsend_router_id_update
    - zclient_create_header
    - zebra_mpls_fec_unregister
    - zsend_interface_addresses
    - NEXTHOP_TYPE_IPV6
    - RB_FOREACH
    - stream_putl
    - stream_put
    - zread_fec_register
    - STREAM_GETC
    - family2addrsize
    - nexthop_from_ipv6_ifindex
    - vrf_bitmap_check
    - nexthop_from_ipv6
    - done
    - FOR_ALL_INTERFACES
    - zlog_debug
    - zebra_add_rnh_client
    - zread_interface_delete
    - nexthop_free
    - stream_new
    - zebra_evaluate_rnh
    - zsend_interface_add
    - connected_is_unnumbered
    - zsend_assign_table_chunk_response
    - SET_FLAG
    - nexthop_from_ipv4
    - prefix2str
    - zsend_table_manager_connect_response
    - sockunion_get_addr
    - ipaddr_family
    - if_lookup_by_index_per_ns
    - zserv_send_message
    - zread_interface_add
    - zsend_zebra_srv6_locator_add
    - zlog_warn
    - NEXTHOP_TYPE_BLACKHOLE
    - zebra_if_set_protodown
    - zvrf_id
    - stream_write
    - zebra_vrf_lookup_by_id
    - NEXTHOP_TYPE_IPV4
    - UNSET_FLAG
    - zebra_lookup_rnh
    - family2afi
    - zebra_route_string
    - zsend_interface_link_params
    - CHECK_FLAG
    - stream_get_endp
    - STREAM_GET
    - zapi_srv6_locator_encode
    linkageType: ''
    returnType: void
    signature: "void zsend_nhrp_neighbor_notify(int cmd, struct interface *ifp,\n\t\t\t\tstruct
      ipaddr *ipaddr, int ndm_state,\n\t\t\t\tunion sockunion *link_layer_ipv4)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zapi_msg.c:1707,1
    - Dst: nexthop_group_new
      Src: /src/frr/zebra/zapi_msg.c:1710,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1714,1
    - Dst: zebra_nhg_backup_alloc
      Src: /src/frr/zebra/zapi_msg.c:1717,1
    - Dst: nexthop_from_zapi
      Src: /src/frr/zebra/zapi_msg.c:1733,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:1735,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zapi_msg.c:1740,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zapi_msg.c:1742,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1747,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zapi_msg.c:1749,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1750,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1753,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1757,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1758,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1763,1
    - Dst: lsp_type_from_re_type
      Src: /src/frr/zebra/zapi_msg.c:1773,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zapi_msg.c:1775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1780,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1783,1
    - Dst: seg6local_action2str
      Src: /src/frr/zebra/zapi_msg.c:1785,1
    - Dst: nexthop_add_srv6_seg6local
      Src: /src/frr/zebra/zapi_msg.c:1788,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:1793,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1796,1
    - Dst: nexthop_add_srv6_seg6
      Src: /src/frr/zebra/zapi_msg.c:1798,1
    - Dst: nexthop2str
      Src: /src/frr/zebra/zapi_msg.c:1805,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zapi_msg.c:1809,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1815,1
    - Dst: nexthop_group_add_sorted
      Src: /src/frr/zebra/zapi_msg.c:1828,1
    - Dst: NEXTHOP_APPEND
      Src: /src/frr/zebra/zapi_msg.c:1836,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 71
    argCount: 9
    argNames:
    - client
    - p
    - nhops
    - flags
    - message
    - nexthop_num
    - backup_nh_num
    - png
    - pbnhg
    argTypes:
    - struct zserv*
    - struct prefix*
    - struct zapi_nexthop*
    - uint32_t
    - uint32_t
    - uint16_t
    - uint16_t
    - struct nexthop_group**
    - struct nhg_backup_info**
    assertStmts:
    - condition: (!(png && pbnhg))
      pos:
        line_end: 1706
        line_start: 1706
        source_file: /src/frr/zebra/zapi_msg.c
    constantsTouched: []
    func_position:
      end: 1853
      start: 1695
    functionDepth: 1
    functionLinenumber: 1695
    functionLinenumberEnd: 1853
    functionName: zapi_read_nexthops
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_backup_alloc
    - lsp_type_from_re_type
    - nexthop2str
    - flog_warn
    - nexthop_group_new
    - NEXTHOP_APPEND
    - nexthop_group_delete
    - zlog_debug
    - nexthop_add_srv6_seg6
    - zebra_nhg_backup_free
    - nexthop_from_zapi
    - assert
    - seg6local_action2str
    - nexthop_group_add_sorted
    - UNSET_FLAG
    - CHECK_FLAG
    - mpls_label2str
    - SET_FLAG
    - nexthop_add_srv6_seg6local
    - nexthop_add_labels
    linkageType: ''
    returnType: bool
    signature: "bool zapi_read_nexthops(struct zserv *client, struct prefix *p,\n\t\t\t
      \      struct zapi_nexthop *nhops, uint32_t flags,\n\t\t\t       uint32_t message,
      uint16_t nexthop_num,\n\t\t\t       uint16_t backup_nh_num,\n\t\t\t       struct
      nexthop_group **png,\n\t\t\t       struct nhg_backup_info **pbnhg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1860,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:1861,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1866,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:1867,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:1868,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1871,1
    - Dst: zserv_nexthop_num_warn
      Src: /src/frr/zebra/zapi_msg.c:1873,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:1877,1
    - Dst: zapi_nexthop_decode
      Src: /src/frr/zebra/zapi_msg.c:1885,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:1886,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:1893,1
    - Dst: zserv_nexthop_num_warn
      Src: /src/frr/zebra/zapi_msg.c:1895,1
    - Dst: zapi_nexthop_decode
      Src: /src/frr/zebra/zapi_msg.c:1901,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:1902,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:1913,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 3
    argNames:
    - s
    - cmd
    - api_nhg
    argTypes:
    - struct stream*
    - int
    - struct zapi_nhg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1918
    functionName: zapi_nhg_decode
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zapi_nexthop_decode
    - flog_warn
    - STREAM_GETW
    - STREAM_GETL
    - zserv_nexthop_num_warn
    linkageType: ''
    returnType: int
    signature: int zapi_nhg_decode(struct stream *s, int cmd, struct zapi_nhg *api_nhg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nhg_decode
      Src: /src/frr/zebra/zapi_msg.c:1927,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1929,1
    - Dst: zebra_nhg_proto_del
      Src: /src/frr/zebra/zapi_msg.c:1937,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zapi_msg.c:1940,1
    - Dst: zsend_nhg_notify
      Src: /src/frr/zebra/zapi_msg.c:1941,1
    - Dst: zsend_nhg_notify
      Src: /src/frr/zebra/zapi_msg.c:1945,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1920
    functionDepth: 2
    functionLinenumber: 1920
    functionLinenumberEnd: 1948
    functionName: zread_nhg_del
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zsend_nhg_notify
    - zebra_nhg_proto_del
    - zapi_nhg_decode
    - zlog_debug
    - zebra_nhg_decrement_ref
    linkageType: ''
    returnType: void
    signature: void zread_nhg_del(ZAPI_HANDLER_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nhg_decode
      Src: /src/frr/zebra/zapi_msg.c:1959,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:1961,1
    - Dst: zapi_read_nexthops
      Src: /src/frr/zebra/zapi_msg.c:1966,1
    - Dst: zapi_read_nexthops
      Src: /src/frr/zebra/zapi_msg.c:1969,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:1973,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zapi_msg.c:1977,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zapi_msg.c:1978,1
    - Dst: zebra_nhg_alloc
      Src: /src/frr/zebra/zapi_msg.c:1984,1
    - Dst: rib_queue_nhe_add
      Src: /src/frr/zebra/zapi_msg.c:2008,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zapi_msg.c:2011,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zapi_msg.c:2012,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 1950
    functionDepth: 2
    functionLinenumber: 1950
    functionLinenumberEnd: 2014
    functionName: zread_nhg_add
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - zebra_nhg_alloc
    - rib_queue_nhe_add
    - zapi_read_nexthops
    - nexthop_group_delete
    - zapi_nhg_decode
    - zlog_debug
    - zebra_nhg_backup_free
    linkageType: ''
    returnType: void
    signature: void zread_nhg_add(ZAPI_HANDLER_ARGS)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_decode
      Src: /src/frr/zebra/zapi_msg.c:2030,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2032,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2037,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2040,1
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/zapi_msg.c:2045,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2050,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2051,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:2053,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:2057,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2059,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2064,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2067,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:2069,1
    - Dst: zapi_read_nexthops
      Src: /src/frr/zebra/zapi_msg.c:2074,1
    - Dst: zapi_read_nexthops
      Src: /src/frr/zebra/zapi_msg.c:2077,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zapi_msg.c:2082,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zapi_msg.c:2083,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2084,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2088,1
    - Dst: XMALLOC
      Src: /src/frr/zebra/zapi_msg.c:2090,1
    - Dst: memcpy
      Src: /src/frr/zebra/zapi_msg.c:2093,1
    - Dst: family2afi
      Src: /src/frr/zebra/zapi_msg.c:2096,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2097,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:2098,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zapi_msg.c:2101,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zapi_msg.c:2102,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2103,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2104,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2107,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:2111,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zapi_msg.c:2114,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zapi_msg.c:2115,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2116,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2117,1
    - Dst: zebra_nhe_init
      Src: /src/frr/zebra/zapi_msg.c:2132,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zapi_msg.c:2135,1
    - Dst: rib_add_multipath_nhe
      Src: /src/frr/zebra/zapi_msg.c:2137,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2146,1
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2147,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zapi_msg.c:2154,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zapi_msg.c:2156,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2173
      start: 2016
    functionDepth: 2
    functionLinenumber: 2016
    functionLinenumberEnd: 2173
    functionName: zread_route_add
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - zvrf_id
    - CHECK_FLAG
    - zapi_read_nexthops
    - XMALLOC
    - nexthop_group_delete
    - zapi_route_decode
    - zebra_nhe_init
    - zlog_debug
    - zebra_nhe_copy
    - zebra_rib_route_entry_new
    - XFREE
    - family2afi
    - zebra_nhg_backup_free
    - zebra_route_string
    - rib_add_multipath_nhe
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zread_route_add(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zapi_msg.c:2177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opaque
    argTypes:
    - struct re_opaque*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2175
    functionDepth: 0
    functionLinenumber: 2175
    functionLinenumberEnd: 2178
    functionName: zapi_re_opaque_free
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zapi_re_opaque_free(struct re_opaque *opaque)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_decode
      Src: /src/frr/zebra/zapi_msg.c:2189,1
    - Dst: family2afi
      Src: /src/frr/zebra/zapi_msg.c:2192,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2193,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:2194,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2199,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2208,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2209,1
    - Dst: rib_delete
      Src: /src/frr/zebra/zapi_msg.c:2212,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2212,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2225
      start: 2180
    functionDepth: 1
    functionLinenumber: 2180
    functionLinenumberEnd: 2225
    functionName: zread_route_del
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - zvrf_id
    - CHECK_FLAG
    - zapi_route_decode
    - zlog_debug
    - family2afi
    - rib_delete
    linkageType: ''
    returnType: void
    signature: void zread_route_del(ZAPI_HANDLER_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET_IPADDR
      Src: /src/frr/zebra/zapi_msg.c:2234,1
    - Dst: rib_match_multicast
      Src: /src/frr/zebra/zapi_msg.c:2239,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2239,1
    - Dst: rib_match_multicast
      Src: /src/frr/zebra/zapi_msg.c:2243,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2243,1
    - Dst: zsend_nexthop_lookup_mrib
      Src: /src/frr/zebra/zapi_msg.c:2250,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2254
      start: 2228
    functionDepth: 3
    functionLinenumber: 2228
    functionLinenumberEnd: 2254
    functionName: zread_nexthop_lookup_mrib
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - rib_match_multicast
    - STREAM_GET_IPADDR
    - zsend_nexthop_lookup_mrib
    - zvrf_id
    linkageType: ''
    returnType: void
    signature: void zread_nexthop_lookup_mrib(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2263,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:2266,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/zebra/zapi_msg.c:2273,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2273,1
    - Dst: router_id_get
      Src: /src/frr/zebra/zapi_msg.c:2275,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:2281,1
    - Dst: memcmp
      Src: /src/frr/zebra/zapi_msg.c:2284,1
    - Dst: zsend_router_id_update
      Src: /src/frr/zebra/zapi_msg.c:2289,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2289,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2257
    functionDepth: 1
    functionLinenumber: 2257
    functionLinenumberEnd: 2293
    functionName: zread_router_id_add
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zsend_router_id_update
    - memset
    - zvrf_id
    - memcmp
    - STREAM_GETW
    - zlog_warn
    - vrf_bitmap_set
    - router_id_get
    linkageType: ''
    returnType: void
    signature: void zread_router_id_add(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2300,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:2303,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/zapi_msg.c:2309,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2313
      start: 2296
    functionDepth: 1
    functionLinenumber: 2296
    functionLinenumberEnd: 2313
    functionName: zread_router_id_delete
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - STREAM_GETW
    - zlog_warn
    - vrf_bitmap_unset
    linkageType: ''
    returnType: void
    signature: void zread_router_id_delete(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:2317,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:2319,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:2320,1
    - Dst: vrf_get_backend
      Src: /src/frr/zebra/zapi_msg.c:2320,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:2321,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:2322,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:2323,1
    - Dst: zebra_mlag_get_role
      Src: /src/frr/zebra/zapi_msg.c:2323,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:2325,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:2325,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:2326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - client
    - zvrf
    argTypes:
    - struct zserv*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2327
      start: 2315
    functionDepth: 1
    functionLinenumber: 2315
    functionLinenumberEnd: 2327
    functionName: zsend_capabilities
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - vrf_get_backend
    - stream_new
    - zclient_create_header
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zebra_mlag_get_role
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void zsend_capabilities(struct zserv *client, struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zapi_msg.c:2335,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zapi_msg.c:2336,1
    - Dst: zsend_capabilities
      Src: /src/frr/zebra/zapi_msg.c:2341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2343
      start: 2329
    functionDepth: 2
    functionLinenumber: 2329
    functionLinenumberEnd: 2343
    functionName: zsend_capabilities_all_clients
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 1
    functionsReached:
    - zebra_vrf_lookup_by_id
    - ALL_LIST_ELEMENTS
    - zsend_capabilities
    linkageType: ''
    returnType: void
    signature: void zsend_capabilities_all_clients(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2355,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2356,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2357,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2358,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2359,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/zapi_msg.c:2368,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:2370,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/zapi_msg.c:2373,1
    - Dst: zebra_gr_client_reconnect
      Src: /src/frr/zebra/zapi_msg.c:2380,1
    - Dst: zsend_capabilities
      Src: /src/frr/zebra/zapi_msg.c:2384,1
    - Dst: zebra_vrf_update_all
      Src: /src/frr/zebra/zapi_msg.c:2385,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2389
      start: 2346
    functionDepth: 2
    functionLinenumber: 2346
    functionLinenumberEnd: 2389
    functionName: zread_hello
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zebra_gr_client_reconnect
    - STREAM_GETW
    - zsend_capabilities
    - STREAM_GETC
    - STREAM_GETL
    - zebra_vrf_update_all
    - zebra_route_string
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void zread_hello(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/zapi_msg.c:2399,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2399,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/zapi_msg.c:2400,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2400,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/zapi_msg.c:2401,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2401,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/zapi_msg.c:2402,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2392
    functionDepth: 1
    functionLinenumber: 2392
    functionLinenumberEnd: 2404
    functionName: zread_vrf_unregister
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - vrf_bitmap_unset
    linkageType: ''
    returnType: void
    signature: void zread_vrf_unregister(ZAPI_HANDLER_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:2426,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2438,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - zl
    argTypes:
    - struct zapi_labels*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2454
      start: 2409
    functionDepth: 1
    functionLinenumber: 2409
    functionLinenumberEnd: 2454
    functionName: zapi_labels_validate
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - memset
    linkageType: ''
    returnType: int
    signature: int zapi_labels_validate(const struct zapi_labels *zl)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zapi_labels_decode
      Src: /src/frr/zebra/zapi_msg.c:2471,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2473,1
    - Dst: zapi_labels_validate
      Src: /src/frr/zebra/zapi_msg.c:2482,1
    - Dst: mpls_zapi_labels_process
      Src: /src/frr/zebra/zapi_msg.c:2485,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2486
      start: 2464
    functionDepth: 2
    functionLinenumber: 2464
    functionLinenumberEnd: 2486
    functionName: zread_mpls_labels_add
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - mpls_zapi_labels_process
    - zlog_debug
    - zapi_labels_decode
    - zapi_labels_validate
    linkageType: ''
    returnType: void
    signature: void zread_mpls_labels_add(ZAPI_HANDLER_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zapi_labels_decode
      Src: /src/frr/zebra/zapi_msg.c:2505,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2507,1
    - Dst: mpls_zapi_labels_process
      Src: /src/frr/zebra/zapi_msg.c:2516,1
    - Dst: mpls_lsp_uninstall_all_vrf
      Src: /src/frr/zebra/zapi_msg.c:2518,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2520,1
    - Dst: mpls_ftn_uninstall
      Src: /src/frr/zebra/zapi_msg.c:2521,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2524
      start: 2498
    functionDepth: 5
    functionLinenumber: 2498
    functionLinenumberEnd: 2524
    functionName: zread_mpls_labels_delete
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - mpls_zapi_labels_process
    - CHECK_FLAG
    - zapi_labels_decode
    - zlog_debug
    - mpls_ftn_uninstall
    - mpls_lsp_uninstall_all_vrf
    linkageType: ''
    returnType: void
    signature: void zread_mpls_labels_delete(ZAPI_HANDLER_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zapi_labels_decode
      Src: /src/frr/zebra/zapi_msg.c:2545,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2547,1
    - Dst: zapi_labels_validate
      Src: /src/frr/zebra/zapi_msg.c:2556,1
    - Dst: mpls_lsp_uninstall_all_vrf
      Src: /src/frr/zebra/zapi_msg.c:2563,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zapi_msg.c:2564,1
    - Dst: mpls_ftn_uninstall
      Src: /src/frr/zebra/zapi_msg.c:2565,1
    - Dst: mpls_zapi_labels_process
      Src: /src/frr/zebra/zapi_msg.c:2568,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2538
    functionDepth: 5
    functionLinenumber: 2538
    functionLinenumberEnd: 2569
    functionName: zread_mpls_labels_replace
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - mpls_zapi_labels_process
    - CHECK_FLAG
    - zapi_labels_decode
    - zlog_debug
    - mpls_ftn_uninstall
    - zapi_labels_validate
    - mpls_lsp_uninstall_all_vrf
    linkageType: ''
    returnType: void
    signature: void zread_mpls_labels_replace(ZAPI_HANDLER_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zapi_sr_policy_decode
      Src: /src/frr/zebra/zapi_msg.c:2580,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2582,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2589,1
    - Dst: zebra_sr_policy_find
      Src: /src/frr/zebra/zapi_msg.c:2598,1
    - Dst: zebra_sr_policy_add
      Src: /src/frr/zebra/zapi_msg.c:2600,1
    - Dst: zebra_sr_policy_validate
      Src: /src/frr/zebra/zapi_msg.c:2606,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2571
    functionDepth: 2
    functionLinenumber: 2571
    functionLinenumberEnd: 2607
    functionName: zread_sr_policy_set
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_sr_policy_add
    - zapi_sr_policy_decode
    - zebra_sr_policy_validate
    - zebra_sr_policy_find
    linkageType: ''
    returnType: void
    signature: void zread_sr_policy_set(ZAPI_HANDLER_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zapi_sr_policy_decode
      Src: /src/frr/zebra/zapi_msg.c:2617,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2619,1
    - Dst: zebra_sr_policy_find
      Src: /src/frr/zebra/zapi_msg.c:2627,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2630,1
    - Dst: zebra_sr_policy_del
      Src: /src/frr/zebra/zapi_msg.c:2634,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2635
      start: 2609
    functionDepth: 2
    functionLinenumber: 2609
    functionLinenumberEnd: 2635
    functionName: zread_sr_policy_delete
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_sr_policy_find
    - zapi_sr_policy_decode
    - zebra_sr_policy_del
    linkageType: ''
    returnType: void
    signature: void zread_sr_policy_delete(ZAPI_HANDLER_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zapi_msg.c:2643,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2646,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2654,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:2659,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zapi_msg.c:2660,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:2662,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:2663,1
    - Dst: stream_put_ipaddr
      Src: /src/frr/zebra/zapi_msg.c:2664,1
    - Dst: stream_write
      Src: /src/frr/zebra/zapi_msg.c:2665,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:2666,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:2668,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:2668,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:2670,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - color
    - endpoint
    - name
    - status
    argTypes:
    - uint32_t
    - struct ipaddr*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2637
    functionDepth: 1
    functionLinenumber: 2637
    functionLinenumberEnd: 2671
    functionName: zsend_sr_policy_notify_status
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zserv_find_client
    - stream_new
    - zclient_create_header
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - zlog_debug
    - stream_reset
    - stream_put_ipaddr
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zsend_sr_policy_notify_status(uint32_t color, struct ipaddr *endpoint,\n\t\t\t\t
      \ char *name, int status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:2676,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:2678,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zapi_msg.c:2680,1
    - Dst: stream_putw
      Src: /src/frr/zebra/zapi_msg.c:2681,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:2682,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:2684,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:2684,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:2686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - client
    - closed_client
    argTypes:
    - struct zserv*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 2674
    functionDepth: 1
    functionLinenumber: 2674
    functionLinenumberEnd: 2687
    functionName: zsend_client_close_notify
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - stream_new
    - zclient_create_header
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zserv_send_message
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zsend_client_close_notify(struct zserv *client, struct zserv *closed_client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:2694,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zapi_msg.c:2696,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:2707,1
    - Dst: zapi_srv6_locator_chunk_encode
      Src: /src/frr/zebra/zapi_msg.c:2708,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:2709,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:2709,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:2710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 3
    argNames:
    - client
    - vrf_id
    - loc
    argTypes:
    - struct zserv*
    - vrf_id_t
    - struct srv6_locator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2689
    functionDepth: 1
    functionLinenumber: 2689
    functionLinenumberEnd: 2711
    functionName: zsend_srv6_manager_get_locator_chunk_response
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zapi_srv6_locator_chunk_encode
    - stream_new
    - zclient_create_header
    - strlcpy
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    linkageType: ''
    returnType: int
    signature: "int zsend_srv6_manager_get_locator_chunk_response(struct zserv *client,\n\t\t\t\t\t\t
      \ vrf_id_t vrf_id,\n\t\t\t\t\t\t  struct srv6_locator *loc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zapi_msg.c:2720,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2725,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2726,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:2730,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:2732,1
    - Dst: zsend_table_manager_connect_response
      Src: /src/frr/zebra/zapi_msg.c:2733,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/zapi_msg.c:2736,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zapi_msg.c:2737,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:2738,1
    - Dst: release_daemon_table_chunks
      Src: /src/frr/zebra/zapi_msg.c:2746,1
    - Dst: zsend_table_manager_connect_response
      Src: /src/frr/zebra/zapi_msg.c:2748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - client
    - msg
    - vrf_id
    argTypes:
    - struct zserv*
    - struct stream*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2752
      start: 2714
    functionDepth: 1
    functionLinenumber: 2714
    functionLinenumberEnd: 2752
    functionName: zread_table_manager_connect
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - release_daemon_table_chunks
    - zsend_table_manager_connect_response
    - STREAM_GETW
    - flog_err
    - STREAM_GETC
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - zebra_route_string
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: "void zread_table_manager_connect(struct zserv *client,\n\t\t\t\t\tstruct
      stream *msg, vrf_id_t vrf_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2766,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2767,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:2771,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zapi_msg.c:2773,1
    - Dst: zsend_label_manager_connect_response
      Src: /src/frr/zebra/zapi_msg.c:2774,1
    - Dst: lm_client_connect_call
      Src: /src/frr/zebra/zapi_msg.c:2783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - client
    - msg
    - vrf_id
    argTypes:
    - struct zserv*
    - struct stream*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2787
      start: 2754
    functionDepth: 2
    functionLinenumber: 2754
    functionLinenumberEnd: 2787
    functionName: zread_label_manager_connect
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zsend_label_manager_connect_response
    - STREAM_GETW
    - flog_err
    - STREAM_GETC
    - lm_client_connect_call
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void zread_label_manager_connect(struct zserv *client,\n\t\t\t\t\tstruct
      stream *msg, vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2803,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2804,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2805,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2806,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2807,1
    - Dst: assert
      Src: /src/frr/zebra/zapi_msg.c:2810,1
    - Dst: lm_get_chunk_call
      Src: /src/frr/zebra/zapi_msg.c:2814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - client
    - msg
    - vrf_id
    argTypes:
    - struct zserv*
    - struct stream*
    - vrf_id_t
    assertStmts:
    - condition: (proto == client->proto && instance == client->instance)
      pos:
        line_end: 2809
        line_start: 2809
        source_file: /src/frr/zebra/zapi_msg.c
    constantsTouched: []
    func_position:
      end: 2818
      start: 2789
    functionDepth: 2
    functionLinenumber: 2789
    functionLinenumberEnd: 2818
    functionName: zread_get_label_chunk
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - lm_get_chunk_call
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    - assert
    linkageType: ''
    returnType: void
    signature: "void zread_get_label_chunk(struct zserv *client, struct stream *msg,\n\t\t\t\t
      \ vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:2831,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2832,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2833,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2834,1
    - Dst: assert
      Src: /src/frr/zebra/zapi_msg.c:2837,1
    - Dst: lm_release_chunk_call
      Src: /src/frr/zebra/zapi_msg.c:2840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - client
    - msg
    argTypes:
    - struct zserv*
    - struct stream*
    assertStmts:
    - condition: (proto == client->proto && instance == client->instance)
      pos:
        line_end: 2836
        line_start: 2836
        source_file: /src/frr/zebra/zapi_msg.c
    constantsTouched: []
    func_position:
      end: 2844
      start: 2820
    functionDepth: 2
    functionLinenumber: 2820
    functionLinenumberEnd: 2844
    functionName: zread_release_label_chunk
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - lm_release_chunk_call
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    - assert
    linkageType: ''
    returnType: void
    signature: void zread_release_label_chunk(struct zserv *client, struct stream
      *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zread_label_manager_connect
      Src: /src/frr/zebra/zapi_msg.c:2850,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2850,1
    - Dst: zread_get_label_chunk
      Src: /src/frr/zebra/zapi_msg.c:2853,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2853,1
    - Dst: zread_release_label_chunk
      Src: /src/frr/zebra/zapi_msg.c:2855,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2857
      start: 2846
    functionDepth: 3
    functionLinenumber: 2846
    functionLinenumberEnd: 2857
    functionName: zread_label_manager_request
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zread_label_manager_connect
    - zread_get_label_chunk
    - zread_release_label_chunk
    - zvrf_id
    linkageType: ''
    returnType: void
    signature: void zread_label_manager_request(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2870,1
    - Dst: assign_table_chunk
      Src: /src/frr/zebra/zapi_msg.c:2872,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:2874,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:2878,1
    - Dst: zsend_assign_table_chunk_response
      Src: /src/frr/zebra/zapi_msg.c:2881,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - client
    - msg
    - zvrf
    argTypes:
    - struct zserv*
    - struct stream*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2885
      start: 2859
    functionDepth: 2
    functionLinenumber: 2859
    functionLinenumberEnd: 2885
    functionName: zread_get_table_chunk
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - assign_table_chunk
    - zvrf_id
    - flog_err
    - zsend_assign_table_chunk_response
    - zlog_debug
    - STREAM_GETL
    linkageType: ''
    returnType: void
    signature: "void zread_get_table_chunk(struct zserv *client, struct stream *msg,\n\t\t\t\t
      \ struct zebra_vrf *zvrf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2897,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:2898,1
    - Dst: release_table_chunk
      Src: /src/frr/zebra/zapi_msg.c:2900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - client
    - msg
    - zvrf
    argTypes:
    - struct zserv*
    - struct stream*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2904
      start: 2887
    functionDepth: 2
    functionLinenumber: 2887
    functionLinenumberEnd: 2904
    functionName: zread_release_table_chunk
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - release_table_chunk
    - STREAM_GETL
    linkageType: ''
    returnType: void
    signature: "void zread_release_table_chunk(struct zserv *client, struct stream
      *msg,\n\t\t\t\t      struct zebra_vrf *zvrf)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zread_table_manager_connect
      Src: /src/frr/zebra/zapi_msg.c:2910,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2910,1
    - Dst: flog_err
      Src: /src/frr/zebra/zapi_msg.c:2914,1
    - Dst: zread_get_table_chunk
      Src: /src/frr/zebra/zapi_msg.c:2920,1
    - Dst: zread_release_table_chunk
      Src: /src/frr/zebra/zapi_msg.c:2922,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2906
    functionDepth: 3
    functionLinenumber: 2906
    functionLinenumberEnd: 2924
    functionName: zread_table_manager_request
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - flog_err
    - zread_get_table_chunk
    - zread_release_table_chunk
    - zread_table_manager_connect
    linkageType: ''
    returnType: void
    signature: void zread_table_manager_request(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2935,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:2936,1
    - Dst: srv6_manager_get_locator_chunk_call
      Src: /src/frr/zebra/zapi_msg.c:2940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - client
    - msg
    - vrf_id
    argTypes:
    - struct zserv*
    - struct stream*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2944
      start: 2926
    functionDepth: 1
    functionLinenumber: 2926
    functionLinenumberEnd: 2944
    functionName: zread_srv6_manager_get_locator_chunk
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - STREAM_GETW
    - srv6_manager_get_locator_chunk_call
    - STREAM_GET
    linkageType: ''
    returnType: void
    signature: "void zread_srv6_manager_get_locator_chunk(struct zserv *client,\n\t\t\t\t\t\t
      struct stream *msg,\n\t\t\t\t\t\t vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:2955,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:2956,1
    - Dst: srv6_manager_release_locator_chunk_call
      Src: /src/frr/zebra/zapi_msg.c:2959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - client
    - msg
    - vrf_id
    argTypes:
    - struct zserv*
    - struct stream*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2963
      start: 2946
    functionDepth: 1
    functionLinenumber: 2946
    functionLinenumberEnd: 2963
    functionName: zread_srv6_manager_release_locator_chunk
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - STREAM_GETW
    - STREAM_GET
    - srv6_manager_release_locator_chunk_call
    linkageType: ''
    returnType: void
    signature: "void zread_srv6_manager_release_locator_chunk(struct zserv *client,\n\t\t\t\t\t\t
      \    struct stream *msg,\n\t\t\t\t\t\t     vrf_id_t vrf_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zread_srv6_manager_get_locator_chunk
      Src: /src/frr/zebra/zapi_msg.c:2969,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2970,1
    - Dst: zread_srv6_manager_release_locator_chunk
      Src: /src/frr/zebra/zapi_msg.c:2973,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:2974,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zapi_msg.c:2977,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2980
      start: 2965
    functionDepth: 2
    functionLinenumber: 2965
    functionLinenumberEnd: 2980
    functionName: zread_srv6_manager_request
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zread_srv6_manager_release_locator_chunk
    - zread_srv6_manager_get_locator_chunk
    - zlog_err
    linkageType: ''
    returnType: void
    signature: void zread_srv6_manager_request(ZAPI_HANDLER_ARGS)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3001,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3003,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3004,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3005,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3008,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3011,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3016,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3017,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3018,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3019,1
    - Dst: zebra_pw_find
      Src: /src/frr/zebra/zapi_msg.c:3022,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:3026,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zapi_msg.c:3029,1
    - Dst: zebra_pw_add
      Src: /src/frr/zebra/zapi_msg.c:3033,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:3037,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zapi_msg.c:3039,1
    - Dst: zebra_pw_del
      Src: /src/frr/zebra/zapi_msg.c:3043,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zapi_msg.c:3048,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zapi_msg.c:3050,1
    - Dst: zebra_pw_change
      Src: /src/frr/zebra/zapi_msg.c:3063,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 2982
    functionDepth: 1
    functionLinenumber: 2982
    functionLinenumberEnd: 3070
    functionName: zread_pseudowire
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - zebra_pw_find
    - zebra_pw_change
    - zserv_command_string
    - zebra_pw_add
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - zebra_pw_del
    linkageType: ''
    returnType: void
    signature: void zread_pseudowire(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3080,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3081,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:3082,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3084,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3085,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:3086,1
    - Dst: kernel_interface_set_master
      Src: /src/frr/zebra/zapi_msg.c:3091,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3095
      start: 3072
    functionDepth: 1
    functionLinenumber: 3072
    functionLinenumberEnd: 3095
    functionName: zread_interface_set_master
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - STREAM_GETL
    - kernel_interface_set_master
    linkageType: ''
    returnType: void
    signature: void zread_interface_set_master(ZAPI_HANDLER_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3108,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3109,1
    - Dst: IS_VALID_AFI
      Src: /src/frr/zebra/zapi_msg.c:3111,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3112,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3123,1
    - Dst: if_lookup_by_name
      Src: /src/frr/zebra/zapi_msg.c:3126,1
    - Dst: if_lookup_by_name
      Src: /src/frr/zebra/zapi_msg.c:3128,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:3131,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zapi_msg.c:3136,1
    - Dst: mpls_lsp_uninstall
      Src: /src/frr/zebra/zapi_msg.c:3157,1
    - Dst: mpls_lsp_install
      Src: /src/frr/zebra/zapi_msg.c:3164,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3173
      start: 3098
    functionDepth: 5
    functionLinenumber: 3098
    functionLinenumberEnd: 3173
    functionName: zread_vrf_label
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - mpls_lsp_uninstall
    - zlog_warn
    - STREAM_GETC
    - zlog_debug
    - STREAM_GETL
    - zebra_vrf_lookup_by_id
    - IS_VALID_AFI
    - mpls_lsp_install
    linkageType: ''
    returnType: void
    signature: void zread_vrf_label(ZAPI_HANDLER_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3183,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:3186,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3190,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3191,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3192,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3193,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3194,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3195,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3196,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3197,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3198,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3199,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3200,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3201,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3202,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3203,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3204,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3205,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3207,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3208,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3209,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3210,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3212,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3213,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zapi_msg.c:3215,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zapi_msg.c:3216,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/zapi_msg.c:3218,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/zapi_msg.c:3221,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3241,1
    - Dst: family2str
      Src: /src/frr/zebra/zapi_msg.c:3243,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3249,1
    - Dst: family2str
      Src: /src/frr/zebra/zapi_msg.c:3251,1
    - Dst: zebra_pbr_add_rule
      Src: /src/frr/zebra/zapi_msg.c:3259,1
    - Dst: zebra_pbr_del_rule
      Src: /src/frr/zebra/zapi_msg.c:3261,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3266
      start: 3175
    functionDepth: 4
    functionLinenumber: 3175
    functionLinenumberEnd: 3266
    functionName: zread_rule
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zebra_pbr_del_rule
    - is_default_prefix
    - memset
    - strlcpy
    - family2str
    - STREAM_GETW
    - zlog_warn
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    - zebra_pbr_add_rule
    linkageType: ''
    returnType: void
    signature: void zread_rule(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3275,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:3278,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3281,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3282,1
    - Dst: zebra_tc_qdisc_install
      Src: /src/frr/zebra/zapi_msg.c:3285,1
    - Dst: zebra_tc_qdisc_uninstall
      Src: /src/frr/zebra/zapi_msg.c:3287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3292
      start: 3268
    functionDepth: 4
    functionLinenumber: 3268
    functionLinenumberEnd: 3292
    functionName: zread_tc_qdisc
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zebra_tc_qdisc_install
    - zebra_tc_qdisc_uninstall
    - STREAM_GETL
    - memset
    linkageType: ''
    returnType: void
    signature: void zread_tc_qdisc(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3301,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:3304,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3307,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3308,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3309,1
    - Dst: STREAM_GETQ
      Src: /src/frr/zebra/zapi_msg.c:3310,1
    - Dst: STREAM_GETQ
      Src: /src/frr/zebra/zapi_msg.c:3311,1
    - Dst: zebra_tc_class_add
      Src: /src/frr/zebra/zapi_msg.c:3314,1
    - Dst: zebra_tc_class_delete
      Src: /src/frr/zebra/zapi_msg.c:3316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3321
      start: 3294
    functionDepth: 4
    functionLinenumber: 3294
    functionLinenumberEnd: 3321
    functionName: zread_tc_class
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - memset
    - zebra_tc_class_add
    - STREAM_GETQ
    - STREAM_GETL
    - zebra_tc_class_delete
    linkageType: ''
    returnType: void
    signature: void zread_tc_class(ZAPI_HANDLER_ARGS)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3330,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:3333,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3336,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3337,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3338,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3339,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3340,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3343,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3347,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3349,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3352,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3354,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3357,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3364,1
    - Dst: family2str
      Src: /src/frr/zebra/zapi_msg.c:3366,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3375,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3377,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3381,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3384,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3386,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3389,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3395,1
    - Dst: family2str
      Src: /src/frr/zebra/zapi_msg.c:3397,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3406,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3408,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3412,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3413,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3416,1
    - Dst: zebra_tc_filter_add
      Src: /src/frr/zebra/zapi_msg.c:3427,1
    - Dst: zebra_tc_filter_delete
      Src: /src/frr/zebra/zapi_msg.c:3429,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3323
    functionDepth: 4
    functionLinenumber: 3323
    functionLinenumberEnd: 3434
    functionName: zread_tc_filter
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - memset
    - zebra_tc_filter_delete
    - family2str
    - STREAM_GETW
    - zlog_warn
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    - zebra_tc_filter_add
    linkageType: ''
    returnType: void
    signature: void zread_tc_filter(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3443,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:3446,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3450,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3451,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3452,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3453,1
    - Dst: zebra_pbr_create_ipset
      Src: /src/frr/zebra/zapi_msg.c:3456,1
    - Dst: zebra_pbr_destroy_ipset
      Src: /src/frr/zebra/zapi_msg.c:3458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3463
      start: 3436
    functionDepth: 2
    functionLinenumber: 3436
    functionLinenumberEnd: 3463
    functionName: zread_ipset
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - memset
    - zebra_pbr_destroy_ipset
    - zebra_pbr_create_ipset
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: void
    signature: void zread_ipset(ZAPI_HANDLER_ARGS)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3473,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:3476,1
    - Dst: memset
      Src: /src/frr/zebra/zapi_msg.c:3477,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3480,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3481,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3483,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3484,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3485,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3485,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3486,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3487,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3488,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3488,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3490,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3491,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3492,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3493,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3494,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/zapi_msg.c:3495,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/zapi_msg.c:3498,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3513,1
    - Dst: family2str
      Src: /src/frr/zebra/zapi_msg.c:3515,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3520,1
    - Dst: family2str
      Src: /src/frr/zebra/zapi_msg.c:3522,1
    - Dst: zebra_pbr_lookup_ipset_pername
      Src: /src/frr/zebra/zapi_msg.c:3528,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3531,1
    - Dst: zebra_pbr_add_ipset_entry
      Src: /src/frr/zebra/zapi_msg.c:3537,1
    - Dst: zebra_pbr_del_ipset_entry
      Src: /src/frr/zebra/zapi_msg.c:3539,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3544
      start: 3465
    functionDepth: 2
    functionLinenumber: 3465
    functionLinenumberEnd: 3544
    functionName: zread_ipset_entry
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - is_default_prefix
    - memset
    - zebra_pbr_add_ipset_entry
    - zebra_pbr_del_ipset_entry
    - family2str
    - STREAM_GETW
    - zlog_warn
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    - zebra_pbr_lookup_ipset_pername
    linkageType: ''
    returnType: void
    signature: void zread_ipset_entry(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3551,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3553,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/zebra/zapi_msg.c:3558,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:3558,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3561
      start: 3547
    functionDepth: 1
    functionLinenumber: 3547
    functionLinenumberEnd: 3561
    functionName: zebra_neigh_register
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - STREAM_GETW
    - zlog_warn
    - vrf_bitmap_set
    linkageType: ''
    returnType: void
    signature: void zebra_neigh_register(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3567,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3569,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/zebra/zapi_msg.c:3574,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:3574,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3577
      start: 3563
    functionDepth: 1
    functionLinenumber: 3563
    functionLinenumberEnd: 3577
    functionName: zebra_neigh_unregister
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - STREAM_GETW
    - zlog_warn
    - vrf_bitmap_unset
    linkageType: ''
    returnType: void
    signature: void zebra_neigh_unregister(ZAPI_HANDLER_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3591,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:3592,1
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:3597,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:3599,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/zapi_msg.c:3601,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3604,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3605,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3606,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3607,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zapi_msg.c:3609,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zapi_msg.c:3610,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3614,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3615,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3616,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3618,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3619,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3620,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3621,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3622,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3623,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zapi_msg.c:3624,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zapi_msg.c:3627,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zapi_msg.c:3627,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:3628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3633
      start: 3579
    functionDepth: 2
    functionLinenumber: 3579
    functionLinenumberEnd: 3633
    functionName: zebra_gre_get
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zebra_ns_lookup
    - if_lookup_by_index
    - stream_new
    - zclient_create_header
    - if_lookup_by_index_per_ns
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - STREAM_GETL
    - IS_ZEBRA_IF_GRE
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void zebra_gre_get(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3643,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3646,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zapi_msg.c:3647,1
    - Dst: dplane_neigh_table_update
      Src: /src/frr/zebra/zapi_msg.c:3650,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3653
      start: 3635
    functionDepth: 2
    functionLinenumber: 3635
    functionLinenumberEnd: 3653
    functionName: zebra_configure_arp
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 1
    functionsReached:
    - STREAM_GETC
    - if_lookup_by_index_per_ns
    - STREAM_GETL
    - dplane_neigh_table_update
    linkageType: ''
    returnType: void
    signature: void zebra_configure_arp(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zclient_neigh_ip_decode
      Src: /src/frr/zebra/zapi_msg.c:3663,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:3666,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:3666,1
    - Dst: dplane_neigh_ip_update
      Src: /src/frr/zebra/zapi_msg.c:3669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3671
      start: 3655
    functionDepth: 1
    functionLinenumber: 3655
    functionLinenumberEnd: 3671
    functionName: zebra_neigh_ip_add
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zclient_neigh_ip_decode
    - if_lookup_by_index
    - dplane_neigh_ip_update
    linkageType: ''
    returnType: void
    signature: void zebra_neigh_ip_add(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zclient_neigh_ip_decode
      Src: /src/frr/zebra/zapi_msg.c:3682,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:3685,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zapi_msg.c:3685,1
    - Dst: dplane_neigh_ip_update
      Src: /src/frr/zebra/zapi_msg.c:3688,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3690
      start: 3674
    functionDepth: 1
    functionLinenumber: 3674
    functionLinenumberEnd: 3690
    functionName: zebra_neigh_ip_del
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zclient_neigh_ip_decode
    - if_lookup_by_index
    - dplane_neigh_ip_update
    linkageType: ''
    returnType: void
    signature: void zebra_neigh_ip_del(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zapi_msg.c:3696,1
    - Dst: list_new
      Src: /src/frr/zebra/zapi_msg.c:3701,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3704,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3705,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3706,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3707,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3708,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3709,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3710,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3711,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3712,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3713,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3714,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3715,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3716,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3717,1
    - Dst: STREAM_GETW
      Src: /src/frr/zebra/zapi_msg.c:3718,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3719,1
    - Dst: zebra_pbr_iptable_update_interfacelist
      Src: /src/frr/zebra/zapi_msg.c:3720,1
    - Dst: zebra_pbr_add_iptable
      Src: /src/frr/zebra/zapi_msg.c:3723,1
    - Dst: zebra_pbr_del_iptable
      Src: /src/frr/zebra/zapi_msg.c:3725,1
    - Dst: zebra_pbr_iptable_free
      Src: /src/frr/zebra/zapi_msg.c:3728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3731
      start: 3693
    functionDepth: 2
    functionLinenumber: 3693
    functionLinenumberEnd: 3731
    functionName: zread_iptable
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - zebra_pbr_iptable_free
    - STREAM_GETW
    - STREAM_GETC
    - list_new
    - STREAM_GETL
    - STREAM_GET
    - zebra_pbr_add_iptable
    - zebra_pbr_iptable_update_interfacelist
    - zebra_pbr_del_iptable
    linkageType: ''
    returnType: void
    signature: void zread_iptable(ZAPI_HANDLER_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3743,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zapi_msg.c:3745,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:3747,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3751,1
    - Dst: STREAM_GETC
      Src: /src/frr/zebra/zapi_msg.c:3752,1
    - Dst: STREAM_GET
      Src: /src/frr/zebra/zapi_msg.c:3753,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3753,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/zapi_msg.c:3756,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/zebra/zapi_msg.c:3758,1
    - Dst: memcpy
      Src: /src/frr/zebra/zapi_msg.c:3760,1
    - Dst: prefix_blen
      Src: /src/frr/zebra/zapi_msg.c:3760,1
    - Dst: dplane_neigh_discover
      Src: /src/frr/zebra/zapi_msg.c:3762,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3766
      start: 3733
    functionDepth: 2
    functionLinenumber: 3733
    functionLinenumberEnd: 3766
    functionName: zread_neigh_discover
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - dplane_neigh_discover
    - if_lookup_by_index_per_ns
    - zlog_debug
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    - SET_IPADDR_V6
    - memcpy
    - SET_IPADDR_V4
    linkageType: ''
    returnType: void
    signature: void zread_neigh_discover(ZAPI_HANDLER_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3781,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:3782,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3783,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3784,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/zapi_msg.c:3785,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zapi_msg.c:3787,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zapi_msg.c:3789,1
    - Dst: IS_ZEBRA_IF_GRE
      Src: /src/frr/zebra/zapi_msg.c:3794,1
    - Dst: dplane_gre_set
      Src: /src/frr/zebra/zapi_msg.c:3813,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3817
      start: 3768
    functionDepth: 1
    functionLinenumber: 3768
    functionLinenumberEnd: 3817
    functionName: zebra_gre_source_set
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 1
    functionsReached:
    - if_lookup_by_index
    - dplane_gre_set
    - zlog_warn
    - STREAM_GETL
    - IS_ZEBRA_IF_GRE
    linkageType: ''
    returnType: void
    signature: void zebra_gre_source_set(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/zebra/zapi_msg.c:3823,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zapi_msg.c:3825,1
    - Dst: zserv_encode_error
      Src: /src/frr/zebra/zapi_msg.c:3827,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zapi_msg.c:3830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - client
    - error
    - bad_hdr
    argTypes:
    - struct zserv*
    - enum zebra_error_types
    - struct zmsghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3831
      start: 3819
    functionDepth: 2
    functionLinenumber: 3819
    functionLinenumberEnd: 3831
    functionName: zsend_error_msg
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zserv_encode_error
    - stream_new
    - zserv_send_message
    - zclient_create_header
    linkageType: ''
    returnType: void
    signature: "void zsend_error_msg(struct zserv *client, enum zebra_error_types
      error,\n\t\t\t    struct zmsghdr *bad_hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:3836,1
    - Dst: zsend_error_msg
      Src: /src/frr/zebra/zapi_msg.c:3839,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3840
      start: 3833
    functionDepth: 3
    functionLinenumber: 3833
    functionLinenumberEnd: 3840
    functionName: zserv_error_no_vrf
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zsend_error_msg
    linkageType: ''
    returnType: void
    signature: void zserv_error_no_vrf(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/zapi_msg.c:3844,1
    - Dst: zsend_error_msg
      Src: /src/frr/zebra/zapi_msg.c:3846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3847
      start: 3842
    functionDepth: 3
    functionLinenumber: 3842
    functionLinenumberEnd: 3847
    functionName: zserv_error_invalid_msg_type
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - zsend_error_msg
    linkageType: ''
    returnType: void
    signature: void zserv_error_invalid_msg_type(ZAPI_HANDLER_ARGS)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_init
      Src: /src/frr/zebra/zapi_msg.c:3954,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zapi_msg.c:3956,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zapi_msg.c:3957,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zapi_msg.c:3959,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zapi_msg.c:3961,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zapi_msg.c:3963,1
    - Dst: STREAM_READABLE
      Src: /src/frr/zebra/zapi_msg.c:3976,1
    - Dst: zapi_parse_header
      Src: /src/frr/zebra/zapi_msg.c:3979,1
    - Dst: STREAM_SIZE
      Src: /src/frr/zebra/zapi_msg.c:3990,1
    - Dst: zserv_log_message
      Src: /src/frr/zebra/zapi_msg.c:3997,1
    - Dst: zebra_opaque_handles_msgid
      Src: /src/frr/zebra/zapi_msg.c:4005,1
    - Dst: stream_set_getp
      Src: /src/frr/zebra/zapi_msg.c:4007,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zapi_msg.c:4009,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zapi_msg.c:4017,1
    - Dst: zserv_error_no_vrf
      Src: /src/frr/zebra/zapi_msg.c:4019,1
    - Dst: array_size
      Src: /src/frr/zebra/zapi_msg.c:4023,1
    - Dst: zserv_error_invalid_msg_type
      Src: /src/frr/zebra/zapi_msg.c:4025,1
    - Dst: stream_free
      Src: /src/frr/zebra/zapi_msg.c:4032,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zapi_msg.c:4036,1
    - Dst: zebra_opaque_enqueue_batch
      Src: /src/frr/zebra/zapi_msg.c:4037,1
    - Dst: stream_fifo_deinit
      Src: /src/frr/zebra/zapi_msg.c:4039,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 46
    argCount: 2
    argNames:
    - client
    - fifo
    argTypes:
    - struct zserv*
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4040
      start: 3947
    functionDepth: 4
    functionLinenumber: 3947
    functionLinenumberEnd: 4040
    functionName: zserv_handle_commands
    functionSourceFile: /src/frr/zebra/zapi_msg.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_set_getp
    - stream_fifo_push
    - STREAM_READABLE
    - zserv_log_message
    - zebra_opaque_handles_msgid
    - zserv_error_invalid_msg_type
    - zserv_error_no_vrf
    - zebra_opaque_enqueue_batch
    - stream_fifo_head
    - zlog_debug
    - stream_fifo_pop
    - array_size
    - zebra_vrf_lookup_by_id
    - zapi_parse_header
    - stream_fifo_deinit
    - stream_fifo_init
    - STREAM_SIZE
    linkageType: ''
    returnType: void
    signature: void zserv_handle_commands(struct zserv *client, struct stream_fifo
      *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: DPLANE_CTX_VALID
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DPLANE_CTX_VALID(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 602
    functionName: DPLANE_LOCK
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DPLANE_LOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 603
    functionName: DPLANE_UNLOCK
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DPLANE_UNLOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 609
    functionName: DPLANE_PROV_LOCK
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DPLANE_PROV_LOCK(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 610
    functionName: DPLANE_PROV_UNLOCK
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DPLANE_PROV_UNLOCK(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 639
    functionName: dplane_get_thread_master
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct event_loop
    signature: struct event_loop *dplane_get_thread_master(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_dplane.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 654
    functionName: dplane_ctx_alloc
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 7
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct zebra_dplane_ctx
    signature: struct zebra_dplane_ctx *dplane_ctx_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 660
    functionName: dplane_enable_sys_route_notifs
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dplane_enable_sys_route_notifs(void)
  - BBCount: 65
    BranchProfiles: []
    Callsites:
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:684,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:692,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:699,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:706,1
    - Dst: dplane_intf_extra_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:712,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_dplane.c:714,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:723,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_dplane.c:738,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_dplane.c:739,1
    - Dst: zebra_mpls_nhlfe_free
      Src: /src/frr/zebra/zebra_dplane.c:740,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_dplane.c:744,1
    - Dst: nhlfe_list_del
      Src: /src/frr/zebra/zebra_dplane.c:746,1
    - Dst: zebra_mpls_nhlfe_free
      Src: /src/frr/zebra/zebra_dplane.c:748,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_dplane.c:754,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_dplane.c:756,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:766,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:771,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:776,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_dplane.c:789,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_dplane.c:832,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 120
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 665
    functionDepth: 3
    functionLinenumber: 665
    functionLinenumberEnd: 838
    functionName: dplane_ctx_free_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - list_delete
    - dplane_intf_extra_list_pop
    - zebra_mpls_nhlfe_free
    - nhlfe_list_init
    - nhlfe_list_del
    - frr_each_safe
    - XFREE
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_free_internal(struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:848,1
    - Dst: dplane_ctx_free_internal
      Src: /src/frr/zebra/zebra_dplane.c:857,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_dplane.c:859,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct zebra_dplane_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 843
    functionDepth: 4
    functionLinenumber: 843
    functionLinenumberEnd: 860
    functionName: dplane_ctx_free
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - dplane_ctx_free_internal
    - XFREE
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_free(struct zebra_dplane_ctx **pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_free_internal
      Src: /src/frr/zebra/zebra_dplane.c:868,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 866
    functionDepth: 4
    functionLinenumber: 866
    functionLinenumberEnd: 870
    functionName: dplane_ctx_reset
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - dplane_ctx_free_internal
    - memset
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_reset(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pctx
    argTypes:
    - struct zebra_dplane_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 875
    functionDepth: 5
    functionLinenumber: 875
    functionLinenumberEnd: 879
    functionName: dplane_ctx_fini
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - dplane_ctx_free
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_fini(struct zebra_dplane_ctx **pctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 885
    functionName: dplane_ctx_q_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - dplane_ctx_list_init
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_q_init(struct dplane_ctx_list_head *q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list
    - ctx
    argTypes:
    - struct dplane_ctx_list_head*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 892
    functionName: dplane_ctx_enqueue_tail
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - dplane_ctx_list_add_tail
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_enqueue_tail(struct dplane_ctx_list_head *list,\n\t\t\t
      \    const struct zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:900,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - to_list
    - from_list
    argTypes:
    - struct dplane_ctx_list_head*
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 902
    functionName: dplane_ctx_list_append
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - dplane_ctx_list_pop
    - dplane_ctx_list_add_tail
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_list_append(struct dplane_ctx_list_head *to_list,\n\t\t\t
      \   struct dplane_ctx_list_head *from_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_first
      Src: /src/frr/zebra/zebra_dplane.c:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 909
    functionName: dplane_ctx_get_head
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_list_first
    linkageType: ''
    returnType: struct zebra_dplane_ctx
    signature: struct zebra_dplane_ctx *dplane_ctx_get_head(struct dplane_ctx_list_head
      *q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 912
    functionDepth: 0
    functionLinenumber: 912
    functionLinenumberEnd: 917
    functionName: dplane_ctx_dequeue
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - dplane_ctx_list_pop
    linkageType: ''
    returnType: struct zebra_dplane_ctx
    signature: struct zebra_dplane_ctx *dplane_ctx_dequeue(struct dplane_ctx_list_head
      *q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 922
    functionDepth: 1
    functionLinenumber: 922
    functionLinenumberEnd: 928
    functionName: dplane_ctx_get_status
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 7
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_ctx_get_status(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - status
    argTypes:
    - struct zebra_dplane_ctx*
    - enum zebra_dplane_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 936
    functionName: dplane_ctx_set_status
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 10
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_status(struct zebra_dplane_ctx *ctx,\n\t\t\t   enum
      zebra_dplane_result status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 939
    functionDepth: 1
    functionLinenumber: 939
    functionLinenumberEnd: 943
    functionName: dplane_ctx_get_provider
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_provider(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:950,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 953
    functionName: dplane_ctx_set_skip_kernel
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_skip_kernel(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:957,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 960
    functionName: dplane_ctx_is_skip_kernel
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_is_skip_kernel(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - op
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 966
    functionName: dplane_ctx_set_op
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_op(struct zebra_dplane_ctx *ctx, enum dplane_op_e
      op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 973
    functionName: dplane_ctx_get_op
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 31
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: enum dplane_op_e
    signature: enum dplane_op_e dplane_ctx_get_op(const struct zebra_dplane_ctx *ctx)
  - BBCount: 55
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 163
    argCount: 1
    argNames:
    - op
    argTypes:
    - enum dplane_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 1162
    functionName: dplane_op2str
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *dplane_op2str(enum dplane_op_e op)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - res
    argTypes:
    - enum zebra_dplane_result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1181
    functionName: dplane_res2str
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *dplane_res2str(enum zebra_dplane_result res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1186,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:1188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - dest
    argTypes:
    - struct zebra_dplane_ctx*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1183
    functionDepth: 1
    functionLinenumber: 1183
    functionLinenumberEnd: 1189
    functionName: dplane_ctx_set_dest
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - prefix_copy
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_dest(struct zebra_dplane_ctx *ctx,\n\t\t\t const
      struct prefix *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1191
    functionDepth: 1
    functionLinenumber: 1191
    functionLinenumberEnd: 1196
    functionName: dplane_ctx_get_dest
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: struct prefix *dplane_ctx_get_dest(const struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1200,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:1203,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:1205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - src
    argTypes:
    - struct zebra_dplane_ctx*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1198
    functionDepth: 1
    functionLinenumber: 1198
    functionLinenumberEnd: 1206
    functionName: dplane_ctx_set_src
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - prefix_copy
    - memset
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_src(struct zebra_dplane_ctx *ctx, const struct
      prefix *src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1211,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/zebra_dplane.c:1214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1219
    functionName: dplane_ctx_get_src
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    - IN6_IS_ADDR_UNSPECIFIED
    linkageType: ''
    returnType: struct prefix
    signature: struct prefix *dplane_ctx_get_src(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1221
    functionDepth: 1
    functionLinenumber: 1221
    functionLinenumberEnd: 1226
    functionName: dplane_ctx_is_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_is_update(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1233
    functionName: dplane_ctx_get_seq
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_seq(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1240
    functionName: dplane_ctx_get_old_seq
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_old_seq(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - vrf
    argTypes:
    - struct zebra_dplane_ctx*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1242
    functionDepth: 1
    functionLinenumber: 1242
    functionLinenumberEnd: 1247
    functionName: dplane_ctx_set_vrf
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_vrf(struct zebra_dplane_ctx *ctx, vrf_id_t vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1249
    functionDepth: 1
    functionLinenumber: 1249
    functionLinenumberEnd: 1254
    functionName: dplane_ctx_get_vrf
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t dplane_ctx_get_vrf(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - nsid
    argTypes:
    - struct zebra_dplane_ctx*
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1257
    functionDepth: 1
    functionLinenumber: 1257
    functionLinenumberEnd: 1262
    functionName: dplane_ctx_set_ns_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_ns_id(struct zebra_dplane_ctx *ctx, ns_id_t nsid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1264
    functionDepth: 1
    functionLinenumber: 1264
    functionLinenumberEnd: 1269
    functionName: dplane_ctx_get_ns_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t dplane_ctx_get_ns_id(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1271
    functionDepth: 1
    functionLinenumber: 1271
    functionLinenumberEnd: 1276
    functionName: dplane_ctx_is_from_notif
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_is_from_notif(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1278
    functionDepth: 1
    functionLinenumber: 1278
    functionLinenumberEnd: 1283
    functionName: dplane_ctx_get_notif_provider
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_notif_provider(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - id
    argTypes:
    - struct zebra_dplane_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1285
    functionDepth: 1
    functionLinenumber: 1285
    functionLinenumberEnd: 1291
    functionName: dplane_ctx_set_notif_provider
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_notif_provider(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      \      uint32_t id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1298
    functionName: dplane_ctx_get_ifname
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 10
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: char
    signature: char *dplane_ctx_get_ifname(const struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1302,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:1307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - ifname
    argTypes:
    - struct zebra_dplane_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1308
    functionName: dplane_ctx_set_ifname
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - strlcpy
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_ifname(struct zebra_dplane_ctx *ctx, const char
      *ifname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1310
    functionDepth: 1
    functionLinenumber: 1310
    functionLinenumberEnd: 1315
    functionName: dplane_ctx_get_ifindex
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 10
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: ifindex_t
    signature: ifindex_t dplane_ctx_get_ifindex(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - ifindex
    argTypes:
    - struct zebra_dplane_ctx*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1322
    functionName: dplane_ctx_set_ifindex
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_ifindex(struct zebra_dplane_ctx *ctx, ifindex_t
      ifindex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct zebra_dplane_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1324
    functionDepth: 1
    functionLinenumber: 1324
    functionLinenumberEnd: 1329
    functionName: dplane_ctx_set_type
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_type(struct zebra_dplane_ctx *ctx, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1336
    functionName: dplane_ctx_get_type
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_get_type(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1338
    functionDepth: 1
    functionLinenumber: 1338
    functionLinenumberEnd: 1343
    functionName: dplane_ctx_get_old_type
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_get_old_type(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - afi
    argTypes:
    - struct zebra_dplane_ctx*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1345
    functionDepth: 1
    functionLinenumber: 1345
    functionLinenumberEnd: 1350
    functionName: dplane_ctx_set_afi
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_afi(struct zebra_dplane_ctx *ctx, afi_t afi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1352
    functionDepth: 1
    functionLinenumber: 1352
    functionLinenumberEnd: 1357
    functionName: dplane_ctx_get_afi
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: afi_t
    signature: afi_t dplane_ctx_get_afi(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - safi
    argTypes:
    - struct zebra_dplane_ctx*
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1364
    functionName: dplane_ctx_set_safi
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_safi(struct zebra_dplane_ctx *ctx, safi_t safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1366
    functionDepth: 1
    functionLinenumber: 1366
    functionLinenumberEnd: 1371
    functionName: dplane_ctx_get_safi
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: safi_t
    signature: safi_t dplane_ctx_get_safi(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - table
    argTypes:
    - struct zebra_dplane_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1373
    functionDepth: 1
    functionLinenumber: 1373
    functionLinenumberEnd: 1378
    functionName: dplane_ctx_set_table
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_table(struct zebra_dplane_ctx *ctx, uint32_t table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1380
    functionDepth: 1
    functionLinenumber: 1380
    functionLinenumberEnd: 1385
    functionName: dplane_ctx_get_table
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_table(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1387
    functionDepth: 1
    functionLinenumber: 1387
    functionLinenumberEnd: 1392
    functionName: dplane_ctx_get_tag
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: route_tag_t
    signature: route_tag_t dplane_ctx_get_tag(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - tag
    argTypes:
    - struct zebra_dplane_ctx*
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1394
    functionDepth: 1
    functionLinenumber: 1394
    functionLinenumberEnd: 1399
    functionName: dplane_ctx_set_tag
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_tag(struct zebra_dplane_ctx *ctx, route_tag_t tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1401
    functionDepth: 1
    functionLinenumber: 1401
    functionLinenumberEnd: 1406
    functionName: dplane_ctx_get_old_tag
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: route_tag_t
    signature: route_tag_t dplane_ctx_get_old_tag(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1408
    functionDepth: 1
    functionLinenumber: 1408
    functionLinenumberEnd: 1413
    functionName: dplane_ctx_get_instance
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_get_instance(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - instance
    argTypes:
    - struct zebra_dplane_ctx*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1420
    functionName: dplane_ctx_set_instance
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_instance(struct zebra_dplane_ctx *ctx, uint16_t
      instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1422
    functionDepth: 1
    functionLinenumber: 1422
    functionLinenumberEnd: 1427
    functionName: dplane_ctx_get_old_instance
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_get_old_instance(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1429
    functionDepth: 1
    functionLinenumber: 1429
    functionLinenumberEnd: 1434
    functionName: dplane_ctx_get_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_flags(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - flags
    argTypes:
    - struct zebra_dplane_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1436
    functionDepth: 1
    functionLinenumber: 1436
    functionLinenumberEnd: 1441
    functionName: dplane_ctx_set_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_flags(struct zebra_dplane_ctx *ctx, uint32_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1443
    functionDepth: 1
    functionLinenumber: 1443
    functionLinenumberEnd: 1448
    functionName: dplane_ctx_get_metric
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_metric(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1450
    functionDepth: 1
    functionLinenumber: 1450
    functionLinenumberEnd: 1455
    functionName: dplane_ctx_get_old_metric
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_old_metric(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1457
    functionDepth: 1
    functionLinenumber: 1457
    functionLinenumberEnd: 1462
    functionName: dplane_ctx_get_mtu
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_mtu(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1464
    functionDepth: 1
    functionLinenumber: 1464
    functionLinenumberEnd: 1469
    functionName: dplane_ctx_get_nh_mtu
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_nh_mtu(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1476
    functionName: dplane_ctx_get_distance
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_get_distance(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - distance
    argTypes:
    - struct zebra_dplane_ctx*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1478
    functionDepth: 1
    functionLinenumber: 1478
    functionLinenumberEnd: 1483
    functionName: dplane_ctx_set_distance
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_distance(struct zebra_dplane_ctx *ctx, uint8_t
      distance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1485
    functionDepth: 1
    functionLinenumber: 1485
    functionLinenumberEnd: 1490
    functionName: dplane_ctx_get_old_distance
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_get_old_distance(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1492
    functionDepth: 1
    functionLinenumber: 1492
    functionLinenumberEnd: 1497
    functionName: dplane_ctx_tc_qdisc_get_kind
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_tc_qdisc_get_kind(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1499
    functionDepth: 1
    functionLinenumber: 1499
    functionLinenumberEnd: 1504
    functionName: dplane_ctx_tc_qdisc_get_kind_str
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: char
    signature: char *dplane_ctx_tc_qdisc_get_kind_str(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1506
    functionDepth: 1
    functionLinenumber: 1506
    functionLinenumberEnd: 1511
    functionName: dplane_ctx_tc_class_get_handle
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_tc_class_get_handle(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1513
    functionDepth: 1
    functionLinenumber: 1513
    functionLinenumberEnd: 1518
    functionName: dplane_ctx_tc_class_get_kind
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_tc_class_get_kind(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1520
    functionDepth: 1
    functionLinenumber: 1520
    functionLinenumberEnd: 1525
    functionName: dplane_ctx_tc_class_get_kind_str
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: char
    signature: char *dplane_ctx_tc_class_get_kind_str(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1532
    functionName: dplane_ctx_tc_class_get_rate
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dplane_ctx_tc_class_get_rate(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1539
    functionName: dplane_ctx_tc_class_get_ceil
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dplane_ctx_tc_class_get_ceil(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1541
    functionDepth: 1
    functionLinenumber: 1541
    functionLinenumberEnd: 1546
    functionName: dplane_ctx_tc_filter_get_kind
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_tc_filter_get_kind(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1548
    functionDepth: 1
    functionLinenumber: 1548
    functionLinenumberEnd: 1554
    functionName: dplane_ctx_tc_filter_get_kind_str
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: char
    signature: 'char *

      dplane_ctx_tc_filter_get_kind_str(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1561
    functionName: dplane_ctx_tc_filter_get_priority
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_tc_filter_get_priority(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1563
    functionDepth: 1
    functionLinenumber: 1563
    functionLinenumberEnd: 1568
    functionName: dplane_ctx_tc_filter_get_handle
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_tc_filter_get_handle(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1575
    functionName: dplane_ctx_tc_filter_get_eth_proto
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_tc_filter_get_eth_proto(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1577
    functionDepth: 1
    functionLinenumber: 1577
    functionLinenumberEnd: 1582
    functionName: dplane_ctx_tc_filter_get_filter_bm
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_tc_filter_get_filter_bm(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1584
    functionDepth: 1
    functionLinenumber: 1584
    functionLinenumberEnd: 1590
    functionName: dplane_ctx_tc_filter_get_src_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: 'struct prefix *

      dplane_ctx_tc_filter_get_src_ip(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1592
    functionDepth: 1
    functionLinenumber: 1592
    functionLinenumberEnd: 1598
    functionName: dplane_ctx_tc_filter_get_src_port_min
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_tc_filter_get_src_port_min(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1607
    functionName: dplane_ctx_tc_filter_get_src_port_max
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_tc_filter_get_src_port_max(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1609
    functionDepth: 1
    functionLinenumber: 1609
    functionLinenumberEnd: 1615
    functionName: dplane_ctx_tc_filter_get_dst_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: 'struct prefix *

      dplane_ctx_tc_filter_get_dst_ip(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1623
    functionName: dplane_ctx_tc_filter_get_dst_port_min
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_tc_filter_get_dst_port_min(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1626
    functionDepth: 1
    functionLinenumber: 1626
    functionLinenumberEnd: 1632
    functionName: dplane_ctx_tc_filter_get_dst_port_max
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_tc_filter_get_dst_port_max(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1639
    functionName: dplane_ctx_tc_filter_get_ip_proto
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_tc_filter_get_ip_proto(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1641
    functionDepth: 1
    functionLinenumber: 1641
    functionLinenumberEnd: 1646
    functionName: dplane_ctx_tc_filter_get_dsfield
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_tc_filter_get_dsfield(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1648
    functionDepth: 1
    functionLinenumber: 1648
    functionLinenumberEnd: 1654
    functionName: dplane_ctx_tc_filter_get_dsfield_mask
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_tc_filter_get_dsfield_mask(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1656
    functionDepth: 1
    functionLinenumber: 1656
    functionLinenumberEnd: 1661
    functionName: dplane_ctx_tc_filter_get_classid
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_tc_filter_get_classid(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1670,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:1673,1
    - Dst: nexthop_group_copy_nh_sorted
      Src: /src/frr/zebra/zebra_dplane.c:1676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - nh
    argTypes:
    - struct zebra_dplane_ctx*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1668
    functionDepth: 1
    functionLinenumber: 1668
    functionLinenumberEnd: 1677
    functionName: dplane_ctx_set_nexthops
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - nexthops_free
    - nexthop_group_copy_nh_sorted
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_nexthops(struct zebra_dplane_ctx *ctx, struct nexthop
      *nh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1688,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_dplane.c:1691,1
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_dplane.c:1699,1
    - Dst: NEXTHOP_APPEND
      Src: /src/frr/zebra/zebra_dplane.c:1702,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - nhg
    argTypes:
    - struct zebra_dplane_ctx*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1683
    functionDepth: 1
    functionLinenumber: 1683
    functionLinenumberEnd: 1708
    functionName: dplane_ctx_set_backup_nhg
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - nexthop_dup
    - DPLANE_CTX_VALID
    - nexthops_free
    - NEXTHOP_APPEND
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_backup_nhg(struct zebra_dplane_ctx *ctx,\n\t\t\t
      \      const struct nexthop_group *nhg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1710
    functionDepth: 1
    functionLinenumber: 1710
    functionLinenumberEnd: 1714
    functionName: dplane_ctx_get_nhg_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_nhg_id(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1716
    functionDepth: 1
    functionLinenumber: 1716
    functionLinenumberEnd: 1722
    functionName: dplane_ctx_get_ng
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: "struct nexthop_group *dplane_ctx_get_ng(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1724
    functionDepth: 1
    functionLinenumber: 1724
    functionLinenumberEnd: 1730
    functionName: dplane_ctx_get_backup_ng
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: 'struct nexthop_group *

      dplane_ctx_get_backup_ng(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1732
    functionDepth: 1
    functionLinenumber: 1732
    functionLinenumberEnd: 1738
    functionName: dplane_ctx_get_old_ng
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: 'struct nexthop_group *

      dplane_ctx_get_old_ng(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1740
    functionDepth: 1
    functionLinenumber: 1740
    functionLinenumberEnd: 1746
    functionName: dplane_ctx_get_old_backup_ng
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: 'struct nexthop_group *

      dplane_ctx_get_old_backup_ng(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1748
    functionDepth: 1
    functionLinenumber: 1748
    functionLinenumberEnd: 1754
    functionName: dplane_ctx_get_ns
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct zebra_dplane_info
    signature: "struct zebra_dplane_info *dplane_ctx_get_ns(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1756
    functionDepth: 1
    functionLinenumber: 1756
    functionLinenumberEnd: 1765
    functionName: dplane_ctx_get_ns_sock
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_get_ns_sock(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1772
    functionName: dplane_ctx_get_nhe_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_nhe_id(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1774
    functionDepth: 1
    functionLinenumber: 1774
    functionLinenumberEnd: 1778
    functionName: dplane_ctx_get_old_nhe_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_old_nhe_id(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1784
    functionName: dplane_ctx_get_nhe_afi
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: afi_t
    signature: afi_t dplane_ctx_get_nhe_afi(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1786
    functionDepth: 1
    functionLinenumber: 1786
    functionLinenumberEnd: 1790
    functionName: dplane_ctx_get_nhe_vrf_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t dplane_ctx_get_nhe_vrf_id(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1792
    functionDepth: 1
    functionLinenumber: 1792
    functionLinenumberEnd: 1796
    functionName: dplane_ctx_get_nhe_type
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_get_nhe_type(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1798
    functionDepth: 1
    functionLinenumber: 1798
    functionLinenumberEnd: 1803
    functionName: dplane_ctx_get_nhe_ng
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: 'struct nexthop_group *

      dplane_ctx_get_nhe_ng(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1805
    functionDepth: 1
    functionLinenumber: 1805
    functionLinenumberEnd: 1810
    functionName: dplane_ctx_get_nhe_nh_grp
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nh_grp
    signature: 'struct nh_grp *

      dplane_ctx_get_nhe_nh_grp(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1812
    functionDepth: 1
    functionLinenumber: 1812
    functionLinenumberEnd: 1816
    functionName: dplane_ctx_get_nhe_nh_grp_count
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_get_nhe_nh_grp_count(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1825
      start: 1820
    functionDepth: 1
    functionLinenumber: 1820
    functionLinenumberEnd: 1825
    functionName: dplane_ctx_get_in_label
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 7
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t dplane_ctx_get_in_label(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - label
    argTypes:
    - struct zebra_dplane_ctx*
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1827
    functionDepth: 1
    functionLinenumber: 1827
    functionLinenumberEnd: 1832
    functionName: dplane_ctx_set_in_label
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_in_label(struct zebra_dplane_ctx *ctx, mpls_label_t
      label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1839
      start: 1834
    functionDepth: 1
    functionLinenumber: 1834
    functionLinenumberEnd: 1839
    functionName: dplane_ctx_get_addr_family
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_get_addr_family(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - family
    argTypes:
    - struct zebra_dplane_ctx*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1841
    functionDepth: 1
    functionLinenumber: 1841
    functionLinenumberEnd: 1847
    functionName: dplane_ctx_set_addr_family
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_addr_family(struct zebra_dplane_ctx *ctx,\n\t\t\t\tuint8_t
      family)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1849
    functionDepth: 1
    functionLinenumber: 1849
    functionLinenumberEnd: 1854
    functionName: dplane_ctx_get_lsp_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_lsp_flags(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - flags
    argTypes:
    - struct zebra_dplane_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1856
    functionDepth: 1
    functionLinenumber: 1856
    functionLinenumberEnd: 1862
    functionName: dplane_ctx_set_lsp_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_lsp_flags(struct zebra_dplane_ctx *ctx,\n\t\t\t
      \     uint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1864
    functionDepth: 1
    functionLinenumber: 1864
    functionLinenumberEnd: 1869
    functionName: dplane_ctx_get_nhlfe_list
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nhlfe_list_head
    signature: "struct nhlfe_list_head *dplane_ctx_get_nhlfe_list(\n\tconst struct
      zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1876
      start: 1871
    functionDepth: 1
    functionLinenumber: 1871
    functionLinenumberEnd: 1876
    functionName: dplane_ctx_get_backup_nhlfe_list
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nhlfe_list_head
    signature: "struct nhlfe_list_head *dplane_ctx_get_backup_nhlfe_list(\n\tconst
      struct zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1887,1
    - Dst: zebra_mpls_lsp_add_nhlfe
      Src: /src/frr/zebra/zebra_dplane.c:1889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - ctx
    - lsp_type
    - nh_type
    - gate
    - ifindex
    - num_labels
    - out_labels
    argTypes:
    - struct zebra_dplane_ctx*
    - enum lsp_types_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - uint8_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1878
    functionDepth: 4
    functionLinenumber: 1878
    functionLinenumberEnd: 1894
    functionName: dplane_ctx_add_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - zebra_mpls_lsp_add_nhlfe
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *dplane_ctx_add_nhlfe(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      enum lsp_types_t lsp_type,\n\t\t\t\t\t enum nexthop_types_t nh_type,\n\t\t\t\t\t
      const union g_addr *gate,\n\t\t\t\t\t ifindex_t ifindex, uint8_t num_labels,\n\t\t\t\t\t
      mpls_label_t *out_labels)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1903,1
    - Dst: zebra_mpls_lsp_add_backup_nhlfe
      Src: /src/frr/zebra/zebra_dplane.c:1905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - ctx
    - lsp_type
    - nh_type
    - gate
    - ifindex
    - num_labels
    - out_labels
    argTypes:
    - struct zebra_dplane_ctx*
    - enum lsp_types_t
    - enum nexthop_types_t
    - union g_addr*
    - ifindex_t
    - uint8_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1896
    functionDepth: 4
    functionLinenumber: 1896
    functionLinenumberEnd: 1911
    functionName: dplane_ctx_add_backup_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    - zebra_mpls_lsp_add_backup_nhlfe
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *dplane_ctx_add_backup_nhlfe(\n\tstruct zebra_dplane_ctx
      *ctx, enum lsp_types_t lsp_type,\n\tenum nexthop_types_t nh_type, const union
      g_addr *gate,\n\tifindex_t ifindex, uint8_t num_labels, mpls_label_t *out_labels)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1919
      start: 1913
    functionDepth: 1
    functionLinenumber: 1913
    functionLinenumberEnd: 1919
    functionName: dplane_ctx_get_best_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: 'struct zebra_nhlfe *

      dplane_ctx_get_best_nhlfe(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - nhlfe
    argTypes:
    - struct zebra_dplane_ctx*
    - struct zebra_nhlfe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1929
      start: 1921
    functionDepth: 1
    functionLinenumber: 1921
    functionLinenumberEnd: 1929
    functionName: dplane_ctx_set_best_nhlfe
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct zebra_nhlfe
    signature: "struct zebra_nhlfe *\ndplane_ctx_set_best_nhlfe(struct zebra_dplane_ctx
      *ctx,\n\t\t\t  struct zebra_nhlfe *nhlfe)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1936
      start: 1931
    functionDepth: 1
    functionLinenumber: 1931
    functionLinenumberEnd: 1936
    functionName: dplane_ctx_get_lsp_num_ecmp
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_lsp_num_ecmp(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1938
    functionDepth: 1
    functionLinenumber: 1938
    functionLinenumberEnd: 1943
    functionName: dplane_ctx_get_pw_local_label
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t dplane_ctx_get_pw_local_label(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1945
    functionDepth: 1
    functionLinenumber: 1945
    functionLinenumberEnd: 1950
    functionName: dplane_ctx_get_pw_remote_label
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t dplane_ctx_get_pw_remote_label(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1957
      start: 1952
    functionDepth: 1
    functionLinenumber: 1952
    functionLinenumberEnd: 1957
    functionName: dplane_ctx_get_pw_type
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_get_pw_type(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1959
    functionDepth: 1
    functionLinenumber: 1959
    functionLinenumberEnd: 1964
    functionName: dplane_ctx_get_pw_af
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_get_pw_af(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1971
      start: 1966
    functionDepth: 1
    functionLinenumber: 1966
    functionLinenumberEnd: 1971
    functionName: dplane_ctx_get_pw_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_pw_flags(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1973
    functionDepth: 1
    functionLinenumber: 1973
    functionLinenumberEnd: 1978
    functionName: dplane_ctx_get_pw_status
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_get_pw_status(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - status
    argTypes:
    - struct zebra_dplane_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1980
    functionDepth: 1
    functionLinenumber: 1980
    functionLinenumberEnd: 1985
    functionName: dplane_ctx_set_pw_status
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_pw_status(struct zebra_dplane_ctx *ctx, int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1987
    functionDepth: 1
    functionLinenumber: 1987
    functionLinenumberEnd: 1993
    functionName: dplane_ctx_get_pw_dest
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: union g_addr
    signature: "union g_addr *dplane_ctx_get_pw_dest(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:1998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2001
      start: 1995
    functionDepth: 1
    functionLinenumber: 1995
    functionLinenumberEnd: 2001
    functionName: dplane_ctx_get_pw_proto
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: union pw_protocol_fields
    signature: "union pw_protocol_fields *dplane_ctx_get_pw_proto(\n\tconst struct
      zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 2003
    functionDepth: 1
    functionLinenumber: 2003
    functionLinenumberEnd: 2009
    functionName: dplane_ctx_get_pw_nhg
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: 'struct nexthop_group *

      dplane_ctx_get_pw_nhg(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2011
    functionDepth: 1
    functionLinenumber: 2011
    functionLinenumberEnd: 2017
    functionName: dplane_ctx_get_pw_primary_nhg
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: 'struct nexthop_group *

      dplane_ctx_get_pw_primary_nhg(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2025
      start: 2019
    functionDepth: 1
    functionLinenumber: 2019
    functionLinenumberEnd: 2025
    functionName: dplane_ctx_get_pw_backup_nhg
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct nexthop_group
    signature: 'struct nexthop_group *

      dplane_ctx_get_pw_backup_nhg(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2028
    functionDepth: 1
    functionLinenumber: 2028
    functionLinenumberEnd: 2033
    functionName: dplane_ctx_get_intf_metric
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_intf_metric(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - metric
    argTypes:
    - struct zebra_dplane_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2040
      start: 2035
    functionDepth: 1
    functionLinenumber: 2035
    functionLinenumberEnd: 2040
    functionName: dplane_ctx_set_intf_metric
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_intf_metric(struct zebra_dplane_ctx *ctx, uint32_t
      metric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2042
    functionDepth: 1
    functionLinenumber: 2042
    functionLinenumberEnd: 2047
    functionName: dplane_ctx_get_intf_pd_reason_val
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_intf_pd_reason_val(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - val
    argTypes:
    - struct zebra_dplane_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2054
      start: 2049
    functionDepth: 1
    functionLinenumber: 2049
    functionLinenumberEnd: 2054
    functionName: dplane_ctx_set_intf_pd_reason_val
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_intf_pd_reason_val(struct zebra_dplane_ctx *ctx,
      bool val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2061
      start: 2056
    functionDepth: 1
    functionLinenumber: 2056
    functionLinenumberEnd: 2061
    functionName: dplane_ctx_intf_is_protodown
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_intf_is_protodown(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2069
      start: 2064
    functionDepth: 1
    functionLinenumber: 2064
    functionLinenumberEnd: 2069
    functionName: dplane_ctx_intf_is_connected
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 6
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_intf_is_connected(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 2071
    functionDepth: 1
    functionLinenumber: 2071
    functionLinenumberEnd: 2076
    functionName: dplane_ctx_intf_is_secondary
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_intf_is_secondary(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2080,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2083
      start: 2078
    functionDepth: 1
    functionLinenumber: 2078
    functionLinenumberEnd: 2083
    functionName: dplane_ctx_intf_is_broadcast
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_intf_is_broadcast(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2090
      start: 2085
    functionDepth: 1
    functionLinenumber: 2085
    functionLinenumberEnd: 2090
    functionName: dplane_ctx_intf_set_connected
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_intf_set_connected(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2097
      start: 2092
    functionDepth: 1
    functionLinenumber: 2092
    functionLinenumberEnd: 2097
    functionName: dplane_ctx_intf_set_secondary
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_intf_set_secondary(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2104
      start: 2099
    functionDepth: 1
    functionLinenumber: 2099
    functionLinenumberEnd: 2104
    functionName: dplane_ctx_intf_set_broadcast
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_intf_set_broadcast(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2106
    functionDepth: 1
    functionLinenumber: 2106
    functionLinenumberEnd: 2112
    functionName: dplane_ctx_get_intf_addr
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 11
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: "struct prefix *dplane_ctx_get_intf_addr(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2117,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:2119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - p
    argTypes:
    - struct zebra_dplane_ctx*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2120
      start: 2114
    functionDepth: 1
    functionLinenumber: 2114
    functionLinenumberEnd: 2120
    functionName: dplane_ctx_set_intf_addr
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    - prefix_copy
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_intf_addr(struct zebra_dplane_ctx *ctx,\n\t\t\t
      \     const struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2127
      start: 2122
    functionDepth: 1
    functionLinenumber: 2122
    functionLinenumberEnd: 2127
    functionName: dplane_ctx_intf_has_dest
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_intf_has_dest(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2129
    functionDepth: 1
    functionLinenumber: 2129
    functionLinenumberEnd: 2135
    functionName: dplane_ctx_get_intf_dest
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 6
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: "struct prefix *dplane_ctx_get_intf_dest(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2140,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:2142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - p
    argTypes:
    - struct zebra_dplane_ctx*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2137
    functionDepth: 1
    functionLinenumber: 2137
    functionLinenumberEnd: 2143
    functionName: dplane_ctx_set_intf_dest
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    - prefix_copy
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_intf_dest(struct zebra_dplane_ctx *ctx,\n\t\t\t
      \     const struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2145
    functionDepth: 1
    functionLinenumber: 2145
    functionLinenumberEnd: 2150
    functionName: dplane_ctx_intf_has_label
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_intf_has_label(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2157
      start: 2152
    functionDepth: 1
    functionLinenumber: 2152
    functionLinenumberEnd: 2157
    functionName: dplane_ctx_get_intf_label
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: char
    signature: char *dplane_ctx_get_intf_label(const struct zebra_dplane_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2163,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_dplane.c:2166,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_dplane.c:2174,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:2177,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_dplane.c:2181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - label
    argTypes:
    - struct zebra_dplane_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2186
      start: 2159
    functionDepth: 1
    functionLinenumber: 2159
    functionLinenumberEnd: 2186
    functionName: dplane_ctx_set_intf_label
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    - strlen
    - strlcpy
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void dplane_ctx_set_intf_label(struct zebra_dplane_ctx *ctx, const
      char *label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2193
      start: 2189
    functionDepth: 1
    functionLinenumber: 2189
    functionLinenumberEnd: 2193
    functionName: dplane_ctx_mac_get_vlan
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: vlanid_t
    signature: vlanid_t dplane_ctx_mac_get_vlan(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2199
      start: 2195
    functionDepth: 1
    functionLinenumber: 2195
    functionLinenumberEnd: 2199
    functionName: dplane_ctx_mac_is_sticky
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: bool
    signature: bool dplane_ctx_mac_is_sticky(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2201
    functionDepth: 1
    functionLinenumber: 2201
    functionLinenumberEnd: 2205
    functionName: dplane_ctx_mac_get_nhg_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_mac_get_nhg_id(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2207
    functionDepth: 1
    functionLinenumber: 2207
    functionLinenumberEnd: 2211
    functionName: dplane_ctx_mac_get_update_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_mac_get_update_flags(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2218
      start: 2213
    functionDepth: 1
    functionLinenumber: 2213
    functionLinenumberEnd: 2218
    functionName: dplane_ctx_mac_get_addr
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct ethaddr
    signature: "struct ethaddr *dplane_ctx_mac_get_addr(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2220
    functionDepth: 1
    functionLinenumber: 2220
    functionLinenumberEnd: 2224
    functionName: dplane_ctx_mac_get_vni
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: vni_t
    signature: vni_t dplane_ctx_mac_get_vni(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2226
    functionDepth: 1
    functionLinenumber: 2226
    functionLinenumberEnd: 2231
    functionName: dplane_ctx_mac_get_vtep_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct in_addr
    signature: "struct in_addr *dplane_ctx_mac_get_vtep_ip(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2233
    functionDepth: 1
    functionLinenumber: 2233
    functionLinenumberEnd: 2237
    functionName: dplane_ctx_mac_get_br_ifindex
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: ifindex_t
    signature: ifindex_t dplane_ctx_mac_get_br_ifindex(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2245
      start: 2240
    functionDepth: 1
    functionLinenumber: 2240
    functionLinenumberEnd: 2245
    functionName: dplane_ctx_neigh_get_ipaddr
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct ipaddr
    signature: "struct ipaddr *dplane_ctx_neigh_get_ipaddr(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2247
    functionDepth: 1
    functionLinenumber: 2247
    functionLinenumberEnd: 2252
    functionName: dplane_ctx_neigh_get_link_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct ipaddr
    signature: 'struct ipaddr *

      dplane_ctx_neigh_get_link_ip(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2259
      start: 2254
    functionDepth: 1
    functionLinenumber: 2254
    functionLinenumberEnd: 2259
    functionName: dplane_ctx_neigh_get_mac
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct ethaddr
    signature: "struct ethaddr *dplane_ctx_neigh_get_mac(\n\tconst struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2265
      start: 2261
    functionDepth: 1
    functionLinenumber: 2261
    functionLinenumberEnd: 2265
    functionName: dplane_ctx_neigh_get_vni
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: vni_t
    signature: vni_t dplane_ctx_neigh_get_vni(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2271
      start: 2267
    functionDepth: 1
    functionLinenumber: 2267
    functionLinenumberEnd: 2271
    functionName: dplane_ctx_neigh_get_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_neigh_get_flags(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2277
      start: 2273
    functionDepth: 1
    functionLinenumber: 2273
    functionLinenumberEnd: 2277
    functionName: dplane_ctx_neigh_get_state
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_neigh_get_state(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2279
    functionDepth: 1
    functionLinenumber: 2279
    functionLinenumberEnd: 2283
    functionName: dplane_ctx_neigh_get_update_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_neigh_get_update_flags(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2292
      start: 2286
    functionDepth: 1
    functionLinenumber: 2286
    functionLinenumberEnd: 2292
    functionName: dplane_ctx_gre_get_link_ifindex
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_gre_get_link_ifindex(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2294
    functionDepth: 1
    functionLinenumber: 2294
    functionLinenumberEnd: 2300
    functionName: dplane_ctx_gre_get_mtu
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dplane_ctx_gre_get_mtu(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2308
      start: 2302
    functionDepth: 1
    functionLinenumber: 2302
    functionLinenumberEnd: 2308
    functionName: dplane_ctx_gre_get_info
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct zebra_l2info_gre
    signature: 'struct zebra_l2info_gre *

      dplane_ctx_gre_get_info(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2316
      start: 2311
    functionDepth: 1
    functionLinenumber: 2311
    functionLinenumberEnd: 2316
    functionName: dplane_ctx_rule_get_sock
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_rule_get_sock(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2318
    functionDepth: 1
    functionLinenumber: 2318
    functionLinenumberEnd: 2323
    functionName: dplane_ctx_rule_get_ifname
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: char
    signature: char *dplane_ctx_rule_get_ifname(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2325
    functionDepth: 1
    functionLinenumber: 2325
    functionLinenumberEnd: 2330
    functionName: dplane_ctx_rule_get_unique
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_rule_get_unique(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2337
      start: 2332
    functionDepth: 1
    functionLinenumber: 2332
    functionLinenumberEnd: 2337
    functionName: dplane_ctx_rule_get_seq
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_rule_get_seq(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2344
      start: 2339
    functionDepth: 1
    functionLinenumber: 2339
    functionLinenumberEnd: 2344
    functionName: dplane_ctx_rule_get_priority
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_priority(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2346
    functionDepth: 1
    functionLinenumber: 2346
    functionLinenumberEnd: 2351
    functionName: dplane_ctx_rule_get_old_priority
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_old_priority(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2353
    functionDepth: 1
    functionLinenumber: 2353
    functionLinenumberEnd: 2358
    functionName: dplane_ctx_rule_get_table
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_table(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2365
      start: 2360
    functionDepth: 1
    functionLinenumber: 2360
    functionLinenumberEnd: 2365
    functionName: dplane_ctx_rule_get_old_table
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_old_table(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2367
    functionDepth: 1
    functionLinenumber: 2367
    functionLinenumberEnd: 2372
    functionName: dplane_ctx_rule_get_filter_bm
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_filter_bm(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2379
      start: 2374
    functionDepth: 1
    functionLinenumber: 2374
    functionLinenumberEnd: 2379
    functionName: dplane_ctx_rule_get_old_filter_bm
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_old_filter_bm(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2386
      start: 2381
    functionDepth: 1
    functionLinenumber: 2381
    functionLinenumberEnd: 2386
    functionName: dplane_ctx_rule_get_fwmark
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_fwmark(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2393
      start: 2388
    functionDepth: 1
    functionLinenumber: 2388
    functionLinenumberEnd: 2393
    functionName: dplane_ctx_rule_get_old_fwmark
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_rule_get_old_fwmark(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2400
      start: 2395
    functionDepth: 1
    functionLinenumber: 2395
    functionLinenumberEnd: 2400
    functionName: dplane_ctx_rule_get_ipproto
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_rule_get_ipproto(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2407
      start: 2402
    functionDepth: 1
    functionLinenumber: 2402
    functionLinenumberEnd: 2407
    functionName: dplane_ctx_rule_get_old_ipproto
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_rule_get_old_ipproto(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2409
    functionDepth: 1
    functionLinenumber: 2409
    functionLinenumberEnd: 2414
    functionName: dplane_ctx_rule_get_src_port
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_rule_get_src_port(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2421
      start: 2416
    functionDepth: 1
    functionLinenumber: 2416
    functionLinenumberEnd: 2421
    functionName: dplane_ctx_rule_get_old_src_port
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_rule_get_old_src_port(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2428
      start: 2423
    functionDepth: 1
    functionLinenumber: 2423
    functionLinenumberEnd: 2428
    functionName: dplane_ctx_rule_get_dst_port
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_rule_get_dst_port(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2435
      start: 2430
    functionDepth: 1
    functionLinenumber: 2430
    functionLinenumberEnd: 2435
    functionName: dplane_ctx_rule_get_old_dst_port
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dplane_ctx_rule_get_old_dst_port(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2442
      start: 2437
    functionDepth: 1
    functionLinenumber: 2437
    functionLinenumberEnd: 2442
    functionName: dplane_ctx_rule_get_dsfield
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_rule_get_dsfield(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2449
      start: 2444
    functionDepth: 1
    functionLinenumber: 2444
    functionLinenumberEnd: 2449
    functionName: dplane_ctx_rule_get_old_dsfield
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_rule_get_old_dsfield(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2457
      start: 2451
    functionDepth: 1
    functionLinenumber: 2451
    functionLinenumberEnd: 2457
    functionName: dplane_ctx_rule_get_src_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: 'struct prefix *

      dplane_ctx_rule_get_src_ip(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2465
      start: 2459
    functionDepth: 1
    functionLinenumber: 2459
    functionLinenumberEnd: 2465
    functionName: dplane_ctx_rule_get_old_src_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: 'struct prefix *

      dplane_ctx_rule_get_old_src_ip(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2473
      start: 2467
    functionDepth: 1
    functionLinenumber: 2467
    functionLinenumberEnd: 2473
    functionName: dplane_ctx_rule_get_dst_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: 'struct prefix *

      dplane_ctx_rule_get_dst_ip(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2475
    functionDepth: 1
    functionLinenumber: 2475
    functionLinenumberEnd: 2481
    functionName: dplane_ctx_rule_get_old_dst_ip
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct prefix
    signature: 'struct prefix *

      dplane_ctx_rule_get_old_dst_ip(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2488
      start: 2483
    functionDepth: 1
    functionLinenumber: 2483
    functionLinenumberEnd: 2488
    functionName: dplane_ctx_get_br_port_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_br_port_flags(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2490
    functionDepth: 1
    functionLinenumber: 2490
    functionLinenumberEnd: 2496
    functionName: dplane_ctx_get_br_port_sph_filter_cnt
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_br_port_sph_filter_cnt(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2498
    functionDepth: 1
    functionLinenumber: 2498
    functionLinenumberEnd: 2504
    functionName: dplane_ctx_get_br_port_sph_filters
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct in_addr
    signature: 'struct in_addr *

      dplane_ctx_get_br_port_sph_filters(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2506
    functionDepth: 1
    functionLinenumber: 2506
    functionLinenumberEnd: 2512
    functionName: dplane_ctx_get_br_port_backup_nhg_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_get_br_port_backup_nhg_id(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2518,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:2520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - table
    argTypes:
    - struct zebra_dplane_ctx*
    - struct zebra_pbr_iptable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2521
      start: 2515
    functionDepth: 1
    functionLinenumber: 2515
    functionLinenumberEnd: 2521
    functionName: dplane_ctx_get_pbr_iptable
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_get_pbr_iptable(const struct zebra_dplane_ctx *ctx,\n\t\t\t\tstruct
      zebra_pbr_iptable *table)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2526,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_dplane.c:2528,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:2532,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:2535,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:2538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - ipset
    argTypes:
    - struct zebra_dplane_ctx*
    - struct zebra_pbr_ipset*
    assertStmts:
    - condition: (ipset)
      pos:
        line_end: 2527
        line_start: 2527
        source_file: /src/frr/zebra/zebra_dplane.c
    constantsTouched: []
    func_position:
      end: 2539
      start: 2523
    functionDepth: 1
    functionLinenumber: 2523
    functionLinenumberEnd: 2539
    functionName: dplane_ctx_get_pbr_ipset
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - memset
    - DPLANE_CTX_VALID
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_get_pbr_ipset(const struct zebra_dplane_ctx *ctx,\n\t\t\t
      \     struct zebra_pbr_ipset *ipset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2544,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_dplane.c:2546,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:2548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - entry
    argTypes:
    - struct zebra_dplane_ctx*
    - struct zebra_pbr_ipset_entry*
    assertStmts:
    - condition: (entry)
      pos:
        line_end: 2545
        line_start: 2545
        source_file: /src/frr/zebra/zebra_dplane.c
    constantsTouched: []
    func_position:
      end: 2549
      start: 2541
    functionDepth: 1
    functionLinenumber: 2541
    functionLinenumberEnd: 2549
    functionName: dplane_ctx_get_pbr_ipset_entry
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - memcpy
    - DPLANE_CTX_VALID
    - assert
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_get_pbr_ipset_entry(const struct zebra_dplane_ctx
      *ctx,\n\t\t\t\t    struct zebra_pbr_ipset_entry *entry)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2557
      start: 2551
    functionDepth: 1
    functionLinenumber: 2551
    functionLinenumberEnd: 2557
    functionName: dplane_ctx_rule_get_smac
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct ethaddr
    signature: 'struct ethaddr *

      dplane_ctx_rule_get_smac(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2559
    functionDepth: 1
    functionLinenumber: 2559
    functionLinenumberEnd: 2565
    functionName: dplane_ctx_rule_get_dmac
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: struct ethaddr
    signature: 'struct ethaddr *

      dplane_ctx_rule_get_dmac(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2567
    functionDepth: 1
    functionLinenumber: 2567
    functionLinenumberEnd: 2572
    functionName: dplane_ctx_rule_get_out_ifindex
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: int
    signature: int dplane_ctx_rule_get_out_ifindex(const struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2574
    functionDepth: 1
    functionLinenumber: 2574
    functionLinenumberEnd: 2579
    functionName: dplane_ctx_rule_get_old_dp_flow_ptr
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: intptr_t
    signature: intptr_t dplane_ctx_rule_get_old_dp_flow_ptr(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2586
      start: 2581
    functionDepth: 1
    functionLinenumber: 2581
    functionLinenumberEnd: 2586
    functionName: dplane_ctx_rule_get_dp_flow_ptr
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: intptr_t
    signature: intptr_t dplane_ctx_rule_get_dp_flow_ptr(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - dp_flow_ptr
    argTypes:
    - struct zebra_dplane_ctx*
    - intptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2594
      start: 2588
    functionDepth: 1
    functionLinenumber: 2588
    functionLinenumberEnd: 2594
    functionName: dplane_ctx_rule_set_dp_flow_ptr
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_rule_set_dp_flow_ptr(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      \    intptr_t dp_flow_ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_intf_extra_list_const_first
      Src: /src/frr/zebra/zebra_dplane.c:2606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2608
      start: 2603
    functionDepth: 0
    functionLinenumber: 2603
    functionLinenumberEnd: 2608
    functionName: dplane_ctx_get_intf_extra
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_intf_extra_list_const_first
    linkageType: ''
    returnType: struct dplane_intf_extra
    signature: 'struct dplane_intf_extra *

      dplane_ctx_get_intf_extra(const struct zebra_dplane_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_intf_extra_list_const_next
      Src: /src/frr/zebra/zebra_dplane.c:2614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - ptr
    argTypes:
    - struct zebra_dplane_ctx*
    - struct dplane_intf_extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2610
    functionDepth: 0
    functionLinenumber: 2610
    functionLinenumberEnd: 2616
    functionName: dplane_ctx_intf_extra_next
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_intf_extra_list_const_next
    linkageType: ''
    returnType: struct dplane_intf_extra
    signature: "struct dplane_intf_extra *\ndplane_ctx_intf_extra_next(const struct
      zebra_dplane_ctx *ctx,\n\t\t\t   const struct dplane_intf_extra *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - struct dplane_intf_extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2621
      start: 2618
    functionDepth: 0
    functionLinenumber: 2618
    functionLinenumberEnd: 2621
    functionName: dplane_intf_extra_get_vrfid
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t dplane_intf_extra_get_vrfid(const struct dplane_intf_extra
      *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - struct dplane_intf_extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2623
    functionDepth: 0
    functionLinenumber: 2623
    functionLinenumberEnd: 2626
    functionName: dplane_intf_extra_get_ifindex
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_intf_extra_get_ifindex(const struct dplane_intf_extra
      *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - struct dplane_intf_extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2631
      start: 2628
    functionDepth: 0
    functionLinenumber: 2628
    functionLinenumberEnd: 2631
    functionName: dplane_intf_extra_get_flags
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_intf_extra_get_flags(const struct dplane_intf_extra
      *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - struct dplane_intf_extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2633
    functionDepth: 0
    functionLinenumber: 2633
    functionLinenumberEnd: 2636
    functionName: dplane_intf_extra_get_status
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_intf_extra_get_status(const struct dplane_intf_extra
      *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2642
    functionDepth: 1
    functionLinenumber: 2642
    functionLinenumberEnd: 2647
    functionName: dplane_ctx_neightable_get_family
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dplane_ctx_neightable_get_family(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2649
    functionDepth: 1
    functionLinenumber: 2649
    functionLinenumberEnd: 2655
    functionName: dplane_ctx_neightable_get_app_probes
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_neightable_get_app_probes(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2657
    functionDepth: 1
    functionLinenumber: 2657
    functionLinenumberEnd: 2663
    functionName: dplane_ctx_neightable_get_ucast_probes
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_neightable_get_ucast_probes(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2671
      start: 2665
    functionDepth: 1
    functionLinenumber: 2665
    functionLinenumberEnd: 2671
    functionName: dplane_ctx_neightable_get_mcast_probes
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_ctx_neightable_get_mcast_probes(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2679
      start: 2673
    functionDepth: 1
    functionLinenumber: 2673
    functionLinenumberEnd: 2679
    functionName: dplane_ctx_get_netconf_mpls
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: enum dplane_netconf_status_e
    signature: enum dplane_netconf_status_e dplane_ctx_get_netconf_mpls(const struct
      zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 2681
    functionDepth: 1
    functionLinenumber: 2681
    functionLinenumberEnd: 2687
    functionName: dplane_ctx_get_netconf_mcast
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: enum dplane_netconf_status_e
    signature: enum dplane_netconf_status_e dplane_ctx_get_netconf_mcast(const struct
      zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2692,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2695
      start: 2689
    functionDepth: 1
    functionLinenumber: 2689
    functionLinenumberEnd: 2695
    functionName: dplane_ctx_get_netconf_linkdown
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: enum dplane_netconf_status_e
    signature: enum dplane_netconf_status_e dplane_ctx_get_netconf_linkdown(const
      struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - val
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_netconf_status_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2697
    functionDepth: 1
    functionLinenumber: 2697
    functionLinenumberEnd: 2703
    functionName: dplane_ctx_set_netconf_mpls
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_netconf_mpls(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      enum dplane_netconf_status_e val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - val
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_netconf_status_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2705
    functionDepth: 1
    functionLinenumber: 2705
    functionLinenumberEnd: 2711
    functionName: dplane_ctx_set_netconf_mcast
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_netconf_mcast(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      \ enum dplane_netconf_status_e val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_CTX_VALID
      Src: /src/frr/zebra/zebra_dplane.c:2716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - val
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_netconf_status_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2719
      start: 2713
    functionDepth: 1
    functionLinenumber: 2713
    functionLinenumberEnd: 2719
    functionName: dplane_ctx_set_netconf_linkdown
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_CTX_VALID
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_set_netconf_linkdown(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      \    enum dplane_netconf_status_e val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:2727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2729
      start: 2725
    functionDepth: 1
    functionLinenumber: 2725
    functionLinenumberEnd: 2729
    functionName: dplane_get_in_queue_limit
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_get_in_queue_limit(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/zebra_dplane.c:2740,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - limit
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2734
    functionDepth: 1
    functionLinenumber: 2734
    functionLinenumberEnd: 2742
    functionName: dplane_set_in_queue_limit
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - atomic_store_explicit
    linkageType: ''
    returnType: void
    signature: void dplane_set_in_queue_limit(uint32_t limit, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:2749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2751
      start: 2747
    functionDepth: 1
    functionLinenumber: 2747
    functionLinenumberEnd: 2751
    functionName: dplane_get_in_queue_len
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_get_in_queue_len(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ns_info
    - zns
    argTypes:
    - struct zebra_dplane_info*
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2757
    functionDepth: 0
    functionLinenumber: 2757
    functionLinenumberEnd: 2767
    functionName: ctx_info_from_zns
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ctx_info_from_zns(struct zebra_dplane_info *ns_info,\n\t\t\t
      \     struct zebra_ns *zns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ctx_info_from_zns
      Src: /src/frr/zebra/zebra_dplane.c:2776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - zns
    - is_update
    argTypes:
    - struct zebra_dplane_ctx*
    - struct zebra_ns*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2772
    functionDepth: 1
    functionLinenumber: 2772
    functionLinenumberEnd: 2791
    functionName: dplane_ctx_ns_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - ctx_info_from_zns
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_ns_init(struct zebra_dplane_ctx *ctx,\n\t\t\t      struct
      zebra_ns *zns,\n\t\t\t      bool is_update)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dplane_intf_extra_list_init
      Src: /src/frr/zebra/zebra_dplane.c:2804,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:2819,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:2822,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:2824,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 7
    argNames:
    - ctx
    - op
    - re
    - p
    - src_p
    - afi
    - safi
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct route_entry*
    - struct prefix*
    - struct prefix_ipv6*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2793
    functionDepth: 0
    functionLinenumber: 2793
    functionLinenumberEnd: 2843
    functionName: dplane_ctx_route_init_basic
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - prefix_copy
    - memset
    - dplane_intf_extra_list_init
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_route_init_basic(struct zebra_dplane_ctx *ctx,\n\t\t\t\tenum
      dplane_op_e op, struct route_entry *re,\n\t\t\t\tconst struct prefix *p,\n\t\t\t\tconst
      struct prefix_ipv6 *src_p, afi_t afi,\n\t\t\t\tsafi_t safi)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_route_init_basic
      Src: /src/frr/zebra/zebra_dplane.c:2873,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/zebra/zebra_dplane.c:2882,1
    - Dst: srcdest_rnode_table
      Src: /src/frr/zebra/zebra_dplane.c:2883,1
    - Dst: dplane_ctx_route_init_basic
      Src: /src/frr/zebra/zebra_dplane.c:2886,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_dplane.c:2891,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_dplane.c:2897,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_dplane.c:2905,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:2906,1
    - Dst: if
      Src: /src/frr/zebra/zebra_dplane.c:2911,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_dplane.c:2912,1
    - Dst: if
      Src: /src/frr/zebra/zebra_dplane.c:2915,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_dplane.c:2916,1
    - Dst: dplane_intf_extra_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:2924,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:2931,1
    - Dst: zl3vni_from_vrf
      Src: /src/frr/zebra/zebra_dplane.c:2934,1
    - Dst: is_l3vni_oper_up
      Src: /src/frr/zebra/zebra_dplane.c:2935,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_dplane.c:2948,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:2950,1
    - Dst: zebra_nhg_resolve
      Src: /src/frr/zebra/zebra_dplane.c:2954,1
    - Dst: zebra_nhg_kernel_nexthops_enabled
      Src: /src/frr/zebra/zebra_dplane.c:2965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:2968,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:2969,1
    - Dst: zebra_router_get_next_sequence
      Src: /src/frr/zebra/zebra_dplane.c:2979,1
    - Dst: tc_qdisc_kind2str
      Src: /src/frr/zebra/zebra_dplane.c:2997,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3000,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3002,1
    - Dst: tc_qdisc_kind2str
      Src: /src/frr/zebra/zebra_dplane.c:3023,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3027,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3029,1
    - Dst: tc_filter_kind2str
      Src: /src/frr/zebra/zebra_dplane.c:3052,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:3055,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:3058,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3068,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3070,1
    - Dst: nexthop_group_copy
      Src: /src/frr/zebra/zebra_dplane.c:3105,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_dplane.c:3108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3109,1
    - Dst: zebra_nhg_nhe2grp
      Src: /src/frr/zebra/zebra_dplane.c:3110,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3113,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3119,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3125,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:3156,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3159,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3160,1
    - Dst: ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL
      Src: /src/frr/zebra/zebra_dplane.c:3175,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/zebra_dplane.c:3187,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3190,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3211,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3211,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:3214,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_dplane.c:3216,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_dplane.c:3217,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:3226,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:3227,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:3236,1
    - Dst: zebra_mpls_lsp_add_nh
      Src: /src/frr/zebra/zebra_dplane.c:3241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3252,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:3256,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:3269,1
    - Dst: zebra_mpls_lsp_add_backup_nh
      Src: /src/frr/zebra/zebra_dplane.c:3274,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:3307,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:3308,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3317,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3317,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:3319,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:3322,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:3340,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_dplane.c:3345,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_dplane.c:3349,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3355,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_dplane.c:3363,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_dplane.c:3367,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3368,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3369,1
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_dplane.c:3374,1
    - Dst: if
      Src: /src/frr/zebra/zebra_dplane.c:3376,1
    - Dst: NEXTHOP_APPEND
      Src: /src/frr/zebra/zebra_dplane.c:3377,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_dplane.c:3385,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_dplane.c:3387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3389,1
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_dplane.c:3394,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_dplane.c:3405,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_dplane.c:3406,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_dplane.c:3412,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_dplane.c:3417,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 202
    argCount: 4
    argNames:
    - ctx
    - op
    - rn
    - re
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct route_node*
    - struct route_entry*
    assertStmts:
    - condition: (re->nhe != NULL)
      pos:
        line_end: 3404
        line_start: 3404
        source_file: /src/frr/zebra/zebra_dplane.c
    constantsTouched: []
    func_position:
      end: 3420
      start: 2850
    functionDepth: 4
    functionLinenumber: 2850
    functionLinenumberEnd: 3420
    functionName: dplane_ctx_route_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - frr_each
    - vrf_info_lookup
    - zebra_vrf_table
    - srcdest_rnode_prefixes
    - dplane_ctx_route_init_basic
    - dplane_ctx_ns_init
    - ZEBRA_IF_IS_PROTODOWN
    - if_lookup_by_index
    - is_l3vni_oper_up
    - rib_get_fib_backup_nhg
    - zl3vni_from_vrf
    - zebra_router_get_next_sequence
    - XCALLOC
    - ALL_NEXTHOPS
    - zebra_nhg_depends_is_empty
    - memset
    - NEXTHOP_APPEND
    - zlog_debug
    - zebra_mpls_lsp_add_nh
    - copy_nexthops
    - if
    - route_node_match
    - prefix_copy
    - assert
    - zebra_ns_lookup
    - rib_get_fib_nhg
    - route_unlock_node
    - dplane_op2str
    - nhlfe_list_init
    - dplane_intf_extra_list_add_tail
    - strlcpy
    - zebra_nhg_nhe2grp
    - nexthop_dup
    - UNSET_FLAG
    - tc_qdisc_kind2str
    - memcpy
    - ALL_NEXTHOPS_PTR
    - ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL
    - zebra_nhg_kernel_nexthops_enabled
    - srcdest_rnode_table
    - CHECK_FLAG
    - nexthop_group_copy
    - zebra_mpls_lsp_add_backup_nh
    - zebra_nhg_resolve
    - tc_filter_kind2str
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_route_init(struct zebra_dplane_ctx *ctx, enum dplane_op_e
      op,\n\t\t\t  struct route_node *rn, struct route_entry *re)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_qdisc_kind2str
      Src: /src/frr/zebra/zebra_dplane.c:3023,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3027,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - op
    - class
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct zebra_tc_class*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3034
      start: 3009
    functionDepth: 2
    functionLinenumber: 3009
    functionLinenumberEnd: 3034
    functionName: dplane_ctx_tc_class_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - zebra_ns_lookup
    - dplane_ctx_ns_init
    - tc_qdisc_kind2str
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_tc_class_init(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      \   enum dplane_op_e op,\n\t\t\t\t    struct zebra_tc_class *class)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_filter_kind2str
      Src: /src/frr/zebra/zebra_dplane.c:3052,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:3055,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:3058,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3068,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - op
    - filter
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct zebra_tc_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3075
      start: 3036
    functionDepth: 2
    functionLinenumber: 3036
    functionLinenumberEnd: 3075
    functionName: dplane_ctx_tc_filter_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_ns_init
    - prefix_copy
    - tc_filter_kind2str
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_tc_filter_init(struct zebra_dplane_ctx *ctx,\n\t\t\t\t
      \    enum dplane_op_e op,\n\t\t\t\t     struct zebra_tc_filter *filter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_copy
      Src: /src/frr/zebra/zebra_dplane.c:3105,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_dplane.c:3108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3109,1
    - Dst: zebra_nhg_nhe2grp
      Src: /src/frr/zebra/zebra_dplane.c:3110,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3113,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3119,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - op
    - nhe
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3130
      start: 3086
    functionDepth: 2
    functionLinenumber: 3086
    functionLinenumberEnd: 3130
    functionName: dplane_ctx_nexthop_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - zebra_nhg_depends_is_empty
    - CHECK_FLAG
    - vrf_info_lookup
    - nexthop_group_copy
    - zebra_nhg_nhe2grp
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_nexthop_init(struct zebra_dplane_ctx *ctx, enum dplane_op_e
      op,\n\t\t\t    struct nhg_hash_entry *nhe)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:3156,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3159,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3160,1
    - Dst: ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL
      Src: /src/frr/zebra/zebra_dplane.c:3175,1
    - Dst: ZEBRA_IF_IS_PROTODOWN
      Src: /src/frr/zebra/zebra_dplane.c:3187,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3190,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - op
    - ifp
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3196
      start: 3141
    functionDepth: 2
    functionLinenumber: 3141
    functionLinenumberEnd: 3196
    functionName: dplane_ctx_intf_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - ZEBRA_IF_IS_PROTODOWN
    - ZEBRA_IF_IS_PROTODOWN_ONLY_EXTERNAL
    - strlcpy
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_intf_init(struct zebra_dplane_ctx *ctx, enum dplane_op_e
      op,\n\t\t\t const struct interface *ifp)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3211,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3211,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:3214,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_dplane.c:3216,1
    - Dst: nhlfe_list_init
      Src: /src/frr/zebra/zebra_dplane.c:3217,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:3226,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:3227,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:3236,1
    - Dst: zebra_mpls_lsp_add_nh
      Src: /src/frr/zebra/zebra_dplane.c:3241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3252,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:3256,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:3269,1
    - Dst: zebra_mpls_lsp_add_backup_nh
      Src: /src/frr/zebra/zebra_dplane.c:3274,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 3
    argNames:
    - ctx
    - op
    - lsp
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct zebra_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3288
      start: 3201
    functionDepth: 4
    functionLinenumber: 3201
    functionLinenumberEnd: 3288
    functionName: dplane_ctx_lsp_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - dplane_op2str
    - nhlfe_list_init
    - memset
    - frr_each
    - CHECK_FLAG
    - zebra_mpls_lsp_add_backup_nh
    - zlog_debug
    - zebra_mpls_lsp_add_nh
    - memcpy
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_lsp_init(struct zebra_dplane_ctx *ctx, enum dplane_op_e
      op,\n\t\t\tstruct zebra_lsp *lsp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:3307,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:3308,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3317,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3317,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:3319,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:3322,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:3340,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_dplane.c:3345,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_dplane.c:3349,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3355,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_dplane.c:3363,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_dplane.c:3367,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3368,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3369,1
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_dplane.c:3374,1
    - Dst: if
      Src: /src/frr/zebra/zebra_dplane.c:3376,1
    - Dst: NEXTHOP_APPEND
      Src: /src/frr/zebra/zebra_dplane.c:3377,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_dplane.c:3385,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_dplane.c:3387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3389,1
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_dplane.c:3394,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_dplane.c:3405,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_dplane.c:3406,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_dplane.c:3412,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 3
    argNames:
    - ctx
    - op
    - pw
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct zebra_pw*
    assertStmts:
    - condition: (re->nhe != NULL)
      pos:
        line_end: 3404
        line_start: 3404
        source_file: /src/frr/zebra/zebra_dplane.c
    constantsTouched: []
    func_position:
      end: 3416
      start: 3293
    functionDepth: 2
    functionLinenumber: 3293
    functionLinenumberEnd: 3416
    functionName: dplane_ctx_pw_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - rib_get_fib_nhg
    - assert
    - dplane_op2str
    - route_node_match
    - rib_get_fib_backup_nhg
    - NEXTHOP_APPEND
    - memset
    - strlcpy
    - CHECK_FLAG
    - ALL_NEXTHOPS_PTR
    - zebra_vrf_table
    - nexthop_dup
    - zlog_debug
    - copy_nexthops
    - if
    - memcpy
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_pw_init(struct zebra_dplane_ctx *ctx,\n\t\t\t      enum
      dplane_op_e op,\n\t\t\t      struct zebra_pw *pw)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:3355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3357
      start: 3354
    functionDepth: 1
    functionLinenumber: 3354
    functionLinenumberEnd: 3357
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 6
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE(rn, re)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:3443,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/zebra_dplane.c:3444,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:3451,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_dplane.c:3455,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3456,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:3459,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:3460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - dplane_rule
    - rule
    argTypes:
    - struct dplane_ctx_rule*
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3465
      start: 3429
    functionDepth: 2
    functionLinenumber: 3429
    functionLinenumberEnd: 3465
    functionName: dplane_ctx_rule_init_single
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - if_lookup_by_index_per_ns
    - prefix_copy
    - memcpy
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: "void dplane_ctx_rule_init_single(struct dplane_ctx_rule *dplane_rule,\n\t\t\t\t\tstruct
      zebra_pbr_rule *rule)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:3482,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:3484,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:3493,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:3493,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:3497,1
    - Dst: dplane_ctx_rule_init_single
      Src: /src/frr/zebra/zebra_dplane.c:3503,1
    - Dst: dplane_ctx_rule_init_single
      Src: /src/frr/zebra/zebra_dplane.c:3505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - op
    - new_rule
    - old_rule
    argTypes:
    - struct zebra_dplane_ctx*
    - enum dplane_op_e
    - struct zebra_pbr_rule*
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3513
      start: 3476
    functionDepth: 3
    functionLinenumber: 3476
    functionLinenumberEnd: 3513
    functionName: dplane_ctx_rule_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_op2str
    - strlcpy
    - dplane_ctx_rule_init_single
    - zlog_debug
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int dplane_ctx_rule_init(struct zebra_dplane_ctx *ctx,\n\t\t\t\tenum
      dplane_op_e op,\n\t\t\t\tstruct zebra_pbr_rule *new_rule,\n\t\t\t\tstruct zebra_pbr_rule
      *old_rule)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_dplane.c:3517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3518
      start: 3515
    functionDepth: 0
    functionLinenumber: 3515
    functionLinenumberEnd: 3518
    functionName: zebra_dplane_interface_name_list_deletion
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_interface_name_list_deletion(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:3803,1
    - Dst: dplane_ctx_tc_qdisc_init
      Src: /src/frr/zebra/zebra_dplane.c:3806,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:3809,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3812,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3817,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:3819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - op
    - qdisc
    argTypes:
    - enum dplane_op_e
    - struct zebra_tc_qdisc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3823
      start: 3794
    functionDepth: 5
    functionLinenumber: 3794
    functionLinenumberEnd: 3823
    functionName: tc_qdisc_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_tc_qdisc_init
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result tc_qdisc_update_internal(enum dplane_op_e
      op,\n\t\t\t const struct zebra_tc_qdisc *qdisc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:3833,1
    - Dst: dplane_ctx_tc_class_init
      Src: /src/frr/zebra/zebra_dplane.c:3836,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:3839,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3842,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3847,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:3849,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - op
    - class
    argTypes:
    - enum dplane_op_e
    - struct zebra_tc_class*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3853
      start: 3825
    functionDepth: 5
    functionLinenumber: 3825
    functionLinenumberEnd: 3853
    functionName: tc_class_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    - dplane_ctx_tc_class_init
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result tc_class_update_internal(enum dplane_op_e
      op, struct zebra_tc_class *class)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:3863,1
    - Dst: dplane_ctx_tc_filter_init
      Src: /src/frr/zebra/zebra_dplane.c:3866,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:3869,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3872,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3877,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:3879,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - op
    - filter
    argTypes:
    - enum dplane_op_e
    - struct zebra_tc_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3883
      start: 3855
    functionDepth: 5
    functionLinenumber: 3855
    functionLinenumberEnd: 3883
    functionName: tc_filter_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_update_enqueue
    - dplane_ctx_tc_filter_init
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result tc_filter_update_internal(enum dplane_op_e
      op, struct zebra_tc_filter *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_qdisc_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qdisc
    argTypes:
    - struct zebra_tc_qdisc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3888
      start: 3885
    functionDepth: 6
    functionLinenumber: 3885
    functionLinenumberEnd: 3888
    functionName: dplane_tc_qdisc_install
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - tc_qdisc_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_qdisc_install(struct zebra_tc_qdisc
      *qdisc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_qdisc_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qdisc
    argTypes:
    - struct zebra_tc_qdisc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3893
      start: 3890
    functionDepth: 6
    functionLinenumber: 3890
    functionLinenumberEnd: 3893
    functionName: dplane_tc_qdisc_uninstall
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - tc_qdisc_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_qdisc_uninstall(struct zebra_tc_qdisc
      *qdisc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_class_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class
    argTypes:
    - struct zebra_tc_class*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3898
      start: 3895
    functionDepth: 6
    functionLinenumber: 3895
    functionLinenumberEnd: 3898
    functionName: dplane_tc_class_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - tc_class_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_class_add(struct zebra_tc_class
      *class)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_class_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class
    argTypes:
    - struct zebra_tc_class*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3903
      start: 3900
    functionDepth: 6
    functionLinenumber: 3900
    functionLinenumberEnd: 3903
    functionName: dplane_tc_class_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - tc_class_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_class_delete(struct zebra_tc_class
      *class)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_class_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class
    argTypes:
    - struct zebra_tc_class*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3908
      start: 3905
    functionDepth: 6
    functionLinenumber: 3905
    functionLinenumberEnd: 3908
    functionName: dplane_tc_class_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - tc_class_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_class_update(struct zebra_tc_class
      *class)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_filter_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct zebra_tc_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3913
      start: 3910
    functionDepth: 6
    functionLinenumber: 3910
    functionLinenumberEnd: 3913
    functionName: dplane_tc_filter_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - tc_filter_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_filter_add(struct zebra_tc_filter
      *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_filter_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct zebra_tc_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3918
      start: 3915
    functionDepth: 6
    functionLinenumber: 3915
    functionLinenumberEnd: 3918
    functionName: dplane_tc_filter_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - tc_filter_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_filter_delete(struct zebra_tc_filter
      *filter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tc_filter_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct zebra_tc_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3923
      start: 3920
    functionDepth: 6
    functionLinenumber: 3920
    functionLinenumberEnd: 3923
    functionName: dplane_tc_filter_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - tc_filter_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_tc_filter_update(struct zebra_tc_filter
      *filter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:3941,1
    - Dst: dplane_ctx_nexthop_init
      Src: /src/frr/zebra/zebra_dplane.c:3943,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:3945,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3948,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:3954,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:3957,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - nhe
    - op
    argTypes:
    - struct nhg_hash_entry*
    - enum dplane_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3961
      start: 3933
    functionDepth: 5
    functionLinenumber: 3933
    functionLinenumberEnd: 3961
    functionName: dplane_nexthop_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_nexthop_init
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_nexthop_update_internal(struct nhg_hash_entry
      *nhe, enum dplane_op_e op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_route_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3974,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rn
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3978
      start: 3966
    functionDepth: 0
    functionLinenumber: 3966
    functionLinenumberEnd: 3978
    functionName: dplane_route_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_route_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_route_add(struct route_node *rn,\n\t\t\t\t\t
      \ struct route_entry *re)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_route_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:3992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - rn
    - re
    - old_re
    argTypes:
    - struct route_node*
    - struct route_entry*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3996
      start: 3983
    functionDepth: 0
    functionLinenumber: 3983
    functionLinenumberEnd: 3996
    functionName: dplane_route_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_route_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_route_update(struct route_node *rn,\n\t\t\t\t\t
      \    struct route_entry *re,\n\t\t\t\t\t     struct route_entry *old_re)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_route_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4009,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rn
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4013
      start: 4001
    functionDepth: 0
    functionLinenumber: 4001
    functionLinenumberEnd: 4013
    functionName: dplane_route_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_route_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_route_delete(struct route_node *rn,\n\t\t\t\t\t
      \    struct route_entry *re)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_route_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4031,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - rn
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4035
      start: 4018
    functionDepth: 0
    functionLinenumber: 4018
    functionLinenumberEnd: 4035
    functionName: dplane_sys_route_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_route_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_sys_route_add(struct route_node *rn,\n\t\t\t\t\t
      \     struct route_entry *re)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_route_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4052,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - rn
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4056
      start: 4040
    functionDepth: 0
    functionLinenumber: 4040
    functionLinenumberEnd: 4056
    functionName: dplane_sys_route_del
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_route_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_sys_route_del(struct route_node *rn,\n\t\t\t\t\t
      \     struct route_entry *re)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:4218,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:4219,1
    - Dst: zebra_mpls_lsp_add_nh
      Src: /src/frr/zebra/zebra_dplane.c:4220,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4228
      start: 4216
    functionDepth: 4
    functionLinenumber: 4216
    functionLinenumberEnd: 4228
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 41
    functionsReached:
    - CHECK_FLAG
    - zebra_mpls_lsp_add_nh
    linkageType: ''
    returnType: void
    signature: void frr_each(nhlfe_list, head, nhlfe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pw_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4258
      start: 4255
    functionDepth: 1
    functionLinenumber: 4255
    functionLinenumberEnd: 4258
    functionName: dplane_pw_install
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - pw_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pw_install(struct zebra_pw *pw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pw_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4266
      start: 4263
    functionDepth: 1
    functionLinenumber: 4263
    functionLinenumberEnd: 4266
    functionName: dplane_pw_uninstall
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - pw_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pw_uninstall(struct zebra_pw *pw)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4279,1
    - Dst: dplane_ctx_lsp_init
      Src: /src/frr/zebra/zebra_dplane.c:4281,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:4285,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4289,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4295,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:4297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - lsp
    - op
    argTypes:
    - struct zebra_lsp*
    - enum dplane_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4301
      start: 4271
    functionDepth: 5
    functionLinenumber: 4271
    functionLinenumberEnd: 4301
    functionName: lsp_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    - dplane_ctx_lsp_init
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result lsp_update_internal(struct zebra_lsp *lsp,\n\t\t\t\t\t\t
      \   enum dplane_op_e op)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4313,1
    - Dst: dplane_ctx_pw_init
      Src: /src/frr/zebra/zebra_dplane.c:4315,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:4319,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4323,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4329,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:4331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - pw
    - op
    argTypes:
    - struct zebra_pw*
    - enum dplane_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4335
      start: 4306
    functionDepth: 5
    functionLinenumber: 4306
    functionLinenumberEnd: 4335
    functionName: pw_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - dplane_ctx_pw_init
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result pw_update_internal(struct zebra_pw *pw,\n\t\t\t\t\t\t
      \  enum dplane_op_e op)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_dplane.c:4361,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_dplane.c:4361,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_dplane.c:4362,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4365,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:4367,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4371,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:4377,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:4378,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:4381,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:4384,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:4389,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:4393,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4396,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4403,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:4405,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - ifp
    - non_df
    - sph_filter_cnt
    - sph_filters
    - backup_nhg_id
    argTypes:
    - struct interface*
    - bool
    - uint32_t
    - struct in_addr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4409
      start: 4340
    functionDepth: 5
    functionLinenumber: 4340
    functionLinenumberEnd: 4409
    functionName: dplane_br_port_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - dplane_op2str
    - strlen
    - memset
    - strlcpy
    - dplane_update_enqueue
    - snprintfrr
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - zlog_debug
    - dplane_ctx_free
    - memcpy
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_br_port_update(const struct interface
      *ifp, bool non_df,\n\t\t      uint32_t sph_filter_cnt,\n\t\t      const struct
      in_addr *sph_filters, uint32_t backup_nhg_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4419,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:4423,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:4425,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:4426,1
    - Dst: dplane_ctx_set_netconf_mpls
      Src: /src/frr/zebra/zebra_dplane.c:4430,1
    - Dst: dplane_ctx_set_netconf_mpls
      Src: /src/frr/zebra/zebra_dplane.c:4432,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4435,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:4438,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4444,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:4446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ifp
    - set
    argTypes:
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4450
      start: 4411
    functionDepth: 5
    functionLinenumber: 4411
    functionLinenumberEnd: 4450
    functionName: dplane_intf_mpls_modify_state
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - dplane_update_enqueue
    - dplane_ctx_set_netconf_mpls
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_intf_mpls_modify_state(const struct
      interface *ifp, bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/zebra_dplane.c:4462,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4464,1
    - Dst: intf_addr_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4470,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4471
      start: 4455
    functionDepth: 1
    functionLinenumber: 4455
    functionLinenumberEnd: 4471
    functionName: dplane_intf_addr_set
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 7
    functionsReached:
    - CONNECTED_PEER
    - zlog_debug
    - intf_addr_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_intf_addr_set(const struct interface
      *ifp,\n\t\t\t\t\t      const struct connected *ifc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: intf_addr_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4480
      start: 4476
    functionDepth: 1
    functionLinenumber: 4476
    functionLinenumberEnd: 4480
    functionName: dplane_intf_addr_unset
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - intf_addr_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_intf_addr_unset(const struct interface
      *ifp,\n\t\t\t\t\t\tconst struct connected *ifc)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4492,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:4493,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4496,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:4502,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:4503,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:4506,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:4508,1
    - Dst: if_is_broadcast
      Src: /src/frr/zebra/zebra_dplane.c:4512,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/zebra_dplane.c:4515,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:4521,1
    - Dst: strlen
      Src: /src/frr/zebra/zebra_dplane.c:4530,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:4533,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/zebra_dplane.c:4537,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:4541,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4544,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4551,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:4553,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 3
    argNames:
    - ifp
    - ifc
    - op
    argTypes:
    - struct interface*
    - struct connected*
    - enum dplane_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4557
      start: 4482
    functionDepth: 5
    functionLinenumber: 4482
    functionLinenumberEnd: 4557
    functionName: intf_addr_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - dplane_op2str
    - if_is_broadcast
    - strlen
    - memset
    - strlcpy
    - CHECK_FLAG
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - zlog_debug
    - XSTRDUP
    - dplane_ctx_free
    - CONNECTED_PEER
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result intf_addr_update_internal(\n\tconst struct
      interface *ifp, const struct connected *ifc,\n\tenum dplane_op_e op)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4575,1
    - Dst: dplane_ctx_intf_init
      Src: /src/frr/zebra/zebra_dplane.c:4577,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:4579,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4582,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4588,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:4591,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ifp
    - op
    argTypes:
    - struct interface*
    - enum dplane_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4595
      start: 4567
    functionDepth: 5
    functionLinenumber: 4567
    functionLinenumberEnd: 4595
    functionName: dplane_intf_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - dplane_ctx_intf_init
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_intf_update_internal(const struct interface
      *ifp, enum dplane_op_e op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_intf_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4607
      start: 4600
    functionDepth: 6
    functionLinenumber: 4600
    functionLinenumberEnd: 4607
    functionName: dplane_intf_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_intf_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_intf_add(const struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_intf_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4619
      start: 4612
    functionDepth: 6
    functionLinenumber: 4612
    functionLinenumberEnd: 4619
    functionName: dplane_intf_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 5
    functionsReached:
    - dplane_intf_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_intf_update(const struct interface
      *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_intf_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4631
      start: 4624
    functionDepth: 6
    functionLinenumber: 4624
    functionLinenumberEnd: 4631
    functionName: dplane_intf_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_intf_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_intf_delete(const struct interface
      *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mac_update_common
      Src: /src/frr/zebra/zebra_dplane.c:4650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 9
    argNames:
    - ifp
    - bridge_ifp
    - vid
    - mac
    - vni
    - vtep_ip
    - sticky
    - nhg_id
    - was_static
    argTypes:
    - struct interface*
    - struct interface*
    - vlanid_t
    - struct ethaddr*
    - vni_t
    - struct in_addr
    - bool
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4654
      start: 4636
    functionDepth: 1
    functionLinenumber: 4636
    functionLinenumberEnd: 4654
    functionName: dplane_rem_mac_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - mac_update_common
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_rem_mac_add(const struct interface
      *ifp,\n\t\t   const struct interface *bridge_ifp, vlanid_t vid,\n\t\t   const
      struct ethaddr *mac, vni_t vni, struct in_addr vtep_ip,\n\t\t   bool sticky,
      uint32_t nhg_id, bool was_static)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mac_update_common
      Src: /src/frr/zebra/zebra_dplane.c:4671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - ifp
    - bridge_ifp
    - vid
    - mac
    - vni
    - vtep_ip
    argTypes:
    - struct interface*
    - struct interface*
    - vlanid_t
    - struct ethaddr*
    - vni_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4674
      start: 4659
    functionDepth: 1
    functionLinenumber: 4659
    functionLinenumberEnd: 4674
    functionName: dplane_rem_mac_del
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - mac_update_common
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_rem_mac_del(const struct interface
      *ifp,\n\t\t\t\t\t    const struct interface *bridge_ifp,\n\t\t\t\t\t    vlanid_t
      vid,\n\t\t\t\t\t    const struct ethaddr *mac,\n\t\t\t\t\t    vni_t vni, struct
      in_addr vtep_ip)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4690,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:4691,1
    - Dst: neigh_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4700,1
    - Dst: ipaddr_family
      Src: /src/frr/zebra/zebra_dplane.c:4701,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - op
    - ifp
    - link_ip
    - ip
    - ndm_state
    - protocol
    argTypes:
    - enum dplane_op_e
    - struct interface*
    - struct ipaddr*
    - struct ipaddr*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4705
      start: 4679
    functionDepth: 1
    functionLinenumber: 4679
    functionLinenumberEnd: 4705
    functionName: dplane_neigh_ip_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - dplane_op2str
    - zlog_debug
    - ipaddr_family
    - neigh_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_neigh_ip_update(enum dplane_op_e op,\n\t\t\t\t\t\tconst
      struct interface *ifp,\n\t\t\t\t\t\tstruct ipaddr *link_ip,\n\t\t\t\t\t\tstruct
      ipaddr *ip,\n\t\t\t\t\t\tuint32_t ndm_state, int protocol)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mac_update_common
      Src: /src/frr/zebra/zebra_dplane.c:4731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 7
    argNames:
    - ifp
    - bridge_ifp
    - vid
    - mac
    - sticky
    - set_static
    - set_inactive
    argTypes:
    - struct interface*
    - struct interface*
    - vlanid_t
    - struct ethaddr*
    - bool
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4734
      start: 4710
    functionDepth: 1
    functionLinenumber: 4710
    functionLinenumberEnd: 4734
    functionName: dplane_local_mac_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - mac_update_common
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_local_mac_add(const struct interface
      *ifp,\n\t\t\t\t\tconst struct interface *bridge_ifp,\n\t\t\t\t\tvlanid_t vid,\n\t\t\t\t\tconst
      struct ethaddr *mac,\n\t\t\t\t\tbool sticky,\n\t\t\t\t\tuint32_t set_static,\n\t\t\t\t\tuint32_t
      set_inactive)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mac_update_common
      Src: /src/frr/zebra/zebra_dplane.c:4750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ifp
    - bridge_ifp
    - vid
    - mac
    argTypes:
    - struct interface*
    - struct interface*
    - vlanid_t
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4753
      start: 4739
    functionDepth: 1
    functionLinenumber: 4739
    functionLinenumberEnd: 4753
    functionName: dplane_local_mac_del
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - mac_update_common
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_local_mac_del(const struct interface
      *ifp,\n\t\t     const struct interface *bridge_ifp, vlanid_t vid,\n\t\t     const
      struct ethaddr *mac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:4769,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:4770,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:4772,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:4776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 10
    argNames:
    - ctx
    - ifp
    - br_ifp
    - vid
    - mac
    - vni
    - vtep_ip
    - sticky
    - nhg_id
    - update_flags
    argTypes:
    - struct zebra_dplane_ctx*
    - struct interface*
    - struct interface*
    - vlanid_t
    - struct ethaddr*
    - vni_t
    - struct in_addr
    - bool
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4786
      start: 4758
    functionDepth: 2
    functionLinenumber: 4758
    functionLinenumberEnd: 4786
    functionName: dplane_mac_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - memset
    - strlcpy
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: "void dplane_mac_init(struct zebra_dplane_ctx *ctx, const struct interface
      *ifp,\n\t\t     const struct interface *br_ifp, vlanid_t vid,\n\t\t     const
      struct ethaddr *mac, vni_t vni,\n\t\t     struct in_addr vtep_ip, bool sticky,
      uint32_t nhg_id,\n\t\t     uint32_t update_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4802,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:4803,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4805,1
    - Dst: dplane_mac_init
      Src: /src/frr/zebra/zebra_dplane.c:4809,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:4813,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4816,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:4823,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:4825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 10
    argNames:
    - op
    - ifp
    - br_ifp
    - vid
    - mac
    - vni
    - vtep_ip
    - sticky
    - nhg_id
    - update_flags
    argTypes:
    - enum dplane_op_e
    - struct interface*
    - struct interface*
    - vlanid_t
    - struct ethaddr*
    - vni_t
    - struct in_addr
    - bool
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4829
      start: 4791
    functionDepth: 5
    functionLinenumber: 4791
    functionLinenumberEnd: 4829
    functionName: mac_update_common
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - dplane_op2str
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - zlog_debug
    - dplane_ctx_free
    - dplane_mac_init
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result mac_update_common(enum dplane_op_e op, const
      struct interface *ifp,\n\t\t  const struct interface *br_ifp, vlanid_t vid,\n\t\t
      \ const struct ethaddr *mac, vni_t vni, struct in_addr vtep_ip,\n\t\t  bool
      sticky, uint32_t nhg_id, uint32_t update_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: neigh_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ifp
    - ip
    - mac
    - flags
    - was_static
    argTypes:
    - struct interface*
    - struct ipaddr*
    - struct ethaddr*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4852
      start: 4834
    functionDepth: 1
    functionLinenumber: 4834
    functionLinenumberEnd: 4852
    functionName: dplane_rem_neigh_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - neigh_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_rem_neigh_add(const struct interface
      *ifp,\n\t\t\t\t\t  const struct ipaddr *ip,\n\t\t\t\t\t  const struct ethaddr
      *mac,\n\t\t\t\t\t  uint32_t flags, bool was_static)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: neigh_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - ifp
    - ip
    - mac
    - set_router
    - set_static
    - set_inactive
    argTypes:
    - struct interface*
    - struct ipaddr*
    - struct ethaddr*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4886
      start: 4857
    functionDepth: 1
    functionLinenumber: 4857
    functionLinenumberEnd: 4886
    functionName: dplane_local_neigh_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - neigh_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_local_neigh_add(const struct interface
      *ifp,\n\t\t\t\t\t  const struct ipaddr *ip,\n\t\t\t\t\t  const struct ethaddr
      *mac,\n\t\t\t\t\t  bool set_router, bool set_static,\n\t\t\t\t\t  bool set_inactive)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: neigh_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ifp
    - ip
    argTypes:
    - struct interface*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4904
      start: 4891
    functionDepth: 1
    functionLinenumber: 4891
    functionLinenumberEnd: 4904
    functionName: dplane_rem_neigh_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - neigh_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_rem_neigh_delete(const struct interface
      *ifp,\n\t\t\t\t\t     const struct ipaddr *ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4918,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/zebra_dplane.c:4921,1
    - Dst: neigh_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ifp
    - ip
    - vni
    argTypes:
    - struct interface*
    - struct in_addr*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4928
      start: 4909
    functionDepth: 1
    functionLinenumber: 4909
    functionLinenumberEnd: 4928
    functionName: dplane_vtep_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - neigh_update_internal
    - SET_IPADDR_V4
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_vtep_add(const struct interface *ifp,\n\t\t\t\t\t
      const struct in_addr *ip,\n\t\t\t\t\t vni_t vni)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4942,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/zebra_dplane.c:4946,1
    - Dst: neigh_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ifp
    - ip
    - vni
    argTypes:
    - struct interface*
    - struct in_addr*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4954
      start: 4933
    functionDepth: 1
    functionLinenumber: 4933
    functionLinenumberEnd: 4954
    functionName: dplane_vtep_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - neigh_update_internal
    - SET_IPADDR_V4
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_vtep_delete(const struct interface
      *ifp,\n\t\t\t\t\t    const struct in_addr *ip,\n\t\t\t\t\t    vni_t vni)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: neigh_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:4961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - ip
    argTypes:
    - struct interface*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4966
      start: 4956
    functionDepth: 1
    functionLinenumber: 4956
    functionLinenumberEnd: 4966
    functionName: dplane_neigh_discover
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - neigh_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_neigh_discover(const struct interface
      *ifp,\n\t\t\t\t\t       const struct ipaddr *ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:4981,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:4982,1
    - Dst: family2str
      Src: /src/frr/zebra/zebra_dplane.c:4982,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:4985,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:4991,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:4992,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:4994,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:4998,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:5006,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5009,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5016,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:5018,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 5
    argNames:
    - ifp
    - family
    - app_probes
    - ucast_probes
    - mcast_probes
    argTypes:
    - struct interface*
    - uint8_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5022
      start: 4968
    functionDepth: 5
    functionLinenumber: 4968
    functionLinenumberEnd: 5022
    functionName: dplane_neigh_table_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - dplane_op2str
    - memset
    - strlcpy
    - dplane_update_enqueue
    - family2str
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - zlog_debug
    - dplane_ctx_free
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_neigh_table_update(const struct interface
      *ifp,\n\t\t\t\t\t\t   const uint8_t family,\n\t\t\t\t\t\t   const uint32_t app_probes,\n\t\t\t\t\t\t
      \  const uint32_t ucast_probes,\n\t\t\t\t\t\t   const uint32_t mcast_probes)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_dplane.c:5050,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_dplane.c:5052,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5053,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5054,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:5059,1
    - Dst: dplane_ctx_set_type
      Src: /src/frr/zebra/zebra_dplane.c:5064,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:5066,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:5067,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:5069,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:5073,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:5087,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5090,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5097,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:5099,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 10
    argNames:
    - op
    - ifp
    - link
    - link_family
    - ip
    - vni
    - flags
    - state
    - update_flags
    - protocol
    argTypes:
    - enum dplane_op_e
    - struct interface*
    - void*
    - int
    - struct ipaddr*
    - vni_t
    - uint32_t
    - uint16_t
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5103
      start: 5027
    functionDepth: 5
    functionLinenumber: 5027
    functionLinenumberEnd: 5103
    functionName: neigh_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 7
    functionsReached:
    - dplane_op2str
    - dplane_ctx_free
    - memset
    - prefix_mac2str
    - strlcpy
    - dplane_update_enqueue
    - dplane_ctx_set_type
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - zlog_debug
    - ipaddr2str
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result neigh_update_internal(enum dplane_op_e op,
      const struct interface *ifp,\n\t\t      const void *link, const int link_family,\n\t\t
      \     const struct ipaddr *ip, vni_t vni, uint32_t flags,\n\t\t      uint16_t
      state, uint32_t update_flags, int protocol)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:5116,1
    - Dst: dplane_ctx_rule_init
      Src: /src/frr/zebra/zebra_dplane.c:5118,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:5122,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5125,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5131,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:5133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - op
    - new_rule
    - old_rule
    argTypes:
    - enum dplane_op_e
    - struct zebra_pbr_rule*
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5137
      start: 5108
    functionDepth: 5
    functionLinenumber: 5108
    functionLinenumberEnd: 5137
    functionName: rule_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_rule_init
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result rule_update_internal(enum dplane_op_e op,
      struct zebra_pbr_rule *new_rule,\n\t\t     struct zebra_pbr_rule *old_rule)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rule_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5142
      start: 5139
    functionDepth: 6
    functionLinenumber: 5139
    functionLinenumberEnd: 5142
    functionName: dplane_pbr_rule_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - rule_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_rule_add(struct zebra_pbr_rule
      *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rule_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5147
      start: 5144
    functionDepth: 6
    functionLinenumber: 5144
    functionLinenumberEnd: 5147
    functionName: dplane_pbr_rule_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 4
    functionsReached:
    - rule_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_rule_delete(struct zebra_pbr_rule
      *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rule_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - old_rule
    - new_rule
    argTypes:
    - struct zebra_pbr_rule*
    - struct zebra_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5153
      start: 5149
    functionDepth: 6
    functionLinenumber: 5149
    functionLinenumberEnd: 5153
    functionName: dplane_pbr_rule_update
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - rule_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_pbr_rule_update(struct zebra_pbr_rule
      *old_rule,\n\t\t\t\t\t\tstruct zebra_pbr_rule *new_rule)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:5165,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:5167,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5169,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5171,1
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:5175,1
    - Dst: dplane_ctx_iptable_init
      Src: /src/frr/zebra/zebra_dplane.c:5177,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:5181,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5184,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:5190,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_dplane.c:5193,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5196,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:5198,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - op
    - iptable
    argTypes:
    - enum dplane_op_e
    - struct zebra_pbr_iptable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5201
      start: 5157
    functionDepth: 5
    functionLinenumber: 5157
    functionLinenumberEnd: 5201
    functionName: iptable_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_op2str
    - CHECK_FLAG
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - zlog_debug
    - SET_FLAG
    - dplane_ctx_iptable_init
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result iptable_update_internal(enum dplane_op_e op,
      struct zebra_pbr_iptable *iptable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iptable_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iptable
    argTypes:
    - struct zebra_pbr_iptable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5207
      start: 5203
    functionDepth: 6
    functionLinenumber: 5203
    functionLinenumberEnd: 5207
    functionName: dplane_pbr_iptable_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - iptable_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_iptable_add(struct zebra_pbr_iptable
      *iptable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iptable_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iptable
    argTypes:
    - struct zebra_pbr_iptable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5213
      start: 5209
    functionDepth: 6
    functionLinenumber: 5209
    functionLinenumberEnd: 5213
    functionName: dplane_pbr_iptable_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - iptable_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_iptable_delete(struct zebra_pbr_iptable
      *iptable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:5225,1
    - Dst: dplane_ctx_ipset_init
      Src: /src/frr/zebra/zebra_dplane.c:5227,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:5231,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5234,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5240,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:5242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - op
    - ipset
    argTypes:
    - enum dplane_op_e
    - struct zebra_pbr_ipset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5246
      start: 5218
    functionDepth: 5
    functionLinenumber: 5218
    functionLinenumberEnd: 5246
    functionName: ipset_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    - dplane_ctx_ipset_init
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result ipset_update_internal(enum dplane_op_e op,
      struct zebra_pbr_ipset *ipset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipset_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5251
      start: 5248
    functionDepth: 6
    functionLinenumber: 5248
    functionLinenumberEnd: 5251
    functionName: dplane_pbr_ipset_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - ipset_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_ipset_add(struct zebra_pbr_ipset
      *ipset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipset_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5256
      start: 5253
    functionDepth: 6
    functionLinenumber: 5253
    functionLinenumberEnd: 5256
    functionName: dplane_pbr_ipset_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - ipset_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_ipset_delete(struct zebra_pbr_ipset
      *ipset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:5269,1
    - Dst: dplane_ctx_ipset_entry_init
      Src: /src/frr/zebra/zebra_dplane.c:5271,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:5275,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5278,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5284,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:5286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - op
    - ipset_entry
    argTypes:
    - enum dplane_op_e
    - struct zebra_pbr_ipset_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5290
      start: 5261
    functionDepth: 5
    functionLinenumber: 5261
    functionLinenumberEnd: 5290
    functionName: ipset_entry_update_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_ipset_entry_init
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - dplane_ctx_free
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result ipset_entry_update_internal(enum dplane_op_e
      op,\n\t\t\t    struct zebra_pbr_ipset_entry *ipset_entry)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipset_entry_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5296
      start: 5292
    functionDepth: 6
    functionLinenumber: 5292
    functionLinenumberEnd: 5296
    functionName: dplane_pbr_ipset_entry_add
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - ipset_entry_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_ipset_entry_add(struct zebra_pbr_ipset_entry
      *ipset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipset_entry_update_internal
      Src: /src/frr/zebra/zebra_dplane.c:5301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipset
    argTypes:
    - struct zebra_pbr_ipset_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5302
      start: 5298
    functionDepth: 6
    functionLinenumber: 5298
    functionLinenumberEnd: 5302
    functionName: dplane_pbr_ipset_entry_delete
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - ipset_entry_update_internal
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result dplane_pbr_ipset_entry_delete(struct zebra_pbr_ipset_entry
      *ipset)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_alloc
      Src: /src/frr/zebra/zebra_dplane.c:5317,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5325,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5326,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_dplane.c:5333,1
    - Dst: dplane_ctx_ns_init
      Src: /src/frr/zebra/zebra_dplane.c:5339,1
    - Dst: dplane_ctx_set_ifname
      Src: /src/frr/zebra/zebra_dplane.c:5341,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_dplane.c:5349,1
    - Dst: dplane_update_enqueue
      Src: /src/frr/zebra/zebra_dplane.c:5355,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5359,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5365,1
    - Dst: dplane_ctx_free
      Src: /src/frr/zebra/zebra_dplane.c:5368,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 4
    argNames:
    - ifp
    - ifp_link
    - mtu
    - gre_info
    argTypes:
    - struct interface*
    - struct interface*
    - unsigned int
    - struct zebra_l2info_gre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5372
      start: 5307
    functionDepth: 5
    functionLinenumber: 5307
    functionLinenumberEnd: 5372
    functionName: dplane_gre_set
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - dplane_op2str
    - dplane_update_enqueue
    - dplane_ctx_alloc
    - atomic_fetch_add_explicit
    - zlog_debug
    - dplane_ctx_set_ifname
    - dplane_ctx_free
    - memcpy
    - dplane_ctx_ns_init
    - zebra_ns_lookup
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: "enum zebra_dplane_result dplane_gre_set(struct interface *ifp, struct
      interface *ifp_link,\n\t       unsigned int mtu, const struct zebra_l2info_gre
      *gre_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5385,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5387,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5389,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5391,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5393,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5395,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5397,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5400,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5402,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5403,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5404,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5405,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5406,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5407,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5409,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5411,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5413,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5414,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5416,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5418,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5420,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5421,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5423,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5425,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5427,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5428,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5430,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5432,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5434,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5435,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5437,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5439,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5441,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5442,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5444,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5446,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5448,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5449,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5451,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5453,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5455,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5456,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5458,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5460,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5462,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5463,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5465,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5467,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5469,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5470,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5471,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5473,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5475,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5476,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5477,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5479,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5481,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5482,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5484,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5486,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5488,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5489,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5491,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5493,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5495,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 68
    argCount: 2
    argNames:
    - vty
    - detailed
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5498
      start: 5377
    functionDepth: 1
    functionLinenumber: 5377
    functionLinenumberEnd: 5498
    functionName: dplane_show_helper
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - atomic_load_explicit
    - vty_out
    linkageType: ''
    returnType: int
    signature: int dplane_show_helper(struct vty *vty, bool detailed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5508,1
    - Dst: DPLANE_LOCK
      Src: /src/frr/zebra/zebra_dplane.c:5510,1
    - Dst: dplane_prov_list_first
      Src: /src/frr/zebra/zebra_dplane.c:5511,1
    - Dst: DPLANE_UNLOCK
      Src: /src/frr/zebra/zebra_dplane.c:5512,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5517,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5519,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5521,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5523,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5525,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5527,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5530,1
    - Dst: dplane_prov_list_next
      Src: /src/frr/zebra/zebra_dplane.c:5534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - vty
    - detailed
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5538
      start: 5503
    functionDepth: 1
    functionLinenumber: 5503
    functionLinenumberEnd: 5538
    functionName: dplane_show_provs_helper
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_LOCK
    - vty_out
    - atomic_load_explicit
    - dplane_prov_list_next
    - dplane_prov_list_first
    - DPLANE_UNLOCK
    linkageType: ''
    returnType: int
    signature: int dplane_show_provs_helper(struct vty *vty, bool detailed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_dplane.c:5546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5550
      start: 5543
    functionDepth: 1
    functionLinenumber: 5543
    functionLinenumberEnd: 5550
    functionName: dplane_config_write_helper
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int dplane_config_write_helper(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_dplane.c:5581,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/zebra_dplane.c:5583,1
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:5584,1
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:5585,1
    - Dst: DPLANE_LOCK
      Src: /src/frr/zebra/zebra_dplane.c:5595,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_dplane.c:5600,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_dplane.c:5602,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:5606,1
    - Dst: dplane_prov_list_add_after
      Src: /src/frr/zebra/zebra_dplane.c:5612,1
    - Dst: dplane_prov_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:5614,1
    - Dst: DPLANE_UNLOCK
      Src: /src/frr/zebra/zebra_dplane.c:5617,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5620,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 5
    argNames:
    - name
    - prio
    - flags
    - data
    - prov_p
    argTypes:
    - char*
    - enum dplane_provider_prio
    - int
    - void*
    - struct zebra_dplane_provider**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5628
      start: 5555
    functionDepth: 1
    functionLinenumber: 5555
    functionLinenumberEnd: 5628
    functionName: dplane_provider_register
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - DPLANE_LOCK
    - dplane_ctx_list_init
    - dplane_prov_list_add_after
    - snprintf
    - XCALLOC
    - frr_each
    - strlcpy
    - pthread_mutex_init
    - zlog_debug
    - dplane_prov_list_add_tail
    - DPLANE_UNLOCK
    linkageType: ''
    returnType: int
    signature: "int dplane_provider_register(const char *name,\n\t\t\t     enum dplane_provider_prio
      prio,\n\t\t\t     int flags,\n\t\t\t     int (*start_fp)(struct zebra_dplane_provider
      *),\n\t\t\t     int (*fp)(struct zebra_dplane_provider *),\n\t\t\t     int (*fini_fp)(struct
      zebra_dplane_provider *,\n\t\t\t\t\t    bool early),\n\t\t\t     void *data,\n\t\t\t
      \    struct zebra_dplane_provider **prov_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5634
      start: 5631
    functionDepth: 0
    functionLinenumber: 5631
    functionLinenumberEnd: 5634
    functionName: dplane_provider_get_name
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *dplane_provider_get_name(const struct zebra_dplane_provider *prov)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5639
      start: 5636
    functionDepth: 0
    functionLinenumber: 5636
    functionLinenumberEnd: 5639
    functionName: dplane_provider_get_id
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_provider_get_id(const struct zebra_dplane_provider
      *prov)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5644
      start: 5641
    functionDepth: 0
    functionLinenumber: 5641
    functionLinenumberEnd: 5644
    functionName: dplane_provider_get_data
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *dplane_provider_get_data(const struct zebra_dplane_provider *prov)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5649
      start: 5646
    functionDepth: 0
    functionLinenumber: 5646
    functionLinenumberEnd: 5649
    functionName: dplane_provider_get_work_limit
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dplane_provider_get_work_limit(const struct zebra_dplane_provider
      *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_is_threaded
      Src: /src/frr/zebra/zebra_dplane.c:5656,1
    - Dst: DPLANE_PROV_LOCK
      Src: /src/frr/zebra/zebra_dplane.c:5657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5658
      start: 5654
    functionDepth: 1
    functionLinenumber: 5654
    functionLinenumberEnd: 5658
    functionName: dplane_provider_lock
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_provider_is_threaded
    - DPLANE_PROV_LOCK
    linkageType: ''
    returnType: void
    signature: void dplane_provider_lock(struct zebra_dplane_provider *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_is_threaded
      Src: /src/frr/zebra/zebra_dplane.c:5662,1
    - Dst: DPLANE_PROV_UNLOCK
      Src: /src/frr/zebra/zebra_dplane.c:5663,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5664
      start: 5660
    functionDepth: 1
    functionLinenumber: 5660
    functionLinenumberEnd: 5664
    functionName: dplane_provider_unlock
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_provider_is_threaded
    - DPLANE_PROV_UNLOCK
    linkageType: ''
    returnType: void
    signature: void dplane_provider_unlock(struct zebra_dplane_provider *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_lock
      Src: /src/frr/zebra/zebra_dplane.c:5674,1
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:5676,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5678,1
    - Dst: dplane_provider_unlock
      Src: /src/frr/zebra/zebra_dplane.c:5682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5685
      start: 5669
    functionDepth: 2
    functionLinenumber: 5669
    functionLinenumberEnd: 5685
    functionName: dplane_provider_dequeue_in_ctx
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - dplane_provider_lock
    - dplane_provider_unlock
    - atomic_fetch_sub_explicit
    - dplane_ctx_list_pop
    linkageType: ''
    returnType: struct zebra_dplane_ctx
    signature: "struct zebra_dplane_ctx *dplane_provider_dequeue_in_ctx(\n\tstruct
      zebra_dplane_provider *prov)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_lock
      Src: /src/frr/zebra/zebra_dplane.c:5698,1
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:5701,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:5703,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5709,1
    - Dst: dplane_provider_unlock
      Src: /src/frr/zebra/zebra_dplane.c:5712,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - prov
    - listp
    argTypes:
    - struct zebra_dplane_provider*
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5715
      start: 5690
    functionDepth: 2
    functionLinenumber: 5690
    functionLinenumberEnd: 5715
    functionName: dplane_provider_dequeue_in_list
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_provider_unlock
    - dplane_ctx_list_pop
    - dplane_ctx_list_add_tail
    - dplane_provider_lock
    - atomic_fetch_sub_explicit
    linkageType: ''
    returnType: int
    signature: "int dplane_provider_dequeue_in_list(struct zebra_dplane_provider *prov,\n\t\t\t\t
      \   struct dplane_ctx_list_head *listp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5721
      start: 5717
    functionDepth: 1
    functionLinenumber: 5717
    functionLinenumberEnd: 5721
    functionName: dplane_provider_out_ctx_queue_len
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dplane_provider_out_ctx_queue_len(struct zebra_dplane_provider
      *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_lock
      Src: /src/frr/zebra/zebra_dplane.c:5731,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:5733,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5736,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5738,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5740,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5743,1
    - Dst: dplane_provider_unlock
      Src: /src/frr/zebra/zebra_dplane.c:5746,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - prov
    - ctx
    argTypes:
    - struct zebra_dplane_provider*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5750
      start: 5726
    functionDepth: 2
    functionLinenumber: 5726
    functionLinenumberEnd: 5750
    functionName: dplane_provider_enqueue_out_ctx
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 3
    functionsReached:
    - atomic_store_explicit
    - dplane_provider_unlock
    - dplane_ctx_list_add_tail
    - dplane_provider_lock
    - atomic_fetch_add_explicit
    - atomic_load_explicit
    linkageType: ''
    returnType: void
    signature: "void dplane_provider_enqueue_out_ctx(struct zebra_dplane_provider
      *prov,\n\t\t\t\t     struct zebra_dplane_ctx *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:5757,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/zebra/zebra_dplane.c:5761,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5765
      start: 5752
    functionDepth: 1
    functionLinenumber: 5752
    functionLinenumberEnd: 5765
    functionName: dplane_provider_dequeue_out_ctx
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - atomic_fetch_sub_explicit
    - dplane_ctx_list_pop
    linkageType: ''
    returnType: struct zebra_dplane_ctx
    signature: 'struct zebra_dplane_ctx *

      dplane_provider_dequeue_out_ctx(struct zebra_dplane_provider *prov)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5773
      start: 5770
    functionDepth: 0
    functionLinenumber: 5770
    functionLinenumberEnd: 5773
    functionName: dplane_provider_is_threaded
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dplane_provider_is_threaded(const struct zebra_dplane_provider
      *prov)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_dplane.c:5782,1
    - Dst: kernel_dplane_read
      Src: /src/frr/zebra/zebra_dplane.c:5784,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_dplane.c:5787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5789
      start: 5780
    functionDepth: 1
    functionLinenumber: 5780
    functionLinenumberEnd: 5789
    functionName: dplane_incoming_read
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - kernel_dplane_read
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void dplane_incoming_read(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_dplane.c:5797,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_dplane.c:5800,1
    - Dst: netlink_request_netconf
      Src: /src/frr/zebra/zebra_dplane.c:5804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5805
      start: 5795
    functionDepth: 2
    functionLinenumber: 5795
    functionLinenumberEnd: 5805
    functionName: dplane_incoming_request
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - netlink_request_netconf
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void dplane_incoming_request(struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_dplane.c:5819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - zi
    argTypes:
    - struct dplane_zns_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5821
      start: 5813
    functionDepth: 1
    functionLinenumber: 5813
    functionLinenumberEnd: 5821
    functionName: dplane_kernel_info_request
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void dplane_kernel_info_request(struct dplane_zns_info *zi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5838,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:5842,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_dplane.c:5850,1
    - Dst: zns_info_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:5854,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5857,1
    - Dst: dplane_kernel_info_request
      Src: /src/frr/zebra/zebra_dplane.c:5869,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5873,1
    - Dst: zns_info_list_del
      Src: /src/frr/zebra/zebra_dplane.c:5877,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/zebra_dplane.c:5881,1
    - Dst: event_cancel_async
      Src: /src/frr/zebra/zebra_dplane.c:5884,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_dplane.c:5888,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - zns
    - enabled
    argTypes:
    - struct zebra_ns*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5890
      start: 5833
    functionDepth: 2
    functionLinenumber: 5833
    functionLinenumberEnd: 5890
    functionName: zebra_dplane_ns_enable
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - event_cancel_async
    - XCALLOC
    - frr_each
    - zns_info_list_del
    - zlog_debug
    - zns_info_list_add_tail
    - XFREE
    - dplane_kernel_info_request
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_dplane.c:5904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5909
      start: 5896
    functionDepth: 1
    functionLinenumber: 5896
    functionLinenumberEnd: 5909
    functionName: dplane_provider_work_ready
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int dplane_provider_work_ready(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:5919,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:5921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5923
      start: 5914
    functionDepth: 0
    functionLinenumber: 5914
    functionLinenumberEnd: 5923
    functionName: dplane_provider_enqueue_to_zebra
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 2
    functionsReached:
    - dplane_ctx_list_init
    - dplane_ctx_list_add_tail
    linkageType: ''
    returnType: void
    signature: void dplane_provider_enqueue_to_zebra(struct zebra_dplane_ctx *ctx)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:5933,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5938,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_dplane.c:5939,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/zebra_dplane.c:5939,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5940,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:5940,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5946,1
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/zebra_dplane.c:5947,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5948,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:5948,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5958,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_dplane.c:5959,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5960,1
    - Dst: dplane_ctx_get_pw_af
      Src: /src/frr/zebra/zebra_dplane.c:5960,1
    - Dst: dplane_ctx_get_pw_local_label
      Src: /src/frr/zebra/zebra_dplane.c:5961,1
    - Dst: dplane_ctx_get_pw_remote_label
      Src: /src/frr/zebra/zebra_dplane.c:5962,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5967,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5968,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:5968,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_dplane.c:5969,1
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/zebra_dplane.c:5970,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_dplane.c:5975,1
    - Dst: dplane_ctx_mac_get_addr
      Src: /src/frr/zebra/zebra_dplane.c:5975,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5978,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5979,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:5979,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_dplane.c:5980,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_dplane.c:5991,1
    - Dst: dplane_ctx_neigh_get_ipaddr
      Src: /src/frr/zebra/zebra_dplane.c:5991,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:5994,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:5995,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:5995,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_dplane.c:5996,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6002,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6003,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6003,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_dplane.c:6004,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_dplane.c:6005,1
    - Dst: dplane_ctx_get_pbr_iptable
      Src: /src/frr/zebra/zebra_dplane.c:6021,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6022,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6023,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6023,1
    - Dst: dplane_ctx_get_pbr_ipset
      Src: /src/frr/zebra/zebra_dplane.c:6030,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6031,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6032,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6032,1
    - Dst: dplane_ctx_get_pbr_ipset_entry
      Src: /src/frr/zebra/zebra_dplane.c:6039,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6040,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6042,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6042,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6046,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6047,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6047,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_dplane.c:6048,1
    - Dst: family2str
      Src: /src/frr/zebra/zebra_dplane.c:6049,1
    - Dst: dplane_ctx_neightable_get_family
      Src: /src/frr/zebra/zebra_dplane.c:6049,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6052,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6053,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6053,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_dplane.c:6054,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6060,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6061,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6061,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_dplane.c:6062,1
    - Dst: dplane_ctx_get_intf_addr
      Src: /src/frr/zebra/zebra_dplane.c:6063,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6067,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6068,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6068,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_dplane.c:6069,1
    - Dst: dplane_ctx_get_netconf_mpls
      Src: /src/frr/zebra/zebra_dplane.c:6070,1
    - Dst: dplane_ctx_get_netconf_mcast
      Src: /src/frr/zebra/zebra_dplane.c:6071,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6077,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6078,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6078,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_dplane.c:6079,1
    - Dst: dplane_ctx_intf_is_protodown
      Src: /src/frr/zebra/zebra_dplane.c:6080,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6086,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/zebra_dplane.c:6087,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 101
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6098
      start: 5929
    functionDepth: 2
    functionLinenumber: 5929
    functionLinenumberEnd: 6098
    functionName: kernel_dplane_log_detail
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_neightable_get_family
    - dplane_ctx_get_intf_addr
    - dplane_ctx_mac_get_addr
    - dplane_ctx_get_op
    - dplane_ctx_get_ifname
    - dplane_ctx_get_dest
    - dplane_ctx_get_pbr_ipset_entry
    - dplane_ctx_get_netconf_mpls
    - zlog_debug
    - dplane_ctx_intf_is_protodown
    - dplane_ctx_get_nhe_id
    - dplane_ctx_neigh_get_ipaddr
    - dplane_op2str
    - dplane_ctx_get_pw_af
    - family2str
    - dplane_ctx_get_pbr_ipset
    - dplane_ctx_get_pbr_iptable
    - dplane_ctx_get_vrf
    - prefix_mac2str
    - dplane_ctx_get_pw_remote_label
    - dplane_ctx_get_netconf_mcast
    - dplane_ctx_get_ifindex
    - ipaddr2str
    - dplane_ctx_get_pw_local_label
    linkageType: ''
    returnType: void
    signature: void kernel_dplane_log_detail(struct zebra_dplane_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6391,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/zebra_dplane.c:6392,1
    - Dst: dplane_provider_get_work_limit
      Src: /src/frr/zebra/zebra_dplane.c:6394,1
    - Dst: dplane_provider_dequeue_in_ctx
      Src: /src/frr/zebra/zebra_dplane.c:6397,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6402,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/zebra_dplane.c:6403,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_dplane.c:6404,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_dplane.c:6404,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/zebra_dplane.c:6406,1
    - Dst: dplane_provider_enqueue_out_ctx
      Src: /src/frr/zebra/zebra_dplane.c:6408,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6412,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/zebra_dplane.c:6413,1
    - Dst: dplane_provider_work_ready
      Src: /src/frr/zebra/zebra_dplane.c:6419,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6422
      start: 6383
    functionDepth: 3
    functionLinenumber: 6383
    functionLinenumberEnd: 6422
    functionName: test_dplane_process_func
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_provider_get_work_limit
    - dplane_ctx_get_op
    - dplane_op2str
    - dplane_provider_enqueue_out_ctx
    - dplane_provider_get_name
    - dplane_provider_dequeue_in_ctx
    - dplane_ctx_set_status
    - zlog_debug
    - dplane_provider_work_ready
    linkageType: ''
    returnType: int
    signature: int test_dplane_process_func(struct zebra_dplane_provider *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6431,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/zebra_dplane.c:6432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - prov
    - early
    argTypes:
    - struct zebra_dplane_provider*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6436
      start: 6427
    functionDepth: 1
    functionLinenumber: 6427
    functionLinenumberEnd: 6436
    functionName: test_dplane_shutdown_func
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - dplane_provider_get_name
    linkageType: ''
    returnType: int
    signature: "int test_dplane_shutdown_func(struct zebra_dplane_provider *prov,\n\t\t\t\t
      \    bool early)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_register
      Src: /src/frr/zebra/zebra_dplane.c:6446,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_dplane.c:6454,1
    - Dst: dplane_provider_register
      Src: /src/frr/zebra/zebra_dplane.c:6459,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zebra_dplane.c:6467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6470
      start: 6442
    functionDepth: 2
    functionLinenumber: 6442
    functionLinenumberEnd: 6470
    functionName: dplane_provider_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_provider_register
    - zlog_err
    linkageType: ''
    returnType: void
    signature: void dplane_provider_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6483,1
    - Dst: DPLANE_LOCK
      Src: /src/frr/zebra/zebra_dplane.c:6489,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_dplane.c:6491,1
    - Dst: context_cb
      Src: /src/frr/zebra/zebra_dplane.c:6492,1
    - Dst: dplane_ctx_list_del
      Src: /src/frr/zebra/zebra_dplane.c:6493,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:6494,1
    - Dst: DPLANE_UNLOCK
      Src: /src/frr/zebra/zebra_dplane.c:6498,1
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:6503,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/zebra_dplane.c:6504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6507
      start: 6477
    functionDepth: 6
    functionLinenumber: 6477
    functionLinenumberEnd: 6507
    functionName: dplane_clean_ctx_queue
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_LOCK
    - dplane_ctx_list_init
    - dplane_ctx_list_pop
    - dplane_ctx_list_add_tail
    - dplane_ctx_fini
    - frr_each_safe
    - dplane_ctx_list_del
    - context_cb
    - DPLANE_UNLOCK
    linkageType: ''
    returnType: int
    signature: "int dplane_clean_ctx_queue(bool (*context_cb)(struct zebra_dplane_ctx
      *ctx,\n\t\t\t\t\t      void *arg), void *val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6515
      start: 6512
    functionDepth: 0
    functionLinenumber: 6512
    functionLinenumberEnd: 6515
    functionName: dplane_is_in_shutdown
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dplane_is_in_shutdown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6523
      start: 6520
    functionDepth: 0
    functionLinenumber: 6520
    functionLinenumberEnd: 6523
    functionName: dplane_enable_intf_extra_info
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dplane_enable_intf_extra_info(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6537,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:6542,1
    - Dst: struct zebra_dplane_provider*::dp_fini
      Src: /src/frr/zebra/zebra_dplane.c:6546,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6548
      start: 6532
    functionDepth: 1
    functionLinenumber: 6532
    functionLinenumberEnd: 6548
    functionName: zebra_dplane_pre_finish
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - struct zebra_dplane_provider*::dp_fini
    - zlog_debug
    - frr_each
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_pre_finish(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DPLANE_LOCK
      Src: /src/frr/zebra/zebra_dplane.c:6563,1
    - Dst: dplane_ctx_list_first
      Src: /src/frr/zebra/zebra_dplane.c:6565,1
    - Dst: dplane_prov_list_first
      Src: /src/frr/zebra/zebra_dplane.c:6566,1
    - Dst: DPLANE_UNLOCK
      Src: /src/frr/zebra/zebra_dplane.c:6568,1
    - Dst: dplane_provider_lock
      Src: /src/frr/zebra/zebra_dplane.c:6575,1
    - Dst: dplane_ctx_list_first
      Src: /src/frr/zebra/zebra_dplane.c:6577,1
    - Dst: dplane_ctx_list_first
      Src: /src/frr/zebra/zebra_dplane.c:6579,1
    - Dst: dplane_provider_unlock
      Src: /src/frr/zebra/zebra_dplane.c:6581,1
    - Dst: dplane_prov_list_next
      Src: /src/frr/zebra/zebra_dplane.c:6586,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6593
      start: 6554
    functionDepth: 2
    functionLinenumber: 6554
    functionLinenumberEnd: 6593
    functionName: dplane_work_pending
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - DPLANE_LOCK
    - dplane_provider_unlock
    - dplane_provider_lock
    - dplane_prov_list_next
    - dplane_prov_list_first
    - dplane_ctx_list_first
    - DPLANE_UNLOCK
    linkageType: ''
    returnType: bool
    signature: bool dplane_work_pending(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6607,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_dplane.c:6610,1
    - Dst: zns_info_list_del
      Src: /src/frr/zebra/zebra_dplane.c:6611,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_dplane.c:6614,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_dplane.c:6615,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_dplane.c:6618,1
    - Dst: dplane_work_pending
      Src: /src/frr/zebra/zebra_dplane.c:6621,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/zebra_dplane.c:6623,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_dplane.c:6633,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6635
      start: 6602
    functionDepth: 3
    functionLinenumber: 6602
    functionLinenumberEnd: 6635
    functionName: dplane_check_shutdown_status
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_work_pending
    - zns_info_list_del
    - event_add_timer_msec
    - zlog_debug
    - EVENT_OFF
    - frr_each_safe
    - XFREE
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void dplane_check_shutdown_status(struct event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6650,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_dplane.c:6652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6654
      start: 6647
    functionDepth: 1
    functionLinenumber: 6647
    functionLinenumberEnd: 6654
    functionName: zebra_dplane_finish
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_finish(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6681,1
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6682,1
    - Dst: DPLANE_LOCK
      Src: /src/frr/zebra/zebra_dplane.c:6693,1
    - Dst: dplane_prov_list_first
      Src: /src/frr/zebra/zebra_dplane.c:6696,1
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:6700,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:6704,1
    - Dst: DPLANE_UNLOCK
      Src: /src/frr/zebra/zebra_dplane.c:6710,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/zebra/zebra_dplane.c:6712,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6716,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6728,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/zebra_dplane.c:6729,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_dplane.c:6734,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_dplane.c:6735,1
    - Dst: dplane_ctx_list_del
      Src: /src/frr/zebra/zebra_dplane.c:6748,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:6749,1
    - Dst: dplane_provider_lock
      Src: /src/frr/zebra/zebra_dplane.c:6755,1
    - Dst: dplane_ctx_list_pop
      Src: /src/frr/zebra/zebra_dplane.c:6757,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:6758,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:6760,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/zebra_dplane.c:6762,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:6764,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_dplane.c:6766,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/zebra_dplane.c:6769,1
    - Dst: dplane_provider_unlock
      Src: /src/frr/zebra/zebra_dplane.c:6772,1
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6777,1
    - Dst: dplane_provider_lock
      Src: /src/frr/zebra/zebra_dplane.c:6791,1
    - Dst: dplane_provider_dequeue_out_ctx
      Src: /src/frr/zebra/zebra_dplane.c:6794,1
    - Dst: dplane_ctx_list_add_tail
      Src: /src/frr/zebra/zebra_dplane.c:6796,1
    - Dst: dplane_provider_unlock
      Src: /src/frr/zebra/zebra_dplane.c:6802,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6808,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/zebra_dplane.c:6809,1
    - Dst: dplane_prov_list_next
      Src: /src/frr/zebra/zebra_dplane.c:6812,1
    - Dst: dplane_provider_work_ready
      Src: /src/frr/zebra/zebra_dplane.c:6820,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6826,1
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6837,1
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6842,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 73
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6843
      start: 6667
    functionDepth: 2
    functionLinenumber: 6667
    functionLinenumberEnd: 6843
    functionName: dplane_thread_loop
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_list_init
    - dplane_provider_get_name
    - atomic_fetch_add_explicit
    - frr_each_safe
    - dplane_ctx_list_del
    - dplane_provider_dequeue_out_ctx
    - DPLANE_LOCK
    - dplane_provider_unlock
    - dplane_ctx_list_pop
    - dplane_provider_lock
    - zlog_debug
    - atomic_load_explicit
    - DPLANE_UNLOCK
    - atomic_store_explicit
    - dplane_provider_work_ready
    - dplane_ctx_get_status
    - dplane_ctx_list_add_tail
    - atomic_fetch_sub_explicit
    - dplane_prov_list_next
    - dplane_prov_list_first
    linkageType: ''
    returnType: void
    signature: void dplane_thread_loop(struct event *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_dplane.c:6854,1
    - Dst: frr_pthread_stop
      Src: /src/frr/zebra/zebra_dplane.c:6860,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/zebra/zebra_dplane.c:6863,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:6871,1
    - Dst: struct zebra_dplane_provider*::dp_fini
      Src: /src/frr/zebra/zebra_dplane.c:6875,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6881
      start: 6849
    functionDepth: 1
    functionLinenumber: 6849
    functionLinenumberEnd: 6881
    functionName: zebra_dplane_shutdown
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - frr_each
    - struct zebra_dplane_provider*::dp_fini
    - zlog_debug
    - frr_pthread_stop
    - frr_pthread_destroy
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_shutdown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_dplane.c:6888,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/zebra_dplane.c:6890,1
    - Dst: dplane_prov_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6892,1
    - Dst: dplane_ctx_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6894,1
    - Dst: zns_info_list_init
      Src: /src/frr/zebra/zebra_dplane.c:6895,1
    - Dst: dplane_provider_init
      Src: /src/frr/zebra/zebra_dplane.c:6902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6903
      start: 6886
    functionDepth: 3
    functionLinenumber: 6886
    functionLinenumberEnd: 6903
    functionName: zebra_dplane_init_internal
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - dplane_provider_init
    - dplane_ctx_list_init
    - memset
    - pthread_mutex_init
    - zns_info_list_init
    - dplane_prov_list_init
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_init_internal(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_pthread_new
      Src: /src/frr/zebra/zebra_dplane.c:6920,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_dplane.c:6928,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_dplane.c:6932,1
    - Dst: event_add_read
      Src: /src/frr/zebra/zebra_dplane.c:6934,1
    - Dst: dplane_kernel_info_request
      Src: /src/frr/zebra/zebra_dplane.c:6936,1
    - Dst: DPLANE_LOCK
      Src: /src/frr/zebra/zebra_dplane.c:6942,1
    - Dst: dplane_prov_list_first
      Src: /src/frr/zebra/zebra_dplane.c:6943,1
    - Dst: DPLANE_UNLOCK
      Src: /src/frr/zebra/zebra_dplane.c:6944,1
    - Dst: dplane_prov_list_next
      Src: /src/frr/zebra/zebra_dplane.c:6952,1
    - Dst: frr_pthread_run
      Src: /src/frr/zebra/zebra_dplane.c:6955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6956
      start: 6909
    functionDepth: 2
    functionLinenumber: 6909
    functionLinenumberEnd: 6956
    functionName: zebra_dplane_start
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 1
    functionsReached:
    - DPLANE_LOCK
    - frr_each
    - frr_pthread_run
    - dplane_prov_list_first
    - dplane_prov_list_next
    - event_add_read
    - dplane_kernel_info_request
    - frr_pthread_new
    - DPLANE_UNLOCK
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_start(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_init_internal
      Src: /src/frr/zebra/zebra_dplane.c:6963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6965
      start: 6961
    functionDepth: 4
    functionLinenumber: 6961
    functionLinenumberEnd: 6965
    functionName: zebra_dplane_init
    functionSourceFile: /src/frr/zebra/zebra_dplane.c
    functionUses: 0
    functionsReached:
    - zebra_dplane_init_internal
    linkageType: ''
    returnType: void
    signature: void zebra_dplane_init(int (*results_fp)(struct dplane_ctx_list_head
      *))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:36,1
    - Dst: zebra_interface_address_delete_update
      Src: /src/frr/zebra/connected.c:37,1
    - Dst: if_subnet_delete
      Src: /src/frr/zebra/connected.c:40,1
    - Dst: connected_down
      Src: /src/frr/zebra/connected.c:42,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/connected.c:44,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/connected.c:48,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:50,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/connected.c:51,1
    - Dst: connected_free
      Src: /src/frr/zebra/connected.c:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 30
    functionDepth: 3
    functionLinenumber: 30
    functionLinenumberEnd: 54
    functionName: connected_withdraw
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - CHECK_FLAG
    - connected_free
    - zebra_interface_address_delete_update
    - UNSET_FLAG
    - if_subnet_delete
    - connected_down
    linkageType: ''
    returnType: void
    signature: void connected_withdraw(struct connected *ifc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/zebra/connected.c:61,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:63,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/connected.c:65,1
    - Dst: listnode_add
      Src: /src/frr/zebra/connected.c:68,1
    - Dst: if_subnet_add
      Src: /src/frr/zebra/connected.c:72,1
    - Dst: zebra_interface_address_add_update
      Src: /src/frr/zebra/connected.c:74,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/connected.c:76,1
    - Dst: connected_up
      Src: /src/frr/zebra/connected.c:77,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: connected_announce
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 0
    functionsReached:
    - if_subnet_add
    - if_is_loopback
    - listnode_add
    - SET_FLAG
    - UNSET_FLAG
    - connected_up
    - zebra_interface_address_add_update
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void connected_announce(struct interface *ifp, struct connected *ifc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/connected.c:89,1
    - Dst: prefix_same
      Src: /src/frr/zebra/connected.c:90,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:206,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/connected.c:210,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/connected.c:212,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/zebra/connected.c:212,1
    - Dst: apply_mask
      Src: /src/frr/zebra/connected.c:215,1
    - Dst: family2afi
      Src: /src/frr/zebra/connected.c:217,1
    - Dst: AFI_IP
      Src: /src/frr/zebra/connected.c:220,1
    - Dst: prefix_ipv4_any
      Src: /src/frr/zebra/connected.c:225,1
    - Dst: if
      Src: /src/frr/zebra/connected.c:231,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/connected.c:231,1
    - Dst: flog_warn
      Src: /src/frr/zebra/connected.c:238,1
    - Dst: afi2str
      Src: /src/frr/zebra/connected.c:239,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/connected.c:265,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/zebra/connected.c:268,1
    - Dst: apply_mask
      Src: /src/frr/zebra/connected.c:269,1
    - Dst: prefix_same
      Src: /src/frr/zebra/connected.c:271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:272,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - pu
    argTypes:
    - struct interface*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 277
    functionName: connected_check
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 8
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - if
    - AFI_IP
    - prefix_same
    - apply_mask
    - flog_warn
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - afi2str
    - UNSET_FLAG
    - CONNECTED_PREFIX
    - family2afi
    - prefix_copy
    - prefix_ipv4_any
    linkageType: ''
    returnType: struct connected
    signature: "struct connected *connected_check(struct interface *ifp,\n\t\t\t\t
      \ union prefixconstptr pu)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ipv4_martian
      Src: /src/frr/zebra/connected.c:306,1
    - Dst: connected_new
      Src: /src/frr/zebra/connected.c:310,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:316,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/connected.c:317,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:318,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/connected.c:321,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:325,1
    - Dst: CONNECTED_PEER
      Src: /src/frr/zebra/connected.c:329,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/zebra/connected.c:332,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/connected.c:338,1
    - Dst: flog_warn
      Src: /src/frr/zebra/connected.c:339,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/connected.c:344,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/connected.c:347,1
    - Dst: if_is_pointopoint
      Src: /src/frr/zebra/connected.c:352,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/connected.c:353,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/connected.c:359,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:363,1
    - Dst: connected_update
      Src: /src/frr/zebra/connected.c:365,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 7
    argNames:
    - ifp
    - flags
    - addr
    - prefixlen
    - dest
    - label
    - metric
    argTypes:
    - struct interface*
    - int
    - struct in_addr*
    - uint16_t
    - struct in_addr*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 366
    functionName: connected_add_ipv4
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 6
    functionsReached:
    - if_is_pointopoint
    - connected_new
    - flog_warn
    - ipv4_martian
    - CHECK_FLAG
    - IPV4_ADDR_SAME
    - SET_FLAG
    - zlog_debug
    - UNSET_FLAG
    - prefix_ipv4_new
    - connected_update
    - CONNECTED_PEER
    - if_is_operative
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void connected_add_ipv4(struct interface *ifp, int flags,\n\t\t\tconst
      struct in_addr *addr, uint16_t prefixlen,\n\t\t\tconst struct in_addr *dest,
      const char *label,\n\t\t\tuint32_t metric)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/connected.c:384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:391,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:398,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/connected.c:400,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/connected.c:405,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/zebra/connected.c:405,1
    - Dst: apply_mask
      Src: /src/frr/zebra/connected.c:408,1
    - Dst: family2afi
      Src: /src/frr/zebra/connected.c:410,1
    - Dst: prefix_ipv4_any
      Src: /src/frr/zebra/connected.c:418,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/connected.c:422,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/connected.c:428,1
    - Dst: afi2str
      Src: /src/frr/zebra/connected.c:428,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:433,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/connected.c:442,1
    - Dst: prefix_copy
      Src: /src/frr/zebra/connected.c:445,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/zebra/connected.c:445,1
    - Dst: apply_mask
      Src: /src/frr/zebra/connected.c:446,1
    - Dst: if
      Src: /src/frr/zebra/connected.c:448,1
    - Dst: prefix_same
      Src: /src/frr/zebra/connected.c:448,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:449,1
    - Dst: if
      Src: /src/frr/zebra/connected.c:452,1
    - Dst: rib_delete
      Src: /src/frr/zebra/connected.c:460,1
    - Dst: rib_delete
      Src: /src/frr/zebra/connected.c:463,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/connected.c:469,1
    - Dst: mpls_mark_lsps_for_processing
      Src: /src/frr/zebra/connected.c:472,1
    - Dst: connected_delete_helper
      Src: /src/frr/zebra/connected.c:476,1
    - Dst: connected_withdraw
      Src: /src/frr/zebra/connected.c:484,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/connected.c:489,1
    - Dst: mpls_mark_lsps_for_processing
      Src: /src/frr/zebra/connected.c:492,1
    - Dst: connected_delete_ipv4
      Src: /src/frr/zebra/connected.c:497,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:508,1
    - Dst: memset
      Src: /src/frr/zebra/connected.c:511,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/connected.c:515,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/connected.c:517,1
    - Dst: connected_delete_helper
      Src: /src/frr/zebra/connected.c:519,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 2
    argNames:
    - ifp
    - ifc
    argTypes:
    - struct interface*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 368
    functionDepth: 4
    functionLinenumber: 368
    functionLinenumberEnd: 520
    functionName: connected_down
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 2
    functionsReached:
    - connected_withdraw
    - afi2str
    - flog_err
    - zlog_warn
    - IN6_IS_ADDR_UNSPECIFIED
    - connected_delete_helper
    - memset
    - mpls_mark_lsps_for_processing
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - CONNECTED_PREFIX
    - if
    - prefix_copy
    - rib_delete
    - prefix_same
    - apply_mask
    - family2afi
    - connected_check_ptp
    - prefix_ipv4_any
    - CHECK_FLAG
    - connected_delete_ipv4
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void connected_down(struct interface *ifp, struct connected *ifc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ipv6_martian
      Src: /src/frr/zebra/connected.c:531,1
    - Dst: connected_new
      Src: /src/frr/zebra/connected.c:535,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:541,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/connected.c:542,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:543,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/connected.c:546,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/connected.c:548,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/connected.c:553,1
    - Dst: rtadv_add_prefix
      Src: /src/frr/zebra/connected.c:554,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/zebra/connected.c:557,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/connected.c:559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:563,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/connected.c:564,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/connected.c:567,1
    - Dst: XSTRDUP
      Src: /src/frr/zebra/connected.c:573,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/connected.c:584,1
    - Dst: connected_update
      Src: /src/frr/zebra/connected.c:585,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 7
    argNames:
    - ifp
    - flags
    - addr
    - dest
    - prefixlen
    - label
    - metric
    argTypes:
    - struct interface*
    - int
    - struct in6_addr*
    - struct in6_addr*
    - uint16_t
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 586
    functionName: connected_add_ipv6
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 7
    functionsReached:
    - connected_new
    - ipv6_martian
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - SET_FLAG
    - rtadv_add_prefix
    - zlog_debug
    - UNSET_FLAG
    - connected_update
    - IPV6_ADDR_COPY
    - if_is_operative
    - prefix_ipv6_new
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void connected_add_ipv6(struct interface *ifp, int flags,\n\t\t\tconst
      struct in6_addr *addr,\n\t\t\tconst struct in6_addr *dest, uint16_t prefixlen,\n\t\t\tconst
      char *label, uint32_t metric)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/connected.c:595,1
    - Dst: memcpy
      Src: /src/frr/zebra/connected.c:597,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/connected.c:601,1
    - Dst: rtadv_delete_prefix
      Src: /src/frr/zebra/connected.c:602,1
    - Dst: memset
      Src: /src/frr/zebra/connected.c:605,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/connected.c:607,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/connected.c:609,1
    - Dst: connected_check_ptp
      Src: /src/frr/zebra/connected.c:611,1
    - Dst: connected_delete_helper
      Src: /src/frr/zebra/connected.c:613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - ifp
    - address
    - dest
    - prefixlen
    argTypes:
    - struct interface*
    - struct in6_addr*
    - struct in6_addr*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 614
    functionName: connected_delete_ipv6
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 6
    functionsReached:
    - connected_delete_helper
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - rtadv_delete_prefix
    - IPV6_ADDR_COPY
    - connected_check_ptp
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void connected_delete_ipv6(struct interface *ifp,\n\t\t\t   const
      struct in6_addr *address,\n\t\t\t   const struct in6_addr *dest, uint16_t prefixlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/connected.c:621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/connected.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 628
    functionName: connected_is_unnumbered
    functionSourceFile: /src/frr/zebra/connected.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int connected_is_unnumbered(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 68
    functionName: advertise_gw_macip_enabled
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 4
    functionsReached:
    - zebra_vrf_get_evpn
    linkageType: ''
    returnType: int
    signature: int advertise_gw_macip_enabled(struct zebra_evpn *zevpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 82
    functionName: advertise_svi_macip_enabled
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 5
    functionsReached:
    - zebra_vrf_get_evpn
    linkageType: ''
    returnType: int
    signature: int advertise_svi_macip_enabled(struct zebra_evpn *zevpn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:103,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:104,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:105,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:106,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:108,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_evpn.c:108,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:110,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:111,1
    - Dst: CPP_NOTICE
      Src: /src/frr/zebra/zebra_evpn.c:113,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:115,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_evpn.c:116,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:117,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_evpn.c:118,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:123,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:125,1
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_evpn.c:129,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_evpn.c:130,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:132,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:133,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:134,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:136,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:138,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:140,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:143,1
    - Dst: CPP_NOTICE
      Src: /src/frr/zebra/zebra_evpn.c:146,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:148,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:149,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:152,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:154,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_evpn.c:157,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_evpn.c:159,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:161,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:164,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:167,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:168,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:172,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:174,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:177,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn.c:179,1
    - Dst: lookup_msg
      Src: /src/frr/zebra/zebra_evpn.c:181,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:186,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn.c:190,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_evpn.c:191,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:193,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn.c:195,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:201,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn.c:202,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:207,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:210,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:214,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:216,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 77
    argCount: 2
    argNames:
    - zevpn
    - ctxt
    argTypes:
    - struct zebra_evpn*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 219
    functionName: zebra_evpn_print
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 2
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - vty_out
    - num_valid_macs
    - json_object_array_add
    - vrf_id_to_name
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - lookup_msg
    - hashcount
    - CPP_NOTICE
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print(struct zebra_evpn *zevpn, void **ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: num_valid_macs
      Src: /src/frr/zebra/zebra_evpn.c:249,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_evpn.c:250,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:252,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_evpn.c:256,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_evpn.c:259,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn.c:260,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:261,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:262,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:263,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:266,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:267,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn.c:268,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn.c:269,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_evpn.c:270,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_evpn.c:272,1
    - Dst: json_object_new_string
      Src: /src/frr/zebra/zebra_evpn.c:274,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_evpn.c:275,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_evpn.c:277,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn.c:280,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn.c:283,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 285
    functionName: zebra_evpn_print_hash
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - vty_out
    - num_valid_macs
    - snprintf
    - vrf_id_to_name
    - json_object_array_add
    - json_object_int_add
    - inet_ntop
    - json_object_string_add
    - json_object_new_string
    - json_object_object_add
    - hashcount
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_hash(struct hash_bucket *bucket, void *ctxt[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_print_vni
      Src: /src/frr/zebra/zebra_evpn.c:304,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 290
    functionDepth: 10
    functionLinenumber: 290
    functionLinenumberEnd: 308
    functionName: zebra_evpn_print_hash_detail
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_print_vni
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_hash_detail(struct hash_bucket *bucket, void
      *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn.c:317,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn.c:319,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn.c:322,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn.c:323,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:323,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn.c:328,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn.c:332,1
    - Dst: zebra_evpn_gw_macip_del
      Src: /src/frr/zebra/zebra_evpn.c:338,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_evpn.c:344,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn.c:351,1
    - Dst: for
      Src: /src/frr/zebra/zebra_evpn.c:353,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn.c:353,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn.c:356,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:356,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - zevpn
    argTypes:
    - struct interface*
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 364
    functionName: zebra_evpn_del_macip_for_intf
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 4
    functionsReached:
    - memset
    - zebra_evpn_add_macip_for_intf
    - CHECK_FLAG
    - zebra_evpn_gw_macip_del
    - if
    - ALL_LIST_ELEMENTS
    - for
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_del_macip_for_intf(struct interface *ifp,\n\t\t\t\t
      \ struct zebra_evpn *zevpn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_evpn.c:383,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_evpn.c:388,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_evpn.c:390,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn.c:391,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_evpn.c:394,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_evpn.c:394,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:397,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_evpn.c:399,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_evpn.c:406,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - vrf_id
    - p
    - cmd
    argTypes:
    - vrf_id_t
    - struct prefix*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 407
    functionName: ip_prefix_send_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - zserv_find_client
    - stream_new
    - stream_put
    - zclient_create_header
    - vrf_id_to_name
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int ip_prefix_send_to_client(vrf_id_t vrf_id, struct prefix *p,\n\t\t\t\t
      \   uint16_t cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn.c:416,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_evpn.c:418,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn.c:421,1
    - Dst: if
      Src: /src/frr/zebra/zebra_evpn.c:424,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/zebra_evpn.c:424,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_evpn.c:427,1
    - Dst: ip_prefix_send_to_client
      Src: /src/frr/zebra/zebra_evpn.c:429,1
    - Dst: ip_prefix_send_to_client
      Src: /src/frr/zebra/zebra_evpn.c:432,1
    - Dst: zebra_evpn_gw_macip_add
      Src: /src/frr/zebra/zebra_evpn.c:441,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:452,1
    - Dst: zebra_evpn_mac_gw_macip_add
      Src: /src/frr/zebra/zebra_evpn.c:454,1
    - Dst: zebra_evpn_neigh_gw_macip_add
      Src: /src/frr/zebra/zebra_evpn.c:457,1
    - Dst: zebra_evpn_gw_macip_del
      Src: /src/frr/zebra/zebra_evpn.c:463,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn.c:470,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn.c:475,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:478,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:484,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:489,1
    - Dst: zebra_evpn_neigh_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn.c:495,1
    - Dst: zebra_evpn_neigh_del
      Src: /src/frr/zebra/zebra_evpn.c:500,1
    - Dst: zebra_evpn_deref_ip2mac
      Src: /src/frr/zebra/zebra_evpn.c:504,1
    - Dst: zebra_evpn_gw_macip_del_for_evpn_hash
      Src: /src/frr/zebra/zebra_evpn.c:509,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:527,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:538,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:541,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_evpn.c:545,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_evpn.c:550,1
    - Dst: zebra_get_vrr_intf_for_svi
      Src: /src/frr/zebra/zebra_evpn.c:553,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_evpn.c:555,1
    - Dst: zebra_evpn_gw_macip_add_for_evpn_hash
      Src: /src/frr/zebra/zebra_evpn.c:560,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:578,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:580,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_evpn.c:584,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_evpn.c:589,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_evpn.c:590,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_evpn.c:591,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_evpn.c:593,1
    - Dst: zebra_get_vrr_intf_for_svi
      Src: /src/frr/zebra/zebra_evpn.c:595,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_evpn.c:597,1
    - Dst: zebra_evpn_svi_macip_del_for_evpn_hash
      Src: /src/frr/zebra/zebra_evpn.c:603,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:622,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:633,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:636,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_evpn.c:640,1
    - Dst: zebra_evpn_del_macip_for_intf
      Src: /src/frr/zebra/zebra_evpn.c:645,1
    - Dst: zebra_evpn_map_vlan_ns
      Src: /src/frr/zebra/zebra_evpn.c:650,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:668,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:671,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:673,1
    - Dst: zebra_l2_bridge_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:678,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_evpn.c:687,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_evpn.c:687,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:694,1
    - Dst: zebra_vxlan_if_access_vlan_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:701,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn.c:712,1
    - Dst: zebra_evpn_map_vlan
      Src: /src/frr/zebra/zebra_evpn.c:721,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:731,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_evpn.c:732,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_evpn.c:738,1
    - Dst: zebra_evpn_from_svi_ns
      Src: /src/frr/zebra/zebra_evpn.c:744,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:769,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:773,1
    - Dst: zebra_l2_bridge_if_vlan_find
      Src: /src/frr/zebra/zebra_evpn.c:776,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_evpn.c:783,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_evpn.c:783,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:790,1
    - Dst: zebra_vxlan_if_access_vlan_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:797,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn.c:808,1
    - Dst: zebra_evpn_from_svi
      Src: /src/frr/zebra/zebra_evpn.c:818,1
    - Dst: zebra_from_svi_param
      Src: /src/frr/zebra/zebra_evpn.c:824,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_evpn.c:830,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:835,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_evpn.c:836,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_evpn.c:842,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:846,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_evpn.c:855,1
    - Dst: zvni_map_to_macvlan_ns
      Src: /src/frr/zebra/zebra_evpn.c:860,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:872,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_evpn.c:875,1
    - Dst: route_next
      Src: /src/frr/zebra/zebra_evpn.c:875,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:878,1
    - Dst: zebra_evpn_map_to_macvlan
      Src: /src/frr/zebra/zebra_evpn.c:896,1
    - Dst: zebra_from_svi_param
      Src: /src/frr/zebra/zebra_evpn.c:902,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:909,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn.c:915,1
    - Dst: ns_walk_func
      Src: /src/frr/zebra/zebra_evpn.c:924,1
    - Dst: zebra_evpn_uninstall_mac_hash
      Src: /src/frr/zebra/zebra_evpn.c:933,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:941,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn.c:942,1
    - Dst: zebra_evpn_install_mac_hash
      Src: /src/frr/zebra/zebra_evpn.c:948,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:955,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_evpn.c:956,1
    - Dst: zebra_evpn_rem_mac_uninstall_all
      Src: /src/frr/zebra/zebra_evpn.c:962,1
    - Dst: mac_walk_ctx
      Src: /src/frr/zebra/zebra_evpn.c:964,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn.c:969,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn.c:975,1
    - Dst: zebra_evpn_rem_mac_install_all
      Src: /src/frr/zebra/zebra_evpn.c:981,1
    - Dst: mac_walk_ctx
      Src: /src/frr/zebra/zebra_evpn.c:983,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn.c:988,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn.c:994,1
    - Dst: zebra_evpn_read_mac_neigh
      Src: /src/frr/zebra/zebra_evpn.c:1000,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:1010,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_evpn.c:1011,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1017,1
    - Dst: macfdb_read_for_bridge
      Src: /src/frr/zebra/zebra_evpn.c:1022,1
    - Dst: macfdb_read_mcast_entry_for_vni
      Src: /src/frr/zebra/zebra_evpn.c:1027,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_evpn.c:1028,1
    - Dst: zebra_evpn_acc_bd_svi_mac_add
      Src: /src/frr/zebra/zebra_evpn.c:1031,1
    - Dst: advertise_svi_macip_enabled
      Src: /src/frr/zebra/zebra_evpn.c:1034,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_evpn.c:1035,1
    - Dst: advertise_gw_macip_enabled
      Src: /src/frr/zebra/zebra_evpn.c:1039,1
    - Dst: zebra_get_vrr_intf_for_svi
      Src: /src/frr/zebra/zebra_evpn.c:1040,1
    - Dst: zebra_evpn_add_macip_for_intf
      Src: /src/frr/zebra/zebra_evpn.c:1042,1
    - Dst: neigh_read_for_vlan
      Src: /src/frr/zebra/zebra_evpn.c:1045,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 10
    argCount: 3
    argNames:
    - zevpn
    - ifp
    - advertise
    argTypes:
    - struct zebra_evpn*
    - struct interface*
    - int
    assertStmts:
    - condition: (zif)
      pos:
        line_end: 834
        line_start: 834
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (p_zevpn && in_param)
      pos:
        line_end: 667
        line_start: 667
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (zif)
      pos:
        line_end: 672
        line_start: 672
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (zif)
      pos:
        line_end: 845
        line_start: 845
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (zif)
      pos:
        line_end: 768
        line_start: 768
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (br_zif)
      pos:
        line_end: 772
        line_start: 772
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (br_if)
      pos:
        line_end: 670
        line_start: 670
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (in_param && p_ifp)
      pos:
        line_end: 871
        line_start: 871
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (zif)
      pos:
        line_end: 730
        line_start: 730
        source_file: /src/frr/zebra/zebra_evpn.c
    - condition: (zif)
      pos:
        line_end: 914
        line_start: 914
        source_file: /src/frr/zebra/zebra_evpn.c
    constantsTouched: []
    func_position:
      end: 1046
      start: 409
    functionDepth: 5
    functionLinenumber: 409
    functionLinenumberEnd: 1046
    functionName: zebra_evpn_advertise_subnet
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_neigh_gw_macip_add
    - zebra_evpn_rem_mac_install
    - zebra_evpn_from_svi
    - route_top
    - zebra_evpn_gw_macip_del
    - zebra_evpn_mac_lookup
    - zebra_l2_bridge_if_vni_find
    - zebra_evpn_from_svi_ns
    - advertise_gw_macip_enabled
    - zvni_map_to_macvlan_ns
    - zebra_evpn_install_mac_hash
    - zebra_get_vrr_intf_for_svi
    - zebra_evpn_gw_macip_add
    - zebra_evpn_gw_macip_del_for_evpn_hash
    - zebra_evpn_add_macip_for_intf
    - zebra_evpn_rem_mac_uninstall_all
    - memset
    - neigh_read_for_vlan
    - zebra_evpn_deref_ip2mac
    - zlog_debug
    - if
    - zebra_evpn_map_vlan
    - zebra_evpn_mac_gw_macip_add
    - hash_iterate
    - zebra_evpn_svi_macip_del_for_evpn_hash
    - zebra_vrf_lookup_by_id
    - assert
    - macfdb_read_mcast_entry_for_vni
    - apply_mask
    - zebra_evpn_neigh_del
    - zebra_evpn_lookup
    - IS_ZEBRA_IF_VLAN
    - ip_prefix_send_to_client
    - ns_walk_func
    - zebra_evpn_gw_macip_add_for_evpn_hash
    - mac_walk_ctx
    - IS_ZEBRA_IF_BRIDGE
    - route_next
    - zebra_from_svi_param
    - zebra_evpn_acc_bd_svi_mac_add
    - zvni_map_to_svi
    - zebra_vxlan_if_access_vlan_vni_find
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - zebra_evpn_rem_mac_install_all
    - zebra_evpn_map_vlan_ns
    - zebra_evpn_read_mac_neigh
    - memcpy
    - zebra_l2_bridge_if_vlan_find
    - zebra_evpn_del_macip_for_intf
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - zebra_evpn_map_to_macvlan
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_send_del_to_client
    - zebra_vxlan_if_vni_find
    - zebra_evpn_rem_mac_uninstall
    - ALL_LIST_ELEMENTS
    - if_is_operative
    - zebra_evpn_uninstall_mac_hash
    - macfdb_read_for_bridge
    - advertise_svi_macip_enabled
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_advertise_subnet(struct zebra_evpn *zevpn, struct interface
      *ifp,\n\t\t\t\tint advertise)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/zebra/zebra_evpn.c:1056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1052
    functionDepth: 1
    functionLinenumber: 1052
    functionLinenumberEnd: 1057
    functionName: zebra_evpn_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zebra_evpn_hash_keymake(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1062
    functionDepth: 0
    functionLinenumber: 1062
    functionLinenumberEnd: 1068
    functionName: zebra_evpn_hash_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_evpn_hash_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1078
    functionName: zebra_evpn_list_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_list_cmp(void *p1, void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn.c:1088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1083
    functionDepth: 0
    functionLinenumber: 1083
    functionLinenumberEnd: 1091
    functionName: zebra_evpn_alloc
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *zebra_evpn_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn.c:1102,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn.c:1103,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - vni
    argTypes:
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1096
    functionDepth: 2
    functionLinenumber: 1096
    functionLinenumberEnd: 1108
    functionName: zebra_evpn_lookup
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 32
    functionsReached:
    - hash_lookup
    - zebra_vrf_get_evpn
    - memset
    linkageType: ''
    returnType: struct zebra_evpn
    signature: struct zebra_evpn *zebra_evpn_lookup(vni_t vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn.c:1120,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn.c:1121,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_evpn.c:1123,1
    - Dst: zebra_evpn_es_evi_init
      Src: /src/frr/zebra/zebra_evpn.c:1125,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_evpn.c:1127,1
    - Dst: zebra_mac_db_create
      Src: /src/frr/zebra/zebra_evpn.c:1129,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_evpn.c:1131,1
    - Dst: zebra_neigh_db_create
      Src: /src/frr/zebra/zebra_evpn.c:1134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - vni
    argTypes:
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1113
    functionDepth: 2
    functionLinenumber: 1113
    functionLinenumberEnd: 1137
    functionName: zebra_evpn_add
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 4
    functionsReached:
    - zebra_neigh_db_create
    - snprintf
    - memset
    - zebra_mac_db_create
    - zebra_vrf_get_evpn
    - zebra_evpn_es_evi_init
    - hash_get
    linkageType: ''
    returnType: struct zebra_evpn
    signature: struct zebra_evpn *zebra_evpn_add(vni_t vni)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn.c:1147,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_evpn.c:1152,1
    - Dst: hash_free
      Src: /src/frr/zebra/zebra_evpn.c:1156,1
    - Dst: zebra_evpn_vxl_evpn_set
      Src: /src/frr/zebra/zebra_evpn.c:1161,1
    - Dst: zebra_evpn_es_evi_cleanup
      Src: /src/frr/zebra/zebra_evpn.c:1162,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_evpn.c:1165,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn.c:1166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1142
    functionDepth: 2
    functionLinenumber: 1142
    functionLinenumberEnd: 1169
    functionName: zebra_evpn_del
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 2
    functionsReached:
    - hash_free
    - zebra_vrf_get_evpn
    - zebra_evpn_vxl_evpn_set
    - zebra_evpn_es_evi_cleanup
    - XFREE
    - hash_release
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_del(struct zebra_evpn *zevpn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_evpn.c:1181,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_evpn.c:1188,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_evpn.c:1190,1
    - Dst: zebra_vrf_get_evpn_id
      Src: /src/frr/zebra/zebra_evpn.c:1190,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn.c:1191,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_evpn.c:1192,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn.c:1193,1
    - Dst: stream_put_in_addr
      Src: /src/frr/zebra/zebra_evpn.c:1194,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn.c:1195,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_evpn.c:1198,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_evpn.c:1198,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1201,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_evpn.c:1204,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_evpn.c:1206,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_evpn.c:1209,1
    - Dst: zebra_evpn_update_all_es
      Src: /src/frr/zebra/zebra_evpn.c:1216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1174
    functionDepth: 2
    functionLinenumber: 1174
    functionLinenumberEnd: 1219
    functionName: zebra_evpn_send_add_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 8
    functionsReached:
    - zserv_find_client
    - stream_new
    - zclient_create_header
    - stream_put
    - vrf_id_to_name
    - zebra_evpn_update_all_es
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_put_in_addr
    - zebra_route_string
    - zebra_vrf_get_evpn_id
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_send_add_to_client(struct zebra_evpn *zevpn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_evpn.c:1229,1
    - Dst: zebra_evpn_update_all_es
      Src: /src/frr/zebra/zebra_evpn.c:1237,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_evpn.c:1240,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zebra_evpn.c:1241,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_evpn.c:1243,1
    - Dst: zebra_vrf_get_evpn_id
      Src: /src/frr/zebra/zebra_evpn.c:1243,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn.c:1244,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_evpn.c:1247,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_evpn.c:1247,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1250,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_evpn.c:1251,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_evpn.c:1254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1224
    functionDepth: 2
    functionLinenumber: 1224
    functionLinenumberEnd: 1255
    functionName: zebra_evpn_send_del_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 6
    functionsReached:
    - zserv_find_client
    - stream_new
    - zclient_create_header
    - zebra_evpn_update_all_es
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_putl
    - stream_reset
    - zebra_route_string
    - zebra_vrf_get_evpn_id
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_send_del_to_client(struct zebra_evpn *zevpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_evpn.c:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vtep_ip
    - zvtep
    argTypes:
    - struct in_addr*
    - struct zebra_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1260
    functionDepth: 1
    functionLinenumber: 1260
    functionLinenumberEnd: 1264
    functionName: zebra_evpn_vtep_match
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_vtep_match(struct in_addr *vtep_ip,\n\t\t\t\t struct
      zebra_vtep *zvtep)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_vtep_match
      Src: /src/frr/zebra/zebra_evpn.c:1278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - zevpn
    - vtep_ip
    argTypes:
    - struct zebra_evpn*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1269
    functionDepth: 2
    functionLinenumber: 1269
    functionLinenumberEnd: 1283
    functionName: zebra_evpn_vtep_find
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 4
    functionsReached:
    - zebra_evpn_vtep_match
    linkageType: ''
    returnType: struct zebra_vtep
    signature: "struct zebra_vtep *zebra_evpn_vtep_find(struct zebra_evpn *zevpn,\n\t\t\t\t\tstruct
      in_addr *vtep_ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn.c:1295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - zevpn
    - vtep_ip
    - flood_control
    argTypes:
    - struct zebra_evpn*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1288
    functionDepth: 0
    functionLinenumber: 1288
    functionLinenumberEnd: 1306
    functionName: zebra_evpn_vtep_add
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct zebra_vtep
    signature: "struct zebra_vtep *zebra_evpn_vtep_add(struct zebra_evpn *zevpn,\n\t\t\t\t
      \      struct in_addr *vtep_ip,\n\t\t\t\t       int flood_control)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn.c:1321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - zevpn
    - zvtep
    argTypes:
    - struct zebra_evpn*
    - struct zebra_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1311
    functionDepth: 0
    functionLinenumber: 1311
    functionLinenumberEnd: 1324
    functionName: zebra_evpn_vtep_del
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_vtep_del(struct zebra_evpn *zevpn, struct zebra_vtep
      *zvtep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_vtep_uninstall
      Src: /src/frr/zebra/zebra_evpn.c:1340,1
    - Dst: zebra_evpn_vtep_del
      Src: /src/frr/zebra/zebra_evpn.c:1341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - zevpn
    - uninstall
    argTypes:
    - struct zebra_evpn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1330
    functionDepth: 1
    functionLinenumber: 1330
    functionLinenumberEnd: 1345
    functionName: zebra_evpn_vtep_del_all
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 6
    functionsReached:
    - zebra_evpn_vtep_del
    - zebra_evpn_vtep_uninstall
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_vtep_del_all(struct zebra_evpn *zevpn, int uninstall)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_vxlan_flooding_head_end
      Src: /src/frr/zebra/zebra_evpn.c:1353,1
    - Dst: dplane_vtep_add
      Src: /src/frr/zebra/zebra_evpn.c:1356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - zevpn
    - zvtep
    argTypes:
    - struct zebra_evpn*
    - struct zebra_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1351
    functionDepth: 2
    functionLinenumber: 1351
    functionLinenumberEnd: 1362
    functionName: zebra_evpn_vtep_install
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 3
    functionsReached:
    - is_vxlan_flooding_head_end
    - dplane_vtep_add
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_vtep_install(struct zebra_evpn *zevpn, struct zebra_vtep
      *zvtep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1370,1
    - Dst: dplane_vtep_delete
      Src: /src/frr/zebra/zebra_evpn.c:1376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - zevpn
    - vtep_ip
    argTypes:
    - struct zebra_evpn*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1367
    functionDepth: 2
    functionLinenumber: 1367
    functionLinenumberEnd: 1380
    functionName: zebra_evpn_vtep_uninstall
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 4
    functionsReached:
    - dplane_vtep_delete
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_vtep_uninstall(struct zebra_evpn *zevpn, struct in_addr
      *vtep_ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_vxlan_flooding_head_end
      Src: /src/frr/zebra/zebra_evpn.c:1397,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_evpn.c:1398,1
    - Dst: zebra_evpn_vtep_uninstall
      Src: /src/frr/zebra/zebra_evpn.c:1400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - bucket
    - zvrf
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1386
    functionDepth: 3
    functionLinenumber: 1386
    functionLinenumberEnd: 1402
    functionName: zebra_evpn_handle_flooding_remote_vteps
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - is_vxlan_flooding_head_end
    - zebra_evpn_vtep_uninstall
    - zebra_evpn_vtep_install
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_handle_flooding_remote_vteps(struct hash_bucket *bucket,\n\t\t\t\t\t
      \    void *zvrf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_evpn.c:1414,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_evpn.c:1415,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_evpn.c:1418,1
    - Dst: zebra_evpn_del
      Src: /src/frr/zebra/zebra_evpn.c:1421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1407
    functionDepth: 3
    functionLinenumber: 1407
    functionLinenumberEnd: 1422
    functionName: zebra_evpn_cleanup_all
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_neigh_del_all
    - zebra_evpn_del
    - zebra_evpn_vtep_del_all
    - zebra_evpn_mac_del_all
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_cleanup_all(struct hash_bucket *bucket, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1438,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1443,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn.c:1448,1
    - Dst: zebra_evpn_proc_sync_mac_update
      Src: /src/frr/zebra/zebra_evpn.c:1458,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1462,1
    - Dst: zebra_evpn_proc_sync_mac_update
      Src: /src/frr/zebra/zebra_evpn.c:1464,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1471,1
    - Dst: zebra_evpn_neigh_is_bgp_seq_ok
      Src: /src/frr/zebra/zebra_evpn.c:1473,1
    - Dst: zebra_evpn_proc_sync_neigh_update
      Src: /src/frr/zebra/zebra_evpn.c:1477,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 7
    argNames:
    - zevpn
    - macaddr
    - ipa_len
    - ipaddr
    - flags
    - seq
    - esi
    argTypes:
    - struct zebra_evpn*
    - struct ethaddr*
    - uint16_t
    - struct ipaddr*
    - uint8_t
    - uint32_t
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1480
    functionName: zebra_evpn_process_sync_macip_add
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_proc_sync_neigh_update
    - CHECK_FLAG
    - zebra_evpn_neigh_is_bgp_seq_ok
    - zebra_evpn_mac_lookup
    - zebra_evpn_neigh_lookup
    - zlog_debug
    - zebra_evpn_proc_sync_mac_update
    - ipaddr2str
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_process_sync_macip_add(struct zebra_evpn *zevpn,\n\t\t\t\t\t
      \     const struct ethaddr *macaddr,\n\t\t\t\t\t      uint16_t ipa_len,\n\t\t\t\t\t
      \     const struct ipaddr *ipaddr,\n\t\t\t\t\t      uint8_t flags, uint32_t
      seq,\n\t\t\t\t\t      const esi_t *esi)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1497,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1500,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:1507,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1509,1
    - Dst: zebra_evpn_es_find
      Src: /src/frr/zebra/zebra_evpn.c:1523,1
    - Dst: zebra_evpn_process_sync_macip_add
      Src: /src/frr/zebra/zebra_evpn.c:1525,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_evpn.c:1532,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1533,1
    - Dst: zebra_evpn_vtep_find
      Src: /src/frr/zebra/zebra_evpn.c:1547,1
    - Dst: zebra_evpn_vtep_add
      Src: /src/frr/zebra/zebra_evpn.c:1549,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_evpn.c:1552,1
    - Dst: zebra_evpn_vtep_install
      Src: /src/frr/zebra/zebra_evpn.c:1559,1
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/zebra_evpn.c:1563,1
    - Dst: zebra_evpn_mac_remote_macip_add
      Src: /src/frr/zebra/zebra_evpn.c:1569,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1575,1
    - Dst: zebra_evpn_mac_add_auto
      Src: /src/frr/zebra/zebra_evpn.c:1577,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1580,1
    - Dst: zebra_evpn_neigh_remote_macip_add
      Src: /src/frr/zebra/zebra_evpn.c:1585,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 8
    argNames:
    - vni
    - macaddr
    - ipa_len
    - ipaddr
    - flags
    - seq
    - vtep_ip
    - esi
    argTypes:
    - vni_t
    - struct ethaddr*
    - uint16_t
    - struct ipaddr*
    - uint8_t
    - uint32_t
    - struct in_addr
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1484
    functionDepth: 4
    functionLinenumber: 1484
    functionLinenumberEnd: 1588
    functionName: zebra_evpn_rem_macip_add
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_es_find
    - zebra_evpn_lookup
    - zebra_evpn_vtep_add
    - zebra_evpn_process_sync_macip_add
    - zebra_evpn_vtep_find
    - esi_to_str
    - zebra_evpn_vtep_install
    - zebra_vrf_get_evpn
    - zebra_evpn_mac_lookup
    - zebra_evpn_mac_remote_macip_add
    - zlog_debug
    - flog_err
    - zebra_evpn_mac_add_auto
    - zebra_evpn_neigh_remote_macip_add
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_rem_macip_add(vni_t vni, const struct ethaddr *macaddr,\n\t\t\t
      \     uint16_t ipa_len, const struct ipaddr *ipaddr,\n\t\t\t      uint8_t flags,
      uint32_t seq,\n\t\t\t      struct in_addr vtep_ip, const esi_t *esi)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1606,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1609,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.c:1616,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1618,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1623,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.c:1624,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1627,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1633,1
    - Dst: zebra_evpn_neigh_lookup
      Src: /src/frr/zebra/zebra_evpn.c:1635,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_evpn.c:1638,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1649,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1659,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_evpn.c:1660,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn.c:1664,1
    - Dst: zebra_evpn_neigh_remote_uninstall
      Src: /src/frr/zebra/zebra_evpn.c:1670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1679,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1680,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn.c:1682,1
    - Dst: macfdb_read_specific_mac
      Src: /src/frr/zebra/zebra_evpn.c:1685,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1689,1
    - Dst: zebra_evpn_sync_mac_del
      Src: /src/frr/zebra/zebra_evpn.c:1691,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn.c:1692,1
    - Dst: zebra_evpn_rem_mac_del
      Src: /src/frr/zebra/zebra_evpn.c:1693,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 54
    argCount: 5
    argNames:
    - vni
    - macaddr
    - ipa_len
    - ipaddr
    - vtep_ip
    argTypes:
    - vni_t
    - struct ethaddr*
    - uint16_t
    - struct ipaddr*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1591
    functionDepth: 3
    functionLinenumber: 1591
    functionLinenumberEnd: 1696
    functionName: zebra_evpn_rem_macip_del
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_lookup
    - CHECK_FLAG
    - zebra_evpn_sync_mac_del
    - zebra_evpn_mac_lookup
    - zebra_evpn_neigh_lookup
    - zebra_evpn_neigh_remote_uninstall
    - zlog_debug
    - zlog_warn
    - zebra_vxlan_if_vni_find
    - zebra_evpn_rem_mac_del
    - ipaddr2str
    - macfdb_read_specific_mac
    - if_is_operative
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_rem_macip_del(vni_t vni, const struct ethaddr *macaddr,\n\t\t\t
      \     uint16_t ipa_len, const struct ipaddr *ipaddr,\n\t\t\t      struct in_addr
      vtep_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_neigh_del_all
      Src: /src/frr/zebra/zebra_evpn.c:1708,1
    - Dst: zebra_evpn_mac_del_all
      Src: /src/frr/zebra/zebra_evpn.c:1710,1
    - Dst: zebra_evpn_vtep_del_all
      Src: /src/frr/zebra/zebra_evpn.c:1712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1699
    functionDepth: 2
    functionLinenumber: 1699
    functionLinenumberEnd: 1713
    functionName: zebra_evpn_cfg_cleanup
    functionSourceFile: /src/frr/zebra/zebra_evpn.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_neigh_del_all
    - zebra_evpn_vtep_del_all
    - zebra_evpn_mac_del_all
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_cfg_cleanup(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: sockopt_iphdrincl_swab_systoh
      Src: /src/frr/zebra/irdp_packet.c:78,1
    - Dst: flog_err
      Src: /src/frr/zebra/irdp_packet.c:85,1
    - Dst: flog_err
      Src: /src/frr/zebra/irdp_packet.c:91,1
    - Dst: flog_err
      Src: /src/frr/zebra/irdp_packet.c:102,1
    - Dst: in_cksum
      Src: /src/frr/zebra/irdp_packet.c:113,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:114,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:127,1
    - Dst: ntohl
      Src: /src/frr/zebra/irdp_packet.c:134,1
    - Dst: ntohl
      Src: /src/frr/zebra/irdp_packet.c:136,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:138,1
    - Dst: ntohl
      Src: /src/frr/zebra/irdp_packet.c:142,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/irdp_packet.c:144,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_packet.c:158,1
    - Dst: process_solicit
      Src: /src/frr/zebra/irdp_packet.c:161,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:165,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 3
    argNames:
    - p
    - len
    - ifp
    argTypes:
    - char*
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 170
    functionName: parse_irdp_packet
    functionSourceFile: /src/frr/zebra/irdp_packet.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - in_cksum
    - process_solicit
    - inet_ntop
    - flog_err
    - sockopt_iphdrincl_swab_systoh
    - zlog_debug
    - ntohl
    linkageType: ''
    returnType: void
    signature: void parse_irdp_packet(char *p, int len, struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/zebra/irdp_packet.c:176,1
    - Dst: SOPT_SIZE_CMSG_PKTINFO_IPV4
      Src: /src/frr/zebra/irdp_packet.c:176,1
    - Dst: memset
      Src: /src/frr/zebra/irdp_packet.c:179,1
    - Dst: recvmsg
      Src: /src/frr/zebra/irdp_packet.c:190,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:192,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_packet.c:193,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:198,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:202,1
    - Dst: getsockopt_ifindex
      Src: /src/frr/zebra/irdp_packet.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 4
    argNames:
    - sock
    - buf
    - size
    - ifindex
    argTypes:
    - int
    - uint8_t*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 210
    functionName: irdp_recvmsg
    functionSourceFile: /src/frr/zebra/irdp_packet.c
    functionUses: 0
    functionsReached:
    - getsockopt_ifindex
    - flog_warn
    - memset
    - safe_strerror
    - CMSG_SPACE
    - SOPT_SIZE_CMSG_PKTINFO_IPV4
    - recvmsg
    linkageType: ''
    returnType: int
    signature: int irdp_recvmsg(int sock, uint8_t *buf, int size, int *ifindex)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/zebra/irdp_packet.c:220,1
    - Dst: event_add_read
      Src: /src/frr/zebra/irdp_packet.c:221,1
    - Dst: irdp_recvmsg
      Src: /src/frr/zebra/irdp_packet.c:224,1
    - Dst: flog_warn
      Src: /src/frr/zebra/irdp_packet.c:227,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/irdp_packet.c:229,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_packet.c:244,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_packet.c:251,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_packet.c:253,1
    - Dst: parse_irdp_packet
      Src: /src/frr/zebra/irdp_packet.c:256,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 257
    functionName: irdp_read_raw
    functionSourceFile: /src/frr/zebra/irdp_packet.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - flog_warn
    - EVENT_FD
    - parse_irdp_packet
    - irdp_recvmsg
    - zlog_debug
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void irdp_read_raw(struct event *r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/zebra/irdp_packet.c:278,1
    - Dst: assert
      Src: /src/frr/zebra/irdp_packet.c:294,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/irdp_packet.c:294,1
    - Dst: stream_get
      Src: /src/frr/zebra/irdp_packet.c:295,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/irdp_packet.c:295,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/irdp_packet.c:298,1
    - Dst: setsockopt
      Src: /src/frr/zebra/irdp_packet.c:301,1
    - Dst: flog_err
      Src: /src/frr/zebra/irdp_packet.c:304,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_packet.c:306,1
    - Dst: setsockopt
      Src: /src/frr/zebra/irdp_packet.c:312,1
    - Dst: flog_err
      Src: /src/frr/zebra/irdp_packet.c:315,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_packet.c:317,1
    - Dst: setsockopt_ipv4_multicast_loop
      Src: /src/frr/zebra/irdp_packet.c:321,1
    - Dst: memset
      Src: /src/frr/zebra/irdp_packet.c:323,1
    - Dst: CMSG_DATA
      Src: /src/frr/zebra/irdp_packet.c:331,1
    - Dst: sockopt_iphdrincl_swab_htosys
      Src: /src/frr/zebra/irdp_packet.c:346,1
    - Dst: sendmsg
      Src: /src/frr/zebra/irdp_packet.c:348,1
    - Dst: flog_err
      Src: /src/frr/zebra/irdp_packet.c:349,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_packet.c:351,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 51
    argCount: 5
    argNames:
    - ifp
    - s
    - dst
    - p
    - ttl
    argTypes:
    - struct interface*
    - struct stream*
    - uint32_t
    - struct prefix*
    - uint32_t
    assertStmts:
    - condition: (stream_get_endp(s) < (sizeof(buf) - sizeof(struct ip)))
      pos:
        line_end: 293
        line_start: 293
        source_file: /src/frr/zebra/irdp_packet.c
    constantsTouched: []
    func_position:
      end: 352
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 352
    functionName: send_packet
    functionSourceFile: /src/frr/zebra/irdp_packet.c
    functionUses: 2
    functionsReached:
    - memset
    - sockopt_iphdrincl_swab_htosys
    - setsockopt_ipv4_multicast_loop
    - stream_get_endp
    - stream_get
    - flog_err
    - safe_strerror
    - sendmsg
    - CMSG_DATA
    - setsockopt
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: "void send_packet(struct interface *ifp, struct stream *s, uint32_t
      dst,\n\t\t struct prefix *p, uint32_t ttl)"
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - index
    argTypes:
    - enum meta_queue_indexes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 264
    functionName: subqueue2str
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *subqueue2str(enum meta_queue_indexes index)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bputch
      Src: /src/frr/zebra/zebra_rib.c:281,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:283,1
    - Dst: re_list_first
      Src: /src/frr/zebra/zebra_rib.c:285,1
    - Dst: bprintfrr
      Src: /src/frr/zebra/zebra_rib.c:287,1
    - Dst: bputch
      Src: /src/frr/zebra/zebra_rib.c:289,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_rib.c:296,1
    - Dst: srcdest_rnode2str
      Src: /src/frr/zebra/zebra_rib.c:298,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_rib.c:299,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_rib.c:301,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_rib.c:303,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 306
    functionName: printfrr_zebra_node
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputch
    - srcdest_rnode2str
    - re_list_first
    - srcdest_rnode_table_info
    - rib_dest_from_rnode
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_zebra_node(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t   const void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - node
    - ','
    - vrf_id
    - ','
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 311
    functionName: rnode_debug
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rnode_debug(node, vrf_id, msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - node
    - ','
    - vrf_id
    - ','
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: rnode_info
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rnode_info(node, vrf_id, msg, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_rib.c:320,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_rib.c:324,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:326,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:327,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:331,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:332,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:335,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:337,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - re
    - buf
    - len
    argTypes:
    - struct route_entry*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 341
    functionName: _dump_re_status
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: "char *_dump_re_status(const struct route_entry *re, char *buf,\n\t\t\t
      \    size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/zebra/zebra_rib.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 353
    functionName: route_distance
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t route_distance(int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - table_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 364
    functionName: is_zebra_valid_kernel_table
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_zebra_valid_kernel_table(uint32_t table_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - table_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 371
    functionName: is_zebra_main_routing_table
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_zebra_main_routing_table(uint32_t table_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/zebra/zebra_rib.c:379,1
    - Dst: IPV4_NET127
      Src: /src/frr/zebra/zebra_rib.c:381,1
    - Dst: IN_CLASSD
      Src: /src/frr/zebra/zebra_rib.c:381,1
    - Dst: IPV4_LINKLOCAL
      Src: /src/frr/zebra/zebra_rib.c:382,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/zebra/zebra_rib.c:386,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/zebra_rib.c:388,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 392
    functionName: zebra_check_addr
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - IN6_IS_ADDR_LINKLOCAL
    - IPV4_LINKLOCAL
    - IPV4_NET127
    - IN6_IS_ADDR_LOOPBACK
    - ntohl
    - IN_CLASSD
    linkageType: ''
    returnType: int
    signature: int zebra_check_addr(const struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: re::re
      Src: /src/frr/zebra/zebra_rib.c:397,1
    - Dst: id::id
      Src: /src/frr/zebra/zebra_rib.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - re
    - new
    argTypes:
    - struct route_entry*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 402
    functionName: route_entry_attach_ref
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - id::id
    - re::re
    linkageType: ''
    returnType: void
    signature: "void route_entry_attach_ref(struct route_entry *re,\n\t\t\t\t   struct
      nhg_hash_entry *new)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: route_entry_attach_ref
      Src: /src/frr/zebra/zebra_rib.c:424,1
    - Dst: route_entry_attach_ref
      Src: /src/frr/zebra/zebra_rib.c:427,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_rib.c:441,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - re
    - new_nhghe
    argTypes:
    - struct route_entry*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 445
    functionName: route_entry_update_nhe
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - zebra_nhg_decrement_ref
    - route_entry_attach_ref
    linkageType: ''
    returnType: int
    signature: "int route_entry_update_nhe(struct route_entry *re,\n\t\t\t   struct
      nhg_hash_entry *new_nhghe)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:456,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:460,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:461,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:462,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_rib.c:465,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - old_entry
    - new_entry
    argTypes:
    - struct nhg_hash_entry*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 476
    functionName: rib_handle_nhg_replace
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - srcdest_route_next
    - route_entry_update_nhe
    - route_top
    - zlog_debug
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: "int rib_handle_nhg_replace(struct nhg_hash_entry *old_entry,\n\t\t\t
      \  struct nhg_hash_entry *new_entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_rib.c:465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 467
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - route_entry_update_nhe
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE_SAFE (rn, re, next)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_rib.c:488,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_rib.c:492,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_rib.c:502,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:507,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:509,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:511,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/zebra_rib.c:522,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:525,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 5
    argNames:
    - afi
    - safi
    - vrf_id
    - addr
    - rn_out
    argTypes:
    - afi_t
    - safi_t
    - vrf_id_t
    - union g_addr*
    - struct route_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 478
    functionDepth: 2
    functionLinenumber: 478
    functionLinenumberEnd: 536
    functionName: rib_match
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_lock_node
    - memset
    - CHECK_FLAG
    - zebra_vrf_table
    - route_node_match
    - rib_dest_from_rnode
    linkageType: ''
    returnType: struct route_entry
    signature: "struct route_entry *rib_match(afi_t afi, safi_t safi, vrf_id_t vrf_id,\n\t\t\t
      \     const union g_addr *addr,\n\t\t\t      struct route_node **rn_out)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:547,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:549,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:552,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:554,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:558,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:559,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:568,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_rib.c:569,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rib.c:584,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:587,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_rib.c:589,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 4
    argNames:
    - afi
    - vrf_id
    - gaddr
    - rn_out
    argTypes:
    - afi_t
    - vrf_id_t
    - union g_addr*
    - struct route_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 538
    functionDepth: 3
    functionLinenumber: 538
    functionLinenumberEnd: 595
    functionName: rib_match_multicast
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - rib_match
    - inet_ntop
    - zlog_debug
    - vrf_id_to_name
    linkageType: ''
    returnType: struct route_entry
    signature: "struct route_entry *rib_match_multicast(afi_t afi, vrf_id_t vrf_id,\n\t\t\t\t\tunion
      g_addr *gaddr,\n\t\t\t\t\tstruct route_node **rn_out)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_rib.c:605,1
    - Dst: route_node_lookup
      Src: /src/frr/zebra/zebra_rib.c:609,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:616,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:617,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:620,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:629,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - p
    - vrf_id
    argTypes:
    - struct prefix_ipv4*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 633
    functionName: rib_lookup_ipv4
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - CHECK_FLAG
    - zebra_vrf_table
    - rib_dest_from_rnode
    linkageType: ''
    returnType: struct route_entry
    signature: struct route_entry *rib_lookup_ipv4(struct prefix_ipv4 *p, vrf_id_t
      vrf_id)
  - BBCount: 210
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:646,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:656,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_rib.c:660,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:661,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/zebra/zebra_rib.c:667,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:670,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:671,1
    - Dst: zebra_nhg_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:679,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:685,1
    - Dst: zsend_route_notify_owner
      Src: /src/frr/zebra/zebra_rib.c:686,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:696,1
    - Dst: dplane_route_update
      Src: /src/frr/zebra/zebra_rib.c:700,1
    - Dst: dplane_route_add
      Src: /src/frr/zebra/zebra_rib.c:702,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:706,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:709,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:710,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:713,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:715,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:725,1
    - Dst: ZEBRA_DPLANE_REQUEST_SUCCESS
      Src: /src/frr/zebra/zebra_rib.c:730,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:740,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_rib.c:743,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:744,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:747,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:748,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:749,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:757,1
    - Dst: dplane_route_delete
      Src: /src/frr/zebra/zebra_rib.c:759,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:765,1
    - Dst: ZEBRA_DPLANE_REQUEST_SUCCESS
      Src: /src/frr/zebra/zebra_rib.c:769,1
    - Dst: rib_can_delete_dest
      Src: /src/frr/zebra/zebra_rib.c:783,1
    - Dst: re_list_first
      Src: /src/frr/zebra/zebra_rib.c:785,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/zebra_rib.c:796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:803,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:804,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:813,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:827,1
    - Dst: rnh_list_count
      Src: /src/frr/zebra/zebra_rib.c:830,1
    - Dst: rnh_list_count
      Src: /src/frr/zebra/zebra_rib.c:832,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:834,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:841,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_rib.c:850,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:852,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:856,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:858,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:858,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:875,1
    - Dst: zebra_evaluate_rnh
      Src: /src/frr/zebra/zebra_rib.c:881,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_rib.c:881,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:887,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:903,1
    - Dst: rib_can_delete_dest
      Src: /src/frr/zebra/zebra_rib.c:907,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_rib.c:913,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:914,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:914,1
    - Dst: zebra_rib_evaluate_rn_nexthops
      Src: /src/frr/zebra/zebra_rib.c:917,1
    - Dst: zebra_router_get_next_sequence
      Src: /src/frr/zebra/zebra_rib.c:917,1
    - Dst: rnh_list_fini
      Src: /src/frr/zebra/zebra_rib.c:921,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:922,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:928,1
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:938,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:945,1
    - Dst: rnh_list_fini
      Src: /src/frr/zebra/zebra_rib.c:947,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:948,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:955,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:959,1
    - Dst: nhe::nhe
      Src: /src/frr/zebra/zebra_rib.c:959,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:960,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:965,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:966,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:966,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:966,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:967,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:967,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:973,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:975,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:981,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:985,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:986,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:986,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:987,1
    - Dst: zebra_rib_labeled_unicast
      Src: /src/frr/zebra/zebra_rib.c:990,1
    - Dst: zebra_mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_rib.c:991,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:993,1
    - Dst: RIB_KERNEL_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1000,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1001,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1003,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1017,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1017,1
    - Dst: status::status
      Src: /src/frr/zebra/zebra_rib.c:1017,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:1018,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:1022,1
    - Dst: nhe::nhe
      Src: /src/frr/zebra/zebra_rib.c:1022,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1033,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1034,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1036,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1036,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1037,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1038,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1037,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1040,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1042,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1044,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1044,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1045,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1046,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1045,1
    - Dst: zebra_rib_labeled_unicast
      Src: /src/frr/zebra/zebra_rib.c:1050,1
    - Dst: zebra_mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_rib.c:1051,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:1061,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1061,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1071,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1072,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1074,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1074,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1075,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1076,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1075,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1078,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1080,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1082,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1082,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1083,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1084,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1083,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1095,1
    - Dst: zebra_rib_labeled_unicast
      Src: /src/frr/zebra/zebra_rib.c:1098,1
    - Dst: zebra_mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_rib.c:1099,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:1101,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1112,1
    - Dst: status::status
      Src: /src/frr/zebra/zebra_rib.c:1112,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1113,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:1114,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1118,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1119,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1122,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:1151,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_rib.c:1152,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:1155,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/zebra_rib.c:1155,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:1159,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_rib.c:1160,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/zebra_rib.c:1163,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1164,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1171,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1175,1
    - Dst: alternate
      Src: /src/frr/zebra/zebra_rib.c:1179,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1181,1
    - Dst: rib_process
      Src: /src/frr/zebra/zebra_rib.c:1191,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:1206,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1208,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_rib.c:1216,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1217,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1219,1
    - Dst: re_list_first
      Src: /src/frr/zebra/zebra_rib.c:1228,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1230,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1231,1
    - Dst: RNODE_FOREACH_RE_SAFE
      Src: /src/frr/zebra/zebra_rib.c:1237,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1242,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1244,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1245,1
    - Dst: _dump_re_status
      Src: /src/frr/zebra/zebra_rib.c:1246,1
    - Dst: zclient_dump_route_flags
      Src: /src/frr/zebra/zebra_rib.c:1248,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1260,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1271,1
    - Dst: nexthop_active_update
      Src: /src/frr/zebra/zebra_rib.c:1272,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1293,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1296,1
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:1299,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1302,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_rib.c:1306,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/zebra/zebra_rib.c:1307,1
    - Dst: zsend_route_notify_owner
      Src: /src/frr/zebra/zebra_rib.c:1308,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:1320,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1327,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1331,1
    - Dst: rib_choose_best
      Src: /src/frr/zebra/zebra_rib.c:1332,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1334,1
    - Dst: rib_choose_best
      Src: /src/frr/zebra/zebra_rib.c:1338,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1340,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1345,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1373,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1382,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1389,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1392,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1400,1
    - Dst: redistribute_delete
      Src: /src/frr/zebra/zebra_rib.c:1402,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1406,1
    - Dst: rib_process_update_fib
      Src: /src/frr/zebra/zebra_rib.c:1413,1
    - Dst: rib_process_add_fib
      Src: /src/frr/zebra/zebra_rib.c:1415,1
    - Dst: rib_process_del_fib
      Src: /src/frr/zebra/zebra_rib.c:1417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1421,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:1423,1
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:1426,1
    - Dst: rib_gc_dest
      Src: /src/frr/zebra/zebra_rib.c:1433,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1438,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1439,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1444,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1446,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1448,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1448,1
    - Dst: zebra_mpls_lsp_schedule
      Src: /src/frr/zebra/zebra_rib.c:1449,1
    - Dst: mpls_unmark_lsps_for_processing
      Src: /src/frr/zebra/zebra_rib.c:1450,1
    - Dst: dplane_ctx_get_old_type
      Src: /src/frr/zebra/zebra_rib.c:1468,1
    - Dst: dplane_ctx_get_old_instance
      Src: /src/frr/zebra/zebra_rib.c:1469,1
    - Dst: dplane_ctx_get_old_distance
      Src: /src/frr/zebra/zebra_rib.c:1476,1
    - Dst: dplane_ctx_get_old_tag
      Src: /src/frr/zebra/zebra_rib.c:1477,1
    - Dst: dplane_ctx_get_old_metric
      Src: /src/frr/zebra/zebra_rib.c:1481,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:1490,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1491,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/zebra_rib.c:1496,1
    - Dst: dplane_ctx_get_instance
      Src: /src/frr/zebra/zebra_rib.c:1497,1
    - Dst: dplane_ctx_get_distance
      Src: /src/frr/zebra/zebra_rib.c:1504,1
    - Dst: dplane_ctx_get_tag
      Src: /src/frr/zebra/zebra_rib.c:1505,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/zebra_rib.c:1508,1
    - Dst: nexthop_group_equal_no_recurse
      Src: /src/frr/zebra/zebra_rib.c:1511,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/zebra_rib.c:1512,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1531,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1534,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1535,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1536,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:1538,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1539,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1542,1
    - Dst: rib_compare_routes
      Src: /src/frr/zebra/zebra_rib.c:1548,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1560,1
    - Dst: rib_update_nhg_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1597,1
    - Dst: nexthop_next_active_resolved
      Src: /src/frr/zebra/zebra_rib.c:1598,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:1600,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1605,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_rib.c:1609,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1617,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1623,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1626,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1632,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1633,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1635,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1643,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1645,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1651,1
    - Dst: nexthop_next_active_resolved
      Src: /src/frr/zebra/zebra_rib.c:1654,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1679,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1681,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1686,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1687,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/zebra_rib.c:1696,1
    - Dst: nexthop_group_equal
      Src: /src/frr/zebra/zebra_rib.c:1706,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1712,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1714,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1717,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1722,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1724,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:1725,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1728,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1734,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1736,1
    - Dst: rib_update_nhg_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1757,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1762,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1775,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1777,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1783,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_rib.c:1785,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:1796,1
    - Dst: dplane_ctx_get_backup_ng
      Src: /src/frr/zebra/zebra_rib.c:1804,1
    - Dst: nexthop_group_equal
      Src: /src/frr/zebra/zebra_rib.c:1807,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1813,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1815,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1824,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1826,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:1827,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1834,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1836,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:1845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1846,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1855,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1857,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_rib.c:1860,1
    - Dst: zebra_vrf_lookup_table_with_table_id
      Src: /src/frr/zebra/zebra_rib.c:1882,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/zebra_rib.c:1883,1
    - Dst: dplane_ctx_get_safi
      Src: /src/frr/zebra/zebra_rib.c:1883,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1884,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:1884,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1887,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/zebra_rib.c:1889,1
    - Dst: dplane_ctx_get_safi
      Src: /src/frr/zebra/zebra_rib.c:1890,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_rib.c:1891,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1891,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1892,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/zebra_rib.c:1897,1
    - Dst: dplane_ctx_get_src
      Src: /src/frr/zebra/zebra_rib.c:1898,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/zebra/zebra_rib.c:1900,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1927,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1927,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1928,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1928,1
    - Dst: rib_find_rn_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1931,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1934,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1936,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1936,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1941,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_rib.c:1942,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:1944,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_rib.c:1945,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1948,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1950,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1950,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:1951,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_rib.c:1951,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/zebra_rib.c:1952,1
    - Dst: dplane_ctx_is_update
      Src: /src/frr/zebra/zebra_rib.c:1958,1
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:1967,1
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:1973,1
    - Dst: dplane_ctx_get_seq
      Src: /src/frr/zebra/zebra_rib.c:1982,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1990,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1992,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1993,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1996,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1997,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1999,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2001,1
    - Dst: dplane_ctx_get_old_seq
      Src: /src/frr/zebra/zebra_rib.c:2007,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2009,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2011,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2012,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2015,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2023,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2024,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2036,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2037,1
    - Dst: rib_update_re_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:2046,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2050,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2052,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2053,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2054,1
    - Dst: redistribute_update
      Src: /src/frr/zebra/zebra_rib.c:2061,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2071,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2072,1
    - Dst: zebra_rib_fixup_system
      Src: /src/frr/zebra/zebra_rib.c:2073,1
    - Dst: zebra_router_notify_on_ack
      Src: /src/frr/zebra/zebra_rib.c:2079,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2080,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2083,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2085,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2088,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2091,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2098,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2099,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2101,1
    - Dst: zsend_route_notify_owner
      Src: /src/frr/zebra/zebra_rib.c:2103,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_rib.c:2107,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2108,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2108,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2109,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2115,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2123,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2124,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2126,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2132,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2133,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_rib.c:2136,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2137,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2137,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2138,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2148,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2149,1
    - Dst: zebra_rib_fixup_system
      Src: /src/frr/zebra/zebra_rib.c:2150,1
    - Dst: zebra_rib_evaluate_rn_nexthops
      Src: /src/frr/zebra/zebra_rib.c:2207,1
    - Dst: zebra_rib_evaluate_mpls
      Src: /src/frr/zebra/zebra_rib.c:2208,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:2212,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_rib.c:2224,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:2226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2234,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:2239,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:2241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2242,1
    CyclomaticComplexity: 236
    EdgeCount: 236
    ICount: 581
    argCount: 1
    argNames:
    - re
    argTypes:
    - struct route_entry*
    assertStmts:
    - condition: (rn)
      pos:
        line_end: 1205
        line_start: 1205
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 2248
      start: 639
    functionDepth: 3
    functionLinenumber: 639
    functionLinenumberEnd: 2248
    functionName: zebra_rib_labeled_unicast
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - RIB_SYSTEM_ROUTE
    - nexthop_group_equal_no_recurse
    - dplane_ctx_get_backup_ng
    - flog_err
    - dplane_ctx_get_old_metric
    - status::status
    - zebra_rib_fixup_system
    - if_is_loopback
    - rnh_list_count
    - copy_nexthops
    - if
    - rib_process_update_fib
    - rib_update_re_from_ctx
    - rib_dest_vrf
    - rib_find_rn_from_ctx
    - rib_get_fib_nhg
    - route_unlock_node
    - dplane_ctx_get_ng
    - rib_uninstall_kernel
    - alternate
    - dplane_route_delete
    - dplane_ctx_get_old_distance
    - zebra_route_string::zebra_route_string
    - zebra_vrf_lookup_table_with_table_id
    - dplane_ctx_get_vrf
    - dplane_ctx_get_status
    - rib_process_add_fib
    - rnh_list_fini
    - nexthop_next_active_resolved
    - nexthop_same
    - zebra_rib_labeled_unicast
    - type::type
    - RIB_KERNEL_ROUTE
    - dplane_ctx_get_type
    - rnode_debug
    - dplane_ctx_get_op
    - if_lookup_by_index
    - rib_can_delete_dest
    - dplane_ctx_get_distance
    - dplane_route_add
    - rib_dest_from_rnode
    - nexthop_group_equal
    - ALL_NEXTHOPS_PTR
    - zsend_route_notify_owner
    - rib_update_nhg_from_ctx
    - rib_choose_best
    - rib_gc_dest
    - dplane_ctx_get_old_type
    - dplane_ctx_get_old_seq
    - VRF_LOGNAME
    - nexthops_free
    - rib_route_match_ctx
    - srcdest_rnode_prefixes
    - rib_process
    - nhe::nhe
    - dplane_ctx_get_instance
    - nexthop_group_active_nexthop_num
    - rib_get_fib_backup_nhg
    - ALL_NEXTHOPS
    - ZEBRA_DPLANE_REQUEST_SUCCESS
    - old::old
    - zlog_debug
    - rib_compare_routes
    - vrf_lookup_by_id
    - zebra_nhg_get_backup_nhg
    - assert
    - zvrf_name
    - dplane_ctx_get_old_tag
    - zebra_rib_evaluate_mpls
    - dplane_res2str
    - srcdest_rnode_table_info
    - XFREE
    - zclient_dump_route_flags
    - zebra_mpls_lsp_uninstall
    - srcdest_rnode_get
    - redistribute_update
    - mpls_unmark_lsps_for_processing
    - current
    - zebra_evaluate_rnh
    - vrf_id_to_name
    - SET_FLAG
    - nexthop_active_update
    - dplane_ctx_get_src
    - dplane_ctx_get_safi
    - is_default_prefix
    - dplane_route_update
    - redistribute_delete
    - dplane_ctx_get_metric
    - dplane_ctx_is_update
    - zlog_warn
    - zebra_router_notify_on_ack
    - re_list_first
    - frr_each_safe
    - zebra_router_get_next_sequence
    - hook_call
    - zvrf_id
    - dplane_ctx_get_dest
    - zebra_rib_evaluate_rn_nexthops
    - zsend_route_notify_owner_ctx
    - RNODE_FOREACH_RE_SAFE
    - zebra_vrf_lookup_by_id
    - dplane_op2str
    - dplane_ctx_get_seq
    - rib_unlink
    - zebra_nhg_install_kernel
    - dplane_ctx_get_old_instance
    - rib_process_del_fib
    - UNSET_FLAG
    - dplane_ctx_get_table
    - family2afi
    - zebra_route_string
    - table::table
    - _dump_re_status
    - dplane_ctx_get_afi
    - CHECK_FLAG
    - dplane_ctx_get_tag
    - zebra_mpls_lsp_schedule
    - rib_install_kernel
    linkageType: ''
    returnType: int
    signature: int zebra_rib_labeled_unicast(struct route_entry *re)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:903,1
    - Dst: rib_can_delete_dest
      Src: /src/frr/zebra/zebra_rib.c:907,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_rib.c:913,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:914,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:914,1
    - Dst: zebra_rib_evaluate_rn_nexthops
      Src: /src/frr/zebra/zebra_rib.c:917,1
    - Dst: zebra_router_get_next_sequence
      Src: /src/frr/zebra/zebra_rib.c:917,1
    - Dst: rnh_list_fini
      Src: /src/frr/zebra/zebra_rib.c:921,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:922,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:928,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 899
    functionDepth: 3
    functionLinenumber: 899
    functionLinenumberEnd: 930
    functionName: rib_gc_dest
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - rnh_list_fini
    - route_unlock_node
    - rib_can_delete_dest
    - zebra_router_get_next_sequence
    - zvrf_id
    - rnode_debug
    - zebra_rib_evaluate_rn_nexthops
    - XFREE
    - rib_dest_from_rnode
    - rib_dest_vrf
    linkageType: ''
    returnType: int
    signature: int rib_gc_dest(struct route_node *rn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:938,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:945,1
    - Dst: rnh_list_fini
      Src: /src/frr/zebra/zebra_rib.c:947,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:948,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 950
    functionName: zebra_rtable_node_cleanup
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - rnh_list_fini
    - rib_unlink
    - XFREE
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void zebra_rtable_node_cleanup(struct route_table *table,\n\t\t\t
      \      struct route_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 939
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - rib_unlink
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE_SAFE (node, re, next)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:955,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:959,1
    - Dst: nhe::nhe
      Src: /src/frr/zebra/zebra_rib.c:959,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:960,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:965,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:966,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:966,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:966,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:967,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:967,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:973,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:975,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - zvrf
    - rn
    - new
    argTypes:
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 952
    functionDepth: 1
    functionLinenumber: 952
    functionLinenumberEnd: 976
    functionName: rib_process_add_fib
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - hook_call
    - zvrf_id
    - zvrf_name
    - zlog_debug
    - UNSET_FLAG
    - zebra_route_string::zebra_route_string
    - table::table
    - type::type
    - nhe::nhe
    - rib_install_kernel
    - nexthop_group_active_nexthop_num
    linkageType: ''
    returnType: void
    signature: "void rib_process_add_fib(struct zebra_vrf *zvrf, struct route_node
      *rn,\n\t\t\t\tstruct route_entry *new)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:981,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:985,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:986,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:986,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:987,1
    - Dst: zebra_rib_labeled_unicast
      Src: /src/frr/zebra/zebra_rib.c:990,1
    - Dst: zebra_mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_rib.c:991,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:993,1
    - Dst: RIB_KERNEL_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1000,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1001,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1003,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - zvrf
    - rn
    - old
    argTypes:
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 978
    functionDepth: 4
    functionLinenumber: 978
    functionLinenumberEnd: 1004
    functionName: rib_process_del_fib
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - zebra_rib_labeled_unicast
    - RIB_KERNEL_ROUTE
    - hook_call
    - zvrf_id
    - zvrf_name
    - rib_uninstall_kernel
    - zlog_debug
    - zebra_mpls_lsp_uninstall
    - SET_FLAG
    - UNSET_FLAG
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void rib_process_del_fib(struct zebra_vrf *zvrf, struct route_node
      *rn,\n\t\t\t\tstruct route_entry *old)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1017,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1017,1
    - Dst: status::status
      Src: /src/frr/zebra/zebra_rib.c:1017,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_rib.c:1018,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:1022,1
    - Dst: nhe::nhe
      Src: /src/frr/zebra/zebra_rib.c:1022,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1033,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1034,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1036,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1036,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1037,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1038,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1037,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1040,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1042,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1044,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1044,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1045,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1046,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1045,1
    - Dst: zebra_rib_labeled_unicast
      Src: /src/frr/zebra/zebra_rib.c:1050,1
    - Dst: zebra_mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_rib.c:1051,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:1061,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1061,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1071,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1072,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1074,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1074,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1075,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1076,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1075,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1078,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1080,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1082,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1082,1
    - Dst: table::table
      Src: /src/frr/zebra/zebra_rib.c:1083,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_rib.c:1084,1
    - Dst: zebra_route_string::zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1083,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1095,1
    - Dst: zebra_rib_labeled_unicast
      Src: /src/frr/zebra/zebra_rib.c:1098,1
    - Dst: zebra_mpls_lsp_uninstall
      Src: /src/frr/zebra/zebra_rib.c:1099,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:1101,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1112,1
    - Dst: status::status
      Src: /src/frr/zebra/zebra_rib.c:1112,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1113,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:1114,1
    - Dst: old::old
      Src: /src/frr/zebra/zebra_rib.c:1118,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1119,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1122,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 4
    argNames:
    - zvrf
    - rn
    - old
    - new
    argTypes:
    - struct zebra_vrf*
    - struct route_node*
    - struct route_entry*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1006
    functionDepth: 4
    functionLinenumber: 1006
    functionLinenumberEnd: 1123
    functionName: rib_process_update_fib
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - zebra_rib_labeled_unicast
    - RIB_SYSTEM_ROUTE
    - nhe::nhe
    - status::status
    - nexthop_group_active_nexthop_num
    - hook_call
    - zvrf_id
    - old::old
    - zlog_debug
    - zvrf_name
    - rib_uninstall_kernel
    - zebra_route_string::zebra_route_string
    - UNSET_FLAG
    - zebra_route_string
    - zebra_mpls_lsp_uninstall
    - table::table
    - CHECK_FLAG
    - type::type
    - rib_install_kernel
    linkageType: ''
    returnType: void
    signature: "void rib_process_update_fib(struct zebra_vrf *zvrf,\n\t\t\t\t   struct
      route_node *rn,\n\t\t\t\t   struct route_entry *old,\n\t\t\t\t   struct route_entry
      *new)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:1151,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_rib.c:1152,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:1155,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/zebra_rib.c:1155,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:1159,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_rib.c:1160,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/zebra_rib.c:1163,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1164,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1171,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1175,1
    - Dst: alternate
      Src: /src/frr/zebra/zebra_rib.c:1179,1
    - Dst: current
      Src: /src/frr/zebra/zebra_rib.c:1181,1
    - Dst: rib_process
      Src: /src/frr/zebra/zebra_rib.c:1191,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:1206,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1208,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_rib.c:1216,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1217,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1219,1
    - Dst: re_list_first
      Src: /src/frr/zebra/zebra_rib.c:1228,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1230,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1231,1
    - Dst: RNODE_FOREACH_RE_SAFE
      Src: /src/frr/zebra/zebra_rib.c:1237,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1242,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1244,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:1245,1
    - Dst: _dump_re_status
      Src: /src/frr/zebra/zebra_rib.c:1246,1
    - Dst: zclient_dump_route_flags
      Src: /src/frr/zebra/zebra_rib.c:1248,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1260,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1271,1
    - Dst: nexthop_active_update
      Src: /src/frr/zebra/zebra_rib.c:1272,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1293,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1296,1
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:1299,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1302,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_rib.c:1306,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/zebra/zebra_rib.c:1307,1
    - Dst: zsend_route_notify_owner
      Src: /src/frr/zebra/zebra_rib.c:1308,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:1320,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1327,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1331,1
    - Dst: rib_choose_best
      Src: /src/frr/zebra/zebra_rib.c:1332,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1334,1
    - Dst: rib_choose_best
      Src: /src/frr/zebra/zebra_rib.c:1338,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1340,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1345,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 49
    argCount: 2
    argNames:
    - current
    - alternate
    argTypes:
    - struct route_entry*
    - struct route_entry*
    assertStmts:
    - condition: (rn)
      pos:
        line_end: 1205
        line_start: 1205
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 1346
      start: 1126
    functionDepth: 3
    functionLinenumber: 1126
    functionLinenumberEnd: 1346
    functionName: rib_choose_best
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - re_list_first
    - rib_process
    - srcdest_rnode_prefixes
    - nexthop_group_active_nexthop_num
    - if_lookup_by_index
    - ALL_NEXTHOPS
    - zvrf_id
    - if_is_loopback
    - zlog_debug
    - RNODE_FOREACH_RE_SAFE
    - vrf_lookup_by_id
    - if
    - rib_dest_from_rnode
    - rib_dest_vrf
    - assert
    - rib_unlink
    - alternate
    - UNSET_FLAG
    - zclient_dump_route_flags
    - srcdest_rnode_table_info
    - zebra_route_string
    - zsend_route_notify_owner
    - _dump_re_status
    - current
    - rib_choose_best
    - CHECK_FLAG
    - SET_FLAG
    - nexthop_active_update
    - VRF_LOGNAME
    linkageType: ''
    returnType: struct route_entry
    signature: "struct route_entry *rib_choose_best(struct route_entry *current,\n\t\t\t\t\t
      \  struct route_entry *alternate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1421,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:1423,1
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:1426,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1420
    functionDepth: 1
    functionLinenumber: 1420
    functionLinenumberEnd: 1428
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - rib_unlink
    - rnode_debug
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE_SAFE (rn, re, next)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1438,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1439,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1444,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1446,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:1448,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:1448,1
    - Dst: zebra_mpls_lsp_schedule
      Src: /src/frr/zebra/zebra_rib.c:1449,1
    - Dst: mpls_unmark_lsps_for_processing
      Src: /src/frr/zebra/zebra_rib.c:1450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1436
    functionDepth: 2
    functionLinenumber: 1436
    functionLinenumberEnd: 1452
    functionName: zebra_rib_evaluate_mpls
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - mpls_unmark_lsps_for_processing
    - zvrf_id
    - zvrf_name
    - CHECK_FLAG
    - zlog_debug
    - zebra_mpls_lsp_schedule
    - zebra_vrf_lookup_by_id
    - rib_dest_from_rnode
    linkageType: ''
    returnType: void
    signature: void zebra_rib_evaluate_mpls(struct route_node *rn)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_old_type
      Src: /src/frr/zebra/zebra_rib.c:1468,1
    - Dst: dplane_ctx_get_old_instance
      Src: /src/frr/zebra/zebra_rib.c:1469,1
    - Dst: dplane_ctx_get_old_distance
      Src: /src/frr/zebra/zebra_rib.c:1476,1
    - Dst: dplane_ctx_get_old_tag
      Src: /src/frr/zebra/zebra_rib.c:1477,1
    - Dst: dplane_ctx_get_old_metric
      Src: /src/frr/zebra/zebra_rib.c:1481,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:1490,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1491,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/zebra_rib.c:1496,1
    - Dst: dplane_ctx_get_instance
      Src: /src/frr/zebra/zebra_rib.c:1497,1
    - Dst: dplane_ctx_get_distance
      Src: /src/frr/zebra/zebra_rib.c:1504,1
    - Dst: dplane_ctx_get_tag
      Src: /src/frr/zebra/zebra_rib.c:1505,1
    - Dst: dplane_ctx_get_metric
      Src: /src/frr/zebra/zebra_rib.c:1508,1
    - Dst: nexthop_group_equal_no_recurse
      Src: /src/frr/zebra/zebra_rib.c:1511,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/zebra_rib.c:1512,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 32
    argCount: 3
    argNames:
    - re
    - ctx
    - is_update
    argTypes:
    - struct route_entry*
    - struct zebra_dplane_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1457
    functionDepth: 2
    functionLinenumber: 1457
    functionLinenumberEnd: 1519
    functionName: rib_route_match_ctx
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_op
    - dplane_ctx_get_ng
    - dplane_ctx_get_type
    - nexthop_group_equal_no_recurse
    - dplane_ctx_get_old_instance
    - dplane_ctx_get_old_tag
    - CHECK_FLAG
    - dplane_ctx_get_old_type
    - dplane_ctx_get_distance
    - dplane_ctx_get_tag
    - dplane_ctx_get_metric
    - dplane_ctx_get_old_distance
    - dplane_ctx_get_old_metric
    - dplane_ctx_get_instance
    linkageType: ''
    returnType: bool
    signature: "bool rib_route_match_ctx(const struct route_entry *re,\n\t\t\t\tconst
      struct zebra_dplane_ctx *ctx,\n\t\t\t\tbool is_update)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1531,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1534,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1535,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1536,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:1538,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1539,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1542,1
    - Dst: rib_compare_routes
      Src: /src/frr/zebra/zebra_rib.c:1548,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1560,1
    - Dst: rib_update_nhg_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1597,1
    - Dst: nexthop_next_active_resolved
      Src: /src/frr/zebra/zebra_rib.c:1598,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:1600,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1605,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_rib.c:1609,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1617,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1623,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1626,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1632,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1633,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1635,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1643,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1645,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1651,1
    - Dst: nexthop_next_active_resolved
      Src: /src/frr/zebra/zebra_rib.c:1654,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1679,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1681,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1686,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1687,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/zebra_rib.c:1696,1
    - Dst: nexthop_group_equal
      Src: /src/frr/zebra/zebra_rib.c:1706,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1712,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1714,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1717,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1722,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1724,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:1725,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1728,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1734,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1736,1
    - Dst: rib_update_nhg_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1757,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1762,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1775,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1777,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1783,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_rib.c:1785,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:1796,1
    - Dst: dplane_ctx_get_backup_ng
      Src: /src/frr/zebra/zebra_rib.c:1804,1
    - Dst: nexthop_group_equal
      Src: /src/frr/zebra/zebra_rib.c:1807,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1813,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1815,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1824,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1826,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:1827,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1834,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1836,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:1845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1846,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1855,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1857,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_rib.c:1860,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 132
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1521
    functionDepth: 2
    functionLinenumber: 1521
    functionLinenumberEnd: 1867
    functionName: zebra_rib_fixup_system
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - nexthop_same
    - RIB_SYSTEM_ROUTE
    - dplane_ctx_get_backup_ng
    - ALL_NEXTHOPS
    - zlog_debug
    - rib_compare_routes
    - vrf_lookup_by_id
    - copy_nexthops
    - zebra_nhg_get_backup_nhg
    - rib_dest_from_rnode
    - dplane_ctx_get_ng
    - UNSET_FLAG
    - nexthop_group_equal
    - ALL_NEXTHOPS_PTR
    - rib_update_nhg_from_ctx
    - CHECK_FLAG
    - SET_FLAG
    - VRF_LOGNAME
    - nexthop_next_active_resolved
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: void zebra_rib_fixup_system(struct route_node *rn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:1528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1531,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1534,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1535,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1536,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:1538,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1539,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1542,1
    - Dst: rib_compare_routes
      Src: /src/frr/zebra/zebra_rib.c:1548,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1560,1
    - Dst: rib_update_nhg_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1597,1
    - Dst: nexthop_next_active_resolved
      Src: /src/frr/zebra/zebra_rib.c:1598,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:1600,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1605,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_rib.c:1609,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1617,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1623,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1626,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1632,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1633,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1635,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1643,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1645,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1651,1
    - Dst: nexthop_next_active_resolved
      Src: /src/frr/zebra/zebra_rib.c:1654,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1658
      start: 1525
    functionDepth: 1
    functionLinenumber: 1525
    functionLinenumberEnd: 1658
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 6
    functionsReached:
    - nexthop_same
    - rib_update_nhg_from_ctx
    - RIB_SYSTEM_ROUTE
    - ALL_NEXTHOPS
    - CHECK_FLAG
    - SET_FLAG
    - UNSET_FLAG
    - zlog_debug
    - rib_compare_routes
    - nexthop_next_active_resolved
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE(rn, re)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1679,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1681,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1686,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1687,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/zebra_rib.c:1696,1
    - Dst: nexthop_group_equal
      Src: /src/frr/zebra/zebra_rib.c:1706,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1712,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1714,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1717,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1722,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1724,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:1725,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1728,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1734,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1736,1
    - Dst: rib_update_nhg_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1757,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1762,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1764,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1775,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1777,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1783,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_rib.c:1785,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:1796,1
    - Dst: dplane_ctx_get_backup_ng
      Src: /src/frr/zebra/zebra_rib.c:1804,1
    - Dst: nexthop_group_equal
      Src: /src/frr/zebra/zebra_rib.c:1807,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1813,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1815,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1824,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1826,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:1827,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1834,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1836,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:1845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1846,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1855,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1857,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_rib.c:1860,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 86
    argCount: 3
    argNames:
    - re
    - rn
    - ctx
    argTypes:
    - struct route_entry*
    - struct route_node*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1666
    functionDepth: 2
    functionLinenumber: 1666
    functionLinenumberEnd: 1862
    functionName: rib_update_re_from_ctx
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_ng
    - rib_update_nhg_from_ctx
    - CHECK_FLAG
    - dplane_ctx_get_backup_ng
    - zebra_nhg_get_backup_nhg
    - zlog_debug
    - UNSET_FLAG
    - nexthop_group_equal
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - SET_FLAG
    - copy_nexthops
    - rib_dest_from_rnode
    - nexthops_free
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: bool
    signature: "bool rib_update_re_from_ctx(struct route_entry *re,\n\t\t\t\t   struct
      route_node *rn,\n\t\t\t\t   struct zebra_dplane_ctx *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_table_with_table_id
      Src: /src/frr/zebra/zebra_rib.c:1882,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/zebra_rib.c:1883,1
    - Dst: dplane_ctx_get_safi
      Src: /src/frr/zebra/zebra_rib.c:1883,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1884,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:1884,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1887,1
    - Dst: dplane_ctx_get_afi
      Src: /src/frr/zebra/zebra_rib.c:1889,1
    - Dst: dplane_ctx_get_safi
      Src: /src/frr/zebra/zebra_rib.c:1890,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_rib.c:1891,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1891,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1892,1
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/zebra_rib.c:1897,1
    - Dst: dplane_ctx_get_src
      Src: /src/frr/zebra/zebra_rib.c:1898,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/zebra/zebra_rib.c:1900,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1874
    functionDepth: 2
    functionLinenumber: 1874
    functionLinenumberEnd: 1905
    functionName: rib_find_rn_from_ctx
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - zebra_vrf_lookup_table_with_table_id
    - dplane_ctx_get_vrf
    - dplane_ctx_get_afi
    - vrf_id_to_name
    - dplane_ctx_get_dest
    - zlog_debug
    - dplane_ctx_get_src
    - dplane_ctx_get_table
    - dplane_ctx_get_safi
    - srcdest_rnode_get
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *rib_find_rn_from_ctx(const struct zebra_dplane_ctx
      *ctx)
  - BBCount: 93
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1927,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1927,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:1928,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1928,1
    - Dst: rib_find_rn_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:1931,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1934,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1936,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1936,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:1941,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_rib.c:1942,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:1944,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_rib.c:1945,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1948,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1950,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1950,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:1951,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_rib.c:1951,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/zebra_rib.c:1952,1
    - Dst: dplane_ctx_is_update
      Src: /src/frr/zebra/zebra_rib.c:1958,1
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:1967,1
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:1973,1
    - Dst: dplane_ctx_get_seq
      Src: /src/frr/zebra/zebra_rib.c:1982,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:1990,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:1992,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:1993,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1996,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1997,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:1999,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2001,1
    - Dst: dplane_ctx_get_old_seq
      Src: /src/frr/zebra/zebra_rib.c:2007,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2009,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2011,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2012,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2015,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2023,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2024,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2036,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2037,1
    - Dst: rib_update_re_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:2046,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2050,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2052,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2053,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2054,1
    - Dst: redistribute_update
      Src: /src/frr/zebra/zebra_rib.c:2061,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2071,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2072,1
    - Dst: zebra_rib_fixup_system
      Src: /src/frr/zebra/zebra_rib.c:2073,1
    - Dst: zebra_router_notify_on_ack
      Src: /src/frr/zebra/zebra_rib.c:2079,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2080,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2083,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2085,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2088,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2091,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2098,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2099,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2101,1
    - Dst: zsend_route_notify_owner
      Src: /src/frr/zebra/zebra_rib.c:2103,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_rib.c:2107,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2108,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2108,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2109,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2115,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2123,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2124,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2126,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2132,1
    - Dst: zsend_route_notify_owner_ctx
      Src: /src/frr/zebra/zebra_rib.c:2133,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_rib.c:2136,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2137,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2137,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2138,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2148,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2149,1
    - Dst: zebra_rib_fixup_system
      Src: /src/frr/zebra/zebra_rib.c:2150,1
    - Dst: zebra_rib_evaluate_rn_nexthops
      Src: /src/frr/zebra/zebra_rib.c:2207,1
    - Dst: zebra_rib_evaluate_mpls
      Src: /src/frr/zebra/zebra_rib.c:2208,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:2212,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 174
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 1912
    functionDepth: 3
    functionLinenumber: 1912
    functionLinenumberEnd: 2213
    functionName: rib_process_result
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - rib_route_match_ctx
    - RIB_SYSTEM_ROUTE
    - dplane_ctx_is_update
    - zlog_warn
    - zebra_router_notify_on_ack
    - zebra_rib_fixup_system
    - dplane_ctx_get_op
    - zebra_rib_evaluate_rn_nexthops
    - zsend_route_notify_owner_ctx
    - zlog_debug
    - vrf_lookup_by_id
    - zebra_vrf_lookup_by_id
    - rib_update_re_from_ctx
    - rib_dest_from_rnode
    - rib_find_rn_from_ctx
    - route_unlock_node
    - dplane_op2str
    - dplane_ctx_get_seq
    - zebra_rib_evaluate_mpls
    - UNSET_FLAG
    - dplane_res2str
    - dplane_ctx_get_table
    - srcdest_rnode_table_info
    - zsend_route_notify_owner
    - redistribute_update
    - dplane_ctx_get_vrf
    - CHECK_FLAG
    - dplane_ctx_get_status
    - dplane_ctx_get_old_seq
    - SET_FLAG
    - VRF_LOGNAME
    linkageType: ''
    returnType: void
    signature: void rib_process_result(struct zebra_dplane_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:1967,1
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:1973,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1964
    functionDepth: 3
    functionLinenumber: 1964
    functionLinenumberEnd: 1980
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 6
    functionsReached:
    - rib_route_match_ctx
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE(rn, rib)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_rib.c:2224,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:2226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2234,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:2239,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:2241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - re
    argTypes:
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2245
      start: 2218
    functionDepth: 2
    functionLinenumber: 2218
    functionLinenumberEnd: 2245
    functionName: rib_count_installed_nh
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - rib_get_fib_nhg
    - CHECK_FLAG
    - rib_get_fib_backup_nhg
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: int
    signature: int rib_count_installed_nh(struct route_entry *re)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:2266,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2266,1
    - Dst: rib_find_rn_from_ctx
      Src: /src/frr/zebra/zebra_rib.c:2269,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2272,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2274,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2274,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2275,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:2280,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2283,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2284,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2284,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2285,1
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:2292,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2299,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2301,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2301,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2302,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:2303,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/zebra_rib.c:2303,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2309,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2310,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:2322,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/zebra_rib.c:2322,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2323,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2331,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2332,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2334,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2336,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2337,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2338,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:2339,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/zebra_rib.c:2340,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2344,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:2346,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:2347,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/zebra_rib.c:2348,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:2349,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/zebra_rib.c:2350,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2353
      start: 2255
    functionDepth: 3
    functionLinenumber: 2255
    functionLinenumberEnd: 2353
    functionName: rib_process_dplane_notify
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - rib_route_match_ctx
    - dplane_ctx_get_type
    - dplane_ctx_get_vrf
    - zebra_route_string
    - dplane_ctx_get_ng
    - CHECK_FLAG
    - zlog_debug
    - UNSET_FLAG
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - dplane_ctx_get_table
    - rib_dest_from_rnode
    - rib_find_rn_from_ctx
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: void
    signature: void rib_process_dplane_notify(struct zebra_dplane_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rib_route_match_ctx
      Src: /src/frr/zebra/zebra_rib.c:2292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2294
      start: 2291
    functionDepth: 3
    functionLinenumber: 2291
    functionLinenumberEnd: 2294
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 6
    functionsReached:
    - rib_route_match_ctx
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE(rn, re)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_rib.c:2486,1
    - Dst: zebra_vxlan_evpn_vrf_route_add
      Src: /src/frr/zebra/zebra_rib.c:2492,1
    - Dst: zebra_vxlan_evpn_vrf_route_del
      Src: /src/frr/zebra/zebra_rib.c:2495,1
    - Dst: zebra_evpn_remote_es_add
      Src: /src/frr/zebra/zebra_rib.c:2499,1
    - Dst: zebra_evpn_remote_es_del
      Src: /src/frr/zebra/zebra_rib.c:2503,1
    - Dst: zebra_evpn_rem_macip_add
      Src: /src/frr/zebra/zebra_rib.c:2513,1
    - Dst: zebra_evpn_rem_macip_del
      Src: /src/frr/zebra/zebra_rib.c:2517,1
    - Dst: zebra_vxlan_remote_vtep_add
      Src: /src/frr/zebra/zebra_rib.c:2521,1
    - Dst: zebra_vxlan_remote_vtep_del
      Src: /src/frr/zebra/zebra_rib.c:2524,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:2529,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 1
    argNames:
    - lnode
    argTypes:
    - struct listnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2530
      start: 2479
    functionDepth: 6
    functionLinenumber: 2479
    functionLinenumberEnd: 2530
    functionName: process_subq_evpn
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_evpn_vrf_route_add
    - zebra_evpn_remote_es_del
    - zebra_vxlan_remote_vtep_add
    - zebra_evpn_rem_macip_del
    - zebra_vxlan_remote_vtep_del
    - XFREE
    - listgetdata
    - zebra_evpn_remote_es_add
    - zebra_evpn_rem_macip_add
    - zebra_vxlan_evpn_vrf_route_del
    linkageType: ''
    returnType: void
    signature: void process_subq_evpn(struct listnode *lnode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_rib.c:2542,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2554,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:2556,1
    - Dst: nhg_ctx_process
      Src: /src/frr/zebra/zebra_rib.c:2560,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2566,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:2567,1
    - Dst: zebra_nhg_proto_add
      Src: /src/frr/zebra/zebra_rib.c:2570,1
    - Dst: zsend_nhg_notify
      Src: /src/frr/zebra/zebra_rib.c:2576,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_rib.c:2581,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:2584,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - lnode
    argTypes:
    - struct listnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2535
    functionDepth: 2
    functionLinenumber: 2535
    functionLinenumberEnd: 2585
    functionName: process_subq_nhg
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - zsend_nhg_notify
    - subqueue2str
    - nhg_ctx_process
    - zebra_nhg_free
    - zebra_nhg_proto_add
    - zlog_debug
    - XFREE
    - listgetdata
    linkageType: ''
    returnType: void
    signature: void process_subq_nhg(struct listnode *lnode)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_rib.c:2589,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:2595,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:2597,1
    - Dst: zebra_mpls_ftn_uninstall
      Src: /src/frr/zebra/zebra_rib.c:2603,1
    - Dst: zebra_mpls_zapi_labels_process
      Src: /src/frr/zebra/zebra_rib.c:2607,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:2611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - lnode
    argTypes:
    - struct listnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2612
      start: 2587
    functionDepth: 4
    functionLinenumber: 2587
    functionLinenumberEnd: 2612
    functionName: process_subq_early_label
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - zebra_mpls_zapi_labels_process
    - zebra_vrf_lookup_by_id
    - XFREE
    - listgetdata
    - zebra_mpls_ftn_uninstall
    linkageType: ''
    returnType: void
    signature: void process_subq_early_label(struct listnode *lnode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_rib.c:2620,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:2621,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:2622,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_rib.c:2624,1
    - Dst: rib_process
      Src: /src/frr/zebra/zebra_rib.c:2626,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:2636,1
    - Dst: re_list_first
      Src: /src/frr/zebra/zebra_rib.c:2638,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2640,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/zebra_rib.c:2641,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_rib.c:2641,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:2642,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2646,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:2646,1
    - Dst: RIB_ROUTE_QUEUED
      Src: /src/frr/zebra/zebra_rib.c:2647,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:2649,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - lnode
    - qindex
    argTypes:
    - struct listnode*
    - uint8_t
    assertStmts:
    - condition: (dest)
      pos:
        line_end: 2621
        line_start: 2621
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 2650
      start: 2614
    functionDepth: 3
    functionLinenumber: 2614
    functionLinenumberEnd: 2650
    functionName: process_subq_route
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - RIB_ROUTE_QUEUED
    - route_unlock_node
    - zvrf_id
    - zvrf_name
    - subqueue2str
    - zlog_debug
    - UNSET_FLAG
    - re_list_first
    - rib_process
    - listgetdata
    - rib_dest_from_rnode
    - rib_dest_vrf
    - assert
    linkageType: ''
    returnType: void
    signature: void process_subq_route(struct listnode *lnode, uint8_t qindex)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:2655,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_rib.c:2656,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:2658,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_rib.c:2660,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - re
    argTypes:
    - struct route_entry*
    assertStmts:
    - condition: (re->nhe->id == re->nhe_id)
      pos:
        line_end: 2654
        line_start: 2654
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 2661
      start: 2652
    functionDepth: 2
    functionLinenumber: 2652
    functionLinenumberEnd: 2661
    functionName: rib_re_nhg_free
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - route_entry_update_nhe
    - nexthops_free
    - assert
    linkageType: ''
    returnType: void
    signature: void rib_re_nhg_free(struct route_entry *re)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_rib.c:2679,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:2681,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:2682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ere
    argTypes:
    - struct zebra_early_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2683
      start: 2676
    functionDepth: 1
    functionLinenumber: 2676
    functionLinenumberEnd: 2683
    functionName: early_route_memory_free
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void early_route_memory_free(struct zebra_early_route *ere)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_table_with_table_id
      Src: /src/frr/zebra/zebra_rib.c:2696,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:2699,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_rib.c:2704,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:2718,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:2723,1
    - Dst: zebra_nhg_rib_find_nhe
      Src: /src/frr/zebra/zebra_rib.c:2730,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:2734,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_rib.c:2739,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:2743,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:2746,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2747,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:2750,1
    - Dst: zebra_rib_queue_evpn_route_add
      Src: /src/frr/zebra/zebra_rib.c:2757,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_rib.c:2771,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_rib.c:2774,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/zebra/zebra_rib.c:2776,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/zebra/zebra_rib.c:2779,1
    - Dst: RNODE_FOREACH_RE
      Src: /src/frr/zebra/zebra_rib.c:2787,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2788,1
    - Dst: rib_compare_routes
      Src: /src/frr/zebra/zebra_rib.c:2794,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2808,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:2819,1
    - Dst: zebra_router_notify_on_ack
      Src: /src/frr/zebra/zebra_rib.c:2826,1
    - Dst: route_distance
      Src: /src/frr/zebra/zebra_rib.c:2829,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2833,1
    - Dst: zebra_router_notify_on_ack
      Src: /src/frr/zebra/zebra_rib.c:2834,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:2841,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:2848,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:2851,1
    - Dst: route_entry_dump
      Src: /src/frr/zebra/zebra_rib.c:2854,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2859,1
    - Dst: rib_addnode
      Src: /src/frr/zebra/zebra_rib.c:2860,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2867,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:2868,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:2874,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2876,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:2882,1
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:2886,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:2890,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_rib.c:2892,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:2893,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 48
    argCount: 1
    argNames:
    - ere
    argTypes:
    - struct zebra_early_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2894
      start: 2685
    functionDepth: 3
    functionLinenumber: 2685
    functionLinenumberEnd: 2894
    functionName: process_subq_early_route_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_get_table_with_table_id
    - prefix2str
    - RIB_SYSTEM_ROUTE
    - zebra_nhg_rib_find_nhe
    - rnode_debug
    - flog_err
    - zebra_router_notify_on_ack
    - rib_addnode
    - zebra_nhg_lookup_id
    - zebra_nhg_free
    - RNODE_FOREACH_RE
    - ALL_NEXTHOPS
    - zlog_debug
    - rib_compare_routes
    - apply_mask_ipv6
    - if
    - rib_dest_from_rnode
    - route_unlock_node
    - rib_unlink
    - apply_mask
    - rib_delnode
    - route_distance
    - XFREE
    - zebra_route_string
    - early_route_memory_free
    - srcdest_rnode_get
    - route_entry_update_nhe
    - CHECK_FLAG
    - zebra_rib_queue_evpn_route_add
    - SET_FLAG
    - route_entry_dump
    linkageType: ''
    returnType: void
    signature: void process_subq_early_route_add(struct zebra_early_route *ere)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2876,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:2882,1
    - Dst: rib_unlink
      Src: /src/frr/zebra/zebra_rib.c:2886,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2888
      start: 2875
    functionDepth: 1
    functionLinenumber: 2875
    functionLinenumberEnd: 2888
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - rib_unlink
    - rnode_debug
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE_SAFE (rn, re, same)
  - BBCount: 188
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:2908,1
    - Dst: zebra_vrf_lookup_table_with_table_id
      Src: /src/frr/zebra/zebra_rib.c:2911,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:2914,1
    - Dst: apply_mask
      Src: /src/frr/zebra/zebra_rib.c:2919,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/zebra/zebra_rib.c:2921,1
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/zebra/zebra_rib.c:2924,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:2929,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_rib.c:2932,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:2937,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:2942,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:2946,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2956,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2963,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:2988,1
    - Dst: nexthop_same_no_labels
      Src: /src/frr/zebra/zebra_rib.c:2993,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3022,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3024,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:3027,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3030,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3031,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3035,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:3050,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3055,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rib.c:3058,1
    - Dst: afi2family
      Src: /src/frr/zebra/zebra_rib.c:3058,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3063,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:3068,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:3069,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3078,1
    - Dst: rib_install_kernel
      Src: /src/frr/zebra/zebra_rib.c:3080,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:3081,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:3083,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:3091,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:3094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3094,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_rib.c:3095,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:3096,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_rib.c:3098,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_rib.c:3103,1
    - Dst: zebra_rib_queue_evpn_route_del
      Src: /src/frr/zebra/zebra_rib.c:3107,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_rib.c:3113,1
    - Dst: dplane_sys_route_del
      Src: /src/frr/zebra/zebra_rib.c:3114,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:3116,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:3119,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:3121,1
    - Dst: process_subq_early_route
      Src: /src/frr/zebra/zebra_rib.c:3131,1
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_rib.c:3133,1
    - Dst: process_subq_early_route_delete
      Src: /src/frr/zebra/zebra_rib.c:3136,1
    - Dst: process_subq_early_route_add
      Src: /src/frr/zebra/zebra_rib.c:3138,1
    - Dst: process_subq_gr_run
      Src: /src/frr/zebra/zebra_rib.c:3148,1
    - Dst: listgetdata
      Src: /src/frr/zebra/zebra_rib.c:3150,1
    - Dst: zebra_gr_process_client
      Src: /src/frr/zebra/zebra_rib.c:3152,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3155,1
    - Dst: process_subq
      Src: /src/frr/zebra/zebra_rib.c:3162,1
    - Dst: listhead
      Src: /src/frr/zebra/zebra_rib.c:3165,1
    - Dst: process_subq_evpn
      Src: /src/frr/zebra/zebra_rib.c:3172,1
    - Dst: process_subq_nhg
      Src: /src/frr/zebra/zebra_rib.c:3175,1
    - Dst: process_subq_early_route
      Src: /src/frr/zebra/zebra_rib.c:3178,1
    - Dst: process_subq_early_label
      Src: /src/frr/zebra/zebra_rib.c:3181,1
    - Dst: process_subq_route
      Src: /src/frr/zebra/zebra_rib.c:3189,1
    - Dst: process_subq_gr_run
      Src: /src/frr/zebra/zebra_rib.c:3192,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3196,1
    - Dst: meta_queue_process
      Src: /src/frr/zebra/zebra_rib.c:3205,1
    - Dst: dplane_get_in_queue_len
      Src: /src/frr/zebra/zebra_rib.c:3213,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3216,1
    - Dst: work_queue_empty
      Src: /src/frr/zebra/zebra_rib.c:3221,1
    - Dst: work_queue_add
      Src: /src/frr/zebra/zebra_rib.c:3222,1
    - Dst: process_subq
      Src: /src/frr/zebra/zebra_rib.c:3228,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3276,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3276,1
    - Dst: RIB_ROUTE_QUEUED
      Src: /src/frr/zebra/zebra_rib.c:3277,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3279,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3281,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3285,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3285,1
    - Dst: RIB_ROUTE_QUEUED
      Src: /src/frr/zebra/zebra_rib.c:3285,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3286,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/zebra_rib.c:3287,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3291,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3292,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3299,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3315,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3320,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3324,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3325,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3341,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3346,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3350,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3351,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3358,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:3368,1
    - Dst: work_queue_empty
      Src: /src/frr/zebra/zebra_rib.c:3381,1
    - Dst: work_queue_add
      Src: /src/frr/zebra/zebra_rib.c:3382,1
    - Dst: mq_add_func
      Src: /src/frr/zebra/zebra_rib.c:3384,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3393,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3403,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3405,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3413,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3420,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3422,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3428,1
    - Dst: rnode_to_ribs
      Src: /src/frr/zebra/zebra_rib.c:3432,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3433,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/zebra/zebra_rib.c:3434,1
    - Dst: zlog_backtrace
      Src: /src/frr/zebra/zebra_rib.c:3435,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3439,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3447,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3449,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3460,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3472,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3482,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3485,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3494,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3503,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3506,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3518,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3530,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_rib.c:3531,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3533,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3542,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_rib.c:3551,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_rib.c:3552,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_rib.c:3554,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3556,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3560,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3574,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_rib.c:3587,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_rib.c:3588,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_rib.c:3590,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3592,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3596,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3605,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3615,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3618,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3629,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3639,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3642,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3650,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3659,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3662,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3673,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_rib.c:3676,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3677,1
    - Dst: subq::subq
      Src: /src/frr/zebra/zebra_rib.c:3677,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3691,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3701,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3703,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3716,1
    - Dst: nhg_ctx_free
      Src: /src/frr/zebra/zebra_rib.c:3728,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_rib.c:3730,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3733,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3735,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3746,1
    - Dst: switch
      Src: /src/frr/zebra/zebra_rib.c:3750,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3757,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3758,1
    - Dst: rib_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3763,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3770,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_rib.c:3772,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:3775,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3777,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3788,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:3792,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3794,1
    - Dst: rib_meta_queue_gr_run_free
      Src: /src/frr/zebra/zebra_rib.c:3799,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3809,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3811,1
    - Dst: nhg_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3824,1
    - Dst: evpn_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3827,1
    - Dst: early_route_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3830,1
    - Dst: early_label_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3833,1
    - Dst: rib_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3841,1
    - Dst: rib_meta_queue_gr_run_free
      Src: /src/frr/zebra/zebra_rib.c:3844,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_rib.c:3848,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3852,1
    - Dst: work_queue_new
      Src: /src/frr/zebra/zebra_rib.c:3858,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:3860,1
    - Dst: meta_queue_new
      Src: /src/frr/zebra/zebra_rib.c:3873,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:3874,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3885,1
    - Dst: rnh_list_init
      Src: /src/frr/zebra/zebra_rib.c:3886,1
    - Dst: re_list_init
      Src: /src/frr/zebra/zebra_rib.c:3887,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/zebra_rib.c:3888,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3939,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3941,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3944,1
    - Dst: zebra_rib_create_dest
      Src: /src/frr/zebra/zebra_rib.c:3946,1
    - Dst: re_list_add_head
      Src: /src/frr/zebra/zebra_rib.c:3949,1
    - Dst: is_zebra_import_table_enabled
      Src: /src/frr/zebra/zebra_rib.c:3954,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:3955,1
    - Dst: zebra_get_import_table_route_map
      Src: /src/frr/zebra/zebra_rib.c:3957,1
    - Dst: zebra_add_import_table_entry
      Src: /src/frr/zebra/zebra_rib.c:3958,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_rib.c:3962,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3971,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3973,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3976,1
    - Dst: rib_link
      Src: /src/frr/zebra/zebra_rib.c:3979,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3995,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3998,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:4001,1
    - Dst: re_list_del
      Src: /src/frr/zebra/zebra_rib.c:4003,1
    - Dst: rib_re_nhg_free
      Src: /src/frr/zebra/zebra_rib.c:4008,1
    - Dst: zapi_re_opaque_free
      Src: /src/frr/zebra/zebra_rib.c:4010,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:4012,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:4020,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4022,1
    - Dst: is_zebra_import_table_enabled
      Src: /src/frr/zebra/zebra_rib.c:4027,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4028,1
    - Dst: zebra_del_import_table_entry
      Src: /src/frr/zebra/zebra_rib.c:4030,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4033,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_rib.c:4034,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:4035,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_rib.c:4038,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4055,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4059,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_rib.c:4062,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4063,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rib.c:4069,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rib.c:4073,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_rib.c:4080,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_rib.c:4084,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4088,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4089,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4091,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_rib.c:4093,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4099,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4101,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4106,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4109,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4112,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4115,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4121,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4123,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4125,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4127,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4147,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_rib.c:4150,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4152,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_rib.c:4155,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:4157,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4158,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4161,1
    - Dst: zclient_dump_route_flags
      Src: /src/frr/zebra/zebra_rib.c:4164,1
    - Dst: _dump_re_status
      Src: /src/frr/zebra/zebra_rib.c:4166,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4167,1
    - Dst: nexthop_group_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:4168,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:4169,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:4172,1
    - Dst: _route_entry_dump_nh
      Src: /src/frr/zebra/zebra_rib.c:4173,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:4175,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:4175,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4176,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:4178,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:4179,1
    - Dst: _route_entry_dump_nh
      Src: /src/frr/zebra/zebra_rib.c:4180,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4183,1
    - Dst: rib_meta_queue_gr_run_add
      Src: /src/frr/zebra/zebra_rib.c:4186,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:4188,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4192,1
    - Dst: rib_meta_queue_early_route_add
      Src: /src/frr/zebra/zebra_rib.c:4197,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:4201,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4205,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:4208,1
    - Dst: rib_add_gr_run
      Src: /src/frr/zebra/zebra_rib.c:4213,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4217,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:4224,1
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/zebra_rib.c:4227,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4236,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_rib.c:4245,1
    - Dst: rib_add_multipath_nhe
      Src: /src/frr/zebra/zebra_rib.c:4262,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:4271,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4273,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:4284,1
    - Dst: rib_add_multipath
      Src: /src/frr/zebra/zebra_rib.c:4290,1
    - Dst: zebra_nhe_init
      Src: /src/frr/zebra/zebra_rib.c:4307,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_rib.c:4313,1
    - Dst: rib_add_multipath_nhe
      Src: /src/frr/zebra/zebra_rib.c:4314,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:4318,1
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/zebra_rib.c:4333,1
    - Dst: zebra_nhg_alloc
      Src: /src/frr/zebra/zebra_rib.c:4337,1
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_rib.c:4338,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4341,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:4354,1
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/zebra_rib.c:4369,1
    - Dst: nexthop_group_add_sorted
      Src: /src/frr/zebra/zebra_rib.c:4378,1
    - Dst: rib_add_multipath
      Src: /src/frr/zebra/zebra_rib.c:4381,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4414,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_rib.c:4420,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4438,1
    - Dst: afi2str
      Src: /src/frr/zebra/zebra_rib.c:4439,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:4442,1
    - Dst: rib_update_event2str
      Src: /src/frr/zebra/zebra_rib.c:4443,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:4443,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4449,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4456,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:4456,1
    - Dst: rib_update_route_node
      Src: /src/frr/zebra/zebra_rib.c:4462,1
    - Dst: rib_update_route_node
      Src: /src/frr/zebra/zebra_rib.c:4466,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4479,1
    - Dst: rib_update_event2str
      Src: /src/frr/zebra/zebra_rib.c:4480,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4483,1
    - Dst: rib_update_table
      Src: /src/frr/zebra/zebra_rib.c:4484,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4497,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:4507,1
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_rib.c:4514,1
    - Dst: rib_update_handle_vrf_all
      Src: /src/frr/zebra/zebra_rib.c:4516,1
    - Dst: rib_update_ctx_fini
      Src: /src/frr/zebra/zebra_rib.c:4518,1
    - Dst: event_is_scheduled
      Src: /src/frr/zebra/zebra_rib.c:4532,1
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_rib.c:4535,1
    - Dst: rib_update_ctx_fini
      Src: /src/frr/zebra/zebra_rib.c:4537,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_rib.c:4538,1
    - Dst: event_is_scheduled
      Src: /src/frr/zebra/zebra_rib.c:4548,1
    - Dst: zebra_router_in_shutdown
      Src: /src/frr/zebra/zebra_rib.c:4551,1
    - Dst: rib_update_ctx_init
      Src: /src/frr/zebra/zebra_rib.c:4554,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_rib.c:4556,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4560,1
    - Dst: rib_update_event2str
      Src: /src/frr/zebra/zebra_rib.c:4561,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4576,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4578,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4578,1
    - Dst: route_entry_dump
      Src: /src/frr/zebra/zebra_rib.c:4582,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4584,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4587,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4616,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:4617,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4618,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:4620,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:4621,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4626,1
    - Dst: rib_sweep_route
      Src: /src/frr/zebra/zebra_rib.c:4630,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4635,1
    - Dst: rib_sweep_table
      Src: /src/frr/zebra/zebra_rib.c:4639,1
    - Dst: rib_sweep_table
      Src: /src/frr/zebra/zebra_rib.c:4640,1
    - Dst: zebra_router_sweep_route
      Src: /src/frr/zebra/zebra_rib.c:4643,1
    - Dst: zebra_router_sweep_nhgs
      Src: /src/frr/zebra/zebra_rib.c:4644,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4648,1
    - Dst: for
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: RNODE_FOREACH_RE_SAFE
      Src: /src/frr/zebra/zebra_rib.c:4658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4659,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:4663,1
    - Dst: rib_score_proto
      Src: /src/frr/zebra/zebra_rib.c:4671,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4678,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4683,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4685,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_rib.c:4689,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4690,1
    - Dst: rib_close_table
      Src: /src/frr/zebra/zebra_rib.c:4697,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4705,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4705,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:4706,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:4709,1
    - Dst: handle_pw_result
      Src: /src/frr/zebra/zebra_rib.c:4718,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:4726,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_rib.c:4729,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4730,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:4730,1
    - Dst: zebra_pw_find
      Src: /src/frr/zebra/zebra_rib.c:4731,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_rib.c:4731,1
    - Dst: zebra_pw_install_failure
      Src: /src/frr/zebra/zebra_rib.c:4733,1
    - Dst: dplane_ctx_get_pw_status
      Src: /src/frr/zebra/zebra_rib.c:4734,1
    - Dst: rib_process_dplane_results
      Src: /src/frr/zebra/zebra_rib.c:4742,1
    - Dst: frrscript_names_get_script_name
      Src: /src/frr/zebra/zebra_rib.c:4750,1
    - Dst: frrscript_new
      Src: /src/frr/zebra/zebra_rib.c:4756,1
    - Dst: frrscript_load
      Src: /src/frr/zebra/zebra_rib.c:4758,1
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/zebra_rib.c:4766,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zebra_rib.c:4769,1
    - Dst: dplane_ctx_list_append
      Src: /src/frr/zebra/zebra_rib.c:4771,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4775,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_rib.c:4784,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4790,1
    - Dst: frrscript_call
      Src: /src/frr/zebra/zebra_rib.c:4799,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:4804,1
    - Dst: dplane_ctx_get_notif_provider
      Src: /src/frr/zebra/zebra_rib.c:4813,1
    - Dst: rib_process_result
      Src: /src/frr/zebra/zebra_rib.c:4814,1
    - Dst: rib_process_dplane_notify
      Src: /src/frr/zebra/zebra_rib.c:4818,1
    - Dst: zebra_nhg_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4824,1
    - Dst: dplane_ctx_get_notif_provider
      Src: /src/frr/zebra/zebra_rib.c:4834,1
    - Dst: zebra_mpls_lsp_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4835,1
    - Dst: zebra_mpls_process_dplane_notify
      Src: /src/frr/zebra/zebra_rib.c:4839,1
    - Dst: handle_pw_result
      Src: /src/frr/zebra/zebra_rib.c:4844,1
    - Dst: zebra_vxlan_handle_result
      Src: /src/frr/zebra/zebra_rib.c:4853,1
    - Dst: zebra_pbr_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4865,1
    - Dst: zebra_if_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4874,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/zebra_rib.c:4906,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4907,1
    - Dst: frrscript_delete
      Src: /src/frr/zebra/zebra_rib.c:4914,1
    CyclomaticComplexity: 208
    EdgeCount: 208
    ICount: 721
    argCount: 1
    argNames:
    - ere
    argTypes:
    - struct zebra_early_route*
    assertStmts:
    - condition: (!src_p || !src_p->prefixlen || afi == AFI_IP6)
      pos:
        line_end: 4270
        line_start: 4270
        source_file: /src/frr/zebra/zebra_rib.c
    - condition: (ctx)
      pos:
        line_end: 3446
        line_start: 3446
        source_file: /src/frr/zebra/zebra_rib.c
    - condition: (new->subq[i])
      pos:
        line_end: 3676
        line_start: 3676
        source_file: /src/frr/zebra/zebra_rib.c
    - condition: (!ere->src_p.prefixlen || ere->afi == AFI_IP6)
      pos:
        line_end: 2907
        line_start: 2907
        source_file: /src/frr/zebra/zebra_rib.c
    - condition: (rn && re)
      pos:
        line_end: 3994
        line_start: 3994
        source_file: /src/frr/zebra/zebra_rib.c
    - condition: (rn)
      pos:
        line_end: 3427
        line_start: 3427
        source_file: /src/frr/zebra/zebra_rib.c
    - condition: (re && rn)
      pos:
        line_end: 3938
        line_start: 3938
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 4916
      start: 2896
    functionDepth: 7
    functionLinenumber: 2896
    functionLinenumberEnd: 4916
    functionName: process_subq_early_route_delete
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - zebra_mpls_lsp_dplane_result
    - RIB_SYSTEM_ROUTE
    - zebra_pw_find
    - dplane_ctx_list_append
    - rib_meta_queue_gr_run_add
    - listhead
    - route_top
    - rib_add_gr_run
    - afi2str
    - flog_err
    - zebra_add_import_table_entry
    - strlcat
    - frr_with_mutex
    - memset
    - XCALLOC
    - snprintf
    - rib_score_proto_table
    - frrscript_new
    - _route_entry_dump_nh
    - frrscript_load
    - rnh_list_init
    - if
    - listgetdata
    - early_route_meta_queue_free
    - zebra_gr_process_client
    - rib_dest_vrf
    - for
    - work_queue_new
    - zebra_mpls_process_dplane_notify
    - frrscript_delete
    - route_unlock_node
    - rib_uninstall_kernel
    - list_delete_node
    - rib_meta_queue_gr_run_free
    - EVENT_OFF
    - handle_pw_result
    - memcpy
    - rib_meta_queue_free
    - dplane_ctx_get_pw_status
    - zebra_vrf_lookup_table_with_table_id
    - dplane_ctx_get_vrf
    - work_queue_add
    - dplane_ctx_get_status
    - rib_close_table
    - process_subq_early_route_delete
    - mq_add_handler
    - list_new
    - nhg_ctx_free
    - ALL_LIST_ELEMENTS
    - evpn_meta_queue_free
    - rnode_debug
    - nexthop_group_nexthop_num
    - zebra_nhg_free
    - rib_update_event2str
    - rnode_to_ribs
    - rib_queue_add
    - dplane_ctx_get_op
    - if_lookup_by_index
    - zebra_pbr_dplane_result
    - frrscript_call
    - is_zebra_import_table_enabled
    - frrscript_names_get_script_name
    - inet_ntop
    - atomic_load_explicit
    - rib_update_route_node
    - zlog_backtrace
    - zapi_re_opaque_free
    - apply_mask_ipv6
    - zebra_del_import_table_entry
    - rib_dest_from_rnode
    - zebra_router_sweep_nhgs
    - re_list_add_head
    - rib_update_handle_vrf_all
    - dplane_sys_route_del
    - monotime
    - subq::subq
    - rib_delnode
    - zebra_get_import_table_route_map
    - process_subq_nhg
    - rib_score_proto
    - ALL_NEXTHOPS_PTR
    - rib_sweep_table
    - zebra_router_sweep_route
    - process_subq_early_route_add
    - zebra_vxlan_handle_result
    - rib_link
    - zebra_if_dplane_result
    - zebra_nhg_alloc
    - mpls_label2str
    - re_list_del
    - meta_queue_new
    - VRF_LOGNAME
    - RB_FOREACH
    - mq_add_func
    - event_add_event
    - switch
    - memcmp
    - rib_process_dplane_results
    - dplane_ctx_q_init
    - srcdest_rnode_lookup
    - nexthop_group_active_nexthop_num
    - process_subq
    - ALL_NEXTHOPS
    - subqueue2str
    - dplane_ctx_get_notif_provider
    - rib_process_result
    - dplane_ctx_get_ifname
    - zlog_debug
    - zebra_rib_route_entry_new
    - vrf_lookup_by_id
    - zebra_nhg_get_backup_nhg
    - assert
    - XCALLOC::XCALLOC
    - process_subq_gr_run
    - work_queue_empty
    - early_label_meta_queue_free
    - strlcpy
    - afi2family
    - nexthop_group_add_sorted
    - zebra_nhe_init
    - nexthop_dup
    - zebra_rib_create_dest
    - dplane_get_in_queue_len
    - XFREE
    - zclient_dump_route_flags
    - early_route_memory_free
    - route_lock_node
    - process_subq_early_label
    - vrf_id_to_name
    - zebra_router_in_shutdown
    - SET_FLAG
    - nhg_meta_queue_free
    - route_entry_dump
    - rib_add_multipath_nhe
    - prefix2str
    - rib_process_dplane_notify
    - list_delete
    - frr_each
    - rib_update_table
    - esi_to_str
    - listnode_add
    - rib_sweep_route
    - rib_meta_queue_early_route_add
    - process_subq_evpn
    - meta_queue_process
    - rib_update_ctx_fini
    - rib_re_nhg_free
    - rib_add_multipath
    - zebra_pw_install_failure
    - RNODE_FOREACH_RE_SAFE
    - EVENT_ARG
    - zebra_vrf_lookup_by_id
    - event_is_scheduled
    - nexthop_same_no_labels
    - RIB_ROUTE_QUEUED
    - apply_mask
    - process_subq_early_route
    - re_list_init
    - dplane_ctx_dequeue
    - zebra_rib_queue_evpn_route_del
    - UNSET_FLAG
    - zebra_route_string
    - _dump_re_status
    - srcdest_route_next
    - CHECK_FLAG
    - route_node_get_lock_count
    - rib_update_ctx_init
    - zebra_nhe_copy
    - dplane_ctx_fini
    - process_subq_route
    - rib_install_kernel
    - zebra_nhg_dplane_result
    linkageType: ''
    returnType: void
    signature: void process_subq_early_route_delete(struct zebra_early_route *ere)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2956,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:2963,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:2988,1
    - Dst: nexthop_same_no_labels
      Src: /src/frr/zebra/zebra_rib.c:2993,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3001
      start: 2955
    functionDepth: 1
    functionLinenumber: 2955
    functionLinenumberEnd: 3001
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 7
    functionsReached:
    - ALL_NEXTHOPS
    - CHECK_FLAG
    - nexthop_same_no_labels
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3276,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3276,1
    - Dst: RIB_ROUTE_QUEUED
      Src: /src/frr/zebra/zebra_rib.c:3277,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3279,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3281,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3285,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3285,1
    - Dst: RIB_ROUTE_QUEUED
      Src: /src/frr/zebra/zebra_rib.c:3285,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3286,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/zebra_rib.c:3287,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3291,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - mq
    - data
    argTypes:
    - struct meta_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3295
      start: 3255
    functionDepth: 1
    functionLinenumber: 3255
    functionLinenumberEnd: 3295
    functionName: rib_meta_queue_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - RIB_ROUTE_QUEUED
    - route_lock_node
    - subqueue2str
    - CHECK_FLAG
    - rnode_debug
    - listnode_add
    - SET_FLAG
    - rib_dest_from_rnode
    linkageType: ''
    returnType: int
    signature: int rib_meta_queue_add(struct meta_queue *mq, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3270
      start: 3263
    functionDepth: 0
    functionLinenumber: 3263
    functionLinenumberEnd: 3270
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, curr_re)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - mq
    - data
    argTypes:
    - struct meta_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3302
      start: 3297
    functionDepth: 1
    functionLinenumber: 3297
    functionLinenumberEnd: 3302
    functionName: early_label_meta_queue_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - listnode_add
    linkageType: ''
    returnType: int
    signature: int early_label_meta_queue_add(struct meta_queue *mq, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3315,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3320,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3324,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - mq
    - data
    argTypes:
    - struct meta_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3328
      start: 3304
    functionDepth: 1
    functionLinenumber: 3304
    functionLinenumberEnd: 3328
    functionName: rib_meta_queue_nhg_ctx_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - subqueue2str
    - zlog_debug
    - listnode_add
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int rib_meta_queue_nhg_ctx_add(struct meta_queue *mq, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3341,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3346,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3350,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:3351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - mq
    - data
    argTypes:
    - struct meta_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3354
      start: 3330
    functionDepth: 1
    functionLinenumber: 3330
    functionLinenumberEnd: 3354
    functionName: rib_meta_queue_nhg_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - subqueue2str
    - zlog_debug
    - listnode_add
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int rib_meta_queue_nhg_add(struct meta_queue *mq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:3358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - mq
    - data
    argTypes:
    - struct meta_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3362
      start: 3356
    functionDepth: 1
    functionLinenumber: 3356
    functionLinenumberEnd: 3362
    functionName: rib_meta_queue_evpn_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - listnode_add
    linkageType: ''
    returnType: int
    signature: int rib_meta_queue_evpn_add(struct meta_queue *mq, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:3368,1
    - Dst: work_queue_empty
      Src: /src/frr/zebra/zebra_rib.c:3381,1
    - Dst: work_queue_add
      Src: /src/frr/zebra/zebra_rib.c:3382,1
    - Dst: mq_add_func
      Src: /src/frr/zebra/zebra_rib.c:3384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3385
      start: 3364
    functionDepth: 1
    functionLinenumber: 3364
    functionLinenumberEnd: 3385
    functionName: mq_add_handler
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - work_queue_empty
    - flog_err
    - work_queue_add
    - mq_add_func
    linkageType: ''
    returnType: int
    signature: "int mq_add_handler(void *data,\n\t\t\t  int (*mq_add_func)(struct
      meta_queue *mq, void *data))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3393,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3403,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - zvrf
    - type
    - prefix
    - route_type
    - route_instance
    argTypes:
    - struct zebra_vrf*
    - enum lsp_types_t
    - struct prefix*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3406
      start: 3387
    functionDepth: 2
    functionLinenumber: 3387
    functionLinenumberEnd: 3406
    functionName: mpls_ftn_uninstall
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void mpls_ftn_uninstall(struct zebra_vrf *zvrf, enum lsp_types_t type,\n\t\t\tstruct
      prefix *prefix, uint8_t route_type,\n\t\t\tuint8_t route_instance)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3413,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3420,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - add_p
    - zvrf
    - zl
    argTypes:
    - bool
    - struct zebra_vrf*
    - struct zapi_labels*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3423
      start: 3408
    functionDepth: 2
    functionLinenumber: 3408
    functionLinenumberEnd: 3423
    functionName: mpls_zapi_labels_process
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 4
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void mpls_zapi_labels_process(bool add_p, struct zebra_vrf *zvrf,\n\t\t\t
      \     const struct zapi_labels *zl)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3428,1
    - Dst: rnode_to_ribs
      Src: /src/frr/zebra/zebra_rib.c:3432,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3433,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/zebra/zebra_rib.c:3434,1
    - Dst: zlog_backtrace
      Src: /src/frr/zebra/zebra_rib.c:3435,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts:
    - condition: (rn)
      pos:
        line_end: 3427
        line_start: 3427
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 3440
      start: 3426
    functionDepth: 2
    functionLinenumber: 3426
    functionLinenumberEnd: 3440
    functionName: rib_queue_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 6
    functionsReached:
    - route_node_get_lock_count
    - zlog_debug
    - mq_add_handler
    - zlog_backtrace
    - rnode_to_ribs
    - assert
    linkageType: ''
    returnType: int
    signature: int rib_queue_add(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3447,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts:
    - condition: (ctx)
      pos:
        line_end: 3446
        line_start: 3446
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 3450
      start: 3445
    functionDepth: 2
    functionLinenumber: 3445
    functionLinenumberEnd: 3450
    functionName: rib_queue_nhg_ctx_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - mq_add_handler
    - assert
    linkageType: ''
    returnType: int
    signature: int rib_queue_nhg_ctx_add(struct nhg_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3461
      start: 3455
    functionDepth: 2
    functionLinenumber: 3455
    functionLinenumberEnd: 3461
    functionName: rib_queue_nhe_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - mq_add_handler
    linkageType: ''
    returnType: int
    signature: int rib_queue_nhe_add(struct nhg_hash_entry *nhe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3472,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3482,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - vrf_id
    - rmac
    - vtep_ip
    - host_prefix
    argTypes:
    - vrf_id_t
    - struct ethaddr*
    - struct ipaddr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3486
      start: 3466
    functionDepth: 2
    functionLinenumber: 3466
    functionLinenumberEnd: 3486
    functionName: zebra_rib_queue_evpn_route_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_route_add(vrf_id_t vrf_id, const struct ethaddr
      *rmac,\n\t\t\t\t   const struct ipaddr *vtep_ip,\n\t\t\t\t   const struct prefix
      *host_prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3494,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3503,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3506,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - vrf_id
    - vtep_ip
    - host_prefix
    argTypes:
    - vrf_id_t
    - struct ipaddr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3507
      start: 3488
    functionDepth: 2
    functionLinenumber: 3488
    functionLinenumberEnd: 3507
    functionName: zebra_rib_queue_evpn_route_del
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_route_del(vrf_id_t vrf_id,\n\t\t\t\t   const
      struct ipaddr *vtep_ip,\n\t\t\t\t   const struct prefix *host_prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3518,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3530,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_rib.c:3531,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - esi
    - vtep_ip
    - esr_rxed
    - df_alg
    - df_pref
    argTypes:
    - esi_t*
    - struct in_addr*
    - bool
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3534
      start: 3510
    functionDepth: 2
    functionLinenumber: 3510
    functionLinenumberEnd: 3534
    functionName: zebra_rib_queue_evpn_rem_es_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - esi_to_str
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_rem_es_add(const esi_t *esi,\n\t\t\t\t    const
      struct in_addr *vtep_ip,\n\t\t\t\t    bool esr_rxed, uint8_t df_alg,\n\t\t\t\t
      \   uint16_t df_pref)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3542,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_rib.c:3551,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_rib.c:3552,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_rib.c:3554,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3556,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - esi
    - vtep_ip
    argTypes:
    - esi_t*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3561
      start: 3536
    functionDepth: 2
    functionLinenumber: 3536
    functionLinenumberEnd: 3561
    functionName: zebra_rib_queue_evpn_rem_es_del
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - strlcpy
    - esi_to_str
    - memcmp
    - zlog_debug
    - mq_add_handler
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_rem_es_del(const esi_t *esi,\n\t\t\t\t    const
      struct in_addr *vtep_ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3574,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_rib.c:3587,1
    - Dst: esi_to_str
      Src: /src/frr/zebra/zebra_rib.c:3588,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_rib.c:3590,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3592,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 7
    argNames:
    - vni
    - macaddr
    - ipaddr
    - flags
    - seq
    - vtep_ip
    - esi
    argTypes:
    - vni_t
    - struct ethaddr*
    - struct ipaddr*
    - uint8_t
    - uint32_t
    - struct in_addr
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3597
      start: 3566
    functionDepth: 2
    functionLinenumber: 3566
    functionLinenumberEnd: 3597
    functionName: zebra_rib_queue_evpn_rem_macip_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    - strlcpy
    - esi_to_str
    - memcmp
    - zlog_debug
    - mq_add_handler
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_rem_macip_add(vni_t vni, const struct ethaddr
      *macaddr,\n\t\t\t\t       const struct ipaddr *ipaddr,\n\t\t\t\t       uint8_t
      flags, uint32_t seq,\n\t\t\t\t       struct in_addr vtep_ip, const esi_t *esi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3605,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3615,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - vni
    - macaddr
    - ip
    - vtep_ip
    argTypes:
    - vni_t
    - struct ethaddr*
    - struct ipaddr*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3619
      start: 3599
    functionDepth: 2
    functionLinenumber: 3599
    functionLinenumberEnd: 3619
    functionName: zebra_rib_queue_evpn_rem_macip_del
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_rem_macip_del(vni_t vni, const struct ethaddr
      *macaddr,\n\t\t\t\t       const struct ipaddr *ip,\n\t\t\t\t       struct in_addr
      vtep_ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3629,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3639,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - vrf_id
    - vni
    - vtep_ip
    - flood_control
    argTypes:
    - vrf_id_t
    - vni_t
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3643
      start: 3624
    functionDepth: 2
    functionLinenumber: 3624
    functionLinenumberEnd: 3643
    functionName: zebra_rib_queue_evpn_rem_vtep_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_rem_vtep_add(vrf_id_t vrf_id, vni_t vni,\n\t\t\t\t
      \     struct in_addr vtep_ip, int flood_control)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3650,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:3659,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:3662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - vrf_id
    - vni
    - vtep_ip
    argTypes:
    - vrf_id_t
    - vni_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3663
      start: 3645
    functionDepth: 2
    functionLinenumber: 3645
    functionLinenumberEnd: 3663
    functionName: zebra_rib_queue_evpn_rem_vtep_del
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - mq_add_handler
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int zebra_rib_queue_evpn_rem_vtep_del(vrf_id_t vrf_id, vni_t vni,\n\t\t\t\t
      \     struct in_addr vtep_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3673,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_rib.c:3676,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3677,1
    - Dst: subq::subq
      Src: /src/frr/zebra/zebra_rib.c:3677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (new->subq[i])
      pos:
        line_end: 3676
        line_start: 3676
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 3681
      start: 3668
    functionDepth: 1
    functionLinenumber: 3668
    functionLinenumberEnd: 3681
    functionName: meta_queue_new
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - XCALLOC::XCALLOC
    - list_new
    - assert
    - subq::subq
    linkageType: ''
    returnType: struct meta_queue
    signature: struct meta_queue *meta_queue_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3691,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3701,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3703,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - mq
    - l
    - zvrf
    argTypes:
    - struct meta_queue*
    - struct list*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3706
      start: 3684
    functionDepth: 1
    functionLinenumber: 3684
    functionLinenumberEnd: 3706
    functionName: evpn_meta_queue_free
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - list_delete_node
    - ALL_LIST_ELEMENTS
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void evpn_meta_queue_free(struct meta_queue *mq, struct list *l,\n\t\t\t\t
      struct zebra_vrf *zvrf)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3716,1
    - Dst: nhg_ctx_free
      Src: /src/frr/zebra/zebra_rib.c:3728,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_rib.c:3730,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3733,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3735,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 3
    argNames:
    - mq
    - l
    - zvrf
    argTypes:
    - struct meta_queue*
    - struct list*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3738
      start: 3709
    functionDepth: 1
    functionLinenumber: 3709
    functionLinenumberEnd: 3738
    functionName: nhg_meta_queue_free
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - list_delete_node
    - nhg_ctx_free
    - XFREE
    - zebra_nhg_free
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void nhg_meta_queue_free(struct meta_queue *mq, struct list *l,\n\t\t\t\tstruct
      zebra_vrf *zvrf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3746,1
    - Dst: switch
      Src: /src/frr/zebra/zebra_rib.c:3750,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3757,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3758,1
    - Dst: rib_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3763,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3770,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_rib.c:3772,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_rib.c:3775,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3777,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - mq
    - l
    - zvrf
    argTypes:
    - struct meta_queue*
    - struct list*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3780
      start: 3740
    functionDepth: 3
    functionLinenumber: 3740
    functionLinenumberEnd: 3780
    functionName: early_label_meta_queue_free
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - rib_meta_queue_free
    - switch
    - route_unlock_node
    - list_delete_node
    - XFREE
    - ALL_LIST_ELEMENTS
    - rib_dest_from_rnode
    - rib_dest_vrf
    linkageType: ''
    returnType: void
    signature: "void early_label_meta_queue_free(struct meta_queue *mq, struct list
      *l,\n\t\t\t\t\tstruct zebra_vrf *zvrf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zebra_rib.c:3788,1
    - Dst: early_route_memory_free
      Src: /src/frr/zebra/zebra_rib.c:3792,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3794,1
    - Dst: rib_meta_queue_gr_run_free
      Src: /src/frr/zebra/zebra_rib.c:3799,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3809,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_rib.c:3811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - mq
    - l
    - zvrf
    argTypes:
    - struct meta_queue*
    - struct list*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3814
      start: 3782
    functionDepth: 2
    functionLinenumber: 3782
    functionLinenumberEnd: 3814
    functionName: early_route_meta_queue_free
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - list_delete_node
    - rib_meta_queue_gr_run_free
    - XFREE
    - ALL_LIST_ELEMENTS
    - early_route_memory_free
    linkageType: ''
    returnType: void
    signature: "void early_route_meta_queue_free(struct meta_queue *mq, struct list
      *l,\n\t\t\t\t\tstruct zebra_vrf *zvrf)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: nhg_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3824,1
    - Dst: evpn_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3827,1
    - Dst: early_route_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3830,1
    - Dst: early_label_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3833,1
    - Dst: rib_meta_queue_free
      Src: /src/frr/zebra/zebra_rib.c:3841,1
    - Dst: rib_meta_queue_gr_run_free
      Src: /src/frr/zebra/zebra_rib.c:3844,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_rib.c:3848,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:3852,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - mq
    - zvrf
    argTypes:
    - struct meta_queue*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3853
      start: 3816
    functionDepth: 4
    functionLinenumber: 3816
    functionLinenumberEnd: 3853
    functionName: meta_queue_free
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 6
    functionsReached:
    - rib_meta_queue_free
    - list_delete
    - evpn_meta_queue_free
    - early_label_meta_queue_free
    - rib_meta_queue_gr_run_free
    - XFREE
    - early_route_meta_queue_free
    - nhg_meta_queue_free
    linkageType: ''
    returnType: void
    signature: void meta_queue_free(struct meta_queue *mq, struct zebra_vrf *zvrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: work_queue_new
      Src: /src/frr/zebra/zebra_rib.c:3858,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:3860,1
    - Dst: meta_queue_new
      Src: /src/frr/zebra/zebra_rib.c:3873,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_rib.c:3874,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3879
      start: 3856
    functionDepth: 2
    functionLinenumber: 3856
    functionLinenumberEnd: 3879
    functionName: rib_queue_init
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - flog_err
    - meta_queue_new
    - work_queue_new
    linkageType: ''
    returnType: void
    signature: void rib_queue_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:3885,1
    - Dst: rnh_list_init
      Src: /src/frr/zebra/zebra_rib.c:3886,1
    - Dst: re_list_init
      Src: /src/frr/zebra/zebra_rib.c:3887,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/zebra_rib.c:3888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3893
      start: 3881
    functionDepth: 1
    functionLinenumber: 3881
    functionLinenumberEnd: 3893
    functionName: zebra_rib_create_dest
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - route_lock_node
    - re_list_init
    - rnh_list_init
    - XCALLOC
    linkageType: ''
    returnType: rib_dest_t
    signature: rib_dest_t *zebra_rib_create_dest(struct route_node *rn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3939,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:3941,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3944,1
    - Dst: zebra_rib_create_dest
      Src: /src/frr/zebra/zebra_rib.c:3946,1
    - Dst: re_list_add_head
      Src: /src/frr/zebra/zebra_rib.c:3949,1
    - Dst: is_zebra_import_table_enabled
      Src: /src/frr/zebra/zebra_rib.c:3954,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:3955,1
    - Dst: zebra_get_import_table_route_map
      Src: /src/frr/zebra/zebra_rib.c:3957,1
    - Dst: zebra_add_import_table_entry
      Src: /src/frr/zebra/zebra_rib.c:3958,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_rib.c:3962,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - rn
    - re
    - process
    argTypes:
    - struct route_node*
    - struct route_entry*
    - int
    assertStmts:
    - condition: (re && rn)
      pos:
        line_end: 3938
        line_start: 3938
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 3963
      start: 3933
    functionDepth: 3
    functionLinenumber: 3933
    functionLinenumberEnd: 3963
    functionName: rib_link
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - zebra_add_import_table_entry
    - rib_queue_add
    - re_list_add_head
    - is_zebra_import_table_enabled
    - rnode_debug
    - zebra_rib_create_dest
    - zebra_vrf_lookup_by_id
    - zebra_get_import_table_route_map
    - rib_dest_from_rnode
    - assert
    linkageType: ''
    returnType: void
    signature: void rib_link(struct route_node *rn, struct route_entry *re, int process)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3971,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3973,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:3976,1
    - Dst: rib_link
      Src: /src/frr/zebra/zebra_rib.c:3979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - rn
    - re
    - process
    argTypes:
    - struct route_node*
    - struct route_entry*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3980
      start: 3965
    functionDepth: 4
    functionLinenumber: 3965
    functionLinenumberEnd: 3980
    functionName: rib_addnode
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - UNSET_FLAG
    - rib_link
    - rnode_debug
    linkageType: ''
    returnType: void
    signature: "void rib_addnode(struct route_node *rn,\n\t\t\tstruct route_entry
      *re, int process)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:3995,1
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:3998,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:4001,1
    - Dst: re_list_del
      Src: /src/frr/zebra/zebra_rib.c:4003,1
    - Dst: rib_re_nhg_free
      Src: /src/frr/zebra/zebra_rib.c:4008,1
    - Dst: zapi_re_opaque_free
      Src: /src/frr/zebra/zebra_rib.c:4010,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:4012,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - rn
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    assertStmts:
    - condition: (rn && re)
      pos:
        line_end: 3994
        line_start: 3994
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 4013
      start: 3991
    functionDepth: 3
    functionLinenumber: 3991
    functionLinenumberEnd: 4013
    functionName: rib_unlink
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 7
    functionsReached:
    - rib_re_nhg_free
    - rnode_debug
    - re_list_del
    - zapi_re_opaque_free
    - XFREE
    - rib_dest_from_rnode
    - assert
    linkageType: ''
    returnType: void
    signature: void rib_unlink(struct route_node *rn, struct route_entry *re)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rnode_debug
      Src: /src/frr/zebra/zebra_rib.c:4020,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4022,1
    - Dst: is_zebra_import_table_enabled
      Src: /src/frr/zebra/zebra_rib.c:4027,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4028,1
    - Dst: zebra_del_import_table_entry
      Src: /src/frr/zebra/zebra_rib.c:4030,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4033,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zebra_rib.c:4034,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:4035,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_rib.c:4038,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - rn
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4039
      start: 4015
    functionDepth: 3
    functionLinenumber: 4015
    functionLinenumberEnd: 4039
    functionName: rib_delnode
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - rib_queue_add
    - zebra_vrf_lookup_by_id
    - vrf_id_to_name
    - is_zebra_import_table_enabled
    - rnode_debug
    - SET_FLAG
    - zlog_debug
    - zebra_del_import_table_entry
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void rib_delnode(struct route_node *rn, struct route_entry *re)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4055,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4059,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_rib.c:4062,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4063,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rib.c:4069,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_rib.c:4073,1
    - Dst: mpls_label2str
      Src: /src/frr/zebra/zebra_rib.c:4080,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_rib.c:4084,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4088,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4089,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4091,1
    - Dst: strlcat
      Src: /src/frr/zebra/zebra_rib.c:4093,1
    - Dst: snprintf
      Src: /src/frr/zebra/zebra_rib.c:4099,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4101,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4106,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4109,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4112,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4115,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4121,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4123,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4125,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4127,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 3
    argNames:
    - re
    - straddr
    - nexthop
    argTypes:
    - struct route_entry*
    - char*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4130
      start: 4044
    functionDepth: 1
    functionLinenumber: 4044
    functionLinenumberEnd: 4130
    functionName: _route_entry_dump_nh
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - strlcat
    - if_lookup_by_index
    - snprintf
    - CHECK_FLAG
    - mpls_label2str
    - inet_ntop
    - zlog_debug
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: "void _route_entry_dump_nh(const struct route_entry *re,\n\t\t\t\t
      const char *straddr,\n\t\t\t\t const struct nexthop *nexthop)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4147,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_rib.c:4150,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4152,1
    - Dst: prefix2str
      Src: /src/frr/zebra/zebra_rib.c:4155,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:4157,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4158,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4161,1
    - Dst: zclient_dump_route_flags
      Src: /src/frr/zebra/zebra_rib.c:4164,1
    - Dst: _dump_re_status
      Src: /src/frr/zebra/zebra_rib.c:4166,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4167,1
    - Dst: nexthop_group_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:4168,1
    - Dst: nexthop_group_active_nexthop_num
      Src: /src/frr/zebra/zebra_rib.c:4169,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:4172,1
    - Dst: _route_entry_dump_nh
      Src: /src/frr/zebra/zebra_rib.c:4173,1
    - Dst: if
      Src: /src/frr/zebra/zebra_rib.c:4175,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:4175,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4176,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_rib.c:4178,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_rib.c:4179,1
    - Dst: _route_entry_dump_nh
      Src: /src/frr/zebra/zebra_rib.c:4180,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4183,1
    - Dst: rib_meta_queue_gr_run_add
      Src: /src/frr/zebra/zebra_rib.c:4186,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:4188,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4192,1
    - Dst: rib_meta_queue_early_route_add
      Src: /src/frr/zebra/zebra_rib.c:4197,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_rib.c:4201,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4205,1
    - Dst: subqueue2str
      Src: /src/frr/zebra/zebra_rib.c:4208,1
    - Dst: rib_add_gr_run
      Src: /src/frr/zebra/zebra_rib.c:4213,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4217,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:4224,1
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/zebra_rib.c:4227,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4236,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_rib.c:4245,1
    - Dst: rib_add_multipath_nhe
      Src: /src/frr/zebra/zebra_rib.c:4262,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:4271,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4273,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:4284,1
    - Dst: rib_add_multipath
      Src: /src/frr/zebra/zebra_rib.c:4290,1
    - Dst: zebra_nhe_init
      Src: /src/frr/zebra/zebra_rib.c:4307,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_rib.c:4313,1
    - Dst: rib_add_multipath_nhe
      Src: /src/frr/zebra/zebra_rib.c:4314,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:4318,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - func
    - pp
    - src_pp
    - re
    argTypes:
    - char*
    - union prefixconstptr
    - union prefixconstptr
    - struct route_entry*
    assertStmts:
    - condition: (!src_p || !src_p->prefixlen || afi == AFI_IP6)
      pos:
        line_end: 4270
        line_start: 4270
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 4321
      start: 4136
    functionDepth: 2
    functionLinenumber: 4136
    functionLinenumberEnd: 4321
    functionName: _route_entry_dump
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - rib_meta_queue_gr_run_add
    - listnode_add
    - rib_add_gr_run
    - nexthop_group_nexthop_num
    - rib_meta_queue_early_route_add
    - nexthop_group_active_nexthop_num
    - rib_add_multipath
    - XCALLOC
    - ALL_NEXTHOPS
    - subqueue2str
    - _route_entry_dump_nh
    - zlog_debug
    - zebra_rib_route_entry_new
    - vrf_lookup_by_id
    - if
    - zebra_nhg_get_backup_nhg
    - assert
    - monotime
    - zebra_nhe_init
    - zclient_dump_route_flags
    - XFREE
    - ALL_NEXTHOPS_PTR
    - _dump_re_status
    - mq_add_handler
    - zebra_nhe_copy
    - VRF_LOGNAME
    - rib_add_multipath_nhe
    linkageType: ''
    returnType: void
    signature: "void _route_entry_dump(const char *func, union prefixconstptr pp,\n\t\t
      \      union prefixconstptr src_pp,\n\t\t       const struct route_entry *re)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/zebra_rib.c:4333,1
    - Dst: zebra_nhg_alloc
      Src: /src/frr/zebra/zebra_rib.c:4337,1
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_rib.c:4338,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4341,1
    - Dst: mq_add_handler
      Src: /src/frr/zebra/zebra_rib.c:4354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 14
    argNames:
    - afi
    - safi
    - vrf_id
    - type
    - instance
    - flags
    - p
    - src_p
    - nh
    - nhe_id
    - table_id
    - metric
    - distance
    - fromkernel
    argTypes:
    - afi_t
    - safi_t
    - vrf_id_t
    - int
    - unsigned short
    - uint32_t
    - struct prefix*
    - struct prefix_ipv6*
    - struct nexthop*
    - uint32_t
    - uint32_t
    - uint32_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4355
      start: 4323
    functionDepth: 2
    functionLinenumber: 4323
    functionLinenumberEnd: 4355
    functionName: rib_delete
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 4
    functionsReached:
    - XCALLOC
    - zebra_nhg_alloc
    - nexthop_dup
    - mq_add_handler
    - zebra_rib_route_entry_new
    linkageType: ''
    returnType: void
    signature: "void rib_delete(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,\n\t\tunsigned
      short instance, uint32_t flags, struct prefix *p,\n\t\tstruct prefix_ipv6 *src_p,
      const struct nexthop *nh,\n\t\tuint32_t nhe_id, uint32_t table_id, uint32_t
      metric,\n\t\tuint8_t distance, bool fromkernel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/zebra_rib.c:4369,1
    - Dst: nexthop_group_add_sorted
      Src: /src/frr/zebra/zebra_rib.c:4378,1
    - Dst: rib_add_multipath
      Src: /src/frr/zebra/zebra_rib.c:4381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 16
    argNames:
    - afi
    - safi
    - vrf_id
    - type
    - instance
    - flags
    - p
    - src_p
    - nh
    - nhe_id
    - table_id
    - metric
    - mtu
    - distance
    - tag
    - startup
    argTypes:
    - afi_t
    - safi_t
    - vrf_id_t
    - int
    - unsigned short
    - uint32_t
    - struct prefix*
    - struct prefix_ipv6*
    - struct nexthop*
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint8_t
    - route_tag_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4382
      start: 4358
    functionDepth: 1
    functionLinenumber: 4358
    functionLinenumberEnd: 4382
    functionName: rib_add
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - rib_add_multipath
    - zebra_rib_route_entry_new
    - nexthop_group_add_sorted
    linkageType: ''
    returnType: int
    signature: "int rib_add(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,\n\t
      \   unsigned short instance, uint32_t flags, struct prefix *p,\n\t    struct
      prefix_ipv6 *src_p, const struct nexthop *nh,\n\t    uint32_t nhe_id, uint32_t
      table_id, uint32_t metric, uint32_t mtu,\n\t    uint8_t distance, route_tag_t
      tag, bool startup)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - event
    argTypes:
    - enum rib_update_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4403
      start: 4384
    functionDepth: 0
    functionLinenumber: 4384
    functionLinenumberEnd: 4403
    functionName: rib_update_event2str
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rib_update_event2str(enum rib_update_event event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4414,1
    - Dst: rib_queue_add
      Src: /src/frr/zebra/zebra_rib.c:4420,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - rn
    - type
    argTypes:
    - struct route_node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4421
      start: 4407
    functionDepth: 3
    functionLinenumber: 4407
    functionLinenumberEnd: 4421
    functionName: rib_update_route_node
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - rib_queue_add
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void rib_update_route_node(struct route_node *rn, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4414,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4417
      start: 4412
    functionDepth: 1
    functionLinenumber: 4412
    functionLinenumberEnd: 4417
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE_SAFE (rn, re, next)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4438,1
    - Dst: afi2str
      Src: /src/frr/zebra/zebra_rib.c:4439,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_rib.c:4442,1
    - Dst: rib_update_event2str
      Src: /src/frr/zebra/zebra_rib.c:4443,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_rib.c:4443,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4449,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4456,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:4456,1
    - Dst: rib_update_route_node
      Src: /src/frr/zebra/zebra_rib.c:4462,1
    - Dst: rib_update_route_node
      Src: /src/frr/zebra/zebra_rib.c:4466,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - table
    - event
    - rtype
    argTypes:
    - struct route_table*
    - enum rib_update_event
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4472
      start: 4424
    functionDepth: 4
    functionLinenumber: 4424
    functionLinenumberEnd: 4472
    functionName: rib_update_table
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 4
    functionsReached:
    - zebra_route_string
    - srcdest_route_next
    - CHECK_FLAG
    - route_top
    - afi2str
    - zlog_debug
    - rib_update_route_node
    - VRF_LOGNAME
    - rib_update_event2str
    - rib_dest_from_rnode
    linkageType: ''
    returnType: void
    signature: "void rib_update_table(struct route_table *table, enum rib_update_event
      event,\n\t\t      int rtype)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4479,1
    - Dst: rib_update_event2str
      Src: /src/frr/zebra/zebra_rib.c:4480,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4483,1
    - Dst: rib_update_table
      Src: /src/frr/zebra/zebra_rib.c:4484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - event
    - rtype
    argTypes:
    - enum rib_update_event
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4485
      start: 4474
    functionDepth: 5
    functionLinenumber: 4474
    functionLinenumberEnd: 4485
    functionName: rib_update_handle_vrf_all
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - rib_update_event2str
    - rib_update_table
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void rib_update_handle_vrf_all(enum rib_update_event event, int rtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_rib.c:4497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vrf_id
    - event
    argTypes:
    - vrf_id_t
    - enum rib_update_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4503
      start: 4492
    functionDepth: 0
    functionLinenumber: 4492
    functionLinenumberEnd: 4503
    functionName: rib_update_ctx_init
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rib_update_ctx
    signature: "struct rib_update_ctx *rib_update_ctx_init(vrf_id_t vrf_id,\n\t\t\t\t\t\t
      \ enum rib_update_event event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_rib.c:4507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct rib_update_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4508
      start: 4505
    functionDepth: 0
    functionLinenumber: 4505
    functionLinenumberEnd: 4508
    functionName: rib_update_ctx_fini
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rib_update_ctx_fini(struct rib_update_ctx **ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_rib.c:4514,1
    - Dst: rib_update_handle_vrf_all
      Src: /src/frr/zebra/zebra_rib.c:4516,1
    - Dst: rib_update_ctx_fini
      Src: /src/frr/zebra/zebra_rib.c:4518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4519
      start: 4510
    functionDepth: 6
    functionLinenumber: 4510
    functionLinenumberEnd: 4519
    functionName: rib_update_handler
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - rib_update_handle_vrf_all
    - rib_update_ctx_fini
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void rib_update_handler(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_is_scheduled
      Src: /src/frr/zebra/zebra_rib.c:4532,1
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_rib.c:4535,1
    - Dst: rib_update_ctx_fini
      Src: /src/frr/zebra/zebra_rib.c:4537,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_rib.c:4538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4541
      start: 4527
    functionDepth: 1
    functionLinenumber: 4527
    functionLinenumberEnd: 4541
    functionName: rib_update_finish
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 1
    functionsReached:
    - event_is_scheduled
    - EVENT_OFF
    - rib_update_ctx_fini
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void rib_update_finish(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_is_scheduled
      Src: /src/frr/zebra/zebra_rib.c:4548,1
    - Dst: zebra_router_in_shutdown
      Src: /src/frr/zebra/zebra_rib.c:4551,1
    - Dst: rib_update_ctx_init
      Src: /src/frr/zebra/zebra_rib.c:4554,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_rib.c:4556,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4560,1
    - Dst: rib_update_event2str
      Src: /src/frr/zebra/zebra_rib.c:4561,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - event
    argTypes:
    - enum rib_update_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4562
      start: 4544
    functionDepth: 2
    functionLinenumber: 4544
    functionLinenumberEnd: 4562
    functionName: rib_update
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 5
    functionsReached:
    - zebra_router_in_shutdown
    - rib_update_ctx_init
    - zlog_debug
    - event_is_scheduled
    - rib_update_event2str
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void rib_update(enum rib_update_event event)
  - BBCount: 64
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4576,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4578,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4578,1
    - Dst: route_entry_dump
      Src: /src/frr/zebra/zebra_rib.c:4582,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4584,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4587,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4616,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:4617,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4618,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:4620,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:4621,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4626,1
    - Dst: rib_sweep_route
      Src: /src/frr/zebra/zebra_rib.c:4630,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4635,1
    - Dst: rib_sweep_table
      Src: /src/frr/zebra/zebra_rib.c:4639,1
    - Dst: rib_sweep_table
      Src: /src/frr/zebra/zebra_rib.c:4640,1
    - Dst: zebra_router_sweep_route
      Src: /src/frr/zebra/zebra_rib.c:4643,1
    - Dst: zebra_router_sweep_nhgs
      Src: /src/frr/zebra/zebra_rib.c:4644,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4648,1
    - Dst: for
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: RNODE_FOREACH_RE_SAFE
      Src: /src/frr/zebra/zebra_rib.c:4658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4659,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:4663,1
    - Dst: rib_score_proto
      Src: /src/frr/zebra/zebra_rib.c:4671,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4678,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4683,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4685,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_rib.c:4689,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4690,1
    - Dst: rib_close_table
      Src: /src/frr/zebra/zebra_rib.c:4697,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4705,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4705,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:4706,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:4709,1
    - Dst: handle_pw_result
      Src: /src/frr/zebra/zebra_rib.c:4718,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:4726,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_rib.c:4729,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4730,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:4730,1
    - Dst: zebra_pw_find
      Src: /src/frr/zebra/zebra_rib.c:4731,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_rib.c:4731,1
    - Dst: zebra_pw_install_failure
      Src: /src/frr/zebra/zebra_rib.c:4733,1
    - Dst: dplane_ctx_get_pw_status
      Src: /src/frr/zebra/zebra_rib.c:4734,1
    - Dst: rib_process_dplane_results
      Src: /src/frr/zebra/zebra_rib.c:4742,1
    - Dst: frrscript_names_get_script_name
      Src: /src/frr/zebra/zebra_rib.c:4750,1
    - Dst: frrscript_new
      Src: /src/frr/zebra/zebra_rib.c:4756,1
    - Dst: frrscript_load
      Src: /src/frr/zebra/zebra_rib.c:4758,1
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/zebra_rib.c:4766,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zebra_rib.c:4769,1
    - Dst: dplane_ctx_list_append
      Src: /src/frr/zebra/zebra_rib.c:4771,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4775,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_rib.c:4784,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4790,1
    - Dst: frrscript_call
      Src: /src/frr/zebra/zebra_rib.c:4799,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:4804,1
    - Dst: dplane_ctx_get_notif_provider
      Src: /src/frr/zebra/zebra_rib.c:4813,1
    - Dst: rib_process_result
      Src: /src/frr/zebra/zebra_rib.c:4814,1
    - Dst: rib_process_dplane_notify
      Src: /src/frr/zebra/zebra_rib.c:4818,1
    - Dst: zebra_nhg_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4824,1
    - Dst: dplane_ctx_get_notif_provider
      Src: /src/frr/zebra/zebra_rib.c:4834,1
    - Dst: zebra_mpls_lsp_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4835,1
    - Dst: zebra_mpls_process_dplane_notify
      Src: /src/frr/zebra/zebra_rib.c:4839,1
    - Dst: handle_pw_result
      Src: /src/frr/zebra/zebra_rib.c:4844,1
    - Dst: zebra_vxlan_handle_result
      Src: /src/frr/zebra/zebra_rib.c:4853,1
    - Dst: zebra_pbr_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4865,1
    - Dst: zebra_if_dplane_result
      Src: /src/frr/zebra/zebra_rib.c:4874,1
    - Dst: dplane_ctx_fini
      Src: /src/frr/zebra/zebra_rib.c:4906,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4907,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 106
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4910
      start: 4565
    functionDepth: 6
    functionLinenumber: 4565
    functionLinenumberEnd: 4910
    functionName: rib_sweep_table
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - rib_process_dplane_notify
    - zebra_mpls_lsp_dplane_result
    - frr_each
    - zebra_pw_find
    - dplane_ctx_list_append
    - route_top
    - rib_process_dplane_results
    - rib_sweep_route
    - dplane_ctx_q_init
    - zebra_pw_install_failure
    - dplane_ctx_get_op
    - frr_with_mutex
    - zebra_pbr_dplane_result
    - rib_score_proto_table
    - ALL_NEXTHOPS
    - frrscript_call
    - frrscript_new
    - dplane_ctx_get_notif_provider
    - frrscript_load
    - rib_process_result
    - dplane_ctx_get_ifname
    - frrscript_names_get_script_name
    - zlog_debug
    - atomic_load_explicit
    - RNODE_FOREACH_RE_SAFE
    - zebra_vrf_lookup_by_id
    - for
    - rib_dest_from_rnode
    - zebra_mpls_process_dplane_notify
    - zebra_router_sweep_nhgs
    - dplane_ctx_dequeue
    - rib_uninstall_kernel
    - rib_delnode
    - handle_pw_result
    - rib_score_proto
    - rib_sweep_table
    - zebra_router_sweep_route
    - zebra_vxlan_handle_result
    - dplane_ctx_get_pw_status
    - dplane_ctx_get_vrf
    - srcdest_route_next
    - zebra_if_dplane_result
    - CHECK_FLAG
    - dplane_ctx_get_status
    - rib_close_table
    - SET_FLAG
    - dplane_ctx_fini
    - route_entry_dump
    - RB_FOREACH
    - zebra_nhg_dplane_result
    linkageType: ''
    returnType: void
    signature: void rib_sweep_table(struct route_table *table)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_entry_dump
      Src: /src/frr/zebra/zebra_rib.c:4582,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4584,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4587,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4616,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_rib.c:4617,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4618,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:4620,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:4621,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_rib.c:4626,1
    - Dst: rib_sweep_route
      Src: /src/frr/zebra/zebra_rib.c:4630,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4635,1
    - Dst: rib_sweep_table
      Src: /src/frr/zebra/zebra_rib.c:4639,1
    - Dst: rib_sweep_table
      Src: /src/frr/zebra/zebra_rib.c:4640,1
    - Dst: zebra_router_sweep_route
      Src: /src/frr/zebra/zebra_rib.c:4643,1
    - Dst: zebra_router_sweep_nhgs
      Src: /src/frr/zebra/zebra_rib.c:4644,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4648,1
    - Dst: for
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4657,1
    - Dst: RNODE_FOREACH_RE_SAFE
      Src: /src/frr/zebra/zebra_rib.c:4658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_rib.c:4659,1
    - Dst: rib_delnode
      Src: /src/frr/zebra/zebra_rib.c:4663,1
    - Dst: rib_score_proto
      Src: /src/frr/zebra/zebra_rib.c:4671,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_rib.c:4678,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4683,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4685,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_rib.c:4689,1
    - Dst: rib_score_proto_table
      Src: /src/frr/zebra/zebra_rib.c:4690,1
    - Dst: rib_close_table
      Src: /src/frr/zebra/zebra_rib.c:4697,1
    - Dst: route_top
      Src: /src/frr/zebra/zebra_rib.c:4705,1
    - Dst: srcdest_route_next
      Src: /src/frr/zebra/zebra_rib.c:4705,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_rib.c:4706,1
    - Dst: rib_uninstall_kernel
      Src: /src/frr/zebra/zebra_rib.c:4709,1
    - Dst: handle_pw_result
      Src: /src/frr/zebra/zebra_rib.c:4718,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_rib.c:4726,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_rib.c:4729,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4730,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/zebra_rib.c:4730,1
    - Dst: zebra_pw_find
      Src: /src/frr/zebra/zebra_rib.c:4731,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/zebra_rib.c:4731,1
    - Dst: zebra_pw_install_failure
      Src: /src/frr/zebra/zebra_rib.c:4733,1
    - Dst: dplane_ctx_get_pw_status
      Src: /src/frr/zebra/zebra_rib.c:4734,1
    - Dst: rib_process_dplane_results
      Src: /src/frr/zebra/zebra_rib.c:4742,1
    - Dst: frrscript_names_get_script_name
      Src: /src/frr/zebra/zebra_rib.c:4750,1
    - Dst: frrscript_new
      Src: /src/frr/zebra/zebra_rib.c:4756,1
    - Dst: frrscript_load
      Src: /src/frr/zebra/zebra_rib.c:4758,1
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/zebra_rib.c:4766,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zebra_rib.c:4769,1
    - Dst: dplane_ctx_list_append
      Src: /src/frr/zebra/zebra_rib.c:4771,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4775,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zebra_rib.c:4784,1
    - Dst: dplane_ctx_dequeue
      Src: /src/frr/zebra/zebra_rib.c:4790,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4791
      start: 4579
    functionDepth: 7
    functionLinenumber: 4579
    functionLinenumberEnd: 4791
    functionName: RNODE_FOREACH_RE_SAFE
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 5
    functionsReached:
    - frr_each
    - zebra_pw_find
    - dplane_ctx_list_append
    - route_top
    - rib_process_dplane_results
    - rib_sweep_route
    - dplane_ctx_q_init
    - zebra_pw_install_failure
    - dplane_ctx_get_op
    - frr_with_mutex
    - rib_score_proto_table
    - ALL_NEXTHOPS
    - frrscript_new
    - frrscript_load
    - dplane_ctx_get_ifname
    - frrscript_names_get_script_name
    - zlog_debug
    - atomic_load_explicit
    - RNODE_FOREACH_RE_SAFE
    - zebra_vrf_lookup_by_id
    - for
    - rib_dest_from_rnode
    - zebra_router_sweep_nhgs
    - dplane_ctx_dequeue
    - rib_uninstall_kernel
    - rib_delnode
    - handle_pw_result
    - rib_score_proto
    - rib_sweep_table
    - zebra_router_sweep_route
    - dplane_ctx_get_pw_status
    - dplane_ctx_get_vrf
    - srcdest_route_next
    - CHECK_FLAG
    - dplane_ctx_get_status
    - rib_close_table
    - SET_FLAG
    - route_entry_dump
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE_SAFE (rn, re, next)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_append
      Src: /src/frr/zebra/zebra_rib.c:4928,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zebra_rib.c:4932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctxlist
    argTypes:
    - struct dplane_ctx_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4936
      start: 4923
    functionDepth: 1
    functionLinenumber: 4923
    functionLinenumberEnd: 4936
    functionName: rib_dplane_results
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_list_append
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int rib_dplane_results(struct dplane_ctx_list_head *ctxlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_list_append
      Src: /src/frr/zebra/zebra_rib.c:4928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4929
      start: 4926
    functionDepth: 1
    functionLinenumber: 4926
    functionLinenumberEnd: 4929
    functionName: (&dplane_mutex)
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_list_append
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&dplane_mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/zebra/zebra_rib.c:4944,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:4953,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_rib.c:4955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (route_info[i].meta_q_map < MQ_SIZE)
      pos:
        line_end: 4954
        line_start: 4954
        source_file: /src/frr/zebra/zebra_rib.c
    - condition: "(route_info[i].key >= ZEBRA_ROUTE_SYSTEM &&\n\t\t       route_info[i].key
        < ZEBRA_ROUTE_MAX)"
      pos:
        line_end: 4953
        line_start: 4952
        source_file: /src/frr/zebra/zebra_rib.c
    constantsTouched: []
    func_position:
      end: 4957
      start: 4942
    functionDepth: 1
    functionLinenumber: 4942
    functionLinenumberEnd: 4957
    functionName: check_route_info
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - array_size
    - assert
    linkageType: ''
    returnType: void
    signature: void check_route_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_route_info
      Src: /src/frr/zebra/zebra_rib.c:4962,1
    - Dst: rib_queue_init
      Src: /src/frr/zebra/zebra_rib.c:4964,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/zebra_rib.c:4967,1
    - Dst: dplane_ctx_q_init
      Src: /src/frr/zebra/zebra_rib.c:4968,1
    - Dst: zebra_dplane_init
      Src: /src/frr/zebra/zebra_rib.c:4969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4970
      start: 4960
    functionDepth: 5
    functionLinenumber: 4960
    functionLinenumberEnd: 4970
    functionName: rib_init
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 2
    functionsReached:
    - pthread_mutex_init
    - dplane_ctx_q_init
    - check_route_info
    - zebra_dplane_init
    - rib_queue_init
    linkageType: ''
    returnType: void
    signature: void rib_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_rib.c:4983,1
    - Dst: RB_NEXT
      Src: /src/frr/zebra/zebra_rib.c:4985,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - vrf_id
    - next_id_p
    argTypes:
    - vrf_id_t
    - vrf_id_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4993
      start: 4979
    functionDepth: 1
    functionLinenumber: 4979
    functionLinenumberEnd: 4993
    functionName: vrf_id_get_next
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 0
    functionsReached:
    - RB_NEXT
    - vrf_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int vrf_id_get_next(vrf_id_t vrf_id, vrf_id_t *next_id_p)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/zebra/zebra_rib.c:5032,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_rib.c:5033,1
    - Dst: vrf_id_get_next
      Src: /src/frr/zebra/zebra_rib.c:5054,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 1
    argNames:
    - iter
    argTypes:
    - rib_tables_iter_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5072
      start: 5000
    functionDepth: 2
    functionLinenumber: 5000
    functionLinenumberEnd: 5072
    functionName: rib_tables_iter_next
    functionSourceFile: /src/frr/zebra/zebra_rib.c
    functionUses: 3
    functionsReached:
    - zebra_vrf_table
    - array_size
    - vrf_id_get_next
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *rib_tables_iter_next(rib_tables_iter_t *iter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/irdp_main.c:72,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/irdp_main.c:78,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_main.c:79,1
    - Dst: setsockopt
      Src: /src/frr/zebra/irdp_main.c:84,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/irdp_main.c:86,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_main.c:87,1
    - Dst: close
      Src: /src/frr/zebra/irdp_main.c:88,1
    - Dst: setsockopt_ifindex
      Src: /src/frr/zebra/irdp_main.c:92,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/irdp_main.c:94,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/irdp_main.c:95,1
    - Dst: close
      Src: /src/frr/zebra/irdp_main.c:96,1
    - Dst: event_add_read
      Src: /src/frr/zebra/irdp_main.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 103
    functionName: irdp_sock_init
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 1
    functionsReached:
    - socket
    - close
    - safe_strerror
    - event_add_read
    - flog_err_sys
    - setsockopt
    - setsockopt_ifindex
    linkageType: ''
    returnType: int
    signature: int irdp_sock_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/zebra/irdp_main.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 0
    functionsReached:
    - socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/irdp_main.c:116,1
    - Dst: get_pref
      Src: /src/frr/zebra/irdp_main.c:133,1
    - Dst: stream_putc
      Src: /src/frr/zebra/irdp_main.c:135,1
    - Dst: stream_putc
      Src: /src/frr/zebra/irdp_main.c:136,1
    - Dst: stream_putw
      Src: /src/frr/zebra/irdp_main.c:137,1
    - Dst: stream_putc
      Src: /src/frr/zebra/irdp_main.c:138,1
    - Dst: stream_putc
      Src: /src/frr/zebra/irdp_main.c:139,1
    - Dst: if
      Src: /src/frr/zebra/irdp_main.c:141,1
    - Dst: stream_putw
      Src: /src/frr/zebra/irdp_main.c:142,1
    - Dst: stream_putw
      Src: /src/frr/zebra/irdp_main.c:144,1
    - Dst: stream_putl
      Src: /src/frr/zebra/irdp_main.c:146,1
    - Dst: htonl
      Src: /src/frr/zebra/irdp_main.c:146,1
    - Dst: stream_putl
      Src: /src/frr/zebra/irdp_main.c:147,1
    - Dst: in_cksum
      Src: /src/frr/zebra/irdp_main.c:151,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/irdp_main.c:152,1
    - Dst: htons
      Src: /src/frr/zebra/irdp_main.c:152,1
    - Dst: irdp_send
      Src: /src/frr/zebra/irdp_main.c:157,1
    - Dst: htonl
      Src: /src/frr/zebra/irdp_main.c:172,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_main.c:175,1
    - Dst: get_pref
      Src: /src/frr/zebra/irdp_main.c:179,1
    - Dst: send_packet
      Src: /src/frr/zebra/irdp_main.c:181,1
    - Dst: irdp_advertisement
      Src: /src/frr/zebra/irdp_main.c:184,1
    - Dst: stream_new
      Src: /src/frr/zebra/irdp_main.c:187,1
    - Dst: make_advertisement_packet
      Src: /src/frr/zebra/irdp_main.c:188,1
    - Dst: irdp_send
      Src: /src/frr/zebra/irdp_main.c:189,1
    - Dst: stream_free
      Src: /src/frr/zebra/irdp_main.c:190,1
    - Dst: irdp_send_thread
      Src: /src/frr/zebra/irdp_main.c:193,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/irdp_main.c:209,1
    - Dst: if
      Src: /src/frr/zebra/irdp_main.c:212,1
    - Dst: irdp_advertisement
      Src: /src/frr/zebra/irdp_main.c:215,1
    - Dst: frr_weak_random
      Src: /src/frr/zebra/irdp_main.c:220,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/irdp_main.c:228,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/irdp_main.c:232,1
    - Dst: irdp_advert_off
      Src: /src/frr/zebra/irdp_main.c:236,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/irdp_main.c:248,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/irdp_main.c:251,1
    - Dst: for
      Src: /src/frr/zebra/irdp_main.c:258,1
    - Dst: irdp_advertisement
      Src: /src/frr/zebra/irdp_main.c:260,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - irdp
    - p
    argTypes:
    - struct irdp_interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 262
    functionName: get_pref
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 1
    functionsReached:
    - make_advertisement_packet
    - htons
    - in_cksum
    - htonl
    - stream_putc
    - irdp_advert_off
    - frr_weak_random
    - ALL_LIST_ELEMENTS_RO
    - stream_putw_at
    - zlog_debug
    - irdp_send
    - send_packet
    - if
    - get_pref
    - for
    - stream_free
    - EVENT_OFF
    - event_add_timer
    - irdp_send_thread
    - stream_new
    - irdp_advertisement
    - stream_putw
    - ALL_LIST_ELEMENTS
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int get_pref(struct irdp_interface *irdp, struct prefix *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/irdp_main.c:283,1
    - Dst: frr_weak_random
      Src: /src/frr/zebra/irdp_main.c:285,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/irdp_main.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 290
    functionName: process_solicit
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    - frr_weak_random
    linkageType: ''
    returnType: void
    signature: void process_solicit(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/irdp_main.c:299,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/irdp_main.c:301,1
    - Dst: irdp_advert_off
      Src: /src/frr/zebra/irdp_main.c:313,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 317
    functionName: irdp_finish
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - RB_FOREACH
    - irdp_advert_off
    linkageType: ''
    returnType: int
    signature: int irdp_finish(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: irdp_advert_off
      Src: /src/frr/zebra/irdp_main.c:313,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 315
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 22
    functionsReached:
    - irdp_advert_off
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: irdp_if_init
      Src: /src/frr/zebra/irdp_main.c:321,1
    - Dst: hook_register
      Src: /src/frr/zebra/irdp_main.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 325
    functionName: irdp_init
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 0
    functionsReached:
    - irdp_if_init
    - hook_register
    linkageType: ''
    returnType: int
    signature: int irdp_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/irdp_main.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 331
    functionName: irdp_module_init
    functionSourceFile: /src/frr/zebra/irdp_main.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int irdp_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: IS_RULE_FILTERING_ON_SRC_IP
    functionSourceFile: /src/frr/zebra/zebra_pbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_FILTERING_ON_SRC_IP(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: IS_RULE_FILTERING_ON_DST_IP
    functionSourceFile: /src/frr/zebra/zebra_pbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_FILTERING_ON_DST_IP(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: IS_RULE_FILTERING_ON_SRC_PORT
    functionSourceFile: /src/frr/zebra/zebra_pbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_FILTERING_ON_SRC_PORT(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: IS_RULE_FILTERING_ON_DST_PORT
    functionSourceFile: /src/frr/zebra/zebra_pbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_FILTERING_ON_DST_PORT(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: IS_RULE_FILTERING_ON_DSFIELD
    functionSourceFile: /src/frr/zebra/zebra_pbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_FILTERING_ON_DSFIELD(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: IS_RULE_FILTERING_ON_FWMARK
    functionSourceFile: /src/frr/zebra/zebra_pbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_FILTERING_ON_FWMARK(r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn.h:138,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_evpn.h:143,1
    - Dst: zvni_map_to_svi
      Src: /src/frr/zebra/zebra_evpn.h:146,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 147
    functionName: zevpn_map_to_svi
    functionSourceFile: /src/frr/zebra/zebra_evpn.h
    functionUses: 2
    functionsReached:
    - if_is_operative
    - zebra_vxlan_if_vni_find
    - zvni_map_to_svi
    linkageType: ''
    returnType: struct interface
    signature: struct interface *zevpn_map_to_svi(struct zebra_evpn *zevpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - rtm_family
    - nexthop_type
    argTypes:
    - unsigned char
    - enum nexthop_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 107
    functionName: is_route_v4_over_v6
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool is_route_v4_over_v6(unsigned char rtm_family,\n\t\t\t\tenum nexthop_types_t
      nexthop_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/rt_netlink.c:112,1
    - Dst: zebra_nhg_kernel_nexthops_enabled
      Src: /src/frr/zebra/rt_netlink.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: kernel_nexthops_supported
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_kernel_nexthops_enabled
    - vrf_is_backend_netns
    linkageType: ''
    returnType: bool
    signature: bool kernel_nexthops_supported(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_proto_nexthops_only
      Src: /src/frr/zebra/rt_netlink.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: proto_nexthops_only
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 2
    functionsReached:
    - zebra_nhg_proto_nexthops_only
    linkageType: ''
    returnType: bool
    signature: bool proto_nexthops_only(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - id
    - type
    argTypes:
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: is_proto_nhg
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_proto_nhg(uint32_t id, int type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_zero_mac
      Src: /src/frr/zebra/rt_netlink.c:148,1
    - Dst: IN_MULTICAST
      Src: /src/frr/zebra/rt_netlink.c:151,1
    - Dst: ntohl
      Src: /src/frr/zebra/rt_netlink.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - mac
    - vni
    - grp_addr
    argTypes:
    - struct ethaddr*
    - vni_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 155
    functionName: is_mac_vni_mcast_group
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - IN_MULTICAST
    - ntohl
    - is_zero_mac
    linkageType: ''
    returnType: bool
    signature: "bool is_mac_vni_mcast_group(struct ethaddr *mac, vni_t vni,\n\t\t\t\t
      \  struct in_addr grp_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/zebra/rt_netlink.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 166
    functionName: rt_netlink_init
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - inet_pton
    linkageType: ''
    returnType: void
    signature: void rt_netlink_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - dplane_flags
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 183
    functionName: neigh_flags_to_netlink
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t neigh_flags_to_netlink(uint8_t dplane_flags)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - dplane_state
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 208
    functionName: neigh_state_to_netlink
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t neigh_state_to_netlink(uint16_t dplane_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 5
    argCount: 1
    argNames:
    - proto
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 225
    functionName: is_selfroute
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_selfroute(int proto)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:288,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    argCount: 1
    argNames:
    - proto
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 296
    functionName: zebra2proto
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int zebra2proto(int proto)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:374,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 72
    argCount: 3
    argNames:
    - proto
    - family
    - is_nexthop
    argTypes:
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 381
    functionName: proto2zebra
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int proto2zebra(int proto, int family, bool is_nexthop)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/rt_netlink.c:391,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/rt_netlink.c:396,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rt_netlink.c:397,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rt_netlink.c:398,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rt_netlink.c:403,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - table_id
    - ns_id
    argTypes:
    - uint32_t
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 408
    functionName: vrf_lookup_by_table
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - zvrf_id
    - vrf_is_backend_netns
    - RB_FOREACH
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t vrf_lookup_by_table(uint32_t table_id, ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/rt_netlink.c:427,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:428,1
    - Dst: mpls_lse_decode
      Src: /src/frr/zebra/rt_netlink.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - tb
    - labels
    argTypes:
    - struct rtattr*
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 435
    functionName: parse_encap_mpls
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - netlink_parse_rtattr_nested
    - mpls_lse_decode
    linkageType: ''
    returnType: int
    signature: int parse_encap_mpls(struct rtattr *tb, mpls_label_t *labels)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/rt_netlink.c:444,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:447,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:450,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:454,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:458,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:462,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - tb
    - ctx
    argTypes:
    - struct rtattr*
    - struct seg6local_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 465
    functionName: parse_encap_seg6local
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - netlink_parse_rtattr_nested
    linkageType: ''
    returnType: enum seg6local_action_t
    signature: "enum seg6local_action_t parse_encap_seg6local(struct rtattr *tb,\n\t\t
      \     struct seg6local_context *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/rt_netlink.c:473,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - tb
    - segs
    argTypes:
    - struct rtattr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 487
    functionName: parse_encap_seg6
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_DATA
    - netlink_parse_rtattr_nested
    linkageType: ''
    returnType: int
    signature: int parse_encap_seg6(struct rtattr *tb, struct in6_addr *segs)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:526,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:528,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/rt_netlink.c:531,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:531,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:538,1
    - Dst: parse_encap_mpls
      Src: /src/frr/zebra/rt_netlink.c:540,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:543,1
    - Dst: parse_encap_seg6local
      Src: /src/frr/zebra/rt_netlink.c:545,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:548,1
    - Dst: parse_encap_seg6
      Src: /src/frr/zebra/rt_netlink.c:550,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rt_netlink.c:554,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rt_netlink.c:557,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/rt_netlink.c:560,1
    - Dst: nexthop_add_srv6_seg6local
      Src: /src/frr/zebra/rt_netlink.c:563,1
    - Dst: nexthop_add_srv6_seg6
      Src: /src/frr/zebra/rt_netlink.c:566,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 46
    argCount: 9
    argNames:
    - ns_id
    - rtm
    - tb
    - bh_type
    - index
    - prefsrc
    - gate
    - afi
    - vrf_id
    argTypes:
    - ns_id_t
    - struct rtmsg*
    - struct rtattr**
    - enum blackhole_type
    - int
    - void*
    - void*
    - afi_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 490
    functionDepth: 4
    functionLinenumber: 490
    functionLinenumberEnd: 569
    functionName: parse_nexthop_unicast
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index_per_ns
    - nexthop_add_labels
    - parse_encap_mpls
    - RTA_DATA
    - SET_FLAG
    - nexthop_add_srv6_seg6local
    - nexthop_add_srv6_seg6
    - parse_encap_seg6
    - parse_encap_seg6local
    - memcpy
    - zebra_ns_lookup
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop parse_nexthop_unicast(ns_id_t ns_id, struct rtmsg *rtm,
      struct rtattr **tb,\n\t\t      enum blackhole_type bh_type, int index, void
      *prefsrc,\n\t\t      void *gate, afi_t afi, vrf_id_t vrf_id)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:590,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/rt_netlink.c:607,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:607,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:612,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/rt_netlink.c:622,1
    - Dst: RTNH_DATA
      Src: /src/frr/zebra/rt_netlink.c:622,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:625,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:627,1
    - Dst: parse_encap_mpls
      Src: /src/frr/zebra/rt_netlink.c:629,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:633,1
    - Dst: parse_encap_seg6local
      Src: /src/frr/zebra/rt_netlink.c:635,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:639,1
    - Dst: parse_encap_seg6
      Src: /src/frr/zebra/rt_netlink.c:641,1
    - Dst: nexthop_from_ipv4_ifindex
      Src: /src/frr/zebra/rt_netlink.c:648,1
    - Dst: nexthop_from_ipv4
      Src: /src/frr/zebra/rt_netlink.c:651,1
    - Dst: nexthop_from_ipv6_ifindex
      Src: /src/frr/zebra/rt_netlink.c:655,1
    - Dst: nexthop_from_ipv6
      Src: /src/frr/zebra/rt_netlink.c:658,1
    - Dst: nexthop_from_ifindex
      Src: /src/frr/zebra/rt_netlink.c:660,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/rt_netlink.c:666,1
    - Dst: nexthop_add_srv6_seg6local
      Src: /src/frr/zebra/rt_netlink.c:670,1
    - Dst: nexthop_add_srv6_seg6
      Src: /src/frr/zebra/rt_netlink.c:674,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rt_netlink.c:677,1
    - Dst: nexthop_group_add_sorted
      Src: /src/frr/zebra/rt_netlink.c:680,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:686,1
    - Dst: RTNH_NEXT
      Src: /src/frr/zebra/rt_netlink.c:687,1
    - Dst: nexthop_group_nexthop_num
      Src: /src/frr/zebra/rt_netlink.c:690,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 57
    argCount: 7
    argNames:
    - ns_id
    - ng
    - rtm
    - rtnh
    - tb
    - prefsrc
    - vrf_id
    argTypes:
    - ns_id_t
    - struct nexthop_group*
    - struct rtmsg*
    - struct rtnexthop*
    - struct rtattr**
    - void*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 571
    functionDepth: 4
    functionLinenumber: 571
    functionLinenumberEnd: 693
    functionName: parse_multipath_nexthops_unicast
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_parse_rtattr
    - if_lookup_by_index_per_ns
    - RTA_DATA
    - nexthop_group_nexthop_num
    - nexthop_from_ipv6_ifindex
    - parse_encap_seg6local
    - RTNH_NEXT
    - nexthop_from_ipv6
    - flog_warn
    - nexthop_add_srv6_seg6
    - parse_encap_seg6
    - RTA_PAYLOAD
    - zebra_ns_lookup
    - RTNH_DATA
    - nexthop_group_add_sorted
    - nexthop_from_ifindex
    - NLMSG_ALIGN
    - nexthop_from_ipv4_ifindex
    - parse_encap_mpls
    - SET_FLAG
    - nexthop_add_srv6_seg6local
    - nexthop_add_labels
    - nexthop_from_ipv4
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t parse_multipath_nexthops_unicast(ns_id_t ns_id,\n\t\t\t\t\t\tstruct
      nexthop_group *ng,\n\t\t\t\t\t\tstruct rtmsg *rtm,\n\t\t\t\t\t\tstruct rtnexthop
      *rtnh,\n\t\t\t\t\t\tstruct rtattr **tb,\n\t\t\t\t\t\tvoid *prefsrc, vrf_id_t
      vrf_id)"
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/rt_netlink.c:726,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:729,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:747,1
    - Dst: nl_rttype_to_str
      Src: /src/frr/zebra/rt_netlink.c:748,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:753,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:755,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:758,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/rt_netlink.c:762,1
    - Dst: RTM_RTA
      Src: /src/frr/zebra/rt_netlink.c:762,1
    - Dst: is_selfroute
      Src: /src/frr/zebra/rt_netlink.c:771,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:776,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:788,1
    - Dst: vrf_lookup_by_table
      Src: /src/frr/zebra/rt_netlink.c:793,1
    - Dst: is_zebra_valid_kernel_table
      Src: /src/frr/zebra/rt_netlink.c:795,1
    - Dst: is_zebra_main_routing_table
      Src: /src/frr/zebra/rt_netlink.c:796,1
    - Dst: proto2zebra
      Src: /src/frr/zebra/rt_netlink.c:813,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:816,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:819,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:824,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:829,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:832,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:835,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:838,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:842,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/rt_netlink.c:848,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:848,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:849,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:852,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:858,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:863,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:867,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:879,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:884,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:889,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:894,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:899,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:929,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:931,1
    - Dst: prefix2str
      Src: /src/frr/zebra/rt_netlink.c:933,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/rt_netlink.c:935,1
    - Dst: zebra_rib_route_entry_new
      Src: /src/frr/zebra/rt_netlink.c:947,1
    - Dst: nexthop_group_new
      Src: /src/frr/zebra/rt_netlink.c:951,1
    - Dst: parse_nexthop_unicast
      Src: /src/frr/zebra/rt_netlink.c:957,1
    - Dst: nexthop_new
      Src: /src/frr/zebra/rt_netlink.c:961,1
    - Dst: nexthop_group_add_sorted
      Src: /src/frr/zebra/rt_netlink.c:963,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:968,1
    - Dst: parse_multipath_nexthops_unicast
      Src: /src/frr/zebra/rt_netlink.c:977,1
    - Dst: zserv_nexthop_num_warn
      Src: /src/frr/zebra/rt_netlink.c:981,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/rt_netlink.c:986,1
    - Dst: dplane_rib_add_multipath
      Src: /src/frr/zebra/rt_netlink.c:992,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/rt_netlink.c:995,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:1004,1
    - Dst: XFREE
      Src: /src/frr/zebra/rt_netlink.c:1007,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:1011,1
    - Dst: rib_delete
      Src: /src/frr/zebra/rt_netlink.c:1018,1
    - Dst: parse_nexthop_unicast
      Src: /src/frr/zebra/rt_netlink.c:1025,1
    - Dst: rib_delete
      Src: /src/frr/zebra/rt_netlink.c:1028,1
    - Dst: rib_delete
      Src: /src/frr/zebra/rt_netlink.c:1034,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 174
    argCount: 4
    argNames:
    - h
    - ns_id
    - startup
    - ctx
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 696
    functionDepth: 5
    functionLinenumber: 696
    functionLinenumberEnd: 1042
    functionName: netlink_route_change_read_unicast_internal
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - proto2zebra
    - netlink_parse_rtattr
    - RTM_RTA
    - vrf_lookup_by_table
    - RTA_DATA
    - frrtrace
    - zserv_nexthop_num_warn
    - flog_warn
    - nexthop_group_new
    - nl_rttype_to_str
    - NLMSG_DATA
    - nexthop_group_delete
    - zlog_debug
    - zebra_rib_route_entry_new
    - parse_nexthop_unicast
    - rib_delete
    - RTA_PAYLOAD
    - is_zebra_valid_kernel_table
    - zlog_err
    - nexthop_new
    - nexthop_group_add_sorted
    - XFREE
    - NLMSG_LENGTH
    - memcpy
    - dplane_rib_add_multipath
    - parse_multipath_nexthops_unicast
    - is_zebra_main_routing_table
    - is_selfroute
    - vrf_id_to_name
    - nl_msg_type_to_str
    linkageType: ''
    returnType: int
    signature: "int netlink_route_change_read_unicast_internal(struct nlmsghdr *h,\n\t\t\t\t\t
      \      ns_id_t ns_id, int startup,\n\t\t\t\t\t       struct zebra_dplane_ctx
      *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_route_change_read_unicast_internal
      Src: /src/frr/zebra/rt_netlink.c:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1044
    functionDepth: 6
    functionLinenumber: 1044
    functionLinenumberEnd: 1049
    functionName: netlink_route_change_read_unicast
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_route_change_read_unicast_internal
    linkageType: ''
    returnType: int
    signature: "int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t
      ns_id,\n\t\t\t\t\t     int startup)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/rt_netlink.c:1068,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:1071,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:1073,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/rt_netlink.c:1075,1
    - Dst: RTM_RTA
      Src: /src/frr/zebra/rt_netlink.c:1075,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1078,1
    - Dst: vrf_lookup_by_table
      Src: /src/frr/zebra/rt_netlink.c:1082,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1085,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1090,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1093,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1099,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1102,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1106,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:1110,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:1112,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:1123,1
    - Dst: RTNH_NEXT
      Src: /src/frr/zebra/rt_netlink.c:1124,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/rt_netlink.c:1129,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/rt_netlink.c:1130,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/zebra/rt_netlink.c:1132,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/zebra/rt_netlink.c:1133,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rt_netlink.c:1135,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/rt_netlink.c:1144,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:1147,1
    - Dst: strlcat
      Src: /src/frr/zebra/rt_netlink.c:1149,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/rt_netlink.c:1151,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/rt_netlink.c:1152,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1153,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/rt_netlink.c:1155,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:1155,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts:
    - condition: (mroute)
      pos:
        line_end: 1067
        line_start: 1067
        source_file: /src/frr/zebra/rt_netlink.c
    constantsTouched: []
    func_position:
      end: 1160
      start: 1053
    functionDepth: 2
    functionLinenumber: 1053
    functionLinenumberEnd: 1160
    functionName: netlink_route_change_read_multicast
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_parse_rtattr
    - RTM_RTA
    - vrf_lookup_by_table
    - zlog_warn
    - RTA_DATA
    - RTNH_NEXT
    - SET_IPADDR_V4
    - strlcat
    - if_lookup_by_index
    - snprintf
    - NLMSG_DATA
    - zlog_debug
    - zebra_vrf_lookup_by_id
    - RTA_PAYLOAD
    - assert
    - zvrf_name
    - NLMSG_ALIGN
    - NLMSG_LENGTH
    - SET_IPADDR_V6
    - nl_msg_type_to_str
    linkageType: ''
    returnType: int
    signature: "int netlink_route_change_read_multicast(struct nlmsghdr *h,\n\t\t\t\t\t
      \      ns_id_t ns_id, int startup)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:1167,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1171,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:1172,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:1189,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:1192,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1198,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:1199,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:1200,1
    - Dst: nl_rttype_to_str
      Src: /src/frr/zebra/rt_netlink.c:1201,1
    - Dst: nl_rtproto_to_str
      Src: /src/frr/zebra/rt_netlink.c:1202,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:1205,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:1207,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:1210,1
    - Dst: netlink_route_change_read_unicast
      Src: /src/frr/zebra/rt_netlink.c:1221,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1162
    functionDepth: 7
    functionLinenumber: 1162
    functionLinenumberEnd: 1223
    functionName: netlink_route_change
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - NLMSG_LENGTH
    - flog_warn
    - nl_rtproto_to_str
    - nl_rttype_to_str
    - NLMSG_DATA
    - zlog_err
    - zlog_debug
    - nl_msg_type_to_str
    - netlink_route_change_read_unicast
    - nl_family_to_str
    linkageType: ''
    returnType: int
    signature: int netlink_route_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:1234,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:1237,1
    - Dst: netlink_request
      Src: /src/frr/zebra/rt_netlink.c:1240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - zns
    - family
    - type
    argTypes:
    - struct zebra_ns*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1226
    functionDepth: 3
    functionLinenumber: 1226
    functionLinenumberEnd: 1241
    functionName: netlink_request_route
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: int netlink_request_route(struct zebra_ns *zns, int family, int type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:1250,1
    - Dst: netlink_request_route
      Src: /src/frr/zebra/rt_netlink.c:1253,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:1256,1
    - Dst: netlink_request_route
      Src: /src/frr/zebra/rt_netlink.c:1262,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:1265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1245
    functionDepth: 5
    functionLinenumber: 1245
    functionLinenumberEnd: 1271
    functionName: netlink_route_read
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_request_route
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int netlink_route_read(struct zebra_ns *zns)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:1288,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:1290,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1291,1
    - Dst: IS_MAPPED_IPV6
      Src: /src/frr/zebra/rt_netlink.c:1296,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1298,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1302,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 6
    argNames:
    - route_family
    - gw_family
    - nlmsg
    - req_size
    - bytelen
    - nexthop
    argTypes:
    - uint8_t
    - uint8_t
    - struct nlmsghdr*
    - size_t
    - int
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1277
    functionDepth: 2
    functionLinenumber: 1277
    functionLinenumberEnd: 1310
    functionName: _netlink_route_add_gateway_info
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put
    - IS_MAPPED_IPV6
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_route_add_gateway_info(uint8_t route_family,\n\t\t\t\t\t
      \   uint8_t gw_family,\n\t\t\t\t\t    struct nlmsghdr *nlmsg,\n\t\t\t\t\t    size_t
      req_size, int bytelen,\n\t\t\t\t\t    const struct nexthop *nexthop)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:1327,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:1330,1
    - Dst: strlcat
      Src: /src/frr/zebra/rt_netlink.c:1332,1
    - Dst: label2vni
      Src: /src/frr/zebra/rt_netlink.c:1337,1
    - Dst: mpls_lse_encode
      Src: /src/frr/zebra/rt_netlink.c:1340,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 5
    argNames:
    - nh_label
    - nh_label_type
    - out_lse
    - label_buf
    - label_buf_size
    argTypes:
    - struct mpls_label_stack*
    - enum lsp_types_t
    - mpls_lse_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1345
    functionName: build_label_stack
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - strlcat
    - mpls_lse_encode
    - label2vni
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int build_label_stack(struct mpls_label_stack *nh_label,\n\t\t\t     enum
      lsp_types_t nh_label_type,\n\t\t\t     mpls_lse_t *out_lse, char *label_buf,\n\t\t\t
      \    size_t label_buf_size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put64
      Src: /src/frr/zebra/rt_netlink.c:1354,1
    - Dst: htonll
      Src: /src/frr/zebra/rt_netlink.c:1355,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1359,1
    - Dst: IS_MAPPED_IPV6
      Src: /src/frr/zebra/rt_netlink.c:1364,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/rt_netlink.c:1365,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1366,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1371,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1377,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 5
    argNames:
    - nexthop
    - nlmsg
    - out_lse
    - buflen
    - label_buf
    argTypes:
    - struct nexthop*
    - struct nlmsghdr*
    - mpls_lse_t*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1347
    functionDepth: 3
    functionLinenumber: 1347
    functionLinenumberEnd: 1385
    functionName: _netlink_nexthop_encode_dvni_label
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put64
    - IS_MAPPED_IPV6
    - nl_attr_put
    - zlog_debug
    - ipv4_mapped_ipv6_to_ipv4
    - htonll
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_nexthop_encode_dvni_label(const struct nexthop *nexthop,\n\t\t\t\t\t
      \      struct nlmsghdr *nlmsg,\n\t\t\t\t\t       mpls_lse_t *out_lse,\n\t\t\t\t\t
      \      size_t buflen, char *label_buf)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: build_label_stack
      Src: /src/frr/zebra/rt_netlink.c:1410,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:1414,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:1418,1
    - Dst: _netlink_nexthop_encode_dvni_label
      Src: /src/frr/zebra/rt_netlink.c:1422,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:1427,1
    - Dst: htonl
      Src: /src/frr/zebra/rt_netlink.c:1431,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1434,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:1438,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:1442,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1446,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:1450,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 6
    argNames:
    - nexthop
    - nlmsg
    - buflen
    - rtmsg
    - label_buf
    - label_buf_size
    argTypes:
    - struct nexthop*
    - struct nlmsghdr*
    - size_t
    - struct rtmsg*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1387
    functionDepth: 4
    functionLinenumber: 1387
    functionLinenumberEnd: 1455
    functionName: _netlink_route_encode_label_info
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put16
    - nl_attr_nest_end
    - _netlink_nexthop_encode_dvni_label
    - nl_attr_nest
    - nl_attr_put
    - htonl
    - build_label_stack
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_route_encode_label_info(const struct nexthop *nexthop,\n\t\t\t\t\t
      \    struct nlmsghdr *nlmsg,\n\t\t\t\t\t     size_t buflen, struct rtmsg *rtmsg,\n\t\t\t\t\t
      \    char *label_buf,\n\t\t\t\t\t     size_t label_buf_size)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1464,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1468,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/rt_netlink.c:1473,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1474,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/rt_netlink.c:1477,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1478,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 5
    argNames:
    - nexthop
    - family
    - nlmsg
    - buflen
    - bytelen
    argTypes:
    - struct nexthop*
    - int
    - struct nlmsghdr*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1457
    functionDepth: 2
    functionLinenumber: 1457
    functionLinenumberEnd: 1485
    functionName: _netlink_route_encode_nexthop_src
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - nl_attr_put
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_route_encode_nexthop_src(const struct nexthop *nexthop,\n\t\t\t\t\t
      \     int family,\n\t\t\t\t\t      struct nlmsghdr *nlmsg,\n\t\t\t\t\t      size_t
      buflen, int bytelen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:1507,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:1516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - buffer
    - buflen
    - seg
    argTypes:
    - char*
    - size_t
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1487
    functionDepth: 0
    functionLinenumber: 1487
    functionLinenumberEnd: 1519
    functionName: fill_seg6ipt_encap
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t fill_seg6ipt_encap(char *buffer, size_t buflen,\n\t\t\t\t
      \ const struct in6_addr *seg)"
  - BBCount: 65
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/rt_netlink.c:1547,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/rt_netlink.c:1549,1
    - Dst: _netlink_route_encode_label_info
      Src: /src/frr/zebra/rt_netlink.c:1551,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:1562,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:1566,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1572,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1578,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1582,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1588,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1592,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1598,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1602,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1608,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1612,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1618,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1622,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1628,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1632,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:1647,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:1652,1
    - Dst: sid_zero
      Src: /src/frr/zebra/rt_netlink.c:1655,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:1660,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:1663,1
    - Dst: fill_seg6ipt_encap
      Src: /src/frr/zebra/rt_netlink.c:1666,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1670,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:1673,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:1677,1
    - Dst: is_route_v4_over_v6
      Src: /src/frr/zebra/rt_netlink.c:1680,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1682,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1684,1
    - Dst: _netlink_route_encode_nexthop_src
      Src: /src/frr/zebra/rt_netlink.c:1688,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1694,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1697,1
    - Dst: _netlink_route_add_gateway_info
      Src: /src/frr/zebra/rt_netlink.c:1705,1
    - Dst: _netlink_route_encode_nexthop_src
      Src: /src/frr/zebra/rt_netlink.c:1712,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/rt_netlink.c:1718,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1720,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1722,1
    - Dst: _netlink_route_add_gateway_info
      Src: /src/frr/zebra/rt_netlink.c:1729,1
    - Dst: _netlink_route_encode_nexthop_src
      Src: /src/frr/zebra/rt_netlink.c:1735,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/rt_netlink.c:1742,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1744,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1746,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1757,1
    - Dst: _netlink_route_encode_nexthop_src
      Src: /src/frr/zebra/rt_netlink.c:1763,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1769,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1771,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 138
    argCount: 8
    argNames:
    - p
    - routedesc
    - bytelen
    - nexthop
    - nlmsg
    - rtmsg
    - req_size
    - cmd
    argTypes:
    - struct prefix*
    - char*
    - int
    - struct nexthop*
    - struct nlmsghdr*
    - struct rtmsg*
    - size_t
    - int
    assertStmts:
    - condition: (nexthop)
      pos:
        line_end: 1546
        line_start: 1546
        source_file: /src/frr/zebra/rt_netlink.c
    constantsTouched: []
    func_position:
      end: 1775
      start: 1535
    functionDepth: 5
    functionLinenumber: 1535
    functionLinenumberEnd: 1775
    functionName: _netlink_route_build_singlepath
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put16
    - nl_attr_nest_end
    - nl_attr_put32
    - CHECK_FLAG
    - zlog_err
    - _netlink_route_encode_nexthop_src
    - inet_ntop
    - nl_attr_nest
    - nl_attr_put
    - sid_zero
    - zlog_debug
    - vrf_lookup_by_id
    - fill_seg6ipt_encap
    - VRF_LOGNAME
    - _netlink_route_add_gateway_info
    - is_route_v4_over_v6
    - _netlink_route_encode_label_info
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_route_build_singlepath(const struct prefix *p,\n\t\t\t\t\t
      \   const char *routedesc, int bytelen,\n\t\t\t\t\t    const struct nexthop
      *nexthop,\n\t\t\t\t\t    struct nlmsghdr *nlmsg,\n\t\t\t\t\t    struct rtmsg
      *rtmsg,\n\t\t\t\t\t    size_t req_size, int cmd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:1792,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - n
    - maxlen
    - tag
    argTypes:
    - struct nlmsghdr*
    - unsigned int
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1788
    functionDepth: 3
    functionLinenumber: 1788
    functionLinenumberEnd: 1796
    functionName: _netlink_set_tag
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put32
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_set_tag(struct nlmsghdr *n, unsigned int maxlen,\n\t\t\t\t
      \   route_tag_t tag)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_rtnh
      Src: /src/frr/zebra/rt_netlink.c:1825,1
    - Dst: assert
      Src: /src/frr/zebra/rt_netlink.c:1829,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/rt_netlink.c:1831,1
    - Dst: _netlink_route_encode_label_info
      Src: /src/frr/zebra/rt_netlink.c:1833,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:1837,1
    - Dst: is_route_v4_over_v6
      Src: /src/frr/zebra/rt_netlink.c:1840,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:1842,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1854,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1857,1
    - Dst: nl_attr_rtnh_end
      Src: /src/frr/zebra/rt_netlink.c:1859,1
    - Dst: _netlink_route_add_gateway_info
      Src: /src/frr/zebra/rt_netlink.c:1865,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1876,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1879,1
    - Dst: _netlink_route_add_gateway_info
      Src: /src/frr/zebra/rt_netlink.c:1883,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/rt_netlink.c:1888,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/rt_netlink.c:1890,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1894,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1897,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1916,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rt_netlink.c:1918,1
    - Dst: _netlink_set_tag
      Src: /src/frr/zebra/rt_netlink.c:1924,1
    - Dst: nl_attr_rtnh_end
      Src: /src/frr/zebra/rt_netlink.c:1927,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 62
    argCount: 9
    argNames:
    - p
    - routedesc
    - bytelen
    - nexthop
    - nlmsg
    - req_size
    - rtmsg
    - src
    - tag
    argTypes:
    - struct prefix*
    - char*
    - int
    - struct nexthop*
    - struct nlmsghdr*
    - size_t
    - struct rtmsg*
    - union g_addr**
    - route_tag_t
    assertStmts:
    - condition: (nexthop)
      pos:
        line_end: 1828
        line_start: 1828
        source_file: /src/frr/zebra/rt_netlink.c
    constantsTouched: []
    func_position:
      end: 1929
      start: 1816
    functionDepth: 5
    functionLinenumber: 1816
    functionLinenumberEnd: 1929
    functionName: _netlink_route_build_multipath
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - _netlink_set_tag
    - CHECK_FLAG
    - nl_attr_rtnh_end
    - nl_attr_put
    - zlog_debug
    - _netlink_route_add_gateway_info
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - nl_attr_rtnh
    - is_route_v4_over_v6
    - _netlink_route_encode_label_info
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_route_build_multipath(\n\tconst struct prefix *p, const
      char *routedesc, int bytelen,\n\tconst struct nexthop *nexthop, struct nlmsghdr
      *nlmsg, size_t req_size,\n\tstruct rtmsg *rtmsg, const union g_addr **src, route_tag_t
      tag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/rt_netlink.c:1940,1
    - Dst: _netlink_route_build_singlepath
      Src: /src/frr/zebra/rt_netlink.c:1942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - p
    - routedesc
    - nhlfe
    - nlmsg
    - rtmsg
    - req_size
    - cmd
    argTypes:
    - struct prefix*
    - char*
    - struct zebra_nhlfe*
    - struct nlmsghdr*
    - struct rtmsg*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1931
    functionDepth: 6
    functionLinenumber: 1931
    functionLinenumberEnd: 1945
    functionName: _netlink_mpls_build_singlepath
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - NHLFE_FAMILY
    - _netlink_route_build_singlepath
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_mpls_build_singlepath(const struct prefix *p, const
      char *routedesc,\n\t\t\t       const struct zebra_nhlfe *nhlfe,\n\t\t\t       struct
      nlmsghdr *nlmsg, struct rtmsg *rtmsg,\n\t\t\t       size_t req_size, int cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NHLFE_FAMILY
      Src: /src/frr/zebra/rt_netlink.c:1957,1
    - Dst: _netlink_route_build_multipath
      Src: /src/frr/zebra/rt_netlink.c:1959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - p
    - routedesc
    - nhlfe
    - nlmsg
    - req_size
    - rtmsg
    - src
    argTypes:
    - struct prefix*
    - char*
    - struct zebra_nhlfe*
    - struct nlmsghdr*
    - size_t
    - struct rtmsg*
    - union g_addr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1948
    functionDepth: 6
    functionLinenumber: 1948
    functionLinenumberEnd: 1962
    functionName: _netlink_mpls_build_multipath
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - NHLFE_FAMILY
    - _netlink_route_build_multipath
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_mpls_build_multipath(const struct prefix *p, const char
      *routedesc,\n\t\t\t      const struct zebra_nhlfe *nhlfe,\n\t\t\t      struct
      nlmsghdr *nlmsg, size_t req_size,\n\t\t\t      struct rtmsg *rtmsg, const union
      g_addr **src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:1967,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:1968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - cmd
    - label
    - routedesc
    argTypes:
    - int
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1964
    functionDepth: 2
    functionLinenumber: 1964
    functionLinenumberEnd: 1969
    functionName: _netlink_mpls_debug
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - nl_msg_type_to_str
    linkageType: ''
    returnType: void
    signature: void _netlink_mpls_debug(int cmd, uint32_t label, const char *routedesc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:1981,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:1983,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:1985,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2001,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2004,1
    - Dst: family2addrsize
      Src: /src/frr/zebra/rt_netlink.c:2005,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2007,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/rt_netlink.c:2011,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:2012,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/rt_netlink.c:2015,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/rt_netlink.c:2018,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2020,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:2022,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/rt_netlink.c:2024,1
    - Dst: netlink_talk
      Src: /src/frr/zebra/rt_netlink.c:2028,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 9
    argNames:
    - cmd
    - ifindex
    - addr
    - lla
    - llalen
    - ns_id
    - family
    - permanent
    - protocol
    argTypes:
    - int
    - int
    - void*
    - char*
    - int
    - ns_id_t
    - uint8_t
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 1971
    functionDepth: 7
    functionLinenumber: 1971
    functionLinenumberEnd: 2030
    functionName: netlink_neigh_update
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - memset
    - netlink_talk
    - vrf_id_to_name
    - if_lookup_by_index_per_ns
    - snprintfrr
    - nl_attr_put
    - zlog_debug
    - nl_msg_type_to_str
    - family2addrsize
    - NLMSG_LENGTH
    - zebra_ns_lookup
    linkageType: ''
    returnType: int
    signature: "int netlink_neigh_update(int cmd, int ifindex, void *addr, char *lla,\n\t\t\t\tint
      llalen, ns_id_t ns_id, uint8_t family,\n\t\t\t\tbool permanent, uint8_t protocol)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/rt_netlink.c:2044,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/zebra/rt_netlink.c:2047,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - nexthop
    - family
    - src
    argTypes:
    - struct nexthop*
    - int
    - union g_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2054
      start: 2032
    functionDepth: 0
    functionLinenumber: 2032
    functionLinenumberEnd: 2054
    functionName: nexthop_set_src
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_set_src(const struct nexthop *nexthop, int family,\n\t\t\t
      \   union g_addr *src)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:2067,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:2070,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2074,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:2077,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - n
    - nlen
    - nh
    argTypes:
    - struct nlmsghdr*
    - size_t
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2060
    functionDepth: 3
    functionLinenumber: 2060
    functionLinenumberEnd: 2082
    functionName: netlink_route_nexthop_encap
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put16
    - nl_attr_nest
    - nl_attr_nest_end
    - nl_attr_put32
    linkageType: ''
    returnType: int
    signature: "int netlink_route_nexthop_encap(struct nlmsghdr *n, size_t nlen,\n\t\t\t\t
      \      struct nexthop *nh)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_netlink.c:2112,1
    - Dst: dplane_ctx_get_src
      Src: /src/frr/zebra/rt_netlink.c:2113,1
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/rt_netlink.c:2118,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/rt_netlink.c:2118,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:2120,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:2124,1
    - Dst: zebra2proto
      Src: /src/frr/zebra/rt_netlink.c:2141,1
    - Dst: dplane_ctx_get_old_type
      Src: /src/frr/zebra/rt_netlink.c:2141,1
    - Dst: zebra2proto
      Src: /src/frr/zebra/rt_netlink.c:2143,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:2143,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2156,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2159,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2171,1
    - Dst: dplane_ctx_get_old_tag
      Src: /src/frr/zebra/rt_netlink.c:2177,1
    - Dst: dplane_ctx_get_tag
      Src: /src/frr/zebra/rt_netlink.c:2179,1
    - Dst: dplane_ctx_get_table
      Src: /src/frr/zebra/rt_netlink.c:2183,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2188,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2193,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:2195,1
    - Dst: dplane_ctx_get_vrf
      Src: /src/frr/zebra/rt_netlink.c:2195,1
    - Dst: _netlink_set_tag
      Src: /src/frr/zebra/rt_netlink.c:2205,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:2207,1
    - Dst: dplane_ctx_get_mtu
      Src: /src/frr/zebra/rt_netlink.c:2210,1
    - Dst: dplane_ctx_get_nh_mtu
      Src: /src/frr/zebra/rt_netlink.c:2210,1
    - Dst: dplane_ctx_get_mtu
      Src: /src/frr/zebra/rt_netlink.c:2212,1
    - Dst: dplane_ctx_get_nh_mtu
      Src: /src/frr/zebra/rt_netlink.c:2213,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:2218,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2222,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:2224,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_netlink.c:2233,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:2235,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:2251,1
    - Dst: kernel_nexthops_supported
      Src: /src/frr/zebra/rt_netlink.c:2255,1
    - Dst: proto_nexthops_only
      Src: /src/frr/zebra/rt_netlink.c:2256,1
    - Dst: is_proto_nhg
      Src: /src/frr/zebra/rt_netlink.c:2257,1
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/rt_netlink.c:2257,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2261,1
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/rt_netlink.c:2262,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2264,1
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/rt_netlink.c:2265,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/rt_netlink.c:2269,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_netlink.c:2269,1
    - Dst: nexthop_set_src
      Src: /src/frr/zebra/rt_netlink.c:2273,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2278,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2282,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:2288,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/rt_netlink.c:2295,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_netlink.c:2295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:2296,1
    - Dst: if
      Src: /src/frr/zebra/rt_netlink.c:2298,1
    - Dst: NEXTHOP_IS_ACTIVE
      Src: /src/frr/zebra/rt_netlink.c:2298,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/rt_netlink.c:2307,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_netlink.c:2307,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:2308,1
    - Dst: nexthop_set_src
      Src: /src/frr/zebra/rt_netlink.c:2314,1
    - Dst: NEXTHOP_IS_ACTIVE
      Src: /src/frr/zebra/rt_netlink.c:2319,1
    - Dst: _netlink_set_tag
      Src: /src/frr/zebra/rt_netlink.c:2324,1
    - Dst: _netlink_route_build_singlepath
      Src: /src/frr/zebra/rt_netlink.c:2327,1
    - Dst: netlink_route_nexthop_encap
      Src: /src/frr/zebra/rt_netlink.c:2340,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2348,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2352,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/rt_netlink.c:2366,1
    - Dst: dplane_ctx_get_ng
      Src: /src/frr/zebra/rt_netlink.c:2366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:2367,1
    - Dst: nexthop_set_src
      Src: /src/frr/zebra/rt_netlink.c:2373,1
    - Dst: NEXTHOP_IS_ACTIVE
      Src: /src/frr/zebra/rt_netlink.c:2378,1
    - Dst: _netlink_route_build_multipath
      Src: /src/frr/zebra/rt_netlink.c:2384,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 123
    argCount: 6
    argNames:
    - cmd
    - ctx
    - data
    - datalen
    - fpm
    - force_nhg
    argTypes:
    - int
    - struct zebra_dplane_ctx*
    - uint8_t*
    - size_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2090
    functionDepth: 6
    functionLinenumber: 2090
    functionLinenumberEnd: 2399
    functionName: netlink_route_multipath_msg_encode
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - nl_attr_nest_end
    - dplane_ctx_get_type
    - kernel_netlink_nlsock_lookup
    - dplane_ctx_get_ns_sock
    - dplane_ctx_get_mtu
    - is_proto_nhg
    - _netlink_route_build_singlepath
    - zebra2proto
    - NEXTHOP_IS_ACTIVE
    - memset
    - proto_nexthops_only
    - dplane_ctx_get_dest
    - zlog_debug
    - dplane_ctx_get_nhe_id
    - if
    - netlink_route_nexthop_encap
    - nexthop_set_src
    - dplane_ctx_get_ng
    - dplane_ctx_get_old_tag
    - nl_attr_put
    - nl_attr_nest
    - dplane_ctx_get_table
    - NLMSG_ALIGN
    - NLMSG_LENGTH
    - _netlink_route_build_multipath
    - ALL_NEXTHOPS_PTR
    - nl_attr_put32
    - dplane_ctx_get_vrf
    - CHECK_FLAG
    - dplane_ctx_get_old_type
    - dplane_ctx_get_tag
    - kernel_nexthops_supported
    - dplane_ctx_get_nh_mtu
    - dplane_ctx_get_src
    - nl_msg_type_to_str
    - _netlink_set_tag
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_route_multipath_msg_encode(int cmd,\n\t\t\t\t\t   struct
      zebra_dplane_ctx *ctx,\n\t\t\t\t\t   uint8_t *data, size_t datalen,\n\t\t\t\t\t
      \  bool fpm, bool force_nhg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:2537,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:2546,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:2549,1
    - Dst: strlcat
      Src: /src/frr/zebra/rt_netlink.c:2551,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2555,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:2562,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:2564,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2566,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2568,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:2571,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:2573,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2579,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 7
    argNames:
    - n
    - req_size
    - id
    - z_grp
    - count
    - resilient
    - nhgr
    argTypes:
    - struct nlmsghdr*
    - size_t
    - uint32_t
    - struct nh_grp*
    - uint8_t
    - bool
    - struct nhg_resilience*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2524
    functionDepth: 3
    functionLinenumber: 2524
    functionLinenumberEnd: 2582
    functionName: _netlink_nexthop_build_group
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nl_attr_put16
    - nl_attr_nest_end
    - snprintf
    - memset
    - nl_attr_put32
    - nl_attr_nest
    - nl_attr_put
    - zlog_debug
    linkageType: ''
    returnType: bool
    signature: "bool _netlink_nexthop_build_group(struct nlmsghdr *n, size_t req_size,\n\t\t\t\t\t
      uint32_t id,\n\t\t\t\t\t const struct nh_grp *z_grp,\n\t\t\t\t\t const uint8_t
      count, bool resilient,\n\t\t\t\t\t const struct nhg_resilience *nhgr)"
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/rt_netlink.c:2608,1
    - Dst: dplane_ctx_get_nhe_type
      Src: /src/frr/zebra/rt_netlink.c:2609,1
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/rt_netlink.c:2613,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/rt_netlink.c:2613,1
    - Dst: flog_err
      Src: /src/frr/zebra/rt_netlink.c:2616,1
    - Dst: kernel_nexthops_supported
      Src: /src/frr/zebra/rt_netlink.c:2627,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2629,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/rt_netlink.c:2631,1
    - Dst: proto_nexthops_only
      Src: /src/frr/zebra/rt_netlink.c:2635,1
    - Dst: is_proto_nhg
      Src: /src/frr/zebra/rt_netlink.c:2635,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2637,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/rt_netlink.c:2639,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:2648,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:2650,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2662,1
    - Dst: dplane_ctx_get_nhe_nh_grp_count
      Src: /src/frr/zebra/rt_netlink.c:2672,1
    - Dst: dplane_ctx_get_nhe_ng
      Src: /src/frr/zebra/rt_netlink.c:2676,1
    - Dst: _netlink_nexthop_build_group
      Src: /src/frr/zebra/rt_netlink.c:2678,1
    - Dst: dplane_ctx_get_nhe_nh_grp
      Src: /src/frr/zebra/rt_netlink.c:2680,1
    - Dst: dplane_ctx_get_nhe_nh_grp_count
      Src: /src/frr/zebra/rt_netlink.c:2681,1
    - Dst: dplane_ctx_get_nhe_ng
      Src: /src/frr/zebra/rt_netlink.c:2686,1
    - Dst: dplane_ctx_get_nhe_afi
      Src: /src/frr/zebra/rt_netlink.c:2687,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2697,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2704,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2710,1
    - Dst: flog_err
      Src: /src/frr/zebra/rt_netlink.c:2722,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2728,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:2732,1
    - Dst: build_label_stack
      Src: /src/frr/zebra/rt_netlink.c:2735,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:2740,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:2745,1
    - Dst: _netlink_nexthop_encode_dvni_label
      Src: /src/frr/zebra/rt_netlink.c:2749,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:2754,1
    - Dst: htonl
      Src: /src/frr/zebra/rt_netlink.c:2759,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:2768,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:2771,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2774,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:2780,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2795,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:2801,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2808,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2815,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2820,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2827,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2832,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2839,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2844,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2851,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2856,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2863,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2868,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2875,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:2880,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:2887,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:2891,1
    - Dst: sid_zero
      Src: /src/frr/zebra/rt_netlink.c:2894,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:2899,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:2903,1
    - Dst: fill_seg6ipt_encap
      Src: /src/frr/zebra/rt_netlink.c:2907,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:2912,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:2916,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2923,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/rt_netlink.c:2925,1
    - Dst: zebra2proto
      Src: /src/frr/zebra/rt_netlink.c:2929,1
    - Dst: flog_err
      Src: /src/frr/zebra/rt_netlink.c:2932,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:2940,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:2940,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:2943,1
    CyclomaticComplexity: 72
    EdgeCount: 72
    ICount: 178
    argCount: 5
    argNames:
    - cmd
    - ctx
    - buf
    - buflen
    - fpm
    argTypes:
    - uint16_t
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2944
      start: 2595
    functionDepth: 4
    functionLinenumber: 2595
    functionLinenumberEnd: 2944
    functionName: netlink_nexthop_msg_encode
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - nl_attr_nest_end
    - _netlink_nexthop_encode_dvni_label
    - kernel_netlink_nlsock_lookup
    - dplane_ctx_get_nhe_nh_grp_count
    - dplane_ctx_get_ns_sock
    - dplane_ctx_get_nhe_type
    - flog_err
    - is_proto_nhg
    - htonl
    - zebra2proto
    - build_label_stack
    - dplane_ctx_get_nhe_ng
    - memset
    - proto_nexthops_only
    - zlog_debug
    - dplane_ctx_get_nhe_id
    - fill_seg6ipt_encap
    - zlog_err
    - nl_attr_put
    - nl_attr_nest
    - NLMSG_LENGTH
    - zebra_route_string
    - NLMSG_ALIGN
    - nl_attr_put16
    - nl_attr_put32
    - vrf_id_to_name
    - CHECK_FLAG
    - dplane_ctx_get_nhe_afi
    - dplane_ctx_get_nhe_nh_grp
    - kernel_nexthops_supported
    - sid_zero
    - nl_msg_type_to_str
    - _netlink_nexthop_build_group
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_nexthop_msg_encode(uint16_t cmd,\n\t\t\t\t   const
      struct zebra_dplane_ctx *ctx,\n\t\t\t\t   void *buf, size_t buflen, bool fpm)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:2952,1
    - Dst: flog_err
      Src: /src/frr/zebra/rt_netlink.c:2958,1
    - Dst: netlink_nexthop_msg_encode
      Src: /src/frr/zebra/rt_netlink.c:2964,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2946
    functionDepth: 5
    functionLinenumber: 2946
    functionLinenumberEnd: 2965
    functionName: netlink_nexthop_msg_encoder
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - flog_err
    - netlink_nexthop_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_nexthop_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \  void *buf, size_t buflen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kernel_nexthops_supported
      Src: /src/frr/zebra/rt_netlink.c:2972,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rt_netlink.c:2975,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2977
      start: 2967
    functionDepth: 7
    functionLinenumber: 2967
    functionLinenumberEnd: 2977
    functionName: netlink_put_nexthop_update_msg
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    - kernel_nexthops_supported
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_nexthop_update_msg(struct nl_batch
      *bth,\n\t\t\t       struct zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_route_multipath_msg_encode
      Src: /src/frr/zebra/rt_netlink.c:2982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2984
      start: 2979
    functionDepth: 7
    functionLinenumber: 2979
    functionLinenumberEnd: 2984
    functionName: netlink_newroute_msg_encoder
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_route_multipath_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_newroute_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \   void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_route_multipath_msg_encode
      Src: /src/frr/zebra/rt_netlink.c:2989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2991
      start: 2986
    functionDepth: 7
    functionLinenumber: 2986
    functionLinenumberEnd: 2991
    functionName: netlink_delroute_msg_encoder
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_route_multipath_msg_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_delroute_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \   void *buf, size_t buflen)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_dest
      Src: /src/frr/zebra/rt_netlink.c:2997,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:2999,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:3001,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:3003,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_netlink.c:3016,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:3016,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_netlink.c:3017,1
    - Dst: dplane_ctx_get_old_type
      Src: /src/frr/zebra/rt_netlink.c:3017,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rt_netlink.c:3018,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_netlink.c:3034,1
    - Dst: dplane_ctx_get_old_type
      Src: /src/frr/zebra/rt_netlink.c:3034,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rt_netlink.c:3035,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/rt_netlink.c:3044,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:3044,1
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rt_netlink.c:3047,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3052
      start: 2993
    functionDepth: 7
    functionLinenumber: 2993
    functionLinenumberEnd: 3052
    functionName: netlink_put_route_update_msg
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_op
    - RSYSTEM_ROUTE
    - dplane_ctx_get_type
    - dplane_ctx_get_old_type
    - dplane_ctx_get_dest
    - netlink_batch_add_msg
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: enum netlink_msg_status netlink_put_route_update_msg(struct nl_batch
      *bth, struct zebra_dplane_ctx *ctx)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3076,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:3090,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3096,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:3104,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/rt_netlink.c:3110,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:3110,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:3117,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3126,1
    - Dst: parse_encap_mpls
      Src: /src/frr/zebra/rt_netlink.c:3132,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/rt_netlink.c:3135,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 4
    argNames:
    - tb
    - family
    - ifp
    - ns_id
    argTypes:
    - struct rtattr**
    - unsigned char
    - struct interface**
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3064
    functionDepth: 4
    functionLinenumber: 3064
    functionLinenumberEnd: 3140
    functionName: netlink_nexthop_process_nh
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - if_lookup_by_index_per_ns
    - parse_encap_mpls
    - RTA_DATA
    - nexthop_add_labels
    - memcpy
    - zebra_ns_lookup
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop netlink_nexthop_process_nh(struct rtattr **tb,\n\t\t\t\t\t\t
      unsigned char family,\n\t\t\t\t\t\t struct interface **ifp,\n\t\t\t\t\t\t ns_id_t
      ns_id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3150,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:3151,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:3153,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:3154,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:3164,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/rt_netlink.c:3170,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3174,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3179,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3184,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3189,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - tb
    - z_grp
    - z_grp_size
    - nhgr
    argTypes:
    - struct rtattr**
    - struct nh_grp*
    - int
    - struct nhg_resilience*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3194
      start: 3142
    functionDepth: 3
    functionLinenumber: 3142
    functionLinenumberEnd: 3194
    functionName: netlink_nexthop_process_group
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - memset
    - netlink_parse_rtattr_nested
    - RTA_DATA
    - RTA_PAYLOAD
    linkageType: ''
    returnType: int
    signature: "int netlink_nexthop_process_group(struct rtattr **tb,\n\t\t\t\t\t
      struct nh_grp *z_grp, int z_grp_size,\n\t\t\t\t\t struct nhg_resilience *nhgr)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/zebra/rt_netlink.c:3222,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:3224,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:3232,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rt_netlink.c:3234,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:3237,1
    - Dst: netlink_parse_rtattr_flags
      Src: /src/frr/zebra/rt_netlink.c:3241,1
    - Dst: RTM_NHA
      Src: /src/frr/zebra/rt_netlink.c:3241,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:3246,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3253,1
    - Dst: zebra_evpn_mh_is_fdb_nh
      Src: /src/frr/zebra/rt_netlink.c:3255,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3258,1
    - Dst: family2afi
      Src: /src/frr/zebra/rt_netlink.c:3265,1
    - Dst: proto2zebra
      Src: /src/frr/zebra/rt_netlink.c:3267,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3270,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:3271,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:3272,1
    - Dst: netlink_nexthop_process_group
      Src: /src/frr/zebra/rt_netlink.c:3283,1
    - Dst: array_size
      Src: /src/frr/zebra/rt_netlink.c:3284,1
    - Dst: netlink_nexthop_process_nh
      Src: /src/frr/zebra/rt_netlink.c:3299,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:3303,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rt_netlink.c:3309,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rt_netlink.c:3311,1
    - Dst: zebra_nhg_kernel_find
      Src: /src/frr/zebra/rt_netlink.c:3315,1
    - Dst: zebra_nhg_kernel_del
      Src: /src/frr/zebra/rt_netlink.c:3320,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3323
      start: 3205
    functionDepth: 5
    functionLinenumber: 3205
    functionLinenumberEnd: 3323
    functionName: netlink_nexthop_change
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - proto2zebra
    - zebra_evpn_mh_is_fdb_nh
    - zlog_warn
    - RTA_DATA
    - netlink_nexthop_process_group
    - frrtrace
    - flog_warn
    - NLMSG_DATA
    - netlink_nexthop_process_nh
    - zlog_debug
    - array_size
    - zebra_nhg_kernel_del
    - netlink_parse_rtattr_flags
    - family2afi
    - NLMSG_LENGTH
    - zebra_nhg_kernel_find
    - RTM_NHA
    - SET_FLAG
    - nl_msg_type_to_str
    - nl_family_to_str
    linkageType: ''
    returnType: int
    signature: int netlink_nexthop_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:3341,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:3344,1
    - Dst: netlink_request
      Src: /src/frr/zebra/rt_netlink.c:3347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - zns
    - family
    - type
    argTypes:
    - struct zebra_ns*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3348
      start: 3333
    functionDepth: 3
    functionLinenumber: 3333
    functionLinenumberEnd: 3348
    functionName: netlink_request_nexthop
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: int netlink_request_nexthop(struct zebra_ns *zns, int family, int type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:3364,1
    - Dst: netlink_request_nexthop
      Src: /src/frr/zebra/rt_netlink.c:3367,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:3370,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3379,1
    - Dst: zebra_router_set_supports_nhgs
      Src: /src/frr/zebra/rt_netlink.c:3382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3385
      start: 3359
    functionDepth: 5
    functionLinenumber: 3359
    functionLinenumberEnd: 3385
    functionName: netlink_nexthop_read
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    - zlog_debug
    - netlink_request_nexthop
    - zebra_router_set_supports_nhgs
    linkageType: ''
    returnType: int
    signature: int netlink_nexthop_read(struct zebra_ns *zns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_neigh_update
      Src: /src/frr/zebra/rt_netlink.c:3391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - add
    - ifindex
    - addr
    - lla
    - llalen
    - ns_id
    - family
    - permanent
    argTypes:
    - int
    - int
    - void*
    - char*
    - int
    - ns_id_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3394
      start: 3388
    functionDepth: 8
    functionLinenumber: 3388
    functionLinenumberEnd: 3394
    functionName: kernel_neigh_update
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_neigh_update
    linkageType: ''
    returnType: int
    signature: "int kernel_neigh_update(int add, int ifindex, void *addr, char *lla,
      int llalen,\n\t\t\tns_id_t ns_id, uint8_t family, bool permanent)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:3440,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:3442,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:3444,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/rt_netlink.c:3455,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:3457,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:3462,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:3469,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:3474,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:3477,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:3480,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:3485,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:3491,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/zebra/rt_netlink.c:3495,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:3496,1
    - Dst: dplane_ctx_mac_get_vlan
      Src: /src/frr/zebra/rt_netlink.c:3502,1
    - Dst: dplane_ctx_mac_get_vni
      Src: /src/frr/zebra/rt_netlink.c:3503,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:3506,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:3511,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:3515,1
    - Dst: dplane_ctx_mac_get_br_ifindex
      Src: /src/frr/zebra/rt_netlink.c:3516,1
    - Dst: dplane_ctx_neigh_get_vni
      Src: /src/frr/zebra/rt_netlink.c:3521,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:3524,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:3529,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 62
    argCount: 18
    argNames:
    - ctx
    - cmd
    - lla
    - llalen
    - ip
    - replace_obj
    - family
    - type
    - flags
    - state
    - nhg_id
    - nfy
    - nfy_flags
    - ext
    - ext_flags
    - data
    - datalen
    - protocol
    argTypes:
    - struct zebra_dplane_ctx*
    - int
    - void*
    - int
    - struct ipaddr*
    - bool
    - uint8_t
    - uint8_t
    - uint8_t
    - uint16_t
    - uint32_t
    - bool
    - uint8_t
    - bool
    - uint32_t
    - void*
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3530
      start: 3423
    functionDepth: 3
    functionLinenumber: 3423
    functionLinenumberEnd: 3530
    functionName: netlink_neigh_update_msg_encode
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - dplane_ctx_mac_get_vni
    - nl_attr_nest_end
    - nl_attr_put16
    - memset
    - nl_attr_put32
    - NLMSG_ALIGN
    - dplane_ctx_neigh_get_vni
    - nl_attr_put
    - nl_attr_nest
    - dplane_ctx_get_ifindex
    - IS_IPADDR_V4
    - dplane_ctx_mac_get_vlan
    - NLMSG_LENGTH
    - dplane_ctx_mac_get_br_ifindex
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_neigh_update_msg_encode(\n\tconst struct zebra_dplane_ctx
      *ctx, int cmd, const void *lla,\n\tint llalen, const struct ipaddr *ip, bool
      replace_obj, uint8_t family,\n\tuint8_t type, uint8_t flags, uint16_t state,
      uint32_t nhg_id, bool nfy,\n\tuint8_t nfy_flags, bool ext, uint32_t ext_flags,
      void *data,\n\tsize_t datalen, uint8_t protocol)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:3543,1
    - Dst: zebra2proto
      Src: /src/frr/zebra/rt_netlink.c:3544,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:3544,1
    - Dst: netlink_neigh_update_msg_encode
      Src: /src/frr/zebra/rt_netlink.c:3546,1
    - Dst: dplane_ctx_neigh_get_ipaddr
      Src: /src/frr/zebra/rt_netlink.c:3548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - cmd
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3552
      start: 3536
    functionDepth: 4
    functionLinenumber: 3536
    functionLinenumberEnd: 3552
    functionName: netlink_vxlan_flood_update_ctx
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - zebra2proto
    - dplane_ctx_neigh_get_ipaddr
    - netlink_neigh_update_msg_encode
    - dplane_ctx_get_type
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_vxlan_flood_update_ctx(const struct zebra_dplane_ctx
      *ctx, int cmd,\n\t\t\t       void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3557
      start: 3555
    functionDepth: 0
    functionLinenumber: 3555
    functionLinenumberEnd: 3557
    functionName: NDA_RTA
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NDA_RTA(r)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:3579,1
    - Dst: is_evpn_enabled
      Src: /src/frr/zebra/rt_netlink.c:3582,1
    - Dst: netlink_parse_rtattr_flags
      Src: /src/frr/zebra/rt_netlink.c:3588,1
    - Dst: NDA_RTA
      Src: /src/frr/zebra/rt_netlink.c:3588,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3593,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:3594,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:3599,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3601,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:3603,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:3604,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:3608,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3608,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3612,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:3613,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:3619,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3619,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/rt_netlink.c:3621,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:3624,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3627,1
    - Dst: netlink_parse_rtattr_nested
      Src: /src/frr/zebra/rt_netlink.c:3636,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3640,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:3650,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3653,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:3655,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/rt_netlink.c:3661,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:3661,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/rt_netlink.c:3667,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3673,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:3675,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/rt_netlink.c:3682,1
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/rt_netlink.c:3682,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/rt_netlink.c:3685,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3693,1
    - Dst: is_mac_vni_mcast_group
      Src: /src/frr/zebra/rt_netlink.c:3701,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3712,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/rt_netlink.c:3717,1
    - Dst: zebra_vxlan_if_vni_mcast_group_add_update
      Src: /src/frr/zebra/rt_netlink.c:3722,1
    - Dst: zebra_vxlan_dp_network_mac_add
      Src: /src/frr/zebra/rt_netlink.c:3725,1
    - Dst: zebra_vxlan_local_mac_add_update
      Src: /src/frr/zebra/rt_netlink.c:3730,1
    - Dst: zebra_vxlan_if_vni_mcast_group_del
      Src: /src/frr/zebra/rt_netlink.c:3749,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/rt_netlink.c:3752,1
    - Dst: zebra_vxlan_check_readd_vtep
      Src: /src/frr/zebra/rt_netlink.c:3753,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/rt_netlink.c:3758,1
    - Dst: zebra_vxlan_local_mac_del
      Src: /src/frr/zebra/rt_netlink.c:3761,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 94
    argCount: 3
    argNames:
    - h
    - len
    - ns_id
    argTypes:
    - struct nlmsghdr*
    - int
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3762
      start: 3559
    functionDepth: 3
    functionLinenumber: 3559
    functionLinenumberEnd: 3762
    functionName: netlink_macfdb_change
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - zebra_vxlan_if_vni_mcast_group_del
    - netlink_parse_rtattr_nested
    - if_lookup_by_index_per_ns
    - RTA_DATA
    - snprintf
    - memset
    - NLMSG_DATA
    - zlog_debug
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - NDA_RTA
    - zebra_vxlan_local_mac_add_update
    - RTA_PAYLOAD
    - zebra_ns_lookup
    - is_mac_vni_mcast_group
    - zebra_vxlan_dp_network_mac_add
    - zebra_vxlan_local_mac_del
    - is_zero_mac
    - netlink_parse_rtattr_flags
    - IS_ZEBRA_VXLAN_IF_VNI
    - memcpy
    - zebra_vxlan_check_readd_vtep
    - zebra_vxlan_if_vni_mcast_group_add_update
    - snprintfrr
    - nl_msg_type_to_str
    - zebra_vxlan_if_vni_find
    - IS_ZEBRA_IF_VXLAN
    - is_evpn_enabled
    linkageType: ''
    returnType: int
    signature: int netlink_macfdb_change(struct nlmsghdr *h, int len, ns_id_t ns_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:3773,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:3778,1
    - Dst: netlink_macfdb_change
      Src: /src/frr/zebra/rt_netlink.c:3782,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3783
      start: 3764
    functionDepth: 4
    functionLinenumber: 3764
    functionLinenumberEnd: 3783
    functionName: netlink_macfdb_table
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_macfdb_change
    - NLMSG_LENGTH
    - NLMSG_DATA
    linkageType: ''
    returnType: int
    signature: int netlink_macfdb_table(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:3796,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:3799,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:3802,1
    - Dst: netlink_request
      Src: /src/frr/zebra/rt_netlink.c:3804,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - netlink_cmd
    - family
    - type
    - master_ifindex
    argTypes:
    - struct nlsock*
    - int
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3805
      start: 3786
    functionDepth: 3
    functionLinenumber: 3786
    functionLinenumberEnd: 3805
    functionName: netlink_request_macs
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - nl_attr_put32
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_request_macs(struct nlsock *netlink_cmd, int family,\n\t\t\t\tint
      type, ifindex_t master_ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:3816,1
    - Dst: netlink_request_macs
      Src: /src/frr/zebra/rt_netlink.c:3819,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:3825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3829
      start: 3811
    functionDepth: 5
    functionLinenumber: 3811
    functionLinenumberEnd: 3829
    functionName: netlink_macfdb_read
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_request_macs
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: int netlink_macfdb_read(struct zebra_ns *zns)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:3842,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/rt_netlink.c:3846,1
    - Dst: netlink_request_macs
      Src: /src/frr/zebra/rt_netlink.c:3851,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:3855,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - zns
    - ifp
    - br_if
    - vid
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - struct interface*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3861
      start: 3835
    functionDepth: 5
    functionLinenumber: 3835
    functionLinenumberEnd: 3861
    functionName: netlink_macfdb_read_for_bridge
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_request_macs
    - zebra_dplane_info_from_zns
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: "int netlink_macfdb_read_for_bridge(struct zebra_ns *zns, struct interface
      *ifp,\n\t\t\t\t   struct interface *br_if, vlanid_t vid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:3877,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:3878,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:3885,1
    - Dst: IS_ZEBRA_IF_VXLAN
      Src: /src/frr/zebra/rt_netlink.c:3889,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:3890,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/rt_netlink.c:3894,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/rt_netlink.c:3895,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:3896,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:3900,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:3901,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:3902,1
    - Dst: netlink_request
      Src: /src/frr/zebra/rt_netlink.c:3905,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 8
    argNames:
    - zns
    - family
    - type
    - ifp
    - mac
    - vid
    - vni
    - flags
    argTypes:
    - struct zebra_ns*
    - int
    - int
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    - vni_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3906
      start: 3865
    functionDepth: 3
    functionLinenumber: 3865
    functionLinenumberEnd: 3906
    functionName: netlink_request_specific_mac
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put16
    - nl_family_to_str
    - nl_attr_put32
    - memset
    - netlink_request
    - nl_attr_put
    - zlog_debug
    - nl_msg_type_to_str
    - IS_ZEBRA_IF_VXLAN
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: "int netlink_request_specific_mac(struct zebra_ns *zns, int family,\n\t\t\t\t\tint
      type, struct interface *ifp,\n\t\t\t\t\tconst struct ethaddr *mac, vlanid_t
      vid,\n\t\t\t\t\tvni_t vni, uint8_t flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:3915,1
    - Dst: netlink_request_specific_mac
      Src: /src/frr/zebra/rt_netlink.c:3919,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:3924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - zns
    - br_if
    - mac
    - vid
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3908
    functionDepth: 5
    functionLinenumber: 3908
    functionLinenumberEnd: 3928
    functionName: netlink_macfdb_read_specific_mac
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_request_specific_mac
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: "int netlink_macfdb_read_specific_mac(struct zebra_ns *zns,\n\t\t\t\t
      \    struct interface *br_if,\n\t\t\t\t     const struct ethaddr *mac, vlanid_t
      vid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_VXLAN_IF_VNI
      Src: /src/frr/zebra/rt_netlink.c:3939,1
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:3942,1
    - Dst: netlink_request_specific_mac
      Src: /src/frr/zebra/rt_netlink.c:3945,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:3950,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - zns
    - ifp
    - vni
    argTypes:
    - struct zebra_ns*
    - struct interface*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3954
      start: 3930
    functionDepth: 5
    functionLinenumber: 3930
    functionLinenumberEnd: 3954
    functionName: netlink_macfdb_read_mcast_for_vni
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_request_specific_mac
    - IS_ZEBRA_VXLAN_IF_VNI
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: "int netlink_macfdb_read_mcast_for_vni(struct zebra_ns *zns,\n\t\t\t\t
      \     struct interface *ifp, vni_t vni)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:3974,1
    - Dst: zebra2proto
      Src: /src/frr/zebra/rt_netlink.c:3975,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:3975,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:3977,1
    - Dst: dplane_ctx_mac_get_update_flags
      Src: /src/frr/zebra/rt_netlink.c:3983,1
    - Dst: dplane_ctx_mac_is_sticky
      Src: /src/frr/zebra/rt_netlink.c:3986,1
    - Dst: dplane_ctx_mac_get_nhg_id
      Src: /src/frr/zebra/rt_netlink.c:4012,1
    - Dst: dplane_ctx_mac_get_vtep_ip
      Src: /src/frr/zebra/rt_netlink.c:4013,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/zebra/rt_netlink.c:4014,1
    - Dst: dplane_ctx_mac_get_addr
      Src: /src/frr/zebra/rt_netlink.c:4018,1
    - Dst: dplane_ctx_mac_get_vlan
      Src: /src/frr/zebra/rt_netlink.c:4020,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:4022,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4026,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4028,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:4028,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/rt_netlink.c:4029,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/rt_netlink.c:4029,1
    - Dst: dplane_ctx_mac_is_sticky
      Src: /src/frr/zebra/rt_netlink.c:4030,1
    - Dst: netlink_neigh_update_msg_encode
      Src: /src/frr/zebra/rt_netlink.c:4041,1
    - Dst: dplane_ctx_mac_get_addr
      Src: /src/frr/zebra/rt_netlink.c:4042,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - data
    - datalen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4048
      start: 3959
    functionDepth: 4
    functionLinenumber: 3959
    functionLinenumberEnd: 4048
    functionName: netlink_macfdb_update_ctx
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - dplane_ctx_get_op
    - netlink_neigh_update_msg_encode
    - dplane_ctx_get_type
    - snprintf
    - dplane_ctx_mac_get_update_flags
    - dplane_ctx_mac_is_sticky
    - dplane_ctx_get_ifname
    - dplane_ctx_mac_get_nhg_id
    - zlog_debug
    - dplane_ctx_mac_get_addr
    - nl_msg_type_to_str
    - dplane_ctx_get_ifindex
    - zebra2proto
    - dplane_ctx_mac_get_vlan
    - dplane_ctx_mac_get_vtep_ip
    - nl_family_to_str
    - SET_IPADDR_V4
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_macfdb_update_ctx(struct zebra_dplane_ctx *ctx, void
      *data,\n\t\t\t\t  size_t datalen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/zebra/rt_netlink.c:4068,1
    - Dst: if_nbr_ipv6ll_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/rt_netlink.c:4073,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 5
    argNames:
    - ndm
    - zif
    - ifp
    - ip
    - handle_failed
    argTypes:
    - struct ndmsg*
    - struct zebra_if*
    - struct interface*
    - struct ipaddr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4074
      start: 4054
    functionDepth: 1
    functionLinenumber: 4054
    functionLinenumberEnd: 4074
    functionName: netlink_handle_5549
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - if_nbr_ipv6ll_to_ipv4ll_neigh_update
    linkageType: ''
    returnType: void
    signature: "void netlink_handle_5549(struct ndmsg *ndm, struct zebra_if *zif,\n\t\t\t\tstruct
      interface *ifp, struct ipaddr *ip,\n\t\t\t\tbool handle_failed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr_state
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4090
      start: 4082
    functionDepth: 0
    functionLinenumber: 4082
    functionLinenumberEnd: 4090
    functionName: netlink_nbr_entry_state_to_zclient
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int netlink_nbr_entry_state_to_zclient(int nbr_state)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:4110,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/rt_netlink.c:4113,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:4113,1
    - Dst: netlink_parse_rtattr
      Src: /src/frr/zebra/rt_netlink.c:4121,1
    - Dst: NDA_RTA
      Src: /src/frr/zebra/rt_netlink.c:4121,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4124,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4125,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:4126,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4131,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:4133,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:4133,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:4133,1
    - Dst: netlink_handle_5549
      Src: /src/frr/zebra/rt_netlink.c:4137,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4139,1
    - Dst: netlink_handle_5549
      Src: /src/frr/zebra/rt_netlink.c:4146,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4160,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:4166,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/rt_netlink.c:4172,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:4173,1
    - Dst: sockunion_get_addr
      Src: /src/frr/zebra/rt_netlink.c:4173,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:4174,1
    - Dst: sockunion_family
      Src: /src/frr/zebra/rt_netlink.c:4176,1
    - Dst: zsend_nhrp_neighbor_notify
      Src: /src/frr/zebra/rt_netlink.c:4177,1
    - Dst: netlink_nbr_entry_state_to_zclient
      Src: /src/frr/zebra/rt_netlink.c:4179,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/rt_netlink.c:4197,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/rt_netlink.c:4198,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/rt_netlink.c:4198,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/rt_netlink.c:4202,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4207,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4211,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:4214,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4216,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4218,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:4220,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/zebra/rt_netlink.c:4225,1
    - Dst: memcpy
      Src: /src/frr/zebra/rt_netlink.c:4231,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:4231,1
    - Dst: RTA_DATA
      Src: /src/frr/zebra/rt_netlink.c:4238,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4244,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4246,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:4247,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/rt_netlink.c:4251,1
    - Dst: zebra_evpn_mh_do_adv_reachable_neigh_only
      Src: /src/frr/zebra/rt_netlink.c:4262,1
    - Dst: zebra_neigh_del
      Src: /src/frr/zebra/rt_netlink.c:4274,1
    - Dst: zebra_neigh_add
      Src: /src/frr/zebra/rt_netlink.c:4276,1
    - Dst: zebra_vxlan_handle_kernel_neigh_update
      Src: /src/frr/zebra/rt_netlink.c:4279,1
    - Dst: zebra_neigh_del
      Src: /src/frr/zebra/rt_netlink.c:4287,1
    - Dst: zebra_vxlan_handle_kernel_neigh_del
      Src: /src/frr/zebra/rt_netlink.c:4289,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4294,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4295,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:4296,1
    - Dst: zebra_neigh_del
      Src: /src/frr/zebra/rt_netlink.c:4303,1
    - Dst: zebra_vxlan_handle_kernel_neigh_del
      Src: /src/frr/zebra/rt_netlink.c:4305,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 97
    argCount: 3
    argNames:
    - h
    - len
    - ns_id
    argTypes:
    - struct nlmsghdr*
    - int
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4308
      start: 4091
    functionDepth: 6
    functionLinenumber: 4091
    functionLinenumberEnd: 4308
    functionName: netlink_ipneigh_change
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - netlink_parse_rtattr
    - sockunion_get_addr
    - if_lookup_by_index_per_ns
    - netlink_handle_5549
    - RTA_DATA
    - zsend_nhrp_neighbor_notify
    - zebra_neigh_del
    - memset
    - zebra_evpn_mh_do_adv_reachable_neigh_only
    - NLMSG_DATA
    - zlog_debug
    - netlink_nbr_entry_state_to_zclient
    - NDA_RTA
    - RTA_PAYLOAD
    - zebra_ns_lookup
    - zebra_neigh_add
    - IS_ZEBRA_IF_VLAN
    - IS_ZEBRA_IF_BRIDGE
    - zebra_vxlan_handle_kernel_neigh_del
    - memcpy
    - zebra_vxlan_handle_kernel_neigh_update
    - prefix_mac2str
    - nl_msg_type_to_str
    - nl_family_to_str
    linkageType: ''
    returnType: int
    signature: int netlink_ipneigh_change(struct nlmsghdr *h, int len, ns_id_t ns_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4319,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:4324,1
    - Dst: netlink_neigh_change
      Src: /src/frr/zebra/rt_netlink.c:4328,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - h
    - ns_id
    - startup
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4329
      start: 4310
    functionDepth: 1
    functionLinenumber: 4310
    functionLinenumberEnd: 4329
    functionName: netlink_neigh_table
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_LENGTH
    - NLMSG_DATA
    - netlink_neigh_change
    linkageType: ''
    returnType: int
    signature: int netlink_neigh_table(struct nlmsghdr *h, ns_id_t ns_id, int startup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4342,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4345,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:4348,1
    - Dst: netlink_request
      Src: /src/frr/zebra/rt_netlink.c:4350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - netlink_cmd
    - family
    - type
    - ifindex
    argTypes:
    - struct nlsock*
    - int
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4351
      start: 4332
    functionDepth: 3
    functionLinenumber: 4332
    functionLinenumberEnd: 4351
    functionName: netlink_request_neigh
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_request
    - nl_attr_put32
    - NLMSG_LENGTH
    - memset
    linkageType: ''
    returnType: int
    signature: "int netlink_request_neigh(struct nlsock *netlink_cmd, int family,\n\t\t\t\t
      int type, ifindex_t ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:4362,1
    - Dst: netlink_request_neigh
      Src: /src/frr/zebra/rt_netlink.c:4365,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:4369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - zns
    argTypes:
    - struct zebra_ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4373
      start: 4357
    functionDepth: 5
    functionLinenumber: 4357
    functionLinenumberEnd: 4373
    functionName: netlink_neigh_read
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    - netlink_request_neigh
    linkageType: ''
    returnType: int
    signature: int netlink_neigh_read(struct zebra_ns *zns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:4384,1
    - Dst: netlink_request_neigh
      Src: /src/frr/zebra/rt_netlink.c:4386,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:4390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - zns
    - vlan_if
    argTypes:
    - struct zebra_ns*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4394
      start: 4379
    functionDepth: 5
    functionLinenumber: 4379
    functionLinenumberEnd: 4394
    functionName: netlink_neigh_read_for_vlan
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    - netlink_request_neigh
    linkageType: ''
    returnType: int
    signature: int netlink_neigh_read_for_vlan(struct zebra_ns *zns, struct interface
      *vlan_if)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4413,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4414,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/zebra/rt_netlink.c:4419,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4428,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4431,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4432,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:4433,1
    - Dst: netlink_request
      Src: /src/frr/zebra/rt_netlink.c:4436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - zns
    - type
    - ip
    - ifindex
    argTypes:
    - struct zebra_ns*
    - int
    - struct ipaddr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4437
      start: 4400
    functionDepth: 3
    functionLinenumber: 4400
    functionLinenumberEnd: 4437
    functionName: netlink_request_specific_neigh_in_vlan
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_family_to_str
    - memset
    - netlink_request
    - nl_attr_put
    - zlog_debug
    - nl_msg_type_to_str
    - IS_IPADDR_V4
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: "int netlink_request_specific_neigh_in_vlan(struct zebra_ns *zns,\n\t\t\t\t\t\t
      \ int type,\n\t\t\t\t\t\t  const struct ipaddr *ip,\n\t\t\t\t\t\t  ifindex_t
      ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_dplane_info_from_zns
      Src: /src/frr/zebra/rt_netlink.c:4449,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4452,1
    - Dst: netlink_request_specific_neigh_in_vlan
      Src: /src/frr/zebra/rt_netlink.c:4456,1
    - Dst: netlink_parse_info
      Src: /src/frr/zebra/rt_netlink.c:4461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ip
    - vlan_if
    argTypes:
    - struct ipaddr*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4465
      start: 4439
    functionDepth: 5
    functionLinenumber: 4439
    functionLinenumberEnd: 4465
    functionName: netlink_neigh_read_specific_ip
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - netlink_request_specific_neigh_in_vlan
    - zebra_dplane_info_from_zns
    - netlink_parse_info
    linkageType: ''
    returnType: int
    signature: "int netlink_neigh_read_specific_ip(const struct ipaddr *ip,\n\t\t\t\t
      \  struct interface *vlan_if)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4477,1
    - Dst: zlog_err
      Src: /src/frr/zebra/rt_netlink.c:4479,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4482,1
    - Dst: NLMSG_DATA
      Src: /src/frr/zebra/rt_netlink.c:4487,1
    - Dst: netlink_macfdb_change
      Src: /src/frr/zebra/rt_netlink.c:4489,1
    - Dst: netlink_ipneigh_change
      Src: /src/frr/zebra/rt_netlink.c:4495,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rt_netlink.c:4497,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4500,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - h
    - ns_id
    argTypes:
    - struct nlmsghdr*
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4505
      start: 4467
    functionDepth: 7
    functionLinenumber: 4467
    functionLinenumberEnd: 4505
    functionName: netlink_neigh_change
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 2
    functionsReached:
    - netlink_macfdb_change
    - flog_warn
    - NLMSG_DATA
    - zlog_err
    - netlink_ipneigh_change
    - nl_msg_type_to_str
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int netlink_neigh_change(struct nlmsghdr *h, ns_id_t ns_id)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:4528,1
    - Dst: zebra2proto
      Src: /src/frr/zebra/rt_netlink.c:4529,1
    - Dst: dplane_ctx_get_type
      Src: /src/frr/zebra/rt_netlink.c:4529,1
    - Dst: dplane_ctx_neigh_get_ipaddr
      Src: /src/frr/zebra/rt_netlink.c:4531,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:4533,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:4534,1
    - Dst: dplane_ctx_neigh_get_link_ip
      Src: /src/frr/zebra/rt_netlink.c:4535,1
    - Dst: IPADDRSZ
      Src: /src/frr/zebra/rt_netlink.c:4536,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/rt_netlink.c:4538,1
    - Dst: dplane_ctx_neigh_get_mac
      Src: /src/frr/zebra/rt_netlink.c:4540,1
    - Dst: is_zero_mac
      Src: /src/frr/zebra/rt_netlink.c:4543,1
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/rt_netlink.c:4546,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:4548,1
    - Dst: dplane_ctx_neigh_get_update_flags
      Src: /src/frr/zebra/rt_netlink.c:4550,1
    - Dst: neigh_flags_to_netlink
      Src: /src/frr/zebra/rt_netlink.c:4551,1
    - Dst: dplane_ctx_neigh_get_flags
      Src: /src/frr/zebra/rt_netlink.c:4551,1
    - Dst: neigh_state_to_netlink
      Src: /src/frr/zebra/rt_netlink.c:4552,1
    - Dst: dplane_ctx_neigh_get_state
      Src: /src/frr/zebra/rt_netlink.c:4552,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/zebra/rt_netlink.c:4554,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4570,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4572,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/rt_netlink.c:4572,1
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/rt_netlink.c:4573,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/rt_netlink.c:4573,1
    - Dst: netlink_neigh_update_msg_encode
      Src: /src/frr/zebra/rt_netlink.c:4577,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - cmd
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4581
      start: 4510
    functionDepth: 4
    functionLinenumber: 4510
    functionLinenumberEnd: 4581
    functionName: netlink_neigh_update_ctx
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_family_to_str
    - dplane_ctx_get_type
    - zebra2proto
    - dplane_ctx_get_op
    - dplane_ctx_neigh_get_flags
    - netlink_neigh_update_msg_encode
    - snprintf
    - dplane_ctx_neigh_get_state
    - dplane_ctx_get_ifname
    - zlog_debug
    - dplane_ctx_neigh_get_ipaddr
    - dplane_ctx_neigh_get_mac
    - is_zero_mac
    - dplane_ctx_neigh_get_update_flags
    - dplane_ctx_neigh_get_link_ip
    - neigh_flags_to_netlink
    - neigh_state_to_netlink
    - prefix_mac2str
    - IPADDRSZ
    - nl_msg_type_to_str
    - dplane_ctx_get_ifindex
    - ipaddr2str
    - IS_IPADDR_V4
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_neigh_update_ctx(const struct zebra_dplane_ctx *ctx,\n\t\t\t\t\tint
      cmd, void *buf, size_t buflen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4598,1
    - Dst: dplane_ctx_neightable_get_family
      Src: /src/frr/zebra/rt_netlink.c:4599,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/rt_netlink.c:4600,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4602,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4607,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:4609,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4612,1
    - Dst: dplane_ctx_neightable_get_app_probes
      Src: /src/frr/zebra/rt_netlink.c:4614,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4615,1
    - Dst: dplane_ctx_neightable_get_mcast_probes
      Src: /src/frr/zebra/rt_netlink.c:4617,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4618,1
    - Dst: dplane_ctx_neightable_get_ucast_probes
      Src: /src/frr/zebra/rt_netlink.c:4621,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4622,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:4625,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:4627,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - data
    - datalen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4628
      start: 4583
    functionDepth: 3
    functionLinenumber: 4583
    functionLinenumberEnd: 4628
    functionName: netlink_neigh_table_update_ctx
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_neightable_get_app_probes
    - nl_attr_nest_end
    - dplane_ctx_neightable_get_ucast_probes
    - memset
    - dplane_ctx_neightable_get_family
    - NLMSG_ALIGN
    - dplane_ctx_neightable_get_mcast_probes
    - nl_attr_put
    - nl_attr_nest
    - dplane_ctx_get_ifindex
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: "int netlink_neigh_table_update_ctx(const struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      \ void *data, size_t datalen)"
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/rt_netlink.c:4635,1
    - Dst: netlink_neigh_update_ctx
      Src: /src/frr/zebra/rt_netlink.c:4640,1
    - Dst: netlink_neigh_update_ctx
      Src: /src/frr/zebra/rt_netlink.c:4644,1
    - Dst: netlink_vxlan_flood_update_ctx
      Src: /src/frr/zebra/rt_netlink.c:4647,1
    - Dst: netlink_vxlan_flood_update_ctx
      Src: /src/frr/zebra/rt_netlink.c:4651,1
    - Dst: netlink_neigh_table_update_ctx
      Src: /src/frr/zebra/rt_netlink.c:4655,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 69
    argCount: 3
    argNames:
    - ctx
    - buf
    - buflen
    argTypes:
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4706
      start: 4630
    functionDepth: 5
    functionLinenumber: 4630
    functionLinenumberEnd: 4706
    functionName: netlink_neigh_msg_encoder
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - netlink_neigh_update_ctx
    - netlink_vxlan_flood_update_ctx
    - netlink_neigh_table_update_ctx
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_neigh_msg_encoder(struct zebra_dplane_ctx *ctx,\n\t\t\t\t\t
      void *buf, size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rt_netlink.c:4715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4717
      start: 4712
    functionDepth: 7
    functionLinenumber: 4712
    functionLinenumberEnd: 4717
    functionName: netlink_put_mac_update_msg
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: "enum netlink_msg_status netlink_put_mac_update_msg(struct nl_batch
      *bth,\n\t\t\t\t\t\t   struct zebra_dplane_ctx *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_batch_add_msg
      Src: /src/frr/zebra/rt_netlink.c:4722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bth
    - ctx
    argTypes:
    - struct nl_batch*
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4724
      start: 4719
    functionDepth: 7
    functionLinenumber: 4719
    functionLinenumberEnd: 4724
    functionName: netlink_put_neigh_update_msg
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_batch_add_msg
    linkageType: ''
    returnType: enum netlink_msg_status
    signature: enum netlink_msg_status netlink_put_neigh_update_msg(struct nl_batch
      *bth, struct zebra_dplane_ctx *ctx)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: kernel_netlink_nlsock_lookup
      Src: /src/frr/zebra/rt_netlink.c:4742,1
    - Dst: dplane_ctx_get_ns_sock
      Src: /src/frr/zebra/rt_netlink.c:4742,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4753,1
    - Dst: dplane_ctx_get_nhlfe_list
      Src: /src/frr/zebra/rt_netlink.c:4760,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4767,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4768,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4772,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4773,1
    - Dst: dplane_ctx_get_best_nhlfe
      Src: /src/frr/zebra/rt_netlink.c:4779,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4782,1
    - Dst: re_type_from_lsp_type
      Src: /src/frr/zebra/rt_netlink.c:4798,1
    - Dst: dplane_ctx_get_best_nhlfe
      Src: /src/frr/zebra/rt_netlink.c:4799,1
    - Dst: zebra2proto
      Src: /src/frr/zebra/rt_netlink.c:4800,1
    - Dst: mpls_lse_encode
      Src: /src/frr/zebra/rt_netlink.c:4804,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/rt_netlink.c:4804,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4805,1
    - Dst: _netlink_mpls_debug
      Src: /src/frr/zebra/rt_netlink.c:4813,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/rt_netlink.c:4813,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4823,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4824,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4827,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4829,1
    - Dst: _netlink_mpls_build_singlepath
      Src: /src/frr/zebra/rt_netlink.c:4832,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/rt_netlink.c:4845,1
    - Dst: _netlink_mpls_debug
      Src: /src/frr/zebra/rt_netlink.c:4850,1
    - Dst: dplane_ctx_get_in_label
      Src: /src/frr/zebra/rt_netlink.c:4850,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4860,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4864,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4866,1
    - Dst: _netlink_mpls_build_multipath
      Src: /src/frr/zebra/rt_netlink.c:4871,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/rt_netlink.c:4879,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/zebra/rt_netlink.c:4882,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 69
    argCount: 4
    argNames:
    - cmd
    - ctx
    - buf
    - buflen
    argTypes:
    - int
    - struct zebra_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4883
      start: 4730
    functionDepth: 7
    functionLinenumber: 4730
    functionLinenumberEnd: 4883
    functionName: netlink_mpls_multipath_msg_encode
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - nl_attr_nest_end
    - _netlink_mpls_build_singlepath
    - re_type_from_lsp_type
    - memset
    - _netlink_mpls_build_multipath
    - mpls_lse_encode
    - CHECK_FLAG
    - _netlink_mpls_debug
    - dplane_ctx_get_best_nhlfe
    - kernel_netlink_nlsock_lookup
    - NLMSG_ALIGN
    - dplane_ctx_get_ns_sock
    - nl_attr_put
    - nl_attr_nest
    - zebra2proto
    - NLMSG_LENGTH
    - dplane_ctx_get_in_label
    - dplane_ctx_get_nhlfe_list
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t netlink_mpls_multipath_msg_encode(int cmd, struct zebra_dplane_ctx
      *ctx,\n\t\t\t\t\t  void *buf, size_t buflen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4767,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4768,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4772,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4773,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4776
      start: 4761
    functionDepth: 1
    functionLinenumber: 4761
    functionLinenumberEnd: 4776
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 49
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void frr_each(nhlfe_list_const, head, nhlfe)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4823,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4824,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4827,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4829,1
    - Dst: _netlink_mpls_build_singlepath
      Src: /src/frr/zebra/rt_netlink.c:4832,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4840
      start: 4817
    functionDepth: 7
    functionLinenumber: 4817
    functionLinenumberEnd: 4840
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 49
    functionsReached:
    - CHECK_FLAG
    - _netlink_mpls_build_singlepath
    linkageType: ''
    returnType: void
    signature: void frr_each(nhlfe_list_const, head, nhlfe)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4860,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4864,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rt_netlink.c:4866,1
    - Dst: _netlink_mpls_build_multipath
      Src: /src/frr/zebra/rt_netlink.c:4871,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4876
      start: 4854
    functionDepth: 7
    functionLinenumber: 4854
    functionLinenumberEnd: 4876
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 49
    functionsReached:
    - CHECK_FLAG
    - _netlink_mpls_build_multipath
    linkageType: ''
    returnType: void
    signature: void frr_each(nhlfe_list_const, head, nhlfe)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/rt_netlink.c:4901,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4904,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4906,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:4912,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4914,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4916,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4921,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4922,1
    - Dst: netlink_talk
      Src: /src/frr/zebra/rt_netlink.c:4925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - nh_id
    - vtep_ip
    argTypes:
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4927
      start: 4890
    functionDepth: 7
    functionLinenumber: 4890
    functionLinenumberEnd: 4927
    functionName: netlink_fdb_nh_update
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put32
    - memset
    - netlink_talk
    - zebra_vrf_get_evpn
    - nl_attr_put
    - zlog_debug
    - nl_msg_type_to_str
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int netlink_fdb_nh_update(uint32_t nh_id, struct in_addr vtep_ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/rt_netlink.c:4940,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4943,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4945,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:4950,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:4954,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:4955,1
    - Dst: netlink_talk
      Src: /src/frr/zebra/rt_netlink.c:4958,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - nh_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4960
      start: 4929
    functionDepth: 7
    functionLinenumber: 4929
    functionLinenumberEnd: 4960
    functionName: netlink_fdb_nh_del
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put32
    - memset
    - netlink_talk
    - zebra_vrf_get_evpn
    - zlog_debug
    - nl_msg_type_to_str
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int netlink_fdb_nh_del(uint32_t nh_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_get_evpn
      Src: /src/frr/zebra/rt_netlink.c:4976,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4979,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/rt_netlink.c:4981,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/rt_netlink.c:4987,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4989,1
    - Dst: memset
      Src: /src/frr/zebra/rt_netlink.c:4991,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/rt_netlink.c:4996,1
    - Dst: snprintf
      Src: /src/frr/zebra/rt_netlink.c:5007,1
    - Dst: strlcat
      Src: /src/frr/zebra/rt_netlink.c:5009,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rt_netlink.c:5012,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/rt_netlink.c:5013,1
    - Dst: netlink_talk
      Src: /src/frr/zebra/rt_netlink.c:5016,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - nhg_id
    - nh_cnt
    - nh_ids
    argTypes:
    - uint32_t
    - uint32_t
    - struct nh_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5018
      start: 4962
    functionDepth: 7
    functionLinenumber: 4962
    functionLinenumberEnd: 5018
    functionName: netlink_fdb_nhg_update
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nl_attr_put32
    - memset
    - snprintf
    - netlink_talk
    - zebra_vrf_get_evpn
    - nl_attr_put
    - zlog_debug
    - nl_msg_type_to_str
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: "int netlink_fdb_nhg_update(uint32_t nhg_id, uint32_t nh_cnt,\n\t\tstruct
      nh_grp *nh_ids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_fdb_nh_del
      Src: /src/frr/zebra/rt_netlink.c:5022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhg_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5023
      start: 5020
    functionDepth: 8
    functionLinenumber: 5020
    functionLinenumberEnd: 5023
    functionName: netlink_fdb_nhg_del
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_fdb_nh_del
    linkageType: ''
    returnType: int
    signature: int netlink_fdb_nhg_del(uint32_t nhg_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_fdb_nh_update
      Src: /src/frr/zebra/rt_netlink.c:5027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nh_id
    - vtep_ip
    argTypes:
    - uint32_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5028
      start: 5025
    functionDepth: 8
    functionLinenumber: 5025
    functionLinenumberEnd: 5028
    functionName: kernel_upd_mac_nh
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_fdb_nh_update
    linkageType: ''
    returnType: int
    signature: int kernel_upd_mac_nh(uint32_t nh_id, struct in_addr vtep_ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_fdb_nh_del
      Src: /src/frr/zebra/rt_netlink.c:5032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nh_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5033
      start: 5030
    functionDepth: 8
    functionLinenumber: 5030
    functionLinenumberEnd: 5033
    functionName: kernel_del_mac_nh
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_fdb_nh_del
    linkageType: ''
    returnType: int
    signature: int kernel_del_mac_nh(uint32_t nh_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_fdb_nhg_update
      Src: /src/frr/zebra/rt_netlink.c:5038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - nhg_id
    - nh_cnt
    - nh_ids
    argTypes:
    - uint32_t
    - uint32_t
    - struct nh_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5039
      start: 5035
    functionDepth: 8
    functionLinenumber: 5035
    functionLinenumberEnd: 5039
    functionName: kernel_upd_mac_nhg
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 0
    functionsReached:
    - netlink_fdb_nhg_update
    linkageType: ''
    returnType: int
    signature: "int kernel_upd_mac_nhg(uint32_t nhg_id, uint32_t nh_cnt,\n\t\tstruct
      nh_grp *nh_ids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_fdb_nhg_del
      Src: /src/frr/zebra/rt_netlink.c:5043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhg_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5044
      start: 5041
    functionDepth: 9
    functionLinenumber: 5041
    functionLinenumberEnd: 5044
    functionName: kernel_del_mac_nhg
    functionSourceFile: /src/frr/zebra/rt_netlink.c
    functionUses: 1
    functionsReached:
    - netlink_fdb_nhg_del
    linkageType: ''
    returnType: int
    signature: int kernel_del_mac_nhg(uint32_t nhg_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/rule_socket.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: kernel_pbr_rule_update
    functionSourceFile: /src/frr/zebra/rule_socket.c
    functionUses: 1
    functionsReached:
    - flog_err
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_pbr_rule_update(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nhlfe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: NHLFE_FAMILY
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NHLFE_FAMILY(nhlfe)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: route_distance
      Src: /src/frr/zebra/zebra_mpls.h:427,1
    - Dst: route_distance
      Src: /src/frr/zebra/zebra_mpls.h:429,1
    - Dst: route_distance
      Src: /src/frr/zebra/zebra_mpls.h:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum lsp_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 423
    functionDepth: 2
    functionLinenumber: 423
    functionLinenumberEnd: 448
    functionName: lsp_distance
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 2
    functionsReached:
    - route_distance
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t lsp_distance(enum lsp_types_t type)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - re_type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 474
    functionName: lsp_type_from_re_type
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: enum lsp_types_t
    signature: enum lsp_types_t lsp_type_from_re_type(int re_type)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - lsp_type
    argTypes:
    - enum lsp_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 508
    functionName: re_type_from_lsp_type
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int re_type_from_lsp_type(enum lsp_types_t lsp_type)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - lsp_type
    argTypes:
    - enum lsp_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 541
    functionName: nhlfe_type2str
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nhlfe_type2str(enum lsp_types_t lsp_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_mpls.h:553,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_mpls.h:557,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_mpls.h:562,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_mpls.h:563,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - zvrf
    - p
    argTypes:
    - struct zebra_vrf*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 564
    functionName: mpls_mark_lsps_for_processing
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 1
    functionsReached:
    - family2afi
    - route_node_match
    - SET_FLAG
    - rib_dest_from_rnode
    linkageType: ''
    returnType: void
    signature: "void mpls_mark_lsps_for_processing(struct zebra_vrf *zvrf,\n\t\t\t\t\t\t
      struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_mpls.h:568,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_mpls.h:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 571
    functionName: mpls_unmark_lsps_for_processing
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 2
    functionsReached:
    - rib_dest_from_rnode
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void mpls_unmark_lsps_for_processing(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_mpls.h:575,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_mpls.h:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 578
    functionName: mpls_should_lsps_be_processed
    functionSourceFile: /src/frr/zebra/zebra_mpls.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - rib_dest_from_rnode
    linkageType: ''
    returnType: int
    signature: int mpls_should_lsps_be_processed(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_pw.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct zebra_pw*
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: zebra_pw_compare
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int zebra_pw_compare(const struct zebra_pw *a,\n\t\t\t\t   const struct
      zebra_pw *b)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pw.c:55,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_pw.c:56,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_pw.c:56,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_pw.c:58,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_pw.c:59,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_pw.c:61,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_pw.c:68,1
    - Dst: RB_INSERT
      Src: /src/frr/zebra/zebra_pw.c:70,1
    - Dst: QOBJ_REG
      Src: /src/frr/zebra/zebra_pw.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - zvrf
    - ifname
    - protocol
    - client
    argTypes:
    - struct zebra_vrf*
    - char*
    - uint8_t
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 75
    functionName: zebra_pw_add
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - zvrf_id
    - strlcpy
    - QOBJ_REG
    - RB_INSERT
    - zlog_debug
    - zebra_route_string
    linkageType: ''
    returnType: struct zebra_pw
    signature: "struct zebra_pw *zebra_pw_add(struct zebra_vrf *zvrf, const char *ifname,\n\t\t\t
      \     uint8_t protocol, struct zserv *client)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pw.c:80,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_pw.c:81,1
    - Dst: zebra_deregister_rnh_pseudowire
      Src: /src/frr/zebra/zebra_pw.c:84,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pw.c:88,1
    - Dst: dplane_pw_uninstall
      Src: /src/frr/zebra/zebra_pw.c:89,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_pw.c:92,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_pw.c:95,1
    - Dst: RB_REMOVE
      Src: /src/frr/zebra/zebra_pw.c:97,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_pw.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - zvrf
    - pw
    argTypes:
    - struct zebra_vrf*
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 77
    functionDepth: 5
    functionLinenumber: 77
    functionLinenumberEnd: 100
    functionName: zebra_pw_del
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached:
    - RB_REMOVE
    - hook_call
    - dplane_pw_uninstall
    - zlog_debug
    - EVENT_OFF
    - zebra_deregister_rnh_pseudowire
    - XFREE
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_pw_del(struct zebra_vrf *zvrf, struct zebra_pw *pw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_pw_enabled
      Src: /src/frr/zebra/zebra_pw.c:116,1
    - Dst: zebra_register_rnh_pseudowire
      Src: /src/frr/zebra/zebra_pw.c:118,1
    - Dst: zebra_pw_update
      Src: /src/frr/zebra/zebra_pw.c:120,1
    - Dst: zebra_deregister_rnh_pseudowire
      Src: /src/frr/zebra/zebra_pw.c:123,1
    - Dst: zebra_pw_uninstall
      Src: /src/frr/zebra/zebra_pw.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 9
    argNames:
    - pw
    - ifindex
    - type
    - af
    - nexthop
    - local_label
    - remote_label
    - flags
    - data
    argTypes:
    - struct zebra_pw*
    - ifindex_t
    - int
    - int
    - union g_addr*
    - uint32_t
    - uint32_t
    - uint8_t
    - union pw_protocol_fields*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 102
    functionDepth: 5
    functionLinenumber: 102
    functionLinenumberEnd: 126
    functionName: zebra_pw_change
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached:
    - zebra_pw_uninstall
    - zebra_register_rnh_pseudowire
    - zebra_pw_update
    - zebra_pw_enabled
    - zebra_deregister_rnh_pseudowire
    linkageType: ''
    returnType: void
    signature: "void zebra_pw_change(struct zebra_pw *pw, ifindex_t ifindex, int type,
      int af,\n\t\t     union g_addr *nexthop, uint32_t local_label,\n\t\t     uint32_t
      remote_label, uint8_t flags,\n\t\t     union pw_protocol_fields *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_pw.c:131,1
    - Dst: RB_FIND
      Src: /src/frr/zebra/zebra_pw.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - zvrf
    - ifname
    argTypes:
    - struct zebra_vrf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 133
    functionName: zebra_pw_find
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 4
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct zebra_pw
    signature: struct zebra_pw *zebra_pw_find(struct zebra_vrf *zvrf, const char *ifname)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 144
    functionName: zebra_pw_enabled
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_pw_enabled(struct zebra_pw *pw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_pw_check_reachability
      Src: /src/frr/zebra/zebra_pw.c:148,1
    - Dst: zebra_pw_uninstall
      Src: /src/frr/zebra/zebra_pw.c:149,1
    - Dst: zebra_pw_install_failure
      Src: /src/frr/zebra/zebra_pw.c:150,1
    - Dst: zebra_pw_install
      Src: /src/frr/zebra/zebra_pw.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 159
    functionName: zebra_pw_update
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 2
    functionsReached:
    - zebra_pw_install
    - zebra_pw_uninstall
    - zebra_pw_check_reachability
    - zebra_pw_install_failure
    linkageType: ''
    returnType: void
    signature: void zebra_pw_update(struct zebra_pw *pw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pw.c:164,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_pw.c:166,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pw.c:168,1
    - Dst: dplane_pw_install
      Src: /src/frr/zebra/zebra_pw.c:169,1
    - Dst: zebra_pw_install_failure
      Src: /src/frr/zebra/zebra_pw.c:170,1
    - Dst: zebra_pw_update_status
      Src: /src/frr/zebra/zebra_pw.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 176
    functionName: zebra_pw_install
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached:
    - dplane_pw_install
    - hook_call
    - zebra_pw_update_status
    - zlog_debug
    - zebra_route_string
    - zebra_pw_install_failure
    linkageType: ''
    returnType: void
    signature: void zebra_pw_install(struct zebra_pw *pw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pw.c:184,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_pw.c:186,1
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_pw.c:189,1
    - Dst: dplane_pw_uninstall
      Src: /src/frr/zebra/zebra_pw.c:190,1
    - Dst: zebra_pw_enabled
      Src: /src/frr/zebra/zebra_pw.c:192,1
    - Dst: zebra_pw_update_status
      Src: /src/frr/zebra/zebra_pw.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 194
    functionName: zebra_pw_uninstall
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 2
    functionsReached:
    - hook_call
    - zebra_pw_update_status
    - zebra_pw_enabled
    - dplane_pw_uninstall
    - zlog_debug
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_pw_uninstall(struct zebra_pw *pw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pw.c:205,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_pw.c:210,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_pw.c:211,1
    - Dst: zebra_pw_update_status
      Src: /src/frr/zebra/zebra_pw.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pw
    - pwstatus
    argTypes:
    - struct zebra_pw*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 215
    functionName: zebra_pw_install_failure
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 5
    functionsReached:
    - event_add_timer
    - zlog_debug
    - EVENT_OFF
    - zebra_pw_update_status
    linkageType: ''
    returnType: void
    signature: void zebra_pw_install_failure(struct zebra_pw *pw, int pwstatus)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_pw.c:219,1
    - Dst: zebra_pw_install
      Src: /src/frr/zebra/zebra_pw.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 3
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: zebra_pw_install_retry
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 0
    functionsReached:
    - zebra_pw_install
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void zebra_pw_install_retry(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zsend_pw_update
      Src: /src/frr/zebra/zebra_pw.c:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pw
    - status
    argTypes:
    - struct zebra_pw*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 229
    functionName: zebra_pw_update_status
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 3
    functionsReached:
    - zsend_pw_update
    linkageType: ''
    returnType: void
    signature: void zebra_pw_update_status(struct zebra_pw *pw, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_pw.c:245,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:248,1
    - Dst: if
      Src: /src/frr/zebra/zebra_pw.c:251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:251,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_pw.c:265,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:268,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - pw
    - re
    argTypes:
    - struct zebra_pw*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 292
    functionName: zebra_pw_check_reachability_strict
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 0
    functionsReached:
    - rib_get_fib_nhg
    - rib_get_fib_backup_nhg
    - CHECK_FLAG
    - if
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: int
    signature: "int zebra_pw_check_reachability_strict(const struct zebra_pw *pw,\n\t\t\t\t\t
      \     struct route_entry *re)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_pw.c:304,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_pw.c:304,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_pw.c:308,1
    - Dst: zebra_pw_check_reachability_strict
      Src: /src/frr/zebra/zebra_pw.c:315,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_pw.c:321,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:323,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:324,1
    - Dst: if
      Src: /src/frr/zebra/zebra_pw.c:327,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:327,1
    - Dst: break
      Src: /src/frr/zebra/zebra_pw.c:330,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_pw.c:338,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:340,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:341,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_pw.c:344,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zebra_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 294
    functionDepth: 3
    functionLinenumber: 294
    functionLinenumberEnd: 360
    functionName: zebra_pw_check_reachability
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached:
    - rib_match
    - rib_get_fib_nhg
    - rib_get_fib_backup_nhg
    - zebra_pw_check_reachability_strict
    - CHECK_FLAG
    - zlog_debug
    - family2afi
    - if
    - break
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: int
    signature: int zebra_pw_check_reachability(const struct zebra_pw *pw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_pw.c:368,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/zebra/zebra_pw.c:370,1
    - Dst: zebra_pw_del
      Src: /src/frr/zebra/zebra_pw.c:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 362
    functionDepth: 6
    functionLinenumber: 362
    functionLinenumberEnd: 378
    functionName: zebra_pw_client_close
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 0
    functionsReached:
    - zebra_pw_del
    - RB_FOREACH_SAFE
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int zebra_pw_client_close(struct zserv *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_pw.c:382,1
    - Dst: RB_INIT
      Src: /src/frr/zebra/zebra_pw.c:383,1
    - Dst: hook_register
      Src: /src/frr/zebra/zebra_pw.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 386
    functionName: zebra_pw_init
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached:
    - RB_INIT
    - hook_register
    linkageType: ''
    returnType: void
    signature: void zebra_pw_init(struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/zebra/zebra_pw.c:392,1
    - Dst: RB_ROOT
      Src: /src/frr/zebra/zebra_pw.c:393,1
    - Dst: zebra_pw_del
      Src: /src/frr/zebra/zebra_pw.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 388
    functionDepth: 6
    functionLinenumber: 388
    functionLinenumberEnd: 397
    functionName: zebra_pw_exit
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 1
    functionsReached:
    - zebra_pw_del
    - RB_EMPTY
    - RB_ROOT
    linkageType: ''
    returnType: void
    signature: void zebra_pw_exit(struct zebra_vrf *zvrf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_pw.c:605,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_pw.c:609,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:613,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_pw.c:614,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:615,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:618,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:620,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:622,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:624,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:625,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_pw.c:626,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:628,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:629,1
    - Dst: zebra_pw_enabled
      Src: /src/frr/zebra/zebra_pw.c:630,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_pw.c:633,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_pw.c:633,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_pw.c:638,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:639,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_pw.c:640,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:642,1
    - Dst: if
      Src: /src/frr/zebra/zebra_pw.c:643,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:644,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:647,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_pw.c:652,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:656,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_pw.c:657,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:659,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:661,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:664,1
    - Dst: vty_show_mpls_pseudowire
      Src: /src/frr/zebra/zebra_pw.c:670,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_pw.c:681,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_pw.c:682,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:684,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:686,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_pw.c:688,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:689,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_pw.c:692,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:694,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_pw.c:696,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:698,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:699,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_pw.c:700,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_pw.c:702,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:703,1
    - Dst: zebra_pw_enabled
      Src: /src/frr/zebra/zebra_pw.c:705,1
    - Dst: rib_match
      Src: /src/frr/zebra/zebra_pw.c:707,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_pw.c:707,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_pw.c:712,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:713,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_pw.c:714,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_pw.c:715,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:716,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_pw.c:718,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:722,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_pw.c:725,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_pw.c:729,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_pw.c:733,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_pw.c:734,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:736,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_pw.c:738,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_pw.c:742,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_pw.c:745,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_pw.c:750,1
    - Dst: json_object_array_add
      Src: /src/frr/zebra/zebra_pw.c:751,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 597
    functionDepth: 3
    functionLinenumber: 597
    functionLinenumberEnd: 752
    functionName: vty_show_mpls_pseudowire_detail
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 0
    functionsReached:
    - vty_show_mpls_pseudowire
    - json_object_string_add
    - rib_get_fib_backup_nhg
    - zebra_pw_enabled
    - inet_ntop
    - zebra_vrf_lookup_by_id
    - if
    - rib_get_fib_nhg
    - vty_out
    - json_object_int_add
    - family2afi
    - zebra_route_string
    - ALL_NEXTHOPS_PTR
    - rib_match
    - json_object_new_array
    - json_object_new_object
    - json_object_array_add
    - snprintfrr
    - json_object_object_add
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void vty_show_mpls_pseudowire_detail(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_pw.c:761,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_pw.c:765,1
    - Dst: json_object_new_array
      Src: /src/frr/zebra/zebra_pw.c:766,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_pw.c:767,1
    - Dst: vty_show_mpls_pseudowire
      Src: /src/frr/zebra/zebra_pw.c:768,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_pw.c:770,1
    - Dst: vty_json
      Src: /src/frr/zebra/zebra_pw.c:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 754
    functionDepth: 2
    functionLinenumber: 754
    functionLinenumberEnd: 772
    functionName: vty_show_mpls_pseudowire_detail_json
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 0
    functionsReached:
    - vty_show_mpls_pseudowire
    - json_object_new_object
    - json_object_new_array
    - json_object_object_add
    - zebra_vrf_lookup_by_id
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: void
    signature: void vty_show_mpls_pseudowire_detail_json(struct vty *vty)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_pw.c:797,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/zebra_pw.c:801,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:802,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:805,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:808,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_pw.c:813,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:814,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:816,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:820,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:822,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_pw.c:823,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 791
    functionDepth: 2
    functionLinenumber: 791
    functionLinenumberEnd: 828
    functionName: zebra_pw_config
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_lookup_by_id
    - inet_ntop
    - RB_FOREACH
    - vty_out
    linkageType: ''
    returnType: int
    signature: int zebra_pw_config(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/zebra/zebra_pw.c:841,1
    - Dst: install_default
      Src: /src/frr/zebra/zebra_pw.c:842,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_pw.c:844,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_pw.c:845,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_pw.c:846,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_pw.c:847,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_pw.c:848,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_pw.c:850,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_pw.c:851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 839
    functionDepth: 1
    functionLinenumber: 839
    functionLinenumberEnd: 852
    functionName: zebra_pw_vty_init
    functionSourceFile: /src/frr/zebra/zebra_pw.c
    functionUses: 2
    functionsReached:
    - install_element
    - install_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void zebra_pw_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_srv6.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client
    - vrf_id
    argTypes:
    - struct zserv*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: srv6_manager_client_connect_call
    functionSourceFile: /src/frr/zebra/zebra_srv6.c
    functionUses: 0
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: void
    signature: void srv6_manager_client_connect_call(struct zserv *client, vrf_id_t
      vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_srv6.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - loc
    - client
    - locator_name
    - vrf_id
    argTypes:
    - struct srv6_locator**
    - struct zserv*
    - char*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: srv6_manager_get_locator_chunk_call
    functionSourceFile: /src/frr/zebra/zebra_srv6.c
    functionUses: 1
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void srv6_manager_get_locator_chunk_call(struct srv6_locator **loc,\n\t\t\t\t\t
      struct zserv *client,\n\t\t\t\t\t const char *locator_name,\n\t\t\t\t\t vrf_id_t
      vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_srv6.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - locator_name
    - vrf_id
    argTypes:
    - struct zserv*
    - char*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: srv6_manager_release_locator_chunk_call
    functionSourceFile: /src/frr/zebra/zebra_srv6.c
    functionUses: 1
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void srv6_manager_release_locator_chunk_call(struct zserv *client,\n\t\t\t\t\t
      \    const char *locator_name,\n\t\t\t\t\t     vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zebra_srv6.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: srv6_manager_client_disconnect_cb
    functionSourceFile: /src/frr/zebra/zebra_srv6.c
    functionUses: 0
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: int
    signature: int srv6_manager_client_disconnect_cb(struct zserv *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: zebra_srv6_cleanup
    functionSourceFile: /src/frr/zebra/zebra_srv6.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zebra_srv6_cleanup(struct zserv *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_srv6_get_default
      Src: /src/frr/zebra/zebra_srv6.c:94,1
    - Dst: zebra_srv6_locator_lookup
      Src: /src/frr/zebra/zebra_srv6.c:99,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_srv6.c:101,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_srv6.c:116,1
    - Dst: zsend_zebra_srv6_locator_add
      Src: /src/frr/zebra/zebra_srv6.c:117,1
    - Dst: for
      Src: /src/frr/zebra/zebra_srv6.c:138,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_srv6.c:138,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_srv6.c:141,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_srv6.c:143,1
    - Dst: zsend_zebra_srv6_locator_delete
      Src: /src/frr/zebra/zebra_srv6.c:148,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zebra_srv6.c:151,1
    - Dst: srv6_locator_free
      Src: /src/frr/zebra/zebra_srv6.c:152,1
    - Dst: zebra_srv6_locator_lookup
      Src: /src/frr/zebra/zebra_srv6.c:155,1
    - Dst: zebra_srv6_get_default
      Src: /src/frr/zebra/zebra_srv6.c:157,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_srv6.c:161,1
    - Dst: if
      Src: /src/frr/zebra/zebra_srv6.c:162,1
    - Dst: strncmp
      Src: /src/frr/zebra/zebra_srv6.c:162,1
    - Dst: zebra_notify_srv6_locator_add
      Src: /src/frr/zebra/zebra_srv6.c:167,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_srv6.c:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - locator
    argTypes:
    - struct srv6_locator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 187
    functionName: zebra_srv6_locator_add
    functionSourceFile: /src/frr/zebra/zebra_srv6.c
    functionUses: 2
    functionsReached:
    - zserv_find_client
    - srv6_locator_free
    - if
    - zebra_srv6_get_default
    - ALL_LIST_ELEMENTS_RO
    - zebra_notify_srv6_locator_add
    - listnode_add
    - zsend_zebra_srv6_locator_add
    - zlog_warn
    - zebra_srv6_locator_lookup
    - strncmp
    - zsend_zebra_srv6_locator_delete
    - listnode_delete
    - for
    linkageType: ''
    returnType: void
    signature: void zebra_srv6_locator_add(struct srv6_locator *locator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_srv6.c:206,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_srv6.c:209,1
    - Dst: if
      Src: /src/frr/zebra/zebra_srv6.c:210,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_srv6.c:211,1
    - Dst: zsend_zebra_srv6_locator_delete
      Src: /src/frr/zebra/zebra_srv6.c:215,1
    - Dst: zebra_srv6_get_default
      Src: /src/frr/zebra/zebra_srv6.c:219,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_srv6.c:226,1
    - Dst: assign_srv6_locator_chunk
      Src: /src/frr/zebra/zebra_srv6.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - locator
    argTypes:
    - struct srv6_locator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 260
    functionName: zebra_notify_srv6_locator_delete
    functionSourceFile: /src/frr/zebra/zebra_srv6.c
    functionUses: 0
    functionsReached:
    - zserv_find_client
    - zebra_srv6_get_default
    - ALL_LIST_ELEMENTS_RO
    - zlog_warn
    - list_new
    - zsend_zebra_srv6_locator_delete
    - if
    - assign_srv6_locator_chunk
    linkageType: ''
    returnType: void
    signature: void zebra_notify_srv6_locator_delete(struct srv6_locator *locator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zserv.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: zserv_client_delete
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zserv_client_delete(struct zserv *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:160,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:162,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:164,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:165,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zserv.c:165,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:166,1
    - Dst: stream_hexdump
      Src: /src/frr/zebra/zserv.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - errmsg
    - msg
    - hdr
    argTypes:
    - char*
    - struct stream*
    - struct zmsghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: zserv_log_message
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - zserv_command_string
    - zlog_debug
    - stream_hexdump
    linkageType: ''
    returnType: void
    signature: "void zserv_log_message(const char *errmsg, struct stream *msg,\n\t\t
      \      struct zmsghdr *hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/zebra/zserv.c:184,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:186,1
    - Dst: atomic_store_explicit
      Src: /src/frr/zebra/zserv.c:188,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zserv.c:191,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zserv.c:192,1
    - Dst: zserv_event
      Src: /src/frr/zebra/zserv.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 194
    functionName: zserv_client_fail
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - atomic_store_explicit
    - EVENT_OFF
    - zebra_route_string
    - zserv_event
    linkageType: ''
    returnType: void
    signature: void zserv_client_fail(struct zserv *client)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zserv.c:218,1
    - Dst: monotime
      Src: /src/frr/zebra/zserv.c:222,1
    - Dst: buffer_flush_all
      Src: /src/frr/zebra/zserv.c:225,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:229,1
    - Dst: zserv_client_event
      Src: /src/frr/zebra/zserv.c:232,1
    - Dst: stream_fifo_new
      Src: /src/frr/zebra/zserv.c:238,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:240,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zserv.c:241,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zserv.c:242,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zserv.c:243,1
    - Dst: stream_set_getp
      Src: /src/frr/zebra/zserv.c:248,1
    - Dst: stream_getw_from
      Src: /src/frr/zebra/zserv.c:249,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zserv.c:252,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zserv.c:253,1
    - Dst: buffer_put
      Src: /src/frr/zebra/zserv.c:254,1
    - Dst: STREAM_DATA
      Src: /src/frr/zebra/zserv.c:254,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zserv.c:254,1
    - Dst: stream_free
      Src: /src/frr/zebra/zserv.c:255,1
    - Dst: stream_fifo_free
      Src: /src/frr/zebra/zserv.c:258,1
    - Dst: buffer_flush_all
      Src: /src/frr/zebra/zserv.c:261,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:265,1
    - Dst: zserv_client_event
      Src: /src/frr/zebra/zserv.c:268,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:274,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zserv.c:281,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:283,1
    - Dst: zserv_client_fail
      Src: /src/frr/zebra/zserv.c:284,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 285
    functionName: zserv_write
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - zserv_client_event
    - stream_fifo_new
    - stream_fifo_head
    - buffer_put
    - stream_set_getp
    - frr_with_mutex
    - stream_fifo_free
    - flog_warn
    - EVENT_ARG
    - stream_free
    - zserv_client_fail
    - monotime
    - zebra_route_string
    - buffer_flush_all
    - stream_fifo_push
    - stream_getw_from
    - STREAM_DATA
    - stream_get_endp
    - stream_fifo_pop
    linkageType: ''
    returnType: void
    signature: void zserv_write(struct event *thread)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zserv.c:311,1
    - Dst: atomic_load_explicit
      Src: /src/frr/zebra/zserv.c:320,1
    - Dst: stream_fifo_new
      Src: /src/frr/zebra/zserv.c:322,1
    - Dst: EVENT_FD
      Src: /src/frr/zebra/zserv.c:324,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zserv.c:331,1
    - Dst: stream_read_try
      Src: /src/frr/zebra/zserv.c:335,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:339,1
    - Dst: stream_set_getp
      Src: /src/frr/zebra/zserv.c:351,1
    - Dst: zapi_parse_header
      Src: /src/frr/zebra/zserv.c:354,1
    - Dst: snprintf
      Src: /src/frr/zebra/zserv.c:357,1
    - Dst: zserv_log_message
      Src: /src/frr/zebra/zserv.c:359,1
    - Dst: snprintf
      Src: /src/frr/zebra/zserv.c:366,1
    - Dst: zserv_log_message
      Src: /src/frr/zebra/zserv.c:370,1
    - Dst: snprintf
      Src: /src/frr/zebra/zserv.c:374,1
    - Dst: zserv_log_message
      Src: /src/frr/zebra/zserv.c:378,1
    - Dst: STREAM_SIZE
      Src: /src/frr/zebra/zserv.c:381,1
    - Dst: snprintf
      Src: /src/frr/zebra/zserv.c:382,1
    - Dst: STREAM_SIZE
      Src: /src/frr/zebra/zserv.c:386,1
    - Dst: zserv_log_message
      Src: /src/frr/zebra/zserv.c:387,1
    - Dst: stream_read_try
      Src: /src/frr/zebra/zserv.c:393,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:397,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:410,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zserv.c:411,1
    - Dst: stream_set_getp
      Src: /src/frr/zebra/zserv.c:415,1
    - Dst: stream_dup
      Src: /src/frr/zebra/zserv.c:416,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zserv.c:418,1
    - Dst: stream_reset
      Src: /src/frr/zebra/zserv.c:419,1
    - Dst: monotime
      Src: /src/frr/zebra/zserv.c:424,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:427,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:433,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zserv.c:435,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zserv.c:436,1
    - Dst: zserv_event
      Src: /src/frr/zebra/zserv.c:440,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:445,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:446,1
    - Dst: zserv_client_event
      Src: /src/frr/zebra/zserv.c:449,1
    - Dst: stream_fifo_free
      Src: /src/frr/zebra/zserv.c:451,1
    - Dst: stream_fifo_free
      Src: /src/frr/zebra/zserv.c:456,1
    - Dst: zserv_client_fail
      Src: /src/frr/zebra/zserv.c:457,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 458
    functionName: zserv_read
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - zserv_client_event
    - stream_fifo_new
    - stream_reset
    - stream_dup
    - stream_set_getp
    - frr_with_mutex
    - snprintf
    - zserv_log_message
    - stream_fifo_free
    - zlog_debug
    - atomic_load_explicit
    - EVENT_ARG
    - zserv_event
    - zserv_client_fail
    - zserv_command_string
    - monotime
    - zebra_route_string
    - STREAM_SIZE
    - stream_read_try
    - stream_fifo_push
    - EVENT_FD
    - stream_get_endp
    - stream_fifo_pop
    - zapi_parse_header
    linkageType: ''
    returnType: void
    signature: void zserv_read(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/zebra/zserv.c:468,1
    - Dst: event_add_write
      Src: /src/frr/zebra/zserv.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - client
    - event
    argTypes:
    - struct zserv*
    - enum zserv_client_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 476
    functionName: zserv_client_event
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 2
    functionsReached:
    - event_add_read
    - event_add_write
    linkageType: ''
    returnType: void
    signature: "void zserv_client_event(struct zserv *client,\n\t\t\t       enum zserv_client_event
      event)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zserv.c:499,1
    - Dst: stream_fifo_new
      Src: /src/frr/zebra/zserv.c:501,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:505,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zserv.c:507,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zserv.c:509,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zserv.c:510,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zserv.c:516,1
    - Dst: stream_fifo_head
      Src: /src/frr/zebra/zserv.c:521,1
    - Dst: zserv_handle_commands
      Src: /src/frr/zebra/zserv.c:522,1
    - Dst: stream_fifo_free
      Src: /src/frr/zebra/zserv.c:524,1
    - Dst: zserv_event
      Src: /src/frr/zebra/zserv.c:528,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 497
    functionDepth: 5
    functionLinenumber: 497
    functionLinenumberEnd: 529
    functionName: zserv_process_messages
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - stream_fifo_push
    - frr_with_mutex
    - stream_fifo_free
    - stream_fifo_new
    - stream_fifo_head
    - zserv_handle_commands
    - stream_fifo_pop
    - EVENT_ARG
    - zserv_event
    linkageType: ''
    returnType: void
    signature: void zserv_process_messages(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/zebra/zserv.c:534,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:537,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zserv.c:538,1
    - Dst: zserv_client_event
      Src: /src/frr/zebra/zserv.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - client
    - msg
    argTypes:
    - struct zserv*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 544
    functionName: zserv_send_message
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 38
    functionsReached:
    - stream_free
    - stream_fifo_push
    - frr_with_mutex
    - zserv_client_event
    linkageType: ''
    returnType: int
    signature: int zserv_send_message(struct zserv *client, struct stream *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:553,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zserv.c:554,1
    - Dst: stream_fifo_push
      Src: /src/frr/zebra/zserv.c:556,1
    - Dst: stream_fifo_pop
      Src: /src/frr/zebra/zserv.c:557,1
    - Dst: zserv_client_event
      Src: /src/frr/zebra/zserv.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - client
    - fifo
    argTypes:
    - struct zserv*
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 564
    functionName: zserv_send_batch
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - stream_fifo_pop
    - stream_fifo_push
    - frr_with_mutex
    - zserv_client_event
    linkageType: ''
    returnType: int
    signature: int zserv_send_batch(struct zserv *client, struct stream_fifo *fifo)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/zebra/zserv.c:587,1
    - Dst: close
      Src: /src/frr/zebra/zserv.c:595,1
    - Dst: DYNAMIC_CLIENT_GR_DISABLED
      Src: /src/frr/zebra/zserv.c:598,1
    - Dst: zebra_mpls_client_cleanup_vrf_label
      Src: /src/frr/zebra/zserv.c:599,1
    - Dst: rib_score_proto
      Src: /src/frr/zebra/zserv.c:601,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/zserv.c:603,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:606,1
    - Dst: zebra_nhg_score_proto
      Src: /src/frr/zebra/zserv.c:609,1
    - Dst: zlog_notice
      Src: /src/frr/zebra/zserv.c:610,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:613,1
    - Dst: stream_free
      Src: /src/frr/zebra/zserv.c:620,1
    - Dst: stream_free
      Src: /src/frr/zebra/zserv.c:622,1
    - Dst: stream_fifo_free
      Src: /src/frr/zebra/zserv.c:624,1
    - Dst: stream_fifo_free
      Src: /src/frr/zebra/zserv.c:626,1
    - Dst: buffer_free
      Src: /src/frr/zebra/zserv.c:628,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/zserv.c:632,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/zserv.c:633,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/zserv.c:634,1
    - Dst: vrf_bitmap_free
      Src: /src/frr/zebra/zserv.c:640,1
    - Dst: redist_del_all_instances
      Src: /src/frr/zebra/zserv.c:641,1
    - Dst: vrf_bitmap_free
      Src: /src/frr/zebra/zserv.c:644,1
    - Dst: vrf_bitmap_free
      Src: /src/frr/zebra/zserv.c:645,1
    - Dst: vrf_bitmap_free
      Src: /src/frr/zebra/zserv.c:646,1
    - Dst: DYNAMIC_CLIENT_GR_DISABLED
      Src: /src/frr/zebra/zserv.c:653,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:655,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:656,1
    - Dst: zserv_client_delete
      Src: /src/frr/zebra/zserv.c:657,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:661,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:662,1
    - Dst: zebra_gr_client_disconnect
      Src: /src/frr/zebra/zserv.c:663,1
    - Dst: zlog_err
      Src: /src/frr/zebra/zserv.c:664,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 668
    functionName: zserv_client_free
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - zebra_mpls_client_cleanup_vrf_label
    - stream_free
    - buffer_free
    - stream_fifo_free
    - hook_call
    - vrf_bitmap_free
    - DYNAMIC_CLIENT_GR_DISABLED
    - close
    - zebra_gr_client_disconnect
    - zlog_notice
    - zebra_nhg_score_proto
    - zlog_debug
    - zlog_err
    - zserv_client_delete
    - pthread_mutex_destroy
    - zebra_route_string
    - rib_score_proto
    - redist_del_all_instances
    linkageType: ''
    returnType: void
    signature: void zserv_client_free(struct zserv *client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_pthread_stop
      Src: /src/frr/zebra/zserv.c:677,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zserv.c:680,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:681,1
    - Dst: event_cancel_event
      Src: /src/frr/zebra/zserv.c:683,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zserv.c:684,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zserv.c:685,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/zebra/zserv.c:688,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/zserv.c:700,1
    - Dst: zserv_client_free
      Src: /src/frr/zebra/zserv.c:714,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 670
    functionDepth: 4
    functionLinenumber: 670
    functionLinenumberEnd: 715
    functionName: zserv_close_client
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - frr_pthread_destroy
    - zlog_debug
    - EVENT_OFF
    - frr_pthread_stop
    - event_cancel_event
    - listnode_delete
    - zebra_route_string
    - zserv_client_free
    linkageType: ''
    returnType: void
    signature: void zserv_close_client(struct zserv *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/zebra/zserv.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 710
    functionName: (&client_mutex)
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&client_mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zserv.c:725,1
    - Dst: zserv_close_client
      Src: /src/frr/zebra/zserv.c:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 723
    functionDepth: 5
    functionLinenumber: 723
    functionLinenumberEnd: 728
    functionName: zserv_handle_client_fail
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - zserv_close_client
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void zserv_handle_client_fail(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/frr/zebra/zserv.c:744,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/zserv.c:748,1
    - Dst: stream_fifo_new
      Src: /src/frr/zebra/zserv.c:752,1
    - Dst: stream_fifo_new
      Src: /src/frr/zebra/zserv.c:753,1
    - Dst: stream_new
      Src: /src/frr/zebra/zserv.c:754,1
    - Dst: stream_new
      Src: /src/frr/zebra/zserv.c:755,1
    - Dst: monotime
      Src: /src/frr/zebra/zserv.c:756,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/zserv.c:758,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/zserv.c:759,1
    - Dst: pthread_mutex_init
      Src: /src/frr/zebra/zserv.c:760,1
    - Dst: buffer_new
      Src: /src/frr/zebra/zserv.c:762,1
    - Dst: TAILQ_INIT
      Src: /src/frr/zebra/zserv.c:763,1
    - Dst: vrf_bitmap_init
      Src: /src/frr/zebra/zserv.c:768,1
    - Dst: vrf_bitmap_init
      Src: /src/frr/zebra/zserv.c:769,1
    - Dst: vrf_bitmap_init
      Src: /src/frr/zebra/zserv.c:770,1
    - Dst: vrf_bitmap_init
      Src: /src/frr/zebra/zserv.c:771,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zserv.c:776,1
    - Dst: frr_pthread_new
      Src: /src/frr/zebra/zserv.c:785,1
    - Dst: zserv_client_event
      Src: /src/frr/zebra/zserv.c:789,1
    - Dst: hook_call
      Src: /src/frr/zebra/zserv.c:793,1
    - Dst: frr_pthread_run
      Src: /src/frr/zebra/zserv.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 740
    functionDepth: 2
    functionLinenumber: 740
    functionLinenumberEnd: 801
    functionName: zserv_client_create
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - buffer_new
    - stream_new
    - vrf_bitmap_init
    - zserv_client_event
    - stream_fifo_new
    - XCALLOC
    - hook_call
    - frr_pthread_run
    - monotime
    - listnode_add
    - pthread_mutex_init
    - MAX
    - frr_pthread_new
    - TAILQ_INIT
    linkageType: ''
    returnType: struct zserv
    signature: struct zserv *zserv_client_create(int sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add
      Src: /src/frr/zebra/zserv.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 777
    functionName: (&client_mutex)
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - listnode_add
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&client_mutex)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_client_internal
      Src: /src/frr/zebra/zserv.c:816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - proto
    - instance
    - session_id
    argTypes:
    - uint8_t
    - unsigned short
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 810
    functionDepth: 1
    functionLinenumber: 810
    functionLinenumberEnd: 827
    functionName: zserv_acquire_client
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - find_client_internal
    linkageType: ''
    returnType: struct zserv
    signature: "struct zserv *zserv_acquire_client(uint8_t proto, unsigned short instance,\n\t\t\t\t
      \  uint32_t session_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_client_internal
      Src: /src/frr/zebra/zserv.c:816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 824
    functionName: (&client_mutex)
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - find_client_internal
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&client_mutex)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/zebra/zserv.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 861
    functionName: zserv_release_client
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zserv_release_client(struct zserv *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/zebra/zserv.c:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 841
    functionDepth: 1
    functionLinenumber: 841
    functionLinenumberEnd: 855
    functionName: (&client_mutex)
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&client_mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/zebra/zserv.c:873,1
    - Dst: zserv_event
      Src: /src/frr/zebra/zserv.c:876,1
    - Dst: accept
      Src: /src/frr/zebra/zserv.c:879,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zserv.c:882,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zserv.c:883,1
    - Dst: set_nonblocking
      Src: /src/frr/zebra/zserv.c:888,1
    - Dst: zserv_client_create
      Src: /src/frr/zebra/zserv.c:891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 866
    functionDepth: 3
    functionLinenumber: 866
    functionLinenumberEnd: 892
    functionName: zserv_accept
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - accept
    - zserv_client_create
    - safe_strerror
    - set_nonblocking
    - flog_err_sys
    - zserv_event
    linkageType: ''
    returnType: void
    signature: void zserv_accept(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/zebra/zserv.c:902,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/zebra/zserv.c:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 907
    functionName: zserv_close
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_destroy
    - close
    linkageType: ''
    returnType: void
    signature: void zserv_close(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: frr_zclient_addr
      Src: /src/frr/zebra/zserv.c:916,1
    - Dst: umask
      Src: /src/frr/zebra/zserv.c:921,1
    - Dst: socket
      Src: /src/frr/zebra/zserv.c:924,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zserv.c:926,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zserv.c:927,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/zebra/zserv.c:932,1
    - Dst: sockopt_reuseport
      Src: /src/frr/zebra/zserv.c:933,1
    - Dst: unlink
      Src: /src/frr/zebra/zserv.c:937,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/zebra/zserv.c:940,1
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/zebra/zserv.c:941,1
    - Dst: frr_with_privs
      Src: /src/frr/zebra/zserv.c:943,1
    - Dst: bind
      Src: /src/frr/zebra/zserv.c:944,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zserv.c:947,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zserv.c:948,1
    - Dst: close
      Src: /src/frr/zebra/zserv.c:949,1
    - Dst: listen
      Src: /src/frr/zebra/zserv.c:954,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/zserv.c:956,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/zserv.c:958,1
    - Dst: close
      Src: /src/frr/zebra/zserv.c:959,1
    - Dst: umask
      Src: /src/frr/zebra/zserv.c:964,1
    - Dst: zserv_event
      Src: /src/frr/zebra/zserv.c:966,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 967
    functionName: zserv_start
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 1
    functionsReached:
    - unlink
    - sockopt_reuseaddr
    - setsockopt_so_sendbuf
    - socket
    - frr_zclient_addr
    - sockopt_reuseport
    - close
    - frr_with_privs
    - safe_strerror
    - bind
    - listen
    - umask
    - setsockopt_so_recvbuf
    - flog_err_sys
    - zserv_event
    linkageType: ''
    returnType: void
    signature: void zserv_start(char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/zebra/zserv.c:976,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zserv.c:979,1
    - Dst: event_add_event
      Src: /src/frr/zebra/zserv.c:983,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - client
    - event
    argTypes:
    - struct zserv*
    - enum zserv_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 986
    functionName: zserv_event
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 5
    functionsReached:
    - event_add_read
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zserv_event(struct zserv *client, enum zserv_event event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zserv.c:996,1
    - Dst: assert
      Src: /src/frr/zebra/zserv.c:997,1
    - Dst: assert
      Src: /src/frr/zebra/zserv.c:998,1
    - Dst: snprintf
      Src: /src/frr/zebra/zserv.c:1001,1
    - Dst: monotime
      Src: /src/frr/zebra/zserv.c:1005,1
    - Dst: frrtime_to_interval
      Src: /src/frr/zebra/zserv.c:1008,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - time1
    - buf
    - buflen
    argTypes:
    - time_t*
    - char*
    - int
    assertStmts:
    - condition: (buf != NULL)
      pos:
        line_end: 995
        line_start: 995
        source_file: /src/frr/zebra/zserv.c
    - condition: (buflen >= ZEBRA_TIME_BUF)
      pos:
        line_end: 996
        line_start: 996
        source_file: /src/frr/zebra/zserv.c
    - condition: (time1 != NULL)
      pos:
        line_end: 997
        line_start: 997
        source_file: /src/frr/zebra/zserv.c
    constantsTouched: []
    func_position:
      end: 1011
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 1011
    functionName: zserv_time_buf
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - snprintf
    - frrtime_to_interval
    - monotime
    - assert
    linkageType: ''
    returnType: char
    signature: char *zserv_time_buf(time_t *time1, char *buf, int buflen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1021,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:1021,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1023,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1025,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1026,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1028,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1029,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:1031,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1040,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1041,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1043,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1044,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1047,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1048,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1051,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1053,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1055,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1059,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1060,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1061,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1062,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1064,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zserv.c:1065,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1067,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/zserv.c:1068,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1069,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1071,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1072,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1073,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1075,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1077,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1079,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1081,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1083,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1085,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1087,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1089,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1091,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1093,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1095,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1097,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1099,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1101,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1103,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1105,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1107,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1110,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 54
    argCount: 2
    argNames:
    - vty
    - client
    argTypes:
    - struct vty*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1014
    functionDepth: 2
    functionLinenumber: 1014
    functionLinenumberEnd: 1115
    functionName: zebra_show_client_detail
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - vty_out
    - frr_with_mutex
    - zserv_command_string
    - zserv_time_buf
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_show_client_detail(struct vty *vty, struct zserv *client)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/zebra/zserv.c:1127,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1129,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1130,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1133,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1135,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1140,1
    - Dst: vrf_id_to_name
      Src: /src/frr/zebra/zserv.c:1140,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1141,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1144,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1151,1
    - Dst: ZEBRA_CLIENT_GR_ENABLED
      Src: /src/frr/zebra/zserv.c:1155,1
    - Dst: monotime
      Src: /src/frr/zebra/zserv.c:1158,1
    - Dst: frrtime_to_interval
      Src: /src/frr/zebra/zserv.c:1161,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1163,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1166,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1169,1
    - Dst: event_timer_remain_second
      Src: /src/frr/zebra/zserv.c:1171,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1177,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - vty
    - client
    argTypes:
    - struct vty*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1179
    functionName: zebra_show_stale_client_detail
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vrf_id_to_name
    - monotime
    - event_timer_remain_second
    - ZEBRA_CLIENT_GR_ENABLED
    - frrtime_to_interval
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: "void zebra_show_stale_client_detail(struct vty *vty,\n\t\t\t\t\t   struct
      zserv *client)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:1188,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zserv.c:1195,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:1196,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zserv.c:1199,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zserv.c:1200,1
    - Dst: vty_out
      Src: /src/frr/zebra/zserv.c:1202,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1204,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1205,1
    - Dst: zserv_time_buf
      Src: /src/frr/zebra/zserv.c:1206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - vty
    - client
    argTypes:
    - struct vty*
    - struct zserv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1181
    functionDepth: 2
    functionLinenumber: 1181
    functionLinenumberEnd: 1211
    functionName: zebra_show_client_brief
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 0
    functionsReached:
    - vty_out
    - frr_with_mutex
    - zserv_time_buf
    - snprintfrr
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_show_client_brief(struct vty *vty, struct zserv *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/zebra/zserv.c:1224,1
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zserv.c:1237,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:1241,1
    - Dst: find_client_internal
      Src: /src/frr/zebra/zserv.c:1242,1
    - Dst: zserv_find_client_session
      Src: /src/frr/zebra/zserv.c:1251,1
    - Dst: frr_with_mutex
      Src: /src/frr/zebra/zserv.c:1256,1
    - Dst: find_client_internal
      Src: /src/frr/zebra/zserv.c:1257,1
    - Dst: DEFUN
      Src: /src/frr/zebra/zserv.c:1265,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zserv.c:1275,1
    - Dst: zebra_show_stale_client_detail
      Src: /src/frr/zebra/zserv.c:1278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 3
    argNames:
    - proto
    - instance
    - session_id
    argTypes:
    - uint8_t
    - unsigned short
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1217
    functionDepth: 2
    functionLinenumber: 1217
    functionLinenumberEnd: 1279
    functionName: find_client_internal
    functionSourceFile: /src/frr/zebra/zserv.c
    functionUses: 3
    functionsReached:
    - zserv_find_client
    - DEFUN
    - frr_with_mutex
    - ALL_LIST_ELEMENTS_RO
    - zebra_show_stale_client_detail
    - zserv_find_client_session
    - find_client_internal
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct zserv
    signature: "struct zserv *find_client_internal(uint8_t proto,\n\t\t\t\t\t  unsigned
      short instance,\n\t\t\t\t\t  uint32_t session_id)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:39,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls_vty.c:44,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:46,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:51,1
    - Dst: atoi
      Src: /src/frr/zebra/zebra_mpls_vty.c:56,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/zebra/zebra_mpls_vty.c:57,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:58,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:64,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:68,1
    - Dst: inet_pton
      Src: /src/frr/zebra/zebra_mpls_vty.c:78,1
    - Dst: inet_pton
      Src: /src/frr/zebra/zebra_mpls_vty.c:82,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:86,1
    - Dst: atoi
      Src: /src/frr/zebra/zebra_mpls_vty.c:100,1
    - Dst: zebra_mpls_lsp_label_consistent
      Src: /src/frr/zebra/zebra_mpls_vty.c:106,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:108,1
    - Dst: zebra_mpls_static_lsp_add
      Src: /src/frr/zebra/zebra_mpls_vty.c:113,1
    - Dst: zebra_mpls_static_lsp_del
      Src: /src/frr/zebra/zebra_mpls_vty.c:116,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:120,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 66
    argCount: 6
    argNames:
    - vty
    - add_cmd
    - inlabel_str
    - gate_str
    - outlabel_str
    - flag_str
    argTypes:
    - struct vty*
    - int
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 26
    functionDepth: 6
    functionLinenumber: 26
    functionLinenumberEnd: 126
    functionName: zebra_mpls_transit_lsp
    functionSourceFile: /src/frr/zebra/zebra_mpls_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - IS_MPLS_UNRESERVED_LABEL
    - inet_pton
    - zebra_mpls_lsp_label_consistent
    - zebra_vrf_lookup_by_id
    - atoi
    - zebra_mpls_static_lsp_add
    - zebra_mpls_static_lsp_del
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_transit_lsp(struct vty *vty, int add_cmd,\n\t\t\t\t
      \ const char *inlabel_str, const char *gate_str,\n\t\t\t\t  const char *outlabel_str,\n\t\t\t\t
      \ const char *flag_str)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls_vty.c:188,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:190,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_mpls_vty.c:194,1
    - Dst: str2prefix
      Src: /src/frr/zebra/zebra_mpls_vty.c:195,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:197,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:203,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_mpls_vty.c:207,1
    - Dst: strcmp
      Src: /src/frr/zebra/zebra_mpls_vty.c:209,1
    - Dst: atoi
      Src: /src/frr/zebra/zebra_mpls_vty.c:215,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/zebra/zebra_mpls_vty.c:216,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:217,1
    - Dst: zebra_mpls_label_already_bound
      Src: /src/frr/zebra/zebra_mpls_vty.c:220,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:221,1
    - Dst: zebra_mpls_static_fec_add
      Src: /src/frr/zebra/zebra_mpls_vty.c:227,1
    - Dst: zebra_mpls_static_fec_del
      Src: /src/frr/zebra/zebra_mpls_vty.c:229,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:232,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 4
    argNames:
    - vty
    - add_cmd
    - prefix
    - label_str
    argTypes:
    - struct vty*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 238
    functionName: zebra_mpls_bind
    functionSourceFile: /src/frr/zebra/zebra_mpls_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - zebra_mpls_static_fec_add
    - zebra_mpls_static_fec_del
    - strcmp
    - IS_MPLS_UNRESERVED_LABEL
    - zebra_mpls_label_already_bound
    - str2prefix
    - zebra_vrf_lookup_by_id
    - atoi
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_bind(struct vty *vty, int add_cmd, const char *prefix,\n\t\t\t
      \  const char *label_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls_vty.c:276,1
    - Dst: zebra_mpls_write_lsp_config
      Src: /src/frr/zebra/zebra_mpls_vty.c:280,1
    - Dst: zebra_mpls_write_fec_config
      Src: /src/frr/zebra/zebra_mpls_vty.c:281,1
    - Dst: zebra_mpls_write_label_block_config
      Src: /src/frr/zebra/zebra_mpls_vty.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 284
    functionName: zebra_mpls_config
    functionSourceFile: /src/frr/zebra/zebra_mpls_vty.c
    functionUses: 0
    functionsReached:
    - zebra_vrf_lookup_by_id
    - zebra_mpls_write_label_block_config
    - zebra_mpls_write_fec_config
    - zebra_mpls_write_lsp_config
    linkageType: ''
    returnType: int
    signature: int zebra_mpls_config(struct vty *vty)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_mpls_vty.c:375,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:377,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:383,1
    - Dst: atoi
      Src: /src/frr/zebra/zebra_mpls_vty.c:387,1
    - Dst: atoi
      Src: /src/frr/zebra/zebra_mpls_vty.c:388,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/zebra/zebra_mpls_vty.c:389,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/zebra/zebra_mpls_vty.c:390,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:391,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:395,1
    - Dst: zebra_mpls_label_block_add
      Src: /src/frr/zebra/zebra_mpls_vty.c:399,1
    - Dst: zebra_mpls_label_block_del
      Src: /src/frr/zebra/zebra_mpls_vty.c:401,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_mpls_vty.c:404,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - vty
    - add_cmd
    - start_label_str
    - end_label_str
    argTypes:
    - struct vty*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 410
    functionName: zebra_mpls_global_block
    functionSourceFile: /src/frr/zebra/zebra_mpls_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - zebra_mpls_label_block_del
    - IS_MPLS_UNRESERVED_LABEL
    - zebra_mpls_label_block_add
    - zebra_vrf_lookup_by_id
    - atoi
    linkageType: ''
    returnType: int
    signature: "int zebra_mpls_global_block(struct vty *vty, int add_cmd,\n\t\t\t\t
      \  const char *start_label_str,\n\t\t\t\t   const char *end_label_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:449,1
    - Dst: install_node
      Src: /src/frr/zebra/zebra_mpls_vty.c:451,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:453,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:454,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:455,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:456,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:458,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:459,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:461,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:462,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:464,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:465,1
    - Dst: install_element
      Src: /src/frr/zebra/zebra_mpls_vty.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 467
    functionName: zebra_mpls_vty_init
    functionSourceFile: /src/frr/zebra/zebra_mpls_vty.c
    functionUses: 2
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void zebra_mpls_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - con1
    - con2
    argTypes:
    - struct nhg_connected*
    - struct nhg_connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: nhg_connected_cmp
    functionSourceFile: /src/frr/zebra/zebra_nhg_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int nhg_connected_cmp(const struct nhg_connected *con1,\n\t\t\t     const
      struct nhg_connected *con2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: RTM_NHA
    functionSourceFile: /src/frr/zebra/kernel_netlink.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTM_NHA(h)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_netlink.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - af
    argTypes:
    - uint8_t
    assertStmts:
    - condition: (0)
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/frr/zebra/zebra_fpm_netlink.c
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: af_addr_size
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t af_addr_size(uint8_t af)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - encap_type
    argTypes:
    - enum fpm_nh_encap_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 79
    functionName: fpm_nh_encap_type_to_str
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *fpm_nh_encap_type_to_str(enum fpm_nh_encap_type_t encap_type)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm_netlink.c:160,1
    - Dst: array_size
      Src: /src/frr/zebra/zebra_fpm_netlink.c:163,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_netlink.c:196,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_fpm_netlink.c:200,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_fpm_netlink.c:202,1
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_fpm_netlink.c:207,1
    - Dst: IS_ZEBRA_IF_VLAN
      Src: /src/frr/zebra/zebra_fpm_netlink.c:209,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_fpm_netlink.c:211,1
    - Dst: vni_id_from_svi
      Src: /src/frr/zebra/zebra_fpm_netlink.c:215,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 49
    argCount: 3
    argNames:
    - ri
    - nexthop
    - re
    argTypes:
    - struct netlink_route_info*
    - struct nexthop*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 234
    functionName: netlink_route_info_add_nh
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 0
    functionsReached:
    - IS_ZEBRA_IF_VLAN
    - memset
    - CHECK_FLAG
    - if_lookup_by_index_per_ns
    - IS_ZEBRA_IF_BRIDGE
    - array_size
    - vni_id_from_svi
    - zebra_vrf_lookup_by_id
    linkageType: ''
    returnType: int
    signature: "int netlink_route_info_add_nh(struct netlink_route_info *ri,\n\t\t\t\t
      \    struct nexthop *nexthop,\n\t\t\t\t     struct route_entry *re)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra2proto
      Src: /src/frr/zebra/zebra_fpm_netlink.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: netlink_proto_from_route_type
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 0
    functionsReached:
    - zebra2proto
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t netlink_proto_from_route_type(int type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm_netlink.c:256,1
    - Dst: rib_dest_prefix
      Src: /src/frr/zebra/zebra_fpm_netlink.c:258,1
    - Dst: rib_dest_af
      Src: /src/frr/zebra/zebra_fpm_netlink.c:259,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_netlink.c:274,1
    - Dst: netlink_proto_from_route_type
      Src: /src/frr/zebra/zebra_fpm_netlink.c:280,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/zebra/zebra_fpm_netlink.c:284,1
    - Dst: if
      Src: /src/frr/zebra/zebra_fpm_netlink.c:288,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_netlink.c:288,1
    - Dst: if
      Src: /src/frr/zebra/zebra_fpm_netlink.c:291,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_netlink.c:307,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_netlink.c:309,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 4
    argNames:
    - ri
    - cmd
    - dest
    - re
    argTypes:
    - struct netlink_route_info*
    - int
    - rib_dest_t*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 311
    functionName: netlink_route_info_fill
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 0
    functionsReached:
    - memset
    - ALL_NEXTHOPS
    - CHECK_FLAG
    - zfpm_debug
    - rib_dest_prefix
    - rib_dest_af
    - netlink_proto_from_route_type
    - if
    linkageType: ''
    returnType: int
    signature: "int netlink_route_info_fill(struct netlink_route_info *ri, int cmd,\n\t\t\t\t
      \  rib_dest_t *dest, struct route_entry *re)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_netlink.c:361,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm_netlink.c:365,1
    - Dst: af_addr_size
      Src: /src/frr/zebra/zebra_fpm_netlink.c:367,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/zebra_fpm_netlink.c:369,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_fpm_netlink.c:386,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/zebra_fpm_netlink.c:393,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_fpm_netlink.c:400,1
    - Dst: ipv4_to_ipv4_mapped_ipv6
      Src: /src/frr/zebra/zebra_fpm_netlink.c:411,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/zebra_fpm_netlink.c:413,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/zebra_fpm_netlink.c:416,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_fpm_netlink.c:421,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/zebra_fpm_netlink.c:431,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/zebra_fpm_netlink.c:434,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_fpm_netlink.c:435,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/zebra_fpm_netlink.c:437,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/zebra_fpm_netlink.c:447,1
    - Dst: nl_attr_rtnh
      Src: /src/frr/zebra/zebra_fpm_netlink.c:450,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/zebra_fpm_netlink.c:454,1
    - Dst: nl_attr_put16
      Src: /src/frr/zebra/zebra_fpm_netlink.c:469,1
    - Dst: nl_attr_nest
      Src: /src/frr/zebra/zebra_fpm_netlink.c:473,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_fpm_netlink.c:474,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/zebra_fpm_netlink.c:476,1
    - Dst: nl_attr_rtnh_end
      Src: /src/frr/zebra/zebra_fpm_netlink.c:480,1
    - Dst: nl_attr_nest_end
      Src: /src/frr/zebra/zebra_fpm_netlink.c:483,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_netlink.c:484,1
    - Dst: RTA_LENGTH
      Src: /src/frr/zebra/zebra_fpm_netlink.c:484,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/zebra_fpm_netlink.c:489,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_netlink.c:493,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 91
    argCount: 3
    argNames:
    - ri
    - in_buf
    - in_buf_len
    argTypes:
    - struct netlink_route_info*
    - char*
    - size_t
    assertStmts:
    - condition: (0)
      pos:
        line_end: 360
        line_start: 360
        source_file: /src/frr/zebra/zebra_fpm_netlink.c
    - condition: (nest->rta_len > RTA_LENGTH(0))
      pos:
        line_end: 483
        line_start: 483
        source_file: /src/frr/zebra/zebra_fpm_netlink.c
    - condition: (req->n.nlmsg_len < in_buf_len)
      pos:
        line_end: 492
        line_start: 492
        source_file: /src/frr/zebra/zebra_fpm_netlink.c
    constantsTouched: []
    func_position:
      end: 495
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 495
    functionName: netlink_route_info_encode
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 0
    functionsReached:
    - nl_attr_put16
    - nl_attr_nest_end
    - memset
    - af_addr_size
    - nl_attr_put32
    - nl_attr_rtnh_end
    - nl_attr_put
    - nl_attr_nest
    - nl_attr_rtnh
    - NLMSG_LENGTH
    - ipv4_to_ipv4_mapped_ipv6
    - assert
    - RTA_LENGTH
    linkageType: ''
    returnType: int
    signature: "int netlink_route_info_encode(struct netlink_route_info *ri,\n\t\t\t\t
      \    char *in_buf, size_t in_buf_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_netlink.c:509,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/zebra_fpm_netlink.c:510,1
    - Dst: nl_rtproto_to_str
      Src: /src/frr/zebra/zebra_fpm_netlink.c:511,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_fpm_netlink.c:519,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_fpm_netlink.c:522,1
    - Dst: strlcpy
      Src: /src/frr/zebra/zebra_fpm_netlink.c:525,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_netlink.c:527,1
    - Dst: nexthop_type_to_str
      Src: /src/frr/zebra/zebra_fpm_netlink.c:529,1
    - Dst: fpm_nh_encap_type_to_str
      Src: /src/frr/zebra/zebra_fpm_netlink.c:530,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ri
    - label
    argTypes:
    - struct netlink_route_info*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 502
    functionDepth: 2
    functionLinenumber: 502
    functionLinenumberEnd: 533
    functionName: zfpm_log_route_info
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 0
    functionsReached:
    - nl_rtproto_to_str
    - strlcpy
    - fpm_nh_encap_type_to_str
    - zfpm_debug
    - inet_ntop
    - nexthop_type_to_str
    - nl_msg_type_to_str
    linkageType: ''
    returnType: void
    signature: "void zfpm_log_route_info(struct netlink_route_info *ri,\n\t\t\t\tconst
      char *label)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netlink_route_info_fill
      Src: /src/frr/zebra/zebra_fpm_netlink.c:551,1
    - Dst: zfpm_log_route_info
      Src: /src/frr/zebra/zebra_fpm_netlink.c:554,1
    - Dst: netlink_route_info_encode
      Src: /src/frr/zebra/zebra_fpm_netlink.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - cmd
    - dest
    - re
    - in_buf
    - in_buf_len
    argTypes:
    - int
    - rib_dest_t*
    - struct route_entry*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 544
    functionDepth: 4
    functionLinenumber: 544
    functionLinenumberEnd: 557
    functionName: zfpm_netlink_encode_route
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 2
    functionsReached:
    - netlink_route_info_encode
    - netlink_route_info_fill
    - zfpm_log_route_info
    linkageType: ''
    returnType: int
    signature: "int zfpm_netlink_encode_route(int cmd, rib_dest_t *dest, struct route_entry
      *re,\n\t\t\t      char *in_buf, size_t in_buf_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_fpm_netlink.c:582,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/zebra/zebra_fpm_netlink.c:585,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_netlink.c:586,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_fpm_netlink.c:598,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/zebra_fpm_netlink.c:605,1
    - Dst: nl_attr_put
      Src: /src/frr/zebra/zebra_fpm_netlink.c:606,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_fpm_netlink.c:607,1
    - Dst: nl_attr_put32
      Src: /src/frr/zebra/zebra_fpm_netlink.c:608,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_fpm_netlink.c:610,1
    - Dst: zfpm_debug
      Src: /src/frr/zebra/zebra_fpm_netlink.c:612,1
    - Dst: nl_msg_type_to_str
      Src: /src/frr/zebra/zebra_fpm_netlink.c:613,1
    - Dst: nl_family_to_str
      Src: /src/frr/zebra/zebra_fpm_netlink.c:614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - mac
    - in_buf
    - in_buf_len
    argTypes:
    - struct fpm_mac_info_t*
    - char*
    - size_t
    assertStmts:
    - condition: (req->hdr.nlmsg_len < in_buf_len)
      pos:
        line_end: 609
        line_start: 609
        source_file: /src/frr/zebra/zebra_fpm_netlink.c
    constantsTouched: []
    func_position:
      end: 618
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 618
    functionName: zfpm_netlink_encode_mac
    functionSourceFile: /src/frr/zebra/zebra_fpm_netlink.c
    functionUses: 1
    functionsReached:
    - nl_family_to_str
    - nl_attr_put32
    - memset
    - CHECK_FLAG
    - zfpm_debug
    - nl_attr_put
    - nl_msg_type_to_str
    - NLMSG_LENGTH
    - assert
    linkageType: ''
    returnType: int
    signature: "int zfpm_netlink_encode_mac(struct fpm_mac_info_t *mac, char *in_buf,\n\t\t\t
      \   size_t in_buf_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn_vxlan.h:16,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/zebra_evpn_vxlan.h:18,1
    - Dst: IS_ZEBRA_IF_MACVLAN
      Src: /src/frr/zebra/zebra_evpn_vxlan.h:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/frr/zebra/zebra_evpn_vxlan.h
    constantsTouched: []
    func_position:
      end: 31
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 31
    functionName: zebra_get_vrr_intf_for_svi
    functionSourceFile: /src/frr/zebra/zebra_evpn_vxlan.h
    functionUses: 3
    functionsReached:
    - FOR_ALL_INTERFACES
    - IS_ZEBRA_IF_MACVLAN
    - assert
    linkageType: ''
    returnType: struct interface
    signature: 'struct interface *

      zebra_get_vrr_intf_for_svi(struct interface *ifp)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_vxl_evpn_set
      Src: /src/frr/zebra/zebra_evpn_vxlan.h:54,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - zevpn
    - ifp
    - set
    argTypes:
    - struct zebra_evpn*
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 55
    functionName: zevpn_vxlan_if_set
    functionSourceFile: /src/frr/zebra/zebra_evpn_vxlan.h
    functionUses: 4
    functionsReached:
    - zebra_evpn_vxl_evpn_set
    linkageType: ''
    returnType: void
    signature: "void zevpn_vxlan_if_set(struct zebra_evpn *zevpn,\n\t\t\t\t      struct
      interface *ifp, bool set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - zevpn
    - ifp
    - set
    argTypes:
    - struct zebra_evpn*
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 70
    functionName: zevpn_bridge_if_set
    functionSourceFile: /src/frr/zebra/zebra_evpn_vxlan.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zevpn_bridge_if_set(struct zebra_evpn *zevpn,\n\t\t\t\t       struct
      interface *ifp, bool set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - zl3vni
    - ifp
    - set
    argTypes:
    - struct zebra_l3vni*
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 85
    functionName: zl3vni_bridge_if_set
    functionSourceFile: /src/frr/zebra/zebra_evpn_vxlan.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void zl3vni_bridge_if_set(struct zebra_l3vni *zl3vni,\n\t\t\t\t\tstruct
      interface *ifp, bool set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmp_name_func
      Src: /src/frr/zebra/rtadv.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct adv_if*
    - struct adv_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: adv_if_cmp
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - if_cmp_name_func
    linkageType: ''
    returnType: int
    signature: int adv_if_cmp(const struct adv_if *a, const struct adv_if *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_cmp
      Src: /src/frr/zebra/rtadv.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct rtadv_prefix*
    - struct rtadv_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: rtadv_prefix_cmp
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int rtadv_prefix_cmp(const struct rtadv_prefix *a,\n\t\t\t    const
      struct rtadv_prefix *b)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/rtadv.c:106,1
    - Dst: vrf_info_lookup
      Src: /src/frr/zebra/rtadv.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: rtadv_interface_get_zvrf
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - vrf_info_lookup
    linkageType: ''
    returnType: struct zebra_vrf
    signature: struct zebra_vrf *rtadv_interface_get_zvrf(const struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/rtadv.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - zvrf
    - ifindex
    argTypes:
    - struct zebra_vrf*
    - ifindex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 125
    functionName: rtadv_increment_received
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    linkageType: ''
    returnType: int
    signature: int rtadv_increment_received(struct zebra_vrf *zvrf, ifindex_t *ifindex)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:140,1
    - Dst: recvmsg
      Src: /src/frr/zebra/rtadv.c:151,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/zebra/rtadv.c:155,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/zebra/rtadv.c:156,1
    - Dst: CMSG_DATA
      Src: /src/frr/zebra/rtadv.c:162,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:164,1
    - Dst: CMSG_DATA
      Src: /src/frr/zebra/rtadv.c:170,1
    - Dst: rtadv_increment_received
      Src: /src/frr/zebra/rtadv.c:175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 7
    argNames:
    - zvrf
    - sock
    - buf
    - buflen
    - from
    - ifindex
    - hoplimit
    argTypes:
    - struct zebra_vrf*
    - int
    - uint8_t*
    - int
    - struct sockaddr_in6*
    - ifindex_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 177
    functionName: rtadv_recv_packet
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - CMSG_NXTHDR
    - memset
    - rtadv_increment_received
    - CMSG_FIRSTHDR
    - CMSG_DATA
    - memcpy
    - recvmsg
    linkageType: ''
    returnType: int
    signature: "int rtadv_recv_packet(struct zebra_vrf *zvrf, int sock, uint8_t *buf,\n\t\t\t
      \    int buflen, struct sockaddr_in6 *from,\n\t\t\t     ifindex_t *ifindex,
      int *hoplimit)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/zebra/rtadv.c:210,1
    - Dst: CMSG_SPACE
      Src: /src/frr/zebra/rtadv.c:210,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:213,1
    - Dst: exit
      Src: /src/frr/zebra/rtadv.c:214,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:220,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:224,1
    - Dst: htons
      Src: /src/frr/zebra/rtadv.c:229,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/rtadv.c:230,1
    - Dst: MAX
      Src: /src/frr/zebra/rtadv.c:267,1
    - Dst: htons
      Src: /src/frr/zebra/rtadv.c:271,1
    - Dst: htons
      Src: /src/frr/zebra/rtadv.c:271,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:272,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:273,1
    - Dst: htons
      Src: /src/frr/zebra/rtadv.c:290,1
    - Dst: htons
      Src: /src/frr/zebra/rtadv.c:300,1
    - Dst: MAX
      Src: /src/frr/zebra/rtadv.c:302,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:317,1
    - Dst: frr_each
      Src: /src/frr/zebra/rtadv.c:322,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:340,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:342,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/rtadv.c:345,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:359,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:363,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:373,1
    - Dst: MIN
      Src: /src/frr/zebra/rtadv.c:383,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/rtadv.c:388,1
    - Dst: if
      Src: /src/frr/zebra/rtadv.c:392,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:393,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:403,1
    - Dst: MAX
      Src: /src/frr/zebra/rtadv.c:406,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/rtadv.c:410,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/rtadv.c:417,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:422,1
    - Dst: htonl
      Src: /src/frr/zebra/rtadv.c:432,1
    - Dst: MAX
      Src: /src/frr/zebra/rtadv.c:435,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:439,1
    - Dst: CMSG_SPACE
      Src: /src/frr/zebra/rtadv.c:454,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/zebra/rtadv.c:459,1
    - Dst: CMSG_LEN
      Src: /src/frr/zebra/rtadv.c:460,1
    - Dst: CMSG_DATA
      Src: /src/frr/zebra/rtadv.c:464,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:465,1
    - Dst: sendmsg
      Src: /src/frr/zebra/rtadv.c:468,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/rtadv.c:470,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtadv.c:473,1
    - Dst: rtadv_timer
      Src: /src/frr/zebra/rtadv.c:478,1
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/rtadv.c:480,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:487,1
    - Dst: rtadv_event
      Src: /src/frr/zebra/rtadv.c:489,1
    - Dst: rtadv_event
      Src: /src/frr/zebra/rtadv.c:492,1
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/rtadv.c:495,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/zebra/rtadv.c:496,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/rtadv.c:497,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/rtadv.c:497,1
    - Dst: IS_ZEBRA_IF_BRIDGE_SLAVE
      Src: /src/frr/zebra/rtadv.c:498,1
    - Dst: connected_get_linklocal
      Src: /src/frr/zebra/rtadv.c:499,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/rtadv.c:500,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:517,1
    - Dst: rtadv_send_packet
      Src: /src/frr/zebra/rtadv.c:523,1
    - Dst: rtadv_send_packet
      Src: /src/frr/zebra/rtadv.c:536,1
    - Dst: rtadv_process_solicit
      Src: /src/frr/zebra/rtadv.c:545,1
    - Dst: rtadv_interface_get_zvrf
      Src: /src/frr/zebra/rtadv.c:550,1
    - Dst: assert
      Src: /src/frr/zebra/rtadv.c:551,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 85
    argCount: 3
    argNames:
    - sock
    - ifp
    - stop
    argTypes:
    - int
    - struct interface*
    - enum ipv6_nd_suppress_ra_status
    assertStmts:
    - condition: (zvrf)
      pos:
        line_end: 550
        line_start: 550
        source_file: /src/frr/zebra/rtadv.c
    constantsTouched: []
    func_position:
      end: 569
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 569
    functionName: rtadv_send_packet
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 1
    functionsReached:
    - connected_get_linklocal
    - vrf_is_backend_netns
    - htons
    - frr_each
    - rtadv_interface_get_zvrf
    - CMSG_FIRSTHDR
    - zlog_warn
    - htonl
    - rtadv_timer
    - calloc
    - MIN
    - exit
    - memset
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - FOR_ALL_INTERFACES
    - zlog_debug
    - safe_strerror
    - EVENT_ARG
    - if
    - IS_ZEBRA_IF_BRIDGE_SLAVE
    - flog_err_sys
    - CMSG_LEN
    - adv_if_list_count
    - assert
    - if_is_operative
    - sendmsg
    - CMSG_SPACE
    - CMSG_DATA
    - MAX
    - memcpy
    - rtadv_send_packet
    - rtadv_process_solicit
    - rtadv_event
    - IPV6_ADDR_COPY
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void rtadv_send_packet(int sock, struct interface *ifp,\n\t\t\t      enum
      ipv6_nd_suppress_ra_status stop)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - opt_type
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 593
    functionName: rtadv_optionalhdr2str
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rtadv_optionalhdr2str(uint8_t opt_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_nbr_mac_to_ipv4ll_neigh_update
      Src: /src/frr/zebra/rtadv.c:615,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:620,1
    - Dst: rtadv_optionalhdr2str
      Src: /src/frr/zebra/rtadv.c:623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - optional
    - len
    - ifp
    - addr
    argTypes:
    - uint8_t*
    - unsigned int
    - struct interface*
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 632
    functionName: rtadv_process_optional
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - rtadv_optionalhdr2str
    - if_nbr_mac_to_ipv4ll_neigh_update
    linkageType: ''
    returnType: void
    signature: "void rtadv_process_optional(uint8_t *optional, unsigned int len,\n\t\t\t\t
      \  struct interface *ifp,\n\t\t\t\t   struct sockaddr_in6 *addr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/zebra/rtadv.c:645,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:649,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/rtadv.c:656,1
    - Dst: rtadv_process_optional
      Src: /src/frr/zebra/rtadv.c:657,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:661,1
    - Dst: monotime_since
      Src: /src/frr/zebra/rtadv.c:674,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtadv.c:677,1
    - Dst: monotime
      Src: /src/frr/zebra/rtadv.c:682,1
    - Dst: monotime_since
      Src: /src/frr/zebra/rtadv.c:687,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtadv.c:690,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:695,1
    - Dst: monotime
      Src: /src/frr/zebra/rtadv.c:697,1
    - Dst: monotime_since
      Src: /src/frr/zebra/rtadv.c:702,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtadv.c:705,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:710,1
    - Dst: monotime
      Src: /src/frr/zebra/rtadv.c:712,1
    - Dst: ntohl
      Src: /src/frr/zebra/rtadv.c:716,1
    - Dst: monotime_since
      Src: /src/frr/zebra/rtadv.c:717,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtadv.c:720,1
    - Dst: ntohl
      Src: /src/frr/zebra/rtadv.c:724,1
    - Dst: monotime
      Src: /src/frr/zebra/rtadv.c:725,1
    - Dst: ntohl
      Src: /src/frr/zebra/rtadv.c:729,1
    - Dst: monotime_since
      Src: /src/frr/zebra/rtadv.c:731,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtadv.c:734,1
    - Dst: ntohl
      Src: /src/frr/zebra/rtadv.c:738,1
    - Dst: monotime
      Src: /src/frr/zebra/rtadv.c:739,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/zebra/rtadv.c:744,1
    - Dst: nbr_connected_check
      Src: /src/frr/zebra/rtadv.c:747,1
    - Dst: nbr_connected_add_ipv6
      Src: /src/frr/zebra/rtadv.c:748,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 40
    argCount: 4
    argNames:
    - msg
    - len
    - ifp
    - addr
    argTypes:
    - uint8_t*
    - unsigned int
    - struct interface*
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 634
    functionDepth: 2
    functionLinenumber: 634
    functionLinenumberEnd: 749
    functionName: rtadv_process_advert
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - rtadv_process_optional
    - flog_warn
    - nbr_connected_add_ipv6
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - monotime
    - inet_ntop
    - zlog_debug
    - monotime_since
    - nbr_connected_check
    - IPV6_ADDR_COPY
    - ntohl
    linkageType: ''
    returnType: void
    signature: "void rtadv_process_advert(uint8_t *msg, unsigned int len,\n\t\t\t\t
      struct interface *ifp,\n\t\t\t\t struct sockaddr_in6 *addr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/zebra/rtadv.c:762,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/rtadv.c:765,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtadv.c:767,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:774,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/rtadv.c:777,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:787,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:798,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:806,1
    - Dst: rtadv_process_solicit
      Src: /src/frr/zebra/rtadv.c:813,1
    - Dst: rtadv_process_advert
      Src: /src/frr/zebra/rtadv.c:815,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 6
    argNames:
    - buf
    - len
    - ifindex
    - hoplimit
    - from
    - zvrf
    argTypes:
    - uint8_t*
    - unsigned int
    - ifindex_t
    - int
    - struct sockaddr_in6*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 752
    functionDepth: 3
    functionLinenumber: 752
    functionLinenumberEnd: 818
    functionName: rtadv_process_packet
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - flog_warn
    - if_is_loopback
    - rtadv_process_solicit
    - inet_ntop
    - zlog_debug
    - rtadv_process_advert
    linkageType: ''
    returnType: void
    signature: "void rtadv_process_packet(uint8_t *buf, unsigned int len,\n\t\t\t\t
      ifindex_t ifindex, int hoplimit,\n\t\t\t\t struct sockaddr_in6 *from,\n\t\t\t\t
      struct zebra_vrf *zvrf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/rtadv.c:828,1
    - Dst: EVENT_FD
      Src: /src/frr/zebra/rtadv.c:830,1
    - Dst: rtadv_event
      Src: /src/frr/zebra/rtadv.c:834,1
    - Dst: rtadv_recv_packet
      Src: /src/frr/zebra/rtadv.c:836,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/rtadv.c:840,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtadv.c:842,1
    - Dst: rtadv_process_packet
      Src: /src/frr/zebra/rtadv.c:846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 820
    functionDepth: 4
    functionLinenumber: 820
    functionLinenumberEnd: 847
    functionName: rtadv_read
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - rtadv_process_packet
    - rtadv_event
    - rtadv_recv_packet
    - safe_strerror
    - EVENT_ARG
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void rtadv_read(struct event *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ns_socket
      Src: /src/frr/zebra/rtadv.c:858,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:867,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtadv.c:868,1
    - Dst: setsockopt_ipv6_pktinfo
      Src: /src/frr/zebra/rtadv.c:872,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:874,1
    - Dst: close
      Src: /src/frr/zebra/rtadv.c:875,1
    - Dst: setsockopt_ipv6_multicast_loop
      Src: /src/frr/zebra/rtadv.c:878,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:880,1
    - Dst: close
      Src: /src/frr/zebra/rtadv.c:881,1
    - Dst: setsockopt_ipv6_unicast_hops
      Src: /src/frr/zebra/rtadv.c:884,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:886,1
    - Dst: close
      Src: /src/frr/zebra/rtadv.c:887,1
    - Dst: setsockopt_ipv6_multicast_hops
      Src: /src/frr/zebra/rtadv.c:890,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:892,1
    - Dst: close
      Src: /src/frr/zebra/rtadv.c:893,1
    - Dst: setsockopt_ipv6_hoplimit
      Src: /src/frr/zebra/rtadv.c:896,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/rtadv.c:898,1
    - Dst: close
      Src: /src/frr/zebra/rtadv.c:899,1
    - Dst: ICMP6_FILTER_SETBLOCKALL
      Src: /src/frr/zebra/rtadv.c:903,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/frr/zebra/rtadv.c:904,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/frr/zebra/rtadv.c:905,1
    - Dst: setsockopt
      Src: /src/frr/zebra/rtadv.c:907,1
    - Dst: zlog_info
      Src: /src/frr/zebra/rtadv.c:910,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtadv.c:910,1
    - Dst: close
      Src: /src/frr/zebra/rtadv.c:911,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 916
    functionName: rtadv_make_socket
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - setsockopt_ipv6_multicast_loop
    - close
    - setsockopt_ipv6_unicast_hops
    - ns_socket
    - zlog_warn
    - safe_strerror
    - setsockopt
    - setsockopt_ipv6_pktinfo
    - setsockopt_ipv6_multicast_hops
    - setsockopt_ipv6_hoplimit
    - ICMP6_FILTER_SETBLOCKALL
    - ICMP6_FILTER_SETPASS
    linkageType: ''
    returnType: int
    signature: int rtadv_make_socket(ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_socket
      Src: /src/frr/zebra/rtadv.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 864
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - ns_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/rtadv.c:922,1
    - Dst: strlcpy
      Src: /src/frr/zebra/rtadv.c:924,1
    - Dst: name::name
      Src: /src/frr/zebra/rtadv.c:924,1
    - Dst: name::name
      Src: /src/frr/zebra/rtadv.c:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 927
    functionName: adv_if_new
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - strlcpy
    - name::name
    linkageType: ''
    returnType: struct adv_if
    signature: struct adv_if *adv_if_new(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/rtadv.c:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adv_if
    argTypes:
    - struct adv_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 932
    functionName: adv_if_free
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void adv_if_free(struct adv_if *adv_if)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adv_if_head
    argTypes:
    - struct adv_if_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 937
    functionName: adv_if_is_empty_internal
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - adv_if_list_count
    linkageType: ''
    returnType: bool
    signature: bool adv_if_is_empty_internal(const struct adv_if_list_head *adv_if_head)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/rtadv.c:945,1
    - Dst: adv_if_list_find
      Src: /src/frr/zebra/rtadv.c:946,1
    - Dst: adv_if_new
      Src: /src/frr/zebra/rtadv.c:951,1
    - Dst: adv_if_list_add
      Src: /src/frr/zebra/rtadv.c:952,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - adv_if_head
    - name
    argTypes:
    - struct adv_if_list_head*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 939
    functionDepth: 2
    functionLinenumber: 939
    functionLinenumberEnd: 955
    functionName: adv_if_add_internal
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - adv_if_new
    - strlcpy
    - adv_if_list_add
    - adv_if_list_find
    linkageType: ''
    returnType: struct adv_if
    signature: "struct adv_if *adv_if_add_internal(struct adv_if_list_head *adv_if_head,\n\t\t\t\t\t
      \ const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/zebra/rtadv.c:963,1
    - Dst: adv_if_list_find
      Src: /src/frr/zebra/rtadv.c:964,1
    - Dst: adv_if_list_del
      Src: /src/frr/zebra/rtadv.c:969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - adv_if_head
    - name
    argTypes:
    - struct adv_if_list_head*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 972
    functionName: adv_if_del_internal
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - adv_if_list_del
    - adv_if_list_find
    linkageType: ''
    returnType: struct adv_if
    signature: "struct adv_if *adv_if_del_internal(struct adv_if_list_head *adv_if_head,\n\t\t\t\t\t
      \ const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_is_empty_internal
      Src: /src/frr/zebra/rtadv.c:978,1
    - Dst: adv_if_list_del
      Src: /src/frr/zebra/rtadv.c:980,1
    - Dst: adv_if_free
      Src: /src/frr/zebra/rtadv.c:981,1
    - Dst: adv_if_list_fini
      Src: /src/frr/zebra/rtadv.c:985,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - adv_if_head
    argTypes:
    - struct adv_if_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 974
    functionDepth: 1
    functionLinenumber: 974
    functionLinenumberEnd: 986
    functionName: adv_if_clean_internal
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - adv_if_is_empty_internal
    - adv_if_list_del
    - adv_if_list_fini
    - adv_if_free
    linkageType: ''
    returnType: void
    signature: void adv_if_clean_internal(struct adv_if_list_head *adv_if_head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_list_del
      Src: /src/frr/zebra/rtadv.c:980,1
    - Dst: adv_if_free
      Src: /src/frr/zebra/rtadv.c:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 982
    functionName: frr_each_safe
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 34
    functionsReached:
    - adv_if_list_del
    - adv_if_free
    linkageType: ''
    returnType: void
    signature: void frr_each_safe (adv_if_list, adv_if_head, node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_add_internal
      Src: /src/frr/zebra/rtadv.c:997,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1005,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1006,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1006,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - zvrf
    - name
    argTypes:
    - struct zebra_vrf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 993
    functionDepth: 3
    functionLinenumber: 993
    functionLinenumberEnd: 1011
    functionName: adv_if_add
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zlog_debug
    - VRF_LOGNAME
    - adv_if_add_internal
    - adv_if_list_count
    linkageType: ''
    returnType: struct adv_if
    signature: struct adv_if *adv_if_add(struct zebra_vrf *zvrf, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_del_internal
      Src: /src/frr/zebra/rtadv.c:1021,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1029,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1030,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1030,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1031,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - zvrf
    - name
    argTypes:
    - struct zebra_vrf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1017
    functionDepth: 2
    functionLinenumber: 1017
    functionLinenumberEnd: 1035
    functionName: adv_if_del
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zlog_debug
    - VRF_LOGNAME
    - adv_if_del_internal
    - adv_if_list_count
    linkageType: ''
    returnType: struct adv_if
    signature: struct adv_if *adv_if_del(struct zebra_vrf *zvrf, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_add_internal
      Src: /src/frr/zebra/rtadv.c:1045,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1053,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1054,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1054,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1055,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - zvrf
    - name
    argTypes:
    - struct zebra_vrf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1041
    functionDepth: 3
    functionLinenumber: 1041
    functionLinenumberEnd: 1059
    functionName: adv_msec_if_add
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zlog_debug
    - VRF_LOGNAME
    - adv_if_add_internal
    - adv_if_list_count
    linkageType: ''
    returnType: struct adv_if
    signature: struct adv_if *adv_msec_if_add(struct zebra_vrf *zvrf, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_del_internal
      Src: /src/frr/zebra/rtadv.c:1069,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1077,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1078,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1078,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1079,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - zvrf
    - name
    argTypes:
    - struct zebra_vrf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1065
    functionDepth: 2
    functionLinenumber: 1065
    functionLinenumberEnd: 1083
    functionName: adv_msec_if_del
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zvrf_id
    - zlog_debug
    - VRF_LOGNAME
    - adv_if_del_internal
    - adv_if_list_count
    linkageType: ''
    returnType: struct adv_if
    signature: struct adv_if *adv_msec_if_del(struct zebra_vrf *zvrf, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1091,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1092,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1092,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1093,1
    - Dst: adv_if_clean_internal
      Src: /src/frr/zebra/rtadv.c:1096,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1086
    functionDepth: 2
    functionLinenumber: 1086
    functionLinenumberEnd: 1097
    functionName: adv_if_clean
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - adv_if_clean_internal
    - zvrf_id
    - zlog_debug
    - VRF_LOGNAME
    - adv_if_list_count
    linkageType: ''
    returnType: void
    signature: void adv_if_clean(struct zebra_vrf *zvrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1105,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1106,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1106,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1107,1
    - Dst: adv_if_clean_internal
      Src: /src/frr/zebra/rtadv.c:1110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zvrf
    argTypes:
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1100
    functionDepth: 2
    functionLinenumber: 1100
    functionLinenumberEnd: 1111
    functionName: adv_msec_if_clean
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - adv_if_clean_internal
    - zvrf_id
    - zlog_debug
    - VRF_LOGNAME
    - adv_if_list_count
    linkageType: ''
    returnType: void
    signature: void adv_msec_if_clean(struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/rtadv.c:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1113
    functionDepth: 0
    functionLinenumber: 1113
    functionLinenumberEnd: 1116
    functionName: rtadv_prefix_new
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rtadv_prefix
    signature: struct rtadv_prefix *rtadv_prefix_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/rtadv.c:1120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtadv_prefix
    argTypes:
    - struct rtadv_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1121
    functionName: rtadv_prefix_free
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rtadv_prefix_free(struct rtadv_prefix *rtadv_prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rtadv_prefixes_find
      Src: /src/frr/zebra/rtadv.c:1130,1
    - Dst: rtadv_prefix_new
      Src: /src/frr/zebra/rtadv.c:1134,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:1135,1
    - Dst: rtadv_prefixes_add
      Src: /src/frr/zebra/rtadv.c:1136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - list
    - p
    argTypes:
    - struct rtadv_prefixes_head*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1123
    functionDepth: 1
    functionLinenumber: 1123
    functionLinenumberEnd: 1139
    functionName: rtadv_prefix_get
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - rtadv_prefix_new
    - rtadv_prefixes_add
    - rtadv_prefixes_find
    - memcpy
    linkageType: ''
    returnType: struct rtadv_prefix
    signature: "struct rtadv_prefix *rtadv_prefix_get(struct rtadv_prefixes_head *list,\n\t\t\t\t\t
      \    struct prefix_ipv6 *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - rp
    argTypes:
    - struct rtadv_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1141
    functionDepth: 0
    functionLinenumber: 1141
    functionLinenumberEnd: 1148
    functionName: rtadv_prefix_set_defaults
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtadv_prefix_set_defaults(struct rtadv_prefix *rp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rtadv_prefix_get
      Src: /src/frr/zebra/rtadv.c:1154,1
    - Dst: rtadv_prefix_set_defaults
      Src: /src/frr/zebra/rtadv.c:1180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - zif
    - rp
    argTypes:
    - struct zebra_if*
    - struct rtadv_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1150
    functionDepth: 2
    functionLinenumber: 1150
    functionLinenumberEnd: 1183
    functionName: rtadv_prefix_set
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - rtadv_prefix_set_defaults
    - rtadv_prefix_get
    linkageType: ''
    returnType: void
    signature: void rtadv_prefix_set(struct zebra_if *zif, struct rtadv_prefix *rp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rtadv_prefixes_find
      Src: /src/frr/zebra/rtadv.c:1189,1
    - Dst: rtadv_prefix_set_defaults
      Src: /src/frr/zebra/rtadv.c:1202,1
    - Dst: rtadv_prefixes_del
      Src: /src/frr/zebra/rtadv.c:1212,1
    - Dst: rtadv_prefix_free
      Src: /src/frr/zebra/rtadv.c:1213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - zif
    - rp
    argTypes:
    - struct zebra_if*
    - struct rtadv_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1217
    functionName: rtadv_prefix_reset
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - rtadv_prefixes_del
    - rtadv_prefixes_find
    - rtadv_prefix_set_defaults
    - rtadv_prefix_free
    linkageType: ''
    returnType: int
    signature: int rtadv_prefix_reset(struct zebra_if *zif, struct rtadv_prefix *rp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv6
      Src: /src/frr/zebra/rtadv.c:1225,1
    - Dst: rtadv_prefix_set
      Src: /src/frr/zebra/rtadv.c:1227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - zif
    - p
    argTypes:
    - struct zebra_if*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1220
    functionDepth: 3
    functionLinenumber: 1220
    functionLinenumberEnd: 1228
    functionName: rtadv_add_prefix
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv6
    - rtadv_prefix_set
    linkageType: ''
    returnType: void
    signature: void rtadv_add_prefix(struct zebra_if *zif, const struct prefix_ipv6
      *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv6
      Src: /src/frr/zebra/rtadv.c:1236,1
    - Dst: rtadv_prefix_reset
      Src: /src/frr/zebra/rtadv.c:1238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - zif
    - p
    argTypes:
    - struct zebra_if*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1231
    functionDepth: 2
    functionLinenumber: 1231
    functionLinenumberEnd: 1239
    functionName: rtadv_delete_prefix
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 1
    functionsReached:
    - apply_mask_ipv6
    - rtadv_prefix_reset
    linkageType: ''
    returnType: void
    signature: void rtadv_delete_prefix(struct zebra_if *zif, const struct prefix
      *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1248,1
    - Dst: adv_if_add
      Src: /src/frr/zebra/rtadv.c:1254,1
    - Dst: if_join_all_router
      Src: /src/frr/zebra/rtadv.c:1258,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1260,1
    - Dst: rtadv_event
      Src: /src/frr/zebra/rtadv.c:1261,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - zvrf
    - zif
    argTypes:
    - struct zebra_vrf*
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1241
    functionDepth: 4
    functionLinenumber: 1241
    functionLinenumberEnd: 1262
    functionName: rtadv_start_interface_events
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - if_join_all_router
    - rtadv_event
    - zlog_debug
    - adv_if_list_count
    - adv_if_add
    linkageType: ''
    returnType: void
    signature: "void rtadv_start_interface_events(struct zebra_vrf *zvrf,\n\t\t\t\t\t
      struct zebra_if *zif)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rtadv_interface_get_zvrf
      Src: /src/frr/zebra/rtadv.c:1273,1
    - Dst: rtadv_send_packet
      Src: /src/frr/zebra/rtadv.c:1278,1
    - Dst: adv_if_del
      Src: /src/frr/zebra/rtadv.c:1282,1
    - Dst: adv_if_free
      Src: /src/frr/zebra/rtadv.c:1286,1
    - Dst: if_leave_all_router
      Src: /src/frr/zebra/rtadv.c:1288,1
    - Dst: adv_if_list_count
      Src: /src/frr/zebra/rtadv.c:1290,1
    - Dst: rtadv_event
      Src: /src/frr/zebra/rtadv.c:1291,1
    - Dst: rtadv_start_interface_events
      Src: /src/frr/zebra/rtadv.c:1308,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - ifp
    - status
    argTypes:
    - struct interface*
    - enum ipv6_nd_suppress_ra_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1264
    functionDepth: 5
    functionLinenumber: 1264
    functionLinenumberEnd: 1311
    functionName: ipv6_nd_suppress_ra_set
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - rtadv_start_interface_events
    - rtadv_send_packet
    - rtadv_interface_get_zvrf
    - rtadv_event
    - if_leave_all_router
    - adv_if_del
    - adv_if_list_count
    - adv_if_free
    linkageType: ''
    returnType: void
    signature: "void ipv6_nd_suppress_ra_set(struct interface *ifp,\n\t\t\t\t    enum
      ipv6_nd_suppress_ra_status status)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/rtadv.c:1331,1
    - Dst: STREAM_GETL
      Src: /src/frr/zebra/rtadv.c:1332,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1337,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1338,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1338,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/rtadv.c:1340,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/rtadv.c:1344,1
    - Dst: flog_warn
      Src: /src/frr/zebra/rtadv.c:1348,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:1350,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1350,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/rtadv.c:1352,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/rtadv.c:1355,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1355,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:1356,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:1358,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/rtadv.c:1360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:1366,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/rtadv.c:1369,1
    - Dst: ipv6_nd_suppress_ra_set
      Src: /src/frr/zebra/rtadv.c:1370,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:1373,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:1377,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/rtadv.c:1380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:1381,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:1385,1
    - Dst: ipv6_nd_suppress_ra_set
      Src: /src/frr/zebra/rtadv.c:1386,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - enable
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1320
    functionDepth: 6
    functionLinenumber: 1320
    functionLinenumberEnd: 1390
    functionName: zebra_interface_radv_set
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - if_lookup_by_index
    - flog_warn
    - ipv6_nd_suppress_ra_set
    - zvrf_id
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - VRF_LOGNAME
    - STREAM_GETL
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: void zebra_interface_radv_set(ZAPI_HANDLER_ARGS, int enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rtadv_interface_get_zvrf
      Src: /src/frr/zebra/rtadv.c:1403,1
    - Dst: rtadv_send_packet
      Src: /src/frr/zebra/rtadv.c:1406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1397
    functionDepth: 3
    functionLinenumber: 1397
    functionLinenumberEnd: 1407
    functionName: rtadv_stop_ra
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 3
    functionsReached:
    - rtadv_interface_get_zvrf
    - rtadv_send_packet
    linkageType: ''
    returnType: void
    signature: void rtadv_stop_ra(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/zebra/rtadv.c:1424,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/rtadv.c:1428,1
    - Dst: rtadv_prefix_reset
      Src: /src/frr/zebra/rtadv.c:1430,1
    - Dst: rtadv_stop_ra
      Src: /src/frr/zebra/rtadv.c:1432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1417
    functionDepth: 2
    functionLinenumber: 1417
    functionLinenumberEnd: 1434
    functionName: rtadv_stop_ra_all
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 1
    functionsReached:
    - rtadv_stop_ra
    - RB_FOREACH
    - frr_each_safe
    - rtadv_prefix_reset
    linkageType: ''
    returnType: void
    signature: void rtadv_stop_ra_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/zebra/rtadv.c:1428,1
    - Dst: rtadv_prefix_reset
      Src: /src/frr/zebra/rtadv.c:1430,1
    - Dst: rtadv_stop_ra
      Src: /src/frr/zebra/rtadv.c:1432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1425
    functionDepth: 2
    functionLinenumber: 1425
    functionLinenumberEnd: 1433
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 24
    functionsReached:
    - rtadv_stop_ra
    - frr_each_safe
    - rtadv_prefix_reset
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_radv_set
      Src: /src/frr/zebra/rtadv.c:1438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1436
    functionDepth: 7
    functionLinenumber: 1436
    functionLinenumberEnd: 1439
    functionName: zebra_interface_radv_disable
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zebra_interface_radv_set
    linkageType: ''
    returnType: void
    signature: void zebra_interface_radv_disable(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_radv_set
      Src: /src/frr/zebra/rtadv.c:1442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1440
    functionDepth: 7
    functionLinenumber: 1440
    functionLinenumberEnd: 1443
    functionName: zebra_interface_radv_enable
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zebra_interface_radv_set
    linkageType: ''
    returnType: void
    signature: void zebra_interface_radv_enable(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: adv_if_is_empty_internal
      Src: /src/frr/zebra/rtadv.c:1450,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:1452,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:1456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - adv_if_head
    argTypes:
    - struct vty*
    - struct adv_if_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1445
    functionDepth: 1
    functionLinenumber: 1445
    functionLinenumberEnd: 1457
    functionName: show_zvrf_rtadv_adv_if_helper
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - adv_if_is_empty_internal
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void show_zvrf_rtadv_adv_if_helper(struct vty *vty,\n\t\t\t\t\t  struct
      adv_if_list_head *adv_if_head)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:1452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1451
    functionDepth: 1
    functionLinenumber: 1451
    functionLinenumberEnd: 1453
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 50
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void frr_each (adv_if_list, adv_if_head, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:1461,1
    - Dst: zvrf_name
      Src: /src/frr/zebra/rtadv.c:1461,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:1462,1
    - Dst: show_zvrf_rtadv_adv_if_helper
      Src: /src/frr/zebra/rtadv.c:1463,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:1465,1
    - Dst: show_zvrf_rtadv_adv_if_helper
      Src: /src/frr/zebra/rtadv.c:1466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - zvrf
    argTypes:
    - struct vty*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1459
    functionDepth: 2
    functionLinenumber: 1459
    functionLinenumberEnd: 1467
    functionName: show_zvrf_rtadv_helper
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zvrf_name
    - vty_out
    - show_zvrf_rtadv_adv_if_helper
    linkageType: ''
    returnType: void
    signature: void show_zvrf_rtadv_helper(struct vty *vty, struct zebra_vrf *zvrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/rtadv.c:2288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2286
    functionDepth: 0
    functionLinenumber: 2286
    functionLinenumberEnd: 2289
    functionName: rtadv_rdnss_new
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rtadv_rdnss
    signature: struct rtadv_rdnss *rtadv_rdnss_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/rtadv.c:2293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rdnss
    argTypes:
    - struct rtadv_rdnss*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2294
      start: 2291
    functionDepth: 0
    functionLinenumber: 2291
    functionLinenumberEnd: 2294
    functionName: rtadv_rdnss_free
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rtadv_rdnss_free(struct rtadv_rdnss *rdnss)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/rtadv.c:2302,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/rtadv.c:2303,1
    - Dst: rtadv_rdnss_lookup
      Src: /src/frr/zebra/rtadv.c:2313,1
    - Dst: if
      Src: /src/frr/zebra/rtadv.c:2314,1
    - Dst: rtadv_rdnss_new
      Src: /src/frr/zebra/rtadv.c:2317,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:2318,1
    - Dst: listnode_add
      Src: /src/frr/zebra/rtadv.c:2319,1
    - Dst: rtadv_rdnss_set
      Src: /src/frr/zebra/rtadv.c:2324,1
    - Dst: rtadv_rdnss_get
      Src: /src/frr/zebra/rtadv.c:2328,1
    - Dst: rtadv_rdnss_reset
      Src: /src/frr/zebra/rtadv.c:2333,1
    - Dst: rtadv_rdnss_lookup
      Src: /src/frr/zebra/rtadv.c:2337,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/rtadv.c:2339,1
    - Dst: rtadv_rdnss_free
      Src: /src/frr/zebra/rtadv.c:2340,1
    - Dst: rtadv_dnssl_new
      Src: /src/frr/zebra/rtadv.c:2347,1
    - Dst: XCALLOC
      Src: /src/frr/zebra/rtadv.c:2349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - rdnss
    argTypes:
    - struct list*
    - struct rtadv_rdnss*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2296
    functionDepth: 1
    functionLinenumber: 2296
    functionLinenumberEnd: 2355
    functionName: rtadv_rdnss_lookup
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 1
    functionsReached:
    - rtadv_rdnss_set
    - rtadv_rdnss_free
    - listnode_delete
    - XCALLOC
    - rtadv_rdnss_get
    - ALL_LIST_ELEMENTS_RO
    - rtadv_rdnss_lookup
    - rtadv_rdnss_new
    - listnode_add
    - rtadv_rdnss_reset
    - rtadv_dnssl_new
    - IPV6_ADDR_SAME
    - if
    - memcpy
    linkageType: ''
    returnType: struct rtadv_rdnss
    signature: "struct rtadv_rdnss *rtadv_rdnss_lookup(struct list *list,\n\t\t\t\t\t
      \     struct rtadv_rdnss *rdnss)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/rtadv.c:2363,1
    - Dst: strcasecmp
      Src: /src/frr/zebra/rtadv.c:2364,1
    - Dst: rtadv_dnssl_lookup
      Src: /src/frr/zebra/rtadv.c:2374,1
    - Dst: if
      Src: /src/frr/zebra/rtadv.c:2375,1
    - Dst: rtadv_dnssl_new
      Src: /src/frr/zebra/rtadv.c:2378,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:2379,1
    - Dst: listnode_add
      Src: /src/frr/zebra/rtadv.c:2380,1
    - Dst: rtadv_dnssl_set
      Src: /src/frr/zebra/rtadv.c:2385,1
    - Dst: rtadv_dnssl_get
      Src: /src/frr/zebra/rtadv.c:2389,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:2390,1
    - Dst: rtadv_dnssl_reset
      Src: /src/frr/zebra/rtadv.c:2393,1
    - Dst: rtadv_dnssl_lookup
      Src: /src/frr/zebra/rtadv.c:2397,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/rtadv.c:2399,1
    - Dst: rtadv_dnssl_free
      Src: /src/frr/zebra/rtadv.c:2400,1
    - Dst: rtadv_dnssl_encode
      Src: /src/frr/zebra/rtadv.c:2415,1
    - Dst: strchr
      Src: /src/frr/zebra/rtadv.c:2426,1
    - Dst: strlen
      Src: /src/frr/zebra/rtadv.c:2428,1
    - Dst: memcpy
      Src: /src/frr/zebra/rtadv.c:2435,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - list
    - dnssl
    argTypes:
    - struct list*
    - struct rtadv_dnssl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2444
      start: 2357
    functionDepth: 1
    functionLinenumber: 2357
    functionLinenumberEnd: 2444
    functionName: rtadv_dnssl_lookup
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 1
    functionsReached:
    - strlen
    - rtadv_dnssl_get
    - rtadv_dnssl_reset
    - listnode_delete
    - ALL_LIST_ELEMENTS_RO
    - listnode_add
    - strchr
    - rtadv_dnssl_set
    - rtadv_dnssl_lookup
    - rtadv_dnssl_free
    - rtadv_dnssl_encode
    - rtadv_dnssl_new
    - if
    - strcasecmp
    - memcpy
    linkageType: ''
    returnType: struct rtadv_dnssl
    signature: "struct rtadv_dnssl *rtadv_dnssl_lookup(struct list *list,\n\t\t\t\t\t
      \     struct rtadv_dnssl *dnssl)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2599,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2602,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2605,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2607,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2611,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2615,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2619,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2623,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2627,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2629,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2633,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2636,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2639,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2642,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2646,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2648,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2652,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2656
      start: 2589
    functionDepth: 1
    functionLinenumber: 2589
    functionLinenumberEnd: 2656
    functionName: nd_dump_vty
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int nd_dump_vty(struct vty *vty, struct interface *ifp)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/zebra/rtadv.c:2671,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:2673,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2674,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/rtadv.c:2678,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2680,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2683,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2688,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2691,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2694,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2698,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2702,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2706,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2710,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2714,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2717,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2721,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2724,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2727,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2731,1
    - Dst: frr_each
      Src: /src/frr/zebra/rtadv.c:2733,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2736,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2741,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2743,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2746,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2748,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2752,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2754,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2756,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2757,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/rtadv.c:2761,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2764,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/rtadv.c:2765,1
    - Dst: if
      Src: /src/frr/zebra/rtadv.c:2766,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2768,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2770,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2772,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/rtadv.c:2774,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2775,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2778,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2780,1
    - Dst: vty_out
      Src: /src/frr/zebra/rtadv.c:2782,1
    - Dst: rtadv_event
      Src: /src/frr/zebra/rtadv.c:2788,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:2795,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/rtadv.c:2796,1
    - Dst: event_add_read
      Src: /src/frr/zebra/rtadv.c:2803,1
    - Dst: event_add_event
      Src: /src/frr/zebra/rtadv.c:2805,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/rtadv.c:2809,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/rtadv.c:2810,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/rtadv.c:2813,1
    - Dst: event_add_timer_msec
      Src: /src/frr/zebra/rtadv.c:2817,1
    - Dst: event_add_read
      Src: /src/frr/zebra/rtadv.c:2821,1
    - Dst: rtadv_if_up
      Src: /src/frr/zebra/rtadv.c:2830,1
    - Dst: rtadv_interface_get_zvrf
      Src: /src/frr/zebra/rtadv.c:2832,1
    - Dst: rtadv_start_interface_events
      Src: /src/frr/zebra/rtadv.c:2847,1
    - Dst: rtadv_if_init
      Src: /src/frr/zebra/rtadv.c:2850,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:2868,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:2870,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:2872,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:2874,1
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:2876,1
    - Dst: rtadv_prefixes_init
      Src: /src/frr/zebra/rtadv.c:2885,1
    - Dst: list_new
      Src: /src/frr/zebra/rtadv.c:2887,1
    - Dst: list_new
      Src: /src/frr/zebra/rtadv.c:2888,1
    - Dst: rtadv_if_fini
      Src: /src/frr/zebra/rtadv.c:2891,1
    - Dst: rtadv_prefixes_pop
      Src: /src/frr/zebra/rtadv.c:2898,1
    - Dst: rtadv_prefix_free
      Src: /src/frr/zebra/rtadv.c:2899,1
    - Dst: list_delete
      Src: /src/frr/zebra/rtadv.c:2901,1
    - Dst: list_delete
      Src: /src/frr/zebra/rtadv.c:2902,1
    - Dst: rtadv_vrf_init
      Src: /src/frr/zebra/rtadv.c:2905,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/rtadv.c:2907,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:2907,1
    - Dst: rtadv_make_socket
      Src: /src/frr/zebra/rtadv.c:2910,1
    - Dst: rtadv_vrf_terminate
      Src: /src/frr/zebra/rtadv.c:2913,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/rtadv.c:2915,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/rtadv.c:2915,1
    - Dst: rtadv_event
      Src: /src/frr/zebra/rtadv.c:2918,1
    - Dst: close
      Src: /src/frr/zebra/rtadv.c:2920,1
    - Dst: adv_if_clean
      Src: /src/frr/zebra/rtadv.c:2924,1
    - Dst: adv_msec_if_clean
      Src: /src/frr/zebra/rtadv.c:2925,1
    - Dst: rtadv_cmd_init
      Src: /src/frr/zebra/rtadv.c:2928,1
    - Dst: hook_register
      Src: /src/frr/zebra/rtadv.c:2932,1
    - Dst: hook_register
      Src: /src/frr/zebra/rtadv.c:2933,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2935,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2937,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2938,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2939,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2940,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2941,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2942,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2943,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2944,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2945,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2946,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2947,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2948,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2949,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2950,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2951,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2952,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2953,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2954,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2955,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2956,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2957,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2958,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2959,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2960,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2961,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2962,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2964,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2966,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2967,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2968,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2969,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2970,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2971,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2972,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2973,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2974,1
    - Dst: install_element
      Src: /src/frr/zebra/rtadv.c:2975,1
    - Dst: inet_pton
      Src: /src/frr/zebra/rtadv.c:2985,1
    - Dst: setsockopt
      Src: /src/frr/zebra/rtadv.c:2988,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/rtadv.c:2991,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtadv.c:2994,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:2997,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 69
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3002
      start: 2660
    functionDepth: 5
    functionLinenumber: 2660
    functionLinenumberEnd: 3002
    functionName: rtadv_config_write
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - list_delete
    - frr_each
    - rtadv_cmd_init
    - rtadv_interface_get_zvrf
    - rtadv_prefixes_init
    - adv_if_clean
    - install_element
    - rtadv_if_up
    - rtadv_vrf_init
    - rtadv_start_interface_events
    - memset
    - hook_register
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - rtadv_make_socket
    - event_add_timer_msec
    - inet_ntop
    - zlog_debug
    - rtadv_prefixes_pop
    - safe_strerror
    - if
    - flog_err_sys
    - setsockopt
    - rtadv_if_init
    - vty_out
    - EVENT_OFF
    - inet_pton
    - rtadv_vrf_terminate
    - event_add_timer
    - event_add_read
    - adv_msec_if_clean
    - CHECK_FLAG
    - rtadv_prefix_free
    - rtadv_event
    - close
    - list_new
    - VRF_LOGNAME
    - rtadv_if_fini
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int rtadv_config_write(struct vty *vty, struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/rtadv.c:3010,1
    - Dst: inet_pton
      Src: /src/frr/zebra/rtadv.c:3011,1
    - Dst: setsockopt
      Src: /src/frr/zebra/rtadv.c:3014,1
    - Dst: flog_err_sys
      Src: /src/frr/zebra/rtadv.c:3017,1
    - Dst: safe_strerror
      Src: /src/frr/zebra/rtadv.c:3021,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:3024,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - sock
    - ifp
    argTypes:
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3029
      start: 3004
    functionDepth: 1
    functionLinenumber: 3004
    functionLinenumberEnd: 3029
    functionName: if_leave_all_router
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 1
    functionsReached:
    - memset
    - zlog_debug
    - inet_pton
    - safe_strerror
    - flog_err_sys
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int if_leave_all_router(int sock, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3034
      start: 3031
    functionDepth: 0
    functionLinenumber: 3031
    functionLinenumberEnd: 3034
    functionName: rtadv_compiled_in
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool rtadv_compiled_in(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:3044,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/rtadv.c:3046,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3049
      start: 3041
    functionDepth: 1
    functionLinenumber: 3041
    functionLinenumberEnd: 3049
    functionName: zebra_interface_radv_disable
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zserv_command_string
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void zebra_interface_radv_disable(ZAPI_HANDLER_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/rtadv.c:3054,1
    - Dst: zserv_command_string
      Src: /src/frr/zebra/rtadv.c:3056,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3059
      start: 3051
    functionDepth: 1
    functionLinenumber: 3051
    functionLinenumberEnd: 3059
    functionName: zebra_interface_radv_enable
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached:
    - zserv_command_string
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void zebra_interface_radv_enable(ZAPI_HANDLER_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3064
      start: 3061
    functionDepth: 0
    functionLinenumber: 3061
    functionLinenumberEnd: 3064
    functionName: rtadv_compiled_in
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool rtadv_compiled_in(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3068
    functionDepth: 0
    functionLinenumber: 3068
    functionLinenumberEnd: 3071
    functionName: rtadv_get_interfaces_configured_from_bgp
    functionSourceFile: /src/frr/zebra/rtadv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rtadv_get_interfaces_configured_from_bgp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: zebra_l2_bridge_vlan_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zebra_l2_bridge_vlan_hash_keymake(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: zebra_l2_bridge_vlan_hash_cmp
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_l2_bridge_vlan_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct zebra_l2_bridge_if_ctx*::func
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: zebra_l2_bridge_if_vlan_walk_callback
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - struct zebra_l2_bridge_if_ctx*::func
    linkageType: ''
    returnType: int
    signature: "int zebra_l2_bridge_if_vlan_walk_callback(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct zebra_l2_bridge_if_ctx*::func
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: zebra_l2_bridge_if_vlan_iterate_callback
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - struct zebra_l2_bridge_if_ctx*::func
    linkageType: ''
    returnType: void
    signature: "void zebra_l2_bridge_if_vlan_iterate_callback(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      \    void *ctxt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:110,1
    - Dst: zebra_evpn_acc_vl_find
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:113,1
    - Dst: zebra_evpn_access_bd_bridge_cleanup
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - zif
    - bvlan
    - ctxt
    argTypes:
    - struct zebra_if*
    - struct zebra_l2_bridge_vlan*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 120
    functionName: zebra_l2_bridge_if_vlan_clean
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_evpn_access_bd_bridge_cleanup
    - zebra_evpn_acc_vl_find
    linkageType: ''
    returnType: int
    signature: "int zebra_l2_bridge_if_vlan_clean(struct zebra_if *zif,\n\t\t\t\t\t
      struct zebra_l2_bridge_vlan *bvlan,\n\t\t\t\t\t void *ctxt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: zebra_l2_bridge_vlan_free
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_l2_bridge_vlan_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 141
    functionName: zebra_l2_bridge_vlan_alloc
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *zebra_l2_bridge_vlan_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vlan_table
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: zebra_l2_bridge_vlan_table_destroy
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void zebra_l2_bridge_vlan_table_destroy(struct hash *vlan_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 153
    functionName: zebra_l2_bridge_vlan_table_create
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: struct hash
    signature: struct hash *zebra_l2_bridge_vlan_table_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:159,1
    - Dst: zebra_l2_bridge_if_vlan_iterate
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:160,1
    - Dst: zebra_l2_bridge_vlan_table_destroy
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: zebra_l2_bridge_if_vlan_table_destroy
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - zebra_l2_bridge_vlan_table_destroy
    - zebra_l2_bridge_if_vlan_iterate
    - BRIDGE_FROM_ZEBRA_IF
    linkageType: ''
    returnType: void
    signature: void zebra_l2_bridge_if_vlan_table_destroy(struct zebra_if *zif)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:170,1
    - Dst: zebra_l2_bridge_vlan_table_create
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 178
    functionName: zebra_l2_bridge_if_vlan_table_create
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - BRIDGE_FROM_ZEBRA_IF
    - zebra_l2_bridge_vlan_table_create
    linkageType: ''
    returnType: int
    signature: int zebra_l2_bridge_if_vlan_table_create(struct zebra_if *zif)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:188,1
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:191,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:192,1
    - Dst: zebra_l2_bridge_vlan_free
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - vid
    argTypes:
    - struct interface*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 198
    functionName: zebra_l2_bridge_if_vlan_del
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - zebra_l2_bridge_vlan_free
    - hash_release
    - BRIDGE_FROM_ZEBRA_IF
    - memset
    linkageType: ''
    returnType: int
    signature: int zebra_l2_bridge_if_vlan_del(struct interface *ifp, vlanid_t vid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_l2_bridge_if_vlan_find
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:208,1
    - Dst: zebra_l2_bridge_if_vlan_del
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ifp
    - bvl
    - chgflags
    argTypes:
    - struct interface*
    - struct zebra_l2_bridge_vlan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 219
    functionName: zebra_l2_bridge_if_vlan_update
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - zebra_l2_bridge_if_vlan_find
    - zebra_l2_bridge_if_vlan_del
    linkageType: ''
    returnType: int
    signature: "int zebra_l2_bridge_if_vlan_update(struct interface *ifp,\n\t\t\t\t\t
      \ struct zebra_l2_bridge_vlan *bvl,\n\t\t\t\t\t  int chgflags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:228,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - bvlan
    argTypes:
    - struct interface*
    - struct zebra_l2_bridge_vlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 232
    functionName: zebra_l2_bridge_if_vlan_add
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - hash_get
    - BRIDGE_FROM_ZEBRA_IF
    linkageType: ''
    returnType: int
    signature: "int zebra_l2_bridge_if_vlan_add(struct interface *ifp,\n\t\t\t\t       struct
      zebra_l2_bridge_vlan *bvlan)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:241,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:242,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:244,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - zif
    - vid
    argTypes:
    - struct zebra_if*
    - vlanid_t
    assertStmts:
    - condition: (bvl->vid == vid)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/frr/zebra/zebra_l2_bridge_if.c
    constantsTouched: []
    func_position:
      end: 252
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 252
    functionName: zebra_l2_bridge_if_vlan_find
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 2
    functionsReached:
    - assert
    - hash_lookup
    - BRIDGE_FROM_ZEBRA_IF
    - memset
    linkageType: ''
    returnType: struct zebra_l2_bridge_vlan
    signature: 'struct zebra_l2_bridge_vlan *

      zebra_l2_bridge_if_vlan_find(const struct zebra_if *zif, vlanid_t vid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_l2_bridge_if_vlan_find
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - zif
    - vid
    argTypes:
    - struct zebra_if*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 264
    functionName: zebra_l2_bridge_if_vni_find
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 4
    functionsReached:
    - zebra_l2_bridge_if_vlan_find
    linkageType: ''
    returnType: vni_t
    signature: vni_t zebra_l2_bridge_if_vni_find(const struct zebra_if *zif, vlanid_t
      vid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:275,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:276,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - zif
    - arg
    argTypes:
    - struct zebra_if*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 282
    functionName: zebra_l2_bridge_if_vlan_iterate
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - BRIDGE_FROM_ZEBRA_IF
    - memset
    linkageType: ''
    returnType: void
    signature: "void zebra_l2_bridge_if_vlan_iterate(struct zebra_if *zif,\n\t\t\t\t
      \    int (*func)(struct zebra_if *zif,\n\t\t\t\t\t\t struct zebra_l2_bridge_vlan
      *,\n\t\t\t\t\t\t void *),\n\t\t\t\t     void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:293,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:294,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - zif
    - arg
    argTypes:
    - struct zebra_if*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 299
    functionName: zebra_l2_bridge_if_vlan_walk
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 0
    functionsReached:
    - hash_walk
    - BRIDGE_FROM_ZEBRA_IF
    - memset
    linkageType: ''
    returnType: void
    signature: "void zebra_l2_bridge_if_vlan_walk(struct zebra_if *zif,\n\t\t\t\t
      \ int (*func)(struct zebra_if *zif,\n\t\t\t\t\t      struct zebra_l2_bridge_vlan
      *,\n\t\t\t\t\t      void *),\n\t\t\t\t  void *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_l2_bridge_if_vlan_find
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:312,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:316,1
    - Dst: zebra_l2_bridge_if_vlan_update
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - bd
    argTypes:
    - struct zebra_evpn_access_bd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 301
    functionDepth: 3
    functionLinenumber: 301
    functionLinenumberEnd: 321
    functionName: zebra_l2_bridge_if_vlan_access_bd_deref
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 1
    functionsReached:
    - memset
    - zebra_l2_bridge_if_vlan_update
    - zebra_l2_bridge_if_vlan_find
    linkageType: ''
    returnType: int
    signature: int zebra_l2_bridge_if_vlan_access_bd_deref(struct zebra_evpn_access_bd
      *bd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:337,1
    - Dst: zebra_l2_bridge_if_vlan_find
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:341,1
    - Dst: zebra_l2_bridge_if_vlan_add
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:343,1
    - Dst: zebra_l2_bridge_if_vlan_update
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:346,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - bd
    argTypes:
    - struct zebra_evpn_access_bd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 323
    functionDepth: 3
    functionLinenumber: 323
    functionLinenumberEnd: 347
    functionName: zebra_l2_bridge_if_vlan_access_bd_ref
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 1
    functionsReached:
    - zebra_l2_bridge_if_vlan_add
    - zebra_l2_bridge_if_vlan_find
    - zebra_l2_bridge_if_vlan_update
    - memset
    linkageType: ''
    returnType: int
    signature: int zebra_l2_bridge_if_vlan_access_bd_ref(struct zebra_evpn_access_bd
      *bd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_ZEBRA_IF_BRIDGE
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:353,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:357,1
    - Dst: zebra_l2_bridge_if_vlan_table_destroy
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 362
    functionName: zebra_l2_bridge_if_cleanup
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - zebra_l2_bridge_if_vlan_table_destroy
    - IS_ZEBRA_IF_BRIDGE
    linkageType: ''
    returnType: int
    signature: int zebra_l2_bridge_if_cleanup(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:367,1
    - Dst: zebra_l2_bridge_if_cleanup
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 364
    functionDepth: 4
    functionLinenumber: 364
    functionLinenumberEnd: 370
    functionName: zebra_l2_bridge_if_del
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - zebra_l2_bridge_if_cleanup
    linkageType: ''
    returnType: int
    signature: int zebra_l2_bridge_if_del(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BRIDGE_FROM_ZEBRA_IF
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:378,1
    - Dst: zebra_l2_bridge_if_vlan_table_create
      Src: /src/frr/zebra/zebra_l2_bridge_if.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 372
    functionDepth: 3
    functionLinenumber: 372
    functionLinenumberEnd: 382
    functionName: zebra_l2_bridge_if_add
    functionSourceFile: /src/frr/zebra/zebra_l2_bridge_if.c
    functionUses: 1
    functionsReached:
    - zebra_l2_bridge_if_vlan_table_create
    - BRIDGE_FROM_ZEBRA_IF
    linkageType: ''
    returnType: int
    signature: int zebra_l2_bridge_if_add(struct interface *ifp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/router-id.c:39,1
    - Dst: prefix_same
      Src: /src/frr/zebra/router-id.c:40,1
    - Dst: list_isempty
      Src: /src/frr/zebra/router-id.c:75,1
    - Dst: listtail
      Src: /src/frr/zebra/router-id.c:76,1
    - Dst: listgetdata
      Src: /src/frr/zebra/router-id.c:77,1
    - Dst: listtail
      Src: /src/frr/zebra/router-id.c:80,1
    - Dst: listgetdata
      Src: /src/frr/zebra/router-id.c:81,1
    - Dst: router_id_v6_is_any
      Src: /src/frr/zebra/router-id.c:89,1
    - Dst: list_isempty
      Src: /src/frr/zebra/router-id.c:91,1
    - Dst: listtail
      Src: /src/frr/zebra/router-id.c:92,1
    - Dst: listgetdata
      Src: /src/frr/zebra/router-id.c:93,1
    - Dst: list_isempty
      Src: /src/frr/zebra/router-id.c:95,1
    - Dst: listtail
      Src: /src/frr/zebra/router-id.c:96,1
    - Dst: listgetdata
      Src: /src/frr/zebra/router-id.c:97,1
    - Dst: memcpy
      Src: /src/frr/zebra/router-id.c:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - l
    - ifc
    argTypes:
    - struct list*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 107
    functionName: router_id_find_node
    functionSourceFile: /src/frr/zebra/router-id.c
    functionUses: 0
    functionsReached:
    - router_id_v6_is_any
    - prefix_same
    - listtail
    - ALL_LIST_ELEMENTS_RO
    - list_isempty
    - listgetdata
    - memcpy
    linkageType: ''
    returnType: struct connected
    signature: "struct connected *router_id_find_node(struct list *l,\n\t\t\t\t\t
      \    struct connected *ifc)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: router_id_get
      Src: /src/frr/zebra/router-id.c:118,1
    - Dst: router_id_get
      Src: /src/frr/zebra/router-id.c:133,1
    - Dst: prefix_same
      Src: /src/frr/zebra/router-id.c:139,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/router-id.c:142,1
    - Dst: zsend_router_id_update
      Src: /src/frr/zebra/router-id.c:143,1
    - Dst: router_id_add_address
      Src: /src/frr/zebra/router-id.c:148,1
    - Dst: router_id_bad_address
      Src: /src/frr/zebra/router-id.c:160,1
    - Dst: router_id_get
      Src: /src/frr/zebra/router-id.c:178,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/router-id.c:180,1
    - Dst: router_id_find_node
      Src: /src/frr/zebra/router-id.c:182,1
    - Dst: listnode_add_sort
      Src: /src/frr/zebra/router-id.c:183,1
    - Dst: router_id_get
      Src: /src/frr/zebra/router-id.c:185,1
    - Dst: prefix_same
      Src: /src/frr/zebra/router-id.c:187,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/router-id.c:190,1
    - Dst: zsend_router_id_update
      Src: /src/frr/zebra/router-id.c:191,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/router-id.c:191,1
    - Dst: router_id_del_address
      Src: /src/frr/zebra/router-id.c:194,1
    - Dst: router_id_bad_address
      Src: /src/frr/zebra/router-id.c:207,1
    - Dst: router_id_get
      Src: /src/frr/zebra/router-id.c:225,1
    - Dst: if_is_loopback
      Src: /src/frr/zebra/router-id.c:227,1
    - Dst: router_id_find_node
      Src: /src/frr/zebra/router-id.c:232,1
    - Dst: listnode_delete
      Src: /src/frr/zebra/router-id.c:233,1
    - Dst: router_id_get
      Src: /src/frr/zebra/router-id.c:235,1
    - Dst: prefix_same
      Src: /src/frr/zebra/router-id.c:237,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/router-id.c:240,1
    - Dst: zsend_router_id_update
      Src: /src/frr/zebra/router-id.c:241,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/router-id.c:241,1
    - Dst: router_id_write
      Src: /src/frr/zebra/router-id.c:244,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:248,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/router-id.c:250,1
    - Dst: snprintf
      Src: /src/frr/zebra/router-id.c:251,1
    - Dst: vty_out
      Src: /src/frr/zebra/router-id.c:254,1
    - Dst: router_id_v6_is_any
      Src: /src/frr/zebra/router-id.c:257,1
    - Dst: vty_out
      Src: /src/frr/zebra/router-id.c:258,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:263,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:276,1
    - Dst: inet_pton
      Src: /src/frr/zebra/router-id.c:278,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:284,1
    - Dst: VRF_GET_ID
      Src: /src/frr/zebra/router-id.c:285,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/router-id.c:287,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:288,1
    - Dst: ALIAS
      Src: /src/frr/zebra/router-id.c:293,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:300,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:313,1
    - Dst: inet_pton
      Src: /src/frr/zebra/router-id.c:315,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:321,1
    - Dst: VRF_GET_ID
      Src: /src/frr/zebra/router-id.c:322,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/router-id.c:324,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:325,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:331,1
    - Dst: ZEBRA_DECLVAR_CONTEXT_VRF
      Src: /src/frr/zebra/router-id.c:338,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:342,1
    - Dst: inet_pton
      Src: /src/frr/zebra/router-id.c:344,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:350,1
    - Dst: ALIAS
      Src: /src/frr/zebra/router-id.c:355,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:361,1
    - Dst: ZEBRA_DECLVAR_CONTEXT_VRF
      Src: /src/frr/zebra/router-id.c:368,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:372,1
    - Dst: inet_pton
      Src: /src/frr/zebra/router-id.c:374,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:380,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:385,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:403,1
    - Dst: VRF_GET_ID
      Src: /src/frr/zebra/router-id.c:404,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/router-id.c:406,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:407,1
    - Dst: ALIAS
      Src: /src/frr/zebra/router-id.c:412,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:420,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:434,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:437,1
    - Dst: VRF_GET_ID
      Src: /src/frr/zebra/router-id.c:438,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/router-id.c:440,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:441,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:446,1
    - Dst: ZEBRA_DECLVAR_CONTEXT_VRF
      Src: /src/frr/zebra/router-id.c:454,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:462,1
    - Dst: ALIAS
      Src: /src/frr/zebra/router-id.c:467,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:474,1
    - Dst: ZEBRA_DECLVAR_CONTEXT_VRF
      Src: /src/frr/zebra/router-id.c:482,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:486,1
    - Dst: router_id_set
      Src: /src/frr/zebra/router-id.c:489,1
    - Dst: DEFUN
      Src: /src/frr/zebra/router-id.c:494,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:510,1
    - Dst: argv_find
      Src: /src/frr/zebra/router-id.c:512,1
    - Dst: VRF_GET_ID
      Src: /src/frr/zebra/router-id.c:513,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/router-id.c:517,1
    - Dst: router_id_v6_is_any
      Src: /src/frr/zebra/router-id.c:521,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/router-id.c:523,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/router-id.c:529,1
    - Dst: vty_out
      Src: /src/frr/zebra/router-id.c:533,1
    - Dst: vty_out
      Src: /src/frr/zebra/router-id.c:534,1
    - Dst: router_id_cmp
      Src: /src/frr/zebra/router-id.c:540,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/zebra/router-id.c:545,1
    - Dst: router_id_v6_cmp
      Src: /src/frr/zebra/router-id.c:549,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/zebra/router-id.c:554,1
    - Dst: router_id_cmd_init
      Src: /src/frr/zebra/router-id.c:558,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:560,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:561,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:562,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:563,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:564,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:565,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:566,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:567,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:568,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:569,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:570,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:571,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:572,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:573,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:574,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:575,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:576,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:577,1
    - Dst: install_element
      Src: /src/frr/zebra/router-id.c:578,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:590,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:591,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:592,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:594,1
    - Dst: memset
      Src: /src/frr/zebra/router-id.c:596,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - afi
    - p
    - zvrf
    argTypes:
    - afi_t
    - struct prefix*
    - struct zebra_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 607
    functionName: router_id_set
    functionSourceFile: /src/frr/zebra/router-id.c
    functionUses: 1
    functionsReached:
    - router_id_v6_is_any
    - router_id_add_address
    - install_element
    - router_id_cmd_init
    - memset
    - snprintf
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - router_id_set
    - inet_ntop
    - zebra_vrf_lookup_by_id
    - router_id_find_node
    - router_id_get
    - DEFUN
    - router_id_del_address
    - prefix_same
    - router_id_bad_address
    - listnode_add_sort
    - vty_out
    - router_id_cmp
    - ZEBRA_DECLVAR_CONTEXT_VRF
    - VRF_GET_ID
    - router_id_v6_cmp
    - ALIAS
    - inet_pton
    - listnode_delete
    - IPV4_ADDR_CMP
    - IPV6_ADDR_CMP
    - argv_find
    - zsend_router_id_update
    - router_id_write
    linkageType: ''
    returnType: int
    signature: int router_id_set(afi_t afi, struct prefix *p, struct zebra_vrf *zvrf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:76,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:80,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:86,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:88,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 97
    functionName: nhg_get_next_id
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_nhg_lookup_id
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t nhg_get_next_id(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_nhg.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dep
    argTypes:
    - struct nhg_connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: nhg_connected_free
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nhg_connected_free(struct nhg_connected *dep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_nhg.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 112
    functionName: nhg_connected_new
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct nhg_connected
    signature: struct nhg_connected *nhg_connected_new(struct nhg_hash_entry *nhe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:118,1
    - Dst: nhg_connected_tree_del
      Src: /src/frr/zebra/zebra_nhg.c:120,1
    - Dst: nhg_connected_free
      Src: /src/frr/zebra/zebra_nhg.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct nhg_connected_tree_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: nhg_connected_tree_free
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - nhg_connected_tree_is_empty
    - nhg_connected_free
    - nhg_connected_tree_del
    linkageType: ''
    returnType: void
    signature: void nhg_connected_tree_free(struct nhg_connected_tree_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_del
      Src: /src/frr/zebra/zebra_nhg.c:120,1
    - Dst: nhg_connected_free
      Src: /src/frr/zebra/zebra_nhg.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: frr_each_safe
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 36
    functionsReached:
    - nhg_connected_free
    - nhg_connected_tree_del
    linkageType: ''
    returnType: void
    signature: void frr_each_safe(nhg_connected_tree, head, rb_node_dep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_count
      Src: /src/frr/zebra/zebra_nhg.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct nhg_connected_tree_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: nhg_connected_tree_is_empty
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached:
    - nhg_connected_tree_count
    linkageType: ''
    returnType: bool
    signature: bool nhg_connected_tree_is_empty(const struct nhg_connected_tree_head
      *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_first
      Src: /src/frr/zebra/zebra_nhg.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct nhg_connected_tree_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: nhg_connected_tree_root
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_first
    linkageType: ''
    returnType: struct nhg_connected
    signature: 'struct nhg_connected *

      nhg_connected_tree_root(struct nhg_connected_tree_head *head)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_find
      Src: /src/frr/zebra/zebra_nhg.c:148,1
    - Dst: nhg_connected_tree_del
      Src: /src/frr/zebra/zebra_nhg.c:156,1
    - Dst: nhg_connected_free
      Src: /src/frr/zebra/zebra_nhg.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - head
    - depend
    argTypes:
    - struct nhg_connected_tree_head*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 166
    functionName: nhg_connected_tree_del_nhe
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - nhg_connected_free
    - nhg_connected_tree_find
    - nhg_connected_tree_del
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *\nnhg_connected_tree_del_nhe(struct nhg_connected_tree_head
      *head,\n\t\t\t   struct nhg_hash_entry *depend)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_new::nhg_connected_new
      Src: /src/frr/zebra/zebra_nhg.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - head
    - depend
    argTypes:
    - struct nhg_connected_tree_head*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 191
    functionName: nhg_connected_tree_add_nhe
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - nhg_connected_new::nhg_connected_new
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *\nnhg_connected_tree_add_nhe(struct nhg_connected_tree_head
      *head,\n\t\t\t   struct nhg_hash_entry *depend)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct nhg_connected_tree_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 201
    functionName: nhg_connected_tree_decrement_ref
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_decrement_ref
    linkageType: ''
    returnType: void
    signature: void nhg_connected_tree_decrement_ref(struct nhg_connected_tree_head
      *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: frr_each_safe
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 36
    functionsReached:
    - zebra_nhg_decrement_ref
    linkageType: ''
    returnType: void
    signature: void frr_each_safe(nhg_connected_tree, head, rb_node_dep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_increment_ref
      Src: /src/frr/zebra/zebra_nhg.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct nhg_connected_tree_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: nhg_connected_tree_increment_ref
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_increment_ref
    linkageType: ''
    returnType: void
    signature: void nhg_connected_tree_increment_ref(struct nhg_connected_tree_head
      *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_increment_ref
      Src: /src/frr/zebra/zebra_nhg.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 210
    functionName: frr_each
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 51
    functionsReached:
    - zebra_nhg_increment_ref
    linkageType: ''
    returnType: void
    signature: void frr_each(nhg_connected_tree, head, rb_node_dep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:215,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:216,1
    - Dst: nhg_connected_tree_root
      Src: /src/frr/zebra/zebra_nhg.c:217,1
    - Dst: zebra_nhg_resolve
      Src: /src/frr/zebra/zebra_nhg.c:218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 222
    functionName: zebra_nhg_resolve
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - nhg_connected_tree_root
    - CHECK_FLAG
    - zebra_nhg_depends_is_empty
    - zebra_nhg_resolve
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: struct nhg_hash_entry *zebra_nhg_resolve(struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_count
      Src: /src/frr/zebra/zebra_nhg.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: zebra_nhg_depends_count
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zebra_nhg_depends_count(const struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: zebra_nhg_depends_is_empty
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 4
    functionsReached:
    - nhg_connected_tree_is_empty
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_depends_is_empty(const struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_del_nhe
      Src: /src/frr/zebra/zebra_nhg.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - from
    - depend
    argTypes:
    - struct nhg_hash_entry*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: zebra_nhg_depends_del
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_del_nhe
    linkageType: ''
    returnType: void
    signature: "void zebra_nhg_depends_del(struct nhg_hash_entry *from,\n\t\t\t\t
      \ struct nhg_hash_entry *depend)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_init
      Src: /src/frr/zebra/zebra_nhg.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: zebra_nhg_depends_init
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_init
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_depends_init(struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_count
      Src: /src/frr/zebra/zebra_nhg.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: zebra_nhg_dependents_count
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_count
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int zebra_nhg_dependents_count(const struct nhg_hash_entry
      *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: zebra_nhg_dependents_is_empty
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - nhg_connected_tree_is_empty
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_dependents_is_empty(const struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_del_nhe
      Src: /src/frr/zebra/zebra_nhg.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - from
    - dependent
    argTypes:
    - struct nhg_hash_entry*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 260
    functionName: zebra_nhg_dependents_del
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_del_nhe
    linkageType: ''
    returnType: void
    signature: "void zebra_nhg_dependents_del(struct nhg_hash_entry *from,\n\t\t\t\t
      \    struct nhg_hash_entry *dependent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_add_nhe
      Src: /src/frr/zebra/zebra_nhg.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - to
    - dependent
    argTypes:
    - struct nhg_hash_entry*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: zebra_nhg_dependents_add
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_add_nhe
    linkageType: ''
    returnType: void
    signature: "void zebra_nhg_dependents_add(struct nhg_hash_entry *to,\n\t\t\t\t
      \    struct nhg_hash_entry *dependent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_init
      Src: /src/frr/zebra/zebra_nhg.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 271
    functionName: zebra_nhg_dependents_init
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_init
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_dependents_init(struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_nhg.c:278,1
    - Dst: zebra_nhg_depends_del
      Src: /src/frr/zebra/zebra_nhg.c:279,1
    - Dst: zebra_nhg_check_valid
      Src: /src/frr/zebra/zebra_nhg.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 274
    functionDepth: 3
    functionLinenumber: 274
    functionLinenumberEnd: 283
    functionName: zebra_nhg_dependents_release
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_depends_del
    - zebra_nhg_check_valid
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_dependents_release(struct nhg_hash_entry *nhe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:288,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_nhg.c:291,1
    - Dst: zebra_nhg_dependents_del
      Src: /src/frr/zebra/zebra_nhg.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 296
    functionName: zebra_nhg_depends_release
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - frr_each_safe
    - zebra_nhg_depends_is_empty
    - zebra_nhg_dependents_del
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_depends_release(struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_nhg.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 305
    functionName: zebra_nhg_lookup_id
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: struct nhg_hash_entry *zebra_nhg_lookup_id(uint32_t id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_nhg.c:309,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:310,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_nhg.c:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 320
    functionName: zebra_nhg_insert_id
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - flog_err
    - hash_get
    linkageType: ''
    returnType: int
    signature: int zebra_nhg_insert_id(struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_nhg_dependents_add
      Src: /src/frr/zebra/zebra_nhg.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - nhe
    - ifp
    argTypes:
    - struct nhg_hash_entry*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 326
    functionName: zebra_nhg_set_if
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - if_nhg_dependents_add
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_set_if(struct nhg_hash_entry *nhe, struct interface
      *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_dependents_init
      Src: /src/frr/zebra/zebra_nhg.c:342,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:343,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:344,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:346,1
    - Dst: zebra_nhg_dependents_add
      Src: /src/frr/zebra/zebra_nhg.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - nhe
    - nhg_depends
    argTypes:
    - struct nhg_hash_entry*
    - struct nhg_connected_tree_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 353
    functionName: zebra_nhg_connect_depends
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_depends_is_empty
    - frr_each
    - zebra_nhg_dependents_init
    - zlog_debug
    - zebra_nhg_dependents_add
    linkageType: ''
    returnType: void
    signature: "void zebra_nhg_connect_depends(struct nhg_hash_entry *nhe,\n\t\t\t
      \ struct nhg_connected_tree_head *nhg_depends)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_nhg.c:359,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - nhe
    - afi
    - nh
    argTypes:
    - struct nhg_hash_entry*
    - afi_t
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 391
    functionName: zebra_nhe_init
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void zebra_nhe_init(struct nhg_hash_entry *nhe, afi_t afi,\n\t\t    const
      struct nexthop *nh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_nhg.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 400
    functionName: zebra_nhg_alloc
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: struct nhg_hash_entry *zebra_nhg_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_alloc
      Src: /src/frr/zebra/zebra_nhg.c:411,1
    - Dst: nexthop_group_copy
      Src: /src/frr/zebra/zebra_nhg.c:415,1
    - Dst: zebra_router_get_next_sequence
      Src: /src/frr/zebra/zebra_nhg.c:421,1
    - Dst: nhg_backup_copy
      Src: /src/frr/zebra/zebra_nhg.c:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - orig
    - id
    argTypes:
    - struct nhg_hash_entry*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 428
    functionName: zebra_nhe_copy
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 10
    functionsReached:
    - zebra_nhg_alloc
    - nhg_backup_copy
    - zebra_router_get_next_sequence
    - nexthop_group_copy
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *zebra_nhe_copy(const struct nhg_hash_entry
      *orig,\n\t\t\t\t      uint32_t id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_nhg.c:436,1
    - Dst: nexthop_group_mark_duplicates
      Src: /src/frr/zebra/zebra_nhg.c:439,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:446,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_nhg.c:450,1
    - Dst: zebra_nhg_set_if
      Src: /src/frr/zebra/zebra_nhg.c:453,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:456,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 464
    functionName: zebra_nhg_hash_alloc
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - PROTO_OWNED
    - if_lookup_by_index
    - nexthop_group_mark_duplicates
    - zebra_nhe_copy
    - zlog_debug
    - zebra_nhg_set_if
    linkageType: ''
    returnType: void
    signature: void *zebra_nhg_hash_alloc(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_hash
      Src: /src/frr/zebra/zebra_nhg.c:473,1
    - Dst: nexthop_group_hash
      Src: /src/frr/zebra/zebra_nhg.c:475,1
    - Dst: jhash_3words
      Src: /src/frr/zebra/zebra_nhg.c:477,1
    - Dst: jhash_2words
      Src: /src/frr/zebra/zebra_nhg.c:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 482
    functionName: zebra_nhg_hash_key
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - jhash_3words
    - jhash_2words
    - nexthop_group_hash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_nhg_hash_key(const void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 489
    functionName: zebra_nhg_id_key
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zebra_nhg_id_key(const void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:495,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:521,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:522,1
    - Dst: nexthop_same
      Src: /src/frr/zebra/zebra_nhg.c:525,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts:
    - condition: (nh1 != NULL && nh2 != NULL)
      pos:
        line_end: 494
        line_start: 494
        source_file: /src/frr/zebra/zebra_nhg.c
    constantsTouched: []
    func_position:
      end: 529
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 529
    functionName: nhg_compare_nexthops
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nexthop_same
    - CHECK_FLAG
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool nhg_compare_nexthops(const struct nexthop *nh1,\n\t\t\t\t const
      struct nexthop *nh2)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: nhg_compare_nexthops
      Src: /src/frr/zebra/zebra_nhg.c:565,1
    - Dst: nhg_compare_nexthops
      Src: /src/frr/zebra/zebra_nhg.c:601,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 37
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 606
    functionName: zebra_nhg_hash_equal
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_compare_nexthops
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 614
    functionName: zebra_nhg_hash_id_equal
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_hash_id_equal(const void *arg1, const void *arg2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_init
      Src: /src/frr/zebra/zebra_nhg.c:621,1
    - Dst: depends_find_id_add
      Src: /src/frr/zebra/zebra_nhg.c:630,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:633,1
    - Dst: copy_nexthops
      Src: /src/frr/zebra/zebra_nhg.c:647,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - nhg
    - depends
    - grp
    - count
    - resilience
    argTypes:
    - struct nexthop_group*
    - struct nhg_connected_tree_head*
    - struct nh_grp*
    - uint8_t
    - struct nhg_resilience*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 654
    functionName: zebra_nhg_process_grp
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_init
    - flog_err
    - copy_nexthops
    - depends_find_id_add
    linkageType: ''
    returnType: int
    signature: "int zebra_nhg_process_grp(struct nexthop_group *nhg,\n\t\t\t\t struct
      nhg_connected_tree_head *depends,\n\t\t\t\t struct nh_grp *grp, uint8_t count,\n\t\t\t\t
      struct nhg_resilience *resilience)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:665,1
    - Dst: zebra_nhg_rib_find
      Src: /src/frr/zebra/zebra_nhg.c:668,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:671,1
    - Dst: depends_add
      Src: /src/frr/zebra/zebra_nhg.c:676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - nhg_depends
    - nh
    - afi
    - type
    argTypes:
    - struct nhg_connected_tree_head*
    - struct nexthop*
    - afi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 677
    functionName: handle_recursive_depend
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_rib_find
    - zlog_debug
    - depends_add
    linkageType: ''
    returnType: void
    signature: "void handle_recursive_depend(struct nhg_connected_tree_head *nhg_depends,\n\t\t\t\t
      \   struct nexthop *nh, afi_t afi, int type)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:694,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:701,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_nhg.c:703,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:706,1
    - Dst: nhg_get_next_id
      Src: /src/frr/zebra/zebra_nhg.c:716,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_nhg.c:724,1
    - Dst: zebra_nhg_insert_id
      Src: /src/frr/zebra/zebra_nhg.c:725,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_nhg.c:734,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:743,1
    - Dst: zebra_nhg_connect_depends
      Src: /src/frr/zebra/zebra_nhg.c:756,1
    - Dst: zebra_nhg_depends_init
      Src: /src/frr/zebra/zebra_nhg.c:766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:770,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:771,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:774,1
    - Dst: handle_recursive_depend
      Src: /src/frr/zebra/zebra_nhg.c:776,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:786,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:788,1
    - Dst: depends_find_add
      Src: /src/frr/zebra/zebra_nhg.c:792,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:798,1
    - Dst: zebra_nhg_connect_depends
      Src: /src/frr/zebra/zebra_nhg.c:801,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_nhg.c:807,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_nhg.c:808,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:821,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:823,1
    - Dst: handle_recursive_depend
      Src: /src/frr/zebra/zebra_nhg.c:827,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:836,1
    - Dst: depends_find_add
      Src: /src/frr/zebra/zebra_nhg.c:840,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:846,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_nhg.c:850,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 71
    argCount: 5
    argNames:
    - nhe
    - lookup
    - nhg_depends
    - afi
    - from_dplane
    argTypes:
    - struct nhg_hash_entry**
    - struct nhg_hash_entry*
    - struct nhg_connected_tree_head*
    - afi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 683
    functionDepth: 4
    functionLinenumber: 683
    functionLinenumberEnd: 853
    functionName: zebra_nhe_find
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_connect_depends
    - CHECK_FLAG
    - monotime
    - zebra_nhg_depends_init
    - depends_find_add
    - hash_lookup
    - zlog_debug
    - SET_FLAG
    - handle_recursive_depend
    - nhg_get_next_id
    - zebra_nhg_lookup_id
    - zebra_nhg_insert_id
    - zebra_nhg_get_backup_nhg
    - hash_get
    linkageType: ''
    returnType: bool
    signature: "bool zebra_nhe_find(struct nhg_hash_entry **nhe, /* return value */\n\t\t\t
      \  struct nhg_hash_entry *lookup,\n\t\t\t   struct nhg_connected_tree_head *nhg_depends,\n\t\t\t
      \  afi_t afi, bool from_dplane)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:868,1
    - Dst: zebra_nhe_find
      Src: /src/frr/zebra/zebra_nhg.c:906,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 8
    argNames:
    - nhe
    - id
    - nhg
    - nhg_depends
    - vrf_id
    - afi
    - type
    - from_dplane
    argTypes:
    - struct nhg_hash_entry**
    - uint32_t
    - struct nexthop_group*
    - struct nhg_connected_tree_head*
    - vrf_id_t
    - afi_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 858
    functionDepth: 5
    functionLinenumber: 858
    functionLinenumberEnd: 909
    functionName: zebra_nhg_find
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_nhe_find
    linkageType: ''
    returnType: bool
    signature: "bool zebra_nhg_find(struct nhg_hash_entry **nhe, uint32_t id,\n\t\t\t
      \  struct nexthop_group *nhg,\n\t\t\t   struct nhg_connected_tree_head *nhg_depends,\n\t\t\t
      \  vrf_id_t vrf_id, afi_t afi, int type,\n\t\t\t   bool from_dplane)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_nhg.c:919,1
    - Dst: nexthop_group_add_sorted
      Src: /src/frr/zebra/zebra_nhg.c:921,1
    - Dst: zebra_nhg_find
      Src: /src/frr/zebra/zebra_nhg.c:923,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - id
    - nh
    - afi
    - type
    - from_dplane
    argTypes:
    - uint32_t
    - struct nexthop*
    - afi_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 912
    functionDepth: 6
    functionLinenumber: 912
    functionLinenumberEnd: 929
    functionName: zebra_nhg_find_nexthop
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - zebra_nhg_find
    - zlog_debug
    - nexthop_group_add_sorted
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *zebra_nhg_find_nexthop(uint32_t id,\n\t\t\t\t\t\t
      \    struct nexthop *nh,\n\t\t\t\t\t\t     afi_t afi, int type,\n\t\t\t\t\t\t
      \    bool from_dplane)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 931
    functionDepth: 0
    functionLinenumber: 931
    functionLinenumberEnd: 934
    functionName: nhg_ctx_get_id
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t nhg_ctx_get_id(const struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - status
    argTypes:
    - struct nhg_ctx*
    - enum nhg_ctx_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 939
    functionName: nhg_ctx_set_status
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void nhg_ctx_set_status(struct nhg_ctx *ctx, enum nhg_ctx_status status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 944
    functionName: nhg_ctx_get_status
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum nhg_ctx_status
    signature: enum nhg_ctx_status nhg_ctx_get_status(const struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - op
    argTypes:
    - struct nhg_ctx*
    - enum nhg_ctx_op_e
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 946
    functionDepth: 0
    functionLinenumber: 946
    functionLinenumberEnd: 949
    functionName: nhg_ctx_set_op
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void nhg_ctx_set_op(struct nhg_ctx *ctx, enum nhg_ctx_op_e op)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 954
    functionName: nhg_ctx_get_op
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum nhg_ctx_op_e
    signature: enum nhg_ctx_op_e nhg_ctx_get_op(const struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 959
    functionName: nhg_ctx_get_vrf_id
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t nhg_ctx_get_vrf_id(const struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 964
    functionName: nhg_ctx_get_type
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int nhg_ctx_get_type(const struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 969
    functionName: nhg_ctx_get_afi
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int nhg_ctx_get_afi(const struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 974
    functionName: nhg_ctx_get_nh
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct nexthop
    signature: struct nexthop *nhg_ctx_get_nh(struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 979
    functionName: nhg_ctx_get_count
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t nhg_ctx_get_count(const struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 981
    functionDepth: 0
    functionLinenumber: 981
    functionLinenumberEnd: 984
    functionName: nhg_ctx_get_grp
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct nh_grp
    signature: struct nh_grp *nhg_ctx_get_grp(struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 986
    functionDepth: 0
    functionLinenumber: 986
    functionLinenumberEnd: 989
    functionName: nhg_ctx_get_resilience
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct nhg_resilience
    signature: struct nhg_resilience *nhg_ctx_get_resilience(struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/zebra/zebra_nhg.c:995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 998
    functionName: nhg_ctx_new
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct nhg_ctx
    signature: struct nhg_ctx *nhg_ctx_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:1007,1
    - Dst: nhg_ctx_get_count
      Src: /src/frr/zebra/zebra_nhg.c:1009,1
    - Dst: nhg_ctx_get_nh
      Src: /src/frr/zebra/zebra_nhg.c:1012,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_nhg.c:1014,1
    - Dst: nexthop_del_srv6_seg6local
      Src: /src/frr/zebra/zebra_nhg.c:1015,1
    - Dst: nexthop_del_srv6_seg6
      Src: /src/frr/zebra/zebra_nhg.c:1016,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_nhg.c:1019,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx**
    assertStmts:
    - condition: ((*ctx) != NULL)
      pos:
        line_end: 1006
        line_start: 1006
        source_file: /src/frr/zebra/zebra_nhg.c
    constantsTouched: []
    func_position:
      end: 1020
      start: 1000
    functionDepth: 1
    functionLinenumber: 1000
    functionLinenumberEnd: 1020
    functionName: nhg_ctx_free
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - nexthop_del_srv6_seg6local
    - nhg_ctx_get_count
    - nhg_ctx_get_nh
    - nexthop_del_srv6_seg6
    - nexthop_del_labels
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: void nhg_ctx_free(struct nhg_ctx **ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nhg_ctx_new
      Src: /src/frr/zebra/zebra_nhg.c:1029,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_nhg.c:1042,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 8
    argNames:
    - id
    - nh
    - grp
    - vrf_id
    - afi
    - type
    - count
    - resilience
    argTypes:
    - uint32_t
    - struct nexthop*
    - struct nh_grp*
    - vrf_id_t
    - afi_t
    - int
    - uint8_t
    - struct nhg_resilience*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1022
    functionDepth: 1
    functionLinenumber: 1022
    functionLinenumberEnd: 1047
    functionName: nhg_ctx_init
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_ctx_new
    - memcpy
    linkageType: ''
    returnType: struct nhg_ctx
    signature: "struct nhg_ctx *nhg_ctx_init(uint32_t id, struct nexthop *nh,\n\t\t\t\t
      \   struct nh_grp *grp, vrf_id_t vrf_id,\n\t\t\t\t    afi_t afi, int type, uint8_t
      count,\n\t\t\t\t    struct nhg_resilience *resilience)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1053,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:1055,1
    - Dst: zebra_nhg_set_valid
      Src: /src/frr/zebra/zebra_nhg.c:1056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1057
    functionName: zebra_nhg_set_valid
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - zebra_nhg_set_valid
    - SET_FLAG
    - frr_each
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_set_valid(struct nhg_hash_entry *nhe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1063,1
    - Dst: zebra_router_in_shutdown
      Src: /src/frr/zebra/zebra_nhg.c:1068,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1069,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:1072,1
    - Dst: zebra_nhg_check_valid
      Src: /src/frr/zebra/zebra_nhg.c:1073,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1074
    functionName: zebra_nhg_set_invalid
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_check_valid
    - UNSET_FLAG
    - zebra_router_in_shutdown
    - frr_each
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_set_invalid(struct nhg_hash_entry *nhe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:1082,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1083,1
    - Dst: zebra_nhg_set_valid
      Src: /src/frr/zebra/zebra_nhg.c:1091,1
    - Dst: zebra_nhg_set_invalid
      Src: /src/frr/zebra/zebra_nhg.c:1093,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1094
    functionName: zebra_nhg_check_valid
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached:
    - zebra_nhg_set_valid
    - CHECK_FLAG
    - zebra_nhg_set_invalid
    - frr_each
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_check_valid(struct nhg_hash_entry *nhe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_depends_release
      Src: /src/frr/zebra/zebra_nhg.c:1099,1
    - Dst: zebra_nhg_dependents_release
      Src: /src/frr/zebra/zebra_nhg.c:1100,1
    - Dst: if_nhg_dependents_del
      Src: /src/frr/zebra/zebra_nhg.c:1102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1096
    functionDepth: 4
    functionLinenumber: 1096
    functionLinenumberEnd: 1103
    functionName: zebra_nhg_release_all_deps
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_depends_release
    - if_nhg_dependents_del
    - zebra_nhg_dependents_release
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_release_all_deps(struct nhg_hash_entry *nhe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1108,1
    - Dst: zebra_nhg_release_all_deps
      Src: /src/frr/zebra/zebra_nhg.c:1110,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_nhg.c:1117,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_nhg.c:1119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1105
    functionDepth: 5
    functionLinenumber: 1105
    functionLinenumberEnd: 1120
    functionName: zebra_nhg_release
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - hash_release
    - zlog_debug
    - zebra_nhg_release_all_deps
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_release(struct nhg_hash_entry *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_release
      Src: /src/frr/zebra/zebra_nhg.c:1124,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_nhg.c:1125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1122
    functionDepth: 6
    functionLinenumber: 1122
    functionLinenumberEnd: 1126
    functionName: zebra_nhg_handle_uninstall
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_free
    - zebra_nhg_release
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_handle_uninstall(struct nhg_hash_entry *nhe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_nhg.c:1133,1
    - Dst: zebra_nhg_set_valid
      Src: /src/frr/zebra/zebra_nhg.c:1134,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1138,1
    - Dst: zebra_nhg_install_kernel
      Src: /src/frr/zebra/zebra_nhg.c:1142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - nhe
    - install
    argTypes:
    - struct nhg_hash_entry*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1128
    functionDepth: 2
    functionLinenumber: 1128
    functionLinenumberEnd: 1145
    functionName: zebra_nhg_handle_install
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_set_valid
    - zebra_nhg_install_kernel
    - zlog_debug
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_handle_install(struct nhg_hash_entry *nhe, bool install)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:1155,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1160,1
    - Dst: zebra_nhg_install_kernel
      Src: /src/frr/zebra/zebra_nhg.c:1161,1
    - Dst: zebra_nhg_handle_uninstall
      Src: /src/frr/zebra/zebra_nhg.c:1163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - nhe
    - is_delete
    argTypes:
    - struct nhg_hash_entry*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1151
    functionDepth: 7
    functionLinenumber: 1151
    functionLinenumberEnd: 1164
    functionName: zebra_nhg_handle_kernel_state_change
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - flog_err
    - UNSET_FLAG
    - zebra_nhg_install_kernel
    - zebra_nhg_handle_uninstall
    linkageType: ''
    returnType: void
    signature: "void zebra_nhg_handle_kernel_state_change(struct nhg_hash_entry *nhe,\n\t\t\t\t\t\t
      bool is_delete)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nhg_ctx_get_id
      Src: /src/frr/zebra/zebra_nhg.c:1173,1
    - Dst: nhg_ctx_get_count
      Src: /src/frr/zebra/zebra_nhg.c:1174,1
    - Dst: nhg_ctx_get_vrf_id
      Src: /src/frr/zebra/zebra_nhg.c:1175,1
    - Dst: nhg_ctx_get_type
      Src: /src/frr/zebra/zebra_nhg.c:1176,1
    - Dst: nhg_ctx_get_afi
      Src: /src/frr/zebra/zebra_nhg.c:1177,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:1179,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1182,1
    - Dst: zebra_nhg_handle_kernel_state_change
      Src: /src/frr/zebra/zebra_nhg.c:1189,1
    - Dst: nhg_ctx_get_count
      Src: /src/frr/zebra/zebra_nhg.c:1193,1
    - Dst: nexthop_group_new
      Src: /src/frr/zebra/zebra_nhg.c:1194,1
    - Dst: zebra_nhg_process_grp
      Src: /src/frr/zebra/zebra_nhg.c:1195,1
    - Dst: nhg_ctx_get_grp
      Src: /src/frr/zebra/zebra_nhg.c:1196,1
    - Dst: nhg_ctx_get_resilience
      Src: /src/frr/zebra/zebra_nhg.c:1197,1
    - Dst: depends_decrement_free
      Src: /src/frr/zebra/zebra_nhg.c:1198,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zebra_nhg.c:1199,1
    - Dst: zebra_nhg_find
      Src: /src/frr/zebra/zebra_nhg.c:1203,1
    - Dst: depends_decrement_free
      Src: /src/frr/zebra/zebra_nhg.c:1205,1
    - Dst: nexthop_group_delete
      Src: /src/frr/zebra/zebra_nhg.c:1208,1
    - Dst: zebra_nhg_find_nexthop
      Src: /src/frr/zebra/zebra_nhg.c:1210,1
    - Dst: nhg_ctx_get_nh
      Src: /src/frr/zebra/zebra_nhg.c:1210,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:1214,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1222,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:1228,1
    - Dst: zebra_nhg_increment_ref
      Src: /src/frr/zebra/zebra_nhg.c:1229,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1231,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1232,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1166
    functionDepth: 8
    functionLinenumber: 1166
    functionLinenumberEnd: 1235
    functionName: nhg_ctx_process_new
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_ctx_get_id
    - nhg_ctx_get_count
    - depends_decrement_free
    - flog_err
    - zebra_nhg_lookup_id
    - zebra_nhg_find
    - zebra_nhg_handle_kernel_state_change
    - nexthop_group_new
    - nexthop_group_delete
    - zebra_nhg_increment_ref
    - zlog_debug
    - nhg_ctx_get_nh
    - zebra_nhg_process_grp
    - nhg_ctx_get_resilience
    - nhg_ctx_get_afi
    - zebra_nhg_find_nexthop
    - PROTO_OWNED
    - nhg_ctx_get_grp
    - SET_FLAG
    - nhg_ctx_get_type
    - nhg_ctx_get_vrf_id
    linkageType: ''
    returnType: int
    signature: int nhg_ctx_process_new(struct nhg_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhg_ctx_get_id
      Src: /src/frr/zebra/zebra_nhg.c:1240,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:1242,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_nhg.c:1245,1
    - Dst: zebra_nhg_handle_kernel_state_change
      Src: /src/frr/zebra/zebra_nhg.c:1252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1237
    functionDepth: 8
    functionLinenumber: 1237
    functionLinenumberEnd: 1255
    functionName: nhg_ctx_process_del
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_ctx_get_id
    - flog_warn
    - zebra_nhg_lookup_id
    - zebra_nhg_handle_kernel_state_change
    linkageType: ''
    returnType: int
    signature: int nhg_ctx_process_del(struct nhg_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_ctx_free
      Src: /src/frr/zebra/zebra_nhg.c:1264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1257
    functionDepth: 2
    functionLinenumber: 1257
    functionLinenumberEnd: 1265
    functionName: nhg_ctx_fini
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_ctx_free
    linkageType: ''
    returnType: void
    signature: void nhg_ctx_fini(struct nhg_ctx **ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhg_ctx_get_status
      Src: /src/frr/zebra/zebra_nhg.c:1270,1
    - Dst: rib_queue_nhg_ctx_add
      Src: /src/frr/zebra/zebra_nhg.c:1273,1
    - Dst: nhg_ctx_set_status
      Src: /src/frr/zebra/zebra_nhg.c:1274,1
    - Dst: nhg_ctx_set_status
      Src: /src/frr/zebra/zebra_nhg.c:1278,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1267
    functionDepth: 3
    functionLinenumber: 1267
    functionLinenumberEnd: 1281
    functionName: queue_add
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 13
    functionsReached:
    - rib_queue_nhg_ctx_add
    - nhg_ctx_get_status
    - nhg_ctx_set_status
    linkageType: ''
    returnType: int
    signature: int queue_add(struct nhg_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nhg_ctx_get_op
      Src: /src/frr/zebra/zebra_nhg.c:1287,1
    - Dst: nhg_ctx_process_new
      Src: /src/frr/zebra/zebra_nhg.c:1289,1
    - Dst: nhg_ctx_get_count
      Src: /src/frr/zebra/zebra_nhg.c:1290,1
    - Dst: nhg_ctx_get_status
      Src: /src/frr/zebra/zebra_nhg.c:1291,1
    - Dst: nhg_ctx_set_status
      Src: /src/frr/zebra/zebra_nhg.c:1304,1
    - Dst: queue_add
      Src: /src/frr/zebra/zebra_nhg.c:1305,1
    - Dst: nhg_ctx_set_status
      Src: /src/frr/zebra/zebra_nhg.c:1306,1
    - Dst: nhg_ctx_process_del
      Src: /src/frr/zebra/zebra_nhg.c:1312,1
    - Dst: nhg_ctx_set_status
      Src: /src/frr/zebra/zebra_nhg.c:1317,1
    - Dst: nhg_ctx_fini
      Src: /src/frr/zebra/zebra_nhg.c:1319,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct nhg_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1283
    functionDepth: 9
    functionLinenumber: 1283
    functionLinenumberEnd: 1322
    functionName: nhg_ctx_process
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - nhg_ctx_get_op
    - nhg_ctx_get_count
    - queue_add
    - nhg_ctx_process_del
    - nhg_ctx_fini
    - nhg_ctx_get_status
    - nhg_ctx_process_new
    - nhg_ctx_set_status
    linkageType: ''
    returnType: int
    signature: int nhg_ctx_process(struct nhg_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1332,1
    - Dst: nhg_ctx_init
      Src: /src/frr/zebra/zebra_nhg.c:1341,1
    - Dst: nhg_ctx_set_op
      Src: /src/frr/zebra/zebra_nhg.c:1342,1
    - Dst: nhg_ctx_process
      Src: /src/frr/zebra/zebra_nhg.c:1349,1
    - Dst: queue_add
      Src: /src/frr/zebra/zebra_nhg.c:1351,1
    - Dst: nhg_ctx_fini
      Src: /src/frr/zebra/zebra_nhg.c:1352,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 9
    argNames:
    - id
    - nh
    - grp
    - count
    - vrf_id
    - afi
    - type
    - startup
    - nhgr
    argTypes:
    - uint32_t
    - struct nexthop*
    - struct nh_grp*
    - uint8_t
    - vrf_id_t
    - afi_t
    - int
    - int
    - struct nhg_resilience*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1325
    functionDepth: 10
    functionLinenumber: 1325
    functionLinenumberEnd: 1357
    functionName: zebra_nhg_kernel_find
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - queue_add
    - nhg_ctx_set_op
    - nhg_ctx_process
    - nhg_ctx_init
    - zlog_debug
    - nhg_ctx_fini
    linkageType: ''
    returnType: int
    signature: "int zebra_nhg_kernel_find(uint32_t id, struct nexthop *nh, struct
      nh_grp *grp,\n\t\t\t  uint8_t count, vrf_id_t vrf_id, afi_t afi, int type,\n\t\t\t
      \ int startup, struct nhg_resilience *nhgr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nhg_ctx_init
      Src: /src/frr/zebra/zebra_nhg.c:1364,1
    - Dst: nhg_ctx_set_op
      Src: /src/frr/zebra/zebra_nhg.c:1366,1
    - Dst: queue_add
      Src: /src/frr/zebra/zebra_nhg.c:1368,1
    - Dst: nhg_ctx_fini
      Src: /src/frr/zebra/zebra_nhg.c:1369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - id
    - vrf_id
    argTypes:
    - uint32_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1360
    functionDepth: 4
    functionLinenumber: 1360
    functionLinenumberEnd: 1374
    functionName: zebra_nhg_kernel_del
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - nhg_ctx_set_op
    - nhg_ctx_init
    - nhg_ctx_fini
    - queue_add
    linkageType: ''
    returnType: int
    signature: int zebra_nhg_kernel_del(uint32_t id, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_dup
      Src: /src/frr/zebra/zebra_nhg.c:1383,1
    - Dst: zebra_nhg_find_nexthop
      Src: /src/frr/zebra/zebra_nhg.c:1385,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_nhg.c:1387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - nh
    - afi
    - type
    argTypes:
    - struct nexthop*
    - afi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1377
    functionDepth: 7
    functionLinenumber: 1377
    functionLinenumberEnd: 1390
    functionName: depends_find_recursive
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nexthop_dup
    - zebra_nhg_find_nexthop
    - nexthops_free
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *depends_find_recursive(const struct nexthop
      *nh,\n\t\t\t\t\t\t     afi_t afi, int type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_copy_no_recurse
      Src: /src/frr/zebra/zebra_nhg.c:1402,1
    - Dst: zebra_nhg_find_nexthop
      Src: /src/frr/zebra/zebra_nhg.c:1404,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_nhg.c:1407,1
    - Dst: nexthop_del_srv6_seg6local
      Src: /src/frr/zebra/zebra_nhg.c:1408,1
    - Dst: nexthop_del_srv6_seg6
      Src: /src/frr/zebra/zebra_nhg.c:1409,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - nh
    - afi
    - type
    - from_dplane
    argTypes:
    - struct nexthop*
    - afi_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1392
    functionDepth: 7
    functionLinenumber: 1392
    functionLinenumberEnd: 1415
    functionName: depends_find_singleton
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nexthop_del_srv6_seg6local
    - nexthop_copy_no_recurse
    - zlog_debug
    - nexthop_del_srv6_seg6
    - nexthop_del_labels
    - zebra_nhg_find_nexthop
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *depends_find_singleton(const struct nexthop
      *nh,\n\t\t\t\t\t\t     afi_t afi, int type,\n\t\t\t\t\t\t     bool from_dplane)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1428,1
    - Dst: depends_find_recursive
      Src: /src/frr/zebra/zebra_nhg.c:1429,1
    - Dst: depends_find_singleton
      Src: /src/frr/zebra/zebra_nhg.c:1431,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - nh
    - afi
    - type
    - from_dplane
    argTypes:
    - struct nexthop*
    - afi_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1417
    functionDepth: 8
    functionLinenumber: 1417
    functionLinenumberEnd: 1443
    functionName: depends_find
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - depends_find_recursive
    - CHECK_FLAG
    - zlog_debug
    - depends_find_singleton
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *depends_find(const struct nexthop *nh, afi_t
      afi,\n\t\t\t\t\t   int type, bool from_dplane)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1449,1
    - Dst: nhg_connected_tree_add_nhe
      Src: /src/frr/zebra/zebra_nhg.c:1458,1
    - Dst: zebra_nhg_increment_ref
      Src: /src/frr/zebra/zebra_nhg.c:1459,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - head
    - depend
    argTypes:
    - struct nhg_connected_tree_head*
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1445
    functionDepth: 2
    functionLinenumber: 1445
    functionLinenumberEnd: 1460
    functionName: depends_add
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - zebra_nhg_increment_ref
    - zlog_debug
    - nhg_connected_tree_add_nhe
    linkageType: ''
    returnType: void
    signature: "void depends_add(struct nhg_connected_tree_head *head,\n\t\t\tstruct
      nhg_hash_entry *depend)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: depends_find
      Src: /src/frr/zebra/zebra_nhg.c:1468,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1471,1
    - Dst: depends_add
      Src: /src/frr/zebra/zebra_nhg.c:1475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - head
    - nh
    - afi
    - type
    - from_dplane
    argTypes:
    - struct nhg_connected_tree_head*
    - struct nexthop*
    - afi_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1462
    functionDepth: 9
    functionLinenumber: 1462
    functionLinenumberEnd: 1478
    functionName: depends_find_add
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - depends_add
    - depends_find
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *\ndepends_find_add(struct nhg_connected_tree_head
      *head, struct nexthop *nh,\n\t\t afi_t afi, int type, bool from_dplane)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:1485,1
    - Dst: depends_add
      Src: /src/frr/zebra/zebra_nhg.c:1488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - head
    - id
    argTypes:
    - struct nhg_connected_tree_head*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1480
    functionDepth: 3
    functionLinenumber: 1480
    functionLinenumberEnd: 1491
    functionName: depends_find_id_add
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - depends_add
    - zebra_nhg_lookup_id
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: 'struct nhg_hash_entry *

      depends_find_id_add(struct nhg_connected_tree_head *head, uint32_t id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:1495,1
    - Dst: nhg_connected_tree_free
      Src: /src/frr/zebra/zebra_nhg.c:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct nhg_connected_tree_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1493
    functionDepth: 2
    functionLinenumber: 1493
    functionLinenumberEnd: 1497
    functionName: depends_decrement_free
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - nhg_connected_tree_decrement_ref
    - nhg_connected_tree_free
    linkageType: ''
    returnType: void
    signature: void depends_decrement_free(struct nhg_connected_tree_head *head)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:1511,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/zebra/zebra_nhg.c:1512,1
    - Dst: zebra_nhg_find
      Src: /src/frr/zebra/zebra_nhg.c:1514,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - id
    - nhg
    - rt_afi
    - type
    argTypes:
    - uint32_t
    - struct nexthop_group*
    - afi_t
    - int
    assertStmts:
    - condition: (nhg->nexthop)
      pos:
        line_end: 1510
        line_start: 1510
        source_file: /src/frr/zebra/zebra_nhg.c
    constantsTouched: []
    func_position:
      end: 1520
      start: 1500
    functionDepth: 6
    functionLinenumber: 1500
    functionLinenumberEnd: 1520
    functionName: zebra_nhg_rib_find
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - vrf_is_backend_netns
    - zebra_nhg_find
    - zlog_debug
    - assert
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *zebra_nhg_rib_find(uint32_t id,\n\t\t\t\t\t
      \ struct nexthop_group *nhg,\n\t\t\t\t\t  afi_t rt_afi, int type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:1529,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1535,1
    - Dst: zebra_nhe_find
      Src: /src/frr/zebra/zebra_nhg.c:1537,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1540,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - rt_nhe
    - rt_afi
    argTypes:
    - struct nhg_hash_entry*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1523
    functionDepth: 5
    functionLinenumber: 1523
    functionLinenumberEnd: 1543
    functionName: zebra_nhg_rib_find_nhe
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 4
    functionsReached:
    - flog_err
    - zlog_debug
    - zebra_nhe_find
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: 'struct nhg_hash_entry *

      zebra_nhg_rib_find_nhe(struct nhg_hash_entry *rt_nhe, afi_t rt_afi)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_nhg.c:1553,1
    - Dst: zebra_nhg_alloc
      Src: /src/frr/zebra/zebra_nhg.c:1555,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1549
    functionDepth: 1
    functionLinenumber: 1549
    functionLinenumberEnd: 1561
    functionName: zebra_nhg_backup_alloc
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - zebra_nhg_alloc
    - SET_FLAG
    - XCALLOC
    linkageType: ''
    returnType: struct nhg_backup_info
    signature: struct nhg_backup_info *zebra_nhg_backup_alloc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_nhg.c:1570,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_nhg.c:1572,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct nhg_backup_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1566
    functionDepth: 1
    functionLinenumber: 1566
    functionLinenumberEnd: 1574
    functionName: zebra_nhg_backup_free
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached:
    - zebra_nhg_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_backup_free(struct nhg_backup_info **p)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1577
    functionDepth: 0
    functionLinenumber: 1577
    functionLinenumberEnd: 1587
    functionName: zebra_nhg_get_backup_nhg
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: struct nexthop_group
    signature: struct nexthop_group *zebra_nhg_get_backup_nhg(struct nhg_hash_entry
      *nhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_backup_alloc
      Src: /src/frr/zebra/zebra_nhg.c:1599,1
    - Dst: nexthop_group_copy
      Src: /src/frr/zebra/zebra_nhg.c:1602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct nhg_backup_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1594
    functionDepth: 2
    functionLinenumber: 1594
    functionLinenumberEnd: 1605
    functionName: nhg_backup_copy
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - zebra_nhg_backup_alloc
    - nexthop_group_copy
    linkageType: ''
    returnType: struct nhg_backup_info
    signature: 'struct nhg_backup_info *

      nhg_backup_copy(const struct nhg_backup_info *orig)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_nhg.c:1609,1
    - Dst: zebra_nhg_backup_free
      Src: /src/frr/zebra/zebra_nhg.c:1611,1
    - Dst: nhg_connected_tree_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:1614,1
    - Dst: nhg_connected_tree_free
      Src: /src/frr/zebra/zebra_nhg.c:1615,1
    - Dst: nhg_connected_tree_free
      Src: /src/frr/zebra/zebra_nhg.c:1616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1607
    functionDepth: 2
    functionLinenumber: 1607
    functionLinenumberEnd: 1617
    functionName: zebra_nhg_free_members
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_tree_free
    - zebra_nhg_backup_free
    - nhg_connected_tree_decrement_ref
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_free_members(struct nhg_hash_entry *nhe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1624,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1627,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_nhg.c:1632,1
    - Dst: zebra_nhg_free_members
      Src: /src/frr/zebra/zebra_nhg.c:1634,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_nhg.c:1636,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1619
    functionDepth: 3
    functionLinenumber: 1619
    functionLinenumberEnd: 1637
    functionName: zebra_nhg_free
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 14
    functionsReached:
    - zebra_nhg_free_members
    - zlog_debug
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_free(struct nhg_hash_entry *nhe)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1649,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1652,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_nhg.c:1657,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_nhg.c:1659,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_nhg.c:1661,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1642
    functionDepth: 1
    functionLinenumber: 1642
    functionLinenumberEnd: 1662
    functionName: zebra_nhg_hash_free
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    - nexthops_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_hash_free(void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhg_connected_tree_pop
      Src: /src/frr/zebra/zebra_nhg.c:1675,1
    - Dst: zebra_nhg_hash_free
      Src: /src/frr/zebra/zebra_nhg.c:1677,1
    - Dst: nhg_connected_free
      Src: /src/frr/zebra/zebra_nhg.c:1679,1
    - Dst: nhg_connected_tree_pop
      Src: /src/frr/zebra/zebra_nhg.c:1682,1
    - Dst: nhg_connected_free
      Src: /src/frr/zebra/zebra_nhg.c:1683,1
    - Dst: nhg_connected_tree_pop
      Src: /src/frr/zebra/zebra_nhg.c:1686,1
    - Dst: nhg_connected_free
      Src: /src/frr/zebra/zebra_nhg.c:1688,1
    - Dst: zebra_nhg_hash_free
      Src: /src/frr/zebra/zebra_nhg.c:1690,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_nhg.c:1692,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - b
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1670
    functionDepth: 2
    functionLinenumber: 1670
    functionLinenumberEnd: 1694
    functionName: zebra_nhg_hash_free_zero_id
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - nhg_connected_free
    - XFREE
    - zebra_nhg_hash_free
    - nhg_connected_tree_pop
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_hash_free_zero_id(struct hash_bucket *b, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_nhg.c:1698,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1701,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:1704,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1696
    functionDepth: 1
    functionLinenumber: 1696
    functionLinenumberEnd: 1705
    functionName: zebra_nhg_timer
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zebra_nhg_decrement_ref
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_timer(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1710,1
    - Dst: zebra_router_in_shutdown
      Src: /src/frr/zebra/zebra_nhg.c:1715,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1716,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1717,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1719,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_nhg.c:1720,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:1725,1
    - Dst: nhg_connected_tree_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:1726,1
    - Dst: ZEBRA_NHG_CREATED
      Src: /src/frr/zebra/zebra_nhg.c:1728,1
    - Dst: zebra_nhg_uninstall_kernel
      Src: /src/frr/zebra/zebra_nhg.c:1729,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1707
    functionDepth: 2
    functionLinenumber: 1707
    functionLinenumberEnd: 1730
    functionName: zebra_nhg_decrement_ref
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 5
    functionsReached:
    - zebra_nhg_uninstall_kernel
    - nhg_connected_tree_decrement_ref
    - zebra_nhg_depends_is_empty
    - CHECK_FLAG
    - zebra_router_in_shutdown
    - zlog_debug
    - SET_FLAG
    - event_add_timer
    - ZEBRA_NHG_CREATED
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_decrement_ref(struct nhg_hash_entry *nhe)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1735,1
    - Dst: event_is_scheduled
      Src: /src/frr/zebra/zebra_nhg.c:1740,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_nhg.c:1741,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1743,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:1746,1
    - Dst: nhg_connected_tree_increment_ref
      Src: /src/frr/zebra/zebra_nhg.c:1747,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1732
    functionDepth: 2
    functionLinenumber: 1732
    functionLinenumberEnd: 1748
    functionName: zebra_nhg_increment_ref
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 4
    functionsReached:
    - zebra_nhg_depends_is_empty
    - zlog_debug
    - EVENT_OFF
    - UNSET_FLAG
    - nhg_connected_tree_increment_ref
    - event_is_scheduled
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_increment_ref(struct nhg_hash_entry *nhe)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/zebra/zebra_nhg.c:1761,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1762,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1837,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1852,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_nhg.c:1867,1
    - Dst: nexthop_add_srv6_seg6local
      Src: /src/frr/zebra/zebra_nhg.c:1871,1
    - Dst: nexthop_add_srv6_seg6
      Src: /src/frr/zebra/zebra_nhg.c:1874,1
    - Dst: _nexthop_add
      Src: /src/frr/zebra/zebra_nhg.c:1879,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 81
    argCount: 4
    argNames:
    - afi
    - newhop
    - nexthop
    - policy
    argTypes:
    - afi_t
    - struct nexthop*
    - struct nexthop*
    - struct zebra_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1750
    functionDepth: 1
    functionLinenumber: 1750
    functionLinenumberEnd: 1882
    functionName: nexthop_set_resolved
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - _nexthop_add
    - nexthop_new
    - SET_FLAG
    - zlog_debug
    - nexthop_add_srv6_seg6local
    - nexthop_add_srv6_seg6
    - nexthop_add_labels
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_set_resolved(afi_t afi,\n\t\t\t\t\t    const
      struct nexthop *newhop,\n\t\t\t\t\t    struct nexthop *nexthop,\n\t\t\t\t\t
      \   struct zebra_sr_policy *policy)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1889,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1893,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1897,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - nexthop
    - resolved
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1885
    functionDepth: 1
    functionLinenumber: 1885
    functionLinenumberEnd: 1917
    functionName: nexthop_valid_resolve
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_valid_resolve(const struct nexthop *nexthop,\n\t\t\t\t
      \ const struct nexthop *resolved)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_vrf_l3vni_svd_backed
      Src: /src/frr/zebra/zebra_nhg.c:1930,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_nhg.c:1932,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1934,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/zebra/zebra_nhg.c:1936,1
    - Dst: get_l3vni_vxlan_ifindex
      Src: /src/frr/zebra/zebra_nhg.c:1942,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1946,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - re_vrf_id
    - nexthop
    argTypes:
    - vrf_id_t
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1927
    functionDepth: 4
    functionLinenumber: 1927
    functionLinenumberEnd: 1949
    functionName: nexthop_set_evpn_dvni_svd
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - is_vrf_l3vni_svd_backed
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - get_l3vni_vxlan_ifindex
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_set_evpn_dvni_svd(vrf_id_t re_vrf_id,\n\t\t\t\t      struct
      nexthop *nexthop)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:1969,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:1986,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:1989,1
    - Dst: zebra_nhg_backup_alloc
      Src: /src/frr/zebra/zebra_nhg.c:2013,1
    - Dst: nexthop_dup_no_recurse
      Src: /src/frr/zebra/zebra_nhg.c:2016,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_nhg.c:2046,1
    - Dst: nexthop_add_labels
      Src: /src/frr/zebra/zebra_nhg.c:2047,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2073,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2076,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 65
    argCount: 5
    argNames:
    - nexthop
    - nhe
    - resolved
    - resolve_nhe
    - map
    argTypes:
    - struct nexthop*
    - struct nhg_hash_entry*
    - struct nexthop*
    - struct nhg_hash_entry*
    - struct backup_nh_map_s*
    assertStmts:
    - condition: (nexthop->backup_num <= NEXTHOP_MAX_BACKUPS)
      pos:
        line_end: 1968
        line_start: 1968
        source_file: /src/frr/zebra/zebra_nhg.c
    constantsTouched: []
    func_position:
      end: 2086
      start: 1957
    functionDepth: 2
    functionLinenumber: 1957
    functionLinenumberEnd: 2086
    functionName: resolve_backup_nexthops
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - zebra_nhg_backup_alloc
    - SET_FLAG
    - nexthop_dup_no_recurse
    - zlog_debug
    - nexthop_del_labels
    - nexthop_add_labels
    - assert
    linkageType: ''
    returnType: int
    signature: "int resolve_backup_nexthops(const struct nexthop *nexthop,\n\t\t\t\t
      \  const struct nhg_hash_entry *nhe,\n\t\t\t\t   struct nexthop *resolved,\n\t\t\t\t
      \  struct nhg_hash_entry *resolve_nhe,\n\t\t\t\t   struct backup_nh_map_s *map)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:2108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2127,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:2135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - rn
    - match
    - curr_ifindex
    argTypes:
    - struct route_node*
    - struct route_entry*
    - int32_t
    assertStmts:
    - condition: (newhop)
      pos:
        line_end: 2107
        line_start: 2107
        source_file: /src/frr/zebra/zebra_nhg.c
    - condition: (newhop)
      pos:
        line_end: 2134
        line_start: 2134
        source_file: /src/frr/zebra/zebra_nhg.c
    constantsTouched: []
    func_position:
      end: 2141
      start: 2101
    functionDepth: 1
    functionLinenumber: 2101
    functionLinenumberEnd: 2141
    functionName: zebra_nhg_connected_ifindex
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - assert
    linkageType: ''
    returnType: struct route_entry
    signature: "struct route_entry *\nzebra_nhg_connected_ifindex(struct route_node
      *rn, struct route_entry *match,\n\t\t\t    int32_t curr_ifindex)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2127,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:2135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (newhop)
      pos:
        line_end: 2134
        line_start: 2134
        source_file: /src/frr/zebra/zebra_nhg.c
    constantsTouched: []
    func_position:
      end: 2138
      start: 2123
    functionDepth: 1
    functionLinenumber: 2123
    functionLinenumberEnd: 2138
    functionName: RNODE_FOREACH_RE
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 7
    functionsReached:
    - CHECK_FLAG
    - assert
    linkageType: ''
    returnType: void
    signature: void RNODE_FOREACH_RE (rn, re)
  - BBCount: 222
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2171,1
    - Dst: nexthops_free
      Src: /src/frr/zebra/zebra_nhg.c:2172,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_nhg.c:2183,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nhg.c:2185,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/zebra/zebra_nhg.c:2194,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_nhg.c:2195,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nhg.c:2197,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2220,1
    - Dst: nexthop_set_evpn_dvni_svd
      Src: /src/frr/zebra/zebra_nhg.c:2224,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_nhg.c:2227,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2230,1
    - Dst: if_is_operative
      Src: /src/frr/zebra/zebra_nhg.c:2234,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2236,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_nhg.c:2247,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2251,1
    - Dst: IS_MAPPED_IPV6
      Src: /src/frr/zebra/zebra_nhg.c:2258,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/zebra/zebra_nhg.c:2261,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:2285,1
    - Dst: exit
      Src: /src/frr/zebra/zebra_nhg.c:2288,1
    - Dst: zebra_sr_policy_find
      Src: /src/frr/zebra/zebra_nhg.c:2291,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_nhg.c:2294,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2296,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2298,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2301,1
    - Dst: nexthop_set_resolved
      Src: /src/frr/zebra/zebra_nhg.c:2303,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_nhg.c:2313,1
    - Dst: assert
      Src: /src/frr/zebra/zebra_nhg.c:2328,1
    - Dst: zebra_vrf_table
      Src: /src/frr/zebra/zebra_nhg.c:2332,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_nhg.c:2334,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2337,1
    - Dst: route_node_match
      Src: /src/frr/zebra/zebra_nhg.c:2341,1
    - Dst: route_unlock_node
      Src: /src/frr/zebra/zebra_nhg.c:2343,1
    - Dst: prefix_same
      Src: /src/frr/zebra/zebra_nhg.c:2350,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2356,1
    - Dst: is_default_prefix
      Src: /src/frr/zebra/zebra_nhg.c:2366,1
    - Dst: rnh_resolve_via_default
      Src: /src/frr/zebra/zebra_nhg.c:2367,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2369,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_nhg.c:2374,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2376,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2378,1
    - Dst: route_lock_node
      Src: /src/frr/zebra/zebra_nhg.c:2391,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_nhg.c:2396,1
    - Dst: RSYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_nhg.c:2396,1
    - Dst: zebra_nhg_connected_ifindex
      Src: /src/frr/zebra/zebra_nhg.c:2397,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2406,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2422,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2450,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2451,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2454,1
    - Dst: rib_get_fib_nhg
      Src: /src/frr/zebra/zebra_nhg.c:2465,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_nhg.c:2466,1
    - Dst: nexthop_valid_resolve
      Src: /src/frr/zebra/zebra_nhg.c:2467,1
    - Dst: if
      Src: /src/frr/zebra/zebra_nhg.c:2470,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2471,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2476,1
    - Dst: nexthop_set_resolved
      Src: /src/frr/zebra/zebra_nhg.c:2478,1
    - Dst: resolve_backup_nexthops
      Src: /src/frr/zebra/zebra_nhg.c:2486,1
    - Dst: rib_get_fib_backup_nhg
      Src: /src/frr/zebra/zebra_nhg.c:2498,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_nhg.c:2503,1
    - Dst: nexthop_valid_resolve
      Src: /src/frr/zebra/zebra_nhg.c:2504,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2508,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2513,1
    - Dst: nexthop_set_resolved
      Src: /src/frr/zebra/zebra_nhg.c:2515,1
    - Dst: done_with_match
      Src: /src/frr/zebra/zebra_nhg.c:2520,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2527,1
    - Dst: resolved
      Src: /src/frr/zebra/zebra_nhg.c:2531,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2534,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:2536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2538,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2539,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2546,1
    - Dst: nexthop_active_check
      Src: /src/frr/zebra/zebra_nhg.c:2561,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2583,1
    - Dst: zvrf_id
      Src: /src/frr/zebra/zebra_nhg.c:2585,1
    - Dst: rib_dest_vrf
      Src: /src/frr/zebra/zebra_nhg.c:2585,1
    - Dst: rib_dest_from_rnode
      Src: /src/frr/zebra/zebra_nhg.c:2585,1
    - Dst: if_lookup_by_index
      Src: /src/frr/zebra/zebra_nhg.c:2594,1
    - Dst: if_is_up
      Src: /src/frr/zebra/zebra_nhg.c:2596,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2597,1
    - Dst: nexthop_active
      Src: /src/frr/zebra/zebra_nhg.c:2604,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2606,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2608,1
    - Dst: nexthop_active
      Src: /src/frr/zebra/zebra_nhg.c:2613,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2615,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2617,1
    - Dst: nexthop_active
      Src: /src/frr/zebra/zebra_nhg.c:2621,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2623,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2625,1
    - Dst: nexthop_active
      Src: /src/frr/zebra/zebra_nhg.c:2632,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2634,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2636,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2639,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2647,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2649,1
    - Dst: RIB_SYSTEM_ROUTE
      Src: /src/frr/zebra/zebra_nhg.c:2669,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2671,1
    - Dst: srcdest_rnode_table_info
      Src: /src/frr/zebra/zebra_nhg.c:2682,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_nhg.c:2686,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_nhg.c:2688,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2691,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2692,1
    - Dst: zebra_route_map_check
      Src: /src/frr/zebra/zebra_nhg.c:2696,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2700,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2704,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2706,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:2718,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:2720,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:2721,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2729,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2734,1
    - Dst: get_l3vni_vni
      Src: /src/frr/zebra/zebra_nhg.c:2762,1
    - Dst: label2vni
      Src: /src/frr/zebra/zebra_nhg.c:2769,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_nhg.c:2778,1
    - Dst: nexthop_list_set_evpn_dvni
      Src: /src/frr/zebra/zebra_nhg.c:2807,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2816,1
    - Dst: nexthop_active_check
      Src: /src/frr/zebra/zebra_nhg.c:2823,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2837,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_nhg.c:2853,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2855,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2857,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2872,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:2891,1
    - Dst: proto_nhg_nexthop_active_update
      Src: /src/frr/zebra/zebra_nhg.c:2892,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_nhg.c:2894,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2896,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_nhg.c:2901,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2904,1
    - Dst: nexthop_list_active_update
      Src: /src/frr/zebra/zebra_nhg.c:2914,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2917,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_nhg.c:2921,1
    - Dst: nexthop_list_active_update
      Src: /src/frr/zebra/zebra_nhg.c:2924,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2928,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2937,1
    - Dst: zebra_nhg_rib_find_nhe
      Src: /src/frr/zebra/zebra_nhg.c:2940,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2943,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_nhg.c:2948,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:2956,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_nhg.c:2963,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:2989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3000,1
    - Dst: zebra_nhg_resolve
      Src: /src/frr/zebra/zebra_nhg.c:3001,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3003,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:3011,1
    - Dst: zebra_nhg_nhe2grp_internal
      Src: /src/frr/zebra/zebra_nhg.c:3013,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3015,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3018,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3027,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3028,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3032,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3049,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3069,1
    - Dst: zebra_nhg_nhe2grp_internal
      Src: /src/frr/zebra/zebra_nhg.c:3080,1
    - Dst: zebra_nhg_resolve
      Src: /src/frr/zebra/zebra_nhg.c:3088,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:3090,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3092,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:3097,1
    - Dst: zebra_nhg_install_kernel
      Src: /src/frr/zebra/zebra_nhg.c:3098,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3101,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3102,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3103,1
    - Dst: ZEBRA_NHG_CREATED
      Src: /src/frr/zebra/zebra_nhg.c:3105,1
    - Dst: dplane_nexthop_add
      Src: /src/frr/zebra/zebra_nhg.c:3108,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3112,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3115,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3121,1
    - Dst: zebra_nhg_handle_install
      Src: /src/frr/zebra/zebra_nhg.c:3122,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3130,1
    - Dst: dplane_nexthop_delete
      Src: /src/frr/zebra/zebra_nhg.c:3131,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3135,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3138,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3144,1
    - Dst: zebra_nhg_handle_uninstall
      Src: /src/frr/zebra/zebra_nhg.c:3149,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_nhg.c:3159,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_nhg.c:3160,1
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/zebra_nhg.c:3162,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3165,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_nhg.c:3167,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/zebra_nhg.c:3167,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3172,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:3181,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3185,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_nhg.c:3187,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3192,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3194,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3195,1
    - Dst: zebra_nhg_handle_install
      Src: /src/frr/zebra/zebra_nhg.c:3196,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3199,1
    - Dst: zsend_nhg_notify
      Src: /src/frr/zebra/zebra_nhg.c:3200,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3205,1
    - Dst: zsend_nhg_notify
      Src: /src/frr/zebra/zebra_nhg.c:3206,1
    - Dst: zebra_nhg_proto_nexthops_only
      Src: /src/frr/zebra/zebra_nhg.c:3210,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3211,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3212,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3296,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:3297,1
    - Dst: ZEBRA_NHG_CREATED
      Src: /src/frr/zebra/zebra_nhg.c:3305,1
    - Dst: zebra_nhg_uninstall_kernel
      Src: /src/frr/zebra/zebra_nhg.c:3306,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_nhg.c:3330,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_nhg.c:3331,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_nhg.c:3332,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3339,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_nhg.c:3356,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3417,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_nhg.c:3430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3431,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3433,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3441,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3449,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3457,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3462,1
    - Dst: zebra_nhe_init
      Src: /src/frr/zebra/zebra_nhg.c:3465,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:3471,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_nhg.c:3481,1
    - Dst: zebra_nhg_release_all_deps
      Src: /src/frr/zebra/zebra_nhg.c:3484,1
    - Dst: zebra_nhg_rib_find_nhe::zebra_nhg_rib_find_nhe
      Src: /src/frr/zebra/zebra_nhg.c:3487,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3508,1
    - Dst: zebra_nhg_increment_ref
      Src: /src/frr/zebra/zebra_nhg.c:3509,1
    - Dst: rib_handle_nhg_replace
      Src: /src/frr/zebra/zebra_nhg.c:3511,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:3523,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:3524,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:3526,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_nhg.c:3532,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_nhg.c:3533,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3539,1
    - Dst: id::id
      Src: /src/frr/zebra/zebra_nhg.c:3540,1
    - Dst: vrf_id::vrf_id
      Src: /src/frr/zebra/zebra_nhg.c:3541,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3541,1
    - Dst: type::type
      Src: /src/frr/zebra/zebra_nhg.c:3541,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:3551,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3555,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3562,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3564,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3565,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3569,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3571,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3576,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3580,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3587,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3589,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3608,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3610,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3613,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_nhg.c:3616,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_nhg.c:3629,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_nhg.c:3632,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_nhg.c:3635,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:3640,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_nhg.c:3644,1
    - Dst: printfrr_ext_autoreg_p
      Src: /src/frr/zebra/zebra_nhg.c:3649,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_nhg.c:3658,1
    - Dst: bprintfrr
      Src: /src/frr/zebra/zebra_nhg.c:3660,1
    - Dst: printfrr_nhs
      Src: /src/frr/zebra/zebra_nhg.c:3662,1
    - Dst: zebra_nhg_depends_count
      Src: /src/frr/zebra/zebra_nhg.c:3664,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:3666,1
    - Dst: bprintfrr
      Src: /src/frr/zebra/zebra_nhg.c:3667,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_nhg.c:3669,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_nhg.c:3674,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3699,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:3703,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:3705,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3707,1
    - Dst: nexthop_is_ifindex_type
      Src: /src/frr/zebra/zebra_nhg.c:3712,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:3713,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3717,1
    - Dst: zebra_nhg_install_kernel
      Src: /src/frr/zebra/zebra_nhg.c:3721,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_nhg.c:3726,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3730,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3734,1
    CyclomaticComplexity: 260
    EdgeCount: 260
    ICount: 685
    argCount: 7
    argNames:
    - nexthop
    - nhe
    - top
    - type
    - flags
    - pmtu
    - vrf_id
    argTypes:
    - struct nexthop*
    - struct nhg_hash_entry*
    - struct prefix*
    - int
    - uint32_t
    - uint32_t*
    - vrf_id_t
    assertStmts:
    - condition: (afi != AFI_IP && afi != AFI_IP6)
      pos:
        line_end: 2327
        line_start: 2327
        source_file: /src/frr/zebra/zebra_nhg.c
    constantsTouched: []
    func_position:
      end: 3739
      start: 2148
    functionDepth: 7
    functionLinenumber: 2148
    functionLinenumberEnd: 3739
    functionName: nexthop_active
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached:
    - RSYSTEM_ROUTE
    - RIB_SYSTEM_ROUTE
    - zebra_nhg_rib_find_nhe::zebra_nhg_rib_find_nhe
    - get_l3vni_vni
    - flog_err
    - zebra_route_map_check
    - memset
    - zebra_nhg_nhe2grp_internal
    - if
    - vrf_id::vrf_id
    - rib_dest_vrf
    - if_is_up
    - rib_get_fib_nhg
    - route_unlock_node
    - zebra_nhg_uninstall_kernel
    - EVENT_OFF
    - rnh_resolve_via_default
    - bprintfrr
    - dplane_ctx_get_status
    - list_new
    - zebra_nhg_handle_uninstall
    - zsend_nhg_notify
    - zebra_nhg_rib_find_nhe
    - nexthop_is_ifindex_type
    - nexthop_del_labels
    - resolve_backup_nexthops
    - zebra_nhg_free
    - zebra_sr_policy_find
    - nexthop_list_active_update
    - dplane_ctx_get_op
    - if_lookup_by_index
    - zebra_nhg_connected_ifindex
    - dplane_nexthop_delete
    - route_node_match
    - rib_dest_from_rnode
    - ZEBRA_NHG_CREATED
    - ALL_NEXTHOPS_PTR
    - rib_handle_nhg_replace
    - nexthop_active_check
    - route_entry_update_nhe
    - IN6_IS_ADDR_LINKLOCAL
    - nexthop_active
    - zebra_nhg_resolve
    - if_is_operative
    - nexthops_free
    - nexthop_set_evpn_dvni_svd
    - zebra_nhg_handle_install
    - memcmp
    - printfrr_ext_autoreg_p
    - zebra_nhg_lookup_id
    - exit
    - rib_get_fib_backup_nhg
    - resolved
    - zebra_nhg_depends_is_empty
    - printfrr_nhs
    - zlog_debug
    - zebra_nhg_get_backup_nhg
    - assert
    - zebra_nhg_set_valid_if_active
    - id::id
    - zebra_nhe_init
    - dplane_res2str
    - srcdest_rnode_table_info
    - zebra_nhg_proto_nexthops_only
    - hash_release
    - route_lock_node
    - zebra_nhg_release_all_deps
    - SET_FLAG
    - proto_nhg_nexthop_active_update
    - nexthop_valid_resolve
    - IPV6_ADDR_SAME
    - nexthop_list_set_evpn_dvni
    - hashcount
    - dplane_nexthop_add
    - is_default_prefix
    - list_delete
    - frr_each
    - IS_MAPPED_IPV6
    - listnode_add
    - zebra_vrf_table
    - frr_each_safe
    - hash_walk
    - zvrf_id
    - ALL_LIST_ELEMENTS_RO
    - label2vni
    - nexthop_set_resolved
    - zebra_nhg_increment_ref
    - dplane_ctx_get_nhe_id
    - zebra_vrf_lookup_by_id
    - hash_iterate
    - dplane_op2str
    - prefix_same
    - zebra_nhg_install_kernel
    - zebra_nhg_depends_count
    - UNSET_FLAG
    - family2afi
    - zebra_route_string
    - done_with_match
    - ipv4_mapped_ipv6_to_ipv4
    - PROTO_OWNED
    - CHECK_FLAG
    - zebra_nhe_copy
    - zebra_nhg_decrement_ref
    - type::type
    - bputs
    linkageType: ''
    returnType: int
    signature: "int nexthop_active(struct nexthop *nexthop, struct nhg_hash_entry
      *nhe,\n\t\t\t  const struct prefix *top, int type, uint32_t flags,\n\t\t\t  uint32_t
      *pmtu, vrf_id_t vrf_id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:2718,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:2720,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:2721,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2729,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2734,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2737
      start: 2713
    functionDepth: 2
    functionLinenumber: 2713
    functionLinenumberEnd: 2737
    functionName: zebra_nhg_set_valid_if_active
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - zebra_nhg_set_valid_if_active
    - zebra_nhg_depends_is_empty
    - frr_each
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_set_valid_if_active(struct nhg_hash_entry *nhe)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_l3vni_vni
      Src: /src/frr/zebra/zebra_nhg.c:2762,1
    - Dst: label2vni
      Src: /src/frr/zebra/zebra_nhg.c:2769,1
    - Dst: nexthop_del_labels
      Src: /src/frr/zebra/zebra_nhg.c:2778,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - re
    - nhg
    argTypes:
    - struct route_entry*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2749
    functionDepth: 4
    functionLinenumber: 2749
    functionLinenumberEnd: 2782
    functionName: nexthop_list_set_evpn_dvni
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - label2vni
    - get_l3vni_vni
    - nexthop_del_labels
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_list_set_evpn_dvni(struct route_entry *re,\n\t\t\t\t
      \      struct nexthop_group *nhg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_list_set_evpn_dvni
      Src: /src/frr/zebra/zebra_nhg.c:2807,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2816,1
    - Dst: nexthop_active_check
      Src: /src/frr/zebra/zebra_nhg.c:2823,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2837,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/zebra/zebra_nhg.c:2853,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2855,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2857,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 20
    argCount: 4
    argNames:
    - rn
    - re
    - nhe
    - is_backup
    argTypes:
    - struct route_node*
    - struct route_entry*
    - struct nhg_hash_entry*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2788
    functionDepth: 5
    functionLinenumber: 2788
    functionLinenumberEnd: 2861
    functionName: nexthop_list_active_update
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - nexthop_active_check
    - CHECK_FLAG
    - SET_FLAG
    - UNSET_FLAG
    - IPV6_ADDR_SAME
    - nexthop_list_set_evpn_dvni
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t nexthop_list_active_update(struct route_node *rn,\n\t\t\t\t\t
      \  struct route_entry *re,\n\t\t\t\t\t   struct nhg_hash_entry *nhe,\n\t\t\t\t\t
      \  bool is_backup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2872,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2877
      start: 2864
    functionDepth: 1
    functionLinenumber: 2864
    functionLinenumberEnd: 2877
    functionName: proto_nhg_nexthop_active_update
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t proto_nhg_nexthop_active_update(struct nexthop_group *nhg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:2891,1
    - Dst: proto_nhg_nexthop_active_update
      Src: /src/frr/zebra/zebra_nhg.c:2892,1
    - Dst: family2afi
      Src: /src/frr/zebra/zebra_nhg.c:2894,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2896,1
    - Dst: zebra_nhe_copy
      Src: /src/frr/zebra/zebra_nhg.c:2901,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2904,1
    - Dst: nexthop_list_active_update
      Src: /src/frr/zebra/zebra_nhg.c:2914,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2917,1
    - Dst: zebra_nhg_get_backup_nhg
      Src: /src/frr/zebra/zebra_nhg.c:2921,1
    - Dst: nexthop_list_active_update
      Src: /src/frr/zebra/zebra_nhg.c:2924,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2928,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:2937,1
    - Dst: zebra_nhg_rib_find_nhe
      Src: /src/frr/zebra/zebra_nhg.c:2940,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:2943,1
    - Dst: route_entry_update_nhe
      Src: /src/frr/zebra/zebra_nhg.c:2948,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:2956,1
    - Dst: zebra_nhg_free
      Src: /src/frr/zebra/zebra_nhg.c:2963,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - rn
    - re
    argTypes:
    - struct route_node*
    - struct route_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2886
    functionDepth: 6
    functionLinenumber: 2886
    functionLinenumberEnd: 2965
    functionName: nexthop_active_update
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 4
    functionsReached:
    - PROTO_OWNED
    - zebra_nhg_set_valid_if_active
    - zebra_nhg_rib_find_nhe
    - route_entry_update_nhe
    - CHECK_FLAG
    - zebra_nhg_free
    - zlog_debug
    - proto_nhg_nexthop_active_update
    - zebra_nhe_copy
    - UNSET_FLAG
    - family2afi
    - zebra_nhg_get_backup_nhg
    - nexthop_list_active_update
    linkageType: ''
    returnType: int
    signature: int nexthop_active_update(struct route_node *rn, struct route_entry
      *re)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:2989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3000,1
    - Dst: zebra_nhg_resolve
      Src: /src/frr/zebra/zebra_nhg.c:3001,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3003,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:3011,1
    - Dst: zebra_nhg_nhe2grp_internal
      Src: /src/frr/zebra/zebra_nhg.c:3013,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3015,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3018,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3027,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3028,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3032,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3049,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3069,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 50
    argCount: 4
    argNames:
    - grp
    - curr_index
    - nhe
    - max_num
    argTypes:
    - struct nh_grp*
    - uint8_t
    - struct nhg_hash_entry*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3073
      start: 2980
    functionDepth: 2
    functionLinenumber: 2980
    functionLinenumberEnd: 3073
    functionName: zebra_nhg_nhe2grp_internal
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - zebra_nhg_depends_is_empty
    - frr_each
    - CHECK_FLAG
    - flog_err
    - zebra_nhg_nhe2grp_internal
    - zlog_debug
    - zebra_nhg_resolve
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t zebra_nhg_nhe2grp_internal(struct nh_grp *grp,\n\t\t\t\t\t
      \ uint8_t curr_index,\n\t\t\t\t\t  struct nhg_hash_entry *nhe,\n\t\t\t\t\t  int
      max_num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_nhe2grp_internal
      Src: /src/frr/zebra/zebra_nhg.c:3080,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - grp
    - nhe
    - max_num
    argTypes:
    - struct nh_grp*
    - struct nhg_hash_entry*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3081
      start: 3076
    functionDepth: 3
    functionLinenumber: 3076
    functionLinenumberEnd: 3081
    functionName: zebra_nhg_nhe2grp
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - zebra_nhg_nhe2grp_internal
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t zebra_nhg_nhe2grp(struct nh_grp *grp, struct nhg_hash_entry
      *nhe,\n\t\t\t  int max_num)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_resolve
      Src: /src/frr/zebra/zebra_nhg.c:3088,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:3090,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3092,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:3097,1
    - Dst: zebra_nhg_install_kernel
      Src: /src/frr/zebra/zebra_nhg.c:3098,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3101,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3102,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3103,1
    - Dst: ZEBRA_NHG_CREATED
      Src: /src/frr/zebra/zebra_nhg.c:3105,1
    - Dst: dplane_nexthop_add
      Src: /src/frr/zebra/zebra_nhg.c:3108,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3112,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3115,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3121,1
    - Dst: zebra_nhg_handle_install
      Src: /src/frr/zebra/zebra_nhg.c:3122,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3126
      start: 3083
    functionDepth: 3
    functionLinenumber: 3083
    functionLinenumberEnd: 3126
    functionName: zebra_nhg_install_kernel
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 5
    functionsReached:
    - dplane_nexthop_add
    - zebra_nhg_install_kernel
    - zebra_nhg_set_valid_if_active
    - frr_each
    - zebra_nhg_handle_install
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    - flog_err
    - zebra_nhg_resolve
    - ZEBRA_NHG_CREATED
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_install_kernel(struct nhg_hash_entry *nhe)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3130,1
    - Dst: dplane_nexthop_delete
      Src: /src/frr/zebra/zebra_nhg.c:3131,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3135,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3138,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3144,1
    - Dst: zebra_nhg_handle_uninstall
      Src: /src/frr/zebra/zebra_nhg.c:3149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - nhe
    argTypes:
    - struct nhg_hash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3150
      start: 3128
    functionDepth: 7
    functionLinenumber: 3128
    functionLinenumberEnd: 3150
    functionName: zebra_nhg_uninstall_kernel
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - dplane_nexthop_delete
    - flog_err
    - UNSET_FLAG
    - SET_FLAG
    - zebra_nhg_handle_uninstall
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_uninstall_kernel(struct nhg_hash_entry *nhe)
  - BBCount: 63
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/zebra_nhg.c:3159,1
    - Dst: dplane_ctx_get_status
      Src: /src/frr/zebra/zebra_nhg.c:3160,1
    - Dst: dplane_ctx_get_nhe_id
      Src: /src/frr/zebra/zebra_nhg.c:3162,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3165,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_nhg.c:3167,1
    - Dst: dplane_res2str
      Src: /src/frr/zebra/zebra_nhg.c:3167,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3172,1
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:3181,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3185,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/zebra_nhg.c:3187,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3192,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3194,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3195,1
    - Dst: zebra_nhg_handle_install
      Src: /src/frr/zebra/zebra_nhg.c:3196,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3199,1
    - Dst: zsend_nhg_notify
      Src: /src/frr/zebra/zebra_nhg.c:3200,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3205,1
    - Dst: zsend_nhg_notify
      Src: /src/frr/zebra/zebra_nhg.c:3206,1
    - Dst: zebra_nhg_proto_nexthops_only
      Src: /src/frr/zebra/zebra_nhg.c:3210,1
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3211,1
    - Dst: flog_err
      Src: /src/frr/zebra/zebra_nhg.c:3212,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 86
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3272
      start: 3152
    functionDepth: 3
    functionLinenumber: 3152
    functionLinenumberEnd: 3272
    functionName: zebra_nhg_dplane_result
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 2
    functionsReached:
    - PROTO_OWNED
    - dplane_ctx_get_op
    - dplane_op2str
    - zsend_nhg_notify
    - zebra_nhg_handle_install
    - dplane_ctx_get_status
    - zebra_nhg_proto_nexthops_only
    - zlog_debug
    - flog_err
    - dplane_res2str
    - dplane_ctx_get_nhe_id
    - zebra_nhg_lookup_id
    - UNSET_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_dplane_result(struct zebra_dplane_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3296,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:3297,1
    - Dst: ZEBRA_NHG_CREATED
      Src: /src/frr/zebra/zebra_nhg.c:3305,1
    - Dst: zebra_nhg_uninstall_kernel
      Src: /src/frr/zebra/zebra_nhg.c:3306,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3311
      start: 3274
    functionDepth: 8
    functionLinenumber: 3274
    functionLinenumberEnd: 3311
    functionName: zebra_nhg_sweep_entry
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - PROTO_OWNED
    - zebra_nhg_uninstall_kernel
    - ZEBRA_NHG_CREATED
    - zebra_nhg_decrement_ref
    linkageType: ''
    returnType: int
    signature: int zebra_nhg_sweep_entry(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_nhg.c:3330,1
    - Dst: hash_walk
      Src: /src/frr/zebra/zebra_nhg.c:3331,1
    - Dst: hashcount
      Src: /src/frr/zebra/zebra_nhg.c:3332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3333
      start: 3313
    functionDepth: 1
    functionLinenumber: 3313
    functionLinenumberEnd: 3333
    functionName: zebra_nhg_sweep_table
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - hash_walk
    - hashcount
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_sweep_table(struct hash *hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3340
      start: 3335
    functionDepth: 1
    functionLinenumber: 3335
    functionLinenumberEnd: 3340
    functionName: zebra_nhg_mark_keep_entry
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_mark_keep_entry(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_nhg.c:3356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3357
      start: 3354
    functionDepth: 1
    functionLinenumber: 3354
    functionLinenumberEnd: 3357
    functionName: zebra_nhg_mark_keep
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_mark_keep(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - set
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3367
      start: 3364
    functionDepth: 0
    functionLinenumber: 3364
    functionLinenumberEnd: 3367
    functionName: zebra_nhg_enable_kernel_nexthops
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_enable_kernel_nexthops(bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3372
      start: 3369
    functionDepth: 0
    functionLinenumber: 3369
    functionLinenumberEnd: 3372
    functionName: zebra_nhg_kernel_nexthops_enabled
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_kernel_nexthops_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - set
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3378
      start: 3375
    functionDepth: 0
    functionLinenumber: 3375
    functionLinenumberEnd: 3378
    functionName: zebra_nhg_set_recursive_use_backups
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_set_recursive_use_backups(bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3383
      start: 3380
    functionDepth: 0
    functionLinenumber: 3380
    functionLinenumberEnd: 3383
    functionName: zebra_nhg_recursive_use_backups
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_recursive_use_backups(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - set
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3396
      start: 3393
    functionDepth: 0
    functionLinenumber: 3393
    functionLinenumberEnd: 3396
    functionName: zebra_nhg_set_proto_nexthops_only
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_set_proto_nexthops_only(bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3401
      start: 3398
    functionDepth: 0
    functionLinenumber: 3398
    functionLinenumberEnd: 3401
    functionName: zebra_nhg_proto_nexthops_only
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zebra_nhg_proto_nexthops_only(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3417,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/zebra/zebra_nhg.c:3430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3431,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3433,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3441,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3449,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3457,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3462,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 6
    argNames:
    - id
    - type
    - instance
    - session
    - nhg
    - afi
    argTypes:
    - uint32_t
    - int
    - uint16_t
    - uint32_t
    - struct nexthop_group*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3463
      start: 3404
    functionDepth: 1
    functionLinenumber: 3404
    functionLinenumberEnd: 3463
    functionName: zebra_nhg_proto_add
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - SET_FLAG
    - CHECK_FLAG
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: "struct nhg_hash_entry *zebra_nhg_proto_add(uint32_t id, int type,\n\t\t\t\t\t
      \  uint16_t instance, uint32_t session,\n\t\t\t\t\t   struct nexthop_group *nhg,
      afi_t afi)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zebra_nhg_lookup_id
      Src: /src/frr/zebra/zebra_nhg.c:3551,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3555,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3562,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3564,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3565,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3569,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3571,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3576,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3580,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3587,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3589,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - id
    - type
    argTypes:
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3592
      start: 3547
    functionDepth: 2
    functionLinenumber: 3547
    functionLinenumberEnd: 3592
    functionName: zebra_nhg_proto_del
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    - zebra_nhg_lookup_id
    - zebra_route_string
    linkageType: ''
    returnType: struct nhg_hash_entry
    signature: struct nhg_hash_entry *zebra_nhg_proto_del(uint32_t id, int type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PROTO_OWNED
      Src: /src/frr/zebra/zebra_nhg.c:3608,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3610,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_nhg.c:3613,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_nhg.c:3616,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3618
      start: 3599
    functionDepth: 1
    functionLinenumber: 3599
    functionLinenumberEnd: 3618
    functionName: zebra_nhg_score_proto_entry
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - PROTO_OWNED
    - zlog_debug
    - zebra_route_string
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void zebra_nhg_score_proto_entry(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/zebra/zebra_nhg.c:3629,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_nhg.c:3632,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_nhg.c:3635,1
    - Dst: zebra_nhg_decrement_ref
      Src: /src/frr/zebra/zebra_nhg.c:3640,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_nhg.c:3644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3647
      start: 3621
    functionDepth: 3
    functionLinenumber: 3621
    functionLinenumberEnd: 3647
    functionName: zebra_nhg_score_proto
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - list_delete
    - ALL_LIST_ELEMENTS_RO
    - zebra_nhg_decrement_ref
    - list_new
    - hash_iterate
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long zebra_nhg_score_proto(int type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/zebra/zebra_nhg.c:3658,1
    - Dst: bprintfrr
      Src: /src/frr/zebra/zebra_nhg.c:3660,1
    - Dst: printfrr_nhs
      Src: /src/frr/zebra/zebra_nhg.c:3662,1
    - Dst: zebra_nhg_depends_count
      Src: /src/frr/zebra/zebra_nhg.c:3664,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:3666,1
    - Dst: bprintfrr
      Src: /src/frr/zebra/zebra_nhg.c:3667,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_nhg.c:3669,1
    - Dst: bputs
      Src: /src/frr/zebra/zebra_nhg.c:3674,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3676
      start: 3650
    functionDepth: 1
    functionLinenumber: 3650
    functionLinenumberEnd: 3676
    functionName: printfrr_nhghe
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - frr_each
    - zebra_nhg_depends_count
    - printfrr_nhs
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_nhghe(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \     const void *ptr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3699,1
    - Dst: frr_each
      Src: /src/frr/zebra/zebra_nhg.c:3703,1
    - Dst: zebra_nhg_set_valid_if_active
      Src: /src/frr/zebra/zebra_nhg.c:3705,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3707,1
    - Dst: nexthop_is_ifindex_type
      Src: /src/frr/zebra/zebra_nhg.c:3712,1
    - Dst: zebra_nhg_depends_is_empty
      Src: /src/frr/zebra/zebra_nhg.c:3713,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3717,1
    - Dst: zebra_nhg_install_kernel
      Src: /src/frr/zebra/zebra_nhg.c:3721,1
    - Dst: frr_each_safe
      Src: /src/frr/zebra/zebra_nhg.c:3726,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_nhg.c:3730,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_nhg.c:3734,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3739
      start: 3692
    functionDepth: 4
    functionLinenumber: 3692
    functionLinenumberEnd: 3739
    functionName: zebra_interface_nhg_reinstall
    functionSourceFile: /src/frr/zebra/zebra_nhg.c
    functionUses: 1
    functionsReached:
    - zebra_nhg_set_valid_if_active
    - zebra_nhg_depends_is_empty
    - frr_each
    - zebra_nhg_install_kernel
    - nexthop_is_ifindex_type
    - zlog_debug
    - UNSET_FLAG
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void zebra_interface_nhg_reinstall(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:50,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:51,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:52,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 58
    functionName: num_valid_macs
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 9
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t num_valid_macs(struct zebra_evpn *zevpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:74,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 80
    functionName: num_dup_detected_macs
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t num_dup_detected_macs(struct zebra_evpn *zevpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:88,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mac.c:91,1
    - Dst: listset_app_node_mem
      Src: /src/frr/zebra/zebra_evpn_mac.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zif
    argTypes:
    - struct zebra_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 93
    functionName: zebra_evpn_mac_ifp_new
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - list_new
    - listset_app_node_mem
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_ifp_new(struct zebra_if *zif)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:105,1
    - Dst: list_delete_node
      Src: /src/frr/zebra/zebra_evpn_mac.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - zmac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 113
    functionName: zebra_evpn_mac_ifp_unlink
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - list_delete_node
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_ifp_unlink(struct zebra_mac *zmac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:124,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mac.c:127,1
    - Dst: zebra_evpn_mac_ifp_unlink
      Src: /src/frr/zebra/zebra_evpn_mac.c:128,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mac.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 132
    functionName: zebra_evpn_mac_ifp_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zebra_evpn_mac_ifp_unlink
    - zlog_debug
    - list_delete
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_ifp_del(struct interface *ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:143,1
    - Dst: zebra_evpn_mac_ifp_unlink
      Src: /src/frr/zebra/zebra_evpn_mac.c:152,1
    - Dst: zebra_evpn_mac_ifp_new
      Src: /src/frr/zebra/zebra_evpn_mac.c:160,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:163,1
    - Dst: listnode_init
      Src: /src/frr/zebra/zebra_evpn_mac.c:169,1
    - Dst: listnode_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:170,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - zmac
    - ifp
    argTypes:
    - struct zebra_mac*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 171
    functionName: zebra_evpn_mac_ifp_link
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_ifp_unlink
    - zebra_evpn_mac_ifp_new
    - CHECK_FLAG
    - listnode_add
    - zlog_debug
    - listnode_init
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_mac_ifp_link(struct zebra_mac *zmac,\n\t\t\t\t    struct
      interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_ifp_unlink
      Src: /src/frr/zebra/zebra_evpn_mac.c:176,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mac.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zmac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 178
    functionName: zebra_evpn_mac_clear_fwd_info
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_mac_ifp_unlink
    - memset
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_clear_fwd_info(struct zebra_mac *zmac)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn_mac.c:203,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:207,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_evpn_mac.c:225,1
    - Dst: dplane_rem_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:230,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - zevpn
    - mac
    - was_static
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 236
    functionName: zebra_evpn_rem_mac_install
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 7
    functionsReached:
    - dplane_rem_mac_add
    - CHECK_FLAG
    - zebra_vxlan_if_vni_find
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_rem_mac_install(struct zebra_evpn *zevpn, struct zebra_mac
      *mac,\n\t\t\t       bool was_static)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:257,1
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn_mac.c:271,1
    - Dst: IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
      Src: /src/frr/zebra/zebra_evpn_mac.c:277,1
    - Dst: dplane_rem_mac_del
      Src: /src/frr/zebra/zebra_evpn_mac.c:285,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - zevpn
    - mac
    - force
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 291
    functionName: zebra_evpn_rem_mac_uninstall
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 3
    functionsReached:
    - dplane_rem_mac_del
    - zlog_debug
    - zebra_vxlan_if_vni_find
    - IS_ZEBRA_IF_BRIDGE_VLAN_AWARE
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_rem_mac_uninstall(struct zebra_evpn *zevpn,\n\t\t\t\t
      struct zebra_mac *mac, bool force)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:299,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:305,1
    - Dst: remote_neigh_count
      Src: /src/frr/zebra/zebra_evpn_mac.c:306,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn_mac.c:307,1
    - Dst: zebra_evpn_es_mac_deref_entry
      Src: /src/frr/zebra/zebra_evpn_mac.c:308,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:309,1
    - Dst: zebra_evpn_mac_in_use
      Src: /src/frr/zebra/zebra_evpn_mac.c:313,1
    - Dst: zebra_evpn_mac_del
      Src: /src/frr/zebra/zebra_evpn_mac.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - zevpn
    - mac
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 297
    functionDepth: 3
    functionLinenumber: 297
    functionLinenumberEnd: 315
    functionName: zebra_evpn_deref_ip2mac
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 4
    functionsReached:
    - CHECK_FLAG
    - zebra_evpn_mac_del
    - zebra_evpn_es_mac_deref_entry
    - zebra_evpn_mac_in_use
    - remote_neigh_count
    - UNSET_FLAG
    - zebra_evpn_rem_mac_uninstall
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_deref_ip2mac(struct zebra_evpn *zevpn, struct zebra_mac
      *mac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_vxlan_if_vni_find
      Src: /src/frr/zebra/zebra_evpn_mac.c:334,1
    - Dst: zebra_ns_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:343,1
    - Dst: if_lookup_by_index_per_ns
      Src: /src/frr/zebra/zebra_evpn_mac.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - mac
    - p_ifp
    - vid
    argTypes:
    - struct zebra_mac*
    - struct interface**
    - vlanid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 347
    functionName: zebra_evpn_mac_get_access_info
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index_per_ns
    - zebra_vxlan_if_vni_find
    - zebra_ns_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_mac_get_access_info(struct zebra_mac *mac,\n\t\t\t\t\t
      \  struct interface **p_ifp,\n\t\t\t\t\t   vlanid_t *vid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_evpn_mac.c:354,1
    - Dst: snprintfrr
      Src: /src/frr/zebra/zebra_evpn_mac.c:358,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:361,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:362,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:363,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:364,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:367,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:370,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:374,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - mac
    - buf
    - len
    argTypes:
    - struct zebra_mac*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 379
    functionName: zebra_evpn_zebra_mac_flag_dump
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: "char *zebra_evpn_zebra_mac_flag_dump(struct zebra_mac *mac, char *buf,\n\t\t\t\t\t
      \   size_t len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_evpn_mac.c:389,1
    - Dst: zebra_vrf_lookup_by_id
      Src: /src/frr/zebra/zebra_evpn_mac.c:392,1
    - Dst: zebra_evpn_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:396,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:400,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:407,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:410,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mac.c:412,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mac.c:416,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:418,1
    - Dst: ZEBRA_NEIGH_SET_INACTIVE
      Src: /src/frr/zebra/zebra_evpn_mac.c:419,1
    - Dst: else
      Src: /src/frr/zebra/zebra_evpn_mac.c:420,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:420,1
    - Dst: zebra_evpn_rem_neigh_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:421,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:425,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:431,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:438,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:440,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_evpn_mac.c:446,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:449,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:450,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:453,1
    - Dst: zebra_evpn_dup_addr_detect_for_mac
      Src: /src/frr/zebra/zebra_evpn_mac.c:457,1
    - Dst: zebra_evpn_do_dup_addr_detect
      Src: /src/frr/zebra/zebra_evpn_mac.c:468,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:475,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:479,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:482,1
    - Dst: monotime_since
      Src: /src/frr/zebra/zebra_evpn_mac.c:499,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:516,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:519,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_mac.c:529,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:553,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_mac.c:556,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/zebra/zebra_evpn_mac.c:561,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:564,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:567,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_mac.c:569,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_evpn_mac.c:571,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_mac.c:578,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:583,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:586,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_evpn_mac.c:591,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 602
    functionName: zebra_evpn_dad_mac_auto_recovery_exp
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_send_add_to_client
    - zebra_evpn_do_dup_addr_detect
    - zebra_evpn_rem_mac_install
    - zebra_evpn_mac_lookup
    - flog_warn
    - zebra_evpn_process_neigh_on_remote_mac_add
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - EVENT_ARG
    - zebra_vrf_lookup_by_id
    - zebra_evpn_process_neigh_on_local_mac_change
    - zebra_evpn_rem_neigh_install
    - zebra_evpn_lookup
    - listcount
    - monotime
    - UNSET_FLAG
    - monotime_since
    - EVENT_OFF
    - event_add_timer
    - zebra_evpn_dup_addr_detect_for_mac
    - CHECK_FLAG
    - zebra_evpn_zebra_mac_flag_dump
    - SET_FLAG
    - else
    - ZEBRA_NEIGH_SET_INACTIVE
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_dad_mac_auto_recovery_exp(struct event *t)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_mac.c:858,1
    - Dst: json_object_new_object
      Src: /src/frr/zebra/zebra_evpn_mac.c:861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:863,1
    - Dst: zebra_evpn_mac_get_access_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:870,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:872,1
    - Dst: zebra_evpn_print_mac_flags
      Src: /src/frr/zebra/zebra_evpn_mac.c:873,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:877,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:879,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:884,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:886,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:889,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:891,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:892,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:894,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:896,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:898,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:900,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:901,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:904,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:906,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:911,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_evpn_mac.c:914,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:921,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:922,1
    - Dst: inet_ntop
      Src: /src/frr/zebra/zebra_evpn_mac.c:928,1
    - Dst: vty_out
      Src: /src/frr/zebra/zebra_evpn_mac.c:931,1
    - Dst: zebra_evpn_print_mac_flags
      Src: /src/frr/zebra/zebra_evpn_mac.c:933,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:938,1
    - Dst: json_object_string_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:940,1
    - Dst: json_object_string_addf
      Src: /src/frr/zebra/zebra_evpn_mac.c:943,1
    - Dst: json_object_object_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:946,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:947,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:949,1
    - Dst: json_object_int_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:953,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:954,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:957,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 65
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 844
    functionDepth: 3
    functionLinenumber: 844
    functionLinenumberEnd: 963
    functionName: zebra_evpn_print_mac_hash
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - prefix_mac2str
    - CHECK_FLAG
    - json_object_int_add
    - zebra_evpn_print_mac_flags
    - IPV4_ADDR_SAME
    - json_object_boolean_true_add
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - json_object_boolean_false_add
    - zebra_evpn_mac_get_access_info
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_mac_hash(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_mac2str
      Src: /src/frr/zebra/zebra_evpn_mac.c:983,1
    - Dst: zebra_evpn_print_mac
      Src: /src/frr/zebra/zebra_evpn_mac.c:985,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 986
    functionName: zebra_evpn_print_mac_hash_detail
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_print_mac
    - prefix_mac2str
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_mac_hash_detail(struct hash_bucket *bucket, void
      *ctxt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zserv_find_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1002,1
    - Dst: stream_new
      Src: /src/frr/zebra/zebra_evpn_mac.c:1007,1
    - Dst: zclient_create_header
      Src: /src/frr/zebra/zebra_evpn_mac.c:1009,1
    - Dst: zebra_vrf_get_evpn_id
      Src: /src/frr/zebra/zebra_evpn_mac.c:1009,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn_mac.c:1010,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn_mac.c:1011,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/zebra/zebra_evpn_mac.c:1014,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/zebra/zebra_evpn_mac.c:1016,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn_mac.c:1019,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn_mac.c:1021,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn_mac.c:1023,1
    - Dst: stream_putc
      Src: /src/frr/zebra/zebra_evpn_mac.c:1026,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn_mac.c:1027,1
    - Dst: stream_put
      Src: /src/frr/zebra/zebra_evpn_mac.c:1028,1
    - Dst: stream_putl
      Src: /src/frr/zebra/zebra_evpn_mac.c:1030,1
    - Dst: stream_putw_at
      Src: /src/frr/zebra/zebra_evpn_mac.c:1035,1
    - Dst: stream_get_endp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1035,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1040,1
    - Dst: zclient_evpn_dump_macip_flags
      Src: /src/frr/zebra/zebra_evpn_mac.c:1043,1
    - Dst: zebra_route_string
      Src: /src/frr/zebra/zebra_evpn_mac.c:1046,1
    - Dst: zserv_send_message
      Src: /src/frr/zebra/zebra_evpn_mac.c:1054,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 8
    argNames:
    - vni
    - macaddr
    - ip
    - flags
    - seq
    - state
    - es
    - cmd
    argTypes:
    - vni_t
    - struct ethaddr*
    - struct ipaddr*
    - uint8_t
    - uint32_t
    - int
    - struct zebra_evpn_es*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 991
    functionDepth: 3
    functionLinenumber: 991
    functionLinenumberEnd: 1055
    functionName: zebra_evpn_macip_send_msg_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 1
    functionsReached:
    - zserv_find_client
    - zclient_evpn_dump_macip_flags
    - IS_IPADDR_V6
    - stream_new
    - zclient_create_header
    - stream_put
    - stream_putc
    - zebra_route_string
    - zserv_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - IS_IPADDR_V4
    - zebra_vrf_get_evpn_id
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_macip_send_msg_to_client(vni_t vni,\n\t\t\t\t\tconst
      struct ethaddr *macaddr,\n\t\t\t\t\tconst struct ipaddr *ip, uint8_t flags,\n\t\t\t\t\tuint32_t
      seq, int state,\n\t\t\t\t\tstruct zebra_evpn_es *es, uint16_t cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/zebra/zebra_evpn_mac.c:1062,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1057
    functionDepth: 1
    functionLinenumber: 1057
    functionLinenumberEnd: 1063
    functionName: mac_hash_keymake
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mac_hash_keymake(const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1079,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1081
    functionName: mac_cmp
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool mac_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/zebra_evpn_mac.c:1091,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1086
    functionDepth: 0
    functionLinenumber: 1086
    functionLinenumberEnd: 1095
    functionName: zebra_evpn_mac_alloc
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *zebra_evpn_mac_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mac.c:1106,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mac.c:1107,1
    - Dst: hash_get
      Src: /src/frr/zebra/zebra_evpn_mac.c:1108,1
    - Dst: list_new
      Src: /src/frr/zebra/zebra_evpn_mac.c:1113,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_mac.c:1116,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1120,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - zevpn
    - macaddr
    argTypes:
    - struct zebra_evpn*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1100
    functionDepth: 2
    functionLinenumber: 1100
    functionLinenumberEnd: 1126
    functionName: zebra_evpn_mac_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - memset
    - monotime
    - zebra_evpn_zebra_mac_flag_dump
    - zlog_debug
    - list_new
    - hash_get
    - memcpy
    linkageType: ''
    returnType: struct zebra_mac
    signature: "struct zebra_mac *zebra_evpn_mac_add(struct zebra_evpn *zevpn,\n\t\t\t\t
      \    const struct ethaddr *macaddr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1138,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1140,1
    - Dst: zebra_evpn_es_mac_deref_entry
      Src: /src/frr/zebra/zebra_evpn_mac.c:1145,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:1148,1
    - Dst: zebra_evpn_mac_stop_hold_timer
      Src: /src/frr/zebra/zebra_evpn_mac.c:1151,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_mac.c:1154,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_evpn_mac.c:1164,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1166,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mac.c:1170,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1172,1
    - Dst: list_delete
      Src: /src/frr/zebra/zebra_evpn_mac.c:1176,1
    - Dst: hash_release
      Src: /src/frr/zebra/zebra_evpn_mac.c:1179,1
    - Dst: XFREE
      Src: /src/frr/zebra/zebra_evpn_mac.c:1180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - zevpn
    - mac
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1183
    functionName: zebra_evpn_mac_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 4
    functionsReached:
    - list_delete
    - zebra_evpn_mac_stop_hold_timer
    - list_isempty
    - listcount
    - zebra_evpn_es_mac_deref_entry
    - zebra_evpn_zebra_mac_flag_dump
    - zlog_debug
    - EVENT_OFF
    - SET_FLAG
    - XFREE
    - hash_release
    - zebra_evpn_mac_clear_fwd_info
    linkageType: ''
    returnType: int
    signature: int zebra_evpn_mac_del(struct zebra_evpn *zevpn, struct zebra_mac *mac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:1193,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:1197,1
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mac.c:1198,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - zevpn
    - macaddr
    argTypes:
    - struct zebra_evpn*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1188
    functionDepth: 3
    functionLinenumber: 1188
    functionLinenumberEnd: 1202
    functionName: zebra_evpn_mac_add_auto
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 2
    functionsReached:
    - memset
    - SET_FLAG
    - zebra_evpn_mac_add
    - zebra_evpn_mac_clear_fwd_info
    linkageType: ''
    returnType: struct zebra_mac
    signature: "struct zebra_mac *zebra_evpn_mac_add_auto(struct zebra_evpn *zevpn,\n\t\t\t\t\t
      \ const struct ethaddr *macaddr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_evpn_mac.c:1214,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mac.c:1217,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1221,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1224,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 2
    argNames:
    - wctx
    - mac
    argTypes:
    - struct mac_walk_ctx*
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1204
    functionDepth: 2
    functionLinenumber: 1204
    functionLinenumberEnd: 1233
    functionName: zebra_evpn_check_mac_del_from_db
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - listcount
    - zlog_debug
    - zebra_evpn_zebra_mac_flag_dump
    linkageType: ''
    returnType: bool
    signature: "bool zebra_evpn_check_mac_del_from_db(struct mac_walk_ctx *wctx,\n\t\t\t\t\t
      \    struct zebra_mac *mac)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_check_mac_del_from_db
      Src: /src/frr/zebra/zebra_evpn_mac.c:1243,1
    - Dst: zebra_evpn_mac_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1245,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1250,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:1251,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn_mac.c:1257,1
    - Dst: zebra_evpn_mac_del
      Src: /src/frr/zebra/zebra_evpn_mac.c:1261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1238
    functionDepth: 4
    functionLinenumber: 1238
    functionLinenumberEnd: 1265
    functionName: zebra_evpn_mac_del_hash_entry
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_check_mac_del_from_db
    - zebra_evpn_mac_del
    - zebra_evpn_sync_mac_dp_install
    - zebra_evpn_mac_send_del_to_client
    - zebra_evpn_mac_is_static
    - zebra_evpn_rem_mac_uninstall
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_del_hash_entry(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mac.c:1278,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mac.c:1284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - zevpn
    - uninstall
    - upd_client
    - flags
    argTypes:
    - struct zebra_evpn*
    - int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1285
    functionName: zebra_evpn_mac_del_all
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 8
    functionsReached:
    - hash_iterate
    - memset
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_mac_del_all(struct zebra_evpn *zevpn, int uninstall,\n\t\t\t
      \   int upd_client, uint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mac.c:1296,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mac.c:1297,1
    - Dst: hash_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:1298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - zevpn
    - mac
    argTypes:
    - struct zebra_evpn*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1290
    functionDepth: 1
    functionLinenumber: 1290
    functionLinenumberEnd: 1301
    functionName: zebra_evpn_mac_lookup
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 19
    functionsReached:
    - memcpy
    - hash_lookup
    - memset
    linkageType: ''
    returnType: struct zebra_mac
    signature: "struct zebra_mac *zebra_evpn_mac_lookup(struct zebra_evpn *zevpn,\n\t\t\t\t\tconst
      struct ethaddr *mac)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1312,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1318,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1324,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1327,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1329,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1330,1
    - Dst: zebra_evpn_macip_send_msg_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1332,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - vni
    - macaddr
    - mac_flags
    - seq
    - es
    argTypes:
    - vni_t
    - struct ethaddr*
    - uint32_t
    - uint32_t
    - struct zebra_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1306
    functionDepth: 4
    functionLinenumber: 1306
    functionLinenumberEnd: 1335
    functionName: zebra_evpn_mac_send_add_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 6
    functionsReached:
    - CHECK_FLAG
    - zebra_evpn_macip_send_msg_to_client
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_mac_send_add_to_client(vni_t vni, const struct ethaddr
      *macaddr,\n\t\t\t\t      uint32_t mac_flags, uint32_t seq,\n\t\t\t\t      struct
      zebra_evpn_es *es)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1346,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1355,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1356,1
    - Dst: zebra_evpn_macip_send_msg_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1360,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 4
    argNames:
    - vni
    - macaddr
    - flags
    - force
    argTypes:
    - vni_t
    - struct ethaddr*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1340
    functionDepth: 4
    functionLinenumber: 1340
    functionLinenumberEnd: 1363
    functionName: zebra_evpn_mac_send_del_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - zebra_evpn_macip_send_msg_to_client
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_mac_send_del_to_client(vni_t vni, const struct ethaddr
      *macaddr,\n\t\t\t\t      uint32_t flags, bool force)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create_size
      Src: /src/frr/zebra/zebra_evpn_mac.c:1370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - desc
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1368
    functionDepth: 1
    functionLinenumber: 1368
    functionLinenumberEnd: 1371
    functionName: zebra_mac_db_create
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 4
    functionsReached:
    - hash_create_size
    linkageType: ''
    returnType: struct hash
    signature: struct hash *zebra_mac_db_create(const char *desc)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_es_evi_find
      Src: /src/frr/zebra/zebra_evpn_mac.c:1391,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1394,1
    - Dst: zebra_evpn_mac_get_access_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:1405,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1411,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1415,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1428,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1432,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1439,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1443,1
    - Dst: zebra_evpn_es_local_mac_via_network_port
      Src: /src/frr/zebra/zebra_evpn_mac.c:1449,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1453,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1458,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:1466,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn_mac.c:1469,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1478,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1481,1
    - Dst: dplane_local_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:1487,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 4
    argNames:
    - mac
    - set_inactive
    - force_clear_static
    - caller
    argTypes:
    - struct zebra_mac*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1374
    functionDepth: 3
    functionLinenumber: 1374
    functionLinenumberEnd: 1490
    functionName: zebra_evpn_sync_mac_dp_install
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 4
    functionsReached:
    - dplane_local_mac_add
    - zebra_evpn_rem_mac_install
    - CHECK_FLAG
    - zebra_evpn_es_local_mac_via_network_port
    - zebra_evpn_zebra_mac_flag_dump
    - zlog_debug
    - zebra_evpn_mac_is_static
    - zebra_evpn_rem_mac_uninstall
    - zebra_evpn_es_evi_find
    - zebra_evpn_mac_get_access_info
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_sync_mac_dp_install(struct zebra_mac *mac, bool set_inactive,\n\t\t\t\t
      \  bool force_clear_static, const char *caller)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1497,1
    - Dst: zebra_evpn_mac_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - mac
    - old_bgp_ready
    - new_bgp_ready
    argTypes:
    - struct zebra_mac*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1492
    functionDepth: 5
    functionLinenumber: 1492
    functionLinenumberEnd: 1504
    functionName: zebra_evpn_mac_send_add_del_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_send_add_to_client
    - zebra_evpn_mac_send_del_to_client
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_mac_send_add_del_to_client(struct zebra_mac *mac,\n\t\t\t\t\t
      \  bool old_bgp_ready,\n\t\t\t\t\t   bool new_bgp_ready)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1520,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1524,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1527,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1528,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1529,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1530,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1531,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1536,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1540,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:1548,1
    - Dst: zebra_evpn_mac_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1512
    functionDepth: 6
    functionLinenumber: 1512
    functionLinenumberEnd: 1556
    functionName: zebra_evpn_mac_hold_exp_cb
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_send_add_del_to_client
    - zebra_evpn_mac_is_ready_for_bgp
    - CHECK_FLAG
    - zebra_evpn_zebra_mac_flag_dump
    - zebra_evpn_sync_mac_dp_install
    - zlog_debug
    - UNSET_FLAG
    - zebra_evpn_mac_is_static
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_hold_exp_cb(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1566,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1570,1
    - Dst: event_add_timer
      Src: /src/frr/zebra/zebra_evpn_mac.c:1573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1558
    functionDepth: 2
    functionLinenumber: 1558
    functionLinenumberEnd: 1575
    functionName: zebra_evpn_mac_start_hold_timer
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_debug
    - zebra_evpn_zebra_mac_flag_dump
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_start_hold_timer(struct zebra_mac *mac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1585,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1589,1
    - Dst: EVENT_OFF
      Src: /src/frr/zebra/zebra_evpn_mac.c:1593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1577
    functionDepth: 2
    functionLinenumber: 1577
    functionLinenumberEnd: 1594
    functionName: zebra_evpn_mac_stop_hold_timer
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    - zebra_evpn_zebra_mac_flag_dump
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_stop_hold_timer(struct zebra_mac *mac)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1604,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1608,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1612,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1613,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1614,1
    - Dst: zebra_evpn_mac_start_hold_timer
      Src: /src/frr/zebra/zebra_evpn_mac.c:1615,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1616,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:1620,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1596
    functionDepth: 4
    functionLinenumber: 1596
    functionLinenumberEnd: 1623
    functionName: zebra_evpn_sync_mac_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_mac_start_hold_timer
    - CHECK_FLAG
    - zebra_evpn_zebra_mac_flag_dump
    - zebra_evpn_sync_mac_dp_install
    - zlog_debug
    - UNSET_FLAG
    - zebra_evpn_mac_is_static
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_sync_mac_del(struct zebra_mac *mac)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1634,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1645,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1647,1
    - Dst: zebra_vxlan_get_accept_bgp_seq
      Src: /src/frr/zebra/zebra_evpn_mac.c:1658,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1661,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1665,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1673,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1677,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - zevpn
    - mac
    - seq
    - sync
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1625
    functionDepth: 2
    functionLinenumber: 1625
    functionLinenumberEnd: 1685
    functionName: zebra_evpn_mac_is_bgp_seq_ok
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_is_ready_for_bgp
    - CHECK_FLAG
    - zebra_evpn_zebra_mac_flag_dump
    - zlog_debug
    - zebra_vxlan_get_accept_bgp_seq
    linkageType: ''
    returnType: bool
    signature: "bool zebra_evpn_mac_is_bgp_seq_ok(struct zebra_evpn *zevpn,\n\t\t\t\t\t\tstruct
      zebra_mac *mac,\n\t\t\t\t\t\tuint32_t seq, bool sync)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:1707,1
    - Dst: zebra_evpn_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:1717,1
    - Dst: zebra_evpn_es_mac_ref
      Src: /src/frr/zebra/zebra_evpn_mac.c:1718,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1721,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1724,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1725,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1727,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1729,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1731,1
    - Dst: monotime
      Src: /src/frr/zebra/zebra_evpn_mac.c:1741,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1744,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1745,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1748,1
    - Dst: ipaddr2str
      Src: /src/frr/zebra/zebra_evpn_mac.c:1752,1
    - Dst: zebra_evpn_mac_is_bgp_seq_ok
      Src: /src/frr/zebra/zebra_evpn_mac.c:1759,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1762,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1763,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1767,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1781,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1782,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1788,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1790,1
    - Dst: zebra_evpn_mac_start_hold_timer
      Src: /src/frr/zebra/zebra_evpn_mac.c:1792,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1795,1
    - Dst: zebra_evpn_mac_stop_hold_timer
      Src: /src/frr/zebra/zebra_evpn_mac.c:1799,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:1803,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1811,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1814,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1816,1
    - Dst: zebra_evpn_es_mac_ref
      Src: /src/frr/zebra/zebra_evpn_mac.c:1821,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:1832,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1836,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:1837,1
    - Dst: MAX
      Src: /src/frr/zebra/zebra_evpn_mac.c:1846,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:1856,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:1859,1
    - Dst: zebra_evpn_mac_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1866,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_evpn_mac.c:1873,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:1882,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 89
    argCount: 7
    argNames:
    - zevpn
    - macaddr
    - ipa_len
    - ipaddr
    - flags
    - seq
    - esi
    argTypes:
    - struct zebra_evpn*
    - struct ethaddr*
    - uint16_t
    - struct ipaddr*
    - uint8_t
    - uint32_t
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1687
    functionDepth: 6
    functionLinenumber: 1687
    functionLinenumberEnd: 1888
    functionName: zebra_evpn_proc_sync_mac_update
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_mac_lookup
    - zebra_evpn_mac_send_add_del_to_client
    - zebra_evpn_mac_stop_hold_timer
    - zlog_debug
    - zebra_evpn_mac_is_static
    - zebra_evpn_process_neigh_on_local_mac_change
    - zebra_evpn_mac_clear_fwd_info
    - zebra_evpn_mac_start_hold_timer
    - monotime
    - zebra_evpn_sync_mac_dp_install
    - MAX
    - zebra_evpn_mac_add
    - zebra_evpn_mac_is_ready_for_bgp
    - CHECK_FLAG
    - zebra_evpn_mac_is_bgp_seq_ok
    - zebra_evpn_zebra_mac_flag_dump
    - zebra_evpn_es_mac_ref
    - SET_FLAG
    - ipaddr2str
    linkageType: ''
    returnType: struct zebra_mac
    signature: "struct zebra_mac *zebra_evpn_proc_sync_mac_update(struct zebra_evpn
      *zevpn,\n\t\t\t\t\t\t  const struct ethaddr *macaddr,\n\t\t\t\t\t\t  uint16_t
      ipa_len,\n\t\t\t\t\t\t  const struct ipaddr *ipaddr,\n\t\t\t\t\t\t  uint8_t
      flags, uint32_t seq,\n\t\t\t\t\t\t  const esi_t *esi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:1907,1
    - Dst: zebra_evpn_es_mac_ref_entry
      Src: /src/frr/zebra/zebra_evpn_mac.c:1912,1
    - Dst: zebra_evpn_mac_ifp_link
      Src: /src/frr/zebra/zebra_evpn_mac.c:1919,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - mac
    - ifp
    - vid
    argTypes:
    - struct zebra_mac*
    - struct interface*
    - vlanid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1893
    functionDepth: 4
    functionLinenumber: 1893
    functionLinenumberEnd: 1923
    functionName: zebra_evpn_local_mac_update_fwd_info
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_ifp_link
    - zebra_evpn_es_mac_ref_entry
    - zebra_evpn_mac_clear_fwd_info
    linkageType: ''
    returnType: bool
    signature: "bool zebra_evpn_local_mac_update_fwd_info(struct zebra_mac *mac,\n\t\t\t\t\t\t
      struct interface *ifp,\n\t\t\t\t\t\t vlanid_t vid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1932,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1935,1
    - Dst: zebra_evpn_mac_send_add_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:1936,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1926
    functionDepth: 5
    functionLinenumber: 1926
    functionLinenumberEnd: 1939
    functionName: zebra_evpn_send_mac_hash_entry_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_mac_send_add_to_client
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_send_mac_hash_entry_to_client(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      \    void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_evpn_mac.c:1949,1
    - Dst: hash_iterate
      Src: /src/frr/zebra/zebra_evpn_mac.c:1952,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zevpn
    argTypes:
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1954
      start: 1942
    functionDepth: 1
    functionLinenumber: 1942
    functionLinenumberEnd: 1954
    functionName: zebra_evpn_send_mac_list_to_client
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 2
    functionsReached:
    - hash_iterate
    - memset
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_send_mac_list_to_client(struct zebra_evpn *zevpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_process_neigh_on_remote_mac_del
      Src: /src/frr/zebra/zebra_evpn_mac.c:1958,1
    - Dst: remote_neigh_count
      Src: /src/frr/zebra/zebra_evpn_mac.c:1969,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn_mac.c:1970,1
    - Dst: zebra_evpn_es_mac_deref_entry
      Src: /src/frr/zebra/zebra_evpn_mac.c:1971,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1972,1
    - Dst: list_isempty
      Src: /src/frr/zebra/zebra_evpn_mac.c:1975,1
    - Dst: zebra_evpn_mac_del
      Src: /src/frr/zebra/zebra_evpn_mac.c:1976,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - zevpn
    - mac
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1979
      start: 1956
    functionDepth: 4
    functionLinenumber: 1956
    functionLinenumberEnd: 1979
    functionName: zebra_evpn_rem_mac_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_process_neigh_on_remote_mac_del
    - list_isempty
    - zebra_evpn_mac_del
    - zebra_evpn_es_mac_deref_entry
    - remote_neigh_count
    - UNSET_FLAG
    - SET_FLAG
    - zebra_evpn_rem_mac_uninstall
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_rem_mac_del(struct zebra_evpn *zevpn, struct zebra_mac
      *mac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:1990,1
    - Dst: zebra_evpn_print_mac_hash
      Src: /src/frr/zebra/zebra_evpn_mac.c:1991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1982
    functionDepth: 4
    functionLinenumber: 1982
    functionLinenumberEnd: 1992
    functionName: zebra_evpn_print_dad_mac_hash
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - zebra_evpn_print_mac_hash
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_print_dad_mac_hash(struct hash_bucket *bucket, void
      *ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2004,1
    - Dst: zebra_evpn_print_mac_hash_detail
      Src: /src/frr/zebra/zebra_evpn_mac.c:2005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 1995
    functionDepth: 2
    functionLinenumber: 1995
    functionLinenumberEnd: 2006
    functionName: zebra_evpn_print_dad_mac_hash_detail
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zebra_evpn_print_mac_hash_detail
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_print_dad_mac_hash_detail(struct hash_bucket *bucket,\n\t\t\t\t\t
      \ void *ctxt)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2025,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2026,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:2028,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2031,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2032,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2034,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2046,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2048,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/zebra/zebra_evpn_mac.c:2049,1
    - Dst: memcmp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2050,1
    - Dst: zebra_evpn_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:2055,1
    - Dst: zebra_evpn_es_mac_ref
      Src: /src/frr/zebra/zebra_evpn_mac.c:2056,1
    - Dst: zebra_evpn_mac_is_bgp_seq_ok
      Src: /src/frr/zebra/zebra_evpn_mac.c:2066,1
    - Dst: zebra_evpn_es_mac_ref
      Src: /src/frr/zebra/zebra_evpn_mac.c:2071,1
    - Dst: zebra_evpn_rem_mac_uninstall
      Src: /src/frr/zebra/zebra_evpn_mac.c:2079,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2096,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2100,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:2102,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2106,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:2111,1
    - Dst: zebra_evpn_mac_clear_sync_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2115,1
    - Dst: zebra_evpn_mac_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:2116,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2122,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2123,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2124,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2128,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2130,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2133,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2135,1
    - Dst: zebra_evpn_dup_addr_detect_for_mac
      Src: /src/frr/zebra/zebra_evpn_mac.c:2137,1
    - Dst: zebra_evpn_process_neigh_on_remote_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:2142,1
    - Dst: zebra_evpn_rem_mac_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:2144,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2151,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 7
    argNames:
    - zevpn
    - zvrf
    - macaddr
    - vtep_ip
    - flags
    - seq
    - esi
    argTypes:
    - struct zebra_evpn*
    - struct zebra_vrf*
    - struct ethaddr*
    - struct in_addr
    - uint8_t
    - uint32_t
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 2008
    functionDepth: 5
    functionLinenumber: 2008
    functionLinenumberEnd: 2153
    functionName: zebra_evpn_mac_remote_macip_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 1
    functionsReached:
    - zebra_evpn_rem_mac_install
    - zebra_evpn_mac_lookup
    - memcmp
    - IPV4_ADDR_SAME
    - zebra_evpn_mac_clear_sync_info
    - zebra_evpn_process_neigh_on_remote_mac_add
    - zebra_evpn_mac_send_del_to_client
    - zlog_debug
    - zebra_evpn_mac_is_static
    - zebra_evpn_mac_clear_fwd_info
    - UNSET_FLAG
    - zebra_evpn_dup_addr_detect_for_mac
    - zebra_evpn_mac_add
    - CHECK_FLAG
    - zebra_evpn_mac_is_bgp_seq_ok
    - zebra_evpn_zebra_mac_flag_dump
    - zebra_evpn_es_mac_ref
    - SET_FLAG
    - zebra_evpn_rem_mac_uninstall
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_mac_remote_macip_add(struct zebra_evpn *zevpn,\n\t\t\t\t
      \   struct zebra_vrf *zvrf,\n\t\t\t\t    const struct ethaddr *macaddr,\n\t\t\t\t
      \   struct in_addr vtep_ip, uint8_t flags,\n\t\t\t\t    uint32_t seq, const
      esi_t *esi)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/zebra/zebra_evpn_mac.c:2175,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:2178,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2181,1
    - Dst: zebra_evpn_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:2187,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2188,1
    - Dst: zebra_evpn_local_mac_update_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2189,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2191,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2197,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:2202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2206,1
    - Dst: zebra_evpn_mac_get_access_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2211,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2213,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:2216,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2217,1
    - Dst: zebra_evpn_local_mac_update_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2219,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2231,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2244,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2265,1
    - Dst: zebra_evpn_mac_clear_sync_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2267,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:2269,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2279,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2288,1
    - Dst: flog_warn
      Src: /src/frr/zebra/zebra_evpn_mac.c:2289,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2299,1
    - Dst: MAX
      Src: /src/frr/zebra/zebra_evpn_mac.c:2301,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2307,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2308,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2309,1
    - Dst: zebra_evpn_local_mac_update_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2310,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2313,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2315,1
    - Dst: zebra_evpn_dup_addr_detect_for_mac
      Src: /src/frr/zebra/zebra_evpn_mac.c:2323,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:2338,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2343,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2345,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2347,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2356,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:2360,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:2376,1
    - Dst: zebra_evpn_mac_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:2382,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_change
      Src: /src/frr/zebra/zebra_evpn_mac.c:2387,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 99
    argCount: 9
    argNames:
    - zvrf
    - zevpn
    - ifp
    - macaddr
    - vid
    - sticky
    - local_inactive
    - dp_static
    - mac
    argTypes:
    - struct zebra_vrf*
    - struct zebra_evpn*
    - struct interface*
    - struct ethaddr*
    - vlanid_t
    - bool
    - bool
    - bool
    - struct zebra_mac*
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 2174
        line_start: 2174
        source_file: /src/frr/zebra/zebra_evpn_mac.c
    constantsTouched: []
    func_position:
      end: 2391
      start: 2155
    functionDepth: 6
    functionLinenumber: 2155
    functionLinenumberEnd: 2391
    functionName: zebra_evpn_add_update_local_mac
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 2
    functionsReached:
    - zebra_evpn_mac_lookup
    - zebra_evpn_mac_clear_sync_info
    - flog_warn
    - zebra_evpn_mac_send_add_del_to_client
    - zebra_evpn_local_mac_update_fwd_info
    - zlog_debug
    - zebra_evpn_mac_is_static
    - zebra_evpn_process_neigh_on_local_mac_change
    - assert
    - zebra_evpn_sync_mac_dp_install
    - UNSET_FLAG
    - MAX
    - zebra_evpn_mac_get_access_info
    - zebra_evpn_dup_addr_detect_for_mac
    - zebra_evpn_mac_add
    - zebra_evpn_mac_is_ready_for_bgp
    - CHECK_FLAG
    - zebra_evpn_zebra_mac_flag_dump
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_add_update_local_mac(struct zebra_vrf *zvrf,\n\t\t\t\t
      \   struct zebra_evpn *zevpn,\n\t\t\t\t    struct interface *ifp,\n\t\t\t\t
      \   const struct ethaddr *macaddr, vlanid_t vid,\n\t\t\t\t    bool sticky, bool
      local_inactive,\n\t\t\t\t    bool dp_static, struct zebra_mac *mac)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2400,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mac.c:2402,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2404,1
    - Dst: zebra_evpn_mac_is_static
      Src: /src/frr/zebra/zebra_evpn_mac.c:2405,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2409,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2414,1
    - Dst: zebra_evpn_zebra_mac_flag_dump
      Src: /src/frr/zebra/zebra_evpn_mac.c:2418,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2423,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2424,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2426,1
    - Dst: zebra_evpn_mac_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:2427,1
    - Dst: zebra_evpn_sync_mac_dp_install
      Src: /src/frr/zebra/zebra_evpn_mac.c:2432,1
    - Dst: zebra_evpn_mac_clear_sync_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2440,1
    - Dst: zebra_evpn_process_neigh_on_local_mac_del
      Src: /src/frr/zebra/zebra_evpn_mac.c:2443,1
    - Dst: zebra_evpn_mac_send_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:2446,1
    - Dst: zebra_evpn_es_mac_deref_entry
      Src: /src/frr/zebra/zebra_evpn_mac.c:2449,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2452,1
    - Dst: listcount
      Src: /src/frr/zebra/zebra_evpn_mac.c:2458,1
    - Dst: zebra_evpn_mac_del
      Src: /src/frr/zebra/zebra_evpn_mac.c:2459,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2461,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2462,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2463,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - zevpn
    - mac
    - clear_static
    argTypes:
    - struct zebra_evpn*
    - struct zebra_mac*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2467
      start: 2393
    functionDepth: 6
    functionLinenumber: 2393
    functionLinenumberEnd: 2467
    functionName: zebra_evpn_del_local_mac
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 4
    functionsReached:
    - zebra_evpn_mac_clear_sync_info
    - zebra_evpn_mac_send_add_del_to_client
    - zebra_evpn_mac_is_ready_for_bgp
    - listcount
    - CHECK_FLAG
    - zebra_evpn_es_mac_deref_entry
    - zebra_evpn_mac_del
    - zebra_evpn_zebra_mac_flag_dump
    - zebra_evpn_sync_mac_dp_install
    - zebra_evpn_mac_send_del_to_client
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - zebra_evpn_mac_is_static
    - zebra_evpn_process_neigh_on_local_mac_del
    - zebra_evpn_mac_clear_fwd_info
    linkageType: ''
    returnType: int
    signature: "int zebra_evpn_del_local_mac(struct zebra_evpn *zevpn, struct zebra_mac
      *mac,\n\t\t\t     bool clear_static)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:2485,1
    - Dst: zebra_evpn_mac_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:2487,1
    - Dst: zebra_evpn_mac_clear_fwd_info
      Src: /src/frr/zebra/zebra_evpn_mac.c:2493,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2494,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2495,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2497,1
    - Dst: SET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2499,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 7
    argNames:
    - ifp
    - zevpn
    - ip
    - macp
    - macaddr
    - vlan_id
    - def_gw
    argTypes:
    - struct interface*
    - struct zebra_evpn*
    - struct ipaddr*
    - struct zebra_mac**
    - struct ethaddr*
    - vlanid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2503
      start: 2469
    functionDepth: 3
    functionLinenumber: 2469
    functionLinenumberEnd: 2503
    functionName: zebra_evpn_mac_gw_macip_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 1
    functionsReached:
    - SET_FLAG
    - zebra_evpn_mac_clear_fwd_info
    - zebra_evpn_mac_add
    - zebra_evpn_mac_lookup
    linkageType: ''
    returnType: void
    signature: "void zebra_evpn_mac_gw_macip_add(struct interface *ifp,\n\t\t\t\t
      struct zebra_evpn *zevpn,\n\t\t\t\t const struct ipaddr *ip,\n\t\t\t\t struct
      zebra_mac **macp,\n\t\t\t\t const struct ethaddr *macaddr,\n\t\t\t\t vlanid_t
      vlan_id, bool def_gw)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mh_do_adv_svi_mac
      Src: /src/frr/zebra/zebra_evpn_mac.c:2511,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mac.c:2514,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:2515,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2516,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2518,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2520,1
    - Dst: UNSET_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2521,1
    - Dst: zebra_evpn_mac_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:2522,1
    - Dst: zebra_evpn_deref_ip2mac
      Src: /src/frr/zebra/zebra_evpn_mac.c:2524,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ifp
    - zevpn
    argTypes:
    - struct interface*
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2505
    functionDepth: 6
    functionLinenumber: 2505
    functionLinenumberEnd: 2526
    functionName: zebra_evpn_mac_svi_del
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 3
    functionsReached:
    - zebra_evpn_mac_send_add_del_to_client
    - zebra_evpn_mac_is_ready_for_bgp
    - zebra_evpn_mh_do_adv_svi_mac
    - CHECK_FLAG
    - zebra_evpn_mac_lookup
    - zebra_evpn_deref_ip2mac
    - zlog_debug
    - UNSET_FLAG
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_svi_del(struct interface *ifp, struct zebra_evpn
      *zevpn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_evpn_mh_do_adv_svi_mac
      Src: /src/frr/zebra/zebra_evpn_mac.c:2536,1
    - Dst: zebra_evpn_send_to_client_ok
      Src: /src/frr/zebra/zebra_evpn_mac.c:2537,1
    - Dst: memcpy
      Src: /src/frr/zebra/zebra_evpn_mac.c:2540,1
    - Dst: zebra_evpn_mac_lookup
      Src: /src/frr/zebra/zebra_evpn_mac.c:2543,1
    - Dst: CHECK_FLAG
      Src: /src/frr/zebra/zebra_evpn_mac.c:2544,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/zebra_evpn_mac.c:2549,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2551,1
    - Dst: zebra_evpn_mac_gw_macip_add
      Src: /src/frr/zebra/zebra_evpn_mac.c:2555,1
    - Dst: zebra_evpn_mac_is_ready_for_bgp
      Src: /src/frr/zebra/zebra_evpn_mac.c:2557,1
    - Dst: zebra_evpn_mac_send_add_del_to_client
      Src: /src/frr/zebra/zebra_evpn_mac.c:2558,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - ifp
    - zevpn
    argTypes:
    - struct interface*
    - struct zebra_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2560
      start: 2528
    functionDepth: 6
    functionLinenumber: 2528
    functionLinenumberEnd: 2560
    functionName: zebra_evpn_mac_svi_add
    functionSourceFile: /src/frr/zebra/zebra_evpn_mac.c
    functionUses: 3
    functionsReached:
    - zebra_evpn_send_to_client_ok
    - zebra_evpn_mac_send_add_del_to_client
    - zebra_evpn_mac_is_ready_for_bgp
    - zebra_evpn_mh_do_adv_svi_mac
    - CHECK_FLAG
    - zebra_evpn_mac_lookup
    - zlog_debug
    - zebra_evpn_mac_gw_macip_add
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zebra_evpn_mac_svi_add(struct interface *ifp, struct zebra_evpn
      *zevpn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:29,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:30,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:31,1
    - Dst: IS_MATCH_IPv4_PREFIX_LEN
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:34,1
    - Dst: IS_MATCH_IPv4_NH_PREFIX_LEN
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:36,1
    - Dst: generic_match_add
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:42,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 52
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv4_prefix_length_modify
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - IS_MATCH_IPv4_NH_PREFIX_LEN
    - nb_running_get_entry
    - generic_match_add
    - yang_dnode_get_string
    - IS_MATCH_IPv4_PREFIX_LEN
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv4_prefix_length_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 68
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv4_prefix_length_destroy
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv4_prefix_length_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:88,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:89,1
    - Dst: generic_match_add
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 106
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv6_prefix_length_modify
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_match_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv6_prefix_length_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 123
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv6_prefix_length_destroy
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv6_prefix_length_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:143,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:144,1
    - Dst: generic_match_add
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 161
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_instance_modify
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_match_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_instance_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 177
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_instance_destroy
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_instance_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:192,1
    - Dst: proto_name2num
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:193,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:194,1
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:207,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:208,1
    - Dst: generic_match_add
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 224
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_modify
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - generic_match_add
    - zlog_warn
    - yang_dnode_get_string
    - proto_name2num
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 240
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_destroy
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:256,1
    - Dst: yang_dnode_get_ipv4p
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:257,1
    - Dst: zebra_check_addr
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:258,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:259,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:260,1
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:273,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:274,1
    - Dst: generic_set_add
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 288
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv4_src_address_modify
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - memset
    - nb_running_get_entry
    - zlog_warn
    - yang_dnode_get_string
    - yang_dnode_get_ipv4p
    - generic_set_add
    - zebra_check_addr
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv4_src_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 304
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv4_src_address_destroy
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv4_src_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:320,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:321,1
    - Dst: zebra_check_addr
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:322,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:323,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:324,1
    - Dst: nb_running_get_entry
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:337,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:338,1
    - Dst: generic_set_add
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:344,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 352
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv6_src_address_modify
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - memset
    - nb_running_get_entry
    - zlog_warn
    - yang_dnode_get_string
    - generic_set_add
    - yang_dnode_get_ipv6p
    - zebra_check_addr
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv6_src_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/zebra/zebra_routemap_nb_config.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 368
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv6_src_address_destroy
    functionSourceFile: /src/frr/zebra/zebra_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv6_src_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/zebra/if_socket.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 23
    functionName: kernel_intf_update
    functionSourceFile: /src/frr/zebra/if_socket.c
    functionUses: 1
    functionsReached:
    - flog_err
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_intf_update(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_ifname
      Src: /src/frr/zebra/if_socket.c:28,1
    - Dst: dplane_ctx_get_netconf_mpls
      Src: /src/frr/zebra/if_socket.c:29,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/if_socket.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 35
    functionName: kernel_intf_netconf_update
    functionSourceFile: /src/frr/zebra/if_socket.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - dplane_ctx_get_ifname
    - dplane_ctx_get_netconf_mpls
    linkageType: ''
    returnType: enum zebra_dplane_result
    signature: enum zebra_dplane_result kernel_intf_netconf_update(struct zebra_dplane_ctx
      *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk_vty.c:67,1
    - Dst: install_element
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk_vty.c:68,1
    - Dst: install_element
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk_vty.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: zd_dpdk_vty_init
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk_vty.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:36,1
    - Dst: ZD_DPDK_SHOW_COUNTER
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:46,1
    - Dst: ZD_DPDK_SHOW_COUNTER
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:47,1
    - Dst: ZD_DPDK_SHOW_COUNTER
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 49
    functionName: zd_dpdk_stat_show
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - ZD_DPDK_SHOW_COUNTER
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_stat_show(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - label
    - ','
    - counter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: ZD_DPDK_SHOW_COUNTER
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZD_DPDK_SHOW_COUNTER(label, counter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zd_dpdk_port_find_by_index
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:71,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:73,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:77,1
    - Dst: rte_flow_query
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:78,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:81,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - vty
    - in_ifindex
    - dp_flow_ptr
    argTypes:
    - struct vty*
    - int
    - intptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 90
    functionName: zd_dpdk_flow_stat_show
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zd_dpdk_port_find_by_index
    - vty_out
    - memset
    - rte_flow_query
    linkageType: ''
    returnType: void
    signature: "void zd_dpdk_flow_stat_show(struct vty *vty, int in_ifindex,\n\t\t\t\t
      \  intptr_t dp_flow_ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_pbr_show_rule_unit
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:101,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:103,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:105,1
    - Dst: zd_dpdk_flow_stat_show
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 112
    functionName: zd_dpdk_pbr_show_rules_walkcb
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zebra_pbr_show_rule_unit
    - zd_dpdk_flow_stat_show
    - vrf_lookup_by_id
    - if_lookup_by_name_vrf
    linkageType: ''
    returnType: int
    signature: int zd_dpdk_pbr_show_rules_walkcb(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_walk
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: zd_dpdk_pbr_flows_show
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - hash_walk
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_pbr_flows_show(struct vty *vty)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_rule_get_filter_bm
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:124,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:125,1
    - Dst: dplane_ctx_rule_get_out_ifindex
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:126,1
    - Dst: dplane_ctx_rule_get_priority
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:143,1
    - Dst: dplane_ctx_rule_get_seq
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:144,1
    - Dst: dplane_ctx_rule_get_unique
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:145,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:148,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:150,1
    - Dst: zd_dpdk_port_find_by_index
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:151,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:154,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:156,1
    - Dst: zd_dpdk_port_find_by_index
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:161,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:164,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:166,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:172,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:173,1
    - Dst: htons
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:174,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:181,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:182,1
    - Dst: dplane_ctx_rule_get_src_ip
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:186,1
    - Dst: masklen2ip
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:188,1
    - Dst: dplane_ctx_rule_get_dst_ip
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:194,1
    - Dst: masklen2ip
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:196,1
    - Dst: dplane_ctx_rule_get_ipproto
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:200,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:210,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:211,1
    - Dst: RTE_BE16
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:214,1
    - Dst: dplane_ctx_rule_get_src_port
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:214,1
    - Dst: RTE_BE16
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:219,1
    - Dst: dplane_ctx_rule_get_dst_port
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:219,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:233,1
    - Dst: dplane_ctx_rule_get_smac
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:240,1
    - Dst: memcpy
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:241,1
    - Dst: dplane_ctx_rule_get_dmac
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:246,1
    - Dst: memcpy
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:247,1
    - Dst: memset
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:252,1
    - Dst: rte_flow_create
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:261,1
    - Dst: dplane_ctx_rule_set_dp_flow_ptr
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:266,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:268,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:271,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:274,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:276,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 95
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 279
    functionName: zd_dpdk_rule_add
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_rule_get_out_ifindex
    - htons
    - dplane_ctx_rule_get_ipproto
    - zlog_warn
    - dplane_ctx_rule_get_filter_bm
    - dplane_ctx_rule_get_dst_port
    - dplane_ctx_rule_get_dmac
    - memset
    - masklen2ip
    - dplane_ctx_rule_get_src_ip
    - dplane_ctx_rule_get_src_port
    - dplane_ctx_rule_get_priority
    - zlog_debug
    - dplane_ctx_rule_get_smac
    - dplane_ctx_rule_get_seq
    - dplane_ctx_rule_get_dst_ip
    - dplane_ctx_rule_get_ifname
    - zd_dpdk_port_find_by_index
    - dplane_ctx_rule_get_unique
    - memcpy
    - RTE_BE16
    - rte_flow_create
    - dplane_ctx_rule_set_dp_flow_ptr
    - dplane_ctx_get_ifindex
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_rule_add(struct zebra_dplane_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rte_flow_create
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - rte_flow_create
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:290,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:297,1
    - Dst: dplane_ctx_rule_set_dp_flow_ptr
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:304,1
    - Dst: zd_dpdk_port_find_by_index
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:305,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:308,1
    - Dst: rte_flow_destroy
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:316,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:321,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - ifname
    - in_ifindex
    - dp_flow_ptr
    argTypes:
    - struct zebra_dplane_ctx*
    - char*
    - int
    - intptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 325
    functionName: zd_dpdk_rule_del
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - zlog_debug
    - dplane_ctx_rule_set_dp_flow_ptr
    - rte_flow_destroy
    - zd_dpdk_port_find_by_index
    linkageType: ''
    returnType: void
    signature: "void zd_dpdk_rule_del(struct zebra_dplane_ctx *ctx, const char *ifname,\n\t\t\t
      \    int in_ifindex, intptr_t dp_flow_ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rte_flow_destroy
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 318
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - rte_flow_destroy
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:335,1
    - Dst: dplane_op2str
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:335,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:335,1
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:338,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:341,1
    - Dst: zd_dpdk_rule_add
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:343,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:348,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:350,1
    - Dst: dplane_ctx_rule_get_old_dp_flow_ptr
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:351,1
    - Dst: zd_dpdk_rule_del
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:352,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:352,1
    - Dst: zd_dpdk_rule_add
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:354,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:358,1
    - Dst: dplane_ctx_get_ifindex
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:360,1
    - Dst: dplane_ctx_rule_get_dp_flow_ptr
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:361,1
    - Dst: zd_dpdk_rule_del
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:362,1
    - Dst: dplane_ctx_rule_get_ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:362,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 67
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 411
    functionName: zd_dpdk_rule_update
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - dplane_ctx_get_op
    - dplane_op2str
    - zd_dpdk_rule_add
    - atomic_fetch_add_explicit
    - zlog_debug
    - dplane_ctx_get_ifindex
    - dplane_ctx_rule_get_ifname
    - dplane_ctx_rule_get_dp_flow_ptr
    - zd_dpdk_rule_del
    - dplane_ctx_rule_get_old_dp_flow_ptr
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_rule_update(struct zebra_dplane_ctx *ctx)
  - BBCount: 47
    BranchProfiles: []
    Callsites:
    - Dst: dplane_ctx_get_op
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:418,1
    - Dst: zd_dpdk_rule_update
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:423,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 53
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct zebra_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 416
    functionDepth: 4
    functionLinenumber: 416
    functionLinenumberEnd: 473
    functionName: zd_dpdk_process_update
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - atomic_fetch_add_explicit
    - dplane_ctx_get_op
    - zd_dpdk_rule_update
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_process_update(struct zebra_dplane_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:482,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:482,1
    - Dst: dplane_provider_get_work_limit
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:484,1
    - Dst: dplane_provider_dequeue_in_ctx
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:486,1
    - Dst: zd_dpdk_process_update
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:490,1
    - Dst: dplane_ctx_set_status
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:491,1
    - Dst: dplane_provider_enqueue_out_ctx
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:492,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 476
    functionDepth: 5
    functionLinenumber: 476
    functionLinenumberEnd: 496
    functionName: zd_dpdk_process
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - dplane_provider_get_work_limit
    - dplane_provider_enqueue_out_ctx
    - dplane_provider_get_name
    - dplane_provider_dequeue_in_ctx
    - dplane_ctx_set_status
    - zlog_debug
    - zd_dpdk_process_update
    linkageType: ''
    returnType: int
    signature: int zd_dpdk_process(struct zebra_dplane_provider *prov)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:505,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:506,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:508,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:510,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:511,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:513,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:517,1
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:519,1
    - Dst: ifindex2ifname
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - dport
    - vty
    - detail
    argTypes:
    - struct zd_dpdk_port*
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 527
    functionName: zd_dpdk_port_show_entry
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - ifindex2ifname
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void zd_dpdk_port_show_entry(struct zd_dpdk_port *dport, struct vty
      *vty,\n\t\t\t\t    int detail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ifindex
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 546
    functionName: zd_dpdk_port_find_by_index
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct zd_dpdk_port
    signature: struct zd_dpdk_port *zd_dpdk_port_find_by_index(int ifindex)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:559,1
    - Dst: zd_dpdk_port_show_entry
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - vty
    - port_id
    - uj
    - detail
    argTypes:
    - struct vty*
    - uint16_t
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 568
    functionName: zd_dpdk_port_show
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zd_dpdk_port_show_entry
    - vty_out
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_port_show(struct vty *vty, uint16_t port_id, bool uj,
      int detail)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:582,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:586,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:591,1
    - Dst: rte_eth_dev_info_get
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:597,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:598,1
    - Dst: rte_strerror
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:599,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:604,1
    - Dst: rte_flow_isolate
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:611,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:613,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:618,1
    - Dst: rte_eth_dev_start
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:621,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:623,1
    - Dst: rte_strerror
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:624,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:628,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:634,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 636
    functionName: zd_dpdk_port_init
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - rte_eth_dev_info_get
    - XCALLOC
    - rte_eth_dev_start
    - zlog_warn
    - zlog_debug
    - rte_flow_isolate
    - rte_strerror
    linkageType: ''
    returnType: void
    signature: void zd_dpdk_port_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:591,1
    - Dst: rte_eth_dev_info_get
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:597,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:598,1
    - Dst: rte_strerror
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:599,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:604,1
    - Dst: rte_flow_isolate
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:611,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:613,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:618,1
    - Dst: rte_eth_dev_start
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:621,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:623,1
    - Dst: rte_strerror
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:624,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:628,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 630
    functionName: RTE_ETH_FOREACH_DEV
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - rte_eth_dev_info_get
    - rte_eth_dev_start
    - zlog_debug
    - zlog_warn
    - rte_flow_isolate
    - rte_strerror
    linkageType: ''
    returnType: void
    signature: void RTE_ETH_FOREACH_DEV(port_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zd_dpdk_vty_init
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:645,1
    - Dst: rte_eal_init
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:648,1
    - Dst: array_size
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:648,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:651,1
    - Dst: rte_strerror
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:651,1
    - Dst: zd_dpdk_port_init
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 639
    functionDepth: 2
    functionLinenumber: 639
    functionLinenumberEnd: 659
    functionName: zd_dpdk_init
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zd_dpdk_vty_init
    - zd_dpdk_port_init
    - rte_eal_init
    - zlog_warn
    - array_size
    - rte_strerror
    linkageType: ''
    returnType: int
    signature: int zd_dpdk_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rte_eal_init
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:648,1
    - Dst: array_size
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 649
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - rte_eal_init
    - array_size
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zd_dpdk_port_init
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 655
    functionDepth: 2
    functionLinenumber: 655
    functionLinenumberEnd: 657
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zd_dpdk_port_init
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:665,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:665,1
    - Dst: zd_dpdk_init
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - prov
    argTypes:
    - struct zebra_dplane_provider*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 662
    functionDepth: 3
    functionLinenumber: 662
    functionLinenumberEnd: 668
    functionName: zd_dpdk_start
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zd_dpdk_init
    - zlog_debug
    - dplane_provider_get_name
    linkageType: ''
    returnType: int
    signature: int zd_dpdk_start(struct zebra_dplane_provider *prov)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:677,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:678,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:684,1
    - Dst: dplane_provider_get_name
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:684,1
    - Dst: rte_eal_cleanup
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:688,1
    - Dst: zlog_warn
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:691,1
    - Dst: rte_strerror
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:691,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - prov
    - early
    argTypes:
    - struct zebra_dplane_provider*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 694
    functionName: zd_dpdk_finish
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - rte_eal_cleanup
    - dplane_provider_get_name
    - zlog_debug
    - zlog_warn
    - rte_strerror
    linkageType: ''
    returnType: int
    signature: int zd_dpdk_finish(struct zebra_dplane_provider *prov, bool early)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rte_eal_cleanup
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 689
    functionName: (&zserv_privs)
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - rte_eal_cleanup
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&zserv_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dplane_provider_register
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:701,1
    - Dst: zlog_debug
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 709
    functionName: zd_dpdk_plugin_init
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - dplane_provider_register
    linkageType: ''
    returnType: int
    signature: int zd_dpdk_plugin_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 716
    functionName: zd_dpdk_module_init
    functionSourceFile: /src/frr/zebra/dpdk/zebra_dplane_dpdk.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int zd_dpdk_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: SEG6_IPTUN_ENCAP_SIZE
    functionSourceFile: /src/frr/include/linux/seg6_iptunnel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SEG6_IPTUN_ENCAP_SIZE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: IF_SET
    functionSourceFile: /src/frr/include/linux/mroute6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_SET(n, p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: IF_CLR
    functionSourceFile: /src/frr/include/linux/mroute6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_CLR(n, p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: IF_ISSET
    functionSourceFile: /src/frr/include/linux/mroute6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_ISSET(n, p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - f
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: IF_COPY
    functionSourceFile: /src/frr/include/linux/mroute6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_COPY(f, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: IF_ZERO
    functionSourceFile: /src/frr/include/linux/mroute6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_ZERO(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: NLMSG_ALIGN
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_ALIGN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: NLMSG_LENGTH
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_LENGTH(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: NLMSG_SPACE
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_SPACE(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nlh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: NLMSG_DATA
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_DATA(nlh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nlh
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: NLMSG_NEXT
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_NEXT(nlh,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nlh
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: NLMSG_OK
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_OK(nlh,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nlh
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: NLMSG_PAYLOAD
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_PAYLOAD(nlh,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sz
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: NL_MMAP_MSG_ALIGN
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NL_MMAP_MSG_ALIGN(sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 232
    functionName: NLA_ALIGN
    functionSourceFile: /src/frr/include/linux/netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLA_ALIGN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: VIFM_SET
    functionSourceFile: /src/frr/include/linux/mroute.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIFM_SET(n,m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: VIFM_CLR
    functionSourceFile: /src/frr/include/linux/mroute.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIFM_CLR(n,m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: VIFM_ISSET
    functionSourceFile: /src/frr/include/linux/mroute.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIFM_ISSET(n,m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: VIFM_CLRALL
    functionSourceFile: /src/frr/include/linux/mroute.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIFM_CLRALL(m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mfrom
    - ','
    - mto
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: VIFM_COPY
    functionSourceFile: /src/frr/include/linux/mroute.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIFM_COPY(mfrom,mto)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - m1
    - ','
    - m2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: VIFM_SAME
    functionSourceFile: /src/frr/include/linux/mroute.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VIFM_SAME(m1,m2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: IFA_RTA
    functionSourceFile: /src/frr/include/linux/if_addr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: IFA_PAYLOAD
    functionSourceFile: /src/frr/include/linux/if_addr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFA_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - local
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: __TC_ACT_EXT
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __TC_ACT_EXT(local)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - combined
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: TC_ACT_EXT_OPCODE
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TC_ACT_EXT_OPCODE(combined)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - combined
    - ','
    - opcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: TC_ACT_EXT_CMP
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TC_ACT_EXT_CMP(combined, opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: TC_U32_HTID
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TC_U32_HTID(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 210
    functionName: TC_U32_USERHTID
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TC_U32_USERHTID(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    functionName: TC_U32_HASH
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TC_U32_HASH(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    functionName: TC_U32_NODE
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TC_U32_NODE(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 213
    functionName: TC_U32_KEY
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TC_U32_KEY(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 741
    functionName: TCF_EM_REL_VALID
    functionSourceFile: /src/frr/include/linux/pkt_cls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TCF_EM_REL_VALID(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - srh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: sr_has_hmac
    functionSourceFile: /src/frr/include/linux/seg6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sr_has_hmac(srh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: IFLA_RTA
    functionSourceFile: /src/frr/include/linux/if_link.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFLA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: IFLA_PAYLOAD
    functionSourceFile: /src/frr/include/linux/if_link.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFLA_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ATTR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 949
    functionName: IFLA_STATS_FILTER_BIT
    functionSourceFile: /src/frr/include/linux/if_link.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFLA_STATS_FILTER_BIT(ATTR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - cmd
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: RTM_FAM
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTM_FAM(cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: RTA_ALIGN
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_ALIGN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rta
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 221
    functionName: RTA_OK
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_OK(rta,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rta
    - ','
    - attrlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 223
    functionName: RTA_NEXT
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_NEXT(rta,attrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 224
    functionName: RTA_LENGTH
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_LENGTH(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 225
    functionName: RTA_SPACE
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_SPACE(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rta
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: RTA_DATA
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_DATA(rta)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rta
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 227
    functionName: RTA_PAYLOAD
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTA_PAYLOAD(rta)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 231
    functionName: TUNNEL_RTA
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TUNNEL_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: 401
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 401
    functionName: RTM_RTA
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTM_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 402
    functionName: RTM_PAYLOAD
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTM_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 436
    functionName: RTNH_ALIGN
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTNH_ALIGN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rtnh
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 438
    functionName: RTNH_OK
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTNH_OK(rtnh,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rtnh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 439
    functionName: RTNH_NEXT
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTNH_NEXT(rtnh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 440
    functionName: RTNH_LENGTH
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTNH_LENGTH(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 441
    functionName: RTNH_SPACE
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTNH_SPACE(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rtnh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 442
    functionName: RTNH_DATA
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RTNH_DATA(rtnh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 651
    functionDepth: 0
    functionLinenumber: 651
    functionLinenumberEnd: 652
    functionName: TCA_RTA
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TCA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 653
    functionName: TCA_PAYLOAD
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TCA_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 794
    functionDepth: 0
    functionLinenumber: 794
    functionLinenumberEnd: 795
    functionName: TA_RTA
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 796
    functionName: TA_PAYLOAD
    functionSourceFile: /src/frr/include/linux/rtnetlink.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TA_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 469
    functionName: BRVLAN_RTA
    functionSourceFile: /src/frr/include/linux/if_bridge.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BRVLAN_RTA(r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - rv
    - value
    argTypes:
    - struct rmap_value*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: route_value_match
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int route_value_match(struct rmap_value *rv, uint32_t value)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - rv
    - current
    - peer
    argTypes:
    - struct rmap_value*
    - uint32_t
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 168
    functionName: route_value_adjust
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t route_value_adjust(struct rmap_value *rv, uint32_t current,\n\t\t\t\t
      \  struct peer *peer)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: all_digit
      Src: /src/frr/bgpd/bgp_routemap.c:185,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_routemap.c:187,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:191,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:197,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 203
    functionName: route_value_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - all_digit
    - strtoul
    - XMALLOC
    - strcmp
    linkageType: ''
    returnType: void
    signature: void *route_value_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: route_value_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_value_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aspath_str2aspath
      Src: /src/frr/bgpd/bgp_routemap.c:216,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_routemap.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 220
    functionName: route_aspath_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - aspath_str2aspath
    linkageType: ''
    returnType: void
    signature: void *route_aspath_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_routemap.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 226
    functionName: route_aspath_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - aspath_free
    linkageType: ''
    returnType: void
    signature: void route_aspath_free(void *rule)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:257,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:261,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_routemap.c:272,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:274,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:275,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:276,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:277,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:284,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_routemap.c:285,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_routemap.c:291,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_routemap.c:292,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 296
    functionName: route_match_peer
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    - strcmp
    - sockunion_same
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_peer(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:306,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_routemap.c:309,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:309,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 316
    functionName: route_match_peer_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XSTRDUP
    - str2sockunion
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_peer_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:323,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 326
    functionName: route_match_peer_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_peer_free(void *rule)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: frrscript_new
      Src: /src/frr/bgpd/bgp_routemap.c:364,1
    - Dst: frrscript_load
      Src: /src/frr/bgpd/bgp_routemap.c:366,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_routemap.c:367,1
    - Dst: frrscript_call
      Src: /src/frr/bgpd/bgp_routemap.c:374,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_routemap.c:382,1
    - Dst: frrscript_get_result
      Src: /src/frr/bgpd/bgp_routemap.c:386,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_routemap.c:393,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:403,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:409,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:412,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:413,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:422,1
    - Dst: frrscript_delete
      Src: /src/frr/bgpd/bgp_routemap.c:424,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 427
    functionName: route_match_script
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - frrscript_get_result
    - frrscript_call
    - frrscript_new
    - frrscript_load
    - ATTR_FLAG_BIT
    - zlog_err
    - zlog_debug
    - SET_FLAG
    - XFREE
    - frrscript_delete
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_script(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 436
    functionName: route_match_script_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_script_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 441
    functionName: route_match_script_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_script_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:462,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:464,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:464,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:466,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 477
    functionName: route_match_ip_address
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:485,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_routemap.c:487,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 491
    functionName: route_match_ip_address_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - zlog_warn
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 497
    functionName: route_match_ip_address_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:523,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:525,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:527,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:534,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 539
    functionName: route_match_ip_next_hop
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_next_hop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 546
    functionName: route_match_ip_next_hop_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 552
    functionName: route_match_ip_next_hop_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_routemap.c:577,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:584,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:586,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:586,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:588,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:595,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - rule
    - pfx
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 600
    functionName: route_match_ip_route_source
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_route_source(void *rule,
      const struct prefix *pfx, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 607
    functionName: route_match_ip_route_source_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_route_source_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 613
    functionName: route_match_ip_route_source_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_route_source_free(void *rule)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_routemap.c:630,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_routemap.c:632,1
    - Dst: bgp_flowspec_match_rules_fill
      Src: /src/frr/bgpd/bgp_routemap.c:636,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_routemap.c:644,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:646,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_routemap.c:651,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:653,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - afi
    - plist
    - p
    argTypes:
    - afi_t
    - struct prefix_list*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 658
    functionName: route_match_prefix_list_flowspec
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - family2afi
    - bgp_flowspec_match_rules_fill
    - prefix_list_apply
    - memset
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_prefix_list_flowspec(afi_t
      afi, struct prefix_list *plist,\n\t\t\t\t const struct prefix *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: evpn_prefix2prefix
      Src: /src/frr/bgpd/bgp_routemap.c:667,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - afi
    - plist
    - p
    argTypes:
    - afi_t
    - struct prefix_list*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 672
    functionName: route_match_prefix_list_evpn
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - evpn_prefix2prefix
    - prefix_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_prefix_list_evpn(afi_t afi,
      struct prefix_list *plist,\n\t\t\t     const struct prefix *p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:680,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:682,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:682,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:683,1
    - Dst: route_match_prefix_list_flowspec
      Src: /src/frr/bgpd/bgp_routemap.c:690,1
    - Dst: route_match_prefix_list_evpn
      Src: /src/frr/bgpd/bgp_routemap.c:694,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - rule
    - afi
    - prefix
    - object
    argTypes:
    - void*
    - afi_t
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 674
    functionDepth: 2
    functionLinenumber: 674
    functionLinenumberEnd: 698
    functionName: route_match_address_prefix_list
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 2
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    - route_match_prefix_list_evpn
    - route_match_prefix_list_flowspec
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_address_prefix_list(void *rule,
      afi_t afi,\n\t\t\t\tconst struct prefix *prefix, void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_match_address_prefix_list
      Src: /src/frr/bgpd/bgp_routemap.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 705
    functionName: route_match_ip_address_prefix_list
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_match_address_prefix_list
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: route_match_ip_address_prefix_list_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 715
    functionName: route_match_ip_address_prefix_list_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_prefix_list_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:741,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:743,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:743,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:745,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:751,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 756
    functionName: route_match_ip_next_hop_prefix_list
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t    void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 761
    functionName: route_match_ip_next_hop_prefix_list_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 766
    functionName: route_match_ip_next_hop_prefix_list_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_prefix_list_free(void *rule)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:791,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:793,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:793,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:795,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:801,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:807,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 777
    functionDepth: 1
    functionLinenumber: 777
    functionLinenumberEnd: 813
    functionName: route_match_ipv6_next_hop_prefix_list
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ipv6_next_hop_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t      void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 818
    functionName: route_match_ipv6_next_hop_prefix_list_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_next_hop_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 823
    functionName: route_match_ipv6_next_hop_prefix_list_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_next_hop_prefix_list_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 855
    functionName: route_match_ip_next_hop_type
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_next_hop_type(void *rule,
      const struct prefix *prefix,\n\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 860
    functionName: route_match_ip_next_hop_type_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_next_hop_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 865
    functionName: route_match_ip_next_hop_type_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_next_hop_type_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 876
    functionDepth: 0
    functionLinenumber: 876
    functionLinenumberEnd: 890
    functionName: route_match_source_protocol
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_source_protocol(void *rule,
      const struct prefix *prefix,\n\t\t\t    void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:896,1
    - Dst: proto_name2num
      Src: /src/frr/bgpd/bgp_routemap.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 900
    functionName: route_match_source_protocol_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - proto_name2num
    linkageType: ''
    returnType: void
    signature: void *route_match_source_protocol_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 905
    functionName: route_match_source_protocol_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_source_protocol_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_routemap.c:930,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:937,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:939,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:939,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:941,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:947,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 952
    functionName: route_match_ip_route_source_prefix_list
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - prefix_list_lookup
    - CHECK_FLAG
    - prefix_list_apply
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_route_source_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t\tvoid *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 957
    functionName: route_match_ip_route_source_prefix_list_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_route_source_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 959
    functionDepth: 0
    functionLinenumber: 959
    functionLinenumberEnd: 962
    functionName: route_match_ip_route_source_prefix_list_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_route_source_prefix_list_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_default
      Src: /src/frr/bgpd/bgp_routemap.c:978,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 982
    functionName: route_match_evpn_default_route
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_default
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_evpn_default_route(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:1003,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:1005,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1005,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:1006,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:1013,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1013,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:1014,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:1024,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 997
    functionDepth: 1
    functionLinenumber: 997
    functionLinenumberEnd: 1026
    functionName: route_match_mac_address
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_mac_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1033
    functionName: route_match_mac_address_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_mac_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1036
    functionDepth: 0
    functionLinenumber: 1036
    functionLinenumberEnd: 1039
    functionName: route_match_mac_address_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_mac_address_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: label2vni
      Src: /src/frr/bgpd/bgp_routemap.c:1090,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1055
    functionDepth: 1
    functionLinenumber: 1055
    functionLinenumberEnd: 1095
    functionName: route_match_vni
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - label2vni
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_vni(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1103,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_routemap.c:1105,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1098
    functionDepth: 0
    functionLinenumber: 1098
    functionLinenumberEnd: 1112
    functionName: route_match_vni_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_match_vni_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1115
    functionDepth: 0
    functionLinenumber: 1115
    functionLinenumberEnd: 1118
    functionName: route_match_vni_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_vni_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - pfx
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1143
    functionName: route_match_evpn_route_type
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_evpn_route_type(void *rule,
      const struct prefix *pfx, void *object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1150,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_routemap.c:1152,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_routemap.c:1154,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_routemap.c:1156,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_routemap.c:1158,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1146
    functionDepth: 0
    functionLinenumber: 1146
    functionLinenumberEnd: 1164
    functionName: route_match_evpn_route_type_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strncmp
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_evpn_route_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1167
    functionDepth: 0
    functionLinenumber: 1167
    functionLinenumberEnd: 1170
    functionName: route_match_evpn_route_type_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_evpn_route_type_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_routemap.c:1199,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_routemap.c:1200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1183
    functionDepth: 1
    functionLinenumber: 1183
    functionLinenumberEnd: 1204
    functionName: route_match_rd
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_dest_get_prefix
    - memcmp
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_rd(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1212,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_routemap.c:1214,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1207
    functionDepth: 1
    functionLinenumber: 1207
    functionLinenumberEnd: 1221
    functionName: route_match_rd_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    - XMALLOC
    - str2prefix_rd
    linkageType: ''
    returnType: void
    signature: void *route_match_rd_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1224
    functionDepth: 0
    functionLinenumber: 1224
    functionLinenumberEnd: 1227
    functionName: route_match_rd_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_rd_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_routemap.c:1251,1
    - Dst: IPADDRSZ
      Src: /src/frr/bgpd/bgp_routemap.c:1251,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_routemap.c:1252,1
    - Dst: IPADDRSZ
      Src: /src/frr/bgpd/bgp_routemap.c:1252,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_routemap.c:1259,1
    - Dst: IPADDRSZ
      Src: /src/frr/bgpd/bgp_routemap.c:1260,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1237
    functionDepth: 1
    functionLinenumber: 1237
    functionLinenumberEnd: 1263
    functionName: route_set_evpn_gateway_ip
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v6
    - IPADDRSZ
    - is_evpn_prefix_ipaddr_v4
    - memcpy
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_evpn_gateway_ip(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1274,1
    - Dst: str2ipaddr
      Src: /src/frr/bgpd/bgp_routemap.c:1276,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1269
    functionDepth: 1
    functionLinenumber: 1269
    functionLinenumberEnd: 1282
    functionName: route_set_evpn_gateway_ip_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - str2ipaddr
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_set_evpn_gateway_ip_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1290
    functionName: route_set_evpn_gateway_ip_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_evpn_gateway_ip_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_routemap.c:1313,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_routemap.c:1319,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_routemap.c:1319,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1303
    functionDepth: 1
    functionLinenumber: 1303
    functionLinenumberEnd: 1325
    functionName: route_match_vrl_source_vrf
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - vrf_id_to_name
    - strncmp
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_vrl_source_vrf(void *rule,
      const struct prefix *prefix,\n\t\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1327
    functionDepth: 1
    functionLinenumber: 1327
    functionLinenumberEnd: 1334
    functionName: route_match_vrl_source_vrf_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_vrl_source_vrf_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1337
    functionDepth: 0
    functionLinenumber: 1337
    functionLinenumberEnd: 1340
    functionName: route_match_vrl_source_vrf_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_vrl_source_vrf_free(void *rule)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_routemap.c:1359,1
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_routemap.c:1361,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_routemap.c:1361,1
    - Dst: bgp_community2alias
      Src: /src/frr/bgpd/bgp_routemap.c:1365,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:1366,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1368,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1370,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:1375,1
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_routemap.c:1377,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:1377,1
    - Dst: bgp_community2alias
      Src: /src/frr/bgpd/bgp_routemap.c:1381,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:1382,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1384,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1386,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1392
    functionName: route_match_alias
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_community2alias
    - bgp_attr_get_lcommunity
    - strcmp
    - XFREE
    - bgp_attr_get_community
    - frrstr_split
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_alias(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1394
    functionDepth: 1
    functionLinenumber: 1394
    functionLinenumberEnd: 1398
    functionName: route_match_alias_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_alias_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1403
    functionName: route_match_alias_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_alias_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1412
    functionDepth: 0
    functionLinenumber: 1412
    functionLinenumberEnd: 1425
    functionName: route_match_local_pref
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_local_pref(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_routemap.c:1438,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1442,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1431
    functionDepth: 0
    functionLinenumber: 1431
    functionLinenumberEnd: 1446
    functionName: route_match_local_pref_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_local_pref_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1449
    functionDepth: 0
    functionLinenumber: 1449
    functionLinenumberEnd: 1452
    functionName: route_match_local_pref_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_local_pref_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_value_match
      Src: /src/frr/bgpd/bgp_routemap.c:1473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1465
    functionDepth: 1
    functionLinenumber: 1465
    functionLinenumberEnd: 1474
    functionName: route_match_metric
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_value_match
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: as_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:1494,1
    - Dst: as_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:1501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1487
    functionDepth: 1
    functionLinenumber: 1487
    functionLinenumberEnd: 1504
    functionName: route_match_aspath
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - as_list_apply
    - as_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_aspath(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1507
    functionDepth: 1
    functionLinenumber: 1507
    functionLinenumberEnd: 1510
    functionName: route_match_aspath_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_aspath_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1513
    functionDepth: 0
    functionLinenumber: 1513
    functionLinenumberEnd: 1516
    functionName: route_match_aspath_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_aspath_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:1544,1
    - Dst: community_list_exact_match
      Src: /src/frr/bgpd/bgp_routemap.c:1550,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_routemap.c:1551,1
    - Dst: community_list_match
      Src: /src/frr/bgpd/bgp_routemap.c:1554,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_routemap.c:1554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1560
    functionName: route_match_community
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - community_list_match
    - community_list_lookup
    - community_list_exact_match
    - bgp_attr_get_community
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_community(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1569,1
    - Dst: strchr
      Src: /src/frr/bgpd/bgp_routemap.c:1571,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1574,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_routemap.c:1575,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1578,1
    - Dst: bgp_clist_hash_key
      Src: /src/frr/bgpd/bgp_routemap.c:1582,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1563
    functionDepth: 1
    functionLinenumber: 1563
    functionLinenumberEnd: 1584
    functionName: route_match_community_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - strchr
    - bgp_clist_hash_key
    - memcpy
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_community_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1591,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1587
    functionDepth: 0
    functionLinenumber: 1587
    functionLinenumberEnd: 1593
    functionName: route_match_community_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_community_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1602
    functionDepth: 0
    functionLinenumber: 1602
    functionLinenumberEnd: 1608
    functionName: route_match_get_community_key
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_match_get_community_key(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:1630,1
    - Dst: lcommunity_list_exact_match
      Src: /src/frr/bgpd/bgp_routemap.c:1636,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:1637,1
    - Dst: lcommunity_list_match
      Src: /src/frr/bgpd/bgp_routemap.c:1640,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:1640,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1621
    functionDepth: 1
    functionLinenumber: 1621
    functionLinenumberEnd: 1646
    functionName: route_match_lcommunity
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - lcommunity_list_exact_match
    - bgp_attr_get_lcommunity
    - lcommunity_list_match
    - community_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_lcommunity(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1655,1
    - Dst: strchr
      Src: /src/frr/bgpd/bgp_routemap.c:1657,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1660,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_routemap.c:1661,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1664,1
    - Dst: bgp_clist_hash_key
      Src: /src/frr/bgpd/bgp_routemap.c:1668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1649
    functionDepth: 1
    functionLinenumber: 1649
    functionLinenumberEnd: 1670
    functionName: route_match_lcommunity_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - strchr
    - bgp_clist_hash_key
    - memcpy
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_lcommunity_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1677,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1679
    functionName: route_match_lcommunity_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_lcommunity_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:1701,1
    - Dst: ecommunity_list_match
      Src: /src/frr/bgpd/bgp_routemap.c:1706,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_routemap.c:1706,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1692
    functionDepth: 1
    functionLinenumber: 1692
    functionLinenumberEnd: 1710
    functionName: route_match_ecommunity
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_ecommunity
    - community_list_lookup
    - ecommunity_list_match
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ecommunity(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1717,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1718,1
    - Dst: bgp_clist_hash_key
      Src: /src/frr/bgpd/bgp_routemap.c:1719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1713
    functionDepth: 1
    functionLinenumber: 1713
    functionLinenumberEnd: 1722
    functionName: route_match_ecommunity_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_clist_hash_key
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_ecommunity_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1729,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1725
    functionDepth: 0
    functionLinenumber: 1725
    functionLinenumberEnd: 1731
    functionName: route_match_ecommunity_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ecommunity_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1745
    functionDepth: 0
    functionLinenumber: 1745
    functionLinenumberEnd: 1758
    functionName: route_match_origin
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_origin(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1764,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:1766,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:1768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1760
    functionDepth: 0
    functionLinenumber: 1760
    functionLinenumberEnd: 1774
    functionName: route_match_origin_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_origin_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1780
      start: 1777
    functionDepth: 0
    functionLinenumber: 1777
    functionLinenumberEnd: 1780
    functionName: route_match_origin_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_origin_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/bgpd/bgp_routemap.c:1795,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1792
    functionDepth: 1
    functionLinenumber: 1792
    functionLinenumberEnd: 1809
    functionName: route_match_probability
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_probability(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_routemap.c:1816,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1817,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1811
    functionDepth: 0
    functionLinenumber: 1811
    functionLinenumberEnd: 1831
    functionName: route_match_probability_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - atoi
    linkageType: ''
    returnType: void
    signature: void *route_match_probability_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1833
    functionDepth: 0
    functionLinenumber: 1833
    functionLinenumberEnd: 1836
    functionName: route_match_probability_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_probability_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/bgpd/bgp_routemap.c:1859,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1865
      start: 1848
    functionDepth: 1
    functionLinenumber: 1848
    functionLinenumberEnd: 1865
    functionName: route_match_interface
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_interface(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:1871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1869
    functionDepth: 1
    functionLinenumber: 1869
    functionLinenumberEnd: 1872
    functionName: route_match_interface_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_interface_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1878
      start: 1875
    functionDepth: 0
    functionLinenumber: 1875
    functionLinenumberEnd: 1878
    functionName: route_match_interface_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_interface_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1893
    functionDepth: 0
    functionLinenumber: 1893
    functionLinenumberEnd: 1903
    functionName: route_match_tag
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_tag(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:1923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1914
    functionDepth: 1
    functionLinenumber: 1914
    functionLinenumberEnd: 1926
    functionName: route_set_srte_color
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_srte_color(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:1933,1
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_routemap.c:1934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1929
    functionDepth: 0
    functionLinenumber: 1929
    functionLinenumberEnd: 1937
    functionName: route_set_srte_color_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - atoi
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_srte_color_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:1942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1940
    functionDepth: 0
    functionLinenumber: 1940
    functionLinenumberEnd: 1943
    functionName: route_set_srte_color_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_srte_color_free(void *rule)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1971,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1974,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1975,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_routemap.c:1977,1
    - Dst: sockunion2ip
      Src: /src/frr/bgpd/bgp_routemap.c:1979,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:1980,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1981,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1987,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:1993,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:1995,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1957
    functionDepth: 1
    functionLinenumber: 1957
    functionLinenumberEnd: 2003
    functionName: route_set_ip_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - SET_FLAG
    - sockunion2ip
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_ip_nexthop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:2015,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:2017,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2020,1
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_routemap.c:2022,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2025,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2030,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2007
    functionDepth: 0
    functionLinenumber: 2007
    functionLinenumberEnd: 2038
    functionName: route_set_ip_nexthop_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - inet_aton
    - strcmp
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_set_ip_nexthop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2045,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2048
      start: 2041
    functionDepth: 0
    functionLinenumber: 2041
    functionLinenumberEnd: 2048
    functionName: route_set_ip_nexthop_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ip_nexthop_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:2077,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2079
      start: 2065
    functionDepth: 1
    functionLinenumber: 2065
    functionLinenumberEnd: 2079
    functionName: route_set_l3vpn_nexthop_encapsulation
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_l3vpn_nexthop_encapsulation(void
      *rule, const struct prefix *prefix,\n\t\t\t\t      void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2082
    functionDepth: 0
    functionLinenumber: 2082
    functionLinenumberEnd: 2093
    functionName: route_set_l3vpn_nexthop_encapsulation_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_l3vpn_nexthop_encapsulation_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 2096
    functionDepth: 0
    functionLinenumber: 2096
    functionLinenumberEnd: 2099
    functionName: route_set_l3vpn_nexthop_encapsulation_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_l3vpn_nexthop_encapsulation_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:2127,1
    - Dst: route_value_adjust
      Src: /src/frr/bgpd/bgp_routemap.c:2128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2131
      start: 2112
    functionDepth: 1
    functionLinenumber: 2112
    functionLinenumberEnd: 2131
    functionName: route_set_local_pref
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_value_adjust
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_local_pref(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_value_adjust
      Src: /src/frr/bgpd/bgp_routemap.c:2155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2144
    functionDepth: 1
    functionLinenumber: 2144
    functionLinenumberEnd: 2158
    functionName: route_set_weight
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_value_adjust
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_weight(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2169
    functionDepth: 0
    functionLinenumber: 2169
    functionLinenumberEnd: 2178
    functionName: route_set_distance
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_distance(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:2202,1
    - Dst: route_value_adjust
      Src: /src/frr/bgpd/bgp_routemap.c:2205,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:2206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2209
      start: 2191
    functionDepth: 1
    functionLinenumber: 2191
    functionLinenumberEnd: 2209
    functionName: route_set_metric
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_value_adjust
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 2221
    functionDepth: 0
    functionLinenumber: 2221
    functionLinenumberEnd: 2236
    functionName: route_set_table_id
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_table_id(void *rule, const struct
      prefix *prefix,\n\n\t\t   void *object)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aspath_dup::aspath_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2259,1
    - Dst: path::path
      Src: /src/frr/bgpd/bgp_routemap.c:2261,1
    - Dst: aspath_leftmost
      Src: /src/frr/bgpd/bgp_routemap.c:2267,1
    - Dst: as::as
      Src: /src/frr/bgpd/bgp_routemap.c:2269,1
    - Dst: aspath_add_seq_n::aspath_add_seq_n
      Src: /src/frr/bgpd/bgp_routemap.c:2269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2275
      start: 2249
    functionDepth: 1
    functionLinenumber: 2249
    functionLinenumberEnd: 2275
    functionName: route_set_aspath_prepend
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - as::as
    - path::path
    - aspath_dup::aspath_dup
    - aspath_add_seq_n::aspath_add_seq_n
    - aspath_leftmost
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_aspath_prepend(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/frr/bgpd/bgp_routemap.c:2281,1
    - Dst: route_aspath_compile
      Src: /src/frr/bgpd/bgp_routemap.c:2284,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2285
      start: 2277
    functionDepth: 2
    functionLinenumber: 2277
    functionLinenumberEnd: 2285
    functionName: route_set_aspath_prepend_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_aspath_compile
    - sscanf
    linkageType: ''
    returnType: void
    signature: void *route_set_aspath_prepend_compile(const char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_aspath_free
      Src: /src/frr/bgpd/bgp_routemap.c:2290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2291
      start: 2287
    functionDepth: 2
    functionLinenumber: 2287
    functionLinenumberEnd: 2291
    functionName: route_set_aspath_prepend_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_aspath_free
    linkageType: ''
    returnType: void
    signature: void route_set_aspath_prepend_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2318,1
    - Dst: aspath_filter_exclude
      Src: /src/frr/bgpd/bgp_routemap.c:2321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - dummy
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2324
      start: 2309
    functionDepth: 1
    functionLinenumber: 2309
    functionLinenumberEnd: 2324
    functionName: route_set_aspath_exclude
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - aspath_filter_exclude
    - aspath_dup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_aspath_exclude(void *rule, const
      struct prefix *dummy, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:2337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2335
    functionDepth: 1
    functionLinenumber: 2335
    functionLinenumberEnd: 2338
    functionName: route_aspath_replace_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_aspath_replace_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2343
      start: 2340
    functionDepth: 0
    functionLinenumber: 2340
    functionLinenumberEnd: 2343
    functionName: route_aspath_replace_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_aspath_replace_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_routemap.c:2355,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2361,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_routemap.c:2365,1
    - Dst: aspath_replace_all_asn
      Src: /src/frr/bgpd/bgp_routemap.c:2367,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_routemap.c:2369,1
    - Dst: aspath_replace_specific_asn
      Src: /src/frr/bgpd/bgp_routemap.c:2371,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_routemap.c:2375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - rule
    - dummy
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2378
      start: 2345
    functionDepth: 1
    functionLinenumber: 2345
    functionLinenumberEnd: 2378
    functionName: route_set_aspath_replace
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strmatch
    - aspath_free
    - strtoul
    - aspath_replace_specific_asn
    - aspath_dup
    - aspath_replace_all_asn
    - zlog_warn
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_aspath_replace(void *rule, const
      struct prefix *dummy, void *object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_routemap.c:2408,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_routemap.c:2412,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_routemap.c:2415,1
    - Dst: community_merge
      Src: /src/frr/bgpd/bgp_routemap.c:2421,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2421,1
    - Dst: community_uniq_sort::community_uniq_sort
      Src: /src/frr/bgpd/bgp_routemap.c:2423,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_routemap.c:2424,1
    - Dst: community_dup::community_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2426,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_routemap.c:2434,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 2395
    functionDepth: 1
    functionLinenumber: 2395
    functionLinenumberEnd: 2440
    functionName: route_set_community
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - community_uniq_sort::community_uniq_sort
    - community_free
    - community_dup::community_dup
    - community_dup
    - community_merge
    - bgp_attr_get_community
    - bgp_attr_set_community
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_community(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:2451,1
    - Dst: strstr
      Src: /src/frr/bgpd/bgp_routemap.c:2454,1
    - Dst: community_str2com
      Src: /src/frr/bgpd/bgp_routemap.c:2462,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2471,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2477
      start: 2443
    functionDepth: 1
    functionLinenumber: 2443
    functionLinenumberEnd: 2477
    functionName: route_set_community_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strstr
    - strcmp
    - community_str2com
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_community_compile(const char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_routemap.c:2485,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2487
      start: 2480
    functionDepth: 1
    functionLinenumber: 2480
    functionLinenumberEnd: 2487
    functionName: route_set_community_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - community_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_community_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2519,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2523,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2527,1
    - Dst: lcommunity_merge
      Src: /src/frr/bgpd/bgp_routemap.c:2532,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2532,1
    - Dst: lcommunity_uniq_sort::lcommunity_uniq_sort
      Src: /src/frr/bgpd/bgp_routemap.c:2534,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2535,1
    - Dst: lcommunity_dup::lcommunity_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2537,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2545,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2506
    functionDepth: 1
    functionLinenumber: 2506
    functionLinenumberEnd: 2551
    functionName: route_set_lcommunity
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_lcommunity
    - lcommunity_uniq_sort::lcommunity_uniq_sort
    - bgp_attr_set_lcommunity
    - lcommunity_free
    - lcommunity_dup::lcommunity_dup
    - lcommunity_dup
    - lcommunity_merge
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_lcommunity(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:2562,1
    - Dst: strstr
      Src: /src/frr/bgpd/bgp_routemap.c:2565,1
    - Dst: lcommunity_str2com
      Src: /src/frr/bgpd/bgp_routemap.c:2573,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2582,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2588
      start: 2554
    functionDepth: 1
    functionLinenumber: 2554
    functionLinenumberEnd: 2588
    functionName: route_set_lcommunity_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strstr
    - strcmp
    - XCALLOC
    - lcommunity_str2com
    linkageType: ''
    returnType: void
    signature: void *route_set_lcommunity_compile(const char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2596,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2599
      start: 2591
    functionDepth: 1
    functionLinenumber: 2591
    functionLinenumberEnd: 2599
    functionName: route_set_lcommunity_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - lcommunity_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_lcommunity_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:2626,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2628,1
    - Dst: lcommunity_list_match_delete
      Src: /src/frr/bgpd/bgp_routemap.c:2631,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2631,1
    - Dst: lcommunity_uniq_sort::lcommunity_uniq_sort
      Src: /src/frr/bgpd/bgp_routemap.c:2632,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2633,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2641,1
    - Dst: size::size
      Src: /src/frr/bgpd/bgp_routemap.c:2643,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2644,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2647,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - rule
    - pfx
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2652
      start: 2612
    functionDepth: 1
    functionLinenumber: 2612
    functionLinenumberEnd: 2652
    functionName: route_set_lcommunity_delete
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_lcommunity
    - lcommunity_uniq_sort::lcommunity_uniq_sort
    - bgp_attr_set_lcommunity
    - community_list_lookup
    - lcommunity_free
    - size::size
    - lcommunity_dup
    - lcommunity_list_match_delete
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_lcommunity_delete(void *rule,
      const struct prefix *pfx, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_routemap.c:2661,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2663,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:2664,1
    - Dst: bgp_clist_hash_key
      Src: /src/frr/bgpd/bgp_routemap.c:2665,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2668,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2655
    functionDepth: 1
    functionLinenumber: 2655
    functionLinenumberEnd: 2672
    functionName: route_set_lcommunity_delete_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - bgp_clist_hash_key
    - XFREE
    - frrstr_split
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_set_lcommunity_delete_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2679,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2681
      start: 2675
    functionDepth: 0
    functionLinenumber: 2675
    functionLinenumberEnd: 2681
    functionName: route_set_lcommunity_delete_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_lcommunity_delete_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:2710,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_routemap.c:2712,1
    - Dst: community_list_match_delete
      Src: /src/frr/bgpd/bgp_routemap.c:2715,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2715,1
    - Dst: community_uniq_sort::community_uniq_sort
      Src: /src/frr/bgpd/bgp_routemap.c:2716,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_routemap.c:2717,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_routemap.c:2725,1
    - Dst: size::size
      Src: /src/frr/bgpd/bgp_routemap.c:2727,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_routemap.c:2728,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_routemap.c:2731,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2736
      start: 2695
    functionDepth: 1
    functionLinenumber: 2695
    functionLinenumberEnd: 2736
    functionName: route_set_community_delete
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - community_uniq_sort::community_uniq_sort
    - bgp_attr_set_community
    - community_free
    - community_list_lookup
    - community_list_match_delete
    - community_dup
    - size::size
    - bgp_attr_get_community
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_community_delete(void *rule,
      const struct prefix *prefix,\n\t\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_routemap.c:2745,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2747,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:2748,1
    - Dst: bgp_clist_hash_key
      Src: /src/frr/bgpd/bgp_routemap.c:2749,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2752,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2753,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2756
      start: 2739
    functionDepth: 1
    functionLinenumber: 2739
    functionLinenumberEnd: 2756
    functionName: route_set_community_delete_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - bgp_clist_hash_key
    - XFREE
    - frrstr_split
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_set_community_delete_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2763,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2765
      start: 2759
    functionDepth: 0
    functionLinenumber: 2759
    functionLinenumberEnd: 2765
    functionName: route_set_community_delete_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_community_delete_free(void *rule)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2797,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2805,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_routemap.c:2809,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2809,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2816,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2818,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2821,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2824
      start: 2783
    functionDepth: 1
    functionLinenumber: 2783
    functionLinenumberEnd: 2824
    functionName: route_set_ecommunity
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_ecommunity
    - ecommunity_merge
    - bgp_attr_set_ecommunity
    - ecommunity_dup
    - ecommunity_free
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_ecommunity(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_routemap.c:2831,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2839
      start: 2826
    functionDepth: 0
    functionLinenumber: 2826
    functionLinenumberEnd: 2839
    functionName: route_set_ecommunity_none_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strncmp
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_ecommunity_none_compile(const char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str2com
      Src: /src/frr/bgpd/bgp_routemap.c:2846,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2850,1
    - Dst: ecommunity_intern
      Src: /src/frr/bgpd/bgp_routemap.c:2851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2855
      start: 2841
    functionDepth: 1
    functionLinenumber: 2841
    functionLinenumberEnd: 2855
    functionName: route_set_ecommunity_rt_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ecommunity_intern
    - ecommunity_str2com
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_ecommunity_rt_compile(const char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_unintern
      Src: /src/frr/bgpd/bgp_routemap.c:2863,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:2865,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2866
      start: 2858
    functionDepth: 1
    functionLinenumber: 2858
    functionLinenumberEnd: 2866
    functionName: route_set_ecommunity_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ecommunity_unintern
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ecommunity_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str2com
      Src: /src/frr/bgpd/bgp_routemap.c:2891,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2895,1
    - Dst: ecommunity_intern
      Src: /src/frr/bgpd/bgp_routemap.c:2896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2900
      start: 2886
    functionDepth: 1
    functionLinenumber: 2886
    functionLinenumberEnd: 2900
    functionName: route_set_ecommunity_soo_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ecommunity_intern
    - ecommunity_str2com
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_ecommunity_soo_compile(const char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str2com
      Src: /src/frr/bgpd/bgp_routemap.c:2915,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:2919,1
    - Dst: ecommunity_intern
      Src: /src/frr/bgpd/bgp_routemap.c:2920,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2924
      start: 2910
    functionDepth: 1
    functionLinenumber: 2910
    functionLinenumberEnd: 2924
    functionName: route_set_ecommunity_nt_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ecommunity_intern
    - ecommunity_str2com
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_ecommunity_nt_compile(const char *arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:2969,1
    - Dst: bgp_path_info_mpath_cumbw
      Src: /src/frr/bgpd/bgp_routemap.c:2972,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:2979,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/bgpd/bgp_routemap.c:2983,1
    - Dst: encode_lb_extcomm
      Src: /src/frr/bgpd/bgp_routemap.c:2987,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:2988,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_routemap.c:2992,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_routemap.c:2994,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/bgp_routemap.c:2995,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_routemap.c:2997,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_routemap.c:3002,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_routemap.c:3006,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3011,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 2944
    functionDepth: 1
    functionLinenumber: 2944
    functionLinenumberEnd: 3014
    functionName: route_set_ecommunity_lb
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ecommunity_free
    - CHECK_FLAG
    - bgp_attr_get_ecommunity
    - bgp_path_info_mpath_cumbw
    - bgp_path_info_mpath_count
    - SET_FLAG
    - ecommunity_add_val
    - bgp_attr_set_ecommunity
    - ecommunity_dup
    - encode_lb_extcomm
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_ecommunity_lb(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/bgpd/bgp_routemap.c:3026,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_routemap.c:3031,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:3036,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:3038,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_routemap.c:3043,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3049,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 3016
    functionDepth: 0
    functionLinenumber: 3016
    functionLinenumberEnd: 3056
    functionName: route_set_ecommunity_lb_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XCALLOC
    - strcmp
    - strchr
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *route_set_ecommunity_lb_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3061
      start: 3058
    functionDepth: 0
    functionLinenumber: 3058
    functionLinenumberEnd: 3061
    functionName: route_set_ecommunity_lb_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ecommunity_lb_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3086
      start: 3074
    functionDepth: 0
    functionLinenumber: 3074
    functionLinenumberEnd: 3086
    functionName: route_set_origin
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_origin(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3093,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:3095,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:3097,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3103
      start: 3089
    functionDepth: 0
    functionLinenumber: 3089
    functionLinenumberEnd: 3103
    functionName: route_set_origin_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_origin_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3109
      start: 3106
    functionDepth: 0
    functionLinenumber: 3106
    functionLinenumberEnd: 3109
    functionName: route_set_origin_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_origin_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:3128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - rule
    - pfx
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3131
      start: 3122
    functionDepth: 1
    functionLinenumber: 3122
    functionLinenumberEnd: 3131
    functionName: route_set_atomic_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_atomic_aggregate(void *rule,
      const struct prefix *pfx, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3137
      start: 3134
    functionDepth: 0
    functionLinenumber: 3134
    functionLinenumberEnd: 3137
    functionName: route_set_atomic_aggregate_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_set_atomic_aggregate_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3143
      start: 3140
    functionDepth: 0
    functionLinenumber: 3140
    functionLinenumberEnd: 3143
    functionName: route_set_atomic_aggregate_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void route_set_atomic_aggregate_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_routemap.c:3161,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_routemap.c:3165,1
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_routemap.c:3167,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_routemap.c:3168,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:3171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - rule
    - pfx
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3174
      start: 3154
    functionDepth: 1
    functionLinenumber: 3154
    functionLinenumberEnd: 3174
    functionName: route_set_aigp_metric
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strmatch
    - atoi
    - bgp_attr_set_aigp_metric
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_aigp_metric(void *rule, const
      struct prefix *pfx, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:3178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3179
      start: 3176
    functionDepth: 1
    functionLinenumber: 3176
    functionLinenumberEnd: 3179
    functionName: route_set_aigp_metric_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_set_aigp_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3184
      start: 3181
    functionDepth: 0
    functionLinenumber: 3181
    functionLinenumberEnd: 3184
    functionName: route_set_aigp_metric_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_aigp_metric_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:3210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3213
      start: 3199
    functionDepth: 1
    functionLinenumber: 3199
    functionLinenumberEnd: 3213
    functionName: route_set_aggregator_as
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_aggregator_as(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3223,1
    - Dst: sscanf
      Src: /src/frr/bgpd/bgp_routemap.c:3224,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3225,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_routemap.c:3229,1
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_routemap.c:3230,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3236
      start: 3215
    functionDepth: 0
    functionLinenumber: 3215
    functionLinenumberEnd: 3236
    functionName: route_set_aggregator_as_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - inet_aton
    - XCALLOC
    - XFREE
    - sscanf
    linkageType: ''
    returnType: void
    signature: void *route_set_aggregator_as_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3241
      start: 3238
    functionDepth: 0
    functionLinenumber: 3238
    functionLinenumberEnd: 3241
    functionName: route_set_aggregator_as_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_aggregator_as_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3264
      start: 3251
    functionDepth: 0
    functionLinenumber: 3251
    functionLinenumberEnd: 3264
    functionName: route_set_tag
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_tag(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:3290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3294
      start: 3275
    functionDepth: 1
    functionLinenumber: 3275
    functionLinenumberEnd: 3294
    functionName: route_set_label_index
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_label_index(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:3312,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:3314,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3314,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:3316,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:3323,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3328
      start: 3306
    functionDepth: 1
    functionLinenumber: 3306
    functionLinenumberEnd: 3328
    functionName: route_match_ipv6_address
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ipv6_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:3334,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_routemap.c:3336,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:3340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3341
      start: 3330
    functionDepth: 1
    functionLinenumber: 3330
    functionLinenumberEnd: 3341
    functionName: route_match_ipv6_address_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - zlog_warn
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3346
      start: 3343
    functionDepth: 0
    functionLinenumber: 3343
    functionLinenumberEnd: 3346
    functionName: route_match_ipv6_address_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_address_free(void *rule)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:3370,1
    - Dst: unlikely
      Src: /src/frr/bgpd/bgp_routemap.c:3372,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3372,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:3374,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:3381,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_routemap.c:3387,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3393
      start: 3357
    functionDepth: 1
    functionLinenumber: 3357
    functionLinenumberEnd: 3393
    functionName: route_match_ipv6_next_hop
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - access_list_apply
    - access_list_lookup
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ipv6_next_hop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:3397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3398
      start: 3395
    functionDepth: 1
    functionLinenumber: 3395
    functionLinenumberEnd: 3398
    functionName: route_match_ipv6_next_hop_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_next_hop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3403
      start: 3400
    functionDepth: 0
    functionLinenumber: 3400
    functionLinenumberEnd: 3403
    functionName: route_match_ipv6_next_hop_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_next_hop_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_routemap.c:3423,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_routemap.c:3427,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3431
      start: 3414
    functionDepth: 1
    functionLinenumber: 3414
    functionLinenumberEnd: 3431
    functionName: route_match_ipv6_next_hop_address
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ipv6_next_hop_address(void
      *rule, const struct prefix *prefix,\n\t\t\t\t  void *object)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3438,1
    - Dst: inet_pton
      Src: /src/frr/bgpd/bgp_routemap.c:3440,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3447
      start: 3433
    functionDepth: 0
    functionLinenumber: 3433
    functionLinenumberEnd: 3447
    functionName: route_match_ipv6_next_hop_address_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_next_hop_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3452
      start: 3449
    functionDepth: 0
    functionLinenumber: 3449
    functionLinenumberEnd: 3452
    functionName: route_match_ipv6_next_hop_address_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_next_hop_address_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_routemap.c:3473,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3477
      start: 3463
    functionDepth: 1
    functionLinenumber: 3463
    functionLinenumberEnd: 3477
    functionName: route_match_ipv4_next_hop
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ipv4_next_hop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3484,1
    - Dst: inet_pton
      Src: /src/frr/bgpd/bgp_routemap.c:3486,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3493
      start: 3479
    functionDepth: 0
    functionLinenumber: 3479
    functionLinenumberEnd: 3493
    functionName: route_match_ipv4_next_hop_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv4_next_hop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3498
      start: 3495
    functionDepth: 0
    functionLinenumber: 3495
    functionLinenumberEnd: 3498
    functionName: route_match_ipv4_next_hop_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv4_next_hop_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_match_address_prefix_list
      Src: /src/frr/bgpd/bgp_routemap.c:3513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3514
      start: 3509
    functionDepth: 0
    functionLinenumber: 3509
    functionLinenumberEnd: 3514
    functionName: route_match_ipv6_address_prefix_list
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_match_address_prefix_list
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ipv6_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap.c:3518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3519
      start: 3516
    functionDepth: 1
    functionLinenumber: 3516
    functionLinenumberEnd: 3519
    functionName: route_match_ipv6_address_prefix_list_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3524
      start: 3521
    functionDepth: 0
    functionLinenumber: 3521
    functionLinenumberEnd: 3524
    functionName: route_match_ipv6_address_prefix_list_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_address_prefix_list_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_routemap.c:3548,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3554
      start: 3536
    functionDepth: 1
    functionLinenumber: 3536
    functionLinenumberEnd: 3554
    functionName: route_match_ipv6_next_hop_type
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ipv6_next_hop_type(void *rule,
      const struct prefix *prefix,\n\t\t\t       void *object)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3561,1
    - Dst: inet_pton
      Src: /src/frr/bgpd/bgp_routemap.c:3563,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3570
      start: 3556
    functionDepth: 0
    functionLinenumber: 3556
    functionLinenumberEnd: 3570
    functionName: route_match_ipv6_next_hop_type_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_next_hop_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3575
      start: 3572
    functionDepth: 0
    functionLinenumber: 3572
    functionLinenumberEnd: 3575
    functionName: route_match_ipv6_next_hop_type_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_next_hop_type_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3609
      start: 3588
    functionDepth: 1
    functionLinenumber: 3588
    functionLinenumberEnd: 3609
    functionName: route_set_ipv6_nexthop_global
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_ipv6_nexthop_global(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3618,1
    - Dst: inet_pton
      Src: /src/frr/bgpd/bgp_routemap.c:3620,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3628
      start: 3613
    functionDepth: 0
    functionLinenumber: 3613
    functionLinenumberEnd: 3628
    functionName: route_set_ipv6_nexthop_global_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_set_ipv6_nexthop_global_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3634
      start: 3631
    functionDepth: 0
    functionLinenumber: 3631
    functionLinenumberEnd: 3634
    functionName: route_set_ipv6_nexthop_global_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ipv6_nexthop_global_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3657,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3658,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3661,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3670
      start: 3646
    functionDepth: 1
    functionLinenumber: 3646
    functionLinenumberEnd: 3670
    functionName: route_set_ipv6_nexthop_prefer_global
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_set_ipv6_nexthop_prefer_global(void
      *rule, const struct prefix *prefix,\n\t\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3680
      start: 3672
    functionDepth: 0
    functionLinenumber: 3672
    functionLinenumberEnd: 3680
    functionName: route_set_ipv6_nexthop_prefer_global_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_ipv6_nexthop_prefer_global_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3686
      start: 3683
    functionDepth: 0
    functionLinenumber: 3683
    functionLinenumberEnd: 3686
    functionName: route_set_ipv6_nexthop_prefer_global_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ipv6_nexthop_prefer_global_free(void *rule)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_routemap.c:3716,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3730,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3734
      start: 3700
    functionDepth: 1
    functionLinenumber: 3700
    functionLinenumberEnd: 3734
    functionName: route_set_ipv6_nexthop_local
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_dest_table
    - SET_FLAG
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_ipv6_nexthop_local(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3743,1
    - Dst: inet_pton
      Src: /src/frr/bgpd/bgp_routemap.c:3745,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3753
      start: 3738
    functionDepth: 0
    functionLinenumber: 3738
    functionLinenumberEnd: 3753
    functionName: route_set_ipv6_nexthop_local_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_set_ipv6_nexthop_local_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3759
      start: 3756
    functionDepth: 0
    functionLinenumber: 3756
    functionLinenumberEnd: 3759
    functionName: route_set_ipv6_nexthop_local_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ipv6_nexthop_local_free(void *rule)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3784,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3785,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_routemap.c:3787,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_routemap.c:3790,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3803,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3813,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_routemap.c:3816,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_routemap.c:3818,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - rule
    - pfx
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3823
      start: 3773
    functionDepth: 1
    functionLinenumber: 3773
    functionLinenumberEnd: 3823
    functionName: route_set_ipv6_nexthop_peer
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_ipv6_nexthop_peer(void *rule,
      const struct prefix *pfx, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3835
      start: 3827
    functionDepth: 0
    functionLinenumber: 3827
    functionLinenumberEnd: 3835
    functionName: route_set_ipv6_nexthop_peer_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_ipv6_nexthop_peer_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3841
      start: 3838
    functionDepth: 0
    functionLinenumber: 3838
    functionLinenumberEnd: 3841
    functionName: route_set_ipv6_nexthop_peer_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ipv6_nexthop_peer_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3870
      start: 3853
    functionDepth: 1
    functionLinenumber: 3853
    functionLinenumberEnd: 3870
    functionName: route_set_vpnv4_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_vpnv4_nexthop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3877,1
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_routemap.c:3879,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3882,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3887
      start: 3872
    functionDepth: 0
    functionLinenumber: 3872
    functionLinenumberEnd: 3887
    functionName: route_set_vpnv4_nexthop_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - XFREE
    - inet_aton
    linkageType: ''
    returnType: void
    signature: void *route_set_vpnv4_nexthop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_routemap.c:3902,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:3906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3910
      start: 3891
    functionDepth: 1
    functionLinenumber: 3891
    functionLinenumberEnd: 3910
    functionName: route_set_vpnv6_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - memcpy
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_vpnv6_nexthop(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3917,1
    - Dst: inet_pton
      Src: /src/frr/bgpd/bgp_routemap.c:3918,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3921,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3926
      start: 3912
    functionDepth: 0
    functionLinenumber: 3912
    functionLinenumberEnd: 3926
    functionName: route_set_vpnv6_nexthop_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_set_vpnv6_nexthop_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3931
      start: 3928
    functionDepth: 0
    functionLinenumber: 3928
    functionLinenumberEnd: 3931
    functionName: route_set_vpn_nexthop_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_vpn_nexthop_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_routemap.c:3961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3965
      start: 3952
    functionDepth: 1
    functionLinenumber: 3952
    functionLinenumberEnd: 3965
    functionName: route_set_originator_id
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_originator_id(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:3973,1
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_routemap.c:3975,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3978,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3983
      start: 3968
    functionDepth: 0
    functionLinenumber: 3968
    functionLinenumberEnd: 3983
    functionName: route_set_originator_id_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - XFREE
    - inet_aton
    linkageType: ''
    returnType: void
    signature: void *route_set_originator_id_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap.c:3988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3989
      start: 3986
    functionDepth: 0
    functionLinenumber: 3986
    functionLinenumberEnd: 3989
    functionName: route_set_originator_id_free
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_originator_id_free(void *rule)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_routemap.c:4011,1
    - Dst: ecommunity_lookup
      Src: /src/frr/bgpd/bgp_routemap.c:4015,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4041
      start: 3999
    functionDepth: 1
    functionLinenumber: 3999
    functionLinenumberEnd: 4041
    functionName: route_match_rpki_extcommunity
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ecommunity_lookup
    - bgp_attr_get_ecommunity
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_rpki_extcommunity(void *rule,
      const struct prefix *prefix,\n\t\t\t      void *object)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap.c:4047,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4049,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4051,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4057
      start: 4043
    functionDepth: 0
    functionLinenumber: 4043
    functionLinenumberEnd: 4057
    functionName: route_match_extcommunity_compile
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_extcommunity_compile(const char *arg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4085,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_routemap.c:4088,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:4089,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_routemap.c:4091,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:4092,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4094,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4095,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgp_routemap.c:4097,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:4098,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_routemap.c:4100,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_routemap.c:4102,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:4103,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4105,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4106,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_routemap.c:4107,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4120,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4123,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4127,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4132,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4137,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 32
    argCount: 6
    argNames:
    - rmap_name
    - map
    - peer
    - afi
    - safi
    - route_update
    argTypes:
    - char*
    - struct route_map*
    - struct peer*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4142
      start: 4070
    functionDepth: 1
    functionLinenumber: 4070
    functionLinenumberEnd: 4142
    functionName: bgp_route_map_process_peer
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - peer_established
    - safi2str
    - bgp_debug_update
    - CHECK_FLAG
    - strcmp
    - bgp_route_refresh_send
    - afi2str
    - zlog_debug
    - bgp_soft_reconfig_in
    linkageType: ''
    returnType: void
    signature: "void bgp_route_map_process_peer(const char *rmap_name,\n\t\t\t\t       struct
      route_map *map, struct peer *peer,\n\t\t\t\t       int afi, int safi, int route_update)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_routemap.c:4160,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4166,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4173,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4177,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4181,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - rmap_name
    - map
    - bgp
    argTypes:
    - char*
    - struct route_map*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4185
      start: 4144
    functionDepth: 0
    functionLinenumber: 4144
    functionLinenumberEnd: 4185
    functionName: bgp_route_map_update_peer_group
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void bgp_route_map_update_peer_group(const char *rmap_name,\n\t\t\t\t\t
      \   struct route_map *map,\n\t\t\t\t\t    struct bgp *bgp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4166,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4173,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4177,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4181,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4183
      start: 4161
    functionDepth: 0
    functionLinenumber: 4161
    functionLinenumberEnd: 4183
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_route_map_process_peer
      Src: /src/frr/bgpd/bgp_routemap.c:4220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4222
      start: 4217
    functionDepth: 2
    functionLinenumber: 4217
    functionLinenumberEnd: 4222
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - bgp_route_map_process_peer
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_routemap.c:4234,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4238,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_routemap.c:4248,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_routemap.c:4251,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:4252,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4254,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4255,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_routemap.c:4257,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_routemap.c:4261,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_routemap.c:4262,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_routemap.c:4263,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_routemap.c:4268,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_routemap.c:4272,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_routemap.c:4278,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_routemap.c:4280,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:4281,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4283,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4284,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_routemap.c:4285,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_routemap.c:4288,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_routemap.c:4294,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_routemap.c:4295,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_routemap.c:4296,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_routemap.c:4304,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_routemap.c:4307,1
    - Dst: bgp_aggregate_toggle_suppressed
      Src: /src/frr/bgpd/bgp_routemap.c:4311,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_routemap.c:4312,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_routemap.c:4319,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_routemap.c:4321,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_routemap.c:4330,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_routemap.c:4332,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_routemap.c:4333,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4335,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_routemap.c:4336,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_routemap.c:4337,1
    - Dst: bgp_aggregate_route
      Src: /src/frr/bgpd/bgp_routemap.c:4340,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4344
      start: 4232
    functionDepth: 1
    functionLinenumber: 4232
    functionLinenumberEnd: 4344
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - safi2str
    - afi2str
    - route_map_counter_increment
    - BGP_DEBUG
    - bgp_zebra_announce_table
    - bgp_dest_get_bgp_static_info
    - strmatch
    - bgp_dest_get_prefix
    - bgp_fibupd_safi
    - bgp_dest_get_bgp_aggregate_info
    - inet_ntop
    - zlog_debug
    - bgp_aggregate_toggle_suppressed
    - bgp_debug_zebra
    - bgp_aggregate_route
    - bgp_route_next
    - bgp_static_update
    - bgp_table_top
    - strcmp
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_walk_update_list
      Src: /src/frr/bgpd/bgp_routemap.c:4420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4421
      start: 4418
    functionDepth: 1
    functionLinenumber: 4418
    functionLinenumberEnd: 4421
    functionName: bgp_route_map_update_timer
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_walk_update_list
    linkageType: ''
    returnType: void
    signature: void bgp_route_map_update_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/bgpd/bgp_routemap.c:7259,1
    - Dst: route_map_add_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7261,1
    - Dst: route_map_delete_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7262,1
    - Dst: route_map_event_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7263,1
    - Dst: route_map_match_interface_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7265,1
    - Dst: route_map_no_match_interface_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7266,1
    - Dst: route_map_match_ip_address_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7268,1
    - Dst: route_map_no_match_ip_address_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7269,1
    - Dst: route_map_match_ip_address_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7271,1
    - Dst: route_map_no_match_ip_address_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7272,1
    - Dst: route_map_match_ip_next_hop_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7274,1
    - Dst: route_map_no_match_ip_next_hop_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7275,1
    - Dst: route_map_match_ipv6_next_hop_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7277,1
    - Dst: route_map_no_match_ipv6_next_hop_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7278,1
    - Dst: route_map_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7280,1
    - Dst: route_map_no_match_ip_next_hop_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7281,1
    - Dst: route_map_match_ip_next_hop_type_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7283,1
    - Dst: route_map_no_match_ip_next_hop_type_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7284,1
    - Dst: route_map_match_ipv6_address_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7286,1
    - Dst: route_map_no_match_ipv6_address_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7287,1
    - Dst: route_map_match_ipv6_address_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7289,1
    - Dst: route_map_no_match_ipv6_address_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7290,1
    - Dst: route_map_match_ipv6_next_hop_type_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7292,1
    - Dst: route_map_no_match_ipv6_next_hop_type_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7293,1
    - Dst: route_map_match_ipv6_next_hop_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7295,1
    - Dst: route_map_no_match_ipv6_next_hop_prefix_list_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7296,1
    - Dst: route_map_match_metric_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7298,1
    - Dst: route_map_no_match_metric_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7299,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7301,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7302,1
    - Dst: route_map_set_srte_color_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7304,1
    - Dst: route_map_no_set_srte_color_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7305,1
    - Dst: route_map_set_ip_nexthop_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7307,1
    - Dst: route_map_no_set_ip_nexthop_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7308,1
    - Dst: route_map_set_ipv6_nexthop_local_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7310,1
    - Dst: route_map_no_set_ipv6_nexthop_local_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7311,1
    - Dst: route_map_set_metric_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7313,1
    - Dst: route_map_no_set_metric_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7314,1
    - Dst: route_map_set_tag_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7316,1
    - Dst: route_map_no_set_tag_hook
      Src: /src/frr/bgpd/bgp_routemap.c:7317,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7319,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7320,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7321,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7323,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7325,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7326,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7327,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7328,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7329,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7330,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7331,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7332,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7333,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7334,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7335,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7336,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7337,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7338,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7339,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7340,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7341,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7342,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7343,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7344,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7345,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7346,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7347,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7348,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7350,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7351,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7352,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7353,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7354,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7355,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7356,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7357,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7358,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7359,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7360,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7361,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7362,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7363,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7364,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7365,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7366,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7367,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7368,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7369,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7370,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7371,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7372,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7373,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7374,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7375,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7376,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7377,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7378,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7379,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7380,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7381,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7383,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7384,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7385,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7386,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7387,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7388,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7389,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7390,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7391,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7392,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7393,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7394,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7395,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7396,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7397,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7398,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7399,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7400,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7401,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7402,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7403,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7404,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7405,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7407,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7408,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7409,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7410,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7411,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7412,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7413,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7414,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7415,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7416,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7417,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7418,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7419,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7420,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7421,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7422,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7424,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7425,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7426,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7427,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7428,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7429,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7430,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7431,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7432,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7433,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7434,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7435,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7436,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7437,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7438,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7439,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7440,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7441,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7442,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7443,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7444,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7445,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7446,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7447,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7448,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7449,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7450,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7451,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7452,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7453,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7454,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7455,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7456,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7457,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7458,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7459,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7460,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7461,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7462,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7463,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7464,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7465,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7466,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7467,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7468,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7469,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7470,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7471,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7472,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7473,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7474,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7475,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7476,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7477,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7478,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7479,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7480,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7482,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7483,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7485,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7486,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7487,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7488,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7489,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7491,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7492,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7493,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7494,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7495,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7496,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7497,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7498,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7499,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7500,1
    - Dst: route_map_install_set
      Src: /src/frr/bgpd/bgp_routemap.c:7501,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_routemap.c:7502,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7504,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7505,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7506,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7507,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7508,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7509,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7510,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7511,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7512,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7513,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7514,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7515,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7516,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7517,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7518,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7519,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7520,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7521,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7522,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_routemap.c:7524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 236
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7526
      start: 7257
    functionDepth: 1
    functionLinenumber: 7257
    functionLinenumberEnd: 7526
    functionName: bgp_route_map_init
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_event_hook
    - route_map_match_ipv6_address_prefix_list_hook
    - route_map_match_tag_hook
    - route_map_no_match_metric_hook
    - route_map_match_ip_next_hop_prefix_list_hook
    - route_map_set_metric_hook
    - install_element
    - route_map_match_interface_hook
    - route_map_no_match_ipv6_address_prefix_list_hook
    - route_map_set_srte_color_hook
    - route_map_install_set
    - route_map_set_ipv6_nexthop_local_hook
    - route_map_init
    - route_map_no_set_srte_color_hook
    - route_map_no_match_ip_address_prefix_list_hook
    - route_map_match_ip_next_hop_hook
    - route_map_match_ip_address_hook
    - route_map_set_tag_hook
    - route_map_no_match_ipv6_next_hop_prefix_list_hook
    - route_map_no_match_interface_hook
    - route_map_match_ipv6_address_hook
    - route_map_delete_hook
    - route_map_no_match_ipv6_address_hook
    - route_map_no_match_tag_hook
    - route_map_set_ip_nexthop_hook
    - route_map_no_match_ip_next_hop_prefix_list_hook
    - route_map_no_match_ip_next_hop_hook
    - route_map_match_ipv6_next_hop_hook
    - route_map_no_set_ip_nexthop_hook
    - route_map_match_ipv6_next_hop_prefix_list_hook
    - route_map_match_ip_next_hop_type_hook
    - route_map_no_set_tag_hook
    - route_map_match_metric_hook
    - route_map_install_match
    - route_map_no_set_metric_hook
    - route_map_no_match_ip_address_hook
    - route_map_match_ipv6_next_hop_type_hook
    - route_map_no_set_ipv6_nexthop_local_hook
    - route_map_no_match_ipv6_next_hop_type_hook
    - route_map_add_hook
    - route_map_match_ip_address_prefix_list_hook
    - route_map_no_match_ipv6_next_hop_hook
    - route_map_no_match_ip_next_hop_type_hook
    linkageType: ''
    returnType: void
    signature: void bgp_route_map_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_finish
      Src: /src/frr/bgpd/bgp_routemap.c:7531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7532
      start: 7528
    functionDepth: 1
    functionLinenumber: 7528
    functionLinenumberEnd: 7532
    functionName: bgp_route_map_terminate
    functionSourceFile: /src/frr/bgpd/bgp_routemap.c
    functionUses: 1
    functionsReached:
    - route_map_finish
    linkageType: ''
    returnType: void
    signature: void bgp_route_map_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - vty
    - ','
    - p
    - ','
    - json
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: BGP_SHOW_PEER_GR_CAPABILITY
    functionSourceFile: /src/frr/bgpd/bgp_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_SHOW_PEER_GR_CAPABILITY(vty, p, json)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _bgp
    - ','
    - _peer
    - ','
    - _peer_list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 73
    functionName: VTY_BGP_GR_ROUTER_DETECT
    functionSourceFile: /src/frr/bgpd/bgp_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_BGP_GR_ROUTER_DETECT(_bgp, _peer, _peer_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _bgp
    - ','
    - _ret
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 88
    functionName: VTY_SEND_BGP_GR_CAPABILITY_TO_ZEBRA
    functionSourceFile: /src/frr/bgpd/bgp_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_SEND_BGP_GR_CAPABILITY_TO_ZEBRA(_bgp, _ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _bgp
    - ','
    - _peer_list
    - ','
    - _ret
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: VTY_BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    functionSourceFile: /src/frr/bgpd/bgp_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "VTY_BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA(                 \\\n\t_bgp,
      _peer_list, _ret)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _eor_flag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 123
    functionName: PRINT_EOR
    functionSourceFile: /src/frr/bgpd/bgp_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINT_EOR(_eor_flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _eor_flag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 135
    functionName: PRINT_EOR_JSON
    functionSourceFile: /src/frr/bgpd/bgp_vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINT_EOR_JSON(_eor_flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - aggregate
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 465
    functionName: AGGREGATE_MED_VALID
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AGGREGATE_MED_VALID(aggregate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nhlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 476
    functionName: BGP_NEXTHOP_AFI_FROM_NHLEN
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_NEXTHOP_AFI_FROM_NHLEN(nhlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 482
    functionName: BGP_ATTR_MP_NEXTHOP_LEN_IP6
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_ATTR_MP_NEXTHOP_LEN_IP6(attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 486
    functionName: BGP_ATTR_NEXTHOP_AFI_IP6
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_ATTR_NEXTHOP_AFI_IP6(attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - BI
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 490
    functionName: BGP_PATH_COUNTABLE
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PATH_COUNTABLE(BI)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - BI
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 501
    functionName: BGP_PATH_HOLDDOWN
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PATH_HOLDDOWN(BI)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 503
    functionName: DISTRIBUTE_IN_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISTRIBUTE_IN_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 504
    functionName: DISTRIBUTE_IN
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISTRIBUTE_IN(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 505
    functionName: DISTRIBUTE_OUT_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISTRIBUTE_OUT_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 506
    functionName: DISTRIBUTE_OUT
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISTRIBUTE_OUT(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 508
    functionName: PREFIX_LIST_IN_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_IN_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 509
    functionName: PREFIX_LIST_IN
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_IN(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 510
    functionName: PREFIX_LIST_OUT_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_OUT_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 511
    functionName: PREFIX_LIST_OUT
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_OUT(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 513
    functionName: FILTER_LIST_IN_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILTER_LIST_IN_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 514
    functionName: FILTER_LIST_IN
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILTER_LIST_IN(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 515
    functionName: FILTER_LIST_OUT_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILTER_LIST_OUT_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 516
    functionName: FILTER_LIST_OUT
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILTER_LIST_OUT(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 518
    functionName: ROUTE_MAP_IN_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTE_MAP_IN_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 519
    functionName: ROUTE_MAP_IN
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTE_MAP_IN(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 520
    functionName: ROUTE_MAP_OUT_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTE_MAP_OUT_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 521
    functionName: ROUTE_MAP_OUT
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTE_MAP_OUT(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 523
    functionName: UNSUPPRESS_MAP_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSUPPRESS_MAP_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 524
    functionName: UNSUPPRESS_MAP
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSUPPRESS_MAP(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 526
    functionName: ADVERTISE_MAP_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADVERTISE_MAP_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 527
    functionName: ADVERTISE_MAP
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADVERTISE_MAP(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 529
    functionName: ADVERTISE_CONDITION
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADVERTISE_CONDITION(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 531
    functionName: CONDITION_MAP_NAME
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONDITION_MAP_NAME(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 532
    functionName: CONDITION_MAP
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONDITION_MAP(F)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_next_version
      Src: /src/frr/bgpd/bgp_route.h:544,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.h:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 545
    functionName: bgp_bump_version
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached:
    - bgp_dest_table
    - bgp_table_next_version
    linkageType: ''
    returnType: void
    signature: void bgp_bump_version(struct bgp_dest *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - safi
    argTypes:
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 554
    functionName: bgp_fibupd_safi
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_fibupd_safi(safi_t safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.h:566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - pi
    - afi
    - safi
    argTypes:
    - struct bgp_path_info*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 572
    functionName: is_pi_family_matching
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached:
    - bgp_dest_table
    linkageType: ''
    returnType: bool
    signature: "bool is_pi_family_matching(struct bgp_path_info *pi,\n\t\t\t\t\t afi_t
      afi, safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.h:580,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.h:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 6
    argNames:
    - dst_pi
    - dst_pie
    - dest
    - src_pi
    - peer
    - attr
    argTypes:
    - struct bgp_path_info*
    - struct bgp_path_info_extra*
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 593
    functionName: prep_for_rmap_apply
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void prep_for_rmap_apply(struct bgp_path_info *dst_pi,\n\t\t\t\t       struct
      bgp_path_info_extra *dst_pie,\n\t\t\t\t       struct bgp_dest *dest,\n\t\t\t\t
      \      struct bgp_path_info *src_pi,\n\t\t\t\t       struct peer *peer, struct
      attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BGP_SUPPRESS_FIB_ENABLED
      Src: /src/frr/bgpd/bgp_route.h:597,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.h:598,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgp_route.h:599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - dest
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 600
    functionName: bgp_check_advertise
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - bgp_option_check
    - BGP_SUPPRESS_FIB_ENABLED
    linkageType: ''
    returnType: bool
    signature: bool bgp_check_advertise(struct bgp *bgp, struct bgp_dest *dest)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BGP_SUPPRESS_FIB_ENABLED
      Src: /src/frr/bgpd/bgp_route.h:612,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.h:615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.h:616,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.h:639,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - bgp
    - dest
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 643
    functionName: bgp_check_withdrawal
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - BGP_SUPPRESS_FIB_ENABLED
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: bool
    signature: bool bgp_check_withdrawal(struct bgp *bgp, struct bgp_dest *dest)
  - 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: 891
      start: 889
    functionDepth: 0
    functionLinenumber: 889
    functionLinenumberEnd: 891
    functionName: bgp_path_info_add
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bgp_path_info_add(A, B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 891
    functionDepth: 0
    functionLinenumber: 891
    functionLinenumberEnd: 892
    functionName: bgp_path_info_free
    functionSourceFile: /src/frr/bgpd/bgp_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bgp_path_info_free(B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bgp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: EVPN_ENABLED
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVPN_ENABLED(bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.h:20,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/bgpd/bgp_evpn.h:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 22
    functionName: is_evpn_enabled
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 50
    functionsReached:
    - EVPN_ENABLED
    - bgp_get_evpn
    linkageType: ''
    returnType: int
    signature: int is_evpn_enabled(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.h:31,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.h:33,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.h:38,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.h:40,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 2
    argNames:
    - bgp_vrf
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 45
    functionName: advertise_type5_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int advertise_type5_routes(struct bgp *bgp_vrf,\n\t\t\t\t\t afi_t
      afi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 1
    argNames:
    - ri
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 66
    functionName: get_route_parent_evpn
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_path_info
    signature: 'struct bgp_path_info *

      get_route_parent_evpn(struct bgp_path_info *ri)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_route_parent_evpn
      Src: /src/frr/bgpd/bgp_evpn.h:75,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_evpn.h:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - ri
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 89
    functionName: is_route_parent_evpn
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 0
    functionsReached:
    - bgp_dest_table
    - get_route_parent_evpn
    linkageType: ''
    returnType: int
    signature: int is_route_parent_evpn(struct bgp_path_info *ri)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_pi_family_matching
      Src: /src/frr/bgpd/bgp_evpn.h:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: is_pi_family_evpn
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 0
    functionsReached:
    - is_pi_family_matching
    linkageType: ''
    returnType: bool
    signature: bool is_pi_family_evpn(struct bgp_path_info *pi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_evpn.h:115,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 121
    functionName: is_route_injectable_into_evpn
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 0
    functionsReached:
    - bgp_dest_table
    linkageType: ''
    returnType: bool
    signature: bool is_route_injectable_into_evpn(struct bgp_path_info *pi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.h:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: evpn_resolve_overlay_index
    functionSourceFile: /src/frr/bgpd/bgp_evpn.h
    functionUses: 0
    functionsReached:
    - bgp_get_evpn
    linkageType: ''
    returnType: bool
    signature: bool evpn_resolve_overlay_index(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_attr_evpn.c:28,1
    - Dst: ipaddr_cmp
      Src: /src/frr/bgpd/bgp_attr_evpn.c:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - struct bgp_route_evpn*
    - struct bgp_route_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: bgp_route_evpn_same
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - ipaddr_cmp
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool bgp_route_evpn_same(const struct bgp_route_evpn *e1,\n\t\t\t
      const struct bgp_route_evpn *e2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:35,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_attr_evpn.c:37,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr_evpn.c:40,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:42,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/bgp_attr_evpn.c:42,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:43,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/bgp_attr_evpn.c:45,1
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_attr_evpn.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - attr
    - routermac
    argTypes:
    - struct attr*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 47
    functionName: bgp_add_routermac_ecom
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - ecommunity_new
    - memset
    - ecommunity_str
    - bgp_attr_get_ecommunity
    - ecommunity_add_val
    - bgp_attr_set_ecommunity
    - memcpy
    linkageType: ''
    returnType: void
    signature: void bgp_add_routermac_ecom(struct attr *attr, struct ethaddr *routermac)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/frr/bgpd/bgp_attr_evpn.c:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - str
    - id
    argTypes:
    - char*
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 73
    functionName: str2esi
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: bool
    signature: bool str2esi(const char *str, esi_t *id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_attr_evpn.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ecom_mac
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 83
    functionName: ecom_mac2str
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - prefix_mac2str
    linkageType: ''
    returnType: char
    signature: char *ecom_mac2str(char *ecom_mac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:91,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr_evpn.c:109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - attr
    - rmac
    argTypes:
    - struct attr*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 113
    functionName: bgp_attr_rmac
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_ecommunity
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool bgp_attr_rmac(struct attr *attr, struct ethaddr *rmac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 143
    functionName: bgp_attr_default_gw
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_ecommunity
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t bgp_attr_default_gw(struct attr *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:156,1
    - Dst: ptr_get_be16
      Src: /src/frr/bgpd/bgp_attr_evpn.c:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - attr
    - alg
    argTypes:
    - struct attr*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 180
    functionName: bgp_attr_df_pref_from_ec
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_ecommunity
    - ptr_get_be16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t bgp_attr_df_pref_from_ec(struct attr *attr, uint8_t *alg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:192,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_attr_evpn.c:221,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - attr
    - sticky
    argTypes:
    - struct attr*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 227
    functionName: bgp_attr_mac_mobility_seqnum
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - bgp_attr_get_ecommunity
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_attr_mac_mobility_seqnum(struct attr *attr, uint8_t *sticky)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr_evpn.c:239,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - attr
    - router_flag
    - proxy
    argTypes:
    - struct attr*
    - uint8_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 265
    functionName: bgp_attr_evpn_na_flag
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_ecommunity
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_evpn_na_flag(struct attr *attr,\n\t\tuint8_t *router_flag,
      bool *proxy)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_attr_evpn.c:278,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_attr_evpn.c:279,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/bgpd/bgp_attr_evpn.c:287,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr_evpn.c:288,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/bgpd/bgp_attr_evpn.c:293,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr_evpn.c:294,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - evpn_type
    - eth_tag
    - dst
    argTypes:
    - int
    - uint32_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 302
    functionName: bgp_build_evpn_prefix
    functionSourceFile: /src/frr/bgpd/bgp_attr_evpn.c
    functionUses: 0
    functionsReached:
    - memset
    - SET_IPADDR_V6
    - prefix_copy
    - memcpy
    - SET_IPADDR_V4
    linkageType: ''
    returnType: int
    signature: "int bgp_build_evpn_prefix(int evpn_type, uint32_t eth_tag,\n\t\t\t\t
      struct prefix *dst)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 29
    functionName: bgp_cond_adv_debug
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bgp_cond_adv_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_updgrp.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - updgrp
    argTypes:
    - struct update_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: update_group_checkin
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - monotime
    linkageType: ''
    returnType: void
    signature: void update_group_checkin(struct update_group *updgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_updgrp.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - subgrp
    - updgrp
    argTypes:
    - struct update_subgroup*
    - struct update_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: update_subgroup_checkin
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - monotime
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_checkin(struct update_subgroup *subgrp,\n\t\t\t\t
      \   struct update_group *updgrp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:71,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_updgrp.c:74,1
    - Dst: bgp_adv_fifo_init
      Src: /src/frr/bgpd/bgp_updgrp.c:75,1
    - Dst: bgp_adv_fifo_init
      Src: /src/frr/bgpd/bgp_updgrp.c:76,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_updgrp.c:79,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_updgrp.c:96,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_updgrp.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - subgrp
    - updgrp
    argTypes:
    - struct update_subgroup*
    - struct update_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 99
    functionName: sync_init
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 1
    functionsReached:
    - stream_new
    - XCALLOC
    - hash_create
    - bgp_adv_fifo_init
    - UPDGRP_PEER
    linkageType: ''
    returnType: void
    signature: "void sync_init(struct update_subgroup *subgrp,\n\t\t      struct update_group
      *updgrp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:103,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_updgrp.c:104,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_updgrp.c:108,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_updgrp.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 113
    functionName: sync_delete
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - stream_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void sync_delete(struct update_subgroup *subgrp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:137,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:139,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_updgrp.c:152,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_updgrp.c:153,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_updgrp.c:156,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:162,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:168,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:169,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:169,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:170,1
    - Dst: DISTRIBUTE_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:171,1
    - Dst: DISTRIBUTE_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:171,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:174,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:175,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:175,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:176,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:177,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:177,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:180,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:181,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:181,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:182,1
    - Dst: FILTER_LIST_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:183,1
    - Dst: FILTER_LIST_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:183,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:186,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:187,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:187,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:188,1
    - Dst: ROUTE_MAP_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:189,1
    - Dst: ROUTE_MAP_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:189,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:192,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:193,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:193,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:194,1
    - Dst: UNSUPPRESS_MAP
      Src: /src/frr/bgpd/bgp_updgrp.c:195,1
    - Dst: UNSUPPRESS_MAP
      Src: /src/frr/bgpd/bgp_updgrp.c:195,1
    - Dst: ADVERTISE_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:198,1
    - Dst: ADVERTISE_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:199,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:199,1
    - Dst: ADVERTISE_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:200,1
    - Dst: ADVERTISE_MAP
      Src: /src/frr/bgpd/bgp_updgrp.c:201,1
    - Dst: ADVERTISE_MAP
      Src: /src/frr/bgpd/bgp_updgrp.c:201,1
    - Dst: ADVERTISE_CONDITION
      Src: /src/frr/bgpd/bgp_updgrp.c:202,1
    - Dst: ADVERTISE_CONDITION
      Src: /src/frr/bgpd/bgp_updgrp.c:202,1
    - Dst: CONDITION_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:205,1
    - Dst: CONDITION_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:206,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_updgrp.c:206,1
    - Dst: CONDITION_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:207,1
    - Dst: CONDITION_MAP
      Src: /src/frr/bgpd/bgp_updgrp.c:208,1
    - Dst: CONDITION_MAP
      Src: /src/frr/bgpd/bgp_updgrp.c:208,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 63
    argCount: 4
    argNames:
    - dst
    - src
    - afi
    - safi
    argTypes:
    - struct peer*
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 212
    functionName: conf_copy
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - UNSUPPRESS_MAP
    - FILTER_LIST_OUT_NAME
    - ROUTE_MAP_OUT_NAME
    - DISTRIBUTE_OUT
    - CONDITION_MAP
    - PREFIX_LIST_OUT
    - ADVERTISE_MAP
    - ROUTE_MAP_OUT
    - PREFIX_LIST_OUT_NAME
    - UNSUPPRESS_MAP_NAME
    - CONDITION_MAP_NAME
    - XFREE
    - XSTRDUP
    - memcpy
    - ecommunity_free
    - ADVERTISE_CONDITION
    - DISTRIBUTE_OUT_NAME
    - ADVERTISE_MAP_NAME
    - ecommunity_dup
    - FILTER_LIST_OUT
    linkageType: ''
    returnType: void
    signature: "void conf_copy(struct peer *dst, struct peer *src, afi_t afi,\n\t\t
      \     safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:223,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:225,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:227,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:229,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:231,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:233,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:235,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:237,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:239,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_updgrp.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - src
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 242
    functionName: conf_release
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - XFREE
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void conf_release(struct peer *src, afi_t afi, safi_t safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: conf_copy
      Src: /src/frr/bgpd/bgp_updgrp.c:262,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - updgrp
    - paf
    argTypes:
    - struct update_group*
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 263
    functionName: peer2_updgrp_copy
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - conf_copy
    linkageType: ''
    returnType: void
    signature: void peer2_updgrp_copy(struct update_group *updgrp, struct peer_af
      *paf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_updgrp.c:277,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_updgrp.c:278,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_updgrp.c:279,1
    - Dst: conf_copy
      Src: /src/frr/bgpd/bgp_updgrp.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 282
    functionName: updgrp_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - conf_copy
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *updgrp_hash_alloc(void *p)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:339,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:340,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:341,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:342,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:343,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:344,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:346,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:347,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:348,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:349,1
    - Dst: jhash_2words
      Src: /src/frr/bgpd/bgp_updgrp.c:352,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:355,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:355,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:356,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:360,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:360,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:361,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:366,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:366,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:367,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:372,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:372,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:373,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:378,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:378,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:379,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:384,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:384,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:385,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:389,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:389,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:390,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:394,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:397,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:398,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:399,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:408,1
    - Dst: peer_afi_active_nego
      Src: /src/frr/bgpd/bgp_updgrp.c:409,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:418,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:421,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:422,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:422,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:422,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:428,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:433,1
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_updgrp.c:436,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_updgrp.c:438,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_updgrp.c:438,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_updgrp.c:438,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_updgrp.c:445,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:446,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:450,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:451,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:454,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:455,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:459,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:463,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:463,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:465,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:468,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:469,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:471,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:472,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:474,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:475,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:477,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:478,1
    - Dst: ADVERTISE_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:480,1
    - Dst: ADVERTISE_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:480,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:483,1
    - Dst: peer_afi_active_nego
      Src: /src/frr/bgpd/bgp_updgrp.c:490,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:491,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:493,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:494,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:496,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:498,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:500,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:503,1
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_updgrp.c:505,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:507,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 57
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 510
    functionName: updgrp_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - peer_afi_active_nego
    - strlen
    - ecommunity_str
    - DISTRIBUTE_OUT_NAME
    - FILTER_LIST_OUT_NAME
    - CHECK_FLAG
    - ROUTE_MAP_OUT_NAME
    - ADVERTISE_MAP_NAME
    - PREFIX_LIST_OUT_NAME
    - jhash_1word
    - zlog_debug
    - bgp_debug_neighbor_events
    - jhash
    - jhash_2words
    - UNSUPPRESS_MAP_NAME
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int updgrp_hash_key_make(const void *p)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:584,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:590,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:597,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:604,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:611,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:617,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:629,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:637,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:638,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_updgrp.c:640,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 56
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 644
    functionName: updgrp_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - strcmp
    - sockunion_same
    linkageType: ''
    returnType: bool
    signature: bool updgrp_hash_cmp(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:649,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:653,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:655,1
    - Dst: update_group_adjust_peer_afs
      Src: /src/frr/bgpd/bgp_updgrp.c:657,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - peer
    - set
    argTypes:
    - struct peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 658
    functionName: peer_lonesoul_or_not
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - UNSET_FLAG
    - update_group_adjust_peer_afs
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void peer_lonesoul_or_not(struct peer *peer, int set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_last
      Src: /src/frr/bgpd/bgp_updgrp.c:670,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 673
    functionName: subgroup_total_packets_enqueued
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - SUBGRP_PKTQ
    - bpacket_queue_last
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int subgroup_total_packets_enqueued(struct update_subgroup
      *subgrp)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:682,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:720,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_updgrp.c:722,1
    - Dst: time
      Src: /src/frr/bgpd/bgp_updgrp.c:724,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:725,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:726,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_updgrp.c:727,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_updgrp.c:728,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:729,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_updgrp.c:731,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_updgrp.c:732,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_updgrp.c:733,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_updgrp.c:734,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:736,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:737,1
    - Dst: timestamp_string
      Src: /src/frr/bgpd/bgp_updgrp.c:737,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_updgrp.c:743,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:746,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:751,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:754,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:759,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_updgrp.c:761,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:763,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_updgrp.c:765,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:767,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:770,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:772,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:776,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_updgrp.c:783,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:788,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:789,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_updgrp.c:791,1
    - Dst: time
      Src: /src/frr/bgpd/bgp_updgrp.c:793,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:794,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:795,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_updgrp.c:797,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_updgrp.c:798,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:799,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:802,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:803,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:805,1
    - Dst: timestamp_string
      Src: /src/frr/bgpd/bgp_updgrp.c:806,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:812,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:815,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:819,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:823,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:831,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:832,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:834,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:836,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:838,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:840,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:842,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:845,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:848,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:850,1
    - Dst: UPDGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp.c:851,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:853,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:855,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:856,1
    - Dst: bpacket_queue_length
      Src: /src/frr/bgpd/bgp_updgrp.c:858,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:858,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:859,1
    - Dst: subgroup_total_packets_enqueued
      Src: /src/frr/bgpd/bgp_updgrp.c:861,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:862,1
    - Dst: bpacket_queue_hwm_length
      Src: /src/frr/bgpd/bgp_updgrp.c:864,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:864,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:865,1
    - Dst: subgroup_total_packets_enqueued
      Src: /src/frr/bgpd/bgp_updgrp.c:867,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:868,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:870,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_updgrp.c:872,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:874,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:877,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:879,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:881,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:883,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:885,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:887,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:889,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:891,1
    - Dst: UPDGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp.c:892,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:895,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:897,1
    - Dst: bpacket_queue_length
      Src: /src/frr/bgpd/bgp_updgrp.c:898,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:898,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:899,1
    - Dst: subgroup_total_packets_enqueued
      Src: /src/frr/bgpd/bgp_updgrp.c:900,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:901,1
    - Dst: bpacket_queue_hwm_length
      Src: /src/frr/bgpd/bgp_updgrp.c:902,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:902,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:903,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:905,1
    - Dst: advertise_list_is_empty
      Src: /src/frr/bgpd/bgp_updgrp.c:906,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:909,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:914,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_updgrp.c:919,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_updgrp.c:922,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_updgrp.c:924,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:926,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:929,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:930,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:931,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_updgrp.c:937,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:941,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_updgrp.c:942,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 137
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 675
    functionDepth: 2
    functionLinenumber: 675
    functionLinenumberEnd: 947
    functionName: update_group_show_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - safi2str
    - timestamp_string
    - afi2str
    - json_object_string_add
    - json_object_boolean_add
    - ctime
    - SUBGRP_FOREACH_PEER
    - UPDGRP_INST
    - advertise_list_is_empty
    - UPDGRP_PEER
    - vty_out
    - monotime
    - json_object_int_add
    - SUBGRP_PKTQ
    - json_object_new_string
    - bpacket_queue_length
    - json_object_new_object
    - json_object_new_array
    - json_object_object_addf
    - subgroup_total_packets_enqueued
    - json_object_array_add
    - CHECK_FLAG
    - json_object_object_add
    - bpacket_queue_hwm_length
    - time
    linkageType: ''
    returnType: int
    signature: int update_group_show_walkcb(struct update_group *updgrp, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 705
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:788,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:789,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_updgrp.c:791,1
    - Dst: time
      Src: /src/frr/bgpd/bgp_updgrp.c:793,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:794,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:795,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_updgrp.c:797,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_updgrp.c:798,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:799,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:802,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:803,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:805,1
    - Dst: timestamp_string
      Src: /src/frr/bgpd/bgp_updgrp.c:806,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:812,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:815,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:819,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:823,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:831,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:832,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:834,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:836,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:838,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:840,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:842,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:845,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:848,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:850,1
    - Dst: UPDGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp.c:851,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:853,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:855,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:856,1
    - Dst: bpacket_queue_length
      Src: /src/frr/bgpd/bgp_updgrp.c:858,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:858,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:859,1
    - Dst: subgroup_total_packets_enqueued
      Src: /src/frr/bgpd/bgp_updgrp.c:861,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:862,1
    - Dst: bpacket_queue_hwm_length
      Src: /src/frr/bgpd/bgp_updgrp.c:864,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:864,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:865,1
    - Dst: subgroup_total_packets_enqueued
      Src: /src/frr/bgpd/bgp_updgrp.c:867,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:868,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_updgrp.c:870,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_updgrp.c:872,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:874,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:877,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:879,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:881,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:883,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:885,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:887,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:889,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:891,1
    - Dst: UPDGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp.c:892,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:895,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:897,1
    - Dst: bpacket_queue_length
      Src: /src/frr/bgpd/bgp_updgrp.c:898,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:898,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:899,1
    - Dst: subgroup_total_packets_enqueued
      Src: /src/frr/bgpd/bgp_updgrp.c:900,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:901,1
    - Dst: bpacket_queue_hwm_length
      Src: /src/frr/bgpd/bgp_updgrp.c:902,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:902,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:903,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:905,1
    - Dst: advertise_list_is_empty
      Src: /src/frr/bgpd/bgp_updgrp.c:906,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:909,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:914,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_updgrp.c:919,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_updgrp.c:922,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_updgrp.c:924,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:926,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:929,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:930,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:931,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_updgrp.c:937,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 80
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 784
    functionDepth: 2
    functionLinenumber: 784
    functionLinenumberEnd: 938
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - timestamp_string
    - json_object_string_add
    - json_object_boolean_add
    - ctime
    - SUBGRP_FOREACH_PEER
    - UPDGRP_INST
    - advertise_list_is_empty
    - vty_out
    - monotime
    - json_object_int_add
    - SUBGRP_PKTQ
    - json_object_new_string
    - bpacket_queue_length
    - json_object_new_object
    - json_object_new_array
    - subgroup_total_packets_enqueued
    - json_object_array_add
    - CHECK_FLAG
    - json_object_object_add
    - bpacket_queue_hwm_length
    - time
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_updgrp.c:922,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_updgrp.c:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 925
    functionName: SUBGRP_FOREACH_PEER
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 2
    functionsReached:
    - json_object_new_string
    - json_object_array_add
    linkageType: ''
    returnType: void
    signature: void SUBGRP_FOREACH_PEER (subgrp, paf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:964,1
    - Dst: bpacket_queue_show_vty
      Src: /src/frr/bgpd/bgp_updgrp.c:966,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:966,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 969
    functionName: updgrp_show_packet_queue_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - SUBGRP_PKTQ
    - bpacket_queue_show_vty
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int updgrp_show_packet_queue_walkcb(struct update_group *updgrp,\n\t\t\t\t\t
      \  void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:964,1
    - Dst: bpacket_queue_show_vty
      Src: /src/frr/bgpd/bgp_updgrp.c:966,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:966,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 967
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - SUBGRP_PKTQ
    - bpacket_queue_show_vty
    - vty_out
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:980,1
    - Dst: update_group_af_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - vty
    - id
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct vty*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 986
    functionName: update_group_show_packet_queue
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - memset
    - update_group_af_walk
    linkageType: ''
    returnType: void
    signature: "void update_group_show_packet_queue(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\t    struct vty *vty, uint64_t id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_updgrp.c:994,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:994,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:997,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:998,1
    - Dst: peer2_updgrp_copy
      Src: /src/frr/bgpd/bgp_updgrp.c:1000,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_updgrp.c:1002,1
    - Dst: conf_release
      Src: /src/frr/bgpd/bgp_updgrp.c:1003,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - paf
    argTypes:
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 988
    functionDepth: 3
    functionLinenumber: 988
    functionLinenumberEnd: 1005
    functionName: update_group_find
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - peer_established
    - PAF_PEER
    - memset
    - conf_release
    - peer2_updgrp_copy
    - hash_lookup
    linkageType: ''
    returnType: struct update_group
    signature: struct update_group *update_group_find(struct peer_af *paf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:1013,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:1014,1
    - Dst: peer2_updgrp_copy
      Src: /src/frr/bgpd/bgp_updgrp.c:1016,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_updgrp.c:1018,1
    - Dst: update_group_checkin
      Src: /src/frr/bgpd/bgp_updgrp.c:1020,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1022,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1023,1
    - Dst: UPDGRP_GLOBAL_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1025,1
    - Dst: conf_release
      Src: /src/frr/bgpd/bgp_updgrp.c:1027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - paf
    argTypes:
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1007
    functionDepth: 3
    functionLinenumber: 1007
    functionLinenumberEnd: 1029
    functionName: update_group_create
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_group_checkin
    - memset
    - conf_release
    - peer2_updgrp_copy
    - zlog_debug
    - UPDGRP_GLOBAL_STAT
    - BGP_DEBUG
    - hash_get
    linkageType: ''
    returnType: struct update_group
    signature: struct update_group *update_group_create(struct peer_af *paf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1033,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1034,1
    - Dst: UPDGRP_GLOBAL_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1036,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_updgrp.c:1038,1
    - Dst: conf_release
      Src: /src/frr/bgpd/bgp_updgrp.c:1039,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:1041,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:1043,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:1045,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:1046,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - updgrp
    argTypes:
    - struct update_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1047
    functionName: update_group_delete
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - conf_release
    - zlog_debug
    - UPDGRP_GLOBAL_STAT
    - BGP_DEBUG
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void update_group_delete(struct update_group *updgrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/bgpd/bgp_updgrp.c:1055,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - updgrp
    - subgrp
    argTypes:
    - struct update_group*
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1049
    functionDepth: 0
    functionLinenumber: 1049
    functionLinenumberEnd: 1057
    functionName: update_group_add_subgroup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - LIST_INSERT_HEAD
    linkageType: ''
    returnType: void
    signature: "void update_group_add_subgroup(struct update_group *updgrp,\n\t\t\t\t
      \     struct update_subgroup *subgrp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LIST_REMOVE
      Src: /src/frr/bgpd/bgp_updgrp.c:1065,1
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_updgrp.c:1067,1
    - Dst: update_group_delete
      Src: /src/frr/bgpd/bgp_updgrp.c:1068,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - updgrp
    - subgrp
    argTypes:
    - struct update_group*
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1059
    functionDepth: 3
    functionLinenumber: 1059
    functionLinenumberEnd: 1069
    functionName: update_group_remove_subgroup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_group_delete
    - LIST_REMOVE
    - LIST_EMPTY
    linkageType: ''
    returnType: void
    signature: "void update_group_remove_subgroup(struct update_group *updgrp,\n\t\t\t\t\t
      struct update_subgroup *subgrp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_updgrp.c:1076,1
    - Dst: update_subgroup_checkin
      Src: /src/frr/bgpd/bgp_updgrp.c:1077,1
    - Dst: UPDGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp.c:1078,1
    - Dst: sync_init
      Src: /src/frr/bgpd/bgp_updgrp.c:1079,1
    - Dst: bpacket_queue_init
      Src: /src/frr/bgpd/bgp_updgrp.c:1080,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:1080,1
    - Dst: bpacket_queue_add
      Src: /src/frr/bgpd/bgp_updgrp.c:1081,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:1081,1
    - Dst: TAILQ_INIT
      Src: /src/frr/bgpd/bgp_updgrp.c:1082,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1083,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1084,1
    - Dst: update_group_add_subgroup
      Src: /src/frr/bgpd/bgp_updgrp.c:1087,1
    - Dst: UPDGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1089,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - updgrp
    argTypes:
    - struct update_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1071
    functionDepth: 2
    functionLinenumber: 1071
    functionLinenumberEnd: 1092
    functionName: update_subgroup_create
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_subgroup_checkin
    - bpacket_queue_init
    - UPDGRP_INCR_STAT
    - XCALLOC
    - bpacket_queue_add
    - sync_init
    - SUBGRP_PKTQ
    - zlog_debug
    - update_group_add_subgroup
    - BGP_DEBUG
    - UPDGRP_INST
    - TAILQ_INIT
    linkageType: ''
    returnType: struct update_subgroup
    signature: 'struct update_subgroup *

      update_subgroup_create(struct update_group *updgrp)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1100,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_updgrp.c:1102,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_updgrp.c:1103,1
    - Dst: bpacket_queue_cleanup
      Src: /src/frr/bgpd/bgp_updgrp.c:1105,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:1105,1
    - Dst: subgroup_clear_table
      Src: /src/frr/bgpd/bgp_updgrp.c:1106,1
    - Dst: sync_delete
      Src: /src/frr/bgpd/bgp_updgrp.c:1108,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1110,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1111,1
    - Dst: update_group_remove_subgroup
      Src: /src/frr/bgpd/bgp_updgrp.c:1114,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp.c:1116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1094
    functionDepth: 4
    functionLinenumber: 1094
    functionLinenumberEnd: 1117
    functionName: update_subgroup_delete
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_group_remove_subgroup
    - UPDGRP_INCR_STAT
    - bpacket_queue_cleanup
    - SUBGRP_PKTQ
    - zlog_debug
    - EVENT_OFF
    - XFREE
    - BGP_DEBUG
    - subgroup_clear_table
    - sync_delete
    linkageType: ''
    returnType: void
    signature: void update_subgroup_delete(struct update_subgroup *subgrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - to
    - from
    argTypes:
    - struct update_subgroup*
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1119
    functionDepth: 0
    functionLinenumber: 1119
    functionLinenumberEnd: 1126
    functionName: update_subgroup_inherit_info
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_inherit_info(struct update_subgroup *to,\n\t\t\t\t
      \ struct update_subgroup *from)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_updgrp.c:1140,1
    - Dst: update_subgroup_delete
      Src: /src/frr/bgpd/bgp_updgrp.c:1143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1135
    functionDepth: 5
    functionLinenumber: 1135
    functionLinenumberEnd: 1146
    functionName: update_subgroup_check_delete
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_subgroup_delete
    - LIST_EMPTY
    linkageType: ''
    returnType: bool
    signature: bool update_subgroup_check_delete(struct update_subgroup *subgrp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/bgpd/bgp_updgrp.c:1163,1
    - Dst: bgp_debug_peer_updout_enabled
      Src: /src/frr/bgpd/bgp_updgrp.c:1167,1
    - Dst: UPDGRP_PEER_DBG_EN
      Src: /src/frr/bgpd/bgp_updgrp.c:1168,1
    - Dst: SUBGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1171,1
    - Dst: bpacket_queue_first
      Src: /src/frr/bgpd/bgp_updgrp.c:1174,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:1174,1
    - Dst: bpacket_queue_last
      Src: /src/frr/bgpd/bgp_updgrp.c:1182,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:1182,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp.c:1183,1
    - Dst: bpacket_add_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:1186,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1188,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - subgrp
    - paf
    - send_enqueued_pkts
    argTypes:
    - struct update_subgroup*
    - struct peer_af*
    - int
    assertStmts:
    - condition: (pkt->buffer == NULL)
      pos:
        line_end: 1182
        line_start: 1182
        source_file: /src/frr/bgpd/bgp_updgrp.c
    constantsTouched: []
    func_position:
      end: 1191
      start: 1154
    functionDepth: 1
    functionLinenumber: 1154
    functionLinenumberEnd: 1191
    functionName: update_subgroup_add_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - bpacket_add_peer
    - bpacket_queue_last
    - UPDGRP_PEER_DBG_EN
    - LIST_INSERT_HEAD
    - bgp_debug_peer_updout_enabled
    - SUBGRP_PKTQ
    - zlog_debug
    - BGP_DEBUG
    - bpacket_queue_first
    - assert
    - SUBGRP_INCR_STAT
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_add_peer(struct update_subgroup *subgrp,\n\t\t\t\t
      \    struct peer_af *paf,\n\t\t\t\t     int send_enqueued_pkts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp.c:1205,1
    - Dst: bgp_debug_peer_updout_enabled
      Src: /src/frr/bgpd/bgp_updgrp.c:1207,1
    - Dst: UPDGRP_PEER_DBG_DIS
      Src: /src/frr/bgpd/bgp_updgrp.c:1208,1
    - Dst: bpacket_queue_remove_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:1211,1
    - Dst: LIST_REMOVE
      Src: /src/frr/bgpd/bgp_updgrp.c:1212,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1216,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1217,1
    - Dst: SUBGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1220,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - subgrp
    - paf
    argTypes:
    - struct update_subgroup*
    - struct peer_af*
    assertStmts:
    - condition: (subgrp && paf && subgrp->update_group)
      pos:
        line_end: 1204
        line_start: 1204
        source_file: /src/frr/bgpd/bgp_updgrp.c
    constantsTouched: []
    func_position:
      end: 1221
      start: 1202
    functionDepth: 1
    functionLinenumber: 1202
    functionLinenumberEnd: 1221
    functionName: update_subgroup_remove_peer_internal
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - bpacket_queue_remove_peer
    - bgp_debug_peer_updout_enabled
    - zlog_debug
    - BGP_DEBUG
    - UPDGRP_PEER_DBG_DIS
    - LIST_REMOVE
    - assert
    - SUBGRP_INCR_STAT
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_remove_peer_internal(struct update_subgroup *subgrp,\n\t\t\t\t\t\t
      struct peer_af *paf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: update_subgroup_remove_peer_internal
      Src: /src/frr/bgpd/bgp_updgrp.c:1232,1
    - Dst: update_subgroup_check_delete
      Src: /src/frr/bgpd/bgp_updgrp.c:1234,1
    - Dst: update_subgroup_check_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:1242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - subgrp
    - paf
    argTypes:
    - struct update_subgroup*
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1226
    functionDepth: 6
    functionLinenumber: 1226
    functionLinenumberEnd: 1243
    functionName: update_subgroup_remove_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_subgroup_check_delete
    - update_subgroup_check_merge
    - update_subgroup_remove_peer_internal
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_remove_peer(struct update_subgroup *subgrp,\n\t\t\t\t
      struct peer_af *paf)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp.c:1252,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_updgrp.c:1257,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:1257,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1262,1
    - Dst: update_subgroup_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1270,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - updgrp
    - paf
    argTypes:
    - struct update_group*
    - struct peer_af*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1251
        line_start: 1251
        source_file: /src/frr/bgpd/bgp_updgrp.c
    constantsTouched: []
    func_position:
      end: 1277
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1277
    functionName: update_subgroup_find
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - peer_established
    - PAF_PEER
    - CHECK_FLAG
    - update_subgroup_needs_refresh
    - assert
    linkageType: ''
    returnType: struct update_subgroup
    signature: "struct update_subgroup *update_subgroup_find(struct update_group *updgrp,\n\t\t\t\t\t\t
      \   struct peer_af *paf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1262,1
    - Dst: update_subgroup_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1270,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1260
    functionDepth: 1
    functionLinenumber: 1260
    functionLinenumberEnd: 1274
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - update_subgroup_needs_refresh
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_is_empty
      Src: /src/frr/bgpd/bgp_updgrp.c:1292,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:1292,1
    - Dst: advertise_list_is_empty
      Src: /src/frr/bgpd/bgp_updgrp.c:1298,1
    - Dst: update_subgroup_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1285
    functionDepth: 1
    functionLinenumber: 1285
    functionLinenumberEnd: 1310
    functionName: update_subgroup_ready_for_merge
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - SUBGRP_PKTQ
    - bpacket_queue_is_empty
    - advertise_list_is_empty
    - update_subgroup_needs_refresh
    linkageType: ''
    returnType: bool
    signature: bool update_subgroup_ready_for_merge(struct update_subgroup *subgrp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1332,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1333,1
    - Dst: update_subgroup_ready_for_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:1339,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - subgrp
    - target
    argTypes:
    - struct update_subgroup*
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1318
    functionDepth: 2
    functionLinenumber: 1318
    functionLinenumberEnd: 1340
    functionName: update_subgroup_can_merge_into
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - update_subgroup_ready_for_merge
    linkageType: ''
    returnType: int
    signature: "int update_subgroup_can_merge_into(struct update_subgroup *subgrp,\n\t\t\t\t\t
      \ struct update_subgroup *target)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp.c:1355,1
    - Dst: LIST_FIRST
      Src: /src/frr/bgpd/bgp_updgrp.c:1360,1
    - Dst: update_subgroup_remove_peer_internal
      Src: /src/frr/bgpd/bgp_updgrp.c:1364,1
    - Dst: update_subgroup_add_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:1372,1
    - Dst: SUBGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1375,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1377,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1378,1
    - Dst: update_subgroup_check_delete
      Src: /src/frr/bgpd/bgp_updgrp.c:1383,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp.c:1384,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - subgrp
    - target
    - reason
    argTypes:
    - struct update_subgroup*
    - struct update_subgroup*
    - char*
    assertStmts:
    - condition: (subgrp->adj_count == target->adj_count)
      pos:
        line_end: 1354
        line_start: 1354
        source_file: /src/frr/bgpd/bgp_updgrp.c
    - condition: (result)
      pos:
        line_end: 1383
        line_start: 1383
        source_file: /src/frr/bgpd/bgp_updgrp.c
    constantsTouched: []
    func_position:
      end: 1385
      start: 1347
    functionDepth: 6
    functionLinenumber: 1347
    functionLinenumberEnd: 1385
    functionName: update_subgroup_merge
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - LIST_FIRST
    - update_subgroup_add_peer
    - update_subgroup_check_delete
    - zlog_debug
    - BGP_DEBUG
    - update_subgroup_remove_peer_internal
    - assert
    - SUBGRP_INCR_STAT
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_merge(struct update_subgroup *subgrp,\n\t\t\t\t
      \ struct update_subgroup *target,\n\t\t\t\t  const char *reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: update_subgroup_ready_for_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:1400,1
    - Dst: UPDGRP_FOREACH_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp.c:1406,1
    - Dst: update_subgroup_can_merge_into
      Src: /src/frr/bgpd/bgp_updgrp.c:1407,1
    - Dst: update_subgroup_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:1414,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - subgrp
    - reason
    argTypes:
    - struct update_subgroup*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1395
    functionDepth: 7
    functionLinenumber: 1395
    functionLinenumberEnd: 1416
    functionName: update_subgroup_check_merge
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 1
    functionsReached:
    - update_subgroup_can_merge_into
    - UPDGRP_FOREACH_SUBGRP
    - update_subgroup_merge
    - update_subgroup_ready_for_merge
    linkageType: ''
    returnType: bool
    signature: "bool update_subgroup_check_merge(struct update_subgroup *subgrp,\n\t\t\t\t
      const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_updgrp.c:1425,1
    - Dst: update_subgroup_check_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1421
    functionDepth: 8
    functionLinenumber: 1421
    functionLinenumberEnd: 1430
    functionName: update_subgroup_merge_check_thread_cb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_subgroup_check_merge
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void update_subgroup_merge_check_thread_cb(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: update_subgroup_ready_for_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:1448,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/bgp_updgrp.c:1452,1
    - Dst: SUBGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - subgrp
    - force
    argTypes:
    - struct update_subgroup*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1442
    functionDepth: 2
    functionLinenumber: 1442
    functionLinenumberEnd: 1458
    functionName: update_subgroup_trigger_merge_check
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - SUBGRP_INCR_STAT
    - update_subgroup_ready_for_merge
    linkageType: ''
    returnType: bool
    signature: "bool update_subgroup_trigger_merge_check(struct update_subgroup *subgrp,\n\t\t\t\t\t
      int force)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_adj_out_alloc
      Src: /src/frr/bgpd/bgp_updgrp.c:1476,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_updgrp.c:1479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - source
    - dest
    argTypes:
    - struct update_subgroup*
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1467
    functionDepth: 1
    functionLinenumber: 1467
    functionLinenumberEnd: 1483
    functionName: update_subgroup_copy_adj_out
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - bgp_adj_out_alloc
    - bgp_attr_intern
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_copy_adj_out(struct update_subgroup *source,\n\t\t\t\t\t
      struct update_subgroup *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_adj_out_alloc
      Src: /src/frr/bgpd/bgp_updgrp.c:1476,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_updgrp.c:1479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1472
    functionDepth: 1
    functionLinenumber: 1472
    functionLinenumberEnd: 1480
    functionName: SUBGRP_FOREACH_ADJ
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - bgp_adj_out_alloc
    - bgp_attr_intern
    linkageType: ''
    returnType: void
    signature: void SUBGRP_FOREACH_ADJ (source, aout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_add
      Src: /src/frr/bgpd/bgp_updgrp.c:1500,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp.c:1500,1
    - Dst: stream_dup
      Src: /src/frr/bgpd/bgp_updgrp.c:1500,1
    - Dst: bpacket_next
      Src: /src/frr/bgpd/bgp_updgrp.c:1503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - dest
    - pkt
    argTypes:
    - struct update_subgroup*
    - struct bpacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1493
    functionDepth: 1
    functionLinenumber: 1493
    functionLinenumberEnd: 1507
    functionName: update_subgroup_copy_packets
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - bpacket_queue_add
    - stream_dup
    - bpacket_next
    - SUBGRP_PKTQ
    linkageType: ''
    returnType: int
    signature: "int update_subgroup_copy_packets(struct update_subgroup *dest,\n\t\t\t\t\tstruct
      bpacket *pkt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:1515,1
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1516,1
    - Dst: UPDGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1516,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1518,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:1519,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1519,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:1520,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgp_updgrp.c:1520,1
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1521,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - updgrp
    - name
    argTypes:
    - struct update_group*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1525
    functionName: updgrp_prefix_list_update
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - PREFIX_LIST_OUT
    - strcmp
    - UPDGRP_SAFI
    - PREFIX_LIST_OUT_NAME
    - UPDGRP_PEER
    - UPDGRP_AFI
    linkageType: ''
    returnType: bool
    signature: "bool updgrp_prefix_list_update(struct update_group *updgrp,\n\t\t\t\t
      \     const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:1533,1
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1534,1
    - Dst: UPDGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1534,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1536,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:1537,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1537,1
    - Dst: FILTER_LIST_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:1538,1
    - Dst: as_list_lookup
      Src: /src/frr/bgpd/bgp_updgrp.c:1539,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1539,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - updgrp
    - name
    argTypes:
    - struct update_group*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1543
    functionName: updgrp_filter_list_update
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - as_list_lookup
    - strcmp
    - UPDGRP_SAFI
    - FILTER_LIST_OUT_NAME
    - UPDGRP_PEER
    - UPDGRP_AFI
    - FILTER_LIST_OUT
    linkageType: ''
    returnType: bool
    signature: "bool updgrp_filter_list_update(struct update_group *updgrp,\n\t\t\t\t
      \     const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:1551,1
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1552,1
    - Dst: UPDGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1552,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1554,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:1555,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1555,1
    - Dst: DISTRIBUTE_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:1556,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_updgrp.c:1556,1
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1557,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - updgrp
    - name
    argTypes:
    - struct update_group*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1545
    functionDepth: 1
    functionLinenumber: 1545
    functionLinenumberEnd: 1561
    functionName: updgrp_distribute_list_update
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - DISTRIBUTE_OUT_NAME
    - strcmp
    - UPDGRP_SAFI
    - access_list_lookup
    - UPDGRP_PEER
    - UPDGRP_AFI
    - DISTRIBUTE_OUT
    linkageType: ''
    returnType: bool
    signature: "bool updgrp_distribute_list_update(struct update_group *updgrp,\n\t\t\t\t\t
      \ const char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:1572,1
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1573,1
    - Dst: UPDGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp.c:1574,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1577,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:1578,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1578,1
    - Dst: ROUTE_MAP_OUT
      Src: /src/frr/bgpd/bgp_updgrp.c:1579,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_updgrp.c:1579,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1584,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:1585,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_updgrp.c:1585,1
    - Dst: UNSUPPRESS_MAP
      Src: /src/frr/bgpd/bgp_updgrp.c:1586,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_updgrp.c:1586,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_updgrp.c:1592,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_updgrp.c:1594,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - updgrp
    - name
    - def_rmap_changed
    argTypes:
    - struct update_group*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1563
    functionDepth: 1
    functionLinenumber: 1563
    functionLinenumberEnd: 1599
    functionName: updgrp_route_map_update
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - ROUTE_MAP_OUT
    - strcmp
    - UNSUPPRESS_MAP
    - route_map_lookup_by_name
    - UPDGRP_SAFI
    - UNSUPPRESS_MAP_NAME
    - ROUTE_MAP_OUT_NAME
    - UPDGRP_PEER
    - UPDGRP_AFI
    linkageType: ''
    returnType: int
    signature: "int updgrp_route_map_update(struct update_group *updgrp,\n\t\t\t\t
      \  const char *name, int *def_rmap_changed)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: updgrp_route_map_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1620,1
    - Dst: updgrp_filter_list_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1624,1
    - Dst: updgrp_prefix_list_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1627,1
    - Dst: updgrp_distribute_list_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1631,1
    - Dst: update_subgroup_set_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1656,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1665,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1668,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1669,1
    - Dst: subgroup_announce_route
      Src: /src/frr/bgpd/bgp_updgrp.c:1673,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1676,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1677,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_updgrp.c:1681,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1688,1
    - Dst: subgroup_default_originate
      Src: /src/frr/bgpd/bgp_updgrp.c:1690,1
    - Dst: subgroup_default_originate
      Src: /src/frr/bgpd/bgp_updgrp.c:1697,1
    - Dst: update_subgroup_set_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1700,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1608
    functionDepth: 2
    functionLinenumber: 1608
    functionLinenumberEnd: 1703
    functionName: updgrp_policy_update_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - subgroup_announce_route
    - updgrp_prefix_list_update
    - bgp_debug_update
    - updgrp_filter_list_update
    - updgrp_distribute_list_update
    - update_subgroup_set_needs_refresh
    - route_map_lookup_by_name
    - SET_FLAG
    - zlog_debug
    - UNSET_FLAG
    - subgroup_default_originate
    - updgrp_route_map_update
    linkageType: ''
    returnType: int
    signature: int updgrp_policy_update_walkcb(struct update_group *updgrp, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: update_subgroup_set_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1655
    functionDepth: 1
    functionLinenumber: 1655
    functionLinenumberEnd: 1657
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 1
    functionsReached:
    - update_subgroup_set_needs_refresh
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1665,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1668,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1669,1
    - Dst: subgroup_announce_route
      Src: /src/frr/bgpd/bgp_updgrp.c:1673,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp.c:1676,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1677,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_updgrp.c:1681,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1688,1
    - Dst: subgroup_default_originate
      Src: /src/frr/bgpd/bgp_updgrp.c:1690,1
    - Dst: subgroup_default_originate
      Src: /src/frr/bgpd/bgp_updgrp.c:1697,1
    - Dst: update_subgroup_set_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1700,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1661
    functionDepth: 1
    functionLinenumber: 1661
    functionLinenumberEnd: 1701
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 1
    functionsReached:
    - subgroup_announce_route
    - bgp_debug_update
    - update_subgroup_set_needs_refresh
    - route_map_lookup_by_name
    - SET_FLAG
    - zlog_debug
    - UNSET_FLAG
    - subgroup_default_originate
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1705
    functionDepth: 0
    functionLinenumber: 1705
    functionLinenumberEnd: 1711
    functionName: update_group_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int update_group_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_FOREACH_SUBGRP_SAFE
      Src: /src/frr/bgpd/bgp_updgrp.c:1720,1
    - Dst: update_subgroup_check_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:1721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1713
    functionDepth: 8
    functionLinenumber: 1713
    functionLinenumberEnd: 1723
    functionName: update_group_periodic_merge_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - UPDGRP_FOREACH_SUBGRP_SAFE
    - update_subgroup_check_merge
    linkageType: ''
    returnType: int
    signature: "int update_group_periodic_merge_walkcb(struct update_group *updgrp,\n\t\t\t\t\t
      \     void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:1750,1
    - Dst: update_group_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:1757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - bgp
    - ptype
    - pname
    - route_update
    - start_event
    argTypes:
    - struct bgp*
    - enum bgp_policy_type
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1744
    functionDepth: 0
    functionLinenumber: 1744
    functionLinenumberEnd: 1758
    functionName: update_group_policy_update
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - memset
    - update_group_walk
    linkageType: ''
    returnType: void
    signature: "void update_group_policy_update(struct bgp *bgp, enum bgp_policy_type
      ptype,\n\t\t\t\tconst char *pname, bool route_update,\n\t\t\t\tint start_event)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_peer_updout_enabled
      Src: /src/frr/bgpd/bgp_updgrp.c:1789,1
    - Dst: UPDGRP_PEER_DBG_DIS
      Src: /src/frr/bgpd/bgp_updgrp.c:1790,1
    - Dst: update_group_remove_subgroup
      Src: /src/frr/bgpd/bgp_updgrp.c:1793,1
    - Dst: update_group_add_subgroup
      Src: /src/frr/bgpd/bgp_updgrp.c:1795,1
    - Dst: bgp_debug_peer_updout_enabled
      Src: /src/frr/bgpd/bgp_updgrp.c:1797,1
    - Dst: UPDGRP_PEER_DBG_EN
      Src: /src/frr/bgpd/bgp_updgrp.c:1798,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1800,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1801,1
    - Dst: update_subgroup_set_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1812,1
    - Dst: SUBGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1814,1
    - Dst: update_subgroup_create
      Src: /src/frr/bgpd/bgp_updgrp.c:1822,1
    - Dst: update_subgroup_inherit_info
      Src: /src/frr/bgpd/bgp_updgrp.c:1823,1
    - Dst: update_subgroup_copy_adj_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1831,1
    - Dst: update_subgroup_copy_packets
      Src: /src/frr/bgpd/bgp_updgrp.c:1832,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1834,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1835,1
    - Dst: SUBGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp.c:1839,1
    - Dst: update_subgroup_set_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp.c:1845,1
    - Dst: update_subgroup_remove_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:1850,1
    - Dst: update_subgroup_add_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:1852,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - paf
    - updgrp
    argTypes:
    - struct peer_af*
    - struct update_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1766
    functionDepth: 7
    functionLinenumber: 1766
    functionLinenumberEnd: 1853
    functionName: update_subgroup_split_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - update_subgroup_remove_peer
    - UPDGRP_PEER_DBG_EN
    - update_subgroup_add_peer
    - update_subgroup_copy_adj_out
    - bgp_debug_peer_updout_enabled
    - update_subgroup_set_needs_refresh
    - update_subgroup_create
    - zlog_debug
    - update_group_add_subgroup
    - update_subgroup_copy_packets
    - update_subgroup_inherit_info
    - BGP_DEBUG
    - UPDGRP_PEER_DBG_DIS
    - update_group_remove_subgroup
    - SUBGRP_INCR_STAT
    linkageType: ''
    returnType: void
    signature: "void update_subgroup_split_peer(struct peer_af *paf,\n\t\t\t\tstruct
      update_group *updgrp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AF_FOREACH
      Src: /src/frr/bgpd/bgp_updgrp.c:1859,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_updgrp.c:1861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1863
    functionName: update_bgp_group_init
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - hash_create
    - AF_FOREACH
    linkageType: ''
    returnType: void
    signature: void update_bgp_group_init(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_free
      Src: /src/frr/bgpd/bgp_updgrp.c:1871,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1875
    functionName: update_bgp_group_free
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - hash_free
    linkageType: ''
    returnType: void
    signature: void update_bgp_group_free(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_free
      Src: /src/frr/bgpd/bgp_updgrp.c:1871,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1874
      start: 1869
    functionDepth: 1
    functionLinenumber: 1869
    functionLinenumberEnd: 1874
    functionName: AF_FOREACH
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 1
    functionsReached:
    - hash_free
    linkageType: ''
    returnType: void
    signature: void AF_FOREACH (afid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:1883,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:1889,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_updgrp.c:1890,1
    - Dst: update_group_af_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:1893,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_updgrp.c:1902,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_updgrp.c:1904,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - bgp
    - afi
    - safi
    - vty
    - subgrp_id
    - uj
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct vty*
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1906
      start: 1877
    functionDepth: 1
    functionLinenumber: 1877
    functionLinenumberEnd: 1906
    functionName: update_group_show
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - memset
    - update_group_af_walk
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void update_group_show(struct bgp *bgp, afi_t afi, safi_t safi, struct
      vty *vty,\n\t\t       uint64_t subgrp_id, bool uj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1915,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1917,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1919,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1921,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1923,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1924,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1926,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1928,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1930,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1932,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp.c:1934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - bgp
    - vty
    argTypes:
    - struct bgp*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1936
      start: 1913
    functionDepth: 1
    functionLinenumber: 1913
    functionLinenumberEnd: 1936
    functionName: update_group_show_stats
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void update_group_show_stats(struct bgp *bgp, struct vty *vty)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:1950,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_updgrp.c:1951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:1955,1
    - Dst: update_group_find
      Src: /src/frr/bgpd/bgp_updgrp.c:1963,1
    - Dst: update_group_create
      Src: /src/frr/bgpd/bgp_updgrp.c:1965,1
    - Dst: update_subgroup_split_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:1983,1
    - Dst: update_subgroup_find
      Src: /src/frr/bgpd/bgp_updgrp.c:1987,1
    - Dst: update_subgroup_create
      Src: /src/frr/bgpd/bgp_updgrp.c:1989,1
    - Dst: update_subgroup_add_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:1991,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp.c:1992,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:1993,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - paf
    argTypes:
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1941
    functionDepth: 8
    functionLinenumber: 1941
    functionLinenumberEnd: 1997
    functionName: update_group_adjust_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - peer_established
    - PAF_PEER
    - update_subgroup_add_peer
    - CHECK_FLAG
    - update_group_find
    - update_subgroup_split_peer
    - update_subgroup_create
    - zlog_debug
    - update_subgroup_find
    - BGP_DEBUG
    - update_group_create
    linkageType: ''
    returnType: void
    signature: void update_group_adjust_peer(struct peer_af *paf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:2004,1
    - Dst: peer_lonesoul_or_not
      Src: /src/frr/bgpd/bgp_updgrp.c:2005,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_updgrp.c:2006,1
    - Dst: bgp_announce_route_all
      Src: /src/frr/bgpd/bgp_updgrp.c:2007,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_updgrp.c:2010,1
    - Dst: peer_lonesoul_or_not
      Src: /src/frr/bgpd/bgp_updgrp.c:2011,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp.c:2026,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_updgrp.c:2027,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:2030,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp.c:2030,1
    - Dst: update_group_af_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:2033,1
    - Dst: afindex
      Src: /src/frr/bgpd/bgp_updgrp.c:2041,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp.c:2045,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:2050,1
    - Dst: update_group_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:2053,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_updgrp.c:2058,1
    - Dst: update_group_af_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:2059,1
    - Dst: update_group_periodic_merge
      Src: /src/frr/bgpd/bgp_updgrp.c:2063,1
    - Dst: update_group_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:2067,1
    - Dst: update_group_default_originate_route_map_walkcb
      Src: /src/frr/bgpd/bgp_updgrp.c:2072,1
    - Dst: UPDGRP_FOREACH_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp.c:2080,1
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:2081,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp.c:2082,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp.c:2083,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:2091,1
    - Dst: subgroup_default_originate
      Src: /src/frr/bgpd/bgp_updgrp.c:2093,1
    - Dst: update_group_refresh_default_originate_route_map
      Src: /src/frr/bgpd/bgp_updgrp.c:2100,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_updgrp.c:2105,1
    - Dst: update_group_walk
      Src: /src/frr/bgpd/bgp_updgrp.c:2106,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_updgrp.c:2108,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgp_updgrp.c:2109,1
    - Dst: peer_af_announce_route
      Src: /src/frr/bgpd/bgp_updgrp.c:2124,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:2145,1
    - Dst: update_subgroup_split_peer
      Src: /src/frr/bgpd/bgp_updgrp.c:2161,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp.c:2164,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp.c:2165,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:2166,1
    - Dst: subgroup_announce_route
      Src: /src/frr/bgpd/bgp_updgrp.c:2170,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:2179,1
    - Dst: bgp_stop_announce_route_timer
      Src: /src/frr/bgpd/bgp_updgrp.c:2183,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp.c:2186,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp.c:2187,1
    - Dst: subgroup_announce_route
      Src: /src/frr/bgpd/bgp_updgrp.c:2191,1
    - Dst: SUBGRP_INCR_STAT_BY
      Src: /src/frr/bgpd/bgp_updgrp.c:2193,1
    - Dst: subgroup_trigger_write
      Src: /src/frr/bgpd/bgp_updgrp.c:2197,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_updgrp.c:2206,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_updgrp.c:2207,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/bgp_updgrp.c:2208,1
    - Dst: update_group_clear_update_dbg
      Src: /src/frr/bgpd/bgp_updgrp.c:2214,1
    - Dst: UPDGRP_PEER_DBG_OFF
      Src: /src/frr/bgpd/bgp_updgrp.c:2216,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_updgrp.c:2221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:2223,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:2224,1
    - Dst: bgp_addpath_capable
      Src: /src/frr/bgpd/bgp_updgrp.c:2228,1
    - Dst: bgp_addpath_tx_path
      Src: /src/frr/bgpd/bgp_updgrp.c:2231,1
    - Dst: bgp_addpath_tx_path
      Src: /src/frr/bgpd/bgp_updgrp.c:2233,1
    - Dst: bgp_check_selected
      Src: /src/frr/bgpd/bgp_updgrp.c:2237,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.c:2240,1
    - Dst: bgp_addpath_capable
      Src: /src/frr/bgpd/bgp_updgrp.c:2241,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 10
    argCount: 2
    argNames:
    - peer
    - set
    argTypes:
    - struct peer*
    - int
    assertStmts:
    - condition: (subgrp && subgrp->update_group)
      pos:
        line_end: 2163
        line_start: 2163
        source_file: /src/frr/bgpd/bgp_updgrp.c
    constantsTouched: []
    func_position:
      end: 2242
      start: 1999
    functionDepth: 8
    functionLinenumber: 1999
    functionLinenumberEnd: 2242
    functionName: update_group_adjust_soloness
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.c
    functionUses: 0
    functionsReached:
    - peer_established
    - bgp_addpath_capable
    - SUBGRP_INST
    - update_group_periodic_merge
    - peer_lonesoul_or_not
    - update_group_af_walk
    - SUBGRP_PEER
    - afindex
    - hash_walk
    - subgroup_default_originate
    - subgroup_trigger_write
    - subgroup_announce_route
    - SUBGRP_FOREACH_PEER
    - memset
    - bgp_debug_update
    - bgp_unlock
    - bgp_check_selected
    - update_group_clear_update_dbg
    - SUBGRP_SAFI
    - update_group_refresh_default_originate_route_map
    - event_add_timer_msec
    - UPDGRP_PEER_DBG_OFF
    - zlog_debug
    - bgp_addpath_encode_tx
    - EVENT_ARG
    - SUBGRP_AFI
    - if
    - peer_af_announce_route
    - assert
    - update_group_walk
    - update_subgroup_split_peer
    - UNSET_FLAG
    - EVENT_OFF
    - bgp_stop_announce_route_timer
    - bgp_addpath_tx_path
    - update_group_default_originate_route_map_walkcb
    - SUBGRP_INCR_STAT_BY
    - bgp_announce_route_all
    - CHECK_FLAG
    - UPDGRP_FOREACH_SUBGRP
    - ALL_LIST_ELEMENTS
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: int
    signature: int update_group_adjust_soloness(struct peer *peer, int set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 16
    functionName: BGP_TIMER_ON
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - P
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 23
    functionName: BGP_EVENT_ADD
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_EVENT_ADD(P, E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 29
    functionName: BGP_EVENT_FLUSH
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_EVENT_FLUSH(P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 42
    functionName: BGP_UPDATE_GROUP_TIMER_ON
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_UPDATE_GROUP_TIMER_ON(T, F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: BGP_PEER_GR_HELPER_ENABLE
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_GR_HELPER_ENABLE(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 70
    functionName: BGP_PEER_GR_ENABLE
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_GR_ENABLE(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 80
    functionName: BGP_PEER_GR_DISABLE
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_GR_DISABLE(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: BGP_PEER_GR_GLOBAL_INHERIT_SET
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_GR_GLOBAL_INHERIT_SET(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: BGP_PEER_GR_GLOBAL_INHERIT_UNSET
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_GR_GLOBAL_INHERIT_UNSET(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: BGP_PEER_GRACEFUL_RESTART_CAPABLE
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_GRACEFUL_RESTART_CAPABLE(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: BGP_PEER_RESTARTING_MODE
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_RESTARTING_MODE(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: BGP_PEER_HELPER_MODE
    functionSourceFile: /src/frr/bgpd/bgp_fsm.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_HELPER_MODE(peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 43
    functionName: bgp_clist_new_seq_get
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64_t
    signature: int64_t bgp_clist_new_seq_get(struct community_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - seq
    argTypes:
    - struct community_list*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: bgp_clist_seq_check
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct community_entry
    signature: "struct community_entry *bgp_clist_seq_check(struct community_list
      *list,\n\t\t\t\t\t\t   int64_t seq)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_clist_hash_key
      Src: /src/frr/bgpd/bgp_clist.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 66
    functionName: bgp_clist_hash_key_community_list
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - bgp_clist_hash_key
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_clist_hash_key_community_list(const void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_clist.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a1
    - a2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: bgp_clist_hash_cmp_community_list
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_clist_hash_cmp_community_list(const void *a1, const void *a2)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ch
    - master
    argTypes:
    - struct community_list_handler*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: community_list_master_lookup
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct community_list_master
    signature: 'struct community_list_master *

      community_list_master_lookup(struct community_list_handler *ch, int master)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_clist.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: community_entry_new
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct community_entry
    signature: struct community_entry *community_entry_new(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_clist.c:112,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_clist.c:116,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:121,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_clist.c:123,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:128,1
    - Dst: bgp_regex_free
      Src: /src/frr/bgpd/bgp_clist.c:130,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:134,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct community_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 135
    functionName: community_entry_free
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_free
    - bgp_regex_free
    - lcommunity_free
    - XFREE
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void community_entry_free(struct community_entry *entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_clist.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: community_list_new
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct community_list
    signature: struct community_list *community_list_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:146,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: community_list_free
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void community_list_free(struct community_list *list)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:162,1
    - Dst: community_list_new::community_list_new
      Src: /src/frr/bgpd/bgp_clist.c:167,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:168,1
    - Dst: bgp_clist_hash_key_community_list
      Src: /src/frr/bgpd/bgp_clist.c:169,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_clist.c:172,1
    - Dst: hash_alloc_intern::hash_alloc_intern
      Src: /src/frr/bgpd/bgp_clist.c:172,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_clist.c:176,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_clist.c:177,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_clist.c:184,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_clist.c:191,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_clist.c:201,1
    - Dst: list::list
      Src: /src/frr/bgpd/bgp_clist.c:217,1
    - Dst: list::list
      Src: /src/frr/bgpd/bgp_clist.c:225,1
    - Dst: point::point
      Src: /src/frr/bgpd/bgp_clist.c:235,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 3
    argNames:
    - ch
    - name
    - master
    argTypes:
    - struct community_list_handler*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 239
    functionName: community_list_insert
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - isdigit
    - hash_alloc_intern::hash_alloc_intern
    - bgp_clist_hash_key_community_list
    - strlen
    - atol
    - list::list
    - point::point
    - strcmp
    - community_list_new::community_list_new
    - community_list_master_lookup
    - hash_get
    - XSTRDUP
    linkageType: ''
    returnType: struct community_list
    signature: "struct community_list *\ncommunity_list_insert(struct community_list_handler
      *ch, const char *name,\n\t\t      int master)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:252,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_clist.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ch
    - name
    - name_hash
    - master
    argTypes:
    - struct community_list_handler*
    - char*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 259
    functionName: community_list_lookup
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 5
    functionsReached:
    - hash_get
    - community_list_master_lookup
    linkageType: ''
    returnType: struct community_list
    signature: "struct community_list *community_list_lookup(struct community_list_handler
      *ch,\n\t\t\t\t\t     const char *name,\n\t\t\t\t\t     uint32_t name_hash,\n\t\t\t\t\t
      \    int master)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_clist.c:267,1
    - Dst: community_list_insert
      Src: /src/frr/bgpd/bgp_clist.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ch
    - name
    - master
    argTypes:
    - struct community_list_handler*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 271
    functionName: community_list_get
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_list_lookup
    - community_list_insert
    linkageType: ''
    returnType: struct community_list
    signature: "struct community_list *\ncommunity_list_get(struct community_list_handler
      *ch, const char *name,\n\t\t   int master)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: community_entry_free
      Src: /src/frr/bgpd/bgp_clist.c:281,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_clist.c:296,1
    - Dst: community_list_free
      Src: /src/frr/bgpd/bgp_clist.c:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - cm
    - list
    argTypes:
    - struct community_list_master*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 298
    functionName: community_list_delete
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - hash_release
    - community_entry_free
    - community_list_free
    linkageType: ''
    returnType: void
    signature: "void community_list_delete(struct community_list_master *cm,\n\t\t\t\t
      \ struct community_list *list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: community_list_empty_p
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool community_list_empty_p(struct community_list *list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: community_entry_free
      Src: /src/frr/bgpd/bgp_clist.c:320,1
    - Dst: community_list_empty_p
      Src: /src/frr/bgpd/bgp_clist.c:322,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:323,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - cm
    - list
    - entry
    argTypes:
    - struct community_list_master*
    - struct community_list*
    - struct community_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 324
    functionName: community_list_entry_delete
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_list_delete
    - community_list_empty_p
    - community_entry_free
    linkageType: ''
    returnType: void
    signature: "void community_list_entry_delete(struct community_list_master *cm,\n\t\t\t\t\tstruct
      community_list *list,\n\t\t\t\t\tstruct community_entry *entry)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: community_entry_free
      Src: /src/frr/bgpd/bgp_clist.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - list
    - replace
    - entry
    argTypes:
    - struct community_list*
    - struct community_entry*
    - struct community_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 351
    functionName: community_list_entry_replace
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_entry_free
    linkageType: ''
    returnType: void
    signature: "void community_list_entry_replace(struct community_list *list,\n\t\t\t\t\t
      struct community_entry *replace,\n\t\t\t\t\t struct community_entry *entry)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_clist_new_seq_get
      Src: /src/frr/bgpd/bgp_clist.c:364,1
    - Dst: bgp_clist_seq_check
      Src: /src/frr/bgpd/bgp_clist.c:369,1
    - Dst: community_list_entry_replace
      Src: /src/frr/bgpd/bgp_clist.c:371,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 4
    argNames:
    - list
    - entry
    - ch
    - master
    argTypes:
    - struct community_list*
    - struct community_entry*
    - struct community_list_handler*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 401
    functionName: community_list_entry_add
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - bgp_clist_seq_check
    - bgp_clist_new_seq_get
    - community_list_entry_replace
    linkageType: ''
    returnType: void
    signature: "void community_list_entry_add(struct community_list *list,\n\t\t\t\t
      \    struct community_entry *entry,\n\t\t\t\t     struct community_list_handler
      *ch,\n\t\t\t\t     int master)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_clist.c:414,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_clist.c:419,1
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_clist.c:424,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_clist.c:431,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 26
    argCount: 3
    argNames:
    - list
    - arg
    - direct
    argTypes:
    - struct community_list*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 439
    functionName: community_list_entry_lookup
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - lcommunity_cmp
    - strcmp
    - ecommunity_cmp
    - community_cmp
    linkageType: ''
    returnType: struct community_entry
    signature: "struct community_entry *\ncommunity_list_entry_lookup(struct community_list
      *list, const void *arg,\n\t\t\t    int direct)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_clist.c:448,1
    - Dst: com_nthval
      Src: /src/frr/bgpd/bgp_clist.c:448,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_clist.c:449,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_clist.c:453,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:456,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_clist.c:457,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:460,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:463,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:466,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:470,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:473,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:477,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:480,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:483,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:486,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:489,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:492,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:495,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:498,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:501,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:504,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_clist.c:507,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_clist.c:507,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 2
    argNames:
    - com
    - i
    argTypes:
    - struct community*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 512
    functionName: community_str_get
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - com_nthval
    - zlog_warn
    - memcpy
    - ntohl
    - XSTRDUP
    - CPP_NOTICE
    linkageType: ''
    returnType: char
    signature: char *community_str_get(struct community *com, int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:524,1
    - Dst: community_str_get
      Src: /src/frr/bgpd/bgp_clist.c:526,1
    - Dst: regexec
      Src: /src/frr/bgpd/bgp_clist.c:529,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - reg
    - com
    - i
    argTypes:
    - regex_t*
    - struct community*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 534
    functionName: community_regexp_include
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_str_get
    - XFREE
    - regexec
    - XSTRDUP
    linkageType: ''
    returnType: bool
    signature: bool community_regexp_include(regex_t *reg, struct community *com,
      int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: community_str
      Src: /src/frr/bgpd/bgp_clist.c:549,1
    - Dst: bgp_alias2community_str
      Src: /src/frr/bgpd/bgp_clist.c:551,1
    - Dst: regexec
      Src: /src/frr/bgpd/bgp_clist.c:554,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:556,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - com
    - reg
    argTypes:
    - struct community*
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 559
    functionName: community_regexp_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - bgp_alias2community_str
    - XFREE
    - community_str
    - regexec
    linkageType: ''
    returnType: bool
    signature: bool community_regexp_match(struct community *com, regex_t *reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_clist.c:572,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_clist.c:576,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_clist.c:577,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_clist.c:578,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_clist.c:581,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_clist.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - lcom
    - i
    argTypes:
    - struct lcommunity*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 585
    functionName: lcommunity_str_get
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - XMALLOC
    - snprintf
    - memcpy
    linkageType: ''
    returnType: char
    signature: char *lcommunity_str_get(struct lcommunity *lcom, int i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:597,1
    - Dst: lcommunity_str_get
      Src: /src/frr/bgpd/bgp_clist.c:599,1
    - Dst: regexec
      Src: /src/frr/bgpd/bgp_clist.c:602,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:603,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - reg
    - lcom
    - i
    argTypes:
    - regex_t*
    - struct lcommunity*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 610
    functionName: lcommunity_regexp_include
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - lcommunity_str_get
    - regexec
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: bool
    signature: "bool lcommunity_regexp_include(regex_t *reg, struct lcommunity *lcom,\n\t\t\t\t
      \     int i)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_str
      Src: /src/frr/bgpd/bgp_clist.c:623,1
    - Dst: bgp_alias2community_str
      Src: /src/frr/bgpd/bgp_clist.c:625,1
    - Dst: regexec
      Src: /src/frr/bgpd/bgp_clist.c:628,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - com
    - reg
    argTypes:
    - struct lcommunity*
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 633
    functionName: lcommunity_regexp_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - lcommunity_str
    - bgp_alias2community_str
    - XFREE
    - regexec
    linkageType: ''
    returnType: bool
    signature: bool lcommunity_regexp_match(struct lcommunity *com, regex_t *reg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_clist.c:645,1
    - Dst: regexec
      Src: /src/frr/bgpd/bgp_clist.c:648,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ecom
    - reg
    argTypes:
    - struct ecommunity*
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 653
    functionName: ecommunity_regexp_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - ecommunity_str
    - regexec
    linkageType: ''
    returnType: bool
    signature: bool ecommunity_regexp_match(struct ecommunity *ecom, regex_t *reg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_clist.c:663,1
    - Dst: community_match
      Src: /src/frr/bgpd/bgp_clist.c:666,1
    - Dst: community_regexp_match
      Src: /src/frr/bgpd/bgp_clist.c:669,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - com
    - list
    argTypes:
    - struct community*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 657
    functionDepth: 2
    functionLinenumber: 657
    functionLinenumberEnd: 674
    functionName: community_list_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 3
    functionsReached:
    - community_include
    - community_match
    - community_regexp_match
    linkageType: ''
    returnType: bool
    signature: bool community_list_match(struct community *com, struct community_list
      *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_match
      Src: /src/frr/bgpd/bgp_clist.c:682,1
    - Dst: lcommunity_regexp_match
      Src: /src/frr/bgpd/bgp_clist.c:685,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - lcom
    - list
    argTypes:
    - struct lcommunity*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 690
    functionName: lcommunity_list_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 1
    functionsReached:
    - lcommunity_regexp_match
    - lcommunity_match
    linkageType: ''
    returnType: bool
    signature: bool lcommunity_list_match(struct lcommunity *lcom, struct community_list
      *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_clist.c:703,1
    - Dst: lcommunity_regexp_match
      Src: /src/frr/bgpd/bgp_clist.c:706,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - lcom
    - list
    argTypes:
    - struct lcommunity*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 711
    functionName: lcommunity_list_exact_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 1
    functionsReached:
    - lcommunity_regexp_match
    - lcommunity_cmp
    linkageType: ''
    returnType: bool
    signature: "bool lcommunity_list_exact_match(struct lcommunity *lcom,\n\t\t\t\t
      struct community_list *list)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_match
      Src: /src/frr/bgpd/bgp_clist.c:719,1
    - Dst: ecommunity_regexp_match
      Src: /src/frr/bgpd/bgp_clist.c:722,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ecom
    - list
    argTypes:
    - struct ecommunity*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 713
    functionDepth: 2
    functionLinenumber: 713
    functionLinenumberEnd: 727
    functionName: ecommunity_list_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 1
    functionsReached:
    - ecommunity_regexp_match
    - ecommunity_match
    linkageType: ''
    returnType: bool
    signature: bool ecommunity_list_match(struct ecommunity *ecom, struct community_list
      *list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_clist.c:738,1
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_clist.c:741,1
    - Dst: community_regexp_match
      Src: /src/frr/bgpd/bgp_clist.c:744,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - com
    - list
    argTypes:
    - struct community*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 749
    functionName: community_list_exact_match
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 2
    functionsReached:
    - community_include
    - community_regexp_match
    - community_cmp
    linkageType: ''
    returnType: bool
    signature: "bool community_list_exact_match(struct community *com,\n\t\t\t\tstruct
      community_list *list)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: community_val_get
      Src: /src/frr/bgpd/bgp_clist.c:766,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_clist.c:770,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_clist.c:772,1
    - Dst: community_regexp_include
      Src: /src/frr/bgpd/bgp_clist.c:779,1
    - Dst: community_val_get
      Src: /src/frr/bgpd/bgp_clist.c:792,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_clist.c:793,1
    - Dst: community_del_val
      Src: /src/frr/bgpd/bgp_clist.c:794,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 2
    argNames:
    - com
    - list
    argTypes:
    - struct community*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 752
    functionDepth: 3
    functionLinenumber: 752
    functionLinenumberEnd: 798
    functionName: community_list_match_delete
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 2
    functionsReached:
    - community_val_get
    - community_include
    - community_del_val
    - community_regexp_include
    - htonl
    linkageType: ''
    returnType: struct community
    signature: "struct community *community_list_match_delete(struct community *com,\n\t\t\t\t\t
      \     struct community_list *list)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: style::style
      Src: /src/frr/bgpd/bgp_clist.c:808,1
    - Dst: direct::direct
      Src: /src/frr/bgpd/bgp_clist.c:811,1
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_clist.c:816,1
    - Dst: u::u
      Src: /src/frr/bgpd/bgp_clist.c:816,1
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_clist.c:820,1
    - Dst: u::u
      Src: /src/frr/bgpd/bgp_clist.c:820,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_clist.c:824,1
    - Dst: u::u
      Src: /src/frr/bgpd/bgp_clist.c:824,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_clist.c:830,1
    - Dst: config::config
      Src: /src/frr/bgpd/bgp_clist.c:830,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 2
    argNames:
    - list
    - new
    argTypes:
    - struct community_list*
    - struct community_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 838
    functionName: community_list_dup_check
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - direct::direct
    - style::style
    - config::config
    - u::u
    - strcmp
    - ecommunity_cmp
    - lcommunity_cmp
    - community_cmp
    linkageType: ''
    returnType: bool
    signature: "bool community_list_dup_check(struct community_list *list,\n\t\t\t\t
      \    struct community_entry *new)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: atol
      Src: /src/frr/bgpd/bgp_clist.c:851,1
    - Dst: community_list_get
      Src: /src/frr/bgpd/bgp_clist.c:854,1
    - Dst: community_list_empty_p
      Src: /src/frr/bgpd/bgp_clist.c:859,1
    - Dst: community_str2com
      Src: /src/frr/bgpd/bgp_clist.c:872,1
    - Dst: bgp_regcomp
      Src: /src/frr/bgpd/bgp_clist.c:874,1
    - Dst: community_entry_new
      Src: /src/frr/bgpd/bgp_clist.c:879,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:886,1
    - Dst: community_list_dup_check
      Src: /src/frr/bgpd/bgp_clist.c:889,1
    - Dst: community_entry_free
      Src: /src/frr/bgpd/bgp_clist.c:890,1
    - Dst: community_list_entry_add
      Src: /src/frr/bgpd/bgp_clist.c:892,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:894,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 6
    argNames:
    - ch
    - name
    - str
    - seq
    - direct
    - style
    argTypes:
    - struct community_list_handler*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 841
    functionDepth: 4
    functionLinenumber: 841
    functionLinenumberEnd: 898
    functionName: community_list_set
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_list_empty_p
    - community_entry_new
    - community_str2com
    - atol
    - community_list_get
    - community_list_dup_check
    - community_entry_free
    - bgp_regcomp
    - route_map_notify_dependencies
    - community_list_entry_add
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int community_list_set(struct community_list_handler *ch, const char
      *name,\n\t\t       const char *str, const char *seq, int direct, int style)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_clist.c:911,1
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:915,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:918,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:919,1
    - Dst: community_str2com
      Src: /src/frr/bgpd/bgp_clist.c:924,1
    - Dst: community_list_entry_lookup
      Src: /src/frr/bgpd/bgp_clist.c:927,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_clist.c:928,1
    - Dst: community_list_entry_lookup
      Src: /src/frr/bgpd/bgp_clist.c:930,1
    - Dst: community_list_entry_delete
      Src: /src/frr/bgpd/bgp_clist.c:935,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:936,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 6
    argNames:
    - ch
    - name
    - str
    - seq
    - direct
    - style
    argTypes:
    - struct community_list_handler*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 901
    functionDepth: 4
    functionLinenumber: 901
    functionLinenumberEnd: 939
    functionName: community_list_unset
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_free
    - community_str2com
    - community_list_entry_lookup
    - community_list_lookup
    - community_list_master_lookup
    - route_map_notify_dependencies
    - community_list_delete
    - community_list_entry_delete
    linkageType: ''
    returnType: int
    signature: "int community_list_unset(struct community_list_handler *ch, const
      char *name,\n\t\t\t const char *str, const char *seq, int direct,\n\t\t\t int
      style)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_include
      Src: /src/frr/bgpd/bgp_clist.c:959,1
    - Dst: lcommunity_regexp_include
      Src: /src/frr/bgpd/bgp_clist.c:969,1
    - Dst: lcommunity_del_val
      Src: /src/frr/bgpd/bgp_clist.c:983,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - lcom
    - list
    argTypes:
    - struct lcommunity*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 942
    functionDepth: 3
    functionLinenumber: 942
    functionLinenumberEnd: 987
    functionName: lcommunity_list_match_delete
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 1
    functionsReached:
    - lcommunity_del_val
    - lcommunity_regexp_include
    - lcommunity_include
    linkageType: ''
    returnType: struct lcommunity
    signature: "struct lcommunity *lcommunity_list_match_delete(struct lcommunity
      *lcom,\n\t\t\t\t\t\tstruct community_list *list)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_clist.c:999,1
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_clist.c:1003,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_clist.c:1006,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_clist.c:1014,1
    - Dst: bgp_regcomp
      Src: /src/frr/bgpd/bgp_clist.c:1022,1
    - Dst: bgp_regex_free
      Src: /src/frr/bgpd/bgp_clist.c:1027,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:1031,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:1033,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:1038,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:1040,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - community
    - style
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 990
    functionDepth: 1
    functionLinenumber: 990
    functionLinenumberEnd: 1043
    functionName: lcommunity_list_valid
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - strlen
    - strtoul
    - bgp_regex_free
    - bgp_regcomp
    - XFREE
    - frrstr_split
    linkageType: ''
    returnType: bool
    signature: bool lcommunity_list_valid(const char *community, int style)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: atol
      Src: /src/frr/bgpd/bgp_clist.c:1056,1
    - Dst: community_list_get
      Src: /src/frr/bgpd/bgp_clist.c:1059,1
    - Dst: community_list_empty_p
      Src: /src/frr/bgpd/bgp_clist.c:1064,1
    - Dst: lcommunity_str2com
      Src: /src/frr/bgpd/bgp_clist.c:1078,1
    - Dst: bgp_regcomp
      Src: /src/frr/bgpd/bgp_clist.c:1080,1
    - Dst: community_entry_new
      Src: /src/frr/bgpd/bgp_clist.c:1086,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:1093,1
    - Dst: community_list_dup_check
      Src: /src/frr/bgpd/bgp_clist.c:1096,1
    - Dst: community_entry_free
      Src: /src/frr/bgpd/bgp_clist.c:1097,1
    - Dst: community_list_entry_add
      Src: /src/frr/bgpd/bgp_clist.c:1099,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:1101,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 6
    argNames:
    - ch
    - name
    - str
    - seq
    - direct
    - style
    argTypes:
    - struct community_list_handler*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1046
    functionDepth: 4
    functionLinenumber: 1046
    functionLinenumberEnd: 1105
    functionName: lcommunity_list_set
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_list_empty_p
    - community_entry_new
    - atol
    - lcommunity_str2com
    - community_list_get
    - community_list_dup_check
    - community_entry_free
    - bgp_regcomp
    - route_map_notify_dependencies
    - community_list_entry_add
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int lcommunity_list_set(struct community_list_handler *ch, const char
      *name,\n\t\t\tconst char *str, const char *seq, int direct, int style)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1120,1
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1124,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1127,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:1128,1
    - Dst: lcommunity_str2com
      Src: /src/frr/bgpd/bgp_clist.c:1133,1
    - Dst: bgp_regcomp
      Src: /src/frr/bgpd/bgp_clist.c:1135,1
    - Dst: community_list_entry_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1141,1
    - Dst: community_list_entry_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1143,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_clist.c:1146,1
    - Dst: bgp_regex_free
      Src: /src/frr/bgpd/bgp_clist.c:1148,1
    - Dst: community_list_entry_delete
      Src: /src/frr/bgpd/bgp_clist.c:1153,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:1154,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 6
    argNames:
    - ch
    - name
    - str
    - seq
    - direct
    - style
    argTypes:
    - struct community_list_handler*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1109
    functionDepth: 4
    functionLinenumber: 1109
    functionLinenumberEnd: 1157
    functionName: lcommunity_list_unset
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - bgp_regex_free
    - lcommunity_str2com
    - community_list_entry_lookup
    - community_list_lookup
    - lcommunity_free
    - community_list_master_lookup
    - route_map_notify_dependencies
    - bgp_regcomp
    - community_list_delete
    - community_list_entry_delete
    linkageType: ''
    returnType: int
    signature: "int lcommunity_list_unset(struct community_list_handler *ch, const
      char *name,\n\t\t\t  const char *str, const char *seq, int direct,\n\t\t\t  int
      style)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: atol
      Src: /src/frr/bgpd/bgp_clist.c:1171,1
    - Dst: community_list_get
      Src: /src/frr/bgpd/bgp_clist.c:1177,1
    - Dst: community_list_empty_p
      Src: /src/frr/bgpd/bgp_clist.c:1182,1
    - Dst: ecommunity_str2com
      Src: /src/frr/bgpd/bgp_clist.c:1195,1
    - Dst: bgp_regcomp
      Src: /src/frr/bgpd/bgp_clist.c:1197,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_clist.c:1204,1
    - Dst: community_entry_new
      Src: /src/frr/bgpd/bgp_clist.c:1206,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_clist.c:1210,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:1213,1
    - Dst: community_list_dup_check
      Src: /src/frr/bgpd/bgp_clist.c:1220,1
    - Dst: community_entry_free
      Src: /src/frr/bgpd/bgp_clist.c:1221,1
    - Dst: community_list_entry_add
      Src: /src/frr/bgpd/bgp_clist.c:1223,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:1225,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 6
    argNames:
    - ch
    - name
    - str
    - seq
    - direct
    - style
    argTypes:
    - struct community_list_handler*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1160
    functionDepth: 4
    functionLinenumber: 1160
    functionLinenumberEnd: 1229
    functionName: extcommunity_list_set
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_list_empty_p
    - community_entry_new
    - atol
    - ecommunity_ecom2str
    - community_list_get
    - community_list_dup_check
    - community_entry_free
    - bgp_regcomp
    - XSTRDUP
    - route_map_notify_dependencies
    - community_list_entry_add
    - ecommunity_str2com
    linkageType: ''
    returnType: int
    signature: "int extcommunity_list_set(struct community_list_handler *ch, const
      char *name,\n\t\t\t  const char *str, const char *seq, int direct,\n\t\t\t  int
      style)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1246,1
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1250,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1253,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:1254,1
    - Dst: ecommunity_str2com
      Src: /src/frr/bgpd/bgp_clist.c:1259,1
    - Dst: community_list_entry_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1262,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_clist.c:1263,1
    - Dst: community_list_entry_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1265,1
    - Dst: community_list_entry_delete
      Src: /src/frr/bgpd/bgp_clist.c:1270,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgp_clist.c:1271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 6
    argNames:
    - ch
    - name
    - str
    - seq
    - direct
    - style
    argTypes:
    - struct community_list_handler*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1236
    functionDepth: 4
    functionLinenumber: 1236
    functionLinenumberEnd: 1274
    functionName: extcommunity_list_unset
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - community_list_entry_lookup
    - community_list_lookup
    - community_list_master_lookup
    - route_map_notify_dependencies
    - community_list_entry_delete
    - community_list_delete
    - ecommunity_str2com
    - ecommunity_free
    linkageType: ''
    returnType: int
    signature: "int extcommunity_list_unset(struct community_list_handler *ch, const
      char *name,\n\t\t\t    const char *str, const char *seq, int direct,\n\t\t\t
      \   int style)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_clist.c:1280,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_clist.c:1284,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_clist.c:1289,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_clist.c:1294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1277
    functionDepth: 1
    functionLinenumber: 1277
    functionLinenumberEnd: 1299
    functionName: community_list_init
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    - XCALLOC
    linkageType: ''
    returnType: struct community_list_handler
    signature: struct community_list_handler *community_list_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1309,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1311,1
    - Dst: hash_free
      Src: /src/frr/bgpd/bgp_clist.c:1312,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1316,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1318,1
    - Dst: hash_free
      Src: /src/frr/bgpd/bgp_clist.c:1319,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1323,1
    - Dst: community_list_delete
      Src: /src/frr/bgpd/bgp_clist.c:1325,1
    - Dst: hash_free
      Src: /src/frr/bgpd/bgp_clist.c:1326,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_clist.c:1328,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct community_list_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1302
    functionDepth: 3
    functionLinenumber: 1302
    functionLinenumberEnd: 1329
    functionName: community_list_terminate
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 1
    functionsReached:
    - community_list_delete
    - hash_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void community_list_terminate(struct community_list_handler *ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set
      Src: /src/frr/bgpd/bgp_clist.c:1337,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_clist.c:1337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1340
    functionName: bgp_community_list_vector_walker
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - vector_set
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int bgp_community_list_vector_walker(struct hash_bucket *bucket,\n\t\t\t\t\t
      \   void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1347,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_clist.c:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1342
    functionDepth: 1
    functionLinenumber: 1342
    functionLinenumberEnd: 1350
    functionName: bgp_community_list_cmd_completion
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - hash_walk
    - community_list_master_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_community_list_cmd_completion(vector comps,\n\t\t\t\t\t      struct
      cmd_token *token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1357,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_clist.c:1360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1352
    functionDepth: 1
    functionLinenumber: 1352
    functionLinenumberEnd: 1361
    functionName: bgp_lcommunity_list_cmd_completion
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - hash_walk
    - community_list_master_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_lcommunity_list_cmd_completion(vector comps,\n\t\t\t\t\t
      \      struct cmd_token *token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_clist.c:1368,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_clist.c:1370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1363
    functionDepth: 1
    functionLinenumber: 1363
    functionLinenumberEnd: 1371
    functionName: bgp_extcommunity_list_cmd_completion
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - hash_walk
    - community_list_master_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_extcommunity_list_cmd_completion(vector comps,\n\t\t\t\t\t\t
      struct cmd_token *token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_clist.c:1390,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_clist.c:1391,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_clist.c:1392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1388
    functionDepth: 0
    functionLinenumber: 1388
    functionLinenumberEnd: 1393
    functionName: bgp_community_list_command_completion_setup
    functionSourceFile: /src/frr/bgpd/bgp_clist.c
    functionUses: 0
    functionsReached:
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void bgp_community_list_command_completion_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - counter
    argTypes:
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 478
    functionName: bgp_mpls_l3vpn_update_timeticks
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - monotime
    linkageType: ''
    returnType: void
    signature: void bgp_mpls_l3vpn_update_timeticks(time_t *counter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_mpls_l3vpn_update_timeticks
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 486
    functionName: bgp_mpls_l3vpn_update_last_changed
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - bgp_mpls_l3vpn_update_timeticks
    linkageType: ''
    returnType: int
    signature: int bgp_mpls_l3vpn_update_last_changed(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:496,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:496,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:497,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:502,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:502,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:503,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - l3vpn_bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 508
    functionName: bgp_mpls_l3vpn_current_routes
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - bgp_table_top
    - bgp_route_next
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_mpls_l3vpn_current_routes(struct bgp *l3vpn_bgp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:512,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:514,1
    - Dst: bgp_mpls_l3vpn_current_routes
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:519,1
    - Dst: bgp_mpls_l3vpn_update_timeticks
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:520,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:526,1
    - Dst: bgp_mpls_l3vpn_update_last_changed
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:531,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 510
    functionDepth: 3
    functionLinenumber: 510
    functionLinenumberEnd: 533
    functionName: bgp_init_snmp_stats
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - is_bgp_vrf_mplsvpn
    - XCALLOC
    - bgp_mpls_l3vpn_update_last_changed
    - bgp_mpls_l3vpn_update_timeticks
    - XFREE
    - bgp_mpls_l3vpn_current_routes
    linkageType: ''
    returnType: int
    signature: int bgp_init_snmp_stats(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:541,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - dest
    - pi
    - added
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 551
    functionName: bgp_snmp_update_route_stats
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - bgp_dest_table
    linkageType: ''
    returnType: int
    signature: "int bgp_snmp_update_route_stats(struct bgp_dest *dest,\n\t\t\t\t       struct
      bgp_path_info *pi, bool added)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:561,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:564,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:566,1
    - Dst: if_is_up
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:569,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 573
    functionName: is_bgp_vrf_active
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - strncmp
    - RB_FOREACH
    - if_is_up
    - vrf_lookup_by_id
    linkageType: ''
    returnType: bool
    signature: bool is_bgp_vrf_active(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:585,1
    - Dst: is_bgp_vrf_active
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:588,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:603,1
    - Dst: oid_copy_str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:604,1
    - Dst: oid_copy_str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:606,1
    - Dst: oid_copy_int
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:610,1
    - Dst: smux_trap_multi_index
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:613,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:614,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:615,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:617,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:618,1
    - Dst: bgp_mpls_l3vpn_update_last_changed
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - bgp
    - ifp
    argTypes:
    - struct bgp*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 579
    functionDepth: 3
    functionLinenumber: 579
    functionLinenumberEnd: 622
    functionName: bgp_vrf_check_update_active
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - is_bgp_vrf_mplsvpn
    - is_bgp_vrf_active
    - bgp_mpls_l3vpn_update_last_changed
    - oid_copy_int
    - array_size
    - oid_copy_str
    - smux_trap_multi_index
    - strnlen
    linkageType: ''
    returnType: int
    signature: int bgp_vrf_check_update_active(struct bgp *bgp, struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:633,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:637,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:638,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:641,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 642
    functionName: mplsL3vpnConfiguredVrfs
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - is_bgp_vrf_mplsvpn
    - ALL_LIST_ELEMENTS
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnConfiguredVrfs(struct variable *v, oid name[],\n\t\t\t\t\tsize_t
      *length, int exact,\n\t\t\t\t\tsize_t *var_len,\n\t\t\t\t\tWriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:652,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:656,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:657,1
    - Dst: is_bgp_vrf_active
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:657,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:660,1
    - Dst: mplsL3vpnConnectedInterfaces
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:663,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:673,1
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:673,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:677,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:677,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:678,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:679,1
    - Dst: vrf_interface_count
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:683,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 688
    functionName: mplsL3vpnActiveVrfs
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - is_bgp_vrf_mplsvpn
    - mplsL3vpnConnectedInterfaces
    - is_bgp_vrf_active
    - vrf_interface_count
    - vrf_lookup_by_name
    - SNMP_INTEGER
    - if
    - ALL_LIST_ELEMENTS
    - for
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnActiveVrfs(struct variable *v, oid name[],\n\t\t\t\t
      \   size_t *length, int exact, size_t *var_len,\n\t\t\t\t    WriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 7
    argNames:
    - action
    - var_val
    - var_val_type
    - var_val_len
    - statP
    - name
    - length
    argTypes:
    - int
    - uint8_t*
    - uint8_t
    - size_t
    - uint8_t*
    - oid*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 706
    functionName: write_mplsL3vpnNotificationEnable
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int write_mplsL3vpnNotificationEnable(int action, uint8_t *var_val,\n\t\t\t\t\t
      \    uint8_t var_val_type,\n\t\t\t\t\t     size_t var_val_len, uint8_t *statP,\n\t\t\t\t\t
      \    oid *name, size_t length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:713,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:718,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 719
    functionName: mplsL3vpnNotificationEnable
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnNotificationEnable(struct variable *v, oid name[],\n\t\t\t\t\t
      \   size_t *length, int exact,\n\t\t\t\t\t    size_t *var_len,\n\t\t\t\t\t    WriteMethod
      **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:726,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 731
    functionName: mplsL3vpnVrfConfMaxPossRts
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnVrfConfMaxPossRts(struct variable *v, oid name[],\n\t\t\t\t\t
      \  size_t *length, int exact,\n\t\t\t\t\t   size_t *var_len,\n\t\t\t\t\t   WriteMethod
      **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:738,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 743
    functionName: mplsL3vpnVrfConfRteMxThrshTime
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnVrfConfRteMxThrshTime(struct variable *v, oid name[],\n\t\t\t\t\t
      \      size_t *length, int exact,\n\t\t\t\t\t       size_t *var_len,\n\t\t\t\t\t
      \      WriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:750,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 755
    functionName: mplsL3vpnIllLblRcvThrsh
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnIllLblRcvThrsh(struct variable *v, oid name[],\n\t\t\t\t\tsize_t
      *length, int exact,\n\t\t\t\t\tsize_t *var_len,\n\t\t\t\t\tWriteMethod **write_method)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:769,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:770,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:772,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:772,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:777,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:780,1
    - Dst: bgpL3vpnIfConf_lookup
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:790,1
    - Dst: oid2string
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:806,1
    - Dst: oid2int
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:807,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:812,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:813,1
    - Dst: if_lookup_by_index
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:817,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:821,1
    - Dst: bgp_lookup_by_name_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:822,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:824,1
    - Dst: if_vrf_lookup_by_index_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:827,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:830,1
    - Dst: oid_copy_str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:833,1
    - Dst: oid_copy_int
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:835,1
    - Dst: bgp_lookup_by_name_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:842,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - vrf_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 848
    functionName: bgp_lookup_by_name_next
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 1
    functionsReached:
    - is_bgp_vrf_mplsvpn
    - oid2int
    - if_lookup_by_index
    - bgpL3vpnIfConf_lookup
    - bgp_lookup_by_name_next
    - oid_copy_int
    - if_vrf_lookup_by_index_next
    - strncmp
    - oid_copy_str
    - if
    - ALL_LIST_ELEMENTS
    - oid2string
    - bgp_lookup_by_name
    - strnlen
    linkageType: ''
    returnType: struct bgp
    signature: struct bgp *bgp_lookup_by_name_next(char *vrf_name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:858,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:862,1
    - Dst: bgpL3vpnIfConf_lookup
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:863,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:870,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:872,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:874,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 877
    functionName: mplsL3vpnIfConfTable
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - SNMP_INTEGER
    - memset
    - bgpL3vpnIfConf_lookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnIfConfTable(struct variable *v, oid name[],\n\t\t\t\t
      \    size_t *length, int exact, size_t *var_len,\n\t\t\t\t     WriteMethod **write_method)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: oid2string
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:891,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:894,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:895,1
    - Dst: bgp_lookup_by_name_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:898,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:903,1
    - Dst: oid_copy_str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:904,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - v
    - name
    - length
    - vrf_name
    - exact
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 882
    functionDepth: 2
    functionLinenumber: 882
    functionLinenumberEnd: 908
    functionName: bgpL3vpnVrf_lookup
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - is_bgp_vrf_mplsvpn
    - bgp_lookup_by_name_next
    - oid_copy_str
    - oid2string
    - bgp_lookup_by_name
    - strnlen
    linkageType: ''
    returnType: struct bgp
    signature: "struct bgp *bgpL3vpnVrf_lookup(struct variable *v, oid name[],\n\t\t\t\t
      \     size_t *length, char *vrf_name, int exact)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:917,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:921,1
    - Dst: bgpL3vpnVrf_lookup
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:922,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:932,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:941,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:942,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:944,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:946,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:947,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:949,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:951,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:953,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:956,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:960,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:962,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:964,1
    - Dst: bgp_vrf_interfaces
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:964,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:966,1
    - Dst: bgp_vrf_interfaces
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:966,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:968,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:970,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:972,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:974,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:977,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:979,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:981,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 48
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 910
    functionDepth: 3
    functionLinenumber: 910
    functionLinenumberEnd: 984
    functionName: mplsL3vpnVrfTable
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - smux_header_table
    - memset
    - CHECK_FLAG
    - bgp_vrf_interfaces
    - SNMP_INTEGER
    - prefix_rd2str
    - bgpL3vpnVrf_lookup
    - strnlen
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnVrfTable(struct variable *v, oid name[],\n\t\t\t\t
      \ size_t *length, int exact, size_t *var_len,\n\t\t\t\t  WriteMethod **write_method)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: oid2string
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1008,1
    - Dst: oid2int
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1009,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1018,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1019,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1033,1
    - Dst: bgp_lookup_by_name_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1034,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1036,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1080,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1089,1
    - Dst: oid_copy_str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1092,1
    - Dst: oid_copy_int
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1094,1
    - Dst: bgp_lookup_by_name_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1100,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 73
    argCount: 7
    argNames:
    - v
    - name
    - length
    - vrf_name
    - rt_index
    - rt_type
    - exact
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - char*
    - uint32_t*
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 988
    functionDepth: 2
    functionLinenumber: 988
    functionLinenumberEnd: 1104
    functionName: bgpL3vpnVrfRt_lookup
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - oid2int
    - is_bgp_vrf_mplsvpn
    - bgp_lookup_by_name_next
    - ecommunity_cmp
    - oid_copy_int
    - oid_copy_str
    - oid2string
    - bgp_lookup_by_name
    - strnlen
    linkageType: ''
    returnType: struct bgp
    signature: "struct bgp *bgpL3vpnVrfRt_lookup(struct variable *v, oid name[],\n\t\t\t\t\tsize_t
      *length, char *vrf_name,\n\t\t\t\t\tuint32_t *rt_index, uint8_t *rt_type,\n\t\t\t\t\tint
      exact)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - rt_type
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1106
    functionDepth: 0
    functionLinenumber: 1106
    functionLinenumberEnd: 1118
    functionName: rt_type2str
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rt_type2str(uint8_t rt_type)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1130,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1134,1
    - Dst: bgpL3vpnVrfRt_lookup
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1135,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1145,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1153,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1163,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1164,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1165,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1172,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1173,1
    - Dst: rt_type2str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1174,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1177,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1180,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1182,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1119
    functionDepth: 3
    functionLinenumber: 1119
    functionLinenumberEnd: 1185
    functionName: mplsL3vpnVrfRtTable
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - memset
    - snprintf
    - ecommunity_ecom2str
    - strlcpy
    - bgpL3vpnVrfRt_lookup
    - SNMP_INTEGER
    - XFREE
    - rt_type2str
    - strnlen
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnVrfRtTable(struct variable *v, oid name[],\n\t\t\t\t
      \   size_t *length, int exact, size_t *var_len,\n\t\t\t\t    WriteMethod **write_method)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1197,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1201,1
    - Dst: bgpL3vpnVrf_lookup
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1202,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1209,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1211,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1213,1
    - Dst: bgp_mpls_l3vpn_current_routes
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1190
    functionDepth: 3
    functionLinenumber: 1190
    functionLinenumberEnd: 1216
    functionName: mplsL3vpnPerfTable
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - memset
    - SNMP_INTEGER
    - bgp_mpls_l3vpn_current_routes
    - bgpL3vpnVrf_lookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnPerfTable(struct variable *v, oid name[],\n\t\t\t\t
      \  size_t *length, int exact, size_t *var_len,\n\t\t\t\t   WriteMethod **write_method)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1237,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1242,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1251,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 5
    argNames:
    - l3vpn_bgp
    - dest
    - prefix
    - policy
    - nexthop
    argTypes:
    - struct bgp*
    - struct bgp_dest**
    - struct prefix*
    - uint16_t
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1218
    functionDepth: 1
    functionLinenumber: 1218
    functionLinenumberEnd: 1262
    functionName: bgp_lookup_route
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - bgp_node_lookup
    - memcmp
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *\nbgp_lookup_route(struct bgp *l3vpn_bgp, struct
      bgp_dest **dest,\n\t\t struct prefix *prefix, uint16_t policy, struct ipaddr
      *nexthop)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1279,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1280,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1281,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1289,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1290,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1291,1
    - Dst: bgp_lookup_route
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1299,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1304,1
    - Dst: bgp_lookup_by_name_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1318,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1322,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1325,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1328,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1329,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1337,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 51
    argCount: 5
    argNames:
    - l3vpn_bgp
    - dest
    - prefix
    - policy
    - nexthop
    argTypes:
    - struct bgp**
    - struct bgp_dest**
    - struct prefix*
    - uint16_t*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1264
    functionDepth: 2
    functionLinenumber: 1264
    functionLinenumberEnd: 1346
    functionName: bgp_lookup_route_next
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_lookup_route
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_lookup_by_name_next
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *bgp_lookup_route_next(struct bgp **l3vpn_bgp,\n\t\t\t\t\t\t
      \  struct bgp_dest **dest,\n\t\t\t\t\t\t   struct prefix *prefix,\n\t\t\t\t\t\t
      \  uint16_t *policy,\n\t\t\t\t\t\t   struct ipaddr *nexthop)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - id
    argTypes:
    - oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1348
    functionDepth: 0
    functionLinenumber: 1348
    functionLinenumberEnd: 1357
    functionName: is_addr_type
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_addr_type(oid id)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: is_addr_type
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1383,1
    - Dst: oid2string
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1390,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1398,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1404,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1420,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1426,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1433,1
    - Dst: is_bgp_vrf_mplsvpn
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1434,1
    - Dst: bgp_lookup_route
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1440,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1445,1
    - Dst: bgp_lookup_by_name_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1447,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1450,1
    - Dst: bgp_lookup_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1455,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1459,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1460,1
    - Dst: oid_copy_str
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1468,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1473,1
    - Dst: oid_copy_in6_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1477,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1486,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1492,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1497,1
    - Dst: oid_copy_in6_addr
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1503,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 95
    argCount: 8
    argNames:
    - v
    - name
    - length
    - vrf_name
    - l3vpn_bgp
    - dest
    - policy
    - exact
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - char*
    - struct bgp**
    - struct bgp_dest**
    - uint16_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1362
    functionDepth: 3
    functionLinenumber: 1362
    functionLinenumberEnd: 1513
    functionName: bgpL3vpnRte_lookup
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - is_bgp_vrf_mplsvpn
    - bgp_lookup_route
    - IN6_IS_ADDR_UNSPECIFIED
    - oid2in_addr
    - bgp_dest_get_prefix
    - bgp_lookup_by_name_next
    - is_addr_type
    - oid2in6_addr
    - oid_copy_in_addr
    - oid_copy_in6_addr
    - strnlen
    - oid_copy_str
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - bgp_lookup_route_next
    - bgp_lookup_by_name
    - oid2string
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *bgpL3vpnRte_lookup(struct variable *v, oid name[],\n\t\t\t\t\t\tsize_t
      *length, char *vrf_name,\n\t\t\t\t\t\tstruct bgp **l3vpn_bgp,\n\t\t\t\t\t\tstruct
      bgp_dest **dest,\n\t\t\t\t\t\tuint16_t *policy, int exact)"
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1526,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1530,1
    - Dst: bgpL3vpnRte_lookup
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1531,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1538,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1540,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1549,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1551,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1553,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1558,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1560,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1566,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1573,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1575,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1577,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1578,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1580,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1582,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1585,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1590,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1591,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1596,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1600,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1602,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1607,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1613,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1618,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1623,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1629,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1634,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1636,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1639,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1642,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1644,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1646,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1648,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1650,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1653,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1655,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1658,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1660,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1662,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1664,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1666,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1668,1
    - Dst: SNMP_OCTET
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1670,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1672,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 130
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1515
    functionDepth: 4
    functionLinenumber: 1515
    functionLinenumberEnd: 1675
    functionName: mplsL3vpnRteTable
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - IN6_IS_ADDR_UNSPECIFIED
    - SNMP_OCTET
    - memset
    - SNMP_IP6ADDRESS
    - bgp_dest_get_prefix
    - bgpL3vpnRte_lookup
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    - bgp_get_imported_bpi_ultimate
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *mplsL3vpnRteTable(struct variable *v, oid name[],\n\t\t\t\t
      \ size_t *length, int exact, size_t *var_len,\n\t\t\t\t  WriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1679,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1680,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1681,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1683,1
    - Dst: REGISTER_MIB
      Src: /src/frr/bgpd/bgp_mplsvpn_snmp.c:1684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1686
      start: 1677
    functionDepth: 1
    functionLinenumber: 1677
    functionLinenumberEnd: 1686
    functionName: bgp_mpls_l3vpn_module_init
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn_snmp.c
    functionUses: 0
    functionsReached:
    - REGISTER_MIB
    - hook_register
    linkageType: ''
    returnType: void
    signature: void bgp_mpls_l3vpn_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:51,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:53,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:54,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:55,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:56,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:57,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:58,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:59,1
    - Dst: event_add_write
      Src: /src/frr/bgpd/bgp_io.c:61,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->ibuf_work)
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->status != Deleted)
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->obuf)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->ibuf)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (!peer->t_connect_check_r)
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (!peer->t_connect_check_w)
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->fd)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/frr/bgpd/bgp_io.c
    constantsTouched: []
    func_position:
      end: 64
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 64
    functionName: bgp_writes_on
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - event_add_write
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_writes_on(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:72,1
    - Dst: event_cancel_async
      Src: /src/frr/bgpd/bgp_io.c:74,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_io.c:75,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/frr/bgpd/bgp_io.c
    constantsTouched: []
    func_position:
      end: 78
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 78
    functionName: bgp_writes_off
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 0
    functionsReached:
    - event_cancel_async
    - UNSET_FLAG
    - EVENT_OFF
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_writes_off(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:86,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:88,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:89,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:90,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:91,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:92,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:93,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:94,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:95,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_io.c:97,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 85
        line_start: 85
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->fd)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->ibuf_work)
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->status != Deleted)
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->ibuf)
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->obuf)
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (!peer->t_connect_check_r)
      pos:
        line_end: 92
        line_start: 92
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (!peer->t_connect_check_w)
      pos:
        line_end: 93
        line_start: 93
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (peer->fd)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/frr/bgpd/bgp_io.c
    constantsTouched: []
    func_position:
      end: 101
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 101
    functionName: bgp_reads_on
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - SET_FLAG
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_reads_on(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:109,1
    - Dst: event_cancel_async
      Src: /src/frr/bgpd/bgp_io.c:111,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_io.c:112,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_io.c:113,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 108
        line_start: 108
        source_file: /src/frr/bgpd/bgp_io.c
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: bgp_reads_off
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 0
    functionsReached:
    - event_cancel_async
    - UNSET_FLAG
    - EVENT_OFF
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_reads_off(struct peer *peer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_io.c:126,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_io.c:136,1
    - Dst: bgp_write
      Src: /src/frr/bgpd/bgp_io.c:137,1
    - Dst: stream_fifo_head
      Src: /src/frr/bgpd/bgp_io.c:138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_io.c:142,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_io.c:146,1
    - Dst: event_add_write
      Src: /src/frr/bgpd/bgp_io.c:157,1
    - Dst: BGP_UPDATE_GROUP_TIMER_ON
      Src: /src/frr/bgpd/bgp_io.c:160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 163
    functionName: bgp_process_writes
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - frr_with_mutex
    - bgp_write
    - CHECK_FLAG
    - BGP_UPDATE_GROUP_TIMER_ON
    - stream_fifo_head
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_process_writes(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_io.c:175,1
    - Dst: ringbuf_remain
      Src: /src/frr/bgpd/bgp_io.c:181,1
    - Dst: validate_header
      Src: /src/frr/bgpd/bgp_io.c:185,1
    - Dst: ringbuf_peek
      Src: /src/frr/bgpd/bgp_io.c:189,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_io.c:191,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:194,1
    - Dst: ringbuf_remain
      Src: /src/frr/bgpd/bgp_io.c:202,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_io.c:205,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:206,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/bgpd/bgp_io.c:206,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:207,1
    - Dst: ringbuf_get
      Src: /src/frr/bgpd/bgp_io.c:207,1
    - Dst: stream_set_endp
      Src: /src/frr/bgpd/bgp_io.c:208,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_io.c:210,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_io.c:211,1
    - Dst: stream_fifo_push
      Src: /src/frr/bgpd/bgp_io.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (pktsize <= peer->max_packet_size)
      pos:
        line_end: 193
        line_start: 193
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (STREAM_WRITEABLE(pkt) == pktsize)
      pos:
        line_end: 205
        line_start: 205
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (ringbuf_get(ibw, pkt->data, pktsize) == pktsize)
      pos:
        line_end: 206
        line_start: 206
        source_file: /src/frr/bgpd/bgp_io.c
    constantsTouched: []
    func_position:
      end: 216
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 216
    functionName: read_ibuf_work
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 0
    functionsReached:
    - stream_new
    - frr_with_mutex
    - stream_fifo_push
    - validate_header
    - STREAM_WRITEABLE
    - ntohs
    - ringbuf_get
    - frrtrace
    - stream_set_endp
    - ringbuf_peek
    - assert
    - ringbuf_remain
    linkageType: ''
    returnType: int
    signature: int read_ibuf_work(struct peer *peer)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_io.c:237,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_io.c:244,1
    - Dst: bgp_read
      Src: /src/frr/bgpd/bgp_io.c:245,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_io.c:249,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_io.c:254,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_io.c:261,1
    - Dst: read_ibuf_work
      Src: /src/frr/bgpd/bgp_io.c:267,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_io.c:280,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_io.c:281,1
    - Dst: ringbuf_wipe
      Src: /src/frr/bgpd/bgp_io.c:297,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_io.c:301,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_io.c:304,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 306
    functionName: bgp_process_reads
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 0
    functionsReached:
    - read_ibuf_work
    - frr_with_mutex
    - CHECK_FLAG
    - bgp_read
    - zlog_debug
    - ringbuf_wipe
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - event_add_read
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void bgp_process_reads(struct event *thread)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_io.c:337,1
    - Dst: stream_fifo_head
      Src: /src/frr/bgpd/bgp_io.c:343,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_io.c:349,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_io.c:351,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_io.c:352,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_io.c:353,1
    - Dst: writev
      Src: /src/frr/bgpd/bgp_io.c:363,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/bgpd/bgp_io.c:366,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_io.c:367,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:368,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:370,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:392,1
    - Dst: memmove
      Src: /src/frr/bgpd/bgp_io.c:394,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_io.c:397,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_io.c:398,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_io.c:399,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:403,1
    - Dst: stream_fifo_pop
      Src: /src/frr/bgpd/bgp_io.c:412,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:414,1
    - Dst: stream_set_getp
      Src: /src/frr/bgpd/bgp_io.c:417,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_io.c:418,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_io.c:422,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_io.c:426,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_io.c:431,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_io.c:444,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_io.c:448,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_io.c:453,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_io.c:457,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_io.c:462,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_io.c:468,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_io.c:475,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_io.c:480,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 99
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (total_written < count)
      pos:
        line_end: 391
        line_start: 391
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (s == ostreams[i])
      pos:
        line_end: 413
        line_start: 413
        source_file: /src/frr/bgpd/bgp_io.c
    - condition: (writenum > 0)
      pos:
        line_end: 402
        line_start: 402
        source_file: /src/frr/bgpd/bgp_io.c
    constantsTouched: []
    func_position:
      end: 487
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 487
    functionName: bgp_write
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 1
    functionsReached:
    - atomic_fetch_add_explicit
    - stream_fifo_head
    - stream_getc
    - BGP_EVENT_ADD
    - stream_set_getp
    - ERRNO_IO_RETRY
    - atomic_load_explicit
    - array_size
    - writev
    - assert
    - stream_free
    - STREAM_READABLE
    - stream_forward_getp
    - atomic_store_explicit
    - monotime
    - stream_pnt
    - memmove
    - SET_FLAG
    - stream_fifo_pop
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t bgp_write(struct peer *peer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ringbuf_space
      Src: /src/frr/bgpd/bgp_io.c:509,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:512,1
    - Dst: MIN
      Src: /src/frr/bgpd/bgp_io.c:516,1
    - Dst: read
      Src: /src/frr/bgpd/bgp_io.c:518,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/bgpd/bgp_io.c:521,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:522,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_io.c:525,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_io.c:527,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:533,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_io.c:537,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_io.c:538,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_io.c:545,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_io.c:547,1
    - Dst: ringbuf_put
      Src: /src/frr/bgpd/bgp_io.c:547,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - peer
    - code_p
    argTypes:
    - struct peer*
    - int*
    assertStmts:
    - condition: "(ringbuf_put(peer->ibuf_work, ibuf_scratch, nbytes) ==\n\t\t       (size_t)nbytes)"
      pos:
        line_end: 547
        line_start: 546
        source_file: /src/frr/bgpd/bgp_io.c
    constantsTouched: []
    func_position:
      end: 552
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 552
    functionName: bgp_read
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 1
    functionsReached:
    - MIN
    - assert
    - ringbuf_put
    - read
    - ERRNO_IO_RETRY
    - SET_FLAG
    - flog_err
    - safe_strerror
    - zlog_debug
    - bgp_debug_neighbor_events
    - ringbuf_space
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t bgp_read(struct peer *peer, int *code_p)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ringbuf_peek
      Src: /src/frr/bgpd/bgp_io.c:572,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_io.c:575,1
    - Dst: bgp_notify_io_invalid
      Src: /src/frr/bgpd/bgp_io.c:576,1
    - Dst: ringbuf_peek
      Src: /src/frr/bgpd/bgp_io.c:582,1
    - Dst: ringbuf_peek
      Src: /src/frr/bgpd/bgp_io.c:583,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_io.c:585,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_io.c:593,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_io.c:594,1
    - Dst: bgp_notify_io_invalid
      Src: /src/frr/bgpd/bgp_io.c:597,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_io.c:614,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_io.c:615,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_io.c:621,1
    - Dst: bgp_notify_io_invalid
      Src: /src/frr/bgpd/bgp_io.c:623,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 24
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 630
    functionName: validate_header
    functionSourceFile: /src/frr/bgpd/bgp_io.c
    functionUses: 1
    functionsReached:
    - htons
    - memcmp
    - bgp_notify_io_invalid
    - ntohs
    - zlog_debug
    - bgp_debug_neighbor_events
    - ringbuf_peek
    linkageType: ''
    returnType: bool
    signature: bool validate_header(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_keepalives.c:46,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_keepalives.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: pkat_new
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - monotime
    - XMALLOC
    linkageType: ''
    returnType: struct pkat
    signature: struct pkat *pkat_new(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_keepalives.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pkat
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: pkat_del
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pkat_del(void *pkat)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_keepalives.c:89,1
    - Dst: monotime_since
      Src: /src/frr/bgpd/bgp_keepalives.c:97,1
    - Dst: timersub
      Src: /src/frr/bgpd/bgp_keepalives.c:101,1
    - Dst: timercmp
      Src: /src/frr/bgpd/bgp_keepalives.c:104,1
    - Dst: bgp_debug_keepalive
      Src: /src/frr/bgpd/bgp_keepalives.c:107,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_keepalives.c:108,1
    - Dst: bgp_keepalive_send
      Src: /src/frr/bgpd/bgp_keepalives.c:111,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_keepalives.c:112,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_keepalives.c:113,1
    - Dst: timercmp
      Src: /src/frr/bgpd/bgp_keepalives.c:118,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 120
    functionName: peer_process
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - bgp_debug_keepalive
    - memset
    - bgp_keepalive_send
    - monotime
    - timercmp
    - timersub
    - zlog_debug
    - atomic_load_explicit
    - monotime_since
    linkageType: ''
    returnType: void
    signature: void peer_process(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - f
    - s
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: peer_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool peer_hash_cmp(const void *f, const void *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: peer_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int peer_hash_key(const void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_keepalives.c:139,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/bgpd/bgp_keepalives.c:141,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/bgpd/bgp_keepalives.c:142,1
    - Dst: pthread_cond_destroy
      Src: /src/frr/bgpd/bgp_keepalives.c:143,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_keepalives.c:145,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_keepalives.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: bgp_keepalives_finish
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - pthread_cond_destroy
    - XFREE
    - pthread_mutex_destroy
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_keepalives_finish(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/frr/bgpd/bgp_keepalives.c:155,1
    - Dst: rcu_read_unlock
      Src: /src/frr/bgpd/bgp_keepalives.c:169,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_keepalives.c:171,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_keepalives.c:172,1
    - Dst: pthread_mutex_init
      Src: /src/frr/bgpd/bgp_keepalives.c:175,1
    - Dst: pthread_condattr_init
      Src: /src/frr/bgpd/bgp_keepalives.c:179,1
    - Dst: pthread_condattr_setclock
      Src: /src/frr/bgpd/bgp_keepalives.c:180,1
    - Dst: pthread_cond_init
      Src: /src/frr/bgpd/bgp_keepalives.c:181,1
    - Dst: pthread_condattr_destroy
      Src: /src/frr/bgpd/bgp_keepalives.c:182,1
    - Dst: frr_pthread_set_name
      Src: /src/frr/bgpd/bgp_keepalives.c:188,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_keepalives.c:191,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/bgpd/bgp_keepalives.c:192,1
    - Dst: pthread_cleanup_push
      Src: /src/frr/bgpd/bgp_keepalives.c:195,1
    - Dst: frr_pthread_notify_running
      Src: /src/frr/bgpd/bgp_keepalives.c:198,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_keepalives.c:200,1
    - Dst: pthread_cond_timedwait
      Src: /src/frr/bgpd/bgp_keepalives.c:202,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_keepalives.c:206,1
    - Dst: pthread_cond_wait
      Src: /src/frr/bgpd/bgp_keepalives.c:208,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_keepalives.c:210,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_keepalives.c:214,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_keepalives.c:216,1
    - Dst: monotime_since
      Src: /src/frr/bgpd/bgp_keepalives.c:218,1
    - Dst: timeradd
      Src: /src/frr/bgpd/bgp_keepalives.c:220,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/frr/bgpd/bgp_keepalives.c:221,1
    - Dst: pthread_cleanup_pop
      Src: /src/frr/bgpd/bgp_keepalives.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 228
    functionName: bgp_keepalives_start
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - pthread_cleanup_pop
    - pthread_mutex_init
    - pthread_cond_wait
    - pthread_cond_init
    - memset
    - XCALLOC
    - pthread_cleanup_push
    - pthread_condattr_setclock
    - TIMEVAL_TO_TIMESPEC
    - atomic_load_explicit
    - hash_iterate
    - pthread_mutex_lock
    - pthread_condattr_init
    - pthread_cond_timedwait
    - monotime
    - rcu_read_unlock
    - monotime_since
    - timeradd
    - hash_create_size
    - frr_pthread_notify_running
    - pthread_self
    - frr_pthread_set_name
    - pthread_condattr_destroy
    linkageType: ''
    returnType: void
    signature: void *bgp_keepalives_start(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_keepalives.c:237,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_keepalives.c:241,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_keepalives.c:249,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_keepalives.c:253,1
    - Dst: pkat_new
      Src: /src/frr/bgpd/bgp_keepalives.c:254,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_keepalives.c:255,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_keepalives.c:256,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_keepalives.c:258,1
    - Dst: pthread_cond_signal
      Src: /src/frr/bgpd/bgp_keepalives.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 240
        line_start: 240
        source_file: /src/frr/bgpd/bgp_keepalives.c
    - condition: (peerhash_mtx)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/frr/bgpd/bgp_keepalives.c
    constantsTouched: []
    func_position:
      end: 262
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 262
    functionName: bgp_keepalives_on
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - pkat_new
    - pthread_cond_signal
    - CHECK_FLAG
    - hash_lookup
    - SET_FLAG
    - peer_lock
    - hash_get
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_keepalives_on(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_keepalives.c:253,1
    - Dst: pkat_new
      Src: /src/frr/bgpd/bgp_keepalives.c:254,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_keepalives.c:255,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_keepalives.c:256,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_keepalives.c:258,1
    - Dst: pthread_cond_signal
      Src: /src/frr/bgpd/bgp_keepalives.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 261
    functionName: frr_with_mutex
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 18
    functionsReached:
    - pkat_new
    - pthread_cond_signal
    - hash_lookup
    - SET_FLAG
    - peer_lock
    - hash_get
    linkageType: ''
    returnType: void
    signature: void frr_with_mutex (peerhash_mtx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_keepalives.c:269,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_keepalives.c:273,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_keepalives.c:281,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_keepalives.c:285,1
    - Dst: pkat_del
      Src: /src/frr/bgpd/bgp_keepalives.c:287,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_keepalives.c:288,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_keepalives.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 272
        line_start: 272
        source_file: /src/frr/bgpd/bgp_keepalives.c
    - condition: (peerhash_mtx)
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/frr/bgpd/bgp_keepalives.c
    constantsTouched: []
    func_position:
      end: 292
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 292
    functionName: bgp_keepalives_off
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - peer_unlock
    - CHECK_FLAG
    - UNSET_FLAG
    - pkat_del
    - hash_release
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_keepalives_off(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_keepalives.c:285,1
    - Dst: pkat_del
      Src: /src/frr/bgpd/bgp_keepalives.c:287,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_keepalives.c:288,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_keepalives.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 291
    functionName: frr_with_mutex
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 18
    functionsReached:
    - hash_release
    - UNSET_FLAG
    - pkat_del
    - peer_unlock
    linkageType: ''
    returnType: void
    signature: void frr_with_mutex (peerhash_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_keepalives.c:296,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_keepalives.c:299,1
    - Dst: pthread_cond_signal
      Src: /src/frr/bgpd/bgp_keepalives.c:301,1
    - Dst: pthread_join
      Src: /src/frr/bgpd/bgp_keepalives.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - fpt
    - result
    argTypes:
    - struct frr_pthread*
    - void**
    assertStmts:
    - condition: (fpt->running)
      pos:
        line_end: 295
        line_start: 295
        source_file: /src/frr/bgpd/bgp_keepalives.c
    constantsTouched: []
    func_position:
      end: 306
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 306
    functionName: bgp_keepalives_stop
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 0
    functionsReached:
    - atomic_store_explicit
    - pthread_join
    - assert
    - pthread_cond_signal
    linkageType: ''
    returnType: int
    signature: int bgp_keepalives_stop(struct frr_pthread *fpt, void **result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_keepalives.c:299,1
    - Dst: pthread_cond_signal
      Src: /src/frr/bgpd/bgp_keepalives.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: frr_with_mutex
    functionSourceFile: /src/frr/bgpd/bgp_keepalives.c
    functionUses: 18
    functionsReached:
    - atomic_store_explicit
    - pthread_cond_signal
    linkageType: ''
    returnType: void
    signature: void frr_with_mutex (peerhash_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_evpn.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: vni_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int vni_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: vni_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool vni_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: vni_list_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vni_list_cmp(void *p1, void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_evpn.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: vrf_import_rt_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int vrf_import_rt_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 132
    functionName: vrf_import_rt_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool vrf_import_rt_hash_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:142,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:144,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn.c:149,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:153,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_evpn.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 159
    functionName: vrf_import_rt_new
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - bgp_get_evpn
    - flog_err
    - list_new
    - hash_get
    linkageType: ''
    returnType: struct vrf_irt_node
    signature: struct vrf_irt_node *vrf_import_rt_new(struct ecommunity_val *rt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:168,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:170,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_evpn.c:175,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:176,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - irt
    argTypes:
    - struct vrf_irt_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: vrf_import_rt_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - list_delete
    - bgp_get_evpn
    - flog_err
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void vrf_import_rt_free(struct vrf_irt_node *irt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - irt
    argTypes:
    - struct vrf_irt_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: hash_vrf_import_rt_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void hash_vrf_import_rt_free(struct vrf_irt_node *irt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:195,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:197,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:203,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:204,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 207
    functionName: lookup_vrf_import_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - memset
    - bgp_get_evpn
    - hash_lookup
    - flog_err
    - memcpy
    linkageType: ''
    returnType: struct vrf_irt_node
    signature: struct vrf_irt_node *lookup_vrf_import_rt(struct ecommunity_val *rt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vrfs
    - bgp_vrf
    argTypes:
    - struct list*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: is_vrf_present_in_irt_vrfs
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int is_vrf_present_in_irt_vrfs(struct list *vrfs, struct bgp *bgp_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_evpn.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: import_rt_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int import_rt_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: import_rt_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool import_rt_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn.c:254,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:257,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_evpn.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - bgp
    - rt
    argTypes:
    - struct bgp*
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 263
    functionName: import_rt_new
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - hash_get
    - list_new
    - XCALLOC
    linkageType: ''
    returnType: struct irt_node
    signature: "struct irt_node *import_rt_new(struct bgp *bgp,\n\t\t\t\t      struct
      ecommunity_val *rt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_evpn.c:270,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:271,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - irt
    argTypes:
    - struct bgp*
    - struct irt_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: import_rt_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - hash_release
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void import_rt_free(struct bgp *bgp, struct irt_node *irt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - irt
    argTypes:
    - struct irt_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: hash_import_rt_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void hash_import_rt_free(struct irt_node *irt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:290,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:291,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bgp
    - rt
    argTypes:
    - struct bgp*
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 294
    functionName: lookup_import_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - memcpy
    - hash_lookup
    - memset
    linkageType: ''
    returnType: struct irt_node
    signature: "struct irt_node *lookup_import_rt(struct bgp *bgp,\n\t\t\t\t\t struct
      ecommunity_val *rt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vnis
    - vpn
    argTypes:
    - struct list*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: is_vni_present_in_irt_vnis
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int is_vni_present_in_irt_vnis(struct list *vnis, struct bgpevpn *vpn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_evpn.c:336,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 14
    argCount: 2
    argNames:
    - ecom1
    - ecom2
    argTypes:
    - struct ecommunity*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 337
    functionName: bgp_evpn_route_target_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_route_target_cmp(struct ecommunity *ecom1,\n\t\t\t      struct
      ecommunity *ecom2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_route_target_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rt1
    - rt2
    argTypes:
    - struct vrf_route_target*
    - struct vrf_route_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: evpn_vrf_route_target_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_route_target_cmp
    linkageType: ''
    returnType: int
    signature: "int evpn_vrf_route_target_cmp(struct vrf_route_target *rt1,\n\t\t\t\t
      \    struct vrf_route_target *rt2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 352
    functionName: bgp_evpn_xxport_delete_ecomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_xxport_delete_ecomm(void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn.c:361,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 364
    functionName: evpn_vrf_rt_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - XFREE
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void evpn_vrf_rt_del(void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 378
    functionName: evpn_vrf_rt_new
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct vrf_route_target
    signature: struct vrf_route_target *evpn_vrf_rt_new(struct ecommunity *ecom)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - struct ecommunity_val*
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 398
    functionName: mask_ecom_global_admin
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mask_ecom_global_admin(struct ecommunity_val *dst,\n\t\t\t\t\t
      \ const struct ecommunity_val *src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:420,1
    - Dst: mask_ecom_global_admin
      Src: /src/frr/bgpd/bgp_evpn.c:421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - to_eval
    - l3rt
    - iter
    argTypes:
    - struct ecommunity_val*
    - struct vrf_route_target*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 422
    functionName: vrf_rt2ecom_val
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - memcpy
    - mask_ecom_global_admin
    linkageType: ''
    returnType: void
    signature: "void vrf_rt2ecom_val(struct ecommunity_val *to_eval,\n\t\t\t    const
      struct vrf_route_target *l3rt, int iter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_rt2ecom_val
      Src: /src/frr/bgpd/bgp_evpn.c:437,1
    - Dst: lookup_vrf_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:439,1
    - Dst: is_vrf_present_in_irt_vrfs
      Src: /src/frr/bgpd/bgp_evpn.c:441,1
    - Dst: vrf_import_rt_new
      Src: /src/frr/bgpd/bgp_evpn.c:445,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn.c:448,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - bgp_vrf
    - l3rt
    argTypes:
    - struct bgp*
    - struct vrf_route_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 450
    functionName: map_vrf_to_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_vrf_present_in_irt_vrfs
    - vrf_rt2ecom_val
    - vrf_import_rt_new
    - listnode_add
    - lookup_vrf_import_rt
    linkageType: ''
    returnType: void
    signature: void map_vrf_to_rt(struct bgp *bgp_vrf, struct vrf_route_target *l3rt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_rt2ecom_val
      Src: /src/frr/bgpd/bgp_evpn.c:467,1
    - Dst: lookup_vrf_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:469,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_evpn.c:475,1
    - Dst: listnode_head
      Src: /src/frr/bgpd/bgp_evpn.c:477,1
    - Dst: vrf_import_rt_free
      Src: /src/frr/bgpd/bgp_evpn.c:478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - bgp_vrf
    - l3rt
    argTypes:
    - struct bgp*
    - struct vrf_route_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 480
    functionName: unmap_vrf_from_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - vrf_rt2ecom_val
    - listnode_head
    - listnode_delete
    - vrf_import_rt_free
    - lookup_vrf_import_rt
    linkageType: ''
    returnType: void
    signature: "void unmap_vrf_from_rt(struct bgp *bgp_vrf,\n\t\t\t      struct vrf_route_target
      *l3rt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:495,1
    - Dst: is_import_rt_configured
      Src: /src/frr/bgpd/bgp_evpn.c:496,1
    - Dst: mask_ecom_global_admin
      Src: /src/frr/bgpd/bgp_evpn.c:497,1
    - Dst: lookup_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:499,1
    - Dst: is_vni_present_in_irt_vnis
      Src: /src/frr/bgpd/bgp_evpn.c:501,1
    - Dst: import_rt_new
      Src: /src/frr/bgpd/bgp_evpn.c:506,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn.c:509,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - bgp
    - vpn
    - eval
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 510
    functionName: map_vni_to_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_vni_present_in_irt_vnis
    - lookup_import_rt
    - listnode_add
    - mask_ecom_global_admin
    - is_import_rt_configured
    - import_rt_new
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void map_vni_to_rt(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t  struct
      ecommunity_val *eval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_evpn.c:520,1
    - Dst: listnode_head
      Src: /src/frr/bgpd/bgp_evpn.c:521,1
    - Dst: import_rt_free
      Src: /src/frr/bgpd/bgp_evpn.c:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - bgp
    - vpn
    - irt
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct irt_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 516
    functionDepth: 2
    functionLinenumber: 516
    functionLinenumberEnd: 524
    functionName: unmap_vni_from_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - import_rt_free
    - listnode_head
    linkageType: ''
    returnType: void
    signature: "void unmap_vni_from_rt(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t
      \     struct irt_node *irt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:532,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:546,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:550,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:556,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - vpn
    - p
    - attr
    - flags
    argTypes:
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct attr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 557
    functionName: bgp_evpn_get_rmac_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - memcpy
    - CHECK_FLAG
    - memset
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_get_rmac_nexthop(struct bgpevpn *vpn,\n\t\t\t\t      const
      struct prefix_evpn *p,\n\t\t\t\t      struct attr *attr, uint8_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: encode_route_target_as
      Src: /src/frr/bgpd/bgp_evpn.c:580,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/bgp_evpn.c:582,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/bgp_evpn.c:583,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn.c:586,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:587,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:593,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:593,1
    - Dst: evpn_vrf_rt_new
      Src: /src/frr/bgpd/bgp_evpn.c:601,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:603,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn.c:604,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn.c:606,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn.c:608,1
    - Dst: derive_rd_rt_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:615,1
    - Dst: bgp_evpn_derive_auto_rd
      Src: /src/frr/bgpd/bgp_evpn.c:617,1
    - Dst: bgp_evpn_derive_auto_rt_import
      Src: /src/frr/bgpd/bgp_evpn.c:618,1
    - Dst: bgp_evpn_derive_auto_rt_export
      Src: /src/frr/bgpd/bgp_evpn.c:619,1
    - Dst: evpn_convert_nexthop_to_ipv6
      Src: /src/frr/bgpd/bgp_evpn.c:625,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_evpn.c:627,1
    - Dst: ipv4_to_ipv4_mapped_ipv6
      Src: /src/frr/bgpd/bgp_evpn.c:629,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:636,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:656,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:658,1
    - Dst: evpn_type2_path_info_get_ip
      Src: /src/frr/bgpd/bgp_evpn.c:660,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:663,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn.c:665,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:671,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - bgp
    - vni
    - rtl
    - is_l3
    argTypes:
    - struct bgp*
    - vni_t
    - struct list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 672
    functionName: form_auto_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ecommunity_new
    - bgp_evpn_derive_auto_rt_import
    - bgp_evpn_global_node_get
    - evpn_type2_path_info_get_ip
    - encode_route_target_as
    - evpn_type2_prefix_global_copy
    - evpn_type2_path_info_get_mac
    - ALL_LIST_ELEMENTS_RO
    - if
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - evpn_convert_nexthop_to_ipv6
    - evpn_vrf_rt_new
    - bgp_afi_node_get
    - listnode_add_sort
    - ecommunity_cmp
    - bgp_evpn_derive_auto_rd
    - bgp_evpn_derive_auto_rt_export
    - ipv4_to_ipv4_mapped_ipv6
    - ecommunity_free
    - derive_rd_rt_for_vni
    - is_evpn_prefix_ipaddr_none
    - SET_FLAG
    - ecommunity_add_val
    linkageType: ''
    returnType: void
    signature: "void form_auto_rt(struct bgp *bgp, vni_t vni, struct list *rtl,\n\t\t\t
      bool is_l3)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: evpn_type1_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:687,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:695,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:697,1
    - Dst: evpn_type2_path_info_get_ip
      Src: /src/frr/bgpd/bgp_evpn.c:699,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:702,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn.c:704,1
    - Dst: bgp_safi_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:710,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 5
    argNames:
    - table
    - safi
    - evp
    - prd
    - local_pi
    argTypes:
    - struct bgp_table*
    - safi_t
    - struct prefix_evpn*
    - struct prefix_rd*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 711
    functionName: bgp_evpn_global_node_lookup
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_type2_prefix_global_copy
    - evpn_type2_path_info_get_mac
    - evpn_type1_prefix_global_copy
    - is_evpn_prefix_ipaddr_none
    - evpn_type2_path_info_get_ip
    - bgp_safi_node_lookup
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_evpn_global_node_lookup(\n\tstruct bgp_table
      *table, safi_t safi, const struct prefix_evpn *evp,\n\tstruct prefix_rd *prd,
      const struct bgp_path_info *local_pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: evpn_type1_prefix_vni_ip_copy
      Src: /src/frr/bgpd/bgp_evpn.c:726,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:731,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:731,1
    - Dst: evpn_type2_prefix_vni_ip_copy
      Src: /src/frr/bgpd/bgp_evpn.c:737,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:740,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - table
    - evp
    - parent_pi
    argTypes:
    - struct bgp_table*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts:
    - condition: (is_evpn_prefix_ipaddr_none(evp) == false)
      pos:
        line_end: 730
        line_start: 730
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 741
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 741
    functionName: bgp_evpn_vni_ip_node_get
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_type2_prefix_vni_ip_copy
    - is_evpn_prefix_ipaddr_none
    - evpn_type1_prefix_vni_ip_copy
    - assert
    - bgp_node_get
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_evpn_vni_ip_node_get(struct bgp_table *const
      table,\n\t\t\t\t\t  const struct prefix_evpn *evp,\n\t\t\t\t\t  const struct
      bgp_path_info *parent_pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: evpn_type1_prefix_vni_ip_copy
      Src: /src/frr/bgpd/bgp_evpn.c:757,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:762,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:762,1
    - Dst: evpn_type2_prefix_vni_ip_copy
      Src: /src/frr/bgpd/bgp_evpn.c:768,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - table
    - evp
    - parent_pi
    argTypes:
    - struct bgp_table*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts:
    - condition: (is_evpn_prefix_ipaddr_none(evp) == false)
      pos:
        line_end: 761
        line_start: 761
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 772
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 772
    functionName: bgp_evpn_vni_ip_node_lookup
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_type2_prefix_vni_ip_copy
    - bgp_node_lookup
    - is_evpn_prefix_ipaddr_none
    - evpn_type1_prefix_vni_ip_copy
    - assert
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *\nbgp_evpn_vni_ip_node_lookup(const struct bgp_table
      *const table,\n\t\t\t    const struct prefix_evpn *evp,\n\t\t\t    const struct
      bgp_path_info *parent_pi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:785,1
    - Dst: evpn_type2_prefix_vni_mac_copy
      Src: /src/frr/bgpd/bgp_evpn.c:791,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - table
    - evp
    - parent_pi
    argTypes:
    - struct bgp_table*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts:
    - condition: (evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE)
      pos:
        line_end: 784
        line_start: 784
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 794
      start: 777
    functionDepth: 1
    functionLinenumber: 777
    functionLinenumberEnd: 794
    functionName: bgp_evpn_vni_mac_node_get
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_type2_prefix_vni_mac_copy
    - assert
    - bgp_node_get
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *\nbgp_evpn_vni_mac_node_get(struct bgp_table *const
      table,\n\t\t\t  const struct prefix_evpn *evp,\n\t\t\t  const struct bgp_path_info
      *parent_pi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:807,1
    - Dst: evpn_type2_prefix_vni_mac_copy
      Src: /src/frr/bgpd/bgp_evpn.c:813,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - table
    - evp
    - parent_pi
    argTypes:
    - struct bgp_table*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts:
    - condition: (evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE)
      pos:
        line_end: 806
        line_start: 806
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 816
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 816
    functionName: bgp_evpn_vni_mac_node_lookup
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_type2_prefix_vni_mac_copy
    - bgp_node_lookup
    - assert
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *\nbgp_evpn_vni_mac_node_lookup(const struct bgp_table
      *const table,\n\t\t\t     const struct prefix_evpn *evp,\n\t\t\t     const struct
      bgp_path_info *parent_pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:826,1
    - Dst: bgp_evpn_vni_mac_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:827,1
    - Dst: bgp_evpn_vni_ip_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 821
    functionDepth: 2
    functionLinenumber: 821
    functionLinenumberEnd: 830
    functionName: bgp_evpn_vni_node_get
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_none
    - bgp_evpn_vni_mac_node_get
    - bgp_evpn_vni_ip_node_get
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_evpn_vni_node_get(struct bgpevpn *vpn,\n\t\t\t\t
      \      const struct prefix_evpn *p,\n\t\t\t\t       const struct bgp_path_info
      *parent_pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:840,1
    - Dst: bgp_evpn_vni_mac_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:841,1
    - Dst: bgp_evpn_vni_ip_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:844,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 835
    functionDepth: 2
    functionLinenumber: 835
    functionLinenumberEnd: 845
    functionName: bgp_evpn_vni_node_lookup
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_none
    - bgp_evpn_vni_mac_node_lookup
    - bgp_evpn_vni_ip_node_lookup
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_evpn_vni_node_lookup(const struct bgpevpn *vpn,\n\t\t\t\t\t
      \ const struct prefix_evpn *p,\n\t\t\t\t\t  const struct bgp_path_info *parent_pi)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_evpn.c:866,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn.c:867,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:868,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_evpn.c:877,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_evpn.c:879,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:882,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:885,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:887,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:890,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_evpn.c:891,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:893,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_evpn.c:895,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:896,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_evpn.c:901,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_evpn.c:903,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_evpn.c:906,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:912,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:913,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:914,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_evpn.c:917,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_evpn.c:917,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:919,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn.c:923,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn.c:925,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:926,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn.c:934,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_evpn.c:937,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 9
    argNames:
    - bgp
    - vpn
    - p
    - mac
    - remote_vtep_ip
    - add
    - flags
    - seq
    - esi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct ethaddr*
    - struct in_addr
    - int
    - uint8_t
    - uint32_t
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 938
    functionName: bgp_zebra_send_remote_macip
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - stream_put
    - is_evpn_prefix_ipaddr_v4
    - esi_to_str
    - frrtrace
    - BGP_DEBUG
    - stream_reset
    - stream_putc
    - snprintf
    - zclient_send_message
    - stream_putw_at
    - zlog_debug
    - bgp_debug_zebra
    - stream_put_in_addr
    - zclient_create_header
    - stream_putw
    - stream_get_endp
    - is_evpn_prefix_ipaddr_none
    - bgp_evpn_is_esi_valid
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int bgp_zebra_send_remote_macip(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \      const struct prefix_evpn *p,\n\t\t\t\t       const struct ethaddr *mac,\n\t\t\t\t
      \      struct in_addr remote_vtep_ip, int add,\n\t\t\t\t       uint8_t flags,
      uint32_t seq, esi_t *esi)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_evpn.c:954,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn.c:955,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:956,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_evpn.c:963,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_evpn.c:965,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:968,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:969,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_evpn.c:970,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:971,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:972,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:978,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_evpn.c:980,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_evpn.c:980,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:982,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:983,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn.c:987,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_evpn.c:989,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - bgp
    - vpn
    - p
    - flood_control
    - add
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 990
    functionName: bgp_zebra_send_remote_vtep
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - is_evpn_prefix_ipaddr_v4
    - zclient_send_message
    - stream_get_endp
    - stream_put_in_addr
    - stream_putw_at
    - zlog_debug
    - flog_err
    - bgp_debug_zebra
    - frrtrace
    - is_evpn_prefix_ipaddr_v6
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int bgp_zebra_send_remote_vtep(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \     const struct prefix_evpn *p,\n\t\t\t\t      int flood_control, int add)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:1010,1
    - Dst: encode_encap_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1011,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1017,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1018,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn.c:1019,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_evpn.c:1019,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn.c:1021,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_evpn.c:1023,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1024,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:1029,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1030,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn.c:1031,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1031,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:1035,1
    - Dst: is_zero_mac
      Src: /src/frr/bgpd/bgp_evpn.c:1035,1
    - Dst: encode_rmac_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1036,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/bgp_evpn.c:1037,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1037,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - bgp_vrf
    - attr
    argTypes:
    - struct bgp*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1040
    functionName: build_evpn_type5_route_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - encode_rmac_extcomm
    - memset
    - bgp_attr_get_ecommunity
    - is_zero_mac
    - ecommunity_add_val
    - ecommunity_merge
    - if
    - bgp_attr_set_ecommunity
    - encode_encap_extcomm
    - ecommunity_dup
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: "void build_evpn_type5_route_extcomm(struct bgp *bgp_vrf,\n\t\t\t\t\t
      \  struct attr *attr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:1075,1
    - Dst: encode_encap_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1076,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1082,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_evpn.c:1082,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:1086,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1087,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn.c:1089,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1089,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:1094,1
    - Dst: bgpevpn_get_vrf_export_rtl
      Src: /src/frr/bgpd/bgp_evpn.c:1095,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:1096,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_evpn.c:1096,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:1097,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1099,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn.c:1101,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1102,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:1110,1
    - Dst: encode_mac_mobility_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1111,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1115,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn.c:1116,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1116,1
    - Dst: encode_rmac_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1122,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/bgp_evpn.c:1123,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1123,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:1129,1
    - Dst: encode_default_gw_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1130,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1134,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn.c:1135,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1135,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:1141,1
    - Dst: encode_na_flag_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1142,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1146,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn.c:1147,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1147,1
    - Dst: add_mac_mobility_to_attr
      Src: /src/frr/bgpd/bgp_evpn.c:1155,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:1164,1
    - Dst: encode_mac_mobility_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1167,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - vpn
    - attr
    - add_l3_ecomm
    argTypes:
    - struct bgpevpn*
    - struct attr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1052
    functionDepth: 1
    functionLinenumber: 1052
    functionLinenumberEnd: 1186
    functionName: build_evpn_route_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - encode_rmac_extcomm
    - encode_mac_mobility_extcomm
    - memset
    - encode_na_flag_extcomm
    - list_isempty
    - bgp_attr_get_ecommunity
    - add_mac_mobility_to_attr
    - ecommunity_add_val
    - ecommunity_merge
    - if
    - bgp_attr_set_ecommunity
    - encode_encap_extcomm
    - ecommunity_dup
    - encode_default_gw_extcomm
    - bgpevpn_get_vrf_export_rtl
    linkageType: ''
    returnType: void
    signature: "void build_evpn_route_extcomm(struct bgpevpn *vpn, struct attr *attr,\n\t\t\t\t
      \    int add_l3_ecomm)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1223,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1225,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:1226,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1228,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:1230,1
    - Dst: bgp_evpn_attr_is_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:1232,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1233,1
    - Dst: bgp_evpn_attr_is_proxy
      Src: /src/frr/bgpd/bgp_evpn.c:1234,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1235,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_evpn.c:1239,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1246,1
    - Dst: bgp_evpn_attr_get_sync_seq
      Src: /src/frr/bgpd/bgp_evpn.c:1250,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:1254,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1257,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1261,1
    - Dst: bgp_zebra_send_remote_macip
      Src: /src/frr/bgpd/bgp_evpn.c:1265,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:1267,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn.c:1269,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn.c:1272,1
    - Dst: bgp_evpn_remote_es_evi_add
      Src: /src/frr/bgpd/bgp_evpn.c:1274,1
    - Dst: bgp_attr_get_pmsi_tnl_type
      Src: /src/frr/bgpd/bgp_evpn.c:1276,1
    - Dst: bgp_zebra_send_remote_vtep
      Src: /src/frr/bgpd/bgp_evpn.c:1294,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 4
    argNames:
    - bgp
    - vpn
    - p
    - pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1209
    functionDepth: 2
    functionLinenumber: 1209
    functionLinenumberEnd: 1298
    functionName: evpn_zebra_install
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_attr_get_sync_seq
    - evpn_type2_path_info_get_mac
    - bgp_evpn_remote_es_evi_add
    - bgp_evpn_attr_get_esi
    - bgp_zebra_send_remote_vtep
    - bgp_evpn_attr_is_sync
    - is_evpn_prefix_ipaddr_none
    - bgp_evpn_attr_is_proxy
    - SET_FLAG
    - mac_mobility_seqnum
    - bgp_evpn_attr_is_local_es
    - is_evpn_prefix_ipaddr_v6
    - bgp_attr_get_pmsi_tnl_type
    - bgp_zebra_send_remote_macip
    linkageType: ''
    returnType: int
    signature: "int evpn_zebra_install(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t
      \     const struct prefix_evpn *p,\n\t\t\t      struct bgp_path_info *pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_zebra_send_remote_macip
      Src: /src/frr/bgpd/bgp_evpn.c:1308,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:1310,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn.c:1312,1
    - Dst: bgp_evpn_remote_es_evi_del
      Src: /src/frr/bgpd/bgp_evpn.c:1317,1
    - Dst: bgp_zebra_send_remote_vtep
      Src: /src/frr/bgpd/bgp_evpn.c:1319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - bgp
    - vpn
    - p
    - pi
    - is_sync
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1301
    functionDepth: 2
    functionLinenumber: 1301
    functionLinenumberEnd: 1323
    functionName: evpn_zebra_uninstall
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_type2_path_info_get_mac
    - bgp_evpn_remote_es_evi_del
    - bgp_zebra_send_remote_vtep
    - is_evpn_prefix_ipaddr_none
    - bgp_zebra_send_remote_macip
    linkageType: ''
    returnType: int
    signature: "int evpn_zebra_uninstall(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\tconst
      struct prefix_evpn *p,\n\t\t\t\tstruct bgp_path_info *pi, bool is_sync)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn.c:1340,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:1344,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:1346,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn.c:1347,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn.c:1349,1
    - Dst: bgp_evpn_global_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:1358,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:1360,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:1364,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:1370,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:1371,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn.c:1375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - bgp
    - vpn
    - dest
    - old_local
    - new_select
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1330
    functionDepth: 2
    functionLinenumber: 1330
    functionLinenumberEnd: 1376
    functionName: evpn_delete_old_local_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_evpn_global_node_lookup
    - bgp_dest_get_prefix
    - esi_to_str
    - bgp_path_info_delete
    - zlog_debug
    - delete_evpn_route_entry
    - bgp_process
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void evpn_delete_old_local_route(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t\tstruct
      bgp_dest *dest,\n\t\t\t\t\tstruct bgp_path_info *old_local,\n\t\t\t\t\tstruct
      bgp_path_info *new_select)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_best_selection
      Src: /src/frr/bgpd/bgp_evpn.c:1393,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_evpn.c:1407,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1408,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1409,1
    - Dst: bgp_addpath_is_addpath_used
      Src: /src/frr/bgpd/bgp_evpn.c:1410,1
    - Dst: bgp_zebra_has_route_changed
      Src: /src/frr/bgpd/bgp_evpn.c:1411,1
    - Dst: evpn_zebra_install
      Src: /src/frr/bgpd/bgp_evpn.c:1412,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:1414,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1417,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1418,1
    - Dst: bgp_zebra_clear_route_change_flags
      Src: /src/frr/bgpd/bgp_evpn.c:1419,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1424,1
    - Dst: bgp_bump_version
      Src: /src/frr/bgpd/bgp_evpn.c:1430,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_evpn.c:1433,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn.c:1435,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_evpn.c:1436,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1438,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1439,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_evpn.c:1447,1
    - Dst: evpn_zebra_install
      Src: /src/frr/bgpd/bgp_evpn.c:1448,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:1450,1
    - Dst: evpn_delete_old_local_route
      Src: /src/frr/bgpd/bgp_evpn.c:1465,1
    - Dst: evpn_zebra_uninstall
      Src: /src/frr/bgpd/bgp_evpn.c:1470,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:1472,1
    - Dst: bgp_zebra_clear_route_change_flags
      Src: /src/frr/bgpd/bgp_evpn.c:1478,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1481,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn.c:1482,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 35
    argCount: 3
    argNames:
    - bgp
    - vpn
    - dest
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1383
    functionDepth: 3
    functionLinenumber: 1383
    functionLinenumberEnd: 1485
    functionName: evpn_route_select_install
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_delete_old_local_route
    - bgp_addpath_is_addpath_used
    - bgp_path_info_reap
    - bgp_dest_get_prefix
    - bgp_zebra_has_route_changed
    - CHECK_FLAG
    - bgp_zebra_clear_route_change_flags
    - bgp_path_info_set_flag
    - bgp_evpn_attr_is_sync
    - bgp_bump_version
    - UNSET_FLAG
    - bgp_best_selection
    - evpn_zebra_install
    - evpn_zebra_uninstall
    - bgp_path_info_unset_flag
    linkageType: ''
    returnType: int
    signature: "int evpn_route_select_install(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \    struct bgp_dest *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:1493,1
    - Dst: bgp_evpn_is_path_local
      Src: /src/frr/bgpd/bgp_evpn.c:1495,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - bgp
    - dest
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1487
    functionDepth: 1
    functionLinenumber: 1487
    functionLinenumberEnd: 1502
    functionName: bgp_evpn_route_get_local_path
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_is_path_local
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *bgp_evpn_route_get_local_path(\n\t\tstruct bgp
      *bgp, struct bgp_dest *dest)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_route_get_local_path
      Src: /src/frr/bgpd/bgp_evpn.c:1518,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn.c:1530,1
    - Dst: info_make
      Src: /src/frr/bgpd/bgp_evpn.c:1533,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1535,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_evpn.c:1538,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn.c:1539,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:1540,1
    - Dst: bgp_path_info_add
      Src: /src/frr/bgpd/bgp_evpn.c:1544,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:1548,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn.c:1555,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn.c:1556,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1560,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_evpn.c:1561,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn.c:1564,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_evpn.c:1566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 7
    argNames:
    - bgp_evpn
    - bgp_vrf
    - afi
    - safi
    - dest
    - attr
    - route_changed
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct attr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1504
    functionDepth: 2
    functionLinenumber: 1504
    functionLinenumberEnd: 1570
    functionName: update_evpn_type5_route_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_route_get_local_path
    - bgp_path_info_extra_get
    - bgp_path_info_restore
    - bgp_attr_unintern
    - vni2label
    - bgp_path_info_add
    - CHECK_FLAG
    - info_make
    - bgp_path_info_set_flag
    - monotime
    - attrhash_cmp
    - SET_FLAG
    - bgp_attr_intern
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int update_evpn_type5_route_entry(struct bgp *bgp_evpn,\n\t\t\t\t\t
      struct bgp *bgp_vrf, afi_t afi,\n\t\t\t\t\t safi_t safi, struct bgp_dest *dest,\n\t\t\t\t\t
      struct attr *attr, int *route_changed)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:1584,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:1594,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_evpn.c:1595,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:1607,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:1610,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:1615,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:1616,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:1618,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:1621,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:1622,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:1624,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1630,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_evpn.c:1633,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/bgpd/bgp_evpn.c:1635,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:1636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1641,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:1645,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:1646,1
    - Dst: build_evpn_type5_route_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:1652,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:1655,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:1657,1
    - Dst: update_evpn_type5_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:1660,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:1665,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:1666,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_evpn.c:1671,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 51
    argCount: 5
    argNames:
    - bgp_vrf
    - evp
    - src_attr
    - src_afi
    - src_safi
    argTypes:
    - struct bgp*
    - struct prefix_evpn*
    - struct attr*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (dest)
      pos:
        line_end: 1656
        line_start: 1656
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 1673
      start: 1573
    functionDepth: 3
    functionLinenumber: 1573
    functionLinenumberEnd: 1673
    functionName: update_evpn_type5_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - assert
    - IN6_IS_ADDR_UNSPECIFIED
    - update_evpn_type5_route_entry
    - bgp_dest_unlock_node
    - aspath_unintern
    - memset
    - bgp_get_evpn
    - vrf_id_to_name
    - CHECK_FLAG
    - build_evpn_type5_route_extcomm
    - bgp_evpn_global_node_get
    - zlog_debug
    - SET_IPADDR_V6
    - bgp_debug_zebra
    - bgp_process
    - bgp_attr_default_set
    - memcpy
    - SET_IPADDR_V4
    linkageType: ''
    returnType: int
    signature: "int update_evpn_type5_route(struct bgp *bgp_vrf, struct prefix_evpn
      *evp,\n\t\t\t\t   struct attr *src_attr, afi_t src_afi,\n\t\t\t\t   safi_t src_safi)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:1692,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:1698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1701,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn.c:1706,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn.c:1707,1
    - Dst: bgp_evpn_path_info_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:1711,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn.c:1719,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn.c:1723,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:1724,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 31
    argCount: 9
    argNames:
    - bgp
    - esi
    - dest
    - loc_seq
    - max_sync_seq
    - active_on_peer
    - peer_router
    - proxy_from_peer
    - mac
    argTypes:
    - struct bgp*
    - esi_t*
    - struct bgp_dest*
    - uint32_t
    - uint32_t*
    - bool*
    - bool*
    - bool*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1675
    functionDepth: 1
    functionLinenumber: 1675
    functionLinenumberEnd: 1745
    functionName: bgp_evpn_get_sync_info
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_type2_path_info_get_mac
    - bgp_evpn_path_info_cmp
    - bgp_evpn_attr_get_esi
    - CHECK_FLAG
    - memcmp
    - is_evpn_prefix_ipaddr_none
    - mac_mobility_seqnum
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_get_sync_info(struct bgp *bgp, esi_t *esi,\n\t\t\t\t
      \  struct bgp_dest *dest, uint32_t loc_seq,\n\t\t\t\t   uint32_t *max_sync_seq,
      bool *active_on_peer,\n\t\t\t\t   bool *peer_router, bool *proxy_from_peer,\n\t\t\t\t
      \  const struct ethaddr *mac)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:1760,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn.c:1765,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_evpn.c:1766,1
    - Dst: bgp_evpn_get_sync_info
      Src: /src/frr/bgpd/bgp_evpn.c:1773,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn.c:1791,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:1794,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn.c:1797,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 6
    argNames:
    - bgp
    - dest
    - attr
    - loc_seq
    - setup_sync
    - mac
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    - struct attr*
    - uint32_t
    - bool
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1752
    functionDepth: 2
    functionLinenumber: 1752
    functionLinenumberEnd: 1816
    functionName: update_evpn_route_entry_sync_info
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_attr_get_esi
    - bgp_dest_get_prefix
    - esi_to_str
    - zlog_debug
    - BGP_DEBUG
    - bgp_evpn_is_esi_valid
    - bgp_evpn_get_sync_info
    linkageType: ''
    returnType: void
    signature: "void update_evpn_route_entry_sync_info(struct bgp *bgp,\n\t\t\t\t\t
      \     struct bgp_dest *dest,\n\t\t\t\t\t      struct attr *attr,\n\t\t\t\t\t
      \     uint32_t loc_seq, bool setup_sync,\n\t\t\t\t\t      const struct ethaddr
      *mac)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:1841,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:1842,1
    - Dst: bgp_evpn_route_get_local_path
      Src: /src/frr/bgpd/bgp_evpn.c:1845,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_evpn.c:1855,1
    - Dst: update_evpn_route_entry_sync_info
      Src: /src/frr/bgpd/bgp_evpn.c:1860,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1863,1
    - Dst: add_mac_mobility_to_attr
      Src: /src/frr/bgpd/bgp_evpn.c:1864,1
    - Dst: bgp_attr_mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:1871,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn.c:1875,1
    - Dst: info_make
      Src: /src/frr/bgpd/bgp_evpn.c:1878,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1880,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_evpn.c:1881,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn.c:1884,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1891,1
    - Dst: bgpevpn_get_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:1894,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn.c:1896,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:1901,1
    - Dst: evpn_type2_path_info_set_mac
      Src: /src/frr/bgpd/bgp_evpn.c:1906,1
    - Dst: evpn_type2_path_info_set_ip
      Src: /src/frr/bgpd/bgp_evpn.c:1908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1912,1
    - Dst: bgp_path_info_add
      Src: /src/frr/bgpd/bgp_evpn.c:1914,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:1917,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1918,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn.c:1925,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1927,1
    - Dst: bgpevpn_get_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:1931,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn.c:1933,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:1937,1
    - Dst: evpn_type2_path_info_set_mac
      Src: /src/frr/bgpd/bgp_evpn.c:1942,1
    - Dst: evpn_type2_path_info_set_ip
      Src: /src/frr/bgpd/bgp_evpn.c:1945,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn.c:1952,1
    - Dst: bgp_attr_mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:1956,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn.c:1960,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1963,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_evpn.c:1964,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn.c:1967,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_evpn.c:1969,1
    - Dst: bgp_evpn_path_es_link
      Src: /src/frr/bgpd/bgp_evpn.c:1978,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn.c:1979,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 75
    argCount: 14
    argNames:
    - bgp
    - vpn
    - afi
    - safi
    - dest
    - attr
    - mac
    - ip
    - add
    - pi
    - flags
    - seq
    - vpn_rt
    - old_is_sync
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct attr*
    - struct ethaddr*
    - struct ipaddr*
    - int
    - struct bgp_path_info**
    - uint8_t
    - uint32_t
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1984
      start: 1822
    functionDepth: 3
    functionLinenumber: 1822
    functionLinenumberEnd: 1984
    functionName: update_evpn_route_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - bgp_path_info_restore
    - info_make
    - bgp_path_info_set_flag
    - bgp_evpn_attr_is_sync
    - attrhash_cmp
    - bgp_attr_intern
    - bgp_evpn_route_get_local_path
    - bgp_path_info_extra_get
    - memset
    - vni2label
    - evpn_type2_path_info_set_ip
    - bgp_dest_get_prefix
    - bgp_attr_mac_mobility_seqnum
    - bgp_evpn_attr_get_esi
    - update_evpn_route_entry_sync_info
    - monotime
    - add_mac_mobility_to_attr
    - memcpy
    - evpn_type2_path_info_set_mac
    - bgp_path_info_add
    - CHECK_FLAG
    - SET_FLAG
    - bgpevpn_get_l3vni
    - bgp_evpn_path_es_link
    linkageType: ''
    returnType: int
    signature: "int update_evpn_route_entry(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \  afi_t afi, safi_t safi,\n\t\t\t\t   struct bgp_dest *dest, struct attr *attr,\n\t\t\t\t
      \  const struct ethaddr *mac,\n\t\t\t\t   const struct ipaddr *ip, int add,\n\t\t\t\t
      \  struct bgp_path_info **pi, uint8_t flags,\n\t\t\t\t   uint32_t seq, bool
      vpn_rt, bool *old_is_sync)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:1993,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:1995,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_evpn.c:2003,1
    - Dst: evpn_zebra_install
      Src: /src/frr/bgpd/bgp_evpn.c:2004,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2005,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 3
    argNames:
    - bgp
    - vpn
    - dest
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 1986
    functionDepth: 3
    functionLinenumber: 1986
    functionLinenumberEnd: 2007
    functionName: evpn_zebra_reinstall_best_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_evpn_attr_is_sync
    - evpn_zebra_install
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void evpn_zebra_reinstall_best_route(struct bgp *bgp,\n\t\t\t\t\t
      \   struct bgpevpn *vpn,\n\t\t\t\t\t    struct bgp_dest *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:2029,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:2030,1
    - Dst: evpn_delete_old_local_route
      Src: /src/frr/bgpd/bgp_evpn.c:2033,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn.c:2034,1
    - Dst: evpn_zebra_reinstall_best_route
      Src: /src/frr/bgpd/bgp_evpn.c:2037,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - bgp
    - vpn
    - dest
    - local_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2023
    functionDepth: 4
    functionLinenumber: 2023
    functionLinenumberEnd: 2038
    functionName: evpn_cleanup_local_non_best_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_delete_old_local_route
    - bgp_path_info_reap
    - zlog_debug
    - bgp_debug_zebra
    - evpn_zebra_reinstall_best_route
    linkageType: ''
    returnType: void
    signature: "void evpn_cleanup_local_non_best_route(struct bgp *bgp,\n\t\t\t\t\t
      \     struct bgpevpn *vpn,\n\t\t\t\t\t      struct bgp_dest *dest,\n\t\t\t\t\t
      \     struct bgp_path_info *local_pi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:2045,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:2046,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_evpn.c:2047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2049,1
    - Dst: bgpevpn_get_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:2050,1
    - Dst: bgp_evpn_es_add_l3_ecomm_ok
      Src: /src/frr/bgpd/bgp_evpn.c:2050,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 3
    argNames:
    - vpn
    - p
    - esi
    argTypes:
    - struct bgpevpn*
    - struct prefix_evpn*
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 2040
    functionDepth: 1
    functionLinenumber: 2040
    functionLinenumberEnd: 2051
    functionName: bgp_evpn_route_add_l3_ecomm_ok
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v4
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - bgp_evpn_es_add_l3_ecomm_ok
    - bgpevpn_get_l3vni
    - is_evpn_prefix_ipaddr_v6
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_route_add_l3_ecomm_ok(struct bgpevpn *vpn,\n\t\t\t\t\t\t
      \ const struct prefix_evpn *p,\n\t\t\t\t\t\t  esi_t *esi)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:2072,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_evpn.c:2075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2079,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2080,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2081,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2083,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_evpn.c:2086,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:2087,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_evpn.c:2093,1
    - Dst: bgp_attr_set_pmsi_tnl_type
      Src: /src/frr/bgpd/bgp_evpn.c:2094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2101,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2102,1
    - Dst: bgp_evpn_get_rmac_nexthop
      Src: /src/frr/bgpd/bgp_evpn.c:2104,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:2107,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:2110,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:2112,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn.c:2116,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn.c:2119,1
    - Dst: bgp_evpn_route_add_l3_ecomm_ok
      Src: /src/frr/bgpd/bgp_evpn.c:2125,1
    - Dst: build_evpn_route_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:2129,1
    - Dst: bgp_evpn_vni_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:2134,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:2137,1
    - Dst: update_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2141,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:2145,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_evpn.c:2149,1
    - Dst: evpn_route_select_install
      Src: /src/frr/bgpd/bgp_evpn.c:2159,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2165,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2168,1
    - Dst: evpn_cleanup_local_non_best_route
      Src: /src/frr/bgpd/bgp_evpn.c:2170,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_evpn.c:2180,1
    - Dst: evpn_zebra_uninstall
      Src: /src/frr/bgpd/bgp_evpn.c:2182,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/bgp_evpn.c:2185,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2187,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:2197,1
    - Dst: update_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2199,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:2205,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2206,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_evpn.c:2210,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 60
    argCount: 6
    argNames:
    - bgp
    - vpn
    - p
    - flags
    - seq
    - esi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - uint8_t
    - uint32_t
    - esi_t*
    assertStmts:
    - condition: (pi)
      pos:
        line_end: 2144
        line_start: 2144
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 2213
      start: 2057
    functionDepth: 5
    functionLinenumber: 2057
    functionLinenumberEnd: 2213
    functionName: update_evpn_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_get_rmac_nexthop
    - update_evpn_route_entry
    - esi_to_str
    - bgp_path_info_lock
    - bgp_evpn_attr_is_sync
    - bgp_evpn_global_node_get
    - evpn_route_select_install
    - bgp_path_info_unlock
    - memset
    - vni2label
    - build_evpn_route_extcomm
    - zlog_debug
    - bgp_debug_zebra
    - evpn_zebra_uninstall
    - bgp_attr_default_set
    - assert
    - bgp_dest_unlock_node
    - aspath_unintern
    - bgp_process
    - memcpy
    - bgp_evpn_vni_node_get
    - vrf_id_to_name
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - is_evpn_prefix_ipaddr_none
    - SET_FLAG
    - bgp_evpn_route_add_l3_ecomm_ok
    - evpn_cleanup_local_non_best_route
    - bgp_evpn_is_esi_valid
    - bgp_attr_set_pmsi_tnl_type
    linkageType: ''
    returnType: int
    signature: "int update_evpn_route(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t
      \    struct prefix_evpn *p, uint8_t flags,\n\t\t\t     uint32_t seq, esi_t *esi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2228,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn.c:2239,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - dest
    - pi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct bgp_path_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2219
    functionDepth: 1
    functionLinenumber: 2219
    functionLinenumberEnd: 2240
    functionName: delete_evpn_route_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - bgp_path_info_delete
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void delete_evpn_route_entry(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t\t
      \   struct bgp_dest *dest,\n\t\t\t\t    struct bgp_path_info **pi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:2251,1
    - Dst: bgp_evpn_global_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:2256,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2261,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:2263,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - bgp_vrf
    - evp
    argTypes:
    - struct bgp*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2243
    functionDepth: 2
    functionLinenumber: 2243
    functionLinenumberEnd: 2266
    functionName: delete_evpn_type5_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_get_evpn
    - bgp_evpn_global_node_lookup
    - delete_evpn_route_entry
    - bgp_process
    linkageType: ''
    returnType: int
    signature: int delete_evpn_type5_route(struct bgp *bgp_vrf, struct prefix_evpn
      *evp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_vni_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:2285,1
    - Dst: bgp_evpn_global_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:2293,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2297,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:2303,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2304,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2309,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn.c:2311,1
    - Dst: evpn_route_select_install
      Src: /src/frr/bgpd/bgp_evpn.c:2312,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - bgp
    - vpn
    - p
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2317
      start: 2272
    functionDepth: 4
    functionLinenumber: 2272
    functionLinenumberEnd: 2317
    functionName: delete_evpn_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_path_info_reap
    - bgp_evpn_global_node_lookup
    - evpn_route_select_install
    - delete_evpn_route_entry
    - bgp_process
    - bgp_evpn_vni_node_lookup
    linkageType: ''
    returnType: int
    signature: "int delete_evpn_route(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t
      \    struct prefix_evpn *p)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2337,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:2344,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:2346,1
    - Dst: evpn_type2_path_info_get_ip
      Src: /src/frr/bgpd/bgp_evpn.c:2348,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:2351,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn.c:2353,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_evpn.c:2361,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:2370,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:2373,1
    - Dst: bgp_evpn_get_rmac_nexthop
      Src: /src/frr/bgpd/bgp_evpn.c:2374,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn.c:2375,1
    - Dst: bgp_evpn_route_add_l3_ecomm_ok
      Src: /src/frr/bgpd/bgp_evpn.c:2379,1
    - Dst: build_evpn_route_extcomm
      Src: /src/frr/bgpd/bgp_evpn.c:2384,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:2385,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:2387,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:2390,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:2392,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn.c:2395,1
    - Dst: update_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2400,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:2404,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_evpn.c:2407,1
    - Dst: evpn_route_select_install
      Src: /src/frr/bgpd/bgp_evpn.c:2418,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2420,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2423,1
    - Dst: evpn_cleanup_local_non_best_route
      Src: /src/frr/bgpd/bgp_evpn.c:2425,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_evpn.c:2435,1
    - Dst: evpn_zebra_uninstall
      Src: /src/frr/bgpd/bgp_evpn.c:2437,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/bgp_evpn.c:2443,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:2447,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:2449,1
    - Dst: update_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2450,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:2453,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:2457,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2458,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_evpn.c:2462,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 55
    argCount: 5
    argNames:
    - bgp
    - vpn
    - dest
    - local_pi
    - caller
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_dest*
    - struct bgp_path_info*
    - char*
    assertStmts:
    - condition: (pi)
      pos:
        line_end: 2403
        line_start: 2403
        source_file: /src/frr/bgpd/bgp_evpn.c
    - condition: (global_dest)
      pos:
        line_end: 2448
        line_start: 2448
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 2463
      start: 2319
    functionDepth: 5
    functionLinenumber: 2319
    functionLinenumberEnd: 2463
    functionName: bgp_evpn_update_type2_route_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_get_rmac_nexthop
    - update_evpn_route_entry
    - esi_to_str
    - bgp_path_info_lock
    - bgp_evpn_attr_is_sync
    - bgp_evpn_global_node_get
    - evpn_type2_path_info_get_ip
    - evpn_route_select_install
    - bgp_path_info_unlock
    - mac_mobility_seqnum
    - evpn_type2_prefix_global_copy
    - evpn_type2_path_info_get_mac
    - vni2label
    - build_evpn_route_extcomm
    - zlog_debug
    - bgp_debug_zebra
    - evpn_zebra_uninstall
    - bgp_attr_default_set
    - assert
    - bgp_dest_unlock_node
    - aspath_unintern
    - is_evpn_prefix_ipaddr_v6
    - bgp_process
    - memcpy
    - vrf_id_to_name
    - CHECK_FLAG
    - is_evpn_prefix_ipaddr_none
    - bgp_evpn_route_add_l3_ecomm_ok
    - evpn_cleanup_local_non_best_route
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_update_type2_route_entry(struct bgp *bgp, struct bgpevpn
      *vpn,\n\t\t\t\t       struct bgp_dest *dest,\n\t\t\t\t       struct bgp_path_info
      *local_pi,\n\t\t\t\t       const char *caller)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2471,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2477,1
    - Dst: bgp_evpn_update_type2_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2488,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 3
    argNames:
    - bgp
    - vpn
    - dest
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2489
      start: 2465
    functionDepth: 6
    functionLinenumber: 2465
    functionLinenumberEnd: 2489
    functionName: update_type2_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_get_prefix
    - bgp_evpn_update_type2_route_entry
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void update_type2_route(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t
      \      struct bgp_dest *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:2503,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:2504,1
    - Dst: update_type2_route
      Src: /src/frr/bgpd/bgp_evpn.c:2505,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:2507,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:2508,1
    - Dst: update_type2_route
      Src: /src/frr/bgpd/bgp_evpn.c:2509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2510
      start: 2495
    functionDepth: 7
    functionLinenumber: 2495
    functionLinenumberEnd: 2510
    functionName: update_all_type2_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_table_top
    - bgp_route_next
    - update_type2_route
    linkageType: ''
    returnType: void
    signature: void update_all_type2_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:2527,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn.c:2530,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:2531,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:2532,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2534,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2540,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:2542,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2516
    functionDepth: 2
    functionLinenumber: 2516
    functionLinenumberEnd: 2548
    functionName: delete_global_type2_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_node_lookup
    - delete_evpn_route_entry
    - bgp_process
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void delete_global_type2_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2557,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:2562,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn.c:2566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bgp
    - dest
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2567
      start: 2550
    functionDepth: 2
    functionLinenumber: 2550
    functionLinenumberEnd: 2567
    functionName: delete_vni_type2_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_get_prefix
    - bgp_path_info_reap
    - delete_evpn_route_entry
    linkageType: ''
    returnType: void
    signature: void delete_vni_type2_route(struct bgp *bgp, struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:2576,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:2577,1
    - Dst: delete_vni_type2_route
      Src: /src/frr/bgpd/bgp_evpn.c:2578,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:2580,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:2581,1
    - Dst: delete_vni_type2_route
      Src: /src/frr/bgpd/bgp_evpn.c:2582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2583
      start: 2569
    functionDepth: 3
    functionLinenumber: 2569
    functionLinenumberEnd: 2583
    functionName: delete_vni_type2_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_table_top
    - bgp_route_next
    - delete_vni_type2_route
    linkageType: ''
    returnType: void
    signature: void delete_vni_type2_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: delete_global_type2_routes
      Src: /src/frr/bgpd/bgp_evpn.c:2595,1
    - Dst: delete_vni_type2_routes
      Src: /src/frr/bgpd/bgp_evpn.c:2596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2597
      start: 2589
    functionDepth: 4
    functionLinenumber: 2589
    functionLinenumberEnd: 2597
    functionName: delete_all_type2_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - delete_vni_type2_routes
    - delete_global_type2_routes
    linkageType: ''
    returnType: void
    signature: void delete_all_type2_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:2608,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:2609,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2610,1
    - Dst: bgp_evpn_remote_ip_hash_del
      Src: /src/frr/bgpd/bgp_evpn.c:2612,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn.c:2613,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn.c:2614,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:2618,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:2619,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2620,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn.c:2622,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn.c:2623,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2602
    functionDepth: 1
    functionLinenumber: 2602
    functionLinenumberEnd: 2626
    functionName: delete_all_vni_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_path_info_reap
    - bgp_table_top
    - bgp_path_info_delete
    - bgp_dest_get_bgp_path_info
    - bgp_evpn_remote_ip_hash_del
    linkageType: ''
    returnType: void
    signature: void delete_all_vni_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2644
      start: 2629
    functionDepth: 0
    functionLinenumber: 2629
    functionLinenumberEnd: 2644
    functionName: bgp_evpn_vni_flood_mode_get
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_vni_flood_mode_get(struct bgp *bgp,\n\t\t\t\t\tstruct
      bgpevpn *vpn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: update_type1_routes_for_evi
      Src: /src/frr/bgpd/bgp_evpn.c:2657,1
    - Dst: bgp_evpn_vni_flood_mode_get
      Src: /src/frr/bgpd/bgp_evpn.c:2664,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2666,1
    - Dst: update_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:2667,1
    - Dst: update_all_type2_routes
      Src: /src/frr/bgpd/bgp_evpn.c:2672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2674
      start: 2652
    functionDepth: 8
    functionLinenumber: 2652
    functionLinenumberEnd: 2674
    functionName: update_routes_for_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - update_all_type2_routes
    - bgp_evpn_vni_flood_mode_get
    - build_evpn_type3_prefix
    - update_evpn_route
    - update_type1_routes_for_evi
    linkageType: ''
    returnType: int
    signature: int update_routes_for_vni(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_all_type2_routes
      Src: /src/frr/bgpd/bgp_evpn.c:2690,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2692,1
    - Dst: delete_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:2693,1
    - Dst: delete_all_vni_routes
      Src: /src/frr/bgpd/bgp_evpn.c:2698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2682
    functionDepth: 5
    functionLinenumber: 2682
    functionLinenumberEnd: 2700
    functionName: delete_routes_for_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - delete_all_vni_routes
    - delete_all_type2_routes
    - build_evpn_type3_prefix
    - delete_evpn_route
    linkageType: ''
    returnType: int
    signature: int delete_routes_for_vni(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:2714,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2715,1
    - Dst: delete_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:2716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - bgp
    - vpn
    - mcast_grp
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2720
      start: 2707
    functionDepth: 5
    functionLinenumber: 2707
    functionLinenumberEnd: 2720
    functionName: bgp_evpn_mcast_grp_change
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_vni_live
    - delete_evpn_route
    - build_evpn_type3_prefix
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_mcast_grp_change(struct bgp *bgp, struct bgpevpn *vpn,\n\t\tstruct
      in_addr mcast_grp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn.c:2733,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:2737,1
    - Dst: bgp_tip_del
      Src: /src/frr/bgpd/bgp_evpn.c:2743,1
    - Dst: bgp_tip_add
      Src: /src/frr/bgpd/bgp_evpn.c:2744,1
    - Dst: bgp_filter_evpn_routes_upon_martian_nh_change
      Src: /src/frr/bgpd/bgp_evpn.c:2750,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2755,1
    - Dst: delete_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:2756,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - bgp
    - vpn
    - originator_ip
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2761
      start: 2728
    functionDepth: 5
    functionLinenumber: 2728
    functionLinenumberEnd: 2761
    functionName: handle_tunnel_ip_change
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_tip_add
    - delete_evpn_route
    - bgp_filter_evpn_routes_upon_martian_nh_change
    - IPV4_ADDR_SAME
    - build_evpn_type3_prefix
    - bgp_tip_del
    - is_vni_live
    linkageType: ''
    returnType: void
    signature: "void handle_tunnel_ip_change(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \   struct in_addr originator_ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn.c:2771,1
    - Dst: info_make
      Src: /src/frr/bgpd/bgp_evpn.c:2774,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2776,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_evpn.c:2777,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_evpn.c:2778,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2779,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:2781,1
    - Dst: bgp_path_info_add
      Src: /src/frr/bgpd/bgp_evpn.c:2787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - parent_pi
    - dest
    - attr
    argTypes:
    - struct bgp_path_info*
    - struct bgp_dest*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2790
      start: 2763
    functionDepth: 1
    functionLinenumber: 2763
    functionLinenumberEnd: 2790
    functionName: bgp_create_evpn_bgp_path_info
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_extra_get
    - bgp_path_info_add
    - info_make
    - bgp_path_info_lock
    - SET_FLAG
    - bgp_dest_lock_node
    - bgp_attr_intern
    - memcpy
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *\nbgp_create_evpn_bgp_path_info(struct bgp_path_info
      *parent_pi,\n\t\t\t      struct bgp_dest *dest, struct attr *attr)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:2813,1
    - Dst: ip_prefix_from_evpn_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2814,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:2816,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:2817,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:2819,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:2824,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:2827,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:2828,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:2831,1
    - Dst: evpn_convert_nexthop_to_ipv6
      Src: /src/frr/bgpd/bgp_evpn.c:2844,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_evpn.c:2847,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:2856,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:2857,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn.c:2859,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:2861,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:2865,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_evpn.c:2871,1
    - Dst: bgp_evpn_es_vrf_use_nhg
      Src: /src/frr/bgpd/bgp_evpn.c:2875,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2883,1
    - Dst: bgp_create_evpn_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2889,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:2892,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2893,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2894,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn.c:2899,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2902,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_evpn.c:2903,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn.c:2907,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn.c:2909,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:2911,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn.c:2913,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn.c:2915,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_evpn.c:2917,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_evpn.c:2922,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn.c:2924,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn.c:2926,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn.c:2927,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:2930,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_evpn.c:2933,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn.c:2938,1
    - Dst: bgp_evpn_path_nh_add
      Src: /src/frr/bgpd/bgp_evpn.c:2942,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_evpn.c:2944,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:2944,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:2948,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_evpn.c:2951,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_evpn.c:2951,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:2953,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:2955,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:2956,1
    - Dst: bgp_dest_get_lock_count
      Src: /src/frr/bgpd/bgp_evpn.c:2958,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 81
    argCount: 3
    argNames:
    - bgp_vrf
    - evp
    - parent_pi
    argTypes:
    - struct bgp*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2962
      start: 2795
    functionDepth: 2
    functionLinenumber: 2795
    functionLinenumberEnd: 2962
    functionName: install_evpn_route_entry_in_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_path_nh_add
    - bgp_attr_unintern
    - bgp_path_info_restore
    - is_evpn_prefix_ipaddr_v4
    - bgp_path_info_set_flag
    - IPV4_ADDR_SAME
    - BGP_DEBUG
    - bgp_attr_intern
    - attrhash_cmp
    - memset
    - bgp_dest_get_prefix
    - bgp_get_default
    - bgp_find_or_add_nexthop
    - inet_ntop
    - zlog_debug
    - bgp_debug_zebra
    - ip_prefix_from_evpn_prefix
    - evpn_convert_nexthop_to_ipv6
    - bgp_dest_unlock_node
    - bgp_evpn_es_vrf_use_nhg
    - monotime
    - bgp_dest_get_lock_count
    - vpn_leak_from_vrf_update
    - is_evpn_prefix_ipaddr_v6
    - bgp_process
    - memcpy
    - bgp_path_info_unset_flag
    - bgp_aggregate_increment
    - vrf_id_to_name
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_create_evpn_bgp_path_info
    - SET_FLAG
    - bgp_dest_get_bgp_path_info
    - IPV6_ADDR_SAME
    - bgp_node_get
    linkageType: ''
    returnType: int
    signature: "int install_evpn_route_entry_in_vrf(struct bgp *bgp_vrf,\n\t\t\t\t\t
      \  const struct prefix_evpn *evp,\n\t\t\t\t\t   struct bgp_path_info *parent_pi)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2979,1
    - Dst: bgp_create_evpn_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:2986,1
    - Dst: is_evpn_type2_dest_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:2990,1
    - Dst: evpn_type2_path_info_set_ip
      Src: /src/frr/bgpd/bgp_evpn.c:2991,1
    - Dst: evpn_type2_path_info_set_mac
      Src: /src/frr/bgpd/bgp_evpn.c:2994,1
    - Dst: bgp_evpn_attr_is_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:2998,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:3006,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:3007,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn.c:3011,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:3014,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_evpn.c:3015,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn.c:3018,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:3019,1
    - Dst: bgp_evpn_attr_is_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:3021,1
    - Dst: bgp_evpn_attr_is_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:3022,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn.c:3027,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn.c:3030,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:3031,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn.c:3035,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn.c:3039,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_evpn.c:3041,1
    - Dst: bgp_evpn_remote_ip_hash_add
      Src: /src/frr/bgpd/bgp_evpn.c:3045,1
    - Dst: evpn_route_select_install
      Src: /src/frr/bgpd/bgp_evpn.c:3048,1
    - Dst: bgp_evpn_route_get_local_path
      Src: /src/frr/bgpd/bgp_evpn.c:3055,1
    - Dst: bgp_evpn_update_type2_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:3057,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 5
    argNames:
    - bgp
    - vpn
    - p
    - dest
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3061
      start: 2967
    functionDepth: 6
    functionLinenumber: 2967
    functionLinenumberEnd: 3061
    functionName: install_evpn_route_entry_in_vni_common
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - bgp_path_info_restore
    - bgp_path_info_set_flag
    - memcmp
    - IPV4_ADDR_SAME
    - evpn_route_select_install
    - bgp_evpn_attr_is_local_es
    - bgp_evpn_remote_ip_hash_add
    - BGP_DEBUG
    - bgp_attr_intern
    - attrhash_cmp
    - bgp_evpn_route_get_local_path
    - bgp_evpn_update_type2_route_entry
    - evpn_type2_path_info_set_ip
    - zlog_debug
    - monotime
    - is_evpn_type2_dest_ipaddr_none
    - evpn_type2_path_info_set_mac
    - CHECK_FLAG
    - bgp_create_evpn_bgp_path_info
    - SET_FLAG
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: int
    signature: "int install_evpn_route_entry_in_vni_common(\n\tstruct bgp *bgp, struct
      bgpevpn *vpn, const struct prefix_evpn *p,\n\tstruct bgp_dest *dest, struct
      bgp_path_info *parent_pi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:3075,1
    - Dst: bgp_evpn_remote_ip_hash_del
      Src: /src/frr/bgpd/bgp_evpn.c:3083,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn.c:3086,1
    - Dst: evpn_route_select_install
      Src: /src/frr/bgpd/bgp_evpn.c:3089,1
    - Dst: bgp_evpn_route_get_local_path
      Src: /src/frr/bgpd/bgp_evpn.c:3095,1
    - Dst: bgp_evpn_attr_is_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:3096,1
    - Dst: bgp_evpn_update_type2_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:3097,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 5
    argNames:
    - bgp
    - vpn
    - p
    - dest
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3101
      start: 3066
    functionDepth: 6
    functionLinenumber: 3066
    functionLinenumberEnd: 3101
    functionName: uninstall_evpn_route_entry_in_vni_common
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_route_get_local_path
    - bgp_evpn_update_type2_route_entry
    - bgp_path_info_delete
    - evpn_route_select_install
    - bgp_evpn_attr_is_local_es
    - bgp_dest_get_bgp_path_info
    - bgp_evpn_remote_ip_hash_del
    linkageType: ''
    returnType: int
    signature: "int uninstall_evpn_route_entry_in_vni_common(\n\tstruct bgp *bgp,
      struct bgpevpn *vpn, const struct prefix_evpn *p,\n\tstruct bgp_dest *dest,
      struct bgp_path_info *parent_pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:3116,1
    - Dst: bgp_evpn_vni_ip_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:3120,1
    - Dst: install_evpn_route_entry_in_vni_common
      Src: /src/frr/bgpd/bgp_evpn.c:3122,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - bgp
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3128
      start: 3106
    functionDepth: 7
    functionLinenumber: 3106
    functionLinenumberEnd: 3128
    functionName: install_evpn_route_entry_in_vni_ip
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_none
    - bgp_evpn_vni_ip_node_get
    - bgp_dest_unlock_node
    - install_evpn_route_entry_in_vni_common
    linkageType: ''
    returnType: int
    signature: "int install_evpn_route_entry_in_vni_ip(struct bgp *bgp,\n\t\t\t\t\t
      \     struct bgpevpn *vpn,\n\t\t\t\t\t      const struct prefix_evpn *p,\n\t\t\t\t\t
      \     struct bgp_path_info *parent_pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_vni_mac_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:3146,1
    - Dst: install_evpn_route_entry_in_vni_common
      Src: /src/frr/bgpd/bgp_evpn.c:3148,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - bgp
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3154
      start: 3133
    functionDepth: 7
    functionLinenumber: 3133
    functionLinenumberEnd: 3154
    functionName: install_evpn_route_entry_in_vni_mac
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_evpn_vni_mac_node_get
    - install_evpn_route_entry_in_vni_common
    linkageType: ''
    returnType: int
    signature: "int install_evpn_route_entry_in_vni_mac(struct bgp *bgp,\n\t\t\t\t\t
      \      struct bgpevpn *vpn,\n\t\t\t\t\t       const struct prefix_evpn *p,\n\t\t\t\t\t
      \      struct bgp_path_info *parent_pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:3169,1
    - Dst: bgp_evpn_vni_ip_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:3173,1
    - Dst: uninstall_evpn_route_entry_in_vni_common
      Src: /src/frr/bgpd/bgp_evpn.c:3177,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - bgp
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3183
      start: 3159
    functionDepth: 7
    functionLinenumber: 3159
    functionLinenumberEnd: 3183
    functionName: uninstall_evpn_route_entry_in_vni_ip
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_none
    - bgp_dest_unlock_node
    - bgp_evpn_vni_ip_node_lookup
    - uninstall_evpn_route_entry_in_vni_common
    linkageType: ''
    returnType: int
    signature: "int uninstall_evpn_route_entry_in_vni_ip(struct bgp *bgp,\n\t\t\t\t\t\tstruct
      bgpevpn *vpn,\n\t\t\t\t\t\tconst struct prefix_evpn *p,\n\t\t\t\t\t\tstruct
      bgp_path_info *parent_pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_vni_mac_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:3201,1
    - Dst: uninstall_evpn_route_entry_in_vni_common
      Src: /src/frr/bgpd/bgp_evpn.c:3205,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - bgp
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3211
      start: 3188
    functionDepth: 7
    functionLinenumber: 3188
    functionLinenumberEnd: 3211
    functionName: uninstall_evpn_route_entry_in_vni_mac
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_evpn_vni_mac_node_lookup
    - uninstall_evpn_route_entry_in_vni_common
    linkageType: ''
    returnType: int
    signature: "int uninstall_evpn_route_entry_in_vni_mac(struct bgp *bgp, struct
      bgpevpn *vpn,\n\t\t\t\t      const struct prefix_evpn *p,\n\t\t\t\t      struct
      bgp_path_info *parent_pi)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:3228,1
    - Dst: ip_prefix_from_evpn_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:3229,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:3231,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:3232,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3234,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:3239,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:3242,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:3246,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:3253,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3259,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_evpn.c:3263,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:3264,1
    - Dst: bgp_dest_get_lock_count
      Src: /src/frr/bgpd/bgp_evpn.c:3265,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_evpn.c:3269,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_evpn.c:3269,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_evpn.c:3271,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:3271,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn.c:3275,1
    - Dst: bgp_evpn_path_nh_del
      Src: /src/frr/bgpd/bgp_evpn.c:3278,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:3281,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3284,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - bgp_vrf
    - evp
    - parent_pi
    argTypes:
    - struct bgp*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3287
      start: 3216
    functionDepth: 1
    functionLinenumber: 3216
    functionLinenumberEnd: 3287
    functionName: uninstall_evpn_route_entry_in_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - is_evpn_prefix_ipaddr_v4
    - memset
    - vrf_id_to_name
    - bgp_get_default
    - bgp_dest_get_prefix
    - bgp_node_lookup
    - bgp_dest_get_bgp_path_info
    - bgp_path_info_delete
    - zlog_debug
    - bgp_dest_get_lock_count
    - vpn_leak_from_vrf_withdraw
    - bgp_evpn_path_nh_del
    - bgp_debug_zebra
    - ip_prefix_from_evpn_prefix
    - bgp_process
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: int
    signature: "int uninstall_evpn_route_entry_in_vrf(struct bgp *bgp_vrf,\n\t\t\t\t\t
      \    const struct prefix_evpn *evp,\n\t\t\t\t\t     struct bgp_path_info *parent_pi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_evpn.c:3298,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:3299,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3301,1
    - Dst: install_evpn_route_entry_in_vni_mac
      Src: /src/frr/bgpd/bgp_evpn.c:3303,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3306,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3309,1
    - Dst: install_evpn_route_entry_in_vni_ip
      Src: /src/frr/bgpd/bgp_evpn.c:3314,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3317,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - bgp
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3326
      start: 3292
    functionDepth: 8
    functionLinenumber: 3292
    functionLinenumberEnd: 3326
    functionName: install_evpn_route_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - install_evpn_route_entry_in_vni_mac
    - bgp_debug_update
    - vrf_id_to_name
    - install_evpn_route_entry_in_vni_ip
    - zlog_debug
    - flog_err
    linkageType: ''
    returnType: int
    signature: "int install_evpn_route_entry(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \   const struct prefix_evpn *p,\n\t\t\t\t    struct bgp_path_info *parent_pi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_evpn.c:3337,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:3338,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3340,1
    - Dst: uninstall_evpn_route_entry_in_vni_ip
      Src: /src/frr/bgpd/bgp_evpn.c:3342,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3345,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3348,1
    - Dst: uninstall_evpn_route_entry_in_vni_mac
      Src: /src/frr/bgpd/bgp_evpn.c:3353,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3356,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - bgp
    - vpn
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3365
      start: 3331
    functionDepth: 8
    functionLinenumber: 3331
    functionLinenumberEnd: 3365
    functionName: uninstall_evpn_route_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - uninstall_evpn_route_entry_in_vni_mac
    - bgp_debug_update
    - vrf_id_to_name
    - uninstall_evpn_route_entry_in_vni_ip
    - zlog_debug
    - flog_err
    linkageType: ''
    returnType: int
    signature: "int uninstall_evpn_route_entry(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \     const struct prefix_evpn *p,\n\t\t\t\t      struct bgp_path_info *parent_pi)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:3378,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_evpn.c:3380,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:3383,1
    - Dst: lookup_vrf_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:3407,1
    - Dst: is_vrf_present_in_irt_vrfs
      Src: /src/frr/bgpd/bgp_evpn.c:3409,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:3422,1
    - Dst: mask_ecom_global_admin
      Src: /src/frr/bgpd/bgp_evpn.c:3423,1
    - Dst: lookup_vrf_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:3424,1
    - Dst: is_vrf_present_in_irt_vrfs
      Src: /src/frr/bgpd/bgp_evpn.c:3427,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 2
    argNames:
    - bgp_vrf
    - pi
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts:
    - condition: (attr)
      pos:
        line_end: 3377
        line_start: 3377
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 3432
      start: 3371
    functionDepth: 2
    functionLinenumber: 3371
    functionLinenumberEnd: 3432
    functionName: is_route_matching_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_vrf_present_in_irt_vrfs
    - bgp_attr_get_ecommunity
    - ATTR_FLAG_BIT
    - mask_ecom_global_admin
    - memcpy
    - lookup_vrf_import_rt
    - assert
    linkageType: ''
    returnType: int
    signature: "int is_route_matching_for_vrf(struct bgp *bgp_vrf,\n\t\t\t\t     struct
      bgp_path_info *pi)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:3445,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_evpn.c:3447,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:3450,1
    - Dst: lookup_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:3474,1
    - Dst: is_vni_present_in_irt_vnis
      Src: /src/frr/bgpd/bgp_evpn.c:3476,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:3489,1
    - Dst: mask_ecom_global_admin
      Src: /src/frr/bgpd/bgp_evpn.c:3490,1
    - Dst: lookup_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:3491,1
    - Dst: is_vni_present_in_irt_vnis
      Src: /src/frr/bgpd/bgp_evpn.c:3494,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - bgp
    - vpn
    - pi
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_path_info*
    assertStmts:
    - condition: (attr)
      pos:
        line_end: 3444
        line_start: 3444
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 3499
      start: 3438
    functionDepth: 2
    functionLinenumber: 3438
    functionLinenumberEnd: 3499
    functionName: is_route_matching_for_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_vni_present_in_irt_vnis
    - lookup_import_rt
    - bgp_attr_get_ecommunity
    - ATTR_FLAG_BIT
    - mask_ecom_global_admin
    - memcpy
    - assert
    linkageType: ''
    returnType: int
    signature: "int is_route_matching_for_vni(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \    struct bgp_path_info *pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn.c:3516,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_evpn.c:3517,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_evpn.c:3520,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:3522,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - bgp_vrf
    - evp
    - pi
    argTypes:
    - struct bgp*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3531
      start: 3505
    functionDepth: 1
    functionLinenumber: 3505
    functionLinenumberEnd: 3531
    functionName: bgp_evpn_route_rmac_self_check
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - bgp_dump_attr
    - bgp_debug_update
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_route_rmac_self_check(struct bgp *bgp_vrf,\n\t\t\t\t\t
      \ const struct prefix_evpn *evp,\n\t\t\t\t\t  struct bgp_path_info *pi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn.c:3542,1
    - Dst: bgp_evpn_attr_is_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:3545,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn.c:3546,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:3549,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn.c:3552,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - bgp_vrf
    - evp
    - pi
    - install
    argTypes:
    - struct bgp*
    - struct prefix_evpn*
    - struct bgp_path_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3559
      start: 3534
    functionDepth: 1
    functionLinenumber: 3534
    functionLinenumberEnd: 3559
    functionName: bgp_evpn_skip_vrf_import_of_local_es
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_attr_get_esi
    - esi_to_str
    - zlog_debug
    - bgp_evpn_attr_is_local_es
    - BGP_DEBUG
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_skip_vrf_import_of_local_es(struct bgp *bgp_vrf,\n\t\t\t\t
      \    const struct prefix_evpn *evp,\n\t\t\t\t     struct bgp_path_info *pi,
      int install)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:3571,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:3576,1
    - Dst: is_route_matching_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:3581,1
    - Dst: bgp_evpn_route_rmac_self_check
      Src: /src/frr/bgpd/bgp_evpn.c:3582,1
    - Dst: bgp_evpn_skip_vrf_import_of_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:3586,1
    - Dst: install_evpn_route_entry_in_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:3591,1
    - Dst: uninstall_evpn_route_entry_in_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:3593,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3597,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3600,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 3
    argNames:
    - bgp_vrf
    - pi
    - install
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3604
      start: 3565
    functionDepth: 3
    functionLinenumber: 3565
    functionLinenumberEnd: 3604
    functionName: bgp_evpn_route_entry_install_if_vrf_match
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_route_matching_for_vrf
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - vrf_id_to_name
    - install_evpn_route_entry_in_vrf
    - uninstall_evpn_route_entry_in_vrf
    - flog_err
    - bgp_evpn_route_rmac_self_check
    - bgp_evpn_skip_vrf_import_of_local_es
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_route_entry_install_if_vrf_match(struct bgp *bgp_vrf,\n\t\t\t\t\t
      \     struct bgp_path_info *pi,\n\t\t\t\t\t      int install)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:3622,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:3630,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:3631,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn.c:3632,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:3636,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:3637,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:3639,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:3649,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:3650,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:3653,1
    - Dst: bgp_evpn_route_entry_install_if_vrf_match
      Src: /src/frr/bgpd/bgp_evpn.c:3655,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3658,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3659,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - bgp_vrf
    - install
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3667
      start: 3610
    functionDepth: 4
    functionLinenumber: 3610
    functionLinenumberEnd: 3667
    functionName: install_uninstall_routes_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - is_evpn_prefix_ipaddr_v4
    - bgp_get_evpn
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_evpn_route_entry_install_if_vrf_match
    - bgp_dest_get_bgp_path_info
    - is_evpn_prefix_ipaddr_v6
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: int
    signature: int install_uninstall_routes_for_vrf(struct bgp *bgp_vrf, int install)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:3695,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:3696,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn.c:3697,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:3701,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:3702,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:3704,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:3710,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:3714,1
    - Dst: is_route_matching_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:3719,1
    - Dst: install_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:3721,1
    - Dst: uninstall_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:3724,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3728,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3739,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:3740,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 4
    argNames:
    - bgp
    - vpn
    - rtype
    - install
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - bgp_evpn_route_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3749
      start: 3673
    functionDepth: 9
    functionLinenumber: 3673
    functionLinenumberEnd: 3749
    functionName: install_uninstall_routes_for_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - is_route_matching_for_vni
    - flog_err
    - bgp_dest_get_bgp_path_info
    - install_evpn_route_entry
    - uninstall_evpn_route_entry
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: int
    signature: "int install_uninstall_routes_for_vni(struct bgp *bgp,\n\t\t\t\t\t
      \   struct bgpevpn *vpn,\n\t\t\t\t\t    bgp_evpn_route_type rtype,\n\t\t\t\t\t
      \   int install)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_uninstall_routes_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:3756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3758
      start: 3754
    functionDepth: 5
    functionLinenumber: 3754
    functionLinenumberEnd: 3758
    functionName: install_routes_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - install_uninstall_routes_for_vrf
    linkageType: ''
    returnType: int
    signature: int install_routes_for_vrf(struct bgp *bgp_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: install_uninstall_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:3772,1
    - Dst: install_uninstall_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:3777,1
    - Dst: install_uninstall_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:3782,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3784
      start: 3765
    functionDepth: 10
    functionLinenumber: 3765
    functionLinenumberEnd: 3784
    functionName: install_routes_for_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - install_uninstall_routes_for_vni
    linkageType: ''
    returnType: int
    signature: int install_routes_for_vni(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_uninstall_routes_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:3789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3791
      start: 3787
    functionDepth: 5
    functionLinenumber: 3787
    functionLinenumberEnd: 3791
    functionName: uninstall_routes_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 2
    functionsReached:
    - install_uninstall_routes_for_vrf
    linkageType: ''
    returnType: int
    signature: int uninstall_routes_for_vrf(struct bgp *bgp_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: install_uninstall_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:3805,1
    - Dst: install_uninstall_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:3810,1
    - Dst: install_uninstall_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:3816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3818
      start: 3797
    functionDepth: 10
    functionLinenumber: 3797
    functionLinenumberEnd: 3818
    functionName: uninstall_routes_for_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 2
    functionsReached:
    - install_uninstall_routes_for_vni
    linkageType: ''
    returnType: int
    signature: int uninstall_routes_for_vni(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:3838,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:3839,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:3842,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:3846,1
    - Dst: bgp_evpn_skip_vrf_import_of_local_es
      Src: /src/frr/bgpd/bgp_evpn.c:3846,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:3850,1
    - Dst: install_evpn_route_entry_in_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:3851,1
    - Dst: uninstall_evpn_route_entry_in_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:3853,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3857,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:3861,1
    - Dst: install_uninstall_route_in_vnis
      Src: /src/frr/bgpd/bgp_evpn.c:3872,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:3883,1
    - Dst: install_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:3887,1
    - Dst: uninstall_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:3889,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:3892,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 7
    argNames:
    - bgp_def
    - afi
    - safi
    - evp
    - pi
    - vrfs
    - install
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct prefix_evpn*
    - struct bgp_path_info*
    - struct list*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3904
      start: 3823
    functionDepth: 9
    functionLinenumber: 3823
    functionLinenumberEnd: 3904
    functionName: install_uninstall_route_in_vrfs
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v4
    - vrf_id_to_name
    - install_evpn_route_entry_in_vrf
    - uninstall_evpn_route_entry_in_vrf
    - flog_err
    - install_uninstall_route_in_vnis
    - is_evpn_prefix_ipaddr_v6
    - ALL_LIST_ELEMENTS
    - if
    - is_vni_live
    - install_evpn_route_entry
    - uninstall_evpn_route_entry
    - bgp_evpn_skip_vrf_import_of_local_es
    linkageType: ''
    returnType: int
    signature: "int install_uninstall_route_in_vrfs(struct bgp *bgp_def, afi_t afi,\n\t\t\t\t\t
      \  safi_t safi, struct prefix_evpn *evp,\n\t\t\t\t\t   struct bgp_path_info
      *pi,\n\t\t\t\t\t   struct list *vrfs, int install)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:3921,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_evpn.c:3934,1
    - Dst: evpn_type1_prefix_vni_ip_copy
      Src: /src/frr/bgpd/bgp_evpn.c:3941,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn.c:3944,1
    - Dst: bgp_evpn_path_es_link
      Src: /src/frr/bgpd/bgp_evpn.c:3972,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn.c:3973,1
    - Dst: lookup_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:3985,1
    - Dst: install_uninstall_route_in_vnis
      Src: /src/frr/bgpd/bgp_evpn.c:3987,1
    - Dst: lookup_vrf_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:3991,1
    - Dst: install_uninstall_route_in_vrfs
      Src: /src/frr/bgpd/bgp_evpn.c:3993,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4008,1
    - Dst: mask_ecom_global_admin
      Src: /src/frr/bgpd/bgp_evpn.c:4009,1
    - Dst: lookup_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:4011,1
    - Dst: lookup_vrf_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:4014,1
    - Dst: install_uninstall_route_in_vnis
      Src: /src/frr/bgpd/bgp_evpn.c:4018,1
    - Dst: install_uninstall_route_in_vrfs
      Src: /src/frr/bgpd/bgp_evpn.c:4022,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn.c:4033,1
    - Dst: bgp_evpn_is_es_local
      Src: /src/frr/bgpd/bgp_evpn.c:4034,1
    - Dst: bgp_evpn_es_route_install_uninstall
      Src: /src/frr/bgpd/bgp_evpn.c:4035,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 49
    argCount: 8
    argNames:
    - bgp
    - afi
    - safi
    - p
    - pi
    - import
    - in_vni_rt
    - in_vrf_rt
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct prefix*
    - struct bgp_path_info*
    - int
    - bool
    - bool
    assertStmts:
    - condition: (attr)
      pos:
        line_end: 3920
        line_start: 3920
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 4041
      start: 3909
    functionDepth: 10
    functionLinenumber: 3909
    functionLinenumberEnd: 4041
    functionName: bgp_evpn_install_uninstall_table
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_attr_get_esi
    - lookup_import_rt
    - install_uninstall_route_in_vrfs
    - bgp_attr_get_ecommunity
    - ATTR_FLAG_BIT
    - bgp_evpn_es_find
    - mask_ecom_global_admin
    - bgp_evpn_es_route_install_uninstall
    - bgp_evpn_path_es_link
    - bgp_evpn_is_es_local
    - evpn_type1_prefix_vni_ip_copy
    - install_uninstall_route_in_vnis
    - memcpy
    - lookup_vrf_import_rt
    - assert
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_install_uninstall_table(struct bgp *bgp, afi_t afi,\n\t\t\t\t\t
      \   safi_t safi, const struct prefix *p,\n\t\t\t\t\t    struct bgp_path_info
      *pi,\n\t\t\t\t\t    int import, bool in_vni_rt,\n\t\t\t\t\t    bool in_vrf_rt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_install_uninstall_table
      Src: /src/frr/bgpd/bgp_evpn.c:4050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - bgp
    - afi
    - safi
    - p
    - pi
    - import
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct prefix*
    - struct bgp_path_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4052
      start: 4046
    functionDepth: 11
    functionLinenumber: 4046
    functionLinenumberEnd: 4052
    functionName: install_uninstall_evpn_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_install_uninstall_table
    linkageType: ''
    returnType: int
    signature: "int install_uninstall_evpn_route(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\t\tconst struct prefix *p,\n\t\t\t\t\tstruct bgp_path_info *pi,
      int import)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:4058,1
    - Dst: install_uninstall_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:4062,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pi
    - import
    argTypes:
    - struct bgp_path_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4064
      start: 4054
    functionDepth: 12
    functionLinenumber: 4054
    functionLinenumberEnd: 4064
    functionName: bgp_evpn_import_type2_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - install_uninstall_evpn_route
    - bgp_get_evpn
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_import_type2_route(struct bgp_path_info *pi, int import)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: evpn_default_originate_set
      Src: /src/frr/bgpd/bgp_evpn.c:4073,1
    - Dst: bgp_evpn_install_uninstall_default_route
      Src: /src/frr/bgpd/bgp_evpn.c:4074,1
    - Dst: advertise_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4078,1
    - Dst: bgp_evpn_withdraw_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4079,1
    - Dst: evpn_default_originate_set
      Src: /src/frr/bgpd/bgp_evpn.c:4082,1
    - Dst: bgp_evpn_install_uninstall_default_route
      Src: /src/frr/bgpd/bgp_evpn.c:4083,1
    - Dst: advertise_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4087,1
    - Dst: bgp_evpn_withdraw_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4088,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4089
      start: 4070
    functionDepth: 2
    functionLinenumber: 4070
    functionLinenumberEnd: 4089
    functionName: delete_withdraw_vrf_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_install_uninstall_default_route
    - advertise_type5_routes
    - evpn_default_originate_set
    - bgp_evpn_withdraw_type5_routes
    linkageType: ''
    returnType: void
    signature: void delete_withdraw_vrf_routes(struct bgp *bgp_vrf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:4099,1
    - Dst: advertise_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4104,1
    - Dst: bgp_evpn_advertise_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4105,1
    - Dst: evpn_default_originate_set
      Src: /src/frr/bgpd/bgp_evpn.c:4108,1
    - Dst: bgp_evpn_install_uninstall_default_route
      Src: /src/frr/bgpd/bgp_evpn.c:4109,1
    - Dst: advertise_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4113,1
    - Dst: bgp_evpn_advertise_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4114,1
    - Dst: evpn_default_originate_set
      Src: /src/frr/bgpd/bgp_evpn.c:4117,1
    - Dst: bgp_evpn_install_uninstall_default_route
      Src: /src/frr/bgpd/bgp_evpn.c:4118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4121
      start: 4095
    functionDepth: 2
    functionLinenumber: 4095
    functionLinenumberEnd: 4121
    functionName: update_advertise_vrf_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_advertise_type5_routes
    - evpn_default_originate_set
    - bgp_get_evpn
    - advertise_type5_routes
    - bgp_evpn_install_uninstall_default_route
    linkageType: ''
    returnType: void
    signature: void update_advertise_vrf_routes(struct bgp *bgp_vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_vrf_rd_configured
      Src: /src/frr/bgpd/bgp_evpn.c:4132,1
    - Dst: bgp_evpn_derive_auto_rd_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:4136,1
    - Dst: update_advertise_vrf_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4140
      start: 4129
    functionDepth: 3
    functionLinenumber: 4129
    functionLinenumberEnd: 4140
    functionName: update_router_id_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - update_advertise_vrf_routes
    - bgp_evpn_derive_auto_rd_for_vrf
    - is_vrf_rd_configured
    linkageType: ''
    returnType: void
    signature: void update_router_id_vrf(struct bgp *bgp_vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_vrf_rd_configured
      Src: /src/frr/bgpd/bgp_evpn.c:4150,1
    - Dst: delete_withdraw_vrf_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4155
      start: 4147
    functionDepth: 3
    functionLinenumber: 4147
    functionLinenumberEnd: 4155
    functionName: withdraw_router_id_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - delete_withdraw_vrf_routes
    - is_vrf_rd_configured
    linkageType: ''
    returnType: void
    signature: void withdraw_router_id_vrf(struct bgp *bgp_vrf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:4168,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:4178,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:4190,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:4192,1
    - Dst: evpn_type2_path_info_get_ip
      Src: /src/frr/bgpd/bgp_evpn.c:4194,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn.c:4197,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn.c:4198,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4202,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:4209,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:4211,1
    - Dst: update_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:4215,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:4218,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn.c:4225,1
    - Dst: bgp_evpn_mh_route_update
      Src: /src/frr/bgpd/bgp_evpn.c:4226,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:4231,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:4232,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 3
    argNames:
    - bgp
    - vpn
    - dest
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct bgp_dest*
    assertStmts:
    - condition: (global_dest)
      pos:
        line_end: 4210
        line_start: 4210
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 4233
      start: 4157
    functionDepth: 4
    functionLinenumber: 4157
    functionLinenumberEnd: 4233
    functionName: update_advertise_vni_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - assert
    - bgp_dest_unlock_node
    - evpn_type2_prefix_global_copy
    - evpn_type2_path_info_get_mac
    - update_evpn_route_entry
    - bgp_dest_get_prefix
    - bgp_evpn_es_find
    - bgp_evpn_global_node_get
    - is_evpn_prefix_ipaddr_none
    - evpn_type2_path_info_get_ip
    - mac_mobility_seqnum
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - memcpy
    - bgp_evpn_mh_route_update
    linkageType: ''
    returnType: void
    signature: "void update_advertise_vni_route(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \      struct bgp_dest *dest)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_vni_flood_mode_get
      Src: /src/frr/bgpd/bgp_evpn.c:4255,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:4257,1
    - Dst: bgp_evpn_vni_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:4258,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:4261,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:4267,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn.c:4273,1
    - Dst: update_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:4275,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_evpn.c:4277,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:4281,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:4282,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:4288,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:4289,1
    - Dst: update_advertise_vni_route
      Src: /src/frr/bgpd/bgp_evpn.c:4290,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:4292,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:4293,1
    - Dst: update_advertise_vni_route
      Src: /src/frr/bgpd/bgp_evpn.c:4294,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4295
      start: 4240
    functionDepth: 5
    functionLinenumber: 4240
    functionLinenumberEnd: 4295
    functionName: update_advertise_vni_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_route_next
    - update_advertise_vni_route
    - bgp_evpn_vni_flood_mode_get
    - update_evpn_route_entry
    - bgp_process
    - bgp_table_top
    - bgp_evpn_global_node_get
    - build_evpn_type3_prefix
    - bgp_dest_get_bgp_path_info
    - mac_mobility_seqnum
    - bgp_evpn_vni_node_lookup
    linkageType: ''
    returnType: void
    signature: void update_advertise_vni_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: delete_global_type2_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4312,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:4315,1
    - Dst: bgp_evpn_global_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:4316,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn.c:4320,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn.c:4326,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:4327,1
    - Dst: delete_global_ead_evi_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4333
      start: 4301
    functionDepth: 3
    functionLinenumber: 4301
    functionLinenumberEnd: 4333
    functionName: delete_withdraw_vni_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_evpn_global_node_lookup
    - delete_global_type2_routes
    - build_evpn_type3_prefix
    - delete_evpn_route_entry
    - bgp_process
    - delete_global_ead_evi_routes
    linkageType: ''
    returnType: int
    signature: int delete_withdraw_vni_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_rd_configured
      Src: /src/frr/bgpd/bgp_evpn.c:4346,1
    - Dst: bgp_evpn_derive_auto_rd
      Src: /src/frr/bgpd/bgp_evpn.c:4349,1
    - Dst: update_advertise_vni_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - bgp
    argTypes:
    - struct hash_bucket*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4351
      start: 4341
    functionDepth: 6
    functionLinenumber: 4341
    functionLinenumberEnd: 4351
    functionName: update_router_id_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - update_advertise_vni_routes
    - bgp_evpn_derive_auto_rd
    - is_rd_configured
    linkageType: ''
    returnType: void
    signature: void update_router_id_vni(struct hash_bucket *bucket, struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_rd_configured
      Src: /src/frr/bgpd/bgp_evpn.c:4364,1
    - Dst: delete_withdraw_vni_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - bgp
    argTypes:
    - struct hash_bucket*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4368
      start: 4359
    functionDepth: 4
    functionLinenumber: 4359
    functionLinenumberEnd: 4368
    functionName: withdraw_router_id_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - delete_withdraw_vni_routes
    - is_rd_configured
    linkageType: ''
    returnType: void
    signature: void withdraw_router_id_vni(struct hash_bucket *bucket, struct bgp
      *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:4380,1
    - Dst: bgp_evpn_vni_flood_mode_get
      Src: /src/frr/bgpd/bgp_evpn.c:4381,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:4385,1
    - Dst: update_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:4386,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4387,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4389
      start: 4374
    functionDepth: 6
    functionLinenumber: 4374
    functionLinenumberEnd: 4389
    functionName: create_advertise_type3
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_vni_flood_mode_get
    - flog_err
    - build_evpn_type3_prefix
    - update_evpn_route
    - is_vni_live
    linkageType: ''
    returnType: void
    signature: void create_advertise_type3(struct hash_bucket *bucket, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:4401,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:4404,1
    - Dst: delete_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:4405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4406
      start: 4395
    functionDepth: 5
    functionLinenumber: 4395
    functionLinenumberEnd: 4406
    functionName: delete_withdraw_type3
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_vni_live
    - delete_evpn_route
    - build_evpn_type3_prefix
    linkageType: ''
    returnType: void
    signature: void delete_withdraw_type3(struct hash_bucket *bucket, void *data)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4434,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_evpn.c:4440,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4441,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_evpn.c:4447,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_evpn.c:4456,1
    - Dst: bgp_evpn_is_esi_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn.c:4458,1
    - Dst: STREAM_FORWARD_GETP
      Src: /src/frr/bgpd/bgp_evpn.c:4463,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_evpn.c:4467,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_evpn.c:4468,1
    - Dst: STREAM_GETC
      Src: /src/frr/bgpd/bgp_evpn.c:4471,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_evpn.c:4475,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4477,1
    - Dst: STREAM_GETC
      Src: /src/frr/bgpd/bgp_evpn.c:4486,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4490,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_evpn.c:4502,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_evpn.c:4506,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_evpn.c:4510,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_evpn.c:4512,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_evpn.c:4517,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_evpn.c:4521,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4528,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_evpn.c:4533,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 62
    argCount: 7
    argNames:
    - peer
    - afi
    - safi
    - attr
    - pfx
    - psize
    - addpath_id
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct attr*
    - uint8_t*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4535
      start: 4411
    functionDepth: 1
    functionLinenumber: 4411
    functionLinenumberEnd: 4535
    functionName: process_type2_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_new
    - stream_put
    - STREAM_READABLE
    - STREAM_FORWARD_GETP
    - flog_err
    - STREAM_GETC
    - bgp_withdraw
    - bgp_evpn_is_esi_local_and_non_bypass
    - STREAM_GET
    - bgp_update
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int process_type2_route(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \      struct attr *attr, uint8_t *pfx, int psize,\n\t\t\t       uint32_t addpath_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4553,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_evpn.c:4564,1
    - Dst: bgp_attr_get_pmsi_tnl_type
      Src: /src/frr/bgpd/bgp_evpn.c:4565,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_evpn.c:4569,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4579,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:4583,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4589,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_evpn.c:4590,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4597,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4599,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_evpn.c:4608,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_evpn.c:4612,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 7
    argNames:
    - peer
    - afi
    - safi
    - attr
    - pfx
    - psize
    - addpath_id
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct attr*
    - uint8_t*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4616
      start: 4540
    functionDepth: 1
    functionLinenumber: 4540
    functionLinenumberEnd: 4616
    functionName: process_type3_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - memset
    - ATTR_FLAG_BIT
    - flog_err
    - bgp_withdraw
    - bgp_update
    - bgp_attr_get_pmsi_tnl_type
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int process_type3_route(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \      struct attr *attr, uint8_t *pfx, int psize,\n\t\t\t       uint32_t addpath_id)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4639,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4648,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:4652,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:4658,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4662,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4666,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_evpn.c:4667,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4673,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:4686,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4687,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:4689,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4690,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/bgpd/bgp_evpn.c:4693,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4694,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/bgpd/bgp_evpn.c:4697,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4698,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:4703,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:4704,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_evpn.c:4716,1
    - Dst: ipaddr_is_zero
      Src: /src/frr/bgpd/bgp_evpn.c:4717,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4718,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_evpn.c:4722,1
    - Dst: ipaddr_is_zero
      Src: /src/frr/bgpd/bgp_evpn.c:4724,1
    - Dst: is_zero_mac
      Src: /src/frr/bgpd/bgp_evpn.c:4727,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_evpn.c:4728,1
    - Dst: ipaddr_is_zero
      Src: /src/frr/bgpd/bgp_evpn.c:4729,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4730,1
    - Dst: is_mcast_mac
      Src: /src/frr/bgpd/bgp_evpn.c:4736,1
    - Dst: is_bcast_mac
      Src: /src/frr/bgpd/bgp_evpn.c:4736,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_evpn.c:4742,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_evpn.c:4749,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_evpn.c:4750,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_evpn.c:4755,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 68
    argCount: 7
    argNames:
    - peer
    - afi
    - safi
    - attr
    - pfx
    - psize
    - addpath_id
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct attr*
    - uint8_t*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4761
      start: 4621
    functionDepth: 1
    functionLinenumber: 4621
    functionLinenumberEnd: 4761
    functionName: process_type5_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_mcast_mac
    - is_bcast_mac
    - bgp_dump_attr
    - memset
    - ipaddr_is_zero
    - is_zero_mac
    - flog_err
    - SET_IPADDR_V6
    - zlog_warn
    - bgp_withdraw
    - bgp_evpn_is_esi_valid
    - bgp_update
    - ntohl
    - memcpy
    - SET_IPADDR_V4
    linkageType: ''
    returnType: int
    signature: "int process_type5_route(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \      struct attr *attr, uint8_t *pfx, int psize,\n\t\t\t       uint32_t addpath_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:4772,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:4780,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:4785,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4786,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4788,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4790,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:4791,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:4792,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:4793,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_evpn.c:4794,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4796,1
    - Dst: bgp_attr_get_evpn_overlay
      Src: /src/frr/bgpd/bgp_evpn.c:4799,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:4801,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_evpn.c:4802,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4805,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:4807,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_evpn.c:4808,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4810,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:4814,1
    - Dst: stream_put3
      Src: /src/frr/bgpd/bgp_evpn.c:4816,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 6
    argNames:
    - s
    - p
    - prd
    - label
    - num_labels
    - attr
    argTypes:
    - struct stream*
    - struct prefix*
    - struct prefix_rd*
    - mpls_label_t*
    - uint32_t
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4817
      start: 4763
    functionDepth: 1
    functionLinenumber: 4763
    functionLinenumberEnd: 4817
    functionName: evpn_mpattr_encode_type5
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - stream_put
    - memset
    - bgp_attr_get_evpn_overlay
    - stream_put_ipv4
    - stream_put3
    - IS_IPADDR_V4
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void evpn_mpattr_encode_type5(struct stream *s, const struct prefix
      *p,\n\t\t\t\t     const struct prefix_rd *prd,\n\t\t\t\t     mpls_label_t *label,
      uint32_t num_labels,\n\t\t\t\t     struct attr *attr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:4827,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:4830,1
    - Dst: is_vni_configured
      Src: /src/frr/bgpd/bgp_evpn.c:4831,1
    - Dst: bgp_evpn_free
      Src: /src/frr/bgpd/bgp_evpn.c:4832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - bgp
    argTypes:
    - struct hash_bucket*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4833
      start: 4822
    functionDepth: 6
    functionLinenumber: 4822
    functionLinenumberEnd: 4833
    functionName: cleanup_vni_on_disable
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_vni_configured
    - UNSET_FLAG
    - delete_routes_for_vni
    - bgp_evpn_free
    linkageType: ''
    returnType: void
    signature: void cleanup_vni_on_disable(struct hash_bucket *bucket, struct bgp
      *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: delete_all_vni_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4842,1
    - Dst: bgp_evpn_free
      Src: /src/frr/bgpd/bgp_evpn.c:4843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - bgp
    argTypes:
    - struct hash_bucket*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4844
      start: 4838
    functionDepth: 2
    functionLinenumber: 4838
    functionLinenumberEnd: 4844
    functionName: free_vni_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - delete_all_vni_routes
    - bgp_evpn_free
    linkageType: ''
    returnType: void
    signature: void free_vni_entry(struct hash_bucket *bucket, struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: form_auto_rt
      Src: /src/frr/bgpd/bgp_evpn.c:4853,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:4856,1
    - Dst: bgp_evpn_map_vrf_to_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:4861,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4862
      start: 4849
    functionDepth: 2
    functionLinenumber: 4849
    functionLinenumberEnd: 4862
    functionName: evpn_auto_rt_import_add_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - form_auto_rt
    - bgp_evpn_map_vrf_to_its_rts
    - bgp_get_evpn
    linkageType: ''
    returnType: void
    signature: void evpn_auto_rt_import_add_for_vrf(struct bgp *bgp_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: evpn_rt_delete_auto
      Src: /src/frr/bgpd/bgp_evpn.c:4869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4871
      start: 4867
    functionDepth: 1
    functionLinenumber: 4867
    functionLinenumberEnd: 4871
    functionName: evpn_auto_rt_import_delete_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_rt_delete_auto
    linkageType: ''
    returnType: void
    signature: void evpn_auto_rt_import_delete_for_vrf(struct bgp *bgp_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: form_auto_rt
      Src: /src/frr/bgpd/bgp_evpn.c:4878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4879
      start: 4876
    functionDepth: 2
    functionLinenumber: 4876
    functionLinenumberEnd: 4879
    functionName: evpn_auto_rt_export_add_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - form_auto_rt
    linkageType: ''
    returnType: void
    signature: void evpn_auto_rt_export_add_for_vrf(struct bgp *bgp_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: evpn_rt_delete_auto
      Src: /src/frr/bgpd/bgp_evpn.c:4886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4888
      start: 4884
    functionDepth: 1
    functionLinenumber: 4884
    functionLinenumberEnd: 4888
    functionName: evpn_auto_rt_export_delete_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - evpn_rt_delete_auto
    linkageType: ''
    returnType: void
    signature: void evpn_auto_rt_export_delete_for_vrf(struct bgp *bgp_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:4896,1
    - Dst: update_advertise_vrf_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4901,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn.c:4904,1
    - Dst: update_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:4905,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:4915,1
    - Dst: is_import_rt_configured
      Src: /src/frr/bgpd/bgp_evpn.c:4915,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:4916,1
    - Dst: bgp_evpn_uninstall_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4917,1
    - Dst: bgp_evpn_unmap_vni_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:4918,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_evpn.c:4919,1
    - Dst: bgp_evpn_derive_auto_rt_import
      Src: /src/frr/bgpd/bgp_evpn.c:4920,1
    - Dst: bgp_evpn_unmap_vrf_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:4946,1
    - Dst: evpn_auto_rt_import_delete_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:4949,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_evpn.c:4951,1
    - Dst: evpn_auto_rt_import_add_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:4954,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:4957,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_evpn.c:4958,1
    - Dst: evpn_auto_rt_export_delete_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:4960,1
    - Dst: evpn_auto_rt_export_add_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:4962,1
    - Dst: is_l3vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:4964,1
    - Dst: bgp_evpn_map_vrf_to_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:4965,1
    - Dst: is_l3vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:4968,1
    - Dst: update_advertise_vrf_routes
      Src: /src/frr/bgpd/bgp_evpn.c:4972,1
    - Dst: install_routes_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:4977,1
    - Dst: bgp_evpn_withdraw_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:4985,1
    - Dst: build_type5_prefix_from_ip_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:4991,1
    - Dst: delete_evpn_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:4992,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:4994,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn.c:4997,1
    - Dst: bgp_evpn_withdraw_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:5001,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:5008,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:5008,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:5013,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:5014,1
    - Dst: is_route_injectable_into_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:5015,1
    - Dst: bgp_evpn_withdraw_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:5016,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:5017,1
    - Dst: bgp_evpn_install_uninstall_default_route
      Src: /src/frr/bgpd/bgp_evpn.c:5028,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:5034,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_evpn.c:5035,1
    - Dst: bgp_evpn_advertise_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:5038,1
    - Dst: bgp_evpn_withdraw_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:5041,1
    - Dst: bgp_evpn_advertise_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:5053,1
    - Dst: build_type5_prefix_from_ip_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:5060,1
    - Dst: update_evpn_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:5061,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:5063,1
    - Dst: bgp_evpn_advertise_type5_routes
      Src: /src/frr/bgpd/bgp_evpn.c:5072,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:5080,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:5080,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:5086,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:5087,1
    - Dst: is_route_injectable_into_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:5088,1
    - Dst: RESET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:5104,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_evpn.c:5106,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:5109,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_evpn.c:5112,1
    - Dst: bgp_evpn_advertise_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:5115,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:5117,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5119
      start: 4890
    functionDepth: 9
    functionLinenumber: 4890
    functionLinenumberEnd: 5119
    functionName: bgp_evpn_handle_export_rt_change_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_unmap_vni_from_its_rts
    - bgp_evpn_advertise_type5_routes
    - install_routes_for_vrf
    - bgp_evpn_derive_auto_rt_import
    - flog_err
    - evpn_auto_rt_export_delete_for_vrf
    - is_vni_live
    - bgp_evpn_map_vrf_to_its_rts
    - evpn_auto_rt_import_add_for_vrf
    - update_evpn_type5_route
    - bgp_evpn_unmap_vrf_from_its_rts
    - memset
    - bgp_get_evpn
    - bgp_dest_get_prefix
    - ALL_LIST_ELEMENTS_RO
    - bgp_evpn_withdraw_type5_routes
    - bgp_evpn_advertise_type5_route
    - evpn_auto_rt_export_add_for_vrf
    - list_delete_all_node
    - bgp_evpn_withdraw_type5_route
    - build_type5_prefix_from_ip_prefix
    - if
    - delete_evpn_type5_route
    - update_advertise_vrf_routes
    - afi2family
    - bgp_evpn_uninstall_routes
    - is_import_rt_configured
    - RESET_FLAG
    - bgp_evpn_install_uninstall_default_route
    - bgp_route_next
    - update_routes_for_vni
    - vrf_id_to_name
    - bgp_table_top
    - CHECK_FLAG
    - evpn_auto_rt_import_delete_for_vrf
    - bgp_attr_flush
    - is_route_injectable_into_evpn
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    - is_l3vni_live
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_handle_export_rt_change_for_vrf(struct bgp *bgp_vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:5138,1
    - Dst: ecommunity_match
      Src: /src/frr/bgpd/bgp_evpn.c:5139,1
    - Dst: evpn_vrf_rt_del
      Src: /src/frr/bgpd/bgp_evpn.c:5140,1
    - Dst: break
      Src: /src/frr/bgpd/bgp_evpn.c:5142,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:5146,1
    - Dst: ecommunity_match
      Src: /src/frr/bgpd/bgp_evpn.c:5147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - rt_list
    - ecomdel
    - is_l3
    argTypes:
    - struct list*
    - struct ecommunity*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5152
      start: 5130
    functionDepth: 2
    functionLinenumber: 5130
    functionLinenumberEnd: 5152
    functionName: rt_list_remove_node
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - evpn_vrf_rt_del
    - ecommunity_match
    - break
    linkageType: ''
    returnType: void
    signature: "void rt_list_remove_node(struct list *rt_list,\n\t\t\t\tstruct ecommunity
      *ecomdel, bool is_l3)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: encode_route_target_as
      Src: /src/frr/bgpd/bgp_evpn.c:5169,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/bgp_evpn.c:5171,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/bgp_evpn.c:5172,1
    - Dst: rt_list_remove_node
      Src: /src/frr/bgpd/bgp_evpn.c:5174,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn.c:5176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - bgp
    - vni
    - rtl
    - is_l3
    argTypes:
    - struct bgp*
    - vni_t
    - struct list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5177
      start: 5160
    functionDepth: 3
    functionLinenumber: 5160
    functionLinenumberEnd: 5177
    functionName: evpn_rt_delete_auto
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 2
    functionsReached:
    - ecommunity_new
    - rt_list_remove_node
    - ecommunity_add_val
    - encode_route_target_as
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: "void evpn_rt_delete_auto(struct bgp *bgp, vni_t vni, struct list *rtl,\n\t\t\t
      bool is_l3)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_l3vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:5182,1
    - Dst: bgp_evpn_map_vrf_to_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:5183,1
    - Dst: install_routes_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:5184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5186
      start: 5179
    functionDepth: 6
    functionLinenumber: 5179
    functionLinenumberEnd: 5186
    functionName: evpn_vrf_rt_routes_map
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_l3vni_live
    - bgp_evpn_map_vrf_to_its_rts
    - install_routes_for_vrf
    linkageType: ''
    returnType: void
    signature: void evpn_vrf_rt_routes_map(struct bgp *bgp_vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_l3vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:5191,1
    - Dst: uninstall_routes_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:5192,1
    - Dst: bgp_evpn_unmap_vrf_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:5195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5196
      start: 5188
    functionDepth: 6
    functionLinenumber: 5188
    functionLinenumberEnd: 5196
    functionName: evpn_vrf_rt_routes_unmap
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_l3vni_live
    - uninstall_routes_for_vrf
    - bgp_evpn_unmap_vrf_from_its_rts
    linkageType: ''
    returnType: void
    signature: void evpn_vrf_rt_routes_unmap(struct bgp *bgp_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:5203,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:5204,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn.c:5213,1
    - Dst: is_l3vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:5216,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_evpn.c:5220,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn.c:5547,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn.c:5549,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn.c:5550,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn.c:5551,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:5554,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:5555,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn.c:5559,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn.c:5561,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn.c:5562,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:5569,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn.c:5572,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn.c:5574,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn.c:5575,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn.c:5579,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:5581,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn.c:5582,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn.c:5584,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn.c:5586,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - rt_list
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5591
      start: 5198
    functionDepth: 1
    functionLinenumber: 5198
    functionLinenumberEnd: 5591
    functionName: rt_list_has_cfgd_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v4
    - prefix_mac2str
    - CHECK_FLAG
    - list_isempty
    - json_object_int_add
    - is_l3vni_live
    - is_evpn_prefix_ipaddr_none
    - inet_ntop
    - json_object_string_add
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: bool
    signature: bool rt_list_has_cfgd_rt(struct list *rt_list)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:5606,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5609,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn.c:5613,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn.c:5615,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5621,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5622,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5624,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5626,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:5627,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5628,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5629,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5630,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5632,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5635,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5638,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5642,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5643,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:5644,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5645,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_evpn.c:5647,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5651,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5652,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5653,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5654,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_evpn.c:5656,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn.c:5662,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5663,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5664,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn.c:5665,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn.c:5666,1
    - Dst: evpn_mpattr_encode_type5
      Src: /src/frr/bgpd/bgp_evpn.c:5671,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 56
    argCount: 8
    argNames:
    - s
    - p
    - prd
    - label
    - num_labels
    - attr
    - addpath_capable
    - addpath_tx_id
    argTypes:
    - struct stream*
    - struct prefix*
    - struct prefix_rd*
    - mpls_label_t*
    - uint32_t
    - struct attr*
    - bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5677
      start: 5597
    functionDepth: 2
    functionLinenumber: 5597
    functionLinenumberEnd: 5677
    functionName: bgp_evpn_encode_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - stream_put
    - is_evpn_prefix_ipaddr_v4
    - evpn_mpattr_encode_type5
    - is_evpn_prefix_ipaddr_v6
    - stream_put_in_addr
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_encode_prefix(struct stream *s, const struct prefix
      *p,\n\t\t\t    const struct prefix_rd *prd, mpls_label_t *label,\n\t\t\t    uint32_t
      num_labels, struct attr *attr,\n\t\t\t    bool addpath_capable, uint32_t addpath_tx_id)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_evpn.c:5699,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:5703,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:5711,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_evpn.c:5712,1
    - Dst: process_type2_route
      Src: /src/frr/bgpd/bgp_evpn.c:5729,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:5732,1
    - Dst: process_type3_route
      Src: /src/frr/bgpd/bgp_evpn.c:5741,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:5744,1
    - Dst: bgp_evpn_type4_route_process
      Src: /src/frr/bgpd/bgp_evpn.c:5753,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:5756,1
    - Dst: bgp_evpn_type1_route_process
      Src: /src/frr/bgpd/bgp_evpn.c:5765,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:5768,1
    - Dst: process_type5_route
      Src: /src/frr/bgpd/bgp_evpn.c:5777,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:5780,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 4
    argNames:
    - peer
    - attr
    - packet
    - withdraw
    argTypes:
    - struct peer*
    - struct attr*
    - struct bgp_nlri*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5798
      start: 5679
    functionDepth: 2
    functionLinenumber: 5679
    functionLinenumberEnd: 5798
    functionName: bgp_nlri_parse_evpn
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_addpath_encode_rx
    - process_type3_route
    - memset
    - bgp_evpn_type1_route_process
    - bgp_evpn_type4_route_process
    - flog_err
    - process_type2_route
    - process_type5_route
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_nlri_parse_evpn(struct peer *peer, struct attr *attr,\n\t\t\tstruct
      bgp_nlri *packet, bool withdraw)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:5810,1
    - Dst: map_vrf_to_rt
      Src: /src/frr/bgpd/bgp_evpn.c:5811,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn.c:5822,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:5822,1
    - Dst: unmap_vrf_from_rt
      Src: /src/frr/bgpd/bgp_evpn.c:5823,1
    - Dst: bgp_evpn_map_vni_to_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:5830,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn.c:5837,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:5837,1
    - Dst: map_vni_to_rt
      Src: /src/frr/bgpd/bgp_evpn.c:5842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5844
      start: 5805
    functionDepth: 3
    functionLinenumber: 5805
    functionLinenumberEnd: 5844
    functionName: bgp_evpn_map_vrf_to_its_rts
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 3
    functionsReached:
    - bgp_evpn_map_vni_to_its_rts
    - map_vrf_to_rt
    - map_vni_to_rt
    - ALL_LIST_ELEMENTS
    - for
    - unmap_vrf_from_rt
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_map_vrf_to_its_rts(struct bgp *bgp_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:5857,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn.c:5870,1
    - Dst: is_import_rt_configured
      Src: /src/frr/bgpd/bgp_evpn.c:5871,1
    - Dst: mask_ecom_global_admin
      Src: /src/frr/bgpd/bgp_evpn.c:5872,1
    - Dst: lookup_import_rt
      Src: /src/frr/bgpd/bgp_evpn.c:5874,1
    - Dst: unmap_vni_from_rt
      Src: /src/frr/bgpd/bgp_evpn.c:5876,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5879
      start: 5850
    functionDepth: 3
    functionLinenumber: 5850
    functionLinenumberEnd: 5879
    functionName: bgp_evpn_unmap_vni_from_its_rts
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - lookup_import_rt
    - mask_ecom_global_admin
    - is_import_rt_configured
    - ALL_LIST_ELEMENTS
    - unmap_vni_from_rt
    - memcpy
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_unmap_vni_from_its_rts(struct bgp *bgp, struct bgpevpn
      *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: form_auto_rt
      Src: /src/frr/bgpd/bgp_evpn.c:5887,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:5888,1
    - Dst: bgp_evpn_map_vni_to_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:5891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5892
      start: 5885
    functionDepth: 2
    functionLinenumber: 5885
    functionLinenumberEnd: 5892
    functionName: bgp_evpn_derive_auto_rt_import
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 2
    functionsReached:
    - bgp_evpn_map_vni_to_its_rts
    - UNSET_FLAG
    - form_auto_rt
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_derive_auto_rt_import(struct bgp *bgp, struct bgpevpn
      *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: form_auto_rt
      Src: /src/frr/bgpd/bgp_evpn.c:5899,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:5900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5901
      start: 5897
    functionDepth: 2
    functionLinenumber: 5897
    functionLinenumberEnd: 5901
    functionName: bgp_evpn_derive_auto_rt_export
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    - form_auto_rt
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_derive_auto_rt_export(struct bgp *bgp, struct bgpevpn
      *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_vrf_rd_configured
      Src: /src/frr/bgpd/bgp_evpn.c:5909,1
    - Dst: form_auto_rd
      Src: /src/frr/bgpd/bgp_evpn.c:5912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5913
      start: 5907
    functionDepth: 1
    functionLinenumber: 5907
    functionLinenumberEnd: 5913
    functionName: bgp_evpn_derive_auto_rd_for_vrf
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - form_auto_rd
    - is_vrf_rd_configured
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_derive_auto_rd_for_vrf(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_evpn.c:5925,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_evpn.c:5926,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:5928,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:5929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5930
      start: 5919
    functionDepth: 1
    functionLinenumber: 5919
    functionLinenumberEnd: 5930
    functionName: bgp_evpn_derive_auto_rd
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 2
    functionsReached:
    - XFREE
    - UNSET_FLAG
    - snprintfrr
    - str2prefix_rd
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_derive_auto_rd(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn.c:5941,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vni
    argTypes:
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5947
      start: 5935
    functionDepth: 0
    functionLinenumber: 5935
    functionLinenumberEnd: 5947
    functionName: bgp_evpn_lookup_l3vni_l2vni_table
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_lookup_l3vni_l2vni_table(vni_t vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:5957,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:5959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bgp
    - vni
    argTypes:
    - struct bgp*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5961
      start: 5952
    functionDepth: 1
    functionLinenumber: 5952
    functionLinenumberEnd: 5961
    functionName: bgp_evpn_lookup_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - memset
    linkageType: ''
    returnType: struct bgpevpn
    signature: struct bgpevpn *bgp_evpn_lookup_vni(struct bgp *bgp, vni_t vni)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn.c:5974,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:5984,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:5988,1
    - Dst: bf_assign_index
      Src: /src/frr/bgpd/bgp_evpn.c:5992,1
    - Dst: derive_rd_rt_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:5993,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_evpn.c:5996,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_evpn.c:5997,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_evpn.c:6000,1
    - Dst: bgp_evpn_remote_ip_hash_init
      Src: /src/frr/bgpd/bgp_evpn.c:6002,1
    - Dst: bgp_evpn_link_to_vni_svi_hash
      Src: /src/frr/bgpd/bgp_evpn.c:6003,1
    - Dst: bgpevpn_link_to_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:6006,1
    - Dst: bgp_evpn_vni_es_init
      Src: /src/frr/bgpd/bgp_evpn.c:6008,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgp_evpn.c:6010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 6
    argNames:
    - bgp
    - vni
    - originator_ip
    - tenant_vrf_id
    - mcast_grp
    - svi_ifindex
    argTypes:
    - struct bgp*
    - vni_t
    - struct in_addr
    - vrf_id_t
    - struct in_addr
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6012
      start: 5966
    functionDepth: 1
    functionLinenumber: 5966
    functionLinenumberEnd: 6012
    functionName: bgp_evpn_new
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - bgp_table_init
    - QOBJ_REG
    - derive_rd_rt_for_vni
    - bgp_evpn_link_to_vni_svi_hash
    - bgp_evpn_vni_es_init
    - bgpevpn_link_to_l3vni
    - list_new
    - bgp_evpn_remote_ip_hash_init
    - hash_get
    - bf_assign_index
    linkageType: ''
    returnType: struct bgpevpn
    signature: "struct bgpevpn *bgp_evpn_new(struct bgp *bgp, vni_t vni,\n\t\tstruct
      in_addr originator_ip,\n\t\tvrf_id_t tenant_vrf_id,\n\t\tstruct in_addr mcast_grp,\n\t\tifindex_t
      svi_ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_remote_ip_hash_destroy
      Src: /src/frr/bgpd/bgp_evpn.c:6022,1
    - Dst: bgp_evpn_vni_es_cleanup
      Src: /src/frr/bgpd/bgp_evpn.c:6023,1
    - Dst: bgpevpn_unlink_from_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:6024,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_evpn.c:6025,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_evpn.c:6026,1
    - Dst: bgp_evpn_unmap_vni_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:6027,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6028,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6029,1
    - Dst: bf_release_index
      Src: /src/frr/bgpd/bgp_evpn.c:6030,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_evpn.c:6031,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_evpn.c:6032,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:6034,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgp_evpn.c:6035,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:6036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6037
      start: 6020
    functionDepth: 4
    functionLinenumber: 6020
    functionLinenumberEnd: 6037
    functionName: bgp_evpn_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 2
    functionsReached:
    - bf_release_index
    - bgp_evpn_unmap_vni_from_its_rts
    - list_delete
    - QOBJ_UNREG
    - bgpevpn_unlink_from_l3vni
    - bgp_evpn_vni_es_cleanup
    - bgp_evpn_remote_ip_hash_destroy
    - XFREE
    - hash_release
    - bgp_table_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_free(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:6041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6042
      start: 6039
    functionDepth: 0
    functionLinenumber: 6039
    functionLinenumberEnd: 6042
    functionName: hash_evpn_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void hash_evpn_free(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_uninstall_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:6050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - p
    - pi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6051
      start: 6047
    functionDepth: 12
    functionLinenumber: 6047
    functionLinenumberEnd: 6051
    functionName: bgp_evpn_import_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - install_uninstall_evpn_route
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_import_route(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t
      \ const struct prefix *p, struct bgp_path_info *pi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_uninstall_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:6059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - p
    - pi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6060
      start: 6056
    functionDepth: 12
    functionLinenumber: 6056
    functionLinenumberEnd: 6060
    functionName: bgp_evpn_unimport_route
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - install_uninstall_evpn_route
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_unimport_route(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t
      \   const struct prefix *p, struct bgp_path_info *pi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:6080,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:6081,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn.c:6082,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn.c:6086,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn.c:6087,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn.c:6089,1
    - Dst: bgp_nexthop_self
      Src: /src/frr/bgpd/bgp_evpn.c:6097,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:6101,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_evpn.c:6103,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_evpn.c:6107,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn.c:6111,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_evpn.c:6116,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_evpn.c:6119,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6127
      start: 6063
    functionDepth: 13
    functionLinenumber: 6063
    functionLinenumberEnd: 6127
    functionName: bgp_filter_evpn_routes_upon_martian_nh_change
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_dump_attr
    - bgp_debug_update
    - bgp_table_top
    - bgp_dest_get_prefix
    - zlog_debug
    - bgp_nexthop_self
    - bgp_dest_get_bgp_path_info
    - bgp_rib_remove
    - bgp_dest_get_bgp_table_info
    - bgp_evpn_unimport_route
    linkageType: ''
    returnType: int
    signature: int bgp_filter_evpn_routes_upon_martian_nh_change(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6140,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:6141,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_evpn.c:6142,1
    - Dst: build_evpn_type2_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:6148,1
    - Dst: delete_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:6151,1
    - Dst: bgp_evpn_vni_node_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:6154,1
    - Dst: evpn_zebra_reinstall_best_route
      Src: /src/frr/bgpd/bgp_evpn.c:6156,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn.c:6157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - bgp
    - vni
    - mac
    - ip
    - state
    argTypes:
    - struct bgp*
    - vni_t
    - struct ethaddr*
    - struct ipaddr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6162
      start: 6132
    functionDepth: 5
    functionLinenumber: 6132
    functionLinenumberEnd: 6162
    functionName: bgp_evpn_local_macip_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - build_evpn_type2_prefix
    - flog_warn
    - delete_evpn_route
    - bgp_evpn_lookup_vni
    - is_vni_live
    - evpn_zebra_reinstall_best_route
    - bgp_evpn_vni_node_lookup
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_local_macip_del(struct bgp *bgp, vni_t vni, struct ethaddr
      *mac,\n\t\t\t     struct ipaddr *ip, int state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6174,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:6175,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_evpn.c:6176,1
    - Dst: build_evpn_type2_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:6183,1
    - Dst: update_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:6184,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:6185,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 7
    argNames:
    - bgp
    - vni
    - mac
    - ip
    - flags
    - seq
    - esi
    argTypes:
    - struct bgp*
    - vni_t
    - struct ethaddr*
    - struct ipaddr*
    - uint8_t
    - uint32_t
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6197
      start: 6167
    functionDepth: 6
    functionLinenumber: 6167
    functionLinenumberEnd: 6197
    functionName: bgp_evpn_local_macip_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - build_evpn_type2_prefix
    - flog_warn
    - CHECK_FLAG
    - flog_err
    - bgp_evpn_lookup_vni
    - update_evpn_route
    - is_vni_live
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_local_macip_add(struct bgp *bgp, vni_t vni, struct ethaddr
      *mac,\n\t\tstruct ipaddr *ip, uint8_t flags, uint32_t seq, esi_t *esi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:6205,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn.c:6206,1
    - Dst: bgpevpn_link_to_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:6209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - bgp_vrf
    argTypes:
    - struct hash_bucket*
    - struct bgp*
    assertStmts:
    - condition: (bgp_evpn)
      pos:
        line_end: 6205
        line_start: 6205
        source_file: /src/frr/bgpd/bgp_evpn.c
    constantsTouched: []
    func_position:
      end: 6210
      start: 6199
    functionDepth: 1
    functionLinenumber: 6199
    functionLinenumberEnd: 6210
    functionName: link_l2vni_hash_to_l3vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgpevpn_link_to_l3vni
    - assert
    - bgp_get_evpn
    linkageType: ''
    returnType: void
    signature: "void link_l2vni_hash_to_l3vni(struct hash_bucket *bucket,\n\t\t\t\t
      \    struct bgp *bgp_vrf)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_evpn.c:6368,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:6370,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn.c:6377,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:6379,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6386,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:6387,1
    - Dst: uninstall_routes_for_vrf
      Src: /src/frr/bgpd/bgp_evpn.c:6398,1
    - Dst: delete_withdraw_vrf_routes
      Src: /src/frr/bgpd/bgp_evpn.c:6401,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:6407,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:6408,1
    - Dst: is_zero_mac
      Src: /src/frr/bgpd/bgp_evpn.c:6409,1
    - Dst: is_zero_mac
      Src: /src/frr/bgpd/bgp_evpn.c:6410,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn.c:6411,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_evpn.c:6414,1
    - Dst: bgp_evpn_unmap_vrf_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:6415,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6416,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_evpn.c:6417,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_evpn.c:6421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6422,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_evpn.c:6423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6427,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn.c:6428,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6429,1
    - Dst: update_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6430,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn.c:6435,1
    - Dst: bgpevpn_unlink_from_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:6436,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6438,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6441,1
    - Dst: bgp_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6442,1
    - Dst: bgp_evpn_local_vni_del
      Src: /src/frr/bgpd/bgp_evpn.c:6450,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6455,1
    - Dst: delete_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6462,1
    - Dst: bgp_evpn_unlink_from_vni_svi_hash
      Src: /src/frr/bgpd/bgp_evpn.c:6464,1
    - Dst: bgp_tip_del
      Src: /src/frr/bgpd/bgp_evpn.c:6470,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6473,1
    - Dst: is_vni_configured
      Src: /src/frr/bgpd/bgp_evpn.c:6474,1
    - Dst: bgp_evpn_free
      Src: /src/frr/bgpd/bgp_evpn.c:6475,1
    - Dst: bgp_evpn_local_vni_add
      Src: /src/frr/bgpd/bgp_evpn.c:6484,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6494,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:6497,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn.c:6498,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn.c:6499,1
    - Dst: bgp_evpn_remote_ip_hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6514,1
    - Dst: bgp_evpn_unlink_from_vni_svi_hash
      Src: /src/frr/bgpd/bgp_evpn.c:6519,1
    - Dst: bgp_evpn_link_to_vni_svi_hash
      Src: /src/frr/bgpd/bgp_evpn.c:6521,1
    - Dst: bgp_evpn_remote_ip_hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6527,1
    - Dst: bgp_evpn_remote_ip_hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6541,1
    - Dst: bgpevpn_unlink_from_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:6546,1
    - Dst: bgpevpn_link_to_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:6548,1
    - Dst: bgp_evpn_remote_ip_hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6554,1
    - Dst: handle_tunnel_ip_change
      Src: /src/frr/bgpd/bgp_evpn.c:6564,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:6569,1
    - Dst: update_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6570,1
    - Dst: bgp_evpn_new
      Src: /src/frr/bgpd/bgp_evpn.c:6573,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn.c:6578,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6582,1
    - Dst: bgp_tip_add
      Src: /src/frr/bgpd/bgp_evpn.c:6585,1
    - Dst: bgp_filter_evpn_routes_upon_martian_nh_change
      Src: /src/frr/bgpd/bgp_evpn.c:6591,1
    - Dst: bgp_evpn_vni_flood_mode_get
      Src: /src/frr/bgpd/bgp_evpn.c:6598,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn.c:6600,1
    - Dst: update_evpn_route
      Src: /src/frr/bgpd/bgp_evpn.c:6601,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn.c:6602,1
    - Dst: install_routes_for_vni
      Src: /src/frr/bgpd/bgp_evpn.c:6613,1
    - Dst: bgp_zebra_advertise_gw_macip
      Src: /src/frr/bgpd/bgp_evpn.c:6617,1
    - Dst: bgp_zebra_advertise_svi_macip
      Src: /src/frr/bgpd/bgp_evpn.c:6620,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 69
    argCount: 2
    argNames:
    - l3vni
    - vrf_id
    argTypes:
    - vni_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6623
      start: 6360
    functionDepth: 14
    functionLinenumber: 6360
    functionLinenumberEnd: 6623
    functionName: bgp_evpn_local_l3vni_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_local_vni_del
    - IPV4_ADDR_SAME
    - flog_err
    - uninstall_routes_for_vrf
    - is_vni_live
    - bgp_evpn_new
    - bgp_evpn_unmap_vrf_from_its_rts
    - memset
    - bgp_get_evpn
    - bgp_evpn_local_vni_add
    - bgp_filter_evpn_routes_upon_martian_nh_change
    - ALL_LIST_ELEMENTS_RO
    - bgp_zebra_advertise_svi_macip
    - handle_tunnel_ip_change
    - bgp_evpn_link_to_vni_svi_hash
    - bgp_evpn_free
    - list_delete_all_node
    - delete_routes_for_vni
    - bgp_zebra_advertise_gw_macip
    - build_evpn_type3_prefix
    - update_evpn_route
    - bgp_tip_del
    - install_routes_for_vni
    - bgp_evpn_remote_ip_hash_iterate
    - bgp_evpn_vni_flood_mode_get
    - is_zero_mac
    - UNSET_FLAG
    - delete_withdraw_vrf_routes
    - bgp_delete
    - bgp_tip_add
    - is_vni_configured
    - update_routes_for_vni
    - CHECK_FLAG
    - list_isempty
    - bgp_lookup_by_vrf_id
    - bgpevpn_unlink_from_l3vni
    - bgpevpn_link_to_l3vni
    - SET_FLAG
    - bgp_evpn_lookup_vni
    - ALL_LIST_ELEMENTS
    - bgp_evpn_unlink_from_vni_svi_hash
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_local_l3vni_del(vni_t l3vni, vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_evpn.c:6634,1
    - Dst: bgp_zebra_vxlan_flood_control
      Src: /src/frr/bgpd/bgp_evpn.c:6638,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6640,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6643
      start: 6632
    functionDepth: 1
    functionLinenumber: 6632
    functionLinenumberEnd: 6643
    functionName: bgp_evpn_flood_control_change
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_zebra_vxlan_flood_control
    - zlog_info
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_flood_control_change(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6654
      start: 6649
    functionDepth: 1
    functionLinenumber: 6649
    functionLinenumberEnd: 6654
    functionName: bgp_evpn_cleanup_on_disable
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_cleanup_on_disable(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6662,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_evpn.c:6666,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_evpn.c:6669,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_evpn.c:6672,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_evpn.c:6679,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6681,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6682,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6683,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:6686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6687
      start: 6660
    functionDepth: 1
    functionLinenumber: 6660
    functionLinenumberEnd: 6687
    functionName: bgp_evpn_cleanup
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - hash_clean_and_free
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_cleanup(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_evpn.c:6698,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_evpn.c:6700,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_evpn.c:6703,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_evpn.c:6706,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:6708,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:6712,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:6716,1
    - Dst: bgp_zebra_dup_addr_detection
      Src: /src/frr/bgpd/bgp_evpn.c:6731,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_evpn.c:6737,1
    - Dst: bgp_evpn_nh_init
      Src: /src/frr/bgpd/bgp_evpn.c:6746,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6747
      start: 6695
    functionDepth: 1
    functionLinenumber: 6695
    functionLinenumberEnd: 6747
    functionName: bgp_evpn_init
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - bgp_zebra_dup_addr_detection
    - hash_create
    - bgp_get_default
    - bgp_evpn_nh_init
    - list_new
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_init(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_unmap_vrf_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn.c:6751,1
    - Dst: bgp_evpn_nh_finish
      Src: /src/frr/bgpd/bgp_evpn.c:6752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6753
      start: 6749
    functionDepth: 0
    functionLinenumber: 6749
    functionLinenumberEnd: 6753
    functionName: bgp_evpn_vrf_delete
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_unmap_vrf_from_its_rts
    - bgp_evpn_nh_finish
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_vrf_delete(struct bgp *bgp_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - pfx
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6769
      start: 6758
    functionDepth: 0
    functionLinenumber: 6758
    functionLinenumberEnd: 6769
    functionName: bgp_evpn_get_type5_prefixlen
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_get_type5_prefixlen(const struct prefix *pfx)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 4
    argCount: 1
    argNames:
    - pfx
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6796
      start: 6774
    functionDepth: 0
    functionLinenumber: 6774
    functionLinenumberEnd: 6796
    functionName: bgp_evpn_is_prefix_nht_supported
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_is_prefix_nht_supported(const struct prefix *pfx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_evpn.c:6803,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn.c:6805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6808
      start: 6798
    functionDepth: 1
    functionLinenumber: 6798
    functionLinenumberEnd: 6808
    functionName: bgp_evpn_remote_ip_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - list_new
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_evpn_remote_ip_hash_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn.c:6815,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_evpn.c:6816,1
    - Dst: jhash2
      Src: /src/frr/bgpd/bgp_evpn.c:6818,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_evpn.c:6819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6820
      start: 6810
    functionDepth: 1
    functionLinenumber: 6810
    functionLinenumberEnd: 6820
    functionName: bgp_evpn_remote_ip_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - IS_IPADDR_V4
    - jhash2
    - array_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_evpn_remote_ip_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_cmp
      Src: /src/frr/bgpd/bgp_evpn.c:6827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6828
      start: 6822
    functionDepth: 1
    functionLinenumber: 6822
    functionLinenumberEnd: 6828
    functionName: bgp_evpn_remote_ip_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - ipaddr_cmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_remote_ip_hash_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: evpn_resolve_overlay_index
      Src: /src/frr/bgpd/bgp_evpn.c:6832,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_evpn.c:6835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6838
      start: 6830
    functionDepth: 1
    functionLinenumber: 6830
    functionLinenumberEnd: 6838
    functionName: bgp_evpn_remote_ip_hash_init
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - hash_create
    - evpn_resolve_overlay_index
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_remote_ip_hash_init(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_remote_ip_process_nexthops
      Src: /src/frr/bgpd/bgp_evpn.c:6845,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6847,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_evpn.c:6849,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:6850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6851
      start: 6840
    functionDepth: 1
    functionLinenumber: 6840
    functionLinenumberEnd: 6851
    functionName: bgp_evpn_remote_ip_hash_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - hash_release
    - bgp_evpn_remote_ip_process_nexthops
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_remote_ip_hash_free(struct hash_bucket *bucket, void
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: evpn_resolve_overlay_index
      Src: /src/frr/bgpd/bgp_evpn.c:6855,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6858,1
    - Dst: hash_free
      Src: /src/frr/bgpd/bgp_evpn.c:6862,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6864
      start: 6853
    functionDepth: 1
    functionLinenumber: 6853
    functionLinenumberEnd: 6864
    functionName: bgp_evpn_remote_ip_hash_destroy
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - hash_free
    - evpn_resolve_overlay_index
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_remote_ip_hash_destroy(struct bgpevpn *vpn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: evpn_resolve_overlay_index
      Src: /src/frr/bgpd/bgp_evpn.c:6874,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn.c:6878,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:6885,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:6889,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:6891,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn.c:6893,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_evpn.c:6897,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn.c:6898,1
    - Dst: bgp_evpn_remote_ip_process_nexthops
      Src: /src/frr/bgpd/bgp_evpn.c:6900,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - vpn
    - pi
    argTypes:
    - struct bgpevpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6901
      start: 6867
    functionDepth: 1
    functionLinenumber: 6867
    functionLinenumberEnd: 6901
    functionName: bgp_evpn_remote_ip_hash_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - listnode_lookup
    - evpn_resolve_overlay_index
    - listnode_add
    - is_evpn_prefix_ipaddr_none
    - hash_lookup
    - bgp_evpn_remote_ip_process_nexthops
    - hash_get
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_remote_ip_hash_add(struct bgpevpn *vpn,\n\t\t\t\t\tstruct
      bgp_path_info *pi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: evpn_resolve_overlay_index
      Src: /src/frr/bgpd/bgp_evpn.c:6911,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn.c:6918,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_evpn.c:6922,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6926,1
    - Dst: bgp_evpn_remote_ip_process_nexthops
      Src: /src/frr/bgpd/bgp_evpn.c:6929,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_evpn.c:6930,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn.c:6931,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn.c:6932,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - vpn
    - pi
    argTypes:
    - struct bgpevpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6934
      start: 6904
    functionDepth: 1
    functionLinenumber: 6904
    functionLinenumberEnd: 6934
    functionName: bgp_evpn_remote_ip_hash_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 2
    functionsReached:
    - list_delete
    - evpn_resolve_overlay_index
    - is_evpn_prefix_ipaddr_none
    - hash_lookup
    - bgp_evpn_remote_ip_process_nexthops
    - XFREE
    - listnode_delete
    - hash_release
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_remote_ip_hash_del(struct bgpevpn *vpn,\n\t\t\t\t\tstruct
      bgp_path_info *pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: evpn_resolve_overlay_index
      Src: /src/frr/bgpd/bgp_evpn.c:6941,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn.c:6944,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - vpn
    - arg
    argTypes:
    - struct bgpevpn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6945
      start: 6936
    functionDepth: 1
    functionLinenumber: 6936
    functionLinenumberEnd: 6945
    functionName: bgp_evpn_remote_ip_hash_iterate
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - evpn_resolve_overlay_index
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_remote_ip_hash_iterate(struct bgpevpn *vpn,\n\t\t\t\t\t
      \   void (*func)(struct hash_bucket *,\n\t\t\t\t\t\t\t void *),\n\t\t\t\t\t
      \   void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_path_info_get_l3vni
      Src: /src/frr/bgpd/bgp_evpn.c:7233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bgp_vrf
    - pi
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7239
      start: 7228
    functionDepth: 0
    functionLinenumber: 7228
    functionLinenumberEnd: 7239
    functionName: bgp_evpn_path_is_dvni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_path_info_get_l3vni
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_path_is_dvni(const struct bgp *bgp_vrf,\n\t\t\t\t  const
      struct bgp_path_info *pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_evpn.c:7247,1
    - Dst: bgp_evpn_path_is_dvni
      Src: /src/frr/bgpd/bgp_evpn.c:7248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bgp_vrf
    - mpinfo
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7253
      start: 7244
    functionDepth: 1
    functionLinenumber: 7244
    functionLinenumberEnd: 7253
    functionName: bgp_evpn_mpath_has_dvni
    functionSourceFile: /src/frr/bgpd/bgp_evpn.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_path_is_dvni
    - bgp_path_info_mpath_next
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_mpath_has_dvni(const struct bgp *bgp_vrf,\n\t\t\t     struct
      bgp_path_info *mpinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_conditional_adv.c:25,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_conditional_adv.c:25,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_conditional_adv.c:26,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_conditional_adv.c:27,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_conditional_adv.c:29,1
    - Dst: prep_for_rmap_apply
      Src: /src/frr/bgpd/bgp_conditional_adv.c:33,1
    - Dst: RESET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:36,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_conditional_adv.c:38,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_conditional_adv.c:39,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_conditional_adv.c:42,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:43,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - table
    - rmap
    argTypes:
    - struct bgp_table*
    - struct route_map*
    assertStmts:
    - condition: (dest_p)
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/frr/bgpd/bgp_conditional_adv.c
    constantsTouched: []
    func_position:
      end: 56
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 56
    functionName: bgp_check_rmap_prefixes_in_bgp_table
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - bgp_table_top
    - bgp_dest_get_prefix
    - prep_for_rmap_apply
    - bgp_attr_flush
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    - RESET_FLAG
    - assert
    - bgp_cond_adv_debug
    linkageType: ''
    returnType: route_map_result_t
    signature: "route_map_result_t bgp_check_rmap_prefixes_in_bgp_table(struct bgp_table
      *table,\n\t\t\t\t     struct route_map *rmap)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_conditional_adv.c:74,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_conditional_adv.c:78,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:84,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:86,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_conditional_adv.c:89,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_conditional_adv.c:91,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_conditional_adv.c:93,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_conditional_adv.c:93,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_conditional_adv.c:94,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_conditional_adv.c:95,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_conditional_adv.c:97,1
    - Dst: prep_for_rmap_apply
      Src: /src/frr/bgpd/bgp_conditional_adv.c:101,1
    - Dst: RESET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:104,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_conditional_adv.c:106,1
    - Dst: bgp_check_selected
      Src: /src/frr/bgpd/bgp_conditional_adv.c:108,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_conditional_adv.c:110,1
    - Dst: subgroup_announce_check
      Src: /src/frr/bgpd/bgp_conditional_adv.c:122,1
    - Dst: bgp_adj_out_set_subgroup
      Src: /src/frr/bgpd/bgp_conditional_adv.c:124,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:133,1
    - Dst: is_default_prefix
      Src: /src/frr/bgpd/bgp_conditional_adv.c:135,1
    - Dst: bgp_adj_out_unset_subgroup
      Src: /src/frr/bgpd/bgp_conditional_adv.c:138,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_conditional_adv.c:140,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_conditional_adv.c:144,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:147,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 6
    argNames:
    - peer
    - afi
    - safi
    - table
    - rmap
    - update_type
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct bgp_table*
    - struct route_map*
    - enum update_type
    assertStmts:
    - condition: (dest_p)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/frr/bgpd/bgp_conditional_adv.c
    constantsTouched: []
    func_position:
      end: 148
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 148
    functionName: bgp_conditional_adv_routes
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.c
    functionUses: 0
    functionsReached:
    - is_default_prefix
    - PAF_SUBGRP
    - peer_af_find
    - prep_for_rmap_apply
    - bgp_addpath_id_for_peer
    - bgp_check_selected
    - bgp_dest_get_prefix
    - get_afi_safi_str
    - bgp_addpath_encode_tx
    - assert
    - bgp_cond_adv_debug
    - subgroup_announce_check
    - UNSET_FLAG
    - RESET_FLAG
    - bgp_route_next
    - bgp_adj_out_set_subgroup
    - bgp_table_top
    - CHECK_FLAG
    - bgp_adj_out_unset_subgroup
    - SET_FLAG
    - bgp_attr_flush
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void bgp_conditional_adv_routes(struct peer *peer, afi_t afi,\n\t\t\t\t
      \      safi_t safi, struct bgp_table *table,\n\t\t\t\t       struct route_map
      *rmap,\n\t\t\t\t       enum update_type update_type)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:168,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_conditional_adv.c:169,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_conditional_adv.c:171,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_conditional_adv.c:181,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_conditional_adv.c:193,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:194,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_conditional_adv.c:197,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_conditional_adv.c:197,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_conditional_adv.c:200,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:226,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:228,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:232,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_conditional_adv.c:235,1
    - Dst: bgp_check_rmap_prefixes_in_bgp_table
      Src: /src/frr/bgpd/bgp_conditional_adv.c:242,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_conditional_adv.c:265,1
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_conditional_adv.c:266,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_conditional_adv.c:266,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:271,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgp_conditional_adv.c:275,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:284,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_conditional_adv.c:287,1
    - Dst: update_subgroup_split_peer
      Src: /src/frr/bgpd/bgp_conditional_adv.c:289,1
    - Dst: subgroup_announce_table
      Src: /src/frr/bgpd/bgp_conditional_adv.c:293,1
    - Dst: bgp_conditional_adv_routes
      Src: /src/frr/bgpd/bgp_conditional_adv.c:300,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_conditional_adv.c:312,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:324,1
    - Dst: event_is_scheduled
      Src: /src/frr/bgpd/bgp_conditional_adv.c:331,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_conditional_adv.c:332,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_conditional_adv.c:340,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:347,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_conditional_adv.c:354,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_conditional_adv.c:372,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_conditional_adv.c:373,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_conditional_adv.c:376,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_conditional_adv.c:380,1
    - Dst: bgp_conditional_adv_disable
      Src: /src/frr/bgpd/bgp_conditional_adv.c:386,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgp_conditional_adv.c:389,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_conditional_adv.c:395,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_conditional_adv.c:396,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_conditional_adv.c:400,1
    - Dst: bgp_conditional_adv_enable
      Src: /src/frr/bgpd/bgp_conditional_adv.c:406,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgp_conditional_adv.c:410,1
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:429,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:431,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_conditional_adv.c:440,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:442,1
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:447,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:470,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_conditional_adv.c:474,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgp_conditional_adv.c:475,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgp_conditional_adv.c:478,1
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:481,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:486,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:488,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_conditional_adv.c:490,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_conditional_adv.c:499,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:501,1
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:505,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:510,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_conditional_adv.c:512,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 83
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (bgp)
      pos:
        line_end: 339
        line_start: 339
        source_file: /src/frr/bgpd/bgp_conditional_adv.c
    - condition: (bgp)
      pos:
        line_end: 168
        line_start: 168
        source_file: /src/frr/bgpd/bgp_conditional_adv.c
    - condition: (bgp)
      pos:
        line_end: 311
        line_start: 311
        source_file: /src/frr/bgpd/bgp_conditional_adv.c
    constantsTouched: []
    func_position:
      end: 516
      start: 153
    functionDepth: 9
    functionLinenumber: 153
    functionLinenumberEnd: 516
    functionName: bgp_conditional_adv_timer
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.c
    functionUses: 0
    functionsReached:
    - peer_established
    - PAF_SUBGRP
    - bgp_conditional_adv_disable
    - peer_af_find
    - SUBGRP_PEER
    - route_map_counter_increment
    - BGP_DEBUG
    - peer_advertise_map_filter_update
    - memset
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - subgroup_announce_table
    - get_afi_safi_str
    - bgp_check_rmap_prefixes_in_bgp_table
    - EVENT_ARG
    - if
    - event_is_scheduled
    - peer_group_active
    - assert
    - bgp_cond_adv_debug
    - bgp_conditional_adv_enable
    - update_group_adjust_peer
    - peer_on_policy_change
    - update_subgroup_split_peer
    - PEER_STR_ATTR_INHERIT
    - EVENT_OFF
    - UNSET_FLAG
    - XFREE
    - event_add_timer
    - XSTRDUP
    - PEER_ATTR_INHERIT
    - route_map_counter_decrement
    - CHECK_FLAG
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - bgp_conditional_adv_routes
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: void bgp_conditional_adv_timer(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_conditional_adv.c:340,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:347,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_conditional_adv.c:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (bgp)
      pos:
        line_end: 339
        line_start: 339
        source_file: /src/frr/bgpd/bgp_conditional_adv.c
    constantsTouched: []
    func_position:
      end: 355
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 355
    functionName: bgp_conditional_adv_disable
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    - assert
    - bgp_cond_adv_debug
    linkageType: ''
    returnType: void
    signature: void bgp_conditional_adv_disable(struct peer *peer, afi_t afi, safi_t
      safi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_conditional_adv.c:372,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_conditional_adv.c:373,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_conditional_adv.c:376,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_conditional_adv.c:380,1
    - Dst: bgp_conditional_adv_disable
      Src: /src/frr/bgpd/bgp_conditional_adv.c:386,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgp_conditional_adv.c:389,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_conditional_adv.c:395,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_conditional_adv.c:396,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_conditional_adv.c:400,1
    - Dst: bgp_conditional_adv_enable
      Src: /src/frr/bgpd/bgp_conditional_adv.c:406,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgp_conditional_adv.c:410,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 9
    argNames:
    - peer
    - afi
    - safi
    - amap_name
    - amap
    - cmap_name
    - cmap
    - condition
    - set
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - char*
    - struct route_map*
    - char*
    - struct route_map*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 411
    functionName: peer_advertise_map_filter_update
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.c
    functionUses: 1
    functionsReached:
    - bgp_conditional_adv_enable
    - route_map_counter_decrement
    - memset
    - bgp_conditional_adv_disable
    - peer_on_policy_change
    - route_map_counter_increment
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void peer_advertise_map_filter_update(struct peer *peer, afi_t afi,\n\t\t\t\t\t
      \    safi_t safi, const char *amap_name,\n\t\t\t\t\t     struct route_map *amap,\n\t\t\t\t\t
      \    const char *cmap_name,\n\t\t\t\t\t     struct route_map *cmap,\n\t\t\t\t\t
      \    bool condition, bool set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:429,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:431,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_conditional_adv.c:440,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:442,1
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 8
    argNames:
    - peer
    - afi
    - safi
    - advertise_name
    - advertise_map
    - condition_name
    - condition_map
    - condition
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - char*
    - struct route_map*
    - char*
    - struct route_map*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 414
    functionDepth: 3
    functionLinenumber: 414
    functionLinenumberEnd: 453
    functionName: peer_advertise_map_set
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    - peer_advertise_map_filter_update
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: "int peer_advertise_map_set(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \  const char *advertise_name,\n\t\t\t   struct route_map *advertise_map,\n\t\t\t
      \  const char *condition_name,\n\t\t\t   struct route_map *condition_map, bool
      condition)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:470,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_conditional_adv.c:474,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgp_conditional_adv.c:475,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgp_conditional_adv.c:478,1
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:481,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:486,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:488,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_conditional_adv.c:490,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_conditional_adv.c:499,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_conditional_adv.c:501,1
    - Dst: peer_advertise_map_filter_update
      Src: /src/frr/bgpd/bgp_conditional_adv.c:505,1
    - Dst: bgp_cond_adv_debug
      Src: /src/frr/bgpd/bgp_conditional_adv.c:510,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_conditional_adv.c:512,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 8
    argNames:
    - peer
    - afi
    - safi
    - advertise_name
    - advertise_map
    - condition_name
    - condition_map
    - condition
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - char*
    - struct route_map*
    - char*
    - struct route_map*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 456
    functionDepth: 3
    functionLinenumber: 456
    functionLinenumberEnd: 516
    functionName: peer_advertise_map_unset
    functionSourceFile: /src/frr/bgpd/bgp_conditional_adv.c
    functionUses: 0
    functionsReached:
    - peer_advertise_map_filter_update
    - CHECK_FLAG
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - get_afi_safi_str
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    - bgp_cond_adv_debug
    linkageType: ''
    returnType: int
    signature: "int peer_advertise_map_unset(struct peer *peer, afi_t afi, safi_t
      safi,\n\t\t\t     const char *advertise_name,\n\t\t\t     struct route_map *advertise_map,\n\t\t\t
      \    const char *condition_name,\n\t\t\t     struct route_map *condition_map,
      bool condition)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - label
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: MPLS_LABEL_IS_SPECIAL
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MPLS_LABEL_IS_SPECIAL(label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - label
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 22
    functionName: MPLS_LABEL_IS_NULL
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MPLS_LABEL_IS_NULL(label)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:98,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 105
    functionName: is_bgp_vrf_mplsvpn
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 8
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool is_bgp_vrf_mplsvpn(struct bgp *bgp)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:119,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:121,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:152,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 3
    argNames:
    - bgp_vrf
    - afi
    - pmsg
    argTypes:
    - struct bgp*
    - afi_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 162
    functionName: vpn_leak_to_vpn_active
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int vpn_leak_to_vpn_active(struct bgp *bgp_vrf, afi_t afi,\n\t\t\t\t\t
      const char **pmsg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:182,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:184,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 3
    argNames:
    - bgp_vrf
    - afi
    - pmsg
    argTypes:
    - struct bgp*
    - afi_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 206
    functionName: vpn_leak_from_vpn_active
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int vpn_leak_from_vpn_active(struct bgp *bgp_vrf, afi_t afi,\n\t\t\t\t\t
      \  const char **pmsg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vpn_leak_from_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.h:217,1
    - Dst: vpn_leak_to_vrf_withdraw_all
      Src: /src/frr/bgpd/bgp_mplsvpn.h:219,1
    - Dst: vpn_leak_to_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.h:222,1
    - Dst: vpn_leak_from_vrf_withdraw_all
      Src: /src/frr/bgpd/bgp_mplsvpn.h:224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - direction
    - afi
    - bgp_vpn
    - bgp_vrf
    argTypes:
    - enum vpn_policy_direction
    - afi_t
    - struct bgp*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 226
    functionName: vpn_leak_prechange
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached:
    - vpn_leak_to_vpn_active
    - vpn_leak_from_vrf_withdraw_all
    - vpn_leak_from_vpn_active
    - vpn_leak_to_vrf_withdraw_all
    linkageType: ''
    returnType: void
    signature: "void vpn_leak_prechange(enum vpn_policy_direction direction,\n\t\t\t\t
      \     afi_t afi, struct bgp *bgp_vpn,\n\t\t\t\t      struct bgp *bgp_vrf)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:238,1
    - Dst: bgp_clear_soft_in
      Src: /src/frr/bgpd/bgp_mplsvpn.h:240,1
    - Dst: vpn_leak_to_vrf_update_all
      Src: /src/frr/bgpd/bgp_mplsvpn.h:242,1
    - Dst: vpn_leak_zebra_vrf_label_update
      Src: /src/frr/bgpd/bgp_mplsvpn.h:249,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:253,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.h:256,1
    - Dst: delete_vrf_tovpn_sid
      Src: /src/frr/bgpd/bgp_mplsvpn.h:257,1
    - Dst: ensure_vrf_tovpn_sid
      Src: /src/frr/bgpd/bgp_mplsvpn.h:260,1
    - Dst: vpn_leak_zebra_vrf_sid_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.h:266,1
    - Dst: sid_diff
      Src: /src/frr/bgpd/bgp_mplsvpn.h:269,1
    - Dst: vpn_leak_zebra_vrf_sid_update
      Src: /src/frr/bgpd/bgp_mplsvpn.h:272,1
    - Dst: sid_diff
      Src: /src/frr/bgpd/bgp_mplsvpn.h:275,1
    - Dst: vpn_leak_zebra_vrf_sid_update
      Src: /src/frr/bgpd/bgp_mplsvpn.h:277,1
    - Dst: vpn_leak_from_vrf_update_all
      Src: /src/frr/bgpd/bgp_mplsvpn.h:281,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 30
    argCount: 4
    argNames:
    - direction
    - afi
    - bgp_vpn
    - bgp_vrf
    argTypes:
    - enum vpn_policy_direction
    - afi_t
    - struct bgp*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 283
    functionName: vpn_leak_postchange
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached:
    - vpn_leak_to_vrf_update_all
    - vpn_leak_zebra_vrf_sid_withdraw
    - vpn_leak_zebra_vrf_sid_update
    - CHECK_FLAG
    - delete_vrf_tovpn_sid
    - ensure_vrf_tovpn_sid
    - vpn_leak_from_vrf_update_all
    - vpn_leak_zebra_vrf_label_update
    - sid_diff
    - bgp_clear_soft_in
    linkageType: ''
    returnType: void
    signature: "void vpn_leak_postchange(enum vpn_policy_direction direction,\n\t\t\t\t
      \      afi_t afi, struct bgp *bgp_vpn,\n\t\t\t\t       struct bgp *bgp_vrf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_mplsvpn.h:303,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 309
    functionName: is_route_injectable_into_vpn
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached:
    - bgp_dest_table
    linkageType: ''
    returnType: bool
    signature: bool is_route_injectable_into_vpn(struct bgp_path_info *pi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_pi_family_matching
      Src: /src/frr/bgpd/bgp_mplsvpn.h:314,1
    - Dst: is_pi_family_matching
      Src: /src/frr/bgpd/bgp_mplsvpn.h:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 316
    functionName: is_pi_family_vpn
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.h
    functionUses: 0
    functionsReached:
    - is_pi_family_matching
    linkageType: ''
    returnType: bool
    signature: bool is_pi_family_vpn(struct bgp_path_info *pi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_advertise.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: bgp_advertise_attr_new
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_advertise_attr
    signature: struct bgp_advertise_attr *bgp_advertise_attr_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_advertise.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - baa
    argTypes:
    - struct bgp_advertise_attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: bgp_advertise_attr_free
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_advertise_attr_free(struct bgp_advertise_attr *baa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_advertise_attr_new
      Src: /src/frr/bgpd/bgp_advertise.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: bgp_advertise_attr_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - bgp_advertise_attr_new
    linkageType: ''
    returnType: void
    signature: void *bgp_advertise_attr_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: attrhash_key_make
      Src: /src/frr/bgpd/bgp_advertise.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: bgp_advertise_attr_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - attrhash_key_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_advertise_attr_hash_key(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_advertise.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: bgp_advertise_attr_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - attrhash_cmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_advertise_attr_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_advertise.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: bgp_advertise_new
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_advertise
    signature: struct bgp_advertise *bgp_advertise_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/bgp_advertise.c:79,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_advertise.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - adv
    argTypes:
    - struct bgp_advertise*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: bgp_advertise_free
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_unlock
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_advertise_free(struct bgp_advertise *adv)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - baa
    - adv
    argTypes:
    - struct bgp_advertise_attr*
    - struct bgp_advertise*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 90
    functionName: bgp_advertise_add
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_advertise_add(struct bgp_advertise_attr *baa,\n\t\t       struct
      bgp_advertise *adv)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - baa
    - adv
    argTypes:
    - struct bgp_advertise_attr*
    - struct bgp_advertise*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: bgp_advertise_delete
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_advertise_delete(struct bgp_advertise_attr *baa,\n\t\t\t
      \ struct bgp_advertise *adv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_advertise.c:109,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_advertise.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hash
    - attr
    argTypes:
    - struct hash*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: bgp_advertise_attr_intern
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - hash_get
    - bgp_attr_intern
    linkageType: ''
    returnType: struct bgp_advertise_attr
    signature: "struct bgp_advertise_attr *bgp_advertise_attr_intern(struct hash *hash,\n\t\t\t\t\t\t
      \    struct attr *attr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_advertise.c:124,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_advertise.c:127,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_advertise.c:128,1
    - Dst: bgp_advertise_attr_free
      Src: /src/frr/bgpd/bgp_advertise.c:130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - hash
    - baa
    argTypes:
    - struct hash*
    - struct bgp_advertise_attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 132
    functionName: bgp_advertise_attr_unintern
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - bgp_advertise_attr_free
    - hash_release
    - bgp_attr_unintern
    linkageType: ''
    returnType: void
    signature: "void bgp_advertise_attr_unintern(struct hash *hash,\n\t\t\t\t struct
      bgp_advertise_attr *baa)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_advertise.c:143,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_advertise.c:144,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_advertise.c:146,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_advertise.c:147,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_advertise.c:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - peer
    - dest
    - addpath_tx_id
    argTypes:
    - struct peer*
    - struct bgp_dest*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 165
    functionName: bgp_adj_out_lookup
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - SUBGRP_FOREACH_PEER
    - SUBGRP_SAFI
    - bgp_addpath_encode_tx
    - SUBGRP_AFI
    - RB_FOREACH
    linkageType: ''
    returnType: bool
    signature: "bool bgp_adj_out_lookup(struct peer *peer, struct bgp_dest *dest,\n\t\t\tuint32_t
      addpath_tx_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_advertise.c:176,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_advertise.c:177,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_advertise.c:182,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_advertise.c:183,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_advertise.c:184,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_advertise.c:185,1
    - Dst: BGP_ADJ_IN_ADD
      Src: /src/frr/bgpd/bgp_advertise.c:187,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_advertise.c:188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - dest
    - peer
    - attr
    - addpath_id
    argTypes:
    - struct bgp_dest*
    - struct peer*
    - struct attr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 189
    functionName: bgp_adj_in_set
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - XCALLOC
    - monotime
    - bgp_dest_lock_node
    - peer_lock
    - BGP_ADJ_IN_ADD
    - bgp_attr_intern
    linkageType: ''
    returnType: void
    signature: "void bgp_adj_in_set(struct bgp_dest *dest, struct peer *peer, struct
      attr *attr,\n\t\t    uint32_t addpath_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_advertise.c:193,1
    - Dst: BGP_ADJ_IN_DEL
      Src: /src/frr/bgpd/bgp_advertise.c:194,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_advertise.c:195,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_advertise.c:196,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_advertise.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dest
    - bai
    argTypes:
    - struct bgp_dest*
    - struct bgp_adj_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 198
    functionName: bgp_adj_in_remove
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_attr_unintern
    - peer_unlock
    - XFREE
    - BGP_ADJ_IN_DEL
    linkageType: ''
    returnType: void
    signature: void bgp_adj_in_remove(struct bgp_dest *dest, struct bgp_adj_in *bai)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_adj_in_remove
      Src: /src/frr/bgpd/bgp_advertise.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - dest
    - peer
    - addpath_id
    argTypes:
    - struct bgp_dest*
    - struct peer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 221
    functionName: bgp_adj_in_unset
    functionSourceFile: /src/frr/bgpd/bgp_advertise.c
    functionUses: 0
    functionsReached:
    - bgp_adj_in_remove
    linkageType: ''
    returnType: bool
    signature: "bool bgp_adj_in_unset(struct bgp_dest *dest, struct peer *peer,\n\t\t
      \     uint32_t addpath_id)"
  - BBCount: 24
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 47
    argCount: 2
    argNames:
    - afi
    - safi
    argTypes:
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 205
    functionName: bgp_node_type
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum node_type
    signature: enum node_type bgp_node_type(afi_t afi, safi_t safi)
  - BBCount: 17
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 2
    argNames:
    - afi
    - safi
    argTypes:
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 241
    functionName: get_afi_safi_vty_str
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_afi_safi_vty_str(afi_t afi, safi_t safi)
  - BBCount: 17
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 2
    argNames:
    - afi
    - safi
    argTypes:
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 283
    functionName: get_afi_safi_json_str
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_afi_safi_json_str(afi_t afi, safi_t safi)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: bgp_zebra_srv6_manager_release_locator_chunk
      Src: /src/frr/bgpd/bgp_vty.c:295,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:301,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_vty.c:302,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_vty.c:303,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:307,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_vty.c:308,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:309,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:313,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:318,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:322,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:326,1
    - Dst: vpn_leak_postchange_all
      Src: /src/frr/bgpd/bgp_vty.c:330,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:333,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_vty.c:338,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_vty.c:342,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_vty.c:346,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_vty.c:350,1
    - Dst: bgp_node_afi
      Src: /src/frr/bgpd/bgp_vty.c:356,1
    - Dst: afi_t
      Src: /src/frr/bgpd/bgp_vty.c:358,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_vty.c:379,1
    - Dst: safi_t
      Src: /src/frr/bgpd/bgp_vty.c:381,1
    - Dst: bgp_vty_afi_from_str
      Src: /src/frr/bgpd/bgp_vty.c:418,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:421,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:423,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:425,1
    - Dst: argv_find_and_parse_afi
      Src: /src/frr/bgpd/bgp_vty.c:430,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:434,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:438,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:442,1
    - Dst: bgp_vty_safi_from_str
      Src: /src/frr/bgpd/bgp_vty.c:451,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:454,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:456,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:458,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:460,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:462,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:464,1
    - Dst: argv_find_and_parse_safi
      Src: /src/frr/bgpd/bgp_vty.c:469,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:473,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:477,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:481,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:485,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:489,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:493,1
    - Dst: get_bgp_default_af_flag
      Src: /src/frr/bgpd/bgp_vty.c:515,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_vty.c:579,1
    - Dst: bgp_get
      Src: /src/frr/bgpd/bgp_vty.c:586,1
    - Dst: bgp_timers_set
      Src: /src/frr/bgpd/bgp_vty.c:589,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:593,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:595,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:597,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:599,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:601,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:603,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:605,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:607,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:609,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_vty.c:659,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_vty.c:660,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_vty.c:661,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:663,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:666,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:668,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:670,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:674,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_vty.c:677,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:681,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:682,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_vty.c:685,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:688,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_vty.c:695,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:699,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:700,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_vty.c:703,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:706,1
    - Dst: argv_find_and_parse_afi
      Src: /src/frr/bgpd/bgp_vty.c:713,1
    - Dst: argv_find_and_parse_safi
      Src: /src/frr/bgpd/bgp_vty.c:714,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:728,1
    - Dst: if_lookup_by_ipv4_exact
      Src: /src/frr/bgpd/bgp_vty.c:729,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:731,1
    - Dst: if_lookup_by_ipv6_exact
      Src: /src/frr/bgpd/bgp_vty.c:732,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:738,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_vty.c:739,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_vty.c:740,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:746,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgp_vty.c:746,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgp_vty.c:747,1
    - Dst: peer_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:759,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:761,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:770,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:772,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgp_vty.c:774,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:776,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgp_vty.c:783,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:785,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:789,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:790,1
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:802,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:804,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:814,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgp_vty.c:817,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:821,1
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgp_vty.c:823,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:827,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:828,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:831,1
    - Dst: peer
      Src: /src/frr/bgpd/bgp_vty.c:836,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:842,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:844,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:849,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:959,1
    - Dst: bgp_clear_vty_error
      Src: /src/frr/bgpd/bgp_vty.c:974,1
    - Dst: BGP_ERR_AF_UNCONFIGURED
      Src: /src/frr/bgpd/bgp_vty.c:978,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:980,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:982,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:984,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:986,1
    - Dst: BGP_ERR_SOFT_RECONFIG_UNCONFIGURED
      Src: /src/frr/bgpd/bgp_vty.c:988,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:990,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:994,1
    - Dst: bgp_peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1003,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1021,1
    - Dst: peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1030,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_vty.c:1032,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_vty.c:1044,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1046,1
    - Dst: peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1050,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_vty.c:1052,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_vty.c:1060,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1062,1
    - Dst: peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1066,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_vty.c:1068,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:1092,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgp_vty.c:1094,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:1096,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1096,1
    - Dst: bgp_peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1099,1
    - Dst: bgp_clear_vty_error
      Src: /src/frr/bgpd/bgp_vty.c:1103,1
    - Dst: bgp_zebra_send_capabilities
      Src: /src/frr/bgpd/bgp_vty.c:1108,1
    - Dst: bgp_zebra_send_capabilities
      Src: /src/frr/bgpd/bgp_vty.c:1111,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/bgpd/bgp_vty.c:1118,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:1126,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:1128,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgp_vty.c:1130,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 128
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 658
        line_start: 658
        source_file: /src/frr/bgpd/bgp_vty.c
    - condition: (!"Reached end of function where we did not expect to")
      pos:
        line_end: 578
        line_start: 578
        source_file: /src/frr/bgpd/bgp_vty.c
    - condition: (bgp)
      pos:
        line_end: 660
        line_start: 660
        source_file: /src/frr/bgpd/bgp_vty.c
    - condition: (safi)
      pos:
        line_end: 659
        line_start: 659
        source_file: /src/frr/bgpd/bgp_vty.c
    constantsTouched: []
    func_position:
      end: 1138
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 1138
    functionName: bgp_srv6_locator_unset
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - srv6_locator_chunk_free
    - peer_lookup_by_hostname
    - peer_af_find
    - bgp_clear_vty_error
    - sockunion_cmp
    - zlog_warn
    - json_object_string_add
    - peer_lookup
    - peer_clear_soft
    - peer_lookup_by_conf_if
    - strmatch
    - peer_and_group_lookup_vty
    - bgp_timers_set
    - memset
    - bgp_peer_gr_flags_update
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - bgp_vty_safi_from_str
    - get_afi_safi_str
    - BGP_ERR_SOFT_RECONFIG_UNCONFIGURED
    - safi_t
    - if
    - peer_clear
    - bgp_lookup_by_name
    - assert
    - bgp_node_safi
    - get_bgp_default_af_flag
    - vty_out
    - argv_find_and_parse_afi
    - vpn_leak_postchange_all
    - bgp_get
    - bgp_peer_clear
    - bgp_zebra_send_capabilities
    - if_lookup_by_ipv4_exact
    - XFREE
    - listnode_delete
    - argv_find_and_parse_safi
    - BGP_ERR_AF_UNCONFIGURED
    - argv_find
    - peer
    - json_object_new_object
    - if_lookup_by_ipv6_exact
    - str2sockunion
    - bgp_node_afi
    - peer_group_lookup
    - peer_lookup_vty
    - CHECK_FLAG
    - VTY_GET_CONTEXT
    - CMD_SUCCESS
    - peer_dynamic_neighbor
    - SET_FLAG
    - bgp_zebra_srv6_manager_release_locator_chunk
    - afi_t
    - ALL_LIST_ELEMENTS
    - vty_json
    - bgp_vty_afi_from_str
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: int bgp_srv6_locator_unset(struct bgp *bgp)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_vty.c:659,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_vty.c:660,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_vty.c:661,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:663,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:666,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:668,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:670,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:674,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_vty.c:677,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:681,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:682,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_vty.c:685,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:688,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_vty.c:695,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:699,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:700,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_vty.c:703,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:706,1
    - Dst: argv_find_and_parse_afi
      Src: /src/frr/bgpd/bgp_vty.c:713,1
    - Dst: argv_find_and_parse_safi
      Src: /src/frr/bgpd/bgp_vty.c:714,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 8
    argNames:
    - vty
    - argv
    - argc
    - idx
    - afi
    - safi
    - bgp
    - use_json
    argTypes:
    - struct vty*
    - struct cmd_token**
    - int
    - int*
    - afi_t*
    - safi_t*
    - struct bgp**
    - bool
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 658
        line_start: 658
        source_file: /src/frr/bgpd/bgp_vty.c
    - condition: (bgp)
      pos:
        line_end: 660
        line_start: 660
        source_file: /src/frr/bgpd/bgp_vty.c
    - condition: (safi)
      pos:
        line_end: 659
        line_start: 659
        source_file: /src/frr/bgpd/bgp_vty.c
    constantsTouched: []
    func_position:
      end: 718
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 718
    functionName: bgp_vty_find_and_parse_afi_safi_bgp
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - json_object_new_object
    - vty_out
    - bgp_get_default
    - argv_find_and_parse_afi
    - json_object_string_add
    - bgp_lookup_by_name
    - argv_find_and_parse_safi
    - vty_json
    - argv_find
    - assert
    linkageType: ''
    returnType: int
    signature: "int bgp_vty_find_and_parse_afi_safi_bgp(struct vty *vty,\n\t\t\t\t\tstruct
      cmd_token **argv, int argc,\n\t\t\t\t\tint *idx, afi_t *afi, safi_t *safi,\n\t\t\t\t\tstruct
      bgp **bgp, bool use_json)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:728,1
    - Dst: if_lookup_by_ipv4_exact
      Src: /src/frr/bgpd/bgp_vty.c:729,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:731,1
    - Dst: if_lookup_by_ipv6_exact
      Src: /src/frr/bgpd/bgp_vty.c:732,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:738,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_vty.c:739,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_vty.c:740,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:746,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgp_vty.c:746,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgp_vty.c:747,1
    - Dst: peer_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:759,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:761,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:770,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:772,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgp_vty.c:774,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:776,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgp_vty.c:783,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:785,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:789,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:790,1
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:802,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:804,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:814,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgp_vty.c:817,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:821,1
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgp_vty.c:823,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:827,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:828,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:831,1
    - Dst: peer
      Src: /src/frr/bgpd/bgp_vty.c:836,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:842,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:844,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:849,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:959,1
    - Dst: bgp_clear_vty_error
      Src: /src/frr/bgpd/bgp_vty.c:974,1
    - Dst: BGP_ERR_AF_UNCONFIGURED
      Src: /src/frr/bgpd/bgp_vty.c:978,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:980,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:982,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:984,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:986,1
    - Dst: BGP_ERR_SOFT_RECONFIG_UNCONFIGURED
      Src: /src/frr/bgpd/bgp_vty.c:988,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:990,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_vty.c:994,1
    - Dst: bgp_peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1003,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1021,1
    - Dst: peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1030,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_vty.c:1032,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_vty.c:1044,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1046,1
    - Dst: peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1050,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_vty.c:1052,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_vty.c:1060,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1062,1
    - Dst: peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1066,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_vty.c:1068,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 47
    argCount: 2
    argNames:
    - bgp
    - su
    argTypes:
    - struct bgp*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 1072
    functionName: peer_address_self_check
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - peer_lookup_by_hostname
    - peer_af_find
    - bgp_clear_vty_error
    - sockunion_cmp
    - zlog_warn
    - peer_lookup
    - peer_clear_soft
    - peer_lookup_by_conf_if
    - peer_and_group_lookup_vty
    - ALL_LIST_ELEMENTS_RO
    - get_afi_safi_str
    - BGP_ERR_SOFT_RECONFIG_UNCONFIGURED
    - peer_clear
    - if
    - vty_out
    - bgp_peer_clear
    - if_lookup_by_ipv4_exact
    - BGP_ERR_AF_UNCONFIGURED
    - peer
    - if_lookup_by_ipv6_exact
    - str2sockunion
    - peer_lookup_vty
    - VTY_GET_CONTEXT
    - peer_dynamic_neighbor
    - SET_FLAG
    - peer_group_lookup
    - bgp_vty_return
    linkageType: ''
    returnType: bool
    signature: bool peer_address_self_check(struct bgp *bgp, union sockunion *su)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:1092,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgp_vty.c:1094,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:1096,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:1096,1
    - Dst: bgp_peer_clear
      Src: /src/frr/bgpd/bgp_vty.c:1099,1
    - Dst: bgp_clear_vty_error
      Src: /src/frr/bgpd/bgp_vty.c:1103,1
    - Dst: bgp_zebra_send_capabilities
      Src: /src/frr/bgpd/bgp_vty.c:1108,1
    - Dst: bgp_zebra_send_capabilities
      Src: /src/frr/bgpd/bgp_vty.c:1111,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/bgpd/bgp_vty.c:1118,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:1126,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:1128,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgp_vty.c:1130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 7
    argNames:
    - vty
    - bgp
    - afi
    - safi
    - sort
    - stype
    - arg
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    - safi_t
    - enum clear_sort
    - enum bgp_clear_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1075
    functionDepth: 1
    functionLinenumber: 1075
    functionLinenumberEnd: 1137
    functionName: bgp_clear
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - bgp_peer_gr_flags_update
    - str2sockunion
    - peer_lookup_by_hostname
    - CHECK_FLAG
    - bgp_peer_clear
    - bgp_clear_vty_error
    - bgp_zebra_send_capabilities
    - CMD_SUCCESS
    - if
    - ALL_LIST_ELEMENTS
    - peer_lookup_by_conf_if
    linkageType: ''
    returnType: int
    signature: "int bgp_clear(struct vty *vty, struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t     enum clear_sort sort, enum bgp_clear_type stype,\n\t\t     const
      char *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:2088,1
    - Dst: bgp_node_afi
      Src: /src/frr/bgpd/bgp_vty.c:2094,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_vty.c:2095,1
    - Dst: strtol
      Src: /src/frr/bgpd/bgp_vty.c:2098,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2100,1
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/bgpd/bgp_vty.c:2105,1
    - Dst: bgp_maximum_paths_unset
      Src: /src/frr/bgpd/bgp_vty.c:2108,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2111,1
    - Dst: bgp_recalculate_all_bestpaths
      Src: /src/frr/bgpd/bgp_vty.c:2119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - vty
    - peer_type
    - mpaths
    - options
    - set
    argTypes:
    - struct vty*
    - int
    - char*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2122
    functionName: bgp_maxpaths_config_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - bgp_node_safi
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - bgp_node_afi
    - bgp_maximum_paths_set
    - bgp_recalculate_all_bestpaths
    - strtol
    - bgp_maximum_paths_unset
    linkageType: ''
    returnType: int
    signature: "int bgp_maxpaths_config_vty(struct vty *vty, int peer_type,\n\t\t\t\t
      \  const char *mpaths, uint16_t options,\n\t\t\t\t   int set)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:2241,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2243,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2254,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2265,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:2274,1
    - Dst: bgp_global_update_delay_deconfig_vty
      Src: /src/frr/bgpd/bgp_vty.c:2282,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_vty.c:2290,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:2290,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:2301,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:2304,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2305,1
    - Dst: return
      Src: /src/frr/bgpd/bgp_vty.c:2307,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - vty
    - update_delay
    - establish_wait
    argTypes:
    - struct vty*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2227
    functionDepth: 1
    functionLinenumber: 2227
    functionLinenumberEnd: 2323
    functionName: bgp_global_update_delay_config_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - return
    - for
    - if
    - ALL_LIST_ELEMENTS
    - bgp_global_update_delay_deconfig_vty
    linkageType: ''
    returnType: int
    signature: "int bgp_global_update_delay_config_vty(struct vty *vty,\n\t\t\t\t\t
      \     uint16_t update_delay,\n\t\t\t\t\t      uint16_t establish_wait)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:2333,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2331
    functionDepth: 1
    functionLinenumber: 2331
    functionLinenumberEnd: 2345
    functionName: bgp_update_delay_deconfig_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - VTY_DECLVAR_CONTEXT
    linkageType: ''
    returnType: int
    signature: int bgp_update_delay_deconfig_vty(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2351,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2353,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - bgp
    argTypes:
    - struct vty*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2347
    functionDepth: 1
    functionLinenumber: 2347
    functionLinenumberEnd: 2356
    functionName: bgp_config_write_update_delay
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bgp_config_write_update_delay(struct vty *vty, struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:2411,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_vty.c:2414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - quanta
    - set
    argTypes:
    - struct vty*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2417
      start: 2408
    functionDepth: 1
    functionLinenumber: 2408
    functionLinenumberEnd: 2417
    functionName: bgp_wpkt_quanta_config_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - atomic_store_explicit
    - VTY_DECLVAR_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int bgp_wpkt_quanta_config_vty(struct vty *vty, uint32_t quanta,\n\t\t\t\t
      \     bool set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:2422,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_vty.c:2425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - quanta
    - set
    argTypes:
    - struct vty*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2428
      start: 2419
    functionDepth: 1
    functionLinenumber: 2419
    functionLinenumberEnd: 2428
    functionName: bgp_rpkt_quanta_config_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - atomic_store_explicit
    - VTY_DECLVAR_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int bgp_rpkt_quanta_config_vty(struct vty *vty, uint32_t quanta,\n\t\t\t\t
      \     bool set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:2433,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - bgp
    argTypes:
    - struct vty*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2436
      start: 2430
    functionDepth: 1
    functionLinenumber: 2430
    functionLinenumberEnd: 2436
    functionName: bgp_config_write_wpkt_quanta
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - atomic_load_explicit
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bgp_config_write_wpkt_quanta(struct vty *vty, struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:2441,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - bgp
    argTypes:
    - struct vty*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2444
      start: 2438
    functionDepth: 1
    functionLinenumber: 2438
    functionLinenumberEnd: 2444
    functionName: bgp_config_write_rpkt_quanta
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - atomic_load_explicit
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bgp_config_write_rpkt_quanta(struct vty *vty, struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - bgp
    argTypes:
    - struct vty*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2478
      start: 2474
    functionDepth: 1
    functionLinenumber: 2474
    functionLinenumberEnd: 2478
    functionName: bgp_config_write_coalesce_time
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bgp_config_write_coalesce_time(struct vty *vty, struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - bgp
    argTypes:
    - struct vty*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2488
      start: 2481
    functionDepth: 1
    functionLinenumber: 2481
    functionLinenumberEnd: 2488
    functionName: bgp_config_tcp_keepalive
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bgp_config_tcp_keepalive(struct vty *vty, struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2618,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2623,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2626,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:2627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - vty
    - bgp
    - afi
    - safi
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2614
    functionDepth: 1
    functionLinenumber: 2614
    functionLinenumberEnd: 2629
    functionName: bgp_config_write_maxpaths
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_config_write_maxpaths(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \     afi_t afi, safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3663,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3667,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:3670,1
    - Dst: bgp_initiate_graceful_shut_unshut
      Src: /src/frr/bgpd/bgp_vty.c:3671,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:3686,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:3689,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3689,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:3690,1
    - Dst: CMD_WARNING_CONFIG_FAILED
      Src: /src/frr/bgpd/bgp_vty.c:3692,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3695,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3696,1
    - Dst: bgp_initiate_graceful_shut_unshut
      Src: /src/frr/bgpd/bgp_vty.c:3697,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_vty.c:3703,1
    - Dst: bgp_global_graceful_shutdown_deconfig_vty
      Src: /src/frr/bgpd/bgp_vty.c:3711,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:3713,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3716,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:3717,1
    - Dst: CMD_WARNING_CONFIG_FAILED
      Src: /src/frr/bgpd/bgp_vty.c:3719,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3722,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3723,1
    - Dst: bgp_initiate_graceful_shut_unshut
      Src: /src/frr/bgpd/bgp_vty.c:3724,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_vty.c:3731,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:3738,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3740
      start: 3658
    functionDepth: 1
    functionLinenumber: 3658
    functionLinenumberEnd: 3740
    functionName: bgp_global_graceful_shutdown_deconfig_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 1
    functionsReached:
    - DEFUN
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - CHECK_FLAG
    - bgp_initiate_graceful_shut_unshut
    - SET_FLAG
    - UNSET_FLAG
    - bgp_global_graceful_shutdown_deconfig_vty
    - if
    - ALL_LIST_ELEMENTS
    - CMD_WARNING_CONFIG_FAILED
    linkageType: ''
    returnType: int
    signature: int bgp_global_graceful_shutdown_deconfig_vty(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_vty.c:4051,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_vty.c:4053,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4054
      start: 4050
    functionDepth: 1
    functionLinenumber: 4050
    functionLinenumberEnd: 4054
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 2
    functionsReached:
    - bgp_fibupd_safi
    - bgp_zebra_announce_table
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_vty.c:4078,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_vty.c:4080,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4081
      start: 4077
    functionDepth: 1
    functionLinenumber: 4077
    functionLinenumberEnd: 4081
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 2
    functionsReached:
    - bgp_fibupd_safi
    - bgp_zebra_announce_table
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_vty.c:4397,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:4398,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:4399,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_vty.c:4402,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:4424,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:4431,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:4432,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:4434,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_vty.c:4438,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4440,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_vty.c:4444,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_vty.c:4446,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4447,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_vty.c:4452,1
    - Dst: listen_range_exists
      Src: /src/frr/bgpd/bgp_vty.c:4455,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:4457,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4460,1
    - Dst: CMD_WARNING_CONFIG_FAILED
      Src: /src/frr/bgpd/bgp_vty.c:4463,1
    - Dst: listen_range_exists
      Src: /src/frr/bgpd/bgp_vty.c:4468,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4469,1
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgp_vty.c:4474,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4476,1
    - Dst: peer_group_listen_range_add
      Src: /src/frr/bgpd/bgp_vty.c:4480,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:4481,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_vty.c:4484,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:4495,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:4502,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:4503,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:4505,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_vty.c:4509,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4511,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_vty.c:4515,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_vty.c:4517,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4518,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_vty.c:4523,1
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgp_vty.c:4525,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4527,1
    - Dst: peer_group_listen_range_del
      Src: /src/frr/bgpd/bgp_vty.c:4531,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:4532,1
    - Dst: bgp_config_write_listen
      Src: /src/frr/bgpd/bgp_vty.c:4535,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4543,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:4546,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:4548,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4550,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - bgp
    - range
    - exact
    argTypes:
    - struct bgp*
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4555
      start: 4387
    functionDepth: 1
    functionLinenumber: 4387
    functionLinenumberEnd: 4555
    functionName: listen_range_exists
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 1
    functionsReached:
    - DEFUN
    - peer_group_listen_range_del
    - prefix_same
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - apply_mask
    - peer_group_listen_range_add
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - listen_range_exists
    - bgp_vty_return
    - bgp_config_write_listen
    - str2prefix
    - family2afi
    - ALL_LIST_ELEMENTS
    - peer_group_lookup
    - argv_find
    - CMD_WARNING_CONFIG_FAILED
    linkageType: ''
    returnType: struct peer_group
    signature: "struct peer_group *listen_range_exists(struct bgp *bgp,\n\t\t\t\t\t
      \     struct prefix *range, int exact)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:4590,1
    - Dst: asn_str2asn
      Src: /src/frr/bgpd/bgp_vty.c:4602,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4606,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:4610,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:4615,1
    - Dst: peer_remote_as
      Src: /src/frr/bgpd/bgp_vty.c:4617,1
    - Dst: peer_group_remote_as
      Src: /src/frr/bgpd/bgp_vty.c:4621,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4624,1
    - Dst: peer_address_self_check
      Src: /src/frr/bgpd/bgp_vty.c:4631,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4632,1
    - Dst: peer_remote_as
      Src: /src/frr/bgpd/bgp_vty.c:4636,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:4639,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - vty
    - peer_str
    - as_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4640
      start: 4587
    functionDepth: 2
    functionLinenumber: 4587
    functionLinenumberEnd: 4640
    functionName: peer_remote_as_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_remote_as
    - vty_out
    - str2sockunion
    - VTY_DECLVAR_CONTEXT
    - peer_address_self_check
    - asn_str2asn
    - peer_lookup_by_conf_if
    - peer_group_remote_as
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_remote_as_vty(struct vty *vty, const char *peer_str,\n\t\t\t
      \     const char *as_str)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_vty.c:4766,1
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgp_vty.c:4773,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4776,1
    - Dst: asn_str2asn
      Src: /src/frr/bgpd/bgp_vty.c:4787,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_vty.c:4792,1
    - Dst: peer_remote_as
      Src: /src/frr/bgpd/bgp_vty.c:4795,1
    - Dst: peer_create
      Src: /src/frr/bgpd/bgp_vty.c:4798,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4802,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgp_vty.c:4807,1
    - Dst: bgp_zebra_initiate_radv
      Src: /src/frr/bgpd/bgp_vty.c:4818,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:4821,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:4822,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgp_vty.c:4824,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgp_vty.c:4826,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgp_vty.c:4829,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_vty.c:4831,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgp_vty.c:4834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:4837,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:4838,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:4839,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:4840,1
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgp_vty.c:4844,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:4846,1
    - Dst: peer_group_bind
      Src: /src/frr/bgpd/bgp_vty.c:4850,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:4853,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 57
    argCount: 5
    argNames:
    - vty
    - conf_if
    - v6only
    - peer_group_name
    - as_str
    argTypes:
    - struct vty*
    - char*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4854
      start: 4761
    functionDepth: 1
    functionLinenumber: 4761
    functionLinenumberEnd: 4854
    functionName: peer_conf_interface_get
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_remote_as
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - CHECK_FLAG
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_zebra_initiate_radv
    - peer_flag_unset
    - peer_group_bind
    - peer_flag_set
    - SET_FLAG
    - bgp_vty_return
    - bgp_notify_send
    - asn_str2asn
    - peer_group_lookup
    - peer_lookup_by_conf_if
    - peer_create
    - bgp_session_reset
    linkageType: ''
    returnType: int
    signature: "int peer_conf_interface_get(struct vty *vty, const char *conf_if,\n\t\t\t\t
      \  int v6only,\n\t\t\t\t   const char *peer_group_name,\n\t\t\t\t   const char
      *as_str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:5723,1
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgp_vty.c:5728,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgp_vty.c:5730,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:5732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 6
    argNames:
    - vty
    - peer_str
    - afi
    - safi
    - flag
    - set
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5733
      start: 5716
    functionDepth: 1
    functionLinenumber: 5716
    functionLinenumberEnd: 5733
    functionName: peer_af_flag_modify_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_af_flag_set
    - peer_and_group_lookup_vty
    - peer_af_flag_unset
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_af_flag_modify_vty(struct vty *vty, const char *peer_str,\n\t\t\t\t
      \  afi_t afi, safi_t safi, uint64_t flag,\n\t\t\t\t   int set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_modify_vty
      Src: /src/frr/bgpd/bgp_vty.c:5738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - vty
    - peer_str
    - afi
    - safi
    - flag
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5739
      start: 5735
    functionDepth: 2
    functionLinenumber: 5735
    functionLinenumberEnd: 5739
    functionName: peer_af_flag_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_af_flag_modify_vty
    linkageType: ''
    returnType: int
    signature: "int peer_af_flag_set_vty(struct vty *vty, const char *peer_str,\n\t\t\t\tafi_t
      afi, safi_t safi, uint64_t flag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_modify_vty
      Src: /src/frr/bgpd/bgp_vty.c:5744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - vty
    - peer_str
    - afi
    - safi
    - flag
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5745
      start: 5741
    functionDepth: 2
    functionLinenumber: 5741
    functionLinenumberEnd: 5745
    functionName: peer_af_flag_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_af_flag_modify_vty
    linkageType: ''
    returnType: int
    signature: "int peer_af_flag_unset_vty(struct vty *vty, const char *peer_str,\n\t\t\t\t
      \ afi_t afi, safi_t safi, uint64_t flag)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:6652,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:6657,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:6662,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:6664,1
    - Dst: peer_ebgp_multihop_set
      Src: /src/frr/bgpd/bgp_vty.c:6664,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - vty
    - ip_str
    - ttl_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6665
      start: 6646
    functionDepth: 1
    functionLinenumber: 6646
    functionLinenumberEnd: 6665
    functionName: peer_ebgp_multihop_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strtoul
    - bgp_vty_return
    - peer_ebgp_multihop_set
    linkageType: ''
    returnType: int
    signature: "int peer_ebgp_multihop_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \     const char *ttl_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:6671,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:6675,1
    - Dst: peer_ebgp_multihop_unset
      Src: /src/frr/bgpd/bgp_vty.c:6675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - ip_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6676
      start: 6667
    functionDepth: 0
    functionLinenumber: 6667
    functionLinenumberEnd: 6676
    functionName: peer_ebgp_multihop_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_ebgp_multihop_unset
    - peer_and_group_lookup_vty
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: int peer_ebgp_multihop_unset_vty(struct vty *vty, const char *ip_str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:6739,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:6741,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:6743,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:6745,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:6747,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - role_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6750
      start: 6737
    functionDepth: 0
    functionLinenumber: 6737
    functionLinenumberEnd: 6750
    functionName: get_role_by_name
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t get_role_by_name(const char *role_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:6757,1
    - Dst: get_role_by_name
      Src: /src/frr/bgpd/bgp_vty.c:6760,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:6763,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:6764,1
    - Dst: peer_role_set
      Src: /src/frr/bgpd/bgp_vty.c:6764,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - vty
    - ip_str
    - role_str
    - strict_mode
    argTypes:
    - struct vty*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6765
      start: 6752
    functionDepth: 1
    functionLinenumber: 6752
    functionLinenumberEnd: 6765
    functionName: peer_role_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_role_set
    - peer_and_group_lookup_vty
    - get_role_by_name
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_role_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t
      \    const char *role_str, bool strict_mode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:6771,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:6774,1
    - Dst: peer_role_unset
      Src: /src/frr/bgpd/bgp_vty.c:6774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - ip_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6775
      start: 6767
    functionDepth: 0
    functionLinenumber: 6767
    functionLinenumberEnd: 6775
    functionName: peer_role_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_role_unset
    - peer_and_group_lookup_vty
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: int peer_role_unset_vty(struct vty *vty, const char *ip_str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:6990,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_vty.c:6998,1
    - Dst: peer_update_source_addr_set
      Src: /src/frr/bgpd/bgp_vty.c:6999,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_vty.c:7001,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:7002,1
    - Dst: peer_update_source_if_set
      Src: /src/frr/bgpd/bgp_vty.c:7006,1
    - Dst: peer_update_source_unset
      Src: /src/frr/bgpd/bgp_vty.c:7009,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - peer_str
    - source_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7012
      start: 6983
    functionDepth: 1
    functionLinenumber: 6983
    functionLinenumberEnd: 7012
    functionName: peer_update_source_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - vty_out
    - str2sockunion
    - peer_update_source_unset
    - peer_update_source_addr_set
    - str2prefix
    - peer_update_source_if_set
    linkageType: ''
    returnType: int
    signature: "int peer_update_source_vty(struct vty *vty, const char *peer_str,\n\t\t\t\t
      \ const char *source_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7054,1
    - Dst: route_map_lookup_warn_noexist
      Src: /src/frr/bgpd/bgp_vty.c:7060,1
    - Dst: peer_default_originate_set
      Src: /src/frr/bgpd/bgp_vty.c:7061,1
    - Dst: peer_default_originate_unset
      Src: /src/frr/bgpd/bgp_vty.c:7064,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7066,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - vty
    - peer_str
    - afi
    - safi
    - rmap
    - set
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7067
      start: 7046
    functionDepth: 1
    functionLinenumber: 7046
    functionLinenumberEnd: 7067
    functionName: peer_default_originate_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - peer_default_originate_unset
    - peer_default_originate_set
    - route_map_lookup_warn_noexist
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_default_originate_set_vty(struct vty *vty, const char *peer_str,\n\t\t\t\t\t
      \ afi_t afi, safi_t safi,\n\t\t\t\t\t  const char *rmap, int set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7146,1
    - Dst: getservbyname
      Src: /src/frr/bgpd/bgp_vty.c:7151,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_vty.c:7152,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:7154,1
    - Dst: peer_port_set
      Src: /src/frr/bgpd/bgp_vty.c:7157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - vty
    - ip_str
    - afi
    - port_str
    argTypes:
    - struct vty*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7160
      start: 7139
    functionDepth: 1
    functionLinenumber: 7139
    functionLinenumberEnd: 7160
    functionName: peer_port_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strtoul
    - peer_port_set
    - getservbyname
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int peer_port_vty(struct vty *vty, const char *ip_str, int afi,\n\t\t\t
      const char *port_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7199,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:7203,1
    - Dst: peer_weight_set
      Src: /src/frr/bgpd/bgp_vty.c:7205,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - weight_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7207
      start: 7192
    functionDepth: 1
    functionLinenumber: 7192
    functionLinenumberEnd: 7207
    functionName: peer_weight_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_weight_set
    - peer_and_group_lookup_vty
    - strtoul
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_weight_set_vty(struct vty *vty, const char *ip_str, afi_t
      afi,\n\t\t\t       safi_t safi, const char *weight_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7215,1
    - Dst: peer_weight_unset
      Src: /src/frr/bgpd/bgp_vty.c:7219,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7221
      start: 7209
    functionDepth: 1
    functionLinenumber: 7209
    functionLinenumberEnd: 7221
    functionName: peer_weight_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_weight_unset
    - peer_and_group_lookup_vty
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_weight_unset_vty(struct vty *vty, const char *ip_str, afi_t
      afi,\n\t\t\t\t safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7325,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:7329,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:7330,1
    - Dst: peer_timers_set
      Src: /src/frr/bgpd/bgp_vty.c:7332,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - vty
    - ip_str
    - keep_str
    - hold_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7335
      start: 7317
    functionDepth: 1
    functionLinenumber: 7317
    functionLinenumberEnd: 7335
    functionName: peer_timers_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - peer_timers_set
    - strtoul
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_timers_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t
      \      const char *keep_str, const char *hold_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7342,1
    - Dst: peer_timers_unset
      Src: /src/frr/bgpd/bgp_vty.c:7346,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - ip_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7349
      start: 7337
    functionDepth: 1
    functionLinenumber: 7337
    functionLinenumberEnd: 7349
    functionName: peer_timers_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - peer_timers_unset
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: int peer_timers_unset_vty(struct vty *vty, const char *ip_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7390,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:7394,1
    - Dst: peer_timers_connect_set
      Src: /src/frr/bgpd/bgp_vty.c:7396,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - ip_str
    - time_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7399
      start: 7383
    functionDepth: 1
    functionLinenumber: 7383
    functionLinenumberEnd: 7399
    functionName: peer_timers_connect_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - bgp_vty_return
    - strtoul
    - peer_timers_connect_set
    linkageType: ''
    returnType: int
    signature: "int peer_timers_connect_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \      const char *time_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7406,1
    - Dst: peer_timers_connect_unset
      Src: /src/frr/bgpd/bgp_vty.c:7410,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - ip_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7413
      start: 7401
    functionDepth: 1
    functionLinenumber: 7401
    functionLinenumberEnd: 7413
    functionName: peer_timers_connect_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - peer_timers_connect_unset
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: int peer_timers_connect_unset_vty(struct vty *vty, const char *ip_str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7499,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:7504,1
    - Dst: peer_advertise_interval_set
      Src: /src/frr/bgpd/bgp_vty.c:7507,1
    - Dst: peer_advertise_interval_unset
      Src: /src/frr/bgpd/bgp_vty.c:7509,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7511,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - vty
    - ip_str
    - time_str
    - set
    argTypes:
    - struct vty*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7512
      start: 7492
    functionDepth: 1
    functionLinenumber: 7492
    functionLinenumberEnd: 7512
    functionName: peer_advertise_interval_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strtoul
    - peer_advertise_interval_unset
    - peer_advertise_interval_set
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_advertise_interval_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \      const char *time_str, int set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7596,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:7598,1
    - Dst: peer_interface_set
      Src: /src/frr/bgpd/bgp_vty.c:7603,1
    - Dst: peer_interface_unset
      Src: /src/frr/bgpd/bgp_vty.c:7605,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - vty
    - ip_str
    - str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7608
      start: 7591
    functionDepth: 1
    functionLinenumber: 7591
    functionLinenumberEnd: 7608
    functionName: peer_interface_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_interface_set
    - peer_lookup_vty
    - peer_interface_unset
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int peer_interface_vty(struct vty *vty, const char *ip_str,\n\t\t\t
      \     const char *str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7727,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7732,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7734,1
    - Dst: peer_prefix_list_set
      Src: /src/frr/bgpd/bgp_vty.c:7737,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7739,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - name_str
    - direct_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7740
      start: 7718
    functionDepth: 1
    functionLinenumber: 7718
    functionLinenumberEnd: 7740
    functionName: peer_prefix_list_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strncmp
    - peer_prefix_list_set
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_prefix_list_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \   afi_t afi, safi_t safi,\n\t\t\t\t    const char *name_str,\n\t\t\t\t    const
      char *direct_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7750,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7755,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7757,1
    - Dst: peer_prefix_list_unset
      Src: /src/frr/bgpd/bgp_vty.c:7760,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7762,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - direct_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7763
      start: 7742
    functionDepth: 1
    functionLinenumber: 7742
    functionLinenumberEnd: 7763
    functionName: peer_prefix_list_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strncmp
    - peer_prefix_list_unset
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_prefix_list_unset_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \     afi_t afi, safi_t safi,\n\t\t\t\t      const char *direct_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7825,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7830,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7832,1
    - Dst: peer_aslist_set
      Src: /src/frr/bgpd/bgp_vty.c:7835,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7837,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - name_str
    - direct_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7838
      start: 7817
    functionDepth: 0
    functionLinenumber: 7817
    functionLinenumberEnd: 7838
    functionName: peer_aslist_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strncmp
    - peer_aslist_set
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_aslist_set_vty(struct vty *vty, const char *ip_str, afi_t
      afi,\n\t\t\t       safi_t safi, const char *name_str,\n\t\t\t       const char
      *direct_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7847,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7852,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:7854,1
    - Dst: peer_aslist_unset
      Src: /src/frr/bgpd/bgp_vty.c:7857,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7859,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - direct_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7860
      start: 7840
    functionDepth: 1
    functionLinenumber: 7840
    functionLinenumberEnd: 7860
    functionName: peer_aslist_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strncmp
    - peer_aslist_unset
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_aslist_unset_vty(struct vty *vty, const char *ip_str, afi_t
      afi,\n\t\t\t\t safi_t safi, const char *direct_str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:7926,1
    - Dst: route_map_lookup_warn_noexist
      Src: /src/frr/bgpd/bgp_vty.c:7930,1
    - Dst: route_map_lookup_warn_noexist
      Src: /src/frr/bgpd/bgp_vty.c:7931,1
    - Dst: peer_advertise_map_set
      Src: /src/frr/bgpd/bgp_vty.c:7934,1
    - Dst: peer_advertise_map_unset
      Src: /src/frr/bgpd/bgp_vty.c:7938,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:7942,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 8
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - advertise_str
    - condition_str
    - condition
    - set
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - char*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7943
      start: 7915
    functionDepth: 4
    functionLinenumber: 7915
    functionLinenumberEnd: 7943
    functionName: peer_advertise_map_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - peer_advertise_map_set
    - peer_advertise_map_unset
    - route_map_lookup_warn_noexist
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_advertise_map_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \     afi_t afi, safi_t safi,\n\t\t\t\t      const char *advertise_str,\n\t\t\t\t
      \     const char *condition_str, bool condition,\n\t\t\t\t      bool set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:8003,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:8008,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:8010,1
    - Dst: route_map_lookup_warn_noexist
      Src: /src/frr/bgpd/bgp_vty.c:8013,1
    - Dst: peer_route_map_set
      Src: /src/frr/bgpd/bgp_vty.c:8014,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:8016,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - name_str
    - direct_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8017
      start: 7994
    functionDepth: 1
    functionLinenumber: 7994
    functionLinenumberEnd: 8017
    functionName: peer_route_map_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - peer_route_map_set
    - strncmp
    - route_map_lookup_warn_noexist
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_route_map_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \ afi_t afi, safi_t safi, const char *name_str,\n\t\t\t\t  const char *direct_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:8027,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:8032,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:8034,1
    - Dst: peer_route_map_unset
      Src: /src/frr/bgpd/bgp_vty.c:8037,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:8039,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - direct_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8040
      start: 8019
    functionDepth: 0
    functionLinenumber: 8019
    functionLinenumberEnd: 8040
    functionName: peer_route_map_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_route_map_unset
    - peer_and_group_lookup_vty
    - strncmp
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_route_map_unset_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \   afi_t afi, safi_t safi,\n\t\t\t\t    const char *direct_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:8103,1
    - Dst: route_map_lookup_warn_noexist
      Src: /src/frr/bgpd/bgp_vty.c:8107,1
    - Dst: peer_unsuppress_map_set
      Src: /src/frr/bgpd/bgp_vty.c:8108,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:8110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - name_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8111
      start: 8095
    functionDepth: 1
    functionLinenumber: 8095
    functionLinenumberEnd: 8111
    functionName: peer_unsuppress_map_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - route_map_lookup_warn_noexist
    - bgp_vty_return
    - peer_unsuppress_map_set
    linkageType: ''
    returnType: int
    signature: "int peer_unsuppress_map_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \      afi_t afi, safi_t safi,\n\t\t\t\t       const char *name_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:8120,1
    - Dst: peer_unsuppress_map_unset
      Src: /src/frr/bgpd/bgp_vty.c:8124,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:8126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8127
      start: 8114
    functionDepth: 0
    functionLinenumber: 8114
    functionLinenumberEnd: 8127
    functionName: peer_unsuppress_map_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - peer_unsuppress_map_unset
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_unsuppress_map_unset_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t\t
      afi_t afi, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:8184,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:8188,1
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_vty.c:8190,1
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_vty.c:8195,1
    - Dst: peer_maximum_prefix_set
      Src: /src/frr/bgpd/bgp_vty.c:8199,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:8202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 9
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    - num_str
    - threshold_str
    - warning
    - restart_str
    - force_str
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - char*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8203
      start: 8171
    functionDepth: 0
    functionLinenumber: 8171
    functionLinenumberEnd: 8203
    functionName: peer_maximum_prefix_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strtoul
    - peer_maximum_prefix_set
    - atoi
    - bgp_vty_return
    linkageType: ''
    returnType: int
    signature: "int peer_maximum_prefix_set_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \      afi_t afi, safi_t safi,\n\t\t\t\t       const char *num_str,\n\t\t\t\t
      \      const char *threshold_str, int warning,\n\t\t\t\t       const char *restart_str,\n\t\t\t\t
      \      const char *force_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:8211,1
    - Dst: peer_maximum_prefix_unset
      Src: /src/frr/bgpd/bgp_vty.c:8215,1
    - Dst: bgp_vty_return
      Src: /src/frr/bgpd/bgp_vty.c:8217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - ip_str
    - afi
    - safi
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8218
      start: 8205
    functionDepth: 1
    functionLinenumber: 8205
    functionLinenumberEnd: 8218
    functionName: peer_maximum_prefix_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - bgp_vty_return
    - peer_maximum_prefix_unset
    linkageType: ''
    returnType: int
    signature: "int peer_maximum_prefix_unset_vty(struct vty *vty, const char *ip_str,\n\t\t\t\t\t
      afi_t afi, safi_t safi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str2com_ipv6
      Src: /src/frr/bgpd/bgp_vty.c:9052,1
    - Dst: ecommunity_str2com
      Src: /src/frr/bgpd/bgp_vty.c:9056,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:9060,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_vty.c:9062,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_vty.c:9067,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_vty.c:9068,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_vty.c:9075,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - vty
    - argc
    - argv
    - list
    - is_rt6
    argTypes:
    - struct vty*
    - int
    - struct cmd_token**
    - struct ecommunity**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9080
      start: 9044
    functionDepth: 1
    functionLinenumber: 9044
    functionLinenumberEnd: 9080
    functionName: set_ecom_list
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - ecommunity_merge
    - ecommunity_str2com_ipv6
    - ecommunity_str2com
    - ecommunity_free
    linkageType: ''
    returnType: int
    signature: "int set_ecom_list(struct vty *vty, int argc, struct cmd_token **argv,\n\t\t\t
      struct ecommunity **list, bool is_rt6)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:9097,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:9103,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:9105,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:9107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:9112,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:9114,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:9116,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - vty
    - bgp
    - v2vimport
    argTypes:
    - struct vty*
    - struct bgp*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9122
      start: 9085
    functionDepth: 1
    functionLinenumber: 9085
    functionLinenumberEnd: 9122
    functionName: vpn_policy_getafi
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: afi_t
    signature: afi_t vpn_policy_getafi(struct vty *vty, struct bgp *bgp, bool v2vimport)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:9579,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:9581,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:9583,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:9587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - vty
    - dstr
    - dodir
    argTypes:
    - struct vty*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9591
      start: 9577
    functionDepth: 1
    functionLinenumber: 9577
    functionLinenumberEnd: 9591
    functionName: vpn_policy_getdirs
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - strcmp
    - vty_out
    linkageType: ''
    returnType: int
    signature: int vpn_policy_getdirs(struct vty *vty, const char *dstr, int *dodir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:10590,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:10591,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:10594,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:10594,1
    - Dst: print_bgp_vrfs
      Src: /src/frr/bgpd/bgp_vty.c:10599,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:10610,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:10611,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:10612,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:10614,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:10615,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:10616,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:10617,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:10618,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_vty.c:10620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - bgp
    - peers_cfgd
    - peers_estbd
    argTypes:
    - struct bgp*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10622
      start: 10583
    functionDepth: 1
    functionLinenumber: 10583
    functionLinenumberEnd: 10622
    functionName: calc_peers_cfgd_estbd
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_established
    - ifindex2ifname
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - print_bgp_vrfs
    - json_object_int_add
    - json_object_string_add
    - json_object_string_addf
    - if
    linkageType: ''
    returnType: void
    signature: "void calc_peers_cfgd_estbd(struct bgp *bgp, int *peers_cfgd,\n\t\t\t\t\t
      int *peers_estbd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calc_peers_cfgd_estbd
      Src: /src/frr/bgpd/bgp_vty.c:10630,1
    - Dst: print_bgp_vrfs
      Src: /src/frr/bgpd/bgp_vty.c:10634,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:10636,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:10640,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:10641,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:10645,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_vty.c:10648,1
    - Dst: print_bgp_vrfs
      Src: /src/frr/bgpd/bgp_vty.c:10655,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:10657,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:10662,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_vty.c:10664,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 6
    argNames:
    - vty
    - bgp
    - json
    - name
    - type
    - use_vrf
    argTypes:
    - struct vty*
    - struct bgp*
    - json_object*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10670
      start: 10624
    functionDepth: 2
    functionLinenumber: 10624
    functionLinenumberEnd: 10670
    functionName: show_bgp_vrfs_detail_common
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - calc_peers_cfgd_estbd
    - ifindex2ifname
    - vty_out
    - print_bgp_vrfs
    linkageType: ''
    returnType: int
    signature: "int show_bgp_vrfs_detail_common(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \      json_object *json, const char *name,\n\t\t\t\t       const char *type,
      bool use_vrf)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:11937,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:11940,1
    - Dst: bgp_afi_safi_peer_exists
      Src: /src/frr/bgpd/bgp_vty.c:11947,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:11959,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:11963,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:11964,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:11968,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:11970,1
    - Dst: bgp_show_summary
      Src: /src/frr/bgpd/bgp_vty.c:11976,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:11989,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:11992,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:11994,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 38
    argCount: 8
    argNames:
    - vty
    - bgp
    - afi
    - safi
    - fpeer
    - as_type
    - as
    - show_flags
    argTypes:
    - struct vty*
    - struct bgp*
    - int
    - int
    - struct peer*
    - int
    - as_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11997
      start: 11928
    functionDepth: 1
    functionLinenumber: 11928
    functionLinenumberEnd: 11997
    functionName: bgp_show_summary_afi_safi
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - CHECK_FLAG
    - bgp_show_summary
    - get_afi_safi_str
    - bgp_afi_safi_peer_exists
    linkageType: ''
    returnType: void
    signature: "void bgp_show_summary_afi_safi(struct vty *vty, struct bgp *bgp, int
      afi,\n\t\t\t\t      int safi, struct peer *fpeer, int as_type,\n\t\t\t\t      as_t
      as, uint16_t show_flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12010,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12013,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:12015,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12019,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12023,1
    - Dst: peer_lookup_in_view
      Src: /src/frr/bgpd/bgp_vty.c:12029,1
    - Dst: bgp_show_summary_afi_safi
      Src: /src/frr/bgpd/bgp_vty.c:12034,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12039,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12041,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 7
    argNames:
    - vty
    - afi
    - safi
    - neighbor
    - as_type
    - as
    - show_flags
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    - char*
    - int
    - as_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12042
      start: 11999
    functionDepth: 2
    functionLinenumber: 11999
    functionLinenumberEnd: 12042
    functionName: bgp_show_all_instances_summary_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - peer_lookup_in_view
    - CHECK_FLAG
    - bgp_show_summary_afi_safi
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void bgp_show_all_instances_summary_vty(struct vty *vty, afi_t afi,\n\t\t\t\t\t
      \      safi_t safi,\n\t\t\t\t\t       const char *neighbor,\n\t\t\t\t\t       int
      as_type, as_t as,\n\t\t\t\t\t       uint16_t show_flags)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12049,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:12053,1
    - Dst: bgp_show_all_instances_summary_vty
      Src: /src/frr/bgpd/bgp_vty.c:12054,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_vty.c:12059,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12063,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12065,1
    - Dst: peer_lookup_in_view
      Src: /src/frr/bgpd/bgp_vty.c:12071,1
    - Dst: bgp_show_summary_afi_safi
      Src: /src/frr/bgpd/bgp_vty.c:12076,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_vty.c:12082,1
    - Dst: peer_lookup_in_view
      Src: /src/frr/bgpd/bgp_vty.c:12086,1
    - Dst: bgp_show_summary_afi_safi
      Src: /src/frr/bgpd/bgp_vty.c:12091,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12095,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12097,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 8
    argNames:
    - vty
    - name
    - afi
    - safi
    - neighbor
    - as_type
    - as
    - show_flags
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - int
    - as_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12102
      start: 12044
    functionDepth: 3
    functionLinenumber: 12044
    functionLinenumberEnd: 12102
    functionName: bgp_show_summary_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - vty_out
    - bgp_show_all_instances_summary_vty
    - peer_lookup_in_view
    - CHECK_FLAG
    - bgp_show_summary_afi_safi
    - bgp_get_default
    - bgp_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int bgp_show_summary_vty(struct vty *vty, const char *name, afi_t
      afi,\n\t\t\t safi_t safi, const char *neighbor, int as_type,\n\t\t\t as_t as,
      uint16_t show_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_afi_safi_json_str
      Src: /src/frr/bgpd/bgp_vty.c:12185,1
    - Dst: get_afi_safi_vty_str
      Src: /src/frr/bgpd/bgp_vty.c:12187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - afi
    - safi
    - for_json
    argTypes:
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12188
      start: 12182
    functionDepth: 1
    functionLinenumber: 12182
    functionLinenumberEnd: 12188
    functionName: get_afi_safi_str
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 7
    functionsReached:
    - get_afi_safi_vty_str
    - get_afi_safi_json_str
    linkageType: ''
    returnType: char
    signature: char *get_afi_safi_str(afi_t afi, safi_t safi, bool for_json)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12199,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12201,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12202,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12203,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12205,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12206,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12208,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12209,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12212,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12213,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12214,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12215,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12216,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12217,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12227,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12229,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12230,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12233,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12234,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12236,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12237,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12241,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12242,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12243,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12244,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12245,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12249,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 10
    argNames:
    - vty
    - p
    - afi
    - safi
    - adv_smcap
    - adv_rmcap
    - rcv_smcap
    - rcv_rmcap
    - use_json
    - json_pref
    argTypes:
    - struct vty*
    - struct peer*
    - afi_t
    - safi_t
    - uint16_t
    - uint16_t
    - uint16_t
    - uint16_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12252
      start: 12191
    functionDepth: 1
    functionLinenumber: 12191
    functionLinenumberEnd: 12252
    functionName: bgp_show_peer_afi_orf_cap
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - json_object_string_add
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_show_peer_afi_orf_cap(struct vty *vty, struct peer *p,\n\t\t\t\t
      \     afi_t afi, safi_t safi,\n\t\t\t\t      uint16_t adv_smcap, uint16_t adv_rmcap,\n\t\t\t\t
      \     uint16_t rcv_smcap, uint16_t rcv_rmcap,\n\t\t\t\t      bool use_json,
      json_object *json_pref)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12261,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12262,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:12263,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12264,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12265,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_vty.c:12269,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_vty.c:12270,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12272,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12273,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - p
    - json
    argTypes:
    - struct vty*
    - struct peer*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12275
      start: 12254
    functionDepth: 1
    functionLinenumber: 12254
    functionLinenumberEnd: 12275
    functionName: bgp_show_neighnor_graceful_restart_flags
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_boolean_add
    - CHECK_FLAG
    - peer_established
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_show_neighnor_graceful_restart_flags(struct vty *vty,\n\t\t\t\t\t\t
      \    struct peer *p,\n\t\t\t\t\t\t     json_object *json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12286,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:12287,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12290,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12300,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12307,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12309,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 3
    argNames:
    - vty
    - peer
    - json
    argTypes:
    - struct vty*
    - struct peer*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12310
      start: 12277
    functionDepth: 1
    functionLinenumber: 12277
    functionLinenumberEnd: 12310
    functionName: bgp_show_neighbor_graceful_restart_remote_mode
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - peer_established
    - json_object_string_add
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_show_neighbor_graceful_restart_remote_mode(struct vty *vty,\n\t\t\t\t\t\t\t
      \  struct peer *peer,\n\t\t\t\t\t\t\t   json_object *json)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12319,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:12321,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:12323,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:12325,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:12327,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:12328,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:12330,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:12332,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12339,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12341,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - vty
    - p
    - json
    argTypes:
    - struct vty*
    - struct peer*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12342
      start: 12312
    functionDepth: 1
    functionLinenumber: 12312
    functionLinenumberEnd: 12342
    functionName: bgp_show_neighbor_graceful_restart_local_mode
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - bgp_global_gr_mode_get
    - bgp_peer_gr_mode_get
    - json_object_string_add
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_show_neighbor_graceful_restart_local_mode(struct vty *vty,\n\t\t\t\t\t\t\t
      \ struct peer *p,\n\t\t\t\t\t\t\t  json_object *json)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12358,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12359,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12363,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12364,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12365,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12374,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:12375,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12377,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12381,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12385,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12388,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12391,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12394,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12398,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12400,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12403,1
    - Dst: PRINT_EOR_JSON
      Src: /src/frr/bgpd/bgp_vty.c:12406,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12408,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12409,1
    - Dst: PRINT_EOR
      Src: /src/frr/bgpd/bgp_vty.c:12412,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12416,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12418,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12422,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12423,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12425,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12432,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12435,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12438,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12441,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12444,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12448,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12452,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12454,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12462,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12464,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12472,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12475,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12480,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12481,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12486,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12488,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12494,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12495,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12501,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12503,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12508,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12510,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12512,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:12513,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 86
    argCount: 3
    argNames:
    - vty
    - peer
    - json
    argTypes:
    - struct vty*
    - struct peer*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12517
      start: 12344
    functionDepth: 2
    functionLinenumber: 12344
    functionLinenumberEnd: 12517
    functionName: bgp_show_neighbor_graceful_restart_capability_per_afi_safi
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - CHECK_FLAG
    - json_object_int_add
    - PRINT_EOR_JSON
    - event_timer_remain_second
    - json_object_boolean_true_add
    - get_afi_safi_str
    - PRINT_EOR
    - json_object_object_add
    - json_object_boolean_false_add
    linkageType: ''
    returnType: void
    signature: "void bgp_show_neighbor_graceful_restart_capability_per_afi_safi(\n\tstruct
      vty *vty, struct peer *peer, json_object *json)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12358,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12359,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12363,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12364,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12365,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12374,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:12375,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12377,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12381,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12385,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12388,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12391,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12394,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12398,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12400,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12403,1
    - Dst: PRINT_EOR_JSON
      Src: /src/frr/bgpd/bgp_vty.c:12406,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12408,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12409,1
    - Dst: PRINT_EOR
      Src: /src/frr/bgpd/bgp_vty.c:12412,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12416,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12418,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12422,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12423,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12425,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12432,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12435,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12438,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:12441,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12444,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12448,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12452,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12454,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12462,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12464,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12472,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12475,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12480,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12481,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12486,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12488,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12494,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12495,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12501,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12503,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12508,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12510,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12512,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:12513,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12516
      start: 12354
    functionDepth: 2
    functionLinenumber: 12354
    functionLinenumberEnd: 12516
    functionName: FOREACH_AFI_SAFI_NSF
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - CHECK_FLAG
    - json_object_int_add
    - PRINT_EOR_JSON
    - event_timer_remain_second
    - json_object_boolean_true_add
    - get_afi_safi_str
    - PRINT_EOR
    - json_object_object_add
    - json_object_boolean_false_add
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI_NSF (afi, safi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12526,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12528,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12531,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12535,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12537,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12539,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12542,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12543,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12546,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12549,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12550,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12552,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:12553,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - p
    - json
    argTypes:
    - struct vty*
    - struct peer*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12556
      start: 12519
    functionDepth: 1
    functionLinenumber: 12519
    functionLinenumberEnd: 12556
    functionName: bgp_show_neighbor_graceful_restart_time
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_int_add
    - event_timer_remain_second
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void bgp_show_neighbor_graceful_restart_time(struct vty *vty,\n\t\t\t\t\t\t
      \   struct peer *p,\n\t\t\t\t\t\t    json_object *json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:12565,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:12570,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12573,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_vty.c:12576,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12580,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12583,1
    - Dst: BGP_SHOW_PEER_GR_CAPABILITY
      Src: /src/frr/bgpd/bgp_vty.c:12587,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - p
    - json
    argTypes:
    - struct vty*
    - struct peer*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12588
      start: 12558
    functionDepth: 1
    functionLinenumber: 12558
    functionLinenumberEnd: 12588
    functionName: bgp_show_peer_gr_status
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - snprintf
    - peer_dynamic_neighbor
    - json_object_string_add
    - json_object_string_addf
    - BGP_SHOW_PEER_GR_CAPABILITY
    linkageType: ''
    returnType: void
    signature: "void bgp_show_peer_gr_status(struct vty *vty, struct peer *p,\n\t\t\t\t
      \   json_object *json)"
  - BBCount: 103
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12605,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12606,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:12609,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12610,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_vty.c:12613,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12614,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12615,1
    - Dst: PAF_UPDGRP
      Src: /src/frr/bgpd/bgp_vty.c:12616,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12617,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12618,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12619,1
    - Dst: bpacket_queue_virtual_length
      Src: /src/frr/bgpd/bgp_vty.c:12620,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12623,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12624,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12626,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12628,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12630,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12632,1
    - Dst: bgp_show_peer_afi_orf_cap
      Src: /src/frr/bgpd/bgp_vty.c:12633,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12639,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12643,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12644,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12646,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12648,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12650,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12652,1
    - Dst: bgp_show_peer_afi_orf_cap
      Src: /src/frr/bgpd/bgp_vty.c:12653,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12659,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12663,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12664,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12666,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12668,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12672,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12674,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_vty.c:12677,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_vty.c:12679,1
    - Dst: prefix_bgp_show_prefix_list
      Src: /src/frr/bgpd/bgp_vty.c:12681,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12684,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12687,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12689,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12692,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12695,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12697,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12701,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12703,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12705,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12707,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12709,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12710,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12713,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12715,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12718,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12720,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12723,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12725,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12728,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12730,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12734,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12735,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12737,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12740,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12745,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_vty.c:12747,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12750,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12751,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12756,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12758,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12760,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12764,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12768,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12771,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12772,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12774,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12776,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12778,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12781,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12783,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12787,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12791,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12794,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12798,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12799,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12799,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12801,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12804,1
    - Dst: is_evpn_enabled
      Src: /src/frr/bgpd/bgp_vty.c:12809,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12810,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12818,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12824,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12829,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12833,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12839,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12843,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12849,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12853,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12859,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12863,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12868,1
    - Dst: bgp_inbound_policy_exists
      Src: /src/frr/bgpd/bgp_vty.c:12869,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12875,1
    - Dst: bgp_outbound_policy_exists
      Src: /src/frr/bgpd/bgp_vty.c:12876,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12877,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12883,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:12889,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12890,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12894,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12896,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:12898,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12904,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12909,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12911,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12912,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12913,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12916,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12917,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12921,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12922,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12924,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:12926,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12928,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:12932,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:12937,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:12938,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12944,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:12945,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:12947,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12948,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_vty.c:12951,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12952,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12953,1
    - Dst: PAF_UPDGRP
      Src: /src/frr/bgpd/bgp_vty.c:12954,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:12954,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12955,1
    - Dst: bpacket_queue_virtual_length
      Src: /src/frr/bgpd/bgp_vty.c:12956,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12958,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12960,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12961,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12963,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12967,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12969,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12971,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12973,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12974,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12976,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12978,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12980,1
    - Dst: bgp_show_peer_afi_orf_cap
      Src: /src/frr/bgpd/bgp_vty.c:12983,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12990,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12992,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:12994,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:12996,1
    - Dst: bgp_show_peer_afi_orf_cap
      Src: /src/frr/bgpd/bgp_vty.c:12999,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_vty.c:13006,1
    - Dst: prefix_bgp_show_prefix_list
      Src: /src/frr/bgpd/bgp_vty.c:13008,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13011,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13014,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13015,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13017,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13019,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13021,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13023,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13025,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13028,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13030,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13031,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13033,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13034,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13035,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13038,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13040,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13042,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13044,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13046,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13048,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13050,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13052,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13055,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13056,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13058,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13061,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13067,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_vty.c:13068,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13071,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13072,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13076,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13078,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13079,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13081,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13083,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13085,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13087,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13088,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13090,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13091,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13093,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13095,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13097,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13099,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13101,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13103,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13104,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13106,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13107,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13109,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13111,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13113,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13115,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13118,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:13122,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13123,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_vty.c:13123,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13125,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13127,1
    - Dst: is_evpn_enabled
      Src: /src/frr/bgpd/bgp_vty.c:13132,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13133,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13140,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13145,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13149,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13154,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13161,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13166,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13173,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13178,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13185,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13190,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13196,1
    - Dst: bgp_inbound_policy_exists
      Src: /src/frr/bgpd/bgp_vty.c:13197,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13202,1
    - Dst: bgp_outbound_policy_exists
      Src: /src/frr/bgpd/bgp_vty.c:13203,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13204,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13209,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13216,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13230,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13234,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13236,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13241,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13242,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13245,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13249,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13252,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13254,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13257,1
    CyclomaticComplexity: 162
    EdgeCount: 162
    ICount: 262
    argCount: 6
    argNames:
    - vty
    - p
    - afi
    - safi
    - use_json
    - json_neigh
    argTypes:
    - struct vty*
    - struct peer*
    - afi_t
    - safi_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13259
      start: 12590
    functionDepth: 2
    functionLinenumber: 12590
    functionLinenumberEnd: 13259
    functionName: bgp_show_peer_afi
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - PAF_SUBGRP
    - peer_af_find
    - json_object_string_add
    - snprintf
    - bpacket_queue_virtual_length
    - bgp_addpath_names
    - get_afi_safi_str
    - peer_group_active
    - vty_out
    - bgp_show_peer_afi_orf_cap
    - json_object_int_add
    - json_object_free
    - PAF_UPDGRP
    - is_evpn_enabled
    - bgp_outbound_policy_exists
    - json_object_new_object
    - CHECK_FLAG
    - prefix_bgp_show_prefix_list
    - json_object_boolean_true_add
    - json_object_object_add
    - bgp_inbound_policy_exists
    linkageType: ''
    returnType: void
    signature: "void bgp_show_peer_afi(struct vty *vty, struct peer *p, afi_t afi,\n\t\t\t
      \     safi_t safi, bool use_json,\n\t\t\t      json_object *json_neigh)"
  - BBCount: 242
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:13278,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_vty.c:13280,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:13281,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13289,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgp_vty.c:13294,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13295,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgp_vty.c:13297,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:13298,1
    - Dst: asn_asn2json
      Src: /src/frr/bgpd/bgp_vty.c:13301,1
    - Dst: asn_asn2json
      Src: /src/frr/bgpd/bgp_vty.c:13304,1
    - Dst: asn_asn2json
      Src: /src/frr/bgpd/bgp_vty.c:13307,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13310,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13311,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13314,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13315,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13321,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13322,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_vty.c:13322,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13323,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13325,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13326,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13327,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_vty.c:13327,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13330,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13331,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13334,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13341,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13342,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13348,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13349,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13351,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13356,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13357,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13360,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgp_vty.c:13363,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13364,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13366,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13370,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13373,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13378,1
    - Dst: bgp_get_name_by_role
      Src: /src/frr/bgpd/bgp_vty.c:13379,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13380,1
    - Dst: bgp_get_name_by_role
      Src: /src/frr/bgpd/bgp_vty.c:13381,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13383,1
    - Dst: bgp_get_name_by_role
      Src: /src/frr/bgpd/bgp_vty.c:13384,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13385,1
    - Dst: bgp_get_name_by_role
      Src: /src/frr/bgpd/bgp_vty.c:13386,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13393,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13395,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13400,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13404,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13408,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13411,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13415,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13422,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_vty.c:13428,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgp_vty.c:13429,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:13433,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13440,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_vty.c:13447,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgp_vty.c:13448,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13452,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13462,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13463,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13464,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13468,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:13469,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:13471,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13475,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgp_vty.c:13476,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13477,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13481,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_vty.c:13483,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:13485,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_vty.c:13488,1
    - Dst: time
      Src: /src/frr/bgpd/bgp_vty.c:13490,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13492,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13494,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_vty.c:13495,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13498,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13504,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13505,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13507,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13508,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_vty.c:13516,1
    - Dst: gmtime_r
      Src: /src/frr/bgpd/bgp_vty.c:13518,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13520,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_vty.c:13524,1
    - Dst: gmtime_r
      Src: /src/frr/bgpd/bgp_vty.c:13526,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13528,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_vty.c:13532,1
    - Dst: gmtime_r
      Src: /src/frr/bgpd/bgp_vty.c:13534,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13536,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13541,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13543,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13546,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13548,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13551,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13553,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13556,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13557,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13563,1
    - Dst: sockopt_tcp_mss_get
      Src: /src/frr/bgpd/bgp_vty.c:13564,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13565,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13567,1
    - Dst: BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
      Src: /src/frr/bgpd/bgp_vty.c:13572,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13573,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_vty.c:13576,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13580,1
    - Dst: event_is_scheduled
      Src: /src/frr/bgpd/bgp_vty.c:13584,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:13585,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:13588,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13592,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13593,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13594,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13597,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13598,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13599,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13602,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgp_vty.c:13603,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13604,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13608,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_vty.c:13609,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:13611,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13612,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_vty.c:13613,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13617,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13618,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13619,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13620,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13622,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13625,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_vty.c:13626,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13628,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_vty.c:13629,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13633,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13637,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13640,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13644,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13645,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13650,1
    - Dst: sockopt_tcp_mss_get
      Src: /src/frr/bgpd/bgp_vty.c:13651,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13652,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13653,1
    - Dst: BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
      Src: /src/frr/bgpd/bgp_vty.c:13657,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13658,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13662,1
    - Dst: event_is_scheduled
      Src: /src/frr/bgpd/bgp_vty.c:13665,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:13666,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:13668,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:13672,1
    - Dst: peer_afc_advertised
      Src: /src/frr/bgpd/bgp_vty.c:13673,1
    - Dst: peer_afc_received
      Src: /src/frr/bgpd/bgp_vty.c:13673,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:13677,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13680,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13681,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13682,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13683,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13684,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13687,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13688,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13691,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13692,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13699,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13700,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13703,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13705,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13708,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13710,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13715,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13716,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:13720,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:13724,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:13725,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13728,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13731,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13734,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13738,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13742,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13746,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13750,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13754,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13758,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13763,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13773,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13777,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13781,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13789,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13793,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13798,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13801,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13804,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13807,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:13810,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_vty.c:13814,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:13817,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13822,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13823,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13824,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13825,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13826,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13829,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13831,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13834,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13836,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13842,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13843,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13844,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13845,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13849,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13850,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13852,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13853,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13858,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13859,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13864,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13865,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13866,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13869,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13873,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13874,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13878,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:13879,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13883,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:13888,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13892,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:13898,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13906,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13907,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13911,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13912,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13913,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13917,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13918,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13922,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13923,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13928,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:13929,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13932,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:13937,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13941,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:13947,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13955,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13956,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13957,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13958,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13959,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13961,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13963,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13966,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13969,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13974,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13977,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13982,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13987,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13992,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13994,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13996,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14002,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14003,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14004,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14006,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14008,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14012,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14014,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14018,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14020,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14029,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14035,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14039,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14043,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14047,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14050,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14052,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14057,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14064,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14066,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14067,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14072,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14080,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14081,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14084,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14089,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14095,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14097,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14098,1
    - Dst: cmd_software_version_get
      Src: /src/frr/bgpd/bgp_vty.c:14101,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14103,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14104,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14110,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14114,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14115,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14117,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14121,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14123,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14127,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14129,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14134,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14137,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14139,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14145,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14152,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14154,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14159,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14163,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14165,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14173,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_vty.c:14177,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14179,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14185,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14188,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14191,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14192,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14193,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14194,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14195,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14196,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14197,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14198,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14206,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14207,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14208,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14209,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14211,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14212,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14214,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14215,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14220,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14224,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14225,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14229,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14232,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14235,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14236,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14240,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14244,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14247,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14253,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14261,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14264,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14267,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14270,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14275,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14279,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14282,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14286,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14288,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14296,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14302,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14303,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14304,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14305,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14306,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14307,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14308,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14309,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14313,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14318,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14319,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14320,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14321,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14322,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14323,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14324,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14332,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14333,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14334,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14335,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14336,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14337,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14338,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14339,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14343,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14345,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14346,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14350,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14354,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14356,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14364,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14365,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14368,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14370,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14372,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14376,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14378,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14379,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_vty.c:14381,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14382,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14386,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14396,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14397,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14398,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14399,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14400,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14401,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14402,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14404,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14406,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14407,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14411,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14414,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14418,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14428,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14429,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14431,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14433,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14434,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14436,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14437,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14441,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_vty.c:14445,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14448,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14449,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14452,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14454,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14458,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14462,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14464,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14465,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14474,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14477,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14478,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14483,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14486,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14489,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14491,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14492,1
    - Dst: cmd_software_version_get
      Src: /src/frr/bgpd/bgp_vty.c:14494,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14496,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14498,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14499,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14503,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14505,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14508,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14509,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14510,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14512,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14513,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14514,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14515,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14516,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14520,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14522,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14525,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14528,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_vty.c:14531,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14532,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14536,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14540,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14544,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14554,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14555,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14569,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14570,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14571,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:14573,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14576,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14578,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14580,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14586,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14588,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14590,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14596,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14598,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14603,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:14605,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14609,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:14611,1
    - Dst: BGP_SHOW_PEER_GR_CAPABILITY
      Src: /src/frr/bgpd/bgp_vty.c:14614,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14615,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14618,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:14619,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14620,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14622,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14624,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14626,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14628,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14633,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14634,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14636,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14638,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14641,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14646,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14650,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:14652,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14655,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:14657,1
    - Dst: BGP_SHOW_PEER_GR_CAPABILITY
      Src: /src/frr/bgpd/bgp_vty.c:14660,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14665,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14669,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14671,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14674,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14676,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14678,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14679,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14681,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14682,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14684,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14685,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14687,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14688,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14690,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14691,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14693,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14694,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14696,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14697,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14699,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14700,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14702,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14703,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14705,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14706,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14708,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14709,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14711,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14712,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14714,1
    - Dst: PEER_TOTAL_TX
      Src: /src/frr/bgpd/bgp_vty.c:14714,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14715,1
    - Dst: PEER_TOTAL_RX
      Src: /src/frr/bgpd/bgp_vty.c:14715,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14716,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14722,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14724,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14726,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14729,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14730,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14732,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14734,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14736,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14738,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14740,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14742,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14744,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14746,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_vty.c:14748,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14752,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14753,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14754,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14755,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14756,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14758,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14760,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14762,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14764,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14766,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14768,1
    - Dst: PEER_TOTAL_TX
      Src: /src/frr/bgpd/bgp_vty.c:14769,1
    - Dst: PEER_TOTAL_RX
      Src: /src/frr/bgpd/bgp_vty.c:14769,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14774,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14781,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:14785,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14791,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14797,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14799,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14801,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14802,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14805,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14812,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_vty.c:14814,1
    - Dst: bgp_show_peer_afi
      Src: /src/frr/bgpd/bgp_vty.c:14816,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14820,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14822,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14824,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14827,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14832,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14835,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_vty.c:14841,1
    - Dst: gmtime_r
      Src: /src/frr/bgpd/bgp_vty.c:14843,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14845,1
    - Dst: bgp_show_peer_reset
      Src: /src/frr/bgpd/bgp_vty.c:14849,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14851,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_vty.c:14852,1
    - Dst: bgp_show_peer_reset
      Src: /src/frr/bgpd/bgp_vty.c:14855,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14858,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14862,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14866,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14868,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14872,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14877,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14879,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14882,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14887,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14889,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:14891,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14895,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:14898,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14902,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14906,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14916,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14920,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14925,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14929,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14936,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14940,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14945,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14949,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:14958,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14960,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_vty.c:14961,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14963,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_vty.c:14964,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14967,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14969,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:14976,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14978,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_vty.c:14979,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14981,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_vty.c:14983,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:14986,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:14988,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:14995,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:14997,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vty.c:14999,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15002,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15006,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15010,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15011,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15013,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15015,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15021,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15023,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15025,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15027,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15034,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:15036,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15037,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:15039,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15040,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15043,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15049,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:15051,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15053,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:15055,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15057,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15059,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:15061,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vty.c:15065,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15069,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15071,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:15073,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15074,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:15076,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15079,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_vty.c:15081,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15082,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:15084,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15085,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15090,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:15091,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15093,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:15094,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15096,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_vty.c:15099,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15101,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15103,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:15105,1
    - Dst: bgp_capability_vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15112,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15115,1
    - Dst: bgp_bfd_show_info
      Src: /src/frr/bgpd/bgp_vty.c:15119,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:15123,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:15125,1
    CyclomaticComplexity: 311
    EdgeCount: 311
    ICount: 815
    argCount: 4
    argNames:
    - vty
    - p
    - use_json
    - json
    argTypes:
    - struct vty*
    - struct peer*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15127
      start: 13261
    functionDepth: 3
    functionLinenumber: 13261
    functionLinenumberEnd: 15127
    functionName: bgp_show_peer
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - BGP_PEER_SU_UNSPEC
    - peer_established
    - bgp_show_peer_reset
    - BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
    - sockopt_tcp_mss_get
    - ntohs
    - json_object_string_add
    - json_object_string_addf
    - json_object_boolean_false_add
    - lookup_msg
    - bgp_show_peer_afi
    - sockunion2hostprefix
    - memset
    - peer_afc_advertised
    - peer_group_lookup_dynamic_neighbor_range
    - atomic_load_explicit
    - get_afi_safi_str
    - event_is_scheduled
    - PEER_TOTAL_RX
    - cmd_software_version_get
    - PEER_TOTAL_TX
    - vty_out
    - bgp_bfd_show_info
    - peer_afc_received
    - monotime
    - json_object_int_add
    - bgp_get_name_by_role
    - event_timer_remain_second
    - json_object_free
    - bgp_confederation_peers_check
    - BGP_SHOW_PEER_GR_CAPABILITY
    - json_object_new_object
    - asn_asn2json
    - gmtime_r
    - CHECK_FLAG
    - peer_dynamic_neighbor
    - json_object_boolean_true_add
    - bgp_capability_vty_out
    - ASN_FORMAT
    - json_object_object_add
    - peer_uptime
    - FOREACH_AFI_SAFI
    - time
    linkageType: ''
    returnType: void
    signature: "void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,\n\t\t\t
      \ json_object *json)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:13724,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:13725,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13728,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13731,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13734,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13738,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13742,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13746,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13750,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13754,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13758,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13763,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13773,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13777,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13781,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13789,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:13793,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13798,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13801,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13804,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13807,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:13810,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_vty.c:13814,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13815
      start: 13722
    functionDepth: 2
    functionLinenumber: 13722
    functionLinenumberEnd: 13815
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - json_object_new_object
    - CHECK_FLAG
    - json_object_boolean_true_add
    - json_object_free
    - get_afi_safi_str
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:13932,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:13937,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vty.c:13941,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13946
      start: 13931
    functionDepth: 2
    functionLinenumber: 13931
    functionLinenumberEnd: 13946
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - get_afi_safi_str
    - json_object_string_add
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14035,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14039,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14043,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14047,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14050,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14052,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14056
      start: 14031
    functionDepth: 2
    functionLinenumber: 14031
    functionLinenumberEnd: 14056
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - json_object_new_object
    - json_object_boolean_true_add
    - get_afi_safi_str
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14145,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:14152,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14154,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14159,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:14163,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14171
      start: 14144
    functionDepth: 2
    functionLinenumber: 14144
    functionLinenumberEnd: 14171
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - json_object_new_object
    - CHECK_FLAG
    - json_object_boolean_true_add
    - get_afi_safi_str
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14229,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14232,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14235,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14236,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14240,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14244,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14247,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14253,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14261,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14264,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14267,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14270,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14275,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14279,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14282,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14286,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14288,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14296,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14298
      start: 14228
    functionDepth: 2
    functionLinenumber: 14228
    functionLinenumberEnd: 14298
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - get_afi_safi_str
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14576,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14578,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14584
      start: 14575
    functionDepth: 2
    functionLinenumber: 14575
    functionLinenumberEnd: 14584
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - get_afi_safi_str
    - json_object_boolean_true_add
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14586,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:14588,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14594
      start: 14585
    functionDepth: 2
    functionLinenumber: 14585
    functionLinenumberEnd: 14594
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - get_afi_safi_str
    - json_object_boolean_true_add
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14624,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14626,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14628,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14632
      start: 14623
    functionDepth: 2
    functionLinenumber: 14623
    functionLinenumberEnd: 14632
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - get_afi_safi_str
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:14636,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:14638,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:14641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14645
      start: 14635
    functionDepth: 2
    functionLinenumber: 14635
    functionLinenumberEnd: 14645
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - get_afi_safi_str
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:15141,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:15143,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:15146,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:15149,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:15150,1
    - Dst: bgp_show_peer_gr_status
      Src: /src/frr/bgpd/bgp_vty.c:15153,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:15156,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:15162,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:15164,1
    - Dst: bgp_show_peer_gr_status
      Src: /src/frr/bgpd/bgp_vty.c:15166,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_vty.c:15170,1
    - Dst: bgp_show_peer_gr_status
      Src: /src/frr/bgpd/bgp_vty.c:15172,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vty.c:15178,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_vty.c:15181,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_vty.c:15191,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15193,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15197,1
    - Dst: bgp_show_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:15202,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:15220,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:15221,1
    - Dst: switch
      Src: /src/frr/bgpd/bgp_vty.c:15224,1
    - Dst: bgp_show_peer
      Src: /src/frr/bgpd/bgp_vty.c:15226,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:15232,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:15234,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 8
    argCount: 7
    argNames:
    - vty
    - bgp
    - type
    - su
    - conf_if
    - afi
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - enum show_type
    - union sockunion*
    - char*
    - afi_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15238
      start: 15129
    functionDepth: 4
    functionLinenumber: 15129
    functionLinenumberEnd: 15238
    functionName: bgp_show_neighbor_graceful_restart
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - switch
    - vty_out
    - CHECK_FLAG
    - strcmp
    - sockunion_same
    - bgp_show_peer_gr_status
    - bgp_show_neighbor
    - json_object_free
    - json_object_boolean_true_add
    - json_object_object_add
    - if
    - ALL_LIST_ELEMENTS
    - bgp_show_peer
    linkageType: ''
    returnType: int
    signature: "int bgp_show_neighbor_graceful_restart(struct vty *vty, struct bgp
      *bgp,\n\t\t\t\t\t      enum show_type type,\n\t\t\t\t\t      union sockunion
      *su,\n\t\t\t\t\t      const char *conf_if, afi_t afi,\n\t\t\t\t\t      json_object
      *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15601,1
    - Dst: community_str
      Src: /src/frr/bgpd/bgp_vty.c:15602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - vty
    argTypes:
    - struct hash_bucket*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15603
      start: 15595
    functionDepth: 1
    functionLinenumber: 15595
    functionLinenumberEnd: 15603
    functionName: community_show_all_iterator
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - community_str
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void community_show_all_iterator(struct hash_bucket *bucket,\n\t\t\t\t\tstruct
      vty *vty)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15630,1
    - Dst: lcommunity_str
      Src: /src/frr/bgpd/bgp_vty.c:15631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - vty
    argTypes:
    - struct hash_bucket*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15632
      start: 15624
    functionDepth: 1
    functionLinenumber: 15624
    functionLinenumberEnd: 15632
    functionName: lcommunity_show_all_iterator
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - lcommunity_str
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void lcommunity_show_all_iterator(struct hash_bucket *bucket,\n\t\t\t\t\t
      struct vty *vty)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15659,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:15661,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15666,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15670,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15674,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15678,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:15682,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - vty
    - bgp
    argTypes:
    - struct vty*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15683
      start: 15654
    functionDepth: 1
    functionLinenumber: 15654
    functionLinenumberEnd: 15683
    functionName: bgp_show_global_graceful_restart_mode_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - bgp_global_gr_mode_get
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_show_global_graceful_restart_mode_vty(struct vty *vty,\n\t\t\t\t\t\t
      \     struct bgp *bgp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vty.c:15693,1
    - Dst: bgp_show_neighbor_graceful_restart_vty
      Src: /src/frr/bgpd/bgp_vty.c:15700,1
    - Dst: bgp_show_neighbor_graceful_restart_vty
      Src: /src/frr/bgpd/bgp_vty.c:15705,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_vty.c:15709,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_vty.c:15714,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 5
    argNames:
    - vty
    - type
    - ip_str
    - afi
    - use_json
    argTypes:
    - struct vty*
    - enum show_type
    - char*
    - afi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15717
      start: 15685
    functionDepth: 1
    functionLinenumber: 15685
    functionLinenumberEnd: 15717
    functionName: bgp_show_neighbor_graceful_restart_afi_all
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - bgp_show_neighbor_graceful_restart_vty
    - json_object_free
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int bgp_show_neighbor_graceful_restart_afi_all(struct vty *vty,\n\t\t\t\t\t\t
      \     enum show_type type,\n\t\t\t\t\t\t      const char *ip_str,\n\t\t\t\t\t\t
      \     afi_t afi, bool use_json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:16002,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:16004,1
    - Dst: update_group_show
      Src: /src/frr/bgpd/bgp_vty.c:16009,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - vty
    - afi
    - safi
    - uj
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16011
      start: 15996
    functionDepth: 2
    functionLinenumber: 15996
    functionLinenumberEnd: 16011
    functionName: bgp_show_all_instances_updgrps_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - update_group_show
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_show_all_instances_updgrps_vty(struct vty *vty, afi_t afi,\n\t\t\t\t\t
      \      safi_t safi, bool uj)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_vty.c:16019,1
    - Dst: bgp_show_all_instances_updgrps_vty
      Src: /src/frr/bgpd/bgp_vty.c:16020,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_vty.c:16023,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_vty.c:16026,1
    - Dst: update_group_show
      Src: /src/frr/bgpd/bgp_vty.c:16030,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - vty
    - name
    - afi
    - safi
    - subgrp_id
    - uj
    argTypes:
    - struct vty*
    - char*
    - int
    - int
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16032
      start: 16013
    functionDepth: 3
    functionLinenumber: 16013
    functionLinenumberEnd: 16032
    functionName: bgp_show_update_groups
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - bgp_get_default
    - bgp_show_all_instances_updgrps_vty
    - update_group_show
    - bgp_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int bgp_show_update_groups(struct vty *vty, const char *name, int
      afi,\n\t\t\t\t  int safi, uint64_t subgrp_id, bool uj)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_vty.c:16158,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_vty.c:16160,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:16163,1
    - Dst: update_group_show_adj_queue
      Src: /src/frr/bgpd/bgp_vty.c:16164,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:16166,1
    - Dst: update_group_show_advertised
      Src: /src/frr/bgpd/bgp_vty.c:16167,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_vty.c:16169,1
    - Dst: update_group_show_packet_queue
      Src: /src/frr/bgpd/bgp_vty.c:16170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 6
    argNames:
    - vty
    - name
    - afi
    - safi
    - what
    - subgrp_id
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16173
      start: 16151
    functionDepth: 1
    functionLinenumber: 16151
    functionLinenumberEnd: 16173
    functionName: show_bgp_updgrps_adj_info_aux
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - update_group_show_packet_queue
    - update_group_show_advertised
    - bgp_get_default
    - strcmp
    - update_group_show_adj_queue
    - bgp_lookup_by_name
    linkageType: ''
    returnType: void
    signature: "void show_bgp_updgrps_adj_info_aux(struct vty *vty, const char *name,\n\t\t\t\t\t
      \ afi_t afi, safi_t safi,\n\t\t\t\t\t  const char *what, uint64_t subgrp_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_vty.c:16284,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_vty.c:16286,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:16286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:16289,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_vty.c:16290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16292
      start: 16280
    functionDepth: 2
    functionLinenumber: 16280
    functionLinenumberEnd: 16292
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - vty_out
    - json_object_new_string
    - json_object_array_add
    - get_afi_safi_str
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_and_group_lookup_vty
      Src: /src/frr/bgpd/bgp_vty.c:17142,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_vty.c:17147,1
    - Dst: peer_tcp_mss_set
      Src: /src/frr/bgpd/bgp_vty.c:17148,1
    - Dst: peer_tcp_mss_unset
      Src: /src/frr/bgpd/bgp_vty.c:17150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - peer_str
    - tcp_mss_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17154
      start: 17136
    functionDepth: 1
    functionLinenumber: 17136
    functionLinenumberEnd: 17154
    functionName: peer_tcp_mss_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peer_and_group_lookup_vty
    - strtoul
    - peer_tcp_mss_unset
    - peer_tcp_mss_set
    linkageType: ''
    returnType: int
    signature: "int peer_tcp_mss_vty(struct vty *vty, const char *peer_str,\n\t\t\t
      \   const char *tcp_mss_str)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17341,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17343,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17351,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17353,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17357,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17360,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17364,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17369,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17376,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17378,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17384,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17385,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17388,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_vty.c:17392,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17396,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_vty.c:17402,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_vty.c:17406,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17409,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:17410,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_vty.c:17413,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17418,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:17419,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_vty.c:17422,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17427,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:17428,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17433,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_vty.c:17438,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17446,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17449,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:17451,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 3
    argNames:
    - vty
    - bgp
    - afi
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17453
      start: 17334
    functionDepth: 1
    functionLinenumber: 17334
    functionLinenumberEnd: 17453
    functionName: bgp_vpn_policy_config_write_afi
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - CHECK_FLAG
    - ecommunity_ecom2str
    - ecommunity_cmp
    - inet_ntop
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void bgp_vpn_policy_config_write_afi(struct vty *vty, struct bgp *bgp,\n\t\t\t\t\t
      \   afi_t afi)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17465,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17467,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17470,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17472,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17476,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17478,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17481,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17483,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17487,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17488,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17491,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17493,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17497,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17498,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17502,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17504,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17508,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17510,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17514,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17516,1
    - Dst: peergroup_filter_check
      Src: /src/frr/bgpd/bgp_vty.c:17519,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17521,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - vty
    - peer
    - afi
    - safi
    argTypes:
    - struct vty*
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17523
      start: 17455
    functionDepth: 1
    functionLinenumber: 17455
    functionLinenumberEnd: 17523
    functionName: bgp_config_write_filter
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - peergroup_filter_check
    linkageType: ''
    returnType: void
    signature: "void bgp_config_write_filter(struct vty *vty, struct peer *peer,\n\t\t\t\t
      \   afi_t afi, safi_t safi)"
  - BBCount: 71
    BranchProfiles: []
    Callsites:
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:17535,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17547,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17548,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17550,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17552,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17553,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17556,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17559,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17562,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17566,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17571,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17576,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17579,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17583,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17592,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17599,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17600,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17605,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17608,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17612,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17620,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17621,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17623,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17624,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17625,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17626,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17627,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17632,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17636,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17638,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17641,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17644,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17645,1
    - Dst: bgp_bfd_peer_config_write
      Src: /src/frr/bgpd/bgp_vty.c:17650,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17653,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17654,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17658,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17659,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17660,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17666,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17671,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17675,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17676,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17679,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17680,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17686,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17688,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17691,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17697,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17698,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17701,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17702,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17705,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17707,1
    - Dst: bgp_get_name_by_role
      Src: /src/frr/bgpd/bgp_vty.c:17708,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17709,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17715,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17717,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17723,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17724,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17727,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17728,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17732,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17733,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17737,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17738,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17741,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17743,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17746,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17751,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17752,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17756,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17757,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17761,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17762,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17768,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17770,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17774,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17775,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17780,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17782,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17786,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17787,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17790,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17791,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17793,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17797,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17803,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17804,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17808,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17809,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17812,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17813,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17816,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17817,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17821,1
    - Dst: bgp_path_attribute_discard
      Src: /src/frr/bgpd/bgp_vty.c:17826,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17830,1
    - Dst: bgp_path_attribute_treat_as_withdraw
      Src: /src/frr/bgpd/bgp_vty.c:17835,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17839,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17843,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17846,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17848,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17850,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17853,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17856,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17858,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17861,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 173
    argCount: 3
    argNames:
    - vty
    - bgp
    - peer
    argTypes:
    - struct vty*
    - struct bgp*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17865
      start: 17526
    functionDepth: 1
    functionLinenumber: 17526
    functionLinenumberEnd: 17865
    functionName: bgp_config_write_peer_global
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - bgp_path_attribute_treat_as_withdraw
    - CHECK_FLAG
    - peer_dynamic_neighbor
    - bgp_get_name_by_role
    - bgp_bfd_peer_config_write
    - peer_group_active
    - peergroup_flag_check
    - bgp_path_attribute_discard
    linkageType: ''
    returnType: void
    signature: "void bgp_config_write_peer_global(struct vty *vty, struct bgp *bgp,\n\t\t\t\t\t
      struct peer *peer)"
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_vty.c:17876,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:17887,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17893,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17899,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17904,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17906,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17909,1
    - Dst: peergroup_af_addpath_check
      Src: /src/frr/bgpd/bgp_vty.c:17915,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17918,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17922,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:17932,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17933,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17936,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17937,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17939,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17941,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17943,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17945,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17946,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17948,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17950,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17951,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17955,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17957,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17961,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17963,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17967,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17968,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17972,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17974,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17978,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17980,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17984,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17986,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17989,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17991,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:17995,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:17996,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18000,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18002,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18004,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18008,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18011,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18013,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18018,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18023,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18025,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18028,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18031,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18035,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18036,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18041,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18042,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18047,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18048,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18050,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18052,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18054,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18056,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18058,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18062,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18063,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18067,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18069,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18073,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18075,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18079,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18080,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18082,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18084,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18086,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18092,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18093,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18096,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_vty.c:18097,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18100,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:18101,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18105,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18106,1
    - Dst: bgp_config_write_filter
      Src: /src/frr/bgpd/bgp_vty.c:18110,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18113,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18115,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18117,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgp_vty.c:18119,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18120,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18122,1
    - Dst: peergroup_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18124,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18127,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18130,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18134,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_vty.c:18138,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 139
    argCount: 5
    argNames:
    - vty
    - bgp
    - peer
    - afi
    - safi
    argTypes:
    - struct vty*
    - struct bgp*
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18144
      start: 17868
    functionDepth: 2
    functionLinenumber: 17868
    functionLinenumberEnd: 18144
    functionName: bgp_config_write_peer_af
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - peergroup_af_addpath_check
    - vty_out
    - CHECK_FLAG
    - ecommunity_ecom2str
    - peer_dynamic_neighbor
    - peer_af_flag_check
    - peergroup_af_flag_check
    - XFREE
    - peer_group_active
    - bgp_config_write_filter
    linkageType: ''
    returnType: void
    signature: "void bgp_config_write_peer_af(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \    struct peer *peer, afi_t afi, safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18149,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - vty
    - bgp
    - afi
    - safi
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18152
      start: 18146
    functionDepth: 1
    functionLinenumber: 18146
    functionLinenumberEnd: 18152
    functionName: bgp_vpn_config_write
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_vpn_config_write(struct vty *vty, struct bgp *bgp, afi_t
      afi,\n\t\t\t\t safi_t safi)"
  - BBCount: 89
    BranchProfiles: []
    Callsites:
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18163,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18166,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18168,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18170,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18172,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18174,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18176,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18179,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18181,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18183,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18185,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18187,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18189,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18192,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18194,1
    - Dst: bgp_config_write_distance
      Src: /src/frr/bgpd/bgp_vty.c:18196,1
    - Dst: bgp_config_write_network
      Src: /src/frr/bgpd/bgp_vty.c:18198,1
    - Dst: bgp_config_write_redistribute
      Src: /src/frr/bgpd/bgp_vty.c:18200,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18203,1
    - Dst: bgp_config_write_damp
      Src: /src/frr/bgpd/bgp_vty.c:18204,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:18206,1
    - Dst: bgp_config_write_peer_af
      Src: /src/frr/bgpd/bgp_vty.c:18207,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_vty.c:18209,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:18209,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18211,1
    - Dst: bgp_config_write_peer_af
      Src: /src/frr/bgpd/bgp_vty.c:18212,1
    - Dst: bgp_config_write_maxpaths
      Src: /src/frr/bgpd/bgp_vty.c:18215,1
    - Dst: bgp_config_write_table_map
      Src: /src/frr/bgpd/bgp_vty.c:18216,1
    - Dst: bgp_config_write_evpn_info
      Src: /src/frr/bgpd/bgp_vty.c:18219,1
    - Dst: bgp_fs_config_write_pbr
      Src: /src/frr/bgpd/bgp_vty.c:18222,1
    - Dst: bgp_vpn_config_write
      Src: /src/frr/bgpd/bgp_vty.c:18225,1
    - Dst: bgp_vpn_policy_config_write_afi
      Src: /src/frr/bgpd/bgp_vty.c:18228,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18229,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18232,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18234,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18237,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18239,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:18243,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18246,1
    - Dst: vty_endframe
      Src: /src/frr/bgpd/bgp_vty.c:18250,1
    - Dst: bgp_config_write
      Src: /src/frr/bgpd/bgp_vty.c:18253,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18265,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18269,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18271,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18272,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18276,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18278,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18279,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgp_vty.c:18282,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18283,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18285,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18290,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18294,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18297,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:18300,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18303,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18307,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18313,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18314,1
    - Dst: asn_mode2str
      Src: /src/frr/bgpd/bgp_vty.c:18315,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18320,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18321,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18325,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18329,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18330,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18333,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18335,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18336,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18342,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18343,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18346,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18348,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18349,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18354,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18355,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18356,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18357,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18359,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18361,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18363,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18368,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18372,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18374,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18382,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18385,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18394,1
    - Dst: get_bgp_default_af_flag
      Src: /src/frr/bgpd/bgp_vty.c:18395,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18398,1
    - Dst: get_bgp_default_af_flag
      Src: /src/frr/bgpd/bgp_vty.c:18399,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18404,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18408,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18411,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18416,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18418,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18419,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18427,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18431,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18432,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18435,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18436,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18440,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18441,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18445,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18446,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18453,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18456,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18459,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18463,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18465,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18466,1
    - Dst: bgp_config_write_update_delay
      Src: /src/frr/bgpd/bgp_vty.c:18472,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18476,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18480,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18482,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18485,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18487,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18488,1
    - Dst: bgp_config_write_wpkt_quanta
      Src: /src/frr/bgpd/bgp_vty.c:18492,1
    - Dst: bgp_config_write_rpkt_quanta
      Src: /src/frr/bgpd/bgp_vty.c:18494,1
    - Dst: bgp_config_write_coalesce_time
      Src: /src/frr/bgpd/bgp_vty.c:18497,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18504,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18505,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18509,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18515,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18520,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18523,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18526,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18532,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:18536,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18537,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_vty.c:18539,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18540,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18543,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18544,1
    - Dst: bgp_config_tcp_keepalive
      Src: /src/frr/bgpd/bgp_vty.c:18548,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18557,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18558,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18559,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18560,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18563,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18565,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18568,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18573,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18577,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18578,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18579,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18580,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18581,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18582,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18584,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18585,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18586,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18588,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18589,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18592,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18593,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18598,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18600,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18605,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18607,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18608,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18615,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18621,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18627,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:18632,1
    - Dst: bgp_config_write_peer_global
      Src: /src/frr/bgpd/bgp_vty.c:18633,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_vty.c:18637,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18638,1
    - Dst: bgp_config_write_peer_global
      Src: /src/frr/bgpd/bgp_vty.c:18639,1
    - Dst: bgp_config_write_listen
      Src: /src/frr/bgpd/bgp_vty.c:18643,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:18652,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18653,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:18656,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18656,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18657,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18660,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18663,1
    - Dst: vty_frame
      Src: /src/frr/bgpd/bgp_vty.c:18666,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_vty.c:18667,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18668,1
    - Dst: vty_endframe
      Src: /src/frr/bgpd/bgp_vty.c:18670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18674,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18675,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18677,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18682,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18685,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18688,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18691,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18694,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18697,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18700,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18703,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18706,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18710,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18713,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18716,1
    - Dst: bgp_config_write_family
      Src: /src/frr/bgpd/bgp_vty.c:18719,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_vty.c:18721,1
    - Dst: bgp_rfapi_cfg_write
      Src: /src/frr/bgpd/bgp_vty.c:18724,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18727,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18728,1
    - Dst: community_list_vty
      Src: /src/frr/bgpd/bgp_vty.c:18845,1
    - Dst: bgp_ac_peergroup
      Src: /src/frr/bgpd/bgp_vty.c:18847,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:18853,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:18854,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgp_vty.c:18855,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_vty.c:18856,1
    - Dst: bgp_ac_peer
      Src: /src/frr/bgpd/bgp_vty.c:18860,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_vty.c:18866,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:18866,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:18867,1
    - Dst: strchr
      Src: /src/frr/bgpd/bgp_vty.c:18877,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgp_vty.c:18885,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_vty.c:18885,1
    - Dst: bgp_ac_peer
      Src: /src/frr/bgpd/bgp_vty.c:18892,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_vty.c:18894,1
    - Dst: bgp_ac_peergroup
      Src: /src/frr/bgpd/bgp_vty.c:18895,1
    - Dst: DEFINE_HOOK
      Src: /src/frr/bgpd/bgp_vty.c:18908,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_vty.c:18922,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_vty.c:18922,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_vty.c:18923,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_vty.c:18929,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_vty.c:18930,1
    - Dst: BGP_POST_CONFIG_DELAY_SECONDS
      Src: /src/frr/bgpd/bgp_vty.c:18945,1
    - Dst: bgp_config_inprocess
      Src: /src/frr/bgpd/bgp_vty.c:18950,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_vty.c:18958,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_vty.c:18975,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18977,1
    - Dst: if_vty_config_end
      Src: /src/frr/bgpd/bgp_vty.c:18981,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 227
    argCount: 4
    argNames:
    - vty
    - bgp
    - afi
    - safi
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18985
      start: 18155
    functionDepth: 3
    functionLinenumber: 18155
    functionLinenumberEnd: 18985
    functionName: bgp_config_write_family
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 1
    functionsReached:
    - if_vty_config_end
    - strlen
    - bgp_config_write_distance
    - bgp_config_write_peer_af
    - bgp_config_write_update_delay
    - bgp_config_write
    - bgp_ac_peer
    - bgp_config_write_network
    - strchr
    - bgp_fs_config_write_pbr
    - hook_call
    - ALL_LIST_ELEMENTS_RO
    - bgp_config_write_maxpaths
    - asn_mode2str
    - bgp_config_write_peer_global
    - vector_set
    - bgp_config_write_listen
    - bgp_config_inprocess
    - bgp_global_gr_mode_get
    - if
    - for
    - vty_out
    - get_bgp_default_af_flag
    - bgp_config_tcp_keepalive
    - community_list_vty
    - bgp_rfapi_cfg_write
    - bgp_vpn_config_write
    - DEFINE_HOOK
    - bgp_config_write_coalesce_time
    - EVENT_OFF
    - bgp_config_write_family
    - event_add_timer
    - bgp_vpn_policy_config_write_afi
    - bgp_config_write_damp
    - bgp_config_write_rpkt_quanta
    - vty_endframe
    - XSTRDUP
    - bgp_option_check
    - bgp_config_write_redistribute
    - CHECK_FLAG
    - bgp_config_write_table_map
    - bgp_config_write_wpkt_quanta
    - bgp_config_write_evpn_info
    - vty_frame
    - ALL_LIST_ELEMENTS
    - bgp_ac_peergroup
    - BGP_POST_CONFIG_DELAY_SECONDS
    linkageType: ''
    returnType: void
    signature: "void bgp_config_write_family(struct vty *vty, struct bgp *bgp, afi_t
      afi,\n\t\t\t\t    safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18394,1
    - Dst: get_bgp_default_af_flag
      Src: /src/frr/bgpd/bgp_vty.c:18395,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:18398,1
    - Dst: get_bgp_default_af_flag
      Src: /src/frr/bgpd/bgp_vty.c:18399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18400
      start: 18391
    functionDepth: 1
    functionLinenumber: 18391
    functionLinenumberEnd: 18400
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 3
    functionsReached:
    - get_bgp_default_af_flag
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_vty.c:18994,1
    - Dst: config_write_interface_one
      Src: /src/frr/bgpd/bgp_vty.c:18995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18999
      start: 18988
    functionDepth: 3
    functionLinenumber: 18988
    functionLinenumberEnd: 18999
    functionName: config_write_interface
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - config_write_interface_one
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int config_write_interface(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmd_init
      Src: /src/frr/bgpd/bgp_vty.c:19085,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19089
      start: 19082
    functionDepth: 1
    functionLinenumber: 19082
    functionLinenumberEnd: 19089
    functionName: bgp_vty_if_init
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - install_element
    - if_cmd_init
    linkageType: ''
    returnType: void
    signature: void bgp_vty_if_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_vty.c:19093,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_vty.c:19094,1
    - Dst: cmd_init_config_callbacks
      Src: /src/frr/bgpd/bgp_vty.c:19096,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19099,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19100,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19101,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19102,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19103,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19104,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19105,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19106,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19107,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19108,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19109,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19110,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19111,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:19112,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19115,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19116,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19117,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19118,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19119,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19120,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19121,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19122,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19123,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19124,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19125,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19126,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19127,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_vty.c:19128,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19131,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19132,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19133,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19134,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19137,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19138,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19141,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19144,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19145,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19147,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19150,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19151,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19154,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19155,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19158,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19159,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19162,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19163,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19166,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19169,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19172,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19173,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19176,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19177,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19180,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19183,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19184,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19187,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19188,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19190,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19193,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19194,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19197,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19198,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19201,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19202,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19203,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19204,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19205,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19208,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19209,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19210,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19213,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19216,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19219,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19220,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19223,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19224,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19226,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19227,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19229,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19230,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19233,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19234,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19235,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19236,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19237,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19238,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19239,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19240,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19241,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19242,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19243,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19244,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19245,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19246,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19247,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19249,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19250,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19251,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19252,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19253,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19254,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19255,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19256,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19257,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19258,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19261,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19262,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19265,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19266,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19270,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19271,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19274,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19275,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19278,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19279,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19282,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19283,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19286,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19289,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19290,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19293,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19294,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19297,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19298,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19301,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19302,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19305,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19306,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19309,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19310,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19313,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19315,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19319,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19321,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19324,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19325,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19326,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19327,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19328,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19329,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19331,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19332,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19333,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19335,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19336,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19337,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19338,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19341,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19342,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19345,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19348,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19349,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19352,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19353,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19356,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19359,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19360,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19363,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19364,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19367,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19368,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19371,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19372,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19375,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19376,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19380,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19381,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19384,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19385,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19388,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19389,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19392,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19395,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19396,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19397,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19400,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19401,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19404,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19405,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19408,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19409,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19412,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19413,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19416,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19417,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19420,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19421,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19424,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19425,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19428,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19431,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19432,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19433,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19434,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19437,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19438,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19439,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19440,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19441,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19443,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19444,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19447,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19448,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19449,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19453,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19454,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19455,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19456,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19459,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19460,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19463,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19464,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19467,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19468,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19469,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19470,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19471,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19472,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19473,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19474,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19475,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19476,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19477,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19478,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19481,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19482,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19483,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19484,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19485,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19486,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19487,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19488,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19489,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19490,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19491,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19492,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19495,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19496,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19497,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19498,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19499,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19500,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19501,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19502,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19503,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19505,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19509,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19510,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19511,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19512,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19513,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19514,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19515,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19516,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19517,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19519,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19523,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19524,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19525,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19526,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19527,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19528,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19529,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19530,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19531,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19532,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19533,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19534,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19535,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19536,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19537,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19538,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19539,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19540,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19541,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19543,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19545,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19547,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19549,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19550,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19553,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19554,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19555,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19556,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19557,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19558,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19559,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19560,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19561,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19562,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19563,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19564,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19565,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19566,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19567,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19568,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19569,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19570,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19572,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19573,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19575,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19576,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19577,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19578,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19581,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19582,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19586,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19587,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19588,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19589,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19590,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19591,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19592,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19593,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19594,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19595,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19596,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19597,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19598,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19599,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19600,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19601,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19602,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19603,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19604,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19605,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19608,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19609,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19610,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19611,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19612,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19613,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19614,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19615,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19617,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19618,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19619,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19620,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19622,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19623,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19624,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19625,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19627,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19628,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19629,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19630,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19632,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19633,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19634,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19635,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19637,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19638,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19639,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19640,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19642,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19643,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19644,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19645,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19647,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19648,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19649,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19650,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19652,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19653,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19656,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19657,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19658,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19659,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19660,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19661,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19662,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19663,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19664,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19665,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19666,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19667,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19668,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19669,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19670,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19671,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19672,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19673,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19676,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19677,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19678,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19679,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19681,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19683,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19685,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19687,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19690,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19691,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19692,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19693,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19694,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19696,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19698,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19700,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19702,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19703,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19704,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19705,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19706,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19708,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19710,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19712,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19714,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19715,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19716,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19717,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19718,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19720,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19722,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19724,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19726,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19727,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19728,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19729,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19730,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19732,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19734,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19736,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19738,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19739,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19740,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19741,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19742,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19744,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19746,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19748,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19750,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19751,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19752,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19753,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19754,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19756,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19758,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19760,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19762,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19763,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19764,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19765,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19766,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19768,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19770,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19772,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19774,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19775,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19776,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19777,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19778,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19780,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19782,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19784,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19788,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19789,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19790,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19791,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19792,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19793,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19794,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19795,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19796,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19797,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19798,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19799,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19800,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19801,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19802,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19803,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19804,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19805,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19806,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19807,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19808,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19809,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19810,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19811,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19812,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19813,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19814,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19815,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19816,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19817,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19818,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19819,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19820,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19821,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19822,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19823,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19826,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19827,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19829,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19830,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19831,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19832,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19834,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19835,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19837,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19838,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19839,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19840,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19842,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19843,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19845,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19846,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19848,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19849,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19851,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19853,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19855,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19857,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19859,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19860,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19863,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19864,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19865,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19866,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19867,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19868,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19869,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19870,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19871,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19872,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19873,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19874,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19875,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19876,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19877,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19878,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19879,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19880,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19881,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19882,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19883,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19884,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19886,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19887,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19891,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19892,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19893,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19894,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19895,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19896,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19897,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19898,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19899,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19900,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19901,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19902,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19903,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19904,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19905,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19906,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19909,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19910,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19911,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19912,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19913,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19914,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19915,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19916,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19917,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19918,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19919,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19920,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19921,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19922,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19923,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19924,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19925,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19926,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19929,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19931,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19933,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19935,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19937,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19939,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19941,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19943,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19945,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19947,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19949,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19951,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19953,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19955,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19957,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19959,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19961,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19963,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19967,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19968,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19971,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19972,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19975,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19977,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19981,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19982,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19986,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19987,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19988,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19989,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19990,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19991,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19994,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19995,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:19998,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20001,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20002,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20004,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20005,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20006,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20007,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20008,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20009,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20010,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20011,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20012,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20013,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20014,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20015,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20018,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20019,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20022,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20023,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20026,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20027,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20028,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20031,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20032,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20035,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20036,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20040,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20041,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20045,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20046,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20049,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20050,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20051,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20054,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20055,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20058,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20059,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20060,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20061,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20062,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20063,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20064,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20065,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20066,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20067,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20068,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20069,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20070,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20071,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20072,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20073,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20074,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20075,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20076,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20077,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20078,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20081,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20082,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20085,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20086,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20088,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20089,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20090,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20091,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20092,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20093,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20094,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20095,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20096,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20097,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20098,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20099,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20100,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20101,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20102,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20103,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20106,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20107,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20110,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20111,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20114,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20115,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20118,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20119,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20122,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20123,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20126,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20127,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20130,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20131,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20134,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20135,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20136,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20137,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20138,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20139,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20140,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20141,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20142,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20143,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20144,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20145,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20146,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20147,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20148,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20149,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20150,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20151,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20154,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20155,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20156,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20157,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20158,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20159,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20160,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20161,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20162,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20163,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20164,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20165,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20166,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20167,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20168,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20169,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20170,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20171,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20172,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20173,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20174,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20175,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20178,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20179,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20180,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20181,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20182,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20183,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20184,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20185,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20186,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20187,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20188,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20189,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20190,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20191,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20192,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20193,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20194,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20195,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20196,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20197,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20198,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20199,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20202,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20203,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20204,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20205,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20206,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20207,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20208,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20209,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20210,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20211,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20212,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20213,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20214,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20215,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20216,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20217,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20218,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20219,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20220,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20221,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20222,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20223,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20224,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20225,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20228,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20229,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20230,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20231,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20232,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20233,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20234,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20235,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20236,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20237,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20238,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20239,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20240,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20241,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20242,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20243,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20244,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20245,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20248,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20249,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20250,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20251,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20252,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20253,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20254,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20255,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20256,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20257,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20260,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20261,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20262,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20263,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20264,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20265,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20266,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20267,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20268,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20269,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20270,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20271,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20272,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20273,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20274,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20275,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20276,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20277,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20280,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20281,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20283,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20284,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20286,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20287,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20289,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20290,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20291,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20292,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20293,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20295,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20296,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20298,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20299,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20300,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20301,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20302,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20304,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20305,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20307,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20308,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20309,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20310,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20311,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20313,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20314,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20316,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20317,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20318,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20319,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20320,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20322,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20323,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20325,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20326,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20327,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20328,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20329,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20331,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20332,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20334,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20335,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20336,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20337,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20338,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20340,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20341,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20343,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20344,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20345,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20346,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20347,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20349,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20350,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20352,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20353,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20354,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20355,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20356,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20358,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20359,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20361,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20364,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20365,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20366,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20367,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20368,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20369,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20370,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20371,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20372,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20373,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20374,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20375,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20376,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20377,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20378,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20379,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20380,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20381,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20382,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20383,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20386,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20387,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20390,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20391,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20392,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20393,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20394,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20395,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20396,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20397,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20398,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20399,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20400,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20401,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20402,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20403,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20404,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20405,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20406,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20407,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20410,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20411,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20413,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20414,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20417,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20420,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20421,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20422,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20423,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20424,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20425,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20426,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20427,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20428,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20429,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20430,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20433,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20434,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20437,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20440,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20441,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20442,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20445,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20446,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20447,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20448,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20449,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20450,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20451,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20454,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20456,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20459,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20462,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20465,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20468,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20470,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20472,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20475,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20476,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20477,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20478,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20479,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20481,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20483,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20484,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20485,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20486,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20488,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20490,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20492,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20493,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20494,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20495,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20496,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20497,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20498,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20499,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20500,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20501,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20502,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20504,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20506,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20507,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20508,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20509,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20510,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20511,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20514,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20515,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20517,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20518,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20521,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20522,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20525,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20526,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20529,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20532,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20534,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20537,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20540,1
    - Dst: community_list_vty
      Src: /src/frr/bgpd/bgp_vty.c:20543,1
    - Dst: community_alias_vty
      Src: /src/frr/bgpd/bgp_vty.c:20545,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20548,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20549,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20550,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20551,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20552,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20554,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20556,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20557,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20558,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20559,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20560,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20561,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20562,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20563,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20565,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20566,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20568,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20569,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20570,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20571,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20572,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20573,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20574,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20575,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20576,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20577,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20580,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20581,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20584,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20585,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20586,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20587,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20588,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20589,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20590,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20591,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:20592,1
    - Dst: bgp_vty_if_init
      Src: /src/frr/bgpd/bgp_vty.c:20594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1055
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20595
      start: 19091
    functionDepth: 2
    functionLinenumber: 19091
    functionLinenumberEnd: 20595
    functionName: bgp_vty_init
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 1
    functionsReached:
    - install_node
    - community_list_vty
    - cmd_init_config_callbacks
    - community_alias_vty
    - install_default
    - install_element
    - cmd_variable_handler_register
    - bgp_vty_if_init
    linkageType: ''
    returnType: void
    signature: void bgp_vty_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - direct
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20615
      start: 20605
    functionDepth: 0
    functionLinenumber: 20605
    functionLinenumberEnd: 20615
    functionName: community_direct_str
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *community_direct_str(int direct)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20622,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20625,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20628,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20632,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - vty
    - ret
    argTypes:
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20636
      start: 20618
    functionDepth: 1
    functionLinenumber: 20618
    functionLinenumberEnd: 20636
    functionName: community_list_perror
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void community_list_perror(struct vty *vty, int ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: community_str
      Src: /src/frr/bgpd/bgp_vty.c:20873,1
    - Dst: lcommunity_str
      Src: /src/frr/bgpd/bgp_vty.c:20875,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct community_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20880
      start: 20868
    functionDepth: 1
    functionLinenumber: 20868
    functionLinenumberEnd: 20880
    functionName: community_list_config_str
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - lcommunity_str
    - community_str
    linkageType: ''
    returnType: char
    signature: char *community_list_config_str(struct community_entry *entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: all_digit
      Src: /src/frr/bgpd/bgp_vty.c:20888,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20889,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20895,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20901,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:20901,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:20902,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - list
    argTypes:
    - struct vty*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20904
      start: 20882
    functionDepth: 2
    functionLinenumber: 20882
    functionLinenumberEnd: 20904
    functionName: community_list_show
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - all_digit
    - community_list_config_str
    - vty_out
    - community_direct_str
    linkageType: ''
    returnType: void
    signature: void community_list_show(struct vty *vty, struct community_list *list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:20968,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:20972,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:20977,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:20978,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:20979,1
    - Dst: all_digit
      Src: /src/frr/bgpd/bgp_vty.c:20981,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:20982,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:20987,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:20988,1
    - Dst: argv_concat
      Src: /src/frr/bgpd/bgp_vty.c:20991,1
    - Dst: lcommunity_list_set
      Src: /src/frr/bgpd/bgp_vty.c:20995,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:20999,1
    - Dst: community_list_perror
      Src: /src/frr/bgpd/bgp_vty.c:21002,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 5
    argNames:
    - vty
    - argc
    - argv
    - style
    - reject_all_digit_name
    argTypes:
    - struct vty*
    - int
    - struct cmd_token**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21006
      start: 20957
    functionDepth: 5
    functionLinenumber: 20957
    functionLinenumberEnd: 21006
    functionName: lcommunity_list_set_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - lcommunity_list_set
    - vty_out
    - argv_concat
    - community_list_perror
    - XFREE
    - all_digit
    - argv_find
    linkageType: ''
    returnType: int
    signature: "int lcommunity_list_set_vty(struct vty *vty, int argc,\n\t\t\t\t   struct
      cmd_token **argv, int style,\n\t\t\t\t   int reject_all_digit_name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21017,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21021,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21022,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_vty.c:21026,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21032,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21033,1
    - Dst: argv_concat
      Src: /src/frr/bgpd/bgp_vty.c:21035,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21039,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21040,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_vty.c:21041,1
    - Dst: lcommunity_list_unset
      Src: /src/frr/bgpd/bgp_vty.c:21044,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_vty.c:21049,1
    - Dst: community_list_perror
      Src: /src/frr/bgpd/bgp_vty.c:21052,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 4
    argNames:
    - vty
    - argc
    - argv
    - style
    argTypes:
    - struct vty*
    - int
    - struct cmd_token**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21057
      start: 21008
    functionDepth: 5
    functionLinenumber: 21008
    functionLinenumberEnd: 21057
    functionName: lcommunity_list_unset_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - argv_concat
    - strncmp
    - community_list_perror
    - lcommunity_list_unset
    - XFREE
    - argv_find
    linkageType: ''
    returnType: int
    signature: "int lcommunity_list_unset_vty(struct vty *vty, int argc,\n\t\t\t\t
      \    struct cmd_token **argv, int style)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: all_digit
      Src: /src/frr/bgpd/bgp_vty.c:21245,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21246,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21253,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21261,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21261,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - list
    argTypes:
    - struct vty*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21264
      start: 21239
    functionDepth: 2
    functionLinenumber: 21239
    functionLinenumberEnd: 21264
    functionName: lcommunity_list_show
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - all_digit
    - community_list_config_str
    - vty_out
    - community_direct_str
    linkageType: ''
    returnType: void
    signature: void lcommunity_list_show(struct vty *vty, struct community_list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: all_digit
      Src: /src/frr/bgpd/bgp_vty.c:21544,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21545,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21551,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21558,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21558,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21559,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - list
    argTypes:
    - struct vty*
    - struct community_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21561
      start: 21538
    functionDepth: 2
    functionLinenumber: 21538
    functionLinenumberEnd: 21561
    functionName: extcommunity_list_show
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - all_digit
    - community_list_config_str
    - vty_out
    - community_direct_str
    linkageType: ''
    returnType: void
    signature: void extcommunity_list_show(struct vty *vty, struct community_list
      *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_vty.c:21620,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21624,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21627,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21628,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21633,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21639,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21640,1
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_vty.c:21645,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21649,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21652,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21653,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21658,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21664,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21665,1
    - Dst: community_list_master_lookup
      Src: /src/frr/bgpd/bgp_vty.c:21671,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21676,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21679,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21680,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vty.c:21685,1
    - Dst: community_direct_str
      Src: /src/frr/bgpd/bgp_vty.c:21691,1
    - Dst: community_list_config_str
      Src: /src/frr/bgpd/bgp_vty.c:21692,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21697
      start: 21612
    functionDepth: 2
    functionLinenumber: 21612
    functionLinenumberEnd: 21697
    functionName: community_list_config_write
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 0
    functionsReached:
    - community_list_config_str
    - vty_out
    - community_list_master_lookup
    - community_direct_str
    linkageType: ''
    returnType: int
    signature: int community_list_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:21709,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21712,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21713,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21714,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21715,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21716,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21717,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21718,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21719,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21722,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21723,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21724,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21725,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21727,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21728,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21730,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21731,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21734,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21735,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21736,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21737,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21738,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21739,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21741,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21743,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21744,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21745,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21746,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21747,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21748,1
    - Dst: bgp_community_list_command_completion_setup
      Src: /src/frr/bgpd/bgp_vty.c:21750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21751
      start: 21707
    functionDepth: 1
    functionLinenumber: 21707
    functionLinenumberEnd: 21751
    functionName: community_list_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 2
    functionsReached:
    - install_element
    - bgp_community_list_command_completion_setup
    - install_node
    linkageType: ''
    returnType: void
    signature: void community_list_vty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_vty.c:21762,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_vty.c:21765,1
    - Dst: bgp_community_alias_command_completion_setup
      Src: /src/frr/bgpd/bgp_vty.c:21767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21768
      start: 21760
    functionDepth: 1
    functionLinenumber: 21760
    functionLinenumberEnd: 21768
    functionName: community_alias_vty
    functionSourceFile: /src/frr/bgpd/bgp_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    - bgp_community_alias_command_completion_setup
    - install_node
    linkageType: ''
    returnType: void
    signature: void community_alias_vty(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct as_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 81
    functionName: bgp_alist_new_seq_get
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64_t
    signature: int64_t bgp_alist_new_seq_get(struct as_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - seq
    argTypes:
    - struct as_list*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: bgp_aslist_seq_check
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct as_filter
    signature: struct as_filter *bgp_aslist_seq_check(struct as_list *list, int64_t
      seq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_filter.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: as_filter_new
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct as_filter
    signature: struct as_filter *as_filter_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_regex_free
      Src: /src/frr/bgpd/bgp_filter.c:111,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_filter.c:112,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_filter.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - asfilter
    argTypes:
    - struct as_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: as_filter_free
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - XFREE
    - bgp_regex_free
    linkageType: ''
    returnType: void
    signature: void as_filter_free(struct as_filter *asfilter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_filter_new
      Src: /src/frr/bgpd/bgp_filter.c:122,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_filter.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - reg
    - reg_str
    - type
    argTypes:
    - regex_t*
    - char*
    - enum as_filter_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 128
    functionName: as_filter_make
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_filter_new
    - XSTRDUP
    linkageType: ''
    returnType: struct as_filter
    signature: "struct as_filter *as_filter_make(regex_t *reg, const char *reg_str,\n\t\t\t\t\tenum
      as_filter_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_filter.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - aslist
    - reg_str
    - type
    argTypes:
    - struct as_list*
    - char*
    - enum as_filter_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 140
    functionName: as_filter_lookup
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct as_filter
    signature: "struct as_filter *as_filter_lookup(struct as_list *aslist,\n\t\t\t\t\t
      \ const char *reg_str,\n\t\t\t\t\t  enum as_filter_type type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: as_filter_free
      Src: /src/frr/bgpd/bgp_filter.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - list
    - replace
    - entry
    argTypes:
    - struct as_list*
    - struct as_filter*
    - struct as_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 163
    functionName: as_filter_entry_replace
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_filter_free
    linkageType: ''
    returnType: void
    signature: "void as_filter_entry_replace(struct as_list *list,\n\t\t\t\t    struct
      as_filter *replace,\n\t\t\t\t    struct as_filter *entry)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aslist_seq_check
      Src: /src/frr/bgpd/bgp_filter.c:174,1
    - Dst: as_filter_entry_replace
      Src: /src/frr/bgpd/bgp_filter.c:176,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - aslist
    - asfilter
    argTypes:
    - struct as_list*
    - struct as_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 210
    functionName: as_list_filter_add
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_filter_entry_replace
    - bgp_aslist_seq_check
    linkageType: ''
    returnType: void
    signature: "void as_list_filter_add(struct as_list *aslist,\n\t\t\t       struct
      as_filter *asfilter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_filter.c:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: as_list_lookup
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct as_list
    signature: struct as_list *as_list_lookup(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_filter.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 230
    functionName: as_list_new
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct as_list
    signature: struct as_list *as_list_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_filter.c:234,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_filter.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - aslist
    argTypes:
    - struct as_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: as_list_free
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void as_list_free(struct as_list *aslist)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: as_list_new
      Src: /src/frr/bgpd/bgp_filter.c:247,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_filter.c:248,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_filter.c:249,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_filter.c:256,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts:
    - condition: (aslist->name)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/frr/bgpd/bgp_filter.c
    constantsTouched: []
    func_position:
      end: 290
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 290
    functionName: as_list_insert
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_list_new
    - strcmp
    - XSTRDUP
    - assert
    linkageType: ''
    returnType: struct as_list
    signature: struct as_list *as_list_insert(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: as_list_lookup
      Src: /src/frr/bgpd/bgp_filter.c:296,1
    - Dst: as_list_insert
      Src: /src/frr/bgpd/bgp_filter.c:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 301
    functionName: as_list_get
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_list_insert
    - as_list_lookup
    linkageType: ''
    returnType: struct as_list
    signature: struct as_list *as_list_get(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum as_filter_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 313
    functionName: filter_type_str
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *filter_type_str(enum as_filter_type type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: as_filter_free
      Src: /src/frr/bgpd/bgp_filter.c:322,1
    - Dst: as_list_free
      Src: /src/frr/bgpd/bgp_filter.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - aslist
    argTypes:
    - struct as_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 338
    functionName: as_list_delete
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_filter_free
    - as_list_free
    linkageType: ''
    returnType: void
    signature: void as_list_delete(struct as_list *aslist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - aslist
    argTypes:
    - struct as_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: as_list_empty
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool as_list_empty(struct as_list *aslist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_filter.c:348,1
    - Dst: as_filter_free
      Src: /src/frr/bgpd/bgp_filter.c:360,1
    - Dst: as_list_empty
      Src: /src/frr/bgpd/bgp_filter.c:363,1
    - Dst: as_list_delete
      Src: /src/frr/bgpd/bgp_filter.c:364,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_filter.c:369,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - aslist
    - asfilter
    argTypes:
    - struct as_list*
    - struct as_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 370
    functionName: as_list_filter_delete
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_list_delete
    - as_list_empty
    - XFREE
    - as_filter_free
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void as_list_filter_delete(struct as_list *aslist,\n\t\t\t\t  struct
      as_filter *asfilter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_regexec
      Src: /src/frr/bgpd/bgp_filter.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - asfilter
    - aspath
    argTypes:
    - struct as_filter*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 375
    functionName: as_filter_match
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - bgp_regexec
    linkageType: ''
    returnType: bool
    signature: bool as_filter_match(struct as_filter *asfilter, struct aspath *aspath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: as_filter_match
      Src: /src/frr/bgpd/bgp_filter.c:389,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - aslist
    - object
    argTypes:
    - struct as_list*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 393
    functionName: as_list_apply
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 1
    functionsReached:
    - as_filter_match
    linkageType: ''
    returnType: enum as_filter_type
    signature: enum as_filter_type as_list_apply(struct as_list *aslist, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 399
    functionName: as_list_add_hook
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void as_list_add_hook(void (*func)(char *))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: as_list_delete_hook
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void as_list_delete_hook(void (*func)(const char *))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: type::type
      Src: /src/frr/bgpd/bgp_filter.c:412,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_filter.c:413,1
    - Dst: reg_str::reg_str
      Src: /src/frr/bgpd/bgp_filter.c:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - aslist
    - new
    argTypes:
    - struct as_list*
    - struct as_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 417
    functionName: as_list_dup_check
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - reg_str::reg_str
    - strcmp
    - type::type
    linkageType: ''
    returnType: bool
    signature: bool as_list_dup_check(struct as_list *aslist, struct as_filter *new)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/frr/bgpd/bgp_filter.c:423,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_filter.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - regstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 426
    functionName: config_bgp_aspath_validate
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - strspn
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool config_bgp_aspath_validate(const char *regstr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_filter.c:609,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_filter.c:610,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_filter.c:612,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_filter.c:616,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_filter.c:618,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_filter.c:620,1
    - Dst: filter_type_str
      Src: /src/frr/bgpd/bgp_filter.c:621,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_filter.c:622,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_filter.c:625,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_filter.c:627,1
    - Dst: filter_type_str
      Src: /src/frr/bgpd/bgp_filter.c:628,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - vty
    - aslist
    - json
    argTypes:
    - struct vty*
    - struct as_list*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 631
    functionName: as_list_show
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - vty_out
    - json_object_array_add
    - json_object_int_add
    - filter_type_str
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void as_list_show(struct vty *vty, struct as_list *aslist,\n\t\t\t
      json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_list_show
      Src: /src/frr/bgpd/bgp_filter.c:638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 633
    functionDepth: 2
    functionLinenumber: 633
    functionLinenumberEnd: 639
    functionName: as_list_show_all
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - as_list_show
    linkageType: ''
    returnType: void
    signature: void as_list_show_all(struct vty *vty, json_object *json)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_filter.c:716,1
    - Dst: filter_type_str
      Src: /src/frr/bgpd/bgp_filter.c:720,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 725
    functionName: config_write_as_list
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - vty_out
    - filter_type_str
    linkageType: ''
    returnType: int
    signature: int config_write_as_list(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set
      Src: /src/frr/bgpd/bgp_filter.c:741,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_filter.c:741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 742
    functionName: bgp_aspath_filter_cmd_completion
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - vector_set
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void bgp_aspath_filter_cmd_completion(vector comps,\n\t\t\t\t\t     struct
      cmd_token *token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_filter.c:752,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_filter.c:754,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_filter.c:755,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_filter.c:756,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_filter.c:758,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_filter.c:759,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_filter.c:760,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_filter.c:761,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_filter.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 764
    functionName: bgp_filter_init
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 0
    functionsReached:
    - install_element
    - cmd_variable_handler_register
    - install_node
    linkageType: ''
    returnType: void
    signature: void bgp_filter_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: as_list_delete
      Src: /src/frr/bgpd/bgp_filter.c:773,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_filter.c:776,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_filter.c:777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (as_list_master.str.head == NULL)
      pos:
        line_end: 775
        line_start: 775
        source_file: /src/frr/bgpd/bgp_filter.c
    - condition: (as_list_master.str.tail == NULL)
      pos:
        line_end: 776
        line_start: 776
        source_file: /src/frr/bgpd/bgp_filter.c
    constantsTouched: []
    func_position:
      end: 778
      start: 766
    functionDepth: 3
    functionLinenumber: 766
    functionLinenumberEnd: 778
    functionName: bgp_filter_reset
    functionSourceFile: /src/frr/bgpd/bgp_filter.c
    functionUses: 1
    functionsReached:
    - as_list_delete
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_filter_reset(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_route.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: bgp_path_suppressed
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - listcount
    linkageType: ''
    returnType: bool
    signature: bool bgp_path_suppressed(struct bgp_path_info *pi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:131,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:135,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:137,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:138,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_route.c:139,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:141,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:142,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:145,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 5
    argNames:
    - table
    - afi
    - safi
    - p
    - prd
    argTypes:
    - struct bgp_table*
    - afi_t
    - safi_t
    - struct prefix*
    - struct prefix_rd*
    assertStmts:
    - condition: (table)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 152
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 152
    functionName: bgp_afi_node_get
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_table_init
    - bgp_dest_get_bgp_table_info
    - bgp_dest_has_bgp_path_info_data
    - bgp_dest_set_bgp_table_info
    - assert
    - bgp_node_get
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_afi_node_get(struct bgp_table *table, afi_t afi,\n\t\t\t\t
      \ safi_t safi, const struct prefix *p,\n\t\t\t\t  struct prefix_rd *prd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:166,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:170,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:171,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:175,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:178,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - table
    - safi
    - p
    - prd
    argTypes:
    - struct bgp_table*
    - safi_t
    - struct prefix*
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 181
    functionName: bgp_safi_node_lookup
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_dest_has_bgp_path_info_data
    - bgp_node_lookup
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_safi_node_lookup(struct bgp_table *table, safi_t
      safi,\n\t\t\t\t      const struct prefix *p,\n\t\t\t\t      struct prefix_rd
      *prd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 194
    functionName: bgp_path_info_extra_new
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct bgp_path_info_extra
    signature: struct bgp_path_info_extra *bgp_path_info_extra_new(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: bgp_damp_info_free
      Src: /src/frr/bgpd/bgp_route.c:205,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_route.c:223,1
    - Dst: bgp_dest_get_lock_count
      Src: /src/frr/bgpd/bgp_route.c:224,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:225,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/bgp_route.c:228,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/bgp_route.c:230,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgp_route.c:235,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_route.c:238,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:241,1
    - Dst: bgp_evpn_path_mh_info_free
      Src: /src/frr/bgpd/bgp_route.c:244,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:247,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:249,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:250,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - extra
    argTypes:
    - struct bgp_path_info_extra**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 251
    functionName: bgp_path_info_extra_free
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_damp_info_free
    - list_delete
    - peer_unlock
    - bgp_unlock
    - bgp_path_info_lock
    - bgp_dest_get_lock_count
    - bgp_path_info_unlock
    - bgp_evpn_path_mh_info_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_path_info_extra_free(struct bgp_path_info_extra **extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_extra_new
      Src: /src/frr/bgpd/bgp_route.c:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 261
    functionName: bgp_path_info_extra_get
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 3
    functionsReached:
    - bgp_path_info_extra_new
    linkageType: ''
    returnType: struct bgp_path_info_extra
    signature: struct bgp_path_info_extra *bgp_path_info_extra_get(struct bgp_path_info
      *pi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_route.c:267,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:268,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:270,1
    - Dst: bgp_path_info_extra_free
      Src: /src/frr/bgpd/bgp_route.c:271,1
    - Dst: bgp_path_info_mpath_free
      Src: /src/frr/bgpd/bgp_route.c:272,1
    - Dst: bgp_addpath_free_info_data
      Src: /src/frr/bgpd/bgp_route.c:274,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_route.c:277,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - name
    - path
    argTypes:
    - char*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 280
    functionName: bgp_path_info_free_with_caller
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - peer_unlock
    - bgp_unlink_nexthop
    - bgp_path_info_extra_free
    - bgp_path_info_mpath_free
    - frrtrace
    - XFREE
    - bgp_addpath_free_info_data
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_free_with_caller(const char *name,\n\t\t\t\t    struct
      bgp_path_info *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: bgp_path_info_lock
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_path_info
    signature: struct bgp_path_info *bgp_path_info_lock(struct bgp_path_info *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:290,1
    - Dst: bgp_path_info_free
      Src: /src/frr/bgpd/bgp_route.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts:
    - condition: (path && path->lock > 0)
      pos:
        line_end: 289
        line_start: 289
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 299
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 299
    functionName: bgp_path_info_unlock
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 4
    functionsReached:
    - bgp_path_info_free
    - assert
    linkageType: ''
    returnType: struct bgp_path_info
    signature: struct bgp_path_info *bgp_path_info_unlock(struct bgp_path_info *path)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:315,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:318,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:319,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:320,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:324,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:332,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:339,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:341,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:347,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_route.c:355,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_route.c:356,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:371,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:373,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:374,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:375,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 43
    argCount: 2
    argNames:
    - dest
    - delete
    argTypes:
    - struct bgp_dest*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 381
    functionName: bgp_dest_set_defer_flag
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - CHECK_FLAG
    - bgp_dest_table
    - zlog_debug
    - BGP_PEER_RESTARTING_MODE
    - SET_FLAG
    - bgp_dest_get_bgp_path_info
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_dest_set_defer_flag(struct bgp_dest *dest, bool delete)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_route.c:386,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:389,1
    - Dst: bgp_dest_set_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:395,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_route.c:397,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_route.c:398,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_route.c:399,1
    - Dst: bgp_dest_set_defer_flag
      Src: /src/frr/bgpd/bgp_route.c:400,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:401,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - name
    - dest
    - pi
    argTypes:
    - char*
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 402
    functionName: bgp_path_info_add_with_caller
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - hook_call
    - frrtrace
    - bgp_dest_set_bgp_path_info
    - bgp_path_info_lock
    - bgp_dest_lock_node
    - bgp_dest_set_defer_flag
    - bgp_dest_get_bgp_path_info
    - peer_lock
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_add_with_caller(const char *name, struct bgp_dest
      *dest,\n\t\t\t\t   struct bgp_path_info *pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_set_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:413,1
    - Dst: bgp_path_info_mpath_dequeue
      Src: /src/frr/bgpd/bgp_route.c:415,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/bgp_route.c:416,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:417,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - dest
    - pi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 419
    functionName: bgp_path_info_reap
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 5
    functionsReached:
    - bgp_dest_unlock_node
    - hook_call
    - bgp_dest_set_bgp_path_info
    - bgp_path_info_mpath_dequeue
    - bgp_path_info_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_path_info_reap(struct bgp_dest *dest, struct bgp_path_info
      *pi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:423,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - pi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 426
    functionName: bgp_path_info_delete
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 5
    functionsReached:
    - bgp_path_info_set_flag
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_path_info_delete(struct bgp_dest *dest, struct bgp_path_info
      *pi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:433,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - pi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 436
    functionName: bgp_path_info_restore
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 4
    functionsReached:
    - SET_FLAG
    - bgp_path_info_unset_flag
    linkageType: ''
    returnType: void
    signature: void bgp_path_info_restore(struct bgp_dest *dest, struct bgp_path_info
      *pi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:443,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:443,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:444,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:446,1
    - Dst: BGP_PATH_COUNTABLE
      Src: /src/frr/bgpd/bgp_route.c:451,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:452,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:454,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:460,1
    - Dst: BGP_PATH_COUNTABLE
      Src: /src/frr/bgpd/bgp_route.c:462,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:463,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:464,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 2
    argNames:
    - dest
    - pi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts:
    - condition: (dest && bgp_dest_table(dest))
      pos:
        line_end: 442
        line_start: 442
        source_file: /src/frr/bgpd/bgp_route.c
    - condition: (pi && pi->peer && pi->peer->bgp)
      pos:
        line_end: 443
        line_start: 443
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 467
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 467
    functionName: bgp_pcount_adjust
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - BGP_PATH_COUNTABLE
    - CHECK_FLAG
    - bgp_dest_table
    - UNSET_FLAG
    - flog_err
    - SET_FLAG
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_pcount_adjust(struct bgp_dest *dest, struct bgp_path_info
      *pi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pi1
    - pi2
    argTypes:
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 473
    functionName: bgp_label_index_differs
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bgp_label_index_differs(struct bgp_path_info *pi1,\n\t\t\t\t   struct
      bgp_path_info *pi2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:481,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:485,1
    - Dst: bgp_pcount_adjust
      Src: /src/frr/bgpd/bgp_route.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - pi
    - flag
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 478
    functionDepth: 2
    functionLinenumber: 478
    functionLinenumberEnd: 490
    functionName: bgp_path_info_set_flag
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 6
    functionsReached:
    - SET_FLAG
    - CHECK_FLAG
    - bgp_pcount_adjust
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_set_flag(struct bgp_dest *dest, struct bgp_path_info
      *pi,\n\t\t\t    uint32_t flag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:495,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:499,1
    - Dst: bgp_pcount_adjust
      Src: /src/frr/bgpd/bgp_route.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - pi
    - flag
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 504
    functionName: bgp_path_info_unset_flag
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    - UNSET_FLAG
    - bgp_pcount_adjust
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_unset_flag(struct bgp_dest *dest, struct bgp_path_info
      *pi,\n\t\t\t      uint32_t flag)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:510,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - attr
    - bgp
    argTypes:
    - struct attr*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 518
    functionName: bgp_med_value
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_med_value(struct attr *attr, struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:526,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:527,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:532,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:535,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - pi
    - buf
    - buf_len
    argTypes:
    - struct bgp_path_info*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 536
    functionName: bgp_path_info_path_with_addpath_rx_str
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - snprintf
    - bgp_get_imported_bpi_ultimate
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_path_with_addpath_rx_str(struct bgp_path_info *pi,
      char *buf,\n\t\t\t\t\t    size_t buf_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 555
    functionName: bgp_get_imported_bpi_ultimate
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_path_info
    signature: struct bgp_path_info *bgp_get_imported_bpi_ultimate(struct bgp_path_info
      *info)
  - BBCount: 150
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:605,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:610,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_route.c:611,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:618,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:624,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_route.c:625,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:627,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:628,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:632,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:644,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:645,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:645,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:648,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:654,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:655,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:655,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:658,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:664,1
    - Dst: net::net
      Src: /src/frr/bgpd/bgp_route.c:664,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_route.c:683,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_route.c:688,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:695,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:704,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_route.c:711,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_route.c:712,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_route.c:713,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_route.c:714,1
    - Dst: bgp_evpn_is_path_local
      Src: /src/frr/bgpd/bgp_route.c:730,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:733,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:736,1
    - Dst: bgp_evpn_is_path_local
      Src: /src/frr/bgpd/bgp_route.c:740,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:743,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:746,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_route.c:752,1
    - Dst: mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_route.c:753,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:758,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:768,1
    - Dst: bgp_evpn_attr_is_proxy
      Src: /src/frr/bgpd/bgp_route.c:778,1
    - Dst: bgp_evpn_attr_is_proxy
      Src: /src/frr/bgpd/bgp_route.c:779,1
    - Dst: bgp_evpn_attr_is_local_es
      Src: /src/frr/bgpd/bgp_route.c:780,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:785,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:793,1
    - Dst: bgp_path_info_nexthop_cmp
      Src: /src/frr/bgpd/bgp_route.c:803,1
    - Dst: exist::exist
      Src: /src/frr/bgpd/bgp_route.c:803,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:807,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:810,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:816,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:819,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:831,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:840,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:849,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:851,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:857,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:867,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:884,1
    - Dst: peer::peer
      Src: /src/frr/bgpd/bgp_route.c:884,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:885,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:891,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:892,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:893,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:894,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:895,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:896,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:901,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:910,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:918,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:918,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:919,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:919,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:920,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:921,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:922,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:927,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:938,1
    - Dst: sub_type::sub_type
      Src: /src/frr/bgpd/bgp_route.c:952,1
    - Dst: sub_type::sub_type
      Src: /src/frr/bgpd/bgp_route.c:953,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:960,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:969,1
    - Dst: bgp_get_imported_bpi_ultimate::bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:978,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:979,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:980,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:984,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_route.c:985,1
    - Dst: aspath_count_confeds
      Src: /src/frr/bgpd/bgp_route.c:986,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:988,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_route.c:991,1
    - Dst: aspath_count_confeds
      Src: /src/frr/bgpd/bgp_route.c:992,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:997,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1008,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_route.c:1016,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1021,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1031,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1044,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1054,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_route.c:1062,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_route.c:1063,1
    - Dst: aspath_count_confeds
      Src: /src/frr/bgpd/bgp_route.c:1064,1
    - Dst: aspath_count_confeds
      Src: /src/frr/bgpd/bgp_route.c:1065,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_route.c:1066,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_route.c:1067,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1069,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1070,1
    - Dst: aspath_cmp_left
      Src: /src/frr/bgpd/bgp_route.c:1071,1
    - Dst: aspath_cmp_left_confed
      Src: /src/frr/bgpd/bgp_route.c:1072,1
    - Dst: bgp_med_value
      Src: /src/frr/bgpd/bgp_route.c:1074,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:1074,1
    - Dst: bgp_med_value
      Src: /src/frr/bgpd/bgp_route.c:1075,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1080,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1090,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:1099,1
    - Dst: sub_type::sub_type
      Src: /src/frr/bgpd/bgp_route.c:1104,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:1105,1
    - Dst: peer::peer
      Src: /src/frr/bgpd/bgp_route.c:1108,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1121,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1130,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1133,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:1141,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:1142,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1148,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1156,1
    - Dst: peer_sort_lookup
      Src: /src/frr/bgpd/bgp_route.c:1167,1
    - Dst: peer_sort_lookup
      Src: /src/frr/bgpd/bgp_route.c:1168,1
    - Dst: BGP_CLUSTER_LIST_LENGTH
      Src: /src/frr/bgpd/bgp_route.c:1170,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:1170,1
    - Dst: BGP_CLUSTER_LIST_LENGTH
      Src: /src/frr/bgpd/bgp_route.c:1171,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1175,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1194,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1199,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1202,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1212,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1215,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:1231,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:1232,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:1235,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:1235,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:1235,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:1237,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1243,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1262,1
    - Dst: aspath_cmp
      Src: /src/frr/bgpd/bgp_route.c:1266,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:1266,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1271,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1279,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1301,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1305,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1326,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1328,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:1328,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1331,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1337,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1340,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:1352,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:1356,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:1361,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:1361,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1364,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:1370,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:1370,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1373,1
    - Dst: BGP_CLUSTER_LIST_LENGTH
      Src: /src/frr/bgpd/bgp_route.c:1380,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:1380,1
    - Dst: BGP_CLUSTER_LIST_LENGTH
      Src: /src/frr/bgpd/bgp_route.c:1381,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1386,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1396,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1407,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1416,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:1416,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1419,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgp_route.c:1436,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1441,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1450,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:1458,1
    CyclomaticComplexity: 194
    EdgeCount: 194
    ICount: 463
    argCount: 10
    argNames:
    - bgp
    - new
    - exist
    - paths_eq
    - mpath_cfg
    - debug
    - pfx_buf
    - afi
    - safi
    - reason
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct bgp_path_info*
    - int*
    - struct bgp_maxpaths_cfg*
    - int
    - char*
    - afi_t
    - safi_t
    - enum bgp_path_selection_reason*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 1462
    functionName: bgp_path_info_cmp
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - peer::peer
    - bgp_med_value
    - esi_to_str
    - memcmp
    - sockunion_cmp
    - mac_mobility_seqnum
    - bgp_evpn_attr_is_local_es
    - bgp_attr_get_aigp_metric
    - net::net
    - bgp_is_valid_label
    - bgp_dest_get_prefix
    - bgp_get_imported_bpi_ultimate::bgp_get_imported_bpi_ultimate
    - aspath_cmp_left
    - aspath_cmp
    - zlog_debug
    - exist::exist
    - peer_sort_lookup
    - sub_type::sub_type
    - ntohl
    - bgp_get_imported_bpi_ultimate
    - aspath_count_hops
    - bgp_path_info_path_with_addpath_rx_str
    - bgp_evpn_attr_get_esi
    - aspath_count_confeds
    - attr::attr
    - flags::flags
    - extra::extra
    - bgp_path_info_nexthop_cmp
    - bgp_attr_get_community
    - aspath_cmp_left_confed
    - BGP_CLUSTER_LIST_LENGTH
    - bgp_evpn_is_path_local
    - community_include
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_evpn_attr_is_proxy
    - bgp_evpn_is_esi_valid
    linkageType: ''
    returnType: int
    signature: "int bgp_path_info_cmp(struct bgp *bgp, struct bgp_path_info *new,\n\t\t\t
      \    struct bgp_path_info *exist, int *paths_eq,\n\t\t\t     struct bgp_maxpaths_cfg
      *mpath_cfg, int debug,\n\t\t\t     char *pfx_buf, afi_t afi, safi_t safi,\n\t\t\t
      \    enum bgp_path_selection_reason *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_cmp
      Src: /src/frr/bgpd/bgp_route.c:1471,1
    - Dst: exist::exist
      Src: /src/frr/bgpd/bgp_route.c:1471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - bgp
    - new
    - exist
    - paths_eq
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct bgp_path_info*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1465
    functionDepth: 3
    functionLinenumber: 1465
    functionLinenumberEnd: 1473
    functionName: bgp_evpn_path_info_cmp
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - exist::exist
    - bgp_path_info_cmp
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_path_info_cmp(struct bgp *bgp, struct bgp_path_info *new,\n\t\t\t
      \    struct bgp_path_info *exist, int *paths_eq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_cmp
      Src: /src/frr/bgpd/bgp_route.c:1486,1
    - Dst: exist::exist
      Src: /src/frr/bgpd/bgp_route.c:1486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 7
    argNames:
    - bgp
    - new
    - exist
    - pfx_buf
    - afi
    - safi
    - reason
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct bgp_path_info*
    - char*
    - afi_t
    - safi_t
    - enum bgp_path_selection_reason*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1479
    functionDepth: 3
    functionLinenumber: 1479
    functionLinenumberEnd: 1498
    functionName: bgp_path_info_cmp_compatible
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - exist::exist
    - bgp_path_info_cmp
    linkageType: ''
    returnType: int
    signature: "int bgp_path_info_cmp_compatible(struct bgp *bgp, struct bgp_path_info
      *new,\n\t\t\t\t struct bgp_path_info *exist, char *pfx_buf,\n\t\t\t\t afi_t
      afi, safi_t safi,\n\t\t\t\t enum bgp_path_selection_reason *reason)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DISTRIBUTE_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:1515,1
    - Dst: FILTER_EXIST_WARN
      Src: /src/frr/bgpd/bgp_route.c:1516,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_route.c:1518,1
    - Dst: DISTRIBUTE_IN
      Src: /src/frr/bgpd/bgp_route.c:1518,1
    - Dst: PREFIX_LIST_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:1525,1
    - Dst: FILTER_EXIST_WARN
      Src: /src/frr/bgpd/bgp_route.c:1526,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_route.c:1528,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/bgpd/bgp_route.c:1528,1
    - Dst: FILTER_LIST_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:1535,1
    - Dst: FILTER_EXIST_WARN
      Src: /src/frr/bgpd/bgp_route.c:1536,1
    - Dst: as_list_apply
      Src: /src/frr/bgpd/bgp_route.c:1538,1
    - Dst: FILTER_LIST_IN
      Src: /src/frr/bgpd/bgp_route.c:1538,1
    - Dst: frrtrace_enabled
      Src: /src/frr/bgpd/bgp_route.c:1546,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_route.c:1549,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_route.c:1550,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 5
    argNames:
    - peer
    - p
    - attr
    - afi
    - safi
    argTypes:
    - struct peer*
    - struct prefix*
    - struct attr*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1500
    functionDepth: 3
    functionLinenumber: 1500
    functionLinenumberEnd: 1556
    functionName: bgp_input_filter
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - DISTRIBUTE_IN_NAME
    - prefix2str
    - FILTER_LIST_IN_NAME
    - DISTRIBUTE_IN
    - PREFIX_LIST_IN_NAME
    - prefix_list_apply
    - FILTER_LIST_IN
    - PREFIX_LIST_IN
    - frrtrace_enabled
    - access_list_apply
    - as_list_apply
    - frrtrace
    - FILTER_EXIST_WARN
    linkageType: ''
    returnType: enum filter_type
    signature: "enum filter_type bgp_input_filter(struct peer *peer,\n\t\t\t\t\t const
      struct prefix *p,\n\t\t\t\t\t struct attr *attr, afi_t afi,\n\t\t\t\t\t safi_t
      safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - F
    - ','
    - f
    - ','
    - filter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1510
    functionDepth: 0
    functionLinenumber: 1510
    functionLinenumberEnd: 1514
    functionName: FILTER_EXIST_WARN
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILTER_EXIST_WARN(F, f, filter)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:1573,1
    - Dst: FILTER_EXIST_WARN
      Src: /src/frr/bgpd/bgp_route.c:1574,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_route.c:1576,1
    - Dst: DISTRIBUTE_OUT
      Src: /src/frr/bgpd/bgp_route.c:1576,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:1583,1
    - Dst: FILTER_EXIST_WARN
      Src: /src/frr/bgpd/bgp_route.c:1584,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_route.c:1586,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/bgpd/bgp_route.c:1586,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:1593,1
    - Dst: FILTER_EXIST_WARN
      Src: /src/frr/bgpd/bgp_route.c:1594,1
    - Dst: as_list_apply
      Src: /src/frr/bgpd/bgp_route.c:1596,1
    - Dst: FILTER_LIST_OUT
      Src: /src/frr/bgpd/bgp_route.c:1596,1
    - Dst: frrtrace_enabled
      Src: /src/frr/bgpd/bgp_route.c:1603,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_route.c:1606,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_route.c:1607,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 5
    argNames:
    - peer
    - p
    - attr
    - afi
    - safi
    argTypes:
    - struct peer*
    - struct prefix*
    - struct attr*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1558
    functionDepth: 3
    functionLinenumber: 1558
    functionLinenumberEnd: 1614
    functionName: bgp_output_filter
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - PREFIX_LIST_OUT
    - DISTRIBUTE_OUT_NAME
    - FILTER_LIST_OUT_NAME
    - frrtrace
    - prefix_list_apply
    - frrtrace_enabled
    - access_list_apply
    - as_list_apply
    - PREFIX_LIST_OUT_NAME
    - DISTRIBUTE_OUT
    - FILTER_EXIST_WARN
    - FILTER_LIST_OUT
    linkageType: ''
    returnType: enum filter_type
    signature: "enum filter_type bgp_output_filter(struct peer *peer,\n\t\t\t\t\t
      \ const struct prefix *p,\n\t\t\t\t\t  struct attr *attr, afi_t afi,\n\t\t\t\t\t
      \ safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - F
    - ','
    - f
    - ','
    - filter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1568
    functionDepth: 0
    functionLinenumber: 1568
    functionLinenumberEnd: 1572
    functionName: FILTER_EXIST_WARN
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FILTER_EXIST_WARN(F, f, filter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:1619,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:1621,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:1621,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:1627,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:1627,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:1634,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:1634,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - peer
    - attr
    argTypes:
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1639
    functionName: bgp_community_filter
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - community_include
    - bgp_attr_get_community
    linkageType: ''
    returnType: bool
    signature: bool bgp_community_filter(struct peer *peer, struct attr *attr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_route.c:1645,1
    - Dst: cluster_loop_check
      Src: /src/frr/bgpd/bgp_route.c:1653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - peer
    - attr
    argTypes:
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1642
    functionDepth: 1
    functionLinenumber: 1642
    functionLinenumberEnd: 1657
    functionName: bgp_cluster_filter
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - cluster_loop_check
    - bgp_attr_get_cluster
    linkageType: ''
    returnType: bool
    signature: bool bgp_cluster_filter(struct peer *peer, struct attr *attr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:1661,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:1672,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - peer
    - attr
    argTypes:
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1659
    functionDepth: 1
    functionLinenumber: 1659
    functionLinenumberEnd: 1676
    functionName: bgp_otc_filter
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: bool
    signature: bool bgp_otc_filter(struct peer *peer, struct attr *attr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:1680,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:1690,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - peer
    - attr
    argTypes:
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1678
    functionDepth: 1
    functionLinenumber: 1678
    functionLinenumberEnd: 1694
    functionName: bgp_otc_egress
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: bool
    signature: bool bgp_otc_egress(struct peer *peer, struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - afi
    - safi
    argTypes:
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1696
    functionDepth: 0
    functionLinenumber: 1696
    functionLinenumberEnd: 1699
    functionName: bgp_check_role_applicability
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_check_role_applicability(afi_t afi, safi_t safi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:1719,1
    - Dst: ROUTE_MAP_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:1724,1
    - Dst: ROUTE_MAP_IN
      Src: /src/frr/bgpd/bgp_route.c:1725,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:1734,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:1743,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1746,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:1749,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 9
    argNames:
    - peer
    - p
    - attr
    - afi
    - safi
    - rmap_name
    - label
    - num_labels
    - dest
    argTypes:
    - struct peer*
    - struct prefix*
    - struct attr*
    - afi_t
    - safi_t
    - char*
    - mpls_label_t*
    - uint32_t
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1701
    functionDepth: 1
    functionLinenumber: 1701
    functionLinenumberEnd: 1757
    functionName: bgp_input_modifier
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - memset
    - ROUTE_MAP_IN_NAME
    - ROUTE_MAP_IN
    - route_map_lookup_by_name
    - SET_FLAG
    - route_map_apply
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_input_modifier(struct peer *peer, const struct prefix *p,\n\t\t\t
      \     struct attr *attr, afi_t afi, safi_t safi,\n\t\t\t      const char *rmap_name,
      mpls_label_t *label,\n\t\t\t      uint32_t num_labels, struct bgp_dest *dest)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:1780,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:1790,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1797,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:1800,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 6
    argNames:
    - peer
    - p
    - attr
    - afi
    - safi
    - rmap_name
    argTypes:
    - struct peer*
    - struct prefix*
    - struct attr*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1759
    functionDepth: 1
    functionLinenumber: 1759
    functionLinenumberEnd: 1811
    functionName: bgp_output_modifier
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - route_map_lookup_by_name
    - SET_FLAG
    - route_map_apply
    - memset
    linkageType: ''
    returnType: int
    signature: "int bgp_output_modifier(struct peer *peer, const struct prefix *p,\n\t\t\t
      \      struct attr *attr, afi_t afi, safi_t safi,\n\t\t\t       const char *rmap_name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1818,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1820,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1822,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1824,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1827,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1829,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1831,1
    - Dst: aspath_replace_private_asns
      Src: /src/frr/bgpd/bgp_route.c:1834,1
    - Dst: aspath_remove_private_asns
      Src: /src/frr/bgpd/bgp_route.c:1843,1
    - Dst: aspath_private_as_check
      Src: /src/frr/bgpd/bgp_route.c:1850,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1851,1
    - Dst: aspath_replace_private_asns
      Src: /src/frr/bgpd/bgp_route.c:1854,1
    - Dst: aspath_remove_private_asns
      Src: /src/frr/bgpd/bgp_route.c:1861,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 13
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - peer
    - attr
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1865
      start: 1814
    functionDepth: 1
    functionLinenumber: 1814
    functionLinenumberEnd: 1865
    functionName: bgp_peer_remove_private_as
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - aspath_remove_private_asns
    - peer_af_flag_check
    - aspath_replace_private_asns
    - aspath_private_as_check
    linkageType: ''
    returnType: void
    signature: "void bgp_peer_remove_private_as(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\t       struct peer *peer, struct attr *attr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_route.c:1874,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_route.c:1876,1
    - Dst: aspath_intern
      Src: /src/frr/bgpd/bgp_route.c:1880,1
    - Dst: aspath_replace_specific_asn
      Src: /src/frr/bgpd/bgp_route.c:1881,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:1883,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - peer
    - attr
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1885
      start: 1868
    functionDepth: 1
    functionLinenumber: 1868
    functionLinenumberEnd: 1885
    functionName: bgp_peer_as_override
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - aspath_free
    - aspath_replace_specific_asn
    - aspath_dup
    - aspath_intern
    - peer_af_flag_check
    linkageType: ''
    returnType: void
    signature: "void bgp_peer_as_override(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t\t
      struct peer *peer, struct attr *attr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:1894,1
    - Dst: community_str2com
      Src: /src/frr/bgpd/bgp_route.c:1895,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:1897,1
    - Dst: community_merge
      Src: /src/frr/bgpd/bgp_route.c:1900,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:1900,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:1903,1
    - Dst: community_uniq_sort::community_uniq_sort
      Src: /src/frr/bgpd/bgp_route.c:1905,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:1906,1
    - Dst: community_dup::community_dup
      Src: /src/frr/bgpd/bgp_route.c:1908,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:1911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts:
    - condition: (llgr)
      pos:
        line_end: 1896
        line_start: 1896
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 1914
      start: 1887
    functionDepth: 1
    functionLinenumber: 1887
    functionLinenumberEnd: 1914
    functionName: bgp_attr_add_llgr_community
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - community_uniq_sort::community_uniq_sort
    - community_free
    - community_str2com
    - community_dup::community_dup
    - community_dup
    - community_merge
    - bgp_attr_get_community
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_attr_add_llgr_community(struct attr *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:1923,1
    - Dst: community_str2com
      Src: /src/frr/bgpd/bgp_route.c:1924,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:1926,1
    - Dst: community_merge
      Src: /src/frr/bgpd/bgp_route.c:1929,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:1929,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:1932,1
    - Dst: community_uniq_sort::community_uniq_sort
      Src: /src/frr/bgpd/bgp_route.c:1934,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:1935,1
    - Dst: community_dup::community_dup
      Src: /src/frr/bgpd/bgp_route.c:1937,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:1940,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:1945,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts:
    - condition: (gshut)
      pos:
        line_end: 1925
        line_start: 1925
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 1947
      start: 1916
    functionDepth: 1
    functionLinenumber: 1916
    functionLinenumberEnd: 1947
    functionName: bgp_attr_add_gshut_community
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - community_uniq_sort::community_uniq_sort
    - community_free
    - community_str2com
    - community_dup::community_dup
    - ATTR_FLAG_BIT
    - community_dup
    - community_merge
    - bgp_attr_get_community
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_attr_add_gshut_community(struct attr *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_route.c:1953,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_route.c:1954,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_route.c:1955,1
    - Dst: ADVERTISE_MAP_NAME
      Src: /src/frr/bgpd/bgp_route.c:1958,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:1961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 1965
    functionName: bgp_notify_conditional_adv_scanner
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ADVERTISE_MAP_NAME
    - SUBGRP_SAFI
    - SUBGRP_PEER
    - SUBGRP_AFI
    linkageType: ''
    returnType: void
    signature: void bgp_notify_conditional_adv_scanner(struct update_subgroup *subgrp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:1975,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:1977,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - family
    - attr
    argTypes:
    - uint8_t
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1968
    functionDepth: 0
    functionLinenumber: 1968
    functionLinenumberEnd: 1978
    functionName: subgroup_announce_reset_nhop
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void subgroup_announce_reset_nhop(uint8_t family, struct attr *attr)
  - BBCount: 85
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_route.c:2003,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_route.c:2004,1
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_route.c:2005,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2007,1
    - Dst: SUBGRP_PFIRST
      Src: /src/frr/bgpd/bgp_route.c:2008,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_route.c:2012,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/bgpd/bgp_route.c:2013,1
    - Dst: bgp_path_info_mpath_attr
      Src: /src/frr/bgpd/bgp_route.c:2013,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2016,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:2019,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:2020,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2021,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2037,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2055,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2056,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2057,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2064,1
    - Dst: bgp_addpath_capable
      Src: /src/frr/bgpd/bgp_route.c:2065,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:2069,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_route.c:2069,1
    - Dst: bgp_adv_label
      Src: /src/frr/bgpd/bgp_route.c:2084,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:2085,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2086,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2087,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2102,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2111,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2112,1
    - Dst: bgp_community_filter
      Src: /src/frr/bgpd/bgp_route.c:2118,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2119,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2120,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2127,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_route.c:2128,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2129,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2130,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2137,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2139,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_route.c:2142,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2144,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2146,1
    - Dst: bgp_output_filter
      Src: /src/frr/bgpd/bgp_route.c:2154,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2155,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2156,1
    - Dst: aspath_loop_check
      Src: /src/frr/bgpd/bgp_route.c:2163,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2164,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2165,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2172,1
    - Dst: aspath_loop_check_confed
      Src: /src/frr/bgpd/bgp_route.c:2173,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2174,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2191,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2200,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2206,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2225,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2226,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2233,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgp_route.c:2234,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2235,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2243,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2246,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2289,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_route.c:2291,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_route.c:2293,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2310,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:2312,1
    - Dst: bgp_check_role_applicability
      Src: /src/frr/bgpd/bgp_route.c:2315,1
    - Dst: bgp_otc_egress
      Src: /src/frr/bgpd/bgp_route.c:2316,1
    - Dst: bgp_peer_remove_private_as
      Src: /src/frr/bgpd/bgp_route.c:2319,1
    - Dst: bgp_peer_as_override
      Src: /src/frr/bgpd/bgp_route.c:2320,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:2324,1
    - Dst: prep_for_rmap_apply
      Src: /src/frr/bgpd/bgp_route.c:2330,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:2334,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:2336,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:2338,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:2350,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:2350,1
    - Dst: prep_for_rmap_apply
      Src: /src/frr/bgpd/bgp_route.c:2356,1
    - Dst: RESET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2367,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2373,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:2375,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:2376,1
    - Dst: UNSUPPRESS_MAP
      Src: /src/frr/bgpd/bgp_route.c:2376,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:2379,1
    - Dst: ROUTE_MAP_OUT
      Src: /src/frr/bgpd/bgp_route.c:2379,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:2382,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2386,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2387,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:2390,1
    - Dst: UNSUPPRESS_MAP_NAME
      Src: /src/frr/bgpd/bgp_route.c:2391,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:2392,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:2393,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2407,1
    - Dst: bgp_outbound_policy_exists
      Src: /src/frr/bgpd/bgp_route.c:2408,1
    - Dst: monotime_since
      Src: /src/frr/bgpd/bgp_route.c:2409,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_route.c:2412,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:2414,1
    - Dst: aspath_check_as_sets
      Src: /src/frr/bgpd/bgp_route.c:2426,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2434,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:2437,1
    - Dst: ecommunity_lookup
      Src: /src/frr/bgpd/bgp_route.c:2439,1
    - Dst: ecommunity_lookup
      Src: /src/frr/bgpd/bgp_route.c:2441,1
    - Dst: ecommunity_lookup
      Src: /src/frr/bgpd/bgp_route.c:2443,1
    - Dst: ecommunity_include
      Src: /src/frr/bgpd/bgp_route.c:2445,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2446,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2447,1
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_route.c:2449,1
    - Dst: aspath_check_as_zero
      Src: /src/frr/bgpd/bgp_route.c:2455,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:2458,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:2461,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:2464,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:2476,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:2477,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:2477,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2479,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2480,1
    - Dst: bgp_rmap_nhop_changed
      Src: /src/frr/bgpd/bgp_route.c:2501,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2504,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2508,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2510,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2513,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_route.c:2515,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_route.c:2516,1
    - Dst: bgp_subgrp_multiaccess_check_v4
      Src: /src/frr/bgpd/bgp_route.c:2530,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_route.c:2533,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_route.c:2534,1
    - Dst: bgp_subgrp_multiaccess_check_v6
      Src: /src/frr/bgpd/bgp_route.c:2542,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_route.c:2545,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_route.c:2546,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2555,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_route.c:2561,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:2564,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2565,1
    - Dst: family2str
      Src: /src/frr/bgpd/bgp_route.c:2567,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_route.c:2568,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_route.c:2581,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_route.c:2582,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_route.c:2583,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:2594,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:2597,1
    - Dst: ecommunity_add_origin_validation_state
      Src: /src/frr/bgpd/bgp_route.c:2598,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:2600,1
    - Dst: bgp_path_info_mpath_chkwtd
      Src: /src/frr/bgpd/bgp_route.c:2610,1
    - Dst: bgp_path_info_mpath_cumbw
      Src: /src/frr/bgpd/bgp_route.c:2611,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2612,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:2613,1
    - Dst: ecommunity_replace_linkbw
      Src: /src/frr/bgpd/bgp_route.c:2615,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:2616,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2617,1
    CyclomaticComplexity: 153
    EdgeCount: 153
    ICount: 231
    argCount: 6
    argNames:
    - dest
    - pi
    - subgrp
    - p
    - attr
    - post_attr
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct update_subgroup*
    - struct prefix*
    - struct attr*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2622
      start: 1980
    functionDepth: 4
    functionLinenumber: 1980
    functionLinenumberEnd: 2622
    functionName: subgroup_announce_check
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_addpath_capable
    - ecommunity_str
    - bgp_peer_remove_private_as
    - SUBGRP_INST
    - bgp_check_role_applicability
    - SUBGRP_PFIRST
    - bgp_peer_as_override
    - prep_for_rmap_apply
    - UNSUPPRESS_MAP
    - SUBGRP_PEER
    - IPV4_ADDR_SAME
    - zlog_warn
    - bgp_path_suppressed
    - bgp_path_info_mpath_chkwtd
    - ROUTE_MAP_OUT_NAME
    - BGP_DEBUG
    - bgp_is_valid_label
    - bgp_adv_label
    - bgp_community_filter
    - bgp_debug_update
    - memset
    - ROUTE_MAP_OUT
    - hook_call
    - bgp_path_info_mpath_attr
    - SUBGRP_SAFI
    - bgp_subgrp_multiaccess_check_v6
    - zlog_debug
    - SUBGRP_AFI
    - aspath_loop_check
    - UNSUPPRESS_MAP_NAME
    - aspath_loop_check_confed
    - subgroup_announce_reset_nhop
    - aspath_check_as_zero
    - peer_cap_enhe
    - monotime
    - prefix_list_apply
    - bgp_attr_get_ecommunity
    - family2str
    - ecommunity_lookup
    - bgp_path_info_mpath_count
    - ecommunity_add_origin_validation_state
    - monotime_since
    - bgp_in_graceful_shutdown
    - bgp_output_filter
    - RESET_FLAG
    - ecommunity_include
    - bgp_outbound_policy_exists
    - bgp_attr_get_community
    - bgp_rmap_nhop_changed
    - community_include
    - bgp_attr_add_gshut_community
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - ecommunity_replace_linkbw
    - bgp_path_info_mpath_cumbw
    - route_map_lookup_by_name
    - IPV4_ADDR_COPY
    - SET_FLAG
    - bgp_attr_flush
    - route_map_apply
    - aspath_check_as_sets
    - bgp_subgrp_multiaccess_check_v4
    - bgp_otc_egress
    - bgp_attr_set_ecommunity
    linkageType: ''
    returnType: bool
    signature: "bool subgroup_announce_check(struct bgp_dest *dest, struct bgp_path_info
      *pi,\n\t\t\t     struct update_subgroup *subgrp,\n\t\t\t     const struct prefix
      *p, struct attr *attr,\n\t\t\t     struct attr *post_attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_route.c:2631,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:2637,1
    - Dst: bgp_best_path_select_defer
      Src: /src/frr/bgpd/bgp_route.c:2640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2624
    functionDepth: 1
    functionLinenumber: 2624
    functionLinenumberEnd: 2641
    functionName: bgp_route_select_timer_expire
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_best_path_select_defer
    - XFREE
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_route_select_timer_expire(struct event *thread)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: bgp_mp_list_init
      Src: /src/frr/bgpd/bgp_route.c:2659,1
    - Dst: bgp_debug_bestpath
      Src: /src/frr/bgpd/bgp_route.c:2663,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_route.c:2666,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:2666,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2671,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:2674,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:2676,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:2679,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2681,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:2683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2686,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_route.c:2688,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2695,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:2698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2701,1
    - Dst: aspath_cmp_left
      Src: /src/frr/bgpd/bgp_route.c:2708,1
    - Dst: aspath_cmp_left_confed
      Src: /src/frr/bgpd/bgp_route.c:2710,1
    - Dst: bgp_path_info_cmp
      Src: /src/frr/bgpd/bgp_route.c:2715,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:2720,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:2726,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:2730,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:2732,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_route.c:2736,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2738,1
    - Dst: aspath_get_first_as
      Src: /src/frr/bgpd/bgp_route.c:2741,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:2750,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2754,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:2757,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2761,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:2763,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2775,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_route.c:2776,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2788,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2789,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:2790,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2792,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:2798,1
    - Dst: bgp_path_info_cmp
      Src: /src/frr/bgpd/bgp_route.c:2801,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_route.c:2817,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:2820,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2821,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:2828,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_route.c:2832,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2837,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/bgpd/bgp_route.c:2841,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:2845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2849,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_route.c:2851,1
    - Dst: bgp_path_info_nexthop_cmp
      Src: /src/frr/bgpd/bgp_route.c:2854,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2856,1
    - Dst: bgp_path_info_cmp
      Src: /src/frr/bgpd/bgp_route.c:2863,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2869,1
    - Dst: bgp_mp_list_add
      Src: /src/frr/bgpd/bgp_route.c:2873,1
    - Dst: bgp_path_info_mpath_update
      Src: /src/frr/bgpd/bgp_route.c:2878,1
    - Dst: bgp_path_info_mpath_aggregate_update
      Src: /src/frr/bgpd/bgp_route.c:2880,1
    - Dst: bgp_mp_list_clear
      Src: /src/frr/bgpd/bgp_route.c:2881,1
    - Dst: bgp_addpath_update_ids
      Src: /src/frr/bgpd/bgp_route.c:2883,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 120
    argCount: 6
    argNames:
    - bgp
    - dest
    - mpath_cfg
    - result
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    - struct bgp_maxpaths_cfg*
    - struct bgp_path_info_pair*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2889
      start: 2643
    functionDepth: 3
    functionLinenumber: 2643
    functionLinenumberEnd: 2889
    functionName: bgp_best_selection
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - peer_established
    - bgp_path_info_set_flag
    - bgp_debug_bestpath
    - bgp_path_info_reap
    - snprintf
    - bgp_dest_get_prefix
    - aspath_cmp_left
    - bgp_mp_list_init
    - zlog_debug
    - bgp_mp_list_clear
    - bgp_path_info_cmp
    - bgp_path_info_mpath_aggregate_update
    - bgp_path_info_path_with_addpath_rx_str
    - bgp_mp_list_add
    - bgp_addpath_update_ids
    - aspath_get_first_as
    - bgp_path_info_nexthop_cmp
    - aspath_cmp_left_confed
    - bgp_path_info_unset_flag
    - bgp_path_info_mpath_update
    - CHECK_FLAG
    - BGP_PATH_HOLDDOWN
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void bgp_best_selection(struct bgp *bgp, struct bgp_dest *dest,\n\t\t\tstruct
      bgp_maxpaths_cfg *mpath_cfg,\n\t\t\tstruct bgp_path_info_pair *result, afi_t
      afi,\n\t\t\tsafi_t safi)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:2906,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_route.c:2907,1
    - Dst: SUBGRP_PCOUNT
      Src: /src/frr/bgpd/bgp_route.c:2908,1
    - Dst: SUBGRP_PFIRST
      Src: /src/frr/bgpd/bgp_route.c:2908,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:2911,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:2912,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2915,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:2919,1
    - Dst: bgp_check_advertise
      Src: /src/frr/bgpd/bgp_route.c:2927,1
    - Dst: subgroup_announce_check
      Src: /src/frr/bgpd/bgp_route.c:2930,1
    - Dst: bgp_check_withdrawal
      Src: /src/frr/bgpd/bgp_route.c:2936,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:2938,1
    - Dst: bgp_adj_out_set_subgroup
      Src: /src/frr/bgpd/bgp_route.c:2940,1
    - Dst: bgp_adj_out_unset_subgroup
      Src: /src/frr/bgpd/bgp_route.c:2944,1
    - Dst: bgp_adj_out_unset_subgroup
      Src: /src/frr/bgpd/bgp_route.c:2948,1
    - Dst: bgp_adj_out_unset_subgroup
      Src: /src/frr/bgpd/bgp_route.c:2954,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 6
    argNames:
    - subgrp
    - selected
    - dest
    - afi
    - safi
    - addpath_tx_id
    argTypes:
    - struct update_subgroup*
    - struct bgp_path_info*
    - struct bgp_dest*
    - afi_t
    - safi_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2956
      start: 2895
    functionDepth: 5
    functionLinenumber: 2895
    functionLinenumberEnd: 2956
    functionName: subgroup_process_announce_selected
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_adj_out_set_subgroup
    - memset
    - bgp_dest_get_prefix
    - SUBGRP_INST
    - SUBGRP_PFIRST
    - CHECK_FLAG
    - subgroup_announce_check
    - bgp_check_withdrawal
    - bgp_adj_out_unset_subgroup
    - SUBGRP_PCOUNT
    - zlog_debug
    - bgp_check_advertise
    - BGP_DEBUG
    - bgp_attr_intern
    linkageType: ''
    returnType: void
    signature: "void subgroup_process_announce_selected(struct update_subgroup *subgrp,\n\t\t\t\t\tstruct
      bgp_path_info *selected,\n\t\t\t\t\tstruct bgp_dest *dest, afi_t afi,\n\t\t\t\t\tsafi_t
      safi, uint32_t addpath_tx_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:2966,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:2967,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2969,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2970,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2962
    functionDepth: 1
    functionLinenumber: 2962
    functionLinenumberEnd: 2972
    functionName: bgp_zebra_clear_route_change_flags
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    - BGP_PATH_HOLDDOWN
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_clear_route_change_flags(struct bgp_dest *dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2990,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2991,1
    - Dst: bgp_path_info_mpath_first
      Src: /src/frr/bgpd/bgp_route.c:2997,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_route.c:2998,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:2999,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3000,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - selected
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3006
      start: 2979
    functionDepth: 1
    functionLinenumber: 2979
    functionLinenumberEnd: 3006
    functionName: bgp_zebra_has_route_changed
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - bgp_path_info_mpath_first
    - bgp_path_info_mpath_next
    linkageType: ''
    returnType: bool
    signature: bool bgp_zebra_has_route_changed(struct bgp_path_info *selected)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:3021,1
    - Dst: advertise_type5_routes
      Src: /src/frr/bgpd/bgp_route.c:3026,1
    - Dst: is_route_injectable_into_evpn
      Src: /src/frr/bgpd/bgp_route.c:3027,1
    - Dst: prep_for_rmap_apply
      Src: /src/frr/bgpd/bgp_route.c:3039,1
    - Dst: RESET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3043,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:3045,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:3049,1
    - Dst: bgp_evpn_withdraw_type5_route
      Src: /src/frr/bgpd/bgp_route.c:3050,1
    - Dst: bgp_evpn_advertise_type5_route
      Src: /src/frr/bgpd/bgp_route.c:3053,1
    - Dst: bgp_evpn_advertise_type5_route
      Src: /src/frr/bgpd/bgp_route.c:3056,1
    - Dst: advertise_type5_routes
      Src: /src/frr/bgpd/bgp_route.c:3059,1
    - Dst: is_route_injectable_into_evpn
      Src: /src/frr/bgpd/bgp_route.c:3060,1
    - Dst: bgp_evpn_withdraw_type5_route
      Src: /src/frr/bgpd/bgp_route.c:3061,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 6
    argNames:
    - bgp
    - afi
    - safi
    - dest
    - new_select
    - old_select
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3062
      start: 3016
    functionDepth: 2
    functionLinenumber: 3016
    functionLinenumberEnd: 3062
    functionName: bgp_process_evpn_route_injection
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_dest_get_prefix
    - advertise_type5_routes
    - prep_for_rmap_apply
    - bgp_evpn_advertise_type5_route
    - bgp_attr_flush
    - is_route_injectable_into_evpn
    - route_map_apply
    - bgp_evpn_withdraw_type5_route
    - RESET_FLAG
    linkageType: ''
    returnType: void
    signature: "void bgp_process_evpn_route_injection(struct bgp *bgp, afi_t afi,\n\t\t\t\t\t
      \    safi_t safi, struct bgp_dest *dest,\n\t\t\t\t\t     struct bgp_path_info
      *new_select,\n\t\t\t\t\t     struct bgp_path_info *old_select)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:3081,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3087,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3090,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 4
    argNames:
    - bgp
    - new_select
    - afi
    - label
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - afi_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3098
      start: 3069
    functionDepth: 1
    functionLinenumber: 3069
    functionLinenumberEnd: 3098
    functionName: bgp_lu_need_null_label
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_is_valid_label
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: "bool bgp_lu_need_null_label(struct bgp *bgp,\n\t\t\t\t   const struct
      bgp_path_info *new_select,\n\t\t\t\t   afi_t afi, mpls_label_t *label)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3128,1
    - Dst: bgp_debug_bestpath
      Src: /src/frr/bgpd/bgp_route.c:3130,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3132,1
    - Dst: frr_timestamp
      Src: /src/frr/bgpd/bgp_route.c:3139,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:3144,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:3145,1
    - Dst: bgp_start_routeadv
      Src: /src/frr/bgpd/bgp_route.c:3149,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:3153,1
    - Dst: bgp_debug_bestpath
      Src: /src/frr/bgpd/bgp_route.c:3155,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3157,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_route.c:3158,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_route.c:3159,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3164,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:3165,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3166,1
    - Dst: bgp_best_selection
      Src: /src/frr/bgpd/bgp_route.c:3172,1
    - Dst: bgp_label_index_differs
      Src: /src/frr/bgpd/bgp_route.c:3187,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:3189,1
    - Dst: bgp_lu_need_null_label
      Src: /src/frr/bgpd/bgp_route.c:3194,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3196,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3199,1
    - Dst: bgp_unregister_for_label
      Src: /src/frr/bgpd/bgp_route.c:3202,1
    - Dst: mpls_lse_encode
      Src: /src/frr/bgpd/bgp_route.c:3203,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_route.c:3205,1
    - Dst: bgp_register_for_label
      Src: /src/frr/bgpd/bgp_route.c:3207,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3210,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3212,1
    - Dst: bgp_unregister_for_label
      Src: /src/frr/bgpd/bgp_route.c:3214,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3216,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3217,1
    - Dst: bgp_unregister_for_label
      Src: /src/frr/bgpd/bgp_route.c:3218,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3222,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_route.c:3224,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_route.c:3225,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3232,1
    - Dst: bgp_addpath_is_addpath_used
      Src: /src/frr/bgpd/bgp_route.c:3233,1
    - Dst: bgp_zebra_has_route_changed
      Src: /src/frr/bgpd/bgp_route.c:3234,1
    - Dst: vnc_import_bgp_add_route
      Src: /src/frr/bgpd/bgp_route.c:3236,1
    - Dst: vnc_import_bgp_exterior_add_route
      Src: /src/frr/bgpd/bgp_route.c:3237,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:3239,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgp_route.c:3240,1
    - Dst: bgp_zebra_announce
      Src: /src/frr/bgpd/bgp_route.c:3247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3255,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3256,1
    - Dst: group_announce_route
      Src: /src/frr/bgpd/bgp_route.c:3257,1
    - Dst: group_announce_route
      Src: /src/frr/bgpd/bgp_route.c:3262,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3266,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3272,1
    - Dst: bgp_process_evpn_route_injection
      Src: /src/frr/bgpd/bgp_route.c:3273,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3276,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3277,1
    - Dst: bgp_zebra_clear_route_change_flags
      Src: /src/frr/bgpd/bgp_route.c:3278,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3279,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3285,1
    - Dst: bgp_bump_version
      Src: /src/frr/bgpd/bgp_route.c:3289,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgp_route.c:3292,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_route.c:3293,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:3302,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3305,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:3306,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:3307,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3309,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3310,1
    - Dst: vnc_import_bgp_exterior_del_route
      Src: /src/frr/bgpd/bgp_route.c:3317,1
    - Dst: vnc_import_bgp_del_route
      Src: /src/frr/bgpd/bgp_route.c:3319,1
    - Dst: vnc_import_bgp_exterior_add_route
      Src: /src/frr/bgpd/bgp_route.c:3322,1
    - Dst: vnc_import_bgp_add_route
      Src: /src/frr/bgpd/bgp_route.c:3324,1
    - Dst: group_announce_route
      Src: /src/frr/bgpd/bgp_route.c:3330,1
    - Dst: group_announce_route
      Src: /src/frr/bgpd/bgp_route.c:3335,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:3339,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgp_route.c:3340,1
    - Dst: is_route_parent_evpn
      Src: /src/frr/bgpd/bgp_route.c:3352,1
    - Dst: bgp_zebra_withdraw
      Src: /src/frr/bgpd/bgp_route.c:3353,1
    - Dst: bgp_zebra_announce
      Src: /src/frr/bgpd/bgp_route.c:3355,1
    - Dst: bgp_zebra_withdraw
      Src: /src/frr/bgpd/bgp_route.c:3363,1
    - Dst: bgp_process_evpn_route_injection
      Src: /src/frr/bgpd/bgp_route.c:3367,1
    - Dst: bgp_zebra_clear_route_change_flags
      Src: /src/frr/bgpd/bgp_route.c:3371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3374,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:3375,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3377,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 124
    argCount: 4
    argNames:
    - bgp
    - dest
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3379
      start: 3119
    functionDepth: 4
    functionLinenumber: 3119
    functionLinenumberEnd: 3379
    functionName: bgp_process_main_one
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - safi2str
    - mpls_lse_encode
    - bgp_lu_need_null_label
    - bgp_zebra_clear_route_change_flags
    - bgp_path_info_set_flag
    - afi2str
    - vnc_import_bgp_exterior_add_route
    - bgp_bump_version
    - BGP_DEBUG
    - bgp_register_for_label
    - bgp_zebra_announce_table
    - bgp_label_index_differs
    - bgp_is_valid_label
    - bgp_debug_bestpath
    - bgp_addpath_is_addpath_used
    - bgp_path_info_reap
    - bgp_set_valid_label
    - bgp_dest_get_prefix
    - bgp_fibupd_safi
    - zlog_debug
    - bgp_unregister_for_label
    - is_route_parent_evpn
    - bgp_zebra_withdraw
    - vnc_import_bgp_add_route
    - bgp_start_routeadv
    - bgp_process_evpn_route_injection
    - bgp_zebra_has_route_changed
    - group_announce_route
    - UNSET_FLAG
    - bgp_best_selection
    - event_add_timer
    - bgp_path_info_unset_flag
    - bgp_option_check
    - vnc_import_bgp_del_route
    - CHECK_FLAG
    - vnc_import_bgp_exterior_del_route
    - bgp_lock
    - frr_timestamp
    - bgp_zebra_announce
    linkageType: ''
    returnType: void
    signature: "void bgp_process_main_one(struct bgp *bgp, struct bgp_dest *dest,\n\t\t\t\t
      afi_t afi, safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:3144,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:3145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3146
      start: 3143
    functionDepth: 1
    functionLinenumber: 3143
    functionLinenumberEnd: 3146
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 3
    functionsReached:
    - bgp_fibupd_safi
    - bgp_zebra_announce_table
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_route.c:3391,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:3392,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_route.c:3393,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:3396,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3397,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:3398,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:3403,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:3406,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3407,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3410,1
    - Dst: bgp_process_main_one
      Src: /src/frr/bgpd/bgp_route.c:3412,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:3419,1
    - Dst: bgp_send_delayed_eor
      Src: /src/frr/bgpd/bgp_route.c:3425,1
    - Dst: bgp_zebra_update
      Src: /src/frr/bgpd/bgp_route.c:3427,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_route.c:3432,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_route.c:3441,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3444
      start: 3382
    functionDepth: 5
    functionLinenumber: 3382
    functionLinenumberEnd: 3444
    functionName: bgp_best_path_select_defer
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - bgp_table_top
    - CHECK_FLAG
    - XMALLOC
    - bgp_zebra_update
    - zlog_debug
    - EVENT_OFF
    - get_afi_safi_str
    - UNSET_FLAG
    - XFREE
    - EVENT_ARG
    - event_add_timer
    - BGP_DEBUG
    - bgp_send_delayed_eor
    - bgp_process_main_one
    linkageType: ''
    returnType: void
    signature: void bgp_best_path_select_defer(struct bgp *bgp, afi_t afi, safi_t
      safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3454,1
    - Dst: bgp_process_main_one
      Src: /src/frr/bgpd/bgp_route.c:3455,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:3457,1
    - Dst: STAILQ_FIRST
      Src: /src/frr/bgpd/bgp_route.c:3457,1
    - Dst: STAILQ_EMPTY
      Src: /src/frr/bgpd/bgp_route.c:3461,1
    - Dst: STAILQ_FIRST
      Src: /src/frr/bgpd/bgp_route.c:3462,1
    - Dst: STAILQ_REMOVE_HEAD
      Src: /src/frr/bgpd/bgp_route.c:3463,1
    - Dst: STAILQ_NEXT
      Src: /src/frr/bgpd/bgp_route.c:3464,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:3465,1
    - Dst: bgp_process_main_one
      Src: /src/frr/bgpd/bgp_route.c:3467,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:3469,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_route.c:3470,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts:
    - condition: (STAILQ_FIRST(&pqnode->pqueue) == NULL)
      pos:
        line_end: 3456
        line_start: 3456
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 3474
      start: 3446
    functionDepth: 5
    functionLinenumber: 3446
    functionLinenumberEnd: 3474
    functionName: bgp_process_wq
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - STAILQ_NEXT
    - bgp_dest_unlock_node
    - STAILQ_EMPTY
    - CHECK_FLAG
    - STAILQ_FIRST
    - bgp_dest_table
    - bgp_table_unlock
    - STAILQ_REMOVE_HEAD
    - bgp_process_main_one
    - assert
    linkageType: ''
    returnType: wq_item_status
    signature: wq_item_status bgp_process_wq(struct work_queue *wq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgp_route.c:3480,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:3482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3483
      start: 3476
    functionDepth: 1
    functionLinenumber: 3476
    functionLinenumberEnd: 3483
    functionName: bgp_processq_del
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_unlock
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_processq_del(struct work_queue *wq, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:3490,1
    - Dst: work_queue_new
      Src: /src/frr/bgpd/bgp_route.c:3491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3500
      start: 3485
    functionDepth: 1
    functionLinenumber: 3485
    functionLinenumberEnd: 3500
    functionName: bgp_process_queue_init
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - work_queue_new
    - snprintf
    linkageType: ''
    returnType: void
    signature: void bgp_process_queue_init(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:3506,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgp_route.c:3510,1
    - Dst: STAILQ_INIT
      Src: /src/frr/bgpd/bgp_route.c:3511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3514
      start: 3502
    functionDepth: 1
    functionLinenumber: 3502
    functionLinenumberEnd: 3514
    functionName: bgp_processq_alloc
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - STAILQ_INIT
    - bgp_lock
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_process_queue
    signature: struct bgp_process_queue *bgp_processq_alloc(struct bgp *bgp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3524,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3530,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:3531,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3532,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3537,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:3538,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3539,1
    - Dst: work_queue_item_count
      Src: /src/frr/bgpd/bgp_route.c:3551,1
    - Dst: work_queue_last_item
      Src: /src/frr/bgpd/bgp_route.c:3552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3555,1
    - Dst: bgp_processq_alloc
      Src: /src/frr/bgpd/bgp_route.c:3558,1
    - Dst: bgp_processq_alloc
      Src: /src/frr/bgpd/bgp_route.c:3562,1
    - Dst: bgp_table_lock
      Src: /src/frr/bgpd/bgp_route.c:3564,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:3564,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3566,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_route.c:3567,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:3570,1
    - Dst: STAILQ_NEXT
      Src: /src/frr/bgpd/bgp_route.c:3570,1
    - Dst: STAILQ_INSERT_TAIL
      Src: /src/frr/bgpd/bgp_route.c:3571,1
    - Dst: work_queue_add
      Src: /src/frr/bgpd/bgp_route.c:3575,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - bgp
    - dest
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (STAILQ_NEXT(dest, pq) == NULL)
      pos:
        line_end: 3569
        line_start: 3569
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 3578
      start: 3516
    functionDepth: 2
    functionLinenumber: 3516
    functionLinenumberEnd: 3578
    functionName: bgp_process
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 12
    functionsReached:
    - work_queue_last_item
    - bgp_table_lock
    - STAILQ_NEXT
    - STAILQ_INSERT_TAIL
    - bgp_processq_alloc
    - CHECK_FLAG
    - work_queue_add
    - work_queue_item_count
    - zlog_debug
    - bgp_dest_table
    - SET_FLAG
    - bgp_dest_lock_node
    - BGP_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_process(struct bgp *bgp, struct bgp_dest *dest, afi_t afi,
      safi_t safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_processq_alloc
      Src: /src/frr/bgpd/bgp_route.c:3587,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3589,1
    - Dst: work_queue_add
      Src: /src/frr/bgpd/bgp_route.c:3590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3591
      start: 3580
    functionDepth: 2
    functionLinenumber: 3580
    functionLinenumberEnd: 3591
    functionName: bgp_add_eoiu_mark
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_processq_alloc
    - SET_FLAG
    - work_queue_add
    linkageType: ''
    returnType: void
    signature: void bgp_add_eoiu_mark(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_route.c:3597,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_route.c:3600,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3601,1
    - Dst: peer_clear
      Src: /src/frr/bgpd/bgp_route.c:3605,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_route.c:3605,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3606,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3593
    functionDepth: 1
    functionLinenumber: 3593
    functionLinenumberEnd: 3607
    functionName: bgp_maximum_prefix_restart_timer
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - peer_clear
    - zlog_debug
    - bgp_debug_neighbor_events
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_maximum_prefix_restart_timer(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:3619,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:3619,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:3621,1
    - Dst: bgp_input_filter
      Src: /src/frr/bgpd/bgp_route.c:3625,1
    - Dst: bgp_input_modifier
      Src: /src/frr/bgpd/bgp_route.c:3629,1
    - Dst: ROUTE_MAP_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:3631,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:3639,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3644
      start: 3609
    functionDepth: 4
    functionLinenumber: 3609
    functionLinenumberEnd: 3644
    functionName: bgp_filtered_routes_count
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_dest_get_prefix
    - ROUTE_MAP_IN_NAME
    - bgp_attr_flush
    - bgp_input_modifier
    - bgp_input_filter
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t bgp_filtered_routes_count(struct peer *peer, afi_t afi,\n\t\t\t\t\t
      \ safi_t safi)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3651,1
    - Dst: bgp_filtered_routes_count
      Src: /src/frr/bgpd/bgp_route.c:3653,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3657,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3661,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_route.c:3666,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:3668,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3672,1
    - Dst: afi_int2iana
      Src: /src/frr/bgpd/bgp_route.c:3677,1
    - Dst: safi_int2iana
      Src: /src/frr/bgpd/bgp_route.c:3678,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3690,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_route.c:3691,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_route.c:3697,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_route.c:3705,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3706,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_route.c:3710,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3717,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3722,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_route.c:3727,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:3729,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3731,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3734,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - always
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3737
      start: 3646
    functionDepth: 5
    functionLinenumber: 3646
    functionLinenumberEnd: 3737
    functionName: bgp_maximum_prefix_overflow
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_notify_send_with_data
    - zlog_info
    - afi_int2iana
    - CHECK_FLAG
    - BGP_TIMER_ON
    - peer_dynamic_neighbor
    - bgp_filtered_routes_count
    - safi_int2iana
    - SET_FLAG
    - zlog_debug
    - get_afi_safi_str
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    linkageType: ''
    returnType: bool
    signature: "bool bgp_maximum_prefix_overflow(struct peer *peer, afi_t afi, safi_t
      safi,\n\t\t\t\t int always)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:3749,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:3749,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3752,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:3753,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3758,1
    - Dst: bgp_dest_set_defer_flag
      Src: /src/frr/bgpd/bgp_route.c:3760,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3763,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3764,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:3771,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:3772,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 5
    argNames:
    - dest
    - pi
    - peer
    - afi
    - safi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3773
      start: 3742
    functionDepth: 3
    functionLinenumber: 3742
    functionLinenumberEnd: 3773
    functionName: bgp_rib_remove
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - hook_call
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_path_info_delete
    - UNSET_FLAG
    - bgp_dest_set_defer_flag
    - bgp_process
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: void
    signature: "void bgp_rib_remove(struct bgp_dest *dest, struct bgp_path_info *pi,\n\t\t
      \   struct peer *peer, afi_t afi, safi_t safi)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:3779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3784,1
    - Dst: bgp_damp_withdraw
      Src: /src/frr/bgpd/bgp_route.c:3786,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:3788,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:3798,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:3800,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:3801,1
    - Dst: vnc_import_bgp_del_vnc_host_route_mode_resolve_nve
      Src: /src/frr/bgpd/bgp_route.c:3803,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:3806,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3809,1
    - Dst: vnc_import_bgp_del_route
      Src: /src/frr/bgpd/bgp_route.c:3811,1
    - Dst: vnc_import_bgp_exterior_del_route
      Src: /src/frr/bgpd/bgp_route.c:3812,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_route.c:3819,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:3821,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 6
    argNames:
    - dest
    - pi
    - peer
    - afi
    - safi
    - prd
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct peer*
    - afi_t
    - safi_t
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3822
      start: 3775
    functionDepth: 13
    functionLinenumber: 3775
    functionLinenumberEnd: 3822
    functionName: bgp_rib_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - vnc_import_bgp_del_vnc_host_route_mode_resolve_nve
    - vnc_import_bgp_del_route
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_damp_withdraw
    - bgp_dest_has_bgp_path_info_data
    - vnc_import_bgp_exterior_del_route
    - bgp_rib_remove
    - bgp_evpn_unimport_route
    - bgp_aggregate_decrement
    - bgp_dest_get_bgp_table_info
    - bgp_node_get
    linkageType: ''
    returnType: void
    signature: "void bgp_rib_withdraw(struct bgp_dest *dest, struct bgp_path_info
      *pi,\n\t\t\t     struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t     struct
      prefix_rd *prd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:3831,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:3837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 6
    argNames:
    - type
    - sub_type
    - instance
    - peer
    - attr
    - dest
    argTypes:
    - int
    - int
    - unsigned short
    - struct peer*
    - struct attr*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3840
      start: 3824
    functionDepth: 1
    functionLinenumber: 3824
    functionLinenumberEnd: 3840
    functionName: info_make
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 3
    functionsReached:
    - XCALLOC::XCALLOC
    - monotime
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *info_make(int type, int sub_type, unsigned short
      instance,\n\t\t\t\tstruct peer *peer, struct attr *attr,\n\t\t\t\tstruct bgp_dest
      *dest)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:3870,1
    - Dst: ipv4_unicast_valid
      Src: /src/frr/bgpd/bgp_route.c:3872,1
    - Dst: bgp_nexthop_self
      Src: /src/frr/bgpd/bgp_route.c:3873,1
    - Dst: ipv4_unicast_valid
      Src: /src/frr/bgpd/bgp_route.c:3892,1
    - Dst: bgp_nexthop_self
      Src: /src/frr/bgpd/bgp_route.c:3894,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_route.c:3900,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/bgpd/bgp_route.c:3902,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_route.c:3903,1
    - Dst: bgp_nexthop_self
      Src: /src/frr/bgpd/bgp_route.c:3905,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/bgpd/bgp_route.c:3909,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_route.c:3910,1
    - Dst: bgp_nexthop_self
      Src: /src/frr/bgpd/bgp_route.c:3912,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 28
    argCount: 7
    argNames:
    - bgp
    - afi
    - safi
    - type
    - stype
    - attr
    - dest
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - uint8_t
    - uint8_t
    - struct attr*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3923
      start: 3843
    functionDepth: 1
    functionLinenumber: 3843
    functionLinenumberEnd: 3923
    functionName: bgp_update_martian_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - ipv4_unicast_valid
    - ATTR_FLAG_BIT
    - IN6_IS_ADDR_LOOPBACK
    - bgp_nexthop_self
    - IN6_IS_ADDR_MULTICAST
    linkageType: ''
    returnType: bool
    signature: "bool bgp_update_martian_nexthop(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\tuint8_t type, uint8_t stype, struct attr *attr,\n\t\t\t\tstruct
      bgp_dest *dest)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:3932,1
    - Dst: community_str2com
      Src: /src/frr/bgpd/bgp_route.c:3933,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:3935,1
    - Dst: community_merge
      Src: /src/frr/bgpd/bgp_route.c:3938,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:3938,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:3941,1
    - Dst: community_uniq_sort::community_uniq_sort
      Src: /src/frr/bgpd/bgp_route.c:3943,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:3944,1
    - Dst: community_dup::community_dup
      Src: /src/frr/bgpd/bgp_route.c:3946,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:3949,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts:
    - condition: (no_export)
      pos:
        line_end: 3934
        line_start: 3934
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 3952
      start: 3925
    functionDepth: 1
    functionLinenumber: 3925
    functionLinenumberEnd: 3952
    functionName: bgp_attr_add_no_export_community
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - community_uniq_sort::community_uniq_sort
    - community_free
    - community_str2com
    - community_dup::community_dup
    - community_dup
    - community_merge
    - bgp_attr_get_community
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_attr_add_no_export_community(struct attr *attr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:3966,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:3970,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:3971,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:3973,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:3980,1
    - Dst: ecommunity_include
      Src: /src/frr/bgpd/bgp_route.c:3985,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:3988,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:3989,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:3990,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 6
    argNames:
    - peer
    - afi
    - safi
    - attr
    - prefix
    - sub_type
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct attr*
    - struct prefix*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4006
      start: 3954
    functionDepth: 1
    functionLinenumber: 3954
    functionLinenumberEnd: 4006
    functionName: bgp_accept_own
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - community_include
    - bgp_debug_update
    - CHECK_FLAG
    - bgp_attr_get_ecommunity
    - ATTR_FLAG_BIT
    - zlog_debug
    - ALL_LIST_ELEMENTS
    - ecommunity_include
    - bgp_attr_get_community
    linkageType: ''
    returnType: bool
    signature: "bool bgp_accept_own(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \  struct attr *attr, const struct prefix *prefix,\n\t\t\t   int *sub_type)"
  - BBCount: 124
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace_enabled
      Src: /src/frr/bgpd/bgp_route.c:4034,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_route.c:4037,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_route.c:4038,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:4052,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:4057,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:4062,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:4065,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4071,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:4080,1
    - Dst: bgp_adj_in_set
      Src: /src/frr/bgpd/bgp_route.c:4083,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4087,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:4091,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4101,1
    - Dst: aspath_loop_check
      Src: /src/frr/bgpd/bgp_route.c:4105,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4117,1
    - Dst: aspath_get_last_as
      Src: /src/frr/bgpd/bgp_route.c:4118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4121,1
    - Dst: aspath_loop_check
      Src: /src/frr/bgpd/bgp_route.c:4128,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4137,1
    - Dst: aspath_loop_check_confed
      Src: /src/frr/bgpd/bgp_route.c:4138,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:4150,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_route.c:4151,1
    - Dst: bgp_accept_own
      Src: /src/frr/bgpd/bgp_route.c:4153,1
    - Dst: bgp_cluster_filter
      Src: /src/frr/bgpd/bgp_route.c:4162,1
    - Dst: bgp_input_filter
      Src: /src/frr/bgpd/bgp_route.c:4169,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:4178,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:4179,1
    - Dst: ecommunity_lookup
      Src: /src/frr/bgpd/bgp_route.c:4181,1
    - Dst: ecommunity_node_target_match
      Src: /src/frr/bgpd/bgp_route.c:4183,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4199,1
    - Dst: bgp_inbound_policy_exists
      Src: /src/frr/bgpd/bgp_route.c:4200,1
    - Dst: monotime_since
      Src: /src/frr/bgpd/bgp_route.c:4203,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_route.c:4206,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:4208,1
    - Dst: aspath_check_as_sets
      Src: /src/frr/bgpd/bgp_route.c:4220,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:4234,1
    - Dst: bgp_input_modifier
      Src: /src/frr/bgpd/bgp_route.c:4243,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:4248,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4253,1
    - Dst: bgp_zebra_withdraw
      Src: /src/frr/bgpd/bgp_route.c:4255,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:4269,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:4270,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:4270,1
    - Dst: bgp_attr_add_no_export_community
      Src: /src/frr/bgpd/bgp_route.c:4272,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:4276,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:4277,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:4277,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:4279,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:4285,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4286,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:4287,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4291,1
    - Dst: bgp_update_martian_nexthop
      Src: /src/frr/bgpd/bgp_route.c:4292,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:4296,1
    - Dst: bgp_mac_entry_exists
      Src: /src/frr/bgpd/bgp_route.c:4300,1
    - Dst: bgp_mac_exist
      Src: /src/frr/bgpd/bgp_route.c:4300,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:4303,1
    - Dst: bgp_check_role_applicability
      Src: /src/frr/bgpd/bgp_route.c:4307,1
    - Dst: bgp_otc_filter
      Src: /src/frr/bgpd/bgp_route.c:4308,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:4310,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:4321,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_route.c:4326,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:4326,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:4330,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:4332,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:4335,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:4338,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:4342,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_route.c:4343,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:4345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4348,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_route.c:4351,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:4351,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4354,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4357,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:4358,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:4359,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4364,1
    - Dst: bgp_damp_update
      Src: /src/frr/bgpd/bgp_route.c:4368,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:4370,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:4372,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:4376,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4378,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:4385,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4390,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4396,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:4397,1
    - Dst: bgp_dest_set_defer_flag
      Src: /src/frr/bgpd/bgp_route.c:4399,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:4400,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4404,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:4405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4411,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:4412,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:4413,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4417,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_route.c:4422,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:4436,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:4440,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:4441,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4445,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4449,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:4450,1
    - Dst: bgp_dest_set_defer_flag
      Src: /src/frr/bgpd/bgp_route.c:4451,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:4455,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4463,1
    - Dst: bgp_damp_withdraw
      Src: /src/frr/bgpd/bgp_route.c:4464,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:4471,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:4473,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:4474,1
    - Dst: vnc_import_bgp_del_vnc_host_route_mode_resolve_nve
      Src: /src/frr/bgpd/bgp_route.c:4476,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4479,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4483,1
    - Dst: vnc_import_bgp_del_route
      Src: /src/frr/bgpd/bgp_route.c:4488,1
    - Dst: vnc_import_bgp_exterior_del_route
      Src: /src/frr/bgpd/bgp_route.c:4489,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:4504,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:4506,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_route.c:4509,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:4510,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:4511,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:4513,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4514,1
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_route.c:4516,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:4517,1
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_route.c:4519,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:4520,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_route.c:4523,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:4526,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:4532,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:4537,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:4539,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_route.c:4544,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:4549,1
    - Dst: sid_diff
      Src: /src/frr/bgpd/bgp_route.c:4550,1
    - Dst: sid_copy
      Src: /src/frr/bgpd/bgp_route.c:4552,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:4581,1
    - Dst: sid_diff
      Src: /src/frr/bgpd/bgp_route.c:4582,1
    - Dst: sid_copy
      Src: /src/frr/bgpd/bgp_route.c:4584,1
    - Dst: vnc_import_bgp_add_route
      Src: /src/frr/bgpd/bgp_route.c:4607,1
    - Dst: vnc_import_bgp_exterior_add_route
      Src: /src/frr/bgpd/bgp_route.c:4608,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4614,1
    - Dst: bgp_damp_update
      Src: /src/frr/bgpd/bgp_route.c:4617,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4619,1
    - Dst: bgp_evpn_is_prefix_nht_supported
      Src: /src/frr/bgpd/bgp_route.c:4629,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4632,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4634,1
    - Dst: BGP_ATTR_NH_AFI
      Src: /src/frr/bgpd/bgp_route.c:4645,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_route.c:4647,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4650,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:4651,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:4654,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4655,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:4659,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:4664,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:4667,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:4675,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:4677,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:4678,1
    - Dst: vnc_import_bgp_add_vnc_host_route_mode_resolve_nve
      Src: /src/frr/bgpd/bgp_route.c:4680,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4701,1
    - Dst: bgp_evpn_import_route
      Src: /src/frr/bgpd/bgp_route.c:4702,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:4705,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:4707,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4708,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:4714,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:4714,1
    - Dst: vpn_leak_to_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:4718,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:4723,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:4725,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:4729,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4734,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:4737,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:4738,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:4744,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4746,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:4751,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4754,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:4758,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:4762,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:4764,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_route.c:4769,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:4774,1
    - Dst: sid_copy
      Src: /src/frr/bgpd/bgp_route.c:4776,1
    - Dst: sid_copy
      Src: /src/frr/bgpd/bgp_route.c:4790,1
    - Dst: bgp_evpn_is_prefix_nht_supported
      Src: /src/frr/bgpd/bgp_route.c:4798,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4801,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4803,1
    - Dst: BGP_ATTR_NH_AFI
      Src: /src/frr/bgpd/bgp_route.c:4809,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:4809,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_route.c:4811,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4813,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:4814,1
    - Dst: BGP_PATH_VALID::BGP_PATH_VALID
      Src: /src/frr/bgpd/bgp_route.c:4814,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:4816,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4817,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:4823,1
    - Dst: BGP_PATH_ACCEPT_OWN::BGP_PATH_ACCEPT_OWN
      Src: /src/frr/bgpd/bgp_route.c:4823,1
    - Dst: bgp_maximum_prefix_overflow
      Src: /src/frr/bgpd/bgp_route.c:4831,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:4833,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4847,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:4854,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:4855,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:4856,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4861,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4866,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:4866,1
    - Dst: bgp_evpn_import_route
      Src: /src/frr/bgpd/bgp_route.c:4867,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:4869,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:4872,1
    - Dst: vpn_leak_to_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:4881,1
    - Dst: prd::prd
      Src: /src/frr/bgpd/bgp_route.c:4881,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:4885,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:4887,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:4891,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:4896,1
    - Dst: bgp_path_info_extra_free
      Src: /src/frr/bgpd/bgp_route.c:4911,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:4911,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:4915,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:4917,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4919,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:4924,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:4927,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_route.c:4935,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:4941,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:4941,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:4946,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:4949,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:4952,1
    - Dst: rfapiProcessWithdraw
      Src: /src/frr/bgpd/bgp_route.c:4961,1
    CyclomaticComplexity: 214
    EdgeCount: 214
    ICount: 466
    argCount: 13
    argNames:
    - peer
    - p
    - addpath_id
    - attr
    - afi
    - safi
    - type
    - sub_type
    - prd
    - label
    - num_labels
    - soft_reconfig
    - evpn
    argTypes:
    - struct peer*
    - struct prefix*
    - uint32_t
    - struct attr*
    - afi_t
    - safi_t
    - int
    - int
    - struct prefix_rd*
    - mpls_label_t*
    - uint32_t
    - int
    - struct bgp_route_evpn*
    assertStmts:
    - condition: (label != NULL)
      pos:
        line_end: 4064
        line_start: 4064
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 4967
      start: 4008
    functionDepth: 13
    functionLinenumber: 4008
    functionLinenumberEnd: 4967
    functionName: bgp_update
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 3
    functionsReached:
    - bgp_path_info_restore
    - vnc_import_bgp_add_vnc_host_route_mode_resolve_nve
    - IPV4_ADDR_SAME
    - memset
    - bgp_evpn_import_route
    - bgp_adj_in_set
    - ecommunity_lookup
    - bgp_evpn_is_prefix_nht_supported
    - monotime_since
    - vpn_leak_from_vrf_update
    - bgp_in_graceful_shutdown
    - flags::flags
    - vpn_leak_from_vrf_withdraw
    - bgp_mac_exist
    - memcpy
    - vpn_leak_to_vrf_withdraw
    - bgp_cluster_filter
    - vnc_import_bgp_exterior_del_route
    - bgp_inbound_policy_exists
    - bgp_dest_get_bgp_path_info
    - bgp_attr_set_ecommunity
    - BGP_PATH_ACCEPT_OWN::BGP_PATH_ACCEPT_OWN
    - bgp_dest_get_bgp_table_info
    - bgp_attr_add_no_export_community
    - bgp_path_info_set_flag
    - vnc_import_bgp_exterior_add_route
    - bgp_input_filter
    - bgp_attr_intern
    - bgp_is_valid_label
    - vnc_import_bgp_del_vnc_host_route_mode_resolve_nve
    - bgp_find_or_add_nexthop
    - frrtrace_enabled
    - bgp_maximum_prefix_overflow
    - ecommunity_merge
    - vnc_import_bgp_add_route
    - aspath_loop_check_confed
    - bgp_attr_get_ecommunity
    - monotime
    - bgp_path_info_extra_free
    - bgp_dest_set_defer_flag
    - bgp_input_modifier
    - bgp_damp_update
    - rfapiProcessUpdate
    - bgp_path_info_unset_flag
    - ecommunity_free
    - BGP_PATH_VALID::BGP_PATH_VALID
    - bgp_attr_add_gshut_community
    - info_make::info_make
    - vnc_import_bgp_del_route
    - bgp_otc_filter
    - bgp_update_martian_nexthop
    - BGP_ATTR_NH_AFI
    - bgp_path_info_delete
    - bgp_rib_remove
    - ecommunity_dup
    - bgp_node_get
    - bgp_accept_own
    - ecommunity_str
    - memcmp
    - frrtrace
    - BGP_DEBUG
    - bgp_set_valid_label
    - bgp_get_default
    - zlog_debug
    - bgp_zebra_withdraw
    - prd::prd
    - aspath_loop_check
    - assert
    - bgp_dest_unlock_node
    - vpn_leak_to_vrf_update
    - attr::attr
    - extra::extra
    - ecommunity_node_target_match
    - bgp_attr_get_community
    - community_include
    - sid_copy
    - bgp_damp_withdraw
    - bgp_dest_has_bgp_path_info_data
    - bgp_attr_flush
    - prefix2str
    - bgp_attr_unintern
    - bgp_check_role_applicability
    - zlog_warn
    - sid_diff
    - bgp_aggregate_decrement
    - attrhash_cmp
    - bgp_path_info_extra_get
    - bgp_debug_update
    - hook_call
    - bgp_debug_rdpfxpath2str
    - bgp_mac_entry_exists
    - bgp_afi_node_get
    - decode_label
    - ecommunity_cmp
    - aspath_get_last_as
    - bgp_process
    - rfapiProcessWithdraw
    - bgp_aggregate_increment
    - bgp_unlink_nexthop
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - aspath_check_as_sets
    - bgp_evpn_unimport_route
    linkageType: ''
    returnType: void
    signature: "void bgp_update(struct peer *peer, const struct prefix *p, uint32_t
      addpath_id,\n\t\tstruct attr *attr, afi_t afi, safi_t safi, int type,\n\t\tint
      sub_type, struct prefix_rd *prd, mpls_label_t *label,\n\t\tuint32_t num_labels,
      int soft_reconfig,\n\t\tstruct bgp_route_evpn *evpn)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: rfapiProcessWithdraw
      Src: /src/frr/bgpd/bgp_route.c:4981,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:4989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5002,1
    - Dst: bgp_adj_in_unset
      Src: /src/frr/bgpd/bgp_route.c:5004,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:5007,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:5008,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:5012,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5016,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5021,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:5028,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:5029,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:5032,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5037,1
    - Dst: bgp_rib_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5038,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5042,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:5042,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5047,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_route.c:5049,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_route.c:5050,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:5053,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5057,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 38
    argCount: 11
    argNames:
    - peer
    - p
    - addpath_id
    - afi
    - safi
    - type
    - sub_type
    - prd
    - label
    - num_labels
    - evpn
    argTypes:
    - struct peer*
    - struct prefix*
    - uint32_t
    - afi_t
    - safi_t
    - int
    - int
    - struct prefix_rd*
    - mpls_label_t*
    - uint32_t
    - struct bgp_route_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5060
      start: 4969
    functionDepth: 14
    functionLinenumber: 4969
    functionLinenumberEnd: 5060
    functionName: bgp_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 3
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_adj_in_unset
    - bgp_afi_node_get
    - bgp_debug_update
    - rfapiProcessWithdraw
    - bgp_debug_rdpfxpath2str
    - bgp_get_default
    - CHECK_FLAG
    - vpn_leak_to_vrf_withdraw
    - zlog_debug
    - vpn_leak_from_vrf_withdraw
    - bgp_dest_get_bgp_path_info
    - bgp_rib_withdraw
    linkageType: ''
    returnType: void
    signature: "void bgp_withdraw(struct peer *peer, const struct prefix *p,\n\t\t
      \ uint32_t addpath_id, afi_t afi, safi_t safi, int type,\n\t\t  int sub_type,
      struct prefix_rd *prd, mpls_label_t *label,\n\t\t  uint32_t num_labels, struct
      bgp_route_evpn *evpn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_subgroup
      Src: /src/frr/bgpd/bgp_route.c:5066,1
    - Dst: subgroup_default_originate
      Src: /src/frr/bgpd/bgp_route.c:5067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - withdraw
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5068
      start: 5062
    functionDepth: 1
    functionLinenumber: 5062
    functionLinenumberEnd: 5068
    functionName: bgp_default_originate
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - subgroup_default_originate
    - peer_subgroup
    linkageType: ''
    returnType: void
    signature: "void bgp_default_originate(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \  int withdraw)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_route.c:5079,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - paf
    argTypes:
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5080
      start: 5074
    functionDepth: 1
    functionLinenumber: 5074
    functionLinenumberEnd: 5080
    functionName: bgp_stop_announce_route_timer
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void bgp_stop_announce_route_timer(struct peer_af *paf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_route.c:5093,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_route.c:5096,1
    - Dst: peer_af_announce_route
      Src: /src/frr/bgpd/bgp_route.c:5102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5106
      start: 5088
    functionDepth: 1
    functionLinenumber: 5088
    functionLinenumberEnd: 5106
    functionName: bgp_announce_route_timer_expired
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - peer_established
    - peer_af_announce_route
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_announce_route_timer_expired(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_route.c:5121,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_route.c:5124,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5134,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/bgp_route.c:5142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - force
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5147
      start: 5116
    functionDepth: 1
    functionLinenumber: 5116
    functionLinenumberEnd: 5147
    functionName: bgp_announce_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - peer_af_find
    - PAF_SUBGRP
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_announce_route(struct peer *peer, afi_t afi, safi_t safi,
      bool force)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:5163,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_route.c:5164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5165
      start: 5158
    functionDepth: 2
    functionLinenumber: 5158
    functionLinenumberEnd: 5165
    functionName: bgp_announce_route_all
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_announce_route
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: void bgp_announce_route_all(struct peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5179,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5179,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5185,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5187,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - table
    - flag
    argTypes:
    - struct bgp_table*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5189
      start: 5171
    functionDepth: 1
    functionLinenumber: 5171
    functionLinenumberEnd: 5189
    functionName: bgp_soft_reconfig_table_flag
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_table_top
    - bgp_route_next
    - SET_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_soft_reconfig_table_flag(struct bgp_table *table, bool flag)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5201,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:5210,1
    - Dst: bgp_attr_get_evpn_overlay
      Src: /src/frr/bgpd/bgp_route.c:5210,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:5213,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_route.c:5215,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5215,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 6
    argNames:
    - peer
    - dest
    - ain
    - afi
    - safi
    - prd
    argTypes:
    - struct peer*
    - struct bgp_dest*
    - struct bgp_adj_in*
    - afi_t
    - safi_t
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5218
      start: 5191
    functionDepth: 14
    functionLinenumber: 5191
    functionLinenumberEnd: 5218
    functionName: bgp_soft_reconfig_table_update
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - memset
    - bgp_dest_get_prefix
    - bgp_dest_get_bgp_path_info
    - bgp_update
    - memcpy
    - bgp_attr_get_evpn_overlay
    linkageType: ''
    returnType: void
    signature: "void bgp_soft_reconfig_table_update(struct peer *peer,\n\t\t\t\t\t
      \  struct bgp_dest *dest,\n\t\t\t\t\t   struct bgp_adj_in *ain, afi_t afi,\n\t\t\t\t\t
      \  safi_t safi, struct prefix_rd *prd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5230,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5230,1
    - Dst: bgp_soft_reconfig_table_update
      Src: /src/frr/bgpd/bgp_route.c:5235,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 5
    argNames:
    - peer
    - afi
    - safi
    - table
    - prd
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct bgp_table*
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5238
      start: 5220
    functionDepth: 15
    functionLinenumber: 5220
    functionLinenumberEnd: 5238
    functionName: bgp_soft_reconfig_table
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_table_top
    - bgp_route_next
    - bgp_soft_reconfig_table_update
    linkageType: ''
    returnType: void
    signature: "void bgp_soft_reconfig_table(struct peer *peer, afi_t afi, safi_t
      safi,\n\t\t\t\t    struct bgp_table *table,\n\t\t\t\t    struct prefix_rd *prd)"
  - BBCount: 746
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_route.c:5258,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5270,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5272,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5275,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:5278,1
    - Dst: bgp_soft_reconfig_table_update
      Src: /src/frr/bgpd/bgp_route.c:5283,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:5303,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_route.c:5304,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_route.c:5305,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:5308,1
    - Dst: bgp_soft_reconfig_table_task_cancel
      Src: /src/frr/bgpd/bgp_route.c:5320,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:5339,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_route.c:5343,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_route.c:5347,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:5350,1
    - Dst: bgp_soft_reconfig_table_flag
      Src: /src/frr/bgpd/bgp_route.c:5351,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_route.c:5352,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgp_route.c:5359,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_route.c:5379,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:5384,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_route.c:5390,1
    - Dst: bgp_soft_reconfig_table_flag
      Src: /src/frr/bgpd/bgp_route.c:5395,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_route.c:5398,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_route.c:5414,1
    - Dst: bgp_stop_announce_route_timer
      Src: /src/frr/bgpd/bgp_route.c:5416,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5418,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5419,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5420,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5425,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:5430,1
    - Dst: bgp_soft_reconfig_table
      Src: /src/frr/bgpd/bgp_route.c:5432,1
    - Dst: bgp_clear_route_node
      Src: /src/frr/bgpd/bgp_route.c:5443,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5450,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5451,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:5453,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5459,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5464,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5466,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5468,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5469,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_route.c:5474,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_route.c:5475,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5477,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5482,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:5482,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5487,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:5490,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5500,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5502,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_route.c:5503,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:5504,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_route.c:5512,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_route.c:5514,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:5521,1
    - Dst: work_queue_new
      Src: /src/frr/bgpd/bgp_route.c:5524,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5549,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5549,1
    - Dst: bgp_adj_in_remove
      Src: /src/frr/bgpd/bgp_route.c:5594,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5599,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:5605,1
    - Dst: bgp_table_lock
      Src: /src/frr/bgpd/bgp_route.c:5610,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5610,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_route.c:5611,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:5612,1
    - Dst: work_queue_add
      Src: /src/frr/bgpd/bgp_route.c:5616,1
    - Dst: bgp_clear_node_queue_init
      Src: /src/frr/bgpd/bgp_route.c:5630,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_route.c:5650,1
    - Dst: bgp_clear_route_table
      Src: /src/frr/bgpd/bgp_route.c:5653,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5655,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5656,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5657,1
    - Dst: bgp_clear_route_table
      Src: /src/frr/bgpd/bgp_route.c:5661,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_route.c:5666,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:5674,1
    - Dst: bgp_clear_route
      Src: /src/frr/bgpd/bgp_route.c:5675,1
    - Dst: rfapiProcessPeerDown
      Src: /src/frr/bgpd/bgp_route.c:5678,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5694,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5694,1
    - Dst: bgp_adj_in_remove
      Src: /src/frr/bgpd/bgp_route.c:5701,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5720,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5721,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5725,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5729,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5730,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5731,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5735,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5738,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:5739,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5740,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5744,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5756,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:5758,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5763,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5764,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5765,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5769,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5771,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:5772,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5773,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5776,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5783,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:5784,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:5787,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5800,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5801,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5802,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5806,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5807,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5808,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5813,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5816,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5818,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_route.c:5821,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:5823,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_route.c:5826,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_route.c:5827,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5828,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:5831,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5839,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5840,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5841,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5848,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5849,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_route.c:5851,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:5852,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_route.c:5854,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_route.c:5855,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5856,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:5859,1
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5873,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5873,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5874,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5875,1
    - Dst: ROUTE_MAP_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5886,1
    - Dst: PREFIX_LIST_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5886,1
    - Dst: FILTER_LIST_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5887,1
    - Dst: DISTRIBUTE_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5888,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5900,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5900,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5901,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5902,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_route.c:5908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5911,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:5917,1
    - Dst: bgp_zebra_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5918,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:5921,1
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5935,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5943,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5944,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5945,1
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5947,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgp_route.c:5948,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5949,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5950,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5954,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5955,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5956,1
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5958,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgp_route.c:5959,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5960,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5961,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5966,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5967,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5968,1
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5970,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgp_route.c:5971,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5972,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5973,1
    - Dst: vty_reset
      Src: /src/frr/bgpd/bgp_route.c:5980,1
    - Dst: bgp_zclient_reset
      Src: /src/frr/bgpd/bgp_route.c:5981,1
    - Dst: access_list_reset
      Src: /src/frr/bgpd/bgp_route.c:5982,1
    - Dst: prefix_list_reset
      Src: /src/frr/bgpd/bgp_route.c:5983,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5988,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5989,1
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_route.c:6012,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:6019,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6027,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:6028,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_route.c:6036,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_route.c:6039,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6040,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_route.c:6048,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6052,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6062,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6070,1
    - Dst: IN_CLASSD
      Src: /src/frr/bgpd/bgp_route.c:6074,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:6074,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6084,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_route.c:6094,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6095,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_route.c:6102,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6103,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_route.c:6114,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6124,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6130,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:6142,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6147,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6148,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6151,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6152,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6153,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:6170,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6172,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_route.c:6174,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6178,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:6184,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6187,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6192,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:6199,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6203,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:6205,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:6211,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6214,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6215,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6216,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:6220,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:6221,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6223,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:6226,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:6227,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6229,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6232,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_route.c:6238,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6239,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6240,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6241,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6242,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6243,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6250,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_route.c:6251,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6253,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6257,1
    - Dst: vnc_import_bgp_del_route
      Src: /src/frr/bgpd/bgp_route.c:6264,1
    - Dst: vnc_import_bgp_exterior_del_route
      Src: /src/frr/bgpd/bgp_route.c:6265,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6270,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:6272,1
    - Dst: vnc_import_bgp_add_route
      Src: /src/frr/bgpd/bgp_route.c:6277,1
    - Dst: vnc_import_bgp_exterior_add_route
      Src: /src/frr/bgpd/bgp_route.c:6278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6285,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6294,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6297,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:6300,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:6302,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:6305,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:6309,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6320,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6321,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:6325,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6326,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:6332,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:6332,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6336,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6337,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:6343,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6346,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6348,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6350,1
    - Dst: BGP_PATH_VALID::BGP_PATH_VALID
      Src: /src/frr/bgpd/bgp_route.c:6350,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:6352,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:6355,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:6357,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6380,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6383,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6392,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6401,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6404,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6414,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:6414,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6416,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6417,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:6418,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6419,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6423,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6436,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6439,1
    - Dst: rfapiProcessWithdraw
      Src: /src/frr/bgpd/bgp_route.c:6447,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6453,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6455,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:6456,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6457,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6461,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:6478,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6482,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_route.c:6485,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6489,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/bgpd/bgp_route.c:6500,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6501,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/bgpd/bgp_route.c:6505,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6506,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6510,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:6513,1
    - Dst: bgp_encap_type_vxlan_to_tlv
      Src: /src/frr/bgpd/bgp_route.c:6515,1
    - Dst: bgp_add_routermac_ecom
      Src: /src/frr/bgpd/bgp_route.c:6518,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6530,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:6532,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:6538,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6541,1
    - Dst: bgp_static_withdraw_safi
      Src: /src/frr/bgpd/bgp_route.c:6542,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6544,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6548,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6550,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6553,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_route.c:6559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6560,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6561,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6562,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6563,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6567,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6570,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_route.c:6571,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6573,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6574,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:6576,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:6579,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:6583,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6584,1
    - Dst: vpn_leak_to_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:6588,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:6592,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6596,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6597,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:6604,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6606,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:6606,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:6609,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:6610,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:6613,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6622,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6625,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:6632,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:6632,1
    - Dst: type::type
      Src: /src/frr/bgpd/bgp_route.c:6633,1
    - Dst: sub_type::sub_type
      Src: /src/frr/bgpd/bgp_route.c:6633,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6637,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:6646,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:6654,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6656,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_route.c:6659,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6660,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:6664,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:6669,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6672,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6676,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6680,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6682,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:6687,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6688,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6690,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6696,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:6699,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6700,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6701,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6702,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:6706,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6707,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6712,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6713,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6725,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6727,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:6730,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:6732,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:6733,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6736,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6738,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6743,1
    - Dst: bgp_static_new
      Src: /src/frr/bgpd/bgp_route.c:6746,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6754,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6756,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:6759,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:6761,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:6762,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6765,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6770,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_route.c:6773,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6788,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:6789,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6790,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6791,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:6792,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:6797,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6799,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6800,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6802,1
    - Dst: bgp_static_update_safi
      Src: /src/frr/bgpd/bgp_route.c:6804,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6805,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_route.c:6809,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6810,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6811,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6815,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:6829,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6830,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6831,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:6832,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:6837,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6839,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6840,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6842,1
    - Dst: bgp_static_withdraw_safi
      Src: /src/frr/bgpd/bgp_route.c:6847,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6848,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6851,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:6853,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6854,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6856,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6859,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6860,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6861,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:6863,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6864,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6865,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6880,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6882,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6883,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:6884,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:6889,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6891,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6892,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6894,1
    - Dst: bgp_static_update_safi
      Src: /src/frr/bgpd/bgp_route.c:6896,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6897,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6901,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_route.c:6902,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6903,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6921,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6926,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6926,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6927,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6934,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6935,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6937,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:6938,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6939,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:6954,1
    - Dst: bgp_purge_af_static_redist_routes
      Src: /src/frr/bgpd/bgp_route.c:6955,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:6969,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:6981,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6983,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:6986,1
    - Dst: bgp_build_evpn_prefix
      Src: /src/frr/bgpd/bgp_route.c:6988,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_route.c:6989,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6990,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_route.c:6994,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6996,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_route.c:7002,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_route.c:7003,1
    - Dst: str2esi
      Src: /src/frr/bgpd/bgp_route.c:7007,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7008,1
    - Dst: prefix_str2mac
      Src: /src/frr/bgpd/bgp_route.c:7011,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7012,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:7016,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:7017,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7019,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_route.c:7023,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_route.c:7026,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7028,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7034,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:7035,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7036,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_route.c:7037,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7038,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7040,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:7042,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7043,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7044,1
    - Dst: bgp_static_new
      Src: /src/frr/bgpd/bgp_route.c:7047,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:7055,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7058,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7059,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:7061,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:7063,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:7064,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:7070,1
    - Dst: str2esi
      Src: /src/frr/bgpd/bgp_route.c:7072,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:7076,1
    - Dst: prefix_str2mac
      Src: /src/frr/bgpd/bgp_route.c:7077,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_route.c:7081,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:7083,1
    - Dst: bgp_static_update_safi
      Src: /src/frr/bgpd/bgp_route.c:7086,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:7098,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:7109,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7111,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:7114,1
    - Dst: bgp_build_evpn_prefix
      Src: /src/frr/bgpd/bgp_route.c:7116,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_route.c:7117,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7118,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_route.c:7121,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7123,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_route.c:7129,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_route.c:7130,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7133,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:7134,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7135,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_route.c:7136,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7138,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7139,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:7141,1
    - Dst: bgp_static_withdraw_safi
      Src: /src/frr/bgpd/bgp_route.c:7144,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:7146,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:7147,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:7148,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7149,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7150,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7152,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:7160,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7165,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7166,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:7167,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:7168,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:7169,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7171,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7172,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:7176,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:7177,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:7185,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7189,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7190,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:7193,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:7194,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7203,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_route.c:7208,1
    - Dst: bgp_table_map_set
      Src: /src/frr/bgpd/bgp_route.c:7215,1
    - Dst: bgp_node_afi
      Src: /src/frr/bgpd/bgp_route.c:7215,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_route.c:7215,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_route.c:7218,1
    - Dst: bgp_table_map_unset
      Src: /src/frr/bgpd/bgp_route.c:7226,1
    - Dst: bgp_node_afi
      Src: /src/frr/bgpd/bgp_route.c:7226,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_route.c:7226,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_route.c:7230,1
    - Dst: netmask_str2prefix_str
      Src: /src/frr/bgpd/bgp_route.c:7253,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7257,1
    - Dst: bgp_static_set
      Src: /src/frr/bgpd/bgp_route.c:7262,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_route.c:7264,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_route.c:7268,1
    - Dst: bgp_static_set
      Src: /src/frr/bgpd/bgp_route.c:7280,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_route.c:7281,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:7287,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7292,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7293,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7294,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7295,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7296,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7309,1
    - Dst: aspath_empty
      Src: /src/frr/bgpd/bgp_route.c:7319,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7323,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:7324,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:7327,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:7328,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/bgp_route.c:7340,1
    - Dst: aggr_suppress_exists
      Src: /src/frr/bgpd/bgp_route.c:7354,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:7357,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_route.c:7361,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_route.c:7363,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_route.c:7366,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:7367,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:7368,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7369,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:7371,1
    - Dst: aggr_suppress_exists
      Src: /src/frr/bgpd/bgp_route.c:7387,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_route.c:7390,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_route.c:7393,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:7394,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:7395,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7396,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:7398,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:7399,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_route.c:7415,1
    - Dst: aspath_empty
      Src: /src/frr/bgpd/bgp_route.c:7418,1
    - Dst: aspath_cmp
      Src: /src/frr/bgpd/bgp_route.c:7426,1
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_route.c:7429,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7429,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_route.c:7432,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7432,1
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_route.c:7435,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7438,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7457,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7459,1
    - Dst: bgp_aggregate_info_same
      Src: /src/frr/bgpd/bgp_route.c:7476,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7478,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:7481,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:7483,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7485,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7487,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:7496,1
    - Dst: bgp_attr_aggregate_intern
      Src: /src/frr/bgpd/bgp_route.c:7498,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:7503,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:7504,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7505,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7506,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7507,1
    - Dst: bgp_aggregate_delete
      Src: /src/frr/bgpd/bgp_route.c:7508,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:7509,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:7510,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:7515,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7518,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:7518,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7521,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:7532,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7533,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7537,1
    - Dst: bgp_med_value
      Src: /src/frr/bgpd/bgp_route.c:7548,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7582,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7583,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7584,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7585,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7589,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7590,1
    - Dst: bgp_aggregate_med_match
      Src: /src/frr/bgpd/bgp_route.c:7594,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7602,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7622,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7623,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7624,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7625,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7630,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7631,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:7639,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:7645,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7650,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7652,1
    - Dst: bgp_aggregate_test_all_med
      Src: /src/frr/bgpd/bgp_route.c:7678,1
    - Dst: bgp_aggregate_toggle_suppressed
      Src: /src/frr/bgpd/bgp_route.c:7680,1
    - Dst: bgp_aggregate_med_match
      Src: /src/frr/bgpd/bgp_route.c:7683,1
    - Dst: bgp_aggregate_toggle_suppressed
      Src: /src/frr/bgpd/bgp_route.c:7693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7715,1
    - Dst: bgp_aggregate_test_all_med
      Src: /src/frr/bgpd/bgp_route.c:7721,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7746,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7747,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7748,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7749,1
    - Dst: bgp_check_advertise
      Src: /src/frr/bgpd/bgp_route.c:7757,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7762,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7763,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:7767,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:7783,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:7784,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:7798,1
    - Dst: aggr_suppress_map_test
      Src: /src/frr/bgpd/bgp_route.c:7799,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:7800,1
    - Dst: bgp_compute_aggregate_aspath_hash
      Src: /src/frr/bgpd/bgp_route.c:7838,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7843,1
    - Dst: bgp_compute_aggregate_community_hash
      Src: /src/frr/bgpd/bgp_route.c:7844,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7846,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7850,1
    - Dst: bgp_compute_aggregate_ecommunity_hash
      Src: /src/frr/bgpd/bgp_route.c:7851,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7853,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7857,1
    - Dst: bgp_compute_aggregate_lcommunity_hash
      Src: /src/frr/bgpd/bgp_route.c:7858,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7860,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7863,1
    - Dst: bgp_compute_aggregate_aspath_val
      Src: /src/frr/bgpd/bgp_route.c:7866,1
    - Dst: bgp_compute_aggregate_community_val
      Src: /src/frr/bgpd/bgp_route.c:7867,1
    - Dst: bgp_compute_aggregate_ecommunity_val
      Src: /src/frr/bgpd/bgp_route.c:7868,1
    - Dst: bgp_compute_aggregate_lcommunity_val
      Src: /src/frr/bgpd/bgp_route.c:7869,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7873,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_route.c:7888,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:7893,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:7898,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:7903,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:7906,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7925,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7926,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7927,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7928,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7934,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7935,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_route.c:7948,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:7949,1
    - Dst: bgp_remove_aspath_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7963,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7967,1
    - Dst: bgp_remove_comm_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7970,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7972,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7975,1
    - Dst: bgp_remove_ecomm_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7978,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7980,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7983,1
    - Dst: bgp_remove_lcomm_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7986,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7988,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7995,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:7998,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:8001,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8003,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8005,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8008,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8027,1
    - Dst: bgp_aggregate_med_update
      Src: /src/frr/bgpd/bgp_route.c:8049,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8052,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:8053,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8055,1
    - Dst: aggr_suppress_map_test
      Src: /src/frr/bgpd/bgp_route.c:8056,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:8057,1
    - Dst: bgp_compute_aggregate_aspath
      Src: /src/frr/bgpd/bgp_route.c:8083,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8088,1
    - Dst: bgp_compute_aggregate_community
      Src: /src/frr/bgpd/bgp_route.c:8089,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8090,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8094,1
    - Dst: bgp_compute_aggregate_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8095,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8097,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8101,1
    - Dst: bgp_compute_aggregate_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8102,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8104,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_route.c:8109,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:8114,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8119,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8124,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:8127,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8149,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:8153,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8159,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:8160,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8163,1
    - Dst: aggr_suppress_map_test
      Src: /src/frr/bgpd/bgp_route.c:8164,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:8165,1
    - Dst: bgp_aggregate_med_update
      Src: /src/frr/bgpd/bgp_route.c:8173,1
    - Dst: bgp_remove_aspath_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8186,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8189,1
    - Dst: bgp_remove_community_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8192,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8193,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8195,1
    - Dst: bgp_remove_ecommunity_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8198,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8199,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8201,1
    - Dst: bgp_remove_lcommunity_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8204,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8205,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8210,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_route.c:8225,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:8230,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8235,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8240,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:8243,1
    - Dst: bgp_table_top_nolock
      Src: /src/frr/bgpd/bgp_route.c:8259,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:8265,1
    - Dst: bgp_check_advertise
      Src: /src/frr/bgpd/bgp_route.c:8271,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:8274,1
    - Dst: bgp_dest_parent_nolock
      Src: /src/frr/bgpd/bgp_route.c:8277,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:8278,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8280,1
    - Dst: bgp_add_route_to_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8282,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8286,1
    - Dst: bgp_table_top_nolock
      Src: /src/frr/bgpd/bgp_route.c:8300,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:8306,1
    - Dst: bgp_dest_parent_nolock
      Src: /src/frr/bgpd/bgp_route.c:8309,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:8310,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8312,1
    - Dst: bgp_remove_route_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8314,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8318,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:8352,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:8359,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:8366,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8368,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:8371,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:8374,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8376,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8381,1
    - Dst: bgp_aggregate_delete
      Src: /src/frr/bgpd/bgp_route.c:8382,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:8383,1
    - Dst: bgp_dest_set_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8387,1
    - Dst: bgp_free_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8389,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8390,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8391,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:8402,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8410,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:8416,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8418,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:8421,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8425,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:8431,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8432,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8435,1
    - Dst: bgp_aggregate_unset
      Src: /src/frr/bgpd/bgp_route.c:8437,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8439,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8440,1
    - Dst: bgp_aggregate_new
      Src: /src/frr/bgpd/bgp_route.c:8446,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_route.c:8461,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8464,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:8479,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:8480,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:8482,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:8483,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:8484,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:8488,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:8489,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:8492,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:8494,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:8495,1
    - Dst: bgp_dest_set_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8498,1
    - Dst: bgp_aggregate_route
      Src: /src/frr/bgpd/bgp_route.c:8501,1
    - Dst: bgp_aggregate_free
      Src: /src/frr/bgpd/bgp_route.c:8502,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8503,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_route.c:8509,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_route.c:8536,1
    - Dst: netmask_str2prefix_str
      Src: /src/frr/bgpd/bgp_route.c:8542,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8545,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:8553,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:8555,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:8557,1
    - Dst: bgp_aggregate_unset
      Src: /src/frr/bgpd/bgp_route.c:8566,1
    - Dst: bgp_aggregate_set
      Src: /src/frr/bgpd/bgp_route.c:8568,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:8576,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8578,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8582,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8584,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8588,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8590,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:8594,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8596,1
    - Dst: bgp_aggregate_free
      Src: /src/frr/bgpd/bgp_route.c:8598,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_route.c:8601,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:8629,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:8631,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:8633,1
    - Dst: bgp_aggregate_unset
      Src: /src/frr/bgpd/bgp_route.c:8642,1
    - Dst: bgp_aggregate_set
      Src: /src/frr/bgpd/bgp_route.c:8645,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8668,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_route.c:8673,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:8677,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8680,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:8680,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:8691,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:8716,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:8729,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:8733,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_route.c:8735,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_route.c:8737,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:8746,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:8751,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8755,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:8758,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:8764,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8767,1
    - Dst: bgp_redistribute_delete
      Src: /src/frr/bgpd/bgp_route.c:8768,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:8773,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:8774,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:8776,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:8779,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:8781,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_route.c:8789,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8790,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:8791,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8792,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8793,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:8797,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8801,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_route.c:8802,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:8804,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:8806,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:8808,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:8811,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8813,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8814,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8815,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:8821,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:8822,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:8828,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8830,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:8830,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8834,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8835,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8836,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8846,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_route.c:8857,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_route.c:8859,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:8861,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:8864,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:8872,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:8872,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:8875,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:8876,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8877,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8879,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:8893,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:8893,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:8894,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:8903,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:8903,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:8906,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:8906,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:8908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8909,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8911,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:8913,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8927,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:8929,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:8930,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8933,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:8934,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8935,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8938,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8941,1
    - Dst: bgp_evpn_route2json
      Src: /src/frr/bgpd/bgp_route.c:8943,1
    - Dst: route_vty_out_flowspec
      Src: /src/frr/bgpd/bgp_route.c:8945,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8951,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:8953,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:8954,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8957,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:8958,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8959,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8966,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8968,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9046,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9049,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9050,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:9052,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9053,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9055,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9056,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9057,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9060,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9061,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9063,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9064,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9066,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9067,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9068,1
    - Dst: bgp_path_selection_reason2str
      Src: /src/frr/bgpd/bgp_route.c:9069,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9073,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9074,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9079,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9082,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:9090,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9093,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9095,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9097,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9099,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9102,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9103,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9104,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9105,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:9106,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9109,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9110,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9112,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9115,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9117,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9119,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9121,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9122,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9124,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9129,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9131,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9157,1
    - Dst: bgp_nexthop_hostname
      Src: /src/frr/bgpd/bgp_route.c:9162,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9166,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9169,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9174,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9176,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9178,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9195,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9198,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9211,1
    - Dst: NEXTHOP_FAMILY
      Src: /src/frr/bgpd/bgp_route.c:9226,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_route.c:9230,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_route.c:9234,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9238,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9243,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9245,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9249,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9253,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9256,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9260,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9263,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9267,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9269,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9273,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9275,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9280,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9284,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9290,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9294,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9300,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9302,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9307,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9309,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9311,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9316,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9320,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9325,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9330,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9336,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9338,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9341,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9343,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9345,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9349,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9353,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9355,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9359,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9362,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9367,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9369,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9374,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9376,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9377,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9382,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9386,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9388,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9396,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9397,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9402,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9406,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9408,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_route.c:9411,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9415,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9418,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9421,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9431,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9438,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9440,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9443,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9449,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9457,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9459,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9463,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9468,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9475,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9477,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9483,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9485,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9487,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9489,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9492,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9494,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9498,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9500,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9503,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9505,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9508,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9510,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9513,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9519,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:9522,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9527,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9530,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_route.c:9533,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9534,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:9535,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9539,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9540,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9541,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9543,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9544,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9550,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9553,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9556,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:9565,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9568,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9572,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9575,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9579,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9581,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_route.c:9584,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9586,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9587,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:9588,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9591,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9594,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9595,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9596,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9597,1
    - Dst: rfapi_vty_out_vncinfo
      Src: /src/frr/bgpd/bgp_route.c:9605,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9622,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9623,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9625,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9626,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9627,1
    - Dst: bgp_evpn_route2json
      Src: /src/frr/bgpd/bgp_route.c:9633,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9635,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:9637,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9639,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9641,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9644,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9651,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9653,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9657,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9661,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9662,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_route.c:9666,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9667,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9673,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9674,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9677,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9678,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9681,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9685,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_route.c:9690,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9692,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9694,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9701,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9704,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9707,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9709,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9711,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9712,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9716,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9718,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9721,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9723,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9725,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9727,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9729,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9731,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9732,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9734,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9736,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:9740,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9743,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:9747,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_route.c:9750,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9752,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9753,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9754,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9757,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9758,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9759,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9761,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:9763,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9765,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9780,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9783,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9788,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9790,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_route.c:9797,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9798,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9802,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9806,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9810,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9813,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9817,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9818,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9823,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9827,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:9828,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_route.c:9833,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9837,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9841,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:9845,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:9847,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9849,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9850,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9852,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9853,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9856,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9872,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9873,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9874,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9878,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9882,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9884,1
    - Dst: NEXTHOP_FAMILY
      Src: /src/frr/bgpd/bgp_route.c:9888,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9893,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9895,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9898,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9900,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9906,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9909,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9913,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9917,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9919,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9925,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9927,1
    - Dst: bgp_attr_get_evpn_overlay
      Src: /src/frr/bgpd/bgp_route.c:9932,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9935,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9937,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9939,1
    - Dst: ecommunity_lookup
      Src: /src/frr/bgpd/bgp_route.c:9941,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9942,1
    - Dst: ecom_mac2str
      Src: /src/frr/bgpd/bgp_route.c:9946,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9949,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9951,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:9954,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9959,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9961,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9963,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9979,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9982,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9987,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9989,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9991,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9995,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9997,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9999,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10000,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:10005,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10007,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10009,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10011,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10015,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10018,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10020,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:10022,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10042,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:10047,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:10051,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10055,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10058,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10060,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10062,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10065,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10067,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10069,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_route.c:10069,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10072,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10073,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10074,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10075,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10079,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:10082,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10084,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10086,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10088,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10089,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_route.c:10091,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10095,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10096,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10101,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10104,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:10107,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10124,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10127,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10131,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:10134,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10143,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10145,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10148,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10152,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10154,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10165,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_route.c:10165,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10177,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10180,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10182,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:10184,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10188,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_route.c:10191,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10192,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10194,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10197,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10200,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10203,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10206,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10209,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_route.c:10214,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10215,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10224,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10260,1
    - Dst: bgp_nexthop_hostname
      Src: /src/frr/bgpd/bgp_route.c:10263,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:10270,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10273,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10274,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10275,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10280,1
    - Dst: bgp_evpn_label2str
      Src: /src/frr/bgpd/bgp_route.c:10285,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10292,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10295,1
    - Dst: ipaddr2str
      Src: /src/frr/bgpd/bgp_route.c:10305,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10309,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10312,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10316,1
    - Dst: is_pi_family_evpn
      Src: /src/frr/bgpd/bgp_route.c:10327,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10328,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10329,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_route.c:10329,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10330,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10332,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10334,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10336,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10337,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10338,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10343,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10346,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10347,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_route.c:10347,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10348,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10350,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10352,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_route.c:10361,1
    - Dst: json_object_lock
      Src: /src/frr/bgpd/bgp_route.c:10362,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10363,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10367,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10373,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10375,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10377,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10380,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10382,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10387,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10387,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10389,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10391,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10394,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10399,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10402,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10408,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10411,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10414,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10417,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10419,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10422,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10423,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10425,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10428,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10432,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:10440,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10444,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10449,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10454,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10458,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10463,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10468,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10473,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10477,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10483,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10487,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10492,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10496,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10498,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10502,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10506,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10512,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10513,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_route.c:10516,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_route.c:10518,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10521,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10527,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10531,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10538,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10543,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:10552,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10554,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10557,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10560,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10563,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10567,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10570,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10577,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10579,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10583,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10587,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10591,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10596,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10598,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10606,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10608,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10612,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10616,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10617,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10619,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10638,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10641,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10643,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10648,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_route.c:10652,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10653,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/bgpd/bgp_route.c:10654,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10661,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10664,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10669,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10674,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10675,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10679,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10683,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10684,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10687,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10691,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10694,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10697,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:10698,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10709,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_route.c:10714,1
    - Dst: route_vty_out_detail_es_info
      Src: /src/frr/bgpd/bgp_route.c:10715,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10721,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10724,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10727,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10729,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10731,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10734,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10736,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10739,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10742,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10744,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:10745,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10747,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:10748,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10753,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10755,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10760,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10765,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_route.c:10767,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10770,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10772,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10774,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10778,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10782,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10784,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10788,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10791,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10794,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgp_route.c:10797,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10800,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10804,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10807,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10810,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10815,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10816,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10818,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10822,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10824,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10827,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10828,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10830,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10834,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10836,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10839,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10842,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10844,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10849,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10850,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/bgpd/bgp_route.c:10851,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10853,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10855,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10859,1
    - Dst: aspath_get_first_as
      Src: /src/frr/bgpd/bgp_route.c:10860,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10864,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10865,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10869,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10871,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10875,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10878,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10879,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10880,1
    - Dst: bgp_path_selection_reason2str
      Src: /src/frr/bgpd/bgp_route.c:10882,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10884,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10885,1
    - Dst: bgp_path_selection_reason2str
      Src: /src/frr/bgpd/bgp_route.c:10886,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10892,1
    - Dst: bgp_rpki_validation2str
      Src: /src/frr/bgpd/bgp_route.c:10894,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10896,1
    - Dst: bgp_rpki_validation2str
      Src: /src/frr/bgpd/bgp_route.c:10897,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10901,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10904,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10907,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10909,1
    - Dst: community_str
      Src: /src/frr/bgpd/bgp_route.c:10910,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10910,1
    - Dst: json_object_lock
      Src: /src/frr/bgpd/bgp_route.c:10912,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10912,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10913,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10915,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10917,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10918,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10923,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10925,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10926,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:10928,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10929,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10932,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:10933,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10938,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10940,1
    - Dst: lcommunity_str
      Src: /src/frr/bgpd/bgp_route.c:10941,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10941,1
    - Dst: json_object_lock
      Src: /src/frr/bgpd/bgp_route.c:10943,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10943,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10944,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10946,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10948,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10949,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10954,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10955,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10958,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10960,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10964,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10968,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_route.c:10970,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10974,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:10976,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_route.c:10979,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:10980,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:10983,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10996,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10999,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11002,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11005,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11012,1
    - Dst: bgp_damp_info_vty
      Src: /src/frr/bgpd/bgp_route.c:11016,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:11019,1
    - Dst: is_route_parent_evpn
      Src: /src/frr/bgpd/bgp_route.c:11020,1
    - Dst: mpls_lse_decode
      Src: /src/frr/bgpd/bgp_route.c:11021,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11025,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11027,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:11033,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11036,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11043,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11046,1
    - Dst: bgp_addpath_info_has_ids
      Src: /src/frr/bgpd/bgp_route.c:11052,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11054,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11060,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11069,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_route.c:11071,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11075,1
    - Dst: route_vty_out_tx_ids
      Src: /src/frr/bgpd/bgp_route.c:11078,1
    - Dst: bgp_addpath_is_addpath_used
      Src: /src/frr/bgpd/bgp_route.c:11085,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:11088,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_route.c:11090,1
    - Dst: bgp_adj_out_lookup
      Src: /src/frr/bgpd/bgp_route.c:11091,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_route.c:11093,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_route.c:11096,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11098,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:11101,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:11111,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11116,1
    CyclomaticComplexity: 1059
    EdgeCount: 1059
    ICount: 2819
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (!"We should never get here this is a dev escape")
      pos:
        line_end: 8351
        line_start: 8351
        source_file: /src/frr/bgpd/bgp_route.c
    - condition: (bgp_static)
      pos:
        line_end: 6169
        line_start: 6169
        source_file: /src/frr/bgpd/bgp_route.c
    - condition: (bgp_static)
      pos:
        line_end: 6477
        line_start: 6477
        source_file: /src/frr/bgpd/bgp_route.c
    - condition: (dest && peer)
      pos:
        line_end: 5452
        line_start: 5452
        source_file: /src/frr/bgpd/bgp_route.c
    - condition: (attr.aspath)
      pos:
        line_end: 8676
        line_start: 8676
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 11119
      start: 5248
    functionDepth: 16
    functionLinenumber: 5248
    functionLinenumberEnd: 11119
    functionName: bgp_soft_reconfig_table_task
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_route2json
    - atol
    - BGP_EVENT_ADD
    - XCALLOC
    - is_pi_family_evpn
    - bgp_adj_out_lookup
    - work_queue_new
    - bgp_path_info_mpath_count
    - vpn_leak_from_vrf_withdraw
    - is_evpn_prefix_ipaddr_v6
    - IPV6_ADDR_CMP
    - memcpy
    - route_map_counter_decrement
    - vpn_leak_to_vrf_withdraw
    - prefix_list_reset
    - work_queue_add
    - BGP_ATTR_MP_NEXTHOP_LEN_IP6
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    - IN6_IS_ADDR_MULTICAST
    - bgp_med_value
    - DEFPY
    - bgp_dest_get_bgp_static_info
    - bgp_table_finish
    - PSIZE
    - bgp_aggregate_unset
    - bgp_aggregate_free
    - bgp_aggregate_new
    - FILTER_LIST_IN_NAME
    - rfapiProcessUpdate
    - ecommunity_free
    - bgp_attr_add_gshut_community
    - info_make::info_make
    - bgp_remove_ecomm_from_aggregate_hash
    - bgp_rib_remove
    - bgp_node_get
    - bgp_get_asnotation
    - bgp_remove_lcommunity_from_aggregate
    - bgp_clear_route
    - bgp_dest_get_bgp_aggregate_info
    - bgp_addpath_encode_tx
    - assert
    - hash_clean_and_free
    - bgp_stop_announce_route_timer
    - community_include
    - json_object_array_add
    - route_vty_out_detail_es_info
    - DISTRIBUTE_OUT_NAME
    - BGP_PATH_HOLDDOWN
    - bgp_compute_aggregate_lcommunity
    - BGP_RD_AS_FORMAT
    - listnode_add
    - zlog_warn
    - bgp_remove_community_from_aggregate
    - json_object_string_addf
    - SET_IPADDR_V4
    - str2esi
    - bgp_afi_node_get
    - bgp_announce_route
    - route_vty_out_flowspec
    - rfapiProcessWithdraw
    - bgp_aggregate_increment
    - FOREACH_AFI_SAFI
    - bgp_aggregate_install
    - access_list_reset
    - bgp_dest_set_bgp_aggregate_info
    - bgp_attr_get_lcommunity
    - snprintf
    - bgp_compute_aggregate_ecommunity
    - listcount
    - flags::flags
    - bgp_in_graceful_shutdown
    - lcommunity_dup
    - bgp_compute_aggregate_aspath_val
    - str2prefix_rd
    - list_new
    - route_vty_out_tx_ids
    - bgp_clear_route_table
    - bgp_dest_set_bgp_table_info
    - bgp_attr_intern
    - bgp_static_free
    - bgp_rpki_validation2str
    - bgp_attr_get_cluster
    - bgp_find_or_add_nexthop
    - bgp_dest_set_bgp_static_info
    - prefix_blen
    - vnc_import_bgp_add_route
    - bgp_attr_default_set
    - bgp_get_imported_bpi_ultimate
    - bgp_remove_route_from_aggregate
    - bgp_attr_get_ecommunity
    - bgp_confederation_peers_check
    - bgp_path_info_unset_flag
    - community_dup
    - ipaddr2str
    - ecommunity_dup
    - bgp_compute_aggregate_lcommunity_val
    - bgp_path_selection_reason2str
    - event_add_event
    - peer_af_find
    - route_vty_out_route
    - json_object_string_add
    - BGP_DEBUG
    - bgp_zebra_announce_table
    - bgp_dest_get_prefix
    - bgp_get_default
    - bgp_zebra_withdraw
    - sub_type::sub_type
    - bgp_dest_parent_nolock
    - bgp_attr_get_evpn_overlay
    - bgp_dest_unlock_node
    - bgp_compute_aggregate_ecommunity_val
    - community_free
    - vpn_leak_to_vrf_update
    - bgp_table_init
    - extra::extra
    - bgp_table_top_nolock
    - strtoul
    - bgp_node_afi
    - bgp_dest_has_bgp_path_info_data
    - bgp_attr_flush
    - aggr_suppress_exists
    - lcommunity_cmp
    - bgp_damp_reuse_time_vty
    - bgp_attr_unintern
    - bgp_aggregate_decrement
    - attrhash_cmp
    - bgp_cleanup_table
    - bgp_table_lock
    - bgp_path_info_extra_get
    - rfapiProcessPeerDown
    - bgp_table_map_set
    - community_cmp
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - CPP_NOTICE
    - bgp_node_safi
    - decode_label
    - bgp_aggregate_route
    - json_object_new_string
    - bgp_debug_neighbor_events
    - json_object_lock
    - XSTRDUP
    - bgp_route_next
    - bgp_unlink_nexthop
    - bgp_redist_lookup
    - bgp_check_advertise
    - afi2str
    - NEXTHOP_FAMILY
    - bgp_compute_aggregate_community
    - bgp_table_unlock
    - bgp_free_aggregate_info
    - bgp_clear_node_queue_init
    - json_object_boolean_add
    - vty_reset
    - bgp_static_withdraw
    - str2prefix
    - if
    - aspath_empty
    - bgp_evpn_label2str
    - bgp_remove_lcomm_from_aggregate_hash
    - bgp_addpath_info_has_ids
    - ecommunity_lookup
    - EVENT_OFF
    - peer_lock
    - bgp_compute_aggregate_community_val
    - bgp_static_update
    - snprintfrr
    - bgp_aggregate_info_same
    - ALL_LIST_ELEMENTS
    - bgp_soft_reconfig_in
    - bgp_path_info_set_flag
    - vnc_import_bgp_exterior_add_route
    - bgp_build_evpn_prefix
    - bgp_is_valid_label
    - lcommunity_free
    - inet_ntop
    - DEFUN
    - aspath_get_first_as
    - bgp_remove_aspath_from_aggregate_hash
    - bgp_remove_aspath_from_aggregate
    - bgp_purge_af_static_redist_routes
    - vnc_import_bgp_del_route
    - ROUTE_MAP_IN_NAME
    - bgp_withdraw
    - SET_IPADDR_V6
    - VRF_LOGNAME
    - route_vty_short_status_out
    - bgp_addpath_id_for_peer
    - bgp_fibupd_safi
    - zlog_debug
    - is_route_parent_evpn
    - vrf_lookup_by_id
    - aspath_unintern
    - json_object_int_add
    - bgp_attr_get_community
    - bgp_node_lookup
    - bgp_static_set
    - SET_FLAG
    - PREFIX_LIST_IN_NAME
    - route_map_counter_increment
    - bgp_adj_in_remove
    - bgp_addpath_is_addpath_used
    - peer_unlock
    - bgp_clear_route_node
    - bgp_addpath_names
    - bgp_table_map_unset
    - EVENT_ARG
    - prefix_copy
    - apply_mask
    - bgp_soft_reconfig_table_task_cancel
    - lcommunity_str
    - listnode_delete
    - bgp_zclient_reset
    - bgp_process
    - aggr_suppress_map_test
    - bgp_aggregate_med_update
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_dest_table
    - bgp_soft_reconfig_table_flag
    - type::type
    - bgp_path_info_restore
    - bgp_attr_aggregate_intern
    - bgp_evpn_attr_is_sync
    - flog_err
    - json_object_boolean_false_add
    - bgp_addpath_encode_rx
    - aspath_str_update
    - community_str
    - memset
    - mpls_lse_decode
    - prefix_str2mac
    - bgp_encap_type_vxlan_to_tlv
    - vpn_leak_from_vrf_update
    - encode_label
    - json_object_new_object
    - json_object_object_addf
    - bgp_static_new
    - list_isempty
    - listnode_lookup
    - bgp_compute_aggregate_lcommunity_hash
    - vnc_import_bgp_exterior_del_route
    - aggr_unsuppress_path
    - bgp_add_route_to_aggregate
    - peer_uptime
    - bgp_dest_get_bgp_table_info
    - bgp_compute_aggregate_community_hash
    - is_evpn_prefix_ipaddr_v4
    - bgp_static_update_safi
    - ecom_mac2str
    - bgp_path_suppressed
    - FILTER_LIST_OUT_NAME
    - ROUTE_MAP_OUT_NAME
    - bgp_attr_get_aigp_metric
    - monotime
    - BGP_PATH_VALID::BGP_PATH_VALID
    - bgp_static_withdraw_safi
    - bgp_aggregate_test_all_med
    - json_object_new_array
    - IN6_IS_ADDR_LINKLOCAL
    - rfapi_vty_out_vncinfo
    - strcmp
    - bgp_path_info_delete
    - json_object_object_add
    - bgp_damp_info_vty
    - AGGREGATE_MED_VALID
    - DISTRIBUTE_IN_NAME
    - safi2str
    - bgp_redistribute_delete
    - aspath_print_vty
    - bgp_add_routermac_ecom
    - bgp_nexthop_hostname
    - bgp_path_info_reap
    - VTY_DECLVAR_CONTEXT
    - bgp_compute_aggregate_aspath_hash
    - vty_out
    - aspath_dup
    - bgp_remove_comm_from_aggregate_hash
    - afi2family
    - bgp_soft_reconfig_table_update
    - bgp_attr_set_aigp_metric
    - attr::attr
    - XFREE
    - bgp_aggregate_set
    - aggr_suppress_path
    - aspath_free
    - route_map_lookup_by_name
    - json_object_boolean_true_add
    - bgp_update
    - IN_CLASSD
    - list_delete
    - bgp_aggregate_med_match
    - esi_to_str
    - bgp_aggregate_delete
    - netmask_str2prefix_str
    - hook_call
    - bgp_compute_aggregate_aspath
    - aspath_cmp
    - bgp_remove_ecommunity_from_aggregate
    - bgp_aggregate_toggle_suppressed
    - PREFIX_LIST_OUT_NAME
    - bgp_soft_reconfig_table
    - ntohl
    - ecommunity_cmp
    - bgp_compute_aggregate_ecommunity_hash
    - UNSET_FLAG
    - family2afi
    - bgp_route_next_until
    - bgp_table_top
    - bgp_dest_lock_node
    - bgp_evpn_is_esi_valid
    - bgp_evpn_unimport_route
    linkageType: ''
    returnType: void
    signature: void bgp_soft_reconfig_table_task(struct event *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:5339,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_route.c:5343,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_route.c:5347,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:5350,1
    - Dst: bgp_soft_reconfig_table_flag
      Src: /src/frr/bgpd/bgp_route.c:5351,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_route.c:5352,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgp_route.c:5359,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_route.c:5379,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:5384,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_route.c:5390,1
    - Dst: bgp_soft_reconfig_table_flag
      Src: /src/frr/bgpd/bgp_route.c:5395,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_route.c:5398,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_route.c:5414,1
    - Dst: bgp_stop_announce_route_timer
      Src: /src/frr/bgpd/bgp_route.c:5416,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5418,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5419,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5420,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5425,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:5430,1
    - Dst: bgp_soft_reconfig_table
      Src: /src/frr/bgpd/bgp_route.c:5432,1
    - Dst: bgp_clear_route_node
      Src: /src/frr/bgpd/bgp_route.c:5443,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5450,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5451,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:5453,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5459,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5464,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5466,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5468,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5469,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_route.c:5474,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_route.c:5475,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5477,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5482,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:5482,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5487,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:5490,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (dest && peer)
      pos:
        line_end: 5452
        line_start: 5452
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 5492
      start: 5332
    functionDepth: 16
    functionLinenumber: 5332
    functionLinenumberEnd: 5492
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 5
    functionsReached:
    - list_delete
    - peer_af_find
    - listnode_add
    - bgp_dest_get_prefix
    - bgp_clear_route_node
    - bgp_get_default
    - if
    - bgp_soft_reconfig_table
    - assert
    - EVENT_OFF
    - bgp_stop_announce_route_timer
    - vpn_leak_from_vrf_withdraw
    - listnode_delete
    - memcpy
    - bgp_route_next
    - vpn_leak_to_vrf_withdraw
    - bgp_table_top
    - list_isempty
    - CHECK_FLAG
    - bgp_dest_table
    - list_new
    - bgp_soft_reconfig_table_flag
    - bgp_dest_get_bgp_path_info
    - bgp_rib_remove
    - ALL_LIST_ELEMENTS
    - bgp_evpn_unimport_route
    - bgp_soft_reconfig_in
    - bgp_dest_get_bgp_table_info
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5500,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5502,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_route.c:5503,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:5504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5505
      start: 5496
    functionDepth: 1
    functionLinenumber: 5496
    functionLinenumberEnd: 5505
    functionName: bgp_clear_node_queue_del
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_dest_table
    - bgp_table_unlock
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_clear_node_queue_del(struct work_queue *wq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_route.c:5512,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_route.c:5514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - wq
    argTypes:
    - struct work_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5515
      start: 5507
    functionDepth: 1
    functionLinenumber: 5507
    functionLinenumberEnd: 5515
    functionName: bgp_clear_node_complete
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - peer_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_clear_node_complete(struct work_queue *wq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:5521,1
    - Dst: work_queue_new
      Src: /src/frr/bgpd/bgp_route.c:5524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5534
      start: 5517
    functionDepth: 1
    functionLinenumber: 5517
    functionLinenumberEnd: 5534
    functionName: bgp_clear_node_queue_init
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - work_queue_new
    - snprintf
    linkageType: ''
    returnType: void
    signature: void bgp_clear_node_queue_init(struct peer *peer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5549,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5549,1
    - Dst: bgp_adj_in_remove
      Src: /src/frr/bgpd/bgp_route.c:5594,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5599,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:5605,1
    - Dst: bgp_table_lock
      Src: /src/frr/bgpd/bgp_route.c:5610,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_route.c:5610,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_route.c:5611,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:5612,1
    - Dst: work_queue_add
      Src: /src/frr/bgpd/bgp_route.c:5616,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - table
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5622
      start: 5536
    functionDepth: 3
    functionLinenumber: 5536
    functionLinenumberEnd: 5622
    functionName: bgp_clear_route_table
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_table_lock
    - bgp_path_info_reap
    - XCALLOC
    - bgp_table_top
    - work_queue_add
    - bgp_dest_table
    - bgp_dest_lock_node
    - bgp_dest_get_bgp_path_info
    - bgp_adj_in_remove
    linkageType: ''
    returnType: void
    signature: "void bgp_clear_route_table(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t\t
      \ struct bgp_table *table)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_clear_node_queue_init
      Src: /src/frr/bgpd/bgp_route.c:5630,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_route.c:5650,1
    - Dst: bgp_clear_route_table
      Src: /src/frr/bgpd/bgp_route.c:5653,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5655,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5656,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5657,1
    - Dst: bgp_clear_route_table
      Src: /src/frr/bgpd/bgp_route.c:5661,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_route.c:5666,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5667
      start: 5624
    functionDepth: 4
    functionLinenumber: 5624
    functionLinenumberEnd: 5667
    functionName: bgp_clear_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_clear_node_queue_init
    - bgp_route_next
    - peer_unlock
    - bgp_table_top
    - peer_lock
    - bgp_clear_route_table
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void bgp_clear_route(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:5674,1
    - Dst: bgp_clear_route
      Src: /src/frr/bgpd/bgp_route.c:5675,1
    - Dst: rfapiProcessPeerDown
      Src: /src/frr/bgpd/bgp_route.c:5678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5680
      start: 5669
    functionDepth: 5
    functionLinenumber: 5669
    functionLinenumberEnd: 5680
    functionName: bgp_clear_route_all
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - rfapiProcessPeerDown
    - FOREACH_AFI_SAFI
    - bgp_clear_route
    linkageType: ''
    returnType: void
    signature: void bgp_clear_route_all(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5694,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5694,1
    - Dst: bgp_adj_in_remove
      Src: /src/frr/bgpd/bgp_route.c:5701,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5706
      start: 5682
    functionDepth: 2
    functionLinenumber: 5682
    functionLinenumberEnd: 5706
    functionName: bgp_clear_adj_in
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_table_top
    - bgp_route_next
    - bgp_adj_in_remove
    linkageType: ''
    returnType: void
    signature: void bgp_clear_adj_in(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5720,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5721,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5725,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5729,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5730,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5731,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5735,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5738,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:5739,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5740,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5744,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5756,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:5758,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5763,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5764,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5765,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5769,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5771,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:5772,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:5773,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5776,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5783,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:5784,1
    - Dst: bgp_rib_remove
      Src: /src/frr/bgpd/bgp_route.c:5787,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 35
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5791
      start: 5713
    functionDepth: 4
    functionLinenumber: 5713
    functionLinenumberEnd: 5791
    functionName: bgp_clear_stale_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - community_include
    - vpn_leak_to_vrf_withdraw
    - bgp_table_top
    - bgp_get_default
    - CHECK_FLAG
    - vpn_leak_from_vrf_withdraw
    - bgp_dest_get_bgp_path_info
    - bgp_rib_remove
    - bgp_attr_get_community
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void bgp_clear_stale_route(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5800,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5801,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5802,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5806,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5807,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5808,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5813,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5816,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5818,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_route.c:5821,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:5823,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_route.c:5826,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_route.c:5827,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5828,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:5831,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5839,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5840,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5841,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5848,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5849,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_route.c:5851,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:5852,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_route.c:5854,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_route.c:5855,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5856,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:5859,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 31
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5865
      start: 5793
    functionDepth: 3
    functionLinenumber: 5793
    functionLinenumberEnd: 5865
    functionName: bgp_set_stale_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - safi2str
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_path_info_set_flag
    - afi2str
    - zlog_debug
    - bgp_debug_neighbor_events
    - bgp_dest_get_bgp_path_info
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void bgp_set_stale_route(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ROUTE_MAP_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5873,1
    - Dst: PREFIX_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5873,1
    - Dst: FILTER_LIST_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5874,1
    - Dst: DISTRIBUTE_OUT_NAME
      Src: /src/frr/bgpd/bgp_route.c:5875,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 2
    argNames:
    - peer
    - filter
    argTypes:
    - struct peer*
    - struct bgp_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5878
      start: 5867
    functionDepth: 1
    functionLinenumber: 5867
    functionLinenumberEnd: 5878
    functionName: bgp_outbound_policy_exists
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - ROUTE_MAP_OUT_NAME
    - DISTRIBUTE_OUT_NAME
    - FILTER_LIST_OUT_NAME
    - PREFIX_LIST_OUT_NAME
    linkageType: ''
    returnType: bool
    signature: bool bgp_outbound_policy_exists(struct peer *peer, struct bgp_filter
      *filter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ROUTE_MAP_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5886,1
    - Dst: PREFIX_LIST_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5886,1
    - Dst: FILTER_LIST_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5887,1
    - Dst: DISTRIBUTE_IN_NAME
      Src: /src/frr/bgpd/bgp_route.c:5888,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 2
    argNames:
    - peer
    - filter
    argTypes:
    - struct peer*
    - struct bgp_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5891
      start: 5880
    functionDepth: 1
    functionLinenumber: 5880
    functionLinenumberEnd: 5891
    functionName: bgp_inbound_policy_exists
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - ROUTE_MAP_IN_NAME
    - DISTRIBUTE_IN_NAME
    - FILTER_LIST_IN_NAME
    - PREFIX_LIST_IN_NAME
    linkageType: ''
    returnType: bool
    signature: bool bgp_inbound_policy_exists(struct peer *peer, struct bgp_filter
      *filter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5900,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5900,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:5901,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:5902,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_route.c:5908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5911,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:5917,1
    - Dst: bgp_zebra_withdraw
      Src: /src/frr/bgpd/bgp_route.c:5918,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:5921,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 3
    argNames:
    - bgp
    - table
    - safi
    argTypes:
    - struct bgp*
    - struct bgp_table*
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5923
      start: 5893
    functionDepth: 13
    functionLinenumber: 5893
    functionLinenumberEnd: 5923
    functionName: bgp_cleanup_table
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_path_info_reap
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_fibupd_safi
    - bgp_zebra_withdraw
    - bgp_dest_get_bgp_path_info
    - bgp_evpn_unimport_route
    linkageType: ''
    returnType: void
    signature: "void bgp_cleanup_table(struct bgp *bgp, struct bgp_table *table,\n\t\t\t
      \     safi_t safi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5935,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5943,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5944,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5945,1
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5947,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgp_route.c:5948,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5949,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5950,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5954,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5955,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5956,1
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5958,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgp_route.c:5959,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5960,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5961,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:5966,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:5967,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5968,1
    - Dst: bgp_cleanup_table
      Src: /src/frr/bgpd/bgp_route.c:5970,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgp_route.c:5971,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:5972,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:5973,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5976
      start: 5926
    functionDepth: 14
    functionLinenumber: 5926
    functionLinenumberEnd: 5976
    functionName: bgp_cleanup_routes
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_finish
    - bgp_dest_unlock_node
    - bgp_table_top
    - bgp_dest_set_bgp_table_info
    - bgp_dest_get_bgp_table_info
    - bgp_cleanup_table
    linkageType: ''
    returnType: void
    signature: void bgp_cleanup_routes(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_reset
      Src: /src/frr/bgpd/bgp_route.c:5980,1
    - Dst: bgp_zclient_reset
      Src: /src/frr/bgpd/bgp_route.c:5981,1
    - Dst: access_list_reset
      Src: /src/frr/bgpd/bgp_route.c:5982,1
    - Dst: prefix_list_reset
      Src: /src/frr/bgpd/bgp_route.c:5983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5984
      start: 5978
    functionDepth: 1
    functionLinenumber: 5978
    functionLinenumberEnd: 5984
    functionName: bgp_reset
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_zclient_reset
    - prefix_list_reset
    - access_list_reset
    - vty_reset
    linkageType: ''
    returnType: void
    signature: void bgp_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5988,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:5989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5991
      start: 5986
    functionDepth: 1
    functionLinenumber: 5986
    functionLinenumberEnd: 5991
    functionName: bgp_addpath_encode_rx
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool bgp_addpath_encode_rx(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_route.c:6012,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:6019,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6027,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:6028,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_route.c:6036,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_route.c:6039,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6040,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_route.c:6048,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6052,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6062,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6070,1
    - Dst: IN_CLASSD
      Src: /src/frr/bgpd/bgp_route.c:6074,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:6074,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6084,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_route.c:6094,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6095,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_route.c:6102,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6103,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_route.c:6114,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6124,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:6130,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 59
    argCount: 3
    argNames:
    - peer
    - attr
    - packet
    argTypes:
    - struct peer*
    - struct attr*
    - struct bgp_nlri*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6138
      start: 5995
    functionDepth: 15
    functionLinenumber: 5995
    functionLinenumberEnd: 6138
    functionName: bgp_nlri_parse_ip
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_addpath_encode_rx
    - PSIZE
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - afi2family
    - flog_err
    - IN_CLASSD
    - prefix_blen
    - bgp_withdraw
    - bgp_update
    - IN6_IS_ADDR_MULTICAST
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_nlri_parse_ip(struct peer *peer, struct attr *attr,\n\t\t
      \     struct bgp_nlri *packet)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:6142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6143
      start: 6140
    functionDepth: 0
    functionLinenumber: 6140
    functionLinenumberEnd: 6143
    functionName: bgp_static_new
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_static
    signature: struct bgp_static *bgp_static_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6147,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6148,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6151,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6152,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - bgp_static
    argTypes:
    - struct bgp_static*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6154
      start: 6145
    functionDepth: 1
    functionLinenumber: 6145
    functionLinenumberEnd: 6154
    functionName: bgp_static_free
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - route_map_counter_decrement
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_static_free(struct bgp_static *bgp_static)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:6170,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6172,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_route.c:6174,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6178,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:6184,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6187,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6192,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:6199,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6203,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:6205,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:6211,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6214,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6215,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6216,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:6220,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:6221,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6223,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:6226,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:6227,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6229,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6232,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_route.c:6238,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6239,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6240,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6241,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6242,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6243,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6250,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_route.c:6251,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6253,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6257,1
    - Dst: vnc_import_bgp_del_route
      Src: /src/frr/bgpd/bgp_route.c:6264,1
    - Dst: vnc_import_bgp_exterior_del_route
      Src: /src/frr/bgpd/bgp_route.c:6265,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6270,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:6272,1
    - Dst: vnc_import_bgp_add_route
      Src: /src/frr/bgpd/bgp_route.c:6277,1
    - Dst: vnc_import_bgp_exterior_add_route
      Src: /src/frr/bgpd/bgp_route.c:6278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6285,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6294,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6297,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:6300,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:6302,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:6305,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_route.c:6309,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6320,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6321,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:6325,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6326,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:6332,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:6332,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6336,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6337,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:6343,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6346,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6348,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6350,1
    - Dst: BGP_PATH_VALID::BGP_PATH_VALID
      Src: /src/frr/bgpd/bgp_route.c:6350,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:6352,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:6355,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:6357,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6380,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6383,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6392,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 115
    argCount: 5
    argNames:
    - bgp
    - p
    - bgp_static
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_static*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (bgp_static)
      pos:
        line_end: 6169
        line_start: 6169
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 6393
      start: 6156
    functionDepth: 3
    functionLinenumber: 6156
    functionLinenumberEnd: 6393
    functionName: bgp_static_update
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - bgp_attr_unintern
    - bgp_path_info_restore
    - bgp_path_info_set_flag
    - vnc_import_bgp_exterior_add_route
    - BGP_DEBUG
    - bgp_aggregate_decrement
    - attrhash_cmp
    - bgp_attr_intern
    - memset
    - bgp_get_default
    - bgp_find_or_add_nexthop
    - inet_ntop
    - zlog_debug
    - bgp_static_withdraw
    - vnc_import_bgp_add_route
    - bgp_attr_default_set
    - assert
    - bgp_dest_unlock_node
    - aspath_unintern
    - bgp_afi_node_get
    - bgp_attr_set_aigp_metric
    - monotime
    - vpn_leak_from_vrf_update
    - bgp_in_graceful_shutdown
    - bgp_process
    - bgp_path_info_unset_flag
    - BGP_PATH_VALID::BGP_PATH_VALID
    - bgp_attr_add_gshut_community
    - info_make::info_make
    - vnc_import_bgp_del_route
    - bgp_aggregate_increment
    - bgp_unlink_nexthop
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - vnc_import_bgp_exterior_del_route
    - SET_FLAG
    - bgp_attr_flush
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void bgp_static_update(struct bgp *bgp, const struct prefix *p,\n\t\t
      \      struct bgp_static *bgp_static, afi_t afi, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6401,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6404,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6414,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:6414,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6416,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6417,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:6418,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6419,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6423,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 4
    argNames:
    - bgp
    - p
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct prefix*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6424
      start: 6395
    functionDepth: 3
    functionLinenumber: 6395
    functionLinenumberEnd: 6424
    functionName: bgp_static_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_afi_node_get
    - bgp_get_default
    - bgp_unlink_nexthop
    - bgp_path_info_delete
    - vpn_leak_from_vrf_withdraw
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: void
    signature: "void bgp_static_withdraw(struct bgp *bgp, const struct prefix *p,
      afi_t afi,\n\t\t\t safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6436,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6439,1
    - Dst: rfapiProcessWithdraw
      Src: /src/frr/bgpd/bgp_route.c:6447,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6453,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6455,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:6456,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6457,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6461,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 5
    argNames:
    - bgp
    - p
    - afi
    - safi
    - prd
    argTypes:
    - struct bgp*
    - struct prefix*
    - afi_t
    - safi_t
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6462
      start: 6429
    functionDepth: 3
    functionLinenumber: 6429
    functionLinenumberEnd: 6462
    functionName: bgp_static_withdraw_safi
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - vpn_leak_to_vrf_withdraw
    - bgp_afi_node_get
    - rfapiProcessWithdraw
    - bgp_path_info_delete
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: void
    signature: "void bgp_static_withdraw_safi(struct bgp *bgp, const struct prefix
      *p,\n\t\t\t\t     afi_t afi, safi_t safi,\n\t\t\t\t     struct prefix_rd *prd)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:6478,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:6482,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_route.c:6485,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:6489,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/bgpd/bgp_route.c:6500,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6501,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/bgpd/bgp_route.c:6505,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6506,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:6510,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:6513,1
    - Dst: bgp_encap_type_vxlan_to_tlv
      Src: /src/frr/bgpd/bgp_route.c:6515,1
    - Dst: bgp_add_routermac_ecom
      Src: /src/frr/bgpd/bgp_route.c:6518,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6530,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:6532,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:6538,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6541,1
    - Dst: bgp_static_withdraw_safi
      Src: /src/frr/bgpd/bgp_route.c:6542,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6544,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6548,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:6550,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6553,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_route.c:6559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6560,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6561,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6562,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6563,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:6567,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6570,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_route.c:6571,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6573,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:6574,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:6576,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:6579,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:6583,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6584,1
    - Dst: vpn_leak_to_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:6588,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:6592,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6596,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6597,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:6604,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6606,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:6606,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:6609,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_route.c:6610,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:6613,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6622,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6625,1
    - Dst: rfapiProcessUpdate
      Src: /src/frr/bgpd/bgp_route.c:6632,1
    - Dst: attr::attr
      Src: /src/frr/bgpd/bgp_route.c:6632,1
    - Dst: type::type
      Src: /src/frr/bgpd/bgp_route.c:6633,1
    - Dst: sub_type::sub_type
      Src: /src/frr/bgpd/bgp_route.c:6633,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:6637,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 97
    argCount: 5
    argNames:
    - bgp
    - p
    - bgp_static
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_static*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (bgp_static)
      pos:
        line_end: 6477
        line_start: 6477
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 6638
      start: 6464
    functionDepth: 4
    functionLinenumber: 6464
    functionLinenumberEnd: 6638
    functionName: bgp_static_update_safi
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_attr_unintern
    - bgp_path_info_restore
    - type::type
    - bgp_path_info_set_flag
    - bgp_aggregate_decrement
    - attrhash_cmp
    - bgp_attr_intern
    - bgp_add_routermac_ecom
    - SET_IPADDR_V4
    - memset
    - sub_type::sub_type
    - bgp_attr_default_set
    - assert
    - bgp_dest_unlock_node
    - aspath_unintern
    - bgp_afi_node_get
    - decode_label
    - vpn_leak_to_vrf_update
    - monotime
    - bgp_encap_type_vxlan_to_tlv
    - attr::attr
    - flags::flags
    - extra::extra
    - bgp_process
    - rfapiProcessUpdate
    - bgp_static_withdraw_safi
    - memcpy
    - info_make::info_make
    - bgp_aggregate_increment
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - SET_FLAG
    - SET_IPADDR_V6
    - route_map_apply
    - bgp_attr_flush
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void bgp_static_update_safi(struct bgp *bgp, const struct prefix *p,\n\t\t\t\t
      \  struct bgp_static *bgp_static, afi_t afi,\n\t\t\t\t   safi_t safi)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:6646,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:6654,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6656,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_route.c:6659,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6660,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:6664,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:6669,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6672,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6676,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6680,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6682,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:6687,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6688,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6690,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6696,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:6699,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6700,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6701,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6702,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:6706,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6707,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6712,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6713,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6725,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6727,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:6730,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:6732,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:6733,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6736,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6738,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6743,1
    - Dst: bgp_static_new
      Src: /src/frr/bgpd/bgp_route.c:6746,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:6754,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:6756,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:6759,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:6761,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:6762,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6765,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6770,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_route.c:6773,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 83
    argCount: 8
    argNames:
    - vty
    - negate
    - ip_str
    - afi
    - safi
    - rmap
    - backdoor
    - label_index
    argTypes:
    - struct vty*
    - char*
    - char*
    - afi_t
    - safi_t
    - char*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6777
      start: 6642
    functionDepth: 4
    functionLinenumber: 6642
    functionLinenumberEnd: 6777
    functionName: bgp_static_set
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - route_map_counter_increment
    - bgp_static_free
    - bgp_dest_get_bgp_static_info
    - VTY_DECLVAR_CONTEXT
    - bgp_dest_set_bgp_static_info
    - bgp_static_withdraw
    - str2prefix
    - bgp_dest_unlock_node
    - apply_mask
    - vty_out
    - XFREE
    - XSTRDUP
    - route_map_counter_decrement
    - bgp_static_new
    - bgp_static_update
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - bgp_node_lookup
    - route_map_lookup_by_name
    - bgp_node_get
    linkageType: ''
    returnType: int
    signature: "int bgp_static_set(struct vty *vty, const char *negate,\n\t\t\t  const
      char *ip_str, afi_t afi, safi_t safi,\n\t\t\t  const char *rmap, int backdoor,
      uint32_t label_index)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6788,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:6789,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6790,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6791,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:6792,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:6797,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6799,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6800,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6802,1
    - Dst: bgp_static_update_safi
      Src: /src/frr/bgpd/bgp_route.c:6804,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6805,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_route.c:6809,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6810,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6811,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6815,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6816
      start: 6779
    functionDepth: 5
    functionLinenumber: 6779
    functionLinenumberEnd: 6816
    functionName: bgp_static_add
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_static_update
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_static_update_safi
    - bgp_dest_has_bgp_path_info_data
    - SET_FLAG
    - UNSET_FLAG
    - FOREACH_AFI_SAFI
    - bgp_dest_get_bgp_table_info
    - bgp_dest_get_bgp_static_info
    linkageType: ''
    returnType: void
    signature: void bgp_static_add(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:6829,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6830,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6831,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:6832,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:6837,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6839,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6840,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6842,1
    - Dst: bgp_static_withdraw_safi
      Src: /src/frr/bgpd/bgp_route.c:6847,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6848,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6851,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:6853,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6854,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6856,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6859,1
    - Dst: bgp_static_withdraw
      Src: /src/frr/bgpd/bgp_route.c:6860,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6861,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:6863,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6864,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:6865,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6868
      start: 6820
    functionDepth: 4
    functionLinenumber: 6820
    functionLinenumberEnd: 6868
    functionName: bgp_static_delete
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_static_withdraw_safi
    - bgp_static_free
    - bgp_dest_has_bgp_path_info_data
    - bgp_dest_set_bgp_static_info
    - bgp_static_withdraw
    - FOREACH_AFI_SAFI
    - bgp_dest_get_bgp_table_info
    - bgp_dest_get_bgp_static_info
    linkageType: ''
    returnType: void
    signature: void bgp_static_delete(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6880,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6882,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6883,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:6884,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:6889,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6891,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6892,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6894,1
    - Dst: bgp_static_update_safi
      Src: /src/frr/bgpd/bgp_route.c:6896,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6897,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6901,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_route.c:6902,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6903,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6908,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6909
      start: 6870
    functionDepth: 5
    functionLinenumber: 6870
    functionLinenumberEnd: 6909
    functionName: bgp_static_redo_import_check
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_static_update
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_static_update_safi
    - bgp_dest_has_bgp_path_info_data
    - SET_FLAG
    - UNSET_FLAG
    - bgp_dest_get_bgp_table_info
    - bgp_dest_get_bgp_static_info
    linkageType: ''
    returnType: void
    signature: void bgp_static_redo_import_check(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6882,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6883,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:6884,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:6889,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6891,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6892,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6894,1
    - Dst: bgp_static_update_safi
      Src: /src/frr/bgpd/bgp_route.c:6896,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6897,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:6901,1
    - Dst: bgp_static_update
      Src: /src/frr/bgpd/bgp_route.c:6902,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6903,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6907
      start: 6881
    functionDepth: 5
    functionLinenumber: 6881
    functionLinenumberEnd: 6907
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 8
    functionsReached:
    - bgp_route_next
    - bgp_static_update
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_static_update_safi
    - bgp_dest_has_bgp_path_info_data
    - bgp_dest_get_bgp_table_info
    - bgp_dest_get_bgp_static_info
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:6921,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:6926,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:6926,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:6927,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:6934,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:6935,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_route.c:6937,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:6938,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:6939,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6943
      start: 6911
    functionDepth: 3
    functionLinenumber: 6911
    functionLinenumberEnd: 6943
    functionName: bgp_purge_af_static_redist_routes
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_unlink_nexthop
    - bgp_path_info_delete
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: void
    signature: "void bgp_purge_af_static_redist_routes(struct bgp *bgp, afi_t afi,\n\t\t\t\t\t
      \     safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_route.c:6954,1
    - Dst: bgp_purge_af_static_redist_routes
      Src: /src/frr/bgpd/bgp_route.c:6955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6956
      start: 6949
    functionDepth: 4
    functionLinenumber: 6949
    functionLinenumberEnd: 6956
    functionName: bgp_purge_static_redist_routes
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - FOREACH_AFI_SAFI
    - bgp_purge_af_static_redist_routes
    linkageType: ''
    returnType: void
    signature: void bgp_purge_static_redist_routes(struct bgp *bgp)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:6969,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:6981,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6983,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:6986,1
    - Dst: bgp_build_evpn_prefix
      Src: /src/frr/bgpd/bgp_route.c:6988,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_route.c:6989,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6990,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_route.c:6994,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:6996,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_route.c:7002,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_route.c:7003,1
    - Dst: str2esi
      Src: /src/frr/bgpd/bgp_route.c:7007,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7008,1
    - Dst: prefix_str2mac
      Src: /src/frr/bgpd/bgp_route.c:7011,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7012,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:7016,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:7017,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7019,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_route.c:7023,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_route.c:7026,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7028,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7034,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:7035,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7036,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_route.c:7037,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7038,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7040,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:7042,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7043,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7044,1
    - Dst: bgp_static_new
      Src: /src/frr/bgpd/bgp_route.c:7047,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:7055,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7058,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7059,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:7061,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:7063,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:7064,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:7070,1
    - Dst: str2esi
      Src: /src/frr/bgpd/bgp_route.c:7072,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:7076,1
    - Dst: prefix_str2mac
      Src: /src/frr/bgpd/bgp_route.c:7077,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_route.c:7081,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:7083,1
    - Dst: bgp_static_update_safi
      Src: /src/frr/bgpd/bgp_route.c:7086,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 84
    argCount: 12
    argNames:
    - afi
    - safi
    - vty
    - ip_str
    - rd_str
    - label_str
    - rmap_str
    - evpn_type
    - esi
    - gwip
    - ethtag
    - routermac
    argTypes:
    - afi_t
    - safi_t
    - struct vty*
    - char*
    - char*
    - char*
    - char*
    - int
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7090
      start: 6963
    functionDepth: 5
    functionLinenumber: 6963
    functionLinenumberEnd: 7090
    functionName: bgp_static_set_safi
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - atol
    - is_evpn_prefix_ipaddr_v4
    - bgp_static_update_safi
    - route_map_counter_increment
    - bgp_build_evpn_prefix
    - bgp_dest_set_bgp_table_info
    - VTY_DECLVAR_CONTEXT
    - memset
    - XCALLOC
    - bgp_dest_set_bgp_static_info
    - str2prefix
    - str2esi
    - prefix_copy
    - prefix_str2mac
    - bgp_dest_unlock_node
    - apply_mask
    - vty_out
    - bgp_table_init
    - XFREE
    - is_evpn_prefix_ipaddr_v6
    - encode_label
    - XSTRDUP
    - strtoul
    - bgp_static_new
    - route_map_counter_decrement
    - str2prefix_rd
    - route_map_lookup_by_name
    - bgp_dest_has_bgp_path_info_data
    - bgp_dest_get_bgp_table_info
    - bgp_node_get
    linkageType: ''
    returnType: int
    signature: "int bgp_static_set_safi(afi_t afi, safi_t safi, struct vty *vty,\n\t\t\tconst
      char *ip_str, const char *rd_str,\n\t\t\tconst char *label_str, const char *rmap_str,\n\t\t\tint
      evpn_type, const char *esi, const char *gwip,\n\t\t\tconst char *ethtag, const
      char *routermac)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:7098,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:7109,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7111,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:7114,1
    - Dst: bgp_build_evpn_prefix
      Src: /src/frr/bgpd/bgp_route.c:7116,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_route.c:7117,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7118,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_route.c:7121,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7123,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_route.c:7129,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_route.c:7130,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7133,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_route.c:7134,1
    - Dst: bgp_dest_set_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7135,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_route.c:7136,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7138,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:7139,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:7141,1
    - Dst: bgp_static_withdraw_safi
      Src: /src/frr/bgpd/bgp_route.c:7144,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:7146,1
    - Dst: bgp_static_free
      Src: /src/frr/bgpd/bgp_route.c:7147,1
    - Dst: bgp_dest_set_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:7148,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7149,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7150,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7152,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 10
    argNames:
    - afi
    - safi
    - vty
    - ip_str
    - rd_str
    - label_str
    - evpn_type
    - esi
    - gwip
    - ethtag
    argTypes:
    - afi_t
    - safi_t
    - struct vty*
    - char*
    - char*
    - char*
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7155
      start: 7093
    functionDepth: 4
    functionLinenumber: 7093
    functionLinenumberEnd: 7155
    functionName: bgp_static_unset_safi
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - atol
    - bgp_build_evpn_prefix
    - bgp_dest_set_bgp_table_info
    - bgp_dest_get_bgp_static_info
    - bgp_static_free
    - VTY_DECLVAR_CONTEXT
    - bgp_dest_set_bgp_static_info
    - str2prefix
    - bgp_dest_unlock_node
    - apply_mask
    - vty_out
    - bgp_table_init
    - encode_label
    - bgp_static_withdraw_safi
    - strtoul
    - str2prefix_rd
    - bgp_node_lookup
    - bgp_dest_has_bgp_path_info_data
    - bgp_dest_get_bgp_table_info
    - bgp_node_get
    linkageType: ''
    returnType: int
    signature: "int bgp_static_unset_safi(afi_t afi, safi_t safi, struct vty *vty,\n\t\t\t
      \ const char *ip_str, const char *rd_str,\n\t\t\t  const char *label_str, int
      evpn_type, const char *esi,\n\t\t\t  const char *gwip, const char *ethtag)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:7160,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7165,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7166,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:7167,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:7168,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:7169,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7171,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7172,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:7176,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:7177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - vty
    - afi
    - safi
    - rmap_name
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7180
      start: 7157
    functionDepth: 1
    functionLinenumber: 7157
    functionLinenumberEnd: 7180
    functionName: bgp_table_map_set
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - route_map_counter_decrement
    - VTY_DECLVAR_CONTEXT
    - bgp_fibupd_safi
    - route_map_lookup_by_name
    - route_map_counter_increment
    - XFREE
    - bgp_zebra_announce_table
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int bgp_table_map_set(struct vty *vty, afi_t afi, safi_t safi,\n\t\t\t
      \    const char *rmap_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:7185,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7189,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7190,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:7193,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:7194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - vty
    - afi
    - safi
    - rmap_name
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7197
      start: 7182
    functionDepth: 1
    functionLinenumber: 7182
    functionLinenumberEnd: 7197
    functionName: bgp_table_map_unset
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - route_map_counter_decrement
    - VTY_DECLVAR_CONTEXT
    - bgp_fibupd_safi
    - XFREE
    - bgp_zebra_announce_table
    linkageType: ''
    returnType: int
    signature: "int bgp_table_map_unset(struct vty *vty, afi_t afi, safi_t safi,\n\t\t\t
      \      const char *rmap_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:7203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - vty
    - bgp
    - afi
    - safi
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7206
      start: 7199
    functionDepth: 1
    functionLinenumber: 7199
    functionLinenumberEnd: 7206
    functionName: bgp_config_write_table_map
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_config_write_table_map(struct vty *vty, struct bgp *bgp,
      afi_t afi,\n\t\t\t\tsafi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:7287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7288
      start: 7285
    functionDepth: 0
    functionLinenumber: 7285
    functionLinenumberEnd: 7288
    functionName: bgp_aggregate_new
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_aggregate
    signature: struct bgp_aggregate *bgp_aggregate_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7292,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7293,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7294,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:7295,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:7296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - aggregate
    argTypes:
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7297
      start: 7290
    functionDepth: 1
    functionLinenumber: 7290
    functionLinenumberEnd: 7297
    functionName: bgp_aggregate_free
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - route_map_counter_decrement
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_aggregate_free(struct bgp_aggregate *aggregate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7309,1
    - Dst: aspath_empty
      Src: /src/frr/bgpd/bgp_route.c:7319,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7323,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:7324,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:7327,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:7328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - bgp
    - aggregate
    - pi
    argTypes:
    - struct bgp*
    - struct bgp_aggregate*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7331
      start: 7305
    functionDepth: 1
    functionLinenumber: 7305
    functionLinenumberEnd: 7331
    functionName: aggr_suppress_map_test
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - aspath_unintern
    - bgp_dest_get_prefix
    - SET_FLAG
    - bgp_attr_flush
    - route_map_apply
    - aspath_empty
    linkageType: ''
    returnType: bool
    signature: "bool aggr_suppress_map_test(struct bgp *bgp,\n\t\t\t\t   struct bgp_aggregate
      *aggregate,\n\t\t\t\t   struct bgp_path_info *pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/bgp_route.c:7340,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - aggregate
    - pi
    argTypes:
    - struct bgp_aggregate*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7341
      start: 7334
    functionDepth: 0
    functionLinenumber: 7334
    functionLinenumberEnd: 7341
    functionName: aggr_suppress_exists
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - listnode_lookup
    linkageType: ''
    returnType: bool
    signature: "bool aggr_suppress_exists(struct bgp_aggregate *aggregate,\n\t\t\t\t
      struct bgp_path_info *pi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: aggr_suppress_exists
      Src: /src/frr/bgpd/bgp_route.c:7354,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_route.c:7357,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_route.c:7361,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_route.c:7363,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_route.c:7366,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:7367,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:7368,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7369,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:7371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - aggregate
    - pi
    argTypes:
    - struct bgp_aggregate*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7376
      start: 7348
    functionDepth: 3
    functionLinenumber: 7348
    functionLinenumberEnd: 7376
    functionName: aggr_suppress_path
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_path_info_extra_get
    - bgp_dest_get_prefix
    - listcount
    - bgp_path_info_set_flag
    - listnode_add
    - zlog_debug
    - list_new
    - aggr_suppress_exists
    - BGP_DEBUG
    linkageType: ''
    returnType: bool
    signature: "bool aggr_suppress_path(struct bgp_aggregate *aggregate,\n\t\t\t       struct
      bgp_path_info *pi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aggr_suppress_exists
      Src: /src/frr/bgpd/bgp_route.c:7387,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_route.c:7390,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_route.c:7393,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:7394,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:7395,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7396,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_route.c:7398,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:7399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - aggregate
    - pi
    argTypes:
    - struct bgp_aggregate*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7404
      start: 7383
    functionDepth: 3
    functionLinenumber: 7383
    functionLinenumberEnd: 7404
    functionName: aggr_unsuppress_path
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - list_delete
    - bgp_dest_get_prefix
    - listcount
    - bgp_path_info_set_flag
    - zlog_debug
    - aggr_suppress_exists
    - listnode_delete
    - BGP_DEBUG
    linkageType: ''
    returnType: bool
    signature: "bool aggr_unsuppress_path(struct bgp_aggregate *aggregate,\n\t\t\t\t
      struct bgp_path_info *pi)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_route.c:7415,1
    - Dst: aspath_empty
      Src: /src/frr/bgpd/bgp_route.c:7418,1
    - Dst: aspath_cmp
      Src: /src/frr/bgpd/bgp_route.c:7426,1
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_route.c:7429,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7429,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_route.c:7432,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7432,1
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_route.c:7435,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7438,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 6
    argNames:
    - pi
    - origin
    - aspath
    - comm
    - ecomm
    - lcomm
    argTypes:
    - struct bgp_path_info*
    - uint8_t
    - struct aspath*
    - struct community*
    - struct ecommunity*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7442
      start: 7406
    functionDepth: 1
    functionLinenumber: 7406
    functionLinenumberEnd: 7442
    functionName: bgp_aggregate_info_same
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_get_asnotation
    - bgp_attr_get_lcommunity
    - CHECK_FLAG
    - bgp_attr_get_ecommunity
    - aspath_cmp
    - ecommunity_cmp
    - lcommunity_cmp
    - community_cmp
    - aspath_empty
    - bgp_attr_get_community
    linkageType: ''
    returnType: bool
    signature: "bool bgp_aggregate_info_same(struct bgp_path_info *pi, uint8_t origin,\n\t\t\t\t
      \   struct aspath *aspath,\n\t\t\t\t    struct community *comm,\n\t\t\t\t    struct
      ecommunity *ecomm,\n\t\t\t\t    struct lcommunity *lcomm)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7457,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7459,1
    - Dst: bgp_aggregate_info_same
      Src: /src/frr/bgpd/bgp_route.c:7476,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7478,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:7481,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:7483,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7485,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7487,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:7496,1
    - Dst: bgp_attr_aggregate_intern
      Src: /src/frr/bgpd/bgp_route.c:7498,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:7503,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:7504,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7505,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:7506,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7507,1
    - Dst: bgp_aggregate_delete
      Src: /src/frr/bgpd/bgp_route.c:7508,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:7509,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:7510,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:7515,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7518,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:7518,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7521,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:7532,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7533,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7537,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 52
    argCount: 11
    argNames:
    - bgp
    - afi
    - safi
    - p
    - origin
    - aspath
    - community
    - ecommunity
    - lcommunity
    - atomic_aggregate
    - aggregate
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct prefix*
    - uint8_t
    - struct aspath*
    - struct community*
    - struct ecommunity*
    - struct lcommunity*
    - uint8_t
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7538
      start: 7444
    functionDepth: 3
    functionLinenumber: 7444
    functionLinenumberEnd: 7538
    functionName: bgp_aggregate_install
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - aspath_free
    - ecommunity_free
    - community_free
    - info_make::info_make
    - bgp_attr_aggregate_intern
    - lcommunity_free
    - bgp_path_info_delete
    - bgp_aggregate_info_same
    - zlog_debug
    - bgp_aggregate_delete
    - SET_FLAG
    - flags::flags
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - BGP_DEBUG
    - bgp_node_get
    linkageType: ''
    returnType: void
    signature: "void bgp_aggregate_install(\n\tstruct bgp *bgp, afi_t afi, safi_t
      safi, const struct prefix *p,\n\tuint8_t origin, struct aspath *aspath, struct
      community *community,\n\tstruct ecommunity *ecommunity, struct lcommunity *lcommunity,\n\tuint8_t
      atomic_aggregate, struct bgp_aggregate *aggregate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_med_value
      Src: /src/frr/bgpd/bgp_route.c:7548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - aggregate
    - bgp
    - pi
    argTypes:
    - struct bgp_aggregate*
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7562
      start: 7545
    functionDepth: 2
    functionLinenumber: 7545
    functionLinenumberEnd: 7562
    functionName: bgp_aggregate_med_match
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_med_value
    linkageType: ''
    returnType: bool
    signature: "bool bgp_aggregate_med_match(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \   struct bgp *bgp, struct bgp_path_info *pi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7582,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7583,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7584,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7585,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7589,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7590,1
    - Dst: bgp_aggregate_med_match
      Src: /src/frr/bgpd/bgp_route.c:7594,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7602,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 5
    argNames:
    - aggregate
    - bgp
    - p
    - afi
    - safi
    argTypes:
    - struct bgp_aggregate*
    - struct bgp*
    - struct prefix*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7605
      start: 7570
    functionDepth: 3
    functionLinenumber: 7570
    functionLinenumberEnd: 7605
    functionName: bgp_aggregate_test_all_med
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_dest_get_prefix
    - bgp_aggregate_med_match
    - BGP_PATH_HOLDDOWN
    - bgp_dest_get_bgp_path_info
    - bgp_route_next_until
    - bgp_node_get
    linkageType: ''
    returnType: bool
    signature: "bool bgp_aggregate_test_all_med(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \      struct bgp *bgp, const struct prefix *p,\n\t\t\t\t       afi_t afi, safi_t
      safi)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7622,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7623,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7624,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7625,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7630,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7631,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:7639,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:7645,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7650,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7652,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 6
    argNames:
    - aggregate
    - bgp
    - p
    - afi
    - safi
    - suppress
    argTypes:
    - struct bgp_aggregate*
    - struct bgp*
    - struct prefix*
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7653
      start: 7611
    functionDepth: 4
    functionLinenumber: 7611
    functionLinenumberEnd: 7653
    functionName: bgp_aggregate_toggle_suppressed
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_process
    - bgp_dest_get_prefix
    - BGP_PATH_HOLDDOWN
    - bgp_dest_get_bgp_path_info
    - aggr_unsuppress_path
    - aggr_suppress_path
    - bgp_route_next_until
    - bgp_node_get
    linkageType: ''
    returnType: void
    signature: "void bgp_aggregate_toggle_suppressed(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \    struct bgp *bgp, const struct prefix *p,\n\t\t\t\t     afi_t afi, safi_t
      safi, bool suppress)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggregate_test_all_med
      Src: /src/frr/bgpd/bgp_route.c:7678,1
    - Dst: bgp_aggregate_toggle_suppressed
      Src: /src/frr/bgpd/bgp_route.c:7680,1
    - Dst: bgp_aggregate_med_match
      Src: /src/frr/bgpd/bgp_route.c:7683,1
    - Dst: bgp_aggregate_toggle_suppressed
      Src: /src/frr/bgpd/bgp_route.c:7693,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 6
    argNames:
    - aggregate
    - bgp
    - p
    - afi
    - safi
    - pi
    argTypes:
    - struct bgp_aggregate*
    - struct bgp*
    - struct prefix*
    - afi_t
    - safi_t
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7694
      start: 7665
    functionDepth: 5
    functionLinenumber: 7665
    functionLinenumberEnd: 7694
    functionName: bgp_aggregate_med_update
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_aggregate_med_match
    - bgp_aggregate_toggle_suppressed
    - bgp_aggregate_test_all_med
    linkageType: ''
    returnType: void
    signature: "void bgp_aggregate_med_update(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \    struct bgp *bgp, const struct prefix *p,\n\t\t\t\t     afi_t afi, safi_t
      safi,\n\t\t\t\t     struct bgp_path_info *pi)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:7715,1
    - Dst: bgp_aggregate_test_all_med
      Src: /src/frr/bgpd/bgp_route.c:7721,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7746,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7747,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7748,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7749,1
    - Dst: bgp_check_advertise
      Src: /src/frr/bgpd/bgp_route.c:7757,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7762,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7763,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:7767,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:7783,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:7784,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:7798,1
    - Dst: aggr_suppress_map_test
      Src: /src/frr/bgpd/bgp_route.c:7799,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:7800,1
    - Dst: bgp_compute_aggregate_aspath_hash
      Src: /src/frr/bgpd/bgp_route.c:7838,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7843,1
    - Dst: bgp_compute_aggregate_community_hash
      Src: /src/frr/bgpd/bgp_route.c:7844,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7846,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7850,1
    - Dst: bgp_compute_aggregate_ecommunity_hash
      Src: /src/frr/bgpd/bgp_route.c:7851,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7853,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7857,1
    - Dst: bgp_compute_aggregate_lcommunity_hash
      Src: /src/frr/bgpd/bgp_route.c:7858,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7860,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7863,1
    - Dst: bgp_compute_aggregate_aspath_val
      Src: /src/frr/bgpd/bgp_route.c:7866,1
    - Dst: bgp_compute_aggregate_community_val
      Src: /src/frr/bgpd/bgp_route.c:7867,1
    - Dst: bgp_compute_aggregate_ecommunity_val
      Src: /src/frr/bgpd/bgp_route.c:7868,1
    - Dst: bgp_compute_aggregate_lcommunity_val
      Src: /src/frr/bgpd/bgp_route.c:7869,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:7873,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_route.c:7888,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:7893,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:7898,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:7903,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:7906,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 82
    argCount: 5
    argNames:
    - bgp
    - p
    - afi
    - safi
    - aggregate
    argTypes:
    - struct bgp*
    - struct prefix*
    - afi_t
    - safi_t
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7911
      start: 7697
    functionDepth: 4
    functionLinenumber: 7697
    functionLinenumberEnd: 7911
    functionName: bgp_aggregate_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - bgp_aggregate_install
    - bgp_compute_aggregate_community_hash
    - bgp_attr_get_lcommunity
    - bgp_dest_get_prefix
    - bgp_compute_aggregate_aspath_hash
    - ecommunity_dup
    - bgp_dest_unlock_node
    - bgp_compute_aggregate_ecommunity_val
    - aspath_dup
    - bgp_attr_get_ecommunity
    - bgp_compute_aggregate_ecommunity_hash
    - bgp_process
    - aggr_suppress_path
    - bgp_compute_aggregate_community_val
    - lcommunity_dup
    - bgp_attr_get_community
    - bgp_route_next_until
    - aggr_suppress_map_test
    - bgp_aggregate_test_all_med
    - bgp_compute_aggregate_aspath_val
    - CHECK_FLAG
    - bgp_compute_aggregate_lcommunity_hash
    - ATTR_FLAG_BIT
    - bgp_check_advertise
    - community_dup
    - BGP_PATH_HOLDDOWN
    - bgp_dest_get_bgp_path_info
    - AGGREGATE_MED_VALID
    - bgp_compute_aggregate_lcommunity_val
    - bgp_node_get
    linkageType: ''
    returnType: bool
    signature: "bool bgp_aggregate_route(struct bgp *bgp, const struct prefix *p,
      afi_t afi,\n\t\t\t safi_t safi, struct bgp_aggregate *aggregate)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7925,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:7926,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_route.c:7927,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:7928,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:7934,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:7935,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_route.c:7948,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:7949,1
    - Dst: bgp_remove_aspath_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7963,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7967,1
    - Dst: bgp_remove_comm_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7970,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:7972,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7975,1
    - Dst: bgp_remove_ecomm_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7978,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:7980,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7983,1
    - Dst: bgp_remove_lcomm_from_aggregate_hash
      Src: /src/frr/bgpd/bgp_route.c:7986,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:7988,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:7995,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:7998,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:8001,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8003,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8005,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8008,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 45
    argCount: 5
    argNames:
    - bgp
    - p
    - afi
    - safi
    - aggregate
    argTypes:
    - struct bgp*
    - struct prefix*
    - afi_t
    - safi_t
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8009
      start: 7913
    functionDepth: 4
    functionLinenumber: 7913
    functionLinenumberEnd: 8009
    functionName: bgp_aggregate_delete
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - bgp_attr_get_lcommunity
    - bgp_dest_get_prefix
    - lcommunity_free
    - bgp_remove_lcomm_from_aggregate_hash
    - bgp_dest_unlock_node
    - community_free
    - listcount
    - bgp_remove_comm_from_aggregate_hash
    - bgp_attr_get_ecommunity
    - bgp_process
    - bgp_remove_aspath_from_aggregate_hash
    - bgp_attr_get_community
    - bgp_route_next_until
    - ecommunity_free
    - aspath_free
    - bgp_remove_ecomm_from_aggregate_hash
    - BGP_PATH_HOLDDOWN
    - bgp_dest_get_bgp_path_info
    - aggr_unsuppress_path
    - bgp_node_get
    linkageType: ''
    returnType: void
    signature: "void bgp_aggregate_delete(struct bgp *bgp, const struct prefix *p,
      afi_t afi,\n\t\t\t  safi_t safi, struct bgp_aggregate *aggregate)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8027,1
    - Dst: bgp_aggregate_med_update
      Src: /src/frr/bgpd/bgp_route.c:8049,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8052,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:8053,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8055,1
    - Dst: aggr_suppress_map_test
      Src: /src/frr/bgpd/bgp_route.c:8056,1
    - Dst: aggr_suppress_path
      Src: /src/frr/bgpd/bgp_route.c:8057,1
    - Dst: bgp_compute_aggregate_aspath
      Src: /src/frr/bgpd/bgp_route.c:8083,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8088,1
    - Dst: bgp_compute_aggregate_community
      Src: /src/frr/bgpd/bgp_route.c:8089,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8090,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8094,1
    - Dst: bgp_compute_aggregate_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8095,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8097,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8101,1
    - Dst: bgp_compute_aggregate_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8102,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8104,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_route.c:8109,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:8114,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8119,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8124,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:8127,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 45
    argCount: 6
    argNames:
    - bgp
    - aggr_p
    - pinew
    - afi
    - safi
    - aggregate
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8130
      start: 8011
    functionDepth: 6
    functionLinenumber: 8011
    functionLinenumberEnd: 8130
    functionName: bgp_add_route_to_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_attr_get_lcommunity
    - bgp_aggregate_install
    - bgp_aggregate_med_update
    - bgp_compute_aggregate_lcommunity
    - bgp_compute_aggregate_aspath
    - aspath_dup
    - CHECK_FLAG
    - bgp_attr_get_ecommunity
    - bgp_compute_aggregate_community
    - community_dup
    - ecommunity_dup
    - lcommunity_dup
    - bgp_compute_aggregate_ecommunity
    - aggr_suppress_path
    - AGGREGATE_MED_VALID
    - bgp_attr_get_community
    - aggr_suppress_map_test
    linkageType: ''
    returnType: void
    signature: "void bgp_add_route_to_aggregate(struct bgp *bgp,\n\t\t\t\t       const
      struct prefix *aggr_p,\n\t\t\t\t       struct bgp_path_info *pinew, afi_t afi,\n\t\t\t\t
      \      safi_t safi,\n\t\t\t\t       struct bgp_aggregate *aggregate)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8149,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:8153,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8159,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:8160,1
    - Dst: AGGREGATE_MED_VALID
      Src: /src/frr/bgpd/bgp_route.c:8163,1
    - Dst: aggr_suppress_map_test
      Src: /src/frr/bgpd/bgp_route.c:8164,1
    - Dst: aggr_unsuppress_path
      Src: /src/frr/bgpd/bgp_route.c:8165,1
    - Dst: bgp_aggregate_med_update
      Src: /src/frr/bgpd/bgp_route.c:8173,1
    - Dst: bgp_remove_aspath_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8186,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8189,1
    - Dst: bgp_remove_community_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8192,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:8193,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8195,1
    - Dst: bgp_remove_ecommunity_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8198,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:8199,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8201,1
    - Dst: bgp_remove_lcommunity_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8204,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:8205,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8210,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_route.c:8225,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_route.c:8230,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8235,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_route.c:8240,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:8243,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 50
    argCount: 6
    argNames:
    - bgp
    - afi
    - safi
    - pi
    - aggregate
    - aggr_p
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_path_info*
    - struct bgp_aggregate*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8246
      start: 8132
    functionDepth: 6
    functionLinenumber: 8132
    functionLinenumberEnd: 8246
    functionName: bgp_remove_route_from_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_aggregate_install
    - bgp_remove_community_from_aggregate
    - bgp_attr_get_lcommunity
    - bgp_remove_lcommunity_from_aggregate
    - bgp_remove_ecommunity_from_aggregate
    - aspath_dup
    - bgp_attr_get_ecommunity
    - bgp_process
    - lcommunity_dup
    - bgp_attr_get_community
    - bgp_remove_aspath_from_aggregate
    - AGGREGATE_MED_VALID
    - aggr_suppress_map_test
    - bgp_aggregate_med_update
    - CHECK_FLAG
    - community_dup
    - aggr_unsuppress_path
    - BGP_PATH_HOLDDOWN
    - ecommunity_dup
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_route_from_aggregate(struct bgp *bgp, afi_t afi,\n\t\t\t\t\t
      \   safi_t safi,\n\t\t\t\t\t    struct bgp_path_info *pi,\n\t\t\t\t\t    struct
      bgp_aggregate *aggregate,\n\t\t\t\t\t    const struct prefix *aggr_p)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top_nolock
      Src: /src/frr/bgpd/bgp_route.c:8259,1
    - Dst: BGP_PATH_HOLDDOWN
      Src: /src/frr/bgpd/bgp_route.c:8265,1
    - Dst: bgp_check_advertise
      Src: /src/frr/bgpd/bgp_route.c:8271,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:8274,1
    - Dst: bgp_dest_parent_nolock
      Src: /src/frr/bgpd/bgp_route.c:8277,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:8278,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8280,1
    - Dst: bgp_add_route_to_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8282,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8286,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 5
    argNames:
    - bgp
    - p
    - pi
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8287
      start: 8248
    functionDepth: 7
    functionLinenumber: 8248
    functionLinenumberEnd: 8287
    functionName: bgp_aggregate_increment
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 5
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_dest_get_prefix
    - bgp_dest_get_bgp_aggregate_info
    - bgp_check_advertise
    - BGP_PATH_HOLDDOWN
    - bgp_table_top_nolock
    - bgp_add_route_to_aggregate
    - bgp_dest_parent_nolock
    - bgp_node_get
    linkageType: ''
    returnType: void
    signature: "void bgp_aggregate_increment(struct bgp *bgp, const struct prefix
      *p,\n\t\t\t     struct bgp_path_info *pi, afi_t afi, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top_nolock
      Src: /src/frr/bgpd/bgp_route.c:8300,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:8306,1
    - Dst: bgp_dest_parent_nolock
      Src: /src/frr/bgpd/bgp_route.c:8309,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:8310,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8312,1
    - Dst: bgp_remove_route_from_aggregate
      Src: /src/frr/bgpd/bgp_route.c:8314,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8318,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - bgp
    - p
    - del
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8319
      start: 8289
    functionDepth: 7
    functionLinenumber: 8289
    functionLinenumberEnd: 8319
    functionName: bgp_aggregate_decrement
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 10
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_remove_route_from_aggregate
    - bgp_dest_get_prefix
    - bgp_dest_get_bgp_aggregate_info
    - bgp_table_top_nolock
    - bgp_dest_parent_nolock
    - bgp_node_get
    linkageType: ''
    returnType: void
    signature: "void bgp_aggregate_decrement(struct bgp *bgp, const struct prefix
      *p,\n\t\t\t     struct bgp_path_info *del, afi_t afi, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - origin
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8337
      start: 8326
    functionDepth: 0
    functionLinenumber: 8326
    functionLinenumberEnd: 8337
    functionName: bgp_origin2str
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *bgp_origin2str(uint8_t origin)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:8352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - v_state
    argTypes:
    - enum rpki_states
    assertStmts:
    - condition: (!"We should never get here this is a dev escape")
      pos:
        line_end: 8351
        line_start: 8351
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 8354
      start: 8339
    functionDepth: 1
    functionLinenumber: 8339
    functionLinenumberEnd: 8354
    functionName: bgp_rpki_validation2str
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *bgp_rpki_validation2str(enum rpki_states v_state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:8359,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:8366,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8368,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:8371,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:8374,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8376,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8381,1
    - Dst: bgp_aggregate_delete
      Src: /src/frr/bgpd/bgp_route.c:8382,1
    - Dst: bgp_aggregate_install
      Src: /src/frr/bgpd/bgp_route.c:8383,1
    - Dst: bgp_dest_set_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8387,1
    - Dst: bgp_free_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8389,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8390,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - vty
    - prefix_str
    - afi
    - safi
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8394
      start: 8356
    functionDepth: 5
    functionLinenumber: 8356
    functionLinenumberEnd: 8394
    functionName: bgp_aggregate_unset
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_aggregate_install
    - bgp_dest_unlock_node
    - bgp_dest_set_bgp_aggregate_info
    - apply_mask
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - bgp_node_lookup
    - bgp_dest_get_bgp_aggregate_info
    - bgp_aggregate_delete
    - str2prefix
    - bgp_free_aggregate_info
    linkageType: ''
    returnType: int
    signature: "int bgp_aggregate_unset(struct vty *vty, const char *prefix_str,\n\t\t\t
      \      afi_t afi, safi_t safi)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_route.c:8402,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8410,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:8416,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8418,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_route.c:8421,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8425,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:8431,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8432,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8435,1
    - Dst: bgp_aggregate_unset
      Src: /src/frr/bgpd/bgp_route.c:8437,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8439,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8440,1
    - Dst: bgp_aggregate_new
      Src: /src/frr/bgpd/bgp_route.c:8446,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_route.c:8461,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8464,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:8479,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:8480,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:8482,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:8483,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:8484,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:8488,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_route.c:8489,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:8492,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:8494,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_route.c:8495,1
    - Dst: bgp_dest_set_bgp_aggregate_info
      Src: /src/frr/bgpd/bgp_route.c:8498,1
    - Dst: bgp_aggregate_route
      Src: /src/frr/bgpd/bgp_route.c:8501,1
    - Dst: bgp_aggregate_free
      Src: /src/frr/bgpd/bgp_route.c:8502,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8503,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 60
    argCount: 10
    argNames:
    - vty
    - prefix_str
    - afi
    - safi
    - rmap
    - summary_only
    - as_set
    - origin
    - match_med
    - suppress_map
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - safi_t
    - char*
    - uint8_t
    - uint8_t
    - uint8_t
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8507
      start: 8396
    functionDepth: 6
    functionLinenumber: 8396
    functionLinenumberEnd: 8507
    functionName: bgp_aggregate_set
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_dest_set_bgp_aggregate_info
    - bgp_aggregate_unset
    - apply_mask
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - route_map_counter_decrement
    - bgp_aggregate_route
    - bgp_aggregate_free
    - bgp_dest_get_bgp_aggregate_info
    - route_map_lookup_by_name
    - zlog_warn
    - route_map_counter_increment
    - str2prefix
    - XFREE
    - bgp_aggregate_new
    - XSTRDUP
    - bgp_node_get
    linkageType: ''
    returnType: int
    signature: "int bgp_aggregate_set(struct vty *vty, const char *prefix_str, afi_t
      afi,\n\t\t\t     safi_t safi, const char *rmap,\n\t\t\t     uint8_t summary_only,
      uint8_t as_set,\n\t\t\t     uint8_t origin, bool match_med,\n\t\t\t     const
      char *suppress_map)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_route.c:8576,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8578,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8582,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8584,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:8588,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8590,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_route.c:8594,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_route.c:8596,1
    - Dst: bgp_aggregate_free
      Src: /src/frr/bgpd/bgp_route.c:8598,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - aggregate
    argTypes:
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8599
      start: 8573
    functionDepth: 2
    functionLinenumber: 8573
    functionLinenumberEnd: 8599
    functionName: bgp_free_aggregate_info
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - hash_clean_and_free
    - aspath_free
    - community_free
    - bgp_aggregate_free
    - lcommunity_free
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void bgp_free_aggregate_info(struct bgp_aggregate *aggregate)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8668,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_route.c:8673,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:8677,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8680,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:8680,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:8691,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:8716,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:8729,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:8733,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_route.c:8735,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_route.c:8737,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:8746,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:8751,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8755,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:8758,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:8764,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8767,1
    - Dst: bgp_redistribute_delete
      Src: /src/frr/bgpd/bgp_route.c:8768,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_route.c:8773,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_route.c:8774,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:8776,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_route.c:8779,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:8781,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_route.c:8789,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8790,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:8791,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8792,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8793,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_route.c:8797,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8801,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_route.c:8802,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:8804,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_route.c:8806,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_route.c:8808,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_route.c:8811,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8813,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8814,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8815,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_route.c:8821,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:8822,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_route.c:8828,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8830,1
    - Dst: flags::flags
      Src: /src/frr/bgpd/bgp_route.c:8830,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8834,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8835,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8836,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_route.c:8846,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 121
    argCount: 11
    argNames:
    - bgp
    - p
    - nexthop
    - ifindex
    - nhtype
    - distance
    - bhtype
    - metric
    - type
    - instance
    - tag
    argTypes:
    - struct bgp*
    - struct prefix*
    - union g_addr*
    - ifindex_t
    - enum nexthop_types_t
    - uint8_t
    - enum blackhole_type
    - uint32_t
    - uint8_t
    - unsigned short
    - route_tag_t
    assertStmts:
    - condition: (attr.aspath)
      pos:
        line_end: 8676
        line_start: 8676
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 8847
      start: 8651
    functionDepth: 8
    functionLinenumber: 8651
    functionLinenumberEnd: 8847
    functionName: bgp_redistribute_add
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_redistribute_delete
    - bgp_attr_unintern
    - bgp_path_info_restore
    - bgp_path_info_set_flag
    - bgp_aggregate_decrement
    - bgp_attr_intern
    - attrhash_cmp
    - memset
    - bgp_get_default
    - bgp_attr_default_set
    - assert
    - bgp_dest_unlock_node
    - aspath_unintern
    - bgp_afi_node_get
    - bgp_attr_set_aigp_metric
    - monotime
    - UNSET_FLAG
    - vpn_leak_from_vrf_update
    - flags::flags
    - bgp_in_graceful_shutdown
    - family2afi
    - bgp_process
    - bgp_attr_add_gshut_community
    - info_make::info_make
    - bgp_aggregate_increment
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_redist_lookup
    - SET_FLAG
    - bgp_attr_flush
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void bgp_redistribute_add(struct bgp *bgp, struct prefix *p,\n\t\t\t
      \ const union g_addr *nexthop, ifindex_t ifindex,\n\t\t\t  enum nexthop_types_t
      nhtype, uint8_t distance,\n\t\t\t  enum blackhole_type bhtype, uint32_t metric,\n\t\t\t
      \ uint8_t type, unsigned short instance,\n\t\t\t  route_tag_t tag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_route.c:8857,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_route.c:8859,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_route.c:8861,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:8864,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:8872,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:8872,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:8875,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:8876,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8877,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:8879,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 4
    argNames:
    - bgp
    - p
    - type
    - instance
    argTypes:
    - struct bgp*
    - struct prefix*
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8881
      start: 8849
    functionDepth: 8
    functionLinenumber: 8849
    functionLinenumberEnd: 8881
    functionName: bgp_redistribute_delete
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_afi_node_get
    - bgp_process
    - bgp_get_default
    - bgp_redist_lookup
    - bgp_path_info_delete
    - vpn_leak_from_vrf_withdraw
    - bgp_dest_get_bgp_path_info
    - family2afi
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: void
    signature: "void bgp_redistribute_delete(struct bgp *bgp, struct prefix *p, uint8_t
      type,\n\t\t\t     unsigned short instance)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:8893,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:8893,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:8894,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_route.c:8903,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:8903,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_route.c:8906,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:8906,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_route.c:8908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:8909,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_route.c:8911,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_route.c:8913,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 4
    argNames:
    - bgp
    - afi
    - type
    - instance
    argTypes:
    - struct bgp*
    - afi_t
    - int
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8916
      start: 8884
    functionDepth: 8
    functionLinenumber: 8884
    functionLinenumberEnd: 8916
    functionName: bgp_redistribute_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_path_info_reap
    - bgp_table_top
    - bgp_get_default
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_path_info_delete
    - vpn_leak_from_vrf_withdraw
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: void
    signature: "void bgp_redistribute_withdraw(struct bgp *bgp, afi_t afi, int type,\n\t\t\t
      \      unsigned short instance)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8927,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:8929,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:8930,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8933,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:8934,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8935,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8938,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8941,1
    - Dst: bgp_evpn_route2json
      Src: /src/frr/bgpd/bgp_route.c:8943,1
    - Dst: route_vty_out_flowspec
      Src: /src/frr/bgpd/bgp_route.c:8945,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8951,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:8953,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:8954,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8957,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:8958,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:8959,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8966,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:8968,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - dest
    - p
    - vty
    - json
    - wide
    argTypes:
    - struct bgp_dest*
    - struct prefix*
    - struct vty*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8970
      start: 8919
    functionDepth: 1
    functionLinenumber: 8919
    functionLinenumberEnd: 8970
    functionName: route_vty_out_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - route_vty_out_flowspec
    - bgp_evpn_route2json
    - vty_out
    - json_object_int_add
    - inet_ntop
    - json_object_string_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_route(struct bgp_dest *dest, const struct prefix
      *p,\n\t\t\t\tstruct vty *vty, json_object *json, bool wide)"
  - BBCount: 27
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 56
    argCount: 1
    argNames:
    - reason
    argTypes:
    - enum bgp_path_selection_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9033
      start: 8976
    functionDepth: 0
    functionLinenumber: 8976
    functionLinenumberEnd: 9033
    functionName: bgp_path_selection_reason2str
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *bgp_path_selection_reason2str(enum bgp_path_selection_reason
      reason)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9046,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9047,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9049,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9050,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:9052,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9053,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9055,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9056,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9057,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9060,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9061,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9063,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9064,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9066,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9067,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9068,1
    - Dst: bgp_path_selection_reason2str
      Src: /src/frr/bgpd/bgp_route.c:9069,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9073,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9074,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9079,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9082,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:9090,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9093,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9095,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9097,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9099,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9102,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9103,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9104,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9105,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:9106,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9109,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9110,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9112,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9115,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9117,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9119,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9121,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9122,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9124,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9129,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9131,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 54
    argCount: 4
    argNames:
    - vty
    - path
    - p
    - json_path
    argTypes:
    - struct vty*
    - struct bgp_path_info*
    - struct prefix*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9132
      start: 9036
    functionDepth: 2
    functionLinenumber: 9036
    functionLinenumberEnd: 9132
    functionName: route_vty_short_status_out
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - vty_out
    - hook_call
    - CHECK_FLAG
    - json_object_boolean_true_add
    - bgp_path_suppressed
    - json_object_string_add
    - bgp_path_selection_reason2str
    linkageType: ''
    returnType: void
    signature: "void route_vty_short_status_out(struct vty *vty,\n\t\t\t\t       struct
      bgp_path_info *path,\n\t\t\t\t       const struct prefix *p,\n\t\t\t\t       json_object
      *json_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - peer
    - bnc
    argTypes:
    - struct peer*
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9141
      start: 9134
    functionDepth: 1
    functionLinenumber: 9134
    functionLinenumberEnd: 9141
    functionName: bgp_nexthop_hostname
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: char
    signature: "char *bgp_nexthop_hostname(struct peer *peer,\n\t\t\t\t  struct bgp_nexthop_cache
      *bnc)"
  - BBCount: 72
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9157,1
    - Dst: bgp_nexthop_hostname
      Src: /src/frr/bgpd/bgp_route.c:9162,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9166,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9169,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9174,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9176,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9178,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9195,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9198,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9211,1
    - Dst: NEXTHOP_FAMILY
      Src: /src/frr/bgpd/bgp_route.c:9226,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_route.c:9230,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_route.c:9234,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:9238,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9243,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9245,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9249,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9253,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9256,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9260,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9263,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9267,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9269,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9273,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9275,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9280,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9284,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9290,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9294,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9300,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9302,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9307,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9309,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9311,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9316,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9320,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9325,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9330,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9336,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9338,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9341,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9343,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9345,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9349,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9353,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9355,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9359,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9362,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9367,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9369,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9374,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9376,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9377,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9382,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9386,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9388,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9396,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9397,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9402,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9406,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9408,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_route.c:9411,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9415,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9418,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9421,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9431,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9438,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9440,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9443,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9449,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9457,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9459,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9463,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9468,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9475,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9477,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9483,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9485,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9487,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9489,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9492,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9494,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9498,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9500,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9503,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9505,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9508,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9510,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9513,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9519,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:9522,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9527,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9530,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_route.c:9533,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9534,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:9535,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9539,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9540,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9541,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9543,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9544,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9550,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9553,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9556,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:9565,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9568,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9572,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9575,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9579,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9581,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_route.c:9584,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9586,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9587,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:9588,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9591,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9594,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9595,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9596,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9597,1
    - Dst: rfapi_vty_out_vncinfo
      Src: /src/frr/bgpd/bgp_route.c:9605,1
    CyclomaticComplexity: 83
    EdgeCount: 83
    ICount: 231
    argCount: 7
    argNames:
    - vty
    - p
    - path
    - display
    - safi
    - json_paths
    - wide
    argTypes:
    - struct vty*
    - struct prefix*
    - struct bgp_path_info*
    - int
    - safi_t
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9608
      start: 9144
    functionDepth: 3
    functionLinenumber: 9144
    functionLinenumberEnd: 9608
    functionName: route_vty_out
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - aspath_print_vty
    - esi_to_str
    - NEXTHOP_FAMILY
    - route_vty_out_route
    - json_object_string_add
    - json_object_string_addf
    - bgp_nexthop_hostname
    - snprintf
    - vty_out
    - bgp_attr_get_ecommunity
    - json_object_int_add
    - IPV6_ADDR_CMP
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - rfapi_vty_out_vncinfo
    - CHECK_FLAG
    - BGP_ATTR_MP_NEXTHOP_LEN_IP6
    - snprintfrr
    - ATTR_FLAG_BIT
    - json_object_boolean_true_add
    - json_object_object_add
    - bgp_evpn_is_esi_valid
    - route_vty_short_status_out
    linkageType: ''
    returnType: void
    signature: "void route_vty_out(struct vty *vty, const struct prefix *p,\n\t\t
      \  struct bgp_path_info *path, int display, safi_t safi,\n\t\t   json_object
      *json_paths, bool wide)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9622,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9623,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9625,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9626,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9627,1
    - Dst: bgp_evpn_route2json
      Src: /src/frr/bgpd/bgp_route.c:9633,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9635,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:9637,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9639,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9641,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9644,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9651,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9653,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9657,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9661,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9662,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_route.c:9666,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9667,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9673,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9674,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9677,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9678,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9681,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9685,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_route.c:9690,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9692,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9694,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9701,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9704,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9707,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9709,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9711,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9712,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9716,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9718,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9721,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9723,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9725,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9727,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9729,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:9731,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9732,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9734,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9736,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:9740,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9743,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:9747,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_route.c:9750,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9752,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9753,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9754,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:9757,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9758,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:9759,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9761,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:9763,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9765,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 87
    argCount: 8
    argNames:
    - vty
    - dest
    - p
    - attr
    - safi
    - use_json
    - json_ar
    - wide
    argTypes:
    - struct vty*
    - struct bgp_dest*
    - struct prefix*
    - struct attr*
    - safi_t
    - bool
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9766
      start: 9611
    functionDepth: 2
    functionLinenumber: 9611
    functionLinenumberEnd: 9766
    functionName: route_vty_out_tmp
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - bgp_evpn_route2json
    - json_object_object_addf
    - vty_out
    - aspath_print_vty
    - CHECK_FLAG
    - BGP_ATTR_MP_NEXTHOP_LEN_IP6
    - ATTR_FLAG_BIT
    - bgp_dest_get_bgp_path_info
    - json_object_int_add
    - inet_ntop
    - route_vty_out_route
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - CPP_NOTICE
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_tmp(struct vty *vty, struct bgp_dest *dest,\n\t\t
      \      const struct prefix *p, struct attr *attr, safi_t safi,\n\t\t       bool
      use_json, json_object *json_ar, bool wide)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9780,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9783,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9788,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9790,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_route.c:9797,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9798,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9802,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9806,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9810,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9813,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9817,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:9818,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9823,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9827,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:9828,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_route.c:9833,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9837,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9841,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_route.c:9845,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:9847,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:9849,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9850,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9852,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9853,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9856,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 48
    argCount: 6
    argNames:
    - vty
    - p
    - path
    - display
    - safi
    - json
    argTypes:
    - struct vty*
    - struct prefix*
    - struct bgp_path_info*
    - int
    - safi_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9857
      start: 9768
    functionDepth: 3
    functionLinenumber: 9768
    functionLinenumberEnd: 9857
    functionName: route_vty_out_tag
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - bgp_is_valid_label
    - vty_out
    - decode_label
    - json_object_array_add
    - BGP_ATTR_MP_NEXTHOP_LEN_IP6
    - snprintfrr
    - json_object_int_add
    - route_vty_out_route
    - inet_ntop
    - json_object_string_add
    - json_object_string_addf
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - route_vty_short_status_out
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_tag(struct vty *vty, const struct prefix *p,\n\t\t
      \      struct bgp_path_info *path, int display, safi_t safi,\n\t\t       json_object
      *json)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9872,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9873,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9874,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9878,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9882,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9884,1
    - Dst: NEXTHOP_FAMILY
      Src: /src/frr/bgpd/bgp_route.c:9888,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9893,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9895,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9898,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9900,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9906,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9909,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9913,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9917,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9919,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9925,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9927,1
    - Dst: bgp_attr_get_evpn_overlay
      Src: /src/frr/bgpd/bgp_route.c:9932,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9935,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:9937,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9939,1
    - Dst: ecommunity_lookup
      Src: /src/frr/bgpd/bgp_route.c:9941,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:9942,1
    - Dst: ecom_mac2str
      Src: /src/frr/bgpd/bgp_route.c:9946,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9949,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:9951,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:9954,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9959,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:9961,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:9963,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 5
    argNames:
    - vty
    - p
    - path
    - display
    - json_paths
    argTypes:
    - struct vty*
    - struct prefix*
    - struct bgp_path_info*
    - int
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9965
      start: 9859
    functionDepth: 3
    functionLinenumber: 9859
    functionLinenumberEnd: 9965
    functionName: route_vty_out_overlay
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_array_add
    - bgp_attr_get_ecommunity
    - ecom_mac2str
    - NEXTHOP_FAMILY
    - ecommunity_lookup
    - route_vty_out_route
    - json_object_string_add
    - json_object_object_add
    - XFREE
    - json_object_string_addf
    - route_vty_short_status_out
    - bgp_attr_get_evpn_overlay
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_overlay(struct vty *vty, const struct prefix *p,\n\t\t\t
      \  struct bgp_path_info *path, int display,\n\t\t\t   json_object *json_paths)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:9979,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:9982,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:9987,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9989,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9991,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9995,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9997,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:9999,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10000,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:10005,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10007,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10009,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10011,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10015,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10018,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10020,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:10022,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 8
    argNames:
    - vty
    - p
    - path
    - display
    - afi
    - safi
    - use_json
    - json_paths
    argTypes:
    - struct vty*
    - struct prefix*
    - struct bgp_path_info*
    - int
    - afi_t
    - safi_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10024
      start: 9968
    functionDepth: 3
    functionLinenumber: 9968
    functionLinenumberEnd: 10024
    functionName: damp_route_vty_out
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_array_add
    - aspath_print_vty
    - route_vty_out_route
    - json_object_string_add
    - bgp_damp_reuse_time_vty
    - route_vty_short_status_out
    linkageType: ''
    returnType: void
    signature: "void damp_route_vty_out(struct vty *vty, const struct prefix *p,\n\t\t\t
      \      struct bgp_path_info *path, int display,\n\t\t\t       afi_t afi, safi_t
      safi, bool use_json,\n\t\t\t       json_object *json_paths)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10042,1
    - Dst: route_vty_short_status_out
      Src: /src/frr/bgpd/bgp_route.c:10047,1
    - Dst: route_vty_out_route
      Src: /src/frr/bgpd/bgp_route.c:10051,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10055,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10058,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10060,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10062,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10065,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10067,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10069,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_route.c:10069,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10072,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10073,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10074,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10075,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10079,1
    - Dst: aspath_print_vty
      Src: /src/frr/bgpd/bgp_route.c:10082,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10084,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10086,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10088,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10089,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_route.c:10091,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10095,1
    - Dst: bgp_damp_reuse_time_vty
      Src: /src/frr/bgpd/bgp_route.c:10096,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10101,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10104,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:10107,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 8
    argNames:
    - vty
    - p
    - path
    - display
    - afi
    - safi
    - use_json
    - json_paths
    argTypes:
    - struct vty*
    - struct prefix*
    - struct bgp_path_info*
    - int
    - afi_t
    - safi_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10109
      start: 10027
    functionDepth: 3
    functionLinenumber: 10027
    functionLinenumberEnd: 10109
    functionName: flap_route_vty_out
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_array_add
    - aspath_print_vty
    - CHECK_FLAG
    - json_object_int_add
    - route_vty_out_route
    - json_object_string_add
    - bgp_damp_reuse_time_vty
    - peer_uptime
    - route_vty_short_status_out
    linkageType: ''
    returnType: void
    signature: "void flap_route_vty_out(struct vty *vty, const struct prefix *p,\n\t\t\t
      \      struct bgp_path_info *path, int display,\n\t\t\t       afi_t afi, safi_t
      safi, bool use_json,\n\t\t\t       json_object *json_paths)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10124,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10127,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10131,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:10134,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10143,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10145,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10148,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10152,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10154,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 5
    argNames:
    - vty
    - peer
    - first
    - header
    - json_adv_to
    argTypes:
    - struct vty*
    - struct peer*
    - int*
    - char*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10157
      start: 10111
    functionDepth: 1
    functionLinenumber: 10111
    functionLinenumberEnd: 10157
    functionName: route_vty_out_advertised_to
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_object_addf
    - vty_out
    - CHECK_FLAG
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_advertised_to(struct vty *vty, struct peer *peer,\n\t\t\t\t\tint
      *first, const char *header,\n\t\t\t\t\tjson_object *json_adv_to)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10165,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_route.c:10165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - d
    argTypes:
    - struct vty*
    - struct bgp_addpath_info_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10169
      start: 10159
    functionDepth: 1
    functionLinenumber: 10159
    functionLinenumberEnd: 10169
    functionName: route_vty_out_tx_ids
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - vty_out
    - bgp_addpath_names
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_tx_ids(struct vty *vty,\n\t\t\t\t struct bgp_addpath_info_data
      *d)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10177,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10180,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10182,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_route.c:10184,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10188,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_route.c:10191,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10192,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10194,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10197,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10200,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10203,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10206,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10209,1
    - Dst: bgp_evpn_attr_is_sync
      Src: /src/frr/bgpd/bgp_route.c:10214,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10215,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10224,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 4
    argNames:
    - vty
    - pi
    - attr
    - json_path
    argTypes:
    - struct vty*
    - struct bgp_path_info*
    - struct attr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10228
      start: 10171
    functionDepth: 1
    functionLinenumber: 10171
    functionLinenumberEnd: 10228
    functionName: route_vty_out_detail_es_info
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vty_out
    - CHECK_FLAG
    - esi_to_str
    - bgp_evpn_attr_is_sync
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_detail_es_info(struct vty *vty,\n\t\t\t\t\t struct
      bgp_path_info *pi,\n\t\t\t\t\t struct attr *attr,\n\t\t\t\t\t json_object *json_path)"
  - BBCount: 151
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10260,1
    - Dst: bgp_nexthop_hostname
      Src: /src/frr/bgpd/bgp_route.c:10263,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:10270,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10273,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10274,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10275,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10280,1
    - Dst: bgp_evpn_label2str
      Src: /src/frr/bgpd/bgp_route.c:10285,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10292,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10295,1
    - Dst: ipaddr2str
      Src: /src/frr/bgpd/bgp_route.c:10305,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10309,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10312,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10316,1
    - Dst: is_pi_family_evpn
      Src: /src/frr/bgpd/bgp_route.c:10327,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10328,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10329,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_route.c:10329,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10330,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10332,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10334,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10336,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10337,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10338,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10343,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10346,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10347,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_route.c:10347,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10348,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10350,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:10352,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_route.c:10361,1
    - Dst: json_object_lock
      Src: /src/frr/bgpd/bgp_route.c:10362,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10363,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10367,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10373,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10375,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10377,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10380,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10382,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10387,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10387,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10389,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10391,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10394,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10399,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10402,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10408,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10411,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10414,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10417,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10419,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10422,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10423,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10425,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10428,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10432,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:10440,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10444,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10449,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10454,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10458,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10463,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10468,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10473,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10477,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10483,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10487,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10492,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10496,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10498,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10502,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10506,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10512,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10513,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_route.c:10516,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_route.c:10518,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10521,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10527,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10531,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10538,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10543,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_route.c:10552,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10554,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10557,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10560,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10563,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10567,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10570,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10577,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10579,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10583,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10587,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10591,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10596,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10598,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10602,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10606,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10608,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10612,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10616,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10617,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10619,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10638,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10641,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10643,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10648,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_route.c:10652,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10653,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/bgpd/bgp_route.c:10654,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10661,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10664,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10669,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10674,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10675,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10679,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10683,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10684,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10687,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10691,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10694,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10697,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:10698,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10709,1
    - Dst: bgp_evpn_is_esi_valid
      Src: /src/frr/bgpd/bgp_route.c:10714,1
    - Dst: route_vty_out_detail_es_info
      Src: /src/frr/bgpd/bgp_route.c:10715,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10721,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10724,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10727,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10729,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10731,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10734,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10736,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10739,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10742,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10744,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:10745,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10747,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_route.c:10748,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10753,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10755,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10760,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10765,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_route.c:10767,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10770,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10772,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10774,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10778,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10782,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10784,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10788,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10791,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10794,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgp_route.c:10797,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10800,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10804,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10807,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10810,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10815,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10816,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10818,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10822,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10824,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10827,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10828,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10830,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10834,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10836,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10839,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10842,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10844,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10849,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10850,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/bgpd/bgp_route.c:10851,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10853,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10855,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10859,1
    - Dst: aspath_get_first_as
      Src: /src/frr/bgpd/bgp_route.c:10860,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10864,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:10865,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10869,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10871,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:10875,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10878,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_route.c:10879,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10880,1
    - Dst: bgp_path_selection_reason2str
      Src: /src/frr/bgpd/bgp_route.c:10882,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10884,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10885,1
    - Dst: bgp_path_selection_reason2str
      Src: /src/frr/bgpd/bgp_route.c:10886,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10892,1
    - Dst: bgp_rpki_validation2str
      Src: /src/frr/bgpd/bgp_route.c:10894,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10896,1
    - Dst: bgp_rpki_validation2str
      Src: /src/frr/bgpd/bgp_route.c:10897,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10901,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10904,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10907,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10909,1
    - Dst: community_str
      Src: /src/frr/bgpd/bgp_route.c:10910,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10910,1
    - Dst: json_object_lock
      Src: /src/frr/bgpd/bgp_route.c:10912,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10912,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10913,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10915,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10917,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:10918,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10923,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10925,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:10926,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:10928,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10929,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10932,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_route.c:10933,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10938,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10940,1
    - Dst: lcommunity_str
      Src: /src/frr/bgpd/bgp_route.c:10941,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10941,1
    - Dst: json_object_lock
      Src: /src/frr/bgpd/bgp_route.c:10943,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10943,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10944,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10946,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10948,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:10949,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10954,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10955,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10958,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:10960,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:10964,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_route.c:10968,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_route.c:10970,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:10974,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:10976,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_route.c:10979,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_route.c:10980,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:10983,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10996,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:10999,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11002,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11005,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11012,1
    - Dst: bgp_damp_info_vty
      Src: /src/frr/bgpd/bgp_route.c:11016,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:11019,1
    - Dst: is_route_parent_evpn
      Src: /src/frr/bgpd/bgp_route.c:11020,1
    - Dst: mpls_lse_decode
      Src: /src/frr/bgpd/bgp_route.c:11021,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11025,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11027,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:11033,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11036,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11043,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11046,1
    - Dst: bgp_addpath_info_has_ids
      Src: /src/frr/bgpd/bgp_route.c:11052,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11054,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11060,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11069,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_route.c:11071,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11075,1
    - Dst: route_vty_out_tx_ids
      Src: /src/frr/bgpd/bgp_route.c:11078,1
    - Dst: bgp_addpath_is_addpath_used
      Src: /src/frr/bgpd/bgp_route.c:11085,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:11088,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_route.c:11090,1
    - Dst: bgp_adj_out_lookup
      Src: /src/frr/bgpd/bgp_route.c:11091,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_route.c:11093,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_route.c:11096,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11098,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:11101,1
    CyclomaticComplexity: 190
    EdgeCount: 190
    ICount: 468
    argCount: 9
    argNames:
    - vty
    - bgp
    - bn
    - p
    - path
    - afi
    - safi
    - rpki_curr_state
    - json_paths
    argTypes:
    - struct vty*
    - struct bgp*
    - struct bgp_dest*
    - struct prefix*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    - enum rpki_states
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11107
      start: 10230
    functionDepth: 3
    functionLinenumber: 10230
    functionLinenumberEnd: 11107
    functionName: route_vty_out_detail
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - BGP_RD_AS_FORMAT
    - json_object_string_add
    - json_object_string_addf
    - json_object_boolean_false_add
    - bgp_addpath_id_for_peer
    - bgp_attr_get_aigp_metric
    - bgp_attr_get_lcommunity
    - json_object_boolean_add
    - bgp_nexthop_hostname
    - aspath_str_update
    - community_str
    - bgp_is_valid_label
    - bgp_addpath_is_addpath_used
    - mpls_lse_decode
    - bgp_dest_get_prefix
    - bgp_rpki_validation2str
    - bgp_attr_get_cluster
    - bgp_addpath_names
    - is_pi_family_evpn
    - inet_ntop
    - is_route_parent_evpn
    - bgp_addpath_encode_tx
    - vrf_lookup_by_id
    - route_vty_out_tx_ids
    - bgp_evpn_label2str
    - bgp_adj_out_lookup
    - if
    - bgp_get_imported_bpi_ultimate
    - vty_out
    - bgp_attr_get_ecommunity
    - aspath_get_first_as
    - bgp_addpath_info_has_ids
    - json_object_int_add
    - lcommunity_str
    - bgp_path_info_mpath_count
    - bgp_confederation_peers_check
    - json_object_new_string
    - json_object_lock
    - bgp_attr_get_community
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - route_vty_out_detail_es_info
    - CHECK_FLAG
    - BGP_ATTR_MP_NEXTHOP_LEN_IP6
    - ATTR_FLAG_BIT
    - json_object_boolean_true_add
    - json_object_object_add
    - VRF_LOGNAME
    - bgp_evpn_is_esi_valid
    - ipaddr2str
    - ALL_LIST_ELEMENTS
    - bgp_damp_info_vty
    - bgp_path_selection_reason2str
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_detail(struct vty *vty, struct bgp *bgp, struct
      bgp_dest *bn,\n\t\t\t  const struct prefix *p, struct bgp_path_info *path,\n\t\t\t
      \ afi_t afi, safi_t safi,\n\t\t\t  enum rpki_states rpki_curr_state,\n\t\t\t
      \ json_object *json_paths)"
  - BBCount: 94
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11248,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11249,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11250,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11259,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11262,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11275,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11277,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11278,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_route.c:11278,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11279,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11281,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11283,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11289,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:11300,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:11300,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:11301,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:11305,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:11311,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:11318,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_route.c:11324,1
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_route.c:11336,1
    - Dst: bgp_community2alias
      Src: /src/frr/bgpd/bgp_route.c:11340,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:11343,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:11346,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:11349,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11353,1
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_route.c:11354,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11354,1
    - Dst: bgp_community2alias
      Src: /src/frr/bgpd/bgp_route.c:11360,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_route.c:11363,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:11366,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:11369,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:11379,1
    - Dst: bgp_regexec
      Src: /src/frr/bgpd/bgp_route.c:11397,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/bgp_route.c:11404,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_route.c:11411,1
    - Dst: as_list_apply
      Src: /src/frr/bgpd/bgp_route.c:11418,1
    - Dst: prep_for_rmap_apply
      Src: /src/frr/bgpd/bgp_route.c:11431,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_route.c:11434,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:11435,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_route.c:11446,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_route.c:11452,1
    - Dst: IN_CLASSC
      Src: /src/frr/bgpd/bgp_route.c:11453,1
    - Dst: IN_CLASSB
      Src: /src/frr/bgpd/bgp_route.c:11456,1
    - Dst: IN_CLASSA
      Src: /src/frr/bgpd/bgp_route.c:11459,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgp_route.c:11465,1
    - Dst: community_match
      Src: /src/frr/bgpd/bgp_route.c:11475,1
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_route.c:11481,1
    - Dst: community_list_match
      Src: /src/frr/bgpd/bgp_route.c:11487,1
    - Dst: community_list_exact_match
      Src: /src/frr/bgpd/bgp_route.c:11493,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11499,1
    - Dst: lcommunity_match
      Src: /src/frr/bgpd/bgp_route.c:11500,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11501,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11509,1
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_route.c:11510,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11511,1
    - Dst: lcommunity_list_match
      Src: /src/frr/bgpd/bgp_route.c:11518,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11519,1
    - Dst: lcommunity_list_exact_match
      Src: /src/frr/bgpd/bgp_route.c:11527,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11528,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_route.c:11533,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11538,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11539,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11548,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11553,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11555,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11556,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11557,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11559,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11560,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_route.c:11560,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11562,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11564,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11565,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11566,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11567,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11571,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11574,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11576,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11583,1
    - Dst: damp_route_vty_out
      Src: /src/frr/bgpd/bgp_route.c:11589,1
    - Dst: flap_route_vty_out
      Src: /src/frr/bgpd/bgp_route.c:11594,1
    - Dst: bgp_rd_from_dest
      Src: /src/frr/bgpd/bgp_route.c:11602,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_route.c:11606,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:11608,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_route.c:11613,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_route.c:11615,1
    - Dst: route_vty_out
      Src: /src/frr/bgpd/bgp_route.c:11619,1
    - Dst: bgp_fs_nlri_get_string
      Src: /src/frr/bgpd/bgp_route.c:11636,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_route.c:11641,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11644,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11648,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11653,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11655,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11680,1
    - Dst: bgp_rd_from_dest
      Src: /src/frr/bgpd/bgp_route.c:11682,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_route.c:11684,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:11686,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11689,1
    - Dst: vty_json_no_pretty
      Src: /src/frr/bgpd/bgp_route.c:11702,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11706,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:11711,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11724,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11729,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11731,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11738,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11742,1
    CyclomaticComplexity: 167
    EdgeCount: 167
    ICount: 265
    argCount: 13
    argNames:
    - vty
    - bgp
    - safi
    - table
    - type
    - output_arg
    - rd
    - is_last
    - output_cum
    - total_cum
    - json_header_depth
    - show_flags
    - rpki_target_state
    argTypes:
    - struct vty*
    - struct bgp*
    - safi_t
    - struct bgp_table*
    - enum bgp_show_type
    - void*
    - char*
    - int
    - unsigned long*
    - unsigned long*
    - unsigned long*
    - uint16_t
    - enum rpki_states
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11749
      start: 11229
    functionDepth: 4
    functionLinenumber: 11229
    functionLinenumberEnd: 11749
    functionName: bgp_show_table
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_community2alias
    - prep_for_rmap_apply
    - bgp_rd_from_dest
    - access_list_apply
    - route_vty_out
    - bgp_attr_get_lcommunity
    - damp_route_vty_out
    - hook_call
    - prefix_match
    - bgp_dest_get_prefix
    - community_match
    - vty_json_no_pretty
    - as_list_apply
    - community_cmp
    - ntohl
    - bgp_fs_nlri_get_string
    - lcommunity_list_match
    - vty_out
    - IN_CLASSC
    - prefix_list_apply
    - json_object_free
    - bgp_regexec
    - XFREE
    - community_list_match
    - family2afi
    - IN_CLASSB
    - frrstr_split
    - bgp_attr_get_community
    - community_list_exact_match
    - bgp_route_next
    - json_object_new_array
    - route_vty_out_detail_header
    - strtoul
    - route_vty_out_detail
    - bgp_table_top
    - lcommunity_list_exact_match
    - CHECK_FLAG
    - strcmp
    - sockunion_same
    - flap_route_vty_out
    - bgp_attr_flush
    - lcommunity_match
    - route_map_apply
    - ASN_FORMAT
    - lcommunity_cmp
    - bgp_dest_get_bgp_path_info
    - IN_CLASSA
    linkageType: ''
    returnType: int
    signature: "int bgp_show_table(struct vty *vty, struct bgp *bgp, safi_t safi,\n\t\t\t
      \ struct bgp_table *table, enum bgp_show_type type,\n\t\t\t  void *output_arg,
      const char *rd, int is_last,\n\t\t\t  unsigned long *output_cum, unsigned long
      *total_cum,\n\t\t\t  unsigned long *json_header_depth, uint16_t show_flags,\n\t\t\t
      \ enum rpki_states rpki_target_state)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11762,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:11766,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:11767,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:11769,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_route.c:11770,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:11773,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_route.c:11778,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_route.c:11779,1
    - Dst: bgp_show_table
      Src: /src/frr/bgpd/bgp_route.c:11780,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11790,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11793,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11798,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 8
    argNames:
    - vty
    - bgp
    - safi
    - table
    - prd_match
    - type
    - output_arg
    - show_flags
    argTypes:
    - struct vty*
    - struct bgp*
    - safi_t
    - struct bgp_table*
    - struct prefix_rd*
    - enum bgp_show_type
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11801
      start: 11751
    functionDepth: 5
    functionLinenumber: 11751
    functionLinenumberEnd: 11801
    functionName: bgp_show_table_rd
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - vty_out
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - memcmp
    - prefix_rd2str
    - memcpy
    - bgp_show_table
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: int
    signature: "int bgp_show_table_rd(struct vty *vty, struct bgp *bgp, safi_t safi,\n\t\t
      \     struct bgp_table *table, struct prefix_rd *prd_match,\n\t\t      enum
      bgp_show_type type, void *output_arg,\n\t\t      uint16_t show_flags)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11809,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:11812,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11817,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11819,1
    - Dst: bgp_show_table_rd
      Src: /src/frr/bgpd/bgp_route.c:11830,1
    - Dst: bgp_show_table_flowspec
      Src: /src/frr/bgpd/bgp_route.c:11835,1
    - Dst: bgp_evpn_show_all_routes
      Src: /src/frr/bgpd/bgp_route.c:11841,1
    - Dst: bgp_show_table
      Src: /src/frr/bgpd/bgp_route.c:11843,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 8
    argNames:
    - vty
    - bgp
    - afi
    - safi
    - type
    - output_arg
    - show_flags
    - rpki_target_state
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    - safi_t
    - enum bgp_show_type
    - void*
    - uint16_t
    - enum rpki_states
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11846
      start: 11803
    functionDepth: 6
    functionLinenumber: 11803
    functionLinenumberEnd: 11846
    functionName: bgp_show
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - vty_out
    - bgp_evpn_show_all_routes
    - bgp_get_default
    - CHECK_FLAG
    - bgp_show_table_rd
    - bgp_show_table
    - bgp_show_table_flowspec
    linkageType: ''
    returnType: int
    signature: "int bgp_show(struct vty *vty, struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t
      \   enum bgp_show_type type, void *output_arg,\n\t\t    uint16_t show_flags,
      enum rpki_states rpki_target_state)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11855,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11858,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:11860,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11864,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11868,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11873,1
    - Dst: bgp_show
      Src: /src/frr/bgpd/bgp_route.c:11878,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11883,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11885,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - vty
    - afi
    - safi
    - show_flags
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11886
      start: 11848
    functionDepth: 7
    functionLinenumber: 11848
    functionLinenumberEnd: 11886
    functionName: bgp_show_all_instances_routes_vty
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    - vty_out
    - bgp_show
    linkageType: ''
    returnType: void
    signature: "void bgp_show_all_instances_routes_vty(struct vty *vty, afi_t afi,\n\t\t\t\t\t
      \     safi_t safi, uint16_t show_flags)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: mpls_lse_decode
      Src: /src/frr/bgpd/bgp_route.c:11923,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_route.c:11925,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11929,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_route.c:11930,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:11935,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_route.c:11937,1
    - Dst: bgp_evpn_route2json
      Src: /src/frr/bgpd/bgp_route.c:11940,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11944,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_route.c:11950,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11959,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11960,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:11963,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11965,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11974,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:11977,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11979,1
    - Dst: bgp_labeled_safi
      Src: /src/frr/bgpd/bgp_route.c:11983,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:11984,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:11986,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_route.c:11989,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:11992,1
    - Dst: bgp_path_suppressed
      Src: /src/frr/bgpd/bgp_route.c:11994,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12000,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12003,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12005,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12007,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12008,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12010,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12012,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12014,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12017,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12018,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12019,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12022,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_route.c:12023,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12028,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12030,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12033,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12036,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12040,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12043,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12046,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12049,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12052,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12055,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12058,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12061,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12064,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12067,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12069,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12071,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12073,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12075,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12079,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12081,1
    - Dst: bgp_addpath_is_addpath_used
      Src: /src/frr/bgpd/bgp_route.c:12089,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:12090,1
    - Dst: bgp_adj_out_lookup
      Src: /src/frr/bgpd/bgp_route.c:12091,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:12093,1
    - Dst: route_vty_out_advertised_to
      Src: /src/frr/bgpd/bgp_route.c:12095,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12104,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_route.c:12105,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12106,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:12108,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12112,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12113,1
    - Dst: bgp_show_path_info
      Src: /src/frr/bgpd/bgp_route.c:12118,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12128,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:12130,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_route.c:12134,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:12143,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:12145,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_route.c:12151,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12153,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:12161,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:12163,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:12164,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_route.c:12165,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12166,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:12172,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:12175,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_route.c:12177,1
    - Dst: bgp_rd_from_dest
      Src: /src/frr/bgpd/bgp_route.c:12184,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12191,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_route.c:12201,1
    - Dst: bgp_show_route_in_table
      Src: /src/frr/bgpd/bgp_route.c:12205,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:12222,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12224,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_route.c:12228,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:12231,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:12234,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:12235,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12236,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_route.c:12238,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:12240,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_route.c:12244,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12248,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:12251,1
    - Dst: bgp_show_path_info
      Src: /src/frr/bgpd/bgp_route.c:12255,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:12259,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:12265,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:12266,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12267,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_route.c:12269,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:12271,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:12283,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:12284,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:12286,1
    - Dst: evpn_type5_prefix_match
      Src: /src/frr/bgpd/bgp_route.c:12291,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:12299,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 108
    argCount: 9
    argNames:
    - vty
    - bgp
    - dest
    - p
    - prd
    - afi
    - safi
    - json
    - incremental_print
    argTypes:
    - struct vty*
    - struct bgp*
    - struct bgp_dest*
    - struct prefix*
    - struct prefix_rd*
    - afi_t
    - safi_t
    - json_object*
    - bool
    assertStmts:
    - condition: (!"Reached end of function when we were not expecting it")
      pos:
        line_end: 12200
        line_start: 12200
        source_file: /src/frr/bgpd/bgp_route.c
    constantsTouched: []
    func_position:
      end: 12303
      start: 11889
    functionDepth: 4
    functionLinenumber: 11889
    functionLinenumberEnd: 12303
    functionName: route_vty_out_detail_header
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 2
    functionsReached:
    - bgp_evpn_route2json
    - prefix_rd2str
    - BGP_RD_AS_FORMAT
    - memcmp
    - evpn_type5_prefix_match
    - bgp_rd_from_dest
    - json_object_string_add
    - bgp_path_suppressed
    - json_object_string_addf
    - bgp_node_match
    - bgp_is_valid_label
    - bgp_addpath_is_addpath_used
    - mpls_lse_decode
    - bgp_show_path_info
    - bgp_dest_get_prefix
    - hook_call
    - bgp_adj_out_lookup
    - str2prefix
    - assert
    - bgp_dest_unlock_node
    - vty_out
    - afi2family
    - json_object_int_add
    - route_vty_out_advertised_to
    - bgp_show_route_in_table
    - bgp_attr_get_community
    - json_object_new_object
    - json_object_new_array
    - community_include
    - route_vty_out_detail_header
    - json_object_object_addf
    - route_vty_out_detail
    - bgp_route_next
    - bgp_table_top
    - CHECK_FLAG
    - bgp_labeled_safi
    - json_object_object_add
    - bgp_dest_get_bgp_path_info
    - ALL_LIST_ELEMENTS
    - vty_json
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void route_vty_out_detail_header(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      struct bgp_dest *dest, const struct prefix *p,\n\t\t\t\t const struct prefix_rd
      *prd, afi_t afi,\n\t\t\t\t safi_t safi, json_object *json,\n\t\t\t\t bool incremental_print)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:12370,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12373,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12375,1
    - Dst: bgp_show_route_in_table
      Src: /src/frr/bgpd/bgp_route.c:12384,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 10
    argNames:
    - vty
    - bgp
    - ip_str
    - afi
    - safi
    - prd
    - prefix_check
    - pathtype
    - rpki_target_state
    - use_json
    argTypes:
    - struct vty*
    - struct bgp*
    - char*
    - afi_t
    - safi_t
    - struct prefix_rd*
    - int
    - enum bgp_path_type
    - enum rpki_states
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12387
      start: 12364
    functionDepth: 1
    functionLinenumber: 12364
    functionLinenumberEnd: 12387
    functionName: bgp_show_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - bgp_show_route_in_table
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int bgp_show_route(struct vty *vty, struct bgp *bgp, const char *ip_str,\n\t\t\t
      \ afi_t afi, safi_t safi, struct prefix_rd *prd,\n\t\t\t  int prefix_check,
      enum bgp_path_type pathtype,\n\t\t\t  enum rpki_states rpki_target_state, bool
      use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:12402,1
    - Dst: buffer_new
      Src: /src/frr/bgpd/bgp_route.c:12404,1
    - Dst: buffer_putc
      Src: /src/frr/bgpd/bgp_route.c:12407,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_route.c:12409,1
    - Dst: buffer_putstr
      Src: /src/frr/bgpd/bgp_route.c:12411,1
    - Dst: buffer_putc
      Src: /src/frr/bgpd/bgp_route.c:12415,1
    - Dst: buffer_getstr
      Src: /src/frr/bgpd/bgp_route.c:12417,1
    - Dst: buffer_free
      Src: /src/frr/bgpd/bgp_route.c:12418,1
    - Dst: lcommunity_str2com
      Src: /src/frr/bgpd/bgp_route.c:12420,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:12421,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12423,1
    - Dst: bgp_show
      Src: /src/frr/bgpd/bgp_route.c:12427,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_route.c:12432,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 8
    argNames:
    - vty
    - bgp
    - argc
    - argv
    - exact
    - afi
    - safi
    - uj
    argTypes:
    - struct vty*
    - struct bgp*
    - int
    - struct cmd_token**
    - bool
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12434
      start: 12389
    functionDepth: 7
    functionLinenumber: 12389
    functionLinenumberEnd: 12434
    functionName: bgp_show_lcommunity
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - strmatch
    - bgp_show
    - buffer_new
    - buffer_free
    - vty_out
    - lcommunity_str2com
    - buffer_getstr
    - lcommunity_free
    - SET_FLAG
    - XFREE
    - buffer_putstr
    - buffer_putc
    linkageType: ''
    returnType: int
    signature: "int bgp_show_lcommunity(struct vty *vty, struct bgp *bgp, int argc,\n\t\t\t
      \      struct cmd_token **argv, bool exact, afi_t afi,\n\t\t\t       safi_t
      safi, bool uj)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:12444,1
    - Dst: community_list_lookup
      Src: /src/frr/bgpd/bgp_route.c:12447,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:12450,1
    - Dst: bgp_show
      Src: /src/frr/bgpd/bgp_route.c:12455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 7
    argNames:
    - vty
    - bgp
    - lcom
    - exact
    - afi
    - safi
    - uj
    argTypes:
    - struct vty*
    - struct bgp*
    - char*
    - bool
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12459
      start: 12436
    functionDepth: 7
    functionLinenumber: 12436
    functionLinenumberEnd: 12459
    functionName: bgp_show_lcommunity_list
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_show
    - SET_FLAG
    - community_list_lookup
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int bgp_show_lcommunity_list(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \   const char *lcom, bool exact, afi_t afi,\n\t\t\t\t    safi_t safi, bool
      uj)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_route.c:12578,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:12578,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:12583,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:12584,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:12586,1
    - Dst: bgp_table_stats
      Src: /src/frr/bgpd/bgp_route.c:12592,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12593
      start: 12573
    functionDepth: 2
    functionLinenumber: 12573
    functionLinenumberEnd: 12593
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 9
    functionsReached:
    - strmatch
    - json_object_new_array
    - get_afi_safi_str
    - json_object_object_add
    - bgp_table_stats
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_route.c:13427,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:13430,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:13450,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:13456,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:13460,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:13461,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:13462,1
    - Dst: bgp_table_stats_rn
      Src: /src/frr/bgpd/bgp_route.c:13463,1
    - Dst: bgp_table_stats_rn
      Src: /src/frr/bgpd/bgp_route.c:13465,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13468
      start: 13423
    functionDepth: 1
    functionLinenumber: 13423
    functionLinenumberEnd: 13468
    functionName: bgp_table_stats_walker
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_table_stats_rn
    - EVENT_ARG
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void bgp_table_stats_walker(struct event *t)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_route.c:13476,1
    - Dst: bgp_table_stats_single
      Src: /src/frr/bgpd/bgp_route.c:13477,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_route.c:13501,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13502,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:13504,1
    - Dst: end_table_stats
      Src: /src/frr/bgpd/bgp_route.c:13507,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13511,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:13512,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:13514,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:13520,1
    - Dst: event_execute
      Src: /src/frr/bgpd/bgp_route.c:13522,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13533,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13540,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13545,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13558,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13565,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13570,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13583,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13585,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13590,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13598,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13601,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13602,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13606,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13609,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13613,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13616,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13617,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13621,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13624,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13629,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13632,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13633,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13636,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13639,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13642,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13645,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13646,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13649,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13652,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13655,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13658,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13659,1
    - Dst: json_object_double_add
      Src: /src/frr/bgpd/bgp_route.c:13662,1
    - Dst: pow
      Src: /src/frr/bgpd/bgp_route.c:13665,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13671,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13673,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:13678,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13686,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_route.c:13705,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:13708,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_route.c:13713,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:13714,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:13716,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:13718,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_route.c:13723,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 106
    argCount: 4
    argNames:
    - vty
    - afi
    - safi
    - json_array
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13725
      start: 13470
    functionDepth: 2
    functionLinenumber: 13470
    functionLinenumberEnd: 13725
    functionName: bgp_table_stats_all
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - end_table_stats
    - vty_out
    - memset
    - bgp_table_stats_single
    - snprintf
    - json_object_array_add
    - event_execute
    - json_object_double_add
    - pow
    - json_object_int_add
    - json_object_string_add
    - get_afi_safi_str
    - json_object_object_add
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void bgp_table_stats_all(struct vty *vty, afi_t afi, safi_t safi,\n\t\t\t\tstruct
      json_object *json_array)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_stats_all
      Src: /src/frr/bgpd/bgp_route.c:13731,1
    - Dst: bgp_table_stats_single
      Src: /src/frr/bgpd/bgp_route.c:13735,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - vty
    - bgp
    - afi
    - safi
    - json_array
    argTypes:
    - struct vty*
    - struct bgp*
    - afi_t
    - safi_t
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13736
      start: 13727
    functionDepth: 3
    functionLinenumber: 13727
    functionLinenumberEnd: 13736
    functionName: bgp_table_stats
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 1
    functionsReached:
    - bgp_table_stats_all
    - bgp_table_stats_single
    linkageType: ''
    returnType: int
    signature: "int bgp_table_stats(struct vty *vty, struct bgp *bgp, afi_t afi,\n\t\t\t
      \  safi_t safi, struct json_object *json_array)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:13783,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13790,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13792,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13794,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13798,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13800,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13802,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13805,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13807,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:13808,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13812,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_route.c:13813,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 2
    argNames:
    - rn
    - pc
    argTypes:
    - struct bgp_dest*
    - struct peer_pcounts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13818
      start: 13773
    functionDepth: 1
    functionLinenumber: 13773
    functionLinenumberEnd: 13818
    functionName: bgp_peer_count_proc
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - flog_err
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void bgp_peer_count_proc(struct bgp_dest *rn, struct peer_pcounts *pc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_route.c:13824,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:13829,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:13830,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:13831,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:13833,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:13834,1
    - Dst: bgp_peer_count_proc
      Src: /src/frr/bgpd/bgp_route.c:13835,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:13838,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:13838,1
    - Dst: bgp_peer_count_proc
      Src: /src/frr/bgpd/bgp_route.c:13839,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13840
      start: 13820
    functionDepth: 2
    functionLinenumber: 13820
    functionLinenumberEnd: 13840
    functionName: bgp_peer_count_walker
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_peer_count_proc
    - EVENT_ARG
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void bgp_peer_count_walker(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:13851,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:13852,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:13858,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13861,1
    - Dst: json_object_to_json_string
      Src: /src/frr/bgpd/bgp_route.c:13861,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:13862,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:13863,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13865,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_route.c:13870,1
    - Dst: event_execute
      Src: /src/frr/bgpd/bgp_route.c:13879,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:13882,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:13883,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:13884,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:13885,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:13889,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:13892,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:13895,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:13897,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_route.c:13901,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:13905,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13906,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:13908,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13910,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_route.c:13911,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13914,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13915,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13918,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13922,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:13923,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 5
    argNames:
    - vty
    - peer
    - afi
    - safi
    - use_json
    argTypes:
    - struct vty*
    - struct peer*
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13929
      start: 13842
    functionDepth: 2
    functionLinenumber: 13842
    functionLinenumberEnd: 13929
    functionName: bgp_peer_counts
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - memset
    - CHECK_FLAG
    - event_execute
    - json_object_int_add
    - json_object_free
    - json_object_string_add
    - json_object_to_json_string
    - get_afi_safi_str
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int bgp_peer_counts(struct vty *vty, struct peer *peer, afi_t afi,\n\t\t\t
      \  safi_t safi, bool use_json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14076,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:14077,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14079,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14081,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:14085,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:14087,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14090,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14095,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14097,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14098,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14099,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14101,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14105,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14106,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14107,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14108,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14115,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 10
    argNames:
    - vty
    - peer
    - table
    - header1
    - header2
    - json
    - json_scode
    - json_ocode
    - wide
    - detail
    argTypes:
    - struct vty*
    - struct peer*
    - struct bgp_table*
    - int*
    - int*
    - json_object*
    - json_object*
    - json_object*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14119
      start: 14065
    functionDepth: 1
    functionLinenumber: 14065
    functionLinenumberEnd: 14119
    functionName: show_adj_route_header
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_string_addf
    - vty_out
    - json_object_object_add
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void show_adj_route_header(struct vty *vty, struct peer *peer,\n\t\t\t\t
      \ struct bgp_table *table, int *header1,\n\t\t\t\t  int *header2, json_object
      *json,\n\t\t\t\t  json_object *json_scode,\n\t\t\t\t  json_object *json_ocode,
      bool wide,\n\t\t\t\t  bool detail)"
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14139,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14140,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14141,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_route.c:14155,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14158,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:14162,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14166,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:14167,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14185,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:14186,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_route.c:14192,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_route.c:14193,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14209,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:14210,1
    - Dst: bgp_output_modifier
      Src: /src/frr/bgpd/bgp_route.c:14215,1
    - Dst: show_adj_route_header
      Src: /src/frr/bgpd/bgp_route.c:14219,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14224,1
    - Dst: bgp_show_path_info
      Src: /src/frr/bgpd/bgp_route.c:14226,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:14231,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:14237,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:14238,1
    - Dst: peer_subgroup
      Src: /src/frr/bgpd/bgp_route.c:14243,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14246,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14248,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_route.c:14250,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14252,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14254,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:14258,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:14260,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14262,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14266,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14271,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14273,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14274,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14275,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14277,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14281,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14282,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14283,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14284,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14287,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:14294,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:14294,1
    - Dst: show_adj_route_header
      Src: /src/frr/bgpd/bgp_route.c:14300,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14308,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14311,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:14325,1
    - Dst: bgp_input_filter
      Src: /src/frr/bgpd/bgp_route.c:14326,1
    - Dst: bgp_input_modifier
      Src: /src/frr/bgpd/bgp_route.c:14332,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:14338,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14349,1
    - Dst: bgp_show_path_info
      Src: /src/frr/bgpd/bgp_route.c:14364,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:14370,1
    - Dst: route_vty_out_tmp
      Src: /src/frr/bgpd/bgp_route.c:14374,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:14377,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_route.c:14381,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_route.c:14382,1
    - Dst: show_adj_route_header
      Src: /src/frr/bgpd/bgp_route.c:14386,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:14392,1
    - Dst: bgp_output_modifier
      Src: /src/frr/bgpd/bgp_route.c:14395,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14404,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14410,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14419,1
    - Dst: bgp_show_path_info
      Src: /src/frr/bgpd/bgp_route.c:14420,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:14431,1
    - Dst: route_vty_out_tmp
      Src: /src/frr/bgpd/bgp_route.c:14437,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_route.c:14447,1
    - Dst: show_adj_route_header
      Src: /src/frr/bgpd/bgp_route.c:14452,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:14456,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:14458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14463,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14469,1
    - Dst: bgp_show_path_info
      Src: /src/frr/bgpd/bgp_route.c:14470,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_route.c:14476,1
    - Dst: route_vty_out_tmp
      Src: /src/frr/bgpd/bgp_route.c:14480,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 187
    argCount: 18
    argNames:
    - vty
    - peer
    - table
    - afi
    - safi
    - type
    - rmap_name
    - json
    - json_ar
    - json_scode
    - json_ocode
    - show_flags
    - header1
    - header2
    - rd_str
    - match
    - output_count
    - filtered_count
    argTypes:
    - struct vty*
    - struct peer*
    - struct bgp_table*
    - afi_t
    - safi_t
    - enum bgp_show_adj_route_type
    - char*
    - json_object*
    - json_object*
    - json_object*
    - json_object*
    - uint16_t
    - int*
    - int*
    - char*
    - struct prefix*
    - unsigned long*
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14487
      start: 14121
    functionDepth: 4
    functionLinenumber: 14121
    functionLinenumberEnd: 14487
    functionName: show_adj_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - peer_subgroup
    - json_object_string_add
    - json_object_string_addf
    - bgp_input_filter
    - bgp_node_match
    - SUBGRP_FOREACH_PEER
    - bgp_show_path_info
    - bgp_dest_get_prefix
    - show_adj_route_header
    - route_vty_out_tmp
    - bgp_dest_unlock_node
    - vty_out
    - json_object_int_add
    - bgp_input_modifier
    - json_object_new_object
    - bgp_route_next
    - json_object_object_addf
    - bgp_table_top
    - CHECK_FLAG
    - bgp_output_modifier
    - bgp_attr_flush
    - json_object_object_add
    - bgp_dest_get_bgp_path_info
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void show_adj_route(struct vty *vty, struct peer *peer, struct bgp_table
      *table,\n\t       afi_t afi, safi_t safi, enum bgp_show_adj_route_type type,\n\t
      \      const char *rmap_name, json_object *json, json_object *json_ar,\n\t       json_object
      *json_scode, json_object *json_ocode,\n\t       uint16_t show_flags, int *header1,
      int *header2, char *rd_str,\n\t       const struct prefix *match, unsigned long
      *output_count,\n\t       unsigned long *filtered_count)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14500,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14525,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14526,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14527,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14528,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_route.c:14530,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14532,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14533,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14534,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14535,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14536,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14537,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14538,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14539,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14540,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14541,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_route.c:14544,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14546,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14547,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14548,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14553,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14556,1
    - Dst: json_object_to_json_string
      Src: /src/frr/bgpd/bgp_route.c:14556,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14557,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14558,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14559,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14560,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14569,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14572,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14575,1
    - Dst: json_object_to_json_string
      Src: /src/frr/bgpd/bgp_route.c:14575,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14576,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14577,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14578,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14579,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14581,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:14600,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:14601,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:14602,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14610,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:14613,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_route.c:14616,1
    - Dst: show_adj_route
      Src: /src/frr/bgpd/bgp_route.c:14619,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:14627,1
    - Dst: show_adj_route
      Src: /src/frr/bgpd/bgp_route.c:14634,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:14641,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_route.c:14644,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14645,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_route.c:14646,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14655,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14656,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_route.c:14659,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14662,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14666,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 87
    argCount: 8
    argNames:
    - vty
    - peer
    - afi
    - safi
    - type
    - rmap_name
    - match
    - show_flags
    argTypes:
    - struct vty*
    - struct peer*
    - afi_t
    - safi_t
    - enum bgp_show_adj_route_type
    - char*
    - struct prefix*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14671
      start: 14489
    functionDepth: 5
    functionLinenumber: 14489
    functionLinenumberEnd: 14671
    functionName: peer_adj_routes
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - bgp_route_next
    - show_adj_route
    - vty_out
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - json_object_int_add
    - json_object_free
    - json_object_string_add
    - json_object_to_json_string
    - json_object_object_add
    - prefix_rd2str
    - vty_json
    - bgp_dest_get_bgp_table_info
    - CPP_NOTICE
    linkageType: ''
    returnType: int
    signature: "int peer_adj_routes(struct vty *vty, struct peer *peer, afi_t afi,\n\t\t\t
      \  safi_t safi, enum bgp_show_adj_route_type type,\n\t\t\t   const char *rmap_name,
      const struct prefix *match,\n\t\t\t   uint16_t show_flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_route.c:14936,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_route.c:14941,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_route.c:14942,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14945,1
    - Dst: json_object_to_json_string
      Src: /src/frr/bgpd/bgp_route.c:14946,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_route.c:14947,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:14949,1
    - Dst: bgp_show
      Src: /src/frr/bgpd/bgp_route.c:14957,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 6
    argNames:
    - vty
    - peer
    - afi
    - safi
    - type
    - use_json
    argTypes:
    - struct vty*
    - struct peer*
    - afi_t
    - safi_t
    - enum bgp_show_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14959
      start: 14929
    functionDepth: 7
    functionLinenumber: 14929
    functionLinenumberEnd: 14959
    functionName: bgp_show_neighbor_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - bgp_show
    - vty_out
    - SET_FLAG
    - json_object_free
    - json_object_string_add
    - json_object_to_json_string
    linkageType: ''
    returnType: int
    signature: "int bgp_show_neighbor_route(struct vty *vty, struct peer *peer,\n\t\t\t\t
      \  afi_t afi, safi_t safi,\n\t\t\t\t   enum bgp_show_type type, bool use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_route.c:15107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15108
      start: 15105
    functionDepth: 0
    functionLinenumber: 15105
    functionLinenumberEnd: 15108
    functionName: bgp_distance_new
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_distance
    signature: struct bgp_distance *bgp_distance_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:15112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bdistance
    argTypes:
    - struct bgp_distance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15113
      start: 15110
    functionDepth: 0
    functionLinenumber: 15110
    functionLinenumberEnd: 15113
    functionName: bgp_distance_free
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_distance_free(struct bgp_distance *bdistance)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_afi
      Src: /src/frr/bgpd/bgp_route.c:15126,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_route.c:15127,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:15129,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15131,1
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_route.c:15135,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_route.c:15138,1
    - Dst: bgp_dest_get_bgp_distance_info
      Src: /src/frr/bgpd/bgp_route.c:15139,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15141,1
    - Dst: bgp_distance_new
      Src: /src/frr/bgpd/bgp_route.c:15143,1
    - Dst: bgp_dest_set_bgp_distance_info
      Src: /src/frr/bgpd/bgp_route.c:15144,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:15151,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_route.c:15154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - vty
    - distance_str
    - ip_str
    - access_list_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15157
      start: 15115
    functionDepth: 1
    functionLinenumber: 15115
    functionLinenumberEnd: 15157
    functionName: bgp_distance_set
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_node_safi
    - bgp_distance_new
    - vty_out
    - bgp_dest_set_bgp_distance_info
    - bgp_node_afi
    - bgp_dest_get_bgp_distance_info
    - str2prefix
    - XFREE
    - atoi
    - XSTRDUP
    - bgp_node_get
    linkageType: ''
    returnType: int
    signature: "int bgp_distance_set(struct vty *vty, const char *distance_str,\n\t\t\t
      \   const char *ip_str, const char *access_list_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_afi
      Src: /src/frr/bgpd/bgp_route.c:15170,1
    - Dst: bgp_node_safi
      Src: /src/frr/bgpd/bgp_route.c:15171,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:15173,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15175,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:15179,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15181,1
    - Dst: bgp_dest_get_bgp_distance_info
      Src: /src/frr/bgpd/bgp_route.c:15185,1
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_route.c:15186,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15189,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15190,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_route.c:15194,1
    - Dst: bgp_distance_free
      Src: /src/frr/bgpd/bgp_route.c:15195,1
    - Dst: bgp_dest_set_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:15197,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15198,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15199,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 4
    argNames:
    - vty
    - distance_str
    - ip_str
    - access_list_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15202
      start: 15159
    functionDepth: 1
    functionLinenumber: 15159
    functionLinenumberEnd: 15202
    functionName: bgp_distance_unset
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_node_safi
    - vty_out
    - bgp_node_afi
    - bgp_node_lookup
    - bgp_dest_set_bgp_path_info
    - bgp_dest_get_bgp_distance_info
    - str2prefix
    - XFREE
    - bgp_distance_free
    - atoi
    linkageType: ''
    returnType: int
    signature: "int bgp_distance_unset(struct vty *vty, const char *distance_str,\n\t\t\t
      \     const char *ip_str, const char *access_list_str)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_route.c:15226,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_route.c:15234,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_route.c:15237,1
    - Dst: bgp_dest_get_bgp_distance_info
      Src: /src/frr/bgpd/bgp_route.c:15239,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15240,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_route.c:15243,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_route.c:15245,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_route.c:15252,1
    - Dst: bgp_dest_get_bgp_static_info
      Src: /src/frr/bgpd/bgp_route.c:15254,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15255,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 5
    argNames:
    - p
    - pinfo
    - afi
    - safi
    - bgp
    argTypes:
    - struct prefix*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15278
      start: 15205
    functionDepth: 1
    functionLinenumber: 15205
    functionLinenumberEnd: 15278
    functionName: bgp_distance_apply
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - sockunion2hostprefix
    - bgp_dest_unlock_node
    - bgp_node_lookup
    - bgp_dest_get_bgp_distance_info
    - access_list_apply
    - access_list_lookup
    - bgp_node_match
    - bgp_get_imported_bpi_ultimate
    - bgp_dest_get_bgp_static_info
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t bgp_distance_apply(const struct prefix *p, struct bgp_path_info
      *pinfo,\n\t\t\t   afi_t afi, safi_t safi, struct bgp *bgp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:15292,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:15298,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:15299,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:15302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 3
    argNames:
    - bgp
    - update_afi
    - update_safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15304
      start: 15284
    functionDepth: 1
    functionLinenumber: 15284
    functionLinenumberEnd: 15304
    functionName: bgp_announce_routes_distance_update
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - bgp_fibupd_safi
    - bgp_zebra_announce_table
    linkageType: ''
    returnType: void
    signature: "void bgp_announce_routes_distance_update(struct bgp *bgp,\n\t\t\t\t\t\tafi_t
      update_afi,\n\t\t\t\t\t\tsafi_t update_safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgp_route.c:15292,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_route.c:15298,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_route.c:15299,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_route.c:15302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15303
      start: 15291
    functionDepth: 1
    functionLinenumber: 15291
    functionLinenumberEnd: 15303
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 9
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - bgp_fibupd_safi
    - bgp_zebra_announce_table
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_route.c:15555,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15557,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_route.c:15562,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15564,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_route.c:15570,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15572,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_route.c:15576,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_route.c:15580,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_route.c:15581,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:15582,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_route.c:15584,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_route.c:15586,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_route.c:15589,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:15593,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:15597,1
    - Dst: bgp_damp_info_free
      Src: /src/frr/bgpd/bgp_route.c:15601,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15610,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_route.c:15613,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_route.c:15615,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_route.c:15619,1
    - Dst: bgp_damp_info_free
      Src: /src/frr/bgpd/bgp_route.c:15623,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_route.c:15632,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 61
    argCount: 7
    argNames:
    - vty
    - view_name
    - ip_str
    - afi
    - safi
    - prd
    - prefix_check
    argTypes:
    - struct vty*
    - char*
    - char*
    - afi_t
    - safi_t
    - struct prefix_rd*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15637
      start: 15540
    functionDepth: 1
    functionLinenumber: 15540
    functionLinenumberEnd: 15637
    functionName: bgp_clear_damp_route
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_damp_info_free
    - bgp_node_match
    - bgp_dest_unlock_node
    - vty_out
    - bgp_table_top
    - bgp_get_default
    - bgp_dest_get_prefix
    - afi2family
    - memcmp
    - str2prefix
    - bgp_dest_get_bgp_path_info
    - bgp_lookup_by_name
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: int
    signature: "int bgp_clear_damp_route(struct vty *vty, const char *view_name,\n\t\t\t\tconst
      char *ip_str, afi_t afi, safi_t safi,\n\t\t\t\tstruct prefix_rd *prd, int prefix_check)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_route.c:15710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15711
      start: 15705
    functionDepth: 1
    functionLinenumber: 15705
    functionLinenumberEnd: 15711
    functionName: show_bgp_peerhash_entry
    functionSourceFile: /src/frr/bgpd/bgp_route.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_bgp_peerhash_entry(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_community.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: community_new
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 3
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct community
    signature: struct community *community_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community.c:33,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community.c:34,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_community.c:37,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - com
    argTypes:
    - struct community**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 42
    functionName: community_free
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 30
    functionsReached:
    - json_object_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void community_free(struct community **com)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_community.c:48,1
    - Dst: com_length
      Src: /src/frr/bgpd/bgp_community.c:48,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_community.c:50,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:51,1
    - Dst: com_lastval
      Src: /src/frr/bgpd/bgp_community.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - com
    - val
    argTypes:
    - struct community*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: community_add_val
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 6
    functionsReached:
    - com_length
    - com_lastval
    - htonl
    - XREALLOC
    - memcpy
    linkageType: ''
    returnType: void
    signature: void community_add_val(struct community *com, uint32_t val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_community.c:64,1
    - Dst: memmove
      Src: /src/frr/bgpd/bgp_community.c:68,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_community.c:74,1
    - Dst: com_length
      Src: /src/frr/bgpd/bgp_community.c:75,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community.c:77,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - com
    - val
    argTypes:
    - struct community*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 83
    functionName: community_del_val
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 2
    functionsReached:
    - com_length
    - memcmp
    - memmove
    - XFREE
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: void community_del_val(struct community *com, uint32_t *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_del_val
      Src: /src/frr/bgpd/bgp_community.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - com1
    - com2
    argTypes:
    - struct community*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 97
    functionName: community_delete
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - community_del_val
    linkageType: ''
    returnType: struct community
    signature: "struct community *community_delete(struct community *com1,\n\t\t\t\t
      \  struct community *com2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:105,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:106,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_community.c:107,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_community.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - a1
    - a2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 115
    functionName: community_compare
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: int community_compare(const void *a1, const void *a2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_community.c:121,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_community.c:124,1
    - Dst: com_nthval
      Src: /src/frr/bgpd/bgp_community.c:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - com
    - val
    argTypes:
    - struct community*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 127
    functionName: community_include
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 12
    functionsReached:
    - htonl
    - memcmp
    - com_nthval
    linkageType: ''
    returnType: bool
    signature: bool community_include(struct community *com, uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:137,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_community.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - com
    - i
    argTypes:
    - struct community*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 140
    functionName: community_val_get
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 1
    functionsReached:
    - ntohl
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t community_val_get(struct community *com, int i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: community_new::community_new
      Src: /src/frr/bgpd/bgp_community.c:152,1
    - Dst: community_val_get
      Src: /src/frr/bgpd/bgp_community.c:156,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_community.c:158,1
    - Dst: val::val
      Src: /src/frr/bgpd/bgp_community.c:158,1
    - Dst: community_add_val
      Src: /src/frr/bgpd/bgp_community.c:159,1
    - Dst: val::val
      Src: /src/frr/bgpd/bgp_community.c:159,1
    - Dst: qsort
      Src: /src/frr/bgpd/bgp_community.c:162,1
    - Dst: size::size
      Src: /src/frr/bgpd/bgp_community.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - com
    argTypes:
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 165
    functionName: community_uniq_sort
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 7
    functionsReached:
    - community_new::community_new
    - community_val_get
    - community_include
    - community_add_val
    - qsort
    - val::val
    - size::size
    linkageType: ''
    returnType: struct community
    signature: struct community *community_uniq_sort(struct community *com)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_community.c:204,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_community.c:205,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_community.c:210,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_community.c:214,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_community.c:215,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:227,1
    - Dst: com_nthval
      Src: /src/frr/bgpd/bgp_community.c:227,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_community.c:228,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_community.c:232,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:235,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_community.c:236,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:239,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:242,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:245,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:248,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:251,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:254,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:257,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:260,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:263,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:266,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:269,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:272,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:275,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:278,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_community.c:287,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:292,1
    - Dst: com_nthval
      Src: /src/frr/bgpd/bgp_community.c:292,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_community.c:293,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:298,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_community.c:302,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:305,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:308,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:309,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_community.c:312,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:315,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:317,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:319,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:324,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:326,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:328,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:333,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:335,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:337,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:342,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:344,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:346,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:351,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:353,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:355,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:360,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:362,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:364,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:369,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:371,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:373,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:378,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:380,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:382,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:387,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:389,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:391,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:396,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:398,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:400,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:405,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:408,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:409,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:414,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:417,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:418,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:423,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:425,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:426,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:431,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:433,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:434,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_community.c:442,1
    - Dst: bgp_community2alias
      Src: /src/frr/bgpd/bgp_community.c:444,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_community.c:447,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_community.c:449,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_community.c:450,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_community.c:458,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_community.c:459,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 207
    argCount: 3
    argNames:
    - com
    - make_json
    - translate_alias
    argTypes:
    - struct community*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 462
    functionName: set_community_string
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - strlen
    - strlcat
    - bgp_community2alias
    - json_object_array_add
    - snprintf
    - XCALLOC
    - XMALLOC
    - zlog_warn
    - json_object_string_add
    - json_object_object_add
    - json_object_new_string
    - CPP_NOTICE
    - ntohl
    - memcpy
    - com_nthval
    linkageType: ''
    returnType: void
    signature: "void set_community_string(struct community *com, bool make_json,\n\t\t\t\t
      bool translate_alias)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_community.c:470,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_community.c:473,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:478,1
    - Dst: set_community_string
      Src: /src/frr/bgpd/bgp_community.c:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - com
    argTypes:
    - struct community*
    assertStmts:
    - condition: (com->refcnt == 0)
      pos:
        line_end: 469
        line_start: 469
        source_file: /src/frr/bgpd/bgp_community.c
    constantsTouched: []
    func_position:
      end: 488
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 488
    functionName: community_intern
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 3
    functionsReached:
    - set_community_string
    - hash_get
    - community_free
    - assert
    linkageType: ''
    returnType: struct community
    signature: struct community *community_intern(struct community *com)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_community.c:504,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_community.c:505,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - com
    argTypes:
    - struct community**
    assertStmts:
    - condition: (ret != NULL)
      pos:
        line_end: 504
        line_start: 504
        source_file: /src/frr/bgpd/bgp_community.c
    constantsTouched: []
    func_position:
      end: 509
      start: 491
    functionDepth: 2
    functionLinenumber: 491
    functionLinenumberEnd: 509
    functionName: community_unintern
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 2
    functionsReached:
    - hash_release
    - community_free
    - assert
    linkageType: ''
    returnType: void
    signature: void community_unintern(struct community **com)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: community_uniq_sort::community_uniq_sort
      Src: /src/frr/bgpd/bgp_community.c:525,1
    - Dst: community_intern
      Src: /src/frr/bgpd/bgp_community.c:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pnt
    - length
    argTypes:
    - uint32_t*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 512
    functionDepth: 3
    functionLinenumber: 512
    functionLinenumberEnd: 528
    functionName: community_parse
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 1
    functionsReached:
    - community_uniq_sort::community_uniq_sort
    - community_intern
    linkageType: ''
    returnType: struct community
    signature: struct community *community_parse(uint32_t *pnt, unsigned short length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_community.c:534,1
    - Dst: size::size
      Src: /src/frr/bgpd/bgp_community.c:536,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_community.c:537,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:539,1
    - Dst: val::val
      Src: /src/frr/bgpd/bgp_community.c:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - com
    argTypes:
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 543
    functionName: community_dup
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 17
    functionsReached:
    - XCALLOC::XCALLOC
    - XMALLOC
    - val::val
    - size::size
    - memcpy
    linkageType: ''
    returnType: struct community
    signature: struct community *community_dup(struct community *com)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community.c:552,1
    - Dst: set_community_string
      Src: /src/frr/bgpd/bgp_community.c:555,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - com
    - make_json
    - translate_alias
    argTypes:
    - struct community*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 557
    functionName: community_str
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 14
    functionsReached:
    - set_community_string
    - XFREE
    linkageType: ''
    returnType: char
    signature: char *community_str(struct community *com, bool make_json, bool translate_alias)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash2
      Src: /src/frr/bgpd/bgp_community.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - com
    argTypes:
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 566
    functionName: community_hash_make
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - jhash2
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int community_hash_make(const struct community *com)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_community.c:584,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - com1
    - com2
    argTypes:
    - struct community*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 593
    functionName: community_match
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 5
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool community_match(const struct community *com1, const struct community
      *com2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_community.c:603,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - com1
    - com2
    argTypes:
    - struct community*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 607
    functionName: community_cmp
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 11
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool community_cmp(const struct community *com1, const struct community
      *com2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_community.c:613,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_community.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - com1
    - com2
    argTypes:
    - struct community*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 620
    functionName: community_merge
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 10
    functionsReached:
    - XREALLOC
    - memcpy
    linkageType: ''
    returnType: struct community
    signature: "struct community *community_merge(struct community *com1,\n\t\t\t\t
      \ struct community *com2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_community.c:650,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_community.c:653,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:656,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community.c:660,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community.c:662,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - community
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 665
    functionName: community_valid
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - strlen
    - strtoul
    - frrstr_split
    - XFREE
    linkageType: ''
    returnType: bool
    signature: bool community_valid(const char *community)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_community.c:674,1
    - Dst: isalpha
      Src: /src/frr/bgpd/bgp_community.c:682,1
    - Dst: CPP_NOTICE
      Src: /src/frr/bgpd/bgp_community.c:684,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:686,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:686,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:689,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_community.c:690,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:693,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:693,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:697,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:700,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:701,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:705,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:708,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:708,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:712,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:715,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:716,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:720,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:723,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:723,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:727,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:730,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:731,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:735,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:738,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:738,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:742,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:745,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:745,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:749,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:752,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:752,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:756,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:759,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:759,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:763,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:766,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:766,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:769,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:772,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:772,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:775,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:778,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:778,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:781,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_community.c:784,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:784,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_community.c:787,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_community.c:797,1
    - Dst: community_valid
      Src: /src/frr/bgpd/bgp_community.c:803,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_community.c:808,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 138
    argCount: 3
    argNames:
    - buf
    - token
    - val
    argTypes:
    - char*
    - enum community_token*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 844
    functionName: community_gettoken
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strlen
    - community_valid
    - strncmp
    - zlog_warn
    - isspace
    - isalpha
    - CPP_NOTICE
    linkageType: ''
    returnType: char
    signature: 'char *

      community_gettoken(const char *buf, enum community_token *token, uint32_t *val)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: community_gettoken
      Src: /src/frr/bgpd/bgp_community.c:855,1
    - Dst: community_new
      Src: /src/frr/bgpd/bgp_community.c:874,1
    - Dst: community_add_val
      Src: /src/frr/bgpd/bgp_community.c:877,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:881,1
    - Dst: community_uniq_sort
      Src: /src/frr/bgpd/bgp_community.c:886,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:887,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 847
    functionDepth: 3
    functionLinenumber: 847
    functionLinenumberEnd: 890
    functionName: community_str2com
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 17
    functionsReached:
    - community_gettoken
    - community_free
    - community_add_val
    - community_uniq_sort
    - community_new
    linkageType: ''
    returnType: struct community
    signature: struct community *community_str2com(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 896
    functionName: community_count
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long community_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 899
    functionDepth: 0
    functionLinenumber: 899
    functionLinenumberEnd: 902
    functionName: community_hash
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct hash
    signature: struct hash *community_hash(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_community.c:908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 905
    functionDepth: 1
    functionLinenumber: 905
    functionLinenumberEnd: 911
    functionName: community_init
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 1
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void community_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 913
    functionDepth: 2
    functionLinenumber: 913
    functionLinenumberEnd: 918
    functionName: community_hash_free
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - community_free
    linkageType: ''
    returnType: void
    signature: void community_hash_free(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_community.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 923
    functionName: community_finish
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void community_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_community.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aggregate
    - community
    argTypes:
    - struct bgp_aggregate*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 930
    functionName: bgp_aggr_community_lookup
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct community
    signature: "struct community *bgp_aggr_community_lookup(\n\t\t\t\t\t\tstruct bgp_aggregate
      *aggregate,\n\t\t\t\t\t\tstruct community *community)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_community.c:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 939
    functionName: bgp_aggr_community_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - community_dup
    linkageType: ''
    returnType: void
    signature: void *bgp_aggr_community_hash_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: community_merge
      Src: /src/frr/bgpd/bgp_community.c:947,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_community.c:950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 951
    functionName: bgp_aggr_community_prepare
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - community_dup
    - community_merge
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_community_prepare(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 953
    functionDepth: 2
    functionLinenumber: 953
    functionLinenumberEnd: 958
    functionName: bgp_aggr_community_remove
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 0
    functionsReached:
    - community_free
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_community_remove(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_compute_aggregate_community_hash
      Src: /src/frr/bgpd/bgp_community.c:963,1
    - Dst: bgp_compute_aggregate_community_val
      Src: /src/frr/bgpd/bgp_community.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - aggregate
    - community
    argTypes:
    - struct bgp_aggregate*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 965
    functionName: bgp_compute_aggregate_community
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 2
    functionsReached:
    - bgp_compute_aggregate_community_hash
    - bgp_compute_aggregate_community_val
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_community(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \    struct community *community)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_community.c:979,1
    - Dst: bgp_aggr_community_lookup
      Src: /src/frr/bgpd/bgp_community.c:984,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_community.c:988,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - aggregate
    - community
    argTypes:
    - struct bgp_aggregate*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 968
    functionDepth: 2
    functionLinenumber: 968
    functionLinenumberEnd: 995
    functionName: bgp_compute_aggregate_community_hash
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 3
    functionsReached:
    - hash_create
    - hash_get
    - bgp_aggr_community_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_community_hash(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \ struct community *community)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:1007,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_community.c:1010,1
    - Dst: community_uniq_sort
      Src: /src/frr/bgpd/bgp_community.c:1014,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:1016,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - aggregate
    argTypes:
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 997
    functionDepth: 3
    functionLinenumber: 997
    functionLinenumberEnd: 1018
    functionName: bgp_compute_aggregate_community_val
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 3
    functionsReached:
    - hash_iterate
    - community_free
    - community_uniq_sort
    linkageType: ''
    returnType: void
    signature: void bgp_compute_aggregate_community_val(struct bgp_aggregate *aggregate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_community_lookup
      Src: /src/frr/bgpd/bgp_community.c:1035,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_community.c:1040,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:1042,1
    - Dst: bgp_compute_aggregate_community_val
      Src: /src/frr/bgpd/bgp_community.c:1044,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - aggregate
    - community
    argTypes:
    - struct bgp_aggregate*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1022
    functionDepth: 4
    functionLinenumber: 1022
    functionLinenumberEnd: 1047
    functionName: bgp_remove_community_from_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 2
    functionsReached:
    - hash_release
    - bgp_compute_aggregate_community_val
    - community_free
    - bgp_aggr_community_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_community_from_aggregate(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      struct community *community)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_community_lookup
      Src: /src/frr/bgpd/bgp_community.c:1063,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_community.c:1068,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.c:1070,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - aggregate
    - community
    argTypes:
    - struct bgp_aggregate*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1049
    functionDepth: 2
    functionLinenumber: 1049
    functionLinenumberEnd: 1073
    functionName: bgp_remove_comm_from_aggregate_hash
    functionSourceFile: /src/frr/bgpd/bgp_community.c
    functionUses: 2
    functionsReached:
    - hash_release
    - community_free
    - bgp_aggr_community_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_comm_from_aggregate_hash(struct bgp_aggregate *aggregate,\n\t\tstruct
      community *community)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - flag
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: CHECK_SUBTLV_FLAG
    functionSourceFile: /src/frr/bgpd/bgp_encap_types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SUBTLV_FLAG(ptr, flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - flag
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: SET_SUBTLV_FLAG
    functionSourceFile: /src/frr/bgpd/bgp_encap_types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_SUBTLV_FLAG(ptr, flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - flag
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: UNSET_SUBTLV_FLAG
    functionSourceFile: /src/frr/bgpd/bgp_encap_types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSET_SUBTLV_FLAG(ptr, flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_encap_types.h:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tnl_type
    - eval
    argTypes:
    - bgp_encap_types
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 216
    functionName: encode_encap_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_encap_types.h
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_encap_extcomm(bgp_encap_types tnl_type,\n\t\t\t\t\tstruct
      ecommunity_val *eval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_main.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 142
    functionName: sighup
    functionSourceFile: /src/frr/bgpd/bgp_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/bgpd/bgp_main.c:147,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_main.c:148,1
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/bgpd/bgp_main.c:152,1
    - Dst: bgp_terminate
      Src: /src/frr/bgpd/bgp_main.c:154,1
    - Dst: bgp_exit
      Src: /src/frr/bgpd/bgp_main.c:156,1
    - Dst: exit
      Src: /src/frr/bgpd/bgp_main.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (bm->terminating == false)
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/frr/bgpd/bgp_main.c
    constantsTouched: []
    func_position:
      end: 159
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 159
    functionName: sigint
    functionSourceFile: /src/frr/bgpd/bgp_main.c
    functionUses: 0
    functionsReached:
    - exit
    - bgp_exit
    - bgp_terminate
    - bfd_protocol_integration_set_shutdown
    - zlog_notice
    - assert
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/bgpd/bgp_main.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: sigusr1
    functionSourceFile: /src/frr/bgpd/bgp_main.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_main.c:180,1
    - Dst: frr_early_fini
      Src: /src/frr/bgpd/bgp_main.c:182,1
    - Dst: bgp_close
      Src: /src/frr/bgpd/bgp_main.c:184,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:186,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_main.c:187,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_main.c:190,1
    - Dst: bgp_delete
      Src: /src/frr/bgpd/bgp_main.c:193,1
    - Dst: bgp_delete
      Src: /src/frr/bgpd/bgp_main.c:196,1
    - Dst: bgp_delete
      Src: /src/frr/bgpd/bgp_main.c:198,1
    - Dst: bgp_evpn_mh_finish
      Src: /src/frr/bgpd/bgp_main.c:200,1
    - Dst: bgp_l3nhg_finish
      Src: /src/frr/bgpd/bgp_main.c:201,1
    - Dst: bgp_dump_finish
      Src: /src/frr/bgpd/bgp_main.c:204,1
    - Dst: bgp_community_alias_finish
      Src: /src/frr/bgpd/bgp_main.c:207,1
    - Dst: bgp_route_finish
      Src: /src/frr/bgpd/bgp_main.c:210,1
    - Dst: bgp_route_map_terminate
      Src: /src/frr/bgpd/bgp_main.c:213,1
    - Dst: bgp_attr_finish
      Src: /src/frr/bgpd/bgp_main.c:216,1
    - Dst: bgp_pthreads_finish
      Src: /src/frr/bgpd/bgp_main.c:219,1
    - Dst: access_list_add_hook
      Src: /src/frr/bgpd/bgp_main.c:222,1
    - Dst: access_list_delete_hook
      Src: /src/frr/bgpd/bgp_main.c:223,1
    - Dst: access_list_reset
      Src: /src/frr/bgpd/bgp_main.c:224,1
    - Dst: as_list_add_hook
      Src: /src/frr/bgpd/bgp_main.c:227,1
    - Dst: as_list_delete_hook
      Src: /src/frr/bgpd/bgp_main.c:228,1
    - Dst: bgp_filter_reset
      Src: /src/frr/bgpd/bgp_main.c:229,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/bgpd/bgp_main.c:232,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/bgpd/bgp_main.c:233,1
    - Dst: prefix_list_reset
      Src: /src/frr/bgpd/bgp_main.c:234,1
    - Dst: community_list_terminate
      Src: /src/frr/bgpd/bgp_main.c:237,1
    - Dst: bgp_vrf_terminate
      Src: /src/frr/bgpd/bgp_main.c:239,1
    - Dst: vnc_zebra_destroy
      Src: /src/frr/bgpd/bgp_main.c:241,1
    - Dst: bgp_zebra_destroy
      Src: /src/frr/bgpd/bgp_main.c:243,1
    - Dst: bf_free
      Src: /src/frr/bgpd/bgp_main.c:245,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_main.c:246,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_main.c:247,1
    - Dst: bgp_lp_finish
      Src: /src/frr/bgpd/bgp_main.c:249,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_main.c:251,1
    - Dst: frr_fini
      Src: /src/frr/bgpd/bgp_main.c:253,1
    - Dst: exit
      Src: /src/frr/bgpd/bgp_main.c:254,1
    - Dst: bgp_vrf_new
      Src: /src/frr/bgpd/bgp_main.c:257,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_main.c:259,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_main.c:260,1
    - Dst: bgp_vrf_delete
      Src: /src/frr/bgpd/bgp_main.c:265,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_main.c:267,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_main.c:268,1
    - Dst: bgp_vrf_enable
      Src: /src/frr/bgpd/bgp_main.c:273,1
    - Dst: vrf_id_t
      Src: /src/frr/bgpd/bgp_main.c:276,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_main.c:278,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_main.c:279,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_main.c:281,1
    - Dst: bgp_vrf_link
      Src: /src/frr/bgpd/bgp_main.c:285,1
    - Dst: bgp_handle_socket
      Src: /src/frr/bgpd/bgp_main.c:287,1
    - Dst: bgp_instance_up
      Src: /src/frr/bgpd/bgp_main.c:288,1
    - Dst: vpn_leak_zebra_vrf_label_update
      Src: /src/frr/bgpd/bgp_main.c:289,1
    - Dst: vpn_leak_zebra_vrf_label_update
      Src: /src/frr/bgpd/bgp_main.c:290,1
    - Dst: vpn_leak_zebra_vrf_sid_update
      Src: /src/frr/bgpd/bgp_main.c:291,1
    - Dst: vpn_leak_zebra_vrf_sid_update
      Src: /src/frr/bgpd/bgp_main.c:292,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_main.c:293,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:294,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_main.c:295,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:296,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_main.c:297,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:298,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_main.c:299,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:300,1
    - Dst: bgp_vrf_disable
      Src: /src/frr/bgpd/bgp_main.c:306,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_main.c:313,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_main.c:314,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_main.c:316,1
    - Dst: vpn_leak_zebra_vrf_label_withdraw
      Src: /src/frr/bgpd/bgp_main.c:319,1
    - Dst: vpn_leak_zebra_vrf_label_withdraw
      Src: /src/frr/bgpd/bgp_main.c:320,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_main.c:321,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:322,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_main.c:323,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:324,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_main.c:325,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:326,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_main.c:327,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:328,1
    - Dst: bgp_handle_socket
      Src: /src/frr/bgpd/bgp_main.c:330,1
    - Dst: bgp_instance_down
      Src: /src/frr/bgpd/bgp_main.c:333,1
    - Dst: bgp_vrf_unlink
      Src: /src/frr/bgpd/bgp_main.c:334,1
    - Dst: bgp_vrf_init
      Src: /src/frr/bgpd/bgp_main.c:341,1
    - Dst: vrf_init
      Src: /src/frr/bgpd/bgp_main.c:343,1
    - Dst: vrf_terminate
      Src: /src/frr/bgpd/bgp_main.c:348,1
    - Dst: FRR_DAEMON_INFO
      Src: /src/frr/bgpd/bgp_main.c:359,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_main.c:363,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_main.c:366,1
    - Dst: FuzzingInit
      Src: /src/frr/bgpd/bgp_main.c:376,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_main.c:378,1
    - Dst: frr_preinit
      Src: /src/frr/bgpd/bgp_main.c:390,1
    - Dst: bgp_master_init
      Src: /src/frr/bgpd/bgp_main.c:393,1
    - Dst: frr_init_fast
      Src: /src/frr/bgpd/bgp_main.c:393,1
    - Dst: bgp_option_set
      Src: /src/frr/bgpd/bgp_main.c:395,1
    - Dst: bgp_option_set
      Src: /src/frr/bgpd/bgp_main.c:397,1
    - Dst: bgp_option_set
      Src: /src/frr/bgpd/bgp_main.c:398,1
    - Dst: bgp_error_init
      Src: /src/frr/bgpd/bgp_main.c:399,1
    - Dst: bgp_init
      Src: /src/frr/bgpd/bgp_main.c:401,1
    - Dst: bgp_get
      Src: /src/frr/bgpd/bgp_main.c:407,1
    - Dst: FuzzingCreatePeer
      Src: /src/frr/bgpd/bgp_main.c:419,1
    - Dst: peer_create
      Src: /src/frr/bgpd/bgp_main.c:426,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_main.c:426,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_main.c:437,1
    - Dst: peer_activate
      Src: /src/frr/bgpd/bgp_main.c:440,1
    - Dst: peer_activate
      Src: /src/frr/bgpd/bgp_main.c:441,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts:
    - condition: (status == 0)
      pos:
        line_end: 179
        line_start: 179
        source_file: /src/frr/bgpd/bgp_main.c
    constantsTouched: []
    func_position:
      end: 444
      start: 174
    functionDepth: 4
    functionLinenumber: 174
    functionLinenumberEnd: 444
    functionName: bgp_exit
    functionSourceFile: /src/frr/bgpd/bgp_main.c
    functionUses: 1
    functionsReached:
    - bgp_l3nhg_finish
    - access_list_reset
    - list_delete
    - bgp_instance_down
    - FuzzingInit
    - prefix_list_add_hook
    - peer_activate
    - FuzzingCreatePeer
    - vrf_terminate
    - bgp_option_set
    - as_list_add_hook
    - bgp_vrf_delete
    - BGP_DEBUG
    - frr_init_fast
    - exit
    - memset
    - bgp_get_evpn
    - as_list_delete_hook
    - bgp_get_default
    - frr_fini
    - frr_early_fini
    - zlog_debug
    - array_size
    - bgp_route_finish
    - bgp_vrf_link
    - bgp_community_alias_finish
    - bgp_evpn_mh_finish
    - bgp_vrf_unlink
    - bgp_vrf_terminate
    - bgp_lookup_by_name
    - assert
    - bgp_attr_finish
    - prefix_list_delete_hook
    - peer_create
    - bgp_vrf_new
    - bgp_error_init
    - vrf_init
    - bgp_vrf_enable
    - bgp_init
    - vpn_leak_prechange
    - bgp_get
    - bgp_zebra_destroy
    - vpn_leak_postchange
    - bgp_master_init
    - FRR_DAEMON_INFO
    - vpn_leak_zebra_vrf_label_update
    - community_list_terminate
    - access_list_delete_hook
    - bgp_delete
    - bgp_filter_reset
    - vpn_leak_zebra_vrf_label_withdraw
    - bgp_vrf_init
    - frr_preinit
    - bgp_vrf_disable
    - prefix_list_reset
    - vpn_leak_zebra_vrf_sid_update
    - vrf_id_t
    - bgp_handle_socket
    - bgp_route_map_terminate
    - bgp_close
    - vnc_zebra_destroy
    - bgp_pthreads_finish
    - bf_free
    - SET_FLAG
    - bgp_dump_finish
    - access_list_add_hook
    - list_new
    - ALL_LIST_ELEMENTS
    - bgp_instance_up
    - bgp_lp_finish
    linkageType: ''
    returnType: void
    signature: void bgp_exit(int status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FuzzingInit
      Src: /src/frr/bgpd/bgp_main.c:453,1
    - Dst: FuzzingCreatePeer
      Src: /src/frr/bgpd/bgp_main.c:456,1
    - Dst: ringbuf_reset
      Src: /src/frr/bgpd/bgp_main.c:488,1
    - Dst: ringbuf_put
      Src: /src/frr/bgpd/bgp_main.c:489,1
    - Dst: validate_header
      Src: /src/frr/bgpd/bgp_main.c:505,1
    - Dst: ringbuf_peek
      Src: /src/frr/bgpd/bgp_main.c:509,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_main.c:510,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_main.c:512,1
    - Dst: ringbuf_remain
      Src: /src/frr/bgpd/bgp_main.c:514,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_main.c:515,1
    - Dst: ringbuf_get
      Src: /src/frr/bgpd/bgp_main.c:516,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_main.c:517,1
    - Dst: bgp_process_packet
      Src: /src/frr/bgpd/bgp_main.c:522,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts:
    - condition: (pktsize <= p->max_packet_size)
      pos:
        line_end: 511
        line_start: 511
        source_file: /src/frr/bgpd/bgp_main.c
    constantsTouched: []
    func_position:
      end: 529
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 529
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/frr/bgpd/bgp_main.c
    functionUses: 3
    functionsReached:
    - ringbuf_put
    - ringbuf_reset
    - stream_new
    - stream_put
    - FuzzingInit
    - FuzzingCreatePeer
    - validate_header
    - bgp_process_packet
    - ntohs
    - ringbuf_get
    - ringbuf_peek
    - assert
    - ringbuf_remain
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_evpn_vty.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - argv
    - argc
    - oly_idx
    - oly
    argTypes:
    - struct cmd_token**
    - int
    - int*
    - enum overlay_index_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 58
    functionName: argv_find_and_parse_oly_idx
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - argv_find
    linkageType: ''
    returnType: int
    signature: "int argv_find_and_parse_oly_idx(struct cmd_token **argv, int argc,
      int *oly_idx,\n\t\t\t\tenum overlay_index_type *oly)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:74,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:75,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_vty.c:84,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_evpn_vty.c:89,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:91,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:94,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:96,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_vty.c:101,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_evpn_vty.c:106,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:109,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:111,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_evpn_vty.c:116,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:120,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:123,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:125,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:134,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:138,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:140,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:142,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:143,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:145,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:146,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:150,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:151,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 54
    argCount: 3
    argNames:
    - vty
    - irt
    - json
    argTypes:
    - struct vty*
    - struct vrf_irt_node*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 153
    functionName: display_vrf_import_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - vty_out
    - snprintf
    - memset
    - json_object_array_add
    - vrf_id_to_name
    - snprintfrr
    - ptr_get_be32
    - json_object_string_add
    - json_object_new_string
    - json_object_object_add
    - ALL_LIST_ELEMENTS
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void display_vrf_import_rt(struct vty *vty, struct vrf_irt_node *irt,\n\t\t\t\t
      \ json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: display_vrf_import_rt
      Src: /src/frr/bgpd/bgp_evpn_vty.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 165
    functionName: show_vrf_import_rt_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - display_vrf_import_rt
    linkageType: ''
    returnType: void
    signature: void show_vrf_import_rt_entry(struct hash_bucket *bucket, void *args[])
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:181,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:182,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_vty.c:193,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_evpn_vty.c:198,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:200,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:203,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:205,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_vty.c:210,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_evpn_vty.c:215,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:218,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:220,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_evpn_vty.c:225,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:229,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:232,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:234,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:243,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:247,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:249,1
    - Dst: json_object_new_int
      Src: /src/frr/bgpd/bgp_evpn_vty.c:250,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:252,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:256,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:257,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 54
    argCount: 3
    argNames:
    - vty
    - irt
    - json
    argTypes:
    - struct vty*
    - struct irt_node*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 259
    functionName: display_import_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - json_object_new_int
    - vty_out
    - snprintf
    - memset
    - json_object_array_add
    - snprintfrr
    - ptr_get_be32
    - json_object_string_add
    - json_object_object_add
    - ALL_LIST_ELEMENTS
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void display_import_rt(struct vty *vty, struct irt_node *irt,\n\t\t\t
      \     json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: display_import_rt
      Src: /src/frr/bgpd/bgp_evpn_vty.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 273
    functionName: show_import_rt_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - display_import_rt
    linkageType: ''
    returnType: void
    signature: void show_import_rt_entry(struct hash_bucket *bucket, void *args[])
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:284,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/bgp_evpn_vty.c:289,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:292,1
    - Dst: decode_rd_as
      Src: /src/frr/bgpd/bgp_evpn_vty.c:296,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:297,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:299,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:301,1
    - Dst: decode_rd_as4
      Src: /src/frr/bgpd/bgp_evpn_vty.c:305,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:306,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:308,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:310,1
    - Dst: decode_rd_ip
      Src: /src/frr/bgpd/bgp_evpn_vty.c:314,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_evpn_vty.c:315,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:317,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:319,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:324,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:325,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:327,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:328,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 5
    argNames:
    - vty
    - rd_dest
    - json
    - rd_str
    - len
    argTypes:
    - struct vty*
    - struct bgp_dest*
    - json_object*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 332
    functionName: bgp_evpn_show_route_rd_header
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - decode_rd_as
    - vty_out
    - snprintf
    - decode_rd_as4
    - bgp_dest_get_prefix
    - snprintfrr
    - decode_rd_ip
    - json_object_string_add
    - decode_rd_type
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_show_route_rd_header(struct vty *vty,\n\t\t\t\t\t  struct
      bgp_dest *rd_dest,\n\t\t\t\t\t  json_object *json, char *rd_str,\n\t\t\t\t\t
      \ int len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:343,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:346,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:348,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:349,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:351,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:353,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:354,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:355,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - vty
    - bgp
    - tbl_ver
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - uint64_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 357
    functionName: bgp_evpn_show_route_header
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_show_route_header(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \      uint64_t tbl_ver, json_object *json)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:372,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:373,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:374,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:375,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:376,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:377,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:378,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:380,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:382,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:383,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:384,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:387,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:389,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:390,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:392,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:393,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:396,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:397,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:398,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:400,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:401,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:402,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:403,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:404,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:404,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:406,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:407,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:409,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:410,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:411,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:413,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:415,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:416,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:418,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:419,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:424,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:426,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:427,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:430,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:431,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:432,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:434,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:436,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:440,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:442,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:444,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:445,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:449,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:450,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:452,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:454,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:458,1
    - Dst: display_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:461,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_evpn_vty.c:472,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:475,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:476,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:477,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:478,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:479,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:480,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:481,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:482,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:483,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:485,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:493,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:496,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:499,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:503,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:506,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:509,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:511,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_evpn_vty.c:513,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:515,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:516,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:517,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:518,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:520,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:521,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:522,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:523,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:524,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:524,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:525,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:526,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:527,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:530,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:533,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:536,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:540,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:543,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:546,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:548,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_evpn_vty.c:549,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:553,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:555,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:556,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:559,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:560,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:561,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:563,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:565,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:569,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:571,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:573,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:574,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:578,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:579,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:581,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:583,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:587,1
    - Dst: show_esi_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:590,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:605,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:609,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:612,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:614,1
    - Dst: bgp_evpn_show_route_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:618,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:627,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:636,1
    - Dst: route_vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:638,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:642,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:650,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:652,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:654,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:656,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:659,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:660,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:668,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:669,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:672,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:674,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 130
    argCount: 3
    argNames:
    - vty
    - bgp_vrf
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 359
    functionDepth: 4
    functionLinenumber: 359
    functionLinenumberEnd: 677
    functionName: display_l3vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - ifindex2ifname
    - BGP_RD_AS_FORMAT
    - show_esi_routes
    - json_object_string_add
    - json_object_string_addf
    - route_vty_out
    - is_vni_live
    - bgp_evpn_show_route_header
    - bgp_dest_get_prefix
    - if
    - vty_out
    - ecommunity_ecom2str
    - json_object_int_add
    - json_object_free
    - json_object_new_string
    - XFREE
    - json_object_new_array
    - bgp_route_next
    - json_object_new_object
    - json_object_object_addf
    - json_object_array_add
    - vrf_id_to_name
    - prefix_mac2str
    - display_vni
    - json_object_object_add
    - bgp_dest_get_bgp_path_info
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void display_l3vni(struct vty *vty, struct bgp *bgp_vrf,\n\t\t\t  json_object
      *json)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_vty.c:691,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:700,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_vty.c:702,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:705,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_vty.c:713,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:719,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_vty.c:719,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:723,1
    - Dst: bgp_evpn_show_route_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:724,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:731,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:734,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:735,1
    - Dst: route_vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:739,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:743,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:748,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:749,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:752,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:754,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:755,1
    - Dst: bgp_evpn_show_routes_mac_ip_evi_es
      Src: /src/frr/bgpd/bgp_evpn_vty.c:759,1
    - Dst: bgp_evpn_show_routes_mac_ip_es
      Src: /src/frr/bgpd/bgp_evpn_vty.c:762,1
    - Dst: bgp_evpn_show_routes_mac_ip_global_es
      Src: /src/frr/bgpd/bgp_evpn_vty.c:765,1
    - Dst: bgp_evpn_show_routes_mac_ip_es
      Src: /src/frr/bgpd/bgp_evpn_vty.c:768,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:771,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:791,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:791,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:793,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:797,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:803,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:805,1
    - Dst: bgp_evpn_show_route_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:809,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:818,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn_vty.c:828,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn_vty.c:838,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn_vty.c:840,1
    - Dst: evpn_type2_path_info_get_ip
      Src: /src/frr/bgpd/bgp_evpn_vty.c:843,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn_vty.c:847,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn_vty.c:850,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_vty.c:855,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:859,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:862,1
    - Dst: route_vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:868,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:872,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:880,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:882,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:884,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:886,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:889,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:890,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:898,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:899,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:902,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:905,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:908,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:921,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:923,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:924,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:926,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:929,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:933,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:946,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:948,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:949,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:951,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:954,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:958,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:961,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:963,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:965,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:969,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:989,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:990,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:991,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:996,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:999,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1000,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1001,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1002,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1004,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1005,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1007,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1009,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1010,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1013,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1015,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1016,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1018,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1020,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1022,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1023,1
    - Dst: BGP_RD_AS_FORMAT_SPACE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1023,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1027,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1028,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1031,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1032,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1033,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1035,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1036,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1039,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1041,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1044,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1053,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1055,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1056,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1060,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1061,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1063,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1064,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1067,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1069,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1072,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1077,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1077,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1085,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1086,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1087,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1089,1
    - Dst: show_vni_entry
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1093,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1113,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1116,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1117,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1118,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1122,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1123,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1126,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1127,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1128,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1129,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1130,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1131,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1133,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1135,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1143,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1146,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1149,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1153,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1156,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1159,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1162,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1163,1
    - Dst: BGP_RD_AS_FORMAT_SPACE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1166,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1167,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1170,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1171,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1172,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1174,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1175,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1178,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1180,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1183,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1192,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1194,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1195,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1199,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1200,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1202,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1203,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1206,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1208,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1211,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1216,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1217,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1225,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1226,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1227,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1229,1
    - Dst: bgp_show_ethernet_vpn
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1233,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1254,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1256,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1259,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1261,1
    - Dst: CMD_WARNING
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1262,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1266,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1268,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1269,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1272,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1274,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1277,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1284,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1284,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1285,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1293,1
    - Dst: peer_cmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1299,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1305,1
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1307,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1308,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1316,1
    - Dst: lcommunity_match
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1318,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1319,1
    - Dst: community_match
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1328,1
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1335,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1343,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1348,1
    - Dst: asn_asn2json
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1352,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1356,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1357,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1362,1
    - Dst: bgp_evpn_show_route_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1365,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 169
    argCount: 5
    argNames:
    - vty
    - esi
    - json
    - detail
    - global_table
    argTypes:
    - struct vty*
    - esi_t*
    - json_object*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 680
    functionDepth: 4
    functionLinenumber: 680
    functionLinenumberEnd: 1367
    functionName: bgp_evpn_show_routes_mac_ip_es
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 1
    functionsReached:
    - bgp_get_asnotation
    - CMD_WARNING
    - BGP_RD_AS_FORMAT
    - memcmp
    - IPV4_ADDR_SAME
    - evpn_type2_path_info_get_ip
    - json_object_string_add
    - route_vty_out
    - json_object_string_addf
    - show_vni_entry
    - is_vni_live
    - bgp_attr_get_lcommunity
    - evpn_type2_prefix_global_copy
    - evpn_type2_path_info_get_mac
    - bgp_show_ethernet_vpn
    - bgp_evpn_show_route_header
    - bgp_get_evpn
    - snprintf
    - bgp_dest_get_prefix
    - ALL_LIST_ELEMENTS_RO
    - memset
    - community_match
    - BGP_RD_AS_FORMAT_SPACE
    - community_cmp
    - show_vni_routes
    - if
    - vty_out
    - ecommunity_ecom2str
    - listcount
    - bgp_evpn_show_routes_mac_ip_es
    - peer_cmp
    - json_object_int_add
    - json_object_free
    - json_object_new_string
    - XFREE
    - bgp_attr_get_community
    - memcpy
    - json_object_new_array
    - bgp_route_next
    - json_object_new_object
    - bgp_evpn_show_routes_mac_ip_evi_es
    - json_object_object_addf
    - route_vty_out_detail
    - json_object_array_add
    - asn_asn2json
    - bgp_table_top
    - prefix_mac2str
    - CHECK_FLAG
    - bgp_evpn_show_routes_mac_ip_global_es
    - vrf_id_to_name
    - is_evpn_prefix_ipaddr_none
    - lcommunity_match
    - json_object_object_add
    - lcommunity_cmp
    - bgp_dest_get_bgp_path_info
    - ALL_LIST_ELEMENTS
    - RB_FOREACH
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_show_routes_mac_ip_es(struct vty *vty, esi_t *esi,\n\t\t\t\t\t
      \  json_object *json, int detail,\n\t\t\t\t\t   bool global_table)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:921,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:923,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:924,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:926,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:929,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 934
    functionName: show_vni_routes_hash
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - snprintf
    - json_object_int_add
    - json_object_object_add
    - show_vni_routes
    linkageType: ''
    returnType: void
    signature: void show_vni_routes_hash(struct hash_bucket *bucket, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:946,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:948,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:949,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:951,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:954,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:958,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:961,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:963,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:965,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:969,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 970
    functionName: show_vni_routes_all_hash
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - snprintf
    - json_object_int_add
    - json_object_object_add
    - show_vni_routes
    linkageType: ''
    returnType: void
    signature: void show_vni_routes_all_hash(struct hash_bucket *bucket, void *arg)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:989,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:990,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:991,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:996,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:999,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1000,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1001,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1002,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1004,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1005,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1007,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1009,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1010,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1013,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1015,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1016,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1018,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1020,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1022,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1023,1
    - Dst: BGP_RD_AS_FORMAT_SPACE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1023,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1027,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1028,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1031,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1032,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1033,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1035,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1036,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1039,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1041,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1044,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1053,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1055,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1056,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1060,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1061,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1063,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1064,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1067,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1069,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1072,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1077,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1077,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1085,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1086,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1087,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1089,1
    - Dst: show_vni_entry
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1093,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1113,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1116,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1117,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1118,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1122,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1123,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1126,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1127,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1128,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1129,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1130,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1131,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1133,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1135,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1143,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1146,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1149,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1153,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1156,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1159,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1162,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1163,1
    - Dst: BGP_RD_AS_FORMAT_SPACE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1166,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1167,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1170,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1171,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1172,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1174,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1175,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1178,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1180,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1183,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1192,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1194,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1195,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1199,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1200,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1202,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1203,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1206,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1208,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1211,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1216,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1217,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1225,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1226,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1227,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1229,1
    - Dst: bgp_show_ethernet_vpn
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1233,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1254,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1256,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1259,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1261,1
    - Dst: CMD_WARNING
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1262,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1266,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1268,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1269,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1272,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1274,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1277,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1284,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1284,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1285,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1293,1
    - Dst: peer_cmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1299,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1305,1
    - Dst: lcommunity_cmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1307,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1308,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1316,1
    - Dst: lcommunity_match
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1318,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1319,1
    - Dst: community_match
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1328,1
    - Dst: community_cmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1335,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1343,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1348,1
    - Dst: asn_asn2json
      Src: /src/frr/bgpd/bgp_evpn_vty.c:1352,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 3
    argNames:
    - vty
    - bgp
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 1355
    functionName: show_l3vni_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - CMD_WARNING
    - BGP_RD_AS_FORMAT
    - memcmp
    - json_object_string_add
    - json_object_string_addf
    - show_vni_entry
    - is_vni_live
    - bgp_attr_get_lcommunity
    - bgp_show_ethernet_vpn
    - snprintf
    - memset
    - bgp_get_evpn
    - bgp_dest_get_prefix
    - community_match
    - community_cmp
    - if
    - vty_out
    - ecommunity_ecom2str
    - listcount
    - peer_cmp
    - json_object_int_add
    - json_object_new_string
    - XFREE
    - bgp_attr_get_community
    - json_object_new_object
    - json_object_new_array
    - bgp_route_next
    - json_object_array_add
    - asn_asn2json
    - vrf_id_to_name
    - prefix_mac2str
    - bgp_table_top
    - lcommunity_match
    - json_object_object_add
    - lcommunity_cmp
    - bgp_dest_get_bgp_path_info
    - ALL_LIST_ELEMENTS
    - BGP_RD_AS_FORMAT_SPACE
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void show_l3vni_entry(struct vty *vty, struct bgp *bgp,\n\t\t\t     json_object
      *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: evpn_rt_delete_auto
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2059
    functionDepth: 4
    functionLinenumber: 2059
    functionLinenumberEnd: 2062
    functionName: evpn_import_rt_delete_auto
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - evpn_rt_delete_auto
    linkageType: ''
    returnType: void
    signature: void evpn_import_rt_delete_auto(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: evpn_rt_delete_auto
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2064
    functionDepth: 4
    functionLinenumber: 2064
    functionLinenumberEnd: 2067
    functionName: evpn_export_rt_delete_auto
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - evpn_rt_delete_auto
    linkageType: ''
    returnType: void
    signature: void evpn_export_rt_delete_auto(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2080,1
    - Dst: bgp_evpn_uninstall_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2081,1
    - Dst: bgp_evpn_unmap_vni_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2084,1
    - Dst: evpn_import_rt_delete_auto
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2087,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2090,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2092,1
    - Dst: bgp_evpn_map_vni_to_its_rts
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2093,1
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2096,1
    - Dst: bgp_evpn_install_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2097,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - bgp
    - vpn
    - ecomadd
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2098
      start: 2073
    functionDepth: 5
    functionLinenumber: 2073
    functionLinenumberEnd: 2098
    functionName: evpn_configure_import_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_install_routes
    - bgp_evpn_unmap_vni_from_its_rts
    - listnode_add_sort
    - evpn_import_rt_delete_auto
    - bgp_evpn_uninstall_routes
    - SET_FLAG
    - bgp_evpn_map_vni_to_its_rts
    - is_vni_live
    linkageType: ''
    returnType: void
    signature: "void evpn_configure_import_rt(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \    struct ecommunity *ecomadd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_vni_live
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2112,1
    - Dst: bgp_evpn_uninstall_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2113,1
    - Dst: bgp_evpn_unmap_vni_from_its_rts
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2116,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2120,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2121,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - bgp
    - vpn
    - ecomdel
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2124
      start: 2103
    functionDepth: 4
    functionLinenumber: 2103
    functionLinenumberEnd: 2124
    functionName: evpn_unconfigure_import_rt
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_unmap_vni_from_its_rts
    - bgp_evpn_uninstall_routes
    - list_delete_node
    - ALL_LIST_ELEMENTS
    - is_vni_live
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: "void evpn_unconfigure_import_rt(struct bgp *bgp, struct bgpevpn *vpn,\n\t\t\t\t
      \      struct ecommunity *ecomdel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - bgp_evpn
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2369
    functionDepth: 1
    functionLinenumber: 2369
    functionLinenumberEnd: 2381
    functionName: evpn_show_vrf_import_rts
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: "void evpn_show_vrf_import_rts(struct vty *vty, struct bgp *bgp_evpn,\n\t\t\t\t
      \    json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - bgp
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2398
      start: 2386
    functionDepth: 1
    functionLinenumber: 2386
    functionLinenumberEnd: 2398
    functionName: evpn_show_import_rts
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: "void evpn_show_import_rts(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2410,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2413,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 7
    argNames:
    - vty
    - bgp
    - type
    - mac_table
    - vtep_ip
    - json
    - detail
    argTypes:
    - struct vty*
    - struct bgp*
    - int
    - bool
    - struct in_addr
    - json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2424
      start: 2403
    functionDepth: 1
    functionLinenumber: 2403
    functionLinenumberEnd: 2424
    functionName: evpn_show_routes_vni_all
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - hashcount
    - memset
    linkageType: ''
    returnType: void
    signature: "void evpn_show_routes_vni_all(struct vty *vty, struct bgp *bgp, int
      type,\n\t\t\t\t     bool mac_table, struct in_addr vtep_ip,\n\t\t\t\t     json_object
      *json, int detail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2436,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2440,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - vty
    - bgp
    - vtep_ip
    - json
    - detail
    argTypes:
    - struct vty*
    - struct bgp*
    - struct in_addr
    - json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2429
    functionDepth: 1
    functionLinenumber: 2429
    functionLinenumberEnd: 2450
    functionName: evpn_show_routes_vni_all_type_all
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - hashcount
    - memset
    linkageType: ''
    returnType: void
    signature: "void evpn_show_routes_vni_all_type_all(struct vty *vty, struct bgp
      *bgp,\n\t\t\t\t\t      struct in_addr vtep_ip,\n\t\t\t\t\t      json_object
      *json, int detail)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2472,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2474,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2479,1
    - Dst: bgp_evpn_vni_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2480,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2481,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2483,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2486,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2492,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2495,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2495,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2499,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2503,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2505,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2505,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2510,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2517,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2519,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2521,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2525,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 5
    argNames:
    - vty
    - bgp
    - vni
    - orig_ip
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - vni_t
    - struct in_addr
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2455
    functionDepth: 5
    functionLinenumber: 2455
    functionLinenumberEnd: 2526
    functionName: evpn_show_route_vni_multicast
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - json_object_new_array
    - route_vty_out_detail_header
    - vty_out
    - route_vty_out_detail
    - json_object_array_add
    - bgp_dest_get_prefix
    - bgp_dest_get_bgp_path_info
    - json_object_int_add
    - bgp_dest_has_bgp_path_info_data
    - json_object_object_add
    - build_evpn_type3_prefix
    - bgp_evpn_lookup_vni
    - bgp_evpn_vni_node_lookup
    linkageType: ''
    returnType: void
    signature: "void evpn_show_route_vni_multicast(struct vty *vty, struct bgp *bgp,\n\t\t\t\t\t
      \ vni_t vni, struct in_addr orig_ip,\n\t\t\t\t\t  json_object *json)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2553,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2556,1
    - Dst: build_evpn_type2_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2560,1
    - Dst: bgp_evpn_vni_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2564,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2565,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2567,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2570,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2580,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2581,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2581,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2588,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2594,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2597,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2600,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2603,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2608,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2608,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2613,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2620,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2622,1
    - Dst: evpn_type2_path_info_get_ip
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2625,1
    - Dst: evpn_type2_prefix_global_copy
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2628,1
    - Dst: evpn_type2_path_info_get_mac
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2630,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2634,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2639,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2646,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2648,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2650,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2654,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 56
    argCount: 6
    argNames:
    - vty
    - bgp
    - vni
    - mac
    - ip
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - vni_t
    - struct ethaddr*
    - struct ipaddr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2532
    functionDepth: 5
    functionLinenumber: 2532
    functionLinenumberEnd: 2655
    functionName: evpn_show_route_vni_macip
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - build_evpn_type2_prefix
    - memcmp
    - evpn_type2_path_info_get_ip
    - bgp_evpn_vni_node_lookup
    - evpn_type2_prefix_global_copy
    - evpn_type2_path_info_get_mac
    - bgp_dest_get_prefix
    - bgp_dest_unlock_node
    - vty_out
    - json_object_int_add
    - json_object_new_array
    - route_vty_out_detail_header
    - route_vty_out_detail
    - json_object_array_add
    - is_evpn_prefix_ipaddr_none
    - bgp_dest_has_bgp_path_info_data
    - json_object_object_add
    - bgp_evpn_lookup_vni
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void evpn_show_route_vni_macip(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \     vni_t vni, struct ethaddr *mac,\n\t\t\t\t      struct ipaddr *ip, json_object
      *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2664,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2667,1
    - Dst: show_esi_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2671,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - vty
    - bgp
    - esi
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - esi_t*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2658
    functionDepth: 1
    functionLinenumber: 2658
    functionLinenumberEnd: 2672
    functionName: evpn_show_routes_esi
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - show_esi_routes
    - bgp_evpn_es_find
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void evpn_show_routes_esi(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      esi_t *esi, json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2686,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2689,1
    - Dst: show_vni_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 7
    argNames:
    - vty
    - bgp
    - vni
    - type
    - mac_table
    - vtep_ip
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - vni_t
    - int
    - bool
    - struct in_addr
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2695
      start: 2679
    functionDepth: 2
    functionLinenumber: 2679
    functionLinenumberEnd: 2695
    functionName: evpn_show_routes_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - show_vni_routes
    - vty_out
    - bgp_evpn_lookup_vni
    linkageType: ''
    returnType: void
    signature: "void evpn_show_routes_vni(struct vty *vty, struct bgp *bgp, vni_t
      vni,\n\t\t\t\t int type, bool mac_table,\n\t\t\t\t struct in_addr vtep_ip, json_object
      *json)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: build_evpn_type2_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2718,1
    - Dst: bgp_safi_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2719,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2721,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2723,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2726,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2732,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2732,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2736,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2739,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2743,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2745,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2745,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2750,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2757,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2758,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2760,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2764,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 6
    argNames:
    - vty
    - bgp
    - prd
    - mac
    - ip
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - struct prefix_rd*
    - struct ethaddr*
    - struct ipaddr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2765
      start: 2702
    functionDepth: 5
    functionLinenumber: 2702
    functionLinenumberEnd: 2765
    functionName: evpn_show_route_rd_macip
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - build_evpn_type2_prefix
    - route_vty_out_detail_header
    - json_object_new_array
    - json_object_object_addf
    - vty_out
    - route_vty_out_detail
    - json_object_array_add
    - bgp_dest_get_prefix
    - json_object_int_add
    - bgp_dest_has_bgp_path_info_data
    - bgp_safi_node_lookup
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void evpn_show_route_rd_macip(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \    struct prefix_rd *prd, struct ethaddr *mac,\n\t\t\t\t     struct ipaddr
      *ip, json_object *json)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2790,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2794,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2796,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2801,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2802,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2803,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2806,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2809,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2809,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2811,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2820,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2822,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2826,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2828,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2830,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2832,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2834,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2840,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2841,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2848,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2855,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2857,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2858,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2862,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2871,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2873,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2876,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2877,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2886,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2888,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2890,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2894,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2895,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2898,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2901,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 72
    argCount: 5
    argNames:
    - vty
    - bgp
    - prd
    - type
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - struct prefix_rd*
    - int
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2906
      start: 2771
    functionDepth: 5
    functionLinenumber: 2771
    functionLinenumberEnd: 2906
    functionName: evpn_show_route_rd
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - BGP_RD_AS_FORMAT
    - json_object_string_addf
    - bgp_dest_get_prefix
    - bgp_dest_unlock_node
    - vty_out
    - json_object_int_add
    - json_object_free
    - json_object_new_object
    - bgp_route_next
    - route_vty_out_detail_header
    - json_object_new_array
    - json_object_object_addf
    - route_vty_out_detail
    - json_object_array_add
    - bgp_table_top
    - bgp_node_lookup
    - json_object_object_add
    - bgp_dest_get_bgp_path_info
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void evpn_show_route_rd(struct vty *vty, struct bgp *bgp,\n\t\t\t
      \      struct prefix_rd *prd, int type,\n\t\t\t       json_object *json)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2928,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2929,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2936,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2938,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2942,1
    - Dst: build_evpn_type2_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2948,1
    - Dst: bgp_safi_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2949,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2956,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2958,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2960,1
    - Dst: bgp_evpn_show_route_rd_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2963,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2969,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2970,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2971,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2973,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2977,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2991,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2993,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:2998,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3000,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3004,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3006,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3009,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3011,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3016,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3020,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3021,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3024,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3026,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 56
    argCount: 5
    argNames:
    - vty
    - bgp
    - mac
    - ip
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - struct ethaddr*
    - struct ipaddr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3030
      start: 2912
    functionDepth: 5
    functionLinenumber: 2912
    functionLinenumberEnd: 3030
    functionName: evpn_show_route_rd_all_macip
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - build_evpn_type2_prefix
    - prefix_rd2str
    - json_object_string_addf
    - bgp_dest_get_prefix
    - bgp_safi_node_lookup
    - bgp_dest_unlock_node
    - vty_out
    - bgp_evpn_show_route_rd_header
    - json_object_int_add
    - json_object_free
    - bgp_route_next
    - json_object_new_object
    - json_object_new_array
    - route_vty_out_detail_header
    - json_object_object_addf
    - route_vty_out_detail
    - json_object_array_add
    - bgp_table_top
    - json_object_object_add
    - bgp_dest_get_bgp_path_info
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void evpn_show_route_rd_all_macip(struct vty *vty, struct bgp *bgp,\n\t\t\t\t\t
      struct ethaddr *mac, struct ipaddr *ip,\n\t\t\t\t\t json_object *json)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3056,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3057,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3062,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3064,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3069,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3073,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3078,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3079,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3085,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3088,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3093,1
    - Dst: bgp_evpn_show_route_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3100,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3104,1
    - Dst: bgp_evpn_show_route_rd_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3112,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3122,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3123,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3124,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3126,1
    - Dst: route_vty_out_detail_header
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3132,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3134,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3150,1
    - Dst: route_vty_out_detail
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3153,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3155,1
    - Dst: route_vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3159,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3163,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3169,1
    - Dst: json_object_object_addf
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3172,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3176,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3177,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3186,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3188,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3195,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3196,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3199,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3202,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 83
    argCount: 6
    argNames:
    - vty
    - bgp
    - type
    - json
    - detail
    - self_orig
    argTypes:
    - struct vty*
    - struct bgp*
    - int
    - json_object*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3207
      start: 3036
    functionDepth: 5
    functionLinenumber: 3036
    functionLinenumberEnd: 3207
    functionName: evpn_show_all_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 1
    functionsReached:
    - prefix_rd2str
    - json_object_string_addf
    - route_vty_out
    - bgp_evpn_show_route_header
    - bgp_dest_get_prefix
    - vty_out
    - bgp_evpn_show_route_rd_header
    - json_object_int_add
    - json_object_free
    - bgp_route_next
    - json_object_new_object
    - json_object_new_array
    - route_vty_out_detail_header
    - json_object_object_addf
    - route_vty_out_detail
    - json_object_array_add
    - bgp_table_top
    - json_object_object_add
    - bgp_dest_get_bgp_path_info
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void evpn_show_all_routes(struct vty *vty, struct bgp *bgp, int type,\n\t\t\t\t
      json_object *json, int detail, bool self_orig)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3215,1
    - Dst: evpn_show_all_routes
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3217,1
    - Dst: vty_json_no_pretty
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - vty
    - bgp
    - type
    - use_json
    - detail
    argTypes:
    - struct vty*
    - struct bgp*
    - int
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3229
      start: 3209
    functionDepth: 6
    functionLinenumber: 3209
    functionLinenumberEnd: 3229
    functionName: bgp_evpn_show_all_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - evpn_show_all_routes
    - vty_json_no_pretty
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_show_all_routes(struct vty *vty, struct bgp *bgp, int
      type,\n\t\t\t     bool use_json, int detail)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3240,1
    - Dst: display_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3243,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3248,1
    - Dst: display_l3vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3251,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3258,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3260,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - vty
    - bgp
    - vni
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - vni_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3264
      start: 3234
    functionDepth: 5
    functionLinenumber: 3234
    functionLinenumberEnd: 3264
    functionName: evpn_show_vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - display_l3vni
    - ALL_LIST_ELEMENTS_RO
    - display_vni
    - bgp_evpn_lookup_vni
    linkageType: ''
    returnType: void
    signature: "void evpn_show_vni(struct vty *vty, struct bgp *bgp, vni_t vni,\n\t\t\t
      \ json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3278,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3279,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3286,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3291,1
    - Dst: show_l3vni_entry
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3292,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3502,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3504,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3506,1
    - Dst: is_export_rt_configured
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3510,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3511,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3513,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3515,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3517,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3522,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3525,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3528,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3530,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3536,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3544,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3571,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3572,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3574,1
    - Dst: evpn_set_advertise_default_gw
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3577,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3588,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3589,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3591,1
    - Dst: evpn_unset_advertise_default_gw
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3594,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3605,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3607,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3610,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3610,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3611,1
    - Dst: evpn_set_advertise_default_gw
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3616,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3621,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3627,1
    - Dst: evpn_unset_advertise_default_gw
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3632,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3637,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3642,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3648,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3650,1
    - Dst: evpn_set_advertise_all_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3655,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3659,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3665,1
    - Dst: evpn_unset_advertise_all_vni
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3669,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3673,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3679,1
    - Dst: evpn_set_advertise_autort_rfc8365
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3683,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3687,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3694,1
    - Dst: evpn_unset_advertise_autort_rfc8365
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3698,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3702,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3711,1
    - Dst: argv_find_and_parse_afi
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3715,1
    - Dst: evpn_process_default_originate_cmd
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3716,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3720,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3730,1
    - Dst: argv_find_and_parse_afi
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3734,1
    - Dst: evpn_process_default_originate_cmd
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3735,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3739,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3748,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/bgpd/bgp_evpn_vty.c:3753,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 3
    argNames:
    - vty
    - bgp
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3757
      start: 3269
    functionDepth: 2
    functionLinenumber: 3269
    functionLinenumberEnd: 3757
    functionName: evpn_show_all_vnis
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - VTY_DECLVAR_CONTEXT_SUB
    - evpn_set_advertise_default_gw
    - DEFPY
    - evpn_unset_advertise_all_vni
    - bgp_get_evpn
    - ALL_LIST_ELEMENTS_RO
    - evpn_process_default_originate_cmd
    - hash_iterate
    - if
    - evpn_unset_advertise_autort_rfc8365
    - evpn_set_advertise_autort_rfc8365
    - DEFUN
    - vty_out
    - ecommunity_ecom2str
    - argv_find_and_parse_afi
    - is_export_rt_configured
    - show_l3vni_entry
    - evpn_unset_advertise_default_gw
    - EVPN_ENABLED
    - XFREE
    - VTY_GET_CONTEXT
    - evpn_set_advertise_all_vni
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void evpn_show_all_vnis(struct vty *vty, struct bgp *bgp,\n\t\t\t
      \      json_object *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4762,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4762,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4764,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4764,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4766,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4766,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4768,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4768,1
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4770,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4770,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 13
    argCount: 2
    argNames:
    - type
    - type_str
    argTypes:
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4776
      start: 4760
    functionDepth: 1
    functionLinenumber: 4760
    functionLinenumberEnd: 4776
    functionName: bgp_evpn_cli_parse_type_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - strncmp
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_cli_parse_type_cmp(int *type, const char *type_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4782,1
    - Dst: bgp_evpn_cli_parse_type_cmp
      Src: /src/frr/bgpd/bgp_evpn_vty.c:4784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - type
    - argv
    - argc
    argTypes:
    - int*
    - struct cmd_token**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4790
      start: 4778
    functionDepth: 2
    functionLinenumber: 4778
    functionLinenumberEnd: 4790
    functionName: bgp_evpn_cli_parse_type
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_cli_parse_type_cmp
    - argv_find
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_cli_parse_type(int *type, struct cmd_token **argv, int
      argc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_vty.c:6331,1
    - Dst: ecommunity_match
      Src: /src/frr/bgpd/bgp_evpn_vty.c:6332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rtl
    - ecomtarget
    argTypes:
    - struct list*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6337
      start: 6325
    functionDepth: 1
    functionLinenumber: 6325
    functionLinenumberEnd: 6337
    functionName: bgp_evpn_rt_matches_existing
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - ecommunity_match
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_rt_matches_existing(struct list *rtl,\n\t\t\t\t\t struct
      ecommunity *ecomtarget)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_vty.c:6348,1
    - Dst: ecommunity_match
      Src: /src/frr/bgpd/bgp_evpn_vty.c:6349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - rtl
    - ecomtarget
    argTypes:
    - struct list*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6351
      start: 6342
    functionDepth: 1
    functionLinenumber: 6342
    functionLinenumberEnd: 6351
    functionName: bgp_evpn_vrf_rt_matches_existing
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - ecommunity_match
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_vrf_rt_matches_existing(struct list *rtl,\n\t\t\t\t\t
      \    struct ecommunity *ecomtarget)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7137
      start: 7131
    functionDepth: 0
    functionLinenumber: 7131
    functionLinenumberEnd: 7137
    functionName: vni_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vni_cmp(const void **a, const void **b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_network.c:45,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_network.c:46,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_network.c:47,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_network.c:48,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_network.c:89,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_network.c:95,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_network.c:98,1
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:113,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_network.c:131,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_network.c:145,1
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:151,1
    - Dst: bgp_md5_set_prefix
      Src: /src/frr/bgpd/bgp_network.c:160,1
    - Dst: frr_with_privs
      Src: /src/frr/bgpd/bgp_network.c:168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_network.c:169,1
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:174,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 182
    functionName: bgp_dump_listener_info
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set_socket
    - flog_warn
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - bgp_md5_set_prefix
    - frr_with_privs
    - safe_strerror
    - if
    linkageType: ''
    returnType: void
    signature: void bgp_dump_listener_info(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: (&bgpd_privs)
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&bgpd_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_network.c:131,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_network.c:145,1
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:151,1
    - Dst: bgp_md5_set_prefix
      Src: /src/frr/bgpd/bgp_network.c:160,1
    - Dst: frr_with_privs
      Src: /src/frr/bgpd/bgp_network.c:168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_network.c:169,1
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - peer
    - password
    argTypes:
    - struct peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 179
    functionName: bgp_md5_set_password
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set_socket
    - ALL_LIST_ELEMENTS_RO
    - bgp_md5_set_prefix
    - frr_with_privs
    - if
    linkageType: ''
    returnType: int
    signature: int bgp_md5_set_password(struct peer *peer, const char *password)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_network.c:131,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_network.c:145,1
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:151,1
    - Dst: bgp_md5_set_prefix
      Src: /src/frr/bgpd/bgp_network.c:160,1
    - Dst: frr_with_privs
      Src: /src/frr/bgpd/bgp_network.c:168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_network.c:169,1
    - Dst: bgp_md5_set_socket
      Src: /src/frr/bgpd/bgp_network.c:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 178
    functionName: (&bgpd_privs)
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set_socket
    - ALL_LIST_ELEMENTS_RO
    - bgp_md5_set_prefix
    - frr_with_privs
    - if
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&bgpd_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_md5_set_prefix
      Src: /src/frr/bgpd/bgp_network.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - p
    argTypes:
    - struct bgp*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: bgp_md5_unset_prefix
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set_prefix
    linkageType: ''
    returnType: int
    signature: int bgp_md5_unset_prefix(struct bgp *bgp, struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_md5_set_password
      Src: /src/frr/bgpd/bgp_network.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: bgp_md5_set
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set_password
    linkageType: ''
    returnType: int
    signature: int bgp_md5_set(struct peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_tcp_keepalive
      Src: /src/frr/bgpd/bgp_network.c:202,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_network.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - bgp
    - fd
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 212
    functionName: bgp_update_setsockopt_tcp_keepalive
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - setsockopt_tcp_keepalive
    - zlog_err
    linkageType: ''
    returnType: void
    signature: void bgp_update_setsockopt_tcp_keepalive(struct bgp *bgp, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_md5_set_password
      Src: /src/frr/bgpd/bgp_network.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: bgp_md5_unset
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set_password
    linkageType: ''
    returnType: int
    signature: int bgp_md5_unset(struct peer *peer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sockopt_ttl
      Src: /src/frr/bgpd/bgp_network.c:225,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_network.c:227,1
    - Dst: sockopt_ttl
      Src: /src/frr/bgpd/bgp_network.c:238,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_network.c:240,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgp_network.c:246,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_network.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - peer
    - bgp_sock
    argTypes:
    - struct peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 258
    functionName: bgp_set_socket_ttl
    functionSourceFile: /src/frr/bgpd/bgp_network.c
    functionUses: 0
    functionsReached:
    - sockopt_ttl
    - flog_err
    - sockopt_minttl
    linkageType: ''
    returnType: int
    signature: int bgp_set_socket_ttl(struct peer *peer, int bgp_sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - af
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: AF_FOREACH
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AF_FOREACH(af)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - safi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: FOREACH_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_SAFI(safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - bgp
    - ','
    - afi
    - ','
    - safi
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 257
    functionName: BGP_SEND_EOR
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_SEND_EOR(bgp, afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bgp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 829
    functionDepth: 0
    functionLinenumber: 829
    functionLinenumberEnd: 830
    functionName: BGP_ROUTE_ADV_HOLD
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_ROUTE_ADV_HOLD(bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bgp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 831
    functionDepth: 0
    functionLinenumber: 831
    functionLinenumberEnd: 835
    functionName: IS_BGP_INST_KNOWN_TO_ZEBRA
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_BGP_INST_KNOWN_TO_ZEBRA(bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bgp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 836
    functionDepth: 0
    functionLinenumber: 836
    functionLinenumberEnd: 838
    functionName: BGP_SELECT_DEFER_DISABLE
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_SELECT_DEFER_DISABLE(bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bgp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 842
    functionName: BGP_SUPPRESS_FIB_ENABLED
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_SUPPRESS_FIB_ENABLED(bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1101
    functionDepth: 0
    functionLinenumber: 1101
    functionLinenumberEnd: 1102
    functionName: PEER_HOSTNAME
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_HOSTNAME(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1186
    functionDepth: 0
    functionLinenumber: 1186
    functionLinenumberEnd: 1187
    functionName: BGP_PEER_SU_UNSPEC
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_SU_UNSPEC(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1540
    functionDepth: 0
    functionLinenumber: 1540
    functionLinenumberEnd: 1550
    functionName: PEER_TOTAL_RX
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_TOTAL_RX(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1551
    functionDepth: 0
    functionLinenumber: 1551
    functionLinenumberEnd: 1563
    functionName: PEER_TOTAL_TX
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_TOTAL_TX(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - peer
    - ','
    - group
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1785
    functionDepth: 0
    functionLinenumber: 1785
    functionLinenumberEnd: 1787
    functionName: PEER_ATTR_INHERIT
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_ATTR_INHERIT(peer, group, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - peer
    - ','
    - group
    - ','
    - attr
    - ','
    - mt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1787
    functionDepth: 0
    functionLinenumber: 1787
    functionLinenumberEnd: 1795
    functionName: PEER_STR_ATTR_INHERIT
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_STR_ATTR_INHERIT(peer, group, attr, mt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - peer
    - ','
    - group
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1795
    functionDepth: 0
    functionLinenumber: 1795
    functionLinenumberEnd: 1804
    functionName: PEER_SU_ATTR_INHERIT
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_SU_ATTR_INHERIT(peer, group, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1806
    functionDepth: 0
    functionLinenumber: 1806
    functionLinenumberEnd: 1811
    functionName: BGP_PEER_START_SUPPRESSED
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PEER_START_SUPPRESSED(P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1812
    functionDepth: 0
    functionLinenumber: 1812
    functionLinenumberEnd: 1814
    functionName: PEER_ROUTE_ADV_DELAY
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_ROUTE_ADV_DELAY(peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2027
    functionDepth: 0
    functionLinenumber: 2027
    functionLinenumberEnd: 2028
    functionName: BGP_INPUT
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_INPUT(P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 2028
    functionDepth: 0
    functionLinenumber: 2028
    functionLinenumberEnd: 2029
    functionName: BGP_INPUT_PNT
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_INPUT_PNT(P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 2029
    functionDepth: 0
    functionLinenumber: 2029
    functionLinenumberEnd: 2031
    functionName: BGP_IS_VALID_STATE_FOR_NOTIF
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_IS_VALID_STATE_FOR_NOTIF(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2133
      start: 2132
    functionDepth: 0
    functionLinenumber: 2132
    functionLinenumberEnd: 2133
    functionName: peer_unlock
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: peer_unlock(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2134
      start: 2133
    functionDepth: 0
    functionLinenumber: 2133
    functionLinenumberEnd: 2134
    functionName: peer_lock
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: peer_lock(B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _bgp
    - ','
    - _peer_list
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2411
      start: 2392
    functionDepth: 0
    functionLinenumber: 2392
    functionLinenumberEnd: 2411
    functionName: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA(_bgp, _peer_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2416
      start: 2412
    functionDepth: 0
    functionLinenumber: 2412
    functionLinenumberEnd: 2416
    functionName: bgp_lock
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct bgp
    signature: struct bgp *bgp_lock(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.h:2420,1
    - Dst: bgp_free
      Src: /src/frr/bgpd/bgpd.h:2422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts:
    - condition: (bgp->lock > 0)
      pos:
        line_end: 2419
        line_start: 2419
        source_file: /src/frr/bgpd/bgpd.h
    constantsTouched: []
    func_position:
      end: 2423
      start: 2418
    functionDepth: 1
    functionLinenumber: 2418
    functionLinenumberEnd: 2423
    functionName: bgp_unlock
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 3
    functionsReached:
    - bgp_free
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_unlock(struct bgp *bgp)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.h:2488,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 62
    argCount: 2
    argNames:
    - afi
    - safi
    argTypes:
    - afi_t
    - safi_t
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 2487
        line_start: 2487
        source_file: /src/frr/bgpd/bgpd.h
    constantsTouched: []
    func_position:
      end: 2489
      start: 2425
    functionDepth: 1
    functionLinenumber: 2425
    functionLinenumberEnd: 2489
    functionName: afindex
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int afindex(afi_t afi, safi_t safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.h:2494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2497
      start: 2492
    functionDepth: 1
    functionLinenumber: 2492
    functionLinenumberEnd: 2497
    functionName: peer_group_active
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 6
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int peer_group_active(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 4
    argCount: 2
    argNames:
    - peer
    - afi
    argTypes:
    - struct peer*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2511
      start: 2500
    functionDepth: 0
    functionLinenumber: 2500
    functionLinenumberEnd: 2511
    functionName: peer_afi_active_nego
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int peer_afi_active_nego(const struct peer *peer, afi_t afi)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 4
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct peer_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2531
      start: 2514
    functionDepth: 0
    functionLinenumber: 2514
    functionLinenumberEnd: 2531
    functionName: peer_group_af_configured
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int peer_group_af_configured(struct peer_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/bgpd/bgpd.h:2536,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgpd.h:2536,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgpd.h:2537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ts
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2538
      start: 2533
    functionDepth: 1
    functionLinenumber: 2533
    functionLinenumberEnd: 2538
    functionName: timestamp_string
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 2
    functionsReached:
    - monotime
    - ctime
    - time
    linkageType: ''
    returnType: char
    signature: char *timestamp_string(time_t ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2543
      start: 2540
    functionDepth: 0
    functionLinenumber: 2540
    functionLinenumberEnd: 2543
    functionName: peer_established
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool peer_established(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.h:2547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2548
      start: 2545
    functionDepth: 1
    functionLinenumber: 2545
    functionLinenumberEnd: 2548
    functionName: peer_dynamic_neighbor
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 7
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool peer_dynamic_neighbor(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.h:2552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.h:2553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2550
    functionDepth: 2
    functionLinenumber: 2550
    functionLinenumberEnd: 2554
    functionName: peer_dynamic_neighbor_no_nsf
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - peer_dynamic_neighbor
    linkageType: ''
    returnType: bool
    signature: bool peer_dynamic_neighbor_no_nsf(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.h:2558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2556
    functionDepth: 1
    functionLinenumber: 2556
    functionLinenumberEnd: 2559
    functionName: peer_cap_enhe
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int peer_cap_enhe(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgpd.h:2567,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/bgpd/bgpd.h:2569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2574
      start: 2562
    functionDepth: 1
    functionLinenumber: 2562
    functionLinenumberEnd: 2574
    functionName: bgp_vrf_lookup_by_instance_type
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 0
    functionsReached:
    - vrf_lookup_by_name
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct vrf
    signature: struct vrf *bgp_vrf_lookup_by_instance_type(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_vrf_lookup_by_instance_type
      Src: /src/frr/bgpd/bgpd.h:2585,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgpd.h:2588,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.h:2589,1
    - Dst: if_is_up
      Src: /src/frr/bgpd/bgpd.h:2591,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - bgp
    - active
    argTypes:
    - struct bgp*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2595
      start: 2576
    functionDepth: 2
    functionLinenumber: 2576
    functionLinenumberEnd: 2595
    functionName: bgp_vrf_interfaces
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    - bgp_vrf_lookup_by_instance_type
    - if_is_up
    - strcmp
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_vrf_interfaces(struct bgp *bgp, bool active)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgpd.h:2602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - vrf
    argTypes:
    - struct bgp*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2603
      start: 2598
    functionDepth: 1
    functionLinenumber: 2598
    functionLinenumberEnd: 2603
    functionName: bgp_vrf_link
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached:
    - bgp_lock
    linkageType: ''
    returnType: void
    signature: void bgp_vrf_link(struct bgp *bgp, struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.h:2610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bgp
    - vrf
    argTypes:
    - struct bgp*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2606
    functionDepth: 2
    functionLinenumber: 2606
    functionLinenumberEnd: 2613
    functionName: bgp_vrf_unlink
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 1
    functionsReached:
    - bgp_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_vrf_unlink(struct bgp *bgp, struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.h:2618,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.h:2619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2615
    functionDepth: 1
    functionLinenumber: 2615
    functionLinenumberEnd: 2620
    functionName: bgp_in_graceful_shutdown
    functionSourceFile: /src/frr/bgpd/bgpd.h
    functionUses: 5
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool bgp_in_graceful_shutdown(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
    functionSourceFile: /src/frr/bgpd/bgp_open.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_OPEN_EXT_OPT_PARAMS_CAPABLE(peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - strat
    argTypes:
    - enum bgp_addpath_strat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: bgp_addpath_names
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_addpath_strategy_names
    signature: 'struct bgp_addpath_strategy_names *

      bgp_addpath_names(enum bgp_addpath_strat strat)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - d
    - afi
    - safi
    argTypes:
    - struct bgp_addpath_bgp_data*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: bgp_addpath_is_addpath_used
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool bgp_addpath_is_addpath_used(struct bgp_addpath_bgp_data *d, afi_t
      afi,\n\t\t\t\t safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct bgp_addpath_bgp_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 77
    functionName: bgp_addpath_init_bgp_data
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_addpath_init_bgp_data(struct bgp_addpath_bgp_data *d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 76
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: idalloc_free_to_pool
      Src: /src/frr/bgpd/bgp_addpath.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - d
    - nd
    argTypes:
    - struct bgp_addpath_info_data*
    - struct bgp_addpath_node_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: bgp_addpath_free_info_data
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 1
    functionsReached:
    - idalloc_free_to_pool
    linkageType: ''
    returnType: void
    signature: "void bgp_addpath_free_info_data(struct bgp_addpath_info_data *d,\n\t\t\t
      \     struct bgp_addpath_node_data *nd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - d
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct bgp_addpath_info_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: bgp_addpath_id_for_peer
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t bgp_addpath_id_for_peer(struct peer *peer, afi_t afi, safi_t
      safi,\n\t\t\t\tstruct bgp_addpath_info_data *d)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct bgp_addpath_info_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 123
    functionName: bgp_addpath_info_has_ids
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_addpath_info_has_ids(struct bgp_addpath_info_data *d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: idalloc_drain_pool
      Src: /src/frr/bgpd/bgp_addpath.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - bd
    - nd
    - afi
    - safi
    argTypes:
    - struct bgp_addpath_bgp_data*
    - struct bgp_addpath_node_data*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: bgp_addpath_free_node_data
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached:
    - idalloc_drain_pool
    linkageType: ''
    returnType: void
    signature: "void bgp_addpath_free_node_data(struct bgp_addpath_bgp_data *bd,\n\t\t\t
      \     struct bgp_addpath_node_data *nd, afi_t afi,\n\t\t\t      safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - strategy
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: bgp_addpath_dmed_required
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_addpath_dmed_required(int strategy)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_addpath.c:160,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_addpath.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - strat
    - pi
    argTypes:
    - enum bgp_addpath_strat
    - struct bgp_path_info*
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/frr/bgpd/bgp_addpath.c
    constantsTouched: []
    func_position:
      end: 169
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 169
    functionName: bgp_addpath_tx_path
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - assert
    linkageType: ''
    returnType: bool
    signature: bool bgp_addpath_tx_path(enum bgp_addpath_strat strat, struct bgp_path_info
      *pi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: idalloc_drain_pool
      Src: /src/frr/bgpd/bgp_addpath.c:180,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_addpath.c:183,1
    - Dst: idalloc_free
      Src: /src/frr/bgpd/bgp_addpath.c:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - addpath_type
    - dest
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - enum bgp_addpath_strat
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 194
    functionName: bgp_addpath_flush_type_rn
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached:
    - idalloc_drain_pool
    - idalloc_free
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void bgp_addpath_flush_type_rn(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\t      enum bgp_addpath_strat addpath_type,\n\t\t\t\t      struct
      bgp_dest *dest)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_addpath.c:211,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_addpath.c:212,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_addpath.c:216,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_addpath.c:220,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_addpath.c:221,1
    - Dst: bgp_addpath_flush_type_rn
      Src: /src/frr/bgpd/bgp_addpath.c:222,1
    - Dst: bgp_addpath_flush_type_rn
      Src: /src/frr/bgpd/bgp_addpath.c:225,1
    - Dst: idalloc_destroy
      Src: /src/frr/bgpd/bgp_addpath.c:230,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - bgp
    - afi
    - safi
    - addpath_type
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - enum bgp_addpath_strat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 232
    functionName: bgp_addpath_flush_type
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - idalloc_destroy
    - bgp_addpath_flush_type_rn
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void bgp_addpath_flush_type(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t\t
      \  enum bgp_addpath_strat addpath_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_addpath_tx_path
      Src: /src/frr/bgpd/bgp_addpath.c:241,1
    - Dst: idalloc_allocate
      Src: /src/frr/bgpd/bgp_addpath.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - allocator
    - path
    - addpath_type
    argTypes:
    - struct id_alloc*
    - struct bgp_path_info*
    - enum bgp_addpath_strat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: bgp_addpath_populate_path
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached:
    - bgp_addpath_tx_path
    - idalloc_allocate
    linkageType: ''
    returnType: void
    signature: "void bgp_addpath_populate_path(struct id_alloc *allocator,\n\t\t\t\t
      \     struct bgp_path_info *path,\n\t\t\t\t      enum bgp_addpath_strat addpath_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_addpath.c:264,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_addpath.c:265,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_addpath.c:268,1
    - Dst: bgp_addpath_names
      Src: /src/frr/bgpd/bgp_addpath.c:269,1
    - Dst: idalloc_new
      Src: /src/frr/bgpd/bgp_addpath.c:272,1
    - Dst: idalloc_reserve
      Src: /src/frr/bgpd/bgp_addpath.c:274,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_addpath.c:279,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_addpath.c:280,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_addpath.c:286,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_addpath.c:290,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_addpath.c:291,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_addpath.c:292,1
    - Dst: bgp_addpath_populate_path
      Src: /src/frr/bgpd/bgp_addpath.c:294,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_addpath.c:297,1
    - Dst: bgp_addpath_populate_path
      Src: /src/frr/bgpd/bgp_addpath.c:299,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - bgp
    - afi
    - safi
    - addpath_type
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - enum bgp_addpath_strat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 254
    functionDepth: 3
    functionLinenumber: 254
    functionLinenumberEnd: 303
    functionName: bgp_addpath_populate_type
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - zlog_info
    - snprintf
    - bgp_table_top
    - idalloc_reserve
    - bgp_dest_get_bgp_path_info
    - bgp_addpath_names
    - bgp_addpath_populate_path
    - idalloc_new
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void bgp_addpath_populate_type(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\t    enum bgp_addpath_strat addpath_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_addpath.c:326,1
    - Dst: bgp_addpath_populate_type
      Src: /src/frr/bgpd/bgp_addpath.c:344,1
    - Dst: bgp_addpath_flush_type
      Src: /src/frr/bgpd/bgp_addpath.c:347,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 310
    functionDepth: 4
    functionLinenumber: 310
    functionLinenumberEnd: 351
    functionName: bgp_addpath_type_changed
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - bgp_addpath_populate_type
    - bgp_addpath_flush_type
    linkageType: ''
    returnType: void
    signature: void bgp_addpath_type_changed(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 324
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI(afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 333
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI(afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_addpath_populate_type
      Src: /src/frr/bgpd/bgp_addpath.c:344,1
    - Dst: bgp_addpath_flush_type
      Src: /src/frr/bgpd/bgp_addpath.c:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 336
    functionDepth: 4
    functionLinenumber: 336
    functionLinenumberEnd: 350
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_addpath.c
    functionUses: 9
    functionsReached:
    - bgp_addpath_populate_type
    - bgp_addpath_flush_type
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI(afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - hex
    - bin
    argTypes:
    - uint8_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 34
    functionName: hex2bin
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hex2bin(uint8_t *hex, int *bin)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hexstr
    - len
    argTypes:
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: hexstr2num
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int hexstr2num(uint8_t *hexstr, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:55,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec_util.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - nlri_content
    - len
    - mval
    - match_num
    - error
    argTypes:
    - uint8_t*
    - int
    - struct bgp_pbr_match_val*
    - uint8_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 66
    functionName: bgp_flowspec_call_non_opaque_decode
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 0
    functionsReached:
    - bgp_flowspec_op_decode
    - flog_err
    linkageType: ''
    returnType: int
    signature: "int bgp_flowspec_call_non_opaque_decode(uint8_t *nlri_content, int
      len,\n\t\t\t\t\t       struct bgp_pbr_match_val *mval,\n\t\t\t\t\t       uint8_t
      *match_num, int *error)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_flowspec_util.c:77,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_flowspec_util.c:87,1
    - Dst: bgp_flowspec_ip_address
      Src: /src/frr/bgpd/bgp_flowspec_util.c:88,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_flowspec_util.c:102,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_flowspec_util.c:106,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:115,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:126,1
    - Dst: bgp_flowspec_bitmask_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:133,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:141,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 51
    argCount: 3
    argNames:
    - pfs
    - input
    - prefix_check
    argTypes:
    - struct prefix*
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 154
    functionName: bgp_flowspec_contains_prefix
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    - memset
    - IPV4_ADDR_SAME
    - bgp_flowspec_op_decode
    - family2afi
    - bgp_flowspec_bitmask_decode
    - bgp_flowspec_ip_address
    linkageType: ''
    returnType: bool
    signature: "bool bgp_flowspec_contains_prefix(const struct prefix *pfs,\n\t\t\t\t
      \ struct prefix *input, int prefix_check)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_flowspec_util.c:175,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_flowspec_util.c:178,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_flowspec_util.c:180,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_flowspec_util.c:188,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_flowspec_util.c:205,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_flowspec_util.c:212,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_flowspec_util.c:220,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_flowspec_util.c:225,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 7
    argNames:
    - type
    - nlri_ptr
    - max_len
    - result
    - error
    - afi
    - ipv6_offset
    argTypes:
    - enum bgp_flowspec_util_nlri_t
    - uint8_t*
    - uint32_t
    - void*
    - int*
    - afi_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 232
    functionName: bgp_flowspec_ip_address
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - PSIZE
    - memset
    - afi2family
    - snprintfrr
    - prefix_blen
    - prefix_copy
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_flowspec_ip_address(enum bgp_flowspec_util_nlri_t type,\n\t\t\t
      \   uint8_t *nlri_ptr,\n\t\t\t    uint32_t max_len,\n\t\t\t    void *result,
      int *error,\n\t\t\t    afi_t afi,\n\t\t\t    uint8_t *ipv6_offset)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/frr/bgpd/bgp_flowspec_util.c:260,1
    - Dst: hexstr2num
      Src: /src/frr/bgpd/bgp_flowspec_util.c:264,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:274,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:280,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:286,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:292,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:297,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 67
    argCount: 5
    argNames:
    - type
    - nlri_ptr
    - max_len
    - result
    - error
    argTypes:
    - enum bgp_flowspec_util_nlri_t
    - uint8_t*
    - uint32_t
    - void*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 336
    functionName: bgp_flowspec_op_decode
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 2
    functionsReached:
    - hexstr2num
    - hex2bin
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int bgp_flowspec_op_decode(enum bgp_flowspec_util_nlri_t type,\n\t\t\t
      \  uint8_t *nlri_ptr,\n\t\t\t   uint32_t max_len,\n\t\t\t   void *result, int
      *error)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/frr/bgpd/bgp_flowspec_util.c:366,1
    - Dst: hexstr2num
      Src: /src/frr/bgpd/bgp_flowspec_util.c:373,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:377,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:382,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:388,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:393,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:399,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_util.c:404,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 72
    argCount: 5
    argNames:
    - type
    - nlri_ptr
    - max_len
    - result
    - error
    argTypes:
    - enum bgp_flowspec_util_nlri_t
    - uint8_t*
    - uint32_t
    - void*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 448
    functionName: bgp_flowspec_bitmask_decode
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 1
    functionsReached:
    - hexstr2num
    - hex2bin
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int bgp_flowspec_bitmask_decode(enum bgp_flowspec_util_nlri_t type,\n\t\t\t\t
      uint8_t *nlri_ptr,\n\t\t\t\t uint32_t max_len,\n\t\t\t\t void *result, int *error)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: bgp_flowspec_ip_address
      Src: /src/frr/bgpd/bgp_flowspec_util.c:478,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec_util.c:485,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_flowspec_util.c:496,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:513,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:523,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:533,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:543,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:553,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:563,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:573,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:584,1
    - Dst: bgp_flowspec_call_non_opaque_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:594,1
    - Dst: bgp_flowspec_bitmask_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:601,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec_util.c:607,1
    - Dst: bgp_flowspec_bitmask_decode
      Src: /src/frr/bgpd/bgp_flowspec_util.c:617,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec_util.c:623,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec_util.c:632,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 101
    argCount: 4
    argNames:
    - nlri_content
    - len
    - bpem
    - afi
    argTypes:
    - uint8_t*
    - int
    - struct bgp_pbr_entry_main*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 653
    functionName: bgp_flowspec_match_rules_fill
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 1
    functionsReached:
    - memcmp
    - flog_err
    - bgp_flowspec_call_non_opaque_decode
    - bgp_flowspec_bitmask_decode
    - bgp_flowspec_ip_address
    linkageType: ''
    returnType: int
    signature: "int bgp_flowspec_match_rules_fill(uint8_t *nlri_content, int len,\n\t\t\t\t
      \ struct bgp_pbr_entry_main *bpem,\n\t\t\t\t  afi_t afi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_flowspec_util.c:664,1
    - Dst: bgp_pbr_build_and_validate_entry
      Src: /src/frr/bgpd/bgp_flowspec_util.c:665,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_flowspec_util.c:665,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_flowspec_util.c:673,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_flowspec_util.c:679,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - bgp
    - pi
    - p
    - afi
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct prefix*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 685
    functionName: bgp_flowspec_get_first_nh
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_util.c
    functionUses: 0
    functionsReached:
    - memset
    - bgp_dest_get_prefix
    - afi2family
    - bgp_pbr_build_and_validate_entry
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool bgp_flowspec_get_first_nh(struct bgp *bgp, struct bgp_path_info
      *pi,\n\t\t\t       struct prefix *p, afi_t afi)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_open.c:116,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_open.c:129,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:135,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_open.c:135,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:141,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:147,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:153,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_open.c:160,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_open.c:163,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:168,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:174,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:180,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:186,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:192,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:198,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_open.c:204,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_open.c:211,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:218,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:222,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:225,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:228,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:232,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_open.c:233,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:238,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:241,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:244,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:247,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:250,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:253,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:256,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:260,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:264,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_open.c:268,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:273,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_open.c:278,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_open.c:283,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_open.c:290,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 117
    argCount: 4
    argNames:
    - vty
    - peer
    - use_json
    - json_neigh
    argTypes:
    - struct vty*
    - struct peer*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 292
    functionName: bgp_capability_vty_out
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_int_add
    - ntohs
    - json_object_string_add
    - json_object_object_add
    - bgp_map_afi_safi_iana2int
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void bgp_capability_vty_out(struct vty *vty, struct peer *peer, bool
      use_json,\n\t\t\t    json_object *json_neigh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:297,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:298,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s
    - mpc
    argTypes:
    - struct stream*
    - struct capability_mp_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 300
    functionName: bgp_capability_mp_data
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - stream_getc
    - stream_getw
    linkageType: ''
    returnType: void
    signature: "void bgp_capability_mp_data(struct stream *s,\n\t\t\t\t   struct capability_mp_data
      *mpc)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:306,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:312,1
    - Dst: bgp_capability_mp_data
      Src: /src/frr/bgpd/bgp_open.c:319,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:321,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:322,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:323,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:324,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:324,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:327,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 339
    functionName: bgp_capability_mp
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - iana_safi2str
    - bgp_capability_mp_data
    - zlog_debug
    - bgp_debug_neighbor_events
    - iana_afi2str
    - bgp_map_afi_safi_iana2int
    - lookup_msg
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: int bgp_capability_mp(struct peer *peer, struct capability_header *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:345,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 5
    argNames:
    - peer
    - afi
    - safi
    - type
    - mode
    argTypes:
    - struct peer*
    - iana_afi_t
    - iana_safi_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 349
    functionName: bgp_capability_orf_not_support
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - bgp_debug_neighbor_events
    linkageType: ''
    returnType: void
    signature: "void bgp_capability_orf_not_support(struct peer *peer, iana_afi_t
      afi,\n\t\t\t\t\t   iana_safi_t safi, uint8_t type,\n\t\t\t\t\t   uint8_t mode)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:365,1
    - Dst: bgp_capability_mp_data
      Src: /src/frr/bgpd/bgp_open.c:379,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:380,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:384,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:385,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:386,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:386,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:389,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:390,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:401,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:404,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:410,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:411,1
    - Dst: bgp_capability_orf_not_support
      Src: /src/frr/bgpd/bgp_open.c:420,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:430,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:431,1
    - Dst: bgp_capability_orf_not_support
      Src: /src/frr/bgpd/bgp_open.c:438,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:446,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:447,1
    - Dst: bgp_capability_orf_not_support
      Src: /src/frr/bgpd/bgp_open.c:454,1
    - Dst: bgp_capability_orf_not_support
      Src: /src/frr/bgpd/bgp_open.c:460,1
    - Dst: bgp_capability_orf_not_support
      Src: /src/frr/bgpd/bgp_open.c:469,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:474,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:475,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:478,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:479,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:480,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:480,1
    - Dst: bgp_capability_orf_not_support
      Src: /src/frr/bgpd/bgp_open.c:489,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:496,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:497,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:500,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:503,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 92
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 508
    functionName: bgp_capability_orf_entry
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    - zlog_info
    - bgp_capability_mp_data
    - bgp_capability_orf_not_support
    - zlog_debug
    - SET_FLAG
    - bgp_debug_neighbor_events
    - bgp_notify_send
    - iana_afi2str
    - stream_getc
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_orf_entry(struct peer *peer,\n\t\t\t\t    struct
      capability_header *hdr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:513,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:515,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:519,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:526,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:527,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:532,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:533,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:535,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:540,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:541,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:543,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:545,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:548,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:549,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:557,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:563,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:566,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:567,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:568,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:571,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:572,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:573,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:575,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:576,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:578,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:579,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:581,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:582,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:584,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:585,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_open.c:587,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:588,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:594,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:596,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:597,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - peer
    - caphdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 510
    functionDepth: 2
    functionLinenumber: 510
    functionLinenumberEnd: 602
    functionName: bgp_capability_restart
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - CHECK_FLAG
    - stream_getw
    - SET_FLAG
    - UNSET_FLAG
    - zlog_debug
    - get_afi_safi_str
    - bgp_debug_neighbor_events
    - iana_afi2str
    - stream_getc
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_restart(struct peer *peer,\n\t\t\t\t  struct capability_header
      *caphdr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:619,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:620,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:622,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:624,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:627,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:628,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:629,1
    - Dst: stream_get3
      Src: /src/frr/bgpd/bgp_open.c:630,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:632,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:633,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:634,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:636,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:637,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:639,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:641,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:642,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:644,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:645,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:647,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:648,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:650,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:651,1
    - Dst: MIN
      Src: /src/frr/bgpd/bgp_open.c:655,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:656,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - peer
    - caphdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 661
    functionName: bgp_capability_llgr
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - MIN
    - CHECK_FLAG
    - stream_getw
    - stream_get3
    - SET_FLAG
    - zlog_debug
    - bgp_debug_neighbor_events
    - iana_afi2str
    - stream_getc
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_llgr(struct peer *peer,\n\t\t\t       struct capability_header
      *caphdr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:666,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_open.c:669,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_open.c:675,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:675,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:677,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 682
    functionName: bgp_capability_as4
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - stream_getl
    - flog_err
    - zlog_debug
    - BGP_DEBUG
    - BGP_INPUT
    linkageType: ''
    returnType: as_t
    signature: as_t bgp_capability_as4(struct peer *peer, struct capability_header
      *hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_open.c:688,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:695,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 698
    functionName: bgp_capability_ext_message
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - flog_err
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_ext_message(struct peer *peer,\n\t\t\t\t      struct
      capability_header *hdr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:703,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:704,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:706,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:710,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:717,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:720,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:721,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:722,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:724,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:725,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:728,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:729,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:729,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:736,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:737,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:738,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:740,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:741,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:744,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:745,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:747,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:748,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:753,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:757,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 762
    functionName: bgp_capability_addpath
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - iana_safi2str
    - stream_getw
    - SET_FLAG
    - zlog_debug
    - bgp_debug_neighbor_events
    - iana_afi2str
    - stream_getc
    - bgp_map_afi_safi_iana2int
    - lookup_msg
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_addpath(struct peer *peer,\n\t\t\t\t  struct capability_header
      *hdr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:766,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:767,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:771,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:778,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:779,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:781,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:783,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:786,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:787,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:789,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:790,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:793,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:794,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:795,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:797,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:798,1
    - Dst: afi_iana2int
      Src: /src/frr/bgpd/bgp_open.c:810,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:815,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_open.c:818,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_open.c:819,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:823,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:825,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:826,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:830,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 833
    functionName: bgp_capability_enhe
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - afi_iana2int
    - CHECK_FLAG
    - stream_getw
    - zlog_debug
    - SET_FLAG
    - bgp_debug_neighbor_events
    - iana_afi2str
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: int bgp_capability_enhe(struct peer *peer, struct capability_header
      *hdr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:838,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:840,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:843,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:845,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:846,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:847,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_open.c:855,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_open.c:856,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_open.c:859,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_open.c:864,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_open.c:865,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_open.c:867,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:870,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:871,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:878,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:879,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:880,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_open.c:888,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_open.c:889,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_open.c:892,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_open.c:897,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_open.c:899,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:902,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:903,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 835
    functionDepth: 1
    functionLinenumber: 835
    functionLinenumberEnd: 908
    functionName: bgp_capability_hostname
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - stream_forward_getp
    - SET_FLAG
    - stream_get
    - zlog_debug
    - XSTRDUP
    - XFREE
    - bgp_debug_neighbor_events
    - stream_getc
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_hostname(struct peer *peer,\n\t\t\t\t   struct
      capability_header *hdr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:912,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:914,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:918,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:918,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 910
    functionDepth: 1
    functionLinenumber: 910
    functionLinenumberEnd: 922
    functionName: bgp_capability_role
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - stream_getc
    - flog_warn
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: int bgp_capability_role(struct peer *peer, struct capability_header
      *hdr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:927,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:929,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:932,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:934,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:935,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:936,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:944,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_open.c:947,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_open.c:948,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_open.c:951,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_open.c:957,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_open.c:959,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:961,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:962,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - peer
    - hdr
    argTypes:
    - struct peer*
    - struct capability_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 924
    functionDepth: 1
    functionLinenumber: 924
    functionLinenumberEnd: 967
    functionName: bgp_capability_software_version
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - stream_forward_getp
    - SET_FLAG
    - stream_get
    - zlog_debug
    - XSTRDUP
    - XFREE
    - bgp_debug_neighbor_events
    - stream_getc
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_software_version(struct peer *peer,\n\t\t\t\t\t
      \  struct capability_header *hdr)"
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:980,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:981,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_open.c:984,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_open.c:984,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:986,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_open.c:988,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:993,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:994,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:996,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1001,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1002,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1003,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:1007,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1009,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:1014,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1015,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:1017,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:1040,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:1043,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1047,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:1053,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:1056,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1060,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1074,1
    - Dst: bgp_capability_mp
      Src: /src/frr/bgpd/bgp_open.c:1077,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_open.c:1082,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1093,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1095,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1097,1
    - Dst: bgp_capability_orf_entry
      Src: /src/frr/bgpd/bgp_open.c:1101,1
    - Dst: bgp_capability_restart
      Src: /src/frr/bgpd/bgp_open.c:1104,1
    - Dst: bgp_capability_llgr
      Src: /src/frr/bgpd/bgp_open.c:1107,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1111,1
    - Dst: bgp_capability_as4
      Src: /src/frr/bgpd/bgp_open.c:1120,1
    - Dst: bgp_capability_addpath
      Src: /src/frr/bgpd/bgp_open.c:1124,1
    - Dst: bgp_capability_enhe
      Src: /src/frr/bgpd/bgp_open.c:1127,1
    - Dst: bgp_capability_ext_message
      Src: /src/frr/bgpd/bgp_open.c:1130,1
    - Dst: bgp_capability_hostname
      Src: /src/frr/bgpd/bgp_open.c:1133,1
    - Dst: bgp_capability_role
      Src: /src/frr/bgpd/bgp_open.c:1136,1
    - Dst: bgp_capability_software_version
      Src: /src/frr/bgpd/bgp_open.c:1139,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:1147,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:1151,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_open.c:1155,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1161,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1165,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1166,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_open.c:1167,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_open.c:1171,1
    - Dst: stream_set_getp
      Src: /src/frr/bgpd/bgp_open.c:1174,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1177,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1178,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 132
    argCount: 4
    argNames:
    - peer
    - length
    - mp_capability
    - error
    argTypes:
    - struct peer*
    - size_t
    - int*
    - uint8_t**
    assertStmts:
    - condition: (STREAM_READABLE(s) >= length)
      pos:
        line_end: 983
        line_start: 983
        source_file: /src/frr/bgpd/bgp_open.c
    constantsTouched: []
    func_position:
      end: 1183
      start: 976
    functionDepth: 3
    functionLinenumber: 976
    functionLinenumberEnd: 1183
    functionName: bgp_capability_parse
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - bgp_capability_as4
    - bgp_capability_hostname
    - stream_getc
    - lookup_msg
    - bgp_capability_enhe
    - stream_set_getp
    - flog_warn
    - zlog_debug
    - bgp_capability_addpath
    - bgp_notify_send
    - bgp_capability_ext_message
    - bgp_capability_restart
    - BGP_INPUT
    - stream_get_getp
    - assert
    - bgp_capability_role
    - zlog_info
    - STREAM_READABLE
    - bgp_capability_mp
    - UNSET_FLAG
    - bgp_capability_llgr
    - bgp_debug_neighbor_events
    - bgp_capability_orf_entry
    - stream_pnt
    - memcpy
    - bgp_capability_software_version
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_parse(struct peer *peer, size_t length,\n\t\t\t\tint
      *mp_capability, uint8_t **error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1194
    functionName: strict_capability_same
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool strict_capability_same(struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1209,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1214,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_open.c:1217,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_open.c:1219,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 10
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1197
    functionDepth: 1
    functionLinenumber: 1197
    functionLinenumberEnd: 1223
    functionName: bgp_role_violation
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - bgp_notify_send_with_data
    - CHECK_FLAG
    - strlen
    - bgp_notify_send
    linkageType: ''
    returnType: bool
    signature: bool bgp_role_violation(struct peer *peer)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:1231,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1232,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1236,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1237,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1243,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1248,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1252,1
    - Dst: BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
      Src: /src/frr/bgpd/bgp_open.c:1260,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1261,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:1264,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1266,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1269,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1273,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1277,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_open.c:1280,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1282,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1285,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1288,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1289,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1291,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1296,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1297,1
    - Dst: bgp_capability_as4
      Src: /src/frr/bgpd/bgp_open.c:1299,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_open.c:1303,1
    - Dst: stream_set_getp
      Src: /src/frr/bgpd/bgp_open.c:1309,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 48
    argCount: 2
    argNames:
    - peer
    - length
    argTypes:
    - struct peer*
    - uint16_t
    assertStmts:
    - condition: (capd_end <= end)
      pos:
        line_end: 1279
        line_start: 1279
        source_file: /src/frr/bgpd/bgp_open.c
    constantsTouched: []
    func_position:
      end: 1311
      start: 1229
    functionDepth: 2
    functionLinenumber: 1229
    functionLinenumberEnd: 1311
    functionName: peek_for_as4_capability
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 1
    functionsReached:
    - assert
    - stream_set_getp
    - stream_forward_getp
    - BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
    - bgp_capability_as4
    - stream_getw
    - zlog_debug
    - BGP_DEBUG
    - stream_getc
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: as_t
    signature: as_t peek_for_as4_capability(struct peer *peer, uint16_t length)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_open.c:1324,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1325,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:1329,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1330,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1334,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_open.c:1336,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_open.c:1343,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:1344,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1345,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1349,1
    - Dst: BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
      Src: /src/frr/bgpd/bgp_open.c:1355,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_open.c:1356,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:1357,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1358,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_open.c:1363,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_open.c:1365,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:1366,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1367,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_open.c:1372,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_open.c:1376,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_open.c:1377,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1379,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:1384,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1385,1
    - Dst: bgp_capability_parse
      Src: /src/frr/bgpd/bgp_open.c:1394,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1398,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1414,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_open.c:1417,1
    - Dst: strict_capability_same
      Src: /src/frr/bgpd/bgp_open.c:1426,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1427,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1436,1
    - Dst: bgp_role_violation
      Src: /src/frr/bgpd/bgp_open.c:1441,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1447,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_open.c:1461,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_open.c:1466,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_open.c:1471,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 69
    argCount: 3
    argNames:
    - peer
    - length
    - mp_capability
    argTypes:
    - struct peer*
    - uint16_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1318
    functionDepth: 4
    functionLinenumber: 1318
    functionLinenumberEnd: 1477
    functionName: bgp_open_option_parse
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 1
    functionsReached:
    - bgp_notify_send_with_data
    - zlog_info
    - STREAM_READABLE
    - CHECK_FLAG
    - BGP_OPEN_EXT_OPT_PARAMS_CAPABLE
    - stream_getw
    - bgp_role_violation
    - zlog_debug
    - UNSET_FLAG
    - strict_capability_same
    - flog_err
    - bgp_debug_neighbor_events
    - bgp_notify_send
    - stream_getc
    - bgp_capability_parse
    - stream_get_getp
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: "int bgp_open_option_parse(struct peer *peer, uint16_t length,\n\t\t\t
      \ int *mp_capability)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1493,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1495,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1496,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1497,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1498,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1499,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1500,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1501,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1502,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1503,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1504,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1505,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1506,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1509,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1510,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1511,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1515,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1517,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1519,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1521,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1523,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1524,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1526,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1528,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1530,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1532,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1538,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1541,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1542,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1545,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_open.c:1546,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1547,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 6
    argNames:
    - s
    - peer
    - afi
    - safi
    - code
    - ext_opt_params
    argTypes:
    - struct stream*
    - struct peer*
    - afi_t
    - safi_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1479
    functionDepth: 1
    functionLinenumber: 1479
    functionLinenumberEnd: 1548
    functionName: bgp_open_capability_orf
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - SET_FLAG
    - bgp_map_afi_safi_int2iana
    - stream_putc_at
    - stream_putc
    linkageType: ''
    returnType: void
    signature: "void bgp_open_capability_orf(struct stream *s, struct peer *peer,\n\t\t\t\t
      \   afi_t afi, safi_t safi, uint8_t code,\n\t\t\t\t    bool ext_opt_params)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1563,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1566,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1567,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1570,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1571,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1572,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1573,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1574,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1575,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1577,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1578,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1581,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1582,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1583,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1584,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1588,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1589,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1590,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1591,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1592,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1596,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1601,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1602,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1603,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1604,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1610,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1611,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1618,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1620,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1622,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1624,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1626,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1631,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1632,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1635,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_open.c:1636,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1637,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 3
    argNames:
    - s
    - peer
    - ext_opt_params
    argTypes:
    - struct stream*
    - struct peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1550
    functionDepth: 1
    functionLinenumber: 1550
    functionLinenumberEnd: 1638
    functionName: bgp_peer_send_gr_capability
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - SET_FLAG
    - bgp_map_afi_safi_int2iana
    - BGP_DEBUG
    - stream_putc_at
    - stream_putc
    linkageType: ''
    returnType: void
    signature: "void bgp_peer_send_gr_capability(struct stream *s, struct peer *peer,\n\t\t\t\t\tbool
      ext_opt_params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_open.c:1610,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1611,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1618,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1620,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1622,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1624,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1626,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1606
    functionDepth: 1
    functionLinenumber: 1606
    functionLinenumberEnd: 1627
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 9
    functionsReached:
    - CHECK_FLAG
    - stream_putw
    - zlog_debug
    - bgp_map_afi_safi_int2iana
    - BGP_DEBUG
    - stream_putc
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1651,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1654,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1656,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1657,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1658,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1659,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1660,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1662,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1663,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1669,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1671,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1672,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1673,1
    - Dst: stream_put3
      Src: /src/frr/bgpd/bgp_open.c:1674,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1676,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1680,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1681,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1684,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_open.c:1685,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1686,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - s
    - peer
    - ext_opt_params
    argTypes:
    - struct stream*
    - struct peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1640
    functionDepth: 1
    functionLinenumber: 1640
    functionLinenumberEnd: 1687
    functionName: bgp_peer_send_llgr_capability
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - SET_FLAG
    - bgp_map_afi_safi_int2iana
    - stream_put3
    - stream_putc_at
    - stream_putc
    linkageType: ''
    returnType: void
    signature: "void bgp_peer_send_llgr_capability(struct stream *s, struct peer *peer,\n\t\t\t\t\t
      \ bool ext_opt_params)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1669,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1671,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1672,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1673,1
    - Dst: stream_put3
      Src: /src/frr/bgpd/bgp_open.c:1674,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1665
    functionDepth: 1
    functionLinenumber: 1665
    functionLinenumberEnd: 1677
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 9
    functionsReached:
    - stream_putw
    - SET_FLAG
    - bgp_map_afi_safi_int2iana
    - stream_put3
    - stream_putc
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1704,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1705,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1709,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1712,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1715,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1716,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1720,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1721,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1728,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1732,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1734,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1735,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1736,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1737,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1738,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1739,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1740,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1746,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1753,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1754,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1756,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1759,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1762,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1763,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1765,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1767,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1768,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1769,1
    - Dst: afi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1771,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1773,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1780,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1781,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1782,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1783,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1784,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1785,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1786,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1787,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1788,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1789,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1790,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1793,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1794,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1795,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1796,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1797,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1798,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1801,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1802,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1803,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1804,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1805,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1806,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_open.c:1811,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1814,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1815,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1816,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1817,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1818,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1819,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1823,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1824,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1825,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1826,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1827,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1828,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1854,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1855,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1857,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1859,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1861,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1862,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1867,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1872,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1875,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1876,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1879,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1880,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1883,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1888,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1889,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1892,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1896,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1900,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1906,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1908,1
    - Dst: bgp_open_capability_orf
      Src: /src/frr/bgpd/bgp_open.c:1910,1
    - Dst: bgp_open_capability_orf
      Src: /src/frr/bgpd/bgp_open.c:1913,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1920,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1921,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1922,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1924,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1925,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1926,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1927,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1928,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1930,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1931,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1932,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1933,1
    - Dst: cmd_hostname_get
      Src: /src/frr/bgpd/bgp_open.c:1937,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1938,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1939,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1940,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1941,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1942,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1943,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1944,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1945,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_open.c:1946,1
    - Dst: cmd_hostname_get
      Src: /src/frr/bgpd/bgp_open.c:1946,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1950,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_open.c:1951,1
    - Dst: cmd_hostname_get
      Src: /src/frr/bgpd/bgp_open.c:1951,1
    - Dst: cmd_domainname_get
      Src: /src/frr/bgpd/bgp_open.c:1952,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_open.c:1953,1
    - Dst: cmd_domainname_get
      Src: /src/frr/bgpd/bgp_open.c:1953,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1957,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_open.c:1958,1
    - Dst: cmd_domainname_get
      Src: /src/frr/bgpd/bgp_open.c:1958,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1960,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1963,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_open.c:1964,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1965,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1967,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:1968,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:1970,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:1971,1
    - Dst: cmd_hostname_get
      Src: /src/frr/bgpd/bgp_open.c:1973,1
    - Dst: cmd_domainname_get
      Src: /src/frr/bgpd/bgp_open.c:1974,1
    - Dst: bgp_peer_send_gr_capability
      Src: /src/frr/bgpd/bgp_open.c:1977,1
    - Dst: bgp_peer_send_llgr_capability
      Src: /src/frr/bgpd/bgp_open.c:1978,1
    - Dst: peergroup_flag_check
      Src: /src/frr/bgpd/bgp_open.c:1988,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1990,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1991,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1992,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1993,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1994,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1995,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:1996,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1997,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_open.c:2003,1
    - Dst: cmd_software_version_get
      Src: /src/frr/bgpd/bgp_open.c:2003,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:2007,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_open.c:2008,1
    - Dst: cmd_software_version_get
      Src: /src/frr/bgpd/bgp_open.c:2008,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:2011,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_open.c:2012,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:2013,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:2016,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:2017,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_open.c:2019,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_open.c:2020,1
    - Dst: cmd_software_version_get
      Src: /src/frr/bgpd/bgp_open.c:2021,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:2025,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_open.c:2028,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_open.c:2029,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_open.c:2031,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 181
    argCount: 3
    argNames:
    - s
    - peer
    - ext_opt_params
    argTypes:
    - struct stream*
    - struct peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 1690
    functionDepth: 2
    functionLinenumber: 1690
    functionLinenumberEnd: 2035
    functionName: bgp_open_capability
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - strlen
    - stream_put
    - cmd_domainname_get
    - peergroup_flag_check
    - stream_putc
    - stream_putc_at
    - stream_putw_at
    - zlog_debug
    - cmd_software_version_get
    - bgp_map_afi_safi_int2iana
    - UNSET_FLAG
    - bgp_peer_send_llgr_capability
    - bgp_debug_neighbor_events
    - bgp_peer_send_gr_capability
    - afi_int2iana
    - bgp_open_capability_orf
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - SET_FLAG
    - stream_putl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t bgp_open_capability(struct stream *s, struct peer *peer,\n\t\t\t
      \    bool ext_opt_params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1728,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1732,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1734,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1735,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1736,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1737,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1738,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1739,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1740,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1746,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1753,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1754,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1756,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1759,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1762,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1763,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1765,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1767,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1768,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1769,1
    - Dst: afi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1771,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1773,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1725
    functionDepth: 1
    functionLinenumber: 1725
    functionLinenumberEnd: 1777
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 9
    functionsReached:
    - afi_int2iana
    - CHECK_FLAG
    - stream_putw
    - SET_FLAG
    - bgp_map_afi_safi_int2iana
    - stream_putc
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1832
    functionDepth: 0
    functionLinenumber: 1832
    functionLinenumberEnd: 1852
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1867,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_open.c:1872,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_open.c:1875,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1876,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1879,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1880,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1883,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1888,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1889,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1892,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1896,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_open.c:1900,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1864
    functionDepth: 1
    functionLinenumber: 1864
    functionLinenumberEnd: 1902
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 9
    functionsReached:
    - CHECK_FLAG
    - stream_putw
    - SET_FLAG
    - bgp_map_afi_safi_int2iana
    - UNSET_FLAG
    - stream_putc
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1906,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_open.c:1908,1
    - Dst: bgp_open_capability_orf
      Src: /src/frr/bgpd/bgp_open.c:1910,1
    - Dst: bgp_open_capability_orf
      Src: /src/frr/bgpd/bgp_open.c:1913,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1905
    functionDepth: 2
    functionLinenumber: 1905
    functionLinenumberEnd: 1917
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_open.c
    functionUses: 9
    functionsReached:
    - CHECK_FLAG
    - bgp_open_capability_orf
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/bgpd/bgp_script.c:20,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:21,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:22,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:23,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:24,1
    - Dst: lua_pushinaddr
      Src: /src/frr/bgpd/bgp_script.c:25,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:26,1
    - Dst: lua_pushinaddr
      Src: /src/frr/bgpd/bgp_script.c:27,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:28,1
    - Dst: lua_pushstring
      Src: /src/frr/bgpd/bgp_script.c:29,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_script.c:29,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:30,1
    - Dst: lua_pushstring
      Src: /src/frr/bgpd/bgp_script.c:31,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:32,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:33,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:34,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:35,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:36,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:37,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:38,1
    - Dst: lua_pushsockunion
      Src: /src/frr/bgpd/bgp_script.c:39,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:40,1
    - Dst: lua_pushsockunion
      Src: /src/frr/bgpd/bgp_script.c:41,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:42,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:43,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:44,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:45,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:46,1
    - Dst: lua_pushstring
      Src: /src/frr/bgpd/bgp_script.c:47,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:48,1
    - Dst: lua_newtable
      Src: /src/frr/bgpd/bgp_script.c:51,1
    - Dst: lua_newtable
      Src: /src/frr/bgpd/bgp_script.c:53,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:55,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:56,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:57,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:58,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:59,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:60,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:61,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:62,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:64,1
    - Dst: lua_newtable
      Src: /src/frr/bgpd/bgp_script.c:66,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:68,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:69,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:70,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:71,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:72,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:73,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:74,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:75,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:77,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:79,1
    - Dst: lua_newtable
      Src: /src/frr/bgpd/bgp_script.c:81,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:83,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:83,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:85,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:86,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:86,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:88,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:89,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:89,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:91,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:92,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:92,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:94,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:95,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:95,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:97,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:98,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:98,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:100,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:101,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:101,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:103,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:104,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:104,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:106,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:107,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:107,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:109,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:110,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:110,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:112,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:113,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:113,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:115,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:116,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:116,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:118,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:119,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_script.c:119,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:121,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:122,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:123,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:124,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:125,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 88
    argCount: 2
    argNames:
    - L
    - peer
    argTypes:
    - lua_State*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 128
    functionName: lua_pushpeer
    functionSourceFile: /src/frr/bgpd/bgp_script.c
    functionUses: 0
    functionsReached:
    - lua_pushinaddr
    - lua_pushsockunion
    - atomic_load_explicit
    - lua_pushstring
    - lua_pushinteger
    - lookup_msg
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_pushpeer(lua_State *L, const struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/bgpd/bgp_script.c:132,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:133,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:134,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:135,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:136,1
    - Dst: lua_pushstring
      Src: /src/frr/bgpd/bgp_script.c:137,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:138,1
    - Dst: lua_pushinteger
      Src: /src/frr/bgpd/bgp_script.c:139,1
    - Dst: lua_setfield
      Src: /src/frr/bgpd/bgp_script.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - L
    - attr
    argTypes:
    - lua_State*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 141
    functionName: lua_pushattr
    functionSourceFile: /src/frr/bgpd/bgp_script.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void lua_pushattr(lua_State *L, const struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/frr/bgpd/bgp_script.c:145,1
    - Dst: lua_tointeger
      Src: /src/frr/bgpd/bgp_script.c:146,1
    - Dst: lua_pop
      Src: /src/frr/bgpd/bgp_script.c:147,1
    - Dst: lua_getfield
      Src: /src/frr/bgpd/bgp_script.c:148,1
    - Dst: lua_tointeger
      Src: /src/frr/bgpd/bgp_script.c:149,1
    - Dst: lua_pop
      Src: /src/frr/bgpd/bgp_script.c:150,1
    - Dst: lua_getfield
      Src: /src/frr/bgpd/bgp_script.c:151,1
    - Dst: aspath_str2aspath
      Src: /src/frr/bgpd/bgp_script.c:152,1
    - Dst: lua_tostring
      Src: /src/frr/bgpd/bgp_script.c:152,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_script.c:153,1
    - Dst: lua_pop
      Src: /src/frr/bgpd/bgp_script.c:154,1
    - Dst: lua_getfield
      Src: /src/frr/bgpd/bgp_script.c:155,1
    - Dst: lua_tointeger
      Src: /src/frr/bgpd/bgp_script.c:156,1
    - Dst: lua_pop
      Src: /src/frr/bgpd/bgp_script.c:157,1
    - Dst: lua_pop
      Src: /src/frr/bgpd/bgp_script.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - L
    - idx
    - attr
    argTypes:
    - lua_State*
    - int
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 159
    functionName: lua_decode_attr
    functionSourceFile: /src/frr/bgpd/bgp_script.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - lua_getfield
    - lua_tointeger
    - lua_pop
    - aspath_str2aspath
    - lua_tostring
    linkageType: ''
    returnType: void
    signature: void lua_decode_attr(lua_State *L, int idx, struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_script.c:163,1
    - Dst: lua_decode_attr
      Src: /src/frr/bgpd/bgp_script.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 167
    functionName: lua_toattr
    functionSourceFile: /src/frr/bgpd/bgp_script.c
    functionUses: 0
    functionsReached:
    - lua_decode_attr
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_toattr(lua_State *L, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrscript_register_type_codecs
      Src: /src/frr/bgpd/bgp_script.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: bgp_script_init
    functionSourceFile: /src/frr/bgpd/bgp_script.c
    functionUses: 0
    functionsReached:
    - frrscript_register_type_codecs
    linkageType: ''
    returnType: void
    signature: void bgp_script_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ASN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: BGP_AS_IS_PRIVATE
    functionSourceFile: /src/frr/bgpd/bgp_aspath.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_AS_IS_PRIVATE(ASN)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:71,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 79
    functionName: bgp_install_info_to_zebra
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    linkageType: ''
    returnType: bool
    signature: bool bgp_install_info_to_zebra(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_router_id_update_read
      Src: /src/frr/bgpd/bgp_zebra.c:88,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:90,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:91,1
    - Dst: bgp_router_id_zebra_bump
      Src: /src/frr/bgpd/bgp_zebra.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 96
    functionName: bgp_router_id_update
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - zebra_router_id_update_read
    - bgp_router_id_zebra_bump
    linkageType: ''
    returnType: int
    signature: int bgp_router_id_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_parse_nexthop_update
      Src: /src/frr/bgpd/bgp_zebra.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: bgp_read_nexthop_update
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_parse_nexthop_update
    linkageType: ''
    returnType: int
    signature: int bgp_read_nexthop_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:115,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_zebra.c:116,1
    - Dst: bgp_zebra_initiate_radv
      Src: /src/frr/bgpd/bgp_zebra.c:119,1
    - Dst: bgp_zebra_terminate_radv
      Src: /src/frr/bgpd/bgp_zebra.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - bgp
    - ifp
    - upd_ifp
    argTypes:
    - struct bgp*
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 125
    functionName: bgp_update_interface_nbrs
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - strcmp
    - bgp_zebra_initiate_radv
    - bgp_zebra_terminate_radv
    linkageType: ''
    returnType: void
    signature: "void bgp_update_interface_nbrs(struct bgp *bgp, struct interface *ifp,\n\t\t\t\t
      \     struct interface *upd_ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_parse_fec_update
      Src: /src/frr/bgpd/bgp_zebra.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: bgp_read_fec_update
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_parse_fec_update
    linkageType: ''
    returnType: int
    signature: int bgp_read_fec_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:139,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_zebra.c:140,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_zebra.c:141,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgp_zebra.c:142,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_zebra.c:143,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_zebra.c:144,1
    - Dst: bgp_nbr_connected_add
      Src: /src/frr/bgpd/bgp_zebra.c:149,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_zebra.c:160,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_zebra.c:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 2
    argNames:
    - bgp
    - ifp
    argTypes:
    - struct bgp*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 170
    functionName: bgp_start_interface_nbrs
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - peer_established
    - IN6_IS_ADDR_LINKLOCAL
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - ALL_LIST_ELEMENTS
    - peer_active
    - bgp_nbr_connected_add
    linkageType: ''
    returnType: void
    signature: void bgp_start_interface_nbrs(struct bgp *bgp, struct interface *ifp)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:179,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_zebra.c:181,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_zebra.c:183,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_zebra.c:189,1
    - Dst: nbr_connected_free
      Src: /src/frr/bgpd/bgp_zebra.c:190,1
    - Dst: bgp_ifp_destroy
      Src: /src/frr/bgpd/bgp_zebra.c:194,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:200,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:201,1
    - Dst: bgp_update_interface_nbrs
      Src: /src/frr/bgpd/bgp_zebra.c:205,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_zebra.c:206,1
    - Dst: bgp_mac_del_mac_entry
      Src: /src/frr/bgpd/bgp_zebra.c:209,1
    - Dst: bgp_ifp_up
      Src: /src/frr/bgpd/bgp_zebra.c:214,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:225,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:226,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:232,1
    - Dst: bgp_connected_add
      Src: /src/frr/bgpd/bgp_zebra.c:233,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_zebra.c:235,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:235,1
    - Dst: bgp_nbr_connected_add
      Src: /src/frr/bgpd/bgp_zebra.c:236,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_zebra.c:238,1
    - Dst: bgp_nht_ifp_up
      Src: /src/frr/bgpd/bgp_zebra.c:239,1
    - Dst: bgp_mac_del_mac_entry
      Src: /src/frr/bgpd/bgp_zebra.c:254,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_zebra.c:260,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_zebra.c:263,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:263,1
    - Dst: bgp_connected_delete
      Src: /src/frr/bgpd/bgp_zebra.c:264,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:266,1
    - Dst: bgp_nbr_connected_delete
      Src: /src/frr/bgpd/bgp_zebra.c:267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:270,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:272,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_zebra.c:279,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_zebra.c:285,1
    - Dst: bgp_nht_ifp_down
      Src: /src/frr/bgpd/bgp_zebra.c:286,1
    - Dst: bgp_interface_address_add
      Src: /src/frr/bgpd/bgp_zebra.c:291,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/bgpd/bgp_zebra.c:303,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:308,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:309,1
    - Dst: if_is_operative
      Src: /src/frr/bgpd/bgp_zebra.c:315,1
    - Dst: bgp_connected_add
      Src: /src/frr/bgpd/bgp_zebra.c:316,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_zebra.c:322,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_zebra.c:323,1
    - Dst: bgp_start_interface_nbrs
      Src: /src/frr/bgpd/bgp_zebra.c:324,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:328,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_zebra.c:343,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_zebra.c:345,1
    - Dst: IS_MAPPED_IPV6
      Src: /src/frr/bgpd/bgp_zebra.c:346,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_zebra.c:348,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:351,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:352,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_zebra.c:358,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_zebra.c:361,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_zebra.c:362,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 44
    argCount: 3
    argNames:
    - bgp
    - ifc
    - del
    argTypes:
    - struct bgp*
    - struct nbr_connected*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 370
    functionName: bgp_nbr_connected_delete
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - bgp_nbr_connected_delete
    - IS_MAPPED_IPV6
    - BGP_DEBUG
    - bgp_ifp_destroy
    - BGP_EVENT_ADD
    - bgp_connected_delete
    - bgp_nht_ifp_up
    - hook_call
    - bgp_interface_address_add
    - zlog_debug
    - bgp_debug_zebra
    - if
    - for
    - bgp_nbr_connected_add
    - bgp_update_interface_nbrs
    - zebra_interface_address_read
    - bgp_ifp_up
    - bgp_connected_add
    - bgp_announce_route
    - listnode_delete
    - bgp_start_interface_nbrs
    - memcpy
    - IN6_IS_ADDR_LINKLOCAL
    - bgp_mac_del_mac_entry
    - strcmp
    - CHECK_FLAG
    - list_isempty
    - bgp_nht_ifp_down
    - nbr_connected_free
    - ALL_LIST_ELEMENTS
    - if_is_operative
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: "void bgp_nbr_connected_delete(struct bgp *bgp, struct nbr_connected
      *ifc,\n\t\t\t\t     int del)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:380,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/bgpd/bgp_zebra.c:382,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:387,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:388,1
    - Dst: if_is_operative
      Src: /src/frr/bgpd/bgp_zebra.c:391,1
    - Dst: bgp_connected_delete
      Src: /src/frr/bgpd/bgp_zebra.c:392,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:405,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_zebra.c:412,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_zebra.c:413,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:416,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_zebra.c:417,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_zebra.c:418,1
    - Dst: connected_free
      Src: /src/frr/bgpd/bgp_zebra.c:424,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 427
    functionName: bgp_interface_address_delete
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_connected_delete
    - zebra_interface_address_read
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - bgp_lookup_by_vrf_id
    - memcmp
    - connected_free
    - zlog_debug
    - bgp_announce_route
    - bgp_debug_zebra
    - ALL_LIST_ELEMENTS
    - if_is_operative
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: int
    signature: int bgp_interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_nbr_address_read
      Src: /src/frr/bgpd/bgp_zebra.c:434,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:439,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:440,1
    - Dst: if_is_operative
      Src: /src/frr/bgpd/bgp_zebra.c:443,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:444,1
    - Dst: bgp_nbr_connected_add
      Src: /src/frr/bgpd/bgp_zebra.c:446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 450
    functionName: bgp_interface_nbr_address_add
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_interface_nbr_address_read
    - bgp_lookup_by_vrf_id
    - zlog_debug
    - bgp_debug_zebra
    - if_is_operative
    - bgp_nbr_connected_add
    linkageType: ''
    returnType: int
    signature: int bgp_interface_nbr_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_nbr_address_read
      Src: /src/frr/bgpd/bgp_zebra.c:457,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:462,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:463,1
    - Dst: if_is_operative
      Src: /src/frr/bgpd/bgp_zebra.c:466,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:467,1
    - Dst: bgp_nbr_connected_delete
      Src: /src/frr/bgpd/bgp_zebra.c:469,1
    - Dst: nbr_connected_free
      Src: /src/frr/bgpd/bgp_zebra.c:472,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 452
    functionDepth: 3
    functionLinenumber: 452
    functionLinenumberEnd: 475
    functionName: bgp_interface_nbr_address_delete
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_interface_nbr_address_read
    - bgp_nbr_connected_delete
    - bgp_lookup_by_vrf_id
    - zlog_debug
    - bgp_debug_zebra
    - nbr_connected_free
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int bgp_interface_nbr_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_vrf_update_read
      Src: /src/frr/bgpd/bgp_zebra.c:488,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:493,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:494,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:497,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:500,1
    - Dst: bgp_connected_delete
      Src: /src/frr/bgpd/bgp_zebra.c:501,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_zebra.c:503,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:503,1
    - Dst: bgp_nbr_connected_delete
      Src: /src/frr/bgpd/bgp_zebra.c:504,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_zebra.c:507,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:507,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:508,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 517
    functionName: bgp_interface_vrf_update
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - bgp_connected_delete
    - zebra_interface_vrf_update_read
    - CHECK_FLAG
    - bgp_nbr_connected_delete
    - bgp_lookup_by_vrf_id
    - zlog_debug
    - if
    - BGP_DEBUG
    - for
    linkageType: ''
    returnType: int
    signature: int bgp_interface_vrf_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_zebra.c:1068,1
    - Dst: tm_table_manager_connect
      Src: /src/frr/bgpd/bgp_zebra.c:1073,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_zebra.c:1076,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1080,1
    - Dst: bgp_zebra_get_table_range
      Src: /src/frr/bgpd/bgp_zebra.c:1083,1
    - Dst: bgp_zebra_announce_table
      Src: /src/frr/bgpd/bgp_zebra.c:1088,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_zebra.c:1092,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1094
    functionName: bgp_zebra_tm_connect
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - tm_table_manager_connect
    - bgp_zebra_get_table_range
    - zlog_debug
    - EVENT_ARG
    - event_add_timer
    - bgp_zebra_announce_table
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_tm_connect(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1096
    functionDepth: 0
    functionLinenumber: 1096
    functionLinenumberEnd: 1099
    functionName: bgp_zebra_tm_chunk_obtained
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_zebra_tm_chunk_obtained(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1101
    functionDepth: 0
    functionLinenumber: 1101
    functionLinenumberEnd: 1108
    functionName: bgp_zebra_tm_get_id
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_zebra_tm_get_id(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_zebra.c:1123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1110
    functionDepth: 1
    functionLinenumber: 1110
    functionLinenumberEnd: 1125
    functionName: bgp_zebra_init_tm_connect
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_init_tm_connect(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tm_get_table_chunk
      Src: /src/frr/bgpd/bgp_zebra.c:1134,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_zebra.c:1136,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_zebra.c:1140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - chunk_size
    - start
    - end
    argTypes:
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1143
    functionName: bgp_zebra_get_table_range
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - flog_err
    - zlog_info
    - tm_get_table_chunk
    linkageType: ''
    returnType: int
    signature: "int bgp_zebra_get_table_range(uint32_t chunk_size,\n\t\t\t      uint32_t
      *start, uint32_t *end)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1170,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 6
    argNames:
    - nh_othervrf
    - nh_bgp
    - nexthop
    - attr
    - is_evpn
    - api_nh
    argTypes:
    - int
    - struct bgp*
    - struct in_addr*
    - struct attr*
    - bool
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1181
    functionName: update_ipv4nh_for_route_install
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: bool
    signature: "bool update_ipv4nh_for_route_install(int nh_othervrf, struct bgp *nh_bgp,\n\t\t\t\t\t
      \   struct in_addr *nexthop,\n\t\t\t\t\t    struct attr *attr, bool is_evpn,\n\t\t\t\t\t
      \   struct zapi_nexthop *api_nh)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1209,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1210,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_zebra.c:1214,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_zebra.c:1217,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_zebra.c:1227,1
    - Dst: ifname2ifindex
      Src: /src/frr/bgpd/bgp_zebra.c:1238,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 55
    argCount: 8
    argNames:
    - nh_othervrf
    - nh_bgp
    - nexthop
    - ifindex
    - pi
    - best_pi
    - is_evpn
    - api_nh
    argTypes:
    - int
    - struct bgp*
    - struct in6_addr*
    - ifindex_t
    - struct bgp_path_info*
    - struct bgp_path_info*
    - bool
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1183
    functionDepth: 1
    functionLinenumber: 1183
    functionLinenumberEnd: 1260
    functionName: update_ipv6nh_for_route_install
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - SET_FLAG
    - IN6_IS_ADDR_LINKLOCAL
    - ifname2ifindex
    linkageType: ''
    returnType: bool
    signature: "bool update_ipv6nh_for_route_install(int nh_othervrf, struct bgp *nh_bgp,\n\t\t\t\t\t
      \   struct in6_addr *nexthop,\n\t\t\t\t\t    ifindex_t ifindex,\n\t\t\t\t\t
      \   struct bgp_path_info *pi,\n\t\t\t\t\t    struct bgp_path_info *best_pi,\n\t\t\t\t\t
      \   bool is_evpn,\n\t\t\t\t\t    struct zapi_nexthop *api_nh)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - bgp
    - attr
    - tot_bw
    - nh_weight
    argTypes:
    - struct bgp*
    - struct attr*
    - uint64_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1262
    functionDepth: 0
    functionLinenumber: 1262
    functionLinenumberEnd: 1285
    functionName: bgp_zebra_use_nhop_weighted
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool bgp_zebra_use_nhop_weighted(struct bgp *bgp, struct attr *attr,\n\t\t\t\t\tuint64_t
      tot_bw, uint32_t *nh_weight)"
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: BGP_SUPPRESS_FIB_ENABLED
      Src: /src/frr/bgpd/bgp_zebra.c:1324,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1325,1
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1330,1
    - Dst: bgp_pbr_update_entry
      Src: /src/frr/bgpd/bgp_zebra.c:1337,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_zebra.c:1337,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1353,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1370,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1376,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1381,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1385,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_zebra.c:1385,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1386,1
    - Dst: bgp_path_info_mpath_chkwtd
      Src: /src/frr/bgpd/bgp_zebra.c:1392,1
    - Dst: bgp_path_info_mpath_cumbw
      Src: /src/frr/bgpd/bgp_zebra.c:1394,1
    - Dst: bgp_evpn_path_es_use_nhg
      Src: /src/frr/bgpd/bgp_zebra.c:1397,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1401,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_zebra.c:1406,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_zebra.c:1421,1
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_zebra.c:1425,1
    - Dst: bgp_zebra_use_nhop_weighted
      Src: /src/frr/bgpd/bgp_zebra.c:1435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1441,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_zebra.c:1442,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1445,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1447,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_zebra.c:1449,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1452,1
    - Dst: bgp_table_map_apply
      Src: /src/frr/bgpd/bgp_zebra.c:1463,1
    - Dst: BGP_ORIGINAL_UPDATE
      Src: /src/frr/bgpd/bgp_zebra.c:1475,1
    - Dst: is_route_parent_evpn
      Src: /src/frr/bgpd/bgp_zebra.c:1477,1
    - Dst: update_ipv4nh_for_route_install
      Src: /src/frr/bgpd/bgp_zebra.c:1480,1
    - Dst: bgp_path_info_to_ipv6_nexthop
      Src: /src/frr/bgpd/bgp_zebra.c:1488,1
    - Dst: update_ipv4nh_for_route_install
      Src: /src/frr/bgpd/bgp_zebra.c:1492,1
    - Dst: update_ipv6nh_for_route_install
      Src: /src/frr/bgpd/bgp_zebra.c:1498,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1513,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_zebra.c:1524,1
    - Dst: bgp_evpn_path_info_labels_get_l3vni
      Src: /src/frr/bgpd/bgp_zebra.c:1528,1
    - Dst: mpls_lse_decode
      Src: /src/frr/bgpd/bgp_zebra.c:1532,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1536,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1545,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_zebra.c:1551,1
    - Dst: sid_zero
      Src: /src/frr/bgpd/bgp_zebra.c:1552,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1555,1
    - Dst: mpls_lse_decode
      Src: /src/frr/bgpd/bgp_zebra.c:1559,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1563,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1564,1
    - Dst: transpose_sid
      Src: /src/frr/bgpd/bgp_zebra.c:1569,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1582,1
    - Dst: bgp_path_selection_reason2str
      Src: /src/frr/bgpd/bgp_zebra.c:1585,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1587,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_zebra.c:1590,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1591,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_zebra.c:1592,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_zebra.c:1596,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1597,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_zebra.c:1598,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1601,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1604,1
    - Dst: MIN
      Src: /src/frr/bgpd/bgp_zebra.c:1605,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1607,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1611,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/bgpd/bgp_zebra.c:1619,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1623,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1627,1
    - Dst: bgp_distance_apply
      Src: /src/frr/bgpd/bgp_zebra.c:1631,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1633,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1637,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1646,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_zebra.c:1661,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_zebra.c:1667,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_zebra.c:1671,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_zebra.c:1675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1682,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1684,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_zebra.c:1685,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1687,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1688,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_zebra.c:1690,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_zebra.c:1692,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1695,1
    - Dst: is_zero_mac
      Src: /src/frr/bgpd/bgp_zebra.c:1696,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_zebra.c:1697,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_zebra.c:1698,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1700,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1708,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1711,1
    - Dst: zclient_route_send
      Src: /src/frr/bgpd/bgp_zebra.c:1714,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 205
    argCount: 6
    argNames:
    - dest
    - p
    - info
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp_dest*
    - struct prefix*
    - struct bgp_path_info*
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1674
        line_start: 1674
        source_file: /src/frr/bgpd/bgp_zebra.c
    constantsTouched: []
    func_position:
      end: 1716
      start: 1287
    functionDepth: 2
    functionLinenumber: 1287
    functionLinenumberEnd: 1716
    functionName: bgp_zebra_announce
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_path_info_labels_get_l3vni
    - bgp_evpn_path_es_use_nhg
    - bgp_pbr_update_entry
    - bgp_path_info_mpath_chkwtd
    - BGP_ORIGINAL_UPDATE
    - update_ipv6nh_for_route_install
    - bgp_attr_get_lcommunity
    - transpose_sid
    - bgp_is_valid_label
    - MIN
    - update_ipv4nh_for_route_install
    - snprintf
    - mpls_lse_decode
    - bgp_dest_get_prefix
    - bgp_path_info_to_ipv6_nexthop
    - bgp_path_info_mpath_next
    - inet_ntop
    - zlog_debug
    - is_route_parent_evpn
    - bgp_debug_zebra
    - zclient_route_send
    - assert
    - BGP_SUPPRESS_FIB_ENABLED
    - strlcpy
    - is_zero_mac
    - bgp_attr_get_community
    - memcpy
    - zapi_route_set_blackhole
    - prefix_mac2str
    - CHECK_FLAG
    - BGP_ATTR_MP_NEXTHOP_LEN_IP6
    - ATTR_FLAG_BIT
    - bgp_install_info_to_zebra
    - bgp_path_info_mpath_cumbw
    - bgp_distance_apply
    - SET_FLAG
    - sid_zero
    - bgp_zebra_use_nhop_weighted
    - bgp_table_map_apply
    - bgp_path_selection_reason2str
    linkageType: ''
    returnType: void
    signature: "void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix
      *p,\n\t\t\tstruct bgp_path_info *info, struct bgp *bgp, afi_t afi,\n\t\t\tsafi_t
      safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1728,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_zebra.c:1735,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_zebra.c:1735,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_zebra.c:1736,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1737,1
    - Dst: bgp_zebra_announce
      Src: /src/frr/bgpd/bgp_zebra.c:1743,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_zebra.c:1744,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1719
    functionDepth: 3
    functionLinenumber: 1719
    functionLinenumberEnd: 1746
    functionName: bgp_zebra_announce_table
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 11
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_install_info_to_zebra
    - bgp_dest_get_bgp_path_info
    - bgp_zebra_announce
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_announce_table(struct bgp *bgp, afi_t afi, safi_t safi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1756,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_zebra.c:1763,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_zebra.c:1763,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_zebra.c:1764,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1765,1
    - Dst: bgp_zebra_announce
      Src: /src/frr/bgpd/bgp_zebra.c:1767,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_zebra.c:1768,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1749
    functionDepth: 3
    functionLinenumber: 1749
    functionLinenumberEnd: 1770
    functionName: bgp_zebra_announce_table_all_subtypes
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_install_info_to_zebra
    - bgp_dest_get_bgp_path_info
    - bgp_zebra_announce
    linkageType: ''
    returnType: void
    signature: "void bgp_zebra_announce_table_all_subtypes(struct bgp *bgp, afi_t
      afi,\n\t\t\t\t\t   safi_t safi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1782,1
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1787,1
    - Dst: bgp_pbr_update_entry
      Src: /src/frr/bgpd/bgp_zebra.c:1792,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:1796,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1803,1
    - Dst: bgp_debug_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1807,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1808,1
    - Dst: zclient_route_send
      Src: /src/frr/bgpd/bgp_zebra.c:1811,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - p
    - info
    - bgp
    - safi
    argTypes:
    - struct prefix*
    - struct bgp_path_info*
    - struct bgp*
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1772
    functionDepth: 2
    functionLinenumber: 1772
    functionLinenumberEnd: 1812
    functionName: bgp_zebra_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 4
    functionsReached:
    - memset
    - bgp_install_info_to_zebra
    - SET_FLAG
    - bgp_pbr_update_entry
    - UNSET_FLAG
    - zlog_debug
    - bgp_debug_zebra
    - zclient_route_send
    linkageType: ''
    returnType: void
    signature: "void bgp_zebra_withdraw(const struct prefix *p, struct bgp_path_info
      *info,\n\t\t\tstruct bgp *bgp, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1821,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_zebra.c:1828,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_zebra.c:1828,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_zebra.c:1829,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:1830,1
    - Dst: bgp_zebra_withdraw
      Src: /src/frr/bgpd/bgp_zebra.c:1832,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_zebra.c:1832,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1815
    functionDepth: 3
    functionLinenumber: 1815
    functionLinenumberEnd: 1836
    functionName: bgp_zebra_withdraw_table_all_subtypes
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_install_info_to_zebra
    - bgp_zebra_withdraw
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_withdraw_table_all_subtypes(struct bgp *bgp, afi_t afi,
      safi_t safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_zebra.c:1849,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:1862,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_zebra.c:1863,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_zebra.c:1867,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_zebra.c:1870,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_zebra.c:1873,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:1883,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_zebra.c:1885,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_zebra.c:1886,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_zebra.c:1887,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_zebra.c:1889,1
    - Dst: bgp_redistribute_set
      Src: /src/frr/bgpd/bgp_zebra.c:1894,1
    - Dst: bgp_redistribute_unreg
      Src: /src/frr/bgpd/bgp_zebra.c:1902,1
    - Dst: redist_check_instance
      Src: /src/frr/bgpd/bgp_zebra.c:1906,1
    - Dst: redist_add_instance
      Src: /src/frr/bgpd/bgp_zebra.c:1910,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/bgpd/bgp_zebra.c:1912,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_zebra.c:1916,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/bgpd/bgp_zebra.c:1916,1
    - Dst: vnc_export_bgp_enable
      Src: /src/frr/bgpd/bgp_zebra.c:1917,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/bgpd/bgp_zebra.c:1922,1
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1931,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:1934,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1935,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/bgp_zebra.c:1936,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/bgpd/bgp_zebra.c:1940,1
    - Dst: bgp_redistribute_resend
      Src: /src/frr/bgpd/bgp_zebra.c:1946,1
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:1952,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:1955,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:1956,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/bgp_zebra.c:1957,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/bgpd/bgp_zebra.c:1961,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/bgpd/bgp_zebra.c:1963,1
    - Dst: bgp_redistribute_rmap_set
      Src: /src/frr/bgpd/bgp_zebra.c:1970,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_zebra.c:1973,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_zebra.c:1976,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_zebra.c:1980,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_zebra.c:1981,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgp_zebra.c:1983,1
    - Dst: bgp_redistribute_metric_set
      Src: /src/frr/bgpd/bgp_zebra.c:1989,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_zebra.c:2001,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_zebra.c:2002,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_zebra.c:2003,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_zebra.c:2013,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_zebra.c:2014,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_zebra.c:2016,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_zebra.c:2018,1
    - Dst: bgp_redistribute_unreg
      Src: /src/frr/bgpd/bgp_zebra.c:2027,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2032,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/bgpd/bgp_zebra.c:2034,1
    - Dst: redist_check_instance
      Src: /src/frr/bgpd/bgp_zebra.c:2038,1
    - Dst: redist_del_instance
      Src: /src/frr/bgpd/bgp_zebra.c:2041,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/bgpd/bgp_zebra.c:2043,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/bgpd/bgp_zebra.c:2045,1
    - Dst: bgp_install_info_to_zebra
      Src: /src/frr/bgpd/bgp_zebra.c:2048,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2050,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2051,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/bgp_zebra.c:2052,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/bgpd/bgp_zebra.c:2054,1
    - Dst: bgp_redistribute_withdraw
      Src: /src/frr/bgpd/bgp_zebra.c:2059,1
    - Dst: bgp_redistribute_unset
      Src: /src/frr/bgpd/bgp_zebra.c:2065,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_zebra.c:2076,1
    - Dst: EVPN_ENABLED
      Src: /src/frr/bgpd/bgp_zebra.c:2076,1
    - Dst: vnc_export_bgp_disable
      Src: /src/frr/bgpd/bgp_zebra.c:2077,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2081,1
    - Dst: bgp_redistribute_unreg
      Src: /src/frr/bgpd/bgp_zebra.c:2085,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_zebra.c:2088,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgp_zebra.c:2089,1
    - Dst: bgp_redist_del
      Src: /src/frr/bgpd/bgp_zebra.c:2096,1
    - Dst: bgp_redistribute_redo
      Src: /src/frr/bgpd/bgp_zebra.c:2101,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_zebra.c:2116,1
    - Dst: bgp_redistribute_resend
      Src: /src/frr/bgpd/bgp_zebra.c:2117,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 4
    argNames:
    - bgp
    - afi
    - type
    - instance
    argTypes:
    - struct bgp*
    - afi_t
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 1838
    functionDepth: 9
    functionLinenumber: 1838
    functionLinenumberEnd: 2122
    functionName: bgp_redist_lookup
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 4
    functionsReached:
    - list_delete
    - bgp_attr_unintern
    - bgp_path_info_set_flag
    - listnode_add
    - route_map_counter_increment
    - bgp_redistribute_resend
    - BGP_DEBUG
    - bgp_attr_intern
    - bgp_redistribute_unreg
    - vrf_bitmap_check
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - vrf_bitmap_set
    - zlog_debug
    - if
    - redist_add_instance
    - bgp_redistribute_rmap_set
    - vnc_export_bgp_enable
    - redist_del_instance
    - bgp_redistribute_metric_set
    - EVPN_ENABLED
    - XFREE
    - listnode_delete
    - bgp_process
    - zebra_route_string
    - XSTRDUP
    - bgp_route_next
    - route_map_counter_decrement
    - zebra_redistribute_send
    - bgp_table_top
    - redist_check_instance
    - strcmp
    - vnc_export_bgp_disable
    - vrf_bitmap_unset
    - CMD_SUCCESS
    - bgp_redist_lookup
    - bgp_redistribute_set
    - bgp_install_info_to_zebra
    - bgp_redistribute_withdraw
    - bgp_redistribute_unset
    - list_new
    - bgp_redist_del
    - bgp_dest_get_bgp_path_info
    - bgp_redistribute_redo
    linkageType: ''
    returnType: struct bgp_redist
    signature: "struct bgp_redist *bgp_redist_lookup(struct bgp *bgp, afi_t afi, uint8_t
      type,\n\t\t\t\t     unsigned short instance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_reset
      Src: /src/frr/bgpd/bgp_zebra.c:2126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2127
      start: 2124
    functionDepth: 1
    functionLinenumber: 2124
    functionLinenumberEnd: 2127
    functionName: bgp_zclient_reset
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 2
    functionsReached:
    - zclient_reset
    linkageType: ''
    returnType: void
    signature: void bgp_zclient_reset(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2139,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2140,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/bgpd/bgp_zebra.c:2143,1
    - Dst: bgp_zebra_advertise_all_vni
      Src: /src/frr/bgpd/bgp_zebra.c:2147,1
    - Dst: bgp_nht_register_nexthops
      Src: /src/frr/bgpd/bgp_zebra.c:2149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2133
    functionDepth: 1
    functionLinenumber: 2133
    functionLinenumberEnd: 2150
    functionName: bgp_zebra_instance_register
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_zebra_advertise_all_vni
    - zclient_send_reg_requests
    - zlog_debug
    - BGP_DEBUG
    - bgp_nht_register_nexthops
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_instance_register(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2161,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2162,1
    - Dst: bgp_zebra_advertise_all_vni
      Src: /src/frr/bgpd/bgp_zebra.c:2166,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/bgpd/bgp_zebra.c:2169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2155
    functionDepth: 1
    functionLinenumber: 2155
    functionLinenumberEnd: 2170
    functionName: bgp_zebra_instance_deregister
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_dereg_requests
    - BGP_DEBUG
    - zlog_debug
    - bgp_zebra_advertise_all_vni
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_instance_deregister(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2180,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2181,1
    - Dst: zclient_send_interface_radv_req
      Src: /src/frr/bgpd/bgp_zebra.c:2189,1
    - Dst: bgp_nht_reg_enhe_cap_intfs
      Src: /src/frr/bgpd/bgp_zebra.c:2191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bgp
    - peer
    argTypes:
    - struct bgp*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2172
    functionDepth: 1
    functionLinenumber: 2172
    functionLinenumberEnd: 2192
    functionName: bgp_zebra_initiate_radv
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 2
    functionsReached:
    - zclient_send_interface_radv_req
    - BGP_DEBUG
    - zlog_debug
    - bgp_nht_reg_enhe_cap_intfs
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_initiate_radv(struct bgp *bgp, struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2200,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2201,1
    - Dst: zclient_send_interface_radv_req
      Src: /src/frr/bgpd/bgp_zebra.c:2209,1
    - Dst: bgp_nht_dereg_enhe_cap_intfs
      Src: /src/frr/bgpd/bgp_zebra.c:2211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bgp
    - peer
    argTypes:
    - struct bgp*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2212
      start: 2194
    functionDepth: 1
    functionLinenumber: 2194
    functionLinenumberEnd: 2212
    functionName: bgp_zebra_terminate_radv
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_send_interface_radv_req
    - BGP_DEBUG
    - zlog_debug
    - bgp_nht_dereg_enhe_cap_intfs
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_terminate_radv(struct bgp *bgp, struct peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:2223,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2224,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2225,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:2232,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:2234,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2235,1
    - Dst: stream_put3
      Src: /src/frr/bgpd/bgp_zebra.c:2236,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:2237,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:2237,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:2239,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - bgp
    - advertise
    - vni
    argTypes:
    - struct bgp*
    - int
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2214
    functionDepth: 1
    functionLinenumber: 2214
    functionLinenumberEnd: 2240
    functionName: bgp_zebra_advertise_subnet
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_put3
    - BGP_DEBUG
    - stream_putc
    - stream_reset
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_advertise_subnet(struct bgp *bgp, int advertise, vni_t
      vni)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:2251,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:2255,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:2257,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2258,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2259,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:2260,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:2260,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:2262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - bgp
    - advertise
    - vni
    argTypes:
    - struct bgp*
    - int
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2242
    functionDepth: 1
    functionLinenumber: 2242
    functionLinenumberEnd: 2263
    functionName: bgp_zebra_advertise_svi_macip
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_advertise_svi_macip(struct bgp *bgp, int advertise, vni_t
      vni)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:2274,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2275,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2276,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:2283,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:2285,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2286,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2287,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:2288,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:2288,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:2290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - bgp
    - advertise
    - vni
    argTypes:
    - struct bgp*
    - int
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2291
      start: 2265
    functionDepth: 1
    functionLinenumber: 2265
    functionLinenumberEnd: 2291
    functionName: bgp_zebra_advertise_gw_macip
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - BGP_DEBUG
    - stream_putc
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_advertise_gw_macip(struct bgp *bgp, int advertise, vni_t
      vni)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:2303,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2304,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2305,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:2312,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:2314,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2315,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:2316,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:2316,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:2318,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - bgp
    - flood_ctrl
    argTypes:
    - struct bgp*
    - enum vxlan_flood_control
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2319
      start: 2293
    functionDepth: 1
    functionLinenumber: 2293
    functionLinenumberEnd: 2319
    functionName: bgp_zebra_vxlan_flood_control
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - BGP_DEBUG
    - stream_putc
    - stream_reset
    linkageType: ''
    returnType: int
    signature: "int bgp_zebra_vxlan_flood_control(struct bgp *bgp,\n\t\t\t\t  enum
      vxlan_flood_control flood_ctrl)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:2330,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:2334,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:2336,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2337,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2341,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:2342,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:2342,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:2344,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - bgp
    - advertise
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2321
    functionDepth: 1
    functionLinenumber: 2321
    functionLinenumberEnd: 2345
    functionName: bgp_zebra_advertise_all_vni
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 2
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_advertise_all_vni(struct bgp *bgp, int advertise)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:2356,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2359,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2360,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:2370,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:2371,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2373,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2374,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2375,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2376,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2377,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:2378,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:2378,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:2380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2347
    functionDepth: 1
    functionLinenumber: 2347
    functionLinenumberEnd: 2381
    functionName: bgp_zebra_dup_addr_detection
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_dup_addr_detection(struct bgp *bgp)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zapi_rule_notify_decode
      Src: /src/frr/bgpd/bgp_zebra.c:2391,1
    - Dst: bgp_pbr_action_rule_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2395,1
    - Dst: bgp_pbr_rule_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2398,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2400,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2401,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2409,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2410,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_zebra.c:2432,1
    - Dst: listnode_add_force
      Src: /src/frr/bgpd/bgp_zebra.c:2433,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2436,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2437,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2441,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2442,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2447
      start: 2383
    functionDepth: 2
    functionLinenumber: 2383
    functionLinenumberEnd: 2447
    functionName: rule_notify_owner
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - listnode_add_force
    - bgp_pbr_rule_lookup
    - bgp_path_info_extra_get
    - zapi_rule_notify_decode
    - bgp_pbr_action_rule_lookup
    - zlog_debug
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int rule_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zapi_ipset_notify_decode
      Src: /src/frr/bgpd/bgp_zebra.c:2455,1
    - Dst: bgp_pbr_match_ipset_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2460,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2462,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2463,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2470,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2471,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2478,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2479,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2483,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2484,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2489
      start: 2449
    functionDepth: 1
    functionLinenumber: 2449
    functionLinenumberEnd: 2489
    functionName: ipset_notify_owner
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - bgp_pbr_match_ipset_lookup
    - zlog_debug
    - zapi_ipset_notify_decode
    linkageType: ''
    returnType: int
    signature: int ipset_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zapi_ipset_entry_notify_decode
      Src: /src/frr/bgpd/bgp_zebra.c:2498,1
    - Dst: bgp_pbr_match_ipset_entry_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2504,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2508,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2509,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2517,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2518,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2530,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2531,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_zebra.c:2535,1
    - Dst: listnode_add_force
      Src: /src/frr/bgpd/bgp_zebra.c:2536,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2541,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2542,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2491
    functionDepth: 2
    functionLinenumber: 2491
    functionLinenumberEnd: 2547
    functionName: ipset_entry_notify_owner
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - listnode_add_force
    - bgp_path_info_extra_get
    - zlog_debug
    - bgp_pbr_match_ipset_entry_lookup
    - BGP_DEBUG
    - zapi_ipset_entry_notify_decode
    linkageType: ''
    returnType: int
    signature: int ipset_entry_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zapi_iptable_notify_decode
      Src: /src/frr/bgpd/bgp_zebra.c:2555,1
    - Dst: bgp_pbr_match_iptable_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2560,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2562,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2563,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2569,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2570,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2578,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2579,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2584,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2585,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2549
    functionDepth: 1
    functionLinenumber: 2549
    functionLinenumberEnd: 2589
    functionName: iptable_notify_owner
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_pbr_match_iptable_lookup
    - BGP_DEBUG
    - zlog_debug
    - zapi_iptable_notify_decode
    linkageType: ''
    returnType: int
    signature: int iptable_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_notify_decode
      Src: /src/frr/bgpd/bgp_zebra.c:2604,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_zebra.c:2606,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:2611,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_zebra.c:2613,1
    - Dst: bgp_safi_node_lookup
      Src: /src/frr/bgpd/bgp_zebra.c:2620,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2629,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2630,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2631,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2632,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_zebra.c:2636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2637,1
    - Dst: group_announce_route
      Src: /src/frr/bgpd/bgp_zebra.c:2642,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_zebra.c:2644,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_zebra.c:2647,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2656,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2657,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2658,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2662,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2663,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2665,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2666,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_zebra.c:2667,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2668,1
    - Dst: group_announce_route
      Src: /src/frr/bgpd/bgp_zebra.c:2672,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2676,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2677,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2680,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2681,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_zebra.c:2682,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_zebra.c:2683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:2684,1
    - Dst: group_announce_route
      Src: /src/frr/bgpd/bgp_zebra.c:2688,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_zebra.c:2692,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_zebra.c:2697,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 70
    argCount: 4
    argNames:
    - command
    - zclient
    - length
    - vrf_id
    argTypes:
    - int
    - struct zclient*
    - zebra_size_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2699
      start: 2592
    functionDepth: 8
    functionLinenumber: 2592
    functionLinenumberEnd: 2699
    functionName: bgp_zebra_route_notify_owner
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_aggregate_increment
    - CHECK_FLAG
    - bgp_dest_get_bgp_path_info
    - bgp_lookup_by_vrf_id
    - zlog_err
    - group_announce_route
    - flog_err
    - UNSET_FLAG
    - bgp_safi_node_lookup
    - zapi_route_notify_decode
    - SET_FLAG
    - zlog_debug
    - zlog_warn
    - BGP_DEBUG
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: int
    signature: "int bgp_zebra_route_notify_owner(int command, struct zclient *zclient,\n\t\t\t\t\tzebra_size_t
      length, vrf_id_t vrf_id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2715,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2717,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2719,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2727,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2729,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2730,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_zebra.c:2732,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:2734,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2737,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2738,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2739,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_zebra.c:2739,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2741,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_zebra.c:2744,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:2746,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2749,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2750,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2751,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_zebra.c:2751,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2753,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2754,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2757,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2759,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2761,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2762,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2763,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2764,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2766,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:2768,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2769,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 3
    argNames:
    - s
    - pbra
    - pbr
    argTypes:
    - struct stream*
    - struct bgp_pbr_action*
    - struct bgp_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2770
      start: 2705
    functionDepth: 1
    functionLinenumber: 2705
    functionLinenumberEnd: 2770
    functionName: bgp_encode_pbr_rule_action
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - stream_put
    - memset
    - stream_putw
    - prefix_blen
    - stream_putc
    - memcpy
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_encode_pbr_rule_action(struct stream *s,\n\t\t\t\t       struct
      bgp_pbr_action *pbra,\n\t\t\t\t       struct bgp_pbr_rule *pbr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2775,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2776,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2777,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - s
    - pbim
    argTypes:
    - struct stream*
    - struct bgp_pbr_match*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2780
      start: 2772
    functionDepth: 1
    functionLinenumber: 2772
    functionLinenumberEnd: 2780
    functionName: bgp_encode_pbr_ipset_match
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_encode_pbr_ipset_match(struct stream *s,\n\t\t\t\t  struct
      bgp_pbr_match *pbim)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2785,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2787,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2790,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2791,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2792,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_zebra.c:2792,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2794,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2795,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2796,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_zebra.c:2796,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2798,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2799,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2800,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2801,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - s
    - pbime
    argTypes:
    - struct stream*
    - struct bgp_pbr_match_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2803
      start: 2782
    functionDepth: 1
    functionLinenumber: 2782
    functionLinenumberEnd: 2803
    functionName: bgp_encode_pbr_ipset_entry_match
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_putw
    - prefix_blen
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_encode_pbr_ipset_entry_match(struct stream *s,\n\t\t\t\t
      \ struct bgp_pbr_match_entry *pbime)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2809,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2811,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2813,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2820,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2822,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:2823,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_zebra.c:2824,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2826,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2827,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2828,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2829,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2830,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2831,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2832,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_zebra.c:2833,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_zebra.c:2834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - s
    - bpa
    - pbm
    argTypes:
    - struct stream*
    - struct bgp_pbr_action*
    - struct bgp_pbr_match*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2805
    functionDepth: 1
    functionLinenumber: 2805
    functionLinenumberEnd: 2835
    functionName: bgp_encode_pbr_iptable_match
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - stream_put
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_encode_pbr_iptable_match(struct stream *s,\n\t\t\t\t\t struct
      bgp_pbr_action *bpa,\n\t\t\t\t\t struct bgp_pbr_match *pbm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_client_sendmsg
      Src: /src/frr/bgpd/bgp_zebra.c:2845,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_zebra.c:2851,1
    - Dst: bgp_zebra_instance_register
      Src: /src/frr/bgpd/bgp_zebra.c:2855,1
    - Dst: bgp_lp_event_zebra_up
      Src: /src/frr/bgpd/bgp_zebra.c:2858,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_zebra.c:2863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2864
      start: 2838
    functionDepth: 2
    functionLinenumber: 2838
    functionLinenumberEnd: 2864
    functionName: bgp_zebra_connected
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - bfd_client_sendmsg
    - bgp_lp_event_zebra_up
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    - bgp_zebra_instance_register
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_connected(struct zclient *zclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:2877,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:2882,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_zebra.c:2883,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_zebra.c:2884,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_zebra.c:2885,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_zebra.c:2886,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2888,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2889,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_zebra.c:2891,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:2894,1
    - Dst: bgp_evpn_local_es_add
      Src: /src/frr/bgpd/bgp_zebra.c:2897,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2901
      start: 2866
    functionDepth: 1
    functionLinenumber: 2866
    functionLinenumberEnd: 2901
    functionName: bgp_zebra_process_local_es_add
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - stream_get_ipv4
    - esi_to_str
    - bgp_evpn_local_es_add
    - stream_getw
    - bgp_lookup_by_vrf_id
    - stream_get
    - zlog_debug
    - frrtrace
    - BGP_DEBUG
    - stream_getc
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_local_es_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:2910,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:2911,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:2916,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2918,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2919,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_zebra.c:2920,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:2922,1
    - Dst: bgp_evpn_local_es_del
      Src: /src/frr/bgpd/bgp_zebra.c:2924,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2927
      start: 2903
    functionDepth: 1
    functionLinenumber: 2903
    functionLinenumberEnd: 2927
    functionName: bgp_zebra_process_local_es_del
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - esi_to_str
    - bgp_lookup_by_vrf_id
    - stream_get
    - zlog_debug
    - bgp_evpn_local_es_del
    - frrtrace
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_local_es_del(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:2937,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:2942,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:2943,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2945,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2946,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_zebra.c:2948,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:2951,1
    - Dst: bgp_evpn_local_es_evi_add
      Src: /src/frr/bgpd/bgp_zebra.c:2953,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:2955,1
    - Dst: bgp_evpn_local_es_evi_del
      Src: /src/frr/bgpd/bgp_zebra.c:2957,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2961
      start: 2929
    functionDepth: 1
    functionLinenumber: 2929
    functionLinenumberEnd: 2961
    functionName: bgp_zebra_process_local_es_evi
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_local_es_evi_add
    - bgp_evpn_local_es_evi_del
    - esi_to_str
    - bgp_lookup_by_vrf_id
    - stream_get
    - stream_getl
    - zlog_debug
    - frrtrace
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_local_es_evi(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:2973,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:2974,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:2976,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:2978,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_zebra.c:2979,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:2980,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:2981,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:2982,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:2983,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:2985,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:2986,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_zebra.c:2988,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:2993,1
    - Dst: bgp_evpn_local_l3vni_add
      Src: /src/frr/bgpd/bgp_zebra.c:2997,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3001,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3002,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_zebra.c:3003,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:3005,1
    - Dst: bgp_evpn_local_l3vni_del
      Src: /src/frr/bgpd/bgp_zebra.c:3007,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3011
      start: 2963
    functionDepth: 15
    functionLinenumber: 2963
    functionLinenumberEnd: 3011
    functionName: bgp_zebra_process_local_l3vni
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - stream_get_ipv4
    - vrf_id_to_name
    - stream_get
    - stream_getl
    - zlog_debug
    - bgp_evpn_local_l3vni_add
    - bgp_evpn_local_l3vni_del
    - frrtrace
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_local_l3vni(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:3024,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_zebra.c:3026,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:3027,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_zebra.c:3028,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:3029,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:3032,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3036,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3037,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_zebra.c:3040,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_zebra.c:3041,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:3044,1
    - Dst: bgp_evpn_local_vni_add
      Src: /src/frr/bgpd/bgp_zebra.c:3047,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:3052,1
    - Dst: bgp_evpn_local_vni_del
      Src: /src/frr/bgpd/bgp_zebra.c:3054,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 3013
    functionDepth: 1
    functionLinenumber: 3013
    functionLinenumberEnd: 3056
    functionName: bgp_zebra_process_local_vni
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_local_vni_del
    - bgp_evpn_local_vni_add
    - stream_get_ipv4
    - vrf_id_to_name
    - bgp_lookup_by_vrf_id
    - stream_get
    - stream_getl
    - zlog_debug
    - frrtrace
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_local_vni(ZAPI_CALLBACK_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:3072,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:3074,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:3075,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:3076,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_zebra.c:3079,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:3089,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_zebra.c:3092,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:3093,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:3094,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_zebra.c:3096,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:3097,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:3100,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3104,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3105,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_zebra.c:3109,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:3112,1
    - Dst: bgp_evpn_local_macip_add
      Src: /src/frr/bgpd/bgp_zebra.c:3115,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_zebra.c:3118,1
    - Dst: bgp_evpn_local_macip_del
      Src: /src/frr/bgpd/bgp_zebra.c:3121,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3123
      start: 3058
    functionDepth: 7
    functionLinenumber: 3058
    functionLinenumberEnd: 3123
    functionName: bgp_zebra_process_local_macip
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - bgp_evpn_local_macip_add
    - esi_to_str
    - bgp_lookup_by_vrf_id
    - stream_get
    - stream_getl
    - flog_err
    - zlog_debug
    - bgp_evpn_local_macip_del
    - frrtrace
    - BGP_DEBUG
    - stream_getc
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_local_macip(ZAPI_CALLBACK_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:3131,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_zebra.c:3133,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_zebra.c:3135,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3139,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3140,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_zebra.c:3142,1
    - Dst: bgp_evpn_advertise_type5_route
      Src: /src/frr/bgpd/bgp_zebra.c:3147,1
    - Dst: bgp_evpn_advertise_type5_route
      Src: /src/frr/bgpd/bgp_zebra.c:3150,1
    - Dst: bgp_evpn_withdraw_type5_route
      Src: /src/frr/bgpd/bgp_zebra.c:3155,1
    - Dst: bgp_evpn_withdraw_type5_route
      Src: /src/frr/bgpd/bgp_zebra.c:3158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3162
      start: 3125
    functionDepth: 1
    functionLinenumber: 3125
    functionLinenumberEnd: 3162
    functionName: bgp_zebra_process_local_ip_prefix
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - vrf_id_to_name
    - bgp_lookup_by_vrf_id
    - bgp_evpn_advertise_type5_route
    - stream_get
    - zlog_debug
    - bgp_evpn_withdraw_type5_route
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_local_ip_prefix(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/bgpd/bgp_zebra.c:3174,1
    - Dst: STREAM_GETW
      Src: /src/frr/bgpd/bgp_zebra.c:3175,1
    - Dst: STREAM_GETC
      Src: /src/frr/bgpd/bgp_zebra.c:3176,1
    - Dst: STREAM_GETL
      Src: /src/frr/bgpd/bgp_zebra.c:3177,1
    - Dst: STREAM_GETL
      Src: /src/frr/bgpd/bgp_zebra.c:3178,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_zebra.c:3181,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_zebra.c:3186,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_zebra.c:3195,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3199,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3200,1
    - Dst: bgp_lp_event_chunk
      Src: /src/frr/bgpd/bgp_zebra.c:3204,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3210
      start: 3164
    functionDepth: 1
    functionLinenumber: 3164
    functionLinenumberEnd: 3210
    functionName: bgp_zebra_process_label_chunk
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - STREAM_GETW
    - flog_err
    - STREAM_GETC
    - zlog_debug
    - STREAM_GETL
    - BGP_DEBUG
    - bgp_lp_event_chunk
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_label_chunk(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3218,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3219,1
    - Dst: bgp_mac_add_mac_entry
      Src: /src/frr/bgpd/bgp_zebra.c:3226,1
    - Dst: bgp_update_interface_nbrs
      Src: /src/frr/bgpd/bgp_zebra.c:3228,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_zebra.c:3229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3231
      start: 3214
    functionDepth: 2
    functionLinenumber: 3214
    functionLinenumberEnd: 3231
    functionName: bgp_ifp_create
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - hook_call
    - bgp_mac_add_mac_entry
    - zlog_debug
    - BGP_DEBUG
    - bgp_update_interface_nbrs
    linkageType: ''
    returnType: int
    signature: int bgp_ifp_create(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_zebra.c:3236,1
    - Dst: srv6_locator_chunk_alloc
      Src: /src/frr/bgpd/bgp_zebra.c:3239,1
    - Dst: zapi_srv6_locator_chunk_decode
      Src: /src/frr/bgpd/bgp_zebra.c:3242,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_zebra.c:3244,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_zebra.c:3245,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_zebra.c:3247,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_zebra.c:3251,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_zebra.c:3252,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_zebra.c:3253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3256
      start: 3233
    functionDepth: 1
    functionLinenumber: 3233
    functionLinenumberEnd: 3256
    functionName: bgp_zebra_process_srv6_locator_chunk
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - srv6_locator_chunk_free
    - prefix_cmp
    - zapi_srv6_locator_chunk_decode
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - zlog_err
    - srv6_locator_chunk_alloc
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_srv6_locator_chunk(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_zebra.c:3266,1
    - Dst: zapi_srv6_locator_decode
      Src: /src/frr/bgpd/bgp_zebra.c:3269,1
    - Dst: bgp_zebra_srv6_manager_get_locator_chunk
      Src: /src/frr/bgpd/bgp_zebra.c:3275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3279
      start: 3263
    functionDepth: 1
    functionLinenumber: 3263
    functionLinenumberEnd: 3279
    functionName: bgp_zebra_process_srv6_locator_add
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - bgp_zebra_srv6_manager_get_locator_chunk
    - zapi_srv6_locator_decode
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_srv6_locator_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_zebra.c:3284,1
    - Dst: zapi_srv6_locator_decode
      Src: /src/frr/bgpd/bgp_zebra.c:3292,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:3296,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgp_zebra.c:3297,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_zebra.c:3299,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_zebra.c:3300,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_zebra.c:3304,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgp_zebra.c:3308,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_zebra.c:3310,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_zebra.c:3311,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_zebra.c:3316,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgp_zebra.c:3326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3330
      start: 3281
    functionDepth: 1
    functionLinenumber: 3281
    functionLinenumberEnd: 3330
    functionName: bgp_zebra_process_srv6_locator_delete
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - srv6_locator_chunk_free
    - prefix_match
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - zapi_srv6_locator_decode
    - XFREE
    - listnode_delete
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_process_srv6_locator_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_zebra.c:3448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3452
      start: 3442
    functionDepth: 0
    functionLinenumber: 3442
    functionLinenumberEnd: 3452
    functionName: bgp_if_new_hook
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int bgp_if_new_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_zebra.c:3456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3458
      start: 3454
    functionDepth: 0
    functionLinenumber: 3454
    functionLinenumberEnd: 3458
    functionName: bgp_if_delete_hook
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: int
    signature: int bgp_if_delete_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/bgpd/bgp_zebra.c:3463,1
    - Dst: hook_register_prio
      Src: /src/frr/bgpd/bgp_zebra.c:3464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3465
      start: 3460
    functionDepth: 1
    functionLinenumber: 3460
    functionLinenumberEnd: 3465
    functionName: bgp_if_init
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - hook_register_prio
    linkageType: ''
    returnType: void
    signature: void bgp_if_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_zapi_callbacks
      Src: /src/frr/bgpd/bgp_zebra.c:3471,1
    - Dst: zclient_new
      Src: /src/frr/bgpd/bgp_zebra.c:3475,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_zebra.c:3476,1
    - Dst: zclient_init
      Src: /src/frr/bgpd/bgp_zebra.c:3477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - master
    - instance
    argTypes:
    - struct event_loop*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3480
      start: 3467
    functionDepth: 1
    functionLinenumber: 3467
    functionLinenumberEnd: 3480
    functionName: bgp_zebra_init
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_init
    - if_zapi_callbacks
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_init(struct event_loop *master, unsigned short instance)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/bgpd/bgp_zebra.c:3486,1
    - Dst: zclient_free
      Src: /src/frr/bgpd/bgp_zebra.c:3487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3489
      start: 3482
    functionDepth: 1
    functionLinenumber: 3482
    functionLinenumberEnd: 3489
    functionName: bgp_zebra_destroy
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 2
    functionsReached:
    - zclient_free
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void bgp_zebra_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3494
      start: 3491
    functionDepth: 0
    functionLinenumber: 3491
    functionLinenumberEnd: 3494
    functionName: bgp_zebra_num_connects
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_num_connects(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3506,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3508,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3511,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:3515,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:3517,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:3520,1
    - Dst: bgp_encode_pbr_rule_action
      Src: /src/frr/bgpd/bgp_zebra.c:3522,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:3524,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:3524,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:3525,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - pbra
    - pbr
    - install
    argTypes:
    - struct bgp_pbr_action*
    - struct bgp_pbr_rule*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3532
      start: 3496
    functionDepth: 2
    functionLinenumber: 3496
    functionLinenumberEnd: 3532
    functionName: bgp_send_pbr_rule_action
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - bgp_encode_pbr_rule_action
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_send_pbr_rule_action(struct bgp_pbr_action *pbra,\n\t\t\t
      \     struct bgp_pbr_rule *pbr,\n\t\t\t      bool install)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3540,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3541,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:3545,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:3547,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:3552,1
    - Dst: bgp_encode_pbr_ipset_match
      Src: /src/frr/bgpd/bgp_zebra.c:3554,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:3556,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:3556,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:3557,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - pbrim
    - install
    argTypes:
    - struct bgp_pbr_match*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3559
      start: 3534
    functionDepth: 2
    functionLinenumber: 3534
    functionLinenumberEnd: 3559
    functionName: bgp_send_pbr_ipset_match
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - bgp_encode_pbr_ipset_match
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void bgp_send_pbr_ipset_match(struct bgp_pbr_match *pbrim, bool install)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3568,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3569,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:3573,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:3575,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:3580,1
    - Dst: bgp_encode_pbr_ipset_entry_match
      Src: /src/frr/bgpd/bgp_zebra.c:3582,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:3584,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:3584,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:3585,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - pbrime
    - install
    argTypes:
    - struct bgp_pbr_match_entry*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3587
      start: 3561
    functionDepth: 2
    functionLinenumber: 3561
    functionLinenumberEnd: 3587
    functionName: bgp_send_pbr_ipset_entry_match
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - bgp_encode_pbr_ipset_entry_match
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_send_pbr_ipset_entry_match(struct bgp_pbr_match_entry *pbrime,\n\t\t\t\t
      \   bool install)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/bgpd/bgp_zebra.c:3604,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:3606,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - bgp
    - s
    - family
    argTypes:
    - struct bgp*
    - struct stream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3608
      start: 3589
    functionDepth: 1
    functionLinenumber: 3589
    functionLinenumberEnd: 3608
    functionName: bgp_encode_pbr_interface_list
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_encode_pbr_interface_list(struct bgp *bgp, struct stream
      *s,\n\t\t\t\t\t  uint8_t family)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/bgpd/bgp_zebra.c:3604,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:3606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3603
    functionDepth: 1
    functionLinenumber: 3603
    functionLinenumberEnd: 3607
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 69
    functionsReached:
    - if_lookup_by_name
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH (pbr_if, bgp_pbr_interface_head, head)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/bgpd/bgp_zebra.c:3624,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - bgp
    - family
    argTypes:
    - struct bgp*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3628
      start: 3610
    functionDepth: 1
    functionLinenumber: 3610
    functionLinenumberEnd: 3628
    functionName: bgp_pbr_get_ifnumber
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_get_ifnumber(struct bgp *bgp, uint8_t family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/bgpd/bgp_zebra.c:3624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3626
      start: 3623
    functionDepth: 1
    functionLinenumber: 3623
    functionLinenumberEnd: 3626
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 69
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH (pbr_if, bgp_pbr_interface_head, head)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3640,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3641,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_zebra.c:3645,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_zebra.c:3647,1
    - Dst: bgp_encode_pbr_iptable_match
      Src: /src/frr/bgpd/bgp_zebra.c:3652,1
    - Dst: bgp_pbr_get_ifnumber
      Src: /src/frr/bgpd/bgp_zebra.c:3653,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_zebra.c:3654,1
    - Dst: bgp_encode_pbr_interface_list
      Src: /src/frr/bgpd/bgp_zebra.c:3656,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_zebra.c:3657,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_zebra.c:3657,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_zebra.c:3658,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - pba
    - pbm
    - install
    argTypes:
    - struct bgp_pbr_action*
    - struct bgp_pbr_match*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3665
      start: 3630
    functionDepth: 2
    functionLinenumber: 3630
    functionLinenumberEnd: 3665
    functionName: bgp_send_pbr_iptable
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - bgp_pbr_get_ifnumber
    - bgp_encode_pbr_iptable_match
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - bgp_encode_pbr_interface_list
    - zlog_debug
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_send_pbr_iptable(struct bgp_pbr_action *pba,\n\t\t\t  struct
      bgp_pbr_match *pbm,\n\t\t\t  bool install)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/bgpd/bgp_zebra.c:3686,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:3689,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_zebra.c:3692,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:3693,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:3700,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:3701,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_zebra.c:3705,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3713,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3714,1
    - Dst: zclient_route_send
      Src: /src/frr/bgpd/bgp_zebra.c:3719,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_zebra.c:3723,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_zebra.c:3726,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3730,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3731,1
    - Dst: zclient_route_send
      Src: /src/frr/bgpd/bgp_zebra.c:3736,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_zebra.c:3743,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/bgpd/bgp_zebra.c:3749,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3755,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_zebra.c:3756,1
    - Dst: zclient_route_send
      Src: /src/frr/bgpd/bgp_zebra.c:3759,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 5
    argNames:
    - bgp
    - nh
    - afi
    - table_id
    - announce
    argTypes:
    - struct bgp*
    - struct nexthop*
    - afi_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3764
      start: 3671
    functionDepth: 1
    functionLinenumber: 3671
    functionLinenumberEnd: 3764
    functionName: bgp_zebra_announce_default
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - zlog_info
    - memset
    - afi2family
    - memcmp
    - if_lookup_by_name_vrf
    - SET_FLAG
    - zlog_debug
    - vrf_lookup_by_id
    - zclient_route_send
    - BGP_DEBUG
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void bgp_zebra_announce_default(struct bgp *bgp, struct nexthop *nh,\n\t\t\t\tafi_t
      afi, uint32_t table_id, bool announce)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3772,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3773,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3777,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3778,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3785,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3786,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:3794,1
    - Dst: zclient_capabilities_send
      Src: /src/frr/bgpd/bgp_zebra.c:3804,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_zebra.c:3806,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3815,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3816,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - bgp
    - disable
    argTypes:
    - struct bgp*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3821
      start: 3767
    functionDepth: 1
    functionLinenumber: 3767
    functionLinenumberEnd: 3821
    functionName: bgp_zebra_send_capabilities
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 2
    functionsReached:
    - memset
    - zlog_err
    - zlog_debug
    - BGP_DEBUG
    - zclient_capabilities_send
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_send_capabilities(struct bgp *bgp, bool disable)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3831,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3832,1
    - Dst: zserv_gr_client_cap_string
      Src: /src/frr/bgpd/bgp_zebra.c:3834,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3837,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3838,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3845,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3846,1
    - Dst: zclient_capabilities_send
      Src: /src/frr/bgpd/bgp_zebra.c:3856,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3858,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3859,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 4
    argNames:
    - bgp
    - afi
    - safi
    - type
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - enum zserv_client_capabilities
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3864
      start: 3826
    functionDepth: 1
    functionLinenumber: 3826
    functionLinenumberEnd: 3864
    functionName: bgp_zebra_update
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - zclient_capabilities_send
    - zserv_gr_client_cap_string
    linkageType: ''
    returnType: int
    signature: "int bgp_zebra_update(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t
      \    enum zserv_client_capabilities type)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3872,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3873,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3877,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3878,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3884,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3885,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_zebra.c:3890,1
    - Dst: zclient_capabilities_send
      Src: /src/frr/bgpd/bgp_zebra.c:3894,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_zebra.c:3896,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_zebra.c:3897,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3903
      start: 3868
    functionDepth: 1
    functionLinenumber: 3868
    functionLinenumberEnd: 3903
    functionName: bgp_zebra_stale_timer_update
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - zclient_capabilities_send
    - memset
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_stale_timer_update(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srv6_manager_get_locator_chunk
      Src: /src/frr/bgpd/bgp_zebra.c:3907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3908
      start: 3905
    functionDepth: 1
    functionLinenumber: 3905
    functionLinenumberEnd: 3908
    functionName: bgp_zebra_srv6_manager_get_locator_chunk
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - srv6_manager_get_locator_chunk
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_srv6_manager_get_locator_chunk(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srv6_manager_release_locator_chunk
      Src: /src/frr/bgpd/bgp_zebra.c:3912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3913
      start: 3910
    functionDepth: 1
    functionLinenumber: 3910
    functionLinenumberEnd: 3913
    functionName: bgp_zebra_srv6_manager_release_locator_chunk
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 1
    functionsReached:
    - srv6_manager_release_locator_chunk
    linkageType: ''
    returnType: int
    signature: int bgp_zebra_srv6_manager_release_locator_chunk(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgp_zebra.c:3927,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/bgpd/bgp_zebra.c:3929,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/bgpd/bgp_zebra.c:3941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 6
    argNames:
    - cmd
    - label
    - ifindex
    - vrf_id
    - ltype
    - p
    argTypes:
    - int
    - mpls_label_t
    - ifindex_t
    - vrf_id_t
    - enum lsp_types_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3942
      start: 3915
    functionDepth: 1
    functionLinenumber: 3915
    functionLinenumberEnd: 3942
    functionName: bgp_zebra_send_nexthop_label
    functionSourceFile: /src/frr/bgpd/bgp_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_send_mpls_labels
    - IPV4_ADDR_COPY
    - IPV6_ADDR_COPY
    linkageType: ''
    returnType: void
    signature: "void bgp_zebra_send_nexthop_label(int cmd, mpls_label_t label,\n\t\t\t\t
      \ ifindex_t ifindex, vrf_id_t vrf_id,\n\t\t\t\t  enum lsp_types_t ltype, struct
      prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nexthop_len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 22
    functionName: NEXTHOP_FAMILY
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NEXTHOP_FAMILY(nexthop_len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:44,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:45,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:46,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:48,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 60
    functionName: peer_lookup_all_vrf
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    - IPV4_ADDR_SAME
    - ALL_LIST_ELEMENTS_RO
    - sockunion_family
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_lookup_all_vrf(struct ipaddr *addr)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:75,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:76,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:77,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:79,1
    - Dst: switch
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:82,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:82,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:84,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:86,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:88,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:93,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:99,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:100,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:102,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:107,1
    - Dst: bgpv2PeerTable_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:124,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:148,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:149,1
    - Dst: peer_lookup_all_vrf
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:150,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:153,1
    - Dst: peer_lookup_all_vrf
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:154,1
    - Dst: peer_lookup_all_vrf_next
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:157,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:161,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:163,1
    - Dst: oid_copy_in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:167,1
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:185,1
    - Dst: bgpv2PeerTable_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:189,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:198,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:203,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:207,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:210,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:213,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:216,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:221,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:225,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:228,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:231,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:235,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:236,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:238,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:239,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:241,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:243,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:245,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:249,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:250,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:252,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:253,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:255,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:257,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:259,1
    - Dst: BGP_PEER_START_SUPPRESSED
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:263,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:264,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:266,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:268,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:271,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 71
    argCount: 3
    argNames:
    - addr
    - offset
    - family
    argTypes:
    - struct ipaddr*
    - oid*
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 275
    functionName: peer_lookup_all_vrf_next
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 1
    functionsReached:
    - switch
    - sockunion_family
    - SNMP_IP6ADDRESS
    - ntohs
    - IPV4_ADDR_SAME
    - peer_lookup_all_vrf
    - BGP_PEER_START_SUPPRESSED
    - bgpv2PeerTable_lookup
    - ALL_LIST_ELEMENTS_RO
    - oid2in6_addr
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    - if
    - SNMP_STRING
    - smux_header_table
    - oid2in_addr
    - peer_lookup_all_vrf_next
    - IPV6_ADDR_CMP
    - IPV4_ADDR_CMP
    - oid_copy_in6_addr
    - IPV6_ADDR_SAME
    - oid_copy_in_addr
    linkageType: ''
    returnType: struct peer
    signature: "struct peer *peer_lookup_all_vrf_next(struct ipaddr *addr, oid *offset,\n\t\t\t\t\t
      \    sa_family_t family)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:287,1
    - Dst: bgpv2PeerTable_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:291,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:298,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:300,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:303,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:305,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:308,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:310,1
    - Dst: bgp_notify_admin_message
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:321,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:324,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:327,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:330,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:332,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:335,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:337,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:340,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:342,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:345,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:347,1
    - Dst: bgp_notify_admin_message
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:360,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:363,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:366,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:372,1
    - Dst: SNMP_STRING
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:374,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 59
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 380
    functionName: bgpv2PeerErrorsTable
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - SNMP_INTEGER
    - bgp_notify_admin_message
    - SNMP_STRING
    - bgpv2PeerTable_lookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgpv2PeerErrorsTable(struct variable *v, oid name[],\n\t\t\t\t
      \    size_t *length, int exact, size_t *var_len,\n\t\t\t\t     WriteMethod **write_method)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:390,1
    - Dst: bgpv2PeerTable_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:394,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:401,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:403,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:403,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:406,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:408,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 414
    functionName: bgpv2PeerEventTimesTable
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - monotime
    - SNMP_INTEGER
    - bgpv2PeerTable_lookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgpv2PeerEventTimesTable(struct variable *v, oid name[],\n\t\t\t\t\t
      size_t *length, int exact,\n\t\t\t\t\t size_t *var_len,\n\t\t\t\t\t WriteMethod
      **write_method)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_init
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:439,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:448,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:450,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:461,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:463,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:466,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:468,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:470,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:473,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:484,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:490,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:492,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:504,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:516,1
    - Dst: oid2in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:518,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:521,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:523,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:532,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:535,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:538,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:542,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:547,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:553,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:562,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:570,1
    - Dst: oid_copy_in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:572,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:580,1
    - Dst: oid_copy_in6_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:584,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:592,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:598,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:600,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:601,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 103
    argCount: 6
    argNames:
    - v
    - name
    - length
    - bgp
    - addr
    - exact
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - struct bgp*
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 604
    functionName: bgp4v2PathAttrLookup
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_route_next
    - sockunion_family
    - IPV6_ADDR_CMP
    - memset
    - oid2in_addr
    - bgp_table_top
    - bgp_dest_get_prefix
    - sockunion_same
    - oid2in6_addr
    - bgp_node_lookup
    - oid_copy_in6_addr
    - sockunion_init
    - bgp_dest_get_bgp_path_info
    - oid_copy_in_addr
    - IPV4_ADDR_CMP
    - bgp_node_get
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *\nbgp4v2PathAttrLookup(struct variable *v, oid
      name[], size_t *length,\n\t\t     struct bgp *bgp, struct prefix *addr, int
      exact)"
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:617,1
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:621,1
    - Dst: bgp4v2PathAttrLookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:625,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:629,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:639,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:642,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:644,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:647,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:649,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:652,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:654,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:657,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:659,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:661,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:663,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:664,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:666,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:668,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:669,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:670,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:672,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:676,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:678,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:680,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:682,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:687,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:689,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:692,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:694,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:696,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:701,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:703,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:706,1
    - Dst: SNMP_IP6ADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:709,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:712,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:720,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:721,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:722,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:724,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:726,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:727,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:728,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:730,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:732,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:733,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:734,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:736,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:738,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:739,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:740,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:742,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:744,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:745,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:746,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:750,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:751,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:752,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:754,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:756,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:757,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:758,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:760,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:762,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:763,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:764,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:766,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:768,1
    - Dst: aspath_snmp_pathseg
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:770,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 125
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 776
    functionName: bgp4v2PathAttrTable
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - SNMP_IP6ADDRESS
    - bgp_get_default
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - aspath_snmp_pathseg
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    - bgp4v2PathAttrLookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgp4v2PathAttrTable(struct variable *v, oid name[],\n\t\t\t\t
      \   size_t *length, int exact, size_t *var_len,\n\t\t\t\t    WriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 635
    functionName: AF_FOREACH
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AF_FOREACH (index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REGISTER_MIB
      Src: /src/frr/bgpd/bgp_snmp_bgp4v2.c:1399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1397
    functionDepth: 1
    functionLinenumber: 1397
    functionLinenumberEnd: 1401
    functionName: bgp_snmp_bgp4v2_init
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4v2.c
    functionUses: 0
    functionsReached:
    - REGISTER_MIB
    linkageType: ''
    returnType: int
    signature: int bgp_snmp_bgp4v2_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: ASSEGMENT_DATA_SIZE
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSEGMENT_DATA_SIZE(N, S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: ASSEGMENT_SIZE
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSEGMENT_SIZE(N,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: ASSEGMENT_LEN
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSEGMENT_LEN(X,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: ASSEGMENT_TYPES_PACKABLE
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSEGMENT_TYPES_PACKABLE(X, Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: ASSEGMENTS_PACKABLE
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSEGMENTS_PACKABLE(X, Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:82,1
    - Dst: ASSEGMENT_DATA_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: assegment_data_new
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - ASSEGMENT_DATA_SIZE
    linkageType: ''
    returnType: as_t
    signature: as_t *assegment_data_new(int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_aspath.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - asdata
    argTypes:
    - as_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: assegment_data_free
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void assegment_data_free(as_t *asdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:104,1
    - Dst: assegment_data_new
      Src: /src/frr/bgpd/bgp_aspath.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - type
    - length
    argTypes:
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 113
    functionName: assegment_new
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - assegment_data_new
    linkageType: ''
    returnType: struct assegment
    signature: struct assegment *assegment_new(uint8_t type, unsigned short length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assegment_data_free
      Src: /src/frr/bgpd/bgp_aspath.c:120,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_aspath.c:121,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_aspath.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - seg
    argTypes:
    - struct assegment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 125
    functionName: assegment_free
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - memset
    - XFREE
    - assegment_data_free
    linkageType: ''
    returnType: void
    signature: void assegment_free(struct assegment *seg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assegment_free
      Src: /src/frr/bgpd/bgp_aspath.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - seg
    argTypes:
    - struct assegment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: assegment_free_all
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_free
    linkageType: ''
    returnType: void
    signature: void assegment_free_all(struct assegment *seg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assegment_new::assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:144,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_aspath.c:145,1
    - Dst: as::as
      Src: /src/frr/bgpd/bgp_aspath.c:145,1
    - Dst: ASSEGMENT_DATA_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:145,1
    - Dst: length::length
      Src: /src/frr/bgpd/bgp_aspath.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - seg
    argTypes:
    - struct assegment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 148
    functionName: assegment_dup
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - as::as
    - assegment_new::assegment_new
    - ASSEGMENT_DATA_SIZE
    - length::length
    - memcpy
    linkageType: ''
    returnType: struct assegment
    signature: struct assegment *assegment_dup(struct assegment *seg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assegment_dup
      Src: /src/frr/bgpd/bgp_aspath.c:158,1
    - Dst: next::next
      Src: /src/frr/bgpd/bgp_aspath.c:159,1
    - Dst: assegment_dup::assegment_dup
      Src: /src/frr/bgpd/bgp_aspath.c:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - seg
    argTypes:
    - struct assegment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 151
    functionDepth: 4
    functionLinenumber: 151
    functionLinenumberEnd: 166
    functionName: assegment_dup_all
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_dup
    - next::next
    - assegment_dup::assegment_dup
    linkageType: ''
    returnType: struct assegment
    signature: struct assegment *assegment_dup_all(struct assegment *seg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assegment_data_new
      Src: /src/frr/bgpd/bgp_aspath.c:181,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_aspath.c:188,1
    - Dst: ASSEGMENT_DATA_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:188,1
    - Dst: assegment_data_free
      Src: /src/frr/bgpd/bgp_aspath.c:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - seg
    - asnum
    - num
    argTypes:
    - struct assegment*
    - as_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 194
    functionName: assegment_prepend_asns
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ASSEGMENT_DATA_SIZE
    - assegment_data_new
    - assegment_data_free
    linkageType: ''
    returnType: struct assegment
    signature: "struct assegment *assegment_prepend_asns(struct assegment *seg,\n\t\t\t\t\t\tas_t
      asnum, int num)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:205,1
    - Dst: ASSEGMENT_DATA_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:206,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_aspath.c:209,1
    - Dst: ASSEGMENT_DATA_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - seg
    - asnos
    - num
    argTypes:
    - struct assegment*
    - as_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 213
    functionName: assegment_append_asns
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XREALLOC
    - ASSEGMENT_DATA_SIZE
    linkageType: ''
    returnType: struct assegment
    signature: "struct assegment *assegment_append_asns(struct assegment *seg,\n\t\t\t\t\t
      \      as_t *asnos, int num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 221
    functionName: int_cmp
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_cmp(const void *p1, const void *p2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/frr/bgpd/bgp_aspath.c:248,1
    - Dst: ASSEGMENT_TYPES_PACKABLE
      Src: /src/frr/bgpd/bgp_aspath.c:271,1
    - Dst: assegment_append_asns
      Src: /src/frr/bgpd/bgp_aspath.c:276,1
    - Dst: assegment_free
      Src: /src/frr/bgpd/bgp_aspath.c:282,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct assegment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 288
    functionName: assegment_normalise
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_free
    - qsort
    - assegment_append_asns
    - ASSEGMENT_TYPES_PACKABLE
    linkageType: ''
    returnType: struct assegment
    signature: struct assegment *assegment_normalise(struct assegment *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - asnotation
    argTypes:
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 297
    functionName: aspath_new
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_new(enum asnotation_mode asnotation)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assegment_free_all
      Src: /src/frr/bgpd/bgp_aspath.c:305,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_aspath.c:306,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_aspath.c:309,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_aspath.c:313,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 300
    functionDepth: 3
    functionLinenumber: 300
    functionLinenumberEnd: 314
    functionName: aspath_free
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 14
    functionsReached:
    - json_object_free
    - assegment_free_all
    - XFREE
    linkageType: ''
    returnType: void
    signature: void aspath_free(struct aspath *aspath)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_aspath.c:332,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:333,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath**
    assertStmts:
    - condition: (ret != NULL)
      pos:
        line_end: 332
        line_start: 332
        source_file: /src/frr/bgpd/bgp_aspath.c
    constantsTouched: []
    func_position:
      end: 337
      start: 317
    functionDepth: 4
    functionLinenumber: 317
    functionLinenumberEnd: 337
    functionName: aspath_unintern
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 16
    functionsReached:
    - hash_release
    - aspath_free
    - assert
    linkageType: ''
    returnType: void
    signature: void aspath_unintern(struct aspath **aspath)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - type
    - which
    argTypes:
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 363
    functionName: aspath_delimiter_char
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char aspath_delimiter_char(uint8_t type, uint8_t which)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - seg
    - from
    argTypes:
    - struct assegment*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 379
    functionName: assegment_count_asns
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int assegment_count_asns(struct assegment *seg, int from)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 395
    functionName: aspath_count_confeds
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aspath_count_confeds(struct aspath *aspath)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 411
    functionName: aspath_count_hops
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aspath_count_hops(const struct aspath *aspath)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 424
    functionName: aspath_check_as_sets
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_check_as_sets(struct aspath *aspath)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 440
    functionName: aspath_check_as_zero
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_check_as_zero(struct aspath *aspath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ASSEGMENT_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 458
    functionName: aspath_size
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - ASSEGMENT_SIZE
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aspath_size(struct aspath *aspath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_AS_IS_PRIVATE
      Src: /src/frr/bgpd/bgp_aspath.c:470,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 475
    functionName: aspath_highest
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - BGP_AS_IS_PRIVATE
    linkageType: ''
    returnType: as_t
    signature: as_t aspath_highest(struct aspath *aspath)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 487
    functionName: aspath_leftmost
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: as_t
    signature: as_t aspath_leftmost(struct aspath *aspath)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 502
    functionName: aspath_has_as4
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_has_as4(struct aspath *aspath)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_aspath.c:516,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_aspath.c:517,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_aspath.c:523,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_aspath.c:524,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_aspath.c:526,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:528,1
    - Dst: MAX
      Src: /src/frr/bgpd/bgp_aspath.c:548,1
    - Dst: assegment_count_asns
      Src: /src/frr/bgpd/bgp_aspath.c:548,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:550,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_aspath.c:567,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_aspath.c:570,1
    - Dst: SEGMENT_STR_LEN
      Src: /src/frr/bgpd/bgp_aspath.c:586,1
    - Dst: SEGMENT_STR_LEN
      Src: /src/frr/bgpd/bgp_aspath.c:587,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:588,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_aspath.c:594,1
    - Dst: aspath_delimiter_char
      Src: /src/frr/bgpd/bgp_aspath.c:596,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_aspath.c:599,1
    - Dst: asn_asn2json_array
      Src: /src/frr/bgpd/bgp_aspath.c:604,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_aspath.c:606,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_aspath.c:607,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_aspath.c:611,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_aspath.c:616,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_aspath.c:617,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_aspath.c:620,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_aspath.c:621,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_aspath.c:625,1
    - Dst: aspath_delimiter_char
      Src: /src/frr/bgpd/bgp_aspath.c:627,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_aspath.c:629,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:634,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_aspath.c:641,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_aspath.c:642,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_aspath.c:643,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_aspath.c:643,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 74
    argCount: 2
    argNames:
    - as
    - make_json
    argTypes:
    - struct aspath*
    - bool
    assertStmts:
    - condition: (len < str_size)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/frr/bgpd/bgp_aspath.c
    constantsTouched: []
    func_position:
      end: 647
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 647
    functionName: aspath_make_str_count
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - json_object_string_add
    - snprintf
    - asn_asn2json_array
    - assert
    - SEGMENT_STR_LEN
    - aspath_count_hops
    - aspath_delimiter_char
    - json_object_int_add
    - json_object_free
    - XFREE
    - MAX
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - XMALLOC
    - snprintfrr
    - assegment_count_asns
    - json_object_object_add
    - ASN_FORMAT
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: void aspath_make_str_count(struct aspath *as, bool make_json)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 586
    functionName: SEGMENT_STR_LEN
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SEGMENT_STR_LEN(X)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_aspath.c:651,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_aspath.c:654,1
    - Dst: aspath_make_str_count
      Src: /src/frr/bgpd/bgp_aspath.c:658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - as
    - make_json
    argTypes:
    - struct aspath*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 649
    functionDepth: 2
    functionLinenumber: 649
    functionLinenumberEnd: 659
    functionName: aspath_str_update
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - json_object_free
    - aspath_make_str_count
    - XFREE
    linkageType: ''
    returnType: void
    signature: void aspath_str_update(struct aspath *as, bool make_json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:668,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:669,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_aspath.c:672,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:674,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts:
    - condition: (aspath->refcnt == 0)
      pos:
        line_end: 667
        line_start: 667
        source_file: /src/frr/bgpd/bgp_aspath.c
    - condition: (aspath->str)
      pos:
        line_end: 668
        line_start: 668
        source_file: /src/frr/bgpd/bgp_aspath.c
    constantsTouched: []
    func_position:
      end: 679
      start: 662
    functionDepth: 4
    functionLinenumber: 662
    functionLinenumberEnd: 679
    functionName: aspath_intern
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - aspath_free
    - hash_get
    - assert
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_intern(struct aspath *aspath)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:688,1
    - Dst: assegment_dup_all
      Src: /src/frr/bgpd/bgp_aspath.c:692,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:697,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_aspath.c:703,1
    - Dst: str::str
      Src: /src/frr/bgpd/bgp_aspath.c:703,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 683
    functionDepth: 5
    functionLinenumber: 683
    functionLinenumberEnd: 708
    functionName: aspath_dup
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 11
    functionsReached:
    - XCALLOC::XCALLOC
    - str::str
    - XMALLOC
    - assegment_dup_all
    - memcpy
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_dup(struct aspath *aspath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:716,1
    - Dst: XMALLOC::XMALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts:
    - condition: (aspath->str)
      pos:
        line_end: 715
        line_start: 715
        source_file: /src/frr/bgpd/bgp_aspath.c
    constantsTouched: []
    func_position:
      end: 730
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 730
    functionName: aspath_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - XMALLOC::XMALLOC
    - assert
    linkageType: ''
    returnType: void
    signature: void *aspath_hash_alloc(void *arg)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_aspath.c:744,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_aspath.c:745,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_aspath.c:749,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_aspath.c:750,1
    - Dst: assegment_free_all
      Src: /src/frr/bgpd/bgp_aspath.c:760,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_aspath.c:765,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_aspath.c:766,1
    - Dst: ASSEGMENT_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:768,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_aspath.c:770,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_aspath.c:771,1
    - Dst: assegment_free_all
      Src: /src/frr/bgpd/bgp_aspath.c:787,1
    - Dst: assegment_free_all
      Src: /src/frr/bgpd/bgp_aspath.c:799,1
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:804,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_aspath.c:813,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_aspath.c:813,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_aspath.c:817,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_aspath.c:818,1
    - Dst: assegment_normalise
      Src: /src/frr/bgpd/bgp_aspath.c:825,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 4
    argNames:
    - s
    - length
    - result
    - use32bit
    argTypes:
    - struct stream*
    - size_t
    - struct assegment**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 733
    functionDepth: 3
    functionLinenumber: 733
    functionLinenumberEnd: 827
    functionName: assegments_parse
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - ASSEGMENT_SIZE
    - assegment_new
    - STREAM_READABLE
    - stream_getw
    - zlog_debug
    - assegment_free_all
    - stream_getl
    - assegment_normalise
    - BGP_DEBUG
    - stream_getc
    linkageType: ''
    returnType: int
    signature: "int assegments_parse(struct stream *s, size_t length,\n\t\t\t    struct
      assegment **result, int use32bit)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_aspath.c:850,1
    - Dst: assegments_parse
      Src: /src/frr/bgpd/bgp_aspath.c:852,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_aspath.c:856,1
    - Dst: assegment_free_all
      Src: /src/frr/bgpd/bgp_aspath.c:860,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_aspath.c:862,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_aspath.c:864,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - s
    - length
    - use32bit
    - asnotation
    argTypes:
    - struct stream*
    - size_t
    - int
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 835
    functionDepth: 4
    functionLinenumber: 835
    functionLinenumberEnd: 872
    functionName: aspath_parse
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - memset
    - assegment_free_all
    - json_object_free
    - XFREE
    - hash_get
    - assegments_parse
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *aspath_parse(struct stream *s, size_t length, int use32bit,\n\t\t\t
      \   enum asnotation_mode asnotation)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:878,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_aspath.c:882,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_aspath.c:885,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_aspath.c:887,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - s
    - as
    - num
    - use32bit
    argTypes:
    - struct stream*
    - as_t*
    - int
    - int
    assertStmts:
    - condition: (num <= AS_SEGMENT_MAX)
      pos:
        line_end: 877
        line_start: 877
        source_file: /src/frr/bgpd/bgp_aspath.c
    constantsTouched: []
    func_position:
      end: 889
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 889
    functionName: assegment_data_put
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - assert
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void assegment_data_put(struct stream *s, as_t *as, int num,\n\t\t\t
      \      int use32bit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:894,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_aspath.c:895,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_aspath.c:896,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_aspath.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - s
    - type
    - length
    argTypes:
    - struct stream*
    - uint8_t
    - int
    assertStmts:
    - condition: (length <= AS_SEGMENT_MAX)
      pos:
        line_end: 893
        line_start: 893
        source_file: /src/frr/bgpd/bgp_aspath.c
    constantsTouched: []
    func_position:
      end: 899
      start: 891
    functionDepth: 1
    functionLinenumber: 891
    functionLinenumberEnd: 899
    functionName: assegment_header_put
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - stream_get_endp
    - stream_putc
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t assegment_header_put(struct stream *s, uint8_t type, int length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ASSEGMENT_LEN
      Src: /src/frr/bgpd/bgp_aspath.c:919,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/bgpd/bgp_aspath.c:919,1
    - Dst: assegment_header_put
      Src: /src/frr/bgpd/bgp_aspath.c:927,1
    - Dst: assegment_data_put
      Src: /src/frr/bgpd/bgp_aspath.c:928,1
    - Dst: ASSEGMENT_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:931,1
    - Dst: assegment_header_put
      Src: /src/frr/bgpd/bgp_aspath.c:936,1
    - Dst: assegment_data_put
      Src: /src/frr/bgpd/bgp_aspath.c:938,1
    - Dst: ASSEGMENTS_PACKABLE
      Src: /src/frr/bgpd/bgp_aspath.c:945,1
    - Dst: assegment_data_put
      Src: /src/frr/bgpd/bgp_aspath.c:961,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_aspath.c:964,1
    - Dst: ASSEGMENT_SIZE
      Src: /src/frr/bgpd/bgp_aspath.c:971,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - s
    - as
    - use32bit
    argTypes:
    - struct stream*
    - struct aspath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 976
    functionName: aspath_put
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - assegment_header_put
    - ASSEGMENT_SIZE
    - assegment_data_put
    - STREAM_WRITEABLE
    - ASSEGMENT_LEN
    - ASSEGMENTS_PACKABLE
    - stream_putc_at
    linkageType: ''
    returnType: size_t
    signature: size_t aspath_put(struct stream *s, struct aspath *as, int use32bit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_aspath.c:987,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_aspath.c:989,1
    - Dst: aspath_put
      Src: /src/frr/bgpd/bgp_aspath.c:995,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_aspath.c:997,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_aspath.c:998,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - as
    - varlen
    argTypes:
    - struct aspath*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 999
    functionName: aspath_snmp_pathseg
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - stream_new
    - stream_get_endp
    - stream_reset
    - stream_pnt
    - aspath_put
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *aspath_snmp_pathseg(struct aspath *as, size_t *varlen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:1009,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:1028,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - aspath
    - asset
    - as
    argTypes:
    - struct aspath*
    - struct assegment*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1001
    functionDepth: 3
    functionLinenumber: 1001
    functionLinenumberEnd: 1035
    functionName: aspath_aggregate_as_set_add
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_new
    - XREALLOC
    linkageType: ''
    returnType: struct assegment
    signature: "struct assegment *aspath_aggregate_as_set_add(struct aspath *aspath,\n\t\t\t\t\t\t
      \    struct assegment *asset,\n\t\t\t\t\t\t     as_t as)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/bgpd/bgp_aspath.c:1057,1
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:1064,1
    - Dst: assegment_append_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1066,1
    - Dst: aspath_new
      Src: /src/frr/bgpd/bgp_aspath.c:1069,1
    - Dst: aspath_new
      Src: /src/frr/bgpd/bgp_aspath.c:1089,1
    - Dst: aspath_aggregate_as_set_add
      Src: /src/frr/bgpd/bgp_aspath.c:1095,1
    - Dst: aspath_aggregate_as_set_add
      Src: /src/frr/bgpd/bgp_aspath.c:1105,1
    - Dst: assegment_normalise
      Src: /src/frr/bgpd/bgp_aspath.c:1112,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1113,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 2
    argNames:
    - as1
    - as2
    argTypes:
    - struct aspath*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1038
    functionDepth: 4
    functionLinenumber: 1038
    functionLinenumberEnd: 1115
    functionName: aspath_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - MIN
    - assegment_new
    - aspath_str_update
    - aspath_new
    - aspath_aggregate_as_set_add
    - assegment_append_asns
    - assegment_normalise
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_aggregate(struct aspath *as1, struct aspath *as2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - aspath
    - asno
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1120
    functionDepth: 0
    functionLinenumber: 1120
    functionLinenumberEnd: 1130
    functionName: aspath_firstas_check
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_firstas_check(struct aspath *aspath, as_t asno)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1138
    functionName: aspath_get_first_as
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aspath_get_first_as(struct aspath *aspath)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1140
    functionDepth: 0
    functionLinenumber: 1140
    functionLinenumberEnd: 1159
    functionName: aspath_get_last_as
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aspath_get_last_as(struct aspath *aspath)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - aspath
    - asno
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1162
    functionDepth: 0
    functionLinenumber: 1162
    functionLinenumberEnd: 1182
    functionName: aspath_loop_check
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int aspath_loop_check(struct aspath *aspath, as_t asno)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - aspath
    - asno
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1187
    functionDepth: 0
    functionLinenumber: 1187
    functionLinenumberEnd: 1208
    functionName: aspath_loop_check_confed
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int aspath_loop_check_confed(struct aspath *aspath, as_t asno)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_AS_IS_PRIVATE
      Src: /src/frr/bgpd/bgp_aspath.c:1225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1212
    functionDepth: 1
    functionLinenumber: 1212
    functionLinenumberEnd: 1231
    functionName: aspath_private_as_check
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - BGP_AS_IS_PRIVATE
    linkageType: ''
    returnType: bool
    signature: bool aspath_private_as_check(struct aspath *aspath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aspath_dup::aspath_dup
      Src: /src/frr/bgpd/bgp_aspath.c:1240,1
    - Dst: segments::segments
      Src: /src/frr/bgpd/bgp_aspath.c:1241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - aspath
    - target_asn
    - our_asn
    argTypes:
    - struct aspath*
    - as_t
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1234
    functionDepth: 6
    functionLinenumber: 1234
    functionLinenumberEnd: 1255
    functionName: aspath_replace_specific_asn
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - segments::segments
    - aspath_dup::aspath_dup
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *aspath_replace_specific_asn(struct aspath *aspath,\n\t\t\t\t\t
      \  as_t target_asn, as_t our_asn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_dup::aspath_dup
      Src: /src/frr/bgpd/bgp_aspath.c:1263,1
    - Dst: segments::segments
      Src: /src/frr/bgpd/bgp_aspath.c:1264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - aspath
    - our_asn
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1258
    functionDepth: 6
    functionLinenumber: 1258
    functionLinenumberEnd: 1277
    functionName: aspath_replace_all_asn
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - segments::segments
    - aspath_dup::aspath_dup
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_replace_all_asn(struct aspath *aspath, as_t our_asn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aspath_dup::aspath_dup
      Src: /src/frr/bgpd/bgp_aspath.c:1286,1
    - Dst: segments::segments
      Src: /src/frr/bgpd/bgp_aspath.c:1287,1
    - Dst: BGP_AS_IS_PRIVATE
      Src: /src/frr/bgpd/bgp_aspath.c:1294,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - aspath
    - asn
    - peer_asn
    argTypes:
    - struct aspath*
    - as_t
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1280
    functionDepth: 6
    functionLinenumber: 1280
    functionLinenumberEnd: 1303
    functionName: aspath_replace_private_asns
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - segments::segments
    - aspath_dup::aspath_dup
    - BGP_AS_IS_PRIVATE
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *aspath_replace_private_asns(struct aspath *aspath,
      as_t asn,\n\t\t\t\t\t   as_t peer_asn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_aspath.c:1317,1
    - Dst: BGP_AS_IS_PRIVATE
      Src: /src/frr/bgpd/bgp_aspath.c:1328,1
    - Dst: assegment_dup
      Src: /src/frr/bgpd/bgp_aspath.c:1339,1
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:1349,1
    - Dst: BGP_AS_IS_PRIVATE
      Src: /src/frr/bgpd/bgp_aspath.c:1353,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - aspath
    - peer_asn
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1306
    functionDepth: 4
    functionLinenumber: 1306
    functionLinenumberEnd: 1374
    functionName: aspath_remove_private_asns
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - assegment_new
    - XCALLOC::XCALLOC
    - assegment_dup
    - BGP_AS_IS_PRIVATE
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_remove_private_asns(struct aspath *aspath, as_t
      peer_asn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1378
    functionDepth: 0
    functionLinenumber: 1378
    functionLinenumberEnd: 1394
    functionName: aspath_confed_check
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_confed_check(struct aspath *aspath)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1398
    functionDepth: 0
    functionLinenumber: 1398
    functionLinenumberEnd: 1409
    functionName: aspath_left_confed_check
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_left_confed_check(struct aspath *aspath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assegment_dup_all::assegment_dup_all
      Src: /src/frr/bgpd/bgp_aspath.c:1419,1
    - Dst: aspath_str_update::aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - as1
    - as2
    argTypes:
    - struct aspath*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1412
    functionDepth: 5
    functionLinenumber: 1412
    functionLinenumberEnd: 1430
    functionName: aspath_merge
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_dup_all::assegment_dup_all
    - aspath_str_update::aspath_str_update
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_merge(struct aspath *as1, struct aspath *as2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assegment_dup_all
      Src: /src/frr/bgpd/bgp_aspath.c:1444,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1445,1
    - Dst: aspath_delete_confed_seq
      Src: /src/frr/bgpd/bgp_aspath.c:1461,1
    - Dst: assegment_dup_all
      Src: /src/frr/bgpd/bgp_aspath.c:1464,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1465,1
    - Dst: aspath_merge
      Src: /src/frr/bgpd/bgp_aspath.c:1471,1
    - Dst: assegment_dup_all
      Src: /src/frr/bgpd/bgp_aspath.c:1487,1
    - Dst: assegment_append_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1494,1
    - Dst: assegment_free
      Src: /src/frr/bgpd/bgp_aspath.c:1505,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1510,1
    - Dst: aspath_merge
      Src: /src/frr/bgpd/bgp_aspath.c:1514,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - as1
    - as2
    argTypes:
    - struct aspath*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1433
    functionDepth: 6
    functionLinenumber: 1433
    functionLinenumberEnd: 1519
    functionName: aspath_prepend
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - aspath_str_update
    - aspath_merge
    - aspath_delete_confed_seq
    - assegment_dup_all
    - assegment_append_asns
    - assegment_free
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_prepend(struct aspath *as1, struct aspath *as2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: aspath_new
      Src: /src/frr/bgpd/bgp_aspath.c:1533,1
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:1566,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1589,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:1597,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 38
    argCount: 2
    argNames:
    - source
    - exclude_list
    argTypes:
    - struct aspath*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1527
    functionDepth: 4
    functionLinenumber: 1527
    functionLinenumberEnd: 1599
    functionName: aspath_filter_exclude
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - aspath_new
    - assegment_new
    - aspath_str_update
    - aspath_free
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *aspath_filter_exclude(struct aspath *source,\n\t\t\t\t
      \    struct aspath *exclude_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assegment_prepend_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1611,1
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:1614,1
    - Dst: assegment_free
      Src: /src/frr/bgpd/bgp_aspath.c:1621,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1627,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - aspath
    - asno
    - type
    - num
    argTypes:
    - struct aspath*
    - as_t
    - uint8_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1602
    functionDepth: 3
    functionLinenumber: 1602
    functionLinenumberEnd: 1629
    functionName: aspath_add_asns
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_new
    - aspath_str_update
    - assegment_free
    - assegment_prepend_asns
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *aspath_add_asns(struct aspath *aspath, as_t asno,\n\t\t\t\t
      \     uint8_t type, unsigned num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_add_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - aspath
    - asno
    - num
    argTypes:
    - struct aspath*
    - as_t
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1632
    functionDepth: 4
    functionLinenumber: 1632
    functionLinenumberEnd: 1635
    functionName: aspath_add_seq_n
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - aspath_add_asns
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_add_seq_n(struct aspath *aspath, as_t asno, unsigned
      num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_add_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aspath
    - asno
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1638
    functionDepth: 4
    functionLinenumber: 1638
    functionLinenumberEnd: 1641
    functionName: aspath_add_seq
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_add_asns
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_add_seq(struct aspath *aspath, as_t asno)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 16
    argCount: 2
    argNames:
    - aspath1
    - aspath2
    argTypes:
    - struct aspath*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1645
    functionDepth: 0
    functionLinenumber: 1645
    functionLinenumberEnd: 1679
    functionName: aspath_cmp_left
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_cmp_left(const struct aspath *aspath1, const struct aspath
      *aspath2)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_aspath.c:1700,1
    - Dst: aspath_count_confeds
      Src: /src/frr/bgpd/bgp_aspath.c:1700,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_aspath.c:1701,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_aspath.c:1704,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_aspath.c:1705,1
    - Dst: aspath_count_hops
      Src: /src/frr/bgpd/bgp_aspath.c:1713,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_aspath.c:1717,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1718,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_aspath.c:1722,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_aspath.c:1723,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_aspath.c:1746,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_aspath.c:1747,1
    - Dst: MIN
      Src: /src/frr/bgpd/bgp_aspath.c:1753,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_aspath.c:1757,1
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:1759,1
    - Dst: assegment_append_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1760,1
    - Dst: aspath_new
      Src: /src/frr/bgpd/bgp_aspath.c:1763,1
    - Dst: aspath_merge
      Src: /src/frr/bgpd/bgp_aspath.c:1776,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_aspath.c:1776,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:1777,1
    - Dst: assegment_normalise
      Src: /src/frr/bgpd/bgp_aspath.c:1778,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1779,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_aspath.c:1781,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_aspath.c:1782,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 2
    argNames:
    - aspath
    - as4path
    argTypes:
    - struct aspath*
    - struct aspath*
    assertStmts:
    - condition: (cpasns <= seg->length)
      pos:
        line_end: 1756
        line_start: 1756
        source_file: /src/frr/bgpd/bgp_aspath.c
    constantsTouched: []
    func_position:
      end: 1786
      start: 1687
    functionDepth: 6
    functionLinenumber: 1687
    functionLinenumberEnd: 1786
    functionName: aspath_reconcile_as4
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - MIN
    - aspath_count_hops
    - aspath_str_update
    - assegment_new
    - flog_warn
    - aspath_dup
    - aspath_merge
    - aspath_free
    - aspath_new
    - aspath_count_confeds
    - zlog_debug
    - assegment_append_asns
    - assegment_normalise
    - BGP_DEBUG
    - assert
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *aspath_reconcile_as4(struct aspath *aspath,\n\t\t\t\t
      \   struct aspath *as4path)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 2
    argNames:
    - aspath1
    - aspath2
    argTypes:
    - struct aspath*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1791
    functionDepth: 0
    functionLinenumber: 1791
    functionLinenumberEnd: 1808
    functionName: aspath_cmp_left_confed
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool aspath_cmp_left_confed(const struct aspath *aspath1,\n\t\t\t
      \   const struct aspath *aspath2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assegment_free
      Src: /src/frr/bgpd/bgp_aspath.c:1842,1
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:1851,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - aspath
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1818
    functionDepth: 3
    functionLinenumber: 1818
    functionLinenumberEnd: 1854
    functionName: aspath_delete_confed_seq
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - aspath_str_update
    - assegment_free
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_delete_confed_seq(struct aspath *aspath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_add_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aspath
    - asno
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1861
      start: 1858
    functionDepth: 4
    functionLinenumber: 1858
    functionLinenumberEnd: 1861
    functionName: aspath_add_confed_seq
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_add_asns
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_add_confed_seq(struct aspath *aspath, as_t asno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assegment_append_asns
      Src: /src/frr/bgpd/bgp_aspath.c:1875,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - as
    - asno
    argTypes:
    - struct aspath*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1876
      start: 1864
    functionDepth: 2
    functionLinenumber: 1864
    functionLinenumberEnd: 1876
    functionName: aspath_as_add
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_append_asns
    linkageType: ''
    returnType: void
    signature: void aspath_as_add(struct aspath *as, as_t asno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assegment_new
      Src: /src/frr/bgpd/bgp_aspath.c:1882,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - as
    - type
    argTypes:
    - struct aspath*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1879
    functionDepth: 3
    functionLinenumber: 1879
    functionLinenumberEnd: 1890
    functionName: aspath_segment_add
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - assegment_new
    linkageType: ''
    returnType: void
    signature: void aspath_segment_add(struct aspath *as, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_parse
      Src: /src/frr/bgpd/bgp_aspath.c:1894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - asnotation
    argTypes:
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1892
    functionDepth: 5
    functionLinenumber: 1892
    functionLinenumberEnd: 1895
    functionName: aspath_empty
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 4
    functionsReached:
    - aspath_parse
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_empty(enum asnotation_mode asnotation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_new
      Src: /src/frr/bgpd/bgp_aspath.c:1901,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_aspath.c:1901,1
    - Dst: aspath_make_str_count
      Src: /src/frr/bgpd/bgp_aspath.c:1902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1897
    functionDepth: 2
    functionLinenumber: 1897
    functionLinenumberEnd: 1904
    functionName: aspath_empty_get
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - bgp_get_asnotation
    - aspath_new
    - aspath_make_str_count
    linkageType: ''
    returnType: struct aspath
    signature: struct aspath *aspath_empty_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1906
    functionDepth: 0
    functionLinenumber: 1906
    functionLinenumberEnd: 1909
    functionName: aspath_count
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long aspath_count(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_aspath.c:1941,1
    - Dst: asn_str2asn_parse
      Src: /src/frr/bgpd/bgp_aspath.c:1976,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 3
    argNames:
    - buf
    - token
    - asno
    argTypes:
    - char*
    - enum as_token*
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1933
    functionDepth: 1
    functionLinenumber: 1933
    functionLinenumberEnd: 1983
    functionName: aspath_gettoken
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - isspace
    - asn_str2asn_parse
    linkageType: ''
    returnType: char
    signature: "char *aspath_gettoken(const char *buf, enum as_token *token,\n\t\t\t\t
      \  unsigned long *asno)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: aspath_new
      Src: /src/frr/bgpd/bgp_aspath.c:1994,1
    - Dst: aspath_gettoken
      Src: /src/frr/bgpd/bgp_aspath.c:2000,1
    - Dst: aspath_segment_add
      Src: /src/frr/bgpd/bgp_aspath.c:2004,1
    - Dst: aspath_as_add
      Src: /src/frr/bgpd/bgp_aspath.c:2007,1
    - Dst: aspath_segment_add
      Src: /src/frr/bgpd/bgp_aspath.c:2011,1
    - Dst: aspath_segment_add
      Src: /src/frr/bgpd/bgp_aspath.c:2020,1
    - Dst: aspath_segment_add
      Src: /src/frr/bgpd/bgp_aspath.c:2029,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:2038,1
    - Dst: aspath_make_str_count
      Src: /src/frr/bgpd/bgp_aspath.c:2043,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 2
    argNames:
    - str
    - asnotation
    argTypes:
    - char*
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 1985
    functionDepth: 4
    functionLinenumber: 1985
    functionLinenumberEnd: 2046
    functionName: aspath_str2aspath
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached:
    - aspath_as_add
    - aspath_segment_add
    - aspath_free
    - aspath_new
    - aspath_make_str_count
    - aspath_gettoken
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *aspath_str2aspath(const char *str,\n\t\t\t\t enum asnotation_mode
      asnotation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aspath_str_update
      Src: /src/frr/bgpd/bgp_aspath.c:2055,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_aspath.c:2057,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 2049
    functionDepth: 3
    functionLinenumber: 2049
    functionLinenumberEnd: 2060
    functionName: aspath_key_make
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 1
    functionsReached:
    - aspath_str_update
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int aspath_key_make(const void *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2063
    functionDepth: 0
    functionLinenumber: 2063
    functionLinenumberEnd: 2087
    functionName: aspath_cmp
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool aspath_cmp(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_aspath.c:2092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2090
    functionDepth: 1
    functionLinenumber: 2090
    functionLinenumberEnd: 2094
    functionName: aspath_init
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    linkageType: ''
    returnType: void
    signature: void aspath_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_aspath.c:2098,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_aspath.c:2101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2102
      start: 2096
    functionDepth: 1
    functionLinenumber: 2096
    functionLinenumberEnd: 2102
    functionName: aspath_finish
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - stream_free
    linkageType: ''
    returnType: void
    signature: void aspath_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - as
    argTypes:
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2108
      start: 2105
    functionDepth: 0
    functionLinenumber: 2105
    functionLinenumberEnd: 2108
    functionName: aspath_print
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *aspath_print(struct aspath *as)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_aspath.c:2116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - as
    argTypes:
    - struct vty*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2114
    functionDepth: 1
    functionLinenumber: 2114
    functionLinenumberEnd: 2117
    functionName: aspath_print_vty
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 5
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void aspath_print_vty(struct vty *vty, struct aspath *as)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_aspath.c:2126,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_aspath.c:2127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bucket
    - vty
    argTypes:
    - struct hash_bucket*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2128
      start: 2119
    functionDepth: 1
    functionLinenumber: 2119
    functionLinenumberEnd: 2128
    functionName: aspath_show_all_iterator
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void aspath_show_all_iterator(struct hash_bucket *bucket,\n\t\t\t\t
      \    struct vty *vty)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_aspath.c:2134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 2132
    functionDepth: 1
    functionLinenumber: 2132
    functionLinenumberEnd: 2137
    functionName: aspath_print_all_vty
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void aspath_print_all_vty(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_aspath.c:2142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aggregate
    - aspath
    argTypes:
    - struct bgp_aggregate*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2139
    functionDepth: 1
    functionLinenumber: 2139
    functionLinenumberEnd: 2143
    functionName: bgp_aggr_aspath_lookup
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct aspath
    signature: "struct aspath *bgp_aggr_aspath_lookup(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \    struct aspath *aspath)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_aspath.c:2150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2152
      start: 2145
    functionDepth: 6
    functionLinenumber: 2145
    functionLinenumberEnd: 2152
    functionName: bgp_aggr_aspath_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_dup
    linkageType: ''
    returnType: void
    signature: void *bgp_aggr_aspath_hash_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aspath_aggregate
      Src: /src/frr/bgpd/bgp_aspath.c:2161,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:2162,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_aspath.c:2165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2154
    functionDepth: 6
    functionLinenumber: 2154
    functionLinenumberEnd: 2167
    functionName: bgp_aggr_aspath_prepare
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_dup
    - aspath_free
    - aspath_aggregate
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_aspath_prepare(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:2173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2169
    functionDepth: 4
    functionLinenumber: 2169
    functionLinenumberEnd: 2174
    functionName: bgp_aggr_aspath_remove
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 0
    functionsReached:
    - aspath_free
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_aspath_remove(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_compute_aggregate_aspath_hash
      Src: /src/frr/bgpd/bgp_aspath.c:2179,1
    - Dst: bgp_compute_aggregate_aspath_val
      Src: /src/frr/bgpd/bgp_aspath.c:2181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - aggregate
    - aspath
    argTypes:
    - struct bgp_aggregate*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2176
    functionDepth: 1
    functionLinenumber: 2176
    functionLinenumberEnd: 2183
    functionName: bgp_compute_aggregate_aspath
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - bgp_compute_aggregate_aspath_val
    - bgp_compute_aggregate_aspath_hash
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_aspath(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \ struct aspath *aspath)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_aspath.c:2196,1
    - Dst: bgp_aggr_aspath_lookup
      Src: /src/frr/bgpd/bgp_aspath.c:2200,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_aspath.c:2204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - aggregate
    - aspath
    argTypes:
    - struct bgp_aggregate*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2185
    functionDepth: 2
    functionLinenumber: 2185
    functionLinenumberEnd: 2211
    functionName: bgp_compute_aggregate_aspath_hash
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached:
    - hash_create
    - hash_get
    - bgp_aggr_aspath_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_aspath_hash(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \      struct aspath *aspath)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:2220,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_aspath.c:2225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - aggregate
    argTypes:
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2229
      start: 2213
    functionDepth: 4
    functionLinenumber: 2213
    functionLinenumberEnd: 2229
    functionName: bgp_compute_aggregate_aspath_val
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 3
    functionsReached:
    - hash_iterate
    - aspath_free
    linkageType: ''
    returnType: void
    signature: void bgp_compute_aggregate_aspath_val(struct bgp_aggregate *aggregate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_aspath_lookup
      Src: /src/frr/bgpd/bgp_aspath.c:2244,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_aspath.c:2249,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:2251,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:2256,1
    - Dst: bgp_compute_aggregate_aspath_val
      Src: /src/frr/bgpd/bgp_aspath.c:2259,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - aggregate
    - aspath
    argTypes:
    - struct bgp_aggregate*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2262
      start: 2231
    functionDepth: 5
    functionLinenumber: 2231
    functionLinenumberEnd: 2262
    functionName: bgp_remove_aspath_from_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - bgp_compute_aggregate_aspath_val
    - hash_release
    - aspath_free
    - bgp_aggr_aspath_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_aspath_from_aggregate(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \     struct aspath *aspath)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_aspath_lookup
      Src: /src/frr/bgpd/bgp_aspath.c:2277,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_aspath.c:2282,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_aspath.c:2284,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - aggregate
    - aspath
    argTypes:
    - struct bgp_aggregate*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2264
    functionDepth: 4
    functionLinenumber: 2264
    functionLinenumberEnd: 2288
    functionName: bgp_remove_aspath_from_aggregate_hash
    functionSourceFile: /src/frr/bgpd/bgp_aspath.c
    functionUses: 2
    functionsReached:
    - hash_release
    - aspath_free
    - bgp_aggr_aspath_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_aspath_from_aggregate_hash(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \  struct aspath *aspath)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:40,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:41,1
    - Dst: bfd_sess_vrf
      Src: /src/frr/bgpd/bgp_bfd.c:43,1
    - Dst: bfd_sess_vrf_id
      Src: /src/frr/bgpd/bgp_bfd.c:43,1
    - Dst: bfd_get_status_str
      Src: /src/frr/bgpd/bgp_bfd.c:44,1
    - Dst: bfd_get_status_str
      Src: /src/frr/bgpd/bgp_bfd.c:45,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:48,1
    - Dst: bfd_sess_cbit
      Src: /src/frr/bgpd/bgp_bfd.c:49,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:50,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:51,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgp_bfd.c:59,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_bfd.c:60,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_bfd.c:63,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_bfd.c:67,1
    - Dst: BGP_PEER_START_SUPPRESSED
      Src: /src/frr/bgpd/bgp_bfd.c:68,1
    - Dst: bgp_fsm_nht_update
      Src: /src/frr/bgpd/bgp_bfd.c:69,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_bfd.c:70,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 3
    argNames:
    - bsp
    - bss
    - arg
    argTypes:
    - struct bfd_session_params*
    - struct bfd_session_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 73
    functionName: bfd_session_status_update
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_sess_vrf
    - bfd_sess_cbit
    - BGP_EVENT_ADD
    - peer_established
    - bfd_get_status_str
    - bgp_fsm_nht_update
    - CHECK_FLAG
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bfd_sess_vrf_id
    - zlog_debug
    - bgp_notify_send
    - BGP_PEER_START_SUPPRESSED
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void bfd_session_status_update(struct bfd_session_params *bsp,\n\t\t\t\t
      \     const struct bfd_session_status *bss,\n\t\t\t\t      void *arg)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:82,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bfd.c:83,1
    - Dst: bgp_peer_config_apply
      Src: /src/frr/bgpd/bgp_bfd.c:84,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/bgpd/bgp_bfd.c:90,1
    - Dst: bfd_sess_set_cbit
      Src: /src/frr/bgpd/bgp_bfd.c:94,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/bgpd/bgp_bfd.c:95,1
    - Dst: bfd_sess_install
      Src: /src/frr/bgpd/bgp_bfd.c:97,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/bgpd/bgp_bfd.c:119,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/bgpd/bgp_bfd.c:122,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/bgpd/bgp_bfd.c:129,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/bgpd/bgp_bfd.c:134,1
    - Dst: bfd_sess_install
      Src: /src/frr/bgpd/bgp_bfd.c:139,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:154,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:158,1
    - Dst: bfd_sess_addresses
      Src: /src/frr/bgpd/bgp_bfd.c:164,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:168,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:169,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:176,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_bfd.c:182,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_bfd.c:183,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:184,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:185,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:192,1
    - Dst: bfd_sess_interface
      Src: /src/frr/bgpd/bgp_bfd.c:201,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:202,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:203,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/bgpd/bgp_bfd.c:206,1
    - Dst: PEER_IS_MULTIHOP
      Src: /src/frr/bgpd/bgp_bfd.c:218,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:218,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:219,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:220,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:221,1
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:223,1
    - Dst: PEER_IS_MULTIHOP
      Src: /src/frr/bgpd/bgp_bfd.c:226,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:226,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:227,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:228,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:229,1
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:231,1
    - Dst: bfd_sess_vrf_id
      Src: /src/frr/bgpd/bgp_bfd.c:236,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:237,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:238,1
    - Dst: bfd_sess_vrf
      Src: /src/frr/bgpd/bgp_bfd.c:240,1
    - Dst: bfd_sess_vrf_id
      Src: /src/frr/bgpd/bgp_bfd.c:240,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_bfd.c:241,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/bgpd/bgp_bfd.c:243,1
    - Dst: bfd_sess_install
      Src: /src/frr/bgpd/bgp_bfd.c:248,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:267,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bfd.c:279,1
    - Dst: bfd_sess_new
      Src: /src/frr/bgpd/bgp_bfd.c:283,1
    - Dst: bgp_peer_bfd_reset
      Src: /src/frr/bgpd/bgp_bfd.c:284,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:288,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:293,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/bgpd/bgp_bfd.c:298,1
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:299,1
    - Dst: PEER_IS_MULTIHOP
      Src: /src/frr/bgpd/bgp_bfd.c:300,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/bgpd/bgp_bfd.c:303,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:310,1
    - Dst: bgp_peer_bfd_reset
      Src: /src/frr/bgpd/bgp_bfd.c:318,1
    - Dst: bgp_peer_config_apply
      Src: /src/frr/bgpd/bgp_bfd.c:319,1
    - Dst: bfd_sess_free
      Src: /src/frr/bgpd/bgp_bfd.c:324,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bfd.c:326,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:335,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:335,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bfd.c:341,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bfd.c:348,1
    - Dst: bgp_peer_configure_bfd
      Src: /src/frr/bgpd/bgp_bfd.c:349,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:358,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:358,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_bfd.c:361,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bfd.c:365,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bfd.c:368,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 107
    argCount: 2
    argNames:
    - p
    - pg
    argTypes:
    - struct peer*
    - struct peer_group*
    assertStmts:
    - condition: (CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 334
        line_start: 334
        source_file: /src/frr/bgpd/bgp_bfd.c
    - condition: (!CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/frr/bgpd/bgp_bfd.c
    - condition: (!CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/frr/bgpd/bgp_bfd.c
    - condition: (CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 357
        line_start: 357
        source_file: /src/frr/bgpd/bgp_bfd.c
    constantsTouched: []
    func_position:
      end: 374
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 374
    functionName: bgp_peer_config_apply
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_sess_vrf
    - bfd_sess_new
    - bgp_peer_configure_bfd
    - bfd_sess_set_ipv4_addrs
    - memcmp
    - bgp_peer_config_apply
    - BGP_DEBUG
    - bgp_peer_bfd_reset
    - bfd_sess_set_ipv6_addrs
    - PEER_IS_MULTIHOP
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - bfd_sess_set_cbit
    - bfd_sess_set_timers
    - if
    - bfd_sess_set_vrf
    - assert
    - bfd_sess_install
    - bfd_sess_vrf_id
    - bfd_sess_interface
    - XFREE
    - bfd_sess_set_interface
    - bfd_sess_free
    - bfd_sess_set_profile
    - vrf_id_to_name
    - bfd_sess_hop_count
    - CHECK_FLAG
    - bfd_sess_set_hop_count
    - bfd_sess_addresses
    linkageType: ''
    returnType: void
    signature: void bgp_peer_config_apply(struct peer *p, struct peer_group *pg)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:154,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:158,1
    - Dst: bfd_sess_addresses
      Src: /src/frr/bgpd/bgp_bfd.c:164,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:168,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:169,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:176,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_bfd.c:182,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_bfd.c:183,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:184,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:185,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:192,1
    - Dst: bfd_sess_interface
      Src: /src/frr/bgpd/bgp_bfd.c:201,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:202,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:203,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/bgpd/bgp_bfd.c:206,1
    - Dst: PEER_IS_MULTIHOP
      Src: /src/frr/bgpd/bgp_bfd.c:218,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:218,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:219,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:220,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:221,1
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:223,1
    - Dst: PEER_IS_MULTIHOP
      Src: /src/frr/bgpd/bgp_bfd.c:226,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:226,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:227,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:228,1
    - Dst: bfd_sess_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:229,1
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:231,1
    - Dst: bfd_sess_vrf_id
      Src: /src/frr/bgpd/bgp_bfd.c:236,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_bfd.c:237,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_bfd.c:238,1
    - Dst: bfd_sess_vrf
      Src: /src/frr/bgpd/bgp_bfd.c:240,1
    - Dst: bfd_sess_vrf_id
      Src: /src/frr/bgpd/bgp_bfd.c:240,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_bfd.c:241,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/bgpd/bgp_bfd.c:243,1
    - Dst: bfd_sess_install
      Src: /src/frr/bgpd/bgp_bfd.c:248,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 48
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 249
    functionName: bgp_peer_bfd_update_source
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 0
    functionsReached:
    - PEER_IS_MULTIHOP
    - bfd_sess_vrf
    - vrf_id_to_name
    - bfd_sess_hop_count
    - CHECK_FLAG
    - bfd_sess_install
    - bfd_sess_set_hop_count
    - bfd_sess_addresses
    - bfd_sess_set_ipv4_addrs
    - memcmp
    - bfd_sess_vrf_id
    - zlog_debug
    - bfd_sess_interface
    - BGP_DEBUG
    - bfd_sess_set_interface
    - bfd_sess_set_vrf
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: void bgp_peer_bfd_update_source(struct peer *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 262
    functionName: bgp_peer_bfd_reset
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_peer_bfd_reset(struct peer *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:267,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bfd.c:279,1
    - Dst: bfd_sess_new
      Src: /src/frr/bgpd/bgp_bfd.c:283,1
    - Dst: bgp_peer_bfd_reset
      Src: /src/frr/bgpd/bgp_bfd.c:284,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:288,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/bgpd/bgp_bfd.c:293,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/bgpd/bgp_bfd.c:298,1
    - Dst: bfd_sess_set_hop_count
      Src: /src/frr/bgpd/bgp_bfd.c:299,1
    - Dst: PEER_IS_MULTIHOP
      Src: /src/frr/bgpd/bgp_bfd.c:300,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/bgpd/bgp_bfd.c:303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - p
    - manual
    argTypes:
    - struct peer*
    - bool
    assertStmts:
    - condition: (!CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/frr/bgpd/bgp_bfd.c
    constantsTouched: []
    func_position:
      end: 305
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 305
    functionName: bgp_peer_configure_bfd
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 1
    functionsReached:
    - PEER_IS_MULTIHOP
    - bfd_sess_set_vrf
    - bfd_sess_new
    - XCALLOC
    - CHECK_FLAG
    - bfd_sess_set_hop_count
    - bfd_sess_set_ipv4_addrs
    - bgp_peer_bfd_reset
    - bfd_sess_set_interface
    - assert
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: void bgp_peer_configure_bfd(struct peer *p, bool manual)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:310,1
    - Dst: bgp_peer_bfd_reset
      Src: /src/frr/bgpd/bgp_bfd.c:318,1
    - Dst: bgp_peer_config_apply
      Src: /src/frr/bgpd/bgp_bfd.c:319,1
    - Dst: bfd_sess_free
      Src: /src/frr/bgpd/bgp_bfd.c:324,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bfd.c:326,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (!CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/frr/bgpd/bgp_bfd.c
    constantsTouched: []
    func_position:
      end: 327
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 327
    functionName: bgp_peer_remove_bfd
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 0
    functionsReached:
    - assert
    - CHECK_FLAG
    - bgp_peer_config_apply
    - XFREE
    - bgp_peer_bfd_reset
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: void bgp_peer_remove_bfd(struct peer *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:335,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:335,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bfd.c:341,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bfd.c:348,1
    - Dst: bgp_peer_configure_bfd
      Src: /src/frr/bgpd/bgp_bfd.c:349,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_bfd.c:358,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:358,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_bfd.c:361,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bfd.c:365,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bfd.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 334
        line_start: 334
        source_file: /src/frr/bgpd/bgp_bfd.c
    - condition: (CHECK_FLAG(p->sflags, PEER_STATUS_GROUP))
      pos:
        line_end: 357
        line_start: 357
        source_file: /src/frr/bgpd/bgp_bfd.c
    constantsTouched: []
    func_position:
      end: 373
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 373
    functionName: bgp_group_configure_bfd
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - bgp_peer_configure_bfd
    - XFREE
    - if
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_group_configure_bfd(struct peer *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:378,1
    - Dst: bgp_group_remove_bfd
      Src: /src/frr/bgpd/bgp_bfd.c:379,1
    - Dst: bgp_peer_remove_bfd
      Src: /src/frr/bgpd/bgp_bfd.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 3
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: bgp_peer_remove_bfd_config
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 0
    functionsReached:
    - bgp_peer_remove_bfd
    - CHECK_FLAG
    - bgp_group_remove_bfd
    linkageType: ''
    returnType: void
    signature: void bgp_peer_remove_bfd_config(struct peer *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:394,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bfd.c:396,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bfd.c:398,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bfd.c:400,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bfd.c:407,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bfd.c:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - peer
    - addr
    argTypes:
    - struct vty*
    - struct peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 413
    functionName: bgp_bfd_peer_config_write
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_bfd_peer_config_write(struct vty *vty, const struct peer
      *peer,\n\t\t\t       const char *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_show
      Src: /src/frr/bgpd/bgp_bfd.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - peer
    - json_neigh
    argTypes:
    - struct vty*
    - struct peer*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 422
    functionName: bgp_bfd_show_info
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_sess_show
    linkageType: ''
    returnType: void
    signature: "void bgp_bfd_show_info(struct vty *vty, const struct peer *peer,\n\t\t
      \      json_object *json_neigh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_init
      Src: /src/frr/bgpd/bgp_bfd.c:615,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bfd.c:618,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bfd.c:619,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bfd.c:620,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bfd.c:621,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bfd.c:624,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bfd.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 627
    functionName: bgp_bfd_init
    functionSourceFile: /src/frr/bgpd/bgp_bfd.c
    functionUses: 0
    functionsReached:
    - install_element
    - bfd_protocol_integration_init
    linkageType: ''
    returnType: void
    signature: void bgp_bfd_init(struct event_loop *tm)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: bgp_flowspec_ip_address
      Src: /src/frr/bgpd/bgp_flowspec.c:36,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec.c:45,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec.c:55,1
    - Dst: bgp_flowspec_bitmask_decode
      Src: /src/frr/bgpd/bgp_flowspec.c:61,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec.c:68,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 3
    argNames:
    - nlri_content
    - len
    - afi
    argTypes:
    - uint8_t*
    - uint32_t
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 82
    functionName: bgp_fs_nlri_validate
    functionSourceFile: /src/frr/bgpd/bgp_flowspec.c
    functionUses: 0
    functionsReached:
    - bgp_flowspec_op_decode
    - bgp_flowspec_ip_address
    - bgp_flowspec_bitmask_decode
    linkageType: ''
    returnType: int
    signature: "int bgp_fs_nlri_validate(uint8_t *nlri_content, uint32_t len,\n\t\t\t\tafi_t
      afi)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec.c:109,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_flowspec.c:117,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec.c:131,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec.c:139,1
    - Dst: bgp_fs_nlri_validate
      Src: /src/frr/bgpd/bgp_flowspec.c:144,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_flowspec.c:145,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_flowspec.c:154,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_flowspec.c:155,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_flowspec.c:156,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_flowspec.c:159,1
    - Dst: bgp_fs_nlri_get_string
      Src: /src/frr/bgpd/bgp_flowspec.c:165,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec.c:171,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_flowspec.c:173,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_flowspec.c:174,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_flowspec.c:175,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec.c:177,1
    - Dst: ecommunity_strfree
      Src: /src/frr/bgpd/bgp_flowspec.c:182,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec.c:184,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_flowspec.c:187,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_flowspec.c:189,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_flowspec.c:193,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_flowspec.c:197,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_flowspec.c:201,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 60
    argCount: 4
    argNames:
    - peer
    - attr
    - packet
    - withdraw
    argTypes:
    - struct peer*
    - struct attr*
    - struct bgp_nlri*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 84
    functionDepth: 15
    functionLinenumber: 84
    functionLinenumberEnd: 204
    functionName: bgp_nlri_parse_flowspec
    functionSourceFile: /src/frr/bgpd/bgp_flowspec.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - ecommunity_strfree
    - memset
    - XCALLOC
    - snprintf
    - ecommunity_ecom2str
    - afi2family
    - bgp_attr_get_ecommunity
    - afi2str
    - flog_err
    - bgp_withdraw
    - bgp_fs_nlri_validate
    - XFREE
    - bgp_update
    - BGP_DEBUG
    - memcpy
    - bgp_fs_nlri_get_string
    linkageType: ''
    returnType: int
    signature: "int bgp_nlri_parse_flowspec(struct peer *peer, struct attr *attr,\n\t\t\t
      \   struct bgp_nlri *packet, bool withdraw)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: bpacket_alloc
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct bpacket
    signature: struct bpacket *bpacket_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:65,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - struct bpacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: bpacket_free
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - stream_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bpacket_free(struct bpacket *pkt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_INIT
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: bpacket_queue_init
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 1
    functionsReached:
    - TAILQ_INIT
    linkageType: ''
    returnType: void
    signature: void bpacket_queue_init(struct bpacket_queue *q)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:88,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:89,1
    - Dst: bpacket_queue_last
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:91,1
    - Dst: TAILQ_INSERT_AFTER
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - q
    - pkt
    argTypes:
    - struct bpacket_queue*
    - struct bpacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 97
    functionName: bpacket_queue_add_packet
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - TAILQ_EMPTY
    - bpacket_queue_last
    - TAILQ_INSERT_AFTER
    - TAILQ_INSERT_TAIL
    linkageType: ''
    returnType: void
    signature: "void bpacket_queue_add_packet(struct bpacket_queue *q,\n\t\t\t\t     struct
      bpacket *pkt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_alloc
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:113,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:114,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:118,1
    - Dst: bpacket_attr_vec_arr_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:121,1
    - Dst: bpacket_queue_add_packet
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:122,1
    - Dst: bpacket_queue_last
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:130,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:131,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:134,1
    - Dst: bpacket_attr_vec_arr_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:137,1
    - Dst: bpacket_queue_add_packet
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - q
    - s
    - vecarrp
    argTypes:
    - struct bpacket_queue*
    - struct stream*
    - struct bpacket_attr_vec_arr*
    assertStmts:
    - condition: (last_pkt->buffer == NULL)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/bgpd/bgp_updgrp_packet.c
    constantsTouched: []
    func_position:
      end: 144
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 144
    functionName: bpacket_queue_add
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 2
    functionsReached:
    - assert
    - bpacket_queue_add_packet
    - bpacket_queue_last
    - bpacket_alloc
    - bpacket_attr_vec_arr_reset
    - TAILQ_EMPTY
    - memcpy
    linkageType: ''
    returnType: struct bpacket
    signature: "struct bpacket *bpacket_queue_add(struct bpacket_queue *q, struct
      stream *s,\n\t\t\t\t  struct bpacket_attr_vec_arr *vecarrp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FIRST
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: bpacket_queue_first
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 1
    functionsReached:
    - TAILQ_FIRST
    linkageType: ''
    returnType: struct bpacket
    signature: struct bpacket *bpacket_queue_first(struct bpacket_queue *q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_LAST
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: bpacket_queue_last
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 4
    functionsReached:
    - TAILQ_LAST
    linkageType: ''
    returnType: struct bpacket
    signature: struct bpacket *bpacket_queue_last(struct bpacket_queue *q)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_first
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:160,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 166
    functionName: bpacket_queue_remove
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - bpacket_queue_first
    - TAILQ_REMOVE
    linkageType: ''
    returnType: struct bpacket
    signature: struct bpacket *bpacket_queue_remove(struct bpacket_queue *q)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: bpacket_queue_length
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bpacket_queue_length(struct bpacket_queue *q)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: bpacket_queue_hwm_length
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bpacket_queue_hwm_length(struct bpacket_queue *q)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - q
    argTypes:
    - struct bgp*
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 183
    functionName: bpacket_queue_is_full
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bpacket_queue_is_full(struct bgp *bgp, struct bpacket_queue *q)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - pkt
    - paf
    argTypes:
    - struct bpacket*
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 192
    functionName: bpacket_add_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 1
    functionsReached:
    - LIST_INSERT_HEAD
    linkageType: ''
    returnType: void
    signature: void bpacket_add_peer(struct bpacket *pkt, struct peer_af *paf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_remove
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:201,1
    - Dst: bpacket_free
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 204
    functionName: bpacket_queue_cleanup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 1
    functionsReached:
    - bpacket_queue_remove
    - bpacket_free
    linkageType: ''
    returnType: void
    signature: void bpacket_queue_cleanup(struct bpacket_queue *q)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_first
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:222,1
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:232,1
    - Dst: bpacket_queue_remove
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:235,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:236,1
    - Dst: bpacket_free
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:237,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct bpacket_queue*
    assertStmts:
    - condition: (pkt == removed_pkt)
      pos:
        line_end: 235
        line_start: 235
        source_file: /src/frr/bgpd/bgp_updgrp_packet.c
    constantsTouched: []
    func_position:
      end: 243
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 243
    functionName: bpacket_queue_compact
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - bpacket_free
    - bpacket_queue_remove
    - LIST_EMPTY
    - bpacket_queue_first
    - assert
    linkageType: ''
    returnType: int
    signature: int bpacket_queue_compact(struct bpacket_queue *q)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LIST_REMOVE
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:255,1
    - Dst: TAILQ_NEXT
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:256,1
    - Dst: bpacket_add_peer
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:257,1
    - Dst: bpacket_queue_compact
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:259,1
    - Dst: PAF_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:259,1
    - Dst: update_subgroup_check_merge
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - paf
    argTypes:
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 245
    functionDepth: 8
    functionLinenumber: 245
    functionLinenumberEnd: 267
    functionName: bpacket_queue_advance_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - bpacket_add_peer
    - PAF_PKTQ
    - bpacket_queue_compact
    - TAILQ_NEXT
    - LIST_REMOVE
    - update_subgroup_check_merge
    linkageType: ''
    returnType: void
    signature: void bpacket_queue_advance_peer(struct peer_af *paf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PAF_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:279,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:280,1
    - Dst: LIST_REMOVE
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:282,1
    - Dst: bpacket_queue_compact
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - paf
    argTypes:
    - struct peer_af*
    assertStmts:
    - condition: (q)
      pos:
        line_end: 279
        line_start: 279
        source_file: /src/frr/bgpd/bgp_updgrp_packet.c
    constantsTouched: []
    func_position:
      end: 286
      start: 275
    functionDepth: 3
    functionLinenumber: 275
    functionLinenumberEnd: 286
    functionName: bpacket_queue_remove_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 1
    functionsReached:
    - bpacket_queue_compact
    - LIST_REMOVE
    - PAF_PKTQ
    - assert
    linkageType: ''
    returnType: void
    signature: void bpacket_queue_remove_peer(struct peer_af *paf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PAF_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:299,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:300,1
    - Dst: TAILQ_LAST
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - paf
    argTypes:
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 309
    functionName: bpacket_queue_virtual_length
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 1
    functionsReached:
    - TAILQ_EMPTY
    - PAF_PKTQ
    - TAILQ_LAST
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bpacket_queue_virtual_length(struct peer_af *paf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_first
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:319,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:321,1
    - Dst: LIST_FOREACH
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:324,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:325,1
    - Dst: bpacket_next
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - q
    - vty
    argTypes:
    - struct bpacket_queue*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 330
    functionName: bpacket_queue_show_vty
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 2
    functionsReached:
    - bpacket_next
    - bpacket_queue_first
    - LIST_FOREACH
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bpacket_queue_show_vty(struct bpacket_queue *q, struct vty *vty)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: stream_dup
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:340,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:341,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:345,1
    - Dst: stream_getc_from
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:352,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:355,1
    - Dst: BGP_NEXTHOP_AFI_FROM_NHLEN
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:358,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:368,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:370,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:381,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:385,1
    - Dst: stream_get_from
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:389,1
    - Dst: ROUTE_MAP_OUT
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:411,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:412,1
    - Dst: bgp_multiaccess_check_v4
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:422,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:423,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:425,1
    - Dst: stream_put_in_addr_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:435,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:437,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:438,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:440,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:441,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:456,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:461,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:485,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:489,1
    - Dst: stream_get_from
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:493,1
    - Dst: ROUTE_MAP_OUT
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:504,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:510,1
    - Dst: bgp_multiaccess_check_v6
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:514,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:515,1
    - Dst: peer_af_flag_check
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:517,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:526,1
    - Dst: ipv4_to_ipv4_mapped_ipv6
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:528,1
    - Dst: IS_MAPPED_IPV6
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:533,1
    - Dst: stream_get_from
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:540,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:542,1
    - Dst: stream_put_in6_addr_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:549,1
    - Dst: stream_put_in6_addr_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:551,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:553,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:556,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:559,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:560,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:566,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:569,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:570,1
    - Dst: stream_get_from
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:580,1
    - Dst: stream_put_in_addr_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:590,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:592,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:593,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:595,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:596,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 122
    argCount: 2
    argNames:
    - pkt
    - paf
    argTypes:
    - struct bpacket*
    - struct peer_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 600
    functionName: bpacket_reformat_for_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - PAF_SUBGRP
    - IS_MAPPED_IPV6
    - peer_af_flag_check
    - stream_put_in6_addr_at
    - IN6_IS_ADDR_UNSPECIFIED
    - PAF_PEER
    - flog_warn
    - bgp_debug_update
    - ROUTE_MAP_OUT
    - zlog_debug
    - bgp_multiaccess_check_v6
    - stream_free
    - BGP_NEXTHOP_AFI_FROM_NHLEN
    - peer_cap_enhe
    - stream_get_from
    - ipv4_to_ipv4_mapped_ipv6
    - CHECK_FLAG
    - bgp_multiaccess_check_v4
    - stream_put_in_addr_at
    - stream_getc_from
    - stream_dup
    linkageType: ''
    returnType: struct stream
    signature: "struct stream *bpacket_reformat_for_peer(struct bpacket *pkt,\n\t\t\t\t\t
      struct peer_af *paf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - vecarr
    - pos
    argTypes:
    - struct bpacket_attr_vec_arr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 616
    functionName: bpacket_attr_vec_arr_update
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bpacket_attr_vec_arr_update(struct bpacket_attr_vec_arr *vecarr,\n\t\t\t\t\tsize_t
      pos)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_adv_fifo_first
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:628,1
    - Dst: bgp_adv_fifo_first
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:632,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 637
    functionName: subgroup_packets_to_build
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - bgp_adv_fifo_first
    linkageType: ''
    returnType: bool
    signature: bool subgroup_packets_to_build(struct update_subgroup *subgrp)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_is_full
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:673,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:673,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:673,1
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:676,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:677,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:678,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:680,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:682,1
    - Dst: bpacket_attr_vec_arr_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:684,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:686,1
    - Dst: bgp_adv_fifo_first
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:689,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:693,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:695,1
    - Dst: STREAM_CONCAT_REMAIN
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:700,1
    - Dst: STREAM_SIZE
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:700,1
    - Dst: bgp_packet_mpattr_prefix_size
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:704,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:711,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:721,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:724,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:728,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:729,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:737,1
    - Dst: bgp_packet_attribute
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:741,1
    - Dst: STREAM_CONCAT_REMAIN
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:746,1
    - Dst: STREAM_SIZE
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:746,1
    - Dst: bgp_packet_mpattr_prefix_size
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:749,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:756,1
    - Dst: bgp_advertise_clean_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:763,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:768,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:769,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:770,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:772,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:778,1
    - Dst: stream_put_prefix_addpath
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:779,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:784,1
    - Dst: bgp_adv_label
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:788,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:797,1
    - Dst: bgp_packet_mpattr_start
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:798,1
    - Dst: bgp_packet_mpattr_prefix
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:802,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:810,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:814,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:817,1
    - Dst: afi_int2iana
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:821,1
    - Dst: safi_int2iana
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:822,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:823,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:828,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:829,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:835,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:840,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:847,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:851,1
    - Dst: bgp_advertise_clean_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:852,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:855,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:856,1
    - Dst: bgp_packet_mpattr_end
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:857,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:858,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:862,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:864,1
    - Dst: stream_dupcat
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:865,1
    - Dst: bpacket_attr_vec_arr_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:866,1
    - Dst: stream_dup
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:868,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:869,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:870,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:871,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:875,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:876,1
    - Dst: bpacket_queue_add
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:878,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:878,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:879,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:880,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 107
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts:
    - condition: (adv->dest)
      pos:
        line_end: 692
        line_start: 692
        source_file: /src/frr/bgpd/bgp_updgrp_packet.c
    constantsTouched: []
    func_position:
      end: 884
      start: 640
    functionDepth: 3
    functionLinenumber: 640
    functionLinenumberEnd: 884
    functionName: subgroup_update_packet
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - bgp_advertise_clean_subgroup
    - bgp_attr_unintern
    - bgp_packet_mpattr_prefix
    - SUBGRP_INST
    - SUBGRP_PEER
    - flog_err
    - bgp_packet_mpattr_start
    - stream_reset
    - BGP_DEBUG
    - stream_dupcat
    - bgp_attr_intern
    - bgp_adv_label
    - memset
    - bgp_debug_update
    - bgp_debug_rdpfxpath2str
    - bgp_dest_get_prefix
    - bpacket_queue_add
    - SUBGRP_SAFI
    - stream_putw_at
    - stream_empty
    - bgp_packet_mpattr_prefix_size
    - zlog_debug
    - safi_int2iana
    - bgp_addpath_encode_tx
    - SUBGRP_AFI
    - bgp_packet_attribute
    - stream_get_getp
    - assert
    - peer_cap_enhe
    - stream_put_prefix_addpath
    - SUBGRP_PKTQ
    - bpacket_attr_vec_arr_reset
    - bgp_adv_fifo_first
    - bgp_packet_set_marker
    - iana_afi2str
    - STREAM_CONCAT_REMAIN
    - bpacket_attr_vec_arr_update
    - STREAM_SIZE
    - bgp_dump_attr
    - afi_int2iana
    - bgp_packet_set_size
    - stream_putw
    - stream_get_endp
    - stream_dup
    - iana_safi2str
    - bgp_packet_mpattr_end
    - bpacket_queue_is_full
    linkageType: ''
    returnType: struct bpacket
    signature: struct bpacket *subgroup_update_packet(struct update_subgroup *subgrp)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: bpacket_queue_is_full
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:924,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:924,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:924,1
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:927,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:928,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:929,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:931,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:932,1
    - Dst: bgp_adv_fifo_first
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:935,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:938,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:941,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:945,1
    - Dst: bgp_packet_mpattr_prefix_size
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:948,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:953,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:954,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:955,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:960,1
    - Dst: stream_put_prefix_addpath
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:961,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:965,1
    - Dst: afi_int2iana
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:974,1
    - Dst: safi_int2iana
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:975,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:977,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:980,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:981,1
    - Dst: bgp_packet_mpunreach_start
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:982,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:984,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:986,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:991,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:992,1
    - Dst: bgp_packet_mpunreach_prefix
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:995,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1002,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1005,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1008,1
    - Dst: bgp_adj_out_remove_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1015,1
    - Dst: stream_empty
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1018,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1020,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1021,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1023,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1024,1
    - Dst: bgp_packet_mpunreach_end
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1027,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1030,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1031,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1033,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1034,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1035,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1037,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1037,1
    - Dst: bpacket_queue_add
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1039,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1039,1
    - Dst: stream_dup
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1039,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1041,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 69
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts:
    - condition: (adv->dest)
      pos:
        line_end: 937
        line_start: 937
        source_file: /src/frr/bgpd/bgp_updgrp_packet.c
    constantsTouched: []
    func_position:
      end: 1046
      start: 896
    functionDepth: 3
    functionLinenumber: 896
    functionLinenumberEnd: 1046
    functionName: subgroup_withdraw_packet
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - SUBGRP_INST
    - SUBGRP_PEER
    - stream_reset
    - bgp_debug_update
    - bgp_debug_rdpfxpath2str
    - bpacket_queue_add
    - bgp_dest_get_prefix
    - bgp_packet_mpunreach_prefix
    - SUBGRP_SAFI
    - stream_putw_at
    - stream_empty
    - bgp_packet_mpattr_prefix_size
    - safi_int2iana
    - bgp_packet_mpunreach_start
    - zlog_debug
    - bgp_addpath_encode_tx
    - SUBGRP_AFI
    - bgp_packet_mpunreach_end
    - stream_get_getp
    - assert
    - peer_cap_enhe
    - stream_put_prefix_addpath
    - SUBGRP_PKTQ
    - bgp_packet_set_marker
    - bgp_adv_fifo_first
    - iana_afi2str
    - afi_int2iana
    - bgp_packet_set_size
    - STREAM_WRITEABLE
    - stream_putw
    - stream_get_endp
    - bgp_adj_out_remove_subgroup
    - stream_dup
    - iana_safi2str
    - bpacket_queue_is_full
    linkageType: ''
    returnType: struct bpacket
    signature: struct bpacket *subgroup_withdraw_packet(struct update_subgroup *subgrp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1070,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1071,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1072,1
    - Dst: bpacket_attr_vec_arr_reset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1073,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1074,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1081,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1082,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1086,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1097,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1100,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1106,1
    - Dst: SUBGRP_UPDGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1107,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1111,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1114,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1117,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1120,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1121,1
    - Dst: bgp_packet_attribute
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1122,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1128,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1132,1
    - Dst: stream_put_prefix_addpath
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1133,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1138,1
    - Dst: bpacket_queue_add
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1140,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1140,1
    - Dst: subgroup_trigger_write
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1141,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1143,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1146,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 3
    argNames:
    - subgrp
    - attr
    - from
    argTypes:
    - struct update_subgroup*
    - struct attr*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1048
    functionDepth: 3
    functionLinenumber: 1048
    functionLinenumberEnd: 1148
    functionName: subgroup_default_update_packet
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - SUBGRP_PEER
    - subgroup_trigger_write
    - memset
    - bgp_debug_update
    - snprintf
    - bpacket_queue_add
    - SUBGRP_SAFI
    - stream_putw_at
    - zlog_debug
    - bgp_addpath_encode_tx
    - SUBGRP_UPDGRP
    - SUBGRP_AFI
    - bgp_packet_attribute
    - peer_cap_enhe
    - afi2family
    - stream_put_prefix_addpath
    - SUBGRP_PKTQ
    - bpacket_attr_vec_arr_reset
    - bgp_packet_set_marker
    - bgp_dump_attr
    - stream_new
    - bgp_packet_set_size
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void subgroup_default_update_packet(struct update_subgroup *subgrp,\n\t\t\t\t
      \   struct attr *attr, struct peer *from)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1168,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1169,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1170,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1171,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1173,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1174,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1177,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1186,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1190,1
    - Dst: SUBGRP_UPDGRP
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1192,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1196,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1199,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1202,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1203,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1207,1
    - Dst: stream_put_prefix_addpath
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1208,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1212,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1215,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1218,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1220,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1221,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1222,1
    - Dst: bgp_packet_mpunreach_start
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1223,1
    - Dst: bgp_packet_mpunreach_prefix
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1224,1
    - Dst: bgp_packet_mpunreach_end
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1229,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1232,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1233,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1236,1
    - Dst: bpacket_queue_add
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1238,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1238,1
    - Dst: subgroup_trigger_write
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1239,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1241,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1150
    functionDepth: 3
    functionLinenumber: 1150
    functionLinenumberEnd: 1246
    functionName: subgroup_default_withdraw_packet
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - SUBGRP_PEER
    - subgroup_trigger_write
    - memset
    - bgp_debug_update
    - snprintf
    - bpacket_queue_add
    - bgp_packet_mpunreach_prefix
    - SUBGRP_SAFI
    - stream_putw_at
    - bgp_packet_mpunreach_start
    - zlog_debug
    - bgp_addpath_encode_tx
    - SUBGRP_UPDGRP
    - SUBGRP_AFI
    - bgp_packet_mpunreach_end
    - peer_cap_enhe
    - afi2family
    - stream_put_prefix_addpath
    - SUBGRP_PKTQ
    - UNSET_FLAG
    - bgp_packet_set_marker
    - stream_new
    - bgp_packet_set_size
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    linkageType: ''
    returnType: void
    signature: void subgroup_default_withdraw_packet(struct update_subgroup *subgrp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1253,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1255,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1258,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1259,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1262,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1263,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1266,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1270,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1272,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1275,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1276,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1279,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1281,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1284,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1286,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - vecarr
    - type
    - attr
    argTypes:
    - struct bpacket_attr_vec_arr*
    - enum bpacket_attr_vec_type
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1248
    functionDepth: 1
    functionLinenumber: 1248
    functionLinenumberEnd: 1288
    functionName: bpacket_vec_arr_inherit_attr_flags
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void bpacket_vec_arr_inherit_attr_flags(struct bpacket_attr_vec_arr
      *vecarr,\n\t\t\t\t   enum bpacket_attr_vec_type type,\n\t\t\t\t   struct attr
      *attr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - vecarr
    argTypes:
    - struct bpacket_attr_vec_arr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1293
    functionDepth: 0
    functionLinenumber: 1293
    functionLinenumberEnd: 1306
    functionName: bpacket_attr_vec_arr_reset
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bpacket_attr_vec_arr_reset(struct bpacket_attr_vec_arr *vecarr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1315,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1317,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1318,1
    - Dst: bpacket_vec_arr_inherit_attr_flags
      Src: /src/frr/bgpd/bgp_updgrp_packet.c:1320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - vecarr
    - type
    - s
    - attr
    argTypes:
    - struct bpacket_attr_vec_arr*
    - enum bpacket_attr_vec_type
    - struct stream*
    - struct attr*
    assertStmts:
    - condition: (type < BGP_ATTR_VEC_MAX)
      pos:
        line_end: 1314
        line_start: 1314
        source_file: /src/frr/bgpd/bgp_updgrp_packet.c
    constantsTouched: []
    func_position:
      end: 1321
      start: 1309
    functionDepth: 2
    functionLinenumber: 1309
    functionLinenumberEnd: 1321
    functionName: bpacket_attr_vec_arr_set_vec
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_packet.c
    functionUses: 0
    functionsReached:
    - stream_get_endp
    - SET_FLAG
    - bpacket_vec_arr_inherit_attr_flags
    - assert
    linkageType: ''
    returnType: void
    signature: "void bpacket_attr_vec_arr_set_vec(struct bpacket_attr_vec_arr *vecarr,\n\t\t\t\t
      \ enum bpacket_attr_vec_type type,\n\t\t\t\t  struct stream *s, struct attr
      *attr)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgpd.c:118,1
    - Dst: bgp_socket
      Src: /src/frr/bgpd/bgpd.c:119,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:122,1
    - Dst: bgp_socket
      Src: /src/frr/bgpd/bgpd.c:123,1
    - Dst: return
      Src: /src/frr/bgpd/bgpd.c:127,1
    - Dst: bgp_close
      Src: /src/frr/bgpd/bgpd.c:131,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:139,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:140,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:142,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/bgpd.c:157,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:159,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:160,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:165,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:168,1
    - Dst: bgp_option_set
      Src: /src/frr/bgpd/bgpd.c:172,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:178,1
    - Dst: bgp_option_unset
      Src: /src/frr/bgpd/bgpd.c:186,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:192,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgpd.c:200,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:202,1
    - Dst: bgp_option_norib_set_runtime
      Src: /src/frr/bgpd/bgpd.c:206,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgpd.c:213,1
    - Dst: bgp_option_set
      Src: /src/frr/bgpd/bgpd.c:216,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:218,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:220,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:221,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:227,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgpd.c:227,1
    - Dst: bgp_zebra_withdraw_table_all_subtypes
      Src: /src/frr/bgpd/bgpd.c:230,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:234,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgpd.c:245,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:250,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:252,1
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgpd.c:259,1
    - Dst: bgp_zebra_announce_table_all_subtypes
      Src: /src/frr/bgpd/bgpd.c:262,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:266,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:272,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:277,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:282,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgpd.c:294,1
    - Dst: is_evpn_enabled
      Src: /src/frr/bgpd/bgpd.c:298,1
    - Dst: bgp_evpn_handle_router_id_update
      Src: /src/frr/bgpd/bgpd.c:299,1
    - Dst: vpn_handle_router_id_update
      Src: /src/frr/bgpd/bgpd.c:301,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgpd.c:303,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:306,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgpd.c:307,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:309,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:309,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:311,1
    - Dst: is_evpn_enabled
      Src: /src/frr/bgpd/bgpd.c:317,1
    - Dst: vpn_handle_router_id_update
      Src: /src/frr/bgpd/bgpd.c:320,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:337,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:351,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:352,1
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:360,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgpd.c:369,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:381,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:382,1
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:390,1
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:405,1
    - Dst: zebra_route_notify_send
      Src: /src/frr/bgpd/bgpd.c:429,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:442,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:450,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:461,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:462,1
    - Dst: zebra_route_notify_send
      Src: /src/frr/bgpd/bgpd.c:465,1
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:476,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgpd.c:477,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgpd.c:480,1
    - Dst: bgp_config_set
      Src: /src/frr/bgpd/bgpd.c:481,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:484,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:488,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:488,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:490,1
    - Dst: bgp_cluster_id_unset
      Src: /src/frr/bgpd/bgpd.c:496,1
    - Dst: bgp_config_unset
      Src: /src/frr/bgpd/bgpd.c:505,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:508,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:512,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:512,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:514,1
    - Dst: bgp_timers_set
      Src: /src/frr/bgpd/bgpd.c:521,1
    - Dst: bgp_timers_unset
      Src: /src/frr/bgpd/bgpd.c:532,1
    - Dst: bgp_tcp_keepalive_set
      Src: /src/frr/bgpd/bgpd.c:540,1
    - Dst: bgp_tcp_keepalive_unset
      Src: /src/frr/bgpd/bgpd.c:548,1
    - Dst: bgp_confederation_id_set
      Src: /src/frr/bgpd/bgpd.c:556,1
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:566,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:569,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:570,1
    - Dst: bgp_config_set
      Src: /src/frr/bgpd/bgpd.c:571,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:576,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:577,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:581,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:584,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:584,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:588,1
    - Dst: bgp_session_reset_safe
      Src: /src/frr/bgpd/bgpd.c:592,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:602,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 126
    argCount: 2
    argNames:
    - create
    - bgp
    argTypes:
    - bool
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 612
    functionName: bgp_check_main_socket
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - zebra_route_notify_send
    - bgp_session_reset_safe
    - bgp_config_check
    - IPV4_ADDR_SAME
    - bgp_option_set
    - BGP_DEBUG
    - bgp_config_set
    - bgp_zebra_announce_table_all_subtypes
    - bgp_session_reset
    - BGP_EVENT_ADD
    - bgp_timers_set
    - peer_delete
    - ALL_LIST_ELEMENTS_RO
    - return
    - bgp_fibupd_safi
    - bgp_confederation_id_set
    - bgp_router_id_set
    - zlog_debug
    - bgp_option_norib_set_runtime
    - bgp_socket
    - listgetdata
    - if
    - bgp_notify_send
    - zlog_info
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - UNSET_FLAG
    - vpn_handle_router_id_update
    - bgp_tcp_keepalive_set
    - XFREE
    - bgp_zebra_withdraw_table_all_subtypes
    - bgp_timers_unset
    - XSTRDUP
    - bgp_tcp_keepalive_unset
    - peer_sort
    - bgp_option_check
    - list_isempty
    - CHECK_FLAG
    - bgp_config_unset
    - bgp_close
    - bgp_lookup_by_vrf_id
    - bgp_option_unset
    - SET_FLAG
    - IPV4_ADDR_COPY
    - is_evpn_enabled
    - ALL_LIST_ELEMENTS
    - FOREACH_AFI_SAFI
    - bgp_cluster_id_unset
    - bgp_evpn_handle_router_id_update
    linkageType: ''
    returnType: int
    signature: int bgp_check_main_socket(bool create, struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_fibupd_safi
      Src: /src/frr/bgpd/bgpd.c:259,1
    - Dst: bgp_zebra_announce_table_all_subtypes
      Src: /src/frr/bgpd/bgpd.c:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 253
    functionDepth: 4
    functionLinenumber: 253
    functionLinenumberEnd: 263
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 12
    functionsReached:
    - bgp_fibupd_safi
    - bgp_zebra_announce_table_all_subtypes
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - config
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 273
    functionName: bgp_config_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_config_set(struct bgp *bgp, int config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - config
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: bgp_config_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_config_unset(struct bgp *bgp, int config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - config
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: bgp_config_check
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int bgp_config_check(struct bgp *bgp, int config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgpd.c:294,1
    - Dst: is_evpn_enabled
      Src: /src/frr/bgpd/bgpd.c:298,1
    - Dst: bgp_evpn_handle_router_id_update
      Src: /src/frr/bgpd/bgpd.c:299,1
    - Dst: vpn_handle_router_id_update
      Src: /src/frr/bgpd/bgpd.c:301,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgpd.c:303,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:306,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgpd.c:307,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:309,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:309,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:311,1
    - Dst: is_evpn_enabled
      Src: /src/frr/bgpd/bgpd.c:317,1
    - Dst: vpn_handle_router_id_update
      Src: /src/frr/bgpd/bgpd.c:320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - bgp
    - id
    - is_config
    argTypes:
    - struct bgp*
    - struct in_addr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 323
    functionName: bgp_router_id_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - IPV4_ADDR_SAME
    - IPV4_ADDR_COPY
    - vpn_handle_router_id_update
    - bgp_notify_send
    - is_evpn_enabled
    - if
    - ALL_LIST_ELEMENTS
    - bgp_evpn_handle_router_id_update
    linkageType: ''
    returnType: int
    signature: "int bgp_router_id_set(struct bgp *bgp, const struct in_addr *id,\n\t\t\t
      \    bool is_config)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:337,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:351,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:352,1
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:360,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgpd.c:369,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:381,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:382,1
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:390,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 2
    argNames:
    - vrf_id
    - router_id
    argTypes:
    - vrf_id_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 400
    functionName: bgp_router_id_zebra_bump
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - bgp_lookup_by_vrf_id
    - bgp_router_id_set
    - zlog_debug
    - BGP_DEBUG
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void bgp_router_id_zebra_bump(vrf_id_t vrf_id, const struct prefix
      *router_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bgp
    - id
    argTypes:
    - struct bgp*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 408
    functionName: bgp_router_id_static_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - bgp_router_id_set
    linkageType: ''
    returnType: void
    signature: void bgp_router_id_static_set(struct bgp *bgp, struct in_addr id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zebra_route_notify_send
      Src: /src/frr/bgpd/bgpd.c:429,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - set
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 431
    functionName: bm_wait_for_fib_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - zebra_route_notify_send
    linkageType: ''
    returnType: void
    signature: void bm_wait_for_fib_set(bool set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:442,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:450,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:461,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:462,1
    - Dst: zebra_route_notify_send
      Src: /src/frr/bgpd/bgpd.c:465,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - bgp
    - set
    argTypes:
    - struct bgp*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 468
    functionName: bgp_suppress_fib_pending_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - zebra_route_notify_send
    - SET_FLAG
    - UNSET_FLAG
    - zlog_debug
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void bgp_suppress_fib_pending_set(struct bgp *bgp, bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:476,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgpd.c:477,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgpd.c:480,1
    - Dst: bgp_config_set
      Src: /src/frr/bgpd/bgpd.c:481,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:484,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:488,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:488,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:490,1
    - Dst: bgp_cluster_id_unset
      Src: /src/frr/bgpd/bgpd.c:496,1
    - Dst: bgp_config_unset
      Src: /src/frr/bgpd/bgpd.c:505,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:508,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:512,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:512,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:514,1
    - Dst: bgp_timers_set
      Src: /src/frr/bgpd/bgpd.c:521,1
    - Dst: bgp_timers_unset
      Src: /src/frr/bgpd/bgpd.c:532,1
    - Dst: bgp_tcp_keepalive_set
      Src: /src/frr/bgpd/bgpd.c:540,1
    - Dst: bgp_tcp_keepalive_unset
      Src: /src/frr/bgpd/bgpd.c:548,1
    - Dst: bgp_confederation_id_set
      Src: /src/frr/bgpd/bgpd.c:556,1
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:566,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:569,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:570,1
    - Dst: bgp_config_set
      Src: /src/frr/bgpd/bgpd.c:571,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:576,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:577,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:581,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:584,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:584,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:588,1
    - Dst: bgp_session_reset_safe
      Src: /src/frr/bgpd/bgpd.c:592,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:602,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - bgp
    - cluster_id
    argTypes:
    - struct bgp*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 609
    functionName: bgp_cluster_id_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - bgp_session_reset_safe
    - bgp_config_check
    - IPV4_ADDR_SAME
    - bgp_config_set
    - bgp_timers_set
    - bgp_confederation_id_set
    - bgp_notify_send
    - if
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_tcp_keepalive_set
    - XFREE
    - bgp_timers_unset
    - XSTRDUP
    - bgp_tcp_keepalive_unset
    - peer_sort
    - bgp_config_unset
    - IPV4_ADDR_COPY
    - ALL_LIST_ELEMENTS
    - bgp_cluster_id_unset
    linkageType: ''
    returnType: void
    signature: void bgp_cluster_id_set(struct bgp *bgp, struct in_addr *cluster_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:623,1
    - Dst: bgp_config_unset
      Src: /src/frr/bgpd/bgpd.c:624,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:626,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:628,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:630,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:632,1
    - Dst: bgp_session_reset_safe
      Src: /src/frr/bgpd/bgpd.c:637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 617
    functionDepth: 2
    functionLinenumber: 617
    functionLinenumberEnd: 640
    functionName: bgp_confederation_id_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - bgp_session_reset_safe
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_config_unset
    - XFREE
    - bgp_notify_send
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void bgp_confederation_id_unset(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - bgp
    - as
    argTypes:
    - struct bgp*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 655
    functionName: bgp_confederation_peers_check
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_confederation_peers_check(struct bgp *bgp, as_t as)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgpd.c:666,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgpd.c:669,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:675,1
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:678,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:679,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:682,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:683,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:687,1
    - Dst: bgp_session_reset_safe
      Src: /src/frr/bgpd/bgpd.c:691,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - bgp
    - as
    - as_str
    argTypes:
    - struct bgp*
    - as_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 695
    functionName: bgp_confederation_peers_add
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - bgp_session_reset_safe
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_config_check
    - bgp_confederation_peers_check
    - bgp_notify_send
    - ALL_LIST_ELEMENTS
    - XREALLOC
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void bgp_confederation_peers_add(struct bgp *bgp, as_t as, const char
      *as_str)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgpd.c:708,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:713,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:726,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgpd.c:729,1
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:735,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:736,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:739,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:740,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:744,1
    - Dst: bgp_session_reset_safe
      Src: /src/frr/bgpd/bgpd.c:748,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - bgp
    - as
    argTypes:
    - struct bgp*
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 698
    functionDepth: 2
    functionLinenumber: 698
    functionLinenumberEnd: 752
    functionName: bgp_confederation_peers_remove
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - bgp_session_reset_safe
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_config_check
    - bgp_confederation_peers_check
    - XFREE
    - bgp_notify_send
    - ALL_LIST_ELEMENTS
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: void bgp_confederation_peers_remove(struct bgp *bgp, as_t as)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - local_pref
    argTypes:
    - struct bgp*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 761
    functionName: bgp_default_local_preference_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_default_local_preference_set(struct bgp *bgp, uint32_t local_pref)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 769
    functionName: bgp_default_local_preference_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_default_local_preference_unset(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - queue_size
    argTypes:
    - struct bgp*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 779
    functionName: bgp_default_subgroup_pkt_queue_max_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_default_subgroup_pkt_queue_max_set(struct bgp *bgp,\n\t\t\t\t\t
      \   uint32_t queue_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 787
    functionName: bgp_default_subgroup_pkt_queue_max_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_default_subgroup_pkt_queue_max_unset(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - listen_limit
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 790
    functionDepth: 0
    functionLinenumber: 790
    functionLinenumberEnd: 796
    functionName: bgp_listen_limit_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_listen_limit_set(struct bgp *bgp, int listen_limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 804
    functionName: bgp_listen_limit_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_listen_limit_unset(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: afi_iana2int
      Src: /src/frr/bgpd/bgpd.c:812,1
    - Dst: safi_iana2int
      Src: /src/frr/bgpd/bgpd.c:813,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - pkt_afi
    - pkt_safi
    - afi
    - safi
    argTypes:
    - iana_afi_t
    - iana_safi_t
    - afi_t*
    - safi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 818
    functionName: bgp_map_afi_safi_iana2int
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 8
    functionsReached:
    - afi_iana2int
    - safi_iana2int
    linkageType: ''
    returnType: int
    signature: "int bgp_map_afi_safi_iana2int(iana_afi_t pkt_afi, iana_safi_t pkt_safi,\n\t\t\t
      \     afi_t *afi, safi_t *safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: afi_int2iana
      Src: /src/frr/bgpd/bgpd.c:828,1
    - Dst: safi_int2iana
      Src: /src/frr/bgpd/bgpd.c:829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - afi
    - safi
    - pkt_afi
    - pkt_safi
    argTypes:
    - afi_t
    - safi_t
    - iana_afi_t*
    - iana_safi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 831
    functionName: bgp_map_afi_safi_int2iana
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 9
    functionsReached:
    - safi_int2iana
    - afi_int2iana
    linkageType: ''
    returnType: int
    signature: "int bgp_map_afi_safi_int2iana(afi_t afi, safi_t safi, iana_afi_t *pkt_afi,\n\t\t\t
      \     iana_safi_t *pkt_safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: afindex
      Src: /src/frr/bgpd/bgpd.c:842,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:847,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgpd.c:850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (peer->peer_af_array[afid] == NULL)
      pos:
        line_end: 846
        line_start: 846
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 860
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 860
    functionName: peer_af_create
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - afindex
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct peer_af
    signature: struct peer_af *peer_af_create(struct peer *peer, afi_t afi, safi_t
      safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: afindex
      Src: /src/frr/bgpd/bgpd.c:869,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 874
    functionName: peer_af_find
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 8
    functionsReached:
    - afindex
    linkageType: ''
    returnType: struct peer_af
    signature: struct peer_af *peer_af_find(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: afindex
      Src: /src/frr/bgpd/bgpd.c:885,1
    - Dst: bgp_soft_reconfig_table_task_cancel
      Src: /src/frr/bgpd/bgpd.c:894,1
    - Dst: bgp_stop_announce_route_timer
      Src: /src/frr/bgpd/bgpd.c:896,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgpd.c:898,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:899,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:900,1
    - Dst: update_subgroup_remove_peer
      Src: /src/frr/bgpd/bgpd.c:906,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:912,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 876
    functionDepth: 7
    functionLinenumber: 876
    functionLinenumberEnd: 914
    functionName: peer_af_delete
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - PAF_SUBGRP
    - update_subgroup_remove_peer
    - bgp_soft_reconfig_table_task_cancel
    - zlog_debug
    - afindex
    - bgp_stop_announce_route_timer
    - XFREE
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int peer_af_delete(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: if_cmp_name_func
      Src: /src/frr/bgpd/bgpd.c:933,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:935,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgpd.c:937,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct peer*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 938
    functionName: peer_cmp
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - sockunion_cmp
    - if_cmp_name_func
    - strcmp
    linkageType: ''
    returnType: int
    signature: int peer_cmp(struct peer *p1, struct peer *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_hash
      Src: /src/frr/bgpd/bgpd.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 944
    functionName: peer_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - sockunion_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int peer_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgpd.c:951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:952,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 946
    functionDepth: 1
    functionLinenumber: 946
    functionLinenumberEnd: 954
    functionName: peer_hash_same
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - sockunion_same
    linkageType: ''
    returnType: bool
    signature: bool peer_hash_same(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:961,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:972,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:973,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:974,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:975,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:977,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - peer
    - flag
    argTypes:
    - struct peer*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 956
    functionDepth: 2
    functionLinenumber: 956
    functionLinenumberEnd: 978
    functionName: peer_flag_inherit
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_group_active
    - CHECK_FLAG
    - UNSET_FLAG
    - COND_FLAG
    linkageType: ''
    returnType: void
    signature: void peer_flag_inherit(struct peer *peer, uint64_t flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - flag
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 984
    functionName: peer_af_flag_check
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 4
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: "bool peer_af_flag_check(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\tuint64_t
      flag)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:992,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:996,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1003,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1004,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1005,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:1006,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:1008,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - flag
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 986
    functionDepth: 2
    functionLinenumber: 986
    functionLinenumberEnd: 1009
    functionName: peer_af_flag_inherit
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_group_active
    - CHECK_FLAG
    - UNSET_FLAG
    - COND_FLAG
    linkageType: ''
    returnType: void
    signature: "void peer_af_flag_inherit(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \ uint64_t flag)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1025,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1033,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1041,1
    - Dst: listnode_head
      Src: /src/frr/bgpd/bgpd.c:1042,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1051,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgpd.c:1069,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (bgp)
      pos:
        line_end: 1032
        line_start: 1032
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (peer->group)
      pos:
        line_end: 1040
        line_start: 1040
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 1100
      start: 1012
    functionDepth: 1
    functionLinenumber: 1012
    functionLinenumberEnd: 1100
    functionName: peer_calc_sort
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - bgp_confederation_peers_check
    - assert
    - listnode_head
    linkageType: ''
    returnType: enum bgp_peer_sort
    signature: enum bgp_peer_sort peer_calc_sort(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_calc_sort
      Src: /src/frr/bgpd/bgpd.c:1105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1103
    functionDepth: 2
    functionLinenumber: 1103
    functionLinenumberEnd: 1107
    functionName: peer_sort
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 5
    functionsReached:
    - peer_calc_sort
    linkageType: ''
    returnType: enum bgp_peer_sort
    signature: enum bgp_peer_sort peer_sort(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1112
    functionName: peer_sort_lookup
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum bgp_peer_sort
    signature: enum bgp_peer_sort peer_sort_lookup(struct peer *peer)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1119,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgpd.c:1121,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgpd.c:1126,1
    - Dst: bgp_reads_off
      Src: /src/frr/bgpd/bgpd.c:1127,1
    - Dst: bgp_writes_off
      Src: /src/frr/bgpd/bgpd.c:1128,1
    - Dst: event_cancel_event_ready
      Src: /src/frr/bgpd/bgpd.c:1129,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:1130,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:1131,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1132,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1133,1
    - Dst: BGP_EVENT_FLUSH
      Src: /src/frr/bgpd/bgpd.c:1134,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/bgpd/bgpd.c:1136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1139,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:1140,1
    - Dst: bgp_delete_connected_nexthop
      Src: /src/frr/bgpd/bgpd.c:1141,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgpd.c:1141,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1146,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1149,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1153,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1155,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1156,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1157,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1158,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1159,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:1163,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1167,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1169,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:1170,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/bgpd/bgpd.c:1173,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1175,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1177,1
    - Dst: bgp_peer_remove_bfd_config
      Src: /src/frr/bgpd/bgpd.c:1181,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:1183,1
    - Dst: bgp_addpath_set_peer_type
      Src: /src/frr/bgpd/bgpd.c:1184,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1187,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1189,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:1191,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgpd.c:1193,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:1195,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1197,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (!peer->t_read)
      pos:
        line_end: 1132
        line_start: 1132
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (peer->status == Deleted)
      pos:
        line_end: 1118
        line_start: 1118
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (!peer->t_write)
      pos:
        line_end: 1131
        line_start: 1131
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 1198
      start: 1114
    functionDepth: 4
    functionLinenumber: 1114
    functionLinenumberEnd: 1198
    functionName: peer_free
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 3
    functionsReached:
    - memset
    - bgp_unlock
    - work_queue_free_and_null
    - bgp_reads_off
    - assert
    - bgp_peer_remove_bfd_config
    - stream_free
    - sockunion_free
    - bgp_addpath_set_peer_type
    - bgp_writes_off
    - EVENT_OFF
    - XFREE
    - family2afi
    - event_cancel_event_ready
    - bgp_delete_connected_nexthop
    - QOBJ_UNREG
    - CHECK_FLAG
    - peer_dynamic_neighbor
    - bgp_timer_set
    - pthread_mutex_destroy
    - FOREACH_AFI_SAFI
    - BGP_EVENT_FLUSH
    linkageType: ''
    returnType: void
    signature: void peer_free(struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1146,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1144
    functionDepth: 0
    functionLinenumber: 1144
    functionLinenumberEnd: 1151
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 13
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgpd.c:1203,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - name
    - peer
    argTypes:
    - char*
    - struct peer*
    assertStmts:
    - condition: (peer && (peer->lock >= 0))
      pos:
        line_end: 1203
        line_start: 1203
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 1209
      start: 1201
    functionDepth: 1
    functionLinenumber: 1201
    functionLinenumberEnd: 1209
    functionName: peer_lock_with_caller
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - assert
    - frrtrace
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_lock_with_caller(const char *name, struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgpd.c:1216,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1217,1
    - Dst: peer_free
      Src: /src/frr/bgpd/bgpd.c:1222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - name
    - peer
    argTypes:
    - char*
    - struct peer*
    assertStmts:
    - condition: (peer && (peer->lock > 0))
      pos:
        line_end: 1216
        line_start: 1216
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 1227
      start: 1214
    functionDepth: 5
    functionLinenumber: 1214
    functionLinenumberEnd: 1227
    functionName: peer_unlock_with_caller
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_free
    - assert
    - frrtrace
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_unlock_with_caller(const char *name, struct peer
      *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:1232,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:1233,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:1269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1230
    functionDepth: 1
    functionLinenumber: 1230
    functionLinenumberEnd: 1276
    functionName: bgp_global_gr_init
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: int
    signature: int bgp_global_gr_init(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:1280,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:1281,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:1334,1
    - Dst: bgp_peer_move_to_gr_mode
      Src: /src/frr/bgpd/bgpd.c:1337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1278
    functionDepth: 1
    functionLinenumber: 1278
    functionLinenumberEnd: 1340
    functionName: bgp_peer_gr_init
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - bgp_peer_move_to_gr_mode
    - memcpy
    linkageType: ''
    returnType: int
    signature: int bgp_peer_gr_init(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:1345,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:1346,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1342
    functionDepth: 1
    functionLinenumber: 1342
    functionLinenumberEnd: 1348
    functionName: bgp_srv6_init
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - list_new
    - memset
    linkageType: ''
    returnType: void
    signature: void bgp_srv6_init(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:1353,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:1355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1350
    functionDepth: 0
    functionLinenumber: 1350
    functionLinenumberEnd: 1356
    functionName: bgp_srv6_cleanup
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - list_delete
    linkageType: ''
    returnType: void
    signature: void bgp_srv6_cleanup(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1367,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgpd.c:1370,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgpd.c:1379,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgpd.c:1380,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1388,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1389,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1391,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1394,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1396,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1398,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1405,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1408,1
    - Dst: bgp_peer_gr_init
      Src: /src/frr/bgpd/bgpd.c:1411,1
    - Dst: stream_fifo_new
      Src: /src/frr/bgpd/bgpd.c:1414,1
    - Dst: stream_fifo_new
      Src: /src/frr/bgpd/bgpd.c:1415,1
    - Dst: pthread_mutex_init
      Src: /src/frr/bgpd/bgpd.c:1416,1
    - Dst: ringbuf_new
      Src: /src/frr/bgpd/bgpd.c:1419,1
    - Dst: getservbyname
      Src: /src/frr/bgpd/bgpd.c:1423,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgpd.c:1427,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgpd.c:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts:
    - condition: (bgp)
      pos:
        line_end: 1366
        line_start: 1366
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 1431
      start: 1359
    functionDepth: 2
    functionLinenumber: 1359
    functionLinenumberEnd: 1431
    functionName: peer_new
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - bgp_peer_gr_init
    - stream_fifo_new
    - ringbuf_new
    - getservbyname
    - QOBJ_REG
    - pthread_mutex_init
    - ntohs
    - bgp_lock
    - SET_FLAG
    - peer_lock
    - assert
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_new(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1388,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1389,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1391,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1394,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1396,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1387
    functionDepth: 1
    functionLinenumber: 1387
    functionLinenumberEnd: 1402
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 13
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1445,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:1446,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1459,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:1467,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1486,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1488,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:1504,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:1505,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:1512,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1513,1
    - Dst: sockunion_dup
      Src: /src/frr/bgpd/bgpd.c:1515,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1517,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:1519,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1523,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1527,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1530,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 2
    argNames:
    - peer_dst
    - peer_src
    argTypes:
    - struct peer*
    - struct peer*
    assertStmts:
    - condition: (peer_src)
      pos:
        line_end: 1444
        line_start: 1444
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (peer_dst)
      pos:
        line_end: 1445
        line_start: 1445
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 1533
      start: 1438
    functionDepth: 3
    functionLinenumber: 1438
    functionLinenumberEnd: 1533
    functionName: peer_xfer_config
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - assert
    - sockunion_free
    - peer_af_find
    - peer_af_create
    - sockunion_dup
    - UNSET_FLAG
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void peer_xfer_config(struct peer *peer_dst, struct peer *peer_src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1491
    functionDepth: 0
    functionLinenumber: 1491
    functionLinenumberEnd: 1499
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:1546,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgpd.c:1548,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/bgpd/bgpd.c:1548,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:1549,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgpd.c:1551,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgpd.c:1554,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgpd.c:1557,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgpd.c:1568,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgpd.c:1571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - peer
    - ifp
    argTypes:
    - struct peer*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1535
    functionDepth: 1
    functionLinenumber: 1535
    functionLinenumberEnd: 1577
    functionName: bgp_peer_conf_if_to_su_update_v4
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - htonl
    - ALL_LIST_ELEMENTS_RO
    - CONNECTED_PREFIX
    - if
    - prefix_copy
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int bgp_peer_conf_if_to_su_update_v4(struct peer *peer,\n\t\t\t\t\t
      \   struct interface *ifp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_head
      Src: /src/frr/bgpd/bgpd.c:1594,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:1596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - peer
    - ifp
    argTypes:
    - struct peer*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1587
    functionDepth: 0
    functionLinenumber: 1587
    functionLinenumberEnd: 1606
    functionName: bgp_peer_conf_if_to_su_update_v6
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - memcpy
    - listnode_head
    linkageType: ''
    returnType: bool
    signature: "bool bgp_peer_conf_if_to_su_update_v6(struct peer *peer,\n\t\t\t\t\t
      \    struct interface *ifp)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:1632,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1638,1
    - Dst: bgp_peer_conf_if_to_su_update_v4
      Src: /src/frr/bgpd/bgpd.c:1640,1
    - Dst: bgp_peer_conf_if_to_su_update_v6
      Src: /src/frr/bgpd/bgpd.c:1650,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1660,1
    - Dst: bgp_md5_set
      Src: /src/frr/bgpd/bgpd.c:1662,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1664,1
    - Dst: bgp_md5_unset
      Src: /src/frr/bgpd/bgpd.c:1666,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:1668,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgpd.c:1674,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/bgpd.c:1695,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgpd.c:1705,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgpd.c:1706,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgpd.c:1709,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgpd.c:1711,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1613
    functionDepth: 3
    functionLinenumber: 1613
    functionLinenumberEnd: 1714
    functionName: bgp_peer_conf_if_to_su_update
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - bgp_md5_set
    - if_lookup_by_name
    - memset
    - listnode_add_sort
    - CHECK_FLAG
    - sockunion_same
    - listnode_lookup
    - bgp_peer_conf_if_to_su_update_v4
    - listnode_delete
    - hash_release
    - bgp_peer_conf_if_to_su_update_v6
    - hash_get
    - bgp_md5_unset
    linkageType: ''
    returnType: void
    signature: void bgp_peer_conf_if_to_su_update(struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgpd.c:1721,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgpd.c:1722,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgpd.c:1723,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgpd.c:1729,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgpd.c:1730,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgpd.c:1731,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgpd.c:1733,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1736
      start: 1716
    functionDepth: 3
    functionLinenumber: 1716
    functionLinenumberEnd: 1736
    functionName: bgp_recalculate_afi_safi_bestpaths
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - bgp_table_top
    - bgp_route_next
    - bgp_dest_get_bgp_table_info
    - bgp_process
    linkageType: ''
    returnType: void
    signature: void bgp_recalculate_afi_safi_bestpaths(struct bgp *bgp, afi_t afi,
      safi_t safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_recalculate_afi_safi_bestpaths
      Src: /src/frr/bgpd/bgpd.c:1747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1741
    functionDepth: 4
    functionLinenumber: 1741
    functionLinenumberEnd: 1749
    functionName: bgp_recalculate_all_bestpaths
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - bgp_recalculate_afi_safi_bestpaths
    linkageType: ''
    returnType: void
    signature: void bgp_recalculate_all_bestpaths(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_recalculate_afi_safi_bestpaths
      Src: /src/frr/bgpd/bgpd.c:1747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1746
    functionDepth: 4
    functionLinenumber: 1746
    functionLinenumberEnd: 1748
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 13
    functionsReached:
    - bgp_recalculate_afi_safi_bestpaths
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: peer_new
      Src: /src/frr/bgpd/bgpd.c:1771,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1773,1
    - Dst: bgp_peer_conf_if_to_su_update
      Src: /src/frr/bgpd/bgpd.c:1777,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1778,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1779,1
    - Dst: sockunion2str
      Src: /src/frr/bgpd/bgpd.c:1782,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1783,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1784,1
    - Dst: asn_str2asn
      Src: /src/frr/bgpd/bgpd.c:1789,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1790,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:1795,1
    - Dst: bgp_config_inprocess
      Src: /src/frr/bgpd/bgpd.c:1798,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgpd.c:1801,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgpd.c:1803,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1806,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgpd.c:1808,1
    - Dst: MIN
      Src: /src/frr/bgpd/bgpd.c:1815,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:1818,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgpd.c:1827,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:1843,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:1849,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:1851,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgpd.c:1852,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgpd.c:1854,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgpd.c:1855,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 9
    argNames:
    - su
    - conf_if
    - bgp
    - local_as
    - remote_as
    - as_type
    - group
    - config_node
    - as_str
    argTypes:
    - union sockunion*
    - char*
    - struct bgp*
    - as_t
    - as_t
    - int
    - struct peer_group*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1760
    functionDepth: 4
    functionLinenumber: 1760
    functionLinenumberEnd: 1858
    functionName: peer_create
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - peer_flag_set
    - peer_active
    - MIN
    - bgp_peer_gr_flags_update
    - bgp_peer_conf_if_to_su_update
    - peer_af_create
    - bgp_config_inprocess
    - hash_get
    - listnode_add_sort
    - monotime
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    - peer_new
    - XFREE
    - peer_lock
    - XSTRDUP
    - sockunion2str
    - peer_sort
    - SET_FLAG
    - bgp_timer_set
    - asn_str2asn
    linkageType: ''
    returnType: struct peer
    signature: "struct peer *peer_create(union sockunion *su, const char *conf_if,\n\t\t\t
      struct bgp *bgp, as_t local_as, as_t remote_as,\n\t\t\t int as_type, struct
      peer_group *group,\n\t\t\t bool config_node, const char *as_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:1843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1840
    functionDepth: 3
    functionLinenumber: 1840
    functionLinenumberEnd: 1845
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 13
    functionsReached:
    - peer_af_create
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_new
      Src: /src/frr/bgpd/bgpd.c:1865,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgpd.c:1867,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgpd.c:1868,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgpd.c:1869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1861
    functionDepth: 3
    functionLinenumber: 1861
    functionLinenumberEnd: 1872
    functionName: peer_create_accept
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 3
    functionsReached:
    - peer_lock
    - hash_get
    - peer_new
    - listnode_add_sort
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_create_accept(struct bgp *bgp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:1882,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1883,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:1886,1
    - Dst: peer_as_change
      Src: /src/frr/bgpd/bgpd.c:1894,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:1901,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:1903,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:1906,1
    - Dst: peer_sort_lookup
      Src: /src/frr/bgpd/bgpd.c:1908,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1912,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:1913,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:1915,1
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:1918,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgpd.c:1919,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:1925,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:1927,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1941,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1943,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1945,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1947,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1949,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1951,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1953,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1955,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1957,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1959,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1961,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1963,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:1965,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1877
    functionDepth: 3
    functionLinenumber: 1877
    functionLinenumberEnd: 1968
    functionName: bgp_afi_safi_peer_exists
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_sort
    - ALL_LIST_ELEMENTS_RO
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - CHECK_FLAG
    - bgp_config_check
    - peer_as_change
    - peer_sort_lookup
    - bgp_confederation_peers_check
    - XSTRDUP
    - bgp_notify_send
    - XFREE
    - if
    - UNSET_FLAG
    - bgp_session_reset
    linkageType: ''
    returnType: bool
    signature: bool bgp_afi_safi_peer_exists(struct bgp *bgp, afi_t afi, safi_t safi)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgpd.c:1979,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgpd.c:1981,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:1985,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:2001,1
    - Dst: peer_as_change
      Src: /src/frr/bgpd/bgpd.c:2027,1
    - Dst: bgp_config_check
      Src: /src/frr/bgpd/bgpd.c:2034,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgpd.c:2035,1
    - Dst: peer_create
      Src: /src/frr/bgpd/bgpd.c:2041,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 37
    argCount: 6
    argNames:
    - bgp
    - su
    - conf_if
    - as
    - as_type
    - as_str
    argTypes:
    - struct bgp*
    - union sockunion*
    - char*
    - as_t*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 1972
    functionDepth: 5
    functionLinenumber: 1972
    functionLinenumberEnd: 2046
    functionName: peer_remote_as
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - peer_sort
    - bgp_config_check
    - peer_dynamic_neighbor
    - peer_as_change
    - bgp_confederation_peers_check
    - peer_lookup
    - peer_create
    - peer_lookup_by_conf_if
    linkageType: ''
    returnType: int
    signature: "int peer_remote_as(struct bgp *bgp, union sockunion *su, const char
      *conf_if,\n\t\t   as_t *as, int as_type, const char *as_str)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - role
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2065
      start: 2048
    functionDepth: 0
    functionLinenumber: 2048
    functionLinenumberEnd: 2065
    functionName: bgp_get_name_by_role
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *bgp_get_name_by_role(uint8_t role)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 2067
    functionDepth: 0
    functionLinenumber: 2067
    functionLinenumberEnd: 2072
    functionName: bgp_get_asnotation
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: enum asnotation_mode
    signature: enum asnotation_mode bgp_get_asnotation(struct bgp *bgp)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2095,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2096,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2097,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2101,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2102,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2103,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2104,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2108,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2109,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2112,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2113,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2116,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2117,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2120,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2121,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2124,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2125,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2127,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2131,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2132,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2135,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2139,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2140,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2143,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2147,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2148,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2151,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2155,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2156,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2159,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2164,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2165,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2168,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2172,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2173,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2176,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2180,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2181,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2188,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2189,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2192,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2197,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2198,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2200,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2204,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2205,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2208,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2209,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2212,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2213,1
    - Dst: bgp_addpath_type_changed
      Src: /src/frr/bgpd/bgpd.c:2219,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 74
    argCount: 4
    argNames:
    - group
    - peer
    - afi
    - safi
    argTypes:
    - struct peer_group*
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2221
      start: 2074
    functionDepth: 5
    functionLinenumber: 2074
    functionLinenumberEnd: 2221
    functionName: peer_group2peer_config_copy_af
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - bgp_addpath_type_changed
    - CHECK_FLAG
    - SET_FLAG
    - UNSET_FLAG
    - PEER_STR_ATTR_INHERIT
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: void
    signature: "void peer_group2peer_config_copy_af(struct peer_group *group,\n\t\t\t\t\t
      \  struct peer *peer, afi_t afi,\n\t\t\t\t\t   safi_t safi)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2228,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgpd.c:2229,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:2244,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:2247,1
    - Dst: peer_group2peer_config_copy_af
      Src: /src/frr/bgpd/bgpd.c:2251,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:2253,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgpd.c:2254,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:2256,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2257,1
    - Dst: bgp_capability_send
      Src: /src/frr/bgpd/bgpd.c:2259,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:2264,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:2269,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:2275,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:2292,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2298
      start: 2223
    functionDepth: 6
    functionLinenumber: 2223
    functionLinenumberEnd: 2298
    functionName: peer_activate_af
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_established
    - bgp_capability_send
    - peer_group2peer_config_copy_af
    - CHECK_FLAG
    - peer_af_create
    - flog_err
    - bgp_announce_route
    - bgp_timer_set
    - bgp_notify_send
    - peer_active
    linkageType: ''
    returnType: int
    signature: int peer_activate_af(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2317,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2330,1
    - Dst: peer_activate_af
      Src: /src/frr/bgpd/bgpd.c:2331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2333
      start: 2301
    functionDepth: 7
    functionLinenumber: 2301
    functionLinenumberEnd: 2333
    functionName: peer_activate
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    - peer_activate_af
    linkageType: ''
    returnType: int
    signature: int peer_activate(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2360,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgpd.c:2361,1
    - Dst: peer_af_delete
      Src: /src/frr/bgpd/bgpd.c:2373,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgpd.c:2374,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgpd.c:2376,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgpd.c:2376,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:2380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2381,1
    - Dst: peer_active_nego
      Src: /src/frr/bgpd/bgpd.c:2385,1
    - Dst: bgp_capability_send
      Src: /src/frr/bgpd/bgpd.c:2386,1
    - Dst: bgp_clear_route
      Src: /src/frr/bgpd/bgpd.c:2389,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:2393,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:2398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2404
      start: 2357
    functionDepth: 8
    functionLinenumber: 2357
    functionLinenumberEnd: 2404
    functionName: non_peergroup_deactivate_af
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - safi2str
    - peer_established
    - bgp_capability_send
    - bgp_clear_route
    - CHECK_FLAG
    - afi2str
    - peer_af_delete
    - flog_err
    - peer_active_nego
    - bgp_notify_send
    linkageType: ''
    returnType: bool
    signature: "bool non_peergroup_deactivate_af(struct peer *peer, afi_t afi,\n\t\t\t\t\tsafi_t
      safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2420,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2424,1
    - Dst: non_peergroup_deactivate_af
      Src: /src/frr/bgpd/bgpd.c:2425,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2406
    functionDepth: 9
    functionLinenumber: 2406
    functionLinenumberEnd: 2427
    functionName: peer_deactivate
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    - non_peergroup_deactivate_af
    linkageType: ''
    returnType: int
    signature: int peer_deactivate(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2454,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2455,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:2459,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:2463,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:2464,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:2465,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:2468,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:2469,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:2470,1
    - Dst: bgp_clear_route_all
      Src: /src/frr/bgpd/bgpd.c:2474,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2475
      start: 2449
    functionDepth: 6
    functionLinenumber: 2449
    functionLinenumberEnd: 2475
    functionName: peer_nsf_stop
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    - UNSET_FLAG
    - bgp_clear_route_all
    - bgp_debug_neighbor_events
    linkageType: ''
    returnType: void
    signature: void peer_nsf_stop(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:2459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2457
    functionDepth: 1
    functionLinenumber: 2457
    functionLinenumberEnd: 2460
    functionName: FOREACH_AFI_SAFI_NSF
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI_NSF (afi, safi)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:2498,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2501,1
    - Dst: bgp_soft_reconfig_table_task_cancel
      Src: /src/frr/bgpd/bgpd.c:2503,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgpd.c:2505,1
    - Dst: bgp_reads_off
      Src: /src/frr/bgpd/bgpd.c:2506,1
    - Dst: bgp_writes_off
      Src: /src/frr/bgpd/bgpd.c:2507,1
    - Dst: event_cancel_event_ready
      Src: /src/frr/bgpd/bgpd.c:2508,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:2509,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:2510,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:2511,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2511,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:2512,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2512,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:2513,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2513,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2515,1
    - Dst: peer_nsf_stop
      Src: /src/frr/bgpd/bgpd.c:2516,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2518,1
    - Dst: bgp_peer_remove_bfd_config
      Src: /src/frr/bgpd/bgpd.c:2522,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:2527,1
    - Dst: peer_drop_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:2528,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/bgpd.c:2530,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgpd.c:2531,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgpd.c:2533,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgpd.c:2543,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2544,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2551,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgpd.c:2552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2555,1
    - Dst: bgp_unlink_nexthop_by_peer
      Src: /src/frr/bgpd/bgpd.c:2556,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2559,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2560,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:2561,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2563,1
    - Dst: bgp_md5_unset
      Src: /src/frr/bgpd/bgpd.c:2564,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgpd.c:2567,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2570,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/bgpd.c:2571,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgpd.c:2579,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgpd.c:2580,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgpd.c:2581,1
    - Dst: stream_fifo_free
      Src: /src/frr/bgpd/bgpd.c:2586,1
    - Dst: stream_fifo_free
      Src: /src/frr/bgpd/bgpd.c:2591,1
    - Dst: ringbuf_del
      Src: /src/frr/bgpd/bgpd.c:2596,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:2602,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:2607,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2616,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2617,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2618,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2622,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2625,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2626,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:2627,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:2630,1
    - Dst: peer_af_delete
      Src: /src/frr/bgpd/bgpd.c:2631,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2633,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2634,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2635,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgpd.c:2637,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 90
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_KEEPALIVES_ON))
      pos:
        line_end: 2512
        line_start: 2512
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (peer->status != Deleted)
      pos:
        line_end: 2497
        line_start: 2497
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON))
      pos:
        line_end: 2510
        line_start: 2510
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_READS_ON))
      pos:
        line_end: 2511
        line_start: 2511
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 2640
      start: 2488
    functionDepth: 8
    functionLinenumber: 2488
    functionLinenumberEnd: 2640
    functionName: peer_delete
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - BGP_PEER_SU_UNSPEC
    - ringbuf_del
    - bgp_keepalives_off
    - peer_nsf_stop
    - bgp_unlink_nexthop_by_peer
    - stream_fifo_free
    - peer_unlock
    - bgp_stop
    - bgp_reads_off
    - bgp_md5_unset
    - assert
    - bgp_peer_remove_bfd_config
    - sockunion_free
    - bgp_soft_reconfig_table_task_cancel
    - bgp_writes_off
    - list_delete_node
    - EVENT_OFF
    - UNSET_FLAG
    - XFREE
    - hash_release
    - event_cancel_event_ready
    - ecommunity_free
    - bgp_fsm_change_status
    - CHECK_FLAG
    - listnode_lookup
    - peer_drop_dynamic_neighbor
    - peer_dynamic_neighbor
    - peer_af_delete
    - SET_FLAG
    - bgp_timer_set
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: int
    signature: int peer_delete(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2616,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2617,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2618,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2622,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2625,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2626,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:2627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2628
      start: 2612
    functionDepth: 1
    functionLinenumber: 2612
    functionLinenumberEnd: 2628
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 14
    functionsReached:
    - XFREE
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:2644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - g1
    - g2
    argTypes:
    - struct peer_group*
    - struct peer_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2645
      start: 2642
    functionDepth: 0
    functionLinenumber: 2642
    functionLinenumberEnd: 2645
    functionName: peer_group_cmp
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int peer_group_cmp(struct peer_group *g1, struct peer_group *g2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgpd.c:2650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2651
      start: 2648
    functionDepth: 0
    functionLinenumber: 2648
    functionLinenumberEnd: 2651
    functionName: peer_group_new
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct peer_group
    signature: struct peer_group *peer_group_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct peer_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2656
      start: 2653
    functionDepth: 0
    functionLinenumber: 2653
    functionLinenumberEnd: 2656
    functionName: peer_group_free
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void peer_group_free(struct peer_group *group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2663,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:2664,1
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgpd.c:2676,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:2677,1
    - Dst: peer_group_new
      Src: /src/frr/bgpd/bgpd.c:2680,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2682,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:2683,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:2684,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:2686,1
    - Dst: peer_new
      Src: /src/frr/bgpd/bgpd.c:2687,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2692,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:2693,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2699,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgpd.c:2700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - bgp
    - name
    argTypes:
    - struct bgp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2658
    functionDepth: 3
    functionLinenumber: 2658
    functionLinenumberEnd: 2703
    functionName: peer_group_lookup
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 6
    functionsReached:
    - listnode_add_sort
    - strcmp
    - peer_group_new
    - SET_FLAG
    - list_new
    - peer_new
    - XFREE
    - if
    - ALL_LIST_ELEMENTS
    - peer_group_lookup
    - XSTRDUP
    linkageType: ''
    returnType: struct peer_group
    signature: struct peer_group *peer_group_lookup(struct bgp *bgp, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2691
      start: 2688
    functionDepth: 0
    functionLinenumber: 2688
    functionLinenumberEnd: 2691
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2710,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2719,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2734,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2735,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2736,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2739,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2742,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2743,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2744,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2747,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2749,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2755,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2756,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2757,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2764,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2765,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2766,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:2769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2776,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2777,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2780,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2782,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:2783,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2787,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2788,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:2791,1
    - Dst: bgp_md5_set
      Src: /src/frr/bgpd/bgpd.c:2792,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2795,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2797,1
    - Dst: PEER_SU_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2798,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:2800,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2801,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:2807,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgpd.c:2810,1
    - Dst: bgp_peer_configure_bfd
      Src: /src/frr/bgpd/bgpd.c:2814,1
    - Dst: bgp_peer_config_apply
      Src: /src/frr/bgpd/bgpd.c:2815,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 2
    argNames:
    - group
    - peer
    argTypes:
    - struct peer_group*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2817
      start: 2705
    functionDepth: 3
    functionLinenumber: 2705
    functionLinenumberEnd: 2817
    functionName: peer_group2peer_config_copy
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - bgp_md5_set
    - BGP_PEER_SU_UNSPEC
    - bgp_peer_gr_flags_update
    - sockunion_free
    - CHECK_FLAG
    - bgp_peer_configure_bfd
    - SET_FLAG
    - UNSET_FLAG
    - PEER_STR_ATTR_INHERIT
    - bgp_peer_config_apply
    - XFREE
    - PEER_SU_ATTR_INHERIT
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: void
    signature: "void peer_group2peer_config_copy(struct peer_group *group,\n\t\t\t\t\tstruct
      peer *peer)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_lookup
      Src: /src/frr/bgpd/bgpd.c:2827,1
    - Dst: peer_as_change
      Src: /src/frr/bgpd/bgpd.c:2837,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2839,1
    - Dst: peer_as_change
      Src: /src/frr/bgpd/bgpd.c:2842,1
    - Dst: peer_notify_unconfig
      Src: /src/frr/bgpd/bgpd.c:2848,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:2850,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:2851,1
    - Dst: peer_notify_shutdown
      Src: /src/frr/bgpd/bgpd.c:2855,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgpd.c:2857,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:2858,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:2859,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:2865,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:2866,1
    - Dst: peer_group_notify_unconfig
      Src: /src/frr/bgpd/bgpd.c:2870,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:2875,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2875,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:2877,1
    - Dst: peer_notify_unconfig
      Src: /src/frr/bgpd/bgpd.c:2879,1
    - Dst: peer_notify_unconfig
      Src: /src/frr/bgpd/bgpd.c:2881,1
    - Dst: peer_group_delete
      Src: /src/frr/bgpd/bgpd.c:2885,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:2896,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2896,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:2899,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2899,1
    - Dst: bgp_zebra_terminate_radv
      Src: /src/frr/bgpd/bgpd.c:2900,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:2902,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:2905,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:2908,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:2910,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2911,1
    - Dst: prefix_free
      Src: /src/frr/bgpd/bgpd.c:2913,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:2915,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:2918,1
    - Dst: bgp_peer_remove_bfd_config
      Src: /src/frr/bgpd/bgpd.c:2922,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:2925,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgpd.c:2928,1
    - Dst: peer_group_free
      Src: /src/frr/bgpd/bgpd.c:2930,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 5
    argNames:
    - bgp
    - group_name
    - as
    - as_type
    - as_str
    argTypes:
    - struct bgp*
    - char*
    - as_t*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2933
      start: 2820
    functionDepth: 9
    functionLinenumber: 2820
    functionLinenumberEnd: 2933
    functionName: peer_group_remote_as
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - list_delete
    - peer_group_notify_unconfig
    - peer_as_change
    - peer_group_delete
    - peer_notify_shutdown
    - prefix_free
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - peer_delete
    - zlog_debug
    - bgp_notify_send
    - if
    - for
    - bgp_peer_remove_bfd_config
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - peer_group_free
    - bgp_debug_neighbor_events
    - XFREE
    - listnode_delete
    - bgp_zebra_terminate_radv
    - CHECK_FLAG
    - peer_notify_unconfig
    - ALL_LIST_ELEMENTS
    - peer_group_lookup
    linkageType: ''
    returnType: int
    signature: "int peer_group_remote_as(struct bgp *bgp, const char *group_name,
      as_t *as,\n\t\t\t int as_type, const char *as_str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2944,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:2947,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:2947,1
    - Dst: bgp_zebra_terminate_radv
      Src: /src/frr/bgpd/bgpd.c:2948,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:2950,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:2954,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgpd.c:2957,1
    - Dst: peer_group_listen_range_add
      Src: /src/frr/bgpd/bgpd.c:2965,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgpd.c:2971,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:2974,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:2978,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgpd.c:2979,1
    - Dst: prefix_new
      Src: /src/frr/bgpd/bgpd.c:2983,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgpd.c:2985,1
    - Dst: bgp_md5_set_prefix
      Src: /src/frr/bgpd/bgpd.c:2989,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct peer_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2992
      start: 2935
    functionDepth: 9
    functionLinenumber: 2935
    functionLinenumberEnd: 2992
    functionName: peer_group_remote_as_delete
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - peer_delete
    - prefix_new
    - peer_group_listen_range_add
    - CHECK_FLAG
    - listnode_add
    - bgp_md5_set_prefix
    - list_delete_all_node
    - family2afi
    - if
    - ALL_LIST_ELEMENTS
    - bgp_zebra_terminate_radv
    linkageType: ''
    returnType: int
    signature: int peer_group_remote_as_delete(struct peer_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/bgpd.c:3001,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3004,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgpd.c:3005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - group
    - range
    argTypes:
    - struct peer_group*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3007
      start: 2994
    functionDepth: 1
    functionLinenumber: 2994
    functionLinenumberEnd: 3007
    functionName: peer_group_listen_range_del
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - family2afi
    - ALL_LIST_ELEMENTS
    - prefix_same
    linkageType: ''
    returnType: int
    signature: int peer_group_listen_range_del(struct peer_group *group, struct prefix
      *range)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:3093,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:3094,1
    - Dst: peer_group2peer_config_copy_af
      Src: /src/frr/bgpd/bgpd.c:3095,1
    - Dst: peer_deactivate
      Src: /src/frr/bgpd/bgpd.c:3099,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3100
      start: 3089
    functionDepth: 10
    functionLinenumber: 3089
    functionLinenumberEnd: 3100
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 14
    functionsReached:
    - peer_deactivate
    - peer_af_find
    - peer_group2peer_config_copy_af
    - peer_af_create
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:3162,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:3163,1
    - Dst: peer_group2peer_config_copy_af
      Src: /src/frr/bgpd/bgpd.c:3165,1
    - Dst: peer_deactivate
      Src: /src/frr/bgpd/bgpd.c:3168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3169
      start: 3158
    functionDepth: 10
    functionLinenumber: 3158
    functionLinenumberEnd: 3169
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 14
    functionsReached:
    - peer_deactivate
    - peer_af_find
    - peer_group2peer_config_copy_af
    - peer_af_create
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgpd.c:3183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3179
    functionDepth: 1
    functionLinenumber: 3179
    functionLinenumberEnd: 3185
    functionName: bgp_startup_timer_expire
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_startup_timer_expire(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3197
      start: 3192
    functionDepth: 0
    functionLinenumber: 3192
    functionLinenumberEnd: 3197
    functionName: bgp_vrf_string_name_delete
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_vrf_string_name_delete(void *data)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgpd.c:3209,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:3212,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:3214,1
    - Dst: asn_asn2asplain
      Src: /src/frr/bgpd/bgpd.c:3214,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:3218,1
    - Dst: asn_str2asn_notation
      Src: /src/frr/bgpd/bgpd.c:3220,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:3222,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3224,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3227,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgpd.c:3236,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgpd.c:3240,1
    - Dst: bgp_process_queue_init
      Src: /src/frr/bgpd/bgpd.c:3243,1
    - Dst: peer_new
      Src: /src/frr/bgpd/bgpd.c:3248,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3249,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:3251,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3252,1
    - Dst: cmd_hostname_get
      Src: /src/frr/bgpd/bgpd.c:3253,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:3255,1
    - Dst: cmd_hostname_get
      Src: /src/frr/bgpd/bgpd.c:3255,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3257,1
    - Dst: cmd_domainname_get
      Src: /src/frr/bgpd/bgpd.c:3258,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:3260,1
    - Dst: cmd_domainname_get
      Src: /src/frr/bgpd/bgpd.c:3260,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:3261,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgpd.c:3263,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:3267,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgpd.c:3271,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgpd.c:3272,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgpd.c:3273,1
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/bgpd/bgpd.c:3276,1
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/bgpd/bgpd.c:3278,1
    - Dst: bgp_tcp_keepalive_unset
      Src: /src/frr/bgpd/bgpd.c:3293,1
    - Dst: bgp_timers_unset
      Src: /src/frr/bgpd/bgpd.c:3294,1
    - Dst: bgp_addpath_init_bgp_data
      Src: /src/frr/bgpd/bgpd.c:3306,1
    - Dst: bgp_rfapi_new
      Src: /src/frr/bgpd/bgpd.c:3312,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:3313,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:3314,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:3325,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:3328,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:3331,1
    - Dst: bgp_label_per_nexthop_cache_init
      Src: /src/frr/bgpd/bgpd.c:3336,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:3340,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgpd.c:3342,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:3347,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:3357,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgpd.c:3359,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:3360,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:3367,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:3369,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgpd.c:3374,1
    - Dst: update_bgp_group_init
      Src: /src/frr/bgpd/bgpd.c:3376,1
    - Dst: bf_assign_index
      Src: /src/frr/bgpd/bgpd.c:3379,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgpd.c:3381,1
    - Dst: bgp_evpn_init
      Src: /src/frr/bgpd/bgpd.c:3383,1
    - Dst: bgp_evpn_vrf_es_init
      Src: /src/frr/bgpd/bgpd.c:3384,1
    - Dst: bgp_pbr_init
      Src: /src/frr/bgpd/bgpd.c:3385,1
    - Dst: bgp_srv6_init
      Src: /src/frr/bgpd/bgpd.c:3386,1
    - Dst: bgp_global_gr_init
      Src: /src/frr/bgpd/bgpd.c:3389,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:3391,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 118
    argCount: 5
    argNames:
    - as
    - name
    - inst_type
    - as_pretty
    - asnotation
    argTypes:
    - as_t*
    - char*
    - enum bgp_instance_type
    - char*
    - enum asnotation_mode
    assertStmts:
    - condition: (bgp->rfapi_cfg)
      pos:
        line_end: 3313
        line_start: 3313
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (bgp->rfapi)
      pos:
        line_end: 3312
        line_start: 3312
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 3395
      start: 3200
    functionDepth: 3
    functionLinenumber: 3200
    functionLinenumberEnd: 3395
    functionName: bgp_create
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - asn_str2asn_notation
    - cmd_hostname_get
    - strlen
    - bgp_process_queue_init
    - bgp_rfapi_new
    - bgp_srv6_init
    - hash_create
    - bgp_maximum_paths_set
    - bgp_evpn_init
    - cmd_domainname_get
    - BGP_DEBUG
    - bgp_label_per_nexthop_cache_init
    - snprintf
    - XCALLOC
    - memset
    - QOBJ_REG
    - update_bgp_group_init
    - zlog_debug
    - assert
    - bgp_table_init
    - atomic_store_explicit
    - bgp_evpn_vrf_es_init
    - bgp_pbr_init
    - peer_new
    - XFREE
    - event_add_timer
    - bgp_timers_unset
    - XSTRDUP
    - bgp_tcp_keepalive_unset
    - bf_assign_index
    - asn_asn2asplain
    - bgp_addpath_init_bgp_data
    - SET_FLAG
    - bgp_lock
    - list_new
    - bgp_global_gr_init
    linkageType: ''
    returnType: struct bgp
    signature: "struct bgp *bgp_create(as_t *as, const char *name,\n\t\t\t      enum
      bgp_instance_type inst_type,\n\t\t\t      const char *as_pretty,\n\t\t\t      enum
      asnotation_mode asnotation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgpd.c:3271,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgpd.c:3272,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgpd.c:3273,1
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/bgpd/bgpd.c:3276,1
    - Dst: bgp_maximum_paths_set
      Src: /src/frr/bgpd/bgpd.c:3278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3286
      start: 3270
    functionDepth: 1
    functionLinenumber: 3270
    functionLinenumberEnd: 3286
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 14
    functionsReached:
    - bgp_maximum_paths_set
    - bgp_table_init
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 119
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3403,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:3415,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3415,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:3418,1
    - Dst: bgp_set_evpn
      Src: /src/frr/bgpd/bgpd.c:3450,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:3452,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:3457,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgpd.c:3463,1
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgpd.c:3482,1
    - Dst: bgp_close_vrf_socket
      Src: /src/frr/bgpd/bgpd.c:3489,1
    - Dst: bgp_close_vrf_socket
      Src: /src/frr/bgpd/bgpd.c:3501,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgpd.c:3508,1
    - Dst: bgp_socket
      Src: /src/frr/bgpd/bgpd.c:3509,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:3512,1
    - Dst: bgp_socket
      Src: /src/frr/bgpd/bgpd.c:3513,1
    - Dst: bgp_check_main_socket
      Src: /src/frr/bgpd/bgpd.c:3518,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:3528,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3530,1
    - Dst: bgp_lookup_by_as_name_type
      Src: /src/frr/bgpd/bgpd.c:3556,1
    - Dst: bgp_create
      Src: /src/frr/bgpd/bgpd.c:3560,1
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:3576,1
    - Dst: bgp_address_init
      Src: /src/frr/bgpd/bgpd.c:3577,1
    - Dst: bgp_tip_hash_init
      Src: /src/frr/bgpd/bgpd.c:3578,1
    - Dst: bgp_scan_init
      Src: /src/frr/bgpd/bgpd.c:3579,1
    - Dst: bgp_vrf_lookup_by_instance_type
      Src: /src/frr/bgpd/bgpd.c:3587,1
    - Dst: bgp_vrf_link
      Src: /src/frr/bgpd/bgpd.c:3589,1
    - Dst: bgp_handle_socket
      Src: /src/frr/bgpd/bgpd.c:3594,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgpd.c:3595,1
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgpd.c:3597,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:3598,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3599,1
    - Dst: bgp_zebra_instance_register
      Src: /src/frr/bgpd/bgpd.c:3601,1
    - Dst: redist_add_instance
      Src: /src/frr/bgpd/bgpd.c:3612,1
    - Dst: redist_del_instance
      Src: /src/frr/bgpd/bgpd.c:3615,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/bgpd/bgpd.c:3619,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/bgpd/bgpd.c:3621,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:3640,1
    - Dst: bgp_zclient_set_redist
      Src: /src/frr/bgpd/bgpd.c:3641,1
    - Dst: bgp_set_redist_vrf_bitmaps
      Src: /src/frr/bgpd/bgpd.c:3656,1
    - Dst: bgp_zebra_instance_register
      Src: /src/frr/bgpd/bgpd.c:3659,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3662,1
    - Dst: BGP_PEER_START_SUPPRESSED
      Src: /src/frr/bgpd/bgpd.c:3663,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:3664,1
    - Dst: bgp_static_add
      Src: /src/frr/bgpd/bgpd.c:3668,1
    - Dst: bgp_instance_down
      Src: /src/frr/bgpd/bgpd.c:3675,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3683,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:3684,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3689,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:3690,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:3691,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:3694,1
    - Dst: bgp_purge_static_redist_routes
      Src: /src/frr/bgpd/bgpd.c:3698,1
    - Dst: bgp_cleanup_nexthops
      Src: /src/frr/bgpd/bgpd.c:3701,1
    - Dst: bgp_zebra_instance_deregister
      Src: /src/frr/bgpd/bgpd.c:3703,1
    - Dst: bgp_set_redist_vrf_bitmaps
      Src: /src/frr/bgpd/bgpd.c:3705,1
    - Dst: bgp_delete
      Src: /src/frr/bgpd/bgpd.c:3709,1
    - Dst: bgp_soft_reconfig_table_task_cancel
      Src: /src/frr/bgpd/bgpd.c:3722,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgpd.c:3725,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3725,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgpd.c:3727,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3727,1
    - Dst: bgp_vpn_leak_unimport
      Src: /src/frr/bgpd/bgpd.c:3730,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgpd.c:3732,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:3734,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3735,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3737,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3738,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3739,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3740,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3741,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:3744,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgpd.c:3755,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3757,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3759,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgpd.c:3763,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3765,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3767,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:3770,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3772,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3774,1
    - Dst: bgp_evpn_vrf_delete
      Src: /src/frr/bgpd/bgpd.c:3782,1
    - Dst: vpn_leak_zebra_vrf_label_withdraw
      Src: /src/frr/bgpd/bgpd.c:3785,1
    - Dst: vpn_leak_zebra_vrf_label_withdraw
      Src: /src/frr/bgpd/bgpd.c:3786,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3790,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:3791,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3796,1
    - Dst: peer_notify_shutdown
      Src: /src/frr/bgpd/bgpd.c:3797,1
    - Dst: bgp_static_delete
      Src: /src/frr/bgpd/bgpd.c:3800,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:3803,1
    - Dst: bgp_redistribute_unset
      Src: /src/frr/bgpd/bgpd.c:3806,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3809,1
    - Dst: peer_group_delete
      Src: /src/frr/bgpd/bgpd.c:3810,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgpd.c:3812,1
    - Dst: listnode_head
      Src: /src/frr/bgpd/bgpd.c:3813,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:3814,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:3818,1
    - Dst: update_bgp_group_free
      Src: /src/frr/bgpd/bgpd.c:3822,1
    - Dst: rfapi_delete
      Src: /src/frr/bgpd/bgpd.c:3827,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:3831,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgpd.c:3835,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgpd.c:3836,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgpd.c:3837,1
    - Dst: bgp_dest_set_bgp_aggregate_info
      Src: /src/frr/bgpd/bgpd.c:3841,1
    - Dst: bgp_free_aggregate_info
      Src: /src/frr/bgpd/bgpd.c:3842,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:3851,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3862,1
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgpd.c:3869,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:3870,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3871,1
    - Dst: bgp_zebra_instance_deregister
      Src: /src/frr/bgpd/bgpd.c:3874,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgpd.c:3880,1
    - Dst: bgp_if_finish
      Src: /src/frr/bgpd/bgpd.c:3883,1
    - Dst: bgp_vrf_lookup_by_instance_type
      Src: /src/frr/bgpd/bgpd.c:3885,1
    - Dst: bgp_handle_socket
      Src: /src/frr/bgpd/bgpd.c:3886,1
    - Dst: bgp_vrf_unlink
      Src: /src/frr/bgpd/bgpd.c:3888,1
    - Dst: bgp_set_evpn
      Src: /src/frr/bgpd/bgpd.c:3893,1
    - Dst: bgp_set_evpn
      Src: /src/frr/bgpd/bgpd.c:3895,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3895,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/bgpd/bgpd.c:3899,1
    - Dst: event_master_free_unused
      Src: /src/frr/bgpd/bgpd.c:3901,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:3902,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgpd.c:3915,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3917,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3918,1
    - Dst: hash_free
      Src: /src/frr/bgpd/bgpd.c:3921,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgpd.c:3929,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgpd.c:3930,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgpd.c:3931,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3932,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3936,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3938,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3940,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3942,1
    - Dst: bgp_scan_finish
      Src: /src/frr/bgpd/bgpd.c:3945,1
    - Dst: bgp_address_destroy
      Src: /src/frr/bgpd/bgpd.c:3946,1
    - Dst: bgp_tip_hash_destroy
      Src: /src/frr/bgpd/bgpd.c:3947,1
    - Dst: bf_release_index
      Src: /src/frr/bgpd/bgpd.c:3950,1
    - Dst: bgp_evpn_cleanup
      Src: /src/frr/bgpd/bgpd.c:3952,1
    - Dst: bgp_pbr_cleanup
      Src: /src/frr/bgpd/bgpd.c:3953,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3954,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3960,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3962,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:3966,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:3969,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3971,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgpd.c:3973,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3976,1
    - Dst: sid_unregister
      Src: /src/frr/bgpd/bgpd.c:3980,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3981,1
    - Dst: bgp_srv6_cleanup
      Src: /src/frr/bgpd/bgpd.c:3986,1
    - Dst: bgp_confederation_id_unset
      Src: /src/frr/bgpd/bgpd.c:3987,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3989,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3990,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3991,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3992,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3994,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4006,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4007,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4008,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:4014,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4014,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4015,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4017,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4018,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgpd.c:4025,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4034,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4035,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4036,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:4042,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4042,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4043,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4045,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4046,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgpd.c:4053,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:4058,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4065,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgpd.c:4070,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgpd.c:4075,1
    - Dst: peer_create
      Src: /src/frr/bgpd/bgpd.c:4093,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgpd.c:4099,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgpd.c:4100,1
    - Dst: peer_group2peer_config_copy
      Src: /src/frr/bgpd/bgpd.c:4102,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:4114,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:4115,1
    - Dst: peer_group2peer_config_copy_af
      Src: /src/frr/bgpd/bgpd.c:4117,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4122,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgpd.c:4135,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4138,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgpd.c:4140,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4155,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4156,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgpd.c:4157,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:4163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4164,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgpd.c:4165,1
    - Dst: peer_lookup_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4175,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgpd.c:4184,1
    - Dst: peer_group_lookup_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4188,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4199,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4200,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4208,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4209,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4216,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4217,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4218,1
    - Dst: peer_group_af_configured
      Src: /src/frr/bgpd/bgpd.c:4225,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4226,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4227,1
    - Dst: peer_create_bind_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4234,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:4235,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4239,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4240,1
    - Dst: peer_drop_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4246,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4254,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4255,1
    - Dst: bgp_path_attribute_discard
      Src: /src/frr/bgpd/bgpd.c:4259,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4269,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4272,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4289,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4292,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:4301,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:4344,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:4357,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4369,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:4372,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4380,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:4382,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4388,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:4389,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4394,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:4396,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4398,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:4402,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4404,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:4407,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:4408,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4537,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4538,1
    - Dst: peer_nsf_stop
      Src: /src/frr/bgpd/bgpd.c:4539,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4541,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:4544,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4545,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4546,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4551,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:4556,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4559,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:4565,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgpd.c:4567,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4572,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:4576,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:4579,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4581,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4589,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:4592,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4604,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:4608,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:4612,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4614,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4618,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4620,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:4626,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgpd.c:4628,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4633,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:4643,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4647,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4657,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:4661,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4665,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:4667,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgpd.c:4668,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:4681,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4684,1
    - Dst: peer_flag_action_set
      Src: /src/frr/bgpd/bgpd.c:4685,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4689,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4694,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4699,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4704,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4705,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:4711,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:4712,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4714,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4717,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4719,1
    - Dst: bgp_zebra_initiate_radv
      Src: /src/frr/bgpd/bgpd.c:4729,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:4730,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4731,1
    - Dst: bgp_zebra_terminate_radv
      Src: /src/frr/bgpd/bgpd.c:4734,1
    - Dst: bgp_zebra_terminate_radv
      Src: /src/frr/bgpd/bgpd.c:4737,1
    - Dst: peer_flag_modify_action
      Src: /src/frr/bgpd/bgpd.c:4742,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4752,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4754,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4759,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4765,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4769,1
    - Dst: bgp_zebra_initiate_radv
      Src: /src/frr/bgpd/bgpd.c:4772,1
    - Dst: bgp_zebra_terminate_radv
      Src: /src/frr/bgpd/bgpd.c:4773,1
    - Dst: peer_flag_modify_action
      Src: /src/frr/bgpd/bgpd.c:4777,1
    CyclomaticComplexity: 208
    EdgeCount: 208
    ICount: 478
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (peer)
      pos:
        line_end: 4234
        line_start: 4234
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 4781
      start: 3398
    functionDepth: 9
    functionLinenumber: 3398
    functionLinenumberEnd: 4781
    functionName: bgp_get_default
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 29
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - bgp_instance_down
    - bgp_dest_set_bgp_aggregate_info
    - hash_lookup
    - peer_nsf_stop
    - bgp_lookup_by_as_name_type
    - bgp_free_aggregate_info
    - peer_create_bind_dynamic_neighbor
    - BGP_EVENT_ADD
    - memset
    - snprintf
    - bgp_set_redist_vrf_bitmaps
    - peer_af_create
    - bgp_zebra_instance_register
    - rfapi_delete
    - update_bgp_group_free
    - if
    - bgp_pbr_cleanup
    - for
    - work_queue_free_and_null
    - peer_group_active
    - COND_FLAG
    - bf_release_index
    - listcount
    - bgp_route_refresh_send
    - peer_group2peer_config_copy
    - peer_group_lookup_dynamic_neighbor
    - EVENT_OFF
    - peer_lock
    - bgp_delete
    - memcpy
    - bgp_create
    - list_isempty
    - bgp_redistribute_unset
    - bgp_if_finish
    - ALL_LIST_ELEMENTS
    - bgp_dest_get_bgp_table_info
    - bgp_set_evpn
    - srv6_locator_chunk_free
    - bgp_evpn_vrf_delete
    - peer_flag_action_set
    - bgp_zebra_instance_deregister
    - bgp_session_reset
    - bgp_table_finish
    - bgp_static_add
    - bgp_unlock
    - bgp_vpn_leak_unimport
    - bgp_notify_send
    - bgp_socket
    - bgp_scan_init
    - peer_create
    - redist_del_instance
    - bgp_lookup_by_name
    - bgp_notify_send_with_data
    - peer_group2peer_config_copy_af
    - vpn_leak_prechange
    - bgp_zebra_initiate_radv
    - listnode_head
    - ecommunity_free
    - bgp_close_vrf_socket
    - bgp_check_main_socket
    - bgp_handle_socket
    - bgp_evpn_cleanup
    - strcmp
    - bgp_timer_set
    - strlen
    - BGP_PEER_SU_UNSPEC
    - peer_established
    - event_master_free_unused
    - peer_af_find
    - peer_group_delete
    - BGP_DEBUG
    - bgp_path_attribute_discard
    - peer_flag_inherit
    - sockunion2hostprefix
    - sid_unregister
    - bgp_zclient_set_redist
    - bgp_get_default
    - hash_free
    - bgp_dest_get_bgp_aggregate_info
    - bgp_router_id_set
    - zlog_debug
    - vrf_bitmap_set
    - bgp_vrf_link
    - assert
    - zlog_info
    - update_group_adjust_peer
    - bgp_srv6_cleanup
    - bgp_confederation_id_unset
    - bgp_purge_static_redist_routes
    - XFREE
    - bgp_zebra_terminate_radv
    - QOBJ_UNREG
    - bgp_scan_finish
    - vrf_bitmap_unset
    - bgp_lock
    - SET_FLAG
    - peer_lookup_dynamic_neighbor
    - peer_group_af_configured
    - list_delete
    - peer_lookup_by_hostname
    - bgp_address_init
    - listnode_add
    - peer_flag_modify_action
    - peer_lookup
    - BGP_PEER_START_SUPPRESSED
    - peer_notify_shutdown
    - bgp_tip_hash_init
    - peer_delete
    - hook_call
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - bgp_vrf_lookup_by_instance_type
    - peer_group_lookup_dynamic_neighbor_range
    - EVENT_ARG
    - bgp_vrf_unlink
    - bgp_address_destroy
    - redist_add_instance
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_soft_reconfig_table_task_cancel
    - bgp_announce_route
    - UNSET_FLAG
    - bgp_cleanup_nexthops
    - bgp_debug_neighbor_events
    - listnode_delete
    - family2afi
    - bgp_static_delete
    - vpn_leak_zebra_vrf_label_withdraw
    - bgp_route_next
    - bgp_option_check
    - bgp_table_top
    - CHECK_FLAG
    - peer_drop_dynamic_neighbor
    - bgp_tip_hash_destroy
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: struct bgp
    signature: struct bgp *bgp_get_default(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_option_check
      Src: /src/frr/bgpd/bgpd.c:3482,1
    - Dst: bgp_close_vrf_socket
      Src: /src/frr/bgpd/bgpd.c:3489,1
    - Dst: bgp_close_vrf_socket
      Src: /src/frr/bgpd/bgpd.c:3501,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgpd.c:3508,1
    - Dst: bgp_socket
      Src: /src/frr/bgpd/bgpd.c:3509,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:3512,1
    - Dst: bgp_socket
      Src: /src/frr/bgpd/bgpd.c:3513,1
    - Dst: bgp_check_main_socket
      Src: /src/frr/bgpd/bgpd.c:3518,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - bgp
    - vrf
    - old_vrf_id
    - create
    argTypes:
    - struct bgp*
    - struct vrf*
    - vrf_id_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3519
      start: 3475
    functionDepth: 5
    functionLinenumber: 3475
    functionLinenumberEnd: 3519
    functionName: bgp_handle_socket
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - bgp_option_check
    - bgp_close_vrf_socket
    - bgp_check_main_socket
    - ALL_LIST_ELEMENTS_RO
    - list_isempty
    - bgp_socket
    linkageType: ''
    returnType: int
    signature: "int bgp_handle_socket(struct bgp *bgp, struct vrf *vrf, vrf_id_t old_vrf_id,\n\t\t
      \     bool create)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:3528,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3530,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - bgp_val
    - as
    - name
    - inst_type
    argTypes:
    - struct bgp**
    - as_t*
    - char*
    - enum bgp_instance_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3545
      start: 3521
    functionDepth: 10
    functionLinenumber: 3521
    functionLinenumberEnd: 3545
    functionName: bgp_lookup_by_as_name_type
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - bgp_get_default
    - bgp_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int bgp_lookup_by_as_name_type(struct bgp **bgp_val, as_t *as, const
      char *name,\n\t\t\t       enum bgp_instance_type inst_type)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_as_name_type
      Src: /src/frr/bgpd/bgpd.c:3556,1
    - Dst: bgp_create
      Src: /src/frr/bgpd/bgpd.c:3560,1
    - Dst: bgp_router_id_set
      Src: /src/frr/bgpd/bgpd.c:3576,1
    - Dst: bgp_address_init
      Src: /src/frr/bgpd/bgpd.c:3577,1
    - Dst: bgp_tip_hash_init
      Src: /src/frr/bgpd/bgpd.c:3578,1
    - Dst: bgp_scan_init
      Src: /src/frr/bgpd/bgpd.c:3579,1
    - Dst: bgp_vrf_lookup_by_instance_type
      Src: /src/frr/bgpd/bgpd.c:3587,1
    - Dst: bgp_vrf_link
      Src: /src/frr/bgpd/bgpd.c:3589,1
    - Dst: bgp_handle_socket
      Src: /src/frr/bgpd/bgpd.c:3594,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgpd.c:3595,1
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgpd.c:3597,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:3598,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3599,1
    - Dst: bgp_zebra_instance_register
      Src: /src/frr/bgpd/bgpd.c:3601,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 6
    argNames:
    - bgp_val
    - as
    - name
    - inst_type
    - as_pretty
    - asnotation
    argTypes:
    - struct bgp**
    - as_t*
    - char*
    - enum bgp_instance_type
    - char*
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3605
      start: 3548
    functionDepth: 11
    functionLinenumber: 3548
    functionLinenumberEnd: 3605
    functionName: bgp_get
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 5
    functionsReached:
    - bgp_tip_hash_init
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - bgp_create
    - bgp_handle_socket
    - bgp_address_init
    - bgp_vrf_lookup_by_instance_type
    - listnode_add
    - bgp_router_id_set
    - zlog_debug
    - bgp_lookup_by_as_name_type
    - bgp_zebra_instance_register
    - bgp_scan_init
    - bgp_vrf_link
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int bgp_get(struct bgp **bgp_val, as_t *as, const char *name,\n\t
      \   enum bgp_instance_type inst_type, const char *as_pretty,\n\t    enum asnotation_mode
      asnotation)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redist_add_instance
      Src: /src/frr/bgpd/bgpd.c:3612,1
    - Dst: redist_del_instance
      Src: /src/frr/bgpd/bgpd.c:3615,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/bgpd/bgpd.c:3619,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/bgpd/bgpd.c:3621,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - afi
    - type
    - instance
    - vrf_id
    - set
    argTypes:
    - afi_t
    - int
    - unsigned short
    - vrf_id_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3623
      start: 3607
    functionDepth: 1
    functionLinenumber: 3607
    functionLinenumberEnd: 3623
    functionName: bgp_zclient_set_redist
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - redist_del_instance
    - redist_add_instance
    - vrf_bitmap_unset
    - vrf_bitmap_set
    linkageType: ''
    returnType: void
    signature: "void bgp_zclient_set_redist(afi_t afi, int type, unsigned short instance,\n\t\t\t\t
      \  vrf_id_t vrf_id, bool set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:3640,1
    - Dst: bgp_zclient_set_redist
      Src: /src/frr/bgpd/bgpd.c:3641,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - bgp
    - set
    argTypes:
    - struct bgp*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3645
      start: 3625
    functionDepth: 2
    functionLinenumber: 3625
    functionLinenumberEnd: 3645
    functionName: bgp_set_redist_vrf_bitmaps
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - bgp_zclient_set_redist
    linkageType: ''
    returnType: void
    signature: void bgp_set_redist_vrf_bitmaps(struct bgp *bgp, bool set)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: bgp_set_redist_vrf_bitmaps
      Src: /src/frr/bgpd/bgpd.c:3656,1
    - Dst: bgp_zebra_instance_register
      Src: /src/frr/bgpd/bgpd.c:3659,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3662,1
    - Dst: BGP_PEER_START_SUPPRESSED
      Src: /src/frr/bgpd/bgpd.c:3663,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:3664,1
    - Dst: bgp_static_add
      Src: /src/frr/bgpd/bgpd.c:3668,1
    - Dst: bgp_instance_down
      Src: /src/frr/bgpd/bgpd.c:3675,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3683,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:3684,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3689,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:3690,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:3691,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:3694,1
    - Dst: bgp_purge_static_redist_routes
      Src: /src/frr/bgpd/bgpd.c:3698,1
    - Dst: bgp_cleanup_nexthops
      Src: /src/frr/bgpd/bgpd.c:3701,1
    - Dst: bgp_zebra_instance_deregister
      Src: /src/frr/bgpd/bgpd.c:3703,1
    - Dst: bgp_set_redist_vrf_bitmaps
      Src: /src/frr/bgpd/bgpd.c:3705,1
    - Dst: bgp_delete
      Src: /src/frr/bgpd/bgpd.c:3709,1
    - Dst: bgp_soft_reconfig_table_task_cancel
      Src: /src/frr/bgpd/bgpd.c:3722,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgpd.c:3725,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3725,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgpd.c:3727,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3727,1
    - Dst: bgp_vpn_leak_unimport
      Src: /src/frr/bgpd/bgpd.c:3730,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgpd.c:3732,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:3734,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3735,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3737,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3738,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3739,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3740,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3741,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:3744,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgpd.c:3755,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3757,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3759,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgpd.c:3763,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3765,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3767,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:3770,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3772,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3774,1
    - Dst: bgp_evpn_vrf_delete
      Src: /src/frr/bgpd/bgpd.c:3782,1
    - Dst: vpn_leak_zebra_vrf_label_withdraw
      Src: /src/frr/bgpd/bgpd.c:3785,1
    - Dst: vpn_leak_zebra_vrf_label_withdraw
      Src: /src/frr/bgpd/bgpd.c:3786,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3790,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:3791,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3796,1
    - Dst: peer_notify_shutdown
      Src: /src/frr/bgpd/bgpd.c:3797,1
    - Dst: bgp_static_delete
      Src: /src/frr/bgpd/bgpd.c:3800,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:3803,1
    - Dst: bgp_redistribute_unset
      Src: /src/frr/bgpd/bgpd.c:3806,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:3809,1
    - Dst: peer_group_delete
      Src: /src/frr/bgpd/bgpd.c:3810,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgpd.c:3812,1
    - Dst: listnode_head
      Src: /src/frr/bgpd/bgpd.c:3813,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:3814,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:3818,1
    - Dst: update_bgp_group_free
      Src: /src/frr/bgpd/bgpd.c:3822,1
    - Dst: rfapi_delete
      Src: /src/frr/bgpd/bgpd.c:3827,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:3831,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgpd.c:3835,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgpd.c:3836,1
    - Dst: bgp_dest_get_bgp_aggregate_info
      Src: /src/frr/bgpd/bgpd.c:3837,1
    - Dst: bgp_dest_set_bgp_aggregate_info
      Src: /src/frr/bgpd/bgpd.c:3841,1
    - Dst: bgp_free_aggregate_info
      Src: /src/frr/bgpd/bgpd.c:3842,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:3851,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3862,1
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgpd.c:3869,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:3870,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:3871,1
    - Dst: bgp_zebra_instance_deregister
      Src: /src/frr/bgpd/bgpd.c:3874,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgpd.c:3880,1
    - Dst: bgp_if_finish
      Src: /src/frr/bgpd/bgpd.c:3883,1
    - Dst: bgp_vrf_lookup_by_instance_type
      Src: /src/frr/bgpd/bgpd.c:3885,1
    - Dst: bgp_handle_socket
      Src: /src/frr/bgpd/bgpd.c:3886,1
    - Dst: bgp_vrf_unlink
      Src: /src/frr/bgpd/bgpd.c:3888,1
    - Dst: bgp_set_evpn
      Src: /src/frr/bgpd/bgpd.c:3893,1
    - Dst: bgp_set_evpn
      Src: /src/frr/bgpd/bgpd.c:3895,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgpd.c:3895,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/bgpd/bgpd.c:3899,1
    - Dst: event_master_free_unused
      Src: /src/frr/bgpd/bgpd.c:3901,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgpd.c:3902,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 78
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3905
      start: 3651
    functionDepth: 10
    functionLinenumber: 3651
    functionLinenumberEnd: 3905
    functionName: bgp_instance_up
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - bgp_set_evpn
    - bgp_dest_set_bgp_aggregate_info
    - bgp_instance_down
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - event_master_free_unused
    - bgp_evpn_vrf_delete
    - peer_group_delete
    - bgp_zebra_instance_deregister
    - BGP_PEER_START_SUPPRESSED
    - BGP_DEBUG
    - peer_notify_shutdown
    - bgp_free_aggregate_info
    - bgp_session_reset
    - BGP_EVENT_ADD
    - bgp_static_add
    - peer_delete
    - hook_call
    - bgp_set_redist_vrf_bitmaps
    - bgp_unlock
    - bgp_get_default
    - bgp_vrf_lookup_by_instance_type
    - bgp_dest_get_bgp_aggregate_info
    - bgp_zebra_instance_register
    - bgp_vpn_leak_unimport
    - zlog_debug
    - rfapi_delete
    - bgp_notify_send
    - EVENT_ARG
    - update_bgp_group_free
    - bgp_vrf_unlink
    - for
    - work_queue_free_and_null
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_soft_reconfig_table_task_cancel
    - vpn_leak_prechange
    - listcount
    - bgp_purge_static_redist_routes
    - EVENT_OFF
    - bgp_cleanup_nexthops
    - XFREE
    - listnode_head
    - listnode_delete
    - bgp_static_delete
    - bgp_delete
    - ecommunity_free
    - vpn_leak_zebra_vrf_label_withdraw
    - bgp_route_next
    - bgp_table_top
    - bgp_handle_socket
    - SET_FLAG
    - bgp_redistribute_unset
    - bgp_if_finish
    - ALL_LIST_ELEMENTS
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: void bgp_instance_up(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgpd.c:3755,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3757,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3759,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgpd.c:3763,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3765,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:3767,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3768
      start: 3747
    functionDepth: 1
    functionLinenumber: 3747
    functionLinenumberEnd: 3768
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 16
    functionsReached:
    - EVENT_OFF
    - XFREE
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgpd.c:3915,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3917,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3918,1
    - Dst: hash_free
      Src: /src/frr/bgpd/bgpd.c:3921,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgpd.c:3929,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgpd.c:3930,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgpd.c:3931,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3932,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3936,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3938,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3940,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3942,1
    - Dst: bgp_scan_finish
      Src: /src/frr/bgpd/bgpd.c:3945,1
    - Dst: bgp_address_destroy
      Src: /src/frr/bgpd/bgpd.c:3946,1
    - Dst: bgp_tip_hash_destroy
      Src: /src/frr/bgpd/bgpd.c:3947,1
    - Dst: bf_release_index
      Src: /src/frr/bgpd/bgpd.c:3950,1
    - Dst: bgp_evpn_cleanup
      Src: /src/frr/bgpd/bgpd.c:3952,1
    - Dst: bgp_pbr_cleanup
      Src: /src/frr/bgpd/bgpd.c:3953,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3954,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3960,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:3962,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:3966,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgpd.c:3969,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3971,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgpd.c:3973,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3976,1
    - Dst: sid_unregister
      Src: /src/frr/bgpd/bgpd.c:3980,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3981,1
    - Dst: bgp_srv6_cleanup
      Src: /src/frr/bgpd/bgpd.c:3986,1
    - Dst: bgp_confederation_id_unset
      Src: /src/frr/bgpd/bgpd.c:3987,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3989,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3990,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3991,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3992,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3994,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3995
      start: 3907
    functionDepth: 3
    functionLinenumber: 3907
    functionLinenumberEnd: 3995
    functionName: bgp_free
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - list_delete
    - srv6_locator_chunk_free
    - bgp_table_finish
    - sid_unregister
    - hash_free
    - bgp_pbr_cleanup
    - bgp_address_destroy
    - bf_release_index
    - bgp_srv6_cleanup
    - bgp_confederation_id_unset
    - XFREE
    - ecommunity_free
    - bgp_route_next
    - QOBJ_UNREG
    - bgp_table_top
    - bgp_evpn_cleanup
    - bgp_scan_finish
    - bgp_tip_hash_destroy
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void bgp_free(struct bgp *bgp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgpd.c:3929,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgpd.c:3930,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgpd.c:3931,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3932,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3936,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3938,1
    - Dst: bgp_table_finish
      Src: /src/frr/bgpd/bgpd.c:3940,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:3942,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3943
      start: 3925
    functionDepth: 1
    functionLinenumber: 3925
    functionLinenumberEnd: 3943
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 16
    functionsReached:
    - bgp_route_next
    - bgp_table_finish
    - bgp_table_top
    - XFREE
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4006,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4007,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4008,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:4014,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4014,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4015,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4017,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4018,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgpd.c:4025,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4034,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4035,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4036,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:4042,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4042,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4043,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:4045,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4046,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgpd.c:4053,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:4058,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4065,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgpd.c:4070,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgpd.c:4075,1
    - Dst: peer_create
      Src: /src/frr/bgpd/bgpd.c:4093,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgpd.c:4099,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgpd.c:4100,1
    - Dst: peer_group2peer_config_copy
      Src: /src/frr/bgpd/bgpd.c:4102,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:4114,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:4115,1
    - Dst: peer_group2peer_config_copy_af
      Src: /src/frr/bgpd/bgpd.c:4117,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4122,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgpd.c:4135,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4138,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgpd.c:4140,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4155,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4156,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgpd.c:4157,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:4163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4164,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgpd.c:4165,1
    - Dst: peer_lookup_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4175,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgpd.c:4184,1
    - Dst: peer_group_lookup_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4188,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4199,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4200,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4208,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4209,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4216,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4217,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4218,1
    - Dst: peer_group_af_configured
      Src: /src/frr/bgpd/bgpd.c:4225,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4226,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4227,1
    - Dst: peer_create_bind_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4234,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:4235,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4239,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4240,1
    - Dst: peer_drop_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4246,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4254,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4255,1
    - Dst: bgp_path_attribute_discard
      Src: /src/frr/bgpd/bgpd.c:4259,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4269,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4272,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4289,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4292,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:4301,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:4344,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:4357,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4369,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:4372,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4380,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:4382,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4388,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:4389,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4394,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:4396,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4398,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:4402,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4404,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:4407,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:4408,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4537,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4538,1
    - Dst: peer_nsf_stop
      Src: /src/frr/bgpd/bgpd.c:4539,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4541,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:4544,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4545,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4546,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4551,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:4556,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4559,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:4565,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgpd.c:4567,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4572,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:4576,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:4579,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4581,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4589,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:4592,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4604,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:4608,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:4612,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4614,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4618,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4620,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:4626,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgpd.c:4628,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4633,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:4643,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4647,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4657,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:4661,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4665,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:4667,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgpd.c:4668,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:4681,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4684,1
    - Dst: peer_flag_action_set
      Src: /src/frr/bgpd/bgpd.c:4685,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4689,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4694,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4699,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4704,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4705,1
    CyclomaticComplexity: 111
    EdgeCount: 111
    ICount: 216
    argCount: 2
    argNames:
    - bgp
    - conf_if
    argTypes:
    - struct bgp*
    - char*
    assertStmts:
    - condition: (peer)
      pos:
        line_end: 4234
        line_start: 4234
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 4708
      start: 3997
    functionDepth: 9
    functionLinenumber: 3997
    functionLinenumberEnd: 4708
    functionName: peer_lookup_by_conf_if
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 7
    functionsReached:
    - strlen
    - BGP_PEER_SU_UNSPEC
    - peer_established
    - peer_lookup_by_hostname
    - peer_af_find
    - listnode_add
    - peer_flag_action_set
    - hash_lookup
    - peer_nsf_stop
    - peer_lookup
    - bgp_path_attribute_discard
    - peer_create_bind_dynamic_neighbor
    - bgp_session_reset
    - sockunion2hostprefix
    - BGP_EVENT_ADD
    - memset
    - prefix_match
    - snprintf
    - peer_delete
    - ALL_LIST_ELEMENTS_RO
    - peer_af_create
    - peer_group_lookup_dynamic_neighbor_range
    - zlog_debug
    - bgp_notify_send
    - if
    - peer_group_active
    - for
    - peer_create
    - assert
    - COND_FLAG
    - bgp_notify_send_with_data
    - zlog_info
    - peer_group2peer_config_copy_af
    - update_group_adjust_peer
    - bgp_route_refresh_send
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - peer_group2peer_config_copy
    - peer_group_lookup_dynamic_neighbor
    - bgp_announce_route
    - UNSET_FLAG
    - EVENT_OFF
    - bgp_debug_neighbor_events
    - family2afi
    - peer_lock
    - memcpy
    - CHECK_FLAG
    - strcmp
    - peer_drop_dynamic_neighbor
    - SET_FLAG
    - peer_lookup_dynamic_neighbor
    - bgp_timer_set
    - peer_group_af_configured
    - ALL_LIST_ELEMENTS
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_lookup_by_conf_if(struct bgp *bgp, const char *conf_if)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_create
      Src: /src/frr/bgpd/bgpd.c:4093,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgpd.c:4099,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgpd.c:4100,1
    - Dst: peer_group2peer_config_copy
      Src: /src/frr/bgpd/bgpd.c:4102,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:4114,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:4115,1
    - Dst: peer_group2peer_config_copy_af
      Src: /src/frr/bgpd/bgpd.c:4117,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - bgp
    - su
    - group
    argTypes:
    - struct bgp*
    - union sockunion*
    - struct peer_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4125
      start: 4084
    functionDepth: 6
    functionLinenumber: 4084
    functionLinenumberEnd: 4125
    functionName: peer_create_bind_dynamic_neighbor
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - peer_group2peer_config_copy_af
    - peer_af_find
    - listnode_add
    - peer_group2peer_config_copy
    - peer_af_create
    - SET_FLAG
    - peer_lock
    - peer_create
    linkageType: ''
    returnType: struct peer
    signature: "struct peer *peer_create_bind_dynamic_neighbor(struct bgp *bgp,\n\t\t\t\t\t
      \      union sockunion *su,\n\t\t\t\t\t       struct peer_group *group)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:4114,1
    - Dst: peer_af_create
      Src: /src/frr/bgpd/bgpd.c:4115,1
    - Dst: peer_group2peer_config_copy_af
      Src: /src/frr/bgpd/bgpd.c:4117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4118
      start: 4109
    functionDepth: 6
    functionLinenumber: 4109
    functionLinenumberEnd: 4118
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 17
    functionsReached:
    - peer_af_find
    - peer_group2peer_config_copy_af
    - peer_af_create
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/bgpd.c:4135,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4138,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgpd.c:4140,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4155,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4156,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgpd.c:4157,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:4163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4164,1
    - Dst: peer_group_lookup_dynamic_neighbor_range
      Src: /src/frr/bgpd/bgpd.c:4165,1
    - Dst: peer_lookup_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4175,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgpd.c:4184,1
    - Dst: peer_group_lookup_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4188,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4199,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4200,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4208,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4209,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4216,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4217,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4218,1
    - Dst: peer_group_af_configured
      Src: /src/frr/bgpd/bgpd.c:4225,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4226,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4227,1
    - Dst: peer_create_bind_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4234,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:4235,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4239,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4240,1
    - Dst: peer_drop_dynamic_neighbor
      Src: /src/frr/bgpd/bgpd.c:4246,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4254,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4255,1
    - Dst: bgp_path_attribute_discard
      Src: /src/frr/bgpd/bgpd.c:4259,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4268,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4269,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - group
    - prefix
    argTypes:
    - struct peer_group*
    - struct prefix*
    assertStmts:
    - condition: (peer)
      pos:
        line_end: 4234
        line_start: 4234
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 4276
      start: 4127
    functionDepth: 7
    functionLinenumber: 4127
    functionLinenumberEnd: 4276
    functionName: peer_group_lookup_dynamic_neighbor_range
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 4
    functionsReached:
    - strlen
    - bgp_path_attribute_discard
    - peer_create_bind_dynamic_neighbor
    - sockunion2hostprefix
    - snprintf
    - prefix_match
    - peer_group_lookup_dynamic_neighbor_range
    - zlog_debug
    - if
    - for
    - assert
    - peer_group_lookup_dynamic_neighbor
    - bgp_debug_neighbor_events
    - family2afi
    - CHECK_FLAG
    - peer_drop_dynamic_neighbor
    - peer_lookup_dynamic_neighbor
    - peer_group_af_configured
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct prefix
    signature: "struct prefix *\npeer_group_lookup_dynamic_neighbor_range(struct peer_group
      *group,\n\t\t\t\t\t struct prefix *prefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4288,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4289,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4292,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - peer
    - buf
    - size
    argTypes:
    - struct peer*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4296
      start: 4278
    functionDepth: 0
    functionLinenumber: 4278
    functionLinenumberEnd: 4296
    functionName: bgp_path_attribute_treat_as_withdraw
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - strlen
    - snprintf
    linkageType: ''
    returnType: bool
    signature: "bool bgp_path_attribute_treat_as_withdraw(struct peer *peer, char
      *buf,\n\t\t\t\t\t  size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:4301,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4316
      start: 4299
    functionDepth: 1
    functionLinenumber: 4299
    functionLinenumberEnd: 4316
    functionName: peer_active
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 3
    functionsReached:
    - BGP_PEER_SU_UNSPEC
    linkageType: ''
    returnType: bool
    signature: bool peer_active(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4336
      start: 4319
    functionDepth: 0
    functionLinenumber: 4319
    functionLinenumberEnd: 4336
    functionName: peer_active_nego
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool peer_active_nego(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:4344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4349
      start: 4339
    functionDepth: 0
    functionLinenumber: 4339
    functionLinenumberEnd: 4349
    functionName: peer_afc_received
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: bool
    signature: bool peer_afc_received(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:4357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4362
      start: 4352
    functionDepth: 0
    functionLinenumber: 4352
    functionLinenumberEnd: 4362
    functionName: peer_afc_advertised
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: bool
    signature: bool peer_afc_advertised(struct peer *peer)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4369,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:4372,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4380,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:4382,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4388,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:4389,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4394,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgpd.c:4396,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4398,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:4402,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4404,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:4407,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:4408,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 25
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - type
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - enum peer_change_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4410
      start: 4364
    functionDepth: 9
    functionLinenumber: 4364
    functionLinenumberEnd: 4410
    functionName: peer_change_action
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_established
    - peer_delete
    - CHECK_FLAG
    - bgp_route_refresh_send
    - peer_af_find
    - update_group_adjust_peer
    - SET_FLAG
    - bgp_announce_route
    - bgp_notify_send
    linkageType: ''
    returnType: void
    signature: "void peer_change_action(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \      enum peer_change_type type)"
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - action_list
    - size
    - action
    - flag
    argTypes:
    - struct peer_flag_action*
    - int
    - struct peer_flag_action*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4532
      start: 4488
    functionDepth: 0
    functionLinenumber: 4488
    functionLinenumberEnd: 4532
    functionName: peer_flag_action_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int peer_flag_action_set(const struct peer_flag_action *action_list,\n\t\t\t\tint
      size, struct peer_flag_action *action,\n\t\t\t\tuint64_t flag)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4537,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4538,1
    - Dst: peer_nsf_stop
      Src: /src/frr/bgpd/bgpd.c:4539,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4541,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:4544,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:4545,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:4546,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4551,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:4556,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4559,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:4565,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgpd.c:4567,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4572,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:4576,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:4579,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4581,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4589,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:4592,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 2
    argNames:
    - peer
    - flag
    argTypes:
    - struct peer*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4593
      start: 4534
    functionDepth: 7
    functionLinenumber: 4534
    functionLinenumberEnd: 4593
    functionName: peer_flag_modify_action
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - BGP_EVENT_ADD
    - bgp_notify_send_with_data
    - strlen
    - CHECK_FLAG
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_session_reset
    - peer_nsf_stop
    - EVENT_OFF
    - UNSET_FLAG
    - zlog_debug
    - bgp_debug_neighbor_events
    - bgp_notify_send
    - peer_group_active
    - memcpy
    linkageType: ''
    returnType: void
    signature: void peer_flag_modify_action(struct peer *peer, uint64_t flag)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4604,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:4608,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:4612,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4614,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:4618,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:4620,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgpd.c:4626,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgpd.c:4628,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:4633,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:4643,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4647,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - bgp
    - msg
    argTypes:
    - struct bgp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4648
      start: 4596
    functionDepth: 1
    functionLinenumber: 4596
    functionLinenumberEnd: 4648
    functionName: bgp_shutdown_enable
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - bgp_notify_send_with_data
    - strlen
    - zlog_info
    - ALL_LIST_ELEMENTS_RO
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - CHECK_FLAG
    - SET_FLAG
    - bgp_notify_send
    - memcpy
    linkageType: ''
    returnType: void
    signature: void bgp_shutdown_enable(struct bgp *bgp, const char *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4657,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgpd.c:4661,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4665,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:4667,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgpd.c:4668,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:4681,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4684,1
    - Dst: peer_flag_action_set
      Src: /src/frr/bgpd/bgpd.c:4685,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4689,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:4693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4694,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4699,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4702
      start: 4651
    functionDepth: 1
    functionLinenumber: 4651
    functionLinenumberEnd: 4702
    functionName: bgp_shutdown_disable
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - memset
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - peer_flag_action_set
    - UNSET_FLAG
    - bgp_timer_set
    - if
    linkageType: ''
    returnType: void
    signature: void bgp_shutdown_disable(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_modify
      Src: /src/frr/bgpd/bgpd.c:4785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - peer
    - flag
    argTypes:
    - struct peer*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4786
      start: 4783
    functionDepth: 0
    functionLinenumber: 4783
    functionLinenumberEnd: 4786
    functionName: peer_flag_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - peer_flag_modify
    linkageType: ''
    returnType: int
    signature: int peer_flag_set(struct peer *peer, uint64_t flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_modify
      Src: /src/frr/bgpd/bgpd.c:4790,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - peer
    - flag
    argTypes:
    - struct peer*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4791
      start: 4788
    functionDepth: 0
    functionLinenumber: 4788
    functionLinenumberEnd: 4791
    functionName: peer_flag_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_flag_modify
    linkageType: ''
    returnType: int
    signature: int peer_flag_unset(struct peer *peer, uint64_t flag)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:4804,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4808,1
    - Dst: peer_flag_action_set
      Src: /src/frr/bgpd/bgpd.c:4809,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:4816,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4830,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4831,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4832,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4837,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4838,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4856,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4857,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4858,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4866,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4867,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4868,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4879,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:4882,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:4887,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:4888,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4890,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4893,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:4894,1
    - Dst: bgp_clear_adj_in
      Src: /src/frr/bgpd/bgpd.c:4896,1
    - Dst: peer_change_action
      Src: /src/frr/bgpd/bgpd.c:4907,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4912,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4913,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:4920,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4923,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4929,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4935,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:4939,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:4943,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:4947,1
    - Dst: bgp_clear_adj_in
      Src: /src/frr/bgpd/bgpd.c:4949,1
    - Dst: peer_change_action
      Src: /src/frr/bgpd/bgpd.c:4967,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 83
    argCount: 5
    argNames:
    - peer
    - afi
    - safi
    - flag
    - set
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4975
      start: 4793
    functionDepth: 10
    functionLinenumber: 4793
    functionLinenumberEnd: 4975
    functionName: peer_af_flag_modify
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - COND_FLAG
    - peer_sort
    - bgp_clear_adj_in
    - peer_established
    - peer_af_flag_inherit
    - memset
    - CHECK_FLAG
    - peer_change_action
    - peer_flag_action_set
    - SET_FLAG
    - UNSET_FLAG
    - peer_group_active
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int peer_af_flag_modify(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \      uint64_t flag, bool set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_modify
      Src: /src/frr/bgpd/bgpd.c:4979,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - flag
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4980
      start: 4977
    functionDepth: 11
    functionLinenumber: 4977
    functionLinenumberEnd: 4980
    functionName: peer_af_flag_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_af_flag_modify
    linkageType: ''
    returnType: int
    signature: int peer_af_flag_set(struct peer *peer, afi_t afi, safi_t safi, uint64_t
      flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_modify
      Src: /src/frr/bgpd/bgpd.c:4984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - flag
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4985
      start: 4982
    functionDepth: 11
    functionLinenumber: 4982
    functionLinenumberEnd: 4985
    functionName: peer_af_flag_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_af_flag_modify
    linkageType: ''
    returnType: int
    signature: int peer_af_flag_unset(struct peer *peer, afi_t afi, safi_t safi, uint64_t
      flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:4990,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:4992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - peer
    - msg
    argTypes:
    - struct peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4993
      start: 4988
    functionDepth: 1
    functionLinenumber: 4988
    functionLinenumberEnd: 4993
    functionName: peer_tx_shutdown_message_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: void peer_tx_shutdown_message_set(struct peer *peer, const char *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:4997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4998
      start: 4995
    functionDepth: 0
    functionLinenumber: 4995
    functionLinenumberEnd: 4998
    functionName: peer_tx_shutdown_message_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void peer_tx_shutdown_message_unset(struct peer *peer)
  - BBCount: 59
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5017,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5022,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:5027,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5038,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5040,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5041,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5044,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5048,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5052,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5058,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5059,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5062,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5066,1
    - Dst: peer_ebgp_multihop_unset
      Src: /src/frr/bgpd/bgpd.c:5072,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5084,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5094,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5095,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5096,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5099,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5103,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5106,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:5112,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5113,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5114,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5118,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5123,1
    - Dst: peer_role_set
      Src: /src/frr/bgpd/bgpd.c:5130,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5137,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5142,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5148,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5150,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5153,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5159,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5164,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5167,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5169,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5176,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:5180,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5181,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5187,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:5189,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5189,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5192,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5194,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5200,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5206,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5208,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5211,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5214,1
    - Dst: peer_role_unset
      Src: /src/frr/bgpd/bgpd.c:5221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5228,1
    - Dst: peer_role_set
      Src: /src/frr/bgpd/bgpd.c:5229,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5231,1
    - Dst: peer_role_set
      Src: /src/frr/bgpd/bgpd.c:5232,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:5242,1
    - Dst: peer_description_unset
      Src: /src/frr/bgpd/bgpd.c:5245,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5247,1
    - Dst: peer_update_source_if_set
      Src: /src/frr/bgpd/bgpd.c:5251,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:5257,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:5258,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:5259,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5261,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:5263,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5264,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5268,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5270,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5272,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5275,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5279,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5289,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5291,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:5296,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5302,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:5303,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5304,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5308,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5310,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5313,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5317,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:5329,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgpd.c:5331,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5333,1
    - Dst: sockunion_dup
      Src: /src/frr/bgpd/bgpd.c:5335,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5336,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5339,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5341,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5343,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5346,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5350,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5362,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgpd.c:5367,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5369,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5373,1
    - Dst: sockunion_dup
      Src: /src/frr/bgpd/bgpd.c:5374,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5375,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5378,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5380,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5383,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5396,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5400,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:5401,1
    - Dst: PEER_SU_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5402,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5403,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5407,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5408,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5414,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5416,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5418,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5421,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5425,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5441,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5446,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5447,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5449,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5452,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5454,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5457,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5461,1
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:5473,1
    - Dst: peer_subgroup
      Src: /src/frr/bgpd/bgpd.c:5475,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:5479,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5483,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5485,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5497,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5500,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:5502,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:5504,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5510,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5512,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5522,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5531,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5533,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5534,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5534,1
    - Dst: bgp_default_originate
      Src: /src/frr/bgpd/bgpd.c:5535,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5536,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5547,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5549,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5554,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5560,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5562,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5566,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:5568,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:5570,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5574,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5575,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5576,1
    - Dst: bgp_default_originate
      Src: /src/frr/bgpd/bgpd.c:5577,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5578,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5591,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:5592,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5594,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5597,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5603,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5606,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5608,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5611,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5617,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5619,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5620,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5620,1
    - Dst: bgp_default_originate
      Src: /src/frr/bgpd/bgpd.c:5621,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5622,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5633,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:5639,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5639,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5644,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5647,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5652,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5657,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5658,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5658,1
    - Dst: bgp_default_originate
      Src: /src/frr/bgpd/bgpd.c:5659,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5660,1
    CyclomaticComplexity: 81
    EdgeCount: 81
    ICount: 239
    argCount: 2
    argNames:
    - peer
    - ttl
    argTypes:
    - struct peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5662
      start: 5002
    functionDepth: 12
    functionLinenumber: 5002
    functionLinenumberEnd: 5662
    functionName: peer_ebgp_multihop_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_subgroup
    - peer_established
    - peer_af_flag_inherit
    - peer_af_find
    - sockunion_dup
    - peer_af_flag_set
    - peer_flag_set
    - peer_description_unset
    - sockunion_cmp
    - route_map_counter_increment
    - peer_af_flag_unset
    - PEER_SU_ATTR_INHERIT
    - bgp_peer_bfd_update_source
    - bgp_session_reset
    - peer_flag_inherit
    - peer_role_set
    - bgp_notify_send
    - peer_group_active
    - if
    - bgp_default_originate
    - peer_ebgp_multihop_unset
    - sockunion_free
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - update_group_adjust_peer
    - peer_flag_unset
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - bgp_announce_route
    - XFREE
    - peer_update_source_if_set
    - XSTRDUP
    - PEER_ATTR_INHERIT
    - route_map_counter_decrement
    - CHECK_FLAG
    - strcmp
    - route_map_lookup_by_name
    - SET_FLAG
    - peer_role_unset
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int peer_ebgp_multihop_set(struct peer *peer, int ttl)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:5329,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgpd.c:5331,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5333,1
    - Dst: sockunion_dup
      Src: /src/frr/bgpd/bgpd.c:5335,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5336,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5339,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5341,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5343,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5346,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5350,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5362,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgpd.c:5367,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5369,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5373,1
    - Dst: sockunion_dup
      Src: /src/frr/bgpd/bgpd.c:5374,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5375,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5378,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5380,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5383,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5387,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - peer
    - su
    argTypes:
    - struct peer*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5389
      start: 5323
    functionDepth: 2
    functionLinenumber: 5323
    functionLinenumberEnd: 5389
    functionName: peer_update_source_addr_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - sockunion_free
    - CHECK_FLAG
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - sockunion_dup
    - peer_flag_set
    - sockunion_cmp
    - SET_FLAG
    - XFREE
    - bgp_notify_send
    - ALL_LIST_ELEMENTS
    - bgp_peer_bfd_update_source
    - bgp_session_reset
    linkageType: ''
    returnType: void
    signature: void peer_update_source_addr_set(struct peer *peer, const union sockunion
      *su)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5396,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5400,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:5401,1
    - Dst: PEER_SU_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5402,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5403,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5407,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5408,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5414,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5416,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5418,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5421,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5425,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5441,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5446,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgpd.c:5447,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5449,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:5452,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:5454,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:5457,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgpd.c:5461,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5463
      start: 5391
    functionDepth: 3
    functionLinenumber: 5391
    functionLinenumberEnd: 5463
    functionName: peer_update_source_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - PEER_SU_ATTR_INHERIT
    - sockunion_free
    - CHECK_FLAG
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - peer_flag_unset
    - bgp_session_reset
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - XFREE
    - bgp_notify_send
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - bgp_peer_bfd_update_source
    - peer_flag_inherit
    linkageType: ''
    returnType: void
    signature: void peer_update_source_unset(struct peer *peer)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:5473,1
    - Dst: peer_subgroup
      Src: /src/frr/bgpd/bgpd.c:5475,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:5479,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5483,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5485,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5497,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5500,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:5502,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:5504,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5510,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5512,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5522,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5531,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5533,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5534,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5534,1
    - Dst: bgp_default_originate
      Src: /src/frr/bgpd/bgpd.c:5535,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5536,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5547,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5549,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5554,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5560,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5562,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5566,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:5568,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:5570,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5574,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5575,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5576,1
    - Dst: bgp_default_originate
      Src: /src/frr/bgpd/bgpd.c:5577,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5578,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 5
    argNames:
    - peer
    - afi
    - safi
    - rmap
    - route_map
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - char*
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5583
      start: 5465
    functionDepth: 12
    functionLinenumber: 5465
    functionLinenumberEnd: 5583
    functionName: peer_default_originate_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_subgroup
    - peer_established
    - route_map_counter_decrement
    - CHECK_FLAG
    - strcmp
    - update_group_adjust_peer
    - peer_af_find
    - peer_af_flag_set
    - route_map_lookup_by_name
    - route_map_counter_increment
    - UNSET_FLAG
    - bgp_announce_route
    - SET_FLAG
    - XFREE
    - ALL_LIST_ELEMENTS
    - bgp_default_originate
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int peer_default_originate_set(struct peer *peer, afi_t afi, safi_t
      safi,\n\t\t\t       const char *rmap, struct route_map *route_map)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5591,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:5592,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5594,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5597,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5603,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5606,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:5608,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:5611,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5617,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5619,1
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5620,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5620,1
    - Dst: bgp_default_originate
      Src: /src/frr/bgpd/bgpd.c:5621,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5622,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5633,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:5639,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5639,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5644,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:5647,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5651
      start: 5585
    functionDepth: 12
    functionLinenumber: 5585
    functionLinenumberEnd: 5651
    functionName: peer_default_originate_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_established
    - peer_af_flag_inherit
    - route_map_counter_decrement
    - CHECK_FLAG
    - update_group_adjust_peer
    - peer_af_find
    - route_map_lookup_by_name
    - PEER_STR_ATTR_INHERIT
    - peer_af_flag_unset
    - bgp_announce_route
    - UNSET_FLAG
    - XFREE
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - if
    - bgp_default_originate
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_default_originate_unset(struct peer *peer, afi_t afi, safi_t
      safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:5670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - peer
    - port
    argTypes:
    - struct peer*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5671
      start: 5667
    functionDepth: 1
    functionLinenumber: 5667
    functionLinenumberEnd: 5671
    functionName: peer_port_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_flag_set
    linkageType: ''
    returnType: void
    signature: void peer_port_set(struct peer *peer, uint16_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5677
      start: 5673
    functionDepth: 1
    functionLinenumber: 5673
    functionLinenumberEnd: 5677
    functionName: peer_port_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_flag_unset
    linkageType: ''
    returnType: void
    signature: void peer_port_unset(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - peer
    - tcp_mss
    argTypes:
    - struct peer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5687
      start: 5683
    functionDepth: 1
    functionLinenumber: 5683
    functionLinenumberEnd: 5687
    functionName: peer_tcp_mss_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void peer_tcp_mss_set(struct peer *peer, uint32_t tcp_mss)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5695,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5697
      start: 5693
    functionDepth: 1
    functionLinenumber: 5693
    functionLinenumberEnd: 5697
    functionName: peer_tcp_mss_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void peer_tcp_mss_unset(struct peer *peer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:5708,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:5708,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5709,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:5710,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5712,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgpd.c:5715,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5718,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5719,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:5720,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - outbound
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5723
      start: 5704
    functionDepth: 9
    functionLinenumber: 5704
    functionLinenumberEnd: 5723
    functionName: peer_on_policy_change
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - peer_established
    - update_group_adjust_peer
    - peer_af_find
    - CHECK_FLAG
    - bgp_route_refresh_send
    - bgp_announce_route
    - bgp_soft_reconfig_in
    linkageType: ''
    returnType: void
    signature: "void peer_on_policy_change(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \  int outbound)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:5733,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:5736,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5740,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5747,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5749,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5754,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:5757,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - weight
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5762
      start: 5727
    functionDepth: 12
    functionLinenumber: 5727
    functionLinenumberEnd: 5762
    functionName: peer_weight_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - peer_on_policy_change
    - peer_af_flag_set
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int peer_weight_set(struct peer *peer, afi_t afi, safi_t safi, uint16_t
      weight)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5769,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5773,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:5774,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5775,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:5777,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5782,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:5784,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5787,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5794,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5801,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5805,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:5807,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5811
      start: 5764
    functionDepth: 12
    functionLinenumber: 5764
    functionLinenumberEnd: 5811
    functionName: peer_weight_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_af_flag_inherit
    - CHECK_FLAG
    - peer_on_policy_change
    - peer_af_flag_unset
    - UNSET_FLAG
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_weight_unset(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:5828,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5833,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5840,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5842,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5846,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5847,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5848,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - peer
    - keepalive
    - holdtime
    argTypes:
    - struct peer*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5852
      start: 5813
    functionDepth: 1
    functionLinenumber: 5813
    functionLinenumberEnd: 5852
    functionName: peer_timers_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - peer_flag_set
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_timers_set(struct peer *peer, uint32_t keepalive, uint32_t
      holdtime)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5860,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:5861,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5862,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5863,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5866,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5872,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5879,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5881,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5885,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5891
      start: 5854
    functionDepth: 3
    functionLinenumber: 5854
    functionLinenumberEnd: 5891
    functionName: peer_timers_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - peer_flag_unset
    - peer_flag_inherit
    - UNSET_FLAG
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_timers_unset(struct peer *peer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:5902,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5907,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5908,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:5909,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5910,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5911,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5919,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5921,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5925,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5929,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:5930,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5931,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5932,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - peer
    - connect
    argTypes:
    - struct peer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5937
      start: 5893
    functionDepth: 2
    functionLinenumber: 5893
    functionLinenumberEnd: 5937
    functionName: peer_timers_connect_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - BGP_EVENT_ADD
    - peer_established
    - CHECK_FLAG
    - peer_flag_set
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - peer_active
    linkageType: ''
    returnType: int
    signature: int peer_timers_connect_set(struct peer *peer, uint32_t connect)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:5945,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:5946,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:5947,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:5950,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5961,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5962,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:5963,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5964,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5965,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:5973,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:5975,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:5979,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:5983,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:5984,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5985,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:5986,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5991
      start: 5939
    functionDepth: 3
    functionLinenumber: 5939
    functionLinenumberEnd: 5991
    functionName: peer_timers_connect_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - BGP_EVENT_ADD
    - peer_established
    - CHECK_FLAG
    - peer_flag_unset
    - peer_flag_inherit
    - UNSET_FLAG
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - peer_active
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_timers_connect_unset(struct peer *peer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:6002,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6007,1
    - Dst: update_group_adjust_peer_afs
      Src: /src/frr/bgpd/bgpd.c:6009,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:6010,1
    - Dst: bgp_announce_route_all
      Src: /src/frr/bgpd/bgpd.c:6011,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6021,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6023,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6027,1
    - Dst: update_group_adjust_peer_afs
      Src: /src/frr/bgpd/bgpd.c:6032,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:6033,1
    - Dst: bgp_announce_route_all
      Src: /src/frr/bgpd/bgpd.c:6034,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - peer
    - routeadv
    argTypes:
    - struct peer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6038
      start: 5993
    functionDepth: 3
    functionLinenumber: 5993
    functionLinenumberEnd: 6038
    functionName: peer_advertise_interval_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_established
    - CHECK_FLAG
    - bgp_announce_route_all
    - peer_flag_set
    - SET_FLAG
    - update_group_adjust_peer_afs
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int peer_advertise_interval_set(struct peer *peer, uint32_t routeadv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:6046,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6047,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6048,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6051,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6064,1
    - Dst: update_group_adjust_peer_afs
      Src: /src/frr/bgpd/bgpd.c:6066,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:6067,1
    - Dst: bgp_announce_route_all
      Src: /src/frr/bgpd/bgpd.c:6068,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6078,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6080,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6084,1
    - Dst: update_group_adjust_peer_afs
      Src: /src/frr/bgpd/bgpd.c:6091,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:6092,1
    - Dst: bgp_announce_route_all
      Src: /src/frr/bgpd/bgpd.c:6093,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6097
      start: 6040
    functionDepth: 3
    functionLinenumber: 6040
    functionLinenumberEnd: 6097
    functionName: peer_advertise_interval_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_established
    - CHECK_FLAG
    - bgp_announce_route_all
    - peer_flag_unset
    - peer_flag_inherit
    - UNSET_FLAG
    - update_group_adjust_peer_afs
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_advertise_interval_unset(struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:6108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6113,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:6119,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6121,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - peer
    - delayopen
    argTypes:
    - struct peer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6134
      start: 6102
    functionDepth: 1
    functionLinenumber: 6102
    functionLinenumberEnd: 6134
    functionName: peer_timers_delayopen_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - peer_flag_set
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: int peer_timers_delayopen_set(struct peer *peer, uint32_t delayopen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:6145,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6146,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6147,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6152,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6160,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:6166,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6168,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6181
      start: 6139
    functionDepth: 3
    functionLinenumber: 6139
    functionLinenumberEnd: 6181
    functionName: peer_timers_delayopen_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - peer_flag_unset
    - peer_flag_inherit
    - UNSET_FLAG
    - peer_group_active
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_timers_delayopen_unset(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6186,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - peer
    - str
    argTypes:
    - struct peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6188
      start: 6184
    functionDepth: 1
    functionLinenumber: 6184
    functionLinenumberEnd: 6188
    functionName: peer_interface_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: void peer_interface_set(struct peer *peer, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6193
      start: 6190
    functionDepth: 0
    functionLinenumber: 6190
    functionLinenumberEnd: 6193
    functionName: peer_interface_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void peer_interface_unset(struct peer *peer)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:6206,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6209,1
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:6211,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6214,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6218,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6221,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6224,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6229,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6236,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6238,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6243,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6246,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6248,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6255,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6257,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6260,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 37
    argCount: 5
    argNames:
    - peer
    - afi
    - safi
    - allow_num
    - origin
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6266
      start: 6196
    functionDepth: 12
    functionLinenumber: 6196
    functionLinenumberEnd: 6266
    functionName: peer_allowas_in_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - peer_on_policy_change
    - peer_af_flag_set
    - peer_af_flag_unset
    - SET_FLAG
    - UNSET_FLAG
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int peer_allowas_in_set(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\tint
      allow_num, int origin)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6274,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:6278,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6279,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6280,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6282,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6283,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6289,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6290,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6292,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6295,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6302,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6304,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6309,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6310,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6313,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6317
      start: 6268
    functionDepth: 12
    functionLinenumber: 6268
    functionLinenumberEnd: 6317
    functionName: peer_allowas_in_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_af_flag_inherit
    - CHECK_FLAG
    - peer_on_policy_change
    - peer_af_flag_unset
    - UNSET_FLAG
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_allowas_in_unset(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6332,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6334,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:6337,1
    - Dst: peer_flag_modify
      Src: /src/frr/bgpd/bgpd.c:6338,1
    - Dst: peer_flag_modify
      Src: /src/frr/bgpd/bgpd.c:6339,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6347,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6348,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:6351,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6354,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6361,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6363,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6367,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6372,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6378,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:6379,1
    - Dst: COND_FLAG
      Src: /src/frr/bgpd/bgpd.c:6381,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6386,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 5
    argNames:
    - peer
    - as
    - no_prepend
    - replace_as
    - as_str
    argTypes:
    - struct peer*
    - as_t
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6390
      start: 6319
    functionDepth: 3
    functionLinenumber: 6319
    functionLinenumberEnd: 6390
    functionName: peer_local_as_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - COND_FLAG
    - peer_flag_modify
    - CHECK_FLAG
    - peer_flag_set
    - SET_FLAG
    - XFREE
    - ALL_LIST_ELEMENTS
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int peer_local_as_set(struct peer *peer, as_t as, bool no_prepend,\n\t\t
      \     bool replace_as, const char *as_str)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6397,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:6401,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6402,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6403,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6404,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6405,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6408,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6409,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6410,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6412,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6416,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:6418,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:6420,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:6423,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6433,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6435,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6439,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6440,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6441,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6443,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:6446,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:6448,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:6451,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6455
      start: 6392
    functionDepth: 3
    functionLinenumber: 6392
    functionLinenumberEnd: 6455
    functionName: peer_local_as_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - CHECK_FLAG
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - peer_flag_unset
    - bgp_session_reset
    - peer_flag_inherit
    - UNSET_FLAG
    - XFREE
    - bgp_notify_send
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_local_as_unset(struct peer *peer)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/bgpd/bgpd.c:6462,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgpd.c:6469,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:6470,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6472,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6473,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6476,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:6478,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:6479,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:6482,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:6488,1
    - Dst: bgp_md5_set
      Src: /src/frr/bgpd/bgpd.c:6490,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6498,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6500,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:6504,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6508,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6510,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6511,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:6514,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:6515,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:6518,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:6521,1
    - Dst: bgp_md5_set
      Src: /src/frr/bgpd/bgpd.c:6521,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:6529,1
    - Dst: bgp_md5_set_prefix
      Src: /src/frr/bgpd/bgpd.c:6530,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:6531,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:6531,1
    - Dst: bgp_md5_set_prefix
      Src: /src/frr/bgpd/bgpd.c:6532,1
    - Dst: peer_password_unset
      Src: /src/frr/bgpd/bgpd.c:6537,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:6542,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6542,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:6546,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:6546,1
    - Dst: peer_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:6547,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6548,1
    - Dst: peer_flag_unset
      Src: /src/frr/bgpd/bgpd.c:6552,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6553,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6557,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:6559,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:6560,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:6563,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:6566,1
    - Dst: bgp_md5_unset
      Src: /src/frr/bgpd/bgpd.c:6567,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6576,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6578,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6582,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6583,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:6586,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:6587,1
    - Dst: bgp_session_reset
      Src: /src/frr/bgpd/bgpd.c:6590,1
    - Dst: BGP_PEER_SU_UNSPEC
      Src: /src/frr/bgpd/bgpd.c:6593,1
    - Dst: bgp_md5_unset
      Src: /src/frr/bgpd/bgpd.c:6594,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:6601,1
    - Dst: bgp_md5_unset_prefix
      Src: /src/frr/bgpd/bgpd.c:6602,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:6603,1
    - Dst: bgp_md5_unset_prefix
      Src: /src/frr/bgpd/bgpd.c:6604,1
    - Dst: peer_distribute_set
      Src: /src/frr/bgpd/bgpd.c:6611,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6626,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6627,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6628,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6631,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6633,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6635,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6646,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6648,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6655,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6658,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6659,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6662,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 2
    argNames:
    - peer
    - password
    argTypes:
    - struct peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6667
      start: 6458
    functionDepth: 10
    functionLinenumber: 6458
    functionLinenumberEnd: 6667
    functionName: peer_password_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - strlen
    - BGP_PEER_SU_UNSPEC
    - bgp_md5_unset_prefix
    - peer_flag_set
    - access_list_lookup
    - bgp_md5_set_prefix
    - bgp_session_reset
    - peer_flag_inherit
    - bgp_md5_set
    - peer_distribute_set
    - ALL_LIST_ELEMENTS_RO
    - peer_password_unset
    - bgp_notify_send
    - if
    - peer_group_active
    - for
    - bgp_md5_unset
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - peer_flag_unset
    - peer_on_policy_change
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - XFREE
    - XSTRDUP
    - CHECK_FLAG
    - strcmp
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int peer_password_set(struct peer *peer, const char *password)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6679,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:6683,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6684,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6687,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6700,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6702,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6713,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6715,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6722,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6728,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - direct
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6733
      start: 6669
    functionDepth: 10
    functionLinenumber: 6669
    functionLinenumberEnd: 6733
    functionName: peer_distribute_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - peer_on_policy_change
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - XFREE
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_distribute_unset(struct peer *peer, afi_t afi, safi_t safi,
      int direct)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6748,1
    - Dst: update_group_policy_update
      Src: /src/frr/bgpd/bgpd.c:6750,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6753,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6761,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6771,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6779,1
    - Dst: vnc_prefix_list_update
      Src: /src/frr/bgpd/bgpd.c:6790,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - access
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6793
      start: 6736
    functionDepth: 1
    functionLinenumber: 6736
    functionLinenumberEnd: 6793
    functionName: peer_distribute_update
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - update_group_policy_update
    - ALL_LIST_ELEMENTS
    - vnc_prefix_list_update
    - access_list_lookup
    linkageType: ''
    returnType: void
    signature: void peer_distribute_update(struct access_list *access)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6761,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6769
      start: 6754
    functionDepth: 1
    functionLinenumber: 6754
    functionLinenumberEnd: 6769
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 19
    functionsReached:
    - access_list_lookup
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6787
      start: 6772
    functionDepth: 1
    functionLinenumber: 6772
    functionLinenumberEnd: 6787
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 19
    functionsReached:
    - access_list_lookup
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6811,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6812,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6813,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6816,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6818,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6820,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6831,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6833,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6840,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:6843,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6844,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6847,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 5
    argNames:
    - peer
    - afi
    - safi
    - direct
    - name
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6852
      start: 6796
    functionDepth: 10
    functionLinenumber: 6796
    functionLinenumberEnd: 6852
    functionName: peer_prefix_list_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - prefix_list_lookup
    - CHECK_FLAG
    - peer_on_policy_change
    - SET_FLAG
    - XFREE
    - ALL_LIST_ELEMENTS
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int peer_prefix_list_set(struct peer *peer, afi_t afi, safi_t safi,
      int direct,\n\t\t\t const char *name)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:6865,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:6869,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6870,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:6873,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6879,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6886,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6888,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6899,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6901,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:6908,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:6914,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - direct
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6919
      start: 6854
    functionDepth: 10
    functionLinenumber: 6854
    functionLinenumberEnd: 6919
    functionName: peer_prefix_list_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - peer_on_policy_change
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - XFREE
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: "int peer_prefix_list_unset(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \  int direct)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6934,1
    - Dst: update_group_policy_update
      Src: /src/frr/bgpd/bgpd.c:6939,1
    - Dst: prefix_list_name
      Src: /src/frr/bgpd/bgpd.c:6941,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:6943,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6943,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:6947,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6951,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6964,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6966,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:6968,1
    - Dst: BGP_CLEAR_SOFT_IN_ORF_PREFIX
      Src: /src/frr/bgpd/bgpd.c:6973,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:6976,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:6977,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/bgpd.c:6984,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7010,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:7011,1
    - Dst: as_list_lookup
      Src: /src/frr/bgpd/bgpd.c:7012,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7015,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7017,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7019,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7030,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7032,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7039,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:7042,1
    - Dst: as_list_lookup
      Src: /src/frr/bgpd/bgpd.c:7043,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7046,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7051
      start: 6922
    functionDepth: 10
    functionLinenumber: 6922
    functionLinenumberEnd: 7051
    functionName: peer_prefix_list_update
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_name
    - BGP_CLEAR_SOFT_IN_ORF_PREFIX
    - as_list_lookup
    - update_group_policy_update
    - CHECK_FLAG
    - peer_on_policy_change
    - SET_FLAG
    - XFREE
    - ALL_LIST_ELEMENTS
    - for
    - FOREACH_AFI_SAFI
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void peer_prefix_list_update(struct prefix_list *plist)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7063,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:7067,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7068,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7071,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7077,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7084,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7086,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7097,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7099,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7106,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7112,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - direct
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7117
      start: 7053
    functionDepth: 10
    functionLinenumber: 7053
    functionLinenumberEnd: 7117
    functionName: peer_aslist_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - peer_on_policy_change
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - XFREE
    - peer_group_active
    - ALL_LIST_ELEMENTS
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_aslist_unset(struct peer *peer, afi_t afi, safi_t safi, int
      direct)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7131,1
    - Dst: update_group_policy_update
      Src: /src/frr/bgpd/bgpd.c:7132,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:7135,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7135,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:7139,1
    - Dst: as_list_lookup
      Src: /src/frr/bgpd/bgpd.c:7143,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7152,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgpd.c:7153,1
    - Dst: as_list_lookup
      Src: /src/frr/bgpd/bgpd.c:7160,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgpd.c:7175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - aslist_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7176
      start: 7119
    functionDepth: 1
    functionLinenumber: 7119
    functionLinenumberEnd: 7176
    functionName: peer_aslist_update
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - as_list_lookup
    - update_group_policy_update
    - route_map_notify_dependencies
    - ALL_LIST_ELEMENTS
    - for
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: void peer_aslist_update(const char *aslist_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: peer_aslist_update
      Src: /src/frr/bgpd/bgpd.c:7180,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/bgpd/bgpd.c:7181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - aslist_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7182
      start: 7178
    functionDepth: 2
    functionLinenumber: 7178
    functionLinenumberEnd: 7182
    functionName: peer_aslist_del
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_aslist_update
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void peer_aslist_del(const char *aslist_name)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgpd.c:7202,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:7205,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7206,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7208,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:7209,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:7211,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7214,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7216,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7218,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7229,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:7232,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7232,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:7239,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7240,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7242,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:7243,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:7245,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7248,1
    - Dst: peer_route_map_unset
      Src: /src/frr/bgpd/bgpd.c:7255,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7265,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:7268,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7269,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7272,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:7281,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7282,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7290,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7292,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7303,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:7309,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7309,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:7316,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7317,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7319,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7324,1
    - Dst: peer_unsuppress_map_set
      Src: /src/frr/bgpd/bgpd.c:7332,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7343,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:7344,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:7346,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7349,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7351,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7353,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7363,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:7369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7369,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:7376,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7377,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7379,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:7380,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/bgpd.c:7382,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7385,1
    - Dst: peer_unsuppress_map_unset
      Src: /src/frr/bgpd/bgpd.c:7392,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:7402,1
    - Dst: PEER_STR_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7403,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7406,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:7414,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7415,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7423,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7425,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7435,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:7441,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7441,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgpd.c:7448,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgpd.c:7449,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/bgpd/bgpd.c:7451,1
    - Dst: peer_on_policy_change
      Src: /src/frr/bgpd/bgpd.c:7456,1
    - Dst: peer_maximum_prefix_clear_overflow
      Src: /src/frr/bgpd/bgpd.c:7462,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7464,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7467,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:7469,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:7470,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:7471,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:7475,1
    - Dst: peer_maximum_prefix_set
      Src: /src/frr/bgpd/bgpd.c:7479,1
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:7490,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:7492,1
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:7495,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:7497,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7505,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:7507,1
    - Dst: bgp_maximum_prefix_overflow
      Src: /src/frr/bgpd/bgpd.c:7508,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7518,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7520,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7530,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7533,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7537,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7540,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:7544,1
    - Dst: bgp_maximum_prefix_overflow
      Src: /src/frr/bgpd/bgpd.c:7545,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 100
    argCount: 6
    argNames:
    - peer
    - afi
    - safi
    - direct
    - name
    - route_map
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    - char*
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7549
      start: 7185
    functionDepth: 12
    functionLinenumber: 7185
    functionLinenumberEnd: 7549
    functionName: peer_route_map_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_established
    - peer_maximum_prefix_set
    - peer_af_flag_set
    - route_map_counter_increment
    - peer_af_flag_unset
    - BGP_EVENT_ADD
    - zlog_debug
    - peer_unsuppress_map_unset
    - bgp_maximum_prefix_overflow
    - peer_group_active
    - if
    - peer_on_policy_change
    - PEER_STR_ATTR_INHERIT
    - UNSET_FLAG
    - EVENT_OFF
    - XFREE
    - bgp_debug_neighbor_events
    - peer_maximum_prefix_clear_overflow
    - PEER_ATTR_INHERIT
    - XSTRDUP
    - route_map_counter_decrement
    - CHECK_FLAG
    - strcmp
    - route_map_lookup_by_name
    - SET_FLAG
    - peer_unsuppress_map_set
    - peer_route_map_unset
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int peer_route_map_set(struct peer *peer, afi_t afi, safi_t safi,
      int direct,\n\t\t       const char *name, struct route_map *route_map)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:7554,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:7555,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:7556,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:7558,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7560,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7561,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7562,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:7568,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:7569,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:7570,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7579,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:7583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7585,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7591,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7593,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7595,1
    - Dst: peer_maximum_prefix_clear_overflow
      Src: /src/frr/bgpd/bgpd.c:7601,1
    - Dst: peer_maximum_prefix_clear_overflow
      Src: /src/frr/bgpd/bgpd.c:7604,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7608
      start: 7551
    functionDepth: 12
    functionLinenumber: 7551
    functionLinenumberEnd: 7608
    functionName: peer_maximum_prefix_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 1
    functionsReached:
    - peer_af_flag_inherit
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - peer_af_flag_unset
    - UNSET_FLAG
    - peer_group_active
    - peer_maximum_prefix_clear_overflow
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_maximum_prefix_unset(struct peer *peer, afi_t afi, safi_t
      safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgpd.c:7613,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:7613,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:7615,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:7616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7617
      start: 7610
    functionDepth: 9
    functionLinenumber: 7610
    functionLinenumberEnd: 7617
    functionName: peer_maximum_prefix_out_refresh_routes
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_established
    - bgp_announce_route
    - update_group_adjust_peer
    - peer_af_find
    linkageType: ''
    returnType: void
    signature: "void peer_maximum_prefix_out_refresh_routes(struct peer *peer, afi_t
      afi,\n\t\t\t\t\t    safi_t safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_flag_set
      Src: /src/frr/bgpd/bgpd.c:7626,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7631,1
    - Dst: peer_maximum_prefix_out_refresh_routes
      Src: /src/frr/bgpd/bgpd.c:7633,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7643,1
    - Dst: peer_maximum_prefix_out_refresh_routes
      Src: /src/frr/bgpd/bgpd.c:7650,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - max
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7653
      start: 7619
    functionDepth: 12
    functionLinenumber: 7619
    functionLinenumberEnd: 7653
    functionName: peer_maximum_prefix_out_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_af_flag_set
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    - peer_maximum_prefix_out_refresh_routes
    linkageType: ''
    returnType: int
    signature: "int peer_maximum_prefix_out_set(struct peer *peer, afi_t afi, safi_t
      safi,\n\t\t\t\tuint32_t max)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:7660,1
    - Dst: peer_af_flag_inherit
      Src: /src/frr/bgpd/bgpd.c:7661,1
    - Dst: PEER_ATTR_INHERIT
      Src: /src/frr/bgpd/bgpd.c:7662,1
    - Dst: peer_maximum_prefix_out_refresh_routes
      Src: /src/frr/bgpd/bgpd.c:7664,1
    - Dst: peer_af_flag_unset
      Src: /src/frr/bgpd/bgpd.c:7669,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7673,1
    - Dst: peer_maximum_prefix_out_refresh_routes
      Src: /src/frr/bgpd/bgpd.c:7675,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:7683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7685,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7691,1
    - Dst: peer_maximum_prefix_out_refresh_routes
      Src: /src/frr/bgpd/bgpd.c:7695,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7698
      start: 7655
    functionDepth: 12
    functionLinenumber: 7655
    functionLinenumberEnd: 7698
    functionName: peer_maximum_prefix_out_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_maximum_prefix_out_refresh_routes
    - peer_af_flag_inherit
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - peer_af_flag_unset
    - UNSET_FLAG
    - peer_group_active
    - PEER_ATTR_INHERIT
    linkageType: ''
    returnType: int
    signature: int peer_maximum_prefix_out_unset(struct peer *peer, afi_t afi, safi_t
      safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7706,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:7708,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7712,1
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgpd.c:7713,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7717
      start: 7700
    functionDepth: 3
    functionLinenumber: 7700
    functionLinenumberEnd: 7717
    functionName: is_ebgp_multihop_configured
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int is_ebgp_multihop_configured(struct peer *peer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:7733,1
    - Dst: is_ebgp_multihop_configured
      Src: /src/frr/bgpd/bgpd.c:7749,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7752,1
    - Dst: peer_ebgp_multihop_set
      Src: /src/frr/bgpd/bgpd.c:7760,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7767,1
    - Dst: peer_ebgp_multihop_set
      Src: /src/frr/bgpd/bgpd.c:7779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7787,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgpd.c:7791,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgpd.c:7795,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7801,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgpd.c:7823,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 2
    argNames:
    - peer
    - gtsm_hops
    argTypes:
    - struct peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7828
      start: 7726
    functionDepth: 13
    functionLinenumber: 7726
    functionLinenumberEnd: 7828
    functionName: peer_ttl_security_hops_set
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - peer_ebgp_multihop_set
    - is_ebgp_multihop_configured
    - CHECK_FLAG
    - zlog_debug
    - sockopt_minttl
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int peer_ttl_security_hops_set(struct peer *peer, int gtsm_hops)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:7839,1
    - Dst: peer_group_active
      Src: /src/frr/bgpd/bgpd.c:7843,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7848,1
    - Dst: peer_ebgp_multihop_unset
      Src: /src/frr/bgpd/bgpd.c:7855,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgpd.c:7858,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgpd.c:7863,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:7868,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:7870,1
    - Dst: peer_ebgp_multihop_unset
      Src: /src/frr/bgpd/bgpd.c:7871,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:7873,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgpd.c:7874,1
    - Dst: sockopt_minttl
      Src: /src/frr/bgpd/bgpd.c:7880,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7893,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7894,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7895,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7897,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7899,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7901,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7903,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7905,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7907,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7909,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7911,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgpd.c:7913,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7927,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7928,1
    - Dst: peer_maximum_prefix_clear_overflow
      Src: /src/frr/bgpd/bgpd.c:7929,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:7933,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:7934,1
    - Dst: bgp_session_reset_safe
      Src: /src/frr/bgpd/bgpd.c:7937,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:7947,1
    - Dst: sockopt_tcp_rtt
      Src: /src/frr/bgpd/bgpd.c:7953,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:7957,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7959,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7961,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:7964,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7968,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7970,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7972,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7977,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7984,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:7986,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:7990,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7995,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:7997,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:8002,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgpd.c:8014,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:8018,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:8019,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:8020,1
    - Dst: peer_reset_message_stats
      Src: /src/frr/bgpd/bgpd.c:8029,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgpd.c:8044,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgpd.c:8045,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8047,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgpd.c:8052,1
    - Dst: gmtime_r
      Src: /src/frr/bgpd/bgpd.c:8054,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8057,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8060,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8063,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8066,1
    - Dst: time
      Src: /src/frr/bgpd/bgpd.c:8071,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgpd.c:8072,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgpd.c:8073,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgpd.c:8074,1
    - Dst: qobj_init
      Src: /src/frr/bgpd/bgpd.c:8084,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:8086,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:8089,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:8090,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgpd.c:8094,1
    - Dst: bgp_mac_init
      Src: /src/frr/bgpd/bgpd.c:8106,1
    - Dst: bf_init
      Src: /src/frr/bgpd/bgpd.c:8111,1
    - Dst: bf_assign_zero_index
      Src: /src/frr/bgpd/bgpd.c:8112,1
    - Dst: bgp_lp_init
      Src: /src/frr/bgpd/bgpd.c:8115,1
    - Dst: bgp_l3nhg_init
      Src: /src/frr/bgpd/bgpd.c:8117,1
    - Dst: bgp_evpn_mh_init
      Src: /src/frr/bgpd/bgpd.c:8118,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgpd.c:8119,1
    - Dst: bgp_vrf_lookup_by_instance_type
      Src: /src/frr/bgpd/bgpd.c:8131,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8140,1
    - Dst: bgp_connected_delete
      Src: /src/frr/bgpd/bgpd.c:8141,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgpd.c:8151,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8152,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8152,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8154,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8154,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8158,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8158,1
    - Dst: bgp_instasn_autocomplete
      Src: /src/frr/bgpd/bgpd.c:8162,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8170,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:8173,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8179,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8180,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8180,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/bgpd/bgpd.c:8193,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:8195,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:8196,1
    - Dst: frr_pthread_new
      Src: /src/frr/bgpd/bgpd.c:8206,1
    - Dst: frr_pthread_new
      Src: /src/frr/bgpd/bgpd.c:8207,1
    - Dst: frr_pthread_run
      Src: /src/frr/bgpd/bgpd.c:8213,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/bgpd/bgpd.c:8216,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/bgpd/bgpd.c:8217,1
    - Dst: frr_pthread_stop_all
      Src: /src/frr/bgpd/bgpd.c:8222,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8230,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:8234,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:8235,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:8239,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:8241,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:8242,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgpd.c:8251,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/bgpd/bgpd.c:8257,1
    - Dst: bgp_zebra_init
      Src: /src/frr/bgpd/bgpd.c:8260,1
    - Dst: vnc_zebra_init
      Src: /src/frr/bgpd/bgpd.c:8263,1
    - Dst: bgp_vty_init
      Src: /src/frr/bgpd/bgpd.c:8268,1
    - Dst: bgp_attr_init
      Src: /src/frr/bgpd/bgpd.c:8272,1
    - Dst: bgp_community_alias_init
      Src: /src/frr/bgpd/bgpd.c:8273,1
    - Dst: bgp_debug_init
      Src: /src/frr/bgpd/bgpd.c:8275,1
    - Dst: bgp_dump_init
      Src: /src/frr/bgpd/bgpd.c:8276,1
    - Dst: bgp_route_init
      Src: /src/frr/bgpd/bgpd.c:8278,1
    - Dst: bgp_route_map_init
      Src: /src/frr/bgpd/bgpd.c:8279,1
    - Dst: bgp_scan_vty_init
      Src: /src/frr/bgpd/bgpd.c:8281,1
    - Dst: bgp_mplsvpn_init
      Src: /src/frr/bgpd/bgpd.c:8283,1
    - Dst: rfapi_init
      Src: /src/frr/bgpd/bgpd.c:8286,1
    - Dst: bgp_ethernetvpn_init
      Src: /src/frr/bgpd/bgpd.c:8288,1
    - Dst: bgp_flowspec_vty_init
      Src: /src/frr/bgpd/bgpd.c:8289,1
    - Dst: access_list_init
      Src: /src/frr/bgpd/bgpd.c:8292,1
    - Dst: access_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8293,1
    - Dst: access_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8294,1
    - Dst: bgp_filter_init
      Src: /src/frr/bgpd/bgpd.c:8297,1
    - Dst: as_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8298,1
    - Dst: as_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8299,1
    - Dst: prefix_list_init
      Src: /src/frr/bgpd/bgpd.c:8302,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8303,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8304,1
    - Dst: community_list_init
      Src: /src/frr/bgpd/bgpd.c:8307,1
    - Dst: bgp_label_per_nexthop_init
      Src: /src/frr/bgpd/bgpd.c:8309,1
    - Dst: bgp_bfd_init
      Src: /src/frr/bgpd/bgpd.c:8313,1
    - Dst: bgp_lp_vty_init
      Src: /src/frr/bgpd/bgpd.c:8314,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgpd.c:8315,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgpd.c:8326,1
    - Dst: bgp_close
      Src: /src/frr/bgpd/bgpd.c:8335,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8337,1
    - Dst: bgp_close_vrf_socket
      Src: /src/frr/bgpd/bgpd.c:8338,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8339,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8339,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgpd.c:8340,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:8341,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:8342,1
    - Dst: continue
      Src: /src/frr/bgpd/bgpd.c:8345,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:8347,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:8348,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:8354,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:8356,1
    - Dst: bgp_mac_finish
      Src: /src/frr/bgpd/bgpd.c:8358,1
    - Dst: peer_lookup_in_view
      Src: /src/frr/bgpd/bgpd.c:8361,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgpd.c:8369,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgpd.c:8371,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgpd.c:8373,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgpd.c:8379,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgpd.c:8383,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 206
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (!bgp_pth_io)
      pos:
        line_end: 8194
        line_start: 8194
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (!bgp_pth_ka)
      pos:
        line_end: 8195
        line_start: 8195
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 8392
      start: 7833
    functionDepth: 10
    functionLinenumber: 7833
    functionLinenumberEnd: 8392
    functionName: peer_ttl_security_hops_unset
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - bgp_mplsvpn_init
    - prefix_list_add_hook
    - BGP_EVENT_ADD
    - snprintf
    - memset
    - as_list_delete_hook
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - QOBJ_REG
    - vector_set
    - bgp_pthreads_init
    - bgp_label_per_nexthop_init
    - peer_group_active
    - if
    - for
    - prefix_list_init
    - peer_ebgp_multihop_unset
    - bgp_route_refresh_send
    - bgp_vty_init
    - EVENT_OFF
    - qobj_init
    - vnc_zebra_init
    - peer_maximum_prefix_clear_overflow
    - bgp_scan_vty_init
    - access_list_delete_hook
    - gmtime_r
    - bgp_mac_init
    - list_new
    - bgp_debug_init
    - ALL_LIST_ELEMENTS
    - bgp_soft_reconfig_in
    - sockopt_minttl
    - bgp_filter_init
    - continue
    - peer_lookup_by_conf_if
    - bgp_connected_delete
    - hook_register
    - access_list_init
    - bgp_notify_send
    - bgp_community_alias_init
    - atomic_store_explicit
    - monotime
    - bgp_instasn_autocomplete
    - bgp_bfd_init
    - bgp_close_vrf_socket
    - frr_pthread_run
    - bgp_dump_init
    - RB_FOREACH
    - vty_json
    - time
    - peer_established
    - rfapi_init
    - peer_af_find
    - bgp_evpn_mh_init
    - json_object_string_add
    - community_list_init
    - bgp_l3nhg_init
    - bgp_ethernetvpn_init
    - zlog_debug
    - frr_pthread_stop_all
    - assert
    - peer_reset_message_stats
    - prefix_list_delete_hook
    - bgp_zebra_init
    - json_object_int_add
    - cmd_variable_handler_register
    - bgp_lp_init
    - QOBJ_UNREG
    - bgp_route_map_init
    - bgp_flowspec_vty_init
    - access_list_add_hook
    - list_delete
    - sockopt_tcp_rtt
    - peer_lookup_by_hostname
    - bgp_session_reset_safe
    - as_list_add_hook
    - bgp_mac_finish
    - peer_active
    - bgp_lp_vty_init
    - peer_lookup_in_view
    - ALL_LIST_ELEMENTS_RO
    - bgp_vrf_lookup_by_instance_type
    - bgp_route_init
    - bgp_attr_init
    - frr_pthread_wait_running
    - frr_pthread_new
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_announce_route
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    - XSTRDUP
    - str2sockunion
    - bf_init
    - bf_assign_zero_index
    - CHECK_FLAG
    - bgp_close
    linkageType: ''
    returnType: int
    signature: int peer_ttl_security_hops_unset(struct peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7927,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7928,1
    - Dst: peer_maximum_prefix_clear_overflow
      Src: /src/frr/bgpd/bgpd.c:7929,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:7933,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:7934,1
    - Dst: bgp_session_reset_safe
      Src: /src/frr/bgpd/bgpd.c:7937,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - peer
    - nnode
    argTypes:
    - struct peer*
    - struct listnode**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7940
      start: 7925
    functionDepth: 1
    functionLinenumber: 7925
    functionLinenumberEnd: 7940
    functionName: peer_clear
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 4
    functionsReached:
    - bgp_session_reset_safe
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - CHECK_FLAG
    - bgp_notify_send
    - peer_maximum_prefix_clear_overflow
    linkageType: ''
    returnType: int
    signature: int peer_clear(struct peer *peer, struct listnode **nnode)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: peer_established
      Src: /src/frr/bgpd/bgpd.c:7947,1
    - Dst: sockopt_tcp_rtt
      Src: /src/frr/bgpd/bgpd.c:7953,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgpd.c:7957,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7959,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgpd.c:7961,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgpd.c:7964,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7968,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7970,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7972,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7977,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7984,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:7986,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:7990,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:7995,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:7997,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:8002,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgpd.c:8014,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:8018,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:8019,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgpd.c:8020,1
    - Dst: peer_reset_message_stats
      Src: /src/frr/bgpd/bgpd.c:8029,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 39
    argCount: 4
    argNames:
    - peer
    - afi
    - safi
    - stype
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - enum bgp_clear_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8032
      start: 7942
    functionDepth: 3
    functionLinenumber: 7942
    functionLinenumberEnd: 8032
    functionName: peer_clear_soft
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - peer_established
    - sockopt_tcp_rtt
    - peer_af_find
    - CHECK_FLAG
    - bgp_route_refresh_send
    - bgp_announce_route
    - UNSET_FLAG
    - bgp_soft_reconfig_in
    - peer_reset_message_stats
    linkageType: ''
    returnType: int
    signature: "int peer_clear_soft(struct peer *peer, afi_t afi, safi_t safi,\n\t\t
      \   enum bgp_clear_type stype)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgpd.c:8044,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgpd.c:8045,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8047,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgpd.c:8052,1
    - Dst: gmtime_r
      Src: /src/frr/bgpd/bgpd.c:8054,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8057,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8060,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8063,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8066,1
    - Dst: time
      Src: /src/frr/bgpd/bgpd.c:8071,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgpd.c:8072,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgpd.c:8073,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgpd.c:8074,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - uptime2
    - buf
    - len
    - use_json
    - json
    argTypes:
    - time_t
    - char*
    - size_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8079
      start: 8035
    functionDepth: 1
    functionLinenumber: 8035
    functionLinenumberEnd: 8079
    functionName: peer_uptime
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 5
    functionsReached:
    - snprintf
    - gmtime_r
    - monotime
    - json_object_int_add
    - json_object_string_add
    - time
    linkageType: ''
    returnType: char
    signature: "char *peer_uptime(time_t uptime2, char *buf, size_t len, bool use_json,\n\t\t
      \ json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qobj_init
      Src: /src/frr/bgpd/bgpd.c:8084,1
    - Dst: memset
      Src: /src/frr/bgpd/bgpd.c:8086,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:8089,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgpd.c:8090,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgpd.c:8094,1
    - Dst: bgp_mac_init
      Src: /src/frr/bgpd/bgpd.c:8106,1
    - Dst: bf_init
      Src: /src/frr/bgpd/bgpd.c:8111,1
    - Dst: bf_assign_zero_index
      Src: /src/frr/bgpd/bgpd.c:8112,1
    - Dst: bgp_lp_init
      Src: /src/frr/bgpd/bgpd.c:8115,1
    - Dst: bgp_l3nhg_init
      Src: /src/frr/bgpd/bgpd.c:8117,1
    - Dst: bgp_evpn_mh_init
      Src: /src/frr/bgpd/bgpd.c:8118,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgpd.c:8119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 3
    argNames:
    - master
    - buffer_size
    - addresses
    argTypes:
    - struct event_loop*
    - int
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8120
      start: 8081
    functionDepth: 1
    functionLinenumber: 8081
    functionLinenumberEnd: 8120
    functionName: bgp_master_init
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 7
    functionsReached:
    - bgp_l3nhg_init
    - memset
    - bf_init
    - bf_assign_zero_index
    - QOBJ_REG
    - monotime
    - bgp_evpn_mh_init
    - bgp_mac_init
    - list_new
    - qobj_init
    - bgp_lp_init
    linkageType: ''
    returnType: void
    signature: "void bgp_master_init(struct event_loop *master, const int buffer_size,\n\t\t
      \    struct list *addresses)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_vrf_lookup_by_instance_type
      Src: /src/frr/bgpd/bgpd.c:8131,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8140,1
    - Dst: bgp_connected_delete
      Src: /src/frr/bgpd/bgpd.c:8141,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgpd.c:8151,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8152,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8152,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8154,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8154,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8158,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8158,1
    - Dst: bgp_instasn_autocomplete
      Src: /src/frr/bgpd/bgpd.c:8162,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8170,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:8173,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8179,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8180,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8180,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/bgpd/bgpd.c:8193,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:8195,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:8196,1
    - Dst: frr_pthread_new
      Src: /src/frr/bgpd/bgpd.c:8206,1
    - Dst: frr_pthread_new
      Src: /src/frr/bgpd/bgpd.c:8207,1
    - Dst: frr_pthread_run
      Src: /src/frr/bgpd/bgpd.c:8213,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/bgpd/bgpd.c:8216,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/bgpd/bgpd.c:8217,1
    - Dst: frr_pthread_stop_all
      Src: /src/frr/bgpd/bgpd.c:8222,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8230,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:8234,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:8235,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:8239,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:8241,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:8242,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgpd.c:8251,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/bgpd/bgpd.c:8257,1
    - Dst: bgp_zebra_init
      Src: /src/frr/bgpd/bgpd.c:8260,1
    - Dst: vnc_zebra_init
      Src: /src/frr/bgpd/bgpd.c:8263,1
    - Dst: bgp_vty_init
      Src: /src/frr/bgpd/bgpd.c:8268,1
    - Dst: bgp_attr_init
      Src: /src/frr/bgpd/bgpd.c:8272,1
    - Dst: bgp_community_alias_init
      Src: /src/frr/bgpd/bgpd.c:8273,1
    - Dst: bgp_debug_init
      Src: /src/frr/bgpd/bgpd.c:8275,1
    - Dst: bgp_dump_init
      Src: /src/frr/bgpd/bgpd.c:8276,1
    - Dst: bgp_route_init
      Src: /src/frr/bgpd/bgpd.c:8278,1
    - Dst: bgp_route_map_init
      Src: /src/frr/bgpd/bgpd.c:8279,1
    - Dst: bgp_scan_vty_init
      Src: /src/frr/bgpd/bgpd.c:8281,1
    - Dst: bgp_mplsvpn_init
      Src: /src/frr/bgpd/bgpd.c:8283,1
    - Dst: rfapi_init
      Src: /src/frr/bgpd/bgpd.c:8286,1
    - Dst: bgp_ethernetvpn_init
      Src: /src/frr/bgpd/bgpd.c:8288,1
    - Dst: bgp_flowspec_vty_init
      Src: /src/frr/bgpd/bgpd.c:8289,1
    - Dst: access_list_init
      Src: /src/frr/bgpd/bgpd.c:8292,1
    - Dst: access_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8293,1
    - Dst: access_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8294,1
    - Dst: bgp_filter_init
      Src: /src/frr/bgpd/bgpd.c:8297,1
    - Dst: as_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8298,1
    - Dst: as_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8299,1
    - Dst: prefix_list_init
      Src: /src/frr/bgpd/bgpd.c:8302,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8303,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8304,1
    - Dst: community_list_init
      Src: /src/frr/bgpd/bgpd.c:8307,1
    - Dst: bgp_label_per_nexthop_init
      Src: /src/frr/bgpd/bgpd.c:8309,1
    - Dst: bgp_bfd_init
      Src: /src/frr/bgpd/bgpd.c:8313,1
    - Dst: bgp_lp_vty_init
      Src: /src/frr/bgpd/bgpd.c:8314,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgpd.c:8315,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgpd.c:8326,1
    - Dst: bgp_close
      Src: /src/frr/bgpd/bgpd.c:8335,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8337,1
    - Dst: bgp_close_vrf_socket
      Src: /src/frr/bgpd/bgpd.c:8338,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8339,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8339,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgpd.c:8340,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:8341,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:8342,1
    - Dst: continue
      Src: /src/frr/bgpd/bgpd.c:8345,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:8347,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:8348,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:8354,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:8356,1
    - Dst: bgp_mac_finish
      Src: /src/frr/bgpd/bgpd.c:8358,1
    - Dst: peer_lookup_in_view
      Src: /src/frr/bgpd/bgpd.c:8361,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgpd.c:8369,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgpd.c:8371,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgpd.c:8373,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgpd.c:8379,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgpd.c:8383,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 71
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts:
    - condition: (!bgp_pth_io)
      pos:
        line_end: 8194
        line_start: 8194
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (!bgp_pth_ka)
      pos:
        line_end: 8195
        line_start: 8195
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 8389
      start: 8126
    functionDepth: 10
    functionLinenumber: 8126
    functionLinenumberEnd: 8389
    functionName: bgp_if_finish
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - list_delete
    - peer_lookup_by_hostname
    - rfapi_init
    - bgp_mplsvpn_init
    - prefix_list_add_hook
    - as_list_add_hook
    - bgp_mac_finish
    - bgp_filter_init
    - continue
    - community_list_init
    - json_object_string_add
    - peer_active
    - peer_lookup_by_conf_if
    - bgp_lp_vty_init
    - BGP_EVENT_ADD
    - bgp_connected_delete
    - snprintf
    - hook_register
    - as_list_delete_hook
    - bgp_ethernetvpn_init
    - ALL_LIST_ELEMENTS_RO
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - bgp_vrf_lookup_by_instance_type
    - peer_lookup_in_view
    - access_list_init
    - vector_set
    - zlog_debug
    - bgp_route_init
    - bgp_pthreads_init
    - bgp_label_per_nexthop_init
    - frr_pthread_stop_all
    - if
    - frr_pthread_wait_running
    - for
    - bgp_attr_init
    - frr_pthread_new
    - assert
    - bgp_community_alias_init
    - prefix_list_delete_hook
    - prefix_list_init
    - bgp_zebra_init
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - bgp_vty_init
    - bgp_instasn_autocomplete
    - EVENT_OFF
    - bgp_notify_send
    - bgp_debug_neighbor_events
    - vnc_zebra_init
    - bgp_scan_vty_init
    - bgp_bfd_init
    - cmd_variable_handler_register
    - access_list_delete_hook
    - XSTRDUP
    - bgp_close_vrf_socket
    - str2sockunion
    - frr_pthread_run
    - QOBJ_UNREG
    - bgp_route_map_init
    - bgp_flowspec_vty_init
    - bgp_close
    - access_list_add_hook
    - bgp_dump_init
    - bgp_debug_init
    - ALL_LIST_ELEMENTS
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: void
    signature: void bgp_if_finish(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8140,1
    - Dst: bgp_connected_delete
      Src: /src/frr/bgpd/bgpd.c:8141,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgpd.c:8151,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8152,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8152,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8154,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8154,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8158,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8158,1
    - Dst: bgp_instasn_autocomplete
      Src: /src/frr/bgpd/bgpd.c:8162,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8168,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8170,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:8173,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgpd.c:8179,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgpd.c:8180,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgpd.c:8180,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/bgpd/bgpd.c:8193,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:8195,1
    - Dst: assert
      Src: /src/frr/bgpd/bgpd.c:8196,1
    - Dst: frr_pthread_new
      Src: /src/frr/bgpd/bgpd.c:8206,1
    - Dst: frr_pthread_new
      Src: /src/frr/bgpd/bgpd.c:8207,1
    - Dst: frr_pthread_run
      Src: /src/frr/bgpd/bgpd.c:8213,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/bgpd/bgpd.c:8216,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/bgpd/bgpd.c:8217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!bgp_pth_io)
      pos:
        line_end: 8194
        line_start: 8194
        source_file: /src/frr/bgpd/bgpd.c
    - condition: (!bgp_pth_ka)
      pos:
        line_end: 8195
        line_start: 8195
        source_file: /src/frr/bgpd/bgpd.c
    constantsTouched: []
    func_position:
      end: 8218
      start: 8136
    functionDepth: 1
    functionLinenumber: 8136
    functionLinenumberEnd: 8218
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 24
    functionsReached:
    - assert
    - bgp_connected_delete
    - snprintf
    - frr_pthread_run
    - ALL_LIST_ELEMENTS_RO
    - bgp_instasn_autocomplete
    - frr_pthread_wait_running
    - vector_set
    - bgp_pthreads_init
    - if
    - ALL_LIST_ELEMENTS
    - for
    - RB_FOREACH
    - frr_pthread_new
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_pthread_stop_all
      Src: /src/frr/bgpd/bgpd.c:8222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8223
      start: 8220
    functionDepth: 1
    functionLinenumber: 8220
    functionLinenumberEnd: 8223
    functionName: bgp_pthreads_finish
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - frr_pthread_stop_all
    linkageType: ''
    returnType: void
    signature: void bgp_pthreads_finish(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgpd.c:8230,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:8234,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:8235,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgpd.c:8239,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:8241,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgpd.c:8242,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8247
      start: 8225
    functionDepth: 2
    functionLinenumber: 8225
    functionLinenumberEnd: 8247
    functionName: peer_unshut_after_cfg
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - bgp_debug_neighbor_events
    - peer_active
    linkageType: ''
    returnType: int
    signature: int peer_unshut_after_cfg(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/bgpd/bgpd.c:8251,1
    - Dst: bgp_pthreads_init
      Src: /src/frr/bgpd/bgpd.c:8257,1
    - Dst: bgp_zebra_init
      Src: /src/frr/bgpd/bgpd.c:8260,1
    - Dst: vnc_zebra_init
      Src: /src/frr/bgpd/bgpd.c:8263,1
    - Dst: bgp_vty_init
      Src: /src/frr/bgpd/bgpd.c:8268,1
    - Dst: bgp_attr_init
      Src: /src/frr/bgpd/bgpd.c:8272,1
    - Dst: bgp_community_alias_init
      Src: /src/frr/bgpd/bgpd.c:8273,1
    - Dst: bgp_debug_init
      Src: /src/frr/bgpd/bgpd.c:8275,1
    - Dst: bgp_dump_init
      Src: /src/frr/bgpd/bgpd.c:8276,1
    - Dst: bgp_route_init
      Src: /src/frr/bgpd/bgpd.c:8278,1
    - Dst: bgp_route_map_init
      Src: /src/frr/bgpd/bgpd.c:8279,1
    - Dst: bgp_scan_vty_init
      Src: /src/frr/bgpd/bgpd.c:8281,1
    - Dst: bgp_mplsvpn_init
      Src: /src/frr/bgpd/bgpd.c:8283,1
    - Dst: rfapi_init
      Src: /src/frr/bgpd/bgpd.c:8286,1
    - Dst: bgp_ethernetvpn_init
      Src: /src/frr/bgpd/bgpd.c:8288,1
    - Dst: bgp_flowspec_vty_init
      Src: /src/frr/bgpd/bgpd.c:8289,1
    - Dst: access_list_init
      Src: /src/frr/bgpd/bgpd.c:8292,1
    - Dst: access_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8293,1
    - Dst: access_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8294,1
    - Dst: bgp_filter_init
      Src: /src/frr/bgpd/bgpd.c:8297,1
    - Dst: as_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8298,1
    - Dst: as_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8299,1
    - Dst: prefix_list_init
      Src: /src/frr/bgpd/bgpd.c:8302,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/bgpd/bgpd.c:8303,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/bgpd/bgpd.c:8304,1
    - Dst: community_list_init
      Src: /src/frr/bgpd/bgpd.c:8307,1
    - Dst: bgp_label_per_nexthop_init
      Src: /src/frr/bgpd/bgpd.c:8309,1
    - Dst: bgp_bfd_init
      Src: /src/frr/bgpd/bgpd.c:8313,1
    - Dst: bgp_lp_vty_init
      Src: /src/frr/bgpd/bgpd.c:8314,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgpd.c:8315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 1
    argNames:
    - instance
    argTypes:
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8317
      start: 8249
    functionDepth: 3
    functionLinenumber: 8249
    functionLinenumberEnd: 8317
    functionName: bgp_init
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - rfapi_init
    - bgp_mplsvpn_init
    - prefix_list_add_hook
    - as_list_add_hook
    - bgp_filter_init
    - community_list_init
    - bgp_lp_vty_init
    - hook_register
    - as_list_delete_hook
    - bgp_ethernetvpn_init
    - access_list_init
    - bgp_route_init
    - bgp_pthreads_init
    - bgp_label_per_nexthop_init
    - bgp_attr_init
    - bgp_community_alias_init
    - prefix_list_delete_hook
    - prefix_list_init
    - bgp_zebra_init
    - bgp_vty_init
    - vnc_zebra_init
    - bgp_scan_vty_init
    - bgp_bfd_init
    - cmd_variable_handler_register
    - access_list_delete_hook
    - bgp_route_map_init
    - bgp_flowspec_vty_init
    - access_list_add_hook
    - bgp_dump_init
    - bgp_debug_init
    linkageType: ''
    returnType: void
    signature: void bgp_init(unsigned short instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgpd.c:8326,1
    - Dst: bgp_close
      Src: /src/frr/bgpd/bgpd.c:8335,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8337,1
    - Dst: bgp_close_vrf_socket
      Src: /src/frr/bgpd/bgpd.c:8338,1
    - Dst: for
      Src: /src/frr/bgpd/bgpd.c:8339,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8339,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgpd.c:8340,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgpd.c:8341,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:8342,1
    - Dst: continue
      Src: /src/frr/bgpd/bgpd.c:8345,1
    - Dst: BGP_IS_VALID_STATE_FOR_NOTIF
      Src: /src/frr/bgpd/bgpd.c:8347,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgpd.c:8348,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgpd.c:8354,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgpd.c:8356,1
    - Dst: bgp_mac_finish
      Src: /src/frr/bgpd/bgpd.c:8358,1
    - Dst: peer_lookup_in_view
      Src: /src/frr/bgpd/bgpd.c:8361,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgpd.c:8369,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgpd.c:8371,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgpd.c:8373,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgpd.c:8379,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgpd.c:8383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8384
      start: 8319
    functionDepth: 10
    functionLinenumber: 8319
    functionLinenumberEnd: 8384
    functionName: bgp_terminate
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 2
    functionsReached:
    - list_delete
    - peer_lookup_by_hostname
    - bgp_mac_finish
    - continue
    - json_object_string_add
    - peer_lookup_by_conf_if
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - peer_lookup_in_view
    - zlog_debug
    - bgp_notify_send
    - for
    - BGP_IS_VALID_STATE_FOR_NOTIF
    - EVENT_OFF
    - bgp_debug_neighbor_events
    - bgp_close_vrf_socket
    - str2sockunion
    - QOBJ_UNREG
    - bgp_close
    - ALL_LIST_ELEMENTS
    - vty_json
    linkageType: ''
    returnType: void
    signature: void bgp_terminate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgpd.c:8418,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgpd.c:8419,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8421,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgpd.c:8422,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgpd.c:8423,1
    - Dst: if
      Src: /src/frr/bgpd/bgpd.c:8424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgpd.c:8424,1
    - Dst: bgp_zebra_send_capabilities
      Src: /src/frr/bgpd/bgpd.c:8430,1
    - Dst: bgp_zebra_send_capabilities
      Src: /src/frr/bgpd/bgpd.c:8433,1
    - Dst: printfrr_ext_autoreg_p
      Src: /src/frr/bgpd/bgpd.c:8440,1
    - Dst: printfrr_bp
      Src: /src/frr/bgpd/bgpd.c:8441,1
    - Dst: bputs
      Src: /src/frr/bgpd/bgpd.c:8447,1
    - Dst: bprintfrr
      Src: /src/frr/bgpd/bgpd.c:8449,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8451
      start: 8411
    functionDepth: 2
    functionLinenumber: 8411
    functionLinenumberEnd: 8451
    functionName: bgp_gr_apply_running_config
    functionSourceFile: /src/frr/bgpd/bgpd.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - bprintfrr
    - bgp_peer_gr_flags_update
    - printfrr_bp
    - CHECK_FLAG
    - bgp_zebra_send_capabilities
    - printfrr_ext_autoreg_p
    - zlog_debug
    - if
    - BGP_DEBUG
    - bputs
    linkageType: ''
    returnType: void
    signature: void bgp_gr_apply_running_config(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:103,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:104,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_fsm.c:107,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_fsm.c:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 110
    functionName: bgp_peer_reg_with_nht
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_find_or_add_nexthop
    - CHECK_FLAG
    - family2afi
    linkageType: ''
    returnType: int
    signature: int bgp_peer_reg_with_nht(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - peer_dst
    - peer_src
    argTypes:
    - struct peer*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 123
    functionName: peer_xfer_stats
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void peer_xfer_stats(struct peer *peer_dst, struct peer *peer_src)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:134,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:138,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:147,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:155,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:156,1
    - Dst: bgp_writes_off
      Src: /src/frr/bgpd/bgp_fsm.c:160,1
    - Dst: bgp_reads_off
      Src: /src/frr/bgpd/bgp_fsm.c:161,1
    - Dst: bgp_writes_off
      Src: /src/frr/bgpd/bgp_fsm.c:162,1
    - Dst: bgp_reads_off
      Src: /src/frr/bgpd/bgp_fsm.c:163,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:171,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:173,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:174,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:175,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:176,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:177,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:178,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:179,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:180,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:181,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:182,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:183,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_fsm.c:190,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_fsm.c:195,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_fsm.c:196,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:204,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_fsm.c:213,1
    - Dst: stream_fifo_push
      Src: /src/frr/bgpd/bgp_fsm.c:219,1
    - Dst: stream_fifo_pop
      Src: /src/frr/bgpd/bgp_fsm.c:220,1
    - Dst: stream_fifo_push
      Src: /src/frr/bgpd/bgp_fsm.c:224,1
    - Dst: stream_fifo_pop
      Src: /src/frr/bgpd/bgp_fsm.c:225,1
    - Dst: ringbuf_wipe
      Src: /src/frr/bgpd/bgp_fsm.c:227,1
    - Dst: ringbuf_copy
      Src: /src/frr/bgpd/bgp_fsm.c:228,1
    - Dst: ringbuf_remain
      Src: /src/frr/bgpd/bgp_fsm.c:229,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_fsm.c:256,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:259,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:261,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:263,1
    - Dst: peer_nsf_stop
      Src: /src/frr/bgpd/bgp_fsm.c:264,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:269,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:278,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:287,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_fsm.c:305,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:306,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:309,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:313,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:314,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_fsm.c:318,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:319,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:323,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:328,1
    - Dst: peer_xfer_stats
      Src: /src/frr/bgpd/bgp_fsm.c:336,1
    - Dst: bgp_peer_reg_with_nht
      Src: /src/frr/bgpd/bgp_fsm.c:341,1
    - Dst: bgp_replace_nexthop_by_peer
      Src: /src/frr/bgpd/bgp_fsm.c:343,1
    - Dst: bgp_reads_on
      Src: /src/frr/bgpd/bgp_fsm.c:345,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_fsm.c:346,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_fsm.c:347,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 130
    argCount: 1
    argNames:
    - from_peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (from_peer != NULL)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/frr/bgpd/bgp_fsm.c
    constantsTouched: []
    func_position:
      end: 351
      start: 125
    functionDepth: 7
    functionLinenumber: 125
    functionLinenumberEnd: 351
    functionName: peer_xfer_conn
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_keepalives_off
    - bgp_peer_reg_with_nht
    - flog_err
    - peer_nsf_stop
    - peer_xfer_stats
    - bgp_reads_on
    - BGP_EVENT_ADD
    - frr_with_mutex
    - bgp_writes_on
    - bgp_stop
    - zlog_debug
    - bgp_reads_off
    - assert
    - ringbuf_remain
    - bgp_peer_gr_mode_get
    - stream_free
    - bgp_getsockname
    - bgp_writes_off
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    - EVENT_OFF
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    - XFREE
    - stream_fifo_clean
    - stream_fifo_push
    - bgp_replace_nexthop_by_peer
    - CHECK_FLAG
    - ringbuf_copy
    - stream_fifo_pop
    - ringbuf_wipe
    - event_add_event
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_xfer_conn(struct peer *from_peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 153
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 21
    functionsReached:
    - flog_err
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 303
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: BGP_PEER_START_SUPPRESSED
      Src: /src/frr/bgpd/bgp_fsm.c:369,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgp_fsm.c:369,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:371,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:373,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:376,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:377,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:378,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:379,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:380,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:388,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:389,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:392,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:395,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:396,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:397,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:403,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:406,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:407,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:409,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:410,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:414,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:417,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:418,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:419,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:424,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:425,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:427,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:430,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:432,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:433,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:434,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:439,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:440,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:448,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:450,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:452,1
    - Dst: bgp_keepalives_on
      Src: /src/frr/bgpd/bgp_fsm.c:454,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:456,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:457,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:463,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:464,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:465,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:473,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:475,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:477,1
    - Dst: bgp_keepalives_on
      Src: /src/frr/bgpd/bgp_fsm.c:479,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:483,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:484,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_fsm.c:486,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:487,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:489,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:490,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:493,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:494,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:495,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:496,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:497,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:498,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:501,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 91
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 505
    functionName: bgp_timer_set
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 7
    functionsReached:
    - bgp_keepalives_off
    - BGP_TIMER_ON
    - CHECK_FLAG
    - bgp_keepalives_on
    - flog_err
    - EVENT_OFF
    - BGP_PEER_START_SUPPRESSED
    - peer_active
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: void bgp_timer_set(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:513,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:515,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:516,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_fsm.c:518,1
    - Dst: bgp_event
      Src: /src/frr/bgpd/bgp_fsm.c:519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 520
    functionName: bgp_start_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - EVENT_VAL
    - zlog_debug
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - bgp_event
    linkageType: ''
    returnType: void
    signature: void bgp_start_timer(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:527,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:530,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:532,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:533,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:535,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:538,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:539,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_fsm.c:541,1
    - Dst: bgp_event
      Src: /src/frr/bgpd/bgp_fsm.c:542,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (!peer->t_write)
      pos:
        line_end: 531
        line_start: 531
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!peer->t_read)
      pos:
        line_end: 532
        line_start: 532
        source_file: /src/frr/bgpd/bgp_fsm.c
    constantsTouched: []
    func_position:
      end: 544
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 544
    functionName: bgp_connect_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - EVENT_VAL
    - bgp_stop
    - zlog_debug
    - EVENT_OFF
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - bgp_event
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_connect_timer(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:552,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:554,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:555,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_fsm.c:568,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:571,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_fsm.c:574,1
    - Dst: bgp_event
      Src: /src/frr/bgpd/bgp_fsm.c:575,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 576
    functionName: bgp_holdtime_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - BGP_TIMER_ON
    - EVENT_VAL
    - zlog_debug
    - atomic_load_explicit
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - bgp_event
    linkageType: ''
    returnType: void
    signature: void bgp_holdtime_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:582,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:584,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:585,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:588,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/bgp_fsm.c:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 596
    functionName: bgp_routeadv_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - monotime
    - event_add_timer_msec
    - zlog_debug
    - bgp_debug_neighbor_events
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_routeadv_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:603,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:605,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:606,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_fsm.c:609,1
    - Dst: bgp_event
      Src: /src/frr/bgpd/bgp_fsm.c:610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 611
    functionName: bgp_delayopen_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - EVENT_VAL
    - zlog_debug
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - bgp_event
    linkageType: ''
    returnType: void
    signature: void bgp_delayopen_timer(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_fsm.c:656,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:657,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:661,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:662,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_fsm.c:664,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:665,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:666,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:667,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:669,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgp_fsm.c:672,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 651
    functionDepth: 9
    functionLinenumber: 651
    functionLinenumberEnd: 673
    functionName: bgp_graceful_restart_timer_off
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - peer_delete
    - CHECK_FLAG
    - peer_dynamic_neighbor
    - zlog_debug
    - EVENT_OFF
    - UNSET_FLAG
    - bgp_timer_set
    - bgp_debug_neighbor_events
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: void bgp_graceful_restart_timer_off(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:682,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:692,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:693,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:694,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:696,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:698,1
    - Dst: bgp_graceful_restart_timer_off
      Src: /src/frr/bgpd/bgp_fsm.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 675
    functionDepth: 10
    functionLinenumber: 675
    functionLinenumberEnd: 701
    functionName: bgp_llgr_stale_timer_expire
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - UNSET_FLAG
    - get_afi_safi_str
    - bgp_graceful_restart_timer_off
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - bgp_clear_stale_route
    linkageType: ''
    returnType: void
    signature: void bgp_llgr_stale_timer_expire(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_fsm.c:711,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_fsm.c:712,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_fsm.c:715,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_fsm.c:719,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_fsm.c:720,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_fsm.c:721,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_fsm.c:726,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_fsm.c:727,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_fsm.c:728,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:733,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:734,1
    - Dst: bgp_attr_add_llgr_community
      Src: /src/frr/bgpd/bgp_fsm.c:739,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_fsm.c:740,1
    - Dst: bgp_recalculate_afi_safi_bestpaths
      Src: /src/frr/bgpd/bgp_fsm.c:741,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_fsm.c:748,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_fsm.c:749,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_fsm.c:750,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_fsm.c:755,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_fsm.c:756,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_fsm.c:757,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:761,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:762,1
    - Dst: bgp_attr_add_llgr_community
      Src: /src/frr/bgpd/bgp_fsm.c:767,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_fsm.c:768,1
    - Dst: bgp_recalculate_afi_safi_bestpaths
      Src: /src/frr/bgpd/bgp_fsm.c:769,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 37
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 703
    functionDepth: 4
    functionLinenumber: 703
    functionLinenumberEnd: 775
    functionName: bgp_set_llgr_stale
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - community_include
    - bgp_attr_intern
    - bgp_table_top
    - bgp_attr_add_llgr_community
    - bgp_recalculate_afi_safi_bestpaths
    - zlog_debug
    - bgp_debug_neighbor_events
    - bgp_dest_get_bgp_path_info
    - bgp_attr_get_community
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void bgp_set_llgr_stale(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 242
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:785,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:787,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:788,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:789,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_fsm.c:810,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:814,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:815,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:818,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:821,1
    - Dst: bgp_set_llgr_stale
      Src: /src/frr/bgpd/bgp_fsm.c:824,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:825,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:827,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:831,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_fsm.c:833,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:835,1
    - Dst: bgp_graceful_restart_timer_off
      Src: /src/frr/bgpd/bgp_fsm.c:839,1
    - Dst: bgp_graceful_stale_timer_expire
      Src: /src/frr/bgpd/bgp_fsm.c:842,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:848,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:850,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:851,1
    - Dst: FOREACH_AFI_SAFI_NSF
      Src: /src/frr/bgpd/bgp_fsm.c:855,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:857,1
    - Dst: bgp_graceful_deferral_timer_expire
      Src: /src/frr/bgpd/bgp_fsm.c:861,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:868,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:873,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:874,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:880,1
    - Dst: bgp_best_path_select_defer
      Src: /src/frr/bgpd/bgp_fsm.c:883,1
    - Dst: bgp_update_delay_applicable
      Src: /src/frr/bgpd/bgp_fsm.c:886,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_fsm.c:897,1
    - Dst: bgp_update_delay_configured
      Src: /src/frr/bgpd/bgp_fsm.c:904,1
    - Dst: bgp_update_delay_end
      Src: /src/frr/bgpd/bgp_fsm.c:913,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:915,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:916,1
    - Dst: frr_timestamp
      Src: /src/frr/bgpd/bgp_fsm.c:925,1
    - Dst: bgp_add_eoiu_mark
      Src: /src/frr/bgpd/bgp_fsm.c:947,1
    - Dst: work_queue_unplug
      Src: /src/frr/bgpd/bgp_fsm.c:956,1
    - Dst: bgp_start_routeadv
      Src: /src/frr/bgpd/bgp_fsm.c:962,1
    - Dst: frr_timestamp
      Src: /src/frr/bgpd/bgp_fsm.c:973,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:976,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:977,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:979,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:980,1
    - Dst: bgp_adjust_routeadv
      Src: /src/frr/bgpd/bgp_fsm.c:987,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:989,1
    - Dst: remain
      Src: /src/frr/bgpd/bgp_fsm.c:991,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:999,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:1001,1
    - Dst: BGP_UPDATE_GROUP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1007,1
    - Dst: difftime
      Src: /src/frr/bgpd/bgp_fsm.c:1029,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1031,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1032,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_fsm.c:1053,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1059,1
    - Dst: update_group_announce
      Src: /src/frr/bgpd/bgp_fsm.c:1105,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1135,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1137,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1138,1
    - Dst: bgp_maxmed_update
      Src: /src/frr/bgpd/bgp_fsm.c:1141,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1150,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:1153,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1167,1
    - Dst: bgp_maxmed_onstartup_begin
      Src: /src/frr/bgpd/bgp_fsm.c:1168,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1177,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1179,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1180,1
    - Dst: bgp_update_delay_end
      Src: /src/frr/bgpd/bgp_fsm.c:1181,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1189,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1191,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1192,1
    - Dst: bgp_check_update_delay
      Src: /src/frr/bgpd/bgp_fsm.c:1193,1
    - Dst: work_queue_plug
      Src: /src/frr/bgpd/bgp_fsm.c:1206,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:1208,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:1212,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_fsm.c:1215,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:1216,1
    - Dst: frr_timestamp
      Src: /src/frr/bgpd/bgp_fsm.c:1219,1
    - Dst: bgp_update_delay_process_status_change
      Src: /src/frr/bgpd/bgp_fsm.c:1223,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1225,1
    - Dst: bgp_update_delay_begin
      Src: /src/frr/bgpd/bgp_fsm.c:1227,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1228,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1232,1
    - Dst: bgp_update_restarted_peers
      Src: /src/frr/bgpd/bgp_fsm.c:1233,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_fsm.c:1236,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:1251,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1261,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1264,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_fsm.c:1265,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1267,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1269,1
    - Dst: bgp_clear_route_all
      Src: /src/frr/bgpd/bgp_fsm.c:1284,1
    - Dst: work_queue_is_scheduled
      Src: /src/frr/bgpd/bgp_fsm.c:1306,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1308,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_fsm.c:1320,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_fsm.c:1326,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1329,1
    - Dst: bgp_maxmed_onstartup_configured
      Src: /src/frr/bgpd/bgp_fsm.c:1333,1
    - Dst: bgp_maxmed_onstartup_applicable
      Src: /src/frr/bgpd/bgp_fsm.c:1334,1
    - Dst: bgp_maxmed_onstartup_process_status_change
      Src: /src/frr/bgpd/bgp_fsm.c:1335,1
    - Dst: bgp_update_delay_configured
      Src: /src/frr/bgpd/bgp_fsm.c:1341,1
    - Dst: bgp_update_delay_applicable
      Src: /src/frr/bgpd/bgp_fsm.c:1342,1
    - Dst: bgp_update_delay_process_status_change
      Src: /src/frr/bgpd/bgp_fsm.c:1343,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1345,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1346,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1347,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1348,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1354,1
    - Dst: BGP_EVENT_FLUSH
      Src: /src/frr/bgpd/bgp_fsm.c:1357,1
    - Dst: bfd_sess_uninstall
      Src: /src/frr/bgpd/bgp_fsm.c:1378,1
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1381,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1382,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1383,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1385,1
    - Dst: BGP_EVENT_FLUSH
      Src: /src/frr/bgpd/bgp_fsm.c:1392,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1396,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1403,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_fsm.c:1405,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1407,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1419,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1420,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1425,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1426,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1427,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1430,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1434,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1437,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1441,1
    - Dst: FOREACH_AFI_SAFI_NSF
      Src: /src/frr/bgpd/bgp_fsm.c:1443,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1449,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1451,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1452,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_fsm.c:1461,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1464,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:1475,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1476,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1483,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:1485,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1487,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:1494,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:1496,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1497,1
    - Dst: update_group_remove_peer_afs
      Src: /src/frr/bgpd/bgp_fsm.c:1499,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:1506,1
    - Dst: bgp_writes_off
      Src: /src/frr/bgpd/bgp_fsm.c:1509,1
    - Dst: bgp_reads_off
      Src: /src/frr/bgpd/bgp_fsm.c:1510,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1512,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1513,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1516,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1517,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1518,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1519,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1520,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_fsm.c:1523,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_fsm.c:1525,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_fsm.c:1527,1
    - Dst: ringbuf_wipe
      Src: /src/frr/bgpd/bgp_fsm.c:1530,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_fsm.c:1533,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_fsm.c:1540,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1565,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_fsm.c:1567,1
    - Dst: prefix_bgp_orf_remove_all
      Src: /src/frr/bgpd/bgp_fsm.c:1569,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1590,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1591,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1592,1
    - Dst: bgp_peer_conf_if_to_su_update
      Src: /src/frr/bgpd/bgp_fsm.c:1595,1
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1610,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1611,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1612,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1614,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1618,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:1627,1
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1629,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1630,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1631,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1633,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1640,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1665,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1666,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1666,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1667,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1667,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1668,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1669,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1671,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1672,1
    - Dst: getsockopt
      Src: /src/frr/bgpd/bgp_fsm.c:1676,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1681,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_fsm.c:1682,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1689,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1690,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1692,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1695,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1696,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_fsm.c:1697,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1698,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1708,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1710,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_fsm.c:1713,1
    - Dst: flog_err_sys
      Src: /src/frr/bgpd/bgp_fsm.c:1714,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:1717,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_fsm.c:1718,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_fsm.c:1719,1
    - Dst: bgp_nht_interface_events
      Src: /src/frr/bgpd/bgp_fsm.c:1727,1
    - Dst: bgp_reads_on
      Src: /src/frr/bgpd/bgp_fsm.c:1729,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1731,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1732,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1733,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1736,1
    - Dst: bgp_open_send
      Src: /src/frr/bgpd/bgp_fsm.c:1740,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1752,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1754,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_fsm.c:1757,1
    - Dst: flog_err_sys
      Src: /src/frr/bgpd/bgp_fsm.c:1758,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:1761,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_fsm.c:1762,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_fsm.c:1763,1
    - Dst: bgp_nht_interface_events
      Src: /src/frr/bgpd/bgp_fsm.c:1771,1
    - Dst: bgp_reads_on
      Src: /src/frr/bgpd/bgp_fsm.c:1773,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1776,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1777,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1780,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1788,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1791,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1792,1
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1801,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1802,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1803,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1805,1
    - Dst: bgp_nht_interface_events
      Src: /src/frr/bgpd/bgp_fsm.c:1813,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1815,1
    - Dst: bgp_peer_conf_if_to_su_update
      Src: /src/frr/bgpd/bgp_fsm.c:1825,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1828,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1829,1
    - Dst: BGP_PEER_START_SUPPRESSED
      Src: /src/frr/bgpd/bgp_fsm.c:1836,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1837,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1838,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1841,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1843,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1847,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgp_fsm.c:1857,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgp_fsm.c:1862,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1873,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1874,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1879,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1880,1
    - Dst: bgp_peer_reg_with_nht
      Src: /src/frr/bgpd/bgp_fsm.c:1891,1
    - Dst: bgp_zebra_num_connects
      Src: /src/frr/bgpd/bgp_fsm.c:1892,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1893,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1894,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1898,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1903,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1904,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1905,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1905,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1906,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1906,1
    - Dst: bgp_connect
      Src: /src/frr/bgpd/bgp_fsm.c:1907,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1911,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1912,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1913,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1916,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1917,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1921,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1926,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1927,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1931,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_fsm.c:1945,1
    - Dst: event_add_write
      Src: /src/frr/bgpd/bgp_fsm.c:1947,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1959,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_fsm.c:1964,1
    - Dst: bgp_start
      Src: /src/frr/bgpd/bgp_fsm.c:1967,1
    - Dst: bgp_open_send
      Src: /src/frr/bgpd/bgp_fsm.c:1974,1
    - Dst: bgp_keepalive_send
      Src: /src/frr/bgpd/bgp_fsm.c:1977,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1986,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1987,1
    - Dst: bgp_stop_with_notify
      Src: /src/frr/bgpd/bgp_fsm.c:1989,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_fsm.c:1990,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1997,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1998,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:2004,1
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_fsm.c:2005,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2006,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2007,1
    - Dst: bgp_stop_with_notify
      Src: /src/frr/bgpd/bgp_fsm.c:2009,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2017,1
    - Dst: bgp_open_send
      Src: /src/frr/bgpd/bgp_fsm.c:2020,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_fsm.c:2044,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:2050,1
    - Dst: bgp_zebra_update
      Src: /src/frr/bgpd/bgp_fsm.c:2059,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2062,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2063,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:2064,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2077,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2078,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2083,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2084,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2089,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2090,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2092,1
    - Dst: bgp_start_deferral_timer
      Src: /src/frr/bgpd/bgp_fsm.c:2094,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_fsm.c:2117,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_fsm.c:2119,1
    - Dst: peer_xfer_conn
      Src: /src/frr/bgpd/bgp_fsm.c:2121,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2123,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_fsm.c:2131,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_fsm.c:2133,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2142,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2143,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:2150,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2153,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_fsm.c:2154,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:2155,1
    - Dst: update_group_adjust_peer_afs
      Src: /src/frr/bgpd/bgp_fsm.c:2162,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2165,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2166,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2167,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2168,1
    - Dst: BGP_PEER_HELPER_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2169,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2170,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2176,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2179,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:2181,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:2187,1
    - Dst: BGP_SELECT_DEFER_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2192,1
    - Dst: bgp_update_gr_info
      Src: /src/frr/bgpd/bgp_fsm.c:2193,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2195,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:2197,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2200,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2201,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2210,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2211,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2212,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2213,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_fsm.c:2214,1
    - Dst: bgp_zebra_update
      Src: /src/frr/bgpd/bgp_fsm.c:2217,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2224,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_fsm.c:2226,1
    - Dst: bgp_zebra_update
      Src: /src/frr/bgpd/bgp_fsm.c:2229,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2238,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2240,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2242,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2243,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2244,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2251,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2252,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2253,1
    - Dst: bgp_keepalives_on
      Src: /src/frr/bgpd/bgp_fsm.c:2258,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:2260,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2267,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2268,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2269,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2274,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2276,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_fsm.c:2278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2282,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_fsm.c:2284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2293,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2297,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2299,1
    - Dst: bgp_announce_peer
      Src: /src/frr/bgpd/bgp_fsm.c:2303,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_fsm.c:2311,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2312,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:2313,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2317,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2318,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:2323,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:2326,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_fsm.c:2335,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgp_fsm.c:2339,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2347,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2354,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2361,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2365,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2374,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2378,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:2381,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2392,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2396,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2397,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2402,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2403,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2412,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:2593,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_fsm.c:2594,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_fsm.c:2596,1
    - Dst: bgp_event_update
      Src: /src/frr/bgpd/bgp_fsm.c:2597,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_fsm.c:2598,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2614,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_fsm.c:2615,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2620,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2621,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2623,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2624,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:2645,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgp_fsm.c:2659,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2671,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2675,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:2679,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:2680,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgp_fsm.c:2681,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:2699,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2701,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2702,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2705,1
    - Dst: BGP_PEER_GR_HELPER_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2718,1
    - Dst: BGP_PEER_GR_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2721,1
    - Dst: BGP_PEER_GR_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2724,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2727,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2744,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2745,1
    - Dst: print_global_gr_cmd
      Src: /src/frr/bgpd/bgp_fsm.c:2746,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2748,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2750,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2751,1
    - Dst: print_global_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2752,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2758,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2759,1
    - Dst: print_global_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2760,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2762,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2768,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2774,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2775,1
    - Dst: print_global_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2778,1
    - Dst: bgp_gr_lookup_n_update_all_peer
      Src: /src/frr/bgpd/bgp_fsm.c:2782,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2906,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2907,1
    - Dst: print_peer_gr_cmd
      Src: /src/frr/bgpd/bgp_fsm.c:2909,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2911,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2914,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2922,1
    - Dst: struct bgp_peer_gr::action_fun
      Src: /src/frr/bgpd/bgp_fsm.c:2928,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2931,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2932,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2941,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2942,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2944,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2955,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2956,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2958,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2959,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2975,1
    - Dst: BGP_PEER_GR_GLOBAL_INHERIT_UNSET
      Src: /src/frr/bgpd/bgp_fsm.c:2991,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3000,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3001,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3003,1
    - Dst: bgp_peer_move_to_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3005,1
    - Dst: BGP_PEER_GR_GLOBAL_INHERIT_SET
      Src: /src/frr/bgpd/bgp_fsm.c:3021,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3037,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3038,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3040,1
    - Dst: bgp_peer_move_to_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3042,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3052,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3053,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3054,1
    - Dst: bgp_peer_move_to_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3056,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:3067,1
    - Dst: BGP_PEER_GR_HELPER_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3071,1
    - Dst: BGP_PEER_GR_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3074,1
    - Dst: BGP_PEER_GR_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3077,1
    - Dst: BGP_PEER_GR_GLOBAL_INHERIT_SET
      Src: /src/frr/bgpd/bgp_fsm.c:3080,1
    - Dst: BGP_PEER_GR_HELPER_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3083,1
    - Dst: BGP_PEER_GR_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3085,1
    - Dst: BGP_PEER_GR_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3087,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:3089,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:3094,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3098,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3099,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3105,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3106,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3107,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3109,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3111,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3112,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3113,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3120,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3122,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3124,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3125,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3126,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3129,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3132,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3134,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3137,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3139,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3140,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3143,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3148,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3149,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3150,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3153,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3155,1
    - Dst: peer_nsf_stop
      Src: /src/frr/bgpd/bgp_fsm.c:3157,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3158,1
    CyclomaticComplexity: 290
    EdgeCount: 290
    ICount: 937
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON))
      pos:
        line_end: 1904
        line_start: 1904
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!peer->t_read)
      pos:
        line_end: 1667
        line_start: 1667
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!peer->t_read)
      pos:
        line_end: 1903
        line_start: 1903
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!peer->t_write)
      pos:
        line_end: 1668
        line_start: 1668
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON))
      pos:
        line_end: 1666
        line_start: 1666
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_READS_ON))
      pos:
        line_end: 1905
        line_start: 1905
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_READS_ON))
      pos:
        line_end: 1665
        line_start: 1665
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!peer->t_write)
      pos:
        line_end: 1902
        line_start: 1902
        source_file: /src/frr/bgpd/bgp_fsm.c
    constantsTouched: []
    func_position:
      end: 3163
      start: 777
    functionDepth: 10
    functionLinenumber: 777
    functionLinenumberEnd: 3163
    functionName: bgp_graceful_restart_timer_expire
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_update_delay_begin
    - bgp_maxmed_update
    - BGP_PEER_HELPER_MODE
    - flog_err
    - peer_nsf_stop
    - BGP_EVENT_ADD
    - frr_with_mutex
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - snprintf
    - bgp_set_llgr_stale
    - bfd_sess_uninstall
    - bgp_maxmed_onstartup_begin
    - if
    - bgp_event_update
    - bgp_peer_gr_mode_get
    - print_peer_gr_cmd
    - bgp_route_refresh_send
    - bgp_zebra_update
    - EVENT_OFF
    - event_add_read
    - peer_lock
    - stream_fifo_clean
    - bgp_fsm_change_status
    - getsockopt
    - bgp_nht_interface_events
    - XMALLOC
    - close
    - EVENT_VAL
    - ALL_LIST_ELEMENTS
    - BGP_EVENT_FLUSH
    - bgp_maxmed_onstartup_configured
    - bgp_stop_with_notify
    - bgp_maxmed_onstartup_process_status_change
    - BGP_PEER_GR_DISABLE
    - bgp_peer_reg_with_nht
    - bgp_start_deferral_timer
    - print_global_gr_mode
    - bgp_graceful_restart_timer_off
    - lookup_msg
    - peer_dynamic_neighbor_no_nsf
    - bgp_update_delay_active
    - print_peer_gr_mode
    - bgp_check_update_delay
    - bgp_notify_send
    - BGP_PEER_RESTARTING_MODE
    - bgp_reads_off
    - stream_free
    - update_group_remove_peer_afs
    - bgp_getsockname
    - bgp_keepalive_send
    - bgp_announce_peer
    - monotime
    - bgp_connect
    - event_add_timer
    - difftime
    - update_group_announce
    - BGP_PEER_GR_GLOBAL_INHERIT_SET
    - bgp_clear_route_all
    - ringbuf_wipe
    - bgp_timer_set
    - BGP_SELECT_DEFER_DISABLE
    - frr_timestamp
    - bgp_peer_move_to_gr_mode
    - bgp_best_path_select_defer
    - work_queue_is_scheduled
    - bgp_update_delay_configured
    - peer_established
    - bgp_fsm_error_subcode
    - bgp_keepalives_off
    - FOREACH_AFI_SAFI_NSF
    - remain
    - peer_af_find
    - bgp_update_delay_applicable
    - BGP_DEBUG
    - peer_xfer_conn
    - event_add_write
    - bgp_zebra_num_connects
    - bgp_stop
    - zlog_debug
    - get_afi_safi_str
    - vrf_lookup_by_id
    - bgp_clear_stale_route
    - bgp_update_restarted_peers
    - bgp_maxmed_onstartup_applicable
    - assert
    - bgp_start_routeadv
    - zlog_info
    - sockunion_free
    - zlog_err
    - event_timer_remain_second
    - XFREE
    - BGP_PEER_GR_GLOBAL_INHERIT_UNSET
    - hash_release
    - bgp_gr_lookup_n_update_all_peer
    - BGP_UPDATE_GROUP_TIMER_ON
    - bgp_start
    - SET_FLAG
    - work_queue_unplug
    - bgp_keepalives_on
    - bgp_add_eoiu_mark
    - BGP_TIMER_ON
    - BGP_PEER_GR_HELPER_ENABLE
    - update_group_adjust_peer_afs
    - BGP_PEER_START_SUPPRESSED
    - bgp_peer_bfd_update_source
    - bgp_reads_on
    - peer_delete
    - hook_call
    - bgp_update_delay_process_status_change
    - bgp_peer_conf_if_to_su_update
    - bgp_writes_on
    - peer_unlock
    - print_global_gr_cmd
    - struct bgp_peer_gr::action_fun
    - safe_strerror
    - EVENT_ARG
    - bgp_global_gr_mode_get
    - flog_err_sys
    - hash_get
    - bgp_open_send
    - prefix_bgp_orf_remove_all
    - bgp_writes_off
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    - work_queue_plug
    - bgp_has_graceful_restart_notification
    - bgp_announce_route
    - bgp_adjust_routeadv
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    - BGP_PEER_GR_ENABLE
    - bgp_update_delay_end
    - bgp_graceful_stale_timer_expire
    - CHECK_FLAG
    - peer_dynamic_neighbor
    - bgp_update_gr_info
    - bgp_graceful_deferral_timer_expire
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: void
    signature: void bgp_graceful_restart_timer_expire(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_fsm.c:810,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:814,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:815,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:818,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:821,1
    - Dst: bgp_set_llgr_stale
      Src: /src/frr/bgpd/bgp_fsm.c:824,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:825,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:827,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:831,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_fsm.c:833,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:835,1
    - Dst: bgp_graceful_restart_timer_off
      Src: /src/frr/bgpd/bgp_fsm.c:839,1
    - Dst: bgp_graceful_stale_timer_expire
      Src: /src/frr/bgpd/bgp_fsm.c:842,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:848,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:850,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:851,1
    - Dst: FOREACH_AFI_SAFI_NSF
      Src: /src/frr/bgpd/bgp_fsm.c:855,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:857,1
    - Dst: bgp_graceful_deferral_timer_expire
      Src: /src/frr/bgpd/bgp_fsm.c:861,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:868,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:873,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:874,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:880,1
    - Dst: bgp_best_path_select_defer
      Src: /src/frr/bgpd/bgp_fsm.c:883,1
    - Dst: bgp_update_delay_applicable
      Src: /src/frr/bgpd/bgp_fsm.c:886,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_fsm.c:897,1
    - Dst: bgp_update_delay_configured
      Src: /src/frr/bgpd/bgp_fsm.c:904,1
    - Dst: bgp_update_delay_end
      Src: /src/frr/bgpd/bgp_fsm.c:913,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:915,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:916,1
    - Dst: frr_timestamp
      Src: /src/frr/bgpd/bgp_fsm.c:925,1
    - Dst: bgp_add_eoiu_mark
      Src: /src/frr/bgpd/bgp_fsm.c:947,1
    - Dst: work_queue_unplug
      Src: /src/frr/bgpd/bgp_fsm.c:956,1
    - Dst: bgp_start_routeadv
      Src: /src/frr/bgpd/bgp_fsm.c:962,1
    - Dst: frr_timestamp
      Src: /src/frr/bgpd/bgp_fsm.c:973,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:976,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:977,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:979,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:980,1
    - Dst: bgp_adjust_routeadv
      Src: /src/frr/bgpd/bgp_fsm.c:987,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:989,1
    - Dst: remain
      Src: /src/frr/bgpd/bgp_fsm.c:991,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:999,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:1001,1
    - Dst: BGP_UPDATE_GROUP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1007,1
    - Dst: difftime
      Src: /src/frr/bgpd/bgp_fsm.c:1029,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1031,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1032,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/bgp_fsm.c:1053,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1059,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 793
    functionDepth: 10
    functionLinenumber: 793
    functionLinenumberEnd: 1061
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 24
    functionsReached:
    - bgp_update_delay_configured
    - peer_established
    - FOREACH_AFI_SAFI_NSF
    - bgp_add_eoiu_mark
    - remain
    - peer_af_find
    - BGP_TIMER_ON
    - bgp_update_delay_applicable
    - bgp_graceful_restart_timer_off
    - BGP_DEBUG
    - bgp_update_delay_active
    - bgp_set_llgr_stale
    - zlog_debug
    - get_afi_safi_str
    - EVENT_ARG
    - bgp_clear_stale_route
    - bgp_start_routeadv
    - monotime
    - event_timer_remain_second
    - bgp_announce_route
    - EVENT_OFF
    - bgp_adjust_routeadv
    - bgp_debug_neighbor_events
    - XFREE
    - event_add_timer
    - difftime
    - bgp_update_delay_end
    - bgp_graceful_stale_timer_expire
    - BGP_UPDATE_GROUP_TIMER_ON
    - SET_FLAG
    - work_queue_unplug
    - bgp_graceful_deferral_timer_expire
    - ALL_LIST_ELEMENTS
    - frr_timestamp
    - bgp_best_path_select_defer
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1063
    functionDepth: 0
    functionLinenumber: 1063
    functionLinenumberEnd: 1068
    functionName: bgp_maxmed_onstartup_applicable
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_maxmed_onstartup_applicable(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1075
    functionName: bgp_maxmed_onstartup_configured
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_maxmed_onstartup_configured(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1077
    functionDepth: 0
    functionLinenumber: 1077
    functionLinenumberEnd: 1082
    functionName: bgp_maxmed_onstartup_active
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_maxmed_onstartup_active(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: update_group_announce
      Src: /src/frr/bgpd/bgp_fsm.c:1105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1107
    functionName: bgp_maxmed_update
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - update_group_announce
    linkageType: ''
    returnType: void
    signature: void bgp_maxmed_update(struct bgp *bgp)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1128
    functionName: bgp_fsm_error_subcode
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_fsm_error_subcode(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1135,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1137,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1138,1
    - Dst: bgp_maxmed_update
      Src: /src/frr/bgpd/bgp_fsm.c:1141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1131
    functionDepth: 2
    functionLinenumber: 1131
    functionLinenumberEnd: 1142
    functionName: bgp_maxmed_onstartup_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_maxmed_update
    - zlog_info
    - EVENT_OFF
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_maxmed_onstartup_timer(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1150,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:1153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1144
    functionDepth: 1
    functionLinenumber: 1144
    functionLinenumberEnd: 1163
    functionName: bgp_maxmed_onstartup_begin
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void bgp_maxmed_onstartup_begin(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1167,1
    - Dst: bgp_maxmed_onstartup_begin
      Src: /src/frr/bgpd/bgp_fsm.c:1168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1165
    functionDepth: 2
    functionLinenumber: 1165
    functionLinenumberEnd: 1170
    functionName: bgp_maxmed_onstartup_process_status_change
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - bgp_maxmed_onstartup_begin
    - peer_established
    linkageType: ''
    returnType: void
    signature: void bgp_maxmed_onstartup_process_status_change(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1177,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1179,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1180,1
    - Dst: bgp_update_delay_end
      Src: /src/frr/bgpd/bgp_fsm.c:1181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1182
    functionName: bgp_update_delay_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_update_delay_end
    - zlog_info
    - EVENT_OFF
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_update_delay_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1189,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1191,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1192,1
    - Dst: bgp_check_update_delay
      Src: /src/frr/bgpd/bgp_fsm.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1194
    functionName: bgp_establish_wait_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - EVENT_OFF
    - bgp_check_update_delay
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_establish_wait_timer(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: work_queue_plug
      Src: /src/frr/bgpd/bgp_fsm.c:1206,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:1208,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:1212,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_fsm.c:1215,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:1216,1
    - Dst: frr_timestamp
      Src: /src/frr/bgpd/bgp_fsm.c:1219,1
    - Dst: bgp_update_delay_process_status_change
      Src: /src/frr/bgpd/bgp_fsm.c:1223,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1225,1
    - Dst: bgp_update_delay_begin
      Src: /src/frr/bgpd/bgp_fsm.c:1227,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1228,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1232,1
    - Dst: bgp_update_restarted_peers
      Src: /src/frr/bgpd/bgp_fsm.c:1233,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_fsm.c:1236,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:1251,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1261,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1264,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_fsm.c:1265,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1267,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1269,1
    - Dst: bgp_clear_route_all
      Src: /src/frr/bgpd/bgp_fsm.c:1284,1
    - Dst: work_queue_is_scheduled
      Src: /src/frr/bgpd/bgp_fsm.c:1306,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1308,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_fsm.c:1320,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_fsm.c:1326,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1329,1
    - Dst: bgp_maxmed_onstartup_configured
      Src: /src/frr/bgpd/bgp_fsm.c:1333,1
    - Dst: bgp_maxmed_onstartup_applicable
      Src: /src/frr/bgpd/bgp_fsm.c:1334,1
    - Dst: bgp_maxmed_onstartup_process_status_change
      Src: /src/frr/bgpd/bgp_fsm.c:1335,1
    - Dst: bgp_update_delay_configured
      Src: /src/frr/bgpd/bgp_fsm.c:1341,1
    - Dst: bgp_update_delay_applicable
      Src: /src/frr/bgpd/bgp_fsm.c:1342,1
    - Dst: bgp_update_delay_process_status_change
      Src: /src/frr/bgpd/bgp_fsm.c:1343,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1345,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1346,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1347,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1348,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 27
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1200
    functionDepth: 6
    functionLinenumber: 1200
    functionLinenumberEnd: 1349
    functionName: bgp_update_delay_begin
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 2
    functionsReached:
    - work_queue_is_scheduled
    - bgp_update_delay_configured
    - bgp_update_delay_begin
    - peer_established
    - bgp_maxmed_onstartup_process_status_change
    - bgp_update_delay_applicable
    - lookup_msg
    - BGP_EVENT_ADD
    - bgp_update_delay_active
    - hook_call
    - bgp_update_delay_process_status_change
    - zlog_debug
    - vrf_lookup_by_id
    - if
    - bgp_maxmed_onstartup_applicable
    - bgp_update_restarted_peers
    - zlog_info
    - work_queue_plug
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    - event_add_timer
    - bgp_fsm_change_status
    - CHECK_FLAG
    - bgp_clear_route_all
    - ALL_LIST_ELEMENTS
    - frr_timestamp
    - bgp_maxmed_onstartup_configured
    linkageType: ''
    returnType: void
    signature: void bgp_update_delay_begin(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1354,1
    - Dst: BGP_EVENT_FLUSH
      Src: /src/frr/bgpd/bgp_fsm.c:1357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1352
    functionDepth: 1
    functionLinenumber: 1352
    functionLinenumberEnd: 1360
    functionName: bgp_clearing_completed
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_stop
    - BGP_EVENT_FLUSH
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_clearing_completed(struct peer *peer)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_uninstall
      Src: /src/frr/bgpd/bgp_fsm.c:1378,1
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1381,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1382,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1383,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1385,1
    - Dst: BGP_EVENT_FLUSH
      Src: /src/frr/bgpd/bgp_fsm.c:1392,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1396,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1403,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_fsm.c:1405,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:1407,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1419,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1420,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1425,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1426,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1427,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1430,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1434,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1437,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1441,1
    - Dst: FOREACH_AFI_SAFI_NSF
      Src: /src/frr/bgpd/bgp_fsm.c:1443,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1449,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1451,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1452,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_fsm.c:1461,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1464,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:1475,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1476,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1483,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:1485,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1487,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:1494,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:1496,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1497,1
    - Dst: update_group_remove_peer_afs
      Src: /src/frr/bgpd/bgp_fsm.c:1499,1
    - Dst: bgp_keepalives_off
      Src: /src/frr/bgpd/bgp_fsm.c:1506,1
    - Dst: bgp_writes_off
      Src: /src/frr/bgpd/bgp_fsm.c:1509,1
    - Dst: bgp_reads_off
      Src: /src/frr/bgpd/bgp_fsm.c:1510,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1512,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1513,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1516,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1517,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1518,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1519,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1520,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_fsm.c:1523,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_fsm.c:1525,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_fsm.c:1527,1
    - Dst: ringbuf_wipe
      Src: /src/frr/bgpd/bgp_fsm.c:1530,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_fsm.c:1533,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_fsm.c:1540,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1565,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_fsm.c:1567,1
    - Dst: prefix_bgp_orf_remove_all
      Src: /src/frr/bgpd/bgp_fsm.c:1569,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1583,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1590,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1591,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1592,1
    - Dst: bgp_peer_conf_if_to_su_update
      Src: /src/frr/bgpd/bgp_fsm.c:1595,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 122
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1364
    functionDepth: 9
    functionLinenumber: 1364
    functionLinenumberEnd: 1598
    functionName: bgp_stop
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 5
    functionsReached:
    - peer_established
    - bgp_keepalives_off
    - FOREACH_AFI_SAFI_NSF
    - BGP_TIMER_ON
    - BGP_DEBUG
    - peer_dynamic_neighbor_no_nsf
    - frr_with_mutex
    - peer_delete
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - snprintf
    - bgp_peer_conf_if_to_su_update
    - bfd_sess_uninstall
    - zlog_debug
    - vrf_lookup_by_id
    - EVENT_ARG
    - bgp_reads_off
    - zlog_info
    - stream_free
    - update_group_remove_peer_afs
    - prefix_bgp_orf_remove_all
    - monotime
    - bgp_writes_off
    - EVENT_OFF
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    - XFREE
    - stream_fifo_clean
    - CHECK_FLAG
    - close
    - ringbuf_wipe
    - BGP_EVENT_FLUSH
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_stop(struct peer *peer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1464,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:1475,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1476,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1483,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_fsm.c:1485,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1487,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1462
    functionDepth: 1
    functionLinenumber: 1462
    functionLinenumberEnd: 1490
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 24
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - EVENT_OFF
    - XFREE
    - EVENT_ARG
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:1565,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_fsm.c:1567,1
    - Dst: prefix_bgp_orf_remove_all
      Src: /src/frr/bgpd/bgp_fsm.c:1569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1550
    functionDepth: 1
    functionLinenumber: 1550
    functionLinenumberEnd: 1571
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 24
    functionsReached:
    - prefix_bgp_orf_remove_all
    - peer_established
    - snprintf
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1610,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1611,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1612,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1614,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1618,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1601
    functionDepth: 10
    functionLinenumber: 1601
    functionLinenumberEnd: 1619
    functionName: bgp_stop_with_error
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - peer_dynamic_neighbor_no_nsf
    - peer_delete
    - bgp_stop
    - zlog_debug
    - bgp_debug_neighbor_events
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_stop_with_error(struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:1627,1
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1629,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1630,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1631,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1633,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1640,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - peer
    - code
    - sub_code
    argTypes:
    - struct peer*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1623
    functionDepth: 10
    functionLinenumber: 1623
    functionLinenumberEnd: 1641
    functionName: bgp_stop_with_notify
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - peer_dynamic_neighbor_no_nsf
    - peer_delete
    - bgp_stop
    - zlog_debug
    - bgp_debug_neighbor_events
    - bgp_notify_send
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_stop_with_notify(struct peer *peer,
      uint8_t code, uint8_t sub_code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:1665,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1666,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1666,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1667,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1667,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1668,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1669,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1671,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:1672,1
    - Dst: getsockopt
      Src: /src/frr/bgpd/bgp_fsm.c:1676,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1681,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_fsm.c:1682,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1689,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1690,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1692,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1695,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1696,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_fsm.c:1697,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1698,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (!peer->t_read)
      pos:
        line_end: 1667
        line_start: 1667
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_READS_ON))
      pos:
        line_end: 1665
        line_start: 1665
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON))
      pos:
        line_end: 1666
        line_start: 1666
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!peer->t_write)
      pos:
        line_end: 1668
        line_start: 1668
        source_file: /src/frr/bgpd/bgp_fsm.c
    constantsTouched: []
    func_position:
      end: 1701
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1701
    functionName: bgp_connect_check
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - getsockopt
    - CHECK_FLAG
    - zlog_err
    - zlog_debug
    - EVENT_OFF
    - safe_strerror
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_connect_check(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1708,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1710,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_fsm.c:1713,1
    - Dst: flog_err_sys
      Src: /src/frr/bgpd/bgp_fsm.c:1714,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:1717,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_fsm.c:1718,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_fsm.c:1719,1
    - Dst: bgp_nht_interface_events
      Src: /src/frr/bgpd/bgp_fsm.c:1727,1
    - Dst: bgp_reads_on
      Src: /src/frr/bgpd/bgp_fsm.c:1729,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1731,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1732,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1733,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1736,1
    - Dst: bgp_open_send
      Src: /src/frr/bgpd/bgp_fsm.c:1740,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1705
    functionDepth: 10
    functionLinenumber: 1705
    functionLinenumberEnd: 1743
    functionName: bgp_connect_success
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_getsockname
    - bgp_fsm_error_subcode
    - bgp_open_send
    - bgp_writes_on
    - CHECK_FLAG
    - bgp_nht_interface_events
    - bgp_stop
    - flog_err
    - zlog_debug
    - bgp_notify_send
    - bgp_debug_neighbor_events
    - flog_err_sys
    - bgp_reads_on
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_connect_success(struct peer *peer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1752,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1754,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_fsm.c:1757,1
    - Dst: flog_err_sys
      Src: /src/frr/bgpd/bgp_fsm.c:1758,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:1761,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_fsm.c:1762,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_fsm.c:1763,1
    - Dst: bgp_nht_interface_events
      Src: /src/frr/bgpd/bgp_fsm.c:1771,1
    - Dst: bgp_reads_on
      Src: /src/frr/bgpd/bgp_fsm.c:1773,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1776,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1777,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1780,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:1788,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1791,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1792,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1748
    functionDepth: 10
    functionLinenumber: 1748
    functionLinenumberEnd: 1796
    functionName: bgp_connect_success_w_delayopen
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_getsockname
    - bgp_fsm_error_subcode
    - bgp_writes_on
    - CHECK_FLAG
    - bgp_nht_interface_events
    - BGP_TIMER_ON
    - bgp_stop
    - flog_err
    - zlog_debug
    - bgp_notify_send
    - bgp_debug_neighbor_events
    - flog_err_sys
    - bgp_reads_on
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_connect_success_w_delayopen(struct
      peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_dynamic_neighbor_no_nsf
      Src: /src/frr/bgpd/bgp_fsm.c:1801,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1802,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1803,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:1805,1
    - Dst: bgp_nht_interface_events
      Src: /src/frr/bgpd/bgp_fsm.c:1813,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1799
    functionDepth: 10
    functionLinenumber: 1799
    functionLinenumberEnd: 1816
    functionName: bgp_connect_fail
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - peer_dynamic_neighbor_no_nsf
    - peer_delete
    - bgp_nht_interface_events
    - bgp_stop
    - zlog_debug
    - bgp_debug_neighbor_events
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_connect_fail(struct peer *peer)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: bgp_peer_conf_if_to_su_update
      Src: /src/frr/bgpd/bgp_fsm.c:1825,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1828,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1829,1
    - Dst: BGP_PEER_START_SUPPRESSED
      Src: /src/frr/bgpd/bgp_fsm.c:1836,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1837,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1838,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1841,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1843,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1847,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgp_fsm.c:1857,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgp_fsm.c:1862,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1873,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1874,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1879,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1880,1
    - Dst: bgp_peer_reg_with_nht
      Src: /src/frr/bgpd/bgp_fsm.c:1891,1
    - Dst: bgp_zebra_num_connects
      Src: /src/frr/bgpd/bgp_fsm.c:1892,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1893,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1894,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1898,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1903,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1904,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1905,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1905,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_fsm.c:1906,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:1906,1
    - Dst: bgp_connect
      Src: /src/frr/bgpd/bgp_fsm.c:1907,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1911,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1912,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1913,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1916,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1917,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:1921,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1926,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1927,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1931,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_fsm.c:1945,1
    - Dst: event_add_write
      Src: /src/frr/bgpd/bgp_fsm.c:1947,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 78
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (!peer->t_read)
      pos:
        line_end: 1903
        line_start: 1903
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON))
      pos:
        line_end: 1904
        line_start: 1904
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!peer->t_write)
      pos:
        line_end: 1902
        line_start: 1902
        source_file: /src/frr/bgpd/bgp_fsm.c
    - condition: (!CHECK_FLAG(peer->thread_flags, PEER_THREAD_READS_ON))
      pos:
        line_end: 1905
        line_start: 1905
        source_file: /src/frr/bgpd/bgp_fsm.c
    constantsTouched: []
    func_position:
      end: 1952
      start: 1821
    functionDepth: 4
    functionLinenumber: 1821
    functionLinenumberEnd: 1952
    functionName: bgp_start
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - BGP_EVENT_ADD
    - event_add_write
    - bgp_zebra_num_connects
    - bgp_peer_conf_if_to_su_update
    - sockunion_free
    - CHECK_FLAG
    - bgp_peer_reg_with_nht
    - zlog_debug
    - flog_err
    - bgp_connect
    - bgp_debug_neighbor_events
    - BGP_PEER_START_SUPPRESSED
    - event_add_read
    - assert
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_start(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:1959,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_fsm.c:1964,1
    - Dst: bgp_start
      Src: /src/frr/bgpd/bgp_fsm.c:1967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1955
    functionDepth: 10
    functionLinenumber: 1955
    functionLinenumberEnd: 1968
    functionName: bgp_reconnect
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_stop
    - bgp_start
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_reconnect(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_open_send
      Src: /src/frr/bgpd/bgp_fsm.c:1974,1
    - Dst: bgp_keepalive_send
      Src: /src/frr/bgpd/bgp_fsm.c:1977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1970
    functionDepth: 1
    functionLinenumber: 1970
    functionLinenumberEnd: 1980
    functionName: bgp_fsm_open
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_keepalive_send
    - bgp_open_send
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_fsm_open(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:1986,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:1987,1
    - Dst: bgp_stop_with_notify
      Src: /src/frr/bgpd/bgp_fsm.c:1989,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_fsm.c:1990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1984
    functionDepth: 11
    functionLinenumber: 1984
    functionLinenumberEnd: 1991
    functionName: bgp_fsm_event_error
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - flog_err
    - lookup_msg
    - bgp_fsm_error_subcode
    - bgp_stop_with_notify
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_fsm_event_error(struct peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:1997,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:1998,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_fsm.c:2004,1
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_fsm.c:2005,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2006,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2007,1
    - Dst: bgp_stop_with_notify
      Src: /src/frr/bgpd/bgp_fsm.c:2009,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 1995
    functionDepth: 11
    functionLinenumber: 1995
    functionLinenumberEnd: 2010
    functionName: bgp_fsm_holdtime_expire
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - peer_established
    - CHECK_FLAG
    - bgp_has_graceful_restart_notification
    - zlog_debug
    - SET_FLAG
    - bgp_debug_neighbor_events
    - bgp_stop_with_notify
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_fsm_holdtime_expire(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2017,1
    - Dst: bgp_open_send
      Src: /src/frr/bgpd/bgp_fsm.c:2020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 2013
    functionDepth: 1
    functionLinenumber: 2013
    functionLinenumberEnd: 2026
    functionName: bgp_fsm_delayopen_timer_expire
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - bgp_open_send
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_fsm_delayopen_timer_expire(struct peer
      *peer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_fsm.c:2044,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_fsm.c:2050,1
    - Dst: bgp_zebra_update
      Src: /src/frr/bgpd/bgp_fsm.c:2059,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2062,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2063,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:2064,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - bgp
    - afi
    - safi
    - gr_info
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct graceful_restart_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2029
    functionDepth: 2
    functionLinenumber: 2029
    functionLinenumberEnd: 2067
    functionName: bgp_start_deferral_timer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - XMALLOC
    - bgp_zebra_update
    - zlog_debug
    - get_afi_safi_str
    - event_add_timer
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int bgp_start_deferral_timer(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t\t
      \   struct graceful_restart_info *gr_info)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2077,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2078,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2083,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2084,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2089,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2090,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2092,1
    - Dst: bgp_start_deferral_timer
      Src: /src/frr/bgpd/bgp_fsm.c:2094,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2098
      start: 2070
    functionDepth: 3
    functionLinenumber: 2070
    functionLinenumberEnd: 2098
    functionName: bgp_update_gr_info
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - CHECK_FLAG
    - bgp_start_deferral_timer
    - zlog_debug
    - BGP_PEER_RESTARTING_MODE
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_update_gr_info(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_fsm.c:2117,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_fsm.c:2119,1
    - Dst: peer_xfer_conn
      Src: /src/frr/bgpd/bgp_fsm.c:2121,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2123,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_fsm.c:2131,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_fsm.c:2133,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2142,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2143,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:2150,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2153,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_fsm.c:2154,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_fsm.c:2155,1
    - Dst: update_group_adjust_peer_afs
      Src: /src/frr/bgpd/bgp_fsm.c:2162,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2165,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2166,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2167,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2168,1
    - Dst: BGP_PEER_HELPER_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2169,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2170,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2176,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2179,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:2181,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:2187,1
    - Dst: BGP_SELECT_DEFER_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2192,1
    - Dst: bgp_update_gr_info
      Src: /src/frr/bgpd/bgp_fsm.c:2193,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2195,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:2197,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2200,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2201,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2210,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2211,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2212,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2213,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_fsm.c:2214,1
    - Dst: bgp_zebra_update
      Src: /src/frr/bgpd/bgp_fsm.c:2217,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2224,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_fsm.c:2226,1
    - Dst: bgp_zebra_update
      Src: /src/frr/bgpd/bgp_fsm.c:2229,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2238,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2240,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2242,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2243,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2244,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2251,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2252,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2253,1
    - Dst: bgp_keepalives_on
      Src: /src/frr/bgpd/bgp_fsm.c:2258,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_fsm.c:2260,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2267,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2268,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2269,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2274,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2276,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_fsm.c:2278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2282,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_fsm.c:2284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2293,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2297,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2299,1
    - Dst: bgp_announce_peer
      Src: /src/frr/bgpd/bgp_fsm.c:2303,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_fsm.c:2311,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2312,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_fsm.c:2313,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2317,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2318,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_fsm.c:2323,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/bgp_fsm.c:2326,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_fsm.c:2335,1
    - Dst: bgp_peer_bfd_update_source
      Src: /src/frr/bgpd/bgp_fsm.c:2339,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 113
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2106
    functionDepth: 9
    functionLinenumber: 2106
    functionLinenumberEnd: 2342
    functionName: bgp_establish
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - BGP_TIMER_ON
    - BGP_PEER_HELPER_MODE
    - flog_err
    - update_group_adjust_peer_afs
    - bgp_peer_bfd_update_source
    - peer_xfer_conn
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - bgp_update_delay_active
    - peer_delete
    - zlog_debug
    - get_afi_safi_str
    - vrf_lookup_by_id
    - bgp_notify_send
    - bgp_global_gr_mode_get
    - BGP_PEER_RESTARTING_MODE
    - bgp_clear_stale_route
    - hash_get
    - bgp_peer_gr_mode_get
    - zlog_info
    - bgp_route_refresh_send
    - monotime
    - bgp_zebra_update
    - zlog_err
    - bgp_announce_peer
    - UNSET_FLAG
    - EVENT_OFF
    - bgp_debug_neighbor_events
    - hash_release
    - bgp_fsm_change_status
    - CHECK_FLAG
    - bgp_update_gr_info
    - SET_FLAG
    - bgp_keepalives_on
    - BGP_SELECT_DEFER_DISABLE
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_establish(struct peer *peer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2175,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2176,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2179,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:2181,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_fsm.c:2187,1
    - Dst: BGP_SELECT_DEFER_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2192,1
    - Dst: bgp_update_gr_info
      Src: /src/frr/bgpd/bgp_fsm.c:2193,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2195,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_fsm.c:2197,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2200,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_fsm.c:2201,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2202,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2173
    functionDepth: 5
    functionLinenumber: 2173
    functionLinenumberEnd: 2208
    functionName: FOREACH_AFI_SAFI_NSF
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 3
    functionsReached:
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - CHECK_FLAG
    - zlog_err
    - bgp_update_gr_info
    - get_afi_safi_str
    - BGP_SELECT_DEFER_DISABLE
    - BGP_PEER_RESTARTING_MODE
    - bgp_clear_stale_route
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI_NSF (afi, safi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2267,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2268,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2269,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2274,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2276,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_fsm.c:2278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2282,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_fsm.c:2284,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2265
    functionDepth: 1
    functionLinenumber: 2265
    functionLinenumberEnd: 2289
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 25
    functionsReached:
    - CHECK_FLAG
    - bgp_route_refresh_send
    - zlog_debug
    - EVENT_OFF
    - bgp_debug_neighbor_events
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2293,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2297,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2292
    functionDepth: 1
    functionLinenumber: 2292
    functionLinenumberEnd: 2301
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 25
    functionsReached:
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2345
    functionDepth: 1
    functionLinenumber: 2345
    functionLinenumberEnd: 2349
    functionName: bgp_fsm_keepalive
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_fsm_keepalive(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2352
    functionDepth: 1
    functionLinenumber: 2352
    functionLinenumberEnd: 2356
    functionName: bgp_fsm_update
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_fsm_update(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2361,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2369
      start: 2359
    functionDepth: 1
    functionLinenumber: 2359
    functionLinenumberEnd: 2369
    functionName: bgp_ignore
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - flog_err
    - lookup_msg
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_ignore(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2374,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2378,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:2381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2382
      start: 2372
    functionDepth: 10
    functionLinenumber: 2372
    functionLinenumberEnd: 2382
    functionName: bgp_fsm_exception
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_stop
    - flog_err
    - lookup_msg
    linkageType: ''
    returnType: enum bgp_fsm_state_progress
    signature: enum bgp_fsm_state_progress bgp_fsm_exception(struct peer *peer)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2392,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2396,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2397,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_fsm.c:2402,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2403,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_fsm.c:2412,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - peer
    - has_valid_nexthops
    argTypes:
    - struct peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2418
      start: 2384
    functionDepth: 1
    functionLinenumber: 2384
    functionLinenumberEnd: 2418
    functionName: bgp_fsm_nht_update
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - BGP_EVENT_ADD
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void bgp_fsm_nht_update(struct peer *peer, bool has_valid_nexthops)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_fsm.c:2593,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_fsm.c:2594,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_fsm.c:2596,1
    - Dst: bgp_event_update
      Src: /src/frr/bgpd/bgp_fsm.c:2597,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/bgp_fsm.c:2598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2599
      start: 2588
    functionDepth: 1
    functionLinenumber: 2588
    functionLinenumberEnd: 2599
    functionName: bgp_event
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 4
    functionsReached:
    - bgp_event_update
    - peer_unlock
    - EVENT_VAL
    - EVENT_ARG
    - peer_lock
    linkageType: ''
    returnType: void
    signature: void bgp_event(struct event *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:2614,1
    - Dst: peer_dynamic_neighbor
      Src: /src/frr/bgpd/bgp_fsm.c:2615,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_fsm.c:2620,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2621,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2623,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2624,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:2645,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgp_fsm.c:2659,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2671,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_fsm.c:2675,1
    - Dst: bgp_stop
      Src: /src/frr/bgpd/bgp_fsm.c:2679,1
    - Dst: bgp_fsm_change_status
      Src: /src/frr/bgpd/bgp_fsm.c:2680,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgp_fsm.c:2681,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - peer
    - event
    argTypes:
    - struct peer*
    - enum bgp_fsm_events
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 2601
    functionDepth: 10
    functionLinenumber: 2601
    functionLinenumberEnd: 2687
    functionName: bgp_event_update
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 2
    functionsReached:
    - bgp_fsm_change_status
    - CHECK_FLAG
    - peer_dynamic_neighbor
    - bgp_stop
    - zlog_debug
    - flog_err
    - bgp_timer_set
    - bgp_debug_neighbor_events
    - lookup_msg
    linkageType: ''
    returnType: int
    signature: int bgp_event_update(struct peer *peer, enum bgp_fsm_events event)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_fsm.c:2699,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2701,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2702,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2705,1
    - Dst: BGP_PEER_GR_HELPER_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2718,1
    - Dst: BGP_PEER_GR_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2721,1
    - Dst: BGP_PEER_GR_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:2724,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2727,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - bgp
    - global_new_state
    - global_old_state
    argTypes:
    - struct bgp*
    - enum global_mode
    - enum global_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2737
      start: 2690
    functionDepth: 1
    functionLinenumber: 2690
    functionLinenumberEnd: 2737
    functionName: bgp_gr_lookup_n_update_all_peer
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached:
    - bgp_peer_gr_mode_get
    - BGP_PEER_GR_DISABLE
    - zlog_debug
    - BGP_PEER_GR_HELPER_ENABLE
    - BGP_DEBUG
    - ALL_LIST_ELEMENTS
    - BGP_PEER_GR_ENABLE
    linkageType: ''
    returnType: int
    signature: "int bgp_gr_lookup_n_update_all_peer(struct bgp *bgp,\n\t\t\t\t    enum
      global_mode global_new_state,\n\t\t\t\t    enum global_mode global_old_state)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2744,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2745,1
    - Dst: print_global_gr_cmd
      Src: /src/frr/bgpd/bgp_fsm.c:2746,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2748,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2750,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2751,1
    - Dst: print_global_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2752,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2758,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2759,1
    - Dst: print_global_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2760,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2762,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:2768,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2774,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2775,1
    - Dst: print_global_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2778,1
    - Dst: bgp_gr_lookup_n_update_all_peer
      Src: /src/frr/bgpd/bgp_fsm.c:2782,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - bgp
    - global_gr_cmd
    argTypes:
    - struct bgp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2784
      start: 2739
    functionDepth: 2
    functionLinenumber: 2739
    functionLinenumberEnd: 2784
    functionName: bgp_gr_update_all
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - print_global_gr_cmd
    - zlog_err
    - zlog_debug
    - print_global_gr_mode
    - bgp_global_gr_mode_get
    - BGP_DEBUG
    - bgp_gr_lookup_n_update_all_peer
    linkageType: ''
    returnType: int
    signature: int bgp_gr_update_all(struct bgp *bgp, int global_gr_cmd)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - pr_mode
    argTypes:
    - enum peer_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2809
      start: 2786
    functionDepth: 0
    functionLinenumber: 2786
    functionLinenumberEnd: 2809
    functionName: print_peer_gr_mode
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *print_peer_gr_mode(enum peer_mode pr_mode)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - pr_gr_cmd
    argTypes:
    - enum peer_gr_command
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2837
      start: 2811
    functionDepth: 0
    functionLinenumber: 2811
    functionLinenumberEnd: 2837
    functionName: print_peer_gr_cmd
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *print_peer_gr_cmd(enum peer_gr_command pr_gr_cmd)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - gl_mode
    argTypes:
    - enum global_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2859
      start: 2839
    functionDepth: 0
    functionLinenumber: 2839
    functionLinenumberEnd: 2859
    functionName: print_global_gr_mode
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *print_global_gr_mode(enum global_mode gl_mode)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - gl_gr_cmd
    argTypes:
    - enum global_gr_command
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2881
      start: 2861
    functionDepth: 0
    functionLinenumber: 2861
    functionLinenumberEnd: 2881
    functionName: print_global_gr_cmd
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *print_global_gr_cmd(enum global_gr_command gl_gr_cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2886
      start: 2883
    functionDepth: 0
    functionLinenumber: 2883
    functionLinenumberEnd: 2886
    functionName: bgp_global_gr_mode_get
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: enum global_mode
    signature: enum global_mode bgp_global_gr_mode_get(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2891
      start: 2888
    functionDepth: 0
    functionLinenumber: 2888
    functionLinenumberEnd: 2891
    functionName: bgp_peer_gr_mode_get
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: enum peer_mode
    signature: enum peer_mode bgp_peer_gr_mode_get(struct peer *peer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2906,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2907,1
    - Dst: print_peer_gr_cmd
      Src: /src/frr/bgpd/bgp_fsm.c:2909,1
    - Dst: bgp_peer_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2911,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2914,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2922,1
    - Dst: struct bgp_peer_gr::action_fun
      Src: /src/frr/bgpd/bgp_fsm.c:2928,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2931,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2932,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2941,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2942,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2944,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - peer
    - peer_gr_cmd
    argTypes:
    - struct peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2950
      start: 2893
    functionDepth: 1
    functionLinenumber: 2893
    functionLinenumberEnd: 2950
    functionName: bgp_neighbor_graceful_restart
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - bgp_peer_gr_mode_get
    - print_peer_gr_cmd
    - struct bgp_peer_gr::action_fun
    - print_peer_gr_mode
    - zlog_debug
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: int bgp_neighbor_graceful_restart(struct peer *peer, int peer_gr_cmd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:2955,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:2956,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2958,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:2959,1
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:2975,1
    - Dst: BGP_PEER_GR_GLOBAL_INHERIT_UNSET
      Src: /src/frr/bgpd/bgp_fsm.c:2991,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3000,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3001,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3003,1
    - Dst: bgp_peer_move_to_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3005,1
    - Dst: BGP_PEER_GR_GLOBAL_INHERIT_SET
      Src: /src/frr/bgpd/bgp_fsm.c:3021,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3037,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3038,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3040,1
    - Dst: bgp_peer_move_to_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3042,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3052,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3053,1
    - Dst: print_peer_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3054,1
    - Dst: bgp_peer_move_to_gr_mode
      Src: /src/frr/bgpd/bgp_fsm.c:3056,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 3
    argNames:
    - peer
    - old_peer_state
    - new_peer_state
    argTypes:
    - struct peer*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3062
      start: 2952
    functionDepth: 1
    functionLinenumber: 2952
    functionLinenumberEnd: 3062
    functionName: bgp_peer_gr_action
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 0
    functionsReached:
    - print_peer_gr_mode
    - zlog_debug
    - BGP_PEER_GR_GLOBAL_INHERIT_SET
    - BGP_PEER_GR_GLOBAL_INHERIT_UNSET
    - bgp_global_gr_mode_get
    - BGP_DEBUG
    - bgp_peer_move_to_gr_mode
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int bgp_peer_gr_action(struct peer *peer, int old_peer_state,\n\t\t\t\tint
      new_peer_state)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_global_gr_mode_get
      Src: /src/frr/bgpd/bgp_fsm.c:3067,1
    - Dst: BGP_PEER_GR_HELPER_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3071,1
    - Dst: BGP_PEER_GR_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3074,1
    - Dst: BGP_PEER_GR_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3077,1
    - Dst: BGP_PEER_GR_GLOBAL_INHERIT_SET
      Src: /src/frr/bgpd/bgp_fsm.c:3080,1
    - Dst: BGP_PEER_GR_HELPER_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3083,1
    - Dst: BGP_PEER_GR_ENABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3085,1
    - Dst: BGP_PEER_GR_DISABLE
      Src: /src/frr/bgpd/bgp_fsm.c:3087,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:3089,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_fsm.c:3094,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3098,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3099,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - peer
    - new_state
    argTypes:
    - struct peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3101
      start: 3064
    functionDepth: 1
    functionLinenumber: 3064
    functionLinenumberEnd: 3101
    functionName: bgp_peer_move_to_gr_mode
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 3
    functionsReached:
    - BGP_PEER_GR_DISABLE
    - zlog_err
    - zlog_debug
    - BGP_PEER_GR_HELPER_ENABLE
    - BGP_PEER_GR_GLOBAL_INHERIT_SET
    - bgp_global_gr_mode_get
    - BGP_DEBUG
    - BGP_PEER_GR_ENABLE
    linkageType: ''
    returnType: void
    signature: void bgp_peer_move_to_gr_mode(struct peer *peer, int new_state)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3105,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3106,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3107,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3109,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3111,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3112,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3113,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3120,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3122,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3124,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3125,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3126,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3129,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3132,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3134,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3137,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_fsm.c:3139,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3140,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3143,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3148,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3149,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3150,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3153,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_fsm.c:3155,1
    - Dst: peer_nsf_stop
      Src: /src/frr/bgpd/bgp_fsm.c:3157,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_fsm.c:3158,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3163
      start: 3103
    functionDepth: 7
    functionLinenumber: 3103
    functionLinenumberEnd: 3163
    functionName: bgp_peer_gr_flags_update
    functionSourceFile: /src/frr/bgpd/bgp_fsm.c
    functionUses: 5
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - peer_nsf_stop
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void bgp_peer_gr_flags_update(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: lcommunity_new
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct lcommunity
    signature: struct lcommunity *lcommunity_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_lcommunity.c:37,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_lcommunity.c:38,1
    - Dst: json_object_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:40,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_lcommunity.c:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - lcom
    argTypes:
    - struct lcommunity**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 42
    functionName: lcommunity_free
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 10
    functionsReached:
    - json_object_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void lcommunity_free(struct lcommunity **lcom)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lcom
    argTypes:
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: lcommunity_hash_free
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - lcommunity_free
    linkageType: ''
    returnType: void
    signature: void lcommunity_hash_free(struct lcommunity *lcom)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:64,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:64,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_lcommunity.c:65,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_lcommunity.c:72,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:82,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:82,1
    - Dst: memmove
      Src: /src/frr/bgpd/bgp_lcommunity.c:84,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_lcommunity.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - lcom
    - lval
    argTypes:
    - struct lcommunity*
    - struct lcommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 90
    functionName: lcommunity_add_val
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - lcom_length
    - XMALLOC
    - memcmp
    - memmove
    - XREALLOC
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool lcommunity_add_val(struct lcommunity *lcom,\n\t\t\t       struct
      lcommunity_val *lval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_new::lcommunity_new
      Src: /src/frr/bgpd/bgp_lcommunity.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lcom
    argTypes:
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 112
    functionName: lcommunity_uniq_sort
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 2
    functionsReached:
    - lcommunity_new::lcommunity_new
    linkageType: ''
    returnType: struct lcommunity
    signature: struct lcommunity *lcommunity_uniq_sort(struct lcommunity *lcom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_uniq_sort::lcommunity_uniq_sort
      Src: /src/frr/bgpd/bgp_lcommunity.c:131,1
    - Dst: lcommunity_intern
      Src: /src/frr/bgpd/bgp_lcommunity.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pnt
    - length
    argTypes:
    - uint8_t*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 134
    functionName: lcommunity_parse
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - lcommunity_intern
    - lcommunity_uniq_sort::lcommunity_uniq_sort
    linkageType: ''
    returnType: struct lcommunity
    signature: struct lcommunity *lcommunity_parse(uint8_t *pnt, unsigned short length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_new::lcommunity_new
      Src: /src/frr/bgpd/bgp_lcommunity.c:141,1
    - Dst: size::size
      Src: /src/frr/bgpd/bgp_lcommunity.c:143,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:144,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:144,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_lcommunity.c:145,1
    - Dst: val::val
      Src: /src/frr/bgpd/bgp_lcommunity.c:145,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - lcom
    argTypes:
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 149
    functionName: lcommunity_dup
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 6
    functionsReached:
    - lcom_length
    - lcommunity_new::lcommunity_new
    - XMALLOC
    - val::val
    - size::size
    - memcpy
    linkageType: ''
    returnType: struct lcommunity
    signature: struct lcommunity *lcommunity_dup(struct lcommunity *lcom)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:155,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:156,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:156,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_lcommunity.c:158,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:158,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lcom1
    - lcom2
    argTypes:
    - struct lcommunity*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 162
    functionName: lcommunity_merge
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 1
    functionsReached:
    - XREALLOC
    - memcpy
    - lcom_length
    linkageType: ''
    returnType: struct lcommunity
    signature: "struct lcommunity *lcommunity_merge(struct lcommunity *lcom1,\n\t\t\t\t
      \   struct lcommunity *lcom2)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_lcommunity.c:182,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_lcommunity.c:183,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:187,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_lcommunity.c:190,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_lcommunity.c:191,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:201,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_lcommunity.c:206,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_lcommunity.c:209,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_lcommunity.c:210,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_lcommunity.c:211,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_lcommunity.c:216,1
    - Dst: bgp_community2alias
      Src: /src/frr/bgpd/bgp_lcommunity.c:226,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_lcommunity.c:227,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:230,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_lcommunity.c:234,1
    - Dst: json_object_new_string
      Src: /src/frr/bgpd/bgp_lcommunity.c:237,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_lcommunity.c:238,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_lcommunity.c:244,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_lcommunity.c:245,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 3
    argNames:
    - lcom
    - make_json
    - translate_alias
    argTypes:
    - struct lcommunity*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 250
    functionName: set_lcommunity_string
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - strlcat
    - bgp_community2alias
    - strlen
    - json_object_array_add
    - snprintf
    - XCALLOC
    - ptr_get_be32
    - json_object_string_add
    - json_object_object_add
    - json_object_new_string
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: "void set_lcommunity_string(struct lcommunity *lcom, bool make_json,\n\t\t\t\t
      \ bool translate_alias)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_lcommunity.c:257,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_lcommunity.c:259,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:262,1
    - Dst: set_lcommunity_string
      Src: /src/frr/bgpd/bgp_lcommunity.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lcom
    argTypes:
    - struct lcommunity*
    assertStmts:
    - condition: (lcom->refcnt == 0)
      pos:
        line_end: 256
        line_start: 256
        source_file: /src/frr/bgpd/bgp_lcommunity.c
    constantsTouched: []
    func_position:
      end: 270
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 270
    functionName: lcommunity_intern
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 1
    functionsReached:
    - hash_get
    - lcommunity_free
    - assert
    - set_lcommunity_string
    linkageType: ''
    returnType: struct lcommunity
    signature: struct lcommunity *lcommunity_intern(struct lcommunity *lcom)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_lcommunity.c:286,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_lcommunity.c:287,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - lcom
    argTypes:
    - struct lcommunity**
    assertStmts:
    - condition: (ret != NULL)
      pos:
        line_end: 286
        line_start: 286
        source_file: /src/frr/bgpd/bgp_lcommunity.c
    constantsTouched: []
    func_position:
      end: 291
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 291
    functionName: lcommunity_unintern
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - hash_release
    - lcommunity_free
    - assert
    linkageType: ''
    returnType: void
    signature: void lcommunity_unintern(struct lcommunity **lcom)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_lcommunity.c:301,1
    - Dst: set_lcommunity_string
      Src: /src/frr/bgpd/bgp_lcommunity.c:304,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - lcom
    - make_json
    - translate_alias
    argTypes:
    - struct lcommunity*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 307
    functionName: lcommunity_str
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 5
    functionsReached:
    - XFREE
    - set_lcommunity_string
    linkageType: ''
    returnType: char
    signature: "char *lcommunity_str(struct lcommunity *lcom, bool make_json,\n\t\t
      \    bool translate_alias)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:313,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_lcommunity.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 316
    functionName: lcommunity_hash_make
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - jhash
    - lcom_length
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int lcommunity_hash_make(const void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_lcommunity.c:331,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 332
    functionName: lcommunity_cmp
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 8
    functionsReached:
    - memcmp
    - lcom_length
    linkageType: ''
    returnType: bool
    signature: bool lcommunity_cmp(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: lcommunity_hash
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct hash
    signature: struct hash *lcommunity_hash(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_lcommunity.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 345
    functionName: lcommunity_init
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void lcommunity_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: lcommunity_finish
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void lcommunity_finish(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_lcommunity.c:362,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_lcommunity.c:380,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_lcommunity.c:380,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_lcommunity.c:403,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 2
    argNames:
    - str
    - lval
    argTypes:
    - char*
    - struct lcommunity_val*
    assertStmts:
    - condition: (isdigit((unsigned char)*p) || *p == ':')
      pos:
        line_end: 379
        line_start: 379
        source_file: /src/frr/bgpd/bgp_lcommunity.c
    - condition: (separator == 2 && digit == 1)
      pos:
        line_end: 402
        line_start: 402
        source_file: /src/frr/bgpd/bgp_lcommunity.c
    constantsTouched: []
    func_position:
      end: 422
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 422
    functionName: lcommunity_gettoken
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - isdigit
    - isspace
    - assert
    linkageType: ''
    returnType: char
    signature: "char *lcommunity_gettoken(const char *str,\n\t\t\t\t       struct
      lcommunity_val *lval)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_list_valid
      Src: /src/frr/bgpd/bgp_lcommunity.c:436,1
    - Dst: lcommunity_gettoken
      Src: /src/frr/bgpd/bgp_lcommunity.c:440,1
    - Dst: lcommunity_new
      Src: /src/frr/bgpd/bgp_lcommunity.c:442,1
    - Dst: lcommunity_add_val
      Src: /src/frr/bgpd/bgp_lcommunity.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 431
    functionDepth: 2
    functionLinenumber: 431
    functionLinenumberEnd: 447
    functionName: lcommunity_str2com
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 4
    functionsReached:
    - lcommunity_gettoken
    - lcommunity_new
    - lcommunity_list_valid
    - lcommunity_add_val
    linkageType: ''
    returnType: struct lcommunity
    signature: struct lcommunity *lcommunity_str2com(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_lcommunity.c:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - lcom
    - ptr
    argTypes:
    - struct lcommunity*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 460
    functionName: lcommunity_include
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 1
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool lcommunity_include(struct lcommunity *lcom, uint8_t *ptr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_lcommunity.c:479,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - lcom1
    - lcom2
    argTypes:
    - struct lcommunity*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 490
    functionName: lcommunity_match
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 4
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool lcommunity_match(const struct lcommunity *lcom1,\n\t\t      const
      struct lcommunity *lcom2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_lcommunity.c:502,1
    - Dst: memmove
      Src: /src/frr/bgpd/bgp_lcommunity.c:508,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_lcommunity.c:516,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_lcommunity.c:517,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_lcommunity.c:519,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - lcom
    - ptr
    argTypes:
    - struct lcommunity*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 525
    functionName: lcommunity_del_val
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 1
    functionsReached:
    - lcom_length
    - memcmp
    - memmove
    - XFREE
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: void lcommunity_del_val(struct lcommunity *lcom, uint8_t *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_lcommunity.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aggregate
    - lcommunity
    argTypes:
    - struct bgp_aggregate*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 532
    functionName: bgp_aggr_lcommunity_lookup
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct lcommunity
    signature: "struct lcommunity *bgp_aggr_lcommunity_lookup(\n\t\t\t\t\t\tstruct
      bgp_aggregate *aggregate,\n\t\t\t\t\t\tstruct lcommunity *lcommunity)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_lcommunity.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 541
    functionName: bgp_aggr_lcommunty_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - lcommunity_dup
    linkageType: ''
    returnType: void
    signature: void *bgp_aggr_lcommunty_hash_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_merge
      Src: /src/frr/bgpd/bgp_lcommunity.c:549,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_lcommunity.c:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 553
    functionName: bgp_aggr_lcommunity_prepare
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - lcommunity_dup
    - lcommunity_merge
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_lcommunity_prepare(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 555
    functionDepth: 2
    functionLinenumber: 555
    functionLinenumberEnd: 560
    functionName: bgp_aggr_lcommunity_remove
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 0
    functionsReached:
    - lcommunity_free
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_lcommunity_remove(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_compute_aggregate_lcommunity_hash
      Src: /src/frr/bgpd/bgp_lcommunity.c:566,1
    - Dst: bgp_compute_aggregate_lcommunity_val
      Src: /src/frr/bgpd/bgp_lcommunity.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - aggregate
    - lcommunity
    argTypes:
    - struct bgp_aggregate*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 568
    functionName: bgp_compute_aggregate_lcommunity
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 2
    functionsReached:
    - bgp_compute_aggregate_lcommunity_hash
    - bgp_compute_aggregate_lcommunity_val
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_lcommunity(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \     struct lcommunity *lcommunity)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_lcommunity.c:582,1
    - Dst: bgp_aggr_lcommunity_lookup
      Src: /src/frr/bgpd/bgp_lcommunity.c:586,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_lcommunity.c:590,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - aggregate
    - lcommunity
    argTypes:
    - struct bgp_aggregate*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 570
    functionDepth: 2
    functionLinenumber: 570
    functionLinenumberEnd: 598
    functionName: bgp_compute_aggregate_lcommunity_hash
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 3
    functionsReached:
    - hash_create
    - hash_get
    - bgp_aggr_lcommunity_lookup
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_lcommunity_hash(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \  struct lcommunity *lcommunity)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:610,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_lcommunity.c:613,1
    - Dst: lcommunity_uniq_sort
      Src: /src/frr/bgpd/bgp_lcommunity.c:617,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:619,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - aggregate
    argTypes:
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 600
    functionDepth: 2
    functionLinenumber: 600
    functionLinenumberEnd: 621
    functionName: bgp_compute_aggregate_lcommunity_val
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 3
    functionsReached:
    - hash_iterate
    - lcommunity_uniq_sort
    - lcommunity_free
    linkageType: ''
    returnType: void
    signature: void bgp_compute_aggregate_lcommunity_val(struct bgp_aggregate *aggregate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_lcommunity_lookup
      Src: /src/frr/bgpd/bgp_lcommunity.c:636,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_lcommunity.c:641,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:643,1
    - Dst: bgp_compute_aggregate_lcommunity_val
      Src: /src/frr/bgpd/bgp_lcommunity.c:645,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - aggregate
    - lcommunity
    argTypes:
    - struct bgp_aggregate*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 623
    functionDepth: 3
    functionLinenumber: 623
    functionLinenumberEnd: 649
    functionName: bgp_remove_lcommunity_from_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 2
    functionsReached:
    - bgp_aggr_lcommunity_lookup
    - hash_release
    - bgp_compute_aggregate_lcommunity_val
    - lcommunity_free
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_lcommunity_from_aggregate(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \ struct lcommunity *lcommunity)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_lcommunity_lookup
      Src: /src/frr/bgpd/bgp_lcommunity.c:664,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_lcommunity.c:669,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_lcommunity.c:671,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - aggregate
    - lcommunity
    argTypes:
    - struct bgp_aggregate*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 674
    functionName: bgp_remove_lcomm_from_aggregate_hash
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.c
    functionUses: 2
    functionsReached:
    - bgp_aggr_lcommunity_lookup
    - hash_release
    - lcommunity_free
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_lcomm_from_aggregate_hash(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \ struct lcommunity *lcommunity)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_community_alias.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: bgp_ca_community_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_ca_community_hash_key(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_community_alias.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 32
    functionName: bgp_ca_community_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_ca_community_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_community_alias.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: bgp_ca_alias_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_ca_alias_hash_key(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_community_alias.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: bgp_ca_alias_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_ca_alias_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_community_alias.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: bgp_community_alias_alloc
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_community_alias_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_community_alias.c:62,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_community_alias.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: bgp_community_alias_init
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 3
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void bgp_community_alias_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community_alias.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ca
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: bgp_ca_free
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_ca_free(void *ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_community_alias.c:77,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_community_alias.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: bgp_community_alias_finish
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void bgp_community_alias_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_community_alias.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hb
    - vty
    argTypes:
    - struct hash_bucket*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 87
    functionName: bgp_community_alias_show_iterator
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bgp_community_alias_show_iterator(struct hash_bucket *hb,\n\t\t\t\t\t
      \     struct vty *vty)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_community_alias.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 96
    functionName: bgp_community_alias_write
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: int
    signature: int bgp_community_alias_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_community_alias.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ca
    argTypes:
    - struct community_alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: bgp_ca_community_insert
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: void bgp_ca_community_insert(struct community_alias *ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_community_alias.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ca
    argTypes:
    - struct community_alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: bgp_ca_alias_insert
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: void bgp_ca_alias_insert(struct community_alias *ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_community_alias.c:110,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community_alias.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ca
    argTypes:
    - struct community_alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: bgp_ca_community_delete
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_release
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_ca_community_delete(struct community_alias *ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_community_alias.c:117,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community_alias.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ca
    argTypes:
    - struct community_alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: bgp_ca_alias_delete
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_release
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_ca_alias_delete(struct community_alias *ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_community_alias.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ca
    argTypes:
    - struct community_alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: bgp_ca_community_lookup
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct community_alias
    signature: struct community_alias *bgp_ca_community_lookup(struct community_alias
      *ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_community_alias.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ca
    argTypes:
    - struct community_alias*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 130
    functionName: bgp_ca_alias_lookup
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct community_alias
    signature: struct community_alias *bgp_ca_alias_lookup(struct community_alias
      *ca)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_community_alias.c:137,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_community_alias.c:138,1
    - Dst: bgp_ca_community_lookup
      Src: /src/frr/bgpd/bgp_community_alias.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - community
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 145
    functionName: bgp_community2alias
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 4
    functionsReached:
    - bgp_ca_community_lookup
    - strlcpy
    - memset
    linkageType: ''
    returnType: char
    signature: char *bgp_community2alias(char *community)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_community_alias.c:152,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_community_alias.c:153,1
    - Dst: bgp_ca_alias_lookup
      Src: /src/frr/bgpd/bgp_community_alias.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - alias
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 160
    functionName: bgp_alias2community
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - bgp_ca_alias_lookup
    - strlcpy
    - memset
    linkageType: ''
    returnType: char
    signature: char *bgp_alias2community(char *alias)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_community_alias.c:174,1
    - Dst: bgp_alias2community
      Src: /src/frr/bgpd/bgp_community_alias.c:178,1
    - Dst: frrstr_join
      Src: /src/frr/bgpd/bgp_community_alias.c:180,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community_alias.c:183,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_community_alias.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 187
    functionName: bgp_alias2community_str
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 2
    functionsReached:
    - frrstr_join
    - frrstr_split
    - XFREE
    - bgp_alias2community
    linkageType: ''
    returnType: char
    signature: char *bgp_alias2community_str(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set
      Src: /src/frr/bgpd/bgp_community_alias.c:195,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_community_alias.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 198
    functionName: bgp_community_alias_vector_walker
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - vector_set
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int bgp_community_alias_vector_walker(struct hash_bucket *bucket,\n\t\t\t\t\t
      \    void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_community_alias.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: bgp_community_alias_cmd_completion
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 0
    functionsReached:
    - hash_walk
    linkageType: ''
    returnType: void
    signature: "void bgp_community_alias_cmd_completion(vector comps,\n\t\t\t\t\t
      \      struct cmd_token *token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_community_alias.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: bgp_community_alias_command_completion_setup
    functionSourceFile: /src/frr/bgpd/bgp_community_alias.c
    functionUses: 1
    functionsReached:
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void bgp_community_alias_command_completion_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: ecom_length_size
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ecom_length_size(X, Y)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - as
    - val
    - eval
    - trans
    argTypes:
    - as_t
    - uint32_t
    - struct ecommunity_val*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 175
    functionName: encode_route_target_as
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void encode_route_target_as(as_t as, uint32_t val,\n\t\t\t\t\t  struct
      ecommunity_val *eval,\n\t\t\t\t\t  bool trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.h:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ip
    - val
    - eval
    - trans
    argTypes:
    - struct in_addr*
    - uint16_t
    - struct ecommunity_val*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 191
    functionName: encode_route_target_ip
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void encode_route_target_ip(struct in_addr *ip, uint16_t val,\n\t\t\t\t\t
      \ struct ecommunity_val *eval,\n\t\t\t\t\t  bool trans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - as
    - val
    - eval
    - trans
    argTypes:
    - as_t
    - uint16_t
    - struct ecommunity_val*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 210
    functionName: encode_route_target_as4
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void encode_route_target_as4(as_t as, uint16_t val,\n\t\t\t\t\t   struct
      ecommunity_val *eval,\n\t\t\t\t\t   bool trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - u
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 221
    functionName: uint32_to_ieee_float_uint32
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t uint32_to_ieee_float_uint32(uint32_t u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uint32_to_ieee_float_uint32
      Src: /src/frr/bgpd/bgp_ecommunity.h:232,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.h:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - as
    - bw
    - non_trans
    - eval
    - disable_ieee_floating
    argTypes:
    - as_t
    - uint32_t
    - bool
    - struct ecommunity_val*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 245
    functionName: encode_lb_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 1
    functionsReached:
    - uint32_to_ieee_float_uint32
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_lb_extcomm(as_t as, uint32_t bw, bool non_trans,\n\t\t\t\t
      \    struct ecommunity_val *eval,\n\t\t\t\t     bool disable_ieee_floating)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.h:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - eval
    argTypes:
    - enum rpki_states
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 271
    functionName: encode_origin_validation_state
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_origin_validation_state(enum rpki_states state,\n\t\t\t\t\t\t
      \ struct ecommunity_val *eval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.h:283,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.h:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - node_id
    - eval
    - trans
    argTypes:
    - struct in_addr*
    - struct ecommunity_val*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 291
    functionName: encode_node_target
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_node_target(struct in_addr *node_id,\n\t\t\t\t      struct
      ecommunity_val *eval, bool trans)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_strip
      Src: /src/frr/bgpd/bgp_ecommunity.h:367,1
    - Dst: ecommunity_strip
      Src: /src/frr/bgpd/bgp_ecommunity.h:368,1
    - Dst: ecommunity_strip
      Src: /src/frr/bgpd/bgp_ecommunity.h:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 370
    functionName: ecommunity_strip_rts
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.h
    functionUses: 0
    functionsReached:
    - ecommunity_strip
    linkageType: ''
    returnType: void
    signature: void ecommunity_strip_rts(struct ecommunity *ecom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_attr.c:90,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_attr.c:94,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 102
    functionName: cluster_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *cluster_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_attr.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pnt
    - length
    argTypes:
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 116
    functionName: cluster_parse
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: struct cluster_list
    signature: struct cluster_list *cluster_parse(struct in_addr *pnt, int length)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - cluster
    - originator
    argTypes:
    - struct cluster_list*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: cluster_loop_check
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool cluster_loop_check(struct cluster_list *cluster, struct in_addr
      originator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_attr.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 133
    functionName: cluster_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int cluster_hash_key_make(const void *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_attr.c:149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 150
    functionName: cluster_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool cluster_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:154,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - struct cluster_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: cluster_free
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cluster_free(struct cluster_list *cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_attr.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - struct cluster_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 166
    functionName: cluster_intern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: struct cluster_list
    signature: struct cluster_list *cluster_intern(struct cluster_list *cluster)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_attr.c:174,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:175,1
    - Dst: cluster_free
      Src: /src/frr/bgpd/bgp_attr.c:176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - cluster
    argTypes:
    - struct cluster_list**
    assertStmts:
    - condition: (p == *cluster)
      pos:
        line_end: 174
        line_start: 174
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 179
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 179
    functionName: cluster_unintern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_release
    - cluster_free
    - assert
    linkageType: ''
    returnType: void
    signature: void cluster_unintern(struct cluster_list **cluster)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_attr.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: cluster_init
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void cluster_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_attr.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: cluster_finish
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void cluster_finish(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_attr.c:208,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_attr.c:211,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:213,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct bgp_attr_encap_subtlv*
    assertStmts:
    - condition: (tail)
      pos:
        line_end: 212
        line_start: 212
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 219
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 219
    functionName: encap_tlv_dup
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC::XCALLOC
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: struct bgp_attr_encap_subtlv *encap_tlv_dup(struct bgp_attr_encap_subtlv
      *orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct bgp_attr_encap_subtlv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 230
    functionName: encap_free
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void encap_free(struct bgp_attr_encap_subtlv *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: encap_free
      Src: /src/frr/bgpd/bgp_attr.c:238,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:243,1
    - Dst: encap_free
      Src: /src/frr/bgpd/bgp_attr.c:246,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 250
    functionName: bgp_attr_flush_encap
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - encap_free
    - bgp_attr_set_vnc_subtlvs
    - bgp_attr_get_vnc_subtlvs
    linkageType: ''
    returnType: void
    signature: void bgp_attr_flush_encap(struct attr *attr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_attr.c:274,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_attr.c:286,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 24
    argCount: 2
    argNames:
    - h1
    - h2
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_attr_encap_subtlv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 296
    functionName: encap_same
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool encap_same(const struct bgp_attr_encap_subtlv *h1,\n\t\t       const
      struct bgp_attr_encap_subtlv *h2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: encap_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *encap_hash_alloc(void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_attr.c:321,1
    - Dst: encap_free
      Src: /src/frr/bgpd/bgp_attr.c:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - encap
    - type
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - encap_subtlv_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 327
    functionName: encap_intern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - encap_free
    - hash_get
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      encap_intern(struct bgp_attr_encap_subtlv *encap, encap_subtlv_type type)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_attr.c:342,1
    - Dst: encap_free
      Src: /src/frr/bgpd/bgp_attr.c:343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - encapp
    - type
    argTypes:
    - struct bgp_attr_encap_subtlv**
    - encap_subtlv_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 346
    functionName: encap_unintern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - encap_free
    - hash_release
    linkageType: ''
    returnType: void
    signature: "void encap_unintern(struct bgp_attr_encap_subtlv **encapp,\n\t\t\t
      \  encap_subtlv_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_attr.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 353
    functionName: encap_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int encap_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encap_same
      Src: /src/frr/bgpd/bgp_attr.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 359
    functionName: encap_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - encap_same
    linkageType: ''
    returnType: bool
    signature: bool encap_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_attr.c:363,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_attr.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 369
    functionName: encap_init
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void encap_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_attr.c:373,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_attr.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 377
    functionName: encap_finish
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void encap_finish(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_route_evpn_same
      Src: /src/frr/bgpd/bgp_attr.c:388,1
    - Dst: bgp_attr_get_evpn_overlay
      Src: /src/frr/bgpd/bgp_attr.c:388,1
    - Dst: bgp_attr_get_evpn_overlay
      Src: /src/frr/bgpd/bgp_attr.c:389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - a1
    - a2
    argTypes:
    - struct attr*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 390
    functionName: overlay_index_same
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_route_evpn_same
    - bgp_attr_get_evpn_overlay
    linkageType: ''
    returnType: bool
    signature: bool overlay_index_same(const struct attr *a1, const struct attr *a2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:397,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - transit
    argTypes:
    - struct transit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 399
    functionName: transit_free
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void transit_free(struct transit *transit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 405
    functionName: transit_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *transit_hash_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_attr.c:411,1
    - Dst: transit_free
      Src: /src/frr/bgpd/bgp_attr.c:413,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - transit
    argTypes:
    - struct transit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 417
    functionName: transit_intern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - transit_free
    - hash_get
    linkageType: ''
    returnType: struct transit
    signature: struct transit *transit_intern(struct transit *transit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_attr.c:425,1
    - Dst: transit_free
      Src: /src/frr/bgpd/bgp_attr.c:426,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - transit
    argTypes:
    - struct transit**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 429
    functionName: transit_unintern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - transit_free
    - hash_release
    linkageType: ''
    returnType: void
    signature: void transit_unintern(struct transit **transit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ptr_get_be16
      Src: /src/frr/bgpd/bgp_attr.c:440,1
    - Dst: ptr_get_be64
      Src: /src/frr/bgpd/bgp_attr.c:448,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - pnt
    - length
    - aigp
    argTypes:
    - uint8_t*
    - int
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 470
    functionName: bgp_attr_aigp_get_tlv_metric
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - ptr_get_be64
    - ptr_get_be16
    - zlog_err
    linkageType: ''
    returnType: bool
    signature: "bool bgp_attr_aigp_get_tlv_metric(uint8_t *pnt, int length,\n\t\t\t\t\t
      uint64_t *aigp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_attr.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bpi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 480
    functionName: bgp_aigp_metric_total
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_aigp_metric
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bgp_aigp_metric_total(struct bgp_path_info *bpi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:485,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:486,1
    - Dst: stream_putq
      Src: /src/frr/bgpd/bgp_attr.c:487,1
    - Dst: bgp_aigp_metric_total
      Src: /src/frr/bgpd/bgp_attr.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s
    - bpi
    argTypes:
    - struct stream*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 488
    functionName: stream_put_bgp_aigp_tlv_metric
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_aigp_metric_total
    - stream_putw
    - stream_putq
    - stream_putc
    linkageType: ''
    returnType: void
    signature: "void stream_put_bgp_aigp_tlv_metric(struct stream *s,\n\t\t\t\t\t
      \  struct bgp_path_info *bpi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:498,1
    - Dst: ptr_get_be16
      Src: /src/frr/bgpd/bgp_attr.c:511,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:515,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:522,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:530,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - pnt
    - length
    argTypes:
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 540
    functionName: bgp_attr_aigp_valid
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - ptr_get_be16
    - zlog_err
    linkageType: ''
    returnType: bool
    signature: bool bgp_attr_aigp_valid(uint8_t *pnt, int length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 545
    functionName: srv6_l3vpn_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *srv6_l3vpn_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l3vpn
    argTypes:
    - struct bgp_attr_srv6_l3vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 550
    functionName: srv6_l3vpn_free
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void srv6_l3vpn_free(struct bgp_attr_srv6_l3vpn *l3vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_attr.c:557,1
    - Dst: srv6_l3vpn_free
      Src: /src/frr/bgpd/bgp_attr.c:559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - l3vpn
    argTypes:
    - struct bgp_attr_srv6_l3vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 562
    functionName: srv6_l3vpn_intern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_get
    - srv6_l3vpn_free
    linkageType: ''
    returnType: struct bgp_attr_srv6_l3vpn
    signature: 'struct bgp_attr_srv6_l3vpn *

      srv6_l3vpn_intern(struct bgp_attr_srv6_l3vpn *l3vpn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_attr.c:572,1
    - Dst: srv6_l3vpn_free
      Src: /src/frr/bgpd/bgp_attr.c:573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - l3vpnp
    argTypes:
    - struct bgp_attr_srv6_l3vpn**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 576
    functionName: srv6_l3vpn_unintern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_release
    - srv6_l3vpn_free
    linkageType: ''
    returnType: void
    signature: void srv6_l3vpn_unintern(struct bgp_attr_srv6_l3vpn **l3vpnp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: srv6_vpn_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *srv6_vpn_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgp_attr_srv6_vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 586
    functionName: srv6_vpn_free
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void srv6_vpn_free(struct bgp_attr_srv6_vpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_attr.c:592,1
    - Dst: srv6_vpn_free
      Src: /src/frr/bgpd/bgp_attr.c:594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgp_attr_srv6_vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 597
    functionName: srv6_vpn_intern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_get
    - srv6_vpn_free
    linkageType: ''
    returnType: struct bgp_attr_srv6_vpn
    signature: struct bgp_attr_srv6_vpn *srv6_vpn_intern(struct bgp_attr_srv6_vpn
      *vpn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_attr.c:607,1
    - Dst: srv6_vpn_free
      Src: /src/frr/bgpd/bgp_attr.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - vpnp
    argTypes:
    - struct bgp_attr_srv6_vpn**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 611
    functionName: srv6_vpn_unintern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_release
    - srv6_vpn_free
    linkageType: ''
    returnType: void
    signature: void srv6_vpn_unintern(struct bgp_attr_srv6_vpn **vpnp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_attr.c:618,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:619,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:620,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:621,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:622,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:623,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:624,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:625,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 628
    functionName: srv6_l3vpn_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t srv6_l3vpn_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sid_same
      Src: /src/frr/bgpd/bgp_attr.c:635,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 644
    functionName: srv6_l3vpn_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - sid_same
    linkageType: ''
    returnType: bool
    signature: bool srv6_l3vpn_hash_cmp(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: srv6_l3vpn_hash_cmp
      Src: /src/frr/bgpd/bgp_attr.c:654,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - h1
    - h2
    argTypes:
    - struct bgp_attr_srv6_l3vpn*
    - struct bgp_attr_srv6_l3vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 646
    functionDepth: 2
    functionLinenumber: 646
    functionLinenumberEnd: 655
    functionName: srv6_l3vpn_same
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - srv6_l3vpn_hash_cmp
    linkageType: ''
    returnType: bool
    signature: "bool srv6_l3vpn_same(const struct bgp_attr_srv6_l3vpn *h1,\n\t\t\t
      \   const struct bgp_attr_srv6_l3vpn *h2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_attr.c:662,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_attr.c:663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 665
    functionName: srv6_vpn_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int srv6_vpn_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sid_same
      Src: /src/frr/bgpd/bgp_attr.c:672,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: srv6_vpn_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - sid_same
    linkageType: ''
    returnType: bool
    signature: bool srv6_vpn_hash_cmp(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: srv6_vpn_hash_cmp
      Src: /src/frr/bgpd/bgp_attr.c:684,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - h1
    - h2
    argTypes:
    - struct bgp_attr_srv6_vpn*
    - struct bgp_attr_srv6_vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 685
    functionName: srv6_vpn_same
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - srv6_vpn_hash_cmp
    linkageType: ''
    returnType: bool
    signature: "bool srv6_vpn_same(const struct bgp_attr_srv6_vpn *h1,\n\t\t\t  const
      struct bgp_attr_srv6_vpn *h2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_attr.c:690,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_attr.c:692,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 694
    functionName: srv6_init
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void srv6_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_attr.c:698,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_attr.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 701
    functionName: srv6_finish
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void srv6_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_attr.c:707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 703
    functionDepth: 1
    functionLinenumber: 703
    functionLinenumberEnd: 708
    functionName: transit_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int transit_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_attr.c:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 717
    functionName: transit_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool transit_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_attr.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 723
    functionName: transit_init
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void transit_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_attr.c:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 728
    functionName: transit_finish
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void transit_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 733
    functionDepth: 0
    functionLinenumber: 733
    functionLinenumberEnd: 736
    functionName: attr_count
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long int
    signature: unsigned long int attr_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 741
    functionName: attr_unknown_count
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long int
    signature: unsigned long int attr_unknown_count(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MIX3
      Src: /src/frr/bgpd/bgp_attr.c:750,1
    - Dst: MIX3
      Src: /src/frr/bgpd/bgp_attr.c:751,1
    - Dst: MIX3
      Src: /src/frr/bgpd/bgp_attr.c:753,1
    - Dst: MIX3
      Src: /src/frr/bgpd/bgp_attr.c:755,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:758,1
    - Dst: aspath_key_make
      Src: /src/frr/bgpd/bgp_attr.c:758,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:759,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:760,1
    - Dst: community_hash_make
      Src: /src/frr/bgpd/bgp_attr.c:760,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:760,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:761,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:762,1
    - Dst: lcommunity_hash_make
      Src: /src/frr/bgpd/bgp_attr.c:762,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:762,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:763,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:764,1
    - Dst: ecommunity_hash_make
      Src: /src/frr/bgpd/bgp_attr.c:764,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:764,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:765,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:766,1
    - Dst: ecommunity_hash_make
      Src: /src/frr/bgpd/bgp_attr.c:766,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:766,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:767,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:768,1
    - Dst: cluster_hash_key_make
      Src: /src/frr/bgpd/bgp_attr.c:768,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:768,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:769,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:770,1
    - Dst: transit_hash_key_make
      Src: /src/frr/bgpd/bgp_attr.c:770,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:770,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:772,1
    - Dst: encap_hash_key_make
      Src: /src/frr/bgpd/bgp_attr.c:772,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:774,1
    - Dst: srv6_l3vpn_hash_key_make
      Src: /src/frr/bgpd/bgp_attr.c:774,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:776,1
    - Dst: srv6_vpn_hash_key_make
      Src: /src/frr/bgpd/bgp_attr.c:776,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:779,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:781,1
    - Dst: encap_hash_key_make
      Src: /src/frr/bgpd/bgp_attr.c:781,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:783,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_attr.c:784,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_attr.c:785,1
    - Dst: MIX3
      Src: /src/frr/bgpd/bgp_attr.c:786,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:787,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:788,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:789,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:790,1
    - Dst: MIX
      Src: /src/frr/bgpd/bgp_attr.c:791,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_attr.c:791,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 743
    functionDepth: 4
    functionLinenumber: 743
    functionLinenumberEnd: 794
    functionName: attrhash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - aspath_key_make
    - MIX
    - bgp_attr_get_ipv6_ecommunity
    - bgp_attr_get_aigp_metric
    - bgp_attr_get_lcommunity
    - MIX3
    - ecommunity_hash_make
    - srv6_vpn_hash_key_make
    - community_hash_make
    - bgp_attr_get_cluster
    - transit_hash_key_make
    - jhash
    - bgp_attr_get_transit
    - srv6_l3vpn_hash_key_make
    - bgp_attr_get_ecommunity
    - encap_hash_key_make
    - bgp_attr_get_vnc_subtlvs
    - bgp_attr_get_community
    - cluster_hash_key_make
    - lcommunity_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int attrhash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 747
    functionDepth: 0
    functionLinenumber: 747
    functionLinenumberEnd: 748
    functionName: MIX
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIX(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 749
    functionName: MIX3
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIX3(a, b, c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:804,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:805,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:816,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:817,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:818,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:819,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:820,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:821,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:822,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:823,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:824,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:825,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_attr.c:826,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_attr.c:827,1
    - Dst: encap_same
      Src: /src/frr/bgpd/bgp_attr.c:830,1
    - Dst: encap_same
      Src: /src/frr/bgpd/bgp_attr.c:832,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:832,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:833,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_attr.c:835,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/bgp_attr.c:837,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_attr.c:839,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_attr.c:841,1
    - Dst: overlay_index_same
      Src: /src/frr/bgpd/bgp_attr.c:843,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_attr.c:844,1
    - Dst: srv6_l3vpn_same
      Src: /src/frr/bgpd/bgp_attr.c:852,1
    - Dst: srv6_vpn_same
      Src: /src/frr/bgpd/bgp_attr.c:853,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 796
    functionDepth: 3
    functionLinenumber: 796
    functionLinenumberEnd: 862
    functionName: attrhash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 10
    functionsReached:
    - bgp_attr_get_lcommunity
    - srv6_vpn_same
    - IPV6_ADDR_SAME
    - bgp_attr_get_aigp_metric
    - bgp_attr_get_transit
    - encap_same
    - bgp_attr_get_ecommunity
    - bgp_attr_get_cluster
    - overlay_index_same
    - memcmp
    - srv6_l3vpn_same
    - IPV4_ADDR_SAME
    - bgp_attr_get_vnc_subtlvs
    - bgp_attr_get_ipv6_ecommunity
    - bgp_attr_get_community
    linkageType: ''
    returnType: bool
    signature: bool attrhash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_attr.c:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 868
    functionName: attrhash_init
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void attrhash_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 876
    functionName: attr_vfree
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void attr_vfree(void *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_attr.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 881
    functionName: attrhash_finish
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void attrhash_finish(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_attr.c:893,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_attr.c:895,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - bucket
    - vty
    argTypes:
    - struct hash_bucket*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 883
    functionDepth: 1
    functionLinenumber: 883
    functionLinenumberEnd: 900
    functionName: attr_show_all_iterator
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void attr_show_all_iterator(struct hash_bucket *bucket, struct vty
      *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_attr.c:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 902
    functionDepth: 1
    functionLinenumber: 902
    functionLinenumberEnd: 907
    functionName: attr_show_all
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void attr_show_all(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_attr.c:914,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:921,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:924,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 929
    functionName: bgp_attr_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_vnc_subtlvs
    - bgp_attr_set_vnc_subtlvs
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_attr_hash_alloc(void *p)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: aspath_intern
      Src: /src/frr/bgpd/bgp_attr.c:943,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:948,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_attr.c:951,1
    - Dst: community_intern
      Src: /src/frr/bgpd/bgp_attr.c:951,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:956,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:959,1
    - Dst: ecommunity_intern
      Src: /src/frr/bgpd/bgp_attr.c:959,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:964,1
    - Dst: bgp_attr_set_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:967,1
    - Dst: ecommunity_intern
      Src: /src/frr/bgpd/bgp_attr.c:968,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:973,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:976,1
    - Dst: lcommunity_intern
      Src: /src/frr/bgpd/bgp_attr.c:976,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:981,1
    - Dst: bgp_attr_set_cluster
      Src: /src/frr/bgpd/bgp_attr.c:985,1
    - Dst: cluster_intern
      Src: /src/frr/bgpd/bgp_attr.c:985,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:990,1
    - Dst: bgp_attr_set_transit
      Src: /src/frr/bgpd/bgp_attr.c:994,1
    - Dst: transit_intern
      Src: /src/frr/bgpd/bgp_attr.c:994,1
    - Dst: encap_intern
      Src: /src/frr/bgpd/bgp_attr.c:1000,1
    - Dst: srv6_l3vpn_intern
      Src: /src/frr/bgpd/bgp_attr.c:1007,1
    - Dst: srv6_vpn_intern
      Src: /src/frr/bgpd/bgp_attr.c:1013,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:1019,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:1023,1
    - Dst: encap_intern
      Src: /src/frr/bgpd/bgp_attr.c:1025,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_attr.c:1037,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 63
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 932
    functionDepth: 5
    functionLinenumber: 932
    functionLinenumberEnd: 1041
    functionName: bgp_attr_intern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 18
    functionsReached:
    - transit_intern
    - bgp_attr_get_ipv6_ecommunity
    - bgp_attr_get_lcommunity
    - bgp_attr_set_lcommunity
    - community_intern
    - bgp_attr_get_cluster
    - lcommunity_intern
    - ecommunity_intern
    - hash_get
    - bgp_attr_set_transit
    - bgp_attr_get_transit
    - bgp_attr_get_ecommunity
    - bgp_attr_set_ipv6_ecommunity
    - bgp_attr_get_vnc_subtlvs
    - bgp_attr_set_cluster
    - srv6_l3vpn_intern
    - bgp_attr_set_vnc_subtlvs
    - bgp_attr_get_community
    - aspath_intern
    - cluster_intern
    - srv6_vpn_intern
    - bgp_attr_set_ecommunity
    - encap_intern
    - bgp_attr_set_community
    linkageType: ''
    returnType: struct attr
    signature: struct attr *bgp_attr_intern(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_attr.c:1047,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1050,1
    - Dst: aspath_empty
      Src: /src/frr/bgpd/bgp_attr.c:1051,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1052,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1057,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - attr
    - bgp
    - origin
    argTypes:
    - struct attr*
    - struct bgp*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1044
    functionDepth: 6
    functionLinenumber: 1044
    functionLinenumberEnd: 1062
    functionName: bgp_attr_default_set
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 7
    functionsReached:
    - aspath_empty
    - ATTR_FLAG_BIT
    - memset
    linkageType: ''
    returnType: struct attr
    signature: "struct attr *bgp_attr_default_set(struct attr *attr, struct bgp *bgp,\n\t\t\t\t
      \ uint8_t origin)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_attr.c:1075,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1079,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1083,1
    - Dst: aspath_intern
      Src: /src/frr/bgpd/bgp_attr.c:1087,1
    - Dst: aspath_empty
      Src: /src/frr/bgpd/bgp_attr.c:1089,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1090,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_attr.c:1098,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_attr.c:1099,1
    - Dst: community_del_val
      Src: /src/frr/bgpd/bgp_attr.c:1100,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_attr.c:1103,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1107,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:1110,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_attr.c:1112,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_attr.c:1113,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1120,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1121,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1122,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1139,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_attr.c:1148,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1152,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_attr.c:1154,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_attr.c:1160,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1163,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_attr.c:1167,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_attr.c:1168,1
    - Dst: bgp_attr_intern::bgp_attr_intern
      Src: /src/frr/bgpd/bgp_attr.c:1170,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_attr.c:1173,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_attr.c:1174,1
    - Dst: bgp_attr_intern::bgp_attr_intern
      Src: /src/frr/bgpd/bgp_attr.c:1176,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1180,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 59
    argCount: 9
    argNames:
    - bgp
    - origin
    - aspath
    - community
    - ecommunity
    - lcommunity
    - aggregate
    - atomic_aggregate
    - p
    argTypes:
    - struct bgp*
    - uint8_t
    - struct aspath*
    - struct community*
    - struct ecommunity*
    - struct lcommunity*
    - struct bgp_aggregate*
    - uint8_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1065
    functionDepth: 6
    functionLinenumber: 1065
    functionLinenumberEnd: 1183
    functionName: bgp_attr_aggregate_intern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - bgp_attr_set_ecommunity
    - community_include
    - aspath_unintern
    - bgp_attr_add_gshut_community
    - community_del_val
    - memset
    - aspath_intern
    - bgp_attr_set_lcommunity
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - SET_FLAG
    - bgp_attr_flush
    - route_map_apply
    - bgp_in_graceful_shutdown
    - bgp_attr_intern::bgp_attr_intern
    - aspath_empty
    - bgp_attr_set_community
    linkageType: ''
    returnType: struct attr
    signature: "struct attr *bgp_attr_aggregate_intern(\n\tstruct bgp *bgp, uint8_t
      origin, struct aspath *aspath,\n\tstruct community *community, struct ecommunity
      *ecommunity,\n\tstruct lcommunity *lcommunity, struct bgp_aggregate *aggregate,\n\tuint8_t
      atomic_aggregate, const struct prefix *p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1195,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1196,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1196,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:1198,1
    - Dst: community_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1199,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_attr.c:1200,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1202,1
    - Dst: ecommunity_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1203,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1204,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1206,1
    - Dst: ecommunity_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1207,1
    - Dst: bgp_attr_set_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1208,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:1210,1
    - Dst: lcommunity_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1211,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:1212,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:1214,1
    - Dst: cluster_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1216,1
    - Dst: bgp_attr_set_cluster
      Src: /src/frr/bgpd/bgp_attr.c:1217,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1219,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1219,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:1221,1
    - Dst: transit_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1224,1
    - Dst: bgp_attr_set_transit
      Src: /src/frr/bgpd/bgp_attr.c:1225,1
    - Dst: encap_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1229,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:1233,1
    - Dst: encap_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1236,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:1237,1
    - Dst: srv6_l3vpn_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1242,1
    - Dst: srv6_vpn_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1245,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1186
    functionDepth: 5
    functionLinenumber: 1186
    functionLinenumberEnd: 1246
    functionName: bgp_attr_unintern_sub
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - lcommunity_unintern
    - srv6_vpn_unintern
    - cluster_unintern
    - bgp_attr_get_ipv6_ecommunity
    - bgp_attr_get_lcommunity
    - bgp_attr_set_lcommunity
    - bgp_attr_get_cluster
    - srv6_l3vpn_unintern
    - ecommunity_unintern
    - aspath_unintern
    - bgp_attr_set_transit
    - bgp_attr_get_transit
    - transit_unintern
    - bgp_attr_get_ecommunity
    - community_unintern
    - bgp_attr_set_ipv6_ecommunity
    - UNSET_FLAG
    - bgp_attr_get_vnc_subtlvs
    - bgp_attr_set_cluster
    - bgp_attr_set_vnc_subtlvs
    - bgp_attr_get_community
    - ATTR_FLAG_BIT
    - encap_unintern
    - bgp_attr_set_ecommunity
    - bgp_attr_set_community
    linkageType: ''
    returnType: void
    signature: void bgp_attr_unintern_sub(struct attr *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_attr.c:1262,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:1263,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:1264,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_attr.c:1268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - pattr
    argTypes:
    - struct attr**
    assertStmts:
    - condition: (ret != NULL)
      pos:
        line_end: 1262
        line_start: 1262
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 1269
      start: 1249
    functionDepth: 6
    functionLinenumber: 1249
    functionLinenumberEnd: 1269
    functionName: bgp_attr_unintern
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 15
    functionsReached:
    - hash_release
    - XFREE
    - assert
    - bgp_attr_unintern_sub
    linkageType: ''
    returnType: void
    signature: void bgp_attr_unintern(struct attr **pattr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_attr.c:1280,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:1283,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_attr.c:1285,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_attr.c:1286,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1288,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_attr.c:1290,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1291,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1293,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_attr.c:1295,1
    - Dst: bgp_attr_set_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:1296,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:1298,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_attr.c:1300,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:1301,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:1303,1
    - Dst: cluster_free
      Src: /src/frr/bgpd/bgp_attr.c:1305,1
    - Dst: bgp_attr_set_cluster
      Src: /src/frr/bgpd/bgp_attr.c:1306,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:1309,1
    - Dst: transit_free
      Src: /src/frr/bgpd/bgp_attr.c:1312,1
    - Dst: bgp_attr_set_transit
      Src: /src/frr/bgpd/bgp_attr.c:1313,1
    - Dst: encap_free
      Src: /src/frr/bgpd/bgp_attr.c:1316,1
    - Dst: srv6_l3vpn_free
      Src: /src/frr/bgpd/bgp_attr.c:1320,1
    - Dst: srv6_vpn_free
      Src: /src/frr/bgpd/bgp_attr.c:1324,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:1329,1
    - Dst: encap_free
      Src: /src/frr/bgpd/bgp_attr.c:1332,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:1333,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 46
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1271
    functionDepth: 4
    functionLinenumber: 1271
    functionLinenumberEnd: 1336
    functionName: bgp_attr_flush
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 15
    functionsReached:
    - transit_free
    - srv6_l3vpn_free
    - bgp_attr_get_ipv6_ecommunity
    - bgp_attr_get_lcommunity
    - encap_free
    - bgp_attr_set_lcommunity
    - lcommunity_free
    - bgp_attr_get_cluster
    - community_free
    - bgp_attr_set_transit
    - bgp_attr_get_transit
    - bgp_attr_get_ecommunity
    - bgp_attr_set_ipv6_ecommunity
    - bgp_attr_get_vnc_subtlvs
    - bgp_attr_set_cluster
    - bgp_attr_set_vnc_subtlvs
    - bgp_attr_get_community
    - ecommunity_free
    - aspath_free
    - cluster_free
    - srv6_vpn_free
    - bgp_attr_set_ecommunity
    - bgp_attr_set_community
    linkageType: ''
    returnType: void
    signature: void bgp_attr_flush(struct attr *attr)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:1356,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_attr.c:1359,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:1361,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_attr.c:1366,1
    - Dst: stream_set_getp
      Src: /src/frr/bgpd/bgp_attr.c:1374,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:1374,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_attr.c:1375,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:1375,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_attr.c:1410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1420,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1421,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 3
    argNames:
    - args
    - subcode
    - length
    argTypes:
    - struct bgp_attr_parser_args*
    - uint8_t
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1343
    functionDepth: 1
    functionLinenumber: 1343
    functionLinenumberEnd: 1426
    functionName: bgp_attr_malformed
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_notify_send_with_data
    - stream_set_getp
    - bgp_dump_attr
    - bgp_debug_update
    - CHECK_FLAG
    - STREAM_DATA
    - zlog_debug
    - BGP_INPUT
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: "enum bgp_attr_parse_ret bgp_attr_malformed(struct bgp_attr_parser_args
      *args, uint8_t subcode,\n\t\t   bgp_size_t length)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1445,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1446,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1447,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:1449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1450,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:1457,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:1459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - args
    - desired_flags
    argTypes:
    - struct bgp_attr_parser_args*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1433
    functionDepth: 1
    functionLinenumber: 1433
    functionLinenumberEnd: 1462
    functionName: bgp_attr_flags_diagnose
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - flog_err
    - lookup_msg
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_flags_diagnose(struct bgp_attr_parser_args *args,\n\t\t\tuint8_t
      desired_flags /* how RFC says it must be */\n)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1512,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1513,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1514,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:1517,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1526,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1527,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:1529,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1532,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1533,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1534,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:1536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1544,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1545,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1546,1
    - Dst: bgp_attr_flags_diagnose
      Src: /src/frr/bgpd/bgp_attr.c:1551,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1496
    functionDepth: 2
    functionLinenumber: 1496
    functionLinenumberEnd: 1553
    functionName: bgp_attr_flag_invalid
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - flog_err
    - SET_FLAG
    - bgp_attr_flags_diagnose
    - lookup_msg
    linkageType: ''
    returnType: bool
    signature: bool bgp_attr_flag_invalid(struct bgp_attr_parser_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1569,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1571,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:1576,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:1576,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1583,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1585,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1590,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1556
    functionDepth: 2
    functionLinenumber: 1556
    functionLinenumberEnd: 1593
    functionName: bgp_attr_origin
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - ATTR_FLAG_BIT
    - flog_err
    - stream_getc
    - BGP_INPUT
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_origin(struct bgp_attr_parser_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_attr.c:1604,1
    - Dst: aspath_parse
      Src: /src/frr/bgpd/bgp_attr.c:1611,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1612,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1613,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1618,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1621,1
    - Dst: aspath_check_as_sets
      Src: /src/frr/bgpd/bgp_attr.c:1631,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1632,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1635,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1640,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1597
    functionDepth: 5
    functionLinenumber: 1597
    functionLinenumberEnd: 1643
    functionName: bgp_attr_aspath
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - aspath_parse
    - bgp_attr_malformed
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - aspath_check_as_sets
    - flog_err
    linkageType: ''
    returnType: int
    signature: int bgp_attr_aspath(struct bgp_attr_parser_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: peer_sort
      Src: /src/frr/bgpd/bgp_attr.c:1663,1
    - Dst: aspath_left_confed_check
      Src: /src/frr/bgpd/bgp_attr.c:1667,1
    - Dst: aspath_confed_check
      Src: /src/frr/bgpd/bgp_attr.c:1669,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1676,1
    - Dst: aspath_firstas_check
      Src: /src/frr/bgpd/bgp_attr.c:1678,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1679,1
    - Dst: aspath_check_as_zero
      Src: /src/frr/bgpd/bgp_attr.c:1687,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1688,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1697,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_attr.c:1698,1
    - Dst: aspath_add_seq
      Src: /src/frr/bgpd/bgp_attr.c:1699,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_attr.c:1700,1
    - Dst: aspath_intern
      Src: /src/frr/bgpd/bgp_attr.c:1701,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 2
    argNames:
    - peer
    - attr
    argTypes:
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1645
    functionDepth: 6
    functionLinenumber: 1645
    functionLinenumberEnd: 1705
    functionName: bgp_attr_aspath_check
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - peer_sort
    - aspath_left_confed_check
    - aspath_unintern
    - aspath_check_as_zero
    - aspath_dup
    - aspath_confed_check
    - CHECK_FLAG
    - aspath_add_seq
    - aspath_intern
    - flog_err
    - aspath_firstas_check
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: "enum bgp_attr_parse_ret bgp_attr_aspath_check(struct peer *const peer,\n\t\t\t\t\t\t
      \    struct attr *const attr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_attr.c:1717,1
    - Dst: aspath_parse
      Src: /src/frr/bgpd/bgp_attr.c:1719,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1723,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1726,1
    - Dst: aspath_check_as_sets
      Src: /src/frr/bgpd/bgp_attr.c:1735,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1736,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1739,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - args
    - as4_path
    argTypes:
    - struct bgp_attr_parser_args*
    - struct aspath**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1709
    functionDepth: 5
    functionLinenumber: 1709
    functionLinenumberEnd: 1747
    functionName: bgp_attr_as4_path
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - aspath_parse
    - bgp_attr_malformed
    - ATTR_FLAG_BIT
    - aspath_check_as_sets
    - flog_err
    linkageType: ''
    returnType: int
    signature: "int bgp_attr_as4_path(struct bgp_attr_parser_args *args,\n\t\t\t     struct
      aspath **as4_path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipv4_martian
      Src: /src/frr/bgpd/bgp_attr.c:1757,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1760,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr.c:1765,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_attr.c:1766,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - peer
    - attr
    argTypes:
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1752
    functionDepth: 1
    functionLinenumber: 1752
    functionLinenumberEnd: 1773
    functionName: bgp_attr_nexthop_valid
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_notify_send_with_data
    - flog_err
    - memcpy
    - ipv4_martian
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: "enum bgp_attr_parse_ret bgp_attr_nexthop_valid(struct peer *peer,\n\t\t\t\t\t
      \      struct attr *attr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1785,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1788,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:1792,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1793,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1776
    functionDepth: 2
    functionLinenumber: 1776
    functionLinenumberEnd: 1796
    functionName: bgp_attr_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - flog_err
    - ATTR_FLAG_BIT
    - stream_get_ipv4
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_nexthop(struct bgp_attr_parser_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1807,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1810,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:1814,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1799
    functionDepth: 2
    functionLinenumber: 1799
    functionLinenumberEnd: 1819
    functionName: bgp_attr_med
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - flog_err
    - stream_getl
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_med(struct bgp_attr_parser_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1835,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1837,1
    - Dst: STREAM_FORWARD_GETP
      Src: /src/frr/bgpd/bgp_attr.c:1845,1
    - Dst: STREAM_GETL
      Src: /src/frr/bgpd/bgp_attr.c:1849,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1852,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1857,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1822
    functionDepth: 2
    functionLinenumber: 1822
    functionLinenumberEnd: 1859
    functionName: bgp_attr_local_pref
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - ATTR_FLAG_BIT
    - STREAM_FORWARD_GETP
    - flog_err
    - STREAM_GETL
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_local_pref(struct bgp_attr_parser_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1870,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1873,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1881,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:1886,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:1888,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1889
      start: 1862
    functionDepth: 2
    functionLinenumber: 1862
    functionLinenumberEnd: 1889
    functionName: bgp_attr_atomic
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - stream_forward_getp
    - ATTR_FLAG_BIT
    - flog_err
    linkageType: ''
    returnType: int
    signature: int bgp_attr_atomic(struct bgp_attr_parser_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1902,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1903,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1907,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1910,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:1917,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:1918,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:1920,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:1923,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1927,1
    - Dst: aspath_print
      Src: /src/frr/bgpd/bgp_attr.c:1929,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:1931,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_attr.c:1934,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:1936,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1939,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:1945,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:1947,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1892
    functionDepth: 2
    functionLinenumber: 1892
    functionLinenumberEnd: 1948
    functionName: bgp_attr_aggregator
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - bgp_dump_attr
    - bgp_debug_update
    - stream_get_ipv4
    - stream_forward_getp
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - stream_getw
    - flog_err
    - stream_getl
    - zlog_debug
    - aspath_print
    linkageType: ''
    returnType: int
    signature: int bgp_attr_aggregator(struct bgp_attr_parser_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1962,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:1964,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:1971,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:1974,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:1978,1
    - Dst: aspath_print
      Src: /src/frr/bgpd/bgp_attr.c:1980,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:1982,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_attr.c:1985,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:1987,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:1990,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:1996,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:1998,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - args
    - as4_aggregator_as
    - as4_aggregator_addr
    argTypes:
    - struct bgp_attr_parser_args*
    - as_t*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1951
    functionDepth: 2
    functionLinenumber: 1951
    functionLinenumberEnd: 1999
    functionName: bgp_attr_as4_aggregator
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - bgp_dump_attr
    - bgp_debug_update
    - stream_get_ipv4
    - stream_forward_getp
    - ATTR_FLAG_BIT
    - flog_err
    - stream_getl
    - zlog_debug
    - aspath_print
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: "enum bgp_attr_parse_ret bgp_attr_as4_aggregator(struct bgp_attr_parser_args
      *args,\n\t\t\tas_t *as4_aggregator_as,\n\t\t\tstruct in_addr *as4_aggregator_addr)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:2022,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_attr.c:2028,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2029,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2030,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2034,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2035,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2046,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2047,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_attr.c:2062,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2063,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_attr.c:2080,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2081,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2087,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2093,1
    - Dst: aspath_reconcile_as4
      Src: /src/frr/bgpd/bgp_attr.c:2094,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_attr.c:2098,1
    - Dst: aspath_intern
      Src: /src/frr/bgpd/bgp_attr.c:2099,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 5
    argNames:
    - peer
    - attr
    - as4_path
    - as4_aggregator
    - as4_aggregator_addr
    argTypes:
    - struct peer*
    - struct attr*
    - struct aspath*
    - as_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2102
      start: 2003
    functionDepth: 7
    functionLinenumber: 2003
    functionLinenumberEnd: 2102
    functionName: bgp_attr_munge_as4_attrs
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - aspath_unintern
    - CHECK_FLAG
    - aspath_intern
    - ATTR_FLAG_BIT
    - aspath_reconcile_as4
    - zlog_debug
    - BGP_DEBUG
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: "enum bgp_attr_parse_ret bgp_attr_munge_as4_attrs(struct peer *const
      peer, struct attr *const attr,\n\t\t\t struct aspath *as4_path, as_t as4_aggregator,\n\t\t\t
      struct in_addr *as4_aggregator_addr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_attr.c:2113,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2114,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_attr.c:2121,1
    - Dst: community_parse
      Src: /src/frr/bgpd/bgp_attr.c:2123,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:2123,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2126,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:2131,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2132,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2138,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:2140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2141
      start: 2105
    functionDepth: 4
    functionLinenumber: 2105
    functionLinenumberEnd: 2141
    functionName: bgp_attr_community
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - stream_forward_getp
    - community_parse
    - stream_pnt
    - bgp_attr_get_community
    - bgp_attr_set_community
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_community(struct bgp_attr_parser_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2157,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2160,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:2167,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2169,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2174,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:2176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2144
    functionDepth: 2
    functionLinenumber: 2144
    functionLinenumberEnd: 2177
    functionName: bgp_attr_originator_id
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - stream_forward_getp
    - stream_get_ipv4
    - ATTR_FLAG_BIT
    - flog_err
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_originator_id(struct bgp_attr_parser_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2193,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2195,1
    - Dst: bgp_attr_set_cluster
      Src: /src/frr/bgpd/bgp_attr.c:2202,1
    - Dst: cluster_parse
      Src: /src/frr/bgpd/bgp_attr.c:2203,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:2203,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2207,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2209,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2214,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:2216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2217
      start: 2180
    functionDepth: 2
    functionLinenumber: 2180
    functionLinenumberEnd: 2217
    functionName: bgp_attr_cluster_list
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - stream_forward_getp
    - ATTR_FLAG_BIT
    - cluster_parse
    - flog_err
    - bgp_attr_set_cluster
    - stream_pnt
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_cluster_list(struct bgp_attr_parser_args
      *args)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:2235,1
    - Dst: stream_get_getp
      Src: /src/frr/bgpd/bgp_attr.c:2236,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2241,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2242,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2248,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2249,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_attr.c:2252,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:2257,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2258,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_attr.c:2260,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_attr.c:2261,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2266,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2269,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2279,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2285,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2286,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:2296,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr.c:2299,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2305,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2306,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:2308,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_attr.c:2309,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_attr.c:2311,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2322,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2323,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:2325,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_attr.c:2326,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_attr.c:2328,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2336,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2337,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:2339,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_attr.c:2340,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:2341,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2342,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_attr.c:2350,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2357,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2363,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2370,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:2371,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2379,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2380,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2386,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:2396,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2399,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2401,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 108
    argCount: 2
    argNames:
    - args
    - mp_update
    argTypes:
    - struct bgp_attr_parser_args*
    - struct bgp_nlri*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2220
    functionDepth: 2
    functionLinenumber: 2220
    functionLinenumberEnd: 2405
    functionName: bgp_mp_reach_parse
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - stream_getc
    - flog_warn
    - bgp_debug_update
    - zlog_debug
    - stream_getl
    - stream_get_getp
    - BGP_INPUT
    - zlog_info
    - STREAM_READABLE
    - stream_forward_getp
    - stream_get
    - iana_afi2str
    - stream_pnt
    - memcpy
    - IN6_IS_ADDR_LINKLOCAL
    - ATTR_FLAG_BIT
    - stream_getw
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    linkageType: ''
    returnType: int
    signature: "int bgp_mp_reach_parse(struct bgp_attr_parser_args *args,\n\t\t       struct
      bgp_nlri *mp_update)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2424,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2427,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2428,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_attr.c:2431,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:2436,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2437,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_attr.c:2439,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_attr.c:2440,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:2448,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2451,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:2453,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - args
    - mp_withdraw
    argTypes:
    - struct bgp_attr_parser_args*
    - struct bgp_nlri*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2408
    functionDepth: 2
    functionLinenumber: 2408
    functionLinenumberEnd: 2456
    functionName: bgp_mp_unreach_parse
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - bgp_debug_update
    - STREAM_READABLE
    - stream_forward_getp
    - ATTR_FLAG_BIT
    - stream_getw
    - zlog_debug
    - iana_afi2str
    - stream_getc
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    - stream_pnt
    linkageType: ''
    returnType: int
    signature: "int bgp_mp_unreach_parse(struct bgp_attr_parser_args *args,\n\t\t\t
      struct bgp_nlri *mp_withdraw)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:2470,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2472,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:2479,1
    - Dst: lcommunity_parse
      Src: /src/frr/bgpd/bgp_attr.c:2480,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:2480,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2482,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:2484,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2485,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2491,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:2493,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2494
      start: 2459
    functionDepth: 3
    functionLinenumber: 2459
    functionLinenumberEnd: 2494
    functionName: bgp_attr_large_community
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_get_lcommunity
    - bgp_attr_ignore
    - stream_forward_getp
    - bgp_attr_set_lcommunity
    - lcommunity_parse
    - stream_pnt
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_large_community(struct bgp_attr_parser_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:2508,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2510,1
    - Dst: ecommunity_parse
      Src: /src/frr/bgpd/bgp_attr.c:2514,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:2515,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:2516,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:2518,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2520,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:2525,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2526,1
    - Dst: bgp_attr_df_pref_from_ec
      Src: /src/frr/bgpd/bgp_attr.c:2530,1
    - Dst: bgp_attr_mac_mobility_seqnum
      Src: /src/frr/bgpd/bgp_attr.c:2533,1
    - Dst: bgp_attr_default_gw
      Src: /src/frr/bgpd/bgp_attr.c:2537,1
    - Dst: bgp_attr_evpn_na_flag
      Src: /src/frr/bgpd/bgp_attr.c:2547,1
    - Dst: bgp_attr_rmac
      Src: /src/frr/bgpd/bgp_attr.c:2552,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:2553,1
    - Dst: bgp_mac_exist
      Src: /src/frr/bgpd/bgp_attr.c:2554,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2555,1
    - Dst: bgp_attr_extcom_tunnel_type
      Src: /src/frr/bgpd/bgp_attr.c:2560,1
    - Dst: ecommunity_linkbw_present
      Src: /src/frr/bgpd/bgp_attr.c:2564,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:2564,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2497
    functionDepth: 2
    functionLinenumber: 2497
    functionLinenumberEnd: 2568
    functionName: bgp_attr_ext_communities
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - ecommunity_parse
    - bgp_attr_evpn_na_flag
    - bgp_debug_update
    - stream_forward_getp
    - bgp_attr_df_pref_from_ec
    - bgp_attr_default_gw
    - CHECK_FLAG
    - bgp_attr_rmac
    - bgp_attr_get_ecommunity
    - ecommunity_linkbw_present
    - bgp_attr_mac_mobility_seqnum
    - zlog_debug
    - bgp_attr_extcom_tunnel_type
    - bgp_attr_set_ecommunity
    - stream_pnt
    - bgp_mac_exist
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_ext_communities(struct bgp_attr_parser_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_set_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:2580,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2581,1
    - Dst: ecommunity_parse_ipv6
      Src: /src/frr/bgpd/bgp_attr.c:2588,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:2589,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:2590,1
    - Dst: bgp_attr_set_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:2592,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2595,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2598,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2604,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:2606,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2607
      start: 2571
    functionDepth: 2
    functionLinenumber: 2571
    functionLinenumberEnd: 2607
    functionName: bgp_attr_ipv6_ext_communities
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - stream_forward_getp
    - CHECK_FLAG
    - bgp_attr_set_ipv6_ecommunity
    - ecommunity_parse_ipv6
    - stream_pnt
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_ipv6_ext_communities(struct bgp_attr_parser_args
      *args)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:2619,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:2620,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:2621,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2623,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:2632,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2634,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2638,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:2638,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2639,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:2639,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:2643,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2654,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:2654,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2655,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:2655,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2659,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:2659,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2660,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:2660,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:2666,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2668,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_attr.c:2675,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:2679,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:2698,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:2707,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_attr.c:2718,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2720,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 60
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2725
      start: 2610
    functionDepth: 2
    functionLinenumber: 2610
    functionLinenumberEnd: 2725
    functionName: bgp_attr_encap
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - zlog_info
    - XCALLOC
    - CHECK_FLAG
    - stream_getw
    - zlog_err
    - stream_get
    - bgp_attr_get_vnc_subtlvs
    - stream_getc
    - bgp_attr_set_vnc_subtlvs
    - BGP_INPUT
    linkageType: ''
    returnType: int
    signature: int bgp_attr_encap(struct bgp_attr_parser_args *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2741,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2742,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2745,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2746,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2750,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2751,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2753,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2754,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2757,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2758,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2763,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2768,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2773,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2775,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2779,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2780,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2785,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2786,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2787,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2788,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2789,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2790,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_attr.c:2793,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2794,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:2810,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2811,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2815,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2819
      start: 2731
    functionDepth: 2
    functionLinenumber: 2731
    functionLinenumberEnd: 2819
    functionName: bgp_attr_srv6_service_data
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - STREAM_READABLE
    - bgp_debug_update
    - stream_forward_getp
    - stream_getw
    - flog_err
    - zlog_debug
    - BGP_DEBUG
    - stream_getc
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_srv6_service_data(struct bgp_attr_parser_args
      *args)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2835,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2836,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2839,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2840,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2844,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2845,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2847,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2848,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2851,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2852,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2857,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2859,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2863,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2864,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2868,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:2869,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2870,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2871,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2872,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_attr.c:2875,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2876,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2883,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2885,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_attr.c:2888,1
    - Dst: sid_copy
      Src: /src/frr/bgpd/bgp_attr.c:2890,1
    - Dst: bgp_attr_srv6_service_data
      Src: /src/frr/bgpd/bgp_attr.c:2902,1
    - Dst: srv6_l3vpn_intern
      Src: /src/frr/bgpd/bgp_attr.c:2908,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:2913,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:2914,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:2918,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2922
      start: 2824
    functionDepth: 3
    functionLinenumber: 2824
    functionLinenumberEnd: 2922
    functionName: bgp_attr_srv6_service
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_srv6_service_data
    - STREAM_READABLE
    - XCALLOC
    - bgp_debug_update
    - stream_forward_getp
    - sid_copy
    - stream_getw
    - flog_err
    - stream_get
    - zlog_debug
    - srv6_l3vpn_intern
    - BGP_DEBUG
    - stream_getc
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_srv6_service(struct bgp_attr_parser_args
      *args)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2945,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2946,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:2949,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2950,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2956,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2959,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2965,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2966,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:2969,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2971,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:2979,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:2982,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:2988,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:2989,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:2991,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3007,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3012,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:3022,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3025,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3029,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:3037,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:3038,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3042,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3045,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3051,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3052,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3053,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:3054,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_attr.c:3058,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:3059,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3065,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3067,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_attr.c:3070,1
    - Dst: sid_copy
      Src: /src/frr/bgpd/bgp_attr.c:3073,1
    - Dst: srv6_vpn_intern
      Src: /src/frr/bgpd/bgp_attr.c:3074,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:3076,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3077,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3080,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3085,1
    - Dst: bgp_attr_srv6_service
      Src: /src/frr/bgpd/bgp_attr.c:3087,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:3091,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:3092,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:3096,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 76
    argCount: 3
    argNames:
    - type
    - length
    - args
    argTypes:
    - uint8_t
    - uint16_t
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3100
      start: 2928
    functionDepth: 4
    functionLinenumber: 2928
    functionLinenumberEnd: 3100
    functionName: bgp_attr_psid_sub
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - STREAM_READABLE
    - XCALLOC
    - bgp_debug_update
    - stream_forward_getp
    - sid_copy
    - stream_getw
    - srv6_vpn_intern
    - bgp_attr_srv6_service
    - flog_err
    - stream_getl
    - stream_get
    - zlog_debug
    - BGP_DEBUG
    - stream_getc
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: "enum bgp_attr_parse_ret bgp_attr_psid_sub(uint8_t type, uint16_t length,\n\t\t
      \ struct bgp_attr_parser_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3111,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:3118,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:3121,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3122,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:3125,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3126,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3131,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:3132,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:3134,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3135,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:3138,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3139,1
    - Dst: bgp_attr_psid_sub
      Src: /src/frr/bgpd/bgp_attr.c:3144,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3152,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3156,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3163
      start: 3105
    functionDepth: 5
    functionLinenumber: 3105
    functionLinenumberEnd: 3163
    functionName: bgp_attr_prefix_sid
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - bgp_attr_malformed
    - STREAM_READABLE
    - ATTR_FLAG_BIT
    - stream_getw
    - flog_err
    - bgp_attr_psid_sub
    - stream_getc
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_prefix_sid(struct bgp_attr_parser_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3181,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3183,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3186,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3187,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3189,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3191,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3196,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3199,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3205,1
    - Dst: bgp_attr_set_pmsi_tnl_type
      Src: /src/frr/bgpd/bgp_attr.c:3206,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:3207,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:3210,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3213
      start: 3168
    functionDepth: 2
    functionLinenumber: 3168
    functionLinenumberEnd: 3213
    functionName: bgp_attr_pmsi_tunnel
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - stream_forward_getp
    - ATTR_FLAG_BIT
    - flog_err
    - stream_get
    - stream_getc
    - bgp_attr_set_pmsi_tnl_type
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_pmsi_tunnel(struct bgp_attr_parser_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:3221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3234,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3235,1
    - Dst: bgp_attr_aigp_valid
      Src: /src/frr/bgpd/bgp_attr.c:3244,1
    - Dst: bgp_attr_aigp_get_tlv_metric
      Src: /src/frr/bgpd/bgp_attr.c:3248,1
    - Dst: bgp_attr_set_aigp_metric
      Src: /src/frr/bgpd/bgp_attr.c:3249,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:3252,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:3254,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3255
      start: 3216
    functionDepth: 2
    functionLinenumber: 3216
    functionLinenumberEnd: 3255
    functionName: bgp_attr_aigp
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_aigp_get_tlv_metric
    - bgp_attr_ignore
    - stream_forward_getp
    - CHECK_FLAG
    - bgp_attr_set_aigp_metric
    - bgp_attr_aigp_valid
    - zlog_warn
    - stream_pnt
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_aigp(struct bgp_attr_parser_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3266,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3268,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_attr.c:3275,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3277,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3278,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3282,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:3287,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:3289,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3290
      start: 3258
    functionDepth: 2
    functionLinenumber: 3258
    functionLinenumberEnd: 3290
    functionName: bgp_attr_otc
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - stream_forward_getp
    - ATTR_FLAG_BIT
    - flog_err
    - stream_getl
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_otc(struct bgp_attr_parser_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:3305,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:3306,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:3311,1
    - Dst: bgp_attr_ignore
      Src: /src/frr/bgpd/bgp_attr.c:3314,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3320,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3321,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3327,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3334,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:3337,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_attr.c:3339,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_attr.c:3341,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr.c:3344,1
    - Dst: bgp_attr_set_transit
      Src: /src/frr/bgpd/bgp_attr.c:3346,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct bgp_attr_parser_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3349
      start: 3293
    functionDepth: 2
    functionLinenumber: 3293
    functionLinenumberEnd: 3349
    functionName: bgp_attr_unknown
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_malformed
    - bgp_attr_ignore
    - bgp_debug_update
    - stream_forward_getp
    - bgp_attr_get_transit
    - XCALLOC
    - CHECK_FLAG
    - bgp_attr_set_transit
    - zlog_debug
    - SET_FLAG
    - XREALLOC
    - memcpy
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_unknown(struct bgp_attr_parser_args
      *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3358,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3366,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3367,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3367,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3370,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3370,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3373,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3373,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3380,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3381,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3381,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3385,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3385,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3392,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:3394,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 2
    argNames:
    - peer
    - attr
    argTypes:
    - struct peer*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3398
      start: 3352
    functionDepth: 1
    functionLinenumber: 3352
    functionLinenumberEnd: 3398
    functionName: bgp_attr_check
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - flog_warn
    - lookup_msg
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: int
    signature: int bgp_attr_check(struct peer *peer, struct attr *attr)
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_attr.c:3423,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3426,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3429,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3431,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3433,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:3438,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3438,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_attr.c:3440,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3447,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3451,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3451,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3452,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3452,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3455,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3457,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_attr.c:3462,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3462,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_attr.c:3464,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3471,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_attr.c:3472,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3472,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_attr.c:3474,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3474,1
    - Dst: CHECK_BITMAP
      Src: /src/frr/bgpd/bgp_attr.c:3480,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3481,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_attr.c:3486,1
    - Dst: SET_BITMAP
      Src: /src/frr/bgpd/bgp_attr.c:3495,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3498,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3501,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_attr.c:3527,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3529,1
    - Dst: stream_rewind_getp
      Src: /src/frr/bgpd/bgp_attr.c:3531,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3531,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:3533,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3533,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:3535,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3535,1
    - Dst: MIN
      Src: /src/frr/bgpd/bgp_attr.c:3538,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_attr.c:3538,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3538,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_attr.c:3539,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3539,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_attr.c:3541,1
    - Dst: bgp_attr_flag_invalid
      Src: /src/frr/bgpd/bgp_attr.c:3566,1
    - Dst: bgp_attr_malformed
      Src: /src/frr/bgpd/bgp_attr.c:3567,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:3572,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3572,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3572,1
    - Dst: bgp_attr_origin
      Src: /src/frr/bgpd/bgp_attr.c:3579,1
    - Dst: bgp_attr_aspath
      Src: /src/frr/bgpd/bgp_attr.c:3582,1
    - Dst: bgp_attr_as4_path
      Src: /src/frr/bgpd/bgp_attr.c:3585,1
    - Dst: bgp_attr_nexthop
      Src: /src/frr/bgpd/bgp_attr.c:3588,1
    - Dst: bgp_attr_med
      Src: /src/frr/bgpd/bgp_attr.c:3591,1
    - Dst: bgp_attr_local_pref
      Src: /src/frr/bgpd/bgp_attr.c:3594,1
    - Dst: bgp_attr_atomic
      Src: /src/frr/bgpd/bgp_attr.c:3597,1
    - Dst: bgp_attr_aggregator
      Src: /src/frr/bgpd/bgp_attr.c:3600,1
    - Dst: bgp_attr_as4_aggregator
      Src: /src/frr/bgpd/bgp_attr.c:3603,1
    - Dst: bgp_attr_community
      Src: /src/frr/bgpd/bgp_attr.c:3608,1
    - Dst: bgp_attr_large_community
      Src: /src/frr/bgpd/bgp_attr.c:3611,1
    - Dst: bgp_attr_originator_id
      Src: /src/frr/bgpd/bgp_attr.c:3614,1
    - Dst: bgp_attr_cluster_list
      Src: /src/frr/bgpd/bgp_attr.c:3617,1
    - Dst: bgp_mp_reach_parse
      Src: /src/frr/bgpd/bgp_attr.c:3620,1
    - Dst: bgp_mp_unreach_parse
      Src: /src/frr/bgpd/bgp_attr.c:3623,1
    - Dst: bgp_attr_ext_communities
      Src: /src/frr/bgpd/bgp_attr.c:3626,1
    - Dst: bgp_attr_encap
      Src: /src/frr/bgpd/bgp_attr.c:3632,1
    - Dst: bgp_attr_prefix_sid
      Src: /src/frr/bgpd/bgp_attr.c:3635,1
    - Dst: bgp_attr_pmsi_tunnel
      Src: /src/frr/bgpd/bgp_attr.c:3638,1
    - Dst: bgp_attr_ipv6_ext_communities
      Src: /src/frr/bgpd/bgp_attr.c:3641,1
    - Dst: bgp_attr_otc
      Src: /src/frr/bgpd/bgp_attr.c:3644,1
    - Dst: bgp_attr_aigp
      Src: /src/frr/bgpd/bgp_attr.c:3647,1
    - Dst: bgp_attr_unknown
      Src: /src/frr/bgpd/bgp_attr.c:3650,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_attr.c:3655,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3666,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:3668,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3672,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:3675,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_attr.c:3676,1
    - Dst: BGP_INPUT
      Src: /src/frr/bgpd/bgp_attr.c:3676,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3676,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3681,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3682,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:3684,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_attr.c:3685,1
    - Dst: BGP_INPUT_PNT
      Src: /src/frr/bgpd/bgp_attr.c:3704,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_attr.c:3705,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:3707,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_attr.c:3708,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3728,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3728,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3729,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3729,1
    - Dst: bgp_attr_nexthop_valid
      Src: /src/frr/bgpd/bgp_attr.c:3730,1
    - Dst: bgp_attr_check
      Src: /src/frr/bgpd/bgp_attr.c:3737,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:3757,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3757,1
    - Dst: bgp_attr_munge_as4_attrs
      Src: /src/frr/bgpd/bgp_attr.c:3758,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_attr.c:3760,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:3770,1
    - Dst: bgp_attr_aspath_check
      Src: /src/frr/bgpd/bgp_attr.c:3771,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_attr.c:3790,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:3792,1
    - Dst: bgp_attr_set_transit
      Src: /src/frr/bgpd/bgp_attr.c:3796,1
    - Dst: transit_intern
      Src: /src/frr/bgpd/bgp_attr.c:3796,1
    - Dst: encap_intern
      Src: /src/frr/bgpd/bgp_attr.c:3798,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:3802,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:3805,1
    - Dst: encap_intern
      Src: /src/frr/bgpd/bgp_attr.c:3807,1
    - Dst: transit_free
      Src: /src/frr/bgpd/bgp_attr.c:3811,1
    - Dst: bgp_attr_set_transit
      Src: /src/frr/bgpd/bgp_attr.c:3812,1
    - Dst: bgp_attr_flush_encap
      Src: /src/frr/bgpd/bgp_attr.c:3815,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:3819,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:3821,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:3823,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:3826,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:3829,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 214
    argCount: 5
    argNames:
    - peer
    - attr
    - size
    - mp_update
    - mp_withdraw
    argTypes:
    - struct peer*
    - struct attr*
    - bgp_size_t
    - struct bgp_nlri*
    - struct bgp_nlri*
    assertStmts:
    - condition: (vnc_subtlvs->refcnt > 0)
      pos:
        line_end: 3828
        line_start: 3828
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: (transit->refcnt > 0)
      pos:
        line_end: 3820
        line_start: 3820
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: (attr->encap_subtlvs->refcnt > 0)
      pos:
        line_end: 3822
        line_start: 3822
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 3833
      start: 3402
    functionDepth: 8
    functionLinenumber: 3402
    functionLinenumberEnd: 3833
    functionName: bgp_attr_parse
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - bgp_attr_community
    - bgp_mp_unreach_parse
    - transit_intern
    - transit_free
    - SET_BITMAP
    - bgp_attr_large_community
    - stream_getc
    - bgp_attr_origin
    - lookup_msg
    - bgp_attr_flush_encap
    - MIN
    - CHECK_BITMAP
    - bgp_attr_otc
    - flog_warn
    - memset
    - bgp_attr_aigp
    - bgp_attr_ipv6_ext_communities
    - BGP_INPUT_PNT
    - bgp_notify_send
    - stream_rewind_getp
    - BGP_INPUT
    - bgp_attr_pmsi_tunnel
    - bgp_attr_malformed
    - bgp_notify_send_with_data
    - aspath_unintern
    - assert
    - bgp_attr_nexthop
    - STREAM_READABLE
    - stream_forward_getp
    - bgp_attr_cluster_list
    - bgp_mp_reach_parse
    - bgp_attr_nexthop_valid
    - bgp_attr_munge_as4_attrs
    - bgp_attr_get_transit
    - bgp_attr_atomic
    - bgp_attr_aspath_check
    - bgp_attr_prefix_sid
    - stream_get
    - bgp_attr_originator_id
    - bgp_attr_encap
    - bgp_attr_ext_communities
    - bgp_attr_get_vnc_subtlvs
    - stream_pnt
    - bgp_attr_aggregator
    - bgp_attr_check
    - bgp_attr_set_vnc_subtlvs
    - bgp_attr_unknown
    - bgp_attr_as4_path
    - CHECK_FLAG
    - bgp_attr_local_pref
    - ATTR_FLAG_BIT
    - stream_getw
    - bgp_attr_med
    - bgp_attr_aspath
    - bgp_attr_set_transit
    - bgp_attr_flag_invalid
    - encap_intern
    - bgp_attr_as4_aggregator
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: "enum bgp_attr_parse_ret bgp_attr_parse(struct peer *peer, struct attr
      *attr,\n\t\t\t\t       bgp_size_t size,\n\t\t\t\t       struct bgp_nlri *mp_update,\n\t\t\t\t
      \      struct bgp_nlri *mp_withdraw)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:3847,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - attr
    - tunnel_type
    argTypes:
    - struct attr*
    - bgp_encap_types*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3866
      start: 3838
    functionDepth: 1
    functionLinenumber: 3838
    functionLinenumberEnd: 3866
    functionName: bgp_attr_extcom_tunnel_type
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - bgp_attr_get_ecommunity
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_extcom_tunnel_type(struct attr *attr,\n\t\t\t\t bgp_encap_types
      *tunnel_type)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3878,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3879,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:3880,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:3881,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_attr.c:3885,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:3887,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3888,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_attr.c:3894,1
    - Dst: BGP_NEXTHOP_AFI_FROM_NHLEN
      Src: /src/frr/bgpd/bgp_attr.c:3898,1
    - Dst: bpacket_attr_vec_arr_set_vec
      Src: /src/frr/bgpd/bgp_attr.c:3901,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3908,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:3909,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3912,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:3913,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:3914,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3915,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3919,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3920,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3924,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3926,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:3927,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:3932,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3944,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3946,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3948,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3951,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3952,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3959,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3961,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:3962,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:3963,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3964,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:3968,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:3969,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3970,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3975,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:3976,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:3980,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:3984,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_attr.c:3990,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:3997,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4002,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 101
    argCount: 6
    argNames:
    - s
    - peer
    - afi
    - safi
    - vecarr
    - attr
    argTypes:
    - struct stream*
    - struct peer*
    - afi_t
    - safi_t
    - struct bpacket_attr_vec_arr*
    - struct attr*
    assertStmts:
    - condition: (!"SAFI's UNSPEC or MAX being specified are a DEV ESCAPE")
      pos:
        line_end: 3931
        line_start: 3931
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: (!"SAFI's UNSPEC or MAX being specified are a DEV ESCAPE")
      pos:
        line_end: 3983
        line_start: 3983
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: '(!"DEV ESCAPE: AFI_UNSPEC or AFI_MAX should not be used here")'
      pos:
        line_end: 3996
        line_start: 3996
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 4004
      start: 3868
    functionDepth: 3
    functionLinenumber: 3868
    functionLinenumberEnd: 4004
    functionName: bgp_packet_mpattr_start
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - BGP_NEXTHOP_AFI_FROM_NHLEN
    - stream_put
    - peer_cap_enhe
    - stream_putw
    - stream_get_endp
    - flog_err
    - bgp_map_afi_safi_int2iana
    - bpacket_attr_vec_arr_set_vec
    - stream_put_ipv4
    - stream_putc
    - assert
    - stream_putl
    linkageType: ''
    returnType: size_t
    signature: "size_t bgp_packet_mpattr_start(struct stream *s, struct peer *peer,
      afi_t afi,\n\t\t\t       safi_t safi, struct bpacket_attr_vec_arr *vecarr,\n\t\t\t
      \      struct attr *attr)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:4015,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4019,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4021,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4022,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4023,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4024,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_attr.c:4024,1
    - Dst: bgp_evpn_encode_prefix
      Src: /src/frr/bgpd/bgp_attr.c:4029,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:4033,1
    - Dst: stream_put_labeled_prefix
      Src: /src/frr/bgpd/bgp_attr.c:4037,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4041,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4042,1
    - Dst: stream_put_prefix_addpath
      Src: /src/frr/bgpd/bgp_attr.c:4048,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:4051,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 10
    argNames:
    - s
    - afi
    - safi
    - p
    - prd
    - label
    - num_labels
    - addpath_capable
    - addpath_tx_id
    - attr
    argTypes:
    - struct stream*
    - afi_t
    - safi_t
    - struct prefix*
    - struct prefix_rd*
    - mpls_label_t*
    - uint32_t
    - bool
    - uint32_t
    - struct attr*
    assertStmts:
    - condition: (!"Dev escape usage of SAFI_UNSPEC or MAX")
      pos:
        line_end: 4014
        line_start: 4014
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: (!"Add encoding bits here for other AFI's")
      pos:
        line_end: 4032
        line_start: 4032
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: (!"Please add proper encoding of SAFI_ENCAP")
      pos:
        line_end: 4050
        line_start: 4050
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 4054
      start: 4006
    functionDepth: 3
    functionLinenumber: 4006
    functionLinenumberEnd: 4054
    functionName: bgp_packet_mpattr_prefix
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - stream_put_labeled_prefix
    - PSIZE
    - stream_put
    - bgp_evpn_encode_prefix
    - stream_put_prefix_addpath
    - stream_putc
    - assert
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_packet_mpattr_prefix(struct stream *s, afi_t afi, safi_t
      safi,\n\t\t\t      const struct prefix *p,\n\t\t\t      const struct prefix_rd
      *prd, mpls_label_t *label,\n\t\t\t      uint32_t num_labels, bool addpath_capable,\n\t\t\t
      \     uint32_t addpath_tx_id, struct attr *attr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_attr.c:4059,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:4064,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:4074,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:4086,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - afi
    - safi
    - p
    argTypes:
    - afi_t
    - safi_t
    - struct prefix*
    assertStmts:
    - condition: (!"Attempting to figure size for SAFI_EVPN and !AFI_L2VPN and FRR
        will not have the proper values")
      pos:
        line_end: 4085
        line_start: 4085
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: (!"Attempting to figure size for a SAFI_UNSPEC/SAFI_MAX this is a
        DEV ESCAPE")
      pos:
        line_end: 4063
        line_start: 4063
        source_file: /src/frr/bgpd/bgp_attr.c
    - condition: (!"Do we try to use this?")
      pos:
        line_end: 4073
        line_start: 4073
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 4094
      start: 4056
    functionDepth: 1
    functionLinenumber: 4056
    functionLinenumberEnd: 4094
    functionName: bgp_packet_mpattr_prefix_size
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - PSIZE
    - assert
    linkageType: ''
    returnType: size_t
    signature: "size_t bgp_packet_mpattr_prefix_size(afi_t afi, safi_t safi,\n\t\t\t\t
      \    const struct prefix *p)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/bgp_attr.c:4135,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_attr.c:4144,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_attr.c:4153,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4160,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4163,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4164,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4167,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4168,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4169,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4174,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4175,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4181,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4182,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4185,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4186,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4189,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 5
    argNames:
    - bgp
    - peer
    - s
    - attr
    - attrtype
    argTypes:
    - struct bgp*
    - struct peer*
    - struct stream*
    - struct attr*
    - uint8_t
    assertStmts:
    - condition: (0)
      pos:
        line_end: 4143
        line_start: 4143
        source_file: /src/frr/bgpd/bgp_attr.c
    constantsTouched: []
    func_position:
      end: 4191
      start: 4101
    functionDepth: 1
    functionLinenumber: 4101
    functionLinenumberEnd: 4191
    functionName: bgp_packet_mpattr_tea
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - stream_put
    - stream_putw
    - bgp_attr_get_vnc_subtlvs
    - stream_putc
    - assert
    linkageType: ''
    returnType: void
    signature: "void bgp_packet_mpattr_tea(struct bgp *bgp, struct peer *peer,\n\t\t\t\t
      \ struct stream *s, struct attr *attr,\n\t\t\t\t  uint8_t attrtype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_attr.c:4197,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - sizep
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4198
      start: 4193
    functionDepth: 1
    functionLinenumber: 4193
    functionLinenumberEnd: 4198
    functionName: bgp_packet_mpattr_end
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 1
    functionsReached:
    - stream_get_endp
    - stream_putw_at
    linkageType: ''
    returnType: void
    signature: void bgp_packet_mpattr_end(struct stream *s, size_t sizep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_AS_IS_PRIVATE
      Src: /src/frr/bgpd/bgp_attr.c:4202,1
    - Dst: BGP_AS_IS_PRIVATE
      Src: /src/frr/bgpd/bgp_attr.c:4203,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4204,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4206,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4208,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4210,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4214
      start: 4200
    functionDepth: 1
    functionLinenumber: 4200
    functionLinenumberEnd: 4214
    functionName: bgp_append_local_as
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - BGP_AS_IS_PRIVATE
    linkageType: ''
    returnType: bool
    signature: bool bgp_append_local_as(struct peer *peer, afi_t afi, safi_t safi)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4232,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4238,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_attr.c:4242,1
    - Dst: bgp_packet_mpattr_start
      Src: /src/frr/bgpd/bgp_attr.c:4245,1
    - Dst: bgp_packet_mpattr_prefix
      Src: /src/frr/bgpd/bgp_attr.c:4247,1
    - Dst: bgp_packet_mpattr_end
      Src: /src/frr/bgpd/bgp_attr.c:4250,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4254,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4255,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4256,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4257,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4263,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4266,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_attr.c:4268,1
    - Dst: aspath_delete_confed_seq
      Src: /src/frr/bgpd/bgp_attr.c:4273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4275,1
    - Dst: bgp_confederation_peers_check
      Src: /src/frr/bgpd/bgp_attr.c:4284,1
    - Dst: aspath_add_confed_seq
      Src: /src/frr/bgpd/bgp_attr.c:4285,1
    - Dst: aspath_add_seq
      Src: /src/frr/bgpd/bgp_attr.c:4289,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4296,1
    - Dst: bgp_append_local_as
      Src: /src/frr/bgpd/bgp_attr.c:4298,1
    - Dst: aspath_add_seq
      Src: /src/frr/bgpd/bgp_attr.c:4300,1
    - Dst: aspath_add_seq
      Src: /src/frr/bgpd/bgp_attr.c:4302,1
    - Dst: aspath_add_seq
      Src: /src/frr/bgpd/bgp_attr.c:4305,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_attr.c:4311,1
    - Dst: aspath_add_confed_seq
      Src: /src/frr/bgpd/bgp_attr.c:4312,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4328,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4329,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4330,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4331,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_attr.c:4332,1
    - Dst: aspath_put
      Src: /src/frr/bgpd/bgp_attr.c:4332,1
    - Dst: aspath_has_as4
      Src: /src/frr/bgpd/bgp_attr.c:4337,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_attr.c:4343,1
    - Dst: BGP_NEXTHOP_AFI_FROM_NHLEN
      Src: /src/frr/bgpd/bgp_attr.c:4344,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4346,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4347,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4348,1
    - Dst: bpacket_attr_vec_arr_set_vec
      Src: /src/frr/bgpd/bgp_attr.c:4349,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4351,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:4352,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_attr.c:4353,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4366,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4367,1
    - Dst: bpacket_attr_vec_arr_set_vec
      Src: /src/frr/bgpd/bgp_attr.c:4368,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4370,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:4371,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4376,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4378,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4379,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4380,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4381,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4387,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4388,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4389,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4390,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4394,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4395,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4396,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4397,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4401,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4403,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4404,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4408,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4409,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4412,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4417,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4426,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:4428,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4432,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4433,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:4436,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4438,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4441,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4442,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4444,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4447,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4448,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4450,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4456,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4458,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4459,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4459,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4460,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4463,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4464,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4465,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4465,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4467,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4470,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4471,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4472,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4472,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4474,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4474,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4475,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4475,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_attr.c:4481,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4484,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4485,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4486,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4488,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_attr.c:4489,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_attr.c:4491,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4494,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4495,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4498,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_attr.c:4502,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_attr.c:4504,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4505,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4507,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_attr.c:4511,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_attr.c:4513,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4518,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4519,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_attr.c:4520,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4521,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4524,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4530,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4534,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4535,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4537,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4540,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4541,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4543,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4554,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4563,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4568,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4570,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4572,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4576,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4578,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4585,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4590,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4598,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4604,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4607,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4608,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4609,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4610,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4612,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4613,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4614,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4628,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4630,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4631,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4632,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4633,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4634,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4635,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4636,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4637,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4638,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4640,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4641,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4644,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4645,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4648,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4651,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4652,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4653,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4654,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4655,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4656,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4658,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4660,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4661,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4662,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4663,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4664,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4665,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4666,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4667,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_attr.c:4688,1
    - Dst: aspath_delete_confed_seq
      Src: /src/frr/bgpd/bgp_attr.c:4689,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4691,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4694,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4695,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4696,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_attr.c:4697,1
    - Dst: aspath_put
      Src: /src/frr/bgpd/bgp_attr.c:4697,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_attr.c:4701,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4709,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4710,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4711,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4712,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:4713,1
    - Dst: bgp_packet_mpattr_tea
      Src: /src/frr/bgpd/bgp_attr.c:4720,1
    - Dst: bgp_packet_mpattr_tea
      Src: /src/frr/bgpd/bgp_attr.c:4724,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4729,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4730,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4731,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4732,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4733,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4734,1
    - Dst: bgp_attr_get_pmsi_tnl_type
      Src: /src/frr/bgpd/bgp_attr.c:4734,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4735,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:4737,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4742,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4743,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4744,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4745,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4746,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4750,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.c:4751,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4759,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4760,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4761,1
    - Dst: stream_put_bgp_aigp_tlv_metric
      Src: /src/frr/bgpd/bgp_attr.c:4762,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/bgp_attr.c:4766,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4769,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4772,1
    CyclomaticComplexity: 86
    EdgeCount: 86
    ICount: 279
    argCount: 15
    argNames:
    - bgp
    - peer
    - s
    - attr
    - vecarr
    - p
    - afi
    - safi
    - from
    - prd
    - label
    - num_labels
    - addpath_capable
    - addpath_tx_id
    - bpi
    argTypes:
    - struct bgp*
    - struct peer*
    - struct stream*
    - struct attr*
    - struct bpacket_attr_vec_arr*
    - struct prefix*
    - afi_t
    - safi_t
    - struct peer*
    - struct prefix_rd*
    - mpls_label_t*
    - uint32_t
    - bool
    - uint32_t
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4773
      start: 4217
    functionDepth: 6
    functionLinenumber: 4217
    functionLinenumberEnd: 4773
    functionName: bgp_packet_attribute
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - bgp_packet_mpattr_prefix
    - stream_put
    - lcom_length
    - aspath_delete_confed_seq
    - aspath_add_confed_seq
    - bgp_packet_mpattr_start
    - stream_put_ipv4
    - aspath_put
    - stream_putc
    - bgp_attr_get_lcommunity
    - bgp_attr_get_cluster
    - stream_putw_at
    - aspath_has_as4
    - bgp_append_local_as
    - stream_put_in_addr
    - BGP_NEXTHOP_AFI_FROM_NHLEN
    - aspath_dup
    - peer_cap_enhe
    - bgp_packet_mpattr_tea
    - bgp_attr_get_transit
    - bgp_attr_get_ecommunity
    - bgp_confederation_peers_check
    - bpacket_attr_vec_arr_set_vec
    - bgp_attr_get_pmsi_tnl_type
    - bgp_attr_get_community
    - aspath_free
    - CHECK_FLAG
    - aspath_add_seq
    - stream_putw
    - stream_get_endp
    - ATTR_FLAG_BIT
    - stream_put_bgp_aigp_tlv_metric
    - bgp_packet_mpattr_end
    - stream_putl
    linkageType: ''
    returnType: bgp_size_t
    signature: "bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,\n\t\t\t\tstruct
      stream *s, struct attr *attr,\n\t\t\t\tstruct bpacket_attr_vec_arr *vecarr,\n\t\t\t\tstruct
      prefix *p, afi_t afi, safi_t safi,\n\t\t\t\tstruct peer *from, struct prefix_rd
      *prd,\n\t\t\t\tmpls_label_t *label, uint32_t num_labels,\n\t\t\t\tbool addpath_capable,
      uint32_t addpath_tx_id,\n\t\t\t\tstruct bgp_path_info *bpi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4782,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4783,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4785,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4786,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_attr.c:4789,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4791,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - s
    - afi
    - safi
    argTypes:
    - struct stream*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4795
      start: 4775
    functionDepth: 2
    functionLinenumber: 4775
    functionLinenumberEnd: 4795
    functionName: bgp_packet_mpunreach_start
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - bgp_map_afi_safi_int2iana
    - stream_putw
    - stream_putc
    - stream_get_endp
    linkageType: ''
    returnType: size_t
    signature: size_t bgp_packet_mpunreach_start(struct stream *s, afi_t afi, safi_t
      safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_packet_mpattr_prefix
      Src: /src/frr/bgpd/bgp_attr.c:4811,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 10
    argNames:
    - s
    - p
    - afi
    - safi
    - prd
    - label
    - num_labels
    - addpath_capable
    - addpath_tx_id
    - attr
    argTypes:
    - struct stream*
    - struct prefix*
    - afi_t
    - safi_t
    - struct prefix_rd*
    - mpls_label_t*
    - uint32_t
    - bool
    - uint32_t
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4813
      start: 4797
    functionDepth: 4
    functionLinenumber: 4797
    functionLinenumberEnd: 4813
    functionName: bgp_packet_mpunreach_prefix
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - bgp_packet_mpattr_prefix
    linkageType: ''
    returnType: void
    signature: "void bgp_packet_mpunreach_prefix(struct stream *s, const struct prefix
      *p,\n\t\t\t\t afi_t afi, safi_t safi,\n\t\t\t\t const struct prefix_rd *prd,\n\t\t\t\t
      mpls_label_t *label, uint32_t num_labels,\n\t\t\t\t bool addpath_capable, uint32_t
      addpath_tx_id,\n\t\t\t\t struct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_packet_mpattr_end
      Src: /src/frr/bgpd/bgp_attr.c:4817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - attrlen_pnt
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4818
      start: 4815
    functionDepth: 2
    functionLinenumber: 4815
    functionLinenumberEnd: 4818
    functionName: bgp_packet_mpunreach_end
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - bgp_packet_mpattr_end
    linkageType: ''
    returnType: void
    signature: void bgp_packet_mpunreach_end(struct stream *s, size_t attrlen_pnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_init
      Src: /src/frr/bgpd/bgp_attr.c:4823,1
    - Dst: attrhash_init
      Src: /src/frr/bgpd/bgp_attr.c:4824,1
    - Dst: community_init
      Src: /src/frr/bgpd/bgp_attr.c:4825,1
    - Dst: ecommunity_init
      Src: /src/frr/bgpd/bgp_attr.c:4826,1
    - Dst: lcommunity_init
      Src: /src/frr/bgpd/bgp_attr.c:4827,1
    - Dst: cluster_init
      Src: /src/frr/bgpd/bgp_attr.c:4828,1
    - Dst: transit_init
      Src: /src/frr/bgpd/bgp_attr.c:4829,1
    - Dst: encap_init
      Src: /src/frr/bgpd/bgp_attr.c:4830,1
    - Dst: srv6_init
      Src: /src/frr/bgpd/bgp_attr.c:4831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4832
      start: 4821
    functionDepth: 2
    functionLinenumber: 4821
    functionLinenumberEnd: 4832
    functionName: bgp_attr_init
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 6
    functionsReached:
    - aspath_init
    - encap_init
    - cluster_init
    - transit_init
    - lcommunity_init
    - srv6_init
    - community_init
    - ecommunity_init
    - attrhash_init
    linkageType: ''
    returnType: void
    signature: void bgp_attr_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aspath_finish
      Src: /src/frr/bgpd/bgp_attr.c:4836,1
    - Dst: attrhash_finish
      Src: /src/frr/bgpd/bgp_attr.c:4837,1
    - Dst: community_finish
      Src: /src/frr/bgpd/bgp_attr.c:4838,1
    - Dst: ecommunity_finish
      Src: /src/frr/bgpd/bgp_attr.c:4839,1
    - Dst: lcommunity_finish
      Src: /src/frr/bgpd/bgp_attr.c:4840,1
    - Dst: cluster_finish
      Src: /src/frr/bgpd/bgp_attr.c:4841,1
    - Dst: transit_finish
      Src: /src/frr/bgpd/bgp_attr.c:4842,1
    - Dst: encap_finish
      Src: /src/frr/bgpd/bgp_attr.c:4843,1
    - Dst: srv6_finish
      Src: /src/frr/bgpd/bgp_attr.c:4844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4845
      start: 4834
    functionDepth: 2
    functionLinenumber: 4834
    functionLinenumberEnd: 4845
    functionName: bgp_attr_finish
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 2
    functionsReached:
    - community_finish
    - transit_finish
    - encap_finish
    - attrhash_finish
    - ecommunity_finish
    - lcommunity_finish
    - srv6_finish
    - cluster_finish
    - aspath_finish
    linkageType: ''
    returnType: void
    signature: void bgp_attr_finish(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4860,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4863,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4866,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4867,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4868,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4869,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4873,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4874,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4875,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4876,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_attr.c:4878,1
    - Dst: aspath_put
      Src: /src/frr/bgpd/bgp_attr.c:4878,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4883,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4884,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4885,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:4886,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4890,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4891,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4892,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4893,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4894,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4898,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4899,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4900,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4901,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4902,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4906,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4907,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4908,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4909,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4913,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4914,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4915,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4916,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:4917,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_attr.c:4918,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4922,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_attr.c:4925,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4927,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4930,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4931,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4933,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4936,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4937,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4939,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4943,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4944,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4944,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4945,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4948,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4949,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4950,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4950,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4952,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4955,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4956,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4957,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4957,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4960,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4960,1
    - Dst: lcom_length
      Src: /src/frr/bgpd/bgp_attr.c:4961,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_attr.c:4961,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4970,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4971,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4972,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4975,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:4976,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4977,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4980,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4981,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_attr.c:4983,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:4987,1
    - Dst: stream_put_prefix_addpath
      Src: /src/frr/bgpd/bgp_attr.c:4990,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_attr.c:4994,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:4994,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:4998,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5000,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5003,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5004,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5005,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5006,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5007,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_attr.c:5008,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:5009,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:5014,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5015,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5016,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5017,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_attr.c:5018,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.c:5022,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5029,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5030,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_attr.c:5031,1
    - Dst: stream_put_bgp_aigp_tlv_metric
      Src: /src/frr/bgpd/bgp_attr.c:5032,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_attr.c:5036,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_attr.c:5037,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 109
    argCount: 3
    argNames:
    - s
    - bpi
    - prefix
    argTypes:
    - struct stream*
    - struct bgp_path_info*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5038
      start: 4848
    functionDepth: 3
    functionLinenumber: 4848
    functionLinenumberEnd: 5038
    functionName: bgp_dump_routes_attr
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_lcommunity
    - stream_put
    - stream_putc
    - lcom_length
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - ATTR_FLAG_BIT
    - stream_put_prefix_addpath
    - stream_put_bgp_aigp_tlv_metric
    - stream_put_ipv4
    - stream_putc_at
    - bgp_attr_get_community
    - aspath_put
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_dump_routes_attr(struct stream *s, struct bgp_path_info *bpi,\n\t\t\t
      \ const struct prefix *prefix)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_attr.c:5059,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_attr.c:5066,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:5068,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_attr.c:5078,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:5080,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_attr.c:5091,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:5093,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:5099,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_attr.c:5105,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_attr.c:5106,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 30
    argCount: 4
    argNames:
    - vty
    - peer
    - discard_attrs
    - set
    argTypes:
    - struct vty*
    - struct peer*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5108
      start: 5040
    functionDepth: 4
    functionLinenumber: 5040
    functionLinenumberEnd: 5108
    functionName: bgp_path_attribute_discard_vty
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - strtoul
    - vty_out
    - XFREE
    - peer_clear_soft
    - FOREACH_AFI_SAFI
    - lookup_msg
    - frrstr_split
    linkageType: ''
    returnType: void
    signature: "void bgp_path_attribute_discard_vty(struct vty *vty, struct peer *peer,\n\t\t\t\t
      \   const char *discard_attrs, bool set)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/bgpd/bgp_attr.c:5128,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_attr.c:5135,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:5137,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_attr.c:5147,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:5149,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_attr.c:5160,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:5162,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_attr.c:5168,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_attr.c:5175,1
    - Dst: peer_clear_soft
      Src: /src/frr/bgpd/bgp_attr.c:5176,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 30
    argCount: 4
    argNames:
    - vty
    - peer
    - withdraw_attrs
    - set
    argTypes:
    - struct vty*
    - struct peer*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5178
      start: 5110
    functionDepth: 4
    functionLinenumber: 5110
    functionLinenumberEnd: 5178
    functionName: bgp_path_attribute_withdraw_vty
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 0
    functionsReached:
    - strtoul
    - vty_out
    - XFREE
    - peer_clear_soft
    - FOREACH_AFI_SAFI
    - lookup_msg
    - frrstr_split
    linkageType: ''
    returnType: void
    signature: "void bgp_path_attribute_withdraw_vty(struct vty *vty, struct peer
      *peer,\n\t\t\t\t     const char *withdraw_attrs, bool set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_attr.c:5185,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_attr.c:5186,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_attr.c:5187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - peer
    - type
    argTypes:
    - struct peer*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5191
      start: 5180
    functionDepth: 1
    functionLinenumber: 5180
    functionLinenumberEnd: 5191
    functionName: bgp_attr_ignore
    functionSourceFile: /src/frr/bgpd/bgp_attr.c
    functionUses: 11
    functionsReached:
    - zlog_debug
    - lookup_msg
    - bgp_debug_update
    linkageType: ''
    returnType: enum bgp_attr_parse_ret
    signature: enum bgp_attr_parse_ret bgp_attr_ignore(struct peer *peer, uint8_t
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_mac.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 36
    functionName: bgp_mac_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_mac_hash_key_make(const void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mac.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: bgp_mac_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_mac_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_mac.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: bgp_mac_init
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 2
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void bgp_mac_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_mac.c:60,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mac.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: bgp_mac_hash_free
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_mac_hash_free(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_mac.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: bgp_mac_finish
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 3
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void bgp_mac_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mac.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: bgp_mac_hash_interface_string_del
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_mac_hash_interface_string_del(void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mac.c:82,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mac.c:83,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_mac.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: bgp_mac_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 0
    functionsReached:
    - list_new
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_mac_hash_alloc(void *p)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mac.c:103,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_mac.c:104,1
    - Dst: bgp_mac_find_interface_name
      Src: /src/frr/bgpd/bgp_mac.c:111,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_mac.c:117,1
    - Dst: bgp_process_mac_rescan_table
      Src: /src/frr/bgpd/bgp_mac.c:122,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mac.c:130,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mac.c:132,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mac.c:137,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mac.c:138,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mac.c:140,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mac.c:149,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mac.c:168,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mac.c:179,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mac.c:181,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_mac.c:182,1
    - Dst: bgp_debug_rdpfxpath2str
      Src: /src/frr/bgpd/bgp_mac.c:185,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mac.c:191,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mac.c:198,1
    - Dst: bgp_attr_get_evpn_overlay
      Src: /src/frr/bgpd/bgp_mac.c:198,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_mac.c:200,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 36
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 96
    functionDepth: 14
    functionLinenumber: 96
    functionLinenumberEnd: 206
    functionName: bgp_mac_find_ifp_internal
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_mac_find_interface_name
    - bgp_debug_update
    - bgp_debug_rdpfxpath2str
    - bgp_table_top
    - bgp_dest_get_prefix
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - CHECK_FLAG
    - memcmp
    - zlog_debug
    - bgp_process_mac_rescan_table
    - bgp_update
    - hash_iterate
    - memcpy
    - bgp_attr_get_evpn_overlay
    linkageType: ''
    returnType: void
    signature: void bgp_mac_find_ifp_internal(struct hash_bucket *bucket, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mac.c:217,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mac.c:219,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_mac.c:222,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_mac.c:225,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mac.c:226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mac.c:229,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgp_mac.c:234,1
    - Dst: bgp_process_mac_rescan_table
      Src: /src/frr/bgpd/bgp_mac.c:237,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - bgp
    - macaddr
    argTypes:
    - struct bgp*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 240
    functionName: bgp_mac_rescan_evpn_table
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 0
    functionsReached:
    - peer_established
    - bgp_debug_update
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - zlog_debug
    - bgp_process_mac_rescan_table
    - bgp_soft_reconfig_in
    linkageType: ''
    returnType: void
    signature: void bgp_mac_rescan_evpn_table(struct bgp *bgp, struct ethaddr *macaddr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mac.c:247,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_mac.c:250,1
    - Dst: bgp_mac_rescan_evpn_table
      Src: /src/frr/bgpd/bgp_mac.c:251,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_mac.c:261,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mac.c:261,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_mac.c:262,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_mac.c:267,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mac.c:268,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_mac.c:271,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_mac.c:274,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_mac.c:275,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mac.c:276,1
    - Dst: bgp_mac_rescan_all_evpn_tables
      Src: /src/frr/bgpd/bgp_mac.c:278,1
    - Dst: bgp_mac_add_mac_entry
      Src: /src/frr/bgpd/bgp_mac.c:282,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mac.c:289,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_mac.c:290,1
    - Dst: bgp_mac_find_interface_name
      Src: /src/frr/bgpd/bgp_mac.c:295,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_mac.c:296,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_mac.c:300,1
    - Dst: bgp_mac_remove_ifp_internal
      Src: /src/frr/bgpd/bgp_mac.c:302,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mac.c:310,1
    - Dst: bgp_mac_remove_ifp_internal
      Src: /src/frr/bgpd/bgp_mac.c:315,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_mac.c:318,1
    - Dst: bgp_mac_rescan_all_evpn_tables
      Src: /src/frr/bgpd/bgp_mac.c:321,1
    - Dst: bgp_mac_del_mac_entry
      Src: /src/frr/bgpd/bgp_mac.c:324,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mac.c:329,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_mac.c:330,1
    - Dst: bgp_mac_remove_ifp_internal
      Src: /src/frr/bgpd/bgp_mac.c:338,1
    - Dst: bgp_mac_exist
      Src: /src/frr/bgpd/bgp_mac.c:346,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mac.c:352,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mac.c:355,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_mac.c:356,1
    - Dst: bgp_mac_entry_exists
      Src: /src/frr/bgpd/bgp_mac.c:367,1
    - Dst: bgp_mac_exist
      Src: /src/frr/bgpd/bgp_mac.c:377,1
    - Dst: bgp_mac_show_mac_entry
      Src: /src/frr/bgpd/bgp_mac.c:380,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_mac.c:388,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_mac.c:389,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mac.c:391,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_mac.c:392,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_mac.c:394,1
    - Dst: bgp_mac_dump_table
      Src: /src/frr/bgpd/bgp_mac.c:397,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_mac.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - macaddr
    argTypes:
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 400
    functionName: bgp_mac_rescan_all_evpn_tables
    functionSourceFile: /src/frr/bgpd/bgp_mac.c
    functionUses: 1
    functionsReached:
    - list_delete
    - bgp_mac_rescan_all_evpn_tables
    - bgp_mac_add_mac_entry
    - listnode_add
    - memcmp
    - hash_lookup
    - bgp_mac_rescan_evpn_table
    - bgp_mac_find_interface_name
    - bgp_mac_dump_table
    - ALL_LIST_ELEMENTS_RO
    - bgp_mac_show_mac_entry
    - if
    - hash_iterate
    - for
    - hash_get
    - bgp_mac_entry_exists
    - bgp_mac_remove_ifp_internal
    - vty_out
    - list_delete_node
    - XFREE
    - hash_release
    - bgp_mac_exist
    - XSTRDUP
    - memcpy
    - prefix_mac2str
    - bgp_mac_del_mac_entry
    - strcmp
    linkageType: ''
    returnType: void
    signature: void bgp_mac_rescan_all_evpn_tables(struct ethaddr *macaddr)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 6
    argNames:
    - bgp
    - afi
    - safi
    - peertype
    - maxpaths
    - same_clusterlen
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - int
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 54
    functionName: bgp_maximum_paths_set
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bgp_maximum_paths_set(struct bgp *bgp, afi_t afi, safi_t safi,
      int peertype,\n\t\t\t  uint16_t maxpaths, bool same_clusterlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - bgp
    - afi
    - safi
    - peertype
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 80
    functionName: bgp_maximum_paths_unset
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bgp_maximum_paths_unset(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t
      \   int peertype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - ifp1
    - ifp2
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: bgp_interface_same
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_interface_same(struct interface *ifp1, struct interface *ifp2)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/bgp_mpath.c:115,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/bgp_mpath.c:121,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_mpath.c:127,1
    - Dst: bgp_interface_same
      Src: /src/frr/bgpd/bgp_mpath.c:141,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_mpath.c:146,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/bgp_mpath.c:159,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 40
    argCount: 2
    argNames:
    - bpi1
    - bpi2
    argTypes:
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 186
    functionName: bgp_path_info_nexthop_cmp
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 2
    functionsReached:
    - IPV4_ADDR_CMP
    - bgp_interface_same
    - IPV6_ADDR_CMP
    linkageType: ''
    returnType: int
    signature: "int bgp_path_info_nexthop_cmp(struct bgp_path_info *bpi1,\n\t\t\t
      \     struct bgp_path_info *bpi2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_nexthop_cmp
      Src: /src/frr/bgpd/bgp_mpath.c:208,1
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgp_mpath.c:218,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 223
    functionName: bgp_path_info_mpath_cmp
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - sockunion_cmp
    - bgp_path_info_nexthop_cmp
    linkageType: ''
    returnType: int
    signature: int bgp_path_info_mpath_cmp(void *val1, void *val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mpath.c:233,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mpath.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mp_list
    argTypes:
    - struct list*
    assertStmts:
    - condition: (mp_list)
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/frr/bgpd/bgp_mpath.c
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: bgp_mp_list_init
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 3
    functionsReached:
    - memset
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_mp_list_init(struct list *mp_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mpath.c:245,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_mpath.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mp_list
    argTypes:
    - struct list*
    assertStmts:
    - condition: (mp_list)
      pos:
        line_end: 244
        line_start: 244
        source_file: /src/frr/bgpd/bgp_mpath.c
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: bgp_mp_list_clear
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 3
    functionsReached:
    - list_delete_all_node
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_mp_list_clear(struct list *mp_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mpath.c:256,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_mpath.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - mp_list
    - mpinfo
    argTypes:
    - struct list*
    - struct bgp_path_info*
    assertStmts:
    - condition: (mp_list && mpinfo)
      pos:
        line_end: 255
        line_start: 255
        source_file: /src/frr/bgpd/bgp_mpath.c
    constantsTouched: []
    func_position:
      end: 258
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 258
    functionName: bgp_mp_list_add
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 3
    functionsReached:
    - listnode_add_sort
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_mp_list_add(struct list *mp_list, struct bgp_path_info *mpinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mpath.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: bgp_path_info_mpath_new
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_path_info_mpath
    signature: struct bgp_path_info_mpath *bgp_path_info_mpath_new(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mpath.c:284,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mpath.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - mpath
    argTypes:
    - struct bgp_path_info_mpath**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 7
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: bgp_path_info_mpath_free
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 1
    functionsReached:
    - bgp_attr_unintern
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_path_info_mpath_free(struct bgp_path_info_mpath **mpath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_new
      Src: /src/frr/bgpd/bgp_mpath.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 309
    functionName: bgp_path_info_mpath_get
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_mpath_new
    linkageType: ''
    returnType: struct bgp_path_info_mpath
    signature: 'struct bgp_path_info_mpath *

      bgp_path_info_mpath_get(struct bgp_path_info *path)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_get
      Src: /src/frr/bgpd/bgp_mpath.c:322,1
    - Dst: bgp_path_info_mpath_get
      Src: /src/frr/bgpd/bgp_mpath.c:323,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - prev_info
    - path
    argTypes:
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 334
    functionName: bgp_path_info_mpath_enqueue
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - bgp_path_info_mpath_get
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_mpath_enqueue(struct bgp_path_info *prev_info,\n\t\t\t\t\tstruct
      bgp_path_info *path)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 352
    functionName: bgp_path_info_mpath_dequeue
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_path_info_mpath_dequeue(struct bgp_path_info *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 364
    functionName: bgp_path_info_mpath_next
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_path_info
    signature: struct bgp_path_info *bgp_path_info_mpath_next(struct bgp_path_info
      *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_mpath.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 374
    functionName: bgp_path_info_mpath_first
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 2
    functionsReached:
    - bgp_path_info_mpath_next
    linkageType: ''
    returnType: struct bgp_path_info
    signature: struct bgp_path_info *bgp_path_info_mpath_first(struct bgp_path_info
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 386
    functionName: bgp_path_info_mpath_count
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_path_info_mpath_count(struct bgp_path_info *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_get
      Src: /src/frr/bgpd/bgp_mpath.c:399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - path
    - count
    argTypes:
    - struct bgp_path_info*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 403
    functionName: bgp_path_info_mpath_count_set
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_mpath_get
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_mpath_count_set(struct bgp_path_info *path,\n\t\t\t\t\t
      \ uint16_t count)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_get
      Src: /src/frr/bgpd/bgp_mpath.c:420,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:426,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:428,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:430,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:432,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - path
    - set
    - all_paths_lb
    - cum_bw
    argTypes:
    - struct bgp_path_info*
    - bool
    - bool
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 438
    functionName: bgp_path_info_mpath_lb_update
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    - bgp_path_info_mpath_get
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_mpath_lb_update(struct bgp_path_info *path, bool
      set,\n\t\t\t\t\t  bool all_paths_lb, uint64_t cum_bw)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 451
    functionName: bgp_path_info_mpath_attr
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct attr
    signature: struct attr *bgp_path_info_mpath_attr(struct bgp_path_info *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - bgp
    - path
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 474
    functionName: bgp_path_info_mpath_chkwtd
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_path_info_mpath_chkwtd(struct bgp *bgp, struct bgp_path_info
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 487
    functionName: bgp_path_info_mpath_cumbw
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bgp_path_info_mpath_cumbw(struct bgp_path_info *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_get
      Src: /src/frr/bgpd/bgp_mpath.c:500,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - path
    - attr
    argTypes:
    - struct bgp_path_info*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 504
    functionName: bgp_path_info_mpath_attr_set
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_mpath_get
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_mpath_attr_set(struct bgp_path_info *path,\n\t\t\t\t\t
      struct attr *attr)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/bgpd/bgp_mpath.c:534,1
    - Dst: bgp_debug_bestpath
      Src: /src/frr/bgpd/bgp_mpath.c:535,1
    - Dst: bgp_path_info_mpath_dequeue
      Src: /src/frr/bgpd/bgp_mpath.c:540,1
    - Dst: bgp_path_info_mpath_first
      Src: /src/frr/bgpd/bgp_mpath.c:547,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/bgpd/bgp_mpath.c:548,1
    - Dst: bgp_path_info_mpath_cumbw
      Src: /src/frr/bgpd/bgp_mpath.c:549,1
    - Dst: bgp_path_info_mpath_count_set
      Src: /src/frr/bgpd/bgp_mpath.c:550,1
    - Dst: bgp_path_info_mpath_lb_update
      Src: /src/frr/bgpd/bgp_mpath.c:551,1
    - Dst: bgp_path_info_mpath_dequeue
      Src: /src/frr/bgpd/bgp_mpath.c:552,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mpath.c:556,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_mpath.c:558,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_mpath.c:560,1
    - Dst: listnextnode
      Src: /src/frr/bgpd/bgp_mpath.c:586,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_mpath.c:588,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/bgp_mpath.c:589,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mpath.c:592,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_mpath.c:594,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/bgp_mpath.c:602,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_mpath.c:603,1
    - Dst: bgp_path_info_mpath_dequeue
      Src: /src/frr/bgpd/bgp_mpath.c:604,1
    - Dst: bgp_path_info_nexthop_cmp
      Src: /src/frr/bgpd/bgp_mpath.c:607,1
    - Dst: bgp_path_info_mpath_enqueue
      Src: /src/frr/bgpd/bgp_mpath.c:609,1
    - Dst: ecommunity_linkbw_present
      Src: /src/frr/bgpd/bgp_mpath.c:613,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:614,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_mpath.c:621,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mpath.c:624,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_mpath.c:626,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_mpath.c:632,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mpath.c:635,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_mpath.c:637,1
    - Dst: bgp_path_info_mpath_cmp
      Src: /src/frr/bgpd/bgp_mpath.c:650,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/bgp_mpath.c:651,1
    - Dst: bgp_path_info_mpath_dequeue
      Src: /src/frr/bgpd/bgp_mpath.c:660,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_mpath.c:663,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mpath.c:665,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_mpath.c:667,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/bgp_mpath.c:690,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_mpath.c:691,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mpath.c:692,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mpath.c:693,1
    - Dst: bgp_path_info_nexthop_cmp
      Src: /src/frr/bgpd/bgp_mpath.c:695,1
    - Dst: bgp_path_info_mpath_dequeue
      Src: /src/frr/bgpd/bgp_mpath.c:697,1
    - Dst: bgp_path_info_mpath_enqueue
      Src: /src/frr/bgpd/bgp_mpath.c:699,1
    - Dst: ecommunity_linkbw_present
      Src: /src/frr/bgpd/bgp_mpath.c:704,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:705,1
    - Dst: bgp_path_info_path_with_addpath_rx_str
      Src: /src/frr/bgpd/bgp_mpath.c:712,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mpath.c:715,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_mpath.c:717,1
    - Dst: bgp_path_info_mpath_count_set
      Src: /src/frr/bgpd/bgp_mpath.c:728,1
    - Dst: ecommunity_linkbw_present
      Src: /src/frr/bgpd/bgp_mpath.c:730,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:731,1
    - Dst: bgp_path_info_mpath_lb_update
      Src: /src/frr/bgpd/bgp_mpath.c:735,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mpath.c:739,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_mpath.c:741,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/bgpd/bgp_mpath.c:746,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:747,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:750,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 103
    argCount: 6
    argNames:
    - bgp
    - dest
    - new_best
    - old_best
    - mp_list
    - mpath_cfg
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct bgp_path_info*
    - struct list*
    - struct bgp_maxpaths_cfg*
    assertStmts:
    - condition: (new_mpath)
      pos:
        line_end: 691
        line_start: 691
        source_file: /src/frr/bgpd/bgp_mpath.c
    - condition: (prev_mpath)
      pos:
        line_end: 692
        line_start: 692
        source_file: /src/frr/bgpd/bgp_mpath.c
    constantsTouched: []
    func_position:
      end: 752
      start: 512
    functionDepth: 3
    functionLinenumber: 512
    functionLinenumberEnd: 752
    functionName: bgp_path_info_mpath_update
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 2
    functionsReached:
    - bgp_path_info_mpath_lb_update
    - ecommunity_linkbw_present
    - listhead
    - bgp_path_info_mpath_enqueue
    - bgp_debug_bestpath
    - bgp_path_info_mpath_first
    - bgp_path_info_mpath_cmp
    - bgp_path_info_mpath_next
    - bgp_path_info_mpath_count_set
    - zlog_debug
    - listgetdata
    - assert
    - listnextnode
    - bgp_path_info_path_with_addpath_rx_str
    - listcount
    - bgp_attr_get_ecommunity
    - bgp_path_info_mpath_count
    - bgp_dest_to_rnode
    - list_delete_node
    - bgp_path_info_nexthop_cmp
    - bgp_path_info_mpath_cumbw
    - bgp_path_info_mpath_dequeue
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_mpath_update(struct bgp *bgp, struct bgp_dest *dest,\n\t\t\t\tstruct
      bgp_path_info *new_best,\n\t\t\t\tstruct bgp_path_info *old_best,\n\t\t\t\tstruct
      list *mp_list,\n\t\t\t\tstruct bgp_maxpaths_cfg *mpath_cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_first
      Src: /src/frr/bgpd/bgp_mpath.c:767,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_mpath.c:769,1
    - Dst: bgp_path_info_mpath_dequeue
      Src: /src/frr/bgpd/bgp_mpath.c:770,1
    - Dst: bgp_path_info_mpath_count_set
      Src: /src/frr/bgpd/bgp_mpath.c:773,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:774,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:775,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mpath.c:776,1
    - Dst: bgp_path_info_mpath_first
      Src: /src/frr/bgpd/bgp_mpath.c:776,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - dmed_best
    argTypes:
    - struct bgp_path_info*
    assertStmts:
    - condition: (bgp_path_info_mpath_first(dmed_best) == NULL)
      pos:
        line_end: 775
        line_start: 775
        source_file: /src/frr/bgpd/bgp_mpath.c
    constantsTouched: []
    func_position:
      end: 777
      start: 760
    functionDepth: 3
    functionLinenumber: 760
    functionLinenumberEnd: 777
    functionName: bgp_mp_dmed_deselect
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_mpath_first
    - bgp_path_info_mpath_next
    - bgp_path_info_mpath_count_set
    - bgp_path_info_mpath_dequeue
    - UNSET_FLAG
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_mp_dmed_deselect(struct bgp_path_info *dmed_best)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_mpath_attr
      Src: /src/frr/bgpd/bgp_mpath.c:805,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mpath.c:806,1
    - Dst: bgp_path_info_mpath_attr_set
      Src: /src/frr/bgpd/bgp_mpath.c:807,1
    - Dst: bgp_path_info_mpath_count
      Src: /src/frr/bgpd/bgp_mpath.c:813,1
    - Dst: bgp_path_info_mpath_attr
      Src: /src/frr/bgpd/bgp_mpath.c:814,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mpath.c:815,1
    - Dst: bgp_path_info_mpath_attr_set
      Src: /src/frr/bgpd/bgp_mpath.c:816,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:817,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:825,1
    - Dst: aspath_dup
      Src: /src/frr/bgpd/bgp_mpath.c:829,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_mpath.c:832,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_mpath.c:833,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_mpath.c:833,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:835,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mpath.c:836,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:836,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_mpath.c:838,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_mpath.c:839,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_mpath.c:839,1
    - Dst: bgp_path_info_mpath_first
      Src: /src/frr/bgpd/bgp_mpath.c:842,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_mpath.c:843,1
    - Dst: aspath_aggregate
      Src: /src/frr/bgpd/bgp_mpath.c:845,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_mpath.c:846,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_mpath.c:852,1
    - Dst: community_merge
      Src: /src/frr/bgpd/bgp_mpath.c:854,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_mpath.c:856,1
    - Dst: community_uniq_sort
      Src: /src/frr/bgpd/bgp_mpath.c:859,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_mpath.c:860,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_mpath.c:862,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_mpath.c:863,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:867,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_mpath.c:869,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:870,1
    - Dst: ecommunity_uniq_sort
      Src: /src/frr/bgpd/bgp_mpath.c:872,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_mpath.c:873,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mpath.c:875,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:876,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_mpath.c:879,1
    - Dst: lcommunity_merge
      Src: /src/frr/bgpd/bgp_mpath.c:881,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_mpath.c:882,1
    - Dst: lcommunity_uniq_sort
      Src: /src/frr/bgpd/bgp_mpath.c:884,1
    - Dst: lcommunity_free
      Src: /src/frr/bgpd/bgp_mpath.c:885,1
    - Dst: lcommunity_dup
      Src: /src/frr/bgpd/bgp_mpath.c:887,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_mpath.c:888,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_mpath.c:896,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_mpath.c:898,1
    - Dst: bgp_attr_set_lcommunity
      Src: /src/frr/bgpd/bgp_mpath.c:900,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mpath.c:904,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_mpath.c:909,1
    - Dst: bgp_path_info_mpath_attr
      Src: /src/frr/bgpd/bgp_mpath.c:911,1
    - Dst: bgp_path_info_mpath_attr
      Src: /src/frr/bgpd/bgp_mpath.c:912,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mpath.c:913,1
    - Dst: bgp_path_info_mpath_attr_set
      Src: /src/frr/bgpd/bgp_mpath.c:914,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mpath.c:915,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mpath.c:917,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 72
    argCount: 2
    argNames:
    - new_best
    - old_best
    argTypes:
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 791
    functionDepth: 7
    functionLinenumber: 791
    functionLinenumberEnd: 918
    functionName: bgp_path_info_mpath_aggregate_update
    functionSourceFile: /src/frr/bgpd/bgp_mpath.c
    functionUses: 1
    functionsReached:
    - bgp_attr_unintern
    - bgp_path_info_mpath_attr_set
    - bgp_attr_intern
    - bgp_attr_get_lcommunity
    - memset
    - bgp_path_info_mpath_first
    - bgp_attr_set_lcommunity
    - bgp_path_info_mpath_attr
    - lcommunity_free
    - bgp_path_info_mpath_next
    - lcommunity_uniq_sort
    - ecommunity_merge
    - community_free
    - aspath_dup
    - bgp_attr_get_ecommunity
    - community_uniq_sort
    - bgp_path_info_mpath_count
    - lcommunity_dup
    - bgp_attr_get_community
    - ecommunity_free
    - bgp_attr_set_community
    - aspath_free
    - ecommunity_uniq_sort
    - aspath_aggregate
    - CHECK_FLAG
    - SET_FLAG
    - community_dup
    - community_merge
    - bgp_attr_set_ecommunity
    - ecommunity_dup
    - lcommunity_merge
    linkageType: ''
    returnType: void
    signature: "void bgp_path_info_mpath_aggregate_update(struct bgp_path_info *new_best,\n\t\t\t\t\t
      \ struct bgp_path_info *old_best)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:77,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:80,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:83,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - s
    - type
    argTypes:
    - struct stream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 87
    functionName: bgp_packet_set_marker
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 4
    functionsReached:
    - stream_putw
    - stream_putc
    - stream_get_endp
    linkageType: ''
    returnType: int
    signature: int bgp_packet_set_marker(struct stream *s, uint8_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:101,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_packet.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 103
    functionName: bgp_packet_set_size
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 4
    functionsReached:
    - stream_get_endp
    - stream_putw_at
    linkageType: ''
    returnType: void
    signature: void bgp_packet_set_size(struct stream *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_packet.c:115,1
    - Dst: stream_fifo_count_safe
      Src: /src/frr/bgpd/bgp_packet.c:120,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:121,1
    - Dst: stream_fifo_push
      Src: /src/frr/bgpd/bgp_packet.c:123,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:125,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:127,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_packet.c:128,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:146,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_packet.c:150,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:152,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_packet.c:153,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:157,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - peer
    - s
    argTypes:
    - struct peer*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 160
    functionName: bgp_packet_add
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - stream_fifo_push
    - frr_with_mutex
    - flog_warn
    - CHECK_FLAG
    - stream_fifo_count_safe
    - monotime
    - flog_err
    - atomic_load_explicit
    linkageType: ''
    returnType: void
    signature: void bgp_packet_add(struct peer *peer, struct stream *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:172,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:173,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_packet.c:174,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:176,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:179,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:182,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:186,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_packet.c:189,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:192,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:193,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:194,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:195,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:196,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:197,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 202
    functionName: bgp_update_packet_eor
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 0
    functionsReached:
    - stream_new
    - bgp_packet_set_size
    - stream_putw
    - zlog_debug
    - bgp_map_afi_safi_int2iana
    - bgp_packet_set_marker
    - get_afi_safi_str
    - bgp_debug_neighbor_events
    - stream_putc
    linkageType: ''
    returnType: struct stream
    signature: "struct stream *bgp_update_packet_eor(struct peer *peer, afi_t afi,\n\t\t\t\t\t
      \   safi_t safi)"
  - BBCount: 263
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:211,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:212,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_packet.c:226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:227,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:229,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:231,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:234,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:235,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:242,1
    - Dst: bgp_update_delay_end
      Src: /src/frr/bgpd/bgp_packet.c:246,1
    - Dst: bgp_update_restarted_peers
      Src: /src/frr/bgpd/bgp_packet.c:254,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_packet.c:256,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:261,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:262,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:264,1
    - Dst: bgp_check_update_delay
      Src: /src/frr/bgpd/bgp_packet.c:267,1
    - Dst: bgp_update_implicit_eors
      Src: /src/frr/bgpd/bgp_packet.c:277,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_packet.c:279,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:284,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:285,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:287,1
    - Dst: bgp_check_update_delay
      Src: /src/frr/bgpd/bgp_packet.c:290,1
    - Dst: bgp_update_explicit_eors
      Src: /src/frr/bgpd/bgp_packet.c:298,1
    - Dst: safi_t
      Src: /src/frr/bgpd/bgp_packet.c:301,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_packet.c:303,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:308,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:309,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_packet.c:311,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:313,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:315,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:316,1
    - Dst: bgp_check_update_delay
      Src: /src/frr/bgpd/bgp_packet.c:325,1
    - Dst: bgp_nlri_parse
      Src: /src/frr/bgpd/bgp_packet.c:334,1
    - Dst: bgp_nlri_parse_ip
      Src: /src/frr/bgpd/bgp_packet.c:340,1
    - Dst: bgp_nlri_parse_label
      Src: /src/frr/bgpd/bgp_packet.c:343,1
    - Dst: bgp_nlri_parse_vpn
      Src: /src/frr/bgpd/bgp_packet.c:346,1
    - Dst: bgp_nlri_parse_evpn
      Src: /src/frr/bgpd/bgp_packet.c:349,1
    - Dst: bgp_nlri_parse_flowspec
      Src: /src/frr/bgpd/bgp_packet.c:351,1
    - Dst: bgp_process_pending_refresh
      Src: /src/frr/bgpd/bgp_packet.c:361,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:364,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:366,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_packet.c:368,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:370,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:371,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:373,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:373,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:375,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:376,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_packet.c:377,1
    - Dst: bgp_write_proceed_actions
      Src: /src/frr/bgpd/bgp_packet.c:387,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_packet.c:407,1
    - Dst: bpacket_queue_is_full
      Src: /src/frr/bgpd/bgp_packet.c:415,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_packet.c:415,1
    - Dst: SUBGRP_PKTQ
      Src: /src/frr/bgpd/bgp_packet.c:416,1
    - Dst: subgroup_packets_to_build
      Src: /src/frr/bgpd/bgp_packet.c:417,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_packet.c:418,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:427,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:430,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_packet.c:433,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:448,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_packet.c:458,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:466,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_packet.c:470,1
    - Dst: bgp_write_proceed_actions
      Src: /src/frr/bgpd/bgp_packet.c:482,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:492,1
    - Dst: subgroup_withdraw_packet
      Src: /src/frr/bgpd/bgp_packet.c:505,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:506,1
    - Dst: subgroup_update_packet
      Src: /src/frr/bgpd/bgp_packet.c:508,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:508,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:534,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_packet.c:537,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:542,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:545,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:550,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:552,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:555,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:556,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:560,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:565,1
    - Dst: BGP_SEND_EOR
      Src: /src/frr/bgpd/bgp_packet.c:571,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:573,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:584,1
    - Dst: BGP_UPDATE_EOR_PKT
      Src: /src/frr/bgpd/bgp_packet.c:586,1
    - Dst: bgp_process_pending_refresh
      Src: /src/frr/bgpd/bgp_packet.c:589,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:599,1
    - Dst: bpacket_reformat_for_peer
      Src: /src/frr/bgpd/bgp_packet.c:604,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:605,1
    - Dst: bpacket_queue_advance_peer
      Src: /src/frr/bgpd/bgp_packet.c:606,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:612,1
    - Dst: bgp_write_proceed_actions
      Src: /src/frr/bgpd/bgp_packet.c:614,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:624,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:627,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:630,1
    - Dst: bgp_debug_keepalive
      Src: /src/frr/bgpd/bgp_packet.c:635,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:636,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:639,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:654,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:665,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:668,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:671,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:672,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:674,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_packet.c:675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:678,1
    - Dst: bgp_open_capability
      Src: /src/frr/bgpd/bgp_packet.c:679,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:681,1
    - Dst: STREAM_SIZE
      Src: /src/frr/bgpd/bgp_packet.c:681,1
    - Dst: stream_copy
      Src: /src/frr/bgpd/bgp_packet.c:683,1
    - Dst: bgp_open_capability
      Src: /src/frr/bgpd/bgp_packet.c:684,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:686,1
    - Dst: bgp_open_capability
      Src: /src/frr/bgpd/bgp_packet.c:687,1
    - Dst: stream_copy
      Src: /src/frr/bgpd/bgp_packet.c:689,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:690,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:695,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:697,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:698,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_packet.c:705,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:705,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:708,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:710,1
    - Dst: stream_fifo_pop
      Src: /src/frr/bgpd/bgp_packet.c:733,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:738,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:738,1
    - Dst: write
      Src: /src/frr/bgpd/bgp_packet.c:744,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_packet.c:744,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:744,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:751,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_packet.c:752,1
    - Dst: setsockopt
      Src: /src/frr/bgpd/bgp_packet.c:758,1
    - Dst: stream_set_getp
      Src: /src/frr/bgpd/bgp_packet.c:762,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:763,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:765,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:768,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_packet.c:781,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:783,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_packet.c:793,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:801,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:817,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:818,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:826,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:827,1
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_packet.c:839,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:857,1
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_packet.c:879,1
    - Dst: bgp_notify_send_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:913,1
    - Dst: frr_mutex_lock_autounlock
      Src: /src/frr/bgpd/bgp_packet.c:916,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:920,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:923,1
    - Dst: bgp_notify_encapsulate_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:927,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:933,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:934,1
    - Dst: stream_write
      Src: /src/frr/bgpd/bgp_packet.c:935,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:937,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:939,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:940,1
    - Dst: stream_write
      Src: /src/frr/bgpd/bgp_packet.c:942,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:946,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_packet.c:949,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:960,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:961,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:963,1
    - Dst: stream_dup
      Src: /src/frr/bgpd/bgp_packet.c:964,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:985,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:989,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_packet.c:992,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:997,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_packet.c:999,1
    - Dst: bgp_notify_print
      Src: /src/frr/bgpd/bgp_packet.c:1003,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:1007,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_packet.c:1009,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1011,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:1014,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1024,1
    - Dst: stream_fifo_push
      Src: /src/frr/bgpd/bgp_packet.c:1034,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgp_packet.c:1036,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_packet.c:1037,1
    - Dst: bgp_write_notify
      Src: /src/frr/bgpd/bgp_packet.c:1041,1
    - Dst: bgp_notify_send_internal
      Src: /src/frr/bgpd/bgp_packet.c:1057,1
    - Dst: bgp_notify_send_internal
      Src: /src/frr/bgpd/bgp_packet.c:1066,1
    - Dst: bgp_notify_send_internal
      Src: /src/frr/bgpd/bgp_packet.c:1077,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_packet.c:1106,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:1108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1111,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:1112,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:1114,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:1117,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1119,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1121,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1122,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1130,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1131,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:1132,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:1133,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1136,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1138,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1139,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1140,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1147,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1148,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1150,1
    - Dst: prefix_bgp_orf_entry
      Src: /src/frr/bgpd/bgp_packet.c:1152,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1157,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1158,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1165,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1166,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:1170,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_packet.c:1171,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:1175,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1177,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1179,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1181,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1182,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:1186,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:1188,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_packet.c:1208,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:1210,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:1213,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1217,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1218,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1219,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:1220,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1221,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1222,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1224,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1225,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1230,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1230,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:1234,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:1237,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:1239,1
    - Dst: doppelganger::doppelganger
      Src: /src/frr/bgpd/bgp_packet.c:1257,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:1266,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1286,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1286,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1287,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1287,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1289,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1299,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1308,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1308,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1321,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1322,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:1386,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1387,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1387,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1388,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1389,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1390,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1391,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1391,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_packet.c:1392,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:1396,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1400,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_packet.c:1403,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1404,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1408,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:1413,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_packet.c:1415,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1416,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1420,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1424,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1425,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1431,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1432,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1435,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_packet.c:1443,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1444,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1447,1
    - Dst: peek_for_as4_capability
      Src: /src/frr/bgpd/bgp_packet.c:1457,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_packet.c:1460,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1461,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1465,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1466,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1469,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1477,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1479,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1490,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1494,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1500,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1501,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1504,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1505,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1515,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1518,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1522,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1538,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1538,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1539,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1540,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1542,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_packet.c:1550,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1552,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1553,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1557,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1565,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1566,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1569,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1575,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1576,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1579,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1587,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1588,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1591,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1598,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1599,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1601,1
    - Dst: bgp_collision_detect
      Src: /src/frr/bgpd/bgp_packet.c:1611,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_packet.c:1617,1
    - Dst: flog_err_sys
      Src: /src/frr/bgpd/bgp_packet.c:1618,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1636,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1646,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1672,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:1686,1
    - Dst: bgp_open_option_parse
      Src: /src/frr/bgpd/bgp_packet.c:1690,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1693,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1694,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1704,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1734,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_packet.c:1744,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1746,1
    - Dst: sockopt_tcp_rtt
      Src: /src/frr/bgpd/bgp_packet.c:1752,1
    - Dst: bgp_debug_keepalive
      Src: /src/frr/bgpd/bgp_packet.c:1767,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1768,1
    - Dst: bgp_update_implicit_eors
      Src: /src/frr/bgpd/bgp_packet.c:1770,1
    - Dst: sockopt_tcp_rtt
      Src: /src/frr/bgpd/bgp_packet.c:1772,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1777,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_packet.c:1786,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1792,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1793,1
    - Dst: peer_tx_shutdown_message_set
      Src: /src/frr/bgpd/bgp_packet.c:1794,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgp_packet.c:1795,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:1809,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:1818,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1820,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1821,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgp_packet.c:1825,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:1858,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1859,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_packet.c:1862,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1863,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_packet.c:1864,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:1869,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:1872,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:1873,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1877,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1883,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1884,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1887,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1893,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1896,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1897,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1900,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1909,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:1911,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1915,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1916,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1920,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1926,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1929,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1930,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1934,1
    - Dst: bgp_attr_parse
      Src: /src/frr/bgpd/bgp_packet.c:1954,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:1958,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1965,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1966,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_packet.c:1967,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1973,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_packet.c:1978,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1979,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1986,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1992,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:1994,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1996,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_packet.c:1996,1
    - Dst: bgp_attr_nexthop_valid
      Src: /src/frr/bgpd/bgp_packet.c:2001,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:2002,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:2008,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2009,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2020,1
    - Dst: bgp_nlri_parse
      Src: /src/frr/bgpd/bgp_packet.c:2033,1
    - Dst: bgp_nlri_parse
      Src: /src/frr/bgpd/bgp_packet.c:2038,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2047,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2049,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2050,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:2055,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_packet.c:2072,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_packet.c:2073,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_packet.c:2083,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_packet.c:2093,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2096,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2098,1
    - Dst: bgp_update_explicit_eors
      Src: /src/frr/bgpd/bgp_packet.c:2100,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2111,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2112,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:2119,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2121,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_packet.c:2123,1
    - Dst: bgp_best_path_select_defer
      Src: /src/frr/bgpd/bgp_packet.c:2127,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:2134,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2136,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_packet.c:2138,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:2145,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:2147,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2169,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2174,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2175,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:2180,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2181,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2181,1
    - Dst: bgp_notify_received_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:2185,1
    - Dst: bgp_notify_decapsulate_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:2187,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:2200,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2201,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:2211,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:2215,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2216,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_packet.c:2218,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:2223,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2224,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_packet.c:2226,1
    - Dst: bgp_notify_print
      Src: /src/frr/bgpd/bgp_packet.c:2231,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2233,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2237,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2238,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2244,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2250,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2260,1
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_packet.c:2265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2266,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2267,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgp_packet.c:2269,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_packet.c:2270,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2299,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2300,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2303,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2309,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2310,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_packet.c:2314,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2315,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_packet.c:2316,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:2323,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2324,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2325,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_packet.c:2328,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2329,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2331,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2332,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_packet.c:2351,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2354,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_packet.c:2364,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2370,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2372,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2377,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2378,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2380,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2381,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:2382,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2385,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2389,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2390,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2398,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2399,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:2405,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2415,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2416,1
    - Dst: prefix_bgp_orf_remove_all
      Src: /src/frr/bgpd/bgp_packet.c:2419,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:2434,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2440,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:2443,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_packet.c:2459,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_packet.c:2462,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_packet.c:2464,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_packet.c:2466,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2475,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2479,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2482,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_packet.c:2492,1
    - Dst: prefix_bgp_orf_set
      Src: /src/frr/bgpd/bgp_packet.c:2503,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2513,1
    - Dst: prefix_bgp_orf_remove_all
      Src: /src/frr/bgpd/bgp_packet.c:2516,1
    - Dst: prefix_bgp_orf_lookup
      Src: /src/frr/bgpd/bgp_packet.c:2523,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:2525,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2527,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2537,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2539,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_packet.c:2542,1
    - Dst: PAF_UPDGRP
      Src: /src/frr/bgpd/bgp_packet.c:2545,1
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_packet.c:2546,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2561,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2563,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2575,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2577,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2578,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2580,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2580,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2585,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2586,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2588,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2588,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2592,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2593,1
    - Dst: peer_active_nego
      Src: /src/frr/bgpd/bgp_packet.c:2602,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2603,1
    - Dst: bgp_set_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:2605,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2608,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_packet.c:2609,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2614,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2615,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2617,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2617,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_packet.c:2621,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2623,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2623,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_packet.c:2627,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2629,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2630,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2633,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2634,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2636,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2636,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:2639,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2641,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2642,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2644,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2644,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2649,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2655,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2657,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2658,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2660,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2661,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2663,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_packet.c:2668,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2671,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2672,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2674,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2674,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2679,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2681,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_packet.c:2687,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2718,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2719,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2729,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2731,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2736,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2737,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2742,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2751,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2752,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2758,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_packet.c:2763,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2767,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_packet.c:2772,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2774,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2775,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2778,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2779,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2784,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2785,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2791,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2792,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_packet.c:2798,1
    - Dst: peer_active_nego
      Src: /src/frr/bgpd/bgp_packet.c:2805,1
    - Dst: bgp_clear_route
      Src: /src/frr/bgpd/bgp_packet.c:2806,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_packet.c:2811,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2836,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2838,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2839,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2842,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2843,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2846,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2852,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2853,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_packet.c:2857,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2858,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_packet.c:2859,1
    - Dst: bgp_capability_msg_parse
      Src: /src/frr/bgpd/bgp_packet.c:2864,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:2889,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2890,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_packet.c:2906,1
    - Dst: stream_fifo_pop
      Src: /src/frr/bgpd/bgp_packet.c:2907,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:2914,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2915,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2915,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:2918,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2919,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_packet.c:2921,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2930,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2931,1
    - Dst: bgp_open_receive
      Src: /src/frr/bgpd/bgp_packet.c:2933,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2935,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2941,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2942,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:2944,1
    - Dst: bgp_update_receive
      Src: /src/frr/bgpd/bgp_packet.c:2945,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2947,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2953,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2954,1
    - Dst: bgp_notify_receive
      Src: /src/frr/bgpd/bgp_packet.c:2956,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2958,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2964,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:2965,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2966,1
    - Dst: bgp_keepalive_receive
      Src: /src/frr/bgpd/bgp_packet.c:2968,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2970,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2977,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2978,1
    - Dst: bgp_route_refresh_receive
      Src: /src/frr/bgpd/bgp_packet.c:2980,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2982,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2988,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2989,1
    - Dst: bgp_capability_receive
      Src: /src/frr/bgpd/bgp_packet.c:2991,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2993,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:3008,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:3012,1
    - Dst: bgp_event_update
      Src: /src/frr/bgpd/bgp_packet.c:3021,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_packet.c:3036,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_packet.c:3039,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_packet.c:3053,1
    - Dst: bgp_write_proceed_actions
      Src: /src/frr/bgpd/bgp_packet.c:3054,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:3067,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_packet.c:3068,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_packet.c:3075,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:3075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3076,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3077,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3079,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3081,1
    - Dst: bgp_event_update
      Src: /src/frr/bgpd/bgp_packet.c:3086,1
    CyclomaticComplexity: 359
    EdgeCount: 359
    ICount: 1097
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts:
    - condition: (!"Message of invalid type received during input processing")
      pos:
        line_end: 3007
        line_start: 3007
        source_file: /src/frr/bgpd/bgp_packet.c
    - condition: (type == BGP_MSG_NOTIFY)
      pos:
        line_end: 764
        line_start: 764
        source_file: /src/frr/bgpd/bgp_packet.c
    - condition: (packetsize <= peer->max_packet_size)
      pos:
        line_end: 960
        line_start: 960
        source_file: /src/frr/bgpd/bgp_packet.c
    - condition: (stream_get_endp(s) >= BGP_HEADER_SIZE)
      pos:
        line_end: 737
        line_start: 737
        source_file: /src/frr/bgpd/bgp_packet.c
    constantsTouched: []
    func_position:
      end: 3087
      start: 206
    functionDepth: 16
    functionLinenumber: 206
    functionLinenumberEnd: 3087
    functionName: bgp_check_update_delay
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 3
    functionsReached:
    - bgp_debug_keepalive
    - frr_mutex_lock_autounlock
    - bgp_route_refresh_receive
    - SUBGRP_INST
    - afi2str
    - atomic_fetch_add_explicit
    - peer_flag_set
    - flog_err
    - ntohs
    - bgp_notify_print
    - BGP_EVENT_ADD
    - strlcat
    - stream_set_getp
    - stream_copy
    - flog_warn
    - snprintf
    - XCALLOC
    - memset
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - frr_with_mutex
    - bgp_capability_receive
    - bgp_set_stale_route
    - peer_active_nego
    - if
    - stream_put_in_addr
    - bgp_event_update
    - UPDGRP_PEER
    - bgp_nlri_parse_label
    - STREAM_READABLE
    - bgp_notify_send_hard_reset
    - bgp_route_refresh_send
    - EVENT_OFF
    - PAF_UPDGRP
    - bgp_notify_send_internal
    - bgp_nlri_parse_evpn
    - prefix_bgp_orf_set
    - memcpy
    - STREAM_SIZE
    - stream_fifo_clean
    - stream_fifo_push
    - subgroup_packets_to_build
    - XMALLOC
    - stream_putw
    - snprintfrr
    - EVENT_VAL
    - ALL_LIST_ELEMENTS
    - bpacket_queue_advance_peer
    - doppelganger::doppelganger
    - htons
    - lookup_msg
    - stream_putc
    - bgp_write_notify
    - PSIZE
    - bgp_peer_gr_flags_update
    - bgp_update_delay_active
    - stream_putw_at
    - inet_ntop
    - atomic_load_explicit
    - bgp_check_update_delay
    - prefix_blen
    - bgp_write_proceed_actions
    - safi_t
    - bgp_notify_send
    - BGP_PEER_RESTARTING_MODE
    - write
    - bgp_notify_send_with_data
    - stream_free
    - bgp_getsockname
    - monotime
    - bgp_notify_decapsulate_hard_reset
    - event_add_timer
    - bgp_nlri_parse_vpn
    - stream_pnt
    - bgp_dump_attr
    - bgp_update_explicit_eors
    - STREAM_DATA
    - stream_getw
    - bgp_notify_receive
    - peer_tx_shutdown_message_set
    - bgp_nlri_parse_ip
    - bgp_timer_set
    - BGP_SEND_EOR
    - bgp_open_option_parse
    - bgp_best_path_select_defer
    - event_add_event
    - peer_established
    - safi2str
    - bgp_fsm_error_subcode
    - bgp_nlri_parse
    - peer_af_find
    - bgp_open_receive
    - frrtrace
    - bgp_capability_msg_parse
    - BGP_DEBUG
    - stream_getc
    - bgp_clear_route
    - prefix_bgp_orf_lookup
    - stream_get_ipv4
    - zlog_debug
    - get_afi_safi_str
    - vrf_lookup_by_id
    - bgp_clear_stale_route
    - bgp_update_restarted_peers
    - bgp_notify_received_hard_reset
    - assert
    - zlog_info
    - strlcpy
    - afi2family
    - zlog_err
    - subgroup_withdraw_packet
    - bgp_map_afi_safi_int2iana
    - XFREE
    - stream_new
    - bpacket_reformat_for_peer
    - peek_for_as4_capability
    - bgp_update_receive
    - SET_FLAG
    - subgroup_update_packet
    - stream_fifo_pop
    - stream_dup
    - bgp_map_afi_safi_iana2int
    - bgp_notify_encapsulate_hard_reset
    - PAF_SUBGRP
    - sockopt_tcp_rtt
    - BGP_TIMER_ON
    - bgp_process_pending_refresh
    - zlog_warn
    - htonl
    - prefix_bgp_orf_entry
    - IN6_IS_ADDR_UNSPECIFIED
    - bgp_attr_unintern_sub
    - bgp_debug_update
    - hook_call
    - bgp_writes_on
    - stream_write
    - EVENT_ARG
    - flog_err_sys
    - setsockopt
    - ntohl
    - bgp_packet_add
    - bgp_keepalive_receive
    - bgp_attr_nexthop_valid
    - stream_forward_getp
    - prefix_bgp_orf_remove_all
    - bgp_nlri_parse_flowspec
    - iana_safi2str
    - bgp_update_implicit_eors
    - bgp_has_graceful_restart_notification
    - SUBGRP_PKTQ
    - bgp_open_capability
    - bgp_announce_route
    - UNSET_FLAG
    - bgp_packet_set_marker
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    - bgp_debug_neighbor_events
    - bgp_attr_parse
    - iana_afi2str
    - bgp_update_delay_end
    - bgp_collision_detect
    - BGP_UPDATE_EOR_PKT
    - bgp_packet_set_size
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - stream_get_endp
    - FOREACH_AFI_SAFI
    - bpacket_queue_is_full
    linkageType: ''
    returnType: void
    signature: void bgp_check_update_delay(struct bgp *bgp)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:448,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_packet.c:458,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:466,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_packet.c:470,1
    - Dst: bgp_write_proceed_actions
      Src: /src/frr/bgpd/bgp_packet.c:482,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:492,1
    - Dst: subgroup_withdraw_packet
      Src: /src/frr/bgpd/bgp_packet.c:505,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:506,1
    - Dst: subgroup_update_packet
      Src: /src/frr/bgpd/bgp_packet.c:508,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:508,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:534,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_packet.c:537,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:542,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:545,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:550,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:552,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:555,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:556,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:560,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_packet.c:562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:565,1
    - Dst: BGP_SEND_EOR
      Src: /src/frr/bgpd/bgp_packet.c:571,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:573,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:584,1
    - Dst: BGP_UPDATE_EOR_PKT
      Src: /src/frr/bgpd/bgp_packet.c:586,1
    - Dst: bgp_process_pending_refresh
      Src: /src/frr/bgpd/bgp_packet.c:589,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:599,1
    - Dst: bpacket_reformat_for_peer
      Src: /src/frr/bgpd/bgp_packet.c:604,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:605,1
    - Dst: bpacket_queue_advance_peer
      Src: /src/frr/bgpd/bgp_packet.c:606,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:612,1
    - Dst: bgp_write_proceed_actions
      Src: /src/frr/bgpd/bgp_packet.c:614,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 59
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 446
    functionDepth: 9
    functionLinenumber: 446
    functionLinenumberEnd: 615
    functionName: bgp_generate_updgrp_packets
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 0
    functionsReached:
    - peer_established
    - PAF_SUBGRP
    - safi2str
    - afi2str
    - bgp_process_pending_refresh
    - bgp_update_delay_active
    - bgp_writes_on
    - zlog_debug
    - atomic_load_explicit
    - bgp_write_proceed_actions
    - EVENT_ARG
    - bgp_packet_add
    - bgp_route_refresh_send
    - monotime
    - subgroup_withdraw_packet
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    - BGP_UPDATE_EOR_PKT
    - CHECK_FLAG
    - bpacket_reformat_for_peer
    - SET_FLAG
    - subgroup_update_packet
    - BGP_SEND_EOR
    - bpacket_queue_advance_peer
    linkageType: ''
    returnType: void
    signature: void bgp_generate_updgrp_packets(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:624,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:627,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:630,1
    - Dst: bgp_debug_keepalive
      Src: /src/frr/bgpd/bgp_packet.c:635,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:636,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:639,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 620
    functionDepth: 2
    functionLinenumber: 620
    functionLinenumberEnd: 642
    functionName: bgp_keepalive_send
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 3
    functionsReached:
    - bgp_packet_add
    - bgp_debug_keepalive
    - stream_new
    - bgp_packet_set_size
    - bgp_writes_on
    - zlog_debug
    - bgp_packet_set_marker
    linkageType: ''
    returnType: void
    signature: void bgp_keepalive_send(struct peer *peer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:654,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:665,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:668,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:671,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:672,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:674,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_packet.c:675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:678,1
    - Dst: bgp_open_capability
      Src: /src/frr/bgpd/bgp_packet.c:679,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:681,1
    - Dst: STREAM_SIZE
      Src: /src/frr/bgpd/bgp_packet.c:681,1
    - Dst: stream_copy
      Src: /src/frr/bgpd/bgp_packet.c:683,1
    - Dst: bgp_open_capability
      Src: /src/frr/bgpd/bgp_packet.c:684,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:686,1
    - Dst: bgp_open_capability
      Src: /src/frr/bgpd/bgp_packet.c:687,1
    - Dst: stream_copy
      Src: /src/frr/bgpd/bgp_packet.c:689,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:690,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:695,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:697,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:698,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_packet.c:705,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:705,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:708,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:710,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 648
    functionDepth: 3
    functionLinenumber: 648
    functionLinenumberEnd: 711
    functionName: bgp_open_send
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 4
    functionsReached:
    - stream_free
    - bgp_packet_add
    - stream_new
    - stream_copy
    - hook_call
    - bgp_packet_set_size
    - bgp_writes_on
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - bgp_open_capability
    - zlog_debug
    - bgp_packet_set_marker
    - bgp_debug_neighbor_events
    - stream_put_in_addr
    - stream_putc
    - STREAM_SIZE
    linkageType: ''
    returnType: void
    signature: void bgp_open_send(struct peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_pop
      Src: /src/frr/bgpd/bgp_packet.c:733,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:738,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:738,1
    - Dst: write
      Src: /src/frr/bgpd/bgp_packet.c:744,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_packet.c:744,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:744,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:751,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_packet.c:752,1
    - Dst: setsockopt
      Src: /src/frr/bgpd/bgp_packet.c:758,1
    - Dst: stream_set_getp
      Src: /src/frr/bgpd/bgp_packet.c:762,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:763,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:765,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:768,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_packet.c:781,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:783,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (stream_get_endp(s) >= BGP_HEADER_SIZE)
      pos:
        line_end: 737
        line_start: 737
        source_file: /src/frr/bgpd/bgp_packet.c
    - condition: (type == BGP_MSG_NOTIFY)
      pos:
        line_end: 764
        line_start: 764
        source_file: /src/frr/bgpd/bgp_packet.c
    constantsTouched: []
    func_position:
      end: 784
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 784
    functionName: bgp_write_notify
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - BGP_EVENT_ADD
    - stream_free
    - stream_set_getp
    - STREAM_DATA
    - stream_get_endp
    - atomic_fetch_add_explicit
    - stream_fifo_pop
    - stream_getc
    - setsockopt
    - write
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_write_notify(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_packet.c:793,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:801,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - code
    - subcode
    - data
    - datalen
    argTypes:
    - uint8_t
    - uint8_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 790
    functionDepth: 0
    functionLinenumber: 790
    functionLinenumberEnd: 804
    functionName: bgp_notify_encapsulate_hard_reset
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgp_notify_encapsulate_hard_reset(uint8_t code, uint8_t subcode,\n\t\t\t\t\t\t
      \ uint8_t *data, size_t datalen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:817,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - notify
    argTypes:
    - struct bgp_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 809
    functionDepth: 0
    functionLinenumber: 809
    functionLinenumberEnd: 821
    functionName: bgp_notify_decapsulate_hard_reset
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: struct bgp_notify
    signature: struct bgp_notify bgp_notify_decapsulate_hard_reset(struct bgp_notify
      *notify)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:826,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:827,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 828
    functionName: bgp_has_graceful_restart_notification
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool bgp_has_graceful_restart_notification(struct peer *peer)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_packet.c:839,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:857,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - peer
    - code
    - subcode
    argTypes:
    - struct peer*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 868
    functionName: bgp_notify_send_hard_reset
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - bgp_has_graceful_restart_notification
    linkageType: ''
    returnType: bool
    signature: "bool bgp_notify_send_hard_reset(struct peer *peer, uint8_t code,\n\t\t\t\tuint8_t
      subcode)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_packet.c:879,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - peer
    - code
    - subcode
    argTypes:
    - struct peer*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 873
    functionDepth: 2
    functionLinenumber: 873
    functionLinenumberEnd: 886
    functionName: bgp_notify_received_hard_reset
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - bgp_has_graceful_restart_notification
    linkageType: ''
    returnType: bool
    signature: "bool bgp_notify_received_hard_reset(struct peer *peer, uint8_t code,\n\t\t\t\t
      \   uint8_t subcode)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: bgp_notify_send_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:913,1
    - Dst: frr_mutex_lock_autounlock
      Src: /src/frr/bgpd/bgp_packet.c:916,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:920,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:923,1
    - Dst: bgp_notify_encapsulate_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:927,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:933,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:934,1
    - Dst: stream_write
      Src: /src/frr/bgpd/bgp_packet.c:935,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:937,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:939,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:940,1
    - Dst: stream_write
      Src: /src/frr/bgpd/bgp_packet.c:942,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:946,1
    - Dst: stream_fifo_clean
      Src: /src/frr/bgpd/bgp_packet.c:949,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:960,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:961,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:963,1
    - Dst: stream_dup
      Src: /src/frr/bgpd/bgp_packet.c:964,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:985,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:989,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_packet.c:992,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:997,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_packet.c:999,1
    - Dst: bgp_notify_print
      Src: /src/frr/bgpd/bgp_packet.c:1003,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:1007,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_packet.c:1009,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1011,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:1014,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1024,1
    - Dst: stream_fifo_push
      Src: /src/frr/bgpd/bgp_packet.c:1034,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgp_packet.c:1036,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_packet.c:1037,1
    - Dst: bgp_write_notify
      Src: /src/frr/bgpd/bgp_packet.c:1041,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 69
    argCount: 6
    argNames:
    - peer
    - code
    - sub_code
    - data
    - datalen
    - use_curr
    argTypes:
    - struct peer*
    - uint8_t
    - uint8_t
    - uint8_t*
    - size_t
    - bool
    assertStmts:
    - condition: (packetsize <= peer->max_packet_size)
      pos:
        line_end: 960
        line_start: 960
        source_file: /src/frr/bgpd/bgp_packet.c
    constantsTouched: []
    func_position:
      end: 1043
      start: 908
    functionDepth: 8
    functionLinenumber: 908
    functionLinenumberEnd: 1043
    functionName: bgp_notify_send_internal
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - bgp_notify_encapsulate_hard_reset
    - frr_mutex_lock_autounlock
    - bgp_notify_print
    - stream_putc
    - strlcat
    - bgp_write_notify
    - bgp_peer_gr_flags_update
    - snprintf
    - XCALLOC
    - stream_write
    - assert
    - stream_free
    - bgp_notify_send_hard_reset
    - strlcpy
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    - bgp_packet_set_marker
    - XFREE
    - memcpy
    - stream_fifo_clean
    - stream_new
    - stream_fifo_push
    - bgp_packet_set_size
    - CHECK_FLAG
    - XMALLOC
    - stream_get_endp
    - stream_dup
    linkageType: ''
    returnType: void
    signature: "void bgp_notify_send_internal(struct peer *peer, uint8_t code,\n\t\t\t\t
      \    uint8_t sub_code, uint8_t *data,\n\t\t\t\t     size_t datalen, bool use_curr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_notify_send_internal
      Src: /src/frr/bgpd/bgp_packet.c:1057,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - peer
    - code
    - sub_code
    argTypes:
    - struct peer*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1055
    functionDepth: 9
    functionLinenumber: 1055
    functionLinenumberEnd: 1058
    functionName: bgp_notify_send
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 38
    functionsReached:
    - bgp_notify_send_internal
    linkageType: ''
    returnType: void
    signature: void bgp_notify_send(struct peer *peer, uint8_t code, uint8_t sub_code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_notify_send_internal
      Src: /src/frr/bgpd/bgp_packet.c:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - peer
    - code
    - sub_code
    - data
    - datalen
    argTypes:
    - struct peer*
    - uint8_t
    - uint8_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1063
    functionDepth: 9
    functionLinenumber: 1063
    functionLinenumberEnd: 1067
    functionName: bgp_notify_send_with_data
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 11
    functionsReached:
    - bgp_notify_send_internal
    linkageType: ''
    returnType: void
    signature: "void bgp_notify_send_with_data(struct peer *peer, uint8_t code,\n\t\t\t
      \      uint8_t sub_code, uint8_t *data, size_t datalen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_notify_send_internal
      Src: /src/frr/bgpd/bgp_packet.c:1077,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - peer
    - code
    - sub_code
    - data
    - datalen
    argTypes:
    - struct peer*
    - uint8_t
    - uint8_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1073
    functionDepth: 9
    functionLinenumber: 1073
    functionLinenumberEnd: 1078
    functionName: bgp_notify_io_invalid
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - bgp_notify_send_internal
    linkageType: ''
    returnType: void
    signature: "void bgp_notify_io_invalid(struct peer *peer, uint8_t code, uint8_t
      sub_code,\n\t\t\t   uint8_t *data, size_t datalen)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_packet.c:1106,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:1108,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1111,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:1112,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:1114,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:1117,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1119,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1121,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1122,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1130,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1131,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:1132,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:1133,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1136,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1138,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1139,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1140,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1147,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1148,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1150,1
    - Dst: prefix_bgp_orf_entry
      Src: /src/frr/bgpd/bgp_packet.c:1152,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1157,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1158,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1165,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1166,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_packet.c:1170,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_packet.c:1171,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:1175,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1177,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1179,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1181,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1182,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:1186,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:1188,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 7
    argNames:
    - peer
    - afi
    - safi
    - orf_type
    - when_to_refresh
    - remove
    - subtype
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - uint8_t
    - uint8_t
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1090
    functionDepth: 2
    functionLinenumber: 1090
    functionLinenumberEnd: 1189
    functionName: bgp_route_refresh_send
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 12
    functionsReached:
    - bgp_packet_add
    - stream_new
    - bgp_packet_set_size
    - bgp_writes_on
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - bgp_map_afi_safi_int2iana
    - bgp_packet_set_marker
    - UNSET_FLAG
    - bgp_debug_neighbor_events
    - SET_FLAG
    - iana_afi2str
    - prefix_bgp_orf_entry
    - iana_safi2str
    - stream_putc
    linkageType: ''
    returnType: void
    signature: "void bgp_route_refresh_send(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      \   uint8_t orf_type, uint8_t when_to_refresh,\n\t\t\t    int remove, uint8_t
      subtype)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_packet.c:1208,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_packet.c:1210,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_packet.c:1213,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1217,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1218,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1219,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_packet.c:1220,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1221,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_packet.c:1222,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1224,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1225,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:1230,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:1230,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_packet.c:1234,1
    - Dst: bgp_packet_add
      Src: /src/frr/bgpd/bgp_packet.c:1237,1
    - Dst: bgp_writes_on
      Src: /src/frr/bgpd/bgp_packet.c:1239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - peer
    - afi
    - safi
    - capability_code
    - action
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1200
    functionDepth: 2
    functionLinenumber: 1200
    functionLinenumberEnd: 1240
    functionName: bgp_capability_send
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 2
    functionsReached:
    - bgp_packet_add
    - stream_new
    - bgp_packet_set_size
    - bgp_writes_on
    - stream_putw
    - zlog_debug
    - bgp_map_afi_safi_int2iana
    - bgp_packet_set_marker
    - bgp_debug_neighbor_events
    - iana_afi2str
    - iana_safi2str
    - stream_putc
    linkageType: ''
    returnType: void
    signature: "void bgp_capability_send(struct peer *peer, afi_t afi, safi_t safi,\n\t\t\t
      int capability_code, int action)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: doppelganger::doppelganger
      Src: /src/frr/bgpd/bgp_packet.c:1257,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:1266,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1286,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1286,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1287,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1287,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1289,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1299,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1308,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1308,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1321,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1322,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 2
    argNames:
    - new
    - remote_id
    argTypes:
    - struct peer*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1243
    functionDepth: 10
    functionLinenumber: 1243
    functionLinenumberEnd: 1331
    functionName: bgp_collision_detect
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - peer_established
    - CHECK_FLAG
    - flog_err
    - bgp_notify_send
    - ntohl
    - doppelganger::doppelganger
    linkageType: ''
    returnType: int
    signature: int bgp_collision_detect(struct peer *new, struct in_addr remote_id)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:1386,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1387,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1387,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1388,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1389,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1390,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1391,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1391,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_packet.c:1392,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:1396,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1400,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_packet.c:1403,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1404,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1408,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:1413,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_packet.c:1415,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1416,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1420,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1424,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1425,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1431,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1432,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1435,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_packet.c:1443,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1444,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1447,1
    - Dst: peek_for_as4_capability
      Src: /src/frr/bgpd/bgp_packet.c:1457,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_packet.c:1460,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:1461,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1465,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1466,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1469,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1477,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1479,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1490,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1494,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1500,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1501,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1504,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1505,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1515,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1518,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1522,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1538,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:1538,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1539,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1540,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1542,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_packet.c:1550,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1552,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1553,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1557,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1565,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1566,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1569,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1575,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1576,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1579,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1587,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1588,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1591,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1598,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1599,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1601,1
    - Dst: bgp_collision_detect
      Src: /src/frr/bgpd/bgp_packet.c:1611,1
    - Dst: bgp_getsockname
      Src: /src/frr/bgpd/bgp_packet.c:1617,1
    - Dst: flog_err_sys
      Src: /src/frr/bgpd/bgp_packet.c:1618,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1636,1
    - Dst: bgp_notify_send_with_data
      Src: /src/frr/bgpd/bgp_packet.c:1646,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1672,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:1686,1
    - Dst: bgp_open_option_parse
      Src: /src/frr/bgpd/bgp_packet.c:1690,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1693,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1694,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1704,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1734,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_packet.c:1744,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1746,1
    - Dst: sockopt_tcp_rtt
      Src: /src/frr/bgpd/bgp_packet.c:1752,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 172
    argCount: 2
    argNames:
    - peer
    - size
    argTypes:
    - struct peer*
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1369
    functionDepth: 11
    functionLinenumber: 1369
    functionLinenumberEnd: 1756
    functionName: bgp_open_receive
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - sockopt_tcp_rtt
    - htons
    - flog_err
    - zlog_warn
    - htonl
    - BGP_DEBUG
    - stream_getc
    - IN6_IS_ADDR_UNSPECIFIED
    - stream_get_ipv4
    - zlog_debug
    - bgp_notify_send
    - flog_err_sys
    - ntohl
    - bgp_notify_send_with_data
    - bgp_getsockname
    - STREAM_READABLE
    - bgp_debug_neighbor_events
    - XFREE
    - stream_pnt
    - memcpy
    - bgp_collision_detect
    - CHECK_FLAG
    - stream_getw
    - peek_for_as4_capability
    - SET_FLAG
    - bgp_open_option_parse
    linkageType: ''
    returnType: int
    signature: int bgp_open_receive(struct peer *peer, bgp_size_t size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_keepalive
      Src: /src/frr/bgpd/bgp_packet.c:1767,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1768,1
    - Dst: bgp_update_implicit_eors
      Src: /src/frr/bgpd/bgp_packet.c:1770,1
    - Dst: sockopt_tcp_rtt
      Src: /src/frr/bgpd/bgp_packet.c:1772,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1777,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_packet.c:1786,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1792,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1793,1
    - Dst: peer_tx_shutdown_message_set
      Src: /src/frr/bgpd/bgp_packet.c:1794,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgp_packet.c:1795,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - peer
    - size
    argTypes:
    - struct peer*
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1765
    functionDepth: 2
    functionLinenumber: 1765
    functionLinenumberEnd: 1803
    functionName: bgp_keepalive_receive
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - bgp_debug_keepalive
    - sockopt_tcp_rtt
    - CHECK_FLAG
    - snprintfrr
    - bgp_update_implicit_eors
    - peer_flag_set
    - zlog_debug
    - zlog_warn
    - SET_FLAG
    - peer_tx_shutdown_message_set
    linkageType: ''
    returnType: int
    signature: int bgp_keepalive_receive(struct peer *peer, bgp_size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:1809,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:1818,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:1820,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1821,1
    - Dst: bgp_timer_set
      Src: /src/frr/bgpd/bgp_packet.c:1825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1805
    functionDepth: 5
    functionLinenumber: 1805
    functionLinenumberEnd: 1826
    functionName: bgp_refresh_stalepath_timer_expire
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - bgp_timer_set
    - bgp_debug_neighbor_events
    - EVENT_ARG
    - bgp_clear_stale_route
    linkageType: ''
    returnType: void
    signature: void bgp_refresh_stalepath_timer_expire(struct event *thread)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:1858,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1859,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_packet.c:1862,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1863,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_packet.c:1864,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:1869,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:1872,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:1873,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1877,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1883,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1884,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1887,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1893,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1896,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1897,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1900,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1909,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:1911,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1915,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1916,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1920,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:1926,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1929,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_packet.c:1930,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:1934,1
    - Dst: bgp_attr_parse
      Src: /src/frr/bgpd/bgp_packet.c:1954,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:1958,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1965,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:1966,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_packet.c:1967,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:1973,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_packet.c:1978,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:1979,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1986,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:1992,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:1994,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:1996,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_packet.c:1996,1
    - Dst: bgp_attr_nexthop_valid
      Src: /src/frr/bgpd/bgp_packet.c:2001,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:2002,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_packet.c:2008,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2009,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2020,1
    - Dst: bgp_nlri_parse
      Src: /src/frr/bgpd/bgp_packet.c:2033,1
    - Dst: bgp_nlri_parse
      Src: /src/frr/bgpd/bgp_packet.c:2038,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2047,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2049,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2050,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:2055,1
    - Dst: BGP_PEER_GRACEFUL_RESTART_CAPABLE
      Src: /src/frr/bgpd/bgp_packet.c:2072,1
    - Dst: BGP_PEER_RESTARTING_MODE
      Src: /src/frr/bgpd/bgp_packet.c:2073,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_packet.c:2083,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_packet.c:2093,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2096,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2098,1
    - Dst: bgp_update_explicit_eors
      Src: /src/frr/bgpd/bgp_packet.c:2100,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2111,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2112,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:2119,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2121,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_packet.c:2123,1
    - Dst: bgp_best_path_select_defer
      Src: /src/frr/bgpd/bgp_packet.c:2127,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:2134,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2136,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_packet.c:2138,1
    - Dst: bgp_attr_unintern_sub
      Src: /src/frr/bgpd/bgp_packet.c:2145,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:2147,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 148
    argCount: 2
    argNames:
    - peer
    - size
    argTypes:
    - struct peer*
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 1837
    functionDepth: 10
    functionLinenumber: 1837
    functionLinenumberEnd: 2153
    functionName: bgp_update_receive
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - peer_established
    - bgp_fsm_error_subcode
    - bgp_nlri_parse
    - flog_err
    - BGP_DEBUG
    - lookup_msg
    - bgp_attr_unintern_sub
    - flog_warn
    - memset
    - bgp_debug_update
    - BGP_PEER_GRACEFUL_RESTART_CAPABLE
    - zlog_debug
    - get_afi_safi_str
    - bgp_notify_send
    - vrf_lookup_by_id
    - EVENT_ARG
    - BGP_PEER_RESTARTING_MODE
    - bgp_clear_stale_route
    - zlog_info
    - bgp_attr_nexthop_valid
    - stream_forward_getp
    - monotime
    - bgp_attr_parse
    - EVENT_OFF
    - bgp_debug_neighbor_events
    - XFREE
    - stream_pnt
    - bgp_dump_attr
    - CHECK_FLAG
    - bgp_update_explicit_eors
    - ATTR_FLAG_BIT
    - stream_getw
    - SET_FLAG
    - bgp_best_path_select_defer
    linkageType: ''
    returnType: int
    signature: int bgp_update_receive(struct peer *peer, bgp_size_t size)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2169,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2174,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2175,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:2180,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2181,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2181,1
    - Dst: bgp_notify_received_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:2185,1
    - Dst: bgp_notify_decapsulate_hard_reset
      Src: /src/frr/bgpd/bgp_packet.c:2187,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:2200,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2201,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_packet.c:2211,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:2215,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2216,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_packet.c:2218,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:2223,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2224,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_packet.c:2226,1
    - Dst: bgp_notify_print
      Src: /src/frr/bgpd/bgp_packet.c:2231,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2233,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2237,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2238,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_packet.c:2244,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2250,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2260,1
    - Dst: bgp_has_graceful_restart_notification
      Src: /src/frr/bgpd/bgp_packet.c:2265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2266,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2267,1
    - Dst: bgp_peer_gr_flags_update
      Src: /src/frr/bgpd/bgp_packet.c:2269,1
    - Dst: BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_packet.c:2270,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 63
    argCount: 2
    argNames:
    - peer
    - size
    argTypes:
    - struct peer*
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2274
      start: 2162
    functionDepth: 8
    functionLinenumber: 2162
    functionLinenumberEnd: 2274
    functionName: bgp_notify_receive
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - strlcat
    - bgp_peer_gr_flags_update
    - snprintf
    - strlcpy
    - CHECK_FLAG
    - XMALLOC
    - bgp_notify_decapsulate_hard_reset
    - bgp_has_graceful_restart_notification
    - BGP_GR_ROUTER_DETECT_AND_SEND_CAPABILITY_TO_ZEBRA
    - atomic_fetch_add_explicit
    - SET_FLAG
    - UNSET_FLAG
    - XFREE
    - bgp_notify_print
    - stream_getc
    - stream_pnt
    - bgp_notify_received_hard_reset
    - memcpy
    linkageType: ''
    returnType: int
    signature: int bgp_notify_receive(struct peer *peer, bgp_size_t size)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2299,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2300,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2303,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2309,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2310,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_packet.c:2314,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2315,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_packet.c:2316,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:2323,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2324,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2325,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_packet.c:2328,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2329,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2331,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2332,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_packet.c:2351,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2354,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_packet.c:2364,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2370,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2372,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2377,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2378,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2380,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2381,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:2382,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2385,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2389,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2390,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2398,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2399,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_packet.c:2405,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2415,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2416,1
    - Dst: prefix_bgp_orf_remove_all
      Src: /src/frr/bgpd/bgp_packet.c:2419,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_packet.c:2434,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2440,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_packet.c:2443,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_packet.c:2459,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_packet.c:2462,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_packet.c:2464,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_packet.c:2466,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2475,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2479,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2482,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_packet.c:2492,1
    - Dst: prefix_bgp_orf_set
      Src: /src/frr/bgpd/bgp_packet.c:2503,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2513,1
    - Dst: prefix_bgp_orf_remove_all
      Src: /src/frr/bgpd/bgp_packet.c:2516,1
    - Dst: prefix_bgp_orf_lookup
      Src: /src/frr/bgpd/bgp_packet.c:2523,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:2525,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2527,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2528,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2537,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2539,1
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_packet.c:2542,1
    - Dst: PAF_UPDGRP
      Src: /src/frr/bgpd/bgp_packet.c:2545,1
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_packet.c:2546,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2561,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2563,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2575,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2577,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2578,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2580,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2580,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2585,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2586,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2588,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2588,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2592,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2593,1
    - Dst: peer_active_nego
      Src: /src/frr/bgpd/bgp_packet.c:2602,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2603,1
    - Dst: bgp_set_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:2605,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2608,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_packet.c:2609,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2614,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2615,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2617,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2617,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_packet.c:2621,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2623,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2623,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_packet.c:2627,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2629,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2630,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2633,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2634,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2636,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2636,1
    - Dst: bgp_clear_stale_route
      Src: /src/frr/bgpd/bgp_packet.c:2639,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2641,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2642,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2644,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2644,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2649,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2655,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2657,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2658,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2660,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2661,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2663,1
    - Dst: bgp_route_refresh_send
      Src: /src/frr/bgpd/bgp_packet.c:2668,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2671,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2672,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2674,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2674,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2679,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2681,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_packet.c:2687,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 168
    argCount: 2
    argNames:
    - peer
    - size
    argTypes:
    - struct peer*
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2691
      start: 2283
    functionDepth: 10
    functionLinenumber: 2283
    functionLinenumberEnd: 2691
    functionName: bgp_route_refresh_receive
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - peer_established
    - bgp_fsm_error_subcode
    - safi2str
    - peer_af_find
    - afi2str
    - flog_err
    - stream_getc
    - lookup_msg
    - PSIZE
    - snprintf
    - memset
    - prefix_bgp_orf_lookup
    - inet_ntop
    - zlog_debug
    - bgp_set_stale_route
    - prefix_blen
    - bgp_notify_send
    - peer_active_nego
    - bgp_clear_stale_route
    - UPDGRP_PEER
    - ntohl
    - zlog_info
    - stream_forward_getp
    - prefix_bgp_orf_remove_all
    - bgp_route_refresh_send
    - afi2family
    - zlog_err
    - bgp_announce_route
    - UNSET_FLAG
    - PAF_UPDGRP
    - EVENT_OFF
    - bgp_debug_neighbor_events
    - prefix_bgp_orf_set
    - iana_afi2str
    - event_add_timer
    - stream_pnt
    - memcpy
    - CHECK_FLAG
    - stream_getw
    - SET_FLAG
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    linkageType: ''
    returnType: int
    signature: int bgp_route_refresh_receive(struct peer *peer, bgp_size_t size)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2718,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2719,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2729,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2731,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2736,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2737,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2742,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_packet.c:2751,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2752,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2758,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_packet.c:2763,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2767,1
    - Dst: bgp_map_afi_safi_iana2int
      Src: /src/frr/bgpd/bgp_packet.c:2772,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2774,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2775,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2778,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2779,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2784,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2785,1
    - Dst: iana_afi2str
      Src: /src/frr/bgpd/bgp_packet.c:2791,1
    - Dst: iana_safi2str
      Src: /src/frr/bgpd/bgp_packet.c:2792,1
    - Dst: bgp_announce_route
      Src: /src/frr/bgpd/bgp_packet.c:2798,1
    - Dst: peer_active_nego
      Src: /src/frr/bgpd/bgp_packet.c:2805,1
    - Dst: bgp_clear_route
      Src: /src/frr/bgpd/bgp_packet.c:2806,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_packet.c:2811,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 3
    argNames:
    - peer
    - pnt
    - length
    argTypes:
    - struct peer*
    - uint8_t*
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2820
      start: 2700
    functionDepth: 10
    functionLinenumber: 2700
    functionLinenumberEnd: 2820
    functionName: bgp_capability_msg_parse
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - zlog_info
    - bgp_clear_route
    - flog_warn
    - CHECK_FLAG
    - ntohs
    - zlog_debug
    - bgp_announce_route
    - bgp_debug_neighbor_events
    - bgp_notify_send
    - iana_afi2str
    - peer_active_nego
    - bgp_map_afi_safi_iana2int
    - iana_safi2str
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_capability_msg_parse(struct peer *peer, uint8_t *pnt,\n\t\t\t\t
      \   bgp_size_t length)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2836,1
    - Dst: bgp_debug_neighbor_events
      Src: /src/frr/bgpd/bgp_packet.c:2838,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_packet.c:2839,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:2842,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2843,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2846,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:2852,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2853,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_packet.c:2857,1
    - Dst: bgp_notify_send
      Src: /src/frr/bgpd/bgp_packet.c:2858,1
    - Dst: bgp_fsm_error_subcode
      Src: /src/frr/bgpd/bgp_packet.c:2859,1
    - Dst: bgp_capability_msg_parse
      Src: /src/frr/bgpd/bgp_packet.c:2864,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - peer
    - size
    argTypes:
    - struct peer*
    - bgp_size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2865
      start: 2831
    functionDepth: 11
    functionLinenumber: 2831
    functionLinenumberEnd: 2865
    functionName: bgp_capability_receive
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 2
    functionsReached:
    - peer_established
    - bgp_fsm_error_subcode
    - CHECK_FLAG
    - zlog_debug
    - flog_err
    - bgp_debug_neighbor_events
    - bgp_notify_send
    - bgp_capability_msg_parse
    - stream_pnt
    - lookup_msg
    linkageType: ''
    returnType: int
    signature: int bgp_capability_receive(struct peer *peer, bgp_size_t size)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:2889,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2890,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_packet.c:2906,1
    - Dst: stream_fifo_pop
      Src: /src/frr/bgpd/bgp_packet.c:2907,1
    - Dst: stream_forward_getp
      Src: /src/frr/bgpd/bgp_packet.c:2914,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_packet.c:2915,1
    - Dst: stream_pnt
      Src: /src/frr/bgpd/bgp_packet.c:2915,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_packet.c:2918,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_packet.c:2919,1
    - Dst: hook_call
      Src: /src/frr/bgpd/bgp_packet.c:2921,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2930,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2931,1
    - Dst: bgp_open_receive
      Src: /src/frr/bgpd/bgp_packet.c:2933,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2935,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2941,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2942,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:2944,1
    - Dst: bgp_update_receive
      Src: /src/frr/bgpd/bgp_packet.c:2945,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2947,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2953,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2954,1
    - Dst: bgp_notify_receive
      Src: /src/frr/bgpd/bgp_packet.c:2956,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2958,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2964,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_packet.c:2965,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2966,1
    - Dst: bgp_keepalive_receive
      Src: /src/frr/bgpd/bgp_packet.c:2968,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2970,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2977,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2978,1
    - Dst: bgp_route_refresh_receive
      Src: /src/frr/bgpd/bgp_packet.c:2980,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2982,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_packet.c:2988,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/bgpd/bgp_packet.c:2989,1
    - Dst: bgp_capability_receive
      Src: /src/frr/bgpd/bgp_packet.c:2991,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_packet.c:2993,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_packet.c:3008,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_packet.c:3012,1
    - Dst: bgp_event_update
      Src: /src/frr/bgpd/bgp_packet.c:3021,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/bgp_packet.c:3036,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_packet.c:3039,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 85
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (!"Message of invalid type received during input processing")
      pos:
        line_end: 3007
        line_start: 3007
        source_file: /src/frr/bgpd/bgp_packet.c
    constantsTouched: []
    func_position:
      end: 3044
      start: 2881
    functionDepth: 12
    functionLinenumber: 2881
    functionLinenumberEnd: 3044
    functionName: bgp_process_packet
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - bgp_route_refresh_receive
    - atomic_fetch_add_explicit
    - bgp_open_receive
    - flog_err
    - frrtrace
    - stream_getc
    - frr_with_mutex
    - hook_call
    - bgp_capability_receive
    - atomic_load_explicit
    - EVENT_ARG
    - bgp_event_update
    - assert
    - stream_free
    - bgp_keepalive_receive
    - stream_forward_getp
    - monotime
    - stream_pnt
    - memcpy
    - stream_getw
    - bgp_update_receive
    - bgp_notify_receive
    - stream_fifo_pop
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void bgp_process_packet(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_packet.c:3053,1
    - Dst: bgp_write_proceed_actions
      Src: /src/frr/bgpd/bgp_packet.c:3054,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_packet.c:3067,1
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_packet.c:3068,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_packet.c:3075,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_packet.c:3075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3076,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3077,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3079,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_packet.c:3081,1
    - Dst: bgp_event_update
      Src: /src/frr/bgpd/bgp_packet.c:3086,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3087
      start: 3047
    functionDepth: 11
    functionLinenumber: 3047
    functionLinenumberEnd: 3087
    functionName: bgp_send_delayed_eor
    functionSourceFile: /src/frr/bgpd/bgp_packet.c
    functionUses: 1
    functionsReached:
    - peer_established
    - CHECK_FLAG
    - EVENT_VAL
    - SET_FLAG
    - bgp_write_proceed_actions
    - EVENT_ARG
    - if
    - ALL_LIST_ELEMENTS
    - bgp_event_update
    linkageType: ''
    returnType: void
    signature: void bgp_send_delayed_eor(struct bgp *bgp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_mplsvpn.c:51,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_mplsvpn.c:55,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - argv
    - argc
    - index
    - afi
    argTypes:
    - struct cmd_token**
    - int
    - int*
    - afi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 61
    functionName: argv_find_and_parse_vpnvx
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - argv_find
    linkageType: ''
    returnType: int
    signature: "int argv_find_and_parse_vpnvx(struct cmd_token **argv, int argc,\n\t\t\t\t
      \    int *index, afi_t *afi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - label_pnt
    argTypes:
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: decode_label
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t decode_label(mpls_label_t *label_pnt)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - label
    - label_pnt
    argTypes:
    - mpls_label_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 86
    functionName: encode_label
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void encode_label(mpls_label_t label, mpls_label_t *label_pnt)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_mplsvpn.c:109,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_mplsvpn.c:110,1
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_mplsvpn.c:115,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:118,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:120,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_mplsvpn.c:123,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_mplsvpn.c:124,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:127,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:128,1
    - Dst: STREAM_GETC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:137,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_mplsvpn.c:138,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:139,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:142,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:151,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:152,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:162,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_mplsvpn.c:173,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:174,1
    - Dst: prefix_blen
      Src: /src/frr/bgpd/bgp_mplsvpn.c:179,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:185,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:186,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_mplsvpn.c:194,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:195,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:198,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:199,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_mplsvpn.c:206,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/bgp_mplsvpn.c:209,1
    - Dst: decode_rd_as
      Src: /src/frr/bgpd/bgp_mplsvpn.c:213,1
    - Dst: decode_rd_as4
      Src: /src/frr/bgpd/bgp_mplsvpn.c:217,1
    - Dst: decode_rd_ip
      Src: /src/frr/bgpd/bgp_mplsvpn.c:221,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:230,1
    - Dst: STREAM_GET
      Src: /src/frr/bgpd/bgp_mplsvpn.c:236,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:239,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:243,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:249,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:250,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:253,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:260,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:267,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 101
    argCount: 3
    argNames:
    - peer
    - attr
    - packet
    argTypes:
    - struct peer*
    - struct attr*
    - struct bgp_nlri*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 88
    functionDepth: 15
    functionLinenumber: 88
    functionLinenumberEnd: 271
    functionName: bgp_nlri_parse_vpn
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - stream_put
    - flog_err
    - STREAM_GETC
    - decode_rd_ip
    - bgp_addpath_encode_rx
    - PSIZE
    - decode_rd_as
    - memset
    - decode_rd_as4
    - bgp_set_valid_label
    - prefix_blen
    - decode_rd_type
    - ntohl
    - stream_free
    - STREAM_READABLE
    - afi2family
    - stream_new
    - bgp_withdraw
    - STREAM_GET
    - bgp_update
    linkageType: ''
    returnType: int
    signature: "int bgp_nlri_parse_vpn(struct peer *peer, struct attr *attr,\n\t\t
      \      struct bgp_nlri *packet)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:289,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:293,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:295,1
    - Dst: vpn_leak_to_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:300,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:305,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:306,1
    - Dst: zclient_send_vrf_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:312,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 314
    functionName: vpn_leak_zebra_vrf_label_update
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 2
    functionsReached:
    - vpn_leak_to_vpn_active
    - afi2str
    - zlog_debug
    - BGP_DEBUG
    - zclient_send_vrf_label
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_label_update(struct bgp *bgp, afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:323,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:327,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:335,1
    - Dst: zclient_send_vrf_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 341
    functionName: vpn_leak_zebra_vrf_label_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 3
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - zclient_send_vrf_label
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_label_withdraw(struct bgp *bgp, afi_t afi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:350,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:359,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:360,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:367,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:368,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:373,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:374,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_mplsvpn.c:377,1
    - Dst: zclient_send_localsid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:384,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:386,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 389
    functionName: vpn_leak_zebra_vrf_sid_update_per_af
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - afi2str
    - zlog_debug
    - vrf_lookup_by_id
    - BGP_DEBUG
    - zclient_send_localsid
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_sid_update_per_af(struct bgp *bgp, afi_t afi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:398,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:407,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:416,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:422,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_mplsvpn.c:425,1
    - Dst: zclient_send_localsid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:431,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:433,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 436
    functionName: vpn_leak_zebra_vrf_sid_update_per_vrf
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - zlog_debug
    - vrf_lookup_by_id
    - BGP_DEBUG
    - zclient_send_localsid
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_sid_update_per_vrf(struct bgp *bgp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:445,1
    - Dst: vpn_leak_zebra_vrf_sid_update_per_af
      Src: /src/frr/bgpd/bgp_mplsvpn.c:448,1
    - Dst: vpn_leak_zebra_vrf_sid_update_per_vrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:451,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:454,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 456
    functionName: vpn_leak_zebra_vrf_sid_update
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 2
    functionsReached:
    - vpn_leak_zebra_vrf_sid_update_per_af
    - vpn_leak_zebra_vrf_sid_update_per_vrf
    - afi2str
    - zlog_debug
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_sid_update(struct bgp *bgp, afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:464,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:468,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:469,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:474,1
    - Dst: zclient_send_localsid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:477,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:480,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 482
    functionName: vpn_leak_zebra_vrf_sid_withdraw_per_af
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - afi2str
    - zlog_debug
    - XFREE
    - BGP_DEBUG
    - zclient_send_localsid
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_sid_withdraw_per_af(struct bgp *bgp, afi_t
      afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:490,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:494,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:501,1
    - Dst: zclient_send_localsid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:504,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 508
    functionName: vpn_leak_zebra_vrf_sid_withdraw_per_vrf
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - XFREE
    - zclient_send_localsid
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_sid_withdraw_per_vrf(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vpn_leak_zebra_vrf_sid_withdraw_per_af
      Src: /src/frr/bgpd/bgp_mplsvpn.c:517,1
    - Dst: vpn_leak_zebra_vrf_sid_withdraw_per_vrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 521
    functionName: vpn_leak_zebra_vrf_sid_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - vpn_leak_zebra_vrf_sid_withdraw_per_vrf
    - vpn_leak_zebra_vrf_sid_withdraw_per_af
    linkageType: ''
    returnType: void
    signature: void vpn_leak_zebra_vrf_sid_withdraw(struct bgp *bgp, afi_t afi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:529,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:532,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:539,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:542,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:543,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:545,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:546,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:554,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:568,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:575,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:576,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:578,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:579,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - label
    - labelid
    - allocated
    argTypes:
    - mpls_label_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 523
    functionDepth: 10
    functionLinenumber: 523
    functionLinenumberEnd: 582
    functionName: vpn_leak_label_callback
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - CHECK_FLAG
    - vpn_leak_prechange
    - zlog_debug
    - vpn_leak_postchange
    - flog_err
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int vpn_leak_label_callback(\n\tmpls_label_t label,\n\tvoid *labelid,\n\tbool
      allocated)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:588,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:591,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_mplsvpn.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - bgp
    - sid
    - locator_name
    argTypes:
    - struct bgp*
    - struct in6_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 594
    functionName: sid_register
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - listnode_add
    - snprintf
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void sid_register(struct bgp *bgp, const struct in6_addr *sid,\n\t\t\t
      const char *locator_name)"
  - BBCount: 199
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:601,1
    - Dst: sid_same
      Src: /src/frr/bgpd/bgp_mplsvpn.c:602,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:603,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:604,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_mplsvpn.c:613,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mplsvpn.c:613,1
    - Dst: sid_same
      Src: /src/frr/bgpd/bgp_mplsvpn.c:614,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:631,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:658,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:674,1
    - Dst: transpose_sid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:681,1
    - Dst: sid_exist
      Src: /src/frr/bgpd/bgp_mplsvpn.c:682,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_mplsvpn.c:691,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:692,1
    - Dst: transpose_sid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:698,1
    - Dst: sid_exist
      Src: /src/frr/bgpd/bgp_mplsvpn.c:699,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:716,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:723,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:724,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:738,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:747,1
    - Dst: srv6_locator_chunk_alloc
      Src: /src/frr/bgpd/bgp_mplsvpn.c:752,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:753,1
    - Dst: alloc_new_sid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:755,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:760,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:762,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:763,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:764,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:769,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:771,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:781,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:788,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:803,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:811,1
    - Dst: srv6_locator_chunk_alloc
      Src: /src/frr/bgpd/bgp_mplsvpn.c:816,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:817,1
    - Dst: alloc_new_sid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:819,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:824,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:826,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:827,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:832,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:844,1
    - Dst: ensure_vrf_tovpn_sid_per_af
      Src: /src/frr/bgpd/bgp_mplsvpn.c:846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:850,1
    - Dst: ensure_vrf_tovpn_sid_per_vrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:851,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:857,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:862,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:863,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:866,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:873,1
    - Dst: sid_unregister
      Src: /src/frr/bgpd/bgp_mplsvpn.c:876,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:877,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:884,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:889,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:894,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:900,1
    - Dst: sid_unregister
      Src: /src/frr/bgpd/bgp_mplsvpn.c:903,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:904,1
    - Dst: delete_vrf_tovpn_sid_per_af
      Src: /src/frr/bgpd/bgp_mplsvpn.c:911,1
    - Dst: delete_vrf_tovpn_sid_per_vrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:912,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:982,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:983,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:991,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:996,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:997,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1014,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1015,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1023,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1025,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1033,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1035,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1050,1
    - Dst: is_pi_family_evpn
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1063,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1064,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1071,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1085,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1101,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1112,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1138,1
    - Dst: labels_same
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1144,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1146,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1147,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1149,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1157,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1158,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1160,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1162,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1175,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1176,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1177,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1178,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1179,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1180,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1181,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1182,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1183,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1185,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1190,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1193,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1194,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1196,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1197,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1199,1
    - Dst: setlabels
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1205,1
    - Dst: setsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1212,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1215,1
    - Dst: setsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1231,1
    - Dst: unsetsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1234,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1237,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1239,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1240,1
    - Dst: leak_update_nexthop_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1242,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1245,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1247,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1250,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1251,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1252,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1255,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1261,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1263,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1271,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1275,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1276,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1280,1
    - Dst: BGP_PATH_ANNC_NH_SELF::BGP_PATH_ANNC_NH_SELF
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1282,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1283,1
    - Dst: BGP_PATH_ACCEPT_OWN::BGP_PATH_ACCEPT_OWN
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1283,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1294,1
    - Dst: setsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1307,1
    - Dst: unsetsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1309,1
    - Dst: setlabels
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1312,1
    - Dst: label::label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1312,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1314,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1314,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1315,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1318,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1318,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1320,1
    - Dst: leak_update_nexthop_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1322,1
    - Dst: bgp_orig::bgp_orig
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1323,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1324,1
    - Dst: BGP_PATH_VALID::BGP_PATH_VALID
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1324,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1326,1
    - Dst: BGP_PATH_VALID::BGP_PATH_VALID
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1326,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1331,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1332,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1335,1
    - Dst: LIST_REMOVE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1353,1
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1357,1
    - Dst: bgp_label_per_nexthop_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1358,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1369,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1376,1
    - Dst: bgp_zebra_send_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1393,1
    - Dst: LIST_FOREACH
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1397,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1400,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1403,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1431,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1439,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1447,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1451,1
    - Dst: bgp_label_per_nexthop_find
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1452,1
    - Dst: bgp_label_per_nexthop_new
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1454,1
    - Dst: bgp_lp_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1459,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1469,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1472,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1475,1
    - Dst: nexthop_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1479,1
    - Dst: nexthop_same
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1480,1
    - Dst: nexthop_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1481,1
    - Dst: nexthop_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1482,1
    - Dst: bgp_zebra_send_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1484,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1513,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1513,1
    - Dst: ipv4_unicast_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1515,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1520,1
    - Dst: ipv4_unicast_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1527,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1532,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1539,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1540,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1541,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1546,1
    - Dst: BGP_ATTR_NH_AFI
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1558,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1563,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1568,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1581,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1591,1
    - Dst: _vpn_leak_from_vrf_get_per_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1595,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1604,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1605,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1606,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1617,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1619,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1620,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1621,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1624,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1626,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1634,1
    - Dst: is_route_injectable_into_vpn
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1639,1
    - Dst: vpn_leak_to_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1642,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1644,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1659,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1662,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1666,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1668,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1678,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1679,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1680,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1683,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1685,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1696,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1699,1
    - Dst: ecommunity_strip_rts
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1701,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1702,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1706,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1708,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1712,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1714,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1715,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1716,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1719,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1721,1
    - Dst: community_strip_accept_own
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1724,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1728,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1749,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1752,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1755,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1769,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1779,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1791,1
    - Dst: vpn_leak_from_vrf_get_per_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1794,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1801,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1808,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1814,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1816,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1819,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1819,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1826,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1829,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1837,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1861,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1868,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1874,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1890,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1896,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1898,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1900,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1901,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1901,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1904,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1905,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1910,1
    - Dst: leak_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1916,1
    - Dst: vpn_leak_to_vrf_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1929,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1931,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1938,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1939,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1940,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1947,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1958,1
    - Dst: is_route_injectable_into_vpn
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1963,1
    - Dst: vpn_leak_to_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1966,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1968,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1973,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1975,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1984,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1992,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1994,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1995,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1996,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1998,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2004,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2011,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2012,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2019,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2024,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2024,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2025,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2027,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2033,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2044,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2047,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2048,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2049,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2051,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2052,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2053,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2066,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2069,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2072,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2073,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2076,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2078,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2081,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2084,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2099,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2102,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2106,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2111,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2124,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2125,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2141,1
    - Dst: vpn_leak_from_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2143,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2145,1
    - Dst: bgp_lookup_by_rd
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2159,1
    - Dst: ecommunity_include
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2169,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2171,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2173,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2181,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2186,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2187,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2190,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2197,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2207,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2208,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2210,1
    - Dst: ecommunity_strip_rts
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2211,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2212,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2215,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2216,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2220,1
    - Dst: community_strip_accept_own
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2223,1
    - Dst: NEXTHOP_FAMILY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2232,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2234,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2245,1
    - Dst: if_get_vrf_loopback
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2257,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2274,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2288,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2292,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2296,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2309,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2314,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2315,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2331,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2334,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2343,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2359,1
    - Dst: leak_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2362,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2365,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2378,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2381,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2384,1
    - Dst: vpn_leak_to_vrf_update_onevrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2388,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2395,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2409,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2413,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2425,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2431,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2432,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2435,1
    - Dst: vpn_leak_from_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2436,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2438,1
    - Dst: ecommunity_include
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2445,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2448,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2454,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2457,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2459,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2470,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2472,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2473,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2474,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2476,1
    CyclomaticComplexity: 288
    EdgeCount: 288
    ICount: 759
    argCount: 2
    argNames:
    - bgp
    - sid
    argTypes:
    - struct bgp*
    - struct in6_addr*
    assertStmts:
    - condition: (num_labels <= BGP_MAX_LABELS)
      pos:
        line_end: 982
        line_start: 982
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    - condition: (num_sids <= BGP_MAX_SIDS)
      pos:
        line_end: 1014
        line_start: 1014
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    - condition: (0)
      pos:
        line_end: 1748
        line_start: 1748
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    - condition: (label)
      pos:
        line_end: 981
        line_start: 981
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    - condition: (!"Blackhole nexthop. Already checked by the caller.")
      pos:
        line_end: 1446
        line_start: 1446
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    - condition: (sid)
      pos:
        line_end: 1013
        line_start: 1013
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    constantsTouched: []
    func_position:
      end: 2478
      start: 596
    functionDepth: 8
    functionLinenumber: 596
    functionLinenumberEnd: 2478
    functionName: sid_unregister
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 3
    functionsReached:
    - bgp_path_info_restore
    - sid_exist
    - afi2str
    - NEXTHOP_FAMILY
    - LIST_EMPTY
    - memset
    - XCALLOC
    - setsids
    - is_pi_family_evpn
    - if
    - bgp_mplsvpn_path_nh_label_unlink
    - for
    - ipv4_unicast_valid
    - ecommunity_ecom2str
    - vpn_leak_from_vrf_update
    - peer_lock
    - encode_label
    - memcpy
    - ensure_vrf_tovpn_sid_per_af
    - vpn_leak_to_vrf_withdraw
    - setlabels
    - bgp_zebra_send_nexthop_label
    - LIST_INSERT_HEAD
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    - ALL_LIST_ELEMENTS
    - IPV6_ADDR_COPY
    - IN6_IS_ADDR_MULTICAST
    - BGP_PATH_ACCEPT_OWN::BGP_PATH_ACCEPT_OWN
    - is_route_injectable_into_vpn
    - bgp_attr_set_ecommunity
    - bgp_dest_get_bgp_table_info
    - nexthop_same
    - srv6_locator_chunk_free
    - bgp_path_info_set_flag
    - bgp_attr_intern
    - bgp_is_valid_label
    - delete_vrf_tovpn_sid_per_vrf
    - bgp_find_or_add_nexthop
    - ecommunity_merge
    - bgp_get_imported_bpi_ultimate
    - bgp_attr_get_ecommunity
    - monotime
    - ecommunity_strip_rts
    - bgp_path_info_unset_flag
    - BGP_PATH_VALID::BGP_PATH_VALID
    - ecommunity_free
    - delete_vrf_tovpn_sid_per_af
    - info_make::info_make
    - unsetsids
    - BGP_ATTR_NH_AFI
    - bgp_path_info_delete
    - IPV4_ADDR_COPY
    - vpn_leak_to_vrf_update_onevrf
    - prefix_rd2str
    - ecommunity_dup
    - BGP_PATH_ANNC_NH_SELF::BGP_PATH_ANNC_NH_SELF
    - bgp_path_info_lock
    - memcmp
    - label::label
    - leak_update_nexthop_valid
    - community_strip_accept_own
    - BGP_DEBUG
    - sid_unregister
    - bgp_set_valid_label
    - bgp_dest_get_prefix
    - zlog_debug
    - assert
    - bgp_dest_unlock_node
    - subgroup_announce_reset_nhop
    - LIST_FOREACH
    - vpn_leak_to_vrf_update
    - ensure_vrf_tovpn_sid_per_vrf
    - bgp_orig::bgp_orig
    - vpn_leak_from_vpn_active
    - zlog_err
    - nexthop_dup
    - extra::extra
    - XFREE
    - alloc_new_sid
    - bgp_label_per_nexthop_find
    - sid_same
    - ecommunity_include
    - vpn_leak_from_vrf_get_per_nexthop_label
    - vpn_leak_to_vpn_active
    - nexthop_free
    - bgp_lookup_by_rd
    - bgp_lock
    - bgp_attr_flush
    - SET_FLAG
    - _vpn_leak_from_vrf_get_per_nexthop_label
    - bgp_attr_unintern
    - LIST_REMOVE
    - bgp_aggregate_decrement
    - attrhash_cmp
    - bgp_lp_get
    - transpose_sid
    - IN6_IS_ADDR_UNSPECIFIED
    - bgp_path_info_extra_get
    - bgp_label_per_nexthop_new
    - ALL_LIST_ELEMENTS_RO
    - bgp_label_per_nexthop_free
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - srv6_locator_chunk_alloc
    - if_get_vrf_loopback
    - bgp_afi_node_get
    - ecommunity_cmp
    - listnode_delete
    - bgp_process
    - family2afi
    - leak_update
    - bgp_route_next
    - bgp_aggregate_increment
    - bgp_table_top
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - labels_same
    - bgp_dest_lock_node
    - bgp_dest_table
    - IN6_IS_ADDR_LOOPBACK
    linkageType: ''
    returnType: void
    signature: void sid_unregister(struct bgp *bgp, const struct in6_addr *sid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:781,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:788,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:803,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_mplsvpn.c:811,1
    - Dst: srv6_locator_chunk_alloc
      Src: /src/frr/bgpd/bgp_mplsvpn.c:816,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:817,1
    - Dst: alloc_new_sid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:819,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:824,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:826,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:827,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:832,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - bgp_vpn
    - bgp_vrf
    argTypes:
    - struct bgp*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 838
    functionName: ensure_vrf_tovpn_sid_per_vrf
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - srv6_locator_chunk_free
    - XCALLOC
    - CHECK_FLAG
    - srv6_locator_chunk_alloc
    - zlog_err
    - zlog_debug
    - XFREE
    - alloc_new_sid
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void ensure_vrf_tovpn_sid_per_vrf(struct bgp *bgp_vpn, struct bgp *bgp_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:844,1
    - Dst: ensure_vrf_tovpn_sid_per_af
      Src: /src/frr/bgpd/bgp_mplsvpn.c:846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:850,1
    - Dst: ensure_vrf_tovpn_sid_per_vrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:851,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - bgp_vpn
    - bgp_vrf
    - afi
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 840
    functionDepth: 2
    functionLinenumber: 840
    functionLinenumberEnd: 852
    functionName: ensure_vrf_tovpn_sid
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - ensure_vrf_tovpn_sid_per_af
    - CHECK_FLAG
    - ensure_vrf_tovpn_sid_per_vrf
    linkageType: ''
    returnType: void
    signature: void ensure_vrf_tovpn_sid(struct bgp *bgp_vpn, struct bgp *bgp_vrf,
      afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:857,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:862,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:863,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:866,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:873,1
    - Dst: sid_unregister
      Src: /src/frr/bgpd/bgp_mplsvpn.c:876,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:877,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - bgp_vpn
    - bgp_vrf
    - afi
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 854
    functionDepth: 9
    functionLinenumber: 854
    functionLinenumberEnd: 880
    functionName: delete_vrf_tovpn_sid_per_af
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - sid_unregister
    - srv6_locator_chunk_free
    - CHECK_FLAG
    - afi2str
    - zlog_debug
    - XFREE
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void delete_vrf_tovpn_sid_per_af(struct bgp *bgp_vpn, struct bgp *bgp_vrf,\n\t\t\t\t
      afi_t afi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:884,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:889,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:894,1
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:900,1
    - Dst: sid_unregister
      Src: /src/frr/bgpd/bgp_mplsvpn.c:903,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:904,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - bgp_vpn
    - bgp_vrf
    argTypes:
    - struct bgp*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 882
    functionDepth: 9
    functionLinenumber: 882
    functionLinenumberEnd: 907
    functionName: delete_vrf_tovpn_sid_per_vrf
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - sid_unregister
    - srv6_locator_chunk_free
    - CHECK_FLAG
    - zlog_debug
    - XFREE
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void delete_vrf_tovpn_sid_per_vrf(struct bgp *bgp_vpn, struct bgp *bgp_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: delete_vrf_tovpn_sid_per_af
      Src: /src/frr/bgpd/bgp_mplsvpn.c:911,1
    - Dst: delete_vrf_tovpn_sid_per_vrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - bgp_vpn
    - bgp_vrf
    - afi
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 10
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: delete_vrf_tovpn_sid
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - delete_vrf_tovpn_sid_per_vrf
    - delete_vrf_tovpn_sid_per_af
    linkageType: ''
    returnType: void
    signature: void delete_vrf_tovpn_sid(struct bgp *bgp_vpn, struct bgp *bgp_vrf,
      afi_t afi)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - sid
    - label
    - offset
    - len
    argTypes:
    - struct in6_addr*
    - uint32_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 950
    functionName: transpose_sid
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void transpose_sid(struct in6_addr *sid, uint32_t label, uint8_t offset,\n\t\t
      \  uint8_t len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - bpi
    - label
    - n
    argTypes:
    - struct bgp_path_info*
    - mpls_label_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 972
    functionName: labels_same
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool labels_same(struct bgp_path_info *bpi, mpls_label_t *label,\n\t\t\tuint32_t
      n)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:982,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:983,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:991,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:996,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:997,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - bpi
    - label
    - num_labels
    argTypes:
    - struct bgp_path_info*
    - mpls_label_t*
    - uint32_t
    assertStmts:
    - condition: (label)
      pos:
        line_end: 981
        line_start: 981
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    - condition: (num_labels <= BGP_MAX_LABELS)
      pos:
        line_end: 982
        line_start: 982
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    constantsTouched: []
    func_position:
      end: 1001
      start: 977
    functionDepth: 2
    functionLinenumber: 977
    functionLinenumberEnd: 1001
    functionName: setlabels
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_set_valid_label
    - bgp_is_valid_label
    - bgp_path_info_extra_get
    - assert
    linkageType: ''
    returnType: void
    signature: "void setlabels(struct bgp_path_info *bpi,\n\t\t      mpls_label_t
      *label, /* array of labels */\n\t\t      uint32_t num_labels)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1014,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1015,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1023,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1025,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - bpi
    - sid
    - num_sids
    argTypes:
    - struct bgp_path_info*
    - struct in6_addr*
    - uint32_t
    assertStmts:
    - condition: (sid)
      pos:
        line_end: 1013
        line_start: 1013
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    - condition: (num_sids <= BGP_MAX_SIDS)
      pos:
        line_end: 1014
        line_start: 1014
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    constantsTouched: []
    func_position:
      end: 1027
      start: 1006
    functionDepth: 2
    functionLinenumber: 1006
    functionLinenumberEnd: 1027
    functionName: setsids
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - memcpy
    - bgp_path_info_extra_get
    - assert
    linkageType: ''
    returnType: void
    signature: "void setsids(struct bgp_path_info *bpi,\n\t\t      struct in6_addr
      *sid,\n\t\t      uint32_t num_sids)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1033,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bpi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1029
    functionDepth: 2
    functionLinenumber: 1029
    functionLinenumberEnd: 1036
    functionName: unsetsids
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_path_info_extra_get
    - memset
    linkageType: ''
    returnType: void
    signature: void unsetsids(struct bgp_path_info *bpi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1050,1
    - Dst: is_pi_family_evpn
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1063,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1064,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1071,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1085,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 10
    argNames:
    - to_bgp
    - bn
    - new_attr
    - afi
    - safi
    - source_bpi
    - bpi
    - bgp_orig
    - p
    - debug
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    - struct attr*
    - afi_t
    - safi_t
    - struct bgp_path_info*
    - struct bgp_path_info*
    - struct bgp*
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1038
    functionDepth: 3
    functionLinenumber: 1038
    functionLinenumberEnd: 1089
    functionName: leak_update_nexthop_valid
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - is_pi_family_evpn
    - bgp_find_or_add_nexthop
    - zlog_debug
    - bgp_get_imported_bpi_ultimate
    linkageType: ''
    returnType: bool
    signature: "bool leak_update_nexthop_valid(struct bgp *to_bgp, struct bgp_dest
      *bn,\n\t\t\t\t      struct attr *new_attr, afi_t afi,\n\t\t\t\t      safi_t
      safi,\n\t\t\t\t      struct bgp_path_info *source_bpi,\n\t\t\t\t      struct
      bgp_path_info *bpi,\n\t\t\t\t      struct bgp *bgp_orig,\n\t\t\t\t      const
      struct prefix *p, int debug)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1101,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1112,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1138,1
    - Dst: labels_same
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1144,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1146,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1147,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1149,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1157,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1158,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1160,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1162,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1175,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1176,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1177,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1178,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1179,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1180,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1181,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1182,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1183,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1185,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1190,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1193,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1194,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1196,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1197,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1199,1
    - Dst: setlabels
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1205,1
    - Dst: setsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1212,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1215,1
    - Dst: setsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1231,1
    - Dst: unsetsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1234,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1237,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1239,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1240,1
    - Dst: leak_update_nexthop_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1242,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1245,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1247,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1250,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1251,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1252,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1255,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1261,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1263,1
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1271,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1275,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1276,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1280,1
    - Dst: BGP_PATH_ANNC_NH_SELF::BGP_PATH_ANNC_NH_SELF
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1282,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1283,1
    - Dst: BGP_PATH_ACCEPT_OWN::BGP_PATH_ACCEPT_OWN
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1283,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1294,1
    - Dst: setsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1307,1
    - Dst: unsetsids
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1309,1
    - Dst: setlabels
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1312,1
    - Dst: label::label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1312,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1314,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1314,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1315,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1318,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1318,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1320,1
    - Dst: leak_update_nexthop_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1322,1
    - Dst: bgp_orig::bgp_orig
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1323,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1324,1
    - Dst: BGP_PATH_VALID::BGP_PATH_VALID
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1324,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1326,1
    - Dst: BGP_PATH_VALID::BGP_PATH_VALID
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1326,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1331,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1332,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1335,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 115
    argCount: 12
    argNames:
    - to_bgp
    - bn
    - new_attr
    - afi
    - safi
    - source_bpi
    - label
    - num_labels
    - bgp_orig
    - nexthop_orig
    - nexthop_self_flag
    - debug
    argTypes:
    - struct bgp*
    - struct bgp_dest*
    - struct attr*
    - afi_t
    - safi_t
    - struct bgp_path_info*
    - mpls_label_t*
    - uint32_t
    - struct bgp*
    - struct prefix*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1094
    functionDepth: 8
    functionLinenumber: 1094
    functionLinenumberEnd: 1339
    functionName: leak_update
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_attr_unintern
    - bgp_path_info_restore
    - bgp_path_info_set_flag
    - bgp_path_info_lock
    - label::label
    - leak_update_nexthop_valid
    - bgp_aggregate_decrement
    - attrhash_cmp
    - bgp_path_info_extra_get
    - setsids
    - bgp_dest_get_prefix
    - zlog_debug
    - bgp_dest_unlock_node
    - bgp_orig::bgp_orig
    - bgp_attr_get_ecommunity
    - monotime
    - ecommunity_cmp
    - extra::extra
    - bgp_process
    - peer_lock
    - bgp_path_info_unset_flag
    - BGP_PATH_VALID::BGP_PATH_VALID
    - vpn_leak_to_vrf_withdraw
    - unsetsids
    - setlabels
    - bgp_aggregate_increment
    - info_make::info_make
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_path_info_delete
    - labels_same
    - bgp_dest_lock_node
    - bgp_lock
    - bgp_dest_get_bgp_path_info
    - BGP_PATH_ACCEPT_OWN::BGP_PATH_ACCEPT_OWN
    - BGP_PATH_ANNC_NH_SELF::BGP_PATH_ANNC_NH_SELF
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *\nleak_update(struct bgp *to_bgp, struct bgp_dest
      *bn,\n\t    struct attr *new_attr, /* already interned */\n\t    afi_t afi,
      safi_t safi, struct bgp_path_info *source_bpi,\n\t    mpls_label_t *label, uint32_t
      num_labels, struct bgp *bgp_orig,\n\t    struct prefix *nexthop_orig, int nexthop_self_flag,
      int debug)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LIST_REMOVE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1353,1
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1357,1
    - Dst: bgp_label_per_nexthop_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1358,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1341
    functionDepth: 1
    functionLinenumber: 1341
    functionLinenumberEnd: 1359
    functionName: bgp_mplsvpn_path_nh_label_unlink
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - LIST_REMOVE
    - bgp_label_per_nexthop_free
    - LIST_EMPTY
    linkageType: ''
    returnType: void
    signature: void bgp_mplsvpn_path_nh_label_unlink(struct bgp_path_info *pi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1369,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1376,1
    - Dst: bgp_zebra_send_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1393,1
    - Dst: LIST_FOREACH
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1397,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1400,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1403,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - label
    - context
    - allocated
    argTypes:
    - mpls_label_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1364
    functionDepth: 2
    functionLinenumber: 1364
    functionLinenumberEnd: 1407
    functionName: bgp_mplsvpn_get_label_per_nexthop_cb
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - bgp_zebra_send_nexthop_label
    - zlog_debug
    - bgp_dest_table
    - vpn_leak_from_vrf_update
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int bgp_mplsvpn_get_label_per_nexthop_cb(mpls_label_t label,\n\t\t\t\t\t\tvoid
      *context, bool allocated)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1431,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1439,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1447,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1451,1
    - Dst: bgp_label_per_nexthop_find
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1452,1
    - Dst: bgp_label_per_nexthop_new
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1454,1
    - Dst: bgp_lp_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1459,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1469,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1472,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1475,1
    - Dst: nexthop_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1479,1
    - Dst: nexthop_same
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1480,1
    - Dst: nexthop_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1481,1
    - Dst: nexthop_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1482,1
    - Dst: bgp_zebra_send_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1484,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 5
    argNames:
    - pi
    - to_bgp
    - from_bgp
    - afi
    - safi
    argTypes:
    - struct bgp_path_info*
    - struct bgp*
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (!"Blackhole nexthop. Already checked by the caller.")
      pos:
        line_end: 1446
        line_start: 1446
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    constantsTouched: []
    func_position:
      end: 1492
      start: 1414
    functionDepth: 2
    functionLinenumber: 1414
    functionLinenumberEnd: 1492
    functionName: _vpn_leak_from_vrf_get_per_nexthop_label
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - nexthop_same
    - nexthop_free
    - bgp_label_per_nexthop_new
    - bgp_mplsvpn_path_nh_label_unlink
    - bgp_zebra_send_nexthop_label
    - LIST_INSERT_HEAD
    - monotime
    - nexthop_dup
    - IPV4_ADDR_COPY
    - bgp_lp_get
    - family2afi
    - bgp_label_per_nexthop_find
    - IPV6_ADDR_COPY
    - assert
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t _vpn_leak_from_vrf_get_per_nexthop_label(\n\tstruct bgp_path_info
      *pi, struct bgp *to_bgp, struct bgp *from_bgp,\n\tafi_t afi, safi_t safi)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1513,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1513,1
    - Dst: ipv4_unicast_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1515,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1520,1
    - Dst: ipv4_unicast_valid
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1527,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1532,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1539,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1540,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1541,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1546,1
    - Dst: BGP_ATTR_NH_AFI
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1558,1
    - Dst: bgp_find_or_add_nexthop
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1559,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1563,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1568,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1581,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1591,1
    - Dst: _vpn_leak_from_vrf_get_per_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1595,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 32
    argCount: 5
    argNames:
    - afi
    - safi
    - pi
    - from_bgp
    - to_bgp
    argTypes:
    - afi_t
    - safi_t
    - struct bgp_path_info*
    - struct bgp*
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1499
    functionDepth: 3
    functionLinenumber: 1499
    functionLinenumberEnd: 1597
    functionName: vpn_leak_from_vrf_get_per_nexthop_label
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 2
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - ipv4_unicast_valid
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - BGP_ATTR_NH_AFI
    - bgp_find_or_add_nexthop
    - IN6_IS_ADDR_LOOPBACK
    - bgp_mplsvpn_path_nh_label_unlink
    - IN6_IS_ADDR_MULTICAST
    - bgp_get_imported_bpi_ultimate
    - _vpn_leak_from_vrf_get_per_nexthop_label
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t vpn_leak_from_vrf_get_per_nexthop_label(\n\tafi_t afi,
      safi_t safi, struct bgp_path_info *pi, struct bgp *from_bgp,\n\tstruct bgp *to_bgp)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1604,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1605,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1606,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1617,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1619,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1620,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1621,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1624,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1626,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1634,1
    - Dst: is_route_injectable_into_vpn
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1639,1
    - Dst: vpn_leak_to_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1642,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1644,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1659,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1662,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1666,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1668,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1678,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1679,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1680,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1683,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1685,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1696,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1699,1
    - Dst: ecommunity_strip_rts
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1701,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1702,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1706,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1708,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1712,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1714,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1715,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1716,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1719,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1721,1
    - Dst: community_strip_accept_own
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1724,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1728,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1749,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1752,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1755,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1769,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1779,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1791,1
    - Dst: vpn_leak_from_vrf_get_per_nexthop_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1794,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1801,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1808,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1814,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1816,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1819,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1819,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1826,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1829,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1837,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1861,1
    - Dst: encode_label
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1868,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1870,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1874,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1890,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1896,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1898,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1900,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1901,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1901,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1904,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1905,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1910,1
    - Dst: leak_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1916,1
    - Dst: vpn_leak_to_vrf_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1929,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1931,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 136
    argCount: 3
    argNames:
    - to_bgp
    - from_bgp
    - path_vrf
    argTypes:
    - struct bgp*
    - struct bgp*
    - struct bgp_path_info*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1748
        line_start: 1748
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    constantsTouched: []
    func_position:
      end: 1932
      start: 1600
    functionDepth: 9
    functionLinenumber: 1600
    functionLinenumberEnd: 1932
    functionName: vpn_leak_from_vrf_update
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 7
    functionsReached:
    - community_strip_accept_own
    - BGP_DEBUG
    - bgp_attr_intern
    - memset
    - XCALLOC
    - bgp_dest_get_prefix
    - zlog_debug
    - ecommunity_merge
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - assert
    - ecommunity_dup
    - bgp_dest_unlock_node
    - bgp_afi_node_get
    - vpn_leak_to_vrf_update
    - ecommunity_ecom2str
    - bgp_attr_get_ecommunity
    - ecommunity_strip_rts
    - XFREE
    - family2afi
    - leak_update
    - encode_label
    - memcpy
    - ecommunity_free
    - vpn_leak_to_vpn_active
    - vpn_leak_from_vrf_get_per_nexthop_label
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_attr_flush
    - SET_FLAG
    - route_map_apply
    - bgp_attr_set_ecommunity
    - is_route_injectable_into_vpn
    linkageType: ''
    returnType: void
    signature: "void vpn_leak_from_vrf_update(struct bgp *to_bgp,\t     /* to */\n\t\t\t
      \     struct bgp *from_bgp,\t   /* from */\n\t\t\t      struct bgp_path_info
      *path_vrf)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1938,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1939,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1940,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1947,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1958,1
    - Dst: is_route_injectable_into_vpn
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1963,1
    - Dst: vpn_leak_to_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1966,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1968,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1973,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1975,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1984,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1992,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1994,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1995,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1996,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:1998,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 3
    argNames:
    - to_bgp
    - from_bgp
    - path_vrf
    argTypes:
    - struct bgp*
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1934
    functionDepth: 8
    functionLinenumber: 1934
    functionLinenumberEnd: 1999
    functionName: vpn_leak_from_vrf_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 9
    functionsReached:
    - vpn_leak_to_vpn_active
    - bgp_dest_unlock_node
    - bgp_afi_node_get
    - vpn_leak_to_vrf_withdraw
    - bgp_process
    - bgp_dest_get_prefix
    - bgp_path_info_delete
    - zlog_debug
    - bgp_dest_get_bgp_path_info
    - family2afi
    - BGP_DEBUG
    - is_route_injectable_into_vpn
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: void
    signature: "void vpn_leak_from_vrf_withdraw(struct bgp *to_bgp,\t\t/* to */\n\t\t\t\tstruct
      bgp *from_bgp,\t\t/* from */\n\t\t\t\tstruct bgp_path_info *path_vrf)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2004,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2011,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2012,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2019,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2024,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2024,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2025,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2027,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2033,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2044,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2047,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2048,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2049,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2051,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2052,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2053,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 3
    argNames:
    - to_bgp
    - from_bgp
    - afi
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2001
    functionDepth: 8
    functionLinenumber: 2001
    functionLinenumberEnd: 2059
    functionName: vpn_leak_from_vrf_withdraw_all
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - vpn_leak_to_vrf_withdraw
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_path_info_delete
    - zlog_debug
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - BGP_DEBUG
    - bgp_mplsvpn_path_nh_label_unlink
    - bgp_aggregate_decrement
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void vpn_leak_from_vrf_withdraw_all(struct bgp *to_bgp, struct bgp
      *from_bgp,\n\t\t\t\t    afi_t afi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2066,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2069,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2072,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2073,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2076,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2078,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2081,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2084,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - to_bgp
    - from_bgp
    - afi
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2061
    functionDepth: 10
    functionLinenumber: 2061
    functionLinenumberEnd: 2087
    functionName: vpn_leak_from_vrf_update_all
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - zlog_debug
    - vpn_leak_from_vrf_update
    - bgp_dest_get_bgp_path_info
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void vpn_leak_from_vrf_update_all(struct bgp *to_bgp, struct bgp *from_bgp,\n\t\t\t\t
      \ afi_t afi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2099,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2102,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2106,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - bpi
    - rd
    - afi
    argTypes:
    - struct bgp_path_info*
    - struct prefix_rd*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2089
    functionDepth: 1
    functionLinenumber: 2089
    functionLinenumberEnd: 2117
    functionName: bgp_lookup_by_rd
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS
    - CHECK_FLAG
    - memcmp
    linkageType: ''
    returnType: struct bgp
    signature: "struct bgp *bgp_lookup_by_rd(struct bgp_path_info *bpi,\n\t\t\t\t
      \   struct prefix_rd *rd, afi_t afi)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2124,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2125,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2141,1
    - Dst: vpn_leak_from_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2143,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2145,1
    - Dst: bgp_lookup_by_rd
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2159,1
    - Dst: ecommunity_include
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2169,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2171,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2173,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2181,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2186,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2187,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2190,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2197,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2207,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2208,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2210,1
    - Dst: ecommunity_strip_rts
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2211,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2212,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2215,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2216,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2220,1
    - Dst: community_strip_accept_own
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2223,1
    - Dst: NEXTHOP_FAMILY
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2232,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2234,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2245,1
    - Dst: if_get_vrf_loopback
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2257,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2274,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2288,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2292,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2296,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2309,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2314,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2315,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2331,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2334,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2343,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2359,1
    - Dst: leak_update
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2362,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2365,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 104
    argCount: 4
    argNames:
    - to_bgp
    - from_bgp
    - path_vpn
    - prd
    argTypes:
    - struct bgp*
    - struct bgp*
    - struct bgp_path_info*
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2119
    functionDepth: 9
    functionLinenumber: 2119
    functionLinenumberEnd: 2368
    functionName: vpn_leak_to_vrf_update_onevrf
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - memcmp
    - NEXTHOP_FAMILY
    - community_strip_accept_own
    - BGP_DEBUG
    - bgp_attr_intern
    - memset
    - bgp_dest_get_prefix
    - zlog_debug
    - bgp_get_imported_bpi_ultimate
    - if_get_vrf_loopback
    - bgp_dest_unlock_node
    - subgroup_announce_reset_nhop
    - bgp_afi_node_get
    - vpn_leak_from_vpn_active
    - bgp_attr_get_ecommunity
    - ecommunity_strip_rts
    - family2afi
    - ecommunity_include
    - leak_update
    - ecommunity_free
    - bgp_lookup_by_rd
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_attr_flush
    - bgp_dest_table
    - route_map_apply
    - prefix_rd2str
    - bgp_attr_set_ecommunity
    - ecommunity_dup
    linkageType: ''
    returnType: bool
    signature: "bool vpn_leak_to_vrf_update_onevrf(struct bgp *to_bgp,   /* to */\n\t\t\t\t\t
      \ struct bgp *from_bgp, /* from */\n\t\t\t\t\t  struct bgp_path_info *path_vpn,\n\t\t\t\t\t
      \ struct prefix_rd *prd)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2378,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2381,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2384,1
    - Dst: vpn_leak_to_vrf_update_onevrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2388,1
    - Dst: vpn_leak_to_vrf_withdraw
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2395,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2409,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2413,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2425,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2431,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2432,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2435,1
    - Dst: vpn_leak_from_vpn_active
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2436,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2438,1
    - Dst: ecommunity_include
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2445,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2448,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2454,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2457,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2459,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2470,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2472,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2473,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2474,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2476,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 42
    argCount: 3
    argNames:
    - from_bgp
    - path_vpn
    - prd
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2477
      start: 2370
    functionDepth: 10
    functionLinenumber: 2370
    functionLinenumberEnd: 2477
    functionName: vpn_leak_to_vrf_update
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 5
    functionsReached:
    - bgp_dest_unlock_node
    - ALL_LIST_ELEMENTS
    - vpn_leak_to_vrf_withdraw
    - bgp_afi_node_get
    - bgp_process
    - bgp_dest_get_prefix
    - vpn_leak_from_vpn_active
    - bgp_attr_get_ecommunity
    - bgp_path_info_delete
    - vpn_leak_to_vrf_update_onevrf
    - zlog_debug
    - bgp_dest_get_bgp_path_info
    - family2afi
    - BGP_DEBUG
    - ecommunity_include
    - bgp_aggregate_decrement
    linkageType: ''
    returnType: bool
    signature: "bool vpn_leak_to_vrf_update(struct bgp *from_bgp,\n\t\t\t    struct
      bgp_path_info *path_vpn,\n\t\t\t    struct prefix_rd *prd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2485,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2488,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2492,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2493,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2495,1
    - Dst: is_pi_family_vpn
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2499,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2502,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2503,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2505,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2506,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - to_bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2510
      start: 2480
    functionDepth: 8
    functionLinenumber: 2480
    functionLinenumberEnd: 2510
    functionName: vpn_leak_to_vrf_withdraw_all
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - bgp_aggregate_decrement
    - bgp_dest_get_prefix
    - bgp_path_info_delete
    - zlog_debug
    - bgp_dest_get_bgp_path_info
    - bgp_process
    - BGP_DEBUG
    - is_pi_family_vpn
    linkageType: ''
    returnType: void
    signature: void vpn_leak_to_vrf_withdraw_all(struct bgp *to_bgp, afi_t afi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2518,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2523,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2524,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2530,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2535,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2535,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2537,1
    - Dst: vpn_leak_to_vrf_update_onevrf
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2544,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - to_bgp
    - vpn_from
    - afi
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    assertStmts:
    - condition: (vpn_from)
      pos:
        line_end: 2517
        line_start: 2517
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    constantsTouched: []
    func_position:
      end: 2549
      start: 2512
    functionDepth: 10
    functionLinenumber: 2512
    functionLinenumberEnd: 2549
    functionName: vpn_leak_to_vrf_update_all
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - assert
    - bgp_table_top
    - vpn_leak_to_vrf_update_onevrf
    - bgp_dest_get_bgp_path_info
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void vpn_leak_to_vrf_update_all(struct bgp *to_bgp, struct bgp *vpn_from,\n\t\t\t\tafi_t
      afi)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2556,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2566,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2571,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2576,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2579,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2581,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2582,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2584,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2591,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2592,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2595,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2600,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2605,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2607,1
    - Dst: vpn_leak_prechange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2610,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2611,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2617,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:2618,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 2
    argNames:
    - bgp
    - rmap_name
    argTypes:
    - struct bgp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2621
      start: 2554
    functionDepth: 10
    functionLinenumber: 2554
    functionLinenumberEnd: 2621
    functionName: vpn_policy_routemap_update
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - strcmp
    - vpn_leak_prechange
    - afi2str
    - route_map_lookup_by_name
    - zlog_debug
    - vpn_leak_postchange
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void vpn_policy_routemap_update(struct bgp *bgp, const char *rmap_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3594,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3595,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3596,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3598,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3599,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3601,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3602,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3604,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3605,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3606,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3607,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3608,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3609,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3610,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3615
      start: 3592
    functionDepth: 1
    functionLinenumber: 3592
    functionLinenumberEnd: 3615
    functionName: bgp_mplsvpn_init
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 3
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void bgp_mplsvpn_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3626,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3629,1
    - Dst: ecommunity_include
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - eckey
    argTypes:
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3641
      start: 3617
    functionDepth: 1
    functionLinenumber: 3617
    functionLinenumberEnd: 3641
    functionName: get_first_vrf_for_redirect_with_rt
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 0
    functionsReached:
    - if
    - ALL_LIST_ELEMENTS
    - ecommunity_include
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t get_first_vrf_for_redirect_with_rt(struct ecommunity *eckey)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3663,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3665,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3668,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3673,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3679,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3687,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3692,1
    - Dst: vpn_leak_postchange
      Src: /src/frr/bgpd/bgp_mplsvpn.c:3698,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (bgp_default)
      pos:
        line_end: 3664
        line_start: 3664
        source_file: /src/frr/bgpd/bgp_mplsvpn.c
    constantsTouched: []
    func_position:
      end: 3704
      start: 3659
    functionDepth: 10
    functionLinenumber: 3659
    functionLinenumberEnd: 3704
    functionName: vpn_leak_postchange_all
    functionSourceFile: /src/frr/bgpd/bgp_mplsvpn.c
    functionUses: 1
    functionsReached:
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - vpn_leak_postchange
    - assert
    linkageType: ''
    returnType: void
    signature: void vpn_leak_postchange_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: ecommunity_new
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 3
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ecommunity
    signature: struct ecommunity *ecommunity_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: ecommunity_strfree
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ecommunity_strfree(char **s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:57,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:58,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: ecommunity_free
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 29
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ecommunity_free(struct ecommunity **ecom)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: ecommunity_hash_free
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void ecommunity_hash_free(struct ecommunity *ecom)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:91,1
    - Dst: ecom_length_size
      Src: /src/frr/bgpd/bgp_ecommunity.c:92,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:93,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:109,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:119,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_ecommunity.c:127,1
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:143,1
    - Dst: ecom_length_size
      Src: /src/frr/bgpd/bgp_ecommunity.c:144,1
    - Dst: memmove
      Src: /src/frr/bgpd/bgp_ecommunity.c:146,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:149,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 5
    argNames:
    - ecom
    - eval
    - unique
    - overwrite
    - ecom_size
    argTypes:
    - struct ecommunity*
    - void*
    - bool
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 153
    functionName: ecommunity_add_val_internal
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - memcmp
    - memmove
    - ecom_length_size
    - XREALLOC
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool ecommunity_add_val_internal(struct ecommunity *ecom,\n\t\t\t\t\tconst
      void *eval,\n\t\t\t\t\tbool unique, bool overwrite,\n\t\t\t\t\tuint8_t ecom_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_add_val_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ecom
    - eval
    - unique
    - overwrite
    argTypes:
    - struct ecommunity*
    - struct ecommunity_val*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 166
    functionName: ecommunity_add_val
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 6
    functionsReached:
    - ecommunity_add_val_internal
    linkageType: ''
    returnType: bool
    signature: "bool ecommunity_add_val(struct ecommunity *ecom, struct ecommunity_val
      *eval,\n\t\t       bool unique, bool overwrite)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_add_val_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ecom
    - eval
    - unique
    - overwrite
    argTypes:
    - struct ecommunity*
    - struct ecommunity_val_ipv6*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 174
    functionName: ecommunity_add_val_ipv6
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_add_val_internal
    linkageType: ''
    returnType: bool
    signature: "bool ecommunity_add_val_ipv6(struct ecommunity *ecom,\n\t\t\t     struct
      ecommunity_val_ipv6 *eval,\n\t\t\t     bool unique, bool overwrite)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_new::ecommunity_new
      Src: /src/frr/bgpd/bgp_ecommunity.c:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ecom
    - ecom_size
    argTypes:
    - struct ecommunity*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 196
    functionName: ecommunity_uniq_sort_internal
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_new::ecommunity_new
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *\necommunity_uniq_sort_internal(struct ecommunity
      *ecom,\n\t\t\t      unsigned short ecom_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_uniq_sort_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: ecommunity_uniq_sort
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - ecommunity_uniq_sort_internal
    linkageType: ''
    returnType: struct ecommunity
    signature: struct ecommunity *ecommunity_uniq_sort(struct ecommunity *ecom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_uniq_sort_internal::ecommunity_uniq_sort_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:228,1
    - Dst: ecommunity_intern
      Src: /src/frr/bgpd/bgp_ecommunity.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - pnt
    - length
    - size_ecom
    - disable_ieee_floating
    argTypes:
    - uint8_t*
    - unsigned short
    - unsigned short
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 231
    functionName: ecommunity_parse_internal
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_intern
    - ecommunity_uniq_sort_internal::ecommunity_uniq_sort_internal
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_parse_internal(uint8_t *pnt,\n\t\t\t\t\t\t
      \   unsigned short length,\n\t\t\t\t\t\t    unsigned short size_ecom,\n\t\t\t\t\t\t
      \   bool disable_ieee_floating)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_parse_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - pnt
    - length
    - disable_ieee_floating
    argTypes:
    - uint8_t*
    - unsigned short
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 238
    functionName: ecommunity_parse
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 2
    functionsReached:
    - ecommunity_parse_internal
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_parse(uint8_t *pnt, unsigned short length,\n\t\t\t\t
      \   bool disable_ieee_floating)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_parse_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - pnt
    - length
    - disable_ieee_floating
    argTypes:
    - uint8_t*
    - unsigned short
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 240
    functionDepth: 3
    functionLinenumber: 240
    functionLinenumberEnd: 245
    functionName: ecommunity_parse_ipv6
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - ecommunity_parse_internal
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_parse_ipv6(uint8_t *pnt, unsigned short
      length,\n\t\t\t\t\t bool disable_ieee_floating)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:252,1
    - Dst: size::size
      Src: /src/frr/bgpd/bgp_ecommunity.c:255,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:256,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:258,1
    - Dst: val::val
      Src: /src/frr/bgpd/bgp_ecommunity.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 263
    functionName: ecommunity_dup
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 14
    functionsReached:
    - XCALLOC::XCALLOC
    - XMALLOC
    - val::val
    - size::size
    - memcpy
    linkageType: ''
    returnType: struct ecommunity
    signature: struct ecommunity *ecommunity_dup(struct ecommunity *ecom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_ecommunity.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 272
    functionName: ecommunity_str
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 7
    functionsReached:
    - ecommunity_ecom2str
    linkageType: ''
    returnType: char
    signature: char *ecommunity_str(struct ecommunity *ecom)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:278,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ecom1
    - ecom2
    argTypes:
    - struct ecommunity*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 287
    functionName: ecommunity_merge
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 8
    functionsReached:
    - XREALLOC
    - memcpy
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_merge(struct ecommunity *ecom1,\n\t\t\t\t
      \   struct ecommunity *ecom2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_ecommunity.c:294,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_ecommunity.c:295,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:297,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/bgp_ecommunity.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity*
    assertStmts:
    - condition: (ecom->refcnt == 0)
      pos:
        line_end: 293
        line_start: 293
        source_file: /src/frr/bgpd/bgp_ecommunity.c
    constantsTouched: []
    func_position:
      end: 306
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 306
    functionName: ecommunity_intern
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 5
    functionsReached:
    - ecommunity_ecom2str
    - hash_get
    - assert
    - ecommunity_free
    linkageType: ''
    returnType: struct ecommunity
    signature: struct ecommunity *ecommunity_intern(struct ecommunity *ecom)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_ecommunity.c:322,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_ecommunity.c:323,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:325,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ecom
    argTypes:
    - struct ecommunity**
    assertStmts:
    - condition: (ret != NULL)
      pos:
        line_end: 322
        line_start: 322
        source_file: /src/frr/bgpd/bgp_ecommunity.c
    constantsTouched: []
    func_position:
      end: 327
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 327
    functionName: ecommunity_unintern
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 3
    functionsReached:
    - hash_release
    - assert
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void ecommunity_unintern(struct ecommunity **ecom)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_ecommunity.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 336
    functionName: ecommunity_hash_make
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ecommunity_hash_make(const void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_ecommunity.c:354,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 356
    functionName: ecommunity_cmp
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 10
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool ecommunity_cmp(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_ecommunity.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 363
    functionName: ecommunity_init
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 2
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void ecommunity_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: ecommunity_finish
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void ecommunity_finish(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum ecommunity_origin_validation_states
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 396
    functionName: ecommunity_origin_validation_state2str
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *ecommunity_origin_validation_state2str(\n\tenum ecommunity_origin_validation_states
      state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:413,1
    - Dst: ecommunity_origin_validation_state2str
      Src: /src/frr/bgpd/bgp_ecommunity.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buf
    - bufsz
    - ptr
    argTypes:
    - char*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 417
    functionName: ecommunity_origin_validation_state_str
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_origin_validation_state2str
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void ecommunity_origin_validation_state_str(char *buf, size_t bufsz,\n\t\t\t\t\t\t
      \  uint8_t *ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_ecommunity.c:439,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ecom
    - local_id
    argTypes:
    - struct ecommunity*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 446
    functionName: ecommunity_node_target_match
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: bool
    signature: "bool ecommunity_node_target_match(struct ecommunity *ecom,\n\t\t\t\t
      \ struct in_addr *local_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/bgpd/bgp_ecommunity.c:460,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_ecommunity.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - buf
    - bufsz
    - ptr
    - format
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 469
    functionName: ecommunity_node_target_str
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_COPY
    - snprintfrr
    linkageType: ''
    returnType: void
    signature: "void ecommunity_node_target_str(char *buf, size_t bufsz, uint8_t *ptr,\n\t\t\t\t
      \      int format)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_ecommunity.c:482,1
    - Dst: encode_route_target_as
      Src: /src/frr/bgpd/bgp_ecommunity.c:502,1
    - Dst: encode_node_target
      Src: /src/frr/bgpd/bgp_ecommunity.c:505,1
    - Dst: encode_route_target_ip
      Src: /src/frr/bgpd/bgp_ecommunity.c:507,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:510,1
    - Dst: encode_route_target_as4
      Src: /src/frr/bgpd/bgp_ecommunity.c:514,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 8
    argNames:
    - type
    - sub_type
    - trans
    - as
    - ip
    - ip6
    - val
    - eval_ptr
    argTypes:
    - uint8_t
    - uint8_t
    - int
    - as_t
    - struct in_addr*
    - struct in6_addr*
    - uint32_t
    - void*
    assertStmts:
    - condition: (eval)
      pos:
        line_end: 481
        line_start: 481
        source_file: /src/frr/bgpd/bgp_ecommunity.c
    constantsTouched: []
    func_position:
      end: 518
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 518
    functionName: ecommunity_encode_internal
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - assert
    - encode_node_target
    - encode_route_target_as4
    - encode_route_target_ip
    - encode_route_target_as
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int ecommunity_encode_internal(uint8_t type, uint8_t sub_type,\n\t\t\t\t
      \     int trans, as_t as,\n\t\t\t\t      struct in_addr *ip,\n\t\t\t\t      struct
      in6_addr *ip6,\n\t\t\t\t      uint32_t val,\n\t\t\t\t      void *eval_ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_encode_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - type
    - sub_type
    - trans
    - as
    - ip
    - val
    - eval
    argTypes:
    - uint8_t
    - uint8_t
    - int
    - as_t
    - struct in_addr
    - uint32_t
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 524
    functionDepth: 2
    functionLinenumber: 524
    functionLinenumberEnd: 530
    functionName: ecommunity_encode
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_encode_internal
    linkageType: ''
    returnType: int
    signature: "int ecommunity_encode(uint8_t type, uint8_t sub_type, int trans, as_t
      as,\n\t\t\t     struct in_addr ip, uint32_t val,\n\t\t\t     struct ecommunity_val
      *eval)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_ecommunity.c:552,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_ecommunity.c:562,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:564,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:566,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:568,1
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_ecommunity.c:574,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:581,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:583,1
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_ecommunity.c:588,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:595,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:597,1
    - Dst: tolower
      Src: /src/frr/bgpd/bgp_ecommunity.c:599,1
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_ecommunity.c:604,1
    - Dst: isspace
      Src: /src/frr/bgpd/bgp_ecommunity.c:610,1
    - Dst: strrchr
      Src: /src/frr/bgpd/bgp_ecommunity.c:638,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_ecommunity.c:644,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:656,1
    - Dst: inet_pton
      Src: /src/frr/bgpd/bgp_ecommunity.c:658,1
    - Dst: ecommunity_encode_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:663,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_ecommunity.c:669,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_ecommunity.c:674,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.c:684,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:685,1
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_ecommunity.c:691,1
    - Dst: strtoul
      Src: /src/frr/bgpd/bgp_ecommunity.c:697,1
    - Dst: ecommunity_encode
      Src: /src/frr/bgpd/bgp_ecommunity.c:739,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 152
    argCount: 4
    argNames:
    - str
    - eval_ptr
    - token
    - type
    argTypes:
    - char*
    - void*
    - enum ecommunity_token*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 533
    functionDepth: 3
    functionLinenumber: 533
    functionLinenumberEnd: 747
    functionName: ecommunity_gettoken
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strtoul
    - memset
    - inet_aton
    - ecommunity_encode_internal
    - strrchr
    - inet_pton
    - isspace
    - ecommunity_encode
    - tolower
    - memcpy
    linkageType: ''
    returnType: char
    signature: "char *ecommunity_gettoken(const char *str, void *eval_ptr,\n\t\t\t\t
      \      enum ecommunity_token *token, int type)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_gettoken
      Src: /src/frr/bgpd/bgp_ecommunity.c:760,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:768,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:787,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/bgp_ecommunity.c:793,1
    - Dst: ecommunity_add_val_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:795,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:802,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/bgp_ecommunity.c:808,1
    - Dst: ecommunity_add_val_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:811,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:816,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 4
    argNames:
    - str
    - type
    - keyword_included
    - is_ipv6_extcomm
    argTypes:
    - char*
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 749
    functionDepth: 4
    functionLinenumber: 749
    functionLinenumberEnd: 821
    functionName: ecommunity_str2com_internal
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_add_val_internal
    - ecommunity_new
    - ecommunity_gettoken
    - ecommunity_free
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_str2com_internal(const char *str, int
      type,\n\t\t\t\t\t\t      int keyword_included,\n\t\t\t\t\t\t      bool is_ipv6_extcomm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str2com_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - type
    - keyword_included
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 849
    functionDepth: 5
    functionLinenumber: 849
    functionLinenumberEnd: 854
    functionName: ecommunity_str2com
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 7
    functionsReached:
    - ecommunity_str2com_internal
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_str2com(const char *str, int type,\n\t\t\t\t
      \     int keyword_included)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str2com_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - type
    - keyword_included
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 856
    functionDepth: 5
    functionLinenumber: 856
    functionLinenumberEnd: 861
    functionName: ecommunity_str2com_ipv6
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - ecommunity_str2com_internal
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_str2com_ipv6(const char *str, int type,\n\t\t\t\t\t
      \  int keyword_included)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_ecommunity.c:895,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:899,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_ecommunity.c:904,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:906,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:912,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_ecommunity.c:917,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:919,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:923,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_ecommunity.c:928,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 7
    argNames:
    - buf
    - bufsz
    - pnt
    - type
    - sub_type
    - format
    - ecom_size
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - int
    - int
    - int
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 863
    functionDepth: 1
    functionLinenumber: 863
    functionLinenumberEnd: 936
    functionName: ecommunity_rt_soo_str_internal
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - snprintf
    - snprintfrr
    - ptr_get_be32
    - inet_ntop
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int ecommunity_rt_soo_str_internal(char *buf, size_t bufsz,\n\t\t\t\t\t
      \ const uint8_t *pnt, int type,\n\t\t\t\t\t  int sub_type, int format,\n\t\t\t\t\t
      \ unsigned short ecom_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_rt_soo_str_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - buf
    - bufsz
    - pnt
    - type
    - sub_type
    - format
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 938
    functionDepth: 2
    functionLinenumber: 938
    functionLinenumberEnd: 944
    functionName: ecommunity_rt_soo_str
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_rt_soo_str_internal
    linkageType: ''
    returnType: int
    signature: "int ecommunity_rt_soo_str(char *buf, size_t bufsz, const uint8_t *pnt,\n\t\t\t\t
      int type, int sub_type, int format)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - u
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 955
    functionName: ieee_float_uint32_to_uint32
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ieee_float_uint32_to_uint32(uint32_t u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_ecommunity.c:971,1
    - Dst: ieee_float_uint32_to_uint32
      Src: /src/frr/bgpd/bgp_ecommunity.c:974,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:977,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:980,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:983,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:986,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:988,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - buf
    - bufsz
    - pnt
    - disable_ieee_floating
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 990
    functionName: ecommunity_lb_str
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - snprintf
    - ieee_float_uint32_to_uint32
    linkageType: ''
    returnType: int
    signature: "int ecommunity_lb_str(char *buf, size_t bufsz, const uint8_t *pnt,\n\t\t\t
      \    bool disable_ieee_floating)"
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:1023,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:1027,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.c:1033,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_ecommunity.c:1037,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_ecommunity.c:1056,1
    - Dst: ecommunity_lb_str
      Src: /src/frr/bgpd/bgp_ecommunity.c:1061,1
    - Dst: ecommunity_node_target_str
      Src: /src/frr/bgpd/bgp_ecommunity.c:1066,1
    - Dst: ecommunity_rt_soo_str
      Src: /src/frr/bgpd/bgp_ecommunity.c:1072,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1081,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_ecommunity.c:1082,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1084,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1087,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1098,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1100,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1113,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_ecommunity.c:1114,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_ecommunity.c:1119,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_ecommunity.c:1122,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_ecommunity.c:1127,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1130,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_ecommunity.c:1132,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1135,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1142,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1143,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1156,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1168,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_ecommunity.c:1169,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1170,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_ecommunity.c:1171,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1174,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1179,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1187,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.c:1199,1
    - Dst: ecommunity_rt_soo_str_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:1200,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1207,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.c:1212,1
    - Dst: ecommunity_rt_soo_str_internal
      Src: /src/frr/bgpd/bgp_ecommunity.c:1213,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1220,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_ecommunity.c:1225,1
    - Dst: ecommunity_rt_soo_str
      Src: /src/frr/bgpd/bgp_ecommunity.c:1226,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1232,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1234,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1243,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1246,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_ecommunity.c:1251,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1255,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1264,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1267,1
    - Dst: ecommunity_lb_str
      Src: /src/frr/bgpd/bgp_ecommunity.c:1274,1
    - Dst: ecommunity_node_target_str
      Src: /src/frr/bgpd/bgp_ecommunity.c:1281,1
    - Dst: ecommunity_origin_validation_state_str
      Src: /src/frr/bgpd/bgp_ecommunity.c:1288,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_ecommunity.c:1298,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_ecommunity.c:1301,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_ecommunity.c:1302,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 156
    argCount: 3
    argNames:
    - ecom
    - format
    - filter
    argTypes:
    - struct ecommunity*
    - int
    - int
    assertStmts:
    - condition: (r < str_size)
      pos:
        line_end: 1301
        line_start: 1301
        source_file: /src/frr/bgpd/bgp_ecommunity.c
    constantsTouched: []
    func_position:
      end: 1306
      start: 1013
    functionDepth: 3
    functionLinenumber: 1013
    functionLinenumberEnd: 1306
    functionName: ecommunity_ecom2str
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 14
    functionsReached:
    - strlcat
    - assert
    - ecommunity_rt_soo_str
    - memset
    - XCALLOC
    - snprintf
    - strlcpy
    - CHECK_FLAG
    - ecommunity_node_target_str
    - snprintfrr
    - ecommunity_rt_soo_str_internal
    - ntohs
    - ecommunity_origin_validation_state_str
    - ecommunity_lb_str
    - ntohl
    - memcpy
    linkageType: ''
    returnType: char
    signature: char *ecommunity_ecom2str(struct ecommunity *ecom, int format, int
      filter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_ecommunity.c:1316,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - struct ecommunity*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1323
    functionName: ecommunity_include
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 6
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool ecommunity_include(struct ecommunity *e1, struct ecommunity *e2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_ecommunity.c:1342,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - ecom1
    - ecom2
    argTypes:
    - struct ecommunity*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1325
    functionDepth: 0
    functionLinenumber: 1325
    functionLinenumberEnd: 1354
    functionName: ecommunity_match
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 4
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool ecommunity_match(const struct ecommunity *ecom1,\n\t\t      const
      struct ecommunity *ecom2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - ecom
    - type
    - subtype
    argTypes:
    - struct ecommunity*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1357
    functionDepth: 0
    functionLinenumber: 1357
    functionLinenumberEnd: 1373
    functionName: ecommunity_lookup
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: struct ecommunity_val
    signature: "struct ecommunity_val *ecommunity_lookup(const struct ecommunity *ecom,\n\t\t\t\t\t\tuint8_t
      type, uint8_t subtype)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:1402,1
    - Dst: XMALLOC::XMALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:1408,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1413,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:1417,1
    - Dst: ecom::ecom
      Src: /src/frr/bgpd/bgp_ecommunity.c:1418,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - ecom
    - type
    - subtype
    argTypes:
    - struct ecommunity*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1378
    functionDepth: 0
    functionLinenumber: 1378
    functionLinenumberEnd: 1421
    functionName: ecommunity_strip
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - memcpy
    - ecom::ecom
    - XMALLOC::XMALLOC
    - XFREE
    linkageType: ''
    returnType: bool
    signature: "bool ecommunity_strip(struct ecommunity *ecom, uint8_t type,\n\t\t
      \     uint8_t subtype)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_ecommunity.c:1437,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_ecommunity.c:1448,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1450,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_ecommunity.c:1452,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:1455,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_ecommunity.c:1458,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ecom
    - eval
    argTypes:
    - struct ecommunity*
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1427
    functionDepth: 0
    functionLinenumber: 1427
    functionLinenumberEnd: 1461
    functionName: ecommunity_del_val
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XFREE
    - XMALLOC
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool ecommunity_del_val(struct ecommunity *ecom, struct ecommunity_val
      *eval)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - ecom_eval
    - api
    - afi
    argTypes:
    - struct ecommunity_val*
    - struct bgp_pbr_entry_action*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1463
    functionDepth: 0
    functionLinenumber: 1463
    functionLinenumberEnd: 1512
    functionName: ecommunity_fill_pbr_action
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ecommunity_fill_pbr_action(struct ecommunity_val *ecom_eval,\n\t\t\t
      \      struct bgp_pbr_entry_action *api,\n\t\t\t       afi_t afi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - aggregate
    - ecommunity
    argTypes:
    - struct bgp_aggregate*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1514
    functionDepth: 1
    functionLinenumber: 1514
    functionLinenumberEnd: 1519
    functionName: bgp_aggr_ecommunity_lookup
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *bgp_aggr_ecommunity_lookup(\n\t\t\t\t\t\tstruct
      bgp_aggregate *aggregate,\n\t\t\t\t\t\tstruct ecommunity *ecommunity)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1528
    functionName: bgp_aggr_ecommunty_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_dup
    linkageType: ''
    returnType: void
    signature: void *bgp_aggr_ecommunty_hash_alloc(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_ecommunity.c:1536,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1530
    functionDepth: 1
    functionLinenumber: 1530
    functionLinenumberEnd: 1540
    functionName: bgp_aggr_ecommunity_prepare
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_dup
    - ecommunity_merge
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_ecommunity_prepare(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:1546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1542
    functionDepth: 1
    functionLinenumber: 1542
    functionLinenumberEnd: 1547
    functionName: bgp_aggr_ecommunity_remove
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 0
    functionsReached:
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void bgp_aggr_ecommunity_remove(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_compute_aggregate_ecommunity_hash
      Src: /src/frr/bgpd/bgp_ecommunity.c:1552,1
    - Dst: bgp_compute_aggregate_ecommunity_val
      Src: /src/frr/bgpd/bgp_ecommunity.c:1553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - aggregate
    - ecommunity
    argTypes:
    - struct bgp_aggregate*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1549
    functionDepth: 1
    functionLinenumber: 1549
    functionLinenumberEnd: 1554
    functionName: bgp_compute_aggregate_ecommunity
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 2
    functionsReached:
    - bgp_compute_aggregate_ecommunity_val
    - bgp_compute_aggregate_ecommunity_hash
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_ecommunity(struct bgp_aggregate *aggregate,\n\t\t\t\t
      \     struct ecommunity *ecommunity)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_ecommunity.c:1568,1
    - Dst: bgp_aggr_ecommunity_lookup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1572,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_ecommunity.c:1576,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - aggregate
    - ecommunity
    argTypes:
    - struct bgp_aggregate*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1557
    functionDepth: 2
    functionLinenumber: 1557
    functionLinenumberEnd: 1584
    functionName: bgp_compute_aggregate_ecommunity_hash
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 3
    functionsReached:
    - hash_create
    - bgp_aggr_ecommunity_lookup
    - hash_get
    linkageType: ''
    returnType: void
    signature: "void bgp_compute_aggregate_ecommunity_hash(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \  struct ecommunity *ecommunity)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:1596,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_ecommunity.c:1599,1
    - Dst: ecommunity_uniq_sort
      Src: /src/frr/bgpd/bgp_ecommunity.c:1603,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:1605,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - aggregate
    argTypes:
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1586
    functionDepth: 3
    functionLinenumber: 1586
    functionLinenumberEnd: 1607
    functionName: bgp_compute_aggregate_ecommunity_val
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 3
    functionsReached:
    - hash_iterate
    - ecommunity_uniq_sort
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void bgp_compute_aggregate_ecommunity_val(struct bgp_aggregate *aggregate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_ecommunity_lookup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1622,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_ecommunity.c:1627,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:1629,1
    - Dst: bgp_compute_aggregate_ecommunity_val
      Src: /src/frr/bgpd/bgp_ecommunity.c:1630,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - aggregate
    - ecommunity
    argTypes:
    - struct bgp_aggregate*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1609
    functionDepth: 4
    functionLinenumber: 1609
    functionLinenumberEnd: 1633
    functionName: bgp_remove_ecommunity_from_aggregate
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 2
    functionsReached:
    - hash_release
    - bgp_aggr_ecommunity_lookup
    - bgp_compute_aggregate_ecommunity_val
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_ecommunity_from_aggregate(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \ struct ecommunity *ecommunity)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_aggr_ecommunity_lookup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1649,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_ecommunity.c:1654,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:1656,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - aggregate
    - ecommunity
    argTypes:
    - struct bgp_aggregate*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1659
      start: 1635
    functionDepth: 2
    functionLinenumber: 1635
    functionLinenumberEnd: 1659
    functionName: bgp_remove_ecomm_from_aggregate_hash
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 2
    functionsReached:
    - hash_release
    - bgp_aggr_ecommunity_lookup
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: "void bgp_remove_ecomm_from_aggregate_hash(struct bgp_aggregate *aggregate,\n\t\t\t\t\t
      \ struct ecommunity *ecommunity)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: encode_origin_validation_state
      Src: /src/frr/bgpd/bgp_ecommunity.c:1669,1
    - Dst: ecommunity_dup::ecommunity_dup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1672,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_ecommunity.c:1675,1
    - Dst: ecommunity_dup::ecommunity_dup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - rpki_state
    - old
    argTypes:
    - enum rpki_states
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1661
    functionDepth: 1
    functionLinenumber: 1661
    functionLinenumberEnd: 1684
    functionName: ecommunity_add_origin_validation_state
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - encode_origin_validation_state
    - ecommunity_dup::ecommunity_dup
    - ecommunity_free
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *\necommunity_add_origin_validation_state(enum rpki_states
      rpki_state,\n\t\t\t\t       struct ecommunity *old)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_ecommunity.c:1714,1
    - Dst: ieee_float_uint32_to_uint32
      Src: /src/frr/bgpd/bgp_ecommunity.c:1719,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - ecom
    - bw
    argTypes:
    - struct ecommunity*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1726
      start: 1690
    functionDepth: 1
    functionLinenumber: 1690
    functionLinenumberEnd: 1726
    functionName: ecommunity_linkbw_present
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 2
    functionsReached:
    - ptr_get_be32
    - ieee_float_uint32_to_uint32
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *ecommunity_linkbw_present(struct ecommunity *ecom, uint32_t
      *bw)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecom::ecom
      Src: /src/frr/bgpd/bgp_ecommunity.c:1742,1
    - Dst: ecommunity_linkbw_present
      Src: /src/frr/bgpd/bgp_ecommunity.c:1746,1
    - Dst: encode_lb_extcomm
      Src: /src/frr/bgpd/bgp_ecommunity.c:1761,1
    - Dst: ecommunity_dup::ecommunity_dup
      Src: /src/frr/bgpd/bgp_ecommunity.c:1763,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - as
    - ecom
    - cum_bw
    - disable_ieee_floating
    argTypes:
    - as_t
    - struct ecommunity*
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1729
    functionDepth: 2
    functionLinenumber: 1729
    functionLinenumberEnd: 1767
    functionName: ecommunity_replace_linkbw
    functionSourceFile: /src/frr/bgpd/bgp_ecommunity.c
    functionUses: 1
    functionsReached:
    - ecommunity_dup::ecommunity_dup
    - ecommunity_linkbw_present
    - ecom::ecom
    - encode_lb_extcomm
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *ecommunity_replace_linkbw(as_t as, struct ecommunity
      *ecom,\n\t\t\t\t\t     uint64_t cum_bw,\n\t\t\t\t\t     bool disable_ieee_floating)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: com_length
    functionSourceFile: /src/frr/bgpd/bgp_community.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: com_length(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: com_lastval
    functionSourceFile: /src/frr/bgpd/bgp_community.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: com_lastval(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: com_nthval
    functionSourceFile: /src/frr/bgpd/bgp_community.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: com_nthval(X,n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_community.h:106,1
    - Dst: community_include
      Src: /src/frr/bgpd/bgp_community.h:110,1
    - Dst: community_dup
      Src: /src/frr/bgpd/bgp_community.h:111,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_community.h:112,1
    - Dst: community_del_val
      Src: /src/frr/bgpd/bgp_community.h:113,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.h:116,1
    - Dst: community_free
      Src: /src/frr/bgpd/bgp_community.h:119,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_community.h:120,1
    - Dst: bgp_attr_set_community
      Src: /src/frr/bgpd/bgp_community.h:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 125
    functionName: community_strip_accept_own
    functionSourceFile: /src/frr/bgpd/bgp_community.h
    functionUses: 3
    functionsReached:
    - bgp_attr_set_community
    - community_include
    - community_free
    - community_del_val
    - community_dup
    - htonl
    - bgp_attr_get_community
    linkageType: ''
    returnType: void
    signature: void community_strip_accept_own(struct attr *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pnt
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 41
    functionName: decode_rd_type
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t decode_rd_type(const uint8_t *pnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/bgpd/bgp_rd.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v
    - pnt
    argTypes:
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: encode_rd_type
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: void encode_rd_type(uint16_t v, uint8_t *pnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_rd.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pnt
    - rd_as
    argTypes:
    - uint8_t*
    - struct rd_as*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: decode_rd_as
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 2
    functionsReached:
    - ptr_get_be32
    linkageType: ''
    returnType: void
    signature: void decode_rd_as(const uint8_t *pnt, struct rd_as *rd_as)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_rd.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pnt
    - rd_as
    argTypes:
    - uint8_t*
    - struct rd_as*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: decode_rd_as4
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 2
    functionsReached:
    - ptr_get_be32
    linkageType: ''
    returnType: void
    signature: void decode_rd_as4(const uint8_t *pnt, struct rd_as *rd_as)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_rd.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pnt
    - rd_ip
    argTypes:
    - uint8_t*
    - struct rd_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: decode_rd_ip
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 2
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void decode_rd_ip(const uint8_t *pnt, struct rd_ip *rd_ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_rd.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pnt
    - rd_vnc_eth
    argTypes:
    - uint8_t*
    - struct rd_vnc_eth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: decode_rd_vnc_eth
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void decode_rd_vnc_eth(const uint8_t *pnt, struct rd_vnc_eth *rd_vnc_eth)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/bgpd/bgp_rd.c:96,1
    - Dst: strchr
      Src: /src/frr/bgpd/bgp_rd.c:101,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rd.c:104,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_rd.c:105,1
    - Dst: atoi
      Src: /src/frr/bgpd/bgp_rd.c:107,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rd.c:111,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rd.c:112,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_rd.c:113,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rd.c:117,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_rd.c:118,1
    - Dst: all_digit
      Src: /src/frr/bgpd/bgp_rd.c:121,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_rd.c:124,1
    - Dst: asn_str2asn
      Src: /src/frr/bgpd/bgp_rd.c:127,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_rd.c:129,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_rd.c:130,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_rd.c:131,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_rd.c:131,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_rd.c:135,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_rd.c:136,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_rd.c:137,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_rd.c:137,1
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_rd.c:141,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_rd.c:142,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_rd.c:143,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_rd.c:144,1
    - Dst: atol
      Src: /src/frr/bgpd/bgp_rd.c:144,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_rd.c:149,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_rd.c:154,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rd.c:155,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 2
    argNames:
    - str
    - prd
    argTypes:
    - char*
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 157
    functionName: str2prefix_rd
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 5
    functionsReached:
    - stream_free
    - stream_new
    - atol
    - inet_aton
    - XMALLOC
    - stream_putw
    - strchr
    - asn_str2asn
    - XFREE
    - all_digit
    - stream_put_in_addr
    - atoi
    - memcpy
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int str2prefix_rd(const char *str, struct prefix_rd *prd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_rd.c:168,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/bgp_rd.c:172,1
    - Dst: decode_rd_as
      Src: /src/frr/bgpd/bgp_rd.c:175,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_rd.c:176,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_rd.c:176,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_rd.c:178,1
    - Dst: decode_rd_as4
      Src: /src/frr/bgpd/bgp_rd.c:181,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_rd.c:182,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_rd.c:182,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_rd.c:184,1
    - Dst: decode_rd_ip
      Src: /src/frr/bgpd/bgp_rd.c:187,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_rd.c:188,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_rd.c:193,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_rd.c:203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 4
    argNames:
    - prd
    - buf
    - size
    - asnotation
    argTypes:
    - struct prefix_rd*
    - char*
    - size_t
    - enum asnotation_mode
    assertStmts:
    - condition: (size >= RD_ADDRSTRLEN)
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/frr/bgpd/bgp_rd.c
    constantsTouched: []
    func_position:
      end: 205
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 205
    functionName: prefix_rd2str
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 8
    functionsReached:
    - decode_rd_as
    - snprintf
    - decode_rd_as4
    - snprintfrr
    - decode_rd_ip
    - ASN_FORMAT
    - decode_rd_type
    - assert
    linkageType: ''
    returnType: char
    signature: "char *prefix_rd2str(const struct prefix_rd *prd, char *buf, size_t
      size,\n\t\t    enum asnotation_mode asnotation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_rd.c:215,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_rd.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - router_id
    - rd_id
    - prd
    argTypes:
    - struct in_addr
    - uint16_t
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 217
    functionName: form_auto_rd
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 1
    functionsReached:
    - snprintfrr
    - str2prefix_rd
    linkageType: ''
    returnType: void
    signature: "void form_auto_rd(struct in_addr router_id,\n\t\t  uint16_t rd_id,\n\t\t
      \ struct prefix_rd *prd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/bgpd/bgp_rd.c:227,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_rd.c:229,1
    - Dst: bputs
      Src: /src/frr/bgpd/bgp_rd.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - buf
    - ea
    - ptr
    - asnotation
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 232
    functionName: printfrr_prd_asnotation
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 0
    functionsReached:
    - bputs
    - prefix_rd2str
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_prd_asnotation(struct fbuf *buf,\n\t\t\t\t       struct
      printfrr_eargs *ea,\n\t\t\t\t       const void *ptr,\n\t\t\t\t       enum asnotation_mode
      asnotation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_prd_asnotation
      Src: /src/frr/bgpd/bgp_rd.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 239
    functionName: printfrr_prd
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 0
    functionsReached:
    - printfrr_prd_asnotation
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_prd(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \   const void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_prd_asnotation
      Src: /src/frr/bgpd/bgp_rd.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 246
    functionName: printfrr_prd_dot
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 0
    functionsReached:
    - printfrr_prd_asnotation
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_prd_dot(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_prd_asnotation
      Src: /src/frr/bgpd/bgp_rd.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 249
    functionDepth: 4
    functionLinenumber: 249
    functionLinenumberEnd: 253
    functionName: printfrr_prd_dotplus
    functionSourceFile: /src/frr/bgpd/bgp_rd.c
    functionUses: 0
    functionsReached:
    - printfrr_prd_asnotation
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_prd_dotplus(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t    const void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - peer
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 14
    functionName: PEER_IS_MULTIHOP
    functionSourceFile: /src/frr/bgpd/bgp_bfd.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PEER_IS_MULTIHOP(peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: bgp_pbr_rule_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_rule_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 94
    functionName: bgp_pbr_action_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_action_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 109
    functionName: bgp_pbr_match_entry_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_match_entry_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/bgpd/bgp_pbr.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 129
    functionName: bgp_pbr_match_pername_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_match_pername_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: bgp_pbr_match_iptable_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_match_iptable_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 162
    functionName: bgp_pbr_match_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_match_walkcb(struct hash_bucket *bucket, void *arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:172,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:177,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:182,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:188,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:193,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:198,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:203,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:207,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 4
    argNames:
    - str
    - len
    - mval
    - prepend
    argTypes:
    - char*
    - int
    - struct bgp_pbr_match_val*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 209
    functionName: snprintf_bgp_pbr_match_val
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int snprintf_bgp_pbr_match_val(char *str, int len,\n\t\t\t\t      struct
      bgp_pbr_match_val *mval,\n\t\t\t\t      const char *prepend)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _ptr
    - ','
    - _cnt
    - ','
    - _len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 221
    functionName: INCREMENT_DISPLAY
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INCREMENT_DISPLAY(_ptr, _cnt, _len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:301,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_pbr.c:315,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 25
    argCount: 5
    argNames:
    - unary_operator
    - and_valmask
    - or_valmask
    - value
    - type_entry
    argTypes:
    - uint8_t
    - struct bgp_pbr_val_mask*
    - struct list*
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 320
    functionName: bgp_pbr_extract_enumerate_unary_opposite
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - listnode_add
    - XCALLOC
    linkageType: ''
    returnType: bool
    signature: "bool bgp_pbr_extract_enumerate_unary_opposite(\n\t\t\t\t uint8_t unary_operator,\n\t\t\t\t
      struct bgp_pbr_val_mask *and_valmask,\n\t\t\t\t struct list *or_valmask, uint32_t
      value,\n\t\t\t\t uint8_t type_entry)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:340,1
    - Dst: bgp_pbr_extract_enumerate_unary_opposite
      Src: /src/frr/bgpd/bgp_pbr.c:357,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:372,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_pbr.c:385,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 40
    argCount: 5
    argNames:
    - list
    - num
    - unary_operator
    - valmask
    - type_entry
    argTypes:
    - struct bgp_pbr_match_val[]
    - int
    - uint8_t
    - void*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 392
    functionName: bgp_pbr_extract_enumerate_unary
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - listnode_add
    - XCALLOC
    - memset
    - bgp_pbr_extract_enumerate_unary_opposite
    linkageType: ''
    returnType: bool
    signature: "bool bgp_pbr_extract_enumerate_unary(struct bgp_pbr_match_val list[],\n\t\t\t\t\t
      \   int num, uint8_t unary_operator,\n\t\t\t\t\t    void *valmask, uint8_t type_entry)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_pbr_extract_enumerate_unary
      Src: /src/frr/bgpd/bgp_pbr.c:411,1
    - Dst: bgp_pbr_extract_enumerate_unary
      Src: /src/frr/bgpd/bgp_pbr.c:414,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - list
    - num
    - unary_operator
    - valmask
    - type_entry
    argTypes:
    - struct bgp_pbr_match_val[]
    - int
    - uint8_t
    - void*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 397
    functionDepth: 3
    functionLinenumber: 397
    functionLinenumberEnd: 419
    functionName: bgp_pbr_extract_enumerate
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_pbr_extract_enumerate_unary
    linkageType: ''
    returnType: bool
    signature: "bool bgp_pbr_extract_enumerate(struct bgp_pbr_match_val list[],\n\t\t\t\t
      \     int num, uint8_t unary_operator,\n\t\t\t\t      void *valmask, uint8_t
      type_entry)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - list
    - num
    argTypes:
    - struct bgp_pbr_match_val[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 443
    functionName: bgp_pbr_match_val_get_operator
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t bgp_pbr_match_val_get_operator(struct bgp_pbr_match_val list[],\n\t\t\t\t\t
      \     int num)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:456,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 33
    argCount: 3
    argNames:
    - list
    - num
    - range
    argTypes:
    - struct bgp_pbr_match_val[]
    - int
    - struct bgp_pbr_range_port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 493
    functionName: bgp_pbr_extract
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: bool
    signature: "bool bgp_pbr_extract(struct bgp_pbr_match_val list[],\n\t\t\t    int
      num,\n\t\t\t    struct bgp_pbr_range_port *range)"
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:500,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:501,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:514,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:515,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:521,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:522,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:531,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:532,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:536,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:537,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:538,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:541,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:542,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:543,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:546,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:551,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:552,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:555,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:556,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:560,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:561,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:566,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:567,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:571,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:572,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:576,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:577,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:581,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:582,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:583,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:589,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:592,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:598,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:599,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:604,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:607,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:608,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:614,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:615,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:619,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:623,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:624,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:628,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:629,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:637,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:651,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:659,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:666,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:670,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:673,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:674,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:686,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:687,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:693,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:694,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:704,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:705,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:706,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:711,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:712,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:713,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:718,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:719,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:720,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:728,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:729,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:730,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 159
    argCount: 1
    argNames:
    - api
    argTypes:
    - struct bgp_pbr_entry_main*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 495
    functionDepth: 4
    functionLinenumber: 495
    functionLinenumberEnd: 735
    functionName: bgp_pbr_validate_policy_route
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - snprintf
    - bgp_pbr_print_policy_route
    - bgp_pbr_extract_enumerate
    - zlog_debug
    - zlog_warn
    - BGP_DEBUG
    - bgp_pbr_extract
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_validate_policy_route(struct bgp_pbr_entry_main *api)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_pbr.c:752,1
    - Dst: bgp_flowspec_match_rules_fill
      Src: /src/frr/bgpd/bgp_pbr.c:755,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_pbr.c:760,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_pbr.c:761,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:767,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_pbr.c:768,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/bgp_pbr.c:786,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:789,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/bgp_pbr.c:794,1
    - Dst: get_first_vrf_for_redirect_with_rt
      Src: /src/frr/bgpd/bgp_pbr.c:799,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_pbr.c:801,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_pbr.c:827,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:838,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:856,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:873,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:882,1
    - Dst: ecommunity_fill_pbr_action
      Src: /src/frr/bgpd/bgp_pbr.c:893,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_pbr.c:905,1
    - Dst: bgp_attr_get_ipv6_ecommunity
      Src: /src/frr/bgpd/bgp_pbr.c:908,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:914,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_pbr.c:915,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/bgp_pbr.c:926,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:930,1
    - Dst: ecommunity_add_val_ipv6
      Src: /src/frr/bgpd/bgp_pbr.c:933,1
    - Dst: get_first_vrf_for_redirect_with_rt
      Src: /src/frr/bgpd/bgp_pbr.c:937,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_pbr.c:939,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:949,1
    - Dst: bgp_pbr_validate_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:957,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_pbr.c:963,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_pbr.c:968,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:969,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:970,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:971,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_pbr.c:972,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 125
    argCount: 3
    argNames:
    - p
    - path
    - api
    argTypes:
    - struct prefix*
    - struct bgp_path_info*
    - struct bgp_pbr_entry_main*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 739
    functionDepth: 5
    functionLinenumber: 739
    functionLinenumberEnd: 978
    functionName: bgp_pbr_build_and_validate_entry
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - bgp_attr_get_ipv6_ecommunity
    - ecommunity_new
    - memset
    - bgp_pbr_print_policy_route
    - bgp_pbr_validate_policy_route
    - bgp_attr_get_ecommunity
    - ecommunity_fill_pbr_action
    - get_first_vrf_for_redirect_with_rt
    - memcmp
    - flog_err
    - zlog_debug
    - ecommunity_add_val
    - family2afi
    - BGP_DEBUG
    - bgp_flowspec_match_rules_fill
    - ecommunity_add_val_ipv6
    - memcpy
    - ecommunity_free
    linkageType: ''
    returnType: int
    signature: "int bgp_pbr_build_and_validate_entry(const struct prefix *p,\n\t\t\t\t
      \    struct bgp_path_info *path,\n\t\t\t\t     struct bgp_pbr_entry_main *api)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_send_pbr_ipset_entry_match
      Src: /src/frr/bgpd/bgp_pbr.c:987,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 980
    functionDepth: 3
    functionLinenumber: 980
    functionLinenumberEnd: 992
    functionName: bgp_pbr_match_entry_free
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    - bgp_send_pbr_ipset_entry_match
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_match_entry_free(void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean
      Src: /src/frr/bgpd/bgp_pbr.c:1000,1
    - Dst: hashcount
      Src: /src/frr/bgpd/bgp_pbr.c:1002,1
    - Dst: bgp_send_pbr_iptable
      Src: /src/frr/bgpd/bgp_pbr.c:1007,1
    - Dst: bgp_send_pbr_ipset_match
      Src: /src/frr/bgpd/bgp_pbr.c:1012,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_pbr.c:1017,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:1019,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1020
    functionName: bgp_pbr_match_free
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - bgp_send_pbr_iptable
    - bgp_send_pbr_ipset_match
    - XFREE
    - hash_clean
    - hashcount
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_match_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1022
    functionDepth: 0
    functionLinenumber: 1022
    functionLinenumberEnd: 1032
    functionName: bgp_pbr_match_alloc_intern
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_pbr_match_alloc_intern(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_send_pbr_rule_action
      Src: /src/frr/bgpd/bgp_pbr.c:1042,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:1047,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1034
    functionDepth: 3
    functionLinenumber: 1034
    functionLinenumberEnd: 1048
    functionName: bgp_pbr_rule_free
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_send_pbr_rule_action
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_rule_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:1056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1050
    functionDepth: 0
    functionLinenumber: 1050
    functionLinenumberEnd: 1060
    functionName: bgp_pbr_rule_alloc_intern
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_pbr_rule_alloc_intern(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_send_pbr_rule_action
      Src: /src/frr/bgpd/bgp_pbr.c:1065,1
    - Dst: bgp_zebra_announce_default
      Src: /src/frr/bgpd/bgp_pbr.c:1066,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - bpa
    argTypes:
    - struct bgp_pbr_action*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1062
    functionDepth: 3
    functionLinenumber: 1062
    functionLinenumberEnd: 1070
    functionName: bgp_pbr_bpa_remove
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_send_pbr_rule_action
    - bgp_zebra_announce_default
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_bpa_remove(struct bgp_pbr_action *bpa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_send_pbr_rule_action
      Src: /src/frr/bgpd/bgp_pbr.c:1075,1
    - Dst: bgp_zebra_announce_default
      Src: /src/frr/bgpd/bgp_pbr.c:1076,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - bpa
    argTypes:
    - struct bgp_pbr_action*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1072
    functionDepth: 3
    functionLinenumber: 1072
    functionLinenumberEnd: 1079
    functionName: bgp_pbr_bpa_add
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_send_pbr_rule_action
    - bgp_zebra_announce_default
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_bpa_add(struct bgp_pbr_action *bpa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_pbr_bpa_remove
      Src: /src/frr/bgpd/bgp_pbr.c:1085,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1081
    functionDepth: 4
    functionLinenumber: 1081
    functionLinenumberEnd: 1088
    functionName: bgp_pbr_action_free
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_pbr_bpa_remove
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_action_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:1096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1101
    functionName: bgp_pbr_action_alloc_intern
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_pbr_action_alloc_intern(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:1109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1103
    functionDepth: 0
    functionLinenumber: 1103
    functionLinenumberEnd: 1114
    functionName: bgp_pbr_match_entry_alloc_intern
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_pbr_match_entry_alloc_intern(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1121,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1122,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1123,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1124,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1125,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1126,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1127,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1128,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1129,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1130,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1131,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1116
    functionDepth: 1
    functionLinenumber: 1116
    functionLinenumberEnd: 1133
    functionName: bgp_pbr_match_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_pbr_match_hash_key(const void *arg)
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1135
    functionDepth: 0
    functionLinenumber: 1135
    functionLinenumberEnd: 1181
    functionName: bgp_pbr_match_hash_equal
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_pbr_match_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_hash_key
      Src: /src/frr/bgpd/bgp_pbr.c:1188,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1189,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1190,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1191,1
    - Dst: prefix_hash_key
      Src: /src/frr/bgpd/bgp_pbr.c:1191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1183
    functionDepth: 1
    functionLinenumber: 1183
    functionLinenumberEnd: 1192
    functionName: bgp_pbr_rule_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    - jhash_1word
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_pbr_rule_hash_key(const void *arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_pbr.c:1211,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_pbr.c:1215,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1194
    functionDepth: 1
    functionLinenumber: 1194
    functionLinenumberEnd: 1219
    functionName: bgp_pbr_rule_hash_equal
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: bool
    signature: bool bgp_pbr_rule_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_hash_key
      Src: /src/frr/bgpd/bgp_pbr.c:1227,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1228,1
    - Dst: prefix_hash_key
      Src: /src/frr/bgpd/bgp_pbr.c:1228,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1229,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1230,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1231,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1232,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_pbr.c:1233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1221
    functionDepth: 1
    functionLinenumber: 1221
    functionLinenumberEnd: 1236
    functionName: bgp_pbr_match_entry_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    - jhash_1word
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_pbr_match_entry_hash_key(const void *arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_pbr.c:1251,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_pbr.c:1254,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1238
    functionDepth: 1
    functionLinenumber: 1238
    functionLinenumberEnd: 1273
    functionName: bgp_pbr_match_entry_hash_equal
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: bool
    signature: bool bgp_pbr_match_entry_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1281,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1282,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_pbr.c:1283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1285
    functionName: bgp_pbr_action_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_pbr_action_hash_key(const void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/bgpd/bgp_pbr.c:1304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1287
    functionDepth: 1
    functionLinenumber: 1287
    functionLinenumberEnd: 1305
    functionName: bgp_pbr_action_hash_equal
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - nexthop_same
    linkageType: ''
    returnType: bool
    signature: bool bgp_pbr_action_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_pbr.c:1310,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vrf_id
    - unique
    argTypes:
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1319
    functionName: bgp_pbr_rule_lookup
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - hash_walk
    - bgp_lookup_by_vrf_id
    linkageType: ''
    returnType: struct bgp_pbr_rule
    signature: "struct bgp_pbr_rule *bgp_pbr_rule_lookup(vrf_id_t vrf_id,\n\t\t\t\t\t
      uint32_t unique)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_pbr.c:1324,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vrf_id
    - unique
    argTypes:
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1321
    functionDepth: 1
    functionLinenumber: 1321
    functionLinenumberEnd: 1333
    functionName: bgp_pbr_action_rule_lookup
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - hash_walk
    - bgp_lookup_by_vrf_id
    linkageType: ''
    returnType: struct bgp_pbr_action
    signature: "struct bgp_pbr_action *bgp_pbr_action_rule_lookup(vrf_id_t vrf_id,\n\t\t\t\t\t\t
      \ uint32_t unique)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_pbr.c:1338,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vrf_id
    - unique
    argTypes:
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1335
    functionDepth: 1
    functionLinenumber: 1335
    functionLinenumberEnd: 1347
    functionName: bgp_pbr_match_ipset_lookup
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - hash_walk
    - bgp_lookup_by_vrf_id
    linkageType: ''
    returnType: struct bgp_pbr_match
    signature: "struct bgp_pbr_match *bgp_pbr_match_ipset_lookup(vrf_id_t vrf_id,\n\t\t\t\t\t\t
      uint32_t unique)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_pbr.c:1353,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:1359,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1360,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1362,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:1363,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1368,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - vrf_id
    - ipset_name
    - unique
    argTypes:
    - vrf_id_t
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1371
    functionName: bgp_pbr_match_ipset_entry_lookup
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - snprintf
    - XCALLOC
    - bgp_lookup_by_vrf_id
    - XFREE
    - hash_walk
    linkageType: ''
    returnType: struct bgp_pbr_match_entry
    signature: "struct bgp_pbr_match_entry *bgp_pbr_match_ipset_entry_lookup(vrf_id_t
      vrf_id,\n\t\t\t\t\t\t       char *ipset_name,\n\t\t\t\t\t\t       uint32_t unique)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_pbr.c:1376,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vrf_id
    - unique
    argTypes:
    - vrf_id_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1373
    functionDepth: 1
    functionLinenumber: 1373
    functionLinenumberEnd: 1385
    functionName: bgp_pbr_match_iptable_lookup
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - hash_walk
    - bgp_lookup_by_vrf_id
    linkageType: ''
    returnType: struct bgp_pbr_match
    signature: "struct bgp_pbr_match *bgp_pbr_match_iptable_lookup(vrf_id_t vrf_id,\n\t\t\t\t\t\t
      \  uint32_t unique)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_pbr.c:1389,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_pbr.c:1390,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_pbr.c:1391,1
    - Dst: bgp_pbr_reset
      Src: /src/frr/bgpd/bgp_pbr.c:1396,1
    - Dst: bgp_pbr_reset
      Src: /src/frr/bgpd/bgp_pbr.c:1397,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:1398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1387
    functionDepth: 1
    functionLinenumber: 1387
    functionLinenumberEnd: 1399
    functionName: bgp_pbr_cleanup
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 2
    functionsReached:
    - hash_clean_and_free
    - bgp_pbr_reset
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_cleanup(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_pbr.c:1404,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_pbr.c:1408,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_pbr.c:1413,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_pbr.c:1417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1401
    functionDepth: 1
    functionLinenumber: 1401
    functionLinenumberEnd: 1419
    functionName: bgp_pbr_init
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - hash_create_size
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_init(struct bgp *bgp)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1429,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_pbr.c:1436,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_pbr.c:1439,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1442,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1447,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_pbr.c:1449,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_pbr.c:1452,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1458,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1460,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1467,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1469,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1476,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1478,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1485,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1487,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1494,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1496,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1503,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1505,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1512,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1514,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1522,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1524,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1531,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1533,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1541,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1543,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1550,1
    - Dst: snprintf_bgp_pbr_match_val
      Src: /src/frr/bgpd/bgp_pbr.c:1552,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1563,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1568,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1576,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1577,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1583,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1584,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1589,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1596,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1602,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1611,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_pbr.c:1616,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_pbr.c:1616,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1618,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_pbr.c:1628,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1629,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1630,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/bgpd/bgp_pbr.c:1631,1
    - Dst: INCREMENT_DISPLAY
      Src: /src/frr/bgpd/bgp_pbr.c:1638,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:1639,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_pbr.c:1648,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 172
    argCount: 1
    argNames:
    - api
    argTypes:
    - struct bgp_pbr_entry_main*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1421
    functionDepth: 1
    functionLinenumber: 1421
    functionLinenumberEnd: 1649
    functionName: bgp_pbr_print_policy_route
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 2
    functionsReached:
    - zlog_info
    - INCREMENT_DISPLAY
    - snprintf
    - afi2family
    - snprintfrr
    - inet_ntop
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - snprintf_bgp_pbr_match_val
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_print_policy_route(struct bgp_pbr_entry_main *api)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_send_pbr_rule_action
      Src: /src/frr/bgpd/bgp_pbr.c:1659,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_pbr.c:1669,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_pbr.c:1671,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_pbr.c:1675,1
    - Dst: bgp_pbr_bpa_remove
      Src: /src/frr/bgpd/bgp_pbr.c:1676,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - bgp
    - bpa
    - bpr
    argTypes:
    - struct bgp*
    - struct bgp_pbr_action*
    - struct bgp_pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1651
    functionDepth: 4
    functionLinenumber: 1651
    functionLinenumberEnd: 1677
    functionName: bgp_pbr_flush_iprule
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_extra_get
    - bgp_pbr_bpa_remove
    - bgp_send_pbr_rule_action
    - listnode_delete
    - hash_release
    linkageType: ''
    returnType: void
    signature: "void bgp_pbr_flush_iprule(struct bgp *bgp, struct bgp_pbr_action *bpa,\n\t\t\t\t
      \ struct bgp_pbr_rule *bpr)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_send_pbr_ipset_entry_match
      Src: /src/frr/bgpd/bgp_pbr.c:1689,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_pbr.c:1698,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_pbr.c:1700,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_pbr.c:1704,1
    - Dst: hashcount
      Src: /src/frr/bgpd/bgp_pbr.c:1705,1
    - Dst: bgp_send_pbr_iptable
      Src: /src/frr/bgpd/bgp_pbr.c:1710,1
    - Dst: bgp_send_pbr_ipset_match
      Src: /src/frr/bgpd/bgp_pbr.c:1715,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_pbr.c:1719,1
    - Dst: bgp_pbr_bpa_remove
      Src: /src/frr/bgpd/bgp_pbr.c:1724,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 4
    argNames:
    - bgp
    - bpa
    - bpm
    - bpme
    argTypes:
    - struct bgp*
    - struct bgp_pbr_action*
    - struct bgp_pbr_match*
    - struct bgp_pbr_match_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1679
    functionDepth: 4
    functionLinenumber: 1679
    functionLinenumberEnd: 1725
    functionName: bgp_pbr_flush_entry
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_extra_get
    - bgp_send_pbr_ipset_entry_match
    - bgp_send_pbr_iptable
    - bgp_pbr_bpa_remove
    - bgp_send_pbr_ipset_match
    - listnode_delete
    - hash_release
    - hashcount
    linkageType: ''
    returnType: void
    signature: "void bgp_pbr_flush_entry(struct bgp *bgp, struct bgp_pbr_action *bpa,\n\t\t\t\tstruct
      bgp_pbr_match *bpm,\n\t\t\t\tstruct bgp_pbr_match_entry *bpme)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_pbr.c:1753,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_pbr.c:1757,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1774
      start: 1737
    functionDepth: 1
    functionLinenumber: 1737
    functionLinenumberEnd: 1774
    functionName: bgp_pbr_get_same_rule
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_get_same_rule(struct hash_bucket *bucket, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_pbr.c:1804,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 10
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1776
    functionDepth: 1
    functionLinenumber: 1776
    functionLinenumberEnd: 1808
    functionName: bgp_pbr_get_remaining_entry
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: int
    signature: int bgp_pbr_get_remaining_entry(struct hash_bucket *bucket, void *arg)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:1831,1
    - Dst: bgp_pbr_dump_entry
      Src: /src/frr/bgpd/bgp_pbr.c:1832,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:1838,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:1839,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:1842,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:1845,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:1849,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1858,1
    - Dst: bgp_pbr_flush_iprule
      Src: /src/frr/bgpd/bgp_pbr.c:1865,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:1874,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:1879,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:1961,1
    - Dst: bgp_pbr_flush_entry
      Src: /src/frr/bgpd/bgp_pbr.c:1968,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 118
    argCount: 3
    argNames:
    - bgp
    - path
    - bpf
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct bgp_pbr_filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1971
      start: 1810
    functionDepth: 5
    functionLinenumber: 1810
    functionLinenumberEnd: 1971
    functionName: bgp_pbr_policyroute_remove_from_zebra_unit
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - bgp_pbr_flush_entry
    - memset
    - bgp_pbr_dump_entry
    - bgp_pbr_flush_iprule
    - hash_walk
    - BGP_DEBUG
    - prefix_copy
    linkageType: ''
    returnType: void
    signature: "void bgp_pbr_policyroute_remove_from_zebra_unit(\n\tstruct bgp *bgp,
      struct bgp_path_info *path, struct bgp_pbr_filter *bpf)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - type_entry
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1973
    functionDepth: 0
    functionLinenumber: 1973
    functionLinenumberEnd: 1986
    functionName: bgp_pbr_next_type_entry
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t bgp_pbr_next_type_entry(uint8_t type_entry)
  - BBCount: 119
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2002,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2003,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_pbr.c:2013,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_pbr.c:2015,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2016,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2019,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_pbr.c:2024,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2036,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2039,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_pbr.c:2043,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2046,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2049,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2058,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2069,1
    - Dst: bgp_pbr_next_type_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2072,1
    - Dst: bgp_pbr_icmp_action
      Src: /src/frr/bgpd/bgp_pbr.c:2091,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2094,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_pbr.c:2098,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2100,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2105,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2110,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2114,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2117,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2120,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2123,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2126,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2129,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2132,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2135,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2137,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2139,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2141,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2143,1
    - Dst: bgp_pbr_dump_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2146,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2166,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2170,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2178,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2186,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2197,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2206,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2215,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2223,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2232,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_pbr.c:2240,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_pbr.c:2243,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_pbr.c:2245,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2279,1
    - Dst: bgp_pbr_dump_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2280,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2283,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:2287,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_pbr.c:2289,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2290,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_pbr.c:2294,1
    - Dst: bgp_zebra_tm_get_id
      Src: /src/frr/bgpd/bgp_pbr.c:2301,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/bgpd/bgp_pbr.c:2305,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2318,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2323,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2327,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2330,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_pbr.c:2343,1
    - Dst: listnode_lookup_nocheck
      Src: /src/frr/bgpd/bgp_pbr.c:2346,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2348,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2349,1
    - Dst: bgp_pbr_bpa_add
      Src: /src/frr/bgpd/bgp_pbr.c:2355,1
    - Dst: bgp_send_pbr_rule_action
      Src: /src/frr/bgpd/bgp_pbr.c:2359,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:2366,1
    - Dst: bgp_pbr_flush_iprule
      Src: /src/frr/bgpd/bgp_pbr.c:2373,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2379,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2450,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2457,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_pbr.c:2459,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2472,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2474,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2478,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2486,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_pbr.c:2502,1
    - Dst: listnode_lookup_nocheck
      Src: /src/frr/bgpd/bgp_pbr.c:2505,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2506,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2507,1
    - Dst: bgp_pbr_bpa_add
      Src: /src/frr/bgpd/bgp_pbr.c:2524,1
    - Dst: bgp_send_pbr_ipset_match
      Src: /src/frr/bgpd/bgp_pbr.c:2528,1
    - Dst: bgp_send_pbr_ipset_entry_match
      Src: /src/frr/bgpd/bgp_pbr.c:2531,1
    - Dst: bgp_send_pbr_iptable
      Src: /src/frr/bgpd/bgp_pbr.c:2535,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:2542,1
    - Dst: bgp_pbr_flush_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2549,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2568,1
    - Dst: bgp_pbr_next_type_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2571,1
    - Dst: bgp_pbr_icmp_action
      Src: /src/frr/bgpd/bgp_pbr.c:2587,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2590,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_pbr.c:2594,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2596,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2601,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2608,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2612,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2615,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2618,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2621,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2624,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2627,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2630,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2632,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2634,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2636,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2638,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2640,1
    - Dst: bgp_pbr_handle_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2643,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2661,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2662,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2663,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2674,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2685,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2690,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2696,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2704,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2709,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2710,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2719,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2724,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2725,1
    - Dst: bgp_pbr_match_val_get_operator
      Src: /src/frr/bgpd/bgp_pbr.c:2734,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2738,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2744,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2745,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2755,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2761,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2762,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2770,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2771,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2776,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2777,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_pbr.c:2789,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2791,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2802,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2807,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:2808,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:2809,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2817,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:2818,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:2819,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:2834,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2838,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2851,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2856,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:2857,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:2858,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2879,1
    - Dst: bgp_zebra_tm_chunk_obtained
      Src: /src/frr/bgpd/bgp_pbr.c:2883,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2884,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2885,1
    - Dst: bgp_pbr_build_and_validate_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2890,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2891,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2892,1
    - Dst: bgp_pbr_handle_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2897,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_pbr.c:2903,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_pbr.c:2911,1
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_pbr.c:2912,1
    - Dst: RB_EMPTY
      Src: /src/frr/bgpd/bgp_pbr.c:2931,1
    - Dst: RB_ROOT
      Src: /src/frr/bgpd/bgp_pbr.c:2932,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_pbr.c:2933,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:2934,1
    CyclomaticComplexity: 166
    EdgeCount: 166
    ICount: 477
    argCount: 7
    argNames:
    - bgp
    - path
    - bpf
    - bpof
    - add
    - nh
    - rate
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct bgp_pbr_filter*
    - struct bgp_pbr_or_filter*
    - bool
    - struct nexthop*
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2936
      start: 1988
    functionDepth: 6
    functionLinenumber: 1988
    functionLinenumberEnd: 2936
    functionName: bgp_pbr_icmp_action
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - vrf_is_backend_netns
    - bgp_pbr_print_policy_route
    - listnode_lookup_nocheck
    - RB_FIND
    - bgp_pbr_policyroute_add_to_zebra_unit
    - bgp_zebra_tm_get_id
    - zlog_warn
    - flog_err
    - hash_walk
    - BGP_DEBUG
    - RB_EMPTY
    - bgp_pbr_handle_entry
    - bgp_pbr_extract
    - bgp_path_info_extra_get
    - bgp_pbr_flush_entry
    - memset
    - bgp_pbr_policyroute_remove_from_zebra
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - bgp_pbr_dump_entry
    - bgp_pbr_extract_enumerate
    - bgp_pbr_flush_iprule
    - zlog_debug
    - list_delete_all_node
    - vrf_lookup_by_id
    - if
    - prefix_copy
    - hash_get
    - RB_ROOT
    - strlcpy
    - bgp_pbr_policyroute_add_to_zebra_recursive
    - afi2family
    - zlog_err
    - bgp_send_pbr_rule_action
    - bgp_pbr_policyroute_add_to_zebra
    - bgp_send_pbr_ipset_match
    - XFREE
    - family2afi
    - bgp_pbr_policyroute_remove_from_zebra_recursive
    - memcpy
    - bgp_zebra_tm_chunk_obtained
    - hash_create_size
    - bgp_pbr_match_val_get_operator
    - bgp_pbr_bpa_add
    - RB_REMOVE
    - bgp_pbr_next_type_entry
    - strcmp
    - bgp_send_pbr_ipset_entry_match
    - bgp_send_pbr_iptable
    - bgp_pbr_policyroute_remove_from_zebra_unit
    - bgp_pbr_icmp_action
    - list_new
    - bgp_pbr_build_and_validate_entry
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void bgp_pbr_icmp_action(struct bgp *bgp, struct bgp_path_info *path,\n\t\t\t\tstruct
      bgp_pbr_filter *bpf,\n\t\t\t\tstruct bgp_pbr_or_filter *bpof, bool add,\n\t\t\t\tstruct
      nexthop *nh, float *rate)"
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2279,1
    - Dst: bgp_pbr_dump_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2280,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2283,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:2287,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_pbr.c:2289,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2290,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bgpd/bgp_pbr.c:2294,1
    - Dst: bgp_zebra_tm_get_id
      Src: /src/frr/bgpd/bgp_pbr.c:2301,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/bgpd/bgp_pbr.c:2305,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2318,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2323,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2327,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2330,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_pbr.c:2343,1
    - Dst: listnode_lookup_nocheck
      Src: /src/frr/bgpd/bgp_pbr.c:2346,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2348,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2349,1
    - Dst: bgp_pbr_bpa_add
      Src: /src/frr/bgpd/bgp_pbr.c:2355,1
    - Dst: bgp_send_pbr_rule_action
      Src: /src/frr/bgpd/bgp_pbr.c:2359,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:2366,1
    - Dst: bgp_pbr_flush_iprule
      Src: /src/frr/bgpd/bgp_pbr.c:2373,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2379,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2450,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_pbr.c:2457,1
    - Dst: hash_create_size
      Src: /src/frr/bgpd/bgp_pbr.c:2459,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2472,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2474,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_pbr.c:2478,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_pbr.c:2486,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_pbr.c:2502,1
    - Dst: listnode_lookup_nocheck
      Src: /src/frr/bgpd/bgp_pbr.c:2505,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2506,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2507,1
    - Dst: bgp_pbr_bpa_add
      Src: /src/frr/bgpd/bgp_pbr.c:2524,1
    - Dst: bgp_send_pbr_ipset_match
      Src: /src/frr/bgpd/bgp_pbr.c:2528,1
    - Dst: bgp_send_pbr_ipset_entry_match
      Src: /src/frr/bgpd/bgp_pbr.c:2531,1
    - Dst: bgp_send_pbr_iptable
      Src: /src/frr/bgpd/bgp_pbr.c:2535,1
    - Dst: hash_walk
      Src: /src/frr/bgpd/bgp_pbr.c:2542,1
    - Dst: bgp_pbr_flush_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2549,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 194
    argCount: 5
    argNames:
    - bgp
    - path
    - bpf
    - nh
    - rate
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct bgp_pbr_filter*
    - struct nexthop*
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2250
    functionDepth: 5
    functionLinenumber: 2250
    functionLinenumberEnd: 2554
    functionName: bgp_pbr_policyroute_add_to_zebra_unit
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - vrf_is_backend_netns
    - listnode_lookup_nocheck
    - bgp_zebra_tm_get_id
    - hash_walk
    - BGP_DEBUG
    - bgp_path_info_extra_get
    - bgp_pbr_flush_entry
    - memset
    - snprintf
    - bgp_pbr_dump_entry
    - bgp_pbr_flush_iprule
    - vrf_lookup_by_id
    - prefix_copy
    - hash_get
    - zlog_err
    - bgp_send_pbr_rule_action
    - bgp_send_pbr_ipset_match
    - family2afi
    - memcpy
    - hash_create_size
    - bgp_pbr_bpa_add
    - bgp_send_pbr_ipset_entry_match
    - bgp_send_pbr_iptable
    linkageType: ''
    returnType: void
    signature: "void bgp_pbr_policyroute_add_to_zebra_unit(struct bgp *bgp,\n\t\t\t\t\t\t
      \ struct bgp_path_info *path,\n\t\t\t\t\t\t  struct bgp_pbr_filter *bpf,\n\t\t\t\t\t\t
      \ struct nexthop *nh,\n\t\t\t\t\t\t  float *rate)"
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2568,1
    - Dst: bgp_pbr_next_type_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2571,1
    - Dst: bgp_pbr_icmp_action
      Src: /src/frr/bgpd/bgp_pbr.c:2587,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2590,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_pbr.c:2594,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2596,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2601,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2608,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2612,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2615,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2618,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2621,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_recursive
      Src: /src/frr/bgpd/bgp_pbr.c:2624,1
    - Dst: bgp_pbr_policyroute_add_to_zebra_unit
      Src: /src/frr/bgpd/bgp_pbr.c:2627,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2630,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2632,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2634,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2636,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2638,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/bgp_pbr.c:2640,1
    - Dst: bgp_pbr_handle_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2643,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2661,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2662,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2663,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2674,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2685,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2690,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2696,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2704,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2709,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2710,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2719,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2724,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2725,1
    - Dst: bgp_pbr_match_val_get_operator
      Src: /src/frr/bgpd/bgp_pbr.c:2734,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2738,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2744,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2745,1
    - Dst: bgp_pbr_extract
      Src: /src/frr/bgpd/bgp_pbr.c:2755,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2761,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2762,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2770,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2771,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_pbr.c:2776,1
    - Dst: bgp_pbr_extract_enumerate
      Src: /src/frr/bgpd/bgp_pbr.c:2777,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_pbr.c:2789,1
    - Dst: bgp_pbr_policyroute_remove_from_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2791,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2802,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2807,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:2808,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:2809,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2817,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:2818,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:2819,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_pbr.c:2834,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2838,1
    - Dst: bgp_pbr_policyroute_add_to_zebra
      Src: /src/frr/bgpd/bgp_pbr.c:2851,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2856,1
    - Dst: bgp_pbr_print_policy_route
      Src: /src/frr/bgpd/bgp_pbr.c:2857,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_pbr.c:2858,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 170
    argCount: 7
    argNames:
    - bgp
    - path
    - bpf
    - bpof
    - nh
    - rate
    - type_entry
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - struct bgp_pbr_filter*
    - struct bgp_pbr_or_filter*
    - struct nexthop*
    - float*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2868
      start: 2556
    functionDepth: 7
    functionLinenumber: 2556
    functionLinenumberEnd: 2868
    functionName: bgp_pbr_policyroute_add_to_zebra_recursive
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 2
    functionsReached:
    - bgp_pbr_print_policy_route
    - bgp_pbr_policyroute_add_to_zebra_unit
    - zlog_warn
    - BGP_DEBUG
    - bgp_pbr_handle_entry
    - bgp_pbr_extract
    - memset
    - bgp_pbr_policyroute_remove_from_zebra
    - bgp_pbr_extract_enumerate
    - list_delete_all_node
    - bgp_pbr_policyroute_add_to_zebra_recursive
    - afi2family
    - bgp_pbr_policyroute_add_to_zebra
    - memcpy
    - bgp_pbr_match_val_get_operator
    - bgp_pbr_next_type_entry
    - bgp_pbr_icmp_action
    - list_new
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void bgp_pbr_policyroute_add_to_zebra_recursive(\n\tstruct bgp *bgp,
      struct bgp_path_info *path, struct bgp_pbr_filter *bpf,\n\tstruct bgp_pbr_or_filter
      *bpof, struct nexthop *nh, float *rate,\n\tuint8_t type_entry)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_pbr.c:2879,1
    - Dst: bgp_zebra_tm_chunk_obtained
      Src: /src/frr/bgpd/bgp_pbr.c:2883,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2884,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2885,1
    - Dst: bgp_pbr_build_and_validate_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2890,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_pbr.c:2891,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_pbr.c:2892,1
    - Dst: bgp_pbr_handle_entry
      Src: /src/frr/bgpd/bgp_pbr.c:2897,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - bgp
    - p
    - info
    - afi
    - safi
    - nlri_update
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2898
      start: 2870
    functionDepth: 6
    functionLinenumber: 2870
    functionLinenumberEnd: 2898
    functionName: bgp_pbr_update_entry
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 2
    functionsReached:
    - memset
    - flog_err
    - bgp_pbr_build_and_validate_entry
    - BGP_DEBUG
    - bgp_pbr_handle_entry
    - bgp_zebra_tm_chunk_obtained
    linkageType: ''
    returnType: void
    signature: "void bgp_pbr_update_entry(struct bgp *bgp, const struct prefix *p,\n\t\t\t
      \ struct bgp_path_info *info, afi_t afi, safi_t safi,\n\t\t\t  bool nlri_update)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_pbr.c:2903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bgp_pbr_interface*
    - struct bgp_pbr_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2904
      start: 2900
    functionDepth: 0
    functionLinenumber: 2900
    functionLinenumberEnd: 2904
    functionName: bgp_pbr_interface_compare
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int bgp_pbr_interface_compare(const struct bgp_pbr_interface *a,\n\t\t\t
      \ const struct bgp_pbr_interface *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_pbr.c:2911,1
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_pbr.c:2912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - head
    argTypes:
    - char*
    - struct bgp_pbr_interface_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2914
      start: 2906
    functionDepth: 1
    functionLinenumber: 2906
    functionLinenumberEnd: 2914
    functionName: bgp_pbr_interface_lookup
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct bgp_pbr_interface
    signature: "struct bgp_pbr_interface *bgp_pbr_interface_lookup(const char *name,\n\t\t\t\t\t
      \  struct bgp_pbr_interface_head *head)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/bgpd/bgp_pbr.c:2931,1
    - Dst: RB_ROOT
      Src: /src/frr/bgpd/bgp_pbr.c:2932,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_pbr.c:2933,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_pbr.c:2934,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2936
      start: 2919
    functionDepth: 1
    functionLinenumber: 2919
    functionLinenumberEnd: 2936
    functionName: bgp_pbr_reset
    functionSourceFile: /src/frr/bgpd/bgp_pbr.c
    functionUses: 1
    functionsReached:
    - RB_EMPTY
    - RB_ROOT
    - XFREE
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void bgp_pbr_reset(struct bgp *bgp, afi_t afi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: RPKI_DEBUG
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RPKI_DEBUG(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: malloc_wrapper
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *malloc_wrapper(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: realloc_wrapper
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: void *realloc_wrapper(void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: free_wrapper
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_wrapper(void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tr_tcp_init
      Src: /src/frr/bgpd/bgp_rpki.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 170
    functionName: init_tr_socket
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - tr_tcp_init
    linkageType: ''
    returnType: void
    signature: void init_tr_socket(struct cache *cache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tr_tcp_init
      Src: /src/frr/bgpd/bgp_rpki.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 182
    functionName: free_tr_socket
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - tr_tcp_init
    linkageType: ''
    returnType: void
    signature: void free_tr_socket(struct cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_rpki.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 193
    functionName: ipv6_addr_to_network_byte_order
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: void ipv6_addr_to_network_byte_order(const uint32_t *src, uint32_t
      *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_rpki.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 201
    functionName: ipv6_addr_to_host_byte_order
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: void
    signature: void ipv6_addr_to_host_byte_order(const uint32_t *src, uint32_t *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rpki_validate_prefix
      Src: /src/frr/bgpd/bgp_rpki.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 218
    functionName: route_match
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - rpki_validate_prefix
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match(void *rule,\n\t\t\t\t\t       const
      struct prefix *prefix,\n\t\t\t\t\t       void *object)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:224,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_rpki.c:226,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_rpki.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 234
    functionName: route_match_compile
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_match_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: route_match_free
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tr_socket
    argTypes:
    - struct tr_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 247
    functionName: create_rtr_socket
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    linkageType: ''
    returnType: struct rtr_socket
    signature: struct rtr_socket *create_rtr_socket(struct tr_socket *tr_socket)
  - BBCount: 83
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:254,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_rpki.c:266,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_rpki.c:266,1
    - Dst: rtr_mgr_remove_group
      Src: /src/frr/bgpd/bgp_rpki.c:267,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_rpki.c:268,1
    - Dst: lrtr_ip_addr_to_str
      Src: /src/frr/bgpd/bgp_rpki.c:278,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_rpki.c:280,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:281,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:283,1
    - Dst: ASN_FORMAT
      Src: /src/frr/bgpd/bgp_rpki.c:283,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:284,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_rpki.c:286,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:287,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:288,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:290,1
    - Dst: asn_asn2json
      Src: /src/frr/bgpd/bgp_rpki.c:292,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_rpki.c:293,1
    - Dst: print_record_by_asn
      Src: /src/frr/bgpd/bgp_rpki.c:297,1
    - Dst: print_record
      Src: /src/frr/bgpd/bgp_rpki.c:304,1
    - Dst: print_record_cb
      Src: /src/frr/bgpd/bgp_rpki.c:308,1
    - Dst: print_record
      Src: /src/frr/bgpd/bgp_rpki.c:315,1
    - Dst: get_groups
      Src: /src/frr/bgpd/bgp_rpki.c:318,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:324,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:329,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:334,1
    - Dst: init_tr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:339,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_rpki.c:369,1
    - Dst: ipv6_addr_to_network_byte_order
      Src: /src/frr/bgpd/bgp_rpki.c:372,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_rpki.c:386,1
    - Dst: bgp_table_subtree_lookup
      Src: /src/frr/bgpd/bgp_rpki.c:389,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_rpki.c:395,1
    - Dst: revalidate_bgp_node
      Src: /src/frr/bgpd/bgp_rpki.c:396,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_rpki.c:399,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:402,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_rpki.c:412,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:415,1
    - Dst: read
      Src: /src/frr/bgpd/bgp_rpki.c:416,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:420,1
    - Dst: revalidate_all_routes
      Src: /src/frr/bgpd/bgp_rpki.c:422,1
    - Dst: read
      Src: /src/frr/bgpd/bgp_rpki.c:427,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:429,1
    - Dst: pfx_record_to_prefix
      Src: /src/frr/bgpd/bgp_rpki.c:432,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:436,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:446,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_rpki.c:451,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_rpki.c:464,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_rpki.c:472,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_rpki.c:472,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_rpki.c:494,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgp_rpki.c:499,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:501,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:509,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_rpki.c:513,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:513,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_rpki.c:517,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_rpki.c:520,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_rpki.c:523,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_rpki.c:523,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:526,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_rpki.c:532,1
    - Dst: rpki_update_cb_sync_rtr
      Src: /src/frr/bgpd/bgp_rpki.c:541,1
    - Dst: __attribute__
      Src: /src/frr/bgpd/bgp_rpki.c:541,1
    - Dst: is_stopping
      Src: /src/frr/bgpd/bgp_rpki.c:545,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:546,1
    - Dst: write
      Src: /src/frr/bgpd/bgp_rpki.c:550,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:552,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:556,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:564,1
    - Dst: socketpair
      Src: /src/frr/bgpd/bgp_rpki.c:565,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_rpki.c:572,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_rpki.c:577,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_rpki.c:583,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_rpki.c:589,1
    - Dst: abort
      Src: /src/frr/bgpd/bgp_rpki.c:590,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_rpki.c:601,1
    - Dst: install_cli_commands
      Src: /src/frr/bgpd/bgp_rpki.c:607,1
    - Dst: rpki_init_sync_socket
      Src: /src/frr/bgpd/bgp_rpki.c:608,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:614,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_rpki.c:615,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_rpki.c:617,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_rpki.c:618,1
    - Dst: lrtr_set_alloc_functions
      Src: /src/frr/bgpd/bgp_rpki.c:625,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:627,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:628,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:629,1
    - Dst: rtr_mgr_conf_in_sync
      Src: /src/frr/bgpd/bgp_rpki.c:636,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:637,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_rpki.c:638,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:644,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_rpki.c:657,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:658,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:662,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:663,1
    - Dst: get_groups
      Src: /src/frr/bgpd/bgp_rpki.c:664,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:666,1
    - Dst: rtr_mgr_init
      Src: /src/frr/bgpd/bgp_rpki.c:667,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:671,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:675,1
    - Dst: rtr_mgr_start
      Src: /src/frr/bgpd/bgp_rpki.c:676,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:678,1
    - Dst: rtr_mgr_free
      Src: /src/frr/bgpd/bgp_rpki.c:679,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_rpki.c:683,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:685,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:695,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_rpki.c:696,1
    - Dst: rtr_mgr_stop
      Src: /src/frr/bgpd/bgp_rpki.c:697,1
    - Dst: rtr_mgr_free
      Src: /src/frr/bgpd/bgp_rpki.c:698,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:705,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:708,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:709,1
    - Dst: start
      Src: /src/frr/bgpd/bgp_rpki.c:710,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_rpki.c:715,1
    - Dst: rtr_mgr_get_first_group
      Src: /src/frr/bgpd/bgp_rpki.c:718,1
    - Dst: get_connected_group
      Src: /src/frr/bgpd/bgp_rpki.c:726,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_rpki.c:733,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_rpki.c:733,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:737,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:744,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:745,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:748,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:749,1
    - Dst: pfx_table_for_each_ipv4_record
      Src: /src/frr/bgpd/bgp_rpki.c:754,1
    - Dst: pfx_table_for_each_ipv6_record
      Src: /src/frr/bgpd/bgp_rpki.c:757,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:760,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:762,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:765,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:767,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_rpki.c:772,1
    - Dst: get_connected_group
      Src: /src/frr/bgpd/bgp_rpki.c:781,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_rpki.c:786,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_rpki.c:786,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:790,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:797,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:798,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:801,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:802,1
    - Dst: pfx_table_for_each_ipv4_record
      Src: /src/frr/bgpd/bgp_rpki.c:807,1
    - Dst: pfx_table_for_each_ipv6_record
      Src: /src/frr/bgpd/bgp_rpki.c:810,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:813,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:815,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:818,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:820,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_rpki.c:825,1
    - Dst: is_synchronized
      Src: /src/frr/bgpd/bgp_rpki.c:836,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_rpki.c:867,1
    - Dst: ipv6_addr_to_host_byte_order
      Src: /src/frr/bgpd/bgp_rpki.c:872,1
    - Dst: rtr_mgr_validate
      Src: /src/frr/bgpd/bgp_rpki.c:881,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:887,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:892,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:897,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:902,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:919,1
    - Dst: init_tr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:920,1
    - Dst: rtr_mgr_add_group
      Src: /src/frr/bgpd/bgp_rpki.c:922,1
    - Dst: free_tr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:923,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_rpki.c:928,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:938,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:940,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:942,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:944,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:945,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:947,1
    - Dst: create_rtr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:951,1
    - Dst: add_cache
      Src: /src/frr/bgpd/bgp_rpki.c:959,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:961,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:974,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:976,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:978,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:982,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:984,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:988,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:990,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:992,1
    - Dst: create_rtr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:994,1
    - Dst: add_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1002,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1004,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1014,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1015,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1016,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1018,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1022,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1023,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1025,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1027,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1029,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1031,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1034,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1035,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1036,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1045,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1047,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1048,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1051,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1055,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:1057,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1065,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1068,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1074,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1082,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1090,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1092,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/bgpd/bgp_rpki.c:1097,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1106,1
    - Dst: rpki_delete_all_cache_nodes
      Src: /src/frr/bgpd/bgp_rpki.c:1112,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:1113,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1117,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:1123,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1124,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1127,1
    - Dst: start
      Src: /src/frr/bgpd/bgp_rpki.c:1128,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:1129,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1136,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1142,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:1143,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1148,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1159,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1171,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1183,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1187,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1199,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1210,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1222,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:1242,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1244,1
    - Dst: add_tcp_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1265,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1269,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1276,1
    - Dst: find_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1294,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1302,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:1302,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:1303,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1304,1
    - Dst: rtr_mgr_remove_group
      Src: /src/frr/bgpd/bgp_rpki.c:1305,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1306,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_rpki.c:1313,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1314,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1319,1
    - Dst: is_synchronized
      Src: /src/frr/bgpd/bgp_rpki.c:1329,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1331,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_rpki.c:1336,1
    - Dst: print_prefix_table
      Src: /src/frr/bgpd/bgp_rpki.c:1338,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1342,1
    - Dst: is_synchronized
      Src: /src/frr/bgpd/bgp_rpki.c:1353,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1355,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_rpki.c:1360,1
    - Dst: print_prefix_table_by_asn
      Src: /src/frr/bgpd/bgp_rpki.c:1362,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1366,1
    - Dst: is_synchronized
      Src: /src/frr/bgpd/bgp_rpki.c:1381,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1383,1
    - Dst: strchr
      Src: /src/frr/bgpd/bgp_rpki.c:1389,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_rpki.c:1391,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_rpki.c:1392,1
    - Dst: lrtr_ip_str_to_addr
      Src: /src/frr/bgpd/bgp_rpki.c:1394,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1396,1
    - Dst: pfx_table_validate_r
      Src: /src/frr/bgpd/bgp_rpki.c:1404,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1408,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_rpki.c:1413,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1416,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:1419,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:1420,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_rpki.c:1423,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_rpki.c:1423,1
    - Dst: print_record
      Src: /src/frr/bgpd/bgp_rpki.c:1429,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_rpki.c:1435,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1440,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_rpki.c:1455,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:1456,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:1457,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:1460,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1463,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_rpki.c:1469,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1470,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1472,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1475,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:1478,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_rpki.c:1480,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1487,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_rpki.c:1498,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1499,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1501,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:1504,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1507,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1510,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_rpki.c:1514,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:1518,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_rpki.c:1520,1
    CyclomaticComplexity: 107
    EdgeCount: 107
    ICount: 535
    argCount: 1
    argNames:
    - preference
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 249
    functionDepth: 14
    functionLinenumber: 249
    functionLinenumberEnd: 1525
    functionName: find_cache
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 1
    functionsReached:
    - rtr_mgr_validate
    - stop
    - rtr_mgr_start
    - rtr_mgr_stop
    - strchr
    - memset
    - XCALLOC
    - add_tcp_cache
    - rtr_mgr_conf_in_sync
    - if
    - for
    - get_connected_group
    - listcount
    - EVENT_OFF
    - event_add_read
    - init_tr_socket
    - memcpy
    - json_object_new_object
    - list_isempty
    - XMALLOC
    - close
    - socketpair
    - list_new
    - bgp_dest_get_bgp_path_info
    - install_cli_commands
    - ALL_LIST_ELEMENTS
    - bgp_soft_reconfig_in
    - rtr_mgr_add_group
    - DEFPY
    - ipv6_addr_to_host_byte_order
    - hook_register
    - rpki_init_sync_socket
    - atomic_load_explicit
    - start
    - write
    - revalidate_bgp_node
    - print_prefix_table_by_asn
    - DEFUN
    - atomic_store_explicit
    - pfx_table_for_each_ipv4_record
    - pfx_table_validate_r
    - rtr_mgr_init
    - print_record_cb
    - event_add_timer
    - json_object_new_array
    - bgp_lookup_by_vrf_id
    - get_groups
    - is_stopping
    - ASN_FORMAT
    - json_object_object_add
    - vty_json
    - event_add_event
    - bgp_get_asnotation
    - add_cache
    - peer_established
    - print_prefix_table
    - ipv6_addr_to_network_byte_order
    - rpki_update_cb_sync_rtr
    - DEFUN_NOSH
    - json_object_string_add
    - rtr_mgr_get_first_group
    - bgp_dest_get_prefix
    - lrtr_ip_addr_to_str
    - is_synchronized
    - vty_out
    - zlog_err
    - json_object_int_add
    - XFREE
    - rtr_mgr_remove_group
    - lrtr_ip_str_to_addr
    - read
    - json_object_array_add
    - asn_asn2json
    - bgp_dest_has_bgp_path_info_data
    - bgp_table_subtree_lookup
    - pfx_record_to_prefix
    - bgp_update
    - rpki_delete_all_cache_nodes
    - list_delete
    - find_cache
    - listnode_add
    - abort
    - print_record_by_asn
    - htonl
    - set_nonblocking
    - is_running
    - free_cache
    - ALL_LIST_ELEMENTS_RO
    - RPKI_DEBUG
    - EVENT_ARG
    - revalidate_all_routes
    - ntohl
    - print_record
    - free_tr_socket
    - lrtr_set_alloc_functions
    - listnode_delete
    - create_rtr_socket
    - bgp_route_next_until
    - XSTRDUP
    - __attribute__
    - rtr_mgr_free
    - pfx_table_for_each_ipv6_record
    - FOREACH_AFI_SAFI
    linkageType: ''
    returnType: struct cache
    signature: struct cache *find_cache(const uint8_t preference)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 360
    functionName: is_stopping
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_stopping(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_rpki.c:369,1
    - Dst: ipv6_addr_to_network_byte_order
      Src: /src/frr/bgpd/bgp_rpki.c:372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - record
    - prefix
    argTypes:
    - struct pfx_record*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 375
    functionName: pfx_record_to_prefix
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 1
    functionsReached:
    - htonl
    - ipv6_addr_to_network_byte_order
    linkageType: ''
    returnType: void
    signature: "void pfx_record_to_prefix(struct pfx_record *record,\n\t\t\t\t struct
      prefix *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_rpki.c:386,1
    - Dst: bgp_table_subtree_lookup
      Src: /src/frr/bgpd/bgp_rpki.c:389,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_rpki.c:395,1
    - Dst: revalidate_bgp_node
      Src: /src/frr/bgpd/bgp_rpki.c:396,1
    - Dst: bgp_route_next_until
      Src: /src/frr/bgpd/bgp_rpki.c:399,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:402,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 403
    functionName: rpki_revalidate_prefix
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - bgp_dest_has_bgp_path_info_data
    - bgp_table_subtree_lookup
    - XFREE
    - EVENT_ARG
    - bgp_route_next_until
    - revalidate_bgp_node
    linkageType: ''
    returnType: void
    signature: void rpki_revalidate_prefix(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_rpki.c:412,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:415,1
    - Dst: read
      Src: /src/frr/bgpd/bgp_rpki.c:416,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:420,1
    - Dst: revalidate_all_routes
      Src: /src/frr/bgpd/bgp_rpki.c:422,1
    - Dst: read
      Src: /src/frr/bgpd/bgp_rpki.c:427,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:429,1
    - Dst: pfx_record_to_prefix
      Src: /src/frr/bgpd/bgp_rpki.c:432,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:436,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:446,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_rpki.c:451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 455
    functionName: bgpd_sync_callback
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - read
    - XCALLOC
    - atomic_store_explicit
    - ALL_LIST_ELEMENTS_RO
    - RPKI_DEBUG
    - atomic_load_explicit
    - pfx_record_to_prefix
    - event_add_read
    - revalidate_all_routes
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void bgpd_sync_callback(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_rpki.c:464,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_rpki.c:472,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_rpki.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - bgp_dest
    - afi
    - safi
    argTypes:
    - struct bgp_dest*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 457
    functionDepth: 14
    functionLinenumber: 457
    functionLinenumberEnd: 477
    functionName: revalidate_bgp_node
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 2
    functionsReached:
    - bgp_update
    - bgp_dest_get_prefix
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void revalidate_bgp_node(struct bgp_dest *bgp_dest, afi_t afi,\n\t\t\t\tsafi_t
      safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_rpki.c:494,1
    - Dst: bgp_soft_reconfig_in
      Src: /src/frr/bgpd/bgp_rpki.c:499,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 502
    functionName: bgp_rpki_revalidate_peer
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - bgp_soft_reconfig_in
    - XFREE
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_rpki_revalidate_peer(struct event *thread)
  - BBCount: 59
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:509,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_rpki.c:513,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:513,1
    - Dst: FOREACH_AFI_SAFI
      Src: /src/frr/bgpd/bgp_rpki.c:517,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_rpki.c:520,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_rpki.c:523,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_rpki.c:523,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:526,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_rpki.c:532,1
    - Dst: rpki_update_cb_sync_rtr
      Src: /src/frr/bgpd/bgp_rpki.c:541,1
    - Dst: __attribute__
      Src: /src/frr/bgpd/bgp_rpki.c:541,1
    - Dst: is_stopping
      Src: /src/frr/bgpd/bgp_rpki.c:545,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:546,1
    - Dst: write
      Src: /src/frr/bgpd/bgp_rpki.c:550,1
    - Dst: atomic_store_explicit
      Src: /src/frr/bgpd/bgp_rpki.c:552,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:556,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:564,1
    - Dst: socketpair
      Src: /src/frr/bgpd/bgp_rpki.c:565,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_rpki.c:572,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_rpki.c:577,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_rpki.c:583,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_rpki.c:589,1
    - Dst: abort
      Src: /src/frr/bgpd/bgp_rpki.c:590,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_rpki.c:601,1
    - Dst: install_cli_commands
      Src: /src/frr/bgpd/bgp_rpki.c:607,1
    - Dst: rpki_init_sync_socket
      Src: /src/frr/bgpd/bgp_rpki.c:608,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:614,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_rpki.c:615,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_rpki.c:617,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_rpki.c:618,1
    - Dst: lrtr_set_alloc_functions
      Src: /src/frr/bgpd/bgp_rpki.c:625,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:627,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:628,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:629,1
    - Dst: rtr_mgr_conf_in_sync
      Src: /src/frr/bgpd/bgp_rpki.c:636,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:637,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_rpki.c:638,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:644,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_rpki.c:657,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:658,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:662,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:663,1
    - Dst: get_groups
      Src: /src/frr/bgpd/bgp_rpki.c:664,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:666,1
    - Dst: rtr_mgr_init
      Src: /src/frr/bgpd/bgp_rpki.c:667,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:671,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:675,1
    - Dst: rtr_mgr_start
      Src: /src/frr/bgpd/bgp_rpki.c:676,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:678,1
    - Dst: rtr_mgr_free
      Src: /src/frr/bgpd/bgp_rpki.c:679,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_rpki.c:683,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:685,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:695,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_rpki.c:696,1
    - Dst: rtr_mgr_stop
      Src: /src/frr/bgpd/bgp_rpki.c:697,1
    - Dst: rtr_mgr_free
      Src: /src/frr/bgpd/bgp_rpki.c:698,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:705,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:708,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:709,1
    - Dst: start
      Src: /src/frr/bgpd/bgp_rpki.c:710,1
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_rpki.c:715,1
    - Dst: rtr_mgr_get_first_group
      Src: /src/frr/bgpd/bgp_rpki.c:718,1
    - Dst: get_connected_group
      Src: /src/frr/bgpd/bgp_rpki.c:726,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_rpki.c:733,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_rpki.c:733,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:737,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:744,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:745,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:748,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:749,1
    - Dst: pfx_table_for_each_ipv4_record
      Src: /src/frr/bgpd/bgp_rpki.c:754,1
    - Dst: pfx_table_for_each_ipv6_record
      Src: /src/frr/bgpd/bgp_rpki.c:757,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:760,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:762,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:765,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:767,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_rpki.c:772,1
    - Dst: get_connected_group
      Src: /src/frr/bgpd/bgp_rpki.c:781,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_rpki.c:786,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_rpki.c:786,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:790,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:797,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:798,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:801,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:802,1
    - Dst: pfx_table_for_each_ipv4_record
      Src: /src/frr/bgpd/bgp_rpki.c:807,1
    - Dst: pfx_table_for_each_ipv6_record
      Src: /src/frr/bgpd/bgp_rpki.c:810,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:813,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:815,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:818,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:820,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_rpki.c:825,1
    - Dst: is_synchronized
      Src: /src/frr/bgpd/bgp_rpki.c:836,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_rpki.c:867,1
    - Dst: ipv6_addr_to_host_byte_order
      Src: /src/frr/bgpd/bgp_rpki.c:872,1
    - Dst: rtr_mgr_validate
      Src: /src/frr/bgpd/bgp_rpki.c:881,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:887,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:892,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:897,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:902,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:919,1
    - Dst: init_tr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:920,1
    - Dst: rtr_mgr_add_group
      Src: /src/frr/bgpd/bgp_rpki.c:922,1
    - Dst: free_tr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:923,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_rpki.c:928,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:938,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:940,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:942,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:944,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:945,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:947,1
    - Dst: create_rtr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:951,1
    - Dst: add_cache
      Src: /src/frr/bgpd/bgp_rpki.c:959,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:961,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:974,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:976,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:978,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:982,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:984,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:988,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:990,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:992,1
    - Dst: create_rtr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:994,1
    - Dst: add_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1002,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1004,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1014,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1015,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1016,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1018,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1022,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1023,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1025,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1027,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1029,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1031,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1034,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1035,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1036,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1045,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1047,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1048,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1051,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1055,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:1057,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1065,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1068,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1074,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1082,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1090,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1092,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/bgpd/bgp_rpki.c:1097,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1106,1
    - Dst: rpki_delete_all_cache_nodes
      Src: /src/frr/bgpd/bgp_rpki.c:1112,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:1113,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1117,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:1123,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1124,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1127,1
    - Dst: start
      Src: /src/frr/bgpd/bgp_rpki.c:1128,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:1129,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1136,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1142,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:1143,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1148,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1159,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1171,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1183,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1187,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1199,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/bgp_rpki.c:1210,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1222,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:1242,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1244,1
    - Dst: add_tcp_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1265,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1269,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_rpki.c:1276,1
    - Dst: find_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1294,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1302,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:1302,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:1303,1
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:1304,1
    - Dst: rtr_mgr_remove_group
      Src: /src/frr/bgpd/bgp_rpki.c:1305,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1306,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_rpki.c:1313,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1314,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 392
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 504
    functionDepth: 15
    functionLinenumber: 504
    functionLinenumberEnd: 1317
    functionName: revalidate_all_routes
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 2
    functionsReached:
    - bgp_get_asnotation
    - rpki_delete_all_cache_nodes
    - peer_established
    - list_delete
    - rtr_mgr_validate
    - rtr_mgr_add_group
    - find_cache
    - listnode_add
    - rpki_update_cb_sync_rtr
    - abort
    - stop
    - rtr_mgr_start
    - rtr_mgr_stop
    - DEFUN_NOSH
    - rtr_mgr_get_first_group
    - set_nonblocking
    - DEFPY
    - is_running
    - ipv6_addr_to_host_byte_order
    - free_cache
    - hook_register
    - XCALLOC
    - add_tcp_cache
    - ALL_LIST_ELEMENTS_RO
    - RPKI_DEBUG
    - rtr_mgr_conf_in_sync
    - rpki_init_sync_socket
    - atomic_load_explicit
    - is_synchronized
    - if
    - for
    - start
    - get_connected_group
    - write
    - ntohl
    - DEFUN
    - pfx_table_for_each_ipv6_record
    - free_tr_socket
    - vty_out
    - atomic_store_explicit
    - lrtr_set_alloc_functions
    - listcount
    - zlog_err
    - json_object_int_add
    - pfx_table_for_each_ipv4_record
    - EVENT_OFF
    - add_cache
    - XFREE
    - event_add_read
    - event_add_timer
    - rtr_mgr_init
    - init_tr_socket
    - create_rtr_socket
    - rtr_mgr_remove_group
    - XSTRDUP
    - listnode_delete
    - json_object_new_array
    - __attribute__
    - list_isempty
    - rtr_mgr_free
    - XMALLOC
    - close
    - socketpair
    - get_groups
    - bgp_lookup_by_vrf_id
    - is_stopping
    - list_new
    - json_object_object_add
    - install_cli_commands
    - vty_json
    - FOREACH_AFI_SAFI
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void revalidate_all_routes(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:564,1
    - Dst: socketpair
      Src: /src/frr/bgpd/bgp_rpki.c:565,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_rpki.c:572,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_rpki.c:577,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_rpki.c:583,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_rpki.c:589,1
    - Dst: abort
      Src: /src/frr/bgpd/bgp_rpki.c:590,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 592
    functionName: rpki_init_sync_socket
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 2
    functionsReached:
    - event_add_read
    - RPKI_DEBUG
    - zlog_err
    - socketpair
    - abort
    - set_nonblocking
    linkageType: ''
    returnType: void
    signature: void rpki_init_sync_socket(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_rpki.c:601,1
    - Dst: install_cli_commands
      Src: /src/frr/bgpd/bgp_rpki.c:607,1
    - Dst: rpki_init_sync_socket
      Src: /src/frr/bgpd/bgp_rpki.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 594
    functionDepth: 2
    functionLinenumber: 594
    functionLinenumberEnd: 610
    functionName: bgp_rpki_init
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - rpki_init_sync_socket
    - list_new
    - install_cli_commands
    linkageType: ''
    returnType: int
    signature: int bgp_rpki_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:614,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_rpki.c:615,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_rpki.c:617,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_rpki.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 621
    functionName: bgp_rpki_fini
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - list_delete
    - close
    - stop
    linkageType: ''
    returnType: int
    signature: int bgp_rpki_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lrtr_set_alloc_functions
      Src: /src/frr/bgpd/bgp_rpki.c:625,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:627,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:628,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_rpki.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 632
    functionName: bgp_rpki_module_init
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - lrtr_set_alloc_functions
    - hook_register
    linkageType: ''
    returnType: int
    signature: int bgp_rpki_module_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rtr_mgr_conf_in_sync
      Src: /src/frr/bgpd/bgp_rpki.c:636,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:637,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_rpki.c:638,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 634
    functionDepth: 1
    functionLinenumber: 634
    functionLinenumberEnd: 647
    functionName: sync_expired
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - rtr_mgr_conf_in_sync
    - RPKI_DEBUG
    linkageType: ''
    returnType: void
    signature: void sync_expired(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_rpki.c:657,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:658,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:662,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_rpki.c:663,1
    - Dst: get_groups
      Src: /src/frr/bgpd/bgp_rpki.c:664,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:666,1
    - Dst: rtr_mgr_init
      Src: /src/frr/bgpd/bgp_rpki.c:667,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:671,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:675,1
    - Dst: rtr_mgr_start
      Src: /src/frr/bgpd/bgp_rpki.c:676,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:678,1
    - Dst: rtr_mgr_free
      Src: /src/frr/bgpd/bgp_rpki.c:679,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_rpki.c:683,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:685,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 690
    functionName: start
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 54
    functionsReached:
    - list_isempty
    - RPKI_DEBUG
    - listcount
    - rtr_mgr_free
    - get_groups
    - rtr_mgr_start
    - XFREE
    - rtr_mgr_init
    - event_add_timer
    linkageType: ''
    returnType: int
    signature: int start(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:695,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_rpki.c:696,1
    - Dst: rtr_mgr_stop
      Src: /src/frr/bgpd/bgp_rpki.c:697,1
    - Dst: rtr_mgr_free
      Src: /src/frr/bgpd/bgp_rpki.c:698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 701
    functionName: stop
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 43
    functionsReached:
    - rtr_mgr_stop
    - rtr_mgr_free
    - EVENT_OFF
    - is_running
    linkageType: ''
    returnType: void
    signature: void stop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:705,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:708,1
    - Dst: stop
      Src: /src/frr/bgpd/bgp_rpki.c:709,1
    - Dst: start
      Src: /src/frr/bgpd/bgp_rpki.c:710,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - force
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 703
    functionDepth: 2
    functionLinenumber: 703
    functionLinenumberEnd: 711
    functionName: reset
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 110
    functionsReached:
    - start
    - RPKI_DEBUG
    - is_running
    - stop
    linkageType: ''
    returnType: int
    signature: int reset(bool force)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/bgpd/bgp_rpki.c:715,1
    - Dst: rtr_mgr_get_first_group
      Src: /src/frr/bgpd/bgp_rpki.c:718,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 719
    functionName: get_connected_group
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 2
    functionsReached:
    - list_isempty
    - rtr_mgr_get_first_group
    linkageType: ''
    returnType: struct rtr_mgr_group
    signature: struct rtr_mgr_group *get_connected_group(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_connected_group
      Src: /src/frr/bgpd/bgp_rpki.c:726,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_rpki.c:733,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_rpki.c:733,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:737,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:744,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:745,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:748,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:749,1
    - Dst: pfx_table_for_each_ipv4_record
      Src: /src/frr/bgpd/bgp_rpki.c:754,1
    - Dst: pfx_table_for_each_ipv6_record
      Src: /src/frr/bgpd/bgp_rpki.c:757,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:760,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:762,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:765,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:767,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_rpki.c:772,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 3
    argNames:
    - vty
    - as
    - json
    argTypes:
    - struct vty*
    - as_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 721
    functionDepth: 2
    functionLinenumber: 721
    functionLinenumberEnd: 773
    functionName: print_prefix_table_by_asn
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 1
    functionsReached:
    - bgp_get_asnotation
    - json_object_new_array
    - vty_out
    - bgp_lookup_by_vrf_id
    - json_object_int_add
    - pfx_table_for_each_ipv4_record
    - json_object_object_add
    - pfx_table_for_each_ipv6_record
    - vty_json
    - get_connected_group
    linkageType: ''
    returnType: void
    signature: "void print_prefix_table_by_asn(struct vty *vty, as_t as,\n\t\t\t\t
      \     json_object *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_connected_group
      Src: /src/frr/bgpd/bgp_rpki.c:781,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_rpki.c:786,1
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_rpki.c:786,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:790,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:797,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:798,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_rpki.c:801,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_rpki.c:802,1
    - Dst: pfx_table_for_each_ipv4_record
      Src: /src/frr/bgpd/bgp_rpki.c:807,1
    - Dst: pfx_table_for_each_ipv6_record
      Src: /src/frr/bgpd/bgp_rpki.c:810,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:813,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:815,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:818,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_rpki.c:820,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_rpki.c:825,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 826
    functionName: print_prefix_table
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 1
    functionsReached:
    - bgp_get_asnotation
    - json_object_new_array
    - vty_out
    - bgp_lookup_by_vrf_id
    - json_object_int_add
    - pfx_table_for_each_ipv4_record
    - json_object_object_add
    - pfx_table_for_each_ipv6_record
    - vty_json
    - get_connected_group
    linkageType: ''
    returnType: void
    signature: void print_prefix_table(struct vty *vty, json_object *json)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: is_synchronized
      Src: /src/frr/bgpd/bgp_rpki.c:836,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_rpki.c:867,1
    - Dst: ipv6_addr_to_host_byte_order
      Src: /src/frr/bgpd/bgp_rpki.c:872,1
    - Dst: rtr_mgr_validate
      Src: /src/frr/bgpd/bgp_rpki.c:881,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:887,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:892,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:897,1
    - Dst: RPKI_DEBUG
      Src: /src/frr/bgpd/bgp_rpki.c:902,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 3
    argNames:
    - peer
    - attr
    - prefix
    argTypes:
    - struct peer*
    - struct attr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 908
    functionName: rpki_validate_prefix
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 1
    functionsReached:
    - rtr_mgr_validate
    - RPKI_DEBUG
    - is_synchronized
    - ntohl
    - ipv6_addr_to_host_byte_order
    linkageType: ''
    returnType: int
    signature: "int rpki_validate_prefix(struct peer *peer, struct attr *attr,\n\t\t\t\tconst
      struct prefix *prefix)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_running
      Src: /src/frr/bgpd/bgp_rpki.c:919,1
    - Dst: init_tr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:920,1
    - Dst: rtr_mgr_add_group
      Src: /src/frr/bgpd/bgp_rpki.c:922,1
    - Dst: free_tr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:923,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_rpki.c:928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 910
    functionDepth: 1
    functionLinenumber: 910
    functionLinenumberEnd: 931
    functionName: add_cache
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 2
    functionsReached:
    - free_tr_socket
    - rtr_mgr_add_group
    - listnode_add
    - init_tr_socket
    - is_running
    linkageType: ''
    returnType: int
    signature: int add_cache(struct cache *cache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:938,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:940,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:942,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:944,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:945,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:947,1
    - Dst: create_rtr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:951,1
    - Dst: add_cache
      Src: /src/frr/bgpd/bgp_rpki.c:959,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - host
    - port
    - preference
    - bindaddr
    argTypes:
    - char*
    - char*
    - uint8_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 965
    functionName: add_tcp_cache
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 2
    functionsReached:
    - free_cache
    - XCALLOC
    - XMALLOC
    - create_rtr_socket
    - XSTRDUP
    - add_cache
    linkageType: ''
    returnType: int
    signature: "int add_tcp_cache(const char *host, const char *port,\n\t\t\t const
      uint8_t preference, const char *bindaddr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:974,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:976,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_rpki.c:978,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:982,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:984,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:988,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:990,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_rpki.c:992,1
    - Dst: create_rtr_socket
      Src: /src/frr/bgpd/bgp_rpki.c:994,1
    - Dst: add_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1002,1
    - Dst: free_cache
      Src: /src/frr/bgpd/bgp_rpki.c:1004,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 7
    argNames:
    - host
    - port
    - username
    - client_privkey_path
    - server_pubkey_path
    - preference
    - bindaddr
    argTypes:
    - char*
    - unsigned int
    - char*
    - char*
    - char*
    - uint8_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 968
    functionDepth: 2
    functionLinenumber: 968
    functionLinenumberEnd: 1008
    functionName: add_ssh_cache
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - free_cache
    - XCALLOC
    - XMALLOC
    - create_rtr_socket
    - XSTRDUP
    - add_cache
    linkageType: ''
    returnType: int
    signature: "int add_ssh_cache(const char *host, const unsigned int port,\n\t\t\t
      const char *username, const char *client_privkey_path,\n\t\t\t const char *server_pubkey_path,\n\t\t\t
      const uint8_t preference, const char *bindaddr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1014,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1015,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1016,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1018,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1022,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1023,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1025,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1027,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1029,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1031,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1034,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1035,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_rpki.c:1036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1011
    functionDepth: 0
    functionLinenumber: 1011
    functionLinenumberEnd: 1037
    functionName: free_cache
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 4
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_cache(struct cache *cache)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1045,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1047,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1048,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1051,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1055,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_rpki.c:1057,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1065,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1068,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1074,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1082,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1090,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_rpki.c:1092,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1095
    functionName: config_write
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 9
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/frr/bgpd/bgp_rpki.c:1661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1659
    functionDepth: 3
    functionLinenumber: 1659
    functionLinenumberEnd: 1663
    functionName: config_on_exit
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: int
    signature: int config_on_exit(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_rpki.c:1736,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_rpki.c:1737,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1738,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1739,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1740,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1743,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1744,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1747,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1748,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1751,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1752,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1755,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1756,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1759,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1760,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1763,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1764,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1767,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1768,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1769,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1770,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1771,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1774,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1775,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1776,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1777,1
    - Dst: route_map_install_match
      Src: /src/frr/bgpd/bgp_rpki.c:1780,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1781,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_rpki.c:1782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1733
    functionDepth: 1
    functionLinenumber: 1733
    functionLinenumberEnd: 1783
    functionName: install_cli_commands
    functionSourceFile: /src/frr/bgpd/bgp_rpki.c
    functionUses: 3
    functionsReached:
    - install_element
    - install_default
    - install_node
    - route_map_install_match
    linkageType: ''
    returnType: void
    signature: void install_cli_commands(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: smux_init
      Src: /src/frr/bgpd/bgp_snmp.c:35,1
    - Dst: bgp_snmp_bgp4_init
      Src: /src/frr/bgpd/bgp_snmp.c:36,1
    - Dst: bgp_snmp_bgp4v2_init
      Src: /src/frr/bgpd/bgp_snmp.c:37,1
    - Dst: bgp_mpls_l3vpn_module_init
      Src: /src/frr/bgpd/bgp_snmp.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: bgp_snmp_init
    functionSourceFile: /src/frr/bgpd/bgp_snmp.c
    functionUses: 0
    functionsReached:
    - bgp_snmp_bgp4_init
    - smux_init
    - bgp_mpls_l3vpn_module_init
    - bgp_snmp_bgp4v2_init
    linkageType: ''
    returnType: int
    signature: int bgp_snmp_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_snmp.c:44,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_snmp.c:45,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_snmp.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: bgp_snmp_module_init
    functionSourceFile: /src/frr/bgpd/bgp_snmp.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int bgp_snmp_module_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_labelpool.c:111,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_labelpool.c:114,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_labelpool.c:119,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_labelpool.c:135,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/bgp_labelpool.c:149,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/bgp_labelpool.c:151,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/bgp_labelpool.c:154,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/bgp_labelpool.c:157,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 163
    functionName: lp_cbq_docallback
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    - skiplist_delete
    - zlog_debug
    - flog_err
    - BGP_DEBUG
    linkageType: ''
    returnType: wq_item_status
    signature: wq_item_status lp_cbq_docallback(struct work_queue *wq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_labelpool.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: lp_cbq_item_free
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void lp_cbq_item_free(struct work_queue *wq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_labelpool.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - goner
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: lp_lcb_free
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void lp_lcb_free(void *goner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf_free
      Src: /src/frr/bgpd/bgp_labelpool.c:179,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_labelpool.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - goner
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: lp_chunk_free
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - bf_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void lp_chunk_free(void *goner)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_labelpool.c:185,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_labelpool.c:186,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/bgp_labelpool.c:190,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/bgp_labelpool.c:191,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_labelpool.c:192,1
    - Dst: lp_fifo_init
      Src: /src/frr/bgpd/bgp_labelpool.c:194,1
    - Dst: work_queue_new
      Src: /src/frr/bgpd/bgp_labelpool.c:195,1
    - Dst: lptest_init
      Src: /src/frr/bgpd/bgp_labelpool.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - master
    - pool
    argTypes:
    - struct event_loop*
    - struct labelpool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 206
    functionName: bgp_lp_init
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 2
    functionsReached:
    - lp_fifo_init
    - lptest_init
    - zlog_debug
    - skiplist_new
    - list_new
    - BGP_DEBUG
    - work_queue_new
    linkageType: ''
    returnType: void
    signature: void bgp_lp_init(struct event_loop *master, struct labelpool *pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_labelpool.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - lcb
    argTypes:
    - struct lp_lcb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: check_bgp_lu_cb_unlock
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    linkageType: ''
    returnType: void
    signature: void check_bgp_lu_cb_unlock(struct lp_lcb *lcb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_labelpool.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - lcb
    argTypes:
    - struct lp_lcb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: check_bgp_lu_cb_lock
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - bgp_dest_lock_node
    linkageType: ''
    returnType: void
    signature: void check_bgp_lu_cb_lock(struct lp_lcb *lcb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lptest_finish
      Src: /src/frr/bgpd/bgp_labelpool.c:228,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/bgp_labelpool.c:233,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/bgp_labelpool.c:236,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_labelpool.c:239,1
    - Dst: lp_fifo_pop
      Src: /src/frr/bgpd/bgp_labelpool.c:241,1
    - Dst: check_bgp_lu_cb_unlock
      Src: /src/frr/bgpd/bgp_labelpool.c:242,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_labelpool.c:243,1
    - Dst: lp_fifo_fini
      Src: /src/frr/bgpd/bgp_labelpool.c:245,1
    - Dst: STAILQ_FOREACH_SAFE
      Src: /src/frr/bgpd/bgp_labelpool.c:253,1
    - Dst: check_bgp_lu_cb_unlock
      Src: /src/frr/bgpd/bgp_labelpool.c:254,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/bgpd/bgp_labelpool.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 259
    functionName: bgp_lp_finish
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 1
    functionsReached:
    - check_bgp_lu_cb_unlock
    - list_delete
    - lp_fifo_pop
    - STAILQ_FOREACH_SAFE
    - work_queue_free_and_null
    - lp_fifo_fini
    - XFREE
    - skiplist_free
    - lptest_finish
    linkageType: ''
    returnType: void
    signature: void bgp_lp_finish(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_labelpool.c:265,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_labelpool.c:270,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_labelpool.c:275,1
    - Dst: bf_find_next_clear_bit_wrap
      Src: /src/frr/bgpd/bgp_labelpool.c:288,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_labelpool.c:296,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/bgp_labelpool.c:299,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_labelpool.c:301,1
    - Dst: bf_set_bit
      Src: /src/frr/bgpd/bgp_labelpool.c:309,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - labelid
    argTypes:
    - void*
    assertStmts:
    - condition: (index != WORD_MAX)
      pos:
        line_end: 295
        line_start: 295
        source_file: /src/frr/bgpd/bgp_labelpool.c
    constantsTouched: []
    func_position:
      end: 317
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 317
    functionName: get_label_from_pool
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zlog_err
    - bf_set_bit
    - zlog_debug
    - bf_find_next_clear_bit_wrap
    - BGP_DEBUG
    - skiplist_insert
    - assert
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t get_label_from_pool(void *labelid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_labelpool.c:330,1
    - Dst: get_label_from_pool
      Src: /src/frr/bgpd/bgp_labelpool.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - type
    - labelid
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 339
    functionName: lcb_alloc
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - get_label_from_pool
    - XCALLOC
    linkageType: ''
    returnType: struct lp_lcb
    signature: "struct lp_lcb *lcb_alloc(\n\tint\ttype,\n\tvoid\t*labelid,\n\tint\t(*cbfunc)(mpls_label_t
      label, void *labelid, bool allocated))"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_labelpool.c:374,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_labelpool.c:377,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/bgp_labelpool.c:382,1
    - Dst: lcb_alloc
      Src: /src/frr/bgpd/bgp_labelpool.c:385,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_labelpool.c:387,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/bgp_labelpool.c:389,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_labelpool.c:393,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_labelpool.c:396,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_labelpool.c:409,1
    - Dst: check_bgp_lu_cb_lock
      Src: /src/frr/bgpd/bgp_labelpool.c:418,1
    - Dst: work_queue_add
      Src: /src/frr/bgpd/bgp_labelpool.c:420,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_labelpool.c:429,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_labelpool.c:441,1
    - Dst: check_bgp_lu_cb_lock
      Src: /src/frr/bgpd/bgp_labelpool.c:446,1
    - Dst: lp_fifo_add_tail
      Src: /src/frr/bgpd/bgp_labelpool.c:448,1
    - Dst: lp_fifo_count
      Src: /src/frr/bgpd/bgp_labelpool.c:450,1
    - Dst: zclient_send_get_label_chunk
      Src: /src/frr/bgpd/bgp_labelpool.c:453,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - type
    - labelid
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 461
    functionName: bgp_lp_get
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 2
    functionsReached:
    - skiplist_search
    - lcb_alloc
    - XCALLOC
    - work_queue_add
    - check_bgp_lu_cb_lock
    - lp_fifo_count
    - zlog_debug
    - flog_err
    - zclient_send_get_label_chunk
    - XFREE
    - BGP_DEBUG
    - skiplist_insert
    - lp_fifo_add_tail
    linkageType: ''
    returnType: void
    signature: "void bgp_lp_get(\n\tint\ttype,\n\tvoid\t*labelid,\n\tint\t(*cbfunc)(mpls_label_t
      label, void *labelid, bool allocated))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_search
      Src: /src/frr/bgpd/bgp_labelpool.c:1279,1
    - Dst: bgp_lp_get
      Src: /src/frr/bgpd/bgp_labelpool.c:1303,1
    - Dst: thread_add_event
      Src: /src/frr/bgpd/bgp_labelpool.c:1307,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1275
    functionDepth: 4
    functionLinenumber: 1275
    functionLinenumberEnd: 1309
    functionName: labelpool_test_event_handler
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    - thread_add_event
    - bgp_lp_get
    linkageType: ''
    returnType: void
    signature: void labelpool_test_event_handler(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_search
      Src: /src/frr/bgpd/bgp_labelpool.c:1318,1
    - Dst: event_cancel
      Src: /src/frr/bgpd/bgp_labelpool.c:1327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1311
    functionDepth: 1
    functionLinenumber: 1311
    functionLinenumberEnd: 1330
    functionName: lptest_stop
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - event_cancel
    - skiplist_search
    linkageType: ''
    returnType: void
    signature: void lptest_stop(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1337,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/bgp_labelpool.c:1341,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1346,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_labelpool.c:1361,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1368,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_labelpool.c:1377,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/bgp_labelpool.c:1383,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/bgp_labelpool.c:1384,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/bgp_labelpool.c:1385,1
    - Dst: thread_add_event
      Src: /src/frr/bgpd/bgp_labelpool.c:1386,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_labelpool.c:1388,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/bgp_labelpool.c:1390,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts:
    - condition: (sizeof(n1) == sizeof(tcb->request_maximum))
      pos:
        line_end: 1360
        line_start: 1360
        source_file: /src/frr/bgpd/bgp_labelpool.c
    constantsTouched: []
    func_position:
      end: 1392
      start: 1332
    functionDepth: 1
    functionLinenumber: 1332
    functionLinenumberEnd: 1392
    functionName: lptest_start
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - thread_add_event
    - vty_out
    - XCALLOC
    - monotime
    - skiplist_count
    - skiplist_new
    - skiplist_insert
    - assert
    linkageType: ''
    returnType: int
    signature: int lptest_start(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1408,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1410,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1412,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1414,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1416,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/bgp_labelpool.c:1419,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1421,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1427,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1429,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1431,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1434,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1443,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/bgp_labelpool.c:1446,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1451,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_labelpool.c:1454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - vty
    - tcb
    argTypes:
    - struct vty*
    - struct lp_test*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1404
    functionDepth: 1
    functionLinenumber: 1404
    functionLinenumberEnd: 1456
    functionName: lptest_print_stats
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - skiplist_next
    - skiplist_search
    - vty_out
    linkageType: ''
    returnType: void
    signature: void lptest_print_stats(struct vty *vty, struct lp_test *tcb)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_next
      Src: /src/frr/bgpd/bgp_labelpool.c:1597,1
    - Dst: bgp_lp_release
      Src: /src/frr/bgpd/bgp_labelpool.c:1598,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/bgp_labelpool.c:1600,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/bgp_labelpool.c:1605,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/bgp_labelpool.c:1611,1
    - Dst: event_cancel
      Src: /src/frr/bgpd/bgp_labelpool.c:1616,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_labelpool.c:1618,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_labelpool.c:1620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1621
    functionName: lptest_delete
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - memset
    - event_cancel
    - bgp_lp_release
    - skiplist_next
    - XFREE
    - skiplist_free
    linkageType: ''
    returnType: void
    signature: void lptest_delete(void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_new
      Src: /src/frr/bgpd/bgp_labelpool.c:1625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1623
    functionDepth: 1
    functionLinenumber: 1623
    functionLinenumberEnd: 1626
    functionName: lptest_init
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 1
    functionsReached:
    - skiplist_new
    linkageType: ''
    returnType: void
    signature: void lptest_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_free
      Src: /src/frr/bgpd/bgp_labelpool.c:1631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1628
    functionDepth: 1
    functionLinenumber: 1628
    functionLinenumberEnd: 1634
    functionName: lptest_finish
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 1
    functionsReached:
    - skiplist_free
    linkageType: ''
    returnType: void
    signature: void lptest_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1643,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1644,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1645,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1646,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1647,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1650,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1651,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1652,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1653,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1641
    functionDepth: 1
    functionLinenumber: 1641
    functionLinenumberEnd: 1656
    functionName: bgp_lp_vty_init
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 3
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void bgp_lp_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_labelpool.c:1667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bgp_label_per_nexthop_cache*
    - struct bgp_label_per_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1664
    functionDepth: 1
    functionLinenumber: 1664
    functionLinenumberEnd: 1668
    functionName: bgp_label_per_nexthop_cache_cmp
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int bgp_label_per_nexthop_cache_cmp(const struct bgp_label_per_nexthop_cache
      *a,\n\t\t\t\t    const struct bgp_label_per_nexthop_cache *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_labelpool.c:1676,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_labelpool.c:1680,1
    - Dst: LIST_INIT
      Src: /src/frr/bgpd/bgp_labelpool.c:1681,1
    - Dst: bgp_label_per_nexthop_cache_add
      Src: /src/frr/bgpd/bgp_labelpool.c:1682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - tree
    - nexthop
    argTypes:
    - struct bgp_label_per_nexthop_cache_head*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1670
    functionDepth: 0
    functionLinenumber: 1670
    functionLinenumberEnd: 1685
    functionName: bgp_label_per_nexthop_new
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 2
    functionsReached:
    - prefix_copy
    - bgp_label_per_nexthop_cache_add
    - LIST_INIT
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_label_per_nexthop_cache
    signature: "struct bgp_label_per_nexthop_cache *\nbgp_label_per_nexthop_new(struct
      bgp_label_per_nexthop_cache_head *tree,\n\t\t\t  struct prefix *nexthop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_labelpool.c:1696,1
    - Dst: bgp_label_per_nexthop_cache_find
      Src: /src/frr/bgpd/bgp_labelpool.c:1697,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tree
    - nexthop
    argTypes:
    - struct bgp_label_per_nexthop_cache_head*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1687
    functionDepth: 0
    functionLinenumber: 1687
    functionLinenumberEnd: 1698
    functionName: bgp_label_per_nexthop_find
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 2
    functionsReached:
    - bgp_label_per_nexthop_cache_find
    - memcpy
    linkageType: ''
    returnType: struct bgp_label_per_nexthop_cache
    signature: "struct bgp_label_per_nexthop_cache *\nbgp_label_per_nexthop_find(struct
      bgp_label_per_nexthop_cache_head *tree,\n\t\t\t   struct prefix *nexthop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_zebra_send_nexthop_label
      Src: /src/frr/bgpd/bgp_labelpool.c:1703,1
    - Dst: bgp_lp_release
      Src: /src/frr/bgpd/bgp_labelpool.c:1707,1
    - Dst: bgp_label_per_nexthop_cache_del
      Src: /src/frr/bgpd/bgp_labelpool.c:1709,1
    - Dst: nexthop_free
      Src: /src/frr/bgpd/bgp_labelpool.c:1711,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_labelpool.c:1713,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - blnc
    argTypes:
    - struct bgp_label_per_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1700
    functionDepth: 2
    functionLinenumber: 1700
    functionLinenumberEnd: 1714
    functionName: bgp_label_per_nexthop_free
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 2
    functionsReached:
    - nexthop_free
    - bgp_zebra_send_nexthop_label
    - bgp_lp_release
    - bgp_label_per_nexthop_cache_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_label_per_nexthop_free(struct bgp_label_per_nexthop_cache
      *blnc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_labelpool.c:1718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1716
    functionDepth: 1
    functionLinenumber: 1716
    functionLinenumberEnd: 1719
    functionName: bgp_label_per_nexthop_init
    functionSourceFile: /src/frr/bgpd/bgp_labelpool.c
    functionUses: 3
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void bgp_label_per_nexthop_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: is_vrf_rd_configured
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int is_vrf_rd_configured(struct bgp *bgp_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_private.h:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp_vrf
    - prd
    argTypes:
    - struct bgp*
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: bgp_evpn_vrf_rd_matches_existing
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_vrf_rd_matches_existing(struct bgp *bgp_vrf,\n\t\t\t\t\t\t
      \  struct prefix_rd *prd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: bgpevpn_get_l3vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: vni_t
    signature: vni_t bgpevpn_get_l3vni(struct bgpevpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:213,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vpn
    - rmac
    argTypes:
    - struct bgpevpn*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 217
    functionName: bgpevpn_get_rmac
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: void bgpevpn_get_rmac(struct bgpevpn *vpn, struct ethaddr *rmac)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: bgpevpn_get_vrf_export_rtl
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct list
    signature: struct list *bgpevpn_get_vrf_export_rtl(struct bgpevpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: bgpevpn_get_vrf_import_rtl
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct list
    signature: struct list *bgpevpn_get_vrf_import_rtl(struct bgpevpn *vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:244,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_evpn_private.h:245,1
    - Dst: bgp_evpn_es_evi_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_private.h:247,1
    - Dst: bgp_unlock
      Src: /src/frr/bgpd/bgp_evpn_private.h:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 252
    functionName: bgpevpn_unlink_from_l3vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - listnode_delete
    - bgp_evpn_es_evi_vrf_deref
    - UNSET_FLAG
    - bgp_unlock
    linkageType: ''
    returnType: void
    signature: void bgpevpn_unlink_from_l3vni(struct bgpevpn *vpn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_evpn_private.h:262,1
    - Dst: bgp_lock
      Src: /src/frr/bgpd/bgp_evpn_private.h:267,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn_private.h:268,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:275,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:276,1
    - Dst: bgp_evpn_es_evi_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_private.h:278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 279
    functionName: bgpevpn_link_to_l3vni
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 3
    functionsReached:
    - listnode_add_sort
    - CHECK_FLAG
    - bgp_lookup_by_vrf_id
    - bgp_lock
    - SET_FLAG
    - bgp_evpn_es_evi_vrf_ref
    linkageType: ''
    returnType: void
    signature: void bgpevpn_link_to_l3vni(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: is_vni_configured
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int is_vni_configured(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: is_vni_live
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 14
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int is_vni_live(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: is_l3vni_live
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_l3vni_live(struct bgp *bgp_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: is_rd_configured
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int is_rd_configured(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_private.h:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vpn
    - prd
    argTypes:
    - struct bgpevpn*
    - struct prefix_rd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: bgp_evpn_rd_matches_existing
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_rd_matches_existing(struct bgpevpn *vpn,\n\t\t\t\t\t
      \      struct prefix_rd *prd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: is_import_rt_configured
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int is_import_rt_configured(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: is_export_rt_configured
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int is_export_rt_configured(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:320,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - eval
    - mac
    argTypes:
    - struct ecommunity_val*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 324
    functionName: encode_es_rt_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_es_rt_extcomm(struct ecommunity_val *eval,\n\t\t\t\t\tstruct
      ethaddr *mac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - eval
    - pref
    argTypes:
    - struct ecommunity_val*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 335
    functionName: encode_df_elect_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_df_elect_extcomm(struct ecommunity_val *eval,\n\t\t\t\t\t
      \  uint16_t pref)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - eval
    - single_active
    argTypes:
    - struct ecommunity_val*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 345
    functionName: encode_esi_label_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_esi_label_extcomm(struct ecommunity_val *eval,\n\t\t\t\t\tbool
      single_active)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:350,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - eval
    - rmac
    argTypes:
    - struct ecommunity_val*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 354
    functionName: encode_rmac_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_rmac_extcomm(struct ecommunity_val *eval,\n\t\t\t\t       struct
      ethaddr *rmac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - eval
    argTypes:
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 361
    functionName: encode_default_gw_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void encode_default_gw_extcomm(struct ecommunity_val *eval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - static_mac
    - seq
    - eval
    argTypes:
    - int
    - uint32_t
    - struct ecommunity_val*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 375
    functionName: encode_mac_mobility_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_mac_mobility_extcomm(int static_mac, uint32_t seq,\n\t\t\t\t\t
      \      struct ecommunity_val *eval)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - eval
    - na_flag
    - proxy
    argTypes:
    - struct ecommunity_val*
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 387
    functionName: encode_na_flag_extcomm
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void encode_na_flag_extcomm(struct ecommunity_val *eval,\n\t\t\t\t\t
      \ uint8_t na_flag, bool proxy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:392,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn_private.h:393,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:396,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn_private.h:398,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - evp
    - ip
    argTypes:
    - struct prefix_evpn*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 404
    functionName: ip_prefix_from_type5_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v6
    - memcpy
    - is_evpn_prefix_ipaddr_v4
    - memset
    linkageType: ''
    returnType: void
    signature: "void ip_prefix_from_type5_prefix(const struct prefix_evpn *evp,\n\t\t\t\t\t
      \      struct prefix *ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - evp
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 413
    functionName: is_evpn_prefix_default
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_evpn_prefix_default(const struct prefix *evp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:418,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn_private.h:419,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:422,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn_private.h:424,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - evp
    - ip
    argTypes:
    - struct prefix_evpn*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 430
    functionName: ip_prefix_from_type2_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v6
    - memcpy
    - is_evpn_prefix_ipaddr_v4
    - memset
    linkageType: ''
    returnType: void
    signature: "void ip_prefix_from_type2_prefix(const struct prefix_evpn *evp,\n\t\t\t\t\t
      \      struct prefix *ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ip_prefix_from_type2_prefix
      Src: /src/frr/bgpd/bgp_evpn_private.h:436,1
    - Dst: ip_prefix_from_type5_prefix
      Src: /src/frr/bgpd/bgp_evpn_private.h:438,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - evp
    - ip
    argTypes:
    - struct prefix_evpn*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 439
    functionName: ip_prefix_from_evpn_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - ip_prefix_from_type5_prefix
    - ip_prefix_from_type2_prefix
    linkageType: ''
    returnType: void
    signature: "void ip_prefix_from_evpn_prefix(const struct prefix_evpn *evp,\n\t\t\t\t\t
      \     struct prefix *ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:445,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:449,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - p
    - mac
    - ip
    argTypes:
    - struct prefix_evpn*
    - struct ethaddr*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 452
    functionName: build_evpn_type2_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 5
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void build_evpn_type2_prefix(struct prefix_evpn *p,\n\t\t\t\t\t   struct
      ethaddr *mac,\n\t\t\t\t\t   struct ipaddr *ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:460,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:463,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:467,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:471,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - evp
    - ip_prefix
    argTypes:
    - struct prefix_evpn*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 478
    functionName: build_type5_prefix_from_ip_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void build_type5_prefix_from_ip_prefix(struct prefix_evpn *evp,\n\t\t\t\t
      \ const struct prefix *ip_prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - p
    - originator_ip
    argTypes:
    - struct prefix_evpn*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 489
    functionName: build_evpn_type3_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 10
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void build_evpn_type3_prefix(struct prefix_evpn *p,\n\t\t\t\t\t   struct
      in_addr originator_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:495,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - p
    - esi
    - originator_ip
    argTypes:
    - struct prefix_evpn*
    - esi_t*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 503
    functionName: build_evpn_type4_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void build_evpn_type4_prefix(struct prefix_evpn *p,\n\t\t\t\t\t   esi_t
      *esi,\n\t\t\t\t\t   struct in_addr originator_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:510,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - p
    - eth_tag
    - esi
    - originator_ip
    argTypes:
    - struct prefix_evpn*
    - uint32_t
    - esi_t*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 518
    functionName: build_evpn_type1_prefix
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void build_evpn_type1_prefix(struct prefix_evpn *p,\n\t\tuint32_t
      eth_tag,\n\t\tesi_t *esi,\n\t\tstruct in_addr originator_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - global_p
    - vni_p
    argTypes:
    - struct prefix_evpn*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 527
    functionName: evpn_type1_prefix_global_copy
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void evpn_type1_prefix_global_copy(struct prefix_evpn *global_p,\n\t\tconst
      struct prefix_evpn *vni_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - vni_p
    - global_p
    - originator_ip
    argTypes:
    - struct prefix_evpn*
    - struct prefix_evpn*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 542
    functionName: evpn_type1_prefix_vni_ip_copy
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 3
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: struct prefix_evpn
    signature: "struct prefix_evpn *\nevpn_type1_prefix_vni_ip_copy(struct prefix_evpn
      *vni_p,\n\t\t\t      const struct prefix_evpn *global_p,\n\t\t\t      struct
      in_addr originator_ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - global_p
    - vni_p
    - mac
    - ip
    argTypes:
    - struct prefix_evpn*
    - struct prefix_evpn*
    - struct ethaddr*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 555
    functionName: evpn_type2_prefix_global_copy
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 6
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void evpn_type2_prefix_global_copy(\n\tstruct prefix_evpn *global_p,
      const struct prefix_evpn *vni_p,\n\tconst struct ethaddr *mac, const struct
      ipaddr *ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:561,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vni_p
    - global_p
    argTypes:
    - struct prefix_evpn*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 563
    functionName: evpn_type2_prefix_vni_ip_copy
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void evpn_type2_prefix_vni_ip_copy(struct prefix_evpn *vni_p,\n\t\t\t
      \     const struct prefix_evpn *global_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:569,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_private.h:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vni_p
    - global_p
    argTypes:
    - struct prefix_evpn*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 571
    functionName: evpn_type2_prefix_vni_mac_copy
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void evpn_type2_prefix_vni_mac_copy(struct prefix_evpn *vni_p,\n\t\t\t
      \      const struct prefix_evpn *global_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_private.h:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - local_pi
    argTypes:
    - struct bgp_path_info*
    assertStmts:
    - condition: (local_pi->extra)
      pos:
        line_end: 576
        line_start: 576
        source_file: /src/frr/bgpd/bgp_evpn_private.h
    constantsTouched: []
    func_position:
      end: 579
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 579
    functionName: evpn_type2_path_info_get_mac
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 9
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct ethaddr
    signature: 'struct ethaddr *

      evpn_type2_path_info_get_mac(const struct bgp_path_info *local_pi)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_private.h:585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - local_pi
    argTypes:
    - struct bgp_path_info*
    assertStmts:
    - condition: (local_pi->extra)
      pos:
        line_end: 584
        line_start: 584
        source_file: /src/frr/bgpd/bgp_evpn_private.h
    constantsTouched: []
    func_position:
      end: 587
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 587
    functionName: evpn_type2_path_info_get_ip
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 6
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct ipaddr
    signature: 'struct ipaddr *

      evpn_type2_path_info_get_ip(const struct bgp_path_info *local_pi)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_private.h:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - local_pi
    - mac
    argTypes:
    - struct bgp_path_info*
    - struct ethaddr
    assertStmts:
    - condition: (local_pi->extra)
      pos:
        line_end: 592
        line_start: 592
        source_file: /src/frr/bgpd/bgp_evpn_private.h
    constantsTouched: []
    func_position:
      end: 595
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 595
    functionName: evpn_type2_path_info_set_mac
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: "void evpn_type2_path_info_set_mac(struct bgp_path_info *local_pi,\n\t\t\t\t\t\tconst
      struct ethaddr mac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_private.h:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - local_pi
    - ip
    argTypes:
    - struct bgp_path_info*
    - struct ipaddr
    assertStmts:
    - condition: (local_pi->extra)
      pos:
        line_end: 600
        line_start: 600
        source_file: /src/frr/bgpd/bgp_evpn_private.h
    constantsTouched: []
    func_position:
      end: 603
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 603
    functionName: evpn_type2_path_info_set_ip
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: "void evpn_type2_path_info_set_ip(struct bgp_path_info *local_pi,\n\t\t\t\t\t
      \      const struct ipaddr ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_private.h:609,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_private.h:611,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_evpn_private.h:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts:
    - condition: (evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE)
      pos:
        line_end: 610
        line_start: 610
        source_file: /src/frr/bgpd/bgp_evpn_private.h
    constantsTouched: []
    func_position:
      end: 613
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 613
    functionName: is_evpn_type2_dest_ipaddr_none
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 1
    functionsReached:
    - is_evpn_prefix_ipaddr_none
    - bgp_dest_get_prefix
    - assert
    linkageType: ''
    returnType: bool
    signature: bool is_evpn_type2_dest_ipaddr_none(const struct bgp_dest *dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:619,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_private.h:623,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 627
    functionName: evpn_default_originate_set
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int evpn_default_originate_set(struct bgp *bgp, afi_t afi,\n\t\t\t\t\t
      \    safi_t safi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_private.h:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - esi
    - mac
    argTypes:
    - esi_t*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 637
    functionName: es_get_system_mac
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void es_get_system_mac(esi_t *esi,\n\t\t\t\t     struct ethaddr *mac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_private.h:643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 647
    functionName: bgp_evpn_is_svi_macip_enabled
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 0
    functionsReached:
    - bgp_get_evpn
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_is_svi_macip_enabled(struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - pi
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 649
    functionDepth: 0
    functionLinenumber: 649
    functionLinenumberEnd: 655
    functionName: bgp_evpn_is_path_local
    functionSourceFile: /src/frr/bgpd/bgp_evpn_private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_is_path_local(struct bgp *bgp,\n\t\tstruct bgp_path_info
      *pi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_zebra_num_connects
      Src: /src/frr/bgpd/bgp_nht.c:45,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: bgp_isvalid_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - bgp_zebra_num_connects
    linkageType: ''
    returnType: int
    signature: int bgp_isvalid_nexthop(struct bgp_nexthop_cache *bnc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:65,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:66,1
    - Dst: if_lookup_by_index
      Src: /src/frr/bgpd/bgp_nht.c:73,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:80,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 17
    argCount: 2
    argNames:
    - bnc
    - path
    argTypes:
    - struct bgp_nexthop_cache*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 84
    functionName: bgp_isvalid_nexthop_for_ebgp
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int bgp_isvalid_nexthop_for_ebgp(struct bgp_nexthop_cache *bnc,\n\t\t\t\t\tstruct
      bgp_path_info *path)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/bgpd/bgp_nht.c:94,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:105,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - bnc
    - path
    argTypes:
    - struct bgp_nexthop_cache*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 110
    functionName: bgp_isvalid_nexthop_for_mplsovergre
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int bgp_isvalid_nexthop_for_mplsovergre(struct bgp_nexthop_cache *bnc,\n\t\t\t\t\t
      \      struct bgp_path_info *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_zebra_num_connects
      Src: /src/frr/bgpd/bgp_nht.c:126,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:128,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:129,1
    - Dst: bgp_isvalid_nexthop_for_ebgp
      Src: /src/frr/bgpd/bgp_nht.c:131,1
    - Dst: bgp_isvalid_nexthop_for_mplsovergre
      Src: /src/frr/bgpd/bgp_nht.c:132,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 2
    argCount: 2
    argNames:
    - bnc
    - path
    argTypes:
    - struct bgp_nexthop_cache*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 133
    functionName: bgp_isvalid_nexthop_for_mpls
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - bgp_isvalid_nexthop_for_mplsovergre
    - CHECK_FLAG
    - bgp_isvalid_nexthop_for_ebgp
    - bgp_zebra_num_connects
    linkageType: ''
    returnType: int
    signature: "int bgp_isvalid_nexthop_for_mpls(struct bgp_nexthop_cache *bnc,\n\t\t\t\t\tstruct
      bgp_path_info *path)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_nht.c:137,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:138,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:139,1
    - Dst: bnc_existing_for_prefix
      Src: /src/frr/bgpd/bgp_nht.c:143,1
    - Dst: unregister_zebra_rnh
      Src: /src/frr/bgpd/bgp_nht.c:144,1
    - Dst: bnc_free
      Src: /src/frr/bgpd/bgp_nht.c:145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 147
    functionName: bgp_unlink_nexthop_check
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - unregister_zebra_rnh
    - bnc_free
    - zlog_debug
    - LIST_EMPTY
    - BGP_DEBUG
    - bnc_existing_for_prefix
    linkageType: ''
    returnType: void
    signature: void bgp_unlink_nexthop_check(struct bgp_nexthop_cache *bnc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_nht.c:153,1
    - Dst: path_nh_map
      Src: /src/frr/bgpd/bgp_nht.c:158,1
    - Dst: bgp_unlink_nexthop_check
      Src: /src/frr/bgpd/bgp_nht.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 161
    functionName: bgp_unlink_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 6
    functionsReached:
    - bgp_mplsvpn_path_nh_label_unlink
    - bgp_unlink_nexthop_check
    - path_nh_map
    linkageType: ''
    returnType: void
    signature: void bgp_unlink_nexthop(struct bgp_path_info *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:171,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:178,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nht.c:181,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:182,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:184,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:192,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:194,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - struct peer*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 201
    functionName: bgp_replace_nexthop_by_peer
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - sockunion2hostprefix
    - IN6_IS_ADDR_LINKLOCAL
    - bnc_find
    - family2afi
    linkageType: ''
    returnType: void
    signature: void bgp_replace_nexthop_by_peer(struct peer *from, struct peer *to)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nht.c:212,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:215,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:216,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:226,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 232
    functionName: bgp_find_ipv6_nexthop_matching_peer
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - frr_each
    linkageType: ''
    returnType: struct bgp_nexthop_cache
    signature: 'struct bgp_nexthop_cache *

      bgp_find_ipv6_nexthop_matching_peer(struct peer *peer)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nht.c:238,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:241,1
    - Dst: bgp_find_ipv6_nexthop_matching_peer
      Src: /src/frr/bgpd/bgp_nht.c:252,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:259,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:261,1
    - Dst: bgp_unlink_nexthop_check
      Src: /src/frr/bgpd/bgp_nht.c:271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 272
    functionName: bgp_unlink_nexthop_by_peer
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - sockunion2hostprefix
    - IN6_IS_ADDR_LINKLOCAL
    - bnc_find
    - bgp_find_ipv6_nexthop_matching_peer
    - family2afi
    - bgp_unlink_nexthop_check
    linkageType: ''
    returnType: void
    signature: void bgp_unlink_nexthop_by_peer(struct peer *peer)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: BGP_ATTR_MP_NEXTHOP_LEN_IP6
      Src: /src/frr/bgpd/bgp_nht.c:301,1
    - Dst: IS_MAPPED_IPV6
      Src: /src/frr/bgpd/bgp_nht.c:305,1
    - Dst: make_prefix
      Src: /src/frr/bgpd/bgp_nht.c:311,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_nht.c:315,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:316,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:317,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:331,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:334,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:335,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:343,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:344,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:345,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:359,1
    - Dst: bnc_new
      Src: /src/frr/bgpd/bgp_nht.c:361,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:363,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:364,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:368,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:369,1
    - Dst: is_route_parent_evpn
      Src: /src/frr/bgpd/bgp_nht.c:376,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:383,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:384,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:385,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:386,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:390,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:392,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:393,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:394,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:410,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:411,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:412,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:413,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:415,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:416,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:417,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:418,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:421,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:422,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:426,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:427,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:428,1
    - Dst: is_default_host_route
      Src: /src/frr/bgpd/bgp_nht.c:429,1
    - Dst: register_zebra_rnh
      Src: /src/frr/bgpd/bgp_nht.c:430,1
    - Dst: bgp_unlink_nexthop
      Src: /src/frr/bgpd/bgp_nht.c:437,1
    - Dst: path_nh_map
      Src: /src/frr/bgpd/bgp_nht.c:440,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_nht.c:442,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:443,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_nht.c:444,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:455,1
    - Dst: bgp_isvalid_nexthop_for_mpls
      Src: /src/frr/bgpd/bgp_nht.c:469,1
    - Dst: bgp_isvalid_nexthop
      Src: /src/frr/bgpd/bgp_nht.c:471,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 103
    argCount: 8
    argNames:
    - bgp_route
    - bgp_nexthop
    - afi
    - safi
    - pi
    - peer
    - connected
    - orig_prefix
    argTypes:
    - struct bgp*
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_path_info*
    - struct peer*
    - int
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 472
    functionName: bgp_find_or_add_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 8
    functionsReached:
    - IS_MAPPED_IPV6
    - is_default_host_route
    - BGP_DEBUG
    - sockunion2hostprefix
    - bgp_path_info_extra_get
    - path_nh_map
    - zlog_debug
    - is_route_parent_evpn
    - bnc_new
    - make_prefix
    - bgp_get_imported_bpi_ultimate
    - prefix_same
    - register_zebra_rnh
    - bnc_find
    - UNSET_FLAG
    - bgp_isvalid_nexthop
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - bgp_unlink_nexthop
    - BGP_ATTR_MP_NEXTHOP_LEN_IP6
    - SET_FLAG
    - bgp_isvalid_nexthop_for_mpls
    linkageType: ''
    returnType: int
    signature: "int bgp_find_or_add_nexthop(struct bgp *bgp_route, struct bgp *bgp_nexthop,\n\t\t\t
      \   afi_t afi, safi_t safi, struct bgp_path_info *pi,\n\t\t\t    struct peer
      *peer, int connected,\n\t\t\t    const struct prefix *orig_prefix)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:492,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:498,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:500,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nht.c:500,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:503,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:504,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:511,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:512,1
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_nht.c:521,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:522,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:523,1
    - Dst: unregister_zebra_rnh
      Src: /src/frr/bgpd/bgp_nht.c:526,1
    - Dst: bnc_free
      Src: /src/frr/bgpd/bgp_nht.c:527,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - afi
    - peer
    argTypes:
    - afi_t
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 529
    functionName: bgp_delete_connected_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - sockunion2hostprefix
    - unregister_zebra_rnh
    - bnc_free
    - IN6_IS_ADDR_LINKLOCAL
    - bnc_find
    - zlog_debug
    - LIST_EMPTY
    - family2afi
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void bgp_delete_connected_nexthop(afi_t afi, struct peer *peer)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_nht.c:542,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:546,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:549,1
    - Dst: bgp_nexthop_dump_bnc_flags
      Src: /src/frr/bgpd/bgp_nht.c:554,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_nht.c:565,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:566,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:567,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:568,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:569,1
    - Dst: bnc_nexthop_free
      Src: /src/frr/bgpd/bgp_nht.c:571,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:574,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:575,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:583,1
    - Dst: nexthop_from_zapi_nexthop
      Src: /src/frr/bgpd/bgp_nht.c:595,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:603,1
    - Dst: if_lookup_by_index
      Src: /src/frr/bgpd/bgp_nht.c:609,1
    - Dst: zclient_send_interface_radv_req
      Src: /src/frr/bgpd/bgp_nht.c:612,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:625,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:627,1
    - Dst: nexthop2str
      Src: /src/frr/bgpd/bgp_nht.c:629,1
    - Dst: nexthop_same
      Src: /src/frr/bgpd/bgp_nht.c:649,1
    - Dst: bnc_nexthop_free
      Src: /src/frr/bgpd/bgp_nht.c:655,1
    - Dst: bgp_evpn_is_gateway_ip_resolved
      Src: /src/frr/bgpd/bgp_nht.c:667,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:669,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:670,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:692,1
    - Dst: bnc_nexthop_free
      Src: /src/frr/bgpd/bgp_nht.c:694,1
    - Dst: evaluate_paths
      Src: /src/frr/bgpd/bgp_nht.c:698,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 82
    argCount: 3
    argNames:
    - bnc
    - nhr
    - import_check
    argTypes:
    - struct bgp_nexthop_cache*
    - struct zapi_route*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 699
    functionName: bgp_process_nexthop_update
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - nexthop_same
    - evaluate_paths
    - if_lookup_by_index
    - prefix_same
    - CHECK_FLAG
    - monotime
    - bgp_evpn_is_gateway_ip_resolved
    - zclient_send_interface_radv_req
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - BGP_DEBUG
    - nexthop_from_zapi_nexthop
    - bgp_nexthop_dump_bnc_flags
    - nexthop2str
    - bnc_nexthop_free
    linkageType: ''
    returnType: void
    signature: "void bgp_process_nexthop_update(struct bgp_nexthop_cache *bnc,\n\t\t\t\t
      \      struct zapi_route *nhr,\n\t\t\t\t       bool import_check)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_nht.c:711,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:721,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:722,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:725,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:726,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:727,1
    - Dst: evaluate_paths
      Src: /src/frr/bgpd/bgp_nht.c:731,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - bgp
    - table
    - ifp
    - up
    argTypes:
    - struct bgp*
    - struct bgp_nexthop_cache_head*
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 733
    functionName: bgp_nht_ifp_table_handle
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - evaluate_paths
    - SET_FLAG
    - UNSET_FLAG
    - monotime
    linkageType: ''
    returnType: void
    signature: "void bgp_nht_ifp_table_handle(struct bgp *bgp,\n\t\t\t\t     struct
      bgp_nexthop_cache_head *table,\n\t\t\t\t     struct interface *ifp, bool up)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_nht.c:711,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:721,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:722,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:725,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:726,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:727,1
    - Dst: evaluate_paths
      Src: /src/frr/bgpd/bgp_nht.c:731,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 732
    functionName: frr_each
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 62
    functionsReached:
    - evaluate_paths
    - SET_FLAG
    - UNSET_FLAG
    - monotime
    linkageType: ''
    returnType: void
    signature: void frr_each (bgp_nexthop_cache, table, bnc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_nht_ifp_table_handle
      Src: /src/frr/bgpd/bgp_nht.c:742,1
    - Dst: bgp_nht_ifp_table_handle
      Src: /src/frr/bgpd/bgp_nht.c:744,1
    - Dst: bgp_nht_ifp_table_handle
      Src: /src/frr/bgpd/bgp_nht.c:746,1
    - Dst: bgp_nht_ifp_table_handle
      Src: /src/frr/bgpd/bgp_nht.c:748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ifp
    - up
    argTypes:
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 734
    functionDepth: 2
    functionLinenumber: 734
    functionLinenumberEnd: 750
    functionName: bgp_nht_ifp_handle
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - bgp_nht_ifp_table_handle
    linkageType: ''
    returnType: void
    signature: void bgp_nht_ifp_handle(struct interface *ifp, bool up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_nht_ifp_handle
      Src: /src/frr/bgpd/bgp_nht.c:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 752
    functionDepth: 3
    functionLinenumber: 752
    functionLinenumberEnd: 755
    functionName: bgp_nht_ifp_up
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - bgp_nht_ifp_handle
    linkageType: ''
    returnType: void
    signature: void bgp_nht_ifp_up(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_nht_ifp_handle
      Src: /src/frr/bgpd/bgp_nht.c:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 757
    functionDepth: 3
    functionLinenumber: 757
    functionLinenumberEnd: 760
    functionName: bgp_nht_ifp_down
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - bgp_nht_ifp_handle
    linkageType: ''
    returnType: void
    signature: void bgp_nht_ifp_down(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_VAL
      Src: /src/frr/bgpd/bgp_nht.c:764,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_nht.c:765,1
    - Dst: if_lookup_by_index
      Src: /src/frr/bgpd/bgp_nht.c:766,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:771,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:772,1
    - Dst: if_is_up
      Src: /src/frr/bgpd/bgp_nht.c:774,1
    - Dst: if_is_up
      Src: /src/frr/bgpd/bgp_nht.c:776,1
    - Dst: bgp_nht_ifp_up
      Src: /src/frr/bgpd/bgp_nht.c:777,1
    - Dst: bgp_nht_ifp_down
      Src: /src/frr/bgpd/bgp_nht.c:779,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 762
    functionDepth: 4
    functionLinenumber: 762
    functionLinenumberEnd: 780
    functionName: bgp_nht_ifp_initial
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - bgp_nht_ifp_up
    - EVENT_VAL
    - zlog_debug
    - bgp_nht_ifp_down
    - EVENT_ARG
    - BGP_DEBUG
    - if_is_up
    linkageType: ''
    returnType: void
    signature: void bgp_nht_ifp_initial(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:799,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:802,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:808,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:812,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_nht.c:817,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 819
    functionName: bgp_nht_interface_events
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 4
    functionsReached:
    - sockunion2hostprefix
    - IN6_IS_ADDR_LINKLOCAL
    - bnc_find
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void bgp_nht_interface_events(struct peer *peer)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_lookup_by_vrf_id
      Src: /src/frr/bgpd/bgp_nht.c:830,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_nht.c:832,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/bgpd/bgp_nht.c:839,1
    - Dst: zlog_err
      Src: /src/frr/bgpd/bgp_nht.c:840,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nht.c:845,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:848,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:850,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:851,1
    - Dst: bgp_process_nexthop_update
      Src: /src/frr/bgpd/bgp_nht.c:855,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:859,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:861,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:862,1
    - Dst: bgp_process_nexthop_update
      Src: /src/frr/bgpd/bgp_nht.c:866,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nht.c:882,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_nht.c:884,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:886,1
    - Dst: bgp_process_nexthop_update
      Src: /src/frr/bgpd/bgp_nht.c:889,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 2
    argNames:
    - command
    - vrf_id
    argTypes:
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 821
    functionDepth: 2
    functionLinenumber: 821
    functionLinenumberEnd: 892
    functionName: bgp_parse_nexthop_update
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - bgp_process_nexthop_update
    - prefix_same
    - frr_each
    - bnc_find
    - CHECK_FLAG
    - zlog_err
    - bgp_lookup_by_vrf_id
    - flog_err
    - zlog_debug
    - zapi_nexthop_update_decode
    - family2afi
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void bgp_parse_nexthop_update(int command, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nht.c:903,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:906,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:907,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:908,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 898
    functionDepth: 1
    functionLinenumber: 898
    functionLinenumberEnd: 912
    functionName: bgp_cleanup_nexthops
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 2
    functionsReached:
    - UNSET_FLAG
    - frr_each
    linkageType: ''
    returnType: void
    signature: void bgp_cleanup_nexthops(struct bgp *bgp)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nht.c:926,1
    - Dst: bgp_flowspec_get_first_nh
      Src: /src/frr/bgpd/bgp_nht.c:932,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_nht.c:935,1
    - Dst: IS_MAPPED_IPV6
      Src: /src/frr/bgpd/bgp_nht.c:943,1
    - Dst: ipv4_mapped_ipv6_to_ipv4
      Src: /src/frr/bgpd/bgp_nht.c:944,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_nht.c:970,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:972,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:992,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:993,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 3
    argNames:
    - afi
    - pi
    - p
    argTypes:
    - int
    - struct bgp_path_info*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 1000
    functionName: make_prefix
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - memset
    - bgp_dest_get_prefix
    - IN6_IS_ADDR_LINKLOCAL
    - IS_MAPPED_IPV6
    - bgp_flowspec_get_first_nh
    - zlog_debug
    - BGP_DEBUG
    - ipv4_mapped_ipv6_to_ipv4
    linkageType: ''
    returnType: int
    signature: int make_prefix(int afi, struct bgp_path_info *pi, struct prefix *p)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_nht.c:1021,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1022,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1023,1
    - Dst: bgp_zebra_num_connects
      Src: /src/frr/bgpd/bgp_nht.c:1029,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1030,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1031,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1036,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1038,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1042,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1043,1
    - Dst: zserv_command_string
      Src: /src/frr/bgpd/bgp_nht.c:1044,1
    - Dst: zclient_send_rnh
      Src: /src/frr/bgpd/bgp_nht.c:1047,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_nht.c:1051,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1057,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1059,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - bnc
    - command
    argTypes:
    - struct bgp_nexthop_cache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1061
    functionName: sendmsg_zebra_rnh
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - bgp_zebra_num_connects
    - flog_warn
    - CHECK_FLAG
    - zserv_command_string
    - zclient_send_rnh
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void sendmsg_zebra_rnh(struct bgp_nexthop_cache *bnc, int command)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1078,1
    - Dst: sendmsg_zebra_rnh
      Src: /src/frr/bgpd/bgp_nht.c:1082,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1071
    functionDepth: 2
    functionLinenumber: 1071
    functionLinenumberEnd: 1083
    functionName: register_zebra_rnh
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 3
    functionsReached:
    - SET_FLAG
    - sendmsg_zebra_rnh
    linkageType: ''
    returnType: void
    signature: void register_zebra_rnh(struct bgp_nexthop_cache *bnc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1095,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1099,1
    - Dst: sendmsg_zebra_rnh
      Src: /src/frr/bgpd/bgp_nht.c:1103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1092
    functionDepth: 2
    functionLinenumber: 1092
    functionLinenumberEnd: 1104
    functionName: unregister_zebra_rnh
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - UNSET_FLAG
    - sendmsg_zebra_rnh
    linkageType: ''
    returnType: void
    signature: void unregister_zebra_rnh(struct bgp_nexthop_cache *bnc)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1125,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1129,1
    - Dst: bgp_nexthop_dump_bnc_flags
      Src: /src/frr/bgpd/bgp_nht.c:1133,1
    - Dst: bgp_nexthop_dump_bnc_change_flags
      Src: /src/frr/bgpd/bgp_nht.c:1135,1
    - Dst: LIST_FOREACH
      Src: /src/frr/bgpd/bgp_nht.c:1139,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_nht.c:1158,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_nht.c:1158,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nht.c:1159,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nht.c:1160,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_nht.c:1161,1
    - Dst: bgp_isvalid_nexthop_for_mpls
      Src: /src/frr/bgpd/bgp_nht.c:1191,1
    - Dst: bgp_update_martian_nexthop
      Src: /src/frr/bgpd/bgp_nht.c:1194,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1197,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1198,1
    - Dst: bgp_isvalid_nexthop
      Src: /src/frr/bgpd/bgp_nht.c:1203,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1206,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/bgp_nht.c:1211,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nht.c:1212,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_nht.c:1215,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1216,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1228,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1229,1
    - Dst: bgp_get_imported_bpi_ultimate
      Src: /src/frr/bgpd/bgp_nht.c:1234,1
    - Dst: bgp_isvalid_nexthop
      Src: /src/frr/bgpd/bgp_nht.c:1235,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_nht.c:1236,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1242,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1244,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1249,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_nht.c:1254,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_nht.c:1254,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_nht.c:1264,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_nht.c:1264,1
    - Dst: bgp_aggregate_decrement
      Src: /src/frr/bgpd/bgp_nht.c:1271,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_nht.c:1273,1
    - Dst: bgp_evpn_is_prefix_nht_supported
      Src: /src/frr/bgpd/bgp_nht.c:1276,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nht.c:1276,1
    - Dst: bgp_evpn_unimport_route
      Src: /src/frr/bgpd/bgp_nht.c:1277,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nht.c:1278,1
    - Dst: vpn_leak_from_vrf_withdraw
      Src: /src/frr/bgpd/bgp_nht.c:1282,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_nht.c:1283,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_nht.c:1289,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_nht.c:1291,1
    - Dst: bgp_evpn_is_prefix_nht_supported
      Src: /src/frr/bgpd/bgp_nht.c:1294,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nht.c:1294,1
    - Dst: bgp_evpn_import_route
      Src: /src/frr/bgpd/bgp_nht.c:1295,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nht.c:1296,1
    - Dst: vpn_leak_from_vrf_update
      Src: /src/frr/bgpd/bgp_nht.c:1300,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_nht.c:1301,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_nht.c:1306,1
    - Dst: bgp_isvalid_nexthop
      Src: /src/frr/bgpd/bgp_nht.c:1310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1325,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1326,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1327,1
    - Dst: bgp_fsm_nht_update
      Src: /src/frr/bgpd/bgp_nht.c:1332,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1333,1
    - Dst: RESET_FLAG
      Src: /src/frr/bgpd/bgp_nht.c:1337,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 85
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts:
    - condition: (dest && bgp_dest_table(dest))
      pos:
        line_end: 1157
        line_start: 1157
        source_file: /src/frr/bgpd/bgp_nht.c
    constantsTouched: []
    func_position:
      end: 1338
      start: 1113
    functionDepth: 13
    functionLinenumber: 1113
    functionLinenumberEnd: 1338
    functionName: evaluate_paths
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 3
    functionsReached:
    - bgp_get_asnotation
    - bgp_path_info_set_flag
    - BGP_DEBUG
    - bgp_aggregate_decrement
    - bgp_path_info_extra_get
    - bgp_dest_get_prefix
    - bgp_get_default
    - zlog_debug
    - assert
    - bgp_get_imported_bpi_ultimate
    - bgp_nexthop_dump_bnc_change_flags
    - LIST_FOREACH
    - bgp_evpn_import_route
    - bgp_fsm_nht_update
    - vpn_leak_from_vrf_update
    - bgp_evpn_is_prefix_nht_supported
    - vpn_leak_from_vrf_withdraw
    - bgp_isvalid_nexthop
    - family2afi
    - bgp_process
    - RESET_FLAG
    - bgp_path_info_unset_flag
    - bgp_aggregate_increment
    - CHECK_FLAG
    - bgp_update_martian_nexthop
    - bgp_dest_table
    - SET_FLAG
    - bgp_isvalid_nexthop_for_mpls
    - prefix_rd2str
    - bgp_nexthop_dump_bnc_flags
    - bgp_evpn_unimport_route
    linkageType: ''
    returnType: void
    signature: void evaluate_paths(struct bgp_nexthop_cache *bnc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LIST_REMOVE
      Src: /src/frr/bgpd/bgp_nht.c:1352,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/bgpd/bgp_nht.c:1357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - path
    - bnc
    - make
    argTypes:
    - struct bgp_path_info*
    - struct bgp_nexthop_cache*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1348
    functionDepth: 0
    functionLinenumber: 1348
    functionLinenumberEnd: 1361
    functionName: path_nh_map
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 2
    functionsReached:
    - LIST_REMOVE
    - LIST_INSERT_HEAD
    linkageType: ''
    returnType: void
    signature: "void path_nh_map(struct bgp_path_info *path, struct bgp_nexthop_cache
      *bnc,\n\t\t bool make)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nht.c:1373,1
    - Dst: register_zebra_rnh
      Src: /src/frr/bgpd/bgp_nht.c:1375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1368
    functionDepth: 3
    functionLinenumber: 1368
    functionLinenumberEnd: 1378
    functionName: bgp_nht_register_nexthops
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - register_zebra_rnh
    - frr_each
    linkageType: ''
    returnType: void
    signature: void bgp_nht_register_nexthops(struct bgp *bgp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:1393,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_nht.c:1394,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:1405,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:1408,1
    - Dst: if_lookup_by_index
      Src: /src/frr/bgpd/bgp_nht.c:1416,1
    - Dst: zclient_send_interface_radv_req
      Src: /src/frr/bgpd/bgp_nht.c:1421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1380
    functionDepth: 1
    functionLinenumber: 1380
    functionLinenumberEnd: 1426
    functionName: bgp_nht_reg_enhe_cap_intfs
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - sockunion2hostprefix
    - if_lookup_by_index
    - IN6_IS_ADDR_LINKLOCAL
    - bnc_find
    - zclient_send_interface_radv_req
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void bgp_nht_reg_enhe_cap_intfs(struct peer *peer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_nht.c:1442,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_nht.c:1443,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nht.c:1454,1
    - Dst: bnc_find
      Src: /src/frr/bgpd/bgp_nht.c:1457,1
    - Dst: if_lookup_by_index
      Src: /src/frr/bgpd/bgp_nht.c:1465,1
    - Dst: zclient_send_interface_radv_req
      Src: /src/frr/bgpd/bgp_nht.c:1470,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1473
    functionName: bgp_nht_dereg_enhe_cap_intfs
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - sockunion2hostprefix
    - if_lookup_by_index
    - IN6_IS_ADDR_LINKLOCAL
    - bnc_find
    - zclient_send_interface_radv_req
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void bgp_nht_dereg_enhe_cap_intfs(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1486
    functionDepth: 0
    functionLinenumber: 1486
    functionLinenumberEnd: 1488
    functionName: bgp_l3nhg_add_cb
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_l3nhg_add_cb(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - nhgc
    argTypes:
    - struct nexthop_group_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1490
    functionDepth: 0
    functionLinenumber: 1490
    functionLinenumberEnd: 1492
    functionName: bgp_l3nhg_modify_cb
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_l3nhg_modify_cb(const struct nexthop_group_cmd *nhgc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - nhgc
    - nhop
    argTypes:
    - struct nexthop_group_cmd*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1494
    functionDepth: 0
    functionLinenumber: 1494
    functionLinenumberEnd: 1497
    functionName: bgp_l3nhg_add_nexthop_cb
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_l3nhg_add_nexthop_cb(const struct nexthop_group_cmd *nhgc,\n\t\t\t\t
      \    const struct nexthop *nhop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - nhgc
    - nhop
    argTypes:
    - struct nexthop_group_cmd*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1499
    functionDepth: 0
    functionLinenumber: 1499
    functionLinenumberEnd: 1502
    functionName: bgp_l3nhg_del_nexthop_cb
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_l3nhg_del_nexthop_cb(const struct nexthop_group_cmd *nhgc,\n\t\t\t\t
      \    const struct nexthop *nhop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1504
    functionDepth: 0
    functionLinenumber: 1504
    functionLinenumberEnd: 1506
    functionName: bgp_l3nhg_del_cb
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_l3nhg_del_cb(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_get_nhg_start
      Src: /src/frr/bgpd/bgp_nht.c:1515,1
    - Dst: nexthop_group_init
      Src: /src/frr/bgpd/bgp_nht.c:1516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1508
    functionDepth: 1
    functionLinenumber: 1508
    functionLinenumberEnd: 1519
    functionName: bgp_l3nhg_zebra_init
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - nexthop_group_init
    - zclient_get_nhg_start
    linkageType: ''
    returnType: void
    signature: void bgp_l3nhg_zebra_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/bgpd/bgp_nht.c:1526,1
    - Dst: bf_init
      Src: /src/frr/bgpd/bgp_nht.c:1527,1
    - Dst: bf_assign_zero_index
      Src: /src/frr/bgpd/bgp_nht.c:1528,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1530,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_nht.c:1530,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_nht.c:1531,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1522
    functionDepth: 1
    functionLinenumber: 1522
    functionLinenumberEnd: 1533
    functionName: bgp_l3nhg_init
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 2
    functionsReached:
    - MIN
    - bf_init
    - bf_assign_zero_index
    - zlog_debug
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void bgp_l3nhg_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf_free
      Src: /src/frr/bgpd/bgp_nht.c:1537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1535
    functionDepth: 1
    functionLinenumber: 1535
    functionLinenumberEnd: 1538
    functionName: bgp_l3nhg_finish
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 1
    functionsReached:
    - bf_free
    linkageType: ''
    returnType: void
    signature: void bgp_l3nhg_finish(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_l3nhg_zebra_init
      Src: /src/frr/bgpd/bgp_nht.c:1544,1
    - Dst: bf_assign_index
      Src: /src/frr/bgpd/bgp_nht.c:1545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1540
    functionDepth: 2
    functionLinenumber: 1540
    functionLinenumberEnd: 1550
    functionName: bgp_l3nhg_id_alloc
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - bgp_l3nhg_zebra_init
    - bf_assign_index
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_l3nhg_id_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bf_release_index
      Src: /src/frr/bgpd/bgp_nht.c:1559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - nhg_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1552
    functionDepth: 1
    functionLinenumber: 1552
    functionLinenumberEnd: 1560
    functionName: bgp_l3nhg_id_free
    functionSourceFile: /src/frr/bgpd/bgp_nht.c
    functionUses: 0
    functionsReached:
    - bf_release_index
    linkageType: ''
    returnType: void
    signature: void bgp_l3nhg_id_free(uint32_t nhg_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_nexthop.c:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bgp_nexthop_cache*
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: bgp_nexthop_cache_compare
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int bgp_nexthop_cache_compare(const struct bgp_nexthop_cache *a,\n\t\t\t
      \     const struct bgp_nexthop_cache *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthops_free
      Src: /src/frr/bgpd/bgp_nexthop.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: bnc_nexthop_free
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: void bnc_nexthop_free(struct bgp_nexthop_cache *bnc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_nexthop.c:65,1
    - Dst: LIST_INIT
      Src: /src/frr/bgpd/bgp_nexthop.c:71,1
    - Dst: bgp_nexthop_cache_add
      Src: /src/frr/bgpd/bgp_nexthop.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - tree
    - prefix
    - srte_color
    - ifindex
    argTypes:
    - struct bgp_nexthop_cache_head*
    - struct prefix*
    - uint32_t
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 75
    functionName: bnc_new
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - bgp_nexthop_cache_add
    - LIST_INIT
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_nexthop_cache
    signature: "struct bgp_nexthop_cache *bnc_new(struct bgp_nexthop_cache_head *tree,\n\t\t\t\t
      \ struct prefix *prefix, uint32_t srte_color,\n\t\t\t\t  ifindex_t ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nexthop.c:81,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_nexthop.c:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 88
    functionName: bnc_existing_for_prefix
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - prefix_cmp
    - frr_each
    linkageType: ''
    returnType: bool
    signature: bool bnc_existing_for_prefix(struct bgp_nexthop_cache *bnc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bnc_nexthop_free
      Src: /src/frr/bgpd/bgp_nexthop.c:92,1
    - Dst: bgp_nexthop_cache_del
      Src: /src/frr/bgpd/bgp_nexthop.c:93,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bnc
    argTypes:
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: bnc_free
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 2
    functionsReached:
    - bgp_nexthop_cache_del
    - XFREE
    - bnc_nexthop_free
    linkageType: ''
    returnType: void
    signature: void bnc_free(struct bgp_nexthop_cache *bnc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_nexthop_cache_find
      Src: /src/frr/bgpd/bgp_nexthop.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - tree
    - prefix
    - srte_color
    - ifindex
    argTypes:
    - struct bgp_nexthop_cache_head*
    - struct prefix*
    - uint32_t
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 110
    functionName: bnc_find
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 8
    functionsReached:
    - bgp_nexthop_cache_find
    linkageType: ''
    returnType: struct bgp_nexthop_cache
    signature: "struct bgp_nexthop_cache *bnc_find(struct bgp_nexthop_cache_head *tree,\n\t\t\t\t
      \  struct prefix *prefix, uint32_t srte_color,\n\t\t\t\t   ifindex_t ifindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_nexthop_cache_count
      Src: /src/frr/bgpd/bgp_nexthop.c:117,1
    - Dst: bgp_nexthop_cache_first
      Src: /src/frr/bgpd/bgp_nexthop.c:118,1
    - Dst: LIST_EMPTY
      Src: /src/frr/bgpd/bgp_nexthop.c:120,1
    - Dst: LIST_FIRST
      Src: /src/frr/bgpd/bgp_nexthop.c:121,1
    - Dst: bgp_mplsvpn_path_nh_label_unlink
      Src: /src/frr/bgpd/bgp_nexthop.c:123,1
    - Dst: path_nh_map
      Src: /src/frr/bgpd/bgp_nexthop.c:125,1
    - Dst: bnc_free
      Src: /src/frr/bgpd/bgp_nexthop.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct bgp_nexthop_cache_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 113
    functionDepth: 3
    functionLinenumber: 113
    functionLinenumberEnd: 130
    functionName: bgp_nexthop_cache_reset
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 0
    functionsReached:
    - bnc_free
    - bgp_nexthop_cache_count
    - bgp_nexthop_cache_first
    - path_nh_map
    - LIST_EMPTY
    - bgp_mplsvpn_path_nh_label_unlink
    - LIST_FIRST
    linkageType: ''
    returnType: void
    signature: void bgp_nexthop_cache_reset(struct bgp_nexthop_cache_head *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_nexthop.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 142
    functionName: bgp_tip_hash_alloc
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_tip_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: bgp_tip_hash_free
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_tip_hash_free(void *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_nexthop.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 154
    functionName: bgp_tip_hash_key_make
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_tip_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 162
    functionName: bgp_tip_hash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_tip_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_nexthop.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: bgp_tip_hash_init
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 2
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void bgp_tip_hash_init(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_nexthop.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: bgp_tip_hash_destroy
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 2
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void bgp_tip_hash_destroy(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_nexthop.c:190,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_nexthop.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - bgp
    - tip
    argTypes:
    - struct bgp*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 199
    functionName: bgp_tip_add
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 2
    functionsReached:
    - hash_lookup
    - hash_get
    linkageType: ''
    returnType: bool
    signature: bool bgp_tip_add(struct bgp *bgp, struct in_addr *tip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_nexthop.c:208,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_nexthop.c:216,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - bgp
    - tip
    argTypes:
    - struct bgp*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 219
    functionName: bgp_tip_del
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 2
    functionsReached:
    - hash_release
    - hash_lookup
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_tip_del(struct bgp *bgp, struct in_addr *tip)
  - BBCount: 112
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:235,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_nexthop.c:236,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_nexthop.c:240,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:241,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:244,1
    - Dst: bgp_nexthop_show_address_hash
      Src: /src/frr/bgpd/bgp_nexthop.c:247,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_nexthop.c:249,1
    - Dst: bgp_address_hash_string_del
      Src: /src/frr/bgpd/bgp_nexthop.c:254,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:258,1
    - Dst: bgp_address_hash_alloc
      Src: /src/frr/bgpd/bgp_nexthop.c:261,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_nexthop.c:266,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_nexthop.c:267,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_nexthop.c:269,1
    - Dst: bgp_address_hash_free
      Src: /src/frr/bgpd/bgp_nexthop.c:275,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_nexthop.c:279,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:280,1
    - Dst: bgp_address_hash_key_make
      Src: /src/frr/bgpd/bgp_nexthop.c:283,1
    - Dst: prefix_hash_key
      Src: /src/frr/bgpd/bgp_nexthop.c:287,1
    - Dst: bgp_address_hash_cmp
      Src: /src/frr/bgpd/bgp_nexthop.c:290,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/bgp_nexthop.c:295,1
    - Dst: bgp_address_init
      Src: /src/frr/bgpd/bgp_nexthop.c:298,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_nexthop.c:301,1
    - Dst: bgp_address_destroy
      Src: /src/frr/bgpd/bgp_nexthop.c:305,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_nexthop.c:307,1
    - Dst: bgp_address_add
      Src: /src/frr/bgpd/bgp_nexthop.c:310,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_nexthop.c:325,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_nexthop.c:327,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_nexthop.c:328,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_nexthop.c:332,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_nexthop.c:333,1
    - Dst: bgp_address_del
      Src: /src/frr/bgpd/bgp_nexthop.c:337,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_nexthop.c:352,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_nexthop.c:357,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_nexthop.c:358,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_nexthop.c:363,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:364,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_nexthop.c:368,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_nexthop.c:369,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:370,1
    - Dst: bgp_connected_add
      Src: /src/frr/bgpd/bgp_nexthop.c:379,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/bgpd/bgp_nexthop.c:392,1
    - Dst: prefix_ipv4_any
      Src: /src/frr/bgpd/bgp_nexthop.c:394,1
    - Dst: bgp_address_add
      Src: /src/frr/bgpd/bgp_nexthop.c:397,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_nexthop.c:399,1
    - Dst: bgp_dest_get_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:400,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_nexthop.c:404,1
    - Dst: bgp_dest_set_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:407,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_nexthop.c:410,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_nexthop.c:412,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_nexthop.c:413,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:414,1
    - Dst: peer_active
      Src: /src/frr/bgpd/bgp_nexthop.c:416,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_nexthop.c:417,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_nexthop.c:418,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/bgpd/bgp_nexthop.c:422,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_nexthop.c:424,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nexthop.c:427,1
    - Dst: bgp_address_add
      Src: /src/frr/bgpd/bgp_nexthop.c:430,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_nexthop.c:432,1
    - Dst: bgp_dest_get_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:434,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_nexthop.c:438,1
    - Dst: bgp_dest_set_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:441,1
    - Dst: bgp_connected_delete
      Src: /src/frr/bgpd/bgp_nexthop.c:446,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/bgpd/bgp_nexthop.c:455,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_nexthop.c:456,1
    - Dst: prefix_ipv4_any
      Src: /src/frr/bgpd/bgp_nexthop.c:458,1
    - Dst: bgp_address_del
      Src: /src/frr/bgpd/bgp_nexthop.c:461,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_nexthop.c:463,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_nexthop.c:465,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_nexthop.c:468,1
    - Dst: bgp_address_del
      Src: /src/frr/bgpd/bgp_nexthop.c:471,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_nexthop.c:473,1
    - Dst: bgp_dest_get_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:479,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:482,1
    - Dst: bgp_dest_set_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:483,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:485,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:486,1
    - Dst: bgp_connected_cleanup
      Src: /src/frr/bgpd/bgp_nexthop.c:489,1
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_nexthop.c:493,1
    - Dst: bgp_dest_get_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:495,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_nexthop.c:499,1
    - Dst: bgp_dest_set_bgp_connected_ref_info
      Src: /src/frr/bgpd/bgp_nexthop.c:500,1
    - Dst: bgp_nexthop_self
      Src: /src/frr/bgpd/bgp_nexthop.c:503,1
    - Dst: BGP_ATTR_NEXTHOP_AFI_IP6
      Src: /src/frr/bgpd/bgp_nexthop.c:517,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_nexthop.c:527,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_nexthop.c:555,1
    - Dst: hashcount
      Src: /src/frr/bgpd/bgp_nexthop.c:559,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_nexthop.c:560,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_nexthop.c:563,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_nexthop.c:571,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:590,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:598,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:600,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:606,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:607,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:623,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:631,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:633,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:639,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:640,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_nexthop.c:661,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:662,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:672,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:674,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:675,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:680,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:683,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_nexthop.c:703,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:704,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:715,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:717,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:718,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:723,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:726,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:737,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:738,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:739,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:740,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:741,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:742,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:743,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:744,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:745,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:746,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:747,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:749,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:750,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:751,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:752,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:753,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:754,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:755,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:756,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:757,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:758,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:759,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:760,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:761,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:763,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:764,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:765,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:767,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:768,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:769,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:770,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:771,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:772,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_nexthop.c:789,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:791,1
    - Dst: LIST_FOREACH
      Src: /src/frr/bgpd/bgp_nexthop.c:792,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_nexthop.c:794,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_nexthop.c:794,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nexthop.c:795,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:795,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_nexthop.c:796,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:802,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:803,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_nexthop.c:803,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:804,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_nexthop.c:805,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:806,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:809,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_nexthop.c:811,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:812,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:814,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_nexthop.c:816,1
    - Dst: bgp_show_bgp_path_info_flags
      Src: /src/frr/bgpd/bgp_nexthop.c:817,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_nexthop.c:818,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:822,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:823,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_nexthop.c:823,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:824,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:826,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:829,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:833,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_nexthop.c:845,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:848,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:851,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:855,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:857,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:859,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:865,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:869,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:871,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:877,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:879,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:881,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:887,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:891,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:895,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:899,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_nexthop.c:909,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:915,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:918,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:919,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:922,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:923,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:926,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:930,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:933,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:934,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:937,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:938,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:941,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:944,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:945,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:950,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:953,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:958,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:974,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:977,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:980,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_nexthop.c:982,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:983,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:985,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:986,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:987,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:989,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:992,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:995,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:998,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1001,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1003,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1004,1
    - Dst: bgp_show_nexthops_detail
      Src: /src/frr/bgpd/bgp_nexthop.c:1006,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1007,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1009,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1010,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1011,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1013,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1016,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1019,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1023,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1024,1
    - Dst: bgp_show_nexthops_detail
      Src: /src/frr/bgpd/bgp_nexthop.c:1026,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1029,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1030,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1031,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1034,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1037,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1039,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1040,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1042,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1043,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1046,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1049,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1051,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1052,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1054,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1055,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1056,1
    - Dst: time
      Src: /src/frr/bgpd/bgp_nexthop.c:1059,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_nexthop.c:1059,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1062,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1063,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1064,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_nexthop.c:1065,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1066,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1069,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1072,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_nexthop.c:1072,1
    - Dst: bgp_show_nexthop_paths
      Src: /src/frr/bgpd/bgp_nexthop.c:1077,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1079,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1093,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1095,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1104,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nexthop.c:1105,1
    - Dst: bgp_show_nexthop
      Src: /src/frr/bgpd/bgp_nexthop.c:1106,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1110,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1118,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nexthop.c:1119,1
    - Dst: bgp_show_nexthop
      Src: /src/frr/bgpd/bgp_nexthop.c:1120,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1122,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_nexthop.c:1134,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_nexthop.c:1135,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_nexthop.c:1137,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1140,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:1151,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1153,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1159,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nexthop.c:1160,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nexthop.c:1160,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_nexthop.c:1162,1
    - Dst: bgp_show_nexthop
      Src: /src/frr/bgpd/bgp_nexthop.c:1164,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1168,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nexthop.c:1170,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1174,1
    - Dst: bgp_show_nexthops
      Src: /src/frr/bgpd/bgp_nexthop.c:1177,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_nexthop.c:1191,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_nexthop.c:1195,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1196,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1198,1
    - Dst: bgp_show_nexthops
      Src: /src/frr/bgpd/bgp_nexthop.c:1200,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1203,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_nexthop.c:1209,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1231,1
    - Dst: bgp_vty_afi_from_str
      Src: /src/frr/bgpd/bgp_nexthop.c:1234,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_nexthop.c:1240,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_nexthop.c:1245,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1260,1
    - Dst: show_ip_bgp_nexthop_table
      Src: /src/frr/bgpd/bgp_nexthop.c:1262,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_nexthop.c:1266,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_nexthop.c:1271,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1288,1
    - Dst: bgp_vty_afi_from_str
      Src: /src/frr/bgpd/bgp_nexthop.c:1291,1
    - Dst: bgp_show_all_instances_nexthops_vty
      Src: /src/frr/bgpd/bgp_nexthop.c:1293,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_nexthop.c:1296,1
    - Dst: bgp_nexthop_cache_init
      Src: /src/frr/bgpd/bgp_nexthop.c:1306,1
    - Dst: bgp_nexthop_cache_init
      Src: /src/frr/bgpd/bgp_nexthop.c:1307,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_nexthop.c:1308,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_nexthop.c:1315,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_nexthop.c:1316,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_nexthop.c:1317,1
    - Dst: bgp_nexthop_cache_reset
      Src: /src/frr/bgpd/bgp_nexthop.c:1326,1
    - Dst: bgp_nexthop_cache_reset
      Src: /src/frr/bgpd/bgp_nexthop.c:1327,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_nexthop.c:1331,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1340,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1344,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1346,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1348,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1351,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1354,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1365,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1370,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1373,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1376,1
    CyclomaticComplexity: 144
    EdgeCount: 144
    ICount: 489
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts:
    - condition: (dest && bgp_dest_table(dest))
      pos:
        line_end: 793
        line_start: 793
        source_file: /src/frr/bgpd/bgp_nexthop.c
    constantsTouched: []
    func_position:
      end: 1381
      start: 227
    functionDepth: 10
    functionLinenumber: 227
    functionLinenumberEnd: 1381
    functionName: show_address_entry
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 0
    functionsReached:
    - ifindex2ifname
    - SUBGRP_INST
    - bgp_show_bgp_path_info_flags
    - afi2str
    - hash_lookup
    - bgp_dest_from_rnode
    - json_object_boolean_false_add
    - bgp_address_hash_key_make
    - bgp_node_match
    - bgp_table_unlock
    - BGP_EVENT_ADD
    - json_object_boolean_add
    - memset
    - XCALLOC
    - show_ip_bgp_nexthop_table
    - str2prefix
    - bgp_show_nexthops_detail
    - if
    - bgp_nexthop_show_address_hash
    - bgp_connected_add
    - list_delete_node
    - bgp_nexthop_self
    - json_object_new_object
    - XMALLOC
    - snprintfrr
    - list_new
    - ALL_LIST_ELEMENTS
    - bgp_show_nexthop
    - prefix_hash_key
    - bgp_address_add
    - DEFPY
    - bgp_connected_delete
    - bgp_nexthop_cache_reset
    - inet_ntop
    - bgp_address_hash_cmp
    - CONNECTED_PREFIX
    - apply_mask_ipv6
    - bgp_lookup_by_name
    - monotime
    - prefix_ipv4_any
    - json_object_new_array
    - bgp_address_hash_alloc
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - json_object_object_add
    - vty_json
    - time
    - bgp_node_get
    - apply_mask_ipv4
    - peer_established
    - safi2str
    - hash_create
    - json_object_string_add
    - install_element
    - strmatch
    - ctime
    - bgp_show_all_instances_nexthops_vty
    - bgp_dest_get_prefix
    - bgp_get_default
    - bgp_show_nexthop_paths
    - assert
    - hash_clean_and_free
    - bgp_dest_unlock_node
    - LIST_FOREACH
    - vty_out
    - bgp_table_init
    - bgp_show_nexthops
    - bgp_dest_get_bgp_connected_ref_info
    - bgp_nexthop_cache_init
    - json_object_int_add
    - XFREE
    - hash_release
    - bgp_address_del
    - json_object_array_add
    - vrf_id_to_name
    - bgp_node_lookup
    - json_object_boolean_true_add
    - hashcount
    - bgp_connected_cleanup
    - list_delete
    - frr_each
    - bgp_address_init
    - BGP_RD_AS_FORMAT
    - listnode_add
    - bgp_dest_set_bgp_connected_ref_info
    - json_object_string_addf
    - peer_active
    - IN6_IS_ADDR_UNSPECIFIED
    - prefix_cmp
    - ALL_LIST_ELEMENTS_RO
    - hash_iterate
    - bgp_address_destroy
    - prefix_copy
    - hash_get
    - BGP_ATTR_NEXTHOP_AFI_IP6
    - bgp_address_hash_string_del
    - prefix_same
    - apply_mask
    - family2afi
    - XSTRDUP
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_dest_table
    - bgp_vty_afi_from_str
    - bgp_address_hash_free
    linkageType: ''
    returnType: void
    signature: void show_address_entry(struct hash_bucket *bucket, void *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:590,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:598,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:600,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:606,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - nexthop
    - peer
    argTypes:
    - struct in_addr
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 610
    functionName: bgp_multiaccess_check_v4
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_node_match
    linkageType: ''
    returnType: bool
    signature: bool bgp_multiaccess_check_v4(struct in_addr nexthop, struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:623,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:631,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:633,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:639,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:640,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - nexthop
    - peer
    argTypes:
    - struct in6_addr
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 643
    functionName: bgp_multiaccess_check_v6
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_node_match
    linkageType: ''
    returnType: bool
    signature: bool bgp_multiaccess_check_v6(struct in6_addr nexthop, struct peer
      *peer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_nexthop.c:661,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:662,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:672,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:674,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:675,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:680,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:683,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - nexthop
    - subgrp
    - exclude
    argTypes:
    - struct in6_addr
    - struct update_subgroup*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 685
    functionName: bgp_subgrp_multiaccess_check_v6
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - SUBGRP_INST
    - bgp_node_match
    linkageType: ''
    returnType: bool
    signature: "bool bgp_subgrp_multiaccess_check_v6(struct in6_addr nexthop,\n\t\t\t\t
      \    struct update_subgroup *subgrp,\n\t\t\t\t     struct peer *exclude)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:672,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:674,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:675,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:680,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 681
    functionName: SUBGRP_FOREACH_PEER
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 5
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_node_match
    linkageType: ''
    returnType: void
    signature: void SUBGRP_FOREACH_PEER (subgrp, paf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_nexthop.c:703,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:704,1
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:715,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:717,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:718,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:723,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:726,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - nexthop
    - subgrp
    - exclude
    argTypes:
    - struct in_addr
    - struct update_subgroup*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 728
    functionName: bgp_subgrp_multiaccess_check_v4
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - SUBGRP_INST
    - bgp_node_match
    linkageType: ''
    returnType: bool
    signature: "bool bgp_subgrp_multiaccess_check_v4(struct in_addr nexthop,\n\t\t\t\t
      \    struct update_subgroup *subgrp,\n\t\t\t\t     struct peer *exclude)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_match
      Src: /src/frr/bgpd/bgp_nexthop.c:715,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:717,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:718,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_nexthop.c:723,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 724
    functionName: SUBGRP_FOREACH_PEER
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 5
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_node_match
    linkageType: ''
    returnType: void
    signature: void SUBGRP_FOREACH_PEER (subgrp, paf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:737,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:738,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:739,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:740,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:741,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:742,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:743,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:744,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:745,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:746,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:747,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:749,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:750,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:751,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:752,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:753,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:754,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:755,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:756,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:757,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:758,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:759,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:760,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:761,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:763,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:764,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:765,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:766,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:767,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:768,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:769,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bgpd/bgp_nexthop.c:770,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:771,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 2
    argNames:
    - flags
    - json
    argTypes:
    - uint32_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 730
    functionDepth: 1
    functionLinenumber: 730
    functionLinenumberEnd: 773
    functionName: bgp_show_bgp_path_info_flags
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - CHECK_FLAG
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void bgp_show_bgp_path_info_flags(uint32_t flags, json_object *json)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_nexthop.c:789,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:791,1
    - Dst: LIST_FOREACH
      Src: /src/frr/bgpd/bgp_nexthop.c:792,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_nexthop.c:794,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_nexthop.c:794,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nexthop.c:795,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:795,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_nexthop.c:796,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:802,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:803,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_nexthop.c:803,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:804,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_nexthop.c:805,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:806,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:809,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_nexthop.c:811,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:812,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:814,1
    - Dst: vrf_id_to_name
      Src: /src/frr/bgpd/bgp_nexthop.c:816,1
    - Dst: bgp_show_bgp_path_info_flags
      Src: /src/frr/bgpd/bgp_nexthop.c:817,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_nexthop.c:818,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:822,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:823,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_nexthop.c:823,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:824,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:826,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:829,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:833,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - vty
    - bgp
    - bnc
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - struct bgp_nexthop_cache*
    - json_object*
    assertStmts:
    - condition: (dest && bgp_dest_table(dest))
      pos:
        line_end: 793
        line_start: 793
        source_file: /src/frr/bgpd/bgp_nexthop.c
    constantsTouched: []
    func_position:
      end: 834
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 834
    functionName: bgp_show_nexthop_paths
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - LIST_FOREACH
    - safi2str
    - vty_out
    - json_object_array_add
    - vrf_id_to_name
    - bgp_dest_get_prefix
    - BGP_RD_AS_FORMAT
    - bgp_show_bgp_path_info_flags
    - afi2str
    - bgp_dest_table
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - family2afi
    - assert
    linkageType: ''
    returnType: void
    signature: "void bgp_show_nexthop_paths(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \  struct bgp_nexthop_cache *bnc,\n\t\t\t\t   json_object *json)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_nexthop.c:845,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:848,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:851,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:855,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:857,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:859,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:865,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:869,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:871,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_nexthop.c:877,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:879,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:881,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:887,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:891,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:895,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:899,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_nexthop.c:909,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:915,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:918,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:919,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:922,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:923,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:926,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:930,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:933,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:934,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:937,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:938,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:941,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:944,1
    - Dst: ifindex2ifname
      Src: /src/frr/bgpd/bgp_nexthop.c:945,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:950,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:953,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:958,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 77
    argCount: 4
    argNames:
    - vty
    - bgp
    - bnc
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - struct bgp_nexthop_cache*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 959
    functionName: bgp_show_nexthops_detail
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - ifindex2ifname
    - json_object_array_add
    - vty_out
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void bgp_show_nexthops_detail(struct vty *vty, struct bgp *bgp,\n\t\t\t\t
      \    struct bgp_nexthop_cache *bnc,\n\t\t\t\t     json_object *json)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:974,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:977,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:980,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_nexthop.c:982,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:983,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:985,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:986,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:987,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:989,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:992,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:995,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:998,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1001,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1003,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1004,1
    - Dst: bgp_show_nexthops_detail
      Src: /src/frr/bgpd/bgp_nexthop.c:1006,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1007,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1009,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1010,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1011,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1013,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1016,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1019,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1023,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1024,1
    - Dst: bgp_show_nexthops_detail
      Src: /src/frr/bgpd/bgp_nexthop.c:1026,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1029,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1030,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1031,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1034,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1037,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1039,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1040,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1042,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1043,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1046,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1049,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1051,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1052,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1054,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1055,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1056,1
    - Dst: time
      Src: /src/frr/bgpd/bgp_nexthop.c:1059,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_nexthop.c:1059,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1062,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1063,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1064,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_nexthop.c:1065,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1066,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1069,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1072,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_nexthop.c:1072,1
    - Dst: bgp_show_nexthop_paths
      Src: /src/frr/bgpd/bgp_nexthop.c:1077,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1079,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 88
    argCount: 5
    argNames:
    - vty
    - bgp
    - bnc
    - specific
    - json
    argTypes:
    - struct vty*
    - struct bgp*
    - struct bgp_nexthop_cache*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 961
    functionDepth: 3
    functionLinenumber: 961
    functionLinenumberEnd: 1080
    functionName: bgp_show_nexthop
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vty_out
    - ctime
    - CHECK_FLAG
    - monotime
    - json_object_int_add
    - inet_ntop
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - bgp_show_nexthop_paths
    - bgp_show_nexthops_detail
    - json_object_boolean_false_add
    - time
    linkageType: ''
    returnType: void
    signature: "void bgp_show_nexthop(struct vty *vty, struct bgp *bgp,\n\t\t\t     struct
      bgp_nexthop_cache *bnc, bool specific,\n\t\t\t     json_object *json)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1093,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1095,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1104,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nexthop.c:1105,1
    - Dst: bgp_show_nexthop
      Src: /src/frr/bgpd/bgp_nexthop.c:1106,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1110,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1118,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nexthop.c:1119,1
    - Dst: bgp_show_nexthop
      Src: /src/frr/bgpd/bgp_nexthop.c:1120,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1122,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 6
    argNames:
    - vty
    - bgp
    - import_table
    - json
    - afi
    - detail
    argTypes:
    - struct vty*
    - struct bgp*
    - bool
    - json_object*
    - afi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1082
    functionDepth: 4
    functionLinenumber: 1082
    functionLinenumberEnd: 1126
    functionName: bgp_show_nexthops
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vty_out
    - frr_each
    - json_object_object_add
    - bgp_show_nexthop
    linkageType: ''
    returnType: void
    signature: "void bgp_show_nexthops(struct vty *vty, struct bgp *bgp,\n\t\t\t      bool
      import_table, json_object *json, afi_t afi,\n\t\t\t      bool detail)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_nexthop.c:1134,1
    - Dst: bgp_lookup_by_name
      Src: /src/frr/bgpd/bgp_nexthop.c:1135,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_nexthop.c:1137,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1140,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_nexthop.c:1151,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1153,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1159,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_nexthop.c:1160,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nexthop.c:1160,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_nexthop.c:1162,1
    - Dst: bgp_show_nexthop
      Src: /src/frr/bgpd/bgp_nexthop.c:1164,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1168,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_nexthop.c:1170,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1174,1
    - Dst: bgp_show_nexthops
      Src: /src/frr/bgpd/bgp_nexthop.c:1177,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 7
    argNames:
    - vty
    - name
    - nhopip_str
    - import_table
    - json
    - afi
    - detail
    argTypes:
    - struct vty*
    - char*
    - char*
    - bool
    - json_object*
    - afi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1128
    functionDepth: 10
    functionLinenumber: 1128
    functionLinenumberEnd: 1180
    functionName: show_ip_bgp_nexthop_table
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - strmatch
    - json_object_new_object
    - vty_out
    - frr_each
    - prefix_cmp
    - bgp_get_default
    - bgp_show_nexthops
    - json_object_object_add
    - str2prefix
    - family2afi
    - bgp_show_nexthop
    - bgp_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int show_ip_bgp_nexthop_table(struct vty *vty, const char *name,\n\t\t\t\t
      \    const char *nhopip_str, bool import_table,\n\t\t\t\t     json_object *json,
      afi_t afi, bool detail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_nexthop.c:1191,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_nexthop.c:1195,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1196,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_nexthop.c:1198,1
    - Dst: bgp_show_nexthops
      Src: /src/frr/bgpd/bgp_nexthop.c:1200,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_nexthop.c:1203,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_nexthop.c:1209,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_nexthop.c:1231,1
    - Dst: bgp_vty_afi_from_str
      Src: /src/frr/bgpd/bgp_nexthop.c:1234,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_nexthop.c:1240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - json
    - afi
    - detail
    argTypes:
    - struct vty*
    - json_object*
    - afi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1182
    functionDepth: 5
    functionLinenumber: 1182
    functionLinenumberEnd: 1243
    functionName: bgp_show_all_instances_nexthops_vty
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vty_out
    - bgp_show_nexthops
    - json_object_object_add
    - if
    - ALL_LIST_ELEMENTS
    - DEFPY
    - bgp_vty_afi_from_str
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void bgp_show_all_instances_nexthops_vty(struct vty *vty,\n\t\t\t\t\t\tjson_object
      *json, afi_t afi,\n\t\t\t\t\t\tbool detail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_nexthop_cache_init
      Src: /src/frr/bgpd/bgp_nexthop.c:1306,1
    - Dst: bgp_nexthop_cache_init
      Src: /src/frr/bgpd/bgp_nexthop.c:1307,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_nexthop.c:1308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1301
    functionDepth: 1
    functionLinenumber: 1301
    functionLinenumberEnd: 1311
    functionName: bgp_scan_init
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 3
    functionsReached:
    - bgp_table_init
    - bgp_nexthop_cache_init
    linkageType: ''
    returnType: void
    signature: void bgp_scan_init(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_nexthop.c:1315,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_nexthop.c:1316,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_nexthop.c:1317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1313
    functionDepth: 1
    functionLinenumber: 1313
    functionLinenumberEnd: 1318
    functionName: bgp_scan_vty_init
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 3
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void bgp_scan_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_nexthop_cache_reset
      Src: /src/frr/bgpd/bgp_nexthop.c:1326,1
    - Dst: bgp_nexthop_cache_reset
      Src: /src/frr/bgpd/bgp_nexthop.c:1327,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_nexthop.c:1331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1320
    functionDepth: 4
    functionLinenumber: 1320
    functionLinenumberEnd: 1334
    functionName: bgp_scan_finish
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 2
    functionsReached:
    - bgp_nexthop_cache_reset
    - bgp_table_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_scan_finish(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1340,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1344,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1346,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1348,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1351,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - bnc
    - buf
    - len
    argTypes:
    - struct bgp_nexthop_cache*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1336
    functionDepth: 1
    functionLinenumber: 1336
    functionLinenumberEnd: 1359
    functionName: bgp_nexthop_dump_bnc_flags
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: "char *bgp_nexthop_dump_bnc_flags(struct bgp_nexthop_cache *bnc, char
      *buf,\n\t\t\t\t size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1365,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_nexthop.c:1369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1370,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1373,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_nexthop.c:1376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - bnc
    - buf
    - len
    argTypes:
    - struct bgp_nexthop_cache*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1361
    functionDepth: 1
    functionLinenumber: 1361
    functionLinenumberEnd: 1381
    functionName: bgp_nexthop_dump_bnc_change_flags
    functionSourceFile: /src/frr/bgpd/bgp_nexthop.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: "char *bgp_nexthop_dump_bnc_change_flags(struct bgp_nexthop_cache *bnc,\n\t\t\t\t\tchar
      *buf, size_t len)"
  - 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: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: CONF_DEBUG_ON
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: CONF_DEBUG_OFF
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: TERM_DEBUG_ON
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: TERM_DEBUG_OFF
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: DEBUG_ON
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: DEBUG_OFF
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: BGP_DEBUG
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 151
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_DEBUG(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    functionName: CONF_BGP_DEBUG
    functionSourceFile: /src/frr/bgpd/bgp_debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_BGP_DEBUG(a, b)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:65,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_btoa.c:68,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_btoa.c:69,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:72,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_btoa.c:74,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:76,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:77,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:78,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_btoa.c:83,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:84,1
    - Dst: aspath_parse
      Src: /src/frr/bgpd/bgp_btoa.c:89,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_btoa.c:90,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:91,1
    - Dst: aspath_free
      Src: /src/frr/bgpd/bgp_btoa.c:92,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_btoa.c:96,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:97,1
    - Dst: stream_getw_from
      Src: /src/frr/bgpd/bgp_btoa.c:100,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 56
    functionDepth: 5
    functionLinenumber: 56
    functionLinenumberEnd: 104
    functionName: attr_parse
    functionSourceFile: /src/frr/bgpd/bgp_btoa.c
    functionUses: 3
    functionsReached:
    - aspath_parse
    - bgp_get_asnotation
    - aspath_free
    - stream_getw_from
    - stream_get_ipv4
    - stream_getw
    - printf
    - stream_getc
    linkageType: ''
    returnType: void
    signature: void attr_parse(struct stream *s, uint16_t len)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_btoa.c:124,1
    - Dst: fprintf
      Src: /src/frr/bgpd/bgp_btoa.c:127,1
    - Dst: exit
      Src: /src/frr/bgpd/bgp_btoa.c:128,1
    - Dst: open
      Src: /src/frr/bgpd/bgp_btoa.c:130,1
    - Dst: fprintf
      Src: /src/frr/bgpd/bgp_btoa.c:132,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_btoa.c:134,1
    - Dst: exit
      Src: /src/frr/bgpd/bgp_btoa.c:135,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_btoa.c:139,1
    - Dst: stream_read
      Src: /src/frr/bgpd/bgp_btoa.c:141,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:144,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:146,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:148,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_btoa.c:153,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:154,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:155,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_btoa.c:156,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:158,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_btoa.c:158,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:163,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:165,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:167,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:169,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:174,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:177,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:180,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:186,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:189,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:192,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:195,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:198,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:203,1
    - Dst: stream_read
      Src: /src/frr/bgpd/bgp_btoa.c:205,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:208,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:210,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:212,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:224,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:225,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:226,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:227,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_btoa.c:231,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_btoa.c:232,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:233,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_btoa.c:236,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_btoa.c:237,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_btoa.c:238,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:239,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:241,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:242,1
    - Dst: ctime
      Src: /src/frr/bgpd/bgp_btoa.c:242,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:244,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:245,1
    - Dst: attr_parse
      Src: /src/frr/bgpd/bgp_btoa.c:247,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:249,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:252,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:253,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:254,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:255,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:257,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_btoa.c:258,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:260,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:261,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_btoa.c:263,1
    - Dst: stream_get_ipv4
      Src: /src/frr/bgpd/bgp_btoa.c:264,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:266,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:267,1
    - Dst: printf
      Src: /src/frr/bgpd/bgp_btoa.c:269,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_btoa.c:272,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 112
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 106
    functionDepth: 6
    functionLinenumber: 106
    functionLinenumberEnd: 274
    functionName: main
    functionSourceFile: /src/frr/bgpd/bgp_btoa.c
    functionUses: 11
    functionsReached:
    - exit
    - stream_new
    - open
    - ctime
    - stream_read
    - stream_get_ipv4
    - attr_parse
    - stream_getw
    - close
    - fprintf
    - safe_strerror
    - stream_getl
    - printf
    - stream_reset
    - stream_getc
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: lcom_length
    functionSourceFile: /src/frr/bgpd/bgp_lcommunity.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lcom_length(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: BGP_DAMP_LIST_ADD
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_DAMP_LIST_ADD(N, A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: BGP_DAMP_LIST_DEL
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_DAMP_LIST_DEL(N, A)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_damp.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - penalty
    - bdc
    argTypes:
    - int
    - struct bgp_damp_config*
    assertStmts:
    - condition: (bdc->reuse_limit)
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/frr/bgpd/bgp_damp.c
    constantsTouched: []
    func_position:
      end: 54
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 54
    functionName: bgp_reuse_index
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int bgp_reuse_index(int penalty, struct bgp_damp_config *bdc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_reuse_index
      Src: /src/frr/bgpd/bgp_damp.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - bdi
    - bdc
    argTypes:
    - struct bgp_damp_info*
    - struct bgp_damp_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 69
    functionName: bgp_reuse_list_add
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - bgp_reuse_index
    linkageType: ''
    returnType: void
    signature: "void bgp_reuse_list_add(struct bgp_damp_info *bdi,\n\t\t\t       struct
      bgp_damp_config *bdc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bdi
    - bdc
    argTypes:
    - struct bgp_damp_info*
    - struct bgp_damp_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: bgp_reuse_list_delete
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_reuse_list_delete(struct bgp_damp_info *bdi,\n\t\t\t\t  struct
      bgp_damp_config *bdc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tdiff
    - penalty
    - bdc
    argTypes:
    - time_t
    - int
    - struct bgp_damp_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: bgp_damp_decay
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_damp_decay(time_t tdiff, int penalty, struct bgp_damp_config
      *bdc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_damp.c:107,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_damp.c:110,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_damp.c:113,1
    - Dst: bgp_damp_decay
      Src: /src/frr/bgpd/bgp_damp.c:135,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_damp.c:143,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_damp.c:148,1
    - Dst: bgp_aggregate_increment
      Src: /src/frr/bgpd/bgp_damp.c:150,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_damp.c:151,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_damp.c:153,1
    - Dst: bgp_damp_info_free
      Src: /src/frr/bgpd/bgp_damp.c:158,1
    - Dst: BGP_DAMP_LIST_ADD
      Src: /src/frr/bgpd/bgp_damp.c:160,1
    - Dst: bgp_reuse_list_add
      Src: /src/frr/bgpd/bgp_damp.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 101
    functionDepth: 8
    functionLinenumber: 101
    functionLinenumberEnd: 166
    functionName: bgp_reuse_timer
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - bgp_damp_info_free
    - BGP_DAMP_LIST_ADD
    - bgp_reuse_list_add
    - bgp_damp_decay
    - bgp_aggregate_increment
    - bgp_process
    - bgp_dest_get_prefix
    - monotime
    - EVENT_ARG
    - event_add_timer
    - bgp_path_info_unset_flag
    linkageType: ''
    returnType: void
    signature: void bgp_reuse_timer(struct event *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_damp.c:177,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_damp.c:191,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_damp.c:203,1
    - Dst: BGP_DAMP_LIST_ADD
      Src: /src/frr/bgpd/bgp_damp.c:204,1
    - Dst: bgp_damp_decay
      Src: /src/frr/bgpd/bgp_damp.c:209,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_damp.c:220,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_damp.c:226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:229,1
    - Dst: bgp_reuse_list_delete
      Src: /src/frr/bgpd/bgp_damp.c:232,1
    - Dst: bgp_reuse_list_add
      Src: /src/frr/bgpd/bgp_damp.c:233,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_damp.c:241,1
    - Dst: BGP_DAMP_LIST_DEL
      Src: /src/frr/bgpd/bgp_damp.c:243,1
    - Dst: bgp_reuse_list_add
      Src: /src/frr/bgpd/bgp_damp.c:244,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 5
    argNames:
    - path
    - dest
    - afi
    - safi
    - attr_change
    argTypes:
    - struct bgp_path_info*
    - struct bgp_dest*
    - afi_t
    - safi_t
    - int
    assertStmts:
    - condition: ((dest == bdi->dest) && (path == bdi->path))
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/frr/bgpd/bgp_damp.c
    constantsTouched: []
    func_position:
      end: 248
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 248
    functionName: bgp_damp_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 2
    functionsReached:
    - BGP_DAMP_LIST_ADD
    - bgp_path_info_extra_get
    - bgp_reuse_list_add
    - bgp_damp_decay
    - XCALLOC
    - CHECK_FLAG
    - bgp_path_info_set_flag
    - monotime
    - bgp_reuse_list_delete
    - BGP_DAMP_LIST_DEL
    - assert
    linkageType: ''
    returnType: int
    signature: "int bgp_damp_withdraw(struct bgp_path_info *path, struct bgp_dest
      *dest,\n\t\t      afi_t afi, safi_t safi, int attr_change)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_damp.c:261,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_damp.c:262,1
    - Dst: bgp_damp_decay
      Src: /src/frr/bgpd/bgp_damp.c:266,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:268,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:271,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_damp.c:273,1
    - Dst: bgp_reuse_list_delete
      Src: /src/frr/bgpd/bgp_damp.c:274,1
    - Dst: BGP_DAMP_LIST_ADD
      Src: /src/frr/bgpd/bgp_damp.c:275,1
    - Dst: bgp_damp_info_free
      Src: /src/frr/bgpd/bgp_damp.c:284,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 4
    argNames:
    - path
    - dest
    - afi
    - safi
    argTypes:
    - struct bgp_path_info*
    - struct bgp_dest*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 250
    functionDepth: 3
    functionLinenumber: 250
    functionLinenumberEnd: 287
    functionName: bgp_damp_update
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 1
    functionsReached:
    - BGP_DAMP_LIST_ADD
    - bgp_damp_info_free
    - bgp_damp_decay
    - CHECK_FLAG
    - monotime
    - bgp_reuse_list_delete
    - bgp_path_info_unset_flag
    linkageType: ''
    returnType: int
    signature: "int bgp_damp_update(struct bgp_path_info *path, struct bgp_dest *dest,\n\t\t
      \   afi_t afi, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:301,1
    - Dst: bgp_reuse_list_delete
      Src: /src/frr/bgpd/bgp_damp.c:302,1
    - Dst: BGP_DAMP_LIST_DEL
      Src: /src/frr/bgpd/bgp_damp.c:304,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_damp.c:306,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_damp.c:310,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_damp.c:312,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - bdi
    - withdraw
    - afi
    - safi
    argTypes:
    - struct bgp_damp_info*
    - int
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 313
    functionName: bgp_damp_info_free
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 4
    functionsReached:
    - CHECK_FLAG
    - bgp_path_info_unset_flag
    - bgp_reuse_list_delete
    - bgp_path_info_delete
    - XFREE
    - BGP_DAMP_LIST_DEL
    linkageType: ''
    returnType: void
    signature: "void bgp_damp_info_free(struct bgp_damp_info *bdi, int withdraw, afi_t
      afi,\n\t\t\tsafi_t safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pow
      Src: /src/frr/bgpd/bgp_damp.c:332,1
    - Dst: ceil
      Src: /src/frr/bgpd/bgp_damp.c:336,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_damp.c:337,1
    - Dst: exp
      Src: /src/frr/bgpd/bgp_damp.c:341,1
    - Dst: log
      Src: /src/frr/bgpd/bgp_damp.c:341,1
    - Dst: ceil
      Src: /src/frr/bgpd/bgp_damp.c:349,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_damp.c:355,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_damp.c:359,1
    - Dst: exp
      Src: /src/frr/bgpd/bgp_damp.c:363,1
    - Dst: log10
      Src: /src/frr/bgpd/bgp_damp.c:363,1
    - Dst: log10
      Src: /src/frr/bgpd/bgp_damp.c:373,1
    - Dst: log10
      Src: /src/frr/bgpd/bgp_damp.c:377,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 5
    argNames:
    - hlife
    - reuse
    - sup
    - maxsup
    - bdc
    argTypes:
    - time_t
    - unsigned int
    - unsigned int
    - time_t
    - struct bgp_damp_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 379
    functionName: bgp_damp_parameter_set
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - ceil
    - XCALLOC
    - XMALLOC
    - log
    - exp
    - pow
    - log10
    linkageType: ''
    returnType: void
    signature: "void bgp_damp_parameter_set(time_t hlife, unsigned int reuse,\n\t\t\t\t
      \  unsigned int sup, time_t maxsup,\n\t\t\t\t   struct bgp_damp_config *bdc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:386,1
    - Dst: bgp_damp_disable
      Src: /src/frr/bgpd/bgp_damp.c:391,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:394,1
    - Dst: bgp_damp_parameter_set
      Src: /src/frr/bgpd/bgp_damp.c:395,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_damp.c:398,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 7
    argNames:
    - bgp
    - afi
    - safi
    - half
    - reuse
    - suppress
    - max
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - time_t
    - unsigned int
    - unsigned int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 402
    functionName: bgp_damp_enable
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - bgp_damp_parameter_set
    - CHECK_FLAG
    - bgp_damp_disable
    - SET_FLAG
    - event_add_timer
    linkageType: ''
    returnType: int
    signature: "int bgp_damp_enable(struct bgp *bgp, afi_t afi, safi_t safi, time_t
      half,\n\t\t    unsigned int reuse, unsigned int suppress, time_t max)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_damp.c:407,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_damp.c:411,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_damp.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bdc
    argTypes:
    - struct bgp_damp_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 417
    functionName: bgp_damp_config_clean
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_damp_config_clean(struct bgp_damp_config *bdc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_damp_info_free
      Src: /src/frr/bgpd/bgp_damp.c:434,1
    - Dst: bgp_damp_info_free
      Src: /src/frr/bgpd/bgp_damp.c:441,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - afi
    - safi
    argTypes:
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 420
    functionDepth: 4
    functionLinenumber: 420
    functionLinenumberEnd: 444
    functionName: bgp_damp_info_clean
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - bgp_damp_info_free
    linkageType: ''
    returnType: void
    signature: void bgp_damp_info_clean(afi_t afi, safi_t safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:450,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_damp.c:454,1
    - Dst: bgp_damp_info_clean
      Src: /src/frr/bgpd/bgp_damp.c:457,1
    - Dst: bgp_damp_config_clean
      Src: /src/frr/bgpd/bgp_damp.c:460,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 446
    functionDepth: 5
    functionLinenumber: 446
    functionLinenumberEnd: 464
    functionName: bgp_damp_disable
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - bgp_damp_info_clean
    - EVENT_OFF
    - UNSET_FLAG
    - bgp_damp_config_clean
    linkageType: ''
    returnType: int
    signature: int bgp_damp_disable(struct bgp *bgp, afi_t afi, safi_t safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:473,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:479,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:482,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - afi
    - safi
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 487
    functionName: bgp_config_write_damp
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bgp_config_write_damp(struct vty *vty, afi_t afi, safi_t safi)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log
      Src: /src/frr/bgpd/bgp_damp.c:499,1
    - Dst: log
      Src: /src/frr/bgpd/bgp_damp.c:501,1
    - Dst: gmtime_r
      Src: /src/frr/bgpd/bgp_damp.c:506,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:513,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_damp.c:515,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:521,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_damp.c:524,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:532,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_damp.c:535,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:545,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_damp.c:548,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 7
    argNames:
    - penalty
    - buf
    - len
    - afi
    - safi
    - use_json
    - json
    argTypes:
    - unsigned int
    - char*
    - size_t
    - afi_t
    - safi_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 554
    functionName: bgp_get_reuse_time
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - snprintf
    - log
    - json_object_int_add
    - gmtime_r
    linkageType: ''
    returnType: char
    signature: "char *bgp_get_reuse_time(unsigned int penalty, char *buf,\n\t\t\t\t
      \     size_t len, afi_t afi, safi_t safi,\n\t\t\t\t      bool use_json, json_object
      *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_damp.c:577,1
    - Dst: bgp_damp_decay
      Src: /src/frr/bgpd/bgp_damp.c:579,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:582,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:583,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_damp.c:584,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:587,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:588,1
    - Dst: bgp_get_reuse_time
      Src: /src/frr/bgpd/bgp_damp.c:589,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:592,1
    - Dst: peer_uptime
      Src: /src/frr/bgpd/bgp_damp.c:595,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:598,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:599,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:600,1
    - Dst: bgp_get_reuse_time
      Src: /src/frr/bgpd/bgp_damp.c:601,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:605,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 5
    argNames:
    - vty
    - path
    - afi
    - safi
    - json_path
    argTypes:
    - struct vty*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 556
    functionDepth: 2
    functionLinenumber: 556
    functionLinenumberEnd: 607
    functionName: bgp_damp_info_vty
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 2
    functionsReached:
    - vty_out
    - bgp_damp_decay
    - CHECK_FLAG
    - monotime
    - json_object_int_add
    - bgp_get_reuse_time
    - peer_uptime
    linkageType: ''
    returnType: void
    signature: "void bgp_damp_info_vty(struct vty *vty, struct bgp_path_info *path,
      afi_t afi,\n\t\t       safi_t safi, json_object *json_path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_damp.c:631,1
    - Dst: bgp_damp_decay
      Src: /src/frr/bgpd/bgp_damp.c:633,1
    - Dst: bgp_get_reuse_time
      Src: /src/frr/bgpd/bgp_damp.c:635,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 8
    argNames:
    - vty
    - path
    - timebuf
    - len
    - afi
    - safi
    - use_json
    - json
    argTypes:
    - struct vty*
    - struct bgp_path_info*
    - char*
    - size_t
    - afi_t
    - safi_t
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 609
    functionDepth: 2
    functionLinenumber: 609
    functionLinenumberEnd: 637
    functionName: bgp_damp_reuse_time_vty
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 3
    functionsReached:
    - bgp_get_reuse_time
    - monotime
    - bgp_damp_decay
    linkageType: ''
    returnType: char
    signature: "char *bgp_damp_reuse_time_vty(struct vty *vty, struct bgp_path_info
      *path,\n\t\t\t\t    char *timebuf, size_t len, afi_t afi,\n\t\t\t\t    safi_t
      safi, bool use_json,\n\t\t\t\t    json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:642,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_damp.c:646,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:648,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:650,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:652,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:654,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_damp.c:656,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_damp.c:659,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:661,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:663,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:664,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:666,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:668,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:670,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:673,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:674,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 5
    argNames:
    - bgp
    - vty
    - afi
    - safi
    - use_json
    argTypes:
    - struct bgp*
    - struct vty*
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 639
    functionDepth: 2
    functionLinenumber: 639
    functionLinenumberEnd: 677
    functionName: bgp_print_dampening_parameters
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - CHECK_FLAG
    - json_object_int_add
    - get_afi_safi_str
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int bgp_print_dampening_parameters(struct bgp *bgp, struct vty *vty,\n\t\t\t\t\t
      \ afi_t afi, safi_t safi, bool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:683,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_damp.c:685,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:688,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:692,1
    - Dst: bgp_print_dampening_parameters
      Src: /src/frr/bgpd/bgp_damp.c:693,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:696,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:697,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_damp.c:698,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_damp.c:701,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:701,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:706,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:707,1
    - Dst: bgp_print_dampening_parameters
      Src: /src/frr/bgpd/bgp_damp.c:709,1
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_damp.c:714,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:714,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:719,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:720,1
    - Dst: bgp_print_dampening_parameters
      Src: /src/frr/bgpd/bgp_damp.c:722,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - vty
    - afi
    - safi
    - show_flags
    argTypes:
    - struct vty*
    - afi_t
    - safi_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 679
    functionDepth: 10
    functionLinenumber: 679
    functionLinenumberEnd: 727
    functionName: bgp_show_dampening_parameters
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - strmatch
    - bgp_print_dampening_parameters
    - vty_out
    - bgp_get_default
    - CHECK_FLAG
    - get_afi_safi_str
    linkageType: ''
    returnType: int
    signature: "int bgp_show_dampening_parameters(struct vty *vty, afi_t afi, safi_t
      safi,\n\t\t\t\t  uint16_t show_flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_damp.c:701,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:701,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:706,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:707,1
    - Dst: bgp_print_dampening_parameters
      Src: /src/frr/bgpd/bgp_damp.c:709,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 700
    functionDepth: 3
    functionLinenumber: 700
    functionLinenumberEnd: 711
    functionName: FOREACH_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 0
    functionsReached:
    - strmatch
    - bgp_print_dampening_parameters
    - get_afi_safi_str
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_SAFI (safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bgpd/bgp_damp.c:714,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:714,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_damp.c:719,1
    - Dst: get_afi_safi_str
      Src: /src/frr/bgpd/bgp_damp.c:720,1
    - Dst: bgp_print_dampening_parameters
      Src: /src/frr/bgpd/bgp_damp.c:722,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 713
    functionDepth: 3
    functionLinenumber: 713
    functionLinenumberEnd: 724
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_damp.c
    functionUses: 30
    functionsReached:
    - strmatch
    - bgp_print_dampening_parameters
    - get_afi_safi_str
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - updgrp
    - ','
    - stat
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: UPDGRP_GLOBAL_STAT
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_GLOBAL_STAT(updgrp, stat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - updgrp
    - ','
    - stat
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 153
    functionName: UPDGRP_INCR_STAT_BY
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_INCR_STAT_BY(updgrp, stat, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - subgrp
    - ','
    - stat
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 158
    functionName: UPDGRP_INCR_STAT
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_INCR_STAT(subgrp, stat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - subgrp
    - ','
    - stat
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 265
    functionName: SUBGRP_INCR_STAT_BY
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_INCR_STAT_BY(subgrp, stat, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - subgrp
    - ','
    - stat
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    functionName: SUBGRP_INCR_STAT
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_INCR_STAT(subgrp, stat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - subgrp
    - ','
    - stat
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: SUBGRP_DECR_STAT
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_DECR_STAT(subgrp, stat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 303
    functionName: PAF_PEER
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAF_PEER(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 304
    functionName: PAF_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAF_SUBGRP(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 305
    functionName: PAF_UPDGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAF_UPDGRP(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 306
    functionName: PAF_PKTQ
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAF_PKTQ(f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 308
    functionName: UPDGRP_PEER
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_PEER(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 309
    functionName: UPDGRP_AFI
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_AFI(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 310
    functionName: UPDGRP_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_SAFI(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 311
    functionName: UPDGRP_INST
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_INST(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 312
    functionName: UPDGRP_AFFLAGS
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_AFFLAGS(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    functionName: UPDGRP_DBG_ON
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_DBG_ON(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 314
    functionName: UPDGRP_PEER_DBG_EN
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_PEER_DBG_EN(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 315
    functionName: UPDGRP_PEER_DBG_DIS
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_PEER_DBG_DIS(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - u
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 316
    functionName: UPDGRP_PEER_DBG_OFF
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_PEER_DBG_OFF(u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 318
    functionName: SUBGRP_AFI
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_AFI(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 319
    functionName: SUBGRP_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_SAFI(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 320
    functionName: SUBGRP_PEER
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_PEER(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 321
    functionName: SUBGRP_PCOUNT
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_PCOUNT(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 322
    functionName: SUBGRP_PFIRST
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_PFIRST(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 323
    functionName: SUBGRP_PKTQ
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_PKTQ(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 324
    functionName: SUBGRP_INST
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_INST(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 325
    functionName: SUBGRP_AFFLAGS
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_AFFLAGS(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 326
    functionName: SUBGRP_UPDGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_UPDGRP(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - updgrp
    - ','
    - subgrp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 332
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_FOREACH_SUBGRP(updgrp, subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - updgrp
    - ','
    - subgrp
    - ','
    - tmp_subgrp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: UPDGRP_FOREACH_SUBGRP_SAFE
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDGRP_FOREACH_SUBGRP_SAFE(updgrp, subgrp, tmp_subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - subgrp
    - ','
    - paf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 339
    functionName: SUBGRP_FOREACH_PEER
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_FOREACH_PEER(subgrp, paf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - subgrp
    - ','
    - paf
    - ','
    - temp_paf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 342
    functionName: SUBGRP_FOREACH_PEER_SAFE
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_FOREACH_PEER_SAFE(subgrp, paf, temp_paf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - subgrp
    - ','
    - adj
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 345
    functionName: SUBGRP_FOREACH_ADJ
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_FOREACH_ADJ(subgrp, adj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - subgrp
    - ','
    - adj
    - ','
    - adj_temp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 348
    functionName: SUBGRP_FOREACH_ADJ_SAFE
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBGRP_FOREACH_ADJ_SAFE(subgrp, adj, adj_temp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp.h:483,1
    - Dst: bpacket_queue_first
      Src: /src/frr/bgpd/bgp_updgrp.h:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct bpacket_queue*
    assertStmts:
    - condition: (bpacket_queue_first(queue)->buffer == NULL)
      pos:
        line_end: 482
        line_start: 482
        source_file: /src/frr/bgpd/bgp_updgrp.h
    constantsTouched: []
    func_position:
      end: 485
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 485
    functionName: bpacket_queue_is_empty
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 1
    functionsReached:
    - bpacket_queue_first
    - assert
    linkageType: ''
    returnType: int
    signature: int bpacket_queue_is_empty(struct bpacket_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_NEXT
      Src: /src/frr/bgpd/bgp_updgrp.h:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - struct bpacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 495
    functionName: bpacket_next
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached:
    - TAILQ_NEXT
    linkageType: ''
    returnType: struct bpacket
    signature: struct bpacket *bpacket_next(struct bpacket *pkt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_group_adjust_peer
      Src: /src/frr/bgpd/bgp_updgrp.h:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 502
    functionDepth: 9
    functionLinenumber: 502
    functionLinenumberEnd: 512
    functionName: update_group_adjust_peer_afs
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 5
    functionsReached:
    - update_group_adjust_peer
    linkageType: ''
    returnType: void
    signature: void update_group_adjust_peer_afs(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_subgroup_remove_peer
      Src: /src/frr/bgpd/bgp_updgrp.h:527,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp.h:527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 519
    functionDepth: 7
    functionLinenumber: 519
    functionLinenumberEnd: 529
    functionName: update_group_remove_peer_afs
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached:
    - update_subgroup_remove_peer
    - PAF_SUBGRP
    linkageType: ''
    returnType: void
    signature: void update_group_remove_peer_afs(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.h:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 541
    functionName: update_subgroup_needs_refresh
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 3
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int update_subgroup_needs_refresh(const struct update_subgroup *subgrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.h:550,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp.h:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - subgrp
    - value
    argTypes:
    - struct update_subgroup*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 553
    functionName: update_subgroup_set_needs_refresh
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 4
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void update_subgroup_set_needs_refresh(struct update_subgroup *subgrp,
      int value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peer_af_find
      Src: /src/frr/bgpd/bgp_updgrp.h:560,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp.h:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - peer
    - afi
    - safi
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 555
    functionDepth: 3
    functionLinenumber: 555
    functionLinenumberEnd: 564
    functionName: peer_subgroup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 4
    functionsReached:
    - peer_af_find
    - PAF_SUBGRP
    linkageType: ''
    returnType: struct update_subgroup
    signature: "struct update_subgroup *peer_subgroup(struct peer *peer,\n\t\t\t\t\t\t
      \   afi_t afi, safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: subgroup_announce_all
      Src: /src/frr/bgpd/bgp_updgrp.h:579,1
    - Dst: PAF_SUBGRP
      Src: /src/frr/bgpd/bgp_updgrp.h:579,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 581
    functionName: bgp_announce_peer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 2
    functionsReached:
    - PAF_SUBGRP
    - subgroup_announce_all
    linkageType: ''
    returnType: void
    signature: void bgp_announce_peer(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_adv_fifo_count
      Src: /src/frr/bgpd/bgp_updgrp.h:588,1
    - Dst: bgp_adv_fifo_count
      Src: /src/frr/bgpd/bgp_updgrp.h:589,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 593
    functionName: advertise_list_is_empty
    functionSourceFile: /src/frr/bgpd/bgp_updgrp.h
    functionUses: 3
    functionsReached:
    - bgp_adv_fifo_count
    linkageType: ''
    returnType: int
    signature: int advertise_list_is_empty(struct update_subgroup *subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _bgp_orig
    - ','
    - _mpinfo
    - ','
    - _bgp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 17
    functionName: BGP_ORIGINAL_UPDATE
    functionSourceFile: /src/frr/bgpd/bgp_zebra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_ORIGINAL_UPDATE(_bgp_orig, _mpinfo, _bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: BGP_RD_AS_FORMAT
    functionSourceFile: /src/frr/bgpd/bgp_rd.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_RD_AS_FORMAT(mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: BGP_RD_AS_FORMAT_SPACE
    functionSourceFile: /src/frr/bgpd/bgp_rd.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_RD_AS_FORMAT_SPACE(mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MAP
    - ','
    - NUM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: SET_BITMAP
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_BITMAP(MAP, NUM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MAP
    - ','
    - NUM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: CHECK_BITMAP
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_BITMAP(MAP, NUM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - afi
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: BGP_ATTR_NH_AFI
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_ATTR_NH_AFI(afi, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 353
    functionName: ATTR_FLAG_BIT
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 67
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_FLAG_BIT(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 358
    functionName: BGP_CLUSTER_LIST_LENGTH
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_CLUSTER_LIST_LENGTH(attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:472,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:473,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:474,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:476,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:478,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:480,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:482,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:483,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 2
    argCount: 2
    argNames:
    - out_rmap_flags
    - in_rmap_flags
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 486
    functionName: bgp_rmap_nhop_changed
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: "bool bgp_rmap_nhop_changed(uint32_t out_rmap_flags,\n\t\t\t\t\t uint32_t
      in_rmap_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 491
    functionName: mac_mobility_seqnum
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t mac_mobility_seqnum(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 496
    functionName: bgp_attr_get_pmsi_tnl_type
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: enum pta_type
    signature: enum pta_type bgp_attr_get_pmsi_tnl_type(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - attr
    - pmsi_tnl_type
    argTypes:
    - struct attr*
    - enum pta_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 502
    functionName: bgp_attr_set_pmsi_tnl_type
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_pmsi_tnl_type(struct attr *attr,\n\t\t\t\t\t      enum
      pta_type pmsi_tnl_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 508
    functionName: bgp_attr_get_ecommunity
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 44
    functionsReached: []
    linkageType: ''
    returnType: struct ecommunity
    signature: 'struct ecommunity *

      bgp_attr_get_ecommunity(const struct attr *attr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:516,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:516,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:518,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - attr
    - ecomm
    argTypes:
    - struct attr*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 519
    functionName: bgp_attr_set_ecommunity
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 16
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_ecommunity(struct attr *attr,\n\t\t\t\t\t   struct
      ecommunity *ecomm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 525
    functionName: bgp_attr_get_lcommunity
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: struct lcommunity
    signature: 'struct lcommunity *

      bgp_attr_get_lcommunity(const struct attr *attr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:533,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:533,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:535,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - attr
    - lcomm
    argTypes:
    - struct attr*
    - struct lcommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 537
    functionName: bgp_attr_set_lcommunity
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 8
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_lcommunity(struct attr *attr,\n\t\t\t\t\t   struct
      lcommunity *lcomm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 542
    functionName: bgp_attr_get_community
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: struct community
    signature: struct community *bgp_attr_get_community(const struct attr *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:550,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:550,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:552,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - attr
    - comm
    argTypes:
    - struct attr*
    - struct community*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 553
    functionName: bgp_attr_set_community
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 9
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_community(struct attr *attr,\n\t\t\t\t\t  struct
      community *comm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 559
    functionName: bgp_attr_get_ipv6_ecommunity
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: struct ecommunity
    signature: 'struct ecommunity *

      bgp_attr_get_ipv6_ecommunity(const struct attr *attr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:567,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:568,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_attr.h:570,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - attr
    - ipv6_ecomm
    argTypes:
    - struct attr*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 572
    functionName: bgp_attr_set_ipv6_ecommunity
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 4
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_ipv6_ecommunity(struct attr *attr,\n\t\t\t\t\t\tstruct
      ecommunity *ipv6_ecomm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 577
    functionName: bgp_attr_get_transit
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: struct transit
    signature: struct transit *bgp_attr_get_transit(const struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - attr
    - transit
    argTypes:
    - struct attr*
    - struct transit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 583
    functionName: bgp_attr_set_transit
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_transit(struct attr *attr,\n\t\t\t\t\tstruct transit
      *transit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: bgp_attr_get_aigp_metric
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bgp_attr_get_aigp_metric(const struct attr *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_attr.h:595,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - attr
    - aigp
    argTypes:
    - struct attr*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 596
    functionName: bgp_attr_set_aigp_metric
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 5
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: void
    signature: void bgp_attr_set_aigp_metric(struct attr *attr, uint64_t aigp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 601
    functionName: bgp_attr_get_cluster
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: struct cluster_list
    signature: struct cluster_list *bgp_attr_get_cluster(const struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - attr
    - cl
    argTypes:
    - struct attr*
    - struct cluster_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 607
    functionName: bgp_attr_set_cluster
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_cluster(struct attr *attr,\n\t\t\t\t\tstruct cluster_list
      *cl)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 613
    functionName: bgp_attr_get_evpn_overlay
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_route_evpn
    signature: 'struct bgp_route_evpn *

      bgp_attr_get_evpn_overlay(const struct attr *attr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_attr.h:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - attr
    - eo
    argTypes:
    - struct attr*
    - struct bgp_route_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 615
    functionDepth: 0
    functionLinenumber: 615
    functionLinenumberEnd: 619
    functionName: bgp_attr_set_evpn_overlay
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_evpn_overlay(struct attr *attr,\n\t\t\t\t\t     struct
      bgp_route_evpn *eo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 629
    functionName: bgp_attr_get_vnc_subtlvs
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      bgp_attr_get_vnc_subtlvs(const struct attr *attr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - attr
    - vnc_subtlvs
    argTypes:
    - struct attr*
    - struct bgp_attr_encap_subtlv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 638
    functionName: bgp_attr_set_vnc_subtlvs
    functionSourceFile: /src/frr/bgpd/bgp_attr.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_attr_set_vnc_subtlvs(struct attr *attr,\n\t\t\t struct bgp_attr_encap_subtlv
      *vnc_subtlvs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - N
    - ','
    - A
    - ','
    - TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: BGP_PATH_INFO_ADD
    functionSourceFile: /src/frr/bgpd/bgp_advertise.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PATH_INFO_ADD(N, A, TYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - N
    - ','
    - A
    - ','
    - TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: BGP_PATH_INFO_DEL
    functionSourceFile: /src/frr/bgpd/bgp_advertise.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_PATH_INFO_DEL(N, A, TYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 126
    functionName: BGP_ADJ_IN_ADD
    functionSourceFile: /src/frr/bgpd/bgp_advertise.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_ADJ_IN_ADD(N, A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - N
    - ','
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: BGP_ADJ_IN_DEL
    functionSourceFile: /src/frr/bgpd/bgp_advertise.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_ADJ_IN_DEL(N, A)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_add_match
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:25,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:28,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:32,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - index
    - command
    - arg
    - type
    - errmsg
    - errmsg_len
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - route_map_event_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 43
    functionName: bgp_route_match_add
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - route_map_add_match
    linkageType: ''
    returnType: int
    signature: "int bgp_route_match_add(struct route_map_index *index,\n\t\tconst
      char *command, const char *arg,\n\t\troute_map_event_t type,\n\t\tchar *errmsg,
      size_t errmsg_len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_map_get_match_arg
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:60,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:63,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:65,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:67,1
    - Dst: route_map_delete_match
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:70,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:73,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:77,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:88,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:89,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 6
    argNames:
    - index
    - command
    - arg
    - type
    - errmsg
    - errmsg_len
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - route_map_event_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 92
    functionName: bgp_route_match_delete
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - route_map_delete_match
    - XFREE
    - XSTRDUP
    - route_map_get_match_arg
    linkageType: ''
    returnType: int
    signature: "int bgp_route_match_delete(struct route_map_index *index,\n\t\tconst
      char *command, const char *arg,\n\t\troute_map_event_t type,\n\t\tchar *errmsg,
      size_t errmsg_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:112,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:113,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 131
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_local_preference_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_local_preference_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 147
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_local_preference_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_local_preference_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:167,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:168,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 188
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_alias_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_alias_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 203
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_alias_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_alias_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:223,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:224,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 242
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_script_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_script_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 258
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_script_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_script_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:278,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:279,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 297
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_origin_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_origin_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 313
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_origin_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_origin_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:333,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:334,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 318
    functionDepth: 2
    functionLinenumber: 318
    functionLinenumberEnd: 352
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_rpki_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_rpki_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 368
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_rpki_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_rpki_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:388,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:389,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:396,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 407
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 422
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_protocol_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:442,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:443,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 461
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_rpki_extcommunity_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_rpki_extcommunity_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:472,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 476
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_rpki_extcommunity_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_rpki_extcommunity_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:496,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:497,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 515
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_probability_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_probability_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 530
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_probability_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_probability_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:550,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:551,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:558,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 535
    functionDepth: 2
    functionLinenumber: 535
    functionLinenumberEnd: 569
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_vrf_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_vrf_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:581,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 585
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_source_vrf_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_source_vrf_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:605,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:606,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:613,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 590
    functionDepth: 2
    functionLinenumber: 590
    functionLinenumberEnd: 624
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv4_address_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv4_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:636,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 640
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv4_address_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv4_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:660,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:661,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:668,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 679
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_interface_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_interface_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:691,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 681
    functionDepth: 1
    functionLinenumber: 681
    functionLinenumberEnd: 695
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_interface_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_interface_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:715,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:716,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:723,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 734
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv6_address_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv6_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 750
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv6_address_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_ipv6_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:770,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:771,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:779,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 755
    functionDepth: 2
    functionLinenumber: 755
    functionLinenumberEnd: 792
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_local_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - bgp_route_match_add
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_local_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 808
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_peer_local_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_peer_local_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:829,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:830,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:831,1
    - Dst: IS_MATCH_AS_LIST
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:834,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:840,1
    - Dst: IS_MATCH_MAC_LIST
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:843,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:849,1
    - Dst: IS_MATCH_ROUTE_SRC
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:854,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:860,1
    - Dst: IS_MATCH_ROUTE_SRC_PL
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:864,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:870,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 813
    functionDepth: 2
    functionLinenumber: 813
    functionLinenumberEnd: 883
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_list_name_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - IS_MATCH_MAC_LIST
    - IS_MATCH_AS_LIST
    - nb_running_get_entry
    - IS_MATCH_ROUTE_SRC
    - bgp_route_match_add
    - yang_dnode_get_string
    - IS_MATCH_ROUTE_SRC_PL
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_list_name_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:895,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 899
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_list_name_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_list_name_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:918,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:925,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 904
    functionDepth: 2
    functionLinenumber: 904
    functionLinenumberEnd: 936
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_evpn_default_route_create
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_evpn_default_route_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:948,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 952
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_evpn_default_route_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_evpn_default_route_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:972,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:973,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:980,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 957
    functionDepth: 2
    functionLinenumber: 957
    functionLinenumberEnd: 991
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_evpn_vni_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_evpn_vni_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1003,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 1007
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_evpn_vni_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_evpn_vni_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1027,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1028,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1035,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1012
    functionDepth: 2
    functionLinenumber: 1012
    functionLinenumberEnd: 1047
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_evpn_route_type_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_evpn_route_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1059,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1063
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_evpn_route_type_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_evpn_route_type_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1083,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1084,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1091,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1068
    functionDepth: 2
    functionLinenumber: 1068
    functionLinenumberEnd: 1102
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_route_distinguisher_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_route_distinguisher_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1104
    functionDepth: 1
    functionLinenumber: 1104
    functionLinenumberEnd: 1118
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_route_distinguisher_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_route_distinguisher_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1136,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1137,1
    - Dst: yang_dnode_exists
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1139,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1140,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1144,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1145,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1145,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1147,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1147,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1147,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1155,1
    - Dst: IS_MATCH_COMMUNITY
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1157,1
    - Dst: IS_MATCH_LCOMMUNITY
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1161,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1171,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1178,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1181,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts:
    - condition: (ret == RMAP_COMPILE_SUCCESS)
      pos:
        line_end: 1177
        line_start: 1177
        source_file: /src/frr/bgpd/bgp_routemap_nb_config.c
    constantsTouched: []
    func_position:
      end: 1182
      start: 1123
    functionDepth: 2
    functionLinenumber: 1123
    functionLinenumberEnd: 1182
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_comm_list_finish
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - IS_MATCH_LCOMMUNITY
    - strlen
    - snprintf
    - XMALLOC
    - nb_running_get_entry
    - bgp_route_match_add
    - yang_dnode_get_string
    - XFREE
    - IS_MATCH_COMMUNITY
    - yang_dnode_exists
    - assert
    linkageType: ''
    returnType: void
    signature: "void lib_route_map_entry_match_condition_rmap_match_condition_comm_list_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1188
    functionDepth: 0
    functionLinenumber: 1188
    functionLinenumberEnd: 1201
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1203
    functionDepth: 1
    functionLinenumber: 1203
    functionLinenumberEnd: 1218
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1223
    functionDepth: 0
    functionLinenumber: 1223
    functionLinenumberEnd: 1236
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_exact_match_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_exact_match_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1238
    functionDepth: 1
    functionLinenumber: 1238
    functionLinenumberEnd: 1252
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_exact_match_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_comm_list_comm_list_name_exact_match_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1272,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1273,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1257
    functionDepth: 2
    functionLinenumber: 1257
    functionLinenumberEnd: 1291
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv4_address_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv4_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1307
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv4_address_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv4_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1327,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1328,1
    - Dst: bgp_route_match_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1335,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1312
    functionDepth: 2
    functionLinenumber: 1312
    functionLinenumberEnd: 1346
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv6_address_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - bgp_route_match_add
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv6_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1348
    functionDepth: 1
    functionLinenumber: 1348
    functionLinenumberEnd: 1362
    functionName: lib_route_map_entry_match_condition_rmap_match_condition_ipv6_address_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_rmap_match_condition_ipv6_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1382,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1383,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1368
    functionDepth: 1
    functionLinenumber: 1368
    functionLinenumberEnd: 1399
    functionName: lib_route_map_entry_set_action_rmap_set_action_distance_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_distance_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1401
    functionDepth: 1
    functionLinenumber: 1401
    functionLinenumberEnd: 1414
    functionName: lib_route_map_entry_set_action_rmap_set_action_distance_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_distance_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1435,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1436,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1420
    functionDepth: 1
    functionLinenumber: 1420
    functionLinenumberEnd: 1452
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_rt_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_rt_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1468
      start: 1454
    functionDepth: 1
    functionLinenumber: 1454
    functionLinenumberEnd: 1468
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_rt_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_rt_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1488,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1489,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1474
    functionDepth: 1
    functionLinenumber: 1474
    functionLinenumberEnd: 1505
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_nt_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_nt_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1507
    functionDepth: 1
    functionLinenumber: 1507
    functionLinenumberEnd: 1520
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_nt_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_nt_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1541,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1542,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1549,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1526
    functionDepth: 1
    functionLinenumber: 1526
    functionLinenumberEnd: 1559
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_soo_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_soo_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1571,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1561
    functionDepth: 1
    functionLinenumber: 1561
    functionLinenumberEnd: 1575
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_soo_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_soo_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1595,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1596,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1602,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1581
    functionDepth: 1
    functionLinenumber: 1581
    functionLinenumberEnd: 1612
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv4_address_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv4_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1623,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1614
    functionDepth: 1
    functionLinenumber: 1614
    functionLinenumberEnd: 1627
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv4_address_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv4_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1647,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1648,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1633
    functionDepth: 1
    functionLinenumber: 1633
    functionLinenumberEnd: 1665
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv4_nexthop_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv4_nexthop_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1667
    functionDepth: 1
    functionLinenumber: 1667
    functionLinenumberEnd: 1680
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv4_nexthop_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv4_nexthop_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1695,1
    - Dst: IS_SET_IPV6_NH_GLOBAL
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1699,1
    - Dst: yang_dnode_get_ipv6
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1700,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1701,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1702,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1703,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1704,1
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1716,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1717,1
    - Dst: IS_SET_IPV6_NH_GLOBAL
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1722,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1728,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1686
    functionDepth: 1
    functionLinenumber: 1686
    functionLinenumberEnd: 1737
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv6_address_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ipv6
    - IN6_IS_ADDR_UNSPECIFIED
    - IN6_IS_ADDR_LINKLOCAL
    - nb_running_get_entry
    - yang_dnode_get_string
    - IN6_IS_ADDR_LOOPBACK
    - generic_set_add
    - IN6_IS_ADDR_MULTICAST
    - IS_SET_IPV6_NH_GLOBAL
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv6_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1739
    functionDepth: 1
    functionLinenumber: 1739
    functionLinenumberEnd: 1752
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv6_address_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv6_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1773,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1774,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1779,1
    - Dst: IS_SET_IPV6_PEER_ADDR
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1783,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1789,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1758
    functionDepth: 1
    functionLinenumber: 1758
    functionLinenumberEnd: 1801
    functionName: lib_route_map_entry_set_action_rmap_set_action_preference_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - yang_dnode_get_string
    - IS_SET_IPV6_PEER_ADDR
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_preference_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1812,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1803
    functionDepth: 1
    functionLinenumber: 1803
    functionLinenumberEnd: 1816
    functionName: lib_route_map_entry_set_action_rmap_set_action_preference_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_preference_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1836,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1837,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1844,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1853
    functionName: lib_route_map_entry_set_action_rmap_set_action_label_index_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_label_index_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1864,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1868
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1868
    functionName: lib_route_map_entry_set_action_rmap_set_action_label_index_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_label_index_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1888,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1889,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1896,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1906
      start: 1874
    functionDepth: 1
    functionLinenumber: 1874
    functionLinenumberEnd: 1906
    functionName: lib_route_map_entry_set_action_rmap_set_action_local_pref_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_local_pref_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1917,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1921
      start: 1908
    functionDepth: 1
    functionLinenumber: 1908
    functionLinenumberEnd: 1921
    functionName: lib_route_map_entry_set_action_rmap_set_action_local_pref_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_local_pref_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1941,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1942,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1949,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1958
      start: 1927
    functionDepth: 1
    functionLinenumber: 1927
    functionLinenumberEnd: 1958
    functionName: lib_route_map_entry_set_action_rmap_set_action_weight_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_weight_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1969,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1960
    functionDepth: 1
    functionLinenumber: 1960
    functionLinenumberEnd: 1973
    functionName: lib_route_map_entry_set_action_rmap_set_action_weight_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_weight_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1993,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:1994,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2001,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 1979
    functionDepth: 1
    functionLinenumber: 1979
    functionLinenumberEnd: 2010
    functionName: lib_route_map_entry_set_action_rmap_set_action_origin_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_origin_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2021,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 2012
    functionDepth: 1
    functionLinenumber: 2012
    functionLinenumberEnd: 2026
    functionName: lib_route_map_entry_set_action_rmap_set_action_origin_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_origin_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2046,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2047,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2063
      start: 2032
    functionDepth: 1
    functionLinenumber: 2032
    functionLinenumberEnd: 2063
    functionName: lib_route_map_entry_set_action_rmap_set_action_originator_id_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_originator_id_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2074,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2078
      start: 2065
    functionDepth: 1
    functionLinenumber: 2065
    functionLinenumberEnd: 2078
    functionName: lib_route_map_entry_set_action_rmap_set_action_originator_id_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_originator_id_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2098,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2099,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2115
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2115
    functionName: lib_route_map_entry_set_action_rmap_set_action_table_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_table_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2117
    functionDepth: 1
    functionLinenumber: 2117
    functionLinenumberEnd: 2130
    functionName: lib_route_map_entry_set_action_rmap_set_action_table_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_table_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2150,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2136
    functionDepth: 1
    functionLinenumber: 2136
    functionLinenumberEnd: 2166
    functionName: lib_route_map_entry_set_action_rmap_set_action_atomic_aggregate_create
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_atomic_aggregate_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2182
      start: 2168
    functionDepth: 1
    functionLinenumber: 2168
    functionLinenumberEnd: 2182
    functionName: lib_route_map_entry_set_action_rmap_set_action_atomic_aggregate_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_atomic_aggregate_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2202,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2203,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 2188
    functionDepth: 1
    functionLinenumber: 2188
    functionLinenumberEnd: 2219
    functionName: lib_route_map_entry_set_action_rmap_set_action_aigp_metric_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_aigp_metric_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2234
      start: 2221
    functionDepth: 1
    functionLinenumber: 2221
    functionLinenumberEnd: 2234
    functionName: lib_route_map_entry_set_action_rmap_set_action_aigp_metric_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_aigp_metric_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2255,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2256,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2240
    functionDepth: 1
    functionLinenumber: 2240
    functionLinenumberEnd: 2273
    functionName: lib_route_map_entry_set_action_rmap_set_action_prepend_as_path_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_prepend_as_path_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2275
    functionDepth: 1
    functionLinenumber: 2275
    functionLinenumberEnd: 2289
    functionName: lib_route_map_entry_set_action_rmap_set_action_prepend_as_path_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_prepend_as_path_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2310,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2311,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2318,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2319,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2319,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2321,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2321,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2321,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2324,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2329,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2337
      start: 2295
    functionDepth: 1
    functionLinenumber: 2295
    functionLinenumberEnd: 2337
    functionName: lib_route_map_entry_set_action_rmap_set_action_last_as_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - XMALLOC
    - nb_running_get_entry
    - yang_dnode_get_string
    - generic_set_add
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_last_as_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 2339
    functionDepth: 1
    functionLinenumber: 2339
    functionLinenumberEnd: 2352
    functionName: lib_route_map_entry_set_action_rmap_set_action_last_as_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_last_as_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2373,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2374,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2358
    functionDepth: 1
    functionLinenumber: 2358
    functionLinenumberEnd: 2391
    functionName: lib_route_map_entry_set_action_rmap_set_action_exclude_as_path_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_exclude_as_path_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2403,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2407
      start: 2393
    functionDepth: 1
    functionLinenumber: 2393
    functionLinenumberEnd: 2407
    functionName: lib_route_map_entry_set_action_rmap_set_action_exclude_as_path_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_exclude_as_path_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2427,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2428,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2435,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2444
      start: 2413
    functionDepth: 1
    functionLinenumber: 2413
    functionLinenumberEnd: 2444
    functionName: lib_route_map_entry_set_action_rmap_set_action_replace_as_path_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_replace_as_path_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2459
      start: 2446
    functionDepth: 1
    functionLinenumber: 2446
    functionLinenumberEnd: 2459
    functionName: lib_route_map_entry_set_action_rmap_set_action_replace_as_path_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_replace_as_path_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2479,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2480,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2502
      start: 2465
    functionDepth: 1
    functionLinenumber: 2465
    functionLinenumberEnd: 2502
    functionName: lib_route_map_entry_set_action_rmap_set_action_community_none_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_community_none_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2514,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2518
      start: 2504
    functionDepth: 1
    functionLinenumber: 2504
    functionLinenumberEnd: 2518
    functionName: lib_route_map_entry_set_action_rmap_set_action_community_none_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_community_none_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2539,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2540,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2556
      start: 2524
    functionDepth: 1
    functionLinenumber: 2524
    functionLinenumberEnd: 2556
    functionName: lib_route_map_entry_set_action_rmap_set_action_community_string_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_community_string_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2558
    functionDepth: 1
    functionLinenumber: 2558
    functionLinenumberEnd: 2572
    functionName: lib_route_map_entry_set_action_rmap_set_action_community_string_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_community_string_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2593,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2594,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2602,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2617
      start: 2578
    functionDepth: 1
    functionLinenumber: 2578
    functionLinenumberEnd: 2617
    functionName: lib_route_map_entry_set_action_rmap_set_action_large_community_none_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_large_community_none_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2633
      start: 2619
    functionDepth: 1
    functionLinenumber: 2619
    functionLinenumberEnd: 2633
    functionName: lib_route_map_entry_set_action_rmap_set_action_large_community_none_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_large_community_none_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2654,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2655,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2662,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2639
    functionDepth: 1
    functionLinenumber: 2639
    functionLinenumberEnd: 2672
    functionName: lib_route_map_entry_set_action_rmap_set_action_large_community_string_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_large_community_string_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2684,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2688
      start: 2674
    functionDepth: 1
    functionLinenumber: 2674
    functionLinenumberEnd: 2688
    functionName: lib_route_map_entry_set_action_rmap_set_action_large_community_string_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_large_community_string_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2704,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2705,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2706,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2708,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2709,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2709,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2711,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2711,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2711,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2718,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2725,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts:
    - condition: (ret == CMD_SUCCESS)
      pos:
        line_end: 2724
        line_start: 2724
        source_file: /src/frr/bgpd/bgp_routemap_nb_config.c
    constantsTouched: []
    func_position:
      end: 2728
      start: 2694
    functionDepth: 1
    functionLinenumber: 2694
    functionLinenumberEnd: 2728
    functionName: lib_route_map_entry_set_action_rmap_set_action_aggregator_finish
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - XMALLOC
    - nb_running_get_entry
    - yang_dnode_get_string
    - generic_set_add
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: "void lib_route_map_entry_set_action_rmap_set_action_aggregator_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2742,1
    - Dst: asn_str2asn_match
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2745,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2756
      start: 2733
    functionDepth: 1
    functionLinenumber: 2733
    functionLinenumberEnd: 2756
    functionName: lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_asn_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - asn_str2asn_match
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_asn_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2772
      start: 2758
    functionDepth: 1
    functionLinenumber: 2758
    functionLinenumberEnd: 2772
    functionName: lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_asn_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_asn_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2778
    functionDepth: 0
    functionLinenumber: 2778
    functionLinenumberEnd: 2791
    functionName: lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_address_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2803,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2793
    functionDepth: 1
    functionLinenumber: 2793
    functionLinenumberEnd: 2807
    functionName: lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_address_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_aggregator_aggregator_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2828,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2829,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2834,1
    - Dst: IS_SET_COMM_LIST_DEL
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2836,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2843,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2853
      start: 2813
    functionDepth: 1
    functionLinenumber: 2813
    functionLinenumberEnd: 2853
    functionName: lib_route_map_entry_set_action_rmap_set_action_comm_list_name_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - IS_SET_COMM_LIST_DEL
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_comm_list_name_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2865,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2869
      start: 2855
    functionDepth: 1
    functionLinenumber: 2855
    functionLinenumberEnd: 2869
    functionName: lib_route_map_entry_set_action_rmap_set_action_comm_list_name_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_comm_list_name_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2886,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2887,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2896,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2897,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2900,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2903,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2906,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2907,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2909,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2916,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts:
    - condition: (ret == CMD_SUCCESS)
      pos:
        line_end: 2915
        line_start: 2915
        source_file: /src/frr/bgpd/bgp_routemap_nb_config.c
    constantsTouched: []
    func_position:
      end: 2917
      start: 2875
    functionDepth: 1
    functionLinenumber: 2875
    functionLinenumberEnd: 2917
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_finish
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - strlcat
    - snprintf
    - nb_running_get_entry
    - generic_set_add
    - yang_dnode_get_enum
    - yang_dnode_get_uint16
    - assert
    linkageType: ''
    returnType: void
    signature: "void lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2923
    functionDepth: 0
    functionLinenumber: 2923
    functionLinenumberEnd: 2928
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_lb_type_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_lb_type_modify(\n\t\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2935
      start: 2930
    functionDepth: 1
    functionLinenumber: 2930
    functionLinenumberEnd: 2935
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_lb_type_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_lb_type_destroy(\n\t\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2946
      start: 2941
    functionDepth: 0
    functionLinenumber: 2941
    functionLinenumberEnd: 2946
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_bandwidth_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_bandwidth_modify(\n\t\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2948
    functionDepth: 1
    functionLinenumber: 2948
    functionLinenumberEnd: 2953
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_bandwidth_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_bandwidth_destroy(\n\t\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2964
      start: 2959
    functionDepth: 0
    functionLinenumber: 2959
    functionLinenumberEnd: 2964
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_two_octet_as_specific_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_two_octet_as_specific_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2971
      start: 2966
    functionDepth: 1
    functionLinenumber: 2966
    functionLinenumberEnd: 2971
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_two_octet_as_specific_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_lb_two_octet_as_specific_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2991,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:2992,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3000,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 2977
    functionDepth: 1
    functionLinenumber: 2977
    functionLinenumberEnd: 3014
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_none_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_none_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3025,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3029
      start: 3016
    functionDepth: 1
    functionLinenumber: 3016
    functionLinenumberEnd: 3029
    functionName: lib_route_map_entry_set_action_rmap_set_action_extcommunity_none_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_extcommunity_none_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3049,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3050,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3057,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3066
      start: 3035
    functionDepth: 1
    functionLinenumber: 3035
    functionLinenumberEnd: 3066
    functionName: lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv4_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv4_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3077,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3081
      start: 3068
    functionDepth: 1
    functionLinenumber: 3068
    functionLinenumberEnd: 3081
    functionName: lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv4_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv4_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3101,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3102,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3118
      start: 3087
    functionDepth: 1
    functionLinenumber: 3087
    functionLinenumberEnd: 3118
    functionName: lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv6_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv6_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3133
      start: 3120
    functionDepth: 1
    functionLinenumber: 3120
    functionLinenumberEnd: 3133
    functionName: lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv6_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_evpn_gateway_ip_ipv6_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3153,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3154,1
    - Dst: generic_set_add
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3171
      start: 3139
    functionDepth: 1
    functionLinenumber: 3139
    functionLinenumberEnd: 3171
    functionName: lib_route_map_entry_set_action_rmap_set_action_l3vpn_nexthop_encapsulation_modify
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_l3vpn_nexthop_encapsulation_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/bgpd/bgp_routemap_nb_config.c:3182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3186
      start: 3173
    functionDepth: 1
    functionLinenumber: 3173
    functionLinenumberEnd: 3186
    functionName: lib_route_map_entry_set_action_rmap_set_action_l3vpn_nexthop_encapsulation_destroy
    functionSourceFile: /src/frr/bgpd/bgp_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_l3vpn_nexthop_encapsulation_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/bgpd/bgp_dump.c:99,1
    - Dst: localtime_r
      Src: /src/frr/bgpd/bgp_dump.c:100,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_dump.c:103,1
    - Dst: vty_get_cwd
      Src: /src/frr/bgpd/bgp_dump.c:103,1
    - Dst: strftime
      Src: /src/frr/bgpd/bgp_dump.c:108,1
    - Dst: strftime
      Src: /src/frr/bgpd/bgp_dump.c:110,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_dump.c:114,1
    - Dst: fclose
      Src: /src/frr/bgpd/bgp_dump.c:119,1
    - Dst: umask
      Src: /src/frr/bgpd/bgp_dump.c:122,1
    - Dst: fopen
      Src: /src/frr/bgpd/bgp_dump.c:123,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_dump.c:126,1
    - Dst: strerror
      Src: /src/frr/bgpd/bgp_dump.c:127,1
    - Dst: umask
      Src: /src/frr/bgpd/bgp_dump.c:128,1
    - Dst: umask
      Src: /src/frr/bgpd/bgp_dump.c:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - bgp_dump
    argTypes:
    - struct bgp_dump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 134
    functionName: bgp_dump_open_file
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - fopen
    - flog_warn
    - snprintf
    - strerror
    - localtime_r
    - strftime
    - fclose
    - vty_get_cwd
    - umask
    - time
    linkageType: ''
    returnType: FILE
    signature: FILE *bgp_dump_open_file(struct bgp_dump *bgp_dump)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/bgpd/bgp_dump.c:150,1
    - Dst: localtime_r
      Src: /src/frr/bgpd/bgp_dump.c:151,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_dump.c:157,1
    - Dst: event_add_event
      Src: /src/frr/bgpd/bgp_dump.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - bgp_dump
    - interval
    argTypes:
    - struct bgp_dump*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 167
    functionName: bgp_dump_interval_add
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - localtime_r
    - time
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int bgp_dump_interval_add(struct bgp_dump *bgp_dump, int interval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/bgpd/bgp_dump.c:181,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:187,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:188,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:189,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:190,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - obuf
    - type
    - subtype
    - dump_type
    argTypes:
    - struct stream*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 195
    functionName: bgp_dump_header
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - gettimeofday
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_dump_header(struct stream *obuf, int type, int subtype,\n\t\t\t
      \   int dump_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_dump.c:204,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - type
    argTypes:
    - struct stream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: bgp_dump_set_size
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - stream_putl_at
    - stream_get_endp
    linkageType: ''
    returnType: void
    signature: void bgp_dump_set_size(struct stream *s, int type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_dump.c:215,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:218,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_dump.c:222,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:226,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_dump.c:226,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:227,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_dump.c:227,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:229,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:233,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_dump.c:233,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_dump.c:237,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:241,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:243,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:245,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_dump.c:248,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_dump.c:251,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_dump.c:252,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_dump.c:256,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_dump.c:257,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_dump.c:264,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_dump.c:267,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_dump.c:268,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_dump.c:269,1
    - Dst: stream_write
      Src: /src/frr/bgpd/bgp_dump.c:270,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:277,1
    - Dst: bgp_dump_set_size
      Src: /src/frr/bgpd/bgp_dump.c:284,1
    - Dst: fwrite
      Src: /src/frr/bgpd/bgp_dump.c:286,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_dump.c:286,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:286,1
    - Dst: fflush
      Src: /src/frr/bgpd/bgp_dump.c:287,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 288
    functionName: bgp_dump_routes_index_table
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - strlen
    - sockunion_family
    - stream_put
    - stream_putc
    - fwrite
    - listcount
    - ALL_LIST_ELEMENTS_RO
    - bgp_dump_set_size
    - stream_putw
    - STREAM_DATA
    - stream_put_in_addr
    - stream_write
    - stream_get_endp
    - fflush
    - stream_reset
    - bgp_dump_header
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void bgp_dump_routes_index_table(struct bgp *bgp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_dump.c:298,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_dump.c:301,1
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_dump.c:303,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:307,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:311,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:315,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:319,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:324,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_dump.c:327,1
    - Dst: stream_write
      Src: /src/frr/bgpd/bgp_dump.c:333,1
    - Dst: stream_write
      Src: /src/frr/bgpd/bgp_dump.c:338,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:343,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:349,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:351,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:356,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:359,1
    - Dst: time
      Src: /src/frr/bgpd/bgp_dump.c:359,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_dump.c:359,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:363,1
    - Dst: bgp_dump_routes_attr
      Src: /src/frr/bgpd/bgp_dump.c:368,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:370,1
    - Dst: stream_set_endp
      Src: /src/frr/bgpd/bgp_dump.c:374,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_dump.c:383,1
    - Dst: bgp_dump_set_size
      Src: /src/frr/bgpd/bgp_dump.c:385,1
    - Dst: fwrite
      Src: /src/frr/bgpd/bgp_dump.c:386,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_dump.c:386,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:386,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 4
    argNames:
    - afi
    - dest
    - path
    - seq
    argTypes:
    - int
    - struct bgp_dest*
    - struct bgp_path_info*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 389
    functionName: bgp_dump_route_node_record
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - bgp_addpath_encode_rx
    - fwrite
    - stream_putc
    - bgp_dest_get_prefix
    - bgp_dump_routes_attr
    - monotime
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - bgp_dump_set_size
    - STREAM_DATA
    - stream_set_endp
    - stream_reset
    - bgp_dump_header
    - time
    - stream_putl
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *\nbgp_dump_route_node_record(int afi, struct
      bgp_dest *dest,\n\t\t\t   struct bgp_path_info *path, unsigned int seq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_dump.c:401,1
    - Dst: bgp_dump_routes_index_table
      Src: /src/frr/bgpd/bgp_dump.c:413,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_dump.c:418,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_dump.c:418,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_dump.c:419,1
    - Dst: bgp_dump_route_node_record
      Src: /src/frr/bgpd/bgp_dump.c:421,1
    - Dst: fflush
      Src: /src/frr/bgpd/bgp_dump.c:426,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - afi
    - first_run
    - seq
    argTypes:
    - int
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 393
    functionDepth: 10
    functionLinenumber: 393
    functionLinenumberEnd: 429
    functionName: bgp_dump_routes_func
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dump_routes_index_table
    - bgp_table_top
    - bgp_get_default
    - bgp_dump_route_node_record
    - fflush
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int bgp_dump_routes_func(int afi, int first_run,\n\t\t\t\t\t
      unsigned int seq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_dump.c:434,1
    - Dst: bgp_dump_open_file
      Src: /src/frr/bgpd/bgp_dump.c:437,1
    - Dst: bgp_dump_routes_func
      Src: /src/frr/bgpd/bgp_dump.c:441,1
    - Dst: bgp_dump_routes_func
      Src: /src/frr/bgpd/bgp_dump.c:442,1
    - Dst: fclose
      Src: /src/frr/bgpd/bgp_dump.c:446,1
    - Dst: bgp_dump_interval_add
      Src: /src/frr/bgpd/bgp_dump.c:453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 431
    functionDepth: 11
    functionLinenumber: 431
    functionLinenumberEnd: 454
    functionName: bgp_dump_interval_func
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - bgp_dump_interval_add
    - bgp_dump_open_file
    - fclose
    - bgp_dump_routes_func
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bgp_dump_interval_func(struct event *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_dump.c:463,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:464,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_dump.c:465,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:467,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:468,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:472,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:473,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:475,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:478,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:481,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:484,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:485,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:488,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:491,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:494,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - obuf
    - peer
    - forceas4
    argTypes:
    - struct stream*
    - struct peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 496
    functionName: bgp_dump_common
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - stream_put
    - stream_putw
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_dump_common(struct stream *obuf, struct peer *peer,\n\t\t\t
      \   int forceas4)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_dump.c:509,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:511,1
    - Dst: bgp_dump_common
      Src: /src/frr/bgpd/bgp_dump.c:513,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:515,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_dump.c:516,1
    - Dst: bgp_dump_set_size
      Src: /src/frr/bgpd/bgp_dump.c:519,1
    - Dst: fwrite
      Src: /src/frr/bgpd/bgp_dump.c:522,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_dump.c:522,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:522,1
    - Dst: fflush
      Src: /src/frr/bgpd/bgp_dump.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 499
    functionDepth: 2
    functionLinenumber: 499
    functionLinenumberEnd: 525
    functionName: bgp_dump_state
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - fwrite
    - STREAM_DATA
    - bgp_dump_set_size
    - stream_putw
    - bgp_dump_common
    - stream_get_endp
    - fflush
    - stream_reset
    - bgp_dump_header
    linkageType: ''
    returnType: int
    signature: int bgp_dump_state(struct peer *peer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_dump.c:537,1
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_dump.c:540,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_dump.c:545,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_dump.c:548,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:549,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_dump.c:551,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:552,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:555,1
    - Dst: bgp_dump_header
      Src: /src/frr/bgpd/bgp_dump.c:558,1
    - Dst: bgp_dump_common
      Src: /src/frr/bgpd/bgp_dump.c:561,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_dump.c:564,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_dump.c:564,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:564,1
    - Dst: bgp_dump_set_size
      Src: /src/frr/bgpd/bgp_dump.c:567,1
    - Dst: fwrite
      Src: /src/frr/bgpd/bgp_dump.c:570,1
    - Dst: STREAM_DATA
      Src: /src/frr/bgpd/bgp_dump.c:570,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_dump.c:570,1
    - Dst: fflush
      Src: /src/frr/bgpd/bgp_dump.c:571,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - bgp_dump
    - peer
    - packet
    argTypes:
    - struct bgp_dump*
    - struct peer*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 527
    functionDepth: 2
    functionLinenumber: 527
    functionLinenumberEnd: 572
    functionName: bgp_dump_packet_func
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - bgp_addpath_encode_rx
    - stream_put
    - fwrite
    - CHECK_FLAG
    - STREAM_DATA
    - bgp_dump_common
    - bgp_dump_set_size
    - stream_get_endp
    - fflush
    - stream_reset
    - bgp_dump_header
    linkageType: ''
    returnType: void
    signature: "void bgp_dump_packet_func(struct bgp_dump *bgp_dump, struct peer *peer,\n\t\t\t\t
      struct stream *packet)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dump_packet_func
      Src: /src/frr/bgpd/bgp_dump.c:579,1
    - Dst: bgp_dump_packet_func
      Src: /src/frr/bgpd/bgp_dump.c:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - peer
    - type
    - size
    - packet
    argTypes:
    - struct peer*
    - uint8_t
    - bgp_size_t
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 575
    functionDepth: 3
    functionLinenumber: 575
    functionLinenumberEnd: 585
    functionName: bgp_dump_packet
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - bgp_dump_packet_func
    linkageType: ''
    returnType: int
    signature: "int bgp_dump_packet(struct peer *peer, uint8_t type, bgp_size_t size,\n\t\tstruct
      stream *packet)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_dump.c:600,1
    - Dst: isdigit
      Src: /src/frr/bgpd/bgp_dump.c:603,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 624
    functionName: bgp_dump_parse_time
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strlen
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_dump_parse_time(const char *str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_dump.c:633,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_dump.c:637,1
    - Dst: bgp_dump_unset
      Src: /src/frr/bgpd/bgp_dump.c:647,1
    - Dst: bgp_dump_parse_time
      Src: /src/frr/bgpd/bgp_dump.c:651,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_dump.c:653,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_dump.c:659,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_dump.c:671,1
    - Dst: bgp_dump_interval_add
      Src: /src/frr/bgpd/bgp_dump.c:674,1
    - Dst: bgp_dump_open_file
      Src: /src/frr/bgpd/bgp_dump.c:677,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 5
    argNames:
    - vty
    - bgp_dump
    - type
    - path
    - interval_str
    argTypes:
    - struct vty*
    - struct bgp_dump*
    - enum bgp_dump_type
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 626
    functionDepth: 2
    functionLinenumber: 626
    functionLinenumberEnd: 680
    functionName: bgp_dump_set
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - bgp_dump_interval_add
    - bgp_dump_unset
    - vty_out
    - bgp_dump_parse_time
    - strcmp
    - bgp_dump_open_file
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int bgp_dump_set(struct vty *vty, struct bgp_dump *bgp_dump,\n\t\t\tenum
      bgp_dump_type type, const char *path,\n\t\t\tconst char *interval_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_dump.c:685,1
    - Dst: fclose
      Src: /src/frr/bgpd/bgp_dump.c:689,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_dump.c:694,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_dump.c:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - bgp_dump
    argTypes:
    - struct bgp_dump*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 702
    functionName: bgp_dump_unset
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    - XFREE
    - fclose
    linkageType: ''
    returnType: int
    signature: int bgp_dump_unset(struct bgp_dump *bgp_dump)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_dump.c:808,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_dump.c:812,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_dump.c:821,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_dump.c:825,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_dump.c:830,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_dump.c:834,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 838
    functionName: config_write_bgp_dump
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_bgp_dump(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_dump.c:843,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_dump.c:844,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_dump.c:845,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_dump.c:848,1
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_dump.c:850,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_dump.c:852,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_dump.c:853,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_dump.c:855,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_dump.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 841
    functionDepth: 1
    functionLinenumber: 841
    functionLinenumberEnd: 857
    functionName: bgp_dump_init
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 3
    functionsReached:
    - install_node
    - stream_new
    - hook_register
    - memset
    - install_element
    linkageType: ''
    returnType: void
    signature: void bgp_dump_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dump_unset
      Src: /src/frr/bgpd/bgp_dump.c:861,1
    - Dst: bgp_dump_unset
      Src: /src/frr/bgpd/bgp_dump.c:862,1
    - Dst: bgp_dump_unset
      Src: /src/frr/bgpd/bgp_dump.c:863,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_dump.c:865,1
    - Dst: hook_unregister
      Src: /src/frr/bgpd/bgp_dump.c:867,1
    - Dst: hook_unregister
      Src: /src/frr/bgpd/bgp_dump.c:868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 859
    functionDepth: 2
    functionLinenumber: 859
    functionLinenumberEnd: 869
    functionName: bgp_dump_finish
    functionSourceFile: /src/frr/bgpd/bgp_dump.c
    functionUses: 2
    functionsReached:
    - stream_free
    - bgp_dump_unset
    - hook_unregister
    linkageType: ''
    returnType: void
    signature: void bgp_dump_finish(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_label.c:43,1
    - Dst: stream_getw
      Src: /src/frr/bgpd/bgp_label.c:44,1
    - Dst: stream_getc
      Src: /src/frr/bgpd/bgp_label.c:45,1
    - Dst: stream_get
      Src: /src/frr/bgpd/bgp_label.c:46,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_label.c:46,1
    - Dst: stream_getl
      Src: /src/frr/bgpd/bgp_label.c:47,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_label.c:50,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_label.c:52,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_label.c:54,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_label.c:60,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_label.c:63,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_label.c:65,1
    - Dst: bgp_unset_valid_label
      Src: /src/frr/bgpd/bgp_label.c:71,1
    - Dst: mpls_lse_encode
      Src: /src/frr/bgpd/bgp_label.c:73,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_label.c:74,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_label.c:76,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_label.c:77,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_label.c:78,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 30
    functionDepth: 10
    functionLinenumber: 30
    functionLinenumberEnd: 80
    functionName: bgp_parse_fec_update
    functionSourceFile: /src/frr/bgpd/bgp_label.c
    functionUses: 1
    functionsReached:
    - bgp_dest_unlock_node
    - PSIZE
    - memset
    - bgp_process
    - mpls_lse_encode
    - bgp_get_default
    - bgp_set_valid_label
    - bgp_node_lookup
    - stream_getw
    - stream_get
    - stream_getl
    - zlog_debug
    - SET_FLAG
    - family2afi
    - bgp_unset_valid_label
    - stream_getc
    linkageType: ''
    returnType: int
    signature: int bgp_parse_fec_update(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_label.c:98,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_label.c:102,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 5
    argNames:
    - dest
    - pi
    - to
    - afi
    - safi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - struct peer*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 106
    functionName: bgp_adv_label
    functionSourceFile: /src/frr/bgpd/bgp_label.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t bgp_adv_label(struct bgp_dest *dest, struct bgp_path_info
      *pi,\n\t\t\t   struct peer *to, afi_t afi, safi_t safi)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mpls_lse_decode
      Src: /src/frr/bgpd/bgp_label.c:123,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_label.c:125,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_label.c:128,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_label.c:134,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_label.c:135,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_label.c:136,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_label.c:142,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_label.c:144,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_label.c:145,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_label.c:146,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_label.c:147,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/bgpd/bgp_label.c:147,1
    - Dst: stream_put_prefix
      Src: /src/frr/bgpd/bgp_label.c:148,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_label.c:153,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_label.c:156,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_label.c:158,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_label.c:160,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_label.c:163,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_label.c:163,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_label.c:169,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_label.c:171,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - dest
    - reg
    - label_index
    argTypes:
    - struct bgp_dest*
    - bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 172
    functionName: bgp_send_fec_register_label_msg
    functionSourceFile: /src/frr/bgpd/bgp_label.c
    functionUses: 0
    functionsReached:
    - bgp_is_valid_label
    - zclient_create_header
    - PREFIX_FAMILY
    - mpls_lse_decode
    - bgp_dest_get_prefix
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_put_prefix
    - zlog_debug
    - bgp_dest_to_rnode
    - SET_FLAG
    - UNSET_FLAG
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bgp_send_fec_register_label_msg(struct bgp_dest *dest, bool reg,\n\t\t\t\t\t
      \   uint32_t label_index)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_label.c:193,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_label.c:194,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_label.c:198,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_label.c:200,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_label.c:201,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_label.c:202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_label.c:209,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_label.c:210,1
    - Dst: mpls_lse_encode
      Src: /src/frr/bgpd/bgp_label.c:211,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_label.c:213,1
    - Dst: mpls_lse_encode
      Src: /src/frr/bgpd/bgp_label.c:217,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_label.c:218,1
    - Dst: bgp_send_fec_register_label_msg
      Src: /src/frr/bgpd/bgp_label.c:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - new_label
    - labelid
    - allocated
    argTypes:
    - mpls_label_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 226
    functionName: bgp_reg_for_label_callback
    functionSourceFile: /src/frr/bgpd/bgp_label.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - mpls_lse_encode
    - bgp_set_valid_label
    - CHECK_FLAG
    - bgp_dest_to_rnode
    - zlog_debug
    - UNSET_FLAG
    - bgp_send_fec_register_label_msg
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int bgp_reg_for_label_callback(mpls_label_t new_label, void *labelid,\n\t\t\t
      \      bool allocated)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mpls_lse_decode
      Src: /src/frr/bgpd/bgp_label.c:239,1
    - Dst: bgp_is_valid_label
      Src: /src/frr/bgpd/bgp_label.c:241,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_label.c:244,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_label.c:246,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_label.c:247,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_label.c:251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_label.c:256,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_label.c:257,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_label.c:260,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_label.c:268,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_label.c:269,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_label.c:270,1
    - Dst: bgp_lp_get
      Src: /src/frr/bgpd/bgp_label.c:278,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_label.c:284,1
    - Dst: bgp_lp_release
      Src: /src/frr/bgpd/bgp_label.c:285,1
    - Dst: bgp_send_fec_register_label_msg
      Src: /src/frr/bgpd/bgp_label.c:288,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - dest
    - pi
    - reg
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    - bool
    assertStmts:
    - condition: (pi)
      pos:
        line_end: 250
        line_start: 250
        source_file: /src/frr/bgpd/bgp_label.c
    constantsTouched: []
    func_position:
      end: 290
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 290
    functionName: bgp_reg_dereg_for_label
    functionSourceFile: /src/frr/bgpd/bgp_label.c
    functionUses: 0
    functionsReached:
    - bgp_is_valid_label
    - mpls_lse_decode
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_lp_release
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - bgp_lp_get
    - bgp_send_fec_register_label_msg
    - BGP_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: "void bgp_reg_dereg_for_label(struct bgp_dest *dest, struct bgp_path_info
      *pi,\n\t\t\t     bool reg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_label.c:304,1
    - Dst: bgp_set_valid_label
      Src: /src/frr/bgpd/bgp_label.c:307,1
    - Dst: bgp_is_withdraw_label
      Src: /src/frr/bgpd/bgp_label.c:310,1
    - Dst: label_bos
      Src: /src/frr/bgpd/bgp_label.c:310,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_label.c:317,1
    - Dst: bgp_is_withdraw_label
      Src: /src/frr/bgpd/bgp_label.c:320,1
    - Dst: label_bos
      Src: /src/frr/bgpd/bgp_label.c:320,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_label.c:321,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 4
    argNames:
    - peer
    - pnt
    - plen
    - label
    argTypes:
    - struct peer*
    - uint8_t*
    - uint8_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 327
    functionName: bgp_nlri_get_labels
    functionSourceFile: /src/frr/bgpd/bgp_label.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - flog_warn
    - bgp_is_withdraw_label
    - bgp_set_valid_label
    - label_bos
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_nlri_get_labels(struct peer *peer, uint8_t *pnt, uint8_t plen,\n\t\t\t
      \      mpls_label_t *label)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: bgp_addpath_encode_rx
      Src: /src/frr/bgpd/bgp_label.c:350,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_label.c:354,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_label.c:362,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_label.c:363,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_label.c:372,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_label.c:373,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_label.c:377,1
    - Dst: bgp_nlri_get_labels
      Src: /src/frr/bgpd/bgp_label.c:385,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_label.c:387,1
    - Dst: BSIZE
      Src: /src/frr/bgpd/bgp_label.c:393,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_label.c:397,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_label.c:408,1
    - Dst: IN_CLASSD
      Src: /src/frr/bgpd/bgp_label.c:412,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_label.c:412,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_label.c:422,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bgpd/bgp_label.c:432,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_label.c:433,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/bgpd/bgp_label.c:441,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_label.c:442,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_label.c:452,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_label.c:456,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_label.c:464,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 3
    argNames:
    - peer
    - attr
    - packet
    argTypes:
    - struct peer*
    - struct attr*
    - struct bgp_nlri*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 329
    functionDepth: 15
    functionLinenumber: 329
    functionLinenumberEnd: 472
    functionName: bgp_nlri_parse_label
    functionSourceFile: /src/frr/bgpd/bgp_label.c
    functionUses: 1
    functionsReached:
    - bgp_addpath_encode_rx
    - PSIZE
    - memset
    - bgp_nlri_get_labels
    - IN6_IS_ADDR_LINKLOCAL
    - afi2family
    - BSIZE
    - flog_err
    - IN_CLASSD
    - bgp_withdraw
    - bgp_update
    - IN6_IS_ADDR_MULTICAST
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_nlri_parse_label(struct peer *peer, struct attr *attr,\n\t\t\t
      struct bgp_nlri *packet)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:33,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:34,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:36,1
    - Dst: value::value
      Src: /src/frr/bgpd/bgp_encap_tlv.c:41,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - st
    argTypes:
    - struct bgp_tea_subtlv_encap_l2tpv3_over_ip*
    assertStmts:
    - condition: (st->cookie_length <= sizeof(st->cookie))
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    - condition: (total <= 0xff)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 49
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 49
    functionName: subtlv_encode_encap_l2tpv3_over_ip
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC::XCALLOC
    - value::value
    - assert
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: "struct bgp_attr_encap_subtlv *subtlv_encode_encap_l2tpv3_over_ip(\n\tstruct
      bgp_tea_subtlv_encap_l2tpv3_over_ip *st)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:59,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:61,1
    - Dst: value::value
      Src: /src/frr/bgpd/bgp_encap_tlv.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - st
    argTypes:
    - struct bgp_tea_subtlv_encap_gre_key*
    assertStmts:
    - condition: (total <= 0xff)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 73
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 73
    functionName: subtlv_encode_encap_gre
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - value::value
    - assert
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      subtlv_encode_encap_gre(struct bgp_tea_subtlv_encap_gre_key *st)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:82,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:84,1
    - Dst: value::value
      Src: /src/frr/bgpd/bgp_encap_tlv.c:89,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - st
    argTypes:
    - struct bgp_tea_subtlv_encap_pbb*
    assertStmts:
    - condition: (total <= 0xff)
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 105
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 105
    functionName: subtlv_encode_encap_pbb
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC::XCALLOC
    - value::value
    - assert
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      subtlv_encode_encap_pbb(struct bgp_tea_subtlv_encap_pbb *st)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:115,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:117,1
    - Dst: value::value
      Src: /src/frr/bgpd/bgp_encap_tlv.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - st
    argTypes:
    - struct bgp_tea_subtlv_proto_type*
    assertStmts:
    - condition: (total <= 0xff)
      pos:
        line_end: 114
        line_start: 114
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 127
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 127
    functionName: subtlv_encode_proto_type
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - value::value
    - assert
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      subtlv_encode_proto_type(struct bgp_tea_subtlv_proto_type *st)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:137,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:139,1
    - Dst: value::value
      Src: /src/frr/bgpd/bgp_encap_tlv.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - st
    argTypes:
    - struct bgp_tea_subtlv_color*
    assertStmts:
    - condition: (total <= 0xff)
      pos:
        line_end: 136
        line_start: 136
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 157
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 157
    functionName: subtlv_encode_color
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - value::value
    - assert
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      subtlv_encode_color(struct bgp_tea_subtlv_color *st)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:168,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:169,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:171,1
    - Dst: value::value
      Src: /src/frr/bgpd/bgp_encap_tlv.c:176,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - st
    argTypes:
    - struct bgp_tea_subtlv_ipsec_ta*
    assertStmts:
    - condition: (st->authenticator_length <= sizeof(st->value))
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    - condition: (total <= 0xff)
      pos:
        line_end: 168
        line_start: 168
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 182
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 182
    functionName: subtlv_encode_ipsec_ta
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC::XCALLOC
    - value::value
    - assert
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      subtlv_encode_ipsec_ta(struct bgp_tea_subtlv_ipsec_ta *st)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:193,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:195,1
    - Dst: value::value
      Src: /src/frr/bgpd/bgp_encap_tlv.c:200,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:202,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:205,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:206,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - st
    argTypes:
    - struct bgp_tea_subtlv_remote_endpoint*
    assertStmts:
    - condition: (total <= 0xff)
      pos:
        line_end: 192
        line_start: 192
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    - condition: (st->family == AF_INET6)
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 211
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 211
    functionName: subtlv_encode_remote_endpoint
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC::XCALLOC
    - value::value
    - assert
    linkageType: ''
    returnType: struct bgp_attr_encap_subtlv
    signature: 'struct bgp_attr_encap_subtlv *

      subtlv_encode_remote_endpoint(struct bgp_tea_subtlv_remote_endpoint *st)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - flag
    - ','
    - function
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 233
    functionName: ENC_SUBTLV
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENC_SUBTLV(flag, function, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:246,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:248,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:250,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:252,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_l2tpv3_over_ip*
    - struct attr*
    assertStmts:
    - condition: (CHECK_FLAG(bet->valid_subtlvs, BGP_TEA_SUBTLV_ENCAP))
      pos:
        line_end: 245
        line_start: 245
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 255
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 255
    functionName: bgp_encap_type_l2tpv3overip_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ENC_SUBTLV
    - CHECK_FLAG
    - assert
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_l2tpv3overip_to_tlv(\n\tstruct bgp_encap_type_l2tpv3_over_ip
      *bet, /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:269,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:270,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:272,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_gre*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 275
    functionName: bgp_encap_type_gre_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ENC_SUBTLV
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_gre_to_tlv(\n\tstruct bgp_encap_type_gre *bet,
      /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:289,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:291,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_ip_in_ip*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 294
    functionName: bgp_encap_type_ip_in_ip_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ENC_SUBTLV
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_ip_in_ip_to_tlv(\n\tstruct bgp_encap_type_ip_in_ip
      *bet, /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_transmit_tunnel_endpoint*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 310
    functionName: bgp_encap_type_transmit_tunnel_endpoint
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_transmit_tunnel_endpoint(\n\tstruct bgp_encap_type_transmit_tunnel_endpoint\n\t\t*bet,
      /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_ipsec_in_tunnel_mode*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 326
    functionName: bgp_encap_type_ipsec_in_tunnel_mode_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ENC_SUBTLV
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_ipsec_in_tunnel_mode_to_tlv(\n\tstruct bgp_encap_type_ipsec_in_tunnel_mode
      *bet, /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 344
    functionName: bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ENC_SUBTLV
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode_to_tlv(\n\tstruct
      bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode\n\t\t*bet, /* input
      structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 362
    functionName: bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ENC_SUBTLV
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode_to_tlv(\n\tstruct
      bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode\n\t\t*bet, /* input
      structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_encap_tlv.c:376,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:376,1
    - Dst: ENC_SUBTLV
      Src: /src/frr/bgpd/bgp_encap_tlv.c:377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_pbb*
    - struct attr*
    assertStmts:
    - condition: (CHECK_FLAG(bet->valid_subtlvs, BGP_TEA_SUBTLV_ENCAP))
      pos:
        line_end: 375
        line_start: 375
        source_file: /src/frr/bgpd/bgp_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 378
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 378
    functionName: bgp_encap_type_pbb_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ENC_SUBTLV
    - CHECK_FLAG
    - assert
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_pbb_to_tlv(\n\tstruct bgp_encap_type_pbb *bet,
      /* input structure */\n\tstruct attr *attr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_encap_tlv.c:391,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_encap_tlv.c:392,1
    - Dst: htonl
      Src: /src/frr/bgpd/bgp_encap_tlv.c:397,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:398,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:402,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_vxlan*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 406
    functionName: bgp_encap_type_vxlan_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 2
    functionsReached:
    - htonl
    - memcpy
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_vxlan_to_tlv(\n\tstruct bgp_encap_type_vxlan *bet,
      /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_nvgre*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 413
    functionName: bgp_encap_type_nvgre_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_nvgre_to_tlv(\n\tstruct bgp_encap_type_nvgre *bet,
      /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_mpls*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 420
    functionName: bgp_encap_type_mpls_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_mpls_to_tlv(\n\tstruct bgp_encap_type_mpls *bet,
      /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_mpls_in_gre*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 427
    functionName: bgp_encap_type_mpls_in_gre_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_mpls_in_gre_to_tlv(\n\tstruct bgp_encap_type_mpls_in_gre
      *bet, /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_vxlan_gpe*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 435
    functionName: bgp_encap_type_vxlan_gpe_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_vxlan_gpe_to_tlv(\n\tstruct bgp_encap_type_vxlan_gpe
      *bet, /* input structure */\n\tstruct attr *attr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bet
    - attr
    argTypes:
    - struct bgp_encap_type_mpls_in_udp*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 443
    functionName: bgp_encap_type_mpls_in_udp_to_tlv
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_encap_type_mpls_in_udp_to_tlv(\n\tstruct bgp_encap_type_mpls_in_udp
      *bet, /* input structure */\n\tstruct attr *attr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:455,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_encap_tlv.c:460,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:463,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - subtlv
    - st
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_tea_subtlv_encap_l2tpv3_over_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 469
    functionName: subtlv_decode_encap_l2tpv3_over_ip
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int subtlv_decode_encap_l2tpv3_over_ip(\n\tstruct bgp_attr_encap_subtlv
      *subtlv,\n\tstruct bgp_tea_subtlv_encap_l2tpv3_over_ip *st)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:476,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_encap_tlv.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - subtlv
    - st
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_tea_subtlv_encap_gre_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 482
    functionName: subtlv_decode_encap_gre
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int subtlv_decode_encap_gre(struct bgp_attr_encap_subtlv *subtlv,\n\t\t\t\t
      \  struct bgp_tea_subtlv_encap_gre_key *st)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:488,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:501,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - subtlv
    - st
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_tea_subtlv_encap_pbb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 503
    functionName: subtlv_decode_encap_pbb
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int subtlv_decode_encap_pbb(struct bgp_attr_encap_subtlv *subtlv,\n\t\t\t\t
      \  struct bgp_tea_subtlv_encap_pbb *st)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - subtlv
    - st
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_tea_subtlv_proto_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 516
    functionName: subtlv_decode_proto_type
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int subtlv_decode_proto_type(struct bgp_attr_encap_subtlv *subtlv,\n\t\t\t\t
      \   struct bgp_tea_subtlv_proto_type *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:523,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:529,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_encap_tlv.c:533,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - subtlv
    - st
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_tea_subtlv_color*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 535
    functionName: subtlv_decode_color
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int subtlv_decode_color(struct bgp_attr_encap_subtlv *subtlv,\n\t\t\t
      \      struct bgp_tea_subtlv_color *st)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:543,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - subtlv
    - st
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_tea_subtlv_ipsec_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 552
    functionName: subtlv_decode_ipsec_ta
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int subtlv_decode_ipsec_ta(struct bgp_attr_encap_subtlv *subtlv,\n\t\t\t\t
      \ struct bgp_tea_subtlv_ipsec_ta *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:561,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:567,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_encap_tlv.c:571,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/bgp_encap_tlv.c:575,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - subtlv
    - st
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_tea_subtlv_remote_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 577
    functionName: subtlv_decode_remote_endpoint
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int subtlv_decode_remote_endpoint(struct bgp_attr_encap_subtlv *subtlv,\n\t\t\t
      \     struct bgp_tea_subtlv_remote_endpoint *st)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_encap_l2tpv3_over_ip
      Src: /src/frr/bgpd/bgp_encap_tlv.c:593,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:595,1
    - Dst: subtlv_decode_proto_type
      Src: /src/frr/bgpd/bgp_encap_tlv.c:599,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:600,1
    - Dst: subtlv_decode_color
      Src: /src/frr/bgpd/bgp_encap_tlv.c:604,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:605,1
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:609,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:611,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:615,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_l2tpv3_over_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 583
    functionDepth: 2
    functionLinenumber: 583
    functionLinenumberEnd: 622
    functionName: tlv_to_bgp_encap_type_l2tpv3overip
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - subtlv_decode_remote_endpoint
    - zlog_debug
    - subtlv_decode_proto_type
    - subtlv_decode_encap_l2tpv3_over_ip
    - subtlv_decode_color
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_l2tpv3overip(\n\tstruct bgp_attr_encap_subtlv
      *stlv,\t/* subtlv chain */\n\tstruct bgp_encap_type_l2tpv3_over_ip *bet)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_encap_gre
      Src: /src/frr/bgpd/bgp_encap_tlv.c:634,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:635,1
    - Dst: subtlv_decode_proto_type
      Src: /src/frr/bgpd/bgp_encap_tlv.c:639,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:640,1
    - Dst: subtlv_decode_color
      Src: /src/frr/bgpd/bgp_encap_tlv.c:644,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:645,1
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:649,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:651,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:655,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_gre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 624
    functionDepth: 2
    functionLinenumber: 624
    functionLinenumberEnd: 662
    functionName: tlv_to_bgp_encap_type_gre
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - subtlv_decode_remote_endpoint
    - subtlv_decode_encap_gre
    - zlog_debug
    - subtlv_decode_proto_type
    - subtlv_decode_color
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_gre(\n\tstruct bgp_attr_encap_subtlv *stlv,
      /* subtlv chain */\n\tstruct bgp_encap_type_gre *bet)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_proto_type
      Src: /src/frr/bgpd/bgp_encap_tlv.c:674,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:675,1
    - Dst: subtlv_decode_color
      Src: /src/frr/bgpd/bgp_encap_tlv.c:679,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:680,1
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:684,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:686,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:690,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_ip_in_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 664
    functionDepth: 2
    functionLinenumber: 664
    functionLinenumberEnd: 697
    functionName: tlv_to_bgp_encap_type_ip_in_ip
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - subtlv_decode_remote_endpoint
    - zlog_debug
    - subtlv_decode_proto_type
    - subtlv_decode_color
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_ip_in_ip(\n\tstruct bgp_attr_encap_subtlv
      *stlv,  /* subtlv chain */\n\tstruct bgp_encap_type_ip_in_ip *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:710,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:712,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:716,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_transmit_tunnel_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 699
    functionDepth: 2
    functionLinenumber: 699
    functionLinenumberEnd: 723
    functionName: tlv_to_bgp_encap_type_transmit_tunnel_endpoint
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_transmit_tunnel_endpoint(\n\tstruct bgp_attr_encap_subtlv
      *stlv,\n\tstruct bgp_encap_type_transmit_tunnel_endpoint *bet)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_ipsec_ta
      Src: /src/frr/bgpd/bgp_encap_tlv.c:735,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:736,1
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:740,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:742,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:746,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_ipsec_in_tunnel_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 725
    functionDepth: 2
    functionLinenumber: 725
    functionLinenumberEnd: 753
    functionName: tlv_to_bgp_encap_type_ipsec_in_tunnel_mode
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_ipsec_ta
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_ipsec_in_tunnel_mode(\n\tstruct bgp_attr_encap_subtlv
      *stlv,\t\t /* subtlv chain */\n\tstruct bgp_encap_type_ipsec_in_tunnel_mode
      *bet)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_ipsec_ta
      Src: /src/frr/bgpd/bgp_encap_tlv.c:765,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:766,1
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:770,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:772,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:776,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 755
    functionDepth: 2
    functionLinenumber: 755
    functionLinenumberEnd: 783
    functionName: tlv_to_bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_ipsec_ta
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode(\n\tstruct
      bgp_attr_encap_subtlv *stlv,\n\tstruct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
      *bet)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_ipsec_ta
      Src: /src/frr/bgpd/bgp_encap_tlv.c:795,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:796,1
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:800,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:802,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:806,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 785
    functionDepth: 2
    functionLinenumber: 785
    functionLinenumberEnd: 813
    functionName: tlv_to_bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_ipsec_ta
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode(\n\tstruct
      bgp_attr_encap_subtlv *stlv,\n\tstruct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
      *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:825,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:827,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:831,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_vxlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 815
    functionDepth: 2
    functionLinenumber: 815
    functionLinenumberEnd: 838
    functionName: tlv_to_bgp_encap_type_vxlan
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_vxlan(struct bgp_attr_encap_subtlv *stlv,\n\t\t\t\tstruct
      bgp_encap_type_vxlan *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:850,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:852,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:856,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_nvgre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 840
    functionDepth: 2
    functionLinenumber: 840
    functionLinenumberEnd: 863
    functionName: tlv_to_bgp_encap_type_nvgre
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_nvgre(struct bgp_attr_encap_subtlv *stlv,\n\t\t\t\tstruct
      bgp_encap_type_nvgre *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:875,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:877,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:881,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_mpls*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 865
    functionDepth: 2
    functionLinenumber: 865
    functionLinenumberEnd: 888
    functionName: tlv_to_bgp_encap_type_mpls
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_mpls(struct bgp_attr_encap_subtlv *stlv,\n\t\t\t
      \      struct bgp_encap_type_mpls *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:900,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:902,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:906,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_mpls_in_gre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 890
    functionDepth: 2
    functionLinenumber: 890
    functionLinenumberEnd: 913
    functionName: tlv_to_bgp_encap_type_mpls_in_gre
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_mpls_in_gre(struct bgp_attr_encap_subtlv
      *stlv,\n\t\t\t\t      struct bgp_encap_type_mpls_in_gre *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:925,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:927,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:931,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_vxlan_gpe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 915
    functionDepth: 2
    functionLinenumber: 915
    functionLinenumberEnd: 938
    functionName: tlv_to_bgp_encap_type_vxlan_gpe
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_vxlan_gpe(struct bgp_attr_encap_subtlv *stlv,\n\t\t\t\t
      \   struct bgp_encap_type_vxlan_gpe *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:950,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:952,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:956,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_mpls_in_udp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 940
    functionDepth: 2
    functionLinenumber: 940
    functionLinenumberEnd: 963
    functionName: tlv_to_bgp_encap_type_mpls_in_udp
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_mpls_in_udp(struct bgp_attr_encap_subtlv
      *stlv,\n\t\t\t\t      struct bgp_encap_type_mpls_in_udp *bet)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: subtlv_decode_encap_pbb
      Src: /src/frr/bgpd/bgp_encap_tlv.c:975,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:976,1
    - Dst: subtlv_decode_remote_endpoint
      Src: /src/frr/bgpd/bgp_encap_tlv.c:980,1
    - Dst: SET_SUBTLV_FLAG
      Src: /src/frr/bgpd/bgp_encap_tlv.c:982,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_encap_tlv.c:986,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - stlv
    - bet
    argTypes:
    - struct bgp_attr_encap_subtlv*
    - struct bgp_encap_type_pbb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 993
    functionName: tlv_to_bgp_encap_type_pbb
    functionSourceFile: /src/frr/bgpd/bgp_encap_tlv.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV_FLAG
    - zlog_debug
    - subtlv_decode_remote_endpoint
    - subtlv_decode_encap_pbb
    linkageType: ''
    returnType: int
    signature: "int tlv_to_bgp_encap_type_pbb(\n\tstruct bgp_attr_encap_subtlv *stlv,
      /* subtlv chain */\n\tstruct bgp_encap_type_pbb *bet)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: PKT_PROCESS_TRACEPOINT_INSTANCE
    functionSourceFile: /src/frr/bgpd/bgp_trace.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PKT_PROCESS_TRACEPOINT_INSTANCE(name)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_vpn.c:40,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:43,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:45,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vpn.c:50,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vpn.c:51,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vpn.c:52,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vpn.c:53,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:55,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:56,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:57,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:58,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:59,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:60,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:62,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:63,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:64,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_vpn.c:67,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_vpn.c:68,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_vpn.c:69,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_vpn.c:71,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_vpn.c:74,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_vpn.c:83,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_vpn.c:86,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_vpn.c:86,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_vpn.c:91,1
    - Dst: SUBGRP_FOREACH_PEER
      Src: /src/frr/bgpd/bgp_vpn.c:92,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_vpn.c:100,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vpn.c:108,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_vpn.c:110,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vpn.c:113,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vpn.c:117,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vpn.c:120,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vpn.c:123,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:127,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:130,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:132,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:133,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:135,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:137,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/bgp_vpn.c:154,1
    - Dst: decode_rd_as
      Src: /src/frr/bgpd/bgp_vpn.c:157,1
    - Dst: decode_rd_as4
      Src: /src/frr/bgpd/bgp_vpn.c:159,1
    - Dst: decode_rd_ip
      Src: /src/frr/bgpd/bgp_vpn.c:161,1
    - Dst: decode_rd_vnc_eth
      Src: /src/frr/bgpd/bgp_vpn.c:164,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_vpn.c:167,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_vpn.c:171,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_vpn.c:175,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_vpn.c:179,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:183,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:187,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:190,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:194,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:211,1
    - Dst: route_vty_out_tmp
      Src: /src/frr/bgpd/bgp_vpn.c:215,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_vpn.c:215,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vpn.c:222,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_vpn.c:226,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_vpn.c:227,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_vpn.c:229,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_vpn.c:231,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 103
    argCount: 6
    argNames:
    - vty
    - peer
    - prd
    - afi
    - safi
    - use_json
    argTypes:
    - struct vty*
    - struct peer*
    - struct prefix_rd*
    - afi_t
    - safi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 22
    functionDepth: 10
    functionLinenumber: 22
    functionLinenumberEnd: 234
    functionName: show_adj_route_vpn
    functionSourceFile: /src/frr/bgpd/bgp_vpn.c
    functionUses: 0
    functionsReached:
    - memcmp
    - decode_rd_ip
    - json_object_string_add
    - json_object_string_addf
    - decode_rd_as
    - SUBGRP_FOREACH_PEER
    - memset
    - decode_rd_as4
    - snprintf
    - bgp_get_default
    - bgp_dest_get_prefix
    - decode_rd_type
    - route_vty_out_tmp
    - vty_out
    - json_object_int_add
    - decode_rd_vnc_eth
    - json_object_new_object
    - bgp_route_next
    - bgp_table_top
    - snprintfrr
    - json_object_object_add
    - bgp_dest_get_bgp_path_info
    - RB_FOREACH
    - bgp_dest_get_bgp_table_info
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int show_adj_route_vpn(struct vty *vty, struct peer *peer,\n\t\t       struct
      prefix_rd *prd, afi_t afi, safi_t safi,\n\t\t       bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/bgpd/bgp_debug.c:187,1
    - Dst: str2sockunion
      Src: /src/frr/bgpd/bgp_debug.c:195,1
    - Dst: peer_lookup_by_conf_if
      Src: /src/frr/bgpd/bgp_debug.c:199,1
    - Dst: peer_lookup_by_hostname
      Src: /src/frr/bgpd/bgp_debug.c:202,1
    - Dst: peer_lookup
      Src: /src/frr/bgpd/bgp_debug.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - peer_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 185
    functionDepth: 10
    functionLinenumber: 185
    functionLinenumberEnd: 207
    functionName: bgp_find_peer
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 0
    functionsReached:
    - peer_lookup_by_hostname
    - str2sockunion
    - VTY_GET_CONTEXT
    - peer_lookup
    - peer_lookup_by_conf_if
    linkageType: ''
    returnType: struct peer
    signature: struct peer *bgp_find_peer(struct vty *vty, const char *peer_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_debug.c:215,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/bgp_debug.c:216,1
    - Dst: prefix_free
      Src: /src/frr/bgpd/bgp_debug.c:217,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_debug.c:218,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_debug.c:219,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_debug.c:248,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_debug.c:293,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_debug.c:297,1
    - Dst: prefix_new
      Src: /src/frr/bgpd/bgp_debug.c:301,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgp_debug.c:345,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_debug.c:381,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:382,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:382,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:382,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_debug.c:385,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:386,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_debug.c:388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:388,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:388,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:389,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:389,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:389,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:392,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:392,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:393,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:393,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:393,1
    - Dst: bgp_attr_get_aigp_metric
      Src: /src/frr/bgpd/bgp_debug.c:395,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:397,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:397,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:398,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:398,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:398,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:401,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:401,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:402,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:402,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:402,1
    - Dst: community_str
      Src: /src/frr/bgpd/bgp_debug.c:404,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/bgp_debug.c:404,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:407,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:407,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:408,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:408,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:408,1
    - Dst: lcommunity_str
      Src: /src/frr/bgpd/bgp_debug.c:410,1
    - Dst: bgp_attr_get_lcommunity
      Src: /src/frr/bgpd/bgp_debug.c:410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:413,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:413,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:414,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:414,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:414,1
    - Dst: ecommunity_str
      Src: /src/frr/bgpd/bgp_debug.c:416,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_debug.c:416,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:418,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:418,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:419,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:419,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:422,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:422,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:423,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:423,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:427,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:427,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:428,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:428,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:428,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:431,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_debug.c:431,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:435,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:435,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:435,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/bgp_debug.c:438,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:440,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:440,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_debug.c:440,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 209
    functionDepth: 3
    functionLinenumber: 209
    functionLinenumberEnd: 442
    functionName: bgp_debug_list_free
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 0
    functionsReached:
    - strlen
    - ecommunity_str
    - bgp_attr_get_aigp_metric
    - bgp_attr_get_lcommunity
    - prefix_free
    - community_str
    - snprintf
    - XCALLOC
    - prefix_match
    - bgp_attr_get_cluster
    - if
    - vty_out
    - prefix_new
    - bgp_attr_get_ecommunity
    - lcommunity_str
    - XFREE
    - listnode_delete
    - bgp_attr_get_community
    - XSTRDUP
    - CHECK_FLAG
    - snprintfrr
    - ATTR_FLAG_BIT
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void bgp_debug_list_free(struct list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_debug.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 467
    functionName: bgp_notify_code_str
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *bgp_notify_code_str(char code)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_debug.c:474,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_debug.c:477,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_debug.c:480,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_debug.c:485,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_debug.c:488,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_debug.c:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - code
    - subcode
    argTypes:
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 495
    functionName: bgp_notify_subcode_str
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 0
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *bgp_notify_subcode_str(char code, char subcode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_sanitize
      Src: /src/frr/bgpd/bgp_debug.c:508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 4
    argNames:
    - buf
    - bufsz
    - data
    - datalen
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 509
    functionName: bgp_notify_admin_message
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 1
    functionsReached:
    - zlog_sanitize
    linkageType: ''
    returnType: char
    signature: "char *bgp_notify_admin_message(char *buf, size_t bufsz, uint8_t *data,\n\t\t\t\t
      \    size_t datalen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_debug.c:520,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_debug.c:521,1
    - Dst: bgp_notify_code_str
      Src: /src/frr/bgpd/bgp_debug.c:522,1
    - Dst: bgp_notify_subcode_str
      Src: /src/frr/bgpd/bgp_debug.c:523,1
    - Dst: bgp_notify_admin_message
      Src: /src/frr/bgpd/bgp_debug.c:530,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_debug.c:536,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_debug.c:539,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_debug.c:547,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_debug.c:550,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - peer
    - bgp_notify
    - direct
    - hard_reset
    argTypes:
    - struct peer*
    - struct bgp_notify*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 512
    functionDepth: 2
    functionLinenumber: 512
    functionLinenumberEnd: 558
    functionName: bgp_notify_print
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 3
    functionsReached:
    - zlog_info
    - bgp_notify_subcode_str
    - CHECK_FLAG
    - strcmp
    - BGP_DEBUG
    - bgp_notify_admin_message
    - bgp_notify_code_str
    linkageType: ''
    returnType: void
    signature: "void bgp_notify_print(struct peer *peer, struct bgp_notify *bgp_notify,\n\t\t
      \     const char *direct, bool hard_reset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_debug.c:563,1
    - Dst: update_group_walk
      Src: /src/frr/bgpd/bgp_debug.c:564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 560
    functionDepth: 10
    functionLinenumber: 560
    functionLinenumberEnd: 565
    functionName: bgp_debug_clear_updgrp_update_dbg
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - update_group_walk
    linkageType: ''
    returnType: void
    signature: void bgp_debug_clear_updgrp_update_dbg(struct bgp *bgp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/bgpd/bgp_debug.c:575,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:576,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_debug.c:579,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_debug.c:582,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:585,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_debug.c:588,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_debug.c:590,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:596,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_debug.c:600,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:603,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_debug.c:605,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_debug.c:611,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vty
    - desc
    - p
    argTypes:
    - struct vty*
    - char*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 612
    functionName: bgp_debug_print_evpn_prefix
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v4
    - snprintf
    - vty_out
    - prefix_mac2str
    - snprintfrr
    - is_evpn_prefix_ipaddr_none
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: "void bgp_debug_print_evpn_prefix(struct vty *vty, const char *desc,\n\t\t\t\t\tstruct
      prefix *p)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_cli_parse_type
      Src: /src/frr/bgpd/bgp_debug.c:623,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_debug.c:627,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_debug.c:629,1
    - Dst: prefix_str2mac
      Src: /src/frr/bgpd/bgp_debug.c:630,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_debug.c:631,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_debug.c:635,1
    - Dst: str2ipaddr
      Src: /src/frr/bgpd/bgp_debug.c:636,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_debug.c:637,1
    - Dst: build_evpn_type2_prefix
      Src: /src/frr/bgpd/bgp_debug.c:641,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_debug.c:644,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_debug.c:646,1
    - Dst: str2ipaddr
      Src: /src/frr/bgpd/bgp_debug.c:647,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_debug.c:648,1
    - Dst: build_evpn_type3_prefix
      Src: /src/frr/bgpd/bgp_debug.c:652,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_debug.c:657,1
    - Dst: argv_find
      Src: /src/frr/bgpd/bgp_debug.c:658,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/bgp_debug.c:659,1
    - Dst: apply_mask
      Src: /src/frr/bgpd/bgp_debug.c:660,1
    - Dst: build_type5_prefix_from_ip_prefix
      Src: /src/frr/bgpd/bgp_debug.c:662,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 4
    argNames:
    - vty
    - argv
    - argc
    - argv_p
    argTypes:
    - struct vty*
    - struct cmd_token**
    - int
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 668
    functionName: bgp_debug_parse_evpn_prefix
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 0
    functionsReached:
    - build_evpn_type2_prefix
    - vty_out
    - memset
    - apply_mask
    - bgp_evpn_cli_parse_type
    - build_type5_prefix_from_ip_prefix
    - build_evpn_type3_prefix
    - str2prefix
    - str2ipaddr
    - argv_find
    - prefix_str2mac
    linkageType: ''
    returnType: int
    signature: "int bgp_debug_parse_evpn_prefix(struct vty *vty, struct cmd_token
      **argv,\n\t\t\t\t       int argc, struct prefix *argv_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - option
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 676
    functionName: debug
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 1306
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int debug(unsigned int option)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_per_peer
      Src: /src/frr/bgpd/bgp_debug.c:2547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2550
      start: 2540
    functionDepth: 0
    functionLinenumber: 2540
    functionLinenumberEnd: 2550
    functionName: bgp_debug_neighbor_events
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 67
    functionsReached:
    - bgp_debug_per_peer
    linkageType: ''
    returnType: bool
    signature: bool bgp_debug_neighbor_events(const struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_per_peer
      Src: /src/frr/bgpd/bgp_debug.c:2559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2562
      start: 2552
    functionDepth: 0
    functionLinenumber: 2552
    functionLinenumberEnd: 2562
    functionName: bgp_debug_keepalive
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 4
    functionsReached:
    - bgp_debug_per_peer
    linkageType: ''
    returnType: bool
    signature: bool bgp_debug_keepalive(const struct peer *peer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_per_peer
      Src: /src/frr/bgpd/bgp_debug.c:2573,1
    - Dst: bgp_debug_per_peer
      Src: /src/frr/bgpd/bgp_debug.c:2581,1
    - Dst: UPDGRP_DBG_ON
      Src: /src/frr/bgpd/bgp_debug.c:2588,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_debug.c:2593,1
    - Dst: bgp_debug_per_prefix
      Src: /src/frr/bgpd/bgp_debug.c:2594,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 4
    argNames:
    - peer
    - p
    - updgrp
    - inbound
    argTypes:
    - struct peer*
    - struct prefix*
    - struct update_group*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2601
      start: 2564
    functionDepth: 1
    functionLinenumber: 2564
    functionLinenumberEnd: 2601
    functionName: bgp_debug_update
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 32
    functionsReached:
    - bgp_debug_per_peer
    - UPDGRP_DBG_ON
    - bgp_debug_per_prefix
    - BGP_DEBUG
    linkageType: ''
    returnType: bool
    signature: "bool bgp_debug_update(const struct peer *peer, const struct prefix
      *p,\n\t\t      struct update_group *updgrp, unsigned int inbound)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_debug.c:2605,1
    - Dst: bgp_debug_per_prefix
      Src: /src/frr/bgpd/bgp_debug.c:2606,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_debug.c:2607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2603
    functionDepth: 1
    functionLinenumber: 2603
    functionLinenumberEnd: 2613
    functionName: bgp_debug_bestpath
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 3
    functionsReached:
    - BGP_DEBUG
    - bgp_debug_per_prefix
    - bgp_dest_get_prefix
    linkageType: ''
    returnType: bool
    signature: bool bgp_debug_bestpath(struct bgp_dest *dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_debug.c:2617,1
    - Dst: bgp_debug_per_prefix
      Src: /src/frr/bgpd/bgp_debug.c:2618,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2625
      start: 2615
    functionDepth: 1
    functionLinenumber: 2615
    functionLinenumberEnd: 2625
    functionName: bgp_debug_zebra
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 15
    functionsReached:
    - BGP_DEBUG
    - bgp_debug_per_prefix
    linkageType: ''
    returnType: bool
    signature: bool bgp_debug_zebra(const struct prefix *p)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:2654,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_debug.c:2663,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_debug.c:2664,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_debug.c:2666,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_debug.c:2667,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:2670,1
    - Dst: bgp_labeled_safi
      Src: /src/frr/bgpd/bgp_debug.c:2675,1
    - Dst: bgp_evpn_label2str
      Src: /src/frr/bgpd/bgp_debug.c:2680,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:2681,1
    - Dst: decode_label
      Src: /src/frr/bgpd/bgp_debug.c:2686,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:2687,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:2693,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:2694,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_debug.c:2695,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_debug.c:2695,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:2697,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_debug.c:2698,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_debug.c:2699,1
    - Dst: bgp_fs_nlri_get_string
      Src: /src/frr/bgpd/bgp_debug.c:2704,1
    - Dst: family2afi
      Src: /src/frr/bgpd/bgp_debug.c:2708,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_debug.c:2709,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_debug.c:2709,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_debug.c:2712,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_debug.c:2713,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_debug.c:2713,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 11
    argNames:
    - afi
    - safi
    - prd
    - pu
    - label
    - num_labels
    - addpath_valid
    - addpath_id
    - overlay_index
    - str
    - size
    argTypes:
    - afi_t
    - safi_t
    - struct prefix_rd*
    - union prefixconstptr
    - mpls_label_t*
    - uint32_t
    - int
    - uint32_t
    - struct bgp_route_evpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2716
      start: 2627
    functionDepth: 1
    functionLinenumber: 2627
    functionLinenumberEnd: 2716
    functionName: bgp_debug_rdpfxpath2str
    functionSourceFile: /src/frr/bgpd/bgp_debug.c
    functionUses: 5
    functionsReached:
    - bgp_get_asnotation
    - safi2str
    - is_evpn_prefix_ipaddr_v4
    - snprintf
    - decode_label
    - BGP_RD_AS_FORMAT
    - snprintfrr
    - afi2str
    - inet_ntop
    - bgp_labeled_safi
    - family2afi
    - is_evpn_prefix_ipaddr_v6
    - bgp_evpn_label2str
    - bgp_fs_nlri_get_string
    linkageType: ''
    returnType: char
    signature: "char *bgp_debug_rdpfxpath2str(afi_t afi, safi_t safi,\n\t\t\t\t    const
      struct prefix_rd *prd,\n\t\t\t\t    union prefixconstptr pu,\n\t\t\t\t    mpls_label_t
      *label, uint32_t num_labels,\n\t\t\t\t    int addpath_valid, uint32_t addpath_id,\n\t\t\t\t
      \   struct bgp_route_evpn *overlay_index,\n\t\t\t\t    char *str, int size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _peer
    - ','
    - _afi
    - ','
    - _safi
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: BGP_UPDATE_EOR_PKT
    functionSourceFile: /src/frr/bgpd/bgp_packet.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BGP_UPDATE_EOR_PKT(_peer, _afi, _safi, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - count
    - ','
    - ptr
    - ','
    - format
    - ','
    - remaining_len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 78
    functionName: FS_STRING_UPDATE
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FS_STRING_UPDATE(count, ptr, format, remaining_len)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:102,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:103,1
    - Dst: bgp_flowspec_ip_address
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:116,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:125,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:126,1
    - Dst: FS_STRING_UPDATE
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:130,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:131,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:133,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:146,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:153,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:154,1
    - Dst: FS_STRING_UPDATE
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:158,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:159,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:161,1
    - Dst: bgp_flowspec_bitmask_decode
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:168,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:176,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:177,1
    - Dst: FS_STRING_UPDATE
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:182,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:183,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:185,1
    - Dst: bgp_flowspec_op_decode
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:193,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:201,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:202,1
    - Dst: FS_STRING_UPDATE
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:206,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:207,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:209,1
    - Dst: bgp_flowspec_bitmask_decode
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:216,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:224,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:225,1
    - Dst: FS_STRING_UPDATE
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:230,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:231,1
    - Dst: lookup_msg
      Src: /src/frr/bgpd/bgp_flowspec_vty.c:233,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 92
    argCount: 6
    argNames:
    - nlri_content
    - len
    - return_string
    - format
    - json_path
    - afi
    argTypes:
    - unsigned char*
    - size_t
    - char*
    - int
    - json_object*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 245
    functionName: bgp_fs_nlri_get_string
    functionSourceFile: /src/frr/bgpd/bgp_flowspec_vty.c
    functionUses: 3
    functionsReached:
    - FS_STRING_UPDATE
    - snprintf
    - bgp_flowspec_op_decode
    - json_object_string_add
    - bgp_flowspec_bitmask_decode
    - lookup_msg
    - bgp_flowspec_ip_address
    linkageType: ''
    returnType: void
    signature: "void bgp_fs_nlri_get_string(unsigned char *nlri_content, size_t len,\n\t\t\t
      \   char *return_string, int format,\n\t\t\t    json_object *json_path,\n\t\t\t
      \   afi_t afi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.h:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 345
    functionName: bgp_evpn_is_es_local
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_is_es_local(struct bgp_evpn_es *es)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.h:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - esi
    argTypes:
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: bgp_evpn_is_esi_valid
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 8
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_is_esi_valid(esi_t *esi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 356
    functionName: bgp_evpn_attr_get_esi
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: esi_t
    signature: esi_t *bgp_evpn_attr_get_esi(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 362
    functionName: bgp_evpn_attr_is_sync
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_attr_is_sync(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: bgp_evpn_attr_get_sync_seq
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_evpn_attr_get_sync_seq(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 373
    functionName: bgp_evpn_attr_is_active_on_peer
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_attr_is_active_on_peer(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 379
    functionName: bgp_evpn_attr_is_router_on_peer
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_attr_is_router_on_peer(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: bgp_evpn_attr_is_proxy
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_attr_is_proxy(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 389
    functionName: bgp_evpn_attr_is_local_es
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_attr_is_local_es(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 394
    functionName: bgp_evpn_attr_get_df_pref
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_evpn_attr_get_df_pref(struct attr *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 400
    functionName: bgp_evpn_local_es_is_active
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_local_es_is_active(struct bgp_evpn_es *es)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - safi
    argTypes:
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 39
    functionName: bgp_labeled_safi
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_labeled_safi(safi_t safi)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: bgp_is_withdraw_label
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_is_withdraw_label(mpls_label_t *label)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: bgp_is_valid_label
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_is_valid_label(const mpls_label_t *label)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: bgp_set_valid_label
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_set_valid_label(mpls_label_t *label)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: bgp_unset_valid_label
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_unset_valid_label(mpls_label_t *label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_reg_dereg_for_label
      Src: /src/frr/bgpd/bgp_label.h:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - pi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 5
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: bgp_register_for_label
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 1
    functionsReached:
    - bgp_reg_dereg_for_label
    linkageType: ''
    returnType: void
    signature: "void bgp_register_for_label(struct bgp_dest *dest,\n\t\t\t\t\t  struct
      bgp_path_info *pi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_reg_dereg_for_label
      Src: /src/frr/bgpd/bgp_label.h:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 5
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: bgp_unregister_for_label
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 1
    functionsReached:
    - bgp_reg_dereg_for_label
    linkageType: ''
    returnType: void
    signature: void bgp_unregister_for_label(struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: label_bos
    functionSourceFile: /src/frr/bgpd/bgp_label.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t label_bos(mpls_label_t *label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rnode
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: bgp_dest_from_rnode
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_dest
    signature: struct bgp_dest *bgp_dest_from_rnode(struct route_node *rnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: bgp_dest_to_rnode
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *bgp_dest_to_rnode(const struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_info
      Src: /src/frr/bgpd/bgp_table.h:156,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.h:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: bgp_dest_table
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 21
    functionsReached:
    - bgp_dest_to_rnode
    - route_table_get_info
    linkageType: ''
    returnType: struct bgp_table
    signature: struct bgp_table *bgp_dest_table(struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.h:166,1
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: bgp_dest_parent_nolock
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 3
    functionsReached:
    - bgp_dest_from_rnode
    - bgp_dest_to_rnode
    linkageType: ''
    returnType: struct bgp_dest
    signature: struct bgp_dest *bgp_dest_parent_nolock(struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: bgp_table_top_nolock
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 3
    functionsReached:
    - bgp_dest_from_rnode
    linkageType: ''
    returnType: struct bgp_dest
    signature: 'struct bgp_dest *

      bgp_table_top_nolock(const struct bgp_table *const table)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:190,1
    - Dst: route_top
      Src: /src/frr/bgpd/bgp_table.h:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 191
    functionName: bgp_table_top
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 67
    functionsReached:
    - bgp_dest_from_rnode
    - route_top
    linkageType: ''
    returnType: struct bgp_dest
    signature: 'struct bgp_dest *

      bgp_table_top(const struct bgp_table *const table)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:198,1
    - Dst: route_next
      Src: /src/frr/bgpd/bgp_table.h:198,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.h:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: bgp_route_next
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 68
    functionsReached:
    - bgp_dest_from_rnode
    - bgp_dest_to_rnode
    - route_next
    linkageType: ''
    returnType: struct bgp_dest
    signature: struct bgp_dest *bgp_route_next(struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_next_until
      Src: /src/frr/bgpd/bgp_table.h:209,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.h:209,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.h:210,1
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - limit
    argTypes:
    - struct bgp_dest*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 213
    functionName: bgp_route_next_until
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 8
    functionsReached:
    - bgp_dest_from_rnode
    - bgp_dest_to_rnode
    - route_next_until
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_route_next_until(struct bgp_dest *dest,\n\t\t\t\t\t\t
      \   struct bgp_dest *limit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:221,1
    - Dst: route_node_get
      Src: /src/frr/bgpd/bgp_table.h:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct bgp_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: bgp_node_get
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 22
    functionsReached:
    - bgp_dest_from_rnode
    - route_node_get
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_node_get(struct bgp_table *const table,\n\t\t\t\t\t
      \   const struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/bgpd/bgp_table.h:230,1
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct bgp_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: bgp_node_lookup
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 16
    functionsReached:
    - bgp_dest_from_rnode
    - route_node_lookup
    linkageType: ''
    returnType: struct bgp_dest
    signature: 'struct bgp_dest *

      bgp_node_lookup(const struct bgp_table *const table, const struct prefix *p)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_node_match
      Src: /src/frr/bgpd/bgp_table.h:241,1
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct bgp_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: bgp_node_match
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 11
    functionsReached:
    - bgp_dest_from_rnode
    - route_node_match
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_node_match(const struct bgp_table *table,\n\t\t\t\t\t
      \     const struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_count
      Src: /src/frr/bgpd/bgp_table.h:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: bgp_table_count
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 0
    functionsReached:
    - route_table_count
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long bgp_table_count(const struct bgp_table *const table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.h:257,1
    - Dst: route_table_get_next
      Src: /src/frr/bgpd/bgp_table.h:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct bgp_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 258
    functionName: bgp_table_get_next
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 0
    functionsReached:
    - bgp_dest_from_rnode
    - route_table_get_next
    linkageType: ''
    returnType: struct bgp_dest
    signature: "struct bgp_dest *bgp_table_get_next(const struct bgp_table *table,\n\t\t\t\t\t\t
      \ const struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: bgp_table_next_version
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bgp_table_next_version(struct bgp_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: bgp_table_version
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t bgp_table_version(struct bgp_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: bgp_dest_get_bgp_aggregate_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_aggregate
    signature: 'struct bgp_aggregate *

      bgp_dest_get_bgp_aggregate_info(struct bgp_dest *dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - aggregate
    argTypes:
    - struct bgp_dest*
    - struct bgp_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 293
    functionName: bgp_dest_set_bgp_aggregate_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_dest_set_bgp_aggregate_info(struct bgp_dest *dest,\n\t\t\t\tstruct
      bgp_aggregate *aggregate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 299
    functionName: bgp_dest_get_bgp_distance_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_distance
    signature: 'struct bgp_distance *

      bgp_dest_get_bgp_distance_info(struct bgp_dest *dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - distance
    argTypes:
    - struct bgp_dest*
    - struct bgp_distance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: bgp_dest_set_bgp_distance_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_dest_set_bgp_distance_info(struct bgp_dest *dest,\n\t\t\t\t\t\t
      \ struct bgp_distance *distance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: bgp_dest_get_bgp_static_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_static
    signature: 'struct bgp_static *

      bgp_dest_get_bgp_static_info(struct bgp_dest *dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - bgp_static
    argTypes:
    - struct bgp_dest*
    - struct bgp_static*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 317
    functionName: bgp_dest_set_bgp_static_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_dest_set_bgp_static_info(struct bgp_dest *dest,\n\t\t\t\t\t\tstruct
      bgp_static *bgp_static)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 323
    functionName: bgp_dest_get_bgp_connected_ref_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_connected_ref
    signature: 'struct bgp_connected_ref *

      bgp_dest_get_bgp_connected_ref_info(struct bgp_dest *dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - bc
    argTypes:
    - struct bgp_dest*
    - struct bgp_connected_ref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 330
    functionName: bgp_dest_set_bgp_connected_ref_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_dest_set_bgp_connected_ref_info(struct bgp_dest *dest,\n\t\t\t\t
      \   struct bgp_connected_ref *bc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 336
    functionName: bgp_dest_get_bgp_nexthop_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_nexthop_cache
    signature: 'struct bgp_nexthop_cache *

      bgp_dest_get_bgp_nexthop_info(struct bgp_dest *dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - bnc
    argTypes:
    - struct bgp_dest*
    - struct bgp_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: bgp_dest_set_bgp_nexthop_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_dest_set_bgp_nexthop_info(struct bgp_dest *dest,\n\t\t\t\t\t\t
      struct bgp_nexthop_cache *bnc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 348
    functionName: bgp_dest_get_bgp_path_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 84
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_path_info
    signature: 'struct bgp_path_info *

      bgp_dest_get_bgp_path_info(struct bgp_dest *dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - bi
    argTypes:
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 354
    functionName: bgp_dest_set_bgp_path_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_dest_set_bgp_path_info(struct bgp_dest *dest,\n\t\t\t\t\t
      \     struct bgp_path_info *bi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 360
    functionName: bgp_dest_get_bgp_table_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: struct bgp_table
    signature: 'struct bgp_table *

      bgp_dest_get_bgp_table_info(struct bgp_dest *dest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - table
    argTypes:
    - struct bgp_dest*
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 366
    functionName: bgp_dest_set_bgp_table_info
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bgp_dest_set_bgp_table_info(struct bgp_dest *dest,\n\t\t\t\t\t
      \      struct bgp_table *table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: bgp_dest_has_bgp_path_info_data
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_dest_has_bgp_path_info_data(struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: bgp_dest_get_prefix
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 100
    functionsReached: []
    linkageType: ''
    returnType: struct prefix
    signature: struct prefix *bgp_dest_get_prefix(const struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: bgp_dest_get_lock_count
    functionSourceFile: /src/frr/bgpd/bgp_table.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_dest_get_lock_count(const struct bgp_dest *dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bmp_bgp*
    - struct bmp_bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: bmp_bgp_cmp
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bmp_bgp_cmp(const struct bmp_bgp *a, const struct bmp_bgp *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_bmp.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - e
    argTypes:
    - struct bmp_bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: bmp_bgp_hash
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bmp_bgp_hash(const struct bmp_bgp *e)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bmp_bgp_peer*
    - struct bmp_bgp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: bmp_bgp_peer_cmp
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bmp_bgp_peer_cmp(const struct bmp_bgp_peer *a,\n\t\tconst struct
      bmp_bgp_peer *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - e
    argTypes:
    - struct bmp_bgp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: bmp_bgp_peer_hash
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bmp_bgp_peer_hash(const struct bmp_bgp_peer *e)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_cmp
      Src: /src/frr/bgpd/bgp_bmp.c:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bmp_listener*
    - struct bmp_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 121
    functionName: bmp_listener_cmp
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - sockunion_cmp
    linkageType: ''
    returnType: int
    signature: "int bmp_listener_cmp(const struct bmp_listener *a,\n\t\tconst struct
      bmp_listener *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_listeners_del
      Src: /src/frr/bgpd/bgp_bmp.c:128,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bl
    argTypes:
    - struct bmp_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: bmp_listener_put
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_listeners_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bmp_listener_put(struct bmp_listener *bl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_bmp.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bmp_targets*
    - struct bmp_targets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 136
    functionName: bmp_targets_cmp
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int bmp_targets_cmp(const struct bmp_targets *a,\n\t\t\t   const struct
      bmp_targets *b)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_bmp.c:150,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_bmp.c:160,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_bmp.c:168,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_bmp.c:171,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 24
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bmp_queue_entry*
    - struct bmp_queue_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: bmp_qhash_cmp
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - memcmp
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int bmp_qhash_cmp(const struct bmp_queue_entry *a,\n\t\tconst struct
      bmp_queue_entry *b)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_hash_key
      Src: /src/frr/bgpd/bgp_bmp.c:181,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_bmp.c:182,1
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_bmp.c:188,1
    - Dst: PSIZE
      Src: /src/frr/bgpd/bgp_bmp.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - e
    argTypes:
    - struct bmp_queue_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 195
    functionName: bmp_qhash_hkey
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    - PSIZE
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bmp_qhash_hkey(const struct bmp_queue_entry *e)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_bmp.c:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bmp_active*
    - struct bmp_active*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 213
    functionName: bmp_active_cmp
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int bmp_active_cmp(const struct bmp_active *a,\n\t\tconst struct bmp_active
      *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:219,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_bmp.c:223,1
    - Dst: t_up::t_up
      Src: /src/frr/bgpd/bgp_bmp.c:223,1
    - Dst: bmp_session_add_tail
      Src: /src/frr/bgpd/bgp_bmp.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - bt
    - bmp_sock
    argTypes:
    - struct bmp_targets*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 235
    functionName: bmp_new
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - t_up::t_up
    - bmp_session_add_tail
    - monotime
    - XCALLOC
    linkageType: ''
    returnType: struct bmp
    signature: struct bmp *bmp_new(struct bmp_targets *bt, int bmp_sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 231
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_session_del
      Src: /src/frr/bgpd/bgp_bmp.c:239,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bmp
    argTypes:
    - struct bmp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: bmp_free
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_session_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bmp_free(struct bmp *bmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:245,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:246,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - s
    - ver
    - type
    argTypes:
    - struct stream*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: bmp_common_hdr
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void bmp_common_hdr(struct stream *s, uint8_t ver, uint8_t type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:264,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_bmp.c:268,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_bmp.c:270,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:271,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_bmp.c:274,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:275,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:279,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:281,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:282,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:283,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_bmp.c:284,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:286,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:287,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:288,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:289,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:293,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_bmp.c:296,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:300,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:301,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:303,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:304,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 4
    argNames:
    - s
    - peer
    - flags
    - tv
    argTypes:
    - struct stream*
    - struct peer*
    - uint8_t
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 306
    functionName: bmp_per_peer_hdr
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - stream_put
    - memset
    - SET_FLAG
    - UNSET_FLAG
    - stream_put_in_addr
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bmp_per_peer_hdr(struct stream *s, struct peer *peer,\n\t\tuint8_t
      flags, const struct timeval *tv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_bmp.c:311,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:312,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:313,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - s
    - type
    - string
    argTypes:
    - struct stream*
    - uint16_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 315
    functionName: bmp_put_info_tlv
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - strlen
    - stream_put
    - stream_putw
    linkageType: ''
    returnType: void
    signature: "void bmp_put_info_tlv(struct stream *s, uint16_t type,\n\t\tconst
      char *string)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:321,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:322,1
    - Dst: bmp_put_info_tlv
      Src: /src/frr/bgpd/bgp_bmp.c:326,1
    - Dst: bmp_put_info_tlv
      Src: /src/frr/bgpd/bgp_bmp.c:328,1
    - Dst: cmd_hostname_get
      Src: /src/frr/bgpd/bgp_bmp.c:328,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:330,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:331,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:333,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - bmp
    argTypes:
    - struct bmp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 336
    functionName: bmp_send_initiation
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - stream_free
    - stream_new
    - pullwr_write_stream
    - stream_get_endp
    - bmp_common_hdr
    - stream_putl_at
    - bmp_put_info_tlv
    linkageType: ''
    returnType: int
    signature: int bmp_send_initiation(struct bmp *bmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:348,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:349,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:350,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:351,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:352,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:353,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:354,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_bmp.c:356,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - s
    - nfy
    argTypes:
    - struct stream*
    - struct bgp_notify*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 358
    functionName: bmp_notify_put
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_putc
    linkageType: ''
    returnType: void
    signature: void bmp_notify_put(struct stream *s, struct bgp_notify *nfy)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: monotime_to_realtime
      Src: /src/frr/bgpd/bgp_bmp.c:368,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:371,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_bmp.c:373,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:376,1
    - Dst: bmp_per_peer_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:378,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:382,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:384,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:385,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:386,1
    - Dst: stream_put_in_addr
      Src: /src/frr/bgpd/bgp_bmp.c:387,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:392,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_bmp.c:392,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:394,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_bmp.c:394,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:396,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_bmp.c:396,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:398,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_bmp.c:398,1
    - Dst: bmp_bgp_peer_find
      Src: /src/frr/bgpd/bgp_bmp.c:406,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:409,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:411,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:412,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:416,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_bmp.c:418,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:419,1
    - Dst: bmp_put_info_tlv
      Src: /src/frr/bgpd/bgp_bmp.c:424,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:429,1
    - Dst: bmp_per_peer_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:431,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:433,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:434,1
    - Dst: bmp_notify_put
      Src: /src/frr/bgpd/bgp_bmp.c:439,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:446,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:456,1
    - Dst: stream_putc_at
      Src: /src/frr/bgpd/bgp_bmp.c:459,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:462,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:463,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 64
    argCount: 2
    argNames:
    - peer
    - down
    argTypes:
    - struct peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 465
    functionName: bmp_peerstate
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_bgp_peer_find
    - peer_established
    - stream_new
    - stream_put
    - stream_putc
    - htons
    - bmp_notify_put
    - stream_putw
    - monotime_to_realtime
    - stream_get_endp
    - bmp_common_hdr
    - zlog_warn
    - bmp_per_peer_hdr
    - stream_putl_at
    - stream_put_in_addr
    - stream_putc_at
    - bmp_put_info_tlv
    - stream_putl
    linkageType: ''
    returnType: struct stream
    signature: struct stream *bmp_peerstate(struct peer *peer, bool down)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bmp.c:475,1
    - Dst: bmp_peerstate
      Src: /src/frr/bgpd/bgp_bmp.c:476,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:477,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:478,1
    - Dst: bmp_pull_mirror
      Src: /src/frr/bgpd/bgp_bmp.c:540,1
    - Dst: pullwr_bump
      Src: /src/frr/bgpd/bgp_bmp.c:549,1
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:558,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_bmp.c:564,1
    - Dst: gettimeofday
      Src: /src/frr/bgpd/bgp_bmp.c:566,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_bmp.c:568,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:574,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_bmp.c:575,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:581,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_bmp.c:585,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:587,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:590,1
    - Dst: pullwr_bump
      Src: /src/frr/bgpd/bgp_bmp.c:594,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:598,1
    - Dst: bmp_mirrorq_add_tail
      Src: /src/frr/bgpd/bgp_bmp.c:601,1
    - Dst: bmp_mirror_cull
      Src: /src/frr/bgpd/bgp_bmp.c:603,1
    - Dst: MAX
      Src: /src/frr/bgpd/bgp_bmp.c:605,1
    - Dst: bmp_wrmirror_lost
      Src: /src/frr/bgpd/bgp_bmp.c:611,1
    - Dst: gettimeofday
      Src: /src/frr/bgpd/bgp_bmp.c:616,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:618,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:620,1
    - Dst: bmp_per_peer_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:621,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:623,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:624,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:625,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:626,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:626,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:629,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:630,1
    - Dst: bmp_wrmirror
      Src: /src/frr/bgpd/bgp_bmp.c:633,1
    - Dst: bmp_wrmirror_lost
      Src: /src/frr/bgpd/bgp_bmp.c:640,1
    - Dst: bmp_pull_mirror
      Src: /src/frr/bgpd/bgp_bmp.c:645,1
    - Dst: QOBJ_GET_TYPESAFE
      Src: /src/frr/bgpd/bgp_bmp.c:649,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:651,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:656,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:658,1
    - Dst: bmp_per_peer_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:659,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:662,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:663,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:664,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:664,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:667,1
    - Dst: pullwr_write
      Src: /src/frr/bgpd/bgp_bmp.c:668,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:670,1
    - Dst: out
      Src: /src/frr/bgpd/bgp_bmp.c:673,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:675,1
    - Dst: bmp_outgoing_packet
      Src: /src/frr/bgpd/bgp_bmp.c:679,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_bmp.c:683,1
    - Dst: bmp_bgp_peer_get
      Src: /src/frr/bgpd/bgp_bmp.c:685,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:687,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:690,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_bmp.c:691,1
    - Dst: bmp_peer_status_changed
      Src: /src/frr/bgpd/bgp_bmp.c:696,1
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:698,1
    - Dst: bmp_bgp_peer_find
      Src: /src/frr/bgpd/bgp_bmp.c:707,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:709,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:710,1
    - Dst: bmp_peerh_del
      Src: /src/frr/bgpd/bgp_bmp.c:711,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:712,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_bmp.c:718,1
    - Dst: bmp_bgp_peer_get
      Src: /src/frr/bgpd/bgp_bmp.c:722,1
    - Dst: bmp_bgp_peer_find
      Src: /src/frr/bgpd/bgp_bmp.c:723,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:725,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:726,1
    - Dst: bmp_peerh_del
      Src: /src/frr/bgpd/bgp_bmp.c:733,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:734,1
    - Dst: bmp_send_all
      Src: /src/frr/bgpd/bgp_bmp.c:738,1
    - Dst: bmp_peerstate
      Src: /src/frr/bgpd/bgp_bmp.c:738,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 1
    argNames:
    - bmp
    argTypes:
    - struct bmp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 468
    functionDepth: 3
    functionLinenumber: 468
    functionLinenumberEnd: 740
    functionName: bmp_send_peerup
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - pullwr_write
    - bmp_bgp_peer_find
    - peer_established
    - out
    - bmp_pull_mirror
    - frr_each
    - QOBJ_GET_TYPESAFE
    - gettimeofday
    - stream_putl_at
    - frrtrace
    - pullwr_bump
    - bmp_mirrorq_add_tail
    - bmp_mirror_cull
    - XCALLOC
    - pullwr_write_stream
    - ALL_LIST_ELEMENTS_RO
    - bmp_peer_status_changed
    - bmp_common_hdr
    - bmp_peerstate
    - if
    - bmp_peerh_del
    - stream_free
    - bmp_bgp_find
    - bmp_wrmirror
    - zlog_info
    - bmp_outgoing_packet
    - bmp_send_all
    - bmp_wrmirror_lost
    - XFREE
    - MAX
    - bmp_bgp_peer_get
    - memcpy
    - stream_new
    - XMALLOC
    - stream_putw
    - stream_get_endp
    - bmp_per_peer_hdr
    linkageType: ''
    returnType: int
    signature: int bmp_send_peerup(struct bmp *bmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:744,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_bmp.c:747,1
    - Dst: bmp_bgp_peer_find
      Src: /src/frr/bgpd/bgp_bmp.c:752,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:754,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:756,1
    - Dst: bmp_send_all
      Src: /src/frr/bgpd/bgp_bmp.c:760,1
    - Dst: bmp_peerstate
      Src: /src/frr/bgpd/bgp_bmp.c:760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 742
    functionDepth: 3
    functionLinenumber: 742
    functionLinenumberEnd: 762
    functionName: bmp_peer_backward
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_bgp_peer_find
    - bmp_bgp_find
    - bmp_send_all
    - bmp_peerstate
    - XFREE
    - frrtrace
    linkageType: ''
    returnType: int
    signature: int bmp_peer_backward(struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_bmp.c:772,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:774,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_bmp.c:777,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:780,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:784,1
    - Dst: bgp_map_afi_safi_int2iana
      Src: /src/frr/bgpd/bgp_bmp.c:787,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:790,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:791,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:792,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:793,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:794,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_bmp.c:795,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_bmp.c:798,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bmp.c:800,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:804,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:806,1
    - Dst: bmp_per_peer_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:808,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:810,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:811,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:811,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:814,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:815,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:816,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:818,1
    - Dst: bmp_update
      Src: /src/frr/bgpd/bgp_bmp.c:821,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:832,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_bmp.c:833,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:836,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:839,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:840,1
    - Dst: bgp_packet_attribute
      Src: /src/frr/bgpd/bgp_bmp.c:844,1
    - Dst: stream_put_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:851,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:853,1
    - Dst: bgp_packet_mpattr_start
      Src: /src/frr/bgpd/bgp_bmp.c:857,1
    - Dst: bgp_packet_mpattr_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:859,1
    - Dst: bgp_packet_mpattr_end
      Src: /src/frr/bgpd/bgp_bmp.c:861,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:862,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_bmp.c:866,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_bmp.c:867,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 4
    argNames:
    - bmp
    - afi
    - safi
    - flags
    argTypes:
    - struct bmp*
    - afi_t
    - safi_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 764
    functionDepth: 7
    functionLinenumber: 764
    functionLinenumberEnd: 869
    functionName: bmp_eor
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bgp_packet_mpattr_prefix
    - stream_putl_at
    - bmp_update
    - frrtrace
    - bgp_packet_mpattr_start
    - stream_putc
    - pullwr_write_stream
    - ALL_LIST_ELEMENTS_RO
    - stream_putw_at
    - bmp_common_hdr
    - bgp_packet_attribute
    - stream_free
    - stream_put_prefix
    - bgp_map_afi_safi_int2iana
    - bgp_packet_set_marker
    - stream_new
    - bgp_packet_set_size
    - stream_putw
    - stream_get_endp
    - bmp_per_peer_hdr
    - bgp_packet_mpattr_end
    linkageType: ''
    returnType: void
    signature: void bmp_eor(struct bmp *bmp, afi_t afi, safi_t safi, uint8_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:880,1
    - Dst: bgp_packet_set_marker
      Src: /src/frr/bgpd/bgp_bmp.c:882,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:883,1
    - Dst: stream_put_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:886,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:887,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_bmp.c:889,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:890,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:892,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:894,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:895,1
    - Dst: bgp_packet_mpunreach_start
      Src: /src/frr/bgpd/bgp_bmp.c:896,1
    - Dst: bgp_packet_mpunreach_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:898,1
    - Dst: bgp_packet_mpunreach_end
      Src: /src/frr/bgpd/bgp_bmp.c:901,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:904,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_bmp.c:905,1
    - Dst: bgp_packet_set_size
      Src: /src/frr/bgpd/bgp_bmp.c:908,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - p
    - prd
    - afi
    - safi
    argTypes:
    - struct prefix*
    - struct prefix_rd*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 871
    functionDepth: 5
    functionLinenumber: 871
    functionLinenumberEnd: 910
    functionName: bmp_withdraw
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - stream_new
    - bgp_packet_set_size
    - bgp_packet_mpunreach_prefix
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - bgp_packet_mpunreach_start
    - stream_put_prefix
    - bgp_packet_set_marker
    - bgp_packet_mpunreach_end
    linkageType: ''
    returnType: struct stream
    signature: "struct stream *bmp_withdraw(const struct prefix *p,\n\t\t\t\t   struct
      prefix_rd *prd, afi_t afi,\n\t\t\t\t   safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime_to_realtime
      Src: /src/frr/bgpd/bgp_bmp.c:921,1
    - Dst: bmp_update
      Src: /src/frr/bgpd/bgp_bmp.c:923,1
    - Dst: bmp_withdraw
      Src: /src/frr/bgpd/bgp_bmp.c:925,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:927,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:928,1
    - Dst: bmp_per_peer_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:929,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:931,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:932,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:932,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:935,1
    - Dst: pullwr_write_stream
      Src: /src/frr/bgpd/bgp_bmp.c:936,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:937,1
    - Dst: stream_free
      Src: /src/frr/bgpd/bgp_bmp.c:938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 9
    argNames:
    - bmp
    - peer
    - flags
    - p
    - prd
    - attr
    - afi
    - safi
    - uptime
    argTypes:
    - struct bmp*
    - struct peer*
    - uint8_t
    - struct prefix*
    - struct prefix_rd*
    - struct attr*
    - afi_t
    - safi_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 912
    functionDepth: 6
    functionLinenumber: 912
    functionLinenumberEnd: 939
    functionName: bmp_monitor
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_new
    - pullwr_write_stream
    - monotime_to_realtime
    - stream_get_endp
    - bmp_common_hdr
    - bmp_per_peer_hdr
    - stream_putl_at
    - bmp_withdraw
    - bmp_update
    linkageType: ''
    returnType: void
    signature: "void bmp_monitor(struct bmp *bmp, struct peer *peer, uint8_t flags,\n\t\t\tconst
      struct prefix *p, struct prefix_rd *prd,\n\t\t\tstruct attr *attr, afi_t afi,
      safi_t safi,\n\t\t\ttime_t uptime)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_bmp.c:956,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_bmp.c:957,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:959,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_bmp.c:961,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:962,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_bmp.c:993,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_bmp.c:1000,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_bmp.c:1004,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_bmp.c:1012,1
    - Dst: bgp_table_get_next
      Src: /src/frr/bgpd/bgp_bmp.c:1015,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_bmp.c:1020,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_bmp.c:1022,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_bmp.c:1027,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_bmp.c:1030,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_bmp.c:1032,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1037,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_bmp.c:1038,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:1039,1
    - Dst: bmp_eor
      Src: /src/frr/bgpd/bgp_bmp.c:1040,1
    - Dst: bmp_eor
      Src: /src/frr/bgpd/bgp_bmp.c:1041,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_bmp.c:1049,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:1049,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_bmp.c:1053,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bmp.c:1055,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:1098,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:1102,1
    - Dst: bmp_monitor
      Src: /src/frr/bgpd/bgp_bmp.c:1105,1
    - Dst: bmp_monitor
      Src: /src/frr/bgpd/bgp_bmp.c:1108,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_bmp.c:1112,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 118
    argCount: 2
    argNames:
    - bmp
    - pullwr
    argTypes:
    - struct bmp*
    - struct pullwr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 941
    functionDepth: 8
    functionLinenumber: 941
    functionLinenumberEnd: 1115
    functionName: bmp_wrsync
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - zlog_info
    - safi2str
    - memset
    - bmp_eor
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - afi2family
    - bgp_node_lookup
    - afi2str
    - bmp_monitor
    - bgp_dest_get_bgp_path_info
    - prefix_copy
    - bgp_table_get_next
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: bool
    signature: bool bmp_wrsync(struct bmp *bmp, struct pullwr *pullwr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_bmp.c:956,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_bmp.c:957,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:959,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_bmp.c:961,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:962,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 965
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 30
    functionsReached:
    - zlog_info
    - safi2str
    - memset
    - afi2family
    - afi2str
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bmp_qlist_next
      Src: /src/frr/bgpd/bgp_bmp.c:1125,1
    - Dst: bmp_qhash_del
      Src: /src/frr/bgpd/bgp_bmp.c:1129,1
    - Dst: bmp_qlist_del
      Src: /src/frr/bgpd/bgp_bmp.c:1130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - bmp
    argTypes:
    - struct bmp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1117
    functionDepth: 0
    functionLinenumber: 1117
    functionLinenumberEnd: 1133
    functionName: bmp_pull
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_qlist_next
    - bmp_qhash_del
    - bmp_qlist_del
    linkageType: ''
    returnType: struct bmp_queue_entry
    signature: struct bmp_queue_entry *bmp_pull(struct bmp *bmp)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: bmp_pull
      Src: /src/frr/bgpd/bgp_bmp.c:1142,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/bgp_bmp.c:1154,1
    - Dst: QOBJ_GET_TYPESAFE
      Src: /src/frr/bgpd/bgp_bmp.c:1166,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1168,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_bmp.c:1171,1
    - Dst: bgp_safi_node_lookup
      Src: /src/frr/bgpd/bgp_bmp.c:1178,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_bmp.c:1185,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_bmp.c:1187,1
    - Dst: bmp_monitor
      Src: /src/frr/bgpd/bgp_bmp.c:1193,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_bmp.c:1195,1
    - Dst: bmp_monitor
      Src: /src/frr/bgpd/bgp_bmp.c:1207,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_bmp.c:1209,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1215,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_bmp.c:1218,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 52
    argCount: 2
    argNames:
    - bmp
    - pullwr
    argTypes:
    - struct bmp*
    - struct pullwr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1135
    functionDepth: 7
    functionLinenumber: 1135
    functionLinenumberEnd: 1221
    functionName: bmp_wrqueue
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - zlog_info
    - peer_established
    - prefix_cmp
    - bmp_pull
    - CHECK_FLAG
    - bmp_monitor
    - QOBJ_GET_TYPESAFE
    - monotime
    - bgp_safi_node_lookup
    - XFREE
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: bool
    signature: bool bmp_wrqueue(struct bmp *bmp, struct pullwr *pullwr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bmp_send_peerup
      Src: /src/frr/bgpd/bgp_bmp.c:1227,1
    - Dst: bmp_wrmirror
      Src: /src/frr/bgpd/bgp_bmp.c:1232,1
    - Dst: bmp_wrqueue
      Src: /src/frr/bgpd/bgp_bmp.c:1234,1
    - Dst: bmp_wrsync
      Src: /src/frr/bgpd/bgp_bmp.c:1236,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - bmp
    - pullwr
    argTypes:
    - struct bmp*
    - struct pullwr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1223
    functionDepth: 9
    functionLinenumber: 1223
    functionLinenumberEnd: 1240
    functionName: bmp_wrfill
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_wrqueue
    - bmp_wrmirror
    - bmp_send_peerup
    - bmp_wrsync
    linkageType: ''
    returnType: void
    signature: void bmp_wrfill(struct bmp *bmp, struct pullwr *pullwr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1245,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1247,1
    - Dst: strerror
      Src: /src/frr/bgpd/bgp_bmp.c:1248,1
    - Dst: bmp_close
      Src: /src/frr/bgpd/bgp_bmp.c:1250,1
    - Dst: bmp_free
      Src: /src/frr/bgpd/bgp_bmp.c:1251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - bmp
    - pullwr
    - eof
    argTypes:
    - struct bmp*
    - struct pullwr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1242
    functionDepth: 1
    functionLinenumber: 1242
    functionLinenumberEnd: 1252
    functionName: bmp_wrerr
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - flog_warn
    - strerror
    - bmp_free
    - bmp_close
    linkageType: ''
    returnType: void
    signature: void bmp_wrerr(struct bmp *bmp, struct pullwr *pullwr, bool eof)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bmp_session_count
      Src: /src/frr/bgpd/bgp_bmp.c:1261,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_bmp.c:1265,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_bmp.c:1266,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:1266,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/bgp_bmp.c:1273,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_bmp.c:1274,1
    - Dst: bmp_qhash_find
      Src: /src/frr/bgpd/bgp_bmp.c:1276,1
    - Dst: bmp_qlist_del
      Src: /src/frr/bgpd/bgp_bmp.c:1282,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:1284,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_bmp.c:1285,1
    - Dst: bmp_qhash_add
      Src: /src/frr/bgpd/bgp_bmp.c:1287,1
    - Dst: bmp_qlist_add_tail
      Src: /src/frr/bgpd/bgp_bmp.c:1291,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:1293,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 6
    argNames:
    - bt
    - bgp
    - afi
    - safi
    - bn
    - peer
    argTypes:
    - struct bmp_targets*
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1254
    functionDepth: 1
    functionLinenumber: 1254
    functionLinenumberEnd: 1296
    functionName: bmp_process_one
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_session_count
    - memset
    - bmp_qlist_add_tail
    - frr_each
    - bgp_dest_get_prefix
    - XMALLOC
    - bmp_qhash_find
    - bmp_qlist_del
    - bmp_qhash_add
    - prefix_copy
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void bmp_process_one(struct bmp_targets *bt, struct bgp *bgp, afi_t
      afi,\n\t\t\t    safi_t safi, struct bgp_dest *bn, struct peer *peer)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:1301,1
    - Dst: frrtrace_enabled
      Src: /src/frr/bgpd/bgp_bmp.c:1305,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_bmp.c:1308,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_bmp.c:1309,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:1316,1
    - Dst: bmp_process_one
      Src: /src/frr/bgpd/bgp_bmp.c:1320,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:1322,1
    - Dst: pullwr_bump
      Src: /src/frr/bgpd/bgp_bmp.c:1323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 6
    argNames:
    - bgp
    - afi
    - safi
    - bn
    - peer
    - withdraw
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1298
    functionDepth: 2
    functionLinenumber: 1298
    functionLinenumberEnd: 1327
    functionName: bmp_process
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - bmp_bgp_find
    - pullwr_bump
    - frr_each
    - frrtrace_enabled
    - frrtrace
    - bmp_process_one
    linkageType: ''
    returnType: int
    signature: "int bmp_process(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t       struct
      bgp_dest *bn, struct peer *peer, bool withdraw)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:1332,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_bmp.c:1333,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - s
    - cnt
    - type
    - value
    argTypes:
    - struct stream*
    - size_t*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1336
    functionName: bmp_stat_put_u32
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bmp_stat_put_u32(struct stream *s, size_t *cnt, uint16_t type,\n\t\tuint32_t
      value)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_bmp.c:1340,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/bgp_bmp.c:1347,1
    - Dst: gettimeofday
      Src: /src/frr/bgpd/bgp_bmp.c:1350,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bmp.c:1353,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_bmp.c:1356,1
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_bmp.c:1356,1
    - Dst: stream_new
      Src: /src/frr/bgpd/bgp_bmp.c:1359,1
    - Dst: bmp_common_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:1360,1
    - Dst: bmp_per_peer_hdr
      Src: /src/frr/bgpd/bgp_bmp.c:1361,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:1363,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_bmp.c:1364,1
    - Dst: bmp_stat_put_u32
      Src: /src/frr/bgpd/bgp_bmp.c:1366,1
    - Dst: bmp_stat_put_u32
      Src: /src/frr/bgpd/bgp_bmp.c:1368,1
    - Dst: bmp_stat_put_u32
      Src: /src/frr/bgpd/bgp_bmp.c:1370,1
    - Dst: bmp_stat_put_u32
      Src: /src/frr/bgpd/bgp_bmp.c:1372,1
    - Dst: bmp_stat_put_u32
      Src: /src/frr/bgpd/bgp_bmp.c:1374,1
    - Dst: bmp_stat_put_u32
      Src: /src/frr/bgpd/bgp_bmp.c:1376,1
    - Dst: bmp_stat_put_u32
      Src: /src/frr/bgpd/bgp_bmp.c:1378,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:1381,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_bmp.c:1383,1
    - Dst: stream_putl_at
      Src: /src/frr/bgpd/bgp_bmp.c:1384,1
    - Dst: bmp_send_all
      Src: /src/frr/bgpd/bgp_bmp.c:1386,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_bmp.c:1393,1
    - Dst: read
      Src: /src/frr/bgpd/bgp_bmp.c:1399,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_bmp.c:1400,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1401,1
    - Dst: bmp_wrerr
      Src: /src/frr/bgpd/bgp_bmp.c:1404,1
    - Dst: bmp_wrerr
      Src: /src/frr/bgpd/bgp_bmp.c:1408,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_bmp.c:1412,1
    - Dst: bmp_open
      Src: /src/frr/bgpd/bgp_bmp.c:1415,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1427,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_bmp.c:1430,1
    - Dst: sockunion_free
      Src: /src/frr/bgpd/bgp_bmp.c:1431,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_bmp.c:1433,1
    - Dst: set_cloexec
      Src: /src/frr/bgpd/bgp_bmp.c:1434,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/bgpd/bgp_bmp.c:1436,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1437,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_bmp.c:1444,1
    - Dst: access_list_lookup
      Src: /src/frr/bgpd/bgp_bmp.c:1447,1
    - Dst: access_list_apply
      Src: /src/frr/bgpd/bgp_bmp.c:1455,1
    - Dst: sockunion2str
      Src: /src/frr/bgpd/bgp_bmp.c:1458,1
    - Dst: snprintf
      Src: /src/frr/bgpd/bgp_bmp.c:1459,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_bmp.c:1459,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_bmp.c:1459,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_bmp.c:1461,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_bmp.c:1462,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1466,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1467,1
    - Dst: setsockopt
      Src: /src/frr/bgpd/bgp_bmp.c:1472,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_bmp.c:1473,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_bmp.c:1474,1
    - Dst: setsockopt
      Src: /src/frr/bgpd/bgp_bmp.c:1475,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_bmp.c:1476,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_bmp.c:1477,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1479,1
    - Dst: bmp_new
      Src: /src/frr/bgpd/bgp_bmp.c:1482,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_bmp.c:1483,1
    - Dst: pullwr_new
      Src: /src/frr/bgpd/bgp_bmp.c:1486,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_bmp.c:1488,1
    - Dst: bmp_send_initiation
      Src: /src/frr/bgpd/bgp_bmp.c:1489,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1338
    functionDepth: 3
    functionLinenumber: 1338
    functionLinenumberEnd: 1492
    functionName: bmp_stats
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_new
    - strlen
    - peer_established
    - set_cloexec
    - ntohs
    - flog_err
    - gettimeofday
    - stream_putl_at
    - access_list_lookup
    - set_nonblocking
    - access_list_apply
    - sockunion2hostprefix
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - event_add_timer_msec
    - bmp_common_hdr
    - safe_strerror
    - EVENT_ARG
    - if
    - bmp_stat_put_u32
    - setsockopt
    - zlog_info
    - bmp_send_all
    - sockunion_free
    - strlcpy
    - bmp_send_initiation
    - bmp_wrerr
    - event_add_read
    - memcpy
    - sockunion2str
    - read
    - stream_new
    - pullwr_new
    - stream_get_endp
    - close
    - bmp_per_peer_hdr
    - bmp_open
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void bmp_stats(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_bmp.c:1498,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_bmp.c:1502,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_bmp.c:1504,1
    - Dst: sockunion_accept
      Src: /src/frr/bgpd/bgp_bmp.c:1507,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1509,1
    - Dst: safe_strerror
      Src: /src/frr/bgpd/bgp_bmp.c:1509,1
    - Dst: bmp_open
      Src: /src/frr/bgpd/bgp_bmp.c:1512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1495
    functionDepth: 1
    functionLinenumber: 1495
    functionLinenumberEnd: 1513
    functionName: bmp_accept
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - memset
    - bmp_open
    - safe_strerror
    - EVENT_ARG
    - event_add_read
    - sockunion_accept
    linkageType: ''
    returnType: void
    signature: void bmp_accept(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1520,1
    - Dst: bmp_active_disconnected
      Src: /src/frr/bgpd/bgp_bmp.c:1523,1
    - Dst: bmp_pull_mirror
      Src: /src/frr/bgpd/bgp_bmp.c:1525,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1527,1
    - Dst: bmp_pull
      Src: /src/frr/bgpd/bgp_bmp.c:1528,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1530,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1532,1
    - Dst: pullwr_del
      Src: /src/frr/bgpd/bgp_bmp.c:1533,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1534,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - bmp
    argTypes:
    - struct bmp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1535
      start: 1515
    functionDepth: 1
    functionLinenumber: 1515
    functionLinenumberEnd: 1535
    functionName: bmp_close
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 1
    functionsReached:
    - bmp_pull_mirror
    - bmp_pull
    - pullwr_del
    - close
    - bmp_active_disconnected
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bmp_close(struct bmp *bmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgph_find
      Src: /src/frr/bgpd/bgp_bmp.c:1540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1537
    functionDepth: 0
    functionLinenumber: 1537
    functionLinenumberEnd: 1541
    functionName: bmp_bgp_find
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 3
    functionsReached:
    - bmp_bgph_find
    linkageType: ''
    returnType: struct bmp_bgp
    signature: struct bmp_bgp *bmp_bgp_find(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:1547,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:1551,1
    - Dst: bmp_mirrorq_init
      Src: /src/frr/bgpd/bgp_bmp.c:1554,1
    - Dst: bmp_bgph_add
      Src: /src/frr/bgpd/bgp_bmp.c:1555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1543
    functionDepth: 1
    functionLinenumber: 1543
    functionLinenumberEnd: 1558
    functionName: bmp_bgp_get
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_mirrorq_init
    - bmp_bgp_find
    - bmp_bgph_add
    - XCALLOC
    linkageType: ''
    returnType: struct bmp_bgp
    signature: struct bmp_bgp *bmp_bgp_get(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgph_del
      Src: /src/frr/bgpd/bgp_bmp.c:1565,1
    - Dst: frr_each_safe
      Src: /src/frr/bgpd/bgp_bmp.c:1567,1
    - Dst: frr_each_safe
      Src: /src/frr/bgpd/bgp_bmp.c:1568,1
    - Dst: bmp_listener_put
      Src: /src/frr/bgpd/bgp_bmp.c:1569,1
    - Dst: bmp_targets_put
      Src: /src/frr/bgpd/bgp_bmp.c:1571,1
    - Dst: bmp_mirrorq_fini
      Src: /src/frr/bgpd/bgp_bmp.c:1574,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - bmpbgp
    argTypes:
    - struct bmp_bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1560
    functionDepth: 1
    functionLinenumber: 1560
    functionLinenumberEnd: 1576
    functionName: bmp_bgp_put
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_bgph_del
    - bmp_targets_put
    - frr_each_safe
    - bmp_mirrorq_fini
    - XFREE
    - bmp_listener_put
    linkageType: ''
    returnType: void
    signature: void bmp_bgp_put(struct bmp_bgp *bmpbgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:1580,1
    - Dst: bmp_bgp_put
      Src: /src/frr/bgpd/bgp_bmp.c:1583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1578
    functionDepth: 2
    functionLinenumber: 1578
    functionLinenumberEnd: 1585
    functionName: bmp_bgp_del
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_bgp_find
    - bmp_bgp_put
    linkageType: ''
    returnType: int
    signature: int bmp_bgp_del(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_peerh_find
      Src: /src/frr/bgpd/bgp_bmp.c:1590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peerid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1587
    functionDepth: 0
    functionLinenumber: 1587
    functionLinenumberEnd: 1591
    functionName: bmp_bgp_peer_find
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 3
    functionsReached:
    - bmp_peerh_find
    linkageType: ''
    returnType: struct bmp_bgp_peer
    signature: struct bmp_bgp_peer *bmp_bgp_peer_find(uint64_t peerid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgp_peer_find
      Src: /src/frr/bgpd/bgp_bmp.c:1597,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:1601,1
    - Dst: bmp_peerh_add
      Src: /src/frr/bgpd/bgp_bmp.c:1603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1593
    functionDepth: 1
    functionLinenumber: 1593
    functionLinenumberEnd: 1606
    functionName: bmp_bgp_peer_get
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 1
    functionsReached:
    - bmp_bgp_peer_find
    - bmp_peerh_add
    - XCALLOC
    linkageType: ''
    returnType: struct bmp_bgp_peer
    signature: struct bmp_bgp_peer *bmp_bgp_peer_get(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:1610,1
    - Dst: bmp_targets_find
      Src: /src/frr/bgpd/bgp_bmp.c:1616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - bgp
    - name
    argTypes:
    - struct bgp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1617
    functionName: bmp_targets_find1
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_bgp_find
    - bmp_targets_find
    linkageType: ''
    returnType: struct bmp_targets
    signature: struct bmp_targets *bmp_targets_find1(struct bgp *bgp, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bmp_targets_find1
      Src: /src/frr/bgpd/bgp_bmp.c:1623,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:1627,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_bmp.c:1628,1
    - Dst: bmp_bgp_get
      Src: /src/frr/bgpd/bgp_bmp.c:1630,1
    - Dst: bmp_session_init
      Src: /src/frr/bgpd/bgp_bmp.c:1631,1
    - Dst: bmp_qhash_init
      Src: /src/frr/bgpd/bgp_bmp.c:1632,1
    - Dst: bmp_qlist_init
      Src: /src/frr/bgpd/bgp_bmp.c:1633,1
    - Dst: bmp_actives_init
      Src: /src/frr/bgpd/bgp_bmp.c:1634,1
    - Dst: bmp_listeners_init
      Src: /src/frr/bgpd/bgp_bmp.c:1635,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgp_bmp.c:1637,1
    - Dst: bmp_targets_add
      Src: /src/frr/bgpd/bgp_bmp.c:1638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - bgp
    - name
    argTypes:
    - struct bgp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1619
    functionDepth: 2
    functionLinenumber: 1619
    functionLinenumberEnd: 1640
    functionName: bmp_targets_get
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_qhash_init
    - bmp_qlist_init
    - XCALLOC
    - bmp_actives_init
    - bmp_bgp_get
    - bmp_session_init
    - bmp_listeners_init
    - QOBJ_REG
    - bmp_targets_add
    - bmp_targets_find1
    - XSTRDUP
    linkageType: ''
    returnType: struct bmp_targets
    signature: struct bmp_targets *bmp_targets_get(struct bgp *bgp, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1647,1
    - Dst: frr_each_safe
      Src: /src/frr/bgpd/bgp_bmp.c:1649,1
    - Dst: bmp_active_put
      Src: /src/frr/bgpd/bgp_bmp.c:1650,1
    - Dst: frr_each_safe
      Src: /src/frr/bgpd/bgp_bmp.c:1652,1
    - Dst: bmp_close
      Src: /src/frr/bgpd/bgp_bmp.c:1653,1
    - Dst: bmp_free
      Src: /src/frr/bgpd/bgp_bmp.c:1654,1
    - Dst: bmp_targets_del
      Src: /src/frr/bgpd/bgp_bmp.c:1657,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgp_bmp.c:1658,1
    - Dst: bmp_listeners_fini
      Src: /src/frr/bgpd/bgp_bmp.c:1660,1
    - Dst: bmp_actives_fini
      Src: /src/frr/bgpd/bgp_bmp.c:1661,1
    - Dst: bmp_qhash_fini
      Src: /src/frr/bgpd/bgp_bmp.c:1662,1
    - Dst: bmp_qlist_fini
      Src: /src/frr/bgpd/bgp_bmp.c:1663,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1665,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1666,1
    - Dst: bmp_session_fini
      Src: /src/frr/bgpd/bgp_bmp.c:1667,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1669,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - bt
    argTypes:
    - struct bmp_targets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1642
    functionDepth: 2
    functionLinenumber: 1642
    functionLinenumberEnd: 1671
    functionName: bmp_targets_put
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 1
    functionsReached:
    - bmp_actives_fini
    - bmp_listeners_fini
    - bmp_qhash_fini
    - bmp_session_fini
    - bmp_active_put
    - QOBJ_UNREG
    - bmp_free
    - EVENT_OFF
    - frr_each_safe
    - bmp_qlist_fini
    - XFREE
    - bmp_targets_del
    - bmp_close
    linkageType: ''
    returnType: void
    signature: void bmp_targets_put(struct bmp_targets *bt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_listeners_find
      Src: /src/frr/bgpd/bgp_bmp.c:1680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - bt
    - su
    - port
    argTypes:
    - struct bmp_targets*
    - union sockunion*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1681
    functionName: bmp_listener_find
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_listeners_find
    linkageType: ''
    returnType: struct bmp_listener
    signature: "struct bmp_listener *bmp_listener_find(struct bmp_targets *bt,\n\t\t\t\t\t
      \     const union sockunion *su,\n\t\t\t\t\t      int port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bmp_listener_find
      Src: /src/frr/bgpd/bgp_bmp.c:1687,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:1692,1
    - Dst: bmp_listeners_add
      Src: /src/frr/bgpd/bgp_bmp.c:1698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - bt
    - su
    - port
    argTypes:
    - struct bmp_targets*
    - union sockunion*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1700
      start: 1683
    functionDepth: 1
    functionLinenumber: 1683
    functionLinenumberEnd: 1700
    functionName: bmp_listener_get
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_listeners_add
    - bmp_listener_find
    - XCALLOC
    linkageType: ''
    returnType: struct bmp_listener
    signature: "struct bmp_listener *bmp_listener_get(struct bmp_targets *bt,\n\t\t\t\t\t
      \    const union sockunion *su,\n\t\t\t\t\t     int port)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/bgpd/bgp_bmp.c:1706,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/bgpd/bgp_bmp.c:1710,1
    - Dst: sockopt_reuseport
      Src: /src/frr/bgpd/bgp_bmp.c:1711,1
    - Dst: sockopt_v6only
      Src: /src/frr/bgpd/bgp_bmp.c:1712,1
    - Dst: set_cloexec
      Src: /src/frr/bgpd/bgp_bmp.c:1713,1
    - Dst: sockunion_bind
      Src: /src/frr/bgpd/bgp_bmp.c:1715,1
    - Dst: listen
      Src: /src/frr/bgpd/bgp_bmp.c:1719,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_bmp.c:1724,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1727,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - bl
    argTypes:
    - struct bmp_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1702
    functionDepth: 1
    functionLinenumber: 1702
    functionLinenumberEnd: 1728
    functionName: bmp_listener_start
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - sockopt_reuseaddr
    - set_cloexec
    - socket
    - sockopt_reuseport
    - close
    - sockopt_v6only
    - listen
    - event_add_read
    - sockunion_bind
    linkageType: ''
    returnType: void
    signature: void bmp_listener_start(struct bmp_listener *bl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1732,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1735,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bl
    argTypes:
    - struct bmp_listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1730
    functionDepth: 1
    functionLinenumber: 1730
    functionLinenumberEnd: 1737
    functionName: bmp_listener_stop
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - close
    linkageType: ''
    returnType: void
    signature: void bmp_listener_stop(struct bmp_listener *bl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_actives_find
      Src: /src/frr/bgpd/bgp_bmp.c:1745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - bt
    - hostname
    - port
    argTypes:
    - struct bmp_targets*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1739
    functionDepth: 0
    functionLinenumber: 1739
    functionLinenumberEnd: 1746
    functionName: bmp_active_find
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_actives_find
    linkageType: ''
    returnType: struct bmp_active
    signature: "struct bmp_active *bmp_active_find(struct bmp_targets *bt,\n\t\t\t\t\t
      \ const char *hostname, int port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bmp_active_find
      Src: /src/frr/bgpd/bgp_bmp.c:1753,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_bmp.c:1757,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_bmp.c:1759,1
    - Dst: bmp_actives_add
      Src: /src/frr/bgpd/bgp_bmp.c:1765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - bt
    - hostname
    - port
    argTypes:
    - struct bmp_targets*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1748
    functionDepth: 1
    functionLinenumber: 1748
    functionLinenumberEnd: 1767
    functionName: bmp_active_get
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_active_find
    - bmp_actives_add
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: struct bmp_active
    signature: "struct bmp_active *bmp_active_get(struct bmp_targets *bt,\n\t\t\t\t\t
      const char *hostname, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1771,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1772,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1773,1
    - Dst: bmp_actives_del
      Src: /src/frr/bgpd/bgp_bmp.c:1775,1
    - Dst: bmp_close
      Src: /src/frr/bgpd/bgp_bmp.c:1779,1
    - Dst: bmp_free
      Src: /src/frr/bgpd/bgp_bmp.c:1780,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1783,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1785,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1786,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_bmp.c:1787,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ba
    argTypes:
    - struct bmp_active*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1769
    functionDepth: 2
    functionLinenumber: 1769
    functionLinenumberEnd: 1788
    functionName: bmp_active_put
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 1
    functionsReached:
    - bmp_actives_del
    - bmp_free
    - close
    - EVENT_OFF
    - XFREE
    - bmp_close
    linkageType: ''
    returnType: void
    signature: void bmp_active_put(struct bmp_active *ba)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/bgpd/bgp_bmp.c:1806,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1808,1
    - Dst: bgp_update_address
      Src: /src/frr/bgpd/bgp_bmp.c:1813,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1815,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1819,1
    - Dst: sockunion_socket
      Src: /src/frr/bgpd/bgp_bmp.c:1823,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1825,1
    - Dst: set_nonblocking
      Src: /src/frr/bgpd/bgp_bmp.c:1830,1
    - Dst: sockunion_is_null
      Src: /src/frr/bgpd/bgp_bmp.c:1832,1
    - Dst: sockunion_bind
      Src: /src/frr/bgpd/bgp_bmp.c:1833,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1836,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1839,1
    - Dst: sockunion_init
      Src: /src/frr/bgpd/bgp_bmp.c:1841,1
    - Dst: sockunion_connect
      Src: /src/frr/bgpd/bgp_bmp.c:1847,1
    - Dst: htons
      Src: /src/frr/bgpd/bgp_bmp.c:1848,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1851,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1854,1
    - Dst: sockunion_init
      Src: /src/frr/bgpd/bgp_bmp.c:1856,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_bmp.c:1859,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1864,1
    - Dst: bmp_active_setup
      Src: /src/frr/bgpd/bgp_bmp.c:1867,1
    - Dst: bmp_active_setup
      Src: /src/frr/bgpd/bgp_bmp.c:1874,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 1
    argNames:
    - ba
    argTypes:
    - struct bmp_active*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1792
    functionDepth: 1
    functionLinenumber: 1792
    functionLinenumberEnd: 1875
    functionName: bmp_active_connect
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - if_lookup_by_name
    - sockunion_is_null
    - bmp_active_setup
    - sockunion_socket
    - htons
    - close
    - sockunion_connect
    - zlog_warn
    - sockunion_init
    - set_nonblocking
    - bgp_update_address
    - sockunion_bind
    linkageType: ''
    returnType: void
    signature: void bmp_active_connect(struct bmp_active *ba)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/bgpd/bgp_bmp.c:1880,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1884,1
    - Dst: bmp_active_setup
      Src: /src/frr/bgpd/bgp_bmp.c:1890,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_bmp.c:1894,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_bmp.c:1895,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_bmp.c:1900,1
    - Dst: bmp_active_connect
      Src: /src/frr/bgpd/bgp_bmp.c:1902,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - resq
    - errstr
    - numaddrs
    - addr
    argTypes:
    - struct resolver_query*
    - char*
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1877
    functionDepth: 2
    functionLinenumber: 1877
    functionLinenumberEnd: 1903
    functionName: bmp_active_resolved
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_active_setup
    - container_of
    - zlog_warn
    - array_size
    - memcpy
    - bmp_active_connect
    linkageType: ''
    returnType: void
    signature: "void bmp_active_resolved(struct resolver_query *resq, const char *errstr,\n\t\t\t\tint
      numaddrs, union sockunion *addr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_bmp.c:1907,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1914,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1915,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1916,1
    - Dst: resolver_resolve
      Src: /src/frr/bgpd/bgp_bmp.c:1926,1
    - Dst: getsockopt
      Src: /src/frr/bgpd/bgp_bmp.c:1932,1
    - Dst: strerror
      Src: /src/frr/bgpd/bgp_bmp.c:1936,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1937,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/bgp_bmp.c:1943,1
    - Dst: bmp_open
      Src: /src/frr/bgpd/bgp_bmp.c:1946,1
    - Dst: close
      Src: /src/frr/bgpd/bgp_bmp.c:1956,1
    - Dst: bmp_active_connect
      Src: /src/frr/bgpd/bgp_bmp.c:1959,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1905
    functionDepth: 2
    functionLinenumber: 1905
    functionLinenumberEnd: 1960
    functionName: bmp_active_thread
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - strerror
    - close
    - zlog_warn
    - EVENT_OFF
    - resolver_resolve
    - EVENT_ARG
    - bmp_open
    - bmp_active_connect
    linkageType: ''
    returnType: void
    signature: void bmp_active_thread(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bmp_active_setup
      Src: /src/frr/bgpd/bgp_bmp.c:1965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ba
    argTypes:
    - struct bmp_active*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1966
      start: 1962
    functionDepth: 1
    functionLinenumber: 1962
    functionLinenumberEnd: 1966
    functionName: bmp_active_disconnected
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 1
    functionsReached:
    - bmp_active_setup
    linkageType: ''
    returnType: void
    signature: void bmp_active_disconnected(struct bmp_active *ba)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1970,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1971,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_bmp.c:1972,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/bgp_bmp.c:1983,1
    - Dst: event_add_read
      Src: /src/frr/bgpd/bgp_bmp.c:1986,1
    - Dst: event_add_write
      Src: /src/frr/bgpd/bgp_bmp.c:1988,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ba
    argTypes:
    - struct bmp_active*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1968
    functionDepth: 1
    functionLinenumber: 1968
    functionLinenumberEnd: 1991
    functionName: bmp_active_setup
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 3
    functionsReached:
    - event_add_timer_msec
    - event_add_read
    - EVENT_OFF
    - event_add_write
    linkageType: ''
    returnType: void
    signature: void bmp_active_setup(struct bmp_active *ba)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_bmp.c:2006,1
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:2007,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_bmp.c:2009,1
    - Dst: frr_each_safe
      Src: /src/frr/bgpd/bgp_bmp.c:2012,1
    - Dst: vector_set
      Src: /src/frr/bgpd/bgp_bmp.c:2013,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_bmp.c:2014,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_bmp.c:2033,1
    - Dst: bmp_targets_get
      Src: /src/frr/bgpd/bgp_bmp.c:2036,1
    - Dst: VTY_PUSH_CONTEXT_SUB
      Src: /src/frr/bgpd/bgp_bmp.c:2038,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_bmp.c:2042,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/bgp_bmp.c:2050,1
    - Dst: bmp_targets_find1
      Src: /src/frr/bgpd/bgp_bmp.c:2053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2055,1
    - Dst: bmp_targets_put
      Src: /src/frr/bgpd/bgp_bmp.c:2058,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_bmp.c:2062,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/bgp_bmp.c:2072,1
    - Dst: bmp_listener_get
      Src: /src/frr/bgpd/bgp_bmp.c:2075,1
    - Dst: bmp_listener_start
      Src: /src/frr/bgpd/bgp_bmp.c:2077,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_bmp.c:2082,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/bgp_bmp.c:2093,1
    - Dst: bmp_listener_find
      Src: /src/frr/bgpd/bgp_bmp.c:2096,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2098,1
    - Dst: bmp_listener_stop
      Src: /src/frr/bgpd/bgp_bmp.c:2101,1
    - Dst: bmp_listener_put
      Src: /src/frr/bgpd/bgp_bmp.c:2102,1
    - Dst: DEFPY
      Src: /src/frr/bgpd/bgp_bmp.c:2106,1
    - Dst: bmp_active_find
      Src: /src/frr/bgpd/bgp_bmp.c:2126,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2128,1
    - Dst: strcmp
      Src: /src/frr/bgpd/bgp_bmp.c:2134,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2135,1
    - Dst: bmp_active_put
      Src: /src/frr/bgpd/bgp_bmp.c:2139,1
    - Dst: bmp_active_get
      Src: /src/frr/bgpd/bgp_bmp.c:2143,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/bgp_bmp.c:2145,1
    - Dst: bmp_active_setup
      Src: /src/frr/bgpd/bgp_bmp.c:2151,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2000
    functionDepth: 3
    functionLinenumber: 2000
    functionLinenumberEnd: 2154
    functionName: bmp_targets_autocomplete
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - VTY_DECLVAR_CONTEXT_SUB
    - bmp_active_find
    - bmp_targets_put
    - frr_each_safe
    - bmp_targets_find1
    - DEFPY
    - bmp_listener_put
    - VTY_DECLVAR_CONTEXT
    - bmp_listener_stop
    - ALL_LIST_ELEMENTS_RO
    - vector_set
    - if
    - bmp_bgp_find
    - VTY_PUSH_CONTEXT_SUB
    - vty_out
    - bmp_active_put
    - bmp_targets_get
    - bmp_listener_start
    - bmp_active_get
    - bmp_listener_find
    - XSTRDUP
    - bmp_listener_get
    - bmp_active_setup
    - strcmp
    linkageType: ''
    returnType: void
    signature: void bmp_targets_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2380,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_bmp.c:2381,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:2381,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2382
      start: 2364
    functionDepth: 1
    functionLinenumber: 2364
    functionLinenumberEnd: 2382
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 30
    functionsReached:
    - safi2str
    - vty_out
    - afi2str
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bmp_bgp_find
      Src: /src/frr/bgpd/bgp_bmp.c:2471,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2482,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:2485,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2486,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2489,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2491,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2494,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2498,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2502,1
    - Dst: afi2str_lower
      Src: /src/frr/bgpd/bgp_bmp.c:2503,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:2503,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2505,1
    - Dst: afi2str_lower
      Src: /src/frr/bgpd/bgp_bmp.c:2507,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:2507,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:2509,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2510,1
    - Dst: frr_each
      Src: /src/frr/bgpd/bgp_bmp.c:2513,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2514,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2519,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2521,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2523,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - bgp
    - vty
    argTypes:
    - struct bgp*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2469
    functionDepth: 1
    functionLinenumber: 2469
    functionLinenumberEnd: 2527
    functionName: bmp_config_write
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - bmp_bgp_find
    - safi2str
    - vty_out
    - frr_each
    - afi2str_lower
    linkageType: ''
    returnType: int
    signature: int bmp_config_write(struct bgp *bgp, struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2502,1
    - Dst: afi2str_lower
      Src: /src/frr/bgpd/bgp_bmp.c:2503,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:2503,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_bmp.c:2505,1
    - Dst: afi2str_lower
      Src: /src/frr/bgpd/bgp_bmp.c:2507,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_bmp.c:2507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2500
    functionDepth: 1
    functionLinenumber: 2500
    functionLinenumberEnd: 2508
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 30
    functionsReached:
    - safi2str
    - vty_out
    - afi2str_lower
    linkageType: ''
    returnType: void
    signature: void FOREACH_AFI_SAFI (afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/bgpd/bgp_bmp.c:2531,1
    - Dst: install_default
      Src: /src/frr/bgpd/bgp_bmp.c:2532,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bgpd/bgp_bmp.c:2534,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2536,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2537,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2539,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2540,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2541,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2542,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2543,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2544,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2545,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2547,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2548,1
    - Dst: install_element
      Src: /src/frr/bgpd/bgp_bmp.c:2550,1
    - Dst: resolver_init
      Src: /src/frr/bgpd/bgp_bmp.c:2552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2529
    functionDepth: 1
    functionLinenumber: 2529
    functionLinenumberEnd: 2554
    functionName: bgp_bmp_init
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - resolver_init
    - install_node
    - install_default
    - install_element
    - cmd_variable_handler_register
    linkageType: ''
    returnType: int
    signature: int bgp_bmp_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2558,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2559,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2560,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2561,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2562,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2563,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2564,1
    - Dst: hook_register
      Src: /src/frr/bgpd/bgp_bmp.c:2565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2567
      start: 2556
    functionDepth: 1
    functionLinenumber: 2556
    functionLinenumberEnd: 2567
    functionName: bgp_bmp_module_init
    functionSourceFile: /src/frr/bgpd/bgp_bmp.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int bgp_bmp_module_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_best_selection
      Src: /src/frr/bgpd/bgp_evpn_mh.c:104,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:117,1
    - Dst: bgp_addpath_is_addpath_used
      Src: /src/frr/bgpd/bgp_evpn_mh.c:118,1
    - Dst: bgp_zebra_has_route_changed
      Src: /src/frr/bgpd/bgp_evpn_mh.c:119,1
    - Dst: bgp_evpn_es_vtep_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:120,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:125,1
    - Dst: bgp_zebra_clear_route_change_flags
      Src: /src/frr/bgpd/bgp_evpn_mh.c:126,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:131,1
    - Dst: bgp_bump_version
      Src: /src/frr/bgpd/bgp_evpn_mh.c:137,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_evpn_mh.c:140,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn_mh.c:142,1
    - Dst: bgp_path_info_unset_flag
      Src: /src/frr/bgpd/bgp_evpn_mh.c:143,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:145,1
    - Dst: bgp_evpn_es_vtep_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:150,1
    - Dst: bgp_evpn_es_vtep_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:156,1
    - Dst: bgp_zebra_clear_route_change_flags
      Src: /src/frr/bgpd/bgp_evpn_mh.c:162,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:165,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn_mh.c:166,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 32
    argCount: 3
    argNames:
    - bgp
    - es
    - dest
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 92
    functionDepth: 4
    functionLinenumber: 92
    functionLinenumberEnd: 169
    functionName: bgp_evpn_es_route_select_install
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_addpath_is_addpath_used
    - bgp_path_info_reap
    - bgp_evpn_es_vtep_del
    - bgp_zebra_has_route_changed
    - CHECK_FLAG
    - bgp_zebra_clear_route_change_flags
    - bgp_evpn_es_vtep_add
    - bgp_path_info_set_flag
    - bgp_bump_version
    - UNSET_FLAG
    - bgp_best_selection
    - bgp_path_info_unset_flag
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_es_route_select_install(struct bgp *bgp,\n\t\t\t\t\t
      \   struct bgp_evpn_es *es,\n\t\t\t\t\t    struct bgp_dest *dest)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:184,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_mh.c:187,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:194,1
    - Dst: info_make
      Src: /src/frr/bgpd/bgp_evpn_mh.c:197,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:199,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:200,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_evpn_mh.c:201,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:202,1
    - Dst: bgp_path_info_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:203,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:205,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:206,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:207,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:212,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:215,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_evpn_mh.c:216,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/bgp_evpn_mh.c:219,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:220,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:223,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_evpn_mh.c:225,1
    - Dst: bgp_evpn_es_route_select_install
      Src: /src/frr/bgpd/bgp_evpn_mh.c:229,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:231,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - bgp
    - es
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 172
    functionDepth: 7
    functionLinenumber: 172
    functionLinenumberEnd: 234
    functionName: bgp_evpn_es_route_install
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_evpn_es_route_select_install
    - bgp_path_info_extra_get
    - bgp_path_info_restore
    - bgp_attr_unintern
    - bgp_path_info_add
    - CHECK_FLAG
    - info_make
    - monotime
    - bgp_path_info_lock
    - attrhash_cmp
    - IPV4_ADDR_SAME
    - SET_FLAG
    - bgp_dest_lock_node
    - bgp_dest_get_bgp_path_info
    - bgp_attr_intern
    - bgp_node_get
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_es_route_install(struct bgp *bgp,\n\t\tstruct bgp_evpn_es
      *es, struct prefix_evpn *p,\n\t\tstruct bgp_path_info *parent_pi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:250,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_mh.c:255,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:262,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:267,1
    - Dst: bgp_evpn_es_route_select_install
      Src: /src/frr/bgpd/bgp_evpn_mh.c:270,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:273,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 4
    argNames:
    - bgp
    - es
    - p
    - parent_pi
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - struct prefix_evpn*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 237
    functionDepth: 5
    functionLinenumber: 237
    functionLinenumberEnd: 276
    functionName: bgp_evpn_es_route_uninstall
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_node_lookup
    - bgp_path_info_delete
    - bgp_dest_get_bgp_path_info
    - bgp_evpn_es_route_select_install
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_es_route_uninstall(struct bgp *bgp, struct bgp_evpn_es
      *es,\n\t\tstruct prefix_evpn *p, struct bgp_path_info *parent_pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_route_install
      Src: /src/frr/bgpd/bgp_evpn_mh.c:286,1
    - Dst: bgp_evpn_es_route_uninstall
      Src: /src/frr/bgpd/bgp_evpn_mh.c:288,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 7
    argNames:
    - bgp
    - es
    - afi
    - safi
    - evp
    - pi
    - install
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - afi_t
    - safi_t
    - struct prefix_evpn*
    - struct bgp_path_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 279
    functionDepth: 8
    functionLinenumber: 279
    functionLinenumberEnd: 300
    functionName: bgp_evpn_es_route_install_uninstall
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_route_install
    - flog_err
    - bgp_evpn_es_route_uninstall
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_es_route_install_uninstall(struct bgp *bgp, struct bgp_evpn_es
      *es,\n\t\tafi_t afi, safi_t safi, struct prefix_evpn *evp,\n\t\tstruct bgp_path_info
      *pi, int install)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_local_es_down
      Src: /src/frr/bgpd/bgp_evpn_mh.c:312,1
    - Dst: bgp_evpn_local_type1_evi_route_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:313,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_mh.c:316,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:317,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_mh.c:318,1
    - Dst: bgp_path_info_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:320,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn_mh.c:321,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - bgp
    - es
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 324
    functionName: bgp_evpn_es_route_del_all
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_path_info_reap
    - bgp_table_top
    - bgp_evpn_local_es_down
    - bgp_evpn_local_type1_evi_route_del
    - bgp_path_info_delete
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_route_del_all(struct bgp *bgp, struct bgp_evpn_es
      *es)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:353,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_mh.c:357,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:365,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:374,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:386,1
    - Dst: info_make
      Src: /src/frr/bgpd/bgp_evpn_mh.c:389,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:391,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:394,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn_mh.c:397,1
    - Dst: bgp_path_info_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:403,1
    - Dst: attrhash_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:406,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:407,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:413,1
    - Dst: bgp_path_info_set_flag
      Src: /src/frr/bgpd/bgp_evpn_mh.c:414,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:418,1
    - Dst: bgp_path_info_restore
      Src: /src/frr/bgpd/bgp_evpn_mh.c:419,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:422,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_evpn_mh.c:424,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:429,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:430,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 9
    argNames:
    - bgp
    - es
    - vpn
    - afi
    - safi
    - dest
    - attr
    - ri
    - route_changed
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - struct bgpevpn*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct attr*
    - struct bgp_path_info**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 341
    functionDepth: 7
    functionLinenumber: 341
    functionLinenumberEnd: 442
    functionName: bgp_evpn_mh_route_update
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_path_info_extra_get
    - bgp_path_info_restore
    - bgp_attr_unintern
    - vni2label
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - info_make
    - bgp_path_info_add
    - bgp_path_info_set_flag
    - attrhash_cmp
    - monotime
    - flog_err
    - SET_FLAG
    - zlog_debug
    - bgp_dest_get_bgp_path_info
    - BGP_DEBUG
    - bgp_attr_intern
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,\n\t\t\t
      \    struct bgpevpn *vpn, afi_t afi, safi_t safi,\n\t\t\t     struct bgp_dest
      *dest, struct attr *attr,\n\t\t\t     struct bgp_path_info **ri, int *route_changed)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:474,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:478,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:479,1
    - Dst: bgp_evpn_global_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:490,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:495,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn_mh.c:501,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:502,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:509,1
    - Dst: bgp_path_info_reap
      Src: /src/frr/bgpd/bgp_evpn_mh.c:511,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:512,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - bgp
    - es
    - vpn
    - es_frag
    - p
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - struct bgpevpn*
    - struct bgp_evpn_es_frag*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 514
    functionName: bgp_evpn_mh_route_delete
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_path_info_reap
    - bgp_evpn_global_node_lookup
    - bgp_node_lookup
    - zlog_debug
    - delete_evpn_route_entry
    - bgp_process
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_mh_route_delete(struct bgp *bgp, struct bgp_evpn_es *es,\n\t\t\t\t
      \   struct bgpevpn *vpn,\n\t\t\t\t    struct bgp_evpn_es_frag *es_frag,\n\t\t\t\t
      \   struct prefix_evpn *p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:533,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_evpn_mh.c:534,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn_mh.c:535,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_mh.c:541,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:541,1
    - Dst: delete_evpn_route_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:547,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn_mh.c:549,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:555,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - bgp
    - vpn
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 521
    functionDepth: 3
    functionLinenumber: 521
    functionLinenumberEnd: 558
    functionName: delete_global_ead_evi_routes
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - bgp_table_top
    - bgp_node_lookup
    - bgp_dest_has_bgp_path_info_data
    - delete_evpn_route_entry
    - bgp_process
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: int
    signature: int delete_global_ead_evi_routes(struct bgp *bgp, struct bgpevpn *vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:582,1
    - Dst: encode_encap_extcomm
      Src: /src/frr/bgpd/bgp_evpn_mh.c:583,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:587,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:587,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:590,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:591,1
    - Dst: es_get_system_mac
      Src: /src/frr/bgpd/bgp_evpn_mh.c:592,1
    - Dst: encode_es_rt_extcomm
      Src: /src/frr/bgpd/bgp_evpn_mh.c:593,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:597,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn_mh.c:599,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:599,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:602,1
    - Dst: encode_df_elect_extcomm
      Src: /src/frr/bgpd/bgp_evpn_mh.c:603,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:606,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn_mh.c:608,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 2
    argNames:
    - es
    - attr
    argTypes:
    - struct bgp_evpn_es*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 609
    functionName: bgp_evpn_type4_route_extcomm_build
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - encode_es_rt_extcomm
    - es_get_system_mac
    - memset
    - bgp_attr_get_ecommunity
    - ecommunity_merge
    - bgp_attr_set_ecommunity
    - encode_encap_extcomm
    - ecommunity_dup
    - encode_df_elect_extcomm
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_type4_route_extcomm_build(struct bgp_evpn_es *es,\n\t\tstruct
      attr *attr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:624,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_evpn_mh.c:627,1
    - Dst: bgp_evpn_type4_route_extcomm_build
      Src: /src/frr/bgpd/bgp_evpn_mh.c:633,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:637,1
    - Dst: bgp_evpn_mh_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:640,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:643,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_mh.c:648,1
    - Dst: bgp_evpn_es_route_select_install
      Src: /src/frr/bgpd/bgp_evpn_mh.c:655,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:656,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:666,1
    - Dst: bgp_evpn_mh_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:669,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn_mh.c:673,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:674,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - bgp
    - es
    - p
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - struct prefix_evpn*
    assertStmts:
    - condition: (pi)
      pos:
        line_end: 647
        line_start: 647
        source_file: /src/frr/bgpd/bgp_evpn_mh.c
    constantsTouched: []
    func_position:
      end: 680
      start: 612
    functionDepth: 8
    functionLinenumber: 612
    functionLinenumberEnd: 680
    functionName: bgp_evpn_type4_route_update
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - aspath_unintern
    - bgp_node_get
    - memset
    - bgp_evpn_type4_route_extcomm_build
    - bgp_evpn_global_node_get
    - flog_err
    - bgp_process
    - bgp_attr_default_set
    - bgp_evpn_es_route_select_install
    - assert
    - bgp_evpn_mh_route_update
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_type4_route_update(struct bgp *bgp,\n\t\tstruct bgp_evpn_es
      *es, struct prefix_evpn *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_mh_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - bgp
    - es
    - p
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 683
    functionDepth: 4
    functionLinenumber: 683
    functionLinenumberEnd: 691
    functionName: bgp_evpn_type4_route_delete
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_mh_route_delete
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_type4_route_delete(struct bgp *bgp,\n\t\tstruct bgp_evpn_es
      *es, struct prefix_evpn *p)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:709,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:718,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:722,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:729,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:731,1
    - Dst: build_evpn_type4_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:738,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:741,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_evpn_mh.c:745,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 7
    argNames:
    - peer
    - afi
    - safi
    - attr
    - pfx
    - psize
    - addpath_id
    argTypes:
    - struct peer*
    - afi_t
    - safi_t
    - struct attr*
    - uint8_t*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 694
    functionDepth: 15
    functionLinenumber: 694
    functionLinenumberEnd: 750
    functionName: bgp_evpn_type4_route_process
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - flog_err
    - bgp_withdraw
    - bgp_update
    - build_evpn_type4_prefix
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_type4_route_process(struct peer *peer, afi_t afi, safi_t
      safi,\n\t\tstruct attr *attr, uint8_t *pfx, int psize,\n\t\tuint32_t addpath_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - p
    - es
    argTypes:
    - struct prefix_evpn*
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 753
    functionDepth: 0
    functionLinenumber: 753
    functionLinenumberEnd: 758
    functionName: bgp_evpn_type4_prefix_match
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_type4_prefix_match(struct prefix_evpn *p,\n\t\tstruct
      bgp_evpn_es *es)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_mh.c:777,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:778,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_evpn_mh.c:779,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_evpn_mh.c:783,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:784,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:786,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_evpn_mh.c:788,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:794,1
    - Dst: bgp_evpn_type4_prefix_match
      Src: /src/frr/bgpd/bgp_evpn_mh.c:799,1
    - Dst: bgp_evpn_es_route_install
      Src: /src/frr/bgpd/bgp_evpn_mh.c:803,1
    - Dst: bgp_evpn_es_route_uninstall
      Src: /src/frr/bgpd/bgp_evpn_mh.c:806,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:810,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:817,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:818,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 3
    argNames:
    - bgp
    - es
    - install
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 761
    functionDepth: 8
    functionLinenumber: 761
    functionLinenumberEnd: 825
    functionName: bgp_evpn_type4_remote_routes_import
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_dest_unlock_node
    - bgp_evpn_es_route_uninstall
    - bgp_evpn_type4_prefix_match
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_evpn_es_route_install
    - flog_err
    - bgp_dest_get_bgp_path_info
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_type4_remote_routes_import(struct bgp *bgp,\n\t\tstruct
      bgp_evpn_es *es, bool install)"
  - BBCount: 137
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:850,1
    - Dst: encode_encap_extcomm
      Src: /src/frr/bgpd/bgp_evpn_mh.c:851,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:855,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:855,1
    - Dst: encode_esi_label_extcomm
      Src: /src/frr/bgpd/bgp_evpn_mh.c:858,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:863,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn_mh.c:864,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:864,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:871,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:872,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:874,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn_mh.c:875,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:877,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:879,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn_mh.c:881,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:881,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:883,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn_mh.c:884,1
    - Dst: bgp_evpn_type1_evi_route_extcomm_build
      Src: /src/frr/bgpd/bgp_evpn_mh.c:891,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:902,1
    - Dst: encode_encap_extcomm
      Src: /src/frr/bgpd/bgp_evpn_mh.c:903,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:907,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:907,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:910,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:911,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/bgp_evpn_mh.c:913,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/bgp_evpn_mh.c:913,1
    - Dst: bgp_evpn_type1_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:919,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:934,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_evpn_mh.c:937,1
    - Dst: vni2label
      Src: /src/frr/bgpd/bgp_evpn_mh.c:945,1
    - Dst: bgp_evpn_type1_evi_route_extcomm_build
      Src: /src/frr/bgpd/bgp_evpn_mh.c:948,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:951,1
    - Dst: bgp_evpn_mh_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:954,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:957,1
    - Dst: bgp_evpn_type1_es_route_extcomm_build
      Src: /src/frr/bgpd/bgp_evpn_mh.c:968,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:973,1
    - Dst: bgp_evpn_mh_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:976,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:979,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_mh.c:988,1
    - Dst: evpn_route_select_install
      Src: /src/frr/bgpd/bgp_evpn_mh.c:995,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:996,1
    - Dst: bgp_evpn_global_node_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1006,1
    - Dst: bgp_evpn_mh_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1008,1
    - Dst: bgp_process
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1012,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1013,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1017,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1027,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1034,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1036,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1037,1
    - Dst: bgp_evpn_type1_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1041,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1042,1
    - Dst: bgp_evpn_ead_evi_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1049,1
    - Dst: bgp_evpn_type1_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1054,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1055,1
    - Dst: update_type1_routes_for_evi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1060,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1067,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1074,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1078,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1079,1
    - Dst: bgp_evpn_ead_evi_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1081,1
    - Dst: bgp_evpn_ead_es_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1087,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1094,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1096,1
    - Dst: bgp_evpn_mh_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1098,1
    - Dst: bgp_evpn_ead_evi_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1102,1
    - Dst: bgp_evpn_mh_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1107,1
    - Dst: bgp_evpn_local_type1_evi_route_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1111,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1122,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1126,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1127,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1130,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1131,1
    - Dst: bgp_evpn_ead_evi_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1133,1
    - Dst: bgp_evpn_local_type1_evi_route_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1140,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1148,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1152,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1153,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1155,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1156,1
    - Dst: bgp_evpn_mh_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1158,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1159,1
    - Dst: bgp_evpn_type1_route_process
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1168,1
    - Dst: prefix_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1177,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1180,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1189,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1193,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1197,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1198,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1201,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1207,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1210,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1214,1
    - Dst: bgp_evpn_mh_config_ead_export_rt
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1221,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1231,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1233,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1234,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1243,1
    - Dst: ecommunity_match
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1245,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1246,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1252,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1253,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1257,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1260,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1261,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1266,1
    - Dst: bgp_evpn_is_es_local
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1267,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1268,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1271,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1272,1
    - Dst: bgp_evpn_ead_es_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1280,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1283,1
    - Dst: bgp_evpn_es_vtep_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1305,1
    - Dst: bgp_evpn_es_vtep_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1313,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1318,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1322,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1324,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1325,1
    - Dst: bgp_evpn_es_vtep_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1330,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1334,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1339,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1340,1
    - Dst: bgp_evpn_es_vtep_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1344,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1350,1
    - Dst: bgp_zebra_send_remote_es_vtep
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1358,1
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1370,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1371,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1372,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1381,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1383,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1386,1
    - Dst: stream_put_ipv4
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1387,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1389,1
    - Dst: stream_putc
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1390,1
    - Dst: stream_putw
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1391,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1394,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1394,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1396,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1397,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1400,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1402,1
    - Dst: bgp_evpn_es_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1412,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1417,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1421,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1425,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1426,1
    - Dst: bgp_zebra_send_remote_es_vtep
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1432,1
    - Dst: bgp_evpn_l3nhg_update_on_vtep_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1440,1
    - Dst: bgp_evpn_es_cons_checks_pend_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1442,1
    - Dst: bgp_evpn_es_vtep_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1446,1
    - Dst: bgp_evpn_es_vtep_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1455,1
    - Dst: bgp_evpn_es_vtep_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1458,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1460,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1461,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1466,1
    - Dst: bgp_evpn_es_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1477,1
    - Dst: bgp_evpn_es_vtep_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1482,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1487,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1488,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1491,1
    - Dst: bgp_evpn_es_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1502,1
    - Dst: bgp_evpn_es_vtep_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1503,1
    - Dst: bgp_evpn_es_vtep_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1506,1
    - Dst: bgp_evpn_es_vtep_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1511,1
    - Dst: bgp_evpn_es_vtep_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1513,1
    - Dst: bgp_evpn_path_es_info_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1526,1
    - Dst: bgp_evpn_path_es_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1528,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1529,1
    - Dst: bgp_evpn_path_mh_info_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1532,1
    - Dst: bgp_evpn_path_es_info_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1535,1
    - Dst: bgp_evpn_path_nh_info_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1537,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1538,1
    - Dst: bgp_evpn_path_es_info_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1542,1
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1548,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1553,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1560,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1578,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1579,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1583,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1586,1
    - Dst: bgp_evpn_es_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1594,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1611,1
    - Dst: bgp_evpn_path_es_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1613,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1617,1
    - Dst: bgp_evpn_path_es_info_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1623,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1626,1
    - Dst: bgp_evpn_es_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1628,1
    - Dst: bgp_evpn_path_es_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1635,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1637,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1638,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1643,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1645,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1647,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1659,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1659,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1681,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1682,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1685,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1688,1
    - Dst: bgp_evpn_is_macip_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1688,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1691,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1691,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1692,1
    - Dst: bgp_evpn_route_entry_install_if_vrf_match
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1695,1
    - Dst: bgp_evpn_es_frag_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1700,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1707,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1708,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1709,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1712,1
    - Dst: bf_release_index
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1714,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1717,1
    - Dst: bgp_evpn_es_frag_free_unused
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1720,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1723,1
    - Dst: bgp_evpn_es_frag_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1726,1
    - Dst: bgp_evpn_es_frag_free_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1729,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1735,1
    - Dst: bgp_evpn_es_frag_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1736,1
    - Dst: bgp_evpn_es_frag_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1739,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1745,1
    - Dst: bf_assign_index
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1746,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1749,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1750,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1752,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1755,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1756,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1760,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1761,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1763,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1764,1
    - Dst: bgp_evpn_es_find_frag_with_space
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1769,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1774,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1775,1
    - Dst: bgp_evpn_es_frag_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1781,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1790,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1791,1
    - Dst: bgp_evpn_es_find_frag_with_space
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1794,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1797,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1798,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1800,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1800,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1801,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1819,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1819,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1820,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1823,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1829,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1829,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1830,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1832,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1832,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1833,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1835,1
    - Dst: bgp_evpn_mh_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1838,1
    - Dst: bgp_evpn_es_frag_free_unused
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1844,1
    - Dst: bgp_evpn_es_frag_evi_update_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1848,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1853,1
    - Dst: bgp_evpn_es_frag_evi_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1855,1
    - Dst: bgp_evpn_es_frag_evi_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1857,1
    - Dst: bgp_es_rb_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1862,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1865,1
    - Dst: RB_GENERATE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1867,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1869,1
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1874,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1884,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1887,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1888,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1891,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1894,1
    - Dst: RB_INSERT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1897,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1900,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1901,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1904,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1905,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1908,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1909,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1910,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1911,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1912,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1913,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1915,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1927,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1928,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1931,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1932,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1935,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1936,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1937,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1938,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1939,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1940,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1941,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1944,1
    - Dst: bgp_evpn_es_cons_checks_pend_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1945,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1947,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1948,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1963,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1966,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1967,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1969,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1970,1
    - Dst: bgp_evpn_es_frag_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1975,1
    - Dst: bgp_evpn_es_frag_evi_update_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1977,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1979,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1981,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1990,1
    - Dst: bgp_evpn_es_frag_evi_update_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1994,1
    - Dst: bgp_evpn_es_frag_free_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1996,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1998,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1999,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2001,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2003,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2006,1
    - Dst: bgp_evpn_es_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2008,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2015,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2017,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2018,1
    - Dst: bgp_evpn_es_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2019,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2034,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2037,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2042,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2062,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2063,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2066,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2067,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2070,1
    - Dst: bgp_evpn_is_valid_local_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2070,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2073,1
    - Dst: bgp_evpn_is_macip_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2073,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2076,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2080,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2081,1
    - Dst: bgp_evpn_update_type2_route_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2085,1
    - Dst: bgp_evpn_is_valid_bgp_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2090,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2092,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2101,1
    - Dst: attr_tmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2109,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2111,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2112,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2115,1
    - Dst: bgp_evpn_is_valid_bgp_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2119,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2129,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2130,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2140,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2141,1
    - Dst: bgp_evpn_import_type2_route
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2143,1
    - Dst: bgp_evpn_local_es_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2147,1
    - Dst: build_evpn_type4_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2155,1
    - Dst: bgp_evpn_type4_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2156,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2158,1
    - Dst: bgp_evpn_local_type1_evi_route_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2165,1
    - Dst: bgp_evpn_ead_es_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2168,1
    - Dst: bgp_evpn_mac_update_on_es_oper_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2170,1
    - Dst: bgp_evpn_local_es_down
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2174,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2178,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2181,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2182,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2184,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2185,1
    - Dst: bgp_evpn_local_es_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2188,1
    - Dst: bgp_evpn_local_es_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2191,1
    - Dst: prefix_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2194,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2197,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2198,1
    - Dst: build_evpn_type4_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2200,1
    - Dst: bgp_evpn_type4_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2201,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2202,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2208,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2209,1
    - Dst: bgp_evpn_local_type1_evi_route_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2211,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2214,1
    - Dst: bgp_evpn_mac_update_on_es_oper_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2217,1
    - Dst: bgp_evpn_local_es_up
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2227,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2228,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2229,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2231,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2236,1
    - Dst: bgp_evpn_local_es_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2238,1
    - Dst: bgp_evpn_local_es_bypass_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2246,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2258,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2259,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2261,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2263,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2265,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2266,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2269,1
    - Dst: bgp_evpn_local_es_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2272,1
    - Dst: bgp_evpn_local_es_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2274,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2277,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2279,1
    - Dst: bgp_evpn_local_es_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2282,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2288,1
    - Dst: bgp_evpn_es_route_del_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2293,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2296,1
    - Dst: bgp_evpn_local_es_evi_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2298,1
    - Dst: bgp_evpn_es_local_info_clear
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2304,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2312,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2314,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2322,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2324,1
    - Dst: bgp_evpn_local_es_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2329,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2347,1
    - Dst: bgp_evpn_es_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2350,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2352,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2353,1
    - Dst: bgp_evpn_es_local_info_set
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2362,1
    - Dst: bgp_evpn_type4_remote_routes_import
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2366,1
    - Dst: bgp_evpn_local_type1_evi_route_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2374,1
    - Dst: bgp_evpn_local_es_bypass_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2376,1
    - Dst: bgp_evpn_local_es_up
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2382,1
    - Dst: bgp_evpn_local_es_down
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2384,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2396,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2397,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2399,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2401,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2402,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2404,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2414,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2414,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2415,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2416,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2430,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2430,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2433,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2434,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2435,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2436,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2438,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2439,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2443,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2444,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2445,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2448,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2449,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2450,1
    - Dst: bgp_evpn_es_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2456,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2463,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2465,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2469,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2471,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2473,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2474,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2476,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2478,1
    - Dst: evpn_es_df_alg2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2480,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2485,1
    - Dst: bgp_evpn_es_vteps_show_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2489,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2497,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2500,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2502,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2504,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2505,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2507,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2511,1
    - Dst: evpn_es_df_alg2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2512,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2516,1
    - Dst: bgp_evpn_es_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2520,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2530,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2532,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2536,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2538,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2540,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2541,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2544,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2545,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2546,1
    - Dst: bgp_evpn_es_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2548,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2550,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2552,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2553,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2560,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2562,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2564,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2566,1
    - Dst: bgp_evpn_es_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2568,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2570,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2573,1
    - Dst: bgp_evpn_es_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2577,1
    - Dst: bgp_evpn_es_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2589,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2593,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2597,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2600,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2601,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2603,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2605,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2607,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2608,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2609,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2610,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2611,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2612,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2613,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2616,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2618,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2619,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2620,1
    - Dst: bgp_evpn_es_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2622,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2624,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2626,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2627,1
    - Dst: bgp_evpn_es_json_frag_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2628,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2629,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2632,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2634,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2636,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2645,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2647,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2649,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2650,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2651,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2653,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2655,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2658,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2659,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2659,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2660,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2662,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2662,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2663,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2664,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2665,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2666,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2667,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2672,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2675,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2677,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2679,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2680,1
    - Dst: bgp_evpn_es_frag_show_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2681,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2683,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2684,1
    - Dst: bgp_evpn_es_vteps_show_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2685,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2687,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2700,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2703,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2705,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2707,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2713,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2716,1
    - Dst: bgp_evpn_es_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2718,1
    - Dst: bgp_evpn_es_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2720,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2723,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2728,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2738,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2740,1
    - Dst: bgp_evpn_es_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2742,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2745,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2749,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2787,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2788,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2792,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2797,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2806,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2807,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2811,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2815,1
    - Dst: ipv4_to_ipv4_mapped_ipv6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2818,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2823,1
    - Dst: struct zapi_nhg::nexthop_num
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2825,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2826,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2827,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2831,1
    - Dst: zclient_nhg_send
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2837,1
    - Dst: bgp_evpn_l3nhg_zebra_ok
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2840,1
    - Dst: bgp_evpn_l3nhg_zebra_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2852,1
    - Dst: bgp_evpn_l3nhg_zebra_ok
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2854,1
    - Dst: bgp_evpn_l3nhg_zebra_add_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2857,1
    - Dst: bgp_evpn_l3nhg_zebra_add_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2858,1
    - Dst: bgp_evpn_l3nhg_zebra_del_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2861,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2872,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2873,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2878,1
    - Dst: zclient_nhg_send
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2881,1
    - Dst: bgp_evpn_l3nhg_zebra_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2884,1
    - Dst: bgp_evpn_l3nhg_zebra_ok
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2886,1
    - Dst: bgp_evpn_l3nhg_zebra_del_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2889,1
    - Dst: bgp_evpn_l3nhg_zebra_del_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2890,1
    - Dst: bgp_evpn_l3nhg_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2893,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2898,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2899,1
    - Dst: bgp_evpn_l3nhg_zebra_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2902,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2905,1
    - Dst: bgp_evpn_l3nhg_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2908,1
    - Dst: bgp_evpn_es_get_active_vtep_cnt
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2910,1
    - Dst: bgp_evpn_l3nhg_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2911,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2919,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2920,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2925,1
    - Dst: bgp_evpn_l3nhg_zebra_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2928,1
    - Dst: bgp_evpn_l3nhg_update_on_vtep_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2934,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2939,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2940,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2942,1
    - Dst: bgp_evpn_l3nhg_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2943,1
    - Dst: bgp_es_vrf_rb_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2947,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2950,1
    - Dst: RB_GENERATE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2952,1
    - Dst: bgp_evpn_vrf_es_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2955,1
    - Dst: RB_INIT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2958,1
    - Dst: bgp_evpn_es_vrf_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2962,1
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2969,1
    - Dst: bgp_evpn_es_vrf_create
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2973,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2978,1
    - Dst: RB_INSERT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2984,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2987,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2988,1
    - Dst: bgp_l3nhg_id_alloc
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2991,1
    - Dst: bgp_l3nhg_id_alloc
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2992,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2994,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2995,1
    - Dst: bgp_evpn_l3nhg_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2997,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3002,1
    - Dst: bgp_evpn_es_vrf_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3008,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3013,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3014,1
    - Dst: bgp_evpn_l3nhg_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3018,1
    - Dst: bgp_l3nhg_id_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3020,1
    - Dst: bgp_l3nhg_id_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3023,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3027,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3030,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3035,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3037,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3041,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3048,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3049,1
    - Dst: ref_cnt
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3055,1
    - Dst: bgp_evpn_es_vrf_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3058,1
    - Dst: bgp_evpn_es_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3062,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3075,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3080,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3081,1
    - Dst: bgp_evpn_es_vrf_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3085,1
    - Dst: bgp_evpn_es_vrf_create
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3087,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3100,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3101,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3103,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3104,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3110,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3111,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3113,1
    - Dst: bgp_evpn_es_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3114,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3135,1
    - Dst: bgp_evpn_es_vrf_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3139,1
    - Dst: get_route_parent_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3169,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3182,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3183,1
    - Dst: bgp_evpn_mpath_has_dvni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3187,1
    - Dst: bgp_evpn_es_vrf_use_nhg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3190,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3204,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3209,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3210,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3215,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3215,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3233,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3234,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3237,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3239,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3240,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3243,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3244,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3245,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3251,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3253,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3266,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3269,1
    - Dst: bgp_evpn_es_vrf_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3270,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3273,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3284,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3287,1
    - Dst: bgp_evpn_es_vrf_show_es
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3292,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3294,1
    - Dst: bgp_evpn_es_vrf_show_es
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3295,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3300,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3308,1
    - Dst: bgp_evpn_es_vrf_show
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3310,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3313,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3346,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3350,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3351,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3364,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3365,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3392,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3404,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3406,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3408,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3413,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3414,1
    - Dst: bgp_evpn_es_vtep_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3421,1
    - Dst: bgp_evpn_es_vtep_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3426,1
    - Dst: bgp_evpn_es_cons_checks_pend_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3432,1
    - Dst: bgp_evpn_es_evi_vtep_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3441,1
    - Dst: bgp_evpn_es_evi_vtep_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3444,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3446,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3447,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3453,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3455,1
    - Dst: bgp_evpn_es_evi_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3457,1
    - Dst: bgp_evpn_es_evi_vtep_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3466,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3470,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3471,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3477,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3479,1
    - Dst: bgp_evpn_es_evi_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3481,1
    - Dst: bgp_evpn_es_evi_vtep_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3482,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3489,1
    - Dst: RB_GENERATE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3491,1
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3501,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3512,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3518,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3519,1
    - Dst: RB_INSERT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3523,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3526,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3527,1
    - Dst: bgp_evpn_es_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3529,1
    - Dst: bgp_evpn_es_frag_evi_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3548,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3549,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3552,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3555,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3558,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3561,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3571,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3574,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3575,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3576,1
    - Dst: bgp_evpn_es_frag_evi_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3577,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3586,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3587,1
    - Dst: bgp_evpn_es_evi_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3589,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3598,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3599,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3600,1
    - Dst: bgp_evpn_es_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3603,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3606,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3607,1
    - Dst: bgp_evpn_es_evi_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3610,1
    - Dst: bgp_evpn_es_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3614,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3626,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3629,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3630,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3634,1
    - Dst: bgp_evpn_es_frag_evi_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3637,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3640,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3644,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3645,1
    - Dst: bgp_evpn_ead_evi_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3647,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3649,1
    - Dst: bgp_evpn_es_evi_local_info_clear
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3656,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3666,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3668,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3672,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3676,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3678,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3685,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3687,1
    - Dst: bgp_evpn_local_es_evi_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3694,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3707,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3709,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3713,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3717,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3719,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3726,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3727,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3730,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3733,1
    - Dst: bgp_evpn_es_evi_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3737,1
    - Dst: bgp_evpn_es_evi_local_info_set
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3739,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3742,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3743,1
    - Dst: bgp_evpn_ead_evi_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3745,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3749,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3750,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3771,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3772,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3774,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3777,1
    - Dst: bgp_evpn_es_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3779,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3781,1
    - Dst: bgp_evpn_es_evi_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3783,1
    - Dst: bgp_evpn_es_evi_vtep_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3786,1
    - Dst: bgp_evpn_es_evi_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3789,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3808,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3809,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3812,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3815,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3817,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3818,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3822,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3827,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3829,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3830,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3834,1
    - Dst: bgp_evpn_es_evi_vtep_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3842,1
    - Dst: bgp_evpn_es_evi_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3844,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3856,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3861,1
    - Dst: bgp_evpn_es_evi_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3865,1
    - Dst: bgp_evpn_es_evi_vtep_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3866,1
    - Dst: bgp_evpn_es_evi_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3869,1
    - Dst: bgp_evpn_vni_es_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3873,1
    - Dst: RB_INIT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3876,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3879,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3880,1
    - Dst: bgp_evpn_vni_es_cleanup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3884,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3889,1
    - Dst: bgp_evpn_local_es_evi_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3891,1
    - Dst: bgp_evpn_remote_es_evi_flush
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3893,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3896,1
    - Dst: bgp_evpn_es_evi_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3899,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3910,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3913,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3915,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3917,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3918,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3922,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3923,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3924,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3927,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3928,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3929,1
    - Dst: bgp_evpn_es_evi_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3935,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3941,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3943,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3947,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3949,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3951,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3952,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3956,1
    - Dst: bgp_evpn_es_evi_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3960,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3970,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3972,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3976,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3978,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3980,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3981,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3984,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3985,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3986,1
    - Dst: bgp_evpn_es_evi_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3988,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3991,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3999,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4001,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4003,1
    - Dst: bgp_evpn_es_evi_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4005,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4007,1
    - Dst: bgp_evpn_es_evi_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4013,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4018,1
    - Dst: bgp_evpn_es_evi_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4024,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4026,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4027,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4030,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4031,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4032,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4040,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4042,1
    - Dst: bgp_evpn_es_evi_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4044,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4045,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4046,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4048,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4050,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4052,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4053,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4055,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4057,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4060,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4061,1
    - Dst: bgp_evpn_es_evi_show_one_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4065,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4071,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4074,1
    - Dst: bgp_evpn_es_evi_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4076,1
    - Dst: bgp_evpn_es_evi_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4078,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4081,1
    - Dst: bgp_evpn_es_evi_show_one_vni_hash_cb
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4091,1
    - Dst: bgp_evpn_es_evi_show_one_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4097,1
    - Dst: bgp_evpn_es_evi_show
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4101,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4109,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4116,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4119,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4120,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4121,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4126,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4131,1
    - Dst: bgp_evpn_es_evi_show_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4135,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4144,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4147,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4149,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4153,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4154,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4155,1
    - Dst: bgp_evpn_es_evi_show_one_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4159,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4162,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4166,1
    - Dst: bgp_evpn_es_cons_checks_timer_start
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4176,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4178,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4181,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4182,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4196,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4204,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4205,1
    - Dst: listnode_add_after
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4206,1
    - Dst: listtail_unchecked
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4207,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4214,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4217,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4218,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4230,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4231,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4245,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4246,1
    CyclomaticComplexity: 177
    EdgeCount: 177
    ICount: 659
    argCount: 2
    argNames:
    - es_frag
    - attr
    argTypes:
    - struct bgp_evpn_es_frag*
    - struct attr*
    assertStmts:
    - condition: (pi)
      pos:
        line_end: 987
        line_start: 987
        source_file: /src/frr/bgpd/bgp_evpn_mh.c
    - condition: (node_to_del)
      pos:
        line_end: 1251
        line_start: 1251
        source_file: /src/frr/bgpd/bgp_evpn_mh.c
    constantsTouched: []
    func_position:
      end: 4251
      start: 835
    functionDepth: 15
    functionLinenumber: 835
    functionLinenumberEnd: 4251
    functionName: bgp_evpn_type1_es_route_extcomm_build
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_vtep_re_eval_active
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - bgp_evpn_es_new
    - bgp_es_rb_cmp
    - bgp_evpn_es_vtep_new
    - bgp_evpn_es_route_del_all
    - bgp_evpn_import_type2_route
    - bgp_evpn_es_free
    - bgp_evpn_es_evi_local_info_set
    - flog_err
    - bgp_evpn_es_frag_new
    - stream_reset
    - listnode_init
    - bgp_table_unlock
    - strlcat
    - flog_warn
    - memset
    - XCALLOC
    - bgp_zebra_send_remote_es_vtep
    - bgp_evpn_es_vtep_del
    - QOBJ_REG
    - evpn_es_df_alg2str
    - build_evpn_type1_prefix
    - RB_INSERT
    - bgp_path_info_mpath_next
    - json_array_string_add
    - if
    - for
    - bgp_evpn_es_show_entry
    - bgp_evpn_es_evi_vtep_re_eval_active
    - bf_release_index
    - bgp_evpn_ead_evi_route_delete
    - bgp_evpn_path_nh_info_free
    - RB_GENERATE
    - listcount
    - bgp_evpn_es_evi_vtep_add
    - bgp_evpn_vrf_es_init
    - list_delete_node
    - listset_app_node_mem
    - is_evpn_prefix_ipaddr_v6
    - bgp_evpn_type1_evi_route_extcomm_build
    - bgp_evpn_local_es_bypass_update
    - struct zapi_nhg::nexthop_num
    - memcpy
    - json_object_new_object
    - bgp_evpn_l3nhg_zebra_add
    - str2prefix_rd
    - bgp_evpn_local_es_evi_do_del
    - bgp_l3nhg_id_free
    - bgp_evpn_local_es_down
    - bgp_evpn_es_vrf_find
    - stream_putw
    - snprintfrr
    - bgp_evpn_es_evi_show_entry
    - list_new
    - bgp_es_vrf_rb_cmp
    - bgp_evpn_lookup_vni
    - ALL_LIST_ELEMENTS
    - prefix_evpn
    - bgp_attr_set_ecommunity
    - is_evpn_prefix_ipaddr_v4
    - bgp_evpn_local_es_activate
    - RB_FIND
    - bgp_evpn_es_vrf_show_entry
    - bgp_evpn_es_evi_show_one_vni_hash_cb
    - bgp_evpn_global_node_get
    - bgp_evpn_vni_es_init
    - bgp_evpn_es_evi_json_vtep_fill
    - bgp_evpn_ead_es_route_update
    - stream_putc
    - bgp_attr_intern
    - bgp_evpn_es_evi_remote_info_re_eval
    - bgp_evpn_local_es_deactivate
    - bgp_get_evpn
    - bgp_evpn_es_evi_show_entry_detail
    - zclient_nhg_send
    - stream_putw_at
    - inet_ntop
    - bgp_evpn_es_cons_checks_pend_del
    - bgp_evpn_es_evi_local_info_clear
    - ecommunity_merge
    - bgp_evpn_path_es_info_free
    - bgp_evpn_path_es_unlink
    - bgp_evpn_es_frag_free
    - bgp_attr_default_set
    - bgp_evpn_type1_es_route_extcomm_build
    - zapi_nexthop_from_nexthop
    - bgp_evpn_es_evi_free
    - bgp_evpn_es_vrf_show_es
    - bgp_evpn_es_vrf_use_nhg
    - listnode_add_sort
    - bgp_attr_get_ecommunity
    - bgp_evpn_es_find
    - bgp_evpn_is_es_local
    - bgp_evpn_es_evi_show_vni
    - event_add_timer
    - ipv4_to_ipv4_mapped_ipv6
    - bgp_evpn_local_es_is_active
    - ecommunity_free
    - bgp_evpn_local_es_do_del
    - json_object_new_array
    - zclient_create_header
    - get_route_parent_evpn
    - RB_REMOVE
    - bgp_evpn_es_evi_vtep_del
    - bgp_evpn_es_vtep_cmp
    - bgp_evpn_type1_route_update
    - bgp_withdraw
    - bgp_evpn_local_es_up
    - json_object_object_add
    - RB_FOREACH
    - ecommunity_dup
    - vty_json
    - stream_putl
    - bgp_node_get
    - bgp_get_asnotation
    - strlen
    - stream_put
    - bgp_evpn_l3nhg_update_on_vtep_chg
    - bgp_evpn_es_vtep_find
    - memcmp
    - bgp_evpn_es_find_frag_with_space
    - bgp_evpn_es_vrf_create
    - bgp_evpn_es_frag_evi_update_all
    - bgp_evpn_es_vteps_str
    - json_object_string_add
    - bgp_evpn_es_frag_free_unused
    - bgp_evpn_es_evi_vtep_free
    - frrtrace
    - bgp_evpn_l3nhg_deactivate
    - BGP_DEBUG
    - encode_encap_extcomm
    - bgp_evpn_l3nhg_zebra_add_v4_or_v6
    - bgp_evpn_mpath_has_dvni
    - bgp_l3nhg_id_alloc
    - bgp_evpn_update_type2_route_entry
    - bgp_evpn_es_vtep_do_del
    - zclient_send_message
    - bgp_evpn_type1_route_process
    - bgp_evpn_l3nhg_zebra_ok
    - zlog_debug
    - bgp_evpn_l3nhg_zebra_del
    - assert
    - bgp_evpn_es_evi_vteps_str
    - bgp_dest_unlock_node
    - bgp_evpn_es_vrf_show
    - aspath_unintern
    - strnlen
    - bgp_evpn_es_cons_checks_timer_start
    - bgp_evpn_es_frag_evi_add
    - bgp_evpn_path_es_info_new
    - vty_out
    - bgp_table_init
    - strlcpy
    - bgp_evpn_es_frag_evi_del
    - json_object_int_add
    - bgp_evpn_es_evi_show_one_vni
    - bgp_evpn_ead_es_route_delete
    - XFREE
    - bgp_evpn_type4_route_update
    - bgp_evpn_local_type1_evi_route_add
    - bf_assign_index
    - bgp_evpn_es_json_frag_fill
    - bgp_evpn_es_cons_checks_pend_add
    - bgp_evpn_es_evi_vtep_find
    - json_object_array_add
    - bgp_evpn_es_evi_find
    - QOBJ_UNREG
    - ecommunity_match
    - bgp_evpn_vni_es_cleanup
    - SET_FLAG
    - bgp_evpn_l3nhg_zebra_del_v4_or_v6
    - encode_esi_label_extcomm
    - bgp_update
    - bgp_evpn_es_path_update_on_es_vrf_chg
    - update_type1_routes_for_evi
    - bgp_evpn_es_vrf_ref
    - list_delete
    - bgp_attr_unintern
    - bgp_evpn_es_vtep_free
    - esi_to_str
    - BGP_RD_AS_FORMAT
    - listnode_add
    - evpn_route_select_install
    - bgp_evpn_es_evi_new
    - stream_put_ipv4
    - bgp_evpn_is_valid_bgp_path
    - json_object_string_addf
    - bgp_evpn_es_get_active_vtep_cnt
    - bgp_evpn_es_json_vtep_fill
    - bgp_evpn_mh_config_ead_export_rt
    - bgp_path_info_extra_get
    - vni2label
    - bgp_evpn_ead_evi_route_update
    - bgp_evpn_local_type1_evi_route_del
    - ALL_LIST_ELEMENTS_RO
    - RB_INIT
    - bgp_evpn_es_vtep_add
    - bgp_evpn_es_vteps_show_detail
    - bgp_evpn_type4_remote_routes_import
    - bgp_evpn_es_show_entry_detail
    - bgp_evpn_mh_route_delete
    - hash_iterate
    - ntohl
    - attr_tmp
    - build_evpn_type4_prefix
    - bgp_evpn_mh_route_update
    - listnode_add_after
    - bgp_evpn_attr_get_esi
    - bgp_evpn_es_evi_vtep_new
    - bgp_evpn_is_valid_local_path
    - bgp_evpn_es_local_info_set
    - bgp_evpn_path_mh_info_free
    - UNSET_FLAG
    - bgp_evpn_mac_update_on_es_local_chg
    - bgp_process
    - bgp_evpn_es_vrf_delete
    - bgp_evpn_es_remote_info_re_eval
    - bgp_evpn_remote_es_evi_flush
    - bgp_evpn_es_frag_free_all
    - bgp_evpn_route_entry_install_if_vrf_match
    - CHECK_FLAG
    - bgp_evpn_es_evi_show
    - bgp_evpn_es_local_info_clear
    - stream_get_endp
    - bgp_evpn_mac_update_on_es_oper_chg
    - bgp_evpn_is_macip_path
    - bgp_evpn_type4_route_delete
    - bgp_evpn_l3nhg_activate
    - bgp_evpn_is_es_local_and_non_bypass
    - bgp_evpn_es_vrf_deref
    - ref_cnt
    - RB_FOREACH_SAFE
    - bgp_evpn_es_frag_show_detail
    - listtail_unchecked
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_type1_es_route_extcomm_build(struct bgp_evpn_es_frag
      *es_frag,\n\t\t\t\t      struct attr *attr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1611,1
    - Dst: bgp_evpn_path_es_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1613,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1617,1
    - Dst: bgp_evpn_path_es_info_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1623,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1626,1
    - Dst: bgp_evpn_es_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1628,1
    - Dst: bgp_evpn_path_es_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1635,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1637,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1638,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1643,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1645,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1647,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 3
    argNames:
    - pi
    - vni
    - esi
    argTypes:
    - struct bgp_path_info*
    - vni_t
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1648
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1648
    functionName: bgp_evpn_path_es_link
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - bgp_evpn_es_new
    - bgp_evpn_path_es_info_new
    - bgp_get_evpn
    - bgp_evpn_es_find
    - memcmp
    - listnode_add
    - zlog_debug
    - BGP_DEBUG
    - bgp_evpn_path_es_unlink
    - listnode_init
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_path_es_link(struct bgp_path_info *pi, vni_t vni, esi_t
      *esi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1659,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1650
    functionDepth: 1
    functionLinenumber: 1650
    functionLinenumberEnd: 1660
    functionName: bgp_evpn_is_macip_path
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - is_evpn_prefix_ipaddr_v6
    - is_evpn_prefix_ipaddr_v4
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_is_macip_path(struct bgp_path_info *pi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1681,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1682,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1685,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1688,1
    - Dst: bgp_evpn_is_macip_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1688,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1691,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1691,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1692,1
    - Dst: bgp_evpn_route_entry_install_if_vrf_match
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1695,1
    - Dst: bgp_evpn_es_frag_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1700,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1707,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1708,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1709,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1712,1
    - Dst: bf_release_index
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1714,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1717,1
    - Dst: bgp_evpn_es_frag_free_unused
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1720,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1723,1
    - Dst: bgp_evpn_es_frag_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1726,1
    - Dst: bgp_evpn_es_frag_free_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1729,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1735,1
    - Dst: bgp_evpn_es_frag_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1736,1
    - Dst: bgp_evpn_es_frag_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1739,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1745,1
    - Dst: bf_assign_index
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1746,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1749,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1750,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1752,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1755,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1756,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1760,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1761,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1763,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1764,1
    - Dst: bgp_evpn_es_find_frag_with_space
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1769,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1774,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1775,1
    - Dst: bgp_evpn_es_frag_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1781,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1790,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1791,1
    - Dst: bgp_evpn_es_find_frag_with_space
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1794,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1797,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1798,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1800,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1800,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1801,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1819,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1819,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1820,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1823,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1829,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1829,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1830,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1832,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1832,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1833,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1835,1
    - Dst: bgp_evpn_mh_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1838,1
    - Dst: bgp_evpn_es_frag_free_unused
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1844,1
    - Dst: bgp_evpn_es_frag_evi_update_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1848,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1853,1
    - Dst: bgp_evpn_es_frag_evi_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1855,1
    - Dst: bgp_evpn_es_frag_evi_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1857,1
    - Dst: bgp_es_rb_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1862,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1865,1
    - Dst: RB_GENERATE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1867,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1869,1
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1874,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1884,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1887,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1888,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1891,1
    - Dst: bgp_table_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1894,1
    - Dst: RB_INSERT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1897,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1900,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1901,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1904,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1905,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1908,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1909,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1910,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1911,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1912,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1913,1
    - Dst: QOBJ_REG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1915,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - es_vrf
    - reason
    argTypes:
    - struct bgp_evpn_es_vrf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1669
    functionDepth: 4
    functionLinenumber: 1669
    functionLinenumberEnd: 1918
    functionName: bgp_evpn_es_path_update_on_es_vrf_chg
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - list_delete
    - bgp_es_rb_cmp
    - RB_FIND
    - esi_to_str
    - listnode_add
    - bgp_evpn_es_find_frag_with_space
    - memcmp
    - bgp_evpn_es_frag_evi_update_all
    - bgp_evpn_es_frag_free_unused
    - bgp_evpn_es_frag_new
    - BGP_DEBUG
    - listnode_init
    - XCALLOC
    - bgp_get_evpn
    - ALL_LIST_ELEMENTS_RO
    - QOBJ_REG
    - build_evpn_type1_prefix
    - RB_INSERT
    - zlog_debug
    - bgp_evpn_mh_route_delete
    - if
    - bgp_evpn_es_frag_free
    - bf_release_index
    - RB_GENERATE
    - bgp_evpn_es_frag_evi_add
    - bgp_table_init
    - listcount
    - bgp_evpn_es_frag_evi_del
    - bgp_evpn_es_find
    - list_delete_node
    - listset_app_node_mem
    - XFREE
    - bf_assign_index
    - bgp_evpn_es_frag_free_all
    - memcpy
    - str2prefix_rd
    - bgp_evpn_route_entry_install_if_vrf_match
    - CHECK_FLAG
    - snprintfrr
    - bgp_evpn_is_macip_path
    - list_new
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_path_update_on_es_vrf_chg(struct bgp_evpn_es_vrf
      *es_vrf,\n\t\t\t\t      const char *reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1927,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1928,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1931,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1932,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1935,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1936,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1937,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1938,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1939,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1940,1
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1941,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1944,1
    - Dst: bgp_evpn_es_cons_checks_pend_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1945,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1947,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1948,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - es
    - caller
    argTypes:
    - struct bgp_evpn_es*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1924
    functionDepth: 1
    functionLinenumber: 1924
    functionLinenumberEnd: 1949
    functionName: bgp_evpn_es_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - list_delete
    - RB_REMOVE
    - QOBJ_UNREG
    - listcount
    - zlog_debug
    - bgp_evpn_es_cons_checks_pend_del
    - XFREE
    - BGP_DEBUG
    - bgp_table_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_free(struct bgp_evpn_es *es, const char *caller)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1955
      start: 1951
    functionDepth: 0
    functionLinenumber: 1951
    functionLinenumberEnd: 1955
    functionName: bgp_evpn_is_es_local_and_non_bypass
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_is_es_local_and_non_bypass(struct bgp_evpn_es *es)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1963,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1966,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1967,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1969,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1970,1
    - Dst: bgp_evpn_es_frag_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1975,1
    - Dst: bgp_evpn_es_frag_evi_update_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1977,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1979,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1981,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - bgp
    - es
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1958
    functionDepth: 1
    functionLinenumber: 1958
    functionLinenumberEnd: 1982
    functionName: bgp_evpn_es_local_info_set
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - listnode_add
    - SET_FLAG
    - bgp_evpn_is_es_local_and_non_bypass
    - bgp_evpn_es_frag_evi_update_all
    - bgp_evpn_mac_update_on_es_local_chg
    - bgp_evpn_es_frag_new
    - listnode_init
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_local_info_set(struct bgp *bgp, struct bgp_evpn_es
      *es)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1990,1
    - Dst: bgp_evpn_es_frag_evi_update_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1994,1
    - Dst: bgp_evpn_es_frag_free_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1996,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1998,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:1999,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2001,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2003,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2006,1
    - Dst: bgp_evpn_es_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2008,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - es
    - finish
    argTypes:
    - struct bgp_evpn_es*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1985
    functionDepth: 2
    functionLinenumber: 1985
    functionLinenumberEnd: 2009
    functionName: bgp_evpn_es_local_info_clear
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - bgp_evpn_es_free
    - list_delete_node
    - bgp_evpn_es_frag_evi_update_all
    - bgp_evpn_is_es_local_and_non_bypass
    - UNSET_FLAG
    - bgp_evpn_mac_update_on_es_local_chg
    - bgp_evpn_es_frag_free_all
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_local_info_clear(struct bgp_evpn_es *es, bool finish)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2015,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2017,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2018,1
    - Dst: bgp_evpn_es_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2019,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2012
    functionDepth: 2
    functionLinenumber: 2012
    functionLinenumberEnd: 2022
    functionName: bgp_evpn_es_remote_info_re_eval
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_free
    - SET_FLAG
    - UNSET_FLAG
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_remote_info_re_eval(struct bgp_evpn_es *es)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2034,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2037,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - esi
    argTypes:
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2038
    functionName: bgp_evpn_es_add_l3_ecomm_ok
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_find
    - bgp_evpn_local_es_is_active
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_es_add_l3_ecomm_ok(esi_t *esi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2042,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2045
      start: 2040
    functionDepth: 1
    functionLinenumber: 2040
    functionLinenumberEnd: 2045
    functionName: bgp_evpn_is_valid_local_path
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_is_valid_local_path(struct bgp_path_info *pi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2062,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2063,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2066,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2067,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2070,1
    - Dst: bgp_evpn_is_valid_local_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2070,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2073,1
    - Dst: bgp_evpn_is_macip_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2073,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2076,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2080,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2081,1
    - Dst: bgp_evpn_update_type2_route_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2085,1
    - Dst: bgp_evpn_is_valid_bgp_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2090,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2092,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2101,1
    - Dst: attr_tmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2109,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2111,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2112,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2115,1
    - Dst: bgp_evpn_is_valid_bgp_path
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2119,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2129,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2130,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2140,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2141,1
    - Dst: bgp_evpn_import_type2_route
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2143,1
    - Dst: bgp_evpn_local_es_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2147,1
    - Dst: build_evpn_type4_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2155,1
    - Dst: bgp_evpn_type4_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2156,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2158,1
    - Dst: bgp_evpn_local_type1_evi_route_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2165,1
    - Dst: bgp_evpn_ead_es_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2168,1
    - Dst: bgp_evpn_mac_update_on_es_oper_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2170,1
    - Dst: bgp_evpn_local_es_down
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2174,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2178,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2181,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2182,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2184,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2185,1
    - Dst: bgp_evpn_local_es_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2188,1
    - Dst: bgp_evpn_local_es_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2191,1
    - Dst: prefix_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2194,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2197,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2198,1
    - Dst: build_evpn_type4_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2200,1
    - Dst: bgp_evpn_type4_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2201,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2202,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2208,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2209,1
    - Dst: bgp_evpn_local_type1_evi_route_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2211,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2214,1
    - Dst: bgp_evpn_mac_update_on_es_oper_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2217,1
    - Dst: bgp_evpn_local_es_up
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2227,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2228,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2229,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2231,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2236,1
    - Dst: bgp_evpn_local_es_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2238,1
    - Dst: bgp_evpn_local_es_bypass_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2246,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2258,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2259,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2261,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2263,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2265,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2266,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2269,1
    - Dst: bgp_evpn_local_es_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2272,1
    - Dst: bgp_evpn_local_es_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2274,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2277,1
    - Dst: bgp_evpn_mac_update_on_es_local_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2279,1
    - Dst: bgp_evpn_local_es_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2282,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2288,1
    - Dst: bgp_evpn_es_route_del_all
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2293,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2296,1
    - Dst: bgp_evpn_local_es_evi_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2298,1
    - Dst: bgp_evpn_es_local_info_clear
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2304,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2051
    functionDepth: 13
    functionLinenumber: 2051
    functionLinenumberEnd: 2305
    functionName: bgp_evpn_mac_update_on_es_oper_chg
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS
    - bgp_attr_unintern
    - bgp_evpn_es_route_del_all
    - bgp_evpn_local_es_activate
    - bgp_evpn_import_type2_route
    - flog_err
    - bgp_evpn_is_valid_bgp_path
    - bgp_evpn_ead_es_route_update
    - BGP_DEBUG
    - bgp_attr_intern
    - bgp_evpn_update_type2_route_entry
    - bgp_evpn_local_es_deactivate
    - bgp_get_evpn
    - bgp_evpn_local_type1_evi_route_del
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - if
    - build_evpn_type4_prefix
    - attr_tmp
    - bgp_evpn_is_valid_local_path
    - bgp_evpn_mac_update_on_es_local_chg
    - UNSET_FLAG
    - bgp_evpn_ead_es_route_delete
    - bgp_evpn_type4_route_update
    - bgp_evpn_local_type1_evi_route_add
    - bgp_evpn_local_es_bypass_update
    - bgp_evpn_local_es_is_active
    - bgp_evpn_local_es_do_del
    - bgp_evpn_local_es_evi_do_del
    - bgp_evpn_local_es_down
    - CHECK_FLAG
    - bgp_evpn_es_local_info_clear
    - bgp_evpn_mac_update_on_es_oper_chg
    - bgp_evpn_is_macip_path
    - bgp_evpn_type4_route_delete
    - SET_FLAG
    - bgp_evpn_is_es_local_and_non_bypass
    - bgp_evpn_local_es_up
    - bgp_evpn_lookup_vni
    - prefix_evpn
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_mac_update_on_es_oper_chg(struct bgp_evpn_es *es)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2312,1
    - Dst: bgp_evpn_is_es_local_and_non_bypass
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - esi
    argTypes:
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2315
      start: 2307
    functionDepth: 1
    functionLinenumber: 2307
    functionLinenumberEnd: 2315
    functionName: bgp_evpn_is_esi_local_and_non_bypass
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_is_es_local_and_non_bypass
    - bgp_evpn_es_find
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_is_esi_local_and_non_bypass(esi_t *esi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2322,1
    - Dst: flog_warn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2324,1
    - Dst: bgp_evpn_local_es_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - bgp
    - esi
    argTypes:
    - struct bgp*
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2331
      start: 2317
    functionDepth: 1
    functionLinenumber: 2317
    functionLinenumberEnd: 2331
    functionName: bgp_evpn_local_es_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_local_es_do_del
    - bgp_evpn_es_find
    - flog_warn
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_local_es_del(struct bgp *bgp, esi_t *esi)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2347,1
    - Dst: bgp_evpn_es_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2350,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2352,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2353,1
    - Dst: bgp_evpn_es_local_info_set
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2362,1
    - Dst: bgp_evpn_type4_remote_routes_import
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2366,1
    - Dst: bgp_evpn_local_type1_evi_route_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2374,1
    - Dst: bgp_evpn_local_es_bypass_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2376,1
    - Dst: bgp_evpn_local_es_up
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2382,1
    - Dst: bgp_evpn_local_es_down
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2384,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 6
    argNames:
    - bgp
    - esi
    - originator_ip
    - oper_up
    - df_pref
    - bypass
    argTypes:
    - struct bgp*
    - esi_t*
    - struct in_addr
    - bool
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2336
    functionDepth: 9
    functionLinenumber: 2336
    functionLinenumberEnd: 2387
    functionName: bgp_evpn_local_es_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_new
    - bgp_evpn_local_es_down
    - CHECK_FLAG
    - bgp_evpn_es_find
    - bgp_evpn_es_local_info_set
    - zlog_debug
    - bgp_evpn_type4_remote_routes_import
    - bgp_evpn_local_es_up
    - BGP_DEBUG
    - bgp_evpn_local_type1_evi_route_add
    - bgp_evpn_local_es_bypass_update
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_local_es_add(struct bgp *bgp, esi_t *esi,\n\t\t\t  struct
      in_addr originator_ip, bool oper_up,\n\t\t\t  uint16_t df_pref, bool bypass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2396,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2397,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2399,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2401,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2402,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2404,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2414,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2414,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2415,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2416,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2430,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2430,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2433,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2434,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2435,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2436,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2438,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2439,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2443,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2444,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2445,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2448,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2449,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2450,1
    - Dst: bgp_evpn_es_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2456,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2463,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2465,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2469,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2471,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2473,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2474,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2476,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2478,1
    - Dst: evpn_es_df_alg2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2480,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2485,1
    - Dst: bgp_evpn_es_vteps_show_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2489,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2497,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2500,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2502,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2504,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2505,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2507,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2511,1
    - Dst: evpn_es_df_alg2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2512,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2516,1
    - Dst: bgp_evpn_es_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2520,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2530,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2532,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2536,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2538,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2540,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2541,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2544,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2545,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2546,1
    - Dst: bgp_evpn_es_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2548,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2550,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2552,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2553,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2560,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2562,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2564,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2566,1
    - Dst: bgp_evpn_es_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2568,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2570,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2573,1
    - Dst: bgp_evpn_es_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2577,1
    - Dst: bgp_evpn_es_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2589,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2593,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2597,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2600,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2601,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - json_frags
    - es
    argTypes:
    - json_object*
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2602
      start: 2389
    functionDepth: 1
    functionLinenumber: 2389
    functionLinenumberEnd: 2602
    functionName: bgp_evpn_es_json_frag_fill
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - strlen
    - bgp_evpn_es_vteps_str
    - json_object_string_add
    - json_object_string_addf
    - bgp_evpn_es_json_vtep_fill
    - strlcat
    - ALL_LIST_ELEMENTS_RO
    - evpn_es_df_alg2str
    - bgp_evpn_es_vteps_show_detail
    - inet_ntop
    - bgp_evpn_es_show_entry_detail
    - json_array_string_add
    - if
    - for
    - bgp_evpn_es_show_entry
    - vty_out
    - listcount
    - json_object_int_add
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_json_frag_fill(json_object *json_frags,\n\t\t\t\t
      \      struct bgp_evpn_es *es)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2700,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2703,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2705,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2707,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2713,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2716,1
    - Dst: bgp_evpn_es_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2718,1
    - Dst: bgp_evpn_es_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2720,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2723,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2728,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - vty
    - uj
    - detail
    argTypes:
    - struct vty*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2729
      start: 2692
    functionDepth: 1
    functionLinenumber: 2692
    functionLinenumberEnd: 2729
    functionName: bgp_evpn_es_show
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - vty_out
    - json_object_array_add
    - bgp_evpn_es_show_entry_detail
    - bgp_evpn_es_show_entry
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_show(struct vty *vty, bool uj, bool detail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2738,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2740,1
    - Dst: bgp_evpn_es_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2742,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2745,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2749,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - esi
    - uj
    argTypes:
    - struct vty*
    - esi_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2750
      start: 2732
    functionDepth: 1
    functionLinenumber: 2732
    functionLinenumberEnd: 2750
    functionName: bgp_evpn_es_show_esi
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - bgp_evpn_es_find
    - bgp_evpn_es_show_entry_detail
    - vty_json
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_show_esi(struct vty *vty, esi_t *esi, bool uj)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2787,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2788,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2792,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2797,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2806,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2807,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2811,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2815,1
    - Dst: ipv4_to_ipv4_mapped_ipv6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2818,1
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2823,1
    - Dst: struct zapi_nhg::nexthop_num
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2825,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2826,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2827,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2831,1
    - Dst: zclient_nhg_send
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2837,1
    - Dst: bgp_evpn_l3nhg_zebra_ok
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2840,1
    - Dst: bgp_evpn_l3nhg_zebra_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2852,1
    - Dst: bgp_evpn_l3nhg_zebra_ok
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2854,1
    - Dst: bgp_evpn_l3nhg_zebra_add_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2857,1
    - Dst: bgp_evpn_l3nhg_zebra_add_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2858,1
    - Dst: bgp_evpn_l3nhg_zebra_del_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2861,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2872,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2873,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2878,1
    - Dst: zclient_nhg_send
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2881,1
    - Dst: bgp_evpn_l3nhg_zebra_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2884,1
    - Dst: bgp_evpn_l3nhg_zebra_ok
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2886,1
    - Dst: bgp_evpn_l3nhg_zebra_del_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2889,1
    - Dst: bgp_evpn_l3nhg_zebra_del_v4_or_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2890,1
    - Dst: bgp_evpn_l3nhg_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2893,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2898,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2899,1
    - Dst: bgp_evpn_l3nhg_zebra_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2902,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2905,1
    - Dst: bgp_evpn_l3nhg_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2908,1
    - Dst: bgp_evpn_es_get_active_vtep_cnt
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2910,1
    - Dst: bgp_evpn_l3nhg_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2911,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2919,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2920,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2925,1
    - Dst: bgp_evpn_l3nhg_zebra_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2928,1
    - Dst: bgp_evpn_l3nhg_update_on_vtep_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2934,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2939,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2940,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2942,1
    - Dst: bgp_evpn_l3nhg_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2943,1
    - Dst: bgp_es_vrf_rb_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2947,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2950,1
    - Dst: RB_GENERATE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2952,1
    - Dst: bgp_evpn_vrf_es_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2955,1
    - Dst: RB_INIT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2958,1
    - Dst: bgp_evpn_es_vrf_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2962,1
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2969,1
    - Dst: bgp_evpn_es_vrf_create
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2973,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2978,1
    - Dst: RB_INSERT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2984,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2987,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2988,1
    - Dst: bgp_l3nhg_id_alloc
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2991,1
    - Dst: bgp_l3nhg_id_alloc
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2992,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2994,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2995,1
    - Dst: bgp_evpn_l3nhg_activate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:2997,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3002,1
    - Dst: bgp_evpn_es_vrf_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3008,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3013,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3014,1
    - Dst: bgp_evpn_l3nhg_deactivate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3018,1
    - Dst: bgp_l3nhg_id_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3020,1
    - Dst: bgp_l3nhg_id_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3023,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3027,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3030,1
    - Dst: bgp_evpn_es_path_update_on_es_vrf_chg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3035,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3037,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3041,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3048,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3049,1
    - Dst: struct bgp_evpn_es_vrf*::ref_cnt
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3055,1
    - Dst: bgp_evpn_es_vrf_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3058,1
    - Dst: bgp_evpn_es_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3062,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3075,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3080,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3081,1
    - Dst: bgp_evpn_es_vrf_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3085,1
    - Dst: bgp_evpn_es_vrf_create
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3087,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3100,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3101,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3103,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3104,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3110,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3111,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3113,1
    - Dst: bgp_evpn_es_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3114,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3135,1
    - Dst: bgp_evpn_es_vrf_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3139,1
    - Dst: get_route_parent_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3169,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3182,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3183,1
    - Dst: bgp_evpn_mpath_has_dvni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3187,1
    - Dst: bgp_evpn_es_vrf_use_nhg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3190,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3204,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3209,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3210,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3215,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3215,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3233,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3234,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3237,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3239,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3240,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3243,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3244,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3245,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3251,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3253,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3266,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3269,1
    - Dst: bgp_evpn_es_vrf_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3270,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3273,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3284,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3287,1
    - Dst: bgp_evpn_es_vrf_show_es
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3292,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3294,1
    - Dst: bgp_evpn_es_vrf_show_es
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3295,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3300,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3308,1
    - Dst: bgp_evpn_es_vrf_show
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3310,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3313,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3346,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3350,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3351,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3364,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3365,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3375,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 134
    argCount: 2
    argNames:
    - es_vrf
    - v4_nhg
    argTypes:
    - struct bgp_evpn_es_vrf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3380
      start: 2772
    functionDepth: 5
    functionLinenumber: 2772
    functionLinenumberEnd: 3380
    functionName: bgp_evpn_l3nhg_zebra_add_v4_or_v6
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - vty_json
    - bgp_evpn_l3nhg_update_on_vtep_chg
    - bgp_evpn_es_vrf_show_entry
    - RB_FIND
    - memcmp
    - bgp_evpn_es_vrf_create
    - listnode_add
    - json_object_string_add
    - frrtrace
    - bgp_evpn_l3nhg_deactivate
    - bgp_evpn_l3nhg_zebra_add_v4_or_v6
    - BGP_DEBUG
    - bgp_evpn_mpath_has_dvni
    - bgp_evpn_es_get_active_vtep_cnt
    - listnode_init
    - bgp_l3nhg_id_alloc
    - strlcat
    - memset
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zclient_nhg_send
    - bgp_evpn_l3nhg_zebra_ok
    - RB_INIT
    - RB_INSERT
    - struct bgp_evpn_es_vrf*::ref_cnt
    - RB_FOREACH
    - bgp_path_info_mpath_next
    - zlog_debug
    - json_array_string_add
    - if
    - bgp_evpn_l3nhg_zebra_del
    - zapi_nexthop_from_nexthop
    - bgp_evpn_es_vrf_show_es
    - bgp_evpn_es_vrf_show
    - RB_GENERATE
    - bgp_evpn_es_vrf_use_nhg
    - vty_out
    - listnode_add_sort
    - bgp_evpn_attr_get_esi
    - bgp_evpn_es_find
    - bgp_evpn_vrf_es_init
    - json_object_int_add
    - list_delete_node
    - XFREE
    - is_evpn_prefix_ipaddr_v6
    - bgp_evpn_es_vrf_delete
    - ipv4_to_ipv4_mapped_ipv6
    - struct zapi_nhg::nexthop_num
    - json_object_new_array
    - json_object_new_object
    - bgp_evpn_l3nhg_zebra_add
    - get_route_parent_evpn
    - json_object_array_add
    - RB_REMOVE
    - bgp_l3nhg_id_free
    - CHECK_FLAG
    - bgp_evpn_es_vrf_find
    - bgp_evpn_l3nhg_activate
    - bgp_evpn_es_vrf_deref
    - bgp_evpn_l3nhg_zebra_del_v4_or_v6
    - bgp_es_vrf_rb_cmp
    - json_object_object_add
    - bgp_evpn_es_path_update_on_es_vrf_chg
    - bgp_evpn_es_vrf_ref
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_l3nhg_zebra_add_v4_or_v6(struct bgp_evpn_es_vrf *es_vrf,\n\t\t\t\t\t
      \     bool v4_nhg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3110,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3111,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3113,1
    - Dst: bgp_evpn_es_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vpn
    argTypes:
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3115
      start: 3106
    functionDepth: 1
    functionLinenumber: 3106
    functionLinenumberEnd: 3115
    functionName: bgp_evpn_es_evi_vrf_ref
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - BGP_DEBUG
    - zlog_debug
    - RB_FOREACH
    - bgp_evpn_es_vrf_ref
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_evi_vrf_ref(struct bgpevpn *vpn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3135,1
    - Dst: bgp_evpn_es_vrf_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - bgp_vrf
    - esi
    - use_l3nhg
    - is_l3nhg_active
    - es_vrf_p
    argTypes:
    - struct bgp*
    - esi_t*
    - bool*
    - bool*
    - struct bgp_evpn_es_vrf**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3148
      start: 3125
    functionDepth: 0
    functionLinenumber: 3125
    functionLinenumberEnd: 3148
    functionName: bgp_evpn_es_vrf_use_nhg
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 3
    functionsReached:
    - bgp_evpn_es_vrf_find
    - bgp_evpn_es_find
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_vrf_use_nhg(struct bgp *bgp_vrf, esi_t *esi, bool
      *use_l3nhg,\n\t\t\t     bool *is_l3nhg_active,\n\t\t\t     struct bgp_evpn_es_vrf
      **es_vrf_p)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: get_route_parent_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3169,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3182,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3183,1
    - Dst: bgp_evpn_mpath_has_dvni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3187,1
    - Dst: bgp_evpn_es_vrf_use_nhg
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3190,1
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3204,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3209,1
    - Dst: bgp_path_info_mpath_next
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3210,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3215,1
    - Dst: bgp_evpn_attr_get_esi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3215,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 3
    argNames:
    - bgp_vrf
    - pi
    - nhg_p
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3221
      start: 3151
    functionDepth: 2
    functionLinenumber: 3151
    functionLinenumberEnd: 3221
    functionName: bgp_evpn_path_es_use_nhg
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_vrf_use_nhg
    - get_route_parent_evpn
    - bgp_evpn_attr_get_esi
    - memcmp
    - bgp_path_info_mpath_next
    - is_evpn_prefix_ipaddr_v6
    - bgp_evpn_mpath_has_dvni
    linkageType: ''
    returnType: bool
    signature: "bool bgp_evpn_path_es_use_nhg(struct bgp *bgp_vrf, struct bgp_path_info
      *pi,\n\t\t\t      uint32_t *nhg_p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3233,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3234,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3237,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3239,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3240,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3243,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3244,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3245,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3251,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3253,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - vty
    - es_vrf
    - json
    argTypes:
    - struct vty*
    - struct bgp_evpn_es_vrf*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3257
      start: 3223
    functionDepth: 1
    functionLinenumber: 3223
    functionLinenumberEnd: 3257
    functionName: bgp_evpn_es_vrf_show_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - json_object_new_array
    - strlcat
    - vty_out
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_array_string_add
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_vrf_show_entry(struct vty *vty,\n\t\t\t\t       struct
      bgp_evpn_es_vrf *es_vrf,\n\t\t\t\t       json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3266,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3269,1
    - Dst: bgp_evpn_es_vrf_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3270,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - json_array
    - es
    argTypes:
    - struct vty*
    - json_object*
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3275
      start: 3259
    functionDepth: 2
    functionLinenumber: 3259
    functionLinenumberEnd: 3275
    functionName: bgp_evpn_es_vrf_show_es
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - json_object_new_object
    - ALL_LIST_ELEMENTS_RO
    - json_object_array_add
    - bgp_evpn_es_vrf_show_entry
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_vrf_show_es(struct vty *vty, json_object *json_array,\n\t\t\t\t
      \   struct bgp_evpn_es *es)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3284,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3286,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3287,1
    - Dst: bgp_evpn_es_vrf_show_es
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3292,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3294,1
    - Dst: bgp_evpn_es_vrf_show_es
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3295,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - vty
    - uj
    - es
    argTypes:
    - struct vty*
    - bool
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3301
      start: 3278
    functionDepth: 3
    functionLinenumber: 3278
    functionLinenumberEnd: 3301
    functionName: bgp_evpn_es_vrf_show
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - json_object_new_array
    - bgp_evpn_es_vrf_show_es
    - vty_out
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_vrf_show(struct vty *vty, bool uj, struct bgp_evpn_es
      *es)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3308,1
    - Dst: bgp_evpn_es_vrf_show
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3310,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - esi
    - uj
    argTypes:
    - struct vty*
    - esi_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3315
      start: 3304
    functionDepth: 4
    functionLinenumber: 3304
    functionLinenumberEnd: 3315
    functionName: bgp_evpn_es_vrf_show_esi
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_es_vrf_show
    - bgp_evpn_es_find
    - vty_out
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_vrf_show_esi(struct vty *vty, esi_t *esi, bool uj)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3339
      start: 3333
    functionDepth: 0
    functionLinenumber: 3333
    functionLinenumberEnd: 3339
    functionName: bgp_evpn_es_evi_vtep_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_es_evi_vtep_cmp(void *p1, void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3346,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3350,1
    - Dst: listnode_add_sort
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - es_evi
    - vtep_ip
    argTypes:
    - struct bgp_evpn_es_evi*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3354
      start: 3341
    functionDepth: 1
    functionLinenumber: 3341
    functionLinenumberEnd: 3354
    functionName: bgp_evpn_es_evi_vtep_new
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - listnode_init
    - listnode_add_sort
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_evpn_es_evi_vtep
    signature: "struct bgp_evpn_es_evi_vtep *bgp_evpn_es_evi_vtep_new(\n\t\tstruct
      bgp_evpn_es_evi *es_evi, struct in_addr vtep_ip)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3364,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - evi_vtep
    argTypes:
    - struct bgp_evpn_es_evi_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3366
      start: 3356
    functionDepth: 1
    functionLinenumber: 3356
    functionLinenumberEnd: 3366
    functionName: bgp_evpn_es_evi_vtep_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - list_delete_node
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_evi_vtep_free(struct bgp_evpn_es_evi_vtep *evi_vtep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - es_evi
    - vtep_ip
    argTypes:
    - struct bgp_evpn_es_evi*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3378
      start: 3369
    functionDepth: 0
    functionLinenumber: 3369
    functionLinenumberEnd: 3378
    functionName: bgp_evpn_es_evi_vtep_find
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: struct bgp_evpn_es_evi_vtep
    signature: "struct bgp_evpn_es_evi_vtep *bgp_evpn_es_evi_vtep_find(\n\t\tstruct
      bgp_evpn_es_evi *es_evi, struct in_addr vtep_ip)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3392,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3404,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3406,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3408,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3413,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3414,1
    - Dst: bgp_evpn_es_vtep_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3421,1
    - Dst: bgp_evpn_es_vtep_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3426,1
    - Dst: bgp_evpn_es_cons_checks_pend_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3432,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - bgp
    - evi_vtep
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es_evi_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3385
    functionDepth: 1
    functionLinenumber: 3385
    functionLinenumberEnd: 3433
    functionName: bgp_evpn_es_evi_vtep_re_eval_active
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_cons_checks_pend_add
    - CHECK_FLAG
    - bgp_evpn_es_vtep_do_del
    - bgp_evpn_es_vtep_add
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_evi_vtep_re_eval_active(struct bgp *bgp,\n\t\tstruct
      bgp_evpn_es_evi_vtep *evi_vtep)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_evi_vtep_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3441,1
    - Dst: bgp_evpn_es_evi_vtep_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3444,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3446,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3447,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3453,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3455,1
    - Dst: bgp_evpn_es_evi_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - bgp
    - es_evi
    - vtep_ip
    - ead_es
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es_evi*
    - struct in_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3458
      start: 3435
    functionDepth: 2
    functionLinenumber: 3435
    functionLinenumberEnd: 3458
    functionName: bgp_evpn_es_evi_vtep_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_evi_vtep_find
    - bgp_evpn_es_evi_vtep_new
    - zlog_debug
    - SET_FLAG
    - BGP_DEBUG
    - bgp_evpn_es_evi_vtep_re_eval_active
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_evi_vtep_add(struct bgp *bgp,\n\t\tstruct bgp_evpn_es_evi
      *es_evi, struct in_addr vtep_ip,\n\t\tbool ead_es)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_evi_vtep_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3466,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3470,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3471,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3477,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3479,1
    - Dst: bgp_evpn_es_evi_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3481,1
    - Dst: bgp_evpn_es_evi_vtep_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3482,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - bgp
    - es_evi
    - vtep_ip
    - ead_es
    argTypes:
    - struct bgp*
    - struct bgp_evpn_es_evi*
    - struct in_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3483
      start: 3460
    functionDepth: 2
    functionLinenumber: 3460
    functionLinenumberEnd: 3483
    functionName: bgp_evpn_es_evi_vtep_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_evi_vtep_find
    - zlog_debug
    - UNSET_FLAG
    - bgp_evpn_es_evi_vtep_free
    - BGP_DEBUG
    - bgp_evpn_es_evi_vtep_re_eval_active
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_es_evi_vtep_del(struct bgp *bgp,\n\t\tstruct bgp_evpn_es_evi
      *es_evi, struct in_addr vtep_ip,\n\t\tbool ead_es)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - es_evi1
    - es_evi2
    argTypes:
    - struct bgp_evpn_es_evi*
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3490
      start: 3486
    functionDepth: 0
    functionLinenumber: 3486
    functionLinenumberEnd: 3490
    functionName: bgp_es_evi_rb_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int bgp_es_evi_rb_cmp(const struct bgp_evpn_es_evi *es_evi1,\n\t\tconst
      struct bgp_evpn_es_evi *es_evi2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - es
    - vpn
    argTypes:
    - struct bgp_evpn_es*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3502
      start: 3494
    functionDepth: 1
    functionLinenumber: 3494
    functionLinenumberEnd: 3502
    functionName: bgp_evpn_es_evi_find
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct bgp_evpn_es_evi
    signature: "struct bgp_evpn_es_evi *bgp_evpn_es_evi_find(struct bgp_evpn_es *es,\n\t\tstruct
      bgpevpn *vpn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3512,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3518,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3519,1
    - Dst: RB_INSERT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3523,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3526,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3527,1
    - Dst: bgp_evpn_es_vrf_ref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - es
    - vpn
    argTypes:
    - struct bgp_evpn_es*
    - struct bgpevpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3532
      start: 3507
    functionDepth: 1
    functionLinenumber: 3507
    functionLinenumberEnd: 3532
    functionName: bgp_evpn_es_evi_new
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - RB_INSERT
    - listnode_add
    - list_new
    - listset_app_node_mem
    - listnode_init
    - bgp_evpn_es_vrf_ref
    linkageType: ''
    returnType: struct bgp_evpn_es_evi
    signature: "struct bgp_evpn_es_evi *bgp_evpn_es_evi_new(struct bgp_evpn_es *es,\n\t\tstruct
      bgpevpn *vpn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_frag_evi_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3548,1
    - Dst: bgp_evpn_es_vrf_deref
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3549,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3552,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3555,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3558,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3564
      start: 3537
    functionDepth: 1
    functionLinenumber: 3537
    functionLinenumberEnd: 3564
    functionName: bgp_evpn_es_evi_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - list_delete
    - RB_REMOVE
    - bgp_evpn_es_frag_evi_del
    - list_delete_node
    - bgp_evpn_es_vrf_deref
    - XFREE
    linkageType: ''
    returnType: struct bgp_evpn_es_evi
    signature: 'struct bgp_evpn_es_evi *

      bgp_evpn_es_evi_free(struct bgp_evpn_es_evi *es_evi)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3571,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3574,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3575,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3576,1
    - Dst: bgp_evpn_es_frag_evi_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3578
      start: 3567
    functionDepth: 1
    functionLinenumber: 3567
    functionLinenumberEnd: 3578
    functionName: bgp_evpn_es_evi_local_info_set
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_frag_evi_add
    - CHECK_FLAG
    - listnode_add
    - SET_FLAG
    - listnode_init
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_evi_local_info_set(struct bgp_evpn_es_evi *es_evi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3586,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3587,1
    - Dst: bgp_evpn_es_evi_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3590
      start: 3581
    functionDepth: 2
    functionLinenumber: 3581
    functionLinenumberEnd: 3590
    functionName: bgp_evpn_es_evi_local_info_clear
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - list_delete_node
    - UNSET_FLAG
    - bgp_evpn_es_evi_free
    linkageType: ''
    returnType: struct bgp_evpn_es_evi
    signature: 'struct bgp_evpn_es_evi *

      bgp_evpn_es_evi_local_info_clear(struct bgp_evpn_es_evi *es_evi)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3598,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3599,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3600,1
    - Dst: bgp_evpn_es_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3603,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3606,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3607,1
    - Dst: bgp_evpn_es_evi_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3610,1
    - Dst: bgp_evpn_es_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3614,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3617
      start: 3593
    functionDepth: 3
    functionLinenumber: 3593
    functionLinenumberEnd: 3617
    functionName: bgp_evpn_es_evi_remote_info_re_eval
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - listcount
    - CHECK_FLAG
    - SET_FLAG
    - UNSET_FLAG
    - bgp_evpn_es_remote_info_re_eval
    - bgp_evpn_es_evi_free
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_evi_remote_info_re_eval(struct bgp_evpn_es_evi *es_evi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3626,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3629,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3630,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3634,1
    - Dst: bgp_evpn_es_frag_evi_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3637,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3640,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3644,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3645,1
    - Dst: bgp_evpn_ead_evi_route_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3647,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3649,1
    - Dst: bgp_evpn_es_evi_local_info_clear
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3656,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3657
      start: 3619
    functionDepth: 3
    functionLinenumber: 3619
    functionLinenumberEnd: 3657
    functionName: bgp_evpn_local_es_evi_do_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - bgp_evpn_ead_evi_route_delete
    - bgp_get_evpn
    - CHECK_FLAG
    - bgp_evpn_es_frag_evi_del
    - build_evpn_type1_prefix
    - zlog_debug
    - flog_err
    - bgp_evpn_es_evi_local_info_clear
    - bgp_evpn_ead_es_route_update
    - BGP_DEBUG
    - bgp_evpn_local_es_is_active
    linkageType: ''
    returnType: struct bgp_evpn_es_evi
    signature: 'struct bgp_evpn_es_evi *

      bgp_evpn_local_es_evi_do_del(struct bgp_evpn_es_evi *es_evi)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3666,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3668,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3672,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3676,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3678,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3685,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3687,1
    - Dst: bgp_evpn_local_es_evi_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3694,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - bgp
    - esi
    - vni
    argTypes:
    - struct bgp*
    - esi_t*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3696
      start: 3659
    functionDepth: 4
    functionLinenumber: 3659
    functionLinenumberEnd: 3696
    functionName: bgp_evpn_local_es_evi_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_evi_find
    - bgp_evpn_local_es_evi_do_del
    - esi_to_str
    - bgp_evpn_es_find
    - flog_err
    - bgp_evpn_lookup_vni
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_local_es_evi_del(struct bgp *bgp, esi_t *esi, vni_t vni)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3707,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3709,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3713,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3717,1
    - Dst: flog_err
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3719,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3726,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3727,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3730,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3733,1
    - Dst: bgp_evpn_es_evi_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3737,1
    - Dst: bgp_evpn_es_evi_local_info_set
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3739,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3742,1
    - Dst: build_evpn_type1_prefix
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3743,1
    - Dst: bgp_evpn_ead_evi_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3745,1
    - Dst: bgp_evpn_local_es_is_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3749,1
    - Dst: bgp_evpn_ead_es_route_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3750,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - bgp
    - esi
    - vni
    argTypes:
    - struct bgp*
    - esi_t*
    - vni_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3753
      start: 3699
    functionDepth: 2
    functionLinenumber: 3699
    functionLinenumberEnd: 3753
    functionName: bgp_evpn_local_es_evi_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_evi_find
    - bgp_evpn_ead_evi_route_update
    - CHECK_FLAG
    - esi_to_str
    - bgp_evpn_es_find
    - bgp_evpn_es_evi_local_info_set
    - build_evpn_type1_prefix
    - flog_err
    - zlog_debug
    - bgp_evpn_es_evi_new
    - bgp_evpn_lookup_vni
    - bgp_evpn_ead_es_route_update
    - BGP_DEBUG
    - bgp_evpn_local_es_is_active
    linkageType: ''
    returnType: int
    signature: int bgp_evpn_local_es_evi_add(struct bgp *bgp, esi_t *esi, vni_t vni)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3771,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3772,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3774,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3777,1
    - Dst: bgp_evpn_es_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3779,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3781,1
    - Dst: bgp_evpn_es_evi_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3783,1
    - Dst: bgp_evpn_es_evi_vtep_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3786,1
    - Dst: bgp_evpn_es_evi_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3789,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - bgp
    - vpn
    - p
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3791
      start: 3758
    functionDepth: 4
    functionLinenumber: 3758
    functionLinenumberEnd: 3791
    functionName: bgp_evpn_remote_es_evi_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_evi_remote_info_re_eval
    - bgp_evpn_es_new
    - bgp_evpn_es_evi_find
    - bgp_evpn_es_find
    - esi_to_str
    - bgp_evpn_es_evi_vtep_add
    - zlog_debug
    - bgp_evpn_es_evi_new
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_remote_es_evi_add(struct bgp *bgp, struct bgpevpn *vpn,\n\t\tconst
      struct prefix_evpn *p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3808,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3809,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3812,1
    - Dst: bgp_evpn_es_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3815,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3817,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3818,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3822,1
    - Dst: bgp_evpn_es_evi_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3827,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3829,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3830,1
    - Dst: esi_to_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3834,1
    - Dst: bgp_evpn_es_evi_vtep_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3842,1
    - Dst: bgp_evpn_es_evi_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3844,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - bgp
    - vpn
    - p
    argTypes:
    - struct bgp*
    - struct bgpevpn*
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3846
      start: 3796
    functionDepth: 4
    functionLinenumber: 3796
    functionLinenumberEnd: 3846
    functionName: bgp_evpn_remote_es_evi_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_es_evi_remote_info_re_eval
    - bgp_evpn_es_evi_find
    - bgp_evpn_es_evi_vtep_del
    - bgp_evpn_es_find
    - esi_to_str
    - zlog_debug
    - BGP_DEBUG
    linkageType: ''
    returnType: int
    signature: "int bgp_evpn_remote_es_evi_del(struct bgp *bgp, struct bgpevpn *vpn,\n\t\tconst
      struct prefix_evpn *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3856,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3861,1
    - Dst: bgp_evpn_es_evi_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3865,1
    - Dst: bgp_evpn_es_evi_vtep_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3866,1
    - Dst: bgp_evpn_es_evi_remote_info_re_eval
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3869,1
    - Dst: bgp_evpn_vni_es_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3873,1
    - Dst: RB_INIT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3876,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3879,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3880,1
    - Dst: bgp_evpn_vni_es_cleanup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3884,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3889,1
    - Dst: bgp_evpn_local_es_evi_do_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3891,1
    - Dst: bgp_evpn_remote_es_evi_flush
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3893,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3896,1
    - Dst: bgp_evpn_es_evi_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3899,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3910,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3913,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3915,1
    - Dst: strnlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3917,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3918,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3922,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3923,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3924,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3927,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3928,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3929,1
    - Dst: bgp_evpn_es_evi_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3935,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3941,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3943,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3947,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3949,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3951,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3952,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3956,1
    - Dst: bgp_evpn_es_evi_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3960,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3970,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3972,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3976,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3978,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3980,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3981,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3984,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3985,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3986,1
    - Dst: bgp_evpn_es_evi_json_vtep_fill
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3988,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3991,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:3999,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4001,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4003,1
    - Dst: bgp_evpn_es_evi_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4005,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4007,1
    - Dst: bgp_evpn_es_evi_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4013,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4018,1
    - Dst: bgp_evpn_es_evi_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4024,1
    - Dst: json_object_string_addf
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4026,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4027,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4030,1
    - Dst: json_array_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4031,1
    - Dst: json_object_object_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4032,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4040,1
    - Dst: strlcat
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4042,1
    - Dst: bgp_evpn_es_evi_vteps_str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4044,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4045,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4046,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4048,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4050,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4052,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4053,1
    - Dst: BGP_RD_AS_FORMAT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4053,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4055,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4057,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4060,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4061,1
    - Dst: bgp_evpn_es_evi_show_one_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4065,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4071,1
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4074,1
    - Dst: bgp_evpn_es_evi_show_entry_detail
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4076,1
    - Dst: bgp_evpn_es_evi_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4078,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4081,1
    - Dst: bgp_evpn_es_evi_show_one_vni_hash_cb
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4091,1
    - Dst: bgp_evpn_es_evi_show_one_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4097,1
    - Dst: bgp_evpn_es_evi_show
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4101,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4109,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4116,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4119,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4120,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4121,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4126,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4131,1
    - Dst: bgp_evpn_es_evi_show_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4135,1
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4144,1
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4147,1
    - Dst: bgp_evpn_lookup_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4149,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4153,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4154,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4155,1
    - Dst: bgp_evpn_es_evi_show_one_vni
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4159,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4162,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4166,1
    - Dst: bgp_evpn_es_cons_checks_timer_start
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4176,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4178,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4181,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4182,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4196,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4204,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4205,1
    - Dst: listnode_add_after
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4206,1
    - Dst: listtail_unchecked
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4207,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4209
      start: 3849
    functionDepth: 4
    functionLinenumber: 3849
    functionLinenumberEnd: 4209
    functionName: bgp_evpn_remote_es_evi_flush
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - bgp_get_asnotation
    - strlen
    - list_delete
    - bgp_evpn_es_evi_show_one_vni_hash_cb
    - BGP_RD_AS_FORMAT
    - bgp_evpn_vni_es_init
    - bgp_evpn_es_evi_json_vtep_fill
    - bgp_evpn_es_evi_vtep_free
    - json_object_string_add
    - json_object_string_addf
    - BGP_DEBUG
    - listtail_unchecked
    - listnode_init
    - strlcat
    - bgp_evpn_es_evi_remote_info_re_eval
    - bgp_get_evpn
    - bgp_evpn_es_evi_show_entry_detail
    - ALL_LIST_ELEMENTS_RO
    - RB_INIT
    - inet_ntop
    - zlog_debug
    - json_array_string_add
    - hash_iterate
    - if
    - bgp_evpn_es_evi_vtep_re_eval_active
    - bgp_evpn_es_evi_vteps_str
    - strnlen
    - bgp_evpn_es_cons_checks_timer_start
    - listnode_add_after
    - vty_out
    - strlcpy
    - listcount
    - json_object_int_add
    - bgp_evpn_es_evi_show_one_vni
    - bgp_evpn_es_evi_show_vni
    - listset_app_node_mem
    - event_add_timer
    - bgp_evpn_remote_es_evi_flush
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - bgp_evpn_local_es_evi_do_del
    - bgp_evpn_es_evi_show
    - CHECK_FLAG
    - bgp_evpn_vni_es_cleanup
    - RB_FOREACH_SAFE
    - bgp_evpn_es_evi_show_entry
    - list_new
    - json_object_object_add
    - bgp_evpn_lookup_vni
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_remote_es_evi_flush(struct bgp_evpn_es_evi *es_evi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4214,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4217,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4220
      start: 4212
    functionDepth: 1
    functionLinenumber: 4212
    functionLinenumberEnd: 4220
    functionName: bgp_evpn_es_cons_checks_pend_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - list_delete_node
    - CHECK_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_cons_checks_pend_del(struct bgp_evpn_es *es)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4230,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4233
      start: 4223
    functionDepth: 1
    functionLinenumber: 4223
    functionLinenumberEnd: 4233
    functionName: bgp_evpn_es_evi_get_active_vtep_cnt
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t bgp_evpn_es_evi_get_active_vtep_cnt(\n\t\tstruct bgp_evpn_es_evi
      *es_evi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4245,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4248
      start: 4239
    functionDepth: 1
    functionLinenumber: 4239
    functionLinenumberEnd: 4248
    functionName: bgp_evpn_es_get_active_vtep_cnt
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_evpn_es_get_active_vtep_cnt(struct bgp_evpn_es *es)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnextnode_unchecked
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4260,1
    - Dst: listhead
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4262,1
    - Dst: listnextnode_unchecked
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4264,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4266,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - es
    - es_vtep
    argTypes:
    - struct bgp_evpn_es*
    - struct bgp_evpn_es_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4271
      start: 4253
    functionDepth: 1
    functionLinenumber: 4253
    functionLinenumberEnd: 4271
    functionName: bgp_evpn_es_get_next_active_vtep
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - listgetdata
    - listnextnode_unchecked
    - CHECK_FLAG
    - listhead
    linkageType: ''
    returnType: struct bgp_evpn_es_vtep
    signature: "struct bgp_evpn_es_vtep *bgp_evpn_es_get_next_active_vtep(\n\t\tstruct
      bgp_evpn_es *es, struct bgp_evpn_es_vtep *es_vtep)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnextnode_unchecked
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4281,1
    - Dst: listhead
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4283,1
    - Dst: listnextnode_unchecked
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4285,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4286,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - es_evi
    - evi_vtep
    argTypes:
    - struct bgp_evpn_es_evi*
    - struct bgp_evpn_es_evi_vtep*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4292
      start: 4273
    functionDepth: 1
    functionLinenumber: 4273
    functionLinenumberEnd: 4292
    functionName: bgp_evpn_es_evi_get_next_active_vtep
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - listgetdata
    - listnextnode_unchecked
    - CHECK_FLAG
    - listhead
    linkageType: ''
    returnType: struct bgp_evpn_es_evi_vtep
    signature: "struct bgp_evpn_es_evi_vtep *bgp_evpn_es_evi_get_next_active_vtep(\n\tstruct
      bgp_evpn_es_evi *es_evi,\n\tstruct bgp_evpn_es_evi_vtep *evi_vtep)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4296,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4297,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4298,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4301,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4305,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4306,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4309,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - es_evi
    argTypes:
    - struct bgp_evpn_es_evi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4312
      start: 4294
    functionDepth: 1
    functionLinenumber: 4294
    functionLinenumberEnd: 4312
    functionName: bgp_evpn_es_evi_set_inconsistent
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - BGP_DEBUG
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_es_evi_set_inconsistent(struct bgp_evpn_es_evi *es_evi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_es_get_active_vtep_cnt
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4328,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4329,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4334,1
    - Dst: bgp_evpn_es_evi_get_active_vtep_cnt
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4337,1
    - Dst: bgp_evpn_es_evi_set_inconsistent
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4339,1
    - Dst: bgp_evpn_es_get_next_active_vtep
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4348,1
    - Dst: bgp_evpn_es_evi_get_next_active_vtep
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4350,1
    - Dst: bgp_evpn_es_evi_set_inconsistent
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4353,1
    - Dst: bgp_evpn_es_evi_set_inconsistent
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4361,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - es
    argTypes:
    - struct bgp_evpn_es*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4368
      start: 4314
    functionDepth: 2
    functionLinenumber: 4314
    functionLinenumberEnd: 4368
    functionName: bgp_evpn_es_run_consistency_checks
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - bgp_evpn_es_get_next_active_vtep
    - bgp_evpn_es_evi_get_next_active_vtep
    - UNSET_FLAG
    - bgp_evpn_es_evi_set_inconsistent
    - bgp_evpn_es_get_active_vtep_cnt
    - bgp_evpn_es_evi_get_active_vtep_cnt
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_evpn_es_run_consistency_checks(struct bgp_evpn_es *es)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4377,1
    - Dst: bgp_evpn_es_run_consistency_checks
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4383,1
    - Dst: bgp_evpn_es_cons_checks_pend_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4384,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4390,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4393
      start: 4370
    functionDepth: 3
    functionLinenumber: 4370
    functionLinenumberEnd: 4393
    functionName: bgp_evpn_run_consistency_checks
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - ALL_LIST_ELEMENTS
    - bgp_evpn_es_cons_checks_pend_del
    - bgp_evpn_es_run_consistency_checks
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_run_consistency_checks(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_BGP_INST_KNOWN_TO_ZEBRA
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4415,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4416,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4417,1
    - Dst: stream_reset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4423,1
    - Dst: zclient_create_header
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4425,1
    - Dst: stream_putl
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4428,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4429,1
    - Dst: stream_put
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4431,1
    - Dst: stream_putw_at
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4433,1
    - Dst: stream_get_endp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4433,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4435,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4437,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4440,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4441,1
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4445,1
    - Dst: zclient_send_message
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4447,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - nh
    - add
    argTypes:
    - struct bgp_evpn_nh*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4448
      start: 4405
    functionDepth: 1
    functionLinenumber: 4405
    functionLinenumberEnd: 4448
    functionName: bgp_evpn_nh_zebra_update_send
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - IS_BGP_INST_KNOWN_TO_ZEBRA
    - zclient_create_header
    - stream_put
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - frrtrace
    - BGP_DEBUG
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_nh_zebra_update_send(struct bgp_evpn_nh *nh, bool add)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_zero_mac
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4452,1
    - Dst: bgp_evpn_nh_zebra_update_send
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4454,1
    - Dst: bgp_evpn_nh_zebra_update_send
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - nh
    - add
    argTypes:
    - struct bgp_evpn_nh*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4461
      start: 4450
    functionDepth: 2
    functionLinenumber: 4450
    functionLinenumberEnd: 4461
    functionName: bgp_evpn_nh_zebra_update
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_nh_zebra_update_send
    - is_zero_mac
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_nh_zebra_update(struct bgp_evpn_nh *nh, bool add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4472
      start: 4463
    functionDepth: 0
    functionLinenumber: 4463
    functionLinenumberEnd: 4472
    functionName: bgp_evpn_nh_alloc
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *bgp_evpn_nh_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4480,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4481,1
    - Dst: hash_lookup
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - bgp_vrf
    - ip
    argTypes:
    - struct bgp*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4485
      start: 4474
    functionDepth: 1
    functionLinenumber: 4474
    functionLinenumberEnd: 4485
    functionName: bgp_evpn_nh_find
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memcpy
    - hash_lookup
    - memset
    linkageType: ''
    returnType: struct bgp_evpn_nh
    signature: "struct bgp_evpn_nh *bgp_evpn_nh_find(struct bgp *bgp_vrf,\n\t\t\t\t\t
      \   struct ipaddr *ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4495,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4496,1
    - Dst: hash_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4497,1
    - Dst: ipaddr2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4498,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4501,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4502,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4505,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4507,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4510,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4511,1
    - Dst: bgp_evpn_nh_zebra_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - bgp_vrf
    - ip
    - pi
    argTypes:
    - struct bgp*
    - struct ipaddr*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4515
      start: 4488
    functionDepth: 3
    functionLinenumber: 4488
    functionLinenumberEnd: 4515
    functionName: bgp_evpn_nh_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memset
    - CHECK_FLAG
    - bgp_evpn_nh_zebra_update
    - zlog_debug
    - list_new
    - listset_app_node_mem
    - ipaddr2str
    - BGP_DEBUG
    - hash_get
    - memcpy
    linkageType: ''
    returnType: struct bgp_evpn_nh
    signature: "struct bgp_evpn_nh *bgp_evpn_nh_add(struct bgp *bgp_vrf,\n\t\t\t\t\t
      \  struct ipaddr *ip,\n\t\t\t\t\t   struct bgp_path_info *pi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4523,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4526,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4527,1
    - Dst: bgp_evpn_nh_zebra_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4530,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4531,1
    - Dst: hash_release
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4532,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct bgp_evpn_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4534
      start: 4518
    functionDepth: 3
    functionLinenumber: 4518
    functionLinenumberEnd: 4534
    functionName: bgp_evpn_nh_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - list_delete
    - listcount
    - bgp_evpn_nh_zebra_update
    - zlog_debug
    - XFREE
    - hash_release
    - BGP_DEBUG
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_nh_del(struct bgp_evpn_nh *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ben
    argTypes:
    - struct bgp_evpn_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4539
      start: 4536
    functionDepth: 0
    functionLinenumber: 4536
    functionLinenumberEnd: 4539
    functionName: hash_evpn_nh_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void hash_evpn_nh_free(struct bgp_evpn_nh *ben)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4546,1
    - Dst: jhash_1word
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4547,1
    - Dst: jhash2
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4549,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4551
      start: 4541
    functionDepth: 1
    functionLinenumber: 4541
    functionLinenumberEnd: 4551
    functionName: bgp_evpn_nh_hash_keymake
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - IS_IPADDR_V4
    - jhash2
    - array_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bgp_evpn_nh_hash_keymake(const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_cmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4564,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4565
      start: 4553
    functionDepth: 1
    functionLinenumber: 4553
    functionLinenumberEnd: 4565
    functionName: bgp_evpn_nh_cmp
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - ipaddr_cmp
    linkageType: ''
    returnType: bool
    signature: bool bgp_evpn_nh_cmp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4569,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4570,1
    - Dst: hash_create
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bgp_vrf
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4573
      start: 4567
    functionDepth: 1
    functionLinenumber: 4567
    functionLinenumberEnd: 4573
    functionName: bgp_evpn_nh_init
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - hash_create
    - BGP_DEBUG
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_nh_init(struct bgp *bgp_vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4581,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4582,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4586,1
    - Dst: bgp_evpn_path_nh_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4587,1
    - Dst: bgp_evpn_nh_flush_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4594,1
    - Dst: bgp_evpn_nh_finish
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4597,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4599,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4600,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4601,1
    - Dst: hash_clean_and_free
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4605,1
    - Dst: bgp_evpn_nh_update_ref_pi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4609,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4618,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4620,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4623,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4624,1
    - Dst: memcmp
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4630,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4631,1
    - Dst: bgp_evpn_nh_zebra_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4632,1
    - Dst: bgp_evpn_nh_clear_ref_pi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4638,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4644,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4645,1
    - Dst: bgp_evpn_nh_update_ref_pi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4649,1
    - Dst: bgp_evpn_nh_zebra_update
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct bgp_evpn_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4654
      start: 4575
    functionDepth: 3
    functionLinenumber: 4575
    functionLinenumberEnd: 4654
    functionName: bgp_evpn_nh_flush_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    - ALL_LIST_ELEMENTS
    - bgp_evpn_nh_finish
    - bgp_evpn_nh_update_ref_pi
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - memcmp
    - bgp_evpn_nh_zebra_update
    - bgp_evpn_path_nh_del
    - zlog_debug
    - bgp_evpn_nh_flush_entry
    - hash_iterate
    - BGP_DEBUG
    - bgp_evpn_nh_clear_ref_pi
    - memcpy
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_nh_flush_entry(struct bgp_evpn_nh *nh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_path_nh_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4659,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nh_info
    argTypes:
    - struct bgp_path_evpn_nh_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4661
      start: 4657
    functionDepth: 1
    functionLinenumber: 4657
    functionLinenumberEnd: 4661
    functionName: bgp_evpn_path_nh_info_free
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_path_nh_unlink
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_path_nh_info_free(struct bgp_path_evpn_nh_info *nh_info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_path_info_extra_get
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4670,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4675,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4682,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - pi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4688
      start: 4663
    functionDepth: 2
    functionLinenumber: 4663
    functionLinenumberEnd: 4688
    functionName: bgp_evpn_path_nh_info_new
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_path_info_extra_get
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_path_evpn_nh_info
    signature: 'struct bgp_path_evpn_nh_info *

      bgp_evpn_path_nh_info_new(struct bgp_path_info *pi)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4700,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4701,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4702,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4707,1
    - Dst: bgp_evpn_nh_clear_ref_pi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4712,1
    - Dst: bgp_evpn_nh_del
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - nh_info
    argTypes:
    - struct bgp_path_evpn_nh_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4722
      start: 4690
    functionDepth: 4
    functionLinenumber: 4690
    functionLinenumberEnd: 4722
    functionName: bgp_evpn_path_nh_unlink
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - bgp_evpn_nh_del
    - list_delete_node
    - zlog_debug
    - BGP_DEBUG
    - bgp_evpn_nh_clear_ref_pi
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_path_nh_unlink(struct bgp_path_evpn_nh_info *nh_info)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4735,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4736,1
    - Dst: bgp_evpn_path_nh_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4750,1
    - Dst: bgp_evpn_path_nh_info_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4756,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4759,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4761,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4762,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4765,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4766,1
    - Dst: bgp_evpn_nh_find
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4769,1
    - Dst: bgp_evpn_nh_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4771,1
    - Dst: bgp_evpn_nh_update_ref_pi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4776,1
    - Dst: bgp_evpn_path_nh_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4781,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4783,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4784,1
    - Dst: listnode_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4789,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4790,1
    - Dst: bgp_evpn_nh_update_ref_pi
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4794,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4795,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4797,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 2
    argNames:
    - bgp_vrf
    - pi
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4802
      start: 4724
    functionDepth: 5
    functionLinenumber: 4724
    functionLinenumberEnd: 4802
    functionName: bgp_evpn_path_nh_link
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - memset
    - bgp_evpn_nh_update_ref_pi
    - bgp_evpn_nh_find
    - listnode_add
    - zlog_debug
    - bgp_evpn_path_nh_unlink
    - SET_IPADDR_V6
    - bgp_evpn_nh_add
    - bgp_evpn_path_nh_info_new
    - BGP_DEBUG
    - listnode_init
    - memcpy
    - SET_IPADDR_V4
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_path_nh_link(struct bgp *bgp_vrf, struct bgp_path_info
      *pi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_path_nh_unlink
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bgp_vrf
    - pi
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4816
      start: 4804
    functionDepth: 5
    functionLinenumber: 4804
    functionLinenumberEnd: 4816
    functionName: bgp_evpn_path_nh_del
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 2
    functionsReached:
    - bgp_evpn_path_nh_unlink
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_path_nh_del(struct bgp *bgp_vrf, struct bgp_path_info
      *pi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_path_nh_link
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp_vrf
    - pi
    argTypes:
    - struct bgp*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4821
      start: 4818
    functionDepth: 6
    functionLinenumber: 4818
    functionLinenumberEnd: 4821
    functionName: bgp_evpn_path_nh_add
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 1
    functionsReached:
    - bgp_evpn_path_nh_link
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_path_nh_add(struct bgp *bgp_vrf, struct bgp_path_info
      *pi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4832,1
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4834,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4836,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4840,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4841,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4842,1
    - Dst: json_object_string_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4843,1
    - Dst: json_object_int_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4844,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4844,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4846,1
    - Dst: listcount
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4848,1
    - Dst: json_object_array_add
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4853,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - nh
    - vty
    - json_array
    argTypes:
    - struct bgp_evpn_nh*
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4854
      start: 4823
    functionDepth: 1
    functionLinenumber: 4823
    functionLinenumberEnd: 4854
    functionName: bgp_evpn_nh_show_entry
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - vty_out
    - json_object_array_add
    - prefix_mac2str
    - listcount
    - json_object_int_add
    - json_object_string_add
    linkageType: ''
    returnType: void
    signature: "void bgp_evpn_nh_show_entry(struct bgp_evpn_nh *nh, struct vty *vty,\n\t\t\t\t
      \  json_object *json_array)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_evpn_nh_show_entry
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - ctxt
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4867
      start: 4861
    functionDepth: 2
    functionLinenumber: 4861
    functionLinenumberEnd: 4867
    functionName: bgp_evpn_nh_show_hash_cb
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_evpn_nh_show_entry
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_nh_show_hash_cb(struct hash_bucket *bucket, void *ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4879,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4881,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4889,1
    - Dst: hash_iterate
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4890,1
    - Dst: vty_json
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4898,1
    - Dst: bgp_evpn_mh_init
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4902,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4904,1
    - Dst: RB_INIT
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4907,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4909,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4910,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4912,1
    - Dst: listset_app_node_mem
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4913,1
    - Dst: list_new
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4917,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4938,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4941,1
    - Dst: bgp_evpn_es_local_info_clear
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4943,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4946,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4947,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4948,1
    - Dst: list_delete
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4949,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4951,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - vty
    - uj
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4952
      start: 4870
    functionDepth: 3
    functionLinenumber: 4870
    functionLinenumberEnd: 4952
    functionName: bgp_evpn_nh_show
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - list_delete
    - vty_out
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - RB_INIT
    - bgp_evpn_es_local_info_clear
    - bgp_evpn_mh_init
    - RB_FOREACH_SAFE
    - EVENT_OFF
    - list_new
    - listset_app_node_mem
    - XFREE
    - hash_iterate
    - BGP_DEBUG
    - vty_json
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_nh_show(struct vty *vty, bool uj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_evpn
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4966,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4974,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4975,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4978,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4980,1
    - Dst: for
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4983,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4983,1
    - Dst: bgp_evpn_es_evi_vtep_re_eval_active
      Src: /src/frr/bgpd/bgp_evpn_mh.c:4985,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4988
      start: 4955
    functionDepth: 2
    functionLinenumber: 4955
    functionLinenumberEnd: 4988
    functionName: bgp_evpn_switch_ead_evi_rx
    functionSourceFile: /src/frr/bgpd/bgp_evpn_mh.c
    functionUses: 0
    functionsReached:
    - bgp_get_evpn
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS
    - for
    - RB_FOREACH
    - bgp_evpn_es_evi_vtep_re_eval_active
    linkageType: ''
    returnType: void
    signature: void bgp_evpn_switch_ead_evi_rx(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_regex.c:34,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_regex.c:39,1
    - Dst: memcpy
      Src: /src/frr/bgpd/bgp_regex.c:43,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_regex.c:44,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_regex.c:45,1
    - Dst: XMALLOC
      Src: /src/frr/bgpd/bgp_regex.c:51,1
    - Dst: regcomp
      Src: /src/frr/bgpd/bgp_regex.c:53,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_regex.c:55,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_regex.c:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - regstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 63
    functionName: bgp_regcomp
    functionSourceFile: /src/frr/bgpd/bgp_regex.c
    functionUses: 5
    functionsReached:
    - strlen
    - XMALLOC
    - XFREE
    - memcpy
    - regcomp
    linkageType: ''
    returnType: regex_t
    signature: regex_t *bgp_regcomp(const char *regstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexec
      Src: /src/frr/bgpd/bgp_regex.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - regex
    - aspath
    argTypes:
    - regex_t*
    - struct aspath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: bgp_regexec
    functionSourceFile: /src/frr/bgpd/bgp_regex.c
    functionUses: 2
    functionsReached:
    - regexec
    linkageType: ''
    returnType: int
    signature: int bgp_regexec(regex_t *regex, struct aspath *aspath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regfree
      Src: /src/frr/bgpd/bgp_regex.c:72,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_regex.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - regex
    argTypes:
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: bgp_regex_free
    functionSourceFile: /src/frr/bgpd/bgp_regex.c
    functionUses: 4
    functionsReached:
    - regfree
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bgp_regex_free(regex_t *regex)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - o1
    - o2
    argTypes:
    - struct bgp_adj_out*
    - struct bgp_adj_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: bgp_adj_out_compare
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bgp_adj_out_compare(const struct bgp_adj_out *o1,\n\t\t\t       const
      struct bgp_adj_out *o2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - dest
    - subgrp
    - addpath_tx_id
    argTypes:
    - struct bgp_dest*
    - struct update_subgroup*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 77
    functionName: adj_lookup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct bgp_adj_out
    signature: "struct bgp_adj_out *adj_lookup(struct bgp_dest *dest,\n\t\t\t\t\t
      \    struct update_subgroup *subgrp,\n\t\t\t\t\t     uint32_t addpath_tx_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:81,1
    - Dst: SUBGRP_DECR_STAT
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:82,1
    - Dst: RB_REMOVE
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:84,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:85,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct bgp_adj_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: adj_free
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - SUBGRP_DECR_STAT
    - RB_REMOVE
    - TAILQ_REMOVE
    - XFREE
    linkageType: ''
    returnType: void
    signature: void adj_free(struct bgp_adj_out *adj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:96,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:97,1
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:98,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:102,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:106,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:108,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - subgrp
    argTypes:
    - struct updwalk_context*
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 90
    functionDepth: 6
    functionLinenumber: 90
    functionLinenumberEnd: 122
    functionName: subgrp_withdraw_stale_addpath
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - subgroup_process_announce_selected
    - SUBGRP_SAFI
    - SUBGRP_PEER
    - RB_FOREACH_SAFE
    - bgp_dest_get_bgp_path_info
    - SUBGRP_AFI
    - bgp_addpath_id_for_peer
    linkageType: ''
    returnType: void
    signature: "void subgrp_withdraw_stale_addpath(struct updwalk_context *ctx,\n\t\t\t\t\t
      \ struct update_subgroup *subgrp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:135,1
    - Dst: UPDGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:136,1
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:137,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:138,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:140,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:141,1
    - Dst: afi2str
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:142,1
    - Dst: safi2str
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:142,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:143,1
    - Dst: subgrp_withdraw_stale_addpath
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:156,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:158,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:164,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:167,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:177,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:180,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:187,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:190,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:197,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:201,1
    - Dst: bgp_notify_conditional_adv_scanner
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:213,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 124
    functionDepth: 7
    functionLinenumber: 124
    functionLinenumberEnd: 217
    functionName: group_announce_route_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - safi2str
    - subgroup_process_announce_selected
    - subgrp_withdraw_stale_addpath
    - bgp_addpath_id_for_peer
    - bgp_notify_conditional_adv_scanner
    - afi2str
    - UPDGRP_SAFI
    - zlog_debug
    - bgp_dest_to_rnode
    - RB_FOREACH_SAFE
    - bgp_addpath_encode_tx
    - bgp_dest_get_bgp_path_info
    - BGP_DEBUG
    - UPDGRP_PEER
    - UPDGRP_AFI
    linkageType: ''
    returnType: int
    signature: int group_announce_route_walkcb(struct update_group *updgrp, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: subgrp_withdraw_stale_addpath
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:156,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:158,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:164,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:167,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:177,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:180,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:187,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:190,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:197,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:201,1
    - Dst: bgp_notify_conditional_adv_scanner
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:213,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 145
    functionDepth: 7
    functionLinenumber: 145
    functionLinenumberEnd: 214
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - subgroup_process_announce_selected
    - bgp_dest_get_bgp_path_info
    - bgp_notify_conditional_adv_scanner
    - RB_FOREACH_SAFE
    - bgp_addpath_id_for_peer
    - subgrp_withdraw_stale_addpath
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:230,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:234,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:234,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:238,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:238,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:239,1
    - Dst: RB_FOREACH
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:241,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:246,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:250,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:251,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:255,1
    - Dst: route_vty_out_tmp
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:260,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:262,1
    - Dst: route_vty_out_tmp
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:266,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:267,1
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:274,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 3
    argNames:
    - subgrp
    - vty
    - flags
    argTypes:
    - struct update_subgroup*
    - struct vty*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 275
    functionName: subgrp_show_adjq_vty
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - vty_out
    - bgp_table_top
    - SUBGRP_INST
    - bgp_dest_get_prefix
    - SUBGRP_SAFI
    - SUBGRP_AFI
    - RB_FOREACH
    - route_vty_out_tmp
    linkageType: ''
    returnType: void
    signature: "void subgrp_show_adjq_vty(struct update_subgroup *subgrp,\n\t\t\t\t
      struct vty *vty, uint8_t flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:287,1
    - Dst: subgrp_show_adjq_vty
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 277
    functionDepth: 4
    functionLinenumber: 277
    functionLinenumberEnd: 292
    functionName: updgrp_show_adj_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - subgrp_show_adjq_vty
    - vty_out
    linkageType: ''
    returnType: int
    signature: int updgrp_show_adj_walkcb(struct update_group *updgrp, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:287,1
    - Dst: subgrp_show_adjq_vty
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 284
    functionDepth: 4
    functionLinenumber: 284
    functionLinenumberEnd: 290
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - subgrp_show_adjq_vty
    - vty_out
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:298,1
    - Dst: update_group_af_walk
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - bgp
    - afi
    - safi
    - vty
    - id
    - flags
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct vty*
    - uint64_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 304
    functionName: updgrp_show_adj
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - memset
    - update_group_af_walk
    linkageType: ''
    returnType: void
    signature: "void updgrp_show_adj(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t
      \   struct vty *vty, uint64_t id, uint8_t flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:311,1
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:312,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:313,1
    - Dst: SUBGRP_UPDGRP
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:314,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:318,1
    - Dst: subgroup_announce_route
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:319,1
    - Dst: bgp_update_delay_active
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:330,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:330,1
    - Dst: BGP_SUPPRESS_FIB_ENABLED
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:331,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:336,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:337,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 306
    functionDepth: 2
    functionLinenumber: 306
    functionLinenumberEnd: 341
    functionName: subgroup_coalesce_timer
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - subgroup_announce_route
    - PAF_PEER
    - BGP_SUPPRESS_FIB_ENABLED
    - bgp_debug_update
    - bgp_update_delay_active
    - SUBGRP_INST
    - BGP_TIMER_ON
    - zlog_debug
    - EVENT_OFF
    - SUBGRP_UPDGRP
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void subgroup_coalesce_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:336,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:337,1
    - Dst: BGP_TIMER_ON
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 339
    functionName: SUBGRP_FOREACH_PEER
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 6
    functionsReached:
    - BGP_TIMER_ON
    - EVENT_OFF
    - PAF_PEER
    linkageType: ''
    returnType: void
    signature: void SUBGRP_FOREACH_PEER (subgrp, paf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:351,1
    - Dst: subgroup_announce_all
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 357
    functionName: update_group_announce_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - subgroup_announce_all
    linkageType: ''
    returnType: int
    signature: int update_group_announce_walkcb(struct update_group *updgrp, void
      *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:351,1
    - Dst: subgroup_announce_all
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 354
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - SET_FLAG
    - subgroup_announce_all
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UPDGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:367,1
    - Dst: UPDGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:368,1
    - Dst: UPDGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:369,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:372,1
    - Dst: subgroup_announce_all
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - updgrp
    - arg
    argTypes:
    - struct update_group*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 379
    functionName: update_group_announce_rrc_walkcb
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - UPDGRP_SAFI
    - UPDGRP_PEER
    - UPDGRP_AFI
    - subgroup_announce_all
    linkageType: ''
    returnType: int
    signature: "int update_group_announce_rrc_walkcb(struct update_group *updgrp,\n\t\t\t\t\t
      \   void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: subgroup_announce_all
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 375
    functionName: UPDGRP_FOREACH_SUBGRP
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - subgroup_announce_all
    linkageType: ''
    returnType: void
    signature: void UPDGRP_FOREACH_SUBGRP (updgrp, subgrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:395,1
    - Dst: RB_INSERT
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:399,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:400,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:403,1
    - Dst: SUBGRP_INCR_STAT
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - subgrp
    - dest
    - addpath_tx_id
    argTypes:
    - struct update_subgroup*
    - struct bgp_dest*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 406
    functionName: bgp_adj_out_alloc
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    - RB_INSERT
    - TAILQ_INSERT_TAIL
    - bgp_dest_lock_node
    - SUBGRP_INCR_STAT
    linkageType: ''
    returnType: struct bgp_adj_out
    signature: "struct bgp_adj_out *bgp_adj_out_alloc(struct update_subgroup *subgrp,\n\t\t\t\t
      \     struct bgp_dest *dest,\n\t\t\t\t      uint32_t addpath_tx_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_advertise_delete
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:426,1
    - Dst: bgp_advertise_attr_unintern
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:432,1
    - Dst: bgp_adv_fifo_del
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:438,1
    - Dst: bgp_advertise_free
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - subgrp
    - adj
    argTypes:
    - struct update_subgroup*
    - struct bgp_adj_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 445
    functionName: bgp_advertise_clean_subgroup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 1
    functionsReached:
    - bgp_adv_fifo_del
    - bgp_advertise_delete
    - bgp_advertise_attr_unintern
    - bgp_advertise_free
    linkageType: ''
    returnType: struct bgp_advertise
    signature: "struct bgp_advertise *\nbgp_advertise_clean_subgroup(struct update_subgroup
      *subgrp,\n\t\t\t     struct bgp_adj_out *adj)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: attrhash_key_make
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:459,1
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:461,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:462,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:463,1
    - Dst: SUBGRP_INST
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:464,1
    - Dst: adj_lookup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:470,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:472,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:475,1
    - Dst: bgp_adj_out_alloc
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:478,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:480,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:494,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:495,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:497,1
    - Dst: bgp_dump_attr
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:500,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:502,1
    - Dst: MAX
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:521,1
    - Dst: bgp_advertise_clean_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:526,1
    - Dst: bgp_advertise_new
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:527,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:531,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:533,1
    - Dst: bgp_advertise_attr_intern
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:535,1
    - Dst: bgp_advertise_add
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:540,1
    - Dst: bgp_adv_fifo_count
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:546,1
    - Dst: BGP_SUPPRESS_FIB_ENABLED
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:552,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:553,1
    - Dst: bgp_adv_fifo_count
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:554,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:556,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:559,1
    - Dst: bgp_adjust_routeadv
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:562,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:562,1
    - Dst: bgp_adv_fifo_add_tail
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:566,1
    - Dst: MAX
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:568,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 4
    argNames:
    - dest
    - subgrp
    - attr
    - path
    argTypes:
    - struct bgp_dest*
    - struct update_subgroup*
    - struct attr*
    - struct bgp_path_info*
    assertStmts:
    - condition: (adv->pathi == NULL)
      pos:
        line_end: 530
        line_start: 530
        source_file: /src/frr/bgpd/bgp_updgrp_adv.c
    constantsTouched: []
    func_position:
      end: 569
      start: 447
    functionDepth: 5
    functionLinenumber: 447
    functionLinenumberEnd: 569
    functionName: bgp_adj_out_set_subgroup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - bgp_advertise_clean_subgroup
    - SUBGRP_INST
    - bgp_advertise_attr_intern
    - bgp_path_info_lock
    - SUBGRP_PEER
    - attrhash_key_make
    - bgp_adv_fifo_count
    - bgp_addpath_id_for_peer
    - BGP_DEBUG
    - adj_lookup
    - PAF_PEER
    - bgp_adj_out_alloc
    - SUBGRP_SAFI
    - zlog_debug
    - SUBGRP_AFI
    - assert
    - BGP_SUPPRESS_FIB_ENABLED
    - UNSET_FLAG
    - bgp_adjust_routeadv
    - MAX
    - bgp_dump_attr
    - CHECK_FLAG
    - bgp_advertise_new
    - SET_FLAG
    - bgp_adv_fifo_add_tail
    - bgp_advertise_add
    linkageType: ''
    returnType: void
    signature: "void bgp_adj_out_set_subgroup(struct bgp_dest *dest,\n\t\t\t      struct
      update_subgroup *subgrp, struct attr *attr,\n\t\t\t      struct bgp_path_info
      *path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BGP_SUPPRESS_FIB_ENABLED
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:552,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:553,1
    - Dst: bgp_adv_fifo_count
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:554,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:556,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:559,1
    - Dst: bgp_adjust_routeadv
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:562,1
    - Dst: PAF_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 563
    functionName: SUBGRP_FOREACH_PEER
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 6
    functionsReached:
    - PAF_PEER
    - BGP_SUPPRESS_FIB_ENABLED
    - bgp_adv_fifo_count
    - UNSET_FLAG
    - SET_FLAG
    - bgp_adjust_routeadv
    linkageType: ''
    returnType: void
    signature: void SUBGRP_FOREACH_PEER (subgrp, paf)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: adj_lookup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:587,1
    - Dst: bgp_advertise_clean_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:591,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:597,1
    - Dst: is_default_prefix
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:598,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:598,1
    - Dst: bgp_advertise_new
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:603,1
    - Dst: bgp_adv_fifo_count
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:610,1
    - Dst: bgp_adv_fifo_add_tail
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:614,1
    - Dst: subgroup_trigger_write
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:617,1
    - Dst: adj_free
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:620,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:622,1
    - Dst: MAX
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:626,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 4
    argNames:
    - dest
    - subgrp
    - withdraw
    - addpath_tx_id
    argTypes:
    - struct bgp_dest*
    - struct update_subgroup*
    - char
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 575
    functionDepth: 3
    functionLinenumber: 575
    functionLinenumberEnd: 627
    functionName: bgp_adj_out_unset_subgroup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - bgp_advertise_clean_subgroup
    - subgroup_trigger_write
    - is_default_prefix
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_advertise_new
    - adj_free
    - bgp_adv_fifo_count
    - bgp_adv_fifo_add_tail
    - adj_lookup
    - MAX
    linkageType: ''
    returnType: void
    signature: "void bgp_adj_out_unset_subgroup(struct bgp_dest *dest,\n\t\t\t\tstruct
      update_subgroup *subgrp, char withdraw,\n\t\t\t\tuint32_t addpath_tx_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:633,1
    - Dst: bgp_advertise_clean_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:636,1
    - Dst: adj_free
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - dest
    - adj
    - subgrp
    argTypes:
    - struct bgp_dest*
    - struct bgp_adj_out*
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 629
    functionDepth: 7
    functionLinenumber: 629
    functionLinenumberEnd: 639
    functionName: bgp_adj_out_remove_subgroup
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 1
    functionsReached:
    - bgp_advertise_clean_subgroup
    - bgp_attr_unintern
    - adj_free
    linkageType: ''
    returnType: void
    signature: "void bgp_adj_out_remove_subgroup(struct bgp_dest *dest, struct bgp_adj_out
      *adj,\n\t\t\t\t struct update_subgroup *subgrp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_FOREACH_ADJ_SAFE
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:649,1
    - Dst: bgp_adj_out_remove_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 645
    functionDepth: 8
    functionLinenumber: 645
    functionLinenumberEnd: 651
    functionName: subgroup_clear_table
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 1
    functionsReached:
    - SUBGRP_FOREACH_ADJ_SAFE
    - bgp_adj_out_remove_subgroup
    linkageType: ''
    returnType: void
    signature: void subgroup_clear_table(struct update_subgroup *subgrp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:667,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:668,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:669,1
    - Dst: bgp_addpath_encode_tx
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:681,1
    - Dst: subgroup_default_originate
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:683,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:686,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:688,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:688,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:689,1
    - Dst: bgp_check_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:691,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:701,1
    - Dst: is_default_prefix
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:703,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:703,1
    - Dst: subgroup_process_announce_selected
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:706,1
    - Dst: bgp_addpath_id_for_peer
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:708,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:712,1
    - Dst: MAX
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:722,1
    - Dst: update_subgroup_trigger_merge_check
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:727,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - subgrp
    - table
    argTypes:
    - struct update_subgroup*
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 656
    functionDepth: 6
    functionLinenumber: 656
    functionLinenumberEnd: 728
    functionName: subgroup_announce_table
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 1
    functionsReached:
    - bgp_route_next
    - is_default_prefix
    - bgp_check_selected
    - subgroup_process_announce_selected
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - update_subgroup_trigger_merge_check
    - subgroup_default_originate
    - SUBGRP_SAFI
    - SUBGRP_PEER
    - MAX
    - SET_FLAG
    - UNSET_FLAG
    - bgp_addpath_encode_tx
    - bgp_dest_get_bgp_path_info
    - SUBGRP_AFI
    - bgp_addpath_id_for_peer
    linkageType: ''
    returnType: void
    signature: "void subgroup_announce_table(struct update_subgroup *subgrp,\n\t\t\t
      \    struct bgp_table *table)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: update_subgroup_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:741,1
    - Dst: update_subgroup_set_needs_refresh
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:742,1
    - Dst: SUBGRP_PCOUNT
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:748,1
    - Dst: SUBGRP_PFIRST
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:750,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:750,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:751,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:755,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:756,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:757,1
    - Dst: subgroup_announce_table
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:758,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:760,1
    - Dst: update_subgroup_rib
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:760,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:761,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:762,1
    - Dst: subgroup_announce_table
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:765,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 735
    functionDepth: 7
    functionLinenumber: 735
    functionLinenumberEnd: 767
    functionName: subgroup_announce_route
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 4
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - CHECK_FLAG
    - SUBGRP_PFIRST
    - update_subgroup_set_needs_refresh
    - SUBGRP_SAFI
    - update_subgroup_rib
    - SUBGRP_PCOUNT
    - subgroup_announce_table
    - update_subgroup_needs_refresh
    - SUBGRP_AFI
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void subgroup_announce_route(struct update_subgroup *subgrp)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: SUBGRP_PEER
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:791,1
    - Dst: SUBGRP_AFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:792,1
    - Dst: SUBGRP_SAFI
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:793,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:806,1
    - Dst: assert
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:809,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:812,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:814,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:821,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:830,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:836,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:837,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:838,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:841,1
    - Dst: route_map_apply_ext
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:847,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:849,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:855,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:856,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:858,1
    - Dst: subgroup_announce_reset_nhop
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:860,1
    - Dst: peer_cap_enhe
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:861,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:867,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:880,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:882,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:891,1
    - Dst: afi2family
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:892,1
    - Dst: bgp_safi_node_lookup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:894,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:901,1
    - Dst: subgroup_default_withdraw_packet
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:902,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:903,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:909,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:911,1
    - Dst: subgroup_announce_check
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:912,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:914,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:917,1
    - Dst: bgp_adj_out_set_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:919,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:924,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:927,1
    - Dst: adj_lookup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:941,1
    - Dst: bgp_advertise_clean_subgroup
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:947,1
    - Dst: adj_free
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:951,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:953,1
    - Dst: bgp_in_graceful_shutdown
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:957,1
    - Dst: bgp_attr_add_gshut_community
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:958,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:960,1
    - Dst: subgroup_default_update_packet
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:962,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:966,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 86
    argCount: 2
    argNames:
    - subgrp
    - withdraw
    argTypes:
    - struct update_subgroup*
    - int
    assertStmts:
    - condition: (attr.aspath)
      pos:
        line_end: 808
        line_start: 808
        source_file: /src/frr/bgpd/bgp_updgrp_adv.c
    constantsTouched: []
    func_position:
      end: 967
      start: 769
    functionDepth: 7
    functionLinenumber: 769
    functionLinenumberEnd: 967
    functionName: subgroup_default_originate
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 5
    functionsReached:
    - bgp_advertise_clean_subgroup
    - SUBGRP_PEER
    - adj_free
    - adj_lookup
    - bgp_attr_intern
    - IN6_IS_ADDR_UNSPECIFIED
    - memset
    - bgp_dest_get_prefix
    - SUBGRP_SAFI
    - bgp_safi_node_lookup
    - SUBGRP_AFI
    - subgroup_default_update_packet
    - bgp_attr_default_set
    - assert
    - bgp_dest_unlock_node
    - subgroup_announce_reset_nhop
    - aspath_unintern
    - peer_cap_enhe
    - subgroup_announce_check
    - afi2family
    - UNSET_FLAG
    - bgp_in_graceful_shutdown
    - bgp_route_next
    - bgp_adj_out_set_subgroup
    - bgp_attr_add_gshut_community
    - bgp_table_top
    - route_map_apply_ext
    - CHECK_FLAG
    - ATTR_FLAG_BIT
    - bgp_dest_has_bgp_path_info_data
    - SET_FLAG
    - bgp_attr_flush
    - subgroup_default_withdraw_packet
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void subgroup_default_originate(struct update_subgroup *subgrp, int
      withdraw)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_debug_update
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:986,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:987,1
    - Dst: subgroup_announce_route
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:989,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:997,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - subgrp
    argTypes:
    - struct update_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 977
    functionDepth: 8
    functionLinenumber: 977
    functionLinenumberEnd: 1001
    functionName: subgroup_announce_all
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 5
    functionsReached:
    - event_add_timer_msec
    - zlog_debug
    - subgroup_announce_route
    - bgp_debug_update
    linkageType: ''
    returnType: void
    signature: void subgroup_announce_all(struct update_subgroup *subgrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_check_advertise
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:1017,1
    - Dst: update_group_af_walk
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:1020,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - dest
    - pi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct bgp_dest*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1007
    functionDepth: 2
    functionLinenumber: 1007
    functionLinenumberEnd: 1021
    functionName: group_announce_route
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 7
    functionsReached:
    - bgp_check_advertise
    - update_group_af_walk
    linkageType: ''
    returnType: void
    signature: "void group_announce_route(struct bgp *bgp, afi_t afi, safi_t safi,\n\t\t\t
      \ struct bgp_dest *dest, struct bgp_path_info *pi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: updgrp_show_adj
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:1026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - vty
    - id
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct vty*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1027
    functionName: update_group_show_adj_queue
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 1
    functionsReached:
    - updgrp_show_adj
    linkageType: ''
    returnType: void
    signature: "void update_group_show_adj_queue(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\t struct vty *vty, uint64_t id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: updgrp_show_adj
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:1032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - bgp
    - afi
    - safi
    - vty
    - id
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    - struct vty*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1029
    functionDepth: 1
    functionLinenumber: 1029
    functionLinenumberEnd: 1033
    functionName: update_group_show_advertised
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 1
    functionsReached:
    - updgrp_show_adj
    linkageType: ''
    returnType: void
    signature: "void update_group_show_advertised(struct bgp *bgp, afi_t afi, safi_t
      safi,\n\t\t\t\t  struct vty *vty, uint64_t id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: update_group_walk
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1038
    functionName: update_group_announce
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 2
    functionsReached:
    - update_group_walk
    linkageType: ''
    returnType: void
    signature: void update_group_announce(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: update_group_walk
      Src: /src/frr/bgpd/bgp_updgrp_adv.c:1042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1043
    functionName: update_group_announce_rrclients
    functionSourceFile: /src/frr/bgpd/bgp_updgrp_adv.c
    functionUses: 0
    functionsReached:
    - update_group_walk
    linkageType: ''
    returnType: void
    signature: void update_group_announce_rrclients(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 57
    functionName: bgpVersion
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgpVersion(struct variable *v, oid name[], size_t *length,\n\t\t\t
      \  int exact, size_t *var_len,\n\t\t\t   WriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:65,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:70,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 59
    functionDepth: 10
    functionLinenumber: 59
    functionLinenumberEnd: 75
    functionName: bgpLocalAs
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgpLocalAs(struct variable *v, oid name[], size_t *length,\n\t\t\t
      \  int exact, size_t *var_len,\n\t\t\t   WriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:84,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:85,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:86,1
    - Dst: if
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:89,1
    - Dst: sockunion2ip
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:89,1
    - Dst: bgp_peer_lookup_next
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:97,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:105,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:106,1
    - Dst: sockunion_family
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:107,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:109,1
    - Dst: sockunion2ip
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:109,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:110,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:114,1
    - Dst: sockunion2ip
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:114,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:115,1
    - Dst: sockunion2ip
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:115,1
    - Dst: sockunion2ip
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:122,1
    - Dst: bgpPeerTable_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:132,1
    - Dst: peer_lookup_addr_ipv4
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 149
    functionName: peer_lookup_addr_ipv4
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 1
    functionsReached:
    - sockunion_family
    - bgp_peer_lookup_next
    - ALL_LIST_ELEMENTS_RO
    - sockunion2ip
    - peer_lookup_addr_ipv4
    - if
    - bgpPeerTable_lookup
    - ntohl
    linkageType: ''
    returnType: struct peer
    signature: struct peer *peer_lookup_addr_ipv4(struct in_addr *src)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:187,1
    - Dst: bgpPeerTable_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:189,1
    - Dst: zlog_info
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:196,1
    - Dst: BGP_EVENT_ADD
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:205,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:212,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:217,1
    - Dst: peer_flag_set
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:222,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 7
    argNames:
    - action
    - var_val
    - var_val_type
    - var_val_len
    - statP
    - name
    - length
    argTypes:
    - int
    - uint8_t*
    - uint8_t
    - size_t
    - uint8_t*
    - oid*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 231
    functionName: write_bgpPeerTable
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - BGP_EVENT_ADD
    - zlog_info
    - memset
    - peer_flag_set
    - bgpPeerTable_lookup
    linkageType: ''
    returnType: int
    signature: "int write_bgpPeerTable(int action, uint8_t *var_val,\n\t\t\t      uint8_t
      var_val_type, size_t var_val_len,\n\t\t\t      uint8_t *statP, oid *name, size_t
      length)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:241,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:244,1
    - Dst: bgpPeerTable_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:246,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:252,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:259,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:260,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:262,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:264,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:267,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:269,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:272,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:273,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:275,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:278,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:280,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:283,1
    - Dst: ntohs
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:284,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:286,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:288,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:290,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:292,1
    - Dst: atomic_load_explicit
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:294,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:296,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:298,1
    - Dst: PEER_TOTAL_RX
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:298,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:300,1
    - Dst: PEER_TOTAL_TX
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:300,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:309,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:312,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:314,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:314,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:317,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:319,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:321,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:324,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:325,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:327,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:330,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:331,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:333,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:336,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:339,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:341,1
    - Dst: monotime
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:341,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 87
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 346
    functionName: bgpPeerTable
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - PEER_TOTAL_TX
    - memset
    - CHECK_FLAG
    - monotime
    - ntohs
    - atomic_load_explicit
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    - PEER_TOTAL_RX
    - bgpPeerTable_lookup
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgpPeerTable(struct variable *v, oid name[], size_t *length,\n\t\t\t
      \    int exact, size_t *var_len,\n\t\t\t     WriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:354,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:358,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 348
    functionDepth: 10
    functionLinenumber: 348
    functionLinenumberEnd: 363
    functionName: bgpIdentifier
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - SNMP_IPADDRESS
    - bgp_get_default
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgpIdentifier(struct variable *v, oid name[], size_t *length,\n\t\t\t
      \     int exact, size_t *var_len,\n\t\t\t      WriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 374
    functionName: bgpRcvdPathAttrTable
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgpRcvdPathAttrTable(struct variable *v, oid name[],\n\t\t\t\t
      \    size_t *length, int exact, size_t *var_len,\n\t\t\t\t     WriteMethod **write_method)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_init
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:390,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:400,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:409,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:412,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:415,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:417,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:420,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:428,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:433,1
    - Dst: bgp_node_get
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:443,1
    - Dst: oid2in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:455,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:465,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:468,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:469,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:472,1
    - Dst: ntohl
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:475,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:486,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:492,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:496,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:501,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:507,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 74
    argCount: 6
    argNames:
    - v
    - name
    - length
    - bgp
    - addr
    - exact
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - struct bgp*
    - struct prefix_ipv4*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 510
    functionName: bgp4PathAttrLookup
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - bgp_route_next
    - oid2in_addr
    - bgp_table_top
    - bgp_dest_get_prefix
    - sockunion_same
    - bgp_node_lookup
    - sockunion_init
    - bgp_dest_get_bgp_path_info
    - oid_copy_in_addr
    - ntohl
    - bgp_node_get
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *bgp4PathAttrLookup(struct variable *v, oid name[],\n\t\t\t\t\t\tsize_t
      *length, struct bgp *bgp,\n\t\t\t\t\t\tstruct prefix_ipv4 *addr,\n\t\t\t\t\t\tint
      exact)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:520,1
    - Dst: smux_header_table
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:524,1
    - Dst: memset
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:527,1
    - Dst: bgp4PathAttrLookup
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:529,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:535,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:537,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:539,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:541,1
    - Dst: aspath_snmp_pathseg
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:543,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:545,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:547,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:549,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:551,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:553,1
    - Dst: SNMP_IPADDRESS
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:555,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:557,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:561,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:562,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:564,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 44
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 512
    functionDepth: 10
    functionLinenumber: 512
    functionLinenumberEnd: 570
    functionName: bgp4PathAttrTable
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - memset
    - bgp_get_default
    - CHECK_FLAG
    - bgp4PathAttrLookup
    - aspath_snmp_pathseg
    - SNMP_INTEGER
    - SNMP_IPADDRESS
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *bgp4PathAttrTable(struct variable *v, oid name[],\n\t\t\t\t
      \ size_t *length, int exact, size_t *var_len,\n\t\t\t\t  WriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: peer_established
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:759,1
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:762,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:766,1
    - Dst: smux_trap
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:768,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:768,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:769,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 773
    functionName: bgpTrapEstablished
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - peer_established
    - inet_aton
    - smux_trap
    - array_size
    - oid_copy_in_addr
    linkageType: ''
    returnType: int
    signature: int bgpTrapEstablished(struct peer *peer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_aton
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:781,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:785,1
    - Dst: smux_trap
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:787,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:787,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:788,1
    - Dst: array_size
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:790,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 792
    functionName: bgpTrapBackwardTransition
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 0
    functionsReached:
    - oid_copy_in_addr
    - smux_trap
    - array_size
    - inet_aton
    linkageType: ''
    returnType: int
    signature: int bgpTrapBackwardTransition(struct peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REGISTER_MIB
      Src: /src/frr/bgpd/bgp_snmp_bgp4.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 798
    functionName: bgp_snmp_bgp4_init
    functionSourceFile: /src/frr/bgpd/bgp_snmp_bgp4.c
    functionUses: 1
    functionsReached:
    - REGISTER_MIB
    linkageType: ''
    returnType: int
    signature: int bgp_snmp_bgp4_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct bgp_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: bgp_table_lock
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bgp_table_lock(struct bgp_table *rt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/bgp_table.c:28,1
    - Dst: route_table_finish
      Src: /src/frr/bgpd/bgp_table.c:35,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_table.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct bgp_table*
    assertStmts:
    - condition: (rt->lock > 0)
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/frr/bgpd/bgp_table.c
    constantsTouched: []
    func_position:
      end: 39
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 39
    functionName: bgp_table_unlock
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 8
    functionsReached:
    - XFREE
    - route_table_finish
    - assert
    linkageType: ''
    returnType: void
    signature: void bgp_table_unlock(struct bgp_table *rt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_unlock
      Src: /src/frr/bgpd/bgp_table.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct bgp_table**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: bgp_table_finish
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 5
    functionsReached:
    - bgp_table_unlock
    linkageType: ''
    returnType: void
    signature: void bgp_table_finish(struct bgp_table **rt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_table.c:54,1
    - Dst: bgp_delete_listnode
      Src: /src/frr/bgpd/bgp_table.c:55,1
    - Dst: route_unlock_node
      Src: /src/frr/bgpd/bgp_table.c:56,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: bgp_dest_unlock_node
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 93
    functionsReached:
    - route_unlock_node
    - bgp_delete_listnode
    - bgp_dest_to_rnode
    - frrtrace
    linkageType: ''
    returnType: void
    signature: void bgp_dest_unlock_node(struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/bgpd/bgp_table.c:64,1
    - Dst: route_lock_node
      Src: /src/frr/bgpd/bgp_table.c:65,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.c:65,1
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: bgp_dest_lock_node
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 11
    functionsReached:
    - bgp_dest_from_rnode
    - bgp_dest_to_rnode
    - route_lock_node
    - frrtrace
    linkageType: ''
    returnType: struct bgp_dest
    signature: struct bgp_dest *bgp_dest_lock_node(struct bgp_dest *dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_table.c:78,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_table.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct bgp_dest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 83
    functionName: bgp_dest_get_prefix_str
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 0
    functionsReached:
    - bgp_dest_get_prefix
    - prefix2str
    linkageType: ''
    returnType: char
    signature: char *bgp_dest_get_prefix_str(struct bgp_dest *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_table.c:92,1
    - Dst: RB_INIT
      Src: /src/frr/bgpd/bgp_table.c:94,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - delegate
    - table
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: bgp_node_create
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 0
    functionsReached:
    - bgp_dest_to_rnode
    - RB_INIT
    - XCALLOC
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *bgp_node_create(route_table_delegate_t *delegate,\n\t\t\t\t\t
      \ struct route_table *table)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.c:106,1
    - Dst: bgp_addpath_free_node_data
      Src: /src/frr/bgpd/bgp_table.c:110,1
    - Dst: XFREE
      Src: /src/frr/bgpd/bgp_table.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - delegate
    - table
    - node
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 116
    functionName: bgp_node_destroy
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 0
    functionsReached:
    - bgp_dest_from_rnode
    - bgp_addpath_free_node_data
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void bgp_node_destroy(route_table_delegate_t *delegate,\n\t\t\t     struct
      route_table *table, struct route_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/bgp_table.c:132,1
    - Dst: route_table_init_with_delegate
      Src: /src/frr/bgpd/bgp_table.c:134,1
    - Dst: route_table_set_info
      Src: /src/frr/bgpd/bgp_table.c:139,1
    - Dst: bgp_table_lock
      Src: /src/frr/bgpd/bgp_table.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - bgp
    - afi
    - safi
    argTypes:
    - struct bgp*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 151
    functionName: bgp_table_init
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 14
    functionsReached:
    - bgp_table_lock
    - route_table_set_info
    - route_table_init_with_delegate
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_table
    signature: struct bgp_table *bgp_table_init(struct bgp *bgp, afi_t afi, safi_t
      safi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/bgp_table.c:165,1
    - Dst: bgp_dest_table
      Src: /src/frr/bgpd/bgp_table.c:166,1
    - Dst: bgp_dest_to_rnode
      Src: /src/frr/bgpd/bgp_table.c:175,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/bgp_table.c:180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct bgp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 183
    functionName: bgp_delete_listnode
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 1
    functionsReached:
    - bgp_dest_to_rnode
    - CHECK_FLAG
    - UNSET_FLAG
    - bgp_dest_table
    linkageType: ''
    returnType: void
    signature: void bgp_delete_listnode(struct bgp_node *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.c:188,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_table.c:196,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgp_table.c:199,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/bgp_table.c:206,1
    - Dst: bgp_dest_from_rnode
      Src: /src/frr/bgpd/bgp_table.c:214,1
    - Dst: prefix_bit
      Src: /src/frr/bgpd/bgp_table.c:214,1
    - Dst: bgp_dest_lock_node
      Src: /src/frr/bgpd/bgp_table.c:221,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct bgp_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 223
    functionName: bgp_table_subtree_lookup
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 3
    functionsReached:
    - prefix_match
    - bgp_dest_get_prefix
    - prefix_bit
    - bgp_dest_lock_node
    - bgp_dest_from_rnode
    linkageType: ''
    returnType: struct bgp_node
    signature: "struct bgp_node *bgp_table_subtree_lookup(const struct bgp_table *table,\n\t\t\t\t\t
      \ const struct prefix *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/bgp_table.c:230,1
    - Dst: bputs
      Src: /src/frr/bgpd/bgp_table.c:234,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/bgp_table.c:237,1
    - Dst: bputs
      Src: /src/frr/bgpd/bgp_table.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 239
    functionName: printfrr_bd
    functionSourceFile: /src/frr/bgpd/bgp_table.c
    functionUses: 0
    functionsReached:
    - bgp_dest_get_prefix
    - prefix2str
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_bd(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/bgpd/bgp_errors.c:496,1
    - Dst: log_ref_add
      Src: /src/frr/bgpd/bgp_errors.c:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 498
    functionName: bgp_error_init
    functionSourceFile: /src/frr/bgpd/bgp_errors.c
    functionUses: 1
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void bgp_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/bgpd/bgp_clist.h:169,1
    - Dst: strlen
      Src: /src/frr/bgpd/bgp_clist.h:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 170
    functionName: bgp_clist_hash_key
    functionSourceFile: /src/frr/bgpd/bgp_clist.h
    functionUses: 6
    functionsReached:
    - strlen
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t bgp_clist_hash_key(char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bpi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: RFAPI_LOCAL_BI
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_LOCAL_BI(bpi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bpi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: RFAPI_DIRECT_IMPORT_BI
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_DIRECT_IMPORT_BI(bpi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - bpi
    - ','
    - itable
    - ','
    - afi
    - ','
    - cnt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: RFAPI_UPDATE_ITABLE_COUNT
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_UPDATE_ITABLE_COUNT(bpi, itable, afi, cnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rn
    - ','
    - safi
    - ','
    - lo
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: RFAPI_CHECK_REFCOUNT
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_CHECK_REFCOUNT(rn, safi, lo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rn
    - ','
    - safi
    - ','
    - lo
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    functionName: RFAPI_CHECK_REFCOUNT
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_CHECK_REFCOUNT(rn, safi, lo)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - code
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 86
    functionName: rfapi_error_str
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *rfapi_error_str(int code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_bgp_lookup_by_rfp
      Src: /src/frr/bgpd/rfapi/rfapi.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rfp_start_val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: rfapi_get_response_lifetime_default
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_bgp_lookup_by_rfp
    linkageType: ''
    returnType: int
    signature: int rfapi_get_response_lifetime_default(void *rfp_start_val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_bgp_lookup_by_rfp
      Src: /src/frr/bgpd/rfapi/rfapi.c:127,1
    - Dst: bgp_rfapi_is_vnc_configured
      Src: /src/frr/bgpd/rfapi/rfapi.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rfp_start_val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 131
    functionName: rfapi_is_vnc_configured
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 1
    functionsReached:
    - bgp_rfapi_is_vnc_configured
    - rfapi_bgp_lookup_by_rfp
    linkageType: ''
    returnType: int
    signature: int rfapi_is_vnc_configured(void *rfp_start_val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 151
    functionName: rfapi_get_vn_addr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct rfapi_ip_addr
    signature: struct rfapi_ip_addr *rfapi_get_vn_addr(void *rfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 170
    functionName: rfapi_get_un_addr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct rfapi_ip_addr
    signature: struct rfapi_ip_addr *rfapi_get_un_addr(void *rfd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi.c:178,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi.c:182,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - a1
    - a2
    argTypes:
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    assertStmts:
    - condition: (1)
      pos:
        line_end: 184
        line_start: 184
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 188
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 188
    functionName: rfapi_ip_addr_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_CMP
    - IPV6_ADDR_CMP
    - assert
    linkageType: ''
    returnType: int
    signature: int rfapi_ip_addr_cmp(struct rfapi_ip_addr *a1, struct rfapi_ip_addr
      *a2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi.c:209,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:214,1
    - Dst: agg_node_lookup
      Src: /src/frr/bgpd/rfapi/rfapi.c:217,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi.c:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - bgp
    - vn_addr
    - un_addr
    - node
    argTypes:
    - struct bgp*
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    - struct agg_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 227
    functionName: rfapi_find_node
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - family2afi
    - rfapiRaddr2Qprefix
    - agg_node_lookup
    - agg_unlock_node
    linkageType: ''
    returnType: int
    signature: "int rfapi_find_node(struct bgp *bgp, struct rfapi_ip_addr *vn_addr,\n\t\t\t
      \  struct rfapi_ip_addr *un_addr,\n\t\t\t   struct agg_node **node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_find_node
      Src: /src/frr/bgpd/rfapi/rfapi.c:236,1
    - Dst: rfapi_ip_addr_cmp
      Src: /src/frr/bgpd/rfapi/rfapi.c:243,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - bgp
    - vn_addr
    - un_addr
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    - struct rfapi_descriptor**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 251
    functionName: rfapi_find_rfd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_find_node
    - rfapi_ip_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int rfapi_find_rfd(struct bgp *bgp, struct rfapi_ip_addr *vn_addr,\n\t\t
      \  struct rfapi_ip_addr *un_addr, struct rfapi_descriptor **rfd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_find_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - bgp
    - vn_addr
    - un_addr
    - handle
    argTypes:
    - struct bgp*
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    - rfapi_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 277
    functionName: rfapi_find_handle
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_find_rfd
    linkageType: ''
    returnType: int
    signature: "int rfapi_find_handle(struct bgp *bgp, struct rfapi_ip_addr *vn_addr,\n\t\t\t
      \    struct rfapi_ip_addr *un_addr,\n\t\t\t     rfapi_handle *handle)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi.c:286,1
    - Dst: rfapi_find_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - vty
    - vn_addr
    - un_addr
    - handle
    argTypes:
    - struct vty*
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    - rfapi_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 279
    functionDepth: 10
    functionLinenumber: 279
    functionLinenumberEnd: 291
    functionName: rfapi_find_handle_vty
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - rfapi_find_rfd
    linkageType: ''
    returnType: int
    signature: "int rfapi_find_handle_vty(struct vty *vty, struct rfapi_ip_addr *vn_addr,\n\t\t\t\t
      struct rfapi_ip_addr *un_addr,\n\t\t\t\t rfapi_handle *handle)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:300,1
    - Dst: rfapi_find_handle
      Src: /src/frr/bgpd/rfapi/rfapi.c:305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 293
    functionDepth: 4
    functionLinenumber: 293
    functionLinenumberEnd: 312
    functionName: is_valid_rfd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - rfapi_find_handle
    linkageType: ''
    returnType: int
    signature: int is_valid_rfd(struct rfapi_descriptor *rfd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:326,1
    - Dst: rfapi_find_handle
      Src: /src/frr/bgpd/rfapi/rfapi.c:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - handle
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 317
    functionDepth: 4
    functionLinenumber: 317
    functionLinenumberEnd: 342
    functionName: rfapi_check
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - rfapi_find_handle
    linkageType: ''
    returnType: int
    signature: int rfapi_check(void *handle)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi.c:356,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:357,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:360,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/rfapi/rfapi.c:365,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:367,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/rfapi.c:370,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/rfapi.c:372,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:375,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:380,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:381,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:388,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:405,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi.c:417,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi.c:420,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/rfapi/rfapi.c:426,1
    - Dst: rfapi_nexthop_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:431,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:433,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 10
    argNames:
    - rfd
    - peer
    - bgp
    - safi
    - p
    - prd
    - type
    - sub_type
    - lnh
    - kill
    argTypes:
    - struct rfapi_descriptor*
    - struct peer*
    - struct bgp*
    - safi_t
    - struct prefix*
    - struct prefix_rd*
    - uint8_t
    - uint8_t
    - struct rfapi_nexthop*
    - int
    assertStmts:
    - condition: (afi == AFI_IP || afi == AFI_IP6)
      pos:
        line_end: 356
        line_start: 356
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 437
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 437
    functionName: del_vnc_route
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - bgp_afi_node_get
    - memset
    - vnc_zlog_debug_verbose
    - listnode_delete
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - rfapi_nexthop_free
    - ATTR_FLAG_BIT
    - bgp_dest_get_bgp_path_info
    - family2afi
    - assert
    linkageType: ''
    returnType: void
    signature: "void del_vnc_route(struct rfapi_descriptor *rfd,\n\t\t   struct peer
      *peer, /* rfd->peer for RFP regs */\n\t\t   struct bgp *bgp, safi_t safi, const
      struct prefix *p,\n\t\t   struct prefix_rd *prd, uint8_t type, uint8_t sub_type,\n\t\t
      \  struct rfapi_nexthop *lnh, int kill)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - copyme
    argTypes:
    - struct rfapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 489
    functionName: rfapi_nexthop_new
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rfapi_nexthop
    signature: struct rfapi_nexthop *rfapi_nexthop_new(struct rfapi_nexthop *copyme)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 495
    functionName: rfapi_nexthop_free
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapi_nexthop_free(void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - existing
    argTypes:
    - struct rfapi_vn_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 518
    functionName: rfapi_vn_options_dup
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct rfapi_vn_option
    signature: struct rfapi_vn_option *rfapi_vn_options_dup(struct rfapi_vn_option
      *existing)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct rfapi_un_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 529
    functionName: rfapi_un_options_free
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapi_un_options_free(struct rfapi_un_option *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct rfapi_vn_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 540
    functionName: rfapi_vn_options_free
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapi_vn_options_free(struct rfapi_vn_option *p)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:584,1
    - Dst: RFAPI_0_ETHERADDR
      Src: /src/frr/bgpd/rfapi/rfapi.c:593,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi.c:606,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:607,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:609,1
    - Dst: afi2str
      Src: /src/frr/bgpd/rfapi/rfapi.c:609,1
    - Dst: safi2str
      Src: /src/frr/bgpd/rfapi/rfapi.c:610,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/rfapi/rfapi.c:615,1
    - Dst: rfapi_tunneltype_option_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi.c:637,1
    - Dst: rfapi_tunneltype_option_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi.c:649,1
    - Dst: rfapi_tunneltype_option_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi.c:655,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:662,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/rfapi/rfapi.c:665,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:672,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:677,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:698,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:707,1
    - Dst: htonl
      Src: /src/frr/bgpd/rfapi/rfapi.c:712,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi.c:713,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi.c:714,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:715,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi.c:725,1
    - Dst: encap_tlv_dup
      Src: /src/frr/bgpd/rfapi/rfapi.c:732,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi.c:737,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi.c:742,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:749,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi.c:761,1
    - Dst: bgp_attr_set_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi.c:770,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi.c:786,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/rfapi/rfapi.c:786,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:787,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi.c:787,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:798,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/rfapi/rfapi.c:803,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi.c:803,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi.c:811,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/rfapi/rfapi.c:812,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi.c:812,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi.c:816,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:819,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi.c:820,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:822,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:853,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi.c:857,1
    - Dst: bgp_redist_lookup
      Src: /src/frr/bgpd/rfapi/rfapi.c:869,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:873,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/rfapi/rfapi.c:876,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/rfapi.c:889,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/rfapi/rfapi.c:891,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/rfapi.c:908,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/rfapi.c:929,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi.c:940,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi.c:944,1
    - Dst: rfapi_nexthop_new
      Src: /src/frr/bgpd/rfapi/rfapi.c:953,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi.c:954,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 144
    argCount: 17
    argNames:
    - rfd
    - bgp
    - safi
    - p
    - prd
    - nexthop
    - local_pref
    - lifetime
    - rfp_options
    - options_un
    - options_vn
    - rt_export_list
    - med
    - label
    - type
    - sub_type
    - flags
    argTypes:
    - struct rfapi_descriptor*
    - struct bgp*
    - int
    - struct prefix*
    - struct prefix_rd*
    - struct rfapi_ip_addr*
    - uint32_t*
    - uint32_t*
    - struct bgp_tea_options*
    - struct rfapi_un_option*
    - struct rfapi_vn_option*
    - struct ecommunity*
    - uint32_t*
    - uint32_t*
    - uint8_t
    - uint8_t
    - int
    assertStmts:
    - condition: (bgp_attr_get_ecommunity(&attr))
      pos:
        line_end: 786
        line_start: 786
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (0)
      pos:
        line_end: 852
        line_start: 852
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (afi == AFI_IP || afi == AFI_IP6)
      pos:
        line_end: 606
        line_start: 606
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 958
      start: 543
    functionDepth: 10
    functionLinenumber: 543
    functionLinenumberEnd: 958
    functionName: add_vnc_route
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - safi2str
    - ecommunity_new
    - afi2str
    - listnode_add
    - htonl
    - bgp_attr_intern
    - rfapi_nexthop_new
    - memset
    - vnc_zlog_debug_verbose
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - RFAPI_0_ETHERADDR
    - ecommunity_merge
    - bgp_attr_default_set
    - assert
    - aspath_unintern
    - prefix_same
    - bgp_afi_node_get
    - rfapi_tunneltype_option_to_tlv
    - bgp_attr_get_ecommunity
    - bgp_attr_get_vnc_subtlvs
    - family2afi
    - bgp_attr_set_vnc_subtlvs
    - memcpy
    - ecommunity_free
    - ATTR_FLAG_BIT
    - bgp_redist_lookup
    - list_new
    - ecommunity_add_val
    - bgp_dest_get_bgp_path_info
    - bgp_attr_set_ecommunity
    - encap_tlv_dup
    linkageType: ''
    returnType: void
    signature: "void add_vnc_route(struct rfapi_descriptor *rfd, /* cookie, VPN UN
      addr, peer */\n\t\t   struct bgp *bgp, int safi, const struct prefix *p,\n\t\t
      \  struct prefix_rd *prd, struct rfapi_ip_addr *nexthop,\n\t\t   uint32_t *local_pref,\n\t\t
      \  uint32_t *lifetime, /* NULL => dont send lifetime */\n\t\t   struct bgp_tea_options
      *rfp_options,\n\t\t   struct rfapi_un_option *options_un,\n\t\t   struct rfapi_vn_option
      *options_vn,\n\t\t   struct ecommunity *rt_export_list, /* Copied, not consumed
      */\n\t\t   uint32_t *med,\t\t   /* NULL => don't set med */\n\t\t   uint32_t
      *label,\t\t   /* low order 3 bytes */\n\t\t   uint8_t type, uint8_t sub_type,
      /* RFP, NORMAL or REDIST */\n\t\t   int flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cost
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1069
    functionDepth: 0
    functionLinenumber: 1069
    functionLinenumberEnd: 1072
    functionName: rfp_cost_to_localpref
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rfp_cost_to_localpref(uint8_t cost)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfp_cost_to_localpref
      Src: /src/frr/bgpd/rfapi/rfapi.c:1081,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1083,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1084,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:1089,1
    - Dst: add_vnc_route
      Src: /src/frr/bgpd/rfapi/rfapi.c:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - bgp
    - rfd
    - pLifetime
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - uint32_t*
    assertStmts:
    - condition: (!rc)
      pos:
        line_end: 1083
        line_start: 1083
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 1107
      start: 1074
    functionDepth: 11
    functionLinenumber: 1074
    functionLinenumberEnd: 1107
    functionName: rfapiTunnelRouteAnnounce
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapiRaddr2Qprefix
    - memset
    - add_vnc_route
    - rfp_cost_to_localpref
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiTunnelRouteAnnounce(struct bgp *bgp,\n\t\t\t\t     struct
      rfapi_descriptor *rfd,\n\t\t\t\t     uint32_t *pLifetime)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_bgp_lookup_by_rfp
      Src: /src/frr/bgpd/rfapi/rfapi.c:1136,1
    - Dst: download_type::download_type
      Src: /src/frr/bgpd/rfapi/rfapi.c:1142,1
    - Dst: ftd_advertisement_interval::ftd_advertisement_interval
      Src: /src/frr/bgpd/rfapi/rfapi.c:1143,1
    - Dst: holddown_factor::holddown_factor
      Src: /src/frr/bgpd/rfapi/rfapi.c:1144,1
    - Dst: use_updated_response::use_updated_response
      Src: /src/frr/bgpd/rfapi/rfapi.c:1146,1
    - Dst: use_updated_response::use_updated_response
      Src: /src/frr/bgpd/rfapi/rfapi.c:1147,1
    - Dst: rfapiMonitorCallbacksOn
      Src: /src/frr/bgpd/rfapi/rfapi.c:1149,1
    - Dst: rfapiMonitorCallbacksOff
      Src: /src/frr/bgpd/rfapi/rfapi.c:1151,1
    - Dst: use_removes::use_removes
      Src: /src/frr/bgpd/rfapi/rfapi.c:1153,1
    - Dst: use_removes::use_removes
      Src: /src/frr/bgpd/rfapi/rfapi.c:1154,1
    - Dst: rfapiMonitorResponseRemovalOn
      Src: /src/frr/bgpd/rfapi/rfapi.c:1156,1
    - Dst: rfapiMonitorResponseRemovalOff
      Src: /src/frr/bgpd/rfapi/rfapi.c:1158,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - rfp_start_val
    - new
    argTypes:
    - void*
    - struct rfapi_rfp_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1161
    functionName: rfapi_rfp_set_configuration
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapiMonitorResponseRemovalOff
    - ftd_advertisement_interval::ftd_advertisement_interval
    - use_removes::use_removes
    - download_type::download_type
    - holddown_factor::holddown_factor
    - rfapiMonitorResponseRemovalOn
    - rfapi_bgp_lookup_by_rfp
    - use_updated_response::use_updated_response
    - rfapiMonitorCallbacksOff
    - rfapiMonitorCallbacksOn
    linkageType: ''
    returnType: int
    signature: int rfapi_rfp_set_configuration(void *rfp_start_val, struct rfapi_rfp_cfg
      *new)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_bgp_lookup_by_rfp
      Src: /src/frr/bgpd/rfapi/rfapi.c:1184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - rfp_start_val
    - methods
    argTypes:
    - void*
    - struct rfapi_rfp_cb_methods*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1178
    functionDepth: 1
    functionLinenumber: 1178
    functionLinenumberEnd: 1195
    functionName: rfapi_rfp_set_cb_methods
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_bgp_lookup_by_rfp
    linkageType: ''
    returnType: int
    signature: "int rfapi_rfp_set_cb_methods(void *rfp_start_val,\n\t\t\t     struct
      rfapi_rfp_cb_methods *methods)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_set_autord_from_vn
      Src: /src/frr/bgpd/rfapi/rfapi.c:1225,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/rfapi/rfapi.c:1230,1
    - Dst: peer_new
      Src: /src/frr/bgpd/rfapi/rfapi.c:1238,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/rfapi/rfapi.c:1245,1
    - Dst: stream_fifo_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:1248,1
    - Dst: stream_fifo_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:1250,1
    - Dst: ringbuf_del
      Src: /src/frr/bgpd/rfapi/rfapi.c:1253,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi.c:1265,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi.c:1268,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/rfapi/rfapi.c:1271,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:1274,1
    - Dst: RFD_RTINIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:1300,1
    - Dst: RFD_RTINIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:1301,1
    - Dst: RFD_RTINIT
      Src: /src/frr/bgpd/rfapi/rfapi.c:1302,1
    - Dst: rfapiApInit
      Src: /src/frr/bgpd/rfapi/rfapi.c:1310,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/rfapi.c:1316,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi.c:1318,1
    - Dst: vnc_direct_bgp_add_nve
      Src: /src/frr/bgpd/rfapi/rfapi.c:1320,1
    - Dst: vnc_zebra_add_nve
      Src: /src/frr/bgpd/rfapi/rfapi.c:1321,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 4
    argNames:
    - rfd
    - bgp
    - h
    - rfg
    argTypes:
    - struct rfapi_descriptor*
    - struct bgp*
    - struct rfapi*
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1206
    functionDepth: 3
    functionLinenumber: 1206
    functionLinenumberEnd: 1324
    functionName: rfapi_open_inner
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - ringbuf_del
    - stream_fifo_free
    - frr_with_mutex
    - vnc_direct_bgp_add_nve
    - RFD_RTINIT
    - listnode_add
    - vnc_zebra_add_nve
    - inet_ntop
    - SET_FLAG
    - rfapi_set_autord_from_vn
    - peer_new
    - rfapiApInit
    - list_new
    - ecommunity_dup
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int rfapi_open_inner(struct rfapi_descriptor *rfd, struct bgp *bgp,\n\t\t\t
      \   struct rfapi *h, struct rfapi_nve_group_cfg *rfg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - rh
    - ','
    - ary
    - ','
    - afi
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1292
    functionName: RFD_RTINIT_AFI
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFD_RTINIT_AFI(rh, ary, afi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rh
    - ','
    - ary
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1293
    functionDepth: 0
    functionLinenumber: 1293
    functionLinenumberEnd: 1299
    functionName: RFD_RTINIT
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFD_RTINIT(rh, ary)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi.c:1337,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:1340,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi.c:1342,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi.c:1343,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1345,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi.c:1350,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi.c:1358,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi.c:1359,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1360,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1361,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1361,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi.c:1363,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1364,1
    - Dst: rfapi_open_inner
      Src: /src/frr/bgpd/rfapi/rfapi.c:1369,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - bgp
    - rfd
    - rfg
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct rfapi_nve_group_cfg*
    assertStmts:
    - condition: (afi_vn && afi_un)
      pos:
        line_end: 1359
        line_start: 1359
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (!rfapiRaddr2Qprefix(&rfd->un_addr, &pfx_un))
      pos:
        line_end: 1360
        line_start: 1360
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (rn)
      pos:
        line_end: 1363
        line_start: 1363
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 1370
      start: 1327
    functionDepth: 4
    functionLinenumber: 1327
    functionLinenumberEnd: 1370
    functionName: rfapi_init_and_open
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - agg_node_get
    - rfapiRaddr2Qprefix
    - vnc_zlog_debug_verbose
    - rfapi_open_inner
    - rfapiRfapiIpAddr2Str
    - monotime
    - listnode_add
    - SET_FLAG
    - family2afi
    - assert
    linkageType: ''
    returnType: int
    signature: "int rfapi_init_and_open(struct bgp *bgp, struct rfapi_descriptor *rfd,\n\t\t\tstruct
      rfapi_nve_group_cfg *rfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:1381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct rfapi_vn_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1372
    functionDepth: 0
    functionLinenumber: 1372
    functionLinenumberEnd: 1393
    functionName: rfapiVnOptionsDup
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct rfapi_vn_option
    signature: struct rfapi_vn_option *rfapiVnOptionsDup(struct rfapi_vn_option *orig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:1404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct rfapi_un_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1416
    functionName: rfapiUnOptionsDup
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct rfapi_un_option
    signature: struct rfapi_un_option *rfapiUnOptionsDup(struct rfapi_un_option *orig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:1427,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:1432,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi.c:1434,1
    - Dst: value::value
      Src: /src/frr/bgpd/rfapi/rfapi.c:1434,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct bgp_tea_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1418
    functionDepth: 0
    functionLinenumber: 1418
    functionLinenumberEnd: 1443
    functionName: rfapiOptionsDup
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - value::value
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct bgp_tea_options
    signature: struct bgp_tea_options *rfapiOptionsDup(struct bgp_tea_options *orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:1452,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:1453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct bgp_tea_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1445
    functionDepth: 0
    functionLinenumber: 1445
    functionLinenumberEnd: 1457
    functionName: rfapiFreeBgpTeaOptionChain
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapiFreeBgpTeaOptionChain(struct bgp_tea_options *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adb
    argTypes:
    - struct rfapi_adb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1459
    functionDepth: 0
    functionLinenumber: 1459
    functionLinenumberEnd: 1462
    functionName: rfapiAdbFree
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapiAdbFree(struct rfapi_adb *adb)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1483,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1488,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1493,1
    - Dst: is_valid_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:1499,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1500,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi.c:1506,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi.c:1508,1
    - Dst: memcmp
      Src: /src/frr/bgpd/rfapi/rfapi.c:1512,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1529,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1529,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:1533,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1542,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi.c:1545,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1547,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:1550,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi.c:1553,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1554,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:1556,1
    - Dst: rfapiL2o2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1568,1
    - Dst: bgp_rfapi_get_ecommunity_by_lni_label
      Src: /src/frr/bgpd/rfapi/rfapi.c:1570,1
    - Dst: rfapiMonitorEthAdd
      Src: /src/frr/bgpd/rfapi/rfapi.c:1587,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:1594,1
    - Dst: rfapiEthRouteTable2NextHopList
      Src: /src/frr/bgpd/rfapi/rfapi.c:1602,1
    - Dst: rfapiMonitorAdd
      Src: /src/frr/bgpd/rfapi/rfapi.c:1615,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi.c:1624,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1626,1
    - Dst: rfapiRouteTable2NextHopList
      Src: /src/frr/bgpd/rfapi/rfapi.c:1631,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi.c:1639,1
    - Dst: rfapiMonitorGetAttachNode
      Src: /src/frr/bgpd/rfapi/rfapi.c:1650,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1654,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi.c:1656,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1657,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/rfapi.c:1662,1
    - Dst: rfapiShowImportTable
      Src: /src/frr/bgpd/rfapi/rfapi.c:1663,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:1671,1
    - Dst: rfapiEthRouteNode2NextHopList
      Src: /src/frr/bgpd/rfapi/rfapi.c:1679,1
    - Dst: rfapiRouteNode2NextHopList
      Src: /src/frr/bgpd/rfapi/rfapi.c:1688,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi.c:1693,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1702,1
    - Dst: rfapi_free_next_hop_list
      Src: /src/frr/bgpd/rfapi/rfapi.c:1717,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1720,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 124
    argCount: 4
    argNames:
    - handle
    - target
    - l2o
    - ppNextHopEntry
    argTypes:
    - void*
    - struct rfapi_ip_addr*
    - struct rfapi_l2address_option*
    - struct rfapi_next_hop_entry**
    assertStmts:
    - condition: (!rfapiRaddr2Qprefix(target, &p_original))
      pos:
        line_end: 1528
        line_start: 1528
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (afi)
      pos:
        line_end: 1553
        line_start: 1553
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (rn)
      pos:
        line_end: 1653
        line_start: 1653
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 1722
      start: 1464
    functionDepth: 5
    functionLinenumber: 1464
    functionLinenumberEnd: 1722
    functionName: rfapi_query_inner
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - memcmp
    - rfapiL2o2Qprefix
    - memset
    - vnc_zlog_debug_verbose
    - rfapiMonitorGetAttachNode
    - agg_unlock_node
    - bgp_rfapi_get_ecommunity_by_lni_label
    - rfapi_free_next_hop_list
    - is_valid_rfd
    - assert
    - rfapiMonitorAdd
    - ecommunity_ecom2str
    - monotime
    - RFAPI_0_PREFIX
    - XFREE
    - VNC_DEBUG
    - family2afi
    - rfapiRouteNode2NextHopList
    - rfapiEthRouteTable2NextHopList
    - rfapiRaddr2Qprefix
    - CHECK_FLAG
    - rfapiRouteTable2NextHopList
    - rfapiShowImportTable
    - rfapiEthRouteNode2NextHopList
    - rfapiMonitorEthAdd
    - agg_lock_node
    linkageType: ''
    returnType: int
    signature: "int rfapi_query_inner(void *handle, struct rfapi_ip_addr *target,\n\t\t
      \ struct rfapi_l2address_option *l2o, /* may be NULL */\n\t\t  struct rfapi_next_hop_entry
      **ppNextHopEntry)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1746,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1747,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1749,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1750,1
    - Dst: bgp_rfapi_cfg_match_group
      Src: /src/frr/bgpd/rfapi/rfapi.c:1755,1
    - Dst: rfapi_open_inner
      Src: /src/frr/bgpd/rfapi/rfapi.c:1768,1
    - Dst: rfapiApReadvertiseAll
      Src: /src/frr/bgpd/rfapi/rfapi.c:1776,1
    - Dst: rfapiMonitorAttachImportHd
      Src: /src/frr/bgpd/rfapi/rfapi.c:1782,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - rfd
    - bgp
    argTypes:
    - struct rfapi_descriptor*
    - struct bgp*
    assertStmts:
    - condition: (!rc)
      pos:
        line_end: 1749
        line_start: 1749
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (!rc)
      pos:
        line_end: 1746
        line_start: 1746
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 1786
      start: 1729
    functionDepth: 4
    functionLinenumber: 1729
    functionLinenumberEnd: 1786
    functionName: rfapi_open_rfd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapiRaddr2Qprefix
    - rfapiApReadvertiseAll
    - bgp_rfapi_cfg_match_group
    - rfapi_open_inner
    - rfapiMonitorAttachImportHd
    - assert
    linkageType: ''
    returnType: int
    signature: int rfapi_open_rfd(struct rfapi_descriptor *rfd, struct bgp *bgp)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:1850,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi.c:1852,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi.c:1853,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1856,1
    - Dst: rfapi_bgp_lookup_by_rfp
      Src: /src/frr/bgpd/rfapi/rfapi.c:1859,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1874,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1875,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:1877,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1878,1
    - Dst: rfapi_find_handle
      Src: /src/frr/bgpd/rfapi/rfapi.c:1883,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:1889,1
    - Dst: bgp_rfapi_cfg_match_group
      Src: /src/frr/bgpd/rfapi/rfapi.c:1903,1
    - Dst: zlog_notice
      Src: /src/frr/bgpd/rfapi/rfapi.c:1908,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi.c:1910,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi.c:1912,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:1943,1
    - Dst: rfapi_init_and_open
      Src: /src/frr/bgpd/rfapi/rfapi.c:1969,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:1978,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 68
    argCount: 7
    argNames:
    - rfp_start_val
    - vn
    - un
    - default_options
    - response_lifetime
    - userdata
    - pHandle
    argTypes:
    - void*
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    - struct rfapi_un_option*
    - uint32_t*
    - void*
    - rfapi_handle*
    assertStmts:
    - condition: (pHandle)
      pos:
        line_end: 1855
        line_start: 1855
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (!rc)
      pos:
        line_end: 1874
        line_start: 1874
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (!rc)
      pos:
        line_end: 1877
        line_start: 1877
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (!rc)
      pos:
        line_end: 1977
        line_start: 1977
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 1985
      start: 1828
    functionDepth: 5
    functionLinenumber: 1828
    functionLinenumberEnd: 1985
    functionName: rfapi_open
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapiRaddr2Qprefix
    - bgp_rfapi_cfg_match_group
    - vnc_zlog_debug_verbose
    - XCALLOC
    - rfapiRfapiIpAddr2Str
    - CHECK_FLAG
    - rfapi_init_and_open
    - zlog_notice
    - rfapi_bgp_lookup_by_rfp
    - rfapi_find_handle
    - assert
    linkageType: ''
    returnType: int
    signature: "int rfapi_open(void *rfp_start_val, struct rfapi_ip_addr *vn,\n\t
      \      struct rfapi_ip_addr *un,\n\t       struct rfapi_un_option *default_options,\n\t
      \      uint32_t *response_lifetime,\n\t       void *userdata, /* callback cookie
      */\n\t       rfapi_handle *pHandle)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:1993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rfd
    - response_cb
    argTypes:
    - struct rfapi_descriptor*
    - rfapi_response_cb_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1990
    functionDepth: 5
    functionLinenumber: 1990
    functionLinenumberEnd: 1997
    functionName: rfapi_set_response_cb
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - is_valid_rfd
    linkageType: ''
    returnType: int
    signature: "int rfapi_set_response_cb(struct rfapi_descriptor *rfd,\n\t\t\t\t
      rfapi_response_cb_t *response_cb)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2018,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:2021,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2022,1
    - Dst: vnc_direct_bgp_del_nve
      Src: /src/frr/bgpd/rfapi/rfapi.c:2028,1
    - Dst: vnc_zebra_del_nve
      Src: /src/frr/bgpd/rfapi/rfapi.c:2029,1
    - Dst: rfapiMonitorDetachImportHd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2034,1
    - Dst: rfapiImportTableRefDelByIt
      Src: /src/frr/bgpd/rfapi/rfapi.c:2042,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:2048,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/rfapi.c:2056,1
    - Dst: rfapiApWithdrawAll
      Src: /src/frr/bgpd/rfapi/rfapi.c:2071,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/rfapi/rfapi.c:2078,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:2083,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2091,1
    - Dst: peer_delete
      Src: /src/frr/bgpd/rfapi/rfapi.c:2093,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 2
    argNames:
    - rfd
    - bgp
    argTypes:
    - struct rfapi_descriptor*
    - struct bgp*
    assertStmts:
    - condition: (!rc)
      pos:
        line_end: 2021
        line_start: 2021
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 2098
      start: 2012
    functionDepth: 9
    functionLinenumber: 2012
    functionLinenumberEnd: 2098
    functionName: rfapi_close_inner
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapiRaddr2Qprefix
    - memset
    - listnode_delete
    - vnc_zlog_debug_verbose
    - peer_delete
    - vnc_zebra_del_nve
    - rfapiMonitorDetachImportHd
    - rfapiImportTableRefDelByIt
    - rfapiApWithdrawAll
    - is_valid_rfd
    - vnc_direct_bgp_del_nve
    - del_vnc_route
    - assert
    - ecommunity_free
    linkageType: ''
    returnType: int
    signature: int rfapi_close_inner(struct rfapi_descriptor *rfd, struct bgp *bgp)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2108,1
    - Dst: backtrace
      Src: /src/frr/bgpd/rfapi/rfapi.c:2119,1
    - Dst: backtrace_symbols
      Src: /src/frr/bgpd/rfapi/rfapi.c:2120,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2123,1
    - Dst: free
      Src: /src/frr/bgpd/rfapi/rfapi.c:2126,1
    - Dst: is_valid_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2139,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:2147,1
    - Dst: work_queue_add
      Src: /src/frr/bgpd/rfapi/rfapi.c:2149,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2150,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:2157,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2159,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2163,1
    - Dst: rfapi_close_inner
      Src: /src/frr/bgpd/rfapi/rfapi.c:2187,1
    - Dst: rfapi_find_node
      Src: /src/frr/bgpd/rfapi/rfapi.c:2195,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi.c:2210,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/rfapi/rfapi.c:2216,1
    - Dst: rfapiMonitorDelHd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2221,1
    - Dst: rfapiApRelease
      Src: /src/frr/bgpd/rfapi/rfapi.c:2226,1
    - Dst: rfapiRibFree
      Src: /src/frr/bgpd/rfapi/rfapi.c:2231,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:2236,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:2237,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 1
    argNames:
    - handle
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2100
    functionDepth: 10
    functionLinenumber: 2100
    functionLinenumberEnd: 2240
    functionName: rfapi_close
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapiApRelease
    - rfapiMonitorDelHd
    - memset
    - vnc_zlog_debug_verbose
    - listnode_delete
    - CHECK_FLAG
    - free
    - backtrace
    - work_queue_add
    - agg_unlock_node
    - rfapi_find_node
    - backtrace_symbols
    - XFREE
    - rfapi_close_inner
    - is_valid_rfd
    - rfapiRibFree
    linkageType: ''
    returnType: int
    signature: int rfapi_close(void *handle)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_close_inner
      Src: /src/frr/bgpd/rfapi/rfapi.c:2264,1
    - Dst: rfapi_open_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2267,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:2271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi.c:2273,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - rfd
    - bgp
    argTypes:
    - struct rfapi_descriptor*
    - struct bgp*
    assertStmts:
    - condition: (h != NULL && !CHECK_FLAG(h->flags, RFAPI_INCALLBACK))
      pos:
        line_end: 2270
        line_start: 2270
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 2289
      start: 2259
    functionDepth: 10
    functionLinenumber: 2259
    functionLinenumberEnd: 2289
    functionName: rfapi_reopen
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_close_inner
    - CHECK_FLAG
    - rfapi_open_rfd
    - assert
    linkageType: ''
    returnType: int
    signature: int rfapi_reopen(struct rfapi_descriptor *rfd, struct bgp *bgp)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2329,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2352,1
    - Dst: rfapiRprefix2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:2352,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi.c:2354,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2355,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2357,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2369,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2374,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2382,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2392,1
    - Dst: is_valid_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2397,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2401,1
    - Dst: RFAPI_0_ETHERADDR
      Src: /src/frr/bgpd/rfapi/rfapi.c:2409,1
    - Dst: rfapiL2o2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:2410,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi.c:2417,1
    - Dst: RFAPI_HOST_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi.c:2417,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2421,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:2429,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2430,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi.c:2458,1
    - Dst: RFAPI_HOST_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi.c:2459,1
    - Dst: rfapiL2o2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:2461,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:2471,1
    - Dst: encode_rd_type
      Src: /src/frr/bgpd/rfapi/rfapi.c:2475,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi.c:2512,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/rfapi.c:2529,1
    - Dst: rfapiApDelete
      Src: /src/frr/bgpd/rfapi/rfapi.c:2537,1
    - Dst: rfapiTunnelRouteAnnounce
      Src: /src/frr/bgpd/rfapi/rfapi.c:2540,1
    - Dst: rfapiApCount
      Src: /src/frr/bgpd/rfapi/rfapi.c:2551,1
    - Dst: rfapiApAdd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2559,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2564,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2567,1
    - Dst: rfapiTunnelRouteAnnounce
      Src: /src/frr/bgpd/rfapi/rfapi.c:2569,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2573,1
    - Dst: rfp_cost_to_localpref
      Src: /src/frr/bgpd/rfapi/rfapi.c:2575,1
    - Dst: bgp_rfapi_get_ecommunity_by_lni_label
      Src: /src/frr/bgpd/rfapi/rfapi.c:2584,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/rfapi/rfapi.c:2588,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:2594,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/rfapi/rfapi.c:2603,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/rfapi/rfapi.c:2604,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi.c:2610,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/rfapi/rfapi.c:2629,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/rfapi/rfapi.c:2630,1
    - Dst: add_vnc_route
      Src: /src/frr/bgpd/rfapi/rfapi.c:2638,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:2655,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:2658,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 178
    argCount: 6
    argNames:
    - handle
    - prefix
    - lifetime
    - options_un
    - options_vn
    - action
    argTypes:
    - void*
    - struct rfapi_ip_prefix*
    - uint32_t
    - struct rfapi_un_option*
    - struct rfapi_vn_option*
    - rfapi_register_action
    assertStmts:
    - condition: (!rfapiRprefix2Qprefix(prefix, &p))
      pos:
        line_end: 2351
        line_start: 2351
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (0)
      pos:
        line_end: 2328
        line_start: 2328
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (afi)
      pos:
        line_end: 2354
        line_start: 2354
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 2660
      start: 2297
    functionDepth: 12
    functionLinenumber: 2297
    functionLinenumberEnd: 2660
    functionName: rfapi_register
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - ecommunity_new
    - rfapiApCount
    - rfapiL2o2Qprefix
    - rfapiApAdd
    - memset
    - vnc_zlog_debug_verbose
    - bgp_rfapi_get_ecommunity_by_lni_label
    - RFAPI_0_ETHERADDR
    - rfapiRprefix2Qprefix
    - rfapiApDelete
    - assert
    - is_valid_rfd
    - encode_rd_type
    - rfapiTunnelRouteAnnounce
    - rfp_cost_to_localpref
    - RFAPI_0_PREFIX
    - family2afi
    - del_vnc_route
    - memcpy
    - ecommunity_free
    - rfapiRaddr2Qprefix
    - add_vnc_route
    - ecommunity_add_val
    - ecommunity_dup
    - RFAPI_HOST_PREFIX
    linkageType: ''
    returnType: int
    signature: "int rfapi_register(void *handle, struct rfapi_ip_prefix *prefix,\n\t\t
      \  uint32_t lifetime, /* host byte order */\n\t\t   struct rfapi_un_option *options_un,\n\t\t
      \  struct rfapi_vn_option *options_vn,\n\t\t   rfapi_register_action action)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2670,1
    - Dst: rfapi_query_inner
      Src: /src/frr/bgpd/rfapi/rfapi.c:2683,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 4
    argNames:
    - handle
    - target
    - l2o
    - ppNextHopEntry
    argTypes:
    - void*
    - struct rfapi_ip_addr*
    - struct rfapi_l2address_option*
    - struct rfapi_next_hop_entry**
    assertStmts:
    - condition: (ppNextHopEntry)
      pos:
        line_end: 2669
        line_start: 2669
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 2688
      start: 2662
    functionDepth: 6
    functionLinenumber: 2662
    functionLinenumberEnd: 2688
    functionName: rfapi_query
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_query_inner
    - assert
    linkageType: ''
    returnType: int
    signature: "int rfapi_query(void *handle, struct rfapi_ip_addr *target,\n\t\tstruct
      rfapi_l2address_option *l2o, /* may be NULL */\n\t\tstruct rfapi_next_hop_entry
      **ppNextHopEntry)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2700,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi.c:2701,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:2702,1
    - Dst: is_valid_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2704,1
    - Dst: rfapiMonitorDel
      Src: /src/frr/bgpd/rfapi/rfapi.c:2714,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - handle
    - target
    argTypes:
    - rfapi_handle
    - struct rfapi_ip_addr*
    assertStmts:
    - condition: (target)
      pos:
        line_end: 2699
        line_start: 2699
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    - condition: (!rc)
      pos:
        line_end: 2701
        line_start: 2701
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 2717
      start: 2690
    functionDepth: 5
    functionLinenumber: 2690
    functionLinenumberEnd: 2717
    functionName: rfapi_query_done
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - is_valid_rfd
    - rfapiRaddr2Qprefix
    - assert
    - rfapiMonitorDel
    linkageType: ''
    returnType: int
    signature: int rfapi_query_done(rfapi_handle handle, struct rfapi_ip_addr *target)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_valid_rfd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2729,1
    - Dst: rfapiMonitorDelHd
      Src: /src/frr/bgpd/rfapi/rfapi.c:2739,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - handle
    - count
    argTypes:
    - rfapi_handle
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2719
    functionDepth: 5
    functionLinenumber: 2719
    functionLinenumberEnd: 2745
    functionName: rfapi_query_done_all
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapiMonitorDelHd
    - is_valid_rfd
    linkageType: ''
    returnType: int
    signature: int rfapi_query_done_all(rfapi_handle handle, int *count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_un_options_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:2754,1
    - Dst: rfapi_vn_options_free
      Src: /src/frr/bgpd/rfapi/rfapi.c:2756,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi.c:2758,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct rfapi_next_hop_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2760
      start: 2747
    functionDepth: 1
    functionLinenumber: 2747
    functionLinenumberEnd: 2760
    functionName: rfapi_free_next_hop_list
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 1
    functionsReached:
    - rfapi_vn_options_free
    - XFREE
    - rfapi_un_options_free
    linkageType: ''
    returnType: void
    signature: void rfapi_free_next_hop_list(struct rfapi_next_hop_entry *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi.c:2767,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - handle
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2783
      start: 2765
    functionDepth: 10
    functionLinenumber: 2765
    functionLinenumberEnd: 2783
    functionName: rfapi_monitor_count
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rfapi_monitor_count(void *handle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi.c:2849,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi.c:2852,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi.c:2854,1
    - Dst: rfapiPrintNhl
      Src: /src/frr/bgpd/rfapi/rfapi.c:2856,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi.c:2858,1
    - Dst: rfapi_free_next_hop_list
      Src: /src/frr/bgpd/rfapi/rfapi.c:2860,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - next_hops
    - userdata
    argTypes:
    - struct rfapi_next_hop_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2838
    functionDepth: 2
    functionLinenumber: 2838
    functionLinenumberEnd: 2861
    functionName: test_nexthops_callback
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapi_free_next_hop_list
    - rfapiPrintNhl
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void test_nexthops_callback(\n\t//    struct rfapi_ip_addr        *target,\n\tstruct
      rfapi_next_hop_entry *next_hops, void *userdata)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_rfapi_cfg_init
      Src: /src/frr/bgpd/rfapi/rfapi.c:3589,1
    - Dst: vnc_debug_init
      Src: /src/frr/bgpd/rfapi/rfapi.c:3590,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3592,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3593,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3595,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3596,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3597,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3598,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3599,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3600,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3601,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3602,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3604,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3607,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3608,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3609,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3612,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi.c:3613,1
    - Dst: rfapi_vty_init
      Src: /src/frr/bgpd/rfapi/rfapi.c:3616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3617
      start: 3587
    functionDepth: 1
    functionLinenumber: 3587
    functionLinenumberEnd: 3617
    functionName: rfapi_init
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 3
    functionsReached:
    - install_element
    - rfapi_vty_init
    - vnc_debug_init
    - bgp_rfapi_cfg_init
    linkageType: ''
    returnType: void
    signature: void rfapi_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/rfapi.c:3629,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/rfapi.c:3630,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/rfapi/rfapi.c:3633,1
    - Dst: fprintf
      Src: /src/frr/bgpd/rfapi/rfapi.c:3636,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/rfapi.c:3637,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/rfapi.c:3638,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/rfapi.c:3639,1
    - Dst: fprintf
      Src: /src/frr/bgpd/rfapi/rfapi.c:3643,1
    - Dst: rfapiPrintBi
      Src: /src/frr/bgpd/rfapi/rfapi.c:3645,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/rfapi.c:3649,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/rfapi.c:3650,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/rfapi/rfapi.c:3653,1
    - Dst: fprintf
      Src: /src/frr/bgpd/rfapi/rfapi.c:3656,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/rfapi.c:3657,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/rfapi.c:3658,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/rfapi.c:3659,1
    - Dst: fprintf
      Src: /src/frr/bgpd/rfapi/rfapi.c:3662,1
    - Dst: rfapiPrintBi
      Src: /src/frr/bgpd/rfapi/rfapi.c:3664,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3668
      start: 3620
    functionDepth: 2
    functionLinenumber: 3620
    functionLinenumberEnd: 3668
    functionName: rfapi_print_exported
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - bgp_table_top
    - fprintf
    - bgp_dest_get_bgp_path_info
    - rfapiPrintBi
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void rfapi_print_exported(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/rfapi/rfapi.c:3679,1
    - Dst: rfp_clear_vnc_nve_all
      Src: /src/frr/bgpd/rfapi/rfapi.c:3686,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/rfapi/rfapi.c:3697,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/rfapi.c:3700,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/rfapi/rfapi.c:3702,1
    - Dst: rfapi_close
      Src: /src/frr/bgpd/rfapi/rfapi.c:3704,1
    - Dst: bgp_rfapi_cfg_destroy
      Src: /src/frr/bgpd/rfapi/rfapi.c:3708,1
    - Dst: bgp_rfapi_destroy
      Src: /src/frr/bgpd/rfapi/rfapi.c:3710,1
    - Dst: rfapi_print_exported
      Src: /src/frr/bgpd/rfapi/rfapi.c:3716,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3718
      start: 3674
    functionDepth: 11
    functionLinenumber: 3674
    functionLinenumberEnd: 3718
    functionName: rfapi_delete
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 2
    functionsReached:
    - rfapi_print_exported
    - bgp_rfapi_destroy
    - zlog_debug
    - bgp_rfapi_cfg_destroy
    - ALL_LIST_ELEMENTS
    - rfp_clear_vnc_nve_all
    - rfapi_close
    linkageType: ''
    returnType: void
    signature: void rfapi_delete(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:3722,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:3724,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi.c:3733,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi.c:3735,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:3738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - rd
    - vn
    argTypes:
    - struct prefix_rd*
    - struct rfapi_ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3740
      start: 3720
    functionDepth: 0
    functionLinenumber: 3720
    functionLinenumberEnd: 3740
    functionName: rfapi_set_autord_from_vn
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 1
    functionsReached:
    - memcpy
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: int
    signature: int rfapi_set_autord_from_vn(struct prefix_rd *rd, struct rfapi_ip_addr
      *vn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi.c:3765,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/rfapi.c:3767,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - rfp_start_val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3772
      start: 3759
    functionDepth: 10
    functionLinenumber: 3759
    functionLinenumberEnd: 3772
    functionName: rfapi_bgp_lookup_by_rfp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 5
    functionsReached:
    - bgp_get_default
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct bgp
    signature: struct bgp *rfapi_bgp_lookup_by_rfp(void *rfp_start_val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3795
      start: 3790
    functionDepth: 0
    functionLinenumber: 3790
    functionLinenumberEnd: 3795
    functionName: rfapi_get_rfp_start_val_by_bgp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *rfapi_get_rfp_start_val_by_bgp(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:3805,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:3806,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - rfc
    - vty
    - size
    argTypes:
    - struct rfapi_cfg*
    - struct vty*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3810
      start: 3800
    functionDepth: 0
    functionLinenumber: 3800
    functionLinenumberEnd: 3810
    functionName: rfapi_rfp_get_or_init_group_config_default
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void *rfapi_rfp_get_or_init_group_config_default(struct rfapi_cfg
      *rfc,\n\t\t\t\t\t\t\tstruct vty *vty,\n\t\t\t\t\t\t\tuint32_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_GET_CONTEXT_SUB
      Src: /src/frr/bgpd/rfapi/rfapi.c:3817,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/rfapi/rfapi.c:3820,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi.c:3822,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:3827,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:3828,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rfc
    - vty
    - size
    argTypes:
    - struct rfapi_cfg*
    - struct vty*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3832
      start: 3812
    functionDepth: 1
    functionLinenumber: 3812
    functionLinenumberEnd: 3832
    functionName: rfapi_rfp_get_or_init_group_config_nve
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vnc_zlog_debug_verbose
    - XCALLOC
    - listnode_lookup
    - VTY_GET_CONTEXT_SUB
    linkageType: ''
    returnType: void
    signature: "void *rfapi_rfp_get_or_init_group_config_nve(struct rfapi_cfg *rfc,\n\t\t\t\t\t\t
      \   struct vty *vty,\n\t\t\t\t\t\t    uint32_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_GET_CONTEXT_SUB
      Src: /src/frr/bgpd/rfapi/rfapi.c:3839,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/rfapi/rfapi.c:3842,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi.c:3844,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi.c:3848,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:3849,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rfc
    - vty
    - size
    argTypes:
    - struct rfapi_cfg*
    - struct vty*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3853
      start: 3834
    functionDepth: 1
    functionLinenumber: 3834
    functionLinenumberEnd: 3853
    functionName: rfapi_rfp_get_or_init_group_config_l2
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vnc_zlog_debug_verbose
    - XCALLOC
    - listnode_lookup
    - VTY_GET_CONTEXT_SUB
    linkageType: ''
    returnType: void
    signature: "void *rfapi_rfp_get_or_init_group_config_l2(struct rfapi_cfg *rfc,\n\t\t\t\t\t\t
      \  struct vty *vty,\n\t\t\t\t\t\t   uint32_t size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_bgp_lookup_by_rfp
      Src: /src/frr/bgpd/rfapi/rfapi.c:3886,1
    - Dst: rfapi_rfp_get_or_init_group_config_default
      Src: /src/frr/bgpd/rfapi/rfapi.c:3892,1
    - Dst: rfapi_rfp_get_or_init_group_config_nve
      Src: /src/frr/bgpd/rfapi/rfapi.c:3896,1
    - Dst: rfapi_rfp_get_or_init_group_config_l2
      Src: /src/frr/bgpd/rfapi/rfapi.c:3900,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/rfapi.c:3904,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:3907,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - rfp_start_val
    - type
    - vty
    - size
    argTypes:
    - void*
    - rfapi_rfp_cfg_group_type
    - struct vty*
    - uint32_t
    assertStmts:
    - condition: ("Unknown type" == NULL)
      pos:
        line_end: 3906
        line_start: 3906
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 3911
      start: 3876
    functionDepth: 11
    functionLinenumber: 3876
    functionLinenumberEnd: 3911
    functionName: rfapi_rfp_init_group_config_ptr_vty
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_rfp_get_or_init_group_config_default
    - rfapi_rfp_get_or_init_group_config_l2
    - flog_err
    - rfapi_bgp_lookup_by_rfp
    - rfapi_rfp_get_or_init_group_config_nve
    - assert
    linkageType: ''
    returnType: void
    signature: "void *rfapi_rfp_init_group_config_ptr_vty(void *rfp_start_val,\n\t\t\t\t\t
      \ rfapi_rfp_cfg_group_type type,\n\t\t\t\t\t  struct vty *vty, uint32_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_rfp_init_group_config_ptr_vty
      Src: /src/frr/bgpd/rfapi/rfapi.c:3936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rfp_start_val
    - type
    - vty
    argTypes:
    - void*
    - rfapi_rfp_cfg_group_type
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3937
      start: 3932
    functionDepth: 12
    functionLinenumber: 3932
    functionLinenumberEnd: 3937
    functionName: rfapi_rfp_get_group_config_ptr_vty
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 0
    functionsReached:
    - rfapi_rfp_init_group_config_ptr_vty
    linkageType: ''
    returnType: void
    signature: "void *rfapi_rfp_get_group_config_ptr_vty(void *rfp_start_val,\n\t\t\t\t\t
      rfapi_rfp_cfg_group_type type,\n\t\t\t\t\t struct vty *vty)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi.c:3947,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi.c:3948,1
    - Dst: search_cb
      Src: /src/frr/bgpd/rfapi/rfapi.c:3949,1
    - Dst: search_cb
      Src: /src/frr/bgpd/rfapi/rfapi.c:3965,1
    - Dst: rfapi_rfp_get_group_config_name_nve
      Src: /src/frr/bgpd/rfapi/rfapi.c:4011,1
    - Dst: rfapi_rfp_get_group_config_name_l2
      Src: /src/frr/bgpd/rfapi/rfapi.c:4015,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/rfapi.c:4019,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi.c:4022,1
    - Dst: rfapi_rfp_get_l2_group_config_ptr_lni
      Src: /src/frr/bgpd/rfapi/rfapi.c:4050,1
    - Dst: rfapi_bgp_lookup_by_rfp
      Src: /src/frr/bgpd/rfapi/rfapi.c:4061,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi.c:4065,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi.c:4066,1
    - Dst: search_cb
      Src: /src/frr/bgpd/rfapi/rfapi.c:4068,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi.c:4070,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 3
    argCount: 4
    argNames:
    - rfc
    - name
    - criteria
    - search_cb
    argTypes:
    - struct rfapi_cfg*
    - char*
    - void*
    - rfp_group_config_search_cb_t*
    assertStmts:
    - condition: ("Unknown type" == NULL)
      pos:
        line_end: 4021
        line_start: 4021
        source_file: /src/frr/bgpd/rfapi/rfapi.c
    constantsTouched: []
    func_position:
      end: 4077
      start: 3939
    functionDepth: 11
    functionLinenumber: 3939
    functionLinenumberEnd: 4077
    functionName: rfapi_rfp_get_group_config_name_nve
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi.c
    functionUses: 1
    functionsReached:
    - rfapi_rfp_get_group_config_name_nve
    - rfapi_rfp_get_group_config_name_l2
    - vnc_zlog_debug_verbose
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - rfapi_rfp_get_l2_group_config_ptr_lni
    - flog_err
    - rfapi_bgp_lookup_by_rfp
    - search_cb
    - if
    - assert
    linkageType: ''
    returnType: void
    signature: "void *\nrfapi_rfp_get_group_config_name_nve(struct rfapi_cfg *rfc,
      const char *name,\n\t\t\t\t    void *criteria,\n\t\t\t\t    rfp_group_config_search_cb_t
      *search_cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: VALID_INTERIOR_TYPE
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALID_INTERIOR_TYPE(type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:68,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:72,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:82,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - attr
    - peer
    argTypes:
    - struct attr*
    - struct peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 60
    functionDepth: 10
    functionLinenumber: 60
    functionLinenumberEnd: 92
    functionName: calc_local_pref
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t calc_local_pref(struct attr *attr, struct peer *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 103
    functionName: is_host_prefix
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_host_prefix(const struct prefix *p)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - pfx1
    - pfx2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 164
    functionName: vnc_prefix_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vnc_prefix_cmp(const void *pfx1, const void *pfx2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pb
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: prefix_bag_free
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void prefix_bag_free(void *pb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:180,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:186,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:191,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - tag1
    - tag2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 172
    functionDepth: 10
    functionLinenumber: 172
    functionLinenumberEnd: 202
    functionName: print_rhn_list
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void print_rhn_list(const char *tag1, const char *tag2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:212,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:227,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:233,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:235,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:240,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:240,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:241,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:242,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:245,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - tag
    argTypes:
    - char*
    assertStmts:
    - condition: (!vnc_prefix_cmp(&pb->hpfx, pkey))
      pos:
        line_end: 239
        line_start: 239
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    - condition: (0)
      pos:
        line_end: 244
        line_start: 244
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 249
      start: 206
    functionDepth: 10
    functionLinenumber: 206
    functionLinenumberEnd: 249
    functionName: vnc_rhnck
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - rfapiUnicastNexthop2Prefix
    - memset
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - vnc_prefix_cmp
    - family2afi
    - assert
    linkageType: ''
    returnType: void
    signature: void vnc_rhnck(char *tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: VNC_RHNCK
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_RHNCK(n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:292,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:299,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:301,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:305,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:310,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:328,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:336,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:344,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:347,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:349,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:350,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:361,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:363,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:364,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:364,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:366,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:371,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:384,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:390,1
    - Dst: htons
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:393,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:394,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:396,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 6
    argNames:
    - bgp
    - afi
    - prefix
    - info
    - ecom
    - unicast_nexthop
    argTypes:
    - struct bgp*
    - afi_t
    - struct prefix*
    - struct bgp_path_info*
    - struct ecommunity**
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 278
    functionDepth: 5
    functionLinenumber: 278
    functionLinenumberEnd: 400
    functionName: process_unicast_route
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - ecommunity_new
    - rfapiUnicastNexthop2Prefix
    - memset
    - vnc_zlog_debug_verbose
    - htons
    - bgp_attr_get_ecommunity
    - prefix_list_apply
    - bgp_attr_flush
    - route_map_apply
    - ecommunity_add_val
    - ecommunity_dup
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int process_unicast_route(struct bgp *bgp,\t\t /* in */\n\t\t\t\t
      afi_t afi,\t\t\t /* in */\n\t\t\t\t const struct prefix *prefix,\t /* in */\n\t\t\t\t
      struct bgp_path_info *info,\t /* in */\n\t\t\t\t struct ecommunity **ecom,\t
      /* OUT */\n\t\t\t\t struct prefix *unicast_nexthop)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:436,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:440,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:441,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:444,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:449,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:450,1
    - Dst: rfapiGetVncLifetime
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:452,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:458,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:462,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:468,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:470,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:471,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:471,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:474,1
    - Dst: add_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:476,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:486,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 8
    argNames:
    - bgp
    - afi
    - bpi
    - prd
    - prefix
    - local_pref
    - med
    - ecom
    argTypes:
    - struct bgp*
    - afi_t
    - struct bgp_path_info*
    - struct prefix_rd*
    - struct prefix*
    - uint32_t*
    - uint32_t*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 403
    functionDepth: 11
    functionLinenumber: 403
    functionLinenumberEnd: 487
    functionName: vnc_import_bgp_add_route_mode_resolve_nve_one_bi
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - rfapiGetVncTunnelUnAddr
    - decode_label
    - memset
    - vnc_zlog_debug_verbose
    - CHECK_FLAG
    - bgp_attr_get_ecommunity
    - add_vnc_route
    - rfapiGetVncLifetime
    - rfapiNexthop2Prefix
    - ecommunity_merge
    - bgp_attr_get_vnc_subtlvs
    - ecommunity_dup
    - rfapiQprefix2Raddr
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_add_route_mode_resolve_nve_one_bi(\n\tstruct bgp
      *bgp, afi_t afi, struct bgp_path_info *bpi, /* VPN bpi */\n\tstruct prefix_rd
      *prd,\t\t\t\t       /* RD */\n\tconst struct prefix *prefix, /* unicast route
      prefix */\n\tuint32_t *local_pref,\t     /* NULL = no local_pref */\n\tuint32_t
      *med,\t\t     /* NULL = no med */\n\tstruct ecommunity *ecom)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:505,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:508,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:510,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:517,1
    - Dst: vnc_import_bgp_add_route_mode_resolve_nve_one_bi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:519,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:524,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 9
    argNames:
    - prd
    - table_rd
    - afi
    - bgp
    - prefix
    - ecom
    - local_pref
    - med
    - ubpi_nexthop
    argTypes:
    - struct prefix_rd*
    - struct bgp_table*
    - afi_t
    - struct bgp*
    - struct prefix*
    - struct ecommunity*
    - uint32_t*
    - uint32_t*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 489
    functionDepth: 12
    functionLinenumber: 489
    functionLinenumberEnd: 525
    functionName: vnc_import_bgp_add_route_mode_resolve_nve_one_rd
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - vnc_import_bgp_add_route_mode_resolve_nve_one_bi
    - vnc_zlog_debug_verbose
    - bgp_node_lookup
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_add_route_mode_resolve_nve_one_rd(\n\tstruct prefix_rd
      *prd,\t    /* RD */\n\tstruct bgp_table *table_rd, /* per-rd VPN route table
      */\n\tafi_t afi, struct bgp *bgp,\n\tconst struct prefix *prefix, /* unicast
      prefix */\n\tstruct ecommunity *ecom,     /* generated ecoms */\n\tuint32_t
      *local_pref,\t     /* NULL = no local_pref */\n\tuint32_t *med,\t\t     /* NULL
      = no med */\n\tstruct prefix *ubpi_nexthop)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:531,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:543,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:548,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:550,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:556,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:562,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:564,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:574,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:580,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:587,1
    - Dst: process_unicast_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:594,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:597,1
    - Dst: calc_local_pref
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:602,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:603,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:618,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:622,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:627,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:628,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:635,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:636,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:640,1
    - Dst: vnc_import_bgp_add_route_mode_resolve_nve_one_rd
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:645,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:646,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:653,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:655,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 527
    functionDepth: 13
    functionLinenumber: 527
    functionLinenumberEnd: 656
    functionName: vnc_import_bgp_add_route_mode_resolve_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - rfapiUnicastNexthop2Prefix
    - bgp_path_info_lock
    - flog_err
    - vnc_zlog_debug_verbose
    - XCALLOC
    - bgp_dest_get_prefix
    - process_unicast_route
    - vnc_import_bgp_add_route_mode_resolve_nve_one_rd
    - VNC_DEBUG
    - family2afi
    - zebra_route_string
    - ecommunity_free
    - bgp_route_next
    - bgp_table_top
    - ATTR_FLAG_BIT
    - calc_local_pref
    - skiplist_new
    - skiplist_insert
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_add_route_mode_resolve_nve(\n\tstruct bgp *bgp,
      const struct prefix *prefix, /* unicast prefix */\n\tstruct bgp_path_info *info)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:663,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:680,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:683,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:689,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:696,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:706,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:712,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:715,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:720,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:725,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:738,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:745,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:746,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:751,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:752,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:763,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:771,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:774,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:776,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:777,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:784,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:785,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:797,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:801,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:805,1
    - Dst: rfapi_set_autord_from_vn
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:806,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:808,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:809,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:809,1
    - Dst: calc_local_pref
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:812,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:814,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:818,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:821,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:822,1
    - Dst: add_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:826,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:836,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:838,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 659
    functionDepth: 11
    functionLinenumber: 659
    functionLinenumberEnd: 839
    functionName: vnc_import_bgp_add_route_mode_plain
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - rfapiUnicastNexthop2Prefix
    - flog_err
    - rfapi_set_autord_from_vn
    - rfapiQprefix2Raddr
    - bgp_attr_intern
    - memset
    - vnc_zlog_debug_verbose
    - vnc_zlog_debug_any
    - rfapiRfapiIpAddr2Str
    - bgp_attr_get_ecommunity
    - prefix_list_apply
    - VNC_DEBUG
    - family2afi
    - ecommunity_free
    - add_vnc_route
    - ATTR_FLAG_BIT
    - calc_local_pref
    - bgp_attr_flush
    - route_map_apply
    - ecommunity_dup
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_add_route_mode_plain(struct bgp *bgp,\n\t\t\t\t\t\tconst
      struct prefix *prefix,\n\t\t\t\t\t\tstruct bgp_path_info *info)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:845,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:859,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:861,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:864,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:870,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:877,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:891,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:897,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:900,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:905,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:910,1
    - Dst: is_host_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:927,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:929,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:935,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:940,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:941,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:946,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:947,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:958,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:966,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:969,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:971,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:972,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:979,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:980,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:992,1
    - Dst: rfapi_set_autord_from_vn
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:998,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1002,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1005,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1007,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1008,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1009,1
    - Dst: calc_local_pref
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1012,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1014,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1018,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1020,1
    - Dst: add_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1024,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1034,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1036,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 81
    argCount: 4
    argNames:
    - bgp
    - prefix
    - info
    - rfg
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    - struct rfapi_nve_group_cfg*
    assertStmts:
    - condition: (rfg)
      pos:
        line_end: 860
        line_start: 860
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 1037
      start: 841
    functionDepth: 11
    functionLinenumber: 841
    functionLinenumberEnd: 1037
    functionName: vnc_import_bgp_add_route_mode_nvegroup
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - ecommunity_new
    - rfapiQprefix2Rprefix
    - flog_err
    - rfapi_set_autord_from_vn
    - rfapiQprefix2Raddr
    - bgp_attr_intern
    - memset
    - vnc_zlog_debug_verbose
    - ecommunity_merge
    - vnc_zlog_debug_any
    - assert
    - rfapiRfapiIpAddr2Str
    - bgp_attr_get_ecommunity
    - prefix_list_apply
    - VNC_DEBUG
    - family2afi
    - ecommunity_free
    - add_vnc_route
    - calc_local_pref
    - bgp_attr_flush
    - route_map_apply
    - ecommunity_dup
    - is_host_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_add_route_mode_nvegroup(\n\tstruct bgp *bgp, const
      struct prefix *prefix,\n\tstruct bgp_path_info *info, struct rfapi_nve_group_cfg
      *rfg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1044,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1050,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1057,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1059,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1069,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1079,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1088,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1095,1
    - Dst: rfapi_set_autord_from_vn
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1096,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1097,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1103,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1105,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 1049
        line_start: 1049
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 1110
      start: 1039
    functionDepth: 3
    functionLinenumber: 1039
    functionLinenumberEnd: 1110
    functionName: vnc_import_bgp_del_route_mode_plain
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - memset
    - rfapiUnicastNexthop2Prefix
    - vnc_zlog_debug_verbose
    - rfapi_set_autord_from_vn
    - family2afi
    - del_vnc_route
    - assert
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_del_route_mode_plain(struct bgp *bgp,\n\t\t\t\t\t\tconst
      struct prefix *prefix,\n\t\t\t\t\t\tstruct bgp_path_info *info)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1117,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1123,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1126,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1143,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1153,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1162,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1168,1
    - Dst: rfapi_set_autord_from_vn
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1175,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1176,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1184,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1186,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts:
    - condition: (rfg)
      pos:
        line_end: 1125
        line_start: 1125
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    - condition: (afi)
      pos:
        line_end: 1122
        line_start: 1122
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 1191
      start: 1112
    functionDepth: 3
    functionLinenumber: 1112
    functionLinenumberEnd: 1191
    functionName: vnc_import_bgp_del_route_mode_nvegroup
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - memset
    - vnc_zlog_debug_verbose
    - rfapi_set_autord_from_vn
    - family2afi
    - del_vnc_route
    - assert
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_del_route_mode_nvegroup(struct bgp *bgp,\n\t\t\t\t\t\t
      \  const struct prefix *prefix,\n\t\t\t\t\t\t   struct bgp_path_info *info)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1211,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1215,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1216,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1219,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1223,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 5
    argNames:
    - bgp
    - afi
    - bpi
    - prd
    - prefix
    argTypes:
    - struct bgp*
    - afi_t
    - struct bgp_path_info*
    - struct prefix_rd*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1193
    functionDepth: 3
    functionLinenumber: 1193
    functionLinenumberEnd: 1227
    functionName: vnc_import_bgp_del_route_mode_resolve_nve_one_bi
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - rfapiGetVncTunnelUnAddr
    - memset
    - CHECK_FLAG
    - rfapiQprefix2Raddr
    - del_vnc_route
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_del_route_mode_resolve_nve_one_bi(\n\tstruct bgp
      *bgp, afi_t afi, struct bgp_path_info *bpi, /* VPN bpi */\n\tstruct prefix_rd
      *prd,\t\t\t\t       /* RD */\n\tconst struct prefix *prefix)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1242,1
    - Dst: bgp_node_lookup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1246,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1248,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1255,1
    - Dst: vnc_import_bgp_del_route_mode_resolve_nve_one_bi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1257,1
    - Dst: bgp_dest_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - prd
    - table_rd
    - afi
    - bgp
    - prefix
    - ubpi_nexthop
    argTypes:
    - struct prefix_rd*
    - struct bgp_table*
    - afi_t
    - struct bgp*
    - struct prefix*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1229
    functionDepth: 4
    functionLinenumber: 1229
    functionLinenumberEnd: 1264
    functionName: vnc_import_bgp_del_route_mode_resolve_nve_one_rd
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_dest_unlock_node
    - vnc_zlog_debug_verbose
    - bgp_node_lookup
    - vnc_import_bgp_del_route_mode_resolve_nve_one_bi
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_del_route_mode_resolve_nve_one_rd(\n\tstruct prefix_rd
      *prd,\n\tstruct bgp_table *table_rd, /* per-rd VPN route table */\n\tafi_t afi,
      struct bgp *bgp,\n\tconst struct prefix *prefix,\t   /* unicast prefix */\n\tconst
      struct prefix *ubpi_nexthop)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1283,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1289,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1291,1
    - Dst: process_unicast_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1296,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1299,1
    - Dst: skiplist_first_value
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1304,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1308,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1309,1
    - Dst: skiplist_next_value
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1312,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1321,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1322,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1326,1
    - Dst: vnc_import_bgp_del_route_mode_resolve_nve_one_rd
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1331,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1332,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1337,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - bgp
    - afi
    - prefix
    - info
    argTypes:
    - struct bgp*
    - afi_t
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1266
    functionDepth: 6
    functionLinenumber: 1266
    functionLinenumberEnd: 1338
    functionName: vnc_import_bgp_del_route_mode_resolve_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - ecommunity_free
    - vnc_import_bgp_del_route_mode_resolve_nve_one_rd
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - bgp_dest_get_prefix
    - skiplist_delete
    - skiplist_next_value
    - bgp_path_info_unlock
    - skiplist_first_value
    - zebra_route_string
    - bgp_dest_get_bgp_table_info
    - process_unicast_route
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_del_route_mode_resolve_nve(struct bgp *bgp, afi_t
      afi,\n\t\t\t\t\t  const struct prefix *prefix,\n\t\t\t\t\t  struct bgp_path_info
      *info)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1355,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1362,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1365,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1371,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1378,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1385,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1394,1
    - Dst: is_host_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1400,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1401,1
    - Dst: skiplist_first_value
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1406,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1413,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1416,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1417,1
    - Dst: process_unicast_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1422,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1425,1
    - Dst: calc_local_pref
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1430,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1433,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1439,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1440,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1443,1
    - Dst: vnc_import_bgp_add_route_mode_resolve_nve_one_bi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1446,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1452,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1457,1
    - Dst: print_rhn_list
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1460,1
    - Dst: skiplist_next_value
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1463,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1465,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 5
    argNames:
    - bgp
    - prd
    - table_rd
    - prefix
    - bpi
    argTypes:
    - struct bgp*
    - struct prefix_rd*
    - struct bgp_table*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1442
        line_start: 1442
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 1466
      start: 1349
    functionDepth: 12
    functionLinenumber: 1349
    functionLinenumberEnd: 1466
    functionName: vnc_import_bgp_add_vnc_host_route_mode_resolve_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 1
    functionsReached:
    - vnc_import_bgp_add_route_mode_resolve_nve_one_bi
    - ecommunity_free
    - memset
    - vnc_zlog_debug_verbose
    - vnc_prefix_cmp
    - ATTR_FLAG_BIT
    - print_rhn_list
    - calc_local_pref
    - skiplist_next_value
    - VNC_DEBUG
    - skiplist_first_value
    - family2afi
    - vnc_zlog_debug_any
    - is_host_prefix
    - assert
    - process_unicast_route
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_add_vnc_host_route_mode_resolve_nve(\n\tstruct
      bgp *bgp, struct prefix_rd *prd, /* RD */\n\tstruct bgp_table *table_rd,\t\t/*
      per-rd VPN route table */\n\tconst struct prefix *prefix,\t\t/* VPN prefix */\n\tstruct
      bgp_path_info *bpi)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1475,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1482,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1489,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1496,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1503,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1512,1
    - Dst: is_host_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1517,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1518,1
    - Dst: skiplist_first_value
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1525,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1531,1
    - Dst: process_unicast_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1534,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1537,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1546,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1547,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1550,1
    - Dst: vnc_import_bgp_del_route_mode_resolve_nve_one_bi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1553,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1557,1
    - Dst: skiplist_next_value
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1559,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 5
    argNames:
    - bgp
    - prd
    - table_rd
    - prefix
    - bpi
    argTypes:
    - struct bgp*
    - struct prefix_rd*
    - struct bgp_table*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1549
        line_start: 1549
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 1561
      start: 1469
    functionDepth: 6
    functionLinenumber: 1469
    functionLinenumberEnd: 1561
    functionName: vnc_import_bgp_del_vnc_host_route_mode_resolve_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 2
    functionsReached:
    - ecommunity_free
    - memset
    - vnc_zlog_debug_verbose
    - vnc_prefix_cmp
    - vnc_import_bgp_del_route_mode_resolve_nve_one_bi
    - skiplist_next_value
    - skiplist_first_value
    - family2afi
    - is_host_prefix
    - assert
    - process_unicast_route
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_del_vnc_host_route_mode_resolve_nve(\n\tstruct
      bgp *bgp, struct prefix_rd *prd, /* RD */\n\tstruct bgp_table *table_rd,\t\t/*
      per-rd VPN route table */\n\tconst struct prefix *prefix,\t\t/* VPN prefix */\n\tstruct
      bgp_path_info *bpi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1572,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1580,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - bpi_interior
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1588
    functionName: is_usable_interior_route
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - VALID_INTERIOR_TYPE
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: int
    signature: int is_usable_interior_route(struct bgp_path_info *bpi_interior)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1609,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1610,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1618,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1621,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1627,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1632,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1639,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1651,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1660,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1663,1
    - Dst: agg_node_match
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1670,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1674,1
    - Dst: is_usable_interior_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1683,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1686,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1701,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1707,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1710,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1713,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1717,1
    - Dst: prefix_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1731,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1732,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1733,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1734,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1737,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1739,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1740,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1741,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1742,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1745,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1748,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1750,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1751,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1755,1
    - Dst: prefix_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1758,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1759,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1760,1
    - Dst: bgp_path_info_lock
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1763,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 76
    argCount: 4
    argNames:
    - bgp
    - prefix
    - info
    - it_only
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    - struct rfapi_import_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1599
    functionDepth: 10
    functionLinenumber: 1599
    functionLinenumberEnd: 1767
    functionName: vnc_import_bgp_exterior_add_route_it
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - rfapiUnicastNexthop2Prefix
    - agg_node_match
    - bgp_path_info_lock
    - is_usable_interior_route
    - memset
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - agg_unlock_node
    - prefix_copy
    - decode_label
    - prefix_new
    - family2afi
    - rfapiBgpInfoFilteredImportVPN
    - ATTR_FLAG_BIT
    - agg_node_parent
    - RFAPI_MONITOR_EXTERIOR
    - skiplist_new
    - skiplist_insert
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_exterior_add_route_it(\n\tstruct bgp *bgp,\t\t
      \   /* exterior instance, we hope */\n\tconst struct prefix *prefix,\t    /*
      unicast prefix */\n\tstruct bgp_path_info *info,\t    /* unicast info */\n\tstruct
      rfapi_import_table *it_only)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_import_bgp_exterior_add_route_it
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1769
    functionDepth: 11
    functionLinenumber: 1769
    functionLinenumberEnd: 1775
    functionName: vnc_import_bgp_exterior_add_route
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 4
    functionsReached:
    - vnc_import_bgp_exterior_add_route_it
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_exterior_add_route(\n\tstruct bgp *bgp,\t     /*
      exterior instance, we hope */\n\tconst struct prefix *prefix, /* unicast prefix
      */\n\tstruct bgp_path_info *info)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1794,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1795,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1800,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1807,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1813,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1818,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1824,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1836,1
    - Dst: agg_node_match
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1847,1
    - Dst: is_usable_interior_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1856,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1870,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1875,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1889,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1891,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1892,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1897,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1899,1
    - Dst: skiplist_empty
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1903,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1904,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1907,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1908,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1911,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1914,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1922,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1924,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1925,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1929,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1932,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1935,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 63
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1786
    functionDepth: 10
    functionLinenumber: 1786
    functionLinenumberEnd: 1939
    functionName: vnc_import_bgp_exterior_del_route
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 5
    functionsReached:
    - skiplist_empty
    - decode_label
    - rfapiUnicastNexthop2Prefix
    - memset
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - agg_node_match
    - skiplist_delete
    - agg_node_parent
    - agg_unlock_node
    - RFAPI_MONITOR_EXTERIOR
    - bgp_path_info_unlock
    - skiplist_free
    - agg_lock_node
    - family2afi
    - rfapiBgpInfoFilteredImportVPN
    - is_usable_interior_route
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_exterior_del_route(\n\tstruct bgp *bgp, const
      struct prefix *prefix, /* unicast prefix */\n\tstruct bgp_path_info *info)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1953,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1954,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1962,1
    - Dst: is_usable_interior_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1964,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1965,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1971,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1978,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1984,1
    - Dst: RFAPI_HAS_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1987,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1989,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1991,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:1999,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2000,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2003,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2004,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2012,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2013,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2017,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2023,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2027,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2031,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2034,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2041,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2047,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2053,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2054,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2064,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2065,1
    - Dst: RFAPI_HAS_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2066,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2072,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2078,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2078,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2082,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2082,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2088,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2092,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2095,1
    - Dst: prefix_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2107,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2108,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2109,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2111,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2112,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2114,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2116,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2117,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2120,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2131,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2136,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2153,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2159,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2163,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2166,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2170,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2185,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2186,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2188,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2189,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2193,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2193,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2195,1
    - Dst: skiplist_empty
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2197,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2197,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2198,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2198,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2199,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2200,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2204,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2211,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2214,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2219,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2221,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2226,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2233,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2236,1
    - Dst: prefix_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2248,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2249,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2250,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2251,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2252,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2254,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2256,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2257,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2259,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2261,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2263,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2271,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2277,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2281,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2285,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2288,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2300,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2302,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2305,1
    - Dst: vnc_import_bgp_exterior_del_route_interior
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2319,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2324,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2325,1
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2332,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2333,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2340,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2347,1
    - Dst: RFAPI_HAS_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2352,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2353,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2359,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2366,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2366,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2370,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2370,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2383,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 135
    argCount: 4
    argNames:
    - bgp
    - it
    - rn_interior
    - bpi_interior
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts:
    - condition: (pfx_exterior)
      pos:
        line_end: 2012
        line_start: 2012
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    - condition: (bpi_exterior)
      pos:
        line_end: 2011
        line_start: 2011
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 2388
      start: 1948
    functionDepth: 2
    functionLinenumber: 1948
    functionLinenumberEnd: 2388
    functionName: vnc_import_bgp_exterior_add_route_interior
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - list_delete
    - rfapiUnicastNexthop2Prefix
    - listnode_add
    - is_usable_interior_route
    - memset
    - vnc_zlog_debug_verbose
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - agg_unlock_node
    - prefix_copy
    - assert
    - skiplist_empty
    - decode_label
    - prefix_new
    - vnc_import_bgp_exterior_del_route_interior
    - RFAPI_HAS_MONITOR_EXTERIOR
    - skiplist_next
    - family2afi
    - skiplist_free
    - agg_node_get_prefix
    - rfapiBgpInfoFilteredImportVPN
    - skiplist_delete
    - ATTR_FLAG_BIT
    - agg_node_parent
    - RFAPI_MONITOR_EXTERIOR
    - skiplist_new
    - list_new
    - skiplist_insert
    - VALID_INTERIOR_TYPE
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_exterior_add_route_interior(\n\tstruct bgp *bgp,
      struct rfapi_import_table *it,\n\tstruct agg_node *rn_interior,       /* VPN
      IT node */\n\tstruct bgp_path_info *bpi_interior)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2510,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2512,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2515,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2516,1
    - Dst: print_rhn_list
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2520,1
    - Dst: VNC_RHNCK
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2522,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2525,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2531,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2538,1
    - Dst: vnc_import_bgp_add_route_mode_plain
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2546,1
    - Dst: vnc_import_bgp_add_route_mode_nvegroup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2551,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2554,1
    - Dst: vnc_import_bgp_add_route_mode_resolve_nve
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2559,1
    - Dst: print_rhn_list
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2563,1
    - Dst: VNC_RHNCK
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2565,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2507
    functionDepth: 14
    functionLinenumber: 2507
    functionLinenumberEnd: 2566
    functionName: vnc_import_bgp_add_route
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 4
    functionsReached:
    - vnc_import_bgp_add_route_mode_plain
    - rfapiUnicastNexthop2Prefix
    - vnc_zlog_debug_verbose
    - vnc_import_bgp_add_route_mode_resolve_nve
    - print_rhn_list
    - vnc_import_bgp_add_route_mode_nvegroup
    - flog_err
    - VNC_RHNCK
    - VNC_DEBUG
    - family2afi
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_add_route(struct bgp *bgp, const struct prefix
      *prefix,\n\t\t\t      struct bgp_path_info *info)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2574,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2576,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2581,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2582,1
    - Dst: print_rhn_list
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2586,1
    - Dst: VNC_RHNCK
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2588,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2591,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2598,1
    - Dst: vnc_import_bgp_del_route_mode_plain
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2606,1
    - Dst: vnc_import_bgp_del_route_mode_nvegroup
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2611,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2614,1
    - Dst: vnc_import_bgp_del_route_mode_resolve_nve
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2619,1
    - Dst: print_rhn_list
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2624,1
    - Dst: VNC_RHNCK
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2626,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - bgp
    - prefix
    - info
    argTypes:
    - struct bgp*
    - struct prefix*
    - struct bgp_path_info*
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 2575
        line_start: 2575
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 2627
      start: 2571
    functionDepth: 11
    functionLinenumber: 2571
    functionLinenumberEnd: 2627
    functionName: vnc_import_bgp_del_route
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 5
    functionsReached:
    - rfapiUnicastNexthop2Prefix
    - vnc_zlog_debug_verbose
    - vnc_import_bgp_del_route_mode_plain
    - print_rhn_list
    - VNC_RHNCK
    - vnc_import_bgp_del_route_mode_resolve_nve
    - family2afi
    - assert
    - vnc_import_bgp_del_route_mode_nvegroup
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_del_route(struct bgp *bgp, const struct prefix
      *prefix,\n\t\t\t      struct bgp_path_info *info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2641,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2644,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2651,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2652,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2656,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2659,1
    - Dst: vnc_import_bgp_add_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2662,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2662,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2666,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2669
      start: 2634
    functionDepth: 15
    functionLinenumber: 2634
    functionLinenumberEnd: 2669
    functionName: vnc_import_bgp_redist_enable
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - vnc_import_bgp_add_route
    - CHECK_FLAG
    - bgp_dest_get_prefix
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void vnc_import_bgp_redist_enable(struct bgp *bgp, afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2679,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2687,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2693,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2694,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2698,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2701,1
    - Dst: vnc_import_bgp_exterior_add_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2704,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2705,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2708,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2671
    functionDepth: 12
    functionLinenumber: 2671
    functionLinenumberEnd: 2711
    functionName: vnc_import_bgp_exterior_redist_enable
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - vnc_import_bgp_exterior_add_route
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void vnc_import_bgp_exterior_redist_enable(struct bgp *bgp, afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2722,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2727,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2733,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2739,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2740,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2744,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2747,1
    - Dst: vnc_import_bgp_exterior_add_route_it
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2750,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2751,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - bgp
    - afi
    - it_only
    argTypes:
    - struct bgp*
    - afi_t
    - struct rfapi_import_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2755
      start: 2716
    functionDepth: 11
    functionLinenumber: 2716
    functionLinenumberEnd: 2755
    functionName: vnc_import_bgp_exterior_redist_enable_it
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - vnc_import_bgp_exterior_add_route_it
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: "void vnc_import_bgp_exterior_redist_enable_it(\n\tstruct bgp *bgp,
      afi_t afi, struct rfapi_import_table *it_only)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2767,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2770,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2780,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2781,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2784,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2787,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2788,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2788,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2789,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2791,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2795,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2806,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2810,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2819,1
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2833,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2836,1
    - Dst: bgp_path_info_unlock
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2837,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2842,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts:
    - condition: (bpi->extra)
      pos:
        line_end: 2805
        line_start: 2805
        source_file: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    constantsTouched: []
    func_position:
      end: 2843
      start: 2758
    functionDepth: 3
    functionLinenumber: 2758
    functionLinenumberEnd: 2843
    functionName: vnc_import_bgp_redist_disable
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - assert
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_dest_has_bgp_path_info_data
    - bgp_path_info_unlock
    - bgp_dest_get_bgp_path_info
    - skiplist_delete_first
    - skiplist_first
    - del_vnc_route
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: void vnc_import_bgp_redist_disable(struct bgp *bgp, afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2851,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2854,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2861,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2870,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2871,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2875,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2878,1
    - Dst: vnc_import_bgp_exterior_del_route
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2881,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2882,1
    - Dst: print_rhn_list
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2887,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_import_bgp.c:2892,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2893
      start: 2846
    functionDepth: 11
    functionLinenumber: 2846
    functionLinenumberEnd: 2893
    functionName: vnc_import_bgp_exterior_redist_disable
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_import_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - print_rhn_list
    - vnc_import_bgp_exterior_del_route
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void vnc_import_bgp_exterior_redist_disable(struct bgp *bgp, afi_t
      afi)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:77,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:86,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:98,1
    - Dst: flag::flag
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:98,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:99,1
    - Dst: flag::flag
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:99,1
    - Dst: local_pref::local_pref
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:100,1
    - Dst: local_pref::local_pref
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:103,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:107,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - new
    - orig
    - use_nexthop
    argTypes:
    - struct attr*
    - struct attr*
    - struct prefix*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 85
        line_start: 85
        source_file: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    constantsTouched: []
    func_position:
      end: 119
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 119
    functionName: encap_attr_export_ce
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - flag::flag
    - ATTR_FLAG_BIT
    - local_pref::local_pref
    - assert
    linkageType: ''
    returnType: void
    signature: "void encap_attr_export_ce(struct attr *new, struct attr *orig,\n\t\t\t\t
      struct prefix *use_nexthop)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:126,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:131,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:132,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:152,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:153,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - bgp
    - attr
    - pfx_ce
    argTypes:
    - struct bgp*
    - struct attr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 160
    functionName: getce
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - memset
    - bgp_attr_get_ecommunity
    - VNC_DEBUG
    - vnc_zlog_debug_any
    - memcpy
    linkageType: ''
    returnType: int
    signature: int getce(struct bgp *bgp, struct attr *attr, struct prefix *pfx_ce)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:168,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:169,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:179,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:189,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:197,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:204,1
    - Dst: VNC_EXPORT_BGP_CE_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:209,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:210,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:220,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:223,1
    - Dst: getce
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:235,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:236,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:245,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:251,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:254,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:259,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:261,1
    - Dst: encap_attr_export_ce
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:272,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:277,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:280,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:283,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:288,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:289,1
    - Dst: rfapiUnicastNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:296,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:298,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:299,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:302,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:306,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:312,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 62
    argCount: 3
    argNames:
    - bgp
    - rn
    - bpi
    argTypes:
    - struct bgp*
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 163
    functionDepth: 14
    functionLinenumber: 163
    functionLinenumberEnd: 313
    functionName: vnc_direct_bgp_add_route_ce
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - rfapiUnicastNexthop2Prefix
    - flog_err
    - bgp_attr_intern
    - memset
    - vnc_zlog_debug_verbose
    - VNC_EXPORT_BGP_CE_ENABLED
    - prefix_same
    - bgp_afi_node_get
    - prefix_list_apply
    - family2afi
    - agg_node_get_prefix
    - encap_attr_export_ce
    - getce
    - CHECK_FLAG
    - bgp_attr_flush
    - route_map_apply
    - bgp_dest_get_bgp_path_info
    - bgp_update
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_bgp_add_route_ce(struct bgp *bgp, struct agg_node
      *rn,\n\t\t\t\t struct bgp_path_info *bpi)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:322,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:323,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:328,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:334,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:341,1
    - Dst: VNC_EXPORT_BGP_CE_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:345,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:346,1
    - Dst: getce
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:357,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:358,1
    - Dst: getce
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:375,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:377,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:378,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:388,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - bgp
    - rn
    - bpi
    argTypes:
    - struct bgp*
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 319
    functionDepth: 15
    functionLinenumber: 319
    functionLinenumberEnd: 392
    functionName: vnc_direct_bgp_del_route_ce
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - vnc_zlog_debug_verbose
    - getce
    - VNC_EXPORT_BGP_CE_ENABLED
    - flog_err
    - bgp_withdraw
    - family2afi
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_bgp_del_route_ce(struct bgp *bgp, struct agg_node
      *rn,\n\t\t\t\t struct bgp_path_info *bpi)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:399,1
    - Dst: VNC_EXPORT_BGP_CE_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:407,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:408,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:415,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:422,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:423,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:427,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:432,1
    - Dst: vnc_direct_bgp_add_route_ce
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:439,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 394
    functionDepth: 15
    functionLinenumber: 394
    functionLinenumberEnd: 443
    functionName: vnc_direct_bgp_vpn_enable_ce
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - vnc_zlog_debug_verbose
    - VNC_EXPORT_BGP_CE_ENABLED
    - vnc_direct_bgp_add_route_ce
    - agg_route_next
    linkageType: ''
    returnType: void
    signature: void vnc_direct_bgp_vpn_enable_ce(struct bgp *bgp, afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:449,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:455,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:463,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:464,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:469,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:477,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:478,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - bgp
    - afi
    argTypes:
    - struct bgp*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 445
    functionDepth: 15
    functionLinenumber: 445
    functionLinenumberEnd: 489
    functionName: vnc_direct_bgp_vpn_disable_ce
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_withdraw
    - bgp_dest_get_bgp_path_info
    linkageType: ''
    returnType: void
    signature: void vnc_direct_bgp_vpn_disable_ce(struct bgp *bgp, afi_t afi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_new::ecommunity_new
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:507,1
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:513,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:515,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:518,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:522,1
    - Dst: size::size
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:531,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 537
    functionName: vnc_route_origin_ecom
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - memset
    - BGP_MP_NEXTHOP_FAMILY
    - ecommunity_new::ecommunity_new
    - ecommunity_add_val
    - size::size
    - memcpy
    linkageType: ''
    returnType: struct ecommunity
    signature: struct ecommunity *vnc_route_origin_ecom(struct agg_node *rn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:544,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:547,1
    - Dst: ecommunity_new::ecommunity_new
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:551,1
    - Dst: size::size
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - origin
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 560
    functionName: vnc_route_origin_ecom_single
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - size::size
    - memcpy
    - ecommunity_new::ecommunity_new
    - memset
    linkageType: ''
    returnType: struct ecommunity
    signature: struct ecommunity *vnc_route_origin_ecom_single(struct in_addr *origin)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:583,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:609,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:618,1
    - Dst: vnc_route_origin_ecom
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:623,1
    - Dst: vnc_route_origin_ecom_single
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:626,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:629,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:630,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:633,1
    - Dst: ecommunity_merge::ecommunity_merge
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:631,1
    - Dst: bgp_attr_set_ecommunity
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:635,1
    - Dst: ecom_ro::ecom_ro
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:635,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 4
    argNames:
    - new
    - orig
    - new_nexthop
    - rn
    argTypes:
    - struct attr*
    - struct attr*
    - struct prefix*
    - struct agg_node*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 617
        line_start: 617
        source_file: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    constantsTouched: []
    func_position:
      end: 636
      start: 568
    functionDepth: 4
    functionLinenumber: 568
    functionLinenumberEnd: 636
    functionName: encap_attr_export
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - assert
    - ecommunity_merge::ecommunity_merge
    - BGP_MP_NEXTHOP_FAMILY
    - bgp_attr_get_ecommunity
    - ATTR_FLAG_BIT
    - vnc_route_origin_ecom_single
    - ecom_ro::ecom_ro
    - if
    - bgp_attr_set_ecommunity
    - vnc_route_origin_ecom
    linkageType: ''
    returnType: int
    signature: "int encap_attr_export(struct attr *new, struct attr *orig,\n\t\t  struct
      prefix *new_nexthop,\n\t\t  struct agg_node *rn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:681,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:682,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:685,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:692,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:699,1
    - Dst: VNC_EXPORT_BGP_GRP_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:704,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:705,1
    - Dst: listcount
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:711,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:712,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:718,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:721,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:725,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:733,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:739,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:752,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - bgp
    - import_table
    - rn
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 674
    functionDepth: 7
    functionLinenumber: 674
    functionLinenumberEnd: 767
    functionName: vnc_direct_bgp_add_prefix
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_attr_default_set
    - vnc_zlog_debug_verbose
    - listcount
    - prefix_list_apply
    - VNC_EXPORT_BGP_GRP_ENABLED
    - flog_err
    - family2afi
    - ALL_LIST_ELEMENTS
    - if
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_bgp_add_prefix(struct bgp *bgp,\n\t\t\t       struct
      rfapi_import_table *import_table,\n\t\t\t       struct agg_node *rn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:792,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:793,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:796,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:803,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:810,1
    - Dst: VNC_EXPORT_BGP_GRP_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:815,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:816,1
    - Dst: listcount
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:822,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:823,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:829,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:837,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:843,1
    - Dst: rfg::rfd
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:843,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:859,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - bgp
    - import_table
    - rn
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 874
    functionName: vnc_direct_bgp_del_prefix
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - rfapiRaddr2Qprefix
    - rfg::rfd
    - vnc_zlog_debug_verbose
    - listcount
    - VNC_EXPORT_BGP_GRP_ENABLED
    - flog_err
    - family2afi
    - ALL_LIST_ELEMENTS
    - if
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_bgp_del_prefix(struct bgp *bgp,\n\t\t\t       struct
      rfapi_import_table *import_table,\n\t\t\t       struct agg_node *rn)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:907,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:910,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:918,1
    - Dst: VNC_EXPORT_BGP_GRP_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:922,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:923,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:930,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:941,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:960,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:965,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:971,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:972,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:982,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:984,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:992,1
    - Dst: encap_attr_export
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1007,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1015,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1020,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1025,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1026,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1027,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1040,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1044,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 56
    argCount: 2
    argNames:
    - bgp
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 902
    functionDepth: 14
    functionLinenumber: 902
    functionLinenumberEnd: 1047
    functionName: vnc_direct_bgp_add_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - rfapiRaddr2Qprefix
    - agg_node_get_prefix
    - bgp_attr_unintern
    - aspath_unintern
    - vnc_zlog_debug_verbose
    - prefix_list_apply
    - VNC_EXPORT_BGP_GRP_ENABLED
    - agg_route_next
    - flog_err
    - bgp_attr_flush
    - route_map_apply
    - bgp_update
    - family2afi
    - ALL_LIST_ELEMENTS
    - bgp_attr_default_set
    - bgp_attr_intern
    - encap_attr_export
    linkageType: ''
    returnType: void
    signature: void vnc_direct_bgp_add_nve(struct bgp *bgp, struct rfapi_descriptor
      *rfd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1055,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1058,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1066,1
    - Dst: VNC_EXPORT_BGP_GRP_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1070,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1071,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1078,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1089,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1106,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1114,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1115,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1119,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1123,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1127,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 2
    argNames:
    - bgp
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1050
    functionDepth: 15
    functionLinenumber: 1050
    functionLinenumberEnd: 1141
    functionName: vnc_direct_bgp_del_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - rfapiRaddr2Qprefix
    - vnc_zlog_debug_verbose
    - VNC_EXPORT_BGP_GRP_ENABLED
    - agg_route_next
    - flog_err
    - bgp_withdraw
    - family2afi
    - ALL_LIST_ELEMENTS
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: void vnc_direct_bgp_del_nve(struct bgp *bgp, struct rfapi_descriptor
      *rfd)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1152,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1157,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1160,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1166,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1172,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1189,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1190,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1192,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1198,1
    - Dst: rfapi_init_and_open
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1200,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1203,1
    - Dst: encap_attr_export
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1211,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1214,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1215,1
    - Dst: rfapiPrintAttrPtrs
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1216,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1217,1
    - Dst: rfapiPrintAttrPtrs
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1218,1
    - Dst: route_map_apply
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1226,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1228,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1229,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1236,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1237,1
    - Dst: rfapiPrintAttrPtrs
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1239,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1241,1
    - Dst: bgp_attr_flush
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1242,1
    - Dst: bgp_update
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1244,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1252,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 6
    argNames:
    - bgp
    - rfg
    - rn
    - attr
    - afi
    - irfd
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    - struct agg_node*
    - struct attr*
    - afi_t
    - struct rfapi_descriptor*
    assertStmts:
    - condition: (rfg->rfd == NULL)
      pos:
        line_end: 1156
        line_start: 1156
        source_file: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    constantsTouched: []
    func_position:
      end: 1255
      start: 1143
    functionDepth: 14
    functionLinenumber: 1143
    functionLinenumberEnd: 1255
    functionName: vnc_direct_add_rn_group_rd
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - rfapiRaddr2Qprefix
    - bgp_attr_unintern
    - memset
    - XCALLOC
    - vnc_zlog_debug_verbose
    - CHECK_FLAG
    - rfapiPrintAttrPtrs
    - rfapi_init_and_open
    - rfapiQprefix2Raddr
    - bgp_attr_flush
    - route_map_apply
    - VNC_DEBUG
    - bgp_update
    - vnc_zlog_debug_any
    - agg_node_get_prefix
    - bgp_attr_intern
    - assert
    - encap_attr_export
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_add_rn_group_rd(struct bgp *bgp,\n\t\t\t\t       struct
      rfapi_nve_group_cfg *rfg,\n\t\t\t\t       struct agg_node *rn, struct attr *attr,\n\t\t\t\t
      \      afi_t afi, struct rfapi_descriptor *irfd)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1270,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1274,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1282,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1287,1
    - Dst: bgp_attr_default_set
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1291,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1297,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1297,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1300,1
    - Dst: prefix_list_apply
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1307,1
    - Dst: vnc_direct_add_rn_group_rd
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1314,1
    - Dst: listhead
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1327,1
    - Dst: listnextnode
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1328,1
    - Dst: vnc_direct_add_rn_group_rd
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1329,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1331,1
    - Dst: aspath_unintern
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1336,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 3
    argNames:
    - bgp
    - rfg
    - afi
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1261
    functionDepth: 15
    functionLinenumber: 1261
    functionLinenumberEnd: 1337
    functionName: vnc_direct_bgp_add_group_afi
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - vnc_direct_add_rn_group_rd
    - agg_route_top
    - listnextnode
    - agg_node_get_prefix
    - aspath_unintern
    - vnc_zlog_debug_verbose
    - listhead
    - prefix_list_apply
    - agg_route_next
    - flog_err
    - listgetdata
    - bgp_attr_default_set
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_bgp_add_group_afi(struct bgp *bgp,\n\t\t\t\t\t struct
      rfapi_nve_group_cfg *rfg,\n\t\t\t\t\t afi_t afi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_direct_bgp_add_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1346,1
    - Dst: vnc_direct_bgp_add_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bgp
    - rfg
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1344
    functionDepth: 16
    functionLinenumber: 1344
    functionLinenumberEnd: 1348
    functionName: vnc_direct_bgp_add_group
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - vnc_direct_bgp_add_group_afi
    linkageType: ''
    returnType: void
    signature: void vnc_direct_bgp_add_group(struct bgp *bgp, struct rfapi_nve_group_cfg
      *rfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1358,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - bgp
    - rfg
    - rn
    - afi
    - irfd
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    - struct agg_node*
    - afi_t
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1350
    functionDepth: 15
    functionLinenumber: 1350
    functionLinenumberEnd: 1364
    functionName: vnc_direct_del_rn_group_rd
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - bgp_withdraw
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_del_rn_group_rd(struct bgp *bgp,\n\t\t\t\t       struct
      rfapi_nve_group_cfg *rfg,\n\t\t\t\t       struct agg_node *rn, afi_t afi,\n\t\t\t\t
      \      struct rfapi_descriptor *irfd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1378,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1382,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1390,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1397,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1397,1
    - Dst: vnc_direct_del_rn_group_rd
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1400,1
    - Dst: listhead
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1411,1
    - Dst: listnextnode
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1412,1
    - Dst: vnc_direct_del_rn_group_rd
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1413,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1415,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - bgp
    - rfg
    - afi
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1370
    functionDepth: 16
    functionLinenumber: 1370
    functionLinenumberEnd: 1418
    functionName: vnc_direct_bgp_del_group_afi
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - agg_route_top
    - vnc_zlog_debug_verbose
    - listhead
    - vnc_direct_del_rn_group_rd
    - agg_route_next
    - listgetdata
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_bgp_del_group_afi(struct bgp *bgp,\n\t\t\t\t\t struct
      rfapi_nve_group_cfg *rfg,\n\t\t\t\t\t afi_t afi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_direct_bgp_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1426,1
    - Dst: vnc_direct_bgp_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bgp
    - rfg
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1424
    functionDepth: 17
    functionLinenumber: 1424
    functionLinenumberEnd: 1428
    functionName: vnc_direct_bgp_del_group
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - vnc_direct_bgp_del_group_afi
    linkageType: ''
    returnType: void
    signature: void vnc_direct_bgp_del_group(struct bgp *bgp, struct rfapi_nve_group_cfg
      *rfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VNC_EXPORT_BGP_GRP_ENABLED
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1437,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1441,1
    - Dst: vnc_direct_bgp_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1449,1
    - Dst: vnc_direct_bgp_add_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1450,1
    - Dst: vnc_direct_bgp_unexport_table
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1458,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1465,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1465,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1472,1
    - Dst: bgp_withdraw
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1475,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1476,1
    - Dst: import_table_to_nve_list_direct_bgp
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1494,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1509,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1521,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/vnc_export_bgp.c:1522,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - bgp
    - rfg
    - afi
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1430
    functionDepth: 17
    functionLinenumber: 1430
    functionLinenumberEnd: 1525
    functionName: vnc_direct_bgp_reexport_group_afi
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_bgp.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - ALL_LIST_ELEMENTS_RO
    - listnode_add
    - vnc_direct_bgp_unexport_table
    - VNC_EXPORT_BGP_GRP_ENABLED
    - agg_route_next
    - bgp_withdraw
    - vnc_direct_bgp_add_group_afi
    - list_new
    - import_table_to_nve_list_direct_bgp
    - vnc_direct_bgp_del_group_afi
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_direct_bgp_reexport_group_afi(struct bgp *bgp,\n\t\t\t\t
      \      struct rfapi_nve_group_cfg *rfg,\n\t\t\t\t       afi_t afi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RFAPI_MONITOR_ETH
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:72,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - rn
    - tag1
    - tag2
    argTypes:
    - struct agg_node*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 80
    functionName: rfapiMonitorEthSlCheck
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - RFAPI_MONITOR_ETH
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorEthSlCheck(struct agg_node *rn, const char *tag1,\n\t\t\t
      \   const char *tag2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - mchain
    argTypes:
    - struct rfapi_monitor_vpn*
    assertStmts:
    - condition: (m != m->next)
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 93
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 93
    functionName: rfapiMonitorLoopCheck
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorLoopCheck(struct rfapi_monitor_vpn *mchain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:105,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:108,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:111,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 118
    functionName: rfapiMonitorDupCheck
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - if
    - agg_route_top
    - ALL_LIST_ELEMENTS_RO
    - agg_route_next
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorDupCheck(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:144,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:145,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:146,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:150,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:152,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:154,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:154,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:156,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:158,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:160,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:160,1
    - Dst: rfapiMonitorCheckAttachAllowed
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:166,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:168,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:169,1
    - Dst: SAFI_ENCAP
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:189,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:193,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:194,1
    - Dst: SAFI_MPLS_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:199,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:203,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:204,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:208,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:209,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:211,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:213,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:217,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:218,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:220,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:222,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:225,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:226,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:228,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:230,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:241,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:243,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:245,1
    - Dst: rfapiMonitorExtraPrune
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:251,1
    - Dst: SAFI_ENCAP
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:264,1
    - Dst: SAFI_MPLS_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:269,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:273,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:275,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:277,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:280,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:282,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:284,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:287,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:289,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:291,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:294,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:296,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:298,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:309,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:311,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:313,1
    - Dst: rfapiMonitorGetAttachNode
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:319,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:325,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:326,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:329,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:330,1
    - Dst: agg_node_match
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:345,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:366,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:374,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 329
        line_start: 329
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (0)
      pos:
        line_end: 240
        line_start: 240
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!rfd->import_table->vpn0_queries[AFI_IP6])
      pos:
        line_end: 145
        line_start: 145
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (1)
      pos:
        line_end: 325
        line_start: 325
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!RFAPI_MONITOR_VPN(rn))
      pos:
        line_end: 153
        line_start: 153
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (0)
      pos:
        line_end: 308
        line_start: 308
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!RFAPI_MONITOR_VPN(rn))
      pos:
        line_end: 159
        line_start: 159
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!(bgp->rfapi_cfg->flags & BGP_VNC_CONFIG_CALLBACK_DISABLE))
      pos:
        line_end: 168
        line_start: 168
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!rfd->import_table->vpn0_queries[AFI_IP])
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 377
      start: 139
    functionDepth: 10
    functionLinenumber: 139
    functionLinenumberEnd: 377
    functionName: rfapiMonitorCleanCheck
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - agg_node_match
    - skiplist_delete_first
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - rfapiMonitorGetAttachNode
    - agg_unlock_node
    - skiplist_count
    - SAFI_ENCAP
    - assert
    - rfapiGetVncTunnelUnAddr
    - rfapiMonitorExtraPrune
    - SAFI_MPLS_VPN
    - RFAPI_0_PREFIX
    - XFREE
    - skiplist_free
    - family2afi
    - agg_route_top
    - rfapiMonitorCheckAttachAllowed
    - agg_node_parent
    - agg_route_next
    - RFAPI_MONITOR_VPN
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorCleanCheck(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiMonitorCheckAttachAllowed
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:405,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:407,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:413,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:414,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:418,1
    - Dst: rfapiMonitorGetAttachNode
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:426,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:428,1
    - Dst: RFAPI_MONITOR_VPN_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:429,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:430,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - rfd
    - m
    argTypes:
    - struct rfapi_descriptor*
    - struct rfapi_monitor_vpn*
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 413
        line_start: 413
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 434
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 434
    functionName: rfapiMonitorAttachImport
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - rfapiMonitorCheckAttachAllowed
    - vnc_zlog_debug_verbose
    - RFAPI_MONITOR_VPN_W_ALLOC
    - rfapiMonitorGetAttachNode
    - RFAPI_CHECK_REFCOUNT
    - RFAPI_0_PREFIX
    - family2afi
    - RFAPI_MONITOR_VPN
    - assert
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *rfapiMonitorAttachImport(struct rfapi_descriptor
      *rfd,\n\t\t\t\t\t\t struct rfapi_monitor_vpn *m)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:451,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:451,1
    - Dst: rfapiMonitorAttachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:456,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 440
    functionDepth: 2
    functionLinenumber: 440
    functionLinenumberEnd: 459
    functionName: rfapiMonitorAttachImportHd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - rfapiMonitorAttachImport
    - agg_route_top
    - agg_route_next
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorAttachImportHd(struct rfapi_descriptor *rfd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:484,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:486,1
    - Dst: rfapiMonitorTimerRestart
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:491,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:492,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:500,1
    - Dst: prefix_copy
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:503,1
    - Dst: rfapiMonitorTimerRestart
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:508,1
    - Dst: rfapiMonitorAttachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:521,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - bgp
    - rfd
    - p
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 522
    functionName: rfapiMonitorAdd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - XCALLOC
    - agg_unlock_node
    - rfapiMonitorAttachImport
    - prefix_copy
    - rfapiMonitorTimerRestart
    - agg_table_init
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *rfapiMonitorAdd(struct bgp *bgp, struct rfapi_descriptor
      *rfd,\n\t\t\t\t struct prefix *p)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:533,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:541,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:542,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:565,1
    - Dst: RFAPI_MONITOR_VPN_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:575,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:578,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:579,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct rfapi_monitor_vpn*
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 541
        line_start: 541
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 585
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 585
    functionName: rfapiMonitorDetachImport
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - assert
    - RFAPI_MONITOR_VPN_W_ALLOC
    - RFAPI_CHECK_REFCOUNT
    - agg_unlock_node
    - RFAPI_0_PREFIX
    - family2afi
    - RFAPI_MONITOR_VPN
    linkageType: ''
    returnType: struct rfapi_monitor_vpn
    signature: 'struct rfapi_monitor_vpn *

      rfapiMonitorDetachImport(struct rfapi_monitor_vpn *m)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:595,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:595,1
    - Dst: rfapiMonitorDetachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:597,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 588
    functionDepth: 2
    functionLinenumber: 588
    functionLinenumberEnd: 601
    functionName: rfapiMonitorDetachImportHd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - rfapiMonitorDetachImport
    - agg_route_next
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorDetachImportHd(struct rfapi_descriptor *rfd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:609,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:610,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:613,1
    - Dst: rfapiMonitorDetachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:619,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:622,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:627,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:629,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - bgp
    - rfd
    - p
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct prefix*
    assertStmts:
    - condition: (rfd->mon)
      pos:
        line_end: 608
        line_start: 608
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (m)
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 634
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 634
    functionName: rfapiMonitorDel
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - rfapiMonitorDetachImport
    - agg_unlock_node
    - EVENT_OFF
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorDel(struct bgp *bgp, struct rfapi_descriptor *rfd,\n\t\t
      \    struct prefix *p)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:645,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:647,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:650,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:651,1
    - Dst: rfapiMonitorDetachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:656,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:659,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:661,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:663,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:670,1
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:678,1
    - Dst: rfapiMonitorEthDetachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:684,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:687,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:693,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:698,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:699,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:701,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:703,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:709,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts:
    - condition: (!rc)
      pos:
        line_end: 698
        line_start: 698
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 714
      start: 639
    functionDepth: 10
    functionLinenumber: 639
    functionLinenumberEnd: 714
    functionName: rfapiMonitorDelHd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 2
    functionsReached:
    - agg_route_top
    - vnc_zlog_debug_verbose
    - rfapiMonitorEthDetachImport
    - bgp_get_default
    - skiplist_delete
    - agg_route_next
    - rfapiMonitorDetachImport
    - agg_unlock_node
    - agg_table_finish
    - EVENT_OFF
    - XFREE
    - skiplist_free
    - skiplist_first
    - assert
    linkageType: ''
    returnType: int
    signature: int rfapiMonitorDelHd(struct rfapi_descriptor *rfd)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 722
    functionName: rfapiMonitorResponseRemovalOff
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorResponseRemovalOff(struct bgp *bgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 731
    functionName: rfapiMonitorResponseRemovalOn
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorResponseRemovalOn(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:735,1
    - Dst: rfapiMonitorDel
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:741,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 733
    functionDepth: 10
    functionLinenumber: 733
    functionLinenumberEnd: 742
    functionName: rfapiMonitorTimerExpire
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - rfapiMonitorDel
    - bgp_get_default
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorTimerExpire(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:746,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:756,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:761,1
    - Dst: rfapi_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:763,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:767,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct rfapi_monitor_vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 769
    functionName: rfapiMonitorTimerRestart
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - rfapi_ntop
    - vnc_zlog_debug_verbose
    - event_timer_remain_second
    - EVENT_OFF
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorTimerRestart(struct rfapi_monitor_vpn *m)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:791,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:793,1
    - Dst: memcmp
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:796,1
    - Dst: rfapiMonitorEthTimerRestart
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:799,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:804,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:805,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:812,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:814,1
    - Dst: rfapiMonitorTimerRestart
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:815,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - rfd
    - p
    argTypes:
    - struct rfapi_descriptor*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 777
    functionDepth: 2
    functionLinenumber: 777
    functionLinenumberEnd: 819
    functionName: rfapiMonitorTimersRestart
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - prefix_match
    - memcmp
    - agg_route_next
    - rfapiMonitorEthTimerRestart
    - skiplist_next
    - rfapiMonitorTimerRestart
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorTimersRestart(struct rfapi_descriptor *rfd,\n\t\t\t
      \      const struct prefix *p)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:831,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:832,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:833,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:835,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:836,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:838,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:841,1
    - Dst: RFAPI_MONITOR_ETH
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:851,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:854,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:855,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:858,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:863,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:863,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:869,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:884,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:900,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:906,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:910,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:915,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:915,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:918,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:926,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:932,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:934,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:945,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:951,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:954,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:959,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:959,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:966,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:970,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:982,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:987,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:987,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:993,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1000,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 3
    argNames:
    - import_table
    - it_node
    - monitor_list
    argTypes:
    - struct rfapi_import_table*
    - struct agg_node*
    - struct rfapi_monitor_vpn*
    assertStmts:
    - condition: (import_table)
      pos:
        line_end: 835
        line_start: 835
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: "(!skiplist_insert(nves_seen,\n\t\t\t\t\t\t\t\tm->rfd, NULL))"
      pos:
        line_end: 915
        line_start: 914
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: "(!skiplist_insert(nves_seen, m->rfd,\n\t\t\t\t\t\t\tNULL))"
      pos:
        line_end: 987
        line_start: 986
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (bgp)
      pos:
        line_end: 834
        line_start: 834
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: "(!skiplist_insert(nves_seen,\n\t\t\t\t\t\t\t\tm->rfd, NULL))"
      pos:
        line_end: 863
        line_start: 862
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: "(!skiplist_insert(nves_seen, e->rfd,\n\t\t\t\t\t\t\tNULL))"
      pos:
        line_end: 959
        line_start: 958
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 1001
      start: 825
    functionDepth: 10
    functionLinenumber: 825
    functionLinenumberEnd: 1001
    functionName: rfapiMonitorItNodeChanged
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - RFAPI_MONITOR_ETH
    - skiplist_search
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - rfapiRibUpdatePendingNode
    - agg_node_parent
    - skiplist_new
    - RFAPI_0_PREFIX
    - skiplist_free
    - skiplist_next
    - family2afi
    - RFAPI_MONITOR_VPN
    - skiplist_insert
    - agg_node_get_prefix
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorItNodeChanged(\n\tstruct rfapi_import_table *import_table,
      struct agg_node *it_node,\n\tstruct rfapi_monitor_vpn *monitor_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1011,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1014,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1015,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1016,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1024,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1031,1
    - Dst: rfapiRibUpdatePendingNodeSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1033,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - import_table
    - old_node
    - new_node
    - monitor_list
    argTypes:
    - struct rfapi_import_table*
    - struct agg_node*
    - struct agg_node*
    - struct rfapi_monitor_vpn*
    assertStmts:
    - condition: (new_node)
      pos:
        line_end: 1013
        line_start: 1013
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (new_node != old_node)
      pos:
        line_end: 1015
        line_start: 1015
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (old_node)
      pos:
        line_end: 1014
        line_start: 1014
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 1037
      start: 1007
    functionDepth: 10
    functionLinenumber: 1007
    functionLinenumberEnd: 1037
    functionName: rfapiMonitorMovedUp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - rfapiRibUpdatePendingNodeSubtree
    - rfapiRibUpdatePendingNode
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorMovedUp(struct rfapi_import_table *import_table,\n\t\t\t
      struct agg_node *old_node, struct agg_node *new_node,\n\t\t\t struct rfapi_monitor_vpn
      *monitor_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1041,1
    - Dst: rfapiMonitorEthDel
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1047,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1039
    functionDepth: 10
    functionLinenumber: 1039
    functionLinenumberEnd: 1050
    functionName: rfapiMonitorEthTimerExpire
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - rfapiMonitorEthDel
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorEthTimerExpire(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1054,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1064,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1069,1
    - Dst: rfapiEthAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1071,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1075,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct rfapi_monitor_eth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1052
    functionDepth: 1
    functionLinenumber: 1052
    functionLinenumberEnd: 1077
    functionName: rfapiMonitorEthTimerRestart
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - vnc_zlog_debug_verbose
    - event_timer_remain_second
    - rfapiEthAddr2Str
    - EVENT_OFF
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorEthTimerRestart(struct rfapi_monitor_eth *m)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1079
    functionDepth: 0
    functionLinenumber: 1079
    functionLinenumberEnd: 1101
    functionName: mon_eth_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mon_eth_cmp(const void *a, const void *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1111,1
    - Dst: rfapiMonitorCheckAttachAllowed
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1113,1
    - Dst: RFAPI_0_ETHERADDR
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1115,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1122,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1130,1
    - Dst: RFAPI_MONITOR_ETH_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1138,1
    - Dst: RFAPI_MONITOR_ETH_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1140,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1141,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1142,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1146,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1151,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1152,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - it
    - rn
    - mon
    argTypes:
    - struct rfapi_import_table*
    - struct agg_node*
    - struct rfapi_monitor_eth*
    assertStmts:
    - condition: (!rc)
      pos:
        line_end: 1151
        line_start: 1151
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 1156
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1156
    functionName: rfapiMonitorEthAttachImport
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - rfapiMonitorCheckAttachAllowed
    - vnc_zlog_debug_verbose
    - RFAPI_MONITOR_ETH_W_ALLOC
    - RFAPI_0_ETHERADDR
    - skiplist_new
    - skiplist_insert
    - assert
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorEthAttachImport(\n\tstruct rfapi_import_table *it,\n\tstruct
      agg_node *rn,\t   /* it node attach point if non-0 */\n\tstruct rfapi_monitor_eth
      *mon)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1176,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1178,1
    - Dst: rfapiMacImportTableGet
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1184,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1185,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1187,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1192,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1193,1
    - Dst: rfapiMonitorEthAttachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - bgp
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    assertStmts:
    - condition: (it)
      pos:
        line_end: 1184
        line_start: 1184
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (rn)
      pos:
        line_end: 1192
        line_start: 1192
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 1197
      start: 1161
    functionDepth: 2
    functionLinenumber: 1161
    functionLinenumberEnd: 1197
    functionName: rfapiMonitorEthAttachImportHd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 0
    functionsReached:
    - agg_node_get
    - memset
    - rfapiMacImportTableGet
    - rfapiMonitorEthAttachImport
    - skiplist_next
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorEthAttachImportHd(struct bgp *bgp,\n\t\t\t\t\t  struct
      rfapi_descriptor *rfd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rfapiMacImportTableGet
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1209,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1210,1
    - Dst: RFAPI_0_ETHERADDR
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1212,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1230,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1237,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1242,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1243,1
    - Dst: RFAPI_MONITOR_ETH
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1248,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1250,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1252,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1255,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1258,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1259,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1262,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - bgp
    - mon
    argTypes:
    - struct bgp*
    - struct rfapi_monitor_eth*
    assertStmts:
    - condition: (it)
      pos:
        line_end: 1209
        line_start: 1209
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (rn)
      pos:
        line_end: 1242
        line_start: 1242
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (sl)
      pos:
        line_end: 1254
        line_start: 1254
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!rc)
      pos:
        line_end: 1258
        line_start: 1258
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 1263
      start: 1199
    functionDepth: 1
    functionLinenumber: 1199
    functionLinenumberEnd: 1263
    functionName: rfapiMonitorEthDetachImport
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - RFAPI_MONITOR_ETH
    - memset
    - vnc_zlog_debug_verbose
    - rfapiMacImportTableGet
    - skiplist_delete
    - agg_unlock_node
    - RFAPI_0_ETHERADDR
    - agg_node_get_prefix
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorEthDetachImport(\n\tstruct bgp *bgp,\n\tstruct rfapi_monitor_eth
      *mon)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1278,1
    - Dst: rfapiMacImportTableGet
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1281,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1282,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1291,1
    - Dst: RFAPI_0_ETHERADDR
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1296,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1297,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1298,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1301,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1309,1
    - Dst: rfapi_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1311,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1319,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1325,1
    - Dst: rfapiMonitorEthTimerRestart
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1328,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1335,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1337,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1343,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1346,1
    - Dst: rfapiMonitorEthTimerRestart
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1355,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1362,1
    - Dst: rfapiMonitorEthAttachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1372,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 41
    argCount: 4
    argNames:
    - bgp
    - rfd
    - macaddr
    - logical_net_id
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct ethaddr*
    - uint32_t
    assertStmts:
    - condition: (it)
      pos:
        line_end: 1281
        line_start: 1281
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (val)
      pos:
        line_end: 1336
        line_start: 1336
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (rn)
      pos:
        line_end: 1297
        line_start: 1297
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 1375
      start: 1265
    functionDepth: 2
    functionLinenumber: 1265
    functionLinenumberEnd: 1375
    functionName: rfapiMonitorEthAdd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - skiplist_search
    - rfapi_ntop
    - memset
    - vnc_zlog_debug_verbose
    - XCALLOC
    - rfapiMacImportTableGet
    - rfapiMonitorEthAttachImport
    - skiplist_new
    - RFAPI_0_ETHERADDR
    - rfapiMonitorEthTimerRestart
    - skiplist_insert
    - assert
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *rfapiMonitorEthAdd(struct bgp *bgp,\n\t\t\t\t    struct
      rfapi_descriptor *rfd,\n\t\t\t\t    struct ethaddr *macaddr,\n\t\t\t\t    uint32_t
      logical_net_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1384,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1386,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1388,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1392,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1393,1
    - Dst: rfapiMonitorEthDetachImport
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1399,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1402,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1407,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1408,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1411,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1413,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - bgp
    - rfd
    - macaddr
    - logical_net_id
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct ethaddr*
    - uint32_t
    assertStmts:
    - condition: (rfd->mon_eth)
      pos:
        line_end: 1385
        line_start: 1385
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!rc)
      pos:
        line_end: 1392
        line_start: 1392
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    - condition: (!rc)
      pos:
        line_end: 1407
        line_start: 1407
        source_file: /src/frr/bgpd/rfapi/rfapi_monitor.c
    constantsTouched: []
    func_position:
      end: 1417
      start: 1377
    functionDepth: 2
    functionLinenumber: 1377
    functionLinenumberEnd: 1417
    functionName: rfapiMonitorEthDel
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - skiplist_search
    - memset
    - vnc_zlog_debug_verbose
    - rfapiMonitorEthDetachImport
    - skiplist_delete
    - EVENT_OFF
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorEthDel(struct bgp *bgp, struct rfapi_descriptor *rfd,\n\t\t\tstruct
      ethaddr *macaddr, uint32_t logical_net_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1439,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1456,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1457,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1458,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1459,1
    - Dst: RFAPI_MONITOR_VPN_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1460,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1466,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1488,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1490,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1503,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1503,1
    - Dst: RFAPI_MONITOR_ETH
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1506,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1507,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1508,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1517,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1420
    functionDepth: 1
    functionLinenumber: 1420
    functionLinenumberEnd: 1525
    functionName: rfapiMonitorCallbacksOff
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - RFAPI_MONITOR_ETH
    - vnc_zlog_debug_verbose
    - RFAPI_MONITOR_VPN_W_ALLOC
    - agg_route_next
    - agg_unlock_node
    - skiplist_next
    - skiplist_delete_first
    - RFAPI_MONITOR_VPN
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorCallbacksOff(struct bgp *bgp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1544,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1552,1
    - Dst: rfapiMonitorAttachImportHd
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1554,1
    - Dst: rfapiMonitorEthAttachImportHd
      Src: /src/frr/bgpd/rfapi/rfapi_monitor.c:1555,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1527
    functionDepth: 3
    functionLinenumber: 1527
    functionLinenumberEnd: 1557
    functionName: rfapiMonitorCallbacksOn
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.c
    functionUses: 1
    functionsReached:
    - rfapiMonitorEthAttachImportHd
    - ALL_LIST_ELEMENTS_RO
    - rfapiMonitorAttachImportHd
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorCallbacksOn(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backtrace
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:94,1
    - Dst: backtrace_symbols
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:95,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:98,1
    - Dst: free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 104
    functionName: rfapiDebugBacktrace
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - backtrace_symbols
    - free
    - backtrace
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void rfapiDebugBacktrace(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:113,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:118,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:121,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:135,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:143,1
    - Dst: RFAPI_LOCAL_BI
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:148,1
    - Dst: RFAPI_DIRECT_IMPORT_BI
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:149,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:161,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:165,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:168,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:172,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:175,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:179,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (h)
      pos:
        line_end: 120
        line_start: 120
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (bgp)
      pos:
        line_end: 117
        line_start: 117
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (0)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (0)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (0)
      pos:
        line_end: 178
        line_start: 178
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 183
      start: 111
    functionDepth: 10
    functionLinenumber: 111
    functionLinenumberEnd: 183
    functionName: rfapiCheckRouteCount
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - RFAPI_DIRECT_IMPORT_BI
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - CHECK_FLAG
    - agg_route_next
    - RFAPI_LOCAL_BI
    - assert
    linkageType: ''
    returnType: void
    signature: void rfapiCheckRouteCount(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RFAPI_MONITOR_ENCAP
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:219,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:226,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:229,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:232,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:233,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:236,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:237,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:252,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:257,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:258,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:261,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:262,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 3
    argNames:
    - rn
    - safi
    - lockoffset
    argTypes:
    - struct agg_node*
    - safi_t
    - int
    assertStmts:
    - condition: (!"Passed in safi should be impossible")
      pos:
        line_end: 251
        line_start: 251
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (0)
      pos:
        line_end: 261
        line_start: 261
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 264
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 264
    functionName: rfapiCheckRefcount
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - RFAPI_MONITOR_ENCAP
    - vnc_zlog_debug_verbose
    - RFAPI_MONITOR_EXTERIOR
    - skiplist_next
    - RFAPI_MONITOR_VPN
    - agg_node_get_lock_count
    - assert
    linkageType: ''
    returnType: void
    signature: void rfapiCheckRefcount(struct agg_node *rn, safi_t safi, int lockoffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:276,1
    - Dst: rfapi_close
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:277,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - q
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts:
    - condition: (!(h->flags & RFAPI_INCALLBACK))
      pos:
        line_end: 275
        line_start: 275
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 281
      start: 270
    functionDepth: 11
    functionLinenumber: 270
    functionLinenumberEnd: 281
    functionName: rfapi_deferred_close_workfunc
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - assert
    - rfapi_close
    linkageType: ''
    returnType: wq_item_status
    signature: "wq_item_status rfapi_deferred_close_workfunc(struct work_queue *q,\n\t\t\t\t\t\t
      \   void *data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:291,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:299,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - attr
    - l2o
    argTypes:
    - struct attr*
    - struct rfapi_l2address_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 334
    functionName: rfapiGetL2o
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - bgp_attr_get_vnc_subtlvs
    - memcpy
    linkageType: ''
    returnType: int
    signature: int rfapiGetL2o(struct attr *attr, struct rfapi_l2address_option *l2o)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:348,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:354,1
    - Dst: ntohl
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:355,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - attr
    - lifetime
    argTypes:
    - struct attr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 363
    functionName: rfapiGetVncLifetime
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - bgp_attr_get_vnc_subtlvs
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: int rfapiGetVncLifetime(struct attr *attr, uint32_t *lifetime)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bgp_attr_extcom_tunnel_type
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:373,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:378,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:397,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:406,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - attr
    - p
    argTypes:
    - struct attr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 416
    functionName: rfapiGetVncTunnelUnAddr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 3
    functionsReached:
    - rfapiNexthop2Prefix
    - memcpy
    - bgp_attr_extcom_tunnel_type
    linkageType: ''
    returnType: int
    signature: int rfapiGetVncTunnelUnAddr(struct attr *attr, struct prefix *p)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:424,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:450,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - bpi
    - p
    argTypes:
    - struct bgp_path_info*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 459
    functionName: rfapiGetUnAddrOfVpnBi
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiGetVncTunnelUnAddr
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: int
    signature: int rfapiGetUnAddrOfVpnBi(struct bgp_path_info *bpi, struct prefix
      *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: info_make::info_make
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:473,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:475,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:479,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:480,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:480,1
    - Dst: encode_label
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:483,1
    - Dst: extra::extra
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:483,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 7
    argNames:
    - attr
    - peer
    - rfd
    - prd
    - type
    - sub_type
    - label
    argTypes:
    - struct attr*
    - struct peer*
    - void*
    - struct prefix_rd*
    - uint8_t
    - uint8_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 465
    functionDepth: 6
    functionLinenumber: 465
    functionLinenumberEnd: 488
    functionName: rfapiBgpInfoCreate
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - encode_label
    - info_make::info_make
    - monotime
    - extra::extra
    - peer_lock
    - bgp_attr_intern
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *rfapiBgpInfoCreate(struct attr *attr,\n\t\t\t\t\t\tstruct
      peer *peer, void *rfd,\n\t\t\t\t\t\tstruct prefix_rd *prd,\n\t\t\t\t\t\tuint8_t
      type, uint8_t sub_type,\n\t\t\t\t\t\tuint32_t *label)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:500,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:503,1
    - Dst: bgp_attr_unintern
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:506,1
    - Dst: bgp_path_info_extra_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:509,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - goner
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 494
    functionDepth: 7
    functionLinenumber: 494
    functionLinenumberEnd: 511
    functionName: rfapiBgpInfoFree
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - bgp_attr_unintern
    - peer_unlock
    - vnc_zlog_debug_verbose
    - bgp_path_info_extra_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapiBgpInfoFree(struct bgp_path_info *goner)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:527,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - bgp
    - lni
    argTypes:
    - struct bgp*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 531
    functionName: rfapiMacImportTableGetNoAlloc
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    linkageType: ''
    returnType: struct rfapi_import_table
    signature: "struct rfapi_import_table *rfapiMacImportTableGetNoAlloc(struct bgp
      *bgp,\n\t\t\t\t\t\t\t uint32_t lni)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:540,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:544,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:547,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:553,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:556,1
    - Dst: ecommunity_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:563,1
    - Dst: ecommunity_add_val
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:564,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:568,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:569,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:574,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - bgp
    - lni
    argTypes:
    - struct bgp*
    - uint32_t
    assertStmts:
    - condition: (h)
      pos:
        line_end: 539
        line_start: 539
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (it)
      pos:
        line_end: 576
        line_start: 576
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 579
      start: 533
    functionDepth: 3
    functionLinenumber: 533
    functionLinenumberEnd: 579
    functionName: rfapiMacImportTableGet
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 3
    functionsReached:
    - skiplist_search
    - ecommunity_new
    - memset
    - XCALLOC
    - skiplist_new
    - ecommunity_add_val
    - skiplist_insert
    - assert
    - agg_table_init
    linkageType: ''
    returnType: struct rfapi_import_table
    signature: struct rfapi_import_table *rfapiMacImportTableGet(struct bgp *bgp,
      uint32_t lni)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:598,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:602,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:615,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:617,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:631,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:632,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:635,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:644,1
    - Dst: agg_route_table_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:653,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:656,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:662,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:676,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:678,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:682,1
    - Dst: agg_get_table
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:682,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:697,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:702,1
    - Dst: RFAPI_MONITOR_VPN_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:704,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:705,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:707,1
    - Dst: RFAPI_MONITOR_VPN_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:709,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:719,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:722,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:727,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:730,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:733,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:738,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 69
    argCount: 2
    argNames:
    - original_vpn_node
    - lockoffset
    argTypes:
    - struct agg_node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 587
    functionDepth: 4
    functionLinenumber: 587
    functionLinenumberEnd: 745
    functionName: rfapiMonitorMoveShorter
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - agg_node_get
    - agg_route_table_top
    - memset
    - vnc_zlog_debug_verbose
    - agg_get_table
    - RFAPI_MONITOR_VPN_W_ALLOC
    - agg_node_parent
    - RFAPI_CHECK_REFCOUNT
    - agg_unlock_node
    - agg_lock_node
    - agg_node_get_prefix
    - RFAPI_MONITOR_VPN
    - rfapiGetUnAddrOfVpnBi
    linkageType: ''
    returnType: struct rfapi_monitor_vpn
    signature: 'struct rfapi_monitor_vpn *

      rfapiMonitorMoveShorter(struct agg_node *original_vpn_node, int lockoffset)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:757,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:759,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:766,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:771,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:780,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:781,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:782,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:787,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:797,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:802,1
    - Dst: RFAPI_MONITOR_VPN_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:807,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:812,1
    - Dst: RFAPI_MONITOR_VPN_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:813,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:816,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:818,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:820,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:823,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:831,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 1
    argNames:
    - new_vpn_node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 751
    functionDepth: 4
    functionLinenumber: 751
    functionLinenumberEnd: 832
    functionName: rfapiMonitorMoveLonger
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - prefix_match
    - RFAPI_MONITOR_VPN_W_ALLOC
    - agg_node_parent
    - RFAPI_CHECK_REFCOUNT
    - agg_unlock_node
    - agg_lock_node
    - agg_node_get_prefix
    - RFAPI_MONITOR_VPN
    - rfapiGetUnAddrOfVpnBi
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorMoveLonger(struct agg_node *new_vpn_node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:845,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:848,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:850,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:851,1
    - Dst: rfapiBgpInfoFree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:856,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - bpi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 835
    functionDepth: 8
    functionLinenumber: 835
    functionLinenumberEnd: 859
    functionName: rfapiBgpInfoChainFree
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - rfapiBgpInfoFree
    - EVENT_OFF
    - XFREE
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void rfapiBgpInfoChainFree(struct bgp_path_info *bpi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:868,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:878,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:879,1
    - Dst: rfapiBgpInfoChainFree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:887,1
    - Dst: rfapiMonitorExtraFlush
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:890,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:892,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:897,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:898,1
    - Dst: rfapiBgpInfoChainFree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:900,1
    - Dst: rfapiMonitorExtraFlush
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:903,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:905,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:909,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - it
    argTypes:
    - struct rfapi_import_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 861
    functionDepth: 9
    functionLinenumber: 861
    functionLinenumberEnd: 911
    functionName: rfapiImportTableFlush
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - rfapiMonitorExtraFlush
    - agg_route_next
    - agg_table_finish
    - rfapiBgpInfoChainFree
    - skiplist_free
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void rfapiImportTableFlush(struct rfapi_import_table *it)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:920,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:923,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:930,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:931,1
    - Dst: rfapiImportTableFlush
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:941,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:942,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - bgp
    - it_target
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    assertStmts:
    - condition: (it_target)
      pos:
        line_end: 919
        line_start: 919
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (it)
      pos:
        line_end: 929
        line_start: 929
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (h)
      pos:
        line_end: 922
        line_start: 922
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (it->refcount)
      pos:
        line_end: 930
        line_start: 930
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 944
      start: 913
    functionDepth: 10
    functionLinenumber: 913
    functionLinenumberEnd: 944
    functionName: rfapiImportTableRefDelByIt
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - rfapiImportTableFlush
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiImportTableRefDelByIt(struct bgp *bgp,\n\t\t\t\tstruct rfapi_import_table
      *it_target)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 2
    argNames:
    - ecom
    - type
    argTypes:
    - struct ecommunity*
    - bgp_encap_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 974
    functionName: rfapiEcommunitiesMatchBeec
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int rfapiEcommunitiesMatchBeec(struct ecommunity *ecom,\n\t\t\t\t
      \     bgp_encap_types type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:986,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:987,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:988,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:989,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:990,1
    - Dst: memcmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:995,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - struct ecommunity*
    - struct ecommunity*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 977
    functionDepth: 4
    functionLinenumber: 977
    functionLinenumberEnd: 1004
    functionName: rfapiEcommunitiesIntersect
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - memcmp
    - ecommunity_ecom2str
    - XFREE
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: int
    signature: int rfapiEcommunitiesIntersect(struct ecommunity *e1, struct ecommunity
      *e2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ecom
    - lni
    argTypes:
    - struct ecommunity*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1006
    functionDepth: 0
    functionLinenumber: 1006
    functionLinenumberEnd: 1023
    functionName: rfapiEcommunityGetLNI
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rfapiEcommunityGetLNI(struct ecommunity *ecom, uint32_t *lni)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1027,1
    - Dst: ptr_get_be32
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1042,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - ecom
    - tag_id
    argTypes:
    - struct ecommunity*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1025
    functionDepth: 10
    functionLinenumber: 1025
    functionLinenumberEnd: 1058
    functionName: rfapiEcommunityGetEthernetTag
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - ptr_get_be32
    - bgp_get_default
    linkageType: ''
    returnType: int
    signature: int rfapiEcommunityGetEthernetTag(struct ecommunity *ecom, uint16_t
      *tag_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1068,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1081,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - bpi
    - hpt
    argTypes:
    - struct bgp_path_info*
    - struct rfapi_ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1060
    functionDepth: 1
    functionLinenumber: 1060
    functionLinenumberEnd: 1090
    functionName: rfapiVpnBiNhEqualsPt
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_CMP
    - BGP_MP_NEXTHOP_FAMILY
    linkageType: ''
    returnType: int
    signature: "int rfapiVpnBiNhEqualsPt(struct bgp_path_info *bpi,\n\t\t\t\tstruct
      rfapi_ip_addr *hpt)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1109,1
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1110,1
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1114,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1122,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1131,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1132,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1137,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1156,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1183,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1187,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 67
    argCount: 2
    argNames:
    - bpi1
    - bpi2
    argTypes:
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1096
    functionDepth: 3
    functionLinenumber: 1096
    functionLinenumberEnd: 1194
    functionName: rfapiVpnBiSamePtUn
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiGetVncTunnelUnAddr
    - memset
    - BGP_MP_NEXTHOP_FAMILY
    - IPV4_ADDR_SAME
    - IPV6_ADDR_SAME
    - IPV6_ADDR_CMP
    linkageType: ''
    returnType: int
    signature: "int rfapiVpnBiSamePtUn(struct bgp_path_info *bpi1,\n\t\t\t      struct
      bgp_path_info *bpi2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1206
    functionName: rfapiRfpCost
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t rfapiRfpCost(struct attr *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - pHop
    - l2o
    argTypes:
    - struct bgp_tea_options*
    - struct rfapi_l2address_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1224
    functionDepth: 0
    functionLinenumber: 1224
    functionLinenumberEnd: 1251
    functionName: rfapi_extract_l2o
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int rfapi_extract_l2o(\n\tstruct bgp_tea_options *pHop,       /* chain
      of options */\n\tstruct rfapi_l2address_option *l2o)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1261,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1264,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1267,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1272,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1278,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1283,1
    - Dst: rfapiEcommunityGetLNI
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1285,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1285,1
    - Dst: rfapiEcommunityGetEthernetTag
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1287,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1288,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1295,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1304,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1305,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1310,1
    - Dst: rfapiRfpCost
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1310,1
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1314,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1316,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1317,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1321,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1322,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1326,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1332,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1340,1
    - Dst: bgp_attr_extcom_tunnel_type
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1347,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1351,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1353,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1353,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1367,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1368,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1368,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1374,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1375,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1375,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1381,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1388,1
    - Dst: rfapi_encap_tlv_to_un_option
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1394,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1397,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1405,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1406,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1408,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1412,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1416,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1417,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 89
    argCount: 4
    argNames:
    - rprefix
    - bpi
    - lifetime
    - rn
    argTypes:
    - struct rfapi_ip_prefix*
    - struct bgp_path_info*
    - uint32_t
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1253
    functionDepth: 11
    functionLinenumber: 1253
    functionLinenumberEnd: 1425
    functionName: rfapiRouteInfo2NextHopEntry
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - prefix::prefix
    - rfapiQprefix2Rprefix
    - rfapiRfpCost
    - rfapiEcommunityGetEthernetTag
    - zlog_warn
    - rfapiNexthop2Prefix
    - bgp_attr_extcom_tunnel_type
    - rfapiQprefix2Raddr
    - rfapi_encap_tlv_to_un_option
    - XCALLOC
    - vnc_zlog_debug_verbose
    - BGP_MP_NEXTHOP_FAMILY
    - decode_rd_type
    - XCALLOC::XCALLOC
    - decode_label
    - bgp_attr_get_ecommunity
    - bgp_attr_get_vnc_subtlvs
    - agg_node_get_prefix
    - memcpy
    - vn_address::vn_address
    - rfapiEcommunityGetLNI
    - un_address::un_address
    linkageType: ''
    returnType: struct rfapi_next_hop_entry
    signature: "struct rfapi_next_hop_entry *\nrfapiRouteInfo2NextHopEntry(struct
      rfapi_ip_prefix *rprefix,\n\t\t\t    struct bgp_path_info *bpi, /* route to
      encode */\n\t\t\t    uint32_t lifetime,\t /* use this in nhe */\n\t\t\t    struct
      agg_node *rn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1434,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1435,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1441
      start: 1427
    functionDepth: 4
    functionLinenumber: 1427
    functionLinenumberEnd: 1441
    functionName: rfapiHasNonRemovedRoutes
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - rfapiGetUnAddrOfVpnBi
    linkageType: ''
    returnType: int
    signature: int rfapiHasNonRemovedRoutes(struct agg_node *rn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1451,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1454,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1457,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1465,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1447
    functionDepth: 4
    functionLinenumber: 1447
    functionLinenumberEnd: 1469
    functionName: rfapiDumpNode
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - rfapiGetUnAddrOfVpnBi
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void rfapiDumpNode(struct agg_node *rn)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1488,1
    - Dst: agg_get_table
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1492,1
    - Dst: agg_get_table_info
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1496,1
    - Dst: rfapiRibFTDFilterRecentPrefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1498,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1505,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1512,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1514,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1520,1
    - Dst: rfapiVpnBiNhEqualsPt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1531,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1542,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1544,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1546,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1553,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1555,1
    - Dst: prefix_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1562,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1564,1
    - Dst: rfapiRouteInfo2NextHopEntry::rfapiRouteInfo2NextHopEntry
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1566,1
    - Dst: rfapiRibPreloadBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1568,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1587,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 56
    argCount: 9
    argNames:
    - rn
    - rprefix
    - lifetime
    - removed
    - head
    - tail
    - exclude_vnaddr
    - rfd_rib_node
    - pfx_target_original
    argTypes:
    - struct agg_node*
    - struct rfapi_ip_prefix*
    - uint32_t
    - int
    - struct rfapi_next_hop_entry**
    - struct rfapi_next_hop_entry**
    - struct rfapi_ip_addr*
    - struct agg_node*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1472
    functionDepth: 12
    functionLinenumber: 1472
    functionLinenumberEnd: 1590
    functionName: rfapiNhlAddNodeRoutes
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    - vnc_zlog_debug_verbose
    - prefix_new
    - CHECK_FLAG
    - rfapiRibFTDFilterRecentPrefix
    - rfapiGetUnAddrOfVpnBi
    - rfapiRibPreloadBi
    - skiplist_new
    - rfapiNexthop2Prefix
    - skiplist_free
    - rfapiRouteInfo2NextHopEntry::rfapiRouteInfo2NextHopEntry
    - rfapiVpnBiNhEqualsPt
    - skiplist_insert
    - agg_node_get_prefix
    - agg_get_table_info
    - agg_get_table
    linkageType: ''
    returnType: int
    signature: "int rfapiNhlAddNodeRoutes(\n\tstruct agg_node *rn,\t\t      /* in
      */\n\tstruct rfapi_ip_prefix *rprefix,      /* in */\n\tuint32_t lifetime,\t\t
      \     /* in */\n\tint removed,\t\t\t      /* in */\n\tstruct rfapi_next_hop_entry
      **head,   /* in/out */\n\tstruct rfapi_next_hop_entry **tail,   /* in/out */\n\tstruct
      rfapi_ip_addr *exclude_vnaddr, /* omit routes to same NVE */\n\tstruct agg_node
      *rfd_rib_node,\t/* preload this NVE rib node */\n\tstruct prefix *pfx_target_original)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1617,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1617,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1618,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1620,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1620,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1624,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1626,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1628,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1629,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1633,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1634,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1640,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1644,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1644,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1645,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1647,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1647,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1651,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1653,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1655,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1656,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1660,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1661,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1667,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1671,1
    - Dst: rfapiNhlAddSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1672,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1673,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1676,1
    - Dst: rfapiNhlAddSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1677,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1678,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 8
    argNames:
    - rn
    - lifetime
    - head
    - tail
    - omit_node
    - exclude_vnaddr
    - rfd_rib_table
    - pfx_target_original
    argTypes:
    - struct agg_node*
    - uint32_t
    - struct rfapi_next_hop_entry**
    - struct rfapi_next_hop_entry**
    - struct agg_node*
    - struct rfapi_ip_addr*
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1602
    functionDepth: 13
    functionLinenumber: 1602
    functionLinenumberEnd: 1683
    functionName: rfapiNhlAddSubtree
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - agg_node_left
    - agg_node_right
    - rfapiNhlAddSubtree
    - rfapiNhlAddNodeRoutes
    - rfapiQprefix2Rprefix
    - agg_unlock_node
    - agg_node_get_prefix
    linkageType: ''
    returnType: int
    signature: "int rfapiNhlAddSubtree(\n\tstruct agg_node *rn,\t\t      /* in */\n\tuint32_t
      lifetime,\t\t      /* in */\n\tstruct rfapi_next_hop_entry **head,   /* in/out
      */\n\tstruct rfapi_next_hop_entry **tail,   /* in/out */\n\tstruct agg_node
      *omit_node,\t   /* in */\n\tstruct rfapi_ip_addr *exclude_vnaddr, /* omit routes
      to same NVE */\n\tstruct agg_table *rfd_rib_table,      /* preload here */\n\tstruct
      prefix *pfx_target_original)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1706,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1711,1
    - Dst: rfapiDebugBacktrace
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1712,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1715,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1717,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1722,1
    - Dst: rfapiNhlAddSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1730,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1733,1
    - Dst: rfapiPrintNhl
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1736,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1739,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1746,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1750,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1758,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1759,1
    - Dst: rfapiHasNonRemovedRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1760,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1769,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1771,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1772,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1773,1
    - Dst: rfapiNhlAddSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1776,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1780,1
    - Dst: rfapiNhlAddSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1788,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1794,1
    - Dst: rfapiPrintNhl
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1797,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - rn
    - lifetime
    - exclude_vnaddr
    - rfd_rib_table
    - pfx_target_original
    argTypes:
    - struct agg_node*
    - uint32_t
    - struct rfapi_ip_addr*
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1696
    functionDepth: 14
    functionLinenumber: 1696
    functionLinenumberEnd: 1800
    functionName: rfapiRouteNode2NextHopList
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - vnc_zlog_debug_verbose
    - rfapiNhlAddSubtree
    - rfapiNhlAddNodeRoutes
    - rfapiQprefix2Rprefix
    - agg_node_parent
    - agg_unlock_node
    - rfapiDebugBacktrace
    - rfapiPrintNhl
    - rfapiHasNonRemovedRoutes
    - agg_node_get_prefix
    linkageType: ''
    returnType: struct rfapi_next_hop_entry
    signature: "struct rfapi_next_hop_entry *rfapiRouteNode2NextHopList(\n\tstruct
      agg_node *rn, uint32_t lifetime, /* put into nexthop entries */\n\tstruct rfapi_ip_addr
      *exclude_vnaddr,   /* omit routes to same NVE */\n\tstruct agg_table *rfd_rib_table,\t/*
      preload here */\n\tstruct prefix *pfx_target_original)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1817,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1817,1
    - Dst: rfapiRouteNode2NextHopList
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1819,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1837,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - rt
    - lifetime
    - exclude_vnaddr
    - rfd_rib_table
    - pfx_target_original
    argTypes:
    - struct agg_table*
    - uint32_t
    - struct rfapi_ip_addr*
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1839
      start: 1805
    functionDepth: 15
    functionLinenumber: 1805
    functionLinenumberEnd: 1839
    functionName: rfapiRouteTable2NextHopList
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - rfapiRouteNode2NextHopList
    - vnc_zlog_debug_verbose
    - agg_route_next
    linkageType: ''
    returnType: struct rfapi_next_hop_entry
    signature: "struct rfapi_next_hop_entry *rfapiRouteTable2NextHopList(\n\tstruct
      agg_table *rt, uint32_t lifetime, /* put into nexthop entries */\n\tstruct rfapi_ip_addr
      *exclude_vnaddr,    /* omit routes to same NVE */\n\tstruct agg_table *rfd_rib_table,
      \   /* preload this NVE rib table */\n\tstruct prefix *pfx_target_original)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1854,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1854,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1857,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1861,1
    - Dst: rfapiNhlAddNodeRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1866,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1869,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1874,1
    - Dst: rfapiPrintNhl
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1877,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - rn
    - rprefix
    - lifetime
    - exclude_vnaddr
    - rfd_rib_table
    - pfx_target_original
    argTypes:
    - struct agg_node*
    - struct rfapi_ip_prefix*
    - uint32_t
    - struct rfapi_ip_addr*
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1841
    functionDepth: 13
    functionLinenumber: 1841
    functionLinenumberEnd: 1881
    functionName: rfapiEthRouteNode2NextHopList
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - vnc_zlog_debug_verbose
    - rfapiNhlAddNodeRoutes
    - agg_unlock_node
    - rfapiPrintNhl
    - agg_node_get_prefix
    linkageType: ''
    returnType: struct rfapi_next_hop_entry
    signature: "struct rfapi_next_hop_entry *rfapiEthRouteNode2NextHopList(\n\tstruct
      agg_node *rn, struct rfapi_ip_prefix *rprefix,\n\tuint32_t lifetime,\t\t      /*
      put into nexthop entries */\n\tstruct rfapi_ip_addr *exclude_vnaddr, /* omit
      routes to same NVE */\n\tstruct agg_table *rfd_rib_table,      /* preload NVE
      rib table */\n\tstruct prefix *pfx_target_original)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1895,1
    - Dst: rfapiMacImportTableGet
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1904,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1907,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1907,1
    - Dst: rfapiEthRouteNode2NextHopList
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1909,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1927,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 6
    argNames:
    - logical_net_id
    - rprefix
    - lifetime
    - exclude_vnaddr
    - rfd_rib_table
    - pfx_target_original
    argTypes:
    - uint32_t
    - struct rfapi_ip_prefix*
    - uint32_t
    - struct rfapi_ip_addr*
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1929
      start: 1887
    functionDepth: 14
    functionLinenumber: 1887
    functionLinenumberEnd: 1929
    functionName: rfapiEthRouteTable2NextHopList
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - rfapiMacImportTableGet
    - agg_route_next
    - rfapiEthRouteNode2NextHopList
    linkageType: ''
    returnType: struct rfapi_next_hop_entry
    signature: "struct rfapi_next_hop_entry *rfapiEthRouteTable2NextHopList(\n\tuint32_t
      logical_net_id, struct rfapi_ip_prefix *rprefix,\n\tuint32_t lifetime,\t\t      /*
      put into nexthop entries */\n\tstruct rfapi_ip_addr *exclude_vnaddr, /* omit
      routes to same NVE */\n\tstruct agg_table *rfd_rib_table,      /* preload NVE
      rib node */\n\tstruct prefix *pfx_target_original)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1945,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1947,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1948,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1950,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1959,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1960,1
    - Dst: bgp_path_info_cmp_compatible
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1961,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1968,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:1978,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - rn
    - info_new
    - afi
    - safi
    argTypes:
    - struct agg_node*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1979
      start: 1935
    functionDepth: 10
    functionLinenumber: 1935
    functionLinenumberEnd: 1979
    functionName: rfapiBgpInfoAttachSorted
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - CHECK_FLAG
    - bgp_path_info_cmp_compatible
    - VNC_DEBUG
    - bgp_attr_intern
    linkageType: ''
    returnType: void
    signature: "void rfapiBgpInfoAttachSorted(struct agg_node *rn,\n\t\t\t\t     struct
      bgp_path_info *info_new, afi_t afi,\n\t\t\t\t     safi_t safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rn
    - bpi
    argTypes:
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1981
    functionDepth: 0
    functionLinenumber: 1981
    functionLinenumberEnd: 1993
    functionName: rfapiBgpInfoDetach
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rfapiBgpInfoDetach(struct agg_node *rn, struct bgp_path_info *bpi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b1
    - b2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 1998
    functionDepth: 1
    functionLinenumber: 1998
    functionLinenumberEnd: 2017
    functionName: rfapi_bi_peer_rd_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_prefix_cmp
    linkageType: ''
    returnType: int
    signature: int rfapi_bi_peer_rd_cmp(const void *b1, const void *b2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2041,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2070,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - b1
    - b2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 2024
    functionDepth: 1
    functionLinenumber: 2024
    functionLinenumberEnd: 2072
    functionName: rfapi_bi_peer_rd_aux_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_prefix_cmp
    linkageType: ''
    returnType: int
    signature: int rfapi_bi_peer_rd_aux_cmp(const void *b1, const void *b2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2084,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2085,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2086,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2088,1
    - Dst: RFAPI_RDINDEX_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2091,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2093,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2095,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2097,1
    - Dst: RFAPI_IT_EXTRA_GET
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2099,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2100,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2102,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2102,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - rn
    - bpi
    argTypes:
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts:
    - condition: (rn)
      pos:
        line_end: 2083
        line_start: 2083
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (bpi)
      pos:
        line_end: 2084
        line_start: 2084
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (bpi->extra)
      pos:
        line_end: 2085
        line_start: 2085
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (!skiplist_insert(sl, (void *)bpi, (void *)bpi))
      pos:
        line_end: 2101
        line_start: 2101
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2106
      start: 2078
    functionDepth: 1
    functionLinenumber: 2078
    functionLinenumberEnd: 2106
    functionName: rfapiItBiIndexAdd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - skiplist_new
    - RFAPI_RDINDEX_W_ALLOC
    - skiplist_insert
    - RFAPI_IT_EXTRA_GET
    - agg_node_get_prefix
    - assert
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void rfapiItBiIndexAdd(struct agg_node *rn, /* Import table VPN node
      */\n\t\t\t      struct bgp_path_info *bpi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RFAPI_RDINDEX
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2116,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2120,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2121,1
    - Dst: prefix_rd2str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2126,1
    - Dst: bgp_get_asnotation
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2128,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2130,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2133,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2108
    functionDepth: 3
    functionLinenumber: 2108
    functionLinenumberEnd: 2138
    functionName: rfapiItBiIndexDump
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - bgp_get_asnotation
    - prefix2str
    - RFAPI_RDINDEX
    - vnc_zlog_debug_verbose
    - strlcpy
    - skiplist_next
    - prefix_rd2str
    linkageType: ''
    returnType: void
    signature: void rfapiItBiIndexDump(struct agg_node *rn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RFAPI_RDINDEX
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2151,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2160,1
    - Dst: strlcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2163,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2165,1
    - Dst: rfapiItBiIndexDump
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2168,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2175,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2181,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2187,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2192,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2197,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2203,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2224,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2228,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2234,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - rn
    - prd
    - peer
    - aux_prefix
    argTypes:
    - struct agg_node*
    - struct prefix_rd*
    - struct peer*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2238
      start: 2140
    functionDepth: 4
    functionLinenumber: 2140
    functionLinenumberEnd: 2238
    functionName: rfapiItBiIndexSearch
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - RFAPI_RDINDEX
    - skiplist_search
    - vnc_zlog_debug_verbose
    - prefix_cmp
    - strlcpy
    - rfapiItBiIndexDump
    linkageType: ''
    returnType: struct bgp_path_info
    signature: "struct bgp_path_info *rfapiItBiIndexSearch(\n\tstruct agg_node *rn,
      /* Import table VPN node */\n\tstruct prefix_rd *prd, struct peer *peer,\n\tconst
      struct prefix *aux_prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2246,1
    - Dst: RFAPI_RDINDEX
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2249,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2250,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2252,1
    - Dst: rfapiItBiIndexDump
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2254,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2256,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - rn
    - bpi
    argTypes:
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts:
    - condition: (sl)
      pos:
        line_end: 2249
        line_start: 2249
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (!rc)
      pos:
        line_end: 2255
        line_start: 2255
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2261
      start: 2240
    functionDepth: 4
    functionLinenumber: 2240
    functionLinenumberEnd: 2261
    functionName: rfapiItBiIndexDel
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - RFAPI_RDINDEX
    - vnc_zlog_debug_verbose
    - skiplist_delete
    - agg_unlock_node
    - rfapiItBiIndexDump
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiItBiIndexDel(struct agg_node *rn, /* Import table VPN node
      */\n\t\t\t      struct bgp_path_info *bpi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2273,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2277,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2278,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2279,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2281,1
    - Dst: RFAPI_MONITOR_ENCAP
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2289,1
    - Dst: RFAPI_MONITOR_ENCAP_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2292,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2297,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2301,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - import_table
    - p
    - vpn_rn
    - vpn_bpi
    argTypes:
    - struct rfapi_import_table*
    - struct prefix*
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts:
    - condition: (afi)
      pos:
        line_end: 2276
        line_start: 2276
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (rn)
      pos:
        line_end: 2278
        line_start: 2278
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2303
      start: 2267
    functionDepth: 6
    functionLinenumber: 2267
    functionLinenumberEnd: 2303
    functionName: rfapiMonitorEncapAdd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - assert
    - agg_node_get
    - RFAPI_MONITOR_ENCAP_W_ALLOC
    - XCALLOC
    - vnc_zlog_debug_verbose
    - RFAPI_CHECK_REFCOUNT
    - family2afi
    - bgp_attr_intern
    - RFAPI_MONITOR_ENCAP
    linkageType: ''
    returnType: void
    signature: "void rfapiMonitorEncapAdd(struct rfapi_import_table *import_table,\n\t\t
      \    struct prefix *p,\t\t    /* VN address */\n\t\t     struct agg_node *vpn_rn,
      \      /* VPN node */\n\t\t     struct bgp_path_info *vpn_bpi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2310,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2317,1
    - Dst: RFAPI_MONITOR_ENCAP_W_ALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2326,1
    - Dst: rfapiMonitorExtraPrune
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2333,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2335,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2336,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - vpn_bpi
    argTypes:
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2305
    functionDepth: 1
    functionLinenumber: 2305
    functionLinenumberEnd: 2340
    functionName: rfapiMonitorEncapDelete
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - RFAPI_MONITOR_ENCAP_W_ALLOC
    - rfapiMonitorExtraPrune
    - vnc_zlog_debug_verbose
    - agg_unlock_node
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapiMonitorEncapDelete(struct bgp_path_info *vpn_bpi)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2347,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2349,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2356,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2361,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2362,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2370,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2374,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2375,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2376,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2377,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2379,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2381,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2387,1
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2388,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2389,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2391,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2392,1
    - Dst: rfapiItBiIndexDel
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2394,1
    - Dst: rfapiBgpInfoDetach
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2395,1
    - Dst: vnc_import_bgp_exterior_del_route_interior
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2397,1
    - Dst: rfapiVpnBiSamePtUn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2419,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2425,1
    - Dst: rfapiRibPendingDeleteRoute
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2429,1
    - Dst: rfapiMonitorEncapDelete
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2434,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2440,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2441,1
    - Dst: rfapiMonitorMoveShorter
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2450,1
    - Dst: rfapiMonitorMovedUp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2453,1
    - Dst: rfapiBgpInfoFree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2461,1
    - Dst: rfapiMonitorExtraPrune
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2469,1
    - Dst: vnc_direct_bgp_del_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2470,1
    - Dst: vnc_zebra_del_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2471,1
    - Dst: vnc_direct_bgp_add_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2478,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2481,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2482,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2483,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (bpi->extra)
      pos:
        line_end: 2376
        line_start: 2376
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (wcb->node)
      pos:
        line_end: 2373
        line_start: 2373
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (bpi)
      pos:
        line_end: 2374
        line_start: 2374
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (wcb->import_table)
      pos:
        line_end: 2375
        line_start: 2375
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2484
      start: 2345
    functionDepth: 11
    functionLinenumber: 2345
    functionLinenumberEnd: 2484
    functionName: rfapiWithdrawTimerVPN
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_direct_bgp_add_prefix
    - vnc_zlog_debug_verbose
    - rfapiMonitorMoveShorter
    - bgp_get_default
    - agg_unlock_node
    - rfapiVpnBiSamePtUn
    - EVENT_ARG
    - assert
    - rfapiItBiIndexDel
    - rfapiMonitorExtraPrune
    - vnc_import_bgp_exterior_del_route_interior
    - rfapiMonitorEncapDelete
    - vnc_direct_bgp_del_prefix
    - rfapiBgpInfoFree
    - vnc_zebra_del_prefix
    - XFREE
    - family2afi
    - rfapiBgpInfoDetach
    - agg_node_get_prefix
    - rfapiRibPendingDeleteRoute
    - CHECK_FLAG
    - RFAPI_CHECK_REFCOUNT
    - RFAPI_MONITOR_EXTERIOR
    - rfapiMonitorMovedUp
    - VALID_INTERIOR_TYPE
    - RFAPI_MONITOR_VPN
    linkageType: ''
    returnType: void
    signature: void rfapiWithdrawTimerVPN(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2492,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2493,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2495,1
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2497,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2509,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - attr
    - p
    argTypes:
    - struct attr*
    - struct prefix*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 2491
        line_start: 2491
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (attr)
      pos:
        line_end: 2492
        line_start: 2492
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2512
      start: 2490
    functionDepth: 1
    functionLinenumber: 2490
    functionLinenumberEnd: 2512
    functionName: rfapiNexthop2Prefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 4
    functionsReached:
    - memset
    - BGP_MP_NEXTHOP_FAMILY
    - assert
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void rfapiNexthop2Prefix(struct attr *attr, struct prefix *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - afi
    - attr
    - p
    argTypes:
    - afi_t
    - struct attr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2523
      start: 2514
    functionDepth: 2
    functionLinenumber: 2514
    functionLinenumberEnd: 2523
    functionName: rfapiUnicastNexthop2Prefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 11
    functionsReached:
    - rfapiNexthop2Prefix
    linkageType: ''
    returnType: void
    signature: void rfapiUnicastNexthop2Prefix(afi_t afi, struct attr *attr, struct
      prefix *p)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2528,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2541,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2546,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2551,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct prefix*
    - struct prefix*
    assertStmts:
    - condition: (1)
      pos:
        line_end: 2550
        line_start: 2550
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2555
      start: 2525
    functionDepth: 1
    functionLinenumber: 2525
    functionLinenumberEnd: 2555
    functionName: rfapiAttrNexthopAddrDifferent
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    - IPV4_ADDR_SAME
    - assert
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: int
    signature: int rfapiAttrNexthopAddrDifferent(struct prefix *p1, struct prefix
      *p2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2561,1
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2566,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2572,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2573,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - encap_bpi
    - vpn_bpi
    argTypes:
    - struct bgp_path_info*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2557
    functionDepth: 1
    functionLinenumber: 2557
    functionLinenumberEnd: 2593
    functionName: rfapiCopyUnEncap2VPN
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - BGP_MP_NEXTHOP_FAMILY
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: "void rfapiCopyUnEncap2VPN(struct bgp_path_info *encap_bpi,\n\t\t\t\t
      struct bgp_path_info *vpn_bpi)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2610,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2616,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2618,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2619,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2620,1
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2621,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2622,1
    - Dst: vnc_import_bgp_exterior_del_route_interior
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2626,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2627,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2634,1
    - Dst: rfapiCopyUnEncap2VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2638,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2639,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2640,1
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2641,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2642,1
    - Dst: vnc_import_bgp_exterior_add_route_interior
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2646,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2647,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - import_table
    - encap_bpi
    - vpn_rn
    - vpn_bpi
    argTypes:
    - struct rfapi_import_table*
    - struct bgp_path_info*
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2652
      start: 2598
    functionDepth: 10
    functionLinenumber: 2598
    functionLinenumberEnd: 2652
    functionName: rfapiWithdrawEncapUpdateCachedUn
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiGetVncTunnelUnAddr
    - memset
    - vnc_import_bgp_exterior_del_route_interior
    - bgp_get_default
    - CHECK_FLAG
    - vnc_import_bgp_exterior_add_route_interior
    - RFAPI_MONITOR_EXTERIOR
    - zlog_warn
    - UNSET_FLAG
    - rfapiCopyUnEncap2VPN
    - SET_FLAG
    - VALID_INTERIOR_TYPE
    linkageType: ''
    returnType: int
    signature: "int rfapiWithdrawEncapUpdateCachedUn(struct rfapi_import_table *import_table,\n\t\t\t\t
      struct bgp_path_info *encap_bpi,\n\t\t\t\t struct agg_node *vpn_rn,\n\t\t\t\t
      struct bgp_path_info *vpn_bpi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2656,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2660,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2662,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2663,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2664,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2666,1
    - Dst: rfapiBgpInfoDetach
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2674,1
    - Dst: rfapiBgpInfoFree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2675,1
    - Dst: RFAPI_MONITOR_ENCAP
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2680,1
    - Dst: rfapiWithdrawEncapUpdateCachedUn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2687,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2697,1
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2705,1
    - Dst: rfapiMonitorMoveShorter
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2709,1
    - Dst: rfapiMonitorMovedUp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2713,1
    - Dst: rfapiMonitorItNodeChanged
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2718,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2720,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2724,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2725,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2726,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2727,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (bpi)
      pos:
        line_end: 2662
        line_start: 2662
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (wcb->import_table)
      pos:
        line_end: 2663
        line_start: 2663
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (wcb->node)
      pos:
        line_end: 2661
        line_start: 2661
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2728
      start: 2654
    functionDepth: 11
    functionLinenumber: 2654
    functionLinenumberEnd: 2728
    functionName: rfapiWithdrawTimerEncap
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiMonitorMovedUp
    - RFAPI_MONITOR_ENCAP
    - rfapiMonitorMoveShorter
    - rfapiWithdrawEncapUpdateCachedUn
    - rfapiMonitorItNodeChanged
    - RFAPI_CHECK_REFCOUNT
    - agg_unlock_node
    - skiplist_new
    - rfapiBgpInfoFree
    - skiplist_first
    - skiplist_free
    - XFREE
    - EVENT_ARG
    - skiplist_delete_first
    - rfapiBgpInfoDetach
    - skiplist_insert
    - assert
    linkageType: ''
    returnType: void
    signature: void rfapiWithdrawTimerEncap(struct event *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2744,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2750,1
    - Dst: rfapiGetVncLifetime
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2755,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2756,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2761,1
    - Dst: rfapiGetHolddownFromLifetime
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2764,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2765,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2771,1
    - Dst: bgp_attr_intern
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2775,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2777,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2778,1
    - Dst: rfapiPrintBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2781,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2785,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2789,1
    - Dst: event_add_timer_msec
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2805,1
    - Dst: rfapiBgpInfoDetach
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2812,1
    - Dst: rfapiBgpInfoAttachSorted
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2813,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 5
    argNames:
    - import_table
    - rn
    - bpi
    - afi
    - safi
    argTypes:
    - struct rfapi_import_table*
    - struct agg_node*
    - struct bgp_path_info*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (bpi->extra)
      pos:
        line_end: 2784
        line_start: 2784
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 2815
      start: 2735
    functionDepth: 11
    functionLinenumber: 2735
    functionLinenumberEnd: 2815
    functionName: rfapiBiStartWithdrawTimer
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiGetHolddownFromLifetime
    - vnc_zlog_debug_verbose
    - XCALLOC
    - CHECK_FLAG
    - rfapiGetVncLifetime
    - event_add_timer_msec
    - SET_FLAG
    - VNC_DEBUG
    - event_add_timer
    - rfapiBgpInfoDetach
    - rfapiBgpInfoAttachSorted
    - rfapiPrintBi
    - bgp_attr_intern
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiBiStartWithdrawTimer(struct rfapi_import_table *import_table,\n\t\t\t
      \ struct agg_node *rn, struct bgp_path_info *bpi,\n\t\t\t  afi_t afi, safi_t
      safi,\n\t\t\t  void (*timer_service_func)(struct event *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2836,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2840,1
    - Dst: rfapiWithdrawTimerEncap
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - it
    - rn
    - bpi
    argTypes:
    - struct rfapi_import_table*
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2827
    functionDepth: 12
    functionLinenumber: 2827
    functionLinenumberEnd: 2843
    functionName: rfapiExpireEncapNow
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiWithdrawTimerEncap
    - memset
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void rfapiExpireEncapNow(struct rfapi_import_table *it,\n\t\t\t\tstruct
      agg_node *rn, struct bgp_path_info *bpi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2847,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2859,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - attr
    - prefix
    argTypes:
    - struct attr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2864
      start: 2845
    functionDepth: 0
    functionLinenumber: 2845
    functionLinenumberEnd: 2864
    functionName: rfapiGetNexthop
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - BGP_MP_NEXTHOP_FAMILY
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: int
    signature: int rfapiGetNexthop(struct attr *attr, struct prefix *prefix)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2895,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2908,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2912,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2914,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2917,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2918,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2926,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2928,1
    - Dst: rfapiEcommunitiesMatchBeec
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2934,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2935,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2936,1
    - Dst: rfapiEcommunitiesIntersect
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2942,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2944,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2946,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2955,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2957,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2958,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2976,1
    - Dst: agg_node_lookup
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2984,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2987,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2993,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:2994,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3001,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3012,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3023,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3027,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3031,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3040,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3045,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3052,1
    - Dst: rfapiBiStartWithdrawTimer
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3056,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3061,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3074,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3076,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3079,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3080,1
    - Dst: rfapiBgpInfoDetach
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3084,1
    - Dst: rfapiBgpInfoFree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3085,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3098,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3104,1
    - Dst: rfapiWithdrawTimerEncap
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3106,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3116,1
    - Dst: rfapiBgpInfoCreate
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3122,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3126,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3128,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3131,1
    - Dst: rfapiBgpInfoAttachSorted
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3134,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3146,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3154,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3155,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3163,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3168,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3170,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3171,1
    - Dst: rfapiExpireEncapNow
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3173,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3176,1
    - Dst: rfapiAttrNexthopAddrDifferent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3185,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3203,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3209,1
    - Dst: RFAPI_MONITOR_ENCAP
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3212,1
    - Dst: rfapiCopyUnEncap2VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3222,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3223,1
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3224,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3225,1
    - Dst: vnc_import_bgp_exterior_add_route_interior
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3227,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3241,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3243,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3244,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3256,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3258,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3271,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3274,1
    - Dst: rfapiMonitorMoveLonger
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3280,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3281,1
    - Dst: rfapiMonitorItNodeChanged
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3285,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3289,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3290,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3293,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3296,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 169
    argCount: 12
    argNames:
    - import_table
    - action
    - peer
    - rfd
    - p
    - aux_prefix
    - afi
    - prd
    - attr
    - type
    - sub_type
    - label
    argTypes:
    - struct rfapi_import_table*
    - int
    - struct peer*
    - void*
    - struct prefix*
    - struct prefix*
    - afi_t
    - struct prefix_rd*
    - struct attr*
    - uint8_t
    - uint8_t
    - uint32_t*
    assertStmts:
    - condition: (referenced_vpn_prefix)
      pos:
        line_end: 3243
        line_start: 3243
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (0)
      pos:
        line_end: 2907
        line_start: 2907
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 3297
      start: 2870
    functionDepth: 13
    functionLinenumber: 2870
    functionLinenumberEnd: 3297
    functionName: rfapiBgpInfoFilteredImportEncap
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiWithdrawTimerEncap
    - agg_table_finish
    - flog_err
    - rfapiNexthop2Prefix
    - agg_node_lookup
    - rfapiBiStartWithdrawTimer
    - rfapiExpireEncapNow
    - rfapiCopyUnEncap2VPN
    - RFAPI_MONITOR_ENCAP
    - agg_table_init
    - memset
    - vnc_zlog_debug_verbose
    - prefix_cmp
    - bgp_get_default
    - rfapiGetNexthop
    - XCALLOC
    - rfapiMonitorItNodeChanged
    - agg_unlock_node
    - inet_ntop
    - rfapiEcommunitiesMatchBeec
    - EVENT_ARG
    - assert
    - agg_node_get
    - prefix_same
    - bgp_attr_get_ecommunity
    - vnc_import_bgp_exterior_add_route_interior
    - rfapiBgpInfoFree
    - EVENT_OFF
    - rfapiAttrNexthopAddrDifferent
    - XFREE
    - rfapiBgpInfoDetach
    - agg_node_get_prefix
    - agg_route_top
    - rfapiMonitorMoveLonger
    - CHECK_FLAG
    - RFAPI_CHECK_REFCOUNT
    - agg_route_next
    - rfapiEcommunitiesIntersect
    - RFAPI_MONITOR_EXTERIOR
    - SET_FLAG
    - agg_node_parent
    - rfapiBgpInfoCreate
    - rfapiBgpInfoAttachSorted
    - VALID_INTERIOR_TYPE
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void rfapiBgpInfoFilteredImportEncap(\n\tstruct rfapi_import_table
      *import_table, int action, struct peer *peer,\n\tvoid *rfd, /* set for looped
      back routes */\n\tconst struct prefix *p,\n\tconst struct prefix *aux_prefix,
      /* Unused for encap routes */\n\tafi_t afi, struct prefix_rd *prd,\n\tstruct
      attr *attr, /* part of bgp_path_info */\n\tuint8_t type,\t   /* part of bgp_path_info
      */\n\tuint8_t sub_type,  /* part of bgp_path_info */\n\tuint32_t *label)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3309,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3314,1
    - Dst: rfapiWithdrawTimerVPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - it
    - rn
    - bpi
    - lockoffset
    argTypes:
    - struct rfapi_import_table*
    - struct agg_node*
    - struct bgp_path_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3317
      start: 3299
    functionDepth: 12
    functionLinenumber: 3299
    functionLinenumberEnd: 3317
    functionName: rfapiExpireVpnNow
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - rfapiWithdrawTimerVPN
    - memset
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void rfapiExpireVpnNow(struct rfapi_import_table *it,\n\t\t\t      struct
      agg_node *rn, struct bgp_path_info *bpi,\n\t\t\t      int lockoffset)"
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3353,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3366,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3373,1
    - Dst: rfapi_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3375,1
    - Dst: afi2str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3376,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3386,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3388,1
    - Dst: rfapiEcommunitiesIntersect
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3394,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3396,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3398,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3404,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3406,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3408,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3425,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3430,1
    - Dst: agg_node_lookup
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3436,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3438,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3442,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3443,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3448,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3449,1
    - Dst: rfapiShowItNode
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3451,1
    - Dst: rfapiItBiIndexSearch
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3457,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3470,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3472,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3475,1
    - Dst: vnc_direct_bgp_del_route_ce
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3483,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3490,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3493,1
    - Dst: rfapiBiStartWithdrawTimer
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3502,1
    - Dst: RFAPI_UPDATE_ITABLE_COUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3507,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3513,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3526,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3528,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3531,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3532,1
    - Dst: RFAPI_UPDATE_ITABLE_COUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3535,1
    - Dst: RFAPI_UPDATE_ITABLE_COUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3543,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3559,1
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3561,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3562,1
    - Dst: rfapiItBiIndexDel
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3564,1
    - Dst: rfapiBgpInfoDetach
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3565,1
    - Dst: rfapiMonitorEncapDelete
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3566,1
    - Dst: vnc_import_bgp_exterior_del_route_interior
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3567,1
    - Dst: rfapiBgpInfoFree
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3569,1
    - Dst: rfapiExpireVpnNow
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3576,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3584,1
    - Dst: rfapiBgpInfoCreate
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3592,1
    - Dst: agg_node_match
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3597,1
    - Dst: rfapiCopyUnEncap2VPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3599,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3600,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3603,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3610,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3616,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3625,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3630,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3632,1
    - Dst: rfapiBgpInfoAttachSorted
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3634,1
    - Dst: rfapiItBiIndexAdd
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3635,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3636,1
    - Dst: VALID_INTERIOR_TYPE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3637,1
    - Dst: RFAPI_MONITOR_EXTERIOR
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3638,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3639,1
    - Dst: RFAPI_UPDATE_ITABLE_COUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3641,1
    - Dst: vnc_import_bgp_exterior_add_route_interior
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3642,1
    - Dst: vnc_direct_bgp_add_route_ce
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3646,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3648,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3649,1
    - Dst: rfapiShowItNode
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3650,1
    - Dst: rfapiMonitorEncapAdd
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3653,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3655,1
    - Dst: rfapiMonitorMoveLonger
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3662,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3715,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3721,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3723,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3727,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3729,1
    - Dst: RFAPI_LOCAL_BI
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3732,1
    - Dst: RFAPI_LOCAL_BI
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3732,1
    - Dst: sockunion_same
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3733,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3741,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3746,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3748,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3749,1
    - Dst: rfapiExpireVpnNow
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3751,1
    - Dst: vnc_direct_bgp_add_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3759,1
    - Dst: vnc_zebra_add_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3760,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3770,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3771,1
    - Dst: vnc_direct_bgp_add_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3777,1
    - Dst: agg_node_parent
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3782,1
    - Dst: rfapiMonitorItNodeChanged
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3785,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3787,1
    CyclomaticComplexity: 63
    EdgeCount: 63
    ICount: 188
    argCount: 12
    argNames:
    - import_table
    - action
    - peer
    - rfd
    - p
    - aux_prefix
    - afi
    - prd
    - attr
    - type
    - sub_type
    - label
    argTypes:
    - struct rfapi_import_table*
    - int
    - struct peer*
    - void*
    - struct prefix*
    - struct prefix*
    - afi_t
    - struct prefix_rd*
    - struct attr*
    - uint8_t
    - uint8_t
    - uint32_t*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 3365
        line_start: 3365
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 3789
      start: 3324
    functionDepth: 16
    functionLinenumber: 3324
    functionLinenumberEnd: 3789
    functionName: rfapiBgpInfoFilteredImportVPN
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 3
    functionsReached:
    - agg_node_match
    - afi2str
    - flog_err
    - zlog_warn
    - agg_node_lookup
    - rfapiBiStartWithdrawTimer
    - rfapiCopyUnEncap2VPN
    - vnc_direct_bgp_add_prefix
    - rfapiGetUnAddrOfVpnBi
    - vnc_zebra_add_prefix
    - rfapi_ntop
    - memset
    - vnc_zlog_debug_verbose
    - rfapiExpireVpnNow
    - bgp_get_default
    - rfapiGetNexthop
    - rfapiMonitorEncapAdd
    - rfapiMonitorItNodeChanged
    - agg_unlock_node
    - rfapiItBiIndexSearch
    - EVENT_ARG
    - RFAPI_LOCAL_BI
    - agg_node_get_lock_count
    - assert
    - agg_node_get
    - rfapiItBiIndexDel
    - prefix_same
    - vnc_import_bgp_exterior_del_route_interior
    - rfapiMonitorEncapDelete
    - bgp_attr_get_ecommunity
    - vnc_direct_bgp_add_route_ce
    - vnc_import_bgp_exterior_add_route_interior
    - rfapiBgpInfoFree
    - EVENT_OFF
    - VNC_DEBUG
    - rfapiShowItNode
    - XFREE
    - vnc_direct_bgp_del_route_ce
    - rfapiBgpInfoDetach
    - rfapiItBiIndexAdd
    - RFAPI_UPDATE_ITABLE_COUNT
    - rfapiMonitorMoveLonger
    - CHECK_FLAG
    - sockunion_same
    - RFAPI_CHECK_REFCOUNT
    - agg_node_parent
    - rfapiEcommunitiesIntersect
    - RFAPI_MONITOR_EXTERIOR
    - SET_FLAG
    - rfapiBgpInfoCreate
    - rfapiBgpInfoAttachSorted
    - VALID_INTERIOR_TYPE
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void rfapiBgpInfoFilteredImportVPN(\n\tstruct rfapi_import_table *import_table,
      int action, struct peer *peer,\n\tvoid *rfd, /* set for looped back routes */\n\tconst
      struct prefix *p,\n\tconst struct prefix *aux_prefix, /* AFI_L2VPN: optional
      IP */\n\tafi_t afi, struct prefix_rd *prd,\n\tstruct attr *attr, /* part of
      bgp_path_info */\n\tuint8_t type,\t   /* part of bgp_path_info */\n\tuint8_t
      sub_type,  /* part of bgp_path_info */\n\tuint32_t *label)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 12
    argNames:
    - import_table
    - action
    - peer
    - rfd
    - p
    - aux_prefix
    - afi
    - prd
    - attr
    - type
    - sub_type
    - label
    argTypes:
    - struct rfapi_import_table*
    - int
    - struct peer*
    - void*
    - struct prefix*
    - struct prefix*
    - afi_t
    - struct prefix_rd*
    - struct attr*
    - uint8_t
    - uint8_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3803
      start: 3791
    functionDepth: 0
    functionLinenumber: 3791
    functionLinenumberEnd: 3803
    functionName: rfapiBgpInfoFilteredImportBadSafi
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: "void rfapiBgpInfoFilteredImportBadSafi(\n\tstruct rfapi_import_table
      *import_table, int action, struct peer *peer,\n\tvoid *rfd, /* set for looped
      back routes */\n\tconst struct prefix *p,\n\tconst struct prefix *aux_prefix,
      /* AFI_L2VPN: optional IP */\n\tafi_t afi, struct prefix_rd *prd,\n\tstruct
      attr *attr, /* part of bgp_path_info */\n\tuint8_t type,\t   /* part of bgp_path_info
      */\n\tuint8_t sub_type,  /* part of bgp_path_info */\n\tuint32_t *label)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3823,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3827,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - safi
    argTypes:
    - safi_t
    assertStmts:
    - condition: (!"Reached end of function when we were not expecting to")
      pos:
        line_end: 3826
        line_start: 3826
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 3828
      start: 3805
    functionDepth: 1
    functionLinenumber: 3805
    functionLinenumberEnd: 3828
    functionName: rfapiBgpInfoFilteredImportFunction
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - flog_err
    - assert
    linkageType: ''
    returnType: rfapi_bi_filtered_import_f
    signature: 'rfapi_bi_filtered_import_f *

      rfapiBgpInfoFilteredImportFunction(safi_t safi)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3842,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3843,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3846,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3853,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3862,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3863,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3868,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3871,1
    - Dst: rfapiEcommunityGetLNI
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3877,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3877,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3879,1
    - Dst: rfapiMacImportTableGet
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3883,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3885,1
    - Dst: rfapiBgpInfoFilteredImportFunction
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3901,1
    - Dst: vnc_direct_bgp_rh_add_route
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3907,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3908,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 10
    argNames:
    - peer
    - rfd
    - p
    - prd
    - attr
    - afi
    - safi
    - type
    - sub_type
    - label
    argTypes:
    - struct peer*
    - void*
    - struct prefix*
    - struct prefix_rd*
    - struct attr*
    - afi_t
    - safi_t
    - uint8_t
    - uint8_t
    - uint32_t*
    assertStmts:
    - condition: (bgp)
      pos:
        line_end: 3842
        line_start: 3842
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (h)
      pos:
        line_end: 3845
        line_start: 3845
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 3913
      start: 3830
    functionDepth: 17
    functionLinenumber: 3830
    functionLinenumberEnd: 3913
    functionName: rfapiProcessUpdate
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 3
    functionsReached:
    - rfapiBgpInfoFilteredImportVPN
    - memset
    - prefix_cmp
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - rfapiGetNexthop
    - rfapiMacImportTableGet
    - bgp_attr_get_ecommunity
    - vnc_direct_bgp_rh_add_route
    - rfapiEcommunityGetLNI
    - decode_rd_type
    - memcpy
    - rfapiBgpInfoFilteredImportFunction
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiProcessUpdate(struct peer *peer,\n\t\t\tvoid *rfd, /* set
      when looped from RFP/RFAPI */\n\t\t\tconst struct prefix *p, struct prefix_rd
      *prd,\n\t\t\tstruct attr *attr, afi_t afi, safi_t safi, uint8_t type,\n\t\t\tuint8_t
      sub_type, uint32_t *label)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3924,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3925,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3928,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3935,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3940,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3943,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3955,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3957,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3961,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3966,1
    - Dst: rfapiBgpInfoFilteredImportFunction
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3990,1
    - Dst: vnc_direct_bgp_rh_del_route
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:3999,1
    - Dst: rfapiBgpInfoFilteredImportVPN
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4002,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 9
    argNames:
    - peer
    - rfd
    - p
    - prd
    - attr
    - afi
    - safi
    - type
    - kill
    argTypes:
    - struct peer*
    - void*
    - struct prefix*
    - struct prefix_rd*
    - struct attr*
    - afi_t
    - safi_t
    - uint8_t
    - int
    assertStmts:
    - condition: (bgp)
      pos:
        line_end: 3924
        line_start: 3924
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (h)
      pos:
        line_end: 3927
        line_start: 3927
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4009
      start: 3916
    functionDepth: 17
    functionLinenumber: 3916
    functionLinenumberEnd: 4009
    functionName: rfapiProcessWithdraw
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 4
    functionsReached:
    - assert
    - rfapiBgpInfoFilteredImportVPN
    - memset
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - skiplist_next
    - decode_rd_type
    - rfapiBgpInfoFilteredImportFunction
    - vnc_direct_bgp_rh_del_route
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void rfapiProcessWithdraw(struct peer *peer, void *rfd, const struct
      prefix *p,\n\t\t\t  struct prefix_rd *prd, struct attr *attr, afi_t afi,\n\t\t\t
      \ safi_t safi, uint8_t type, int kill)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4046,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4069,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4072,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4072,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4076,1
    - Dst: RFAPI_UPDATE_ITABLE_COUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4082,1
    - Dst: rfapiBiStartWithdrawTimer
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4086,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - peer
    - import_table
    - afi
    - safi
    argTypes:
    - struct peer*
    - struct rfapi_import_table*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (afi == AFI_IP || afi == AFI_IP6)
      pos:
        line_end: 4045
        line_start: 4045
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (0)
      pos:
        line_end: 4068
        line_start: 4068
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4093
      start: 4037
    functionDepth: 12
    functionLinenumber: 4037
    functionLinenumberEnd: 4093
    functionName: rfapiProcessPeerDownRt
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - RFAPI_UPDATE_ITABLE_COUNT
    - CHECK_FLAG
    - agg_route_next
    - rfapiBiStartWithdrawTimer
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiProcessPeerDownRt(struct peer *peer,\n\t\t\t\t   struct
      rfapi_import_table *import_table,\n\t\t\t\t   afi_t afi, safi_t safi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4114,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4125,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4130,1
    - Dst: rfapiProcessPeerDownRt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4133,1
    - Dst: rfapiProcessPeerDownRt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4134,1
    - Dst: rfapiProcessPeerDownRt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4135,1
    - Dst: rfapiProcessPeerDownRt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4136,1
    - Dst: rfapiProcessPeerDownRt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4140,1
    - Dst: rfapiProcessPeerDownRt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct peer*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 4129
        line_start: 4129
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4143
      start: 4103
    functionDepth: 13
    functionLinenumber: 4103
    functionLinenumberEnd: 4143
    functionName: rfapiProcessPeerDown
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 2
    functionsReached:
    - bgp_get_default
    - CHECK_FLAG
    - rfapiProcessPeerDownRt
    - assert
    linkageType: ''
    returnType: void
    signature: void rfapiProcessPeerDown(struct peer *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4160,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4167,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4168,1
    - Dst: bgp_dest_has_bgp_path_info_data
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4170,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4172,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4173,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4174,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4178,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4182,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4187,1
    - Dst: rfapiBgpInfoFilteredImportFunction
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4189,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4194,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4197,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 4
    argNames:
    - bgp
    - it
    - afi
    - safi
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - afi_t
    - safi_t
    assertStmts:
    - condition: (safi == SAFI_MPLS_VPN || safi == SAFI_ENCAP)
      pos:
        line_end: 4159
        line_start: 4159
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4205
      start: 4152
    functionDepth: 2
    functionLinenumber: 4152
    functionLinenumberEnd: 4205
    functionName: rfapiBgpTableFilteredImport
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - assert
    - decode_label
    - bgp_table_top
    - bgp_dest_get_prefix
    - CHECK_FLAG
    - bgp_dest_has_bgp_path_info_data
    - bgp_dest_get_bgp_path_info
    - rfapiBgpInfoFilteredImportFunction
    - bgp_dest_get_bgp_table_info
    linkageType: ''
    returnType: void
    signature: "void rfapiBgpTableFilteredImport(struct bgp *bgp,\n\t\t\t\t\tstruct
      rfapi_import_table *it,\n\t\t\t\t\tafi_t afi, safi_t safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4216,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4218,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4221,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4227,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4229,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4230,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4231,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4232,1
    - Dst: rfapiBgpTableFilteredImport
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4233,1
    - Dst: rfapiBgpTableFilteredImport
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4234,1
    - Dst: work_queue_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4240,1
    - Dst: rfp_start
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4244,1
    - Dst: bgp_rfapi_cfg_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts:
    - condition: (bgp->rfapi_cfg == NULL)
      pos:
        line_end: 4215
        line_start: 4215
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4250
      start: 4209
    functionDepth: 3
    functionLinenumber: 4209
    functionLinenumberEnd: 4250
    functionName: bgp_rfapi_new
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - assert
    - rfp_start
    - XCALLOC
    - bgp_rfapi_cfg_new
    - rfapiBgpTableFilteredImport
    - work_queue_new
    - agg_table_init
    linkageType: ''
    returnType: struct rfapi
    signature: struct rfapi *bgp_rfapi_new(struct bgp *bgp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4260,1
    - Dst: rfapiImportTableFlush
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4264,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4272,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4274,1
    - Dst: rfapiImportTableFlush
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4277,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4278,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4280,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4284,1
    - Dst: rfp_stop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4287,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4290,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4293,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4294,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - bgp
    - h
    argTypes:
    - struct bgp*
    - struct rfapi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4295
      start: 4252
    functionDepth: 10
    functionLinenumber: 4252
    functionLinenumberEnd: 4295
    functionName: bgp_rfapi_destroy
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - rfp_stop
    - rfapiImportTableFlush
    - agg_table_finish
    - skiplist_next
    - XFREE
    - skiplist_free
    - work_queue_free_and_null
    linkageType: ''
    returnType: void
    signature: void bgp_rfapi_destroy(struct bgp *bgp, struct rfapi *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4306,1
    - Dst: ecommunity_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4309,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4313,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4316,1
    - Dst: ecommunity_dup
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4321,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4324,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4337,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4338,1
    - Dst: rfapiBgpTableFilteredImport
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4340,1
    - Dst: rfapiBgpTableFilteredImport
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4342,1
    - Dst: vnc_import_bgp_exterior_redist_enable_it
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4344,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - bgp
    - rt_import_list
    - rfg
    argTypes:
    - struct bgp*
    - struct ecommunity*
    - struct rfapi_nve_group_cfg*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 4305
        line_start: 4305
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4351
      start: 4297
    functionDepth: 12
    functionLinenumber: 4297
    functionLinenumberEnd: 4351
    functionName: rfapiImportTableRefAdd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - vnc_zlog_debug_verbose
    - vnc_import_bgp_exterior_redist_enable_it
    - ecommunity_cmp
    - skiplist_new
    - rfapiBgpTableFilteredImport
    - ecommunity_dup
    - assert
    - agg_table_init
    linkageType: ''
    returnType: struct rfapi_import_table
    signature: "struct rfapi_import_table *\nrfapiImportTableRefAdd(struct bgp *bgp,
      struct ecommunity *rt_import_list,\n\t\t       struct rfapi_nve_group_cfg *rfg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - na
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4362
      start: 4356
    functionDepth: 0
    functionLinenumber: 4356
    functionLinenumberEnd: 4362
    functionName: delete_rem_pfx_na_free
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void delete_rem_pfx_na_free(void *na)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4381,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4387,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4398,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4406,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4409,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4409,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4412,1
    - Dst: VNC_DEBUG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4414,1
    - Dst: vnc_zlog_debug_any
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4415,1
    - Dst: prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4418,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4421,1
    - Dst: RFAPI_CHECK_REFCOUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4424,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4435,1
    - Dst: rfapiGetNexthop
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4438,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4443,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4445,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4453,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4458,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4460,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4478,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4483,1
    - Dst: RFAPI_UPDATE_ITABLE_COUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4491,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4494,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4496,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4505,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4519,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4520,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4520,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4522,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4522,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4525,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4532,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4540,1
    - Dst: rfapiNveAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4546,1
    - Dst: vnc_direct_bgp_rh_del_route
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4551,1
    - Dst: RFAPI_UPDATE_ITABLE_COUNT
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4554,1
    - Dst: rfapiExpireVpnNow
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4556,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4558,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 81
    argCount: 13
    argNames:
    - bgp
    - it
    - un
    - vn
    - p
    - delete_active
    - delete_holddown
    - pARcount
    - pAHcount
    - pHRcount
    - pHHcount
    - uniq_active_nves
    - uniq_holddown_nves
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct prefix*
    - struct prefix*
    - struct prefix*
    - int
    - int
    - uint32_t*
    - uint32_t*
    - uint32_t*
    - uint32_t*
    - struct skiplist*
    - struct skiplist*
    assertStmts:
    - condition: "(!rfapiQprefix2Raddr(&qct,\n\t\t\t\t\t\t\t\t   &na.un))"
      pos:
        line_end: 4520
        line_start: 4519
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: "(!rfapiQprefix2Raddr(&qpt,\n\t\t\t\t\t\t\t\t   &na.vn))"
      pos:
        line_end: 4522
        line_start: 4521
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4569
      start: 4367
    functionDepth: 13
    functionLinenumber: 4367
    functionLinenumberEnd: 4569
    functionName: rfapiDeleteRemotePrefixesIt
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - skiplist_search
    - vnc_direct_bgp_rh_del_route
    - rfapiQprefix2Raddr
    - rfapiGetUnAddrOfVpnBi
    - memset
    - vnc_zlog_debug_verbose
    - prefix_cmp
    - rfapiGetNexthop
    - prefix_match
    - XCALLOC
    - rfapiExpireVpnNow
    - EVENT_ARG
    - vnc_zlog_debug_any
    - rfapiNveAddr2Str
    - assert
    - EVENT_OFF
    - VNC_DEBUG
    - XFREE
    - family2afi
    - agg_node_get_prefix
    - agg_route_top
    - RFAPI_UPDATE_ITABLE_COUNT
    - CHECK_FLAG
    - RFAPI_CHECK_REFCOUNT
    - agg_route_next
    - skiplist_insert
    linkageType: ''
    returnType: void
    signature: "void rfapiDeleteRemotePrefixesIt(\n\tstruct bgp *bgp, struct rfapi_import_table
      *it, struct prefix *un,\n\tstruct prefix *vn, struct prefix *p, int delete_active,\n\tint
      delete_holddown, uint32_t *pARcount, uint32_t *pAHcount,\n\tuint32_t *pHRcount,
      uint32_t *pHHcount,\n\tstruct skiplist *uniq_active_nves, struct skiplist *uniq_holddown_nves)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4614,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4620,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4623,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4625,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4638,1
    - Dst: rfapiDeleteRemotePrefixesIt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4642,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4664,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4666,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4669,1
    - Dst: rfapiDeleteRemotePrefixesIt
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4673,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4686,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4687,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 10
    argNames:
    - un
    - vn
    - p
    - arg_it
    - delete_active
    - delete_holddown
    - pARcount
    - pAHcount
    - pHRcount
    - pHHcount
    argTypes:
    - struct prefix*
    - struct prefix*
    - struct prefix*
    - struct rfapi_import_table*
    - int
    - int
    - uint32_t*
    - uint32_t*
    - uint32_t*
    - uint32_t*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 4619
        line_start: 4619
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4699
      start: 4595
    functionDepth: 14
    functionLinenumber: 4595
    functionLinenumberEnd: 4699
    functionName: rfapiDeleteRemotePrefixes
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - rfapiDeleteRemotePrefixesIt
    - skiplist_new
    - skiplist_next
    - skiplist_free
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiDeleteRemotePrefixes(struct prefix *un, struct prefix *vn,\n\t\t\t
      \      struct prefix *p,\n\t\t\t       struct rfapi_import_table *arg_it,\n\t\t\t
      \      int delete_active, int delete_holddown,\n\t\t\t       uint32_t *pARcount,
      uint32_t *pAHcount,\n\t\t\t       uint32_t *pHRcount, uint32_t *pHHcount)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4732,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4733,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4736,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4759,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4761,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 4
    argNames:
    - pALRcount
    - pARRcount
    - pHRcount
    - pIRcount
    argTypes:
    - int*
    - int*
    - int*
    - int*
    assertStmts:
    - condition: (bgp)
      pos:
        line_end: 4732
        line_start: 4732
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    - condition: (h)
      pos:
        line_end: 4735
        line_start: 4735
        source_file: /src/frr/bgpd/rfapi/rfapi_import.c
    constantsTouched: []
    func_position:
      end: 4784
      start: 4717
    functionDepth: 10
    functionLinenumber: 4717
    functionLinenumberEnd: 4784
    functionName: rfapiCountAllItRoutes
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - skiplist_next
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiCountAllItRoutes(int *pALRcount, /* active local routes
      */\n\t\t\t   int *pARRcount, /* active remote routes */\n\t\t\t   int *pHRcount,
      \ /* holddown routes */\n\t\t\t   int *pIRcount)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_import.c:4805,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - lifetime
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4817
      start: 4800
    functionDepth: 10
    functionLinenumber: 4800
    functionLinenumberEnd: 4817
    functionName: rfapiGetHolddownFromLifetime
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_import.c
    functionUses: 1
    functionsReached:
    - bgp_get_default
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rfapiGetHolddownFromLifetime(uint32_t lifetime)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - afi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 134
    functionName: RFAPI_QUEUED_FLAG
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_QUEUED_FLAG(afi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rfd
    - ','
    - rfapi
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 236
    functionName: RFAPI_RIB_PREFIX_COUNT_INCR
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_RIB_PREFIX_COUNT_INCR(rfd, rfapi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - rfd
    - ','
    - rfapi
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: RFAPI_RIB_PREFIX_COUNT_DECR
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_RIB_PREFIX_COUNT_DECR(rfd, rfapi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: RFAPI_0_PREFIX
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_private.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_0_PREFIX(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ea
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 254
    functionName: RFAPI_0_ETHERADDR
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_private.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_0_ETHERADDR(ea)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 261
    functionName: RFAPI_HOST_PREFIX
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_HOST_PREFIX(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bit
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: VNC_DEBUG
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_debug.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_DEBUG(bit)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:117,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:130,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:139,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:140,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:148,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:149,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:156,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:160,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:161,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:169,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:177,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:183,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:187,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:194,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:198,1
    - Dst: mtype_stats_alloc
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:205,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:206,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - checkstats
    - offset
    argTypes:
    - int
    - unsigned int
    assertStmts:
    - condition: (ri_active)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (0)
      pos:
        line_end: 186
        line_start: 186
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (ri_pend_uniq == ri_pend_cost)
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (0)
      pos:
        line_end: 197
        line_start: 197
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (t_ri_active + t_ri_deleted + t_ri_pend + offset == alloc_count)
      pos:
        line_end: 205
        line_start: 205
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 207
      start: 110
    functionDepth: 10
    functionLinenumber: 110
    functionLinenumberEnd: 207
    functionName: rfapiRibCheckCounts
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - skiplist_count
    - agg_route_next
    - mtype_stats_alloc
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiRibCheckCounts(\n\tint checkstats,      /* validate rfd
      & global counts */\n\tunsigned int offset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: rfapi_info_new
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rfapi_info
    signature: struct rfapi_info *rfapi_info_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct rfapi_un_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 223
    functionName: rfapiFreeRfapiUnOptionChain
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapiFreeRfapiUnOptionChain(struct rfapi_un_option *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct rfapi_vn_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 234
    functionName: rfapiFreeRfapiVnOptionChain
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapiFreeRfapiVnOptionChain(struct rfapi_vn_option *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rfapiFreeBgpTeaOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:241,1
    - Dst: rfapiFreeRfapiUnOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:245,1
    - Dst: rfapiFreeRfapiVnOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:249,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:255,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:256,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:257,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:259,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - goner
    argTypes:
    - struct rfapi_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 261
    functionName: rfapi_info_free
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - rfapiFreeBgpTeaOptionChain
    - rfapiFreeRfapiVnOptionChain
    - EVENT_OFF
    - XFREE
    - EVENT_ARG
    - rfapiFreeRfapiUnOptionChain
    linkageType: ''
    returnType: void
    signature: void rfapi_info_free(struct rfapi_info *goner)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:280,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:282,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:291,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:291,1
    - Dst: rfapi_info_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:297,1
    - Dst: skiplist_empty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:300,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:301,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:304,1
    - Dst: RFAPI_RIB_PREFIX_COUNT_DECR
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:306,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:308,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:309,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:312,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (!skiplist_delete(tcb->sl, &tcb->ri->rk, NULL))
      pos:
        line_end: 290
        line_start: 290
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 315
      start: 278
    functionDepth: 10
    functionLinenumber: 278
    functionLinenumberEnd: 315
    functionName: rfapiRibExpireTimer
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - skiplist_empty
    - bgp_get_default
    - CHECK_FLAG
    - skiplist_delete
    - rfapi_info_free
    - agg_unlock_node
    - RFAPI_RIB_CHECK_COUNTS
    - RFAPI_RIB_PREFIX_COUNT_DECR
    - XFREE
    - EVENT_ARG
    - skiplist_free
    - assert
    linkageType: ''
    returnType: void
    signature: void rfapiRibExpireTimer(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:325,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:326,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:328,1
    - Dst: zlog_debug
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:332,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:341,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:344,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:347,1
    - Dst: event_add_timer
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - rfd
    - ri
    - rn
    - deleted
    argTypes:
    - struct rfapi_descriptor*
    - struct rfapi_info*
    - struct agg_node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 352
    functionName: rfapiRibStartTimer
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - vnc_zlog_debug_verbose
    - zlog_debug
    - EVENT_OFF
    - SET_FLAG
    - UNSET_FLAG
    - EVENT_ARG
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void rfapiRibStartTimer(struct rfapi_descriptor *rfd,\n\t\t\t       struct
      rfapi_info *ri,\n\t\t\t       struct agg_node *rn, /* route node attached to
      */\n\t\t\t       int deleted)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - prefix
    - rd
    - aux
    - rk
    argTypes:
    - struct prefix*
    - struct prefix_rd*
    - struct prefix*
    - struct rfapi_rib_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 367
    functionName: rfapi_rib_key_init
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void rfapi_rib_key_init(struct prefix *prefix, /* may be NULL */\n\t\t\t
      \      struct prefix_rd *rd,  /* may be NULL */\n\t\t\t       struct prefix
      *aux,    /* may be NULL */\n\t\t\t       struct rfapi_rib_key *rk)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:381,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:385,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 392
    functionName: rfapi_rib_key_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - vnc_prefix_cmp
    linkageType: ''
    returnType: int
    signature: int rfapi_rib_key_cmp(const void *k1, const void *k2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:419,1
    - Dst: bgp_tea_options_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:425,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct bgp_tea_options*
    - struct bgp_tea_options*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 427
    functionName: bgp_tea_options_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 1
    functionsReached:
    - bgp_tea_options_cmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int bgp_tea_options_cmp(struct bgp_tea_options *a,\n\t\t\t       struct
      bgp_tea_options *b)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_rib_key_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:436,1
    - Dst: vnc_prefix_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:439,1
    - Dst: bgp_tea_options_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:448,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct rfapi_info*
    - struct rfapi_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 429
    functionDepth: 2
    functionLinenumber: 429
    functionLinenumberEnd: 452
    functionName: rfapi_info_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - rfapi_rib_key_cmp
    - vnc_prefix_cmp
    - bgp_tea_options_cmp
    linkageType: ''
    returnType: int
    signature: int rfapi_info_cmp(struct rfapi_info *a, struct rfapi_info *b)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:462,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:464,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:472,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:473,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:480,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:484,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:492,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:498,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:503,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:504,1
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:509,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:519,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:521,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:522,1
    - Dst: rfapi_info_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:525,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:526,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:530,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:533,1
    - Dst: RFAPI_RIB_PREFIX_COUNT_DECR
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:534,1
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:542,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:549,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:553,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:558,1
    - Dst: work_queue_free_and_null
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:564,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 454
    functionDepth: 10
    functionLinenumber: 454
    functionLinenumberEnd: 565
    functionName: rfapiRibClear
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - list_delete
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - rfapi_info_free
    - skiplist_delete_first
    - agg_route_next
    - agg_unlock_node
    - RFAPI_RIB_PREFIX_COUNT_DECR
    - EVENT_OFF
    - XFREE
    - EVENT_ARG
    - skiplist_free
    - skiplist_first
    - work_queue_free_and_null
    linkageType: ''
    returnType: void
    signature: void rfapiRibClear(struct rfapi_descriptor *rfd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:575,1
    - Dst: rfapiRibClear
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:586,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:590,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:597,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:601,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:607,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 570
    functionDepth: 11
    functionLinenumber: 570
    functionLinenumberEnd: 610
    functionName: rfapiRibFree
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 1
    functionsReached:
    - rfapiRibClear
    - zlog_debug
    - agg_table_finish
    - RFAPI_RIB_CHECK_COUNTS
    linkageType: ''
    returnType: void
    signature: void rfapiRibFree(struct rfapi_descriptor *rfd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rfapiRfpCost
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:620,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:624,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:634,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:636,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:639,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:641,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:642,1
    - Dst: zlog_warn
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:645,1
    - Dst: rfapi_un_options_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:660,1
    - Dst: rfapi_encap_tlv_to_un_option
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:661,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:667,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:673,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:675,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:681,1
    - Dst: rfapiEcommunityGetLNI
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:684,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:684,1
    - Dst: rfapiEcommunityGetEthernetTag
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:686,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:687,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:694,1
    - Dst: rfapi_vn_options_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:696,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 3
    argNames:
    - bpi
    - ri
    - lifetime
    argTypes:
    - struct bgp_path_info*
    - struct rfapi_info*
    - uint32_t
    assertStmts:
    - condition: (hop->value)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (vo)
      pos:
        line_end: 674
        line_start: 674
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (hop)
      pos:
        line_end: 635
        line_start: 635
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 707
      start: 615
    functionDepth: 11
    functionLinenumber: 615
    functionLinenumberEnd: 707
    functionName: rfapiRibBi2Ri
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - assert
    - decode_label
    - XCALLOC
    - bgp_attr_get_ecommunity
    - rfapiRfpCost
    - rfapi_un_options_free
    - rfapiEcommunityGetEthernetTag
    - rfapi_vn_options_free
    - zlog_warn
    - rfapiEcommunityGetLNI
    - decode_rd_type
    - bgp_attr_get_vnc_subtlvs
    - rfapi_encap_tlv_to_un_option
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void rfapiRibBi2Ri(struct bgp_path_info *bpi, struct rfapi_info *ri,\n\t\t\t
      \ uint32_t lifetime)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:738,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:743,1
    - Dst: agg_get_table_info
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:745,1
    - Dst: agg_get_table
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:745,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:747,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:763,1
    - Dst: rfapiRibBi2Ri
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:772,1
    - Dst: rfapi_info_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:775,1
    - Dst: rfapiRibBi2Ri
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:778,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:781,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:783,1
    - Dst: RFAPI_RIB_PREFIX_COUNT_INCR
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:784,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:786,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:789,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:794,1
    - Dst: rfapiRibStartTimer
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:795,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:796,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:801,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:802,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:803,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:804,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 5
    argNames:
    - rfd_rib_node
    - pfx_vn
    - pfx_un
    - lifetime
    - bpi
    argTypes:
    - struct agg_node*
    - struct prefix*
    - struct prefix*
    - uint32_t
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 727
    functionDepth: 12
    functionLinenumber: 727
    functionLinenumberEnd: 807
    functionName: rfapiRibPreloadBi
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - skiplist_search
    - rfapiRibStartTimer
    - memset
    - agg_node_get_lock_count
    - rfapi_info_new
    - monotime
    - agg_unlock_node
    - RFAPI_RIB_CHECK_COUNTS
    - skiplist_new
    - agg_lock_node
    - rfapiRibBi2Ri
    - family2afi
    - RFAPI_RIB_PREFIX_COUNT_INCR
    - skiplist_insert
    - agg_node_get_prefix
    - agg_get_table_info
    - agg_get_table
    linkageType: ''
    returnType: int
    signature: "int rfapiRibPreloadBi(\n\tstruct agg_node *rfd_rib_node, /* NULL =
      don't preload or filter */\n\tstruct prefix *pfx_vn, struct prefix *pfx_un,
      uint32_t lifetime,\n\tstruct bgp_path_info *bpi)"
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:858,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:859,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:860,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:864,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:867,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:872,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:888,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:891,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:902,1
    - Dst: skiplist_empty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:904,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:905,1
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:907,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:908,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:909,1
    - Dst: rfapiFreeBgpTeaOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:912,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:918,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:919,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:920,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:923,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:928,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:931,1
    - Dst: skiplist_empty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:931,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:933,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:935,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:938,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:943,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:945,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:948,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:950,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:952,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:956,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:958,1
    - Dst: RFAPI_RIB_PREFIX_COUNT_DECR
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:961,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:964,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:969,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:989,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:991,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:996,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:997,1
    - Dst: rfapiFreeBgpTeaOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:998,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1003,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1004,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1005,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1011,1
    - Dst: rfapi_info_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1024,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1025,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1027,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1031,1
    - Dst: rfapi_info_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1037,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1042,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1054,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1055,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1058,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1058,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1062,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1064,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1069,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1077,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1078,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1082,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1083,1
    - Dst: rfapiFreeBgpTeaOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1091,1
    - Dst: rfapiOptionsDup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1093,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1094,1
    - Dst: rfapiFreeRfapiVnOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1096,1
    - Dst: rfapiVnOptionsDup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1098,1
    - Dst: rfapiFreeRfapiUnOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1100,1
    - Dst: rfapiUnOptionsDup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1102,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1104,1
    - Dst: rfapi_info_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1110,1
    - Dst: rfapiOptionsDup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1116,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1117,1
    - Dst: rfapiVnOptionsDup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1119,1
    - Dst: rfapiUnOptionsDup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1121,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1124,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1127,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1129,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1131,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1139,1
    - Dst: rfapiRibStartTimer
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1141,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1142,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1154,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1161,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1163,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1166,1
    - Dst: struct agg_node::struct agg_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1168,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1171,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1175,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1176,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1182,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1190,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1191,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1191,1
    - Dst: rfapiFreeBgpTeaOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1193,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1220,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1222,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1223,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1224,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1226,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1226,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1227,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1227,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1228,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1230,1
    - Dst: lifetime::lifetime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1231,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1235,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1243,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1246,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1249,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1250,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1253,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1258,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1259,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1263,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1264,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1265,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1268,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1271,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1282,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1283,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1283,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1303,1
    - Dst: vn_address::vn_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1303,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1305,1
    - Dst: un_address::un_address
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1305,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1307,1
    - Dst: prefix::prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1309,1
    - Dst: lifetime::lifetime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1310,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1312,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1318,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1322,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1324,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1332,1
    - Dst: EVENT_ARG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1337,1
    - Dst: EVENT_OFF
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1338,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1339,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1341,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1346,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1352,1
    - Dst: list_delete_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1357,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1360,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1364,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1366,1
    - Dst: rfapiRibStartTimer
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1368,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1369,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1371,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1373,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1382,1
    - Dst: rfapiRibStartTimer
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1384,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1385,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1387,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1391,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1397,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 187
    argCount: 6
    argNames:
    - bgp
    - rfd
    - afi
    - pn
    - head
    - tail
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - afi_t
    - struct agg_node*
    - struct rfapi_next_hop_entry**
    - struct rfapi_next_hop_entry**
    assertStmts:
    - condition: (lPendCost)
      pos:
        line_end: 1026
        line_start: 1026
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (!rc)
      pos:
        line_end: 1363
        line_start: 1363
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (pn)
      pos:
        line_end: 857
        line_start: 857
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: "(!skiplist_delete(slRibPt, &ri->rk,\n\t\t\t\t\t\t\tNULL))"
      pos:
        line_end: 1058
        line_start: 1057
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (skiplist_empty(slRibPt))
      pos:
        line_end: 930
        line_start: 930
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (!slPendPt)
      pos:
        line_end: 947
        line_start: 947
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 1398
      start: 833
    functionDepth: 3
    functionLinenumber: 833
    functionLinenumberEnd: 1398
    functionName: process_pending_node
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - prefix::prefix
    - list_delete
    - skiplist_search
    - rfapiOptionsDup
    - rfapiQprefix2Rprefix
    - listnode_add
    - rfapi_info_cmp
    - rfapiVnOptionsDup
    - RFAPI_RIB_CHECK_COUNTS
    - skiplist_delete_first
    - rfapiUnOptionsDup
    - rfapiQprefix2Raddr
    - lifetime::lifetime
    - vnc_zlog_debug_verbose
    - ALL_LIST_ELEMENTS_RO
    - skiplist_count
    - agg_unlock_node
    - RFAPI_RIB_PREFIX_COUNT_DECR
    - EVENT_ARG
    - if
    - agg_node_get_lock_count
    - assert
    - agg_node_get
    - XCALLOC::XCALLOC
    - skiplist_empty
    - rfapiRfapiIpAddr2Str
    - rfapiFreeRfapiVnOptionChain
    - struct agg_node::struct agg_node
    - monotime
    - list_delete_node
    - EVENT_OFF
    - skiplist_next
    - XFREE
    - skiplist_free
    - skiplist_first
    - listnode_delete
    - agg_node_get_prefix
    - rfapi_info_new
    - rfapiFreeRfapiUnOptionChain
    - rfapiFreeBgpTeaOptionChain
    - CHECK_FLAG
    - vn_address::vn_address
    - skiplist_delete
    - rfapi_info_free
    - skiplist_new
    - list_new
    - rfapiRibStartTimer
    - ALL_LIST_ELEMENTS
    - skiplist_insert
    - un_address::un_address
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void process_pending_node(struct bgp *bgp, struct rfapi_descriptor
      *rfd,\n\t\t\t\t afi_t afi,\n\t\t\t\t struct agg_node *pn, /* pending node */\n\t\t\t\t
      struct rfapi_next_hop_entry **head,\n\t\t\t\t struct rfapi_next_hop_entry **tail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1446,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1452,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1458,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1460,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1461,1
    - Dst: process_pending_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1462,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1469,1
    - Dst: rfapiPrintNhl
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1471,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1480,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - rfd
    - afi
    argTypes:
    - struct rfapi_descriptor*
    - afi_t
    assertStmts:
    - condition: (bgp->rfapi)
      pos:
        line_end: 1457
        line_start: 1457
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 1486
      start: 1444
    functionDepth: 10
    functionLinenumber: 1444
    functionLinenumberEnd: 1486
    functionName: rib_do_callback_onepass
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - agg_route_next
    - rfapiPrintNhl
    - process_pending_node
    - assert
    linkageType: ''
    returnType: void
    signature: void rib_do_callback_onepass(struct rfapi_descriptor *rfd, afi_t afi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1495,1
    - Dst: rfapi_check
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1501,1
    - Dst: rib_do_callback_onepass
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1504,1
    - Dst: RFAPI_QUEUED_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1506,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1508,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1513
      start: 1488
    functionDepth: 11
    functionLinenumber: 1488
    functionLinenumberEnd: 1513
    functionName: rfapiRibDoQueuedCallback
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - rib_do_callback_onepass
    - RFAPI_QUEUED_FLAG
    - RFAPI_RIB_CHECK_COUNTS
    - UNSET_FLAG
    - rfapi_check
    linkageType: ''
    returnType: wq_item_status
    signature: "wq_item_status rfapiRibDoQueuedCallback(struct work_queue *wq,\n\t\t\t\t\t
      \      void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1515
    functionDepth: 0
    functionLinenumber: 1515
    functionLinenumberEnd: 1518
    functionName: rfapiRibQueueItemDelete
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapiRibQueueItemDelete(struct work_queue *wq, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: work_queue_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1526,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts:
    - condition: (rfd->updated_responses_queue)
      pos:
        line_end: 1526
        line_start: 1526
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 1534
      start: 1520
    functionDepth: 1
    functionLinenumber: 1520
    functionLinenumberEnd: 1534
    functionName: updated_responses_queue_init
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - assert
    - work_queue_new
    linkageType: ''
    returnType: void
    signature: void updated_responses_queue_init(struct rfapi_descriptor *rfd)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1560,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1562,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1565,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1567,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1569,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1570,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1571,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1573,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1574,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1576,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1584,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1586,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1595,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1598,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1620,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1625,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1625,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1626,1
    - Dst: rfapi_info_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1630,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1640,1
    - Dst: rfapi_info_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1641,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1647,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1648,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1658,1
    - Dst: rfapi_info_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1664,1
    - Dst: rfapiRibBi2Ri
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1668,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1671,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1674,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1677,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1685,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1686,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1689,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1692,1
    - Dst: RFAPI_QUEUED_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1694,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1696,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1700,1
    - Dst: updated_responses_queue_init
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1703,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1705,1
    - Dst: work_queue_add
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1708,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1710,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 81
    argCount: 5
    argNames:
    - bgp
    - rfd
    - it
    - it_node
    - lifetime
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct rfapi_import_table*
    - struct agg_node*
    - uint32_t
    assertStmts:
    - condition: (!rfapiRaddr2Qprefix(&rfd->vn_addr, &pfx_vn))
      pos:
        line_end: 1624
        line_start: 1624
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (!pn->info)
      pos:
        line_end: 1684
        line_start: 1684
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (pn)
      pos:
        line_end: 1573
        line_start: 1573
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (!pn->aggregate)
      pos:
        line_end: 1685
        line_start: 1685
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 1711
      start: 1548
    functionDepth: 12
    functionLinenumber: 1548
    functionLinenumberEnd: 1711
    functionName: rfapiRibUpdatePendingNode
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 2
    functionsReached:
    - list_delete
    - listnode_add
    - RFAPI_RIB_CHECK_COUNTS
    - rfapiNexthop2Prefix
    - rfapiGetUnAddrOfVpnBi
    - vnc_zlog_debug_verbose
    - XCALLOC
    - RFAPI_QUEUED_FLAG
    - agg_unlock_node
    - rfapiRibBi2Ri
    - assert
    - agg_node_get
    - prefix_same
    - updated_responses_queue_init
    - skiplist_free
    - family2afi
    - agg_node_get_prefix
    - rfapi_info_new
    - rfapiRaddr2Qprefix
    - CHECK_FLAG
    - work_queue_add
    - rfapi_info_free
    - skiplist_new
    - SET_FLAG
    - list_new
    - skiplist_insert
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: "void rfapiRibUpdatePendingNode(\n\tstruct bgp *bgp, struct rfapi_descriptor
      *rfd,\n\tstruct rfapi_import_table *it, /* needed for L2 */\n\tstruct agg_node
      *it_node, uint32_t lifetime)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1721,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1722,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1723,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1724,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1725,1
    - Dst: rfapiRibUpdatePendingNodeSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1726,1
    - Dst: agg_node_left
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1727,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1731,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1732,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1733,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1734,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1735,1
    - Dst: rfapiRibUpdatePendingNodeSubtree
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1737,1
    - Dst: agg_node_right
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1738,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 6
    argNames:
    - bgp
    - rfd
    - it
    - it_node
    - omit_subtree
    - lifetime
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct rfapi_import_table*
    - struct agg_node*
    - struct agg_node*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1713
    functionDepth: 13
    functionLinenumber: 1713
    functionLinenumberEnd: 1741
    functionName: rfapiRibUpdatePendingNodeSubtree
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 2
    functionsReached:
    - rfapiRibUpdatePendingNodeSubtree
    - rfapiRibUpdatePendingNode
    - agg_node_left
    - agg_node_right
    linkageType: ''
    returnType: void
    signature: "void rfapiRibUpdatePendingNodeSubtree(\n\tstruct bgp *bgp, struct
      rfapi_descriptor *rfd,\n\tstruct rfapi_import_table *it, struct agg_node *it_node,\n\tstruct
      agg_node *omit_subtree, /* may be NULL */\n\tuint32_t lifetime)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1755,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1756,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1776,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1777,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1784,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1786,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1795,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1797,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1798,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1801,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - rfd
    - it_rn
    - pfx_target_original
    argTypes:
    - struct rfapi_descriptor*
    - struct agg_node*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1814
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1814
    functionName: rfapiRibFTDFilterRecentPrefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - prefix_match
    - vnc_zlog_debug_verbose
    - agg_unlock_node
    - family2afi
    - agg_node_get_lock_count
    - agg_node_get_prefix
    linkageType: ''
    returnType: int
    signature: "int rfapiRibFTDFilterRecentPrefix(\n\tstruct rfapi_descriptor *rfd,\n\tstruct
      agg_node *it_rn,\t\t    /* import table node */\n\tstruct prefix *pfx_target_original)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1833,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1836,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1857,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1886,1
    - Dst: rfapiL2o2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1892,1
    - Dst: rfapiRprefix2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1894,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1895,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1909,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1914,1
    - Dst: agg_lock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1915,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1922,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1923,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1923,1
    - Dst: rfapiRprefix2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1927,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1928,1
    - Dst: RFAPI_HOST_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1929,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1942,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1947,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1952,1
    - Dst: rfapiRibShowRibSl
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1954,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1954,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1959,1
    - Dst: rfapiFreeRfapiUnOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1964,1
    - Dst: rfapiFreeRfapiVnOptionChain
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1966,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1970,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1981,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1991,1
    - Dst: rfapi_info_new
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:1995,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2001,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2001,1
    - Dst: rfapiVnOptionsDup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2004,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2006,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2010,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2012,1
    - Dst: RFAPI_RIB_PREFIX_COUNT_INCR
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2016,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2019,1
    - Dst: rfapiRibStartTimer
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2020,1
    - Dst: RFAPI_RIB_CHECK_COUNTS
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2021,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2023,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2028,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2029,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2030,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2031,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2033,1
    - Dst: rfapi_un_options_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2046,1
    - Dst: rfapi_vn_options_free
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2048,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2051,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 107
    argCount: 4
    argNames:
    - bgp
    - rfd
    - response
    - use_eth_resolution
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct rfapi_next_hop_entry*
    - int
    assertStmts:
    - condition: (!rc)
      pos:
        line_end: 2011
        line_start: 2011
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (!rfapiRaddr2Qprefix(&nhp->un_address, &ri->un))
      pos:
        line_end: 2000
        line_start: 2000
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    - condition: (!rfapiRaddr2Qprefix(&nhp->vn_address, &rk.vn))
      pos:
        line_end: 1922
        line_start: 1922
        source_file: /src/frr/bgpd/rfapi/rfapi_rib.c
    constantsTouched: []
    func_position:
      end: 2058
      start: 1823
    functionDepth: 2
    functionLinenumber: 1823
    functionLinenumberEnd: 2058
    functionName: rfapiRibPreload
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - skiplist_search
    - rfapiVnOptionsDup
    - RFAPI_RIB_CHECK_COUNTS
    - rfapiL2o2Qprefix
    - rfapi_vn_options_free
    - RFAPI_RIB_PREFIX_COUNT_INCR
    - memset
    - vnc_zlog_debug_verbose
    - rfapi_un_options_free
    - agg_unlock_node
    - rfapiRprefix2Qprefix
    - skiplist_insert
    - agg_node_get_lock_count
    - assert
    - agg_node_get
    - rfapiFreeRfapiVnOptionChain
    - monotime
    - RFAPI_0_PREFIX
    - XFREE
    - family2afi
    - agg_node_get_prefix
    - rfapi_info_new
    - rfapiFreeRfapiUnOptionChain
    - rfapiRaddr2Qprefix
    - rfapiRibShowRibSl
    - skiplist_new
    - rfapiRibStartTimer
    - RFAPI_HOST_PREFIX
    - agg_lock_node
    linkageType: ''
    returnType: struct rfapi_next_hop_entry
    signature: "struct rfapi_next_hop_entry *\nrfapiRibPreload(struct bgp *bgp, struct
      rfapi_descriptor *rfd,\n\t\tstruct rfapi_next_hop_entry *response, int use_eth_resolution)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2065,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2067,1
    - Dst: RFAPI_MONITOR_ETH
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2084,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2086,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2091,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2092,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2096,1
    - Dst: agg_node_lookup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2105,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2107,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2110,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2120,1
    - Dst: agg_node_lookup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2128,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2129,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2132,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2140,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2145,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2149,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2152,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2160,1
    - Dst: agg_node_lookup
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2160,1
    - Dst: rfapiRibUpdatePendingNode
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2161,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2164,1
    - Dst: rfapiRibShowResponsesSummary
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2170,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2176,1
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2183,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2186,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2190,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2191,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2192,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2194,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2196,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2197,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2199,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2201,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2204,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2206,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2207,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2212,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2213,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2214,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2219,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2235,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2236,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2246,1
    - Dst: index
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2247,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2251,1
    - Dst: index
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2252,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2256,1
    - Dst: rfapiFormatAge
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2258,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2261,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2265,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2270,1
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2296,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2299,1
    - Dst: print_rib_sl
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2302,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2317,1
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2325,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2328,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2335,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2347,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2348,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2350,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2364,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2366,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2367,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2373,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2375,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2377,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2395,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2396,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2398,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2402,1
    - Dst: print_rib_sl
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2406,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2414,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2415,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2420,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2422,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 119
    argCount: 4
    argNames:
    - bgp
    - it
    - afi
    - it_node
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - afi_t
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2424
      start: 2060
    functionDepth: 13
    functionLinenumber: 2060
    functionLinenumberEnd: 2424
    functionName: rfapiRibPendingDeleteRoute
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 1
    functionsReached:
    - rfapiFormatSeconds
    - prefix2str
    - RFAPI_MONITOR_ETH
    - agg_node_lookup
    - rfapiStream2Vty
    - vnc_zlog_debug_verbose
    - prefix_match
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - index
    - agg_unlock_node
    - skiplist_count
    - fp
    - if
    - print_rib_sl
    - rfapiRibUpdatePendingNode
    - rfapiRfapiIpAddr2Str
    - rfapiFormatAge
    - monotime
    - skiplist_next
    - agg_node_get_prefix
    - agg_route_top
    - rfapiRibShowResponsesSummary
    - agg_route_next
    linkageType: ''
    returnType: void
    signature: "void rfapiRibPendingDeleteRoute(struct bgp *bgp, struct rfapi_import_table
      *it,\n\t\t\t\tafi_t afi, struct agg_node *it_node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2223
      start: 2217
    functionDepth: 10
    functionLinenumber: 2217
    functionLinenumberEnd: 2223
    functionName: rfapiRibShowResponsesSummaryClear
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    linkageType: ''
    returnType: void
    signature: void rfapiRibShowResponsesSummaryClear(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2235,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2236,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2246,1
    - Dst: index
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2247,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2251,1
    - Dst: index
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2252,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2256,1
    - Dst: rfapiFormatAge
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2258,1
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2261,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2265,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2270,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 6
    argNames:
    - vty
    - out
    - sl
    - deleted
    - str_pfx
    - printedprefix
    argTypes:
    - struct vty*
    - void*
    - struct skiplist*
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2278
      start: 2225
    functionDepth: 1
    functionLinenumber: 2225
    functionLinenumberEnd: 2278
    functionName: print_rib_sl
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 1
    functionsReached:
    - rfapiFormatSeconds
    - prefix2str
    - index
    - rfapiFormatAge
    - monotime
    - fp
    - skiplist_next
    linkageType: ''
    returnType: int
    signature: "int print_rib_sl(int (*fp)(void *, const char *, ...), struct vty
      *vty,\n\t\t\tvoid *out, struct skiplist *sl, int deleted,\n\t\t\tchar *str_pfx,
      int *printedprefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2296,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2299,1
    - Dst: print_rib_sl
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - pfx
    - sl
    argTypes:
    - void*
    - struct prefix*
    - struct skiplist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2303
      start: 2284
    functionDepth: 2
    functionLinenumber: 2284
    functionLinenumberEnd: 2303
    functionName: rfapiRibShowRibSl
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - print_rib_sl
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void rfapiRibShowRibSl(void *stream, struct prefix *pfx,\n\t\t\t      struct
      skiplist *sl)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2317,1
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2325,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2328,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2335,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2347,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2348,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2350,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2364,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2366,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2367,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2373,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2375,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2377,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2395,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2396,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2398,1
    - Dst: prefix2str
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2402,1
    - Dst: print_rib_sl
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2406,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2414,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2415,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2420,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_rib.c:2422,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - stream
    - pfx_match
    - show_removed
    argTypes:
    - void*
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2424
      start: 2306
    functionDepth: 10
    functionLinenumber: 2306
    functionLinenumberEnd: 2424
    functionName: rfapiRibShowResponses
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - prefix2str
    - prefix_match
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - rfapiRfapiIpAddr2Str
    - agg_route_next
    - skiplist_count
    - fp
    - print_rib_sl
    - agg_node_get_prefix
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void rfapiRibShowResponses(void *stream, struct prefix *pfx_match,\n\t\t\t
      \  int show_removed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - checkstats
    - ','
    - offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    functionName: RFAPI_RIB_CHECK_COUNTS
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_rib.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_RIB_CHECK_COUNTS(checkstats, offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: RFAPI_IT_EXTRA_GET
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_IT_EXTRA_GET(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: RFAPI_RDINDEX
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_RDINDEX(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: RFAPI_RDINDEX_W_ALLOC
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_RDINDEX_W_ALLOC(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: RFAPI_MONITOR_ETH
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_MONITOR_ETH(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: RFAPI_MONITOR_ETH_W_ALLOC
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_MONITOR_ETH_W_ALLOC(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: RFAPI_MONITOR_VPN
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_MONITOR_VPN(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: RFAPI_MONITOR_VPN_W_ALLOC
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_MONITOR_VPN_W_ALLOC(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: RFAPI_MONITOR_ENCAP
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_MONITOR_ENCAP(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: RFAPI_MONITOR_ENCAP_W_ALLOC
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_MONITOR_ENCAP_W_ALLOC(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: RFAPI_MONITOR_EXTERIOR
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_MONITOR_EXTERIOR(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: RFAPI_HAS_MONITOR_EXTERIOR
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_monitor.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RFAPI_HAS_MONITOR_EXTERIOR(rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: VNC_EXPORT_ZEBRA_GRP_ENABLED
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_EXPORT_ZEBRA_GRP_ENABLED(hc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: VNC_EXPORT_ZEBRA_RH_ENABLED
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_EXPORT_ZEBRA_RH_ENABLED(hc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: VNC_EXPORT_BGP_GRP_ENABLED
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_EXPORT_BGP_GRP_ENABLED(hc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 251
    functionName: VNC_EXPORT_BGP_RH_ENABLED
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_EXPORT_BGP_RH_ENABLED(hc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: VNC_EXPORT_BGP_CE_ENABLED
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_EXPORT_BGP_CE_ENABLED(hc)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:52,1
    - Dst: rfp_cost_to_localpref
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:57,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:63,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:68,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:70,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:76,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:82,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:97,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:110,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:121,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:140,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:146,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:154,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:161,1
    - Dst: peer_new
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:173,1
    - Dst: frr_with_mutex
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:182,1
    - Dst: stream_fifo_free
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:185,1
    - Dst: stream_fifo_free
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:187,1
    - Dst: ringbuf_del
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:190,1
    - Dst: XSTRDUP
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:199,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:202,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:206,1
    - Dst: add_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:211,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 82
    argCount: 3
    argNames:
    - p
    - metric
    - type
    argTypes:
    - struct prefix*
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 49
    functionDepth: 11
    functionLinenumber: 49
    functionLinenumberEnd: 220
    functionName: vnc_redistribute_add
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - ringbuf_del
    - frr_with_mutex
    - stream_fifo_free
    - vnc_zlog_debug_verbose
    - memset
    - bgp_get_default
    - add_vnc_route
    - rfapiQprefix2Rprefix
    - rfp_cost_to_localpref
    - SET_FLAG
    - peer_new
    - family2afi
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void vnc_redistribute_add(struct prefix *p, uint32_t metric,\n\t\t\t\t
      uint8_t type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:227,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:235,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:239,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:241,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:246,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:252,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:257,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:262,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - p
    - type
    argTypes:
    - struct prefix*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 225
    functionDepth: 10
    functionLinenumber: 225
    functionLinenumberEnd: 265
    functionName: vnc_redistribute_delete
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - family2afi
    - del_vnc_route
    linkageType: ''
    returnType: void
    signature: void vnc_redistribute_delete(struct prefix *p, uint8_t type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:277,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:282,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:290,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:291,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:292,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:294,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:297,1
    - Dst: bgp_dest_get_bgp_table_info
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:300,1
    - Dst: bgp_table_top
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:304,1
    - Dst: bgp_route_next
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:305,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:309,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:317,1
    - Dst: bgp_dest_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:320,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:325,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - bgp
    - afi
    - type
    argTypes:
    - struct bgp*
    - afi_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 326
    functionName: vnc_redistribute_withdraw
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - bgp_route_next
    - memset
    - vnc_zlog_debug_verbose
    - bgp_table_top
    - bgp_dest_get_prefix
    - bgp_dest_get_bgp_table_info
    - bgp_dest_get_bgp_path_info
    - del_vnc_route
    - memcpy
    linkageType: ''
    returnType: void
    signature: void vnc_redistribute_withdraw(struct bgp *bgp, afi_t afi, uint8_t
      type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_decode
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:338,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:342,1
    - Dst: vnc_redistribute_add
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:347,1
    - Dst: vnc_redistribute_delete
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:349,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:351,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:352,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:354,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 333
    functionDepth: 12
    functionLinenumber: 333
    functionLinenumberEnd: 358
    functionName: vnc_zebra_read_route
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - vnc_redistribute_delete
    - vnc_zlog_debug_verbose
    - CHECK_FLAG
    - zapi_route_decode
    - vnc_redistribute_add
    - BGP_DEBUG
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: int vnc_zebra_read_route(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:377,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:382,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:389,1
    - Dst: MIN
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:390,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:397,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:402,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:409,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:410,1
    - Dst: zclient_route_send
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - p
    - nhp_count
    - nhp_ary
    - add
    argTypes:
    - struct prefix*
    - unsigned int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 416
    functionName: vnc_zebra_route_msg
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - MIN
    - memset
    - vnc_zlog_debug_verbose
    - SET_FLAG
    - zclient_route_send
    - BGP_DEBUG
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void vnc_zebra_route_msg(const struct prefix *p, unsigned int nhp_count,\n\t\t\t\tvoid
      *nhp_ary, int add)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:425,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:432,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:446,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:451,1
    - Dst: listhead
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:456,1
    - Dst: listnextnode
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:456,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:461,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:463,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:468,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:482,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:484,1
    - Dst: listhead
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:487,1
    - Dst: listnextnode
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:487,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:494,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:496,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 5
    argNames:
    - family
    - nve_list
    - nh_count_ret
    - nh_ary_ret
    - nhp_ary_ret
    argTypes:
    - uint8_t
    - struct list*
    - unsigned int*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 507
    functionName: nve_list_to_nh_array
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - rfapiRaddr2Qprefix
    - XCALLOC
    - vnc_zlog_debug_verbose
    - listcount
    - listhead
    - listgetdata
    linkageType: ''
    returnType: void
    signature: "void nve_list_to_nh_array(uint8_t family, struct list *nve_list,\n\t\t
      \    unsigned int *nh_count_ret,\n\t\t     void **nh_ary_ret,  /* returned address
      array */\n\t\t     void **nhp_ary_ret)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:523,1
    - Dst: nve_group_to_nve_list
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - bgp
    - it
    - nves
    - family
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct list**
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 535
    functionName: import_table_to_nve_list_zebra
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - nve_group_to_nve_list
    linkageType: ''
    returnType: void
    signature: "void import_table_to_nve_list_zebra(struct bgp *bgp,\n\t\t\t\t\t   struct
      rfapi_import_table *it,\n\t\t\t\t\t   struct list **nves, uint8_t family)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:543,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:548,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:554,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:559,1
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:560,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:565,1
    - Dst: listcount
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:569,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:570,1
    - Dst: import_table_to_nve_list_zebra
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:575,1
    - Dst: nve_list_to_nh_array
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:578,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:581,1
    - Dst: vnc_zebra_route_msg
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:584,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:587,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:588,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - bgp
    - import_table
    - rn
    - add
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct agg_node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 589
    functionName: vnc_zebra_add_del_prefix
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - list_delete
    - vnc_zebra_route_msg
    - vnc_zlog_debug_verbose
    - listcount
    - nve_list_to_nh_array
    - import_table_to_nve_list_zebra
    - flog_err
    - XFREE
    - family2afi
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_zebra_add_del_prefix(struct bgp *bgp,\n\t\t\t\t     struct
      rfapi_import_table *import_table,\n\t\t\t\t     struct agg_node *rn,\n\t\t\t\t
      \    int add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zebra_add_del_prefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - bgp
    - import_table
    - rn
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 591
    functionDepth: 3
    functionLinenumber: 591
    functionLinenumberEnd: 596
    functionName: vnc_zebra_add_prefix
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 1
    functionsReached:
    - vnc_zebra_add_del_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_zebra_add_prefix(struct bgp *bgp,\n\t\t\t  struct rfapi_import_table
      *import_table,\n\t\t\t  struct agg_node *rn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zebra_add_del_prefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - bgp
    - import_table
    - rn
    argTypes:
    - struct bgp*
    - struct rfapi_import_table*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 598
    functionDepth: 3
    functionLinenumber: 598
    functionLinenumberEnd: 603
    functionName: vnc_zebra_del_prefix
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 1
    functionsReached:
    - vnc_zebra_add_del_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_zebra_del_prefix(struct bgp *bgp,\n\t\t\t  struct rfapi_import_table
      *import_table,\n\t\t\t  struct agg_node *rn)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:612,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:616,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:621,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:626,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:634,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:639,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:640,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:652,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:665,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:674,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:675,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:679,1
    - Dst: vnc_zebra_route_msg
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:682,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:682,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 3
    argNames:
    - bgp
    - rfd
    - add
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 687
    functionName: vnc_zebra_add_del_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - rfapiRaddr2Qprefix
    - agg_route_top
    - vnc_zebra_route_msg
    - vnc_zlog_debug_verbose
    - ALL_LIST_ELEMENTS_RO
    - agg_route_next
    - flog_err
    - family2afi
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_zebra_add_del_nve(struct bgp *bgp, struct rfapi_descriptor
      *rfd,\n\t\t\t\t  int add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zebra_add_del_nve
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 692
    functionName: vnc_zebra_add_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 1
    functionsReached:
    - vnc_zebra_add_del_nve
    linkageType: ''
    returnType: void
    signature: void vnc_zebra_add_nve(struct bgp *bgp, struct rfapi_descriptor *rfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zebra_add_del_nve
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bgp
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 694
    functionDepth: 3
    functionLinenumber: 694
    functionLinenumberEnd: 697
    functionName: vnc_zebra_del_nve
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 1
    functionsReached:
    - vnc_zebra_add_del_nve
    linkageType: ''
    returnType: void
    signature: void vnc_zebra_del_nve(struct bgp *bgp, struct rfapi_descriptor *rfd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: afi2family
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:706,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:713,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:716,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:724,1
    - Dst: flog_err
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:729,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:736,1
    - Dst: nve_group_to_nve_list
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:740,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:742,1
    - Dst: nve_list_to_nh_array
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:743,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:746,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:749,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:755,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:756,1
    - Dst: vnc_zebra_route_msg
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:758,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:759,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:764,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:765,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 4
    argNames:
    - bgp
    - rfg
    - afi
    - add
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    - afi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 699
    functionDepth: 2
    functionLinenumber: 699
    functionLinenumberEnd: 767
    functionName: vnc_zebra_add_del_group_afi
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - list_delete
    - vnc_zebra_route_msg
    - nve_group_to_nve_list
    - vnc_zlog_debug_verbose
    - nve_list_to_nh_array
    - afi2family
    - agg_route_next
    - flog_err
    - XFREE
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void vnc_zebra_add_del_group_afi(struct bgp *bgp,\n\t\t\t\t\tstruct
      rfapi_nve_group_cfg *rfg,\n\t\t\t\t\tafi_t afi, int add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zebra_add_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:771,1
    - Dst: vnc_zebra_add_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bgp
    - rfg
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 769
    functionDepth: 3
    functionLinenumber: 769
    functionLinenumberEnd: 773
    functionName: vnc_zebra_add_group
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - vnc_zebra_add_del_group_afi
    linkageType: ''
    returnType: void
    signature: void vnc_zebra_add_group(struct bgp *bgp, struct rfapi_nve_group_cfg
      *rfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:777,1
    - Dst: vnc_zebra_add_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:778,1
    - Dst: vnc_zebra_add_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bgp
    - rfg
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 775
    functionDepth: 3
    functionLinenumber: 775
    functionLinenumberEnd: 780
    functionName: vnc_zebra_del_group
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - vnc_zebra_add_del_group_afi
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void vnc_zebra_del_group(struct bgp *bgp, struct rfapi_nve_group_cfg
      *rfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:788,1
    - Dst: vnc_zebra_add_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:792,1
    - Dst: vnc_zebra_add_del_group_afi
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:793,1
    - Dst: vnc_redistribute_set
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:806,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:818,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:829,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:830,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:831,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:834,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - bgp
    - rfg
    - afi
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 782
    functionDepth: 3
    functionLinenumber: 782
    functionLinenumberEnd: 838
    functionName: vnc_zebra_reexport_group_afi
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - vnc_zlog_debug_verbose
    - zebra_redistribute_send
    - ALL_LIST_ELEMENTS_RO
    - vnc_redistribute_set
    - vnc_zebra_add_del_group_afi
    - BGP_DEBUG
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void vnc_zebra_reexport_group_afi(struct bgp *bgp,\n\t\t\t\t  struct
      rfapi_nve_group_cfg *rfg, afi_t afi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:843,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:846,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:854,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:856,1
    - Dst: BGP_DEBUG
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:862,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:863,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:865,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:866,1
    - Dst: vnc_redistribute_withdraw
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:871,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:873,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - bgp
    - afi
    - type
    argTypes:
    - struct bgp*
    - afi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 841
    functionDepth: 4
    functionLinenumber: 841
    functionLinenumberEnd: 876
    functionName: vnc_redistribute_unset
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 0
    functionsReached:
    - vnc_redistribute_withdraw
    - vrf_bitmap_check
    - vnc_zlog_debug_verbose
    - zebra_redistribute_send
    - vrf_bitmap_unset
    - BGP_DEBUG
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: int vnc_redistribute_unset(struct bgp *bgp, afi_t afi, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:892,1
    - Dst: array_size
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:893,1
    - Dst: zclient_init
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 889
    functionDepth: 1
    functionLinenumber: 889
    functionLinenumberEnd: 895
    functionName: vnc_zebra_init
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 3
    functionsReached:
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void vnc_zebra_init(struct event_loop *master)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:901,1
    - Dst: zclient_free
      Src: /src/frr/bgpd/rfapi/vnc_zebra.c:902,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 904
    functionName: vnc_zebra_destroy
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_zebra.c
    functionUses: 2
    functionsReached:
    - zclient_free
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void vnc_zebra_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfapiNveAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:41,1
    - Dst: rfapiNveAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:42,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tag
    - a
    - b
    argTypes:
    - char*
    - struct rfapi_nve_addr*
    - struct rfapi_nve_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: logdifferent
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_nve_addr.c
    functionUses: 0
    functionsReached:
    - rfapiNveAddr2Str
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: "void logdifferent(const char *tag, struct rfapi_nve_addr *a,\n\t\t\t
      struct rfapi_nve_addr *b)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:56,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:63,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:70,1
    - Dst: logdifferent
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:73,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:78,1
    - Dst: logdifferent
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:81,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:86,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:90,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:97,1
    - Dst: logdifferent
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:100,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:105,1
    - Dst: logdifferent
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:108,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:113,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 85
        line_start: 85
        source_file: /src/frr/bgpd/rfapi/rfapi_nve_addr.c
    - condition: (0)
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/frr/bgpd/rfapi/rfapi_nve_addr.c
    constantsTouched: []
    func_position:
      end: 116
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 116
    functionName: rfapi_nve_addr_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_nve_addr.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_CMP
    - vnc_zlog_debug_verbose
    - logdifferent
    - IPV4_ADDR_CMP
    - assert
    linkageType: ''
    returnType: int
    signature: int rfapi_nve_addr_cmp(const void *k1, const void *k2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:129,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:132,1
    - Dst: strlen
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:136,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:138,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_nve_addr.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - na
    - buf
    - bufsize
    argTypes:
    - struct rfapi_nve_addr*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 145
    functionName: rfapiNveAddr2Str
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_nve_addr.c
    functionUses: 2
    functionsReached:
    - rfapiRfapiIpAddr2Str
    - strlen
    - snprintf
    linkageType: ''
    returnType: void
    signature: void rfapiNveAddr2Str(struct rfapi_nve_addr *na, char *buf, int bufsize)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:85,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:87,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:89,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - seconds
    - buf
    - len
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 93
    functionName: rfapiFormatSeconds
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *rfapiFormatSeconds(uint32_t seconds, char *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:99,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - age
    - buf
    - len
    argTypes:
    - time_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: rfapiFormatAge
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 2
    functionsReached:
    - rfapiFormatSeconds
    - monotime
    linkageType: ''
    returnType: char
    signature: char *rfapiFormatAge(time_t age, char *buf, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:145,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - rprefix
    argTypes:
    - struct rfapi_ip_prefix*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 147
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 147
    functionName: rfapiRprefixApplyMask
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void rfapiRprefixApplyMask(struct rfapi_ip_prefix *rprefix)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - qprefix
    - raddr
    argTypes:
    - struct prefix*
    - struct rfapi_ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 177
    functionName: rfapiQprefix2Raddr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 8
    functionsReached:
    - memset
    linkageType: ''
    returnType: int
    signature: int rfapiQprefix2Raddr(struct prefix *qprefix, struct rfapi_ip_addr
      *raddr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:186,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - qprefix
    - rprefix
    argTypes:
    - struct prefix*
    - struct rfapi_ip_prefix*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 196
        line_start: 196
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 199
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 199
    functionName: rfapiQprefix2Rprefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 6
    functionsReached:
    - assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void rfapiQprefix2Rprefix(const struct prefix *qprefix,\n\t\t\t  struct
      rfapi_ip_prefix *rprefix)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - rprefix
    - qprefix
    argTypes:
    - struct rfapi_ip_prefix*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 219
    functionName: rfapiRprefix2Qprefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: int
    signature: "int rfapiRprefix2Qprefix(struct rfapi_ip_prefix *rprefix,\n\t\t\t
      struct prefix *qprefix)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:235,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:238,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - hp1
    - hp2
    argTypes:
    - struct rfapi_ip_prefix*
    - struct rfapi_ip_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 241
    functionName: rfapiRprefixSame
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: int
    signature: int rfapiRprefixSame(struct rfapi_ip_prefix *hp1, struct rfapi_ip_prefix
      *hp2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - hia
    - pfx
    argTypes:
    - struct rfapi_ip_addr*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 261
    functionName: rfapiRaddr2Qprefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 17
    functionsReached:
    - memset
    linkageType: ''
    returnType: int
    signature: int rfapiRaddr2Qprefix(struct rfapi_ip_addr *hia, struct prefix *pfx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - l2o
    - pfx
    argTypes:
    - struct rfapi_l2address_option*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: rfapiL2o2Qprefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 3
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void rfapiL2o2Qprefix(struct rfapi_l2address_option *l2o, struct prefix
      *pfx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_mac2str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ea
    - buf
    - bufsize
    argTypes:
    - struct ethaddr*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: rfapiEthAddr2Str
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - prefix_mac2str
    linkageType: ''
    returnType: char
    signature: char *rfapiEthAddr2Str(const struct ethaddr *ea, char *buf, int bufsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - ea
    argTypes:
    - char*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 292
    functionName: rfapiStr2EthAddr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: int
    signature: int rfapiStr2EthAddr(const char *str, struct ethaddr *ea)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiEthAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:297,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - af
    - src
    - buf
    - size
    argTypes:
    - int
    - void*
    - char*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 301
    functionName: rfapi_ntop
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 3
    functionsReached:
    - rfapiEthAddr2Str
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: char *rfapi_ntop(int af, const void *src, char *buf, socklen_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:306,1
    - Dst: vzlog
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:307,1
    - Dst: va_end
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dummy
    - format
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 310
    functionName: rfapiDebugPrintf
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vzlog
    linkageType: ''
    returnType: int
    signature: int rfapiDebugPrintf(void *dummy, const char *format, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:318,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:328,1
    - Dst: vfprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:331,1
    - Dst: va_end
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - stream
    - format
    argTypes:
    - void*
    - char*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 327
        line_start: 327
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 334
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 334
    functionName: rfapiStdioPrintf
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vfprintf
    - assert
    linkageType: ''
    returnType: int
    signature: int rfapiStdioPrintf(void *stream, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 346
    functionName: str_vty_newline
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *str_vty_newline(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str_vty_newline
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:360,1
    - Dst: str_vty_newline
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:371,1
    - Dst: str_vty_newline
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - stream
    - vty
    - outstream
    - vty_newline
    argTypes:
    - void*
    - struct vty**
    - void**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 380
    functionName: rfapiStream2Vty
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 4
    functionsReached:
    - str_vty_newline
    linkageType: ''
    returnType: int
    signature: "int rfapiStream2Vty(void *stream,\t\t\t   /* input */\n\t\t    int
      (**fp)(void *, const char *, ...), /* output */\n\t\t    struct vty **vty,\t\t\t
      \  /* output */\n\t\t    void **outstream,\t\t\t   /* output */\n\t\t    const
      char **vty_newline)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:395,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:400,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:403,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:404,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:409,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:410,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:410,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:412,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:413,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:418,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:420,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:421,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:424,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:427,1
    - Dst: rfapiGetVncLifetime
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:436,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:437,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:440,1
    - Dst: zebra_route_string
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:440,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:443,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - vty
    - p
    - bpi
    - safi
    argTypes:
    - struct vty*
    - struct prefix*
    - struct bgp_path_info*
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 383
    functionDepth: 4
    functionLinenumber: 383
    functionLinenumberEnd: 444
    functionName: rfapi_vty_out_vncinfo
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 2
    functionsReached:
    - rfapiGetVncTunnelUnAddr
    - vty_out
    - decode_label
    - ecommunity_ecom2str
    - bgp_attr_get_ecommunity
    - rfapiGetVncLifetime
    - inet_ntop
    - XFREE
    - zebra_route_string
    linkageType: ''
    returnType: void
    signature: "void rfapi_vty_out_vncinfo(struct vty *vty, const struct prefix *p,\n\t\t\t
      \  struct bgp_path_info *bpi, safi_t safi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:457,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:460,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:465,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:467,1
    - Dst: bgp_attr_get_community
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:470,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:471,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:474,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:475,1
    - Dst: bgp_attr_get_cluster
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:478,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:479,1
    - Dst: bgp_attr_get_transit
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:482,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - stream
    - attr
    argTypes:
    - void*
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 485
    functionName: rfapiPrintAttrPtrs
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - rfapiStream2Vty
    - bgp_attr_get_transit
    - bgp_attr_get_ecommunity
    - bgp_attr_get_cluster
    - fp
    - bgp_attr_get_community
    linkageType: ''
    returnType: void
    signature: void rfapiPrintAttrPtrs(void *stream, struct attr *attr)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:511,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:517,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:521,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:522,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:526,1
    - Dst: decode_rd_type
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:532,1
    - Dst: memcpy
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:535,1
    - Dst: BGP_MP_NEXTHOP_FAMILY
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:553,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:557,1
    - Dst: snprintfrr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:561,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:565,1
    - Dst: rfapiGetVncTunnelUnAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:572,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:573,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:574,1
    - Dst: rfapiGetVncLifetime
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:580,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:581,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:585,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:587,1
    - Dst: bgp_attr_get_vnc_subtlvs
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:592,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:597,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:600,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:604,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:611,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:612,1
    - Dst: bgp_attr_get_ecommunity
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:612,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:614,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:616,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:619,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:622,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:625,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:626,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:629,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:634,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:638,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:639,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:642,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:646,1
    - Dst: zebra_route_char
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:646,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:650,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:653,1
    - Dst: rfapiGetL2o
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:659,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:660,1
    - Dst: rfapi_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:671,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:676,1
    - Dst: rfapi_encap_tlv_to_un_option
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:681,1
    - Dst: rfapi_print_tunneltype_option
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:683,1
    - Dst: rfapi_un_options_free
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:684,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 106
    argCount: 2
    argNames:
    - stream
    - bpi
    argTypes:
    - void*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 490
    functionDepth: 4
    functionLinenumber: 490
    functionLinenumberEnd: 687
    functionName: rfapiPrintBi
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 2
    functionsReached:
    - rfapi_encap_tlv_to_un_option
    - rfapiStream2Vty
    - rfapi_ntop
    - snprintf
    - BGP_MP_NEXTHOP_FAMILY
    - zebra_route_char
    - rfapi_un_options_free
    - rfapiGetVncLifetime
    - inet_ntop
    - fp
    - decode_rd_type
    - rfapi_print_tunneltype_option
    - rfapiGetVncTunnelUnAddr
    - ecommunity_ecom2str
    - bgp_attr_get_ecommunity
    - event_timer_remain_second
    - XFREE
    - bgp_attr_get_vnc_subtlvs
    - memcpy
    - CHECK_FLAG
    - snprintfrr
    - ATTR_FLAG_BIT
    - rfapiGetL2o
    linkageType: ''
    returnType: void
    signature: void rfapiPrintBi(void *stream, struct bgp_path_info *bpi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:696,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:697,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:699,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - m
    - buf
    - size
    argTypes:
    - struct rfapi_monitor_vpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 709
    functionName: rfapiMonitorVpn2Str
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapiRfapiIpAddr2Str
    - inet_ntop
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *rfapiMonitorVpn2Str(struct rfapi_monitor_vpn *m, char *buf, int
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:720,1
    - Dst: rfapiMonitorVpn2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:723,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - m
    argTypes:
    - void*
    - struct rfapi_monitor_vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 711
    functionDepth: 2
    functionLinenumber: 711
    functionLinenumberEnd: 725
    functionName: rfapiDebugPrintMonitorVpn
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiMonitorVpn2Str
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: void rfapiDebugPrintMonitorVpn(void *stream, struct rfapi_monitor_vpn
      *m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:735,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - stream
    - m
    argTypes:
    - void*
    - struct rfapi_monitor_encap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 740
    functionName: rfapiDebugPrintMonitorEncap
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void rfapiDebugPrintMonitorEncap(void *stream,\n\t\t\t\t\tstruct rfapi_monitor_encap
      *m)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:751,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:754,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:754,1
    - Dst: rfapiPrintBi
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:757,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - rn
    argTypes:
    - void*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 742
    functionDepth: 5
    functionLinenumber: 742
    functionLinenumberEnd: 761
    functionName: rfapiShowItNode
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - fp
    - agg_node_get_lock_count
    - rfapiPrintBi
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: void rfapiShowItNode(void *stream, struct agg_node *rn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:774,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:777,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:779,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:779,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:781,1
    - Dst: rfapiEthAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:784,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:786,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:789,1
    - Dst: agg_node_get_lock_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:790,1
    - Dst: rfapiPrintBi
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:795,1
    - Dst: RFAPI_MONITOR_VPN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:800,1
    - Dst: rfapiDebugPrintMonitorVpn
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:801,1
    - Dst: RFAPI_MONITOR_ENCAP
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:805,1
    - Dst: rfapiDebugPrintMonitorEncap
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:806,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - stream
    - label
    - rt
    - isvpn
    argTypes:
    - void*
    - char*
    - struct agg_table*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 763
    functionDepth: 5
    functionLinenumber: 763
    functionLinenumberEnd: 810
    functionName: rfapiShowImportTable
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - rfapiDebugPrintMonitorVpn
    - RFAPI_MONITOR_ENCAP
    - rfapiDebugPrintMonitorEncap
    - rfapiPrintBi
    - agg_route_next
    - fp
    - rfapiEthAddr2Str
    - inet_ntop
    - agg_node_get_lock_count
    - agg_node_get_prefix
    - rfapiStream2Vty
    - RFAPI_MONITOR_VPN
    linkageType: ''
    returnType: void
    signature: "void rfapiShowImportTable(void *stream, const char *label, struct
      agg_table *rt,\n\t\t\t  int isvpn)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:828,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:831,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:833,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:839,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:843,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:849,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:856,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:857,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:859,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:871,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:872,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:879,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:880,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:889,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:891,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:894,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:897,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:899,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:900,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:902,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:903,1
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:912,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:919,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:922,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:931,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:935,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:942,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:943,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:950,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:951,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:961,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:963,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:966,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:969,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:971,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:971,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:974,1
    - Dst: rfapi_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:975,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:983,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:984,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 75
    argCount: 2
    argNames:
    - stream
    - pfx_match
    argTypes:
    - void*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 812
    functionDepth: 10
    functionLinenumber: 812
    functionLinenumberEnd: 988
    functionName: rfapiShowVncQueries
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapiFormatSeconds
    - agg_route_top
    - vty_out
    - memset
    - prefix_match
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - rfapiRfapiIpAddr2Str
    - rfapi_ntop
    - skiplist_count
    - agg_route_next
    - fp
    - event_timer_remain_second
    - inet_ntop
    - skiplist_next
    - agg_node_get_prefix
    - rfapiStream2Vty
    linkageType: ''
    returnType: int
    signature: int rfapiShowVncQueries(void *stream, struct prefix *pfx_match)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1009,1
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1014,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1021,1
    - Dst: rfapi_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1023,1
    - Dst: rfapiGetUnAddrOfVpnBi
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1032,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1033,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1034,1
    - Dst: bgp_attr_extcom_tunnel_type
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1038,1
    - Dst: rfapiNexthop2Prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1043,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1047,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1048,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1051,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1052,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1055,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1058,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1059,1
    - Dst: ATTR_FLAG_BIT
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1072,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1078,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1079,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1080,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1081,1
    - Dst: rfapiGetVncLifetime
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1085,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1088,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1091,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1092,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1095,1
    - Dst: event_timer_remain_second
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1103,1
    - Dst: rfapiGetHolddownFromLifetime
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1113,1
    - Dst: rfapiFormatSeconds
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1118,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1120,1
    - Dst: RFAPI_LOCAL_BI
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1122,1
    - Dst: rfapiFormatAge
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1127,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1133,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1135,1
    - Dst: rfapi_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1146,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1152,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1153,1
    - Dst: decode_label
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1160,1
    - Dst: MPLS_LABEL_IS_NULL
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1162,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1163,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1169,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 80
    argCount: 4
    argNames:
    - bgp
    - stream
    - rn
    - bpi
    argTypes:
    - struct bgp*
    - void*
    - struct agg_node*
    - struct bgp_path_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 990
    functionDepth: 11
    functionLinenumber: 990
    functionLinenumberEnd: 1172
    functionName: rfapiPrintRemoteRegBi
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapiFormatSeconds
    - rfapiNexthop2Prefix
    - bgp_attr_extcom_tunnel_type
    - rfapiStream2Vty
    - rfapiGetUnAddrOfVpnBi
    - rfapi_ntop
    - snprintf
    - rfapiGetVncLifetime
    - inet_ntop
    - fp
    - RFAPI_LOCAL_BI
    - decode_label
    - rfapiFormatAge
    - event_timer_remain_second
    - MPLS_LABEL_IS_NULL
    - agg_node_get_prefix
    - rfapiGetHolddownFromLifetime
    - CHECK_FLAG
    - strcmp
    - ATTR_FLAG_BIT
    linkageType: ''
    returnType: int
    signature: "int rfapiPrintRemoteRegBi(struct bgp *bgp, void *stream,\n\t\t\t\t
      struct agg_node *rn, struct bgp_path_info *bpi)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1192,1
    - Dst: agg_route_top
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1202,1
    - Dst: agg_route_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1203,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1204,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1209,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1210,1
    - Dst: RFAPI_LOCAL_BI
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1217,1
    - Dst: RFAPI_LOCAL_BI
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1223,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1230,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1235,1
    - Dst: RFAPI_LOCAL_BI
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1261,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1270,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1275,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1280,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1283,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1286,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1292,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1305,1
    - Dst: rfapiPrintRemoteRegBi
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1311,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1335,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1338,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 89
    argCount: 9
    argNames:
    - bgp
    - stream
    - it
    - prefix_only
    - show_expiring
    - show_local
    - show_remote
    - show_imported
    - pLni
    argTypes:
    - struct bgp*
    - void*
    - struct rfapi_import_table*
    - struct prefix*
    - int
    - int
    - int
    - int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1174
    functionDepth: 12
    functionLinenumber: 1174
    functionLinenumberEnd: 1342
    functionName: rfapiShowRemoteRegistrationsIt
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - prefix_match
    - CHECK_FLAG
    - ecommunity_ecom2str
    - agg_route_next
    - fp
    - rfapiPrintRemoteRegBi
    - XFREE
    - RFAPI_LOCAL_BI
    - agg_node_get_prefix
    - rfapiStream2Vty
    linkageType: ''
    returnType: int
    signature: "int rfapiShowRemoteRegistrationsIt(struct bgp *bgp, void *stream,\n\t\t\t\t\t
      \ struct rfapi_import_table *it,\n\t\t\t\t\t  struct prefix *prefix_only,\n\t\t\t\t\t
      \ int show_expiring, /* either/or */\n\t\t\t\t\t  int show_local, int show_remote,\n\t\t\t\t\t
      \ int show_imported, /* either/or */\n\t\t\t\t\t  uint32_t *pLni)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1361,1
    - Dst: rfapiShowRemoteRegistrationsIt
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1372,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1384,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1387,1
    - Dst: rfapiShowRemoteRegistrationsIt
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1395,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 6
    argNames:
    - stream
    - prefix_only
    - show_expiring
    - show_local
    - show_remote
    - show_imported
    argTypes:
    - void*
    - struct prefix*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1352
    functionDepth: 13
    functionLinenumber: 1352
    functionLinenumberEnd: 1402
    functionName: rfapiShowRemoteRegistrations
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    - rfapiShowRemoteRegistrationsIt
    - skiplist_next
    linkageType: ''
    returnType: int
    signature: "int rfapiShowRemoteRegistrations(void *stream, struct prefix *prefix_only,\n\t\t\t\t
      int show_expiring, int show_local,\n\t\t\t\t int show_remote, int show_imported)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1427,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - a
    - buf
    - bufsize
    argTypes:
    - struct rfapi_ip_addr*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1434
      start: 1420
    functionDepth: 0
    functionLinenumber: 1420
    functionLinenumberEnd: 1434
    functionName: rfapiRfapiIpAddr2Str
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 10
    functionsReached:
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: "char *rfapiRfapiIpAddr2Str(struct rfapi_ip_addr *a, char *buf,\n\t\t\t\t
      int bufsize)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1446,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1449,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stream
    - a
    argTypes:
    - void*
    - struct rfapi_ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1436
    functionDepth: 2
    functionLinenumber: 1436
    functionLinenumberEnd: 1453
    functionName: rfapiPrintRfapiIpAddr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapiRfapiIpAddr2Str
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: void rfapiPrintRfapiIpAddr(void *stream, struct rfapi_ip_addr *a)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1463,1
    - Dst: inet_ntop
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1466,1
    - Dst: strlen
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1471,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1476,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - p
    - buf
    - bufsize
    argTypes:
    - struct rfapi_ip_prefix*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1455
    functionDepth: 0
    functionLinenumber: 1455
    functionLinenumberEnd: 1484
    functionName: rfapiRfapiIpPrefix2Str
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - strlen
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *rfapiRfapiIpPrefix2Str(struct rfapi_ip_prefix *p, char *buf,\n\t\t\t\t
      \  int bufsize)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1496,1
    - Dst: rfapiRfapiIpPrefix2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1499,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1502,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - p
    argTypes:
    - void*
    - struct rfapi_ip_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1486
    functionDepth: 2
    functionLinenumber: 1486
    functionLinenumberEnd: 1505
    functionName: rfapiPrintRfapiIpPrefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapiRfapiIpPrefix2Str
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: void rfapiPrintRfapiIpPrefix(void *stream, struct rfapi_ip_prefix *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1524,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1525,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1527,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1528,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1531,1
    - Dst: bgp_afi_node_get
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1538,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1540,1
    - Dst: bgp_dest_get_bgp_path_info
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1542,1
    - Dst: rfapiPrintBi
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1547,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1553,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 4
    argNames:
    - vty
    - rfd
    - safi
    - p
    argTypes:
    - struct vty*
    - struct rfapi_descriptor*
    - safi_t
    - struct prefix*
    assertStmts:
    - condition: (afi == AFI_IP || afi == AFI_IP6)
      pos:
        line_end: 1524
        line_start: 1524
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    - condition: (bgp)
      pos:
        line_end: 1527
        line_start: 1527
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 1556
      start: 1507
    functionDepth: 10
    functionLinenumber: 1507
    functionLinenumberEnd: 1556
    functionName: rfapiPrintAdvertisedInfo
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - bgp_afi_node_get
    - memset
    - vty_out
    - bgp_get_default
    - bgp_dest_get_bgp_path_info
    - family2afi
    - rfapiPrintBi
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiPrintAdvertisedInfo(struct vty *vty, struct rfapi_descriptor
      *rfd,\n\t\t\t      safi_t safi, struct prefix *p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1572,1
    - Dst: rfapiPrintRfapiIpAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1573,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1574,1
    - Dst: rfapiPrintRfapiIpAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1575,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1576,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1577,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1578,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1579,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1580,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1582,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1586,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1588,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1589,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1591,1
    - Dst: ecommunity_ecom2str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1596,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1598,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1599,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1601,1
    - Dst: afi2family
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1607,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1612,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1615,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1622,1
    - Dst: rfapiPrintAdvertisedInfo
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1624,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1628,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1630,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1632,1
    - Dst: rfapiPrintAdvertisedInfo
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1636,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1639,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 2
    argNames:
    - vty
    - rfd
    argTypes:
    - struct vty*
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1558
    functionDepth: 11
    functionLinenumber: 1558
    functionLinenumberEnd: 1640
    functionName: rfapiPrintDescriptor
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - ecommunity_ecom2str
    - afi2family
    - rfapiPrintAdvertisedInfo
    - skiplist_next
    - XFREE
    - rfapiPrintRfapiIpAddr
    linkageType: ''
    returnType: void
    signature: void rfapiPrintDescriptor(struct vty *vty, struct rfapi_descriptor
      *rfd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1655,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1660,1
    - Dst: listhead
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1662,1
    - Dst: listnextnode
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1662,1
    - Dst: listgetdata
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1663,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1668,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1668,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1669,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1674,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1674,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1675,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1681,1
    - Dst: rfapiPrintDescriptor
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1685,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - vty
    - vn_prefix
    - un_prefix
    argTypes:
    - struct vty*
    - struct prefix*
    - struct prefix*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 1659
        line_start: 1659
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    - condition: (!rfapiRaddr2Qprefix(&rfd->vn_addr, &pfx))
      pos:
        line_end: 1667
        line_start: 1667
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    - condition: (!rfapiRaddr2Qprefix(&rfd->un_addr, &pfx))
      pos:
        line_end: 1673
        line_start: 1673
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 1688
      start: 1646
    functionDepth: 12
    functionLinenumber: 1646
    functionLinenumberEnd: 1688
    functionName: rfapiPrintMatchingDescriptors
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - rfapiRaddr2Qprefix
    - vty_out
    - prefix_match
    - bgp_get_default
    - listhead
    - rfapiPrintDescriptor
    - listgetdata
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapiPrintMatchingDescriptors(struct vty *vty, struct prefix
      *vn_prefix,\n\t\t\t\t   struct prefix *un_prefix)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1696,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1697,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1704,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1711,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1717,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - vty
    - str
    - p
    argTypes:
    - struct vty*
    - char*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1694
    functionDepth: 1
    functionLinenumber: 1694
    functionLinenumberEnd: 1721
    functionName: rfapiCliGetPrefixAddr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - str2prefix
    linkageType: ''
    returnType: int
    signature: int rfapiCliGetPrefixAddr(struct vty *vty, const char *str, struct
      prefix *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiCliGetPrefixAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1729,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - str
    - hai
    argTypes:
    - struct vty*
    - char*
    - struct rfapi_ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1723
    functionDepth: 2
    functionLinenumber: 1723
    functionLinenumberEnd: 1740
    functionName: rfapiCliGetRfapiIpAddr
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapiCliGetPrefixAddr
    linkageType: ''
    returnType: int
    signature: "int rfapiCliGetRfapiIpAddr(struct vty *vty, const char *str,\n\t\t\t
      \  struct rfapi_ip_addr *hai)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1760,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1769,1
    - Dst: rfapiRfapiIpPrefix2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1772,1
    - Dst: strlen
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1774,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1781,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1784,1
    - Dst: strlen
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1786,1
    - Dst: snprintf
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1793,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1796,1
    - Dst: strlen
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1798,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1807,1
    - Dst: rfapiEthAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1821,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1823,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1833,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1839,1
    - Dst: rfapi_print_tunneltype_option
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1853,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1857,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 2
    argNames:
    - stream
    - next_hops
    argTypes:
    - void*
    - struct rfapi_next_hop_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1747
    functionDepth: 2
    functionLinenumber: 1747
    functionLinenumberEnd: 1864
    functionName: rfapiPrintNhl
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 4
    functionsReached:
    - strlen
    - snprintf
    - rfapiRfapiIpAddr2Str
    - rfapiRfapiIpPrefix2Str
    - fp
    - rfapiEthAddr2Str
    - rfapi_print_tunneltype_option
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: void rfapiPrintNhl(void *stream, struct rfapi_next_hop_entry *next_hops)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1888,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 8
    argNames:
    - un_addr
    - vn_addr
    - rprefix
    - is_add
    - lifetime
    - vn_options
    - head
    - tail
    argTypes:
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    - struct rfapi_ip_prefix*
    - int
    - uint32_t
    - struct rfapi_vn_option*
    - struct rfapi_next_hop_entry**
    - struct rfapi_next_hop_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1906
      start: 1873
    functionDepth: 0
    functionLinenumber: 1873
    functionLinenumberEnd: 1906
    functionName: rfapiAddDeleteLocalRfpPrefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: "void rfapiAddDeleteLocalRfpPrefix(struct rfapi_ip_addr *un_addr,\n\t\t\t\t\t
      struct rfapi_ip_addr *vn_addr,\n\t\t\t\t\t struct rfapi_ip_prefix *rprefix,\n\t\t\t\t\t
      int is_add,\n\t\t\t\t\t uint32_t lifetime, /* add only */\n\t\t\t\t\t struct
      rfapi_vn_option *vn_options,\n\t\t\t\t\t struct rfapi_next_hop_entry **head,\n\t\t\t\t\t
      struct rfapi_next_hop_entry **tail)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1947,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1950,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1958,1
    - Dst: strmatch
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1963,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1965,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1970,1
    - Dst: strmatch
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1978,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1980,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1985,1
    - Dst: rfapiCliGetRfapiIpAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1995,1
    - Dst: rfapiCliGetRfapiIpAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:1997,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2013,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2019,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2020,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2024,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2030,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2034,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2036,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2044,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2048,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2050,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2061,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2067,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2069,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2078,1
    - Dst: rfapiCliGetPrefixAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2083,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2102,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2109,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2114,1
    - Dst: rfapiStr2EthAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2116,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2119,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2134,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2141,1
    - Dst: rfapi_find_rfd
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2146,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2159,1
    - Dst: rfapi_open
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2162,1
    - Dst: rfapi_get_rfp_start_val_by_bgp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2162,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2168,1
    - Dst: rfapi_error_str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2170,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2175,1
    - Dst: rfapi_error_str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2176,1
    - Dst: rfapi_register
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2181,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2188,1
    - Dst: rfapi_vn_options_dup
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2194,1
    - Dst: rfapiAddDeleteLocalRfpPrefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2196,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2209,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2210,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2211,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2212,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2217,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 202
    argCount: 10
    argNames:
    - vty
    - carg_prefix
    - carg_vn
    - carg_un
    - carg_cost
    - carg_lifetime
    - carg_macaddr
    - carg_vni
    - argc
    - argv
    argTypes:
    - struct vty*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 1909
    functionDepth: 13
    functionLinenumber: 1909
    functionLinenumberEnd: 2219
    functionName: register_add
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapi_error_str
    - rfapiQprefix2Rprefix
    - rfapi_open
    - rfapiAddDeleteLocalRfpPrefix
    - strmatch
    - rfapiCliGetPrefixAddr
    - rfapi_get_rfp_start_val_by_bgp
    - memset
    - vnc_zlog_debug_verbose
    - bgp_get_default
    - rfapiCliGetRfapiIpAddr
    - str2prefix
    - vty_out
    - rfapi_vn_options_dup
    - rfapiStr2EthAddr
    - strtoul
    - rfapi_find_rfd
    - rfapi_register
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int register_add(struct vty *vty, struct cmd_token *carg_prefix,\n\t
      \    struct cmd_token *carg_vn, struct cmd_token *carg_un,\n\t     struct cmd_token
      *carg_cost,     /* optional */\n\t     struct cmd_token *carg_lifetime, /* optional
      */\n\t     struct cmd_token *carg_macaddr,  /* optional */\n\t     struct cmd_token\n\t\t
      \    *carg_vni, /* mac present=>mandatory Virtual Network ID */\n\t     int
      argc, struct cmd_token **argv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hap
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2720
      start: 2716
    functionDepth: 0
    functionLinenumber: 2716
    functionLinenumberEnd: 2720
    functionName: nve_addr_free
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nve_addr_free(void *hap)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2738,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2743,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2748,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2751,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2755,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2760,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 2747
        line_start: 2747
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    - condition: (0)
      pos:
        line_end: 2759
        line_start: 2759
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 2763
      start: 2722
    functionDepth: 1
    functionLinenumber: 2722
    functionLinenumberEnd: 2763
    functionName: nve_addr_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_CMP
    - IPV6_ADDR_CMP
    - assert
    linkageType: ''
    returnType: int
    signature: int nve_addr_cmp(const void *k1, const void *k2)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2774,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2778,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2782,1
    - Dst: rfapiCliGetRfapiIpAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2783,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2787,1
    - Dst: rfapiCliGetRfapiIpAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2788,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2792,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2794,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2795,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2802,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2805,1
    - Dst: rfapiStr2EthAddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2806,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2808,1
    - Dst: strcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2814,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2816,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2821,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2822,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 45
    argCount: 10
    argNames:
    - vty
    - bgp
    - arg_prefix
    - arg_vn
    - arg_un
    - arg_l2addr
    - arg_vni
    - arg_rd
    - arg_rfg
    - rcdarg
    argTypes:
    - struct vty*
    - struct bgp*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - struct rfapi_nve_group_cfg*
    - struct rfapi_local_reg_delete_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2765
    functionDepth: 10
    functionLinenumber: 2765
    functionLinenumberEnd: 2828
    functionName: parse_deleter_args
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - strtoul
    - vty_out
    - memset
    - str2prefix_rd
    - bgp_get_default
    - strcmp
    - rfapiCliGetRfapiIpAddr
    - str2prefix
    - rfapiStr2EthAddr
    linkageType: ''
    returnType: int
    signature: "int parse_deleter_args(struct vty *vty, struct bgp *bgp,\n\t\t\t      const
      char *arg_prefix, const char *arg_vn,\n\t\t\t      const char *arg_un, const
      char *arg_l2addr,\n\t\t\t      const char *arg_vni, const char *arg_rd,\n\t\t\t
      \     struct rfapi_nve_group_cfg *arg_rfg,\n\t\t\t      struct rfapi_local_reg_delete_arg
      *rcdarg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parse_deleter_args
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - vty
    - bgp
    - carg_prefix
    - carg_vn
    - carg_un
    - carg_l2addr
    - carg_vni
    - carg_rd
    - arg_rfg
    - rcdarg
    argTypes:
    - struct vty*
    - struct bgp*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct cmd_token*
    - struct rfapi_nve_group_cfg*
    - struct rfapi_local_reg_delete_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2846
      start: 2830
    functionDepth: 11
    functionLinenumber: 2830
    functionLinenumberEnd: 2846
    functionName: parse_deleter_tokens
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - parse_deleter_args
    linkageType: ''
    returnType: int
    signature: "int parse_deleter_tokens(struct vty *vty, struct bgp *bgp,\n\t\t     struct
      cmd_token *carg_prefix, struct cmd_token *carg_vn,\n\t\t     struct cmd_token
      *carg_un, struct cmd_token *carg_l2addr,\n\t\t     struct cmd_token *carg_vni,
      struct cmd_token *carg_rd,\n\t\t     struct rfapi_nve_group_cfg *arg_rfg,\n\t\t
      \    struct rfapi_local_reg_delete_arg *rcdarg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2856,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2862,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2864,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2865,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2866,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2869,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - cda
    - un_address
    - vn_address
    - rfd
    argTypes:
    - struct rfapi_local_reg_delete_arg*
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    - struct rfapi_descriptor*
    assertStmts:
    - condition: (hap)
      pos:
        line_end: 2865
        line_start: 2865
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 2871
      start: 2848
    functionDepth: 1
    functionLinenumber: 2848
    functionLinenumberEnd: 2871
    functionName: record_nve_in_cda_list
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    - memset
    - XCALLOC
    - skiplist_new
    - skiplist_insert
    - assert
    linkageType: ''
    returnType: void
    signature: "void record_nve_in_cda_list(struct rfapi_local_reg_delete_arg *cda,\n\t\t\t\t
      \  struct rfapi_ip_addr *un_address,\n\t\t\t\t   struct rfapi_ip_addr *vn_address,\n\t\t\t\t
      \  struct rfapi_descriptor *rfd)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2879,1
    - Dst: rfapi_find_rfd
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2885,1
    - Dst: rfapiRibClear
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2889,1
    - Dst: rfapi_query_done_all
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2890,1
    - Dst: record_nve_in_cda_list
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2896,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2912,1
    - Dst: rfapi_ip_addr_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2917,1
    - Dst: rfapi_ip_addr_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2921,1
    - Dst: rfapiRibClear
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2925,1
    - Dst: rfapi_query_done_all
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2927,1
    - Dst: record_nve_in_cda_list
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2933,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - cda
    argTypes:
    - struct rfapi_local_reg_delete_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2935
      start: 2873
    functionDepth: 11
    functionLinenumber: 2873
    functionLinenumberEnd: 2935
    functionName: clear_vnc_responses
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapi_find_rfd
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - rfapi_query_done_all
    - rfapi_ip_addr_cmp
    - record_nve_in_cda_list
    - rfapiRibClear
    linkageType: ''
    returnType: void
    signature: void clear_vnc_responses(struct rfapi_local_reg_delete_arg *cda)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2955,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2964,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2978,1
    - Dst: rfapi_ip_addr_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2984,1
    - Dst: rfapi_ip_addr_cmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2986,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:2990,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3017,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3025,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3027,1
    - Dst: prefix_same
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3031,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3034,1
    - Dst: memcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3042,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3046,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3053,1
    - Dst: memcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3055,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3060,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3068,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3072,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3081,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3086,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3091,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3099,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3101,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3105,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3127,1
    - Dst: rfapi_register
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3132,1
    - Dst: rfapiAddDeleteLocalRfpPrefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3142,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3147,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3149,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3162,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3165,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3168,1
    - Dst: memcmp
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3170,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3180,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3188,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3192,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3196,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3201,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3204,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3209,1
    - Dst: rfapi_register
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3214,1
    - Dst: rfapi_vn_options_dup
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3227,1
    - Dst: rfapiAddDeleteLocalRfpPrefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3229,1
    - Dst: list_delete_all_node
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3236,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3238,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3254,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3259,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3261,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3262,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3264,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3267,1
    - Dst: rfapiDeleteLocalPrefixes
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3275,1
    - Dst: rfapiDeleteLocalPrefixesByRFD
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3281,1
    - Dst: rfapi_cfg
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3281,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3295,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3297,1
    - Dst: rfapiDeleteLocalPrefixesByRFD
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3298,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3309,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3324,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3328,1
    - Dst: rfapiDeleteRemotePrefixes
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3337,1
    - Dst: rfapiDeleteLocalPrefixes
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3345,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3348,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3354,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3358,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3362,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3372,1
    - Dst: clear_vnc_nve_closer
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3380,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3391,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3392,1
    - Dst: rfapi_close
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3398,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3403,1
    - Dst: parse_deleter_args
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3415,1
    - Dst: clear_vnc_responses
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3421,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3422,1
    - Dst: clear_vnc_nve_closer
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3423,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3425,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3430,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3448,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3455,1
    - Dst: clear_vnc_nve_closer
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3456,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3458,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3463,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3481,1
    - Dst: clear_vnc_responses
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3487,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3488,1
    - Dst: clear_vnc_nve_closer
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3489,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3491,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3496,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3510,1
    - Dst: clear_vnc_responses
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3516,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3517,1
    - Dst: clear_vnc_nve_closer
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3518,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3520,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3524,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3538,1
    - Dst: clear_vnc_responses
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3544,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3545,1
    - Dst: clear_vnc_nve_closer
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3546,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3548,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3560,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3581,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3585,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3586,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3590,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3611,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3615,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3616,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3620,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3637,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3641,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3642,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3646,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3663,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3667,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3668,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3672,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3686,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3690,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3691,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3703,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3727,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3731,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3732,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3736,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3760,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3764,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3765,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3769,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3789,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3793,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3794,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3798,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3818,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3822,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3823,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3827,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3844,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3848,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3849,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3857,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3885,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3889,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3890,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3894,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3926,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3930,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3931,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3935,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3959,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3963,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3964,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3968,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3992,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3996,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:3997,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4001,1
    - Dst: parse_deleter_tokens
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4021,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4025,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4026,1
    - Dst: bgp_rfapi_is_vnc_configured
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4038,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4042,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4050,1
    - Dst: bgp_rfapi_is_vnc_configured
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4052,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4073,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4074,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4076,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4078,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4098,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4099,1
    - Dst: rfapiApCountAll
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4100,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4101,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4103,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4105,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4107,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4108,1
    - Dst: rfapiCountAllItRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4110,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4117,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4118,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4120,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4124,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4125,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4127,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4128,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4129,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4131,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4132,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4133,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4138,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4139,1
    - Dst: rfapi_monitor_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4140,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4141,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4143,1
    - Dst: rfapiRibShowResponsesSummary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4148,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4154,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4159,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4169,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4186,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4190,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4202,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4203,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4203,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4204,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4204,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4209,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4209,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4210,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4214,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4216,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4221,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4223,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4230,1
    - Dst: rfapiApCount
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4231,1
    - Dst: rfapi_monitor_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4232,1
    - Dst: rfapiFormatAge
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4234,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4238,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4244,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4249,1
    - Dst: check_and_display_is_vnc_running
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4256,1
    - Dst: bgp_rfapi_show_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4258,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4258,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4259,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4260,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4261,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4262,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4263,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4267,1
    - Dst: rfapi_show_nves
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4274,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4278,1
    - Dst: check_and_display_is_vnc_running
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4291,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4294,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4299,1
    - Dst: rfapi_show_nves
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4304,1
    - Dst: rfapi_show_nves
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4306,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 306
    argCount: 2
    argNames:
    - cda
    - rfd
    argTypes:
    - struct rfapi_local_reg_delete_arg*
    - struct rfapi_descriptor*
    assertStmts:
    - condition: (!rfapiRaddr2Qprefix(&rfd->un_addr, &pfx))
      pos:
        line_end: 4208
        line_start: 4208
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    - condition: (hap)
      pos:
        line_end: 3263
        line_start: 3263
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    - condition: (!rfapiRaddr2Qprefix(&rfd->vn_addr, &pfx))
      pos:
        line_end: 4202
        line_start: 4202
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 4599
      start: 2942
    functionDepth: 15
    functionLinenumber: 2942
    functionLinenumberEnd: 4599
    functionName: rfapiDeleteLocalPrefixesByRFD
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - parse_deleter_args
    - list_delete
    - skiplist_search
    - clear_vnc_nve_closer
    - rfapiApCount
    - rfapiQprefix2Rprefix
    - memcmp
    - listnode_add
    - rfapi_cfg
    - bgp_rfapi_show_summary
    - clear_vnc_responses
    - rfapiDeleteLocalPrefixes
    - rfapiAddDeleteLocalRfpPrefix
    - rfapi_close
    - clear_vnc_prefix
    - memset
    - vnc_zlog_debug_verbose
    - XCALLOC
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - prefix_match
    - rfapi_ip_addr_cmp
    - rfapiCountAllItRoutes
    - list_delete_all_node
    - str2prefix
    - if
    - rfapi_monitor_count
    - assert
    - DEFUN
    - parse_deleter_tokens
    - prefix_same
    - vty_out
    - rfapiApCountAll
    - rfapi_vn_options_dup
    - rfapiRfapiIpAddr2Str
    - rfapiFormatAge
    - RFAPI_0_PREFIX
    - skiplist_next
    - skiplist_free
    - rfapiDeleteLocalPrefixesByRFD
    - rfapi_vty_show_nve_summary
    - rfapiRaddr2Qprefix
    - rfapi_register
    - check_and_display_is_vnc_running
    - CHECK_FLAG
    - rfapiRibShowResponsesSummary
    - rfapiDeleteRemotePrefixes
    - skiplist_new
    - list_new
    - print_cleared_stats
    - rfapi_show_nves
    - bgp_rfapi_is_vnc_configured
    - skiplist_insert
    linkageType: ''
    returnType: int
    signature: "int rfapiDeleteLocalPrefixesByRFD(struct rfapi_local_reg_delete_arg
      *cda,\n\t\t\t\t\t struct rfapi_descriptor *rfd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_rfapi_is_vnc_configured
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4038,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4042,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4045
      start: 4036
    functionDepth: 1
    functionLinenumber: 4036
    functionLinenumberEnd: 4045
    functionName: check_and_display_is_vnc_running
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - bgp_rfapi_is_vnc_configured
    - vty_out
    linkageType: ''
    returnType: int
    signature: int check_and_display_is_vnc_running(struct vty *vty)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4050,1
    - Dst: bgp_rfapi_is_vnc_configured
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4052,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4073,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4074,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4076,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4078,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4098,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4099,1
    - Dst: rfapiApCountAll
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4100,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4101,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4103,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4105,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4107,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4108,1
    - Dst: rfapiCountAllItRoutes
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4110,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4117,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4118,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4120,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4124,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4125,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4127,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4128,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4129,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4131,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4132,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4133,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4138,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4139,1
    - Dst: rfapi_monitor_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4140,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4141,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4143,1
    - Dst: rfapiRibShowResponsesSummary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4148,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4154,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4159,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 60
    argCount: 2
    argNames:
    - vty
    - show_type
    argTypes:
    - struct vty*
    - show_nve_summary_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4161
      start: 4047
    functionDepth: 11
    functionLinenumber: 4047
    functionLinenumberEnd: 4161
    functionName: rfapi_vty_show_nve_summary
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - rfapiApCountAll
    - vty_out
    - bgp_get_default
    - rfapiRibShowResponsesSummary
    - rfapiCountAllItRoutes
    - bgp_rfapi_is_vnc_configured
    - rfapi_monitor_count
    linkageType: ''
    returnType: int
    signature: "int rfapi_vty_show_nve_summary(struct vty *vty,\n\t\t\t\t      show_nve_summary_t
      show_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4169,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4186,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4190,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4202,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4203,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4203,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4204,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4204,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4209,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4209,1
    - Dst: prefix_match
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4210,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4214,1
    - Dst: rfapiRfapiIpAddr2Str
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4216,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4221,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4223,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4230,1
    - Dst: rfapiApCount
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4231,1
    - Dst: rfapi_monitor_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4232,1
    - Dst: rfapiFormatAge
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4234,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4238,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4244,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4249,1
    - Dst: check_and_display_is_vnc_running
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4256,1
    - Dst: bgp_rfapi_show_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4258,1
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4258,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4259,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4260,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4261,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4262,1
    - Dst: rfapi_vty_show_nve_summary
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4263,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4267,1
    - Dst: rfapi_show_nves
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4274,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4278,1
    - Dst: check_and_display_is_vnc_running
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4291,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4294,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - vty
    - vn_prefix
    - un_prefix
    argTypes:
    - struct vty*
    - struct prefix*
    - struct prefix*
    assertStmts:
    - condition: (!rfapiRaddr2Qprefix(&rfd->vn_addr, &pfx))
      pos:
        line_end: 4202
        line_start: 4202
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    - condition: (!rfapiRaddr2Qprefix(&rfd->un_addr, &pfx))
      pos:
        line_end: 4208
        line_start: 4208
        source_file: /src/frr/bgpd/rfapi/rfapi_vty.c
    constantsTouched: []
    func_position:
      end: 4297
      start: 4163
    functionDepth: 12
    functionLinenumber: 4163
    functionLinenumberEnd: 4297
    functionName: rfapi_show_nves
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 2
    functionsReached:
    - rfapiRaddr2Qprefix
    - DEFUN
    - vty_out
    - prefix_match
    - bgp_get_default
    - ALL_LIST_ELEMENTS_RO
    - rfapiRfapiIpAddr2Str
    - rfapiApCount
    - rfapiFormatAge
    - check_and_display_is_vnc_running
    - str2prefix
    - bgp_rfapi_show_summary
    - if
    - rfapi_show_nves
    - rfapi_monitor_count
    - rfapi_vty_show_nve_summary
    - assert
    linkageType: ''
    returnType: int
    signature: "int rfapi_show_nves(struct vty *vty, struct prefix *vn_prefix,\n\t\t\t
      \  struct prefix *un_prefix)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4613,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4622,1
    - Dst: rfapiQprefix2Raddr
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4623,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4625,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4631,1
    - Dst: rfapi_init_and_open
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4633,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - bgp
    - rfg
    argTypes:
    - struct bgp*
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4635
      start: 4607
    functionDepth: 5
    functionLinenumber: 4607
    functionLinenumberEnd: 4635
    functionName: vnc_add_vrf_opener
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - memset
    - vnc_zlog_debug_verbose
    - XCALLOC
    - CHECK_FLAG
    - rfapi_init_and_open
    - rfapiQprefix2Raddr
    linkageType: ''
    returnType: void
    signature: void vnc_add_vrf_opener(struct bgp *bgp, struct rfapi_nve_group_cfg
      *rfg)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4653,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4655,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4659,1
    - Dst: bgp_rfapi_cfg_match_byname
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4663,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4666,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4671,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4677,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4683,1
    - Dst: str2prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4688,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4689,1
    - Dst: rfapiQprefix2Rprefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4692,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4693,1
    - Dst: str2prefix_rd
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4698,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4699,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4712,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4719,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4721,1
    - Dst: vnc_add_vrf_opener
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4728,1
    - Dst: rfapi_register
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4730,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4736,1
    - Dst: rfapi_vn_options_dup
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4742,1
    - Dst: rfapiAddDeleteLocalRfpPrefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4744,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4756,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4763,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4764,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 80
    argCount: 6
    argNames:
    - vty
    - arg_vrf
    - arg_prefix
    - arg_rd
    - arg_label
    - arg_pref
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4766
      start: 4638
    functionDepth: 13
    functionLinenumber: 4638
    functionLinenumberEnd: 4766
    functionName: vnc_add_vrf_prefix
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - strtoul
    - vty_out
    - memset
    - str2prefix_rd
    - vnc_add_vrf_opener
    - bgp_get_default
    - rfapi_register
    - vnc_zlog_debug_verbose
    - rfapi_vn_options_dup
    - rfapiQprefix2Rprefix
    - bgp_rfapi_cfg_match_byname
    - str2prefix
    - rfapiAddDeleteLocalRfpPrefix
    linkageType: ''
    returnType: int
    signature: "int vnc_add_vrf_prefix(struct vty *vty, const char *arg_vrf,\n\t\t\t
      \     const char *arg_prefix,\n\t\t\t      const char *arg_rd,    /* optional
      */\n\t\t\t      const char *arg_label, /* optional */\n\t\t\t      const char
      *arg_pref)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - rfg
    argTypes:
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4829
      start: 4817
    functionDepth: 0
    functionLinenumber: 4817
    functionLinenumberEnd: 4829
    functionName: rfapi_cfg_group_it_count
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rfapi_cfg_group_it_count(struct rfapi_nve_group_cfg *rfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4845,1
    - Dst: rfapi_close
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4848,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4850,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - rfg
    argTypes:
    - struct rfapi_nve_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4854
      start: 4831
    functionDepth: 11
    functionLinenumber: 4831
    functionLinenumberEnd: 4854
    functionName: clear_vnc_vrf_closer
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - rfapi_close
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void clear_vnc_vrf_closer(struct rfapi_nve_group_cfg *rfg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4866,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4868,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4872,1
    - Dst: bgp_rfapi_cfg_match_byname
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4875,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4878,1
    - Dst: parse_deleter_args
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4882,1
    - Dst: rfapi_cfg_group_it_count
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4887,1
    - Dst: clear_vnc_prefix
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4888,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4889,1
    - Dst: print_cleared_stats
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4891,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 5
    argNames:
    - vty
    - bgp
    - arg_vrf
    - arg_prefix
    - arg_rd
    argTypes:
    - struct vty*
    - struct bgp*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4893
      start: 4856
    functionDepth: 11
    functionLinenumber: 4856
    functionLinenumberEnd: 4893
    functionName: vnc_clear_vrf
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 0
    functionsReached:
    - parse_deleter_args
    - vty_out
    - clear_vnc_prefix
    - bgp_get_default
    - rfapi_cfg_group_it_count
    - bgp_rfapi_cfg_match_byname
    - print_cleared_stats
    linkageType: ''
    returnType: int
    signature: "int vnc_clear_vrf(struct vty *vty, struct bgp *bgp, const char *arg_vrf,\n\t\t\t
      const char *arg_prefix, /* NULL = all */\n\t\t\t const char *arg_rd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4942,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4943,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4944,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4945,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4946,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4948,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4949,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4950,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4951,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4952,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4954,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4955,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4956,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4957,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4958,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4959,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4960,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4961,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4963,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4965,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4966,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4967,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4968,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4969,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4971,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4972,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4973,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4974,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4975,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4977,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4978,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4979,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4980,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4981,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4983,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4984,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4985,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4986,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4987,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4989,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4990,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4992,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4994,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4995,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4996,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4998,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:4999,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:5000,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:5001,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/rfapi_vty.c:5002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5003
      start: 4940
    functionDepth: 1
    functionLinenumber: 4940
    functionLinenumberEnd: 5003
    functionName: rfapi_vty_init
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_vty.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void rfapi_vty_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - adb1
    - adb2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 87
    functionName: sl_adb_lifetime_cmp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sl_adb_lifetime_cmp(const void *adb1, const void *adb2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:91,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:92,1
    - Dst: skiplist_new
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ap
    argTypes:
    - struct rfapi_advertised_prefixes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: rfapiApInit
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 1
    functionsReached:
    - skiplist_new
    linkageType: ''
    returnType: void
    signature: void rfapiApInit(struct rfapi_advertised_prefixes *ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:101,1
    - Dst: rfapiAdbFree
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:102,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:103,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:106,1
    - Dst: skiplist_delete_first
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:108,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:112,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:113,1
    - Dst: skiplist_free
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ap
    argTypes:
    - struct rfapi_advertised_prefixes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 119
    functionName: rfapiApRelease
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 1
    functionsReached:
    - skiplist_delete_first
    - skiplist_first
    - skiplist_free
    - rfapiAdbFree
    linkageType: ''
    returnType: void
    signature: void rfapiApRelease(struct rfapi_advertised_prefixes *ap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_count
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rfd
    argTypes:
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: rfapiApCount
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 3
    functionsReached:
    - skiplist_count
    linkageType: ''
    returnType: int
    signature: int rfapiApCount(struct rfapi_descriptor *rfd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:138,1
    - Dst: rfapiApCount
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 143
    functionName: rfapiApCountAll
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - rfapiApCount
    linkageType: ''
    returnType: int
    signature: int rfapiApCountAll(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:152,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:154,1
    - Dst: rfp_cost_to_localpref
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:158,1
    - Dst: add_vnc_route
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - bgp
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 146
    functionDepth: 11
    functionLinenumber: 146
    functionLinenumberEnd: 177
    functionName: rfapiApReadvertiseAll
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 1
    functionsReached:
    - rfp_cost_to_localpref
    - add_vnc_route
    - skiplist_next
    linkageType: ''
    returnType: void
    signature: void rfapiApReadvertiseAll(struct bgp *bgp, struct rfapi_descriptor
      *rfd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:187,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:189,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:195,1
    - Dst: RFAPI_HOST_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:196,1
    - Dst: rfapiRaddr2Qprefix
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:207,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:211,1
    - Dst: del_vnc_route
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:218,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - bgp
    - rfd
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 223
    functionName: rfapiApWithdrawAll
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 1
    functionsReached:
    - rfapiRaddr2Qprefix
    - vnc_zlog_debug_verbose
    - RFAPI_0_PREFIX
    - skiplist_next
    - RFAPI_HOST_PREFIX
    - del_vnc_route
    linkageType: ''
    returnType: void
    signature: void rfapiApWithdrawAll(struct bgp *bgp, struct rfapi_descriptor *rfd)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:237,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:240,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:243,1
    - Dst: rfapiApCount
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:316,1
    - Dst: skiplist_first
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:341,1
    - Dst: skiplist_last
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:343,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:359,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:363,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:367,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:379,1
    - Dst: skiplist_next
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:383,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:407,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 79
    argCount: 3
    argNames:
    - rfd
    - old_lifetime
    - new_lifetime
    argTypes:
    - struct rfapi_descriptor*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 412
    functionName: rfapiApAdjustLifetimeStats
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - rfapiApCount
    - skiplist_last
    - skiplist_next
    - skiplist_first
    linkageType: ''
    returnType: int
    signature: "int rfapiApAdjustLifetimeStats(\n\tstruct rfapi_descriptor *rfd,\n\tuint32_t
      *old_lifetime, /* set if removing/replacing */\n\tuint32_t *new_lifetime)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_rib_key_init
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:431,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:432,1
    - Dst: RFAPI_HOST_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:432,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:434,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:435,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:441,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:448,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:453,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:454,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:457,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:461,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:465,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:465,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:468,1
    - Dst: skiplist_insert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:468,1
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:476,1
    - Dst: rfapiApAdjustLifetimeStats
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:478,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 8
    argNames:
    - bgp
    - rfd
    - pfx_ip
    - pfx_eth
    - prd
    - lifetime
    - cost
    - l2o
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct prefix*
    - struct prefix*
    - struct prefix_rd*
    - uint32_t
    - uint8_t
    - struct rfapi_l2address_option*
    assertStmts:
    - condition: (pfx_eth)
      pos:
        line_end: 433
        line_start: 433
        source_file: /src/frr/bgpd/rfapi/rfapi_ap.c
    - condition: (pfx_eth)
      pos:
        line_end: 452
        line_start: 452
        source_file: /src/frr/bgpd/rfapi/rfapi_ap.c
    - condition: "(!skiplist_delete(rfd->advertised.by_lifetime,\n\t\t\t\t\t\tadb,
        NULL))"
      pos:
        line_end: 465
        line_start: 464
        source_file: /src/frr/bgpd/rfapi/rfapi_ap.c
    - condition: "(!skiplist_insert(rfd->advertised.by_lifetime,\n\t\t\t\t\t\tadb,
        adb))"
      pos:
        line_end: 468
        line_start: 467
        source_file: /src/frr/bgpd/rfapi/rfapi_ap.c
    constantsTouched: []
    func_position:
      end: 483
      start: 420
    functionDepth: 3
    functionLinenumber: 420
    functionLinenumberEnd: 483
    functionName: rfapiApAdd
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 1
    functionsReached:
    - rfapiApAdjustLifetimeStats
    - skiplist_search
    - memset
    - XCALLOC
    - skiplist_delete
    - RFAPI_0_PREFIX
    - rfapi_rib_key_init
    - skiplist_insert
    - RFAPI_HOST_PREFIX
    - assert
    linkageType: ''
    returnType: int
    signature: "int rfapiApAdd(struct bgp *bgp, struct rfapi_descriptor *rfd,\n\t
      \      struct prefix *pfx_ip, struct prefix *pfx_eth,\n\t       struct prefix_rd
      *prd, uint32_t lifetime, uint8_t cost,\n\t       struct rfapi_l2address_option
      *l2o)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_rib_key_init
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:502,1
    - Dst: RFAPI_0_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:504,1
    - Dst: RFAPI_HOST_PREFIX
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:504,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:506,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:508,1
    - Dst: skiplist_search
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:514,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:525,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:527,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:529,1
    - Dst: skiplist_delete
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:531,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:532,1
    - Dst: rfapiAdbFree
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:534,1
    - Dst: rfapiApAdjustLifetimeStats
      Src: /src/frr/bgpd/rfapi/rfapi_ap.c:536,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - bgp
    - rfd
    - pfx_ip
    - pfx_eth
    - prd
    - advertise_tunnel
    argTypes:
    - struct bgp*
    - struct rfapi_descriptor*
    - struct prefix*
    - struct prefix*
    - struct prefix_rd*
    - int*
    assertStmts:
    - condition: (pfx_eth)
      pos:
        line_end: 505
        line_start: 505
        source_file: /src/frr/bgpd/rfapi/rfapi_ap.c
    - condition: (!rc)
      pos:
        line_end: 528
        line_start: 528
        source_file: /src/frr/bgpd/rfapi/rfapi_ap.c
    - condition: (!rc)
      pos:
        line_end: 531
        line_start: 531
        source_file: /src/frr/bgpd/rfapi/rfapi_ap.c
    constantsTouched: []
    func_position:
      end: 542
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 542
    functionName: rfapiApDelete
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_ap.c
    functionUses: 1
    functionsReached:
    - rfapiApAdjustLifetimeStats
    - skiplist_search
    - rfapiAdbFree
    - skiplist_delete
    - RFAPI_0_PREFIX
    - rfapi_rib_key_init
    - RFAPI_HOST_PREFIX
    - assert
    linkageType: ''
    returnType: int
    signature: "int rfapiApDelete(struct bgp *bgp, struct rfapi_descriptor *rfd,\n\t\t
      \ struct prefix *pfx_ip, struct prefix *pfx_eth,\n\t\t  struct prefix_rd *prd,
      int *advertise_tunnel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: rfapi_time
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - monotime
    linkageType: ''
    returnType: time_t
    signature: time_t rfapi_time(time_t *t)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:99,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:102,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:103,1
    - Dst: bgp_rfapi_cfg_match_group
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:109,1
    - Dst: agg_node_match
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:146,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:149,1
    - Dst: agg_node_match
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:152,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:155,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:160,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:161,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:162,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:183,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 3
    argNames:
    - rfg
    - nves
    - family
    argTypes:
    - struct rfapi_nve_group_cfg*
    - struct list**
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 187
    functionName: nve_group_to_nve_list
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 2
    functionsReached:
    - bgp_rfapi_cfg_match_group
    - vnc_zlog_debug_verbose
    - ALL_LIST_ELEMENTS_RO
    - agg_node_match
    - listnode_add
    - agg_unlock_node
    - list_new
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void nve_group_to_nve_list(struct rfapi_nve_group_cfg *rfg, struct
      list **nves,\n\t\t\t   uint8_t family)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - bgpv
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: rfapi_get_rfp_start_val
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *rfapi_get_rfp_start_val(void *bgpv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:231,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 228
    functionDepth: 10
    functionLinenumber: 228
    functionLinenumberEnd: 239
    functionName: bgp_rfapi_is_vnc_configured
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 4
    functionsReached:
    - bgp_get_default
    linkageType: ''
    returnType: int
    signature: int bgp_rfapi_is_vnc_configured(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - bgp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 260
    functionName: VNC_VTY_CONFIG_CHECK
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VNC_VTY_CONFIG_CHECK(bgp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ecommunity_str2com
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:307,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:310,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:312,1
    - Dst: ecommunity_merge
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:317,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:318,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:325,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - vty
    - argc
    - argv
    - list
    argTypes:
    - struct vty*
    - int
    - struct cmd_token**
    - struct ecommunity**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 299
    functionDepth: 6
    functionLinenumber: 299
    functionLinenumberEnd: 330
    functionName: set_ecom_list
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - ecommunity_merge
    - vty_out
    - ecommunity_str2com
    - ecommunity_free
    linkageType: ''
    returnType: int
    signature: "int set_ecom_list(struct vty *vty, int argc, struct cmd_token **argv,\n\t\t\t
      struct ecommunity **list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:701,1
    - Dst: VNC_REDIST_ENABLE
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:709,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:713,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 714
    functionName: vnc_redistribute_postchange
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - VNC_REDIST_ENABLE
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void vnc_redistribute_postchange(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:1396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1394
    functionDepth: 0
    functionLinenumber: 1394
    functionLinenumberEnd: 1397
    functionName: rfgn_new
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct rfapi_rfg_name
    signature: struct rfapi_rfg_name *rfgn_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:1401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rfgn
    argTypes:
    - struct rfapi_rfg_name*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1399
    functionDepth: 0
    functionLinenumber: 1399
    functionLinenumberEnd: 1402
    functionName: rfgn_free
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfgn_free(struct rfapi_rfg_name *rfgn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2015,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2021,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2029,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2033,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2038,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2042,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2044,1
    - Dst: vnc_direct_bgp_reexport_group_afi
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2050,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2058,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2062,1
    - Dst: prefix_list_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2068,1
    - Dst: vnc_direct_bgp_reexport
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2074,1
    - Dst: vnc_direct_bgp_reexport
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2075,1
    - Dst: vnc_redistribute_prechange
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2080,1
    - Dst: vnc_redistribute_postchange
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2081,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2006
    functionDepth: 18
    functionLinenumber: 2006
    functionLinenumberEnd: 2082
    functionName: vnc_prefix_list_update
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 1
    functionsReached:
    - prefix_list_lookup
    - vnc_zlog_debug_verbose
    - vnc_direct_bgp_reexport
    - vnc_redistribute_prechange
    - ALL_LIST_ELEMENTS_RO
    - vnc_direct_bgp_reexport_group_afi
    - vnc_redistribute_postchange
    - if
    linkageType: ''
    returnType: void
    signature: void vnc_prefix_list_update(struct bgp *bgp)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2095,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2098,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2104,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2111,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2116,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2125,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2130,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2133,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2140,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2143,1
    - Dst: vnc_direct_bgp_reexport_group_afi
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2148,1
    - Dst: vnc_direct_bgp_reexport_group_afi
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2149,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2159,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2161,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2165,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2168,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2173,1
    - Dst: route_map_counter_increment
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2176,1
    - Dst: vnc_direct_bgp_reexport
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2181,1
    - Dst: vnc_direct_bgp_reexport
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2182,1
    - Dst: vnc_redistribute_prechange
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2187,1
    - Dst: vnc_redistribute_postchange
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2188,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2190,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 2
    argNames:
    - bgp
    - unused
    argTypes:
    - struct bgp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 2087
    functionDepth: 18
    functionLinenumber: 2087
    functionLinenumberEnd: 2191
    functionName: vnc_routemap_update
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - vnc_direct_bgp_reexport
    - vnc_redistribute_prechange
    - ALL_LIST_ELEMENTS_RO
    - vnc_direct_bgp_reexport_group_afi
    - route_map_lookup_by_name
    - route_map_counter_increment
    - vnc_redistribute_postchange
    linkageType: ''
    returnType: void
    signature: void vnc_routemap_update(struct bgp *bgp, const char *unused)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_rfapi_cfg_match_byname
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2411,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2414,1
    - Dst: vnc_redistribute_prechange
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2424,1
    - Dst: vnc_redistribute_postchange
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2426,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2433,1
    - Dst: vnc_direct_bgp_del_group
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2438,1
    - Dst: break
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2439,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:2446,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 4
    argNames:
    - vty
    - bgp
    - rfg_name
    - type
    argTypes:
    - struct vty*
    - struct bgp*
    - char*
    - rfapi_group_cfg_type_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2399
    functionDepth: 18
    functionLinenumber: 2399
    functionLinenumberEnd: 2453
    functionName: bgp_rfapi_delete_named_nve_group
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vnc_redistribute_prechange
    - ALL_LIST_ELEMENTS_RO
    - vnc_redistribute_postchange
    - bgp_rfapi_cfg_match_byname
    - vnc_direct_bgp_del_group
    - break
    linkageType: ''
    returnType: int
    signature: "int bgp_rfapi_delete_named_nve_group(struct vty *vty, /* NULL = no
      output */\n\t\t\t\t struct bgp *bgp,\n\t\t\t\t const char *rfg_name,\t/* NULL
      = any */\n\t\t\t\t rfapi_group_cfg_type_t type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3431,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3433,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3435,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3437,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3438,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3439,1
    - Dst: rfapi_l2_group_del
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - bgp
    - rfg
    argTypes:
    - struct vty*
    - struct bgp*
    - struct rfapi_l2_group_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3442
      start: 3426
    functionDepth: 1
    functionLinenumber: 3426
    functionLinenumberEnd: 3442
    functionName: bgp_rfapi_delete_l2_group
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - list_delete
    - rfapi_l2_group_del
    - free
    - XFREE
    - listnode_delete
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: "void bgp_rfapi_delete_l2_group(struct vty *vty, /* NULL = no output
      */\n\t\t\t\t      struct bgp *bgp,\n\t\t\t\t      struct rfapi_l2_group_cfg
      *rfg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_l2_group_lookup_byname
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3454,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3457,1
    - Dst: bgp_rfapi_delete_l2_group
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3464,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3466,1
    - Dst: bgp_rfapi_delete_l2_group
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3468,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3480,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3492,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3493,1
    - Dst: if
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3496,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3496,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3498,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3502,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3507,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3513,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3514,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3518,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3520,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3526,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3533,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3534,1
    - Dst: listnode_add
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3535,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3541,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3548,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3549,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3553,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3555,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3561,1
    - Dst: strtoul
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3569,1
    - Dst: listnode_delete
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3570,1
    - Dst: DEFUN
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3576,1
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3585,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3586,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3601,1
    - Dst: CMD_ERR_NO_MATCH
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3602,1
    - Dst: listnode_lookup
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3606,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3608,1
    - Dst: set_ecom_list
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3613,1
    - Dst: set_ecom_list
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3616,1
    - Dst: bgp_rfapi_get_group_by_lni_label
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3630,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3641,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3645,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - vty
    - bgp
    - rfg_name
    argTypes:
    - struct vty*
    - struct bgp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3651
      start: 3444
    functionDepth: 2
    functionLinenumber: 3444
    functionLinenumberEnd: 3651
    functionName: bgp_rfapi_delete_named_l2_group
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - DEFUN
    - strtoul
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - rfapi_l2_group_lookup_byname
    - VTY_DECLVAR_CONTEXT_SUB
    - listnode_delete
    - bgp_rfapi_get_group_by_lni_label
    - listnode_lookup
    - ALL_LIST_ELEMENTS_RO
    - set_ecom_list
    - listnode_add
    - CMD_ERR_NO_MATCH
    - bgp_rfapi_delete_l2_group
    - list_new
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: "int bgp_rfapi_delete_named_l2_group(struct vty *vty, /* NULL = no
      output */\n\t\t\t\tstruct bgp *bgp,\n\t\t\t\tconst char *rfg_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bgp_rfapi_get_group_by_lni_label
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - bgp
    - logical_net_id
    - label
    argTypes:
    - struct bgp*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3665
      start: 3655
    functionDepth: 0
    functionLinenumber: 3655
    functionLinenumberEnd: 3665
    functionName: bgp_rfapi_get_labellist_by_lni_label
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - bgp_rfapi_get_group_by_lni_label
    linkageType: ''
    returnType: struct list
    signature: "struct list *bgp_rfapi_get_labellist_by_lni_label(struct bgp *bgp,\n\t\t\t\t\t\t
      \ uint32_t logical_net_id,\n\t\t\t\t\t\t  uint32_t label)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_rfapi_get_group_by_lni_label
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3672,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - bgp
    - is_import
    - logical_net_id
    - label
    argTypes:
    - struct bgp*
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3680
      start: 3667
    functionDepth: 0
    functionLinenumber: 3667
    functionLinenumberEnd: 3680
    functionName: bgp_rfapi_get_ecommunity_by_lni_label
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 2
    functionsReached:
    - bgp_rfapi_get_group_by_lni_label
    linkageType: ''
    returnType: struct ecommunity
    signature: "struct ecommunity *\nbgp_rfapi_get_ecommunity_by_lni_label(struct
      bgp *bgp, uint32_t is_import,\n\t\t\t\t      uint32_t logical_net_id, uint32_t
      label)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3684,1
    - Dst: install_node
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3685,1
    - Dst: install_node
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3686,1
    - Dst: install_node
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3687,1
    - Dst: install_default
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3688,1
    - Dst: install_default
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3689,1
    - Dst: install_default
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3690,1
    - Dst: install_default
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3691,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3696,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3697,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3698,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3699,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3700,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3701,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3702,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3703,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3704,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3706,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3707,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3708,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3709,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3710,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3711,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3712,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3714,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3716,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3717,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3718,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3719,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3720,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3721,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3722,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3723,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3725,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3726,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3727,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3728,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3730,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3732,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3734,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3736,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3739,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3740,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3741,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3742,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3743,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3744,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3746,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3747,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3748,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3749,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3750,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3751,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3752,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3753,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3755,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3757,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3759,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3761,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3763,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3765,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3766,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3768,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3769,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3770,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3771,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3772,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3773,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3775,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3777,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3779,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3781,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3783,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3784,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3785,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3786,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3788
      start: 3682
    functionDepth: 1
    functionLinenumber: 3682
    functionLinenumberEnd: 3788
    functionName: bgp_rfapi_cfg_init
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 1
    functionsReached:
    - install_element
    - install_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void bgp_rfapi_cfg_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3795,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3796,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3798,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3799,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3801,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3802,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3806,1
    - Dst: list_new
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3807,1
    - Dst: SET_FLAG
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3811,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct rfapi_rfp_cfg*
    assertStmts:
    - condition: (h)
      pos:
        line_end: 3795
        line_start: 3795
        source_file: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    - condition: (h->nve_groups_sequential)
      pos:
        line_end: 3798
        line_start: 3798
        source_file: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    constantsTouched: []
    func_position:
      end: 3838
      start: 3790
    functionDepth: 1
    functionLinenumber: 3790
    functionLinenumberEnd: 3838
    functionName: bgp_rfapi_cfg_new
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - SET_FLAG
    - list_new
    - assert
    - agg_table_init
    linkageType: ''
    returnType: struct rfapi_cfg
    signature: struct rfapi_cfg *bgp_rfapi_cfg_new(struct rfapi_rfp_cfg *cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3843,1
    - Dst: rfgn_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3845
      start: 3840
    functionDepth: 1
    functionLinenumber: 3840
    functionLinenumberEnd: 3845
    functionName: bgp_rfapi_rfgn_list_delete
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - free
    - rfgn_free
    linkageType: ''
    returnType: void
    signature: void bgp_rfapi_rfgn_list_delete(void *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bgp_rfapi_delete_named_nve_group
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3853,1
    - Dst: bgp_rfapi_delete_named_l2_group
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3854,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3856,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3857,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3860,1
    - Dst: list_delete
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3863,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3866,1
    - Dst: ecommunity_free
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3868,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3869,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3871,1
    - Dst: agg_table_finish
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3872,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:3874,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - bgp
    - h
    argTypes:
    - struct bgp*
    - struct rfapi_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3875
      start: 3847
    functionDepth: 19
    functionLinenumber: 3847
    functionLinenumberEnd: 3875
    functionName: bgp_rfapi_cfg_destroy
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 1
    functionsReached:
    - list_delete
    - bgp_rfapi_delete_named_l2_group
    - agg_table_finish
    - XFREE
    - bgp_rfapi_delete_named_nve_group
    - ecommunity_free
    linkageType: ''
    returnType: void
    signature: void bgp_rfapi_cfg_destroy(struct bgp *bgp, struct rfapi_cfg *h)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bgp_get_default
      Src: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c:4621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - bgp
    argTypes:
    - struct bgp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4625
      start: 4617
    functionDepth: 10
    functionLinenumber: 4617
    functionLinenumberEnd: 4625
    functionName: bgp_rfapi_get_config
    functionSourceFile: /src/frr/bgpd/rfapi/bgp_rfapi_cfg.c
    functionUses: 0
    functionsReached:
    - bgp_get_default
    linkageType: ''
    returnType: struct rfapi_cfg
    signature: struct rfapi_cfg *bgp_rfapi_get_config(struct bgp *bgp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c:26,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - vn
    - un
    argTypes:
    - struct rfapi_ip_addr*
    - struct rfapi_ip_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: rfapi_create_generic
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c
    functionUses: 0
    functionsReached:
    - vnc_zlog_debug_verbose
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *rfapi_create_generic(struct rfapi_ip_addr *vn, struct rfapi_ip_addr
      *un)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - grfd
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 51
    functionName: rfapi_free_generic
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void rfapi_free_generic(void *grfd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c:79,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c:82,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c:103,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rfd1
    - rfd2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 110
    functionName: rfapi_compare_rfds
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_descriptor_rfp_utils.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_SAME
    - IPV4_ADDR_SAME
    linkageType: ''
    returnType: int
    signature: int rfapi_compare_rfds(void *rfd1, void *rfd2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:153,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 160
    functionName: bgp_vnc_config_write_debug
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_debug.c
    functionUses: 0
    functionsReached:
    - array_size
    - vty_out
    linkageType: ''
    returnType: int
    signature: int bgp_vnc_config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:172,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:173,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:175,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:176,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:177,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:178,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:180,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfapi/vnc_debug.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 182
    functionName: vnc_debug_init
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_debug.c
    functionUses: 1
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void vnc_debug_init(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:33,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:34,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:39,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:45,1
    - Dst: agg_node_get
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:51,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - bgp
    - type
    - p
    argTypes:
    - struct bgp*
    - vnc_export_type_t
    - struct prefix*
    assertStmts:
    - condition: (afi == AFI_IP || afi == AFI_IP6)
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/frr/bgpd/rfapi/vnc_export_table.c
    constantsTouched: []
    func_position:
      end: 53
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 53
    functionName: vnc_etn_get
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_table.c
    functionUses: 0
    functionsReached:
    - family2afi
    - agg_node_get
    - assert
    - agg_table_init
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *vnc_etn_get(struct bgp *bgp, vnc_export_type_t type,\n\t\t\t
      \    const struct prefix *p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:65,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:66,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:71,1
    - Dst: agg_table_init
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:77,1
    - Dst: agg_node_lookup
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:83,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - bgp
    - type
    - p
    argTypes:
    - struct bgp*
    - vnc_export_type_t
    - struct prefix*
    assertStmts:
    - condition: (afi == AFI_IP || afi == AFI_IP6)
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/frr/bgpd/rfapi/vnc_export_table.c
    constantsTouched: []
    func_position:
      end: 85
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 85
    functionName: vnc_etn_lookup
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_table.c
    functionUses: 0
    functionsReached:
    - family2afi
    - agg_node_lookup
    - assert
    - agg_table_init
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *vnc_etn_lookup(struct bgp *bgp, vnc_export_type_t
      type,\n\t\t\t\tconst struct prefix *p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vnc_etn_get
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:94,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:95,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:106,1
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:108,1
    - Dst: peer_lock
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:111,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 6
    argNames:
    - bgp
    - etype
    - p
    - peer
    - type
    - subtype
    argTypes:
    - struct bgp*
    - vnc_export_type_t
    - struct prefix*
    - struct peer*
    - uint8_t
    - uint8_t
    assertStmts:
    - condition: (etn)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/frr/bgpd/rfapi/vnc_export_table.c
    constantsTouched: []
    func_position:
      end: 119
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 119
    functionName: vnc_eti_get
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_table.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - vnc_etn_get
    - agg_unlock_node
    - peer_lock
    - assert
    linkageType: ''
    returnType: struct vnc_export_info
    signature: "struct vnc_export_info *vnc_eti_get(struct bgp *bgp, vnc_export_type_t
      etype,\n\t\t\t\t    const struct prefix *p, struct peer *peer,\n\t\t\t\t    uint8_t
      type, uint8_t subtype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:135,1
    - Dst: peer_unlock
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:145,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:147,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - goner
    argTypes:
    - struct vnc_export_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 150
    functionName: vnc_eti_delete
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_table.c
    functionUses: 0
    functionsReached:
    - peer_unlock
    - agg_unlock_node
    - XFREE
    - vnc_zlog_debug_verbose
    linkageType: ''
    returnType: void
    signature: void vnc_eti_delete(struct vnc_export_info *goner)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vnc_etn_lookup
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:161,1
    - Dst: agg_unlock_node
      Src: /src/frr/bgpd/rfapi/vnc_export_table.c:173,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 6
    argNames:
    - bgp
    - etype
    - p
    - peer
    - type
    - subtype
    argTypes:
    - struct bgp*
    - vnc_export_type_t
    - struct prefix*
    - struct peer*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 179
    functionName: vnc_eti_checktimer
    functionSourceFile: /src/frr/bgpd/rfapi/vnc_export_table.c
    functionUses: 0
    functionsReached:
    - vnc_etn_lookup
    - agg_unlock_node
    linkageType: ''
    returnType: struct vnc_export_info
    signature: "struct vnc_export_info *vnc_eti_checktimer(struct bgp *bgp,\n\t\t\t\t\t
      \  vnc_export_type_t etype,\n\t\t\t\t\t   const struct prefix *p,\n\t\t\t\t\t
      \  struct peer *peer, uint8_t type,\n\t\t\t\t\t   uint8_t subtype)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - bgp
    - ea
    - subtlv
    argTypes:
    - struct bgp*
    - struct rfapi_ip_addr*
    - struct bgp_tea_subtlv_remote_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 37
    functionName: rfapi_add_endpoint_address_to_subtlv
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: "void rfapi_add_endpoint_address_to_subtlv(\n\tstruct bgp *bgp, struct
      rfapi_ip_addr *ea,\n\tstruct bgp_tea_subtlv_remote_endpoint *subtlv)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:62,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:67,1
    - Dst: bgp_encap_type_l2tpv3overip_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:68,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:73,1
    - Dst: bgp_encap_type_gre_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:74,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:78,1
    - Dst: bgp_encap_type_transmit_tunnel_endpoint
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:79,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:84,1
    - Dst: bgp_encap_type_ipsec_in_tunnel_mode_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:85,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:90,1
    - Dst: bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:91,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:96,1
    - Dst: bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:97,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:102,1
    - Dst: bgp_encap_type_ip_in_ip_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:103,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:107,1
    - Dst: bgp_encap_type_vxlan_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:108,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:112,1
    - Dst: bgp_encap_type_nvgre_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:113,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:121,1
    - Dst: bgp_encap_type_mpls_in_gre_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:122,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:126,1
    - Dst: bgp_encap_type_vxlan_gpe_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:127,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:131,1
    - Dst: bgp_encap_type_mpls_in_udp_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:132,1
    - Dst: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:136,1
    - Dst: bgp_encap_type_pbb_to_tlv
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:137,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:141,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 65
    argCount: 5
    argNames:
    - bgp
    - ea
    - tto
    - attr
    - always_add
    argTypes:
    - struct bgp*
    - struct rfapi_ip_addr*
    - struct rfapi_tunneltype_option*
    - struct attr*
    - int
    assertStmts:
    - condition: (!"Cannot process BGP_ENCAP_TYPE_RESERVED")
      pos:
        line_end: 140
        line_start: 140
        source_file: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 144
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 144
    functionName: rfapi_tunneltype_option_to_tlv
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 1
    functionsReached:
    - bgp_encap_type_pbb_to_tlv
    - bgp_encap_type_mpls_in_udp_to_tlv
    - bgp_encap_type_l2tpv3overip_to_tlv
    - assert
    - bgp_encap_type_ip_in_ip_to_tlv
    - memset
    - bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode_to_tlv
    - bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode_to_tlv
    - bgp_encap_type_transmit_tunnel_endpoint
    - bgp_encap_type_vxlan_to_tlv
    - _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
    - bgp_encap_type_vxlan_gpe_to_tlv
    - bgp_encap_type_ipsec_in_tunnel_mode_to_tlv
    - bgp_encap_type_nvgre_to_tlv
    - bgp_encap_type_mpls_in_gre_to_tlv
    - bgp_encap_type_gre_to_tlv
    linkageType: ''
    returnType: bgp_encap_types
    signature: "bgp_encap_types rfapi_tunneltype_option_to_tlv(struct bgp *bgp, struct
      rfapi_ip_addr *ea,\n\t\t\t       struct rfapi_tunneltype_option *tto,\n\t\t\t
      \      struct attr *attr, int always_add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ttype
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 58
    functionName: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _RTTO_MAYBE_ADD_ENDPOINT_ADDRESS(ttype)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:159,1
    - Dst: tlv_to_bgp_encap_type_l2tpv3overip
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:166,1
    - Dst: tlv_to_bgp_encap_type_gre
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:171,1
    - Dst: tlv_to_bgp_encap_type_transmit_tunnel_endpoint
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:175,1
    - Dst: tlv_to_bgp_encap_type_ipsec_in_tunnel_mode
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:180,1
    - Dst: tlv_to_bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:185,1
    - Dst: tlv_to_bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:190,1
    - Dst: tlv_to_bgp_encap_type_ip_in_ip
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:195,1
    - Dst: tlv_to_bgp_encap_type_vxlan
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:199,1
    - Dst: tlv_to_bgp_encap_type_nvgre
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:203,1
    - Dst: tlv_to_bgp_encap_type_mpls
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:207,1
    - Dst: tlv_to_bgp_encap_type_mpls_in_gre
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:211,1
    - Dst: tlv_to_bgp_encap_type_vxlan_gpe
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:216,1
    - Dst: tlv_to_bgp_encap_type_mpls_in_udp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:221,1
    - Dst: tlv_to_bgp_encap_type_pbb
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:226,1
    - Dst: vnc_zlog_debug_verbose
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:230,1
    - Dst: XFREE
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:236,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 239
    functionName: rfapi_encap_tlv_to_un_option
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 3
    functionsReached:
    - tlv_to_bgp_encap_type_l2tpv3overip
    - XCALLOC
    - tlv_to_bgp_encap_type_ip_in_ip
    - tlv_to_bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
    - tlv_to_bgp_encap_type_nvgre
    - vnc_zlog_debug_verbose
    - tlv_to_bgp_encap_type_vxlan_gpe
    - tlv_to_bgp_encap_type_mpls_in_udp
    - tlv_to_bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
    - tlv_to_bgp_encap_type_vxlan
    - tlv_to_bgp_encap_type_mpls
    - tlv_to_bgp_encap_type_pbb
    - tlv_to_bgp_encap_type_ipsec_in_tunnel_mode
    - tlv_to_bgp_encap_type_mpls_in_gre
    - tlv_to_bgp_encap_type_transmit_tunnel_endpoint
    - XFREE
    - tlv_to_bgp_encap_type_gre
    linkageType: ''
    returnType: struct rfapi_un_option
    signature: struct rfapi_un_option *rfapi_encap_tlv_to_un_option(struct attr *attr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:254,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:259,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:261,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - column_offset
    - st
    argTypes:
    - void*
    - int
    - struct bgp_tea_subtlv_encap_l2tpv3_over_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 265
    functionName: subtlv_print_encap_l2tpv3_over_ip
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void subtlv_print_encap_l2tpv3_over_ip(\n\tvoid *stream, int column_offset,\n\tstruct
      bgp_tea_subtlv_encap_l2tpv3_over_ip *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:275,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:280,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - column_offset
    - st
    argTypes:
    - void*
    - int
    - struct bgp_tea_subtlv_encap_gre_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 284
    functionName: subtlv_print_encap_gre
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void subtlv_print_encap_gre(void *stream, int column_offset,\n\t\t\t\t
      \  struct bgp_tea_subtlv_encap_gre_key *st)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:294,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:299,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:302,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:306,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:309,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - stream
    - column_offset
    - st
    argTypes:
    - void*
    - int
    - struct bgp_tea_subtlv_encap_pbb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 312
    functionName: subtlv_print_encap_pbb
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void subtlv_print_encap_pbb(void *stream, int column_offset,\n\t\t\t\t
      \  struct bgp_tea_subtlv_encap_pbb *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:322,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:327,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - column_offset
    - st
    argTypes:
    - void*
    - int
    - struct bgp_tea_subtlv_proto_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 331
    functionName: subtlv_print_proto_type
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void subtlv_print_proto_type(void *stream, int column_offset,\n\t\t\t\t
      \   struct bgp_tea_subtlv_proto_type *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:341,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:346,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - column_offset
    - st
    argTypes:
    - void*
    - int
    - struct bgp_tea_subtlv_color*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 349
    functionName: subtlv_print_color
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void subtlv_print_color(void *stream, int column_offset,\n\t\t\t       struct
      bgp_tea_subtlv_color *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:359,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:364,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:365,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - column_offset
    - st
    argTypes:
    - void*
    - int
    - struct bgp_tea_subtlv_ipsec_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 369
    functionName: subtlv_print_ipsec_ta
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void subtlv_print_ipsec_ta(void *stream, int column_offset,\n\t\t\t\t
      \ struct bgp_tea_subtlv_ipsec_ta *st)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:385,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:390,1
    - Dst: subtlv_print_encap_l2tpv3_over_ip
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:392,1
    - Dst: subtlv_print_proto_type
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:394,1
    - Dst: subtlv_print_color
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_l2tpv3_over_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 396
    functionName: print_encap_type_l2tpv3overip
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - subtlv_print_proto_type
    - subtlv_print_color
    - fp
    - subtlv_print_encap_l2tpv3_over_ip
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_l2tpv3overip(void *stream, int column_offset,\n\t\t\t
      \     struct bgp_encap_type_l2tpv3_over_ip *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:407,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:412,1
    - Dst: subtlv_print_encap_gre
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:414,1
    - Dst: subtlv_print_proto_type
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:415,1
    - Dst: subtlv_print_color
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_gre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 398
    functionDepth: 3
    functionLinenumber: 398
    functionLinenumberEnd: 417
    functionName: print_encap_type_gre
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - subtlv_print_proto_type
    - subtlv_print_color
    - subtlv_print_encap_gre
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_gre(void *stream, int column_offset,\n\t\t\t\t
      struct bgp_encap_type_gre *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:428,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:433,1
    - Dst: subtlv_print_proto_type
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:435,1
    - Dst: subtlv_print_color
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_ip_in_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 419
    functionDepth: 3
    functionLinenumber: 419
    functionLinenumberEnd: 437
    functionName: print_encap_type_ip_in_ip
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - subtlv_print_color
    - subtlv_print_proto_type
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_ip_in_ip(void *stream, int column_offset,\n\t\t\t\t
      \     struct bgp_encap_type_ip_in_ip *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:449,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_transmit_tunnel_endpoint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 457
    functionName: print_encap_type_transmit_tunnel_endpoint
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_transmit_tunnel_endpoint(\n\tvoid *stream, int
      column_offset,\n\tstruct bgp_encap_type_transmit_tunnel_endpoint *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:469,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:474,1
    - Dst: subtlv_print_ipsec_ta
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_ipsec_in_tunnel_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 459
    functionDepth: 3
    functionLinenumber: 459
    functionLinenumberEnd: 476
    functionName: print_encap_type_ipsec_in_tunnel_mode
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - subtlv_print_ipsec_ta
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_ipsec_in_tunnel_mode(\n\tvoid *stream, int column_offset,\n\tstruct
      bgp_encap_type_ipsec_in_tunnel_mode *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:488,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:493,1
    - Dst: subtlv_print_ipsec_ta
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:495,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 496
    functionName: print_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - subtlv_print_ipsec_ta
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode(\n\tvoid
      *stream, int column_offset,\n\tstruct bgp_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
      *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:508,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:513,1
    - Dst: subtlv_print_ipsec_ta
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 516
    functionName: print_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - subtlv_print_ipsec_ta
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode(\n\tvoid
      *stream, int column_offset,\n\tstruct bgp_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
      *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:528,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:533,1
    - Dst: subtlv_print_encap_pbb
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:535,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_pbb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 536
    functionName: print_encap_type_pbb
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - subtlv_print_encap_pbb
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_pbb(void *stream, int column_offset,\n\t\t\t\t
      struct bgp_encap_type_pbb *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:548,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_vxlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 539
    functionDepth: 2
    functionLinenumber: 539
    functionLinenumberEnd: 556
    functionName: print_encap_type_vxlan
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_vxlan(void *stream, int column_offset,\n\t\t\t\t
      \  struct bgp_encap_type_vxlan *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:568,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_nvgre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 576
    functionName: print_encap_type_nvgre
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_nvgre(void *stream, int column_offset,\n\t\t\t\t
      \  struct bgp_encap_type_nvgre *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:587,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_mpls*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 595
    functionName: print_encap_type_mpls
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_mpls(void *stream, int column_offset,\n\t\t\t\t
      \ struct bgp_encap_type_mpls *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:606,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_mpls_in_gre*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 614
    functionName: print_encap_type_mpls_in_gre
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_mpls_in_gre(void *stream, int column_offset,\n\t\t\t\t\t
      struct bgp_encap_type_mpls_in_gre *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:625,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_vxlan_gpe*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 633
    functionName: print_encap_type_vxlan_gpe
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_vxlan_gpe(void *stream, int column_offset,\n\t\t\t\t
      \      struct bgp_encap_type_vxlan_gpe *bet)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfapiStream2Vty
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:644,1
    - Dst: fp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:649,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - column_offset
    - bet
    argTypes:
    - void*
    - int
    - struct bgp_encap_type_mpls_in_udp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 635
    functionDepth: 2
    functionLinenumber: 635
    functionLinenumberEnd: 652
    functionName: print_encap_type_mpls_in_udp
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 0
    functionsReached:
    - fp
    - rfapiStream2Vty
    linkageType: ''
    returnType: void
    signature: "void print_encap_type_mpls_in_udp(void *stream, int column_offset,\n\t\t\t\t\t
      struct bgp_encap_type_mpls_in_udp *bet)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: print_encap_type_l2tpv3overip
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:659,1
    - Dst: print_encap_type_gre
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:664,1
    - Dst: print_encap_type_transmit_tunnel_endpoint
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:668,1
    - Dst: print_encap_type_ipsec_in_tunnel_mode
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:674,1
    - Dst: print_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:679,1
    - Dst: print_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:684,1
    - Dst: print_encap_type_ip_in_ip
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:689,1
    - Dst: print_encap_type_vxlan
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:694,1
    - Dst: print_encap_type_nvgre
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:699,1
    - Dst: print_encap_type_mpls
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:704,1
    - Dst: print_encap_type_mpls_in_gre
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:709,1
    - Dst: print_encap_type_vxlan_gpe
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:714,1
    - Dst: print_encap_type_mpls_in_udp
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:719,1
    - Dst: print_encap_type_pbb
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:724,1
    - Dst: assert
      Src: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c:728,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 3
    argNames:
    - stream
    - column_offset
    - tto
    argTypes:
    - void*
    - int
    - struct rfapi_tunneltype_option*
    assertStmts:
    - condition: (!"Cannot process BGP_ENCAP_TYPE_RESERVED")
      pos:
        line_end: 727
        line_start: 727
        source_file: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    constantsTouched: []
    func_position:
      end: 730
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 730
    functionName: rfapi_print_tunneltype_option
    functionSourceFile: /src/frr/bgpd/rfapi/rfapi_encap_tlv.c
    functionUses: 2
    functionsReached:
    - print_encap_type_mpls
    - print_encap_type_mpls_in_udp
    - print_encap_type_ipsec_in_tunnel_mode
    - print_encap_type_pbb
    - print_encap_type_gre
    - print_encap_type_ip_in_ip_tunnel_with_ipsec_transport_mode
    - print_encap_type_transmit_tunnel_endpoint
    - print_encap_type_ip_in_ip
    - print_encap_type_vxlan
    - print_encap_type_nvgre
    - print_encap_type_l2tpv3overip
    - print_encap_type_mpls_in_ip_tunnel_with_ipsec_transport_mode
    - print_encap_type_mpls_in_gre
    - print_encap_type_vxlan_gpe
    - assert
    linkageType: ''
    returnType: void
    signature: "void rfapi_print_tunneltype_option(void *stream, int column_offset,\n\t\t\t\t
      \  struct rfapi_tunneltype_option *tto)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/bgpd/rfp-example/rfptest/rfptest.c:18,1
    - Dst: exit
      Src: /src/frr/bgpd/rfp-example/rfptest/rfptest.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 20
    functionName: main
    functionSourceFile: /src/frr/bgpd/rfp-example/rfptest/rfptest.c
    functionUses: 11
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:104,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:105,1
    - Dst: install_element
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 107
    functionName: rfp_vty_install
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void rfp_vty_install(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_free_next_hop_list
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - next_hops
    - userdata
    argTypes:
    - struct rfapi_next_hop_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 154
    functionName: rfp_response_cb
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 0
    functionsReached:
    - rfapi_free_next_hop_list
    linkageType: ''
    returnType: void
    signature: "void rfp_response_cb(struct rfapi_next_hop_entry *next_hops,\n\t\t\t
      \   void *userdata)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfapi_free_next_hop_list
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - next_hops
    - userdata
    argTypes:
    - struct rfapi_next_hop_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 190
    functionName: rfp_local_cb
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 0
    functionsReached:
    - rfapi_free_next_hop_list
    linkageType: ''
    returnType: void
    signature: void rfp_local_cb(struct rfapi_next_hop_entry *next_hops, void *userdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pHandle
    - reason
    argTypes:
    - rfapi_handle
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 211
    functionName: rfp_close_cb
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rfp_close_cb(rfapi_handle pHandle, int reason)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:234,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:236,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:237,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:241,1
    - Dst: vty_out
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - vty
    - rfp_start_val
    argTypes:
    - struct vty*
    - void*
    assertStmts:
    - condition: (rfp_start_val != NULL)
      pos:
        line_end: 233
        line_start: 233
        source_file: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    constantsTouched: []
    func_position:
      end: 250
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 250
    functionName: rfp_cfg_write_cb
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 0
    functionsReached:
    - vty_out
    - assert
    linkageType: ''
    returnType: int
    signature: int rfp_cfg_write_cb(struct vty *vty, void *rfp_start_val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:277,1
    - Dst: rfp_vty_install
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - master
    - cfgp
    - cbmp
    argTypes:
    - struct event_loop*
    - struct rfapi_rfp_cfg**
    - struct rfapi_rfp_cb_methods**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 306
    functionName: rfp_start
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 1
    functionsReached:
    - rfp_vty_install
    - memset
    linkageType: ''
    returnType: void
    signature: "void *rfp_start(struct event_loop *master, struct rfapi_rfp_cfg **cfgp,\n\t\tstruct
      rfapi_rfp_cb_methods **cbmp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/bgpd/rfp-example/librfp/rfp_example.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rfp_start_val
    argTypes:
    - void*
    assertStmts:
    - condition: (rfp_start_val != NULL)
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    constantsTouched: []
    func_position:
      end: 325
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 325
    functionName: rfp_stop
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void rfp_stop(void *rfp_start_val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: rfp_clear_vnc_nve_all
    functionSourceFile: /src/frr/bgpd/rfp-example/librfp/rfp_example.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rfp_clear_vnc_nve_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:37,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_objects.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - obj_length
    - object_class
    - object_type
    - tlv_list
    argTypes:
    - uint8_t
    - enum pcep_object_classes
    - enum pcep_object_types
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 47
    functionName: pcep_obj_create_common_with_tlvs
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_obj_create_common_with_tlvs(\n\tuint8_t
      obj_length, enum pcep_object_classes object_class,\n\tenum pcep_object_types
      object_type, double_linked_list *tlv_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - obj_length
    - object_class
    - object_type
    argTypes:
    - uint8_t
    - enum pcep_object_classes
    - enum pcep_object_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: pcep_obj_create_common
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common_with_tlvs
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_obj_create_common(uint8_t obj_length,\n\t\t
      \      enum pcep_object_classes object_class,\n\t\t       enum pcep_object_types
      object_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - keepalive
    - deadtimer
    - sid
    - tlv_list
    argTypes:
    - uint8_t
    - uint8_t
    - uint8_t
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 79
    functionName: pcep_obj_create_open
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common_with_tlvs
    linkageType: ''
    returnType: struct pcep_object_open
    signature: "struct pcep_object_open *pcep_obj_create_open(uint8_t keepalive,\n\t\t\t\t\t
      \     uint8_t deadtimer, uint8_t sid,\n\t\t\t\t\t      double_linked_list *tlv_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects.c:87,1
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - priority
    - flag_r
    - flag_b
    - flag_s
    - flag_of
    - reqid
    - tlv_list
    argTypes:
    - uint8_t
    - bool
    - bool
    - bool
    - bool
    - uint32_t
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 107
    functionName: pcep_obj_create_rp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common_with_tlvs
    - pcep_log
    linkageType: ''
    returnType: struct pcep_object_rp
    signature: "struct pcep_object_rp *pcep_obj_create_rp(uint8_t priority, bool flag_r,\n\t\t\t\t\t
      \ bool flag_b, bool flag_s,\n\t\t\t\t\t  bool flag_of, uint32_t reqid,\n\t\t\t\t\t
      \ double_linked_list *tlv_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - notification_type
    - notification_value
    argTypes:
    - enum pcep_notification_types
    - enum pcep_notification_values
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 122
    functionName: pcep_obj_create_notify
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_notify
    signature: "struct pcep_object_notify *\npcep_obj_create_notify(enum pcep_notification_types
      notification_type,\n\t\t       enum pcep_notification_values notification_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_nopath_vector
      Src: /src/frr/pceplib/pcep_msg_objects.c:129,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects.c:130,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:131,1
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ni
    - flag_c
    - error_code
    argTypes:
    - uint8_t
    - bool
    - enum pcep_nopath_tlv_err_codes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 143
    functionName: pcep_obj_create_nopath
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_create_nopath_vector
    - dll_append
    - dll_initialize
    - pcep_obj_create_common_with_tlvs
    linkageType: ''
    returnType: struct pcep_object_nopath
    signature: "struct pcep_object_nopath *\npcep_obj_create_nopath(uint8_t ni, bool
      flag_c,\n\t\t       enum pcep_nopath_tlv_err_codes error_code)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - r_flag
    - association_type
    - association_id
    - src
    argTypes:
    - bool
    - uint16_t
    - uint16_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 145
    functionDepth: 3
    functionLinenumber: 145
    functionLinenumberEnd: 161
    functionName: pcep_obj_create_association_ipv4
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_association_ipv4
    signature: "struct pcep_object_association_ipv4 *\npcep_obj_create_association_ipv4(bool
      r_flag, uint16_t association_type,\n\t\t\t\t uint16_t association_id, struct
      in_addr src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - r_flag
    - association_type
    - association_id
    - src
    argTypes:
    - bool
    - uint16_t
    - uint16_t
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 178
    functionName: pcep_obj_create_association_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_association_ipv6
    signature: "struct pcep_object_association_ipv6 *\npcep_obj_create_association_ipv6(bool
      r_flag, uint16_t association_type,\n\t\t\t\t uint16_t association_id, struct
      in6_addr src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - src_ipv4
    - dst_ipv4
    argTypes:
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 196
    functionName: pcep_obj_create_endpoint_ipv4
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_endpoints_ipv4
    signature: "struct pcep_object_endpoints_ipv4 *\npcep_obj_create_endpoint_ipv4(const
      struct in_addr *src_ipv4,\n\t\t\t      const struct in_addr *dst_ipv4)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:207,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:211,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - src_ipv6
    - dst_ipv6
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 215
    functionName: pcep_obj_create_endpoint_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_endpoints_ipv6
    signature: "struct pcep_object_endpoints_ipv6 *\npcep_obj_create_endpoint_ipv6(const
      struct in6_addr *src_ipv6,\n\t\t\t      const struct in6_addr *dst_ipv6)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bandwidth
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 217
    functionDepth: 3
    functionLinenumber: 217
    functionLinenumberEnd: 227
    functionName: pcep_obj_create_bandwidth
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_bandwidth
    signature: struct pcep_object_bandwidth *pcep_obj_create_bandwidth(float bandwidth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - type
    - flag_b
    - flag_c
    - value
    argTypes:
    - enum pcep_metric_types
    - bool
    - bool
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 244
    functionName: pcep_obj_create_metric
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_metric
    signature: "struct pcep_object_metric *pcep_obj_create_metric(enum pcep_metric_types
      type,\n\t\t\t\t\t\t  bool flag_b, bool flag_c,\n\t\t\t\t\t\t  float value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - exclude_any
    - include_any
    - include_all
    - setup_priority
    - holding_priority
    - flag_local_protection
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - uint8_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 246
    functionDepth: 3
    functionLinenumber: 246
    functionLinenumberEnd: 264
    functionName: pcep_obj_create_lspa
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_lspa
    signature: "struct pcep_object_lspa *\npcep_obj_create_lspa(uint32_t exclude_any,
      uint32_t include_any,\n\t\t     uint32_t include_all, uint8_t setup_priority,\n\t\t
      \    uint8_t holding_priority, bool flag_local_protection)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - srlg
    - node
    - link
    - request_id_list
    argTypes:
    - bool
    - bool
    - bool
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 285
    functionName: pcep_obj_create_svec
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_svec
    signature: "struct pcep_object_svec *\npcep_obj_create_svec(bool srlg, bool node,
      bool link,\n\t\t     double_linked_list *request_id_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - error_type
    - error_value
    argTypes:
    - enum pcep_error_type
    - enum pcep_error_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 287
    functionDepth: 3
    functionLinenumber: 287
    functionLinenumberEnd: 300
    functionName: pcep_obj_create_error
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_error
    signature: "struct pcep_object_error *\npcep_obj_create_error(enum pcep_error_type
      error_type,\n\t\t      enum pcep_error_value error_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - reason
    argTypes:
    - enum pcep_close_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 302
    functionDepth: 3
    functionLinenumber: 302
    functionLinenumberEnd: 312
    functionName: pcep_obj_create_close
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_close
    signature: struct pcep_object_close *pcep_obj_create_close(enum pcep_close_reason
      reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - lsp_remove
    - srp_id_number
    - tlv_list
    argTypes:
    - bool
    - uint32_t
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 327
    functionName: pcep_obj_create_srp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common_with_tlvs
    linkageType: ''
    returnType: struct pcep_object_srp
    signature: "struct pcep_object_srp *pcep_obj_create_srp(bool lsp_remove,\n\t\t\t\t\t
      \   uint32_t srp_id_number,\n\t\t\t\t\t    double_linked_list *tlv_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects.c:336,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects.c:345,1
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:353,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 8
    argNames:
    - plsp_id
    - status
    - c_flag
    - a_flag
    - r_flag
    - s_flag
    - d_flag
    - tlv_list
    argTypes:
    - uint32_t
    - enum pcep_lsp_operational_status
    - bool
    - bool
    - bool
    - bool
    - bool
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 366
    functionName: pcep_obj_create_lsp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common_with_tlvs
    - pcep_log
    linkageType: ''
    returnType: struct pcep_object_lsp
    signature: "struct pcep_object_lsp *\npcep_obj_create_lsp(uint32_t plsp_id, enum
      pcep_lsp_operational_status status,\n\t\t    bool c_flag, bool a_flag, bool
      r_flag, bool s_flag,\n\t\t    bool d_flag, double_linked_list *tlv_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - enterprise_number
    - enterprise_spec_info
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 381
    functionName: pcep_obj_create_vendor_info
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_vendor_info
    signature: "struct pcep_object_vendor_info *\npcep_obj_create_vendor_info(uint32_t
      enterprise_number,\n\t\t\t    uint32_t enterprise_spec_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - flag_i
    - flag_m
    - flag_t
    argTypes:
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 396
    functionName: pcep_obj_create_inter_layer
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_inter_layer
    signature: 'struct pcep_object_inter_layer *

      pcep_obj_create_inter_layer(bool flag_i, bool flag_m, bool flag_t)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - switch_layer_rows
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 398
    functionDepth: 3
    functionLinenumber: 398
    functionLinenumberEnd: 410
    functionName: pcep_obj_create_switch_layer
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_switch_layer
    signature: 'struct pcep_object_switch_layer *

      pcep_obj_create_switch_layer(double_linked_list *switch_layer_rows)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - sw_cap
    - encoding
    argTypes:
    - enum pcep_switching_capability
    - enum pcep_lsp_encoding_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 412
    functionDepth: 3
    functionLinenumber: 412
    functionLinenumberEnd: 426
    functionName: pcep_obj_create_req_adap_cap
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_req_adap_cap
    signature: "struct pcep_object_req_adap_cap *\npcep_obj_create_req_adap_cap(enum
      pcep_switching_capability sw_cap,\n\t\t\t     enum pcep_lsp_encoding_type encoding)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - sw_cap
    - encoding
    - tlv_list
    argTypes:
    - enum pcep_switching_capability
    - enum pcep_lsp_encoding_type
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 444
    functionName: pcep_obj_create_server_indication
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common_with_tlvs
    linkageType: ''
    returnType: struct pcep_object_server_indication
    signature: "struct pcep_object_server_indication *\npcep_obj_create_server_indication(enum
      pcep_switching_capability sw_cap,\n\t\t\t\t  enum pcep_lsp_encoding_type encoding,\n\t\t\t\t
      \ double_linked_list *tlv_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common_with_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - of_code
    - tlv_list
    argTypes:
    - uint16_t
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 459
    functionName: pcep_obj_create_objective_function
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common_with_tlvs
    linkageType: ''
    returnType: struct pcep_object_objective_function
    signature: "struct pcep_object_objective_function *\npcep_obj_create_objective_function(uint16_t
      of_code,\n\t\t\t\t   double_linked_list *tlv_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ero_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 462
    functionDepth: 3
    functionLinenumber: 462
    functionLinenumberEnd: 471
    functionName: pcep_obj_create_ero
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_ro
    signature: struct pcep_object_ro *pcep_obj_create_ero(double_linked_list *ero_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iro_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 474
    functionDepth: 3
    functionLinenumber: 474
    functionLinenumberEnd: 483
    functionName: pcep_obj_create_iro
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_ro
    signature: struct pcep_object_ro *pcep_obj_create_iro(double_linked_list *iro_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rro_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 486
    functionDepth: 3
    functionLinenumber: 486
    functionLinenumberEnd: 495
    functionName: pcep_obj_create_rro
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_common
    linkageType: ''
    returnType: struct pcep_object_ro
    signature: struct pcep_object_ro *pcep_obj_create_rro(double_linked_list *rro_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:507,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_objects.c:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - subobj_size
    - ro_subobj_type
    - flag_subobj_loose_hop
    argTypes:
    - uint8_t
    - enum pcep_ro_subobj_types
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 513
    functionName: pcep_obj_create_ro_subobj_common
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: struct pcep_object_ro_subobj
    signature: "struct pcep_object_ro_subobj *\npcep_obj_create_ro_subobj_common(uint8_t
      subobj_size,\n\t\t\t\t enum pcep_ro_subobj_types ro_subobj_type,\n\t\t\t\t bool
      flag_subobj_loose_hop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - loose_hop
    - rro_ipv4
    - prefix_length
    - flag_local_prot
    argTypes:
    - bool
    - struct in_addr*
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 515
    functionDepth: 2
    functionLinenumber: 515
    functionLinenumberEnd: 532
    functionName: pcep_obj_create_ro_subobj_ipv4
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_common
    linkageType: ''
    returnType: struct pcep_ro_subobj_ipv4
    signature: "struct pcep_ro_subobj_ipv4 *\npcep_obj_create_ro_subobj_ipv4(bool
      loose_hop, const struct in_addr *rro_ipv4,\n\t\t\t       uint8_t prefix_length,
      bool flag_local_prot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:543,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - loose_hop
    - rro_ipv6
    - prefix_length
    - flag_local_prot
    argTypes:
    - bool
    - struct in6_addr*
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 551
    functionName: pcep_obj_create_ro_subobj_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_common
    - memcpy
    linkageType: ''
    returnType: struct pcep_ro_subobj_ipv6
    signature: "struct pcep_ro_subobj_ipv6 *\npcep_obj_create_ro_subobj_ipv6(bool
      loose_hop, const struct in6_addr *rro_ipv6,\n\t\t\t       uint8_t prefix_length,
      bool flag_local_prot)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - router_id
    - if_id
    argTypes:
    - struct in_addr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 553
    functionDepth: 2
    functionLinenumber: 553
    functionLinenumberEnd: 568
    functionName: pcep_obj_create_ro_subobj_unnum
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_common
    linkageType: ''
    returnType: struct pcep_ro_subobj_unnum
    signature: 'struct pcep_ro_subobj_unnum *

      pcep_obj_create_ro_subobj_unnum(struct in_addr *router_id, uint32_t if_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - flag_global_label
    - class_type
    - label
    argTypes:
    - bool
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 570
    functionDepth: 2
    functionLinenumber: 570
    functionLinenumberEnd: 583
    functionName: pcep_obj_create_ro_subobj_32label
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_common
    linkageType: ''
    returnType: struct pcep_ro_subobj_32label
    signature: "struct pcep_ro_subobj_32label *\npcep_obj_create_ro_subobj_32label(bool
      flag_global_label, uint8_t class_type,\n\t\t\t\t  uint32_t label)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - asn
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 585
    functionDepth: 2
    functionLinenumber: 585
    functionLinenumberEnd: 594
    functionName: pcep_obj_create_ro_subobj_asn
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_common
    linkageType: ''
    returnType: struct pcep_ro_subobj_asn
    signature: struct pcep_ro_subobj_asn *pcep_obj_create_ro_subobj_asn(uint16_t asn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:603,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 6
    argNames:
    - nai_type
    - loose_hop
    - f_flag
    - s_flag
    - c_flag_in
    - m_flag_in
    argTypes:
    - enum pcep_sr_subobj_nai
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 626
    functionName: pcep_obj_create_ro_subobj_sr_common
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_common
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *\npcep_obj_create_ro_subobj_sr_common(enum
      pcep_sr_subobj_nai nai_type,\n\t\t\t\t    bool loose_hop, bool f_flag, bool
      s_flag,\n\t\t\t\t    bool c_flag_in, bool m_flag_in)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - loose_hop
    - sid
    - c_flag
    - m_flag
    argTypes:
    - bool
    - uint32_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 628
    functionDepth: 3
    functionLinenumber: 628
    functionLinenumberEnd: 642
    functionName: pcep_obj_create_ro_subobj_sr_nonai
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_common
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *pcep_obj_create_ro_subobj_sr_nonai(bool
      loose_hop,\n\t\t\t\t\t\t\t     uint32_t sid,\n\t\t\t\t\t\t\t     bool c_flag,\n\t\t\t\t\t\t\t
      \    bool m_flag)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:656,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects.c:663,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:669,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:671,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - loose_hop
    - sid_absent
    - c_flag
    - m_flag
    - sid
    - ipv4_node_id
    argTypes:
    - bool
    - bool
    - bool
    - bool
    - uint32_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 644
    functionDepth: 3
    functionLinenumber: 644
    functionLinenumberEnd: 674
    functionName: pcep_obj_create_ro_subobj_sr_ipv4_node
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_common
    - dll_initialize
    - pceplib_malloc
    - dll_append
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *\npcep_obj_create_ro_subobj_sr_ipv4_node(bool
      loose_hop, bool sid_absent,\n\t\t\t\t       bool c_flag, bool m_flag, uint32_t
      sid,\n\t\t\t\t       struct in_addr *ipv4_node_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:688,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects.c:695,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:697,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:698,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:699,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - loose_hop
    - sid_absent
    - c_flag
    - m_flag
    - sid
    - ipv6_node_id
    argTypes:
    - bool
    - bool
    - bool
    - bool
    - uint32_t
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 676
    functionDepth: 3
    functionLinenumber: 676
    functionLinenumberEnd: 702
    functionName: pcep_obj_create_ro_subobj_sr_ipv6_node
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_common
    - dll_append
    - dll_initialize
    - pceplib_malloc
    - memcpy
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *\npcep_obj_create_ro_subobj_sr_ipv6_node(bool
      loose_hop, bool sid_absent,\n\t\t\t\t       bool c_flag, bool m_flag, uint32_t
      sid,\n\t\t\t\t       struct in6_addr *ipv6_node_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:715,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects.c:722,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:724,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:726,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:729,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:730,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 7
    argNames:
    - loose_hop
    - sid_absent
    - c_flag
    - m_flag
    - sid
    - local_ipv4
    - remote_ipv4
    argTypes:
    - bool
    - bool
    - bool
    - bool
    - uint32_t
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 704
    functionDepth: 3
    functionLinenumber: 704
    functionLinenumberEnd: 733
    functionName: pcep_obj_create_ro_subobj_sr_ipv4_adj
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_common
    - dll_initialize
    - pceplib_malloc
    - dll_append
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *pcep_obj_create_ro_subobj_sr_ipv4_adj(\n\tbool
      loose_hop, bool sid_absent, bool c_flag, bool m_flag, uint32_t sid,\n\tstruct
      in_addr *local_ipv4, struct in_addr *remote_ipv4)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:746,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects.c:753,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:755,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:757,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:758,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:759,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:760,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:761,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 7
    argNames:
    - loose_hop
    - sid_absent
    - c_flag
    - m_flag
    - sid
    - local_ipv6
    - remote_ipv6
    argTypes:
    - bool
    - bool
    - bool
    - bool
    - uint32_t
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 735
    functionDepth: 3
    functionLinenumber: 735
    functionLinenumberEnd: 764
    functionName: pcep_obj_create_ro_subobj_sr_ipv6_adj
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_common
    - dll_append
    - dll_initialize
    - pceplib_malloc
    - memcpy
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *pcep_obj_create_ro_subobj_sr_ipv6_adj(\n\tbool
      loose_hop, bool sid_absent, bool c_flag, bool m_flag, uint32_t sid,\n\tstruct
      in6_addr *local_ipv6, struct in6_addr *remote_ipv6)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:774,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects.c:782,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:784,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:786,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:789,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:791,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:794,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:796,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:799,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:801,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 9
    argNames:
    - loose_hop
    - sid_absent
    - c_flag
    - m_flag
    - sid
    - local_node_id
    - local_if_id
    - remote_node_id
    - remote_if_id
    argTypes:
    - bool
    - bool
    - bool
    - bool
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 766
    functionDepth: 3
    functionLinenumber: 766
    functionLinenumberEnd: 804
    functionName: pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_common
    - dll_initialize
    - pceplib_malloc
    - dll_append
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj(\n\tbool
      loose_hop, bool sid_absent, bool c_flag, bool m_flag, uint32_t sid,\n\tuint32_t
      local_node_id, uint32_t local_if_id, uint32_t remote_node_id,\n\tuint32_t remote_if_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_common
      Src: /src/frr/pceplib/pcep_msg_objects.c:818,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects.c:825,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:827,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:828,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:829,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:832,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:834,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:837,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects.c:838,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:839,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects.c:842,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects.c:844,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 9
    argNames:
    - loose_hop
    - sid_absent
    - c_flag
    - m_flag
    - sid
    - local_ipv6
    - local_if_id
    - remote_ipv6
    - remote_if_id
    argTypes:
    - bool
    - bool
    - bool
    - bool
    - uint32_t
    - struct in6_addr*
    - uint32_t
    - struct in6_addr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 806
    functionDepth: 3
    functionLinenumber: 806
    functionLinenumberEnd: 847
    functionName: pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_common
    - dll_append
    - dll_initialize
    - pceplib_malloc
    - memcpy
    linkageType: ''
    returnType: struct pcep_ro_subobj_sr
    signature: "struct pcep_ro_subobj_sr *pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj(\n\tbool
      loose_hop, bool sid_absent, bool c_flag, bool m_flag, uint32_t sid,\n\tstruct
      in6_addr *local_ipv6, uint32_t local_if_id,\n\tstruct in6_addr *remote_ipv6,
      uint32_t remote_if_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list_entry
    - new_entry
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: pointer_compare_function
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pointer_compare_function(void *list_entry, void *new_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:37,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - func_ptr
    argTypes:
    - ordered_compare_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 44
    functionName: ordered_list_initialize
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: ordered_list_handle
    signature: ordered_list_handle *ordered_list_initialize(ordered_compare_function
      func_ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:62,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - handle
    argTypes:
    - ordered_list_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 67
    functionName: ordered_list_destroy
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    linkageType: ''
    returnType: void
    signature: void ordered_list_destroy(ordered_list_handle *handle)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:74,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:83,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:84,1
    - Dst: ordered_list_handle*::compare_function
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:100,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - handle
    - data
    argTypes:
    - ordered_list_handle*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 123
    functionName: ordered_list_add_node
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - ordered_list_handle*::compare_function
    - pceplib_malloc
    - pcep_log
    - memset
    linkageType: ''
    returnType: ordered_list_node
    signature: "ordered_list_node *ordered_list_add_node(ordered_list_handle *handle,\n\t\t\t\t\t
      void *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:130,1
    - Dst: compare_func
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - handle
    - data
    - compare_func
    argTypes:
    - ordered_list_handle*
    - void*
    - ordered_compare_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 150
    functionName: ordered_list_find2
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - pcep_log
    - compare_func
    linkageType: ''
    returnType: ordered_list_node
    signature: "ordered_list_node *ordered_list_find2(ordered_list_handle *handle,
      void *data,\n\t\t\t\t      ordered_compare_function compare_func)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:156,1
    - Dst: ordered_list_find2
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - handle
    - data
    argTypes:
    - ordered_list_handle*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 164
    functionName: ordered_list_find
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - ordered_list_find2
    - pcep_log
    linkageType: ''
    returnType: ordered_list_node
    signature: ordered_list_node *ordered_list_find(ordered_list_handle *handle, void
      *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:170,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - handle
    argTypes:
    - ordered_list_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 188
    functionName: ordered_list_remove_first_node
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void *ordered_list_remove_first_node(ordered_list_handle *handle)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:196,1
    - Dst: compare_func
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:214,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:228,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - handle
    - data
    - compare_func
    argTypes:
    - ordered_list_handle*
    - void*
    - ordered_compare_function
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 236
    functionName: ordered_list_remove_first_node_equals2
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pcep_log
    - compare_func
    linkageType: ''
    returnType: void
    signature: "void *\nordered_list_remove_first_node_equals2(ordered_list_handle
      *handle, void *data,\n\t\t\t\t       ordered_compare_function compare_func)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:243,1
    - Dst: ordered_list_remove_first_node_equals2
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - handle
    - data
    argTypes:
    - ordered_list_handle*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 252
    functionName: ordered_list_remove_first_node_equals
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - pcep_log
    - ordered_list_remove_first_node_equals2
    linkageType: ''
    returnType: void
    signature: "void *ordered_list_remove_first_node_equals(ordered_list_handle *handle,\n\t\t\t\t\t
      \   void *data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:260,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - handle
    - prev_node
    - node_toRemove
    argTypes:
    - ordered_list_handle*
    - ordered_list_node*
    - ordered_list_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 283
    functionName: ordered_list_remove_node
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: "void *ordered_list_remove_node(ordered_list_handle *handle,\n\t\t\t
      \      ordered_list_node *prev_node,\n\t\t\t       ordered_list_node *node_toRemove)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:289,1
    - Dst: ordered_list_remove_node
      Src: /src/frr/pceplib/pcep_utils_ordered_list.c:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - handle
    - node_to_remove
    argTypes:
    - ordered_list_handle*
    - ordered_list_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 314
    functionName: ordered_list_remove_node2
    functionSourceFile: /src/frr/pceplib/pcep_utils_ordered_list.c
    functionUses: 0
    functionsReached:
    - ordered_list_remove_node
    - pcep_log
    linkageType: ''
    returnType: void
    signature: "void *ordered_list_remove_node2(ordered_list_handle *handle,\n\t\t\t\tordered_list_node
      *node_to_remove)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 39
    functionName: create_session_event
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_loop.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    linkageType: ''
    returnType: pcep_session_event
    signature: pcep_session_event *create_session_event(pcep_session *session)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:52,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:59,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:68,1
    - Dst: create_session_event
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:73,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:76,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:80,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:83,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:85,1
    - Dst: pcep_session_cancel_timers
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:86,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:89,1
    - Dst: increment_unknown_message
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:92,1
    - Dst: dll_destroy_with_data
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:93,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:99,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:102,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:102,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:110,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:112,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 2
    argNames:
    - data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 116
    functionName: session_logic_msg_ready_handler
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_loop.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - create_session_event
    - pthread_cond_signal
    - increment_unknown_message
    - pthread_self
    - socket_comm_session_teardown
    - enqueue_event
    - pcep_session_cancel_timers
    - queue_enqueue
    - pcep_msg_read
    - dll_destroy_with_data
    - pcep_log
    - time
    - dll_destroy
    linkageType: ''
    returnType: int
    signature: int session_logic_msg_ready_handler(void *data, int socket_fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:128,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:140,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:146,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:149,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:149,1
    - Dst: create_timer
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:153,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:158,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:161,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:161,1
    - Dst: reset_timer
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:165,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 168
    functionName: session_logic_message_sent_handler
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_loop.c
    functionUses: 0
    functionsReached:
    - reset_timer
    - create_timer
    - pthread_self
    - destroy_pcep_session
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void session_logic_message_sent_handler(void *data, int socket_fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:177,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:184,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:192,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:195,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:195,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:198,1
    - Dst: create_session_event
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:199,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:201,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:204,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 206
    functionName: session_logic_conn_except_notifier
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_loop.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - create_session_event
    - pthread_cond_signal
    - pthread_self
    - queue_enqueue
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void session_logic_conn_except_notifier(void *data, int socket_fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:218,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:224,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:231,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:232,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:232,1
    - Dst: create_session_event
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:234,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:237,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:239,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:242,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - data
    - timer_id
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 244
    functionName: session_logic_timer_expire_handler
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_loop.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - create_session_event
    - pthread_cond_signal
    - pthread_self
    - queue_enqueue
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void session_logic_timer_expire_handler(void *data, int timer_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:254,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:261,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:262,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:262,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:269,1
    - Dst: pthread_cond_wait
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:274,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:279,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:283,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:286,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:286,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:291,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:292,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:300,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:304,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:306,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:310,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:313,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:313,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:318,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:319,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:322,1
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:329,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:333,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:336,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:337,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:340,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:345,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:349,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:350,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_loop.c:350,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 353
    functionName: session_logic_loop
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_loop.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - ordered_list_find
    - pthread_self
    - queue_dequeue
    - handle_socket_comm_event
    - pceplib_free
    - pthread_mutex_unlock
    - handle_timer_event
    - pcep_log
    - time
    - pthread_cond_wait
    linkageType: ''
    returnType: void
    signature: void *session_logic_loop(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_object_error_types.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - error_type
    argTypes:
    - enum pcep_error_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 353
    functionName: get_error_type_str
    functionSourceFile: /src/frr/pceplib/pcep_msg_object_error_types.c
    functionUses: 0
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: char
    signature: char *get_error_type_str(enum pcep_error_type error_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_object_error_types.c:359,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_object_error_types.c:368,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - error_type
    - error_value
    argTypes:
    - enum pcep_error_type
    - enum pcep_error_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 381
    functionName: get_error_value_str
    functionSourceFile: /src/frr/pceplib/pcep_msg_object_error_types.c
    functionUses: 0
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: char
    signature: "char *get_error_value_str(enum pcep_error_type error_type,\n\t\t\t\tenum
      pcep_error_value error_value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/frr/pceplib/pcep_msg_tools.c:92,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:95,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_msg_tools.c:98,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:101,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_tools.c:106,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/pcep_msg_tools.c:114,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:118,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:130,1
    - Dst: read
      Src: /src/frr/pceplib/pcep_msg_tools.c:137,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:139,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:148,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/pcep_msg_tools.c:156,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_tools.c:162,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - sock_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 167
    functionName: pcep_msg_read
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 1
    functionsReached:
    - dll_append
    - read
    - pcep_decode_message
    - strerror
    - dll_initialize
    - pcep_decode_validate_msg_header
    - pcep_log
    linkageType: ''
    returnType: double_linked_list
    signature: double_linked_list *pcep_msg_read(int sock_fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - msg_list
    - type
    argTypes:
    - double_linked_list*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 184
    functionName: pcep_msg_get
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct pcep_message
    signature: struct pcep_message *pcep_msg_get(double_linked_list *msg_list, uint8_t
      type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - list
    - current
    - type
    argTypes:
    - double_linked_list*
    - struct pcep_message*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 211
    functionName: pcep_msg_get_next
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_msg_get_next(double_linked_list *list,\n\t\t\t\t
      \      struct pcep_message *current,\n\t\t\t\t       uint8_t type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - list
    - object_class
    argTypes:
    - double_linked_list*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 234
    functionName: pcep_obj_get
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_obj_get(double_linked_list *list,\n\t\t\t\t\tuint8_t
      object_class)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - list
    - current
    - object_class
    argTypes:
    - double_linked_list*
    - struct pcep_object_header*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 261
    functionName: pcep_obj_get_next
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_obj_get_next(double_linked_list *list,\n\t\t\t\t\t
      \    struct pcep_object_header *current,\n\t\t\t\t\t     uint8_t object_class)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_msg_tools.c:271,1
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_msg_tools.c:284,1
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_msg_tools.c:295,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_msg_tools.c:326,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - tlv
    argTypes:
    - struct pcep_object_tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 327
    functionName: pcep_obj_free_tlv
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - dll_destroy_with_data_memtype
    linkageType: ''
    returnType: void
    signature: void pcep_obj_free_tlv(struct pcep_object_tlv_header *tlv)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/pcep_msg_tools.c:335,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/pcep_msg_tools.c:337,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/pcep_msg_tools.c:340,1
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_msg_tools.c:362,1
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_msg_tools.c:371,1
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_msg_tools.c:379,1
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_msg_tools.c:389,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_msg_tools.c:418,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 1
    argNames:
    - obj
    argTypes:
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 419
    functionName: pcep_obj_free_object
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached:
    - dll_destroy_with_data_memtype
    - pcep_obj_free_tlv
    - pceplib_free
    - dll_delete_first_node
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void pcep_obj_free_object(struct pcep_object_header *obj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/pcep_msg_tools.c:427,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/pcep_msg_tools.c:429,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/pcep_msg_tools.c:432,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_msg_tools.c:436,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_msg_tools.c:440,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_msg_tools.c:443,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - message
    argTypes:
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 444
    functionName: pcep_msg_free_message
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pcep_obj_free_object
    - dll_delete_first_node
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void pcep_msg_free_message(struct pcep_message *message)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/pcep_msg_tools.c:450,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/pcep_msg_tools.c:452,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/pcep_msg_tools.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 446
    functionDepth: 4
    functionLinenumber: 446
    functionLinenumberEnd: 456
    functionName: pcep_msg_free_message_list
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached:
    - dll_destroy
    - dll_delete_first_node
    - pcep_msg_free_message
    linkageType: ''
    returnType: void
    signature: void pcep_msg_free_message_list(double_linked_list *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 464
    functionName: get_message_type_str
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_message_type_str(uint8_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - class
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 472
    functionName: get_object_class_str
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_object_class_str(uint8_t class)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:480,1
    - Dst: get_message_type_str
      Src: /src/frr/pceplib/pcep_msg_tools.c:481,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:488,1
    - Dst: get_object_class_str
      Src: /src/frr/pceplib/pcep_msg_tools.c:490,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - msg_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 493
    functionName: pcep_msg_print
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached:
    - get_object_class_str
    - get_message_type_str
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void pcep_msg_print(double_linked_list *msg_list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tools.c:500,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tools.c:502,1
    - Dst: write
      Src: /src/frr/pceplib/pcep_msg_tools.c:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - sock_fd
    - msg
    argTypes:
    - int
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 508
    functionName: pcep_msg_send
    functionSourceFile: /src/frr/pceplib/pcep_msg_tools.c
    functionUses: 0
    functionsReached:
    - ntohs
    - pcep_log
    - write
    linkageType: ''
    returnType: int
    signature: int pcep_msg_send(int sock_fd, struct pcep_message *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:33,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type
    - size
    argTypes:
    - enum pcep_object_tlv_types
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: pcep_tlv_common_create
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: 'struct pcep_object_tlv_header *

      pcep_tlv_common_create(enum pcep_object_tlv_types type, uint16_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - flag_u_lsp_update_capability
    - flag_s_include_db_version
    - flag_i_lsp_instantiation_capability
    - flag_t_triggered_resync
    - flag_d_delta_lsp_sync
    - flag_f_triggered_initial_sync
    argTypes:
    - bool
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 65
    functionName: pcep_tlv_create_stateful_pce_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_stateful_pce_capability
    signature: "struct pcep_object_tlv_stateful_pce_capability *\npcep_tlv_create_stateful_pce_capability(\n\tbool
      flag_u_lsp_update_capability, bool flag_s_include_db_version,\n\tbool flag_i_lsp_instantiation_capability,
      bool flag_t_triggered_resync,\n\tbool flag_d_delta_lsp_sync, bool flag_f_triggered_initial_sync)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsp_db_version
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: pcep_tlv_create_lsp_db_version
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_lsp_db_version
    signature: 'struct pcep_object_tlv_lsp_db_version *

      pcep_tlv_create_lsp_db_version(uint64_t lsp_db_version)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - speaker_entity_id_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 99
    functionName: pcep_tlv_create_speaker_entity_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_speaker_entity_identifier
    signature: 'struct pcep_object_tlv_speaker_entity_identifier *

      pcep_tlv_create_speaker_entity_id(double_linked_list *speaker_entity_id_list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pst
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 112
    functionName: pcep_tlv_create_path_setup_type
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_path_setup_type
    signature: 'struct pcep_object_tlv_path_setup_type *

      pcep_tlv_create_path_setup_type(uint8_t pst)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pst_list
    - sub_tlv_list
    argTypes:
    - double_linked_list*
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 137
    functionName: pcep_tlv_create_path_setup_type_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_path_setup_type_capability
    signature: "struct pcep_object_tlv_path_setup_type_capability *\npcep_tlv_create_path_setup_type_capability(double_linked_list
      *pst_list,\n\t\t\t\t\t   double_linked_list *sub_tlv_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - flag_n
    - flag_x
    - max_sid_depth
    argTypes:
    - bool
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: pcep_tlv_create_sr_pce_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_sr_pce_capability
    signature: "struct pcep_object_tlv_sr_pce_capability *\npcep_tlv_create_sr_pce_capability(bool
      flag_n, bool flag_x,\n\t\t\t\t  uint8_t max_sid_depth)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - of_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 171
    functionName: pcep_tlv_create_of_list
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_of_list
    signature: 'struct pcep_object_tlv_of_list *

      pcep_tlv_create_of_list(double_linked_list *of_list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - ipv4_tunnel_sender
    - ipv4_tunnel_endpoint
    - lsp_id
    - tunnel_id
    - extended_tunnel_id
    argTypes:
    - struct in_addr*
    - struct in_addr*
    - uint16_t
    - uint16_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 202
    functionName: pcep_tlv_create_ipv4_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_ipv4_lsp_identifier
    signature: "struct pcep_object_tlv_ipv4_lsp_identifier *\npcep_tlv_create_ipv4_lsp_identifiers(struct
      in_addr *ipv4_tunnel_sender,\n\t\t\t\t     struct in_addr *ipv4_tunnel_endpoint,\n\t\t\t\t
      \    uint16_t lsp_id, uint16_t tunnel_id,\n\t\t\t\t     struct in_addr *extended_tunnel_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:216,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:221,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:227,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - ipv6_tunnel_sender
    - ipv6_tunnel_endpoint
    - lsp_id
    - tunnel_id
    - extended_tunnel_id
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - uint16_t
    - uint16_t
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 234
    functionName: pcep_tlv_create_ipv6_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_ipv6_lsp_identifier
    signature: "struct pcep_object_tlv_ipv6_lsp_identifier *\npcep_tlv_create_ipv6_lsp_identifiers(struct
      in6_addr *ipv6_tunnel_sender,\n\t\t\t\t     struct in6_addr *ipv6_tunnel_endpoint,\n\t\t\t\t
      \    uint16_t lsp_id, uint16_t tunnel_id,\n\t\t\t\t     struct in6_addr *extended_tunnel_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:248,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - symbolic_path_name
    - symbolic_path_name_length
    argTypes:
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 260
    functionName: pcep_tlv_create_symbolic_path_name
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_symbolic_path_name
    signature: "struct pcep_object_tlv_symbolic_path_name *\npcep_tlv_create_symbolic_path_name(const
      char *symbolic_path_name,\n\t\t\t\t   uint16_t symbolic_path_name_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsp_error_code
    argTypes:
    - enum pcep_tlv_lsp_error_codes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 272
    functionName: pcep_tlv_create_lsp_error_code
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_lsp_error_code
    signature: 'struct pcep_object_tlv_lsp_error_code *

      pcep_tlv_create_lsp_error_code(enum pcep_tlv_lsp_error_codes lsp_error_code)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - error_node_ip
    - error_code
    - error_value
    argTypes:
    - struct in_addr*
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 296
    functionName: pcep_tlv_create_rsvp_ipv4_error_spec
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_rsvp_error_spec
    signature: "struct pcep_object_tlv_rsvp_error_spec *\npcep_tlv_create_rsvp_ipv4_error_spec(struct
      in_addr *error_node_ip,\n\t\t\t\t     uint8_t error_code, uint16_t error_value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:308,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - error_node_ip
    - error_code
    - error_value
    argTypes:
    - struct in6_addr*
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 319
    functionName: pcep_tlv_create_rsvp_ipv6_error_spec
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_rsvp_error_spec
    signature: "struct pcep_object_tlv_rsvp_error_spec *\npcep_tlv_create_rsvp_ipv6_error_spec(struct
      in6_addr *error_node_ip,\n\t\t\t\t     uint8_t error_code, uint16_t error_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - error_code
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 332
    functionName: pcep_tlv_create_nopath_vector
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 1
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_nopath_vector
    signature: 'struct pcep_object_tlv_nopath_vector *

      pcep_tlv_create_nopath_vector(uint32_t error_code)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - enterprise_number
    - enterprise_specific_info
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 347
    functionName: pcep_tlv_create_vendor_info
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_vendor_info
    signature: "struct pcep_object_tlv_vendor_info *\npcep_tlv_create_vendor_info(uint32_t
      enterprise_number,\n\t\t\t    uint32_t enterprise_specific_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:357,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - color
    - ipv4
    argTypes:
    - uint32_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 365
    functionName: pcep_tlv_create_srpag_pol_id_ipv4
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_srpag_pol_id
    signature: 'struct pcep_object_tlv_srpag_pol_id *

      pcep_tlv_create_srpag_pol_id_ipv4(uint32_t color, struct in_addr *ipv4)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:371,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - color
    - ipv6
    argTypes:
    - uint32_t
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 379
    functionName: pcep_tlv_create_srpag_pol_id_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_srpag_pol_id
    signature: 'struct pcep_object_tlv_srpag_pol_id *

      pcep_tlv_create_srpag_pol_id_ipv6(uint32_t color, struct in6_addr *ipv6)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:389,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:393,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pol_name
    - pol_name_length
    argTypes:
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 400
    functionName: pcep_tlv_create_srpag_pol_name
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - normalize_pcep_tlv_length
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_srpag_pol_name
    signature: 'struct pcep_object_tlv_srpag_pol_name *

      pcep_tlv_create_srpag_pol_name(const char *pol_name, uint16_t pol_name_length)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:411,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - proto_origin
    - asn
    - in6_addr_with_mapped_ipv4
    - discriminator
    argTypes:
    - uint8_t
    - uint32_t
    - struct in6_addr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 401
    functionDepth: 2
    functionLinenumber: 401
    functionLinenumberEnd: 421
    functionName: pcep_tlv_create_srpag_cp_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_srpag_cp_id
    signature: "struct pcep_object_tlv_srpag_cp_id *\npcep_tlv_create_srpag_cp_id(uint8_t
      proto_origin, uint32_t asn,\n\t\t\t    struct in6_addr *in6_addr_with_mapped_ipv4,\n\t\t\t
      \   uint32_t discriminator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pref
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 433
    functionName: pcep_tlv_create_srpag_cp_pref
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    linkageType: ''
    returnType: struct pcep_object_tlv_srpag_cp_pref
    signature: 'struct pcep_object_tlv_srpag_cp_pref *

      pcep_tlv_create_srpag_cp_pref(uint32_t pref)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_common_create
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:444,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - data
    - data_length
    - tlv_id
    argTypes:
    - char*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 435
    functionDepth: 2
    functionLinenumber: 435
    functionLinenumberEnd: 456
    functionName: pcep_tlv_create_tlv_arbitrary
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs.c
    functionUses: 0
    functionsReached:
    - pcep_tlv_common_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_arbitrary
    signature: "struct pcep_object_tlv_arbitrary *\npcep_tlv_create_tlv_arbitrary(const
      char *data, uint16_t data_length,\n\t\t\t      int tlv_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:25,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:27,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 39
    functionName: dll_initialize
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 8
    functionsReached:
    - pceplib_malloc
    - pcep_log
    - memset
    linkageType: ''
    returnType: double_linked_list
    signature: double_linked_list *dll_initialize(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:45,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:55,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - handle
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 59
    functionName: dll_destroy
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 4
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void dll_destroy(double_linked_list *handle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:66,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:75,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:77,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - handle
    - data_memory_type
    argTypes:
    - double_linked_list*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 81
    functionName: dll_destroy_with_data_memtype
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 2
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: "void dll_destroy_with_data_memtype(double_linked_list *handle,\n\t\t\t\t
      \  void *data_memory_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_destroy_with_data_memtype
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - handle
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: dll_destroy_with_data
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 1
    functionsReached:
    - dll_destroy_with_data_memtype
    linkageType: ''
    returnType: void
    signature: void dll_destroy_with_data(double_linked_list *handle)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:95,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:102,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - handle
    - data
    argTypes:
    - double_linked_list*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 118
    functionName: dll_prepend
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    - pcep_log
    - memset
    linkageType: ''
    returnType: double_linked_list_node
    signature: double_linked_list_node *dll_prepend(double_linked_list *handle, void
      *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:125,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:132,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - handle
    - data
    argTypes:
    - double_linked_list*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 148
    functionName: dll_append
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 8
    functionsReached:
    - pceplib_malloc
    - pcep_log
    - memset
    linkageType: ''
    returnType: double_linked_list_node
    signature: double_linked_list_node *dll_append(double_linked_list *handle, void
      *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:155,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - handle
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 180
    functionName: dll_delete_first_node
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 3
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void *dll_delete_first_node(double_linked_list *handle)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:187,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - handle
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 212
    functionName: dll_delete_last_node
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void *dll_delete_last_node(double_linked_list *handle)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:219,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_double_linked_list.c:250,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - handle
    - node
    argTypes:
    - double_linked_list*
    - double_linked_list_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 254
    functionName: dll_delete_node
    functionSourceFile: /src/frr/pceplib/pcep_utils_double_linked_list.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void *dll_delete_node(double_linked_list *handle, double_linked_list_node
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_initialize_with_size
      Src: /src/frr/pceplib/pcep_utils_queue.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: queue_initialize
    functionSourceFile: /src/frr/pceplib/pcep_utils_queue.c
    functionUses: 0
    functionsReached:
    - queue_initialize_with_size
    linkageType: ''
    returnType: queue_handle
    signature: queue_handle *queue_initialize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_queue.c:34,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_queue.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - max_entries
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: queue_initialize_with_size
    functionSourceFile: /src/frr/pceplib/pcep_utils_queue.c
    functionUses: 1
    functionsReached:
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: queue_handle
    signature: queue_handle *queue_initialize_with_size(unsigned int max_entries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_queue.c:45,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_utils_queue.c:52,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_queue.c:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - handle
    argTypes:
    - queue_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 55
    functionName: queue_destroy
    functionSourceFile: /src/frr/pceplib/pcep_utils_queue.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - queue_dequeue
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void queue_destroy(queue_handle *handle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_queue.c:61,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_utils_queue.c:68,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_queue.c:70,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_utils_queue.c:71,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_queue.c:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - handle
    argTypes:
    - queue_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 74
    functionName: queue_destroy_with_data
    functionSourceFile: /src/frr/pceplib/pcep_utils_queue.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - queue_dequeue
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void queue_destroy_with_data(queue_handle *handle)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_queue.c:80,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_queue.c:89,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_queue.c:97,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_queue.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - handle
    - data
    argTypes:
    - queue_handle*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 112
    functionName: queue_enqueue
    functionSourceFile: /src/frr/pceplib/pcep_utils_queue.c
    functionUses: 3
    functionsReached:
    - pceplib_malloc
    - pcep_log
    - memset
    linkageType: ''
    returnType: queue_node
    signature: queue_node *queue_enqueue(queue_handle *handle, void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_queue.c:118,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_queue.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - handle
    argTypes:
    - queue_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 142
    functionName: queue_dequeue
    functionSourceFile: /src/frr/pceplib/pcep_utils_queue.c
    functionUses: 3
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void *queue_dequeue(queue_handle *handle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:32,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:36,1
    - Dst: ordered_list_remove_first_node
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:45,1
    - Dst: pcep_timers_context*::expire_handler
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:48,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:50,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - timers_context
    argTypes:
    - pcep_timers_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 57
    functionName: walk_and_process_timers
    functionSourceFile: /src/frr/pceplib/pcep_timers_event_loop.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pcep_timers_context*::expire_handler
    - pceplib_free
    - ordered_list_remove_first_node
    - pthread_mutex_unlock
    - time
    linkageType: ''
    returnType: void
    signature: void walk_and_process_timers(pcep_timers_context *timers_context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:64,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:71,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:72,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:72,1
    - Dst: select
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:88,1
    - Dst: walk_and_process_timers
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:91,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:94,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:95,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_timers_event_loop.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 98
    functionName: event_loop
    functionSourceFile: /src/frr/pceplib/pcep_timers_event_loop.c
    functionUses: 0
    functionsReached:
    - pthread_self
    - select
    - walk_and_process_timers
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void *event_loop(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 50
    functionName: setup_mock_socket_comm_info
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - dll_initialize
    linkageType: ''
    returnType: void
    signature: void setup_mock_socket_comm_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_destroy
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: teardown_mock_socket_comm_info
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void teardown_mock_socket_comm_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: teardown_mock_socket_comm_info
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:59,1
    - Dst: setup_mock_socket_comm_info
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 3
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: reset_mock_socket_comm_info
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - teardown_mock_socket_comm_info
    - setup_mock_socket_comm_info
    linkageType: ''
    returnType: void
    signature: void reset_mock_socket_comm_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: get_mock_socket_comm_info
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: mock_socket_comm_info
    signature: mock_socket_comm_info *get_mock_socket_comm_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:73,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:76,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:79,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:82,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:85,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:89,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 7
    argNames:
    - initialized
    - teardown
    - connect
    - send_message
    - close_tcp_after_write
    - close_tcp
    - destroy
    argTypes:
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 95
    functionName: verify_socket_comm_times_called
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: "void verify_socket_comm_times_called(int initialized, int teardown,
      int connect,\n\t\t\t\t     int send_message,\n\t\t\t\t     int close_tcp_after_write,
      int close_tcp,\n\t\t\t\t     int destroy)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - external_infra_data
    - socket_read_cb
    - socket_write_cb
    - thread_create_func
    argTypes:
    - void*
    - ext_socket_read
    - ext_socket_write
    - ext_socket_pthread_create_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 116
    functionName: initialize_socket_comm_external_infra
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool initialize_socket_comm_external_infra(\n\tvoid *external_infra_data,
      ext_socket_read socket_read_cb,\n\text_socket_write socket_write_cb,\n\text_socket_pthread_create_callback
      thread_create_func)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: destroy_socket_comm_loop
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool destroy_socket_comm_loop()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:142,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:143,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:148,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 10
    argNames:
    - msg_rcv_handler
    - msg_ready_handler
    - msg_sent_notifier
    - notifier
    - dst_ip
    - dst_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 160
    functionName: socket_comm_session_initialize
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - malloc
    - htons
    - memset
    - queue_initialize
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *\nsocket_comm_session_initialize(message_received_handler
      msg_rcv_handler,\n\t\t\t       message_ready_to_read_handler msg_ready_handler,\n\t\t\t
      \      message_sent_notifier msg_sent_notifier,\n\t\t\t       connection_except_notifier
      notifier,\n\t\t\t       struct in_addr *dst_ip, short dst_port,\n\t\t\t       uint32_t
      connect_timeout_millis,\n\t\t\t       const char *tcp_authentication_str,\n\t\t\t
      \      bool is_tcp_auth_md5, void *session_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:178,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:179,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:184,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:191,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 10
    argNames:
    - msg_rcv_handler
    - msg_ready_handler
    - msg_sent_notifier
    - notifier
    - dst_ip
    - dst_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in6_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 196
    functionName: socket_comm_session_initialize_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - malloc
    - queue_initialize
    - memcpy
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize_ipv6(\n\tmessage_received_handler
      msg_rcv_handler,\n\tmessage_ready_to_read_handler msg_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, struct in6_addr *dst_ip,\n\tshort
      dst_port, uint32_t connect_timeout_millis,\n\tconst char *tcp_authentication_str,
      bool is_tcp_auth_md5,\n\tvoid *session_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:214,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:215,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:220,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:227,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 12
    argNames:
    - msg_rcv_handler
    - msg_ready_handler
    - msg_sent_notifier
    - notifier
    - src_ip
    - src_port
    - dst_ip
    - dst_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in_addr*
    - short
    - struct in_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 237
    functionName: socket_comm_session_initialize_with_src
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - malloc
    - htons
    - memset
    - queue_initialize
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize_with_src(\n\tmessage_received_handler
      msg_rcv_handler,\n\tmessage_ready_to_read_handler msg_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, struct in_addr *src_ip,\n\tshort
      src_port, struct in_addr *dst_ip, short dst_port,\n\tuint32_t connect_timeout_millis,
      const char *tcp_authentication_str,\n\tbool is_tcp_auth_md5, void *session_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:255,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:256,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:261,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:268,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:273,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:279,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 12
    argNames:
    - msg_rcv_handler
    - msg_ready_handler
    - msg_sent_notifier
    - notifier
    - src_ip
    - src_port
    - dst_ip
    - dst_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in6_addr*
    - short
    - struct in6_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 284
    functionName: socket_comm_session_initialize_with_src_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - malloc
    - queue_initialize
    - memcpy
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize_with_src_ipv6(\n\tmessage_received_handler
      msg_rcv_handler,\n\tmessage_ready_to_read_handler msg_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, struct in6_addr *src_ip,\n\tshort
      src_port, struct in6_addr *dst_ip, short dst_port,\n\tuint32_t connect_timeout_millis,
      const char *tcp_authentication_str,\n\tbool is_tcp_auth_md5, void *session_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: queue_destroy
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:291,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 296
    functionName: socket_comm_session_teardown
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 1
    functionsReached:
    - queue_destroy
    - free
    linkageType: ''
    returnType: bool
    signature: bool socket_comm_session_teardown(pcep_socket_comm_session *socket_comm_session)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 307
    functionName: socket_comm_session_connect_tcp
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool socket_comm_session_connect_tcp(\n\tpcep_socket_comm_session
      *socket_comm_session)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:323,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_socket_comm_mock.c:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - socket_comm_session
    - encoded_message
    - msg_length
    - delete_after_send
    argTypes:
    - pcep_socket_comm_session*
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 332
    functionName: socket_comm_session_send_message
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached:
    - dll_append
    - free
    linkageType: ''
    returnType: void
    signature: "void socket_comm_session_send_message(\n\tpcep_socket_comm_session
      *socket_comm_session,\n\tconst char *encoded_message, unsigned int msg_length,\n\tbool
      delete_after_send)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 344
    functionName: socket_comm_session_close_tcp_after_write
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool socket_comm_session_close_tcp_after_write(\n\tpcep_socket_comm_session
      *socket_comm_session)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 355
    functionName: socket_comm_session_close_tcp
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_mock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool socket_comm_session_close_tcp(\n\tpcep_socket_comm_session *socket_comm_session)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 7
    argNames:
    - pceplib_infra_mt
    - pceplib_messages_mt
    - mf
    - cf
    - rf
    - sf
    - ff
    argTypes:
    - void*
    - void*
    - pceplib_malloc_func
    - pceplib_calloc_func
    - pceplib_realloc_func
    - pceplib_strdup_func
    - pceplib_free_func
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 64
    functionName: pceplib_memory_initialize
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pceplib_memory_initialize(void *pceplib_infra_mt,\n\t\t\t       void
      *pceplib_messages_mt,\n\t\t\t       pceplib_malloc_func mf, pceplib_calloc_func
      cf,\n\t\t\t       pceplib_realloc_func rf, pceplib_strdup_func sf,\n\t\t\t       pceplib_free_func
      ff)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 77
    functionName: pceplib_memory_reset
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pceplib_memory_reset(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_memory.c:82,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_memory.c:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 110
    functionName: pceplib_memory_dump
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 0
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void pceplib_memory_dump(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/pceplib/pcep_utils_memory.c:127,1
    - Dst: mfunc
      Src: /src/frr/pceplib/pcep_utils_memory.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mem_type
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 131
    functionName: pceplib_malloc
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 17
    functionsReached:
    - malloc
    - mfunc
    linkageType: ''
    returnType: void
    signature: void *pceplib_malloc(void *mem_type, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/pceplib/pcep_utils_memory.c:143,1
    - Dst: cfunc
      Src: /src/frr/pceplib/pcep_utils_memory.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mem_type
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 147
    functionName: pceplib_calloc
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 0
    functionsReached:
    - cfunc
    - calloc
    linkageType: ''
    returnType: void
    signature: void *pceplib_calloc(void *mem_type, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/frr/pceplib/pcep_utils_memory.c:161,1
    - Dst: rfunc
      Src: /src/frr/pceplib/pcep_utils_memory.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - mem_type
    - ptr
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 165
    functionName: pceplib_realloc
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 0
    functionsReached:
    - realloc
    - rfunc
    linkageType: ''
    returnType: void
    signature: void *pceplib_realloc(void *mem_type, void *ptr, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/pceplib/pcep_utils_memory.c:172,1
    - Dst: strdup
      Src: /src/frr/pceplib/pcep_utils_memory.c:177,1
    - Dst: sfunc
      Src: /src/frr/pceplib/pcep_utils_memory.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mem_type
    - str
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 181
    functionName: pceplib_strdup
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 0
    functionsReached:
    - strdup
    - strlen
    - sfunc
    linkageType: ''
    returnType: void
    signature: void *pceplib_strdup(void *mem_type, const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_memory.c:195,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_utils_memory.c:208,1
    - Dst: ffunc
      Src: /src/frr/pceplib/pcep_utils_memory.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - mem_type
    - ptr
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 212
    functionName: pceplib_free
    functionSourceFile: /src/frr/pceplib/pcep_utils_memory.c
    functionUses: 17
    functionsReached:
    - ffunc
    - free
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void pceplib_free(void *mem_type, void *ptr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:106,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:107,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:110,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:111,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:122,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:131,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:132,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:134,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - message
    - versioning
    argTypes:
    - struct pcep_message*
    - struct pcep_versioning*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 137
    functionName: pcep_encode_message
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 0
    functionsReached:
    - pcep_encode_object
    - pceplib_malloc
    - memcpy
    - htons
    linkageType: ''
    returnType: void
    signature: "void pcep_encode_message(struct pcep_message *message,\n\t\t\t struct
      pcep_versioning *versioning)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:150,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:157,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:165,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:185,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 4
    argNames:
    - msg_version
    - msg_flags
    - msg_type
    - msg_length
    argTypes:
    - uint8_t
    - uint8_t
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 192
    functionName: validate_msg_header
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 1
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: "bool validate_msg_header(uint8_t msg_version, uint8_t msg_flags,\n\t\t\t\tuint8_t
      msg_type, uint16_t msg_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:208,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - msg_buf
    - msg_version
    - msg_flags
    - msg_type
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 210
    functionName: pcep_decode_msg_header
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 0
    functionsReached:
    - ntohs
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_decode_msg_header(const uint8_t *msg_buf,\n\t\t\t\t
      \      uint8_t *msg_version, uint8_t *msg_flags,\n\t\t\t\t       uint8_t *msg_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_decode_msg_header
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:220,1
    - Dst: validate_msg_header
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msg_buf
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 228
    functionName: pcep_decode_validate_msg_header
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 1
    functionsReached:
    - pcep_decode_msg_header
    - validate_msg_header
    linkageType: ''
    returnType: int32_t
    signature: int32_t pcep_decode_validate_msg_header(const uint8_t *msg_buf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:233,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:255,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:263,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:269,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 279
    functionName: validate_message_objects
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 0
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool validate_message_objects(struct pcep_message *msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_decode_msg_header
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:288,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:291,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:295,1
    - Dst: pceplib_calloc
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:300,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:302,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:307,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:308,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:309,1
    - Dst: pcep_decode_object
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:315,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:318,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:320,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:325,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:329,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:330,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - msg_buf
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 281
    functionDepth: 4
    functionLinenumber: 281
    functionLinenumberEnd: 337
    functionName: pcep_decode_message
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 1
    functionsReached:
    - dll_append
    - validate_message_objects
    - pcep_decode_object
    - pcep_decode_msg_header
    - pceplib_calloc
    - pcep_msg_free_message
    - dll_initialize
    - pceplib_malloc
    - pcep_log
    - memcpy
    linkageType: ''
    returnType: struct pcep_message
    signature: struct pcep_message *pcep_decode_message(const uint8_t *msg_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:342,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 346
    functionName: create_default_pcep_versioning
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: struct pcep_versioning
    signature: struct pcep_versioning *create_default_pcep_versioning(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_msg_messages_encoding.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - versioning
    argTypes:
    - struct pcep_versioning*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: destroy_pcep_versioning
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages_encoding.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    linkageType: ''
    returnType: void
    signature: void destroy_pcep_versioning(struct pcep_versioning *versioning)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/pceplib/pcep_pcc.c:74,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_pcc.c:75,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_pcc.c:76,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:91,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:92,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:93,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:94,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:98,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:100,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_pcc.c:103,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:107,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:109,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_pcc.c:111,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:114,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:118,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:121,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_pcc.c:123,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:126,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:130,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:133,1
    - Dst: atoi
      Src: /src/frr/pceplib/pcep_pcc.c:135,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:137,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:141,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:144,1
    - Dst: atoi
      Src: /src/frr/pceplib/pcep_pcc.c:146,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:148,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:152,1
    - Dst: strcmp
      Src: /src/frr/pceplib/pcep_pcc.c:155,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_pcc.c:157,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:160,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:164,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:168,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:170,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 71
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 176
    functionName: get_cmdline_args
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 0
    functionsReached:
    - memset
    - malloc
    - strlcpy
    - strcmp
    - free
    - atoi
    - pcep_log
    linkageType: ''
    returnType: struct cmd_line_args
    signature: struct cmd_line_args *get_cmdline_args(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:181,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_pcc.c:184,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/pcep_pcc.c:186,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_pcc.c:187,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:190,1
    - Dst: dump_pcep_session_counters
      Src: /src/frr/pceplib/pcep_pcc.c:192,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/pcep_pcc.c:193,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:195,1
    - Dst: reset_pcep_session_counters
      Src: /src/frr/pceplib/pcep_pcc.c:197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - sig_number
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 199
    functionName: handle_signal_action
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - reset_pcep_session_counters
    - pthread_cond_signal
    - dump_pcep_session_counters
    - pceplib_memory_dump
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void handle_signal_action(int sig_number)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pceplib/pcep_pcc.c:204,1
    - Dst: sigaction
      Src: /src/frr/pceplib/pcep_pcc.c:206,1
    - Dst: perror
      Src: /src/frr/pceplib/pcep_pcc.c:207,1
    - Dst: sigaction
      Src: /src/frr/pceplib/pcep_pcc.c:211,1
    - Dst: perror
      Src: /src/frr/pceplib/pcep_pcc.c:212,1
    - Dst: sigaction
      Src: /src/frr/pceplib/pcep_pcc.c:216,1
    - Dst: perror
      Src: /src/frr/pceplib/pcep_pcc.c:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 222
    functionName: setup_signals
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 0
    functionsReached:
    - sigaction
    - perror
    - memset
    linkageType: ''
    returnType: int
    signature: int setup_signals(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/pcep_pcc.c:228,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/pcep_pcc.c:229,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/pcep_pcc.c:232,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pceplib/pcep_pcc.c:234,1
    - Dst: pcep_msg_create_request
      Src: /src/frr/pceplib/pcep_pcc.c:237,1
    - Dst: send_message
      Src: /src/frr/pceplib/pcep_pcc.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 224
    functionDepth: 4
    functionLinenumber: 224
    functionLinenumberEnd: 239
    functionName: send_pce_path_request_message
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_endpoint_ipv4
    - pcep_msg_create_request
    - send_message
    - inet_pton
    - pcep_obj_create_rp
    linkageType: ''
    returnType: void
    signature: void send_pce_path_request_message(pcep_session *session)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_pcc.c:243,1
    - Dst: pcep_tlv_create_path_setup_type
      Src: /src/frr/pceplib/pcep_pcc.c:247,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_pcc.c:248,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:249,1
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pceplib/pcep_pcc.c:256,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:259,1
    - Dst: dll_destroy_with_data
      Src: /src/frr/pceplib/pcep_pcc.c:262,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:265,1
    - Dst: pcep_tlv_create_symbolic_path_name
      Src: /src/frr/pceplib/pcep_pcc.c:270,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_pcc.c:271,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:272,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/pcep_pcc.c:277,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/pcep_pcc.c:278,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pceplib/pcep_pcc.c:280,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:283,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/pcep_pcc.c:296,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:300,1
    - Dst: dll_destroy_with_data
      Src: /src/frr/pceplib/pcep_pcc.c:303,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:306,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_pcc.c:309,1
    - Dst: pcep_obj_create_ro_subobj_sr_nonai
      Src: /src/frr/pceplib/pcep_pcc.c:311,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:312,1
    - Dst: pcep_obj_create_ro_subobj_sr_nonai
      Src: /src/frr/pceplib/pcep_pcc.c:315,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:316,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/pcep_pcc.c:320,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_node
      Src: /src/frr/pceplib/pcep_pcc.c:322,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:325,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:330,1
    - Dst: pcep_obj_create_ero
      Src: /src/frr/pceplib/pcep_pcc.c:335,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:337,1
    - Dst: dll_destroy_with_data
      Src: /src/frr/pceplib/pcep_pcc.c:340,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:343,1
    - Dst: pcep_obj_create_metric
      Src: /src/frr/pceplib/pcep_pcc.c:348,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_pcc.c:350,1
    - Dst: pcep_msg_create_report
      Src: /src/frr/pceplib/pcep_pcc.c:353,1
    - Dst: send_message
      Src: /src/frr/pceplib/pcep_pcc.c:354,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 355
    functionName: send_pce_report_message
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 0
    functionsReached:
    - dll_append
    - pcep_tlv_create_path_setup_type
    - pcep_tlv_create_symbolic_path_name
    - pcep_obj_create_lsp
    - pcep_obj_create_ero
    - pcep_msg_create_report
    - inet_pton
    - send_message
    - pcep_obj_create_ro_subobj_sr_nonai
    - pcep_obj_create_srp
    - pcep_tlv_create_ipv4_lsp_identifiers
    - pcep_obj_create_ro_subobj_sr_ipv4_node
    - pcep_obj_create_metric
    - dll_initialize
    - dll_destroy_with_data
    - pcep_log
    linkageType: ''
    returnType: void
    signature: void send_pce_report_message(pcep_session *session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:359,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_pcc.c:362,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_pcc.c:362,1
    - Dst: get_event_type_str
      Src: /src/frr/pceplib/pcep_pcc.c:363,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:367,1
    - Dst: get_message_type_str
      Src: /src/frr/pceplib/pcep_pcc.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct pcep_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 371
    functionName: print_queue_event
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 0
    functionsReached:
    - pthread_self
    - get_event_type_str
    - get_message_type_str
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void print_queue_event(struct pcep_event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:377,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_pcc.c:378,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_pcc.c:378,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_pcc.c:379,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/pcep_pcc.c:382,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_pcc.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - cb_data
    - e
    argTypes:
    - void*
    - pcep_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 384
    functionName: pcep_event_callback
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_cond_signal
    - pthread_self
    - pthread_mutex_unlock
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void pcep_event_callback(void *cb_data, pcep_event *e)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:388,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_pcc.c:389,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_pcc.c:389,1
    - Dst: get_cmdline_args
      Src: /src/frr/pceplib/pcep_pcc.c:391,1
    - Dst: setup_signals
      Src: /src/frr/pceplib/pcep_pcc.c:396,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_pcc.c:400,1
    - Dst: initialize_pcc_infra
      Src: /src/frr/pceplib/pcep_pcc.c:402,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:403,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/pcep_pcc.c:409,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:410,1
    - Dst: create_default_pcep_configuration
      Src: /src/frr/pceplib/pcep_pcc.c:416,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_pcc.c:421,1
    - Dst: gethostbyname2
      Src: /src/frr/pceplib/pcep_pcc.c:426,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:428,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_pcc.c:434,1
    - Dst: connect_pce_ipv6
      Src: /src/frr/pceplib/pcep_pcc.c:435,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_pcc.c:438,1
    - Dst: connect_pce
      Src: /src/frr/pceplib/pcep_pcc.c:439,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:443,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pceplib/pcep_pcc.c:444,1
    - Dst: sleep
      Src: /src/frr/pceplib/pcep_pcc.c:448,1
    - Dst: send_pce_report_message
      Src: /src/frr/pceplib/pcep_pcc.c:450,1
    - Dst: event_queue_is_empty
      Src: /src/frr/pceplib/pcep_pcc.c:458,1
    - Dst: event_queue_get_event
      Src: /src/frr/pceplib/pcep_pcc.c:460,1
    - Dst: print_queue_event
      Src: /src/frr/pceplib/pcep_pcc.c:461,1
    - Dst: destroy_pcep_event
      Src: /src/frr/pceplib/pcep_pcc.c:462,1
    - Dst: sleep
      Src: /src/frr/pceplib/pcep_pcc.c:465,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/pcep_pcc.c:469,1
    - Dst: pthread_cond_init
      Src: /src/frr/pceplib/pcep_pcc.c:470,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_pcc.c:472,1
    - Dst: pthread_cond_wait
      Src: /src/frr/pceplib/pcep_pcc.c:476,1
    - Dst: print_queue_event
      Src: /src/frr/pceplib/pcep_pcc.c:482,1
    - Dst: destroy_pcep_event
      Src: /src/frr/pceplib/pcep_pcc.c:483,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_pcc.c:487,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/pcep_pcc.c:490,1
    - Dst: pthread_cond_destroy
      Src: /src/frr/pceplib/pcep_pcc.c:491,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:494,1
    - Dst: disconnect_pce
      Src: /src/frr/pceplib/pcep_pcc.c:495,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pceplib/pcep_pcc.c:496,1
    - Dst: free
      Src: /src/frr/pceplib/pcep_pcc.c:497,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/pcep_pcc.c:499,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc.c:500,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/pcep_pcc.c:503,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 77
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 386
    functionDepth: 5
    functionLinenumber: 386
    functionLinenumberEnd: 506
    functionName: main
    functionSourceFile: /src/frr/pceplib/pcep_pcc.c
    functionUses: 11
    functionsReached:
    - connect_pce
    - print_queue_event
    - create_default_pcep_configuration
    - get_cmdline_args
    - pthread_mutex_init
    - send_pce_report_message
    - pthread_cond_wait
    - pthread_cond_init
    - memset
    - destroy_pcep_configuration
    - pthread_cond_destroy
    - destroy_pcep_event
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - disconnect_pce
    - initialize_pcc
    - strlcpy
    - event_queue_get_event
    - free
    - destroy_pcc
    - event_queue_is_empty
    - pceplib_memory_dump
    - initialize_pcc_infra
    - pcep_log
    - setup_signals
    - memcpy
    - connect_pce_ipv6
    - pthread_self
    - pthread_mutex_destroy
    - gethostbyname2
    - sleep
    - time
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list_entry
    - new_entry
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 45
    functionName: timer_list_node_compare
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timer_list_node_compare(void *list_entry, void *new_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list_entry
    - new_entry
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: timer_list_node_timer_id_compare
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timer_list_node_timer_id_compare(void *list_entry, void *new_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list_entry
    - new_entry
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: timer_list_node_timer_ptr_compare
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timer_list_node_timer_ptr_compare(void *list_entry, void *new_entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_timers.c:69,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_timers.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: create_timers_context_
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: pcep_timers_context
    signature: pcep_timers_context *create_timers_context_(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: create_timers_context_
      Src: /src/frr/pceplib/pcep_timers.c:87,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/pcep_timers.c:96,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/pcep_timers.c:99,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - expire_handler
    argTypes:
    - timer_expire_handler
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 109
    functionName: initialize_timers_common
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_init
    - pcep_log
    - create_timers_context_
    - ordered_list_initialize
    linkageType: ''
    returnType: bool
    signature: bool initialize_timers_common(timer_expire_handler expire_handler)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initialize_timers_common
      Src: /src/frr/pceplib/pcep_timers.c:113,1
    - Dst: pthread_create
      Src: /src/frr/pceplib/pcep_timers.c:117,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - expire_handler
    argTypes:
    - timer_expire_handler
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 127
    functionName: initialize_timers
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - pthread_create
    - initialize_timers_common
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool initialize_timers(timer_expire_handler expire_handler)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initialize_timers_common
      Src: /src/frr/pceplib/pcep_timers.c:134,1
    - Dst: thread_create_func
      Src: /src/frr/pceplib/pcep_timers.c:139,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:142,1
    - Dst: pthread_create
      Src: /src/frr/pceplib/pcep_timers.c:149,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:151,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - expire_handler
    - external_timer_infra_data
    - timer_create_func
    - timer_cancel_func
    - thread_create_func
    argTypes:
    - timer_expire_handler
    - void*
    - ext_timer_create
    - ext_timer_cancel
    - ext_pthread_create_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 164
    functionName: initialize_timers_external_infra
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - pthread_create
    - initialize_timers_common
    - pcep_log
    - thread_create_func
    linkageType: ''
    returnType: bool
    signature: "bool initialize_timers_external_infra(\n\ttimer_expire_handler expire_handler,
      void *external_timer_infra_data,\n\text_timer_create timer_create_func, ext_timer_cancel
      timer_cancel_func,\n\text_pthread_create_callback thread_create_func)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_timers.c:173,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_timers.c:179,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - timers_context
    argTypes:
    - pcep_timers_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 185
    functionName: free_all_timers
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void free_all_timers(pcep_timers_context *timers_context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:191,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:199,1
    - Dst: pthread_join
      Src: /src/frr/pceplib/pcep_timers.c:223,1
    - Dst: free_all_timers
      Src: /src/frr/pceplib/pcep_timers.c:226,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/pcep_timers.c:227,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/pcep_timers.c:229,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:230,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_timers.c:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 240
    functionName: teardown_timers
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - pthread_join
    - pthread_mutex_destroy
    - pceplib_free
    - ordered_list_destroy
    - free_all_timers
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool teardown_timers(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 250
    functionName: get_next_timer_id
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_next_timer_id(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:255,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_timers.c:262,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_timers.c:263,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_timers.c:266,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_timers.c:268,1
    - Dst: get_next_timer_id
      Src: /src/frr/pceplib/pcep_timers.c:269,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/pcep_timers.c:272,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_timers.c:273,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:274,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:275,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:283,1
    - Dst: timer_create_func
      Src: /src/frr/pceplib/pcep_timers.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - sleep_seconds
    - data
    argTypes:
    - uint16_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 292
    functionName: create_timer
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 1
    functionsReached:
    - ordered_list_add_node
    - pthread_mutex_lock
    - memset
    - get_next_timer_id
    - pceplib_free
    - timer_create_func
    - pthread_mutex_unlock
    - pceplib_malloc
    - pcep_log
    - time
    linkageType: ''
    returnType: int
    signature: int create_timer(uint16_t sleep_seconds, void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:300,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_timers.c:307,1
    - Dst: ordered_list_remove_first_node_equals2
      Src: /src/frr/pceplib/pcep_timers.c:310,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:314,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:315,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:322,1
    - Dst: timer_cancel_func
      Src: /src/frr/pceplib/pcep_timers.c:325,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_timers.c:329,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - timer_id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 332
    functionName: cancel_timer
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - timer_cancel_func
    - pceplib_free
    - pcep_log
    - pthread_mutex_unlock
    - ordered_list_remove_first_node_equals2
    linkageType: ''
    returnType: bool
    signature: bool cancel_timer(int timer_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:340,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_timers.c:348,1
    - Dst: ordered_list_find2
      Src: /src/frr/pceplib/pcep_timers.c:352,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:355,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:356,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:365,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:366,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_timers.c:376,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:378,1
    - Dst: ordered_list_remove_node2
      Src: /src/frr/pceplib/pcep_timers.c:382,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/pcep_timers.c:386,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_timers.c:388,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:389,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:390,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:398,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:404,1
    - Dst: timer_cancel_func
      Src: /src/frr/pceplib/pcep_timers.c:406,1
    - Dst: timer_create_func
      Src: /src/frr/pceplib/pcep_timers.c:412,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:419,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 1
    argNames:
    - timer_id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 335
    functionDepth: 3
    functionLinenumber: 335
    functionLinenumberEnd: 424
    functionName: reset_timer
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 1
    functionsReached:
    - ordered_list_remove_node2
    - ordered_list_add_node
    - pthread_mutex_lock
    - pceplib_free
    - timer_cancel_func
    - timer_create_func
    - pthread_mutex_unlock
    - ordered_list_find2
    - pcep_log
    - time
    linkageType: ''
    returnType: bool
    signature: bool reset_timer(int timer_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:430,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:438,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:446,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_timers.c:453,1
    - Dst: ordered_list_find2
      Src: /src/frr/pceplib/pcep_timers.c:455,1
    - Dst: ordered_list_remove_node2
      Src: /src/frr/pceplib/pcep_timers.c:460,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_timers.c:463,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_timers.c:467,1
    - Dst: expire_handler
      Src: /src/frr/pceplib/pcep_timers.c:474,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_timers.c:476,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 427
    functionDepth: 3
    functionLinenumber: 427
    functionLinenumberEnd: 477
    functionName: pceplib_external_timer_expire_handler
    functionSourceFile: /src/frr/pceplib/pcep_timers.c
    functionUses: 0
    functionsReached:
    - ordered_list_remove_node2
    - pthread_mutex_lock
    - expire_handler
    - pceplib_free
    - ordered_list_find2
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void pceplib_external_timer_expire_handler(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_keepalive
      Src: /src/frr/pceplib/pcep_session_logic_states.c:54,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:56,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:59,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:59,1
    - Dst: session_send_message
      Src: /src/frr/pceplib/pcep_session_logic_states.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: send_keep_alive
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - pthread_self
    - pcep_msg_create_keepalive
    - session_send_message
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void send_keep_alive(pcep_session *session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_session_logic_states.c:74,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_session_logic_states.c:75,1
    - Dst: pcep_msg_create_error_with_objects
      Src: /src/frr/pceplib/pcep_session_logic_states.c:76,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:79,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:82,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:82,1
    - Dst: session_send_message
      Src: /src/frr/pceplib/pcep_session_logic_states.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - session
    - error_type
    - error_value
    - object
    argTypes:
    - pcep_session*
    - enum pcep_error_type
    - enum pcep_error_value
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 86
    functionName: send_pcep_error_with_object
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - dll_append
    - pthread_self
    - pcep_msg_create_error_with_objects
    - dll_initialize
    - session_send_message
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: "void send_pcep_error_with_object(pcep_session *session,\n\t\t\t\t
      enum pcep_error_type error_type,\n\t\t\t\t enum pcep_error_value error_value,\n\t\t\t\t
      struct pcep_object_header *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:93,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:95,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:98,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:98,1
    - Dst: session_send_message
      Src: /src/frr/pceplib/pcep_session_logic_states.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - session
    - error_type
    - error_value
    argTypes:
    - pcep_session*
    - enum pcep_error_type
    - enum pcep_error_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: send_pcep_error
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - pthread_self
    - pcep_msg_create_error
    - session_send_message
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: "void send_pcep_error(pcep_session *session, enum pcep_error_type error_type,\n\t\t
      \    enum pcep_error_value error_value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:116,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:117,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:120,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:120,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:124,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:127,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:127,1
    - Dst: reset_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 105
    functionDepth: 4
    functionLinenumber: 105
    functionLinenumberEnd: 132
    functionName: reset_dead_timer
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - reset_timer
    - create_timer
    - pthread_self
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void reset_dead_timer(pcep_session *session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:139,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic_states.c:146,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_session_logic_states.c:147,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:151,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic_states.c:154,1
    - Dst: event_callback
      Src: /src/frr/pceplib/pcep_session_logic_states.c:156,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/pcep_session_logic_states.c:159,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic_states.c:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - session
    - event_type
    - message
    argTypes:
    - pcep_session*
    - pcep_event_type
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 162
    functionName: enqueue_event
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - memset
    - event_callback
    - queue_enqueue
    - pceplib_malloc
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: "void enqueue_event(pcep_session *session, pcep_event_type event_type,\n\t\t
      \  struct pcep_message *message)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:174,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:184,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:196,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:204,1
    - Dst: pcep_object_has_tlvs
      Src: /src/frr/pceplib/pcep_session_logic_states.c:213,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:250,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:273,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:283,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:291,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:298,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:303,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:308,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:313,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:321,1
    - Dst: dll_delete_node
      Src: /src/frr/pceplib/pcep_session_logic_states.c:326,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 88
    argCount: 2
    argNames:
    - session
    - open_object
    argTypes:
    - pcep_session*
    - struct pcep_object_open*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 334
    functionName: verify_pcep_open_object
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - dll_delete_node
    - pcep_object_has_tlvs
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: "bool verify_pcep_open_object(pcep_session *session,\n\t\t\t     struct
      pcep_object_open *open_object)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:344,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:348,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:356,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:359,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:366,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:369,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:373,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:380,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:384,1
    - Dst: verify_pcep_open_object
      Src: /src/frr/pceplib/pcep_session_logic_states.c:392,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:393,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:398,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:402,1
    - Dst: socket_comm_session_close_tcp_after_write
      Src: /src/frr/pceplib/pcep_session_logic_states.c:405,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:408,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic_states.c:415,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_session_logic_states.c:417,1
    - Dst: send_pcep_error_with_object
      Src: /src/frr/pceplib/pcep_session_logic_states.c:422,1
    - Dst: create_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:437,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:441,1
    - Dst: reset_dead_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:443,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 2
    argNames:
    - session
    - open_msg
    argTypes:
    - pcep_session*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 337
    functionDepth: 5
    functionLinenumber: 337
    functionLinenumberEnd: 446
    functionName: handle_pcep_open
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - send_pcep_error
    - send_pcep_error_with_object
    - verify_pcep_open_object
    - socket_comm_session_close_tcp_after_write
    - create_timer
    - cancel_timer
    - enqueue_event
    - reset_dead_timer
    - pceplib_malloc
    - pcep_log
    - memcpy
    - pcep_obj_get
    linkageType: ''
    returnType: bool
    signature: bool handle_pcep_open(pcep_session *session, struct pcep_message *open_msg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: create_pcep_open
      Src: /src/frr/pceplib/pcep_session_logic_states.c:454,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:457,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:461,1
    - Dst: session_send_message
      Src: /src/frr/pceplib/pcep_session_logic_states.c:465,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:470,1
    - Dst: assert
      Src: /src/frr/pceplib/pcep_session_logic_states.c:473,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:485,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:493,1
    - Dst: reset_dead_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:495,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:497,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:515,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:524,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:527,1
    - Dst: session_send_message
      Src: /src/frr/pceplib/pcep_session_logic_states.c:536,1
    - Dst: reset_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:537,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - session
    - error_msg
    argTypes:
    - pcep_session*
    - struct pcep_message*
    assertStmts:
    - condition: (open_obj != NULL)
      pos:
        line_end: 472
        line_start: 472
        source_file: /src/frr/pceplib/pcep_session_logic_states.c
    constantsTouched: []
    func_position:
      end: 538
      start: 451
    functionDepth: 5
    functionLinenumber: 451
    functionLinenumberEnd: 538
    functionName: send_reconciled_pcep_open
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - reset_timer
    - cancel_timer
    - reset_dead_timer
    - create_pcep_open
    - session_send_message
    - pcep_log
    - assert
    - pcep_obj_get
    linkageType: ''
    returnType: void
    signature: "void send_reconciled_pcep_open(pcep_session *session,\n\t\t\t       struct
      pcep_message *error_msg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:547,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:550,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:557,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:559,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:562,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:567,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:569,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:572,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:577,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:579,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:582,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:592,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:596,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:605,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:609,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:617,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:621,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 2
    argNames:
    - session
    - upd_msg
    argTypes:
    - pcep_session*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 627
    functionName: handle_pcep_update
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - send_pcep_error
    - pcep_log
    - pcep_obj_get
    linkageType: ''
    returnType: bool
    signature: bool handle_pcep_update(pcep_session *session, struct pcep_message
      *upd_msg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:635,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:639,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:646,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:648,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:651,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:656,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:658,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:661,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:671,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:675,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:684,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:688,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - session
    - init_msg
    argTypes:
    - pcep_session*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 695
    functionName: handle_pcep_initiate
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - send_pcep_error
    - pcep_log
    - pcep_obj_get
    linkageType: ''
    returnType: bool
    signature: bool handle_pcep_initiate(pcep_session *session, struct pcep_message
      *init_msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic_states.c:705,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:706,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/pcep_session_logic_states.c:708,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic_states.c:716,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_session_logic_states.c:718,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:729,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:732,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:732,1
    - Dst: close_pcep_session_with_reason
      Src: /src/frr/pceplib/pcep_session_logic_states.c:736,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 697
    functionDepth: 3
    functionLinenumber: 697
    functionLinenumberEnd: 740
    functionName: increment_unknown_message
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 1
    functionsReached:
    - pthread_self
    - queue_dequeue
    - close_pcep_session_with_reason
    - enqueue_event
    - pceplib_free
    - queue_enqueue
    - pceplib_malloc
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void increment_unknown_message(pcep_session *session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:749,1
    - Dst: send_keep_alive
      Src: /src/frr/pceplib/pcep_session_logic_states.c:751,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 742
    functionDepth: 3
    functionLinenumber: 742
    functionLinenumberEnd: 758
    functionName: check_and_send_open_keep_alive
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - cancel_timer
    - send_keep_alive
    linkageType: ''
    returnType: bool
    signature: bool check_and_send_open_keep_alive(pcep_session *session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_session_logic_states.c:771,1
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_session_logic_states.c:775,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_session_logic_states.c:779,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_session_logic_states.c:781,1
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_session_logic_states.c:784,1
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_session_logic_states.c:788,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_session_logic_states.c:792,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_session_logic_states.c:794,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:798,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:801,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:801,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 804
    functionName: log_pcc_pce_connection
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 0
    functionsReached:
    - htons
    - pthread_self
    - inet_ntop
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void log_pcc_pce_connection(pcep_session *session)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:817,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:824,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:827,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:827,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:837,1
    - Dst: close_pcep_session_with_reason
      Src: /src/frr/pceplib/pcep_session_logic_states.c:839,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:841,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:845,1
    - Dst: send_keep_alive
      Src: /src/frr/pceplib/pcep_session_logic_states.c:847,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:859,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:863,1
    - Dst: socket_comm_session_close_tcp_after_write
      Src: /src/frr/pceplib/pcep_session_logic_states.c:866,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:870,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:876,1
    - Dst: check_and_send_open_keep_alive
      Src: /src/frr/pceplib/pcep_session_logic_states.c:880,1
    - Dst: log_pcc_pce_connection
      Src: /src/frr/pceplib/pcep_session_logic_states.c:884,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:887,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:890,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:902,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 1
    argNames:
    - event
    argTypes:
    - pcep_session_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 814
    functionDepth: 4
    functionLinenumber: 814
    functionLinenumberEnd: 909
    functionName: handle_timer_event
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 1
    functionsReached:
    - send_keep_alive
    - socket_comm_session_close_tcp_after_write
    - increment_event_counters
    - pthread_self
    - close_pcep_session_with_reason
    - enqueue_event
    - log_pcc_pce_connection
    - check_and_send_open_keep_alive
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void handle_timer_event(pcep_session_event *event)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:917,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:924,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_states.c:927,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic_states.c:927,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:937,1
    - Dst: socket_comm_session_close_tcp
      Src: /src/frr/pceplib/pcep_session_logic_states.c:941,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:942,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:944,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:947,1
    - Dst: reset_dead_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:952,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:965,1
    - Dst: get_message_type_str
      Src: /src/frr/pceplib/pcep_session_logic_states.c:966,1
    - Dst: increment_message_rx_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:968,1
    - Dst: handle_pcep_open
      Src: /src/frr/pceplib/pcep_session_logic_states.c:976,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:978,1
    - Dst: check_and_send_open_keep_alive
      Src: /src/frr/pceplib/pcep_session_logic_states.c:987,1
    - Dst: log_pcc_pce_connection
      Src: /src/frr/pceplib/pcep_session_logic_states.c:988,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:991,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:994,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1005,1
    - Dst: check_and_send_open_keep_alive
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1010,1
    - Dst: log_pcc_pce_connection
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1016,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1019,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1022,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1032,1
    - Dst: socket_comm_session_close_tcp
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1038,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1042,1
    - Dst: increment_event_counters
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1045,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1051,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1058,1
    - Dst: handle_pcep_update
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1065,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1066,1
    - Dst: handle_pcep_initiate
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1073,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1074,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1080,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1088,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1094,1
    - Dst: get_error_type_str
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1098,1
    - Dst: get_error_value_str
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1100,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1114,1
    - Dst: send_reconciled_pcep_open
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1118,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1119,1
    - Dst: enqueue_event
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1122,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1128,1
    - Dst: send_pcep_error
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1130,1
    - Dst: increment_unknown_message
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1133,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1139,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/pcep_session_logic_states.c:1142,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 114
    argCount: 1
    argNames:
    - event
    argTypes:
    - pcep_session_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 914
    functionDepth: 6
    functionLinenumber: 914
    functionLinenumberEnd: 1143
    functionName: handle_socket_comm_event
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_states.c
    functionUses: 1
    functionsReached:
    - send_reconciled_pcep_open
    - handle_pcep_initiate
    - pcep_obj_get
    - get_error_value_str
    - enqueue_event
    - handle_pcep_open
    - check_and_send_open_keep_alive
    - reset_dead_timer
    - log_pcc_pce_connection
    - dll_destroy
    - increment_event_counters
    - socket_comm_session_close_tcp
    - cancel_timer
    - increment_unknown_message
    - get_error_type_str
    - pcep_msg_free_message
    - increment_message_rx_counters
    - get_message_type_str
    - pcep_log
    - send_pcep_error
    - pthread_self
    - handle_pcep_update
    - time
    linkageType: ''
    returnType: void
    signature: void handle_socket_comm_event(pcep_session_event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list_entry
    - new_entry
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: socket_fd_node_compare
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int socket_fd_node_compare(void *list_entry, void *new_entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_socket_comm.c:56,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_socket_comm.c:57,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/pcep_socket_comm.c:62,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/pcep_socket_comm.c:64,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/pcep_socket_comm.c:66,1
    - Dst: FD_ZERO
      Src: /src/frr/pceplib/pcep_socket_comm.c:67,1
    - Dst: FD_ZERO
      Src: /src/frr/pceplib/pcep_socket_comm.c:68,1
    - Dst: FD_ZERO
      Src: /src/frr/pceplib/pcep_socket_comm.c:69,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/pcep_socket_comm.c:71,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:73,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_socket_comm.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 82
    functionName: initialize_socket_comm_pre
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - FD_ZERO
    - memset
    - ordered_list_initialize
    - pthread_mutex_init
    - pceplib_free
    - pceplib_malloc
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool initialize_socket_comm_pre(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initialize_socket_comm_pre
      Src: /src/frr/pceplib/pcep_socket_comm.c:94,1
    - Dst: thread_create_func
      Src: /src/frr/pceplib/pcep_socket_comm.c:101,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - external_infra_data
    - socket_read_cb
    - socket_write_cb
    - thread_create_func
    argTypes:
    - void*
    - ext_socket_read
    - ext_socket_write
    - ext_socket_pthread_create_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 118
    functionName: initialize_socket_comm_external_infra
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - initialize_socket_comm_pre
    - pcep_log
    - thread_create_func
    linkageType: ''
    returnType: bool
    signature: "bool initialize_socket_comm_external_infra(\n\tvoid *external_infra_data,
      ext_socket_read socket_read_cb,\n\text_socket_write socket_write_cb,\n\text_socket_pthread_create_callback
      thread_create_func)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initialize_socket_comm_pre
      Src: /src/frr/pceplib/pcep_socket_comm.c:127,1
    - Dst: pthread_create
      Src: /src/frr/pceplib/pcep_socket_comm.c:132,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 120
    functionDepth: 3
    functionLinenumber: 120
    functionLinenumberEnd: 140
    functionName: initialize_socket_comm_loop
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - initialize_socket_comm_pre
    - pthread_create
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool initialize_socket_comm_loop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_join
      Src: /src/frr/pceplib/pcep_socket_comm.c:147,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/pcep_socket_comm.c:148,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/pcep_socket_comm.c:149,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/pcep_socket_comm.c:150,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/pcep_socket_comm.c:151,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_socket_comm.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 157
    functionName: destroy_socket_comm_loop
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pthread_mutex_destroy
    - pthread_join
    - ordered_list_destroy
    linkageType: ''
    returnType: bool
    signature: bool destroy_socket_comm_loop(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:170,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:179,1
    - Dst: initialize_socket_comm_loop
      Src: /src/frr/pceplib/pcep_socket_comm.c:186,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:187,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_socket_comm.c:197,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_socket_comm.c:198,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_socket_comm.c:208,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_socket_comm.c:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 8
    argNames:
    - message_handler
    - message_ready_handler
    - msg_sent_notifier
    - notifier
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 219
    functionName: socket_comm_session_initialize_pre
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - memset
    - queue_initialize
    - strlcpy
    - initialize_socket_comm_loop
    - pceplib_malloc
    - pcep_log
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize_pre(\n\tmessage_received_handler
      message_handler,\n\tmessage_ready_to_read_handler message_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, uint32_t connect_timeout_millis,\n\tconst
      char *tcp_authentication_str, bool is_tcp_auth_md5,\n\tvoid *session_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pceplib/pcep_socket_comm.c:228,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:231,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:234,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/pcep_socket_comm.c:235,1
    - Dst: bind
      Src: /src/frr/pceplib/pcep_socket_comm.c:253,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:255,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:257,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/pcep_socket_comm.c:258,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm.c:264,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/pcep_socket_comm.c:265,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 274
    functionName: socket_comm_session_initialize_post
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - ordered_list_add_node
    - pthread_mutex_lock
    - strerror
    - socket_comm_session_teardown
    - bind
    - setsockopt
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: bool
    signature: "bool socket_comm_session_initialize_post(\n\tpcep_socket_comm_session
      *socket_comm_session)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize_with_src
      Src: /src/frr/pceplib/pcep_socket_comm.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - message_handler
    - message_ready_handler
    - msg_sent_notifier
    - notifier
    - dest_ip
    - dest_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 290
    functionName: socket_comm_session_initialize
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_initialize_with_src
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize(\n\tmessage_received_handler
      message_handler,\n\tmessage_ready_to_read_handler message_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, struct in_addr *dest_ip,\n\tshort
      dest_port, uint32_t connect_timeout_millis,\n\tconst char *tcp_authentication_str,
      bool is_tcp_auth_md5,\n\tvoid *session_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize_with_src_ipv6
      Src: /src/frr/pceplib/pcep_socket_comm.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - message_handler
    - message_ready_handler
    - msg_sent_notifier
    - notifier
    - dest_ip
    - dest_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in6_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 305
    functionName: socket_comm_session_initialize_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_initialize_with_src_ipv6
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize_ipv6(\n\tmessage_received_handler
      message_handler,\n\tmessage_ready_to_read_handler message_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, struct in6_addr *dest_ip,\n\tshort
      dest_port, uint32_t connect_timeout_millis,\n\tconst char *tcp_authentication_str,
      bool is_tcp_auth_md5,\n\tvoid *session_data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:318,1
    - Dst: socket_comm_session_initialize_pre
      Src: /src/frr/pceplib/pcep_socket_comm.c:323,1
    - Dst: socket
      Src: /src/frr/pceplib/pcep_socket_comm.c:332,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:334,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:336,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/pcep_socket_comm.c:337,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm.c:350,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm.c:352,1
    - Dst: socket_comm_session_initialize_post
      Src: /src/frr/pceplib/pcep_socket_comm.c:363,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 12
    argNames:
    - message_handler
    - message_ready_handler
    - msg_sent_notifier
    - notifier
    - src_ip
    - src_port
    - dest_ip
    - dest_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in_addr*
    - short
    - struct in_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 308
    functionDepth: 5
    functionLinenumber: 308
    functionLinenumberEnd: 368
    functionName: socket_comm_session_initialize_with_src
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 1
    functionsReached:
    - socket_comm_session_initialize_pre
    - htons
    - strerror
    - socket
    - socket_comm_session_initialize_post
    - socket_comm_session_teardown
    - pcep_log
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize_with_src(\n\tmessage_received_handler
      message_handler,\n\tmessage_ready_to_read_handler message_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, struct in_addr *src_ip,\n\tshort
      src_port, struct in_addr *dest_ip, short dest_port,\n\tuint32_t connect_timeout_millis,
      const char *tcp_authentication_str,\n\tbool is_tcp_auth_md5, void *session_data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:380,1
    - Dst: socket_comm_session_initialize_pre
      Src: /src/frr/pceplib/pcep_socket_comm.c:385,1
    - Dst: socket
      Src: /src/frr/pceplib/pcep_socket_comm.c:394,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:396,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:398,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/pcep_socket_comm.c:399,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm.c:412,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_socket_comm.c:414,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm.c:415,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm.c:419,1
    - Dst: socket_comm_session_initialize_post
      Src: /src/frr/pceplib/pcep_socket_comm.c:427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 12
    argNames:
    - message_handler
    - message_ready_handler
    - msg_sent_notifier
    - notifier
    - src_ip
    - src_port
    - dest_ip
    - dest_port
    - connect_timeout_millis
    - tcp_authentication_str
    - is_tcp_auth_md5
    - session_data
    argTypes:
    - message_received_handler
    - message_ready_to_read_handler
    - message_sent_notifier
    - connection_except_notifier
    - struct in6_addr*
    - short
    - struct in6_addr*
    - short
    - uint32_t
    - char*
    - bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 370
    functionDepth: 5
    functionLinenumber: 370
    functionLinenumberEnd: 432
    functionName: socket_comm_session_initialize_with_src_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 1
    functionsReached:
    - socket_comm_session_initialize_pre
    - htons
    - strerror
    - socket
    - socket_comm_session_initialize_post
    - socket_comm_session_teardown
    - pcep_log
    - memcpy
    linkageType: ''
    returnType: pcep_socket_comm_session
    signature: "pcep_socket_comm_session *socket_comm_session_initialize_with_src_ipv6(\n\tmessage_received_handler
      message_handler,\n\tmessage_ready_to_read_handler message_ready_handler,\n\tmessage_sent_notifier
      msg_sent_notifier,\n\tconnection_except_notifier notifier, struct in6_addr *src_ip,\n\tshort
      src_port, struct in6_addr *dest_ip, short dest_port,\n\tuint32_t connect_timeout_millis,
      const char *tcp_authentication_str,\n\tbool is_tcp_auth_md5, void *session_data)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:439,1
    - Dst: fcntl
      Src: /src/frr/pceplib/pcep_socket_comm.c:448,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:450,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:451,1
    - Dst: fcntl
      Src: /src/frr/pceplib/pcep_socket_comm.c:456,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:457,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:458,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_socket_comm.c:467,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm.c:469,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm.c:474,1
    - Dst: strlen
      Src: /src/frr/pceplib/pcep_socket_comm.c:480,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_socket_comm.c:481,1
    - Dst: setsockopt
      Src: /src/frr/pceplib/pcep_socket_comm.c:487,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:490,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:491,1
    - Dst: connect
      Src: /src/frr/pceplib/pcep_socket_comm.c:499,1
    - Dst: connect
      Src: /src/frr/pceplib/pcep_socket_comm.c:506,1
    - Dst: FD_ZERO
      Src: /src/frr/pceplib/pcep_socket_comm.c:539,1
    - Dst: FD_SET
      Src: /src/frr/pceplib/pcep_socket_comm.c:540,1
    - Dst: select
      Src: /src/frr/pceplib/pcep_socket_comm.c:541,1
    - Dst: getsockopt
      Src: /src/frr/pceplib/pcep_socket_comm.c:546,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:550,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:558,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:566,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm.c:570,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm.c:575,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/pcep_socket_comm.c:578,1
    - Dst: socket_read_func
      Src: /src/frr/pceplib/pcep_socket_comm.c:582,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:587,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 66
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 435
    functionDepth: 2
    functionLinenumber: 435
    functionLinenumberEnd: 590
    functionName: socket_comm_session_connect_tcp
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - strlen
    - FD_ZERO
    - pthread_mutex_lock
    - ordered_list_add_node
    - memset
    - connect
    - strerror
    - getsockopt
    - select
    - pthread_mutex_unlock
    - socket_read_func
    - setsockopt
    - fcntl
    - pcep_log
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool socket_comm_session_connect_tcp(\n\tpcep_socket_comm_session
      *socket_comm_session)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:597,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:604,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm.c:608,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm.c:609,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm.c:611,1
    - Dst: close
      Src: /src/frr/pceplib/pcep_socket_comm.c:614,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 619
    functionName: socket_comm_session_close_tcp
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_lock
    - close
    - ordered_list_remove_first_node_equals
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: bool
    signature: "bool socket_comm_session_close_tcp(\n\tpcep_socket_comm_session *socket_comm_session)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:626,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm.c:633,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:635,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 638
    functionName: socket_comm_session_close_tcp_after_write
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 2
    functionsReached:
    - pthread_mutex_lock
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: bool
    signature: "bool socket_comm_session_close_tcp_after_write(\n\tpcep_socket_comm_session
      *socket_comm_session)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:644,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:651,1
    - Dst: comm_session_exists_locking
      Src: /src/frr/pceplib/pcep_socket_comm.c:656,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:659,1
    - Dst: shutdown
      Src: /src/frr/pceplib/pcep_socket_comm.c:666,1
    - Dst: close
      Src: /src/frr/pceplib/pcep_socket_comm.c:667,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm.c:670,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/pcep_socket_comm.c:671,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm.c:672,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm.c:674,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm.c:676,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:679,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:681,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_socket_comm.c:684,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_socket_comm.c:684,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_socket_comm.c:688,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 641
    functionDepth: 3
    functionLinenumber: 641
    functionLinenumberEnd: 698
    functionName: socket_comm_session_teardown
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 4
    functionsReached:
    - pthread_mutex_lock
    - comm_session_exists_locking
    - queue_destroy
    - pthread_self
    - close
    - ordered_list_remove_first_node_equals
    - time
    - pceplib_free
    - pcep_log
    - pthread_mutex_unlock
    - shutdown
    linkageType: ''
    returnType: bool
    signature: bool socket_comm_session_teardown(pcep_socket_comm_session *socket_comm_session)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:707,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_socket_comm.c:714,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm.c:720,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/pcep_socket_comm.c:723,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:728,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:732,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_socket_comm.c:733,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm.c:742,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:746,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_socket_comm.c:747,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/pcep_socket_comm.c:752,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/pcep_socket_comm.c:755,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/pcep_socket_comm.c:758,1
    - Dst: socket_write_func
      Src: /src/frr/pceplib/pcep_socket_comm.c:763,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm.c:768,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - socket_comm_session
    - encoded_message
    - msg_length
    - free_after_send
    argTypes:
    - pcep_socket_comm_session*
    - char*
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 701
    functionDepth: 3
    functionLinenumber: 701
    functionLinenumberEnd: 769
    functionName: socket_comm_session_send_message
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm.c
    functionUses: 0
    functionsReached:
    - ordered_list_add_node
    - pthread_mutex_lock
    - ordered_list_find
    - pceplib_free
    - queue_enqueue
    - pceplib_malloc
    - pcep_log
    - pthread_mutex_unlock
    - socket_write_func
    linkageType: ''
    returnType: void
    signature: "void socket_comm_session_send_message(\n\tpcep_socket_comm_session
      *socket_comm_session,\n\tconst char *encoded_message, unsigned int msg_length,\n\tbool
      free_after_send)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - socket_comm_handle
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_handle*
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 47
    functionName: comm_session_exists
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - ordered_list_find
    linkageType: ''
    returnType: bool
    signature: "bool comm_session_exists(pcep_socket_comm_handle *socket_comm_handle,\n\t\t\t
      pcep_socket_comm_session *socket_comm_session)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:57,1
    - Dst: comm_session_exists
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:59,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - socket_comm_handle
    - socket_comm_session
    argTypes:
    - pcep_socket_comm_handle*
    - pcep_socket_comm_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: comm_session_exists_locking
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 1
    functionsReached:
    - comm_session_exists
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: bool
    signature: "bool comm_session_exists_locking(pcep_socket_comm_handle *socket_comm_handle,\n\t\t\t\t
      pcep_socket_comm_session *socket_comm_session)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:72,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:75,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:78,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:78,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - socket_fd
    - message
    - msg_length
    argTypes:
    - int
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 92
    functionName: write_message
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - pthread_self
    - pcep_log
    - write
    - time
    linkageType: ''
    returnType: void
    signature: void write_message(int socket_fd, const char *message, unsigned int
      msg_length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:101,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:102,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:105,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - socket_fd
    - received_message
    - max_message_size
    argTypes:
    - int
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 108
    functionName: read_message
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - read
    - pcep_log
    - time
    - pthread_self
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int read_message(int socket_fd, char *received_message,\n\t\t\t
      \ unsigned int max_message_size)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:115,1
    - Dst: FD_ZERO
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:117,1
    - Dst: FD_ZERO
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:118,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:126,1
    - Dst: assert
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:127,1
    - Dst: FD_SET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:133,1
    - Dst: FD_SET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:135,1
    - Dst: FD_ZERO
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:140,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:147,1
    - Dst: assert
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:148,1
    - Dst: FD_SET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:154,1
    - Dst: FD_SET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:156,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:161,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - socket_comm_handle
    argTypes:
    - pcep_socket_comm_handle*
    assertStmts:
    - condition: (comm_session->socket_fd > 0)
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/frr/pceplib/pcep_socket_comm_loop.c
    - condition: (comm_session->socket_fd > 0)
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/frr/pceplib/pcep_socket_comm_loop.c
    constantsTouched: []
    func_position:
      end: 164
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 164
    functionName: build_fd_sets
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - FD_ZERO
    - pthread_mutex_lock
    - pthread_mutex_unlock
    - pcep_log
    - assert
    linkageType: ''
    returnType: int
    signature: int build_fd_sets(pcep_socket_comm_handle *socket_comm_handle)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:179,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:181,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:187,1
    - Dst: comm_session_exists
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:189,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:192,1
    - Dst: FD_ISSET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:197,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:203,1
    - Dst: FD_CLR
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:206,1
    - Dst: read_message
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:212,1
    - Dst: pcep_socket_comm_session*::message_handler
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:221,1
    - Dst: pcep_socket_comm_session*::message_ready_to_read_handler
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:233,1
    - Dst: comm_session_exists_locking
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:243,1
    - Dst: pcep_socket_comm_session*::conn_except_notifier
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:253,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:262,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:265,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:268,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:275,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:279,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 1
    argNames:
    - socket_comm_handle
    argTypes:
    - pcep_socket_comm_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 167
    functionDepth: 5
    functionLinenumber: 167
    functionLinenumberEnd: 285
    functionName: handle_reads
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - FD_CLR
    - comm_session_exists
    - pthread_mutex_lock
    - pcep_socket_comm_session*::message_ready_to_read_handler
    - FD_ISSET
    - comm_session_exists_locking
    - strerror
    - read_message
    - pcep_socket_comm_session*::message_handler
    - ordered_list_remove_first_node_equals
    - pcep_socket_comm_session*::conn_except_notifier
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void handle_reads(pcep_socket_comm_handle *socket_comm_handle)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:290,1
    - Dst: comm_session_exists
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:306,1
    - Dst: FD_ISSET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:312,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:316,1
    - Dst: FD_CLR
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:318,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:324,1
    - Dst: write_message
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:327,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:331,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:335,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:336,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:347,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:351,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:354,1
    - Dst: close
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:357,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:366,1
    - Dst: pcep_socket_comm_session*::message_sent_handler
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:368,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:371,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:376,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 1
    argNames:
    - socket_comm_handle
    argTypes:
    - pcep_socket_comm_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 288
    functionDepth: 4
    functionLinenumber: 288
    functionLinenumberEnd: 377
    functionName: handle_writes
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - FD_CLR
    - comm_session_exists
    - pthread_mutex_lock
    - FD_ISSET
    - write_message
    - queue_dequeue
    - close
    - ordered_list_remove_first_node_equals
    - pceplib_free
    - pcep_socket_comm_session*::message_sent_handler
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void handle_writes(pcep_socket_comm_handle *socket_comm_handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socket_comm_handle
    argTypes:
    - pcep_socket_comm_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 384
    functionName: handle_excepts
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handle_excepts(pcep_socket_comm_handle *socket_comm_handle)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:392,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:399,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:400,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:400,1
    - Dst: build_fd_sets
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:411,1
    - Dst: select
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:413,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:418,1
    - Dst: strerror
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:421,1
    - Dst: handle_reads
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:424,1
    - Dst: handle_writes
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:425,1
    - Dst: handle_excepts
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:426,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:429,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:430,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 389
    functionDepth: 6
    functionLinenumber: 389
    functionLinenumberEnd: 433
    functionName: socket_comm_loop
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 1
    functionsReached:
    - strerror
    - handle_writes
    - pthread_self
    - build_fd_sets
    - select
    - handle_excepts
    - handle_reads
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void *socket_comm_loop(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:443,1
    - Dst: FD_SET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:444,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:445,1
    - Dst: handle_reads
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:447,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:451,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:453,1
    - Dst: pcep_socket_comm_handle*::socket_read_func
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:457,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - fd
    - payload
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 435
    functionDepth: 6
    functionLinenumber: 435
    functionLinenumberEnd: 466
    functionName: pceplib_external_socket_read
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - pthread_mutex_lock
    - ordered_list_find
    - pcep_socket_comm_handle*::socket_read_func
    - handle_reads
    - pthread_mutex_unlock
    linkageType: ''
    returnType: int
    signature: int pceplib_external_socket_read(int fd, void *payload)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:476,1
    - Dst: FD_SET
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:477,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:478,1
    - Dst: handle_writes
      Src: /src/frr/pceplib/pcep_socket_comm_loop.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - fd
    - payload
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 468
    functionDepth: 5
    functionLinenumber: 468
    functionLinenumberEnd: 485
    functionName: pceplib_external_socket_write
    functionSourceFile: /src/frr/pceplib/pcep_socket_comm_loop.c
    functionUses: 0
    functionsReached:
    - handle_writes
    - FD_SET
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: int
    signature: int pceplib_external_socket_write(int fd, void *payload)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:46,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic.c:51,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_session_logic.c:53,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:57,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:58,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic.c:62,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:63,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/pcep_session_logic.c:64,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:67,1
    - Dst: pthread_cond_init
      Src: /src/frr/pceplib/pcep_session_logic.c:74,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/pcep_session_logic.c:77,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:80,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic.c:85,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/pcep_session_logic.c:87,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic.c:88,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/pcep_session_logic.c:90,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:93,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 99
    functionName: run_session_logic_common
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_cond_init
    - memset
    - queue_initialize
    - ordered_list_initialize
    - pthread_cond_signal
    - pthread_mutex_init
    - pceplib_malloc
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: bool
    signature: bool run_session_logic_common(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: run_session_logic_common
      Src: /src/frr/pceplib/pcep_session_logic.c:104,1
    - Dst: pthread_create
      Src: /src/frr/pceplib/pcep_session_logic.c:108,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:110,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/pcep_session_logic.c:115,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 4
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: run_session_logic
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - pthread_create
    - initialize_timers
    - pcep_log
    - run_session_logic_common
    linkageType: ''
    returnType: bool
    signature: bool run_session_logic(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: run_session_logic
      Src: /src/frr/pceplib/pcep_session_logic.c:131,1
    - Dst: pceplib_memory_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:138,1
    - Dst: run_session_logic_common
      Src: /src/frr/pceplib/pcep_session_logic.c:146,1
    - Dst: pceplib_infra_config*::pthread_create_func
      Src: /src/frr/pceplib/pcep_session_logic.c:153,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:157,1
    - Dst: pthread_create
      Src: /src/frr/pceplib/pcep_session_logic.c:164,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:167,1
    - Dst: initialize_timers_external_infra
      Src: /src/frr/pceplib/pcep_session_logic.c:179,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:185,1
    - Dst: initialize_socket_comm_external_infra
      Src: /src/frr/pceplib/pcep_session_logic.c:199,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:202,1
    - Dst: initialize_socket_comm_external_infra
      Src: /src/frr/pceplib/pcep_session_logic.c:210,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:214,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 1
    argNames:
    - infra_config
    argTypes:
    - pceplib_infra_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 128
    functionDepth: 5
    functionLinenumber: 128
    functionLinenumberEnd: 223
    functionName: run_session_logic_with_infra
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - initialize_socket_comm_external_infra
    - initialize_timers_external_infra
    - run_session_logic_common
    - pthread_create
    - run_session_logic
    - pceplib_memory_initialize
    - pceplib_infra_config*::pthread_create_func
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool run_session_logic_with_infra(pceplib_infra_config *infra_config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: run_session_logic
      Src: /src/frr/pceplib/pcep_session_logic.c:227,1
    - Dst: pthread_join
      Src: /src/frr/pceplib/pcep_session_logic.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 225
    functionDepth: 5
    functionLinenumber: 225
    functionLinenumberEnd: 235
    functionName: run_session_logic_wait_for_completion
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - run_session_logic
    - pthread_join
    linkageType: ''
    returnType: bool
    signature: bool run_session_logic_wait_for_completion(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:241,1
    - Dst: teardown_timers
      Src: /src/frr/pceplib/pcep_session_logic.c:247,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic.c:249,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/pcep_session_logic.c:251,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic.c:252,1
    - Dst: pthread_join
      Src: /src/frr/pceplib/pcep_session_logic.c:253,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/pcep_session_logic.c:255,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/pcep_session_logic.c:256,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/pcep_session_logic.c:257,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/pcep_session_logic.c:258,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/pcep_session_logic.c:261,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/pcep_session_logic.c:262,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic.c:263,1
    - Dst: destroy_socket_comm_loop
      Src: /src/frr/pceplib/pcep_session_logic.c:266,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 272
    functionName: stop_session_logic
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_join
    - pthread_cond_signal
    - queue_destroy
    - destroy_socket_comm_loop
    - pceplib_free
    - teardown_timers
    - ordered_list_destroy
    - pthread_mutex_destroy
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: bool
    signature: bool stop_session_logic(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close_pcep_session_with_reason
      Src: /src/frr/pceplib/pcep_session_logic.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: close_pcep_session
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - close_pcep_session_with_reason
    linkageType: ''
    returnType: void
    signature: void close_pcep_session(pcep_session *session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_close
      Src: /src/frr/pceplib/pcep_session_logic.c:283,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:285,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic.c:288,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic.c:288,1
    - Dst: session_send_message
      Src: /src/frr/pceplib/pcep_session_logic.c:290,1
    - Dst: socket_comm_session_close_tcp_after_write
      Src: /src/frr/pceplib/pcep_session_logic.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - session
    - reason
    argTypes:
    - pcep_session*
    - enum pcep_close_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 293
    functionName: close_pcep_session_with_reason
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 3
    functionsReached:
    - pcep_msg_create_close
    - socket_comm_session_close_tcp_after_write
    - pthread_self
    - session_send_message
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: "void close_pcep_session_with_reason(pcep_session *session,\n\t\t\t\t
      \   enum pcep_close_reason reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:299,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic.c:307,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/pcep_session_logic.c:308,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:310,1
    - Dst: pcep_session_cancel_timers
      Src: /src/frr/pceplib/pcep_session_logic.c:314,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/pcep_session_logic.c:315,1
    - Dst: queue_destroy_with_data
      Src: /src/frr/pceplib/pcep_session_logic.c:316,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/pcep_session_logic.c:317,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic.c:320,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic.c:325,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_session_logic.c:330,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:331,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic.c:332,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic.c:332,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic.c:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 296
    functionDepth: 3
    functionLinenumber: 296
    functionLinenumberEnd: 334
    functionName: destroy_pcep_session
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_lock
    - queue_destroy_with_data
    - pthread_self
    - ordered_list_remove_first_node_equals
    - socket_comm_session_teardown
    - pcep_session_cancel_timers
    - pceplib_free
    - pthread_mutex_unlock
    - delete_counters_group
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void destroy_pcep_session(pcep_session *session)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic.c:343,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic.c:347,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic.c:351,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/pcep_session_logic.c:355,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 357
    functionName: pcep_session_cancel_timers
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 2
    functionsReached:
    - cancel_timer
    linkageType: ''
    returnType: void
    signature: void pcep_session_cancel_timers(pcep_session *session)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: get_next_session_id
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_next_session_id(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:373,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic.c:380,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_session_logic.c:381,1
    - Dst: get_next_session_id
      Src: /src/frr/pceplib/pcep_session_logic.c:382,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:389,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_session_logic.c:398,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_session_logic.c:401,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic.c:403,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_session_logic.c:405,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic.c:408,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_session_logic.c:410,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic.c:415,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/pcep_session_logic.c:416,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:417,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic.c:421,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 1
    argNames:
    - config
    argTypes:
    - pcep_configuration*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 424
    functionName: create_pcep_session_pre_setup
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - ordered_list_add_node
    - pthread_mutex_lock
    - get_next_session_id
    - memset
    - queue_initialize
    - pthread_mutex_unlock
    - pceplib_malloc
    - pcep_log
    - memcpy
    linkageType: ''
    returnType: pcep_session
    signature: pcep_session *create_pcep_session_pre_setup(pcep_configuration *config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_connect_tcp
      Src: /src/frr/pceplib/pcep_session_logic.c:429,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:430,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/pcep_session_logic.c:432,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic.c:437,1
    - Dst: create_session_counters
      Src: /src/frr/pceplib/pcep_session_logic.c:438,1
    - Dst: send_pcep_open
      Src: /src/frr/pceplib/pcep_session_logic.c:440,1
    - Dst: create_timer
      Src: /src/frr/pceplib/pcep_session_logic.c:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 427
    functionDepth: 4
    functionLinenumber: 427
    functionLinenumberEnd: 448
    functionName: create_pcep_session_post_setup
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_connect_tcp
    - create_timer
    - send_pcep_open
    - create_session_counters
    - destroy_pcep_session
    - pcep_log
    - time
    linkageType: ''
    returnType: bool
    signature: bool create_pcep_session_post_setup(pcep_session *session)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:454,1
    - Dst: create_pcep_session_pre_setup
      Src: /src/frr/pceplib/pcep_session_logic.c:460,1
    - Dst: socket_comm_session_initialize_with_src
      Src: /src/frr/pceplib/pcep_session_logic.c:465,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:478,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/pcep_session_logic.c:480,1
    - Dst: create_pcep_session_post_setup
      Src: /src/frr/pceplib/pcep_session_logic.c:485,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - config
    - pce_ip
    argTypes:
    - pcep_configuration*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 450
    functionDepth: 5
    functionLinenumber: 450
    functionLinenumberEnd: 490
    functionName: create_pcep_session
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_initialize_with_src
    - create_pcep_session_pre_setup
    - destroy_pcep_session
    - pcep_log
    - create_pcep_session_post_setup
    linkageType: ''
    returnType: pcep_session
    signature: "pcep_session *create_pcep_session(pcep_configuration *config,\n\t\t\t\t
      \ struct in_addr *pce_ip)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:496,1
    - Dst: create_pcep_session_pre_setup
      Src: /src/frr/pceplib/pcep_session_logic.c:502,1
    - Dst: socket_comm_session_initialize_with_src_ipv6
      Src: /src/frr/pceplib/pcep_session_logic.c:508,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:522,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/pcep_session_logic.c:525,1
    - Dst: create_pcep_session_post_setup
      Src: /src/frr/pceplib/pcep_session_logic.c:530,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - config
    - pce_ip
    argTypes:
    - pcep_configuration*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 492
    functionDepth: 5
    functionLinenumber: 492
    functionLinenumberEnd: 535
    functionName: create_pcep_session_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 0
    functionsReached:
    - create_pcep_session_pre_setup
    - socket_comm_session_initialize_with_src_ipv6
    - destroy_pcep_session
    - pcep_log
    - create_pcep_session_post_setup
    linkageType: ''
    returnType: pcep_session
    signature: "pcep_session *create_pcep_session_ipv6(pcep_configuration *config,\n\t\t\t\t
      \      struct in6_addr *pce_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/pcep_session_logic.c:540,1
    - Dst: socket_comm_session_send_message
      Src: /src/frr/pceplib/pcep_session_logic.c:541,1
    - Dst: increment_message_tx_counters
      Src: /src/frr/pceplib/pcep_session_logic.c:545,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/pcep_session_logic.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - session
    - message
    argTypes:
    - pcep_session*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 538
    functionDepth: 4
    functionLinenumber: 538
    functionLinenumberEnd: 552
    functionName: session_send_message
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 6
    functionsReached:
    - pcep_encode_message
    - increment_message_tx_counters
    - socket_comm_session_send_message
    - pcep_msg_free_message
    linkageType: ''
    returnType: void
    signature: void session_send_message(pcep_session *session, struct pcep_message
      *message)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:562,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_session_logic.c:570,1
    - Dst: pcep_tlv_create_stateful_pce_capability
      Src: /src/frr/pceplib/pcep_session_logic.c:572,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_session_logic.c:593,1
    - Dst: pcep_tlv_create_lsp_db_version
      Src: /src/frr/pceplib/pcep_session_logic.c:594,1
    - Dst: pcep_tlv_create_sr_pce_capability
      Src: /src/frr/pceplib/pcep_session_logic.c:610,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_session_logic.c:620,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:624,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_session_logic.c:625,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_session_logic.c:629,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_session_logic.c:631,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_session_logic.c:632,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_session_logic.c:633,1
    - Dst: pcep_tlv_create_path_setup_type_capability
      Src: /src/frr/pceplib/pcep_session_logic.c:633,1
    - Dst: pcep_msg_create_open_with_tlvs
      Src: /src/frr/pceplib/pcep_session_logic.c:637,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:642,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic.c:645,1
    - Dst: pthread_self
      Src: /src/frr/pceplib/pcep_session_logic.c:645,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 556
    functionDepth: 3
    functionLinenumber: 556
    functionLinenumberEnd: 649
    functionName: create_pcep_open
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 1
    functionsReached:
    - dll_append
    - pcep_msg_create_open_with_tlvs
    - pcep_tlv_create_sr_pce_capability
    - pthread_self
    - pcep_tlv_create_stateful_pce_capability
    - pcep_tlv_create_lsp_db_version
    - dll_initialize
    - pceplib_malloc
    - pcep_log
    - time
    - pcep_tlv_create_path_setup_type_capability
    linkageType: ''
    returnType: struct pcep_message
    signature: struct pcep_message *create_pcep_open(pcep_session *session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: session_send_message
      Src: /src/frr/pceplib/pcep_session_logic.c:654,1
    - Dst: create_pcep_open
      Src: /src/frr/pceplib/pcep_session_logic.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 652
    functionDepth: 5
    functionLinenumber: 652
    functionLinenumberEnd: 655
    functionName: send_pcep_open
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 1
    functionsReached:
    - create_pcep_open
    - session_send_message
    linkageType: ''
    returnType: void
    signature: void send_pcep_open(pcep_session *session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_session_logic.c:664,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_session_logic.c:670,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/pcep_session_logic.c:672,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_session_logic.c:674,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 661
    functionDepth: 3
    functionLinenumber: 661
    functionLinenumberEnd: 677
    functionName: session_exists
    functionSourceFile: /src/frr/pceplib/pcep_session_logic.c
    functionUses: 3
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - pcep_log
    - ordered_list_find
    linkageType: ''
    returnType: bool
    signature: bool session_exists(pcep_session *session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_messages.c:37,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_messages.c:38,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_messages.c:39,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_messages.c:41,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_messages.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - msg_type
    - obj_list
    argTypes:
    - enum pcep_message_types
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 47
    functionName: pcep_msg_create_common_with_obj_list
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - dll_initialize
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *\npcep_msg_create_common_with_obj_list(enum pcep_message_types
      msg_type,\n\t\t\t\t     double_linked_list *obj_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msg_type
    argTypes:
    - enum pcep_message_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: pcep_msg_create_common
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    linkageType: ''
    returnType: struct pcep_message
    signature: 'struct pcep_message *

      pcep_msg_create_common(enum pcep_message_types msg_type)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common
      Src: /src/frr/pceplib/pcep_msg_messages.c:58,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_messages.c:59,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/pcep_msg_messages.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - keepalive
    - deadtimer
    - sid
    argTypes:
    - uint8_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: pcep_msg_create_open
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - dll_append
    - pcep_obj_create_open
    - pcep_msg_create_common
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_msg_create_open(uint8_t keepalive, uint8_t
      deadtimer,\n\t\t\t\t\t  uint8_t sid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common
      Src: /src/frr/pceplib/pcep_msg_messages.c:69,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_messages.c:70,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/pcep_msg_messages.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - keepalive
    - deadtimer
    - sid
    - tlv_list
    argTypes:
    - uint8_t
    - uint8_t
    - uint8_t
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 74
    functionName: pcep_msg_create_open_with_tlvs
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 1
    functionsReached:
    - dll_append
    - pcep_obj_create_open
    - pcep_msg_create_common
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *\npcep_msg_create_open_with_tlvs(uint8_t keepalive,
      uint8_t deadtimer,\n\t\t\t       uint8_t sid, double_linked_list *tlv_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:86,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/pcep_msg_messages.c:88,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/pcep_msg_messages.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - rp
    - endpoints
    - object_list
    argTypes:
    - struct pcep_object_rp*
    - struct pcep_object_endpoints_ipv4*
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: pcep_msg_create_request
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 1
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    - dll_prepend
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *\npcep_msg_create_request(struct pcep_object_rp
      *rp,\n\t\t\tstruct pcep_object_endpoints_ipv4 *endpoints,\n\t\t\tdouble_linked_list
      *object_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:103,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/pcep_msg_messages.c:105,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/pcep_msg_messages.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - rp
    - endpoints
    - object_list
    argTypes:
    - struct pcep_object_rp*
    - struct pcep_object_endpoints_ipv6*
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 109
    functionName: pcep_msg_create_request_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    - dll_prepend
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *\npcep_msg_create_request_ipv6(struct pcep_object_rp
      *rp,\n\t\t\t     struct pcep_object_endpoints_ipv6 *endpoints,\n\t\t\t     double_linked_list
      *object_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:114,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/pcep_msg_messages.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rp
    - object_list
    argTypes:
    - struct pcep_object_rp*
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 122
    functionName: pcep_msg_create_reply
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    - dll_prepend
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_msg_create_reply(struct pcep_object_rp *rp,\n\t\t\t\t\t
      \  double_linked_list *object_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common
      Src: /src/frr/pceplib/pcep_msg_messages.c:126,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_messages.c:127,1
    - Dst: pcep_obj_create_close
      Src: /src/frr/pceplib/pcep_msg_messages.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - reason
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 124
    functionDepth: 4
    functionLinenumber: 124
    functionLinenumberEnd: 130
    functionName: pcep_msg_create_close
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 1
    functionsReached:
    - dll_append
    - pcep_obj_create_close
    - pcep_msg_create_common
    linkageType: ''
    returnType: struct pcep_message
    signature: struct pcep_message *pcep_msg_create_close(uint8_t reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common
      Src: /src/frr/pceplib/pcep_msg_messages.c:135,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_messages.c:136,1
    - Dst: pcep_obj_create_error
      Src: /src/frr/pceplib/pcep_msg_messages.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - error_type
    - error_value
    argTypes:
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 4
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: pcep_msg_create_error
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 1
    functionsReached:
    - dll_append
    - pcep_obj_create_error
    - pcep_msg_create_common
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_msg_create_error(uint8_t error_type,\n\t\t\t\t\t
      \  uint8_t error_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:146,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/pcep_msg_messages.c:148,1
    - Dst: pcep_obj_create_error
      Src: /src/frr/pceplib/pcep_msg_messages.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - error_type
    - error_value
    - object_list
    argTypes:
    - uint8_t
    - uint8_t
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 142
    functionDepth: 4
    functionLinenumber: 142
    functionLinenumberEnd: 152
    functionName: pcep_msg_create_error_with_objects
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 1
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    - dll_prepend
    - pcep_obj_create_error
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *\npcep_msg_create_error_with_objects(uint8_t
      error_type, uint8_t error_value,\n\t\t\t\t   double_linked_list *object_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common
      Src: /src/frr/pceplib/pcep_msg_messages.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 4
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: pcep_msg_create_keepalive
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 1
    functionsReached:
    - pcep_msg_create_common
    linkageType: ''
    returnType: struct pcep_message
    signature: struct pcep_message *pcep_msg_create_keepalive(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state_report_object_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 166
    functionName: pcep_msg_create_report
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 1
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    linkageType: ''
    returnType: struct pcep_message
    signature: 'struct pcep_message *

      pcep_msg_create_report(double_linked_list *state_report_object_list)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:172,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:182,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:198,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:212,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:226,1
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:233,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - update_request_object_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 235
    functionName: pcep_msg_create_update
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    - pcep_log
    linkageType: ''
    returnType: struct pcep_message
    signature: 'struct pcep_message *

      pcep_msg_create_update(double_linked_list *update_request_object_list)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:241,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:250,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:263,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:274,1
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:281,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - lsp_object_list
    argTypes:
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 283
    functionName: pcep_msg_create_initiate
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    - pcep_log
    linkageType: ''
    returnType: struct pcep_message
    signature: 'struct pcep_message *

      pcep_msg_create_initiate(double_linked_list *lsp_object_list)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_messages.c:289,1
    - Dst: pcep_msg_create_common_with_obj_list
      Src: /src/frr/pceplib/pcep_msg_messages.c:295,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/pcep_msg_messages.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - notify
    - object_list
    argTypes:
    - struct pcep_object_notify*
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 300
    functionName: pcep_msg_create_notify
    functionSourceFile: /src/frr/pceplib/pcep_msg_messages.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_common_with_obj_list
    - dll_prepend
    - pcep_log
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_msg_create_notify(struct pcep_object_notify
      *notify,\n\t\t\t\t\t    double_linked_list *object_list)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:36,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:39,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:41,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:43,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:45,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:47,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:49,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:51,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:53,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:55,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:57,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:59,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:61,1
    - Dst: clone_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:65,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:74,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:76,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:78,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:80,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:82,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:86,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:90,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:92,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:94,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:96,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:98,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:100,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:102,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:104,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:106,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:108,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:110,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:112,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:114,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:116,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:118,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:120,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:122,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:124,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:126,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:128,1
    - Dst: clone_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:132,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:138,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:141,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:143,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:145,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:147,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:149,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:151,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:153,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:155,1
    - Dst: clone_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:158,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:166,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:169,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:172,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:175,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:178,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:181,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:184,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:187,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:190,1
    - Dst: clone_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:195,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:202,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:205,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:208,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:210,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:213,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:216,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:219,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:222,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:225,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:228,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:231,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:234,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:237,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:240,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:243,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:246,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:249,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:252,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:255,1
    - Dst: clone_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:258,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:264,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:266,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:269,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:272,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:275,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:278,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:281,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:284,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:287,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:294,1
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:298,1
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:303,1
    - Dst: snprintf
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:308,1
    - Dst: create_counters_group
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:315,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:320,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:321,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:322,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:323,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:324,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:326,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:328,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:330,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:332,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:333,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 98
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 335
    functionName: create_session_counters
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_counters.c
    functionUses: 1
    functionsReached:
    - snprintf
    - add_counters_subgroup
    - inet_ntop
    - create_counters_subgroup
    - create_subgroup_counter
    - clone_counters_subgroup
    - create_counters_group
    - time
    linkageType: ''
    returnType: void
    signature: void create_session_counters(pcep_session *session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: increment_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:355,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:373,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:392,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:404,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:418,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - session
    - message
    - is_rx
    argTypes:
    - pcep_session*
    - struct pcep_message*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 422
    functionName: increment_message_counters
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_counters.c
    functionUses: 0
    functionsReached:
    - increment_counter
    linkageType: ''
    returnType: void
    signature: "void increment_message_counters(pcep_session *session,\n\t\t\t\tstruct
      pcep_message *message, bool is_rx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: increment_message_counters
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - session
    - message
    argTypes:
    - pcep_session*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 424
    functionDepth: 2
    functionLinenumber: 424
    functionLinenumberEnd: 428
    functionName: increment_message_rx_counters
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_counters.c
    functionUses: 1
    functionsReached:
    - increment_message_counters
    linkageType: ''
    returnType: void
    signature: "void increment_message_rx_counters(pcep_session *session,\n\t\t\t\t
      \  struct pcep_message *message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: increment_message_counters
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - session
    - message
    argTypes:
    - pcep_session*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 434
    functionName: increment_message_tx_counters
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_counters.c
    functionUses: 1
    functionsReached:
    - increment_message_counters
    linkageType: ''
    returnType: void
    signature: "void increment_message_tx_counters(pcep_session *session,\n\t\t\t\t
      \  struct pcep_message *message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: increment_counter
      Src: /src/frr/pceplib/pcep_session_logic_counters.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - session
    - counter_id
    argTypes:
    - pcep_session*
    - pcep_session_counters_event_counter_ids
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 442
    functionName: increment_event_counters
    functionSourceFile: /src/frr/pceplib/pcep_session_logic_counters.c
    functionUses: 2
    functionsReached:
    - increment_counter
    linkageType: ''
    returnType: void
    signature: "void increment_event_counters(\n\tpcep_session *session,\n\tpcep_session_counters_event_counter_ids
      counter_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:30,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:38,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_counters.c:46,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_counters.c:47,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_counters.c:49,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_counters.c:51,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_utils_counters.c:54,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_utils_counters.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - group_name
    - max_subgroups
    argTypes:
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 60
    functionName: create_counters_group
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - memset
    - strlcpy
    - pceplib_malloc
    - pcep_log
    - time
    linkageType: ''
    returnType: struct counters_group
    signature: "struct counters_group *create_counters_group(const char *group_name,\n\t\t\t\t\t
      \    uint16_t max_subgroups)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:67,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:75,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:83,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_counters.c:91,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_counters.c:92,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_counters.c:93,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_counters.c:95,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_utils_counters.c:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - subgroup_name
    - subgroup_id
    - max_counters
    argTypes:
    - char*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 104
    functionName: create_counters_subgroup
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - pceplib_malloc
    - pcep_log
    - memset
    linkageType: ''
    returnType: struct counters_subgroup
    signature: "struct counters_subgroup *create_counters_subgroup(const char *subgroup_name,\n\t\t\t\t\t\t
      \  uint16_t subgroup_id,\n\t\t\t\t\t\t   uint16_t max_counters)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:111,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:119,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:127,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/pcep_utils_counters.c:134,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/pcep_utils_counters.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - subgroup
    - subgroup_name
    - subgroup_id
    argTypes:
    - struct counters_subgroup*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 147
    functionName: clone_counters_subgroup
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - create_counters_subgroup
    - pcep_log
    - create_subgroup_counter
    linkageType: ''
    returnType: struct counters_subgroup
    signature: "struct counters_subgroup *\nclone_counters_subgroup(struct counters_subgroup
      *subgroup,\n\t\t\tconst char *subgroup_name, uint16_t subgroup_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:153,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:161,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - group
    - subgroup
    argTypes:
    - struct counters_group*
    - struct counters_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 180
    functionName: add_counters_subgroup
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: "bool add_counters_subgroup(struct counters_group *group,\n\t\t\t   struct
      counters_subgroup *subgroup)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:186,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:194,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:202,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_utils_counters.c:210,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_utils_counters.c:211,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_utils_counters.c:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - subgroup
    - counter_id
    - counter_name
    argTypes:
    - struct counters_subgroup*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 220
    functionName: create_subgroup_counter
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - pceplib_malloc
    - pcep_log
    - memset
    linkageType: ''
    returnType: bool
    signature: "bool create_subgroup_counter(struct counters_subgroup *subgroup,\n\t\t\t
      \    uint32_t counter_id, const char *counter_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:225,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/pcep_utils_counters.c:236,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_counters.c:240,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_counters.c:241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct counters_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 244
    functionName: delete_counters_group
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - pceplib_free
    - delete_counters_subgroup
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool delete_counters_group(struct counters_group *group)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:249,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_counters.c:260,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_counters.c:264,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_utils_counters.c:265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - subgroup
    argTypes:
    - struct counters_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 268
    functionName: delete_counters_subgroup
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - pceplib_free
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool delete_counters_subgroup(struct counters_subgroup *subgroup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:273,1
    - Dst: reset_subgroup_counters
      Src: /src/frr/pceplib/pcep_utils_counters.c:284,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_utils_counters.c:288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct counters_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 291
    functionName: reset_group_counters
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 0
    functionsReached:
    - time
    - pcep_log
    - reset_subgroup_counters
    linkageType: ''
    returnType: bool
    signature: bool reset_group_counters(struct counters_group *group)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:296,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - subgroup
    argTypes:
    - struct counters_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 312
    functionName: reset_subgroup_counters
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool reset_subgroup_counters(struct counters_subgroup *subgroup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:318,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:326,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:335,1
    - Dst: increment_subgroup_counter
      Src: /src/frr/pceplib/pcep_utils_counters.c:342,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - group
    - subgroup_id
    - counter_id
    argTypes:
    - struct counters_group*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 343
    functionName: increment_counter
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 2
    functionsReached:
    - increment_subgroup_counter
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: "bool increment_counter(struct counters_group *group, uint16_t subgroup_id,\n\t\t
      \      uint16_t counter_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:349,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:357,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - subgroup
    - counter_id
    argTypes:
    - struct counters_subgroup*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 375
    functionName: increment_subgroup_counter
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: "bool increment_subgroup_counter(struct counters_subgroup *subgroup,\n\t\t\t\tuint16_t
      counter_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:380,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_utils_counters.c:387,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:388,1
    - Dst: dump_counters_subgroup_to_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct counters_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 403
    functionName: dump_counters_group_to_log
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 0
    functionsReached:
    - pcep_log
    - time
    - dump_counters_subgroup_to_log
    linkageType: ''
    returnType: bool
    signature: bool dump_counters_group_to_log(struct counters_group *group)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:408,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:415,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_counters.c:424,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - subgroup
    argTypes:
    - struct counters_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 430
    functionName: dump_counters_subgroup_to_log
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 1
    functionsReached:
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool dump_counters_subgroup_to_log(struct counters_subgroup *subgroup)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - group
    - subgroup_id
    argTypes:
    - struct counters_group*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 446
    functionName: find_subgroup
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct counters_subgroup
    signature: "struct counters_subgroup *find_subgroup(const struct counters_group
      *group,\n\t\t\t\t\tuint16_t subgroup_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - subgroup
    argTypes:
    - struct counters_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 463
    functionName: subgroup_counters_total
    functionSourceFile: /src/frr/pceplib/pcep_utils_counters.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t subgroup_counters_total(struct counters_subgroup *subgroup)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 334
    functionName: initialize_tlv_coders
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize_tlv_coders(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initialize_tlv_coders
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:339,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:342,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:350,1
    - Dst: tlv_encoder
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:360,1
    - Dst: write_tlv_header
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:361,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:365,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - tlv_hdr
    - versioning
    - buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 366
    functionName: pcep_encode_tlv
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - initialize_tlv_coders
    - normalize_pcep_tlv_length
    - tlv_encoder
    - write_tlv_header
    - pcep_log
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv(struct pcep_object_tlv_header *tlv_hdr,\n\t\t\t
      struct pcep_versioning *versioning, uint8_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:385,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - tlv_hdr
    - tlv_length
    - versioning
    - buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint16_t
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 387
    functionName: write_tlv_header
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 1
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: "void write_tlv_header(struct pcep_object_tlv_header *tlv_hdr,\n\t\t
      \     uint16_t tlv_length, struct pcep_versioning *versioning,\n\t\t      uint8_t
      *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 404
    functionName: pcep_encode_tlv_no_path_vector
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_no_path_vector(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\tstruct pcep_versioning *versioning,\n\t\t\t\t\tuint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 435
    functionName: pcep_encode_tlv_stateful_pce_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_stateful_pce_capability(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\tstruct pcep_versioning *versioning,\n\t\t\t\t\tuint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 448
    functionName: pcep_encode_tlv_symbolic_path_name
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_symbolic_path_name(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\t    struct pcep_versioning *versioning,\n\t\t\t\t\t    uint8_t
      *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:465,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 469
    functionName: pcep_encode_tlv_ipv4_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_ipv4_lsp_identifiers(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t     struct pcep_versioning *versioning,\n\t\t\t\t     uint8_t
      *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:480,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:481,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:482,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:485,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 489
    functionName: pcep_encode_tlv_ipv6_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - encode_ipv6
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_ipv6_lsp_identifiers(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t     struct pcep_versioning *versioning,\n\t\t\t\t     uint8_t
      *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 502
    functionName: pcep_encode_tlv_lsp_error_code
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_lsp_error_code(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\tstruct pcep_versioning *versioning,\n\t\t\t\t\tuint8_t *tlv_body_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:547,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:553,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:557,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:558,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 569
    functionName: pcep_encode_tlv_rsvp_error_spec
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - encode_ipv6
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_rsvp_error_spec(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\t struct pcep_versioning *versioning,\n\t\t\t\t\t uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htobe64
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 581
    functionName: pcep_encode_tlv_lsp_db_version
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htobe64
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_lsp_db_version(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\tstruct pcep_versioning *versioning,\n\t\t\t\t\tuint8_t *tlv_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 603
    functionName: pcep_encode_tlv_speaker_entity_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_speaker_entity_id(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\t   struct pcep_versioning *versioning,\n\t\t\t\t\t   uint8_t
      *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 618
    functionName: pcep_encode_tlv_sr_pce_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_sr_pce_capability(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\t   struct pcep_versioning *versioning,\n\t\t\t\t\t   uint8_t
      *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 630
    functionName: pcep_encode_tlv_path_setup_type
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_path_setup_type(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\t struct pcep_versioning *versioning,\n\t\t\t\t\t uint8_t *tlv_body_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:653,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:661,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:667,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 632
    functionDepth: 2
    functionLinenumber: 632
    functionLinenumberEnd: 674
    functionName: pcep_encode_tlv_path_setup_type_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - pcep_encode_tlv
    - normalize_pcep_tlv_length
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_path_setup_type_capability(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\t   struct pcep_versioning *versioning,\n\t\t\t\t\t   uint8_t
      *tlv_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:684,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:690,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 694
    functionName: pcep_encode_tlv_pol_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    - encode_ipv6
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_pol_id(struct pcep_object_tlv_header *tlv,\n\t\t\t\tstruct
      pcep_versioning *versioning,\n\t\t\t\tuint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:703,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 706
    functionName: pcep_encode_tlv_pol_name
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - normalize_pcep_tlv_length
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_pol_name(struct pcep_object_tlv_header *tlv,\n\t\t\t\t
      \ struct pcep_versioning *versioning,\n\t\t\t\t  uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:718,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:719,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 725
    functionName: pcep_encode_tlv_cpath_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    - encode_ipv6
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_cpath_id(struct pcep_object_tlv_header *tlv,\n\t\t\t\t
      \ struct pcep_versioning *versioning,\n\t\t\t\t  uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 727
    functionDepth: 0
    functionLinenumber: 727
    functionLinenumberEnd: 739
    functionName: pcep_encode_tlv_cpath_preference
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_cpath_preference(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t\t  struct pcep_versioning *versioning,\n\t\t\t\t\t  uint8_t
      *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:750,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 741
    functionDepth: 0
    functionLinenumber: 741
    functionLinenumberEnd: 754
    functionName: pcep_encode_tlv_vendor_info
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_vendor_info(struct pcep_object_tlv_header
      *tlv,\n\t\t\t\t     struct pcep_versioning *versioning,\n\t\t\t\t     uint8_t
      *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 767
    functionName: pcep_encode_tlv_arbitrary
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_arbitrary(struct pcep_object_tlv_header *tlv,\n\t\t\t\t
      \  struct pcep_versioning *versioning,\n\t\t\t\t   uint8_t *tlv_body_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - tlv
    - versioning
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 797
    functionName: pcep_encode_tlv_of_list
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_tlv_of_list(struct pcep_object_tlv_header *tlv,\n\t\t\t\t
      struct pcep_versioning *versioning,\n\t\t\t\t uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:806,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:809,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tlv_buf
    - tlv_hdr
    argTypes:
    - uint8_t*
    - struct pcep_object_tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 812
    functionName: pcep_decode_tlv_hdr
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohs
    - memset
    linkageType: ''
    returnType: void
    signature: "void pcep_decode_tlv_hdr(const uint8_t *tlv_buf,\n\t\t\t struct pcep_object_tlv_header
      *tlv_hdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initialize_tlv_coders
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:816,1
    - Dst: pcep_decode_tlv_hdr
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:821,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:824,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:831,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:839,1
    - Dst: tlv_decoder
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:844,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - tlv_buf
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 814
    functionDepth: 1
    functionLinenumber: 814
    functionLinenumberEnd: 845
    functionName: pcep_decode_tlv
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - tlv_decoder
    - initialize_tlv_coders
    - pcep_log
    - pcep_decode_tlv_hdr
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: struct pcep_object_tlv_header *pcep_decode_tlv(const uint8_t *tlv_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:851,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:852,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - new_tlv_length
    argTypes:
    - struct pcep_object_tlv_header*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 856
    functionName: common_tlv_create
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: 'struct pcep_object_tlv_header *

      common_tlv_create(struct pcep_object_tlv_header *hdr, uint16_t new_tlv_length)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:863,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 858
    functionDepth: 2
    functionLinenumber: 858
    functionLinenumberEnd: 869
    functionName: pcep_decode_tlv_no_path_vector
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_no_path_vector(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t       const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 896
    functionName: pcep_decode_tlv_stateful_pce_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_stateful_pce_capability(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\t\tconst uint8_t *tlv_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:903,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:912,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:920,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 898
    functionDepth: 2
    functionLinenumber: 898
    functionLinenumberEnd: 923
    functionName: pcep_decode_tlv_symbolic_path_name
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - common_tlv_create
    - pcep_log
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_symbolic_path_name(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\t   const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:930,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:941,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 945
    functionName: pcep_decode_tlv_ipv4_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohs
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_ipv4_lsp_identifiers(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\t     const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:952,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:957,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:958,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:959,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:962,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 947
    functionDepth: 2
    functionLinenumber: 947
    functionLinenumberEnd: 966
    functionName: pcep_decode_tlv_ipv6_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - htons
    - common_tlv_create
    - decode_ipv6
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_ipv6_lsp_identifiers(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\t     const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:973,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 968
    functionDepth: 2
    functionLinenumber: 968
    functionLinenumberEnd: 979
    functionName: pcep_decode_tlv_lsp_error_code
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_lsp_error_code(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t       const uint8_t *tlv_body_buf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:989,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:998,1
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1005,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1016,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1020,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1023,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 981
    functionDepth: 2
    functionLinenumber: 981
    functionLinenumberEnd: 1028
    functionName: pcep_decode_tlv_rsvp_error_spec
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohs
    - common_tlv_create
    - pcep_log
    - decode_ipv6
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_rsvp_error_spec(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\tconst uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1035,1
    - Dst: be64toh
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1030
    functionDepth: 2
    functionLinenumber: 1030
    functionLinenumberEnd: 1041
    functionName: pcep_decode_tlv_lsp_db_version
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - be64toh
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_lsp_db_version(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t       const uint8_t *tlv_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1049,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1057,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1064,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1068,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1069,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1070,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1043
    functionDepth: 2
    functionLinenumber: 1043
    functionLinenumberEnd: 1074
    functionName: pcep_decode_tlv_speaker_entity_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - dll_append
    - common_tlv_create
    - dll_initialize
    - pceplib_malloc
    - ntohl
    - pcep_log
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_speaker_entity_id(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\t  const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1076
    functionDepth: 2
    functionLinenumber: 1076
    functionLinenumberEnd: 1090
    functionName: pcep_decode_tlv_sr_pce_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_sr_pce_capability(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\t  const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1092
    functionDepth: 2
    functionLinenumber: 1092
    functionLinenumberEnd: 1104
    functionName: pcep_decode_tlv_path_setup_type
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_path_setup_type(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\tconst uint8_t *tlv_body_buf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1111,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1118,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1125,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1128,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1130,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1139,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1140,1
    - Dst: pcep_decode_tlv
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1145,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1147,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1155,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1156,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1106
    functionDepth: 2
    functionLinenumber: 1106
    functionLinenumberEnd: 1160
    functionName: pcep_decode_tlv_path_setup_type_capability
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - dll_append
    - normalize_pcep_tlv_length
    - common_tlv_create
    - pcep_decode_tlv
    - dll_initialize
    - pceplib_malloc
    - pcep_log
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *pcep_decode_tlv_path_setup_type_capability(\n\tstruct
      pcep_object_tlv_header *tlv_hdr, const uint8_t *tlv_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1167,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1171,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1177,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1161
    functionDepth: 2
    functionLinenumber: 1161
    functionLinenumberEnd: 1181
    functionName: pcep_decode_tlv_pol_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_tlv_create
    - decode_ipv6
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_pol_id(struct pcep_object_tlv_header
      *tlv_hdr,\n\t\t       const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1187,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1182
    functionDepth: 2
    functionLinenumber: 1182
    functionLinenumberEnd: 1193
    functionName: pcep_decode_tlv_pol_name
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - common_tlv_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_pol_name(struct pcep_object_tlv_header
      *tlv_hdr,\n\t\t\t const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1200,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1204,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1205,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1194
    functionDepth: 2
    functionLinenumber: 1194
    functionLinenumberEnd: 1209
    functionName: pcep_decode_tlv_cpath_id
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_tlv_create
    - decode_ipv6
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_cpath_id(struct pcep_object_tlv_header
      *tlv_hdr,\n\t\t\t const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1216,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1210
    functionDepth: 2
    functionLinenumber: 1210
    functionLinenumberEnd: 1222
    functionName: pcep_decode_tlv_cpath_preference
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_cpath_preference(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t\t const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1229,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1233,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1224
    functionDepth: 2
    functionLinenumber: 1224
    functionLinenumberEnd: 1237
    functionName: pcep_decode_tlv_vendor_info
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_tlv_create
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_vendor_info(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t    const uint8_t *tlv_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1244,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1252,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1239
    functionDepth: 2
    functionLinenumber: 1239
    functionLinenumberEnd: 1265
    functionName: pcep_decode_tlv_arbitrary
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - common_tlv_create
    - pcep_log
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_arbitrary(struct
      pcep_object_tlv_header *tlv_hdr,\n\t\t\t  const uint8_t *tlv_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_tlv_create
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1272,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1275,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1280,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1281,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_tlvs_encoding.c:1282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - tlv_hdr
    - tlv_body_buf
    argTypes:
    - struct pcep_object_tlv_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1267
    functionDepth: 2
    functionLinenumber: 1267
    functionLinenumberEnd: 1286
    functionName: pcep_decode_tlv_of_list
    functionSourceFile: /src/frr/pceplib/pcep_msg_tlvs_encoding.c
    functionUses: 0
    functionsReached:
    - dll_append
    - ntohs
    - common_tlv_create
    - dll_initialize
    - pceplib_malloc
    linkageType: ''
    returnType: struct pcep_object_tlv_header
    signature: "struct pcep_object_tlv_header *\npcep_decode_tlv_of_list(struct pcep_object_tlv_header
      *tlv_hdr,\n\t\t\tconst uint8_t *tlv_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: run_session_logic
      Src: /src/frr/pceplib/pcep_pcc_api.c:48,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 5
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: initialize_pcc
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - run_session_logic
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool initialize_pcc(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/pcep_pcc_api.c:61,1
    - Dst: run_session_logic_with_infra
      Src: /src/frr/pceplib/pcep_pcc_api.c:64,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - infra_config
    argTypes:
    - struct pceplib_infra_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 58
    functionDepth: 6
    functionLinenumber: 58
    functionLinenumberEnd: 72
    functionName: initialize_pcc_infra
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - run_session_logic_with_infra
    - initialize_pcc
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool initialize_pcc_infra(struct pceplib_infra_config *infra_config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_session_logic_wait_for_completion
      Src: /src/frr/pceplib/pcep_pcc_api.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 6
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: initialize_pcc_wait_for_completion
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 0
    functionsReached:
    - run_session_logic_wait_for_completion
    linkageType: ''
    returnType: bool
    signature: bool initialize_pcc_wait_for_completion(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stop_session_logic
      Src: /src/frr/pceplib/pcep_pcc_api.c:84,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 82
    functionDepth: 5
    functionLinenumber: 82
    functionLinenumberEnd: 91
    functionName: destroy_pcc
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - stop_session_logic
    - pcep_log
    linkageType: ''
    returnType: bool
    signature: bool destroy_pcc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_pcc_api.c:97,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_pcc_api.c:98,1
    - Dst: create_default_pcep_versioning
      Src: /src/frr/pceplib/pcep_pcc_api.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 138
    functionName: create_default_pcep_configuration
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - create_default_pcep_versioning
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: pcep_configuration
    signature: pcep_configuration *create_default_pcep_configuration(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_pcep_versioning
      Src: /src/frr/pceplib/pcep_pcc_api.c:142,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_pcc_api.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - config
    argTypes:
    - pcep_configuration*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: destroy_pcep_configuration
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - pceplib_free
    - destroy_pcep_versioning
    linkageType: ''
    returnType: void
    signature: void destroy_pcep_configuration(pcep_configuration *config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/pcep_pcc_api.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - config
    - pce_ip
    argTypes:
    - pcep_configuration*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 6
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: connect_pce
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - create_pcep_session
    linkageType: ''
    returnType: pcep_session
    signature: pcep_session *connect_pce(pcep_configuration *config, struct in_addr
      *pce_ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_pcep_session_ipv6
      Src: /src/frr/pceplib/pcep_pcc_api.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - config
    - pce_ip
    argTypes:
    - pcep_configuration*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 6
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: connect_pce_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - create_pcep_session_ipv6
    linkageType: ''
    returnType: pcep_session
    signature: "pcep_session *connect_pce_ipv6(pcep_configuration *config,\n\t\t\t
      \      struct in6_addr *pce_ip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: session_exists
      Src: /src/frr/pceplib/pcep_pcc_api.c:159,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:160,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/pcep_pcc_api.c:171,1
    - Dst: close_pcep_session
      Src: /src/frr/pceplib/pcep_pcc_api.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 180
    functionName: disconnect_pce
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - close_pcep_session
    - session_exists
    - pcep_log
    - destroy_pcep_session
    linkageType: ''
    returnType: void
    signature: void disconnect_pce(pcep_session *session)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:186,1
    - Dst: session_exists
      Src: /src/frr/pceplib/pcep_pcc_api.c:193,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:194,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/pcep_pcc_api.c:201,1
    - Dst: socket_comm_session_send_message
      Src: /src/frr/pceplib/pcep_pcc_api.c:202,1
    - Dst: increment_message_tx_counters
      Src: /src/frr/pceplib/pcep_pcc_api.c:206,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/pcep_pcc_api.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - session
    - msg
    - free_after_send
    argTypes:
    - pcep_session*
    - struct pcep_message*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 214
    functionName: send_message
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 76
    functionsReached:
    - pcep_encode_message
    - pcep_msg_free_message
    - increment_message_tx_counters
    - socket_comm_session_send_message
    - session_exists
    - pcep_log
    linkageType: ''
    returnType: void
    signature: "void send_message(pcep_session *session, struct pcep_message *msg,\n\t\t
      \ bool free_after_send)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:220,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_pcc_api.c:227,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_pcc_api.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: event_queue_is_empty
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_lock
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: bool
    signature: bool event_queue_is_empty(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:240,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_pcc_api.c:247,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_pcc_api.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 253
    functionName: event_queue_num_events_available
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t event_queue_num_events_available(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:260,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/pcep_pcc_api.c:267,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/pcep_pcc_api.c:268,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/pcep_pcc_api.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 273
    functionName: event_queue_get_event
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_lock
    - queue_dequeue
    - pcep_log
    - pthread_mutex_unlock
    linkageType: ''
    returnType: struct pcep_event
    signature: struct pcep_event *event_queue_get_event(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:280,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/pcep_pcc_api.c:287,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_pcc_api.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct pcep_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 277
    functionDepth: 4
    functionLinenumber: 277
    functionLinenumberEnd: 291
    functionName: destroy_pcep_event
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - pceplib_free
    - pcep_log
    - pcep_msg_free_message
    linkageType: ''
    returnType: void
    signature: void destroy_pcep_event(struct pcep_event *event)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 1
    argNames:
    - event_type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 330
    functionName: get_event_type_str
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_event_type_str(int event_type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: session_exists
      Src: /src/frr/pceplib/pcep_pcc_api.c:334,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:335,1
    - Dst: time
      Src: /src/frr/pceplib/pcep_pcc_api.c:344,1
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_pcc_api.c:348,1
    - Dst: inet_ntop
      Src: /src/frr/pceplib/pcep_pcc_api.c:353,1
    - Dst: snprintf
      Src: /src/frr/pceplib/pcep_pcc_api.c:358,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/pcep_pcc_api.c:362,1
    - Dst: dump_counters_group_to_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 332
    functionDepth: 4
    functionLinenumber: 332
    functionLinenumberEnd: 367
    functionName: dump_pcep_session_counters
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - dump_counters_group_to_log
    - snprintf
    - strlcpy
    - inet_ntop
    - session_exists
    - pcep_log
    - time
    linkageType: ''
    returnType: void
    signature: void dump_pcep_session_counters(pcep_session *session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: session_exists
      Src: /src/frr/pceplib/pcep_pcc_api.c:371,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_pcc_api.c:372,1
    - Dst: reset_group_counters
      Src: /src/frr/pceplib/pcep_pcc_api.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - session
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 369
    functionDepth: 4
    functionLinenumber: 369
    functionLinenumberEnd: 380
    functionName: reset_pcep_session_counters
    functionSourceFile: /src/frr/pceplib/pcep_pcc_api.c
    functionUses: 1
    functionsReached:
    - session_exists
    - pcep_log
    - reset_group_counters
    linkageType: ''
    returnType: void
    signature: void reset_pcep_session_counters(pcep_session *session)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - length
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 257
    functionName: normalize_pcep_tlv_length
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t normalize_pcep_tlv_length(uint16_t length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:267,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:276,1
    - Dst: obj_encoder
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:283,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:290,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:294,1
    - Dst: write_object_header
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:295,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - object_hdr
    - versioning
    - buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 300
    functionName: pcep_encode_object
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 1
    functionsReached:
    - normalize_pcep_tlv_length
    - write_object_header
    - pcep_encode_tlv
    - obj_encoder
    - pcep_log
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_object(struct pcep_object_header *object_hdr,\n\t\t\t
      \   struct pcep_versioning *versioning, uint8_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:324,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - object_hdr
    - object_length
    - buf
    argTypes:
    - struct pcep_object_header*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 326
    functionName: write_object_header
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 1
    functionsReached:
    - memcpy
    - htons
    linkageType: ''
    returnType: void
    signature: "void write_object_header(struct pcep_object_header *object_hdr,\n\t\t\t
      uint16_t object_length, uint8_t *buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 349
    functionName: pcep_encode_obj_open
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_open(struct pcep_object_header *hdr,\n\t\t\t
      \     struct pcep_versioning *versioning,\n\t\t\t      uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 366
    functionName: pcep_encode_obj_rp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_rp(struct pcep_object_header *hdr,\n\t\t\t
      \   struct pcep_versioning *versioning,\n\t\t\t    uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 378
    functionName: pcep_encode_obj_notify
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_notify(struct pcep_object_header *hdr,\n\t\t\t\tstruct
      pcep_versioning *versioning,\n\t\t\t\tuint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 390
    functionName: pcep_encode_obj_nopath
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_nopath(struct pcep_object_header *hdr,\n\t\t\t\tstruct
      pcep_versioning *versioning,\n\t\t\t\tuint8_t *obj_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:404,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:405,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:414,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:415,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 420
    functionName: pcep_encode_obj_association
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - memcpy
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_association(struct pcep_object_header *hdr,\n\t\t\t\t
      \    struct pcep_versioning *versioning,\n\t\t\t\t     uint8_t *obj_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:438,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 444
    functionName: pcep_encode_obj_endpoints
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_endpoints(struct pcep_object_header *hdr,\n\t\t\t\t
      \  struct pcep_versioning *versioning,\n\t\t\t\t   uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:456,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 460
    functionName: pcep_encode_obj_bandwidth
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_bandwidth(struct pcep_object_header *hdr,\n\t\t\t\t
      \  struct pcep_versioning *versioning,\n\t\t\t\t   uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:474,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 478
    functionName: pcep_encode_obj_metric
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_metric(struct pcep_object_header *hdr,\n\t\t\t\tstruct
      pcep_versioning *versioning,\n\t\t\t\tuint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:487,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:488,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 496
    functionName: pcep_encode_obj_lspa
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_lspa(struct pcep_object_header *hdr,\n\t\t\t
      \     struct pcep_versioning *versioning,\n\t\t\t      uint8_t *obj_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:517,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 522
    functionName: pcep_encode_obj_svec
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_svec(struct pcep_object_header *hdr,\n\t\t\t
      \     struct pcep_versioning *versioning,\n\t\t\t      uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 534
    functionName: pcep_encode_obj_error
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_error(struct pcep_object_header *hdr,\n\t\t\t
      \      struct pcep_versioning *versioning,\n\t\t\t       uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 545
    functionName: pcep_encode_obj_close
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_close(struct pcep_object_header *hdr,\n\t\t\t
      \      struct pcep_versioning *versioning,\n\t\t\t       uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 558
    functionName: pcep_encode_obj_srp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_srp(struct pcep_object_header *hdr,\n\t\t\t
      \    struct pcep_versioning *versioning,\n\t\t\t     uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 576
    functionName: pcep_encode_obj_lsp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_lsp(struct pcep_object_header *hdr,\n\t\t\t
      \    struct pcep_versioning *versioning,\n\t\t\t     uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:586,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 590
    functionName: pcep_encode_obj_vendor_info
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_vendor_info(struct pcep_object_header *hdr,\n\t\t\t\t
      \    struct pcep_versioning *versioning,\n\t\t\t\t     uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 604
    functionName: pcep_encode_obj_inter_layer
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_inter_layer(struct pcep_object_header *hdr,\n\t\t\t\t
      \    struct pcep_versioning *versioning,\n\t\t\t\t     uint8_t *obj_body_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 631
    functionName: pcep_encode_obj_switch_layer
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_switch_layer(struct pcep_object_header *hdr,\n\t\t\t\t
      \     struct pcep_versioning *versioning,\n\t\t\t\t      uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 645
    functionName: pcep_encode_obj_req_adap_cap
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_req_adap_cap(struct pcep_object_header *hdr,\n\t\t\t\t
      \     struct pcep_versioning *versioning,\n\t\t\t\t      uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 659
    functionName: pcep_encode_obj_server_ind
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_server_ind(struct pcep_object_header *hdr,\n\t\t\t\t
      \   struct pcep_versioning *versioning,\n\t\t\t\t    uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 661
    functionDepth: 0
    functionLinenumber: 661
    functionLinenumberEnd: 673
    functionName: pcep_encode_obj_objective_function
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_objective_function(struct pcep_object_header
      *hdr,\n\t\t\t\t\t    struct pcep_versioning *versioning,\n\t\t\t\t\t    uint8_t
      *obj_body_buf)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:730,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:749,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:760,1
    - Dst: htons
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:770,1
    - Dst: htonl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:810,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:848,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:887,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:890,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:897,1
    - Dst: encode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:904,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 124
    argCount: 3
    argNames:
    - hdr
    - versioning
    - obj_body_buf
    argTypes:
    - struct pcep_object_header*
    - struct pcep_versioning*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 926
    functionName: pcep_encode_obj_ro
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - htonl
    - encode_ipv6
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_encode_obj_ro(struct pcep_object_header *hdr,\n\t\t\t
      \   struct pcep_versioning *versioning,\n\t\t\t    uint8_t *obj_body_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src_ipv6
    - dst
    argTypes:
    - struct in6_addr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 931
    functionName: encode_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 5
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void encode_ipv6(struct in6_addr *src_ipv6, uint32_t *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:940,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:947,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - obj_buf
    - obj_hdr
    argTypes:
    - uint8_t*
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 950
    functionName: pcep_decode_object_hdr
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohs
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void pcep_decode_object_hdr(const uint8_t *obj_buf,\n\t\t\t    struct
      pcep_object_header *obj_hdr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - object_class
    - object_type
    argTypes:
    - enum pcep_object_classes
    - enum pcep_object_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 969
    functionName: pcep_object_get_length
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t pcep_object_get_length(enum pcep_object_classes object_class,\n\t\t\t\tenum
      pcep_object_types object_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_object_get_length
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - object_hdr
    argTypes:
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 975
    functionName: pcep_object_get_length_by_hdr
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pcep_object_get_length_by_hdr(struct pcep_object_header *object_hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:979,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - object_hdr
    argTypes:
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 977
    functionDepth: 2
    functionLinenumber: 977
    functionLinenumberEnd: 985
    functionName: pcep_object_has_tlvs
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 1
    functionsReached:
    - pcep_object_get_length_by_hdr
    linkageType: ''
    returnType: bool
    signature: bool pcep_object_has_tlvs(struct pcep_object_header *object_hdr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_decode_object_hdr
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:993,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:996,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1005,1
    - Dst: obj_decoder
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1014,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1016,1
    - Dst: pcep_object_has_tlvs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1021,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1022,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1024,1
    - Dst: pcep_decode_tlv
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1028,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1035,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1037,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - obj_buf
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 987
    functionDepth: 3
    functionLinenumber: 987
    functionLinenumberEnd: 1042
    functionName: pcep_decode_object
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 1
    functionsReached:
    - pcep_object_get_length_by_hdr
    - dll_append
    - pcep_decode_tlv
    - normalize_pcep_tlv_length
    - pcep_object_has_tlvs
    - pcep_decode_object_hdr
    - obj_decoder
    - dll_initialize
    - pcep_log
    linkageType: ''
    returnType: struct pcep_object_header
    signature: struct pcep_object_header *pcep_decode_object(const uint8_t *obj_buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1048,1
    - Dst: memset
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1049,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - new_obj_length
    argTypes:
    - struct pcep_object_header*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1053
    functionName: common_object_create
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: struct pcep_object_header
    signature: 'struct pcep_object_header *

      common_object_create(struct pcep_object_header *hdr, uint16_t new_obj_length)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1072
    functionName: pcep_decode_obj_open
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_open(struct pcep_object_header
      *hdr,\n\t\t\t\t\t\tconst uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1078,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1074
    functionDepth: 2
    functionLinenumber: 1074
    functionLinenumberEnd: 1089
    functionName: pcep_decode_obj_rp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_rp(struct pcep_object_header
      *hdr,\n\t\t\t\t\t      const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1091
    functionDepth: 2
    functionLinenumber: 1091
    functionLinenumberEnd: 1102
    functionName: pcep_decode_obj_notify
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: 'struct pcep_object_header *

      pcep_decode_obj_notify(struct pcep_object_header *hdr, const uint8_t *obj_buf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1104
    functionDepth: 2
    functionLinenumber: 1104
    functionLinenumberEnd: 1115
    functionName: pcep_decode_obj_nopath
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: 'struct pcep_object_header *

      pcep_decode_obj_nopath(struct pcep_object_header *hdr, const uint8_t *obj_buf)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1127,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1132,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1133,1
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1140,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1146,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1147,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1117
    functionDepth: 2
    functionLinenumber: 1117
    functionLinenumberEnd: 1154
    functionName: pcep_decode_obj_association
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohs
    - common_object_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_association(struct pcep_object_header
      *hdr,\n\t\t\t    const uint8_t *obj_buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1164,1
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1175,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1180,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1155
    functionDepth: 2
    functionLinenumber: 1155
    functionLinenumberEnd: 1187
    functionName: pcep_decode_obj_endpoints
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_endpoints(struct pcep_object_header
      *hdr,\n\t\t\t  const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1194,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1197,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1189
    functionDepth: 2
    functionLinenumber: 1189
    functionLinenumberEnd: 1203
    functionName: pcep_decode_obj_bandwidth
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_object_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_bandwidth(struct pcep_object_header
      *hdr,\n\t\t\t  const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1209,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1214,1
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1205
    functionDepth: 2
    functionLinenumber: 1205
    functionLinenumberEnd: 1220
    functionName: pcep_decode_obj_metric
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_object_create
    - memcpy
    linkageType: ''
    returnType: struct pcep_object_header
    signature: 'struct pcep_object_header *

      pcep_decode_obj_metric(struct pcep_object_header *hdr, const uint8_t *obj_buf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1226,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1230,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1231,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1222
    functionDepth: 2
    functionLinenumber: 1222
    functionLinenumberEnd: 1238
    functionName: pcep_decode_obj_lspa
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_lspa(struct pcep_object_header
      *hdr,\n\t\t\t\t\t\tconst uint8_t *obj_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1244,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1252,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1258,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1240
    functionDepth: 2
    functionLinenumber: 1240
    functionLinenumberEnd: 1266
    functionName: pcep_decode_obj_svec
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - dll_append
    - dll_initialize
    - pceplib_malloc
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_svec(struct pcep_object_header
      *hdr,\n\t\t\t\t\t\tconst uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1279
      start: 1268
    functionDepth: 2
    functionLinenumber: 1268
    functionLinenumberEnd: 1279
    functionName: pcep_decode_obj_error
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_error(struct pcep_object_header
      *hdr,\n\t\t\t\t\t\t const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1281
    functionDepth: 2
    functionLinenumber: 1281
    functionLinenumberEnd: 1291
    functionName: pcep_decode_obj_close
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_close(struct pcep_object_header
      *hdr,\n\t\t\t\t\t\t const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1297,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1293
    functionDepth: 2
    functionLinenumber: 1293
    functionLinenumberEnd: 1304
    functionName: pcep_decode_obj_srp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_srp(struct pcep_object_header
      *hdr,\n\t\t\t\t\t       const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1310,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1306
    functionDepth: 2
    functionLinenumber: 1306
    functionLinenumberEnd: 1322
    functionName: pcep_decode_obj_lsp
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_lsp(struct pcep_object_header
      *hdr,\n\t\t\t\t\t       const uint8_t *obj_buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1329,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1332,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1333,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1324
    functionDepth: 2
    functionLinenumber: 1324
    functionLinenumberEnd: 1342
    functionName: pcep_decode_obj_vendor_info
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohl
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_vendor_info(struct pcep_object_header
      *hdr,\n\t\t\t    const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1344
    functionDepth: 2
    functionLinenumber: 1344
    functionLinenumberEnd: 1356
    functionName: pcep_decode_obj_inter_layer
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_inter_layer(struct pcep_object_header
      *hdr,\n\t\t\t    const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1363,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1365,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1371,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1358
    functionDepth: 2
    functionLinenumber: 1358
    functionLinenumberEnd: 1384
    functionName: pcep_decode_obj_switch_layer
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - dll_append
    - dll_initialize
    - pceplib_malloc
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_switch_layer(struct pcep_object_header
      *hdr,\n\t\t\t     const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1386
    functionDepth: 2
    functionLinenumber: 1386
    functionLinenumberEnd: 1398
    functionName: pcep_decode_obj_req_adap_cap
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_req_adap_cap(struct pcep_object_header
      *hdr,\n\t\t\t     const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1400
    functionDepth: 2
    functionLinenumber: 1400
    functionLinenumberEnd: 1412
    functionName: pcep_decode_obj_server_ind
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_server_ind(struct pcep_object_header
      *hdr,\n\t\t\t   const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1419,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1414
    functionDepth: 2
    functionLinenumber: 1414
    functionLinenumberEnd: 1426
    functionName: pcep_decode_obj_objective_function
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - ntohs
    - common_object_create
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *\npcep_decode_obj_objective_function(struct
      pcep_object_header *hdr,\n\t\t\t\t   const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - subobj
    - flag_l
    - subobj_type
    argTypes:
    - struct pcep_object_ro_subobj*
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1428
    functionDepth: 0
    functionLinenumber: 1428
    functionLinenumberEnd: 1433
    functionName: set_ro_subobj_fields
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void set_ro_subobj_fields(struct pcep_object_ro_subobj *subobj, bool
      flag_l,\n\t\t\t  uint8_t subobj_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - dst_ipv6
    argTypes:
    - uint32_t*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1435
    functionDepth: 0
    functionLinenumber: 1435
    functionLinenumberEnd: 1438
    functionName: decode_ipv6
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 4
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void decode_ipv6(const uint32_t *src, struct in6_addr *dst_ipv6)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: common_object_create
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1443,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1445,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1471,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1474,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1480,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1493,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1497,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1502,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1509,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1513,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1522,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1525,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1529,1
    - Dst: set_ro_subobj_fields
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1534,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1538,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1542,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1546,1
    - Dst: ntohs
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1553,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1556,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1574,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1579,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1581,1
    - Dst: ntohl
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1598,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1606,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1609,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1615,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1617,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1618,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1624,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1627,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1629,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1632,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1634,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1637,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1639,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1642,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1649,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1652,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1654,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1657,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1664,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1666,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1667,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1669,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1671,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1672,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1679,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1681,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1682,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1685,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1688,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1690,1
    - Dst: decode_ipv6
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1692,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1693,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1695,1
    - Dst: dll_append
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1698,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_msg_objects_encoding.c:1710,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 150
    argCount: 2
    argNames:
    - hdr
    - obj_buf
    argTypes:
    - struct pcep_object_header*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1439
    functionDepth: 2
    functionLinenumber: 1439
    functionLinenumberEnd: 1720
    functionName: pcep_decode_obj_ro
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects_encoding.c
    functionUses: 0
    functionsReached:
    - dll_append
    - set_ro_subobj_fields
    - common_object_create
    - decode_ipv6
    - pceplib_free
    - ntohs
    - dll_initialize
    - pceplib_malloc
    - ntohl
    - pcep_log
    linkageType: ''
    returnType: struct pcep_object_header
    signature: "struct pcep_object_header *pcep_decode_obj_ro(struct pcep_object_header
      *hdr,\n\t\t\t\t\t      const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - label_20bits
    - ','
    - tc_3bits
    - ','
    - stack_bottom_bit
    - ','
    - ttl_8bits
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 579
    functionName: ENCODE_SR_ERO_SID
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENCODE_SR_ERO_SID(label_20bits, tc_3bits, stack_bottom_bit, ttl_8bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - SID
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 580
    functionName: GET_SR_ERO_SID_LABEL
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_SR_ERO_SID_LABEL(SID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - SID
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 581
    functionName: GET_SR_ERO_SID_TC
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_SR_ERO_SID_TC(SID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - SID
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 582
    functionName: GET_SR_ERO_SID_S
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_SR_ERO_SID_S(SID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - SID
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 583
    functionName: GET_SR_ERO_SID_TTL
    functionSourceFile: /src/frr/pceplib/pcep_msg_objects.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_SR_ERO_SID_TTL(SID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - logger
    argTypes:
    - pcep_logger_func
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: register_logger
    functionSourceFile: /src/frr/pceplib/pcep_utils_logging.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void register_logger(pcep_logger_func logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: set_logging_level
    functionSourceFile: /src/frr/pceplib/pcep_utils_logging.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_logging_level(int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: get_logging_level
    functionSourceFile: /src/frr/pceplib/pcep_utils_logging.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_logging_level(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/pceplib/pcep_utils_logging.c:46,1
    - Dst: logger_func
      Src: /src/frr/pceplib/pcep_utils_logging.c:47,1
    - Dst: va_end
      Src: /src/frr/pceplib/pcep_utils_logging.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - priority
    - format
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: pcep_log
    functionSourceFile: /src/frr/pceplib/pcep_utils_logging.c
    functionUses: 133
    functionsReached:
    - va_start
    - va_end
    - logger_func
    linkageType: ''
    returnType: void
    signature: void pcep_log(int priority, const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pceplib/pcep_utils_logging.c:57,1
    - Dst: snprintf
      Src: /src/frr/pceplib/pcep_utils_logging.c:59,1
    - Dst: snprintf
      Src: /src/frr/pceplib/pcep_utils_logging.c:61,1
    - Dst: pcep_log
      Src: /src/frr/pceplib/pcep_utils_logging.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - priority
    - message
    - bytes
    - bytes_len
    argTypes:
    - int
    - char*
    - uint8_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: pcep_log_hexbytes
    functionSourceFile: /src/frr/pceplib/pcep_utils_logging.c
    functionUses: 0
    functionsReached:
    - pcep_log
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void pcep_log_hexbytes(int priority, const char *message, const uint8_t
      *bytes,\n\t\t       uint8_t bytes_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vprintf
      Src: /src/frr/pceplib/pcep_utils_logging.c:71,1
    - Dst: printf
      Src: /src/frr/pceplib/pcep_utils_logging.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - priority
    - format
    - args
    argTypes:
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: pcep_stdout_logger
    functionSourceFile: /src/frr/pceplib/pcep_utils_logging.c
    functionUses: 0
    functionsReached:
    - vprintf
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_stdout_logger(int priority, const char *format, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - session_data
    - message_data
    - message_length
    argTypes:
    - void*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: test_message_received_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void test_message_received_handler(void *session_data,\n\t\t\t\t\t
      \ const char *message_data,\n\t\t\t\t\t  unsigned int message_length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - session_data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: test_message_ready_to_read_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_message_ready_to_read_handler(void *session_data, int socket_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - session_data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: test_message_sent_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_message_sent_handler(void *session_data, int socket_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - session_data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: test_connection_except_notifier
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_connection_except_notifier(void *session_data, int socket_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:80,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:81,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:82,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: pcep_socket_comm_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - inet_pton
    linkageType: ''
    returnType: void
    signature: void pcep_socket_comm_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: pcep_socket_comm_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_teardown
    linkageType: ''
    returnType: void
    signature: void pcep_socket_comm_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:99,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:103,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:104,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (test_session != NULL)
      pos:
        line_end: 103
        line_start: 103
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    constantsTouched: []
    func_position:
      end: 106
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 106
    functionName: test_pcep_socket_comm_initialize
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - socket_comm_session_initialize
    - CU_ASSERT_PTR_NOT_NULL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize_ipv6
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:111,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:115,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:116,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (test_session != NULL)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: test_pcep_socket_comm_initialize_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - socket_comm_session_initialize_ipv6
    - CU_ASSERT_PTR_NOT_NULL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_initialize_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize_with_src
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:124,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:128,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:129,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:130,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:133,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:135,1
    - Dst: socket_comm_session_initialize_with_src
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:136,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:141,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:142,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:143,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:146,1
    - Dst: ntohs
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:147,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (test_session != NULL)
      pos:
        line_end: 128
        line_start: 128
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    - condition: (test_session != NULL)
      pos:
        line_end: 141
        line_start: 141
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    constantsTouched: []
    func_position:
      end: 149
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 149
    functionName: test_pcep_socket_comm_initialize_with_src
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_initialize_with_src
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - socket_comm_session_teardown
    - ntohs
    - CU_ASSERT_EQUAL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_initialize_with_src()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize_with_src_ipv6
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:155,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:159,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:160,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:161,1
    - Dst: memcmp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:161,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:165,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:167,1
    - Dst: socket_comm_session_initialize_with_src_ipv6
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:168,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:173,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:174,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:175,1
    - Dst: memcmp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:175,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:179,1
    - Dst: ntohs
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:181,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (test_session != NULL)
      pos:
        line_end: 159
        line_start: 159
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    - condition: (test_session != NULL)
      pos:
        line_end: 173
        line_start: 173
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    constantsTouched: []
    func_position:
      end: 183
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 183
    functionName: test_pcep_socket_comm_initialize_with_src_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_PTR_NOT_NULL
    - memcmp
    - socket_comm_session_teardown
    - CU_ASSERT_TRUE
    - ntohs
    - socket_comm_session_initialize_with_src_ipv6
    - CU_ASSERT_EQUAL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_initialize_with_src_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:189,1
    - Dst: socket_comm_session_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:191,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:195,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:196,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:197,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:197,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:200,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:201,1
    - Dst: socket_comm_session_connect_tcp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:201,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:206,1
    - Dst: socket_comm_session_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:207,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:211,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:212,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:213,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:213,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:216,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:217,1
    - Dst: socket_comm_session_connect_tcp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (test_session != NULL)
      pos:
        line_end: 195
        line_start: 195
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    - condition: (test_session != NULL)
      pos:
        line_end: 211
        line_start: 211
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    constantsTouched: []
    func_position:
      end: 218
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 218
    functionName: test_pcep_socket_comm_initialize_tcpmd5
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - strlen
    - socket_comm_session_connect_tcp
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - socket_comm_session_teardown
    - CU_ASSERT_TRUE
    - strncmp
    - CU_ASSERT_EQUAL
    - socket_comm_session_initialize
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_initialize_tcpmd5()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:224,1
    - Dst: socket_comm_session_initialize_ipv6
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:226,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:230,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:231,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:232,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:232,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:235,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:236,1
    - Dst: socket_comm_session_connect_tcp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:236,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:241,1
    - Dst: socket_comm_session_initialize_ipv6
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:242,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:246,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:247,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:248,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:248,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:251,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:252,1
    - Dst: socket_comm_session_connect_tcp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (test_session != NULL)
      pos:
        line_end: 230
        line_start: 230
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    - condition: (test_session != NULL)
      pos:
        line_end: 246
        line_start: 246
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    constantsTouched: []
    func_position:
      end: 253
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 253
    functionName: test_pcep_socket_comm_initialize_ipv6_tcpmd5
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - strlen
    - socket_comm_session_connect_tcp
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - socket_comm_session_teardown
    - CU_ASSERT_TRUE
    - strncmp
    - socket_comm_session_initialize_ipv6
    - CU_ASSERT_EQUAL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_initialize_ipv6_tcpmd5()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:261,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:265,1
    - Dst: socket_comm_session_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:268,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:273,1
    - Dst: socket_comm_session_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:276,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 282
    functionName: test_pcep_socket_comm_initialize_handlers
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_initialize
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_initialize_handlers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:287,1
    - Dst: socket_comm_session_connect_tcp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:287,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:288,1
    - Dst: socket_comm_session_close_tcp
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:288,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:289,1
    - Dst: socket_comm_session_close_tcp_after_write
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:289,1
    - Dst: socket_comm_session_send_message
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:290,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:291,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 292
    functionName: test_pcep_socket_comm_session_not_initialized
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - socket_comm_session_connect_tcp
    - socket_comm_session_close_tcp_after_write
    - CU_ASSERT_FALSE
    - socket_comm_session_close_tcp
    - socket_comm_session_teardown
    - socket_comm_session_send_message
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_session_not_initialized()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_session_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:297,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:301,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:302,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:303,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:304,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:305,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:307,1
    - Dst: socket_comm_session_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:307,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:309,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:311,1
    - Dst: destroy_socket_comm_loop
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:311,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_test.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (test_session != NULL)
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    - condition: (socket_comm_handle_ != NULL)
      pos:
        line_end: 303
        line_start: 303
        source_file: /src/frr/pceplib/test/pcep_socket_comm_test.c
    constantsTouched: []
    func_position:
      end: 313
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 313
    functionName: test_pcep_socket_comm_session_destroy
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_PTR_NULL
    - destroy_socket_comm_loop
    - CU_ASSERT_PTR_NOT_NULL
    - socket_comm_session_teardown
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - socket_comm_session_initialize
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_socket_comm_session_destroy()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: teardown_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 4
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: pcep_timers_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - teardown_timers
    linkageType: ''
    returnType: void
    signature: void pcep_timers_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - data
    - timerId
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: test_timer_expire_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_timer_expire_handler(void *data, int timerId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:38,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:38,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:39,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: test_double_initialization
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - initialize_timers
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: void test_double_initialization(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:45,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 4
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: test_initialization_null_callback
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - initialize_timers
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: void test_initialization_null_callback(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:52,1
    - Dst: create_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:52,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:53,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:53,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:54,1
    - Dst: reset_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:54,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:55,1
    - Dst: teardown_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: test_not_initialized
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - reset_timer
    - create_timer
    - cancel_timer
    - CU_ASSERT_EQUAL
    - teardown_timers
    linkageType: ''
    returnType: void
    signature: void test_not_initialized(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:61,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:61,1
    - Dst: create_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:63,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_timers_test.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: test_create_timer
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - initialize_timers
    - CU_ASSERT_EQUAL
    - create_timer
    linkageType: ''
    returnType: void
    signature: void test_create_timer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:70,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:70,1
    - Dst: create_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:72,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_timers_test.c:73,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:75,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: test_cancel_timer
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - create_timer
    - cancel_timer
    - initialize_timers
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: void test_cancel_timer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:81,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:81,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:82,1
    - Dst: cancel_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: test_cancel_timer_invalid
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - cancel_timer
    - initialize_timers
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: void test_cancel_timer_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:88,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:88,1
    - Dst: create_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:90,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_timers_test.c:91,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:93,1
    - Dst: reset_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 94
    functionName: test_reset_timer
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - reset_timer
    - create_timer
    - initialize_timers
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: void test_reset_timer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:99,1
    - Dst: initialize_timers
      Src: /src/frr/pceplib/test/pcep_timers_test.c:99,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_test.c:100,1
    - Dst: reset_timer
      Src: /src/frr/pceplib/test/pcep_timers_test.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: test_reset_timer_invalid
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_test.c
    functionUses: 0
    functionsReached:
    - initialize_timers
    - CU_ASSERT_EQUAL
    - reset_timer
    linkageType: ''
    returnType: void
    signature: void test_reset_timer_invalid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: pcep_session_logic_states_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_session_logic_states_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:62,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: pcep_session_logic_states_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_session_logic_states_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:73,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:75,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:78,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:79,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:80,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:82,1
    - Dst: memcpy
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:92,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:94,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:96,1
    - Dst: setup_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 103
    functionName: pcep_session_logic_states_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - memset
    - queue_initialize
    - pceplib_malloc
    - setup_mock_socket_comm_info
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pcep_session_logic_states_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:108,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:109,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:110,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:111,1
    - Dst: queue_destroy_with_data
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:114,1
    - Dst: teardown_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 116
    functionName: pcep_session_logic_states_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - teardown_mock_socket_comm_info
    - queue_destroy_with_data
    - queue_destroy
    - destroy_message_for_test
    - pceplib_free
    linkageType: ''
    returnType: void
    signature: void pcep_session_logic_states_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:126,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:127,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:129,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:131,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:132,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:135,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - msg_type
    - free_msg_list_at_teardown
    - was_msg_enqueued
    argTypes:
    - uint8_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 138
    functionName: create_message_for_test
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - dll_initialize
    - pceplib_malloc
    - memset
    linkageType: ''
    returnType: void
    signature: "void create_message_for_test(uint8_t msg_type, bool free_msg_list_at_teardown,\n\t\t\t
      \    bool was_msg_enqueued)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:146,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 140
    functionDepth: 5
    functionLinenumber: 140
    functionLinenumberEnd: 154
    functionName: destroy_message_for_test
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 1
    functionsReached:
    - pcep_msg_free_message_list
    - pcep_msg_free_message
    linkageType: ''
    returnType: void
    signature: void destroy_message_for_test()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:165,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:167,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:168,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:169,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:172,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:173,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:174,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 160
    functionDepth: 5
    functionLinenumber: 160
    functionLinenumberEnd: 180
    functionName: test_handle_timer_event_dead_timer
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - queue_dequeue
    - pceplib_free
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    - handle_timer_event
    linkageType: ''
    returnType: void
    signature: void test_handle_timer_event_dead_timer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:188,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:190,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 183
    functionDepth: 5
    functionLinenumber: 183
    functionLinenumberEnd: 192
    functionName: test_handle_timer_event_keep_alive
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - verify_socket_comm_times_called
    - CU_ASSERT_EQUAL
    - handle_timer_event
    linkageType: ''
    returnType: void
    signature: void test_handle_timer_event_keep_alive()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:200,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:202,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:203,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:204,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:206,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:208,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:209,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:210,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:214,1
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:217,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:219,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:220,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 195
    functionDepth: 5
    functionLinenumber: 195
    functionLinenumberEnd: 222
    functionName: test_handle_timer_event_open_keep_wait
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - queue_dequeue
    - pceplib_free
    - reset_mock_socket_comm_info
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    - handle_timer_event
    linkageType: ''
    returnType: void
    signature: void test_handle_timer_event_open_keep_wait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:233,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:235,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:236,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:237,1
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:248,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:250,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:251,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:252,1
    - Dst: handle_timer_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:262,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:264,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:265,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 225
    functionDepth: 5
    functionLinenumber: 225
    functionLinenumberEnd: 267
    functionName: test_handle_timer_event_open_keep_alive
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - CU_ASSERT_FALSE
    - CU_ASSERT_EQUAL
    - handle_timer_event
    linkageType: ''
    returnType: void
    signature: void test_handle_timer_event_open_keep_alive()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:273,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:274,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:275,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:278,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 7
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: test_handle_socket_comm_event_null_params
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - reset_mock_socket_comm_info
    - verify_socket_comm_times_called
    - handle_socket_comm_event
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_null_params()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:286,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:288,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:289,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:291,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:293,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:294,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 283
    functionDepth: 7
    functionLinenumber: 283
    functionLinenumberEnd: 296
    functionName: test_handle_socket_comm_event_close
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - queue_dequeue
    - handle_socket_comm_event
    - pceplib_free
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:305,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:307,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:308,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:315,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:317,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:318,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:319,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:320,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:321,1
    - Dst: CU_ASSERT_NOT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:322,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:324,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:325,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:327,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:328,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:329,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:330,1
    - Dst: destroy_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:331,1
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:336,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:337,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:338,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:339,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:345,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:347,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:348,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:349,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:350,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:351,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:353,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:354,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:356,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:357,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:358,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:359,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:360,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:361,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:362,1
    - Dst: destroy_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:363,1
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:368,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:369,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:370,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:373,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:375,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:377,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:382,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:383,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:384,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:385,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:386,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:387,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:389,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:391,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:392,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:393,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:395,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:397,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg != NULL)
      pos:
        line_end: 385
        line_start: 385
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    constantsTouched: []
    func_position:
      end: 399
      start: 299
    functionDepth: 7
    functionLinenumber: 299
    functionLinenumberEnd: 399
    functionName: test_handle_socket_comm_event_open
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_open
    - get_mock_socket_comm_info
    - queue_dequeue
    - handle_socket_comm_event
    - CU_ASSERT_PTR_NOT_NULL
    - reset_mock_socket_comm_info
    - dll_append
    - CU_ASSERT_FALSE
    - destroy_message_for_test
    - assert
    - CU_ASSERT_NOT_EQUAL
    - create_message_for_test
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - pcep_decode_message
    - pceplib_free
    - dll_delete_first_node
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_open()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:407,1
    - Dst: pcep_obj_create_error
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:408,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:411,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:416,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:417,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:419,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:422,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:424,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:425,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:426,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:428,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:429,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:432,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:433,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:434,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:436,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:437,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:438,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:439,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:447,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:448,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:449,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:451,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:452,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:454,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:456,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:457,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:459,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:461,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:463,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:465,1
    - Dst: CU_ASSERT_NOT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:468,1
    - Dst: CU_ASSERT_NOT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:471,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:475,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (encoded_msg != NULL)
      pos:
        line_end: 448
        line_start: 448
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    - condition: (open_object_corrected != NULL)
      pos:
        line_end: 456
        line_start: 456
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    constantsTouched: []
    func_position:
      end: 477
      start: 402
    functionDepth: 7
    functionLinenumber: 402
    functionLinenumberEnd: 477
    functionName: test_handle_socket_comm_event_open_error
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_open
    - get_mock_socket_comm_info
    - queue_dequeue
    - handle_socket_comm_event
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_get
    - dll_append
    - CU_ASSERT_FALSE
    - pcep_obj_create_error
    - assert
    - CU_ASSERT_NOT_EQUAL
    - create_message_for_test
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - pcep_decode_message
    - pceplib_free
    - dll_delete_first_node
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_open_error()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:484,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:492,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:494,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:495,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:496,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:497,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:498,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:499,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:500,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:501,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:502,1
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:507,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:515,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:517,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:518,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:519,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:520,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:521,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:522,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:523,1
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:527,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:537,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:539,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:540,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:541,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:542,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:543,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:544,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:545,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:549,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:550,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 480
    functionDepth: 7
    functionLinenumber: 480
    functionLinenumberEnd: 552
    functionName: test_handle_socket_comm_event_keep_alive
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - create_message_for_test
    - CU_ASSERT_FALSE
    - queue_dequeue
    - handle_socket_comm_event
    - CU_ASSERT_TRUE
    - pceplib_free
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_keep_alive()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:557,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:559,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:560,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:562,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:564,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:566,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:567,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:568,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 555
    functionDepth: 7
    functionLinenumber: 555
    functionLinenumberEnd: 570
    functionName: test_handle_socket_comm_event_pcrep
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - create_message_for_test
    - queue_dequeue
    - handle_socket_comm_event
    - pceplib_free
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    - pcep_obj_create_rp
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_pcrep()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:575,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:576,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:579,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:583,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:585,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:587,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:588,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:589,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:590,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:591,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:592,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:594,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:596,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:597,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:598,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:599,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:600,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (error_msg != NULL)
      pos:
        line_end: 590
        line_start: 590
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    constantsTouched: []
    func_position:
      end: 602
      start: 573
    functionDepth: 7
    functionLinenumber: 573
    functionLinenumberEnd: 602
    functionName: test_handle_socket_comm_event_pcreq
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - get_mock_socket_comm_info
    - pcep_decode_message
    - create_message_for_test
    - handle_socket_comm_event
    - CU_ASSERT_PTR_NOT_NULL
    - pceplib_free
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - verify_socket_comm_times_called
    - assert
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_pcreq()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:607,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:608,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:611,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:615,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:617,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:619,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:620,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:621,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:622,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:623,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:624,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:626,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:628,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:629,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:630,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:631,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:632,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (error_msg != NULL)
      pos:
        line_end: 622
        line_start: 622
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    constantsTouched: []
    func_position:
      end: 634
      start: 605
    functionDepth: 7
    functionLinenumber: 605
    functionLinenumberEnd: 634
    functionName: test_handle_socket_comm_event_report
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - get_mock_socket_comm_info
    - pcep_decode_message
    - create_message_for_test
    - handle_socket_comm_event
    - CU_ASSERT_PTR_NOT_NULL
    - pceplib_free
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - verify_socket_comm_times_called
    - assert
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_report()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:639,1
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:640,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:642,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:644,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:645,1
    - Dst: pcep_obj_create_ro_subobj_asn
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:645,1
    - Dst: pcep_obj_create_ero
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:646,1
    - Dst: pcep_obj_create_metric
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:648,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:649,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:650,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:651,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:652,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:653,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:656,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:658,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:660,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:661,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:662,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:663,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 637
    functionDepth: 7
    functionLinenumber: 637
    functionLinenumberEnd: 665
    functionName: test_handle_socket_comm_event_update
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - get_mock_socket_comm_info
    - create_message_for_test
    - pcep_obj_create_lsp
    - handle_socket_comm_event
    - verify_socket_comm_times_called
    - queue_dequeue
    - pceplib_free
    - pcep_obj_create_ro_subobj_asn
    - pcep_obj_create_ero
    - pcep_obj_create_metric
    - pcep_obj_create_srp
    - CU_ASSERT_EQUAL
    - dll_initialize
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_update()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:670,1
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:671,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:673,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:675,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:676,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:677,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:680,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:682,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:684,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:685,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:686,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:687,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 668
    functionDepth: 7
    functionLinenumber: 668
    functionLinenumberEnd: 689
    functionName: test_handle_socket_comm_event_initiate
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - get_mock_socket_comm_info
    - create_message_for_test
    - pcep_obj_create_lsp
    - handle_socket_comm_event
    - queue_dequeue
    - pceplib_free
    - CU_ASSERT_EQUAL
    - pcep_obj_create_srp
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_initiate()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:694,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:695,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:697,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:699,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:700,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:701,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:702,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 692
    functionDepth: 7
    functionLinenumber: 692
    functionLinenumberEnd: 704
    functionName: test_handle_socket_comm_event_notify
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - create_message_for_test
    - queue_dequeue
    - handle_socket_comm_event
    - pceplib_free
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_notify()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:709,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:710,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:712,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:714,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:715,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:716,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:717,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 707
    functionDepth: 7
    functionLinenumber: 707
    functionLinenumberEnd: 719
    functionName: test_handle_socket_comm_event_error
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - create_message_for_test
    - queue_dequeue
    - handle_socket_comm_event
    - pceplib_free
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_error()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:724,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:725,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:728,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:733,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:735,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:737,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:738,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:739,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:740,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:741,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:742,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:744,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:746,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:747,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:748,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:750,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:751,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:752,1
    - Dst: destroy_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:753,1
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:757,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:758,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:759,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:762,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:764,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:765,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:767,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:768,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:769,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:772,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:773,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:774,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:775,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:776,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:777,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:779,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:781,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:782,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:783,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:785,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:786,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:787,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:790,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:791,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:792,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:793,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:794,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:795,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:796,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:798,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:800,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:801,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:802,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:803,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg != NULL)
      pos:
        line_end: 794
        line_start: 794
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    - condition: (encoded_msg != NULL)
      pos:
        line_end: 773
        line_start: 773
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    - condition: (msg != NULL)
      pos:
        line_end: 740
        line_start: 740
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    - condition: (encoded_msg != NULL)
      pos:
        line_end: 791
        line_start: 791
        source_file: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    constantsTouched: []
    func_position:
      end: 805
      start: 722
    functionDepth: 7
    functionLinenumber: 722
    functionLinenumberEnd: 805
    functionName: test_handle_socket_comm_event_unknown_msg
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - get_mock_socket_comm_info
    - pcep_decode_message
    - create_message_for_test
    - queue_dequeue
    - handle_socket_comm_event
    - CU_ASSERT_PTR_NOT_NULL
    - destroy_message_for_test
    - pceplib_free
    - reset_mock_socket_comm_info
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - verify_socket_comm_times_called
    - assert
    linkageType: ''
    returnType: void
    signature: void test_handle_socket_comm_event_unknown_msg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:814,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:815,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:817,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:821,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:827,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:829,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:830,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:831,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:832,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:834,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:835,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:837,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:838,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:839,1
    - Dst: destroy_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:840,1
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:843,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:844,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:845,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:849,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:851,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:853,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:854,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:855,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:856,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:858,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:859,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:861,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:862,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:863,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:864,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:865,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:866,1
    - Dst: destroy_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:868,1
    - Dst: create_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:874,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:875,1
    - Dst: pcep_obj_create_error
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:876,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:878,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:883,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:885,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:886,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:887,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:889,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:890,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:892,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:893,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:894,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:895,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:896,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:897,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:898,1
    - Dst: destroy_message_for_test
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:899,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:903,1
    - Dst: handle_socket_comm_event
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:907,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:909,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:910,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:911,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:912,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:913,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:915,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:916,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:917,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:918,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:919,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_states_test.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 808
    functionDepth: 7
    functionLinenumber: 808
    functionLinenumberEnd: 921
    functionName: test_connection_failure
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_states_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_open
    - dll_append
    - create_message_for_test
    - CU_ASSERT_FALSE
    - queue_dequeue
    - handle_socket_comm_event
    - destroy_message_for_test
    - reset_mock_socket_comm_info
    - CU_ASSERT_TRUE
    - pceplib_free
    - pcep_obj_create_error
    - CU_ASSERT_EQUAL
    - verify_socket_comm_times_called
    linkageType: ''
    returnType: void
    signature: void test_connection_failure(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - list_entry
    - new_entry
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 38
    functionName: node_data_compare
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int node_data_compare(void *list_entry, void *new_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:44,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:46,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:47,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:48,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:49,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:50,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (handle != NULL)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: test_empty_list
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached:
    - assert
    - ordered_list_initialize
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - ordered_list_destroy
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_empty_list()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:61,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:62,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:64,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:65,1
    - Dst: ordered_list_remove_first_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:67,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:68,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:70,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:71,1
    - Dst: ordered_list_remove_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:73,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 75
    functionName: test_null_list_handle
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached:
    - ordered_list_find
    - ordered_list_remove_node
    - ordered_list_remove_first_node_equals
    - ordered_list_remove_first_node
    - ordered_list_add_node
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_null_list_handle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:86,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:88,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:89,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:90,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:92,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:95,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:98,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:101,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:104,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 107
    functionName: test_add_to_list
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached:
    - ordered_list_initialize
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_EQUAL
    - ordered_list_destroy
    - ordered_list_add_node
    linkageType: ''
    returnType: void
    signature: void test_add_to_list()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:119,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:121,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:122,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:123,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:125,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:126,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:127,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:128,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:130,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:131,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:132,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:133,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:135,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:136,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:137,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:138,1
    - Dst: ordered_list_find
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:140,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:141,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node != NULL)
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    - condition: (node != NULL)
      pos:
        line_end: 136
        line_start: 136
        source_file: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    - condition: (node != NULL)
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    constantsTouched: []
    func_position:
      end: 144
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 144
    functionName: test_find
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached:
    - ordered_list_find
    - ordered_list_initialize
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_PTR_NOT_NULL
    - ordered_list_destroy
    - ordered_list_add_node
    - assert
    linkageType: ''
    returnType: void
    signature: void test_find()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:155,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:157,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:158,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:159,1
    - Dst: ordered_list_remove_first_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:161,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:162,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:163,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:164,1
    - Dst: ordered_list_remove_first_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:166,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:167,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:168,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:169,1
    - Dst: ordered_list_remove_first_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:171,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:172,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:173,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:174,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:175,1
    - Dst: ordered_list_remove_first_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:177,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:178,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 181
    functionName: test_remove_first_node
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached:
    - ordered_list_initialize
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - ordered_list_remove_first_node
    - ordered_list_destroy
    - ordered_list_add_node
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_remove_first_node()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:192,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:194,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:195,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:196,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:198,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:199,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:200,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:201,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:203,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:204,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:205,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:206,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:208,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:209,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:210,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:211,1
    - Dst: ordered_list_remove_first_node_equals
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:213,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:214,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 217
    functionName: test_remove_first_node_equals
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached:
    - ordered_list_initialize
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NOT_NULL
    - ordered_list_remove_first_node_equals
    - CU_ASSERT_EQUAL
    - ordered_list_destroy
    - ordered_list_add_node
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_remove_first_node_equals()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:228,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:230,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:231,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:232,1
    - Dst: ordered_list_remove_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:234,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:235,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:236,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:237,1
    - Dst: ordered_list_remove_node
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:239,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:240,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:241,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:242,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 245
    functionName: test_remove_node
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_ordered_list_test.c
    functionUses: 0
    functionsReached:
    - ordered_list_initialize
    - CU_ASSERT_PTR_EQUAL
    - ordered_list_remove_node
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - ordered_list_destroy
    - ordered_list_add_node
    linkageType: ''
    returnType: void
    signature: void test_remove_node()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CU_initialize_registry
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:30,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:35,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:40,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:42,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:44,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:46,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:47,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:48,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:50,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:51,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:58,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:67,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:70,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:73,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:76,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:78,1
    - Dst: CU_basic_set_mode
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:84,1
    - Dst: CU_basic_run_tests
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:85,1
    - Dst: CU_get_failure_list
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:86,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:88,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:90,1
    - Dst: CU_get_run_summary
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:100,1
    - Dst: CU_cleanup_registry
      Src: /src/frr/pceplib/test/pcep_timers_tests.c:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 105
    functionName: main
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_tests.c
    functionUses: 11
    functionsReached:
    - CU_get_failure_list
    - CU_basic_run_tests
    - CU_cleanup_registry
    - CU_add_test
    - CU_add_suite_with_setup_and_teardown
    - CU_initialize_registry
    - printf
    - CU_basic_set_mode
    - CU_get_run_summary
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CU_initialize_registry
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:28,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:33,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:42,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:44,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:45,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:47,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:49,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:51,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:52,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:53,1
    - Dst: CU_basic_set_mode
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:59,1
    - Dst: CU_basic_run_tests
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:60,1
    - Dst: CU_get_failure_list
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:61,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:63,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:65,1
    - Dst: CU_get_run_summary
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:75,1
    - Dst: CU_cleanup_registry
      Src: /src/frr/pceplib/test/pcep_pcc_api_tests.c:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 80
    functionName: main
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_tests.c
    functionUses: 11
    functionsReached:
    - CU_get_failure_list
    - CU_basic_run_tests
    - CU_cleanup_registry
    - CU_add_test
    - CU_add_suite_with_setup_and_teardown
    - CU_initialize_registry
    - printf
    - CU_basic_set_mode
    - CU_get_run_summary
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CU_initialize_registry
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:32,1
    - Dst: CU_add_suite
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:35,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:36,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:37,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:39,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:40,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:42,1
    - Dst: CU_add_suite
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:45,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:46,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:47,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:48,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:49,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:50,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:52,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:54,1
    - Dst: CU_add_suite
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:56,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:58,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:60,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:62,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:64,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:66,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:68,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:70,1
    - Dst: CU_add_suite
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:74,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:75,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:77,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:79,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:81,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:83,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:85,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:87,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:89,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:91,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:93,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:95,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:97,1
    - Dst: CU_add_suite
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:101,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:102,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:104,1
    - Dst: CU_basic_set_mode
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:107,1
    - Dst: CU_basic_run_tests
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:108,1
    - Dst: CU_get_failure_list
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:109,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:111,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:113,1
    - Dst: CU_get_run_summary
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:123,1
    - Dst: CU_cleanup_registry
      Src: /src/frr/pceplib/test/pcep_utils_tests.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 48
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 128
    functionName: main
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_tests.c
    functionUses: 11
    functionsReached:
    - CU_get_failure_list
    - CU_basic_run_tests
    - CU_cleanup_registry
    - CU_add_test
    - CU_initialize_registry
    - printf
    - CU_basic_set_mode
    - CU_add_suite
    - CU_get_run_summary
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: pcep_session_logic_loop_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_session_logic_loop_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:50,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pcep_session_logic_loop_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_session_logic_loop_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:64,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:66,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:69,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:70,1
    - Dst: pthread_cond_init
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:71,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:73,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:74,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:76,1
    - Dst: pthread_cond_signal
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:78,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:79,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:82,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:83,1
    - Dst: queue_initialize
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 85
    functionName: pcep_session_logic_loop_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_cond_init
    - memset
    - queue_initialize
    - ordered_list_initialize
    - pthread_cond_signal
    - pthread_mutex_init
    - pceplib_malloc
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void pcep_session_logic_loop_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:90,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:91,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:92,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:93,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:94,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:95,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:98,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 101
    functionName: pcep_session_logic_loop_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - queue_destroy
    - pceplib_free
    - ordered_list_destroy
    - pthread_mutex_destroy
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void pcep_session_logic_loop_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: session_logic_loop
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: test_session_logic_loop_null_data
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - session_logic_loop
    linkageType: ''
    returnType: void
    signature: void test_session_logic_loop_null_data()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: session_logic_loop
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 4
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: test_session_logic_loop_inactive
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - session_logic_loop
    linkageType: ''
    returnType: void
    signature: void test_session_logic_loop_inactive()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:126,1
    - Dst: session_logic_msg_ready_handler
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:126,1
    - Dst: umask
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:131,1
    - Dst: umask
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:133,1
    - Dst: mkstemp
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:135,1
    - Dst: umask
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:136,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:138,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:142,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:144,1
    - Dst: session_logic_msg_ready_handler
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:144,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:145,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:147,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:148,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:149,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:150,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:152,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:153,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:154,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:155,1
    - Dst: create_default_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:158,1
    - Dst: pcep_msg_create_keepalive
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:159,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:160,1
    - Dst: write
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:161,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:163,1
    - Dst: lseek
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:164,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:165,1
    - Dst: session_logic_msg_ready_handler
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:165,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:167,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:169,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:171,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:172,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:173,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:174,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:175,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:176,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:177,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:178,1
    - Dst: destroy_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:179,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:180,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:181,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (socket_event != NULL)
      pos:
        line_end: 152
        line_start: 152
        source_file: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    - condition: (socket_event != NULL)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    constantsTouched: []
    func_position:
      end: 183
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 183
    functionName: test_session_logic_msg_ready_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - session_logic_msg_ready_handler
    - CU_ASSERT_PTR_EQUAL
    - queue_dequeue
    - CU_ASSERT_PTR_NOT_NULL
    - lseek
    - pcep_msg_create_keepalive
    - umask
    - unlink
    - memset
    - create_default_pcep_versioning
    - pcep_encode_message
    - CU_ASSERT_FALSE
    - destroy_pcep_versioning
    - pcep_msg_free_message_list
    - mkstemp
    - write
    - assert
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - close
    - pceplib_free
    linkageType: ''
    returnType: void
    signature: void test_session_logic_msg_ready_handler()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: session_logic_conn_except_notifier
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:189,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:193,1
    - Dst: session_logic_conn_except_notifier
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:195,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:196,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:198,1
    - Dst: CU_ASSERT_PTR_NOT_NULL_FATAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:200,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:201,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:202,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:203,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:204,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:205,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (socket_event != NULL)
      pos:
        line_end: 200
        line_start: 200
        source_file: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    constantsTouched: []
    func_position:
      end: 208
      start: 186
    functionDepth: 3
    functionLinenumber: 186
    functionLinenumberEnd: 208
    functionName: test_session_logic_conn_except_notifier
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - memset
    - session_logic_conn_except_notifier
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NULL
    - queue_dequeue
    - CU_ASSERT_TRUE
    - pceplib_free
    - CU_ASSERT_PTR_NOT_NULL_FATAL
    - CU_ASSERT_EQUAL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_session_logic_conn_except_notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: session_logic_timer_expire_handler
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:214,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:218,1
    - Dst: session_logic_timer_expire_handler
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:220,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:221,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:223,1
    - Dst: CU_ASSERT_PTR_NOT_NULL_FATAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:225,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:226,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:227,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:228,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:229,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:230,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_loop_test.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (socket_event != NULL)
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    constantsTouched: []
    func_position:
      end: 233
      start: 211
    functionDepth: 3
    functionLinenumber: 211
    functionLinenumberEnd: 233
    functionName: test_session_logic_timer_expire_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_loop_test.c
    functionUses: 0
    functionsReached:
    - memset
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_FALSE
    - queue_dequeue
    - pceplib_free
    - CU_ASSERT_PTR_NOT_NULL_FATAL
    - CU_ASSERT_EQUAL
    - session_logic_timer_expire_handler
    - assert
    linkageType: ''
    returnType: void
    signature: void test_session_logic_timer_expire_handler()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: pcep_messages_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_messages_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:46,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: pcep_messages_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_messages_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: pcep_messages_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - create_default_pcep_versioning
    linkageType: ''
    returnType: void
    signature: void pcep_messages_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 3
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pcep_messages_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - destroy_pcep_versioning
    linkageType: ''
    returnType: void
    signature: void pcep_messages_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_open
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:68,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:69,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:70,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:71,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:72,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:73,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:74,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:75,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:76,1
    - Dst: pcep_object_get_length
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:78,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:80,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:81,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:82,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:89,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:90,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:92,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:93,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:94,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:95,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message != NULL)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 97
      start: 61
    functionDepth: 5
    functionLinenumber: 61
    functionLinenumberEnd: 97
    functionName: test_pcep_msg_create_open
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_open
    - pcep_encode_message
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - assert
    - pcep_object_get_length
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_open()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_request
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:104,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:105,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:109,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:112,1
    - Dst: pcep_msg_create_request
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:113,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:115,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:116,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:117,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:118,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:119,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:120,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:121,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:124,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:125,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:126,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:127,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:128,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:130,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:133,1
    - Dst: pcep_obj_create_endpoint_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:136,1
    - Dst: pcep_msg_create_request_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:137,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:139,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:140,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:141,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:142,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:143,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:144,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:145,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:146,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:149,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:150,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:151,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:152,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:153,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:155,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:159,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:160,1
    - Dst: pcep_obj_create_bandwidth
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:162,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:163,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:164,1
    - Dst: pcep_msg_create_request
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:165,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:167,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:168,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:169,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:170,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:171,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:172,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:173,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:174,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:177,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:178,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:179,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:181,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:182,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:183,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 143
        line_start: 143
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 180
        line_start: 180
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message != NULL)
      pos:
        line_end: 116
        line_start: 116
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message != NULL)
      pos:
        line_end: 140
        line_start: 140
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message != NULL)
      pos:
        line_end: 168
        line_start: 168
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 186
      start: 100
    functionDepth: 4
    functionLinenumber: 100
    functionLinenumberEnd: 186
    functionName: test_pcep_msg_create_request
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - assert
    - pcep_object_get_length_by_hdr
    - pcep_msg_create_request_ipv6
    - dll_append
    - pcep_obj_create_endpoint_ipv6
    - pcep_obj_create_bandwidth
    - pcep_encode_message
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_endpoint_ipv4
    - pcep_msg_create_request
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    - pcep_obj_create_rp
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_request()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 191
    functionName: test_pcep_msg_create_request_svec
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_request_svec()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:197,1
    - Dst: pcep_obj_create_nopath
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:198,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:200,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:201,1
    - Dst: pcep_msg_create_reply
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:203,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:204,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:205,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:206,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:207,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:208,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:209,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:210,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:211,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:213,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:214,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:215,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:216,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:217,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 205
        line_start: 205
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 208
        line_start: 208
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 220
      start: 194
    functionDepth: 4
    functionLinenumber: 194
    functionLinenumberEnd: 220
    functionName: test_pcep_msg_create_reply_nopath
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length_by_hdr
    - dll_append
    - pcep_encode_message
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_msg_create_reply
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - dll_initialize
    - pcep_obj_create_nopath
    - assert
    - pcep_obj_create_rp
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_reply_nopath()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_reply
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:226,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:228,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:229,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:230,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:231,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:232,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:233,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:234,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:235,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:236,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:237,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:239,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:241,1
    - Dst: pcep_obj_create_ro_subobj_32label
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:244,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:245,1
    - Dst: pcep_obj_create_ero
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:246,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:248,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:249,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:251,1
    - Dst: pcep_msg_create_reply
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:252,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:253,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:254,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:255,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:256,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:257,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:258,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:259,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:261,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:265,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:266,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 229
        line_start: 229
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 234
        line_start: 234
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 256
        line_start: 256
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 269
      start: 223
    functionDepth: 4
    functionLinenumber: 223
    functionLinenumberEnd: 269
    functionName: test_pcep_msg_create_reply
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length_by_hdr
    - dll_append
    - pcep_encode_message
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_ero
    - pcep_msg_create_reply
    - CU_ASSERT_EQUAL
    - pcep_obj_create_ro_subobj_32label
    - pcep_msg_free_message
    - dll_initialize
    - assert
    - pcep_obj_create_rp
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_reply()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_close
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:276,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:277,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:278,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:279,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:280,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:281,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:282,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:283,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:284,1
    - Dst: pcep_object_get_length
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:286,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:288,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:289,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:290,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:297,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:298,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:299,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:300,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 281
        line_start: 281
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 287
        line_start: 287
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (close_obj != NULL)
      pos:
        line_end: 296
        line_start: 296
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 302
      start: 272
    functionDepth: 5
    functionLinenumber: 272
    functionLinenumberEnd: 302
    functionName: test_pcep_msg_create_close
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_close
    - pcep_encode_message
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - assert
    - pcep_object_get_length
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_error
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:311,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:312,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:313,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:314,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:315,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:316,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:317,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:318,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:319,1
    - Dst: pcep_object_get_length
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:321,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:323,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:324,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:325,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:332,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:333,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:335,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:336,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 313
        line_start: 313
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 316
        line_start: 316
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 322
        line_start: 322
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 338
      start: 305
    functionDepth: 5
    functionLinenumber: 305
    functionLinenumberEnd: 338
    functionName: test_pcep_msg_create_error
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pcep_encode_message
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_msg_create_error
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - assert
    - pcep_object_get_length
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_error()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_keepalive
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:343,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:344,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:345,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:346,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:347,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:348,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:349,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:350,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:351,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:352,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:353,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:354,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 345
        line_start: 345
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 348
        line_start: 348
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 351
        line_start: 351
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 357
      start: 341
    functionDepth: 5
    functionLinenumber: 341
    functionLinenumberEnd: 357
    functionName: test_pcep_msg_create_keepalive
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - pcep_encode_message
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - pcep_msg_create_keepalive
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_keepalive()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:361,1
    - Dst: pcep_msg_create_report
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:364,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:365,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:368,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:370,1
    - Dst: pcep_msg_create_report
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:371,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:372,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:373,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:374,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:375,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:376,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:377,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:378,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:379,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:382,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:383,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:384,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 373
        line_start: 373
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 381
        line_start: 381
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 376
        line_start: 376
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 388
      start: 359
    functionDepth: 4
    functionLinenumber: 359
    functionLinenumberEnd: 388
    functionName: test_pcep_msg_create_report
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - pcep_encode_message
    - pcep_obj_create_lsp
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_msg_create_report
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_report()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:392,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:393,1
    - Dst: pcep_msg_create_update
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:395,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:396,1
    - Dst: pcep_msg_create_update
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:399,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:400,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:402,1
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:406,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:408,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:410,1
    - Dst: pcep_obj_create_ro_subobj_asn
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:410,1
    - Dst: pcep_obj_create_ero
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:411,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:414,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:415,1
    - Dst: pcep_msg_create_update
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:416,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:417,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:419,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:421,1
    - Dst: pcep_msg_create_update
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:424,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:425,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:426,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:427,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:428,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:429,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:430,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:431,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:432,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:437,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:438,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:439,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 429
        line_start: 429
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 436
        line_start: 436
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message != NULL)
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 443
      start: 390
    functionDepth: 4
    functionLinenumber: 390
    functionLinenumberEnd: 443
    functionName: test_pcep_msg_create_update
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - pcep_encode_message
    - pcep_obj_create_lsp
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_ro_subobj_asn
    - pcep_obj_create_ero
    - CU_ASSERT_EQUAL
    - pcep_obj_create_srp
    - pcep_msg_free_message
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    - pcep_msg_create_update
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_update()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:447,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:448,1
    - Dst: pcep_msg_create_initiate
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:451,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:452,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:454,1
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:458,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:460,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:462,1
    - Dst: pcep_obj_create_ro_subobj_asn
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:462,1
    - Dst: pcep_obj_create_ero
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:463,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:466,1
    - Dst: pcep_msg_create_initiate
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:467,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:468,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:470,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:474,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:475,1
    - Dst: pcep_msg_create_initiate
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:476,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:477,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:478,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:479,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:480,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:481,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:482,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:483,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:484,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:489,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:490,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:491,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 478
        line_start: 478
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 481
        line_start: 481
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 488
        line_start: 488
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 495
      start: 445
    functionDepth: 4
    functionLinenumber: 445
    functionLinenumberEnd: 495
    functionName: test_pcep_msg_create_initiate
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - pcep_encode_message
    - pcep_msg_create_initiate
    - pcep_obj_create_lsp
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_ro_subobj_asn
    - pcep_obj_create_ero
    - CU_ASSERT_EQUAL
    - pcep_obj_create_srp
    - pcep_msg_free_message
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_initiate()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_notify
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:499,1
    - Dst: pcep_msg_create_notify
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:504,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:505,1
    - Dst: pcep_msg_create_notify
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:507,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:508,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:509,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:510,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:511,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:512,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:513,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:514,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:517,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:518,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:519,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:522,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:525,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:526,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:527,1
    - Dst: pcep_obj_create_notify
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:528,1
    - Dst: pcep_msg_create_notify
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:532,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:533,1
    - Dst: pcep_encode_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:534,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:535,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:536,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:537,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:538,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:539,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:543,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:544,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_messages_test.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (message != NULL)
      pos:
        line_end: 509
        line_start: 509
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 511
        line_start: 511
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->msg_header != NULL)
      pos:
        line_end: 516
        line_start: 516
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message != NULL)
      pos:
        line_end: 534
        line_start: 534
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    - condition: (message->obj_list != NULL)
      pos:
        line_end: 536
        line_start: 536
        source_file: /src/frr/pceplib/test/pcep_msg_messages_test.c
    constantsTouched: []
    func_position:
      end: 548
      start: 497
    functionDepth: 4
    functionLinenumber: 497
    functionLinenumberEnd: 548
    functionName: test_pcep_msg_create_notify
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - pcep_encode_message
    - pcep_obj_create_notify
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - dll_initialize
    - pcep_msg_create_notify
    - CU_ASSERT_PTR_NULL
    - pcep_obj_create_rp
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_create_notify(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: pcep_pcc_api_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_api_test_suite_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:45,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: pcep_pcc_api_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_api_test_suite_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pcep_pcc_api_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - setup_mock_socket_comm_info
    linkageType: ''
    returnType: void
    signature: void pcep_pcc_api_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: teardown_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: pcep_pcc_api_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - teardown_mock_socket_comm_info
    linkageType: ''
    returnType: void
    signature: void pcep_pcc_api_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:71,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:71,1
    - Dst: sleep
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:73,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:74,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 6
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: test_initialize_pcc
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - destroy_pcc
    - initialize_pcc
    - sleep
    linkageType: ''
    returnType: void
    signature: void test_initialize_pcc()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:79,1
    - Dst: gethostbyname
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:80,1
    - Dst: memcpy
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:82,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:83,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:86,1
    - Dst: connect_pce
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:88,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:90,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:91,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:96,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:97,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:98,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:99,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:100,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:101,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:102,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:104,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:105,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:106,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:107,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (open_msg->msg_header != NULL)
      pos:
        line_end: 100
        line_start: 100
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    - condition: (open_msg != NULL)
      pos:
        line_end: 99
        line_start: 99
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    constantsTouched: []
    func_position:
      end: 110
      start: 77
    functionDepth: 7
    functionLinenumber: 77
    functionLinenumberEnd: 110
    functionName: test_connect_pce
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - assert
    - initialize_pcc
    - connect_pce
    - get_mock_socket_comm_info
    - create_default_pcep_configuration
    - pcep_decode_message
    - destroy_pcep_session
    - CU_ASSERT_PTR_NOT_NULL
    - destroy_pcep_configuration
    - pceplib_free
    - destroy_pcc
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - gethostbyname
    - memcpy
    linkageType: ''
    returnType: void
    signature: void test_connect_pce()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:114,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:119,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:120,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:123,1
    - Dst: connect_pce_ipv6
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:125,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:127,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:128,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:129,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:130,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:135,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:136,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:137,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:138,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:139,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:140,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:142,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:143,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:144,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:145,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (session != NULL)
      pos:
        line_end: 127
        line_start: 127
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    - condition: (open_msg != NULL)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    constantsTouched: []
    func_position:
      end: 148
      start: 112
    functionDepth: 7
    functionLinenumber: 112
    functionLinenumberEnd: 148
    functionName: test_connect_pce_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - connect_pce_ipv6
    - initialize_pcc
    - get_mock_socket_comm_info
    - create_default_pcep_configuration
    - pcep_decode_message
    - CU_ASSERT_PTR_NOT_NULL
    - destroy_pcep_configuration
    - CU_ASSERT_TRUE
    - pceplib_free
    - destroy_pcc
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - htonl
    - destroy_pcep_session
    - assert
    linkageType: ''
    returnType: void
    signature: void test_connect_pce_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:152,1
    - Dst: gethostbyname
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:153,1
    - Dst: memcpy
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:155,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:156,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:160,1
    - Dst: connect_pce
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:162,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:164,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:165,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:167,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:168,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:169,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:170,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:171,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:172,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:173,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:175,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:176,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:177,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:178,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (open_msg != NULL)
      pos:
        line_end: 170
        line_start: 170
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    - condition: (open_msg->msg_header != NULL)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    constantsTouched: []
    func_position:
      end: 181
      start: 150
    functionDepth: 7
    functionLinenumber: 150
    functionLinenumberEnd: 181
    functionName: test_connect_pce_with_src_ip
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - assert
    - initialize_pcc
    - connect_pce
    - get_mock_socket_comm_info
    - create_default_pcep_configuration
    - pcep_decode_message
    - destroy_pcep_session
    - CU_ASSERT_PTR_NOT_NULL
    - destroy_pcep_configuration
    - pceplib_free
    - destroy_pcc
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - gethostbyname
    - memcpy
    linkageType: ''
    returnType: void
    signature: void test_connect_pce_with_src_ip()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:185,1
    - Dst: gethostbyname
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:186,1
    - Dst: memcpy
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:188,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:189,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:192,1
    - Dst: connect_pce
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:194,1
    - Dst: disconnect_pce
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:195,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:197,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:201,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:202,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:203,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:204,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:205,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:206,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:207,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:208,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:211,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:212,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:213,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:214,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:215,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:216,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:217,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:219,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:220,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:221,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:222,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg != NULL)
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    - condition: (msg != NULL)
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    - condition: (msg->msg_header != NULL)
      pos:
        line_end: 215
        line_start: 215
        source_file: /src/frr/pceplib/test/pcep_pcc_api_test.c
    constantsTouched: []
    func_position:
      end: 225
      start: 183
    functionDepth: 7
    functionLinenumber: 183
    functionLinenumberEnd: 225
    functionName: test_disconnect_pce
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - assert
    - disconnect_pce
    - initialize_pcc
    - connect_pce
    - get_mock_socket_comm_info
    - create_default_pcep_configuration
    - pcep_decode_message
    - destroy_pcep_session
    - CU_ASSERT_PTR_NOT_NULL
    - destroy_pcep_configuration
    - pceplib_free
    - destroy_pcc
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - gethostbyname
    - memcpy
    linkageType: ''
    returnType: void
    signature: void test_disconnect_pce()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:230,1
    - Dst: gethostbyname
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:231,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:234,1
    - Dst: memcpy
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:236,1
    - Dst: connect_pce
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:237,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:238,1
    - Dst: pcep_msg_create_keepalive
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:240,1
    - Dst: send_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:241,1
    - Dst: verify_socket_comm_times_called
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:243,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:245,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:246,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:247,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 228
    functionDepth: 7
    functionLinenumber: 228
    functionLinenumberEnd: 250
    functionName: test_send_message
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - initialize_pcc
    - connect_pce
    - create_default_pcep_configuration
    - destroy_pcep_session
    - destroy_pcep_configuration
    - destroy_pcc
    - send_message
    - pcep_msg_free_message
    - pcep_msg_create_keepalive
    - verify_socket_comm_times_called
    - gethostbyname
    - memcpy
    linkageType: ''
    returnType: void
    signature: void test_send_message()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:255,1
    - Dst: initialize_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:255,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:258,1
    - Dst: event_queue_is_empty
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:258,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:259,1
    - Dst: event_queue_num_events_available
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:259,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:260,1
    - Dst: event_queue_get_event
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:260,1
    - Dst: destroy_pcep_event
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:261,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:264,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:265,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:266,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:267,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:268,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:271,1
    - Dst: event_queue_is_empty
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:271,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:272,1
    - Dst: event_queue_num_events_available
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:272,1
    - Dst: event_queue_get_event
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:273,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:274,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:275,1
    - Dst: destroy_pcep_event
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:276,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:278,1
    - Dst: destroy_pcc
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 252
    functionDepth: 6
    functionLinenumber: 252
    functionLinenumberEnd: 279
    functionName: test_event_queue
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - initialize_pcc
    - memset
    - event_queue_num_events_available
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_FALSE
    - event_queue_get_event
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - destroy_pcc
    - event_queue_is_empty
    - CU_ASSERT_EQUAL
    - destroy_pcep_event
    - queue_enqueue
    - pceplib_malloc
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_event_queue()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:283,1
    - Dst: strcmp
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:283,1
    - Dst: get_event_type_str
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:283,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:286,1
    - Dst: strcmp
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:286,1
    - Dst: get_event_type_str
      Src: /src/frr/pceplib/test/pcep_pcc_api_test.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: test_get_event_type_str
    functionSourceFile: /src/frr/pceplib/test/pcep_pcc_api_test.c
    functionUses: 0
    functionsReached:
    - strcmp
    - CU_ASSERT_EQUAL
    - get_event_type_str
    linkageType: ''
    returnType: void
    signature: void test_get_event_type_str()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_initialize
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:30,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:32,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:33,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:34,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:35,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (handle != NULL)
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/frr/pceplib/test/pcep_utils_queue_test.c
    constantsTouched: []
    func_position:
      end: 38
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 38
    functionName: test_empty_queue
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_queue_test.c
    functionUses: 0
    functionsReached:
    - assert
    - queue_initialize
    - queue_destroy
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_empty_queue()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:45,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:46,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:47,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:49,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: test_null_queue_handle
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_queue_test.c
    functionUses: 0
    functionsReached:
    - queue_destroy
    - queue_dequeue
    - CU_ASSERT_PTR_NULL
    - queue_enqueue
    linkageType: ''
    returnType: void
    signature: void test_null_queue_handle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_initialize
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:61,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:63,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:64,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:65,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:67,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:70,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:73,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:76,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:79,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 82
    functionName: test_enqueue
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_queue_test.c
    functionUses: 0
    functionsReached:
    - queue_initialize
    - CU_ASSERT_PTR_EQUAL
    - queue_destroy
    - CU_ASSERT_EQUAL
    - queue_enqueue
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_enqueue()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_initialize_with_size
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:92,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:94,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:95,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:97,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:98,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:100,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:101,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:103,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:106,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:109,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:112,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 115
    functionName: test_enqueue_with_limit
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_queue_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_PTR_EQUAL
    - queue_destroy
    - queue_initialize_with_size
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - queue_enqueue
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_enqueue_with_limit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queue_initialize
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:125,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:128,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:129,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:131,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:132,1
    - Dst: queue_enqueue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:133,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:135,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:136,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:137,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:139,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:140,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:141,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:143,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:144,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:145,1
    - Dst: queue_dequeue
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:147,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:148,1
    - Dst: queue_destroy
      Src: /src/frr/pceplib/test/pcep_utils_queue_test.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 151
    functionName: test_dequeue
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_queue_test.c
    functionUses: 0
    functionsReached:
    - queue_initialize
    - CU_ASSERT_PTR_EQUAL
    - queue_destroy
    - queue_dequeue
    - CU_ASSERT_EQUAL
    - queue_enqueue
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_dequeue()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:29,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:31,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:31,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:32,1
    - Dst: dll_delete_last_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:32,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:33,1
    - Dst: dll_delete_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:33,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: test_empty_dl_list
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    functionUses: 0
    functionsReached:
    - dll_delete_last_node
    - dll_delete_node
    - dll_delete_first_node
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void test_empty_dl_list()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:40,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:41,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:41,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:42,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:42,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:43,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:43,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:44,1
    - Dst: dll_delete_last_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:44,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:45,1
    - Dst: dll_delete_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 46
    functionName: test_null_dl_list_handle
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - dll_delete_last_node
    - dll_prepend
    - dll_delete_first_node
    - dll_delete_node
    - CU_ASSERT_PTR_NULL
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void test_null_dl_list_handle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:55,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:57,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:57,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:58,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:58,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:59,1
    - Dst: dll_prepend
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:59,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:61,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:64,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:65,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:66,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:67,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:68,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:71,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:72,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:73,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:74,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:75,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:78,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:79,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:80,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:81,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:82,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:83,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node != NULL)
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    - condition: (node != NULL)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    - condition: (node != NULL)
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    constantsTouched: []
    func_position:
      end: 86
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 86
    functionName: test_dll_prepend_data
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NULL
    - dll_prepend
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - dll_initialize
    - assert
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void test_dll_prepend_data()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:96,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:98,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:98,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:99,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:99,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:100,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:100,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:102,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:105,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:106,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:107,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:110,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:111,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:112,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:113,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:114,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:117,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:118,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:119,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:120,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:121,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:122,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node != NULL)
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    - condition: (node != NULL)
      pos:
        line_end: 117
        line_start: 117
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    constantsTouched: []
    func_position:
      end: 125
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 125
    functionName: test_dll_append_data
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void test_dll_append_data()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:134,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:137,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:137,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:138,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:140,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:141,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:142,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:144,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:145,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:146,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:149,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:149,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:150,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:150,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:151,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:153,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:154,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:155,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:157,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:158,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:159,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:160,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:161,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 164
    functionName: test_dll_delete_first_node
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void test_dll_delete_first_node()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:173,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:176,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:176,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:177,1
    - Dst: dll_delete_last_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:179,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:180,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:181,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:183,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:184,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:185,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:188,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:188,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:189,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:189,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:190,1
    - Dst: dll_delete_last_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:192,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:193,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:194,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:196,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:197,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:198,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:199,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:200,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 203
    functionName: test_dll_delete_last_node
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    functionUses: 0
    functionsReached:
    - dll_delete_last_node
    - dll_append
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void test_dll_delete_last_node()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:216,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:217,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:218,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:219,1
    - Dst: dll_delete_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:221,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:222,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:223,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:225,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:226,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:227,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:232,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:233,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:234,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:235,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:236,1
    - Dst: dll_delete_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:239,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:240,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:241,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:243,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:244,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:245,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:246,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:247,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:248,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:253,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:254,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:255,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:256,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:257,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:258,1
    - Dst: dll_delete_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:261,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:262,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:263,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:265,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:266,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:267,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:268,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:269,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:270,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:275,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:276,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:277,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:278,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:279,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:280,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:281,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:282,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:283,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:284,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:285,1
    - Dst: dll_delete_node
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:288,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:289,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:290,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:292,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:293,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:294,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:295,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:296,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:297,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:298,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:299,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:300,1
    - Dst: dll_destroy
      Src: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node3 != NULL)
      pos:
        line_end: 283
        line_start: 283
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    - condition: (node1 != NULL)
      pos:
        line_end: 279
        line_start: 279
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    - condition: (node2 != NULL)
      pos:
        line_end: 281
        line_start: 281
        source_file: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    constantsTouched: []
    func_position:
      end: 303
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 303
    functionName: test_dll_delete_node
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_double_linked_list_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - CU_ASSERT_PTR_EQUAL
    - dll_delete_node
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - dll_initialize
    - CU_ASSERT_PTR_NULL
    - dll_destroy
    linkageType: ''
    returnType: void
    signature: void test_dll_delete_node()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 143
    functionName: pcep_tools_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_tools_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:147,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 150
    functionName: pcep_tools_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_tools_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: pcep_tools_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pcep_tools_test_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: pcep_tools_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pcep_tools_test_teardown(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:169,1
    - Dst: umask
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:171,1
    - Dst: strlcpy
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:173,1
    - Dst: mkstemp
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:174,1
    - Dst: umask
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:175,1
    - Dst: strtol
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:182,1
    - Dst: write
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:183,1
    - Dst: lseek
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - filename
    - hexbyte_strs
    - hexbyte_strs_length
    argTypes:
    - char*
    - char*[]
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 191
    functionName: convert_hexstrs_to_binary
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - mkstemp
    - strlcpy
    - lseek
    - strtol
    - umask
    - write
    linkageType: ''
    returnType: int
    signature: "int convert_hexstrs_to_binary(char *filename, const char *hexbyte_strs[],\n\t\t\t
      \     uint16_t hexbyte_strs_length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - obj_hdr
    argTypes:
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: pcep_obj_has_tlv
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pcep_obj_has_tlv(struct pcep_object_header *obj_hdr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:206,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:209,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:212,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:213,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:214,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:215,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:218,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:219,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:220,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:229,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:230,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:231,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:232,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:233,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:233,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:238,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:239,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:240,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:241,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:242,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:243,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:244,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:245,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:246,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:249,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:249,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:250,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:253,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:254,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:259,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:260,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:261,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:262,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:263,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:263,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:268,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:269,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:270,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:275,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:276,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:277,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:281,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:283,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:284,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:287,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:292,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:293,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:294,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:297,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:300,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:301,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg_list != NULL)
      pos:
        line_end: 213
        line_start: 213
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (ero_subobj_list != NULL)
      pos:
        line_end: 275
        line_start: 275
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 303
      start: 202
    functionDepth: 5
    functionLinenumber: 202
    functionLinenumberEnd: 303
    functionName: test_pcep_msg_read_pcep_initiate
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length_by_hdr
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_msg_read
    - pcep_obj_has_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_initiate()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:311,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:314,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:317,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:318,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:319,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:320,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:323,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:324,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:325,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:334,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:335,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:336,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:337,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:337,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:343,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:344,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:345,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:348,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:348,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:349,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:352,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:353,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:358,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:359,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:360,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:361,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:362,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:362,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:367,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:368,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:369,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:374,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:375,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:376,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:378,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:394,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:395,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ero_subobj_list != NULL)
      pos:
        line_end: 374
        line_start: 374
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (msg_list != NULL)
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 397
      start: 306
    functionDepth: 5
    functionLinenumber: 306
    functionLinenumberEnd: 397
    functionName: test_pcep_msg_read_pcep_initiate2
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length_by_hdr
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - CU_ASSERT_EQUAL
    - pcep_msg_read
    - pcep_obj_has_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_initiate2()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:403,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:406,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:409,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:410,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:411,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:412,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:415,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:416,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:417,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:423,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:424,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:425,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:426,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:426,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:429,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:433,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:434,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:439,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:440,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:442,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:443,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg_list != NULL)
      pos:
        line_end: 410
        line_start: 410
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 445
      start: 399
    functionDepth: 5
    functionLinenumber: 399
    functionLinenumberEnd: 445
    functionName: test_pcep_msg_read_pcep_open
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - CU_ASSERT_EQUAL
    - pcep_msg_read
    - pcep_obj_has_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_open()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:451,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:454,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:457,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:458,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:459,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:460,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:463,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:465,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:466,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:476,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:477,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:478,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:479,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:479,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:482,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:485,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:486,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:492,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:493,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:494,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:495,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:496,1
    - Dst: pcep_obj_has_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:496,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:501,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:502,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:503,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:508,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:509,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:510,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:512,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:528,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:529,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg_list != NULL)
      pos:
        line_end: 458
        line_start: 458
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (ero_subobj_list != NULL)
      pos:
        line_end: 508
        line_start: 508
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 531
      start: 447
    functionDepth: 5
    functionLinenumber: 447
    functionLinenumberEnd: 531
    functionName: test_pcep_msg_read_pcep_update
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length_by_hdr
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - CU_ASSERT_EQUAL
    - pcep_msg_read
    - pcep_obj_has_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_update()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:537,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:541,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:544,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:545,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:546,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:547,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:550,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:551,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:552,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:556,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:557,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:558,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:561,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:562,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg_list != NULL)
      pos:
        line_end: 545
        line_start: 545
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 564
      start: 533
    functionDepth: 5
    functionLinenumber: 533
    functionLinenumberEnd: 564
    functionName: test_pcep_msg_read_pcep_open_initiate
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - CU_ASSERT_EQUAL
    - pcep_msg_read
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_open_initiate()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:570,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:574,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:577,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:578,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:579,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:580,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:583,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:584,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:586,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:591,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:592,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:593,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:594,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:595,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:596,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:597,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:598,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:599,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:600,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:607,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:609,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:610,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:611,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:612,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:613,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:614,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:615,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:621,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:623,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:624,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:625,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:626,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:628,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:629,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg_list != NULL)
      pos:
        line_end: 578
        line_start: 578
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (open->header.tlv_list != NULL)
      pos:
        line_end: 598
        line_start: 598
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 631
      start: 566
    functionDepth: 5
    functionLinenumber: 566
    functionLinenumberEnd: 631
    functionName: test_pcep_msg_read_pcep_open_cisco_pce
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - CU_ASSERT_EQUAL
    - pcep_msg_read
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_open_cisco_pce()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:637,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:641,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:644,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:645,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:646,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:647,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:650,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:651,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:653,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:658,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:659,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:660,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:661,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:662,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:663,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:664,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:665,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:671,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:673,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:674,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:679,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:680,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:681,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:682,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:683,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:684,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:685,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:686,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:687,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:688,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:689,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:690,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:691,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:697,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:698,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:699,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:700,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:705,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:706,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:707,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:708,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:709,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:710,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:711,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:717,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:719,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:720,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:722,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:723,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:724,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:725,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:726,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:727,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:729,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:733,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:735,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:736,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:738,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:739,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:740,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:741,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:742,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:743,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:745,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:749,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:751,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:752,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:754,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:755,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:756,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:757,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:758,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:759,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:761,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:767,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:768,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:769,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:770,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:771,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:772,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:773,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:774,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:776,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:777,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (lsp->header.tlv_list != NULL)
      pos:
        line_end: 682
        line_start: 682
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (ero->sub_objects != NULL)
      pos:
        line_end: 709
        line_start: 709
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (srp->header.tlv_list != NULL)
      pos:
        line_end: 661
        line_start: 661
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (msg_list != NULL)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 779
      start: 633
    functionDepth: 5
    functionLinenumber: 633
    functionLinenumberEnd: 779
    functionName: test_pcep_msg_read_pcep_update_cisco_pce
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_msg_read
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_update_cisco_pce()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:785,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:789,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:792,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:793,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:794,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:795,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:798,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:799,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:801,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:806,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:807,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:808,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:809,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:810,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:811,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:812,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:813,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:819,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:821,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:822,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:827,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:828,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:829,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:830,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:832,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:833,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:834,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:835,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:836,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:837,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:838,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:839,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:845,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:847,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:848,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:849,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:850,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:851,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:852,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:853,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:854,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:855,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:861,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:863,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:864,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:865,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:866,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:872,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:873,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:874,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:875,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:876,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:877,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:878,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:884,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:885,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:886,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:887,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:888,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:889,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:890,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:891,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:892,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:893,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:899,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:901,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:903,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:904,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:909,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:911,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:913,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:914,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:920,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:921,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:922,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:923,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:924,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:925,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:926,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:927,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:932,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:933,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:934,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:935,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:936,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:937,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:938,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:939,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:941,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:942,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:943,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ero->sub_objects != NULL)
      pos:
        line_end: 876
        line_start: 876
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (srp->header.tlv_list != NULL)
      pos:
        line_end: 809
        line_start: 809
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (msg_list != NULL)
      pos:
        line_end: 793
        line_start: 793
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 944
      start: 781
    functionDepth: 5
    functionLinenumber: 781
    functionLinenumberEnd: 944
    functionName: test_pcep_msg_read_pcep_report_cisco_pcc
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - strncmp
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_msg_read
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_report_cisco_pcc()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convert_hexstrs_to_binary
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:950,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:954,1
    - Dst: pcep_msg_read
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:957,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:958,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:959,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:960,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:963,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:964,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:966,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:971,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:972,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:973,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:974,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:975,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:976,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:977,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:978,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:983,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:984,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:985,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:986,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:987,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:988,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:989,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:990,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:991,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:992,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:993,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:994,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:995,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1001,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1003,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1005,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1006,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1007,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1007,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1008,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1008,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1014,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1016,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1018,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1019,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1020,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1021,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1022,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1028,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1030,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1032,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1033,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1034,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1035,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1036,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1037,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1041,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1042,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1043,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1048,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1049,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1050,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1051,1
    - Dst: pcep_msg_free_message_list
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1053,1
    - Dst: close
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1054,1
    - Dst: unlink
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (msg_list != NULL)
      pos:
        line_end: 958
        line_start: 958
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (switch_layer->switch_layer_rows != NULL)
      pos:
        line_end: 1035
        line_start: 1035
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (switch_layer->header.tlv_list == NULL)
      pos:
        line_end: 1033
        line_start: 1033
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (srp->header.tlv_list != NULL)
      pos:
        line_end: 974
        line_start: 974
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    - condition: (lsp->header.tlv_list != NULL)
      pos:
        line_end: 986
        line_start: 986
        source_file: /src/frr/pceplib/test/pcep_msg_tools_test.c
    constantsTouched: []
    func_position:
      end: 1056
      start: 946
    functionDepth: 5
    functionLinenumber: 946
    functionLinenumberEnd: 1056
    functionName: test_pcep_msg_read_pcep_initiate_cisco_pcc
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - unlink
    - convert_hexstrs_to_binary
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - close
    - CU_ASSERT_TRUE
    - pcep_msg_free_message_list
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_msg_read
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_msg_read_pcep_initiate_cisco_pcc()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1067,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1068,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1072,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1073,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1077,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1078,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1081,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1082,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1086,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1087,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1089,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1090,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1093,1
    - Dst: pcep_decode_validate_msg_header
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1058
    functionDepth: 3
    functionLinenumber: 1058
    functionLinenumberEnd: 1094
    functionName: test_validate_message_header
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - pcep_decode_validate_msg_header
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: void test_validate_message_header()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1102,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1103,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1104,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1110,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1114,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1118,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1122,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1126,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1130,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1134,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 5
    argNames:
    - msg_type
    - obj1_class
    - obj2_class
    - obj3_class
    - obj4_class
    argTypes:
    - uint8_t
    - uint8_t
    - uint8_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1097
    functionDepth: 2
    functionLinenumber: 1097
    functionLinenumberEnd: 1142
    functionName: create_message
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - dll_initialize
    - pceplib_malloc
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *create_message(uint8_t msg_type, uint8_t obj1_class,\n\t\t\t\t
      \   uint8_t obj2_class, uint8_t obj3_class,\n\t\t\t\t    uint8_t obj4_class)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1148,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1149,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1149,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1150,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1153,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1154,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1154,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1155,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1159,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1161,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1161,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1162,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1165,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1167,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1167,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1168,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1171,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1173,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1173,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1174,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1177,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1179,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1179,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1180,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1183,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1184,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1184,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1185,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1188,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1190,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1190,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1191,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1194,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1196,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1196,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1197,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1200,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1202,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1202,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1144
    functionDepth: 4
    functionLinenumber: 1144
    functionLinenumberEnd: 1204
    functionName: test_validate_message_objects
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - validate_message_objects
    - create_message
    - pcep_msg_free_message
    linkageType: ''
    returnType: void
    signature: void test_validate_message_objects()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1210,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1211,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1211,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1212,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1216,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1217,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1217,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1218,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1220,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1221,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1221,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1222,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1224,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1226,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1226,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1227,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1231,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1232,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1232,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1233,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1238,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1239,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1239,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1240,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1242,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1244,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1244,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1245,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1249,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1250,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1250,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1251,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1253,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1254,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1254,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1255,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1259,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1260,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1260,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1261,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1263,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1264,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1264,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1265,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1269,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1270,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1270,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1271,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1273,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1274,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1274,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1275,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1279,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1280,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1280,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1281,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1283,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1284,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1284,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1285,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1289,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1290,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1290,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1291,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1295,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1296,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1296,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1297,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1301,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1302,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1302,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1303,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1305,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1306,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1306,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1307,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1309,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1310,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1310,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1311,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1313,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1315,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1315,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1316,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1320,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1321,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1321,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1322,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1324,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1325,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1325,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1326,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1328,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1329,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1329,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1330,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1332,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1334,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1334,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1335,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1339,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1340,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1340,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1341,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1343,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1344,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1344,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1345,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1347,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1348,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1348,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1349,1
    - Dst: create_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1351,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1353,1
    - Dst: validate_message_objects
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1353,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_msg_tools_test.c:1354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1206
    functionDepth: 4
    functionLinenumber: 1206
    functionLinenumberEnd: 1355
    functionName: test_validate_message_objects_invalid
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tools_test.c
    functionUses: 0
    functionsReached:
    - validate_message_objects
    - CU_ASSERT_FALSE
    - create_message
    - pcep_msg_free_message
    linkageType: ''
    returnType: void
    signature: void test_validate_message_objects_invalid()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - data
    - timerId
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: test_timer_expire_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_timer_expire_handler(void *data, int timerId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:52,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:53,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:54,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:56,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 67
    functionName: pcep_timers_event_loop_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached:
    - memset
    - ordered_list_initialize
    - pthread_mutex_init
    - fprintf
    - pceplib_malloc
    linkageType: ''
    returnType: void
    signature: void pcep_timers_event_loop_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:74,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:75,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:76,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: pcep_timers_event_loop_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pthread_mutex_destroy
    - ordered_list_destroy
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void pcep_timers_event_loop_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:88,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:89,1
    - Dst: walk_and_process_timers
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:91,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:93,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:94,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 86
    functionDepth: 3
    functionLinenumber: 86
    functionLinenumberEnd: 96
    functionName: test_walk_and_process_timers_no_timers
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - walk_and_process_timers
    - CU_ASSERT_EQUAL
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_walk_and_process_timers_no_timers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:104,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:106,1
    - Dst: walk_and_process_timers
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:108,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:111,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:112,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 114
    functionName: test_walk_and_process_timers_timer_not_expired
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - ordered_list_add_node
    - walk_and_process_timers
    - time
    linkageType: ''
    returnType: void
    signature: void test_walk_and_process_timers_timer_not_expired()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:121,1
    - Dst: time
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:124,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:125,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:127,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:128,1
    - Dst: walk_and_process_timers
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:130,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:134,1
    - Dst: CU_ASSERT_PTR_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:135,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:136,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:137,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 139
    functionName: test_walk_and_process_timers_timer_expired
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - CU_ASSERT_PTR_EQUAL
    - CU_ASSERT_PTR_NULL
    - pceplib_malloc
    - time
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - ordered_list_add_node
    - walk_and_process_timers
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void test_walk_and_process_timers_timer_expired()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_loop
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 145
    functionName: test_event_loop_null_handle
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached:
    - event_loop
    linkageType: ''
    returnType: void
    signature: void test_event_loop_null_handle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_loop
      Src: /src/frr/pceplib/test/pcep_timers_event_loop_test.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: test_event_loop_not_active
    functionSourceFile: /src/frr/pceplib/test/pcep_timers_event_loop_test.c
    functionUses: 0
    functionsReached:
    - event_loop
    linkageType: ''
    returnType: void
    signature: void test_event_loop_not_active()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - session_data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 54
    functionName: test_loop_message_ready_to_read_handler
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int test_loop_message_ready_to_read_handler(void *session_data,\n\t\t\t\t\t\t
      \  int socket_fd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - session_data
    - socket_fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: test_loop_conn_except_notifier
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void test_loop_conn_except_notifier(void *session_data, int socket_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:71,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:72,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:75,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:77,1
    - Dst: ordered_list_initialize
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:79,1
    - Dst: pthread_mutex_init
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:80,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:84,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:85,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 96
    functionName: pcep_socket_comm_loop_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached:
    - memset
    - ordered_list_initialize
    - pceplib_malloc
    - pthread_mutex_init
    - ordered_list_add_node
    linkageType: ''
    returnType: void
    signature: void pcep_socket_comm_loop_test_setup()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_destroy
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:101,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:102,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:103,1
    - Dst: ordered_list_destroy
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:104,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:105,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: pcep_socket_comm_loop_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached:
    - pceplib_free
    - pthread_mutex_destroy
    - ordered_list_destroy
    linkageType: ''
    returnType: void
    signature: void pcep_socket_comm_loop_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_loop
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 7
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: test_socket_comm_loop_null_handle
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached:
    - socket_comm_loop
    linkageType: ''
    returnType: void
    signature: void test_socket_comm_loop_null_handle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket_comm_loop
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 7
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: test_socket_comm_loop_not_active
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached:
    - socket_comm_loop
    linkageType: ''
    returnType: void
    signature: void test_socket_comm_loop_not_active()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:138,1
    - Dst: handle_reads
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:140,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:142,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:143,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 136
    functionDepth: 6
    functionLinenumber: 136
    functionLinenumberEnd: 145
    functionName: test_handle_reads_no_read
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - handle_reads
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_handle_reads_no_read()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FD_SET
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:154,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:156,1
    - Dst: handle_reads
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:159,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:161,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:162,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 148
    functionDepth: 6
    functionLinenumber: 148
    functionLinenumberEnd: 165
    functionName: test_handle_reads_read_message
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - CU_ASSERT_FALSE
    - CU_ASSERT_TRUE
    - handle_reads
    - CU_ASSERT_EQUAL
    - ordered_list_add_node
    linkageType: ''
    returnType: void
    signature: void test_handle_reads_read_message()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FD_SET
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:174,1
    - Dst: ordered_list_add_node
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:176,1
    - Dst: handle_reads
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:179,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:181,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:182,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:183,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 168
    functionDepth: 6
    functionLinenumber: 168
    functionLinenumberEnd: 186
    functionName: test_handle_reads_read_message_close
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_loop_test.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - CU_ASSERT_FALSE
    - CU_ASSERT_TRUE
    - handle_reads
    - CU_ASSERT_EQUAL
    - ordered_list_add_node
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_handle_reads_read_message_close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: pcep_objects_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_objects_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:47,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: pcep_objects_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_objects_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: reset_objects_buffer
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset_objects_buffer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:59,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: pcep_objects_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - create_default_pcep_versioning
    - reset_objects_buffer
    linkageType: ''
    returnType: void
    signature: void pcep_objects_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: pcep_objects_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - destroy_pcep_versioning
    linkageType: ''
    returnType: void
    signature: void pcep_objects_test_teardown()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:84,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:87,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:92,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:95,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:101,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:104,1
    - Dst: ntohs
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:107,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:109,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:112,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - obj_class
    - obj_type
    - obj_length
    - obj_buf
    argTypes:
    - uint8_t
    - uint8_t
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 114
    functionName: verify_pcep_obj_header2
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - ntohs
    - fprintf
    - CU_FAIL
    linkageType: ''
    returnType: void
    signature: "void verify_pcep_obj_header2(uint8_t obj_class, uint8_t obj_type,\n\t\t\t\t
      \   uint16_t obj_length, const uint8_t *obj_buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:120,1
    - Dst: verify_pcep_obj_header2
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:121,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - obj_class
    - obj_type
    - obj_hdr
    argTypes:
    - uint8_t
    - uint8_t
    - struct pcep_object_header*
    assertStmts:
    - condition: (obj_hdr != NULL)
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: verify_pcep_obj_header
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length_by_hdr
    - verify_pcep_obj_header2
    - assert
    linkageType: ''
    returnType: void
    signature: "void verify_pcep_obj_header(uint8_t obj_class, uint8_t obj_type,\n\t\t\t\t
      \  struct pcep_object_header *obj_hdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:133,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:135,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:136,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:137,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:140,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:142,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:143,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:144,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:145,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 148
    functionName: test_pcep_obj_create_open
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_open
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_encode_object
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_open()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:155,1
    - Dst: pcep_tlv_create_stateful_pce_capability
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:158,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:160,1
    - Dst: pcep_obj_create_open
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:162,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:164,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:165,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:166,1
    - Dst: verify_pcep_obj_header2
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:167,1
    - Dst: pcep_object_get_length_by_hdr
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:168,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:171,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:172,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:173,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:175,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:177,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:178,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:179,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:180,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (open != NULL)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    - condition: (open->header.tlv_list != NULL)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 183
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 183
    functionName: test_pcep_obj_create_open_with_tlvs
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_object_get_length_by_hdr
    - dll_append
    - pcep_obj_create_open
    - pcep_obj_free_object
    - verify_pcep_obj_header2
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_tlv_create_stateful_pce_capability
    - CU_ASSERT_EQUAL
    - dll_initialize
    - pcep_encode_object
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_open_with_tlvs()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:191,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:193,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:195,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:197,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:198,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:199,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:202,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:203,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:204,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:205,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:206,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:207,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:208,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:209,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:210,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:211,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 214
    functionName: test_pcep_obj_create_rp
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_encode_object
    - CU_ASSERT_PTR_NULL
    - pcep_obj_create_rp
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_rp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_nopath
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:222,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:224,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:225,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:226,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:229,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:230,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:231,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:232,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:235,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:236,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:237,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:241,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:242,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:243,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:245,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:246,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:247,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:248,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:249,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:250,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (nopath->header.tlv_list != NULL)
      pos:
        line_end: 235
        line_start: 235
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    - condition: (nopath != NULL)
      pos:
        line_end: 234
        line_start: 234
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 253
      start: 216
    functionDepth: 3
    functionLinenumber: 216
    functionLinenumberEnd: 253
    functionName: test_pcep_obj_create_nopath
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - htons
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_obj_create_nopath
    - pcep_encode_object
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_nopath()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:259,1
    - Dst: pcep_obj_create_association_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:262,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:265,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:266,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:267,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:269,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:270,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:271,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:273,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (assoc != NULL)
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 276
      start: 254
    functionDepth: 4
    functionLinenumber: 254
    functionLinenumberEnd: 276
    functionName: test_pcep_obj_create_association_ipv4
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_obj_create_association_ipv4
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_association_ipv4()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:282,1
    - Dst: pcep_obj_create_association_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:285,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:288,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:289,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:290,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:292,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:293,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:294,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:296,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:298,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:300,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:302,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (assoc != NULL)
      pos:
        line_end: 288
        line_start: 288
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 306
      start: 278
    functionDepth: 4
    functionLinenumber: 278
    functionLinenumberEnd: 306
    functionName: test_pcep_obj_create_association_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_association_ipv6
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - inet_pton
    - CU_ASSERT_EQUAL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_association_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:311,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:312,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:315,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:316,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:318,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:319,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:321,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:322,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:324,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:325,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:326,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:327,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:329,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:331,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 308
    functionDepth: 4
    functionLinenumber: 308
    functionLinenumberEnd: 335
    functionName: test_pcep_obj_create_endpoint_ipv4
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_endpoint_ipv4
    - verify_pcep_obj_header
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_encode_object
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_endpoint_ipv4()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:340,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:341,1
    - Dst: pcep_obj_create_endpoint_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:344,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:345,1
    - Dst: pcep_obj_create_endpoint_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:347,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:348,1
    - Dst: pcep_obj_create_endpoint_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:350,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:351,1
    - Dst: pcep_obj_create_endpoint_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:353,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:354,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:355,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:356,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:359,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:360,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:361,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:362,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:363,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:364,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:365,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:366,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 337
    functionDepth: 4
    functionLinenumber: 337
    functionLinenumberEnd: 369
    functionName: test_pcep_obj_create_endpoint_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - pcep_obj_create_endpoint_ipv6
    - CU_ASSERT_PTR_NOT_NULL
    - verify_pcep_obj_header
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_encode_object
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_endpoint_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_bandwidth
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:378,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:380,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:381,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:382,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:384,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:385,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:386,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:387,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 371
    functionDepth: 4
    functionLinenumber: 371
    functionLinenumberEnd: 390
    functionName: test_pcep_obj_create_bandwidth
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - pcep_obj_create_bandwidth
    - CU_ASSERT_PTR_NOT_NULL
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_encode_object
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_bandwidth()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_metric
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:404,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:406,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:407,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:408,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:410,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:411,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:412,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:413,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:414,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:416,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:417,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:418,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:419,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 392
    functionDepth: 4
    functionLinenumber: 392
    functionLinenumberEnd: 422
    functionName: test_pcep_obj_create_metric
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_obj_create_metric
    - pcep_encode_object
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_metric()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_lspa
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:432,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:435,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:436,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:437,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:440,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:440,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:441,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:441,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:442,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:442,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:443,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:444,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:445,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:446,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 424
    functionDepth: 4
    functionLinenumber: 424
    functionLinenumberEnd: 449
    functionName: test_pcep_obj_create_lspa
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_obj_create_lspa
    - htonl
    - pcep_encode_object
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_lspa()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_svec
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:454,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:455,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:457,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:459,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:461,1
    - Dst: pcep_obj_create_svec
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:463,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:464,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:465,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:466,1
    - Dst: verify_pcep_obj_header2
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:467,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:470,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:471,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:472,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:473,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:474,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:475,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:476,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:477,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (svec != NULL)
      pos:
        line_end: 464
        line_start: 464
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 480
      start: 451
    functionDepth: 4
    functionLinenumber: 451
    functionLinenumberEnd: 480
    functionName: test_pcep_obj_create_svec
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - pcep_obj_free_object
    - verify_pcep_obj_header2
    - pcep_obj_create_svec
    - pcep_encode_object
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - htonl
    - dll_initialize
    - pceplib_malloc
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_svec()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_error
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:488,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:490,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:491,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:492,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:494,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:495,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:496,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:497,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 482
    functionDepth: 4
    functionLinenumber: 482
    functionLinenumberEnd: 500
    functionName: test_pcep_obj_create_error
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_error
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_encode_object
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_error()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_close
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:506,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:508,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:509,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:510,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:512,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:513,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:514,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:515,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 502
    functionDepth: 4
    functionLinenumber: 502
    functionLinenumberEnd: 518
    functionName: test_pcep_obj_create_close
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_encode_object
    - pcep_obj_create_close
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:525,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:527,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:528,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:529,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:531,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:532,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:533,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:534,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:535,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:536,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 520
    functionDepth: 3
    functionLinenumber: 520
    functionLinenumberEnd: 539
    functionName: test_pcep_obj_create_srp
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_obj_create_srp
    - htonl
    - pcep_encode_object
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_srp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:553,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:555,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:558,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:560,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:562,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:565,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:566,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:567,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:569,1
    - Dst: ntohl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:569,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:572,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:573,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:574,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:575,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:576,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:577,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 541
    functionDepth: 3
    functionLinenumber: 541
    functionLinenumberEnd: 580
    functionName: test_pcep_obj_create_lsp
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - pcep_obj_create_lsp
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - pcep_encode_object
    - ntohl
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_lsp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_vendor_info
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:587,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:590,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:591,1
    - Dst: verify_pcep_obj_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:592,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:595,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:595,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:596,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:596,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 582
    functionDepth: 4
    functionLinenumber: 582
    functionLinenumberEnd: 599
    functionName: test_pcep_obj_create_vendor_info
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NOT_NULL
    - verify_pcep_obj_header
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_obj_create_vendor_info
    - pcep_encode_object
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_vendor_info()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:610,1
    - Dst: func_to_test
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:612,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:613,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:614,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:615,1
    - Dst: verify_pcep_obj_header2
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:616,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:618,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:620,1
    - Dst: func_to_test
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:621,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:622,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:623,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:624,1
    - Dst: verify_pcep_obj_header2
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:625,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:627,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:629,1
    - Dst: pcep_obj_create_ro_subobj_32label
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:631,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:632,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:633,1
    - Dst: func_to_test
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:634,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:635,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:636,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:637,1
    - Dst: verify_pcep_obj_header2
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:642,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 3
    argNames:
    - func_to_test
    - object_class
    - object_type
    argTypes:
    - ro_func
    - uint8_t
    - uint8_t
    assertStmts:
    - condition: (ero != NULL)
      pos:
        line_end: 613
        line_start: 613
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    - condition: (ero != NULL)
      pos:
        line_end: 622
        line_start: 622
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    - condition: (ero != NULL)
      pos:
        line_end: 635
        line_start: 635
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 646
      start: 606
    functionDepth: 3
    functionLinenumber: 606
    functionLinenumberEnd: 646
    functionName: test_pcep_obj_create_object_common
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - pcep_obj_free_object
    - verify_pcep_obj_header2
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_ro_subobj_32label
    - func_to_test
    - dll_initialize
    - pcep_encode_object
    - reset_objects_buffer
    - assert
    linkageType: ''
    returnType: void
    signature: "void test_pcep_obj_create_object_common(ro_func func_to_test,\n\t\t\t\t\t
      \      uint8_t object_class,\n\t\t\t\t\t       uint8_t object_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_pcep_obj_create_object_common
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 648
    functionDepth: 4
    functionLinenumber: 648
    functionLinenumberEnd: 652
    functionName: test_pcep_obj_create_ero
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - test_pcep_obj_create_object_common
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ero()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_pcep_obj_create_object_common
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 658
    functionName: test_pcep_obj_create_rro
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - test_pcep_obj_create_object_common
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_rro()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_pcep_obj_create_object_common
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 660
    functionDepth: 4
    functionLinenumber: 660
    functionLinenumberEnd: 664
    functionName: test_pcep_obj_create_iro
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - test_pcep_obj_create_object_common
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_iro()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:669,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:670,1
    - Dst: pcep_obj_create_ero
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:671,1
    - Dst: pcep_encode_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sr
    argTypes:
    - struct pcep_object_ro_subobj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 667
    functionDepth: 4
    functionLinenumber: 667
    functionLinenumberEnd: 675
    functionName: encode_ro_subobj
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - dll_append
    - dll_initialize
    - pcep_encode_object
    - pcep_obj_create_ero
    linkageType: ''
    returnType: struct pcep_object_ro
    signature: struct pcep_object_ro *encode_ro_subobj(struct pcep_object_ro_subobj
      *sr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verify_pcep_obj_header2
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:684,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:696,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:699,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:704,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:707,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:711,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:714,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - ro
    - ro_subobj
    - ro_subobj_type
    - loose_hop
    - length
    argTypes:
    - struct pcep_object_ro*
    - struct pcep_object_ro_subobj*
    - uint8_t
    - bool
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 716
    functionName: verify_pcep_obj_ro_header
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - fprintf
    - CU_FAIL
    - verify_pcep_obj_header2
    linkageType: ''
    returnType: void
    signature: "void verify_pcep_obj_ro_header(struct pcep_object_ro *ro,\n\t\t\t\t
      \     struct pcep_object_ro_subobj *ro_subobj,\n\t\t\t\t      uint8_t ro_subobj_type,
      bool loose_hop,\n\t\t\t\t      uint16_t length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:723,1
    - Dst: fprintf
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:727,1
    - Dst: CU_FAIL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ro
    - ro_subobj
    - nai_type
    - loose_hop
    - length
    argTypes:
    - struct pcep_object_ro*
    - struct pcep_object_ro_subobj*
    - uint8_t
    - bool
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 732
    functionName: verify_pcep_obj_ro_sr_header
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - fprintf
    - verify_pcep_obj_ro_header
    - CU_FAIL
    linkageType: ''
    returnType: void
    signature: "void verify_pcep_obj_ro_sr_header(struct pcep_object_ro *ro,\n\t\t\t
      \    struct pcep_object_ro_subobj *ro_subobj,\n\t\t\t     uint8_t nai_type,
      bool loose_hop, uint16_t length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:737,1
    - Dst: pcep_obj_create_ro_subobj_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:741,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:742,1
    - Dst: pcep_obj_create_ro_subobj_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:744,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:746,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:747,1
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:748,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:750,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:752,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:753,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:755,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:757,1
    - Dst: pcep_obj_create_ro_subobj_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:758,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:760,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:761,1
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:762,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:764,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:766,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:767,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 734
    functionDepth: 5
    functionLinenumber: 734
    functionLinenumberEnd: 769
    functionName: test_pcep_obj_create_ro_subobj_ipv4
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - pcep_obj_create_ro_subobj_ipv4
    - verify_pcep_obj_ro_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - inet_pton
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - reset_objects_buffer
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_ipv4()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:777,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:778,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:780,1
    - Dst: pcep_obj_create_ro_subobj_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:781,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:783,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:784,1
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:785,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:788,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:789,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:790,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:791,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:792,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:793,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:795,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:797,1
    - Dst: pcep_obj_create_ro_subobj_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:798,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:800,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:801,1
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:802,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:805,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:806,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:807,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:808,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:809,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:810,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 771
    functionDepth: 5
    functionLinenumber: 771
    functionLinenumberEnd: 812
    functionName: test_pcep_obj_create_ro_subobj_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - pcep_obj_create_ro_subobj_ipv6
    - verify_pcep_obj_ro_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - inet_pton
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - reset_objects_buffer
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_unnum
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:820,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:821,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:823,1
    - Dst: pcep_obj_create_ro_subobj_unnum
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:824,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:825,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:826,1
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:827,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:829,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:830,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:831,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:833,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:834,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 814
    functionDepth: 5
    functionLinenumber: 814
    functionLinenumberEnd: 837
    functionName: test_pcep_obj_create_ro_subobj_unnum
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - pcep_obj_create_ro_subobj_unnum
    - verify_pcep_obj_ro_header
    - CU_ASSERT_PTR_NOT_NULL
    - inet_pton
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - htonl
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_unnum()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_32label
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:845,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:846,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:847,1
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:848,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:850,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:852,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:853,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:854,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 839
    functionDepth: 5
    functionLinenumber: 839
    functionLinenumberEnd: 857
    functionName: test_pcep_obj_create_ro_subobj_32label
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - verify_pcep_obj_ro_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - pcep_obj_create_ro_subobj_32label
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - htonl
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_32label()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_asn
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:863,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:864,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:865,1
    - Dst: verify_pcep_obj_ro_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:866,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:868,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:869,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 859
    functionDepth: 5
    functionLinenumber: 859
    functionLinenumberEnd: 872
    functionName: test_pcep_obj_create_ro_subobj_asn
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - htons
    - verify_pcep_obj_ro_header
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_obj_create_ro_subobj_asn
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_asn()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_nonai
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:879,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:880,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:881,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:882,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:885,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:886,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:887,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:888,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:889,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:891,1
    - Dst: pcep_obj_create_ro_subobj_sr_nonai
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:892,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:893,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:894,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:895,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:898,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:899,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:900,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:901,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 874
    functionDepth: 5
    functionLinenumber: 874
    functionLinenumberEnd: 903
    functionName: test_pcep_obj_create_ro_subobj_sr_nonai
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - verify_pcep_obj_ro_sr_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - pcep_obj_create_ro_subobj_sr_nonai
    - encode_ro_subobj
    - reset_objects_buffer
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_sr_nonai()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:909,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_node
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:912,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:914,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_node
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:917,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:919,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:920,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:921,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:922,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:925,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:926,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:927,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:928,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:929,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:930,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:932,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:935,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:936,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_node
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:937,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:939,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:940,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:941,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:942,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:945,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:946,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:947,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:948,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:949,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:950,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:951,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:952,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (sr != NULL)
      pos:
        line_end: 919
        line_start: 919
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    - condition: (sr != NULL)
      pos:
        line_end: 939
        line_start: 939
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    - condition: (ro != NULL)
      pos:
        line_end: 944
        line_start: 944
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 955
      start: 905
    functionDepth: 5
    functionLinenumber: 905
    functionLinenumberEnd: 955
    functionName: test_pcep_obj_create_ro_subobj_sr_ipv4_node
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - assert
    - pcep_obj_free_object
    - htonl
    - verify_pcep_obj_ro_sr_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - inet_pton
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - pcep_obj_create_ro_subobj_sr_ipv4_node
    - reset_objects_buffer
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_sr_ipv4_node()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:961,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_node
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:964,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:966,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_node
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:969,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:971,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:972,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:973,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:976,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:977,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:978,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:979,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:981,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:982,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:983,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:984,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:985,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:988,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:989,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_node
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:990,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:992,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:993,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:994,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:997,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:998,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:999,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1000,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1002,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1002,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1003,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1004,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1005,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1006,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 957
    functionDepth: 5
    functionLinenumber: 957
    functionLinenumberEnd: 1008
    functionName: test_pcep_obj_create_ro_subobj_sr_ipv6_node
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - pcep_obj_create_ro_subobj_sr_ipv6_node
    - verify_pcep_obj_ro_sr_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - inet_pton
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - htonl
    - reset_objects_buffer
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_sr_ipv6_node()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1014,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1015,1
    - Dst: ENCODE_SR_ERO_SID
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1017,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1018,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1022,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1024,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1026,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1028,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1030,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1032,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1035,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1037,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1038,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1039,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1042,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1043,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1044,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1045,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1046,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1047,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1049,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1050,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1051,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1054,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1055,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1056,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1057,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1059,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1060,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1061,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1064,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1065,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1066,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1067,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1069,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1069,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1070,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1071,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (sr != NULL)
      pos:
        line_end: 1045
        line_start: 1045
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 1073
      start: 1010
    functionDepth: 5
    functionLinenumber: 1010
    functionLinenumberEnd: 1073
    functionName: test_pcep_obj_create_ro_subobj_sr_ipv4_adj
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - encode_ro_subobj
    - assert
    - pcep_obj_free_object
    - verify_pcep_obj_ro_sr_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_obj_create_ro_subobj_sr_ipv4_adj
    - ENCODE_SR_ERO_SID
    - htonl
    - reset_objects_buffer
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_sr_ipv4_adj()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1080,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1081,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1085,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1087,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1089,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1091,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1093,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1095,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1098,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1100,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1101,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1102,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1103,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1106,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1107,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1108,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1109,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1110,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1112,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1113,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1114,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1115,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1117,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1118,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1119,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1120,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1121,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1124,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1125,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1126,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1127,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1129,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1130,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1131,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1135,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1137,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1137,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1138,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1139,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1140,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1141,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1143,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1144,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1145,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1146,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (sr != NULL)
      pos:
        line_end: 1100
        line_start: 1100
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 1148
      start: 1075
    functionDepth: 5
    functionLinenumber: 1075
    functionLinenumberEnd: 1148
    functionName: test_pcep_obj_create_ro_subobj_sr_ipv6_adj
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_object
    - CU_ASSERT_PTR_NULL
    - verify_pcep_obj_ro_sr_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - pcep_obj_create_ro_subobj_sr_ipv6_adj
    - inet_pton
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - htonl
    - reset_objects_buffer
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_sr_ipv6_adj()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1163,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1166,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1167,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1168,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1172,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1173,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1174,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1175,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1176,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1177,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1179,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1180,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1181,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1182,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1183,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1186,1
    - Dst: pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1187,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1190,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1191,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1192,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1196,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1197,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1198,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1199,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1201,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1201,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1202,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1203,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1204,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1205,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (sr != NULL)
      pos:
        line_end: 1175
        line_start: 1175
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 1209
      start: 1150
    functionDepth: 5
    functionLinenumber: 1150
    functionLinenumberEnd: 1209
    functionName: test_pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj
    - pcep_obj_free_object
    - verify_pcep_obj_ro_sr_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - htonl
    - reset_objects_buffer
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1218,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1219,1
    - Dst: pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1224,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1227,1
    - Dst: pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1229,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1232,1
    - Dst: pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1234,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1237,1
    - Dst: pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1240,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1243,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1244,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1245,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1249,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1250,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1251,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1252,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1253,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1254,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1256,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1257,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1258,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1259,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1260,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1262,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1263,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1264,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1265,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1266,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1267,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1270,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1271,1
    - Dst: reset_objects_buffer
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1272,1
    - Dst: pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1273,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1276,1
    - Dst: encode_ro_subobj
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1277,1
    - Dst: verify_pcep_obj_ro_sr_header
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1278,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1282,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1283,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1284,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1285,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1287,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1287,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1288,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1289,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1290,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1291,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1292,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1294,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1295,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1296,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1297,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1298,1
    - Dst: pcep_obj_free_object
      Src: /src/frr/pceplib/test/pcep_msg_objects_test.c:1299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (sr != NULL)
      pos:
        line_end: 1252
        line_start: 1252
        source_file: /src/frr/pceplib/test/pcep_msg_objects_test.c
    constantsTouched: []
    func_position:
      end: 1300
      start: 1211
    functionDepth: 5
    functionLinenumber: 1211
    functionLinenumberEnd: 1300
    functionName: test_pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_objects_test.c
    functionUses: 0
    functionsReached:
    - assert
    - pcep_obj_free_object
    - verify_pcep_obj_ro_sr_header
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj
    - inet_pton
    - CU_ASSERT_EQUAL
    - encode_ro_subobj
    - htonl
    - reset_objects_buffer
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:27,1
    - Dst: set_logging_level
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: pcep_object_error_types_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c
    functionUses: 0
    functionsReached:
    - set_logging_level
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_object_error_types_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:34,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: pcep_object_error_types_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_object_error_types_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: pcep_object_error_types_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pcep_object_error_types_test_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: pcep_object_error_types_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pcep_object_error_types_test_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_error_type_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:52,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:53,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:56,1
    - Dst: get_error_type_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:56,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:57,1
    - Dst: get_error_type_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 58
    functionName: test_get_error_type_str
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c
    functionUses: 0
    functionsReached:
    - get_error_type_str
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_get_error_type_str()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_error_value_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:67,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:68,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:72,1
    - Dst: get_error_value_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:72,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:73,1
    - Dst: get_error_value_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:73,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:74,1
    - Dst: get_error_value_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:74,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:75,1
    - Dst: get_error_value_str
      Src: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 76
    functionName: test_get_error_value_str
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_object_error_types_test.c
    functionUses: 0
    functionsReached:
    - get_error_value_str
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_get_error_value_str()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CU_initialize_registry
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:30,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:35,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:42,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:44,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:47,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:50,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:53,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:56,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:59,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:62,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:65,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:73,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:81,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:84,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:87,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:89,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:92,1
    - Dst: CU_basic_set_mode
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:99,1
    - Dst: CU_basic_run_tests
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:100,1
    - Dst: CU_get_failure_list
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:101,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:103,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:105,1
    - Dst: CU_get_run_summary
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:115,1
    - Dst: CU_cleanup_registry
      Src: /src/frr/pceplib/test/pcep_socket_comm_tests.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 120
    functionName: main
    functionSourceFile: /src/frr/pceplib/test/pcep_socket_comm_tests.c
    functionUses: 11
    functionsReached:
    - CU_get_failure_list
    - CU_basic_run_tests
    - CU_cleanup_registry
    - CU_add_test
    - CU_add_suite_with_setup_and_teardown
    - CU_initialize_registry
    - printf
    - CU_basic_set_mode
    - CU_get_run_summary
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CU_initialize_registry
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:31,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:37,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:48,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:50,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:52,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:54,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:57,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:60,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:63,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:66,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:71,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:85,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:88,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:91,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:94,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:97,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:102,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:118,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:121,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:124,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:127,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:130,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:133,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:136,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:139,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:142,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:145,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:148,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:151,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:154,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:157,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:160,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:163,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:166,1
    - Dst: CU_basic_set_mode
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:172,1
    - Dst: CU_basic_run_tests
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:173,1
    - Dst: CU_get_failure_list
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:174,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:176,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:178,1
    - Dst: CU_get_run_summary
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:188,1
    - Dst: CU_cleanup_registry
      Src: /src/frr/pceplib/test/pcep_session_logic_tests.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 45
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 193
    functionName: main
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_tests.c
    functionUses: 11
    functionsReached:
    - CU_get_failure_list
    - CU_basic_run_tests
    - CU_cleanup_registry
    - CU_add_test
    - CU_add_suite_with_setup_and_teardown
    - CU_initialize_registry
    - printf
    - CU_basic_set_mode
    - CU_get_run_summary
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: pcep_session_logic_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_session_logic_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:39,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: pcep_session_logic_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_session_logic_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: pcep_session_logic_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - setup_mock_socket_comm_info
    linkageType: ''
    returnType: void
    signature: void pcep_session_logic_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stop_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:56,1
    - Dst: teardown_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: pcep_session_logic_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - stop_session_logic
    - teardown_mock_socket_comm_info
    linkageType: ''
    returnType: void
    signature: void pcep_session_logic_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:67,1
    - Dst: run_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:67,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:68,1
    - Dst: stop_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 5
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: test_run_stop_session_logic
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - run_session_logic
    - stop_session_logic
    linkageType: ''
    returnType: void
    signature: void test_run_stop_session_logic()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:74,1
    - Dst: run_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:74,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:75,1
    - Dst: run_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 5
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: test_run_session_logic_twice
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_TRUE
    - run_session_logic
    - CU_ASSERT_FALSE
    linkageType: ''
    returnType: void
    signature: void test_run_session_logic_twice()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:83,1
    - Dst: stop_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 5
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: test_session_logic_without_run
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - stop_session_logic
    - CU_ASSERT_FALSE
    linkageType: ''
    returnType: void
    signature: void test_session_logic_without_run()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:92,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:92,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:93,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:93,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:94,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 87
    functionDepth: 6
    functionLinenumber: 87
    functionLinenumberEnd: 95
    functionName: test_create_pcep_session_null_params
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - create_pcep_session
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_create_pcep_session_null_params()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:104,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:106,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:112,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:114,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:116,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:117,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:122,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:123,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:124,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:125,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:126,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:128,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:129,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:130,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:131,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:132,1
    - Dst: stop_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (open_msg != NULL)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    constantsTouched: []
    func_position:
      end: 135
      start: 98
    functionDepth: 6
    functionLinenumber: 98
    functionLinenumberEnd: 135
    functionName: test_create_destroy_pcep_session
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - get_mock_socket_comm_info
    - memset
    - pcep_decode_message
    - CU_ASSERT_PTR_NOT_NULL
    - pceplib_free
    - run_session_logic
    - inet_pton
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - pcep_msg_free_message
    - stop_session_logic
    - create_pcep_session
    - destroy_pcep_session
    - assert
    linkageType: ''
    returnType: void
    signature: void test_create_destroy_pcep_session()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: run_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:144,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:146,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:153,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:155,1
    - Dst: create_pcep_session_ipv6
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:157,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:158,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:159,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:160,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:165,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:166,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:167,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:168,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:169,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:171,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:172,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:173,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:174,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:175,1
    - Dst: stop_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (session != NULL)
      pos:
        line_end: 158
        line_start: 158
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg != NULL)
      pos:
        line_end: 168
        line_start: 168
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    constantsTouched: []
    func_position:
      end: 178
      start: 138
    functionDepth: 6
    functionLinenumber: 138
    functionLinenumberEnd: 178
    functionName: test_create_destroy_pcep_session_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - get_mock_socket_comm_info
    - memset
    - pcep_decode_message
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - pceplib_free
    - run_session_logic
    - inet_pton
    - CU_ASSERT_EQUAL
    - dll_delete_first_node
    - create_pcep_session_ipv6
    - stop_session_logic
    - pcep_msg_free_message
    - destroy_pcep_session
    - assert
    linkageType: ''
    returnType: void
    signature: void test_create_destroy_pcep_session_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:188,1
    - Dst: create_default_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:189,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:190,1
    - Dst: run_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:192,1
    - Dst: get_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:196,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:202,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:203,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:206,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:207,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:208,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:209,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:210,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:212,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:213,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:214,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:216,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:217,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:219,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:220,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:221,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:222,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:227,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:228,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:229,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:234,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:239,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:240,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:242,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:243,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:244,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:245,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:247,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:248,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:249,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:251,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:252,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:254,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:255,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:256,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:257,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:261,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:266,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:267,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:268,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:276,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:280,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:281,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:283,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:284,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:285,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:286,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:287,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:289,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:290,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:291,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:293,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:294,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:296,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:297,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:298,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:300,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:303,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:306,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:309,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:310,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:311,1
    - Dst: reset_mock_socket_comm_info
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:318,1
    - Dst: create_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:322,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:323,1
    - Dst: dll_delete_first_node
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:325,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:326,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:327,1
    - Dst: pcep_decode_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:328,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:329,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:330,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:332,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:333,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:334,1
    - Dst: pcep_obj_get
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:336,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:337,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:338,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:340,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:341,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:342,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:344,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:347,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:350,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:353,1
    - Dst: destroy_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:356,1
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:357,1
    - Dst: pcep_msg_free_message
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:358,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:359,1
    - Dst: stop_session_logic
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 109
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (open_obj->tlv_list != NULL)
      pos:
        line_end: 340
        line_start: 340
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg != NULL)
      pos:
        line_end: 329
        line_start: 329
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg != NULL)
      pos:
        line_end: 247
        line_start: 247
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_obj->tlv_list != NULL)
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_obj->tlv_list != NULL)
      pos:
        line_end: 254
        line_start: 254
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg != NULL)
      pos:
        line_end: 286
        line_start: 286
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_obj->tlv_list != NULL)
      pos:
        line_end: 296
        line_start: 296
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg != NULL)
      pos:
        line_end: 209
        line_start: 209
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg->obj_list != NULL)
      pos:
        line_end: 332
        line_start: 332
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg->obj_list != NULL)
      pos:
        line_end: 212
        line_start: 212
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_obj != NULL)
      pos:
        line_end: 337
        line_start: 337
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (encoded_msg != NULL)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    - condition: (open_msg->obj_list != NULL)
      pos:
        line_end: 289
        line_start: 289
        source_file: /src/frr/pceplib/test/pcep_session_logic_test.c
    constantsTouched: []
    func_position:
      end: 362
      start: 181
    functionDepth: 6
    functionLinenumber: 181
    functionLinenumberEnd: 362
    functionName: test_create_pcep_session_open_tlvs
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - get_mock_socket_comm_info
    - CU_ASSERT_PTR_NOT_NULL
    - reset_mock_socket_comm_info
    - run_session_logic
    - stop_session_logic
    - create_pcep_session
    - pcep_obj_get
    - memset
    - create_default_pcep_versioning
    - destroy_pcep_versioning
    - destroy_pcep_session
    - assert
    - CU_ASSERT_TRUE
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_msg_free_message
    - pcep_decode_message
    - pceplib_free
    - dll_delete_first_node
    linkageType: ''
    returnType: void
    signature: void test_create_pcep_session_open_tlvs()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_pcep_session
      Src: /src/frr/pceplib/test/pcep_session_logic_test.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 365
    functionDepth: 4
    functionLinenumber: 365
    functionLinenumberEnd: 369
    functionName: test_destroy_pcep_session_null_session
    functionSourceFile: /src/frr/pceplib/test/pcep_session_logic_test.c
    functionUses: 0
    functionsReached:
    - destroy_pcep_session
    linkageType: ''
    returnType: void
    signature: void test_destroy_pcep_session_null_session()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mem_type
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: test_pceplib_malloc
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: void
    signature: void *test_pceplib_malloc(void *mem_type, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mem_type
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: test_pceplib_calloc
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: void
    signature: void *test_pceplib_calloc(void *mem_type, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - mem_type
    - ptr
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: test_pceplib_realloc
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - realloc
    linkageType: ''
    returnType: void
    signature: void *test_pceplib_realloc(void *mem_type, void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mem_type
    - str
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: test_pceplib_strdup
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - strdup
    linkageType: ''
    returnType: void
    signature: void *test_pceplib_strdup(void *mem_type, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mem_type
    - ptr
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: test_pceplib_free
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void test_pceplib_free(void *mem_type, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:78,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:79,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:80,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - mt
    - num_alloc
    - alloc_bytes
    - num_free
    - free_bytes
    argTypes:
    - struct pceplib_memory_type*
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: verify_memory_type
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: "void verify_memory_type(struct pceplib_memory_type *mt, uint32_t num_alloc,\n\t\t\tuint32_t
      alloc_bytes, uint32_t num_free,\n\t\t\tuint32_t free_bytes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:89,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:90,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:91,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:92,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - mt
    - num_malloc_calls
    - num_calloc_calls
    - num_realloc_calls
    - num_strdup_calls
    - num_free_calls
    argTypes:
    - void*
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 94
    functionName: verify_ext_memory_type
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: "void verify_ext_memory_type(void *mt, int num_malloc_calls,\n\t\t\t
      \   int num_calloc_calls, int num_realloc_calls,\n\t\t\t    int num_strdup_calls,
      int num_free_calls)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_initialize
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:118,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:121,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:122,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:123,1
    - Dst: verify_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:124,1
    - Dst: pceplib_calloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:128,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:129,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:130,1
    - Dst: verify_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:132,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:136,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:137,1
    - Dst: pceplib_realloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:138,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:139,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:140,1
    - Dst: verify_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:142,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:146,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:148,1
    - Dst: pceplib_strdup
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:150,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:151,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:152,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:153,1
    - Dst: verify_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:156,1
    - Dst: verify_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 162
    functionName: test_memory_internal_impl
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - memset
    - pceplib_calloc
    - CU_ASSERT_PTR_NOT_NULL
    - pceplib_strdup
    - pceplib_free
    - pceplib_memory_initialize
    - verify_memory_type
    - pceplib_realloc
    - pceplib_malloc
    linkageType: ''
    returnType: void
    signature: void test_memory_internal_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:187,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:188,1
    - Dst: pceplib_memory_initialize
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:193,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:198,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:199,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:200,1
    - Dst: verify_ext_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:201,1
    - Dst: pceplib_calloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:204,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:205,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:206,1
    - Dst: verify_ext_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:207,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:210,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:211,1
    - Dst: pceplib_realloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:212,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:213,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:214,1
    - Dst: verify_ext_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:215,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:218,1
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:220,1
    - Dst: pceplib_strdup
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:222,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:223,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:224,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:225,1
    - Dst: verify_ext_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:226,1
    - Dst: verify_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:229,1
    - Dst: verify_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:230,1
    - Dst: verify_ext_memory_type
      Src: /src/frr/pceplib/test/pcep_utils_memory_test.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 233
    functionName: test_memory_external_impl
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_memory_test.c
    functionUses: 0
    functionsReached:
    - memset
    - pceplib_calloc
    - CU_ASSERT_PTR_NOT_NULL
    - pceplib_strdup
    - pceplib_free
    - pceplib_memory_initialize
    - pceplib_realloc
    - verify_memory_type
    - verify_ext_memory_type
    - pceplib_malloc
    linkageType: ''
    returnType: void
    signature: void test_memory_external_impl()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:31,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:32,1
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:34,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:35,1
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:37,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:38,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:39,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:41,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:42,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:43,1
    - Dst: strcmp
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:43,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (group != NULL)
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/frr/pceplib/test/pcep_utils_counters_test.c
    constantsTouched: []
    func_position:
      end: 46
      start: 25
    functionDepth: 3
    functionLinenumber: 25
    functionLinenumberEnd: 46
    functionName: test_create_counters_group
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_PTR_NULL
    - delete_counters_group
    - strcmp
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - create_counters_group
    - assert
    linkageType: ''
    returnType: void
    signature: void test_create_counters_group()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:55,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:56,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:58,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:60,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:62,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:64,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:66,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:68,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:69,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:71,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:72,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:73,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:74,1
    - Dst: strcmp
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:74,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (subgroup != NULL)
      pos:
        line_end: 68
        line_start: 68
        source_file: /src/frr/pceplib/test/pcep_utils_counters_test.c
    constantsTouched: []
    func_position:
      end: 78
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 78
    functionName: test_create_counters_subgroup
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_PTR_NULL
    - strcmp
    - delete_counters_subgroup
    - CU_ASSERT_PTR_NOT_NULL
    - create_counters_subgroup
    - CU_ASSERT_EQUAL
    - assert
    linkageType: ''
    returnType: void
    signature: void test_create_counters_subgroup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:82,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:84,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:86,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:88,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:88,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:89,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:89,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:90,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:90,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:92,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:93,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:93,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:94,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:96,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:96,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:98,1
    - Dst: find_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:98,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:99,1
    - Dst: find_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:99,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:101,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 103
    functionName: test_add_counters_subgroup
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - delete_counters_group
    - CU_ASSERT_FALSE
    - delete_counters_subgroup
    - add_counters_subgroup
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - find_subgroup
    - create_counters_subgroup
    - CU_ASSERT_EQUAL
    - create_counters_group
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_add_counters_subgroup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:110,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:112,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:113,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:114,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:114,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:116,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:116,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:117,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:118,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:119,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:120,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 123
    functionName: test_create_subgroup_counter
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - delete_counters_subgroup
    - CU_ASSERT_TRUE
    - create_counters_subgroup
    - CU_ASSERT_EQUAL
    - create_subgroup_counter
    linkageType: ''
    returnType: void
    signature: void test_create_subgroup_counter()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:127,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:129,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:129,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:130,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 131
    functionName: test_delete_counters_group
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - delete_counters_group
    - CU_ASSERT_FALSE
    - create_counters_group
    - CU_ASSERT_TRUE
    linkageType: ''
    returnType: void
    signature: void test_delete_counters_group()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:136,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:138,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:138,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:139,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: test_delete_counters_subgroup
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - delete_counters_subgroup
    - CU_ASSERT_FALSE
    - create_counters_subgroup
    - CU_ASSERT_TRUE
    linkageType: ''
    returnType: void
    signature: void test_delete_counters_subgroup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:146,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:148,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:149,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:150,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:155,1
    - Dst: reset_group_counters
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:155,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:156,1
    - Dst: reset_group_counters
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:156,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:157,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 160
    functionName: test_reset_group_counters
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - delete_counters_group
    - CU_ASSERT_FALSE
    - add_counters_subgroup
    - CU_ASSERT_TRUE
    - create_counters_subgroup
    - CU_ASSERT_EQUAL
    - create_subgroup_counter
    - reset_group_counters
    - create_counters_group
    linkageType: ''
    returnType: void
    signature: void test_reset_group_counters()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:166,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:167,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:172,1
    - Dst: reset_subgroup_counters
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:172,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:173,1
    - Dst: reset_subgroup_counters
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:173,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:174,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 177
    functionName: test_reset_subgroup_counters
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - delete_counters_subgroup
    - CU_ASSERT_TRUE
    - create_counters_subgroup
    - reset_subgroup_counters
    - create_subgroup_counter
    - CU_ASSERT_EQUAL
    linkageType: ''
    returnType: void
    signature: void test_reset_subgroup_counters()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:183,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:185,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:186,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:187,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:192,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:192,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:193,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:193,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:194,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:194,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:195,1
    - Dst: increment_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:195,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:196,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:197,1
    - Dst: subgroup_counters_total
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:197,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 200
    functionName: test_increment_counter
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - delete_counters_group
    - CU_ASSERT_FALSE
    - add_counters_subgroup
    - subgroup_counters_total
    - increment_counter
    - CU_ASSERT_TRUE
    - create_counters_subgroup
    - CU_ASSERT_EQUAL
    - create_subgroup_counter
    - create_counters_group
    linkageType: ''
    returnType: void
    signature: void test_increment_counter()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:207,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:208,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:213,1
    - Dst: increment_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:213,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:214,1
    - Dst: increment_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:214,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:215,1
    - Dst: increment_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:215,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:216,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 219
    functionName: test_increment_subgroup_counter
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - delete_counters_subgroup
    - CU_ASSERT_TRUE
    - increment_subgroup_counter
    - create_counters_subgroup
    - CU_ASSERT_EQUAL
    - create_subgroup_counter
    linkageType: ''
    returnType: void
    signature: void test_increment_subgroup_counter()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:225,1
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:227,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:228,1
    - Dst: add_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:229,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:231,1
    - Dst: dump_counters_group_to_log
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:231,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:232,1
    - Dst: dump_counters_group_to_log
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:232,1
    - Dst: delete_counters_group
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 235
    functionName: test_dump_counters_group_to_log
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - dump_counters_group_to_log
    - delete_counters_group
    - CU_ASSERT_FALSE
    - add_counters_subgroup
    - CU_ASSERT_TRUE
    - create_counters_subgroup
    - create_subgroup_counter
    - create_counters_group
    linkageType: ''
    returnType: void
    signature: void test_dump_counters_group_to_log()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:242,1
    - Dst: create_subgroup_counter
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:243,1
    - Dst: CU_ASSERT_FALSE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:245,1
    - Dst: dump_counters_subgroup_to_log
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:245,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:246,1
    - Dst: dump_counters_subgroup_to_log
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:246,1
    - Dst: delete_counters_subgroup
      Src: /src/frr/pceplib/test/pcep_utils_counters_test.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 249
    functionName: test_dump_counters_subgroup_to_log
    functionSourceFile: /src/frr/pceplib/test/pcep_utils_counters_test.c
    functionUses: 0
    functionsReached:
    - CU_ASSERT_FALSE
    - delete_counters_subgroup
    - CU_ASSERT_TRUE
    - create_counters_subgroup
    - create_subgroup_counter
    - dump_counters_subgroup_to_log
    linkageType: ''
    returnType: void
    signature: void test_dump_counters_subgroup_to_log()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pceplib_memory_reset
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: pcep_tlvs_test_suite_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_reset
    linkageType: ''
    returnType: int
    signature: int pcep_tlvs_test_suite_setup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:53,1
    - Dst: pceplib_memory_dump
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: pcep_tlvs_test_suite_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pceplib_memory_dump
    - printf
    linkageType: ''
    returnType: int
    signature: int pcep_tlvs_test_suite_teardown(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: reset_tlv_buffer
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset_tlv_buffer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:65,1
    - Dst: reset_tlv_buffer
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: pcep_tlvs_test_setup
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - create_default_pcep_versioning
    - reset_tlv_buffer
    linkageType: ''
    returnType: void
    signature: void pcep_tlvs_test_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: destroy_pcep_versioning
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: pcep_tlvs_test_teardown
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - destroy_pcep_versioning
    linkageType: ''
    returnType: void
    signature: void pcep_tlvs_test_teardown()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_stateful_pce_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:77,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:79,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:80,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:82,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:83,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:85,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:86,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:87,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:88,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:89,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:90,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:91,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:92,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 97
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 97
    functionName: test_pcep_tlv_create_stateful_pce_capability
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_tlv_create_stateful_pce_capability
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_stateful_pce_capability()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_speaker_entity_id
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:102,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:103,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:105,1
    - Dst: pcep_tlv_create_speaker_entity_id
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:106,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:107,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:109,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:114,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:116,1
    - Dst: pcep_tlv_create_speaker_entity_id
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:117,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:118,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:119,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:121,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:122,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:123,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:124,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:125,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:126,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:128,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:128,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv->speaker_entity_id_list != NULL)
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    - condition: (tlv != NULL)
      pos:
        line_end: 118
        line_start: 118
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 131
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 131
    functionName: test_pcep_tlv_create_speaker_entity_id
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - htonl
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - pceplib_free
    - CU_ASSERT_EQUAL
    - pcep_tlv_create_speaker_entity_id
    - pcep_encode_tlv
    - dll_initialize
    - pceplib_malloc
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_speaker_entity_id()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_lsp_db_version
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:137,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:138,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:139,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:141,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:142,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:143,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:144,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:145,1
    - Dst: be64toh
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:146,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 149
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 149
    functionName: test_pcep_tlv_create_lsp_db_version
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - be64toh
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_tlv_create_lsp_db_version
    - CU_ASSERT_EQUAL
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_lsp_db_version()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_path_setup_type
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:156,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:157,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:158,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:159,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:160,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:161,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:162,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:164,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:164,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 157
        line_start: 157
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 167
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 167
    functionName: test_pcep_tlv_create_path_setup_type
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_tlv
    - pcep_tlv_create_path_setup_type
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_path_setup_type()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_path_setup_type_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:175,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:176,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:179,1
    - Dst: pcep_tlv_create_path_setup_type_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:180,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:181,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:183,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:188,1
    - Dst: pcep_tlv_create_path_setup_type_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:189,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:190,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:192,1
    - Dst: pcep_tlv_create_path_setup_type_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:197,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:199,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:201,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:206,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:207,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:208,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:212,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:213,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:214,1
    - Dst: pcep_tlv_create_path_setup_type_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:215,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:217,1
    - Dst: CU_ASSERT_TRUE
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:219,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:223,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:224,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:226,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:227,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:228,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:229,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:231,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:231,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:232,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:232,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:233,1
    - Dst: reset_tlv_buffer
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:236,1
    - Dst: pcep_tlv_create_sr_pce_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:239,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:240,1
    - Dst: dll_initialize
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:241,1
    - Dst: pceplib_malloc
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:242,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:244,1
    - Dst: dll_append
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:245,1
    - Dst: pcep_tlv_create_path_setup_type_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:246,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:248,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:249,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:251,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:252,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:254,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:257,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:258,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:261,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:262,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:263,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:263,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:264,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:264,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:265,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:265,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:268,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:269,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:270,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:270,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:271,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:272,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:272,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 227
        line_start: 227
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    - condition: (tlv != NULL)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 275
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 275
    functionName: test_pcep_tlv_create_path_setup_type_capability
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - assert
    - dll_append
    - pcep_obj_free_tlv
    - htons
    - pcep_tlv_create_sr_pce_capability
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_TRUE
    - CU_ASSERT_EQUAL
    - reset_tlv_buffer
    - htonl
    - pcep_encode_tlv
    - dll_initialize
    - pceplib_malloc
    - CU_ASSERT_PTR_NULL
    - pcep_tlv_create_path_setup_type_capability
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_path_setup_type_capability()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_sr_pce_capability
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:280,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:281,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:282,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:284,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:285,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:286,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:288,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:289,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:290,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:290,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:292,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:292,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 281
        line_start: 281
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 295
      start: 277
    functionDepth: 3
    functionLinenumber: 277
    functionLinenumberEnd: 295
    functionName: test_pcep_tlv_create_sr_pce_capability
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - htons
    - pcep_obj_free_tlv
    - pcep_tlv_create_sr_pce_capability
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_sr_pce_capability()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_symbolic_path_name
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:303,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:304,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:305,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:307,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:308,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:309,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:311,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:311,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:313,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:313,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:315,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:315,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:317,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:318,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:319,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:320,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:321,1
    - Dst: reset_tlv_buffer
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:323,1
    - Dst: pcep_tlv_create_symbolic_path_name
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:324,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:325,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:326,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:327,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:328,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:329,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:330,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:331,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:332,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:333,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:334,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    - condition: (tlv != NULL)
      pos:
        line_end: 304
        line_start: 304
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 337
      start: 297
    functionDepth: 3
    functionLinenumber: 297
    functionLinenumberEnd: 337
    functionName: test_pcep_tlv_create_symbolic_path_name
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_tlv
    - pcep_tlv_create_symbolic_path_name
    - CU_ASSERT_PTR_NOT_NULL
    - strncmp
    - CU_ASSERT_EQUAL
    - printf
    - reset_tlv_buffer
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_symbolic_path_name()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:346,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:347,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:350,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:353,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:355,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:357,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:359,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:361,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:362,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:364,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:367,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:369,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:370,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:372,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:374,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:375,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:376,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:376,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:377,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:378,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:379,1
    - Dst: reset_tlv_buffer
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:381,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:382,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:384,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:385,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:387,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:388,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:390,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:392,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:393,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:394,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:394,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:395,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:396,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv == NULL)
      pos:
        line_end: 361
        line_start: 361
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    - condition: (tlv != NULL)
      pos:
        line_end: 384
        line_start: 384
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 398
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 398
    functionName: test_pcep_tlv_create_ipv4_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - htons
    - CU_ASSERT_PTR_NULL
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - inet_pton
    - CU_ASSERT_EQUAL
    - reset_tlv_buffer
    - pcep_tlv_create_ipv4_lsp_identifiers
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_ipv4_lsp_identifiers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:407,1
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:408,1
    - Dst: pcep_tlv_create_ipv6_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:415,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:418,1
    - Dst: pcep_tlv_create_ipv6_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:420,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:423,1
    - Dst: pcep_tlv_create_ipv6_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:425,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:428,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:429,1
    - Dst: pcep_tlv_create_ipv6_lsp_identifiers
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:431,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:434,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:435,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:437,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:438,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:440,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:442,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:443,1
    - Dst: htons
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:443,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 434
        line_start: 434
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    - condition: (tlv == NULL)
      pos:
        line_end: 428
        line_start: 428
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 446
      start: 400
    functionDepth: 3
    functionLinenumber: 400
    functionLinenumberEnd: 446
    functionName: test_pcep_tlv_create_ipv6_lsp_identifiers
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - htons
    - CU_ASSERT_PTR_NULL
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_tlv_create_ipv6_lsp_identifiers
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_ipv6_lsp_identifiers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:451,1
    - Dst: pcep_tlv_create_srpag_pol_id_ipv4
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:454,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:455,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:456,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:458,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:459,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:460,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:463,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:464,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:465,1
    - Dst: memcmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:465,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:467,1
    - Dst: pcep_decode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:469,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:472,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:474,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 455
        line_start: 455
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 476
      start: 447
    functionDepth: 3
    functionLinenumber: 447
    functionLinenumberEnd: 476
    functionName: test_pcep_tlv_create_srpag_pol_id_ipv4
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_decode_tlv
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - memcmp
    - pceplib_free
    - inet_pton
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_encode_tlv
    - pcep_tlv_create_srpag_pol_id_ipv4
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_srpag_pol_id_ipv4()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:482,1
    - Dst: pcep_tlv_create_srpag_pol_id_ipv6
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:485,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:487,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:488,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:489,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:492,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:493,1
    - Dst: memcmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:493,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:495,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:496,1
    - Dst: memcmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:496,1
    - Dst: pcep_decode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:499,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:502,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:504,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 477
    functionDepth: 3
    functionLinenumber: 477
    functionLinenumberEnd: 506
    functionName: test_pcep_tlv_create_srpag_pol_id_ipv6
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_decode_tlv
    - pcep_obj_free_tlv
    - pcep_tlv_create_srpag_pol_id_ipv6
    - memcmp
    - pceplib_free
    - inet_pton
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_encode_tlv
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_srpag_pol_id_ipv6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_srpag_pol_name
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:512,1
    - Dst: strlen
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:512,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:513,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:514,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:516,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:517,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:519,1
    - Dst: normalize_pcep_tlv_length
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:520,1
    - Dst: strlen
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:520,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:521,1
    - Dst: strcmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:521,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 513
        line_start: 513
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 525
      start: 507
    functionDepth: 3
    functionLinenumber: 507
    functionLinenumberEnd: 525
    functionName: test_pcep_tlv_create_srpag_pol_name
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - strlen
    - normalize_pcep_tlv_length
    - pcep_tlv_create_srpag_pol_name
    - pcep_obj_free_tlv
    - strcmp
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_srpag_pol_name()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:534,1
    - Dst: pcep_tlv_create_srpag_cp_id
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:537,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:540,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:541,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:543,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:546,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:547,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:548,1
    - Dst: memcmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:548,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:550,1
    - Dst: pcep_decode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:552,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:555,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:557,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 527
    functionDepth: 3
    functionLinenumber: 527
    functionLinenumberEnd: 559
    functionName: test_pcep_tlv_create_srpag_cp_id
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_decode_tlv
    - pcep_obj_free_tlv
    - pcep_tlv_create_srpag_cp_id
    - memcmp
    - pceplib_free
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_encode_tlv
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_srpag_cp_id()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_srpag_cp_pref
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:566,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:567,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:568,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:570,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:571,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:573,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:575,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:577,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:578,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:579,1
    - Dst: memcmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:579,1
    - Dst: pcep_decode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:582,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:585,1
    - Dst: pceplib_free
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:587,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 567
        line_start: 567
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 589
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 589
    functionName: test_pcep_tlv_create_srpag_cp_pref
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_decode_tlv
    - pcep_tlv_create_srpag_cp_pref
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - memcmp
    - pceplib_free
    - CU_ASSERT_EQUAL
    - printf
    - htonl
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_srpag_cp_pref()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_lsp_error_code
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:593,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:595,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:596,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:598,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:599,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:600,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:602,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:603,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 595
        line_start: 595
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 606
      start: 590
    functionDepth: 3
    functionLinenumber: 590
    functionLinenumberEnd: 606
    functionName: test_pcep_tlv_create_lsp_error_code
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - pcep_tlv_create_lsp_error_code
    - CU_ASSERT_EQUAL
    - htonl
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_lsp_error_code()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:611,1
    - Dst: pcep_tlv_create_rsvp_ipv4_error_spec
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:616,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:618,1
    - Dst: pcep_tlv_create_rsvp_ipv4_error_spec
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:620,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:622,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:623,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:625,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:626,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:627,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 622
        line_start: 622
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 630
      start: 608
    functionDepth: 3
    functionLinenumber: 608
    functionLinenumberEnd: 630
    functionName: test_pcep_tlv_create_rsvp_ipv4_error_spec
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NULL
    - CU_ASSERT_PTR_NOT_NULL
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_tlv_create_rsvp_ipv4_error_spec
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_rsvp_ipv4_error_spec()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:635,1
    - Dst: pcep_tlv_create_rsvp_ipv6_error_spec
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:640,1
    - Dst: CU_ASSERT_PTR_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:642,1
    - Dst: pcep_tlv_create_rsvp_ipv6_error_spec
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:644,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:646,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:647,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:649,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:650,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:651,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 646
        line_start: 646
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 654
      start: 632
    functionDepth: 3
    functionLinenumber: 632
    functionLinenumberEnd: 654
    functionName: test_pcep_tlv_create_rsvp_ipv6_error_spec
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - assert
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - inet_pton
    - CU_ASSERT_EQUAL
    - pcep_tlv_create_rsvp_ipv6_error_spec
    - pcep_encode_tlv
    - CU_ASSERT_PTR_NULL
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_rsvp_ipv6_error_spec()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_vendor_info
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:661,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:663,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:664,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:666,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:667,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:668,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:670,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:670,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:671,1
    - Dst: htonl
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:671,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 663
        line_start: 663
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 674
      start: 656
    functionDepth: 3
    functionLinenumber: 656
    functionLinenumberEnd: 674
    functionName: test_pcep_tlv_create_nopath_vector
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - htonl
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - CU_ASSERT_EQUAL
    - pcep_tlv_create_vendor_info
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_nopath_vector()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_tlv_create_tlv_arbitrary
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:681,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:683,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:684,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:686,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:687,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:688,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:690,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:691,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:692,1
    - Dst: strncmp
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:693,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:694,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:695,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:696,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:697,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:698,1
    - Dst: reset_tlv_buffer
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:700,1
    - Dst: pcep_tlv_create_tlv_arbitrary
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:701,1
    - Dst: CU_ASSERT_PTR_NOT_NULL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:702,1
    - Dst: assert
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:703,1
    - Dst: pcep_encode_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:704,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:705,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:706,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:707,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:708,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:709,1
    - Dst: CU_ASSERT_EQUAL
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:710,1
    - Dst: pcep_obj_free_tlv
      Src: /src/frr/pceplib/test/pcep_msg_tlvs_test.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (tlv != NULL)
      pos:
        line_end: 702
        line_start: 702
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    - condition: (tlv != NULL)
      pos:
        line_end: 683
        line_start: 683
        source_file: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    constantsTouched: []
    func_position:
      end: 713
      start: 676
    functionDepth: 3
    functionLinenumber: 676
    functionLinenumberEnd: 713
    functionName: test_pcep_tlv_create_arbitrary
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_tlvs_test.c
    functionUses: 0
    functionsReached:
    - pcep_obj_free_tlv
    - CU_ASSERT_PTR_NOT_NULL
    - strncmp
    - CU_ASSERT_EQUAL
    - pcep_tlv_create_tlv_arbitrary
    - reset_tlv_buffer
    - pcep_encode_tlv
    - assert
    linkageType: ''
    returnType: void
    signature: void test_pcep_tlv_create_arbitrary()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CU_initialize_registry
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:34,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:36,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:41,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:43,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:45,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:47,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:49,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:51,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:53,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:55,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:57,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:59,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:61,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:63,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:66,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:71,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:73,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:75,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:77,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:79,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:82,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:84,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:86,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:88,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:90,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:92,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:94,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:96,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:98,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:100,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:102,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:104,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:106,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:108,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:111,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:116,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:118,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:120,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:122,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:124,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:126,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:128,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:130,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:132,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:134,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:136,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:138,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:140,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:142,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:144,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:146,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:148,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:151,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:153,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:155,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:157,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:159,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:161,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:163,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:165,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:168,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:170,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:173,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:176,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:178,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:180,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:183,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:187,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:191,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:193,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:195,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:197,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:199,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:201,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:203,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:205,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:207,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:209,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:211,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:213,1
    - Dst: CU_add_suite_with_setup_and_teardown
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:216,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:222,1
    - Dst: CU_add_test
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:224,1
    - Dst: CU_basic_set_mode
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:227,1
    - Dst: CU_basic_run_tests
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:228,1
    - Dst: CU_get_failure_list
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:229,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:231,1
    - Dst: printf
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:233,1
    - Dst: CU_get_run_summary
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:243,1
    - Dst: CU_cleanup_registry
      Src: /src/frr/pceplib/test/pcep_msg_messages_tests.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 92
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 248
    functionName: main
    functionSourceFile: /src/frr/pceplib/test/pcep_msg_messages_tests.c
    functionUses: 11
    functionsReached:
    - CU_get_failure_list
    - CU_basic_run_tests
    - CU_cleanup_registry
    - CU_add_test
    - CU_add_suite_with_setup_and_teardown
    - CU_initialize_registry
    - printf
    - CU_basic_set_mode
    - CU_get_run_summary
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripngd/ripng_peer.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 27
    functionName: ripng_peer_new
    functionSourceFile: /src/frr/ripngd/ripng_peer.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ripng_peer
    signature: struct ripng_peer *ripng_peer_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripng_peer.c:31,1
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_peer.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peer
    argTypes:
    - struct ripng_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: ripng_peer_free
    functionSourceFile: /src/frr/ripngd/ripng_peer.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ripng_peer_free(struct ripng_peer *peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripng_peer.c:40,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripng_peer.c:41,1
    - Dst: for
      Src: /src/frr/ripngd/ripng_peer.c:53,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripng_peer.c:53,1
    - Dst: addr6_cmp
      Src: /src/frr/ripngd/ripng_peer.c:54,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripng_peer.c:67,1
    - Dst: listnode_delete
      Src: /src/frr/ripngd/ripng_peer.c:68,1
    - Dst: ripng_peer_free
      Src: /src/frr/ripngd/ripng_peer.c:69,1
    - Dst: time
      Src: /src/frr/ripngd/ripng_peer.c:133,1
    - Dst: frrtime_to_interval
      Src: /src/frr/ripngd/ripng_peer.c:136,1
    - Dst: ripng_peer_display
      Src: /src/frr/ripngd/ripng_peer.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ripng
    - addr
    argTypes:
    - struct ripng*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 164
    functionName: ripng_peer_lookup
    functionSourceFile: /src/frr/ripngd/ripng_peer.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - ripng_peer_free
    - ripng_peer_display
    - frrtime_to_interval
    - EVENT_ARG
    - IPV6_ADDR_SAME
    - ALL_LIST_ELEMENTS
    - for
    - time
    - addr6_cmp
    linkageType: ''
    returnType: struct ripng_peer
    signature: struct ripng_peer *ripng_peer_lookup(struct ripng *ripng, struct in6_addr
      *addr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:32,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:32,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:34,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:34,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:34,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:34,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:36,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:36,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:36,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:36,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:36,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:36,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:38,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:38,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:38,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:38,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:38,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:38,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:39,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:39,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:42,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:42,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:42,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:42,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:42,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:42,1
    - Dst: a
      Src: /src/frr/ripngd/ripng_nexthop.h:43,1
    - Dst: b
      Src: /src/frr/ripngd/ripng_nexthop.h:43,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 12
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 47
    functionName: addr6_cmp
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.h
    functionUses: 1
    functionsReached:
    - a
    - b
    linkageType: ''
    returnType: int
    signature: int addr6_cmp(struct in6_addr *A, struct in6_addr *B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: a
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.h
    functionUses: 304
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: a(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: b
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.h
    functionUses: 80
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: b(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: OFFSET_LIST_IN_NAME
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_IN_NAME(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: OFFSET_LIST_IN_METRIC
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_IN_METRIC(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: OFFSET_LIST_OUT_NAME
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_OUT_NAME(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: OFFSET_LIST_OUT_METRIC
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFFSET_LIST_OUT_METRIC(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ripngd/ripng_offset.c:34,1
    - Dst: strdup
      Src: /src/frr/ripngd/ripng_offset.c:37,1
    - Dst: listnode_add_sort
      Src: /src/frr/ripngd/ripng_offset.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ripng
    - ifname
    argTypes:
    - struct ripng*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 41
    functionName: ripng_offset_list_new
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 0
    functionsReached:
    - strdup
    - XCALLOC::XCALLOC
    - listnode_add_sort
    linkageType: ''
    returnType: struct ripng_offset_list
    signature: "struct ripng_offset_list *ripng_offset_list_new(struct ripng *ripng,\n\t\t\t\t\t\tconst
      char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/ripngd/ripng_offset.c:45,1
    - Dst: ripng_offset_list_free
      Src: /src/frr/ripngd/ripng_offset.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - offset
    argTypes:
    - struct ripng_offset_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: ripng_offset_list_del
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - ripng_offset_list_free
    linkageType: ''
    returnType: void
    signature: void ripng_offset_list_del(struct ripng_offset_list *offset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripngd/ripng_offset.c:51,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_offset.c:52,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripngd/ripng_offset.c:52,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripngd/ripng_offset.c:53,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_offset.c:54,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripngd/ripng_offset.c:54,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_offset.c:55,1
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_offset.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - offset
    argTypes:
    - struct ripng_offset_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 57
    functionName: ripng_offset_list_free
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 1
    functionsReached:
    - OFFSET_LIST_OUT_NAME
    - XFREE
    - free
    - OFFSET_LIST_IN_NAME
    linkageType: ''
    returnType: void
    signature: void ripng_offset_list_free(struct ripng_offset_list *offset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripng_offset.c:65,1
    - Dst: strcmp
      Src: /src/frr/ripngd/ripng_offset.c:67,1
    - Dst: ripng_offset_list_apply_in
      Src: /src/frr/ripngd/ripng_offset.c:74,1
    - Dst: ripng_offset_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:81,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripngd/ripng_offset.c:82,1
    - Dst: access_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:83,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripngd/ripng_offset.c:84,1
    - Dst: access_list_apply
      Src: /src/frr/ripngd/ripng_offset.c:87,1
    - Dst: OFFSET_LIST_IN_METRIC
      Src: /src/frr/ripngd/ripng_offset.c:89,1
    - Dst: ripng_offset_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:95,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripngd/ripng_offset.c:96,1
    - Dst: access_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:97,1
    - Dst: OFFSET_LIST_IN_NAME
      Src: /src/frr/ripngd/ripng_offset.c:98,1
    - Dst: access_list_apply
      Src: /src/frr/ripngd/ripng_offset.c:101,1
    - Dst: OFFSET_LIST_IN_METRIC
      Src: /src/frr/ripngd/ripng_offset.c:103,1
    - Dst: ripng_offset_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:119,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripngd/ripng_offset.c:120,1
    - Dst: access_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:121,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripngd/ripng_offset.c:122,1
    - Dst: access_list_apply
      Src: /src/frr/ripngd/ripng_offset.c:125,1
    - Dst: OFFSET_LIST_OUT_METRIC
      Src: /src/frr/ripngd/ripng_offset.c:127,1
    - Dst: ripng_offset_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:134,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripngd/ripng_offset.c:135,1
    - Dst: access_list_lookup
      Src: /src/frr/ripngd/ripng_offset.c:136,1
    - Dst: OFFSET_LIST_OUT_NAME
      Src: /src/frr/ripngd/ripng_offset.c:137,1
    - Dst: access_list_apply
      Src: /src/frr/ripngd/ripng_offset.c:140,1
    - Dst: OFFSET_LIST_OUT_METRIC
      Src: /src/frr/ripngd/ripng_offset.c:142,1
    - Dst: strcmp
      Src: /src/frr/ripngd/ripng_offset.c:152,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 2
    argNames:
    - ripng
    - ifname
    argTypes:
    - struct ripng*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 153
    functionName: ripng_offset_list_lookup
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 1
    functionsReached:
    - OFFSET_LIST_IN_NAME
    - OFFSET_LIST_OUT_NAME
    - strcmp
    - ripng_offset_list_apply_in
    - OFFSET_LIST_OUT_METRIC
    - ripng_offset_list_lookup
    - access_list_lookup
    - access_list_apply
    - OFFSET_LIST_IN_METRIC
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct ripng_offset_list
    signature: "struct ripng_offset_list *ripng_offset_list_lookup(struct ripng *ripng,\n\t\t\t\t\t\t
      \  const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ripngd/ripng_offset.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - o1
    - o2
    argTypes:
    - struct ripng_offset_list*
    - struct ripng_offset_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: offset_list_cmp
    functionSourceFile: /src/frr/ripngd/ripng_offset.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int offset_list_cmp(struct ripng_offset_list *o1, struct ripng_offset_list
      *o2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_get_prefix
      Src: /src/frr/ripngd/ripng_zebra.c:34,1
    - Dst: memset
      Src: /src/frr/ripngd/ripng_zebra.c:36,1
    - Dst: SET_FLAG
      Src: /src/frr/ripngd/ripng_zebra.c:42,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripng_zebra.c:43,1
    - Dst: SET_FLAG
      Src: /src/frr/ripngd/ripng_zebra.c:53,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ripngd/ripng_zebra.c:55,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripng_zebra.c:60,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripng_zebra.c:60,1
    - Dst: SET_FLAG
      Src: /src/frr/ripngd/ripng_zebra.c:62,1
    - Dst: SET_FLAG
      Src: /src/frr/ripngd/ripng_zebra.c:66,1
    - Dst: zclient_route_send
      Src: /src/frr/ripngd/ripng_zebra.c:70,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_zebra.c:74,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_zebra.c:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - ripng
    - rp
    - cmd
    argTypes:
    - struct ripng*
    - struct agg_node*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 86
    functionName: ripng_zebra_ipv6_send
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - ALL_LIST_ELEMENTS_RO
    - listhead
    - SET_FLAG
    - UNSET_FLAG
    - zlog_debug
    - zclient_route_send
    - listgetdata
    - agg_node_get_prefix
    linkageType: ''
    returnType: void
    signature: "void ripng_zebra_ipv6_send(struct ripng *ripng, struct agg_node *rp,\n\t\t\t\t
      \ uint8_t cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ripng_zebra_ipv6_send
      Src: /src/frr/ripngd/ripng_zebra.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ripng
    - rp
    argTypes:
    - struct ripng*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: ripng_zebra_ipv6_add
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - ripng_zebra_ipv6_send
    linkageType: ''
    returnType: void
    signature: void ripng_zebra_ipv6_add(struct ripng *ripng, struct agg_node *rp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ripng_zebra_ipv6_send
      Src: /src/frr/ripngd/ripng_zebra.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ripng
    - rp
    argTypes:
    - struct ripng*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: ripng_zebra_ipv6_delete
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - ripng_zebra_ipv6_send
    linkageType: ''
    returnType: void
    signature: void ripng_zebra_ipv6_delete(struct ripng *ripng, struct agg_node *rp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ripng_lookup_by_vrf_id
      Src: /src/frr/ripngd/ripng_zebra.c:108,1
    - Dst: zapi_route_decode
      Src: /src/frr/ripngd/ripng_zebra.c:112,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripngd/ripng_zebra.c:116,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripng_zebra.c:119,1
    - Dst: ripng_redistribute_add
      Src: /src/frr/ripngd/ripng_zebra.c:126,1
    - Dst: ripng_redistribute_delete
      Src: /src/frr/ripngd/ripng_zebra.c:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 136
    functionName: ripng_zebra_read_route
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - ripng_lookup_by_vrf_id
    - ripng_redistribute_delete
    - ripng_redistribute_add
    - zapi_route_decode
    linkageType: ''
    returnType: int
    signature: int ripng_zebra_read_route(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripngd/ripng_zebra.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ripng
    - type
    argTypes:
    - struct ripng*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: ripng_redistribute_conf_update
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void ripng_redistribute_conf_update(struct ripng *ripng, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripngd/ripng_zebra.c:147,1
    - Dst: ripng_redistribute_withdraw
      Src: /src/frr/ripngd/ripng_zebra.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ripng
    - type
    argTypes:
    - struct ripng*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 151
    functionName: ripng_redistribute_conf_delete
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - ripng_redistribute_withdraw
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void ripng_redistribute_conf_delete(struct ripng *ripng, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ripng
    - type
    argTypes:
    - struct ripng*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: ripng_redistribute_check
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ripng_redistribute_check(struct ripng *ripng, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_redistribute_check
      Src: /src/frr/ripngd/ripng_zebra.c:161,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripngd/ripng_zebra.c:164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ripng
    argTypes:
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: ripng_redistribute_enable
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - ripng_redistribute_check
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void ripng_redistribute_enable(struct ripng *ripng)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_redistribute_check
      Src: /src/frr/ripngd/ripng_zebra.c:172,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ripngd/ripng_zebra.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ripng
    argTypes:
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 178
    functionName: ripng_redistribute_disable
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - ripng_redistribute_check
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void ripng_redistribute_disable(struct ripng *ripng)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_redistribute_check
      Src: /src/frr/ripngd/ripng_zebra.c:186,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_zebra.c:189,1
    - Dst: zebra_route_string
      Src: /src/frr/ripngd/ripng_zebra.c:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - ripng
    argTypes:
    - struct vty*
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 191
    functionName: ripng_redistribute_write
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_route_string
    - ripng_redistribute_check
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ripng_redistribute_write(struct vty *vty, struct ripng *ripng)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_zebra.c:199,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ripngd/ripng_zebra.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: ripng_zebra_vrf_register
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void ripng_zebra_vrf_register(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_zebra.c:211,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/ripngd/ripng_zebra.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 215
    functionName: ripng_zebra_vrf_deregister
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_dereg_requests
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ripng_zebra_vrf_deregister(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ripngd/ripng_zebra.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: ripng_zebra_connected
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void ripng_zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/ripngd/ripng_zebra.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - struct zclient_capabilities*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: ripng_zebra_capabilities
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - MIN
    linkageType: ''
    returnType: void
    signature: void ripng_zebra_capabilities(struct zclient_capabilities *cap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/ripngd/ripng_zebra.c:239,1
    - Dst: array_size
      Src: /src/frr/ripngd/ripng_zebra.c:240,1
    - Dst: zclient_init
      Src: /src/frr/ripngd/ripng_zebra.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 245
    functionName: zebra_init
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 12
    functionsReached:
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void zebra_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/ripngd/ripng_zebra.c:249,1
    - Dst: zclient_free
      Src: /src/frr/ripngd/ripng_zebra.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: ripng_zebra_stop
    functionSourceFile: /src/frr/ripngd/ripng_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_free
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void ripng_zebra_stop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: METRIC_OUT
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: METRIC_OUT(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: NEXTHOP_OUT_PTR
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NEXTHOP_OUT_PTR(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: TAG_OUT
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAG_OUT(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ripngd/ripng_nexthop.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: ripng_rte_new
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached:
    - list_new
    linkageType: ''
    returnType: struct list
    signature: struct list *ripng_rte_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ripngd/ripng_nexthop.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ripng_rte_list
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: ripng_rte_free
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached:
    - list_delete
    linkageType: ''
    returnType: void
    signature: void ripng_rte_free(struct list *ripng_rte_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_nexthop.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - A
    argTypes:
    - struct ripng_rte_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: _ripng_rte_del
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void _ripng_rte_del(struct ripng_rte_data *A)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr6_cmp
      Src: /src/frr/ripngd/ripng_nexthop.c:76,1
    - Dst: NEXTHOP_OUT_PTR
      Src: /src/frr/ripngd/ripng_nexthop.c:76,1
    - Dst: NEXTHOP_OUT_PTR
      Src: /src/frr/ripngd/ripng_nexthop.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - A
    - B
    argTypes:
    - struct ripng_rte_data*
    - struct ripng_rte_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: _ripng_rte_cmp
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached:
    - NEXTHOP_OUT_PTR
    - addr6_cmp
    linkageType: ''
    returnType: int
    signature: int _ripng_rte_cmp(struct ripng_rte_data *A, struct ripng_rte_data
      *B)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ripngd/ripng_nexthop.c:87,1
    - Dst: XMALLOC
      Src: /src/frr/ripngd/ripng_nexthop.c:89,1
    - Dst: listnode_add_sort
      Src: /src/frr/ripngd/ripng_nexthop.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ripng_rte_list
    - p
    - rinfo
    - aggregate
    argTypes:
    - struct list*
    - struct prefix_ipv6*
    - struct ripng_info*
    - struct ripng_aggregate*
    assertStmts:
    - condition: (!rinfo || !aggregate)
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/frr/ripngd/ripng_nexthop.c
    constantsTouched: []
    func_position:
      end: 95
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 95
    functionName: ripng_rte_add
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - listnode_add_sort
    - assert
    linkageType: ''
    returnType: void
    signature: "void ripng_rte_add(struct list *ripng_rte_list, struct prefix_ipv6
      *p,\n\t\t   struct ripng_info *rinfo, struct ripng_aggregate *aggregate)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripngd/ripng_nexthop.c:117,1
    - Dst: memset
      Src: /src/frr/ripngd/ripng_nexthop.c:123,1
    - Dst: stream_reset
      Src: /src/frr/ripngd/ripng_nexthop.c:130,1
    - Dst: MIN
      Src: /src/frr/ripngd/ripng_nexthop.c:137,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripng_nexthop.c:142,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripng_nexthop.c:144,1
    - Dst: NEXTHOP_OUT_PTR
      Src: /src/frr/ripngd/ripng_nexthop.c:144,1
    - Dst: ripng_send_packet
      Src: /src/frr/ripngd/ripng_nexthop.c:149,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripng_nexthop.c:149,1
    - Dst: stream_get_endp
      Src: /src/frr/ripngd/ripng_nexthop.c:150,1
    - Dst: ripng_packet_dump
      Src: /src/frr/ripngd/ripng_nexthop.c:154,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripng_nexthop.c:156,1
    - Dst: stream_get_endp
      Src: /src/frr/ripngd/ripng_nexthop.c:157,1
    - Dst: stream_reset
      Src: /src/frr/ripngd/ripng_nexthop.c:159,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripng_nexthop.c:168,1
    - Dst: NEXTHOP_OUT_PTR
      Src: /src/frr/ripngd/ripng_nexthop.c:168,1
    - Dst: NEXTHOP_OUT_PTR
      Src: /src/frr/ripngd/ripng_nexthop.c:171,1
    - Dst: ripng_write_rte
      Src: /src/frr/ripngd/ripng_nexthop.c:173,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripng_nexthop.c:178,1
    - Dst: ripng_write_rte
      Src: /src/frr/ripngd/ripng_nexthop.c:179,1
    - Dst: ripng_write_rte
      Src: /src/frr/ripngd/ripng_nexthop.c:183,1
    - Dst: TAG_OUT
      Src: /src/frr/ripngd/ripng_nexthop.c:183,1
    - Dst: METRIC_OUT
      Src: /src/frr/ripngd/ripng_nexthop.c:184,1
    - Dst: ripng_send_packet
      Src: /src/frr/ripngd/ripng_nexthop.c:187,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripng_nexthop.c:187,1
    - Dst: stream_get_endp
      Src: /src/frr/ripngd/ripng_nexthop.c:188,1
    - Dst: ripng_packet_dump
      Src: /src/frr/ripngd/ripng_nexthop.c:191,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripng_nexthop.c:192,1
    - Dst: stream_get_endp
      Src: /src/frr/ripngd/ripng_nexthop.c:193,1
    - Dst: stream_reset
      Src: /src/frr/ripngd/ripng_nexthop.c:195,1
    - Dst: ripng_send_packet
      Src: /src/frr/ripngd/ripng_nexthop.c:201,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripng_nexthop.c:201,1
    - Dst: stream_get_endp
      Src: /src/frr/ripngd/ripng_nexthop.c:202,1
    - Dst: ripng_packet_dump
      Src: /src/frr/ripngd/ripng_nexthop.c:205,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripng_nexthop.c:205,1
    - Dst: stream_get_endp
      Src: /src/frr/ripngd/ripng_nexthop.c:206,1
    - Dst: stream_reset
      Src: /src/frr/ripngd/ripng_nexthop.c:207,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 3
    argNames:
    - ripng_rte_list
    - ifp
    - to
    argTypes:
    - struct list*
    - struct interface*
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 209
    functionName: ripng_rte_send
    functionSourceFile: /src/frr/ripngd/ripng_nexthop.c
    functionUses: 0
    functionsReached:
    - MIN
    - ALL_LIST_ELEMENTS
    - NEXTHOP_OUT_PTR
    - ripng_packet_dump
    - METRIC_OUT
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - STREAM_DATA
    - stream_get_endp
    - ripng_send_packet
    - IPV6_ADDR_SAME
    - stream_reset
    - TAG_OUT
    - ripng_write_rte
    linkageType: ''
    returnType: void
    signature: "void ripng_rte_send(struct list *ripng_rte_list, struct interface
      *ifp,\n\t\t    struct sockaddr_in6 *to)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ripngd/ripng_route.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 26
    functionName: ripng_aggregate_new
    functionSourceFile: /src/frr/ripngd/ripng_route.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct ripng_aggregate
    signature: struct ripng_aggregate *ripng_aggregate_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_route.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - aggregate
    argTypes:
    - struct ripng_aggregate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: ripng_aggregate_free
    functionSourceFile: /src/frr/ripngd/ripng_route.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ripng_aggregate_free(struct ripng_aggregate *aggregate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_parent
      Src: /src/frr/ripngd/ripng_route.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - child
    - rinfo
    argTypes:
    - struct agg_node*
    - struct ripng_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 44
    functionName: ripng_aggregate_increment
    functionSourceFile: /src/frr/ripngd/ripng_route.c
    functionUses: 0
    functionsReached:
    - agg_node_parent
    linkageType: ''
    returnType: void
    signature: void ripng_aggregate_increment(struct agg_node *child, struct ripng_info
      *rinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_parent
      Src: /src/frr/ripngd/ripng_route.c:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - child
    - rinfo
    argTypes:
    - struct agg_node*
    - struct ripng_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 57
    functionName: ripng_aggregate_decrement
    functionSourceFile: /src/frr/ripngd/ripng_route.c
    functionUses: 0
    functionsReached:
    - agg_node_parent
    linkageType: ''
    returnType: void
    signature: void ripng_aggregate_decrement(struct agg_node *child, struct ripng_info
      *rinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_parent
      Src: /src/frr/ripngd/ripng_route.c:67,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripng_route.c:69,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripng_route.c:71,1
    - Dst: agg_lock_node
      Src: /src/frr/ripngd/ripng_route.c:96,1
    - Dst: agg_route_next_until
      Src: /src/frr/ripngd/ripng_route.c:96,1
    - Dst: agg_lock_node
      Src: /src/frr/ripngd/ripng_route.c:131,1
    - Dst: agg_route_next_until
      Src: /src/frr/ripngd/ripng_route.c:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - child
    - list
    argTypes:
    - struct agg_node*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 152
    functionName: ripng_aggregate_decrement_list
    functionSourceFile: /src/frr/ripngd/ripng_route.c
    functionUses: 0
    functionsReached:
    - agg_route_next_until
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - agg_node_parent
    - agg_lock_node
    linkageType: ''
    returnType: void
    signature: void ripng_aggregate_decrement_list(struct agg_node *child, struct
      list *list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_debug.c:178,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_debug.c:183,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_debug.c:187,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_debug.c:189,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_debug.c:194,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 198
    functionName: config_write_debug
    functionSourceFile: /src/frr/ripngd/ripng_debug.c
    functionUses: 2
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/ripngd/ripng_debug.c:206,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:208,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:210,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:211,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:212,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:213,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:214,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:215,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:216,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:217,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:219,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:220,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:221,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:222,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:223,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:224,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:225,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_debug.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 227
    functionName: ripng_debug_init
    functionSourceFile: /src/frr/ripngd/ripng_debug.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void ripng_debug_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:33,1
    - Dst: agg_route_top
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:37,1
    - Dst: agg_route_next
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:37,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:46,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:47,1
    - Dst: if
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:50,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:50,1
    - Dst: ripng_zebra_ipv6_delete
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:51,1
    - Dst: break
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:52,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:56,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:57,1
    - Dst: listnode_delete
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:58,1
    - Dst: ripng_info_free
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:59,1
    - Dst: list_isempty
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:62,1
    - Dst: list_delete
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:63,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:65,1
    - Dst: clear_ripng_route_rpc
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:70,1
    - Dst: yang_data_list_find
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:75,1
    - Dst: ripng_lookup_by_vrf_name
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:78,1
    - Dst: clear_ripng_route
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:80,1
    - Dst: RB_FOREACH
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:84,1
    - Dst: clear_ripng_route
      Src: /src/frr/ripngd/ripng_nb_rpcs.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ripng
    argTypes:
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 28
    functionDepth: 3
    functionLinenumber: 28
    functionLinenumberEnd: 94
    functionName: clear_ripng_route
    functionSourceFile: /src/frr/ripngd/ripng_nb_rpcs.c
    functionUses: 1
    functionsReached:
    - list_delete
    - clear_ripng_route_rpc
    - ALL_LIST_ELEMENTS_RO
    - ripng_route_rte
    - agg_unlock_node
    - zlog_debug
    - if
    - break
    - yang_data_list_find
    - clear_ripng_route
    - ripng_lookup_by_vrf_name
    - ripng_info_free
    - ripng_zebra_ipv6_delete
    - EVENT_OFF
    - listnode_delete
    - agg_route_top
    - CHECK_FLAG
    - list_isempty
    - agg_route_next
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void clear_ripng_route(struct ripng *ripng)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 41
    functionName: route_match_metric
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/ripngd/ripng_routemap.c:48,1
    - Dst: atoi
      Src: /src/frr/ripngd/ripng_routemap.c:49,1
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_routemap.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 56
    functionName: route_match_metric_compile
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - atoi
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_match_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_routemap.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: route_match_metric_free
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_metric_free(void *rule)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/ripngd/ripng_routemap.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 95
    functionName: route_match_interface
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_interface(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ripngd/ripng_routemap.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: route_match_interface_compile
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_interface_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_routemap.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: route_match_interface_free
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_interface_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 134
    functionName: route_match_tag
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_tag(void *rule,\n\t\t\t\t\t\t
      \  const struct prefix *prefix,\n\t\t\t\t\t\t   void *object)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 174
    functionName: route_set_metric
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/ripngd/ripng_routemap.c:185,1
    - Dst: XMALLOC
      Src: /src/frr/ripngd/ripng_routemap.c:188,1
    - Dst: strtol
      Src: /src/frr/ripngd/ripng_routemap.c:210,1
    - Dst: zlog_info
      Src: /src/frr/ripngd/ripng_routemap.c:216,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 225
    functionName: route_set_metric_compile
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - strlen
    - XMALLOC
    - zlog_info
    - strtol
    linkageType: ''
    returnType: void
    signature: void *route_set_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_routemap.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 231
    functionName: route_set_metric_free
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_metric_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 257
    functionName: route_set_ipv6_nexthop_local
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_ipv6_nexthop_local(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/ripngd/ripng_routemap.c:266,1
    - Dst: inet_pton
      Src: /src/frr/ripngd/ripng_routemap.c:268,1
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_routemap.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 276
    functionName: route_set_ipv6_nexthop_local_compile
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XMALLOC
    - XFREE
    linkageType: ''
    returnType: void
    signature: void *route_set_ipv6_nexthop_local_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_routemap.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: route_set_ipv6_nexthop_local_free
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_ipv6_nexthop_local_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 310
    functionName: route_set_tag
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_tag(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/ripngd/ripng_routemap.c:325,1
    - Dst: route_map_match_interface_hook
      Src: /src/frr/ripngd/ripng_routemap.c:327,1
    - Dst: route_map_no_match_interface_hook
      Src: /src/frr/ripngd/ripng_routemap.c:328,1
    - Dst: route_map_match_metric_hook
      Src: /src/frr/ripngd/ripng_routemap.c:330,1
    - Dst: route_map_no_match_metric_hook
      Src: /src/frr/ripngd/ripng_routemap.c:331,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/ripngd/ripng_routemap.c:333,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/ripngd/ripng_routemap.c:334,1
    - Dst: route_map_set_ipv6_nexthop_local_hook
      Src: /src/frr/ripngd/ripng_routemap.c:336,1
    - Dst: route_map_no_set_ipv6_nexthop_local_hook
      Src: /src/frr/ripngd/ripng_routemap.c:337,1
    - Dst: route_map_set_metric_hook
      Src: /src/frr/ripngd/ripng_routemap.c:339,1
    - Dst: route_map_no_set_metric_hook
      Src: /src/frr/ripngd/ripng_routemap.c:340,1
    - Dst: route_map_set_tag_hook
      Src: /src/frr/ripngd/ripng_routemap.c:342,1
    - Dst: route_map_no_set_tag_hook
      Src: /src/frr/ripngd/ripng_routemap.c:343,1
    - Dst: route_map_install_match
      Src: /src/frr/ripngd/ripng_routemap.c:345,1
    - Dst: route_map_install_match
      Src: /src/frr/ripngd/ripng_routemap.c:346,1
    - Dst: route_map_install_match
      Src: /src/frr/ripngd/ripng_routemap.c:347,1
    - Dst: route_map_install_set
      Src: /src/frr/ripngd/ripng_routemap.c:348,1
    - Dst: route_map_install_set
      Src: /src/frr/ripngd/ripng_routemap.c:349,1
    - Dst: route_map_install_set
      Src: /src/frr/ripngd/ripng_routemap.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 351
    functionName: ripng_route_map_init
    functionSourceFile: /src/frr/ripngd/ripng_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_set_tag_hook
    - route_map_install_match
    - route_map_no_set_metric_hook
    - route_map_set_ipv6_nexthop_local_hook
    - route_map_match_tag_hook
    - route_map_no_match_interface_hook
    - route_map_init
    - route_map_install_set
    - route_map_no_match_metric_hook
    - route_map_no_set_ipv6_nexthop_local_hook
    - route_map_no_match_tag_hook
    - route_map_set_metric_hook
    - route_map_no_set_tag_hook
    - route_map_match_interface_hook
    - route_map_match_metric_hook
    linkageType: ''
    returnType: void
    signature: void ripng_route_map_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ripngd/ripngd.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ripng*
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: ripng_instance_compare
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int ripng_instance_compare(const struct ripng *a,\n\t\t\t\t\t const
      struct ripng *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - struct ripng_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: ripng_route_rte
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ripng_route_rte(struct ripng_info *rinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ripngd/ripngd.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 85
    functionName: ripng_info_new
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct ripng_info
    signature: struct ripng_info *ripng_info_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripngd.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - struct ripng_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: ripng_info_free
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ripng_info_free(struct ripng_info *rinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_get_table_info
      Src: /src/frr/ripngd/ripngd.c:95,1
    - Dst: agg_get_table
      Src: /src/frr/ripngd/ripngd.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - struct ripng_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: ripng_info_get_instance
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - agg_get_table_info
    - agg_get_table
    linkageType: ''
    returnType: struct ripng
    signature: struct ripng *ripng_info_get_instance(const struct ripng_info *rinfo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/ripngd/ripngd.c:110,1
    - Dst: flog_err_sys
      Src: /src/frr/ripngd/ripngd.c:113,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripngd.c:115,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/ripngd/ripngd.c:120,1
    - Dst: sockopt_reuseport
      Src: /src/frr/ripngd/ripngd.c:121,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/ripngd/ripngd.c:122,1
    - Dst: setsockopt_ipv6_pktinfo
      Src: /src/frr/ripngd/ripngd.c:123,1
    - Dst: setsockopt_ipv6_tclass
      Src: /src/frr/ripngd/ripngd.c:127,1
    - Dst: setsockopt_ipv6_multicast_hops
      Src: /src/frr/ripngd/ripngd.c:131,1
    - Dst: setsockopt_ipv6_multicast_loop
      Src: /src/frr/ripngd/ripngd.c:134,1
    - Dst: setsockopt_ipv6_hoplimit
      Src: /src/frr/ripngd/ripngd.c:137,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:141,1
    - Dst: htons
      Src: /src/frr/ripngd/ripngd.c:146,1
    - Dst: bind
      Src: /src/frr/ripngd/ripngd.c:149,1
    - Dst: zlog_err
      Src: /src/frr/ripngd/ripngd.c:151,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripngd.c:152,1
    - Dst: close
      Src: /src/frr/ripngd/ripngd.c:159,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 161
    functionName: ripng_make_socket
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - setsockopt_ipv6_tclass
    - sockopt_reuseaddr
    - vrf_socket
    - memset
    - htons
    - setsockopt_ipv6_multicast_loop
    - sockopt_reuseport
    - zlog_err
    - close
    - safe_strerror
    - bind
    - setsockopt_ipv6_pktinfo
    - setsockopt_so_recvbuf
    - setsockopt_ipv6_multicast_hops
    - setsockopt_ipv6_hoplimit
    - flog_err_sys
    linkageType: ''
    returnType: int
    signature: int ripng_make_socket(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/ripngd/ripngd.c:110,1
    - Dst: flog_err_sys
      Src: /src/frr/ripngd/ripngd.c:113,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripngd.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: (&ripngd_privs)
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - safe_strerror
    - vrf_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ripngd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/frr/ripngd/ripngd.c:149,1
    - Dst: zlog_err
      Src: /src/frr/ripngd/ripngd.c:151,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripngd.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 155
    functionName: (&ripngd_privs)
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - safe_strerror
    - bind
    - zlog_err
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ripngd_privs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:179,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:180,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:181,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:184,1
    - Dst: htonl
      Src: /src/frr/ripngd/ripngd.c:189,1
    - Dst: inet_pton
      Src: /src/frr/ripngd/ripngd.c:196,1
    - Dst: htons
      Src: /src/frr/ripngd/ripngd.c:197,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:200,1
    - Dst: CMSG_SPACE
      Src: /src/frr/ripngd/ripngd.c:206,1
    - Dst: CMSG_LEN
      Src: /src/frr/ripngd/ripngd.c:212,1
    - Dst: CMSG_DATA
      Src: /src/frr/ripngd/ripngd.c:216,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:217,1
    - Dst: sendmsg
      Src: /src/frr/ripngd/ripngd.c:220,1
    - Dst: flog_err_sys
      Src: /src/frr/ripngd/ripngd.c:224,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripngd.c:227,1
    - Dst: flog_err_sys
      Src: /src/frr/ripngd/ripngd.c:229,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripngd.c:230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 4
    argNames:
    - buf
    - bufsize
    - to
    - ifp
    argTypes:
    - caddr_t
    - int
    - struct sockaddr_in6*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 234
    functionName: ripng_send_packet
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - memset
    - htons
    - zlog_debug
    - inet_pton
    - safe_strerror
    - sendmsg
    - CMSG_SPACE
    - CMSG_DATA
    - htonl
    - flog_err_sys
    - CMSG_LEN
    linkageType: ''
    returnType: int
    signature: "int ripng_send_packet(caddr_t buf, int bufsize, struct sockaddr_in6
      *to,\n\t\t      struct interface *ifp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:247,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:254,1
    - Dst: recvmsg
      Src: /src/frr/ripngd/ripngd.c:265,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/ripngd/ripngd.c:269,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/ripngd/ripngd.c:270,1
    - Dst: CMSG_DATA
      Src: /src/frr/ripngd/ripngd.c:276,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:281,1
    - Dst: CMSG_DATA
      Src: /src/frr/ripngd/ripngd.c:288,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/ripngd/ripngd.c:295,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 6
    argNames:
    - sock
    - buf
    - bufsize
    - from
    - ifindex
    - hoplimit
    argTypes:
    - int
    - uint8_t*
    - int
    - struct sockaddr_in6*
    - ifindex_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 299
    functionName: ripng_recv_packet
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - CMSG_NXTHDR
    - memset
    - CMSG_FIRSTHDR
    - zlog_warn
    - CMSG_DATA
    - IN6_IS_ADDR_MULTICAST
    - recvmsg
    linkageType: ''
    returnType: int
    signature: "int ripng_recv_packet(int sock, uint8_t *buf, int bufsize,\n\t\t\t
      \    struct sockaddr_in6 *from, ifindex_t *ifindex,\n\t\t\t     int *hoplimit)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:318,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:326,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:329,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - packet
    - size
    - sndrcv
    argTypes:
    - struct ripng_packet*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 333
    functionName: ripng_packet_dump
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - ntohs
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void ripng_packet_dump(struct ripng_packet *packet, int size,\n\t\t
      \      const char *sndrcv)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:341,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:343,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:349,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:350,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:353,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:356,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ripngd/ripngd.c:364,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:366,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:370,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/ripngd/ripngd.c:372,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:383,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:387,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - rte
    - from
    - nexthop
    argTypes:
    - struct rte*
    - struct sockaddr_in6*
    - struct ripng_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 390
    functionName: ripng_nexthop_rte
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - ntohs
    - zlog_debug
    - zlog_warn
    - IPV6_ADDR_COPY
    linkageType: ''
    returnType: void
    signature: "void ripng_nexthop_rte(struct rte *rte, struct sockaddr_in6 *from,\n\t\t\t
      \     struct ripng_nexthop *nexthop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripngd.c:399,1
    - Dst: if
      Src: /src/frr/ripngd/ripngd.c:402,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:403,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/frr/ripngd/ripngd.c:404,1
    - Dst: ripng_garbage_collect
      Src: /src/frr/ripngd/ripngd.c:411,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripngd.c:416,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:419,1
    - Dst: listnode_delete
      Src: /src/frr/ripngd/ripngd.c:425,1
    - Dst: list_isempty
      Src: /src/frr/ripngd/ripngd.c:426,1
    - Dst: list_delete
      Src: /src/frr/ripngd/ripngd.c:427,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:428,1
    - Dst: ripng_info_free
      Src: /src/frr/ripngd/ripngd.c:432,1
    - Dst: ripng_timeout_update
      Src: /src/frr/ripngd/ripngd.c:435,1
    - Dst: ripng_ecmp_add
      Src: /src/frr/ripngd/ripngd.c:441,1
    - Dst: list_new
      Src: /src/frr/ripngd/ripngd.c:452,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:457,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:461,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:461,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripngd.c:465,1
    - Dst: if
      Src: /src/frr/ripngd/ripngd.c:466,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/ripngd/ripngd.c:468,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/ripngd/ripngd.c:478,1
    - Dst: ripng_ecmp_delete
      Src: /src/frr/ripngd/ripngd.c:479,1
    - Dst: ripng_info_new
      Src: /src/frr/ripngd/ripngd.c:487,1
    - Dst: memcpy
      Src: /src/frr/ripngd/ripngd.c:488,1
    - Dst: listnode_add
      Src: /src/frr/ripngd/ripngd.c:489,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripngd.c:491,1
    - Dst: ripng_timeout_update
      Src: /src/frr/ripngd/ripngd.c:492,1
    - Dst: ripng_zebra_ipv6_add
      Src: /src/frr/ripngd/ripngd.c:493,1
    - Dst: ripng_aggregate_increment
      Src: /src/frr/ripngd/ripngd.c:496,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:499,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:499,1
    - Dst: SET_FLAG
      Src: /src/frr/ripngd/ripngd.c:500,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:503,1
    - Dst: ripng_ecmp_change
      Src: /src/frr/ripngd/ripngd.c:509,1
    - Dst: agg_route_next
      Src: /src/frr/ripngd/ripngd.c:516,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:518,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:519,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripngd.c:522,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/ripngd/ripngd.c:526,1
    - Dst: ripng_ecmp_delete
      Src: /src/frr/ripngd/ripngd.c:532,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 10
    argCount: 2
    argNames:
    - ifp
    - addr
    argTypes:
    - struct interface*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 536
    functionName: ripng_lladdr_check
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - list_delete
    - listhead
    - ripng_ecmp_add
    - listnode_add
    - ripng_ecmp_delete
    - ALL_LIST_ELEMENTS_RO
    - ripng_route_rte
    - agg_unlock_node
    - ripng_aggregate_increment
    - ripng_garbage_collect
    - EVENT_ARG
    - if
    - listgetdata
    - ripng_info_new
    - ripng_zebra_ipv6_add
    - listcount
    - ripng_info_free
    - EVENT_OFF
    - listnode_delete
    - ripng_event
    - IPV6_ADDR_CMP
    - memcpy
    - ripng_timeout_update
    - IN6_IS_ADDR_LINKLOCAL
    - list_isempty
    - ripng_ecmp_change
    - agg_route_next
    - SET_FLAG
    - list_new
    - IN6_ARE_ADDR_EQUAL
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int ripng_lladdr_check(struct interface *ifp, struct in6_addr *addr)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:549,1
    - Dst: ripng_ecmp_add
      Src: /src/frr/ripngd/ripngd.c:550,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:553,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:553,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripngd.c:556,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripngd.c:556,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripngd/ripngd.c:557,1
    - Dst: ripng_zebra_ipv6_delete
      Src: /src/frr/ripngd/ripngd.c:558,1
    - Dst: ripng_aggregate_decrement_list
      Src: /src/frr/ripngd/ripngd.c:561,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripngd.c:564,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:566,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:567,1
    - Dst: list_delete_node
      Src: /src/frr/ripngd/ripngd.c:568,1
    - Dst: ripng_info_free
      Src: /src/frr/ripngd/ripngd.c:569,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:572,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:573,1
    - Dst: memcpy
      Src: /src/frr/ripngd/ripngd.c:574,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripngd.c:576,1
    - Dst: ripng_timeout_update
      Src: /src/frr/ripngd/ripngd.c:577,1
    - Dst: ripng_zebra_ipv6_add
      Src: /src/frr/ripngd/ripngd.c:579,1
    - Dst: ripng_aggregate_increment
      Src: /src/frr/ripngd/ripngd.c:582,1
    - Dst: SET_FLAG
      Src: /src/frr/ripngd/ripngd.c:585,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:588,1
    - Dst: ripng_ecmp_delete
      Src: /src/frr/ripngd/ripngd.c:599,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:605,1
    - Dst: ripng_aggregate_decrement
      Src: /src/frr/ripngd/ripngd.c:608,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:610,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:613,1
    - Dst: listnode_delete
      Src: /src/frr/ripngd/ripngd.c:614,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripngd.c:615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripngd/ripngd.c:616,1
    - Dst: ripng_zebra_ipv6_add
      Src: /src/frr/ripngd/ripngd.c:618,1
    - Dst: ripng_info_free
      Src: /src/frr/ripngd/ripngd.c:619,1
    - Dst: assert
      Src: /src/frr/ripngd/ripngd.c:622,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:622,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:622,1
    - Dst: RIPNG_TIMER_ON
      Src: /src/frr/ripngd/ripngd.c:629,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripngd.c:632,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ripngd/ripngd.c:633,1
    - Dst: ripng_zebra_ipv6_delete
      Src: /src/frr/ripngd/ripngd.c:634,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:638,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:638,1
    - Dst: SET_FLAG
      Src: /src/frr/ripngd/ripngd.c:639,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:642,1
    - Dst: ripng_timeout
      Src: /src/frr/ripngd/ripngd.c:648,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripngd.c:650,1
    - Dst: ripng_info_get_instance
      Src: /src/frr/ripngd/ripngd.c:651,1
    - Dst: ripng_ecmp_delete
      Src: /src/frr/ripngd/ripngd.c:653,1
    - Dst: ripng_timeout_update
      Src: /src/frr/ripngd/ripngd.c:656,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:659,1
    - Dst: event_add_timer
      Src: /src/frr/ripngd/ripngd.c:660,1
    - Dst: ripng_filter
      Src: /src/frr/ripngd/ripngd.c:665,1
    - Dst: access_list_apply
      Src: /src/frr/ripngd/ripngd.c:678,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:682,1
    - Dst: prefix_list_apply
      Src: /src/frr/ripngd/ripngd.c:688,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:692,1
    - Dst: distribute_lookup
      Src: /src/frr/ripngd/ripngd.c:699,1
    - Dst: access_list_lookup
      Src: /src/frr/ripngd/ripngd.c:702,1
    - Dst: access_list_apply
      Src: /src/frr/ripngd/ripngd.c:706,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:709,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ripngd/ripngd.c:717,1
    - Dst: prefix_list_apply
      Src: /src/frr/ripngd/ripngd.c:721,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:724,1
    - Dst: ripng_route_process
      Src: /src/frr/ripngd/ripngd.c:736,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/ripngd/ripngd.c:755,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripngd.c:761,1
    - Dst: ripng_filter
      Src: /src/frr/ripngd/ripngd.c:767,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:771,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:782,1
    - Dst: route_map_apply
      Src: /src/frr/ripngd/ripngd.c:786,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:791,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripngd.c:799,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:802,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripngd.c:809,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:812,1
    - Dst: htons
      Src: /src/frr/ripngd/ripngd.c:820,1
    - Dst: ripng_offset_list_apply_in
      Src: /src/frr/ripngd/ripngd.c:833,1
    - Dst: agg_node_get
      Src: /src/frr/ripngd/ripngd.c:850,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:855,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripngd.c:859,1
    - Dst: ripng_route_rte
      Src: /src/frr/ripngd/ripngd.c:862,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripngd.c:865,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripngd.c:866,1
    - Dst: listnextnode
      Src: /src/frr/ripngd/ripngd.c:869,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:875,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:898,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:907,1
    - Dst: ripng_ecmp_add
      Src: /src/frr/ripngd/ripngd.c:919,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:921,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/frr/ripngd/ripngd.c:927,1
    - Dst: event_timer_remain_second
      Src: /src/frr/ripngd/ripngd.c:942,1
    - Dst: ripng_ecmp_replace
      Src: /src/frr/ripngd/ripngd.c:944,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:952,1
    - Dst: ripng_ecmp_replace
      Src: /src/frr/ripngd/ripngd.c:954,1
    - Dst: ripng_ecmp_delete
      Src: /src/frr/ripngd/ripngd.c:956,1
    - Dst: ripng_ecmp_replace
      Src: /src/frr/ripngd/ripngd.c:959,1
    - Dst: ripng_ecmp_delete
      Src: /src/frr/ripngd/ripngd.c:961,1
    - Dst: ripng_timeout_update
      Src: /src/frr/ripngd/ripngd.c:964,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:967,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 117
    argCount: 2
    argNames:
    - ripng
    - rinfo_new
    argTypes:
    - struct ripng*
    - struct ripng_info*
    assertStmts:
    - condition: (rinfo == listgetdata(listhead(list)))
      pos:
        line_end: 621
        line_start: 621
        source_file: /src/frr/ripngd/ripngd.c
    constantsTouched: []
    func_position:
      end: 969
      start: 541
    functionDepth: 3
    functionLinenumber: 541
    functionLinenumberEnd: 969
    functionName: ripng_ecmp_replace
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - ripng_info_get_instance
    - htons
    - listhead
    - ripng_offset_list_apply_in
    - ripng_ecmp_add
    - ntohs
    - access_list_apply
    - access_list_lookup
    - RIPNG_TIMER_ON
    - ripng_filter
    - prefix_list_lookup
    - memset
    - ripng_ecmp_delete
    - ripng_route_rte
    - ALL_LIST_ELEMENTS_RO
    - agg_unlock_node
    - ripng_aggregate_increment
    - zlog_debug
    - ripng_timeout
    - EVENT_ARG
    - listgetdata
    - apply_mask_ipv6
    - assert
    - agg_node_get
    - listnextnode
    - ripng_zebra_ipv6_add
    - listcount
    - prefix_list_apply
    - ripng_info_free
    - ripng_zebra_ipv6_delete
    - list_delete_node
    - EVENT_OFF
    - event_timer_remain_second
    - ripng_ecmp_replace
    - listnode_delete
    - ripng_event
    - event_add_timer
    - ripng_route_process
    - memcpy
    - ripng_timeout_update
    - ripng_aggregate_decrement_list
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - SET_FLAG
    - distribute_lookup
    - ripng_aggregate_decrement
    - route_map_apply
    - IN6_ARE_ADDR_EQUAL
    - IPV6_ADDR_SAME
    - ALL_LIST_ELEMENTS
    - IPV6_ADDR_COPY
    linkageType: ''
    returnType: struct ripng_info
    signature: "struct ripng_info *ripng_ecmp_replace(struct ripng *ripng,\n\t\t\t\t
      \     struct ripng_info *rinfo_new)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:981,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/ripngd/ripngd.c:983,1
    - Dst: agg_node_get
      Src: /src/frr/ripngd/ripngd.c:986,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:988,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:996,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:999,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:1000,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:1000,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:1005,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:1018,1
    - Dst: ripng_ecmp_replace
      Src: /src/frr/ripngd/ripngd.c:1023,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:1024,1
    - Dst: ripng_ecmp_add
      Src: /src/frr/ripngd/ripngd.c:1026,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:1030,1
    - Dst: ifindex2ifname
      Src: /src/frr/ripngd/ripngd.c:1032,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:1034,1
    - Dst: ifindex2ifname
      Src: /src/frr/ripngd/ripngd.c:1037,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:1040,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 7
    argNames:
    - ripng
    - type
    - sub_type
    - p
    - ifindex
    - nexthop
    - tag
    argTypes:
    - struct ripng*
    - int
    - int
    - struct prefix_ipv6*
    - ifindex_t
    - struct in6_addr*
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 972
    functionDepth: 4
    functionLinenumber: 972
    functionLinenumberEnd: 1041
    functionName: ripng_redistribute_add
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - agg_node_get
    - ifindex2ifname
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - listcount
    - listhead
    - ripng_ecmp_add
    - agg_unlock_node
    - zlog_debug
    - IN6_IS_ADDR_LOOPBACK
    - ripng_ecmp_replace
    - listgetdata
    - ripng_event
    linkageType: ''
    returnType: void
    signature: "void ripng_redistribute_add(struct ripng *ripng, int type, int sub_type,\n\t\t\t
      \   struct prefix_ipv6 *p, ifindex_t ifindex,\n\t\t\t    struct in6_addr *nexthop,
      route_tag_t tag)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:1050,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/ripngd/ripngd.c:1052,1
    - Dst: agg_node_lookup
      Src: /src/frr/ripngd/ripngd.c:1055,1
    - Dst: listcount
      Src: /src/frr/ripngd/ripngd.c:1060,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:1061,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:1061,1
    - Dst: RIPNG_TIMER_ON
      Src: /src/frr/ripngd/ripngd.c:1067,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:1070,1
    - Dst: ripng_aggregate_decrement
      Src: /src/frr/ripngd/ripngd.c:1073,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:1078,1
    - Dst: ifindex2ifname
      Src: /src/frr/ripngd/ripngd.c:1081,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:1085,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:1088,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 5
    argNames:
    - ripng
    - type
    - sub_type
    - p
    - ifindex
    argTypes:
    - struct ripng*
    - int
    - int
    - struct prefix_ipv6*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1090
    functionName: ripng_redistribute_delete
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - ifindex2ifname
    - IN6_IS_ADDR_LINKLOCAL
    - listcount
    - listhead
    - agg_unlock_node
    - zlog_debug
    - EVENT_OFF
    - agg_node_lookup
    - IN6_IS_ADDR_LOOPBACK
    - ripng_aggregate_decrement
    - listgetdata
    - ripng_event
    - RIPNG_TIMER_ON
    linkageType: ''
    returnType: void
    signature: "void ripng_redistribute_delete(struct ripng *ripng, int type, int
      sub_type,\n\t\t\t       struct prefix_ipv6 *p, ifindex_t ifindex)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: agg_route_top
      Src: /src/frr/ripngd/ripngd.c:1099,1
    - Dst: agg_route_next
      Src: /src/frr/ripngd/ripngd.c:1099,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:1101,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:1101,1
    - Dst: RIPNG_TIMER_ON
      Src: /src/frr/ripngd/ripngd.c:1106,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:1109,1
    - Dst: ripng_aggregate_decrement
      Src: /src/frr/ripngd/ripngd.c:1112,1
    - Dst: agg_node_get_prefix
      Src: /src/frr/ripngd/ripngd.c:1119,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:1121,1
    - Dst: ifindex2ifname
      Src: /src/frr/ripngd/ripngd.c:1124,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:1129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ripng
    - type
    argTypes:
    - struct ripng*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1093
    functionDepth: 2
    functionLinenumber: 1093
    functionLinenumberEnd: 1132
    functionName: ripng_redistribute_withdraw
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - agg_route_top
    - agg_node_get_prefix
    - ifindex2ifname
    - listhead
    - agg_route_next
    - zlog_debug
    - EVENT_OFF
    - ripng_aggregate_decrement
    - listgetdata
    - ripng_event
    - RIPNG_TIMER_ON
    linkageType: ''
    returnType: void
    signature: void ripng_redistribute_withdraw(struct ripng *ripng, int type)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:1147,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1148,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:1149,1
    - Dst: ripng_peer_bad_packet
      Src: /src/frr/ripngd/ripngd.c:1150,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:1157,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1158,1
    - Dst: ripng_peer_bad_packet
      Src: /src/frr/ripngd/ripngd.c:1160,1
    - Dst: ripng_lladdr_check
      Src: /src/frr/ripngd/ripngd.c:1169,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1170,1
    - Dst: ripng_peer_bad_packet
      Src: /src/frr/ripngd/ripngd.c:1173,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1182,1
    - Dst: ripng_peer_bad_packet
      Src: /src/frr/ripngd/ripngd.c:1185,1
    - Dst: ripng_peer_update
      Src: /src/frr/ripngd/ripngd.c:1190,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:1193,1
    - Dst: ripng_nexthop_rte
      Src: /src/frr/ripngd/ripngd.c:1204,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/ripngd/ripngd.c:1213,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1214,1
    - Dst: ripng_peer_bad_route
      Src: /src/frr/ripngd/ripngd.c:1217,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripngd.c:1220,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1221,1
    - Dst: ripng_peer_bad_route
      Src: /src/frr/ripngd/ripngd.c:1224,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/ripngd/ripngd.c:1227,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1228,1
    - Dst: ripng_peer_bad_route
      Src: /src/frr/ripngd/ripngd.c:1231,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1238,1
    - Dst: ripng_peer_bad_route
      Src: /src/frr/ripngd/ripngd.c:1241,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1247,1
    - Dst: ripng_peer_bad_route
      Src: /src/frr/ripngd/ripngd.c:1249,1
    - Dst: ripng_route_process
      Src: /src/frr/ripngd/ripngd.c:1258,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 57
    argCount: 5
    argNames:
    - packet
    - size
    - from
    - ifp
    - hoplimit
    argTypes:
    - struct ripng_packet*
    - int
    - struct sockaddr_in6*
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1135
    functionDepth: 4
    functionLinenumber: 1135
    functionLinenumberEnd: 1260
    functionName: ripng_response_process
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - ripng_route_process
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - ripng_peer_bad_packet
    - ntohs
    - ripng_nexthop_rte
    - zlog_warn
    - ripng_lladdr_check
    - IN6_IS_ADDR_LOOPBACK
    - ripng_peer_bad_route
    - ripng_peer_update
    - IN6_IS_ADDR_MULTICAST
    linkageType: ''
    returnType: void
    signature: "void ripng_response_process(struct ripng_packet *packet, int size,\n\t\t\t\t
      \  struct sockaddr_in6 *from,\n\t\t\t\t   struct interface *ifp, int hoplimit)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ripngd/ripngd.c:1276,1
    - Dst: ripng_peer_update
      Src: /src/frr/ripngd/ripngd.c:1290,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ripngd/ripngd.c:1306,1
    - Dst: ripng_output_process
      Src: /src/frr/ripngd/ripngd.c:1309,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:1320,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripngd.c:1326,1
    - Dst: agg_node_lookup
      Src: /src/frr/ripngd/ripngd.c:1328,1
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripngd.c:1331,1
    - Dst: listhead
      Src: /src/frr/ripngd/ripngd.c:1332,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripngd.c:1334,1
    - Dst: ripng_send_packet
      Src: /src/frr/ripngd/ripngd.c:1340,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 4
    argNames:
    - packet
    - size
    - from
    - ifp
    argTypes:
    - struct ripng_packet*
    - int
    - struct sockaddr_in6*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1263
    functionDepth: 2
    functionLinenumber: 1263
    functionLinenumberEnd: 1342
    functionName: ripng_request_process
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - memset
    - if_is_loopback
    - ripng_output_process
    - listgetdata
    - listhead
    - agg_unlock_node
    - agg_node_lookup
    - ripng_send_packet
    - apply_mask_ipv6
    - ripng_peer_update
    linkageType: ''
    returnType: void
    signature: "void ripng_request_process(struct ripng_packet *packet, int size,\n\t\t\t\t
      \ struct sockaddr_in6 *from,\n\t\t\t\t  struct interface *ifp)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripngd.c:1347,1
    - Dst: assert
      Src: /src/frr/ripngd/ripngd.c:1357,1
    - Dst: assert
      Src: /src/frr/ripngd/ripngd.c:1358,1
    - Dst: EVENT_FD
      Src: /src/frr/ripngd/ripngd.c:1362,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:1365,1
    - Dst: ripng_recv_packet
      Src: /src/frr/ripngd/ripngd.c:1368,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripngd.c:1368,1
    - Dst: STREAM_SIZE
      Src: /src/frr/ripngd/ripngd.c:1369,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1372,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripngd.c:1373,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1380,1
    - Dst: ripng_peer_bad_packet
      Src: /src/frr/ripngd/ripngd.c:1382,1
    - Dst: STREAM_DATA
      Src: /src/frr/ripngd/ripngd.c:1386,1
    - Dst: if_lookup_by_index
      Src: /src/frr/ripngd/ripngd.c:1387,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:1391,1
    - Dst: ntohs
      Src: /src/frr/ripngd/ripngd.c:1393,1
    - Dst: ripng_packet_dump
      Src: /src/frr/ripngd/ripngd.c:1398,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1402,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1410,1
    - Dst: ripng_peer_bad_packet
      Src: /src/frr/ripngd/ripngd.c:1413,1
    - Dst: ripng_request_process
      Src: /src/frr/ripngd/ripngd.c:1420,1
    - Dst: ripng_response_process
      Src: /src/frr/ripngd/ripngd.c:1423,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripngd.c:1426,1
    - Dst: ripng_peer_bad_packet
      Src: /src/frr/ripngd/ripngd.c:1428,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (ripng != NULL)
      pos:
        line_end: 1356
        line_start: 1356
        source_file: /src/frr/ripngd/ripngd.c
    - condition: (ripng->sock >= 0)
      pos:
        line_end: 1357
        line_start: 1357
        source_file: /src/frr/ripngd/ripngd.c
    constantsTouched: []
    func_position:
      end: 1431
      start: 1345
    functionDepth: 5
    functionLinenumber: 1345
    functionLinenumberEnd: 1431
    functionName: ripng_read
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - ripng_packet_dump
    - ripng_response_process
    - EVENT_FD
    - ripng_peer_bad_packet
    - STREAM_DATA
    - ripng_recv_packet
    - ntohs
    - zlog_warn
    - safe_strerror
    - zlog_debug
    - ripng_request_process
    - EVENT_ARG
    - ripng_event
    - assert
    - STREAM_SIZE
    linkageType: ''
    returnType: void
    signature: void ripng_read(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: agg_route_top
      Src: /src/frr/ripngd/ripngd.c:1441,1
    - Dst: agg_route_next
      Src: /src/frr/ripngd/ripngd.c:1441,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripngd.c:1443,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ripngd/ripngd.c:1444,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripngd.c:1455,1
    - Dst: ripng_output_process
      Src: /src/frr/ripngd/ripngd.c:1488,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:1493,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripngd.c:1497,1
    - Dst: ripng_triggered_interval
      Src: /src/frr/ripngd/ripngd.c:1501,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripngd.c:1503,1
    - Dst: ripng_triggered_update
      Src: /src/frr/ripngd/ripngd.c:1507,1
    - Dst: ripng_triggered_update
      Src: /src/frr/ripngd/ripngd.c:1512,1
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripngd.c:1514,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:1520,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:1525,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripngd/ripngd.c:1529,1
    - Dst: if_is_loopback
      Src: /src/frr/ripngd/ripngd.c:1532,1
    - Dst: if_is_up
      Src: /src/frr/ripngd/ripngd.c:1532,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 1
    argNames:
    - ripng
    argTypes:
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1434
    functionDepth: 1
    functionLinenumber: 1434
    functionLinenumberEnd: 1544
    functionName: ripng_clear_changed_flag
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - ripng_triggered_update
    - ALL_LIST_ELEMENTS_RO
    - ripng_output_process
    - if_is_loopback
    - ripng_triggered_interval
    - agg_route_next
    - FOR_ALL_INTERFACES
    - zlog_debug
    - UNSET_FLAG
    - EVENT_OFF
    - EVENT_ARG
    - ripng_event
    - if_is_up
    linkageType: ''
    returnType: void
    signature: void ripng_clear_changed_flag(struct ripng *ripng)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/ripngd/ripngd.c:1567,1
    - Dst: stream_putc
      Src: /src/frr/ripngd/ripngd.c:1568,1
    - Dst: stream_putw
      Src: /src/frr/ripngd/ripngd.c:1569,1
    - Dst: assert
      Src: /src/frr/ripngd/ripngd.c:1574,1
    - Dst: stream_write
      Src: /src/frr/ripngd/ripngd.c:1575,1
    - Dst: stream_write
      Src: /src/frr/ripngd/ripngd.c:1577,1
    - Dst: stream_putw
      Src: /src/frr/ripngd/ripngd.c:1578,1
    - Dst: stream_putc
      Src: /src/frr/ripngd/ripngd.c:1580,1
    - Dst: stream_putc
      Src: /src/frr/ripngd/ripngd.c:1582,1
    - Dst: stream_putc
      Src: /src/frr/ripngd/ripngd.c:1583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - num
    - s
    - p
    - nexthop
    - tag
    - metric
    argTypes:
    - int
    - struct stream*
    - struct prefix_ipv6*
    - struct in6_addr*
    - uint16_t
    - uint8_t
    assertStmts:
    - condition: (p)
      pos:
        line_end: 1573
        line_start: 1573
        source_file: /src/frr/ripngd/ripngd.c
    constantsTouched: []
    func_position:
      end: 1586
      start: 1562
    functionDepth: 1
    functionLinenumber: 1562
    functionLinenumberEnd: 1586
    functionName: ripng_write_rte
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - stream_write
    - stream_putw
    - stream_putc
    - assert
    linkageType: ''
    returnType: int
    signature: "int ripng_write_rte(int num, struct stream *s, struct prefix_ipv6
      *p,\n\t\t    struct in6_addr *nexthop, uint16_t tag, uint8_t metric)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ripngd/ripngd.c:1842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1838
    functionDepth: 1
    functionLinenumber: 1838
    functionLinenumberEnd: 1847
    functionName: ripng_lookup_by_vrf_id
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct ripng
    signature: struct ripng *ripng_lookup_by_vrf_id(vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ripngd/ripngd.c:1855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vrf_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1849
    functionDepth: 1
    functionLinenumber: 1849
    functionLinenumberEnd: 1856
    functionName: ripng_lookup_by_vrf_name
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct ripng
    signature: struct ripng *ripng_lookup_by_vrf_name(const char *vrf_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripngd/ripngd.c:1864,1
    - Dst: XSTRDUP
      Src: /src/frr/ripngd/ripngd.c:1865,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/ripngd/ripngd.c:1869,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/ripngd/ripngd.c:1871,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/ripngd/ripngd.c:1873,1
    - Dst: yang_get_default_uint8
      Src: /src/frr/ripngd/ripngd.c:1876,1
    - Dst: yang_get_default_uint8
      Src: /src/frr/ripngd/ripngd.c:1877,1
    - Dst: stream_new
      Src: /src/frr/ripngd/ripngd.c:1880,1
    - Dst: stream_new
      Src: /src/frr/ripngd/ripngd.c:1881,1
    - Dst: agg_table_init
      Src: /src/frr/ripngd/ripngd.c:1884,1
    - Dst: agg_set_table_info
      Src: /src/frr/ripngd/ripngd.c:1885,1
    - Dst: list_new
      Src: /src/frr/ripngd/ripngd.c:1886,1
    - Dst: vector_init
      Src: /src/frr/ripngd/ripngd.c:1889,1
    - Dst: agg_table_init
      Src: /src/frr/ripngd/ripngd.c:1890,1
    - Dst: vector_init
      Src: /src/frr/ripngd/ripngd.c:1891,1
    - Dst: list_new
      Src: /src/frr/ripngd/ripngd.c:1892,1
    - Dst: distribute_list_ctx_create
      Src: /src/frr/ripngd/ripngd.c:1897,1
    - Dst: distribute_list_add_hook
      Src: /src/frr/ripngd/ripngd.c:1898,1
    - Dst: distribute_list_delete_hook
      Src: /src/frr/ripngd/ripngd.c:1900,1
    - Dst: if_rmap_ctx_create
      Src: /src/frr/ripngd/ripngd.c:1904,1
    - Dst: if_rmap_hook_add
      Src: /src/frr/ripngd/ripngd.c:1905,1
    - Dst: if_rmap_hook_delete
      Src: /src/frr/ripngd/ripngd.c:1906,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ripngd/ripngd.c:1909,1
    - Dst: ripng_instance_enable
      Src: /src/frr/ripngd/ripngd.c:1910,1
    - Dst: RB_INSERT
      Src: /src/frr/ripngd/ripngd.c:1916,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 3
    argNames:
    - vrf_name
    - vrf
    - socket
    argTypes:
    - char*
    - struct vrf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1919
      start: 1859
    functionDepth: 1
    functionLinenumber: 1859
    functionLinenumberEnd: 1919
    functionName: ripng_create
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - yang_get_default_uint8
    - stream_new
    - if_rmap_ctx_create
    - XCALLOC
    - yang_get_default_uint32
    - distribute_list_ctx_create
    - distribute_list_add_hook
    - if_rmap_hook_delete
    - vrf_is_enabled
    - RB_INSERT
    - ripng_instance_enable
    - list_new
    - vector_init
    - if_rmap_hook_add
    - distribute_list_delete_hook
    - agg_set_table_info
    - XSTRDUP
    - agg_table_init
    linkageType: ''
    returnType: struct ripng
    signature: struct ripng *ripng_create(const char *vrf_name, struct vrf *vrf, int
      socket)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/ripngd/ripngd.c:1929,1
    - Dst: if_is_up
      Src: /src/frr/ripngd/ripngd.c:1933,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:1937,1
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:1939,1
    - Dst: ripng_send_packet
      Src: /src/frr/ripngd/ripngd.c:1945,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1922
    functionDepth: 2
    functionLinenumber: 1922
    functionLinenumberEnd: 1947
    functionName: ripng_request
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - memset
    - if_is_loopback
    - zlog_debug
    - ripng_send_packet
    - if_is_up
    linkageType: ''
    returnType: int
    signature: int ripng_request(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/ripngd/ripngd.c:1952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - time
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1950
    functionDepth: 1
    functionLinenumber: 1950
    functionLinenumberEnd: 1953
    functionName: ripng_update_jitter
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    linkageType: ''
    returnType: int
    signature: int ripng_update_jitter(int time)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/ripngd/ripngd.c:1961,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripngd.c:1964,1
    - Dst: ripng_update_jitter
      Src: /src/frr/ripngd/ripngd.c:1967,1
    - Dst: event_add_timer
      Src: /src/frr/ripngd/ripngd.c:1969,1
    - Dst: event_add_event
      Src: /src/frr/ripngd/ripngd.c:1977,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - ripng
    - event
    - sock
    argTypes:
    - struct ripng*
    - enum ripng_event
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1984
      start: 1955
    functionDepth: 2
    functionLinenumber: 1955
    functionLinenumberEnd: 1984
    functionName: ripng_event
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 7
    functionsReached:
    - event_add_timer
    - ripng_update_jitter
    - EVENT_OFF
    - event_add_read
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ripng_event(struct ripng *ripng, enum ripng_event event, int sock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_second
      Src: /src/frr/ripngd/ripngd.c:1997,1
    - Dst: gmtime_r
      Src: /src/frr/ripngd/ripngd.c:1998,1
    - Dst: strftime
      Src: /src/frr/ripngd/ripngd.c:1999,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripngd.c:2000,1
    - Dst: event_timer_remain_second
      Src: /src/frr/ripngd/ripngd.c:2002,1
    - Dst: gmtime_r
      Src: /src/frr/ripngd/ripngd.c:2003,1
    - Dst: strftime
      Src: /src/frr/ripngd/ripngd.c:2004,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripngd.c:2005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - vty
    - rinfo
    argTypes:
    - struct vty*
    - struct ripng_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 1988
    functionDepth: 1
    functionLinenumber: 1988
    functionLinenumberEnd: 2007
    functionName: ripng_vty_out_uptime
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - event_timer_remain_second
    - strftime
    - vty_out
    - gmtime_r
    linkageType: ''
    returnType: void
    signature: void ripng_vty_out_uptime(struct vty *vty, struct ripng_info *rinfo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ripngd/ripngd.c:2012,1
    - Dst: strlcat
      Src: /src/frr/ripngd/ripngd.c:2015,1
    - Dst: strlcat
      Src: /src/frr/ripngd/ripngd.c:2019,1
    - Dst: strlcat
      Src: /src/frr/ripngd/ripngd.c:2022,1
    - Dst: strlcat
      Src: /src/frr/ripngd/ripngd.c:2025,1
    - Dst: strlcat
      Src: /src/frr/ripngd/ripngd.c:2028,1
    - Dst: strlcat
      Src: /src/frr/ripngd/ripngd.c:2031,1
    - Dst: strlcat
      Src: /src/frr/ripngd/ripngd.c:2034,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - rinfo
    argTypes:
    - struct ripng_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2009
    functionDepth: 1
    functionLinenumber: 2009
    functionLinenumberEnd: 2039
    functionName: ripng_route_subtype_print
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - strlcat
    - memset
    linkageType: ''
    returnType: char
    signature: char *ripng_route_subtype_print(struct ripng_info *rinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:2619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2616
    functionDepth: 1
    functionLinenumber: 2616
    functionLinenumberEnd: 2623
    functionName: ripng_vrf_new
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int ripng_vrf_new(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:2630,1
    - Dst: ripng_lookup_by_vrf_name
      Src: /src/frr/ripngd/ripngd.c:2633,1
    - Dst: ripng_clean
      Src: /src/frr/ripngd/ripngd.c:2637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2639
      start: 2625
    functionDepth: 2
    functionLinenumber: 2625
    functionLinenumberEnd: 2639
    functionName: ripng_vrf_delete
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - ripng_clean
    - zlog_debug
    - ripng_lookup_by_vrf_name
    linkageType: ''
    returnType: int
    signature: int ripng_vrf_delete(struct vrf *vrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ripng_lookup_by_vrf_name
      Src: /src/frr/ripngd/ripngd.c:2646,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:2651,1
    - Dst: ripng_make_socket
      Src: /src/frr/ripngd/ripngd.c:2655,1
    - Dst: ripng_instance_enable
      Src: /src/frr/ripngd/ripngd.c:2659,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2662
      start: 2641
    functionDepth: 2
    functionLinenumber: 2641
    functionLinenumberEnd: 2662
    functionName: ripng_vrf_enable
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - ripng_make_socket
    - zlog_debug
    - ripng_lookup_by_vrf_name
    - ripng_instance_enable
    linkageType: ''
    returnType: int
    signature: int ripng_vrf_enable(struct vrf *vrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ripng_lookup_by_vrf_name
      Src: /src/frr/ripngd/ripngd.c:2668,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripngd.c:2673,1
    - Dst: ripng_instance_disable
      Src: /src/frr/ripngd/ripngd.c:2678,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2681
      start: 2664
    functionDepth: 2
    functionLinenumber: 2664
    functionLinenumberEnd: 2681
    functionName: ripng_vrf_disable
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - ripng_instance_disable
    - zlog_debug
    - ripng_lookup_by_vrf_name
    linkageType: ''
    returnType: int
    signature: int ripng_vrf_disable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/ripngd/ripngd.c:2685,1
    - Dst: vrf_cmd_init
      Src: /src/frr/ripngd/ripngd.c:2688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2689
      start: 2683
    functionDepth: 1
    functionLinenumber: 2683
    functionLinenumberEnd: 2689
    functionName: ripng_vrf_init
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - vrf_init
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void ripng_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_terminate
      Src: /src/frr/ripngd/ripngd.c:2693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2694
      start: 2691
    functionDepth: 1
    functionLinenumber: 2691
    functionLinenumberEnd: 2694
    functionName: ripng_vrf_terminate
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - vrf_terminate
    linkageType: ''
    returnType: void
    signature: void ripng_vrf_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/ripngd/ripngd.c:2700,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripngd.c:2703,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripngd.c:2704,1
    - Dst: install_default
      Src: /src/frr/ripngd/ripngd.c:2706,1
    - Dst: ripng_if_init
      Src: /src/frr/ripngd/ripngd.c:2708,1
    - Dst: ripng_debug_init
      Src: /src/frr/ripngd/ripngd.c:2709,1
    - Dst: access_list_init
      Src: /src/frr/ripngd/ripngd.c:2712,1
    - Dst: access_list_add_hook
      Src: /src/frr/ripngd/ripngd.c:2713,1
    - Dst: access_list_delete_hook
      Src: /src/frr/ripngd/ripngd.c:2714,1
    - Dst: prefix_list_init
      Src: /src/frr/ripngd/ripngd.c:2717,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/ripngd/ripngd.c:2718,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/ripngd/ripngd.c:2719,1
    - Dst: ripng_route_map_init
      Src: /src/frr/ripngd/ripngd.c:2722,1
    - Dst: route_map_add_hook
      Src: /src/frr/ripngd/ripngd.c:2724,1
    - Dst: route_map_delete_hook
      Src: /src/frr/ripngd/ripngd.c:2725,1
    - Dst: if_rmap_init
      Src: /src/frr/ripngd/ripngd.c:2727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2697
    functionDepth: 2
    functionLinenumber: 2697
    functionLinenumberEnd: 2728
    functionName: ripng_init
    functionSourceFile: /src/frr/ripngd/ripngd.c
    functionUses: 0
    functionsReached:
    - prefix_list_delete_hook
    - if_rmap_init
    - prefix_list_init
    - install_node
    - access_list_delete_hook
    - prefix_list_add_hook
    - route_map_delete_hook
    - access_list_init
    - install_default
    - access_list_add_hook
    - ripng_route_map_init
    - route_map_add_hook
    - install_element
    - ripng_if_init
    - ripng_debug_init
    linkageType: ''
    returnType: void
    signature: void ripng_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_is_multicast
      Src: /src/frr/ripngd/ripng_interface.c:53,1
    - Dst: memset
      Src: /src/frr/ripngd/ripng_interface.c:54,1
    - Dst: inet_pton
      Src: /src/frr/ripngd/ripng_interface.c:55,1
    - Dst: setsockopt
      Src: /src/frr/ripngd/ripng_interface.c:65,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripng_interface.c:79,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripng_interface.c:85,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripng_interface.c:86,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:89,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ifp
    - sock
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 97
    functionName: ripng_multicast_join
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - memset
    - zlog_warn
    - inet_pton
    - safe_strerror
    - zlog_debug
    - if_is_multicast
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int ripng_multicast_join(struct interface *ifp, int sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ripngd/ripng_interface.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: (&ripngd_privs)
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ripngd_privs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_is_multicast
      Src: /src/frr/ripngd/ripng_interface.c:105,1
    - Dst: memset
      Src: /src/frr/ripngd/ripng_interface.c:106,1
    - Dst: inet_pton
      Src: /src/frr/ripngd/ripng_interface.c:107,1
    - Dst: setsockopt
      Src: /src/frr/ripngd/ripng_interface.c:110,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripng_interface.c:113,1
    - Dst: safe_strerror
      Src: /src/frr/ripngd/ripng_interface.c:114,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:117,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ifp
    - sock
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 126
    functionName: ripng_multicast_leave
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - memset
    - zlog_warn
    - inet_pton
    - safe_strerror
    - zlog_debug
    - if_is_multicast
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int ripng_multicast_leave(struct interface *ifp, int sock)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripng_interface.c:135,1
    - Dst: if
      Src: /src/frr/ripngd/ripng_interface.c:139,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ripngd/ripng_interface.c:140,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripng_interface.c:158,1
    - Dst: if
      Src: /src/frr/ripngd/ripng_interface.c:162,1
    - Dst: agg_route_top
      Src: /src/frr/ripngd/ripng_interface.c:163,1
    - Dst: agg_route_next
      Src: /src/frr/ripngd/ripng_interface.c:164,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripng_interface.c:166,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:174,1
    - Dst: ripng_multicast_leave
      Src: /src/frr/ripngd/ripng_interface.c:178,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 184
    functionName: ripng_if_ipv6_lladdress_check
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - IN6_IS_ADDR_LINKLOCAL
    - ALL_LIST_ELEMENTS_RO
    - ripng_multicast_leave
    - agg_route_next
    - zlog_debug
    - EVENT_OFF
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int ripng_if_ipv6_lladdress_check(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:190,1
    - Dst: ripng_interface_sync
      Src: /src/frr/ripngd/ripng_interface.c:196,1
    - Dst: ripng_enable_apply
      Src: /src/frr/ripngd/ripng_interface.c:199,1
    - Dst: ripng_passive_interface_apply
      Src: /src/frr/ripngd/ripng_interface.c:202,1
    - Dst: ripng_distribute_update_interface
      Src: /src/frr/ripngd/ripng_interface.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 208
    functionName: ripng_ifp_up
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_distribute_update_interface
    - ripng_interface_sync
    - zlog_debug
    - ripng_passive_interface_apply
    - ripng_enable_apply
    linkageType: ''
    returnType: int
    signature: int ripng_ifp_up(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_interface_sync
      Src: /src/frr/ripngd/ripng_interface.c:213,1
    - Dst: ripng_if_down
      Src: /src/frr/ripngd/ripng_interface.c:214,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 224
    functionName: ripng_ifp_down
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_interface_sync
    - zlog_debug
    - ripng_if_down
    linkageType: ''
    returnType: int
    signature: int ripng_ifp_down(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_interface_sync
      Src: /src/frr/ripngd/ripng_interface.c:229,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:232,1
    - Dst: ripng_enable_apply
      Src: /src/frr/ripngd/ripng_interface.c:239,1
    - Dst: ripng_distribute_update_interface
      Src: /src/frr/ripngd/ripng_interface.c:242,1
    - Dst: ripng_if_rmap_update_interface
      Src: /src/frr/ripngd/ripng_interface.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 248
    functionName: ripng_ifp_create
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_if_rmap_update_interface
    - ripng_distribute_update_interface
    - ripng_interface_sync
    - zlog_debug
    - ripng_enable_apply
    linkageType: ''
    returnType: int
    signature: int ripng_ifp_create(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ripng_interface_sync
      Src: /src/frr/ripngd/ripng_interface.c:252,1
    - Dst: if_is_up
      Src: /src/frr/ripngd/ripng_interface.c:253,1
    - Dst: ripng_if_down
      Src: /src/frr/ripngd/ripng_interface.c:254,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 265
    functionName: ripng_ifp_destroy
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_interface_sync
    - zlog_debug
    - if_is_up
    - ripng_if_down
    linkageType: ''
    returnType: int
    signature: int ripng_ifp_destroy(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_vrf_update_read
      Src: /src/frr/ripngd/ripng_interface.c:273,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ripngd/ripng_interface.c:279,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:281,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/ripngd/ripng_interface.c:282,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/ripngd/ripng_interface.c:286,1
    - Dst: ripng_interface_sync
      Src: /src/frr/ripngd/ripng_interface.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 290
    functionName: ripng_interface_vrf_update
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - zebra_interface_vrf_update_read
    - ripng_interface_sync
    - zlog_debug
    - VRF_LOGNAME
    - vrf_lookup_by_id
    - if_update_to_new_vrf
    linkageType: ''
    returnType: int
    signature: int ripng_interface_vrf_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripngd/ripng_interface.c:297,1
    - Dst: EVENT_OFF
      Src: /src/frr/ripngd/ripng_interface.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ripng
    argTypes:
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 306
    functionName: ripng_interface_clean
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void ripng_interface_clean(struct ripng *ripng)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_up
      Src: /src/frr/ripngd/ripng_interface.c:318,1
    - Dst: memset
      Src: /src/frr/ripngd/ripng_interface.c:323,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_interface.c:327,1
    - Dst: ripng_enable_if_lookup
      Src: /src/frr/ripngd/ripng_interface.c:331,1
    - Dst: ripng_enable_network_lookup2
      Src: /src/frr/ripngd/ripng_interface.c:332,1
    - Dst: ripng_redistribute_add
      Src: /src/frr/ripngd/ripng_interface.c:333,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 308
    functionDepth: 5
    functionLinenumber: 308
    functionLinenumberEnd: 336
    functionName: ripng_apply_address_add
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - memset
    - ripng_redistribute_add
    - apply_mask_ipv6
    - ripng_enable_if_lookup
    - if_is_up
    - ripng_enable_network_lookup2
    linkageType: ''
    returnType: void
    signature: void ripng_apply_address_add(struct connected *ifc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/ripngd/ripng_interface.c:343,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:355,1
    - Dst: ripng_apply_address_add
      Src: /src/frr/ripngd/ripng_interface.c:358,1
    - Dst: ripng_enable_apply
      Src: /src/frr/ripngd/ripng_interface.c:364,1
    - Dst: ripng_distribute_update_interface
      Src: /src/frr/ripngd/ripng_interface.c:367,1
    - Dst: ripng_if_rmap_update_interface
      Src: /src/frr/ripngd/ripng_interface.c:370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 338
    functionDepth: 6
    functionLinenumber: 338
    functionLinenumberEnd: 375
    functionName: ripng_interface_address_add
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_apply_address_add
    - ripng_if_rmap_update_interface
    - zebra_interface_address_read
    - ripng_distribute_update_interface
    - zlog_debug
    - ripng_enable_apply
    linkageType: ''
    returnType: int
    signature: int ripng_interface_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_up
      Src: /src/frr/ripngd/ripng_interface.c:387,1
    - Dst: memset
      Src: /src/frr/ripngd/ripng_interface.c:392,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_interface.c:396,1
    - Dst: ripng_redistribute_delete
      Src: /src/frr/ripngd/ripng_interface.c:398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 401
    functionName: ripng_apply_address_del
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - ripng_redistribute_delete
    - if_is_up
    - memset
    linkageType: ''
    returnType: void
    signature: void ripng_apply_address_del(struct connected *ifc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/ripngd/ripng_interface.c:408,1
    - Dst: zlog_debug
      Src: /src/frr/ripngd/ripng_interface.c:416,1
    - Dst: ripng_apply_address_del
      Src: /src/frr/ripngd/ripng_interface.c:421,1
    - Dst: connected_free
      Src: /src/frr/ripngd/ripng_interface.c:423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 427
    functionName: ripng_interface_address_delete
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - connected_free
    - zlog_debug
    - zebra_interface_address_read
    - ripng_apply_address_del
    linkageType: ''
    returnType: int
    signature: int ripng_interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripng_interface.c:443,1
    - Dst: if
      Src: /src/frr/ripngd/ripng_interface.c:449,1
    - Dst: agg_node_match
      Src: /src/frr/ripngd/ripng_interface.c:454,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripng_interface.c:457,1
    - Dst: ripng_enable_network_lookup2
      Src: /src/frr/ripngd/ripng_interface.c:466,1
    - Dst: agg_node_match
      Src: /src/frr/ripngd/ripng_interface.c:487,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripng_interface.c:491,1
    - Dst: ripng_enable_network_add
      Src: /src/frr/ripngd/ripng_interface.c:500,1
    - Dst: agg_node_get
      Src: /src/frr/ripngd/ripng_interface.c:504,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripng_interface.c:507,1
    - Dst: ripng_enable_apply_all
      Src: /src/frr/ripngd/ripng_interface.c:513,1
    - Dst: ripng_enable_network_delete
      Src: /src/frr/ripngd/ripng_interface.c:519,1
    - Dst: agg_node_lookup
      Src: /src/frr/ripngd/ripng_interface.c:523,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripng_interface.c:528,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripng_interface.c:531,1
    - Dst: ripng_enable_if_lookup
      Src: /src/frr/ripngd/ripng_interface.c:540,1
    - Dst: vector_active
      Src: /src/frr/ripngd/ripng_interface.c:548,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:549,1
    - Dst: strcmp
      Src: /src/frr/ripngd/ripng_interface.c:550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 553
    functionName: ripng_enable_network_lookup_if
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - agg_node_get
    - ripng_enable_network_delete
    - ALL_LIST_ELEMENTS_RO
    - agg_node_match
    - vector_active
    - vector_slot
    - strcmp
    - agg_unlock_node
    - agg_node_lookup
    - ripng_enable_network_add
    - ripng_enable_apply_all
    - if
    - ripng_enable_if_lookup
    - ripng_enable_network_lookup2
    linkageType: ''
    returnType: int
    signature: int ripng_enable_network_lookup_if(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_enable_if_lookup
      Src: /src/frr/ripngd/ripng_interface.c:559,1
    - Dst: vector_set
      Src: /src/frr/ripngd/ripng_interface.c:563,1
    - Dst: strdup
      Src: /src/frr/ripngd/ripng_interface.c:563,1
    - Dst: ripng_enable_apply_all
      Src: /src/frr/ripngd/ripng_interface.c:565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ripng
    - ifname
    argTypes:
    - struct ripng*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 568
    functionName: ripng_enable_if_add
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - strdup
    - vector_set
    - ripng_enable_if_lookup
    - ripng_enable_apply_all
    linkageType: ''
    returnType: int
    signature: int ripng_enable_if_add(struct ripng *ripng, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_enable_if_lookup
      Src: /src/frr/ripngd/ripng_interface.c:575,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:579,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_interface.c:580,1
    - Dst: vector_unset
      Src: /src/frr/ripngd/ripng_interface.c:581,1
    - Dst: ripng_enable_apply_all
      Src: /src/frr/ripngd/ripng_interface.c:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ripng
    - ifname
    argTypes:
    - struct ripng*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 586
    functionName: ripng_enable_if_delete
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - free
    - vector_slot
    - vector_unset
    - ripng_enable_apply_all
    - ripng_enable_if_lookup
    linkageType: ''
    returnType: int
    signature: int ripng_enable_if_delete(struct ripng *ripng, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ripngd/ripng_interface.c:595,1
    - Dst: ripng_multicast_join
      Src: /src/frr/ripngd/ripng_interface.c:600,1
    - Dst: flog_err_sys
      Src: /src/frr/ripngd/ripng_interface.c:601,1
    - Dst: ripng_request
      Src: /src/frr/ripngd/ripng_interface.c:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 589
    functionDepth: 3
    functionLinenumber: 589
    functionLinenumberEnd: 612
    functionName: ripng_interface_wakeup
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_request
    - flog_err_sys
    - ripng_multicast_join
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ripng_interface_wakeup(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ripngd/ripng_interface.c:622,1
    - Dst: if
      Src: /src/frr/ripngd/ripng_interface.c:626,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_interface.c:632,1
    - Dst: ripng_enable_if_lookup
      Src: /src/frr/ripngd/ripng_interface.c:637,1
    - Dst: ripng_enable_network_lookup2
      Src: /src/frr/ripngd/ripng_interface.c:639,1
    - Dst: ripng_redistribute_add
      Src: /src/frr/ripngd/ripng_interface.c:640,1
    - Dst: ripng_redistribute_delete
      Src: /src/frr/ripngd/ripng_interface.c:645,1
    - Dst: ripng_redistribute_check
      Src: /src/frr/ripngd/ripng_interface.c:649,1
    - Dst: ripng_redistribute_add
      Src: /src/frr/ripngd/ripng_interface.c:651,1
    - Dst: ripng_enable_apply
      Src: /src/frr/ripngd/ripng_interface.c:660,1
    - Dst: if_is_up
      Src: /src/frr/ripngd/ripng_interface.c:666,1
    - Dst: ripng_enable_network_lookup_if
      Src: /src/frr/ripngd/ripng_interface.c:672,1
    - Dst: ripng_enable_if_lookup
      Src: /src/frr/ripngd/ripng_interface.c:681,1
    - Dst: ripng_if_ipv6_lladdress_check
      Src: /src/frr/ripngd/ripng_interface.c:688,1
    - Dst: zlog_warn
      Src: /src/frr/ripngd/ripng_interface.c:692,1
    - Dst: zlog_info
      Src: /src/frr/ripngd/ripng_interface.c:698,1
    - Dst: event_add_timer
      Src: /src/frr/ripngd/ripng_interface.c:701,1
    - Dst: ripng_connect_set
      Src: /src/frr/ripngd/ripng_interface.c:704,1
    - Dst: ripng_if_down
      Src: /src/frr/ripngd/ripng_interface.c:711,1
    - Dst: ripng_connect_set
      Src: /src/frr/ripngd/ripng_interface.c:713,1
    - Dst: ripng_enable_apply_all
      Src: /src/frr/ripngd/ripng_interface.c:719,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripngd/ripng_interface.c:723,1
    - Dst: ripng_enable_apply
      Src: /src/frr/ripngd/ripng_interface.c:724,1
    - Dst: ripng_clean_network
      Src: /src/frr/ripngd/ripng_interface.c:728,1
    - Dst: agg_route_top
      Src: /src/frr/ripngd/ripng_interface.c:735,1
    - Dst: agg_route_next
      Src: /src/frr/ripngd/ripng_interface.c:736,1
    - Dst: if
      Src: /src/frr/ripngd/ripng_interface.c:737,1
    - Dst: agg_unlock_node
      Src: /src/frr/ripngd/ripng_interface.c:739,1
    - Dst: vector_active
      Src: /src/frr/ripngd/ripng_interface.c:743,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:744,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_interface.c:745,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:746,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 2
    argNames:
    - ifp
    - set
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 614
    functionDepth: 5
    functionLinenumber: 614
    functionLinenumberEnd: 748
    functionName: ripng_connect_set
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 1
    functionsReached:
    - vector_slot
    - ripng_redistribute_add
    - zlog_warn
    - ripng_enable_apply_all
    - ripng_enable_network_lookup_if
    - ripng_connect_set
    - agg_unlock_node
    - FOR_ALL_INTERFACES
    - ripng_clean_network
    - apply_mask_ipv6
    - if
    - if_is_up
    - ripng_if_down
    - ripng_enable_network_lookup2
    - zlog_info
    - vector_active
    - ripng_redistribute_delete
    - free
    - event_add_timer
    - ripng_enable_apply
    - agg_route_top
    - ripng_redistribute_check
    - agg_route_next
    - ripng_if_ipv6_lladdress_check
    - ALL_LIST_ELEMENTS
    - ripng_enable_if_lookup
    linkageType: ''
    returnType: void
    signature: void ripng_connect_set(struct interface *ifp, int set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/ripngd/ripng_interface.c:757,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:758,1
    - Dst: strcmp
      Src: /src/frr/ripngd/ripng_interface.c:759,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ripng
    - ifname
    argTypes:
    - struct ripng*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 762
    functionName: ripng_passive_interface_lookup
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - vector_active
    - vector_slot
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int ripng_passive_interface_lookup(struct ripng *ripng,\n\t\t\t\t\t
      \ const char *ifname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ripng_passive_interface_lookup
      Src: /src/frr/ripngd/ripng_interface.c:775,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 780
    functionName: ripng_passive_interface_apply
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 1
    functionsReached:
    - ripng_passive_interface_lookup
    linkageType: ''
    returnType: void
    signature: void ripng_passive_interface_apply(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ripngd/ripng_interface.c:786,1
    - Dst: ripng_passive_interface_apply
      Src: /src/frr/ripngd/ripng_interface.c:787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ripng
    argTypes:
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 782
    functionDepth: 3
    functionLinenumber: 782
    functionLinenumberEnd: 788
    functionName: ripng_passive_interface_apply_all
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - ripng_passive_interface_apply
    linkageType: ''
    returnType: void
    signature: void ripng_passive_interface_apply_all(struct ripng *ripng)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_passive_interface_lookup
      Src: /src/frr/ripngd/ripng_interface.c:793,1
    - Dst: vector_set
      Src: /src/frr/ripngd/ripng_interface.c:796,1
    - Dst: strdup
      Src: /src/frr/ripngd/ripng_interface.c:796,1
    - Dst: ripng_passive_interface_apply_all
      Src: /src/frr/ripngd/ripng_interface.c:798,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ripng
    - ifname
    argTypes:
    - struct ripng*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 791
    functionDepth: 4
    functionLinenumber: 791
    functionLinenumberEnd: 801
    functionName: ripng_passive_interface_set
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - strdup
    - vector_set
    - ripng_passive_interface_lookup
    - ripng_passive_interface_apply_all
    linkageType: ''
    returnType: int
    signature: int ripng_passive_interface_set(struct ripng *ripng, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ripng_passive_interface_lookup
      Src: /src/frr/ripngd/ripng_interface.c:808,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:812,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_interface.c:813,1
    - Dst: vector_unset
      Src: /src/frr/ripngd/ripng_interface.c:814,1
    - Dst: ripng_passive_interface_apply_all
      Src: /src/frr/ripngd/ripng_interface.c:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ripng
    - ifname
    argTypes:
    - struct ripng*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 803
    functionDepth: 4
    functionLinenumber: 803
    functionLinenumberEnd: 819
    functionName: ripng_passive_interface_unset
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_passive_interface_lookup
    - free
    - vector_slot
    - vector_unset
    - ripng_passive_interface_apply_all
    linkageType: ''
    returnType: int
    signature: int ripng_passive_interface_unset(struct ripng *ripng, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/ripngd/ripng_interface.c:827,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:828,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_interface.c:829,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:830,1
    - Dst: ripng_passive_interface_apply_all
      Src: /src/frr/ripngd/ripng_interface.c:832,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ripng
    argTypes:
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 822
    functionDepth: 4
    functionLinenumber: 822
    functionLinenumberEnd: 833
    functionName: ripng_passive_interface_clean
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - vector_active
    - free
    - vector_slot
    - ripng_passive_interface_apply_all
    linkageType: ''
    returnType: void
    signature: void ripng_passive_interface_clean(struct ripng *ripng)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: agg_route_top
      Src: /src/frr/ripngd/ripng_interface.c:843,1
    - Dst: agg_route_next
      Src: /src/frr/ripngd/ripng_interface.c:844,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_interface.c:846,1
    - Dst: vector_active
      Src: /src/frr/ripngd/ripng_interface.c:849,1
    - Dst: vector_slot
      Src: /src/frr/ripngd/ripng_interface.c:850,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_interface.c:851,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - ripng
    argTypes:
    - struct vty*
    - struct ripng*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 854
    functionName: ripng_network_write
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - agg_route_top
    - vty_out
    - vector_active
    - vector_slot
    - agg_route_next
    linkageType: ''
    returnType: int
    signature: int ripng_network_write(struct vty *vty, struct ripng *ripng)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ripngd/ripng_interface.c:860,1
    - Dst: yang_get_default_enum
      Src: /src/frr/ripngd/ripng_interface.c:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 870
    functionName: ri_new
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - yang_get_default_enum
    - XCALLOC
    linkageType: ''
    returnType: struct ripng_interface
    signature: struct ripng_interface *ri_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 879
    functionName: ripng_interface_sync
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ripng_interface_sync(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ri_new
      Src: /src/frr/ripngd/ripng_interface.c:883,1
    - Dst: ripng_interface_sync
      Src: /src/frr/ripngd/ripng_interface.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 881
    functionDepth: 2
    functionLinenumber: 881
    functionLinenumberEnd: 887
    functionName: ripng_if_new_hook
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - ripng_interface_sync
    - ri_new
    linkageType: ''
    returnType: int
    signature: int ripng_if_new_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ripngd/ripng_interface.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 894
    functionName: ripng_if_delete_hook
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: int
    signature: int ripng_if_delete_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/ripngd/ripng_interface.c:900,1
    - Dst: hook_register_prio
      Src: /src/frr/ripngd/ripng_interface.c:901,1
    - Dst: if_cmd_init_default
      Src: /src/frr/ripngd/ripng_interface.c:904,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/ripngd/ripng_interface.c:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 907
    functionName: ripng_if_init
    functionSourceFile: /src/frr/ripngd/ripng_interface.c
    functionUses: 1
    functionsReached:
    - hook_register_prio
    - if_cmd_init_default
    - if_zapi_callbacks
    linkageType: ''
    returnType: void
    signature: void ripng_if_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:76,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:78,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:79,1
    - Dst: strmatch
      Src: /src/frr/ripngd/ripng_cli.c:80,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:81,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: cli_show_router_ripng
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_router_ripng(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripngd/ripng_cli.c:123,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:126,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 129
    functionName: cli_show_ripng_allow_ecmp
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_allow_ecmp(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t       bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripngd/ripng_cli.c:151,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:152,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 155
    functionName: cli_show_ripng_default_information_originate
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_default_information_originate(struct vty *vty,\n\t\t\t\t\t\t
      \ const struct lyd_node *dnode,\n\t\t\t\t\t\t  bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:188,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: cli_show_ripng_default_metric
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_default_metric(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:212,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: cli_show_ripng_network_prefix
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_network_prefix(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:235,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: cli_show_ripng_network_interface
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_network_interface(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:270,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:272,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:273,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:274,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:275,1
    - Dst: strmatch
      Src: /src/frr/ripngd/ripng_cli.c:276,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:277,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 279
    functionName: cli_show_ripng_offset_list
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_offset_list(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:301,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 303
    functionName: cli_show_ripng_passive_interface
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_passive_interface(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:337,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:338,1
    - Dst: yang_dnode_exists
      Src: /src/frr/ripngd/ripng_cli.c:339,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:340,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:341,1
    - Dst: yang_dnode_exists
      Src: /src/frr/ripngd/ripng_cli.c:342,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:343,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:344,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 346
    functionName: cli_show_ripng_redistribute
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - yang_dnode_exists
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_redistribute(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:367,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 368
    functionName: cli_show_ripng_route
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_route(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:391,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 393
    functionName: cli_show_ripng_aggregate_address
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_aggregate_address(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:437,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:438,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:439,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_cli.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 441
    functionName: cli_show_ripng_timers
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ripng_timers(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_cli.c:475,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:478,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:481,1
    - Dst: vty_out
      Src: /src/frr/ripngd/ripng_cli.c:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 487
    functionName: cli_show_ipv6_ripng_split_horizon
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ipv6_ripng_split_horizon(struct vty *vty,\n\t\t\t\t
      \      const struct lyd_node *dnode,\n\t\t\t\t       bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:565,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:566,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:568,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:569,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:571,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:572,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:573,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:574,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:575,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:576,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:577,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:578,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:579,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:580,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:581,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:582,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:583,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:584,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:586,1
    - Dst: install_element
      Src: /src/frr/ripngd/ripng_cli.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 589
    functionName: ripng_cli_init
    functionSourceFile: /src/frr/ripngd/ripng_cli.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ripng_cli_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - T
    - ','
    - F
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 299
    functionName: RIPNG_TIMER_ON
    functionSourceFile: /src/frr/ripngd/ripngd.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RIPNG_TIMER_ON(T, F, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/ripngd/ripng_main.c:60,1
    - Dst: vty_read_config
      Src: /src/frr/ripngd/ripng_main.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: sighup
    functionSourceFile: /src/frr/ripngd/ripng_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vty_read_config
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/ripngd/ripng_main.c:69,1
    - Dst: ripng_vrf_terminate
      Src: /src/frr/ripngd/ripng_main.c:71,1
    - Dst: if_rmap_terminate
      Src: /src/frr/ripngd/ripng_main.c:72,1
    - Dst: ripng_zebra_stop
      Src: /src/frr/ripngd/ripng_main.c:73,1
    - Dst: frr_fini
      Src: /src/frr/ripngd/ripng_main.c:74,1
    - Dst: exit
      Src: /src/frr/ripngd/ripng_main.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: sigint
    functionSourceFile: /src/frr/ripngd/ripng_main.c
    functionUses: 0
    functionsReached:
    - exit
    - if_rmap_terminate
    - frr_fini
    - ripng_vrf_terminate
    - ripng_zebra_stop
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/ripngd/ripng_main.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: sigusr1
    functionSourceFile: /src/frr/ripngd/ripng_main.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/ripngd/ripng_main.c:129,1
    - Dst: frr_opt_add
      Src: /src/frr/ripngd/ripng_main.c:131,1
    - Dst: frr_getopt
      Src: /src/frr/ripngd/ripng_main.c:136,1
    - Dst: strchr
      Src: /src/frr/ripngd/ripng_main.c:138,1
    - Dst: fprintf
      Src: /src/frr/ripngd/ripng_main.c:139,1
    - Dst: frr_help_exit
      Src: /src/frr/ripngd/ripng_main.c:152,1
    - Dst: frr_init
      Src: /src/frr/ripngd/ripng_main.c:156,1
    - Dst: ripng_vrf_init
      Src: /src/frr/ripngd/ripng_main.c:159,1
    - Dst: ripng_init
      Src: /src/frr/ripngd/ripng_main.c:162,1
    - Dst: ripng_cli_init
      Src: /src/frr/ripngd/ripng_main.c:163,1
    - Dst: zebra_init
      Src: /src/frr/ripngd/ripng_main.c:164,1
    - Dst: frr_config_fork
      Src: /src/frr/ripngd/ripng_main.c:166,1
    - Dst: frr_run
      Src: /src/frr/ripngd/ripng_main.c:167,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 171
    functionName: main
    functionSourceFile: /src/frr/ripngd/ripng_main.c
    functionUses: 11
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - zebra_init
    - ripng_cli_init
    - frr_getopt
    - frr_init
    - frr_config_fork
    - fprintf
    - strchr
    - frr_run
    - ripng_vrf_init
    - ripng_init
    - frr_opt_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/ripngd/ripng_nb_state.c:35,1
    - Dst: listnextnode
      Src: /src/frr/ripngd/ripng_nb_state.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 40
    functionName: ripngd_instance_state_neighbors_neighbor_get_next
    functionSourceFile: /src/frr/ripngd/ripng_nb_state.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - listhead
    linkageType: ''
    returnType: void
    signature: "void *ripngd_instance_state_neighbors_neighbor_get_next(\n\tstruct
      nb_cb_get_next_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/ripngd/ripng_nb_state.c:46,1
    - Dst: inet_ntop
      Src: /src/frr/ripngd/ripng_nb_state.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: ripngd_instance_state_neighbors_neighbor_get_keys
    functionSourceFile: /src/frr/ripngd/ripng_nb_state.c
    functionUses: 0
    functionsReached:
    - listgetdata
    - inet_ntop
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_state_neighbors_neighbor_get_keys(\n\tstruct nb_cb_get_keys_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_str2ipv6
      Src: /src/frr/ripngd/ripng_nb_state.c:63,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ripngd/ripng_nb_state.c:65,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ripngd/ripng_nb_state.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 220
    functionName: ripngd_instance_state_neighbors_neighbor_lookup_entry
    functionSourceFile: /src/frr/ripngd/ripng_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_str2ipv6
    - ALL_LIST_ELEMENTS_RO
    - IPV6_ADDR_SAME
    linkageType: ''
    returnType: void
    signature: "void *ripngd_instance_state_neighbors_neighbor_lookup_entry(\n\tstruct
      nb_cb_lookup_entry_args *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:38,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/ripngd/ripng_nb_config.c:39,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ripngd/ripng_nb_config.c:49,1
    - Dst: ripng_make_socket
      Src: /src/frr/ripngd/ripng_nb_config.c:52,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ripngd/ripng_nb_config.c:58,1
    - Dst: close
      Src: /src/frr/ripngd/ripng_nb_config.c:62,1
    - Dst: vrf_is_enabled
      Src: /src/frr/ripngd/ripng_nb_config.c:65,1
    - Dst: ripng_create
      Src: /src/frr/ripngd/ripng_nb_config.c:70,1
    - Dst: nb_running_set_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:71,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 76
    functionName: ripngd_instance_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - vrf_lookup_by_name
    - close
    - vrf_is_enabled
    - yang_dnode_get_string
    - ripng_make_socket
    - ripng_create
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:85,1
    - Dst: ripng_clean
      Src: /src/frr/ripngd/ripng_nb_config.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: ripngd_instance_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - ripng_clean
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/ripngd/ripng_nb_config.c:96,1
    - Dst: RB_NEXT
      Src: /src/frr/ripngd/ripng_nb_config.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: ripngd_instance_get_next
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    - RB_NEXT
    linkageType: ''
    returnType: void
    signature: void *ripngd_instance_get_next(struct nb_cb_get_next_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ripngd/ripng_nb_config.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 112
    functionName: ripngd_instance_get_keys
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ripng_lookup_by_vrf_name
      Src: /src/frr/ripngd/ripng_nb_config.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: ripngd_instance_lookup_entry
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - ripng_lookup_by_vrf_name
    linkageType: ''
    returnType: void
    signature: void *ripngd_instance_lookup_entry(struct nb_cb_lookup_entry_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:131,1
    - Dst: MIN
      Src: /src/frr/ripngd/ripng_nb_config.c:133,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripngd/ripng_nb_config.c:133,1
    - Dst: ripng_ecmp_disable
      Src: /src/frr/ripngd/ripng_nb_config.c:135,1
    - Dst: ripng_ecmp_change
      Src: /src/frr/ripngd/ripng_nb_config.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 142
    functionName: ripngd_instance_allow_ecmp_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - MIN
    - yang_dnode_get_uint8
    - ripng_ecmp_change
    - nb_running_get_entry
    - ripng_ecmp_disable
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_allow_ecmp_modify(struct nb_cb_modify_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:157,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/ripngd/ripng_nb_config.c:158,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/ripngd/ripng_nb_config.c:160,1
    - Dst: ripng_redistribute_add
      Src: /src/frr/ripngd/ripng_nb_config.c:162,1
    - Dst: ripng_redistribute_delete
      Src: /src/frr/ripngd/ripng_nb_config.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 147
    functionDepth: 5
    functionLinenumber: 147
    functionLinenumberEnd: 170
    functionName: ripngd_instance_default_information_originate_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - ripng_redistribute_delete
    - nb_running_get_entry
    - ripng_redistribute_add
    - str2prefix_ipv6
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_default_information_originate_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:182,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripngd/ripng_nb_config.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 186
    functionName: ripngd_instance_default_metric_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_default_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:199,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/ripngd/ripng_nb_config.c:200,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_nb_config.c:201,1
    - Dst: ripng_enable_network_add
      Src: /src/frr/ripngd/ripng_nb_config.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 204
    functionName: ripngd_instance_network_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - yang_dnode_get_ipv6p
    - ripng_enable_network_add
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_network_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:214,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/ripngd/ripng_nb_config.c:215,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_nb_config.c:216,1
    - Dst: ripng_enable_network_delete
      Src: /src/frr/ripngd/ripng_nb_config.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 219
    functionName: ripngd_instance_network_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - yang_dnode_get_ipv6p
    - nb_running_get_entry
    - ripng_enable_network_delete
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_network_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:232,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:233,1
    - Dst: ripng_enable_if_add
      Src: /src/frr/ripngd/ripng_nb_config.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 236
    functionName: ripngd_instance_interface_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - ripng_enable_if_add
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_interface_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:246,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:247,1
    - Dst: ripng_enable_if_delete
      Src: /src/frr/ripngd/ripng_nb_config.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 250
    functionName: ripngd_instance_interface_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - ripng_enable_if_delete
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_interface_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:264,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:265,1
    - Dst: ripng_offset_list_new
      Src: /src/frr/ripngd/ripng_nb_config.c:267,1
    - Dst: nb_running_set_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 271
    functionName: ripngd_instance_offset_list_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - ripng_offset_list_new
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_offset_list_create(struct nb_cb_create_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:281,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:283,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_nb_config.c:285,1
    - Dst: ripng_offset_list_del
      Src: /src/frr/ripngd/ripng_nb_config.c:290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 293
    functionName: ripngd_instance_offset_list_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - free
    - nb_running_unset_entry
    - ripng_offset_list_del
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_offset_list_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:308,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:309,1
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:311,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_nb_config.c:313,1
    - Dst: strdup
      Src: /src/frr/ripngd/ripng_nb_config.c:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 317
    functionName: ripngd_instance_offset_list_access_list_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - free
    - nb_running_get_entry
    - strdup
    - yang_dnode_get_string
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_offset_list_access_list_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:331,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripngd/ripng_nb_config.c:332,1
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 338
    functionName: ripngd_instance_offset_list_metric_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_offset_list_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:351,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:352,1
    - Dst: ripng_passive_interface_set
      Src: /src/frr/ripngd/ripng_nb_config.c:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 343
    functionDepth: 5
    functionLinenumber: 343
    functionLinenumberEnd: 355
    functionName: ripngd_instance_passive_interface_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - ripng_passive_interface_set
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_passive_interface_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:365,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:366,1
    - Dst: ripng_passive_interface_unset
      Src: /src/frr/ripngd/ripng_nb_config.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 5
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: ripngd_instance_passive_interface_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - ripng_passive_interface_unset
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_passive_interface_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:382,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 388
    functionName: ripngd_instance_redistribute_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_redistribute_create(struct nb_cb_create_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:398,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:399,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_nb_config.c:403,1
    - Dst: ripng_redistribute_conf_delete
      Src: /src/frr/ripngd/ripng_nb_config.c:411,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 390
    functionDepth: 2
    functionLinenumber: 390
    functionLinenumberEnd: 414
    functionName: ripngd_instance_redistribute_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - ripng_redistribute_conf_delete
    - free
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_redistribute_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:422,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:423,1
    - Dst: ripng_redistribute_conf_update
      Src: /src/frr/ripngd/ripng_nb_config.c:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 427
    functionName: ripngd_instance_redistribute_apply_finish
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - ripng_redistribute_conf_update
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void ripngd_instance_redistribute_apply_finish(\n\tstruct nb_cb_apply_finish_args
      *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:442,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:443,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ripngd/ripng_nb_config.c:444,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_nb_config.c:447,1
    - Dst: strdup
      Src: /src/frr/ripngd/ripng_nb_config.c:448,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ripngd/ripng_nb_config.c:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 452
    functionName: ripngd_instance_redistribute_route_map_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - free
    - nb_running_get_entry
    - strdup
    - route_map_lookup_by_name
    - yang_dnode_get_string
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_redistribute_route_map_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:463,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:464,1
    - Dst: free
      Src: /src/frr/ripngd/ripng_nb_config.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 471
    functionName: ripngd_instance_redistribute_route_map_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - free
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_redistribute_route_map_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:485,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:486,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/ripngd/ripng_nb_config.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 493
    functionName: ripngd_instance_redistribute_metric_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_redistribute_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:503,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 510
    functionName: ripngd_instance_redistribute_metric_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_redistribute_metric_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 520
    functionName: ripngd_instance_if_route_maps_if_route_map_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_if_route_maps_if_route_map_create(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:536,1
    - Dst: if_rmap_yang_destroy_cb
      Src: /src/frr/ripngd/ripng_nb_config.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 540
    functionName: ripngd_instance_if_route_maps_if_route_map_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - if_rmap_yang_destroy_cb
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_if_route_maps_if_route_map_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:545,1
    - Dst: if_rmap_yang_modify_cb
      Src: /src/frr/ripngd/ripng_nb_config.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnode
    - type
    - delete
    argTypes:
    - struct lyd_node*
    - enum if_rmap_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 548
    functionName: if_route_map_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 4
    functionsReached:
    - if_rmap_yang_modify_cb
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void if_route_map_modify(const struct lyd_node *dnode,\n\t\t\t\tenum
      if_rmap_type type, bool delete)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripngd/ripng_nb_config.c:558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 561
    functionName: ripngd_instance_if_route_maps_if_route_map_in_route_map_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_if_route_maps_if_route_map_in_route_map_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripngd/ripng_nb_config.c:569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 572
    functionName: ripngd_instance_if_route_maps_if_route_map_in_route_map_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_if_route_maps_if_route_map_in_route_map_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripngd/ripng_nb_config.c:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 577
    functionDepth: 0
    functionLinenumber: 577
    functionLinenumberEnd: 586
    functionName: ripngd_instance_if_route_maps_if_route_map_out_route_map_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_if_route_maps_if_route_map_out_route_map_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_route_map_modify
      Src: /src/frr/ripngd/ripng_nb_config.c:594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 597
    functionName: ripngd_instance_if_route_maps_if_route_map_out_route_map_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - if_route_map_modify
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_if_route_maps_if_route_map_out_route_map_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:610,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/ripngd/ripng_nb_config.c:611,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_nb_config.c:612,1
    - Dst: ripng_redistribute_add
      Src: /src/frr/ripngd/ripng_nb_config.c:614,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 602
    functionDepth: 5
    functionLinenumber: 602
    functionLinenumberEnd: 618
    functionName: ripngd_instance_static_route_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - yang_dnode_get_ipv6p
    - nb_running_get_entry
    - ripng_redistribute_add
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_static_route_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:628,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/ripngd/ripng_nb_config.c:629,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_nb_config.c:630,1
    - Dst: ripng_redistribute_delete
      Src: /src/frr/ripngd/ripng_nb_config.c:632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 620
    functionDepth: 3
    functionLinenumber: 620
    functionLinenumberEnd: 636
    functionName: ripngd_instance_static_route_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - yang_dnode_get_ipv6p
    - ripng_redistribute_delete
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_static_route_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:649,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/ripngd/ripng_nb_config.c:650,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_nb_config.c:651,1
    - Dst: ripng_aggregate_add
      Src: /src/frr/ripngd/ripng_nb_config.c:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 656
    functionName: ripngd_instance_aggregate_address_create
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - ripng_aggregate_add
    - yang_dnode_get_ipv6p
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_aggregate_address_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:666,1
    - Dst: yang_dnode_get_ipv6p
      Src: /src/frr/ripngd/ripng_nb_config.c:667,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/ripngd/ripng_nb_config.c:668,1
    - Dst: ripng_aggregate_delete
      Src: /src/frr/ripngd/ripng_nb_config.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 673
    functionName: ripngd_instance_aggregate_address_destroy
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - yang_dnode_get_ipv6p
    - nb_running_get_entry
    - ripng_aggregate_delete
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_aggregate_address_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:682,1
    - Dst: ripng_event
      Src: /src/frr/ripngd/ripng_nb_config.c:685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 678
    functionDepth: 3
    functionLinenumber: 678
    functionLinenumberEnd: 686
    functionName: ripngd_instance_timers_apply_finish
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - ripng_event
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: void ripngd_instance_timers_apply_finish(struct nb_cb_apply_finish_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:698,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/ripngd/ripng_nb_config.c:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 702
    functionName: ripngd_instance_timers_flush_interval_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int ripngd_instance_timers_flush_interval_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:715,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/ripngd/ripng_nb_config.c:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 719
    functionName: ripngd_instance_timers_holddown_interval_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_timers_holddown_interval_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:732,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/ripngd/ripng_nb_config.c:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 736
    functionName: ripngd_instance_timers_update_interval_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int ripngd_instance_timers_update_interval_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ripngd/ripng_nb_config.c:749,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/ripngd/ripng_nb_config.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 754
    functionName: lib_interface_ripng_split_horizon_modify
    functionSourceFile: /src/frr/ripngd/ripng_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_ripng_split_horizon_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/frr/mgmtd/mgmt_history.h:73,1
    - Dst: strftime
      Src: /src/frr/mgmtd/mgmt_history.h:76,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_history.h:77,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_history.h:78,1
    - Dst: strftime
      Src: /src/frr/mgmtd/mgmt_history.h:80,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_history.h:81,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_history.h:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - tv
    - long_fmt
    - buffer
    - sz
    argTypes:
    - struct timespec*
    - bool
    - char*
    - size_t
    assertStmts:
    - condition: (n < sz)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/frr/mgmtd/mgmt_history.h
    - condition: (n < sz)
      pos:
        line_end: 80
        line_start: 80
        source_file: /src/frr/mgmtd/mgmt_history.h
    constantsTouched: []
    func_position:
      end: 86
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 86
    functionName: mgmt_time_to_string
    functionSourceFile: /src/frr/mgmtd/mgmt_history.h
    functionUses: 0
    functionsReached:
    - snprintf
    - localtime_r
    - assert
    - strftime
    linkageType: ''
    returnType: char
    signature: 'char *

      mgmt_time_to_string(struct timespec *tv, bool long_fmt, char *buffer, size_t
      sz)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_time_to_string
      Src: /src/frr/mgmtd/mgmt_history.h:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tv
    - buf
    - sz
    argTypes:
    - struct timeval*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: mgmt_realtime_to_string
    functionSourceFile: /src/frr/mgmtd/mgmt_history.h
    functionUses: 0
    functionsReached:
    - mgmt_time_to_string
    linkageType: ''
    returnType: char
    signature: "char *mgmt_realtime_to_string(struct timeval *tv, char *buf,\n\t\t\t\t\t\t
      \ size_t sz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: MGMT_DEBUG_BE_CHECK
    functionSourceFile: /src/frr/mgmtd/mgmt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_DEBUG_BE_CHECK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: MGMT_DEBUG_DS_CHECK
    functionSourceFile: /src/frr/mgmtd/mgmt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_DEBUG_DS_CHECK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: MGMT_DEBUG_FE_CHECK
    functionSourceFile: /src/frr/mgmtd/mgmt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_DEBUG_FE_CHECK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: MGMT_DEBUG_TXN_CHECK
    functionSourceFile: /src/frr/mgmtd/mgmt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_DEBUG_TXN_CHECK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: timeval_elapsed
    functionSourceFile: /src/frr/mgmtd/mgmt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long timeval_elapsed(struct timeval a, struct timeval b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt.h:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - str
    - sep
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: mgmt_remove_trailing_separator
    functionSourceFile: /src/frr/mgmtd/mgmt.h
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: void mgmt_remove_trailing_separator(char *str, char sep)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: FOREACH_MGMTD_DS_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_MGMTD_DS_ID(id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - id
    argTypes:
    - Mgmtd__DatastoreId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: mgmt_ds_id2name
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mgmt_ds_id2name(Mgmtd__DatastoreId id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_ds.h:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: mgmt_ds_name2id
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.h
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: Mgmtd__DatastoreId
    signature: Mgmtd__DatastoreId mgmt_ds_name2id(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_ds.h:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: FOREACH_MGMTD_DS_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.h
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_DS_ID (id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_ds.h:89,1
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_ds.h:91,1
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_ds.h:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ds_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: mgmt_get_ds_id_by_name
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.h
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: Mgmtd__DatastoreId
    signature: Mgmtd__DatastoreId mgmt_get_ds_id_by_name(const char *ds_name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_ds.h:114,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - xpath
    - xpath_len
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: mgmt_xpath_append_trail_wildcard
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.h
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: "void mgmt_xpath_append_trail_wildcard(char *xpath,\n\t\t\t\t\t\t    size_t
      *xpath_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_ds.h:146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - xpath
    - xpath_len
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 153
    functionName: mgmt_xpath_remove_trail_wildcard
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.h
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: "void mgmt_xpath_remove_trail_wildcard(char *xpath,\n\t\t\t\t\t\t    size_t
      *xpath_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - master
    - buffer_size
    argTypes:
    - struct event_loop*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: mgmt_master_init
    functionSourceFile: /src/frr/mgmtd/mgmt.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void mgmt_master_init(struct event_loop *master, const int buffer_size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_ds_init
      Src: /src/frr/mgmtd/mgmt.c:44,1
    - Dst: mgmt_history_init
      Src: /src/frr/mgmtd/mgmt.c:47,1
    - Dst: mgmt_txn_init
      Src: /src/frr/mgmtd/mgmt.c:50,1
    - Dst: mgmt_fe_adapter_init
      Src: /src/frr/mgmtd/mgmt.c:53,1
    - Dst: vty_init_mgmt_fe
      Src: /src/frr/mgmtd/mgmt.c:56,1
    - Dst: mgmt_vty_init
      Src: /src/frr/mgmtd/mgmt.c:59,1
    - Dst: mgmt_be_adapter_init
      Src: /src/frr/mgmtd/mgmt.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 68
    functionName: mgmt_init
    functionSourceFile: /src/frr/mgmtd/mgmt.c
    functionUses: 0
    functionsReached:
    - mgmt_be_adapter_init
    - vty_init_mgmt_fe
    - mgmt_vty_init
    - mgmt_txn_init
    - mgmt_ds_init
    - mgmt_history_init
    - mgmt_fe_adapter_init
    linkageType: ''
    returnType: void
    signature: void mgmt_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_adapter_destroy
      Src: /src/frr/mgmtd/mgmt.c:72,1
    - Dst: mgmt_be_adapter_destroy
      Src: /src/frr/mgmtd/mgmt.c:73,1
    - Dst: mgmt_txn_destroy
      Src: /src/frr/mgmtd/mgmt.c:74,1
    - Dst: mgmt_history_destroy
      Src: /src/frr/mgmtd/mgmt.c:75,1
    - Dst: mgmt_ds_destroy
      Src: /src/frr/mgmtd/mgmt.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 77
    functionName: mgmt_terminate
    functionSourceFile: /src/frr/mgmtd/mgmt.c
    functionUses: 0
    functionsReached:
    - mgmt_history_destroy
    - mgmt_ds_destroy
    - mgmt_be_adapter_destroy
    - mgmt_fe_adapter_destroy
    - mgmt_txn_destroy
    linkageType: ''
    returnType: void
    signature: void mgmt_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: MGMTD_DS_DBG
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_DS_DBG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: MGMTD_DS_ERR
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_DS_ERR(fmt, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/mgmtd/mgmt_ds.c:60,1
    - Dst: lyd_print_all
      Src: /src/frr/mgmtd/mgmt_ds.c:71,1
    - Dst: lyd_print_tree
      Src: /src/frr/mgmtd/mgmt_ds.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - ds_ctx
    - base_xpath
    - format
    - out
    argTypes:
    - struct mgmt_ds_ctx*
    - char*
    - LYD_FORMAT
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 76
    functionName: mgmt_ds_dump_in_memory
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - lyd_print_tree
    - lyd_print_all
    linkageType: ''
    returnType: int
    signature: "int mgmt_ds_dump_in_memory(struct mgmt_ds_ctx *ds_ctx,\n\t\t\t\t  const
      char *base_xpath, LYD_FORMAT format,\n\t\t\t\t  struct ly_out *out)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:84,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_ds.c:84,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_ds.c:85,1
    - Dst: nb_config_replace
      Src: /src/frr/mgmtd/mgmt_ds.c:88,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:90,1
    - Dst: yang_dnode_free
      Src: /src/frr/mgmtd/mgmt_ds.c:92,1
    - Dst: yang_dnode_dup
      Src: /src/frr/mgmtd/mgmt_ds.c:93,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:100,1
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/mgmtd/mgmt_ds.c:101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - struct mgmt_ds_ctx*
    - struct mgmt_ds_ctx*
    assertStmts:
    - condition: (!src->config_ds && !dst->config_ds)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 105
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 105
    functionName: mgmt_ds_replace_dst_with_src_ds
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - nb_config_diff_del_changes
    - yang_dnode_dup
    - mgmt_ds_id2name
    - yang_dnode_free
    - MGMTD_DS_DBG
    - nb_config_replace
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_ds_replace_dst_with_src_ds(struct mgmt_ds_ctx *src,\n\t\t\t\t\t
      \  struct mgmt_ds_ctx *dst)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:115,1
    - Dst: nb_config_merge
      Src: /src/frr/mgmtd/mgmt_ds.c:117,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:120,1
    - Dst: lyd_merge_siblings
      Src: /src/frr/mgmtd/mgmt_ds.c:121,1
    - Dst: MGMTD_DS_ERR
      Src: /src/frr/mgmtd/mgmt_ds.c:125,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:133,1
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/mgmtd/mgmt_ds.c:134,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - struct mgmt_ds_ctx*
    - struct mgmt_ds_ctx*
    assertStmts:
    - condition: (!src->config_ds && !dst->config_ds)
      pos:
        line_end: 119
        line_start: 119
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 138
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 138
    functionName: mgmt_ds_merge_src_with_dst_ds
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - nb_config_diff_del_changes
    - lyd_merge_siblings
    - MGMTD_DS_DBG
    - nb_config_merge
    - MGMTD_DS_ERR
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_ds_merge_src_with_dst_ds(struct mgmt_ds_ctx *src,\n\t\t\t\t\t
      struct mgmt_ds_ctx *dst)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parse_data_path
      Src: /src/frr/mgmtd/mgmt_ds.c:146,1
    - Dst: yang_dnode_free
      Src: /src/frr/mgmtd/mgmt_ds.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - filepath
    - dnode
    argTypes:
    - char*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 156
    functionName: mgmt_ds_load_cfg_from_file
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - lyd_parse_data_path
    - yang_dnode_free
    linkageType: ''
    returnType: int
    signature: "int mgmt_ds_load_cfg_from_file(const char *filepath,\n\t\t\t\t      struct
      lyd_node **dnode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_free
      Src: /src/frr/mgmtd/mgmt_ds.c:163,1
    - Dst: yang_dnode_new
      Src: /src/frr/mgmtd/mgmt_ds.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: mgmt_ds_reset_candidate
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - yang_dnode_new
    - yang_dnode_free
    linkageType: ''
    returnType: void
    signature: void mgmt_ds_reset_candidate(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:173,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:177,1
    - Dst: nb_config_dup
      Src: /src/frr/mgmtd/mgmt_ds.c:183,1
    - Dst: yang_dnode_new
      Src: /src/frr/mgmtd/mgmt_ds.c:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - mm
    argTypes:
    - struct mgmt_master*
    assertStmts:
    - condition: '(!"MGMTD: Call ds_init only once!")'
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/frr/mgmtd/mgmt_ds.c
    - condition: '(!"MGMTD: Call ds_init after frr_init only!")'
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 203
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 203
    functionName: mgmt_ds_init
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 1
    functionsReached:
    - nb_config_dup
    - yang_dnode_new
    - assert
    linkageType: ''
    returnType: int
    signature: int mgmt_ds_init(struct mgmt_master *mm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_free
      Src: /src/frr/mgmtd/mgmt_ds.c:207,1
    - Dst: yang_dnode_free
      Src: /src/frr/mgmtd/mgmt_ds.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: mgmt_ds_destroy
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 1
    functionsReached:
    - yang_dnode_free
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void mgmt_ds_destroy(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - mm
    - ds_id
    argTypes:
    - struct mgmt_master*
    - Mgmtd__DatastoreId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 231
    functionName: mgmt_ds_get_ctx_by_id
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mgmt_ds_ctx
    signature: "struct mgmt_ds_ctx *mgmt_ds_get_ctx_by_id(struct mgmt_master *mm,\n\t\t\t\t\t
      \ Mgmtd__DatastoreId ds_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ds_ctx
    argTypes:
    - struct mgmt_ds_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 239
    functionName: mgmt_ds_is_config
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mgmt_ds_is_config(struct mgmt_ds_ctx *ds_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ds_ctx
    - session_id
    argTypes:
    - struct mgmt_ds_ctx*
    - uint64_t
    assertStmts:
    - condition: (ds_ctx)
      pos:
        line_end: 242
        line_start: 242
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: mgmt_ds_is_locked
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool mgmt_ds_is_locked(struct mgmt_ds_ctx *ds_ctx, uint64_t session_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ds_ctx
    - session_id
    argTypes:
    - struct mgmt_ds_ctx*
    - uint64_t
    assertStmts:
    - condition: (ds_ctx)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 257
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 257
    functionName: mgmt_ds_lock
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int mgmt_ds_lock(struct mgmt_ds_ctx *ds_ctx, uint64_t session_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:261,1
    - Dst: zlog_warn
      Src: /src/frr/mgmtd/mgmt_ds.c:263,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_ds.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ds_ctx
    argTypes:
    - struct mgmt_ds_ctx*
    assertStmts:
    - condition: (ds_ctx)
      pos:
        line_end: 260
        line_start: 260
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 268
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 268
    functionName: mgmt_ds_unlock
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_id2name
    - zlog_warn
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_ds_unlock(struct mgmt_ds_ctx *ds_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_ds_replace_dst_with_src_ds
      Src: /src/frr/mgmtd/mgmt_ds.c:273,1
    - Dst: mgmt_history_new_record
      Src: /src/frr/mgmtd/mgmt_ds.c:277,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - src_ds_ctx
    - dst_ds_ctx
    - updt_cmt_rec
    argTypes:
    - struct mgmt_ds_ctx*
    - struct mgmt_ds_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: mgmt_ds_copy_dss
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_replace_dst_with_src_ds
    - mgmt_history_new_record
    linkageType: ''
    returnType: int
    signature: "int mgmt_ds_copy_dss(struct mgmt_ds_ctx *src_ds_ctx,\n\t\t     struct
      mgmt_ds_ctx *dst_ds_ctx, bool updt_cmt_rec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_out_new_filepath
      Src: /src/frr/mgmtd/mgmt_ds.c:287,1
    - Dst: mgmt_ds_dump_in_memory
      Src: /src/frr/mgmtd/mgmt_ds.c:288,1
    - Dst: ly_out_free
      Src: /src/frr/mgmtd/mgmt_ds.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - file_name
    - ds_ctx
    argTypes:
    - char*
    - struct mgmt_ds_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 293
    functionName: mgmt_ds_dump_ds_to_file
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_dump_in_memory
    - ly_out_new_filepath
    - ly_out_free
    linkageType: ''
    returnType: int
    signature: int mgmt_ds_dump_ds_to_file(char *file_name, struct mgmt_ds_ctx *ds_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ds_ctx
    argTypes:
    - struct mgmt_ds_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 301
    functionName: mgmt_ds_get_nb_config
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct nb_config
    signature: struct nb_config *mgmt_ds_get_nb_config(struct mgmt_ds_ctx *ds_ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:316,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:318,1
    - Dst: yang_dnode_get
      Src: /src/frr/mgmtd/mgmt_ds.c:325,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:329,1
    - Dst: lysc_path
      Src: /src/frr/mgmtd/mgmt_ds.c:330,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:350,1
    - Dst: lyd_path
      Src: /src/frr/mgmtd/mgmt_ds.c:352,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:354,1
    - Dst: mgmt_walk_ds_nodes
      Src: /src/frr/mgmtd/mgmt_ds.c:356,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:362,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - root
    - base_xpath
    - base_dnode
    - ctx
    argTypes:
    - struct nb_config*
    - char*
    - struct lyd_node*
    - void*
    assertStmts:
    - condition: (mgmt_ds_node_iter_fn)
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/frr/mgmtd/mgmt_ds.c
    - condition: (dnode->schema && dnode->schema->priv)
      pos:
        line_end: 349
        line_start: 349
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 365
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 365
    functionName: mgmt_walk_ds_nodes
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 1
    functionsReached:
    - lysc_path
    - yang_dnode_get
    - mgmt_walk_ds_nodes
    - MGMTD_DS_DBG
    - lyd_path
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_walk_ds_nodes(\n\tstruct nb_config *root, const char *base_xpath,\n\tstruct
      lyd_node *base_dnode,\n\tvoid (*mgmt_ds_node_iter_fn)(const char *xpath, struct
      lyd_node *node,\n\t\t\t\t     struct nb_node *nb_node, void *ctx),\n\tvoid *ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_ds.c:350,1
    - Dst: lyd_path
      Src: /src/frr/mgmtd/mgmt_ds.c:352,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:354,1
    - Dst: mgmt_walk_ds_nodes
      Src: /src/frr/mgmtd/mgmt_ds.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (dnode->schema && dnode->schema->priv)
      pos:
        line_end: 349
        line_start: 349
        source_file: /src/frr/mgmtd/mgmt_ds.c
    constantsTouched: []
    func_position:
      end: 360
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 360
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - MGMTD_DS_DBG
    - lyd_path
    - mgmt_walk_ds_nodes
    - assert
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (lyd_child(base_dnode), dnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/mgmtd/mgmt_ds.c:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ds_ctx
    - xpath
    argTypes:
    - struct mgmt_ds_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 376
    functionName: mgmt_ds_find_data_node_by_xpath
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    linkageType: ''
    returnType: struct lyd_node
    signature: "struct lyd_node *mgmt_ds_find_data_node_by_xpath(struct mgmt_ds_ctx
      *ds_ctx,\n\t\t\t\t\t\t const char *xpath)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_find
      Src: /src/frr/mgmtd/mgmt_ds.c:387,1
    - Dst: yang_dnode_get
      Src: /src/frr/mgmtd/mgmt_ds.c:389,1
    - Dst: struct nb_node*::dep_cbs::get_dependant_xpath
      Src: /src/frr/mgmtd/mgmt_ds.c:402,1
    - Dst: yang_dnode_get
      Src: /src/frr/mgmtd/mgmt_ds.c:404,1
    - Dst: lyd_free_tree
      Src: /src/frr/mgmtd/mgmt_ds.c:409,1
    - Dst: lyd_free_tree
      Src: /src/frr/mgmtd/mgmt_ds.c:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ds_ctx
    - xpath
    argTypes:
    - struct mgmt_ds_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 414
    functionName: mgmt_ds_delete_data_nodes
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - lyd_free_tree
    - yang_dnode_get
    - nb_node_find
    - struct nb_node*::dep_cbs::get_dependant_xpath
    linkageType: ''
    returnType: int
    signature: int mgmt_ds_delete_data_nodes(struct mgmt_ds_ctx *ds_ctx, const char
      *xpath)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_ds_load_cfg_from_file
      Src: /src/frr/mgmtd/mgmt_ds.c:425,1
    - Dst: MGMTD_DS_ERR
      Src: /src/frr/mgmtd/mgmt_ds.c:426,1
    - Dst: nb_config_new
      Src: /src/frr/mgmtd/mgmt_ds.c:431,1
    - Dst: mgmt_ds_merge_src_with_dst_ds
      Src: /src/frr/mgmtd/mgmt_ds.c:436,1
    - Dst: mgmt_ds_replace_dst_with_src_ds
      Src: /src/frr/mgmtd/mgmt_ds.c:438,1
    - Dst: nb_config_free
      Src: /src/frr/mgmtd/mgmt_ds.c:440,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - dst
    - file_path
    - merge
    argTypes:
    - struct mgmt_ds_ctx*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 443
    functionName: mgmt_ds_load_config_from_file
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_replace_dst_with_src_ds
    - mgmt_ds_merge_src_with_dst_ds
    - nb_config_new
    - nb_config_free
    - MGMTD_DS_ERR
    - mgmt_ds_load_cfg_from_file
    linkageType: ''
    returnType: int
    signature: "int mgmt_ds_load_config_from_file(struct mgmt_ds_ctx *dst,\n\t\t\t\t
      \ const char *file_path, bool merge)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/mgmtd/mgmt_ds.c:461,1
    - Dst: mgmt_remove_trailing_separator
      Src: /src/frr/mgmtd/mgmt_ds.c:462,1
    - Dst: MGMTD_DS_DBG
      Src: /src/frr/mgmtd/mgmt_ds.c:470,1
    - Dst: lyd_parent
      Src: /src/frr/mgmtd/mgmt_ds.c:478,1
    - Dst: mgmt_walk_ds_nodes
      Src: /src/frr/mgmtd/mgmt_ds.c:484,1
    - Dst: mgmt_walk_ds_nodes
      Src: /src/frr/mgmtd/mgmt_ds.c:488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - ds_id
    - root
    - base_xpath
    - ctx
    argTypes:
    - Mgmtd__DatastoreId
    - struct nb_config*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 492
    functionName: mgmt_ds_iter_data
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - strlcpy
    - mgmt_walk_ds_nodes
    - mgmt_remove_trailing_separator
    - MGMTD_DS_DBG
    linkageType: ''
    returnType: int
    signature: "int mgmt_ds_iter_data(Mgmtd__DatastoreId ds_id, struct nb_config *root,\n\t\t
      \     const char *base_xpath,\n\t\t      void (*mgmt_ds_node_iter_fn)(const
      char *xpath,\n\t\t\t\t\t\t   struct lyd_node *node,\n\t\t\t\t\t\t   struct nb_node
      *nb_node,\n\t\t\t\t\t\t   void *ctx),\n\t\t      void *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_walk_ds_nodes
      Src: /src/frr/mgmtd/mgmt_ds.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 483
    functionDepth: 2
    functionLinenumber: 483
    functionLinenumberEnd: 486
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - mgmt_walk_ds_nodes
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (base_dnode, node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_ds.c:502,1
    - Dst: strlcpy
      Src: /src/frr/mgmtd/mgmt_ds.c:507,1
    - Dst: mgmt_remove_trailing_separator
      Src: /src/frr/mgmtd/mgmt_ds.c:508,1
    - Dst: ly_out_new_file
      Src: /src/frr/mgmtd/mgmt_ds.c:512,1
    - Dst: ly_out_new_memory
      Src: /src/frr/mgmtd/mgmt_ds.c:514,1
    - Dst: mgmt_ds_dump_in_memory
      Src: /src/frr/mgmtd/mgmt_ds.c:516,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_ds.c:519,1
    - Dst: ly_out_free
      Src: /src/frr/mgmtd/mgmt_ds.c:521,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - vty
    - ds_ctx
    - xpath
    - f
    - format
    argTypes:
    - struct vty*
    - struct mgmt_ds_ctx*
    - char*
    - FILE*
    - LYD_FORMAT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 522
    functionName: mgmt_ds_dump_tree
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - ly_out_new_file
    - vty_out
    - strlcpy
    - mgmt_ds_dump_in_memory
    - mgmt_remove_trailing_separator
    - ly_out_free
    - ly_out_new_memory
    linkageType: ''
    returnType: void
    signature: "void mgmt_ds_dump_tree(struct vty *vty, struct mgmt_ds_ctx *ds_ctx,\n\t\t
      \      const char *xpath, FILE *f, LYD_FORMAT format)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_ds.c:527,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_ds.c:531,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_ds.c:531,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_ds.c:532,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_ds.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - ds_ctx
    argTypes:
    - struct vty*
    - struct mgmt_ds_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 535
    functionName: mgmt_ds_status_write_one
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_id2name
    - vty_out
    linkageType: ''
    returnType: void
    signature: void mgmt_ds_status_write_one(struct vty *vty, struct mgmt_ds_ctx *ds_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_ds.c:539,1
    - Dst: mgmt_ds_status_write_one
      Src: /src/frr/mgmtd/mgmt_ds.c:541,1
    - Dst: mgmt_ds_status_write_one
      Src: /src/frr/mgmtd/mgmt_ds.c:543,1
    - Dst: mgmt_ds_status_write_one
      Src: /src/frr/mgmtd/mgmt_ds.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 546
    functionName: mgmt_ds_status_write
    functionSourceFile: /src/frr/mgmtd/mgmt_ds.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_status_write_one
    - vty_out
    linkageType: ''
    returnType: void
    signature: void mgmt_ds_status_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - adapter_index
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: MGMTD_FIND_ADAPTER_BY_INDEX
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_FIND_ADAPTER_BY_INDEX(adapter_index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mm
    - ','
    - cmt_info
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: FOREACH_CMT_REC
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_CMT_REC(mm, cmt_info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: access
      Src: /src/frr/mgmtd/mgmt_history.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: file_exists
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - access
    linkageType: ''
    returnType: bool
    signature: bool file_exists(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: file_exists
      Src: /src/frr/mgmtd/mgmt_history.c:45,1
    - Dst: unlink
      Src: /src/frr/mgmtd/mgmt_history.c:47,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_history.c:48,1
    - Dst: safe_strerror
      Src: /src/frr/mgmtd/mgmt_history.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: remove_file
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - unlink
    - safe_strerror
    - file_exists
    - zlog_err
    linkageType: ''
    returnType: void
    signature: void remove_file(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/mgmtd/mgmt_history.c:58,1
    - Dst: clock_gettime
      Src: /src/frr/mgmtd/mgmt_history.c:60,1
    - Dst: localtime_r
      Src: /src/frr/mgmtd/mgmt_history.c:61,1
    - Dst: mgmt_time_to_string
      Src: /src/frr/mgmtd/mgmt_history.c:63,1
    - Dst: time_str::time_str
      Src: /src/frr/mgmtd/mgmt_history.c:63,1
    - Dst: time_str::time_str
      Src: /src/frr/mgmtd/mgmt_history.c:63,1
    - Dst: mgmt_time_to_string
      Src: /src/frr/mgmtd/mgmt_history.c:64,1
    - Dst: cmtid_str::cmtid_str
      Src: /src/frr/mgmtd/mgmt_history.c:64,1
    - Dst: cmtid_str::cmtid_str
      Src: /src/frr/mgmtd/mgmt_history.c:64,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_history.c:65,1
    - Dst: cmt_json_file::cmt_json_file
      Src: /src/frr/mgmtd/mgmt_history.c:65,1
    - Dst: cmtid_str::cmtid_str
      Src: /src/frr/mgmtd/mgmt_history.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 69
    functionName: mgmt_history_new_cmt_info
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - mgmt_time_to_string
    - snprintf
    - time_str::time_str
    - localtime_r
    - clock_gettime
    - cmtid_str::cmtid_str
    - cmt_json_file::cmt_json_file
    linkageType: ''
    returnType: struct mgmt_cmt_info_t
    signature: struct mgmt_cmt_info_t *mgmt_history_new_cmt_info(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_history_new_cmt_info
      Src: /src/frr/mgmtd/mgmt_history.c:73,1
    - Dst: mgmt_cmt_infos_count
      Src: /src/frr/mgmtd/mgmt_history.c:77,1
    - Dst: FOREACH_CMT_REC
      Src: /src/frr/mgmtd/mgmt_history.c:78,1
    - Dst: remove_file
      Src: /src/frr/mgmtd/mgmt_history.c:82,1
    - Dst: mgmt_cmt_infos_del
      Src: /src/frr/mgmtd/mgmt_history.c:83,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_history.c:84,1
    - Dst: mgmt_cmt_infos_add_head
      Src: /src/frr/mgmtd/mgmt_history.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 90
    functionName: mgmt_history_create_cmt_rec
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - mgmt_cmt_infos_add_head
    - mgmt_history_new_cmt_info
    - mgmt_cmt_infos_count
    - FOREACH_CMT_REC
    - mgmt_cmt_infos_del
    - XFREE
    - remove_file
    linkageType: ''
    returnType: struct mgmt_cmt_info_t
    signature: struct mgmt_cmt_info_t *mgmt_history_create_cmt_rec(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/mgmtd/mgmt_history.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cmtid_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: mgmt_history_find_cmt_record
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct mgmt_cmt_info_t
    signature: 'struct mgmt_cmt_info_t *

      mgmt_history_find_cmt_record(const char *cmtid_str)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/mgmtd/mgmt_history.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: FOREACH_CMT_REC
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void FOREACH_CMT_REC (mm, cmt_info)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: file_exists
      Src: /src/frr/mgmtd/mgmt_history.c:112,1
    - Dst: fopen
      Src: /src/frr/mgmtd/mgmt_history.c:115,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_history.c:117,1
    - Dst: safe_strerror
      Src: /src/frr/mgmtd/mgmt_history.c:118,1
    - Dst: fread
      Src: /src/frr/mgmtd/mgmt_history.c:122,1
    - Dst: file_exists
      Src: /src/frr/mgmtd/mgmt_history.c:124,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_history.c:125,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/mgmtd/mgmt_history.c:130,1
    - Dst: mgmt_cmt_infos_add_tail
      Src: /src/frr/mgmtd/mgmt_history.c:133,1
    - Dst: zlog_warn
      Src: /src/frr/mgmtd/mgmt_history.c:135,1
    - Dst: fclose
      Src: /src/frr/mgmtd/mgmt_history.c:138,1
    - Dst: fclose
      Src: /src/frr/mgmtd/mgmt_history.c:145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 147
    functionName: mgmt_history_read_cmt_record_index
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - fopen
    - XCALLOC::XCALLOC
    - file_exists
    - fread
    - zlog_err
    - fclose
    - zlog_warn
    - safe_strerror
    - mgmt_cmt_infos_add_tail
    linkageType: ''
    returnType: bool
    signature: bool mgmt_history_read_cmt_record_index(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/mgmtd/mgmt_history.c:157,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_history.c:159,1
    - Dst: safe_strerror
      Src: /src/frr/mgmtd/mgmt_history.c:160,1
    - Dst: memcpy
      Src: /src/frr/mgmtd/mgmt_history.c:165,1
    - Dst: fclose
      Src: /src/frr/mgmtd/mgmt_history.c:171,1
    - Dst: fwrite
      Src: /src/frr/mgmtd/mgmt_history.c:175,1
    - Dst: fclose
      Src: /src/frr/mgmtd/mgmt_history.c:176,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_history.c:178,1
    - Dst: remove_file
      Src: /src/frr/mgmtd/mgmt_history.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 183
    functionName: mgmt_history_dump_cmt_record_index
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - fopen
    - remove_file
    - fwrite
    - zlog_err
    - fclose
    - safe_strerror
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool mgmt_history_dump_cmt_record_index(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/mgmtd/mgmt_history.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: FOREACH_CMT_REC
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void FOREACH_CMT_REC (mm, cmt_info)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:194,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_history.c:198,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_history.c:199,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_history.c:200,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_history.c:201,1
    - Dst: mgmt_ds_lock
      Src: /src/frr/mgmtd/mgmt_history.c:203,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:205,1
    - Dst: strerror
      Src: /src/frr/mgmtd/mgmt_history.c:207,1
    - Dst: mgmt_ds_lock
      Src: /src/frr/mgmtd/mgmt_history.c:211,1
    - Dst: mgmt_ds_unlock
      Src: /src/frr/mgmtd/mgmt_history.c:213,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:214,1
    - Dst: strerror
      Src: /src/frr/mgmtd/mgmt_history.c:216,1
    - Dst: mgmt_ds_load_config_from_file
      Src: /src/frr/mgmtd/mgmt_history.c:221,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:224,1
    - Dst: mgmt_txn_rollback_trigger_cfg_apply
      Src: /src/frr/mgmtd/mgmt_history.c:232,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:234,1
    - Dst: mgmt_history_dump_cmt_record_index
      Src: /src/frr/mgmtd/mgmt_history.c:240,1
    - Dst: mgmt_ds_unlock
      Src: /src/frr/mgmtd/mgmt_history.c:257,1
    - Dst: mgmt_ds_unlock
      Src: /src/frr/mgmtd/mgmt_history.c:258,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 3
    argNames:
    - vty
    - cmt_info
    - skip_file_load
    argTypes:
    - struct vty*
    - struct mgmt_cmt_info_t*
    - bool
    assertStmts:
    - condition: (src_ds_ctx)
      pos:
        line_end: 199
        line_start: 199
        source_file: /src/frr/mgmtd/mgmt_history.c
    - condition: (dst_ds_ctx)
      pos:
        line_end: 200
        line_start: 200
        source_file: /src/frr/mgmtd/mgmt_history.c
    constantsTouched: []
    func_position:
      end: 260
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 260
    functionName: mgmt_history_rollback_to_cmt
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_lock
    - mgmt_ds_get_ctx_by_id
    - vty_out
    - mgmt_txn_rollback_trigger_cfg_apply
    - strerror
    - mgmt_ds_unlock
    - mgmt_ds_load_config_from_file
    - mgmt_history_dump_cmt_record_index
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_history_rollback_to_cmt(struct vty *vty,\n\t\t\t\t   struct
      mgmt_cmt_info_t *cmt_info,\n\t\t\t\t   bool skip_file_load)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_mgmt_resume_response
      Src: /src/frr/mgmtd/mgmt_history.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - success
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: mgmt_history_rollback_complete
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - vty_mgmt_resume_response
    linkageType: ''
    returnType: void
    signature: void mgmt_history_rollback_complete(bool success)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_cmt_infos_count
      Src: /src/frr/mgmtd/mgmt_history.c:273,1
    - Dst: mgmt_history_find_cmt_record
      Src: /src/frr/mgmtd/mgmt_history.c:274,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:275,1
    - Dst: strcmp
      Src: /src/frr/mgmtd/mgmt_history.c:280,1
    - Dst: mgmt_history_rollback_to_cmt
      Src: /src/frr/mgmtd/mgmt_history.c:281,1
    - Dst: remove_file
      Src: /src/frr/mgmtd/mgmt_history.c:286,1
    - Dst: mgmt_cmt_infos_del
      Src: /src/frr/mgmtd/mgmt_history.c:287,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_history.c:288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - cmtid_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 268
    functionDepth: 4
    functionLinenumber: 268
    functionLinenumberEnd: 292
    functionName: mgmt_history_rollback_by_id
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - vty_out
    - mgmt_cmt_infos_count
    - strcmp
    - mgmt_history_rollback_to_cmt
    - mgmt_cmt_infos_del
    - mgmt_history_find_cmt_record
    - XFREE
    - remove_file
    linkageType: ''
    returnType: int
    signature: int mgmt_history_rollback_by_id(struct vty *vty, const char *cmtid_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/mgmtd/mgmt_history.c:280,1
    - Dst: mgmt_history_rollback_to_cmt
      Src: /src/frr/mgmtd/mgmt_history.c:281,1
    - Dst: remove_file
      Src: /src/frr/mgmtd/mgmt_history.c:286,1
    - Dst: mgmt_cmt_infos_del
      Src: /src/frr/mgmtd/mgmt_history.c:287,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_history.c:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: FOREACH_CMT_REC
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - strcmp
    - mgmt_history_rollback_to_cmt
    - mgmt_cmt_infos_del
    - XFREE
    - remove_file
    linkageType: ''
    returnType: void
    signature: void FOREACH_CMT_REC (mm, cmt_info)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_cmt_infos_count
      Src: /src/frr/mgmtd/mgmt_history.c:304,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:306,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:313,1
    - Dst: mgmt_history_rollback_to_cmt
      Src: /src/frr/mgmtd/mgmt_history.c:321,1
    - Dst: remove_file
      Src: /src/frr/mgmtd/mgmt_history.c:327,1
    - Dst: mgmt_cmt_infos_del
      Src: /src/frr/mgmtd/mgmt_history.c:328,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_history.c:329,1
    - Dst: mgmt_cmt_infos_count
      Src: /src/frr/mgmtd/mgmt_history.c:332,1
    - Dst: mgmt_ds_reset_candidate
      Src: /src/frr/mgmtd/mgmt_history.c:333,1
    - Dst: mgmt_history_rollback_to_cmt
      Src: /src/frr/mgmtd/mgmt_history.c:334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - vty
    - num_cmts
    argTypes:
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 294
    functionDepth: 4
    functionLinenumber: 294
    functionLinenumberEnd: 338
    functionName: mgmt_history_rollback_n
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - vty_out
    - mgmt_cmt_infos_count
    - mgmt_history_rollback_to_cmt
    - mgmt_cmt_infos_del
    - mgmt_ds_reset_candidate
    - XFREE
    - remove_file
    linkageType: ''
    returnType: int
    signature: int mgmt_history_rollback_n(struct vty *vty, int num_cmts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_history_rollback_to_cmt
      Src: /src/frr/mgmtd/mgmt_history.c:321,1
    - Dst: remove_file
      Src: /src/frr/mgmtd/mgmt_history.c:327,1
    - Dst: mgmt_cmt_infos_del
      Src: /src/frr/mgmtd/mgmt_history.c:328,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_history.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 319
    functionDepth: 4
    functionLinenumber: 319
    functionLinenumberEnd: 330
    functionName: FOREACH_CMT_REC
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - mgmt_cmt_infos_del
    - XFREE
    - mgmt_history_rollback_to_cmt
    - remove_file
    linkageType: ''
    returnType: void
    signature: void FOREACH_CMT_REC (mm, cmt_info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:345,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:346,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 352
    functionName: show_mgmt_cmt_history
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_mgmt_cmt_history(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_history.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 351
    functionName: FOREACH_CMT_REC
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_CMT_REC (mm, cmt_info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_history_create_cmt_rec
      Src: /src/frr/mgmtd/mgmt_history.c:356,1
    - Dst: mgmt_ds_dump_ds_to_file
      Src: /src/frr/mgmtd/mgmt_history.c:358,1
    - Dst: mgmt_history_dump_cmt_record_index
      Src: /src/frr/mgmtd/mgmt_history.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ds_ctx
    argTypes:
    - struct mgmt_ds_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 360
    functionName: mgmt_history_new_record
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - mgmt_history_create_cmt_rec
    - mgmt_ds_dump_ds_to_file
    - mgmt_history_dump_cmt_record_index
    linkageType: ''
    returnType: void
    signature: void mgmt_history_new_record(struct mgmt_ds_ctx *ds_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_cmt_infos_init
      Src: /src/frr/mgmtd/mgmt_history.c:365,1
    - Dst: mgmt_history_read_cmt_record_index
      Src: /src/frr/mgmtd/mgmt_history.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 367
    functionName: mgmt_history_init
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - mgmt_cmt_infos_init
    - mgmt_history_read_cmt_record_index
    linkageType: ''
    returnType: void
    signature: void mgmt_history_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_cmt_infos_del
      Src: /src/frr/mgmtd/mgmt_history.c:374,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_history.c:375,1
    - Dst: mgmt_cmt_infos_fini
      Src: /src/frr/mgmtd/mgmt_history.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 379
    functionName: mgmt_history_destroy
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - mgmt_cmt_infos_del
    - XFREE
    - mgmt_cmt_infos_fini
    linkageType: ''
    returnType: void
    signature: void mgmt_history_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_cmt_infos_del
      Src: /src/frr/mgmtd/mgmt_history.c:374,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_history.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: FOREACH_CMT_REC
    functionSourceFile: /src/frr/mgmtd/mgmt_history.c
    functionUses: 1
    functionsReached:
    - mgmt_cmt_infos_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void FOREACH_CMT_REC(mm, cmt_info)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: MGMTD_BE_ADAPTER_DBG
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_BE_ADAPTER_DBG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: MGMTD_BE_ADAPTER_ERR
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_BE_ADAPTER_ERR(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - adapter
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_ADAPTER_IN_LIST(adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 122
    functionName: mgmt_be_find_adapter_by_fd
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mgmt_be_client_adapter
    signature: 'struct mgmt_be_client_adapter *

      mgmt_be_find_adapter_by_fd(int conn_fd)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 119
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 135
    functionName: mgmt_be_find_adapter_by_name
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: struct mgmt_be_client_adapter
    signature: 'struct mgmt_be_client_adapter *

      mgmt_be_find_adapter_by_name(const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: darr_foreach_p
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:142,1
    - Dst: strcmp
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:143,1
    - Dst: darr_append
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:148,1
    - Dst: XSTRDUP
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - id
    - xpath
    - subscribed
    argTypes:
    - enum mgmt_be_client_id
    - char*
    - uint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: mgmt_register_client_xpath
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - darr_append
    - strcmp
    - darr_foreach_p
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void mgmt_register_client_xpath(enum mgmt_be_client_id id,\n\t\t\t\t
      \      const char *xpath, uint subscribed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:161,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:167,1
    - Dst: mgmt_register_client_xpath
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:168,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:173,1
    - Dst: darr_len
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 174
    functionName: mgmt_be_xpath_map_init
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_register_client_xpath
    - darr_len
    linkageType: ''
    returnType: void
    signature: void mgmt_be_xpath_map_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:167,1
    - Dst: mgmt_register_client_xpath
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 171
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_register_client_xpath
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: darr_foreach_p
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:180,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:181,1
    - Dst: darr_free
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 183
    functionName: mgmt_be_xpath_map_cleanup
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - darr_free
    - darr_foreach_p
    - XFREE
    linkageType: ''
    returnType: void
    signature: void mgmt_be_xpath_map_cleanup(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:194,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:195,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 54
    argCount: 2
    argNames:
    - xpath_regexp
    - xpath
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 310
    functionName: mgmt_be_eval_regexp_match
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_eval_regexp_match(const char *xpath_regexp,\n\t\t\t\t
      \    const char *xpath)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:314,1
    - Dst: mgmt_txn_notify_be_adapter_conn
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:319,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:325,1
    - Dst: mgmt_be_adapter_unlock
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_be_client_adapter*
    assertStmts:
    - condition: (adapter->refcount == 1)
      pos:
        line_end: 324
        line_start: 324
        source_file: /src/frr/mgmtd/mgmt_be_adapter.c
    constantsTouched: []
    func_position:
      end: 327
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 327
    functionName: mgmt_be_adapter_delete
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_be_adapter_unlock
    - mgmt_txn_notify_be_adapter_conn
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_delete(struct mgmt_be_client_adapter *adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:333,1
    - Dst: mgmt_be_adapter_delete
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 339
    functionName: mgmt_be_adapter_notify_disconnect
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_be_adapter_delete
    linkageType: ''
    returnType: int
    signature: int mgmt_be_adapter_notify_disconnect(struct msg_conn *conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:348,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:352,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_be_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 360
    functionName: mgmt_be_adapter_cleanup_old_conn
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - strncmp
    - msg_conn_disconnect
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_cleanup_old_conn(struct mgmt_be_client_adapter
      *adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:348,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:352,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 359
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - strncmp
    - msg_conn_disconnect
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (old)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_conn_send_msg
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:366,1
    - Dst: mgmtd__be_message__get_packed_size
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - adapter
    - be_msg
    argTypes:
    - struct mgmt_be_client_adapter*
    - Mgmtd__BeMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 370
    functionName: mgmt_be_adapter_send_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - msg_conn_send_msg
    - mgmtd__be_message__get_packed_size
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_adapter_send_msg(struct mgmt_be_client_adapter *adapter,\n\t\t\t\t
      \   Mgmtd__BeMessage *be_msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_subscribe_reply__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:378,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:381,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:385,1
    - Dst: mgmt_be_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - adapter
    - success
    argTypes:
    - struct mgmt_be_client_adapter*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 389
    functionName: mgmt_be_send_subscr_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_message__init
    - mgmtd__be_subscribe_reply__init
    - MGMTD_FE_CLIENT_DBG
    - mgmt_be_adapter_send_msg
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_subscr_reply(struct mgmt_be_client_adapter *adapter,\n\t\t\t\t
      \    bool success)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:401,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:410,1
    - Dst: strlcpy
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:411,1
    - Dst: mgmt_be_client_name2id
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:413,1
    - Dst: MGMTD_BE_ADAPTER_ERR
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:415,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:419,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:420,1
    - Dst: mgmt_be_adapter_cleanup_old_conn
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:424,1
    - Dst: mgmt_be_adapter_sched_init_event
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:427,1
    - Dst: mgmt_be_send_subscr_reply
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:432,1
    - Dst: mgmt_be_send_subscr_reply
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:434,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:437,1
    - Dst: mgmt_txn_notify_be_txn_reply
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:446,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:452,1
    - Dst: mgmt_txn_notify_be_cfgdata_reply
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:463,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:470,1
    - Dst: mgmt_txn_notify_be_cfg_apply_reply
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:486,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - adapter
    - be_msg
    argTypes:
    - struct mgmt_be_client_adapter*
    - Mgmtd__BeMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 391
    functionDepth: 3
    functionLinenumber: 391
    functionLinenumberEnd: 519
    functionName: mgmt_be_adapter_handle_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_adapter_sched_init_event
    - strlen
    - mgmt_txn_notify_be_cfg_apply_reply
    - mgmt_be_send_subscr_reply
    - strlcpy
    - mgmt_txn_notify_be_cfgdata_reply
    - mgmt_be_adapter_cleanup_old_conn
    - zlog_err
    - msg_conn_disconnect
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_txn_notify_be_txn_reply
    - MGMTD_BE_ADAPTER_ERR
    - mgmt_be_client_name2id
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_adapter_handle_msg(struct mgmt_be_client_adapter *adapter,\n\t\t\t
      \     Mgmtd__BeMessage *be_msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_txn_req__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:527,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:531,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:535,1
    - Dst: mgmt_be_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - adapter
    - txn_id
    - create
    argTypes:
    - struct mgmt_be_client_adapter*
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 539
    functionName: mgmt_be_send_txn_req
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_message__init
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_be_adapter_send_msg
    - mgmtd__be_txn_req__init
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_txn_req(struct mgmt_be_client_adapter *adapter,\n\t\t\t
      uint64_t txn_id, bool create)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_cfg_data_create_req__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:549,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:556,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:560,1
    - Dst: mgmt_be_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 6
    argNames:
    - adapter
    - txn_id
    - batch_id
    - cfgdata_reqs
    - num_reqs
    - end_of_data
    argTypes:
    - struct mgmt_be_client_adapter*
    - uint64_t
    - uint64_t
    - Mgmtd__YangCfgDataReq**
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 566
    functionName: mgmt_be_send_cfgdata_req
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_message__init
    - MGMTD_BE_ADAPTER_DBG
    - mgmtd__be_cfg_data_create_req__init
    - mgmt_be_adapter_send_msg
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_cfgdata_req(struct mgmt_be_client_adapter *adapter,\n\t\t\t
      \    uint64_t txn_id, uint64_t batch_id,\n\t\t\t     Mgmtd__YangCfgDataReq **cfgdata_reqs,\n\t\t\t
      \    size_t num_reqs, bool end_of_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_cfg_data_apply_req__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:574,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:577,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:581,1
    - Dst: mgmt_be_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - adapter
    - txn_id
    argTypes:
    - struct mgmt_be_client_adapter*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 585
    functionName: mgmt_be_send_cfgapply_req
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_message__init
    - MGMTD_BE_ADAPTER_DBG
    - mgmtd__be_cfg_data_apply_req__init
    - mgmt_be_adapter_send_msg
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_cfgapply_req(struct mgmt_be_client_adapter *adapter,\n\t\t\t
      \     uint64_t txn_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_message__unpack
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:591,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:594,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:599,1
    - Dst: mgmt_be_adapter_handle_msg
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:601,1
    - Dst: mgmtd__be_message__free_unpacked
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - version
    - data
    - len
    - conn
    argTypes:
    - uint8_t
    - uint8_t*
    - size_t
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 587
    functionDepth: 4
    functionLinenumber: 587
    functionLinenumberEnd: 603
    functionName: mgmt_be_adapter_process_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - mgmtd__be_message__free_unpacked
    - mgmtd__be_message__unpack
    - mgmt_be_adapter_handle_msg
    linkageType: ''
    returnType: void
    signature: "void mgmt_be_adapter_process_msg(uint8_t version, uint8_t *data,\n\t\t\t\t\tsize_t
      len, struct msg_conn *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_get_subscr_for_xpath_and_client
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:612,1
    - Dst: nb_config_diff_created
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - xpath
    - node
    - nb_node
    - ctx
    argTypes:
    - char*
    - struct lyd_node*
    - struct nb_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 616
    functionName: mgmt_be_iter_and_get_cfg
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - nb_config_diff_created
    - mgmt_be_get_subscr_for_xpath_and_client
    linkageType: ''
    returnType: void
    signature: "void mgmt_be_iter_and_get_cfg(const char *xpath, struct lyd_node *node,\n\t\t\t\t
      \    struct nb_node *nb_node, void *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:625,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:626,1
    - Dst: mgmt_config_txn_in_progress
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:633,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:634,1
    - Dst: mgmt_be_adapter_sched_init_event
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:635,1
    - Dst: mgmt_txn_notify_be_adapter_conn
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:646,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:647,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:648,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (adapter && adapter->conn->fd >= 0)
      pos:
        line_end: 625
        line_start: 625
        source_file: /src/frr/mgmtd/mgmt_be_adapter.c
    constantsTouched: []
    func_position:
      end: 651
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 651
    functionName: mgmt_be_adapter_conn_init
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_adapter_sched_init_event
    - mgmt_txn_notify_be_adapter_conn
    - zlog_err
    - msg_conn_disconnect
    - EVENT_ARG
    - mgmt_config_txn_in_progress
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_conn_init(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer_msec
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_be_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 662
    functionName: mgmt_be_adapter_sched_init_event
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 2
    functionsReached:
    - event_add_timer_msec
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_sched_init_event(struct mgmt_be_client_adapter
      *adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_be_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 667
    functionName: mgmt_be_adapter_lock
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_lock(struct mgmt_be_client_adapter *adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:672,1
    - Dst: mgmt_be_adapters_del
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:675,1
    - Dst: EVENT_OFF
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:676,1
    - Dst: msg_server_conn_delete
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:677,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_be_client_adapter**
    assertStmts:
    - condition: (a && a->refcount)
      pos:
        line_end: 671
        line_start: 671
        source_file: /src/frr/mgmtd/mgmt_be_adapter.c
    constantsTouched: []
    func_position:
      end: 682
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 682
    functionName: mgmt_be_adapter_unlock
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 1
    functionsReached:
    - mgmt_be_adapters_del
    - EVENT_OFF
    - XFREE
    - msg_server_conn_delete
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_unlock(struct mgmt_be_client_adapter **adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:689,1
    - Dst: mgmt_be_adapters_init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:692,1
    - Dst: mgmt_be_xpath_map_init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:693,1
    - Dst: msg_server_init
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:695,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:698,1
    - Dst: exit
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts:
    - condition: (!mgmt_loop)
      pos:
        line_end: 688
        line_start: 688
        source_file: /src/frr/mgmtd/mgmt_be_adapter.c
    constantsTouched: []
    func_position:
      end: 701
      start: 687
    functionDepth: 3
    functionLinenumber: 687
    functionLinenumberEnd: 701
    functionName: mgmt_be_adapter_init
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 1
    functionsReached:
    - exit
    - zlog_err
    - msg_server_init
    - mgmt_be_xpath_map_init
    - mgmt_be_adapters_init
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_server_cleanup
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:710,1
    - Dst: mgmt_be_adapter_delete
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:712,1
    - Dst: mgmt_be_xpath_map_cleanup
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 706
    functionDepth: 2
    functionLinenumber: 706
    functionLinenumberEnd: 715
    functionName: mgmt_be_adapter_destroy
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 1
    functionsReached:
    - msg_server_cleanup
    - mgmt_be_adapter_delete
    - mgmt_be_xpath_map_cleanup
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_adapter_delete
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 711
    functionDepth: 2
    functionLinenumber: 711
    functionLinenumberEnd: 713
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_adapter_delete
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:724,1
    - Dst: mgmt_be_find_adapter_by_fd
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:724,1
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:726,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:729,1
    - Dst: mgmt_be_adapter_lock
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:732,1
    - Dst: mgmt_be_adapters_add_tail
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:733,1
    - Dst: RB_INIT
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:734,1
    - Dst: msg_server_conn_create
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:736,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - conn_fd
    - from
    argTypes:
    - int
    - union sockunion*
    assertStmts:
    - condition: (!mgmt_be_find_adapter_by_fd(conn_fd))
      pos:
        line_end: 723
        line_start: 723
        source_file: /src/frr/mgmtd/mgmt_be_adapter.c
    constantsTouched: []
    func_position:
      end: 746
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 746
    functionName: mgmt_be_create_adapter
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - snprintf
    - XCALLOC
    - RB_INIT
    - mgmt_be_adapters_add_tail
    - msg_server_conn_create
    - mgmt_be_adapter_lock
    - mgmt_be_find_adapter_by_fd
    - assert
    linkageType: ''
    returnType: struct msg_conn
    signature: struct msg_conn *mgmt_be_create_adapter(int conn_fd, union sockunion
      *from)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - enum mgmt_be_client_id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 753
    functionName: mgmt_be_get_adapter_by_id
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mgmt_be_client_adapter
    signature: 'struct mgmt_be_client_adapter *

      mgmt_be_get_adapter_by_id(enum mgmt_be_client_id id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_find_adapter_by_name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 755
    functionDepth: 1
    functionLinenumber: 755
    functionLinenumberEnd: 759
    functionName: mgmt_be_get_adapter_by_name
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_find_adapter_by_name
    linkageType: ''
    returnType: struct mgmt_be_client_adapter
    signature: 'struct mgmt_be_client_adapter *

      mgmt_be_get_adapter_by_name(const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_ds_get_nb_config
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:765,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:767,1
    - Dst: RB_EMPTY
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:776,1
    - Dst: mgmt_ds_iter_data
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:781,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - adapter
    - cfg_chgs
    argTypes:
    - struct mgmt_be_client_adapter*
    - struct nb_config_cbs**
    assertStmts:
    - condition: (cfg_chgs)
      pos:
        line_end: 766
        line_start: 766
        source_file: /src/frr/mgmtd/mgmt_be_adapter.c
    constantsTouched: []
    func_position:
      end: 787
      start: 761
    functionDepth: 3
    functionLinenumber: 761
    functionLinenumberEnd: 787
    functionName: mgmt_be_get_adapter_config
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - RB_EMPTY
    - mgmt_ds_get_nb_config
    - mgmt_ds_iter_data
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_get_adapter_config(struct mgmt_be_client_adapter *adapter,\n\t\t\t
      \      struct nb_config_cbs **cfg_chgs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:795,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:797,1
    - Dst: mgmt_be_eval_regexp_match
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:799,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:806,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:810,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - xpath
    - subscr_info
    argTypes:
    - char*
    - struct mgmt_be_client_subscr_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 815
    functionName: mgmt_be_get_subscr_info_for_xpath
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - mgmt_be_eval_regexp_match
    - memset
    - mgmt_be_client_id2name
    - MGMTD_BE_ADAPTER_DBG
    linkageType: ''
    returnType: void
    signature: "void mgmt_be_get_subscr_info_for_xpath(\n\tconst char *xpath, struct
      mgmt_be_client_subscr_info *subscr_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_eval_regexp_match
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 804
    functionName: darr_foreach_p
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 3
    functionsReached:
    - mgmt_be_eval_regexp_match
    linkageType: ''
    returnType: void
    signature: void darr_foreach_p (mgmt_xpath_map, map)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 801
    functionDepth: 0
    functionLinenumber: 801
    functionLinenumberEnd: 803
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:810,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:811,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 813
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_be_client_id2name
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:837,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:839,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:840,1
    - Dst: mgmt_be_eval_regexp_match
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:844,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:846,1
    - Dst: MGMTD_BE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:852,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:853,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - xpath
    - client_id
    - subscr_mask
    argTypes:
    - char*
    - enum mgmt_be_client_id
    - uint
    assertStmts:
    - condition: (client_id < MGMTD_BE_CLIENT_ID_MAX)
      pos:
        line_end: 836
        line_start: 836
        source_file: /src/frr/mgmtd/mgmt_be_adapter.c
    constantsTouched: []
    func_position:
      end: 855
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 855
    functionName: mgmt_be_get_subscr_for_xpath_and_client
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 1
    functionsReached:
    - MGMTD_BE_ADAPTER_DBG
    - mgmt_be_client_id2name
    - mgmt_be_eval_regexp_match
    - assert
    linkageType: ''
    returnType: uint
    signature: "uint mgmt_be_get_subscr_for_xpath_and_client(\n\tconst char *xpath,
      enum mgmt_be_client_id client_id, uint subscr_mask)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:861,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:864,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:865,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:866,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:867,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:868,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:870,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:872,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:874,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:877,1
    - Dst: mgmt_be_adapters_count
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 879
    functionName: mgmt_be_adapter_status_write
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_adapters_count
    - vty_out
    linkageType: ''
    returnType: void
    signature: void mgmt_be_adapter_status_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:864,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:865,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:866,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:867,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:868,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:870,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:872,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 863
    functionDepth: 1
    functionLinenumber: 863
    functionLinenumberEnd: 876
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (adapter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:888,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:891,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:896,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:898,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:902,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:904,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:908,1
    - Dst: darr_len
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:908,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 909
    functionName: mgmt_be_xpath_register_write
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - mgmt_be_client_id2name
    - vty_out
    - darr_len
    linkageType: ''
    returnType: void
    signature: void mgmt_be_xpath_register_write(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:891,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:896,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:898,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:902,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:904,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 906
    functionName: darr_foreach_p
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 3
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - mgmt_be_client_id2name
    - vty_out
    linkageType: ''
    returnType: void
    signature: void darr_foreach_p (mgmt_xpath_map, map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:896,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:898,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:902,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:904,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 905
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - mgmt_be_client_id2name
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_get_subscr_info_for_xpath
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:918,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:920,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:925,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:927,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:931,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:933,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - xpath
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 911
    functionDepth: 2
    functionLinenumber: 911
    functionLinenumberEnd: 935
    functionName: mgmt_be_xpath_subscr_info_write
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_subscr_info_for_xpath
    - mgmt_be_get_adapter_by_id
    - mgmt_be_client_id2name
    - vty_out
    linkageType: ''
    returnType: void
    signature: void mgmt_be_xpath_subscr_info_write(struct vty *vty, const char *xpath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:925,1
    - Dst: mgmt_be_client_id2name
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:927,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:931,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_be_adapter.c:933,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 934
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_be_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - mgmt_be_client_id2name
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: MGMTD_FE_ADAPTER_DBG
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_FE_ADAPTER_DBG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: MGMTD_FE_ADAPTER_ERR
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_FE_ADAPTER_ERR(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - adapter
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_ADAPTER_IN_LIST(adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - adapter
    - ','
    - session
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_SESSION_IN_LIST(adapter, session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:74,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:76,1
    - Dst: mgmt_ds_lock
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:78,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:79,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:82,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:88,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ds_id
    - ds_ctx
    - session
    argTypes:
    - Mgmtd__DatastoreId
    - struct mgmt_ds_ctx*
    - struct mgmt_fe_session_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 96
    functionName: mgmt_fe_session_write_lock_ds
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_ds_id2name
    - zlog_warn
    - mgmt_ds_lock
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_session_write_lock_ds(Mgmtd__DatastoreId ds_id,\n\t\t\t\t
      \ struct mgmt_ds_ctx *ds_ctx,\n\t\t\t\t  struct mgmt_fe_session_ctx *session)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:103,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:104,1
    - Dst: mgmt_ds_unlock
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:107,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:108,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ds_id
    - ds_ctx
    - session
    argTypes:
    - Mgmtd__DatastoreId
    - struct mgmt_ds_ctx*
    - struct mgmt_fe_session_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 113
    functionName: mgmt_fe_session_unlock_ds
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_ds_id2name
    - zlog_warn
    - mgmt_ds_unlock
    linkageType: ''
    returnType: void
    signature: "void mgmt_fe_session_unlock_ds(Mgmtd__DatastoreId ds_id,\n\t\t\t\t
      \     struct mgmt_ds_ctx *ds_ctx,\n\t\t\t\t      struct mgmt_fe_session_ctx
      *session)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_ds_copy_dss
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:122,1
    - Dst: mgmt_destroy_txn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - session
    argTypes:
    - struct mgmt_fe_session_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 129
    functionName: mgmt_fe_session_cfg_txn_cleanup
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_copy_dss
    - mgmt_destroy_txn
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_session_cfg_txn_cleanup(struct mgmt_fe_session_ctx *session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_destroy_txn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - session
    argTypes:
    - struct mgmt_fe_session_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 139
    functionName: mgmt_fe_session_show_txn_cleanup
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_destroy_txn
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_session_show_txn_cleanup(struct mgmt_fe_session_ctx *session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_elapsed
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - setcfg_stats
    argTypes:
    - struct mgmt_setcfg_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 156
    functionName: mgmt_fe_adapter_compute_set_cfg_timers
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - timeval_elapsed
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_compute_set_cfg_timers(struct mgmt_setcfg_stats
      *setcfg_stats)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_elapsed
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - cmt_stats
    argTypes:
    - struct mgmt_commit_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 172
    functionName: mgmt_fe_session_compute_commit_timers
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - timeval_elapsed
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_session_compute_commit_timers(struct mgmt_commit_stats
      *cmt_stats)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_session_cfg_txn_cleanup
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:181,1
    - Dst: mgmt_fe_session_show_txn_cleanup
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:182,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:184,1
    - Dst: mgmt_fe_session_unlock_ds
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:186,1
    - Dst: mgmt_fe_sessions_del
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:189,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:190,1
    - Dst: mgmt_fe_adapter_unlock
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:191,1
    - Dst: hash_release
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:194,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - sessionp
    argTypes:
    - struct mgmt_fe_session_ctx**
    assertStmts:
    - condition: (session->adapter->refcount > 1)
      pos:
        line_end: 189
        line_start: 189
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 197
      start: 174
    functionDepth: 4
    functionLinenumber: 174
    functionLinenumberEnd: 197
    functionName: mgmt_fe_cleanup_session
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - assert
    - mgmt_fe_session_show_txn_cleanup
    - mgmt_fe_session_unlock_ds
    - mgmt_fe_sessions_del
    - mgmt_fe_adapter_unlock
    - XFREE
    - hash_release
    - mgmt_fe_session_cfg_txn_cleanup
    - mgmt_ds_get_ctx_by_id
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_cleanup_session(struct mgmt_fe_session_ctx **sessionp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:207,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - adapter
    - client_id
    argTypes:
    - struct mgmt_fe_client_adapter*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 216
    functionName: mgmt_fe_find_session_by_client_id
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    linkageType: ''
    returnType: struct mgmt_fe_session_ctx
    signature: "struct mgmt_fe_session_ctx *\nmgmt_fe_find_session_by_client_id(struct
      mgmt_fe_client_adapter *adapter,\n\t\t\t\t      uint64_t client_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    linkageType: ''
    returnType: void
    signature: void FOREACH_SESSION_IN_LIST (adapter, session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash2
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 224
    functionName: mgmt_fe_session_hash_key
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - jhash2
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mgmt_fe_session_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 232
    functionName: mgmt_fe_session_hash_cmp
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mgmt_fe_session_hash_cmp(const void *d1, const void *d2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - session_id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 247
    functionName: mgmt_session_id2ctx
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct mgmt_fe_session_ctx
    signature: 'struct mgmt_fe_session_ctx *

      mgmt_session_id2ctx(uint64_t session_id)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_find_session_by_client_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:255,1
    - Dst: mgmt_fe_cleanup_session
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:257,1
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:259,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:261,1
    - Dst: mgmt_fe_adapter_lock
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:266,1
    - Dst: mgmt_fe_sessions_add_tail
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:267,1
    - Dst: hash_get
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - adapter
    - client_id
    argTypes:
    - struct mgmt_fe_client_adapter*
    - uint64_t
    assertStmts:
    - condition: (session)
      pos:
        line_end: 260
        line_start: 260
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 274
      start: 249
    functionDepth: 5
    functionLinenumber: 249
    functionLinenumberEnd: 274
    functionName: mgmt_fe_create_session
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_fe_cleanup_session
    - mgmt_fe_adapter_lock
    - XCALLOC
    - mgmt_fe_sessions_add_tail
    - mgmt_fe_find_session_by_client_id
    - hash_get
    - assert
    linkageType: ''
    returnType: struct mgmt_fe_session_ctx
    signature: "struct mgmt_fe_session_ctx *\nmgmt_fe_create_session(struct mgmt_fe_client_adapter
      *adapter,\n\t\t\t   uint64_t client_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_conn_send_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:279,1
    - Dst: mgmtd__fe_message__get_packed_size
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - adapter
    - fe_msg
    - short_circuit_ok
    argTypes:
    - struct mgmt_fe_client_adapter*
    - Mgmtd__FeMessage*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 284
    functionName: fe_adapter_send_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - msg_conn_send_msg
    - mgmtd__fe_message__get_packed_size
    linkageType: ''
    returnType: int
    signature: "int fe_adapter_send_msg(struct mgmt_fe_client_adapter *adapter,\n\t\t\t
      \      Mgmtd__FeMessage *fe_msg, bool short_circuit_ok)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_session_reply__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:293,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:302,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:306,1
    - Dst: fe_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - adapter
    - session
    - create
    - success
    argTypes:
    - struct mgmt_fe_client_adapter*
    - struct mgmt_fe_session_ctx*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 311
    functionName: fe_adapter_send_session_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    - mgmtd__fe_message__init
    - mgmtd__fe_session_reply__init
    - fe_adapter_send_msg
    linkageType: ''
    returnType: int
    signature: "int fe_adapter_send_session_reply(struct mgmt_fe_client_adapter *adapter,\n\t\t\t\t\t
      struct mgmt_fe_session_ctx *session,\n\t\t\t\t\t bool create, bool success)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:322,1
    - Dst: mgmtd__fe_lock_ds_reply__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:324,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:333,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:337,1
    - Dst: fe_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 6
    argNames:
    - session
    - ds_id
    - req_id
    - lock_ds
    - success
    - error_if_any
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__DatastoreId
    - uint64_t
    - bool
    - bool
    - char*
    assertStmts:
    - condition: (session->adapter)
      pos:
        line_end: 321
        line_start: 321
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 342
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 342
    functionName: fe_adapter_send_lockds_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - fe_adapter_send_msg
    - MGMTD_FE_ADAPTER_DBG
    - mgmtd__fe_lock_ds_reply__init
    - mgmtd__fe_message__init
    - assert
    linkageType: ''
    returnType: int
    signature: "int fe_adapter_send_lockds_reply(struct mgmt_fe_session_ctx *session,\n\t\t\t\t\tMgmtd__DatastoreId
      ds_id,\n\t\t\t\t\tuint64_t req_id, bool lock_ds,\n\t\t\t\t\tbool success, const
      char *error_if_any)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:353,1
    - Dst: mgmt_fe_session_register_event
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:356,1
    - Dst: mgmtd__fe_set_config_reply__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:359,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:368,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:372,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:378,1
    - Dst: mgmt_fe_session_compute_commit_timers
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:380,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:385,1
    - Dst: mgmt_fe_adapter_compute_set_cfg_timers
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:386,1
    - Dst: fe_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:388,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 6
    argNames:
    - session
    - ds_id
    - req_id
    - success
    - error_if_any
    - implicit_commit
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__DatastoreId
    - uint64_t
    - bool
    - char*
    - bool
    assertStmts:
    - condition: (session->adapter)
      pos:
        line_end: 352
        line_start: 352
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 389
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 389
    functionName: fe_adapter_send_set_cfg_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - fe_adapter_send_msg
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_session_compute_commit_timers
    - mgmtd__fe_set_config_reply__init
    - gettimeofday
    - mgmt_fe_session_register_event
    - mgmt_fe_adapter_compute_set_cfg_timers
    - mgmtd__fe_message__init
    - assert
    linkageType: ''
    returnType: int
    signature: "int fe_adapter_send_set_cfg_reply(struct mgmt_fe_session_ctx *session,\n\t\t\t\t\t
      Mgmtd__DatastoreId ds_id,\n\t\t\t\t\t uint64_t req_id, bool success,\n\t\t\t\t\t
      const char *error_if_any,\n\t\t\t\t\t bool implicit_commit)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:399,1
    - Dst: mgmtd__fe_commit_config_reply__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:401,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:414,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:418,1
    - Dst: mgmt_fe_session_register_event
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:428,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:432,1
    - Dst: mgmt_fe_session_compute_commit_timers
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:433,1
    - Dst: fe_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:434,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 7
    argNames:
    - session
    - src_ds_id
    - dst_ds_id
    - req_id
    - result
    - validate_only
    - error_if_any
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__DatastoreId
    - Mgmtd__DatastoreId
    - uint64_t
    - enum mgmt_result
    - bool
    - char*
    assertStmts:
    - condition: (session->adapter)
      pos:
        line_end: 398
        line_start: 398
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 435
      start: 391
    functionDepth: 2
    functionLinenumber: 391
    functionLinenumberEnd: 435
    functionName: fe_adapter_send_commit_cfg_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - fe_adapter_send_msg
    - mgmtd__fe_commit_config_reply__init
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_session_compute_commit_timers
    - gettimeofday
    - mgmt_fe_session_register_event
    - mgmtd__fe_message__init
    - assert
    linkageType: ''
    returnType: int
    signature: "int fe_adapter_send_commit_cfg_reply(\n\tstruct mgmt_fe_session_ctx
      *session, Mgmtd__DatastoreId src_ds_id,\n\tMgmtd__DatastoreId dst_ds_id, uint64_t
      req_id, enum mgmt_result result,\n\tbool validate_only, const char *error_if_any)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:445,1
    - Dst: mgmtd__fe_get_reply__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:447,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:456,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:460,1
    - Dst: mgmt_fe_session_register_event
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:467,1
    - Dst: fe_adapter_send_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:470,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - session
    - ds_id
    - req_id
    - success
    - data
    - error_if_any
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__DatastoreId
    - uint64_t
    - bool
    - Mgmtd__YangDataReply*
    - char*
    assertStmts:
    - condition: (session->adapter)
      pos:
        line_end: 444
        line_start: 444
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 471
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 471
    functionName: fe_adapter_send_get_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - fe_adapter_send_msg
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_session_register_event
    - mgmtd__fe_message__init
    - assert
    - mgmtd__fe_get_reply__init
    linkageType: ''
    returnType: int
    signature: "int fe_adapter_send_get_reply(struct mgmt_fe_session_ctx *session,\n\t\t\t\t
      \    Mgmtd__DatastoreId ds_id, uint64_t req_id,\n\t\t\t\t     bool success,
      Mgmtd__YangDataReply *data,\n\t\t\t\t     const char *error_if_any)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:477,1
    - Dst: mgmt_fe_session_cfg_txn_cleanup
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 473
    functionDepth: 4
    functionLinenumber: 473
    functionLinenumberEnd: 480
    functionName: mgmt_fe_session_cfg_txn_clnup
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_fe_session_cfg_txn_cleanup
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_session_cfg_txn_clnup(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:486,1
    - Dst: mgmt_fe_session_show_txn_cleanup
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 489
    functionName: mgmt_fe_session_show_txn_clnup
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_fe_session_show_txn_cleanup
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_session_show_txn_clnup(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer_tv
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:500,1
    - Dst: event_add_timer_tv
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - session
    - event
    argTypes:
    - struct mgmt_fe_session_ctx*
    - enum mgmt_session_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 508
    functionName: mgmt_fe_session_register_event
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 3
    functionsReached:
    - event_add_timer_tv
    linkageType: ''
    returnType: void
    signature: "void mgmt_fe_session_register_event(struct mgmt_fe_session_ctx *session,\n\t\t\t\t
      \  enum mgmt_session_event event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 521
    functionName: mgmt_fe_find_adapter_by_fd
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mgmt_fe_client_adapter
    signature: 'struct mgmt_fe_client_adapter *

      mgmt_fe_find_adapter_by_fd(int conn_fd)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 518
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:526,1
    - Dst: FOREACH_SESSION_IN_LIST
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:529,1
    - Dst: mgmt_fe_cleanup_session
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:530,1
    - Dst: mgmt_fe_sessions_fini
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:531,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:533,1
    - Dst: mgmt_fe_adapter_unlock
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_fe_client_adapter*
    assertStmts:
    - condition: (adapter->refcount == 1)
      pos:
        line_end: 532
        line_start: 532
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 535
      start: 523
    functionDepth: 5
    functionLinenumber: 523
    functionLinenumberEnd: 535
    functionName: mgmt_fe_adapter_delete
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - FOREACH_SESSION_IN_LIST
    - mgmt_fe_cleanup_session
    - mgmt_fe_sessions_fini
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_adapter_unlock
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_delete(struct mgmt_fe_client_adapter *adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:541,1
    - Dst: mgmt_fe_adapter_delete
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 537
    functionDepth: 6
    functionLinenumber: 537
    functionLinenumberEnd: 547
    functionName: mgmt_fe_adapter_notify_disconnect
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_adapter_delete
    linkageType: ''
    returnType: int
    signature: int mgmt_fe_adapter_notify_disconnect(struct msg_conn *conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:560,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:563,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:567,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_fe_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 569
    functionName: mgmt_fe_adapter_cleanup_old_conn
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    - strncmp
    - msg_conn_disconnect
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_cleanup_old_conn(struct mgmt_fe_client_adapter
      *adapter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:560,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:563,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:567,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 568
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_ADAPTER_DBG
    - strncmp
    - msg_conn_disconnect
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (old)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fe_adapter_send_lockds_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:579,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:586,1
    - Dst: fe_adapter_send_lockds_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:588,1
    - Dst: mgmt_fe_session_write_lock_ds
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:596,1
    - Dst: fe_adapter_send_lockds_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:598,1
    - Dst: fe_adapter_send_lockds_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:606,1
    - Dst: mgmt_fe_session_unlock_ds
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:613,1
    - Dst: fe_adapter_send_lockds_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:616,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:619,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - session
    - lockds_req
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__FeLockDsReq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 571
    functionDepth: 3
    functionLinenumber: 571
    functionLinenumberEnd: 627
    functionName: mgmt_fe_session_handle_lockds_req_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - fe_adapter_send_lockds_reply
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_session_unlock_ds
    - mgmt_fe_session_write_lock_ds
    - mgmt_ds_get_ctx_by_id
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_session_handle_lockds_req_msg(struct mgmt_fe_session_ctx
      *session,\n\t\t\t\t\t  Mgmtd__FeLockDsReq *lockds_req)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:642,1
    - Dst: fe_adapter_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:646,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:652,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:653,1
    - Dst: fe_adapter_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:658,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:664,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:665,1
    - Dst: fe_adapter_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:669,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:678,1
    - Dst: mgmt_config_txn_in_progress
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:678,1
    - Dst: mgmt_create_txn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:681,1
    - Dst: fe_adapter_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:684,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:693,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:697,1
    - Dst: fe_adapter_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:707,1
    - Dst: mgmt_txn_send_set_config_req
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:717,1
    - Dst: fe_adapter_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:723,1
    - Dst: mgmt_destroy_txn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:730,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - session
    - setcfg_req
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__FeSetConfigReq*
    assertStmts:
    - condition: (ds_ctx)
      pos:
        line_end: 652
        line_start: 652
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    - condition: (dst_ds_ctx)
      pos:
        line_end: 664
        line_start: 664
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    - condition: (mgmt_config_txn_in_progress() == MGMTD_SESSION_ID_NONE)
      pos:
        line_end: 677
        line_start: 677
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 734
      start: 634
    functionDepth: 3
    functionLinenumber: 634
    functionLinenumberEnd: 734
    functionName: mgmt_fe_session_handle_setcfg_req_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_get_ctx_by_id
    - mgmt_txn_send_set_config_req
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_destroy_txn
    - mgmt_create_txn
    - fe_adapter_send_set_cfg_reply
    - gettimeofday
    - mgmt_config_txn_in_progress
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_session_handle_setcfg_req_msg(struct mgmt_fe_session_ctx
      *session,\n\t\t\t\t\t  Mgmtd__FeSetConfigReq *setcfg_req)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fe_adapter_send_get_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:751,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:755,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:756,1
    - Dst: mgmt_create_txn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:762,1
    - Dst: fe_adapter_send_get_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:765,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:771,1
    - Dst: fe_adapter_send_get_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:775,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:777,1
    - Dst: nb_config_dup
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:787,1
    - Dst: mgmt_ds_get_nb_config
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:787,1
    - Dst: mgmt_txn_send_get_req
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:792,1
    - Dst: fe_adapter_send_get_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:794,1
    - Dst: nb_config_free
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:803,1
    - Dst: mgmt_destroy_txn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:808,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - session
    - get_req
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__FeGetReq*
    assertStmts:
    - condition: (ds_ctx)
      pos:
        line_end: 755
        line_start: 755
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 811
      start: 736
    functionDepth: 3
    functionLinenumber: 736
    functionLinenumberEnd: 811
    functionName: mgmt_fe_session_handle_get_req_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_get_ctx_by_id
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_ds_get_nb_config
    - mgmt_destroy_txn
    - nb_config_dup
    - mgmt_create_txn
    - nb_config_free
    - fe_adapter_send_get_reply
    - mgmt_txn_send_get_req
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_session_handle_get_req_msg(struct mgmt_fe_session_ctx
      *session,\n\t\t\t\t\t      Mgmtd__FeGetReq *get_req)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:821,1
    - Dst: fe_adapter_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:827,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:834,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:835,1
    - Dst: mgmt_ds_get_ctx_by_id
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:836,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:837,1
    - Dst: fe_adapter_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:842,1
    - Dst: mgmt_create_txn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:854,1
    - Dst: fe_adapter_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:857,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:864,1
    - Dst: mgmt_txn_send_commit_config_req
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:873,1
    - Dst: fe_adapter_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:878,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - session
    - commcfg_req
    argTypes:
    - struct mgmt_fe_session_ctx*
    - Mgmtd__FeCommitConfigReq*
    assertStmts:
    - condition: (src_ds_ctx)
      pos:
        line_end: 834
        line_start: 834
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    - condition: (dst_ds_ctx)
      pos:
        line_end: 836
        line_start: 836
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 887
      start: 814
    functionDepth: 3
    functionLinenumber: 814
    functionLinenumberEnd: 887
    functionName: mgmt_fe_session_handle_commit_config_req_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_get_ctx_by_id
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_create_txn
    - fe_adapter_send_commit_cfg_reply
    - gettimeofday
    - mgmt_txn_send_commit_config_req
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_session_handle_commit_config_req_msg(\n\tstruct mgmt_fe_session_ctx
      *session,\n\tMgmtd__FeCommitConfigReq *commcfg_req)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:901,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:904,1
    - Dst: strlcpy
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:905,1
    - Dst: mgmt_fe_adapter_cleanup_old_conn
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:908,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:915,1
    - Dst: mgmt_fe_create_session
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:921,1
    - Dst: fe_adapter_send_session_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:923,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:929,1
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:934,1
    - Dst: fe_adapter_send_session_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:936,1
    - Dst: mgmt_fe_cleanup_session
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:938,1
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:942,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:944,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:948,1
    - Dst: mgmt_fe_session_handle_lockds_req_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:950,1
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:954,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:957,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:962,1
    - Dst: mgmt_fe_session_handle_setcfg_req_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:965,1
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:969,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:971,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:974,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:975,1
    - Dst: mgmt_fe_session_handle_commit_config_req_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:978,1
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:982,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:983,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:986,1
    - Dst: mgmt_fe_session_handle_get_req_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:989,1
    - Dst: MGMTD_FE_ADAPTER_ERR
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:993,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 2
    argNames:
    - adapter
    - fe_msg
    argTypes:
    - struct mgmt_fe_client_adapter*
    - Mgmtd__FeMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 889
    functionDepth: 6
    functionLinenumber: 889
    functionLinenumberEnd: 1021
    functionName: mgmt_fe_adapter_handle_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_fe_session_handle_setcfg_req_msg
    - mgmt_fe_adapter_cleanup_old_conn
    - strlen
    - mgmt_session_id2ctx
    - mgmt_fe_cleanup_session
    - mgmt_fe_session_handle_get_req_msg
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_create_session
    - strlcpy
    - mgmt_ds_id2name
    - mgmt_fe_session_handle_commit_config_req_msg
    - MGMTD_FE_ADAPTER_ERR
    - fe_adapter_send_session_reply
    - mgmt_fe_session_handle_lockds_req_msg
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_adapter_handle_msg(struct mgmt_fe_client_adapter *adapter,\n\t\t\t
      \      Mgmtd__FeMessage *fe_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_message__unpack
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1027,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1030,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1035,1
    - Dst: mgmt_fe_adapter_handle_msg
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1038,1
    - Dst: mgmtd__fe_message__free_unpacked
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1039,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - version
    - data
    - len
    - conn
    argTypes:
    - uint8_t
    - uint8_t*
    - size_t
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1023
    functionDepth: 7
    functionLinenumber: 1023
    functionLinenumberEnd: 1040
    functionName: mgmt_fe_adapter_process_msg
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmtd__fe_message__unpack
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_adapter_handle_msg
    - mgmtd__fe_message__free_unpacked
    linkageType: ''
    returnType: void
    signature: "void mgmt_fe_adapter_process_msg(uint8_t version, uint8_t *data,\n\t\t\t\t\tsize_t
      len, struct msg_conn *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_fe_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1045
    functionName: mgmt_fe_adapter_lock
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_lock(struct mgmt_fe_client_adapter *adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1050,1
    - Dst: mgmt_fe_adapters_del
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1053,1
    - Dst: msg_server_conn_delete
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1054,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1055,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - struct mgmt_fe_client_adapter**
    assertStmts:
    - condition: (a && a->refcount)
      pos:
        line_end: 1049
        line_start: 1049
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 1058
      start: 1047
    functionDepth: 1
    functionLinenumber: 1047
    functionLinenumberEnd: 1058
    functionName: mgmt_fe_adapter_unlock
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 2
    functionsReached:
    - XFREE
    - msg_server_conn_delete
    - mgmt_fe_adapters_del
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_unlock(struct mgmt_fe_client_adapter **adapter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1065,1
    - Dst: mgmt_fe_adapters_init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1068,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1070,1
    - Dst: hash_create
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1072,1
    - Dst: msg_server_init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1075,1
    - Dst: zlog_err
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1078,1
    - Dst: exit
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1079,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts:
    - condition: (!mgmt_loop)
      pos:
        line_end: 1064
        line_start: 1064
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    - condition: (!mgmt_fe_sessions)
      pos:
        line_end: 1069
        line_start: 1069
        source_file: /src/frr/mgmtd/mgmt_fe_adapter.c
    constantsTouched: []
    func_position:
      end: 1081
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1081
    functionName: mgmt_fe_adapter_init
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 1
    functionsReached:
    - exit
    - hash_create
    - zlog_err
    - msg_server_init
    - mgmt_fe_adapters_init
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_ADAPTER_ERR
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1087,1
    - Dst: abort
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1093
    functionName: mgmt_fe_abort_if_session
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - abort
    - MGMTD_FE_ADAPTER_ERR
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_abort_if_session(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_server_cleanup
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1102,1
    - Dst: FOREACH_ADAPTER_IN_LIST
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1105,1
    - Dst: mgmt_fe_adapter_delete
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1106,1
    - Dst: hash_clean_and_free
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1098
    functionDepth: 6
    functionLinenumber: 1098
    functionLinenumberEnd: 1109
    functionName: mgmt_fe_adapter_destroy
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    - mgmt_fe_adapter_delete
    - msg_server_cleanup
    - FOREACH_ADAPTER_IN_LIST
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_destroy(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_find_adapter_by_fd
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1118,1
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1120,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1122,1
    - Dst: mgmt_fe_sessions_init
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1125,1
    - Dst: mgmt_fe_adapter_lock
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1126,1
    - Dst: mgmt_fe_adapters_add_tail
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1127,1
    - Dst: msg_server_conn_create
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1129,1
    - Dst: MGMTD_FE_ADAPTER_DBG
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - conn_fd
    - from
    argTypes:
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1141
    functionName: mgmt_fe_create_adapter
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_fe_adapter_lock
    - mgmt_fe_adapters_add_tail
    - snprintf
    - XCALLOC
    - MGMTD_FE_ADAPTER_DBG
    - mgmt_fe_sessions_init
    - msg_server_conn_create
    - mgmt_fe_find_adapter_by_fd
    linkageType: ''
    returnType: struct msg_conn
    signature: struct msg_conn *mgmt_fe_create_adapter(int conn_fd, union sockunion
      *from)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1151,1
    - Dst: MGMTD_FE_ADAPTER_ERR
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1154,1
    - Dst: fe_adapter_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 7
    argNames:
    - session_id
    - txn_id
    - ds_id
    - req_id
    - result
    - error_if_any
    - implicit_commit
    argTypes:
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - uint64_t
    - enum mgmt_result
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1143
    functionDepth: 3
    functionLinenumber: 1143
    functionLinenumberEnd: 1165
    functionName: mgmt_fe_send_set_cfg_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_session_id2ctx
    - fe_adapter_send_set_cfg_reply
    - MGMTD_FE_ADAPTER_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_set_cfg_reply(uint64_t session_id, uint64_t txn_id,\n\t\t\t\t
      \  Mgmtd__DatastoreId ds_id, uint64_t req_id,\n\t\t\t\t   enum mgmt_result result,\n\t\t\t\t
      \  const char *error_if_any,\n\t\t\t\t   bool implicit_commit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1176,1
    - Dst: fe_adapter_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 8
    argNames:
    - session_id
    - txn_id
    - src_ds_id
    - dst_ds_id
    - req_id
    - validate_only
    - result
    - error_if_any
    argTypes:
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - Mgmtd__DatastoreId
    - uint64_t
    - bool
    - enum mgmt_result
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1167
    functionDepth: 3
    functionLinenumber: 1167
    functionLinenumberEnd: 1183
    functionName: mgmt_fe_send_commit_cfg_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_session_id2ctx
    - fe_adapter_send_commit_cfg_reply
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_commit_cfg_reply(uint64_t session_id, uint64_t txn_id,\n\t\t\t\t
      \     Mgmtd__DatastoreId src_ds_id,\n\t\t\t\t      Mgmtd__DatastoreId dst_ds_id,\n\t\t\t\t
      \     uint64_t req_id, bool validate_only,\n\t\t\t\t      enum mgmt_result result,\n\t\t\t\t
      \     const char *error_if_any)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1193,1
    - Dst: fe_adapter_send_get_reply
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 7
    argNames:
    - session_id
    - txn_id
    - ds_id
    - req_id
    - result
    - data_resp
    - error_if_any
    argTypes:
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - uint64_t
    - enum mgmt_result
    - Mgmtd__YangDataReply*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1185
    functionDepth: 3
    functionLinenumber: 1185
    functionLinenumberEnd: 1200
    functionName: mgmt_fe_send_get_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_session_id2ctx
    - fe_adapter_send_get_reply
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_get_reply(uint64_t session_id, uint64_t txn_id,\n\t\t\t
      \  Mgmtd__DatastoreId ds_id, uint64_t req_id,\n\t\t\t   enum mgmt_result result,\n\t\t\t
      \  Mgmtd__YangDataReply *data_resp,\n\t\t\t   const char *error_if_any)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - session_id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1202
    functionDepth: 2
    functionLinenumber: 1202
    functionLinenumberEnd: 1212
    functionName: mgmt_fe_get_session_setcfg_stats
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_session_id2ctx
    linkageType: ''
    returnType: struct mgmt_setcfg_stats
    signature: 'struct mgmt_setcfg_stats *

      mgmt_fe_get_session_setcfg_stats(uint64_t session_id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_session_id2ctx
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - session_id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1214
    functionDepth: 2
    functionLinenumber: 1214
    functionLinenumberEnd: 1224
    functionName: mgmt_fe_get_session_commit_stats
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_session_id2ctx
    linkageType: ''
    returnType: struct mgmt_commit_stats
    signature: 'struct mgmt_commit_stats *

      mgmt_fe_get_session_commit_stats(uint64_t session_id)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1235,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1239,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1241,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1244,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1246,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1249,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1252,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1254,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1256,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1259,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1260,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1261,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1265,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1266,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1270,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1271,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1274,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1275,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1278,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1284,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1287,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1288,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1291,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1292,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1295,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1296,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1299,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1300,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - vty
    - adapter
    argTypes:
    - struct vty*
    - struct mgmt_fe_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1226
    functionDepth: 3
    functionLinenumber: 1226
    functionLinenumberEnd: 1305
    functionName: mgmt_fe_adapter_cmt_stats_write
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_realtime_to_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void mgmt_fe_adapter_cmt_stats_write(struct vty *vty,\n\t\t\t\t    struct
      mgmt_fe_client_adapter *adapter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1316,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1319,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1321,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1323,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1325,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1326,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1327,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1330,1
    - Dst: mgmt_realtime_to_string
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - adapter
    argTypes:
    - struct vty*
    - struct mgmt_fe_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1307
    functionDepth: 3
    functionLinenumber: 1307
    functionLinenumberEnd: 1334
    functionName: mgmt_fe_adapter_setcfg_stats_write
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_realtime_to_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void mgmt_fe_adapter_setcfg_stats_write(struct vty *vty,\n\t\t\t\t
      \      struct mgmt_fe_client_adapter *adapter)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1343,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1346,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1347,1
    - Dst: mgmt_fe_adapter_setcfg_stats_write
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1349,1
    - Dst: mgmt_fe_adapter_cmt_stats_write
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1350,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1352,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1354,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1355,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1357,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1359,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1363,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1364,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1368,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1370,1
    - Dst: mgmt_fe_sessions_count
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1371,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1372,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1374,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1376,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1378,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1381,1
    - Dst: mgmt_fe_adapters_count
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1382,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 2
    argNames:
    - vty
    - detail
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1336
    functionDepth: 4
    functionLinenumber: 1336
    functionLinenumberEnd: 1383
    functionName: mgmt_fe_adapter_status_write
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - vty_out
    - mgmt_fe_adapter_setcfg_stats_write
    - mgmt_fe_sessions_count
    - mgmt_ds_id2name
    - mgmt_fe_adapter_cmt_stats_write
    - mgmt_fe_adapters_count
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_status_write(struct vty *vty, bool detail)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1346,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1347,1
    - Dst: mgmt_fe_adapter_setcfg_stats_write
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1349,1
    - Dst: mgmt_fe_adapter_cmt_stats_write
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1350,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1352,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1354,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1355,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1357,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1359,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1363,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1364,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1368,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1370,1
    - Dst: mgmt_fe_sessions_count
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1371,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1372,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1374,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1376,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1345
    functionDepth: 4
    functionLinenumber: 1345
    functionLinenumberEnd: 1380
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 1
    functionsReached:
    - vty_out
    - mgmt_fe_adapter_setcfg_stats_write
    - mgmt_fe_sessions_count
    - mgmt_ds_id2name
    - mgmt_fe_adapter_cmt_stats_write
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (adapter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1354,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1355,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1357,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1359,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1363,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1364,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1353
    functionDepth: 1
    functionLinenumber: 1353
    functionLinenumberEnd: 1369
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 1
    functionsReached:
    - mgmt_ds_id2name
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_SESSION_IN_LIST (adapter, session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1363,1
    - Dst: mgmt_ds_id2name
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1360
    functionDepth: 1
    functionLinenumber: 1360
    functionLinenumberEnd: 1366
    functionName: FOREACH_MGMTD_DS_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_id2name
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_DS_ID (ds_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - config
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1385
    functionDepth: 0
    functionLinenumber: 1385
    functionLinenumberEnd: 1388
    functionName: mgmt_fe_adapter_perf_measurement
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_perf_measurement(struct vty *vty, bool config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1396,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1390
    functionDepth: 0
    functionLinenumber: 1390
    functionLinenumberEnd: 1403
    functionName: mgmt_fe_adapter_reset_perf_stats
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_adapter_reset_perf_stats(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1396,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1402
    functionName: FOREACH_ADAPTER_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void FOREACH_ADAPTER_IN_LIST (adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_fe_adapter.c:1399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1398
    functionDepth: 0
    functionLinenumber: 1398
    functionLinenumberEnd: 1401
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_fe_adapter.c
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void FOREACH_SESSION_IN_LIST (adapter, session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/mgmtd/mgmt_main.c:53,1
    - Dst: mgmt_terminate
      Src: /src/frr/mgmtd/mgmt_main.c:66,1
    - Dst: zlog_info
      Src: /src/frr/mgmtd/mgmt_main.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 78
    functionName: sighup
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached:
    - mgmt_terminate
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/mgmtd/mgmt_main.c:83,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_main.c:84,1
    - Dst: mgmt_terminate
      Src: /src/frr/mgmtd/mgmt_main.c:87,1
    - Dst: mgmt_exit
      Src: /src/frr/mgmtd/mgmt_main.c:89,1
    - Dst: exit
      Src: /src/frr/mgmtd/mgmt_main.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (mm->terminating == false)
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/frr/mgmtd/mgmt_main.c
    constantsTouched: []
    func_position:
      end: 92
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 92
    functionName: sigint
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached:
    - mgmt_terminate
    - exit
    - mgmt_exit
    - zlog_notice
    - assert
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/mgmtd/mgmt_main.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: sigusr1
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_main.c:110,1
    - Dst: frr_early_fini
      Src: /src/frr/mgmtd/mgmt_main.c:112,1
    - Dst: frr_pthread_stop_all
      Src: /src/frr/mgmtd/mgmt_main.c:115,1
    - Dst: mgmt_vrf_terminate
      Src: /src/frr/mgmtd/mgmt_main.c:117,1
    - Dst: frr_fini
      Src: /src/frr/mgmtd/mgmt_main.c:119,1
    - Dst: exit
      Src: /src/frr/mgmtd/mgmt_main.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts:
    - condition: (status == 0)
      pos:
        line_end: 109
        line_start: 109
        source_file: /src/frr/mgmtd/mgmt_main.c
    constantsTouched: []
    func_position:
      end: 121
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 121
    functionName: mgmt_exit
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 1
    functionsReached:
    - exit
    - mgmt_vrf_terminate
    - frr_fini
    - frr_early_fini
    - frr_pthread_stop_all
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_exit(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/mgmtd/mgmt_main.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 147
    functionName: mgmt_vrf_new
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int mgmt_vrf_new(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/mgmtd/mgmt_main.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 154
    functionName: mgmt_vrf_delete
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int mgmt_vrf_delete(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/mgmtd/mgmt_main.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: mgmt_vrf_enable
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int mgmt_vrf_enable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/mgmtd/mgmt_main.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 169
    functionName: mgmt_vrf_disable
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int mgmt_vrf_disable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 174
    functionName: mgmt_vrf_config_write
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mgmt_vrf_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/mgmtd/mgmt_main.c:178,1
    - Dst: vrf_cmd_init
      Src: /src/frr/mgmtd/mgmt_main.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: mgmt_vrf_init
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 0
    functionsReached:
    - vrf_init
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void mgmt_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_terminate
      Src: /src/frr/mgmtd/mgmt_main.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: mgmt_vrf_terminate
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 1
    functionsReached:
    - vrf_terminate
    linkageType: ''
    returnType: void
    signature: void mgmt_vrf_terminate(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/mgmtd/mgmt_main.c:236,1
    - Dst: frr_opt_add
      Src: /src/frr/mgmtd/mgmt_main.c:237,1
    - Dst: frr_getopt
      Src: /src/frr/mgmtd/mgmt_main.c:243,1
    - Dst: strchr
      Src: /src/frr/mgmtd/mgmt_main.c:245,1
    - Dst: fprintf
      Src: /src/frr/mgmtd/mgmt_main.c:246,1
    - Dst: atoi
      Src: /src/frr/mgmtd/mgmt_main.c:259,1
    - Dst: frr_help_exit
      Src: /src/frr/mgmtd/mgmt_main.c:262,1
    - Dst: mgmt_master_init
      Src: /src/frr/mgmtd/mgmt_main.c:268,1
    - Dst: frr_init
      Src: /src/frr/mgmtd/mgmt_main.c:268,1
    - Dst: mgmt_vrf_init
      Src: /src/frr/mgmtd/mgmt_main.c:271,1
    - Dst: mgmt_init
      Src: /src/frr/mgmtd/mgmt_main.c:274,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_main.c:276,1
    - Dst: frr_config_fork
      Src: /src/frr/mgmtd/mgmt_main.c:281,1
    - Dst: frr_run
      Src: /src/frr/mgmtd/mgmt_main.c:283,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 287
    functionName: main
    functionSourceFile: /src/frr/mgmtd/mgmt_main.c
    functionUses: 11
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - snprintf
    - frr_getopt
    - frr_init
    - frr_config_fork
    - mgmt_master_init
    - mgmt_vrf_init
    - fprintf
    - strchr
    - mgmt_init
    - frr_run
    - atoi
    - frr_opt_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum mgmt_txn_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: mgmt_txn_type2str
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mgmt_txn_type2str(enum mgmt_txn_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: MGMTD_TXN_DBG
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_TXN_DBG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: MGMTD_TXN_ERR
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_TXN_ERR(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: MGMTD_TXN_LOCK
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_TXN_LOCK(txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: MGMTD_TXN_UNLOCK
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_TXN_UNLOCK(txn)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - cmt_phase
    argTypes:
    - enum mgmt_commit_phase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 74
    functionName: mgmt_commit_phase2str
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mgmt_commit_phase2str(enum mgmt_commit_phase cmt_phase)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - list
    - ','
    - batch
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: FOREACH_TXN_CFG_BATCH_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_TXN_CFG_BATCH_IN_LIST(list, batch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - list
    - ','
    - req
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: FOREACH_TXN_REQ_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_TXN_REQ_IN_LIST(list, req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mm
    - ','
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 252
    functionName: FOREACH_TXN_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_TXN_IN_LIST(mm, txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_commit_phase2str
      Src: /src/frr/mgmtd/mgmt_txn.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - txn
    - curr
    argTypes:
    - struct mgmt_txn_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 266
    functionName: mgmt_txn_commit_phase_str
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_commit_phase2str
    linkageType: ''
    returnType: char
    signature: "char *mgmt_txn_commit_phase_str(struct mgmt_txn_ctx *txn,\n\t\t\t\t\t\t
      \   bool curr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_txn.c:290,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:292,1
    - Dst: MGMTD_TXN_LOCK
      Src: /src/frr/mgmtd/mgmt_txn.c:296,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:297,1
    - Dst: mgmt_txn_batches_add_tail
      Src: /src/frr/mgmtd/mgmt_txn.c:298,1
    - Dst: mgmt_be_adapter_lock
      Src: /src/frr/mgmtd/mgmt_txn.c:304,1
    - Dst: hash_get
      Src: /src/frr/mgmtd/mgmt_txn.c:310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - txn
    - id
    - be_adapter
    argTypes:
    - struct mgmt_txn_ctx*
    - enum mgmt_be_client_id
    - struct mgmt_be_client_adapter*
    assertStmts:
    - condition: (txn->commit_cfg_req)
      pos:
        line_end: 296
        line_start: 296
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (batch)
      pos:
        line_end: 291
        line_start: 291
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 314
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 314
    functionName: mgmt_txn_cfg_batch_alloc
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_batches_add_tail
    - XCALLOC
    - MGMTD_TXN_LOCK
    - hash_get
    - mgmt_be_adapter_lock
    - assert
    linkageType: ''
    returnType: struct mgmt_txn_be_cfg_batch
    signature: "struct mgmt_txn_be_cfg_batch *\nmgmt_txn_cfg_batch_alloc(struct mgmt_txn_ctx
      *txn, enum mgmt_be_client_id id,\n\t\t\t struct mgmt_be_client_adapter *be_adapter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:321,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:324,1
    - Dst: hash_release
      Src: /src/frr/mgmtd/mgmt_txn.c:327,1
    - Dst: mgmt_txn_batches_del
      Src: /src/frr/mgmtd/mgmt_txn.c:328,1
    - Dst: mgmt_txn_batches_del
      Src: /src/frr/mgmtd/mgmt_txn.c:329,1
    - Dst: mgmt_be_adapter_unlock
      Src: /src/frr/mgmtd/mgmt_txn.c:332,1
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:336,1
    - Dst: MGMTD_TXN_UNLOCK
      Src: /src/frr/mgmtd/mgmt_txn.c:341,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_txn.c:343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - batch
    argTypes:
    - struct mgmt_txn_be_cfg_batch**
    assertStmts:
    - condition: ((*batch)->txn && (*batch)->txn->type == MGMTD_TXN_TYPE_CONFIG)
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 345
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 345
    functionName: mgmt_txn_cfg_batch_free
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - MGMTD_TXN_UNLOCK
    - mgmt_be_adapter_unlock
    - free
    - MGMTD_TXN_DBG
    - mgmt_txn_batches_del
    - XFREE
    - hash_release
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_cfg_batch_free(struct mgmt_txn_be_cfg_batch **batch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash2
      Src: /src/frr/mgmtd/mgmt_txn.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 353
    functionName: mgmt_txn_cfgbatch_hash_key
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - jhash2
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mgmt_txn_cfgbatch_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: mgmt_txn_cfgbatch_hash_cmp
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mgmt_txn_cfgbatch_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_cfg_batch_free
      Src: /src/frr/mgmtd/mgmt_txn.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 368
    functionName: mgmt_txn_cfgbatch_hash_free
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_cfg_batch_free
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_cfgbatch_hash_free(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/mgmtd/mgmt_txn.c:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - txn
    - batch_id
    argTypes:
    - struct mgmt_txn_ctx*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 383
    functionName: mgmt_txn_cfgbatch_id2ctx
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct mgmt_txn_be_cfg_batch
    signature: 'struct mgmt_txn_be_cfg_batch *

      mgmt_txn_cfgbatch_id2ctx(struct mgmt_txn_ctx *txn, uint64_t batch_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_TXN_CFG_BATCH_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:392,1
    - Dst: mgmt_txn_cfg_batch_free
      Src: /src/frr/mgmtd/mgmt_txn.c:393,1
    - Dst: mgmt_txn_batches_fini
      Src: /src/frr/mgmtd/mgmt_txn.c:395,1
    - Dst: FOREACH_TXN_CFG_BATCH_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:398,1
    - Dst: mgmt_txn_cfg_batch_free
      Src: /src/frr/mgmtd/mgmt_txn.c:399,1
    - Dst: mgmt_txn_batches_fini
      Src: /src/frr/mgmtd/mgmt_txn.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - txn
    - id
    argTypes:
    - struct mgmt_txn_ctx*
    - enum mgmt_be_client_id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 385
    functionDepth: 3
    functionLinenumber: 385
    functionLinenumberEnd: 404
    functionName: mgmt_txn_cleanup_be_cfg_batches
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_cfg_batch_free
    - mgmt_txn_batches_fini
    - FOREACH_TXN_CFG_BATCH_IN_LIST
    linkageType: ''
    returnType: void
    signature: "void mgmt_txn_cleanup_be_cfg_batches(struct mgmt_txn_ctx *txn,\n\t\t\t\t\t
      \   enum mgmt_be_client_id id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_txn.c:413,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:414,1
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_txn.c:422,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:424,1
    - Dst: mgmt_txn_reqs_add_tail
      Src: /src/frr/mgmtd/mgmt_txn.c:425,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:426,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:432,1
    - Dst: mgmt_txn_batches_init
      Src: /src/frr/mgmtd/mgmt_txn.c:437,1
    - Dst: mgmt_txn_batches_init
      Src: /src/frr/mgmtd/mgmt_txn.c:439,1
    - Dst: hash_create
      Src: /src/frr/mgmtd/mgmt_txn.c:444,1
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_txn.c:450,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:452,1
    - Dst: mgmt_txn_reqs_add_tail
      Src: /src/frr/mgmtd/mgmt_txn.c:453,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:454,1
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_txn.c:460,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:462,1
    - Dst: mgmt_txn_reqs_add_tail
      Src: /src/frr/mgmtd/mgmt_txn.c:463,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:464,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 3
    argNames:
    - txn
    - req_id
    - req_event
    argTypes:
    - struct mgmt_txn_ctx*
    - uint64_t
    - enum mgmt_txn_event
    assertStmts:
    - condition: (txn_req->req.set_cfg)
      pos:
        line_end: 423
        line_start: 423
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn_req)
      pos:
        line_end: 413
        line_start: 413
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn_req->req.get_data)
      pos:
        line_end: 461
        line_start: 461
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn_req->req.get_data)
      pos:
        line_end: 451
        line_start: 451
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 471
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 471
    functionName: mgmt_txn_req_alloc
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_batches_init
    - XCALLOC
    - hash_create
    - MGMTD_TXN_DBG
    - assert
    - mgmt_txn_reqs_add_tail
    linkageType: ''
    returnType: struct mgmt_txn_req
    signature: "struct mgmt_txn_req *mgmt_txn_req_alloc(struct mgmt_txn_ctx *txn,\n\t\t\t\t\t
      \      uint64_t req_id,\n\t\t\t\t\t       enum mgmt_txn_event req_event)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:493,1
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:506,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:512,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_txn.c:515,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:518,1
    - Dst: mgmt_txn_cleanup_be_cfg_batches
      Src: /src/frr/mgmtd/mgmt_txn.c:536,1
    - Dst: hash_clean
      Src: /src/frr/mgmtd/mgmt_txn.c:538,1
    - Dst: hash_free
      Src: /src/frr/mgmtd/mgmt_txn.c:540,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:548,1
    - Dst: mgmt_txn_send_be_txn_delete
      Src: /src/frr/mgmtd/mgmt_txn.c:551,1
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:559,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:563,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_txn.c:567,1
    - Dst: nb_config_free
      Src: /src/frr/mgmtd/mgmt_txn.c:571,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_txn.c:573,1
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:579,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:584,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_txn.c:588,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_txn.c:590,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 1
    argNames:
    - txn_req
    argTypes:
    - struct mgmt_txn_req**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 478
    functionDepth: 4
    functionLinenumber: 478
    functionLinenumberEnd: 595
    functionName: mgmt_txn_req_free
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - mgmt_txn_send_be_txn_delete
    - mgmt_txn_cleanup_be_cfg_batches
    - hash_free
    - free
    - MGMTD_TXN_DBG
    - XFREE
    - hash_clean
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_req_free(struct mgmt_txn_req **txn_req)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_txn.c:629,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:630,1
    - Dst: mgmt_fe_get_session_commit_stats
      Src: /src/frr/mgmtd/mgmt_txn.c:631,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:633,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:635,1
    - Dst: FOREACH_TXN_REQ_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:638,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:639,1
    - Dst: mgmt_fe_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:642,1
    - Dst: mgmt_ds_get_nb_config
      Src: /src/frr/mgmtd/mgmt_txn.c:652,1
    - Dst: mgmt_fe_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:654,1
    - Dst: nb_candidate_edit_config_changes
      Src: /src/frr/mgmtd/mgmt_txn.c:665,1
    - Dst: mgmt_fe_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:672,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:682,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:682,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:683,1
    - Dst: mgmt_ds_is_locked
      Src: /src/frr/mgmtd/mgmt_txn.c:686,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:688,1
    - Dst: strerror
      Src: /src/frr/mgmtd/mgmt_txn.c:692,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:693,1
    - Dst: mgmt_txn_send_commit_config_req
      Src: /src/frr/mgmtd/mgmt_txn.c:699,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:712,1
    - Dst: mgmt_fe_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:714,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:720,1
    - Dst: mgmt_txn_req_free
      Src: /src/frr/mgmtd/mgmt_txn.c:730,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:737,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:739,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:742,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 55
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (mgmt_txn_reqs_count(&txn->set_cfg_reqs) == 1)
      pos:
        line_end: 681
        line_start: 681
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn)
      pos:
        line_end: 629
        line_start: 629
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn_req->req_event == MGMTD_TXN_PROC_SETCFG)
      pos:
        line_end: 638
        line_start: 638
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn_req->req.set_cfg->dst_ds_ctx)
      pos:
        line_end: 682
        line_start: 682
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 744
      start: 616
    functionDepth: 5
    functionLinenumber: 616
    functionLinenumberEnd: 744
    functionName: mgmt_txn_process_set_cfg
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_is_locked
    - mgmt_txn_req_free
    - nb_candidate_edit_config_changes
    - strerror
    - mgmt_ds_get_nb_config
    - MGMTD_TXN_DBG
    - mgmt_fe_send_set_cfg_reply
    - mgmt_txn_register_event
    - MGMTD_TXN_ERR
    - mgmt_txn_send_commit_cfg_reply
    - mgmt_txn_reqs_count
    - EVENT_ARG
    - gettimeofday
    - mgmt_txn_send_commit_config_req
    - FOREACH_TXN_REQ_IN_LIST
    - mgmt_fe_get_session_commit_stats
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_process_set_cfg(struct event *thread)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:763,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:772,1
    - Dst: mgmt_fe_send_set_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:779,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:786,1
    - Dst: EVENT_OFF
      Src: /src/frr/mgmtd/mgmt_txn.c:794,1
    - Dst: mgmt_ds_copy_dss
      Src: /src/frr/mgmtd/mgmt_txn.c:808,1
    - Dst: mgmt_ds_copy_dss
      Src: /src/frr/mgmtd/mgmt_txn.c:820,1
    - Dst: mgmt_ds_copy_dss
      Src: /src/frr/mgmtd/mgmt_txn.c:831,1
    - Dst: mgmt_ds_unlock
      Src: /src/frr/mgmtd/mgmt_txn.c:839,1
    - Dst: mgmt_ds_unlock
      Src: /src/frr/mgmtd/mgmt_txn.c:840,1
    - Dst: mgmt_history_rollback_complete
      Src: /src/frr/mgmtd/mgmt_txn.c:848,1
    - Dst: mgmt_txn_req_free
      Src: /src/frr/mgmtd/mgmt_txn.c:852,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:860,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 32
    argCount: 3
    argNames:
    - txn
    - result
    - error_if_any
    argTypes:
    - struct mgmt_txn_ctx*
    - enum mgmt_result
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 746
    functionDepth: 5
    functionLinenumber: 746
    functionLinenumberEnd: 863
    functionName: mgmt_txn_send_commit_cfg_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_ds_copy_dss
    - mgmt_txn_req_free
    - mgmt_ds_unlock
    - mgmt_fe_send_set_cfg_reply
    - mgmt_history_rollback_complete
    - mgmt_fe_send_commit_cfg_reply
    - EVENT_OFF
    - mgmt_txn_register_event
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_send_commit_cfg_reply(struct mgmt_txn_ctx *txn,\n\t\t\t\t\t
      \ enum mgmt_result result,\n\t\t\t\t\t  const char *error_if_any)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_batches_del
      Src: /src/frr/mgmtd/mgmt_txn.c:873,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:876,1
    - Dst: mgmt_commit_phase2str
      Src: /src/frr/mgmtd/mgmt_txn.c:879,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:880,1
    - Dst: mgmt_txn_batches_add_tail
      Src: /src/frr/mgmtd/mgmt_txn.c:884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - cmtcfg_req
    - batch
    - src_list
    - dst_list
    - update_commit_phase
    - to_phase
    argTypes:
    - struct mgmt_commit_cfg_req*
    - struct mgmt_txn_be_cfg_batch*
    - struct mgmt_txn_batches_head*
    - struct mgmt_txn_batches_head*
    - bool
    - enum mgmt_commit_phase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 865
    functionDepth: 2
    functionLinenumber: 865
    functionLinenumberEnd: 885
    functionName: mgmt_move_txn_cfg_batch_to_next
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_commit_phase2str
    - MGMTD_TXN_DBG
    - mgmt_txn_batches_del
    - mgmt_txn_commit_phase_str
    - mgmt_txn_batches_add_tail
    linkageType: ''
    returnType: void
    signature: "void mgmt_move_txn_cfg_batch_to_next(struct mgmt_commit_cfg_req *cmtcfg_req,\n\t\t\t\tstruct
      mgmt_txn_be_cfg_batch *batch,\n\t\t\t\tstruct mgmt_txn_batches_head *src_list,\n\t\t\t\tstruct
      mgmt_txn_batches_head *dst_list,\n\t\t\t\tbool update_commit_phase,\n\t\t\t\tenum
      mgmt_commit_phase to_phase)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_move_txn_cfg_batch_to_next
      Src: /src/frr/mgmtd/mgmt_txn.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - txn
    - cmtcfg_req
    - src_list
    - dst_list
    - update_commit_phase
    - to_phase
    argTypes:
    - struct mgmt_txn_ctx*
    - struct mgmt_commit_cfg_req*
    - struct mgmt_txn_batches_head*
    - struct mgmt_txn_batches_head*
    - bool
    - enum mgmt_commit_phase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 887
    functionDepth: 3
    functionLinenumber: 887
    functionLinenumberEnd: 901
    functionName: mgmt_move_txn_cfg_batches
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_move_txn_cfg_batch_to_next
    linkageType: ''
    returnType: void
    signature: "void mgmt_move_txn_cfg_batches(struct mgmt_txn_ctx *txn,\n\t\t\t\t
      \     struct mgmt_commit_cfg_req *cmtcfg_req,\n\t\t\t\t      struct mgmt_txn_batches_head
      *src_list,\n\t\t\t\t      struct mgmt_txn_batches_head *dst_list,\n\t\t\t\t
      \     bool update_commit_phase,\n\t\t\t\t      enum mgmt_commit_phase to_phase)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_move_txn_cfg_batch_to_next
      Src: /src/frr/mgmtd/mgmt_txn.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 896
    functionDepth: 3
    functionLinenumber: 896
    functionLinenumberEnd: 900
    functionName: FOREACH_TXN_CFG_BATCH_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_move_txn_cfg_batch_to_next
    linkageType: ''
    returnType: void
    signature: void FOREACH_TXN_CFG_BATCH_IN_LIST (src_list, batch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:910,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:911,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:912,1
    - Dst: mgmt_txn_batches_count
      Src: /src/frr/mgmtd/mgmt_txn.c:919,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:932,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:933,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:934,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:942,1
    - Dst: mgmt_move_txn_cfg_batches
      Src: /src/frr/mgmtd/mgmt_txn.c:948,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:952,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - txn
    - cmtcfg_req
    argTypes:
    - struct mgmt_txn_ctx*
    - struct mgmt_commit_cfg_req*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 903
    functionDepth: 4
    functionLinenumber: 903
    functionLinenumberEnd: 955
    functionName: mgmt_try_move_commit_to_next_phase
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_batches_count
    - mgmt_move_txn_cfg_batches
    - MGMTD_TXN_DBG
    - mgmt_txn_register_event
    - mgmt_txn_commit_phase_str
    linkageType: ''
    returnType: int
    signature: "int mgmt_try_move_commit_to_next_phase(struct mgmt_txn_ctx *txn,\n\t\t\t\t
      \  struct mgmt_commit_cfg_req *cmtcfg_req)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_batches_count
      Src: /src/frr/mgmtd/mgmt_txn.c:919,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 930
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_batches_count
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_move_txn_cfg_batches
      Src: /src/frr/mgmtd/mgmt_txn.c:948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 945
    functionDepth: 4
    functionLinenumber: 945
    functionLinenumberEnd: 950
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_move_txn_cfg_batches
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:969,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:972,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:973,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:975,1
    - Dst: mgmt_move_txn_cfg_batches
      Src: /src/frr/mgmtd/mgmt_txn.c:979,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:982,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:983,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:984,1
    - Dst: mgmt_try_move_commit_to_next_phase
      Src: /src/frr/mgmtd/mgmt_txn.c:989,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - txn
    - adapter
    argTypes:
    - struct mgmt_txn_ctx*
    - struct mgmt_be_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 957
    functionDepth: 5
    functionLinenumber: 957
    functionLinenumberEnd: 992
    functionName: mgmt_move_be_commit_to_next_phase
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_commit_phase_str
    - mgmt_move_txn_cfg_batches
    - mgmt_try_move_commit_to_next_phase
    - MGMTD_TXN_DBG
    linkageType: ''
    returnType: int
    signature: "int mgmt_move_be_commit_to_next_phase(struct mgmt_txn_ctx *txn,\n\t\t\t\t
      \ struct mgmt_be_client_adapter *adapter)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lyd_path
      Src: /src/frr/mgmtd/mgmt_txn.c:1020,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1022,1
    - Dst: lyd_get_value
      Src: /src/frr/mgmtd/mgmt_txn.c:1028,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1032,1
    - Dst: mgmt_be_get_subscr_info_for_xpath
      Src: /src/frr/mgmtd/mgmt_txn.c:1035,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_txn.c:1037,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_txn.c:1038,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1046,1
    - Dst: mgmt_txn_cfg_batch_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:1056,1
    - Dst: memcpy
      Src: /src/frr/mgmtd/mgmt_txn.c:1061,1
    - Dst: mgmt_yang_cfg_data_req_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1065,1
    - Dst: mgmt_yang_data_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1077,1
    - Dst: strdup
      Src: /src/frr/mgmtd/mgmt_txn.c:1080,1
    - Dst: mgmt_yang_data_value_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1082,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1098,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_txn.c:1107,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1110,1
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:1113,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1118,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 60
    argCount: 2
    argNames:
    - txn_req
    - changes
    argTypes:
    - struct mgmt_txn_req*
    - struct nb_config_cbs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 994
    functionDepth: 6
    functionLinenumber: 994
    functionLinenumberEnd: 1126
    functionName: mgmt_txn_create_config_batches
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_yang_data_init
    - mgmt_be_get_adapter_by_id
    - strlen
    - snprintf
    - mgmt_yang_cfg_data_req_init
    - free
    - MGMTD_TXN_DBG
    - mgmt_be_get_subscr_info_for_xpath
    - mgmt_txn_cfg_batch_alloc
    - strdup
    - mgmt_txn_send_commit_cfg_reply
    - MGMTD_TXN_ERR
    - lyd_get_value
    - lyd_path
    - mgmt_yang_data_value_init
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_create_config_batches(struct mgmt_txn_req *txn_req,\n\t\t\t\t\t
      \ struct nb_config_cbs *changes)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lyd_path
      Src: /src/frr/mgmtd/mgmt_txn.c:1020,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1022,1
    - Dst: lyd_get_value
      Src: /src/frr/mgmtd/mgmt_txn.c:1028,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1032,1
    - Dst: mgmt_be_get_subscr_info_for_xpath
      Src: /src/frr/mgmtd/mgmt_txn.c:1035,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_txn.c:1037,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_txn.c:1038,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1046,1
    - Dst: mgmt_txn_cfg_batch_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:1056,1
    - Dst: memcpy
      Src: /src/frr/mgmtd/mgmt_txn.c:1061,1
    - Dst: mgmt_yang_cfg_data_req_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1065,1
    - Dst: mgmt_yang_data_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1077,1
    - Dst: strdup
      Src: /src/frr/mgmtd/mgmt_txn.c:1080,1
    - Dst: mgmt_yang_data_value_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1082,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1098,1
    - Dst: snprintf
      Src: /src/frr/mgmtd/mgmt_txn.c:1107,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1110,1
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:1113,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1012
    functionDepth: 6
    functionLinenumber: 1012
    functionLinenumberEnd: 1114
    functionName: RB_FOREACH_SAFE
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 13
    functionsReached:
    - mgmt_yang_data_init
    - mgmt_be_get_adapter_by_id
    - strlen
    - snprintf
    - mgmt_yang_cfg_data_req_init
    - free
    - MGMTD_TXN_DBG
    - mgmt_be_get_subscr_info_for_xpath
    - mgmt_txn_cfg_batch_alloc
    - strdup
    - mgmt_txn_send_commit_cfg_reply
    - MGMTD_TXN_ERR
    - lyd_get_value
    - lyd_path
    - mgmt_yang_data_value_init
    - memcpy
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH_SAFE (cb, nb_config_cbs, changes, nxt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1046,1
    - Dst: mgmt_txn_cfg_batch_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:1056,1
    - Dst: memcpy
      Src: /src/frr/mgmtd/mgmt_txn.c:1061,1
    - Dst: mgmt_yang_cfg_data_req_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1065,1
    - Dst: mgmt_yang_data_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1077,1
    - Dst: strdup
      Src: /src/frr/mgmtd/mgmt_txn.c:1080,1
    - Dst: mgmt_yang_data_value_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1082,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1098,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1040
    functionDepth: 2
    functionLinenumber: 1040
    functionLinenumberEnd: 1104
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_yang_data_init
    - mgmt_be_get_adapter_by_id
    - mgmt_yang_cfg_data_req_init
    - mgmt_txn_cfg_batch_alloc
    - strdup
    - MGMTD_TXN_DBG
    - mgmt_yang_data_value_init
    - memcpy
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:1138,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:1139,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1147,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1155,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1163,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1170,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1182,1
    - Dst: mgmt_ds_get_nb_config
      Src: /src/frr/mgmtd/mgmt_txn.c:1186,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1189,1
    - Dst: RB_EMPTY
      Src: /src/frr/mgmtd/mgmt_txn.c:1201,1
    - Dst: nb_config_diff
      Src: /src/frr/mgmtd/mgmt_txn.c:1208,1
    - Dst: mgmt_ds_get_nb_config
      Src: /src/frr/mgmtd/mgmt_txn.c:1208,1
    - Dst: RB_EMPTY
      Src: /src/frr/mgmtd/mgmt_txn.c:1216,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1221,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:1229,1
    - Dst: nb_candidate_validate_yang
      Src: /src/frr/mgmtd/mgmt_txn.c:1240,1
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_txn.c:1243,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_txn.c:1243,1
    - Dst: strlcpy
      Src: /src/frr/mgmtd/mgmt_txn.c:1244,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1245,1
    - Dst: nb_candidate_validate_code
      Src: /src/frr/mgmtd/mgmt_txn.c:1255,1
    - Dst: strncmp
      Src: /src/frr/mgmtd/mgmt_txn.c:1258,1
    - Dst: strlen
      Src: /src/frr/mgmtd/mgmt_txn.c:1258,1
    - Dst: strlcpy
      Src: /src/frr/mgmtd/mgmt_txn.c:1259,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1260,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1270,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:1278,1
    - Dst: mgmt_txn_create_config_batches
      Src: /src/frr/mgmtd/mgmt_txn.c:1286,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:1295,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:1301,1
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/mgmtd/mgmt_txn.c:1305,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 103
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_txn_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1128
    functionDepth: 7
    functionLinenumber: 1128
    functionLinenumberEnd: 1308
    functionName: mgmt_txn_prepare_config
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - nb_config_diff_del_changes
    - strlen
    - memset
    - mgmt_txn_create_config_batches
    - strlcpy
    - mgmt_ds_get_nb_config
    - strncmp
    - nb_candidate_validate_yang
    - mgmt_txn_send_commit_cfg_reply
    - nb_config_diff
    - gettimeofday
    - mgmt_txn_register_event
    - RB_EMPTY
    - nb_candidate_validate_code
    linkageType: ''
    returnType: int
    signature: int mgmt_txn_prepare_config(struct mgmt_txn_ctx *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1317,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1322,1
    - Dst: mgmt_be_send_txn_req
      Src: /src/frr/mgmtd/mgmt_txn.c:1323,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1324,1
    - Dst: FOREACH_TXN_CFG_BATCH_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:1330,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1347,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:1350,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:1351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_txn_ctx*
    assertStmts:
    - condition: (txn->type == MGMTD_TXN_TYPE_CONFIG && txn->commit_cfg_req)
      pos:
        line_end: 1316
        line_start: 1316
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1354
      start: 1310
    functionDepth: 6
    functionLinenumber: 1310
    functionLinenumberEnd: 1354
    functionName: mgmt_txn_send_be_txn_create
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - FOREACH_TXN_CFG_BATCH_IN_LIST
    - mgmt_be_send_txn_req
    - MGMTD_TXN_DBG
    - mgmt_txn_send_commit_cfg_reply
    - mgmt_txn_commit_phase_str
    - assert
    linkageType: ''
    returnType: int
    signature: int mgmt_txn_send_be_txn_create(struct mgmt_txn_ctx *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1322,1
    - Dst: mgmt_be_send_txn_req
      Src: /src/frr/mgmtd/mgmt_txn.c:1323,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1324,1
    - Dst: FOREACH_TXN_CFG_BATCH_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:1330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1320
    functionDepth: 6
    functionLinenumber: 1320
    functionLinenumberEnd: 1337
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - mgmt_txn_send_commit_cfg_reply
    - FOREACH_TXN_CFG_BATCH_IN_LIST
    - mgmt_be_send_txn_req
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1364,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1367,1
    - Dst: mgmt_txn_batches_count
      Src: /src/frr/mgmtd/mgmt_txn.c:1371,1
    - Dst: FOREACH_TXN_CFG_BATCH_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:1372,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1374,1
    - Dst: mgmt_be_send_cfgdata_req
      Src: /src/frr/mgmtd/mgmt_txn.c:1379,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1385,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1388,1
    - Dst: mgmt_move_txn_cfg_batch_to_next
      Src: /src/frr/mgmtd/mgmt_txn.c:1396,1
    - Dst: mgmt_try_move_commit_to_next_phase
      Src: /src/frr/mgmtd/mgmt_txn.c:1407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - txn
    - adapter
    argTypes:
    - struct mgmt_txn_ctx*
    - struct mgmt_be_client_adapter*
    assertStmts:
    - condition: (txn->type == MGMTD_TXN_TYPE_CONFIG && txn->commit_cfg_req)
      pos:
        line_end: 1363
        line_start: 1363
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (cmtcfg_req->subscr_info.xpath_subscr[adapter->id])
      pos:
        line_end: 1366
        line_start: 1366
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (cmtcfg_req->next_phase == MGMTD_COMMIT_PHASE_SEND_CFG)
      pos:
        line_end: 1373
        line_start: 1373
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1410
      start: 1356
    functionDepth: 6
    functionLinenumber: 1356
    functionLinenumberEnd: 1410
    functionName: mgmt_txn_send_be_cfg_data
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - FOREACH_TXN_CFG_BATCH_IN_LIST
    - mgmt_txn_batches_count
    - mgmt_try_move_commit_to_next_phase
    - mgmt_txn_send_commit_cfg_reply
    - mgmt_be_send_cfgdata_req
    - MGMTD_TXN_ERR
    - mgmt_move_txn_cfg_batch_to_next
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_send_be_cfg_data(struct mgmt_txn_ctx *txn,\n\t\t\t\t
      \    struct mgmt_be_client_adapter *adapter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1418,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1419,1
    - Dst: mgmt_txn_batches_count
      Src: /src/frr/mgmtd/mgmt_txn.c:1419,1
    - Dst: mgmt_be_send_txn_req
      Src: /src/frr/mgmtd/mgmt_txn.c:1424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - txn
    - adapter
    argTypes:
    - struct mgmt_txn_ctx*
    - struct mgmt_be_client_adapter*
    assertStmts:
    - condition: (txn->type == MGMTD_TXN_TYPE_CONFIG)
      pos:
        line_end: 1417
        line_start: 1417
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (!mgmt_txn_batches_count(&cmtcfg_req->curr_batches[adapter->id]))
      pos:
        line_end: 1418
        line_start: 1418
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1425
      start: 1412
    functionDepth: 3
    functionLinenumber: 1412
    functionLinenumberEnd: 1425
    functionName: mgmt_txn_send_be_txn_delete
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_be_send_txn_req
    - mgmt_txn_batches_count
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_send_be_txn_delete(struct mgmt_txn_ctx *txn,\n\t\t\t\t
      \      struct mgmt_be_client_adapter *adapter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_txn.c:1431,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1432,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1434,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1439,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (txn->type == MGMTD_TXN_TYPE_CONFIG)
      pos:
        line_end: 1433
        line_start: 1433
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn)
      pos:
        line_end: 1431
        line_start: 1431
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1450
      start: 1427
    functionDepth: 6
    functionLinenumber: 1427
    functionLinenumberEnd: 1450
    functionName: mgmt_txn_cfg_commit_timedout
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_send_commit_cfg_reply
    - MGMTD_TXN_ERR
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_cfg_commit_timedout(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1468,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1475,1
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1482,1
    - Dst: mgmt_be_send_cfgapply_req
      Src: /src/frr/mgmtd/mgmt_txn.c:1487,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1488,1
    - Dst: UNSET_FLAG
      Src: /src/frr/mgmtd/mgmt_txn.c:1495,1
    - Dst: FOREACH_TXN_CFG_BATCH_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:1498,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_txn_ctx*
    assertStmts:
    - condition: (txn->type == MGMTD_TXN_TYPE_CONFIG && txn->commit_cfg_req)
      pos:
        line_end: 1467
        line_start: 1467
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1512
      start: 1460
    functionDepth: 6
    functionLinenumber: 1460
    functionLinenumberEnd: 1512
    functionName: mgmt_txn_send_be_cfg_apply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - FOREACH_TXN_CFG_BATCH_IN_LIST
    - UNSET_FLAG
    - mgmt_txn_send_commit_cfg_reply
    - mgmt_be_send_cfgapply_req
    - assert
    linkageType: ''
    returnType: int
    signature: int mgmt_txn_send_be_cfg_apply(struct mgmt_txn_ctx *txn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_get_adapter_by_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1482,1
    - Dst: mgmt_be_send_cfgapply_req
      Src: /src/frr/mgmtd/mgmt_txn.c:1487,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1488,1
    - Dst: UNSET_FLAG
      Src: /src/frr/mgmtd/mgmt_txn.c:1495,1
    - Dst: FOREACH_TXN_CFG_BATCH_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:1498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1479
    functionDepth: 6
    functionLinenumber: 1479
    functionLinenumberEnd: 1501
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_be_get_adapter_by_id
    - FOREACH_TXN_CFG_BATCH_IN_LIST
    - UNSET_FLAG
    - mgmt_txn_send_commit_cfg_reply
    - mgmt_be_send_cfgapply_req
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_txn.c:1519,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1520,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1522,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:1525,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:1526,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1528,1
    - Dst: mgmt_txn_prepare_config
      Src: /src/frr/mgmtd/mgmt_txn.c:1532,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:1536,1
    - Dst: mgmt_txn_send_be_txn_create
      Src: /src/frr/mgmtd/mgmt_txn.c:1541,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:1545,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1552,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1553,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1557,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1558,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:1565,1
    - Dst: mgmt_txn_send_be_cfg_apply
      Src: /src/frr/mgmtd/mgmt_txn.c:1572,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:1576,1
    - Dst: EVENT_OFF
      Src: /src/frr/mgmtd/mgmt_txn.c:1585,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1586,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1592,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:1595,1
    - Dst: mgmt_txn_commit_phase_str
      Src: /src/frr/mgmtd/mgmt_txn.c:1596,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (txn->commit_cfg_req)
      pos:
        line_end: 1527
        line_start: 1527
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (cmtcfg_req->next_phase == MGMTD_COMMIT_PHASE_APPLY_CFG)
      pos:
        line_end: 1551
        line_start: 1551
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (cmtcfg_req->next_phase == MGMTD_COMMIT_PHASE_APPLY_CFG)
      pos:
        line_end: 1556
        line_start: 1556
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn)
      pos:
        line_end: 1519
        line_start: 1519
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1597
      start: 1514
    functionDepth: 8
    functionLinenumber: 1514
    functionLinenumberEnd: 1597
    functionName: mgmt_txn_process_commit_cfg
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_prepare_config
    - mgmt_txn_send_be_txn_create
    - MGMTD_TXN_DBG
    - mgmt_txn_send_be_cfg_apply
    - EVENT_OFF
    - mgmt_txn_send_commit_cfg_reply
    - gettimeofday
    - EVENT_ARG
    - mgmt_txn_commit_phase_str
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_process_commit_cfg(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/mgmtd/mgmt_txn.c:1603,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - get_reply
    argTypes:
    - struct mgmt_get_data_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1605
    functionName: mgmt_init_get_data_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: void
    signature: void mgmt_init_get_data_reply(struct mgmt_get_data_reply *get_reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:1613,1
    - Dst: zlog_debug
      Src: /src/frr/mgmtd/mgmt_txn.c:1617,1
    - Dst: free
      Src: /src/frr/mgmtd/mgmt_txn.c:1619,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:1625,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:1626,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:1627,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:1629,1
    - Dst: mgmt_init_get_data_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - get_reply
    argTypes:
    - struct mgmt_get_data_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1607
    functionDepth: 2
    functionLinenumber: 1607
    functionLinenumberEnd: 1632
    functionName: mgmt_reset_get_data_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - free
    - mgmt_init_get_data_reply
    - memset
    linkageType: ''
    returnType: void
    signature: void mgmt_reset_get_data_reply(struct mgmt_get_data_reply *get_reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_reset_get_data_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - get_data
    argTypes:
    - struct mgmt_get_data_req*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1634
    functionDepth: 3
    functionLinenumber: 1634
    functionLinenumberEnd: 1638
    functionName: mgmt_reset_get_data_reply_buf
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_reset_get_data_reply
    linkageType: ''
    returnType: void
    signature: void mgmt_reset_get_data_reply_buf(struct mgmt_get_data_req *get_data)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_yang_data_reply_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1651,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1657,1
    - Dst: mgmt_fe_send_get_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1662,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1666,1
    - Dst: mgmt_fe_send_get_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1674,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1678,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1689,1
    - Dst: mgmt_reset_get_data_reply_buf
      Src: /src/frr/mgmtd/mgmt_txn.c:1696,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - txn_req
    - get_req
    argTypes:
    - struct mgmt_txn_req*
    - struct mgmt_get_data_req*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1697
      start: 1640
    functionDepth: 4
    functionLinenumber: 1640
    functionLinenumberEnd: 1697
    functionName: mgmt_txn_send_getcfg_reply_data
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_fe_send_get_reply
    - mgmt_yang_data_reply_init
    - MGMTD_TXN_DBG
    - mgmt_reset_get_data_reply_buf
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: void
    signature: "void mgmt_txn_send_getcfg_reply_data(struct mgmt_txn_req *txn_req,\n\t\t\t\t\t
      \   struct mgmt_get_data_req *get_req)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1717,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1721,1
    - Dst: mgmt_yang_data_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1726,1
    - Dst: strdup
      Src: /src/frr/mgmtd/mgmt_txn.c:1727,1
    - Dst: mgmt_yang_data_value_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1728,1
    - Dst: lyd_get_value
      Src: /src/frr/mgmtd/mgmt_txn.c:1730,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1735,1
    - Dst: mgmt_txn_send_getcfg_reply_data
      Src: /src/frr/mgmtd/mgmt_txn.c:1739,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - xpath
    - node
    - nb_node
    - ctx
    argTypes:
    - char*
    - struct lyd_node*
    - struct nb_node*
    - void*
    assertStmts:
    - condition: "(txn_req->req_event == MGMTD_TXN_PROC_GETCFG ||\n\t       txn_req->req_event
        == MGMTD_TXN_PROC_GETDATA)"
      pos:
        line_end: 1717
        line_start: 1716
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (get_req)
      pos:
        line_end: 1720
        line_start: 1720
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1740
      start: 1699
    functionDepth: 5
    functionLinenumber: 1699
    functionLinenumberEnd: 1740
    functionName: mgmt_txn_iter_and_send_get_cfg_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_yang_data_init
    - MGMTD_TXN_DBG
    - strdup
    - mgmt_txn_send_getcfg_reply_data
    - lyd_get_value
    - mgmt_yang_data_value_init
    - assert
    linkageType: ''
    returnType: void
    signature: "void mgmt_txn_iter_and_send_get_cfg_reply(const char *xpath,\n\t\t\t\t\t\t
      struct lyd_node *node,\n\t\t\t\t\t\t struct nb_node *nb_node,\n\t\t\t\t\t\t
      void *ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_txn.c:1753,1
    - Dst: mgmt_fe_send_get_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1756,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1770,1
    - Dst: mgmt_init_get_data_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1772,1
    - Dst: mgmt_ds_iter_data
      Src: /src/frr/mgmtd/mgmt_txn.c:1778,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1782,1
    - Dst: mgmt_fe_send_get_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1784,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1790,1
    - Dst: mgmt_txn_send_getcfg_reply_data
      Src: /src/frr/mgmtd/mgmt_txn.c:1793,1
    - Dst: mgmt_txn_req_free
      Src: /src/frr/mgmtd/mgmt_txn.c:1802,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - txn
    - txn_req
    - root
    argTypes:
    - struct mgmt_txn_ctx*
    - struct mgmt_txn_req*
    - struct nb_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1742
    functionDepth: 5
    functionLinenumber: 1742
    functionLinenumberEnd: 1805
    functionName: mgmt_txn_get_config
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_ds_iter_data
    - mgmt_txn_req_free
    - mgmt_fe_send_get_reply
    - XCALLOC
    - mgmt_init_get_data_reply
    - MGMTD_TXN_DBG
    - mgmt_txn_send_getcfg_reply_data
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_get_config(struct mgmt_txn_ctx *txn,\n\t\t\t       struct
      mgmt_txn_req *txn_req,\n\t\t\t       struct nb_config *root)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_txn.c:1815,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1816,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1818,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:1820,1
    - Dst: FOREACH_TXN_REQ_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:1823,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1825,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1827,1
    - Dst: mgmt_txn_get_config
      Src: /src/frr/mgmtd/mgmt_txn.c:1829,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:1830,1
    - Dst: mgmt_txn_req_free
      Src: /src/frr/mgmtd/mgmt_txn.c:1844,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:1856,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1857,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:1859,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (txn)
      pos:
        line_end: 1815
        line_start: 1815
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn_req->req_event == MGMTD_TXN_PROC_GETCFG)
      pos:
        line_end: 1824
        line_start: 1824
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (cfg_root)
      pos:
        line_end: 1826
        line_start: 1826
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1861
      start: 1807
    functionDepth: 6
    functionLinenumber: 1807
    functionLinenumberEnd: 1861
    functionName: mgmt_txn_process_get_cfg
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_req_free
    - mgmt_txn_get_config
    - MGMTD_TXN_DBG
    - mgmt_txn_register_event
    - MGMTD_TXN_ERR
    - mgmt_txn_reqs_count
    - EVENT_ARG
    - FOREACH_TXN_REQ_IN_LIST
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_process_get_cfg(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_txn.c:1869,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1870,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1872,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:1874,1
    - Dst: FOREACH_TXN_REQ_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:1877,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1878,1
    - Dst: mgmt_fe_send_get_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:1884,1
    - Dst: mgmt_txn_req_free
      Src: /src/frr/mgmtd/mgmt_txn.c:1893,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:1904,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1905,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:1907,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (txn)
      pos:
        line_end: 1869
        line_start: 1869
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn_req->req_event == MGMTD_TXN_PROC_GETDATA)
      pos:
        line_end: 1877
        line_start: 1877
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1909
      start: 1863
    functionDepth: 5
    functionLinenumber: 1863
    functionLinenumberEnd: 1909
    functionName: mgmt_txn_process_get_data
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_req_free
    - mgmt_fe_send_get_reply
    - MGMTD_TXN_DBG
    - mgmt_txn_register_event
    - mgmt_txn_reqs_count
    - EVENT_ARG
    - FOREACH_TXN_REQ_IN_LIST
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_process_get_data(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - cm
    - session_id
    - type
    argTypes:
    - struct mgmt_master*
    - uint64_t
    - enum mgmt_txn_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1911
    functionDepth: 0
    functionLinenumber: 1911
    functionLinenumberEnd: 1923
    functionName: mgmt_fe_find_txn_by_session_id
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mgmt_txn_ctx
    signature: "struct mgmt_txn_ctx *\nmgmt_fe_find_txn_by_session_id(struct mgmt_master
      *cm, uint64_t session_id,\n\t\t\t       enum mgmt_txn_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1917
    functionDepth: 0
    functionLinenumber: 1917
    functionLinenumberEnd: 1920
    functionName: FOREACH_TXN_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_TXN_IN_LIST (cm, txn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_config_txn_in_progress
      Src: /src/frr/mgmtd/mgmt_txn.c:1935,1
    - Dst: mgmt_fe_find_txn_by_session_id
      Src: /src/frr/mgmtd/mgmt_txn.c:1940,1
    - Dst: XCALLOC
      Src: /src/frr/mgmtd/mgmt_txn.c:1942,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:1943,1
    - Dst: mgmt_txns_add_tail
      Src: /src/frr/mgmtd/mgmt_txn.c:1947,1
    - Dst: mgmt_txn_reqs_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1948,1
    - Dst: mgmt_txn_reqs_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1949,1
    - Dst: mgmt_txn_reqs_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1950,1
    - Dst: mgmt_txn_reqs_init
      Src: /src/frr/mgmtd/mgmt_txn.c:1951,1
    - Dst: hash_get
      Src: /src/frr/mgmtd/mgmt_txn.c:1957,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:1959,1
    - Dst: mgmt_txn_type2str
      Src: /src/frr/mgmtd/mgmt_txn.c:1960,1
    - Dst: MGMTD_TXN_LOCK
      Src: /src/frr/mgmtd/mgmt_txn.c:1965,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - session_id
    - type
    argTypes:
    - uint64_t
    - enum mgmt_txn_type
    assertStmts:
    - condition: (txn)
      pos:
        line_end: 1942
        line_start: 1942
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 1970
      start: 1925
    functionDepth: 1
    functionLinenumber: 1925
    functionLinenumberEnd: 1970
    functionName: mgmt_txn_create_new
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txns_add_tail
    - XCALLOC
    - mgmt_txn_type2str
    - mgmt_txn_reqs_init
    - mgmt_fe_find_txn_by_session_id
    - MGMTD_TXN_DBG
    - MGMTD_TXN_LOCK
    - mgmt_config_txn_in_progress
    - hash_get
    - assert
    linkageType: ''
    returnType: struct mgmt_txn_ctx
    signature: "struct mgmt_txn_ctx *mgmt_txn_create_new(uint64_t session_id,\n\t\t\t\t\t\tenum
      mgmt_txn_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_TXN_UNLOCK
      Src: /src/frr/mgmtd/mgmt_txn.c:1974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_txn_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1972
    functionDepth: 1
    functionLinenumber: 1972
    functionLinenumberEnd: 1975
    functionName: mgmt_txn_delete
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - MGMTD_TXN_UNLOCK
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_delete(struct mgmt_txn_ctx **txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash2
      Src: /src/frr/mgmtd/mgmt_txn.c:1981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1977
    functionDepth: 1
    functionLinenumber: 1977
    functionLinenumberEnd: 1983
    functionName: mgmt_txn_hash_key
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - jhash2
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mgmt_txn_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1985
    functionDepth: 0
    functionLinenumber: 1985
    functionLinenumberEnd: 1991
    functionName: mgmt_txn_hash_cmp
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mgmt_txn_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_delete
      Src: /src/frr/mgmtd/mgmt_txn.c:1997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1993
    functionDepth: 2
    functionLinenumber: 1993
    functionLinenumberEnd: 1998
    functionName: mgmt_txn_hash_free
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_delete
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_hash_free(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/mgmtd/mgmt_txn.c:2005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 2000
    functionDepth: 1
    functionLinenumber: 2000
    functionLinenumberEnd: 2007
    functionName: mgmt_txn_hash_init
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_hash_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean
      Src: /src/frr/mgmtd/mgmt_txn.c:2014,1
    - Dst: hash_free
      Src: /src/frr/mgmtd/mgmt_txn.c:2015,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2009
    functionDepth: 1
    functionLinenumber: 2009
    functionLinenumberEnd: 2017
    functionName: mgmt_txn_hash_destroy
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - hash_clean
    - hash_free
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_hash_destroy(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/mgmtd/mgmt_txn.c:2028,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - txn_id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 2019
    functionDepth: 1
    functionLinenumber: 2019
    functionLinenumberEnd: 2031
    functionName: mgmt_txn_id2ctx
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct mgmt_txn_ctx
    signature: struct mgmt_txn_ctx *mgmt_txn_id2ctx(uint64_t txn_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2036,1
    - Dst: mgmt_txn_type2str
      Src: /src/frr/mgmtd/mgmt_txn.c:2037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - txn
    - file
    - line
    argTypes:
    - struct mgmt_txn_ctx*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2033
    functionDepth: 1
    functionLinenumber: 2033
    functionLinenumberEnd: 2039
    functionName: mgmt_txn_lock
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_type2str
    - MGMTD_TXN_DBG
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_lock(struct mgmt_txn_ctx *txn, const char *file, int
      line)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:2044,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2047,1
    - Dst: mgmt_txn_type2str
      Src: /src/frr/mgmtd/mgmt_txn.c:2048,1
    - Dst: EVENT_OFF
      Src: /src/frr/mgmtd/mgmt_txn.c:2054,1
    - Dst: EVENT_OFF
      Src: /src/frr/mgmtd/mgmt_txn.c:2055,1
    - Dst: EVENT_OFF
      Src: /src/frr/mgmtd/mgmt_txn.c:2056,1
    - Dst: EVENT_OFF
      Src: /src/frr/mgmtd/mgmt_txn.c:2057,1
    - Dst: hash_release
      Src: /src/frr/mgmtd/mgmt_txn.c:2058,1
    - Dst: mgmt_txns_del
      Src: /src/frr/mgmtd/mgmt_txn.c:2059,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2061,1
    - Dst: mgmt_txn_type2str
      Src: /src/frr/mgmtd/mgmt_txn.c:2063,1
    - Dst: XFREE
      Src: /src/frr/mgmtd/mgmt_txn.c:2066,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - txn
    - file
    - line
    argTypes:
    - struct mgmt_txn_ctx**
    - char*
    - int
    assertStmts:
    - condition: (*txn && (*txn)->refcount)
      pos:
        line_end: 2043
        line_start: 2043
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 2070
      start: 2041
    functionDepth: 1
    functionLinenumber: 2041
    functionLinenumberEnd: 2070
    functionName: mgmt_txn_unlock
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_type2str
    - MGMTD_TXN_DBG
    - EVENT_OFF
    - mgmt_txns_del
    - XFREE
    - hash_release
    - assert
    linkageType: ''
    returnType: void
    signature: "void mgmt_txn_unlock(struct mgmt_txn_ctx **txn, const char *file,\n\t\t\t
      \   int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_delete
      Src: /src/frr/mgmtd/mgmt_txn.c:2076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_txn_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2072
    functionDepth: 2
    functionLinenumber: 2072
    functionLinenumberEnd: 2077
    functionName: mgmt_txn_cleanup_txn
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_delete
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_cleanup_txn(struct mgmt_txn_ctx **txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_TXN_IN_LIST
      Src: /src/frr/mgmtd/mgmt_txn.c:2086,1
    - Dst: mgmt_txn_cleanup_txn
      Src: /src/frr/mgmtd/mgmt_txn.c:2087,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 2079
    functionDepth: 3
    functionLinenumber: 2079
    functionLinenumberEnd: 2088
    functionName: mgmt_txn_cleanup_all_txns
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_cleanup_txn
    - FOREACH_TXN_IN_LIST
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_cleanup_all_txns(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/mgmtd/mgmt_txn.c:2094,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:2095,1
    - Dst: mgmt_txn_cleanup_txn
      Src: /src/frr/mgmtd/mgmt_txn.c:2097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (txn)
      pos:
        line_end: 2094
        line_start: 2094
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 2098
      start: 2090
    functionDepth: 3
    functionLinenumber: 2090
    functionLinenumberEnd: 2098
    functionName: mgmt_txn_cleanup
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_cleanup_txn
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_cleanup(struct event *thread)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:2106,1
    - Dst: event_add_timer_tv
      Src: /src/frr/mgmtd/mgmt_txn.c:2110,1
    - Dst: event_add_timer_tv
      Src: /src/frr/mgmtd/mgmt_txn.c:2114,1
    - Dst: event_add_timer_tv
      Src: /src/frr/mgmtd/mgmt_txn.c:2118,1
    - Dst: event_add_timer_tv
      Src: /src/frr/mgmtd/mgmt_txn.c:2122,1
    - Dst: event_add_timer_msec
      Src: /src/frr/mgmtd/mgmt_txn.c:2126,1
    - Dst: event_add_timer_tv
      Src: /src/frr/mgmtd/mgmt_txn.c:2132,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - txn
    - event
    argTypes:
    - struct mgmt_txn_ctx*
    - enum mgmt_txn_event
    assertStmts:
    - condition: (mgmt_txn_mm && mgmt_txn_tm)
      pos:
        line_end: 2105
        line_start: 2105
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 2135
      start: 2100
    functionDepth: 1
    functionLinenumber: 2100
    functionLinenumberEnd: 2135
    functionName: mgmt_txn_register_event
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 6
    functionsReached:
    - event_add_timer_msec
    - event_add_timer_tv
    - assert
    linkageType: ''
    returnType: void
    signature: "void mgmt_txn_register_event(struct mgmt_txn_ctx *txn,\n\t\t\t\t    enum
      mgmt_txn_event event)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:2140,1
    - Dst: mgmt_txns_init
      Src: /src/frr/mgmtd/mgmt_txn.c:2144,1
    - Dst: mgmt_txn_hash_init
      Src: /src/frr/mgmtd/mgmt_txn.c:2145,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:2146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - mm
    - tm
    argTypes:
    - struct mgmt_master*
    - struct event_loop*
    assertStmts:
    - condition: '(!"MGMTD TXN: Call txn_init() only once")'
      pos:
        line_end: 2139
        line_start: 2139
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (!mm->cfg_txn)
      pos:
        line_end: 2145
        line_start: 2145
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 2150
      start: 2137
    functionDepth: 2
    functionLinenumber: 2137
    functionLinenumberEnd: 2150
    functionName: mgmt_txn_init
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txns_init
    - mgmt_txn_hash_init
    - assert
    linkageType: ''
    returnType: int
    signature: int mgmt_txn_init(struct mgmt_master *mm, struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_cleanup_all_txns
      Src: /src/frr/mgmtd/mgmt_txn.c:2154,1
    - Dst: mgmt_txn_hash_destroy
      Src: /src/frr/mgmtd/mgmt_txn.c:2155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2152
    functionDepth: 4
    functionLinenumber: 2152
    functionLinenumberEnd: 2156
    functionName: mgmt_txn_destroy
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txn_hash_destroy
    - mgmt_txn_cleanup_all_txns
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_destroy(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2158
    functionDepth: 0
    functionLinenumber: 2158
    functionLinenumberEnd: 2164
    functionName: mgmt_config_txn_in_progress
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mgmt_config_txn_in_progress(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_create_new
      Src: /src/frr/mgmtd/mgmt_txn.c:2170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - session_id
    - type
    argTypes:
    - uint64_t
    - enum mgmt_txn_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2166
    functionDepth: 2
    functionLinenumber: 2166
    functionLinenumberEnd: 2172
    functionName: mgmt_create_txn
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 3
    functionsReached:
    - mgmt_txn_create_new
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t mgmt_create_txn(uint64_t session_id, enum mgmt_txn_type type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2178,1
    - Dst: mgmt_txn_delete
      Src: /src/frr/mgmtd/mgmt_txn.c:2182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - txn_id
    argTypes:
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2184
      start: 2174
    functionDepth: 2
    functionLinenumber: 2174
    functionLinenumberEnd: 2184
    functionName: mgmt_destroy_txn
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 4
    functionsReached:
    - mgmt_txn_delete
    - mgmt_txn_id2ctx
    linkageType: ''
    returnType: void
    signature: void mgmt_destroy_txn(uint64_t *txn_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2200,1
    - Dst: mgmt_txn_reqs_count
      Src: /src/frr/mgmtd/mgmt_txn.c:2204,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:2205,1
    - Dst: mgmt_txn_req_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:2210,1
    - Dst: mgmt_ds_find_data_node_by_xpath
      Src: /src/frr/mgmtd/mgmt_txn.c:2223,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2232,1
    - Dst: strlcpy
      Src: /src/frr/mgmtd/mgmt_txn.c:2238,1
    - Dst: strdup
      Src: /src/frr/mgmtd/mgmt_txn.c:2243,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2247,1
    - Dst: mgmt_fe_get_session_setcfg_stats
      Src: /src/frr/mgmtd/mgmt_txn.c:2256,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:2257,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 9
    argNames:
    - txn_id
    - req_id
    - ds_id
    - ds_ctx
    - cfg_req
    - num_req
    - implicit_commit
    - dst_ds_id
    - dst_ds_ctx
    argTypes:
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - struct mgmt_ds_ctx*
    - Mgmtd__YangCfgDataReq**
    - size_t
    - bool
    - Mgmtd__DatastoreId
    - struct mgmt_ds_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2260
      start: 2186
    functionDepth: 3
    functionLinenumber: 2186
    functionLinenumberEnd: 2260
    functionName: mgmt_txn_send_set_config_req
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txn_req_alloc
    - strlcpy
    - mgmt_txn_id2ctx
    - mgmt_ds_find_data_node_by_xpath
    - MGMTD_TXN_DBG
    - strdup
    - mgmt_fe_get_session_setcfg_stats
    - mgmt_txn_register_event
    - mgmt_txn_reqs_count
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_send_set_config_req(uint64_t txn_id, uint64_t req_id,\n\t\t\t\t
      Mgmtd__DatastoreId ds_id,\n\t\t\t\t struct mgmt_ds_ctx *ds_ctx,\n\t\t\t\t Mgmtd__YangCfgDataReq
      **cfg_req,\n\t\t\t\t size_t num_req, bool implicit_commit,\n\t\t\t\t Mgmtd__DatastoreId
      dst_ds_id,\n\t\t\t\t struct mgmt_ds_ctx *dst_ds_ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2273,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:2278,1
    - Dst: mgmt_txn_req_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:2284,1
    - Dst: mgmt_fe_get_session_commit_stats
      Src: /src/frr/mgmtd/mgmt_txn.c:2293,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:2298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 9
    argNames:
    - txn_id
    - req_id
    - src_ds_id
    - src_ds_ctx
    - dst_ds_id
    - dst_ds_ctx
    - validate_only
    - abort
    - implicit
    argTypes:
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - struct mgmt_ds_ctx*
    - Mgmtd__DatastoreId
    - struct mgmt_ds_ctx*
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2262
    functionDepth: 3
    functionLinenumber: 2262
    functionLinenumberEnd: 2300
    functionName: mgmt_txn_send_commit_config_req
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 2
    functionsReached:
    - mgmt_txn_req_alloc
    - mgmt_txn_id2ctx
    - mgmt_txn_register_event
    - mgmt_fe_get_session_commit_stats
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_send_commit_config_req(uint64_t txn_id, uint64_t req_id,\n\t\t\t\t
      \   Mgmtd__DatastoreId src_ds_id,\n\t\t\t\t    struct mgmt_ds_ctx *src_ds_ctx,\n\t\t\t\t
      \   Mgmtd__DatastoreId dst_ds_id,\n\t\t\t\t    struct mgmt_ds_ctx *dst_ds_ctx,\n\t\t\t\t
      \   bool validate_only, bool abort,\n\t\t\t\t    bool implicit)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:2311,1
    - Dst: mgmt_be_get_adapter_config
      Src: /src/frr/mgmtd/mgmt_txn.c:2315,1
    - Dst: RB_EMPTY
      Src: /src/frr/mgmtd/mgmt_txn.c:2316,1
    - Dst: SET_FLAG
      Src: /src/frr/mgmtd/mgmt_txn.c:2317,1
    - Dst: mgmt_txn_create_new
      Src: /src/frr/mgmtd/mgmt_txn.c:2326,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:2328,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2333,1
    - Dst: mgmt_txn_req_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:2340,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:2353,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:2372,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - adapter
    - connect
    argTypes:
    - struct mgmt_be_client_adapter*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2302
    functionDepth: 6
    functionLinenumber: 2302
    functionLinenumberEnd: 2381
    functionName: mgmt_txn_notify_be_adapter_conn
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 2
    functionsReached:
    - memset
    - mgmt_txn_req_alloc
    - mgmt_be_get_adapter_config
    - MGMTD_TXN_DBG
    - SET_FLAG
    - mgmt_txn_register_event
    - mgmt_txn_send_commit_cfg_reply
    - RB_EMPTY
    - mgmt_txn_create_new
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_notify_be_adapter_conn(struct mgmt_be_client_adapter
      *adapter,\n\t\t\t\t    bool connect)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:2372,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2361
    functionDepth: 6
    functionLinenumber: 2361
    functionLinenumberEnd: 2377
    functionName: FOREACH_TXN_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txn_send_commit_cfg_reply
    linkageType: ''
    returnType: void
    signature: void FOREACH_TXN_IN_LIST (mgmt_txn_mm, txn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2389,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:2396,1
    - Dst: assert
      Src: /src/frr/mgmtd/mgmt_txn.c:2404,1
    - Dst: mgmt_txn_send_be_cfg_data
      Src: /src/frr/mgmtd/mgmt_txn.c:2410,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:2412,1
    - Dst: mgmt_move_be_commit_to_next_phase
      Src: /src/frr/mgmtd/mgmt_txn.c:2421,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - txn_id
    - create
    - success
    - adapter
    argTypes:
    - uint64_t
    - bool
    - bool
    - struct mgmt_be_client_adapter*
    assertStmts:
    - condition: "(cmtcfg_req->curr_phase ==\n\t\t\t       MGMTD_COMMIT_PHASE_TXN_CREATE)"
      pos:
        line_end: 2404
        line_start: 2403
        source_file: /src/frr/mgmtd/mgmt_txn.c
    - condition: (txn->commit_cfg_req)
      pos:
        line_end: 2395
        line_start: 2395
        source_file: /src/frr/mgmtd/mgmt_txn.c
    constantsTouched: []
    func_position:
      end: 2425
      start: 2383
    functionDepth: 7
    functionLinenumber: 2383
    functionLinenumberEnd: 2425
    functionName: mgmt_txn_notify_be_txn_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_move_be_commit_to_next_phase
    - mgmt_txn_id2ctx
    - mgmt_txn_send_be_cfg_data
    - mgmt_txn_send_commit_cfg_reply
    - assert
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_notify_be_txn_reply(uint64_t txn_id, bool create, bool
      success,\n\t\t\t\t struct mgmt_be_client_adapter *adapter)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2435,1
    - Dst: mgmt_txn_cfgbatch_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2443,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:2448,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:2452,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2460,1
    - Dst: mgmt_move_txn_cfg_batch_to_next
      Src: /src/frr/mgmtd/mgmt_txn.c:2464,1
    - Dst: mgmt_try_move_commit_to_next_phase
      Src: /src/frr/mgmtd/mgmt_txn.c:2469,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 5
    argNames:
    - txn_id
    - batch_id
    - success
    - error_if_any
    - adapter
    argTypes:
    - uint64_t
    - uint64_t
    - bool
    - char*
    - struct mgmt_be_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 2427
    functionDepth: 6
    functionLinenumber: 2427
    functionLinenumberEnd: 2472
    functionName: mgmt_txn_notify_be_cfgdata_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txn_cfgbatch_id2ctx
    - mgmt_txn_id2ctx
    - MGMTD_TXN_DBG
    - mgmt_try_move_commit_to_next_phase
    - mgmt_txn_send_commit_cfg_reply
    - mgmt_move_txn_cfg_batch_to_next
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_notify_be_cfgdata_reply(uint64_t txn_id, uint64_t batch_id,\n\t\t\t\t
      \    bool success, char *error_if_any,\n\t\t\t\t     struct mgmt_be_client_adapter
      *adapter)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2484,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:2491,1
    - Dst: mgmt_txn_send_commit_cfg_reply
      Src: /src/frr/mgmtd/mgmt_txn.c:2496,1
    - Dst: mgmt_txn_cfgbatch_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2505,1
    - Dst: mgmt_move_txn_cfg_batch_to_next
      Src: /src/frr/mgmtd/mgmt_txn.c:2508,1
    - Dst: mgmt_txn_batches_count
      Src: /src/frr/mgmtd/mgmt_txn.c:2515,1
    - Dst: SET_FLAG
      Src: /src/frr/mgmtd/mgmt_txn.c:2520,1
    - Dst: mgmt_txn_send_be_txn_delete
      Src: /src/frr/mgmtd/mgmt_txn.c:2521,1
    - Dst: mgmt_try_move_commit_to_next_phase
      Src: /src/frr/mgmtd/mgmt_txn.c:2524,1
    - Dst: gettimeofday
      Src: /src/frr/mgmtd/mgmt_txn.c:2526,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 6
    argNames:
    - txn_id
    - success
    - batch_ids
    - num_batch_ids
    - error_if_any
    - adapter
    argTypes:
    - uint64_t
    - bool
    - uint64_t[]
    - size_t
    - char*
    - struct mgmt_be_client_adapter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2529
      start: 2474
    functionDepth: 6
    functionLinenumber: 2474
    functionLinenumberEnd: 2529
    functionName: mgmt_txn_notify_be_cfg_apply_reply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txn_batches_count
    - mgmt_txn_send_be_txn_delete
    - mgmt_txn_cfgbatch_id2ctx
    - mgmt_txn_id2ctx
    - SET_FLAG
    - mgmt_try_move_commit_to_next_phase
    - mgmt_move_txn_cfg_batch_to_next
    - mgmt_txn_send_commit_cfg_reply
    - gettimeofday
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_notify_be_cfg_apply_reply(uint64_t txn_id, bool success,\n\t\t\t\t
      \      uint64_t batch_ids[],\n\t\t\t\t       size_t num_batch_ids, char *error_if_any,\n\t\t\t\t
      \      struct mgmt_be_client_adapter *adapter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_txn_id2ctx
      Src: /src/frr/mgmtd/mgmt_txn.c:2540,1
    - Dst: mgmt_txn_req_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:2546,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2552,1
    - Dst: strdup
      Src: /src/frr/mgmtd/mgmt_txn.c:2554,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:2558,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - txn_id
    - req_id
    - ds_id
    - cfg_root
    - data_req
    - num_reqs
    argTypes:
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - struct nb_config*
    - Mgmtd__YangGetDataReq**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2561
      start: 2531
    functionDepth: 2
    functionLinenumber: 2531
    functionLinenumberEnd: 2561
    functionName: mgmt_txn_send_get_req
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txn_req_alloc
    - mgmt_txn_id2ctx
    - MGMTD_TXN_DBG
    - strdup
    - mgmt_txn_register_event
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_send_get_req(uint64_t txn_id, uint64_t req_id,\n\t\t\t
      \ Mgmtd__DatastoreId ds_id, struct nb_config *cfg_root,\n\t\t\t  Mgmtd__YangGetDataReq
      **data_req, size_t num_reqs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2567,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2570,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2571,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2572,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2574,1
    - Dst: mgmt_txn_type2str
      Src: /src/frr/mgmtd/mgmt_txn.c:2575,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2576,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2578,1
    - Dst: mgmt_txns_count
      Src: /src/frr/mgmtd/mgmt_txn.c:2579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2563
    functionDepth: 1
    functionLinenumber: 2563
    functionLinenumberEnd: 2580
    functionName: mgmt_txn_status_write
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 0
    functionsReached:
    - mgmt_txn_type2str
    - vty_out
    - mgmt_txns_count
    linkageType: ''
    returnType: void
    signature: void mgmt_txn_status_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2570,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2571,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2572,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2574,1
    - Dst: mgmt_txn_type2str
      Src: /src/frr/mgmtd/mgmt_txn.c:2575,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_txn.c:2576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2577
      start: 2569
    functionDepth: 1
    functionLinenumber: 2569
    functionLinenumberEnd: 2577
    functionName: FOREACH_TXN_IN_LIST
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - mgmt_txn_type2str
    - vty_out
    linkageType: ''
    returnType: void
    signature: void FOREACH_TXN_IN_LIST (mgmt_txn_mm, txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:2592,1
    - Dst: memset
      Src: /src/frr/mgmtd/mgmt_txn.c:2593,1
    - Dst: nb_config_diff
      Src: /src/frr/mgmtd/mgmt_txn.c:2600,1
    - Dst: mgmt_ds_get_nb_config
      Src: /src/frr/mgmtd/mgmt_txn.c:2600,1
    - Dst: mgmt_ds_get_nb_config
      Src: /src/frr/mgmtd/mgmt_txn.c:2601,1
    - Dst: RB_EMPTY
      Src: /src/frr/mgmtd/mgmt_txn.c:2604,1
    - Dst: mgmt_txn_create_new
      Src: /src/frr/mgmtd/mgmt_txn.c:2616,1
    - Dst: MGMTD_TXN_ERR
      Src: /src/frr/mgmtd/mgmt_txn.c:2618,1
    - Dst: MGMTD_TXN_DBG
      Src: /src/frr/mgmtd/mgmt_txn.c:2623,1
    - Dst: mgmt_txn_req_alloc
      Src: /src/frr/mgmtd/mgmt_txn.c:2629,1
    - Dst: mgmt_txn_register_event
      Src: /src/frr/mgmtd/mgmt_txn.c:2643,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 2
    argNames:
    - src_ds_ctx
    - dst_ds_ctx
    argTypes:
    - struct mgmt_ds_ctx*
    - struct mgmt_ds_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2645
      start: 2582
    functionDepth: 2
    functionLinenumber: 2582
    functionLinenumberEnd: 2645
    functionName: mgmt_txn_rollback_trigger_cfg_apply
    functionSourceFile: /src/frr/mgmtd/mgmt_txn.c
    functionUses: 1
    functionsReached:
    - memset
    - mgmt_txn_req_alloc
    - mgmt_ds_get_nb_config
    - MGMTD_TXN_DBG
    - mgmt_txn_register_event
    - nb_config_diff
    - RB_EMPTY
    - mgmt_txn_create_new
    - MGMTD_TXN_ERR
    linkageType: ''
    returnType: int
    signature: "int mgmt_txn_rollback_trigger_cfg_apply(struct mgmt_ds_ctx *src_ds_ctx,\n\t\t\t\t\tstruct
      mgmt_ds_ctx *dst_ds_ctx)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/mgmtd/mgmt_vty.c:391,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/mgmtd/mgmt_vty.c:392,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/mgmtd/mgmt_vty.c:393,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/mgmtd/mgmt_vty.c:394,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_vty.c:399,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_vty.c:401,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_vty.c:403,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_vty.c:405,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_vty.c:407,1
    - Dst: vty_out
      Src: /src/frr/mgmtd/mgmt_vty.c:409,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - config
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 412
    functionName: write_mgmt_debug_helper
    functionSourceFile: /src/frr/mgmtd/mgmt_vty.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - vty_out
    linkageType: ''
    returnType: int
    signature: int write_mgmt_debug_helper(struct vty *vty, bool config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_mgmt_debug_helper
      Src: /src/frr/mgmtd/mgmt_vty.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 417
    functionName: config_write_mgmt_debug
    functionSourceFile: /src/frr/mgmtd/mgmt_vty.c
    functionUses: 0
    functionsReached:
    - write_mgmt_debug_helper
    linkageType: ''
    returnType: int
    signature: int config_write_mgmt_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_vty_read_configs
      Src: /src/frr/mgmtd/mgmt_vty.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 456
    functionName: mgmt_config_read_in
    functionSourceFile: /src/frr/mgmtd/mgmt_vty.c
    functionUses: 0
    functionsReached:
    - mgmt_vty_read_configs
    linkageType: ''
    returnType: void
    signature: void mgmt_config_read_in(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_vty_init
      Src: /src/frr/mgmtd/mgmt_vty.c:468,1
    - Dst: event_add_event
      Src: /src/frr/mgmtd/mgmt_vty.c:471,1
    - Dst: install_node
      Src: /src/frr/mgmtd/mgmt_vty.c:474,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:476,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:477,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:478,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:479,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:480,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:481,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:482,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:483,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:484,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:485,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:487,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:488,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:489,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:490,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:491,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:492,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:494,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:495,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:498,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:499,1
    - Dst: install_element
      Src: /src/frr/mgmtd/mgmt_vty.c:501,1
    - Dst: mgmt_fe_client_lib_vty_init
      Src: /src/frr/mgmtd/mgmt_vty.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 458
    functionDepth: 2
    functionLinenumber: 458
    functionLinenumberEnd: 507
    functionName: mgmt_vty_init
    functionSourceFile: /src/frr/mgmtd/mgmt_vty.c
    functionUses: 1
    functionsReached:
    - install_node
    - static_vty_init
    - mgmt_fe_client_lib_vty_init
    - install_element
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void mgmt_vty_init(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/babeld/babel_filter.c:22,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_filter.c:23,1
    - Dst: v4mapped
      Src: /src/frr/babeld/babel_filter.c:32,1
    - Dst: v4mapped
      Src: /src/frr/babeld/babel_filter.c:33,1
    - Dst: uchar_to_inaddr
      Src: /src/frr/babeld/babel_filter.c:35,1
    - Dst: uchar_to_in6addr
      Src: /src/frr/babeld/babel_filter.c:39,1
    - Dst: access_list_apply
      Src: /src/frr/babeld/babel_filter.c:45,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_filter.c:47,1
    - Dst: prefix_list_apply
      Src: /src/frr/babeld/babel_filter.c:54,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_filter.c:56,1
    - Dst: babel_lookup
      Src: /src/frr/babeld/babel_filter.c:63,1
    - Dst: distribute_lookup
      Src: /src/frr/babeld/babel_filter.c:65,1
    - Dst: access_list_lookup
      Src: /src/frr/babeld/babel_filter.c:68,1
    - Dst: access_list_apply
      Src: /src/frr/babeld/babel_filter.c:71,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_filter.c:72,1
    - Dst: prefix_list_lookup
      Src: /src/frr/babeld/babel_filter.c:79,1
    - Dst: prefix_list_apply
      Src: /src/frr/babeld/babel_filter.c:81,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_filter.c:82,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 4
    argNames:
    - output
    - prefix
    - plen
    - ifindex
    argTypes:
    - int
    - unsigned char*
    - unsigned short
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 90
    functionName: babel_filter
    functionSourceFile: /src/frr/babeld/babel_filter.c
    functionUses: 0
    functionsReached:
    - uchar_to_inaddr
    - if_lookup_by_index
    - prefix_list_lookup
    - uchar_to_in6addr
    - debugf
    - prefix_list_apply
    - babel_get_if_nfo
    - distribute_lookup
    - access_list_apply
    - v4mapped
    - access_list_lookup
    - babel_lookup
    linkageType: ''
    returnType: int
    signature: "int babel_filter(int output, const unsigned char *prefix, unsigned
      short plen,\n             unsigned int ifindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/babeld/babel_main.c:89,1
    - Dst: babel_exit_properly
      Src: /src/frr/babeld/babel_main.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: babel_sigexit
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 0
    functionsReached:
    - babel_exit_properly
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void babel_sigexit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/babeld/babel_main.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: babel_sigusr1
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void babel_sigusr1 (void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/babeld/babel_main.c:145,1
    - Dst: frr_opt_add
      Src: /src/frr/babeld/babel_main.c:146,1
    - Dst: babel_init_random
      Src: /src/frr/babeld/babel_main.c:148,1
    - Dst: parse_address
      Src: /src/frr/babeld/babel_main.c:151,1
    - Dst: frr_getopt
      Src: /src/frr/babeld/babel_main.c:158,1
    - Dst: frr_help_exit
      Src: /src/frr/babeld/babel_main.c:168,1
    - Dst: snprintf
      Src: /src/frr/babeld/babel_main.c:172,1
    - Dst: frr_init
      Src: /src/frr/babeld/babel_main.c:176,1
    - Dst: babel_error_init
      Src: /src/frr/babeld/babel_main.c:179,1
    - Dst: change_smoothing_half_life
      Src: /src/frr/babeld/babel_main.c:182,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/babeld/babel_main.c:185,1
    - Dst: babeld_quagga_init
      Src: /src/frr/babeld/babel_main.c:187,1
    - Dst: babelz_zebra_init
      Src: /src/frr/babeld/babel_main.c:190,1
    - Dst: resize_receive_buffer
      Src: /src/frr/babeld/babel_main.c:193,1
    - Dst: babel_fail
      Src: /src/frr/babeld/babel_main.c:195,1
    - Dst: schedule_neighbours_check
      Src: /src/frr/babeld/babel_main.c:197,1
    - Dst: frr_config_fork
      Src: /src/frr/babeld/babel_main.c:199,1
    - Dst: frr_run
      Src: /src/frr/babeld/babel_main.c:200,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 203
    functionName: main
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 11
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - babeld_quagga_init
    - if_zapi_callbacks
    - snprintf
    - parse_address
    - frr_getopt
    - frr_init
    - frr_config_fork
    - babel_init_random
    - babel_error_init
    - resize_receive_buffer
    - babel_fail
    - schedule_neighbours_check
    - frr_run
    - babelz_zebra_init
    - change_smoothing_half_life
    - frr_opt_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/frr/babeld/babel_main.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: babel_fail
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 1
    functionsReached:
    - exit
    linkageType: ''
    returnType: void
    signature: void babel_fail(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/frr/babeld/babel_main.c:215,1
    - Dst: read_random_bytes
      Src: /src/frr/babeld/babel_main.c:219,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babel_main.c:221,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_main.c:222,1
    - Dst: srandom
      Src: /src/frr/babeld/babel_main.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 228
    functionName: babel_init_random
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 1
    functionsReached:
    - srandom
    - gettime
    - safe_strerror
    - read_random_bytes
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void babel_init_random(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/babeld/babel_main.c:240,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babel_main.c:242,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_main.c:243,1
    - Dst: unlink
      Src: /src/frr/babeld/babel_main.c:244,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babel_main.c:246,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_main.c:247,1
    - Dst: read
      Src: /src/frr/babeld/babel_main.c:256,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babel_main.c:258,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_main.c:259,1
    - Dst: sscanf
      Src: /src/frr/babeld/babel_main.c:262,1
    - Dst: parse_eui64
      Src: /src/frr/babeld/babel_main.c:265,1
    - Dst: flog_err
      Src: /src/frr/babeld/babel_main.c:267,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_main.c:270,1
    - Dst: format_eui64
      Src: /src/frr/babeld/babel_main.c:272,1
    - Dst: gettimeofday
      Src: /src/frr/babeld/babel_main.c:273,1
    - Dst: memcmp
      Src: /src/frr/babeld/babel_main.c:274,1
    - Dst: seqno_plus
      Src: /src/frr/babeld/babel_main.c:275,1
    - Dst: flog_err
      Src: /src/frr/babeld/babel_main.c:277,1
    - Dst: format_eui64
      Src: /src/frr/babeld/babel_main.c:279,1
    - Dst: format_eui64
      Src: /src/frr/babeld/babel_main.c:280,1
    - Dst: flog_err
      Src: /src/frr/babeld/babel_main.c:283,1
    - Dst: close
      Src: /src/frr/babeld/babel_main.c:290,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 292
    functionName: babel_load_state_file
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 0
    functionsReached:
    - unlink
    - read
    - open
    - format_eui64
    - debugf
    - memcmp
    - close
    - seqno_plus
    - flog_err
    - safe_strerror
    - gettimeofday
    - parse_eui64
    - flog_err_sys
    - sscanf
    linkageType: ''
    returnType: void
    signature: void babel_load_state_file(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_main.c:297,1
    - Dst: usleep
      Src: /src/frr/babeld/babel_main.c:298,1
    - Dst: roughly
      Src: /src/frr/babeld/babel_main.c:298,1
    - Dst: gettime
      Src: /src/frr/babeld/babel_main.c:299,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_main.c:302,1
    - Dst: flush_all_routes
      Src: /src/frr/babeld/babel_main.c:303,1
    - Dst: babel_interface_close_all
      Src: /src/frr/babeld/babel_main.c:304,1
    - Dst: babel_zebra_close_connexion
      Src: /src/frr/babeld/babel_main.c:305,1
    - Dst: babel_save_state_file
      Src: /src/frr/babeld/babel_main.c:306,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_main.c:307,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_main.c:308,1
    - Dst: frr_fini
      Src: /src/frr/babeld/babel_main.c:309,1
    - Dst: exit
      Src: /src/frr/babeld/babel_main.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 312
    functionName: babel_exit_properly
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 1
    functionsReached:
    - exit
    - babel_save_state_file
    - debugf
    - frr_fini
    - babel_interface_close_all
    - babel_zebra_close_connexion
    - roughly
    - gettime
    - usleep
    - flush_all_routes
    linkageType: ''
    returnType: void
    signature: void babel_exit_properly(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_main.c:320,1
    - Dst: open
      Src: /src/frr/babeld/babel_main.c:321,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babel_main.c:323,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_main.c:324,1
    - Dst: unlink
      Src: /src/frr/babeld/babel_main.c:325,1
    - Dst: gettimeofday
      Src: /src/frr/babeld/babel_main.c:329,1
    - Dst: snprintf
      Src: /src/frr/babeld/babel_main.c:330,1
    - Dst: format_eui64
      Src: /src/frr/babeld/babel_main.c:331,1
    - Dst: flog_err
      Src: /src/frr/babeld/babel_main.c:334,1
    - Dst: unlink
      Src: /src/frr/babeld/babel_main.c:335,1
    - Dst: write
      Src: /src/frr/babeld/babel_main.c:337,1
    - Dst: flog_err
      Src: /src/frr/babeld/babel_main.c:339,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_main.c:340,1
    - Dst: unlink
      Src: /src/frr/babeld/babel_main.c:341,1
    - Dst: fsync
      Src: /src/frr/babeld/babel_main.c:343,1
    - Dst: close
      Src: /src/frr/babeld/babel_main.c:345,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 347
    functionName: babel_save_state_file
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 1
    functionsReached:
    - unlink
    - format_eui64
    - open
    - snprintf
    - debugf
    - fsync
    - close
    - flog_err
    - safe_strerror
    - gettimeofday
    - flog_err_sys
    - write
    linkageType: ''
    returnType: void
    signature: void babel_save_state_file(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/babeld/babel_main.c:352,1
    - Dst: format_address
      Src: /src/frr/babeld/babel_main.c:364,1
    - Dst: format_eui64
      Src: /src/frr/babeld/babel_main.c:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 370
    functionName: show_babel_main_configuration
    functionSourceFile: /src/frr/babeld/babel_main.c
    functionUses: 0
    functionsReached:
    - format_address
    - vty_out
    - format_eui64
    linkageType: ''
    returnType: void
    signature: void show_babel_main_configuration (struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/babeld/babel_errors.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: babel_error_init
    functionSourceFile: /src/frr/babeld/babel_errors.c
    functionUses: 1
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void babel_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/resend.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 4
    argNames:
    - resend
    - kind
    - prefix
    - plen
    argTypes:
    - struct resend*
    - int
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 35
    functionName: resend_match
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int resend_match(struct resend *resend,\n             int kind, const
      unsigned char *prefix, unsigned char plen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: flush_resends
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void flush_resends(struct neighbour *neigh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resend_match
      Src: /src/frr/babeld/resend.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - kind
    - prefix
    - plen
    - previous_return
    argTypes:
    - int
    - unsigned char*
    - unsigned char
    - struct resend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 64
    functionName: find_resend
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - resend_match
    linkageType: ''
    returnType: struct resend
    signature: "struct resend *\nfind_resend(int kind, const unsigned char *prefix,
      unsigned char plen,\n             struct resend **previous_return)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_resend
      Src: /src/frr/babeld/resend.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prefix
    - plen
    - previous_return
    argTypes:
    - unsigned char*
    - unsigned char
    - struct resend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: find_request
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - find_resend
    linkageType: ''
    returnType: struct resend
    signature: "struct resend *\nfind_request(const unsigned char *prefix, unsigned
      char plen,\n             struct resend **previous_return)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: input_filter
      Src: /src/frr/babeld/resend.c:82,1
    - Dst: output_filter
      Src: /src/frr/babeld/resend.c:84,1
    - Dst: find_resend
      Src: /src/frr/babeld/resend.c:90,1
    - Dst: MIN
      Src: /src/frr/babeld/resend.c:93,1
    - Dst: memcmp
      Src: /src/frr/babeld/resend.c:98,1
    - Dst: seqno_compare
      Src: /src/frr/babeld/resend.c:99,1
    - Dst: memcpy
      Src: /src/frr/babeld/resend.c:103,1
    - Dst: memset
      Src: /src/frr/babeld/resend.c:105,1
    - Dst: malloc
      Src: /src/frr/babeld/resend.c:110,1
    - Dst: memcpy
      Src: /src/frr/babeld/resend.c:116,1
    - Dst: memcpy
      Src: /src/frr/babeld/resend.c:120,1
    - Dst: memset
      Src: /src/frr/babeld/resend.c:122,1
    - Dst: timeval_add_msec
      Src: /src/frr/babeld/resend.c:131,1
    - Dst: timeval_min
      Src: /src/frr/babeld/resend.c:132,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 45
    argCount: 7
    argNames:
    - kind
    - prefix
    - plen
    - seqno
    - id
    - ifp
    - delay
    argTypes:
    - int
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned char*
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 135
    functionName: record_resend
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - MIN
    - seqno_compare
    - memset
    - malloc
    - output_filter
    - memcmp
    - timeval_min
    - input_filter
    - memcpy
    - timeval_add_msec
    - find_resend
    linkageType: ''
    returnType: int
    signature: "int record_resend(int kind, const unsigned char *prefix, unsigned
      char plen,\n              unsigned short seqno, const unsigned char *id,\n              struct
      interface *ifp, int delay)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/resend.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - resend
    argTypes:
    - struct resend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 146
    functionName: resend_expired
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - timeval_minus_msec
    linkageType: ''
    returnType: int
    signature: int resend_expired(struct resend *resend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_request
      Src: /src/frr/babeld/resend.c:154,1
    - Dst: resend_expired
      Src: /src/frr/babeld/resend.c:155,1
    - Dst: memcmp
      Src: /src/frr/babeld/resend.c:158,1
    - Dst: seqno_compare
      Src: /src/frr/babeld/resend.c:159,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 4
    argNames:
    - prefix
    - plen
    - seqno
    - id
    argTypes:
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 163
    functionName: unsatisfied_request
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - find_request
    - seqno_compare
    - memcmp
    - resend_expired
    linkageType: ''
    returnType: int
    signature: "int unsatisfied_request(const unsigned char *prefix, unsigned char
      plen,\n                    unsigned short seqno, const unsigned char *id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_request
      Src: /src/frr/babeld/resend.c:173,1
    - Dst: resend_expired
      Src: /src/frr/babeld/resend.c:174,1
    - Dst: memcmp
      Src: /src/frr/babeld/resend.c:177,1
    - Dst: seqno_compare
      Src: /src/frr/babeld/resend.c:178,1
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/resend.c:188,1
    - Dst: MIN
      Src: /src/frr/babeld/resend.c:189,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/resend.c:189,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 5
    argNames:
    - ifp
    - prefix
    - plen
    - seqno
    - id
    argTypes:
    - struct interface*
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 194
    functionName: request_redundant
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - MIN
    - seqno_compare
    - find_request
    - timeval_minus_msec
    - memcmp
    - babel_get_if_nfo
    - resend_expired
    linkageType: ''
    returnType: int
    signature: "int request_redundant(struct interface *ifp,\n                  const
      unsigned char *prefix, unsigned char plen,\n                  unsigned short
      seqno, const unsigned char *id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_request
      Src: /src/frr/babeld/resend.c:203,1
    - Dst: memcmp
      Src: /src/frr/babeld/resend.c:210,1
    - Dst: seqno_compare
      Src: /src/frr/babeld/resend.c:211,1
    - Dst: recompute_resend_time
      Src: /src/frr/babeld/resend.c:216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 5
    argNames:
    - prefix
    - plen
    - seqno
    - id
    - ifp
    argTypes:
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned char*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 196
    functionDepth: 3
    functionLinenumber: 196
    functionLinenumberEnd: 221
    functionName: satisfy_request
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - find_request
    - recompute_resend_time
    - seqno_compare
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int satisfy_request(const unsigned char *prefix, unsigned char plen,\n
      \               unsigned short seqno, const unsigned char *id,\n                struct
      interface *ifp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: resend_expired
      Src: /src/frr/babeld/resend.c:232,1
    - Dst: free
      Src: /src/frr/babeld/resend.c:235,1
    - Dst: free
      Src: /src/frr/babeld/resend.c:239,1
    - Dst: recompute_resend_time
      Src: /src/frr/babeld/resend.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 250
    functionName: expire_resend
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - free
    - recompute_resend_time
    - resend_expired
    linkageType: ''
    returnType: void
    signature: void expire_resend(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resend_expired
      Src: /src/frr/babeld/resend.c:260,1
    - Dst: timeval_add_msec
      Src: /src/frr/babeld/resend.c:262,1
    - Dst: timeval_min
      Src: /src/frr/babeld/resend.c:263,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 269
    functionName: recompute_resend_time
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 2
    functionsReached:
    - timeval_add_msec
    - timeval_min
    - resend_expired
    linkageType: ''
    returnType: void
    signature: void recompute_resend_time(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: resend_expired
      Src: /src/frr/babeld/resend.c:278,1
    - Dst: timeval_add_msec
      Src: /src/frr/babeld/resend.c:280,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/resend.c:281,1
    - Dst: send_multihop_request
      Src: /src/frr/babeld/resend.c:284,1
    - Dst: send_update
      Src: /src/frr/babeld/resend.c:289,1
    - Dst: abort
      Src: /src/frr/babeld/resend.c:292,1
    - Dst: MIN
      Src: /src/frr/babeld/resend.c:294,1
    - Dst: recompute_resend_time
      Src: /src/frr/babeld/resend.c:300,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 301
    functionName: do_resend
    functionSourceFile: /src/frr/babeld/resend.c
    functionUses: 0
    functionsReached:
    - MIN
    - send_update
    - recompute_resend_time
    - abort
    - send_multihop_request
    - timeval_compare
    - timeval_add_msec
    - resend_expired
    linkageType: ''
    returnType: void
    signature: void do_resend(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: IS_ENABLE
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ENABLE(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:52,1
    - Dst: interface_recalculate
      Src: /src/frr/babeld/babel_interface.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: babel_ifp_up
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - interface_recalculate
    - debugf
    linkageType: ''
    returnType: int
    signature: int babel_ifp_up(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:61,1
    - Dst: interface_reset
      Src: /src/frr/babeld/babel_interface.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 69
    functionName: babel_ifp_down
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - debugf
    - interface_reset
    linkageType: ''
    returnType: int
    signature: int babel_ifp_down(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:73,1
    - Dst: interface_recalculate
      Src: /src/frr/babeld/babel_interface.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: babel_ifp_create
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - interface_recalculate
    - debugf
    linkageType: ''
    returnType: int
    signature: int babel_ifp_create (struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:83,1
    - Dst: IS_ENABLE
      Src: /src/frr/babeld/babel_interface.c:85,1
    - Dst: interface_reset
      Src: /src/frr/babeld/babel_interface.c:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 89
    functionName: babel_ifp_destroy
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - debugf
    - IS_ENABLE
    - interface_reset
    linkageType: ''
    returnType: int
    signature: int babel_ifp_destroy(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:98,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/babeld/babel_interface.c:100,1
    - Dst: flush_interface_routes
      Src: /src/frr/babeld/babel_interface.c:109,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.c:110,1
    - Dst: malloc
      Src: /src/frr/babeld/babel_interface.c:112,1
    - Dst: flog_err
      Src: /src/frr/babeld/babel_interface.c:114,1
    - Dst: memcpy
      Src: /src/frr/babeld/babel_interface.c:116,1
    - Dst: send_request
      Src: /src/frr/babeld/babel_interface.c:121,1
    - Dst: send_update
      Src: /src/frr/babeld/babel_interface.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 125
    functionName: babel_interface_address_add
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - zebra_interface_address_read
    - send_request
    - malloc
    - debugf
    - send_update
    - babel_get_if_nfo
    - flog_err
    - flush_interface_routes
    - memcpy
    linkageType: ''
    returnType: int
    signature: int babel_interface_address_add (ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:134,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/babeld/babel_interface.c:136,1
    - Dst: flush_interface_routes
      Src: /src/frr/babeld/babel_interface.c:145,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.c:146,1
    - Dst: memcmp
      Src: /src/frr/babeld/babel_interface.c:148,1
    - Dst: free
      Src: /src/frr/babeld/babel_interface.c:150,1
    - Dst: send_request
      Src: /src/frr/babeld/babel_interface.c:155,1
    - Dst: send_update
      Src: /src/frr/babeld/babel_interface.c:156,1
    - Dst: connected_free
      Src: /src/frr/babeld/babel_interface.c:158,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 160
    functionName: babel_interface_address_delete
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - zebra_interface_address_read
    - send_request
    - send_update
    - debugf
    - free
    - memcmp
    - connected_free
    - babel_get_if_nfo
    - flush_interface_routes
    linkageType: ''
    returnType: int
    signature: int babel_interface_address_delete (ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/babeld/babel_interface.c:169,1
    - Dst: vector_slot
      Src: /src/frr/babeld/babel_interface.c:170,1
    - Dst: strcmp
      Src: /src/frr/babeld/babel_interface.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 174
    functionName: babel_enable_if_lookup
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - vector_active
    - vector_slot
    - strcmp
    linkageType: ''
    returnType: int
    signature: int babel_enable_if_lookup (const char *ifname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: babel_enable_if_lookup
      Src: /src/frr/babeld/babel_interface.c:183,1
    - Dst: vector_set
      Src: /src/frr/babeld/babel_interface.c:187,1
    - Dst: strdup
      Src: /src/frr/babeld/babel_interface.c:187,1
    - Dst: if_lookup_by_name
      Src: /src/frr/babeld/babel_interface.c:189,1
    - Dst: interface_recalculate
      Src: /src/frr/babeld/babel_interface.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 194
    functionName: babel_enable_if_add
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - babel_enable_if_lookup
    - strdup
    - interface_recalculate
    - vector_set
    linkageType: ''
    returnType: int
    signature: int babel_enable_if_add (const char *ifname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: babel_enable_if_lookup
      Src: /src/frr/babeld/babel_interface.c:204,1
    - Dst: vector_slot
      Src: /src/frr/babeld/babel_interface.c:208,1
    - Dst: free
      Src: /src/frr/babeld/babel_interface.c:209,1
    - Dst: vector_unset
      Src: /src/frr/babeld/babel_interface.c:210,1
    - Dst: if_lookup_by_name
      Src: /src/frr/babeld/babel_interface.c:212,1
    - Dst: interface_reset
      Src: /src/frr/babeld/babel_interface.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 217
    functionName: babel_enable_if_delete
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - babel_enable_if_lookup
    - free
    - vector_slot
    - vector_unset
    - interface_reset
    linkageType: ''
    returnType: int
    signature: int babel_enable_if_delete (const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/babeld/babel_interface.c:281,1
    - Dst: SET_FLAG
      Src: /src/frr/babeld/babel_interface.c:282,1
    - Dst: UNSET_FLAG
      Src: /src/frr/babeld/babel_interface.c:285,1
    - Dst: UNSET_FLAG
      Src: /src/frr/babeld/babel_interface.c:288,1
    - Dst: UNSET_FLAG
      Src: /src/frr/babeld/babel_interface.c:289,1
    - Dst: SET_FLAG
      Src: /src/frr/babeld/babel_interface.c:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - babel_ifp
    - wired
    argTypes:
    - babel_interface_nfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 295
    functionName: babel_set_wired_internal
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void babel_set_wired_internal(babel_interface_nfo *babel_ifp, int wired)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/babeld/babel_interface.c:547,1
    - Dst: MIN
      Src: /src/frr/babeld/babel_interface.c:549,1
    - Dst: roughly
      Src: /src/frr/babeld/babel_interface.c:550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - babel_ifp
    - urgent
    argTypes:
    - babel_interface_nfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 551
    functionName: jitter
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 2
    functionsReached:
    - MIN
    - roughly
    linkageType: ''
    returnType: unsigned
    signature: unsigned jitter(babel_interface_nfo *babel_ifp, int urgent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/babeld/babel_interface.c:558,1
    - Dst: MIN
      Src: /src/frr/babeld/babel_interface.c:560,1
    - Dst: roughly
      Src: /src/frr/babeld/babel_interface.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - babel_ifp
    - urgent
    argTypes:
    - babel_interface_nfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 562
    functionName: update_jitter
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 2
    functionsReached:
    - MIN
    - roughly
    linkageType: ''
    returnType: unsigned
    signature: unsigned update_jitter(babel_interface_nfo *babel_ifp, int urgent)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.c:569,1
    - Dst: IS_ENABLE
      Src: /src/frr/babeld/babel_interface.c:574,1
    - Dst: if_is_operative
      Src: /src/frr/babeld/babel_interface.c:577,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:577,1
    - Dst: interface_reset
      Src: /src/frr/babeld/babel_interface.c:578,1
    - Dst: SET_FLAG
      Src: /src/frr/babeld/babel_interface.c:582,1
    - Dst: MIN
      Src: /src/frr/babeld/babel_interface.c:584,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:591,1
    - Dst: realloc
      Src: /src/frr/babeld/babel_interface.c:599,1
    - Dst: flog_err
      Src: /src/frr/babeld/babel_interface.c:601,1
    - Dst: free
      Src: /src/frr/babeld/babel_interface.c:602,1
    - Dst: resize_receive_buffer
      Src: /src/frr/babeld/babel_interface.c:608,1
    - Dst: zlog_warn
      Src: /src/frr/babeld/babel_interface.c:610,1
    - Dst: memset
      Src: /src/frr/babeld/babel_interface.c:613,1
    - Dst: memcpy
      Src: /src/frr/babeld/babel_interface.c:614,1
    - Dst: setsockopt
      Src: /src/frr/babeld/babel_interface.c:617,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babel_interface.c:620,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_interface.c:622,1
    - Dst: interface_reset
      Src: /src/frr/babeld/babel_interface.c:626,1
    - Dst: set_timeout
      Src: /src/frr/babeld/babel_interface.c:630,1
    - Dst: set_timeout
      Src: /src/frr/babeld/babel_interface.c:631,1
    - Dst: send_hello
      Src: /src/frr/babeld/babel_interface.c:632,1
    - Dst: send_request
      Src: /src/frr/babeld/babel_interface.c:633,1
    - Dst: update_interface_metric
      Src: /src/frr/babeld/babel_interface.c:635,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:637,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:640,1
    - Dst: send_update
      Src: /src/frr/babeld/babel_interface.c:646,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 649
    functionName: interface_recalculate
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 3
    functionsReached:
    - interface_reset
    - flog_err
    - zlog_warn
    - realloc
    - MIN
    - memset
    - send_update
    - safe_strerror
    - flog_err_sys
    - setsockopt
    - IS_ENABLE
    - set_timeout
    - send_request
    - free
    - resize_receive_buffer
    - memcpy
    - send_hello
    - update_interface_metric
    - debugf
    - CHECK_FLAG
    - babel_get_if_nfo
    - SET_FLAG
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int interface_recalculate(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.c:658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:660,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:663,1
    - Dst: UNSET_FLAG
      Src: /src/frr/babeld/babel_interface.c:665,1
    - Dst: flush_interface_routes
      Src: /src/frr/babeld/babel_interface.c:667,1
    - Dst: free
      Src: /src/frr/babeld/babel_interface.c:670,1
    - Dst: free
      Src: /src/frr/babeld/babel_interface.c:674,1
    - Dst: memset
      Src: /src/frr/babeld/babel_interface.c:679,1
    - Dst: memcpy
      Src: /src/frr/babeld/babel_interface.c:680,1
    - Dst: setsockopt
      Src: /src/frr/babeld/babel_interface.c:682,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babel_interface.c:685,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babel_interface.c:687,1
    - Dst: update_interface_metric
      Src: /src/frr/babeld/babel_interface.c:690,1
    - Dst: debugf
      Src: /src/frr/babeld/babel_interface.c:692,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:694,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 699
    functionName: interface_reset
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 7
    functionsReached:
    - memset
    - update_interface_metric
    - debugf
    - CHECK_FLAG
    - free
    - babel_get_if_nfo
    - UNSET_FLAG
    - safe_strerror
    - flog_err_sys
    - setsockopt
    - flush_interface_routes
    - memcpy
    linkageType: ''
    returnType: int
    signature: int interface_reset(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babel_interface.c:705,1
    - Dst: if_up
      Src: /src/frr/babeld/babel_interface.c:709,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babel_interface.c:711,1
    - Dst: send_hello_noupdate
      Src: /src/frr/babeld/babel_interface.c:714,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babel_interface.c:715,1
    - Dst: usleep
      Src: /src/frr/babeld/babel_interface.c:716,1
    - Dst: roughly
      Src: /src/frr/babeld/babel_interface.c:716,1
    - Dst: gettime
      Src: /src/frr/babeld/babel_interface.c:717,1
    - Dst: if_up
      Src: /src/frr/babeld/babel_interface.c:720,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babel_interface.c:723,1
    - Dst: send_hello_noupdate
      Src: /src/frr/babeld/babel_interface.c:724,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babel_interface.c:725,1
    - Dst: usleep
      Src: /src/frr/babeld/babel_interface.c:726,1
    - Dst: roughly
      Src: /src/frr/babeld/babel_interface.c:726,1
    - Dst: gettime
      Src: /src/frr/babeld/babel_interface.c:727,1
    - Dst: interface_reset
      Src: /src/frr/babeld/babel_interface.c:728,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 702
    functionDepth: 2
    functionLinenumber: 702
    functionLinenumberEnd: 730
    functionName: babel_interface_close_all
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 1
    functionsReached:
    - if_up
    - roughly
    - interface_reset
    - send_wildcard_retraction
    - send_hello_noupdate
    - vrf_lookup_by_id
    - gettime
    - usleep
    - flushbuf
    linkageType: ''
    returnType: void
    signature: void babel_interface_close_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babel_interface.c:709,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babel_interface.c:711,1
    - Dst: send_hello_noupdate
      Src: /src/frr/babeld/babel_interface.c:714,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babel_interface.c:715,1
    - Dst: usleep
      Src: /src/frr/babeld/babel_interface.c:716,1
    - Dst: roughly
      Src: /src/frr/babeld/babel_interface.c:716,1
    - Dst: gettime
      Src: /src/frr/babeld/babel_interface.c:717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 708
    functionDepth: 1
    functionLinenumber: 708
    functionLinenumberEnd: 718
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 28
    functionsReached:
    - if_up
    - send_wildcard_retraction
    - send_hello_noupdate
    - roughly
    - gettime
    - usleep
    - flushbuf
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babel_interface.c:720,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babel_interface.c:723,1
    - Dst: send_hello_noupdate
      Src: /src/frr/babeld/babel_interface.c:724,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babel_interface.c:725,1
    - Dst: usleep
      Src: /src/frr/babeld/babel_interface.c:726,1
    - Dst: roughly
      Src: /src/frr/babeld/babel_interface.c:726,1
    - Dst: gettime
      Src: /src/frr/babeld/babel_interface.c:727,1
    - Dst: interface_reset
      Src: /src/frr/babeld/babel_interface.c:728,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 719
    functionDepth: 2
    functionLinenumber: 719
    functionLinenumberEnd: 729
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 28
    functionsReached:
    - if_up
    - interface_reset
    - send_wildcard_retraction
    - send_hello_noupdate
    - roughly
    - gettime
    - usleep
    - flushbuf
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babel_interface.c:739,1
    - Dst: memcmp
      Src: /src/frr/babeld/babel_interface.c:744,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ifp
    - address
    argTypes:
    - struct interface*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 751
    functionName: is_interface_ll_address
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - memcmp
    - if_up
    linkageType: ''
    returnType: int
    signature: int is_interface_ll_address(struct interface *ifp, const unsigned char
      *address)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/babel_interface.c:744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 748
    functionName: FOR_ALL_INTERFACES_ADDRESSES
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES_ADDRESSES(ifp, connected, node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:759,1
    - Dst: if_is_operative
      Src: /src/frr/babeld/babel_interface.c:760,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:761,1
    - Dst: MIN
      Src: /src/frr/babeld/babel_interface.c:762,1
    - Dst: if_flag_dump
      Src: /src/frr/babeld/babel_interface.c:762,1
    - Dst: IS_ENABLE
      Src: /src/frr/babeld/babel_interface.c:764,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:766,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:771,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.c:775,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:776,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:777,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:778,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:780,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:781,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:782,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 753
    functionDepth: 1
    functionLinenumber: 753
    functionLinenumberEnd: 784
    functionName: show_babel_interface_sub
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - MIN
    - vty_out
    - CHECK_FLAG
    - babel_get_if_nfo
    - if_flag_dump
    - if_is_operative
    - IS_ENABLE
    linkageType: ''
    returnType: void
    signature: void show_babel_interface_sub (struct vty *vty, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:815,1
    - Dst: format_address
      Src: /src/frr/babeld/babel_interface.c:817,1
    - Dst: neighbour_rxcost
      Src: /src/frr/babeld/babel_interface.c:820,1
    - Dst: format_thousands
      Src: /src/frr/babeld/babel_interface.c:822,1
    - Dst: neighbour_rttcost
      Src: /src/frr/babeld/babel_interface.c:823,1
    - Dst: if_up
      Src: /src/frr/babeld/babel_interface.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - neigh
    argTypes:
    - struct vty*
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 825
    functionName: show_babel_neighbour_sub
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - neighbour_rxcost
    - vty_out
    - format_thousands
    - neighbour_rttcost
    - format_address
    - if_up
    linkageType: ''
    returnType: void
    signature: void show_babel_neighbour_sub (struct vty *vty, struct neighbour *neigh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: show_babel_neighbour_sub
      Src: /src/frr/babeld/babel_interface.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 839
    functionDepth: 2
    functionLinenumber: 839
    functionLinenumberEnd: 841
    functionName: FOR_ALL_NEIGHBOURS
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - show_babel_neighbour_sub
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_NEIGHBOURS(neigh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: show_babel_neighbour_sub
      Src: /src/frr/babeld/babel_interface.c:851,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 849
    functionDepth: 2
    functionLinenumber: 849
    functionLinenumberEnd: 853
    functionName: FOR_ALL_NEIGHBOURS
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - show_babel_neighbour_sub
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_NEIGHBOURS(neigh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/babel_interface.c:862,1
    - Dst: v4mapped
      Src: /src/frr/babeld/babel_interface.c:865,1
    - Dst: memcmp
      Src: /src/frr/babeld/babel_interface.c:866,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 3
    argNames:
    - prefix
    - p
    - plen
    argTypes:
    - struct prefix*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 873
    functionName: babel_prefix_eq
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - v4mapped
    - memcmp
    linkageType: ''
    returnType: int
    signature: int babel_prefix_eq(struct prefix *prefix, unsigned char *p, int plen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/babel_interface.c:880,1
    - Dst: babel_prefix_eq
      Src: /src/frr/babeld/babel_interface.c:887,1
    - Dst: snprintf
      Src: /src/frr/babeld/babel_interface.c:894,1
    - Dst: strlen
      Src: /src/frr/babeld/babel_interface.c:895,1
    - Dst: snprintf
      Src: /src/frr/babeld/babel_interface.c:901,1
    - Dst: strlen
      Src: /src/frr/babeld/babel_interface.c:903,1
    - Dst: snprintf
      Src: /src/frr/babeld/babel_interface.c:905,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:910,1
    - Dst: format_prefix
      Src: /src/frr/babeld/babel_interface.c:912,1
    - Dst: route_metric
      Src: /src/frr/babeld/babel_interface.c:913,1
    - Dst: format_eui64
      Src: /src/frr/babeld/babel_interface.c:914,1
    - Dst: format_address
      Src: /src/frr/babeld/babel_interface.c:919,1
    - Dst: format_address
      Src: /src/frr/babeld/babel_interface.c:921,1
    - Dst: route_feasible
      Src: /src/frr/babeld/babel_interface.c:922,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - route
    - vty
    - prefix
    argTypes:
    - struct babel_route*
    - struct vty*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 875
    functionDepth: 2
    functionLinenumber: 875
    functionLinenumberEnd: 923
    functionName: show_babel_routes_sub
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - strlen
    - format_eui64
    - vty_out
    - snprintf
    - babel_prefix_eq
    - memcmp
    - route_metric
    - route_feasible
    - format_address
    - format_prefix
    linkageType: ''
    returnType: void
    signature: "void show_babel_routes_sub(struct babel_route *route, struct vty *vty,\n
      \                     struct prefix *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: babel_prefix_eq
      Src: /src/frr/babeld/babel_interface.c:929,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:932,1
    - Dst: format_prefix
      Src: /src/frr/babeld/babel_interface.c:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - xroute
    - vty
    - prefix
    argTypes:
    - struct xroute*
    - struct vty*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 935
    functionName: show_babel_xroutes_sub
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - babel_prefix_eq
    - vty_out
    - format_prefix
    linkageType: ''
    returnType: void
    signature: "void show_babel_xroutes_sub (struct xroute *xroute, struct vty *vty,\n
      \                       struct prefix *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/babeld/babel_interface.c:1163,1
    - Dst: hook_register_prio
      Src: /src/frr/babeld/babel_interface.c:1164,1
    - Dst: vector_init
      Src: /src/frr/babeld/babel_interface.c:1166,1
    - Dst: if_cmd_init
      Src: /src/frr/babeld/babel_interface.c:1169,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1171,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1172,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1173,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1174,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1175,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1176,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1177,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1178,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1179,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1180,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1181,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1182,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1183,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1184,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1187,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1188,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1189,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1190,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1191,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1192,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_interface.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1159
    functionDepth: 1
    functionLinenumber: 1159
    functionLinenumberEnd: 1194
    functionName: babel_if_init
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - hook_register_prio
    - vector_init
    - install_element
    - if_cmd_init
    linkageType: ''
    returnType: void
    signature: void babel_if_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_interface_allocate
      Src: /src/frr/babeld/babel_interface.c:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1198
    functionDepth: 1
    functionLinenumber: 1198
    functionLinenumberEnd: 1203
    functionName: babel_if_new_hook
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - babel_interface_allocate
    linkageType: ''
    returnType: int
    signature: int babel_if_new_hook (struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_interface_free
      Src: /src/frr/babeld/babel_interface.c:1208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1205
    functionDepth: 1
    functionLinenumber: 1205
    functionLinenumberEnd: 1211
    functionName: babel_if_delete_hook
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - babel_interface_free
    linkageType: ''
    returnType: int
    signature: int babel_if_delete_hook (struct interface *ifp)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babel_interface.c:1218,1
    - Dst: if_vty_config_start
      Src: /src/frr/babeld/babel_interface.c:1223,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1225,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.c:1226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1228,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1230,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1235,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1245,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1246,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1250,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1255,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1259,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1263,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1268,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1269,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1273,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1277,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1284,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1285,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1289,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1293,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1296,1
    - Dst: if_vty_config_end
      Src: /src/frr/babeld/babel_interface.c:1300,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 75
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1304
    functionName: interface_config_write
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - vty_out
    - if_vty_config_start
    - CHECK_FLAG
    - babel_get_if_nfo
    - vrf_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int interface_config_write (struct vty *vty)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: if_vty_config_start
      Src: /src/frr/babeld/babel_interface.c:1223,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1225,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.c:1226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1228,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1230,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1235,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1245,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1246,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1250,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1255,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1259,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1263,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1268,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1269,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1273,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1277,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.c:1284,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1285,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1289,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1293,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1296,1
    - Dst: if_vty_config_end
      Src: /src/frr/babeld/babel_interface.c:1300,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1302
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 28
    functionsReached:
    - if_vty_config_end
    - vty_out
    - if_vty_config_start
    - CHECK_FLAG
    - babel_get_if_nfo
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/babeld/babel_interface.c:1313,1
    - Dst: vector_slot
      Src: /src/frr/babeld/babel_interface.c:1314,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_interface.c:1316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1320
    functionName: babel_enable_if_config_write
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 0
    functionsReached:
    - vector_active
    - vty_out
    - vector_slot
    linkageType: ''
    returnType: int
    signature: int babel_enable_if_config_write (struct vty * vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/babeld/babel_interface.c:1328,1
    - Dst: frr_weak_random
      Src: /src/frr/babeld/babel_interface.c:1332,1
    - Dst: babel_set_wired_internal
      Src: /src/frr/babeld/babel_interface.c:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1324
    functionDepth: 2
    functionLinenumber: 1324
    functionLinenumberEnd: 1343
    functionName: babel_interface_allocate
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 1
    functionsReached:
    - frr_weak_random
    - babel_set_wired_internal
    - XCALLOC
    linkageType: ''
    returnType: babel_interface_nfo
    signature: 'babel_interface_nfo *

      babel_interface_allocate (void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/babeld/babel_interface.c:1348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - babel_ifp
    argTypes:
    - babel_interface_nfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1345
    functionDepth: 0
    functionLinenumber: 1345
    functionLinenumberEnd: 1349
    functionName: babel_interface_free
    functionSourceFile: /src/frr/babeld/babel_interface.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void babel_interface_free (babel_interface_nfo *babel_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: DO_NTOHS
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_NTOHS(_d, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: DO_NTOHL
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_NTOHL(_d, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: DO_HTONS
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_HTONS(_d, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: DO_HTONL
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_HTONL(_d, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: DO_NTOHS
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_NTOHS(_d, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: DO_NTOHL
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_NTOHL(_d, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: DO_HTONS
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_HTONS(_d, _s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _d
    - ','
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: DO_HTONL
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DO_HTONL(_d, _s)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - unsigned short
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: seqno_compare
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int seqno_compare(unsigned short s1, unsigned short s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - unsigned short
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: seqno_minus
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: short
    signature: short seqno_minus(unsigned short s1, unsigned short s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - plus
    argTypes:
    - unsigned short
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: seqno_plus
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned short
    signature: unsigned short seqno_plus(unsigned short s, int plus)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: time_us
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int time_us(const struct timeval t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: v4mapped
      Src: /src/frr/babeld/util.h:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - plen
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: is_default
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 2
    functionsReached:
    - v4mapped
    linkageType: ''
    returnType: bool
    signature: bool is_default(const unsigned char *prefix, int plen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: debugf
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 78
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debugf(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - level
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: debugf
    functionSourceFile: /src/frr/babeld/util.h
    functionUses: 78
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debugf(level, ...)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: debug_babel_config_write
      Src: /src/frr/babeld/babeld.c:80,1
    - Dst: vty_out
      Src: /src/frr/babeld/babeld.c:84,1
    - Dst: vty_out
      Src: /src/frr/babeld/babeld.c:87,1
    - Dst: vty_out
      Src: /src/frr/babeld/babeld.c:92,1
    - Dst: vty_out
      Src: /src/frr/babeld/babeld.c:97,1
    - Dst: vty_out
      Src: /src/frr/babeld/babeld.c:102,1
    - Dst: babel_enable_if_config_write
      Src: /src/frr/babeld/babeld.c:107,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/babeld/babeld.c:112,1
    - Dst: vty_out
      Src: /src/frr/babeld/babeld.c:113,1
    - Dst: zebra_route_string
      Src: /src/frr/babeld/babeld.c:115,1
    - Dst: config_write_distribute
      Src: /src/frr/babeld/babeld.c:121,1
    - Dst: vty_out
      Src: /src/frr/babeld/babeld.c:123,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 126
    functionName: babel_config_write
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached:
    - config_write_distribute
    - debug_babel_config_write
    - vrf_bitmap_check
    - vty_out
    - babel_enable_if_config_write
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: int babel_config_write (struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/babeld.c:132,1
    - Dst: XCALLOC
      Src: /src/frr/babeld/babeld.c:135,1
    - Dst: gettime
      Src: /src/frr/babeld/babeld.c:138,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:139,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:140,1
    - Dst: babel_socket
      Src: /src/frr/babeld/babeld.c:143,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babeld.c:145,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babeld.c:146,1
    - Dst: event_add_read
      Src: /src/frr/babeld/babeld.c:151,1
    - Dst: event_add_timer_msec
      Src: /src/frr/babeld/babeld.c:154,1
    - Dst: distribute_list_ctx_create
      Src: /src/frr/babeld/babeld.c:158,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babeld.c:158,1
    - Dst: distribute_list_add_hook
      Src: /src/frr/babeld/babeld.c:159,1
    - Dst: distribute_list_delete_hook
      Src: /src/frr/babeld/babeld.c:160,1
    - Dst: XFREE
      Src: /src/frr/babeld/babeld.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (babel_routing_process == NULL)
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/frr/babeld/babeld.c
    constantsTouched: []
    func_position:
      end: 165
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 165
    functionName: babel_create_routing_process
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - babel_socket
    - XCALLOC
    - distribute_list_add_hook
    - flog_err_sys
    - event_add_timer_msec
    - safe_strerror
    - vrf_lookup_by_id
    - roughly
    - event_add_read
    - XFREE
    - gettime
    - distribute_list_delete_hook
    - assert
    - distribute_list_ctx_create
    linkageType: ''
    returnType: int
    signature: int babel_create_routing_process (void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babeld.c:171,1
    - Dst: assert
      Src: /src/frr/babeld/babeld.c:175,1
    - Dst: assert
      Src: /src/frr/babeld/babeld.c:176,1
    - Dst: babel_recv
      Src: /src/frr/babeld/babeld.c:178,1
    - Dst: flog_err_sys
      Src: /src/frr/babeld/babeld.c:183,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babeld.c:183,1
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:187,1
    - Dst: parse_packet
      Src: /src/frr/babeld/babeld.c:190,1
    - Dst: event_add_read
      Src: /src/frr/babeld/babeld.c:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (babel_routing_process != NULL)
      pos:
        line_end: 174
        line_start: 174
        source_file: /src/frr/babeld/babeld.c
    - condition: (protocol_socket >= 0)
      pos:
        line_end: 175
        line_start: 175
        source_file: /src/frr/babeld/babeld.c
    constantsTouched: []
    func_position:
      end: 200
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 200
    functionName: babel_read_protocol
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - babel_recv
    - parse_packet
    - safe_strerror
    - vrf_lookup_by_id
    - event_add_read
    - flog_err_sys
    - assert
    - if_up
    linkageType: ''
    returnType: void
    signature: void babel_read_protocol(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:187,1
    - Dst: parse_packet
      Src: /src/frr/babeld/babeld.c:190,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 194
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 28
    functionsReached:
    - parse_packet
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/babeld/babeld.c:207,1
    - Dst: babel_get_myid
      Src: /src/frr/babeld/babeld.c:208,1
    - Dst: babel_load_state_file
      Src: /src/frr/babeld/babeld.c:209,1
    - Dst: debugf
      Src: /src/frr/babeld/babeld.c:210,1
    - Dst: format_eui64
      Src: /src/frr/babeld/babeld.c:210,1
    - Dst: babel_initial_noise
      Src: /src/frr/babeld/babeld.c:211,1
    - Dst: babel_main_loop
      Src: /src/frr/babeld/babeld.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 213
    functionName: babel_init_routing_process
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - format_eui64
    - frr_weak_random
    - babel_load_state_file
    - babel_main_loop
    - debugf
    - babel_get_myid
    - babel_initial_noise
    linkageType: ''
    returnType: void
    signature: void babel_init_routing_process(struct event *thread)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babeld.c:219,1
    - Dst: memcmp
      Src: /src/frr/babeld/babeld.c:225,1
    - Dst: if_nametoindex
      Src: /src/frr/babeld/babeld.c:231,1
    - Dst: if_eui64
      Src: /src/frr/babeld/babeld.c:234,1
    - Dst: memcpy
      Src: /src/frr/babeld/babeld.c:237,1
    - Dst: if_indextoname
      Src: /src/frr/babeld/babeld.c:247,1
    - Dst: if_eui64
      Src: /src/frr/babeld/babeld.c:250,1
    - Dst: memcpy
      Src: /src/frr/babeld/babeld.c:253,1
    - Dst: flog_err
      Src: /src/frr/babeld/babeld.c:257,1
    - Dst: read_random_bytes
      Src: /src/frr/babeld/babeld.c:259,1
    - Dst: flog_err
      Src: /src/frr/babeld/babeld.c:261,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babeld.c:262,1
    - Dst: exit
      Src: /src/frr/babeld/babeld.c:263,1
    - Dst: UNSET_FLAG
      Src: /src/frr/babeld/babeld.c:266,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 267
    functionName: babel_get_myid
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached:
    - exit
    - if_nametoindex
    - if_indextoname
    - memcmp
    - if_eui64
    - flog_err
    - safe_strerror
    - read_random_bytes
    - vrf_lookup_by_id
    - UNSET_FLAG
    - memcpy
    linkageType: ''
    returnType: void
    signature: void babel_get_myid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_nametoindex
      Src: /src/frr/babeld/babeld.c:231,1
    - Dst: if_eui64
      Src: /src/frr/babeld/babeld.c:234,1
    - Dst: memcpy
      Src: /src/frr/babeld/babeld.c:237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 240
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 28
    functionsReached:
    - if_eui64
    - if_nametoindex
    - memcpy
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babeld.c:274,1
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:278,1
    - Dst: usleep
      Src: /src/frr/babeld/babeld.c:281,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:281,1
    - Dst: gettime
      Src: /src/frr/babeld/babeld.c:282,1
    - Dst: send_hello
      Src: /src/frr/babeld/babeld.c:283,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babeld.c:284,1
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:288,1
    - Dst: usleep
      Src: /src/frr/babeld/babeld.c:290,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:290,1
    - Dst: gettime
      Src: /src/frr/babeld/babeld.c:291,1
    - Dst: send_hello
      Src: /src/frr/babeld/babeld.c:292,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babeld.c:293,1
    - Dst: send_self_update
      Src: /src/frr/babeld/babeld.c:294,1
    - Dst: send_request
      Src: /src/frr/babeld/babeld.c:295,1
    - Dst: flushupdates
      Src: /src/frr/babeld/babeld.c:296,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babeld.c:297,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 299
    functionName: babel_initial_noise
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached:
    - send_hello
    - send_self_update
    - flushupdates
    - send_request
    - flushbuf
    - send_wildcard_retraction
    - vrf_lookup_by_id
    - roughly
    - gettime
    - usleep
    - if_up
    linkageType: ''
    returnType: void
    signature: void babel_initial_noise(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:278,1
    - Dst: usleep
      Src: /src/frr/babeld/babeld.c:281,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:281,1
    - Dst: gettime
      Src: /src/frr/babeld/babeld.c:282,1
    - Dst: send_hello
      Src: /src/frr/babeld/babeld.c:283,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babeld.c:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 285
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 28
    functionsReached:
    - send_hello
    - send_wildcard_retraction
    - roughly
    - gettime
    - usleep
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:288,1
    - Dst: usleep
      Src: /src/frr/babeld/babeld.c:290,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:290,1
    - Dst: gettime
      Src: /src/frr/babeld/babeld.c:291,1
    - Dst: send_hello
      Src: /src/frr/babeld/babeld.c:292,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/babeld.c:293,1
    - Dst: send_self_update
      Src: /src/frr/babeld/babeld.c:294,1
    - Dst: send_request
      Src: /src/frr/babeld/babeld.c:295,1
    - Dst: flushupdates
      Src: /src/frr/babeld/babeld.c:296,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babeld.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 28
    functionsReached:
    - send_hello
    - send_self_update
    - flushupdates
    - send_request
    - flushbuf
    - send_wildcard_retraction
    - roughly
    - gettime
    - usleep
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flush_all_routes
      Src: /src/frr/babeld/babeld.c:305,1
    - Dst: babel_interface_close_all
      Src: /src/frr/babeld/babeld.c:306,1
    - Dst: event_cancel
      Src: /src/frr/babeld/babeld.c:309,1
    - Dst: event_cancel
      Src: /src/frr/babeld/babeld.c:310,1
    - Dst: distribute_list_delete
      Src: /src/frr/babeld/babeld.c:312,1
    - Dst: XFREE
      Src: /src/frr/babeld/babeld.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 302
    functionDepth: 3
    functionLinenumber: 302
    functionLinenumberEnd: 314
    functionName: babel_clean_routing_process
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - event_cancel
    - distribute_list_delete
    - babel_interface_close_all
    - XFREE
    - flush_all_routes
    linkageType: ''
    returnType: void
    signature: void babel_clean_routing_process(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babeld.c:320,1
    - Dst: gettime
      Src: /src/frr/babeld/babeld.c:324,1
    - Dst: babel_fill_with_next_timeout
      Src: /src/frr/babeld/babeld.c:328,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:330,1
    - Dst: timeval_minus
      Src: /src/frr/babeld/babeld.c:331,1
    - Dst: debugf
      Src: /src/frr/babeld/babeld.c:332,1
    - Dst: timeval_add_msec
      Src: /src/frr/babeld/babeld.c:335,1
    - Dst: babel_set_timer
      Src: /src/frr/babeld/babeld.c:336,1
    - Dst: gettime
      Src: /src/frr/babeld/babeld.c:340,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:343,1
    - Dst: check_neighbours
      Src: /src/frr/babeld/babeld.c:345,1
    - Dst: MAX
      Src: /src/frr/babeld/babeld.c:347,1
    - Dst: schedule_neighbours_check
      Src: /src/frr/babeld/babeld.c:348,1
    - Dst: expire_routes
      Src: /src/frr/babeld/babeld.c:352,1
    - Dst: expire_resend
      Src: /src/frr/babeld/babeld.c:353,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:354,1
    - Dst: expire_sources
      Src: /src/frr/babeld/babeld.c:358,1
    - Dst: roughly
      Src: /src/frr/babeld/babeld.c:359,1
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:364,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babeld.c:366,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:367,1
    - Dst: send_hello
      Src: /src/frr/babeld/babeld.c:368,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:369,1
    - Dst: send_update
      Src: /src/frr/babeld/babeld.c:370,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:371,1
    - Dst: flushupdates
      Src: /src/frr/babeld/babeld.c:373,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:377,1
    - Dst: do_resend
      Src: /src/frr/babeld/babeld.c:378,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:382,1
    - Dst: flush_unicast
      Src: /src/frr/babeld/babeld.c:383,1
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:388,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babeld.c:390,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:392,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babeld.c:393,1
    - Dst: assert
      Src: /src/frr/babeld/babeld.c:398,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 397
        line_start: 397
        source_file: /src/frr/babeld/babeld.c
    constantsTouched: []
    func_position:
      end: 399
      start: 317
    functionDepth: 4
    functionLinenumber: 317
    functionLinenumberEnd: 399
    functionName: babel_main_loop
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached:
    - flushupdates
    - do_resend
    - timeval_compare
    - timeval_add_msec
    - timeval_minus
    - send_update
    - expire_routes
    - babel_fill_with_next_timeout
    - check_neighbours
    - vrf_lookup_by_id
    - assert
    - flushbuf
    - babel_set_timer
    - gettime
    - MAX
    - flush_unicast
    - send_hello
    - expire_resend
    - debugf
    - schedule_neighbours_check
    - babel_get_if_nfo
    - expire_sources
    - roughly
    - if_up
    linkageType: ''
    returnType: void
    signature: void babel_main_loop(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:364,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babeld.c:366,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:367,1
    - Dst: send_hello
      Src: /src/frr/babeld/babeld.c:368,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:369,1
    - Dst: send_update
      Src: /src/frr/babeld/babeld.c:370,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:371,1
    - Dst: flushupdates
      Src: /src/frr/babeld/babeld.c:373,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 374
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 28
    functionsReached:
    - send_hello
    - flushupdates
    - send_update
    - babel_get_if_nfo
    - timeval_compare
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:388,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babeld.c:390,1
    - Dst: timeval_compare
      Src: /src/frr/babeld/babeld.c:392,1
    - Dst: flushbuf
      Src: /src/frr/babeld/babeld.c:393,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 395
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 28
    functionsReached:
    - timeval_compare
    - babel_get_if_nfo
    - flushbuf
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/babeld/babeld.c:412,1
    - Dst: snprintf
      Src: /src/frr/babeld/babeld.c:426,1
    - Dst: debugf
      Src: /src/frr/babeld/babeld.c:434,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 4
    argNames:
    - tv
    - cmd
    - tag
    - ifname
    argTypes:
    - struct timeval*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 439
    functionName: printIfMin
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - debugf
    - snprintf
    linkageType: ''
    returnType: void
    signature: void printIfMin(struct timeval *tv, int cmd, const char *tag, const
      char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babeld.c:452,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:456,1
    - Dst: timeval_min_sec
      Src: /src/frr/babeld/babeld.c:457,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:458,1
    - Dst: timeval_min_sec
      Src: /src/frr/babeld/babeld.c:459,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:460,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:461,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:462,1
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:465,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babeld.c:467,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:468,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:469,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:470,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:471,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:472,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:473,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:474,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:475,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:477,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:478,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 482
    functionName: babel_fill_with_next_timeout
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached:
    - timeval_min_sec
    - printIfMin
    - babel_get_if_nfo
    - vrf_lookup_by_id
    - timeval_min
    - if_up
    linkageType: ''
    returnType: void
    signature: void babel_fill_with_next_timeout(struct timeval *tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 451
    functionName: printIfMin
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: printIfMin(a, b, c, d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/babeld.c:465,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babeld.c:467,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:468,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:469,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:470,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:471,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:472,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:473,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:474,1
    - Dst: printIfMin
      Src: /src/frr/babeld/babeld.c:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 476
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 28
    functionsReached:
    - babel_get_if_nfo
    - timeval_min
    - printIfMin
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/babeld/babeld.c:490,1
    - Dst: event_add_timer_msec
      Src: /src/frr/babeld/babeld.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 493
    functionName: babel_set_timer
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached:
    - event_add_timer_msec
    - event_cancel
    linkageType: ''
    returnType: void
    signature: void babel_set_timer(struct timeval *timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeval_add_msec
      Src: /src/frr/babeld/babeld.c:500,1
    - Dst: timeval_min
      Src: /src/frr/babeld/babeld.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - msecs
    - override
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 505
    functionName: schedule_neighbours_check
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 2
    functionsReached:
    - timeval_add_msec
    - timeval_min
    linkageType: ''
    returnType: void
    signature: void schedule_neighbours_check(int msecs, int override)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/babeld/babeld.c:514,1
    - Dst: flog_err
      Src: /src/frr/babeld/babeld.c:516,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babeld.c:517,1
    - Dst: realloc::realloc
      Src: /src/frr/babeld/babeld.c:523,1
    - Dst: flog_err
      Src: /src/frr/babeld/babeld.c:525,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/babeld.c:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 533
    functionName: resize_receive_buffer
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 2
    functionsReached:
    - malloc
    - flog_err
    - safe_strerror
    - realloc::realloc
    linkageType: ''
    returnType: int
    signature: int resize_receive_buffer(int size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/babeld/babeld.c:546,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babeld.c:550,1
    - Dst: access_list_lookup
      Src: /src/frr/babeld/babeld.c:556,1
    - Dst: prefix_list_lookup
      Src: /src/frr/babeld/babeld.c:561,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - dist
    argTypes:
    - struct distribute_ctx*
    - struct distribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 566
    functionName: babel_distribute_update
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - prefix_list_lookup
    - if_lookup_by_name
    - access_list_lookup
    linkageType: ''
    returnType: void
    signature: void babel_distribute_update (struct distribute_ctx *ctx, struct distribute
      *dist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: distribute_lookup
      Src: /src/frr/babeld/babeld.c:574,1
    - Dst: babel_distribute_update
      Src: /src/frr/babeld/babeld.c:576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 577
    functionName: babel_distribute_update_interface
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - distribute_lookup
    - babel_distribute_update
    linkageType: ''
    returnType: void
    signature: void babel_distribute_update_interface (struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/babeld.c:583,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/babeld/babeld.c:586,1
    - Dst: babel_distribute_update_interface
      Src: /src/frr/babeld/babeld.c:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - notused
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 580
    functionDepth: 3
    functionLinenumber: 580
    functionLinenumberEnd: 588
    functionName: babel_distribute_update_all
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - babel_distribute_update_interface
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void babel_distribute_update_all (struct prefix_list *notused)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_distribute_update_all
      Src: /src/frr/babeld/babeld.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - notused
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 590
    functionDepth: 4
    functionLinenumber: 590
    functionLinenumberEnd: 594
    functionName: babel_distribute_update_all_wrapper
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached:
    - babel_distribute_update_all
    linkageType: ''
    returnType: void
    signature: void babel_distribute_update_all_wrapper (struct access_list *notused)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/babeld/babeld.c:787,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:789,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:790,1
    - Dst: install_default
      Src: /src/frr/babeld/babeld.c:792,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:793,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:794,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:795,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:796,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:797,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:799,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:800,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:801,1
    - Dst: install_element
      Src: /src/frr/babeld/babeld.c:802,1
    - Dst: vrf_cmd_init
      Src: /src/frr/babeld/babeld.c:804,1
    - Dst: babel_if_init
      Src: /src/frr/babeld/babeld.c:806,1
    - Dst: access_list_init
      Src: /src/frr/babeld/babeld.c:809,1
    - Dst: access_list_add_hook
      Src: /src/frr/babeld/babeld.c:810,1
    - Dst: access_list_delete_hook
      Src: /src/frr/babeld/babeld.c:811,1
    - Dst: prefix_list_init
      Src: /src/frr/babeld/babeld.c:814,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/babeld/babeld.c:815,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/babeld/babeld.c:816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 817
    functionName: babeld_quagga_init
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached:
    - prefix_list_delete_hook
    - prefix_list_init
    - install_node
    - prefix_list_add_hook
    - babel_if_init
    - access_list_init
    - install_default
    - access_list_add_hook
    - install_element
    - vrf_cmd_init
    - access_list_delete_hook
    linkageType: ''
    returnType: void
    signature: void babeld_quagga_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_filter
      Src: /src/frr/babeld/babeld.c:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - id
    - prefix
    - plen
    - neigh
    - ifindex
    argTypes:
    - unsigned char*
    - unsigned char*
    - unsigned short
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 821
    functionDepth: 2
    functionLinenumber: 821
    functionLinenumberEnd: 827
    functionName: input_filter
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 4
    functionsReached:
    - babel_filter
    linkageType: ''
    returnType: int
    signature: "int input_filter(const unsigned char *id,\n             const unsigned
      char *prefix, unsigned short plen,\n             const unsigned char *neigh,
      unsigned int ifindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_filter
      Src: /src/frr/babeld/babeld.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - id
    - prefix
    - plen
    - ifindex
    argTypes:
    - unsigned char*
    - unsigned char*
    - unsigned short
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 829
    functionDepth: 2
    functionLinenumber: 829
    functionLinenumberEnd: 834
    functionName: output_filter
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 2
    functionsReached:
    - babel_filter
    linkageType: ''
    returnType: int
    signature: "int output_filter(const unsigned char *id, const unsigned char *prefix,\n
      \             unsigned short plen, unsigned int ifindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prefix
    - plen
    - ifindex
    - proto
    argTypes:
    - unsigned char*
    - unsigned short
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 838
    functionDepth: 0
    functionLinenumber: 838
    functionLinenumberEnd: 843
    functionName: redistribute_filter
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int redistribute_filter(const unsigned char *prefix, unsigned short
      plen,\n                    unsigned int ifindex, int proto)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 848
    functionName: babel_lookup
    functionSourceFile: /src/frr/babeld/babeld.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct babel
    signature: struct babel *babel_lookup(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: roughly
      Src: /src/frr/babeld/util.c:35,1
    - Dst: frr_weak_random
      Src: /src/frr/babeld/util.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 40
    functionName: roughly
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 12
    functionsReached:
    - frr_weak_random
    - roughly
    linkageType: ''
    returnType: int
    signature: int roughly(int value)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - d
    - s1
    - s2
    argTypes:
    - struct timeval*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 54
    functionName: timeval_minus
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void timeval_minus(struct timeval *d,\n              const struct
      timeval *s1, const struct timeval *s2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 75
    functionName: timeval_minus_msec
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned timeval_minus_msec(const struct timeval *s1, const struct
      timeval *s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - d
    - s
    - msecs
    argTypes:
    - struct timeval*
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 90
    functionName: timeval_add_msec
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timeval_add_msec(struct timeval *d, const struct timeval *s, int
      msecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_add_msec
      Src: /src/frr/babeld/util.c:95,1
    - Dst: roughly
      Src: /src/frr/babeld/util.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - timeout
    - msecs
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: set_timeout
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - timeval_add_msec
    - roughly
    linkageType: ''
    returnType: void
    signature: void set_timeout(struct timeval *timeout, int msecs)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: timeval_compare
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timeval_compare(const struct timeval *s1, const struct timeval
      *s2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_compare
      Src: /src/frr/babeld/util.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - d
    - s
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 125
    functionName: timeval_min
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 5
    functionsReached:
    - timeval_compare
    linkageType: ''
    returnType: void
    signature: void timeval_min(struct timeval *d, const struct timeval *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/babeld/util.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - d
    - secs
    argTypes:
    - struct timeval*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: timeval_min_sec
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - frr_weak_random
    linkageType: ''
    returnType: void
    signature: void timeval_min_sec(struct timeval *d, time_t secs)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 180
    functionName: parse_msec
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int parse_msec(const char *string)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/frr/babeld/util.c:189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 200
    functionName: parse_nat
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int
    signature: int parse_nat(const char *string)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:207,1
    - Dst: memset
      Src: /src/frr/babeld/util.c:211,1
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ret
    - prefix
    - plen
    argTypes:
    - unsigned char*
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 217
    functionName: mask_prefix
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *\nmask_prefix(unsigned char *restrict ret,\n            const
      unsigned char *restrict prefix, unsigned char plen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: v4mapped
      Src: /src/frr/babeld/util.c:231,1
    - Dst: inet_ntop
      Src: /src/frr/babeld/util.c:232,1
    - Dst: inet_ntop
      Src: /src/frr/babeld/util.c:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - address
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 236
    functionName: format_address
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 3
    functionsReached:
    - v4mapped
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: 'char *

      format_address(const unsigned char *address)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: v4mapped
      Src: /src/frr/babeld/util.c:245,1
    - Dst: inet_ntop
      Src: /src/frr/babeld/util.c:246,1
    - Dst: strlen
      Src: /src/frr/babeld/util.c:247,1
    - Dst: snprintf
      Src: /src/frr/babeld/util.c:248,1
    - Dst: inet_ntop
      Src: /src/frr/babeld/util.c:250,1
    - Dst: strlen
      Src: /src/frr/babeld/util.c:251,1
    - Dst: snprintf
      Src: /src/frr/babeld/util.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - prefix
    - plen
    argTypes:
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 255
    functionName: format_prefix
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 2
    functionsReached:
    - v4mapped
    - inet_ntop
    - strlen
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      format_prefix(const unsigned char *prefix, unsigned char plen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/babeld/util.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - eui
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 267
    functionName: format_eui64
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 5
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      format_eui64(const unsigned char *eui)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/babeld/util.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 277
    functionName: format_thousands
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      format_thousands(unsigned int value)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/babeld/util.c:286,1
    - Dst: v4tov6
      Src: /src/frr/babeld/util.c:288,1
    - Dst: inet_pton
      Src: /src/frr/babeld/util.c:293,1
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - address
    - addr_r
    - af_r
    argTypes:
    - char*
    - unsigned char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 302
    functionName: parse_address
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - inet_pton
    - v4tov6
    - memcpy
    linkageType: ''
    returnType: int
    signature: int parse_address(const char *address, unsigned char *addr_r, int *af_r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/frr/babeld/util.c:308,1
    - Dst: sscanf
      Src: /src/frr/babeld/util.c:314,1
    - Dst: sscanf
      Src: /src/frr/babeld/util.c:320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - eui
    - eui_r
    argTypes:
    - char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 329
    functionName: parse_eui64
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: int
    signature: int parse_eui64(const char *eui, unsigned char *eui_r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/frr/babeld/util.c:341,1
    - Dst: FD_SET
      Src: /src/frr/babeld/util.c:342,1
    - Dst: select
      Src: /src/frr/babeld/util.c:344,1
    - Dst: select
      Src: /src/frr/babeld/util.c:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - direction
    - fd
    - msecs
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 349
    functionName: wait_for_fd
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached:
    - select
    - FD_SET
    - FD_ZERO
    linkageType: ''
    returnType: int
    signature: int wait_for_fd(int direction, int fd, int msecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/util.c:357,1
    - Dst: v4mapped
      Src: /src/frr/babeld/util.c:359,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - plen
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 362
    functionName: martian_prefix
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached:
    - v4mapped
    - memcmp
    linkageType: ''
    returnType: int
    signature: int martian_prefix(const unsigned char *prefix, int plen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/util.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - address
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 368
    functionName: linklocal
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int linklocal(const unsigned char *address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/util.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - address
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: v4mapped
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 6
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int v4mapped(const unsigned char *address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:379,1
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 381
    functionName: v4tov6
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void v4tov6(unsigned char *dst, const unsigned char *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: v4tov6
      Src: /src/frr/babeld/util.c:386,1
    - Dst: assert
      Src: /src/frr/babeld/util.c:387,1
    - Dst: v4mapped
      Src: /src/frr/babeld/util.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - unsigned char*
    - struct in_addr*
    assertStmts:
    - condition: (v4mapped(dest))
      pos:
        line_end: 386
        line_start: 386
        source_file: /src/frr/babeld/util.c
    constantsTouched: []
    func_position:
      end: 388
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 388
    functionName: inaddr_to_uchar
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached:
    - v4mapped
    - v4tov6
    - assert
    linkageType: ''
    returnType: void
    signature: void inaddr_to_uchar(unsigned char *dest, const struct in_addr *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/util.c:393,1
    - Dst: v4mapped
      Src: /src/frr/babeld/util.c:393,1
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct in_addr*
    - unsigned char*
    assertStmts:
    - condition: (v4mapped(src))
      pos:
        line_end: 392
        line_start: 392
        source_file: /src/frr/babeld/util.c
    constantsTouched: []
    func_position:
      end: 395
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 395
    functionName: uchar_to_inaddr
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - v4mapped
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: void uchar_to_inaddr(struct in_addr *dest, const unsigned char *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - unsigned char*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 401
    functionName: in6addr_to_uchar
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void in6addr_to_uchar(unsigned char *dest, const struct in6_addr *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/babeld/util.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct in6_addr*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: uchar_to_in6addr
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void uchar_to_in6addr(struct in6_addr *dest, const unsigned char *src)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/frr/babeld/util.c:414,1
    - Dst: fflush
      Src: /src/frr/babeld/util.c:415,1
    - Dst: fork
      Src: /src/frr/babeld/util.c:417,1
    - Dst: exit
      Src: /src/frr/babeld/util.c:422,1
    - Dst: setsid
      Src: /src/frr/babeld/util.c:424,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 429
    functionName: daemonise
    functionSourceFile: /src/frr/babeld/util.c
    functionUses: 0
    functionsReached:
    - exit
    - setsid
    - fflush
    - fork
    linkageType: ''
    returnType: int
    signature: int daemonise(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/route.c:42,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - prefix
    - plen
    - route
    argTypes:
    - unsigned char*
    - unsigned char
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: route_compare
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int route_compare(const unsigned char *prefix, unsigned char plen,\n
      \              struct babel_route *route)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: route_compare
      Src: /src/frr/babeld/route.c:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - prefix
    - plen
    - new_return
    argTypes:
    - unsigned char*
    - unsigned char
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 86
    functionName: find_route_slot
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - route_compare
    linkageType: ''
    returnType: int
    signature: "int find_route_slot(const unsigned char *prefix, unsigned char plen,\n
      \               int *new_return)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_route_slot
      Src: /src/frr/babeld/route.c:93,1
    - Dst: memcmp
      Src: /src/frr/babeld/route.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - prefix
    - plen
    - neigh
    - nexthop
    argTypes:
    - unsigned char*
    - unsigned char
    - struct neighbour*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 107
    functionName: find_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 3
    functionsReached:
    - find_route_slot
    - memcmp
    linkageType: ''
    returnType: struct babel_route
    signature: "struct babel_route *\nfind_route(const unsigned char *prefix, unsigned
      char plen,\n           struct neighbour *neigh, const unsigned char *nexthop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_route_slot
      Src: /src/frr/babeld/route.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - prefix
    - plen
    argTypes:
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: find_installed_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - find_route_slot
    linkageType: ''
    returnType: struct babel_route
    signature: 'struct babel_route *

      find_installed_route(const unsigned char *prefix, unsigned char plen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: installed_routes_estimate
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int installed_routes_estimate(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/route.c:131,1
    - Dst: free
      Src: /src/frr/babeld/route.c:135,1
    - Dst: realloc
      Src: /src/frr/babeld/route.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - new_slots
    argTypes:
    - int
    assertStmts:
    - condition: (new_slots >= route_slots)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/babeld/route.c
    constantsTouched: []
    func_position:
      end: 145
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 145
    functionName: resize_route_table
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - realloc
    - free
    - assert
    linkageType: ''
    returnType: int
    signature: int resize_route_table(int new_slots)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/route.c:154,1
    - Dst: find_route_slot
      Src: /src/frr/babeld/route.c:156,1
    - Dst: resize_route_table
      Src: /src/frr/babeld/route.c:160,1
    - Dst: assert
      Src: /src/frr/babeld/route.c:163,1
    - Dst: memmove
      Src: /src/frr/babeld/route.c:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts:
    - condition: (!route->installed)
      pos:
        line_end: 153
        line_start: 153
        source_file: /src/frr/babeld/route.c
    - condition: (routes)
      pos:
        line_end: 162
        line_start: 162
        source_file: /src/frr/babeld/route.c
    constantsTouched: []
    func_position:
      end: 180
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 180
    functionName: insert_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - resize_route_table
    - find_route_slot
    - assert
    - memmove
    linkageType: ''
    returnType: struct babel_route
    signature: 'struct babel_route *

      insert_route(struct babel_route *route)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:190,1
    - Dst: uninstall_route
      Src: /src/frr/babeld/route.c:194,1
    - Dst: find_route_slot
      Src: /src/frr/babeld/route.c:198,1
    - Dst: assert
      Src: /src/frr/babeld/route.c:199,1
    - Dst: free
      Src: /src/frr/babeld/route.c:204,1
    - Dst: memmove
      Src: /src/frr/babeld/route.c:208,1
    - Dst: resize_route_table
      Src: /src/frr/babeld/route.c:215,1
    - Dst: resize_route_table
      Src: /src/frr/babeld/route.c:217,1
    - Dst: free
      Src: /src/frr/babeld/route.c:224,1
    - Dst: route_lost
      Src: /src/frr/babeld/route.c:228,1
    - Dst: release_source
      Src: /src/frr/babeld/route.c:230,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts:
    - condition: (i >= 0 && i < route_slots)
      pos:
        line_end: 198
        line_start: 198
        source_file: /src/frr/babeld/route.c
    constantsTouched: []
    func_position:
      end: 231
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 231
    functionName: flush_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - free
    - memmove
    - resize_route_table
    - find_route_slot
    - route_lost
    - release_source
    - route_metric
    - uninstall_route
    - assert
    linkageType: ''
    returnType: void
    signature: void flush_route(struct babel_route *route)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uninstall_route
      Src: /src/frr/babeld/route.c:244,1
    - Dst: flush_route
      Src: /src/frr/babeld/route.c:245,1
    - Dst: check_sources_released
      Src: /src/frr/babeld/route.c:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 251
    functionName: flush_all_routes
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 2
    functionsReached:
    - check_sources_released
    - flush_route
    - uninstall_route
    linkageType: ''
    returnType: void
    signature: void flush_all_routes(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: flush_route
      Src: /src/frr/babeld/route.c:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: flush_neighbour_routes
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - flush_route
    linkageType: ''
    returnType: void
    signature: void flush_neighbour_routes(struct neighbour *neigh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: v4mapped
      Src: /src/frr/babeld/route.c:286,1
    - Dst: flush_route
      Src: /src/frr/babeld/route.c:287,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ifp
    - v4only
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 275
    functionDepth: 3
    functionLinenumber: 275
    functionLinenumberEnd: 296
    functionName: flush_interface_routes
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 3
    functionsReached:
    - v4mapped
    - flush_route
    linkageType: ''
    returnType: void
    signature: void flush_interface_routes(struct interface *ifp, int v4only)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/babeld/route.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - installed
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 319
    functionName: route_stream
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: struct route_stream
    signature: 'struct route_stream *

      route_stream(int installed)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct route_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 344
    functionName: route_stream_next
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct babel_route
    signature: 'struct babel_route *

      route_stream_next(struct route_stream *stream)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/babeld/route.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct route_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 350
    functionName: route_stream_done
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void route_stream_done(struct route_stream *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - metric
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: metric_to_kernel
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int metric_to_kernel(int metric)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/route.c:363,1
    - Dst: assert
      Src: /src/frr/babeld/route.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - route
    - i
    argTypes:
    - struct babel_route*
    - int
    assertStmts:
    - condition: (i >= 0 && i < route_slots)
      pos:
        line_end: 362
        line_start: 362
        source_file: /src/frr/babeld/route.c
    - condition: (route->installed)
      pos:
        line_end: 363
        line_start: 363
        source_file: /src/frr/babeld/route.c
    constantsTouched: []
    func_position:
      end: 374
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 374
    functionName: move_installed_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void move_installed_route(struct babel_route *route, int i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: route_feasible
      Src: /src/frr/babeld/route.c:384,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:385,1
    - Dst: find_route_slot
      Src: /src/frr/babeld/route.c:388,1
    - Dst: assert
      Src: /src/frr/babeld/route.c:389,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:392,1
    - Dst: kernel_route
      Src: /src/frr/babeld/route.c:398,1
    - Dst: metric_to_kernel
      Src: /src/frr/babeld/route.c:401,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:401,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:404,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/route.c:405,1
    - Dst: move_installed_route
      Src: /src/frr/babeld/route.c:410,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts:
    - condition: (i >= 0 && i < route_slots)
      pos:
        line_end: 388
        line_start: 388
        source_file: /src/frr/babeld/route.c
    constantsTouched: []
    func_position:
      end: 412
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 412
    functionName: install_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 2
    functionsReached:
    - kernel_route
    - move_installed_route
    - find_route_slot
    - flog_err
    - safe_strerror
    - route_metric
    - route_feasible
    - metric_to_kernel
    - assert
    linkageType: ''
    returnType: void
    signature: void install_route(struct babel_route *route)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: kernel_route
      Src: /src/frr/babeld/route.c:422,1
    - Dst: metric_to_kernel
      Src: /src/frr/babeld/route.c:425,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:425,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:427,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/route.c:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 431
    functionName: uninstall_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 2
    functionsReached:
    - kernel_route
    - flog_err
    - safe_strerror
    - metric_to_kernel
    - route_metric
    linkageType: ''
    returnType: void
    signature: void uninstall_route(struct babel_route *route)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_feasible
      Src: /src/frr/babeld/route.c:450,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:451,1
    - Dst: kernel_route
      Src: /src/frr/babeld/route.c:454,1
    - Dst: metric_to_kernel
      Src: /src/frr/babeld/route.c:456,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:456,1
    - Dst: nexthop::nexthop
      Src: /src/frr/babeld/route.c:457,1
    - Dst: neigh::neigh
      Src: /src/frr/babeld/route.c:457,1
    - Dst: metric_to_kernel
      Src: /src/frr/babeld/route.c:458,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:458,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:460,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/route.c:461,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - old
    - new
    argTypes:
    - struct babel_route*
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 469
    functionName: switch_routes
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - kernel_route
    - nexthop::nexthop
    - neigh::neigh
    - flog_err
    - safe_strerror
    - route_feasible
    - metric_to_kernel
    - route_metric
    linkageType: ''
    returnType: void
    signature: void switch_routes(struct babel_route *old, struct babel_route *new)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/babeld/route.c:476,1
    - Dst: metric_to_kernel
      Src: /src/frr/babeld/route.c:478,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:478,1
    - Dst: metric_to_kernel::metric_to_kernel
      Src: /src/frr/babeld/route.c:479,1
    - Dst: kernel_route
      Src: /src/frr/babeld/route.c:483,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:489,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/route.c:490,1
    - Dst: route_smoothed_metric
      Src: /src/frr/babeld/route.c:496,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:503,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - route
    - refmetric
    - cost
    - add
    argTypes:
    - struct babel_route*
    - unsigned
    - unsigned
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 506
    functionName: change_route_metric
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - MIN
    - route_smoothed_metric
    - kernel_route
    - flog_err
    - safe_strerror
    - metric_to_kernel::metric_to_kernel
    - metric_to_kernel
    - route_metric
    linkageType: ''
    returnType: void
    signature: "void change_route_metric(struct babel_route *route,\n                    unsigned
      refmetric, unsigned cost, unsigned add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: change_route_metric
      Src: /src/frr/babeld/route.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 514
    functionName: retract_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - change_route_metric
    linkageType: ''
    returnType: void
    signature: void retract_route(struct babel_route *route)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: update_feasible
      Src: /src/frr/babeld/route.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 520
    functionName: route_feasible
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 3
    functionsReached:
    - update_feasible
    linkageType: ''
    returnType: int
    signature: int route_feasible(struct babel_route *route)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 526
    functionName: route_old
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int route_old(struct babel_route *route)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 532
    functionName: route_expired
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int route_expired(struct babel_route *route)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - ch1
    - ch2
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 544
    functionName: channels_interfere
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int channels_interfere(int ch1, int ch2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/route.c:559,1
    - Dst: channels_interfere
      Src: /src/frr/babeld/route.c:560,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/route.c:561,1
    - Dst: channels_interfere
      Src: /src/frr/babeld/route.c:568,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - route
    - ifp
    argTypes:
    - struct babel_route*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 576
    functionName: route_interferes
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - channels_interfere
    linkageType: ''
    returnType: int
    signature: int route_interferes(struct babel_route *route, struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: seqno_compare
      Src: /src/frr/babeld/route.c:593,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - src
    - seqno
    - refmetric
    argTypes:
    - struct source*
    - unsigned short
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 595
    functionName: update_feasible
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 1
    functionsReached:
    - seqno_compare
    linkageType: ''
    returnType: int
    signature: "int update_feasible(struct source *src,\n                unsigned
      short seqno, unsigned short refmetric)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - half_life
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 616
    functionName: change_smoothing_half_life
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void change_smoothing_half_life(int half_life)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:622,1
    - Dst: roughly
      Src: /src/frr/babeld/route.c:637,1
    - Dst: roughly
      Src: /src/frr/babeld/route.c:643,1
    - Dst: assert
      Src: /src/frr/babeld/route.c:653,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts:
    - condition: (route->smoothed_metric_time == babel_now.tv_sec)
      pos:
        line_end: 652
        line_start: 652
        source_file: /src/frr/babeld/route.c
    constantsTouched: []
    func_position:
      end: 655
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 655
    functionName: route_smoothed_metric
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 1
    functionsReached:
    - assert
    - route_metric
    - roughly
    linkageType: ''
    returnType: int
    signature: int route_smoothed_metric(struct babel_route *route)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_expired
      Src: /src/frr/babeld/route.c:661,1
    - Dst: route_feasible
      Src: /src/frr/babeld/route.c:663,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - route
    - feasible
    - exclude
    argTypes:
    - struct babel_route*
    - int
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 657
    functionDepth: 2
    functionLinenumber: 657
    functionLinenumberEnd: 668
    functionName: route_acceptable
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - route_feasible
    - route_expired
    linkageType: ''
    returnType: int
    signature: "int route_acceptable(struct babel_route *route, int feasible,\n                 struct
      neighbour *exclude)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_route_slot
      Src: /src/frr/babeld/route.c:680,1
    - Dst: route_acceptable
      Src: /src/frr/babeld/route.c:686,1
    - Dst: route_acceptable
      Src: /src/frr/babeld/route.c:694,1
    - Dst: route_smoothed_metric
      Src: /src/frr/babeld/route.c:695,1
    - Dst: route_smoothed_metric
      Src: /src/frr/babeld/route.c:695,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - prefix
    - plen
    - feasible
    - exclude
    argTypes:
    - unsigned char*
    - unsigned char
    - int
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 675
    functionDepth: 3
    functionLinenumber: 675
    functionLinenumberEnd: 701
    functionName: find_best_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - route_smoothed_metric
    - find_route_slot
    - route_acceptable
    linkageType: ''
    returnType: struct babel_route
    signature: "struct babel_route *\nfind_best_route(const unsigned char *prefix,
      unsigned char plen, int feasible,\n                struct neighbour *exclude)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:706,1
    - Dst: route_smoothed_metric
      Src: /src/frr/babeld/route.c:707,1
    - Dst: route_expired
      Src: /src/frr/babeld/route.c:709,1
    - Dst: seqno_plus
      Src: /src/frr/babeld/route.c:711,1
    - Dst: retract_route
      Src: /src/frr/babeld/route.c:712,1
    - Dst: route_changed
      Src: /src/frr/babeld/route.c:714,1
    - Dst: input_filter
      Src: /src/frr/babeld/route.c:718,1
    - Dst: change_route_metric
      Src: /src/frr/babeld/route.c:722,1
    - Dst: neighbour_cost
      Src: /src/frr/babeld/route.c:723,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:724,1
    - Dst: route_smoothed_metric
      Src: /src/frr/babeld/route.c:725,1
    - Dst: route_changed
      Src: /src/frr/babeld/route.c:726,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 703
    functionDepth: 3
    functionLinenumber: 703
    functionLinenumberEnd: 728
    functionName: update_route_metric
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - route_smoothed_metric
    - retract_route
    - route_changed
    - neighbour_cost
    - change_route_metric
    - seqno_plus
    - input_filter
    - route_expired
    - route_metric
    linkageType: ''
    returnType: void
    signature: void update_route_metric(struct babel_route *route)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: update_route_metric
      Src: /src/frr/babeld/route.c:743,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - neigh
    - changed
    argTypes:
    - struct neighbour*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 732
    functionDepth: 4
    functionLinenumber: 732
    functionLinenumberEnd: 748
    functionName: update_neighbour_metric
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - update_route_metric
    linkageType: ''
    returnType: void
    signature: void update_neighbour_metric(struct neighbour *neigh, int changed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_route_metric
      Src: /src/frr/babeld/route.c:759,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 750
    functionDepth: 4
    functionLinenumber: 750
    functionLinenumberEnd: 763
    functionName: update_interface_metric
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 2
    functionsReached:
    - update_route_metric
    linkageType: ''
    returnType: void
    signature: void update_interface_metric(struct interface *ifp)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/frr/babeld/route.c:778,1
    - Dst: memcmp
      Src: /src/frr/babeld/route.c:780,1
    - Dst: martian_prefix
      Src: /src/frr/babeld/route.c:783,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:784,1
    - Dst: format_prefix
      Src: /src/frr/babeld/route.c:785,1
    - Dst: format_address
      Src: /src/frr/babeld/route.c:785,1
    - Dst: input_filter
      Src: /src/frr/babeld/route.c:789,1
    - Dst: find_route
      Src: /src/frr/babeld/route.c:794,1
    - Dst: memcmp
      Src: /src/frr/babeld/route.c:796,1
    - Dst: find_source
      Src: /src/frr/babeld/route.c:800,1
    - Dst: update_feasible
      Src: /src/frr/babeld/route.c:805,1
    - Dst: MIN
      Src: /src/frr/babeld/route.c:806,1
    - Dst: neighbour_cost
      Src: /src/frr/babeld/route.c:806,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:814,1
    - Dst: debugf
      Src: /src/frr/babeld/route.c:821,1
    - Dst: format_prefix
      Src: /src/frr/babeld/route.c:822,1
    - Dst: format_eui64
      Src: /src/frr/babeld/route.c:823,1
    - Dst: format_eui64
      Src: /src/frr/babeld/route.c:825,1
    - Dst: uninstall_route
      Src: /src/frr/babeld/route.c:827,1
    - Dst: retain_source
      Src: /src/frr/babeld/route.c:832,1
    - Dst: memset
      Src: /src/frr/babeld/route.c:837,1
    - Dst: memcpy
      Src: /src/frr/babeld/route.c:839,1
    - Dst: MIN
      Src: /src/frr/babeld/route.c:840,1
    - Dst: change_route_metric
      Src: /src/frr/babeld/route.c:842,1
    - Dst: neighbour_cost
      Src: /src/frr/babeld/route.c:843,1
    - Dst: route_changed
      Src: /src/frr/babeld/route.c:846,1
    - Dst: route_lost
      Src: /src/frr/babeld/route.c:848,1
    - Dst: send_unfeasible_request
      Src: /src/frr/babeld/route.c:851,1
    - Dst: route_old
      Src: /src/frr/babeld/route.c:851,1
    - Dst: release_source
      Src: /src/frr/babeld/route.c:853,1
    - Dst: send_unfeasible_request
      Src: /src/frr/babeld/route.c:861,1
    - Dst: malloc
      Src: /src/frr/babeld/route.c:866,1
    - Dst: perror
      Src: /src/frr/babeld/route.c:868,1
    - Dst: retain_source
      Src: /src/frr/babeld/route.c:872,1
    - Dst: neighbour_cost
      Src: /src/frr/babeld/route.c:874,1
    - Dst: memcpy
      Src: /src/frr/babeld/route.c:878,1
    - Dst: MAX
      Src: /src/frr/babeld/route.c:881,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:881,1
    - Dst: memset
      Src: /src/frr/babeld/route.c:884,1
    - Dst: memcpy
      Src: /src/frr/babeld/route.c:886,1
    - Dst: MIN
      Src: /src/frr/babeld/route.c:887,1
    - Dst: insert_route
      Src: /src/frr/babeld/route.c:889,1
    - Dst: flog_err
      Src: /src/frr/babeld/route.c:891,1
    - Dst: free
      Src: /src/frr/babeld/route.c:892,1
    - Dst: consider_route
      Src: /src/frr/babeld/route.c:895,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 81
    argCount: 10
    argNames:
    - router_id
    - prefix
    - plen
    - seqno
    - refmetric
    - interval
    - neigh
    - nexthop
    - channels
    - channels_len
    argTypes:
    - unsigned char*
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned short
    - unsigned short
    - struct neighbour*
    - unsigned char*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 766
    functionDepth: 3
    functionLinenumber: 766
    functionLinenumberEnd: 898
    functionName: update_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 2
    functionsReached:
    - consider_route
    - malloc
    - neighbour_cost
    - memcmp
    - route_lost
    - change_route_metric
    - send_unfeasible_request
    - flog_err
    - uninstall_route
    - format_address
    - MIN
    - update_feasible
    - memset
    - route_changed
    - input_filter
    - release_source
    - retain_source
    - free
    - find_source
    - MAX
    - memcpy
    - route_metric
    - route_old
    - format_eui64
    - perror
    - debugf
    - martian_prefix
    - find_route
    - insert_route
    - format_prefix
    linkageType: ''
    returnType: struct babel_route
    signature: "struct babel_route *\nupdate_route(const unsigned char *router_id,\n
      \            const unsigned char *prefix, unsigned char plen,\n             unsigned
      short seqno, unsigned short refmetric,\n             unsigned short interval,\n
      \            struct neighbour *neigh, const unsigned char *nexthop,\n             const
      unsigned char *channels, int channels_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_installed_route
      Src: /src/frr/babeld/route.c:907,1
    - Dst: seqno_minus
      Src: /src/frr/babeld/route.c:909,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:914,1
    - Dst: send_unicast_multihop_request
      Src: /src/frr/babeld/route.c:915,1
    - Dst: seqno_plus
      Src: /src/frr/babeld/route.c:918,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 5
    argNames:
    - neigh
    - force
    - seqno
    - metric
    - src
    argTypes:
    - struct neighbour*
    - int
    - unsigned short
    - unsigned short
    - struct source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 921
    functionName: send_unfeasible_request
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 1
    functionsReached:
    - find_installed_route
    - seqno_minus
    - send_unicast_multihop_request
    - seqno_plus
    - route_metric
    linkageType: ''
    returnType: void
    signature: "void send_unfeasible_request(struct neighbour *neigh, int force,\n
      \                       unsigned short seqno, unsigned short metric,\n                        struct
      source *src)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: route_feasible
      Src: /src/frr/babeld/route.c:937,1
    - Dst: find_xroute
      Src: /src/frr/babeld/route.c:940,1
    - Dst: find_installed_route
      Src: /src/frr/babeld/route.c:944,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:949,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:952,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:955,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:955,1
    - Dst: route_smoothed_metric
      Src: /src/frr/babeld/route.c:956,1
    - Dst: route_smoothed_metric
      Src: /src/frr/babeld/route.c:956,1
    - Dst: switch_routes
      Src: /src/frr/babeld/route.c:962,1
    - Dst: send_triggered_update
      Src: /src/frr/babeld/route.c:964,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:964,1
    - Dst: send_update
      Src: /src/frr/babeld/route.c:966,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 928
    functionDepth: 3
    functionLinenumber: 928
    functionLinenumberEnd: 968
    functionName: consider_route
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 1
    functionsReached:
    - route_smoothed_metric
    - find_installed_route
    - switch_routes
    - send_update
    - send_triggered_update
    - route_feasible
    - find_xroute
    - route_metric
    linkageType: ''
    returnType: void
    signature: void consider_route(struct babel_route *route)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:980,1
    - Dst: retract_route
      Src: /src/frr/babeld/route.c:981,1
    - Dst: route_changed
      Src: /src/frr/babeld/route.c:983,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 970
    functionDepth: 3
    functionLinenumber: 970
    functionLinenumberEnd: 989
    functionName: retract_neighbour_routes
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 0
    functionsReached:
    - route_changed
    - route_metric
    - retract_route
    linkageType: ''
    returnType: void
    signature: void retract_neighbour_routes(struct neighbour *neigh)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:1002,1
    - Dst: unsatisfied_request
      Src: /src/frr/babeld/route.c:1013,1
    - Dst: send_update_resend
      Src: /src/frr/babeld/route.c:1031,1
    - Dst: send_update
      Src: /src/frr/babeld/route.c:1033,1
    - Dst: send_request_resend
      Src: /src/frr/babeld/route.c:1037,1
    - Dst: seqno_plus
      Src: /src/frr/babeld/route.c:1040,1
    - Dst: send_request
      Src: /src/frr/babeld/route.c:1043,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 29
    argCount: 3
    argNames:
    - route
    - oldsrc
    - oldmetric
    argTypes:
    - struct babel_route*
    - struct source*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 991
    functionDepth: 4
    functionLinenumber: 991
    functionLinenumberEnd: 1046
    functionName: send_triggered_update
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 1
    functionsReached:
    - send_update_resend
    - send_update
    - send_request
    - seqno_plus
    - unsatisfied_request
    - send_request_resend
    - route_metric
    linkageType: ''
    returnType: void
    signature: "void send_triggered_update(struct babel_route *route, struct source
      *oldsrc,\n                      unsigned oldmetric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_best_route
      Src: /src/frr/babeld/route.c:1058,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:1059,1
    - Dst: route_metric
      Src: /src/frr/babeld/route.c:1059,1
    - Dst: consider_route
      Src: /src/frr/babeld/route.c:1060,1
    - Dst: send_triggered_update
      Src: /src/frr/babeld/route.c:1065,1
    - Dst: consider_route
      Src: /src/frr/babeld/route.c:1069,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - route
    - oldsrc
    - oldmetric
    argTypes:
    - struct babel_route*
    - struct source*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1050
    functionDepth: 5
    functionLinenumber: 1050
    functionLinenumberEnd: 1071
    functionName: route_changed
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 6
    functionsReached:
    - find_best_route
    - send_triggered_update
    - route_metric
    - consider_route
    linkageType: ''
    returnType: void
    signature: "void route_changed(struct babel_route *route,\n              struct
      source *oldsrc, unsigned short oldmetric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_best_route
      Src: /src/frr/babeld/route.c:1078,1
    - Dst: consider_route
      Src: /src/frr/babeld/route.c:1080,1
    - Dst: send_update_resend
      Src: /src/frr/babeld/route.c:1083,1
    - Dst: send_request_resend
      Src: /src/frr/babeld/route.c:1088,1
    - Dst: seqno_plus
      Src: /src/frr/babeld/route.c:1090,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - src
    - oldmetric
    argTypes:
    - struct source*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1074
    functionDepth: 4
    functionLinenumber: 1074
    functionLinenumberEnd: 1093
    functionName: route_lost
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 2
    functionsReached:
    - send_update_resend
    - consider_route
    - find_best_route
    - seqno_plus
    - send_request_resend
    linkageType: ''
    returnType: void
    signature: void route_lost(struct source *src, unsigned oldmetric)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/route.c:1103,1
    - Dst: route_old
      Src: /src/frr/babeld/route.c:1110,1
    - Dst: flush_route
      Src: /src/frr/babeld/route.c:1111,1
    - Dst: update_route_metric
      Src: /src/frr/babeld/route.c:1115,1
    - Dst: route_old
      Src: /src/frr/babeld/route.c:1118,1
    - Dst: send_unicast_request
      Src: /src/frr/babeld/route.c:1120,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1097
    functionDepth: 4
    functionLinenumber: 1097
    functionLinenumberEnd: 1129
    functionName: expire_routes
    functionSourceFile: /src/frr/babeld/route.c
    functionUses: 1
    functionsReached:
    - debugf
    - flush_route
    - send_unicast_request
    - update_route_metric
    - route_old
    linkageType: ''
    returnType: void
    signature: void expire_routes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: babel_get_if_nfo
    functionSourceFile: /src/frr/babeld/babel_interface.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: babel_interface_nfo
    signature: babel_interface_nfo * babel_get_if_nfo(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/babeld/babel_interface.h:84,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_interface.h:86,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/babel_interface.h:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 87
    functionName: if_up
    functionSourceFile: /src/frr/babeld/babel_interface.h
    functionUses: 28
    functionsReached:
    - babel_get_if_nfo
    - CHECK_FLAG
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int if_up(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/babeld/route.h:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: route_metric
    functionSourceFile: /src/frr/babeld/route.h
    functionUses: 18
    functionsReached:
    - MIN
    linkageType: ''
    returnType: int
    signature: int route_metric(const struct babel_route *route)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/frr/babeld/route.h:62,1
    - Dst: MIN
      Src: /src/frr/babeld/route.h:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct babel_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: route_metric_noninterfering
    functionSourceFile: /src/frr/babeld/route.h
    functionUses: 0
    functionsReached:
    - MIN
    - MAX
    linkageType: ''
    returnType: int
    signature: int route_metric_noninterfering(const struct babel_route *route)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/babeld/kernel.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interface
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: kernel_interface_operational
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 0
    functionsReached:
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int kernel_interface_operational(struct interface *interface)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/babeld/kernel.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interface
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: kernel_interface_mtu
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 0
    functionsReached:
    - MIN
    linkageType: ''
    returnType: int
    signature: int kernel_interface_mtu(struct interface *interface)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interface
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: kernel_interface_wireless
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kernel_interface_wireless(struct interface *interface)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: v4mapped
      Src: /src/frr/babeld/kernel.c:72,1
    - Dst: v4mapped
      Src: /src/frr/babeld/kernel.c:73,1
    - Dst: v4mapped
      Src: /src/frr/babeld/kernel.c:79,1
    - Dst: zebra_route
      Src: /src/frr/babeld/kernel.c:88,1
    - Dst: zebra_route
      Src: /src/frr/babeld/kernel.c:90,1
    - Dst: memcmp
      Src: /src/frr/babeld/kernel.c:92,1
    - Dst: debugf
      Src: /src/frr/babeld/kernel.c:95,1
    - Dst: zebra_route
      Src: /src/frr/babeld/kernel.c:96,1
    - Dst: zebra_route
      Src: /src/frr/babeld/kernel.c:100,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 9
    argNames:
    - operation
    - pref
    - plen
    - gate
    - ifindex
    - metric
    - newgate
    - newifindex
    - newmetric
    argTypes:
    - enum babel_kernel_routes
    - unsigned char*
    - unsigned short
    - unsigned char*
    - int
    - unsigned int
    - unsigned char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 106
    functionName: kernel_route
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 4
    functionsReached:
    - v4mapped
    - debugf
    - memcmp
    - zebra_route
    linkageType: ''
    returnType: int
    signature: "int kernel_route(enum babel_kernel_routes operation, const unsigned
      char *pref,\n\t     unsigned short plen, const unsigned char *gate, int ifindex,\n\t
      \    unsigned int metric, const unsigned char *newgate, int newifindex,\n             unsigned
      int newmetric)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: uchar_to_inaddr
      Src: /src/frr/babeld/kernel.c:123,1
    - Dst: uchar_to_in6addr
      Src: /src/frr/babeld/kernel.c:126,1
    - Dst: memset
      Src: /src/frr/babeld/kernel.c:131,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/babeld/kernel.c:135,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/babeld/kernel.c:140,1
    - Dst: apply_mask
      Src: /src/frr/babeld/kernel.c:144,1
    - Dst: memset
      Src: /src/frr/babeld/kernel.c:146,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/babeld/kernel.c:153,1
    - Dst: SET_FLAG
      Src: /src/frr/babeld/kernel.c:155,1
    - Dst: uchar_to_inaddr
      Src: /src/frr/babeld/kernel.c:161,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/babeld/kernel.c:162,1
    - Dst: uchar_to_in6addr
      Src: /src/frr/babeld/kernel.c:170,1
    - Dst: SET_FLAG
      Src: /src/frr/babeld/kernel.c:175,1
    - Dst: debugf
      Src: /src/frr/babeld/kernel.c:179,1
    - Dst: zclient_route_send
      Src: /src/frr/babeld/kernel.c:182,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 54
    argCount: 7
    argNames:
    - add
    - family
    - pref
    - plen
    - gate
    - ifindex
    - metric
    argTypes:
    - int
    - int
    - unsigned char*
    - unsigned short
    - unsigned char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 184
    functionName: zebra_route
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 1
    functionsReached:
    - uchar_to_inaddr
    - apply_mask
    - memset
    - uchar_to_in6addr
    - debugf
    - IPV4_ADDR_COPY
    - SET_FLAG
    - IPV4_ADDR_SAME
    - zclient_route_send
    - IPV6_ADDR_COPY
    - zapi_route_set_blackhole
    linkageType: ''
    returnType: int
    signature: "int zebra_route(int add, int family, const unsigned char *pref, unsigned
      short plen,\n            const unsigned char *gate, int ifindex, unsigned int
      metric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/babeld/kernel.c:189,1
    - Dst: memcpy
      Src: /src/frr/babeld/kernel.c:198,1
    - Dst: memcpy
      Src: /src/frr/babeld/kernel.c:201,1
    - Dst: memcpy
      Src: /src/frr/babeld/kernel.c:204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ifindex
    - eui
    argTypes:
    - int
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 209
    functionName: if_eui64
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 2
    functionsReached:
    - if_lookup_by_index
    - memcpy
    linkageType: ''
    returnType: int
    signature: int if_eui64(int ifindex, unsigned char *eui)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/babeld/kernel.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 217
    functionName: gettime
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 12
    functionsReached:
    - monotime
    linkageType: ''
    returnType: void
    signature: void gettime(struct timeval *tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/babeld/kernel.c:228,1
    - Dst: read
      Src: /src/frr/babeld/kernel.c:232,1
    - Dst: close
      Src: /src/frr/babeld/kernel.c:235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 238
    functionName: read_random_bytes
    functionSourceFile: /src/frr/babeld/kernel.c
    functionUses: 2
    functionsReached:
    - read
    - open
    - close
    linkageType: ''
    returnType: int
    signature: int read_random_bytes(void *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/neighbour.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - address
    - ifp
    argTypes:
    - unsigned char*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 42
    functionName: find_neighbour_nocreate
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: struct neighbour
    signature: 'struct neighbour *

      find_neighbour_nocreate(const unsigned char *address, struct interface *ifp)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/neighbour.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: FOR_ALL_NEIGHBOURS
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_NEIGHBOURS(neigh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/neighbour.c:47,1
    - Dst: format_address
      Src: /src/frr/babeld/neighbour.c:48,1
    - Dst: flush_neighbour_routes
      Src: /src/frr/babeld/neighbour.c:49,1
    - Dst: flush_unicast
      Src: /src/frr/babeld/neighbour.c:51,1
    - Dst: flush_resends
      Src: /src/frr/babeld/neighbour.c:52,1
    - Dst: free
      Src: /src/frr/babeld/neighbour.c:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 63
    functionName: flush_neighbour
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 0
    functionsReached:
    - flush_resends
    - debugf
    - free
    - flush_unicast
    - flush_neighbour_routes
    - format_address
    linkageType: ''
    returnType: void
    signature: void flush_neighbour(struct neighbour *neigh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_neighbour_nocreate
      Src: /src/frr/babeld/neighbour.c:71,1
    - Dst: debugf
      Src: /src/frr/babeld/neighbour.c:75,1
    - Dst: format_address
      Src: /src/frr/babeld/neighbour.c:76,1
    - Dst: malloc
      Src: /src/frr/babeld/neighbour.c:78,1
    - Dst: flog_err
      Src: /src/frr/babeld/neighbour.c:80,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/neighbour.c:81,1
    - Dst: memcpy
      Src: /src/frr/babeld/neighbour.c:86,1
    - Dst: send_hello
      Src: /src/frr/babeld/neighbour.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - address
    - ifp
    argTypes:
    - unsigned char*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 102
    functionName: find_neighbour
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 0
    functionsReached:
    - send_hello
    - malloc
    - debugf
    - flog_err
    - safe_strerror
    - find_neighbour_nocreate
    - format_address
    - memcpy
    linkageType: ''
    returnType: struct neighbour
    signature: 'struct neighbour *

      find_neighbour(const unsigned char *address, struct interface *ifp)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/neighbour.c:115,1
    - Dst: timeval_add_msec
      Src: /src/frr/babeld/neighbour.c:120,1
    - Dst: seqno_minus
      Src: /src/frr/babeld/neighbour.c:124,1
    - Dst: seqno_plus
      Src: /src/frr/babeld/neighbour.c:156,1
    - Dst: send_hello
      Src: /src/frr/babeld/neighbour.c:171,1
    - Dst: send_self_update
      Src: /src/frr/babeld/neighbour.c:178,1
    - Dst: send_unicast_request
      Src: /src/frr/babeld/neighbour.c:185,1
    - Dst: send_ihu
      Src: /src/frr/babeld/neighbour.c:186,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 3
    argNames:
    - neigh
    - hello
    - hello_interval
    argTypes:
    - struct neighbour*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 189
    functionName: update_neighbour
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 0
    functionsReached:
    - send_hello
    - seqno_minus
    - timeval_minus_msec
    - seqno_plus
    - send_unicast_request
    - send_ihu
    - send_self_update
    - timeval_add_msec
    linkageType: ''
    returnType: int
    signature: int update_neighbour(struct neighbour *neigh, int hello, int hello_interval)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/neighbour.c:196,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 211
    functionName: reset_txcost
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 0
    functionsReached:
    - timeval_minus_msec
    linkageType: ''
    returnType: int
    signature: int reset_txcost(struct neighbour *neigh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 217
    functionName: neighbour_txcost
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned
    signature: unsigned neighbour_txcost(struct neighbour *neigh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/neighbour.c:226,1
    - Dst: update_neighbour
      Src: /src/frr/babeld/neighbour.c:230,1
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/neighbour.c:234,1
    - Dst: flush_neighbour
      Src: /src/frr/babeld/neighbour.c:237,1
    - Dst: reset_txcost
      Src: /src/frr/babeld/neighbour.c:241,1
    - Dst: update_neighbour_metric
      Src: /src/frr/babeld/neighbour.c:244,1
    - Dst: MIN
      Src: /src/frr/babeld/neighbour.c:247,1
    - Dst: MIN
      Src: /src/frr/babeld/neighbour.c:249,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 219
    functionDepth: 5
    functionLinenumber: 219
    functionLinenumberEnd: 254
    functionName: check_neighbours
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 1
    functionsReached:
    - MIN
    - reset_txcost
    - debugf
    - timeval_minus_msec
    - flush_neighbour
    - update_neighbour_metric
    - update_neighbour
    linkageType: ''
    returnType: unsigned
    signature: unsigned check_neighbours(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/neighbour.c:262,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/neighbour.c:266,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/neighbour.c:272,1
    - Dst: MIN
      Src: /src/frr/babeld/neighbour.c:276,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/neighbour.c:280,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/neighbour.c:284,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 288
    functionName: neighbour_rxcost
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 1
    functionsReached:
    - MIN
    - timeval_minus_msec
    - babel_get_if_nfo
    linkageType: ''
    returnType: unsigned
    signature: unsigned neighbour_rxcost(struct neighbour *neigh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/neighbour.c:294,1
    - Dst: valid_rtt
      Src: /src/frr/babeld/neighbour.c:296,1
    - Dst: assert
      Src: /src/frr/babeld/neighbour.c:307,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts:
    - condition: ((tmp & 0x7FFFFFFF) == tmp)
      pos:
        line_end: 306
        line_start: 306
        source_file: /src/frr/babeld/neighbour.c
    constantsTouched: []
    func_position:
      end: 312
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 312
    functionName: neighbour_rttcost
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 1
    functionsReached:
    - babel_get_if_nfo
    - assert
    - valid_rtt
    linkageType: ''
    returnType: unsigned
    signature: unsigned neighbour_rttcost(struct neighbour *neigh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/neighbour.c:319,1
    - Dst: neighbour_txcost
      Src: /src/frr/babeld/neighbour.c:322,1
    - Dst: neighbour_rxcost
      Src: /src/frr/babeld/neighbour.c:327,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/neighbour.c:331,1
    - Dst: MAX
      Src: /src/frr/babeld/neighbour.c:338,1
    - Dst: MAX
      Src: /src/frr/babeld/neighbour.c:339,1
    - Dst: neighbour_rttcost
      Src: /src/frr/babeld/neighbour.c:345,1
    - Dst: MIN
      Src: /src/frr/babeld/neighbour.c:347,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 348
    functionName: neighbour_cost
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 2
    functionsReached:
    - MIN
    - neighbour_rxcost
    - neighbour_rttcost
    - babel_get_if_nfo
    - neighbour_txcost
    - MAX
    - if_up
    linkageType: ''
    returnType: unsigned
    signature: unsigned neighbour_cost(struct neighbour *neigh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/neighbour.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - neigh
    argTypes:
    - struct neighbour*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 354
    functionName: valid_rtt
    functionSourceFile: /src/frr/babeld/neighbour.c
    functionUses: 1
    functionsReached:
    - timeval_minus_msec
    linkageType: ''
    returnType: int
    signature: int valid_rtt(struct neighbour *neigh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ae
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: known_ae
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool known_ae(int ae)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/babeld/message.c:79,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:88,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:90,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:91,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:93,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:99,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:100,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:102,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:109,1
    - Dst: mask_prefix
      Src: /src/frr/babeld/message.c:116,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 52
    argCount: 7
    argNames:
    - ae
    - plen
    - omitted
    - p
    - dp
    - len
    - p_r
    argTypes:
    - int
    - int
    - unsigned int
    - unsigned char*
    - unsigned char*
    - unsigned int
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 118
    functionName: network_prefix
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - v4mapped
    - memcpy
    - mask_prefix
    - memset
    linkageType: ''
    returnType: int
    signature: "int network_prefix(int ae, int plen, unsigned int omitted,\n               const
      unsigned char *p, const unsigned char *dp,\n               unsigned int len,
      unsigned char *p_r)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:133,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:138,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:150,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:157,1
    - Dst: memchr
      Src: /src/frr/babeld/message.c:163,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:165,1
    - Dst: memset
      Src: /src/frr/babeld/message.c:169,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:170,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:172,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - a
    - alen
    - channels
    argTypes:
    - unsigned char*
    - int
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 179
    functionName: parse_update_subtlv
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - memset
    - memchr
    - debugf
    - flog_err
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool parse_update_subtlv(const unsigned char *a, int alen,\n\t\t\t\tunsigned
      char *channels)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:195,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:201,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:214,1
    - Dst: DO_NTOHL
      Src: /src/frr/babeld/message.c:221,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:224,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:229,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - a
    - alen
    - hello_send_us
    argTypes:
    - unsigned char*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 236
    functionName: parse_hello_subtlv
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - debugf
    - flog_err
    - DO_NTOHL
    linkageType: ''
    returnType: int
    signature: "int parse_hello_subtlv(const unsigned char *a, int alen,\n                   unsigned
      int *hello_send_us)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:253,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:259,1
    - Dst: DO_NTOHL
      Src: /src/frr/babeld/message.c:268,1
    - Dst: DO_NTOHL
      Src: /src/frr/babeld/message.c:269,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:273,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:277,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 4
    argNames:
    - a
    - alen
    - hello_send_us
    - hello_rtt_receive_time
    argTypes:
    - unsigned char*
    - int
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 284
    functionName: parse_ihu_subtlv
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - DO_NTOHL
    - flog_err
    - debugf
    linkageType: ''
    returnType: int
    signature: "int parse_ihu_subtlv(const unsigned char *a, int alen,\n                 unsigned
      int *hello_send_us,\n                 unsigned int *hello_rtt_receive_time)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: network_prefix
      Src: /src/frr/babeld/message.c:317,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:327,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:338,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 5
    argNames:
    - ae
    - a
    - alen
    - src_prefix
    - src_plen
    argTypes:
    - int
    - unsigned char*
    - int
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 340
    functionName: parse_request_subtlv
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - debugf
    - network_prefix
    - flog_err
    linkageType: ''
    returnType: int
    signature: "int parse_request_subtlv(int ae, const unsigned char *a, int alen,\n
      \                    unsigned char *src_prefix, unsigned char *src_plen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: network_prefix
      Src: /src/frr/babeld/message.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ae
    - a
    - len
    - a_r
    argTypes:
    - int
    - unsigned char*
    - unsigned int
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 347
    functionName: network_address
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - network_prefix
    linkageType: ''
    returnType: int
    signature: "int network_address(int ae, const unsigned char *a, unsigned int len,\n
      \               unsigned char *a_r)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/frr/babeld/message.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - channels
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 354
    functionName: channels_len
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: int
    signature: int channels_len(unsigned char *channels)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:368,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:370,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:382,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:387,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:392,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 3
    argNames:
    - packet
    - packetlen
    - blength
    argTypes:
    - unsigned char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 400
    functionName: babel_packet_examin
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - debugf
    - DO_NTOHS
    linkageType: ''
    returnType: int
    signature: int babel_packet_examin(const unsigned char *packet, int packetlen,
      int *blength)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:418,1
    - Dst: gettime
      Src: /src/frr/babeld/message.c:422,1
    - Dst: linklocal
      Src: /src/frr/babeld/message.c:425,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:426,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:428,1
    - Dst: babel_packet_examin
      Src: /src/frr/babeld/message.c:432,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:433,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:435,1
    - Dst: find_neighbour
      Src: /src/frr/babeld/message.c:439,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:441,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:450,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:451,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:458,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:459,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:462,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:463,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:464,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:465,1
    - Dst: send_ack
      Src: /src/frr/babeld/message.c:466,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:468,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:469,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:477,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/message.c:484,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:485,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:487,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:491,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:492,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:493,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:495,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:503,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:505,1
    - Dst: update_neighbour
      Src: /src/frr/babeld/message.c:509,1
    - Dst: update_neighbour_metric
      Src: /src/frr/babeld/message.c:510,1
    - Dst: schedule_neighbours_check
      Src: /src/frr/babeld/message.c:513,1
    - Dst: parse_hello_subtlv
      Src: /src/frr/babeld/message.c:516,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:527,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:528,1
    - Dst: network_address
      Src: /src/frr/babeld/message.c:529,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:531,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:533,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:534,1
    - Dst: is_interface_ll_address
      Src: /src/frr/babeld/message.c:535,1
    - Dst: update_neighbour_metric
      Src: /src/frr/babeld/message.c:540,1
    - Dst: schedule_neighbours_check
      Src: /src/frr/babeld/message.c:543,1
    - Dst: parse_ihu_subtlv
      Src: /src/frr/babeld/message.c:546,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:550,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:552,1
    - Dst: format_eui64
      Src: /src/frr/babeld/message.c:553,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:553,1
    - Dst: network_address
      Src: /src/frr/babeld/message.c:557,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:564,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:565,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:566,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:568,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:571,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:582,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:583,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:584,1
    - Dst: network_prefix
      Src: /src/frr/babeld/message.c:587,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:604,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:607,1
    - Dst: memset
      Src: /src/frr/babeld/message.c:613,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:614,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:616,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:621,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:625,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:628,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:629,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:633,1
    - Dst: retract_neighbour_routes
      Src: /src/frr/babeld/message.c:637,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:650,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:654,1
    - Dst: parse_update_subtlv
      Src: /src/frr/babeld/message.c:669,1
    - Dst: update_route
      Src: /src/frr/babeld/message.c:674,1
    - Dst: channels_len
      Src: /src/frr/babeld/message.c:676,1
    - Dst: known_ae
      Src: /src/frr/babeld/message.c:681,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:682,1
    - Dst: network_prefix
      Src: /src/frr/babeld/message.c:686,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:690,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:691,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:692,1
    - Dst: v4tov6
      Src: /src/frr/babeld/message.c:694,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:697,1
    - Dst: parse_request_subtlv
      Src: /src/frr/babeld/message.c:700,1
    - Dst: is_default
      Src: /src/frr/babeld/message.c:704,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:706,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:709,1
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:715,1
    - Dst: MAX
      Src: /src/frr/babeld/message.c:722,1
    - Dst: send_update
      Src: /src/frr/babeld/message.c:723,1
    - Dst: send_update
      Src: /src/frr/babeld/message.c:725,1
    - Dst: DO_NTOHS
      Src: /src/frr/babeld/message.c:731,1
    - Dst: network_prefix
      Src: /src/frr/babeld/message.c:732,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:736,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:738,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:739,1
    - Dst: format_eui64
      Src: /src/frr/babeld/message.c:740,1
    - Dst: handle_request
      Src: /src/frr/babeld/message.c:741,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:744,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:745,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:752,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:754,1
    - Dst: time_us
      Src: /src/frr/babeld/message.c:765,1
    - Dst: MAX
      Src: /src/frr/babeld/message.c:773,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:774,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:775,1
    - Dst: neighbour_rttcost
      Src: /src/frr/babeld/message.c:777,1
    - Dst: valid_rtt
      Src: /src/frr/babeld/message.c:778,1
    - Dst: assert
      Src: /src/frr/babeld/message.c:788,1
    - Dst: neighbour_rttcost
      Src: /src/frr/babeld/message.c:791,1
    - Dst: update_neighbour_metric
      Src: /src/frr/babeld/message.c:792,1
    CyclomaticComplexity: 85
    EdgeCount: 85
    ICount: 269
    argCount: 4
    argNames:
    - from
    - ifp
    - packet
    - packetlen
    argTypes:
    - unsigned char*
    - struct interface*
    - unsigned char*
    - int
    assertStmts:
    - condition: (rtt <= 0x7FFFFFFF)
      pos:
        line_end: 787
        line_start: 787
        source_file: /src/frr/babeld/message.c
    constantsTouched: []
    func_position:
      end: 796
      start: 402
    functionDepth: 5
    functionLinenumber: 402
    functionLinenumberEnd: 796
    functionName: parse_packet
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 2
    functionsReached:
    - parse_update_subtlv
    - flog_err
    - retract_neighbour_routes
    - known_ae
    - format_address
    - update_neighbour
    - memset
    - send_update
    - handle_request
    - is_interface_ll_address
    - v4tov6
    - is_default
    - DO_NTOHS
    - time_us
    - channels_len
    - parse_ihu_subtlv
    - babel_packet_examin
    - assert
    - parse_request_subtlv
    - valid_rtt
    - network_address
    - send_ihu
    - gettime
    - network_prefix
    - find_neighbour
    - MAX
    - memcpy
    - neighbour_rttcost
    - format_eui64
    - parse_hello_subtlv
    - debugf
    - CHECK_FLAG
    - update_route
    - schedule_neighbours_check
    - update_neighbour_metric
    - babel_get_if_nfo
    - send_ack
    - linklocal
    - format_prefix
    linkageType: ''
    returnType: void
    signature: "void parse_packet(const unsigned char *from, struct interface *ifp,\n
      \            const unsigned char *packet, int packetlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:805,1
    - Dst: MIN
      Src: /src/frr/babeld/message.c:809,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 822
    functionName: check_bucket
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - MIN
    - babel_get_if_nfo
    linkageType: ''
    returnType: int
    signature: int check_bucket(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:827,1
    - Dst: gettime
      Src: /src/frr/babeld/message.c:836,1
    - Dst: time_us
      Src: /src/frr/babeld/message.c:837,1
    - Dst: DO_HTONL
      Src: /src/frr/babeld/message.c:838,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:841,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 824
    functionDepth: 2
    functionLinenumber: 824
    functionLinenumberEnd: 846
    functionName: fill_rtt_message
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - flog_err
    - time_us
    - gettime
    - DO_HTONL
    linkageType: ''
    returnType: int
    signature: int fill_rtt_message(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:853,1
    - Dst: assert
      Src: /src/frr/babeld/message.c:855,1
    - Dst: flushupdates
      Src: /src/frr/babeld/message.c:857,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:860,1
    - Dst: check_bucket
      Src: /src/frr/babeld/message.c:862,1
    - Dst: memset
      Src: /src/frr/babeld/message.c:863,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:865,1
    - Dst: htons
      Src: /src/frr/babeld/message.c:866,1
    - Dst: DO_HTONS
      Src: /src/frr/babeld/message.c:868,1
    - Dst: fill_rtt_message
      Src: /src/frr/babeld/message.c:869,1
    - Dst: babel_send
      Src: /src/frr/babeld/message.c:870,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:875,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/message.c:875,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:877,1
    - Dst: VALGRIND_MAKE_MEM_UNDEFINED
      Src: /src/frr/babeld/message.c:881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (babel_ifp->buffered <= babel_ifp->bufsize)
      pos:
        line_end: 854
        line_start: 854
        source_file: /src/frr/babeld/message.c
    constantsTouched: []
    func_position:
      end: 889
      start: 848
    functionDepth: 3
    functionLinenumber: 848
    functionLinenumberEnd: 889
    functionName: flushbuf
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 7
    functionsReached:
    - flushupdates
    - check_bucket
    - memset
    - htons
    - debugf
    - babel_send
    - fill_rtt_message
    - VALGRIND_MAKE_MEM_UNDEFINED
    - babel_get_if_nfo
    - flog_err
    - DO_HTONS
    - safe_strerror
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: void flushbuf(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:894,1
    - Dst: jitter
      Src: /src/frr/babeld/message.c:895,1
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/message.c:897,1
    - Dst: set_timeout
      Src: /src/frr/babeld/message.c:899,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 891
    functionDepth: 3
    functionLinenumber: 891
    functionLinenumberEnd: 900
    functionName: schedule_flush
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - jitter
    - babel_get_if_nfo
    - timeval_minus_msec
    - set_timeout
    linkageType: ''
    returnType: void
    signature: void schedule_flush(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:905,1
    - Dst: roughly
      Src: /src/frr/babeld/message.c:907,1
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/message.c:909,1
    - Dst: set_timeout
      Src: /src/frr/babeld/message.c:911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 912
    functionName: schedule_flush_now
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - set_timeout
    - babel_get_if_nfo
    - timeval_minus_msec
    - roughly
    linkageType: ''
    returnType: void
    signature: void schedule_flush_now(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/message.c:920,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - msecs
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 914
    functionDepth: 1
    functionLinenumber: 914
    functionLinenumberEnd: 925
    functionName: schedule_unicast_flush
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - timeval_minus_msec
    linkageType: ''
    returnType: void
    signature: void schedule_unicast_flush(unsigned msecs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:930,1
    - Dst: flushbuf
      Src: /src/frr/babeld/message.c:932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - space
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 927
    functionDepth: 4
    functionLinenumber: 927
    functionLinenumberEnd: 933
    functionName: ensure_space
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - flushbuf
    linkageType: ''
    returnType: void
    signature: void ensure_space(struct interface *ifp, int space)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:938,1
    - Dst: flushbuf
      Src: /src/frr/babeld/message.c:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ifp
    - type
    - len
    argTypes:
    - struct interface*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 935
    functionDepth: 4
    functionLinenumber: 935
    functionLinenumberEnd: 943
    functionName: start_message
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - flushbuf
    linkageType: ''
    returnType: void
    signature: void start_message(struct interface *ifp, int type, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:948,1
    - Dst: assert
      Src: /src/frr/babeld/message.c:949,1
    - Dst: schedule_flush
      Src: /src/frr/babeld/message.c:952,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - ifp
    - type
    - bytes
    argTypes:
    - struct interface*
    - int
    - int
    assertStmts:
    - condition: "(babel_ifp->buffered >= bytes + 2 &&\n           babel_ifp->sendbuf[babel_ifp->buffered
        - bytes - 2] == type &&\n           babel_ifp->sendbuf[babel_ifp->buffered
        - bytes - 1] == bytes)"
      pos:
        line_end: 950
        line_start: 948
        source_file: /src/frr/babeld/message.c
    constantsTouched: []
    func_position:
      end: 953
      start: 945
    functionDepth: 4
    functionLinenumber: 945
    functionLinenumberEnd: 953
    functionName: end_message
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 78
    functionsReached:
    - babel_get_if_nfo
    - schedule_flush
    - assert
    linkageType: ''
    returnType: void
    signature: void end_message(struct interface *ifp, int type, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - value
    argTypes:
    - struct interface*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 960
    functionName: accumulate_byte
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    linkageType: ''
    returnType: void
    signature: void accumulate_byte(struct interface *ifp, unsigned char value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:965,1
    - Dst: DO_HTONS
      Src: /src/frr/babeld/message.c:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - value
    argTypes:
    - struct interface*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 968
    functionName: accumulate_short
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - DO_HTONS
    linkageType: ''
    returnType: void
    signature: void accumulate_short(struct interface *ifp, unsigned short value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:973,1
    - Dst: DO_HTONL
      Src: /src/frr/babeld/message.c:974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ifp
    - value
    argTypes:
    - struct interface*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 976
    functionName: accumulate_int
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - DO_HTONL
    linkageType: ''
    returnType: void
    signature: void accumulate_int(struct interface *ifp, unsigned int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:982,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ifp
    - value
    - len
    argTypes:
    - struct interface*
    - unsigned char*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 985
    functionName: accumulate_bytes
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - babel_get_if_nfo
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void accumulate_bytes(struct interface *ifp,\n                 const
      unsigned char *value, unsigned len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/babeld/message.c:993,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:993,1
    - Dst: flush_unicast
      Src: /src/frr/babeld/message.c:994,1
    - Dst: malloc
      Src: /src/frr/babeld/message.c:997,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:999,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/message.c:1000,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - neigh
    - type
    - len
    argTypes:
    - struct neighbour*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1009
    functionName: start_unicast_message
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - MIN
    - malloc
    - babel_get_if_nfo
    - flog_err
    - safe_strerror
    - flush_unicast
    linkageType: ''
    returnType: int
    signature: int start_unicast_message(struct neighbour *neigh, int type, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/message.c:1014,1
    - Dst: schedule_unicast_flush
      Src: /src/frr/babeld/message.c:1017,1
    - Dst: jitter
      Src: /src/frr/babeld/message.c:1017,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1017,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 3
    argNames:
    - neigh
    - type
    - bytes
    argTypes:
    - struct neighbour*
    - int
    - int
    assertStmts:
    - condition: "(unicast_neighbour == neigh && unicast_buffered >= bytes + 2 &&\n
        \          unicast_buffer[unicast_buffered - bytes - 2] == type &&\n           unicast_buffer[unicast_buffered
        - bytes - 1] == bytes)"
      pos:
        line_end: 1015
        line_start: 1013
        source_file: /src/frr/babeld/message.c
    constantsTouched: []
    func_position:
      end: 1018
      start: 1011
    functionDepth: 2
    functionLinenumber: 1011
    functionLinenumberEnd: 1018
    functionName: end_unicast_message
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - jitter
    - babel_get_if_nfo
    - schedule_unicast_flush
    - assert
    linkageType: ''
    returnType: void
    signature: void end_unicast_message(struct neighbour *neigh, int type, int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - neigh
    - value
    argTypes:
    - struct neighbour*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1024
    functionName: accumulate_unicast_byte
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void accumulate_unicast_byte(struct neighbour *neigh, unsigned char
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DO_HTONS
      Src: /src/frr/babeld/message.c:1029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - neigh
    - value
    argTypes:
    - struct neighbour*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1026
    functionDepth: 1
    functionLinenumber: 1026
    functionLinenumberEnd: 1031
    functionName: accumulate_unicast_short
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - DO_HTONS
    linkageType: ''
    returnType: void
    signature: void accumulate_unicast_short(struct neighbour *neigh, unsigned short
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DO_HTONL
      Src: /src/frr/babeld/message.c:1036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - neigh
    - value
    argTypes:
    - struct neighbour*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1038
    functionName: accumulate_unicast_int
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - DO_HTONL
    linkageType: ''
    returnType: void
    signature: void accumulate_unicast_int(struct neighbour *neigh, unsigned int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - neigh
    - value
    - len
    argTypes:
    - struct neighbour*
    - unsigned char*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1046
    functionName: accumulate_unicast_bytes
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void accumulate_unicast_bytes(struct neighbour *neigh,\n                         const
      unsigned char *value, unsigned len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1052,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:1053,1
    - Dst: start_unicast_message
      Src: /src/frr/babeld/message.c:1054,1
    - Dst: accumulate_unicast_short
      Src: /src/frr/babeld/message.c:1055,1
    - Dst: end_unicast_message
      Src: /src/frr/babeld/message.c:1056,1
    - Dst: schedule_unicast_flush
      Src: /src/frr/babeld/message.c:1058,1
    - Dst: roughly
      Src: /src/frr/babeld/message.c:1058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - neigh
    - nonce
    - interval
    argTypes:
    - struct neighbour*
    - unsigned short
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1048
    functionDepth: 3
    functionLinenumber: 1048
    functionLinenumberEnd: 1059
    functionName: send_ack
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 6
    functionsReached:
    - schedule_unicast_flush
    - start_unicast_message
    - debugf
    - end_unicast_message
    - roughly
    - accumulate_unicast_short
    - format_address
    linkageType: ''
    returnType: void
    signature: void send_ack(struct neighbour *neigh, unsigned short nonce, unsigned
      short interval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1064,1
    - Dst: flushbuf
      Src: /src/frr/babeld/message.c:1068,1
    - Dst: seqno_plus
      Src: /src/frr/babeld/message.c:1070,1
    - Dst: set_timeout
      Src: /src/frr/babeld/message.c:1071,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1073,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1076,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1079,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1082,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1083,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1084,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1088,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1089,1
    - Dst: accumulate_int
      Src: /src/frr/babeld/message.c:1090,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1092,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - ifp
    - interval
    argTypes:
    - struct interface*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1061
    functionDepth: 5
    functionLinenumber: 1061
    functionLinenumberEnd: 1094
    functionName: send_hello_noupdate
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 3
    functionsReached:
    - set_timeout
    - accumulate_int
    - debugf
    - accumulate_short
    - flushbuf
    - start_message
    - accumulate_byte
    - babel_get_if_nfo
    - seqno_plus
    - end_message
    - if_up
    linkageType: ''
    returnType: void
    signature: void send_hello_noupdate(struct interface *ifp, unsigned interval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1099,1
    - Dst: send_hello_noupdate
      Src: /src/frr/babeld/message.c:1100,1
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:1103,1
    - Dst: send_marginal_ihu
      Src: /src/frr/babeld/message.c:1105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1096
    functionDepth: 6
    functionLinenumber: 1096
    functionLinenumberEnd: 1106
    functionName: send_hello
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 9
    functionsReached:
    - send_marginal_ihu
    - babel_get_if_nfo
    - send_hello_noupdate
    - send_ihu
    linkageType: ''
    returnType: void
    signature: void send_hello(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1117,1
    - Dst: flushbuf
      Src: /src/frr/babeld/message.c:1121,1
    - Dst: check_bucket
      Src: /src/frr/babeld/message.c:1123,1
    - Dst: memset
      Src: /src/frr/babeld/message.c:1124,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1126,1
    - Dst: htons
      Src: /src/frr/babeld/message.c:1127,1
    - Dst: DO_HTONS
      Src: /src/frr/babeld/message.c:1129,1
    - Dst: fill_rtt_message
      Src: /src/frr/babeld/message.c:1130,1
    - Dst: babel_send
      Src: /src/frr/babeld/message.c:1131,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:1136,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/message.c:1137,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:1139,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:1141,1
    - Dst: VALGRIND_MAKE_MEM_UNDEFINED
      Src: /src/frr/babeld/message.c:1146,1
    - Dst: free
      Src: /src/frr/babeld/message.c:1149,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 1
    argNames:
    - dofree
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1108
    functionDepth: 4
    functionLinenumber: 1108
    functionLinenumberEnd: 1155
    functionName: flush_unicast
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 3
    functionsReached:
    - if_up
    - memset
    - check_bucket
    - htons
    - babel_send
    - fill_rtt_message
    - free
    - VALGRIND_MAKE_MEM_UNDEFINED
    - flog_err
    - DO_HTONS
    - safe_strerror
    - format_address
    - memcpy
    - flushbuf
    linkageType: ''
    returnType: void
    signature: void flush_unicast(int dofree)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1164,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1175,1
    - Dst: output_filter
      Src: /src/frr/babeld/message.c:1178,1
    - Dst: MIN
      Src: /src/frr/babeld/message.c:1182,1
    - Dst: ensure_space
      Src: /src/frr/babeld/message.c:1184,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:1186,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1192,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1193,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1194,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1195,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1196,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1197,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1198,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1217,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1218,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1221,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1222,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1223,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1224,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1226,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1230,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1232,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1233,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1234,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1235,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1236,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1237,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1238,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1239,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1242,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1243,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1246,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1248,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1252,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 68
    argCount: 8
    argNames:
    - ifp
    - id
    - prefix
    - plen
    - seqno
    - metric
    - channels
    - channels_len
    argTypes:
    - struct interface*
    - unsigned char*
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned short
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1157
    functionDepth: 5
    functionLinenumber: 1157
    functionLinenumberEnd: 1255
    functionName: really_send_update
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - MIN
    - accumulate_short
    - ensure_space
    - output_filter
    - memcmp
    - start_message
    - accumulate_byte
    - babel_get_if_nfo
    - accumulate_bytes
    - end_message
    - v4mapped
    - memcpy
    - if_up
    linkageType: ''
    returnType: void
    signature: "void really_send_update(struct interface *ifp,\n                   const
      unsigned char *id,\n                   const unsigned char *prefix, unsigned
      char plen,\n                   unsigned short seqno, unsigned short metric,\n
      \                  unsigned char *channels, int channels_len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1263,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:1267,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:1268,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1275,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1276,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1288,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 21
    argCount: 2
    argNames:
    - av
    - bv
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1257
    functionDepth: 1
    functionLinenumber: 1257
    functionLinenumberEnd: 1289
    functionName: compare_buffered_updates
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - v4mapped
    - memcmp
    linkageType: ''
    returnType: int
    signature: int compare_buffered_updates(const void *av, const void *bv)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/message.c:1302,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/babeld/message.c:1304,1
    - Dst: flushupdates
      Src: /src/frr/babeld/message.c:1305,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1309,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1318,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1321,1
    - Dst: find_installed_route
      Src: /src/frr/babeld/message.c:1328,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1330,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1332,1
    - Dst: qsort
      Src: /src/frr/babeld/message.c:1335,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1344,1
    - Dst: find_xroute
      Src: /src/frr/babeld/message.c:1348,1
    - Dst: find_installed_route
      Src: /src/frr/babeld/message.c:1349,1
    - Dst: really_send_update
      Src: /src/frr/babeld/message.c:1352,1
    - Dst: route_interferes
      Src: /src/frr/babeld/message.c:1368,1
    - Dst: route_metric
      Src: /src/frr/babeld/message.c:1369,1
    - Dst: route_metric_noninterfering
      Src: /src/frr/babeld/message.c:1370,1
    - Dst: satisfy_request
      Src: /src/frr/babeld/message.c:1373,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1379,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1381,1
    - Dst: assert
      Src: /src/frr/babeld/message.c:1386,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1390,1
    - Dst: channels_len
      Src: /src/frr/babeld/message.c:1393,1
    - Dst: really_send_update
      Src: /src/frr/babeld/message.c:1394,1
    - Dst: update_source
      Src: /src/frr/babeld/message.c:1399,1
    - Dst: really_send_update
      Src: /src/frr/babeld/message.c:1405,1
    - Dst: schedule_flush_now
      Src: /src/frr/babeld/message.c:1409,1
    - Dst: free
      Src: /src/frr/babeld/message.c:1411,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 68
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: "(babel_route_ifp->channel > 0 &&\n                               babel_route_ifp->channel
        <= 255)"
      pos:
        line_end: 1386
        line_start: 1385
        source_file: /src/frr/babeld/message.c
    constantsTouched: []
    func_position:
      end: 1415
      start: 1291
    functionDepth: 6
    functionLinenumber: 1291
    functionLinenumberEnd: 1415
    functionName: flushupdates
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 6
    functionsReached:
    - find_installed_route
    - update_source
    - flushupdates
    - schedule_flush_now
    - memcmp
    - satisfy_request
    - really_send_update
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    - channels_len
    - assert
    - route_interferes
    - free
    - find_xroute
    - route_metric
    - memcpy
    - route_metric_noninterfering
    - debugf
    - qsort
    - babel_get_if_nfo
    - if_up
    linkageType: ''
    returnType: void
    signature: void flushupdates(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1420,1
    - Dst: update_jitter
      Src: /src/frr/babeld/message.c:1422,1
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/message.c:1424,1
    - Dst: set_timeout
      Src: /src/frr/babeld/message.c:1426,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - urgent
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1417
    functionDepth: 3
    functionLinenumber: 1417
    functionLinenumberEnd: 1427
    functionName: schedule_update_flush
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - set_timeout
    - babel_get_if_nfo
    - update_jitter
    - timeval_minus_msec
    linkageType: ''
    returnType: void
    signature: void schedule_update_flush(struct interface *ifp, int urgent)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1433,1
    - Dst: flushupdates
      Src: /src/frr/babeld/message.c:1436,1
    - Dst: assert
      Src: /src/frr/babeld/message.c:1440,1
    - Dst: installed_routes_estimate
      Src: /src/frr/babeld/message.c:1444,1
    - Dst: xroutes_estimate
      Src: /src/frr/babeld/message.c:1444,1
    - Dst: MAX
      Src: /src/frr/babeld/message.c:1445,1
    - Dst: malloc
      Src: /src/frr/babeld/message.c:1447,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:1449,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/message.c:1450,1
    - Dst: memcpy
      Src: /src/frr/babeld/message.c:1462,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - ifp
    - prefix
    - plen
    argTypes:
    - struct interface*
    - unsigned char*
    - unsigned char
    assertStmts:
    - condition: (babel_ifp->buffered_updates == NULL)
      pos:
        line_end: 1439
        line_start: 1439
        source_file: /src/frr/babeld/message.c
    constantsTouched: []
    func_position:
      end: 1466
      start: 1429
    functionDepth: 7
    functionLinenumber: 1429
    functionLinenumberEnd: 1466
    functionName: buffer_update
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - flushupdates
    - malloc
    - installed_routes_estimate
    - xroutes_estimate
    - babel_get_if_nfo
    - flog_err
    - safe_strerror
    - memcpy
    - MAX
    - assert
    linkageType: ''
    returnType: void
    signature: "void buffer_update(struct interface *ifp,\n              const unsigned
      char *prefix, unsigned char plen)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/message.c:1475,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/babeld/message.c:1478,1
    - Dst: send_update
      Src: /src/frr/babeld/message.c:1479,1
    - Dst: find_installed_route
      Src: /src/frr/babeld/message.c:1483,1
    - Dst: route_metric
      Src: /src/frr/babeld/message.c:1484,1
    - Dst: satisfy_request
      Src: /src/frr/babeld/message.c:1485,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1491,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1494,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1496,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:1497,1
    - Dst: buffer_update
      Src: /src/frr/babeld/message.c:1498,1
    - Dst: send_self_update
      Src: /src/frr/babeld/message.c:1501,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1502,1
    - Dst: route_stream
      Src: /src/frr/babeld/message.c:1503,1
    - Dst: route_stream_next
      Src: /src/frr/babeld/message.c:1506,1
    - Dst: buffer_update
      Src: /src/frr/babeld/message.c:1509,1
    - Dst: route_stream_done
      Src: /src/frr/babeld/message.c:1511,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:1513,1
    - Dst: set_timeout
      Src: /src/frr/babeld/message.c:1515,1
    - Dst: schedule_update_flush
      Src: /src/frr/babeld/message.c:1518,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 4
    argNames:
    - ifp
    - urgent
    - prefix
    - plen
    argTypes:
    - struct interface*
    - int
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1468
    functionDepth: 8
    functionLinenumber: 1468
    functionLinenumberEnd: 1519
    functionName: send_update
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 11
    functionsReached:
    - set_timeout
    - find_installed_route
    - format_prefix
    - satisfy_request
    - send_update
    - debugf
    - route_stream_done
    - buffer_update
    - FOR_ALL_INTERFACES
    - babel_get_if_nfo
    - flog_err
    - route_stream_next
    - schedule_update_flush
    - vrf_lookup_by_id
    - send_self_update
    - route_stream
    - route_metric
    - if_up
    linkageType: ''
    returnType: void
    signature: "void send_update(struct interface *ifp, int urgent,\n            const
      unsigned char *prefix, unsigned char plen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/message.c:1525,1
    - Dst: send_update
      Src: /src/frr/babeld/message.c:1527,1
    - Dst: record_resend
      Src: /src/frr/babeld/message.c:1528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ifp
    - prefix
    - plen
    argTypes:
    - struct interface*
    - unsigned char*
    - unsigned char
    assertStmts:
    - condition: (prefix != NULL)
      pos:
        line_end: 1524
        line_start: 1524
        source_file: /src/frr/babeld/message.c
    constantsTouched: []
    func_position:
      end: 1529
      start: 1521
    functionDepth: 9
    functionLinenumber: 1521
    functionLinenumberEnd: 1529
    functionName: send_update_resend
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 2
    functionsReached:
    - record_resend
    - assert
    - send_update
    linkageType: ''
    returnType: void
    signature: "void send_update_resend(struct interface *ifp,\n                   const
      unsigned char *prefix, unsigned char plen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/message.c:1536,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/babeld/message.c:1538,1
    - Dst: send_wildcard_retraction
      Src: /src/frr/babeld/message.c:1539,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1543,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1546,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1547,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1548,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1549,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1550,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1551,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1552,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1553,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1554,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1555,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1531
    functionDepth: 5
    functionLinenumber: 1531
    functionLinenumberEnd: 1558
    functionName: send_wildcard_retraction
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 7
    functionsReached:
    - accumulate_short
    - start_message
    - FOR_ALL_INTERFACES
    - babel_get_if_nfo
    - accumulate_byte
    - send_wildcard_retraction
    - vrf_lookup_by_id
    - end_message
    - if_up
    linkageType: ''
    returnType: void
    signature: void send_wildcard_retraction(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seqno_plus
      Src: /src/frr/babeld/message.c:1563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1560
    functionDepth: 1
    functionLinenumber: 1560
    functionLinenumberEnd: 1564
    functionName: update_myseqno
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - seqno_plus
    linkageType: ''
    returnType: void
    signature: void update_myseqno(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/message.c:1571,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1574,1
    - Dst: send_self_update
      Src: /src/frr/babeld/message.c:1576,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1581,1
    - Dst: xroute_stream
      Src: /src/frr/babeld/message.c:1582,1
    - Dst: xroute_stream_next
      Src: /src/frr/babeld/message.c:1585,1
    - Dst: send_update
      Src: /src/frr/babeld/message.c:1587,1
    - Dst: xroute_stream_done
      Src: /src/frr/babeld/message.c:1589,1
    - Dst: flog_err
      Src: /src/frr/babeld/message.c:1591,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1566
    functionDepth: 9
    functionLinenumber: 1566
    functionLinenumberEnd: 1593
    functionName: send_self_update
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 5
    functionsReached:
    - xroute_stream
    - send_update
    - debugf
    - xroute_stream_next
    - flog_err
    - xroute_stream_done
    - vrf_lookup_by_id
    - send_self_update
    - if_up
    linkageType: ''
    returnType: void
    signature: void send_self_update(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1574,1
    - Dst: send_self_update
      Src: /src/frr/babeld/message.c:1576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1573
    functionDepth: 10
    functionLinenumber: 1573
    functionLinenumberEnd: 1577
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 32
    functionsReached:
    - send_self_update
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp_aux)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/message.c:1605,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1608,1
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:1610,1
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:1619,1
    - Dst: babel_get_if_nfo
      Src: /src/frr/babeld/message.c:1629,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1630,1
    - Dst: neighbour_rxcost
      Src: /src/frr/babeld/message.c:1633,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1640,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:1644,1
    - Dst: linklocal
      Src: /src/frr/babeld/message.c:1646,1
    - Dst: timeval_minus_msec
      Src: /src/frr/babeld/message.c:1650,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1663,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1664,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1665,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1666,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1667,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1669,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1671,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1673,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1674,1
    - Dst: accumulate_int
      Src: /src/frr/babeld/message.c:1675,1
    - Dst: accumulate_int
      Src: /src/frr/babeld/message.c:1676,1
    - Dst: time_us
      Src: /src/frr/babeld/message.c:1676,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1678,1
    - Dst: start_unicast_message
      Src: /src/frr/babeld/message.c:1681,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1683,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1684,1
    - Dst: accumulate_unicast_short
      Src: /src/frr/babeld/message.c:1685,1
    - Dst: accumulate_unicast_short
      Src: /src/frr/babeld/message.c:1686,1
    - Dst: accumulate_unicast_bytes
      Src: /src/frr/babeld/message.c:1688,1
    - Dst: accumulate_unicast_bytes
      Src: /src/frr/babeld/message.c:1690,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1692,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1693,1
    - Dst: accumulate_unicast_int
      Src: /src/frr/babeld/message.c:1694,1
    - Dst: accumulate_unicast_int
      Src: /src/frr/babeld/message.c:1695,1
    - Dst: time_us
      Src: /src/frr/babeld/message.c:1696,1
    - Dst: end_unicast_message
      Src: /src/frr/babeld/message.c:1698,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 2
    argNames:
    - neigh
    - ifp
    argTypes:
    - struct neighbour*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1700
      start: 1595
    functionDepth: 5
    functionLinenumber: 1595
    functionLinenumberEnd: 1700
    functionName: send_ihu
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 4
    functionsReached:
    - accumulate_unicast_int
    - format_address
    - accumulate_unicast_byte
    - time_us
    - vrf_lookup_by_id
    - end_message
    - accumulate_int
    - end_unicast_message
    - start_message
    - accumulate_unicast_bytes
    - send_ihu
    - neighbour_rxcost
    - start_unicast_message
    - debugf
    - timeval_minus_msec
    - accumulate_short
    - accumulate_bytes
    - accumulate_byte
    - babel_get_if_nfo
    - accumulate_unicast_short
    - linklocal
    - if_up
    linkageType: ''
    returnType: void
    signature: void send_ihu(struct neighbour *neigh, struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1608,1
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:1610,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1607
    functionDepth: 6
    functionLinenumber: 1607
    functionLinenumberEnd: 1611
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 32
    functionsReached:
    - send_ihu
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp_aux)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:1619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1617
    functionDepth: 6
    functionLinenumber: 1617
    functionLinenumberEnd: 1620
    functionName: FOR_ALL_NEIGHBOURS
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - send_ihu
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_NEIGHBOURS(ngh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:1711,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1703
    functionDepth: 6
    functionLinenumber: 1703
    functionLinenumberEnd: 1713
    functionName: send_marginal_ihu
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 1
    functionsReached:
    - send_ihu
    linkageType: ''
    returnType: void
    signature: void send_marginal_ihu(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: send_ihu
      Src: /src/frr/babeld/message.c:1711,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1707
    functionDepth: 6
    functionLinenumber: 1707
    functionLinenumberEnd: 1712
    functionName: FOR_ALL_NEIGHBOURS
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 0
    functionsReached:
    - send_ihu
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_NEIGHBOURS(neigh)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/message.c:1722,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1725,1
    - Dst: send_request
      Src: /src/frr/babeld/message.c:1727,1
    - Dst: flushupdates
      Src: /src/frr/babeld/message.c:1733,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1735,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1738,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:1739,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:1740,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1744,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1745,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1746,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1749,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1751,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1753,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - ifp
    - prefix
    - plen
    argTypes:
    - struct interface*
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1715
    functionDepth: 7
    functionLinenumber: 1715
    functionLinenumberEnd: 1754
    functionName: send_request
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 7
    functionsReached:
    - flushupdates
    - send_request
    - debugf
    - start_message
    - accumulate_bytes
    - accumulate_byte
    - vrf_lookup_by_id
    - end_message
    - v4mapped
    - format_prefix
    - if_up
    linkageType: ''
    returnType: void
    signature: "void send_request(struct interface *ifp,\n             const unsigned
      char *prefix, unsigned char plen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1725,1
    - Dst: send_request
      Src: /src/frr/babeld/message.c:1727,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1724
    functionDepth: 8
    functionLinenumber: 1724
    functionLinenumberEnd: 1728
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 32
    functionsReached:
    - send_request
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp_aux)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flushupdates
      Src: /src/frr/babeld/message.c:1763,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1765,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:1766,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:1767,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:1768,1
    - Dst: start_unicast_message
      Src: /src/frr/babeld/message.c:1772,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1774,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1775,1
    - Dst: accumulate_unicast_bytes
      Src: /src/frr/babeld/message.c:1778,1
    - Dst: accumulate_unicast_bytes
      Src: /src/frr/babeld/message.c:1780,1
    - Dst: end_unicast_message
      Src: /src/frr/babeld/message.c:1782,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - neigh
    - prefix
    - plen
    argTypes:
    - struct neighbour*
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1756
    functionDepth: 7
    functionLinenumber: 1756
    functionLinenumberEnd: 1783
    functionName: send_unicast_request
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 2
    functionsReached:
    - flushupdates
    - start_unicast_message
    - debugf
    - end_unicast_message
    - accumulate_unicast_byte
    - accumulate_unicast_bytes
    - v4mapped
    - format_address
    - format_prefix
    linkageType: ''
    returnType: void
    signature: "void send_unicast_request(struct neighbour *neigh,\n                     const
      unsigned char *prefix, unsigned char plen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: flushupdates
      Src: /src/frr/babeld/message.c:1794,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/babeld/message.c:1797,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1800,1
    - Dst: send_multihop_request
      Src: /src/frr/babeld/message.c:1802,1
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1807,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1810,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:1811,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:1812,1
    - Dst: start_message
      Src: /src/frr/babeld/message.c:1816,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1817,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1818,1
    - Dst: accumulate_short
      Src: /src/frr/babeld/message.c:1819,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1820,1
    - Dst: accumulate_byte
      Src: /src/frr/babeld/message.c:1821,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1822,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1825,1
    - Dst: accumulate_bytes
      Src: /src/frr/babeld/message.c:1827,1
    - Dst: end_message
      Src: /src/frr/babeld/message.c:1829,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 6
    argNames:
    - ifp
    - prefix
    - plen
    - seqno
    - id
    - hop_count
    argTypes:
    - struct interface*
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned char*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1785
    functionDepth: 7
    functionLinenumber: 1785
    functionLinenumberEnd: 1830
    functionName: send_multihop_request
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 2
    functionsReached:
    - flushupdates
    - debugf
    - accumulate_short
    - start_message
    - accumulate_bytes
    - accumulate_byte
    - send_multihop_request
    - vrf_lookup_by_id
    - end_message
    - v4mapped
    - format_prefix
    - if_up
    linkageType: ''
    returnType: void
    signature: "void send_multihop_request(struct interface *ifp,\n                      const
      unsigned char *prefix, unsigned char plen,\n                      unsigned short
      seqno, const unsigned char *id,\n                      unsigned short hop_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_up
      Src: /src/frr/babeld/message.c:1800,1
    - Dst: send_multihop_request
      Src: /src/frr/babeld/message.c:1802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1799
    functionDepth: 8
    functionLinenumber: 1799
    functionLinenumberEnd: 1803
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 32
    functionsReached:
    - send_multihop_request
    - if_up
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp_aux)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flushupdates
      Src: /src/frr/babeld/message.c:1841,1
    - Dst: debugf
      Src: /src/frr/babeld/message.c:1843,1
    - Dst: format_address
      Src: /src/frr/babeld/message.c:1844,1
    - Dst: format_prefix
      Src: /src/frr/babeld/message.c:1845,1
    - Dst: v4mapped
      Src: /src/frr/babeld/message.c:1846,1
    - Dst: start_unicast_message
      Src: /src/frr/babeld/message.c:1850,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1852,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1853,1
    - Dst: accumulate_unicast_short
      Src: /src/frr/babeld/message.c:1854,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1855,1
    - Dst: accumulate_unicast_byte
      Src: /src/frr/babeld/message.c:1856,1
    - Dst: accumulate_unicast_bytes
      Src: /src/frr/babeld/message.c:1857,1
    - Dst: accumulate_unicast_bytes
      Src: /src/frr/babeld/message.c:1860,1
    - Dst: accumulate_unicast_bytes
      Src: /src/frr/babeld/message.c:1862,1
    - Dst: end_unicast_message
      Src: /src/frr/babeld/message.c:1864,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 6
    argNames:
    - neigh
    - prefix
    - plen
    - seqno
    - id
    - hop_count
    argTypes:
    - struct neighbour*
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned char*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1865
      start: 1832
    functionDepth: 7
    functionLinenumber: 1832
    functionLinenumberEnd: 1865
    functionName: send_unicast_multihop_request
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 1
    functionsReached:
    - flushupdates
    - start_unicast_message
    - debugf
    - end_unicast_message
    - accumulate_unicast_byte
    - accumulate_unicast_bytes
    - v4mapped
    - accumulate_unicast_short
    - format_address
    - format_prefix
    linkageType: ''
    returnType: void
    signature: "void send_unicast_multihop_request(struct neighbour *neigh,\n                              const
      unsigned char *prefix, unsigned char plen,\n                              unsigned
      short seqno, const unsigned char *id,\n                              unsigned
      short hop_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: send_unicast_multihop_request
      Src: /src/frr/babeld/message.c:1873,1
    - Dst: send_multihop_request
      Src: /src/frr/babeld/message.c:1875,1
    - Dst: record_resend
      Src: /src/frr/babeld/message.c:1877,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - neigh
    - prefix
    - plen
    - seqno
    - id
    argTypes:
    - struct neighbour*
    - unsigned char*
    - unsigned char
    - unsigned short
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1867
    functionDepth: 8
    functionLinenumber: 1867
    functionLinenumberEnd: 1879
    functionName: send_request_resend
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 2
    functionsReached:
    - send_multihop_request
    - record_resend
    - send_unicast_multihop_request
    linkageType: ''
    returnType: void
    signature: "void send_request_resend(struct neighbour *neigh,\n                    const
      unsigned char *prefix, unsigned char plen,\n                    unsigned short
      seqno, unsigned char *id)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: find_xroute
      Src: /src/frr/babeld/message.c:1890,1
    - Dst: find_installed_route
      Src: /src/frr/babeld/message.c:1891,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1894,1
    - Dst: seqno_compare
      Src: /src/frr/babeld/message.c:1895,1
    - Dst: seqno_minus
      Src: /src/frr/babeld/message.c:1896,1
    - Dst: update_myseqno
      Src: /src/frr/babeld/message.c:1900,1
    - Dst: send_update
      Src: /src/frr/babeld/message.c:1903,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1908,1
    - Dst: seqno_compare
      Src: /src/frr/babeld/message.c:1909,1
    - Dst: send_update
      Src: /src/frr/babeld/message.c:1910,1
    - Dst: memcmp
      Src: /src/frr/babeld/message.c:1917,1
    - Dst: seqno_minus
      Src: /src/frr/babeld/message.c:1918,1
    - Dst: request_redundant
      Src: /src/frr/babeld/message.c:1923,1
    - Dst: route_metric
      Src: /src/frr/babeld/message.c:1927,1
    - Dst: find_best_route
      Src: /src/frr/babeld/message.c:1935,1
    - Dst: route_metric
      Src: /src/frr/babeld/message.c:1936,1
    - Dst: send_unicast_multihop_request
      Src: /src/frr/babeld/message.c:1944,1
    - Dst: record_resend
      Src: /src/frr/babeld/message.c:1946,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 37
    argCount: 6
    argNames:
    - neigh
    - prefix
    - plen
    - hop_count
    - seqno
    - id
    argTypes:
    - struct neighbour*
    - unsigned char*
    - unsigned char
    - unsigned char
    - unsigned short
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1881
    functionDepth: 9
    functionLinenumber: 1881
    functionLinenumberEnd: 1948
    functionName: handle_request
    functionSourceFile: /src/frr/babeld/message.c
    functionUses: 1
    functionsReached:
    - find_installed_route
    - update_myseqno
    - seqno_minus
    - seqno_compare
    - send_update
    - request_redundant
    - memcmp
    - send_unicast_multihop_request
    - find_best_route
    - record_resend
    - find_xroute
    - route_metric
    linkageType: ''
    returnType: void
    signature: "void handle_request(struct neighbour *neigh, const unsigned char *prefix,\n
      \              unsigned char plen, unsigned char hop_count,\n               unsigned
      short seqno, const unsigned char *id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/source.c:36,1
    - Dst: memcmp
      Src: /src/frr/babeld/source.c:40,1
    - Dst: malloc
      Src: /src/frr/babeld/source.c:47,1
    - Dst: flog_err
      Src: /src/frr/babeld/source.c:49,1
    - Dst: safe_strerror
      Src: /src/frr/babeld/source.c:49,1
    - Dst: memcpy
      Src: /src/frr/babeld/source.c:53,1
    - Dst: memcpy
      Src: /src/frr/babeld/source.c:54,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 5
    argNames:
    - id
    - p
    - plen
    - create
    - seqno
    argTypes:
    - unsigned char*
    - unsigned char*
    - unsigned char
    - int
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 63
    functionName: find_source
    functionSourceFile: /src/frr/babeld/source.c
    functionUses: 1
    functionsReached:
    - malloc
    - memcmp
    - flog_err
    - safe_strerror
    - memcpy
    linkageType: ''
    returnType: struct source
    signature: "struct source *\nfind_source(const unsigned char *id, const unsigned
      char *p, unsigned char plen,\n            int create, unsigned short seqno)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/source.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct source*
    assertStmts:
    - condition: (src->route_count < 0xffff)
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/frr/babeld/source.c
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: retain_source
    functionSourceFile: /src/frr/babeld/source.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct source
    signature: 'struct source *

      retain_source(struct source *src)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/source.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct source*
    assertStmts:
    - condition: (src->route_count > 0)
      pos:
        line_end: 75
        line_start: 75
        source_file: /src/frr/babeld/source.c
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: release_source
    functionSourceFile: /src/frr/babeld/source.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void release_source(struct source *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/babeld/source.c:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 98
    functionName: flush_source
    functionSourceFile: /src/frr/babeld/source.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: int
    signature: int flush_source(struct source *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seqno_compare
      Src: /src/frr/babeld/source.c:112,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - src
    - seqno
    - metric
    argTypes:
    - struct source*
    - unsigned short
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 118
    functionName: update_source
    functionSourceFile: /src/frr/babeld/source.c
    functionUses: 7
    functionsReached:
    - seqno_compare
    linkageType: ''
    returnType: void
    signature: "void update_source(struct source *src,\n              unsigned short
      seqno, unsigned short metric)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flush_source
      Src: /src/frr/babeld/source.c:133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 138
    functionName: expire_sources
    functionSourceFile: /src/frr/babeld/source.c
    functionUses: 1
    functionsReached:
    - flush_source
    linkageType: ''
    returnType: void
    signature: void expire_sources(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/babeld/source.c:147,1
    - Dst: format_eui64
      Src: /src/frr/babeld/source.c:148,1
    - Dst: format_prefix
      Src: /src/frr/babeld/source.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 152
    functionName: check_sources_released
    functionSourceFile: /src/frr/babeld/source.c
    functionUses: 1
    functionsReached:
    - fprintf
    - format_eui64
    - format_prefix
    linkageType: ''
    returnType: void
    signature: void check_sources_released(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: MAX
    functionSourceFile: /src/frr/babeld/babeld.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: MIN
    functionSourceFile: /src/frr/babeld/babeld.h
    functionUses: 44
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIN(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: ATTRIBUTE
    functionSourceFile: /src/frr/babeld/babeld.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTRIBUTE(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: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: VALGRIND_MAKE_MEM_UNDEFINED
    functionSourceFile: /src/frr/babeld/babeld.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_MAKE_MEM_UNDEFINED(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: VALGRIND_CHECK_MEM_IS_DEFINED
    functionSourceFile: /src/frr/babeld/babeld.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VALGRIND_CHECK_MEM_IS_DEFINED(a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inaddr_to_uchar
      Src: /src/frr/babeld/xroute.c:35,1
    - Dst: debugf
      Src: /src/frr/babeld/xroute.c:36,1
    - Dst: xroute_add_new_route
      Src: /src/frr/babeld/xroute.c:37,1
    - Dst: in6addr_to_uchar
      Src: /src/frr/babeld/xroute.c:41,1
    - Dst: debugf
      Src: /src/frr/babeld/xroute.c:42,1
    - Dst: xroute_add_new_route
      Src: /src/frr/babeld/xroute.c:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - api
    argTypes:
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 49
    functionName: babel_route_add
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 0
    functionsReached:
    - debugf
    - in6addr_to_uchar
    - xroute_add_new_route
    - inaddr_to_uchar
    linkageType: ''
    returnType: int
    signature: int babel_route_add (struct zapi_route *api)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inaddr_to_uchar
      Src: /src/frr/babeld/xroute.c:60,1
    - Dst: find_xroute
      Src: /src/frr/babeld/xroute.c:61,1
    - Dst: debugf
      Src: /src/frr/babeld/xroute.c:63,1
    - Dst: flush_xroute
      Src: /src/frr/babeld/xroute.c:64,1
    - Dst: in6addr_to_uchar
      Src: /src/frr/babeld/xroute.c:68,1
    - Dst: find_xroute
      Src: /src/frr/babeld/xroute.c:69,1
    - Dst: debugf
      Src: /src/frr/babeld/xroute.c:71,1
    - Dst: flush_xroute
      Src: /src/frr/babeld/xroute.c:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - api
    argTypes:
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 78
    functionName: babel_route_delete
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 0
    functionsReached:
    - in6addr_to_uchar
    - debugf
    - flush_xroute
    - inaddr_to_uchar
    - find_xroute
    linkageType: ''
    returnType: int
    signature: int babel_route_delete (struct zapi_route *api)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/babeld/xroute.c:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - prefix
    - plen
    argTypes:
    - unsigned char*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: find_xroute
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 4
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: struct xroute
    signature: 'struct xroute *

      find_xroute(const unsigned char *prefix, unsigned char plen)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/babeld/xroute.c:98,1
    - Dst: memcpy
      Src: /src/frr/babeld/xroute.c:101,1
    - Dst: VALGRIND_MAKE_MEM_UNDEFINED
      Src: /src/frr/babeld/xroute.c:103,1
    - Dst: free
      Src: /src/frr/babeld/xroute.c:106,1
    - Dst: realloc
      Src: /src/frr/babeld/xroute.c:112,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - xroute
    argTypes:
    - struct xroute*
    assertStmts:
    - condition: (i >= 0 && i < numxroutes)
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/frr/babeld/xroute.c
    constantsTouched: []
    func_position:
      end: 118
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 118
    functionName: flush_xroute
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 1
    functionsReached:
    - assert
    - free
    - VALGRIND_MAKE_MEM_UNDEFINED
    - realloc
    - memcpy
    linkageType: ''
    returnType: void
    signature: void flush_xroute(struct xroute *xroute)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find_xroute
      Src: /src/frr/babeld/xroute.c:124,1
    - Dst: malloc
      Src: /src/frr/babeld/xroute.c:136,1
    - Dst: realloc
      Src: /src/frr/babeld/xroute.c:137,1
    - Dst: memcpy
      Src: /src/frr/babeld/xroute.c:144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - prefix
    - plen
    - metric
    - ifindex
    - proto
    argTypes:
    - unsigned char[]
    - unsigned char
    - unsigned short
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 151
    functionName: add_xroute
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 0
    functionsReached:
    - malloc
    - realloc
    - find_xroute
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int add_xroute(unsigned char prefix[16], unsigned char plen,\n           unsigned
      short metric, unsigned int ifindex, int proto)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 158
    functionName: xroutes_estimate
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int xroutes_estimate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/babeld/xroute.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: xroute_stream
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 1
    functionsReached:
    - malloc
    linkageType: ''
    returnType: 'struct

      xroute_stream'
    signature: 'struct

      xroute_stream *

      xroute_stream(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct xroute_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 183
    functionName: xroute_stream_next
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct xroute
    signature: 'struct xroute *

      xroute_stream_next(struct xroute_stream *stream)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/babeld/xroute.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct xroute_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 189
    functionName: xroute_stream_done
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void xroute_stream_done(struct xroute_stream *stream)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: martian_prefix
      Src: /src/frr/babeld/xroute.c:198,1
    - Dst: redistribute_filter
      Src: /src/frr/babeld/xroute.c:200,1
    - Dst: add_xroute
      Src: /src/frr/babeld/xroute.c:202,1
    - Dst: find_installed_route
      Src: /src/frr/babeld/xroute.c:205,1
    - Dst: uninstall_route
      Src: /src/frr/babeld/xroute.c:207,1
    - Dst: send_update
      Src: /src/frr/babeld/xroute.c:209,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 6
    argNames:
    - prefix
    - plen
    - metric
    - ifindex
    - proto
    - send_updates
    argTypes:
    - unsigned char[]
    - unsigned char
    - unsigned short
    - unsigned int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 192
    functionDepth: 9
    functionLinenumber: 192
    functionLinenumberEnd: 214
    functionName: xroute_add_new_route
    functionSourceFile: /src/frr/babeld/xroute.c
    functionUses: 1
    functionsReached:
    - find_installed_route
    - add_xroute
    - send_update
    - martian_prefix
    - redistribute_filter
    - uninstall_route
    linkageType: ''
    returnType: int
    signature: "int xroute_add_new_route(unsigned char prefix[16], unsigned char plen,\n
      \                    unsigned short metric, unsigned int ifindex,\n                     int
      proto, int send_updates)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _neigh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: FOR_ALL_NEIGHBOURS
    functionSourceFile: /src/frr/babeld/neighbour.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_ALL_NEIGHBOURS(_neigh)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/babeld/net.c:36,1
    - Dst: setsockopt
      Src: /src/frr/babeld/net.c:40,1
    - Dst: setsockopt
      Src: /src/frr/babeld/net.c:44,1
    - Dst: setsockopt
      Src: /src/frr/babeld/net.c:48,1
    - Dst: setsockopt
      Src: /src/frr/babeld/net.c:53,1
    - Dst: setsockopt
      Src: /src/frr/babeld/net.c:58,1
    - Dst: setsockopt_ipv6_tclass
      Src: /src/frr/babeld/net.c:63,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:65,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:69,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:73,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:77,1
    - Dst: memset
      Src: /src/frr/babeld/net.c:81,1
    - Dst: htons
      Src: /src/frr/babeld/net.c:83,1
    - Dst: bind
      Src: /src/frr/babeld/net.c:84,1
    - Dst: close
      Src: /src/frr/babeld/net.c:92,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 55
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 95
    functionName: babel_socket
    functionSourceFile: /src/frr/babeld/net.c
    functionUses: 1
    functionsReached:
    - setsockopt_ipv6_tclass
    - memset
    - htons
    - socket
    - close
    - bind
    - setsockopt
    - fcntl
    linkageType: ''
    returnType: int
    signature: int babel_socket(int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/babeld/net.c:104,1
    - Dst: recvmsg
      Src: /src/frr/babeld/net.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - s
    - buf
    - buflen
    - sin
    - slen
    argTypes:
    - int
    - void*
    - int
    - struct sockaddr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 114
    functionName: babel_recv
    functionSourceFile: /src/frr/babeld/net.c
    functionUses: 1
    functionsReached:
    - recvmsg
    - memset
    linkageType: ''
    returnType: int
    signature: int babel_recv(int s, void *buf, int buflen, struct sockaddr *sin,
      int slen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/babeld/net.c:129,1
    - Dst: sendmsg
      Src: /src/frr/babeld/net.c:136,1
    - Dst: wait_for_fd
      Src: /src/frr/babeld/net.c:142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 7
    argNames:
    - s
    - buf1
    - buflen1
    - buf2
    - buflen2
    - sin
    - slen
    argTypes:
    - int
    - void*
    - int
    - void*
    - int
    - struct sockaddr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 149
    functionName: babel_send
    functionSourceFile: /src/frr/babeld/net.c
    functionUses: 2
    functionsReached:
    - sendmsg
    - memset
    - wait_for_fd
    linkageType: ''
    returnType: int
    signature: "int babel_send(int s,\n           void *buf1, int buflen1, void *buf2,
      int buflen2,\n           struct sockaddr *sin, int slen)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/babeld/net.c:158,1
    - Dst: setsockopt
      Src: /src/frr/babeld/net.c:162,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:166,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:170,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:174,1
    - Dst: fcntl
      Src: /src/frr/babeld/net.c:178,1
    - Dst: memset
      Src: /src/frr/babeld/net.c:182,1
    - Dst: htons
      Src: /src/frr/babeld/net.c:184,1
    - Dst: inet_pton
      Src: /src/frr/babeld/net.c:186,1
    - Dst: bind
      Src: /src/frr/babeld/net.c:190,1
    - Dst: listen
      Src: /src/frr/babeld/net.c:194,1
    - Dst: close
      Src: /src/frr/babeld/net.c:202,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 2
    argNames:
    - port
    - local
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 205
    functionName: tcp_server_socket
    functionSourceFile: /src/frr/babeld/net.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - socket
    - close
    - inet_pton
    - bind
    - listen
    - setsockopt
    - fcntl
    linkageType: ''
    returnType: int
    signature: int tcp_server_socket(int port, int local)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_decode
      Src: /src/frr/babeld/babel_zebra.c:46,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_zebra.c:50,1
    - Dst: babel_route_add
      Src: /src/frr/babeld/babel_zebra.c:54,1
    - Dst: babel_route_delete
      Src: /src/frr/babeld/babel_zebra.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 60
    functionName: babel_zebra_read_route
    functionSourceFile: /src/frr/babeld/babel_zebra.c
    functionUses: 0
    functionsReached:
    - babel_route_delete
    - CHECK_FLAG
    - babel_route_add
    - zapi_route_decode
    linkageType: ''
    returnType: int
    signature: int babel_zebra_read_route (ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/babeld/babel_zebra.c:177,1
    - Dst: CHECK_FLAG
      Src: /src/frr/babeld/babel_zebra.c:185,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_zebra.c:187,1
    - Dst: vty_out
      Src: /src/frr/babeld/babel_zebra.c:195,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 200
    functionName: debug_babel_config_write
    functionSourceFile: /src/frr/babeld/babel_zebra.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: int
    signature: int debug_babel_config_write (struct vty * vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/babeld/babel_zebra.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: babel_zebra_connected
    functionSourceFile: /src/frr/babeld/babel_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void babel_zebra_connected (struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/babeld/babel_zebra.c:233,1
    - Dst: array_size
      Src: /src/frr/babeld/babel_zebra.c:234,1
    - Dst: zclient_init
      Src: /src/frr/babeld/babel_zebra.c:235,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_zebra.c:239,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_zebra.c:240,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_zebra.c:241,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_zebra.c:242,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_zebra.c:243,1
    - Dst: install_element
      Src: /src/frr/babeld/babel_zebra.c:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 246
    functionName: babelz_zebra_init
    functionSourceFile: /src/frr/babeld/babel_zebra.c
    functionUses: 1
    functionsReached:
    - install_element
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void babelz_zebra_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/babeld/babel_zebra.c:251,1
    - Dst: zclient_free
      Src: /src/frr/babeld/babel_zebra.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 253
    functionName: babel_zebra_close_connexion
    functionSourceFile: /src/frr/babeld/babel_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_free
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void babel_zebra_close_connexion(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/isisd/isis_tx_queue.c:43,1
    - Dst: jhash_1word
      Src: /src/frr/isisd/isis_tx_queue.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: tx_queue_hash_key
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - jhash
    linkageType: ''
    returnType: unsigned
    signature: unsigned tx_queue_hash_key(const void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tx_queue.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: tx_queue_hash_cmp
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool tx_queue_hash_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tx_queue.c:69,1
    - Dst: hash_create
      Src: /src/frr/isisd/isis_tx_queue.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: isis_tx_queue_new
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - hash_create
    - XCALLOC
    linkageType: ''
    returnType: struct isis_tx_queue
    signature: "struct isis_tx_queue *isis_tx_queue_new(\n\t\tstruct isis_circuit
      *circuit,\n\t\tvoid(*send_event)(struct isis_circuit *circuit,\n\t\t\t\t  struct
      isis_lsp *,\n\t\t\t\t  enum isis_tx_type))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_tx_queue.c:82,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tx_queue.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - element
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: tx_queue_element_free
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void tx_queue_element_free(void *element)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/isisd/isis_tx_queue.c:89,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tx_queue.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_tx_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: isis_tx_queue_free
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void isis_tx_queue_free(struct isis_tx_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/isisd/isis_tx_queue.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - queue
    - lsp
    argTypes:
    - struct isis_tx_queue*
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: tx_queue_find
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct isis_tx_queue_entry
    signature: "struct isis_tx_queue_entry *tx_queue_find(struct isis_tx_queue *queue,\n\t\t\t\t\t\t
      struct isis_lsp *lsp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_tx_queue.c:105,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_tx_queue.c:108,1
    - Dst: struct isis_tx_queue*::send_event
      Src: /src/frr/isisd/isis_tx_queue.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 117
    functionName: tx_queue_send_event
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - struct isis_tx_queue*::send_event
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void tx_queue_send_event(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_tx_queue.c:129,1
    - Dst: tx_queue_find
      Src: /src/frr/isisd/isis_tx_queue.c:137,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tx_queue.c:139,1
    - Dst: hash_get
      Src: /src/frr/isisd/isis_tx_queue.c:144,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tx_queue.c:145,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_tx_queue.c:150,1
    - Dst: event_add_event
      Src: /src/frr/isisd/isis_tx_queue.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - queue
    - lsp
    - type
    - func
    - file
    - line
    argTypes:
    - struct isis_tx_queue*
    - struct isis_lsp*
    - enum isis_tx_type
    - char*
    - char*
    - int
    assertStmts:
    - condition: (inserted == e)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/frr/isisd/isis_tx_queue.c
    constantsTouched: []
    func_position:
      end: 154
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 154
    functionName: _isis_tx_queue_add
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - tx_queue_find
    - XCALLOC
    - zlog_debug
    - EVENT_OFF
    - hash_get
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void _isis_tx_queue_add(struct isis_tx_queue *queue,\n\t\t\tstruct
      isis_lsp *lsp,\n\t\t\tenum isis_tx_type type,\n\t\t\tconst char *func, const
      char *file,\n\t\t\tint line)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: tx_queue_find
      Src: /src/frr/isisd/isis_tx_queue.c:162,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_tx_queue.c:167,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_tx_queue.c:172,1
    - Dst: hash_release
      Src: /src/frr/isisd/isis_tx_queue.c:174,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tx_queue.c:175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - queue
    - lsp
    - func
    - file
    - line
    argTypes:
    - struct isis_tx_queue*
    - struct isis_lsp*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 176
    functionName: _isis_tx_queue_del
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - tx_queue_find
    - zlog_debug
    - EVENT_OFF
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: "void _isis_tx_queue_del(struct isis_tx_queue *queue, struct isis_lsp
      *lsp,\n\t\t\tconst char *func, const char *file, int line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/isisd/isis_tx_queue.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_tx_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 184
    functionName: isis_tx_queue_len
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - hashcount
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long isis_tx_queue_len(struct isis_tx_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean
      Src: /src/frr/isisd/isis_tx_queue.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_tx_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: isis_tx_queue_clean
    functionSourceFile: /src/frr/isisd/isis_tx_queue.c
    functionUses: 0
    functionsReached:
    - hash_clean
    linkageType: ''
    returnType: void
    signature: void isis_tx_queue_clean(struct isis_tx_queue *queue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:62,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:63,1
    - Dst: isis_area_lookup_by_vrf
      Src: /src/frr/isisd/isis_nb_config.c:65,1
    - Dst: isis_area_create
      Src: /src/frr/isisd/isis_nb_config.c:69,1
    - Dst: nb_running_set_entry
      Src: /src/frr/isisd/isis_nb_config.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 75
    functionName: isis_instance_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_get_string
    - isis_area_create
    - isis_area_lookup_by_vrf
    linkageType: ''
    returnType: int
    signature: int isis_instance_create(struct nb_cb_create_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/isisd/isis_nb_config.c:84,1
    - Dst: isis_area_destroy
      Src: /src/frr/isisd/isis_nb_config.c:86,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_nb_config.c:88,1
    - Dst: isis_finish
      Src: /src/frr/isisd/isis_nb_config.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: isis_instance_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_finish
    - listcount
    - nb_running_unset_entry
    - isis_area_destroy
    linkageType: ''
    returnType: int
    signature: int isis_instance_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:105,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:106,1
    - Dst: isis_area_is_type_set
      Src: /src/frr/isisd/isis_nb_config.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 110
    functionName: isis_instance_is_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    - isis_area_is_type_set
    linkageType: ''
    returnType: int
    signature: int isis_instance_is_type_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:123,1
    - Dst: dotformat2buff
      Src: /src/frr/isisd/isis_nb_config.c:124,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_nb_config.c:126,1
    - Dst: GETSYSID
      Src: /src/frr/isisd/isis_nb_config.c:126,1
    - Dst: GETSYSID
      Src: /src/frr/isisd/isis_nb_config.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 132
    functionName: sysid_iter_cb
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - dotformat2buff
    - yang_dnode_get_string
    - GETSYSID
    - memcmp
    linkageType: ''
    returnType: int
    signature: int sysid_iter_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:144,1
    - Dst: dotformat2buff
      Src: /src/frr/isisd/isis_nb_config.c:148,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_nb_config.c:149,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:151,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/isisd/isis_nb_config.c:160,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:164,1
    - Dst: XMALLOC
      Src: /src/frr/isisd/isis_nb_config.c:171,1
    - Dst: dotformat2buff
      Src: /src/frr/isisd/isis_nb_config.c:173,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_nb_config.c:174,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_nb_config.c:178,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:181,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:183,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_nb_config.c:189,1
    - Dst: GETSYSID
      Src: /src/frr/isisd/isis_nb_config.c:189,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_nb_config.c:194,1
    - Dst: if
      Src: /src/frr/isisd/isis_nb_config.c:200,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_nb_config.c:200,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_nb_config.c:202,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:210,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_config.c:211,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_nb_config.c:214,1
    - Dst: lsp_generate
      Src: /src/frr/isisd/isis_nb_config.c:218,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts:
    - condition: (area)
      pos:
        line_end: 182
        line_start: 182
        source_file: /src/frr/isisd/isis_nb_config.c
    - condition: (area->area_addrs)
      pos:
        line_end: 209
        line_start: 209
        source_file: /src/frr/isisd/isis_nb_config.c
    constantsTouched: []
    func_position:
      end: 224
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 224
    functionName: isis_instance_area_address_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - assert
    - yang_dnode_iterate
    - snprintf
    - lsp_generate
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - XMALLOC
    - nb_running_get_entry
    - GETSYSID
    - memcmp
    - listnode_add
    - yang_dnode_get_string
    - XFREE
    - dotformat2buff
    - if
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_instance_area_address_create(struct nb_cb_create_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:240,1
    - Dst: dotformat2buff
      Src: /src/frr/isisd/isis_nb_config.c:241,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_nb_config.c:242,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:243,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_nb_config.c:245,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_nb_config.c:247,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_nb_config.c:253,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_nb_config.c:254,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_nb_config.c:258,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_nb_config.c:259,1
    - Dst: for
      Src: /src/frr/isisd/isis_nb_config.c:260,1
    - Dst: isis_dr_resign
      Src: /src/frr/isisd/isis_nb_config.c:262,1
    - Dst: memset
      Src: /src/frr/isisd/isis_nb_config.c:264,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_nb_config.c:267,1
    - Dst: isis_instance_dynamic_hostname_modify
      Src: /src/frr/isisd/isis_nb_config.c:276,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:283,1
    - Dst: isis_area_dynhostname_set
      Src: /src/frr/isisd/isis_nb_config.c:284,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:284,1
    - Dst: isis_instance_attached_send_modify
      Src: /src/frr/isisd/isis_nb_config.c:292,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:300,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:301,1
    - Dst: isis_area_attached_bit_send_set
      Src: /src/frr/isisd/isis_nb_config.c:302,1
    - Dst: isis_instance_attached_receive_modify
      Src: /src/frr/isisd/isis_nb_config.c:310,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:318,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:319,1
    - Dst: isis_area_attached_bit_receive_set
      Src: /src/frr/isisd/isis_nb_config.c:320,1
    - Dst: isis_instance_attached_modify
      Src: /src/frr/isisd/isis_nb_config.c:328,1
    - Dst: isis_instance_overload_enabled_modify
      Src: /src/frr/isisd/isis_nb_config.c:336,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:344,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:345,1
    - Dst: isis_area_overload_bit_set
      Src: /src/frr/isisd/isis_nb_config.c:348,1
    - Dst: isis_instance_overload_on_startup_modify
      Src: /src/frr/isisd/isis_nb_config.c:356,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:364,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:365,1
    - Dst: isis_area_overload_on_startup_set
      Src: /src/frr/isisd/isis_nb_config.c:366,1
    - Dst: isis_instance_advertise_high_metrics_modify
      Src: /src/frr/isisd/isis_nb_config.c:374,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:382,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:383,1
    - Dst: isis_area_advertise_high_metrics_set
      Src: /src/frr/isisd/isis_nb_config.c:384,1
    - Dst: isis_instance_metric_style_modify
      Src: /src/frr/isisd/isis_nb_config.c:392,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:402,1
    - Dst: isis_area_metricstyle_set
      Src: /src/frr/isisd/isis_nb_config.c:405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 408
    functionName: isis_instance_area_address_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - isis_dr_resign
    - isis_instance_attached_send_modify
    - isis_area_metricstyle_set
    - memcmp
    - yang_dnode_get_string
    - isis_area_overload_on_startup_set
    - memset
    - ALL_LIST_ELEMENTS_RO
    - isis_area_dynhostname_set
    - nb_running_get_entry
    - zlog_debug
    - isis_instance_metric_style_modify
    - isis_instance_overload_enabled_modify
    - yang_dnode_get_uint32
    - for
    - isis_area_attached_bit_send_set
    - isis_area_advertise_high_metrics_set
    - listcount
    - isis_instance_attached_receive_modify
    - isis_area_attached_bit_receive_set
    - XFREE
    - listnode_delete
    - isis_instance_attached_modify
    - memcpy
    - isis_instance_advertise_high_metrics_modify
    - isis_instance_dynamic_hostname_modify
    - isis_area_overload_bit_set
    - dotformat2buff
    - isis_instance_overload_on_startup_modify
    linkageType: ''
    returnType: int
    signature: int isis_instance_area_address_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:420,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 424
    functionName: isis_instance_purge_originator_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int isis_instance_purge_originator_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:440,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:441,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_nb_config.c:444,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:446,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:448,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:450,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_nb_config.c:454,1
    - Dst: admin_group_disallow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:458,1
    - Dst: admin_group_disallow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 463
    functionName: isis_instance_admin_group_send_zero_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - admin_group_allow_explicit_zero
    - ALL_LIST_ELEMENTS_RO
    - admin_group_disallow_explicit_zero
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int isis_instance_admin_group_send_zero_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1290
    functionName: isis_instance_redistribute_ipv4_route_map_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_instance_redistribute_ipv4_route_map_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1292
    functionDepth: 0
    functionLinenumber: 1292
    functionLinenumberEnd: 1297
    functionName: isis_instance_redistribute_ipv4_route_map_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_instance_redistribute_ipv4_route_map_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1302
    functionDepth: 0
    functionLinenumber: 1302
    functionLinenumberEnd: 1307
    functionName: isis_instance_redistribute_ipv4_metric_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_instance_redistribute_ipv4_metric_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1312
    functionDepth: 0
    functionLinenumber: 1312
    functionLinenumberEnd: 1316
    functionName: isis_instance_redistribute_ipv6_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_instance_redistribute_ipv6_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1326,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1327,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1328,1
    - Dst: isis_redist_unset
      Src: /src/frr/isisd/isis_nb_config.c:1329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1318
    functionDepth: 1
    functionLinenumber: 1318
    functionLinenumberEnd: 1332
    functionName: isis_instance_redistribute_ipv6_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - isis_redist_unset
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int isis_instance_redistribute_ipv6_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1337
    functionDepth: 0
    functionLinenumber: 1337
    functionLinenumberEnd: 1342
    functionName: isis_instance_redistribute_ipv6_route_map_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_instance_redistribute_ipv6_route_map_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1344
    functionDepth: 0
    functionLinenumber: 1344
    functionLinenumberEnd: 1349
    functionName: isis_instance_redistribute_ipv6_route_map_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_instance_redistribute_ipv6_route_map_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1354
    functionDepth: 0
    functionLinenumber: 1354
    functionLinenumberEnd: 1359
    functionName: isis_instance_redistribute_ipv6_metric_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_instance_redistribute_ipv6_metric_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isis_str2mtid
      Src: /src/frr/isisd/isis_nb_config.c:1371,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:1376,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1385,1
    - Dst: area_get_mt_setting
      Src: /src/frr/isisd/isis_nb_config.c:1386,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1388,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 6
    argNames:
    - event
    - dnode
    - errmsg
    - errmsg_len
    - topology
    - create
    argTypes:
    - enum nb_event
    - struct lyd_node*
    - char*
    - size_t
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1364
    functionDepth: 1
    functionLinenumber: 1364
    functionLinenumberEnd: 1393
    functionName: isis_multi_topology_common
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - isis_str2mtid
    - nb_running_get_entry
    - lsp_regenerate_schedule
    - area_get_mt_setting
    linkageType: ''
    returnType: int
    signature: "int isis_multi_topology_common(enum nb_event event,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      char *errmsg, size_t errmsg_len,\n\t\t\t\t
      \     const char *topology, bool create)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_str2mtid
      Src: /src/frr/isisd/isis_nb_config.c:1401,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1407,1
    - Dst: area_get_mt_setting
      Src: /src/frr/isisd/isis_nb_config.c:1408,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:1409,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - event
    - dnode
    - topology
    argTypes:
    - enum nb_event
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1395
    functionDepth: 1
    functionLinenumber: 1395
    functionLinenumberEnd: 1414
    functionName: isis_multi_topology_overload_common
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - isis_str2mtid
    - nb_running_get_entry
    - lsp_regenerate_schedule
    - area_get_mt_setting
    linkageType: ''
    returnType: int
    signature: "int isis_multi_topology_overload_common(enum nb_event event,\n\t\t\t\t\t
      \      const struct lyd_node *dnode,\n\t\t\t\t\t       const char *topology)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1416
    functionDepth: 2
    functionLinenumber: 1416
    functionLinenumberEnd: 1422
    functionName: isis_instance_multi_topology_ipv4_multicast_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv4_multicast_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1424
    functionDepth: 2
    functionLinenumber: 1424
    functionLinenumberEnd: 1430
    functionName: isis_instance_multi_topology_ipv4_multicast_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv4_multicast_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_overload_common
      Src: /src/frr/isisd/isis_nb_config.c:1438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1435
    functionDepth: 2
    functionLinenumber: 1435
    functionLinenumberEnd: 1440
    functionName: isis_instance_multi_topology_ipv4_multicast_overload_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_overload_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv4_multicast_overload_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1451
      start: 1445
    functionDepth: 2
    functionLinenumber: 1445
    functionLinenumberEnd: 1451
    functionName: isis_instance_multi_topology_ipv4_management_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv4_management_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1453
    functionDepth: 2
    functionLinenumber: 1453
    functionLinenumberEnd: 1459
    functionName: isis_instance_multi_topology_ipv4_management_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv4_management_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_overload_common
      Src: /src/frr/isisd/isis_nb_config.c:1467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1464
    functionDepth: 2
    functionLinenumber: 1464
    functionLinenumberEnd: 1469
    functionName: isis_instance_multi_topology_ipv4_management_overload_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_overload_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv4_management_overload_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1474
    functionDepth: 2
    functionLinenumber: 1474
    functionLinenumberEnd: 1480
    functionName: isis_instance_multi_topology_ipv6_unicast_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_unicast_create(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1482
    functionDepth: 2
    functionLinenumber: 1482
    functionLinenumberEnd: 1488
    functionName: isis_instance_multi_topology_ipv6_unicast_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_unicast_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_overload_common
      Src: /src/frr/isisd/isis_nb_config.c:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1493
    functionDepth: 2
    functionLinenumber: 1493
    functionLinenumberEnd: 1498
    functionName: isis_instance_multi_topology_ipv6_unicast_overload_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_overload_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_unicast_overload_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1503
    functionDepth: 2
    functionLinenumber: 1503
    functionLinenumberEnd: 1509
    functionName: isis_instance_multi_topology_ipv6_multicast_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_multicast_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1511
    functionDepth: 2
    functionLinenumber: 1511
    functionLinenumberEnd: 1517
    functionName: isis_instance_multi_topology_ipv6_multicast_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_multicast_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_overload_common
      Src: /src/frr/isisd/isis_nb_config.c:1525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1522
    functionDepth: 2
    functionLinenumber: 1522
    functionLinenumberEnd: 1527
    functionName: isis_instance_multi_topology_ipv6_multicast_overload_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_overload_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_multicast_overload_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1532
    functionDepth: 2
    functionLinenumber: 1532
    functionLinenumberEnd: 1538
    functionName: isis_instance_multi_topology_ipv6_management_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_management_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1540
    functionDepth: 2
    functionLinenumber: 1540
    functionLinenumberEnd: 1546
    functionName: isis_instance_multi_topology_ipv6_management_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_management_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_overload_common
      Src: /src/frr/isisd/isis_nb_config.c:1554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1551
    functionDepth: 2
    functionLinenumber: 1551
    functionLinenumberEnd: 1556
    functionName: isis_instance_multi_topology_ipv6_management_overload_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_overload_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_management_overload_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1561
    functionDepth: 2
    functionLinenumber: 1561
    functionLinenumberEnd: 1567
    functionName: isis_instance_multi_topology_ipv6_dstsrc_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_dstsrc_create(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:1572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1569
    functionDepth: 2
    functionLinenumber: 1569
    functionLinenumberEnd: 1575
    functionName: isis_instance_multi_topology_ipv6_dstsrc_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_dstsrc_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_multi_topology_overload_common
      Src: /src/frr/isisd/isis_nb_config.c:1583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1580
    functionDepth: 2
    functionLinenumber: 1580
    functionLinenumberEnd: 1585
    functionName: isis_instance_multi_topology_ipv6_dstsrc_overload_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_multi_topology_overload_common
    linkageType: ''
    returnType: int
    signature: "int isis_instance_multi_topology_ipv6_dstsrc_overload_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1598,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:1599,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1590
    functionDepth: 1
    functionLinenumber: 1590
    functionLinenumberEnd: 1603
    functionName: isis_instance_fast_reroute_level_1_lfa_load_sharing_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_lfa_load_sharing_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1616,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1617,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1621
    functionName: isis_instance_fast_reroute_level_1_lfa_priority_limit_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_lfa_priority_limit_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1631,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1623
    functionDepth: 1
    functionLinenumber: 1623
    functionLinenumberEnd: 1636
    functionName: isis_instance_fast_reroute_level_1_lfa_priority_limit_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_lfa_priority_limit_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1652,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/isisd/isis_nb_config.c:1653,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1654,1
    - Dst: isis_lfa_tiebreaker_add
      Src: /src/frr/isisd/isis_nb_config.c:1656,1
    - Dst: nb_running_set_entry
      Src: /src/frr/isisd/isis_nb_config.c:1657,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1658,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1641
    functionDepth: 1
    functionLinenumber: 1641
    functionLinenumberEnd: 1661
    functionName: isis_instance_fast_reroute_level_1_lfa_tiebreaker_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - isis_lfa_tiebreaker_add
    - yang_dnode_get_enum
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_lfa_tiebreaker_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/isisd/isis_nb_config.c:1672,1
    - Dst: isis_lfa_tiebreaker_delete
      Src: /src/frr/isisd/isis_nb_config.c:1674,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1663
    functionDepth: 1
    functionLinenumber: 1663
    functionLinenumberEnd: 1678
    functionName: isis_instance_fast_reroute_level_1_lfa_tiebreaker_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_unset_entry
    - isis_lfa_tiebreaker_delete
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_lfa_tiebreaker_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1692,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1694,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1695,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1683
    functionDepth: 1
    functionLinenumber: 1683
    functionLinenumberEnd: 1698
    functionName: isis_instance_fast_reroute_level_1_lfa_tiebreaker_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_lfa_tiebreaker_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1712,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:1713,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_nb_config.c:1715,1
    - Dst: prefix_list_lookup
      Src: /src/frr/isisd/isis_nb_config.c:1716,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1703
    functionDepth: 1
    functionLinenumber: 1703
    functionLinenumberEnd: 1720
    functionName: isis_instance_fast_reroute_level_1_remote_lfa_prefix_list_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - nb_running_get_entry
    - yang_dnode_get_string
    - lsp_regenerate_schedule
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_remote_lfa_prefix_list_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1730,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_nb_config.c:1732,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1722
    functionDepth: 1
    functionLinenumber: 1722
    functionLinenumberEnd: 1737
    functionName: isis_instance_fast_reroute_level_1_remote_lfa_prefix_list_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_1_remote_lfa_prefix_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1750,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:1751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1742
    functionDepth: 1
    functionLinenumber: 1742
    functionLinenumberEnd: 1754
    functionName: isis_instance_fast_reroute_level_2_lfa_load_sharing_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_lfa_load_sharing_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1767,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1759
    functionDepth: 1
    functionLinenumber: 1759
    functionLinenumberEnd: 1771
    functionName: isis_instance_fast_reroute_level_2_lfa_priority_limit_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_lfa_priority_limit_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1781,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1773
    functionDepth: 1
    functionLinenumber: 1773
    functionLinenumberEnd: 1785
    functionName: isis_instance_fast_reroute_level_2_lfa_priority_limit_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_lfa_priority_limit_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1801,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/isisd/isis_nb_config.c:1802,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1803,1
    - Dst: isis_lfa_tiebreaker_add
      Src: /src/frr/isisd/isis_nb_config.c:1805,1
    - Dst: nb_running_set_entry
      Src: /src/frr/isisd/isis_nb_config.c:1806,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1807,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1790
    functionDepth: 1
    functionLinenumber: 1790
    functionLinenumberEnd: 1810
    functionName: isis_instance_fast_reroute_level_2_lfa_tiebreaker_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - isis_lfa_tiebreaker_add
    - yang_dnode_get_enum
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_lfa_tiebreaker_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/isisd/isis_nb_config.c:1821,1
    - Dst: isis_lfa_tiebreaker_delete
      Src: /src/frr/isisd/isis_nb_config.c:1823,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1827
      start: 1812
    functionDepth: 1
    functionLinenumber: 1812
    functionLinenumberEnd: 1827
    functionName: isis_instance_fast_reroute_level_2_lfa_tiebreaker_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_unset_entry
    - isis_lfa_tiebreaker_delete
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_lfa_tiebreaker_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1841,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:1843,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1844,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1847
      start: 1832
    functionDepth: 1
    functionLinenumber: 1832
    functionLinenumberEnd: 1847
    functionName: isis_instance_fast_reroute_level_2_lfa_tiebreaker_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_lfa_tiebreaker_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1861,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:1862,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_nb_config.c:1864,1
    - Dst: prefix_list_lookup
      Src: /src/frr/isisd/isis_nb_config.c:1865,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1866,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1852
    functionDepth: 1
    functionLinenumber: 1852
    functionLinenumberEnd: 1869
    functionName: isis_instance_fast_reroute_level_2_remote_lfa_prefix_list_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - nb_running_get_entry
    - yang_dnode_get_string
    - lsp_regenerate_schedule
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_remote_lfa_prefix_list_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1879,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_nb_config.c:1881,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1886
      start: 1871
    functionDepth: 1
    functionLinenumber: 1871
    functionLinenumberEnd: 1886
    functionName: isis_instance_fast_reroute_level_2_remote_lfa_prefix_list_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int isis_instance_fast_reroute_level_2_remote_lfa_prefix_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:1894,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1891
    functionDepth: 1
    functionLinenumber: 1891
    functionLinenumberEnd: 1903
    functionName: isis_instance_log_adjacency_changes_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int isis_instance_log_adjacency_changes_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:1911,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1908
    functionDepth: 1
    functionLinenumber: 1908
    functionLinenumberEnd: 1920
    functionName: isis_instance_log_pdu_drops_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int isis_instance_log_pdu_drops_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1932,1
    - Dst: isis_mpls_te_create
      Src: /src/frr/isisd/isis_nb_config.c:1933,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1925
    functionDepth: 1
    functionLinenumber: 1925
    functionLinenumberEnd: 1939
    functionName: isis_instance_mpls_te_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - isis_mpls_te_create
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int isis_instance_mpls_te_create(struct nb_cb_create_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1948,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_nb_config.c:1949,1
    - Dst: isis_mpls_te_disable
      Src: /src/frr/isisd/isis_nb_config.c:1952,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1955,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_nb_config.c:1957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 1961
    functionName: isis_instance_mpls_te_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - zlog_debug
    - IS_MPLS_TE
    - lsp_regenerate_schedule
    - isis_mpls_te_disable
    linkageType: ''
    returnType: int
    signature: int isis_instance_mpls_te_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1974,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_nb_config.c:1976,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/isisd/isis_nb_config.c:1980,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:1984,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1987
      start: 1966
    functionDepth: 1
    functionLinenumber: 1966
    functionLinenumberEnd: 1987
    functionName: isis_instance_mpls_te_router_address_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ipv4
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - IS_MPLS_TE
    linkageType: ''
    returnType: int
    signature: int isis_instance_mpls_te_router_address_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:1997,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_nb_config.c:1999,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1989
    functionDepth: 1
    functionLinenumber: 1989
    functionLinenumberEnd: 2009
    functionName: isis_instance_mpls_te_router_address_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - IS_MPLS_TE
    linkageType: ''
    returnType: int
    signature: "int isis_instance_mpls_te_router_address_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2023,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_nb_config.c:2025,1
    - Dst: yang_dnode_get_ipv6
      Src: /src/frr/isisd/isis_nb_config.c:2028,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/isisd/isis_nb_config.c:2030,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/isisd/isis_nb_config.c:2031,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2034,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2014
    functionDepth: 1
    functionLinenumber: 2014
    functionLinenumberEnd: 2038
    functionName: isis_instance_mpls_te_router_address_ipv6_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ipv6
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - IS_MPLS_TE
    - IPV6_ADDR_SAME
    - IPV6_ADDR_COPY
    linkageType: ''
    returnType: int
    signature: "int isis_instance_mpls_te_router_address_ipv6_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2048,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_nb_config.c:2050,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/isisd/isis_nb_config.c:2054,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2057,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 2040
    functionDepth: 1
    functionLinenumber: 2040
    functionLinenumberEnd: 2060
    functionName: isis_instance_mpls_te_router_address_ipv6_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_COPY
    - nb_running_get_entry
    - IS_MPLS_TE
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_mpls_te_router_address_ipv6_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2072,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_nb_config.c:2074,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:2077,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_nb_config.c:2080,1
    - Dst: isis_zebra_ls_register
      Src: /src/frr/isisd/isis_nb_config.c:2081,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_nb_config.c:2082,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_nb_config.c:2085,1
    - Dst: isis_zebra_ls_register
      Src: /src/frr/isisd/isis_nb_config.c:2086,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_nb_config.c:2087,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2091
      start: 2065
    functionDepth: 1
    functionLinenumber: 2065
    functionLinenumberEnd: 2091
    functionName: isis_instance_mpls_te_export_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - zlog_debug
    - zlog_warn
    - isis_zebra_ls_register
    - IS_MPLS_TE
    linkageType: ''
    returnType: int
    signature: int isis_instance_mpls_te_export_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2104,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:2105,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_nb_config.c:2109,1
    - Dst: isis_sr_start
      Src: /src/frr/isisd/isis_nb_config.c:2111,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_nb_config.c:2114,1
    - Dst: isis_sr_stop
      Src: /src/frr/isisd/isis_nb_config.c:2116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2120
      start: 2096
    functionDepth: 1
    functionLinenumber: 2096
    functionLinenumberEnd: 2120
    functionName: isis_instance_segment_routing_enabled_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - isis_sr_stop
    - isis_sr_start
    - nb_running_get_entry
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_enabled_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2133,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2134,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2135,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2136,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2140,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2147,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_pre_validate_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2125
    functionDepth: 1
    functionLinenumber: 2125
    functionLinenumberEnd: 2163
    functionName: isis_instance_segment_routing_label_blocks_pre_validate
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_label_blocks_pre_validate(\n\tstruct
      nb_cb_pre_validate_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2175,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2176,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2177,1
    - Dst: isis_sr_cfg_srgb_update
      Src: /src/frr/isisd/isis_nb_config.c:2179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2180
      start: 2169
    functionDepth: 1
    functionLinenumber: 2169
    functionLinenumberEnd: 2180
    functionName: isis_instance_segment_routing_srgb_apply_finish
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    - isis_sr_cfg_srgb_update
    linkageType: ''
    returnType: void
    signature: "void isis_instance_segment_routing_srgb_apply_finish(\n\tstruct nb_cb_apply_finish_args
      *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2188,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/isisd/isis_nb_config.c:2192,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2185
    functionDepth: 1
    functionLinenumber: 2185
    functionLinenumberEnd: 2205
    functionName: isis_instance_segment_routing_srgb_lower_bound_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - IS_MPLS_UNRESERVED_LABEL
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_srgb_lower_bound_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2213,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/isisd/isis_nb_config.c:2217,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2230
      start: 2210
    functionDepth: 1
    functionLinenumber: 2210
    functionLinenumberEnd: 2230
    functionName: isis_instance_segment_routing_srgb_upper_bound_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - IS_MPLS_UNRESERVED_LABEL
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_srgb_upper_bound_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2241,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2242,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2243,1
    - Dst: isis_sr_cfg_srlb_update
      Src: /src/frr/isisd/isis_nb_config.c:2245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 2235
    functionDepth: 1
    functionLinenumber: 2235
    functionLinenumberEnd: 2246
    functionName: isis_instance_segment_routing_srlb_apply_finish
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    - isis_sr_cfg_srlb_update
    linkageType: ''
    returnType: void
    signature: "void isis_instance_segment_routing_srlb_apply_finish(\n\tstruct nb_cb_apply_finish_args
      *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2254,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/isisd/isis_nb_config.c:2258,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2271
      start: 2251
    functionDepth: 1
    functionLinenumber: 2251
    functionLinenumberEnd: 2271
    functionName: isis_instance_segment_routing_srlb_lower_bound_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - IS_MPLS_UNRESERVED_LABEL
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_srlb_lower_bound_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2279,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/isisd/isis_nb_config.c:2283,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2276
    functionDepth: 1
    functionLinenumber: 2276
    functionLinenumberEnd: 2296
    functionName: isis_instance_segment_routing_srlb_upper_bound_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - IS_MPLS_UNRESERVED_LABEL
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_srlb_upper_bound_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2309,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/isisd/isis_nb_config.c:2310,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2316
      start: 2301
    functionDepth: 1
    functionLinenumber: 2301
    functionLinenumberEnd: 2316
    functionName: isis_instance_segment_routing_msd_node_msd_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_msd_node_msd_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2326,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2333
      start: 2318
    functionDepth: 1
    functionLinenumber: 2318
    functionLinenumberEnd: 2333
    functionName: isis_instance_segment_routing_msd_node_msd_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_msd_node_msd_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2348,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/isisd/isis_nb_config.c:2349,1
    - Dst: isis_sr_cfg_prefix_add
      Src: /src/frr/isisd/isis_nb_config.c:2351,1
    - Dst: nb_running_set_entry
      Src: /src/frr/isisd/isis_nb_config.c:2352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2338
    functionDepth: 1
    functionLinenumber: 2338
    functionLinenumberEnd: 2355
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_prefix
    - nb_running_set_entry
    - nb_running_get_entry
    - isis_sr_cfg_prefix_add
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_prefix_sid_map_prefix_sid_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/isisd/isis_nb_config.c:2366,1
    - Dst: isis_sr_cfg_prefix_del
      Src: /src/frr/isisd/isis_nb_config.c:2368,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2357
    functionDepth: 1
    functionLinenumber: 2357
    functionLinenumberEnd: 2372
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - isis_sr_cfg_prefix_del
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_prefix_sid_map_prefix_sid_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/isisd/isis_nb_config.c:2387,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2388,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2390,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2392,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:2393,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2401,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/isisd/isis_nb_config.c:2408,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2409,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:2413,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:2414,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/isisd/isis_nb_config.c:2419,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2420,1
    - Dst: isis_spf_prefix_sid_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2434,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_nb_config.c:2437,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_config.c:2439,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:2442,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_pre_validate_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2457
      start: 2374
    functionDepth: 1
    functionLinenumber: 2374
    functionLinenumberEnd: 2457
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - snprintf
    - yang_dnode_get_parent
    - CHECK_FLAG
    - IS_MPLS_UNRESERVED_LABEL
    - nb_running_get_entry
    - snprintfrr
    - isis_spf_prefix_sid_lookup
    - SET_FLAG
    - yang_dnode_get_uint32
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_prefix_sid_map_prefix_sid_pre_validate(\n\tstruct
      nb_cb_pre_validate_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2465,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2459
    functionDepth: 1
    functionLinenumber: 2459
    functionLinenumberEnd: 2468
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void isis_instance_segment_routing_prefix_sid_map_prefix_sid_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2482,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:2483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2486
      start: 2474
    functionDepth: 1
    functionLinenumber: 2474
    functionLinenumberEnd: 2486
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2500,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2492
    functionDepth: 1
    functionLinenumber: 2492
    functionLinenumberEnd: 2504
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_prefix_sid_map_prefix_sid_sid_value_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2518,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:2519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2522
      start: 2510
    functionDepth: 1
    functionLinenumber: 2510
    functionLinenumberEnd: 2522
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_prefix_sid_map_prefix_sid_last_hop_behavior_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2535,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:2536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2539
      start: 2527
    functionDepth: 1
    functionLinenumber: 2527
    functionLinenumberEnd: 2539
    functionName: isis_instance_segment_routing_prefix_sid_map_prefix_sid_n_flag_clear_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_prefix_sid_map_prefix_sid_n_flag_clear_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2556,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/isisd/isis_nb_config.c:2557,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2558,1
    - Dst: isis_sr_cfg_prefix_add
      Src: /src/frr/isisd/isis_nb_config.c:2560,1
    - Dst: nb_running_set_entry
      Src: /src/frr/isisd/isis_nb_config.c:2562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2545
    functionDepth: 1
    functionLinenumber: 2545
    functionLinenumberEnd: 2565
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_sr_cfg_prefix_add
    - nb_running_set_entry
    - nb_running_get_entry
    - yang_dnode_get_uint32
    - yang_dnode_get_prefix
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_algorithm_prefix_sid_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/isisd/isis_nb_config.c:2576,1
    - Dst: isis_sr_cfg_prefix_del
      Src: /src/frr/isisd/isis_nb_config.c:2578,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2582
      start: 2567
    functionDepth: 1
    functionLinenumber: 2567
    functionLinenumberEnd: 2582
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - isis_sr_cfg_prefix_del
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_algorithm_prefix_sid_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/isisd/isis_nb_config.c:2597,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2598,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2600,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2602,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:2603,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2611,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/isisd/isis_nb_config.c:2618,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2619,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:2623,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:2624,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/isisd/isis_nb_config.c:2629,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2630,1
    - Dst: isis_spf_prefix_sid_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2646,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_nb_config.c:2648,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_config.c:2649,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:2652,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_pre_validate_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2584
    functionDepth: 1
    functionLinenumber: 2584
    functionLinenumberEnd: 2664
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_pre_validate
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - snprintf
    - yang_dnode_get_parent
    - CHECK_FLAG
    - IS_MPLS_UNRESERVED_LABEL
    - nb_running_get_entry
    - snprintfrr
    - isis_spf_prefix_sid_lookup
    - SET_FLAG
    - yang_dnode_get_uint32
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_algorithm_prefix_sid_pre_validate(\n\tstruct
      nb_cb_pre_validate_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2672,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2675
      start: 2666
    functionDepth: 1
    functionLinenumber: 2666
    functionLinenumberEnd: 2675
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_apply_finish
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void isis_instance_segment_routing_algorithm_prefix_sid_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2689,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:2690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2681
    functionDepth: 1
    functionLinenumber: 2681
    functionLinenumberEnd: 2693
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_sid_value_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_algorithm_prefix_sid_sid_value_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2707,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2711
      start: 2699
    functionDepth: 1
    functionLinenumber: 2699
    functionLinenumberEnd: 2711
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_sid_value_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_algorithm_prefix_sid_sid_value_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2725,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:2726,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2729
      start: 2717
    functionDepth: 1
    functionLinenumber: 2717
    functionLinenumberEnd: 2729
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_last_hop_behavior_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_algorithm_prefix_sid_last_hop_behavior_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2743,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:2744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2735
    functionDepth: 1
    functionLinenumber: 2735
    functionLinenumberEnd: 2747
    functionName: isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2761,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_nb_config.c:2762,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2766,1
    - Dst: flex_algo_alloc
      Src: /src/frr/isisd/isis_nb_config.c:2769,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:2773,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:2775,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:2777,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2780,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2789
      start: 2752
    functionDepth: 1
    functionLinenumber: 2752
    functionLinenumberEnd: 2789
    functionName: isis_instance_flex_algo_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - admin_group_allow_explicit_zero
    - flex_algo_alloc
    - nb_running_get_entry
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    - yang_dnode_exists
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2796,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2797,1
    - Dst: flex_algo_delete
      Src: /src/frr/isisd/isis_nb_config.c:2801,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2802,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2811
      start: 2791
    functionDepth: 1
    functionLinenumber: 2791
    functionLinenumberEnd: 2811
    functionName: isis_instance_flex_algo_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - flex_algo_delete
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2825,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_nb_config.c:2826,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2830,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2831,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2833,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2838,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2847
      start: 2816
    functionDepth: 1
    functionLinenumber: 2816
    functionLinenumberEnd: 2847
    functionName: isis_instance_flex_algo_advertise_definition_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - flex_algo_lookup
    - nb_running_get_entry
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    - yang_dnode_exists
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_advertise_definition_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2856,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2858,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2862,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2864,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2869,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2878
      start: 2849
    functionDepth: 1
    functionLinenumber: 2849
    functionLinenumberEnd: 2878
    functionName: isis_instance_flex_algo_advertise_definition_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - flex_algo_lookup
    - nb_running_get_entry
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_advertise_definition_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2890,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2891,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:2892,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2896,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2898,1
    - Dst: affinity_map_get
      Src: /src/frr/isisd/isis_nb_config.c:2902,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2904,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2913,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2915,1
    - Dst: affinity_map_get
      Src: /src/frr/isisd/isis_nb_config.c:2919,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2921,1
    - Dst: admin_group_set
      Src: /src/frr/isisd/isis_nb_config.c:2934,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:2935,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 2
    argNames:
    - args
    - type
    argTypes:
    - struct nb_cb_create_args*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2880
    functionDepth: 1
    functionLinenumber: 2880
    functionLinenumberEnd: 2940
    functionName: isis_instance_flex_algo_affinity_set
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - flex_algo_lookup
    - nb_running_get_entry
    - affinity_map_get
    - yang_dnode_get_string
    - admin_group_set
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_set(struct nb_cb_create_args
      *args,\n\t\t\t\t\t\tint type)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:2953,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:2954,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:2955,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2959,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2961,1
    - Dst: affinity_map_get
      Src: /src/frr/isisd/isis_nb_config.c:2965,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2967,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:2976,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2978,1
    - Dst: affinity_map_get
      Src: /src/frr/isisd/isis_nb_config.c:2982,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:2984,1
    - Dst: admin_group_unset
      Src: /src/frr/isisd/isis_nb_config.c:2997,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_nb_config.c:2999,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3000,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - args
    - type
    argTypes:
    - struct nb_cb_destroy_args*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3005
      start: 2942
    functionDepth: 1
    functionLinenumber: 2942
    functionLinenumberEnd: 3005
    functionName: isis_instance_flex_algo_affinity_unset
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - admin_group_allow_explicit_zero
    - snprintf
    - admin_group_unset
    - flex_algo_lookup
    - nb_running_get_entry
    - affinity_map_get
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_unset(struct nb_cb_destroy_args
      *args,\n\t\t\t\t       int type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_affinity_set
      Src: /src/frr/isisd/isis_nb_config.c:3014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3015
      start: 3011
    functionDepth: 2
    functionLinenumber: 3011
    functionLinenumberEnd: 3015
    functionName: isis_instance_flex_algo_affinity_include_any_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_affinity_set
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_include_any_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_affinity_unset
      Src: /src/frr/isisd/isis_nb_config.c:3020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3022
      start: 3017
    functionDepth: 2
    functionLinenumber: 3017
    functionLinenumberEnd: 3022
    functionName: isis_instance_flex_algo_affinity_include_any_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_affinity_unset
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_include_any_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_affinity_set
      Src: /src/frr/isisd/isis_nb_config.c:3031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3032
      start: 3028
    functionDepth: 2
    functionLinenumber: 3028
    functionLinenumberEnd: 3032
    functionName: isis_instance_flex_algo_affinity_include_all_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_affinity_set
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_include_all_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_affinity_unset
      Src: /src/frr/isisd/isis_nb_config.c:3037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3039
      start: 3034
    functionDepth: 2
    functionLinenumber: 3034
    functionLinenumberEnd: 3039
    functionName: isis_instance_flex_algo_affinity_include_all_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_affinity_unset
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_include_all_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_affinity_set
      Src: /src/frr/isisd/isis_nb_config.c:3048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3049
      start: 3045
    functionDepth: 2
    functionLinenumber: 3045
    functionLinenumberEnd: 3049
    functionName: isis_instance_flex_algo_affinity_exclude_any_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_affinity_set
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_exclude_any_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_affinity_unset
      Src: /src/frr/isisd/isis_nb_config.c:3054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 3051
    functionDepth: 2
    functionLinenumber: 3051
    functionLinenumberEnd: 3056
    functionName: isis_instance_flex_algo_affinity_exclude_any_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_affinity_unset
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_affinity_exclude_any_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3069,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3070,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3074,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3078,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3080,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:3084,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3085,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3094
      start: 3062
    functionDepth: 1
    functionLinenumber: 3062
    functionLinenumberEnd: 3094
    functionName: isis_instance_flex_algo_prefix_metric_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - snprintf
    - flex_algo_lookup
    - SET_FLAG
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_prefix_metric_create(struct nb_cb_create_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3104,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3105,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3109,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3113,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3115,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:3119,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3129
      start: 3096
    functionDepth: 1
    functionLinenumber: 3096
    functionLinenumberEnd: 3129
    functionName: isis_instance_flex_algo_prefix_metric_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - snprintf
    - flex_algo_lookup
    - yang_dnode_get_string
    - UNSET_FLAG
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_prefix_metric_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3139,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3140,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3144,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3148,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3150,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:3154,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3155,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3159,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - args
    - type
    argTypes:
    - struct nb_cb_create_args*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3171
      start: 3131
    functionDepth: 1
    functionLinenumber: 3131
    functionLinenumberEnd: 3171
    functionName: isis_instance_flex_algo_dplane_set
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - snprintf
    - flex_algo_lookup
    - SET_FLAG
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_dplane_set(struct nb_cb_create_args *args,\n\t\t\t\t\t
      \     int type)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3181,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3182,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3186,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3190,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3192,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:3196,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - args
    - type
    argTypes:
    - struct nb_cb_destroy_args*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3206
      start: 3173
    functionDepth: 1
    functionLinenumber: 3173
    functionLinenumberEnd: 3206
    functionName: isis_instance_flex_algo_dplane_unset
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - snprintf
    - flex_algo_lookup
    - yang_dnode_get_string
    - UNSET_FLAG
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_dplane_unset(struct nb_cb_destroy_args
      *args,\n\t\t\t\t\t\tint type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_dplane_set
      Src: /src/frr/isisd/isis_nb_config.c:3215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3216
      start: 3212
    functionDepth: 2
    functionLinenumber: 3212
    functionLinenumberEnd: 3216
    functionName: isis_instance_flex_algo_dplane_sr_mpls_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_dplane_set
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_dplane_sr_mpls_create(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_dplane_unset
      Src: /src/frr/isisd/isis_nb_config.c:3221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3222
      start: 3218
    functionDepth: 2
    functionLinenumber: 3218
    functionLinenumberEnd: 3222
    functionName: isis_instance_flex_algo_dplane_sr_mpls_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_dplane_unset
    linkageType: ''
    returnType: int
    signature: "int isis_instance_flex_algo_dplane_sr_mpls_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_dplane_set
      Src: /src/frr/isisd/isis_nb_config.c:3230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3231
      start: 3228
    functionDepth: 2
    functionLinenumber: 3228
    functionLinenumberEnd: 3231
    functionName: isis_instance_flex_algo_dplane_srv6_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_dplane_set
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_dplane_srv6_create(struct nb_cb_create_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_dplane_unset
      Src: /src/frr/isisd/isis_nb_config.c:3235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3236
      start: 3233
    functionDepth: 2
    functionLinenumber: 3233
    functionLinenumberEnd: 3236
    functionName: isis_instance_flex_algo_dplane_srv6_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_dplane_unset
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_dplane_srv6_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_dplane_set
      Src: /src/frr/isisd/isis_nb_config.c:3244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3245
      start: 3242
    functionDepth: 2
    functionLinenumber: 3242
    functionLinenumberEnd: 3245
    functionName: isis_instance_flex_algo_dplane_ip_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_dplane_set
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_dplane_ip_create(struct nb_cb_create_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_instance_flex_algo_dplane_unset
      Src: /src/frr/isisd/isis_nb_config.c:3249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3250
      start: 3247
    functionDepth: 2
    functionLinenumber: 3247
    functionLinenumberEnd: 3250
    functionName: isis_instance_flex_algo_dplane_ip_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_instance_flex_algo_dplane_unset
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_dplane_ip_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3264,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3265,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3269,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:3270,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3274,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3276,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3281,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3290
      start: 3256
    functionDepth: 1
    functionLinenumber: 3256
    functionLinenumberEnd: 3290
    functionName: isis_instance_flex_algo_metric_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - snprintf
    - flex_algo_lookup
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - yang_dnode_get_enum
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_metric_type_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3304,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3305,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3309,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3310,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3314,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3316,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3321,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3330
      start: 3296
    functionDepth: 1
    functionLinenumber: 3296
    functionLinenumberEnd: 3330
    functionName: isis_instance_flex_algo_priority_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - snprintf
    - flex_algo_lookup
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_priority_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3340,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3341,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3345,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3346,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_nb_config.c:3350,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3352,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:3357,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3366
      start: 3332
    functionDepth: 1
    functionLinenumber: 3332
    functionLinenumberEnd: 3366
    functionName: isis_instance_flex_algo_priority_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - snprintf
    - flex_algo_lookup
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: int isis_instance_flex_algo_priority_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3378,1
    - Dst: lyd_parent
      Src: /src/frr/isisd/isis_nb_config.c:3379,1
    - Dst: lyd_parent
      Src: /src/frr/isisd/isis_nb_config.c:3379,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_nb_config.c:3381,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3382,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3391,1
    - Dst: isis_area_ldp_sync_enable
      Src: /src/frr/isisd/isis_nb_config.c:3392,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3396
      start: 3371
    functionDepth: 1
    functionLinenumber: 3371
    functionLinenumberEnd: 3396
    functionName: isis_instance_mpls_ldp_sync_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - snprintf
    - strcmp
    - nb_running_get_entry
    - yang_dnode_get_string
    - isis_area_ldp_sync_enable
    linkageType: ''
    returnType: int
    signature: int isis_instance_mpls_ldp_sync_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3405,1
    - Dst: isis_area_ldp_sync_disable
      Src: /src/frr/isisd/isis_nb_config.c:3406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3409
      start: 3398
    functionDepth: 1
    functionLinenumber: 3398
    functionLinenumberEnd: 3409
    functionName: isis_instance_mpls_ldp_sync_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - isis_area_ldp_sync_disable
    linkageType: ''
    returnType: int
    signature: int isis_instance_mpls_ldp_sync_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3422,1
    - Dst: lyd_parent
      Src: /src/frr/isisd/isis_nb_config.c:3423,1
    - Dst: lyd_parent
      Src: /src/frr/isisd/isis_nb_config.c:3423,1
    - Dst: lyd_parent
      Src: /src/frr/isisd/isis_nb_config.c:3423,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_nb_config.c:3426,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3427,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3436,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:3437,1
    - Dst: isis_area_ldp_sync_set_holddown
      Src: /src/frr/isisd/isis_nb_config.c:3438,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3442
      start: 3414
    functionDepth: 1
    functionLinenumber: 3414
    functionLinenumberEnd: 3442
    functionName: isis_instance_mpls_ldp_sync_holddown_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - snprintf
    - strcmp
    - nb_running_get_entry
    - yang_dnode_get_string
    - isis_area_ldp_sync_set_holddown
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: int
    signature: int isis_instance_mpls_ldp_sync_holddown_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3451,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3459,1
    - Dst: isis_circuit_new
      Src: /src/frr/isisd/isis_nb_config.c:3460,1
    - Dst: nb_running_set_entry
      Src: /src/frr/isisd/isis_nb_config.c:3461,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3466
      start: 3447
    functionDepth: 1
    functionLinenumber: 3447
    functionLinenumberEnd: 3466
    functionName: lib_interface_isis_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_get_string
    - isis_circuit_new
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/isisd/isis_nb_config.c:3475,1
    - Dst: isis_circuit_del
      Src: /src/frr/isisd/isis_nb_config.c:3477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3480
      start: 3468
    functionDepth: 1
    functionLinenumber: 3468
    functionLinenumberEnd: 3480
    functionName: lib_interface_isis_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_circuit_del
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry_non_rec
      Src: /src/frr/isisd/isis_nb_config.c:3490,1
    - Dst: lyd_parent
      Src: /src/frr/isisd/isis_nb_config.c:3490,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3500
      start: 3485
    functionDepth: 1
    functionLinenumber: 3485
    functionLinenumberEnd: 3500
    functionName: lib_interface_isis_area_tag_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry_non_rec
    - lyd_parent
    - snprintf
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_area_tag_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:3507,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3516,1
    - Dst: isis_circuit_is_type_set
      Src: /src/frr/isisd/isis_nb_config.c:3518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3523
      start: 3505
    functionDepth: 1
    functionLinenumber: 3505
    functionLinenumberEnd: 3523
    functionName: lib_interface_isis_circuit_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    - isis_circuit_is_type_set
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_circuit_type_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3536,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:3537,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:3538,1
    - Dst: isis_circuit_af_set
      Src: /src/frr/isisd/isis_nb_config.c:3539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3542
      start: 3528
    functionDepth: 1
    functionLinenumber: 3528
    functionLinenumberEnd: 3542
    functionName: lib_interface_isis_ipv4_routing_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - isis_circuit_af_set
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_ipv4_routing_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3555,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:3556,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:3557,1
    - Dst: isis_circuit_af_set
      Src: /src/frr/isisd/isis_nb_config.c:3558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3561
      start: 3547
    functionDepth: 1
    functionLinenumber: 3547
    functionLinenumberEnd: 3561
    functionName: lib_interface_isis_ipv6_routing_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - isis_circuit_af_set
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_ipv6_routing_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3571,1
    - Dst: isis_bfd_circuit_cmd
      Src: /src/frr/isisd/isis_nb_config.c:3572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3573
      start: 3566
    functionDepth: 1
    functionLinenumber: 3566
    functionLinenumberEnd: 3573
    functionName: lib_interface_isis_bfd_monitoring_apply_finish
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_bfd_circuit_cmd
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void lib_interface_isis_bfd_monitoring_apply_finish(\n\tstruct nb_cb_apply_finish_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3586,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:3587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3590
      start: 3578
    functionDepth: 1
    functionLinenumber: 3578
    functionLinenumberEnd: 3590
    functionName: lib_interface_isis_bfd_monitoring_enabled_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_bfd_monitoring_enabled_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3603,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_nb_config.c:3604,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_nb_config.c:3606,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3609
      start: 3595
    functionDepth: 1
    functionLinenumber: 3595
    functionLinenumberEnd: 3609
    functionName: lib_interface_isis_bfd_monitoring_profile_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_bfd_monitoring_profile_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3619,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_nb_config.c:3620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3623
      start: 3611
    functionDepth: 1
    functionLinenumber: 3611
    functionLinenumberEnd: 3623
    functionName: lib_interface_isis_bfd_monitoring_profile_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_bfd_monitoring_profile_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3636,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:3637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3640
      start: 3628
    functionDepth: 1
    functionLinenumber: 3628
    functionLinenumberEnd: 3640
    functionName: lib_interface_isis_csnp_interval_level_1_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_csnp_interval_level_1_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3653,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:3654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3657
      start: 3645
    functionDepth: 1
    functionLinenumber: 3645
    functionLinenumberEnd: 3657
    functionName: lib_interface_isis_csnp_interval_level_2_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_csnp_interval_level_2_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3670,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:3671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3674
      start: 3662
    functionDepth: 1
    functionLinenumber: 3662
    functionLinenumberEnd: 3674
    functionName: lib_interface_isis_psnp_interval_level_1_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_psnp_interval_level_1_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3687,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:3688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3691
      start: 3679
    functionDepth: 1
    functionLinenumber: 3679
    functionLinenumberEnd: 3691
    functionName: lib_interface_isis_psnp_interval_level_2_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_psnp_interval_level_2_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3703,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:3704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3707
      start: 3696
    functionDepth: 1
    functionLinenumber: 3696
    functionLinenumberEnd: 3707
    functionName: lib_interface_isis_hello_padding_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_hello_padding_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3721,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3722,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3726
      start: 3712
    functionDepth: 1
    functionLinenumber: 3712
    functionLinenumberEnd: 3726
    functionName: lib_interface_isis_hello_interval_level_1_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_hello_interval_level_1_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3740,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3745
      start: 3731
    functionDepth: 1
    functionLinenumber: 3731
    functionLinenumberEnd: 3745
    functionName: lib_interface_isis_hello_interval_level_2_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_hello_interval_level_2_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3759,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:3760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3764
      start: 3750
    functionDepth: 1
    functionLinenumber: 3750
    functionLinenumberEnd: 3764
    functionName: lib_interface_isis_hello_multiplier_level_1_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_hello_multiplier_level_1_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3778,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:3779,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3783
      start: 3769
    functionDepth: 1
    functionLinenumber: 3769
    functionLinenumberEnd: 3783
    functionName: lib_interface_isis_hello_multiplier_level_2_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_hello_multiplier_level_2_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3796,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3797,1
    - Dst: isis_circuit_metric_set
      Src: /src/frr/isisd/isis_nb_config.c:3798,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3801
      start: 3788
    functionDepth: 1
    functionLinenumber: 3788
    functionLinenumberEnd: 3801
    functionName: lib_interface_isis_metric_level_1_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_circuit_metric_set
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_metric_level_1_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3814,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:3815,1
    - Dst: isis_circuit_metric_set
      Src: /src/frr/isisd/isis_nb_config.c:3816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3819
      start: 3806
    functionDepth: 1
    functionLinenumber: 3806
    functionLinenumberEnd: 3819
    functionName: lib_interface_isis_metric_level_2_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_circuit_metric_set
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_metric_level_2_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3831,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/isisd/isis_nb_config.c:3832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3835
      start: 3824
    functionDepth: 1
    functionLinenumber: 3824
    functionLinenumberEnd: 3835
    functionName: lib_interface_isis_priority_level_1_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_priority_level_1_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3847,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/isisd/isis_nb_config.c:3848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3851
      start: 3840
    functionDepth: 1
    functionLinenumber: 3840
    functionLinenumberEnd: 3851
    functionName: lib_interface_isis_priority_level_2_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_priority_level_2_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:3859,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3863,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3867,1
    - Dst: if_is_broadcast
      Src: /src/frr/isisd/isis_nb_config.c:3874,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3875,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3885,1
    - Dst: isis_circuit_circ_type_set
      Src: /src/frr/isisd/isis_nb_config.c:3886,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3891
      start: 3856
    functionDepth: 1
    functionLinenumber: 3856
    functionLinenumberEnd: 3891
    functionName: lib_interface_isis_network_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - snprintf
    - nb_running_get_entry
    - yang_dnode_get_enum
    - isis_circuit_circ_type_set
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_network_type_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:3899,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3904,1
    - Dst: isis_circuit_passive_set
      Src: /src/frr/isisd/isis_nb_config.c:3905,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3908
      start: 3896
    functionDepth: 1
    functionLinenumber: 3896
    functionLinenumberEnd: 3908
    functionName: lib_interface_isis_passive_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - isis_circuit_passive_set
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_passive_modify(struct nb_cb_modify_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3916
      start: 3913
    functionDepth: 0
    functionLinenumber: 3913
    functionLinenumberEnd: 3916
    functionName: lib_interface_isis_password_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_password_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3925,1
    - Dst: isis_circuit_passwd_unset
      Src: /src/frr/isisd/isis_nb_config.c:3926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3929
      start: 3918
    functionDepth: 1
    functionLinenumber: 3918
    functionLinenumberEnd: 3929
    functionName: lib_interface_isis_password_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - isis_circuit_passwd_unset
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_password_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:3942,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3943,1
    - Dst: isis_circuit_passwd_set
      Src: /src/frr/isisd/isis_nb_config.c:3945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3948
      start: 3934
    functionDepth: 1
    functionLinenumber: 3934
    functionLinenumberEnd: 3948
    functionName: lib_interface_isis_password_password_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - isis_circuit_passwd_set
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_password_password_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_nb_config.c:3962,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3967
      start: 3953
    functionDepth: 1
    functionLinenumber: 3953
    functionLinenumberEnd: 3967
    functionName: lib_interface_isis_password_password_type_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_password_password_type_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3981,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:3982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3985
      start: 3973
    functionDepth: 1
    functionLinenumber: 3973
    functionLinenumberEnd: 3985
    functionName: lib_interface_isis_disable_three_way_handshake_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_disable_three_way_handshake_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:3996,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_config.c:3998,1
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4008,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4009,1
    - Dst: isis_circuit_mt_enabled_set
      Src: /src/frr/isisd/isis_nb_config.c:4010,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 5
    argNames:
    - event
    - dnode
    - errmsg
    - errmsg_len
    - mtid
    argTypes:
    - enum nb_event
    - struct lyd_node*
    - char*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4015
      start: 3987
    functionDepth: 1
    functionLinenumber: 3987
    functionLinenumberEnd: 4015
    functionName: lib_interface_isis_multi_topology_common
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - isis_circuit_mt_enabled_set
    - nb_running_get_entry
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_common(\n\tenum nb_event event,
      const struct lyd_node *dnode, char *errmsg,\n\tsize_t errmsg_len, uint16_t mtid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_interface_isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:4024,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4027
      start: 4021
    functionDepth: 2
    functionLinenumber: 4021
    functionLinenumberEnd: 4027
    functionName: lib_interface_isis_multi_topology_standard_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_interface_isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_standard_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_interface_isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:4036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4039
      start: 4033
    functionDepth: 2
    functionLinenumber: 4033
    functionLinenumberEnd: 4039
    functionName: lib_interface_isis_multi_topology_ipv4_multicast_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_interface_isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_ipv4_multicast_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_interface_isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:4048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4051
      start: 4045
    functionDepth: 2
    functionLinenumber: 4045
    functionLinenumberEnd: 4051
    functionName: lib_interface_isis_multi_topology_ipv4_management_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_interface_isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_ipv4_management_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_interface_isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:4060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4063
      start: 4057
    functionDepth: 2
    functionLinenumber: 4057
    functionLinenumberEnd: 4063
    functionName: lib_interface_isis_multi_topology_ipv6_unicast_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_interface_isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_ipv6_unicast_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_interface_isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:4072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4075
      start: 4069
    functionDepth: 2
    functionLinenumber: 4069
    functionLinenumberEnd: 4075
    functionName: lib_interface_isis_multi_topology_ipv6_multicast_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_interface_isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_ipv6_multicast_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_interface_isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:4084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4087
      start: 4081
    functionDepth: 2
    functionLinenumber: 4081
    functionLinenumberEnd: 4087
    functionName: lib_interface_isis_multi_topology_ipv6_management_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_interface_isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_ipv6_management_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_interface_isis_multi_topology_common
      Src: /src/frr/isisd/isis_nb_config.c:4095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4098
      start: 4092
    functionDepth: 2
    functionLinenumber: 4092
    functionLinenumberEnd: 4098
    functionName: lib_interface_isis_multi_topology_ipv6_dstsrc_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_interface_isis_multi_topology_common
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_multi_topology_ipv6_dstsrc_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4115,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4116,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:4120,1
    - Dst: isis_if_ldp_sync_enable
      Src: /src/frr/isisd/isis_nb_config.c:4125,1
    - Dst: isis_if_ldp_sync_disable
      Src: /src/frr/isisd/isis_nb_config.c:4127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4132
      start: 4103
    functionDepth: 1
    functionLinenumber: 4103
    functionLinenumberEnd: 4132
    functionName: lib_interface_isis_mpls_ldp_sync_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - isis_if_ldp_sync_enable
    - nb_running_get_entry
    - SET_FLAG
    - isis_if_ldp_sync_disable
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_mpls_ldp_sync_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4149,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/isisd/isis_nb_config.c:4150,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:4154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4159
      start: 4137
    functionDepth: 1
    functionLinenumber: 4137
    functionLinenumberEnd: 4159
    functionName: lib_interface_isis_mpls_holddown_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_mpls_holddown_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4172,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_nb_config.c:4175,1
    - Dst: isis_if_set_ldp_sync_holddown
      Src: /src/frr/isisd/isis_nb_config.c:4178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4183
      start: 4161
    functionDepth: 1
    functionLinenumber: 4161
    functionLinenumberEnd: 4183
    functionName: lib_interface_isis_mpls_holddown_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    - nb_running_get_entry
    - isis_if_set_ldp_sync_holddown
    linkageType: ''
    returnType: int
    signature: int lib_interface_isis_mpls_holddown_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4198,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4199,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:4206,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts:
    - condition: (area->lfa_protected_links[0] > 0)
      pos:
        line_end: 4205
        line_start: 4205
        source_file: /src/frr/isisd/isis_nb_config.c
    constantsTouched: []
    func_position:
      end: 4214
      start: 4189
    functionDepth: 1
    functionLinenumber: 4189
    functionLinenumberEnd: 4214
    functionName: lib_interface_isis_fast_reroute_level_1_lfa_enable_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_lfa_enable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4230,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:4231,1
    - Dst: isis_lfa_excluded_iface_add
      Src: /src/frr/isisd/isis_nb_config.c:4233,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4239
      start: 4220
    functionDepth: 1
    functionLinenumber: 4220
    functionLinenumberEnd: 4239
    functionName: lib_interface_isis_fast_reroute_level_1_lfa_exclude_interface_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_lfa_excluded_iface_add
    - lsp_regenerate_schedule
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_lfa_exclude_interface_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4251,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:4252,1
    - Dst: isis_lfa_excluded_iface_delete
      Src: /src/frr/isisd/isis_nb_config.c:4254,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4260
      start: 4241
    functionDepth: 1
    functionLinenumber: 4241
    functionLinenumberEnd: 4260
    functionName: lib_interface_isis_fast_reroute_level_1_lfa_exclude_interface_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_lfa_excluded_iface_delete
    - yang_dnode_get_string
    - nb_running_get_entry
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_lfa_exclude_interface_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4275,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4276,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:4283,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts:
    - condition: (area->rlfa_protected_links[0] > 0)
      pos:
        line_end: 4282
        line_start: 4282
        source_file: /src/frr/isisd/isis_nb_config.c
    constantsTouched: []
    func_position:
      end: 4291
      start: 4266
    functionDepth: 1
    functionLinenumber: 4266
    functionLinenumberEnd: 4291
    functionName: lib_interface_isis_fast_reroute_level_1_remote_lfa_enable_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_remote_lfa_enable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4306,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:4307,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4314
      start: 4297
    functionDepth: 1
    functionLinenumber: 4297
    functionLinenumberEnd: 4314
    functionName: lib_interface_isis_fast_reroute_level_1_remote_lfa_maximum_metric_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_remote_lfa_maximum_metric_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4325,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4333
      start: 4316
    functionDepth: 1
    functionLinenumber: 4316
    functionLinenumberEnd: 4333
    functionName: lib_interface_isis_fast_reroute_level_1_remote_lfa_maximum_metric_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_remote_lfa_maximum_metric_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4348,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4349,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:4356,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts:
    - condition: (area->tilfa_protected_links[0] > 0)
      pos:
        line_end: 4355
        line_start: 4355
        source_file: /src/frr/isisd/isis_nb_config.c
    constantsTouched: []
    func_position:
      end: 4364
      start: 4339
    functionDepth: 1
    functionLinenumber: 4339
    functionLinenumberEnd: 4364
    functionName: lib_interface_isis_fast_reroute_level_1_ti_lfa_enable_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_ti_lfa_enable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4379,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4381,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4388
      start: 4370
    functionDepth: 1
    functionLinenumber: 4370
    functionLinenumberEnd: 4388
    functionName: lib_interface_isis_fast_reroute_level_1_ti_lfa_node_protection_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_ti_lfa_node_protection_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4403,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4405,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4412
      start: 4394
    functionDepth: 1
    functionLinenumber: 4394
    functionLinenumberEnd: 4412
    functionName: lib_interface_isis_fast_reroute_level_1_ti_lfa_link_fallback_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_1_ti_lfa_link_fallback_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4427,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4428,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:4435,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts:
    - condition: (area->lfa_protected_links[1] > 0)
      pos:
        line_end: 4434
        line_start: 4434
        source_file: /src/frr/isisd/isis_nb_config.c
    constantsTouched: []
    func_position:
      end: 4443
      start: 4418
    functionDepth: 1
    functionLinenumber: 4418
    functionLinenumberEnd: 4443
    functionName: lib_interface_isis_fast_reroute_level_2_lfa_enable_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_lfa_enable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4459,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:4460,1
    - Dst: isis_lfa_excluded_iface_add
      Src: /src/frr/isisd/isis_nb_config.c:4462,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4468
      start: 4449
    functionDepth: 1
    functionLinenumber: 4449
    functionLinenumberEnd: 4468
    functionName: lib_interface_isis_fast_reroute_level_2_lfa_exclude_interface_create
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_lfa_excluded_iface_add
    - lsp_regenerate_schedule
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_lfa_exclude_interface_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4480,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_nb_config.c:4481,1
    - Dst: isis_lfa_excluded_iface_delete
      Src: /src/frr/isisd/isis_nb_config.c:4483,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4489
      start: 4470
    functionDepth: 1
    functionLinenumber: 4470
    functionLinenumberEnd: 4489
    functionName: lib_interface_isis_fast_reroute_level_2_lfa_exclude_interface_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - isis_lfa_excluded_iface_delete
    - yang_dnode_get_string
    - nb_running_get_entry
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_lfa_exclude_interface_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4504,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4505,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:4512,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts:
    - condition: (area->rlfa_protected_links[1] > 0)
      pos:
        line_end: 4511
        line_start: 4511
        source_file: /src/frr/isisd/isis_nb_config.c
    constantsTouched: []
    func_position:
      end: 4520
      start: 4495
    functionDepth: 1
    functionLinenumber: 4495
    functionLinenumberEnd: 4520
    functionName: lib_interface_isis_fast_reroute_level_2_remote_lfa_enable_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_remote_lfa_enable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4535,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_nb_config.c:4536,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4543
      start: 4526
    functionDepth: 1
    functionLinenumber: 4526
    functionLinenumberEnd: 4543
    functionName: lib_interface_isis_fast_reroute_level_2_remote_lfa_maximum_metric_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_remote_lfa_maximum_metric_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4554,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4562
      start: 4545
    functionDepth: 1
    functionLinenumber: 4545
    functionLinenumberEnd: 4562
    functionName: lib_interface_isis_fast_reroute_level_2_remote_lfa_maximum_metric_destroy
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_remote_lfa_maximum_metric_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4577,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4578,1
    - Dst: assert
      Src: /src/frr/isisd/isis_nb_config.c:4585,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts:
    - condition: (area->tilfa_protected_links[1] > 0)
      pos:
        line_end: 4584
        line_start: 4584
        source_file: /src/frr/isisd/isis_nb_config.c
    constantsTouched: []
    func_position:
      end: 4593
      start: 4568
    functionDepth: 1
    functionLinenumber: 4568
    functionLinenumberEnd: 4593
    functionName: lib_interface_isis_fast_reroute_level_2_ti_lfa_enable_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_ti_lfa_enable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4608,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4610,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4617
      start: 4599
    functionDepth: 1
    functionLinenumber: 4599
    functionLinenumberEnd: 4617
    functionName: lib_interface_isis_fast_reroute_level_2_ti_lfa_node_protection_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_ti_lfa_node_protection_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/isisd/isis_nb_config.c:4632,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_nb_config.c:4634,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_nb_config.c:4638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4641
      start: 4623
    functionDepth: 1
    functionLinenumber: 4623
    functionLinenumberEnd: 4641
    functionName: lib_interface_isis_fast_reroute_level_2_ti_lfa_link_fallback_modify
    functionSourceFile: /src/frr/isisd/isis_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - lsp_regenerate_schedule
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_isis_fast_reroute_level_2_ti_lfa_link_fallback_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - queue
    - ','
    - lsp
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: isis_tx_queue_add
    functionSourceFile: /src/frr/isisd/isis_tx_queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isis_tx_queue_add(queue, lsp, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - queue
    - ','
    - lsp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: isis_tx_queue_del
    functionSourceFile: /src/frr/isisd/isis_tx_queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isis_tx_queue_del(queue, lsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - log
    - ','
    - indent
    - ','
    - target
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: TLV_SIZE_MISMATCH
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_SIZE_MISMATCH(log, indent, target)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - t
    - ','
    - h
    - ','
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: PACK_ENTRY
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PACK_ENTRY(t, h, w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_tlvs.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mtid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: isis_mtid2str_fake
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isis_mtid2str
    linkageType: ''
    returnType: char
    signature: char *isis_mtid2str_fake(uint16_t mtid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:125,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:126,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:127,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_tlvs.c:128,1
    - Dst: admin_group_init
      Src: /src/frr/isisd/isis_tlvs.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 133
    functionName: isis_alloc_ext_subtlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - list_new
    - admin_group_init
    - init_item_list
    - XCALLOC
    linkageType: ''
    returnType: struct isis_ext_subtlvs
    signature: struct isis_ext_subtlvs *isis_alloc_ext_subtlvs(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:147,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:151,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_tlvs.c:154,1
    - Dst: isis_tlvs_del_asla_flex_algo
      Src: /src/frr/isisd/isis_tlvs.c:155,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_tlvs.c:157,1
    - Dst: admin_group_term
      Src: /src/frr/isisd/isis_tlvs.c:159,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:161,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:172,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:237,1
    - Dst: SET_SUBTLV::SET_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:237,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_tlvs.c:241,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_tlvs.c:243,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:244,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:249,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_tlvs.c:252,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:256,1
    - Dst: format_item_asla_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:261,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:266,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:267,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:270,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:275,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:277,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:279,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:281,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:283,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:284,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:287,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:288,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:290,1
    - Dst: admin_group_standard_print
      Src: /src/frr/isisd/isis_tlvs.c:291,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:293,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:296,1
    - Dst: admin_group_nb_words
      Src: /src/frr/isisd/isis_tlvs.c:297,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:298,1
    - Dst: admin_group_string
      Src: /src/frr/isisd/isis_tlvs.c:299,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:301,1
    - Dst: admin_group_print
      Src: /src/frr/isisd/isis_tlvs.c:303,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:304,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:307,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:309,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:312,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:313,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:315,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:316,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:319,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:320,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:322,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:329,1
    - Dst: struct isis_asla_subtlvs*::te_metric
      Src: /src/frr/isisd/isis_tlvs.c:331,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:333,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:334,1
    - Dst: IS_ANORMAL
      Src: /src/frr/isisd/isis_tlvs.c:336,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:338,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:339,1
    - Dst: IS_ANORMAL
      Src: /src/frr/isisd/isis_tlvs.c:341,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:345,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:346,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:349,1
    - Dst: IS_ANORMAL
      Src: /src/frr/isisd/isis_tlvs.c:351,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:354,1
    - Dst: if
      Src: /src/frr/isisd/isis_tlvs.c:441,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:442,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:444,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:447,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:451,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:453,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:455,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:458,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:462,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:464,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:466,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:469,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:473,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:475,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:477,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:480,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:484,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:486,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:488,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:491,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:496,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:499,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:500,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:503,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:504,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:506,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:512,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:520,1
    - Dst: if
      Src: /src/frr/isisd/isis_tlvs.c:521,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:522,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:524,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:528,1
    - Dst: remote_as
      Src: /src/frr/isisd/isis_tlvs.c:535,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:537,1
    - Dst: if
      Src: /src/frr/isisd/isis_tlvs.c:538,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:539,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:541,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:544,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:549,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:554,1
    - Dst: IS_ANORMAL
      Src: /src/frr/isisd/isis_tlvs.c:555,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:558,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 22
    argCount: 1
    argNames:
    - ext
    argTypes:
    - struct isis_ext_subtlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 559
    functionName: isis_del_ext_subtlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - strlen
    - list_delete
    - listnode_add
    - json_object_string_add
    - admin_group_copy
    - format_item_asla_subtlvs
    - admin_group_term
    - IS_ANORMAL
    - XCALLOC
    - append_item
    - admin_group_string
    - sbuf_push
    - inet_ntop
    - if
    - IS_SUBTLV
    - admin_group_nb_words
    - json_object_int_add
    - admin_group_standard_print
    - SET_SUBTLV::SET_SUBTLV
    - XFREE
    - admin_group_print
    - json_object_new_object
    - remote_as
    - isis_tlvs_del_asla_flex_algo
    - snprintfrr
    - struct isis_asla_subtlvs*::te_metric
    - list_new
    - json_object_object_add
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void isis_del_ext_subtlvs(struct isis_ext_subtlvs *ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1972
      start: 1971
    functionDepth: 0
    functionLinenumber: 1971
    functionLinenumberEnd: 1972
    functionName: pack_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pack_items(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:1979,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:1982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - context
    argTypes:
    - enum isis_tlv_context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1975
    functionDepth: 1
    functionLinenumber: 1975
    functionLinenumberEnd: 1985
    functionName: isis_alloc_subtlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - init_item_list
    - XCALLOC
    linkageType: ''
    returnType: struct isis_subtlvs
    signature: struct isis_subtlvs *isis_alloc_subtlvs(enum isis_tlv_context context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:1992,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:1996,1
    - Dst: copy_subtlv_ipv6_source_prefix
      Src: /src/frr/isisd/isis_tlvs.c:2000,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - subtlvs
    argTypes:
    - struct isis_subtlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1987
    functionDepth: 1
    functionLinenumber: 1987
    functionLinenumberEnd: 2002
    functionName: copy_subtlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - copy_subtlv_ipv6_source_prefix
    - copy_items
    - XCALLOC
    linkageType: ''
    returnType: struct isis_subtlvs
    signature: struct isis_subtlvs *copy_subtlvs(struct isis_subtlvs *subtlvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:2007,1
    - Dst: format_subtlv_ipv6_source_prefix
      Src: /src/frr/isisd/isis_tlvs.c:2010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - subtlvs
    - buf
    - json
    - indent
    argTypes:
    - struct isis_subtlvs*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 2004
    functionDepth: 0
    functionLinenumber: 2004
    functionLinenumberEnd: 2011
    functionName: format_subtlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - format_items
    - format_subtlv_ipv6_source_prefix
    linkageType: ''
    returnType: void
    signature: "void format_subtlvs(struct isis_subtlvs *subtlvs, struct sbuf *buf,\n\t\t\t
      \  struct json_object *json, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:2018,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2021,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - subtlvs
    argTypes:
    - struct isis_subtlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2013
    functionDepth: 1
    functionLinenumber: 2013
    functionLinenumberEnd: 2024
    functionName: isis_free_subtlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    - free_items
    linkageType: ''
    returnType: void
    signature: void isis_free_subtlvs(struct isis_subtlvs *subtlvs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:2029,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2031,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2034,1
    - Dst: pack_items
      Src: /src/frr/isisd/isis_tlvs.c:2036,1
    - Dst: pack_subtlv_ipv6_source_prefix
      Src: /src/frr/isisd/isis_tlvs.c:2041,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:2045,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_tlvs.c:2049,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - subtlvs
    - s
    argTypes:
    - struct isis_subtlvs*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 2026
    functionDepth: 1
    functionLinenumber: 2026
    functionLinenumberEnd: 2051
    functionName: pack_subtlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - pack_items
    - STREAM_WRITEABLE
    - stream_get_endp
    - pack_subtlv_ipv6_source_prefix
    - stream_putc_at
    - stream_putc
    linkageType: ''
    returnType: int
    signature: int pack_subtlvs(struct isis_subtlvs *subtlvs, struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2062,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:2065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2059
    functionDepth: 0
    functionLinenumber: 2059
    functionLinenumberEnd: 2067
    functionName: copy_item_area_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_area_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:2076,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_tlvs.c:2079,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2069
    functionDepth: 1
    functionLinenumber: 2069
    functionLinenumberEnd: 2082
    functionName: format_item_area_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - sbuf_push
    - memcpy
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void format_item_area_address(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \    struct sbuf *buf, struct json_object *json,\n\t\t\t\t     int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2084
    functionDepth: 0
    functionLinenumber: 2084
    functionLinenumberEnd: 2087
    functionName: free_item_area_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_area_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2094,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2098,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2099,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2089
    functionDepth: 1
    functionLinenumber: 2089
    functionLinenumberEnd: 2101
    functionName: pack_item_area_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_item_area_address(struct isis_item *i, struct stream *s,\n\t\t\t\t
      \ size_t *min_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2110,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2112,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2119,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:2120,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2123,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2129,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2135,1
    - Dst: format_item_area_address
      Src: /src/frr/isisd/isis_tlvs.c:2137,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2139,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2142,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2103
    functionDepth: 2
    functionLinenumber: 2103
    functionLinenumberEnd: 2144
    functionName: unpack_item_area_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - format_item_area_address
    - XCALLOC
    - append_item
    - sbuf_push
    - stream_get
    - XFREE
    - stream_getc
    linkageType: ''
    returnType: int
    signature: "int unpack_item_area_address(uint16_t mtid, uint8_t len,\n\t\t\t\t
      \   struct stream *s, struct sbuf *log,\n\t\t\t\t    void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2150,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:2152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2155
      start: 2147
    functionDepth: 0
    functionLinenumber: 2147
    functionLinenumberEnd: 2155
    functionName: copy_item_oldstyle_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_oldstyle_reach(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:2164,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:2167,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:2168,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2169,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:2170,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2157
    functionDepth: 1
    functionLinenumber: 2157
    functionLinenumberEnd: 2174
    functionName: format_item_oldstyle_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - snprintfrr
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void format_item_oldstyle_reach(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \      struct sbuf *buf,\n\t\t\t\t       struct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2176
    functionDepth: 0
    functionLinenumber: 2176
    functionLinenumberEnd: 2179
    functionName: free_item_oldstyle_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_oldstyle_reach(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2186,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2191,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2192,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2193,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2194,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2198
      start: 2181
    functionDepth: 1
    functionLinenumber: 2181
    functionLinenumberEnd: 2198
    functionName: pack_item_oldstyle_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_item_oldstyle_reach(struct isis_item *i, struct stream *s,\n\t\t\t\t
      \   size_t *min_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2206,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2208,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2215,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:2216,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2218,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:2221,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2222,1
    - Dst: format_item_oldstyle_reach
      Src: /src/frr/isisd/isis_tlvs.c:2224,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2228
      start: 2200
    functionDepth: 2
    functionLinenumber: 2200
    functionLinenumberEnd: 2228
    functionName: unpack_item_oldstyle_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_forward_getp
    - XCALLOC
    - format_item_oldstyle_reach
    - append_item
    - sbuf_push
    - stream_get
    - stream_getc
    linkageType: ''
    returnType: int
    signature: "int unpack_item_oldstyle_reach(uint16_t mtid, uint8_t len,\n\t\t\t\t
      \     struct stream *s, struct sbuf *log,\n\t\t\t\t      void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2234,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:2236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2238
      start: 2231
    functionDepth: 0
    functionLinenumber: 2231
    functionLinenumberEnd: 2238
    functionName: copy_item_lan_neighbor
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_lan_neighbor(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:2247,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2249,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2240
    functionDepth: 1
    functionLinenumber: 2240
    functionLinenumberEnd: 2252
    functionName: format_item_lan_neighbor
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - sbuf_push
    - json_object_string_add
    - snprintfrr
    linkageType: ''
    returnType: void
    signature: "void format_item_lan_neighbor(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \    struct sbuf *buf, struct json_object *json,\n\t\t\t\t     int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2254
    functionDepth: 0
    functionLinenumber: 2254
    functionLinenumberEnd: 2257
    functionName: free_item_lan_neighbor
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_lan_neighbor(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2264,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2272
      start: 2259
    functionDepth: 1
    functionLinenumber: 2259
    functionLinenumberEnd: 2272
    functionName: pack_item_lan_neighbor
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - STREAM_WRITEABLE
    - stream_put
    linkageType: ''
    returnType: int
    signature: "int pack_item_lan_neighbor(struct isis_item *i, struct stream *s,\n\t\t\t\t
      \ size_t *min_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2280,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2282,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2289,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2290,1
    - Dst: format_item_lan_neighbor
      Src: /src/frr/isisd/isis_tlvs.c:2292,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2295
      start: 2274
    functionDepth: 2
    functionLinenumber: 2274
    functionLinenumberEnd: 2295
    functionName: unpack_item_lan_neighbor
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - append_item
    - sbuf_push
    - stream_get
    - format_item_lan_neighbor
    linkageType: ''
    returnType: int
    signature: "int unpack_item_lan_neighbor(uint16_t mtid, uint8_t len,\n\t\t\t\t
      \   struct stream *s, struct sbuf *log,\n\t\t\t\t    void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2301,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:2304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2309
      start: 2298
    functionDepth: 0
    functionLinenumber: 2298
    functionLinenumberEnd: 2309
    functionName: copy_item_lsp_entry
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_lsp_entry(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:2318,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:2322,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:2323,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2324,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:2325,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2326,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:2327,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2328,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:2329,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2335
      start: 2311
    functionDepth: 1
    functionLinenumber: 2311
    functionLinenumberEnd: 2335
    functionName: format_item_lsp_entry
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - snprintfrr
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void format_item_lsp_entry(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \ struct sbuf *buf, struct json_object *json,\n\t\t\t\t  int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2337
    functionDepth: 0
    functionLinenumber: 2337
    functionLinenumberEnd: 2340
    functionName: free_item_lsp_entry
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_lsp_entry(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2347,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_tlvs.c:2352,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2353,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:2354,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_tlvs.c:2355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2342
    functionDepth: 1
    functionLinenumber: 2342
    functionLinenumberEnd: 2358
    functionName: pack_item_lsp_entry
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putw
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int pack_item_lsp_entry(struct isis_item *i, struct stream *s,\n\t\t\t
      \      size_t *min_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2365,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2367,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2374,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_tlvs.c:2375,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2376,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:2377,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_tlvs.c:2378,1
    - Dst: format_item_lsp_entry
      Src: /src/frr/isisd/isis_tlvs.c:2380,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2383
      start: 2360
    functionDepth: 2
    functionLinenumber: 2360
    functionLinenumberEnd: 2383
    functionName: unpack_item_lsp_entry
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - append_item
    - format_item_lsp_entry
    - stream_getw
    - sbuf_push
    - stream_get
    - stream_getl
    linkageType: ''
    returnType: int
    signature: "int unpack_item_lsp_entry(uint16_t mtid, uint8_t len, struct stream
      *s,\n\t\t\t\t struct sbuf *log, void *dest, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2390,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:2392,1
    - Dst: copy_item_ext_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:2396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2387
    functionDepth: 0
    functionLinenumber: 2387
    functionLinenumberEnd: 2399
    functionName: copy_item_extended_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - copy_item_ext_subtlvs
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_extended_reach(struct isis_item *i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:2408,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:2411,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:2412,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2413,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2416,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:2417,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2419,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_tlvs.c:2420,1
    - Dst: format_item_ext_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:2423,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2426,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2430,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_tlvs.c:2430,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2431,1
    - Dst: format_item_ext_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:2434,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2401
    functionDepth: 1
    functionLinenumber: 2401
    functionLinenumberEnd: 2437
    functionName: format_item_extended_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - format_item_ext_subtlvs
    - snprintfrr
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    - isis_mtid2str
    linkageType: ''
    returnType: void
    signature: "void format_item_extended_reach(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \      struct sbuf *buf,\n\t\t\t\t       struct json_object *json, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free_item_ext_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:2444,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2446
      start: 2439
    functionDepth: 0
    functionLinenumber: 2439
    functionLinenumberEnd: 2446
    functionName: free_item_extended_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - free_item_ext_subtlvs
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_extended_reach(struct isis_item *i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2455,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2460,1
    - Dst: stream_put3
      Src: /src/frr/isisd/isis_tlvs.c:2461,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:2462,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2464,1
    - Dst: pack_item_ext_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:2466,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:2468,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_tlvs.c:2469,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2471
      start: 2448
    functionDepth: 1
    functionLinenumber: 2448
    functionLinenumberEnd: 2471
    functionName: pack_item_extended_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - pack_item_ext_subtlvs
    - STREAM_WRITEABLE
    - stream_get_endp
    - stream_put3
    - stream_putc_at
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_item_extended_reach(struct isis_item *i, struct stream *s,\n\t\t\t\t
      \   size_t *min_len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:2485,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2488,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2492,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2498,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2499,1
    - Dst: stream_get3
      Src: /src/frr/isisd/isis_tlvs.c:2500,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:2501,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2504,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2510,1
    - Dst: unpack_item_ext_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:2514,1
    - Dst: format_item_extended_reach
      Src: /src/frr/isisd/isis_tlvs.c:2520,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2522,1
    - Dst: free_item_extended_reach
      Src: /src/frr/isisd/isis_tlvs.c:2526,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2529
      start: 2473
    functionDepth: 2
    functionLinenumber: 2473
    functionLinenumberEnd: 2529
    functionName: unpack_item_extended_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - free_item_extended_reach
    - XCALLOC
    - append_item
    - format_item_extended_reach
    - stream_get3
    - unpack_item_ext_subtlvs
    - sbuf_push
    - stream_get
    - stream_getc
    - isis_get_mt_items
    linkageType: ''
    returnType: int
    signature: "int unpack_item_extended_reach(uint16_t mtid, uint8_t len,\n\t\t\t\t
      \     struct stream *s, struct sbuf *log,\n\t\t\t\t      void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2541
      start: 2532
    functionDepth: 0
    functionLinenumber: 2532
    functionLinenumberEnd: 2541
    functionName: copy_item_oldstyle_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_oldstyle_ip_reach(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:2552,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:2553,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2554,1
    - Dst: prefix2str
      Src: /src/frr/isisd/isis_tlvs.c:2555,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:2556,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2558,1
    - Dst: prefix2str
      Src: /src/frr/isisd/isis_tlvs.c:2559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2561
      start: 2543
    functionDepth: 1
    functionLinenumber: 2543
    functionLinenumberEnd: 2561
    functionName: format_item_oldstyle_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void format_item_oldstyle_ip_reach(uint16_t mtid, struct isis_item
      *i,\n\t\t\t\t\t  struct sbuf *buf,\n\t\t\t\t\t  struct json_object *json, int
      indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2566
      start: 2563
    functionDepth: 0
    functionLinenumber: 2563
    functionLinenumberEnd: 2566
    functionName: free_item_oldstyle_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_oldstyle_ip_reach(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2573,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2578,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2579,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2580,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2581,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2582,1
    - Dst: masklen2ip
      Src: /src/frr/isisd/isis_tlvs.c:2585,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2586,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2568
    functionDepth: 1
    functionLinenumber: 2568
    functionLinenumberEnd: 2589
    functionName: pack_item_oldstyle_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    - masklen2ip
    linkageType: ''
    returnType: int
    signature: "int pack_item_oldstyle_ip_reach(struct isis_item *i, struct stream
      *s,\n\t\t\t\t       size_t *min_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2595,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2597,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2605,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:2606,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2608,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:2611,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2613,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2616,1
    - Dst: ip_masklen
      Src: /src/frr/isisd/isis_tlvs.c:2617,1
    - Dst: format_item_oldstyle_ip_reach
      Src: /src/frr/isisd/isis_tlvs.c:2619,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2591
    functionDepth: 2
    functionLinenumber: 2591
    functionLinenumberEnd: 2623
    functionName: unpack_item_oldstyle_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_forward_getp
    - XCALLOC
    - append_item
    - format_item_oldstyle_ip_reach
    - ip_masklen
    - sbuf_push
    - stream_get
    - stream_getc
    linkageType: ''
    returnType: int
    signature: "int unpack_item_oldstyle_ip_reach(uint16_t mtid, uint8_t len,\n\t\t\t\t\t
      struct stream *s, struct sbuf *log,\n\t\t\t\t\t void *dest, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2634,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:2635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - src
    - dest
    argTypes:
    - struct isis_protocols_supported*
    - struct isis_protocols_supported*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2628
    functionDepth: 0
    functionLinenumber: 2628
    functionLinenumberEnd: 2636
    functionName: copy_tlv_protocols_supported
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void copy_tlv_protocols_supported(struct isis_protocols_supported
      *src,\n\t\t\t\t\t struct isis_protocols_supported *dest)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:2649,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:2650,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:2653,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2654,1
    - Dst: nlpid2str
      Src: /src/frr/isisd/isis_tlvs.c:2655,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2658,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2660,1
    - Dst: nlpid2str
      Src: /src/frr/isisd/isis_tlvs.c:2660,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2663,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - p
    - buf
    - json
    - indent
    argTypes:
    - struct isis_protocols_supported*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2665
      start: 2638
    functionDepth: 1
    functionLinenumber: 2638
    functionLinenumberEnd: 2665
    functionName: format_tlv_protocols_supported
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - snprintfrr
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    - nlpid2str
    linkageType: ''
    returnType: void
    signature: "void format_tlv_protocols_supported(struct isis_protocols_supported
      *p,\n\t\t\t\t\t   struct sbuf *buf,\n\t\t\t\t\t   struct json_object *json,
      int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct isis_protocols_supported*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2670
      start: 2667
    functionDepth: 0
    functionLinenumber: 2667
    functionLinenumberEnd: 2670
    functionName: free_tlv_protocols_supported
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_protocols_supported(struct isis_protocols_supported *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2678,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2681,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:2682,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2683,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - p
    - s
    argTypes:
    - struct isis_protocols_supported*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2672
    functionDepth: 1
    functionLinenumber: 2672
    functionLinenumberEnd: 2685
    functionName: pack_tlv_protocols_supported
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_tlv_protocols_supported(struct isis_protocols_supported *p,\n\t\t\t\t\tstruct
      stream *s)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2694,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2696,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2700,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:2703,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2708,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2709,1
    - Dst: format_tlv_protocols_supported
      Src: /src/frr/isisd/isis_tlvs.c:2711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2714
      start: 2687
    functionDepth: 2
    functionLinenumber: 2687
    functionLinenumberEnd: 2714
    functionName: unpack_tlv_protocols_supported
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - stream_forward_getp
    - format_tlv_protocols_supported
    - sbuf_push
    - stream_get
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_protocols_supported(enum isis_tlv_context context,\n\t\t\t\t\t
      \ uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t\t  struct stream *s, struct sbuf
      *log,\n\t\t\t\t\t  void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2724
      start: 2717
    functionDepth: 0
    functionLinenumber: 2717
    functionLinenumberEnd: 2724
    functionName: copy_item_ipv4_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_ipv4_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:2733,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2735,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2739
      start: 2726
    functionDepth: 1
    functionLinenumber: 2726
    functionLinenumberEnd: 2739
    functionName: format_item_ipv4_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - json_object_string_add
    - sbuf_push
    linkageType: ''
    returnType: void
    signature: "void format_item_ipv4_address(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \    struct sbuf *buf, struct json_object *json,\n\t\t\t\t     int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2741
    functionDepth: 0
    functionLinenumber: 2741
    functionLinenumberEnd: 2744
    functionName: free_item_ipv4_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_ipv4_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2751,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2756,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2746
    functionDepth: 1
    functionLinenumber: 2746
    functionLinenumberEnd: 2759
    functionName: pack_item_ipv4_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - STREAM_WRITEABLE
    - stream_put
    linkageType: ''
    returnType: int
    signature: "int pack_item_ipv4_address(struct isis_item *i, struct stream *s,\n\t\t\t\t
      \ size_t *min_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2767,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2769,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2776,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2777,1
    - Dst: format_item_ipv4_address
      Src: /src/frr/isisd/isis_tlvs.c:2779,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2761
    functionDepth: 2
    functionLinenumber: 2761
    functionLinenumberEnd: 2782
    functionName: unpack_item_ipv4_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - append_item
    - sbuf_push
    - stream_get
    - format_item_ipv4_address
    linkageType: ''
    returnType: int
    signature: "int unpack_item_ipv4_address(uint16_t mtid, uint8_t len,\n\t\t\t\t
      \   struct stream *s, struct sbuf *log,\n\t\t\t\t    void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2786
    functionDepth: 0
    functionLinenumber: 2786
    functionLinenumberEnd: 2793
    functionName: copy_item_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_ipv6_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:2802,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2804,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2795
    functionDepth: 1
    functionLinenumber: 2795
    functionLinenumberEnd: 2807
    functionName: format_item_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - json_object_string_add
    - sbuf_push
    linkageType: ''
    returnType: void
    signature: "void format_item_ipv6_address(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \    struct sbuf *buf, struct json_object *json,\n\t\t\t\t     int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2812
      start: 2809
    functionDepth: 0
    functionLinenumber: 2809
    functionLinenumberEnd: 2812
    functionName: free_item_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_ipv6_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2819,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2814
    functionDepth: 1
    functionLinenumber: 2814
    functionLinenumberEnd: 2827
    functionName: pack_item_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - STREAM_WRITEABLE
    - stream_put
    linkageType: ''
    returnType: int
    signature: "int pack_item_ipv6_address(struct isis_item *i, struct stream *s,\n\t\t\t\t
      \ size_t *min_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2835,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2837,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2844,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2845,1
    - Dst: format_item_ipv6_address
      Src: /src/frr/isisd/isis_tlvs.c:2847,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2850
      start: 2829
    functionDepth: 2
    functionLinenumber: 2829
    functionLinenumberEnd: 2850
    functionName: unpack_item_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - append_item
    - sbuf_push
    - stream_get
    - format_item_ipv6_address
    linkageType: ''
    returnType: int
    signature: "int unpack_item_ipv6_address(uint16_t mtid, uint8_t len,\n\t\t\t\t
      \   struct stream *s, struct sbuf *log,\n\t\t\t\t    void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2854
    functionDepth: 0
    functionLinenumber: 2854
    functionLinenumberEnd: 2861
    functionName: copy_item_global_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_global_ipv6_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:2871,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2873,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2877
      start: 2863
    functionDepth: 1
    functionLinenumber: 2863
    functionLinenumberEnd: 2877
    functionName: format_item_global_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - json_object_string_add
    - sbuf_push
    linkageType: ''
    returnType: void
    signature: "void format_item_global_ipv6_address(uint16_t mtid, struct isis_item
      *i,\n\t\t\t\t\t    struct sbuf *buf,\n\t\t\t\t\t    struct json_object *json,\n\t\t\t\t\t
      \   int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2882
      start: 2879
    functionDepth: 0
    functionLinenumber: 2879
    functionLinenumberEnd: 2882
    functionName: free_item_global_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_global_ipv6_address(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2889,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:2894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2897
      start: 2884
    functionDepth: 1
    functionLinenumber: 2884
    functionLinenumberEnd: 2897
    functionName: pack_item_global_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - STREAM_WRITEABLE
    - stream_put
    linkageType: ''
    returnType: int
    signature: "int pack_item_global_ipv6_address(struct isis_item *i, struct stream
      *s,\n\t\t\t\t\t size_t *min_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2905,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2907,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2914,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:2915,1
    - Dst: format_item_global_ipv6_address
      Src: /src/frr/isisd/isis_tlvs.c:2917,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:2919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2921
      start: 2899
    functionDepth: 2
    functionLinenumber: 2899
    functionLinenumberEnd: 2921
    functionName: unpack_item_global_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - format_item_global_ipv6_address
    - XCALLOC
    - append_item
    - sbuf_push
    - stream_get
    linkageType: ''
    returnType: int
    signature: "int unpack_item_global_ipv6_address(uint16_t mtid, uint8_t len,\n\t\t\t\t\t
      \  struct stream *s, struct sbuf *log,\n\t\t\t\t\t   void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2933
      start: 2924
    functionDepth: 0
    functionLinenumber: 2924
    functionLinenumberEnd: 2933
    functionName: copy_item_mt_router_info
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_mt_router_info(struct isis_item *i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:2943,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:2944,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:2945,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2946,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:2947,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2949,1
    - Dst: isis_mtid2str_fake
      Src: /src/frr/isisd/isis_tlvs.c:2950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2935
    functionDepth: 2
    functionLinenumber: 2935
    functionLinenumberEnd: 2953
    functionName: format_item_mt_router_info
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_int_add
    - sbuf_push
    - isis_mtid2str_fake
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void format_item_mt_router_info(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \      struct sbuf *buf,\n\t\t\t\t       struct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:2957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2958
      start: 2955
    functionDepth: 0
    functionLinenumber: 2955
    functionLinenumberEnd: 2958
    functionName: free_item_mt_router_info
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_mt_router_info(struct isis_item *i)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:2965,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_tlvs.c:2977,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2980
      start: 2960
    functionDepth: 1
    functionLinenumber: 2960
    functionLinenumberEnd: 2980
    functionName: pack_item_mt_router_info
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - STREAM_WRITEABLE
    - stream_putw
    linkageType: ''
    returnType: int
    signature: "int pack_item_mt_router_info(struct isis_item *i, struct stream *s,\n\t\t\t\t
      \   size_t *min_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2988,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:2990,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:2997,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_tlvs.c:2999,1
    - Dst: format_item_mt_router_info
      Src: /src/frr/isisd/isis_tlvs.c:3004,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:3006,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3008
      start: 2982
    functionDepth: 3
    functionLinenumber: 2982
    functionLinenumberEnd: 3008
    functionName: unpack_item_mt_router_info
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - append_item
    - format_item_mt_router_info
    - stream_getw
    - sbuf_push
    linkageType: ''
    returnType: int
    signature: "int unpack_item_mt_router_info(uint16_t mtid, uint8_t len,\n\t\t\t\t
      \     struct stream *s, struct sbuf *log,\n\t\t\t\t      void *dest, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3017,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:3018,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - id
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 3012
    functionDepth: 0
    functionLinenumber: 3012
    functionLinenumberEnd: 3020
    functionName: copy_tlv_te_router_id
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr *copy_tlv_te_router_id(const struct in_addr *id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:3029,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3031,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3033,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - id
    - buf
    - json
    - indent
    argTypes:
    - struct in_addr*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3034
      start: 3022
    functionDepth: 1
    functionLinenumber: 3022
    functionLinenumberEnd: 3034
    functionName: format_tlv_te_router_id
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - json_object_string_add
    - sbuf_push
    linkageType: ''
    returnType: void
    signature: "void format_tlv_te_router_id(const struct in_addr *id, struct sbuf
      *buf,\n\t\t\t\t    struct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:3038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3039
      start: 3036
    functionDepth: 0
    functionLinenumber: 3036
    functionLinenumberEnd: 3039
    functionName: free_tlv_te_router_id
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_te_router_id(struct in_addr *id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3046,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3049,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3050,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:3051,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - id
    - s
    argTypes:
    - struct in_addr*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3053
      start: 3041
    functionDepth: 1
    functionLinenumber: 3041
    functionLinenumberEnd: 3053
    functionName: pack_tlv_te_router_id
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: int pack_tlv_te_router_id(const struct in_addr *id, struct stream *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3062,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3064,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3069,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3071,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3075,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:3076,1
    - Dst: format_tlv_te_router_id
      Src: /src/frr/isisd/isis_tlvs.c:3077,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3079
      start: 3055
    functionDepth: 2
    functionLinenumber: 3055
    functionLinenumberEnd: 3079
    functionName: unpack_tlv_te_router_id
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - stream_forward_getp
    - format_tlv_te_router_id
    - sbuf_push
    - stream_get
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_te_router_id(enum isis_tlv_context context,\n\t\t\t\t
      \  uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t   struct stream *s, struct sbuf
      *log,\n\t\t\t\t   void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3088,1
    - Dst: copy_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3096
      start: 3084
    functionDepth: 2
    functionLinenumber: 3084
    functionLinenumberEnd: 3096
    functionName: copy_item_extended_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - copy_subtlvs
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_extended_ip_reach(struct isis_item *i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3107,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3108,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3109,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3112,1
    - Dst: prefix2str
      Src: /src/frr/isisd/isis_tlvs.c:3114,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:3115,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3116,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3118,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_tlvs.c:3119,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3122,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3123,1
    - Dst: format_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3124,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3127,1
    - Dst: prefix2str
      Src: /src/frr/isisd/isis_tlvs.c:3129,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3132,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_tlvs.c:3132,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3133,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3136,1
    - Dst: format_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3098
    functionDepth: 1
    functionLinenumber: 3098
    functionLinenumberEnd: 3140
    functionName: format_item_extended_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - format_subtlvs
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    - isis_mtid2str
    linkageType: ''
    returnType: void
    signature: "void format_item_extended_ip_reach(uint16_t mtid, struct isis_item
      *i,\n\t\t\t\t\t  struct sbuf *buf,\n\t\t\t\t\t  struct json_object *json, int
      indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_free_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3146,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:3147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3148
      start: 3142
    functionDepth: 2
    functionLinenumber: 3142
    functionLinenumberEnd: 3148
    functionName: free_item_extended_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isis_free_subtlvs
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_extended_ip_reach(struct isis_item *i)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3156,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:3160,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3166,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3168,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3168,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3169,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:3172,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3172,1
    - Dst: pack_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3175,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3177
      start: 3150
    functionDepth: 2
    functionLinenumber: 3150
    functionLinenumberEnd: 3177
    functionName: pack_item_extended_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - PSIZE
    - stream_put
    - pack_subtlvs
    - STREAM_WRITEABLE
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int pack_item_extended_ip_reach(struct isis_item *i, struct stream
      *s,\n\t\t\t\t       size_t *min_len)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:3192,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3195,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3200,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3206,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:3208,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:3209,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3214,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3219,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3221,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3223,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:3226,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3226,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/isisd/isis_tlvs.c:3228,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3230,1
    - Dst: format_item_extended_ip_reach
      Src: /src/frr/isisd/isis_tlvs.c:3232,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3238,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:3242,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3245,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3250,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3253,1
    - Dst: isis_alloc_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3257,1
    - Dst: unpack_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:3260,1
    - Dst: isis_free_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3265,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:3270,1
    - Dst: free_item_extended_ip_reach
      Src: /src/frr/isisd/isis_tlvs.c:3274,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 69
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3276
      start: 3179
    functionDepth: 3
    functionLinenumber: 3179
    functionLinenumberEnd: 3276
    functionName: unpack_item_extended_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - PSIZE
    - XCALLOC
    - append_item
    - isis_alloc_subtlvs
    - sbuf_push
    - stream_get
    - stream_getl
    - format_item_extended_ip_reach
    - stream_getc
    - unpack_tlvs
    - isis_free_subtlvs
    - free_item_extended_ip_reach
    - isis_get_mt_items
    linkageType: ''
    returnType: int
    signature: "int unpack_item_extended_ip_reach(uint16_t mtid, uint8_t len,\n\t\t\t\t\t
      struct stream *s, struct sbuf *log,\n\t\t\t\t\t void *dest, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_tlvs.c:3285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hostname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3286
      start: 3280
    functionDepth: 1
    functionLinenumber: 3280
    functionLinenumberEnd: 3286
    functionName: copy_tlv_dynamic_hostname
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: char
    signature: char *copy_tlv_dynamic_hostname(const char *hostname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3295,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - hostname
    - buf
    - json
    - indent
    argTypes:
    - char*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3298
      start: 3288
    functionDepth: 1
    functionLinenumber: 3288
    functionLinenumberEnd: 3298
    functionName: format_tlv_dynamic_hostname
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - sbuf_push
    - json_object_string_add
    linkageType: ''
    returnType: void
    signature: "void format_tlv_dynamic_hostname(const char *hostname, struct sbuf
      *buf,\n\t\t\t\t\tstruct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:3302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hostname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3303
      start: 3300
    functionDepth: 0
    functionLinenumber: 3300
    functionLinenumberEnd: 3303
    functionName: free_tlv_dynamic_hostname
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_dynamic_hostname(char *hostname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:3310,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3312,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3315,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3316,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:3317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - hostname
    - s
    argTypes:
    - char*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3319
      start: 3305
    functionDepth: 1
    functionLinenumber: 3305
    functionLinenumberEnd: 3319
    functionName: pack_tlv_dynamic_hostname
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - strlen
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: int pack_tlv_dynamic_hostname(const char *hostname, struct stream *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3328,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3330,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3335,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3337,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3341,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:3342,1
    - Dst: isprint
      Src: /src/frr/isisd/isis_tlvs.c:3348,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3354,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3360
      start: 3321
    functionDepth: 1
    functionLinenumber: 3321
    functionLinenumberEnd: 3360
    functionName: unpack_tlv_dynamic_hostname
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isprint
    - XCALLOC
    - stream_forward_getp
    - sbuf_push
    - stream_get
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_dynamic_hostname(enum isis_tlv_context context,\n\t\t\t\t
      \      uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t       struct stream *s,
      struct sbuf *log,\n\t\t\t\t       void *dest, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3369,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:3370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - id
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3372
      start: 3364
    functionDepth: 0
    functionLinenumber: 3364
    functionLinenumberEnd: 3372
    functionName: copy_tlv_te_router_id_ipv6
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct in6_addr
    signature: struct in6_addr *copy_tlv_te_router_id_ipv6(const struct in6_addr *id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:3382,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3384,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - id
    - buf
    - json
    - indent
    argTypes:
    - struct in6_addr*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3387
      start: 3374
    functionDepth: 1
    functionLinenumber: 3374
    functionLinenumberEnd: 3387
    functionName: format_tlv_te_router_id_ipv6
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - json_object_string_add
    - sbuf_push
    linkageType: ''
    returnType: void
    signature: "void format_tlv_te_router_id_ipv6(const struct in6_addr *id,\n\t\t\t\t\t
      struct sbuf *buf,\n\t\t\t\t\t struct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:3391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3392
      start: 3389
    functionDepth: 0
    functionLinenumber: 3389
    functionLinenumberEnd: 3392
    functionName: free_tlv_te_router_id_ipv6
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_te_router_id_ipv6(struct in6_addr *id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3400,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3403,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3404,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:3405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - id
    - s
    argTypes:
    - struct in6_addr*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3407
      start: 3394
    functionDepth: 1
    functionLinenumber: 3394
    functionLinenumberEnd: 3407
    functionName: pack_tlv_te_router_id_ipv6
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_tlv_te_router_id_ipv6(const struct in6_addr *id,\n\t\t\t\t
      \     struct stream *s)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3416,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3418,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3423,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3426,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3430,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:3431,1
    - Dst: format_tlv_te_router_id_ipv6
      Src: /src/frr/isisd/isis_tlvs.c:3432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3409
    functionDepth: 2
    functionLinenumber: 3409
    functionLinenumberEnd: 3434
    functionName: unpack_tlv_te_router_id_ipv6
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - format_tlv_te_router_id_ipv6
    - XCALLOC
    - stream_forward_getp
    - sbuf_push
    - stream_get
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_te_router_id_ipv6(enum isis_tlv_context context,\n\t\t\t\t\tuint8_t
      tlv_type, uint8_t tlv_len,\n\t\t\t\t\tstruct stream *s, struct sbuf *log,\n\t\t\t\t\tvoid
      *dest, int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3445,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:3446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - spine_leaf
    argTypes:
    - struct isis_spine_leaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3449
      start: 3439
    functionDepth: 0
    functionLinenumber: 3439
    functionLinenumberEnd: 3449
    functionName: copy_tlv_spine_leaf
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: struct isis_spine_leaf
    signature: "struct isis_spine_leaf *copy_tlv_spine_leaf(\n\t\t\t\tconst struct
      isis_spine_leaf *spine_leaf)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3462,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3463,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:3466,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3468,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3474,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3476,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3478,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3481,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3484,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3486,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - spine_leaf
    - buf
    - json
    - indent
    argTypes:
    - struct isis_spine_leaf*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3496
      start: 3451
    functionDepth: 1
    functionLinenumber: 3451
    functionLinenumberEnd: 3496
    functionName: format_tlv_spine_leaf
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - snprintfrr
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void format_tlv_spine_leaf(const struct isis_spine_leaf *spine_leaf,\n\t\t\t\t
      \ struct sbuf *buf, struct json_object *json,\n\t\t\t\t  int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:3500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - spine_leaf
    argTypes:
    - struct isis_spine_leaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3501
      start: 3498
    functionDepth: 0
    functionLinenumber: 3498
    functionLinenumberEnd: 3501
    functionName: free_tlv_spine_leaf
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_spine_leaf(struct isis_spine_leaf *spine_leaf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3516,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3519,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3520,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_tlvs.c:3538,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - spine_leaf
    - s
    argTypes:
    - struct isis_spine_leaf*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3541
      start: 3508
    functionDepth: 1
    functionLinenumber: 3508
    functionLinenumberEnd: 3541
    functionName: pack_tlv_spine_leaf
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_tlv_spine_leaf(const struct isis_spine_leaf *spine_leaf,\n\t\t\t
      \      struct stream *s)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3550,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3552,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3553,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3558,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3560,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3564,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_tlvs.c:3566,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3579
      start: 3543
    functionDepth: 1
    functionLinenumber: 3543
    functionLinenumberEnd: 3579
    functionName: unpack_tlv_spine_leaf
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - sbuf_push
    - XCALLOC
    - stream_getw
    - stream_forward_getp
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_spine_leaf(enum isis_tlv_context context,\n\t\t\t\t
      uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t struct stream *s, struct sbuf *log,\n\t\t\t\t
      void *dest, int indent)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum isis_threeway_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3595
      start: 3583
    functionDepth: 0
    functionLinenumber: 3583
    functionLinenumberEnd: 3595
    functionName: isis_threeway_state_name
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *isis_threeway_state_name(enum isis_threeway_state state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3603,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:3604,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - threeway_adj
    argTypes:
    - struct isis_threeway_adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3597
    functionDepth: 0
    functionLinenumber: 3597
    functionLinenumberEnd: 3607
    functionName: copy_tlv_threeway_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: struct isis_threeway_adj
    signature: "struct isis_threeway_adj *copy_tlv_threeway_adj(\n\t\t\t\tconst struct
      isis_threeway_adj *threeway_adj)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:3618,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3621,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3622,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3623,1
    - Dst: isis_threeway_state_name
      Src: /src/frr/isisd/isis_tlvs.c:3625,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:3626,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:3627,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3631,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:3632,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3635,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3636,1
    - Dst: isis_threeway_state_name
      Src: /src/frr/isisd/isis_tlvs.c:3637,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3639,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3644,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3645,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - threeway_adj
    - buf
    - json
    - indent
    argTypes:
    - struct isis_threeway_adj*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3648
      start: 3609
    functionDepth: 1
    functionLinenumber: 3609
    functionLinenumberEnd: 3648
    functionName: format_tlv_threeway_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - isis_threeway_state_name
    - snprintfrr
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void format_tlv_threeway_adj(const struct isis_threeway_adj *threeway_adj,\n\t\t\tstruct
      sbuf *buf, struct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:3652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - threeway_adj
    argTypes:
    - struct isis_threeway_adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3653
      start: 3650
    functionDepth: 0
    functionLinenumber: 3650
    functionLinenumberEnd: 3653
    functionName: free_tlv_threeway_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_threeway_adj(struct isis_threeway_adj *threeway_adj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3663,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3666,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3667,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3668,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:3669,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:3672,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:3673,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - threeway_adj
    - s
    argTypes:
    - struct isis_threeway_adj*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3677
      start: 3655
    functionDepth: 1
    functionLinenumber: 3655
    functionLinenumberEnd: 3677
    functionName: pack_tlv_threeway_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int pack_tlv_threeway_adj(const struct isis_threeway_adj *threeway_adj,\n\t\t\t\t
      \ struct stream *s)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3686,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3688,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3689,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3694,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:3696,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3700,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:3702,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:3703,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:3707,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:3708,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3712
      start: 3679
    functionDepth: 1
    functionLinenumber: 3679
    functionLinenumberEnd: 3712
    functionName: unpack_tlv_threeway_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - stream_forward_getp
    - sbuf_push
    - stream_get
    - stream_getl
    - stream_getc
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_threeway_adj(enum isis_tlv_context context,\n\t\t\t\t
      \      uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t       struct stream *s,
      struct sbuf *log,\n\t\t\t\t       void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3718,1
    - Dst: copy_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3727
      start: 3715
    functionDepth: 2
    functionLinenumber: 3715
    functionLinenumberEnd: 3727
    functionName: copy_item_ipv6_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - copy_subtlvs
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_ipv6_reach(struct isis_item *i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3738,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3739,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3740,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3743,1
    - Dst: prefix2str
      Src: /src/frr/isisd/isis_tlvs.c:3745,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:3746,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3747,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3749,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3752,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_tlvs.c:3753,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3756,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3757,1
    - Dst: format_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3758,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3761,1
    - Dst: prefix2str
      Src: /src/frr/isisd/isis_tlvs.c:3764,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3768,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_tlvs.c:3768,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3769,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3772,1
    - Dst: format_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3773,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3776
      start: 3729
    functionDepth: 1
    functionLinenumber: 3729
    functionLinenumberEnd: 3776
    functionName: format_item_ipv6_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - format_subtlvs
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    - isis_mtid2str
    linkageType: ''
    returnType: void
    signature: "void format_item_ipv6_reach(uint16_t mtid, struct isis_item *i,\n\t\t\t\t
      \  struct sbuf *buf, struct json_object *json,\n\t\t\t\t   int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_free_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3782,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:3783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3784
      start: 3778
    functionDepth: 2
    functionLinenumber: 3778
    functionLinenumberEnd: 3784
    functionName: free_item_ipv6_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isis_free_subtlvs
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_ipv6_reach(struct isis_item *i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:3792,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3792,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3793,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:3796,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3802,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:3803,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:3805,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3805,1
    - Dst: pack_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3808,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3811
      start: 3786
    functionDepth: 2
    functionLinenumber: 3786
    functionLinenumberEnd: 3811
    functionName: pack_item_ipv6_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - PSIZE
    - stream_put
    - pack_subtlvs
    - STREAM_WRITEABLE
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int pack_item_ipv6_reach(struct isis_item *i, struct stream *s,\n\t\t\t\tsize_t
      *min_len)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:3825,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3828,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3832,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3838,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:3840,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:3841,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:3846,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3848,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3853,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3855,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3857,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:3860,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3860,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/isisd/isis_tlvs.c:3863,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:3864,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3865,1
    - Dst: format_item_ipv6_reach
      Src: /src/frr/isisd/isis_tlvs.c:3867,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3872,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:3876,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3879,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:3884,1
    - Dst: PSIZE
      Src: /src/frr/isisd/isis_tlvs.c:3887,1
    - Dst: isis_alloc_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3891,1
    - Dst: unpack_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:3894,1
    - Dst: isis_free_subtlvs
      Src: /src/frr/isisd/isis_tlvs.c:3899,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:3904,1
    - Dst: free_item_ipv6_reach
      Src: /src/frr/isisd/isis_tlvs.c:3908,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 70
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3910
      start: 3813
    functionDepth: 3
    functionLinenumber: 3813
    functionLinenumberEnd: 3910
    functionName: unpack_item_ipv6_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - PSIZE
    - XCALLOC
    - append_item
    - memcmp
    - isis_alloc_subtlvs
    - sbuf_push
    - stream_get
    - stream_getl
    - free_item_ipv6_reach
    - apply_mask_ipv6
    - format_item_ipv6_reach
    - stream_getc
    - unpack_tlvs
    - isis_free_subtlvs
    - isis_get_mt_items
    linkageType: ''
    returnType: int
    signature: "int unpack_item_ipv6_reach(uint16_t mtid, uint8_t len, struct stream
      *s,\n\t\t\t\t  struct sbuf *log, void *dest, int indent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3921,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:3923,1
    - Dst: XMALLOC
      Src: /src/frr/isisd/isis_tlvs.c:3933,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:3940,1
    - Dst: bf_is_inited
      Src: /src/frr/isisd/isis_tlvs.c:3940,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:3942,1
    - Dst: bf_is_inited
      Src: /src/frr/isisd/isis_tlvs.c:3942,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:3944,1
    - Dst: bf_is_inited
      Src: /src/frr/isisd/isis_tlvs.c:3944,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:3947,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:3949,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:3951,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - router_cap
    argTypes:
    - struct isis_router_cap*
    assertStmts:
    - condition: "(bf_is_inited(\n\t\t\tsc_fad->fad.admin_group_exclude_any.bitmap))"
      pos:
        line_end: 3940
        line_start: 3939
        source_file: /src/frr/isisd/isis_tlvs.c
    - condition: "(bf_is_inited(\n\t\t\tsc_fad->fad.admin_group_include_any.bitmap))"
      pos:
        line_end: 3942
        line_start: 3941
        source_file: /src/frr/isisd/isis_tlvs.c
    - condition: "(bf_is_inited(\n\t\t\tsc_fad->fad.admin_group_include_all.bitmap))"
      pos:
        line_end: 3944
        line_start: 3943
        source_file: /src/frr/isisd/isis_tlvs.c
    constantsTouched: []
    func_position:
      end: 3959
      start: 3913
    functionDepth: 1
    functionLinenumber: 3913
    functionLinenumberEnd: 3959
    functionName: copy_tlv_router_cap
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - bf_is_inited
    - XMALLOC
    - admin_group_copy
    - memcpy
    - assert
    linkageType: ''
    returnType: struct isis_router_cap
    signature: "struct isis_router_cap *copy_tlv_router_cap(\n\t\t\t       const struct
      isis_router_cap *router_cap)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3971,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3972,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:3973,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3974,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3975,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3978,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:3985,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:3986,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3987,1
    - Dst: IS_SR_IPV4
      Src: /src/frr/isisd/isis_tlvs.c:3988,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:3990,1
    - Dst: IS_SR_IPV6
      Src: /src/frr/isisd/isis_tlvs.c:3991,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:3993,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:3995,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:4002,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:4003,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:4004,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:4006,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:4014,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:4015,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:4019,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:4020,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:4029,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - router_cap
    - json
    argTypes:
    - struct isis_router_cap*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4030
      start: 3961
    functionDepth: 1
    functionLinenumber: 3961
    functionLinenumberEnd: 4030
    functionName: format_tlv_router_cap_json
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - snprintfrr
    - json_object_int_add
    - IS_SR_IPV6
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    - IS_SR_IPV4
    linkageType: ''
    returnType: void
    signature: "void format_tlv_router_cap_json(const struct isis_router_cap *router_cap,\n\t\t\t\t
      \ struct json_object *json)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_tlvs.c:4041,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4042,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4043,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4049,1
    - Dst: IS_SR_IPV4
      Src: /src/frr/isisd/isis_tlvs.c:4052,1
    - Dst: IS_SR_IPV6
      Src: /src/frr/isisd/isis_tlvs.c:4053,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4059,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4065,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4068,1
    - Dst: sr_algorithm_string
      Src: /src/frr/isisd/isis_tlvs.c:4069,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4075,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4090,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4092,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4094,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4096,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:4098,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4100,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4101,1
    - Dst: admin_group_string
      Src: /src/frr/isisd/isis_tlvs.c:4102,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:4106,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4108,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4109,1
    - Dst: admin_group_string
      Src: /src/frr/isisd/isis_tlvs.c:4110,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_tlvs.c:4114,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4116,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4117,1
    - Dst: admin_group_string
      Src: /src/frr/isisd/isis_tlvs.c:4118,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4122,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_tlvs.c:4123,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4126,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4129,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4131,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 3
    argNames:
    - router_cap
    - buf
    - indent
    argTypes:
    - struct isis_router_cap*
    - struct sbuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4135
      start: 4032
    functionDepth: 1
    functionLinenumber: 4032
    functionLinenumberEnd: 4135
    functionName: format_tlv_router_cap
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - strlen
    - CHECK_FLAG
    - admin_group_string
    - IS_SR_IPV6
    - inet_ntop
    - sr_algorithm_string
    - sbuf_push
    - IS_SR_IPV4
    linkageType: ''
    returnType: void
    signature: "void format_tlv_router_cap(const struct isis_router_cap *router_cap,\n\t\t\t\t
      \ struct sbuf *buf, int indent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_term
      Src: /src/frr/isisd/isis_tlvs.c:4149,1
    - Dst: admin_group_term
      Src: /src/frr/isisd/isis_tlvs.c:4150,1
    - Dst: admin_group_term
      Src: /src/frr/isisd/isis_tlvs.c:4151,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:4152,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:4156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - router_cap
    argTypes:
    - struct isis_router_cap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4157
      start: 4137
    functionDepth: 1
    functionLinenumber: 4137
    functionLinenumberEnd: 4157
    functionName: free_tlv_router_cap
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - admin_group_term
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_router_cap(struct isis_router_cap *router_cap)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_nb_words
      Src: /src/frr/isisd/isis_tlvs.c:4167,1
    - Dst: admin_group_nb_words
      Src: /src/frr/isisd/isis_tlvs.c:4172,1
    - Dst: admin_group_nb_words
      Src: /src/frr/isisd/isis_tlvs.c:4177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - fad
    argTypes:
    - struct isis_router_cap_fad*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4187
      start: 4160
    functionDepth: 1
    functionLinenumber: 4160
    functionLinenumberEnd: 4187
    functionName: isis_router_cap_fad_sub_tlv_len
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - admin_group_nb_words
    linkageType: ''
    returnType: size_t
    signature: size_t isis_router_cap_fad_sub_tlv_len(const struct isis_router_cap_fad
      *fad)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isis_tlvs_sr_algo_count
      Src: /src/frr/isisd/isis_tlvs.c:4203,1
    - Dst: isis_router_cap_fad_sub_tlv_len
      Src: /src/frr/isisd/isis_tlvs.c:4222,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - router_cap
    argTypes:
    - struct isis_router_cap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4231
      start: 4190
    functionDepth: 2
    functionLinenumber: 4190
    functionLinenumberEnd: 4231
    functionName: isis_router_cap_tlv_size
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isis_router_cap_fad_sub_tlv_len
    - isis_tlvs_sr_algo_count
    linkageType: ''
    returnType: size_t
    signature: size_t isis_router_cap_tlv_size(const struct isis_router_cap *router_cap)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:4242,1
    - Dst: isis_router_cap_tlv_size
      Src: /src/frr/isisd/isis_tlvs.c:4242,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4246,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:4247,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4248,1
    - Dst: stream_put_ipv4
      Src: /src/frr/isisd/isis_tlvs.c:4249,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4250,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4255,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4256,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4257,1
    - Dst: stream_put3
      Src: /src/frr/isisd/isis_tlvs.c:4258,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4259,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4260,1
    - Dst: stream_put3
      Src: /src/frr/isisd/isis_tlvs.c:4261,1
    - Dst: isis_tlvs_sr_algo_count
      Src: /src/frr/isisd/isis_tlvs.c:4264,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4266,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4267,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4270,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4276,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4277,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4279,1
    - Dst: stream_put3
      Src: /src/frr/isisd/isis_tlvs.c:4280,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4281,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4282,1
    - Dst: stream_put3
      Src: /src/frr/isisd/isis_tlvs.c:4283,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4288,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4289,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4290,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4291,1
    - Dst: isis_router_cap_fad_sub_tlv_len
      Src: /src/frr/isisd/isis_tlvs.c:4307,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:4309,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:4312,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_tlvs.c:4313,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4318,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:4320,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4321,1
    - Dst: stream_put_ipv4
      Src: /src/frr/isisd/isis_tlvs.c:4322,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4323,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4326,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4327,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4329,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4330,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4331,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4332,1
    - Dst: admin_group_nb_words
      Src: /src/frr/isisd/isis_tlvs.c:4335,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4337,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4338,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:4340,1
    - Dst: admin_group_get_offset
      Src: /src/frr/isisd/isis_tlvs.c:4340,1
    - Dst: admin_group_nb_words
      Src: /src/frr/isisd/isis_tlvs.c:4344,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4346,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4347,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:4349,1
    - Dst: admin_group_get_offset
      Src: /src/frr/isisd/isis_tlvs.c:4349,1
    - Dst: admin_group_nb_words
      Src: /src/frr/isisd/isis_tlvs.c:4353,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4355,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4356,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_tlvs.c:4358,1
    - Dst: admin_group_get_offset
      Src: /src/frr/isisd/isis_tlvs.c:4358,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4362,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4363,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4364,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:4370,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_tlvs.c:4371,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 95
    argCount: 2
    argNames:
    - router_cap
    - s
    argTypes:
    - struct isis_router_cap*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4374
      start: 4233
    functionDepth: 3
    functionLinenumber: 4233
    functionLinenumberEnd: 4374
    functionName: pack_tlv_router_cap
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isis_router_cap_tlv_size
    - isis_router_cap_fad_sub_tlv_len
    - admin_group_get_offset
    - STREAM_WRITEABLE
    - admin_group_nb_words
    - stream_get_endp
    - stream_put_ipv4
    - stream_put3
    - stream_putc_at
    - stream_putc
    - isis_tlvs_sr_algo_count
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int pack_tlv_router_cap(const struct isis_router_cap *router_cap,\n\t\t\t
      \      struct stream *s)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4388,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4390,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4391,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:4400,1
    - Dst: stream_get_ipv4
      Src: /src/frr/isisd/isis_tlvs.c:4406,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4407,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4418,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4419,1
    - Dst: STREAM_READABLE
      Src: /src/frr/isisd/isis_tlvs.c:4421,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4422,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4425,1
    - Dst: STREAM_READABLE
      Src: /src/frr/isisd/isis_tlvs.c:4425,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:4426,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4435,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4440,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4443,1
    - Dst: stream_get3
      Src: /src/frr/isisd/isis_tlvs.c:4444,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4446,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4447,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4451,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4457,1
    - Dst: stream_get3
      Src: /src/frr/isisd/isis_tlvs.c:4462,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:4464,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4466,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4475,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4482,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4495,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4503,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4508,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4512,1
    - Dst: stream_get3
      Src: /src/frr/isisd/isis_tlvs.c:4513,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4515,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4516,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4520,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4526,1
    - Dst: stream_get3
      Src: /src/frr/isisd/isis_tlvs.c:4531,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:4533,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4535,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4544,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4551,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4557,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4560,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4561,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4567,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:4571,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4573,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4574,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4575,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4576,1
    - Dst: admin_group_init
      Src: /src/frr/isisd/isis_tlvs.c:4578,1
    - Dst: admin_group_init
      Src: /src/frr/isisd/isis_tlvs.c:4579,1
    - Dst: admin_group_init
      Src: /src/frr/isisd/isis_tlvs.c:4580,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4590,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4591,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:4598,1
    - Dst: admin_group_bulk_set
      Src: /src/frr/isisd/isis_tlvs.c:4599,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:4606,1
    - Dst: admin_group_bulk_set
      Src: /src/frr/isisd/isis_tlvs.c:4607,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_tlvs.c:4614,1
    - Dst: admin_group_bulk_set
      Src: /src/frr/isisd/isis_tlvs.c:4615,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4622,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4624,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4628,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4631,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4636,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:4644,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 193
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4651
      start: 4376
    functionDepth: 1
    functionLinenumber: 4376
    functionLinenumberEnd: 4651
    functionName: unpack_tlv_router_cap
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - admin_group_init
    - STREAM_READABLE
    - stream_get_ipv4
    - XCALLOC
    - stream_forward_getp
    - stream_get3
    - sbuf_push
    - stream_getl
    - XFREE
    - admin_group_bulk_set
    - stream_getc
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_router_cap(enum isis_tlv_context context,\n\t\t\t\t
      uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t struct stream *s, struct sbuf *log,
      void *dest,\n\t\t\t\t int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:4657,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:4661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4663
      start: 4654
    functionDepth: 0
    functionLinenumber: 4654
    functionLinenumberEnd: 4663
    functionName: copy_item_auth
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *copy_item_auth(struct isis_item *i)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:4673,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4675,1
    - Dst: zlog_sanitize
      Src: /src/frr/isisd/isis_tlvs.c:4678,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:4680,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4682,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_tlvs.c:4686,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:4690,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4692,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_tlvs.c:4696,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4698,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - mtid
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4702
      start: 4665
    functionDepth: 1
    functionLinenumber: 4665
    functionLinenumberEnd: 4702
    functionName: format_item_auth
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - zlog_sanitize
    - snprintf
    - json_object_int_add
    - sbuf_push
    - json_object_string_add
    linkageType: ''
    returnType: void
    signature: "void format_item_auth(uint16_t mtid, struct isis_item *i,\n\t\t\t
      \    struct sbuf *buf, struct json_object *json,\n\t\t\t     int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:4706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4707
      start: 4704
    functionDepth: 0
    functionLinenumber: 4704
    functionLinenumberEnd: 4707
    functionName: free_item_auth
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_item_auth(struct isis_item *i)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:4714,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4718,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:4722,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:4726,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:4729,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:4733,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:4734,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - i
    - s
    - min_len
    argTypes:
    - struct isis_item*
    - struct stream*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4741
      start: 4709
    functionDepth: 1
    functionLinenumber: 4709
    functionLinenumberEnd: 4741
    functionName: pack_item_auth
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    - stream_get_endp
    linkageType: ''
    returnType: int
    signature: "int pack_item_auth(struct isis_item *i, struct stream *s,\n\t\t\t
      \ size_t *min_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4748,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4750,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:4757,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4759,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4763,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:4767,1
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_tlvs.c:4771,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:4772,1
    - Dst: format_item_auth
      Src: /src/frr/isisd/isis_tlvs.c:4773,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:4774,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 6
    argNames:
    - mtid
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4776
      start: 4743
    functionDepth: 2
    functionLinenumber: 4743
    functionLinenumberEnd: 4776
    functionName: unpack_item_auth
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - append_item
    - format_item_auth
    - sbuf_push
    - stream_get
    - XFREE
    - stream_getc
    - stream_get_getp
    linkageType: ''
    returnType: int
    signature: "int unpack_item_auth(uint16_t mtid, uint8_t len, struct stream *s,\n\t\t\t
      \   struct sbuf *log, void *dest, int indent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:4788,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:4790,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:4792,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - poi
    argTypes:
    - struct isis_purge_originator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4794
      start: 4780
    functionDepth: 0
    functionLinenumber: 4780
    functionLinenumberEnd: 4794
    functionName: copy_tlv_purge_originator
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_purge_originator
    signature: "struct isis_purge_originator *copy_tlv_purge_originator(\n\t\t\t\t\tstruct
      isis_purge_originator *poi)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:4806,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_tlvs.c:4808,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_tlvs.c:4812,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_tlvs.c:4813,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:4815,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:4817,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4819,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4820,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4822,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - poi
    - buf
    - json
    - indent
    argTypes:
    - struct isis_purge_originator*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4824
      start: 4796
    functionDepth: 1
    functionLinenumber: 4796
    functionLinenumberEnd: 4824
    functionName: format_tlv_purge_originator
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - snprintfrr
    - sbuf_push
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void format_tlv_purge_originator(struct isis_purge_originator *poi,\n\t\t\t\t\tstruct
      sbuf *buf,\n\t\t\t\t\tstruct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:4828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - poi
    argTypes:
    - struct isis_purge_originator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4829
      start: 4826
    functionDepth: 0
    functionLinenumber: 4826
    functionLinenumberEnd: 4829
    functionName: free_tlv_purge_originator
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_tlv_purge_originator(struct isis_purge_originator *poi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:4842,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4845,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4846,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:4847,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:4848,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:4850,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - poi
    - s
    argTypes:
    - struct isis_purge_originator*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4852
      start: 4831
    functionDepth: 1
    functionLinenumber: 4831
    functionLinenumberEnd: 4852
    functionName: pack_tlv_purge_originator
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_tlv_purge_originator(struct isis_purge_originator *poi,\n\t\t\t\t
      \    struct stream *s)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4862,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4864,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_tlvs.c:4868,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4875,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4880,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:4884,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_tlvs.c:4886,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:4889,1
    - Dst: copy_tlv_purge_originator
      Src: /src/frr/isisd/isis_tlvs.c:4894,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4896
      start: 4854
    functionDepth: 1
    functionLinenumber: 4854
    functionLinenumberEnd: 4896
    functionName: unpack_tlv_purge_originator
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - sbuf_push
    - stream_getc
    - stream_get
    - copy_tlv_purge_originator
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_purge_originator(enum isis_tlv_context context,\n\t\t\t\t
      \      uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t       struct stream *s,
      struct sbuf *log,\n\t\t\t\t       void *dest, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - items
    argTypes:
    - struct isis_item_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4906
      start: 4901
    functionDepth: 0
    functionLinenumber: 4901
    functionLinenumberEnd: 4906
    functionName: init_item_list
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_item_list(struct isis_item_list *items)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct tlv_ops*::copy_item
      Src: /src/frr/isisd/isis_tlvs.c:4915,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:4917,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - context
    - type
    - item
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item*
    assertStmts:
    - condition: (!"Unknown item tlv type!")
      pos:
        line_end: 4916
        line_start: 4916
        source_file: /src/frr/isisd/isis_tlvs.c
    constantsTouched: []
    func_position:
      end: 4919
      start: 4908
    functionDepth: 1
    functionLinenumber: 4908
    functionLinenumberEnd: 4919
    functionName: copy_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - struct tlv_ops*::copy_item
    - assert
    linkageType: ''
    returnType: struct isis_item
    signature: "struct isis_item *copy_item(enum isis_tlv_context context,\n\t\t\t\t
      \  enum isis_tlv_type type,\n\t\t\t\t   struct isis_item *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:4926,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:4929,1
    - Dst: copy_item
      Src: /src/frr/isisd/isis_tlvs.c:4929,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - context
    - type
    - src
    - dest
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item_list*
    - struct isis_item_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4931
      start: 4921
    functionDepth: 2
    functionLinenumber: 4921
    functionLinenumberEnd: 4931
    functionName: copy_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - append_item
    - copy_item
    - init_item_list
    linkageType: ''
    returnType: void
    signature: "void copy_items(enum isis_tlv_context context, enum isis_tlv_type
      type,\n\t\t       struct isis_item_list *src, struct isis_item_list *dest)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct tlv_ops*::format_item
      Src: /src/frr/isisd/isis_tlvs.c:4940,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:4944,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 7
    argNames:
    - mtid
    - context
    - type
    - i
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts:
    - condition: (!"Unknown item tlv type!")
      pos:
        line_end: 4943
        line_start: 4943
        source_file: /src/frr/isisd/isis_tlvs.c
    constantsTouched: []
    func_position:
      end: 4945
      start: 4933
    functionDepth: 1
    functionLinenumber: 4933
    functionLinenumberEnd: 4945
    functionName: format_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - assert
    - struct tlv_ops*::format_item
    linkageType: ''
    returnType: void
    signature: "void format_item(uint16_t mtid, enum isis_tlv_context context,\n\t\t\tenum
      isis_tlv_type type, struct isis_item *i,\n\t\t\tstruct sbuf *buf, struct json_object
      *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_item
      Src: /src/frr/isisd/isis_tlvs.c:4955,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 7
    argNames:
    - mtid
    - context
    - type
    - items
    - buf
    - json
    - indent
    argTypes:
    - uint16_t
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item_list*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4956
      start: 4947
    functionDepth: 2
    functionLinenumber: 4947
    functionLinenumberEnd: 4956
    functionName: format_items_
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - format_item
    linkageType: ''
    returnType: void
    signature: "void format_items_(uint16_t mtid, enum isis_tlv_context context,\n\t\t\t
      \ enum isis_tlv_type type, struct isis_item_list *items,\n\t\t\t  struct sbuf
      *buf, struct json_object *json,\n\t\t\t  int indent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct tlv_ops*::free_item
      Src: /src/frr/isisd/isis_tlvs.c:4964,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:4968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - tlv_context
    - tlv_type
    - item
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item*
    assertStmts:
    - condition: (!"Unknown item tlv type!")
      pos:
        line_end: 4967
        line_start: 4967
        source_file: /src/frr/isisd/isis_tlvs.c
    constantsTouched: []
    func_position:
      end: 4969
      start: 4958
    functionDepth: 1
    functionLinenumber: 4958
    functionLinenumberEnd: 4969
    functionName: free_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - assert
    - struct tlv_ops*::free_item
    linkageType: ''
    returnType: void
    signature: "void free_item(enum isis_tlv_context tlv_context,\n\t\t      enum
      isis_tlv_type tlv_type, struct isis_item *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_item
      Src: /src/frr/isisd/isis_tlvs.c:4978,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - context
    - type
    - items
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4980
      start: 4971
    functionDepth: 2
    functionLinenumber: 4971
    functionLinenumberEnd: 4980
    functionName: free_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - free_item
    linkageType: ''
    returnType: void
    signature: "void free_items(enum isis_tlv_context context, enum isis_tlv_type
      type,\n\t\t       struct isis_item_list *items)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct tlv_ops*::pack_item
      Src: /src/frr/isisd/isis_tlvs.c:4990,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:4993,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 8
    argNames:
    - context
    - type
    - i
    - s
    - min_len
    - fragment_tlvs
    - pe
    - mtid
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item*
    - struct stream*
    - size_t*
    - struct isis_tlvs**
    - struct pack_order_entry*
    - uint16_t
    assertStmts:
    - condition: (!"Unknown item tlv type!")
      pos:
        line_end: 4992
        line_start: 4992
        source_file: /src/frr/isisd/isis_tlvs.c
    constantsTouched: []
    func_position:
      end: 4995
      start: 4982
    functionDepth: 1
    functionLinenumber: 4982
    functionLinenumberEnd: 4995
    functionName: pack_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - assert
    - struct tlv_ops*::pack_item
    linkageType: ''
    returnType: int
    signature: "int pack_item(enum isis_tlv_context context, enum isis_tlv_type type,\n\t\t
      \    struct isis_item *i, struct stream *s, size_t *min_len,\n\t\t     struct
      isis_tlvs **fragment_tlvs,\n\t\t     const struct pack_order_entry *pe, uint16_t
      mtid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5008,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:5011,1
    - Dst: copy_item
      Src: /src/frr/isisd/isis_tlvs.c:5011,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - i
    - pe
    - fragment_tlvs
    - mtid
    argTypes:
    - struct isis_item*
    - struct pack_order_entry*
    - struct isis_tlvs*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5012
      start: 4997
    functionDepth: 2
    functionLinenumber: 4997
    functionLinenumberEnd: 5012
    functionName: add_item_to_fragment
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - append_item
    - copy_item
    - isis_get_mt_items
    linkageType: ''
    returnType: void
    signature: "void add_item_to_fragment(struct isis_item *i,\n\t\t\t\t const struct
      pack_order_entry *pe,\n\t\t\t\t struct isis_tlvs *fragment_tlvs, uint16_t mtid)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5030,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:5033,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:5034,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:5035,1
    - Dst: IS_COMPAT_MT_TLV
      Src: /src/frr/isisd/isis_tlvs.c:5037,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5039,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_tlvs.c:5041,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5045,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:5047,1
    - Dst: pack_item
      Src: /src/frr/isisd/isis_tlvs.c:5052,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:5057,1
    - Dst: stream_set_endp
      Src: /src/frr/isisd/isis_tlvs.c:5077,1
    - Dst: add_item_to_fragment
      Src: /src/frr/isisd/isis_tlvs.c:5083,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_tlvs.c:5088,1
    - Dst: stream_reset
      Src: /src/frr/isisd/isis_tlvs.c:5096,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5097,1
    - Dst: new_fragment
      Src: /src/frr/isisd/isis_tlvs.c:5099,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 64
    argCount: 9
    argNames:
    - mtid
    - context
    - type
    - items
    - s
    - fragment_tlvs
    - pe
    - (*new_fragment)(struct list *l)
    - new_fragment_arg
    argTypes:
    - uint16_t
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_item_list*
    - struct stream*
    - struct isis_tlvs**
    - struct pack_order_entry*
    - struct isis_tlvs*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5101
      start: 5014
    functionDepth: 3
    functionLinenumber: 5014
    functionLinenumberEnd: 5101
    functionName: pack_items_
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - new_fragment
    - STREAM_WRITEABLE
    - stream_putw
    - stream_get_endp
    - stream_set_endp
    - IS_COMPAT_MT_TLV
    - add_item_to_fragment
    - pack_item
    - stream_reset
    - stream_putc_at
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pack_items_(uint16_t mtid, enum isis_tlv_context context,\n\t\t
      \      enum isis_tlv_type type, struct isis_item_list *items,\n\t\t       struct
      stream *s, struct isis_tlvs **fragment_tlvs,\n\t\t       const struct pack_order_entry
      *pe,\n\t\t       struct isis_tlvs *(*new_fragment)(struct list *l),\n\t\t       struct
      list *new_fragment_arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5103
      start: 5102
    functionDepth: 0
    functionLinenumber: 5102
    functionLinenumberEnd: 5103
    functionName: pack_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pack_items(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dest
    - item
    argTypes:
    - struct isis_item_list*
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5109
      start: 5104
    functionDepth: 0
    functionLinenumber: 5104
    functionLinenumberEnd: 5109
    functionName: append_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void append_item(struct isis_item_list *dest, struct isis_item *item)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - dest
    - del
    argTypes:
    - struct isis_item_list*
    - struct isis_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5142
      start: 5111
    functionDepth: 0
    functionLinenumber: 5111
    functionLinenumberEnd: 5142
    functionName: delete_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delete_item(struct isis_item_list *dest, struct isis_item *del)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/isisd/isis_tlvs.c:5146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct isis_item_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5147
      start: 5144
    functionDepth: 1
    functionLinenumber: 5144
    functionLinenumberEnd: 5147
    functionName: last_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - container_of
    linkageType: ''
    returnType: struct isis_item
    signature: struct isis_item *last_item(struct isis_item_list *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct tlv_ops*::unpack_item
      Src: /src/frr/isisd/isis_tlvs.c:5156,1
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:5158,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:5159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 8
    argNames:
    - mtid
    - context
    - tlv_type
    - len
    - s
    - log
    - dest
    - indent
    argTypes:
    - uint16_t
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts:
    - condition: (!"Unknown item tlv type!")
      pos:
        line_end: 5157
        line_start: 5157
        source_file: /src/frr/isisd/isis_tlvs.c
    constantsTouched: []
    func_position:
      end: 5161
      start: 5149
    functionDepth: 1
    functionLinenumber: 5149
    functionLinenumberEnd: 5161
    functionName: unpack_item
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - sbuf_push
    - struct tlv_ops*::unpack_item
    - assert
    linkageType: ''
    returnType: int
    signature: "int unpack_item(uint16_t mtid, enum isis_tlv_context context,\n\t\t
      \      uint8_t tlv_type, uint8_t len, struct stream *s,\n\t\t       struct sbuf
      *log, void *dest, int indent)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_tlvs.c:5173,1
    - Dst: IS_COMPAT_MT_TLV
      Src: /src/frr/isisd/isis_tlvs.c:5176,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:5178,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_tlvs.c:5182,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:5184,1
    - Dst: isis_mtid2str_fake
      Src: /src/frr/isisd/isis_tlvs.c:5185,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:5187,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:5194,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_tlvs.c:5198,1
    - Dst: unpack_item
      Src: /src/frr/isisd/isis_tlvs.c:5219,1
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_tlvs.c:5224,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 7
    argNames:
    - context
    - tlv_type
    - tlv_len
    - s
    - log
    - dest
    - indent
    argTypes:
    - enum isis_tlv_context
    - uint8_t
    - uint8_t
    - struct stream*
    - struct sbuf*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5228
      start: 5163
    functionDepth: 2
    functionLinenumber: 5163
    functionLinenumberEnd: 5228
    functionName: unpack_tlv_with_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - unpack_item
    - stream_forward_getp
    - stream_getw
    - sbuf_push
    - isis_mtid2str_fake
    - IS_COMPAT_MT_TLV
    - stream_get_getp
    linkageType: ''
    returnType: int
    signature: "int unpack_tlv_with_items(enum isis_tlv_context context,\n\t\t\t\t
      uint8_t tlv_type, uint8_t tlv_len,\n\t\t\t\t struct stream *s, struct sbuf *log,
      void *dest,\n\t\t\t\t int indent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct isis_item_list*
    - struct isis_item_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5240
      start: 5232
    functionDepth: 0
    functionLinenumber: 5232
    functionLinenumberEnd: 5240
    functionName: isis_mt_item_list_cmp
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_mt_item_list_cmp(const struct isis_item_list *a,\n\t\t\t\t
      const struct isis_item_list *b)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5250,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:5252,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5253,1
    - Dst: RB_INSERT
      Src: /src/frr/isisd/isis_tlvs.c:5255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - m
    - mtid
    argTypes:
    - struct isis_mt_item_list*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5259
      start: 5245
    functionDepth: 1
    functionLinenumber: 5245
    functionLinenumberEnd: 5259
    functionName: isis_get_mt_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 4
    functionsReached:
    - isis_lookup_mt_items
    - init_item_list
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: struct isis_item_list
    signature: "struct isis_item_list *isis_get_mt_items(struct isis_mt_item_list
      *m,\n\t\t\t\t\t uint16_t mtid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/isisd/isis_tlvs.c:5266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - m
    - mtid
    argTypes:
    - struct isis_mt_item_list*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5267
      start: 5261
    functionDepth: 1
    functionLinenumber: 5261
    functionLinenumberEnd: 5267
    functionName: isis_lookup_mt_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct isis_item_list
    signature: "struct isis_item_list *isis_lookup_mt_items(struct isis_mt_item_list
      *m,\n\t\t\t\t\t    uint16_t mtid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5275,1
    - Dst: RB_REMOVE
      Src: /src/frr/isisd/isis_tlvs.c:5276,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:5277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - context
    - type
    - m
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_mt_item_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5279
      start: 5269
    functionDepth: 3
    functionLinenumber: 5269
    functionLinenumberEnd: 5279
    functionName: free_mt_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XFREE
    - RB_REMOVE
    - free_items
    linkageType: ''
    returnType: void
    signature: "void free_mt_items(enum isis_tlv_context context,\n\t\t\t  enum isis_tlv_type
      type, struct isis_mt_item_list *m)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5275,1
    - Dst: RB_REMOVE
      Src: /src/frr/isisd/isis_tlvs.c:5276,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:5277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5278
      start: 5274
    functionDepth: 3
    functionLinenumber: 5274
    functionLinenumberEnd: 5278
    functionName: RB_FOREACH_SAFE
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 13
    functionsReached:
    - XFREE
    - RB_REMOVE
    - free_items
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH_SAFE (n, isis_mt_item_list, m, nnext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_items_
      Src: /src/frr/isisd/isis_tlvs.c:5289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - context
    - type
    - m
    - buf
    - json
    - indent
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_mt_item_list*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5291
      start: 5281
    functionDepth: 3
    functionLinenumber: 5281
    functionLinenumberEnd: 5291
    functionName: format_mt_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - format_items_
    linkageType: ''
    returnType: void
    signature: "void format_mt_items(enum isis_tlv_context context,\n\t\t\t    enum
      isis_tlv_type type,\n\t\t\t    struct isis_mt_item_list *m, struct sbuf *buf,\n\t\t\t
      \   struct json_object *json, int indent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: format_items_
      Src: /src/frr/isisd/isis_tlvs.c:5289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5290
      start: 5288
    functionDepth: 3
    functionLinenumber: 5288
    functionLinenumberEnd: 5290
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 82
    functionsReached:
    - format_items_
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH (n, isis_mt_item_list, m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pack_items_
      Src: /src/frr/isisd/isis_tlvs.c:5305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 8
    argNames:
    - context
    - type
    - m
    - s
    - fragment_tlvs
    - pe
    - (*new_fragment)(struct list *l)
    - new_fragment_arg
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_mt_item_list*
    - struct stream*
    - struct isis_tlvs**
    - struct pack_order_entry*
    - struct isis_tlvs*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5312
      start: 5293
    functionDepth: 4
    functionLinenumber: 5293
    functionLinenumberEnd: 5312
    functionName: pack_mt_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - pack_items_
    linkageType: ''
    returnType: int
    signature: "int pack_mt_items(enum isis_tlv_context context, enum isis_tlv_type
      type,\n\t\t\t struct isis_mt_item_list *m, struct stream *s,\n\t\t\t struct
      isis_tlvs **fragment_tlvs,\n\t\t\t const struct pack_order_entry *pe,\n\t\t\t
      struct isis_tlvs *(*new_fragment)(struct list *l),\n\t\t\t struct list *new_fragment_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pack_items_
      Src: /src/frr/isisd/isis_tlvs.c:5305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5309
      start: 5302
    functionDepth: 4
    functionLinenumber: 5302
    functionLinenumberEnd: 5309
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 82
    functionsReached:
    - pack_items_
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH (n, isis_mt_item_list, m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_INIT
      Src: /src/frr/isisd/isis_tlvs.c:5321,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5324,1
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - context
    - type
    - src
    - dest
    argTypes:
    - enum isis_tlv_context
    - enum isis_tlv_type
    - struct isis_mt_item_list*
    - struct isis_mt_item_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5326
      start: 5314
    functionDepth: 3
    functionLinenumber: 5314
    functionLinenumberEnd: 5326
    functionName: copy_mt_items
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - RB_INIT
    - copy_items
    - isis_get_mt_items
    linkageType: ''
    returnType: void
    signature: "void copy_mt_items(enum isis_tlv_context context,\n\t\t\t  enum isis_tlv_type
      type,\n\t\t\t  struct isis_mt_item_list *src,\n\t\t\t  struct isis_mt_item_list
      *dest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5324,1
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5325
      start: 5323
    functionDepth: 3
    functionLinenumber: 5323
    functionLinenumberEnd: 5325
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 82
    functionsReached:
    - copy_items
    - isis_get_mt_items
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH (n, isis_mt_item_list, src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:5334,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5336,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5337,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5338,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5339,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5340,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5341,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5342,1
    - Dst: RB_INIT
      Src: /src/frr/isisd/isis_tlvs.c:5343,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5344,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5345,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5346,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5347,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5348,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5349,1
    - Dst: RB_INIT
      Src: /src/frr/isisd/isis_tlvs.c:5350,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:5351,1
    - Dst: RB_INIT
      Src: /src/frr/isisd/isis_tlvs.c:5352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5355
      start: 5330
    functionDepth: 1
    functionLinenumber: 5330
    functionLinenumberEnd: 5355
    functionName: isis_alloc_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - RB_INIT
    - init_item_list
    - XCALLOC
    linkageType: ''
    returnType: struct isis_tlvs
    signature: struct isis_tlvs *isis_alloc_tlvs(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:5359,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5361,1
    - Dst: copy_tlv_purge_originator
      Src: /src/frr/isisd/isis_tlvs.c:5365,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5367,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5370,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5375,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5378,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5381,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5384,1
    - Dst: copy_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5387,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5390,1
    - Dst: copy_tlv_protocols_supported
      Src: /src/frr/isisd/isis_tlvs.c:5393,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5396,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5399,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5402,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5405,1
    - Dst: copy_tlv_te_router_id
      Src: /src/frr/isisd/isis_tlvs.c:5408,1
    - Dst: copy_tlv_te_router_id_ipv6
      Src: /src/frr/isisd/isis_tlvs.c:5411,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5413,1
    - Dst: copy_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5416,1
    - Dst: copy_tlv_dynamic_hostname
      Src: /src/frr/isisd/isis_tlvs.c:5419,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5421,1
    - Dst: copy_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5424,1
    - Dst: copy_tlv_threeway_adj
      Src: /src/frr/isisd/isis_tlvs.c:5427,1
    - Dst: copy_tlv_router_cap
      Src: /src/frr/isisd/isis_tlvs.c:5429,1
    - Dst: copy_tlv_spine_leaf
      Src: /src/frr/isisd/isis_tlvs.c:5431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - tlvs
    argTypes:
    - struct isis_tlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5434
      start: 5357
    functionDepth: 4
    functionLinenumber: 5357
    functionLinenumberEnd: 5434
    functionName: isis_copy_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - copy_tlv_te_router_id_ipv6
    - copy_tlv_protocols_supported
    - copy_tlv_purge_originator
    - XCALLOC
    - copy_mt_items
    - copy_items
    - copy_tlv_dynamic_hostname
    - copy_tlv_threeway_adj
    - copy_tlv_spine_leaf
    - copy_tlv_te_router_id
    - copy_tlv_router_cap
    linkageType: ''
    returnType: struct isis_tlvs
    signature: struct isis_tlvs *isis_copy_tlvs(struct isis_tlvs *tlvs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: format_tlv_protocols_supported
      Src: /src/frr/isisd/isis_tlvs.c:5438,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5441,1
    - Dst: format_tlv_purge_originator
      Src: /src/frr/isisd/isis_tlvs.c:5444,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5446,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_tlvs.c:5451,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:5453,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5455,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5459,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5462,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5465,1
    - Dst: format_tlv_dynamic_hostname
      Src: /src/frr/isisd/isis_tlvs.c:5468,1
    - Dst: format_tlv_te_router_id
      Src: /src/frr/isisd/isis_tlvs.c:5469,1
    - Dst: format_tlv_te_router_id_ipv6
      Src: /src/frr/isisd/isis_tlvs.c:5470,1
    - Dst: format_tlv_router_cap_json
      Src: /src/frr/isisd/isis_tlvs.c:5473,1
    - Dst: format_tlv_router_cap
      Src: /src/frr/isisd/isis_tlvs.c:5475,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5477,1
    - Dst: format_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5480,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5483,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5486,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5489,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5492,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5495,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5498,1
    - Dst: format_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5501,1
    - Dst: format_items
      Src: /src/frr/isisd/isis_tlvs.c:5504,1
    - Dst: format_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5507,1
    - Dst: format_tlv_threeway_adj
      Src: /src/frr/isisd/isis_tlvs.c:5510,1
    - Dst: format_tlv_spine_leaf
      Src: /src/frr/isisd/isis_tlvs.c:5512,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 4
    argNames:
    - tlvs
    - buf
    - json
    - indent
    argTypes:
    - struct isis_tlvs*
    - struct sbuf*
    - struct json_object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5513
      start: 5436
    functionDepth: 4
    functionLinenumber: 5436
    functionLinenumberEnd: 5513
    functionName: format_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - format_tlv_te_router_id_ipv6
    - format_tlv_router_cap
    - format_tlv_te_router_id
    - format_tlv_protocols_supported
    - format_tlv_threeway_adj
    - format_tlv_dynamic_hostname
    - sbuf_push
    - format_mt_items
    - format_items
    - json_object_string_add
    - format_tlv_purge_originator
    - format_tlv_router_cap_json
    - format_tlv_spine_leaf
    linkageType: ''
    returnType: void
    signature: void format_tlvs(struct isis_tlvs *tlvs, struct sbuf *buf, struct json_object
      *json, int indent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: format_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:5518,1
    - Dst: sbuf_buf
      Src: /src/frr/isisd/isis_tlvs.c:5523,1
    - Dst: sbuf_init
      Src: /src/frr/isisd/isis_tlvs.c:5524,1
    - Dst: sbuf_reset
      Src: /src/frr/isisd/isis_tlvs.c:5526,1
    - Dst: format_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:5527,1
    - Dst: sbuf_buf
      Src: /src/frr/isisd/isis_tlvs.c:5528,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - tlvs
    - json
    argTypes:
    - struct isis_tlvs*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5530
      start: 5515
    functionDepth: 5
    functionLinenumber: 5515
    functionLinenumberEnd: 5530
    functionName: isis_format_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - format_tlvs
    - sbuf_init
    - sbuf_reset
    - sbuf_buf
    linkageType: ''
    returnType: char
    signature: char *isis_format_tlvs(struct isis_tlvs *tlvs, struct json_object *json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5537,1
    - Dst: free_tlv_purge_originator
      Src: /src/frr/isisd/isis_tlvs.c:5538,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5539,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5541,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5543,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5545,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5547,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5548,1
    - Dst: free_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5550,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5551,1
    - Dst: free_tlv_protocols_supported
      Src: /src/frr/isisd/isis_tlvs.c:5553,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5554,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5556,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5558,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5560,1
    - Dst: free_tlv_te_router_id
      Src: /src/frr/isisd/isis_tlvs.c:5562,1
    - Dst: free_tlv_te_router_id_ipv6
      Src: /src/frr/isisd/isis_tlvs.c:5563,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5564,1
    - Dst: free_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5566,1
    - Dst: free_tlv_dynamic_hostname
      Src: /src/frr/isisd/isis_tlvs.c:5568,1
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:5569,1
    - Dst: free_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5570,1
    - Dst: free_tlv_threeway_adj
      Src: /src/frr/isisd/isis_tlvs.c:5572,1
    - Dst: free_tlv_router_cap
      Src: /src/frr/isisd/isis_tlvs.c:5573,1
    - Dst: free_tlv_spine_leaf
      Src: /src/frr/isisd/isis_tlvs.c:5574,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:5576,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - tlvs
    argTypes:
    - struct isis_tlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5577
      start: 5532
    functionDepth: 4
    functionLinenumber: 5532
    functionLinenumberEnd: 5577
    functionName: isis_free_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - free_tlv_te_router_id_ipv6
    - free_items
    - free_tlv_purge_originator
    - free_tlv_spine_leaf
    - free_tlv_router_cap
    - free_tlv_te_router_id
    - free_mt_items
    - free_tlv_dynamic_hostname
    - XFREE
    - free_tlv_protocols_supported
    - free_tlv_threeway_adj
    linkageType: ''
    returnType: void
    signature: void isis_free_tlvs(struct isis_tlvs *tlvs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5581,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5582,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5584,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:5593,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:5594,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_tlvs.c:5595,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5597
      start: 5579
    functionDepth: 1
    functionLinenumber: 5579
    functionLinenumberEnd: 5597
    functionName: add_padding
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - stream_put
    - STREAM_WRITEABLE
    - stream_putc
    linkageType: ''
    returnType: void
    signature: void add_padding(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:5604,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5604,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:5606,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5606,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:5607,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5607,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:5608,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - s
    - checksum
    - rem_lifetime
    argTypes:
    - struct stream*
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5609
      start: 5601
    functionDepth: 1
    functionLinenumber: 5601
    functionLinenumberEnd: 5609
    functionName: safe_auth_md5
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memset
    - STREAM_DATA
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void safe_auth_md5(struct stream *s, uint16_t *checksum,\n\t\t\t  uint16_t
      *rem_lifetime)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:5614,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5614,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:5616,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - s
    - checksum
    - rem_lifetime
    argTypes:
    - struct stream*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5617
      start: 5611
    functionDepth: 1
    functionLinenumber: 5611
    functionLinenumberEnd: 5617
    functionName: restore_auth_md5
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void restore_auth_md5(struct stream *s, uint16_t checksum,\n\t\t\t
      \    uint16_t rem_lifetime)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: safe_auth_md5
      Src: /src/frr/isisd/isis_tlvs.c:5626,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:5628,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5628,1
    - Dst: HMAC
      Src: /src/frr/isisd/isis_tlvs.c:5630,1
    - Dst: EVP_md5
      Src: /src/frr/isisd/isis_tlvs.c:5630,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5631,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:5632,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:5634,1
    - Dst: hmac_md5
      Src: /src/frr/isisd/isis_tlvs.c:5636,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5636,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:5636,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:5639,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:5640,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:5640,1
    - Dst: restore_auth_md5
      Src: /src/frr/isisd/isis_tlvs.c:5643,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - auth
    - s
    - is_lsp
    argTypes:
    - struct isis_auth*
    - struct stream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5644
      start: 5619
    functionDepth: 2
    functionLinenumber: 5619
    functionLinenumberEnd: 5644
    functionName: update_auth_hmac_md5
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memset
    - EVP_md5
    - STREAM_DATA
    - hmac_md5
    - stream_get_endp
    - restore_auth_md5
    - HMAC
    - safe_auth_md5
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void update_auth_hmac_md5(struct isis_auth *auth, struct stream *s,\n\t\t\t\t
      bool is_lsp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: update_auth_hmac_md5
      Src: /src/frr/isisd/isis_tlvs.c:5652,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - tlvs
    - s
    - is_lsp
    argTypes:
    - struct isis_tlvs*
    - struct stream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5654
      start: 5646
    functionDepth: 3
    functionLinenumber: 5646
    functionLinenumberEnd: 5654
    functionName: update_auth
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - update_auth_hmac_md5
    linkageType: ''
    returnType: void
    signature: void update_auth(struct isis_tlvs *tlvs, struct stream *s, bool is_lsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pack_items
      Src: /src/frr/isisd/isis_tlvs.c:5668,1
    - Dst: pack_mt_items
      Src: /src/frr/isisd/isis_tlvs.c:5674,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - pe
    - tlvs
    - stream
    - fragment_tlvs
    - (*new_fragment)(struct list *l)
    - new_fragment_arg
    argTypes:
    - struct pack_order_entry*
    - struct isis_tlvs*
    - struct stream*
    - struct isis_tlvs**
    - struct isis_tlvs*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5680
      start: 5656
    functionDepth: 5
    functionLinenumber: 5656
    functionLinenumberEnd: 5680
    functionName: handle_pack_entry
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - pack_items
    - pack_mt_items
    linkageType: ''
    returnType: int
    signature: "int handle_pack_entry(const struct pack_order_entry *pe,\n\t\t\t     struct
      isis_tlvs *tlvs, struct stream *stream,\n\t\t\t     struct isis_tlvs **fragment_tlvs,\n\t\t\t
      \    struct isis_tlvs *(*new_fragment)(struct list *l),\n\t\t\t     struct list
      *new_fragment_arg)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: pack_items
      Src: /src/frr/isisd/isis_tlvs.c:5692,1
    - Dst: pack_tlv_purge_originator
      Src: /src/frr/isisd/isis_tlvs.c:5699,1
    - Dst: copy_tlv_purge_originator
      Src: /src/frr/isisd/isis_tlvs.c:5704,1
    - Dst: pack_tlv_protocols_supported
      Src: /src/frr/isisd/isis_tlvs.c:5707,1
    - Dst: copy_tlv_protocols_supported
      Src: /src/frr/isisd/isis_tlvs.c:5711,1
    - Dst: pack_items
      Src: /src/frr/isisd/isis_tlvs.c:5716,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5721,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_tlvs.c:5728,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:5730,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_tlvs.c:5731,1
    - Dst: pack_items
      Src: /src/frr/isisd/isis_tlvs.c:5735,1
    - Dst: copy_items
      Src: /src/frr/isisd/isis_tlvs.c:5741,1
    - Dst: pack_tlv_dynamic_hostname
      Src: /src/frr/isisd/isis_tlvs.c:5747,1
    - Dst: copy_tlv_dynamic_hostname
      Src: /src/frr/isisd/isis_tlvs.c:5752,1
    - Dst: pack_tlv_router_cap
      Src: /src/frr/isisd/isis_tlvs.c:5754,1
    - Dst: copy_tlv_router_cap
      Src: /src/frr/isisd/isis_tlvs.c:5759,1
    - Dst: pack_tlv_te_router_id
      Src: /src/frr/isisd/isis_tlvs.c:5762,1
    - Dst: copy_tlv_te_router_id
      Src: /src/frr/isisd/isis_tlvs.c:5767,1
    - Dst: pack_tlv_te_router_id_ipv6
      Src: /src/frr/isisd/isis_tlvs.c:5770,1
    - Dst: copy_tlv_te_router_id_ipv6
      Src: /src/frr/isisd/isis_tlvs.c:5775,1
    - Dst: pack_tlv_threeway_adj
      Src: /src/frr/isisd/isis_tlvs.c:5778,1
    - Dst: copy_tlv_threeway_adj
      Src: /src/frr/isisd/isis_tlvs.c:5783,1
    - Dst: pack_tlv_spine_leaf
      Src: /src/frr/isisd/isis_tlvs.c:5786,1
    - Dst: copy_tlv_spine_leaf
      Src: /src/frr/isisd/isis_tlvs.c:5791,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_tlvs.c:5794,1
    - Dst: handle_pack_entry
      Src: /src/frr/isisd/isis_tlvs.c:5796,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 80
    argCount: 5
    argNames:
    - tlvs
    - stream
    - fragment_tlvs
    - (*new_fragment)(struct list *l)
    - new_fragment_arg
    argTypes:
    - struct isis_tlvs*
    - struct stream*
    - struct isis_tlvs*
    - struct isis_tlvs*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5805
      start: 5682
    functionDepth: 6
    functionLinenumber: 5682
    functionLinenumberEnd: 5805
    functionName: pack_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 3
    functionsReached:
    - pack_items
    - pack_tlv_spine_leaf
    - copy_tlv_protocols_supported
    - copy_tlv_dynamic_hostname
    - stream_putc
    - pack_tlv_protocols_supported
    - copy_items
    - array_size
    - pack_tlv_threeway_adj
    - copy_tlv_te_router_id_ipv6
    - pack_tlv_dynamic_hostname
    - pack_tlv_router_cap
    - copy_tlv_spine_leaf
    - copy_tlv_te_router_id
    - copy_tlv_router_cap
    - pack_tlv_te_router_id_ipv6
    - pack_tlv_te_router_id
    - copy_tlv_purge_originator
    - handle_pack_entry
    - STREAM_WRITEABLE
    - copy_tlv_threeway_adj
    - pack_tlv_purge_originator
    linkageType: ''
    returnType: int
    signature: "int pack_tlvs(struct isis_tlvs *tlvs, struct stream *stream,\n\t\t
      \    struct isis_tlvs *fragment_tlvs,\n\t\t     struct isis_tlvs *(*new_fragment)(struct
      list *l),\n\t\t     struct list *new_fragment_arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pack_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:5812,1
    - Dst: add_padding
      Src: /src/frr/isisd/isis_tlvs.c:5817,1
    - Dst: stream_putw_at
      Src: /src/frr/isisd/isis_tlvs.c:5820,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:5820,1
    - Dst: update_auth
      Src: /src/frr/isisd/isis_tlvs.c:5823,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - tlvs
    - stream
    - len_pointer
    - pad
    - is_lsp
    argTypes:
    - struct isis_tlvs*
    - struct stream*
    - size_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5826
      start: 5807
    functionDepth: 7
    functionLinenumber: 5807
    functionLinenumberEnd: 5826
    functionName: isis_pack_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - add_padding
    - update_auth
    - stream_get_endp
    - stream_putw_at
    - pack_tlvs
    linkageType: ''
    returnType: int
    signature: "int isis_pack_tlvs(struct isis_tlvs *tlvs, struct stream *stream,\n\t\t
      \  size_t len_pointer, bool pad, bool is_lsp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:5830,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_tlvs.c:5832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5834
      start: 5828
    functionDepth: 2
    functionLinenumber: 5828
    functionLinenumberEnd: 5834
    functionName: new_fragment
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - listnode_add
    - isis_alloc_tlvs
    linkageType: ''
    returnType: struct isis_tlvs
    signature: struct isis_tlvs *new_fragment(struct list *l)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_buf
      Src: /src/frr/isisd/isis_tlvs.c:5940,1
    - Dst: sbuf_init
      Src: /src/frr/isisd/isis_tlvs.c:5941,1
    - Dst: sbuf_reset
      Src: /src/frr/isisd/isis_tlvs.c:5943,1
    - Dst: STREAM_READABLE
      Src: /src/frr/isisd/isis_tlvs.c:5944,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_tlvs.c:5945,1
    - Dst: STREAM_READABLE
      Src: /src/frr/isisd/isis_tlvs.c:5947,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:5951,1
    - Dst: unpack_tlvs
      Src: /src/frr/isisd/isis_tlvs.c:5952,1
    - Dst: sbuf_buf
      Src: /src/frr/isisd/isis_tlvs.c:5955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - avail_len
    - stream
    - dest
    - log
    argTypes:
    - size_t
    - struct stream*
    - struct isis_tlvs**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5959
      start: 5932
    functionDepth: 2
    functionLinenumber: 5932
    functionLinenumberEnd: 5959
    functionName: isis_unpack_tlvs
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - STREAM_READABLE
    - sbuf_init
    - sbuf_reset
    - sbuf_buf
    - sbuf_push
    - isis_alloc_tlvs
    - unpack_tlvs
    linkageType: ''
    returnType: int
    signature: "int isis_unpack_tlvs(size_t avail_len, struct stream *stream,\n\t\t
      \    struct isis_tlvs **dest, const char **log)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name_
    - ','
    - _desc_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5965
      start: 5961
    functionDepth: 0
    functionLinenumber: 5961
    functionLinenumberEnd: 5965
    functionName: TLV_OPS
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_OPS(_name_, _desc_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name_
    - ','
    - _desc_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5976
      start: 5966
    functionDepth: 0
    functionLinenumber: 5966
    functionLinenumberEnd: 5976
    functionName: ITEM_TLV_OPS
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ITEM_TLV_OPS(_name_, _desc_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name_
    - ','
    - _desc_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5981
      start: 5977
    functionDepth: 0
    functionLinenumber: 5977
    functionLinenumberEnd: 5981
    functionName: SUBTLV_OPS
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SUBTLV_OPS(_name_, _desc_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name_
    - ','
    - _desc_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5984
      start: 5982
    functionDepth: 0
    functionLinenumber: 5982
    functionLinenumberEnd: 5984
    functionName: ITEM_SUBTLV_OPS
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ITEM_SUBTLV_OPS(_name_, _desc_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free_items
      Src: /src/frr/isisd/isis_tlvs.c:6052,1
    - Dst: init_item_list
      Src: /src/frr/isisd/isis_tlvs.c:6053,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6058,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6063,1
    - Dst: MIN
      Src: /src/frr/isisd/isis_tlvs.c:6064,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6068,1
    - Dst: MIN
      Src: /src/frr/isisd/isis_tlvs.c:6069,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6072,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - tlvs
    - passwd
    argTypes:
    - struct isis_tlvs*
    - struct isis_passwd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6073
      start: 6050
    functionDepth: 3
    functionLinenumber: 6050
    functionLinenumberEnd: 6073
    functionName: isis_tlvs_add_auth
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - MIN
    - free_items
    - XCALLOC
    - append_item
    - init_item_list
    - memcpy
    linkageType: ''
    returnType: void
    signature: void isis_tlvs_add_auth(struct isis_tlvs *tlvs, struct isis_passwd
      *passwd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_tlvs.c:6081,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6083,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6086,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6087,1
    - Dst: isis_tlvs_add_lan_neighbors
      Src: /src/frr/isisd/isis_tlvs.c:6091,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_tlvs.c:6096,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6098,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6100,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6101,1
    - Dst: isis_tlvs_set_protocols_supported
      Src: /src/frr/isisd/isis_tlvs.c:6105,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:6109,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6112,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6113,1
    - Dst: isis_tlvs_add_mt_router_info
      Src: /src/frr/isisd/isis_tlvs.c:6120,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6123,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6128,1
    - Dst: isis_tlvs_add_ipv4_address
      Src: /src/frr/isisd/isis_tlvs.c:6131,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6133,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6135,1
    - Dst: isis_tlvs_add_ipv4_addresses
      Src: /src/frr/isisd/isis_tlvs.c:6139,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_tlvs.c:6146,1
    - Dst: isis_tlvs_add_ipv4_address
      Src: /src/frr/isisd/isis_tlvs.c:6147,1
    - Dst: isis_tlvs_add_ipv6_addresses
      Src: /src/frr/isisd/isis_tlvs.c:6154,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_tlvs.c:6161,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6166,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6169,1
    - Dst: isis_tlvs_add_global_ipv6_addresses
      Src: /src/frr/isisd/isis_tlvs.c:6174,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_tlvs.c:6181,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6186,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6189,1
    - Dst: auth_validator_cleartxt
      Src: /src/frr/isisd/isis_tlvs.c:6198,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6203,1
    - Dst: auth_validator_hmac_md5
      Src: /src/frr/isisd/isis_tlvs.c:6206,1
    - Dst: safe_auth_md5
      Src: /src/frr/isisd/isis_tlvs.c:6215,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:6217,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:6217,1
    - Dst: HMAC
      Src: /src/frr/isisd/isis_tlvs.c:6219,1
    - Dst: EVP_md5
      Src: /src/frr/isisd/isis_tlvs.c:6219,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:6220,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:6221,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6223,1
    - Dst: hmac_md5
      Src: /src/frr/isisd/isis_tlvs.c:6225,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:6225,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_tlvs.c:6225,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6228,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_tlvs.c:6228,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6230,1
    - Dst: restore_auth_md5
      Src: /src/frr/isisd/isis_tlvs.c:6233,1
    - Dst: isis_tlvs_auth_is_valid
      Src: /src/frr/isisd/isis_tlvs.c:6243,1
    - Dst: ISIS_AUTH_OK
      Src: /src/frr/isisd/isis_tlvs.c:6248,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_tlvs.c:6251,1
    - Dst: ISIS_AUTH_TYPE_FAILURE
      Src: /src/frr/isisd/isis_tlvs.c:6264,1
    - Dst: isis_tlvs_area_addresses_match
      Src: /src/frr/isisd/isis_tlvs.c:6274,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_tlvs.c:6285,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6287,1
    - Dst: tlvs_area_addresses_to_adj
      Src: /src/frr/isisd/isis_tlvs.c:6295,1
    - Dst: XREALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6304,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:6310,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6324,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6331,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - tlvs
    - addresses
    argTypes:
    - struct isis_tlvs*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6333
      start: 6075
    functionDepth: 2
    functionLinenumber: 6075
    functionLinenumberEnd: 6333
    functionName: isis_tlvs_add_area_addresses
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - auth_validator_hmac_md5
    - isis_tlvs_add_global_ipv6_addresses
    - hmac_md5
    - memcmp
    - restore_auth_md5
    - ISIS_AUTH_TYPE_FAILURE
    - isis_tlvs_area_addresses_match
    - isis_tlvs_auth_is_valid
    - isis_tlvs_add_lan_neighbors
    - isis_tlvs_set_protocols_supported
    - XCALLOC
    - isis_tlvs_add_ipv6_addresses
    - append_item
    - ALL_LIST_ELEMENTS_RO
    - memset
    - EVP_md5
    - auth_validator_cleartxt
    - isis_tlvs_add_mt_router_info
    - array_size
    - safe_auth_md5
    - tlvs_area_addresses_to_adj
    - isis_tlvs_add_ipv4_address
    - HMAC
    - XFREE
    - memcpy
    - isis_tlvs_add_ipv4_addresses
    - STREAM_DATA
    - stream_get_endp
    - ISIS_AUTH_OK
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_add_area_addresses(struct isis_tlvs *tlvs,\n\t\t\t\t
      \ struct list *addresses)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6365,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6370,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - tlvs
    - adj
    - changed
    argTypes:
    - struct isis_tlvs*
    - struct isis_adjacency*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6371
      start: 6335
    functionDepth: 0
    functionLinenumber: 6335
    functionLinenumberEnd: 6371
    functionName: tlvs_protocols_supported_to_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void tlvs_protocols_supported_to_adj(struct isis_tlvs *tlvs,\n\t\t\t\t\t
      \   struct isis_adjacency *adj,\n\t\t\t\t\t    bool *changed)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/isisd/isis_tlvs.c:6389,1
    - Dst: XREALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6396,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:6401,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6414,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_tlvs.c:6423,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - tlvs
    - adj
    - changed
    argTypes:
    - struct isis_tlvs*
    - struct isis_adjacency*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6424
      start: 6380
    functionDepth: 1
    functionLinenumber: 6380
    functionLinenumberEnd: 6424
    functionName: tlvs_ipv4_addresses_to_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcmp
    - XREALLOC
    - memset
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void tlvs_ipv4_addresses_to_adj(struct isis_tlvs *tlvs,\n\t\t\t\t
      \      struct isis_adjacency *adj,\n\t\t\t\t       bool *changed)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/isisd/isis_tlvs.c:6435,1
    - Dst: XREALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6442,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:6447,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6460,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_tlvs.c:6469,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - tlvs
    - adj
    - changed
    argTypes:
    - struct isis_tlvs*
    - struct isis_adjacency*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6470
      start: 6426
    functionDepth: 1
    functionLinenumber: 6426
    functionLinenumberEnd: 6470
    functionName: tlvs_ipv6_addresses_to_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcmp
    - XREALLOC
    - memset
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void tlvs_ipv6_addresses_to_adj(struct isis_tlvs *tlvs,\n\t\t\t\t
      \      struct isis_adjacency *adj,\n\t\t\t\t       bool *changed)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/isisd/isis_tlvs.c:6483,1
    - Dst: XREALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6490,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:6496,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6509,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_tlvs.c:6518,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - tlvs
    - adj
    - changed
    argTypes:
    - struct isis_tlvs*
    - struct isis_adjacency*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6519
      start: 6473
    functionDepth: 1
    functionLinenumber: 6473
    functionLinenumberEnd: 6519
    functionName: tlvs_global_ipv6_addresses_to_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcmp
    - XREALLOC
    - memset
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void tlvs_global_ipv6_addresses_to_adj(struct isis_tlvs *tlvs,\n\t\t\t\t\t
      \     struct isis_adjacency *adj,\n\t\t\t\t\t      bool *changed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tlvs_area_addresses_to_adj
      Src: /src/frr/isisd/isis_tlvs.c:6526,1
    - Dst: tlvs_protocols_supported_to_adj
      Src: /src/frr/isisd/isis_tlvs.c:6527,1
    - Dst: tlvs_ipv4_addresses_to_adj
      Src: /src/frr/isisd/isis_tlvs.c:6528,1
    - Dst: tlvs_ipv6_addresses_to_adj
      Src: /src/frr/isisd/isis_tlvs.c:6529,1
    - Dst: tlvs_global_ipv6_addresses_to_adj
      Src: /src/frr/isisd/isis_tlvs.c:6530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - tlvs
    - adj
    - changed
    argTypes:
    - struct isis_tlvs*
    - struct isis_adjacency*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6531
      start: 6521
    functionDepth: 2
    functionLinenumber: 6521
    functionLinenumberEnd: 6531
    functionName: isis_tlvs_to_adj
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - tlvs_global_ipv6_addresses_to_adj
    - tlvs_ipv6_addresses_to_adj
    - tlvs_ipv4_addresses_to_adj
    - tlvs_area_addresses_to_adj
    - tlvs_protocols_supported_to_adj
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_to_adj(struct isis_tlvs *tlvs, struct isis_adjacency
      *adj,\n\t\t      bool *changed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6539,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - tlvs
    - snpa
    argTypes:
    - struct isis_tlvs*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6544
      start: 6533
    functionDepth: 0
    functionLinenumber: 6533
    functionLinenumberEnd: 6544
    functionName: isis_tlvs_own_snpa_found
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool isis_tlvs_own_snpa_found(struct isis_tlvs *tlvs, uint8_t *snpa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6548,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6551,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - tlvs
    - lsp
    argTypes:
    - struct isis_tlvs*
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6557
      start: 6546
    functionDepth: 1
    functionLinenumber: 6546
    functionLinenumberEnd: 6557
    functionName: isis_tlvs_add_lsp_entry
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - append_item
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void isis_tlvs_add_lsp_entry(struct isis_tlvs *tlvs, struct isis_lsp
      *lsp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6567,1
    - Dst: lspdb_find_gteq
      Src: /src/frr/isisd/isis_tlvs.c:6568,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6573,1
    - Dst: isis_tlvs_add_lsp_entry
      Src: /src/frr/isisd/isis_tlvs.c:6577,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 6
    argNames:
    - tlvs
    - start_id
    - stop_id
    - num_lsps
    - head
    - last_lsp
    argTypes:
    - struct isis_tlvs*
    - uint8_t*
    - uint8_t*
    - uint16_t
    - struct lspdb_head*
    - struct isis_lsp**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6580
      start: 6559
    functionDepth: 2
    functionLinenumber: 6559
    functionLinenumberEnd: 6580
    functionName: isis_tlvs_add_csnp_entries
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_add_lsp_entry
    - lspdb_find_gteq
    - memcpy
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_add_csnp_entries(struct isis_tlvs *tlvs, uint8_t *start_id,\n\t\t\t\tuint8_t
      *stop_id, uint16_t num_lsps,\n\t\t\t\tstruct lspdb_head *head,\n\t\t\t\tstruct
      isis_lsp **last_lsp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_tlvs.c:6573,1
    - Dst: isis_tlvs_add_lsp_entry
      Src: /src/frr/isisd/isis_tlvs.c:6577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6579
      start: 6572
    functionDepth: 2
    functionLinenumber: 6572
    functionLinenumberEnd: 6579
    functionName: frr_each_from
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_add_lsp_entry
    - memcmp
    linkageType: ''
    returnType: void
    signature: void frr_each_from (lspdb, head, lsp, first)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:6585,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_tlvs.c:6587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - tlvs
    - hostname
    argTypes:
    - struct isis_tlvs*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6588
      start: 6582
    functionDepth: 1
    functionLinenumber: 6582
    functionLinenumberEnd: 6588
    functionName: isis_tlvs_set_dynamic_hostname
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_set_dynamic_hostname(struct isis_tlvs *tlvs,\n\t\t\t\t
      \   const char *hostname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tlvs
    argTypes:
    - struct isis_tlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6600
      start: 6591
    functionDepth: 0
    functionLinenumber: 6591
    functionLinenumberEnd: 6600
    functionName: isis_tlvs_init_router_capability
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_router_cap
    signature: struct isis_router_cap *isis_tlvs_init_router_capability(struct isis_tlvs
      *tlvs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_tlvs.c:6609,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6614,1
    - Dst: memset
      Src: /src/frr/isisd/isis_tlvs.c:6617,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6618,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6620,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:6626,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:6628,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_tlvs.c:6630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - tlvs
    - fa
    - algorithm
    - sysid
    argTypes:
    - struct isis_tlvs*
    - struct flex_algo*
    - int
    - uint8_t*
    assertStmts:
    - condition: (tlvs->router_cap)
      pos:
        line_end: 6608
        line_start: 6608
        source_file: /src/frr/isisd/isis_tlvs.c
    constantsTouched: []
    func_position:
      end: 6634
      start: 6603
    functionDepth: 1
    functionLinenumber: 6603
    functionLinenumberEnd: 6634
    functionName: isis_tlvs_set_router_capability_fad
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - assert
    - memset
    - XCALLOC
    - admin_group_copy
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_set_router_capability_fad(struct isis_tlvs *tlvs,\n\t\t\t\t\t
      struct flex_algo *fa, int algorithm,\n\t\t\t\t\t uint8_t *sysid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - cap
    argTypes:
    - struct isis_router_cap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6645
      start: 6637
    functionDepth: 0
    functionLinenumber: 6637
    functionLinenumberEnd: 6645
    functionName: isis_tlvs_sr_algo_count
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_tlvs_sr_algo_count(const struct isis_router_cap *cap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:6650,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6653,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tlvs
    - id
    argTypes:
    - struct isis_tlvs*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6655
      start: 6647
    functionDepth: 0
    functionLinenumber: 6647
    functionLinenumberEnd: 6655
    functionName: isis_tlvs_set_te_router_id
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_set_te_router_id(struct isis_tlvs *tlvs,\n\t\t\t\tconst
      struct in_addr *id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:6660,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6663,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tlvs
    - id
    argTypes:
    - struct isis_tlvs*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6665
      start: 6657
    functionDepth: 0
    functionLinenumber: 6657
    functionLinenumberEnd: 6665
    functionName: isis_tlvs_set_te_router_id_ipv6
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_set_te_router_id_ipv6(struct isis_tlvs *tlvs,\n\t\t\t\t
      \    const struct in6_addr *id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_tlvs.c:6670,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_tlvs.c:6673,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/isisd/isis_tlvs.c:6674,1
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tlvs
    - dest
    - metric
    argTypes:
    - struct isis_tlvs*
    - struct prefix_ipv4*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6676
      start: 6667
    functionDepth: 1
    functionLinenumber: 6667
    functionLinenumberEnd: 6676
    functionName: isis_tlvs_add_oldstyle_ip_reach
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - append_item
    - apply_mask_ipv4
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_add_oldstyle_ip_reach(struct isis_tlvs *tlvs,\n\t\t\t\t
      \    struct prefix_ipv4 *dest, uint8_t metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6682,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:6683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - exts
    - adj
    argTypes:
    - struct isis_ext_subtlvs*
    - struct isis_adj_sid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6684
      start: 6679
    functionDepth: 1
    functionLinenumber: 6679
    functionLinenumberEnd: 6684
    functionName: isis_tlvs_add_adj_sid
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - SET_SUBTLV
    - append_item
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_add_adj_sid(struct isis_ext_subtlvs *exts,\n\t\t\t
      \  struct isis_adj_sid *adj)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_item
      Src: /src/frr/isisd/isis_tlvs.c:6690,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:6691,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:6693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - exts
    - adj
    argTypes:
    - struct isis_ext_subtlvs*
    - struct isis_adj_sid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6694
      start: 6687
    functionDepth: 1
    functionLinenumber: 6687
    functionLinenumberEnd: 6694
    functionName: isis_tlvs_del_adj_sid
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - delete_item
    - XFREE
    - UNSET_SUBTLV
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_del_adj_sid(struct isis_ext_subtlvs *exts,\n\t\t\t
      \  struct isis_adj_sid *adj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: append_item
      Src: /src/frr/isisd/isis_tlvs.c:6700,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:6701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - exts
    - lan
    argTypes:
    - struct isis_ext_subtlvs*
    - struct isis_lan_adj_sid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6702
      start: 6697
    functionDepth: 1
    functionLinenumber: 6697
    functionLinenumberEnd: 6702
    functionName: isis_tlvs_add_lan_adj_sid
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV
    - append_item
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_add_lan_adj_sid(struct isis_ext_subtlvs *exts,\n\t\t\t
      \      struct isis_lan_adj_sid *lan)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_item
      Src: /src/frr/isisd/isis_tlvs.c:6708,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:6709,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_tlvs.c:6711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - exts
    - lan
    argTypes:
    - struct isis_ext_subtlvs*
    - struct isis_lan_adj_sid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6712
      start: 6705
    functionDepth: 1
    functionLinenumber: 6705
    functionLinenumberEnd: 6712
    functionName: isis_tlvs_del_lan_adj_sid
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 0
    functionsReached:
    - delete_item
    - XFREE
    - UNSET_SUBTLV
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_del_lan_adj_sid(struct isis_ext_subtlvs *exts,\n\t\t\t
      \      struct isis_lan_adj_sid *lan)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_term
      Src: /src/frr/isisd/isis_tlvs.c:6717,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_tlvs.c:6718,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_tlvs.c:6719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ext
    - asla
    argTypes:
    - struct isis_ext_subtlvs*
    - struct isis_asla_subtlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6720
      start: 6714
    functionDepth: 1
    functionLinenumber: 6714
    functionLinenumberEnd: 6720
    functionName: isis_tlvs_del_asla_flex_algo
    functionSourceFile: /src/frr/isisd/isis_tlvs.c
    functionUses: 1
    functionsReached:
    - listnode_delete
    - admin_group_term
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void isis_tlvs_del_asla_flex_algo(struct isis_ext_subtlvs *ext,\n\t\t\t\t
      \ struct isis_asla_subtlvs *asla)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/isisd/isis_ldp_sync.c:57,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:68,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:72,1
    - Dst: isis_ldp_sync_if_start
      Src: /src/frr/isisd/isis_ldp_sync.c:75,1
    - Dst: isis_ldp_sync_if_complete
      Src: /src/frr/isisd/isis_ldp_sync.c:77,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct ldp_igp_sync_if_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 80
    functionName: isis_ldp_sync_state_update
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - CHECK_FLAG
    - ils_debug
    - isis_ldp_sync_if_start
    - isis_ldp_sync_if_complete
    linkageType: ''
    returnType: int
    signature: int isis_ldp_sync_state_update(struct ldp_igp_sync_if_state state)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_ldp_sync.c:87,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:96,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:102,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:103,1
    - Dst: for
      Src: /src/frr/isisd/isis_ldp_sync.c:106,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:106,1
    - Dst: isis_ldp_sync_if_start
      Src: /src/frr/isisd/isis_ldp_sync.c:107,1
    - Dst: isis_ldp_sync_state_req_msg
      Src: /src/frr/isisd/isis_ldp_sync.c:113,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:118,1
    - Dst: memset
      Src: /src/frr/isisd/isis_ldp_sync.c:120,1
    - Dst: strlcpy
      Src: /src/frr/isisd/isis_ldp_sync.c:121,1
    - Dst: zclient_send_opaque
      Src: /src/frr/isisd/isis_ldp_sync.c:125,1
    - Dst: isis_ldp_sync_if_start
      Src: /src/frr/isisd/isis_ldp_sync.c:132,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:148,1
    - Dst: isis_ldp_sync_set_if_metric
      Src: /src/frr/isisd/isis_ldp_sync.c:151,1
    - Dst: isis_ldp_sync_holddown_timer_add
      Src: /src/frr/isisd/isis_ldp_sync.c:152,1
    - Dst: isis_ldp_sync_state_req_msg
      Src: /src/frr/isisd/isis_ldp_sync.c:155,1
    - Dst: isis_ldp_sync_if_complete
      Src: /src/frr/isisd/isis_ldp_sync.c:159,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_ldp_sync.c:174,1
    - Dst: isis_ldp_sync_set_if_metric
      Src: /src/frr/isisd/isis_ldp_sync.c:176,1
    - Dst: isis_ldp_sync_ldp_fail
      Src: /src/frr/isisd/isis_ldp_sync.c:180,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_ldp_sync.c:194,1
    - Dst: isis_ldp_sync_set_if_metric
      Src: /src/frr/isisd/isis_ldp_sync.c:196,1
    - Dst: isis_ldp_sync_adj_state_change
      Src: /src/frr/isisd/isis_ldp_sync.c:200,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:206,1
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_ldp_sync.c:208,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_ldp_sync.c:216,1
    - Dst: isis_ldp_sync_if_start
      Src: /src/frr/isisd/isis_ldp_sync.c:220,1
    - Dst: isis_ldp_sync_set_if_metric
      Src: /src/frr/isisd/isis_ldp_sync.c:224,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_ldp_sync.c:229,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:235,1
    - Dst: ldp_sync_if_down
      Src: /src/frr/isisd/isis_ldp_sync.c:237,1
    - Dst: isis_ldp_sync_if_metric_config
      Src: /src/frr/isisd/isis_ldp_sync.c:243,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:257,1
    - Dst: ldp_sync_if_is_enabled
      Src: /src/frr/isisd/isis_ldp_sync.c:280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:282,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:285,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:312,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:315,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_ldp_sync.c:327,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_ldp_sync.c:343,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:352,1
    - Dst: isis_ldp_sync_set_if_metric
      Src: /src/frr/isisd/isis_ldp_sync.c:355,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:373,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_ldp_sync.c:376,1
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_ldp_sync.c:388,1
    - Dst: zlog_err
      Src: /src/frr/isisd/isis_ldp_sync.c:402,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:404,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:405,1
    - Dst: for
      Src: /src/frr/isisd/isis_ldp_sync.c:408,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:408,1
    - Dst: isis_ldp_sync_ldp_fail
      Src: /src/frr/isisd/isis_ldp_sync.c:409,1
    - Dst: isis_area_ldp_sync_enable
      Src: /src/frr/isisd/isis_ldp_sync.c:417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:422,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:423,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:425,1
    - Dst: isis_if_ldp_sync_enable
      Src: /src/frr/isisd/isis_ldp_sync.c:426,1
    - Dst: isis_area_ldp_sync_disable
      Src: /src/frr/isisd/isis_ldp_sync.c:430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:435,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:436,1
    - Dst: isis_if_ldp_sync_disable
      Src: /src/frr/isisd/isis_ldp_sync.c:437,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:439,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:441,1
    - Dst: isis_area_ldp_sync_set_holddown
      Src: /src/frr/isisd/isis_ldp_sync.c:446,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:452,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:454,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:458,1
    - Dst: isis_if_set_ldp_sync_holddown
      Src: /src/frr/isisd/isis_ldp_sync.c:459,1
    - Dst: isis_if_ldp_sync_enable
      Src: /src/frr/isisd/isis_ldp_sync.c:462,1
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_ldp_sync.c:471,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:477,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:479,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:483,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:487,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_ldp_sync.c:491,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:496,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 73
    argCount: 1
    argNames:
    - announce
    argTypes:
    - struct ldp_igp_sync_announce
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 498
    functionName: isis_ldp_sync_announce_update
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 0
    functionsReached:
    - ldp_sync_if_is_enabled
    - isis_area_ldp_sync_enable
    - isis_if_ldp_sync_disable
    - isis_ldp_sync_if_complete
    - isis_area_ldp_sync_disable
    - memset
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - ldp_sync_if_down
    - EVENT_ARG
    - for
    - isis_if_set_ldp_sync_holddown
    - strlcpy
    - isis_ldp_sync_ldp_fail
    - isis_ldp_sync_if_metric_config
    - zlog_err
    - EVENT_OFF
    - UNSET_FLAG
    - zclient_send_opaque
    - event_add_timer
    - isis_ldp_sync_set_if_metric
    - if_is_pointopoint
    - isis_lookup_by_vrfid
    - CHECK_FLAG
    - ils_debug
    - isis_ldp_sync_holddown_timer_add
    - isis_ldp_sync_if_start
    - isis_if_ldp_sync_enable
    - SET_FLAG
    - isis_ldp_sync_state_req_msg
    - isis_area_ldp_sync_set_holddown
    - lsp_regenerate_schedule
    - isis_ldp_sync_adj_state_change
    linkageType: ''
    returnType: int
    signature: int isis_ldp_sync_announce_update(struct ldp_igp_sync_announce announce)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_ldp_sync.c:343,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:352,1
    - Dst: isis_ldp_sync_set_if_metric
      Src: /src/frr/isisd/isis_ldp_sync.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 356
    functionName: isis_ldp_sync_holddown_timer
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 0
    functionsReached:
    - isis_ldp_sync_set_if_metric
    - ils_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void isis_ldp_sync_holddown_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:373,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_ldp_sync.c:376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 378
    functionName: isis_ldp_sync_holddown_timer_add
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - ils_debug
    linkageType: ''
    returnType: void
    signature: void isis_ldp_sync_holddown_timer_add(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_ldp_sync.c:388,1
    - Dst: zlog_err
      Src: /src/frr/isisd/isis_ldp_sync.c:402,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:404,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:405,1
    - Dst: for
      Src: /src/frr/isisd/isis_ldp_sync.c:408,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:408,1
    - Dst: isis_ldp_sync_ldp_fail
      Src: /src/frr/isisd/isis_ldp_sync.c:409,1
    - Dst: isis_area_ldp_sync_enable
      Src: /src/frr/isisd/isis_ldp_sync.c:417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:422,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:423,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:425,1
    - Dst: isis_if_ldp_sync_enable
      Src: /src/frr/isisd/isis_ldp_sync.c:426,1
    - Dst: isis_area_ldp_sync_disable
      Src: /src/frr/isisd/isis_ldp_sync.c:430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:435,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:436,1
    - Dst: isis_if_ldp_sync_disable
      Src: /src/frr/isisd/isis_ldp_sync.c:437,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:439,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:441,1
    - Dst: isis_area_ldp_sync_set_holddown
      Src: /src/frr/isisd/isis_ldp_sync.c:446,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:452,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:454,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_ldp_sync.c:458,1
    - Dst: isis_if_set_ldp_sync_holddown
      Src: /src/frr/isisd/isis_ldp_sync.c:459,1
    - Dst: isis_if_ldp_sync_enable
      Src: /src/frr/isisd/isis_ldp_sync.c:462,1
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_ldp_sync.c:471,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:477,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:479,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:483,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:487,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_ldp_sync.c:491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct zapi_client_close_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 494
    functionName: isis_ldp_sync_handle_client_close
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 0
    functionsReached:
    - if_is_pointopoint
    - isis_lookup_by_vrfid
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - isis_if_ldp_sync_enable
    - isis_ldp_sync_ldp_fail
    - zlog_err
    - if_is_loopback
    - ils_debug
    - SET_FLAG
    - isis_area_ldp_sync_enable
    - isis_if_ldp_sync_disable
    - isis_area_ldp_sync_disable
    - UNSET_FLAG
    - isis_area_ldp_sync_set_holddown
    - for
    - isis_if_set_ldp_sync_holddown
    linkageType: ''
    returnType: void
    signature: void isis_ldp_sync_handle_client_close(struct zapi_client_close_info
      *info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_ldp_sync.c:511,1
    - Dst: ils_debug
      Src: /src/frr/isisd/isis_ldp_sync.c:514,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:516,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_ldp_sync.c:519,1
    - Dst: isis_ldp_sync_set_if_metric
      Src: /src/frr/isisd/isis_ldp_sync.c:521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 522
    functionName: isis_if_ldp_sync_disable
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 3
    functionsReached:
    - isis_ldp_sync_set_if_metric
    - if_is_loopback
    - ils_debug
    - CHECK_FLAG
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void isis_if_ldp_sync_disable(struct isis_circuit *circuit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_ldp_sync.c:532,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:536,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_ldp_sync.c:538,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 542
    functionName: isis_if_set_ldp_sync_holddown
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 3
    functionsReached:
    - if_is_loopback
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void isis_if_set_ldp_sync_holddown(struct isis_circuit *circuit)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_ldp_sync.c:555,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:559,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:561,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:565,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:569,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:574,1
    - Dst: event_timer_remain
      Src: /src/frr/isisd/isis_ldp_sync.c:579,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:580,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:585,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:587,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_ldp_sync.c:592,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_ldp_sync.c:597,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - circuit
    - vty
    argTypes:
    - struct isis_circuit*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 600
    functionName: isis_circuit_ldp_sync_print_vty
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.c
    functionUses: 0
    functionsReached:
    - if_is_loopback
    - if_is_pointopoint
    - vty_out
    - event_timer_remain
    linkageType: ''
    returnType: void
    signature: "void isis_circuit_ldp_sync_print_vty(struct isis_circuit *circuit,\n\tstruct
      vty *vty)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_pfpacket.c:84,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:90,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:92,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:94,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:96,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pfpacket.c:103,1
    - Dst: setsockopt
      Src: /src/frr/isisd/isis_pfpacket.c:110,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:112,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_pfpacket.c:113,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - fd
    - registerto
    - if_num
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 118
    functionName: isis_multicast_join
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - memset
    - zlog_debug
    - zlog_warn
    - safe_strerror
    - setsockopt
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_multicast_join(int fd, int registerto, int if_num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/isisd/isis_pfpacket.c:128,1
    - Dst: htons
      Src: /src/frr/isisd/isis_pfpacket.c:128,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:132,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_pfpacket.c:133,1
    - Dst: setsockopt
      Src: /src/frr/isisd/isis_pfpacket.c:137,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:138,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_pfpacket.c:139,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pfpacket.c:145,1
    - Dst: htons
      Src: /src/frr/isisd/isis_pfpacket.c:147,1
    - Dst: bind
      Src: /src/frr/isisd/isis_pfpacket.c:150,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:152,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_pfpacket.c:153,1
    - Dst: close
      Src: /src/frr/isisd/isis_pfpacket.c:154,1
    - Dst: if_is_broadcast
      Src: /src/frr/isisd/isis_pfpacket.c:160,1
    - Dst: isis_multicast_join
      Src: /src/frr/isisd/isis_pfpacket.c:168,1
    - Dst: isis_multicast_join
      Src: /src/frr/isisd/isis_pfpacket.c:171,1
    - Dst: isis_multicast_join
      Src: /src/frr/isisd/isis_pfpacket.c:174,1
    - Dst: isis_multicast_join
      Src: /src/frr/isisd/isis_pfpacket.c:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 182
    functionName: open_packet_socket
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - memset
    - htons
    - vrf_socket
    - close
    - isis_multicast_join
    - zlog_warn
    - safe_strerror
    - bind
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int open_packet_socket(struct isis_circuit *circuit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open_packet_socket
      Src: /src/frr/isisd/isis_pfpacket.c:193,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:196,1
    - Dst: if_is_broadcast
      Src: /src/frr/isisd/isis_pfpacket.c:202,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_pfpacket.c:205,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:209,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 216
    functionName: isis_sock_init
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - zlog_warn
    - if_is_pointopoint
    - open_packet_socket
    linkageType: ''
    returnType: int
    signature: int isis_sock_init(struct isis_circuit *circuit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open_packet_socket
      Src: /src/frr/isisd/isis_pfpacket.c:193,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:196,1
    - Dst: if_is_broadcast
      Src: /src/frr/isisd/isis_pfpacket.c:202,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_pfpacket.c:205,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:209,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 213
    functionName: (&isisd_privs)
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - zlog_warn
    - if_is_pointopoint
    - open_packet_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&isisd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - llc
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 224
    functionName: llc_check
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int llc_check(uint8_t *llc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_pfpacket.c:234,1
    - Dst: recvfrom
      Src: /src/frr/isisd/isis_pfpacket.c:237,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:243,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_pfpacket.c:246,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:249,1
    - Dst: recvfrom
      Src: /src/frr/isisd/isis_pfpacket.c:256,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:262,1
    - Dst: llc_check
      Src: /src/frr/isisd/isis_pfpacket.c:270,1
    - Dst: recvfrom
      Src: /src/frr/isisd/isis_pfpacket.c:272,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:277,1
    - Dst: recvfrom
      Src: /src/frr/isisd/isis_pfpacket.c:288,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:291,1
    - Dst: stream_write
      Src: /src/frr/isisd/isis_pfpacket.c:295,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:297,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - circuit
    - ssnpa
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 300
    functionName: isis_recv_pdu_bcast
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - llc_check
    - memset
    - stream_write
    - zlog_warn
    - safe_strerror
    - recvfrom
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_recv_pdu_bcast(struct isis_circuit *circuit, uint8_t *ssnpa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_pfpacket.c:307,1
    - Dst: stream_recvfrom
      Src: /src/frr/isisd/isis_pfpacket.c:311,1
    - Dst: recvfrom
      Src: /src/frr/isisd/isis_pfpacket.c:317,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:322,1
    - Dst: ntohs
      Src: /src/frr/isisd/isis_pfpacket.c:329,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:330,1
    - Dst: ntohs
      Src: /src/frr/isisd/isis_pfpacket.c:331,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:335,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - circuit
    - ssnpa
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 338
    functionName: isis_recv_pdu_p2p
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - memset
    - stream_recvfrom
    - ntohs
    - zlog_warn
    - recvfrom
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_recv_pdu_p2p(struct isis_circuit *circuit, uint8_t *ssnpa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_pfpacket.c:351,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pfpacket.c:352,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pfpacket.c:355,1
    - Dst: htons
      Src: /src/frr/isisd/isis_pfpacket.c:356,1
    - Dst: isis_ethertype
      Src: /src/frr/isisd/isis_pfpacket.c:356,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:361,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:363,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:365,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pfpacket.c:373,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pfpacket.c:381,1
    - Dst: sendmsg
      Src: /src/frr/isisd/isis_pfpacket.c:383,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:384,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_pfpacket.c:385,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/isisd/isis_pfpacket.c:386,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 391
    functionName: isis_send_pdu_bcast
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - isis_ethertype
    - stream_set_getp
    - memset
    - htons
    - stream_get_endp
    - ERRNO_IO_RETRY
    - zlog_warn
    - safe_strerror
    - sendmsg
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_send_pdu_bcast(struct isis_circuit *circuit, int level)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_pfpacket.c:398,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pfpacket.c:399,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:404,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pfpacket.c:406,1
    - Dst: htons
      Src: /src/frr/isisd/isis_pfpacket.c:410,1
    - Dst: sendto
      Src: /src/frr/isisd/isis_pfpacket.c:411,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pfpacket.c:412,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pfpacket.c:415,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_pfpacket.c:416,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/isisd/isis_pfpacket.c:417,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 422
    functionName: isis_send_pdu_p2p
    functionSourceFile: /src/frr/isisd/isis_pfpacket.c
    functionUses: 0
    functionsReached:
    - stream_set_getp
    - memset
    - htons
    - stream_get_endp
    - ERRNO_IO_RETRY
    - zlog_warn
    - safe_strerror
    - sendto
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_send_pdu_p2p(struct isis_circuit *circuit, int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_cmp
      Src: /src/frr/isisd/isis_sr.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct sr_prefix_cfg*
    - struct sr_prefix_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: sr_prefix_sid_cfg_compare
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int sr_prefix_sid_cfg_compare(const struct sr_prefix_cfg *a,\n\t\t\t\t\t
      \   const struct sr_prefix_cfg *b)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_sr.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - lspdb
    - sysid
    argTypes:
    - struct lspdb_head*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 97
    functionName: isis_sr_find_srgb
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 0
    functionsReached:
    - isis_root_system_lsp
    linkageType: ''
    returnType: struct isis_sr_block
    signature: "struct isis_sr_block *isis_sr_find_srgb(struct lspdb_head *lspdb,\n\t\t\t\t\tconst
      uint8_t *sysid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_sr.c:116,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_sr.c:117,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_sr.c:121,1
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_sr.c:128,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - area
    - psid
    - local
    argTypes:
    - struct isis_area*
    - struct isis_prefix_sid*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 136
    functionName: sr_prefix_in_label
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - flog_warn
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t sr_prefix_in_label(struct isis_area *area,\n\t\t\t\tstruct
      isis_prefix_sid *psid, bool local)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_sr.c:156,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_sr.c:159,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_sr.c:169,1
    - Dst: isis_sr_find_srgb
      Src: /src/frr/isisd/isis_sr.c:181,1
    - Dst: IS_SR_IPV4
      Src: /src/frr/isisd/isis_sr.c:189,1
    - Dst: IS_SR_IPV6
      Src: /src/frr/isisd/isis_sr.c:190,1
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_sr.c:194,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 5
    argNames:
    - lspdb
    - family
    - psid
    - nh_sysid
    - last_hop
    argTypes:
    - struct lspdb_head*
    - int
    - struct isis_prefix_sid*
    - uint8_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 202
    functionName: sr_prefix_out_label
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 2
    functionsReached:
    - flog_warn
    - CHECK_FLAG
    - IS_SR_IPV6
    - IS_SR_IPV4
    - isis_sr_find_srgb
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t sr_prefix_out_label(struct lspdb_head *lspdb, int family,\n\t\t\t\t
      struct isis_prefix_sid *psid,\n\t\t\t\t const uint8_t *nh_sysid, bool last_hop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_sr.c:217,1
    - Dst: is_host_route
      Src: /src/frr/isisd/isis_sr.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - prefix
    argTypes:
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: sr_prefix_is_node_sid
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 0
    functionsReached:
    - if_is_loopback
    - is_host_route
    linkageType: ''
    returnType: bool
    signature: "bool sr_prefix_is_node_sid(const struct interface *ifp,\n\t\t\t\t
      \ const struct prefix *prefix)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:235,1
    - Dst: isis_zebra_label_manager_ready
      Src: /src/frr/isisd/isis_sr.c:240,1
    - Dst: isis_zebra_release_label_range
      Src: /src/frr/isisd/isis_sr.c:248,1
    - Dst: isis_zebra_request_label_range
      Src: /src/frr/isisd/isis_sr.c:258,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:268,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_sr.c:272,1
    - Dst: isis_sr_start
      Src: /src/frr/isisd/isis_sr.c:275,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - area
    - lower_bound
    - upper_bound
    argTypes:
    - struct isis_area*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 279
    functionName: isis_sr_cfg_srgb_update
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 1
    functionsReached:
    - isis_zebra_label_manager_ready
    - isis_sr_start
    - isis_zebra_request_label_range
    - lsp_regenerate_schedule
    - sr_debug
    - isis_zebra_release_label_range
    linkageType: ''
    returnType: int
    signature: "int isis_sr_cfg_srgb_update(struct isis_area *area, uint32_t lower_bound,\n\t\t\t
      \   uint32_t upper_bound)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:299,1
    - Dst: isis_zebra_label_manager_ready
      Src: /src/frr/isisd/isis_sr.c:304,1
    - Dst: sr_local_block_delete
      Src: /src/frr/isisd/isis_sr.c:311,1
    - Dst: sr_local_block_init
      Src: /src/frr/isisd/isis_sr.c:318,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_sr.c:322,1
    - Dst: sr_adj_sid_update
      Src: /src/frr/isisd/isis_sr.c:323,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_sr.c:326,1
    - Dst: isis_sr_start
      Src: /src/frr/isisd/isis_sr.c:329,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:352,1
    - Dst: yang_get_default_enum
      Src: /src/frr/isisd/isis_sr.c:358,1
    - Dst: yang_get_default_enum
      Src: /src/frr/isisd/isis_sr.c:360,1
    - Dst: if_lookup_prefix
      Src: /src/frr/isisd/isis_sr.c:364,1
    - Dst: if
      Src: /src/frr/isisd/isis_sr.c:365,1
    - Dst: sr_prefix_is_node_sid
      Src: /src/frr/isisd/isis_sr.c:365,1
    - Dst: srdb_prefix_cfg_add
      Src: /src/frr/isisd/isis_sr.c:369,1
    - Dst: isis_sr_cfg_prefix_del
      Src: /src/frr/isisd/isis_sr.c:379,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:383,1
    - Dst: srdb_prefix_cfg_del
      Src: /src/frr/isisd/isis_sr.c:388,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_sr.c:389,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_sr.c:400,1
    - Dst: prefix_copy
      Src: /src/frr/isisd/isis_sr.c:406,1
    - Dst: srdb_prefix_cfg_find
      Src: /src/frr/isisd/isis_sr.c:408,1
    - Dst: isis_sr_prefix_cfg2subtlv
      Src: /src/frr/isisd/isis_sr.c:418,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:428,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:429,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:432,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_sr.c:433,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_sr.c:436,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_sr.c:437,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:441,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:443,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:448,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:449,1
    - Dst: isis_area_delete_backup_adj_sids
      Src: /src/frr/isisd/isis_sr.c:459,1
    - Dst: sr_adj_sid_del
      Src: /src/frr/isisd/isis_sr.c:467,1
    - Dst: isis_zebra_request_label_range
      Src: /src/frr/isisd/isis_sr.c:491,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:499,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:510,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:531,1
    - Dst: isis_zebra_release_label_range
      Src: /src/frr/isisd/isis_sr.c:535,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_sr.c:540,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_sr.c:584,1
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_sr.c:606,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:653,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_sr.c:671,1
    - Dst: exit
      Src: /src/frr/isisd/isis_sr.c:673,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:679,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:681,1
    - Dst: sr_local_block_request_label
      Src: /src/frr/isisd/isis_sr.c:684,1
    - Dst: isis_alloc_ext_subtlvs
      Src: /src/frr/isisd/isis_sr.c:689,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:691,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_sr.c:701,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_sr.c:702,1
    - Dst: adjinfo2nexthop
      Src: /src/frr/isisd/isis_sr.c:707,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:715,1
    - Dst: isis_tlvs_add_lan_adj_sid
      Src: /src/frr/isisd/isis_sr.c:722,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:727,1
    - Dst: isis_tlvs_add_adj_sid
      Src: /src/frr/isisd/isis_sr.c:732,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_sr.c:736,1
    - Dst: exit
      Src: /src/frr/isisd/isis_sr.c:738,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_sr.c:743,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_sr.c:744,1
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:746,1
    - Dst: sr_adj_sid_add_single
      Src: /src/frr/isisd/isis_sr.c:757,1
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:766,1
    - Dst: sr_local_block_request_label
      Src: /src/frr/isisd/isis_sr.c:769,1
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_sr.c:781,1
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:787,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:800,1
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:802,1
    - Dst: sr_local_block_release_label
      Src: /src/frr/isisd/isis_sr.c:807,1
    - Dst: isis_tlvs_del_lan_adj_sid
      Src: /src/frr/isisd/isis_sr.c:809,1
    - Dst: sr_local_block_release_label
      Src: /src/frr/isisd/isis_sr.c:812,1
    - Dst: isis_tlvs_del_adj_sid
      Src: /src/frr/isisd/isis_sr.c:814,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_sr.c:817,1
    - Dst: exit
      Src: /src/frr/isisd/isis_sr.c:819,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_sr.c:825,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_sr.c:829,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_sr.c:830,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_sr.c:831,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_sr.c:847,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_sr.c:958,1
    - Dst: sr_prefix_is_node_sid
      Src: /src/frr/isisd/isis_sr.c:964,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_sr.c:972,1
    - Dst: sr_op2str
      Src: /src/frr/isisd/isis_sr.c:987,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:994,1
    - Dst: buf
      Src: /src/frr/isisd/isis_sr.c:995,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1000,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1004,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1007,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1010,1
    - Dst: show_node
      Src: /src/frr/isisd/isis_sr.c:1023,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_sr.c:1030,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_sr.c:1030,1
    - Dst: ttable_new
      Src: /src/frr/isisd/isis_sr.c:1033,1
    - Dst: ttable_add_row
      Src: /src/frr/isisd/isis_sr.c:1034,1
    - Dst: ttable_restyle
      Src: /src/frr/isisd/isis_sr.c:1037,1
    - Dst: ttable_rowseps
      Src: /src/frr/isisd/isis_sr.c:1038,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_sr.c:1040,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1052,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1054,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1057,1
    - Dst: ttable_add_row
      Src: /src/frr/isisd/isis_sr.c:1060,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_sr.c:1073,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_sr.c:1074,1
    - Dst: ttable_del
      Src: /src/frr/isisd/isis_sr.c:1076,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 189
    argCount: 3
    argNames:
    - area
    - lower_bound
    - upper_bound
    argTypes:
    - struct isis_area*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 1077
    functionName: isis_sr_cfg_srlb_update
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 1
    functionsReached:
    - buf
    - list_delete
    - show_node
    - ttable_del
    - isis_tlvs_del_adj_sid
    - isis_sr_prefix_cfg2subtlv
    - frr_each
    - yang_get_default_enum
    - isis_tlvs_add_adj_sid
    - listnode_add
    - isis_alloc_ext_subtlvs
    - zlog_warn
    - flog_err
    - isis_sr_cfg_prefix_find
    - srdb_prefix_cfg_del
    - sr_debug
    - srdb_prefix_cfg_add
    - exit
    - isis_zebra_label_manager_ready
    - srdb_prefix_cfg_find
    - if_lookup_prefix
    - XCALLOC
    - isis_area_delete_backup_adj_sids
    - flog_warn
    - ALL_LIST_ELEMENTS_RO
    - sr_local_block_delete
    - sr_adj_sid_add_single
    - sr_op2str
    - sr_local_block_init
    - isis_tlvs_add_lan_adj_sid
    - ttable_restyle
    - if
    - isis_zebra_request_label_range
    - prefix_copy
    - ttable_add_row
    - sr_prefix_is_node_sid
    - sr_local_block_release_label
    - isis_tlvs_del_lan_adj_sid
    - vty_out
    - snprintf
    - UNSET_FLAG
    - XFREE
    - listnode_delete
    - adjinfo2nexthop
    - ttable_new
    - isis_sr_cfg_prefix_del
    - isis_zebra_send_adjacency_sid
    - sr_adj_sid_update
    - isis_sr_start
    - sr_adj_sid_del
    - ttable_rowseps
    - circuit_t2string
    - SET_FLAG
    - list_new
    - sr_local_block_request_label
    - lsp_regenerate_schedule
    - isis_zebra_release_label_range
    linkageType: ''
    returnType: int
    signature: "int isis_sr_cfg_srlb_update(struct isis_area *area, uint32_t lower_bound,\n\t\t\t
      \   uint32_t upper_bound)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_zebra_request_label_range
      Src: /src/frr/isisd/isis_sr.c:491,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:499,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 515
    functionName: sr_local_block_init
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 3
    functionsReached:
    - isis_zebra_request_label_range
    - sr_debug
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int sr_local_block_init(struct isis_area *area)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:531,1
    - Dst: isis_zebra_release_label_range
      Src: /src/frr/isisd/isis_sr.c:535,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_sr.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 542
    functionName: sr_local_block_delete
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 3
    functionsReached:
    - XFREE
    - sr_debug
    - isis_zebra_release_label_range
    linkageType: ''
    returnType: void
    signature: void sr_local_block_delete(struct isis_area *area)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_sr.c:584,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - srlb
    argTypes:
    - struct sr_local_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 552
    functionDepth: 1
    functionLinenumber: 552
    functionLinenumberEnd: 588
    functionName: sr_local_block_request_label
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 2
    functionsReached:
    - zlog_warn
    linkageType: ''
    returnType: mpls_label_t
    signature: mpls_label_t sr_local_block_request_label(struct sr_local_block *srlb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_sr.c:606,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - srlb
    - label
    argTypes:
    - struct sr_local_block*
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 598
    functionDepth: 1
    functionLinenumber: 598
    functionLinenumberEnd: 629
    functionName: sr_local_block_release_label
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 2
    functionsReached:
    - flog_warn
    linkageType: ''
    returnType: int
    signature: "int sr_local_block_release_label(struct sr_local_block *srlb,\n\t\t\t\t\tmpls_label_t
      label)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:653,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_sr.c:671,1
    - Dst: exit
      Src: /src/frr/isisd/isis_sr.c:673,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:679,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_sr.c:681,1
    - Dst: sr_local_block_request_label
      Src: /src/frr/isisd/isis_sr.c:684,1
    - Dst: isis_alloc_ext_subtlvs
      Src: /src/frr/isisd/isis_sr.c:689,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:691,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_sr.c:701,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_sr.c:702,1
    - Dst: adjinfo2nexthop
      Src: /src/frr/isisd/isis_sr.c:707,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:715,1
    - Dst: isis_tlvs_add_lan_adj_sid
      Src: /src/frr/isisd/isis_sr.c:722,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_sr.c:727,1
    - Dst: isis_tlvs_add_adj_sid
      Src: /src/frr/isisd/isis_sr.c:732,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_sr.c:736,1
    - Dst: exit
      Src: /src/frr/isisd/isis_sr.c:738,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_sr.c:743,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_sr.c:744,1
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:746,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 4
    argNames:
    - adj
    - family
    - backup
    - nexthops
    argTypes:
    - struct isis_adjacency*
    - int
    - bool
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 641
    functionDepth: 2
    functionLinenumber: 641
    functionLinenumberEnd: 747
    functionName: sr_adj_sid_add_single
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 1
    functionsReached:
    - exit
    - isis_zebra_send_adjacency_sid
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - isis_tlvs_add_adj_sid
    - listnode_add
    - isis_alloc_ext_subtlvs
    - isis_tlvs_add_lan_adj_sid
    - flog_err
    - SET_FLAG
    - list_new
    - sr_local_block_request_label
    - sr_debug
    - adjinfo2nexthop
    linkageType: ''
    returnType: void
    signature: "void sr_adj_sid_add_single(struct isis_adjacency *adj, int family,
      bool backup,\n\t\t\t   struct list *nexthops)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sr_adj_sid_add_single
      Src: /src/frr/isisd/isis_sr.c:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - adj
    - family
    argTypes:
    - struct isis_adjacency*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 755
    functionDepth: 3
    functionLinenumber: 755
    functionLinenumberEnd: 758
    functionName: sr_adj_sid_add
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 0
    functionsReached:
    - sr_adj_sid_add_single
    linkageType: ''
    returnType: void
    signature: void sr_adj_sid_add(struct isis_adjacency *adj, int family)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:766,1
    - Dst: sr_local_block_request_label
      Src: /src/frr/isisd/isis_sr.c:769,1
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_sr.c:781,1
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:787,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - sra
    - srlb
    argTypes:
    - struct sr_adjacency*
    - struct sr_local_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 788
    functionName: sr_adj_sid_update
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 1
    functionsReached:
    - isis_zebra_send_adjacency_sid
    - flog_warn
    - sr_local_block_request_label
    linkageType: ''
    returnType: void
    signature: "void sr_adj_sid_update(struct sr_adjacency *sra,\n\t\t\t      struct
      sr_local_block *srlb)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_sr.c:800,1
    - Dst: isis_zebra_send_adjacency_sid
      Src: /src/frr/isisd/isis_sr.c:802,1
    - Dst: sr_local_block_release_label
      Src: /src/frr/isisd/isis_sr.c:807,1
    - Dst: isis_tlvs_del_lan_adj_sid
      Src: /src/frr/isisd/isis_sr.c:809,1
    - Dst: sr_local_block_release_label
      Src: /src/frr/isisd/isis_sr.c:812,1
    - Dst: isis_tlvs_del_adj_sid
      Src: /src/frr/isisd/isis_sr.c:814,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_sr.c:817,1
    - Dst: exit
      Src: /src/frr/isisd/isis_sr.c:819,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_sr.c:825,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_sr.c:829,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_sr.c:830,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_sr.c:831,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - sra
    argTypes:
    - struct sr_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 795
    functionDepth: 2
    functionLinenumber: 795
    functionLinenumberEnd: 832
    functionName: sr_adj_sid_del
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 1
    functionsReached:
    - exit
    - list_delete
    - isis_zebra_send_adjacency_sid
    - isis_tlvs_del_lan_adj_sid
    - isis_tlvs_del_adj_sid
    - flog_err
    - XFREE
    - listnode_delete
    - sr_debug
    - sr_local_block_release_label
    linkageType: ''
    returnType: void
    signature: void sr_adj_sid_del(struct sr_adjacency *sra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_sr.c:847,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_sr.c:958,1
    - Dst: sr_prefix_is_node_sid
      Src: /src/frr/isisd/isis_sr.c:964,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_sr.c:972,1
    - Dst: sr_op2str
      Src: /src/frr/isisd/isis_sr.c:987,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:994,1
    - Dst: buf
      Src: /src/frr/isisd/isis_sr.c:995,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1000,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1004,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1007,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1010,1
    - Dst: show_node
      Src: /src/frr/isisd/isis_sr.c:1023,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_sr.c:1030,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_sr.c:1030,1
    - Dst: ttable_new
      Src: /src/frr/isisd/isis_sr.c:1033,1
    - Dst: ttable_add_row
      Src: /src/frr/isisd/isis_sr.c:1034,1
    - Dst: ttable_restyle
      Src: /src/frr/isisd/isis_sr.c:1037,1
    - Dst: ttable_rowseps
      Src: /src/frr/isisd/isis_sr.c:1038,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_sr.c:1040,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1052,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1054,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_sr.c:1057,1
    - Dst: ttable_add_row
      Src: /src/frr/isisd/isis_sr.c:1060,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_sr.c:1073,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_sr.c:1074,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - adj
    - family
    - type
    argTypes:
    - struct isis_adjacency*
    - int
    - enum sr_adj_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 1075
    functionName: isis_sr_adj_sid_find
    functionSourceFile: /src/frr/isisd/isis_sr.c
    functionUses: 0
    functionsReached:
    - buf
    - show_node
    - vty_out
    - snprintf
    - ttable_add_row
    - frr_each
    - sr_op2str
    - ALL_LIST_ELEMENTS_RO
    - ttable_restyle
    - ttable_rowseps
    - circuit_t2string
    - isis_sr_cfg_prefix_find
    - XFREE
    - lsp_regenerate_schedule
    - ttable_new
    - sr_prefix_is_node_sid
    linkageType: ''
    returnType: struct sr_adjacency
    signature: "struct sr_adjacency *isis_sr_adj_sid_find(struct isis_adjacency *adj,\n\t\t\t\t\t
      \ int family, enum sr_adj_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/isisd/isis_dynhn.c:36,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_dynhn.c:37,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dynhn.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - isis
    argTypes:
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: dyn_cache_init
    functionSourceFile: /src/frr/isisd/isis_dynhn.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - CHECK_FLAG
    - list_new
    linkageType: ''
    returnType: void
    signature: void dyn_cache_init(struct isis *isis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_dynhn.c:47,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_dynhn.c:49,1
    - Dst: list_delete_node
      Src: /src/frr/isisd/isis_dynhn.c:50,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_dynhn.c:51,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_dynhn.c:54,1
    - Dst: dyn_cache_cleanup
      Src: /src/frr/isisd/isis_dynhn.c:57,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_dynhn.c:64,1
    - Dst: for
      Src: /src/frr/isisd/isis_dynhn.c:68,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_dynhn.c:68,1
    - Dst: list_delete_node
      Src: /src/frr/isisd/isis_dynhn.c:71,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_dynhn.c:72,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dynhn.c:75,1
    - Dst: for
      Src: /src/frr/isisd/isis_dynhn.c:84,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_dynhn.c:84,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_dynhn.c:85,1
    - Dst: for
      Src: /src/frr/isisd/isis_dynhn.c:96,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_dynhn.c:96,1
    - Dst: strncmp
      Src: /src/frr/isisd/isis_dynhn.c:97,1
    - Dst: isis_dynhn_insert
      Src: /src/frr/isisd/isis_dynhn.c:103,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_dynhn.c:108,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_dynhn.c:110,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dynhn.c:111,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_dynhn.c:113,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_dynhn.c:116,1
    - Dst: time
      Src: /src/frr/isisd/isis_dynhn.c:117,1
    - Dst: isis_dynhn_remove
      Src: /src/frr/isisd/isis_dynhn.c:120,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_dynhn.c:124,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_dynhn.c:127,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_dynhn.c:128,1
    - Dst: dynhn_print_all
      Src: /src/frr/isisd/isis_dynhn.c:137,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_dynhn.c:142,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_dynhn.c:145,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_dynhn.c:146,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_dynhn.c:147,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_dynhn.c:148,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_dynhn.c:151,1
    - Dst: cmd_hostname_get
      Src: /src/frr/isisd/isis_dynhn.c:151,1
    - Dst: dynhn_snmp_next
      Src: /src/frr/isisd/isis_dynhn.c:155,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_dynhn.c:163,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_dynhn.c:164,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_dynhn.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - isis
    argTypes:
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 189
    functionName: dyn_cache_finish
    functionSourceFile: /src/frr/isisd/isis_dynhn.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - list_delete
    - memcmp
    - listnode_add
    - strncmp
    - snprintf
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - EVENT_ARG
    - for
    - vty_out
    - isis_dynhn_insert
    - list_delete_node
    - EVENT_OFF
    - XFREE
    - event_add_timer
    - listnode_delete
    - memcpy
    - dynhn_print_all
    - dynhn_find_by_id
    - dynhn_snmp_next
    - dyn_cache_cleanup
    - isis_dynhn_remove
    - ALL_LIST_ELEMENTS
    - time
    linkageType: ''
    returnType: void
    signature: void dyn_cache_finish(struct isis *isis)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - isis
    - vrf
    argTypes:
    - struct isis*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: isis_vrf_link
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void isis_vrf_link(struct isis *isis, struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - isis
    - vrf
    argTypes:
    - struct isis*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 133
    functionName: isis_vrf_unlink
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void isis_vrf_unlink(struct isis *isis, struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:140,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:152,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:152,1
    - Dst: strcmp
      Src: /src/frr/isisd/isisd.c:153,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:164,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:164,1
    - Dst: memcmp
      Src: /src/frr/isisd/isisd.c:165,1
    - Dst: isis_master_init
      Src: /src/frr/isisd/isisd.c:171,1
    - Dst: memset
      Src: /src/frr/isisd/isisd.c:173,1
    - Dst: list_new
      Src: /src/frr/isisd/isisd.c:175,1
    - Dst: isis_new
      Src: /src/frr/isisd/isisd.c:179,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isisd.c:184,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isisd.c:186,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/isisd/isisd.c:188,1
    - Dst: isis_vrf_link
      Src: /src/frr/isisd/isisd.c:191,1
    - Dst: isis_zebra_vrf_register
      Src: /src/frr/isisd/isisd.c:195,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:198,1
    - Dst: getpid
      Src: /src/frr/isisd/isisd.c:206,1
    - Dst: list_new
      Src: /src/frr/isisd/isisd.c:208,1
    - Dst: time
      Src: /src/frr/isisd/isisd.c:209,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isisd.c:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 216
    functionName: isis_lookup_by_vrfid
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 2
    functionsReached:
    - isis_master_init
    - memset
    - XCALLOC
    - isis_new
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - getpid
    - vrf_lookup_by_name
    - memcmp
    - time
    - listnode_add
    - zlog_debug
    - list_new
    - isis_zebra_vrf_register
    - isis_vrf_link
    - for
    - XSTRDUP
    linkageType: ''
    returnType: struct isis
    signature: struct isis *isis_lookup_by_vrfid(vrf_id_t vrf_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isisd.c:223,1
    - Dst: isis_area_destroy
      Src: /src/frr/isisd/isisd.c:224,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isisd.c:228,1
    - Dst: isis_zebra_vrf_deregister
      Src: /src/frr/isisd/isisd.c:230,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/isisd/isisd.c:232,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:233,1
    - Dst: isis_vrf_unlink
      Src: /src/frr/isisd/isisd.c:234,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:235,1
    - Dst: isis_redist_free
      Src: /src/frr/isisd/isisd.c:237,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:238,1
    - Dst: dyn_cache_finish
      Src: /src/frr/isisd/isisd.c:239,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:240,1
    - Dst: isis_area_add_circuit
      Src: /src/frr/isisd/isisd.c:243,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isisd.c:245,1
    - Dst: isis_area_del_circuit
      Src: /src/frr/isisd/isisd.c:259,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isisd.c:272,1
    - Dst: delete_area_addr
      Src: /src/frr/isisd/isisd.c:275,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:279,1
    - Dst: isis_area_create
      Src: /src/frr/isisd/isisd.c:282,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isisd.c:290,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/isisd/isisd.c:295,1
    - Dst: isis_lookup_by_vrfname
      Src: /src/frr/isisd/isisd.c:296,1
    - Dst: isis_new
      Src: /src/frr/isisd/isisd.c:299,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isisd.c:301,1
    - Dst: yang_get_default_enum
      Src: /src/frr/isisd/isisd.c:311,1
    - Dst: lsp_db_init
      Src: /src/frr/isisd/isisd.c:318,1
    - Dst: lsp_db_init
      Src: /src/frr/isisd/isisd.c:320,1
    - Dst: flex_algos_alloc
      Src: /src/frr/isisd/isisd.c:324,1
    - Dst: spftree_area_init
      Src: /src/frr/isisd/isisd.c:328,1
    - Dst: list_new
      Src: /src/frr/isisd/isisd.c:330,1
    - Dst: list_new
      Src: /src/frr/isisd/isisd.c:331,1
    - Dst: list_new
      Src: /src/frr/isisd/isisd.c:332,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isisd.c:335,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isisd.c:336,1
    - Dst: flags_initialize
      Src: /src/frr/isisd/isisd.c:337,1
    - Dst: isis_sr_area_init
      Src: /src/frr/isisd/isisd.c:339,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:347,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:349,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:351,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:353,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:355,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:357,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:359,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:361,1
    - Dst: yang_get_default_bool
      Src: /src/frr/isisd/isisd.c:363,1
    - Dst: yang_get_default_enum
      Src: /src/frr/isisd/isisd.c:366,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isisd.c:371,1
    - Dst: yang_get_default_bool
      Src: /src/frr/isisd/isisd.c:372,1
    - Dst: yang_get_default_bool
      Src: /src/frr/isisd/isisd.c:374,1
    - Dst: yang_get_default_bool
      Src: /src/frr/isisd/isisd.c:377,1
    - Dst: yang_get_default_bool
      Src: /src/frr/isisd/isisd.c:378,1
    - Dst: isis_lfa_tiebreakers_init
      Src: /src/frr/isisd/isisd.c:403,1
    - Dst: area_mt_init
      Src: /src/frr/isisd/isisd.c:405,1
    - Dst: strdup
      Src: /src/frr/isisd/isisd.c:407,1
    - Dst: fabricd_new
      Src: /src/frr/isisd/isisd.c:410,1
    - Dst: QOBJ_REG
      Src: /src/frr/isisd/isisd.c:420,1
    - Dst: strmatch
      Src: /src/frr/isisd/isisd.c:428,1
    - Dst: isis_area_add_circuit
      Src: /src/frr/isisd/isisd.c:429,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - isis
    argTypes:
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 434
    functionName: isis_finish
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 1
    functionsReached:
    - spftree_area_init
    - isis_sr_area_init
    - list_delete
    - isis_lfa_tiebreakers_init
    - delete_area_addr
    - isis_new
    - yang_get_default_enum
    - vrf_lookup_by_name
    - isis_area_create
    - isis_redist_free
    - listnode_add
    - strdup
    - area_mt_init
    - isis_lookup_by_vrfname
    - flex_algos_alloc
    - isis_zebra_vrf_deregister
    - strmatch
    - isis_area_add_circuit
    - isis_csm_state_change
    - XCALLOC
    - flags_initialize
    - fabricd_new
    - QOBJ_REG
    - yang_get_default_bool
    - if
    - isis_vrf_unlink
    - isis_area_del_circuit
    - yang_get_default_uint16
    - XFREE
    - listnode_delete
    - event_add_timer
    - lsp_db_init
    - isis_area_destroy
    - CHECK_FLAG
    - dyn_cache_finish
    - list_new
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void isis_finish(struct isis *isis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/isisd/isisd.c:428,1
    - Dst: isis_area_add_circuit
      Src: /src/frr/isisd/isisd.c:429,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 430
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 32
    functionsReached:
    - strmatch
    - isis_area_add_circuit
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfname
      Src: /src/frr/isisd/isisd.c:443,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:447,1
    - Dst: strcmp
      Src: /src/frr/isisd/isisd.c:448,1
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isisd.c:460,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:461,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:464,1
    - Dst: strcmp
      Src: /src/frr/isisd/isisd.c:467,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isisd.c:477,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/isisd/isisd.c:480,1
    - Dst: isis_area_create
      Src: /src/frr/isisd/isisd.c:484,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:487,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/isisd/isisd.c:489,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/isisd/isisd.c:499,1
    - Dst: fabricd_finish
      Src: /src/frr/isisd/isisd.c:502,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isisd.c:505,1
    - Dst: isis_area_del_circuit
      Src: /src/frr/isisd/isisd.c:507,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:509,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:512,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:514,1
    - Dst: lsp_db_fini
      Src: /src/frr/isisd/isisd.c:516,1
    - Dst: lsp_db_fini
      Src: /src/frr/isisd/isisd.c:517,1
    - Dst: isis_area_invalidate_routes
      Src: /src/frr/isisd/isisd.c:520,1
    - Dst: isis_area_verify_routes
      Src: /src/frr/isisd/isisd.c:521,1
    - Dst: flex_algos_free
      Src: /src/frr/isisd/isisd.c:524,1
    - Dst: isis_sr_area_term
      Src: /src/frr/isisd/isisd.c:527,1
    - Dst: isis_mpls_te_term
      Src: /src/frr/isisd/isisd.c:529,1
    - Dst: spftree_area_del
      Src: /src/frr/isisd/isisd.c:531,1
    - Dst: isis_spf_timer_free
      Src: /src/frr/isisd/isisd.c:534,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isisd.c:534,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:535,1
    - Dst: isis_spf_timer_free
      Src: /src/frr/isisd/isisd.c:537,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isisd.c:537,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:538,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isisd.c:540,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isisd.c:541,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isisd.c:543,1
    - Dst: isis_redist_area_finish
      Src: /src/frr/isisd/isisd.c:544,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:546,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:553,1
    - Dst: isis_lfa_tiebreakers_clear
      Src: /src/frr/isisd/isisd.c:555,1
    - Dst: isis_lfa_tiebreakers_clear
      Src: /src/frr/isisd/isisd.c:556,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:558,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:559,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:560,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:561,1
    - Dst: event_cancel_event
      Src: /src/frr/isisd/isisd.c:563,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isisd.c:565,1
    - Dst: free
      Src: /src/frr/isisd/isisd.c:567,1
    - Dst: area_mt_finish
      Src: /src/frr/isisd/isisd.c:569,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:572,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:574,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:576,1
    - Dst: isis_vrf_new
      Src: /src/frr/isisd/isisd.c:581,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:584,1
    - Dst: isis_vrf_delete
      Src: /src/frr/isisd/isisd.c:591,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:594,1
    - Dst: isis_set_redist_vrf_bitmaps
      Src: /src/frr/isisd/isisd.c:600,1
    - Dst: memset
      Src: /src/frr/isisd/isisd.c:610,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:612,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:613,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:630,1
    - Dst: afi_for_redist_protocol
      Src: /src/frr/isisd/isisd.c:636,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/isisd/isisd.c:645,1
    - Dst: struct isis*::isis_vrf_enable
      Src: /src/frr/isisd/isisd.c:657,1
    - Dst: vrf_id_t
      Src: /src/frr/isisd/isisd.c:665,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:668,1
    - Dst: isis_lookup_by_vrfname
      Src: /src/frr/isisd/isisd.c:671,1
    - Dst: isis_vrf_link
      Src: /src/frr/isisd/isisd.c:675,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:677,1
    - Dst: isis_set_redist_vrf_bitmaps
      Src: /src/frr/isisd/isisd.c:681,1
    - Dst: isis_zebra_vrf_register
      Src: /src/frr/isisd/isisd.c:683,1
    - Dst: isis_lookup_by_vrfname
      Src: /src/frr/isisd/isisd.c:700,1
    - Dst: isis_zebra_vrf_deregister
      Src: /src/frr/isisd/isisd.c:704,1
    - Dst: isis_set_redist_vrf_bitmaps
      Src: /src/frr/isisd/isisd.c:706,1
    - Dst: isis_vrf_unlink
      Src: /src/frr/isisd/isisd.c:711,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:713,1
    - Dst: vrf_init
      Src: /src/frr/isisd/isisd.c:722,1
    - Dst: vrf_cmd_init
      Src: /src/frr/isisd/isisd.c:725,1
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/isisd/isisd.c:733,1
    - Dst: listcount
      Src: /src/frr/isisd/isisd.c:735,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isisd.c:738,1
    - Dst: isis_finish
      Src: /src/frr/isisd/isisd.c:739,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:748,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:748,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:749,1
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isisd.c:756,1
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isisd.c:758,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:760,1
    - Dst: isis_prefix_list_update
      Src: /src/frr/isisd/isisd.c:765,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:772,1
    - Dst: prefix_list_name
      Src: /src/frr/isisd/isisd.c:776,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:778,1
    - Dst: strmatch
      Src: /src/frr/isisd/isisd.c:781,1
    - Dst: prefix_list_lookup
      Src: /src/frr/isisd/isisd.c:786,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 2
    argNames:
    - area_tag
    - vrf_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 436
    functionDepth: 3
    functionLinenumber: 436
    functionLinenumberEnd: 790
    functionName: isis_area_lookup_by_vrf
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 1
    functionsReached:
    - isis_spf_timer_free
    - isis_area_lookup
    - list_delete
    - spftree_area_del
    - isis_area_create
    - isis_finish
    - isis_mpls_te_term
    - isis_area_verify_routes
    - bfd_protocol_integration_set_shutdown
    - access_list_lookup
    - isis_prefix_list_update
    - isis_lookup_by_vrfname
    - flex_algos_free
    - isis_zebra_vrf_deregister
    - strmatch
    - prefix_list_lookup
    - prefix_list_name
    - isis_vrf_new
    - memset
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - isis_redist_area_finish
    - isis_sr_area_term
    - isis_lfa_tiebreakers_clear
    - event_cancel_event
    - EVENT_ARG
    - if
    - isis_vrf_unlink
    - for
    - isis_area_invalidate_routes
    - isis_set_redist_vrf_bitmaps
    - vrf_init
    - listcount
    - isis_area_del_circuit
    - free
    - afi_for_redist_protocol
    - EVENT_OFF
    - XFREE
    - isis_vrf_delete
    - listnode_delete
    - vrf_cmd_init
    - struct isis*::isis_vrf_enable
    - spf_backoff_free
    - lsp_db_fini
    - fabricd_finish
    - area_mt_finish
    - isis_lookup_by_vrfid
    - QOBJ_UNREG
    - vrf_id_t
    - CHECK_FLAG
    - strcmp
    - vrf_bitmap_unset
    - VTY_PUSH_CONTEXT
    - isis_zebra_vrf_register
    - isis_vrf_link
    - ALL_LIST_ELEMENTS
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: struct isis_area
    signature: "struct isis_area *isis_area_lookup_by_vrf(const char *area_tag,\n\t\t\t\t\t
      \ const char *vrf_name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/isisd/isisd.c:499,1
    - Dst: fabricd_finish
      Src: /src/frr/isisd/isisd.c:502,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isisd.c:505,1
    - Dst: isis_area_del_circuit
      Src: /src/frr/isisd/isisd.c:507,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:509,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:512,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:514,1
    - Dst: lsp_db_fini
      Src: /src/frr/isisd/isisd.c:516,1
    - Dst: lsp_db_fini
      Src: /src/frr/isisd/isisd.c:517,1
    - Dst: isis_area_invalidate_routes
      Src: /src/frr/isisd/isisd.c:520,1
    - Dst: isis_area_verify_routes
      Src: /src/frr/isisd/isisd.c:521,1
    - Dst: flex_algos_free
      Src: /src/frr/isisd/isisd.c:524,1
    - Dst: isis_sr_area_term
      Src: /src/frr/isisd/isisd.c:527,1
    - Dst: isis_mpls_te_term
      Src: /src/frr/isisd/isisd.c:529,1
    - Dst: spftree_area_del
      Src: /src/frr/isisd/isisd.c:531,1
    - Dst: isis_spf_timer_free
      Src: /src/frr/isisd/isisd.c:534,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isisd.c:534,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:535,1
    - Dst: isis_spf_timer_free
      Src: /src/frr/isisd/isisd.c:537,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isisd.c:537,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:538,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isisd.c:540,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isisd.c:541,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isisd.c:543,1
    - Dst: isis_redist_area_finish
      Src: /src/frr/isisd/isisd.c:544,1
    - Dst: list_delete
      Src: /src/frr/isisd/isisd.c:546,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:553,1
    - Dst: isis_lfa_tiebreakers_clear
      Src: /src/frr/isisd/isisd.c:555,1
    - Dst: isis_lfa_tiebreakers_clear
      Src: /src/frr/isisd/isisd.c:556,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:558,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:559,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:560,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isisd.c:561,1
    - Dst: event_cancel_event
      Src: /src/frr/isisd/isisd.c:563,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isisd.c:565,1
    - Dst: free
      Src: /src/frr/isisd/isisd.c:567,1
    - Dst: area_mt_finish
      Src: /src/frr/isisd/isisd.c:569,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:572,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:574,1
    - Dst: XFREE
      Src: /src/frr/isisd/isisd.c:576,1
    - Dst: isis_vrf_new
      Src: /src/frr/isisd/isisd.c:581,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:584,1
    - Dst: isis_vrf_delete
      Src: /src/frr/isisd/isisd.c:591,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:594,1
    - Dst: isis_set_redist_vrf_bitmaps
      Src: /src/frr/isisd/isisd.c:600,1
    - Dst: memset
      Src: /src/frr/isisd/isisd.c:610,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:612,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:613,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:630,1
    - Dst: afi_for_redist_protocol
      Src: /src/frr/isisd/isisd.c:636,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/isisd/isisd.c:645,1
    - Dst: isis_vrf_enable
      Src: /src/frr/isisd/isisd.c:657,1
    - Dst: vrf_id_t
      Src: /src/frr/isisd/isisd.c:665,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:668,1
    - Dst: isis_lookup_by_vrfname
      Src: /src/frr/isisd/isisd.c:671,1
    - Dst: isis_vrf_link
      Src: /src/frr/isisd/isisd.c:675,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:677,1
    - Dst: isis_set_redist_vrf_bitmaps
      Src: /src/frr/isisd/isisd.c:681,1
    - Dst: isis_zebra_vrf_register
      Src: /src/frr/isisd/isisd.c:683,1
    - Dst: isis_lookup_by_vrfname
      Src: /src/frr/isisd/isisd.c:700,1
    - Dst: isis_zebra_vrf_deregister
      Src: /src/frr/isisd/isisd.c:704,1
    - Dst: isis_set_redist_vrf_bitmaps
      Src: /src/frr/isisd/isisd.c:706,1
    - Dst: isis_vrf_unlink
      Src: /src/frr/isisd/isisd.c:711,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isisd.c:713,1
    - Dst: vrf_init
      Src: /src/frr/isisd/isisd.c:722,1
    - Dst: vrf_cmd_init
      Src: /src/frr/isisd/isisd.c:725,1
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/isisd/isisd.c:733,1
    - Dst: listcount
      Src: /src/frr/isisd/isisd.c:735,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isisd.c:738,1
    - Dst: isis_finish
      Src: /src/frr/isisd/isisd.c:739,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:748,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:748,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:749,1
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isisd.c:756,1
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isisd.c:758,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:760,1
    - Dst: isis_prefix_list_update
      Src: /src/frr/isisd/isisd.c:765,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:772,1
    - Dst: prefix_list_name
      Src: /src/frr/isisd/isisd.c:776,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:778,1
    - Dst: strmatch
      Src: /src/frr/isisd/isisd.c:781,1
    - Dst: prefix_list_lookup
      Src: /src/frr/isisd/isisd.c:786,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 494
    functionDepth: 3
    functionLinenumber: 494
    functionLinenumberEnd: 789
    functionName: isis_area_destroy
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 3
    functionsReached:
    - isis_spf_timer_free
    - list_delete
    - spftree_area_del
    - isis_finish
    - isis_mpls_te_term
    - isis_area_verify_routes
    - bfd_protocol_integration_set_shutdown
    - access_list_lookup
    - isis_prefix_list_update
    - isis_lookup_by_vrfname
    - flex_algos_free
    - isis_zebra_vrf_deregister
    - strmatch
    - prefix_list_lookup
    - prefix_list_name
    - isis_vrf_new
    - memset
    - ALL_LIST_ELEMENTS_RO
    - isis_redist_area_finish
    - zlog_debug
    - isis_sr_area_term
    - isis_lfa_tiebreakers_clear
    - event_cancel_event
    - EVENT_ARG
    - if
    - isis_vrf_unlink
    - for
    - isis_area_invalidate_routes
    - isis_set_redist_vrf_bitmaps
    - vrf_init
    - listcount
    - isis_area_del_circuit
    - free
    - afi_for_redist_protocol
    - EVENT_OFF
    - XFREE
    - isis_vrf_delete
    - listnode_delete
    - isis_vrf_enable
    - vrf_cmd_init
    - spf_backoff_free
    - lsp_db_fini
    - fabricd_finish
    - area_mt_finish
    - QOBJ_UNREG
    - vrf_id_t
    - CHECK_FLAG
    - vrf_bitmap_unset
    - isis_zebra_vrf_register
    - isis_vrf_link
    - ALL_LIST_ELEMENTS
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: void isis_area_destroy(struct isis_area *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/isisd/isisd.c:722,1
    - Dst: vrf_cmd_init
      Src: /src/frr/isisd/isisd.c:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 726
    functionName: isis_vrf_init
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - vrf_init
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void isis_vrf_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/isisd/isisd.c:733,1
    - Dst: listcount
      Src: /src/frr/isisd/isisd.c:735,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isisd.c:738,1
    - Dst: isis_finish
      Src: /src/frr/isisd/isisd.c:739,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:748,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:748,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:749,1
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isisd.c:756,1
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isisd.c:758,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:760,1
    - Dst: isis_prefix_list_update
      Src: /src/frr/isisd/isisd.c:765,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:771,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:772,1
    - Dst: prefix_list_name
      Src: /src/frr/isisd/isisd.c:776,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:778,1
    - Dst: strmatch
      Src: /src/frr/isisd/isisd.c:781,1
    - Dst: prefix_list_lookup
      Src: /src/frr/isisd/isisd.c:786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 728
    functionDepth: 3
    functionLinenumber: 728
    functionLinenumberEnd: 788
    functionName: isis_terminate
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - strmatch
    - prefix_list_lookup
    - prefix_list_name
    - listcount
    - ALL_LIST_ELEMENTS_RO
    - lsp_regenerate_schedule
    - isis_finish
    - access_list_lookup
    - bfd_protocol_integration_set_shutdown
    - isis_prefix_list_update
    - if
    - ALL_LIST_ELEMENTS
    - for
    linkageType: ''
    returnType: void
    signature: void isis_terminate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: area_get_mt_setting
      Src: /src/frr/isisd/isisd.c:799,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - area
    - mtid
    - enabled
    argTypes:
    - struct isis_area*
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 804
    functionName: area_set_mt_enabled
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - area_get_mt_setting
    linkageType: ''
    returnType: void
    signature: "void area_set_mt_enabled(struct isis_area *area, uint16_t mtid,\n\t\t\t\tbool
      enabled)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: area_get_mt_setting
      Src: /src/frr/isisd/isisd.c:811,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - area
    - mtid
    - overload
    argTypes:
    - struct isis_area*
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 818
    functionName: area_set_mt_overload
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - area_get_mt_setting
    linkageType: ''
    returnType: void
    signature: "void area_set_mt_overload(struct isis_area *area, uint16_t mtid,\n\t\t\t\t
      bool overload)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lspdb_count
      Src: /src/frr/isisd/isisd.c:2681,1
    - Dst: lsp_for_sysid
      Src: /src/frr/isisd/isisd.c:2682,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isisd.c:2685,1
    - Dst: lsp_print_detail
      Src: /src/frr/isisd/isisd.c:2690,1
    - Dst: lsp_print_json
      Src: /src/frr/isisd/isisd.c:2693,1
    - Dst: lsp_print_all
      Src: /src/frr/isisd/isisd.c:2697,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isisd.c:2700,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 6
    argNames:
    - json
    - area
    - level
    - lspdb
    - sysid_str
    - ui_level
    argTypes:
    - struct json_object*
    - struct isis_area*
    - int
    - struct lspdb_head*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2673
    functionDepth: 1
    functionLinenumber: 2673
    functionLinenumberEnd: 2703
    functionName: show_isis_database_lspdb_json
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - lsp_print_json
    - json_object_int_add
    - lspdb_count
    - lsp_print_detail
    - lsp_for_sysid
    - lsp_print_all
    linkageType: ''
    returnType: void
    signature: "void show_isis_database_lspdb_json(struct json_object *json,\n\t\t\t\t
      \  struct isis_area *area, int level,\n\t\t\t\t   struct lspdb_head *lspdb,\n\t\t\t\t
      \  const char *sysid_str, int ui_level)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lspdb_count
      Src: /src/frr/isisd/isisd.c:2711,1
    - Dst: lsp_for_sysid
      Src: /src/frr/isisd/isisd.c:2712,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:2715,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:2719,1
    - Dst: lsp_print_detail
      Src: /src/frr/isisd/isisd.c:2725,1
    - Dst: lsp_print_vty
      Src: /src/frr/isisd/isisd.c:2728,1
    - Dst: lsp_print_all
      Src: /src/frr/isisd/isisd.c:2732,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:2735,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 6
    argNames:
    - vty
    - area
    - level
    - lspdb
    - sysid_str
    - ui_level
    argTypes:
    - struct vty*
    - struct isis_area*
    - int
    - struct lspdb_head*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2738
      start: 2704
    functionDepth: 1
    functionLinenumber: 2704
    functionLinenumberEnd: 2738
    functionName: show_isis_database_lspdb_vty
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 1
    functionsReached:
    - vty_out
    - lspdb_count
    - lsp_print_detail
    - lsp_for_sysid
    - lsp_print_vty
    - lsp_print_all
    linkageType: ''
    returnType: void
    signature: "void show_isis_database_lspdb_vty(struct vty *vty, struct isis_area
      *area,\n\t\t\t\t  int level, struct lspdb_head *lspdb,\n\t\t\t\t  const char
      *sysid_str, int ui_level)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/isisd/isisd.c:2751,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isisd.c:2752,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:2753,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isisd.c:2754,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isisd.c:2755,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isisd.c:2756,1
    - Dst: json_object_new_array
      Src: /src/frr/isisd/isisd.c:2760,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isisd.c:2761,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isisd.c:2762,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:2763,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isisd.c:2764,1
    - Dst: show_isis_database_lspdb_json
      Src: /src/frr/isisd/isisd.c:2765,1
    - Dst: json_object_array_add
      Src: /src/frr/isisd/isisd.c:2768,1
    - Dst: json_object_array_add
      Src: /src/frr/isisd/isisd.c:2770,1
    - Dst: show_isis_database_vty
      Src: /src/frr/isisd/isisd.c:2774,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:2784,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:2785,1
    - Dst: for
      Src: /src/frr/isisd/isisd.c:2788,1
    - Dst: show_isis_database_lspdb_vty
      Src: /src/frr/isisd/isisd.c:2789,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - json
    - sysid_str
    - ui_level
    - isis
    argTypes:
    - struct json_object*
    - char*
    - int
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2800
      start: 2740
    functionDepth: 2
    functionLinenumber: 2740
    functionLinenumberEnd: 2800
    functionName: show_isis_database_json
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - show_isis_database_lspdb_json
    - json_object_array_add
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - show_isis_database_vty
    - json_object_string_add
    - json_object_object_add
    - for
    - show_isis_database_lspdb_vty
    linkageType: ''
    returnType: void
    signature: "void show_isis_database_json(struct json_object *json, const char
      *sysid_str,\n\t\t\t\t      int ui_level, struct isis *isis)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:3015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - area
    - lsp_mtu
    argTypes:
    - struct isis_area*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3016
      start: 3012
    functionDepth: 1
    functionLinenumber: 3012
    functionLinenumberEnd: 3016
    functionName: isis_area_lsp_mtu_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: void isis_area_lsp_mtu_set(struct isis_area *area, unsigned int lsp_mtu)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isisd.c:3026,1
    - Dst: memset
      Src: /src/frr/isisd/isisd.c:3029,1
    - Dst: strlen
      Src: /src/frr/isisd/isisd.c:3035,1
    - Dst: strlcpy
      Src: /src/frr/isisd/isisd.c:3040,1
    - Dst: memcmp
      Src: /src/frr/isisd/isisd.c:3046,1
    - Dst: memcpy
      Src: /src/frr/isisd/isisd.c:3047,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:3048,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 5
    argNames:
    - area
    - level
    - passwd_type
    - passwd
    - snp_auth
    argTypes:
    - struct isis_area*
    - int
    - uint8_t
    - char*
    - uint8_t
    assertStmts:
    - condition: ((level == IS_LEVEL_1) || (level == IS_LEVEL_2))
      pos:
        line_end: 3025
        line_start: 3025
        source_file: /src/frr/isisd/isisd.c
    constantsTouched: []
    func_position:
      end: 3052
      start: 3018
    functionDepth: 1
    functionLinenumber: 3018
    functionLinenumberEnd: 3052
    functionName: isis_area_passwd_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - strlen
    - memset
    - strlcpy
    - memcmp
    - memcpy
    - lsp_regenerate_schedule
    - assert
    linkageType: ''
    returnType: int
    signature: "int isis_area_passwd_set(struct isis_area *area, int level,\n\t\t\t\tuint8_t
      passwd_type, const char *passwd,\n\t\t\t\tuint8_t snp_auth)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_area_passwd_set
      Src: /src/frr/isisd/isisd.c:3056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - area
    - level
    argTypes:
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3058
      start: 3054
    functionDepth: 2
    functionLinenumber: 3054
    functionLinenumberEnd: 3058
    functionName: isis_area_passwd_unset
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - isis_area_passwd_set
    linkageType: ''
    returnType: int
    signature: int isis_area_passwd_unset(struct isis_area *area, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_area_passwd_set
      Src: /src/frr/isisd/isisd.c:3063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - area
    - level
    - passwd
    - snp_auth
    argTypes:
    - struct isis_area*
    - int
    - char*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3060
    functionDepth: 2
    functionLinenumber: 3060
    functionLinenumberEnd: 3065
    functionName: isis_area_passwd_cleartext_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - isis_area_passwd_set
    linkageType: ''
    returnType: int
    signature: "int isis_area_passwd_cleartext_set(struct isis_area *area, int level,\n\t\t\t\t
      \  const char *passwd, uint8_t snp_auth)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_area_passwd_set
      Src: /src/frr/isisd/isisd.c:3070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - area
    - level
    - passwd
    - snp_auth
    argTypes:
    - struct isis_area*
    - int
    - char*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3072
      start: 3067
    functionDepth: 2
    functionLinenumber: 3067
    functionLinenumberEnd: 3072
    functionName: isis_area_passwd_hmac_md5_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - isis_area_passwd_set
    linkageType: ''
    returnType: int
    signature: "int isis_area_passwd_hmac_md5_set(struct isis_area *area, int level,\n\t\t\t\t
      \ const char *passwd, uint8_t snp_auth)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isis_restart_filepath
      Src: /src/frr/isisd/isisd.c:3405,1
    - Dst: json_object_from_file
      Src: /src/frr/isisd/isisd.c:3408,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isisd.c:3410,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/isisd/isisd.c:3412,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isisd.c:3414,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isisd.c:3415,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/isisd/isisd.c:3418,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isisd.c:3420,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isisd.c:3421,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/isisd/isisd.c:3424,1
    - Dst: json_object_get_int
      Src: /src/frr/isisd/isisd.c:3427,1
    - Dst: json_object_object_del
      Src: /src/frr/isisd/isisd.c:3430,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/isisd/isisd.c:3432,1
    - Dst: json_object_free
      Src: /src/frr/isisd/isisd.c:3433,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - isis_area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3436
      start: 3395
    functionDepth: 1
    functionLinenumber: 3395
    functionLinenumberEnd: 3436
    functionName: isis_restart_read_overload_time
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_get_int
    - json_object_object_del
    - json_object_to_file_ext
    - json_object_object_get_ex
    - isis_restart_filepath
    - json_object_free
    - json_object_from_file
    - json_object_object_add
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t isis_restart_read_overload_time(struct isis_area *isis_area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:3443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - area
    - attached_bit
    argTypes:
    - struct isis_area*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3445
      start: 3438
    functionDepth: 1
    functionLinenumber: 3438
    functionLinenumberEnd: 3445
    functionName: isis_area_attached_bit_send_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 1
    functionsReached:
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: void isis_area_attached_bit_send_set(struct isis_area *area, bool attached_bit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:3453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - area
    - attached_bit
    argTypes:
    - struct isis_area*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3455
      start: 3447
    functionDepth: 1
    functionLinenumber: 3447
    functionLinenumberEnd: 3455
    functionName: isis_area_attached_bit_receive_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 1
    functionsReached:
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: "void isis_area_attached_bit_receive_set(struct isis_area *area,\n\t\t\t\t\tbool
      attached_bit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:3461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - area
    - dynhostname
    argTypes:
    - struct isis_area*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3463
      start: 3457
    functionDepth: 1
    functionLinenumber: 3457
    functionLinenumberEnd: 3463
    functionName: isis_area_dynhostname_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 1
    functionsReached:
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: void isis_area_dynhostname_set(struct isis_area *area, bool dynhostname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isisd.c:3468,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:3474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - area
    - level
    - max_lsp_lifetime
    argTypes:
    - struct isis_area*
    - int
    - uint16_t
    assertStmts:
    - condition: ((level == IS_LEVEL_1) || (level == IS_LEVEL_2))
      pos:
        line_end: 3467
        line_start: 3467
        source_file: /src/frr/isisd/isisd.c
    constantsTouched: []
    func_position:
      end: 3475
      start: 3465
    functionDepth: 1
    functionLinenumber: 3465
    functionLinenumberEnd: 3475
    functionName: isis_area_max_lsp_lifetime_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - assert
    linkageType: ''
    returnType: void
    signature: "void isis_area_max_lsp_lifetime_set(struct isis_area *area, int level,\n\t\t\t\t
      \   uint16_t max_lsp_lifetime)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isisd.c:3480,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isisd.c:3486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - area
    - level
    - lsp_refresh
    argTypes:
    - struct isis_area*
    - int
    - uint16_t
    assertStmts:
    - condition: ((level == IS_LEVEL_1) || (level == IS_LEVEL_2))
      pos:
        line_end: 3479
        line_start: 3479
        source_file: /src/frr/isisd/isisd.c
    constantsTouched: []
    func_position:
      end: 3487
      start: 3477
    functionDepth: 1
    functionLinenumber: 3477
    functionLinenumberEnd: 3487
    functionName: isis_area_lsp_refresh_set
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - assert
    linkageType: ''
    returnType: void
    signature: "void isis_area_lsp_refresh_set(struct isis_area *area, int level,\n\t\t\t
      \      uint16_t lsp_refresh)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3525,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:3529,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:3530,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3532,1
    - Dst: if
      Src: /src/frr/isisd/isisd.c:3535,1
    - Dst: listcount
      Src: /src/frr/isisd/isisd.c:3535,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isisd.c:3537,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3539,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3547,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3554,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3556,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3560,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3566,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3572,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3575,1
    - Dst: isis_redist_config_write
      Src: /src/frr/isisd/isisd.c:3579,1
    - Dst: isis_redist_config_write
      Src: /src/frr/isisd/isisd.c:3580,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3586,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3593,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3600,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3611,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3618,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3625,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3635,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3643,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3650,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3657,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3661,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3670,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3677,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3684,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3693,1
    - Dst: spf_backoff_init_delay
      Src: /src/frr/isisd/isisd.c:3695,1
    - Dst: spf_backoff_short_delay
      Src: /src/frr/isisd/isisd.c:3697,1
    - Dst: spf_backoff_long_delay
      Src: /src/frr/isisd/isisd.c:3699,1
    - Dst: spf_backoff_holddown
      Src: /src/frr/isisd/isisd.c:3701,1
    - Dst: spf_backoff_timetolearn
      Src: /src/frr/isisd/isisd.c:3703,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isisd.c:3713,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3715,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isisd.c:3716,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3719,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3721,1
    - Dst: vty_out
      Src: /src/frr/isisd/isisd.c:3723,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3725
      start: 3517
    functionDepth: 1
    functionLinenumber: 3517
    functionLinenumberEnd: 3725
    functionName: isis_config_write
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - vty_out
    - spf_backoff_short_delay
    - spf_backoff_long_delay
    - isis_redist_config_write
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - spf_backoff_init_delay
    - spf_backoff_holddown
    - CHECK_FLAG
    - if
    - spf_backoff_timetolearn
    linkageType: ''
    returnType: int
    signature: int isis_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/isisd/isisd.c:3806,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/isisd/isisd.c:3808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3813
      start: 3801
    functionDepth: 1
    functionLinenumber: 3801
    functionLinenumberEnd: 3813
    functionName: isis_config_write
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int isis_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/isisd/isisd.c:3834,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3836,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3838,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3840,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3841,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3842,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3844,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3845,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3846,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3847,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3848,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3850,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3851,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3853,1
    - Dst: install_node
      Src: /src/frr/isisd/isisd.c:3855,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3857,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3858,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3859,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3860,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3861,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3862,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3863,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3864,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3865,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3866,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3867,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3868,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3869,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3870,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3871,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3872,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3873,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3874,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3875,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3876,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3877,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3878,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3879,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3880,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3881,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3882,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3883,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3884,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3885,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3886,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3887,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3888,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3890,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3891,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3892,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3893,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3894,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3895,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3896,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3897,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3898,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3899,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3900,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3901,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3902,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3903,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3904,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3905,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3906,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3907,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3908,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3909,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3910,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3911,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3912,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3913,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3914,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3915,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3916,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3917,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3918,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3919,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3920,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3921,1
    - Dst: install_default
      Src: /src/frr/isisd/isisd.c:3923,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3926,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3927,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3929,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3930,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3932,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3933,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3935,1
    - Dst: install_element
      Src: /src/frr/isisd/isisd.c:3936,1
    - Dst: install_node
      Src: /src/frr/isisd/isisd.c:3939,1
    - Dst: install_default
      Src: /src/frr/isisd/isisd.c:3940,1
    - Dst: spf_backoff_cmd_init
      Src: /src/frr/isisd/isisd.c:3943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3944
      start: 3831
    functionDepth: 1
    functionLinenumber: 3831
    functionLinenumberEnd: 3944
    functionName: isis_init
    functionSourceFile: /src/frr/isisd/isisd.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_default
    - install_node
    - spf_backoff_cmd_init
    linkageType: ''
    returnType: void
    signature: void isis_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - argv
    - ','
    - argc
    - ','
    - idx_vrf
    - ','
    - vrf_name
    - ','
    - all_vrf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: ISIS_FIND_VRF_ARGS
    functionSourceFile: /src/frr/isisd/isisd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 403
    functionName: lsp_debug
    functionSourceFile: /src/frr/isisd/isisd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsp_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 409
    functionName: sched_debug
    functionSourceFile: /src/frr/isisd/isisd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sched_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 415
    functionName: sr_debug
    functionSourceFile: /src/frr/isisd/isisd.h
    functionUses: 50
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sr_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 421
    functionName: te_debug
    functionSourceFile: /src/frr/isisd/isisd.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: te_debug(...)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/isisd/isis_misc.c:53,1
    - Dst: isxdigit
      Src: /src/frr/isisd/isis_misc.c:76,1
    - Dst: isxdigit
      Src: /src/frr/isisd/isis_misc.c:77,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_misc.c:78,1
    - Dst: strtol
      Src: /src/frr/isisd/isis_misc.c:85,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 2
    argNames:
    - buff
    - dotted
    argTypes:
    - uint8_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 90
    functionName: dotformat2buff
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 3
    functionsReached:
    - isxdigit
    - strlen
    - strtol
    - memcpy
    linkageType: ''
    returnType: int
    signature: int dotformat2buff(uint8_t *buff, const char *dotted)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/isisd/isis_misc.c:103,1
    - Dst: isxdigit
      Src: /src/frr/isisd/isis_misc.c:117,1
    - Dst: isxdigit
      Src: /src/frr/isisd/isis_misc.c:118,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_misc.c:119,1
    - Dst: strtol
      Src: /src/frr/isisd/isis_misc.c:126,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - buff
    - dotted
    argTypes:
    - uint8_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 131
    functionName: sysid2buff
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 1
    functionsReached:
    - isxdigit
    - strlen
    - strtol
    - memcpy
    linkageType: ''
    returnType: int
    signature: int sysid2buff(uint8_t *buff, const char *dotted)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - nlpid
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 151
    functionName: nlpid2str
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *nlpid2str(uint8_t nlpid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:165,1
    - Dst: nlpid2str
      Src: /src/frr/isisd/isis_misc.c:166,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:167,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - nlpids
    argTypes:
    - struct nlpids*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 173
    functionName: nlpid2string
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nlpid2str
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *nlpid2string(struct nlpids *nlpids)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/isisd/isis_misc.c:184,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_misc.c:187,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_misc.c:187,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_misc.c:190,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 194
    functionName: string2circuit_t
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int string2circuit_t(const char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 210
    functionName: circuit_state2string
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *circuit_state2string(int state)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 226
    functionName: circuit_type2string
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *circuit_type2string(int type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - circuit_t
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 242
    functionName: circuit_t2string
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *circuit_t2string(int circuit_t)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 260
    functionName: syst2string
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *syst2string(int type)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - hello_padding_type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 273
    functionName: isis_hello_padding2string
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *isis_hello_padding2string(int hello_padding_type)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:285,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:286,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:290,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:291,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:295,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:296,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:300,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:301,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:305,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:306,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:310,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:311,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:315,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:316,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 1
    argNames:
    - time
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 320
    functionName: time2string
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *time2string(uint32_t time)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/isisd/isis_misc.c:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - timer
    - jitter
    argTypes:
    - unsigned long
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 352
    functionName: isis_jitter
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long isis_jitter(unsigned long timer, unsigned long jitter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_misc.c:356,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_misc.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - prefix_start
    - prefix_masklen
    argTypes:
    - uint8_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 362
    functionName: newprefix2inaddr
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr newprefix2inaddr(uint8_t *prefix_start, uint8_t prefix_masklen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_sysid
      Src: /src/frr/isisd/isis_misc.c:378,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_misc.c:379,1
    - Dst: cmd_hostname_get
      Src: /src/frr/isisd/isis_misc.c:380,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_misc.c:382,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_misc.c:383,1
    - Dst: if
      Src: /src/frr/isisd/isis_misc.c:384,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_misc.c:388,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_misc.c:396,1
    - Dst: memset
      Src: /src/frr/isisd/isis_misc.c:407,1
    - Dst: memset
      Src: /src/frr/isisd/isis_misc.c:408,1
    - Dst: memset
      Src: /src/frr/isisd/isis_misc.c:409,1
    - Dst: memset
      Src: /src/frr/isisd/isis_misc.c:410,1
    - Dst: isalnum
      Src: /src/frr/isisd/isis_misc.c:414,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:419,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:422,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:423,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_misc.c:423,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:426,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:427,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_misc.c:428,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_misc.c:432,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:438,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_misc.c:439,1
    - Dst: strlcat
      Src: /src/frr/isisd/isis_misc.c:440,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_misc.c:441,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_misc.c:447,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_misc.c:448,1
    - Dst: log_multiline
      Src: /src/frr/isisd/isis_misc.c:452,1
    - Dst: va_start
      Src: /src/frr/isisd/isis_misc.c:458,1
    - Dst: vasnprintfrr
      Src: /src/frr/isisd/isis_misc.c:459,1
    - Dst: va_end
      Src: /src/frr/isisd/isis_misc.c:460,1
    - Dst: strtok_r
      Src: /src/frr/isisd/isis_misc.c:466,1
    - Dst: strtok_r
      Src: /src/frr/isisd/isis_misc.c:467,1
    - Dst: zlog
      Src: /src/frr/isisd/isis_misc.c:468,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_misc.c:472,1
    - Dst: log_uptime
      Src: /src/frr/isisd/isis_misc.c:475,1
    - Dst: time
      Src: /src/frr/isisd/isis_misc.c:478,1
    - Dst: gmtime
      Src: /src/frr/isisd/isis_misc.c:480,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:483,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:486,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_misc.c:489,1
    - Dst: vty_multiline
      Src: /src/frr/isisd/isis_misc.c:495,1
    - Dst: va_start
      Src: /src/frr/isisd/isis_misc.c:501,1
    - Dst: vasnprintfrr
      Src: /src/frr/isisd/isis_misc.c:502,1
    - Dst: va_end
      Src: /src/frr/isisd/isis_misc.c:503,1
    - Dst: strtok_r
      Src: /src/frr/isisd/isis_misc.c:509,1
    - Dst: strtok_r
      Src: /src/frr/isisd/isis_misc.c:510,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_misc.c:511,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_misc.c:515,1
    - Dst: vty_out_timestr
      Src: /src/frr/isisd/isis_misc.c:518,1
    - Dst: time
      Src: /src/frr/isisd/isis_misc.c:520,1
    - Dst: frrtime_to_interval
      Src: /src/frr/isisd/isis_misc.c:525,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_misc.c:527,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - sysid
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 528
    functionName: print_sys_hostname
    functionSourceFile: /src/frr/isisd/isis_misc.c
    functionUses: 2
    functionsReached:
    - cmd_hostname_get
    - strlen
    - vty_out_timestr
    - gmtime
    - strlcat
    - memset
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - vty_multiline
    - zlog_debug
    - isis_lookup_by_sysid
    - if
    - zlog_dump_data
    - frrtime_to_interval
    - zlog
    - log_uptime
    - vty_out
    - log_multiline
    - va_start
    - va_end
    - XFREE
    - dynhn_find_by_id
    - CHECK_FLAG
    - snprintfrr
    - isalnum
    - strtok_r
    - vasnprintfrr
    - time
    linkageType: ''
    returnType: char
    signature: char *print_sys_hostname(const uint8_t *sysid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_circuit.c:72,1
    - Dst: isis_area_add_circuit
      Src: /src/frr/isisd/isis_circuit.c:74,1
    - Dst: if_is_operative
      Src: /src/frr/isisd/isis_circuit.c:77,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 79
    functionName: isis_circuit_enable
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - isis_area_lookup
    - isis_area_add_circuit
    - isis_csm_state_change
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void isis_circuit_enable(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/isisd/isis_circuit.c:86,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:87,1
    - Dst: isis_area_del_circuit
      Src: /src/frr/isisd/isis_circuit.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: isis_circuit_disable
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - if_is_operative
    - isis_area_del_circuit
    - isis_csm_state_change
    linkageType: ''
    returnType: void
    signature: void isis_circuit_disable(struct isis_circuit *circuit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_circuit.c:98,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_circuit.c:100,1
    - Dst: yang_get_default_enum
      Src: /src/frr/isisd/isis_circuit.c:106,1
    - Dst: yang_get_default_enum
      Src: /src/frr/isisd/isis_circuit.c:110,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:112,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:114,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:116,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:118,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isis_circuit.c:120,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isis_circuit.c:122,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isis_circuit.c:124,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/isisd/isis_circuit.c:126,1
    - Dst: yang_get_default_uint8
      Src: /src/frr/isisd/isis_circuit.c:128,1
    - Dst: yang_get_default_uint8
      Src: /src/frr/isisd/isis_circuit.c:130,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:132,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:134,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:136,1
    - Dst: yang_get_default_uint32
      Src: /src/frr/isisd/isis_circuit.c:138,1
    - Dst: circuit_mt_init
      Src: /src/frr/isisd/isis_circuit.c:164,1
    - Dst: isis_lfa_excluded_ifaces_init
      Src: /src/frr/isisd/isis_circuit.c:165,1
    - Dst: isis_lfa_excluded_ifaces_init
      Src: /src/frr/isisd/isis_circuit.c:166,1
    - Dst: ldp_sync_info_create
      Src: /src/frr/isisd/isis_circuit.c:168,1
    - Dst: QOBJ_REG
      Src: /src/frr/isisd/isis_circuit.c:171,1
    - Dst: isis_circuit_if_bind
      Src: /src/frr/isisd/isis_circuit.c:173,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:175,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:176,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:177,1
    - Dst: isis_circuit_enable
      Src: /src/frr/isisd/isis_circuit.c:180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 52
    argCount: 2
    argNames:
    - ifp
    - tag
    argTypes:
    - struct interface*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 183
    functionName: isis_circuit_new
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - yang_get_default_uint8
    - ldp_sync_info_create
    - XCALLOC
    - yang_get_default_uint32
    - isis_lfa_excluded_ifaces_init
    - QOBJ_REG
    - yang_get_default_enum
    - isis_circuit_if_bind
    - yang_get_default_uint16
    - list_new
    - isis_circuit_enable
    - circuit_mt_init
    - XSTRDUP
    linkageType: ''
    returnType: struct isis_circuit
    signature: struct isis_circuit *isis_circuit_new(struct interface *ifp, const
      char *tag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_circuit_disable
      Src: /src/frr/isisd/isis_circuit.c:191,1
    - Dst: isis_circuit_if_unbind
      Src: /src/frr/isisd/isis_circuit.c:193,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/isisd/isis_circuit.c:195,1
    - Dst: ldp_sync_info_free
      Src: /src/frr/isisd/isis_circuit.c:197,1
    - Dst: circuit_mt_finish
      Src: /src/frr/isisd/isis_circuit.c:199,1
    - Dst: isis_lfa_excluded_ifaces_clear
      Src: /src/frr/isisd/isis_circuit.c:200,1
    - Dst: isis_lfa_excluded_ifaces_clear
      Src: /src/frr/isisd/isis_circuit.c:201,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:203,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:204,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:205,1
    - Dst: isis_del_ext_subtlvs
      Src: /src/frr/isisd/isis_circuit.c:208,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_circuit.c:212,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_circuit.c:213,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_circuit.c:216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 219
    functionName: isis_circuit_del
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - isis_del_ext_subtlvs
    - isis_circuit_disable
    - list_delete
    - QOBJ_UNREG
    - circuit_mt_finish
    - isis_circuit_if_unbind
    - isis_lfa_excluded_ifaces_clear
    - XFREE
    - ldp_sync_info_free
    linkageType: ''
    returnType: void
    signature: void isis_circuit_del(struct isis_circuit *circuit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:224,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_circuit.c:241,1
    - Dst: flags_get_index
      Src: /src/frr/isisd/isis_circuit.c:243,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_circuit.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - circuit
    - area
    argTypes:
    - struct isis_circuit*
    - struct isis_area*
    assertStmts:
    - condition: (area)
      pos:
        line_end: 223
        line_start: 223
        source_file: /src/frr/isisd/isis_circuit.c
    constantsTouched: []
    func_position:
      end: 248
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 248
    functionName: isis_circuit_configure
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - flags_get_index
    - listnode_add
    - assert
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void isis_circuit_configure(struct isis_circuit *circuit,\n\t\t\t
      \   struct isis_area *area)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/isisd/isis_circuit.c:253,1
    - Dst: flags_free_index
      Src: /src/frr/isisd/isis_circuit.c:256,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:263,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_circuit.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - circuit
    - area
    argTypes:
    - struct isis_circuit*
    - struct isis_area*
    assertStmts:
    - condition: (circuit->area == area)
      pos:
        line_end: 262
        line_start: 262
        source_file: /src/frr/isisd/isis_circuit.c
    constantsTouched: []
    func_position:
      end: 269
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 269
    functionName: isis_circuit_deconfigure
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - flags_free_index
    - assert
    - hook_call
    linkageType: ''
    returnType: void
    signature: "void isis_circuit_deconfigure(struct isis_circuit *circuit,\n\t\t\t
      \     struct isis_area *area)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: circuit_scan_by_ifp
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct isis_circuit
    signature: struct isis_circuit *circuit_scan_by_ifp(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/isisd/isis_circuit.c:288,1
    - Dst: IPV4_NET0
      Src: /src/frr/isisd/isis_circuit.c:289,1
    - Dst: IPV4_NET127
      Src: /src/frr/isisd/isis_circuit.c:289,1
    - Dst: IN_CLASSD
      Src: /src/frr/isisd/isis_circuit.c:289,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:292,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_circuit.c:293,1
    - Dst: prefix_ipv4_new
      Src: /src/frr/isisd/isis_circuit.c:297,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_circuit.c:300,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_circuit.c:304,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_circuit.c:306,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_circuit.c:310,1
    - Dst: if
      Src: /src/frr/isisd/isis_circuit.c:314,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_circuit.c:315,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/isisd/isis_circuit.c:321,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:324,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_circuit.c:325,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:328,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_circuit.c:329,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/isisd/isis_circuit.c:333,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/isisd/isis_circuit.c:337,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_circuit.c:340,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_circuit.c:343,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/isisd/isis_circuit.c:344,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_circuit.c:346,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_circuit.c:350,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_circuit.c:355,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 17
    argCount: 2
    argNames:
    - circuit
    - connected
    argTypes:
    - struct isis_circuit*
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 359
    functionName: isis_circuit_add_addr
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - IPV6_ADDR_COPY
    - IN6_IS_ADDR_LINKLOCAL
    - ALL_LIST_ELEMENTS_RO
    - listnode_add
    - SET_SUBTLV
    - IPV4_NET127
    - zlog_debug
    - prefix_ipv6_new
    - prefix_ipv4_new
    - IS_MPLS_TE
    - IN6_IS_ADDR_LOOPBACK
    - if
    - lsp_regenerate_schedule
    - ntohl
    - IPV4_NET0
    - IN_CLASSD
    linkageType: ''
    returnType: void
    signature: "void isis_circuit_add_addr(struct isis_circuit *circuit,\n\t\t\t   struct
      connected *connected)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: prefix_ipv4_new
      Src: /src/frr/isisd/isis_circuit.c:375,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:379,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_circuit.c:380,1
    - Dst: if
      Src: /src/frr/isisd/isis_circuit.c:384,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_circuit.c:385,1
    - Dst: prefix_ipv4_free
      Src: /src/frr/isisd/isis_circuit.c:386,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_circuit.c:388,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:391,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:394,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:396,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:398,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:400,1
    - Dst: prefix_ipv4_free
      Src: /src/frr/isisd/isis_circuit.c:403,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/isisd/isis_circuit.c:406,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/isisd/isis_circuit.c:410,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:411,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_circuit.c:413,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_circuit.c:418,1
    - Dst: prefix_ipv6_free
      Src: /src/frr/isisd/isis_circuit.c:419,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:423,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_circuit.c:425,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_circuit.c:430,1
    - Dst: prefix_ipv6_free
      Src: /src/frr/isisd/isis_circuit.c:431,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:437,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:440,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:442,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:444,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:445,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:446,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:448,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:449,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_circuit.c:451,1
    - Dst: prefix_ipv6_free
      Src: /src/frr/isisd/isis_circuit.c:454,1
    - Dst: isis_circuit_id_gen
      Src: /src/frr/isisd/isis_circuit.c:459,1
    - Dst: if
      Src: /src/frr/isisd/isis_circuit.c:474,1
    - Dst: _ISIS_CHECK_FLAG
      Src: /src/frr/isisd/isis_circuit.c:474,1
    - Dst: if
      Src: /src/frr/isisd/isis_circuit.c:479,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:480,1
    - Dst: _ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_circuit.c:485,1
    - Dst: isis_circuit_if_add
      Src: /src/frr/isisd/isis_circuit.c:489,1
    - Dst: if_is_broadcast
      Src: /src/frr/isisd/isis_circuit.c:494,1
    - Dst: if_is_pointopoint
      Src: /src/frr/isisd/isis_circuit.c:499,1
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_circuit.c:501,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_circuit.c:507,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_circuit.c:511,1
    - Dst: isis_circuit_add_addr
      Src: /src/frr/isisd/isis_circuit.c:512,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:521,1
    - Dst: for
      Src: /src/frr/isisd/isis_circuit.c:524,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_circuit.c:524,1
    - Dst: isis_circuit_del_addr
      Src: /src/frr/isisd/isis_circuit.c:525,1
    - Dst: isis_circuit_if_bind
      Src: /src/frr/isisd/isis_circuit.c:530,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:532,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:533,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:535,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:539,1
    - Dst: isis_circuit_if_unbind
      Src: /src/frr/isisd/isis_circuit.c:544,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:546,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:547,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:548,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:549,1
    - Dst: isis_circuit_update_all_srmflags
      Src: /src/frr/isisd/isis_circuit.c:554,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:561,1
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:563,1
    - Dst: lspdb_count
      Src: /src/frr/isisd/isis_circuit.c:568,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_circuit.c:571,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_circuit.c:573,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_circuit.c:576,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_circuit.c:582,1
    - Dst: ISO_MTU
      Src: /src/frr/isisd/isis_circuit.c:584,1
    - Dst: isis_circuit_lfa_enabled
      Src: /src/frr/isisd/isis_circuit.c:587,1
    - Dst: isis_circuit_switchover_routes
      Src: /src/frr/isisd/isis_circuit.c:594,1
    - Dst: isis_circuit_lfa_enabled
      Src: /src/frr/isisd/isis_circuit.c:604,1
    - Dst: isis_area_switchover_routes
      Src: /src/frr/isisd/isis_circuit.c:605,1
    - Dst: isis_circuit_lfa_enabled
      Src: /src/frr/isisd/isis_circuit.c:608,1
    - Dst: isis_area_switchover_routes
      Src: /src/frr/isisd/isis_circuit.c:609,1
    - Dst: isis_circuit_stream
      Src: /src/frr/isisd/isis_circuit.c:613,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_circuit.c:615,1
    - Dst: stream_new
      Src: /src/frr/isisd/isis_circuit.c:618,1
    - Dst: STREAM_SIZE
      Src: /src/frr/isisd/isis_circuit.c:620,1
    - Dst: stream_resize_inplace
      Src: /src/frr/isisd/isis_circuit.c:621,1
    - Dst: stream_reset
      Src: /src/frr/isisd/isis_circuit.c:622,1
    - Dst: isis_circuit_prepare
      Src: /src/frr/isisd/isis_circuit.c:626,1
    - Dst: event_add_read
      Src: /src/frr/isisd/isis_circuit.c:628,1
    - Dst: event_add_timer_msec
      Src: /src/frr/isisd/isis_circuit.c:632,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:633,1
    - Dst: isis_circuit_up
      Src: /src/frr/isisd/isis_circuit.c:638,1
    - Dst: isis_circuit_update_all_srmflags
      Src: /src/frr/isisd/isis_circuit.c:643,1
    - Dst: time
      Src: /src/frr/isisd/isis_circuit.c:649,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:656,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:657,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_circuit.c:664,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_circuit.c:668,1
    - Dst: isis_circuit_id_gen
      Src: /src/frr/isisd/isis_circuit.c:679,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_circuit.c:691,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_circuit.c:693,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_circuit.c:698,1
    - Dst: ISO_MTU
      Src: /src/frr/isisd/isis_circuit.c:700,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:703,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:704,1
    - Dst: send_hello_sched
      Src: /src/frr/isisd/isis_circuit.c:720,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:721,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_circuit.c:723,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 49
    argCount: 2
    argNames:
    - circuit
    - connected
    argTypes:
    - struct isis_circuit*
    - struct connected*
    assertStmts:
    - condition: (circuit->interface == ifp)
      pos:
        line_end: 520
        line_start: 520
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (ifp != NULL)
      pos:
        line_end: 546
        line_start: 546
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (ifp->info == circuit)
      pos:
        line_end: 548
        line_start: 548
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (circuit != NULL)
      pos:
        line_end: 531
        line_start: 531
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (circuit->interface == ifp)
      pos:
        line_end: 534
        line_start: 534
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (circuit != NULL)
      pos:
        line_end: 545
        line_start: 545
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (circuit)
      pos:
        line_end: 560
        line_start: 560
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (circuit->interface == ifp)
      pos:
        line_end: 547
        line_start: 547
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (area)
      pos:
        line_end: 562
        line_start: 562
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (ifp != NULL)
      pos:
        line_end: 532
        line_start: 532
        source_file: /src/frr/isisd/isis_circuit.c
    - condition: (ifp->info == circuit)
      pos:
        line_end: 538
        line_start: 538
        source_file: /src/frr/isisd/isis_circuit.c
    constantsTouched: []
    func_position:
      end: 731
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 731
    functionName: isis_circuit_del_addr
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - isis_tx_queue_add
    - frr_each
    - _ISIS_CHECK_FLAG
    - isis_circuit_lfa_enabled
    - zlog_warn
    - prefix_ipv4_new
    - stream_reset
    - isis_tx_queue_del
    - if_is_broadcast
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - isis_circuit_if_bind
    - event_add_timer_msec
    - zlog_debug
    - prefix_ipv4_free
    - prefix_ipv6_free
    - if
    - for
    - prefix_ipv6_new
    - isis_circuit_if_add
    - assert
    - isis_circuit_stream
    - send_hello_sched
    - prefix_same
    - isis_circuit_del_addr
    - isis_circuit_update_all_srmflags
    - isis_circuit_switchover_routes
    - listcount
    - _ISIS_SET_FLAG
    - lspdb_count
    - isis_circuit_if_unbind
    - isis_circuit_up
    - isis_area_switchover_routes
    - listnode_delete
    - event_add_read
    - event_add_timer
    - isis_circuit_id_gen
    - isis_circuit_pdu_size
    - STREAM_SIZE
    - stream_resize_inplace
    - memcpy
    - if_is_pointopoint
    - stream_new
    - ISO_MTU
    - IN6_IS_ADDR_LINKLOCAL
    - isis_circuit_add_addr
    - list_new
    - ALL_LIST_ELEMENTS
    - lsp_regenerate_schedule
    - isis_circuit_prepare
    - time
    linkageType: ''
    returnType: void
    signature: "void isis_circuit_del_addr(struct isis_circuit *circuit,\n\t\t\t   struct
      connected *connected)"
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: isis_notif_if_state_change
      Src: /src/frr/isisd/isis_circuit.c:786,1
    - Dst: isis_if_ldp_sync_disable
      Src: /src/frr/isisd/isis_circuit.c:789,1
    - Dst: isis_log_adj_change
      Src: /src/frr/isisd/isis_circuit.c:797,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:804,1
    - Dst: isis_adj_build_up_list
      Src: /src/frr/isisd/isis_circuit.c:805,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:807,1
    - Dst: isis_log_adj_change
      Src: /src/frr/isisd/isis_circuit.c:808,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:812,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_circuit.c:815,1
    - Dst: isis_adj_build_up_list
      Src: /src/frr/isisd/isis_circuit.c:816,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:818,1
    - Dst: isis_log_adj_change
      Src: /src/frr/isisd/isis_circuit.c:819,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:823,1
    - Dst: isis_circuit_update_all_srmflags
      Src: /src/frr/isisd/isis_circuit.c:829,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:838,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:844,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:849,1
    - Dst: isis_dr_resign
      Src: /src/frr/isisd/isis_circuit.c:853,1
    - Dst: memset
      Src: /src/frr/isisd/isis_circuit.c:856,1
    - Dst: isis_dr_resign
      Src: /src/frr/isisd/isis_circuit.c:858,1
    - Dst: memset
      Src: /src/frr/isisd/isis_circuit.c:861,1
    - Dst: memset
      Src: /src/frr/isisd/isis_circuit.c:862,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:864,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:865,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:866,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:867,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:868,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:869,1
    - Dst: _ISIS_CLEAR_FLAG
      Src: /src/frr/isisd/isis_circuit.c:873,1
    - Dst: isis_delete_adj
      Src: /src/frr/isisd/isis_circuit.c:877,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:879,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_circuit.c:887,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:892,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:893,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:894,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:895,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_circuit.c:896,1
    - Dst: isis_tx_queue_free
      Src: /src/frr/isisd/isis_circuit.c:899,1
    - Dst: send_hello
      Src: /src/frr/isisd/isis_circuit.c:906,1
    - Dst: send_hello
      Src: /src/frr/isisd/isis_circuit.c:908,1
    - Dst: close
      Src: /src/frr/isisd/isis_circuit.c:916,1
    - Dst: stream_free
      Src: /src/frr/isisd/isis_circuit.c:921,1
    - Dst: stream_free
      Src: /src/frr/isisd/isis_circuit.c:926,1
    - Dst: event_cancel_event
      Src: /src/frr/isisd/isis_circuit.c:930,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:960,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:962,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:963,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:964,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:966,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:967,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:968,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:969,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:970,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:971,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:972,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:979,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:980,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:981,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:983,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:984,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:986,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:989,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:991,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:992,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:993,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:994,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:995,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_circuit.c:997,1
    - Dst: json_object_new_array
      Src: /src/frr/isisd/isis_circuit.c:1001,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1002,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1006,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1007,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:1008,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1010,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1013,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1016,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1019,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1022,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1023,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1025,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1028,1
    - Dst: isis_hello_padding2string
      Src: /src/frr/isisd/isis_circuit.c:1030,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1032,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1034,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1038,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1039,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1042,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1045,1
    - Dst: json_object_array_add
      Src: /src/frr/isisd/isis_circuit.c:1052,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1055,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1056,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1057,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1059,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:1061,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1063,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1067,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1068,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1069,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1071,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:1073,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1075,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1079,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1080,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1081,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1083,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:1085,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1087,1
    - Dst: isis_circuit_print_vty
      Src: /src/frr/isisd/isis_circuit.c:1095,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1099,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1100,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1101,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:1101,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1102,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:1102,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1103,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:1103,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1104,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1111,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1112,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:1113,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1115,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1117,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1118,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1119,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1120,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:1121,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1122,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:1122,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1124,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1125,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1127,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1129,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1132,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1135,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1137,1
    - Dst: isis_hello_padding2string
      Src: /src/frr/isisd/isis_circuit.c:1141,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1143,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1148,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1155,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1159,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1161,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1164,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1167,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1169,1
    - Dst: isis_hello_padding2string
      Src: /src/frr/isisd/isis_circuit.c:1173,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1175,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1180,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1187,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1190,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1191,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1192,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1194,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1196,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1197,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1198,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1200,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1202,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1203,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1204,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1206,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1209,1
    - Dst: DEFINE_HOOK
      Src: /src/frr/isisd/isis_circuit.c:1215,1
    - Dst: isis_interface_config_write
      Src: /src/frr/isisd/isis_circuit.c:1219,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/isisd/isis_circuit.c:1221,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/isisd/isis_circuit.c:1227,1
    - Dst: if_vty_config_start
      Src: /src/frr/isisd/isis_circuit.c:1229,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1233,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_circuit.c:1238,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1242,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1247,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1251,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1255,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1263,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1267,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1279,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1287,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1302,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1310,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1324,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1328,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1337,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1346,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1355,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1370,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1379,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1392,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1400,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1413,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1421,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1430,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1435,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1440,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_circuit.c:1443,1
    - Dst: if_vty_config_end
      Src: /src/frr/isisd/isis_circuit.c:1446,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 265
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 782
    functionDepth: 2
    functionLinenumber: 782
    functionLinenumberEnd: 1450
    functionName: isis_circuit_down
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - isis_dr_resign
    - list_delete
    - _ISIS_CLEAR_FLAG
    - isis_delete_adj
    - isis_if_ldp_sync_disable
    - json_object_string_add
    - json_object_string_addf
    - circuit_type2string
    - memset
    - hook_call
    - ALL_LIST_ELEMENTS_RO
    - isis_adj_build_up_list
    - FOR_ALL_INTERFACES
    - circuit_state2string
    - event_cancel_event
    - vrf_lookup_by_id
    - isis_notif_if_state_change
    - stream_free
    - vty_out
    - isis_circuit_update_all_srmflags
    - listcount
    - circuit_scan_by_ifp
    - isis_interface_config_write
    - json_object_int_add
    - DEFINE_HOOK
    - EVENT_OFF
    - isis_tx_queue_free
    - json_object_new_object
    - json_object_new_array
    - send_hello
    - json_object_array_add
    - if_vty_config_start
    - isis_log_adj_change
    - snprintfrr
    - close
    - circuit_t2string
    - list_new
    - json_object_object_add
    - isis_hello_padding2string
    - isis_circuit_print_vty
    linkageType: ''
    returnType: void
    signature: void isis_circuit_down(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 948
    functionName: circuit_update_nlpids
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void circuit_update_nlpids(struct isis_circuit *circuit)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:960,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:962,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:963,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:964,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:966,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:967,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:968,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:969,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:970,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:971,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:972,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:979,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:980,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:981,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:983,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:984,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:986,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:989,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:991,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:992,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:993,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:994,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:995,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_circuit.c:997,1
    - Dst: json_object_new_array
      Src: /src/frr/isisd/isis_circuit.c:1001,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1002,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1006,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1007,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:1008,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1010,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1013,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1016,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1019,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1022,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1023,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1025,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1028,1
    - Dst: isis_hello_padding2string
      Src: /src/frr/isisd/isis_circuit.c:1030,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1032,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1034,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1038,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1039,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_circuit.c:1042,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1045,1
    - Dst: json_object_array_add
      Src: /src/frr/isisd/isis_circuit.c:1052,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1055,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1056,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1057,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1059,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:1061,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1063,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1067,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1068,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1069,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1071,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:1073,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1075,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1079,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_circuit.c:1080,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_circuit.c:1081,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1083,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_circuit.c:1085,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_circuit.c:1087,1
    - Dst: isis_circuit_print_vty
      Src: /src/frr/isisd/isis_circuit.c:1095,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1099,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1100,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1101,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:1101,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1102,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:1102,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1103,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:1103,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1104,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1111,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1112,1
    - Dst: circuit_state2string
      Src: /src/frr/isisd/isis_circuit.c:1113,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1115,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1117,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1118,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1119,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1120,1
    - Dst: circuit_type2string
      Src: /src/frr/isisd/isis_circuit.c:1121,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1122,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_circuit.c:1122,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1124,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1125,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1127,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1129,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1132,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1135,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1137,1
    - Dst: isis_hello_padding2string
      Src: /src/frr/isisd/isis_circuit.c:1141,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1143,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1148,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1155,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1159,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1161,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1164,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1167,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1169,1
    - Dst: isis_hello_padding2string
      Src: /src/frr/isisd/isis_circuit.c:1173,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1175,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1180,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1187,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1190,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1191,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1192,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1194,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1196,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1197,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1198,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1200,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_circuit.c:1202,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1203,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_circuit.c:1204,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1206,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1209,1
    - Dst: DEFINE_HOOK
      Src: /src/frr/isisd/isis_circuit.c:1215,1
    - Dst: isis_interface_config_write
      Src: /src/frr/isisd/isis_circuit.c:1219,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/isisd/isis_circuit.c:1221,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/isisd/isis_circuit.c:1227,1
    - Dst: if_vty_config_start
      Src: /src/frr/isisd/isis_circuit.c:1229,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1233,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_circuit.c:1238,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1242,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1247,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1251,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1255,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1263,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1267,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1279,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1287,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1302,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1310,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1324,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1328,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1337,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1346,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1355,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1370,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1379,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1392,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1400,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1413,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1421,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1430,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1435,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_circuit.c:1440,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_circuit.c:1443,1
    - Dst: if_vty_config_end
      Src: /src/frr/isisd/isis_circuit.c:1446,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 160
    argCount: 3
    argNames:
    - circuit
    - json
    - detail
    argTypes:
    - struct isis_circuit*
    - struct json_object*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 950
    functionDepth: 1
    functionLinenumber: 950
    functionLinenumberEnd: 1447
    functionName: isis_circuit_print_json
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - json_object_string_add
    - json_object_string_addf
    - circuit_type2string
    - hook_call
    - ALL_LIST_ELEMENTS_RO
    - FOR_ALL_INTERFACES
    - circuit_state2string
    - vrf_lookup_by_id
    - vty_out
    - listcount
    - circuit_scan_by_ifp
    - isis_interface_config_write
    - json_object_int_add
    - DEFINE_HOOK
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - if_vty_config_start
    - snprintfrr
    - circuit_t2string
    - isis_hello_padding2string
    - json_object_object_add
    - isis_circuit_print_vty
    linkageType: ''
    returnType: void
    signature: "void isis_circuit_print_json(struct isis_circuit *circuit,\n\t\t\t
      \    struct json_object *json, char detail)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: circuit_update_nlpids
      Src: /src/frr/isisd/isis_circuit.c:1466,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_circuit.c:1473,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - circuit
    - ip_router
    - ipv6_router
    argTypes:
    - struct isis_circuit*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1453
    functionDepth: 1
    functionLinenumber: 1453
    functionLinenumberEnd: 1475
    functionName: isis_circuit_af_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 2
    functionsReached:
    - lsp_regenerate_schedule
    - circuit_update_nlpids
    linkageType: ''
    returnType: void
    signature: "void isis_circuit_af_set(struct isis_circuit *circuit, bool ip_router,\n\t\t\t
      bool ipv6_router)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ferr_ok
      Src: /src/frr/isisd/isis_circuit.c:1480,1
    - Dst: if_is_loopback
      Src: /src/frr/isisd/isis_circuit.c:1482,1
    - Dst: ferr_cfg_invalid
      Src: /src/frr/isisd/isis_circuit.c:1483,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:1489,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:1491,1
    - Dst: ferr_ok
      Src: /src/frr/isisd/isis_circuit.c:1494,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - circuit
    - passive
    argTypes:
    - struct isis_circuit*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1495
    functionName: isis_circuit_passive_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - ferr_cfg_invalid
    - ferr_ok
    - if_is_loopback
    - isis_csm_state_change
    linkageType: ''
    returnType: ferr_r
    signature: ferr_r isis_circuit_passive_set(struct isis_circuit *circuit, bool
      passive)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_circuit.c:1500,1
    - Dst: ferr_cfg_invalid
      Src: /src/frr/isisd/isis_circuit.c:1502,1
    - Dst: ferr_cfg_invalid
      Src: /src/frr/isisd/isis_circuit.c:1506,1
    - Dst: ferr_ok
      Src: /src/frr/isisd/isis_circuit.c:1511,1
    - Dst: isis_ldp_sync_if_metric_config
      Src: /src/frr/isisd/isis_circuit.c:1517,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_circuit.c:1521,1
    - Dst: ferr_ok
      Src: /src/frr/isisd/isis_circuit.c:1523,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 3
    argNames:
    - circuit
    - level
    - metric
    argTypes:
    - struct isis_circuit*
    - int
    - int
    assertStmts:
    - condition: (level == IS_LEVEL_1 || level == IS_LEVEL_2)
      pos:
        line_end: 1499
        line_start: 1499
        source_file: /src/frr/isisd/isis_circuit.c
    constantsTouched: []
    func_position:
      end: 1524
      start: 1497
    functionDepth: 1
    functionLinenumber: 1497
    functionLinenumberEnd: 1524
    functionName: isis_circuit_metric_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 2
    functionsReached:
    - ferr_cfg_invalid
    - isis_ldp_sync_if_metric_config
    - ferr_ok
    - lsp_regenerate_schedule
    - assert
    linkageType: ''
    returnType: ferr_r
    signature: "ferr_r isis_circuit_metric_set(struct isis_circuit *circuit, int level,\n\t\t\t
      \      int metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_circuit.c:1528,1
    - Dst: ferr_ok
      Src: /src/frr/isisd/isis_circuit.c:1529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1526
    functionDepth: 1
    functionLinenumber: 1526
    functionLinenumberEnd: 1530
    functionName: isis_circuit_passwd_unset
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - ferr_ok
    - memset
    linkageType: ''
    returnType: ferr_r
    signature: ferr_r isis_circuit_passwd_unset(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ferr_code_bug
      Src: /src/frr/isisd/isis_circuit.c:1538,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_circuit.c:1540,1
    - Dst: ferr_code_bug
      Src: /src/frr/isisd/isis_circuit.c:1542,1
    - Dst: strlcpy
      Src: /src/frr/isisd/isis_circuit.c:1546,1
    - Dst: ferr_ok
      Src: /src/frr/isisd/isis_circuit.c:1549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - circuit
    - passwd_type
    - passwd
    argTypes:
    - struct isis_circuit*
    - uint8_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1532
    functionDepth: 1
    functionLinenumber: 1532
    functionLinenumberEnd: 1550
    functionName: isis_circuit_passwd_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - ferr_ok
    - strlcpy
    - strlen
    - ferr_code_bug
    linkageType: ''
    returnType: ferr_r
    signature: "ferr_r isis_circuit_passwd_set(struct isis_circuit *circuit,\n\t\t\t
      \      uint8_t passwd_type, const char *passwd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_circuit_passwd_set
      Src: /src/frr/isisd/isis_circuit.c:1555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - circuit
    - passwd
    argTypes:
    - struct isis_circuit*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1552
    functionDepth: 2
    functionLinenumber: 1552
    functionLinenumberEnd: 1557
    functionName: isis_circuit_passwd_cleartext_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - isis_circuit_passwd_set
    linkageType: ''
    returnType: ferr_r
    signature: "ferr_r isis_circuit_passwd_cleartext_set(struct isis_circuit *circuit,\n\t\t\t\t\t
      const char *passwd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_circuit_passwd_set
      Src: /src/frr/isisd/isis_circuit.c:1562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - circuit
    - passwd
    argTypes:
    - struct isis_circuit*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1564
      start: 1559
    functionDepth: 2
    functionLinenumber: 1559
    functionLinenumberEnd: 1564
    functionName: isis_circuit_passwd_hmac_md5_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - isis_circuit_passwd_set
    linkageType: ''
    returnType: ferr_r
    signature: "ferr_r isis_circuit_passwd_hmac_md5_set(struct isis_circuit *circuit,\n\t\t\t\t\tconst
      char *passwd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:1577,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:1580,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - circuit
    - circ_type
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1566
    functionDepth: 1
    functionLinenumber: 1566
    functionLinenumberEnd: 1582
    functionName: isis_circuit_circ_type_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - isis_csm_state_change
    linkageType: ''
    returnType: void
    signature: void isis_circuit_circ_type_set(struct isis_circuit *circuit, int circ_type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_get_mt_setting
      Src: /src/frr/isisd/isis_circuit.c:1589,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_circuit.c:1593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - circuit
    - mtid
    - enabled
    argTypes:
    - struct isis_circuit*
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1584
    functionDepth: 1
    functionLinenumber: 1584
    functionLinenumberEnd: 1598
    functionName: isis_circuit_mt_enabled_set
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 1
    functionsReached:
    - circuit_get_mt_setting
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: int
    signature: "int isis_circuit_mt_enabled_set(struct isis_circuit *circuit, uint16_t
      mtid,\n\t\t\t\tbool enabled)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1600
    functionDepth: 0
    functionLinenumber: 1600
    functionLinenumberEnd: 1603
    functionName: isis_if_new_hook
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_if_new_hook(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_circuit_del
      Src: /src/frr/isisd/isis_circuit.c:1608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1605
    functionDepth: 3
    functionLinenumber: 1605
    functionLinenumberEnd: 1611
    functionName: isis_if_delete_hook
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - isis_circuit_del
    linkageType: ''
    returnType: int
    signature: int isis_if_delete_hook(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_circuit_enable
      Src: /src/frr/isisd/isis_circuit.c:1618,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_circuit.c:1620,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1613
    functionDepth: 2
    functionLinenumber: 1613
    functionLinenumberEnd: 1623
    functionName: isis_ifp_create
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - isis_circuit_enable
    - hook_call
    linkageType: ''
    returnType: int
    signature: int isis_ifp_create(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_circuit.c:1630,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:1631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1635
    functionName: isis_ifp_up
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - UNSET_FLAG
    - isis_csm_state_change
    linkageType: ''
    returnType: int
    signature: int isis_ifp_up(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_circuit.c:1643,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_circuit.c:1644,1
    - Dst: isis_circuit_switchover_routes
      Src: /src/frr/isisd/isis_circuit.c:1646,1
    - Dst: isis_csm_state_change
      Src: /src/frr/isisd/isis_circuit.c:1649,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_circuit.c:1651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1637
    functionDepth: 1
    functionLinenumber: 1637
    functionLinenumberEnd: 1655
    functionName: isis_ifp_down
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - isis_circuit_switchover_routes
    - CHECK_FLAG
    - SET_FLAG
    - isis_csm_state_change
    linkageType: ''
    returnType: int
    signature: int isis_ifp_down(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_circuit_disable
      Src: /src/frr/isisd/isis_circuit.c:1662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1657
    functionDepth: 2
    functionLinenumber: 1657
    functionLinenumberEnd: 1665
    functionName: isis_ifp_destroy
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - isis_circuit_disable
    linkageType: ''
    returnType: int
    signature: int isis_ifp_destroy(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/isisd/isis_circuit.c:1670,1
    - Dst: hook_register_prio
      Src: /src/frr/isisd/isis_circuit.c:1671,1
    - Dst: if_cmd_init
      Src: /src/frr/isisd/isis_circuit.c:1675,1
    - Dst: if_cmd_init_default
      Src: /src/frr/isisd/isis_circuit.c:1677,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/isisd/isis_circuit.c:1679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1667
    functionDepth: 1
    functionLinenumber: 1667
    functionLinenumberEnd: 1681
    functionName: isis_circuit_init
    functionSourceFile: /src/frr/isisd/isis_circuit.c
    functionUses: 0
    functionsReached:
    - hook_register_prio
    - if_cmd_init
    - if_cmd_init_default
    - if_zapi_callbacks
    linkageType: ''
    returnType: void
    signature: void isis_circuit_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:84,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:91,1
    - Dst: putmsg
      Src: /src/frr/isisd/isis_dlpi.c:99,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_dlpi.c:105,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_dlpi.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 6
    argNames:
    - fd
    - cbuf
    - cbuflen
    - dbuf
    - dbuflen
    - flags
    argTypes:
    - int
    - void*
    - size_t
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 108
    functionName: dlpisend
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - putmsg
    - safe_strerror
    - zlog_debug
    - memset
    linkageType: ''
    returnType: int
    signature: "int dlpisend(int fd, const void *cbuf, size_t cbuflen, const void
      *dbuf,\n\t\t    size_t dbuflen, int flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:119,1
    - Dst: poll
      Src: /src/frr/isisd/isis_dlpi.c:122,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:125,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:126,1
    - Dst: getmsg
      Src: /src/frr/isisd/isis_dlpi.c:132,1
    - Dst: getmsg
      Src: /src/frr/isisd/isis_dlpi.c:141,1
    - Dst: getmsg
      Src: /src/frr/isisd/isis_dlpi.c:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 151
    functionName: dlpirctl
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - getmsg
    - poll
    - memset
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t dlpirctl(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dlpirctl
      Src: /src/frr/isisd/isis_dlpi.c:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - oprim
    argTypes:
    - int
    - t_uscalar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 165
    functionName: dlpiok
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - dlpirctl
    linkageType: ''
    returnType: int
    signature: int dlpiok(int fd, t_uscalar_t oprim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:172,1
    - Dst: dlpisend
      Src: /src/frr/isisd/isis_dlpi.c:175,1
    - Dst: dlpirctl
      Src: /src/frr/isisd/isis_dlpi.c:176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 181
    functionName: dlpiinfo
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - dlpisend
    - dlpirctl
    - memset
    linkageType: ''
    returnType: int
    signature: int dlpiinfo(int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/isisd/isis_dlpi.c:187,1
    - Dst: fcntl
      Src: /src/frr/isisd/isis_dlpi.c:193,1
    - Dst: fcntl
      Src: /src/frr/isisd/isis_dlpi.c:195,1
    - Dst: dlpiinfo
      Src: /src/frr/isisd/isis_dlpi.c:198,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:199,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - devpath
    - acklen
    argTypes:
    - char*
    - ssize_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 204
    functionName: dlpiopen
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - dlpiinfo
    - fcntl
    - open
    - close
    linkageType: ''
    returnType: int
    signature: int dlpiopen(const char *devpath, ssize_t *acklen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:210,1
    - Dst: dlpisend
      Src: /src/frr/isisd/isis_dlpi.c:213,1
    - Dst: dlpiok
      Src: /src/frr/isisd/isis_dlpi.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - unit
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 215
    functionName: dlpiattach
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - dlpisend
    - memset
    - dlpiok
    linkageType: ''
    returnType: int
    signature: int dlpiattach(int fd, int unit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:223,1
    - Dst: dlpisend
      Src: /src/frr/isisd/isis_dlpi.c:226,1
    - Dst: dlpirctl
      Src: /src/frr/isisd/isis_dlpi.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 234
    functionName: dlpibind
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - dlpisend
    - dlpirctl
    - memset
    linkageType: ''
    returnType: int
    signature: int dlpibind(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:243,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dlpi.c:247,1
    - Dst: dlpisend
      Src: /src/frr/isisd/isis_dlpi.c:248,1
    - Dst: dlpiok
      Src: /src/frr/isisd/isis_dlpi.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - fd
    - mcaddr
    argTypes:
    - int
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 250
    functionName: dlpimcast
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - dlpisend
    - memcpy
    - memset
    - dlpiok
    linkageType: ''
    returnType: int
    signature: int dlpimcast(int fd, const uint8_t *mcaddr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:258,1
    - Dst: dlpisend
      Src: /src/frr/isisd/isis_dlpi.c:261,1
    - Dst: dlpirctl
      Src: /src/frr/isisd/isis_dlpi.c:263,1
    - Dst: bcopy
      Src: /src/frr/isisd/isis_dlpi.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - addr
    argTypes:
    - int
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 275
    functionName: dlpiaddr
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - dlpisend
    - dlpirctl
    - bcopy
    - memset
    linkageType: ''
    returnType: int
    signature: int dlpiaddr(int fd, uint8_t *addr)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:286,1
    - Dst: getenv
      Src: /src/frr/isisd/isis_dlpi.c:292,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_dlpi.c:293,1
    - Dst: dlpiopen
      Src: /src/frr/isisd/isis_dlpi.c:295,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_dlpi.c:300,1
    - Dst: dlpiopen
      Src: /src/frr/isisd/isis_dlpi.c:303,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_dlpi.c:310,1
    - Dst: isdigit
      Src: /src/frr/isisd/isis_dlpi.c:311,1
    - Dst: strtol
      Src: /src/frr/isisd/isis_dlpi.c:313,1
    - Dst: dlpiopen
      Src: /src/frr/isisd/isis_dlpi.c:315,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:319,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:326,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:328,1
    - Dst: dlpiattach
      Src: /src/frr/isisd/isis_dlpi.c:334,1
    - Dst: dlpiinfo
      Src: /src/frr/isisd/isis_dlpi.c:337,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:338,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:344,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:346,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:356,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:358,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:370,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:373,1
    - Dst: dlpiaddr
      Src: /src/frr/isisd/isis_dlpi.c:391,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:392,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:394,1
    - Dst: dlpibind
      Src: /src/frr/isisd/isis_dlpi.c:399,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:400,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:402,1
    - Dst: dlpimcast
      Src: /src/frr/isisd/isis_dlpi.c:411,1
    - Dst: dlpimcast
      Src: /src/frr/isisd/isis_dlpi.c:412,1
    - Dst: dlpimcast
      Src: /src/frr/isisd/isis_dlpi.c:413,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:416,1
    - Dst: close
      Src: /src/frr/isisd/isis_dlpi.c:418,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_dlpi.c:423,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_dlpi.c:428,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dlpi.c:429,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_dlpi.c:435,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:436,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 93
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 277
    functionDepth: 4
    functionLinenumber: 277
    functionLinenumberEnd: 443
    functionName: open_dlpi_dev
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strlen
    - snprintf
    - dlpiopen
    - dlpimcast
    - strtol
    - close
    - ioctl
    - zlog_warn
    - dlpiattach
    - dlpiinfo
    - array_size
    - dlpiaddr
    - dlpibind
    - memcpy
    - getenv
    linkageType: ''
    returnType: int
    signature: int open_dlpi_dev(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open_dlpi_dev
      Src: /src/frr/isisd/isis_dlpi.c:454,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:457,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:466,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 448
    functionDepth: 5
    functionLinenumber: 448
    functionLinenumberEnd: 473
    functionName: isis_sock_init
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - open_dlpi_dev
    linkageType: ''
    returnType: int
    signature: int isis_sock_init(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open_dlpi_dev
      Src: /src/frr/isisd/isis_dlpi.c:454,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:457,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:466,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 452
    functionDepth: 5
    functionLinenumber: 452
    functionLinenumberEnd: 470
    functionName: (&isisd_privs)
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - open_dlpi_dev
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&isisd_privs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:482,1
    - Dst: poll
      Src: /src/frr/isisd/isis_dlpi.c:485,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:488,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:489,1
    - Dst: getmsg
      Src: /src/frr/isisd/isis_dlpi.c:495,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:498,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_dlpi.c:499,1
    - Dst: getmsg
      Src: /src/frr/isisd/isis_dlpi.c:506,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dlpi.c:521,1
    - Dst: stream_write
      Src: /src/frr/isisd/isis_dlpi.c:530,1
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_dlpi.c:532,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - circuit
    - ssnpa
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 535
    functionName: isis_recv_pdu_bcast
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - getmsg
    - poll
    - stream_set_getp
    - memset
    - stream_write
    - zlog_warn
    - safe_strerror
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_recv_pdu_bcast(struct isis_circuit *circuit, uint8_t *ssnpa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_dlpi.c:545,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:547,1
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_dlpi.c:554,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dlpi.c:556,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dlpi.c:569,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dlpi.c:571,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dlpi.c:578,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_dlpi.c:579,1
    - Dst: dlpisend
      Src: /src/frr/isisd/isis_dlpi.c:580,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dlpi.c:583,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_dlpi.c:584,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/isisd/isis_dlpi.c:585,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 591
    functionName: isis_send_pdu_bcast
    functionSourceFile: /src/frr/isisd/isis_dlpi.c
    functionUses: 0
    functionsReached:
    - stream_set_getp
    - memset
    - stream_get_endp
    - dlpisend
    - ERRNO_IO_RETRY
    - zlog_warn
    - safe_strerror
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_send_pdu_bcast(struct isis_circuit *circuit, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - flags
    argTypes:
    - struct flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 23
    functionName: flags_initialize
    functionSourceFile: /src/frr/isisd/isis_flags.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void flags_initialize(struct flags *flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/isisd/isis_flags.c:33,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_flags.c:34,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_flags.c:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - flags
    argTypes:
    - struct flags*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 40
    functionName: flags_get_index
    functionSourceFile: /src/frr/isisd/isis_flags.c
    functionUses: 1
    functionsReached:
    - listgetdata
    - listhead
    - listnode_delete
    linkageType: ''
    returnType: long int
    signature: long int flags_get_index(struct flags *flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/isisd/isis_flags.c:50,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_flags.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - flags
    - index
    argTypes:
    - struct flags*
    - long int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 56
    functionName: flags_free_index
    functionSourceFile: /src/frr/isisd/isis_flags.c
    functionUses: 1
    functionsReached:
    - list_new
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void flags_free_index(struct flags *flags, long int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_flags.c:61,1
    - Dst: bcmp
      Src: /src/frr/isisd/isis_flags.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: flags_any_set
    functionSourceFile: /src/frr/isisd/isis_flags.c
    functionUses: 0
    functionsReached:
    - bcmp
    - memset
    linkageType: ''
    returnType: int
    signature: int flags_any_set(uint32_t *flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: ISIS_MASK_LSP_OL_BIT
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_OL_BIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 142
    functionName: ISIS_MASK_LSP_IS_L1_BIT
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_IS_L1_BIT(x)
  - 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: ISIS_MASK_LSP_IS_L2_BIT
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_IS_L2_BIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: ISIS_MASK_LSP_PARTITION_BIT
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_PARTITION_BIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: ISIS_MASK_LSP_ATT_BITS
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_ATT_BITS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: ISIS_MASK_LSP_ATT_ERROR_BIT
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_ATT_ERROR_BIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: ISIS_MASK_LSP_ATT_EXPENSE_BIT
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_ATT_EXPENSE_BIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: ISIS_MASK_LSP_ATT_DELAY_BIT
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_MASK_LSP_ATT_DELAY_BIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: ISO_MTU
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISO_MTU(C)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 166
    functionName: isis_ethertype
    functionSourceFile: /src/frr/isisd/isis_constants.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t isis_ethertype(size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: GETSYSID
    functionSourceFile: /src/frr/isisd/isis_misc.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETSYSID(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - F
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: _ISIS_SET_FLAG
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ISIS_SET_FLAG(F, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - F
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: ISIS_SET_FLAG
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_SET_FLAG(F, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - F
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: _ISIS_CLEAR_FLAG
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ISIS_CLEAR_FLAG(F, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - F
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: ISIS_CLEAR_FLAG
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_CLEAR_FLAG(F, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - F
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: _ISIS_CHECK_FLAG
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ISIS_CHECK_FLAG(F, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - F
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: ISIS_CHECK_FLAG
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_CHECK_FLAG(F, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FLAGS
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: ISIS_FLAGS_SET_ALL
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_FLAGS_SET_ALL(FLAGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FLAGS
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: ISIS_FLAGS_CLEAR_ALL
    functionSourceFile: /src/frr/isisd/isis_flags.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ISIS_FLAGS_CLEAR_ALL(FLAGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - protocols
    - count
    - family
    argTypes:
    - uint8_t*
    - uint8_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: speaks
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool speaks(uint8_t *protocols, uint8_t count, int family)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:89,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf.c:93,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:95,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_spf.c:97,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:100,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:107,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:124,1
    - Dst: list_delete_node
      Src: /src/frr/isisd/isis_spf.c:131,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:136,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:165,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_spf.c:167,1
    - Dst: VTYPE_ES
      Src: /src/frr/isisd/isis_spf.c:167,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:168,1
    - Dst: strlcpy
      Src: /src/frr/isisd/isis_spf.c:169,1
    - Dst: buff
      Src: /src/frr/isisd/isis_spf.c:170,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_spf.c:173,1
    - Dst: srcdest2str
      Src: /src/frr/isisd/isis_spf.c:174,1
    - Dst: prefix_sid_cmp
      Src: /src/frr/isisd/isis_spf.c:182,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:187,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:189,1
    - Dst: prefix_sid_key_make
      Src: /src/frr/isisd/isis_spf.c:196,1
    - Dst: jhash_1word
      Src: /src/frr/isisd/isis_spf.c:200,1
    - Dst: isis_spf_prefix_sid_lookup
      Src: /src/frr/isisd/isis_spf.c:203,1
    - Dst: hash_lookup
      Src: /src/frr/isisd/isis_spf.c:209,1
    - Dst: isis_vertex_adj_free
      Src: /src/frr/isisd/isis_spf.c:212,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_spf.c:216,1
    - Dst: isis_vertex_new
      Src: /src/frr/isisd/isis_spf.c:219,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_spf.c:225,1
    - Dst: isis_vertex_id_init
      Src: /src/frr/isisd/isis_spf.c:227,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_spf.c:229,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_spf.c:231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:233,1
    - Dst: hash_create
      Src: /src/frr/isisd/isis_spf.c:234,1
    - Dst: isis_vertex_del
      Src: /src/frr/isisd/isis_spf.c:242,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_spf.c:244,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_spf.c:245,1
    - Dst: hash_clean_and_free
      Src: /src/frr/isisd/isis_spf.c:246,1
    - Dst: memset
      Src: /src/frr/isisd/isis_spf.c:248,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_spf.c:249,1
    - Dst: isis_vertex_adj_add
      Src: /src/frr/isisd/isis_spf.c:253,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_spf.c:259,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_spf.c:264,1
    - Dst: sr_prefix_out_label
      Src: /src/frr/isisd/isis_spf.c:269,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:276,1
    - Dst: isis_vertex_adj_del
      Src: /src/frr/isisd/isis_spf.c:281,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_spf.c:290,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_spf.c:292,1
    - Dst: isis_vertex_adj_free
      Src: /src/frr/isisd/isis_spf.c:293,1
    - Dst: isis_vertex_adj_exists
      Src: /src/frr/isisd/isis_spf.c:299,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:306,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:307,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:308,1
    - Dst: isis_spf_adj_free
      Src: /src/frr/isisd/isis_spf.c:320,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_spf.c:324,1
    - Dst: _isis_spftree_init
      Src: /src/frr/isisd/isis_spf.c:327,1
    - Dst: isis_vertex_queue_init
      Src: /src/frr/isisd/isis_spf.c:329,1
    - Dst: isis_vertex_queue_init
      Src: /src/frr/isisd/isis_spf.c:330,1
    - Dst: srcdest_table_init
      Src: /src/frr/isisd/isis_spf.c:331,1
    - Dst: isis_route_table_info_alloc
      Src: /src/frr/isisd/isis_spf.c:333,1
    - Dst: srcdest_table_init
      Src: /src/frr/isisd/isis_spf.c:334,1
    - Dst: isis_route_table_info_alloc
      Src: /src/frr/isisd/isis_spf.c:336,1
    - Dst: hash_create
      Src: /src/frr/isisd/isis_spf.c:338,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_spf.c:340,1
    - Dst: isis_rlfa_list_init
      Src: /src/frr/isisd/isis_spf.c:342,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_spf.c:343,1
    - Dst: isis_spf_node_list_init
      Src: /src/frr/isisd/isis_spf.c:346,1
    - Dst: isis_spf_node_list_init
      Src: /src/frr/isisd/isis_spf.c:347,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_spf.c:352,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_spf.c:358,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:367,1
    - Dst: _isis_spftree_init
      Src: /src/frr/isisd/isis_spf.c:374,1
    - Dst: _isis_spftree_del
      Src: /src/frr/isisd/isis_spf.c:379,1
    - Dst: hash_clean_and_free
      Src: /src/frr/isisd/isis_spf.c:381,1
    - Dst: isis_zebra_rlfa_unregister_all
      Src: /src/frr/isisd/isis_spf.c:382,1
    - Dst: isis_rlfa_list_clear
      Src: /src/frr/isisd/isis_spf.c:383,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_spf.c:384,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_spf.c:387,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_spf.c:388,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_spf.c:390,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_spf.c:391,1
    - Dst: isis_vertex_queue_free
      Src: /src/frr/isisd/isis_spf.c:392,1
    - Dst: isis_vertex_queue_free
      Src: /src/frr/isisd/isis_spf.c:393,1
    - Dst: isis_route_table_info_free
      Src: /src/frr/isisd/isis_spf.c:394,1
    - Dst: isis_route_table_info_free
      Src: /src/frr/isisd/isis_spf.c:395,1
    - Dst: route_table_finish
      Src: /src/frr/isisd/isis_spf.c:396,1
    - Dst: route_table_finish
      Src: /src/frr/isisd/isis_spf.c:397,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_spf.c:400,1
    - Dst: _isis_spftree_del
      Src: /src/frr/isisd/isis_spf.c:402,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_spf.c:406,1
    - Dst: isis_spftree_clear
      Src: /src/frr/isisd/isis_spf.c:411,1
    - Dst: _isis_spftree_del
      Src: /src/frr/isisd/isis_spf.c:413,1
    - Dst: _isis_spftree_init
      Src: /src/frr/isisd/isis_spf.c:414,1
    - Dst: isis_spftree_adj_del
      Src: /src/frr/isisd/isis_spf.c:418,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf.c:425,1
    - Dst: isis_vertex_queue_count
      Src: /src/frr/isisd/isis_spf.c:425,1
    - Dst: ALL_QUEUE_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:426,1
    - Dst: isis_vertex_adj_del
      Src: /src/frr/isisd/isis_spf.c:427,1
    - Dst: spftree_area_init
      Src: /src/frr/isisd/isis_spf.c:431,1
    - Dst: for
      Src: /src/frr/isisd/isis_spf.c:434,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:435,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_spf.c:440,1
    - Dst: for
      Src: /src/frr/isisd/isis_spf.c:451,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:452,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_spf.c:457,1
    - Dst: spf_adj_state_change
      Src: /src/frr/isisd/isis_spf.c:462,1
    - Dst: isis_spftree_adj_del
      Src: /src/frr/isisd/isis_spf.c:476,1
    - Dst: fabricd_spftree
      Src: /src/frr/isisd/isis_spf.c:481,1
    - Dst: isis_spftree_adj_del
      Src: /src/frr/isisd/isis_spf.c:482,1
    - Dst: fabricd_spftree
      Src: /src/frr/isisd/isis_spf.c:482,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_spf.c:500,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 24
    argCount: 1
    argNames:
    - adjs
    argTypes:
    - struct list*
    assertStmts:
    - condition: (adj)
      pos:
        line_end: 92
        line_start: 92
        source_file: /src/frr/isisd/isis_spf.c
    - condition: (!isis_vertex_queue_count(&spftree->tents))
      pos:
        line_end: 424
        line_start: 424
        source_file: /src/frr/isisd/isis_spf.c
    constantsTouched: []
    func_position:
      end: 504
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 504
    functionName: remove_excess_adjs
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - spftree_area_init
    - isis_spftree_new
    - ALL_QUEUE_ELEMENTS_RO
    - list_delete
    - isis_vertex_queue_count
    - spf_adj_state_change
    - isis_spftree_clear
    - hash_create
    - isis_vertex_adj_free
    - memcmp
    - listnode_add
    - buff
    - hash_lookup
    - jhash_1word
    - zlog_warn
    - isis_vertex_adj_del
    - isis_route_table_info_alloc
    - isis_vertex_queue_init
    - isis_spftree_del
    - isis_spftree_adj_del
    - prefix_sid_key_make
    - isis_vertex_adj_exists
    - _isis_spftree_init
    - isis_vertex_new
    - XCALLOC
    - memset
    - isis_route_table_info_free
    - ALL_LIST_ELEMENTS_RO
    - isis_vertex_adj_add
    - _isis_spftree_del
    - sr_prefix_out_label
    - VTYPE_IS
    - listgetdata
    - if
    - prefix_sid_cmp
    - for
    - fabricd_spftree
    - isis_rlfa_list_clear
    - assert
    - hash_clean_and_free
    - isis_spf_node_list_clear
    - route_table_finish
    - print_sys_hostname
    - strlcpy
    - isis_vertex_id_init
    - list_delete_node
    - isis_spf_prefix_sid_lookup
    - isis_spf_node_list_init
    - XFREE
    - listnode_delete
    - vtype2string
    - isis_vertex_queue_free
    - memcpy
    - vid2string
    - srcdest2str
    - VTYPE_IP
    - lsp_search
    - CHECK_FLAG
    - isis_spf_adj_free
    - VTYPE_ES
    - isis_rlfa_list_init
    - list_new
    - ALL_LIST_ELEMENTS
    - isis_vertex_del
    - srcdest_table_init
    - isis_zebra_rlfa_unregister_all
    linkageType: ''
    returnType: void
    signature: void remove_excess_adjs(struct list *adjs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 498
    functionName: LSP_PSEUDO_ID
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_PSEUDO_ID(lspid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 499
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lspid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_vertex_new
      Src: /src/frr/isisd/isis_spf.c:516,1
    - Dst: isis_vertex_queue_append
      Src: /src/frr/isisd/isis_spf.c:520,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:524,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:526,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - spftree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 532
    functionName: isis_spf_add_root
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - vid2string
    - isis_vertex_new
    - zlog_debug
    - isis_vertex_queue_append
    - vtype2string
    linkageType: ''
    returnType: struct isis_vertex
    signature: struct isis_vertex *isis_spf_add_root(struct isis_spftree *spftree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/isisd/isis_spf.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 540
    functionName: vertex_add_parent_firsthop
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: void vertex_add_parent_firsthop(struct hash_bucket *bucket, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/isisd/isis_spf.c:546,1
    - Dst: hash_iterate
      Src: /src/frr/isisd/isis_spf.c:551,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - vertex
    - parent
    argTypes:
    - struct isis_vertex*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 552
    functionName: vertex_update_firsthops
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - hash_get
    linkageType: ''
    returnType: void
    signature: "void vertex_update_firsthops(struct isis_vertex *vertex,\n\t\t\t\t
      \   struct isis_vertex *parent)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_spf.c:567,1
    - Dst: zlog_err
      Src: /src/frr/isisd/isis_spf.c:569,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:571,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:572,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_spf.c:575,1
    - Dst: zlog_err
      Src: /src/frr/isisd/isis_spf.c:577,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:579,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:580,1
    - Dst: isis_vertex_new
      Src: /src/frr/isisd/isis_spf.c:584,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_spf.c:587,1
    - Dst: isis_spf_prefix_sid_lookup
      Src: /src/frr/isisd/isis_spf.c:594,1
    - Dst: prefix_same
      Src: /src/frr/isisd/isis_spf.c:596,1
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_spf.c:598,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:603,1
    - Dst: sr_prefix_in_label
      Src: /src/frr/isisd/isis_spf.c:614,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:621,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_spf.c:622,1
    - Dst: hash_get
      Src: /src/frr/isisd/isis_spf.c:629,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:635,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:638,1
    - Dst: vertex_update_firsthops
      Src: /src/frr/isisd/isis_spf.c:639,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:642,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:645,1
    - Dst: isis_vertex_adj_add
      Src: /src/frr/isisd/isis_spf.c:646,1
    - Dst: isis_vertex_adj_add
      Src: /src/frr/isisd/isis_spf.c:649,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:657,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:658,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:659,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:660,1
    - Dst: isis_vertex_queue_insert
      Src: /src/frr/isisd/isis_spf.c:663,1
    - Dst: isis_spf_add_local
      Src: /src/frr/isisd/isis_spf.c:667,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_spf.c:675,1
    - Dst: isis_vertex_adj_add
      Src: /src/frr/isisd/isis_spf.c:683,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:688,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:690,1
    - Dst: remove_excess_adjs
      Src: /src/frr/isisd/isis_spf.c:691,1
    - Dst: listnode_lookup
      Src: /src/frr/isisd/isis_spf.c:692,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:694,1
    - Dst: isis_vertex_queue_delete
      Src: /src/frr/isisd/isis_spf.c:701,1
    - Dst: isis_vertex_del
      Src: /src/frr/isisd/isis_spf.c:702,1
    - Dst: isis_spf_add2tent
      Src: /src/frr/isisd/isis_spf.c:706,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:710,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf.c:719,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:721,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_spf.c:722,1
    - Dst: prefix_pair
      Src: /src/frr/isisd/isis_spf.c:725,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:727,1
    - Dst: apply_mask
      Src: /src/frr/isisd/isis_spf.c:728,1
    - Dst: apply_mask
      Src: /src/frr/isisd/isis_spf.c:729,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_spf.c:745,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:749,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:752,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:753,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:754,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf.c:756,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_spf.c:760,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:765,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:766,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:769,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:770,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:771,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:772,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:774,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:779,1
    - Dst: isis_vertex_adj_exists
      Src: /src/frr/isisd/isis_spf.c:781,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:791,1
    - Dst: vertex_update_firsthops
      Src: /src/frr/isisd/isis_spf.c:793,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:795,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:797,1
    - Dst: remove_excess_adjs
      Src: /src/frr/isisd/isis_spf.c:798,1
    - Dst: listnode_lookup
      Src: /src/frr/isisd/isis_spf.c:799,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:800,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 52
    argCount: 8
    argNames:
    - spftree
    - vtype
    - id
    - cost
    - depth
    - sadj
    - psid
    - parent
    argTypes:
    - struct isis_spftree*
    - enum vertextype
    - void*
    - uint32_t
    - int
    - struct isis_spf_adj*
    - struct isis_prefix_sid*
    - struct isis_vertex*
    assertStmts:
    - condition: (dist >= vertex->d_N)
      pos:
        line_end: 755
        line_start: 755
        source_file: /src/frr/isisd/isis_spf.c
    - condition: (spftree && parent)
      pos:
        line_end: 718
        line_start: 718
        source_file: /src/frr/isisd/isis_spf.c
    constantsTouched: []
    func_position:
      end: 802
      start: 557
    functionDepth: 3
    functionLinenumber: 557
    functionLinenumberEnd: 802
    functionName: isis_spf_add2tent
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 1
    functionsReached:
    - isis_vertex_queue_insert
    - isis_vertex_queue_delete
    - process_N
    - listnode_add
    - prefix_pair
    - vertex_update_firsthops
    - isis_vertex_adj_exists
    - flog_warn
    - isis_vertex_new
    - ALL_LIST_ELEMENTS_RO
    - isis_vertex_adj_add
    - isis_spf_add2tent
    - zlog_debug
    - VTYPE_IS
    - flex_algo_id_valid
    - if
    - isis_spf_add_local
    - hash_get
    - assert
    - sr_prefix_in_label
    - prefix_same
    - apply_mask
    - print_sys_hostname
    - listcount
    - zlog_err
    - isis_spf_prefix_sid_lookup
    - vtype2string
    - memcpy
    - isis_find_vertex
    - vid2string
    - isis_flex_algo_elected_supported
    - VTYPE_IP
    - CHECK_FLAG
    - remove_excess_adjs
    - listnode_lookup
    - isis_vertex_del
    linkageType: ''
    returnType: struct isis_vertex
    signature: "struct isis_vertex *\nisis_spf_add2tent(struct isis_spftree *spftree,
      enum vertextype vtype, void *id,\n\t\t  uint32_t cost, int depth, struct isis_spf_adj
      *sadj,\n\t\t  struct isis_prefix_sid *psid, struct isis_vertex *parent)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:832,1
    - Dst: isis_lfa_excise_node_check
      Src: /src/frr/isisd/isis_spf.c:841,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:843,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:844,1
    - Dst: isis_tlvs_lookup_mt_router_info
      Src: /src/frr/isisd/isis_spf.c:852,1
    - Dst: speaks
      Src: /src/frr/isisd/isis_spf.c:856,1
    - Dst: ISIS_MASK_LSP_OL_BIT
      Src: /src/frr/isisd/isis_spf.c:865,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_spf.c:870,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:876,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:878,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:893,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:894,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:898,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:902,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:903,1
    - Dst: isis_lookup_mt_items
      Src: /src/frr/isisd/isis_spf.c:916,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:926,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:927,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:931,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:936,1
    - Dst: sr_algorithm_participated
      Src: /src/frr/isisd/isis_spf.c:937,1
    - Dst: isis_flex_algo_constraint_drop
      Src: /src/frr/isisd/isis_spf.c:939,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:945,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:949,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:950,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_spf.c:966,1
    - Dst: memset
      Src: /src/frr/isisd/isis_spf.c:970,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:980,1
    - Dst: isis_lookup_mt_items
      Src: /src/frr/isisd/isis_spf.c:995,1
    - Dst: memset
      Src: /src/frr/isisd/isis_spf.c:998,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:1025,1
    - Dst: sr_algorithm_participated
      Src: /src/frr/isisd/isis_spf.c:1027,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_spf.c:1029,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:1036,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:1048,1
    - Dst: isis_lookup_mt_items
      Src: /src/frr/isisd/isis_spf.c:1058,1
    - Dst: memset
      Src: /src/frr/isisd/isis_spf.c:1069,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_spf.c:1079,1
    - Dst: srcdest2str
      Src: /src/frr/isisd/isis_spf.c:1080,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:1105,1
    - Dst: sr_algorithm_participated
      Src: /src/frr/isisd/isis_spf.c:1107,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_spf.c:1109,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:1116,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:1128,1
    - Dst: isis_level2_adj_up
      Src: /src/frr/isisd/isis_spf.c:1143,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1146,1
    - Dst: process_N
      Src: /src/frr/isisd/isis_spf.c:1158,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_spf.c:1163,1
    - Dst: listnextnode
      Src: /src/frr/isisd/isis_spf.c:1165,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_spf.c:1168,1
    CyclomaticComplexity: 94
    EdgeCount: 94
    ICount: 148
    argCount: 6
    argNames:
    - spftree
    - lsp
    - cost
    - depth
    - root_sysid
    - parent
    argTypes:
    - struct isis_spftree*
    - struct isis_lsp*
    - uint32_t
    - uint16_t
    - uint8_t*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 1173
    functionName: isis_spf_process_lsp
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - ISIS_MASK_LSP_OL_BIT
    - process_N
    - listhead
    - speaks
    - memcmp
    - zlog_warn
    - isis_lookup_mt_items
    - isis_lfa_excise_node_check
    - isis_flex_algo_constraint_drop
    - sr_algorithm_participated
    - memset
    - isis_tlvs_lookup_mt_router_info
    - zlog_debug
    - array_size
    - flex_algo_id_valid
    - listgetdata
    - listnextnode
    - print_sys_hostname
    - LSP_PSEUDO_ID
    - srcdest2str
    - isis_flex_algo_elected_supported
    - isis_level2_adj_up
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int isis_spf_process_lsp(struct isis_spftree *spftree,\n\t\t\t\tstruct
      isis_lsp *lsp, uint32_t cost,\n\t\t\t\tuint16_t depth, uint8_t *root_sysid,\n\t\t\t\tstruct
      isis_vertex *parent)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:1181,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:1184,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:1184,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:1186,1
    - Dst: adj_has_mt
      Src: /src/frr/isisd/isis_spf.c:1188,1
    - Dst: speaks
      Src: /src/frr/isisd/isis_spf.c:1191,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf.c:1219,1
    - Dst: memset
      Src: /src/frr/isisd/isis_spf.c:1220,1
    - Dst: prefix_copy
      Src: /src/frr/isisd/isis_spf.c:1221,1
    - Dst: apply_mask
      Src: /src/frr/isisd/isis_spf.c:1222,1
    - Dst: isis_spf_add_local
      Src: /src/frr/isisd/isis_spf.c:1240,1
    - Dst: isis_spf_add_local
      Src: /src/frr/isisd/isis_spf.c:1251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1266,1
    - Dst: isis_lsp_iterate_ip_reach
      Src: /src/frr/isisd/isis_spf.c:1269,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:1275,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1279,1
    - Dst: isis_lfa_excise_adj_check
      Src: /src/frr/isisd/isis_spf.c:1284,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1286,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1291,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1294,1
    - Dst: isis_spf_add_local
      Src: /src/frr/isisd/isis_spf.c:1295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1296,1
    - Dst: isis_spf_process_lsp
      Src: /src/frr/isisd/isis_spf.c:1303,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:1321,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_spf.c:1339,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:1346,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1346,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1350,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1351,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_spf.c:1352,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_spf.c:1353,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_spf.c:1356,1
    - Dst: isis_spf_adj_free
      Src: /src/frr/isisd/isis_spf.c:1357,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1362,1
    - Dst: isis_lsp_iterate_is_reach
      Src: /src/frr/isisd/isis_spf.c:1368,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_spf.c:1373,1
    - Dst: isis_spf_adj_free
      Src: /src/frr/isisd/isis_spf.c:1374,1
    - Dst: spf_adj_list_parse_tlv
      Src: /src/frr/isisd/isis_spf.c:1381,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:1394,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1398,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_spf.c:1399,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_spf.c:1400,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_spf.c:1402,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_spf.c:1407,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1408,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1410,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1412,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1417,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1427,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1428,1
    - Dst: adj_find
      Src: /src/frr/isisd/isis_spf.c:1431,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_spf.c:1434,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_spf.c:1438,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:1443,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1445,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_spf.c:1448,1
    - Dst: isis_spf_node_new
      Src: /src/frr/isisd/isis_spf.c:1450,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:1453,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1457,1
    - Dst: spf_adj_list_parse_lsp
      Src: /src/frr/isisd/isis_spf.c:1458,1
    - Dst: spf_adj_list_parse_lsp
      Src: /src/frr/isisd/isis_spf.c:1461,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1466,1
    - Dst: spf_adj_list_parse_tlv
      Src: /src/frr/isisd/isis_spf.c:1482,1
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_spf.c:1492,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:1504,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:1504,1
    - Dst: sr_algorithm_participated
      Src: /src/frr/isisd/isis_spf.c:1505,1
    - Dst: isis_flex_algo_constraint_drop
      Src: /src/frr/isisd/isis_spf.c:1507,1
    - Dst: spf_adj_list_parse_tlv
      Src: /src/frr/isisd/isis_spf.c:1512,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_spf.c:1520,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:1524,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 59
    argCount: 5
    argNames:
    - adj_list
    - id
    - level
    - mtid
    - family
    argTypes:
    - struct list*
    - uint8_t*
    - int
    - uint16_t
    - int
    assertStmts:
    - condition: (spftree->family == prefix->family)
      pos:
        line_end: 1218
        line_start: 1218
        source_file: /src/frr/isisd/isis_spf.c
    constantsTouched: []
    func_position:
      end: 1531
      start: 1175
    functionDepth: 3
    functionLinenumber: 1175
    functionLinenumberEnd: 1531
    functionName: adj_find
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 1
    functionsReached:
    - isis_spf_process_lsp
    - isis_lsp_iterate_is_reach
    - adj_find
    - speaks
    - memcmp
    - listnode_add
    - zlog_warn
    - isis_flex_algo_constraint_drop
    - isis_spf_node_find
    - sr_algorithm_participated
    - memset
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - if
    - flex_algo_id_valid
    - isis_spf_add_local
    - prefix_copy
    - LSP_FRAGMENT
    - isis_lsp_iterate_ip_reach
    - assert
    - apply_mask
    - LSP_PSEUDO_ID
    - isis_lfa_excise_adj_check
    - XFREE
    - listnode_delete
    - memcpy
    - isis_get_mt_items
    - spf_adj_list_parse_lsp
    - adj_has_mt
    - lsp_search
    - CHECK_FLAG
    - isis_spf_adj_free
    - SET_FLAG
    - isis_spf_node_new
    - ALL_LIST_ELEMENTS
    - spf_adj_list_parse_tlv
    linkageType: ''
    returnType: struct isis_adjacency
    signature: "struct isis_adjacency *adj_find(struct list *adj_list, const uint8_t
      *id,\n\t\t\t\t       int level, uint16_t mtid, int family)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1266,1
    - Dst: isis_lsp_iterate_ip_reach
      Src: /src/frr/isisd/isis_spf.c:1269,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:1275,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1279,1
    - Dst: isis_lfa_excise_adj_check
      Src: /src/frr/isisd/isis_spf.c:1284,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1286,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1291,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1294,1
    - Dst: isis_spf_add_local
      Src: /src/frr/isisd/isis_spf.c:1295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1296,1
    - Dst: isis_spf_process_lsp
      Src: /src/frr/isisd/isis_spf.c:1303,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - spftree
    - root_sysid
    - root_lsp
    - parent
    argTypes:
    - struct isis_spftree*
    - uint8_t*
    - struct isis_lsp*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1257
    functionDepth: 3
    functionLinenumber: 1257
    functionLinenumberEnd: 1307
    functionName: isis_spf_preload_tent
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_spf_process_lsp
    - LSP_PSEUDO_ID
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - isis_lfa_excise_adj_check
    - zlog_debug
    - isis_spf_add_local
    - isis_lsp_iterate_ip_reach
    linkageType: ''
    returnType: void
    signature: "void isis_spf_preload_tent(struct isis_spftree *spftree,\n\t\t\t\t
      \ uint8_t *root_sysid,\n\t\t\t\t  struct isis_lsp *root_lsp,\n\t\t\t\t  struct
      isis_vertex *parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:1321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - id
    - metric
    - oldmetric
    - subtlvs
    - arg
    argTypes:
    - uint8_t*
    - uint32_t
    - bool
    - struct isis_ext_subtlvs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1314
    functionDepth: 0
    functionLinenumber: 1314
    functionLinenumberEnd: 1327
    functionName: spf_adj_find_reverse_metric_cb
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int spf_adj_find_reverse_metric_cb(const uint8_t *id, uint32_t metric,\n\t\t\t\t\t
      \ bool oldmetric,\n\t\t\t\t\t  struct isis_ext_subtlvs *subtlvs,\n\t\t\t\t\t
      \ void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_spf.c:1339,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:1346,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1346,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1350,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1351,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_spf.c:1352,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_spf.c:1353,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_spf.c:1356,1
    - Dst: isis_spf_adj_free
      Src: /src/frr/isisd/isis_spf.c:1357,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1362,1
    - Dst: isis_lsp_iterate_is_reach
      Src: /src/frr/isisd/isis_spf.c:1368,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_spf.c:1373,1
    - Dst: isis_spf_adj_free
      Src: /src/frr/isisd/isis_spf.c:1374,1
    - Dst: spf_adj_list_parse_tlv
      Src: /src/frr/isisd/isis_spf.c:1381,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:1394,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1398,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_spf.c:1399,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_spf.c:1400,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_spf.c:1402,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_spf.c:1407,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1408,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1410,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1412,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1417,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1427,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1428,1
    - Dst: adj_find
      Src: /src/frr/isisd/isis_spf.c:1431,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_spf.c:1434,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_spf.c:1438,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:1443,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1445,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_spf.c:1448,1
    - Dst: isis_spf_node_new
      Src: /src/frr/isisd/isis_spf.c:1450,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf.c:1453,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1457,1
    - Dst: spf_adj_list_parse_lsp
      Src: /src/frr/isisd/isis_spf.c:1458,1
    - Dst: spf_adj_list_parse_lsp
      Src: /src/frr/isisd/isis_spf.c:1461,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_spf.c:1466,1
    - Dst: spf_adj_list_parse_tlv
      Src: /src/frr/isisd/isis_spf.c:1482,1
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_spf.c:1492,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:1504,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:1504,1
    - Dst: sr_algorithm_participated
      Src: /src/frr/isisd/isis_spf.c:1505,1
    - Dst: isis_flex_algo_constraint_drop
      Src: /src/frr/isisd/isis_spf.c:1507,1
    - Dst: spf_adj_list_parse_tlv
      Src: /src/frr/isisd/isis_spf.c:1512,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_spf.c:1520,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:1524,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 8
    argCount: 1
    argNames:
    - spftree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1334
    functionDepth: 2
    functionLinenumber: 1334
    functionLinenumberEnd: 1530
    functionName: spf_adj_get_reverse_metrics
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_lsp_iterate_is_reach
    - adj_find
    - memcmp
    - listnode_add
    - zlog_warn
    - isis_flex_algo_constraint_drop
    - isis_spf_node_find
    - sr_algorithm_participated
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - if
    - flex_algo_id_valid
    - LSP_FRAGMENT
    - LSP_PSEUDO_ID
    - XFREE
    - listnode_delete
    - memcpy
    - isis_get_mt_items
    - spf_adj_list_parse_lsp
    - lsp_search
    - isis_spf_adj_free
    - CHECK_FLAG
    - SET_FLAG
    - isis_spf_node_new
    - ALL_LIST_ELEMENTS
    - spf_adj_list_parse_tlv
    linkageType: ''
    returnType: void
    signature: void spf_adj_get_reverse_metrics(struct isis_spftree *spftree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1538,1
    - Dst: list_dup
      Src: /src/frr/isisd/isis_spf.c:1539,1
    - Dst: spf_adj_list_parse_lsp
      Src: /src/frr/isisd/isis_spf.c:1541,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1543,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_spf.c:1544,1
    - Dst: spf_adj_get_reverse_metrics
      Src: /src/frr/isisd/isis_spf.c:1547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - spftree
    - lsp
    argTypes:
    - struct isis_spftree*
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1533
    functionDepth: 3
    functionLinenumber: 1533
    functionLinenumberEnd: 1548
    functionName: isis_spf_build_adj_list
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - spf_adj_list_parse_lsp
    - list_delete
    - list_dup
    - CHECK_FLAG
    - spf_adj_get_reverse_metrics
    linkageType: ''
    returnType: void
    signature: "void isis_spf_build_adj_list(struct isis_spftree *spftree,\n\t\t\t\t
      \   struct isis_lsp *lsp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_spf.c:1561,1
    - Dst: isis_vertex_queue_append
      Src: /src/frr/isisd/isis_spf.c:1563,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1567,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:1570,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:1571,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:1572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - spftree
    - vertex
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1554
    functionDepth: 2
    functionLinenumber: 1554
    functionLinenumberEnd: 1575
    functionName: add_to_paths
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - vid2string
    - print_sys_hostname
    - zlog_debug
    - isis_vertex_queue_append
    - vtype2string
    - isis_find_vertex
    linkageType: ''
    returnType: void
    signature: "void add_to_paths(struct isis_spftree *spftree,\n\t\t\t struct isis_vertex
      *vertex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean
      Src: /src/frr/isisd/isis_spf.c:1580,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_spf.c:1581,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_spf.c:1582,1
    - Dst: isis_vertex_queue_clear
      Src: /src/frr/isisd/isis_spf.c:1583,1
    - Dst: isis_vertex_queue_clear
      Src: /src/frr/isisd/isis_spf.c:1584,1
    - Dst: isis_zebra_rlfa_unregister_all
      Src: /src/frr/isisd/isis_spf.c:1585,1
    - Dst: isis_rlfa_list_clear
      Src: /src/frr/isisd/isis_spf.c:1586,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_spf.c:1587,1
    - Dst: memset
      Src: /src/frr/isisd/isis_spf.c:1588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - spftree
    - mtid
    argTypes:
    - struct isis_spftree*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1577
    functionDepth: 1
    functionLinenumber: 1577
    functionLinenumberEnd: 1592
    functionName: init_spt
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_spf_node_list_clear
    - isis_vertex_queue_clear
    - isis_rlfa_list_clear
    - memset
    - list_delete_all_node
    - hash_clean
    - isis_zebra_rlfa_unregister_all
    linkageType: ''
    returnType: void
    signature: void init_spt(struct isis_spftree *spftree, int mtid)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: access_list_apply
      Src: /src/frr/isisd/isis_spf.c:1608,1
    - Dst: access_list_apply
      Src: /src/frr/isisd/isis_spf.c:1611,1
    - Dst: is_host_route
      Src: /src/frr/isisd/isis_spf.c:1622,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - spftree
    - vertex
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1594
    functionDepth: 1
    functionLinenumber: 1594
    functionLinenumberEnd: 1626
    functionName: spf_prefix_priority
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - access_list_apply
    - is_host_route
    linkageType: ''
    returnType: enum spf_prefix_priority
    signature: enum spf_prefix_priority spf_prefix_priority(struct isis_spftree *spftree,
      struct isis_vertex *vertex)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_spf.c:1635,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1636,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:1637,1
    - Dst: isis_tilfa_check
      Src: /src/frr/isisd/isis_spf.c:1640,1
    - Dst: isis_adj_find
      Src: /src/frr/isisd/isis_spf.c:1643,1
    - Dst: sr_adj_sid_add_single
      Src: /src/frr/isisd/isis_spf.c:1645,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1648,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:1650,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_spf.c:1654,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1655,1
    - Dst: spf_prefix_priority
      Src: /src/frr/isisd/isis_spf.c:1658,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:1660,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1671,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:1673,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:1675,1
    - Dst: isis_rlfa_check
      Src: /src/frr/isisd/isis_spf.c:1688,1
    - Dst: isis_tilfa_check
      Src: /src/frr/isisd/isis_spf.c:1691,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:1712,1
    - Dst: isis_route_create
      Src: /src/frr/isisd/isis_spf.c:1722,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1730,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1737,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:1739,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 57
    argCount: 2
    argNames:
    - spftree
    - vertex
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1628
    functionDepth: 3
    functionLinenumber: 1628
    functionLinenumberEnd: 1742
    functionName: spf_path_process
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_rlfa_check
    - vid2string
    - isis_adj_find
    - sr_adj_sid_add_single
    - VTYPE_IP
    - CHECK_FLAG
    - listcount
    - isis_tilfa_check
    - zlog_debug
    - VTYPE_IS
    - spf_prefix_priority
    - vtype2string
    - isis_route_create
    linkageType: ''
    returnType: void
    signature: "void spf_path_process(struct isis_spftree *spftree,\n\t\t\t     struct
      isis_vertex *vertex)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: isis_vertex_queue_count
      Src: /src/frr/isisd/isis_spf.c:1751,1
    - Dst: isis_vertex_queue_pop
      Src: /src/frr/isisd/isis_spf.c:1752,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_spf.c:1755,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:1757,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:1758,1
    - Dst: add_to_paths
      Src: /src/frr/isisd/isis_spf.c:1761,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_spf.c:1762,1
    - Dst: lsp_for_vertex
      Src: /src/frr/isisd/isis_spf.c:1765,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_spf.c:1767,1
    - Dst: isis_spf_process_lsp
      Src: /src/frr/isisd/isis_spf.c:1772,1
    - Dst: ALL_QUEUE_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:1777,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_spf.c:1782,1
    - Dst: spf_path_process
      Src: /src/frr/isisd/isis_spf.c:1797,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - spftree
    - root_sysid
    argTypes:
    - struct isis_spftree*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1744
    functionDepth: 4
    functionLinenumber: 1744
    functionLinenumberEnd: 1799
    functionName: isis_spf_loop
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_spf_process_lsp
    - ALL_QUEUE_ELEMENTS_RO
    - spf_path_process
    - isis_vertex_queue_count
    - lsp_for_vertex
    - print_sys_hostname
    - zlog_debug
    - zlog_warn
    - VTYPE_IS
    - add_to_paths
    - isis_vertex_queue_pop
    - vtype2string
    - isis_find_vertex
    linkageType: ''
    returnType: void
    signature: "void isis_spf_loop(struct isis_spftree *spftree,\n\t\t\t  uint8_t
      *root_sysid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_spf.c:1806,1
    - Dst: init_spt
      Src: /src/frr/isisd/isis_spf.c:1811,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:1812,1
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_spf.c:1816,1
    - Dst: isis_spf_add_root
      Src: /src/frr/isisd/isis_spf.c:1822,1
    - Dst: isis_spf_preload_tent
      Src: /src/frr/isisd/isis_spf.c:1824,1
    - Dst: isis_vertex_queue_insert
      Src: /src/frr/isisd/isis_spf.c:1828,1
    - Dst: isis_vertex_new
      Src: /src/frr/isisd/isis_spf.c:1830,1
    - Dst: isis_spf_loop
      Src: /src/frr/isisd/isis_spf.c:1833,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - area
    - sysid
    - spftree
    argTypes:
    - struct isis_area*
    - uint8_t*
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1801
    functionDepth: 5
    functionLinenumber: 1801
    functionLinenumberEnd: 1836
    functionName: isis_run_hopcount_spf
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_spftree_new
    - isis_vertex_queue_insert
    - isis_vertex_new
    - memcmp
    - isis_spf_preload_tent
    - isis_root_system_lsp
    - isis_spf_add_root
    - isis_spf_loop
    - init_spt
    linkageType: ''
    returnType: struct isis_spftree
    signature: "struct isis_spftree *isis_run_hopcount_spf(struct isis_area *area,\n\t\t\t\t\t
      \  uint8_t *sysid,\n\t\t\t\t\t   struct isis_spftree *spftree)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/isisd/isis_spf.c:1851,1
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_spf.c:1853,1
    - Dst: zlog_err
      Src: /src/frr/isisd/isis_spf.c:1855,1
    - Dst: isis_tlvs_lookup_mt_router_info
      Src: /src/frr/isisd/isis_spf.c:1866,1
    - Dst: zlog_err
      Src: /src/frr/isisd/isis_spf.c:1877,1
    - Dst: exit
      Src: /src/frr/isisd/isis_spf.c:1880,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:1891,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_spf.c:1892,1
    - Dst: flex_algo_get_state
      Src: /src/frr/isisd/isis_spf.c:1895,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_spf.c:1898,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1903,1
    - Dst: isis_spftree_clear
      Src: /src/frr/isisd/isis_spf.c:1904,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1905,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_spf.c:1906,1
    - Dst: init_spt
      Src: /src/frr/isisd/isis_spf.c:1918,1
    - Dst: isis_spf_add_root
      Src: /src/frr/isisd/isis_spf.c:1920,1
    - Dst: isis_spf_build_adj_list
      Src: /src/frr/isisd/isis_spf.c:1922,1
    - Dst: isis_spf_preload_tent
      Src: /src/frr/isisd/isis_spf.c:1923,1
    - Dst: isis_vertex_queue_count
      Src: /src/frr/isisd/isis_spf.c:1928,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_spf.c:1930,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:1931,1
    - Dst: isis_spf_loop
      Src: /src/frr/isisd/isis_spf.c:1934,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_spf.c:1939,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_spf.c:1940,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_spf.c:1941,1
    - Dst: time
      Src: /src/frr/isisd/isis_spf.c:1948,1
    - Dst: monotime
      Src: /src/frr/isisd/isis_spf.c:1949,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 1
    argNames:
    - spftree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1838
    functionDepth: 5
    functionLinenumber: 1838
    functionLinenumberEnd: 1953
    functionName: isis_run_spf
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 4
    functionsReached:
    - isis_vertex_queue_count
    - isis_spftree_clear
    - zlog_warn
    - isis_root_system_lsp
    - isis_spf_preload_tent
    - isis_spf_add_root
    - init_spt
    - exit
    - flex_algo_get_state
    - isis_tlvs_lookup_mt_router_info
    - flex_algo_id_valid
    - isis_spf_loop
    - print_sys_hostname
    - monotime
    - zlog_err
    - UNSET_FLAG
    - isis_flex_algo_elected_supported
    - CHECK_FLAG
    - SET_FLAG
    - lsp_regenerate_schedule
    - isis_spf_build_adj_list
    - time
    linkageType: ''
    returnType: void
    signature: void isis_run_spf(struct isis_spftree *spftree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf.c:1959,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_spf.c:1960,1
    - Dst: isis_spf_run_lfa
      Src: /src/frr/isisd/isis_spf.c:1965,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - area
    - spftree
    argTypes:
    - struct isis_area*
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1966
      start: 1955
    functionDepth: 6
    functionLinenumber: 1955
    functionLinenumberEnd: 1966
    functionName: isis_run_spf_with_protection
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_run_spf
    - isis_spf_run_lfa
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void isis_run_spf_with_protection(struct isis_area *area,\n\t\t\t\t\t
      struct isis_spftree *spftree)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_route_verify_table
      Src: /src/frr/isisd/isis_spf.c:1972,1
    - Dst: isis_route_verify_table
      Src: /src/frr/isisd/isis_spf.c:1975,1
    - Dst: isis_route_verify_merge
      Src: /src/frr/isisd/isis_spf.c:1978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - area
    - trees
    - tree
    argTypes:
    - struct isis_area*
    - struct isis_spftree**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1968
    functionDepth: 0
    functionLinenumber: 1968
    functionLinenumberEnd: 1983
    functionName: isis_spf_verify_routes
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_route_verify_merge
    - isis_route_verify_table
    linkageType: ''
    returnType: void
    signature: "void isis_spf_verify_routes(struct isis_area *area, struct isis_spftree
      **trees,\n\t\t\t    int tree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_route_invalidate_table
      Src: /src/frr/isisd/isis_spf.c:1989,1
    - Dst: route_table_finish
      Src: /src/frr/isisd/isis_spf.c:1994,1
    - Dst: isis_route_table_info_free
      Src: /src/frr/isisd/isis_spf.c:1995,1
    - Dst: srcdest_table_init
      Src: /src/frr/isisd/isis_spf.c:1996,1
    - Dst: isis_route_table_info_alloc
      Src: /src/frr/isisd/isis_spf.c:1998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1985
    functionDepth: 1
    functionLinenumber: 1985
    functionLinenumberEnd: 2000
    functionName: isis_spf_invalidate_routes
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - route_table_finish
    - isis_route_table_info_free
    - isis_route_table_info_alloc
    - isis_route_invalidate_table
    - srcdest_table_init
    linkageType: ''
    returnType: void
    signature: void isis_spf_invalidate_routes(struct isis_spftree *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_route_switchover_nexthop
      Src: /src/frr/isisd/isis_spf.c:2007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - area
    - trees
    - family
    - nexthop_ip
    - ifindex
    - level
    argTypes:
    - struct isis_area*
    - struct isis_spftree**
    - int
    - union g_addr*
    - ifindex_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 2002
    functionDepth: 1
    functionLinenumber: 2002
    functionLinenumberEnd: 2009
    functionName: isis_spf_switchover_routes
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - isis_route_switchover_nexthop
    linkageType: ''
    returnType: void
    signature: "void isis_spf_switchover_routes(struct isis_area *area,\n\t\t\t\tstruct
      isis_spftree **trees, int family,\n\t\t\t\tunion g_addr *nexthop_ip, ifindex_t
      ifindex,\n\t\t\t\tint level)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2185,1
    - Dst: ALL_QUEUE_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:2188,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_spf.c:2189,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf.c:2190,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2191,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:2192,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2193,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_spf.c:2198,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_spf.c:2199,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2203,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:2204,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_spf.c:2205,1
    - Dst: MAX
      Src: /src/frr/isisd/isis_spf.c:2207,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:2207,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_spf.c:2208,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_spf.c:2211,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_spf.c:2218,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2225,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2226,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:2229,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2232,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_spf.c:2233,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:2240,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2241,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2243,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_spf.c:2244,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2250,1
    - Dst: isis_print_spftree
      Src: /src/frr/isisd/isis_spf.c:2254,1
    - Dst: isis_vertex_queue_count
      Src: /src/frr/isisd/isis_spf.c:2258,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf.c:2272,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2276,1
    - Dst: isis_print_paths
      Src: /src/frr/isisd/isis_spf.c:2278,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2279,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:2296,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_spf.c:2307,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_spf.c:2308,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2316,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2319,1
    - Dst: isis_print_spftree
      Src: /src/frr/isisd/isis_spf.c:2335,1
    - Dst: isis_print_spftree
      Src: /src/frr/isisd/isis_spf.c:2346,1
    - Dst: isis_area_ipv6_dstsrc_enabled
      Src: /src/frr/isisd/isis_spf.c:2348,1
    - Dst: isis_print_spftree
      Src: /src/frr/isisd/isis_spf.c:2358,1
    - Dst: fabricd_spftree
      Src: /src/frr/isisd/isis_spf.c:2362,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2363,1
    - Dst: isis_print_paths
      Src: /src/frr/isisd/isis_spf.c:2365,1
    - Dst: fabricd_spftree
      Src: /src/frr/isisd/isis_spf.c:2365,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2366,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:2369,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 69
    argCount: 3
    argNames:
    - vty
    - queue
    - root_sysid
    argTypes:
    - struct vty*
    - struct isis_vertex_queue*
    - uint8_t*
    assertStmts:
    - condition: (!"isis_print_spftree shouldn't be called with SPFTREE_COUNT as type")
      pos:
        line_end: 2271
        line_start: 2271
        source_file: /src/frr/isisd/isis_spf.c
    constantsTouched: []
    func_position:
      end: 2370
      start: 2178
    functionDepth: 2
    functionLinenumber: 2178
    functionLinenumberEnd: 2370
    functionName: isis_print_paths
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 1
    functionsReached:
    - ALL_QUEUE_ELEMENTS_RO
    - isis_vertex_queue_count
    - listhead
    - memcmp
    - ALL_LIST_ELEMENTS_RO
    - VTYPE_IS
    - flex_algo_id_valid
    - listgetdata
    - if
    - fabricd_spftree
    - assert
    - vty_out
    - print_sys_hostname
    - listcount
    - flex_algo_lookup
    - isis_print_spftree
    - MAX
    - vtype2string
    - vid2string
    - isis_area_ipv6_dstsrc_enabled
    - isis_print_paths
    linkageType: ''
    returnType: void
    signature: "void isis_print_paths(struct vty *vty, struct isis_vertex_queue *queue,\n\t\t\t
      \    uint8_t *root_sysid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_spf.c:3204,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_spf.c:3205,1
    - Dst: for
      Src: /src/frr/isisd/isis_spf.c:3208,1
    - Dst: if
      Src: /src/frr/isisd/isis_spf.c:3212,1
    - Dst: isis_print_frr_summary
      Src: /src/frr/isisd/isis_spf.c:3213,1
    - Dst: isis_print_frr_summary
      Src: /src/frr/isisd/isis_spf.c:3218,1
    - Dst: isis_area_ipv6_dstsrc_enabled
      Src: /src/frr/isisd/isis_spf.c:3222,1
    - Dst: isis_print_frr_summary
      Src: /src/frr/isisd/isis_spf.c:3223,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_spf.c:3231,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_spf.c:3254,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_spf.c:3256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - levels
    - isis
    argTypes:
    - struct vty*
    - int
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3264
      start: 3195
    functionDepth: 1
    functionLinenumber: 3195
    functionLinenumberEnd: 3264
    functionName: show_isis_frr_summary_common
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - DEFUN
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - isis_print_frr_summary
    - isis_area_ipv6_dstsrc_enabled
    - if
    - for
    - argv_find
    linkageType: ''
    returnType: void
    signature: "void show_isis_frr_summary_common(struct vty *vty, int levels,\n\t\t\t\t\t
      struct isis *isis)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/isisd/isis_spf.c:3311,1
    - Dst: frrtime_to_interval
      Src: /src/frr/isisd/isis_spf.c:3313,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_spf.c:3314,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_spf.c:3315,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_spf.c:3317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - spftree
    - json
    argTypes:
    - struct isis_spftree*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3318
      start: 3307
    functionDepth: 1
    functionLinenumber: 3307
    functionLinenumberEnd: 3318
    functionName: isis_spf_print_json
    functionSourceFile: /src/frr/isisd/isis_spf.c
    functionUses: 0
    functionsReached:
    - frrtime_to_interval
    - json_object_string_add
    - time
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: void isis_spf_print_json(struct isis_spftree *spftree, struct json_object
      *json)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum isis_adj_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 609
    functionName: isis_snmp_adj_state
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t isis_snmp_adj_state(enum isis_adj_state state)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum isis_system_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 631
    functionName: isis_snmp_adj_neightype
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t isis_snmp_adj_neightype(enum isis_system_type type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_snmp.c:671,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 680
    functionName: isis_circuit_snmp_id_gen
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int isis_circuit_snmp_id_gen(struct isis_circuit *circuit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 687
    functionName: isis_circuit_snmp_id_free
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_circuit_snmp_id_free(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 710
    functionName: isis_snmp_circuit_next
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct isis_circuit
    signature: struct isis_circuit *isis_snmp_circuit_next(struct isis_circuit *circuit)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 721
    functionName: isis_snmp_circuit_get_level_lo
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_snmp_circuit_get_level_lo(struct isis_circuit *circuit)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 2
    argNames:
    - is_type
    - level
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 749
    functionName: isis_snmp_get_level_match
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_snmp_get_level_match(int is_type, int level)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 5
    argNames:
    - buf
    - max_len
    - out_len
    - idx
    - idx_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t*
    - oid*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 787
    functionName: isis_snmp_conv_exact
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_conv_exact(uint8_t *buf, size_t max_len, size_t *out_len,\n\t\t\t\tconst
      oid *idx, size_t idx_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_snmp.c:814,1
    - Dst: memset
      Src: /src/frr/isisd/isis_snmp.c:824,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 6
    argNames:
    - buf
    - max_len
    - out_len
    - try_exact
    - idx
    - idx_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t*
    - int*
    - oid*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 829
    functionName: isis_snmp_conv_next
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_conv_next(uint8_t *buf, size_t max_len, size_t *out_len,\n\t\t\t
      \      int *try_exact, const oid *idx, size_t idx_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:843,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_snmp.c:848,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_snmp.c:853,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_snmp.c:853,1
    - Dst: isis_snmp_conv_exact
      Src: /src/frr/isisd/isis_snmp.c:855,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_snmp.c:864,1
    - Dst: if
      Src: /src/frr/isisd/isis_snmp.c:868,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:868,1
    - Dst: if
      Src: /src/frr/isisd/isis_snmp.c:872,1
    - Dst: isis_snmp_area_addr_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:881,1
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:893,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_snmp.c:898,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_snmp.c:903,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_snmp.c:903,1
    - Dst: isis_snmp_conv_next
      Src: /src/frr/isisd/isis_snmp.c:905,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_snmp.c:911,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:919,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:940,1
    - Dst: isis_snmp_circuit_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:964,1
    - Dst: isis_snmp_circuit_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:983,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 19
    argCount: 4
    argNames:
    - oid_idx
    - oid_idx_len
    - ret_area
    - ret_addr
    argTypes:
    - oid*
    - size_t
    - struct isis_area**
    - struct iso_address**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 834
    functionDepth: 2
    functionLinenumber: 834
    functionLinenumberEnd: 1011
    functionName: isis_snmp_area_addr_lookup_exact
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_lookup_by_vrfid
    - list_isempty
    - ALL_LIST_ELEMENTS_RO
    - listhead
    - memcmp
    - isis_snmp_conv_next
    - isis_snmp_circuit_lookup_next
    - isis_snmp_circuit_lookup_exact
    - listgetdata
    - if
    - isis_snmp_area_addr_lookup_next
    - isis_snmp_conv_exact
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_area_addr_lookup_exact(oid *oid_idx, size_t oid_idx_len,\n\t\t\t\t\t
      \   struct isis_area **ret_area,\n\t\t\t\t\t    struct iso_address **ret_addr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_circuit_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:1034,1
    - Dst: isis_snmp_get_level_match
      Src: /src/frr/isisd/isis_snmp.c:1039,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 5
    argNames:
    - oid_idx
    - oid_idx_len
    - check_match
    - ret_circuit
    - ret_level
    argTypes:
    - oid*
    - size_t
    - int
    - struct isis_circuit**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1049
    functionName: isis_snmp_circuit_level_lookup_exact
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_get_level_match
    - isis_snmp_circuit_lookup_exact
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_circuit_level_lookup_exact(\n\toid *oid_idx, size_t
      oid_idx_len, int check_match,\n\tstruct isis_circuit **ret_circuit, int *ret_level)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_snmp.c:1081,1
    - Dst: isis_snmp_get_level_match
      Src: /src/frr/isisd/isis_snmp.c:1102,1
    - Dst: isis_snmp_circuit_next
      Src: /src/frr/isisd/isis_snmp.c:1111,1
    - Dst: isis_snmp_circuit_get_level_lo
      Src: /src/frr/isisd/isis_snmp.c:1115,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 43
    argCount: 5
    argNames:
    - oid_idx
    - oid_idx_len
    - check_match
    - ret_circuit
    - ret_level
    argTypes:
    - oid*
    - size_t
    - int
    - struct isis_circuit**
    - int*
    assertStmts:
    - condition: (oid_idx != NULL)
      pos:
        line_end: 1080
        line_start: 1080
        source_file: /src/frr/isisd/isis_snmp.c
    constantsTouched: []
    func_position:
      end: 1126
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1126
    functionName: isis_snmp_circuit_level_lookup_next
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_get_level_match
    - isis_snmp_circuit_get_level_lo
    - isis_snmp_circuit_next
    - assert
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_circuit_level_lookup_next(\n\toid *oid_idx, size_t oid_idx_len,
      int check_match,\n\tstruct isis_circuit **ret_circuit, int *ret_level)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_snmp.c:1196,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 5
    argNames:
    - adj
    - data_id
    - data_off
    - ret_data
    - ret_data_len
    argTypes:
    - struct isis_adjacency*
    - int
    - oid
    - uint8_t**
    - size_t*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1195
        line_start: 1195
        source_file: /src/frr/isisd/isis_snmp.c
    constantsTouched: []
    func_position:
      end: 1207
      start: 1152
    functionDepth: 1
    functionLinenumber: 1152
    functionLinenumberEnd: 1207
    functionName: isis_snmp_adj_helper
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_adj_helper(struct isis_adjacency *adj, int data_id,\n\t\t\t\toid
      data_off, uint8_t **ret_data,\n\t\t\t\tsize_t *ret_data_len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_circuit_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:1225,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_snmp.c:1253,1
    - Dst: isis_snmp_adj_helper
      Src: /src/frr/isisd/isis_snmp.c:1263,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 7
    argNames:
    - oid_idx
    - oid_idx_len
    - data_id
    - ret_adj
    - ret_data_idx
    - ret_data
    - ret_data_len
    argTypes:
    - oid*
    - size_t
    - int
    - struct isis_adjacency**
    - oid*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1209
    functionDepth: 2
    functionLinenumber: 1209
    functionLinenumberEnd: 1270
    functionName: isis_snmp_adj_lookup_exact
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - isis_snmp_circuit_lookup_exact
    - isis_snmp_adj_helper
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_adj_lookup_exact(oid *oid_idx, size_t oid_idx_len,\n\t\t\t\t
      \     int data_id,\n\t\t\t\t      struct isis_adjacency **ret_adj,\n\t\t\t\t
      \     oid *ret_data_idx, uint8_t **ret_data,\n\t\t\t\t      size_t *ret_data_len)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_circuit_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:1337,1
    - Dst: isis_snmp_circuit_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:1338,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_snmp.c:1353,1
    - Dst: if
      Src: /src/frr/isisd/isis_snmp.c:1358,1
    - Dst: if
      Src: /src/frr/isisd/isis_snmp.c:1362,1
    - Dst: isis_snmp_adj_helper
      Src: /src/frr/isisd/isis_snmp.c:1365,1
    - Dst: isis_snmp_circuit_next
      Src: /src/frr/isisd/isis_snmp.c:1375,1
    - Dst: isis_snmp_find_sys_object
      Src: /src/frr/isisd/isis_snmp.c:1407,1
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:1413,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_snmp.c:1418,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_snmp.c:1419,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_snmp.c:1419,1
    - Dst: smux_header_generic
      Src: /src/frr/isisd/isis_snmp.c:1422,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1436,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1438,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1450,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1453,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1456,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1460,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1464,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1469,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1472,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1476,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1478,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1486,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1488,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 75
    argCount: 7
    argNames:
    - oid_idx
    - oid_idx_len
    - data_id
    - ret_adj
    - ret_data_idx
    - ret_data
    - ret_data_len
    argTypes:
    - oid*
    - size_t
    - int
    - struct isis_adjacency**
    - oid*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1290
    functionDepth: 2
    functionLinenumber: 1290
    functionLinenumberEnd: 1495
    functionName: isis_snmp_adj_lookup_next
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - isis_snmp_find_sys_object
    - isis_lookup_by_vrfid
    - ALL_LIST_ELEMENTS_RO
    - list_isempty
    - listgetdata
    - listhead
    - isis_snmp_circuit_lookup_next
    - isis_snmp_circuit_lookup_exact
    - SNMP_INTEGER
    - if
    - isis_snmp_circuit_next
    - isis_snmp_adj_helper
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_adj_lookup_next(oid *oid_idx, size_t oid_idx_len,\n\t\t\t\t
      \    int data_id,\n\t\t\t\t     struct isis_adjacency **ret_adj,\n\t\t\t\t     oid
      *ret_data_idx, uint8_t **ret_data,\n\t\t\t\t     size_t *ret_data_len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:1514,1
    - Dst: isis_snmp_area_addr_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:1523,1
    - Dst: isis_snmp_area_addr_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:1530,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:1537,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1550,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1498
    functionDepth: 3
    functionLinenumber: 1498
    functionLinenumberEnd: 1557
    functionName: isis_snmp_find_man_area
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - memcmp
    - isis_snmp_area_addr_lookup_exact
    - SNMP_INTEGER
    - isis_snmp_area_addr_lookup_next
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_man_area(struct variable *v, oid *name,\n\t\t\t\t\tsize_t
      *length, int exact,\n\t\t\t\t\tsize_t *var_len,\n\t\t\t\t\tWriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 1559
    functionDepth: 0
    functionLinenumber: 1559
    functionLinenumberEnd: 1578
    functionName: isis_snmp_find_area_addr
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_area_addr(struct variable *v, oid *name,\n\t\t\t\t\t
      size_t *length, int exact,\n\t\t\t\t\t size_t *var_len,\n\t\t\t\t\t WriteMethod
      **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1580
    functionDepth: 0
    functionLinenumber: 1580
    functionLinenumberEnd: 1597
    functionName: isis_snmp_find_summ_addr
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_summ_addr(struct variable *v, oid *name,\n\t\t\t\t\t
      size_t *length, int exact,\n\t\t\t\t\t size_t *var_len,\n\t\t\t\t\t WriteMethod
      **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1599
    functionDepth: 0
    functionLinenumber: 1599
    functionLinenumberEnd: 1616
    functionName: isis_snmp_find_redistribute_addr
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_redistribute_addr(struct variable *v, oid
      *name,\n\t\t\t\t\t\t size_t *length, int exact,\n\t\t\t\t\t\t size_t *var_len,\n\t\t\t\t\t\t
      WriteMethod **write_method)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:1632,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:1642,1
    - Dst: isis_snmp_conv_exact
      Src: /src/frr/isisd/isis_snmp.c:1651,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_snmp.c:1669,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_snmp.c:1676,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1681,1
    - Dst: isis_snmp_conv_next
      Src: /src/frr/isisd/isis_snmp.c:1690,1
    - Dst: memset
      Src: /src/frr/isisd/isis_snmp.c:1700,1
    - Dst: dynhn_snmp_next
      Src: /src/frr/isisd/isis_snmp.c:1721,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:1727,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_snmp.c:1742,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1747,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 69
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1618
    functionDepth: 2
    functionLinenumber: 1618
    functionLinenumberEnd: 1754
    functionName: isis_snmp_find_router
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - strlen
    - dynhn_find_by_id
    - dynhn_snmp_next
    - isis_lookup_by_vrfid
    - memset
    - memcmp
    - SNMP_INTEGER
    - isis_snmp_conv_next
    - memcpy
    - isis_snmp_conv_exact
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_router(struct variable *v, oid *name,\n\t\t\t\t
      \     size_t *length, int exact,\n\t\t\t\t      size_t *var_len,\n\t\t\t\t      WriteMethod
      **write_method)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:1766,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:1776,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:1808,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_snmp.c:1819,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_snmp.c:1820,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_snmp.c:1820,1
    - Dst: isis_snmp_get_level_match
      Src: /src/frr/isisd/isis_snmp.c:1825,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1830,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1832,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1836,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1838,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1843,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1846,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1848,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1852,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1854,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1858,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1863,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1867,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1870,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1872,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1875,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_snmp.c:1878,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1879,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1881,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 84
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1756
    functionDepth: 2
    functionLinenumber: 1756
    functionLinenumberEnd: 1888
    functionName: isis_snmp_find_sys_level
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_lookup_by_vrfid
    - isis_snmp_get_level_match
    - list_isempty
    - listhead
    - memcmp
    - IS_MPLS_TE
    - SNMP_INTEGER
    - listgetdata
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_sys_level(struct variable *v, oid *name,\n\t\t\t\t\t
      size_t *length, int exact,\n\t\t\t\t\t size_t *var_len,\n\t\t\t\t\t WriteMethod
      **write_method)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:1901,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:1911,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:1943,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_snmp.c:1954,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_snmp.c:1955,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_snmp.c:1955,1
    - Dst: isis_snmp_get_level_match
      Src: /src/frr/isisd/isis_snmp.c:1960,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:1964,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2024,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 88
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2025
      start: 1890
    functionDepth: 2
    functionLinenumber: 1890
    functionLinenumberEnd: 2025
    functionName: isis_snmp_find_system_counter
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_lookup_by_vrfid
    - isis_snmp_get_level_match
    - list_isempty
    - listhead
    - memcmp
    - SNMP_INTEGER
    - listgetdata
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_system_counter(struct variable *v, oid *name,\n\t\t\t\t\t
      \     size_t *length, int exact,\n\t\t\t\t\t      size_t *var_len,\n\t\t\t\t\t
      \     WriteMethod **write_method)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/isisd/isis_snmp.c:2033,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2042,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2027
    functionDepth: 1
    functionLinenumber: 2027
    functionLinenumberEnd: 2049
    functionName: isis_snmp_find_next_circ_index
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_next_circ_index(struct variable *v, oid *name,\n\t\t\t\t\t
      \      size_t *length, int exact,\n\t\t\t\t\t       size_t *var_len,\n\t\t\t\t\t
      \      WriteMethod **write_method)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:2069,1
    - Dst: isis_snmp_circuit_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:2077,1
    - Dst: isis_snmp_circuit_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:2084,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2091,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2103,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2105,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2108,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2111,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2130,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2134,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2136,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2139,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2143,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2145,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2149,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2153,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2163,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2165,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2169,1
    - Dst: netsnmp_get_agent_uptime
      Src: /src/frr/isisd/isis_snmp.c:2171,1
    - Dst: time
      Src: /src/frr/isisd/isis_snmp.c:2172,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2175,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2180,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2182,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2186,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2190,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 73
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2051
    functionDepth: 1
    functionLinenumber: 2051
    functionLinenumberEnd: 2197
    functionName: isis_snmp_find_circ
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - netsnmp_get_agent_uptime
    - memcmp
    - time
    - isis_snmp_circuit_lookup_next
    - isis_snmp_circuit_lookup_exact
    - SNMP_INTEGER
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_circ(struct variable *v, oid *name,\n\t\t\t\t
      \   size_t *length, int exact, size_t *var_len,\n\t\t\t\t    WriteMethod **write_method)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:2211,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:2221,1
    - Dst: isis_snmp_circuit_level_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:2229,1
    - Dst: isis_snmp_circuit_level_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:2236,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2243,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2255,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2260,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2262,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2265,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2268,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2284,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2291,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2316,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2319,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2322,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2326,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2330,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2334,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2337,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2340,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2343,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 86
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2199
    functionDepth: 2
    functionLinenumber: 2199
    functionLinenumberEnd: 2350
    functionName: isis_snmp_find_circ_level
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_circuit_level_lookup_exact
    - isis_lookup_by_vrfid
    - memcmp
    - SNMP_INTEGER
    - isis_snmp_circuit_level_lookup_next
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_circ_level(struct variable *v, oid *name,\n\t\t\t\t\t
      \ size_t *length, int exact,\n\t\t\t\t\t  size_t *var_len,\n\t\t\t\t\t  WriteMethod
      **write_method)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:2370,1
    - Dst: isis_snmp_circuit_level_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:2378,1
    - Dst: isis_snmp_circuit_level_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:2385,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2392,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_snmp.c:2425,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_snmp.c:2432,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2471,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 78
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 2352
    functionDepth: 2
    functionLinenumber: 2352
    functionLinenumberEnd: 2472
    functionName: isis_snmp_find_circ_counter
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_circuit_level_lookup_exact
    - listcount
    - memcmp
    - SNMP_INTEGER
    - isis_snmp_circuit_level_lookup_next
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_circ_counter(struct variable *v, oid *name,\n\t\t\t\t\t
      \   size_t *length, int exact,\n\t\t\t\t\t    size_t *var_len,\n\t\t\t\t\t    WriteMethod
      **write_method)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:2498,1
    - Dst: isis_snmp_adj_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:2506,1
    - Dst: isis_snmp_adj_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:2514,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2521,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2533,1
    - Dst: isis_snmp_adj_state
      Src: /src/frr/isisd/isis_snmp.c:2533,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2536,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_snmp.c:2540,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_snmp.c:2541,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2546,1
    - Dst: isis_snmp_adj_neightype
      Src: /src/frr/isisd/isis_snmp.c:2546,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2553,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2557,1
    - Dst: time
      Src: /src/frr/isisd/isis_snmp.c:2564,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2566,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2570,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2573,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2577,1
    - Dst: netsnmp_get_agent_uptime
      Src: /src/frr/isisd/isis_snmp.c:2579,1
    - Dst: time
      Src: /src/frr/isisd/isis_snmp.c:2581,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2584,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2589,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2591,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 70
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2598
      start: 2474
    functionDepth: 3
    functionLinenumber: 2474
    functionLinenumberEnd: 2598
    functionName: isis_snmp_find_isadj
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - strlen
    - netsnmp_get_agent_uptime
    - snprintfrr
    - memcmp
    - time
    - isis_snmp_adj_state
    - isis_snmp_adj_lookup_exact
    - isis_snmp_adj_lookup_next
    - SNMP_INTEGER
    - isis_snmp_adj_neightype
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_isadj(struct variable *v, oid *name,\n\t\t\t\t
      \    size_t *length, int exact, size_t *var_len,\n\t\t\t\t     WriteMethod **write_method)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:2619,1
    - Dst: isis_snmp_adj_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:2627,1
    - Dst: isis_snmp_adj_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:2635,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2642,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2600
    functionDepth: 3
    functionLinenumber: 2600
    functionLinenumberEnd: 2663
    functionName: isis_snmp_find_isadj_area
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_adj_lookup_next
    - memcpy
    - isis_snmp_adj_lookup_exact
    - memcmp
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_isadj_area(struct variable *v, oid *name,\n\t\t\t\t\t
      \ size_t *length, int exact,\n\t\t\t\t\t  size_t *var_len,\n\t\t\t\t\t  WriteMethod
      **write_method)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:2684,1
    - Dst: isis_snmp_adj_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:2692,1
    - Dst: isis_snmp_adj_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:2699,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2706,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2720,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2722,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2733
      start: 2665
    functionDepth: 3
    functionLinenumber: 2665
    functionLinenumberEnd: 2733
    functionName: isis_snmp_find_isadj_ipaddr
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - memcmp
    - isis_snmp_adj_lookup_exact
    - isis_snmp_adj_lookup_next
    - SNMP_INTEGER
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_isadj_ipaddr(struct variable *v, oid *name,\n\t\t\t\t\t
      \   size_t *length, int exact,\n\t\t\t\t\t    size_t *var_len,\n\t\t\t\t\t    WriteMethod
      **write_method)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_snmp.c:2754,1
    - Dst: isis_snmp_adj_lookup_exact
      Src: /src/frr/isisd/isis_snmp.c:2762,1
    - Dst: isis_snmp_adj_lookup_next
      Src: /src/frr/isisd/isis_snmp.c:2770,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2777,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/isisd/isis_snmp.c:2790,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2797
      start: 2735
    functionDepth: 3
    functionLinenumber: 2735
    functionLinenumberEnd: 2797
    functionName: isis_snmp_find_isadj_prot_supp
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - memcmp
    - isis_snmp_adj_lookup_exact
    - isis_snmp_adj_lookup_next
    - SNMP_INTEGER
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *isis_snmp_find_isadj_prot_supp(struct variable *v, oid *name,\n\t\t\t\t\t
      \      size_t *length, int exact,\n\t\t\t\t\t       size_t *var_len,\n\t\t\t\t\t
      \      WriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_snmp.c:2812,1
    - Dst: assert
      Src: /src/frr/isisd/isis_snmp.c:2814,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2818,1
    - Dst: smux_init
      Src: /src/frr/isisd/isis_snmp.c:2824,1
    - Dst: REGISTER_MIB
      Src: /src/frr/isisd/isis_snmp.c:2825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts:
    - condition: "(h2f < (isis_func_to_prefix_arr\n\t\t\t\t      + isis_func_to_prefix_count))"
      pos:
        line_end: 2812
        line_start: 2811
        source_file: /src/frr/isisd/isis_snmp.c
    - condition: (v->findVar == h2f->ihtp_func)
      pos:
        line_end: 2813
        line_start: 2813
        source_file: /src/frr/isisd/isis_snmp.c
    constantsTouched: []
    func_position:
      end: 2827
      start: 2801
    functionDepth: 1
    functionLinenumber: 2801
    functionLinenumberEnd: 2827
    functionName: isis_snmp_init
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - smux_init
    - REGISTER_MIB
    - assert
    linkageType: ''
    returnType: int
    signature: int isis_snmp_init(struct event_loop *tm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:2835,1
    - Dst: smux_enabled
      Src: /src/frr/isisd/isis_snmp.c:2837,1
    - Dst: time
      Src: /src/frr/isisd/isis_snmp.c:2840,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - trap_id
    argTypes:
    - oid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2848
      start: 2832
    functionDepth: 2
    functionLinenumber: 2832
    functionLinenumberEnd: 2848
    functionName: isis_snmp_trap_throttle
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - time
    - smux_enabled
    - isis_lookup_by_vrfid
    linkageType: ''
    returnType: int
    signature: int isis_snmp_trap_throttle(oid trap_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:2856,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2862,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2863,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2870,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2872,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2876,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2885,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2887,1
    - Dst: send_v2trap
      Src: /src/frr/isisd/isis_snmp.c:2890,1
    - Dst: snmp_free_varbind
      Src: /src/frr/isisd/isis_snmp.c:2891,1
    - Dst: smux_events_update
      Src: /src/frr/isisd/isis_snmp.c:2892,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2894
      start: 2850
    functionDepth: 3
    functionLinenumber: 2850
    functionLinenumberEnd: 2894
    functionName: isis_snmp_db_overload_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - send_v2trap
    - array_size
    - smux_events_update
    - snmp_free_varbind
    - isis_snmp_trap_throttle
    linkageType: ''
    returnType: int
    signature: int isis_snmp_db_overload_update(const struct isis_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:2902,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2908,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2909,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2916,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2918,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2921,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2923,1
    - Dst: send_v2trap
      Src: /src/frr/isisd/isis_snmp.c:2926,1
    - Dst: snmp_free_varbind
      Src: /src/frr/isisd/isis_snmp.c:2927,1
    - Dst: smux_events_update
      Src: /src/frr/isisd/isis_snmp.c:2928,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - area
    - lsp_id
    argTypes:
    - struct isis_area*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2930
      start: 2896
    functionDepth: 3
    functionLinenumber: 2896
    functionLinenumberEnd: 2930
    functionName: isis_snmp_lsp_exceed_max_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - send_v2trap
    - array_size
    - smux_events_update
    - snmp_free_varbind
    - isis_snmp_trap_throttle
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_lsp_exceed_max_update(const struct isis_area *area,\n\t\t\t\t\t
      \  const uint8_t *lsp_id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:2964,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2966,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2970,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2971,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2975,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2977,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2984,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:2994,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:2996,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3004,1
    - Dst: send_v2trap
      Src: /src/frr/isisd/isis_snmp.c:3009,1
    - Dst: snmp_free_varbind
      Src: /src/frr/isisd/isis_snmp.c:3010,1
    - Dst: smux_events_update
      Src: /src/frr/isisd/isis_snmp.c:3011,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 26
    argCount: 12
    argNames:
    - circuit
    - trap_id
    - oid_a
    - oid_a_len
    - type_a
    - data_a
    - data_a_len
    - oid_b
    - oid_b_len
    - type_b
    - data_b
    - data_b_len
    argTypes:
    - struct isis_circuit*
    - oid
    - oid*
    - size_t
    - uint8_t
    - void*
    - size_t
    - oid*
    - size_t
    - uint8_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3012
      start: 2940
    functionDepth: 1
    functionLinenumber: 2940
    functionLinenumberEnd: 3012
    functionName: isis_snmp_update_worker_a
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - array_size
    - smux_events_update
    - snmp_free_varbind
    - send_v2trap
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void isis_snmp_update_worker_a(const struct isis_circuit *circuit,\n\t\t\t\t
      \     oid trap_id, const oid *oid_a,\n\t\t\t\t      size_t oid_a_len, uint8_t
      type_a,\n\t\t\t\t      const void *data_a, size_t data_a_len,\n\t\t\t\t      const
      oid *oid_b, size_t oid_b_len,\n\t\t\t\t      uint8_t type_b, const void *data_b,\n\t\t\t\t
      \     size_t data_b_len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:3044,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3046,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3050,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3051,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3055,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3057,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3065,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3067,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3075,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3084,1
    - Dst: send_v2trap
      Src: /src/frr/isisd/isis_snmp.c:3089,1
    - Dst: snmp_free_varbind
      Src: /src/frr/isisd/isis_snmp.c:3090,1
    - Dst: smux_events_update
      Src: /src/frr/isisd/isis_snmp.c:3091,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 12
    argNames:
    - circuit
    - trap_id
    - oid_a
    - oid_a_len
    - type_a
    - data_a
    - data_a_len
    - oid_b
    - oid_b_len
    - type_b
    - data_b
    - data_b_len
    argTypes:
    - struct isis_circuit*
    - oid
    - oid*
    - size_t
    - uint8_t
    - void*
    - size_t
    - oid*
    - size_t
    - uint8_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3092
      start: 3024
    functionDepth: 1
    functionLinenumber: 3024
    functionLinenumberEnd: 3092
    functionName: isis_snmp_update_worker_b
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - array_size
    - smux_events_update
    - snmp_free_varbind
    - send_v2trap
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void isis_snmp_update_worker_b(const struct isis_circuit *circuit,\n\t\t\t\t
      \     oid trap_id, const oid *oid_a,\n\t\t\t\t      size_t oid_a_len, uint8_t
      type_a,\n\t\t\t\t      const void *data_a, size_t data_a_len,\n\t\t\t\t      const
      oid *oid_b, size_t oid_b_len,\n\t\t\t\t      uint8_t type_b, const void *data_b,\n\t\t\t\t
      \     size_t data_b_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3101,1
    - Dst: isis_snmp_update_worker_a
      Src: /src/frr/isisd/isis_snmp.c:3109,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3112,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - circuit
    - rcv_id
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3117
      start: 3095
    functionDepth: 3
    functionLinenumber: 3095
    functionLinenumberEnd: 3117
    functionName: isis_snmp_id_len_mismatch_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_a
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_id_len_mismatch_update(const struct isis_circuit *circuit,\n\t\t\t\t\t
      \   uint8_t rcv_id, const char *raw_pdu,\n\t\t\t\t\t    size_t raw_pdu_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3126,1
    - Dst: isis_snmp_update_worker_a
      Src: /src/frr/isisd/isis_snmp.c:3134,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3137,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - circuit
    - max_addrs
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3143
      start: 3119
    functionDepth: 3
    functionLinenumber: 3119
    functionLinenumberEnd: 3143
    functionName: isis_snmp_max_area_addr_mismatch_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_a
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_max_area_addr_mismatch_update(const struct isis_circuit
      *circuit,\n\t\t\t\t\tuint8_t max_addrs, const char *raw_pdu,\n\t\t\t\t\tsize_t
      raw_pdu_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3148,1
    - Dst: isis_snmp_update_worker_a
      Src: /src/frr/isisd/isis_snmp.c:3151,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - circuit
    - lsp_id
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3157
      start: 3145
    functionDepth: 3
    functionLinenumber: 3145
    functionLinenumberEnd: 3157
    functionName: isis_snmp_own_lsp_purge_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_a
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_own_lsp_purge_update(const struct isis_circuit *circuit,\n\t\t\t\t\t
      \ const uint8_t *lsp_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3162,1
    - Dst: isis_snmp_update_worker_a
      Src: /src/frr/isisd/isis_snmp.c:3165,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - circuit
    - lsp_id
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3171
      start: 3159
    functionDepth: 3
    functionLinenumber: 3159
    functionLinenumberEnd: 3171
    functionName: isis_snmp_seqno_skipped_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_a
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_seqno_skipped_update(const struct isis_circuit *circuit,\n\t\t\t\t\t
      \ const uint8_t *lsp_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3178,1
    - Dst: isis_snmp_update_worker_a
      Src: /src/frr/isisd/isis_snmp.c:3184,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - circuit
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3190
      start: 3173
    functionDepth: 3
    functionLinenumber: 3173
    functionLinenumberEnd: 3190
    functionName: isis_snmp_authentication_type_failure_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_a
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_authentication_type_failure_update(const struct isis_circuit
      *circuit,\n\t\t\t\t\t     const char *raw_pdu,\n\t\t\t\t\t     size_t raw_pdu_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3196,1
    - Dst: isis_snmp_update_worker_a
      Src: /src/frr/isisd/isis_snmp.c:3202,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3205,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - circuit
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3208
      start: 3192
    functionDepth: 3
    functionLinenumber: 3192
    functionLinenumberEnd: 3208
    functionName: isis_snmp_authentication_failure_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_a
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_authentication_failure_update(const struct isis_circuit
      *circuit,\n\t\t\t\t\tchar const *raw_pdu, size_t raw_pdu_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3216,1
    - Dst: isis_snmp_update_worker_b
      Src: /src/frr/isisd/isis_snmp.c:3224,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3227,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - circuit
    - version
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3232
      start: 3210
    functionDepth: 3
    functionLinenumber: 3210
    functionLinenumberEnd: 3232
    functionName: isis_snmp_version_skew_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_b
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_version_skew_update(const struct isis_circuit *circuit,\n\t\t\t\t\t
      uint8_t version, const char *raw_pdu,\n\t\t\t\t\t size_t raw_pdu_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3245,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3251,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3252,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3262,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3264,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3271,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3273,1
    - Dst: send_v2trap
      Src: /src/frr/isisd/isis_snmp.c:3276,1
    - Dst: snmp_free_varbind
      Src: /src/frr/isisd/isis_snmp.c:3277,1
    - Dst: smux_events_update
      Src: /src/frr/isisd/isis_snmp.c:3278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - circuit
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3281
      start: 3234
    functionDepth: 3
    functionLinenumber: 3234
    functionLinenumberEnd: 3281
    functionName: isis_snmp_area_mismatch_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - send_v2trap
    - array_size
    - smux_events_update
    - snmp_free_varbind
    - isis_snmp_trap_throttle
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_area_mismatch_update(const struct isis_circuit *circuit,\n\t\t\t\t\t
      \ const char *raw_pdu,\n\t\t\t\t\t  size_t raw_pdu_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3287,1
    - Dst: isis_snmp_update_worker_a
      Src: /src/frr/isisd/isis_snmp.c:3293,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - circuit
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3299
      start: 3283
    functionDepth: 3
    functionLinenumber: 3283
    functionLinenumberEnd: 3299
    functionName: isis_snmp_reject_adjacency_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_a
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_reject_adjacency_update(const struct isis_circuit *circuit,\n\t\t\t\t\t
      \    const char *raw_pdu,\n\t\t\t\t\t     size_t raw_pdu_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3305,1
    - Dst: isis_snmp_update_worker_b
      Src: /src/frr/isisd/isis_snmp.c:3308,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3311,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - circuit
    - pdu_size
    - lsp_id
    argTypes:
    - struct isis_circuit*
    - uint32_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3316
      start: 3301
    functionDepth: 3
    functionLinenumber: 3301
    functionLinenumberEnd: 3316
    functionName: isis_snmp_lsp_too_large_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - isis_snmp_trap_throttle
    - array_size
    - isis_snmp_update_worker_b
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_lsp_too_large_update(const struct isis_circuit *circuit,\n\t\t\t\t\t
      \ uint32_t pdu_size,\n\t\t\t\t\t  const uint8_t *lsp_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_snmp.c:3323,1
    - Dst: smux_enabled
      Src: /src/frr/isisd/isis_snmp.c:3325,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_snmp.c:3329,1
    - Dst: isis_snmp_adj_state
      Src: /src/frr/isisd/isis_snmp.c:3333,1
    - Dst: isis_snmp_update_worker_b
      Src: /src/frr/isisd/isis_snmp.c:3335,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3338,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3343
      start: 3319
    functionDepth: 2
    functionLinenumber: 3319
    functionLinenumberEnd: 3343
    functionName: isis_snmp_adj_state_change_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - smux_enabled
    - isis_lookup_by_vrfid
    - isis_snmp_adj_state
    - array_size
    - memcpy
    - isis_snmp_update_worker_b
    linkageType: ''
    returnType: int
    signature: int isis_snmp_adj_state_change_update(const struct isis_adjacency *adj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_snmp_trap_throttle
      Src: /src/frr/isisd/isis_snmp.c:3356,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3362,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3363,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3370,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3372,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3376,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3378,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3387,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3389,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3396,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3398,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3404,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3406,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/isisd/isis_snmp.c:3412,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_snmp.c:3414,1
    - Dst: send_v2trap
      Src: /src/frr/isisd/isis_snmp.c:3417,1
    - Dst: snmp_free_varbind
      Src: /src/frr/isisd/isis_snmp.c:3418,1
    - Dst: smux_events_update
      Src: /src/frr/isisd/isis_snmp.c:3419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 4
    argNames:
    - circuit
    - lsp_id
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3421
      start: 3345
    functionDepth: 3
    functionLinenumber: 3345
    functionLinenumberEnd: 3421
    functionName: isis_snmp_lsp_error_update
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - send_v2trap
    - array_size
    - smux_events_update
    - snmp_free_varbind
    - isis_snmp_trap_throttle
    linkageType: ''
    returnType: int
    signature: "int isis_snmp_lsp_error_update(const struct isis_circuit *circuit,\n\t\t\t\t
      \     const uint8_t *lsp_id,\n\t\t\t\t      char const *raw_pdu, size_t raw_pdu_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3426,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3427,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3429,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3431,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3433,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3434,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3435,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3437,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3439,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3440,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3441,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3443,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3444,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3446,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3447,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3448,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_snmp.c:3450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3452
      start: 3424
    functionDepth: 1
    functionLinenumber: 3424
    functionLinenumberEnd: 3452
    functionName: isis_snmp_module_init
    functionSourceFile: /src/frr/isisd/isis_snmp.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int isis_snmp_module_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_affinitymap.c:16,1
    - Dst: affinity_map_get
      Src: /src/frr/isisd/isis_affinitymap.c:26,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_affinitymap.c:29,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_affinitymap.c:30,1
    - Dst: admin_group_get
      Src: /src/frr/isisd/isis_affinitymap.c:32,1
    - Dst: admin_group_get
      Src: /src/frr/isisd/isis_affinitymap.c:34,1
    - Dst: admin_group_get
      Src: /src/frr/isisd/isis_affinitymap.c:36,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - affmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 14
    functionDepth: 2
    functionLinenumber: 14
    functionLinenumberEnd: 95
    functionName: isis_affinity_map_check_use
    functionSourceFile: /src/frr/isisd/isis_affinitymap.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - admin_group_get
    - affinity_map_get
    - isis_lookup_by_vrfid
    linkageType: ''
    returnType: bool
    signature: bool isis_affinity_map_check_use(const char *affmap_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isis_routemap.c:43,1
    - Dst: access_list_apply
      Src: /src/frr/isisd/isis_routemap.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 48
    functionName: route_match_ip_address
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - access_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ip_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_routemap.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: route_match_ip_address_compile
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_routemap.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: route_match_ip_address_free
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/isisd/isis_routemap.c:75,1
    - Dst: prefix_list_apply
      Src: /src/frr/isisd/isis_routemap.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 80
    functionName: route_match_ip_address_prefix_list
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ip_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t   void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_routemap.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: route_match_ip_address_prefix_list_compile
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ip_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_routemap.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: route_match_ip_address_prefix_list_free
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ip_address_prefix_list_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 119
    functionName: route_match_tag
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_tag(void *rule, const struct
      prefix *p, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/isisd/isis_routemap.c:136,1
    - Dst: access_list_apply
      Src: /src/frr/isisd/isis_routemap.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 141
    functionName: route_match_ipv6_address
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - access_list_lookup
    - access_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_match_ipv6_address(void *rule, const
      struct prefix *prefix, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_routemap.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: route_match_ipv6_address_compile
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_address_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_routemap.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: route_match_ipv6_address_free
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_address_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/isisd/isis_routemap.c:168,1
    - Dst: prefix_list_apply
      Src: /src/frr/isisd/isis_routemap.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: route_match_ipv6_address_prefix_list
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_match_ipv6_address_prefix_list(void
      *rule, const struct prefix *prefix,\n\t\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_routemap.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: route_match_ipv6_address_prefix_list_compile
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *route_match_ipv6_address_prefix_list_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_routemap.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: route_match_ipv6_address_prefix_list_free
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_match_ipv6_address_prefix_list_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 207
    functionName: route_set_metric
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t route_set_metric(void *rule, const struct
      prefix *prefix, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/isisd/isis_routemap.c:215,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_routemap.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 223
    functionName: route_set_metric_compile
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_set_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_routemap.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 228
    functionName: route_set_metric_free
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_set_metric_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/isisd/isis_routemap.c:239,1
    - Dst: route_map_match_ip_address_hook
      Src: /src/frr/isisd/isis_routemap.c:241,1
    - Dst: route_map_no_match_ip_address_hook
      Src: /src/frr/isisd/isis_routemap.c:242,1
    - Dst: route_map_match_ip_address_prefix_list_hook
      Src: /src/frr/isisd/isis_routemap.c:244,1
    - Dst: route_map_no_match_ip_address_prefix_list_hook
      Src: /src/frr/isisd/isis_routemap.c:245,1
    - Dst: route_map_match_ipv6_address_hook
      Src: /src/frr/isisd/isis_routemap.c:247,1
    - Dst: route_map_no_match_ipv6_address_hook
      Src: /src/frr/isisd/isis_routemap.c:248,1
    - Dst: route_map_match_ipv6_address_prefix_list_hook
      Src: /src/frr/isisd/isis_routemap.c:250,1
    - Dst: route_map_no_match_ipv6_address_prefix_list_hook
      Src: /src/frr/isisd/isis_routemap.c:251,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/isisd/isis_routemap.c:253,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/isisd/isis_routemap.c:254,1
    - Dst: route_map_set_metric_hook
      Src: /src/frr/isisd/isis_routemap.c:256,1
    - Dst: route_map_no_set_metric_hook
      Src: /src/frr/isisd/isis_routemap.c:257,1
    - Dst: route_map_install_match
      Src: /src/frr/isisd/isis_routemap.c:259,1
    - Dst: route_map_install_match
      Src: /src/frr/isisd/isis_routemap.c:260,1
    - Dst: route_map_install_match
      Src: /src/frr/isisd/isis_routemap.c:261,1
    - Dst: route_map_install_match
      Src: /src/frr/isisd/isis_routemap.c:262,1
    - Dst: route_map_install_match
      Src: /src/frr/isisd/isis_routemap.c:263,1
    - Dst: route_map_install_set
      Src: /src/frr/isisd/isis_routemap.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 265
    functionName: isis_route_map_init
    functionSourceFile: /src/frr/isisd/isis_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_match_ip_address_hook
    - route_map_no_match_ipv6_address_prefix_list_hook
    - route_map_no_set_metric_hook
    - route_map_install_match
    - route_map_no_match_ip_address_hook
    - route_map_match_ipv6_address_prefix_list_hook
    - route_map_init
    - route_map_match_tag_hook
    - route_map_no_match_ip_address_prefix_list_hook
    - route_map_match_ipv6_address_hook
    - route_map_no_match_ipv6_address_hook
    - route_map_no_match_tag_hook
    - route_map_set_metric_hook
    - route_map_install_set
    - route_map_match_ip_address_prefix_list_hook
    linkageType: ''
    returnType: void
    signature: void isis_route_map_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:31,1
    - Dst: yang_data_new
      Src: /src/frr/isisd/isis_nb_state.c:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 36
    functionName: lib_interface_state_isis_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_isis_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:57,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_nb_state.c:69,1
    - Dst: listnode_lookup
      Src: /src/frr/isisd/isis_nb_state.c:91,1
    - Dst: listnextnode
      Src: /src/frr/isisd/isis_nb_state.c:92,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_nb_state.c:94,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_nb_state.c:101,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 111
    functionName: lib_interface_state_isis_adjacencies_adjacency_get_next
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - listnode_lookup
    - circuit_scan_by_ifp
    - listnode_head
    - listgetdata
    linkageType: ''
    returnType: void
    signature: "void *lib_interface_state_isis_adjacencies_adjacency_get_next(\n\tstruct
      nb_cb_get_next_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/isisd/isis_nb_state.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: lib_interface_state_isis_adjacencies_adjacency_neighbor_sys_type_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_state.c:137,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_state.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 140
    functionName: lib_interface_state_isis_adjacencies_adjacency_neighbor_sysid_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    - snprintfrr
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_neighbor_sysid_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 153
    functionName: lib_interface_state_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_state.c:166,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_state.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 169
    functionName: lib_interface_state_isis_adjacencies_adjacency_neighbor_snpa_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    - snprintfrr
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_neighbor_snpa_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/isisd/isis_nb_state.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 182
    functionName: lib_interface_state_isis_adjacencies_adjacency_hold_timer_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_hold_timer_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_state.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 195
    functionName: lib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_neighbor_priority_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_state.c:206,1
    - Dst: isis_adj_yang_state
      Src: /src/frr/isisd/isis_nb_state.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 208
    functionName: lib_interface_state_isis_adjacencies_adjacency_state_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    - isis_adj_yang_state
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_interface_state_isis_adjacencies_adjacency_state_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_nb_state.c:223,1
    - Dst: listnode_lookup
      Src: /src/frr/isisd/isis_nb_state.c:225,1
    - Dst: listnextnode
      Src: /src/frr/isisd/isis_nb_state.c:226,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_nb_state.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 232
    functionName: lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_get_next
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - listgetdata
    - listnode_lookup
    - listnode_head
    linkageType: ''
    returnType: void
    signature: "void *\nlib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_get_next(\n\tstruct
      nb_cb_get_next_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_state.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 253
    functionName: lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_af_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_af_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 274
    functionName: lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_value_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_value_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_state.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 295
    functionName: lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_weight_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_weight_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_bool
      Src: /src/frr/isisd/isis_nb_state.c:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 318
    functionName: lib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_bool
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_adjacency_sids_adjacency_sid_protection_requested_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_nb_state.c:333,1
    - Dst: listnode_lookup
      Src: /src/frr/isisd/isis_nb_state.c:335,1
    - Dst: listnextnode
      Src: /src/frr/isisd/isis_nb_state.c:336,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_nb_state.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 342
    functionName: lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_get_next
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - listgetdata
    - listnode_lookup
    - listnode_head
    linkageType: ''
    returnType: void
    signature: "void *\nlib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_get_next(\n\tstruct
      nb_cb_get_next_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_state.c:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 364
    functionName: lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_af_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_af_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 385
    functionName: lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_value_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_value_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_state.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 407
    functionName: lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_weight_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_weight_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_bool
      Src: /src/frr/isisd/isis_nb_state.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 430
    functionName: lib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_protection_requested_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_bool
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_adjacencies_adjacency_lan_adjacency_sids_lan_adjacency_sid_protection_requested_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:447,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 452
    functionName: lib_interface_state_isis_event_counters_adjacency_changes_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_event_counters_adjacency_changes_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:472,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_nb_state.c:483,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:497,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 498
    functionName: lib_interface_state_isis_event_counters_adjacency_number_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_event_counters_adjacency_number_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:514,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 519
    functionName: lib_interface_state_isis_event_counters_init_fails_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_interface_state_isis_event_counters_init_fails_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:536,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 541
    functionName: lib_interface_state_isis_event_counters_adjacency_rejects_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_event_counters_adjacency_rejects_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:558,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 563
    functionName: lib_interface_state_isis_event_counters_id_len_mismatch_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_event_counters_id_len_mismatch_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:580,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 586
    functionName: lib_interface_state_isis_event_counters_max_area_addresses_mismatch_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_event_counters_max_area_addresses_mismatch_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:603,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 608
    functionName: lib_interface_state_isis_event_counters_authentication_type_fails_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_event_counters_authentication_type_fails_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_nb_state.c:625,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_state.c:629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 630
    functionName: lib_interface_state_isis_event_counters_authentication_fails_get_elem
    functionSourceFile: /src/frr/isisd/isis_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    - circuit_scan_by_ifp
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_state_isis_event_counters_authentication_fails_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct isis_spf_node*
    - struct isis_spf_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: isis_spf_node_compare
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int isis_spf_node_compare(const struct isis_spf_node *a,\n\t\t\t\t\tconst
      struct isis_spf_node *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_INIT
      Src: /src/frr/isisd/isis_lfa.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nodes
    argTypes:
    - struct isis_spf_nodes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: isis_spf_node_list_init
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - RB_INIT
    linkageType: ''
    returnType: void
    signature: void isis_spf_node_list_init(struct isis_spf_nodes *nodes)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/isisd/isis_lfa.c:62,1
    - Dst: RB_ROOT
      Src: /src/frr/isisd/isis_lfa.c:63,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:66,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_lfa.c:68,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_lfa.c:70,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_lfa.c:71,1
    - Dst: RB_REMOVE
      Src: /src/frr/isisd/isis_lfa.c:72,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_lfa.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - nodes
    argTypes:
    - struct isis_spf_nodes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 75
    functionName: isis_spf_node_list_clear
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 3
    functionsReached:
    - list_delete
    - isis_spf_node_list_clear
    - RB_REMOVE
    - isis_spftree_del
    - XFREE
    - RB_EMPTY
    - RB_ROOT
    linkageType: ''
    returnType: void
    signature: void isis_spf_node_list_clear(struct isis_spf_nodes *nodes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lfa.c:90,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:91,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_lfa.c:92,1
    - Dst: isis_spf_node_list_init
      Src: /src/frr/isisd/isis_lfa.c:93,1
    - Dst: RB_INSERT
      Src: /src/frr/isisd/isis_lfa.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - nodes
    - sysid
    argTypes:
    - struct isis_spf_nodes*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 97
    functionName: isis_spf_node_new
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    - RB_INSERT
    - list_new
    - isis_spf_node_list_init
    - memcpy
    linkageType: ''
    returnType: struct isis_spf_node
    signature: "struct isis_spf_node *isis_spf_node_new(struct isis_spf_nodes *nodes,\n\t\t\t\t\tconst
      uint8_t *sysid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:112,1
    - Dst: RB_FIND
      Src: /src/frr/isisd/isis_lfa.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - nodes
    - sysid
    argTypes:
    - struct isis_spf_nodes*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: isis_spf_node_find
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - RB_FIND
    - memcpy
    linkageType: ''
    returnType: struct isis_spf_node
    signature: "struct isis_spf_node *isis_spf_node_find(const struct isis_spf_nodes
      *nodes,\n\t\t\t\t\t const uint8_t *sysid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct lfa_tiebreaker*
    - struct lfa_tiebreaker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 133
    functionName: lfa_tiebreaker_cmp
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lfa_tiebreaker_cmp(const struct lfa_tiebreaker *a,\n\t\t       const
      struct lfa_tiebreaker *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfa_tiebreaker_tree_init
      Src: /src/frr/isisd/isis_lfa.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - area
    - level
    argTypes:
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: isis_lfa_tiebreakers_init
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - lfa_tiebreaker_tree_init
    linkageType: ''
    returnType: void
    signature: void isis_lfa_tiebreakers_init(struct isis_area *area, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfa_tiebreaker_tree_count
      Src: /src/frr/isisd/isis_lfa.c:154,1
    - Dst: lfa_tiebreaker_tree_first
      Src: /src/frr/isisd/isis_lfa.c:158,1
    - Dst: isis_lfa_tiebreaker_delete
      Src: /src/frr/isisd/isis_lfa.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - area
    - level
    argTypes:
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 162
    functionName: isis_lfa_tiebreakers_clear
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - lfa_tiebreaker_tree_first
    - isis_lfa_tiebreaker_delete
    - lfa_tiebreaker_tree_count
    linkageType: ''
    returnType: void
    signature: void isis_lfa_tiebreakers_clear(struct isis_area *area, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lfa.c:180,1
    - Dst: lfa_tiebreaker_tree_add
      Src: /src/frr/isisd/isis_lfa.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - area
    - level
    - index
    - type
    argTypes:
    - struct isis_area*
    - int
    - uint8_t
    - enum lfa_tiebreaker_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 187
    functionName: isis_lfa_tiebreaker_add
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - lfa_tiebreaker_tree_add
    - XCALLOC
    linkageType: ''
    returnType: struct lfa_tiebreaker
    signature: "struct lfa_tiebreaker *isis_lfa_tiebreaker_add(struct isis_area *area,\n\t\t\t\t\t
      \      int level, uint8_t index,\n\t\t\t\t\t       enum lfa_tiebreaker_type
      type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lfa_tiebreaker_tree_del
      Src: /src/frr/isisd/isis_lfa.c:199,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_lfa.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - area
    - level
    - tie_b
    argTypes:
    - struct isis_area*
    - int
    - struct lfa_tiebreaker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 201
    functionName: isis_lfa_tiebreaker_delete
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 3
    functionsReached:
    - lfa_tiebreaker_tree_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void isis_lfa_tiebreaker_delete(struct isis_area *area, int level,\n\t\t\t\tstruct
      lfa_tiebreaker *tie_b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/isisd/isis_lfa.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value1
    - value2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 206
    functionName: lfa_excl_interface_hash_cmp
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: bool
    signature: bool lfa_excl_interface_hash_cmp(const void *value1, const void *value2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/isisd/isis_lfa.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: lfa_excl_interface_hash_make
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int lfa_excl_interface_hash_make(const void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_lfa.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: lfa_excl_interface_hash_alloc
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *lfa_excl_interface_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_lfa.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 221
    functionName: lfa_excl_interface_hash_free
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void lfa_excl_interface_hash_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/isisd/isis_lfa.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 234
    functionName: isis_lfa_excluded_ifaces_init
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void isis_lfa_excluded_ifaces_init(struct isis_circuit *circuit, int
      level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean
      Src: /src/frr/isisd/isis_lfa.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: isis_lfa_excluded_ifaces_clear
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - hash_clean
    linkageType: ''
    returnType: void
    signature: void isis_lfa_excluded_ifaces_clear(struct isis_circuit *circuit, int
      level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/isisd/isis_lfa.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - circuit
    - level
    - ifname
    argTypes:
    - struct isis_circuit*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 259
    functionName: isis_lfa_excluded_iface_add
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: "void isis_lfa_excluded_iface_add(struct isis_circuit *circuit, int
      level,\n\t\t\t\t const char *ifname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/isisd/isis_lfa.c:273,1
    - Dst: hash_release
      Src: /src/frr/isisd/isis_lfa.c:276,1
    - Dst: lfa_excl_interface_hash_free
      Src: /src/frr/isisd/isis_lfa.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - circuit
    - level
    - ifname
    argTypes:
    - struct isis_circuit*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 279
    functionName: isis_lfa_excluded_iface_delete
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - hash_release
    - hash_lookup
    - lfa_excl_interface_hash_free
    linkageType: ''
    returnType: void
    signature: "void isis_lfa_excluded_iface_delete(struct isis_circuit *circuit,
      int level,\n\t\t\t\t    const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/isisd/isis_lfa.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - circuit
    - level
    - ifname
    argTypes:
    - struct isis_circuit*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 293
    functionName: isis_lfa_excluded_iface_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: bool
    signature: "bool isis_lfa_excluded_iface_check(struct isis_circuit *circuit, int
      level,\n\t\t\t\t   const char *ifname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:319,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - spftree
    - id
    argTypes:
    - struct isis_spftree*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 323
    functionName: isis_lfa_excise_adj_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool isis_lfa_excise_adj_check(const struct isis_spftree *spftree,\n\t\t\t
      \      const uint8_t *id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:350,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - spftree
    - id
    argTypes:
    - struct isis_spftree*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 354
    functionName: isis_lfa_excise_node_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - isis_spf_node_find
    linkageType: ''
    returnType: bool
    signature: "bool isis_lfa_excise_node_check(const struct isis_spftree *spftree,\n\t\t\t\tconst
      uint8_t *id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:375,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 5
    argNames:
    - prefix
    - metric
    - external
    - subtlvs
    - arg
    argTypes:
    - struct prefix*
    - uint32_t
    - bool
    - struct isis_subtlvs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 383
    functionName: tilfa_find_pnode_prefix_sid_cb
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: "int tilfa_find_pnode_prefix_sid_cb(const struct prefix *prefix,\n\t\t\t\t\t
      \ uint32_t metric, bool external,\n\t\t\t\t\t  struct isis_subtlvs *subtlvs,\n\t\t\t\t\t
      \ void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_lfa.c:392,1
    - Dst: isis_lsp_iterate_ip_reach
      Src: /src/frr/isisd/isis_lfa.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - spftree
    - sysid
    argTypes:
    - struct isis_spftree*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 403
    functionName: tilfa_find_pnode_prefix_sid
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - isis_lsp_iterate_ip_reach
    - isis_root_system_lsp
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t tilfa_find_pnode_prefix_sid(struct isis_spftree *spftree,\n\t\t\t\t\t
      \   const uint8_t *sysid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:418,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - id
    - metric
    - oldmetric
    - subtlvs
    - arg
    argTypes:
    - uint8_t*
    - uint32_t
    - bool
    - struct isis_ext_subtlvs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 427
    functionName: tilfa_find_qnode_adj_sid_cb
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int tilfa_find_qnode_adj_sid_cb(const uint8_t *id, uint32_t metric,\n\t\t\t\t
      \      bool oldmetric,\n\t\t\t\t       struct isis_ext_subtlvs *subtlvs,\n\t\t\t\t
      \      void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_lfa.c:437,1
    - Dst: isis_lsp_iterate_is_reach
      Src: /src/frr/isisd/isis_lfa.c:443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - spftree
    - source_sysid
    - qnode_sysid
    argTypes:
    - struct isis_spftree*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 447
    functionName: tilfa_find_qnode_adj_sid
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - isis_lsp_iterate_is_reach
    - isis_root_system_lsp
    linkageType: ''
    returnType: mpls_label_t
    signature: "mpls_label_t tilfa_find_qnode_adj_sid(struct isis_spftree *spftree,\n\t\t\t\t\t
      \    const uint8_t *source_sysid,\n\t\t\t\t\t     const uint8_t *qnode_sysid)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lfa.c:465,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:467,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:469,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:471,1
    - Dst: switch
      Src: /src/frr/isisd/isis_lfa.c:476,1
    - Dst: isis_sr_find_srgb
      Src: /src/frr/isisd/isis_lfa.c:482,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:484,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:486,1
    - Dst: error
      Src: /src/frr/isisd/isis_lfa.c:487,1
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_lfa.c:492,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_lfa.c:510,1
    - Dst: exit
      Src: /src/frr/isisd/isis_lfa.c:513,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_lfa.c:521,1
    - Dst: tilfa_repair_list_apply
      Src: /src/frr/isisd/isis_lfa.c:525,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:533,1
    - Dst: isis_vertex_adj_exists
      Src: /src/frr/isisd/isis_lfa.c:544,1
    - Dst: tilfa_compute_label_stack
      Src: /src/frr/isisd/isis_lfa.c:547,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:552,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:553,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:555,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:556,1
    - Dst: lfa_ext_p_space_check
      Src: /src/frr/isisd/isis_lfa.c:570,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:579,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:586,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:591,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:595,1
    - Dst: lfa_q_space_check
      Src: /src/frr/isisd/isis_lfa.c:603,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:606,1
    - Dst: tilfa_build_repair_list
      Src: /src/frr/isisd/isis_lfa.c:610,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:626,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:627,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:627,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:632,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:633,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:634,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:638,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:644,1
    - Dst: listnode_add_head
      Src: /src/frr/isisd/isis_lfa.c:646,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_lfa.c:654,1
    - Dst: lfa_ext_p_space_check
      Src: /src/frr/isisd/isis_lfa.c:658,1
    - Dst: lfa_q_space_check
      Src: /src/frr/isisd/isis_lfa.c:659,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:673,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:675,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_lfa.c:677,1
    - Dst: tilfa_find_qnode_adj_sid
      Src: /src/frr/isisd/isis_lfa.c:680,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:683,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:684,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:685,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:689,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:691,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:692,1
    - Dst: listnode_add_head
      Src: /src/frr/isisd/isis_lfa.c:696,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:702,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:704,1
    - Dst: isis_spf_node_new
      Src: /src/frr/isisd/isis_lfa.c:708,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:712,1
    - Dst: tilfa_find_pnode_prefix_sid
      Src: /src/frr/isisd/isis_lfa.c:718,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:720,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:722,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:727,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:729,1
    - Dst: listnode_add_head
      Src: /src/frr/isisd/isis_lfa.c:732,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:736,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:738,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:740,1
    - Dst: tilfa_repair_list_apply
      Src: /src/frr/isisd/isis_lfa.c:744,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:752,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:757,1
    - Dst: list_dup
      Src: /src/frr/isisd/isis_lfa.c:758,1
    - Dst: tilfa_build_repair_list
      Src: /src/frr/isisd/isis_lfa.c:759,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:763,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 88
    argCount: 3
    argNames:
    - lspdb
    - sadj
    - repair_list
    argTypes:
    - struct lspdb_head*
    - struct isis_spf_adj*
    - struct list*
    assertStmts:
    - condition: (pvertex)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/frr/isisd/isis_lfa.c
    constantsTouched: []
    func_position:
      end: 769
      start: 454
    functionDepth: 3
    functionLinenumber: 454
    functionLinenumberEnd: 769
    functionName: tilfa_compute_label_stack
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - switch
    - list_delete
    - tilfa_find_pnode_prefix_sid
    - zlog_warn
    - flog_err
    - error
    - tilfa_repair_list_apply
    - isis_sr_find_srgb
    - isis_spf_node_find
    - exit
    - list_dup
    - flog_warn
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - list_delete_all_node
    - VTYPE_IS
    - lfa_ext_p_space_check
    - assert
    - tilfa_find_qnode_adj_sid
    - tilfa_build_repair_list
    - print_sys_hostname
    - listcount
    - tilfa_compute_label_stack
    - XFREE
    - listnode_head
    - vtype2string
    - memcpy
    - vid2string
    - VTYPE_IP
    - CHECK_FLAG
    - lfa_q_space_check
    - isis_spf_node_new
    - isis_vertex_adj_exists
    - listnode_add_head
    linkageType: ''
    returnType: struct mpls_label_stack
    signature: "struct mpls_label_stack *\ntilfa_compute_label_stack(struct lspdb_head
      *lspdb,\n\t\t\t  const struct isis_spf_adj *sadj,\n\t\t\t  const struct list
      *repair_list)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum lfa_protection_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 781
    functionName: lfa_protection_type2str
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *lfa_protection_type2str(enum lfa_protection_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lfa.c:790,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:791,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lfa.c:791,1
    - Dst: lfa_protection_type2str
      Src: /src/frr/isisd/isis_lfa.c:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - resource
    argTypes:
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 795
    functionName: lfa_protected_resource2str
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - print_sys_hostname
    - LSP_PSEUDO_ID
    - snprintf
    - lfa_protection_type2str
    linkageType: ''
    returnType: char
    signature: 'char *

      lfa_protected_resource2str(const struct lfa_protected_resource *resource)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:802,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lfa.c:803,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:806,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:807,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:812,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:814,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 4
    argNames:
    - sadj
    - resource
    - root_sysid
    - reverse
    argTypes:
    - struct isis_spf_adj*
    - struct lfa_protected_resource*
    - uint8_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 819
    functionName: spf_adj_check_is_affected
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - LSP_PSEUDO_ID
    - CHECK_FLAG
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool spf_adj_check_is_affected(const struct isis_spf_adj *sadj,\n\t\t\t
      \ const struct lfa_protected_resource *resource,\n\t\t\t  const uint8_t *root_sysid,
      bool reverse)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:832,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:835,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - vertex
    - root_sysid
    - resource
    argTypes:
    - struct isis_vertex*
    - uint8_t*
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 841
    functionName: spf_vertex_check_is_affected
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - VTYPE_IP
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: bool
    signature: "bool spf_vertex_check_is_affected(const struct isis_vertex *vertex,\n\t\t\t
      \    const uint8_t *root_sysid,\n\t\t\t     const struct lfa_protected_resource
      *resource)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_lfa.c:860,1
    - Dst: isis_adj_find
      Src: /src/frr/isisd/isis_lfa.c:861,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_lfa.c:865,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:871,1
    - Dst: spf_vertex_check_is_affected
      Src: /src/frr/isisd/isis_lfa.c:874,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - spftree_pc
    - vertex
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 854
    functionDepth: 2
    functionLinenumber: 854
    functionLinenumberEnd: 877
    functionName: lfa_check_needs_protection
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - isis_adj_find
    - CHECK_FLAG
    - VTYPE_IS
    - spf_vertex_check_is_affected
    - isis_find_vertex
    linkageType: ''
    returnType: bool
    signature: "bool lfa_check_needs_protection(const struct isis_spftree *spftree_pc,\n\t\t\t\t
      \      const struct isis_vertex *vertex)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lfa_check_needs_protection
      Src: /src/frr/isisd/isis_lfa.c:899,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:901,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:903,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:904,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:905,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_lfa.c:914,1
    - Dst: isis_adj_find
      Src: /src/frr/isisd/isis_lfa.c:917,1
    - Dst: isis_sr_adj_sid_find
      Src: /src/frr/isisd/isis_lfa.c:920,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:923,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:925,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:926,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:931,1
    - Dst: route_node_lookup
      Src: /src/frr/isisd/isis_lfa.c:935,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:937,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:939,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:940,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:947,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:949,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:950,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:951,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_lfa.c:955,1
    - Dst: isis_spf_node_list_init
      Src: /src/frr/isisd/isis_lfa.c:957,1
    - Dst: tilfa_build_repair_list
      Src: /src/frr/isisd/isis_lfa.c:958,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_lfa.c:960,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:961,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:963,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:965,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:966,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:967,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 2
    argNames:
    - spftree_pc
    - vertex
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 888
    functionDepth: 3
    functionLinenumber: 888
    functionLinenumberEnd: 971
    functionName: isis_tilfa_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - vid2string
    - isis_adj_find
    - route_node_lookup
    - lfa_protected_resource2str
    - isis_spf_node_list_clear
    - lfa_check_needs_protection
    - VTYPE_IP
    - tilfa_build_repair_list
    - list_delete
    - isis_sr_adj_sid_find
    - zlog_debug
    - zlog_warn
    - list_new
    - VTYPE_IS
    - isis_spf_node_list_init
    - vtype2string
    linkageType: ''
    returnType: int
    signature: "int isis_tilfa_check(struct isis_spftree *spftree_pc,\n\t\t     struct
      isis_vertex *vertex)"
  - BBCount: 117
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:981,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:1046,1
    - Dst: vertex_is_affected
      Src: /src/frr/isisd/isis_lfa.c:1046,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1055,1
    - Dst: ALL_QUEUE_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:1065,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_lfa.c:1068,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:1072,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1076,1
    - Dst: vertex_is_affected
      Src: /src/frr/isisd/isis_lfa.c:1079,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1082,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:1084,1
    - Dst: isis_spf_node_new
      Src: /src/frr/isisd/isis_lfa.c:1086,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_lfa.c:1103,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_lfa.c:1108,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1131,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1132,1
    - Dst: spf_adj_node_is_affected
      Src: /src/frr/isisd/isis_lfa.c:1136,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1139,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1140,1
    - Dst: isis_spf_reverse_run
      Src: /src/frr/isisd/isis_lfa.c:1149,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1152,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1158,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1159,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1160,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1186,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1187,1
    - Dst: isis_spf_node_list_init
      Src: /src/frr/isisd/isis_lfa.c:1191,1
    - Dst: RB_FOREACH
      Src: /src/frr/isisd/isis_lfa.c:1192,1
    - Dst: spf_adj_node_is_affected
      Src: /src/frr/isisd/isis_lfa.c:1193,1
    - Dst: isis_spf_node_new
      Src: /src/frr/isisd/isis_lfa.c:1195,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_lfa.c:1201,1
    - Dst: lfa_calc_pq_spaces
      Src: /src/frr/isisd/isis_lfa.c:1210,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1213,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1215,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_lfa.c:1218,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_lfa.c:1222,1
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_lfa.c:1239,1
    - Dst: RB_FOREACH
      Src: /src/frr/isisd/isis_lfa.c:1243,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1245,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1246,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_lfa.c:1249,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_lfa.c:1254,1
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_lfa.c:1266,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_lfa.c:1294,1
    - Dst: lfa_ext_p_space_check
      Src: /src/frr/isisd/isis_lfa.c:1298,1
    - Dst: lfa_q_space_check
      Src: /src/frr/isisd/isis_lfa.c:1299,1
    - Dst: rlfa_pq_node_rtr_id
      Src: /src/frr/isisd/isis_lfa.c:1306,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:1311,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1312,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:1314,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1322,1
    - Dst: prefix_list_apply
      Src: /src/frr/isisd/isis_lfa.c:1335,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1337,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1345,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:1351,1
    - Dst: rlfa_find_pq_node
      Src: /src/frr/isisd/isis_lfa.c:1354,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:1356,1
    - Dst: rlfa_cmp
      Src: /src/frr/isisd/isis_lfa.c:1363,1
    - Dst: prefix_cmp
      Src: /src/frr/isisd/isis_lfa.c:1365,1
    - Dst: rlfa_add
      Src: /src/frr/isisd/isis_lfa.c:1368,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1374,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:1374,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lfa.c:1375,1
    - Dst: rlfa_tree_add
      Src: /src/frr/isisd/isis_lfa.c:1379,1
    - Dst: rlfa_delete
      Src: /src/frr/isisd/isis_lfa.c:1384,1
    - Dst: rlfa_tree_del
      Src: /src/frr/isisd/isis_lfa.c:1386,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_lfa.c:1387,1
    - Dst: rlfa_lookup
      Src: /src/frr/isisd/isis_lfa.c:1390,1
    - Dst: rlfa_tree_find
      Src: /src/frr/isisd/isis_lfa.c:1396,1
    - Dst: isis_area_verify_routes_cb
      Src: /src/frr/isisd/isis_lfa.c:1399,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_lfa.c:1401,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1404,1
    - Dst: isis_area_verify_routes
      Src: /src/frr/isisd/isis_lfa.c:1406,1
    - Dst: rlfa_nexthop_label
      Src: /src/frr/isisd/isis_lfa.c:1409,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:1420,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/isisd/isis_lfa.c:1430,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/isisd/isis_lfa.c:1442,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:1467,1
    - Dst: rlfa_nexthop_label
      Src: /src/frr/isisd/isis_lfa.c:1473,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1476,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lfa.c:1492,1
    - Dst: isis_route_create
      Src: /src/frr/isisd/isis_lfa.c:1511,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_lfa.c:1517,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lfa.c:1518,1
    - Dst: route_node_lookup
      Src: /src/frr/isisd/isis_lfa.c:1530,1
    - Dst: isis_route_delete
      Src: /src/frr/isisd/isis_lfa.c:1533,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_lfa.c:1536,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lfa.c:1537,1
    - Dst: rlfa_tree_init
      Src: /src/frr/isisd/isis_lfa.c:1543,1
    - Dst: rlfa_tree_count
      Src: /src/frr/isisd/isis_lfa.c:1548,1
    - Dst: rlfa_tree_first
      Src: /src/frr/isisd/isis_lfa.c:1551,1
    - Dst: isis_rlfa_deactivate
      Src: /src/frr/isisd/isis_lfa.c:1552,1
    - Dst: rlfa_delete
      Src: /src/frr/isisd/isis_lfa.c:1553,1
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_lfa.c:1570,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_lfa.c:1574,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:1581,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:1587,1
    - Dst: rlfa_lookup
      Src: /src/frr/isisd/isis_lfa.c:1597,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:1599,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1607,1
    - Dst: isis_rlfa_activate
      Src: /src/frr/isisd/isis_lfa.c:1611,1
    - Dst: isis_rlfa_deactivate
      Src: /src/frr/isisd/isis_lfa.c:1612,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1615,1
    - Dst: isis_rlfa_deactivate
      Src: /src/frr/isisd/isis_lfa.c:1618,1
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_lfa.c:1624,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1636,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:1638,1
    - Dst: isis_rlfa_list_clear
      Src: /src/frr/isisd/isis_lfa.c:1650,1
    - Dst: lfa_check_needs_protection
      Src: /src/frr/isisd/isis_lfa.c:1671,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1673,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:1675,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:1676,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1677,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1684,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:1686,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:1687,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1688,1
    - Dst: rlfa_find_pq_node
      Src: /src/frr/isisd/isis_lfa.c:1692,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1695,1
    - Dst: rlfa_add
      Src: /src/frr/isisd/isis_lfa.c:1700,1
    - Dst: isis_zebra_rlfa_register
      Src: /src/frr/isisd/isis_lfa.c:1703,1
    - Dst: rlfa_delete
      Src: /src/frr/isisd/isis_lfa.c:1704,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1727,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1728,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_lfa.c:1731,1
    - Dst: lfa_calc_pq_spaces
      Src: /src/frr/isisd/isis_lfa.c:1741,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1744,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1746,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_lfa.c:1749,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_lfa.c:1765,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_lfa.c:1778,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1795,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:1795,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:1796,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_lfa.c:1810,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1842,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1843,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:1852,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:1855,1
    - Dst: lfa_calc_dist_node
      Src: /src/frr/isisd/isis_lfa.c:1856,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:1862,1
    - Dst: lfa_calc_dist_node
      Src: /src/frr/isisd/isis_lfa.c:1864,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:1871,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:1873,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1877,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1900,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1901,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1904,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:1910,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1914,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1937,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1938,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1939,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1940,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1943,1
    - Dst: lfa_calc_dist_node
      Src: /src/frr/isisd/isis_lfa.c:1949,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1954,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1960,1
    - Dst: list_dup
      Src: /src/frr/isisd/isis_lfa.c:1977,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:1980,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_lfa.c:1984,1
    - Dst: list_dup
      Src: /src/frr/isisd/isis_lfa.c:1990,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_lfa.c:1994,1
    - Dst: clfa_downstream_check
      Src: /src/frr/isisd/isis_lfa.c:1996,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2000,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2001,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2003,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lfa.c:2005,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2010,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_lfa.c:2016,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2022,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2024,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lfa.c:2026,1
    - Dst: LFA_TIEBREAKER_NODE_PROTECTING
      Src: /src/frr/isisd/isis_lfa.c:2029,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_lfa.c:2030,1
    - Dst: clfa_node_protecting_check
      Src: /src/frr/isisd/isis_lfa.c:2032,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2038,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2040,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lfa.c:2042,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:2050,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2056,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2060,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2068,1
    - Dst: isis_lfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2077,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2088,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:2089,1
    - Dst: ALL_QUEUE_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2091,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2101,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:2101,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:2104,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2106,1
    - Dst: spf_vertex_check_is_affected
      Src: /src/frr/isisd/isis_lfa.c:2106,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2109,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:2111,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:2112,1
    - Dst: continue
      Src: /src/frr/isisd/isis_lfa.c:2113,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2117,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:2118,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:2119,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2124,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:2129,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:2132,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_lfa.c:2139,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2141,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:2155,1
    - Dst: isis_tlvs_lookup_mt_router_info
      Src: /src/frr/isisd/isis_lfa.c:2164,1
    - Dst: ISIS_MASK_LSP_OL_BIT
      Src: /src/frr/isisd/isis_lfa.c:2169,1
    - Dst: spf_adj_check_is_affected
      Src: /src/frr/isisd/isis_lfa.c:2174,1
    - Dst: isis_lfa_excluded_iface_check
      Src: /src/frr/isisd/isis_lfa.c:2180,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2186,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2188,1
    - Dst: clfa_loop_free_check
      Src: /src/frr/isisd/isis_lfa.c:2191,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2194,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2196,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2205,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2207,1
    - Dst: isis_vertex_adj_add
      Src: /src/frr/isisd/isis_lfa.c:2214,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_lfa.c:2219,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2221,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2223,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_lfa.c:2227,1
    - Dst: isis_lfa_tiebreakers
      Src: /src/frr/isisd/isis_lfa.c:2231,1
    - Dst: isis_route_create
      Src: /src/frr/isisd/isis_lfa.c:2236,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2243,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2244,1
    - Dst: isis_tilfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2260,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_lfa.c:2262,1
    - Dst: isis_tilfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2273,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_lfa.c:2274,1
    - Dst: isis_spf_reverse_run
      Src: /src/frr/isisd/isis_lfa.c:2293,1
    - Dst: isis_spf_run_neighbors
      Src: /src/frr/isisd/isis_lfa.c:2296,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2299,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2304,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2307,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:2323,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:2331,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lfa.c:2332,1
    - Dst: isis_lfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2340,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:2347,1
    - Dst: isis_rlfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2350,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_lfa.c:2353,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:2358,1
    - Dst: isis_spf_run_tilfa
      Src: /src/frr/isisd/isis_lfa.c:2359,1
    CyclomaticComplexity: 171
    EdgeCount: 171
    ICount: 470
    argCount: 3
    argNames:
    - adj_node
    - resource
    - root_sysid
    argTypes:
    - struct isis_spf_node*
    - struct lfa_protected_resource*
    - uint8_t*
    assertStmts:
    - condition: (node_N)
      pos:
        line_end: 1842
        line_start: 1842
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (VTYPE_IP(vertex->type))
      pos:
        line_end: 1373
        line_start: 1373
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (spftree_reverse)
      pos:
        line_end: 2346
        line_start: 2346
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (node_N)
      pos:
        line_end: 1937
        line_start: 1937
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (spftree_reverse)
      pos:
        line_end: 2357
        line_start: 2357
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (VTYPE_IP(vertex_best->type))
      pos:
        line_end: 1794
        line_start: 1794
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (node_E)
      pos:
        line_end: 1939
        line_start: 1939
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (node_N)
      pos:
        line_end: 1900
        line_start: 1900
        source_file: /src/frr/isisd/isis_lfa.c
    constantsTouched: []
    func_position:
      end: 2362
      start: 973
    functionDepth: 6
    functionLinenumber: 973
    functionLinenumberEnd: 2362
    functionName: spf_adj_node_is_affected
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - rlfa_tree_add
    - IPV4_ADDR_SAME
    - isis_spftree_del
    - isis_spf_node_find
    - rlfa_tree_del
    - rlfa_lookup
    - lfa_protected_resource2str
    - XCALLOC
    - rlfa_tree_find
    - if
    - lfa_ext_p_space_check
    - listcount
    - EVENT_OFF
    - rlfa_nexthop_label
    - memcpy
    - isis_lookup_by_vrfid
    - isis_spf_reverse_run
    - list_isempty
    - spf_adj_node_is_affected
    - list_new
    - ALL_LIST_ELEMENTS
    - lfa_calc_dist_node
    - rlfa_tree_first
    - isis_route_delete
    - continue
    - isis_lfa_tiebreakers
    - LFA_TIEBREAKER_NODE_PROTECTING
    - isis_rlfa_deactivate
    - isis_route_create
    - route_node_lookup
    - list_dup
    - isis_vertex_adj_add
    - rlfa_pq_node_rtr_id
    - VTYPE_IS
    - isis_lfa_compute
    - isis_rlfa_list_clear
    - isis_spf_node_list_clear
    - LSP_PSEUDO_ID
    - prefix_list_apply
    - rlfa_find_pq_node
    - rlfa_delete
    - event_add_timer
    - listnode_head
    - isis_find_vertex
    - isis_lfa_excluded_iface_check
    - lfa_check_needs_protection
    - VTYPE_IP
    - lfa_q_space_check
    - clfa_downstream_check
    - RB_FOREACH
    - lfa_calc_pq_spaces
    - isis_spf_run_tilfa
    - memcmp
    - isis_run_spf
    - isis_tlvs_lookup_mt_router_info
    - rlfa_tree_count
    - zlog_debug
    - assert
    - clfa_node_protecting_check
    - rlfa_tree_init
    - print_sys_hostname
    - isis_rlfa_compute
    - spf_adj_check_is_affected
    - clfa_loop_free_check
    - isis_spf_node_list_init
    - XFREE
    - vid2string
    - isis_zebra_rlfa_register
    - isis_area_verify_routes_cb
    - isis_rlfa_activate
    - SET_FLAG
    - IPV6_ADDR_SAME
    - isis_spf_run_neighbors
    - spf_vertex_check_is_affected
    - ALL_QUEUE_ELEMENTS_RO
    - isis_spftree_new
    - isis_area_lookup
    - list_delete
    - ISIS_MASK_LSP_OL_BIT
    - frr_each
    - listnode_add
    - zlog_warn
    - isis_root_system_lsp
    - isis_area_verify_routes
    - isis_tilfa_compute
    - prefix_cmp
    - ALL_LIST_ELEMENTS_RO
    - EVENT_ARG
    - rlfa_cmp
    - vertex_is_affected
    - listnode_delete
    - lfa_calc_reach_nodes
    - lfa_calc_dist_destination
    - vtype2string
    - CHECK_FLAG
    - isis_spf_node_new
    - rlfa_add
    linkageType: ''
    returnType: bool
    signature: "bool spf_adj_node_is_affected(struct isis_spf_node *adj_node,\n\t\t\t
      const struct lfa_protected_resource *resource,\n\t\t\t const uint8_t *root_sysid)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1131,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1132,1
    - Dst: spf_adj_node_is_affected
      Src: /src/frr/isisd/isis_lfa.c:1136,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1139,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1140,1
    - Dst: isis_spf_reverse_run
      Src: /src/frr/isisd/isis_lfa.c:1149,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1152,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1158,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1159,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - spftree_pc
    - resource
    argTypes:
    - struct isis_spftree*
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1117
    functionDepth: 7
    functionLinenumber: 1117
    functionLinenumberEnd: 1165
    functionName: lfa_calc_pq_spaces
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - print_sys_hostname
    - isis_spf_reverse_run
    - spf_adj_node_is_affected
    - zlog_debug
    - lfa_calc_reach_nodes
    linkageType: ''
    returnType: void
    signature: "void lfa_calc_pq_spaces(struct isis_spftree *spftree_pc,\n\t\t\t       const
      struct lfa_protected_resource *resource)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: spf_adj_node_is_affected
      Src: /src/frr/isisd/isis_lfa.c:1136,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1139,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1140,1
    - Dst: isis_spf_reverse_run
      Src: /src/frr/isisd/isis_lfa.c:1149,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1152,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1158,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1159,1
    - Dst: lfa_calc_reach_nodes
      Src: /src/frr/isisd/isis_lfa.c:1160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1135
    functionDepth: 7
    functionLinenumber: 1135
    functionLinenumberEnd: 1164
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 83
    functionsReached:
    - print_sys_hostname
    - isis_spf_reverse_run
    - spf_adj_node_is_affected
    - zlog_debug
    - lfa_calc_reach_nodes
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH (adj_node, isis_spf_nodes, adj_nodes)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1186,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1187,1
    - Dst: isis_spf_node_list_init
      Src: /src/frr/isisd/isis_lfa.c:1191,1
    - Dst: RB_FOREACH
      Src: /src/frr/isisd/isis_lfa.c:1192,1
    - Dst: spf_adj_node_is_affected
      Src: /src/frr/isisd/isis_lfa.c:1193,1
    - Dst: isis_spf_node_new
      Src: /src/frr/isisd/isis_lfa.c:1195,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_lfa.c:1201,1
    - Dst: lfa_calc_pq_spaces
      Src: /src/frr/isisd/isis_lfa.c:1210,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1213,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1215,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_lfa.c:1218,1
    - Dst: isis_spf_node_list_clear
      Src: /src/frr/isisd/isis_lfa.c:1222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - area
    - spftree
    - spftree_reverse
    - resource
    argTypes:
    - struct isis_area*
    - struct isis_spftree*
    - struct isis_spftree*
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1177
    functionDepth: 8
    functionLinenumber: 1177
    functionLinenumberEnd: 1225
    functionName: isis_tilfa_compute
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - isis_spftree_new
    - lfa_protected_resource2str
    - isis_spf_node_list_clear
    - spf_adj_node_is_affected
    - zlog_debug
    - isis_spf_node_list_init
    - isis_spf_node_new
    - RB_FOREACH
    - isis_run_spf
    - lfa_calc_pq_spaces
    linkageType: ''
    returnType: struct isis_spftree
    signature: "struct isis_spftree *isis_tilfa_compute(struct isis_area *area,\n\t\t\t\t\tstruct
      isis_spftree *spftree,\n\t\t\t\t\tstruct isis_spftree *spftree_reverse,\n\t\t\t\t\tstruct
      lfa_protected_resource *resource)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_lfa.c:1239,1
    - Dst: RB_FOREACH
      Src: /src/frr/isisd/isis_lfa.c:1243,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1245,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:1246,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_lfa.c:1249,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_lfa.c:1254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - spftree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1234
    functionDepth: 6
    functionLinenumber: 1234
    functionLinenumberEnd: 1258
    functionName: isis_spf_run_neighbors
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 4
    functionsReached:
    - isis_spftree_new
    - print_sys_hostname
    - zlog_debug
    - isis_root_system_lsp
    - RB_FOREACH
    - isis_run_spf
    linkageType: ''
    returnType: int
    signature: int isis_spf_run_neighbors(struct isis_spftree *spftree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_root_system_lsp
      Src: /src/frr/isisd/isis_lfa.c:1266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - spftree
    - vertex_pq
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1261
    functionDepth: 0
    functionLinenumber: 1261
    functionLinenumberEnd: 1274
    functionName: rlfa_pq_node_rtr_id
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - isis_root_system_lsp
    linkageType: ''
    returnType: struct in_addr
    signature: "struct in_addr *rlfa_pq_node_rtr_id(struct isis_spftree *spftree,\n\t\t\t\t\t
      \  const struct isis_vertex *vertex_pq)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_lfa.c:1294,1
    - Dst: lfa_ext_p_space_check
      Src: /src/frr/isisd/isis_lfa.c:1298,1
    - Dst: lfa_q_space_check
      Src: /src/frr/isisd/isis_lfa.c:1299,1
    - Dst: rlfa_pq_node_rtr_id
      Src: /src/frr/isisd/isis_lfa.c:1306,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:1311,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1312,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:1314,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1322,1
    - Dst: prefix_list_apply
      Src: /src/frr/isisd/isis_lfa.c:1335,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1337,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1345,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:1351,1
    - Dst: rlfa_find_pq_node
      Src: /src/frr/isisd/isis_lfa.c:1354,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:1356,1
    - Dst: rlfa_cmp
      Src: /src/frr/isisd/isis_lfa.c:1363,1
    - Dst: prefix_cmp
      Src: /src/frr/isisd/isis_lfa.c:1365,1
    - Dst: rlfa_add
      Src: /src/frr/isisd/isis_lfa.c:1368,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1374,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:1374,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lfa.c:1375,1
    - Dst: rlfa_tree_add
      Src: /src/frr/isisd/isis_lfa.c:1379,1
    - Dst: rlfa_delete
      Src: /src/frr/isisd/isis_lfa.c:1384,1
    - Dst: rlfa_tree_del
      Src: /src/frr/isisd/isis_lfa.c:1386,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_lfa.c:1387,1
    - Dst: rlfa_lookup
      Src: /src/frr/isisd/isis_lfa.c:1390,1
    - Dst: rlfa_tree_find
      Src: /src/frr/isisd/isis_lfa.c:1396,1
    - Dst: isis_area_verify_routes_cb
      Src: /src/frr/isisd/isis_lfa.c:1399,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_lfa.c:1401,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1404,1
    - Dst: isis_area_verify_routes
      Src: /src/frr/isisd/isis_lfa.c:1406,1
    - Dst: rlfa_nexthop_label
      Src: /src/frr/isisd/isis_lfa.c:1409,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:1420,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/isisd/isis_lfa.c:1430,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/isisd/isis_lfa.c:1442,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 67
    argCount: 4
    argNames:
    - spftree_pc
    - vertex_dest
    - vertex
    - vertex_child
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    - struct isis_vertex*
    - struct isis_vertex*
    assertStmts:
    - condition: (VTYPE_IP(vertex->type))
      pos:
        line_end: 1373
        line_start: 1373
        source_file: /src/frr/isisd/isis_lfa.c
    constantsTouched: []
    func_position:
      end: 1457
      start: 1277
    functionDepth: 1
    functionLinenumber: 1277
    functionLinenumberEnd: 1457
    functionName: rlfa_find_pq_node
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - rlfa_tree_add
    - IPV4_ADDR_SAME
    - isis_area_verify_routes
    - rlfa_tree_del
    - rlfa_lookup
    - IPV6_ADDR_SAME
    - prefix_cmp
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - rlfa_pq_node_rtr_id
    - zlog_debug
    - rlfa_tree_find
    - VTYPE_IS
    - EVENT_ARG
    - if
    - lfa_ext_p_space_check
    - rlfa_cmp
    - assert
    - prefix_list_apply
    - rlfa_find_pq_node
    - XFREE
    - rlfa_delete
    - vtype2string
    - rlfa_nexthop_label
    - vid2string
    - VTYPE_IP
    - CHECK_FLAG
    - isis_area_verify_routes_cb
    - lfa_q_space_check
    - rlfa_add
    linkageType: ''
    returnType: struct in_addr
    signature: "struct in_addr *\nrlfa_find_pq_node(struct isis_spftree *spftree_pc,\n\t\t
      \ struct isis_vertex *vertex_dest,\n\t\t  const struct isis_vertex *vertex,\n\t\t
      \ const struct isis_vertex *vertex_child)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:1467,1
    - Dst: rlfa_nexthop_label
      Src: /src/frr/isisd/isis_lfa.c:1473,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1476,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lfa.c:1492,1
    - Dst: isis_route_create
      Src: /src/frr/isisd/isis_lfa.c:1511,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_lfa.c:1517,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lfa.c:1518,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - spftree
    - rlfa
    - response
    argTypes:
    - struct isis_spftree*
    - struct rlfa*
    - struct zapi_rlfa_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1459
    functionDepth: 1
    functionLinenumber: 1459
    functionLinenumberEnd: 1522
    functionName: isis_rlfa_activate
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - EVENT_OFF
    - event_add_timer
    - rlfa_nexthop_label
    - isis_route_create
    linkageType: ''
    returnType: int
    signature: "int isis_rlfa_activate(struct isis_spftree *spftree, struct rlfa *rlfa,\n\t\t
      \      struct zapi_rlfa_response *response)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/isisd/isis_lfa.c:1530,1
    - Dst: isis_route_delete
      Src: /src/frr/isisd/isis_lfa.c:1533,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_lfa.c:1536,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lfa.c:1537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - spftree
    - rlfa
    argTypes:
    - struct isis_spftree*
    - struct rlfa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1539
    functionName: isis_rlfa_deactivate
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    - route_node_lookup
    - isis_route_delete
    linkageType: ''
    returnType: void
    signature: void isis_rlfa_deactivate(struct isis_spftree *spftree, struct rlfa
      *rlfa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rlfa_tree_init
      Src: /src/frr/isisd/isis_lfa.c:1543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - spftree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1544
    functionName: isis_rlfa_list_init
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - rlfa_tree_init
    linkageType: ''
    returnType: void
    signature: void isis_rlfa_list_init(struct isis_spftree *spftree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rlfa_tree_count
      Src: /src/frr/isisd/isis_lfa.c:1548,1
    - Dst: rlfa_tree_first
      Src: /src/frr/isisd/isis_lfa.c:1551,1
    - Dst: isis_rlfa_deactivate
      Src: /src/frr/isisd/isis_lfa.c:1552,1
    - Dst: rlfa_delete
      Src: /src/frr/isisd/isis_lfa.c:1553,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - spftree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1546
    functionDepth: 2
    functionLinenumber: 1546
    functionLinenumberEnd: 1555
    functionName: isis_rlfa_list_clear
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 3
    functionsReached:
    - rlfa_delete
    - rlfa_tree_first
    - isis_rlfa_deactivate
    - rlfa_tree_count
    linkageType: ''
    returnType: void
    signature: void isis_rlfa_list_clear(struct isis_spftree *spftree)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_lfa.c:1570,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_lfa.c:1574,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:1581,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:1587,1
    - Dst: rlfa_lookup
      Src: /src/frr/isisd/isis_lfa.c:1597,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_lfa.c:1599,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1607,1
    - Dst: isis_rlfa_activate
      Src: /src/frr/isisd/isis_lfa.c:1611,1
    - Dst: isis_rlfa_deactivate
      Src: /src/frr/isisd/isis_lfa.c:1612,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1615,1
    - Dst: isis_rlfa_deactivate
      Src: /src/frr/isisd/isis_lfa.c:1618,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - response
    argTypes:
    - struct zapi_rlfa_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1557
    functionDepth: 2
    functionLinenumber: 1557
    functionLinenumberEnd: 1620
    functionName: isis_rlfa_process_ldp_response
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - rlfa_lookup
    - isis_area_lookup
    - isis_lookup_by_vrfid
    - zlog_warn
    - zlog_debug
    - isis_rlfa_activate
    - isis_rlfa_deactivate
    linkageType: ''
    returnType: void
    signature: void isis_rlfa_process_ldp_response(struct zapi_rlfa_response *response)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_lfa.c:1624,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1636,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:1638,1
    - Dst: isis_rlfa_list_clear
      Src: /src/frr/isisd/isis_lfa.c:1650,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct zapi_client_close_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1622
    functionDepth: 3
    functionLinenumber: 1622
    functionLinenumberEnd: 1654
    functionName: isis_ldp_rlfa_handle_client_close
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - isis_rlfa_list_clear
    - isis_lookup_by_vrfid
    linkageType: ''
    returnType: void
    signature: void isis_ldp_rlfa_handle_client_close(struct zapi_client_close_info
      *info)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lfa_check_needs_protection
      Src: /src/frr/isisd/isis_lfa.c:1671,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1673,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:1675,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:1676,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1677,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1684,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:1686,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:1687,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1688,1
    - Dst: rlfa_find_pq_node
      Src: /src/frr/isisd/isis_lfa.c:1692,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1695,1
    - Dst: rlfa_add
      Src: /src/frr/isisd/isis_lfa.c:1700,1
    - Dst: isis_zebra_rlfa_register
      Src: /src/frr/isisd/isis_lfa.c:1703,1
    - Dst: rlfa_delete
      Src: /src/frr/isisd/isis_lfa.c:1704,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - spftree_pc
    - vertex
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1663
    functionDepth: 3
    functionLinenumber: 1663
    functionLinenumberEnd: 1705
    functionName: isis_rlfa_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - vid2string
    - lfa_protected_resource2str
    - lfa_check_needs_protection
    - isis_zebra_rlfa_register
    - rlfa_find_pq_node
    - zlog_debug
    - rlfa_delete
    - rlfa_add
    - vtype2string
    linkageType: ''
    returnType: void
    signature: "void isis_rlfa_check(struct isis_spftree *spftree_pc,\n\t\t     struct
      isis_vertex *vertex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1727,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1728,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_lfa.c:1731,1
    - Dst: lfa_calc_pq_spaces
      Src: /src/frr/isisd/isis_lfa.c:1741,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1744,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:1746,1
    - Dst: isis_run_spf
      Src: /src/frr/isisd/isis_lfa.c:1749,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - area
    - spftree
    - spftree_reverse
    - max_metric
    - resource
    argTypes:
    - struct isis_area*
    - struct isis_spftree*
    - struct isis_spftree*
    - uint32_t
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1718
    functionDepth: 8
    functionLinenumber: 1718
    functionLinenumberEnd: 1752
    functionName: isis_rlfa_compute
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - isis_spftree_new
    - lfa_protected_resource2str
    - zlog_debug
    - isis_run_spf
    - lfa_calc_pq_spaces
    linkageType: ''
    returnType: struct isis_spftree
    signature: "struct isis_spftree *isis_rlfa_compute(struct isis_area *area,\n\t\t\t\t
      \      struct isis_spftree *spftree,\n\t\t\t\t       struct isis_spftree *spftree_reverse,\n\t\t\t\t
      \      uint32_t max_metric,\n\t\t\t\t       struct lfa_protected_resource *resource)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_lfa.c:1765,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_lfa.c:1778,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1795,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:1795,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:1796,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 3
    argNames:
    - spftree
    - vertex_N
    - distance
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    - uint32_t*
    assertStmts:
    - condition: (VTYPE_IP(vertex_best->type))
      pos:
        line_end: 1794
        line_start: 1794
        source_file: /src/frr/isisd/isis_lfa.c
    constantsTouched: []
    func_position:
      end: 1800
      start: 1755
    functionDepth: 1
    functionLinenumber: 1755
    functionLinenumberEnd: 1800
    functionName: lfa_calc_dist_destination
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - VTYPE_IP
    - listnode_head
    - assert
    - isis_find_vertex
    linkageType: ''
    returnType: int
    signature: "int lfa_calc_dist_destination(struct isis_spftree *spftree,\n\t\t\t\t
      \    const struct isis_vertex *vertex_N,\n\t\t\t\t     uint32_t *distance)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/isis_lfa.c:1810,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - spftree
    - sysid
    - distance
    argTypes:
    - struct isis_spftree*
    - uint8_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1825
      start: 1803
    functionDepth: 1
    functionLinenumber: 1803
    functionLinenumberEnd: 1825
    functionName: lfa_calc_dist_node
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - isis_find_vertex
    linkageType: ''
    returnType: int
    signature: "int lfa_calc_dist_node(struct isis_spftree *spftree,\n\t\t\t      const
      uint8_t *sysid, uint32_t *distance)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1842,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1843,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1846,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:1852,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:1855,1
    - Dst: lfa_calc_dist_node
      Src: /src/frr/isisd/isis_lfa.c:1856,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:1862,1
    - Dst: lfa_calc_dist_node
      Src: /src/frr/isisd/isis_lfa.c:1864,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:1871,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:1873,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1877,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 5
    argNames:
    - spftree
    - vertex_S_D
    - sadj_primary
    - sadj_N
    - path_metric
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    - struct isis_spf_adj*
    - struct isis_spf_adj*
    - uint32_t*
    assertStmts:
    - condition: (node_N)
      pos:
        line_end: 1842
        line_start: 1842
        source_file: /src/frr/isisd/isis_lfa.c
    constantsTouched: []
    func_position:
      end: 1886
      start: 1831
    functionDepth: 2
    functionLinenumber: 1831
    functionLinenumberEnd: 1886
    functionName: clfa_loop_free_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - assert
    - lfa_calc_dist_node
    - CHECK_FLAG
    - zlog_debug
    - listnode_head
    - lfa_calc_dist_destination
    - memcpy
    - isis_spf_node_find
    linkageType: ''
    returnType: bool
    signature: "bool clfa_loop_free_check(struct isis_spftree *spftree,\n\t\t\t\t
      struct isis_vertex *vertex_S_D,\n\t\t\t\t struct isis_spf_adj *sadj_primary,\n\t\t\t\t
      struct isis_spf_adj *sadj_N,\n\t\t\t\t uint32_t *path_metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1863
    functionDepth: 0
    functionLinenumber: 1863
    functionLinenumberEnd: 1863
    functionName: LSP_PSEUDO_ID
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_PSEUDO_ID(root_sysid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1900,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1901,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1904,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:1910,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1914,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - spftree
    - vertex_S_D
    - sadj_N
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    - struct isis_spf_adj*
    assertStmts:
    - condition: (node_N)
      pos:
        line_end: 1900
        line_start: 1900
        source_file: /src/frr/isisd/isis_lfa.c
    constantsTouched: []
    func_position:
      end: 1921
      start: 1892
    functionDepth: 2
    functionLinenumber: 1892
    functionLinenumberEnd: 1921
    functionName: clfa_downstream_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - listnode_head
    - lfa_calc_dist_destination
    - assert
    - isis_spf_node_find
    linkageType: ''
    returnType: bool
    signature: "bool clfa_downstream_check(struct isis_spftree *spftree,\n\t\t\t\t
      \ struct isis_vertex *vertex_S_D,\n\t\t\t\t  struct isis_spf_adj *sadj_N)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1937,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1938,1
    - Dst: isis_spf_node_find
      Src: /src/frr/isisd/isis_lfa.c:1939,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lfa.c:1940,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1943,1
    - Dst: lfa_calc_dist_node
      Src: /src/frr/isisd/isis_lfa.c:1949,1
    - Dst: lfa_calc_dist_destination
      Src: /src/frr/isisd/isis_lfa.c:1954,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:1960,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - spftree
    - vertex_S_D
    - sadj_N
    - sadj_E
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    - struct isis_spf_adj*
    - struct isis_spf_adj*
    assertStmts:
    - condition: (node_N)
      pos:
        line_end: 1937
        line_start: 1937
        source_file: /src/frr/isisd/isis_lfa.c
    - condition: (node_E)
      pos:
        line_end: 1939
        line_start: 1939
        source_file: /src/frr/isisd/isis_lfa.c
    constantsTouched: []
    func_position:
      end: 1964
      start: 1927
    functionDepth: 2
    functionLinenumber: 1927
    functionLinenumberEnd: 1964
    functionName: clfa_node_protecting_check
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - lfa_calc_dist_node
    - zlog_debug
    - lfa_calc_dist_destination
    - assert
    - isis_spf_node_find
    linkageType: ''
    returnType: bool
    signature: "bool clfa_node_protecting_check(struct isis_spftree *spftree,\n\t\t\t\t
      \      struct isis_vertex *vertex_S_D,\n\t\t\t\t       struct isis_spf_adj *sadj_N,\n\t\t\t\t
      \      struct isis_spf_adj *sadj_E)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: list_dup
      Src: /src/frr/isisd/isis_lfa.c:1977,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:1980,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_lfa.c:1984,1
    - Dst: list_dup
      Src: /src/frr/isisd/isis_lfa.c:1990,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_lfa.c:1994,1
    - Dst: clfa_downstream_check
      Src: /src/frr/isisd/isis_lfa.c:1996,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2000,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2001,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2003,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lfa.c:2005,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2010,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_lfa.c:2016,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2022,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2024,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lfa.c:2026,1
    - Dst: LFA_TIEBREAKER_NODE_PROTECTING
      Src: /src/frr/isisd/isis_lfa.c:2029,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_lfa.c:2030,1
    - Dst: clfa_node_protecting_check
      Src: /src/frr/isisd/isis_lfa.c:2032,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2038,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2040,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lfa.c:2042,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_lfa.c:2050,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2056,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2060,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2068,1
    - Dst: isis_lfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2077,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2088,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:2089,1
    - Dst: ALL_QUEUE_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2091,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2101,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_lfa.c:2101,1
    - Dst: vid2string
      Src: /src/frr/isisd/isis_lfa.c:2104,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2106,1
    - Dst: spf_vertex_check_is_affected
      Src: /src/frr/isisd/isis_lfa.c:2106,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2109,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:2111,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:2112,1
    - Dst: continue
      Src: /src/frr/isisd/isis_lfa.c:2113,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2117,1
    - Dst: vtype2string
      Src: /src/frr/isisd/isis_lfa.c:2118,1
    - Dst: lfa_protected_resource2str
      Src: /src/frr/isisd/isis_lfa.c:2119,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2124,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:2129,1
    - Dst: listnode_head
      Src: /src/frr/isisd/isis_lfa.c:2132,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_lfa.c:2139,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2141,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_lfa.c:2155,1
    - Dst: isis_tlvs_lookup_mt_router_info
      Src: /src/frr/isisd/isis_lfa.c:2164,1
    - Dst: ISIS_MASK_LSP_OL_BIT
      Src: /src/frr/isisd/isis_lfa.c:2169,1
    - Dst: spf_adj_check_is_affected
      Src: /src/frr/isisd/isis_lfa.c:2174,1
    - Dst: isis_lfa_excluded_iface_check
      Src: /src/frr/isisd/isis_lfa.c:2180,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2186,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2188,1
    - Dst: clfa_loop_free_check
      Src: /src/frr/isisd/isis_lfa.c:2191,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2194,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2196,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2205,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_lfa.c:2207,1
    - Dst: isis_vertex_adj_add
      Src: /src/frr/isisd/isis_lfa.c:2214,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_lfa.c:2219,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lfa.c:2221,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2223,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_lfa.c:2227,1
    - Dst: isis_lfa_tiebreakers
      Src: /src/frr/isisd/isis_lfa.c:2231,1
    - Dst: isis_route_create
      Src: /src/frr/isisd/isis_lfa.c:2236,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2243,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lfa.c:2244,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 71
    argCount: 6
    argNames:
    - area
    - spftree
    - resource
    - vertex
    - sadj_primary
    - lfa_list
    argTypes:
    - struct isis_area*
    - struct isis_spftree*
    - struct lfa_protected_resource*
    - struct isis_vertex*
    - struct isis_spf_adj*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 1966
    functionDepth: 3
    functionLinenumber: 1966
    functionLinenumberEnd: 2246
    functionName: isis_lfa_tiebreakers
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 2
    functionsReached:
    - ALL_QUEUE_ELEMENTS_RO
    - ALL_LIST_ELEMENTS
    - list_delete
    - ISIS_MASK_LSP_OL_BIT
    - frr_each
    - continue
    - isis_lfa_tiebreakers
    - LFA_TIEBREAKER_NODE_PROTECTING
    - isis_route_create
    - list_dup
    - lfa_protected_resource2str
    - ALL_LIST_ELEMENTS_RO
    - isis_vertex_adj_add
    - isis_tlvs_lookup_mt_router_info
    - zlog_debug
    - if
    - isis_lfa_compute
    - clfa_node_protecting_check
    - print_sys_hostname
    - listcount
    - spf_adj_check_is_affected
    - clfa_loop_free_check
    - listnode_head
    - listnode_delete
    - vtype2string
    - vid2string
    - isis_lfa_excluded_iface_check
    - VTYPE_IP
    - CHECK_FLAG
    - list_isempty
    - SET_FLAG
    - list_new
    - clfa_downstream_check
    - spf_vertex_check_is_affected
    linkageType: ''
    returnType: struct list
    signature: "struct list *\nisis_lfa_tiebreakers(struct isis_area *area, struct
      isis_spftree *spftree,\n\t\t     struct lfa_protected_resource *resource,\n\t\t
      \    struct isis_vertex *vertex,\n\t\t     struct isis_spf_adj *sadj_primary,
      struct list *lfa_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_tilfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2260,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_lfa.c:2262,1
    - Dst: isis_tilfa_compute
      Src: /src/frr/isisd/isis_lfa.c:2273,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_lfa.c:2274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - area
    - circuit
    - spftree
    - spftree_reverse
    - resource
    argTypes:
    - struct isis_area*
    - struct isis_circuit*
    - struct isis_spftree*
    - struct isis_spftree*
    - struct lfa_protected_resource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2275
      start: 2248
    functionDepth: 9
    functionLinenumber: 2248
    functionLinenumberEnd: 2275
    functionName: isis_spf_run_tilfa
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - isis_tilfa_compute
    - isis_spftree_del
    linkageType: ''
    returnType: void
    signature: "void isis_spf_run_tilfa(struct isis_area *area,\n\t\t\t       struct
      isis_circuit *circuit,\n\t\t\t       struct isis_spftree *spftree,\n\t\t\t       struct
      isis_spftree *spftree_reverse,\n\t\t\t       struct lfa_protected_resource *resource)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isis_spf_reverse_run
      Src: /src/frr/isisd/isis_lfa.c:2293,1
    - Dst: isis_spf_run_neighbors
      Src: /src/frr/isisd/isis_lfa.c:2296,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lfa.c:2299,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2304,1
    - Dst: if
      Src: /src/frr/isisd/isis_lfa.c:2307,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lfa.c:2323,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lfa.c:2331,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lfa.c:2332,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 2
    argNames:
    - area
    - spftree
    argTypes:
    - struct isis_area*
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2283
    functionDepth: 7
    functionLinenumber: 2283
    functionLinenumberEnd: 2336
    functionName: isis_spf_run_lfa
    functionSourceFile: /src/frr/isisd/isis_lfa.c
    functionUses: 1
    functionsReached:
    - LSP_PSEUDO_ID
    - ALL_LIST_ELEMENTS_RO
    - isis_spf_reverse_run
    - memcmp
    - if
    - isis_spf_run_neighbors
    - memcpy
    linkageType: ''
    returnType: void
    signature: void isis_spf_run_lfa(struct isis_area *area, struct isis_spftree *spftree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_flex_algo.c:48,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/isis_flex_algo.c:54,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - voidarg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 62
    functionName: isis_flex_algo_data_alloc
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 0
    functionsReached:
    - isis_spftree_new
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *isis_flex_algo_data_alloc(void *voidarg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/isis_flex_algo.c:71,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_flex_algo.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - voiddata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 74
    functionName: isis_flex_algo_data_free
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 0
    functionsReached:
    - isis_spftree_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void isis_flex_algo_data_free(void *voiddata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsp_id_cmp
      Src: /src/frr/isisd/isis_flex_algo.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 2
    argNames:
    - elected
    - fa
    argTypes:
    - struct isis_router_cap_fad*
    - struct isis_router_cap_fad*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 86
    functionName: isis_flex_algo_definition_cmp
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 0
    functionsReached:
    - lsp_id_cmp
    linkageType: ''
    returnType: struct isis_router_cap_fad
    signature: "struct isis_router_cap_fad *\nisis_flex_algo_definition_cmp(struct
      isis_router_cap_fad *elected,\n\t\t\t      struct isis_router_cap_fad *fa)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_flex_algo.c:111,1
    - Dst: flex_algo_lookup
      Src: /src/frr/isisd/isis_flex_algo.c:115,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_flex_algo.c:123,1
    - Dst: frr_each_const
      Src: /src/frr/isisd/isis_flex_algo.c:131,1
    - Dst: assert
      Src: /src/frr/isisd/isis_flex_algo.c:145,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_flex_algo.c:147,1
    - Dst: isis_flex_algo_definition_cmp
      Src: /src/frr/isisd/isis_flex_algo.c:149,1
    - Dst: isis_flex_algo_definition_cmp
      Src: /src/frr/isisd/isis_flex_algo.c:153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 3
    argNames:
    - algorithm
    - area
    - fad
    argTypes:
    - int
    - struct isis_area*
    - struct isis_router_cap_fad**
    assertStmts:
    - condition: (algorithm == fa->fad.algorithm)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/frr/isisd/isis_flex_algo.c
    constantsTouched: []
    func_position:
      end: 156
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 156
    functionName: _isis_flex_algo_elected
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - frr_each_const
    - flex_algo_lookup
    - flex_algo_id_valid
    - memcpy
    - isis_flex_algo_definition_cmp
    - assert
    linkageType: ''
    returnType: struct isis_router_cap_fad
    signature: "struct isis_router_cap_fad *\n_isis_flex_algo_elected(int algorithm,
      const struct isis_area *area,\n\t\t\tstruct isis_router_cap_fad **fad)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _isis_flex_algo_elected
      Src: /src/frr/isisd/isis_flex_algo.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - algorithm
    - area
    argTypes:
    - int
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: isis_flex_algo_elected
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 1
    functionsReached:
    - _isis_flex_algo_elected
    linkageType: ''
    returnType: struct isis_router_cap_fad
    signature: "struct isis_router_cap_fad *isis_flex_algo_elected(int algorithm,\n\t\t\t\t\t\t
      \  const struct isis_area *area)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - fad
    argTypes:
    - struct flex_algo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 183
    functionName: isis_flex_algo_supported
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isis_flex_algo_supported(struct flex_algo *fad)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _isis_flex_algo_elected
      Src: /src/frr/isisd/isis_flex_algo.c:199,1
    - Dst: isis_flex_algo_supported
      Src: /src/frr/isisd/isis_flex_algo.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - algorithm
    - area
    - fad
    argTypes:
    - int
    - struct isis_area*
    - struct isis_router_cap_fad**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 207
    functionName: _isis_flex_algo_elected_supported
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 0
    functionsReached:
    - _isis_flex_algo_elected
    - isis_flex_algo_supported
    linkageType: ''
    returnType: struct isis_router_cap_fad
    signature: "struct isis_router_cap_fad *\n_isis_flex_algo_elected_supported(int
      algorithm, const struct isis_area *area,\n\t\t\t\t  struct isis_router_cap_fad
      **fad)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_flex_algo.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - algorithm
    - area
    argTypes:
    - int
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 4
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: isis_flex_algo_elected_supported
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 4
    functionsReached:
    - _isis_flex_algo_elected_supported
    linkageType: ''
    returnType: struct isis_router_cap_fad
    signature: 'struct isis_router_cap_fad *

      isis_flex_algo_elected_supported(int algorithm, const struct isis_area *area)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_flex_algo.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - algorithm
    - area
    - fad
    argTypes:
    - int
    - struct isis_area*
    - struct isis_router_cap_fad**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 215
    functionDepth: 4
    functionLinenumber: 215
    functionLinenumberEnd: 221
    functionName: isis_flex_algo_elected_supported_local_fad
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 0
    functionsReached:
    - _isis_flex_algo_elected_supported
    linkageType: ''
    returnType: struct isis_router_cap_fad
    signature: "struct isis_router_cap_fad *\nisis_flex_algo_elected_supported_local_fad(int
      algorithm,\n\t\t\t\t\t   const struct isis_area *area,\n\t\t\t\t\t   struct
      isis_router_cap_fad **fad)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - lsp
    - algorithm
    argTypes:
    - struct isis_lsp*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 239
    functionName: sr_algorithm_participated
    functionSourceFile: /src/frr/isisd/isis_flex_algo.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool sr_algorithm_participated(const struct isis_lsp *lsp, uint8_t
      algorithm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_bfd.c:30,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_bfd.c:32,1
    - Dst: bfd_get_status_str
      Src: /src/frr/isisd/isis_bfd.c:33,1
    - Dst: bfd_get_status_str
      Src: /src/frr/isisd/isis_bfd.c:34,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_bfd.c:39,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - bsp
    - bss
    - arg
    argTypes:
    - struct bfd_session_params*
    - struct bfd_session_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 42
    functionName: adj_bfd_cb
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - isis_adj_state_change
    - isis_adj_name
    - bfd_get_status_str
    linkageType: ''
    returnType: void
    signature: "void adj_bfd_cb(struct bfd_session_params *bsp,\n\t\t       const
      struct bfd_session_status *bss, void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_free
      Src: /src/frr/isisd/isis_bfd.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: bfd_handle_adj_down
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: void bfd_handle_adj_down(struct isis_adjacency *adj)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_bfd.c:60,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_bfd.c:62,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_bfd.c:70,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_bfd.c:73,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_bfd.c:75,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_bfd.c:87,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_bfd.c:89,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_bfd.c:93,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_bfd.c:93,1
    - Dst: fabricd_ip_addrs
      Src: /src/frr/isisd/isis_bfd.c:98,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_bfd.c:99,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_bfd.c:101,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_bfd.c:105,1
    - Dst: listhead
      Src: /src/frr/isisd/isis_bfd.c:105,1
    - Dst: bfd_sess_new
      Src: /src/frr/isisd/isis_bfd.c:111,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/isisd/isis_bfd.c:113,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/isisd/isis_bfd.c:116,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/isisd/isis_bfd.c:119,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/isisd/isis_bfd.c:121,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/isisd/isis_bfd.c:122,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/isisd/isis_bfd.c:124,1
    - Dst: bfd_sess_install
      Src: /src/frr/isisd/isis_bfd.c:125,1
    - Dst: bfd_handle_adj_down
      Src: /src/frr/isisd/isis_bfd.c:128,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 54
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 129
    functionName: bfd_handle_adj_up
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_sess_set_profile
    - bfd_handle_adj_down
    - bfd_sess_set_vrf
    - bfd_sess_new
    - bfd_sess_install
    - list_isempty
    - listcount
    - listhead
    - bfd_sess_set_ipv4_addrs
    - zlog_debug
    - bfd_sess_set_timers
    - listgetdata
    - fabricd_ip_addrs
    - bfd_sess_set_interface
    - isis_adj_name
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: void bfd_handle_adj_up(struct isis_adjacency *adj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_handle_adj_up
      Src: /src/frr/isisd/isis_bfd.c:134,1
    - Dst: bfd_handle_adj_down
      Src: /src/frr/isisd/isis_bfd.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 138
    functionName: bfd_handle_adj_state_change
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_handle_adj_down
    - bfd_handle_adj_up
    linkageType: ''
    returnType: int
    signature: int bfd_handle_adj_state_change(struct isis_adjacency *adj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_handle_adj_up
      Src: /src/frr/isisd/isis_bfd.c:143,1
    - Dst: bfd_handle_adj_down
      Src: /src/frr/isisd/isis_bfd.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: bfd_adj_cmd
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_handle_adj_down
    - bfd_handle_adj_up
    linkageType: ''
    returnType: void
    signature: void bfd_adj_cmd(struct isis_adjacency *adj)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_bfd.c:160,1
    - Dst: bfd_adj_cmd
      Src: /src/frr/isisd/isis_bfd.c:161,1
    - Dst: bfd_adj_cmd
      Src: /src/frr/isisd/isis_bfd.c:166,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 148
    functionDepth: 4
    functionLinenumber: 148
    functionLinenumberEnd: 171
    functionName: isis_bfd_circuit_cmd
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_adj_cmd
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: void isis_bfd_circuit_cmd(struct isis_circuit *circuit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bfd_handle_adj_up
      Src: /src/frr/isisd/isis_bfd.c:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - adj
    - family
    - global
    argTypes:
    - struct isis_adjacency*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 173
    functionDepth: 3
    functionLinenumber: 173
    functionLinenumberEnd: 189
    functionName: bfd_handle_adj_ip_enabled
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_handle_adj_up
    linkageType: ''
    returnType: int
    signature: "int bfd_handle_adj_ip_enabled(struct isis_adjacency *adj, int family,\n\t\t\t\t
      \    bool global)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_bfd.c:199,1
    - Dst: bfd_handle_adj_up
      Src: /src/frr/isisd/isis_bfd.c:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 210
    functionName: bfd_handle_circuit_add_addr
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - bfd_handle_adj_up
    linkageType: ''
    returnType: int
    signature: int bfd_handle_circuit_add_addr(struct isis_circuit *circuit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_init
      Src: /src/frr/isisd/isis_bfd.c:214,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_bfd.c:216,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_bfd.c:217,1
    - Dst: hook_register
      Src: /src/frr/isisd/isis_bfd.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 219
    functionName: isis_bfd_init
    functionSourceFile: /src/frr/isisd/isis_bfd.c
    functionUses: 0
    functionsReached:
    - hook_register
    - bfd_protocol_integration_init
    linkageType: ''
    returnType: void
    signature: void isis_bfd_init(struct event_loop *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_route.c:67,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_route.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct mpls_label_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 72
    functionName: label_stack_dup
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct mpls_label_stack
    signature: 'struct mpls_label_stack *

      label_stack_dup(const struct mpls_label_stack *const orig)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_route.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - family
    - ip
    - ifindex
    argTypes:
    - int
    - union g_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 86
    functionName: isis_nexthop_create
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_nexthop
    signature: 'struct isis_nexthop *

      isis_nexthop_create(int family, const union g_addr *const ip, ifindex_t ifindex)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_nexthop_create
      Src: /src/frr/isisd/isis_route.c:93,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_route.c:94,1
    - Dst: label_stack_dup
      Src: /src/frr/isisd/isis_route.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct isis_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 99
    functionName: isis_nexthop_dup
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - label_stack_dup
    - memcpy
    - isis_nexthop_create
    linkageType: ''
    returnType: struct isis_nexthop
    signature: 'struct isis_nexthop *

      isis_nexthop_dup(const struct isis_nexthop *const orig)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_route.c:103,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_route.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct isis_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: isis_nexthop_delete
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void isis_nexthop_delete(struct isis_nexthop *nexthop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/isisd/isis_route.c:114,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_route.c:115,1
    - Dst: isis_nexthop_dup
      Src: /src/frr/isisd/isis_route.c:116,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_route.c:117,1
    - Dst: for
      Src: /src/frr/isisd/isis_route.c:128,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_route.c:128,1
    - Dst: if
      Src: /src/frr/isisd/isis_route.c:135,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/isisd/isis_route.c:143,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/isisd/isis_route.c:147,1
    - Dst: exit
      Src: /src/frr/isisd/isis_route.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 155
    functionName: isis_nexthop_list_dup
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - exit
    - IPV6_ADDR_CMP
    - ALL_LIST_ELEMENTS_RO
    - IPV4_ADDR_CMP
    - listnode_add
    - list_new
    - if
    - for
    - isis_nexthop_dup
    linkageType: ''
    returnType: struct list
    signature: struct list *isis_nexthop_list_dup(const struct list *orig)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nexthoplookup
      Src: /src/frr/isisd/isis_route.c:175,1
    - Dst: isis_nexthop_create
      Src: /src/frr/isisd/isis_route.c:177,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_route.c:180,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_route.c:184,1
    - Dst: nexthoplookup
      Src: /src/frr/isisd/isis_route.c:193,1
    - Dst: isis_nexthop_create
      Src: /src/frr/isisd/isis_route.c:195,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_route.c:198,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_route.c:202,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_route.c:208,1
    - Dst: exit
      Src: /src/frr/isisd/isis_route.c:210,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 5
    argNames:
    - family
    - nexthops
    - adj
    - sr
    - label_stack
    argTypes:
    - int
    - struct list*
    - struct isis_adjacency*
    - struct isis_sr_psid_info*
    - struct mpls_label_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 212
    functionName: adjinfo2nexthop
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 2
    functionsReached:
    - exit
    - listnode_add
    - nexthoplookup
    - flog_err
    - isis_nexthop_create
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void adjinfo2nexthop(int family, struct list *nexthops,\n\t\t     struct
      isis_adjacency *adj, struct isis_sr_psid_info *sr,\n\t\t     struct mpls_label_stack
      *label_stack)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_route.c:221,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_route.c:222,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_route.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - rinfo
    - sysid
    - sr
    - label_stack
    argTypes:
    - struct isis_route_info*
    - uint8_t*
    - struct isis_sr_psid_info*
    - struct mpls_label_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 226
    functionName: isis_route_add_dummy_nexthops
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - listnode_add
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void isis_route_add_dummy_nexthops(struct isis_route_info *rinfo,\n\t\t\t\t\t
      \ const uint8_t *sysid,\n\t\t\t\t\t  struct isis_sr_psid_info *sr,\n\t\t\t\t\t
      \ struct mpls_label_stack *label_stack)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_route.c:237,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_route.c:239,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_route.c:240,1
    - Dst: if
      Src: /src/frr/isisd/isis_route.c:253,1
    - Dst: continue
      Src: /src/frr/isisd/isis_route.c:255,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:259,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_route.c:276,1
    - Dst: exit
      Src: /src/frr/isisd/isis_route.c:279,1
    - Dst: adjinfo2nexthop
      Src: /src/frr/isisd/isis_route.c:281,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 7
    argNames:
    - prefix
    - src_p
    - cost
    - depth
    - sr
    - adjacencies
    - allow_ecmp
    argTypes:
    - struct prefix*
    - struct prefix_ipv6*
    - uint32_t
    - uint32_t
    - struct isis_sr_psid_info*
    - struct list*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 285
    functionName: isis_route_info_new
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - exit
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - flog_err
    - list_new
    - continue
    - if
    - adjinfo2nexthop
    linkageType: ''
    returnType: struct isis_route_info
    signature: "struct isis_route_info *\nisis_route_info_new(struct prefix *prefix,
      struct prefix_ipv6 *src_p,\n\t\t    uint32_t cost, uint32_t depth, struct isis_sr_psid_info
      *sr,\n\t\t    struct list *adjacencies, bool allow_ecmp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/isisd/isis_route.c:308,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_route.c:314,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_route.c:317,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - route_info
    argTypes:
    - struct isis_route_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 318
    functionName: isis_route_info_delete
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void isis_route_info_delete(struct isis_route_info *route_info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_route_info_delete
      Src: /src/frr/isisd/isis_route.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 324
    functionName: isis_route_node_cleanup
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - isis_route_info_delete
    linkageType: ''
    returnType: void
    signature: void isis_route_node_cleanup(struct route_table *table, struct route_node
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_route.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - algorithm
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 333
    functionName: isis_route_table_info_alloc
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_route_table_info
    signature: struct isis_route_table_info *isis_route_table_info_alloc(uint8_t algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_route.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - info
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: isis_route_table_info_free
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void isis_route_table_info_free(void *info)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: isis_route_table_algorithm
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t isis_route_table_algorithm(const struct route_table *table)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: present::present
      Src: /src/frr/isisd/isis_route.c:350,1
    - Dst: label::label
      Src: /src/frr/isisd/isis_route.c:353,1
    - Dst: sid::sid
      Src: /src/frr/isisd/isis_route.c:356,1
    - Dst: sid::sid
      Src: /src/frr/isisd/isis_route.c:357,1
    - Dst: sid::sid
      Src: /src/frr/isisd/isis_route.c:360,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - new
    - old
    argTypes:
    - struct isis_sr_psid_info*
    - struct isis_sr_psid_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 364
    functionName: isis_sr_psid_info_same
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - sid::sid
    - present::present
    - label::label
    linkageType: ''
    returnType: bool
    signature: "bool isis_sr_psid_info_same(struct isis_sr_psid_info *new,\n\t\t\t\t
      \  struct isis_sr_psid_info *old)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: num_labels::num_labels
      Src: /src/frr/isisd/isis_route.c:373,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_route.c:375,1
    - Dst: label::label
      Src: /src/frr/isisd/isis_route.c:375,1
    - Dst: num_labels::num_labels
      Src: /src/frr/isisd/isis_route.c:376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - new
    - old
    argTypes:
    - struct mpls_label_stack*
    - struct mpls_label_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 380
    functionName: isis_label_stack_same
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - num_labels::num_labels
    - label::label
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool isis_label_stack_same(struct mpls_label_stack *new,\n\t\t\t\t
      \ struct mpls_label_stack *old)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: cost::cost
      Src: /src/frr/isisd/isis_route.c:389,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:391,1
    - Dst: cost::cost
      Src: /src/frr/isisd/isis_route.c:392,1
    - Dst: depth::depth
      Src: /src/frr/isisd/isis_route.c:396,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:398,1
    - Dst: depth::depth
      Src: /src/frr/isisd/isis_route.c:399,1
    - Dst: sr_algo::sr_algo
      Src: /src/frr/isisd/isis_route.c:407,1
    - Dst: isis_sr_psid_info_same
      Src: /src/frr/isisd/isis_route.c:410,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:412,1
    - Dst: nexthops::nexthops
      Src: /src/frr/isisd/isis_route.c:421,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:423,1
    - Dst: nexthops::nexthops
      Src: /src/frr/isisd/isis_route.c:424,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_route.c:428,1
    - Dst: nexthops::nexthops
      Src: /src/frr/isisd/isis_route.c:428,1
    - Dst: nexthoplookup
      Src: /src/frr/isisd/isis_route.c:429,1
    - Dst: if
      Src: /src/frr/isisd/isis_route.c:431,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:433,1
    - Dst: return
      Src: /src/frr/isisd/isis_route.c:435,1
    - Dst: isis_sr_psid_info_same
      Src: /src/frr/isisd/isis_route.c:437,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:439,1
    - Dst: isis_label_stack_same
      Src: /src/frr/isisd/isis_route.c:442,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:445,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:452,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_route.c:454,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - new
    - old
    - buf
    - buf_size
    argTypes:
    - struct isis_route_info*
    - struct isis_route_info*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 459
    functionName: isis_route_info_same
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - cost::cost
    - snprintf
    - sr_algo::sr_algo
    - nexthops::nexthops
    - isis_sr_psid_info_same
    - ALL_LIST_ELEMENTS_RO
    - return
    - CHECK_FLAG
    - nexthoplookup
    - depth::depth
    - isis_label_stack_same
    - if
    linkageType: ''
    returnType: int
    signature: "int isis_route_info_same(struct isis_route_info *new,\n\t\t\t\tstruct
      isis_route_info *old, char *buf,\n\t\t\t\tsize_t buf_size)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isis_route_info_new
      Src: /src/frr/isisd/isis_route.c:474,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/isisd/isis_route.c:476,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:481,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:484,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_route.c:486,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:489,1
    - Dst: isis_route_info_same
      Src: /src/frr/isisd/isis_route.c:492,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:496,1
    - Dst: isis_route_info_delete
      Src: /src/frr/isisd/isis_route.c:500,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:504,1
    - Dst: isis_route_info_delete
      Src: /src/frr/isisd/isis_route.c:510,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:512,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_route.c:517,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 9
    argNames:
    - prefix
    - src_p
    - cost
    - depth
    - sr
    - adjacencies
    - allow_ecmp
    - area
    - table
    argTypes:
    - struct prefix*
    - struct prefix_ipv6*
    - uint32_t
    - uint32_t
    - struct isis_sr_psid_info*
    - struct list*
    - bool
    - struct isis_area*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 521
    functionName: isis_route_create
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 4
    functionsReached:
    - route_unlock_node
    - isis_route_info_new
    - isis_route_info_delete
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - isis_route_info_same
    - srcdest_rnode_get
    linkageType: ''
    returnType: struct isis_route_info
    signature: "struct isis_route_info *\nisis_route_create(struct prefix *prefix,
      struct prefix_ipv6 *src_p,\n\t\t  uint32_t cost, uint32_t depth, struct isis_sr_psid_info
      *sr,\n\t\t  struct list *adjacencies, bool allow_ecmp,\n\t\t  struct isis_area
      *area, struct route_table *table)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode2str
      Src: /src/frr/isisd/isis_route.c:532,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/isisd/isis_route.c:534,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:540,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:546,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:547,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:549,1
    - Dst: isis_route_update
      Src: /src/frr/isisd/isis_route.c:550,1
    - Dst: isis_route_info_delete
      Src: /src/frr/isisd/isis_route.c:552,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_route.c:554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - area
    - rode
    - table
    argTypes:
    - struct isis_area*
    - struct route_node*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 555
    functionName: isis_route_delete
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - srcdest_rnode2str
    - isis_route_info_delete
    - CHECK_FLAG
    - zlog_debug
    - UNSET_FLAG
    - srcdest_rnode_prefixes
    - isis_route_update
    linkageType: ''
    returnType: void
    signature: "void isis_route_delete(struct isis_area *area, struct route_node *rode,\n\t\t
      \      struct route_table *table)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_zebra_prefix_sid_uninstall
      Src: /src/frr/isisd/isis_route.c:570,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - area
    - prefix
    - route_info
    argTypes:
    - struct isis_area*
    - struct prefix*
    - struct isis_route_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 574
    functionName: isis_route_remove_previous_sid
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - isis_zebra_prefix_sid_uninstall
    linkageType: ''
    returnType: void
    signature: "void isis_route_remove_previous_sid(struct isis_area *area,\n\t\t\t\t\t
      \  struct prefix *prefix,\n\t\t\t\t\t   struct isis_route_info *route_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_route.c:581,1
    - Dst: assert
      Src: /src/frr/isisd/isis_route.c:582,1
    - Dst: assert
      Src: /src/frr/isisd/isis_route.c:583,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_route.c:590,1
    - Dst: isis_nexthop_list_dup
      Src: /src/frr/isisd/isis_route.c:594,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:599,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:600,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - mrinfo
    - rinfo
    argTypes:
    - struct isis_route_info*
    - struct isis_route_info*
    assertStmts:
    - condition: (i == rinfo->sr_algo[i].algorithm)
      pos:
        line_end: 580
        line_start: 580
        source_file: /src/frr/isisd/isis_route.c
    - condition: (rinfo->nexthops)
      pos:
        line_end: 581
        line_start: 581
        source_file: /src/frr/isisd/isis_route.c
    - condition: "(rinfo->backup ? rinfo->backup->nexthops != NULL\n\t\t\t\t\t     :
        true)"
      pos:
        line_end: 583
        line_start: 582
        source_file: /src/frr/isisd/isis_route.c
    constantsTouched: []
    func_position:
      end: 601
      start: 576
    functionDepth: 3
    functionLinenumber: 576
    functionLinenumberEnd: 601
    functionName: set_merge_route_info_sr_algo
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - isis_nexthop_list_dup
    - list_delete
    - assert
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: "void set_merge_route_info_sr_algo(struct isis_route_info *mrinfo,\n\t\t\t\t\t
      struct isis_route_info *rinfo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:610,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:611,1
    - Dst: isis_route_remove_previous_sid
      Src: /src/frr/isisd/isis_route.c:614,1
    - Dst: isis_zebra_route_add_route
      Src: /src/frr/isisd/isis_route.c:617,1
    - Dst: isis_zebra_prefix_sid_install
      Src: /src/frr/isisd/isis_route.c:629,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_route.c:632,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_route.c:636,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_route.c:638,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:639,1
    - Dst: isis_zebra_prefix_sid_uninstall
      Src: /src/frr/isisd/isis_route.c:644,1
    - Dst: isis_zebra_route_del_route
      Src: /src/frr/isisd/isis_route.c:649,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_route.c:651,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:653,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - area
    - prefix
    - src_p
    - route_info
    argTypes:
    - struct isis_area*
    - struct prefix*
    - struct prefix_ipv6*
    - struct isis_route_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 655
    functionName: isis_route_update
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 1
    functionsReached:
    - isis_route_remove_previous_sid
    - hook_call
    - CHECK_FLAG
    - isis_zebra_route_del_route
    - SET_FLAG
    - UNSET_FLAG
    - isis_zebra_route_add_route
    - isis_zebra_prefix_sid_install
    - isis_zebra_prefix_sid_uninstall
    linkageType: ''
    returnType: void
    signature: "void isis_route_update(struct isis_area *area, struct prefix *prefix,\n\t\t\t
      \     struct prefix_ipv6 *src_p,\n\t\t\t      struct isis_route_info *route_info)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: isis_route_table_algorithm
      Src: /src/frr/isisd/isis_route.c:667,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_route.c:669,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_route.c:670,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/isisd/isis_route.c:678,1
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/isisd/isis_route.c:686,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:692,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:698,1
    - Dst: srcdest2str
      Src: /src/frr/isisd/isis_route.c:705,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:706,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:709,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:713,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:717,1
    - Dst: isis_route_update
      Src: /src/frr/isisd/isis_route.c:724,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_route.c:726,1
    - Dst: isis_route_delete
      Src: /src/frr/isisd/isis_route.c:733,1
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/isisd/isis_route.c:742,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_route.c:746,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_route.c:752,1
    - Dst: isis_route_delete
      Src: /src/frr/isisd/isis_route.c:755,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 4
    argNames:
    - area
    - table
    - table_backup
    - tables
    argTypes:
    - struct isis_area*
    - struct route_table*
    - struct route_table*
    - struct route_table**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 657
    functionDepth: 3
    functionLinenumber: 657
    functionLinenumberEnd: 757
    functionName: _isis_route_verify_table
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - srcdest2str
    - srcdest_route_next
    - CHECK_FLAG
    - route_top
    - isis_route_delete
    - zlog_debug
    - UNSET_FLAG
    - srcdest_rnode_prefixes
    - isis_route_table_algorithm
    - isis_route_update
    - srcdest_rnode_lookup
    linkageType: ''
    returnType: void
    signature: "void _isis_route_verify_table(struct isis_area *area,\n\t\t\t\t     struct
      route_table *table,\n\t\t\t\t     struct route_table *table_backup,\n\t\t\t\t
      \    struct route_table **tables)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_route_table_algorithm
      Src: /src/frr/isisd/isis_route.c:907,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_route.c:908,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_route.c:908,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:920,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:922,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - area
    - table
    argTypes:
    - struct isis_area*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 902
    functionDepth: 1
    functionLinenumber: 902
    functionLinenumberEnd: 924
    functionName: isis_route_invalidate_table
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 1
    functionsReached:
    - isis_route_table_algorithm
    - route_top
    - UNSET_FLAG
    - srcdest_route_next
    linkageType: ''
    returnType: void
    signature: "void isis_route_invalidate_table(struct isis_area *area,\n\t\t\t\t
      struct route_table *table)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vrf_id_to_name
      Src: /src/frr/isisd/isis_route.c:941,1
    - Dst: ifindex2ifname
      Src: /src/frr/isisd/isis_route.c:942,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_route.c:944,1
    - Dst: family2str
      Src: /src/frr/isisd/isis_route.c:945,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_route.c:949,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_route.c:950,1
    - Dst: nexthoplookup
      Src: /src/frr/isisd/isis_route.c:958,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/isisd/isis_route.c:962,1
    - Dst: isis_route_remove_previous_sid
      Src: /src/frr/isisd/isis_route.c:966,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_route.c:967,1
    - Dst: isis_route_update
      Src: /src/frr/isisd/isis_route.c:968,1
    - Dst: isis_route_info_delete
      Src: /src/frr/isisd/isis_route.c:970,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_route.c:973,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 5
    argNames:
    - area
    - table
    - family
    - nexthop_addr
    - ifindex
    argTypes:
    - struct isis_area*
    - struct route_table*
    - int
    - union g_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 926
    functionDepth: 3
    functionLinenumber: 926
    functionLinenumberEnd: 975
    functionName: isis_route_switchover_nexthop
    functionSourceFile: /src/frr/isisd/isis_route.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - ifindex2ifname
    - isis_route_remove_previous_sid
    - srcdest_route_next
    - vrf_id_to_name
    - isis_route_info_delete
    - route_top
    - family2str
    - zlog_debug
    - nexthoplookup
    - srcdest_rnode_prefixes
    - UNSET_FLAG
    - isis_route_update
    linkageType: ''
    returnType: void
    signature: "void isis_route_switchover_nexthop(struct isis_area *area,\n\t\t\t\t
      \  struct route_table *table, int family,\n\t\t\t\t   union g_addr *nexthop_addr,\n\t\t\t\t
      \  ifindex_t ifindex)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - disflag
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: isis_disflag2string
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *isis_disflag2string(int disflag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_dr.c:53,1
    - Dst: assert
      Src: /src/frr/isisd/isis_dr.c:55,1
    - Dst: assert
      Src: /src/frr/isisd/isis_dr.c:60,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dr.c:63,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dr.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (circuit)
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/frr/isisd/isis_dr.c
    - condition: (arg)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/frr/isisd/isis_dr.c
    constantsTouched: []
    func_position:
      end: 75
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 75
    functionName: isis_run_dr
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void isis_run_dr(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - adj
    - level
    argTypes:
    - struct isis_adjacency*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 101
    functionName: isis_check_dr_change
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_check_dr_change(struct isis_adjacency *adj, int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/isisd/isis_dr.c:108,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dr.c:117,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_dr.c:118,1
    - Dst: isis_adj_build_up_list
      Src: /src/frr/isisd/isis_dr.c:121,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_dr.c:126,1
    - Dst: time
      Src: /src/frr/isisd/isis_dr.c:129,1
    - Dst: if
      Src: /src/frr/isisd/isis_dr.c:131,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_dr.c:139,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_dr.c:145,1
    - Dst: isis_dr_resign
      Src: /src/frr/isisd/isis_dr.c:160,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_dr.c:161,1
    - Dst: retval
      Src: /src/frr/isisd/isis_dr.c:162,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_dr.c:170,1
    - Dst: time
      Src: /src/frr/isisd/isis_dr.c:172,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_dr.c:175,1
    - Dst: isis_check_dr_change
      Src: /src/frr/isisd/isis_dr.c:176,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_dr.c:179,1
    - Dst: isis_dr_commence
      Src: /src/frr/isisd/isis_dr.c:180,1
    - Dst: time
      Src: /src/frr/isisd/isis_dr.c:185,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_dr.c:192,1
    - Dst: isis_dr_resign
      Src: /src/frr/isisd/isis_dr.c:199,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 200
    functionName: isis_dr_elect
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 0
    functionsReached:
    - isis_dr_commence
    - isis_dr_resign
    - list_delete
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - memcmp
    - isis_adj_build_up_list
    - zlog_warn
    - list_new
    - isis_check_dr_change
    - retval
    - if
    - time
    linkageType: ''
    returnType: int
    signature: int isis_dr_elect(struct isis_circuit *circuit, int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_dr.c:210,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_dr.c:214,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_dr.c:215,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dr.c:218,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_dr.c:219,1
    - Dst: lsp_purge_pseudo
      Src: /src/frr/isisd/isis_dr.c:221,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dr.c:224,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dr.c:226,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_dr.c:227,1
    - Dst: memset
      Src: /src/frr/isisd/isis_dr.c:231,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dr.c:233,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_dr.c:234,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_dr.c:239,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dr.c:241,1
    - Dst: event_add_event
      Src: /src/frr/isisd/isis_dr.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 249
    functionName: isis_dr_resign
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 3
    functionsReached:
    - memset
    - isis_jitter
    - LSP_PSEUDO_ID
    - zlog_debug
    - EVENT_OFF
    - event_add_timer
    - lsp_purge_pseudo
    - memcpy
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int isis_dr_resign(struct isis_circuit *circuit, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 220
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_dr.c:256,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dr.c:263,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_dr.c:265,1
    - Dst: lsp_purge_pseudo
      Src: /src/frr/isisd/isis_dr.c:267,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dr.c:269,1
    - Dst: assert
      Src: /src/frr/isisd/isis_dr.c:274,1
    - Dst: lsp_generate_pseudo
      Src: /src/frr/isisd/isis_dr.c:275,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dr.c:277,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_dr.c:278,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dr.c:283,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_dr.c:285,1
    - Dst: lsp_purge_pseudo
      Src: /src/frr/isisd/isis_dr.c:287,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_dr.c:289,1
    - Dst: assert
      Src: /src/frr/isisd/isis_dr.c:294,1
    - Dst: lsp_generate_pseudo
      Src: /src/frr/isisd/isis_dr.c:295,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dr.c:297,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_dr.c:298,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_dr.c:303,1
    - Dst: event_add_event
      Src: /src/frr/isisd/isis_dr.c:306,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts:
    - condition: (circuit->circuit_id)
      pos:
        line_end: 293
        line_start: 293
        source_file: /src/frr/isisd/isis_dr.c
    - condition: (circuit->circuit_id)
      pos:
        line_end: 273
        line_start: 273
        source_file: /src/frr/isisd/isis_dr.c
    constantsTouched: []
    func_position:
      end: 309
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 309
    functionName: isis_dr_commence
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 1
    functionsReached:
    - lsp_generate_pseudo
    - isis_jitter
    - LSP_PSEUDO_ID
    - zlog_debug
    - event_add_timer
    - memcpy
    - lsp_purge_pseudo
    - assert
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int isis_dr_commence(struct isis_circuit *circuit, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(old_dr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 284
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_dr.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(old_dr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_terminate
      Src: /src/frr/isisd/isis_main.c:94,1
    - Dst: isis_sr_term
      Src: /src/frr/isisd/isis_main.c:95,1
    - Dst: isis_zebra_stop
      Src: /src/frr/isisd/isis_main.c:96,1
    - Dst: exit
      Src: /src/frr/isisd/isis_main.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 92
    functionDepth: 4
    functionLinenumber: 92
    functionLinenumberEnd: 98
    functionName: terminate
    functionSourceFile: /src/frr/isisd/isis_main.c
    functionUses: 36
    functionsReached:
    - exit
    - isis_terminate
    - isis_sr_term
    - isis_zebra_stop
    linkageType: ''
    returnType: void
    signature: void terminate(int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/isisd/isis_main.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: sighup
    functionSourceFile: /src/frr/isisd/isis_main.c
    functionUses: 0
    functionsReached:
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_main.c:113,1
    - Dst: vty_read_config
      Src: /src/frr/isisd/isis_main.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: sighup
    functionSourceFile: /src/frr/isisd/isis_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vty_read_config
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/isisd/isis_main.c:123,1
    - Dst: terminate
      Src: /src/frr/isisd/isis_main.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 5
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: sigint
    functionSourceFile: /src/frr/isisd/isis_main.c
    functionUses: 0
    functionsReached:
    - terminate
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/isisd/isis_main.c:129,1
    - Dst: terminate
      Src: /src/frr/isisd/isis_main.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 5
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: sigterm
    functionSourceFile: /src/frr/isisd/isis_main.c
    functionUses: 0
    functionsReached:
    - terminate
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sigterm(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_main.c:135,1
    - Dst: zlog_rotate
      Src: /src/frr/isisd/isis_main.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: sigusr1
    functionSourceFile: /src/frr/isisd/isis_main.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_main.c:179,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_main.c:180,1
    - Dst: config_end_lsp_generate
      Src: /src/frr/isisd/isis_main.c:181,1
    - Dst: isis_config_start
      Src: /src/frr/isisd/isis_main.c:185,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_main.c:189,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_main.c:190,1
    - Dst: event_is_scheduled
      Src: /src/frr/isisd/isis_main.c:199,1
    - Dst: isis_config_finish
      Src: /src/frr/isisd/isis_main.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 204
    functionName: isis_config_finish
    functionSourceFile: /src/frr/isisd/isis_main.c
    functionUses: 1
    functionsReached:
    - config_end_lsp_generate
    - isis_config_finish
    - ALL_LIST_ELEMENTS_RO
    - EVENT_OFF
    - isis_config_start
    - event_add_timer
    - event_is_scheduled
    linkageType: ''
    returnType: void
    signature: void isis_config_finish(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: STATE2STR
    functionSourceFile: /src/frr/isisd/isis_csm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STATE2STR(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: EVENT2STR
    functionSourceFile: /src/frr/isisd/isis_csm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVENT2STR(E)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_csm.c:58,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:62,1
    - Dst: EVENT2STR
      Src: /src/frr/isisd/isis_csm.c:63,1
    - Dst: isis_circuit_configure
      Src: /src/frr/isisd/isis_csm.c:71,1
    - Dst: isis_circuit_if_add
      Src: /src/frr/isisd/isis_csm.c:77,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:82,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:87,1
    - Dst: isis_circuit_configure
      Src: /src/frr/isisd/isis_csm.c:97,1
    - Dst: isis_circuit_up
      Src: /src/frr/isisd/isis_csm.c:98,1
    - Dst: isis_circuit_deconfigure
      Src: /src/frr/isisd/isis_csm.c:99,1
    - Dst: isis_event_circuit_state_change
      Src: /src/frr/isisd/isis_csm.c:103,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:108,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:113,1
    - Dst: isis_circuit_if_del
      Src: /src/frr/isisd/isis_csm.c:119,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:128,1
    - Dst: isis_circuit_if_add
      Src: /src/frr/isisd/isis_csm.c:134,1
    - Dst: isis_circuit_up
      Src: /src/frr/isisd/isis_csm.c:135,1
    - Dst: isis_circuit_if_del
      Src: /src/frr/isisd/isis_csm.c:136,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_csm.c:137,1
    - Dst: isis_event_circuit_state_change
      Src: /src/frr/isisd/isis_csm.c:144,1
    - Dst: isis_circuit_deconfigure
      Src: /src/frr/isisd/isis_csm.c:150,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:155,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:164,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:169,1
    - Dst: isis_circuit_down
      Src: /src/frr/isisd/isis_csm.c:175,1
    - Dst: isis_circuit_deconfigure
      Src: /src/frr/isisd/isis_csm.c:176,1
    - Dst: isis_event_circuit_state_change
      Src: /src/frr/isisd/isis_csm.c:178,1
    - Dst: isis_circuit_down
      Src: /src/frr/isisd/isis_csm.c:183,1
    - Dst: isis_circuit_if_del
      Src: /src/frr/isisd/isis_csm.c:184,1
    - Dst: isis_event_circuit_state_change
      Src: /src/frr/isisd/isis_csm.c:186,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_csm.c:194,1
    - Dst: STATE2STR
      Src: /src/frr/isisd/isis_csm.c:194,1
    - Dst: STATE2STR
      Src: /src/frr/isisd/isis_csm.c:195,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 113
    argCount: 3
    argNames:
    - event
    - circuit
    - arg
    argTypes:
    - enum isis_circuit_event
    - struct isis_circuit*
    - void*
    assertStmts:
    - condition: (circuit)
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/frr/isisd/isis_csm.c
    constantsTouched: []
    func_position:
      end: 198
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 198
    functionName: isis_csm_state_change
    functionSourceFile: /src/frr/isisd/isis_csm.c
    functionUses: 7
    functionsReached:
    - isis_circuit_deconfigure
    - isis_event_circuit_state_change
    - isis_circuit_down
    - zlog_debug
    - isis_circuit_up
    - isis_circuit_if_del
    - flog_err
    - isis_circuit_configure
    - EVENT2STR
    - STATE2STR
    - isis_circuit_if_add
    - assert
    linkageType: ''
    returnType: struct isis_circuit
    signature: "struct isis_circuit *isis_csm_state_change(enum isis_circuit_event
      event,\n\t\t\t\t\t   struct isis_circuit *circuit,\n\t\t\t\t\t   void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/isisd/isis_errors.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: isis_error_init
    functionSourceFile: /src/frr/isisd/isis_errors.c
    functionUses: 0
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void isis_error_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fletcher_checksum
      Src: /src/frr/isisd/iso_checksum.c:56,1
    - Dst: htons
      Src: /src/frr/isisd/iso_checksum.c:57,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - buffer
    - len
    - csum
    - offset
    argTypes:
    - uint8_t*
    - int
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 60
    functionName: iso_csum_verify
    functionSourceFile: /src/frr/isisd/iso_checksum.c
    functionUses: 0
    functionsReached:
    - fletcher_checksum
    - htons
    linkageType: ''
    returnType: int
    signature: int iso_csum_verify(uint8_t *buffer, int len, uint16_t csum, int offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - id1
    - id2
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: lsp_id_cmp
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int lsp_id_cmp(uint8_t *id1, uint8_t *id2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct isis_lsp*
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: lspdb_compare
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int lspdb_compare(const struct isis_lsp *a, const struct isis_lsp *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lspdb_init
      Src: /src/frr/isisd/isis_lsp.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct lspdb_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: lsp_db_init
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 3
    functionsReached:
    - lspdb_init
    linkageType: ''
    returnType: void
    signature: void lsp_db_init(struct lspdb_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lspdb_pop
      Src: /src/frr/isisd/isis_lsp.c:80,1
    - Dst: lsp_destroy
      Src: /src/frr/isisd/isis_lsp.c:81,1
    - Dst: lspdb_fini
      Src: /src/frr/isisd/isis_lsp.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct lspdb_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: lsp_db_fini
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 2
    functionsReached:
    - lsp_destroy
    - lspdb_pop
    - lspdb_fini
    linkageType: ''
    returnType: void
    signature: void lsp_db_fini(struct lspdb_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:88,1
    - Dst: lspdb_find
      Src: /src/frr/isisd/isis_lsp.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - head
    - id
    argTypes:
    - struct lspdb_head*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: lsp_search
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 3
    functionsReached:
    - lspdb_find
    - memcpy
    linkageType: ''
    returnType: struct isis_lsp
    signature: struct isis_lsp *lsp_search(struct lspdb_head *head, const uint8_t
      *id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_lsp.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 93
    functionDepth: 5
    functionLinenumber: 93
    functionLinenumberEnd: 100
    functionName: lsp_clear_data
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - isis_free_tlvs
    linkageType: ''
    returnType: void
    signature: void lsp_clear_data(struct isis_lsp *lsp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:112,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_lsp.c:113,1
    - Dst: ISIS_FLAGS_CLEAR_ALL
      Src: /src/frr/isisd/isis_lsp.c:115,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_lsp.c:117,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:119,1
    - Dst: if
      Src: /src/frr/isisd/isis_lsp.c:121,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:121,1
    - Dst: lsp_remove_frags
      Src: /src/frr/isisd/isis_lsp.c:123,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lsp.c:125,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lsp.c:130,1
    - Dst: isis_spf_schedule
      Src: /src/frr/isisd/isis_lsp.c:134,1
    - Dst: stream_free
      Src: /src/frr/isisd/isis_lsp.c:137,1
    - Dst: fabricd_lsp_free
      Src: /src/frr/isisd/isis_lsp.c:139,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_lsp.c:140,1
    - Dst: lsp_remove_frags
      Src: /src/frr/isisd/isis_lsp.c:146,1
    - Dst: for
      Src: /src/frr/isisd/isis_lsp.c:151,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_lsp.c:151,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:152,1
    - Dst: lspdb_del
      Src: /src/frr/isisd/isis_lsp.c:153,1
    - Dst: lsp_destroy
      Src: /src/frr/isisd/isis_lsp.c:154,1
    - Dst: lsp_search_and_destroy
      Src: /src/frr/isisd/isis_lsp.c:158,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:162,1
    - Dst: lspdb_del
      Src: /src/frr/isisd/isis_lsp.c:164,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:168,1
    - Dst: lsp_remove_frags
      Src: /src/frr/isisd/isis_lsp.c:170,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_lsp.c:178,1
    - Dst: lsp_destroy
      Src: /src/frr/isisd/isis_lsp.c:181,1
    - Dst: lsp_compare
      Src: /src/frr/isisd/isis_lsp.c:189,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:196,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:200,1
    - Dst: LSP_EQUAL
      Src: /src/frr/isisd/isis_lsp.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:225,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:229,1
    - Dst: LSP_NEWER
      Src: /src/frr/isisd/isis_lsp.c:234,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:237,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:241,1
    - Dst: put_lsp_hdr
      Src: /src/frr/isisd/isis_lsp.c:250,1
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_lsp.c:259,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_lsp.c:260,1
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_lsp.c:263,1
    - Dst: stream_set_endp
      Src: /src/frr/isisd/isis_lsp.c:264,1
    - Dst: fill_fixed_hdr
      Src: /src/frr/isisd/isis_lsp.c:266,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_lsp.c:269,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_lsp.c:270,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_lsp.c:271,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_lsp.c:272,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_lsp.c:273,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_lsp.c:274,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_lsp.c:275,1
    - Dst: stream_set_endp
      Src: /src/frr/isisd/isis_lsp.c:278,1
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_lsp.c:279,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 22
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 104
    functionDepth: 6
    functionLinenumber: 104
    functionLinenumberEnd: 281
    functionName: lsp_destroy
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 2
    functionsReached:
    - lsp_clear_data
    - lsp_destroy
    - list_delete
    - stream_put
    - put_lsp_hdr
    - ISIS_FLAGS_CLEAR_ALL
    - LSP_NEWER
    - lsp_compare
    - stream_set_endp
    - lsp_remove_frags
    - LSP_EQUAL
    - stream_putc
    - isis_tx_queue_del
    - stream_set_getp
    - isis_te_lsp_event
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - isis_spf_schedule
    - if
    - fill_fixed_hdr
    - for
    - LSP_FRAGMENT
    - stream_get_getp
    - stream_free
    - fabricd_lsp_free
    - lsp_search_and_destroy
    - XFREE
    - listnode_delete
    - lspdb_del
    - lsp_search
    - stream_putw
    - stream_get_endp
    - ALL_LIST_ELEMENTS
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void lsp_destroy(struct isis_lsp *lsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_tlvs_add_auth
      Src: /src/frr/isisd/isis_lsp.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 283
    functionDepth: 4
    functionLinenumber: 283
    functionLinenumberEnd: 289
    functionName: lsp_add_auth
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_add_auth
    linkageType: ''
    returnType: void
    signature: void lsp_add_auth(struct isis_lsp *lsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_lsp.c:294,1
    - Dst: lsp_add_auth
      Src: /src/frr/isisd/isis_lsp.c:296,1
    - Dst: put_lsp_hdr
      Src: /src/frr/isisd/isis_lsp.c:299,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/isisd/isis_lsp.c:300,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_lsp.c:302,1
    - Dst: ntohs
      Src: /src/frr/isisd/isis_lsp.c:304,1
    - Dst: fletcher_checksum
      Src: /src/frr/isisd/isis_lsp.c:304,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_lsp.c:304,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_lsp.c:305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 291
    functionDepth: 8
    functionLinenumber: 291
    functionLinenumberEnd: 306
    functionName: lsp_pack_pdu
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - fletcher_checksum
    - put_lsp_hdr
    - STREAM_DATA
    - stream_get_endp
    - lsp_add_auth
    - ntohs
    - isis_alloc_tlvs
    - isis_pack_tlvs
    linkageType: ''
    returnType: void
    signature: void lsp_pack_pdu(struct isis_lsp *lsp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_notif_lsp_exceed_max
      Src: /src/frr/isisd/isis_lsp.c:322,1
    - Dst: lsp_pack_pdu
      Src: /src/frr/isisd/isis_lsp.c:328,1
    - Dst: isis_spf_schedule
      Src: /src/frr/isisd/isis_lsp.c:329,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_lsp.c:330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - lsp
    - seqno
    argTypes:
    - struct isis_lsp*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 308
    functionDepth: 9
    functionLinenumber: 308
    functionLinenumberEnd: 331
    functionName: lsp_inc_seqno
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_pack_pdu
    - isis_te_lsp_event
    - isis_notif_lsp_exceed_max
    - isis_spf_schedule
    linkageType: ''
    returnType: void
    signature: void lsp_inc_seqno(struct isis_lsp *lsp, uint32_t seqno)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_lsp.c:344,1
    - Dst: isis_tlvs_set_purge_originator
      Src: /src/frr/isisd/isis_lsp.c:345,1
    - Dst: isis_tlvs_set_dynamic_hostname
      Src: /src/frr/isisd/isis_lsp.c:347,1
    - Dst: cmd_hostname_get
      Src: /src/frr/isisd/isis_lsp.c:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - lsp
    - sender
    argTypes:
    - struct isis_lsp*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 348
    functionName: lsp_purge_add_poi
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - isis_tlvs_set_purge_originator
    - isis_tlvs_set_dynamic_hostname
    - isis_alloc_tlvs
    linkageType: ''
    returnType: void
    signature: "void lsp_purge_add_poi(struct isis_lsp *lsp,\n\t\t\t      const uint8_t
      *sender)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:354,1
    - Dst: stream_reset
      Src: /src/frr/isisd/isis_lsp.c:355,1
    - Dst: lsp_purge_add_poi
      Src: /src/frr/isisd/isis_lsp.c:364,1
    - Dst: lsp_pack_pdu
      Src: /src/frr/isisd/isis_lsp.c:366,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - lsp
    - level
    - sender
    argTypes:
    - struct isis_lsp*
    - int
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 350
    functionDepth: 9
    functionLinenumber: 350
    functionLinenumberEnd: 368
    functionName: lsp_purge
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_clear_data
    - lsp_pack_pdu
    - lsp_purge_add_poi
    - stream_reset
    - lsp_flood
    linkageType: ''
    returnType: void
    signature: "void lsp_purge(struct isis_lsp *lsp, int level,\n\t\t      const uint8_t
      *sender)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lsp_inc_seqno
      Src: /src/frr/isisd/isis_lsp.c:378,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:383,1
    - Dst: lsp_inc_seqno
      Src: /src/frr/isisd/isis_lsp.c:385,1
    - Dst: lsp_purge
      Src: /src/frr/isisd/isis_lsp.c:390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - lsp0
    argTypes:
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 373
    functionDepth: 10
    functionLinenumber: 373
    functionLinenumberEnd: 395
    functionName: lsp_seqno_update
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - lsp_inc_seqno
    - lsp_purge
    linkageType: ''
    returnType: void
    signature: void lsp_seqno_update(struct isis_lsp *lsp0)
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:407,1
    - Dst: if
      Src: /src/frr/isisd/isis_lsp.c:410,1
    - Dst: for
      Src: /src/frr/isisd/isis_lsp.c:413,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:413,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_lsp.c:435,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:436,1
    - Dst: isis_area_overload_bit_set
      Src: /src/frr/isisd/isis_lsp.c:442,1
    - Dst: memset
      Src: /src/frr/isisd/isis_lsp.c:465,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:466,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:468,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:474,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_lsp.c:476,1
    - Dst: isis_level2_adj_up
      Src: /src/frr/isisd/isis_lsp.c:479,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:480,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_lsp.c:482,1
    - Dst: isis_level2_adj_up
      Src: /src/frr/isisd/isis_lsp.c:501,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:511,1
    - Dst: stream_free
      Src: /src/frr/isisd/isis_lsp.c:515,1
    - Dst: stream_dup
      Src: /src/frr/isisd/isis_lsp.c:516,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:518,1
    - Dst: time
      Src: /src/frr/isisd/isis_lsp.c:522,1
    - Dst: isis_dynhn_insert
      Src: /src/frr/isisd/isis_lsp.c:528,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:540,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_lsp.c:542,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:545,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_lsp.c:547,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_lsp.c:556,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:560,1
    - Dst: lsp_purge
      Src: /src/frr/isisd/isis_lsp.c:565,1
    - Dst: lsp_update_data
      Src: /src/frr/isisd/isis_lsp.c:567,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:570,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:574,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:576,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:578,1
    - Dst: isis_spf_schedule
      Src: /src/frr/isisd/isis_lsp.c:582,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_lsp.c:583,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lsp.c:595,1
    - Dst: lsp_update_data
      Src: /src/frr/isisd/isis_lsp.c:596,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:597,1
    - Dst: STREAM_SIZE
      Src: /src/frr/isisd/isis_lsp.c:605,1
    - Dst: stream_free
      Src: /src/frr/isisd/isis_lsp.c:607,1
    - Dst: stream_new
      Src: /src/frr/isisd/isis_lsp.c:610,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lsp.c:620,1
    - Dst: lsp_adjust_stream
      Src: /src/frr/isisd/isis_lsp.c:623,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:627,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:634,1
    - Dst: put_lsp_hdr
      Src: /src/frr/isisd/isis_lsp.c:635,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:638,1
    - Dst: lspdb_add
      Src: /src/frr/isisd/isis_lsp.c:646,1
    - Dst: isis_spf_schedule
      Src: /src/frr/isisd/isis_lsp.c:648,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_lsp.c:649,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:662,1
    - Dst: lspdb_find_gteq
      Src: /src/frr/isisd/isis_lsp.c:664,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:666,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_lsp.c:671,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:677,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_lsp.c:686,1
    - Dst: stream_putw_at
      Src: /src/frr/isisd/isis_lsp.c:687,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_lsp.c:697,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:702,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:703,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:704,1
    - Dst: cmd_hostname_get
      Src: /src/frr/isisd/isis_lsp.c:704,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:706,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:709,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:710,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:710,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:712,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:712,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:727,1
    - Dst: ISIS_MASK_LSP_ATT_BITS
      Src: /src/frr/isisd/isis_lsp.c:728,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:730,1
    - Dst: ISIS_MASK_LSP_PARTITION_BIT
      Src: /src/frr/isisd/isis_lsp.c:731,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:733,1
    - Dst: ISIS_MASK_LSP_OL_BIT
      Src: /src/frr/isisd/isis_lsp.c:733,1
    - Dst: lsp_print_json
      Src: /src/frr/isisd/isis_lsp.c:743,1
    - Dst: lsp_print_vty
      Src: /src/frr/isisd/isis_lsp.c:745,1
    - Dst: lspid_print
      Src: /src/frr/isisd/isis_lsp.c:758,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_lsp.c:759,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_lsp.c:760,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:761,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:762,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_lsp.c:763,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_lsp.c:764,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:765,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_lsp.c:766,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:767,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:769,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:771,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_lsp.c:773,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:775,1
    - Dst: lsp_bits2string
      Src: /src/frr/isisd/isis_lsp.c:776,1
    - Dst: lspid_print
      Src: /src/frr/isisd/isis_lsp.c:786,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:787,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:788,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:789,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:790,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:792,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:794,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:796,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:797,1
    - Dst: lsp_bits2string
      Src: /src/frr/isisd/isis_lsp.c:797,1
    - Dst: lsp_print_json
      Src: /src/frr/isisd/isis_lsp.c:805,1
    - Dst: isis_format_tlvs
      Src: /src/frr/isisd/isis_lsp.c:807,1
    - Dst: lsp_print_vty
      Src: /src/frr/isisd/isis_lsp.c:810,1
    - Dst: vty_multiline
      Src: /src/frr/isisd/isis_lsp.c:812,1
    - Dst: isis_format_tlvs
      Src: /src/frr/isisd/isis_lsp.c:813,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:814,1
    - Dst: lsp_print_common
      Src: /src/frr/isisd/isis_lsp.c:828,1
    - Dst: lsp_print_detail
      Src: /src/frr/isisd/isis_lsp.c:833,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_lsp.c:847,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_lsp.c:868,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:891,1
    - Dst: isis_tlvs_add_oldstyle_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:894,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:898,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:904,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:905,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:909,1
    - Dst: isis_tlvs_add_extended_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:912,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:924,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:930,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:931,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:934,1
    - Dst: isis_tlvs_add_ipv6_reach
      Src: /src/frr/isisd/isis_lsp.c:937,1
    - Dst: isis_area_ipv6_topology
      Src: /src/frr/isisd/isis_lsp.c:937,1
    - Dst: get_ext_reach
      Src: /src/frr/isisd/isis_lsp.c:945,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_lsp.c:949,1
    - Dst: route_next
      Src: /src/frr/isisd/isis_lsp.c:950,1
    - Dst: isis_tlvs_add_oldstyle_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:964,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:973,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:974,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:978,1
    - Dst: isis_tlvs_add_extended_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:982,1
    - Dst: get_ext_reach
      Src: /src/frr/isisd/isis_lsp.c:992,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_lsp.c:996,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_lsp.c:997,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/isisd/isis_lsp.c:1003,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:1017,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:1018,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:1022,1
    - Dst: isis_tlvs_add_ipv6_reach
      Src: /src/frr/isisd/isis_lsp.c:1026,1
    - Dst: isis_area_ipv6_topology
      Src: /src/frr/isisd/isis_lsp.c:1027,1
    - Dst: isis_area_ipv6_dstsrc_enabled
      Src: /src/frr/isisd/isis_lsp.c:1029,1
    - Dst: isis_tlvs_add_ipv6_dstsrc_reach
      Src: /src/frr/isisd/isis_lsp.c:1030,1
    - Dst: lsp_build_ext_reach_ipv4
      Src: /src/frr/isisd/isis_lsp.c:1039,1
    - Dst: lsp_build_ext_reach_ipv6
      Src: /src/frr/isisd/isis_lsp.c:1040,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1049,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:1050,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:1052,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1054,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:1056,1
    - Dst: lsp_new
      Src: /src/frr/isisd/isis_lsp.c:1060,1
    - Dst: lsp_bits_generate
      Src: /src/frr/isisd/isis_lsp.c:1061,1
    - Dst: lsp_insert
      Src: /src/frr/isisd/isis_lsp.c:1065,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1079,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:1080,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1081,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_lsp.c:1083,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1084,1
    - Dst: lsp_bits_generate
      Src: /src/frr/isisd/isis_lsp.c:1087,1
    - Dst: lsp_add_auth
      Src: /src/frr/isisd/isis_lsp.c:1090,1
    - Dst: isis_tlvs_add_area_addresses
      Src: /src/frr/isisd/isis_lsp.c:1092,1
    - Dst: if
      Src: /src/frr/isisd/isis_lsp.c:1095,1
    - Dst: if
      Src: /src/frr/isisd/isis_lsp.c:1098,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1099,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1106,1
    - Dst: isis_tlvs_set_protocols_supported
      Src: /src/frr/isisd/isis_lsp.c:1112,1
    - Dst: area_is_mt
      Src: /src/frr/isisd/isis_lsp.c:1115,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1116,1
    - Dst: area_mt_settings
      Src: /src/frr/isisd/isis_lsp.c:1121,1
    - Dst: isis_tlvs_add_mt_router_info
      Src: /src/frr/isisd/isis_lsp.c:1123,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1126,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_lsp.c:1127,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1130,1
    CyclomaticComplexity: 106
    EdgeCount: 106
    ICount: 319
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts:
    - condition: (lsp0)
      pos:
        line_end: 544
        line_start: 544
        source_file: /src/frr/isisd/isis_lsp.c
    - condition: (lsp)
      pos:
        line_end: 676
        line_start: 676
        source_file: /src/frr/isisd/isis_lsp.c
    - condition: (area)
      pos:
        line_end: 435
        line_start: 435
        source_file: /src/frr/isisd/isis_lsp.c
    constantsTouched: []
    func_position:
      end: 1132
      start: 397
    functionDepth: 10
    functionLinenumber: 397
    functionLinenumberEnd: 1132
    functionName: isis_level2_adj_up
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 2
    functionsReached:
    - route_top
    - flog_err
    - memset
    - XCALLOC
    - snprintf
    - lspdb_add
    - isis_tlvs_add_area_addresses
    - isis_tlvs_add_mt_router_info
    - if
    - for
    - LSP_FRAGMENT
    - isis_format_tlvs
    - isis_dynhn_insert
    - lspdb_find_gteq
    - lsp_debug
    - lsp_purge
    - memcpy
    - STREAM_SIZE
    - json_object_new_object
    - lsp_bits2string
    - lsp_adjust_stream
    - isis_tlvs_add_extended_ip_reach
    - dynhn_find_by_id
    - snprintfrr
    - isis_tlvs_add_ipv6_dstsrc_reach
    - lsp_add_auth
    - list_new
    - lsp_print_vty
    - isis_sr_cfg_prefix_find
    - lsp_build_ext_reach_ipv6
    - get_ext_reach
    - isis_te_lsp_event
    - isis_tlvs_add_oldstyle_ip_reach
    - stream_putw_at
    - isis_spf_schedule
    - stream_free
    - lsp_update_data
    - isis_jitter
    - LSP_PSEUDO_ID
    - lsp_new
    - isis_area_overload_bit_set
    - isis_mtid2str
    - json_object_object_add
    - lsp_regenerate_schedule
    - time
    - cmd_hostname_get
    - lsp_print_json
    - memcmp
    - lsp_bits_generate
    - json_object_string_add
    - srcdest_rnode_prefixes
    - lspid_print
    - isis_tlvs_set_protocols_supported
    - zlog_debug
    - ISIS_MASK_LSP_ATT_BITS
    - isis_tlvs_add_ipv6_reach
    - flex_algo_id_valid
    - assert
    - vty_out
    - json_object_int_add
    - route_next
    - area_is_mt
    - lsp_link_fragment
    - sched_debug
    - stream_new
    - isis_flex_algo_elected_supported
    - isis_area_ipv6_dstsrc_enabled
    - stream_dup
    - area_mt_settings
    - lsp_clear_data
    - ISIS_MASK_LSP_OL_BIT
    - put_lsp_hdr
    - ISIS_MASK_LSP_PARTITION_BIT
    - listnode_add
    - isis_alloc_tlvs
    - isis_area_ipv6_topology
    - ALL_LIST_ELEMENTS_RO
    - vty_multiline
    - lsp_build_ext_reach_ipv4
    - EVENT_ARG
    - lsp_print_common
    - isis_level2_adj_up
    - srcdest_route_next
    - lsp_search
    - lsp_insert
    - stream_get_endp
    - lsp_print_detail
    linkageType: ''
    returnType: bool
    signature: bool isis_level2_adj_up(struct isis_area *area)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_lsp.c:465,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:466,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:468,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:474,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_lsp.c:476,1
    - Dst: isis_level2_adj_up
      Src: /src/frr/isisd/isis_lsp.c:479,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:480,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_lsp.c:482,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 445
    functionDepth: 11
    functionLinenumber: 445
    functionLinenumberEnd: 484
    functionName: isis_reset_attach_bit
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - sched_debug
    - memset
    - isis_level2_adj_up
    - lsp_search
    - lsp_regenerate_schedule
    - memcpy
    linkageType: ''
    returnType: void
    signature: void isis_reset_attach_bit(struct isis_adjacency *adj)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isis_level2_adj_up
      Src: /src/frr/isisd/isis_lsp.c:501,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 4
    argNames:
    - level
    - overload_bit
    - attached_bit
    - area
    argTypes:
    - int
    - int
    - int
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 486
    functionDepth: 11
    functionLinenumber: 486
    functionLinenumberEnd: 504
    functionName: lsp_bits_generate
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - isis_level2_adj_up
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t lsp_bits_generate(int level, int overload_bit, int attached_bit,\n\t\t\t\t
      struct isis_area *area)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:511,1
    - Dst: stream_free
      Src: /src/frr/isisd/isis_lsp.c:515,1
    - Dst: stream_dup
      Src: /src/frr/isisd/isis_lsp.c:516,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:518,1
    - Dst: time
      Src: /src/frr/isisd/isis_lsp.c:522,1
    - Dst: isis_dynhn_insert
      Src: /src/frr/isisd/isis_lsp.c:528,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - lsp
    - hdr
    - tlvs
    - stream
    - area
    - level
    argTypes:
    - struct isis_lsp*
    - struct isis_lsp_hdr*
    - struct isis_tlvs*
    - struct stream*
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 506
    functionDepth: 6
    functionLinenumber: 506
    functionLinenumberEnd: 536
    functionName: lsp_update_data
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - lsp_clear_data
    - stream_free
    - isis_dynhn_insert
    - time
    - stream_dup
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lsp_update_data(struct isis_lsp *lsp, struct isis_lsp_hdr *hdr,\n\t\t\t
      \   struct isis_tlvs *tlvs, struct stream *stream,\n\t\t\t    struct isis_area
      *area, int level)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:540,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_lsp.c:542,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:545,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_lsp.c:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - lsp
    - lsp0
    argTypes:
    - struct isis_lsp*
    - struct isis_lsp*
    assertStmts:
    - condition: (lsp0)
      pos:
        line_end: 544
        line_start: 544
        source_file: /src/frr/isisd/isis_lsp.c
    constantsTouched: []
    func_position:
      end: 549
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 549
    functionName: lsp_link_fragment
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - list_new
    - listnode_add
    - LSP_FRAGMENT
    - assert
    linkageType: ''
    returnType: void
    signature: void lsp_link_fragment(struct isis_lsp *lsp, struct isis_lsp *lsp0)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/isisd/isis_lsp.c:556,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:560,1
    - Dst: lsp_purge
      Src: /src/frr/isisd/isis_lsp.c:565,1
    - Dst: lsp_update_data
      Src: /src/frr/isisd/isis_lsp.c:567,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:570,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:574,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:576,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:578,1
    - Dst: isis_spf_schedule
      Src: /src/frr/isisd/isis_lsp.c:582,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_lsp.c:583,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 7
    argNames:
    - lsp
    - hdr
    - tlvs
    - stream
    - area
    - level
    - confusion
    argTypes:
    - struct isis_lsp*
    - struct isis_lsp_hdr*
    - struct isis_tlvs*
    - struct stream*
    - struct isis_area*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 551
    functionDepth: 10
    functionLinenumber: 551
    functionLinenumberEnd: 585
    functionName: lsp_update
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 3
    functionsReached:
    - lsp_clear_data
    - lsp_update_data
    - lsp_search
    - isis_te_lsp_event
    - flog_err
    - isis_spf_schedule
    - lsp_link_fragment
    - lsp_purge
    - LSP_FRAGMENT
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lsp_update(struct isis_lsp *lsp, struct isis_lsp_hdr *hdr,\n\t\tstruct
      isis_tlvs *tlvs, struct stream *stream,\n\t\tstruct isis_area *area, int level,
      bool confusion)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 575
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lspid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lsp.c:595,1
    - Dst: lsp_update_data
      Src: /src/frr/isisd/isis_lsp.c:596,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - hdr
    - tlvs
    - stream
    - lsp0
    - area
    - level
    argTypes:
    - struct isis_lsp_hdr*
    - struct isis_tlvs*
    - struct stream*
    - struct isis_lsp*
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 588
    functionDepth: 7
    functionLinenumber: 588
    functionLinenumberEnd: 600
    functionName: lsp_new_from_recv
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_update_data
    - lsp_link_fragment
    - XCALLOC
    linkageType: ''
    returnType: struct isis_lsp
    signature: "struct isis_lsp *lsp_new_from_recv(struct isis_lsp_hdr *hdr,\n\t\t\t\t
      \  struct isis_tlvs *tlvs,\n\t\t\t\t   struct stream *stream, struct isis_lsp
      *lsp0,\n\t\t\t\t   struct isis_area *area, int level)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_SIZE
      Src: /src/frr/isisd/isis_lsp.c:605,1
    - Dst: stream_free
      Src: /src/frr/isisd/isis_lsp.c:607,1
    - Dst: stream_new
      Src: /src/frr/isisd/isis_lsp.c:610,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 602
    functionDepth: 1
    functionLinenumber: 602
    functionLinenumberEnd: 611
    functionName: lsp_adjust_stream
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - stream_free
    - stream_new
    - STREAM_SIZE
    linkageType: ''
    returnType: void
    signature: void lsp_adjust_stream(struct isis_lsp *lsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lsp.c:620,1
    - Dst: lsp_adjust_stream
      Src: /src/frr/isisd/isis_lsp.c:623,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:627,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:634,1
    - Dst: put_lsp_hdr
      Src: /src/frr/isisd/isis_lsp.c:635,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 8
    argNames:
    - area
    - lsp_id
    - rem_lifetime
    - seqno
    - lsp_bits
    - checksum
    - lsp0
    - level
    argTypes:
    - struct isis_area*
    - uint8_t*
    - uint16_t
    - uint32_t
    - uint8_t
    - uint16_t
    - struct isis_lsp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 613
    functionDepth: 2
    functionLinenumber: 613
    functionLinenumberEnd: 642
    functionName: lsp_new
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 3
    functionsReached:
    - lsp_adjust_stream
    - XCALLOC
    - put_lsp_hdr
    - zlog_debug
    - lsp_link_fragment
    - memcpy
    linkageType: ''
    returnType: struct isis_lsp
    signature: "struct isis_lsp *lsp_new(struct isis_area *area, uint8_t *lsp_id,\n\t\t\t
      uint16_t rem_lifetime, uint32_t seqno,\n\t\t\t uint8_t lsp_bits, uint16_t checksum,\n\t\t\t
      struct isis_lsp *lsp0, int level)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lspdb_add
      Src: /src/frr/isisd/isis_lsp.c:646,1
    - Dst: isis_spf_schedule
      Src: /src/frr/isisd/isis_lsp.c:648,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_lsp.c:649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - head
    - lsp
    argTypes:
    - struct lspdb_head*
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 651
    functionName: lsp_insert
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - isis_te_lsp_event
    - lspdb_add
    - isis_spf_schedule
    linkageType: ''
    returnType: void
    signature: void lsp_insert(struct lspdb_head *head, struct isis_lsp *lsp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:662,1
    - Dst: lspdb_find_gteq
      Src: /src/frr/isisd/isis_lsp.c:664,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:666,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_lsp.c:671,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - head
    - start_id
    - stop_id
    - list
    argTypes:
    - struct lspdb_head*
    - uint8_t*
    - uint8_t*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 673
    functionName: lsp_build_list_nonzero_ht
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 2
    functionsReached:
    - lspdb_find_gteq
    - listnode_add
    - memcpy
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void lsp_build_list_nonzero_ht(struct lspdb_head *head, const uint8_t
      *start_id,\n\t\t\t       const uint8_t *stop_id, struct list *list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:666,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_lsp.c:671,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 672
    functionName: frr_each_from
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - listnode_add
    - memcmp
    linkageType: ''
    returnType: void
    signature: void frr_each_from (lspdb, head, lsp, start)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:677,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_lsp.c:686,1
    - Dst: stream_putw_at
      Src: /src/frr/isisd/isis_lsp.c:687,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct isis_lsp*
    assertStmts:
    - condition: (lsp)
      pos:
        line_end: 676
        line_start: 676
        source_file: /src/frr/isisd/isis_lsp.c
    constantsTouched: []
    func_position:
      end: 688
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 688
    functionName: lsp_set_time
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - stream_get_endp
    - assert
    - stream_putw_at
    linkageType: ''
    returnType: void
    signature: void lsp_set_time(struct isis_lsp *lsp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_lsp.c:697,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:702,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:703,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:704,1
    - Dst: cmd_hostname_get
      Src: /src/frr/isisd/isis_lsp.c:704,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:706,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:709,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:710,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:710,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:712,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:712,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 6
    argNames:
    - lsp_id
    - dest
    - dest_len
    - dynhost
    - frag
    - isis
    argTypes:
    - uint8_t*
    - char*
    - size_t
    - char
    - char
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 713
    functionName: lspid_print
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - cmd_hostname_get
    - dynhn_find_by_id
    - snprintf
    - LSP_PSEUDO_ID
    - memcmp
    - LSP_FRAGMENT
    linkageType: ''
    returnType: void
    signature: "void lspid_print(uint8_t *lsp_id, char *dest, size_t dest_len, char
      dynhost,\n\t\t char frag, struct isis *isis)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:727,1
    - Dst: ISIS_MASK_LSP_ATT_BITS
      Src: /src/frr/isisd/isis_lsp.c:728,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:730,1
    - Dst: ISIS_MASK_LSP_PARTITION_BIT
      Src: /src/frr/isisd/isis_lsp.c:731,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:733,1
    - Dst: ISIS_MASK_LSP_OL_BIT
      Src: /src/frr/isisd/isis_lsp.c:733,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - lsp_bits
    - buf
    - buf_size
    argTypes:
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 736
    functionName: lsp_bits2string
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - ISIS_MASK_LSP_PARTITION_BIT
    - ISIS_MASK_LSP_OL_BIT
    - ISIS_MASK_LSP_ATT_BITS
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *lsp_bits2string(uint8_t lsp_bits, char *buf, size_t buf_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsp_print_json
      Src: /src/frr/isisd/isis_lsp.c:743,1
    - Dst: lsp_print_vty
      Src: /src/frr/isisd/isis_lsp.c:745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - lsp
    - vty
    - json
    - dynhost
    - isis
    argTypes:
    - struct isis_lsp*
    - struct vty*
    - struct json_object*
    - char
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 747
    functionName: lsp_print_common
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - lsp_print_vty
    - lsp_print_json
    linkageType: ''
    returnType: void
    signature: "void lsp_print_common(struct isis_lsp *lsp, struct vty *vty, struct
      json_object *json,\n\t       char dynhost, struct isis *isis)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lspid_print
      Src: /src/frr/isisd/isis_lsp.c:758,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_lsp.c:759,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_lsp.c:760,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:761,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:762,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_lsp.c:763,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_lsp.c:764,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:765,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_lsp.c:766,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:767,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:769,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:771,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_lsp.c:773,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_lsp.c:775,1
    - Dst: lsp_bits2string
      Src: /src/frr/isisd/isis_lsp.c:776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - lsp
    - json
    - dynhost
    - isis
    argTypes:
    - struct isis_lsp*
    - struct json_object*
    - char
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 749
    functionDepth: 2
    functionLinenumber: 749
    functionLinenumberEnd: 777
    functionName: lsp_print_json
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 3
    functionsReached:
    - json_object_new_object
    - lsp_bits2string
    - lspid_print
    - snprintf
    - snprintfrr
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void lsp_print_json(struct isis_lsp *lsp, struct json_object *json,\n\t
      \      char dynhost, struct isis *isis)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lspid_print
      Src: /src/frr/isisd/isis_lsp.c:786,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:787,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:788,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:789,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:790,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_lsp.c:792,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:794,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:796,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:797,1
    - Dst: lsp_bits2string
      Src: /src/frr/isisd/isis_lsp.c:797,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - lsp
    - vty
    - dynhost
    - isis
    argTypes:
    - struct isis_lsp*
    - struct vty*
    - char
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 779
    functionDepth: 2
    functionLinenumber: 779
    functionLinenumberEnd: 798
    functionName: lsp_print_vty
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 3
    functionsReached:
    - lsp_bits2string
    - lspid_print
    - vty_out
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void lsp_print_vty(struct isis_lsp *lsp, struct vty *vty,\n\t       char
      dynhost, struct isis *isis)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lsp_print_json
      Src: /src/frr/isisd/isis_lsp.c:805,1
    - Dst: isis_format_tlvs
      Src: /src/frr/isisd/isis_lsp.c:807,1
    - Dst: lsp_print_vty
      Src: /src/frr/isisd/isis_lsp.c:810,1
    - Dst: vty_multiline
      Src: /src/frr/isisd/isis_lsp.c:812,1
    - Dst: isis_format_tlvs
      Src: /src/frr/isisd/isis_lsp.c:813,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_lsp.c:814,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - lsp
    - vty
    - json
    - dynhost
    - isis
    argTypes:
    - struct isis_lsp*
    - struct vty*
    - struct json_object*
    - char
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 800
    functionDepth: 6
    functionLinenumber: 800
    functionLinenumberEnd: 816
    functionName: lsp_print_detail
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 3
    functionsReached:
    - vty_out
    - lsp_print_json
    - vty_multiline
    - lsp_print_vty
    - isis_format_tlvs
    linkageType: ''
    returnType: void
    signature: "void lsp_print_detail(struct isis_lsp *lsp, struct vty *vty,\n\t\t\t
      \    struct json_object *json, char dynhost,\n\t\t\t     struct isis *isis)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lsp_print_common
      Src: /src/frr/isisd/isis_lsp.c:828,1
    - Dst: lsp_print_detail
      Src: /src/frr/isisd/isis_lsp.c:833,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - vty
    - json
    - head
    - detail
    - dynhost
    - isis
    argTypes:
    - struct vty*
    - struct json_object*
    - struct lspdb_head*
    - char
    - char
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 819
    functionDepth: 7
    functionLinenumber: 819
    functionLinenumberEnd: 839
    functionName: lsp_print_all
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 2
    functionsReached:
    - lsp_print_common
    - lsp_print_detail
    linkageType: ''
    returnType: int
    signature: "int lsp_print_all(struct vty *vty, struct json_object *json,\n\t\t
      \ struct lspdb_head *head, char detail, char dynhost,\n\t\t  struct isis *isis)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_print_common
      Src: /src/frr/isisd/isis_lsp.c:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 830
    functionName: frr_each
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 78
    functionsReached:
    - lsp_print_common
    linkageType: ''
    returnType: void
    signature: void frr_each (lspdb, head, lsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_print_detail
      Src: /src/frr/isisd/isis_lsp.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 832
    functionDepth: 7
    functionLinenumber: 832
    functionLinenumberEnd: 835
    functionName: frr_each
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 78
    functionsReached:
    - lsp_print_detail
    linkageType: ''
    returnType: void
    signature: void frr_each (lspdb, head, lsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_lsp.c:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - area
    - level
    argTypes:
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 858
    functionName: lsp_rem_lifetime
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - isis_jitter
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t lsp_rem_lifetime(struct isis_area *area, int level)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_lsp.c:868,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - lsp
    - rem_lifetime
    argTypes:
    - struct isis_lsp*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 860
    functionDepth: 2
    functionLinenumber: 860
    functionLinenumberEnd: 881
    functionName: lsp_refresh_time
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - isis_jitter
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t lsp_refresh_time(struct isis_lsp *lsp, uint16_t rem_lifetime)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:891,1
    - Dst: isis_tlvs_add_oldstyle_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:894,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:898,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:904,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:905,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:909,1
    - Dst: isis_tlvs_add_extended_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:912,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - lsp
    - area
    - ipv4
    - metric
    argTypes:
    - struct isis_lsp*
    - struct isis_area*
    - struct prefix_ipv4*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 883
    functionDepth: 5
    functionLinenumber: 883
    functionLinenumberEnd: 915
    functionName: lsp_build_internal_reach_ipv4
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - isis_tlvs_add_extended_ip_reach
    - isis_flex_algo_elected_supported
    - isis_tlvs_add_oldstyle_ip_reach
    - lsp_debug
    - isis_sr_cfg_prefix_find
    - flex_algo_id_valid
    linkageType: ''
    returnType: void
    signature: "void lsp_build_internal_reach_ipv4(struct isis_lsp *lsp,\n\t\t\t\t\t
      \ struct isis_area *area,\n\t\t\t\t\t  struct prefix_ipv4 *ipv4,\n\t\t\t\t\t
      \ uint32_t metric)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:924,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:930,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:931,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:934,1
    - Dst: isis_tlvs_add_ipv6_reach
      Src: /src/frr/isisd/isis_lsp.c:937,1
    - Dst: isis_area_ipv6_topology
      Src: /src/frr/isisd/isis_lsp.c:937,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - lsp
    - area
    - ipv6
    - metric
    argTypes:
    - struct isis_lsp*
    - struct isis_area*
    - struct prefix_ipv6*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 917
    functionDepth: 5
    functionLinenumber: 917
    functionLinenumberEnd: 939
    functionName: lsp_build_internal_reach_ipv6
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - isis_flex_algo_elected_supported
    - isis_tlvs_add_ipv6_reach
    - lsp_debug
    - isis_sr_cfg_prefix_find
    - flex_algo_id_valid
    - isis_area_ipv6_topology
    linkageType: ''
    returnType: void
    signature: "void lsp_build_internal_reach_ipv6(struct isis_lsp *lsp,\n\t\t\t\t\t
      \ struct isis_area *area,\n\t\t\t\t\t  struct prefix_ipv6 *ipv6,\n\t\t\t\t\t
      \ uint32_t metric)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_ext_reach
      Src: /src/frr/isisd/isis_lsp.c:945,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_lsp.c:949,1
    - Dst: route_next
      Src: /src/frr/isisd/isis_lsp.c:950,1
    - Dst: isis_tlvs_add_oldstyle_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:964,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:973,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:974,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:978,1
    - Dst: isis_tlvs_add_extended_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:982,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 2
    argNames:
    - lsp
    - area
    argTypes:
    - struct isis_lsp*
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 942
    functionDepth: 5
    functionLinenumber: 942
    functionLinenumberEnd: 986
    functionName: lsp_build_ext_reach_ipv4
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - isis_tlvs_add_extended_ip_reach
    - get_ext_reach
    - isis_flex_algo_elected_supported
    - route_top
    - isis_tlvs_add_oldstyle_ip_reach
    - route_next
    - isis_sr_cfg_prefix_find
    - flex_algo_id_valid
    linkageType: ''
    returnType: void
    signature: "void lsp_build_ext_reach_ipv4(struct isis_lsp *lsp,\n\t\t\t\t     struct
      isis_area *area)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_ext_reach
      Src: /src/frr/isisd/isis_lsp.c:992,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_lsp.c:996,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_lsp.c:997,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/isisd/isis_lsp.c:1003,1
    - Dst: flex_algo_id_valid
      Src: /src/frr/isisd/isis_lsp.c:1017,1
    - Dst: isis_flex_algo_elected_supported
      Src: /src/frr/isisd/isis_lsp.c:1018,1
    - Dst: isis_sr_cfg_prefix_find
      Src: /src/frr/isisd/isis_lsp.c:1022,1
    - Dst: isis_tlvs_add_ipv6_reach
      Src: /src/frr/isisd/isis_lsp.c:1026,1
    - Dst: isis_area_ipv6_topology
      Src: /src/frr/isisd/isis_lsp.c:1027,1
    - Dst: isis_area_ipv6_dstsrc_enabled
      Src: /src/frr/isisd/isis_lsp.c:1029,1
    - Dst: isis_tlvs_add_ipv6_dstsrc_reach
      Src: /src/frr/isisd/isis_lsp.c:1030,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 2
    argNames:
    - lsp
    - area
    argTypes:
    - struct isis_lsp*
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 988
    functionDepth: 5
    functionLinenumber: 988
    functionLinenumberEnd: 1035
    functionName: lsp_build_ext_reach_ipv6
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - get_ext_reach
    - isis_flex_algo_elected_supported
    - srcdest_route_next
    - route_top
    - isis_area_ipv6_dstsrc_enabled
    - isis_tlvs_add_ipv6_dstsrc_reach
    - srcdest_rnode_prefixes
    - isis_tlvs_add_ipv6_reach
    - isis_sr_cfg_prefix_find
    - flex_algo_id_valid
    - isis_area_ipv6_topology
    linkageType: ''
    returnType: void
    signature: "void lsp_build_ext_reach_ipv6(struct isis_lsp *lsp,\n\t\t\t\t     struct
      isis_area *area)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_build_ext_reach_ipv4
      Src: /src/frr/isisd/isis_lsp.c:1039,1
    - Dst: lsp_build_ext_reach_ipv6
      Src: /src/frr/isisd/isis_lsp.c:1040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lsp
    - area
    argTypes:
    - struct isis_lsp*
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1037
    functionDepth: 6
    functionLinenumber: 1037
    functionLinenumberEnd: 1041
    functionName: lsp_build_ext_reach
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_build_ext_reach_ipv4
    - lsp_build_ext_reach_ipv6
    linkageType: ''
    returnType: void
    signature: void lsp_build_ext_reach(struct isis_lsp *lsp, struct isis_area *area)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1049,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:1050,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:1052,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1054,1
    - Dst: lsp_link_fragment
      Src: /src/frr/isisd/isis_lsp.c:1056,1
    - Dst: lsp_new
      Src: /src/frr/isisd/isis_lsp.c:1060,1
    - Dst: lsp_bits_generate
      Src: /src/frr/isisd/isis_lsp.c:1061,1
    - Dst: lsp_insert
      Src: /src/frr/isisd/isis_lsp.c:1065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - frag_num
    - lsp0
    - area
    - level
    argTypes:
    - uint8_t
    - struct isis_lsp*
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1043
    functionDepth: 12
    functionLinenumber: 1043
    functionLinenumberEnd: 1067
    functionName: lsp_next_frag
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_clear_data
    - lsp_search
    - lsp_insert
    - lsp_bits_generate
    - lsp_link_fragment
    - lsp_new
    - LSP_FRAGMENT
    - memcpy
    linkageType: ''
    returnType: struct isis_lsp
    signature: "struct isis_lsp *lsp_next_frag(uint8_t frag_num, struct isis_lsp *lsp0,\n\t\t\t\t
      \     struct isis_area *area, int level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1079,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:1080,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1081,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_lsp.c:1083,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1084,1
    - Dst: lsp_bits_generate
      Src: /src/frr/isisd/isis_lsp.c:1087,1
    - Dst: lsp_add_auth
      Src: /src/frr/isisd/isis_lsp.c:1090,1
    - Dst: isis_tlvs_add_area_addresses
      Src: /src/frr/isisd/isis_lsp.c:1092,1
    - Dst: if
      Src: /src/frr/isisd/isis_lsp.c:1095,1
    - Dst: if
      Src: /src/frr/isisd/isis_lsp.c:1098,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1099,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1106,1
    - Dst: isis_tlvs_set_protocols_supported
      Src: /src/frr/isisd/isis_lsp.c:1112,1
    - Dst: area_is_mt
      Src: /src/frr/isisd/isis_lsp.c:1115,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1116,1
    - Dst: area_mt_settings
      Src: /src/frr/isisd/isis_lsp.c:1121,1
    - Dst: isis_tlvs_add_mt_router_info
      Src: /src/frr/isisd/isis_lsp.c:1123,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1126,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_lsp.c:1127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - lsp
    - area
    argTypes:
    - struct isis_lsp*
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1073
    functionDepth: 12
    functionLinenumber: 1073
    functionLinenumberEnd: 1129
    functionName: lsp_build
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_clear_data
    - isis_tlvs_set_protocols_supported
    - ALL_LIST_ELEMENTS_RO
    - isis_tlvs_add_area_addresses
    - lsp_bits_generate
    - lsp_add_auth
    - area_is_mt
    - isis_tlvs_add_mt_router_info
    - isis_mtid2str
    - lsp_debug
    - isis_alloc_tlvs
    - if
    - area_mt_settings
    linkageType: ''
    returnType: void
    signature: void lsp_build(struct isis_lsp *lsp, struct isis_area *area)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_lsp.c:1534,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1535,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:1537,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_lsp.c:1540,1
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1546,1
    - Dst: lsp_build
      Src: /src/frr/isisd/isis_lsp.c:1547,1
    - Dst: lsp_rem_lifetime
      Src: /src/frr/isisd/isis_lsp.c:1548,1
    - Dst: time
      Src: /src/frr/isisd/isis_lsp.c:1550,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:1551,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:1553,1
    - Dst: lsp_bits_generate
      Src: /src/frr/isisd/isis_lsp.c:1562,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:1570,1
    - Dst: lsp_seqno_update
      Src: /src/frr/isisd/isis_lsp.c:1572,1
    - Dst: lsp_refresh_time
      Src: /src/frr/isisd/isis_lsp.c:1574,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lsp.c:1575,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:1580,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1586,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 2
    argNames:
    - area
    - level
    argTypes:
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1522
    functionDepth: 13
    functionLinenumber: 1522
    functionLinenumberEnd: 1591
    functionName: lsp_regenerate
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - sched_debug
    - lsp_clear_data
    - lsp_seqno_update
    - memset
    - lsp_search
    - ALL_LIST_ELEMENTS_RO
    - time
    - lsp_rem_lifetime
    - lsp_bits_generate
    - lsp_refresh_time
    - flog_err
    - lsp_build
    - zlog_debug
    - event_add_timer
    - lsp_flood
    - memcpy
    linkageType: ''
    returnType: int
    signature: int lsp_regenerate(struct isis_area *area, int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_lsp.c:1598,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:1600,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:1604,1
    - Dst: monotime_since
      Src: /src/frr/isisd/isis_lsp.c:1618,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1621,1
    - Dst: _lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_lsp.c:1623,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1628,1
    - Dst: lsp_regenerate
      Src: /src/frr/isisd/isis_lsp.c:1631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (area)
      pos:
        line_end: 1603
        line_start: 1603
        source_file: /src/frr/isisd/isis_lsp.c
    - condition: (arg)
      pos:
        line_end: 1599
        line_start: 1599
        source_file: /src/frr/isisd/isis_lsp.c
    constantsTouched: []
    func_position:
      end: 1632
      start: 1596
    functionDepth: 14
    functionLinenumber: 1596
    functionLinenumberEnd: 1632
    functionName: lsp_refresh
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - sched_debug
    - _lsp_regenerate_schedule
    - lsp_regenerate
    - monotime_since
    - EVENT_ARG
    - assert
    linkageType: ''
    returnType: void
    signature: void lsp_refresh(struct event *thread)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1650,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_lsp.c:1652,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1656,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:1657,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:1657,1
    - Dst: time
      Src: /src/frr/isisd/isis_lsp.c:1658,1
    - Dst: monotime
      Src: /src/frr/isisd/isis_lsp.c:1665,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1668,1
    - Dst: event_timer_remain
      Src: /src/frr/isisd/isis_lsp.c:1678,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1680,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:1687,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1689,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1698,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_lsp.c:1702,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1708,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1716,1
    - Dst: monotime_since
      Src: /src/frr/isisd/isis_lsp.c:1723,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1730,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:1734,1
    - Dst: event_add_timer_msec
      Src: /src/frr/isisd/isis_lsp.c:1741,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:1747,1
    - Dst: lsp_regenerate_schedule_pseudo
      Src: /src/frr/isisd/isis_lsp.c:1748,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 7
    argNames:
    - area
    - level
    - all_pseudo
    - postpone
    - func
    - file
    - line
    argTypes:
    - struct isis_area*
    - int
    - int
    - bool
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1752
    functionName: _lsp_regenerate_schedule
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - sched_debug
    - lsp_regenerate_schedule_pseudo
    - event_timer_remain
    - LSP_PSEUDO_ID
    - lsp_search
    - ALL_LIST_ELEMENTS_RO
    - monotime
    - time
    - event_add_timer_msec
    - circuit_t2string
    - EVENT_OFF
    - monotime_since
    - LSP_FRAGMENT
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int _lsp_regenerate_schedule(struct isis_area *area, int level,\n\t\t\t
      \    int all_pseudo, bool postpone,\n\t\t\t     const char *func, const char
      *file,\n\t\t\t     int line)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lsp_clear_data
      Src: /src/frr/isisd/isis_lsp.c:1770,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_lsp.c:1771,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1772,1
    - Dst: lsp_bits_generate
      Src: /src/frr/isisd/isis_lsp.c:1779,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1787,1
    - Dst: isis_tlvs_add_oldstyle_reach
      Src: /src/frr/isisd/isis_lsp.c:1791,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1792,1
    - Dst: area_is_mt
      Src: /src/frr/isisd/isis_lsp.c:1796,1
    - Dst: isis_tlvs_add_extended_reach
      Src: /src/frr/isisd/isis_lsp.c:1800,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1801,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_lsp.c:1805,1
    - Dst: isis_adj_build_up_list
      Src: /src/frr/isisd/isis_lsp.c:1806,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:1808,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1810,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1823,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1829,1
    - Dst: isis_tlvs_add_oldstyle_reach
      Src: /src/frr/isisd/isis_lsp.c:1831,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1832,1
    - Dst: isis_tlvs_add_extended_reach
      Src: /src/frr/isisd/isis_lsp.c:1837,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_lsp.c:1840,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_lsp.c:1845,1
    - Dst: lsp_generate_pseudo
      Src: /src/frr/isisd/isis_lsp.c:1849,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1862,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:1864,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:1869,1
    - Dst: lsp_regenerate_schedule_pseudo
      Src: /src/frr/isisd/isis_lsp.c:1870,1
    - Dst: lsp_rem_lifetime
      Src: /src/frr/isisd/isis_lsp.c:1872,1
    - Dst: lsp_new
      Src: /src/frr/isisd/isis_lsp.c:1874,1
    - Dst: lsp_bits_generate
      Src: /src/frr/isisd/isis_lsp.c:1875,1
    - Dst: lsp_build_pseudo
      Src: /src/frr/isisd/isis_lsp.c:1881,1
    - Dst: lsp_pack_pdu
      Src: /src/frr/isisd/isis_lsp.c:1882,1
    - Dst: lsp_insert
      Src: /src/frr/isisd/isis_lsp.c:1884,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:1885,1
    - Dst: lsp_refresh_time
      Src: /src/frr/isisd/isis_lsp.c:1887,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_lsp.c:1888,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lsp.c:1891,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lsp.c:1895,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:1900,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 45
    argCount: 3
    argNames:
    - lsp
    - circuit
    - level
    argTypes:
    - struct isis_lsp*
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1761
    functionDepth: 12
    functionLinenumber: 1761
    functionLinenumberEnd: 1908
    functionName: lsp_build_pseudo
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - lsp_clear_data
    - list_delete
    - lsp_bits_generate
    - lsp_refresh_time
    - isis_alloc_tlvs
    - lsp_regenerate_schedule_pseudo
    - ALL_LIST_ELEMENTS_RO
    - isis_tlvs_add_extended_reach
    - isis_adj_build_up_list
    - zlog_debug
    - lsp_flood
    - lsp_build_pseudo
    - LSP_PSEUDO_ID
    - area_is_mt
    - lsp_pack_pdu
    - EVENT_OFF
    - lsp_debug
    - event_add_timer
    - lsp_new
    - isis_tlvs_add_oldstyle_reach
    - memcpy
    - lsp_generate_pseudo
    - lsp_search
    - lsp_insert
    - lsp_rem_lifetime
    - list_new
    linkageType: ''
    returnType: void
    signature: "void lsp_build_pseudo(struct isis_lsp *lsp, struct isis_circuit *circuit,\n\t\t\t
      \    int level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1788
    functionDepth: 0
    functionLinenumber: 1788
    functionLinenumberEnd: 1788
    functionName: LSP_PSEUDO_ID
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_PSEUDO_ID(ne_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1863
    functionDepth: 0
    functionLinenumber: 1863
    functionLinenumberEnd: 1863
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lsp_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1923,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:1924,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:1927,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_lsp.c:1930,1
    - Dst: lsp_rem_lifetime
      Src: /src/frr/isisd/isis_lsp.c:1936,1
    - Dst: lsp_build_pseudo
      Src: /src/frr/isisd/isis_lsp.c:1938,1
    - Dst: lsp_inc_seqno
      Src: /src/frr/isisd/isis_lsp.c:1939,1
    - Dst: time
      Src: /src/frr/isisd/isis_lsp.c:1940,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:1941,1
    - Dst: lsp_refresh_time
      Src: /src/frr/isisd/isis_lsp.c:1943,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lsp.c:1945,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lsp.c:1949,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:1954,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1910
    functionDepth: 13
    functionLinenumber: 1910
    functionLinenumberEnd: 1962
    functionName: lsp_regenerate_pseudo
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_inc_seqno
    - lsp_build_pseudo
    - LSP_PSEUDO_ID
    - lsp_search
    - time
    - lsp_rem_lifetime
    - lsp_refresh_time
    - flog_err
    - zlog_debug
    - event_add_timer
    - lsp_flood
    - memcpy
    linkageType: ''
    returnType: int
    signature: int lsp_regenerate_pseudo(struct isis_circuit *circuit, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1925
    functionDepth: 0
    functionLinenumber: 1925
    functionLinenumberEnd: 1925
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lsp_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_lsp.c:1972,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:1979,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:1980,1
    - Dst: lsp_purge_pseudo
      Src: /src/frr/isisd/isis_lsp.c:1982,1
    - Dst: lsp_regenerate_pseudo
      Src: /src/frr/isisd/isis_lsp.c:1986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1987
      start: 1967
    functionDepth: 14
    functionLinenumber: 1967
    functionLinenumberEnd: 1987
    functionName: lsp_l1_refresh_pseudo
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - LSP_PSEUDO_ID
    - lsp_regenerate_pseudo
    - EVENT_ARG
    - lsp_purge_pseudo
    - memcpy
    linkageType: ''
    returnType: void
    signature: void lsp_l1_refresh_pseudo(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1981
      start: 1981
    functionDepth: 0
    functionLinenumber: 1981
    functionLinenumberEnd: 1981
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_lsp.c:1994,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:2001,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:2002,1
    - Dst: lsp_purge_pseudo
      Src: /src/frr/isisd/isis_lsp.c:2004,1
    - Dst: lsp_regenerate_pseudo
      Src: /src/frr/isisd/isis_lsp.c:2008,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1989
    functionDepth: 14
    functionLinenumber: 1989
    functionLinenumberEnd: 2009
    functionName: lsp_l2_refresh_pseudo
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - LSP_PSEUDO_ID
    - lsp_regenerate_pseudo
    - EVENT_ARG
    - lsp_purge_pseudo
    - memcpy
    linkageType: ''
    returnType: void
    signature: void lsp_l2_refresh_pseudo(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 2003
    functionDepth: 0
    functionLinenumber: 2003
    functionLinenumberEnd: 2003
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(id)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2024,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_lsp.c:2026,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:2029,1
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:2030,1
    - Dst: time
      Src: /src/frr/isisd/isis_lsp.c:2032,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2035,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2040,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2046,1
    - Dst: event_timer_remain
      Src: /src/frr/isisd/isis_lsp.c:2053,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2055,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:2062,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2064,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2073,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_lsp.c:2077,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2083,1
    - Dst: sched_debug
      Src: /src/frr/isisd/isis_lsp.c:2088,1
    - Dst: event_add_timer_msec
      Src: /src/frr/isisd/isis_lsp.c:2096,1
    - Dst: event_add_timer_msec
      Src: /src/frr/isisd/isis_lsp.c:2100,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2107
      start: 2011
    functionDepth: 1
    functionLinenumber: 2011
    functionLinenumberEnd: 2107
    functionName: lsp_regenerate_schedule_pseudo
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 2
    functionsReached:
    - sched_debug
    - event_timer_remain
    - LSP_PSEUDO_ID
    - lsp_search
    - event_add_timer_msec
    - circuit_t2string
    - EVENT_OFF
    - memcpy
    - time
    linkageType: ''
    returnType: int
    signature: int lsp_regenerate_schedule_pseudo(struct isis_circuit *circuit, int
      level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 2031
    functionDepth: 0
    functionLinenumber: 2031
    functionLinenumberEnd: 2031
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lsp_id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_lsp.c:2121,1
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:2122,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_lsp.c:2124,1
    - Dst: fabricd_initial_sync_circuit
      Src: /src/frr/isisd/isis_lsp.c:2126,1
    - Dst: lspdb_first
      Src: /src/frr/isisd/isis_lsp.c:2132,1
    - Dst: frr_each_from
      Src: /src/frr/isisd/isis_lsp.c:2133,1
    - Dst: lsp_set_time
      Src: /src/frr/isisd/isis_lsp.c:2144,1
    - Dst: lsp_purge
      Src: /src/frr/isisd/isis_lsp.c:2157,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:2159,1
    - Dst: isis_spf_schedule
      Src: /src/frr/isisd/isis_lsp.c:2162,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_lsp.c:2163,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:2167,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:2176,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_lsp.c:2178,1
    - Dst: lspdb_next
      Src: /src/frr/isisd/isis_lsp.c:2181,1
    - Dst: lspdb_del
      Src: /src/frr/isisd/isis_lsp.c:2185,1
    - Dst: lsp_destroy
      Src: /src/frr/isisd/isis_lsp.c:2186,1
    - Dst: ISIS_CHECK_FLAG
      Src: /src/frr/isisd/isis_lsp.c:2192,1
    - Dst: isis_tx_queue_len
      Src: /src/frr/isisd/isis_lsp.c:2200,1
    - Dst: fabricd_initial_sync_finish
      Src: /src/frr/isisd/isis_lsp.c:2201,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (area)
      pos:
        line_end: 2121
        line_start: 2121
        source_file: /src/frr/isisd/isis_lsp.c
    constantsTouched: []
    func_position:
      end: 2203
      start: 2113
    functionDepth: 10
    functionLinenumber: 2113
    functionLinenumberEnd: 2203
    functionName: lsp_tick
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_destroy
    - memcmp
    - isis_tx_queue_len
    - lsp_set_time
    - fabricd_initial_sync_finish
    - ISIS_CHECK_FLAG
    - isis_te_lsp_event
    - zlog_debug
    - isis_spf_schedule
    - EVENT_ARG
    - lsp_flood
    - LSP_FRAGMENT
    - assert
    - lspdb_next
    - fabricd_initial_sync_circuit
    - lsp_purge
    - event_add_timer
    - lspdb_del
    - lspdb_first
    - frr_each_from
    linkageType: ''
    returnType: void
    signature: void lsp_tick(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_lsp.c:2209,1
    - Dst: lsp_purge
      Src: /src/frr/isisd/isis_lsp.c:2213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - id
    - circuit
    - level
    argTypes:
    - uint8_t*
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2214
      start: 2205
    functionDepth: 10
    functionLinenumber: 2205
    functionLinenumberEnd: 2214
    functionName: lsp_purge_pseudo
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 4
    functionsReached:
    - lsp_search
    - lsp_purge
    linkageType: ''
    returnType: void
    signature: void lsp_purge_pseudo(uint8_t *id, struct isis_circuit *circuit, int
      level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_lsp.c:2228,1
    - Dst: lsp_adjust_stream
      Src: /src/frr/isisd/isis_lsp.c:2231,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_lsp.c:2235,1
    - Dst: lsp_purge_add_poi
      Src: /src/frr/isisd/isis_lsp.c:2238,1
    - Dst: lsp_pack_pdu
      Src: /src/frr/isisd/isis_lsp.c:2240,1
    - Dst: lsp_insert
      Src: /src/frr/isisd/isis_lsp.c:2242,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:2243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - level
    - hdr
    - area
    argTypes:
    - int
    - struct isis_lsp_hdr*
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 2220
    functionDepth: 9
    functionLinenumber: 2220
    functionLinenumberEnd: 2246
    functionName: lsp_purge_non_exist
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_adjust_stream
    - XCALLOC
    - lsp_insert
    - lsp_pack_pdu
    - lsp_purge_add_poi
    - lsp_flood
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lsp_purge_non_exist(int level, struct isis_lsp_hdr *hdr,\n\t\t\t
      struct isis_area *area)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_lsp.c:2253,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:2259,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_lsp.c:2261,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_lsp.c:2264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - lsp
    - set
    argTypes:
    - struct isis_lsp*
    - bool
    assertStmts:
    - condition: (lsp)
      pos:
        line_end: 2252
        line_start: 2252
        source_file: /src/frr/isisd/isis_lsp.c
    constantsTouched: []
    func_position:
      end: 2267
      start: 2248
    functionDepth: 1
    functionLinenumber: 2248
    functionLinenumberEnd: 2267
    functionName: lsp_set_all_srmflags
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - isis_tx_queue_add
    - ALL_LIST_ELEMENTS_RO
    - assert
    - isis_tx_queue_del
    linkageType: ''
    returnType: void
    signature: void lsp_set_all_srmflags(struct isis_lsp *lsp, bool set)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_lsp.c:2273,1
    - Dst: lsp_set_all_srmflags
      Src: /src/frr/isisd/isis_lsp.c:2280,1
    - Dst: fabricd_lsp_flood
      Src: /src/frr/isisd/isis_lsp.c:2282,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_lsp.c:2285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - lsp
    - circuit
    - func
    - file
    - line
    argTypes:
    - struct isis_lsp*
    - struct isis_circuit*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2286
      start: 2269
    functionDepth: 2
    functionLinenumber: 2269
    functionLinenumberEnd: 2286
    functionName: _lsp_flood
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 1
    functionsReached:
    - lsp_set_all_srmflags
    - zlog_debug
    - isis_tx_queue_del
    - fabricd_lsp_flood
    linkageType: ''
    returnType: void
    signature: "void _lsp_flood(struct isis_lsp *lsp, struct isis_circuit *circuit,\n\t\tconst
      char *func, const char *file, int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_lsp.c:2290,1
    - Dst: isis_reset_attach_bit
      Src: /src/frr/isisd/isis_lsp.c:2295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2298
      start: 2288
    functionDepth: 12
    functionLinenumber: 2288
    functionLinenumberEnd: 2298
    functionName: lsp_handle_adj_state_change
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 0
    functionsReached:
    - lsp_regenerate_schedule
    - isis_reset_attach_bit
    linkageType: ''
    returnType: int
    signature: int lsp_handle_adj_state_change(struct isis_adjacency *adj)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:2307,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_lsp.c:2322,1
    - Dst: isis_lookup_mt_items
      Src: /src/frr/isisd/isis_lsp.c:2346,1
    - Dst: isis_lookup_mt_items
      Src: /src/frr/isisd/isis_lsp.c:2368,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:2385,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:2386,1
    - Dst: isis_lsp_iterate_ip_reach
      Src: /src/frr/isisd/isis_lsp.c:2390,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 38
    argCount: 5
    argNames:
    - lsp
    - family
    - mtid
    - cb
    - arg
    argTypes:
    - struct isis_lsp*
    - int
    - uint16_t
    - lsp_ip_reach_iter_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2397
      start: 2304
    functionDepth: 2
    functionLinenumber: 2304
    functionLinenumberEnd: 2397
    functionName: isis_lsp_iterate_ip_reach
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 4
    functionsReached:
    - LSP_PSEUDO_ID
    - ALL_LIST_ELEMENTS_RO
    - isis_lsp_iterate_ip_reach
    - isis_lookup_mt_items
    - array_size
    - LSP_FRAGMENT
    linkageType: ''
    returnType: int
    signature: "int isis_lsp_iterate_ip_reach(struct isis_lsp *lsp, int family, uint16_t
      mtid,\n\t\t\t      lsp_ip_reach_iter_cb cb, void *arg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LSP_PSEUDO_ID
      Src: /src/frr/isisd/isis_lsp.c:2406,1
    - Dst: isis_get_mt_items
      Src: /src/frr/isisd/isis_lsp.c:2433,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_lsp.c:2448,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_lsp.c:2449,1
    - Dst: isis_lsp_iterate_is_reach
      Src: /src/frr/isisd/isis_lsp.c:2453,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 29
    argCount: 4
    argNames:
    - lsp
    - mtid
    - cb
    - arg
    argTypes:
    - struct isis_lsp*
    - uint16_t
    - lsp_is_reach_iter_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2459
      start: 2403
    functionDepth: 2
    functionLinenumber: 2403
    functionLinenumberEnd: 2459
    functionName: isis_lsp_iterate_is_reach
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 4
    functionsReached:
    - isis_lsp_iterate_is_reach
    - LSP_PSEUDO_ID
    - ALL_LIST_ELEMENTS_RO
    - LSP_FRAGMENT
    - isis_get_mt_items
    linkageType: ''
    returnType: int
    signature: "int isis_lsp_iterate_is_reach(struct isis_lsp *lsp, uint16_t mtid,\n\t\t\t
      \     lsp_is_reach_iter_cb cb, void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/isisd/isis_lsp.c:2464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2461
    functionDepth: 1
    functionLinenumber: 2461
    functionLinenumberEnd: 2466
    functionName: lsp_init
    functionSourceFile: /src/frr/isisd/isis_lsp.c
    functionUses: 2
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void lsp_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 18
    functionName: ils_debug
    functionSourceFile: /src/frr/isisd/isis_ldp_sync.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ils_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - area
    - ','
    - level
    - ','
    - all_pseudo
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: lsp_regenerate_schedule
    functionSourceFile: /src/frr/isisd/isis_lsp.h
    functionUses: 84
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsp_regenerate_schedule(area, level, all_pseudo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: LSP_PSEUDO_ID
    functionSourceFile: /src/frr/isisd/isis_lsp.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LSP_PSEUDO_ID(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_lsp.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LSP_FRAGMENT(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: OWNLSPID
    functionSourceFile: /src/frr/isisd/isis_lsp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OWNLSPID(I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lsp
    - ','
    - circuit
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: lsp_flood
    functionSourceFile: /src/frr/isisd/isis_lsp.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lsp_flood(lsp, circuit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:88,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:90,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:91,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:92,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:93,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:94,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:94,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: cli_show_router_isis
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_router_isis(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: cli_show_router_isis_end
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void cli_show_router_isis_end(struct vty *vty, const struct lyd_node
      *dnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:208,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:209,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:210,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: cli_show_ip_isis_ipv4
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_ipv4(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:217,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:218,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:219,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: cli_show_ip_isis_ipv6
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_ipv6(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:283,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:285,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:287,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:290,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:291,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 293
    functionName: cli_show_ip_isis_bfd_monitoring
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_string
    - yang_dnode_exists
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_bfd_monitoring(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:312,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 313
    functionName: cli_show_isis_area_address
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_area_address(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_cli.c:347,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:351,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:354,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:357,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 360
    functionName: cli_show_isis_is_type
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_is_type(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:380,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:381,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 384
    functionName: cli_show_isis_dynamic_hostname
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_dynamic_hostname(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:402,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:403,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 405
    functionName: cli_show_isis_overload
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_overload(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:439,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 441
    functionName: cli_show_isis_overload_on_startup
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_overload_on_startup(struct vty *vty,\n\t\t\t\t
      \      const struct lyd_node *dnode,\n\t\t\t\t       bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:460,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:461,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 464
    functionName: cli_show_advertise_high_metrics
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_advertise_high_metrics(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:483,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:484,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 486
    functionName: cli_show_isis_attached_send
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_attached_send(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:509,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:510,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 512
    functionName: cli_show_isis_attached_receive
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_attached_receive(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_cli.c:545,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:549,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:552,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:555,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 558
    functionName: cli_show_isis_metric_style
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_metric_style(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:590,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:591,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:592,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:593,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:594,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:595,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 597
    functionName: cli_show_isis_area_pwd
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_area_pwd(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:640,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:641,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:642,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:643,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:644,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:645,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 647
    functionName: cli_show_isis_domain_pwd
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_domain_pwd(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:864,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:866,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:868,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:870,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:872,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:874,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:875,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:876,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:876,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:877,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:881,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:884,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 888
    functionName: cli_show_isis_lsp_timers
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_lsp_timers(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:915,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 916
    functionName: cli_show_isis_lsp_mtu
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_lsp_mtu(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:935,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:936,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 931
    functionDepth: 1
    functionLinenumber: 931
    functionLinenumberEnd: 939
    functionName: cli_show_advertise_passive_only
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_advertise_passive_only(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:983,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:984,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:986,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:987,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:989,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:990,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 992
    functionName: cli_show_isis_spf_min_interval
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_spf_min_interval(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1052,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1054,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1055,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1056,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1057,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1048
    functionDepth: 1
    functionLinenumber: 1048
    functionLinenumberEnd: 1059
    functionName: cli_show_isis_spf_ietf_backoff
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_spf_ietf_backoff(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1105,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1101
    functionDepth: 1
    functionLinenumber: 1101
    functionLinenumberEnd: 1108
    functionName: cli_show_isis_spf_prefix_priority
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_spf_prefix_priority(struct vty *vty,\n\t\t\t\t
      \      const struct lyd_node *dnode,\n\t\t\t\t       bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1125,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1126,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1122
    functionDepth: 1
    functionLinenumber: 1122
    functionLinenumberEnd: 1128
    functionName: cli_show_isis_purge_origin
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_purge_origin(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1149,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1150,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1152
    functionName: cli_show_isis_admin_group_send_zero
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_admin_group_send_zero(struct vty *vty,\n\t\t\t\t\t
      const struct lyd_node *dnode,\n\t\t\t\t\t bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1172,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1173,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1168
    functionDepth: 1
    functionLinenumber: 1168
    functionLinenumberEnd: 1175
    functionName: cli_show_isis_asla_legacy_flag
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_asla_legacy_flag(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1204
    functionName: cli_show_isis_mpls_te
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_te(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1237,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1233
    functionDepth: 1
    functionLinenumber: 1233
    functionLinenumberEnd: 1239
    functionName: cli_show_isis_mpls_te_router_addr
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_te_router_addr(struct vty *vty,\n\t\t\t\t
      \      const struct lyd_node *dnode,\n\t\t\t\t       bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1274,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1276
    functionName: cli_show_isis_mpls_te_router_addr_ipv6
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_te_router_addr_ipv6(struct vty *vty,\n\t\t\t\t\t
      \   const struct lyd_node *dnode,\n\t\t\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1314,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1315,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1311
    functionDepth: 1
    functionLinenumber: 1311
    functionLinenumberEnd: 1318
    functionName: cli_show_isis_mpls_te_export
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_te_export(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1366,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1367,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1368,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:1370,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1371,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1372,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/isisd/isis_cli.c:1373,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1374,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1375,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 5
    argNames:
    - vty
    - dnode
    - family
    - level
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1362
    functionDepth: 1
    functionLinenumber: 1362
    functionLinenumberEnd: 1378
    functionName: vty_print_def_origin
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    - yang_dnode_get_string
    - yang_dnode_exists
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: "void vty_print_def_origin(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t\t
      const char *family, const char *level,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1384,1
    - Dst: vty_print_def_origin
      Src: /src/frr/isisd/isis_cli.c:1386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1387
      start: 1380
    functionDepth: 2
    functionLinenumber: 1380
    functionLinenumberEnd: 1387
    functionName: cli_show_isis_def_origin_ipv4
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_print_def_origin
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_def_origin_ipv4(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1393,1
    - Dst: vty_print_def_origin
      Src: /src/frr/isisd/isis_cli.c:1395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1389
    functionDepth: 2
    functionLinenumber: 1389
    functionLinenumberEnd: 1396
    functionName: cli_show_isis_def_origin_ipv6
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_print_def_origin
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_def_origin_ipv6(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1437,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1438,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1440,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/isisd/isis_cli.c:1441,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1442,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1443,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:1444,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1445,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1446,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1447,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - vty
    - dnode
    - show_defaults
    - family
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1433
    functionDepth: 1
    functionLinenumber: 1433
    functionLinenumberEnd: 1448
    functionName: vty_print_redistribute
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - yang_dnode_exists
    - vty_out
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: "void vty_print_redistribute(struct vty *vty,\n\t\t\t\t   const struct
      lyd_node *dnode,\n\t\t\t\t   bool show_defaults, const char *family)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_print_redistribute
      Src: /src/frr/isisd/isis_cli.c:1454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1450
    functionDepth: 2
    functionLinenumber: 1450
    functionLinenumberEnd: 1455
    functionName: cli_show_isis_redistribute_ipv4
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - vty_print_redistribute
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_redistribute_ipv4(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_print_redistribute
      Src: /src/frr/isisd/isis_cli.c:1460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1456
    functionDepth: 2
    functionLinenumber: 1456
    functionLinenumberEnd: 1461
    functionName: cli_show_isis_redistribute_ipv6
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - vty_print_redistribute
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_redistribute_ipv6(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1518,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1519,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1520,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1514
    functionDepth: 1
    functionLinenumber: 1514
    functionLinenumberEnd: 1522
    functionName: cli_show_isis_mt_ipv4_multicast
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mt_ipv4_multicast(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1527,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1528,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1529,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1531
    functionName: cli_show_isis_mt_ipv4_mgmt
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mt_ipv4_mgmt(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1537,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1538,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1539,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1533
    functionDepth: 1
    functionLinenumber: 1533
    functionLinenumberEnd: 1541
    functionName: cli_show_isis_mt_ipv6_unicast
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mt_ipv6_unicast(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1547,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1548,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1549,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1543
    functionDepth: 1
    functionLinenumber: 1543
    functionLinenumberEnd: 1551
    functionName: cli_show_isis_mt_ipv6_multicast
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mt_ipv6_multicast(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1556,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1557,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1558,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1553
    functionDepth: 1
    functionLinenumber: 1553
    functionLinenumberEnd: 1560
    functionName: cli_show_isis_mt_ipv6_mgmt
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mt_ipv6_mgmt(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1565,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1566,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1567,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1562
    functionDepth: 1
    functionLinenumber: 1562
    functionLinenumberEnd: 1569
    functionName: cli_show_isis_mt_ipv6_dstsrc
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1602,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1603,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1599
    functionDepth: 1
    functionLinenumber: 1599
    functionLinenumberEnd: 1606
    functionName: cli_show_isis_sr_enabled
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_sr_enabled(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1670,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1671,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1672,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/isisd/isis_cli.c:1673,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/isisd/isis_cli.c:1674,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1675,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1676,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1677,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1667
    functionDepth: 1
    functionLinenumber: 1667
    functionLinenumberEnd: 1679
    functionName: cli_show_isis_label_blocks
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_label_blocks(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1714,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1711
    functionDepth: 1
    functionLinenumber: 1711
    functionLinenumberEnd: 1716
    functionName: cli_show_isis_node_msd
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_node_msd(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t    bool show_defaults)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1799,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1800,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1801,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1802,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1803,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1805,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:1806,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1807,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1809,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1810,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:1811,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1812,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:1813,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1814,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1816,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1817,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1818
      start: 1790
    functionDepth: 1
    functionLinenumber: 1790
    functionLinenumberEnd: 1818
    functionName: cli_show_isis_prefix_sid
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_prefix_sid(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1913,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1914,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1915,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_cli.c:1916,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1917,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:1918,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1920,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1921,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:1922,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1923,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1925,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1926,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:1928,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1929,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:1930,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1931,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1933,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1934,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1902
    functionDepth: 1
    functionLinenumber: 1902
    functionLinenumberEnd: 1935
    functionName: cli_show_isis_prefix_sid_algorithm
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - strmatch
    - vty_out
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_prefix_sid_algorithm(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:1986,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:1987,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1982
    functionDepth: 1
    functionLinenumber: 1982
    functionLinenumberEnd: 1989
    functionName: cli_show_isis_frr_lfa_priority_limit
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_frr_lfa_priority_limit(struct vty *vty,\n\t\t\t\t\t
      \ const struct lyd_node *dnode,\n\t\t\t\t\t  bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2052,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2053,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2048
    functionDepth: 1
    functionLinenumber: 2048
    functionLinenumberEnd: 2056
    functionName: cli_show_isis_frr_lfa_tiebreaker
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_frr_lfa_tiebreaker(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2101,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2102,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2097
    functionDepth: 1
    functionLinenumber: 2097
    functionLinenumberEnd: 2106
    functionName: cli_show_isis_frr_lfa_load_sharing
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_frr_lfa_load_sharing(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2160,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2156
    functionDepth: 1
    functionLinenumber: 2156
    functionLinenumberEnd: 2163
    functionName: cli_show_isis_frr_remote_lfa_plist
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_frr_remote_lfa_plist(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2182,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2183,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2185
      start: 2179
    functionDepth: 1
    functionLinenumber: 2179
    functionLinenumberEnd: 2185
    functionName: cli_show_ip_isis_passive
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_passive(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2225,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2226,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2228
      start: 2222
    functionDepth: 1
    functionLinenumber: 2222
    functionLinenumberEnd: 2228
    functionName: cli_show_ip_isis_password
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_password(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t       bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2273,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2274,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:2276,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2277,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2279,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2282
      start: 2270
    functionDepth: 1
    functionLinenumber: 2270
    functionLinenumberEnd: 2282
    functionName: cli_show_ip_isis_metric
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_metric(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2332,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2333,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:2335,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2336,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2338,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2341
      start: 2328
    functionDepth: 1
    functionLinenumber: 2328
    functionLinenumberEnd: 2341
    functionName: cli_show_ip_isis_hello_interval
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_hello_interval(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2390,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2391,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:2393,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2394,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2396,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2387
    functionDepth: 1
    functionLinenumber: 2387
    functionLinenumberEnd: 2399
    functionName: cli_show_ip_isis_hello_multi
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_hello_multi(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2421,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2422,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2424
      start: 2417
    functionDepth: 1
    functionLinenumber: 2417
    functionLinenumberEnd: 2424
    functionName: cli_show_ip_isis_threeway_shake
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_threeway_shake(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_cli.c:2452,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2454,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2455,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2457,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2459
      start: 2448
    functionDepth: 1
    functionLinenumber: 2448
    functionLinenumberEnd: 2459
    functionName: cli_show_ip_isis_hello_padding
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_hello_padding(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2509,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2510,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:2512,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2513,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2515,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2518
      start: 2505
    functionDepth: 1
    functionLinenumber: 2505
    functionLinenumberEnd: 2518
    functionName: cli_show_ip_isis_csnp_interval
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_csnp_interval(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2568,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2569,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:2571,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2572,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2574,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2577
      start: 2564
    functionDepth: 1
    functionLinenumber: 2564
    functionLinenumberEnd: 2577
    functionName: cli_show_ip_isis_psnp_interval
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_psnp_interval(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2615,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2616,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2618
      start: 2612
    functionDepth: 1
    functionLinenumber: 2612
    functionLinenumberEnd: 2618
    functionName: cli_show_ip_isis_mt_standard
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_mt_standard(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2624,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2625,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2620
    functionDepth: 1
    functionLinenumber: 2620
    functionLinenumberEnd: 2627
    functionName: cli_show_ip_isis_mt_ipv4_multicast
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_mt_ipv4_multicast(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2633,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2634,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2635,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2629
    functionDepth: 1
    functionLinenumber: 2629
    functionLinenumberEnd: 2636
    functionName: cli_show_ip_isis_mt_ipv4_mgmt
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_mt_ipv4_mgmt(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2642,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2643,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2645
      start: 2638
    functionDepth: 1
    functionLinenumber: 2638
    functionLinenumberEnd: 2645
    functionName: cli_show_ip_isis_mt_ipv6_unicast
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_mt_ipv6_unicast(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2651,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2652,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2647
    functionDepth: 1
    functionLinenumber: 2647
    functionLinenumberEnd: 2654
    functionName: cli_show_ip_isis_mt_ipv6_multicast
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_mt_ipv6_multicast(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2660,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2661,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2662,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2656
    functionDepth: 1
    functionLinenumber: 2656
    functionLinenumberEnd: 2663
    functionName: cli_show_ip_isis_mt_ipv6_mgmt
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_mt_ipv6_mgmt(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2669,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2670,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2665
    functionDepth: 1
    functionLinenumber: 2665
    functionLinenumberEnd: 2672
    functionName: cli_show_ip_isis_mt_ipv6_dstsrc
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_mt_ipv6_dstsrc(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_cli.c:2710,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2714,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2717,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2720,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2723
      start: 2707
    functionDepth: 1
    functionLinenumber: 2707
    functionLinenumberEnd: 2723
    functionName: cli_show_ip_isis_circ_type
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_circ_type(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/isisd/isis_cli.c:2729,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/isisd/isis_cli.c:2732,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - vty
    - argc
    - argv
    - xpath
    - 'no'
    - start_idx
    argTypes:
    - struct vty*
    - int
    - struct cmd_token**
    - char*
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2733
      start: 2725
    functionDepth: 1
    functionLinenumber: 2725
    functionLinenumberEnd: 2733
    functionName: ag_change
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 2
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: "int ag_change(struct vty *vty, int argc, struct cmd_token **argv,\n\t\t
      \    const char *xpath, bool no, int start_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2739,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2741
      start: 2735
    functionDepth: 1
    functionLinenumber: 2735
    functionLinenumberEnd: 2741
    functionName: ag_iter_cb
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: int
    signature: int ag_iter_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_cli.c:2763,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2764,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2759
    functionDepth: 1
    functionLinenumber: 2759
    functionLinenumberEnd: 2767
    functionName: cli_show_ip_isis_network_type
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_network_type(struct vty *vty,\n\t\t\t\t   const
      struct lyd_node *dnode,\n\t\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2812,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:2813,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_cli.c:2815,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2816,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2818,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2819,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2821
      start: 2809
    functionDepth: 1
    functionLinenumber: 2809
    functionLinenumberEnd: 2821
    functionName: cli_show_ip_isis_priority
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_priority(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t       bool show_defaults)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2834,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2835,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2839,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2840,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2843,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2846,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2852,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2853,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2857,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2859,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2862,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2865,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2871,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2872,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2874,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2876,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2878,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:2880,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2887,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2889,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2891,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2892,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2895,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2898,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2900,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2901,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2904,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2907,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2909,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:2910,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2914
      start: 2826
    functionDepth: 1
    functionLinenumber: 2826
    functionLinenumberEnd: 2914
    functionName: cli_show_ip_isis_frr
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_ip_isis_frr(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3008,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:3010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3011
      start: 3004
    functionDepth: 1
    functionLinenumber: 3004
    functionLinenumberEnd: 3011
    functionName: cli_show_frr_lfa_exclude_interface
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_frr_lfa_exclude_interface(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3107,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:3108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3110
      start: 3103
    functionDepth: 1
    functionLinenumber: 3103
    functionLinenumberEnd: 3110
    functionName: cli_show_frr_remote_lfa_max_metric
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_frr_remote_lfa_max_metric(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:3205,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3206,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3208
      start: 3202
    functionDepth: 1
    functionLinenumber: 3202
    functionLinenumberEnd: 3208
    functionName: cli_show_isis_log_adjacency
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_log_adjacency(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:3225,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3226,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3228
      start: 3222
    functionDepth: 1
    functionLinenumber: 3222
    functionLinenumberEnd: 3228
    functionName: cli_show_isis_log_pdu_drops
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_log_pdu_drops(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3253
      start: 3249
    functionDepth: 1
    functionLinenumber: 3249
    functionLinenumberEnd: 3253
    functionName: cli_show_isis_mpls_ldp_sync
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_ldp_sync(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3281,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:3282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3283
      start: 3277
    functionDepth: 1
    functionLinenumber: 3277
    functionLinenumberEnd: 3283
    functionName: cli_show_isis_mpls_ldp_sync_holddown
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_ldp_sync_holddown(struct vty *vty,\n\t\t\t\t\t
      \ const struct lyd_node *dnode,\n\t\t\t\t\t  bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/isisd/isis_cli.c:3312,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3313,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3316
      start: 3308
    functionDepth: 1
    functionLinenumber: 3308
    functionLinenumberEnd: 3316
    functionName: cli_show_isis_mpls_if_ldp_sync
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_if_ldp_sync(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3363,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/isisd/isis_cli.c:3364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3365
      start: 3359
    functionDepth: 1
    functionLinenumber: 3359
    functionLinenumberEnd: 3365
    functionName: cli_show_isis_mpls_if_ldp_sync_holddown
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_mpls_if_ldp_sync_holddown(struct vty *vty,\n\t\t\t\t\t
      \    const struct lyd_node *dnode,\n\t\t\t\t\t     bool show_defaults)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_cli.c:3546,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3547,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3549,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3550,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3552,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3553,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3554,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3555,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3556,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3557,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3559,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3560,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3562,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/isisd/isis_cli.c:3563,1
    - Dst: flex_algo_metric_type_print
      Src: /src/frr/isisd/isis_cli.c:3565,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3567,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3571,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/isisd/isis_cli.c:3572,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3574,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3577,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3579,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/isisd/isis_cli.c:3580,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3583,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3586,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3588,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/isisd/isis_cli.c:3589,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3592,1
    - Dst: yang_dnode_exists
      Src: /src/frr/isisd/isis_cli.c:3595,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3597,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/isisd/isis_cli.c:3598,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3601,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3603
      start: 3538
    functionDepth: 1
    functionLinenumber: 3538
    functionLinenumberEnd: 3603
    functionName: cli_show_isis_flex_algo
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_iterate
    - vty_out
    - flex_algo_metric_type_print
    - yang_dnode_get_uint32
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void cli_show_isis_flex_algo(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_cli.c:3607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3608
      start: 3605
    functionDepth: 1
    functionLinenumber: 3605
    functionLinenumberEnd: 3608
    functionName: cli_show_isis_flex_algo_end
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void cli_show_isis_flex_algo_end(struct vty *vty, const struct lyd_node
      *dnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3613,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3614,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3616,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3617,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3618,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3619,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3620,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3621,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3622,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3623,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3625,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3627,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3628,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3630,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3632,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3633,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3634,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3636,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3637,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3639,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3640,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3642,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3644,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3645,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3646,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3648,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3649,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3650,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3651,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3652,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3653,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3654,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3655,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3656,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3657,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3658,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3660,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3661,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3662,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3663,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3664,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3665,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3667,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3669,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3670,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3672,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3673,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3674,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3675,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3676,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3677,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3678,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3679,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3680,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3682,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3683,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3685,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3687,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3688,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3689,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3690,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3691,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3692,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3693,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3694,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3696,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3697,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3699,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3700,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3701,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3702,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3703,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3705,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3707,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3708,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3710,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3711,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3713,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3714,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3716,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3717,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3719,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3721,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3723,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3724,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3726,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3727,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3729,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3731,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3732,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3734,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3736,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3737,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3739,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3740,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3741,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3742,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3743,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3745,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3746,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3748,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3749,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3750,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3751,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3752,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3753,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3754,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3756,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3757,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3758,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3759,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3760,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3761,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3762,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3763,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3764,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3765,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3766,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_cli.c:3767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 120
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3768
      start: 3611
    functionDepth: 1
    functionLinenumber: 3611
    functionLinenumberEnd: 3768
    functionName: isis_cli_init
    functionSourceFile: /src/frr/isisd/isis_cli.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void isis_cli_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: IS_STD_TE
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_STD_TE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: IS_INTER_AS
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_INTER_AS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: IS_EMULATED
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EMULATED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: IS_FLOOD_L1
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_FLOOD_L1(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: IS_FLOOD_L2
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_FLOOD_L2(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: IS_FLOOD_AS
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_FLOOD_AS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: IS_INTER_AS_EMU
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_INTER_AS_EMU(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: IS_INTER_AS_AS
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_INTER_AS_AS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: IS_EXT_TE
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EXT_TE(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: IS_MPLS_TE
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MPLS_TE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: IS_EXPORT_TE
    functionSourceFile: /src/frr/isisd/isis_te.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_EXPORT_TE(a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_events.c:45,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_events.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - circuit
    - area
    - up
    argTypes:
    - struct isis_circuit*
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 54
    functionName: isis_event_circuit_state_change
    functionSourceFile: /src/frr/isisd/isis_events.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: "void isis_event_circuit_state_change(struct isis_circuit *circuit,\n\t\t\t\t
      \    struct isis_area *area, int up)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_events.c:59,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_events.c:66,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_events.c:67,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_events.c:71,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_events.c:72,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_events.c:79,1
    - Dst: send_hello_sched
      Src: /src/frr/isisd/isis_events.c:84,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_events.c:85,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 87
    functionName: circuit_commence_level
    functionSourceFile: /src/frr/isisd/isis_events.c
    functionUses: 0
    functionsReached:
    - send_hello_sched
    - isis_jitter
    - zlog_debug
    - list_new
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void circuit_commence_level(struct isis_circuit *circuit, int level)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_events.c:94,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_events.c:99,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_events.c:100,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_events.c:103,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_events.c:104,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_events.c:105,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_events.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: circuit_resign_level
    functionSourceFile: /src/frr/isisd/isis_events.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    - list_delete
    linkageType: ''
    returnType: void
    signature: void circuit_resign_level(struct isis_circuit *circuit, int level)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_events.c:124,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_events.c:126,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_events.c:127,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_events.c:133,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_events.c:136,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_events.c:137,1
    - Dst: circuit_resign_level
      Src: /src/frr/isisd/isis_events.c:150,1
    - Dst: circuit_commence_level
      Src: /src/frr/isisd/isis_events.c:151,1
    - Dst: circuit_resign_level
      Src: /src/frr/isisd/isis_events.c:155,1
    - Dst: circuit_resign_level
      Src: /src/frr/isisd/isis_events.c:157,1
    - Dst: circuit_resign_level
      Src: /src/frr/isisd/isis_events.c:161,1
    - Dst: circuit_commence_level
      Src: /src/frr/isisd/isis_events.c:162,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_events.c:170,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 2
    argNames:
    - circuit
    - newtype
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 173
    functionName: isis_circuit_is_type_set
    functionSourceFile: /src/frr/isisd/isis_events.c
    functionUses: 1
    functionsReached:
    - circuit_resign_level
    - circuit_t2string
    - zlog_debug
    - flog_err
    - circuit_commence_level
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: void isis_circuit_is_type_set(struct isis_circuit *circuit, int newtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_events.c:203,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_events.c:209,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_events.c:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 214
    functionName: isis_event_dis_status_change
    functionSourceFile: /src/frr/isisd/isis_events.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - lsp_regenerate_schedule
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void isis_event_dis_status_change(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_events.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - area_tag
    - error_string
    - sysid
    argTypes:
    - char*
    - char*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 224
    functionName: isis_event_auth_failure
    functionSourceFile: /src/frr/isisd/isis_events.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void isis_event_auth_failure(char *area_tag, const char *error_string,\n\t\t\t
      \    uint8_t *sysid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_zebra.c:59,1
    - Dst: zebra_router_id_update_read
      Src: /src/frr/isisd/isis_zebra.c:65,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_zebra.c:70,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_zebra.c:71,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_zebra.c:72,1
    - Dst: isis_zebra_if_address_add
      Src: /src/frr/isisd/isis_zebra.c:77,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/isisd/isis_zebra.c:82,1
    - Dst: if
      Src: /src/frr/isisd/isis_zebra.c:89,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:90,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:92,1
    - Dst: if_is_operative
      Src: /src/frr/isisd/isis_zebra.c:95,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_zebra.c:96,1
    - Dst: isis_circuit_add_addr
      Src: /src/frr/isisd/isis_zebra.c:98,1
    - Dst: isis_zebra_if_address_del
      Src: /src/frr/isisd/isis_zebra.c:104,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/isisd/isis_zebra.c:109,1
    - Dst: if
      Src: /src/frr/isisd/isis_zebra.c:116,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:117,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:119,1
    - Dst: if_is_operative
      Src: /src/frr/isisd/isis_zebra.c:122,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_zebra.c:123,1
    - Dst: isis_circuit_del_addr
      Src: /src/frr/isisd/isis_zebra.c:125,1
    - Dst: connected_free
      Src: /src/frr/isisd/isis_zebra.c:128,1
    - Dst: isis_zebra_link_params
      Src: /src/frr/isisd/isis_zebra.c:133,1
    - Dst: zebra_interface_link_params_read
      Src: /src/frr/isisd/isis_zebra.c:138,1
    - Dst: isis_mpls_te_update
      Src: /src/frr/isisd/isis_zebra.c:144,1
    - Dst: isis_zebra_add_nexthops
      Src: /src/frr/isisd/isis_zebra.c:154,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_zebra.c:164,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_zebra.c:171,1
    - Dst: AF_INET
      Src: /src/frr/isisd/isis_zebra.c:175,1
    - Dst: AF_INET6
      Src: /src/frr/isisd/isis_zebra.c:184,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/isisd/isis_zebra.c:185,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/isisd/isis_zebra.c:186,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_zebra.c:193,1
    - Dst: exit
      Src: /src/frr/isisd/isis_zebra.c:196,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_zebra.c:204,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_zebra.c:230,1
    - Dst: isis_zebra_route_add_route
      Src: /src/frr/isisd/isis_zebra.c:246,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_zebra.c:257,1
    - Dst: isis_zebra_route_del_route
      Src: /src/frr/isisd/isis_zebra.c:258,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 270
    functionName: isis_router_id_update_zebra
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - connected_free
    - isis_mpls_te_update
    - flog_err
    - isis_zebra_if_address_add
    - IN6_IS_ADDR_UNSPECIFIED
    - exit
    - ALL_LIST_ELEMENTS_RO
    - isis_zebra_route_del_route
    - zlog_debug
    - isis_zebra_route_add_route
    - if
    - isis_zebra_if_address_del
    - zebra_interface_link_params_read
    - AF_INET
    - zebra_interface_address_read
    - zebra_router_id_update_read
    - isis_circuit_del_addr
    - listcount
    - circuit_scan_by_ifp
    - if_is_operative
    - AF_INET6
    - memcpy
    - isis_lookup_by_vrfid
    - IN6_IS_ADDR_LINKLOCAL
    - list_isempty
    - isis_zebra_add_nexthops
    - isis_circuit_add_addr
    - SET_FLAG
    - lsp_regenerate_schedule
    - isis_zebra_link_params
    linkageType: ''
    returnType: int
    signature: int isis_router_id_update_zebra(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_zebra.c:307,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_zebra.c:314,1
    - Dst: zclient_route_send
      Src: /src/frr/isisd/isis_zebra.c:317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - isis
    - prefix
    - src_p
    - route_info
    argTypes:
    - struct isis*
    - struct prefix*
    - struct prefix_ipv6*
    - struct isis_route_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 318
    functionName: isis_zebra_route_del_route
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 2
    functionsReached:
    - SET_FLAG
    - memset
    - zclient_route_send
    linkageType: ''
    returnType: void
    signature: "void isis_zebra_route_del_route(struct isis *isis,\n\t\t\t\tstruct
      prefix *prefix,\n\t\t\t\tstruct prefix_ipv6 *src_p,\n\t\t\t\tstruct isis_route_info
      *route_info)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_zebra.c:335,1
    - Dst: memset
      Src: /src/frr/isisd/isis_zebra.c:339,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_zebra.c:344,1
    - Dst: if_lookup_by_name
      Src: /src/frr/isisd/isis_zebra.c:348,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:350,1
    - Dst: isis_zebra_add_nexthops
      Src: /src/frr/isisd/isis_zebra.c:364,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_zebra.c:369,1
    - Dst: isis_zebra_add_nexthops
      Src: /src/frr/isisd/isis_zebra.c:375,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/isisd/isis_zebra.c:384,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - area
    - prefix
    - psid
    argTypes:
    - struct isis_area*
    - struct prefix*
    - struct isis_sr_psid_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 385
    functionName: isis_zebra_prefix_sid_install
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 1
    functionsReached:
    - if_lookup_by_name
    - memset
    - list_isempty
    - isis_zebra_add_nexthops
    - zlog_warn
    - SET_FLAG
    - zebra_send_mpls_labels
    - sr_debug
    linkageType: ''
    returnType: void
    signature: "void isis_zebra_prefix_sid_install(struct isis_area *area,\n\t\t\t\t
      \  struct prefix *prefix,\n\t\t\t\t   struct isis_sr_psid_info *psid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_zebra.c:402,1
    - Dst: memset
      Src: /src/frr/isisd/isis_zebra.c:406,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/isisd/isis_zebra.c:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - area
    - prefix
    - rinfo
    - psid
    argTypes:
    - struct isis_area*
    - struct prefix*
    - struct isis_route_info*
    - struct isis_sr_psid_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 412
    functionName: isis_zebra_prefix_sid_uninstall
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 2
    functionsReached:
    - zebra_send_mpls_labels
    - sr_debug
    - memset
    linkageType: ''
    returnType: void
    signature: "void isis_zebra_prefix_sid_uninstall(struct isis_area *area,\n\t\t\t\t
      \    struct prefix *prefix,\n\t\t\t\t     struct isis_route_info *rinfo,\n\t\t\t\t
      \    struct isis_sr_psid_info *psid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/isisd/isis_zebra.c:427,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_zebra.c:432,1
    - Dst: memset
      Src: /src/frr/isisd/isis_zebra.c:436,1
    - Dst: isis_zebra_add_nexthops
      Src: /src/frr/isisd/isis_zebra.c:453,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_zebra.c:457,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_zebra.c:460,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/isisd/isis_zebra.c:467,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - cmd
    - sra
    argTypes:
    - int
    - struct sr_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 468
    functionName: isis_zebra_send_adjacency_sid
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 4
    functionsReached:
    - flog_warn
    - memset
    - isis_zebra_add_nexthops
    - SET_FLAG
    - zebra_send_mpls_labels
    - sr_debug
    linkageType: ''
    returnType: void
    signature: void isis_zebra_send_adjacency_sid(int cmd, const struct sr_adjacency
      *sra)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isis_lookup_by_vrfid
      Src: /src/frr/isisd/isis_zebra.c:475,1
    - Dst: zapi_route_decode
      Src: /src/frr/isisd/isis_zebra.c:480,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/isisd/isis_zebra.c:484,1
    - Dst: isis_redist_add
      Src: /src/frr/isisd/isis_zebra.c:500,1
    - Dst: isis_redist_delete
      Src: /src/frr/isisd/isis_zebra.c:503,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 507
    functionName: isis_zebra_read
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - isis_lookup_by_vrfid
    - IN6_IS_ADDR_LINKLOCAL
    - isis_redist_add
    - isis_redist_delete
    - zapi_route_decode
    linkageType: ''
    returnType: int
    signature: int isis_zebra_read(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - routetype
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: isis_distribute_list_update
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isis_distribute_list_update(int routetype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_redistribute_default
      Src: /src/frr/isisd/isis_zebra.c:517,1
    - Dst: zclient_redistribute
      Src: /src/frr/isisd/isis_zebra.c:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - afi
    - type
    - vrf_id
    argTypes:
    - afi_t
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 522
    functionName: isis_zebra_redistribute_set
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_redistribute_default
    - zclient_redistribute
    linkageType: ''
    returnType: void
    signature: void isis_zebra_redistribute_set(afi_t afi, int type, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_redistribute_default
      Src: /src/frr/isisd/isis_zebra.c:527,1
    - Dst: zclient_redistribute
      Src: /src/frr/isisd/isis_zebra.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - afi
    - type
    - vrf_id
    argTypes:
    - afi_t
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 532
    functionName: isis_zebra_redistribute_unset
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_redistribute_default
    - zclient_redistribute
    linkageType: ''
    returnType: void
    signature: void isis_zebra_redistribute_unset(afi_t afi, int type, vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/isisd/isis_zebra.c:548,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:556,1
    - Dst: zclient_send_opaque_unicast
      Src: /src/frr/isisd/isis_zebra.c:559,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - spftree
    - rlfa
    argTypes:
    - struct isis_spftree*
    - struct rlfa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 537
    functionDepth: 1
    functionLinenumber: 537
    functionLinenumberEnd: 568
    functionName: isis_zebra_rlfa_register
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - zclient_send_opaque_unicast
    - zlog_debug
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int isis_zebra_rlfa_register(struct isis_spftree *spftree, struct rlfa
      *rlfa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_zebra.c:580,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:584,1
    - Dst: strlcpy
      Src: /src/frr/isisd/isis_zebra.c:588,1
    - Dst: zclient_send_opaque_unicast
      Src: /src/frr/isisd/isis_zebra.c:593,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:597,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - spftree
    argTypes:
    - struct isis_spftree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 598
    functionName: isis_zebra_rlfa_unregister_all
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - strlcpy
    - zclient_send_opaque_unicast
    - zlog_debug
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void isis_zebra_rlfa_unregister_all(struct isis_spftree *spftree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 610
    functionName: isis_zebra_label_manager_ready
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isis_zebra_label_manager_ready(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lm_get_label_chunk
      Src: /src/frr/isisd/isis_zebra.c:628,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - base
    - chunk_size
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 636
    functionName: isis_zebra_request_label_range
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 3
    functionsReached:
    - zlog_warn
    - lm_get_label_chunk
    linkageType: ''
    returnType: int
    signature: int isis_zebra_request_label_range(uint32_t base, uint32_t chunk_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lm_release_label_chunk
      Src: /src/frr/isisd/isis_zebra.c:653,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:655,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 660
    functionName: isis_zebra_release_label_range
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 3
    functionsReached:
    - zlog_warn
    - lm_release_label_chunk
    linkageType: ''
    returnType: int
    signature: int isis_zebra_release_label_range(uint32_t start, uint32_t end)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zclient_socket_connect
      Src: /src/frr/isisd/isis_zebra.c:670,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:671,1
    - Dst: set_nonblocking
      Src: /src/frr/isisd/isis_zebra.c:676,1
    - Dst: zclient_send_hello
      Src: /src/frr/isisd/isis_zebra.c:679,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:680,1
    - Dst: close
      Src: /src/frr/isisd/isis_zebra.c:682,1
    - Dst: lm_label_manager_connect
      Src: /src/frr/isisd/isis_zebra.c:688,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_zebra.c:689,1
    - Dst: close
      Src: /src/frr/isisd/isis_zebra.c:691,1
    - Dst: sr_debug
      Src: /src/frr/isisd/isis_zebra.c:697,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 700
    functionName: isis_zebra_label_manager_connect
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - sr_debug
    - close
    - zlog_warn
    - set_nonblocking
    - lm_label_manager_connect
    - zclient_socket_connect
    - zclient_send_hello
    linkageType: ''
    returnType: int
    signature: int isis_zebra_label_manager_connect(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:709,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/isisd/isis_zebra.c:711,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - isis
    argTypes:
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 713
    functionName: isis_zebra_vrf_register
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 3
    functionsReached:
    - zlog_debug
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void isis_zebra_vrf_register(struct isis *isis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_zebra.c:722,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/isisd/isis_zebra.c:724,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - isis
    argTypes:
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 726
    functionName: isis_zebra_vrf_deregister
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 3
    functionsReached:
    - zclient_send_dereg_requests
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void isis_zebra_vrf_deregister(struct isis *isis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/isisd/isis_zebra.c:730,1
    - Dst: zclient_register_opaque
      Src: /src/frr/isisd/isis_zebra.c:731,1
    - Dst: zclient_register_opaque
      Src: /src/frr/isisd/isis_zebra.c:732,1
    - Dst: zclient_register_opaque
      Src: /src/frr/isisd/isis_zebra.c:733,1
    - Dst: bfd_client_sendmsg
      Src: /src/frr/isisd/isis_zebra.c:734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 735
    functionName: isis_zebra_connected
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - bfd_client_sendmsg
    - zclient_register_opaque
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void isis_zebra_connected(struct zclient *zclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_register
      Src: /src/frr/isisd/isis_zebra.c:749,1
    - Dst: ls_unregister
      Src: /src/frr/isisd/isis_zebra.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - up
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 754
    functionName: isis_zebra_ls_register
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 1
    functionsReached:
    - ls_register
    - ls_unregister
    linkageType: ''
    returnType: int
    signature: int isis_zebra_ls_register(bool up)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zclient_opaque_decode
      Src: /src/frr/isisd/isis_zebra.c:770,1
    - Dst: STREAM_GETC
      Src: /src/frr/isisd/isis_zebra.c:775,1
    - Dst: STREAM_GETW
      Src: /src/frr/isisd/isis_zebra.c:776,1
    - Dst: STREAM_GETL
      Src: /src/frr/isisd/isis_zebra.c:777,1
    - Dst: isis_te_sync_ted
      Src: /src/frr/isisd/isis_zebra.c:779,1
    - Dst: STREAM_GET
      Src: /src/frr/isisd/isis_zebra.c:782,1
    - Dst: isis_ldp_sync_state_update
      Src: /src/frr/isisd/isis_zebra.c:783,1
    - Dst: STREAM_GET
      Src: /src/frr/isisd/isis_zebra.c:786,1
    - Dst: isis_ldp_sync_announce_update
      Src: /src/frr/isisd/isis_zebra.c:787,1
    - Dst: STREAM_GET
      Src: /src/frr/isisd/isis_zebra.c:790,1
    - Dst: isis_rlfa_process_ldp_response
      Src: /src/frr/isisd/isis_zebra.c:791,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 759
    functionDepth: 3
    functionLinenumber: 759
    functionLinenumberEnd: 800
    functionName: isis_opaque_msg_handler
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - isis_ldp_sync_announce_update
    - isis_te_sync_ted
    - isis_ldp_sync_state_update
    - zclient_opaque_decode
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - isis_rlfa_process_ldp_response
    linkageType: ''
    returnType: int
    signature: int isis_opaque_msg_handler(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_client_close_notify_decode
      Src: /src/frr/isisd/isis_zebra.c:808,1
    - Dst: isis_ldp_sync_handle_client_close
      Src: /src/frr/isisd/isis_zebra.c:811,1
    - Dst: isis_ldp_rlfa_handle_client_close
      Src: /src/frr/isisd/isis_zebra.c:812,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 802
    functionDepth: 4
    functionLinenumber: 802
    functionLinenumberEnd: 815
    functionName: isis_zebra_client_close_notify
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - zapi_client_close_notify_decode
    - isis_ldp_sync_handle_client_close
    - isis_ldp_rlfa_handle_client_close
    linkageType: ''
    returnType: int
    signature: int isis_zebra_client_close_notify(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/isisd/isis_zebra.c:833,1
    - Dst: array_size
      Src: /src/frr/isisd/isis_zebra.c:834,1
    - Dst: zclient_init
      Src: /src/frr/isisd/isis_zebra.c:835,1
    - Dst: zclient_new
      Src: /src/frr/isisd/isis_zebra.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - master
    - instance
    argTypes:
    - struct event_loop*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 830
    functionDepth: 1
    functionLinenumber: 830
    functionLinenumberEnd: 851
    functionName: isis_zebra_init
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void isis_zebra_init(struct event_loop *master, int instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_unregister_opaque
      Src: /src/frr/isisd/isis_zebra.c:855,1
    - Dst: zclient_unregister_opaque
      Src: /src/frr/isisd/isis_zebra.c:856,1
    - Dst: zclient_unregister_opaque
      Src: /src/frr/isisd/isis_zebra.c:857,1
    - Dst: zclient_stop
      Src: /src/frr/isisd/isis_zebra.c:858,1
    - Dst: zclient_free
      Src: /src/frr/isisd/isis_zebra.c:859,1
    - Dst: zclient_stop
      Src: /src/frr/isisd/isis_zebra.c:860,1
    - Dst: zclient_free
      Src: /src/frr/isisd/isis_zebra.c:861,1
    - Dst: frr_fini
      Src: /src/frr/isisd/isis_zebra.c:862,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 853
    functionDepth: 1
    functionLinenumber: 853
    functionLinenumberEnd: 863
    functionName: isis_zebra_stop
    functionSourceFile: /src/frr/isisd/isis_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_unregister_opaque
    - zclient_free
    - zclient_stop
    - frr_fini
    linkageType: ''
    returnType: void
    signature: void isis_zebra_stop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: IS_SID_VALUE
    functionSourceFile: /src/frr/isisd/isis_sr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SID_VALUE(flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_adjacency.c:48,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_adjacency.c:49,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_adjacency.c:54,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_adjacency.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - circuit
    - id
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: adj_alloc
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 0
    functionsReached:
    - listnode_add
    - list_new
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct isis_adjacency
    signature: "struct isis_adjacency *adj_alloc(struct isis_circuit *circuit,\n\t\t\t\t\tconst
      uint8_t *id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: adj_alloc
      Src: /src/frr/isisd/isis_adjacency.c:67,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_adjacency.c:70,1
    - Dst: memset
      Src: /src/frr/isisd/isis_adjacency.c:72,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:78,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_adjacency.c:81,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:89,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_adjacency.c:92,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_adjacency.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 4
    argNames:
    - id
    - snpa
    - level
    - circuit
    argTypes:
    - uint8_t*
    - uint8_t*
    - int
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 96
    functionName: isis_new_adj
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 0
    functionsReached:
    - memset
    - time
    - listnode_add
    - adj_alloc
    - list_new
    - memcpy
    linkageType: ''
    returnType: struct isis_adjacency
    signature: "struct isis_adjacency *isis_new_adj(const uint8_t *id, const uint8_t
      *snpa,\n\t\t\t\t    int level, struct isis_circuit *circuit)"
  - BBCount: 67
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:103,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_adjacency.c:104,1
    - Dst: adj_level2string
      Src: /src/frr/isisd/isis_adjacency.c:186,1
    - Dst: isis_adj_route_switchover
      Src: /src/frr/isisd/isis_adjacency.c:202,1
    - Dst: isis_circuit_switchover_routes
      Src: /src/frr/isisd/isis_adjacency.c:215,1
    - Dst: for
      Src: /src/frr/isisd/isis_adjacency.c:219,1
    - Dst: isis_circuit_switchover_routes
      Src: /src/frr/isisd/isis_adjacency.c:221,1
    - Dst: for
      Src: /src/frr/isisd/isis_adjacency.c:225,1
    - Dst: isis_circuit_switchover_routes
      Src: /src/frr/isisd/isis_adjacency.c:227,1
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_adjacency.c:255,1
    - Dst: isis_threeway_state_name
      Src: /src/frr/isisd/isis_adjacency.c:257,1
    - Dst: isis_threeway_state_name
      Src: /src/frr/isisd/isis_adjacency.c:258,1
    - Dst: fabricd_initial_sync_hello
      Src: /src/frr/isisd/isis_adjacency.c:263,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_adjacency.c:266,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_adjacency.c:273,1
    - Dst: send_hello_sched
      Src: /src/frr/isisd/isis_adjacency.c:279,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:293,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_adjacency.c:297,1
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_adjacency.c:304,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_adjacency.c:306,1
    - Dst: adj_level2string
      Src: /src/frr/isisd/isis_adjacency.c:307,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:307,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:308,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_adjacency.c:322,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:324,1
    - Dst: isis_adj_route_switchover
      Src: /src/frr/isisd/isis_adjacency.c:328,1
    - Dst: send_hello_sched
      Src: /src/frr/isisd/isis_adjacency.c:332,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:335,1
    - Dst: isis_log_adj_change
      Src: /src/frr/isisd/isis_adjacency.c:341,1
    - Dst: isis_notif_adj_state_change
      Src: /src/frr/isisd/isis_adjacency.c:345,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:357,1
    - Dst: isis_tx_queue_clean
      Src: /src/frr/isisd/isis_adjacency.c:364,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_adjacency.c:367,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_adjacency.c:376,1
    - Dst: isis_adj_build_neigh_list
      Src: /src/frr/isisd/isis_adjacency.c:378,1
    - Dst: lsp_regenerate_schedule_pseudo
      Src: /src/frr/isisd/isis_adjacency.c:386,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:398,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_adjacency.c:402,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_adjacency.c:406,1
    - Dst: isis_tx_queue_clean
      Src: /src/frr/isisd/isis_adjacency.c:413,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_adjacency.c:426,1
    - Dst: isis_delete_adj
      Src: /src/frr/isisd/isis_adjacency.c:429,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:441,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:443,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:445,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:448,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:450,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:454,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:457,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:459,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:462,1
    - Dst: nlpid2string
      Src: /src/frr/isisd/isis_adjacency.c:462,1
    - Dst: assert
      Src: /src/frr/isisd/isis_adjacency.c:480,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_adjacency.c:490,1
    - Dst: assert
      Src: /src/frr/isisd/isis_adjacency.c:491,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_adjacency.c:495,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:512,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_adjacency.c:512,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:516,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:519,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:521,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:522,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:523,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:524,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:527,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:530,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:532,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:535,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:543,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:544,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:546,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:549,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:551,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:552,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:553,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:554,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:557,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:560,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:562,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:565,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:566,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:567,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:568,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:569,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:570,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_adjacency.c:571,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:572,1
    - Dst: nlpid2string
      Src: /src/frr/isisd/isis_adjacency.c:573,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:576,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:577,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_adjacency.c:580,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:581,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_adjacency.c:583,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:586,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:589,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_adjacency.c:591,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:594,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:597,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:601,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:604,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:605,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:607,1
    - Dst: isis_disflag2string
      Src: /src/frr/isisd/isis_adjacency.c:609,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:612,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:614,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:616,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:622,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:623,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:627,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:633,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:634,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:638,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:640,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:644,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:645,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:649,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:651,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:656,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:657,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:662,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:664,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:669,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:670,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:671,1
    - Dst: switch
      Src: /src/frr/isisd/isis_adjacency.c:676,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:691,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:695,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:697,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:699,1
    - Dst: isis_adj_print_vty
      Src: /src/frr/isisd/isis_adjacency.c:708,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:715,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_adjacency.c:715,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:719,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:721,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:722,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:723,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:723,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:724,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:727,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:729,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:733,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:734,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:735,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:743,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:745,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:748,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:749,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:750,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:750,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:751,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:754,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:756,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:757,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:760,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:761,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:762,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:763,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:764,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:765,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:766,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:767,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_adjacency.c:768,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:769,1
    - Dst: nlpid2string
      Src: /src/frr/isisd/isis_adjacency.c:769,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:770,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:773,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:775,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_adjacency.c:776,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:778,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:781,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:783,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:786,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:788,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:789,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:792,1
    - Dst: isis_disflag2string
      Src: /src/frr/isisd/isis_adjacency.c:793,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:797,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:801,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:804,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:807,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:812,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:815,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:819,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:822,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:824,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:828,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:832,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:834,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:838,1
    - Dst: bfd_get_status_str
      Src: /src/frr/isisd/isis_adjacency.c:843,1
    - Dst: bfd_sess_status
      Src: /src/frr/isisd/isis_adjacency.c:843,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:846,1
    - Dst: switch
      Src: /src/frr/isisd/isis_adjacency.c:851,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:866,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:871,1
    - Dst: isis_adj_build_neigh_list
      Src: /src/frr/isisd/isis_adjacency.c:876,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:882,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:886,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:888,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_adjacency.c:894,1
    - Dst: isis_adj_build_up_list
      Src: /src/frr/isisd/isis_adjacency.c:899,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:905,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:910,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:914,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:916,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_adjacency.c:921,1
    - Dst: isis_adj_usage2levels
      Src: /src/frr/isisd/isis_adjacency.c:927,1
    - Dst: assert
      Src: /src/frr/isisd/isis_adjacency.c:940,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 303
    argCount: 2
    argNames:
    - sysid
    - adjdb
    argTypes:
    - uint8_t*
    - struct list*
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 939
        line_start: 939
        source_file: /src/frr/isisd/isis_adjacency.c
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 479
        line_start: 479
        source_file: /src/frr/isisd/isis_adjacency.c
    - condition: (adj)
      pos:
        line_end: 490
        line_start: 490
        source_file: /src/frr/isisd/isis_adjacency.c
    constantsTouched: []
    func_position:
      end: 941
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 941
    functionName: isis_adj_lookup
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 0
    functionsReached:
    - switch
    - nlpid2string
    - isis_disflag2string
    - bfd_get_status_str
    - isis_adj_state_change
    - isis_delete_adj
    - memcmp
    - listnode_add
    - zlog_warn
    - json_object_string_add
    - isis_adj_build_neigh_list
    - json_object_string_addf
    - isis_tx_queue_clean
    - bfd_sess_status
    - isis_notif_adj_state_change
    - lsp_regenerate_schedule_pseudo
    - isis_threeway_state_name
    - hook_call
    - ALL_LIST_ELEMENTS_RO
    - isis_adj_build_up_list
    - inet_ntop
    - zlog_debug
    - list_delete_all_node
    - adj_state2string
    - EVENT_ARG
    - for
    - isis_adj_name
    - assert
    - send_hello_sched
    - zlog_info
    - isis_adj_print_vty
    - vty_out
    - isis_circuit_switchover_routes
    - fabricd_initial_sync_hello
    - json_object_int_add
    - isis_adj_route_switchover
    - listnode_delete
    - event_add_timer
    - time2string
    - json_object_new_object
    - dynhn_find_by_id
    - CHECK_FLAG
    - isis_log_adj_change
    - snprintfrr
    - circuit_t2string
    - isis_mtid2str
    - json_object_object_add
    - isis_adj_usage2levels
    - adj_level2string
    - time
    linkageType: ''
    returnType: struct isis_adjacency
    signature: struct isis_adjacency *isis_adj_lookup(const uint8_t *sysid, struct
      list *adjdb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:293,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_adjacency.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 299
    functionName: isis_adj_name
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 3
    functionsReached:
    - dynhn_find_by_id
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: char *isis_adj_name(const struct isis_adjacency *adj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_adjacency.c:304,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_adjacency.c:306,1
    - Dst: adj_level2string
      Src: /src/frr/isisd/isis_adjacency.c:307,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:307,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - adj
    - old_state
    - new_state
    - reason
    argTypes:
    - struct isis_adjacency*
    - enum isis_adj_state
    - enum isis_adj_state
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 309
    functionName: isis_log_adj_change
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 2
    functionsReached:
    - zlog_info
    - adj_level2string
    - adj_state2string
    - isis_adj_name
    linkageType: ''
    returnType: void
    signature: "void isis_log_adj_change(struct isis_adjacency *adj,\n\t\t\t enum
      isis_adj_state old_state,\n\t\t\t enum isis_adj_state new_state, const char
      *reason)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_adjacency.c:322,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:324,1
    - Dst: isis_adj_route_switchover
      Src: /src/frr/isisd/isis_adjacency.c:328,1
    - Dst: send_hello_sched
      Src: /src/frr/isisd/isis_adjacency.c:332,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:335,1
    - Dst: isis_log_adj_change
      Src: /src/frr/isisd/isis_adjacency.c:341,1
    - Dst: isis_notif_adj_state_change
      Src: /src/frr/isisd/isis_adjacency.c:345,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:357,1
    - Dst: isis_tx_queue_clean
      Src: /src/frr/isisd/isis_adjacency.c:364,1
    - Dst: listnode_delete
      Src: /src/frr/isisd/isis_adjacency.c:367,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_adjacency.c:376,1
    - Dst: isis_adj_build_neigh_list
      Src: /src/frr/isisd/isis_adjacency.c:378,1
    - Dst: lsp_regenerate_schedule_pseudo
      Src: /src/frr/isisd/isis_adjacency.c:386,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:398,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_adjacency.c:402,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_adjacency.c:406,1
    - Dst: isis_tx_queue_clean
      Src: /src/frr/isisd/isis_adjacency.c:413,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_adjacency.c:426,1
    - Dst: isis_delete_adj
      Src: /src/frr/isisd/isis_adjacency.c:429,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 75
    argCount: 3
    argNames:
    - padj
    - new_state
    - reason
    argTypes:
    - struct isis_adjacency**
    - enum isis_adj_state
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 432
    functionName: isis_adj_state_change
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 2
    functionsReached:
    - send_hello_sched
    - lsp_regenerate_schedule_pseudo
    - listnode_delete
    - hook_call
    - CHECK_FLAG
    - isis_log_adj_change
    - isis_delete_adj
    - time
    - isis_adj_route_switchover
    - zlog_debug
    - list_delete_all_node
    - isis_adj_build_neigh_list
    - isis_tx_queue_clean
    - isis_notif_adj_state_change
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void isis_adj_state_change(struct isis_adjacency **padj,\n\t\t\t   enum
      isis_adj_state new_state, const char *reason)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:441,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:443,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:445,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:448,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:450,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:454,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:457,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:459,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_adjacency.c:462,1
    - Dst: nlpid2string
      Src: /src/frr/isisd/isis_adjacency.c:462,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 435
    functionDepth: 2
    functionLinenumber: 435
    functionLinenumberEnd: 465
    functionName: isis_adj_print
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - zlog_debug
    - nlpid2string
    - dynhn_find_by_id
    linkageType: ''
    returnType: void
    signature: void isis_adj_print(struct isis_adjacency *adj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_adjacency.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum isis_adj_state
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 479
        line_start: 479
        source_file: /src/frr/isisd/isis_adjacency.c
    constantsTouched: []
    func_position:
      end: 481
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 481
    functionName: isis_adj_yang_state
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *isis_adj_yang_state(enum isis_adj_state state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_adjacency.c:490,1
    - Dst: assert
      Src: /src/frr/isisd/isis_adjacency.c:491,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_adjacency.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (adj)
      pos:
        line_end: 490
        line_start: 490
        source_file: /src/frr/isisd/isis_adjacency.c
    constantsTouched: []
    func_position:
      end: 496
      start: 483
    functionDepth: 4
    functionLinenumber: 483
    functionLinenumberEnd: 496
    functionName: isis_adj_expire
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 0
    functionsReached:
    - isis_adj_state_change
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void isis_adj_expire(struct event *thread)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:512,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_adjacency.c:512,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:516,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:519,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:521,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:522,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:523,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:524,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:527,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:530,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:532,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:535,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:543,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:544,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:546,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:549,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:551,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:552,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:553,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:554,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:557,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:560,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:562,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:565,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:566,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:567,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:568,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:569,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:570,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_adjacency.c:571,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:572,1
    - Dst: nlpid2string
      Src: /src/frr/isisd/isis_adjacency.c:573,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:576,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:577,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_adjacency.c:580,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:581,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_adjacency.c:583,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:586,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:589,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_adjacency.c:591,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:594,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:597,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:601,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:604,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:605,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:607,1
    - Dst: isis_disflag2string
      Src: /src/frr/isisd/isis_adjacency.c:609,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:612,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:614,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:616,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:622,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:623,1
    - Dst: json_object_string_addf
      Src: /src/frr/isisd/isis_adjacency.c:627,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:633,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:634,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:638,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:640,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:644,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:645,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:649,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:651,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:656,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:657,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:662,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:664,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_adjacency.c:669,1
    - Dst: json_object_object_add
      Src: /src/frr/isisd/isis_adjacency.c:670,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:671,1
    - Dst: switch
      Src: /src/frr/isisd/isis_adjacency.c:676,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:691,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:695,1
    - Dst: json_object_string_add
      Src: /src/frr/isisd/isis_adjacency.c:697,1
    - Dst: json_object_int_add
      Src: /src/frr/isisd/isis_adjacency.c:699,1
    - Dst: isis_adj_print_vty
      Src: /src/frr/isisd/isis_adjacency.c:708,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:715,1
    - Dst: isis_adj_name
      Src: /src/frr/isisd/isis_adjacency.c:715,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:719,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:721,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:722,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:723,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:723,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:724,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:727,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:729,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:733,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:734,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:735,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:743,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:745,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:748,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:749,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:750,1
    - Dst: adj_state2string
      Src: /src/frr/isisd/isis_adjacency.c:750,1
    - Dst: time
      Src: /src/frr/isisd/isis_adjacency.c:751,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:754,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:756,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:757,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:760,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:761,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:762,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:763,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:764,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:765,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:766,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:767,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_adjacency.c:768,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:769,1
    - Dst: nlpid2string
      Src: /src/frr/isisd/isis_adjacency.c:769,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:770,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:773,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:775,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_adjacency.c:776,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:778,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_adjacency.c:781,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:783,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:786,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:788,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:789,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:792,1
    - Dst: isis_disflag2string
      Src: /src/frr/isisd/isis_adjacency.c:793,1
    - Dst: time2string
      Src: /src/frr/isisd/isis_adjacency.c:797,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:801,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:804,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:807,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:812,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:815,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:819,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:822,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:824,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:828,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_adjacency.c:832,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:834,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:838,1
    - Dst: bfd_get_status_str
      Src: /src/frr/isisd/isis_adjacency.c:843,1
    - Dst: bfd_sess_status
      Src: /src/frr/isisd/isis_adjacency.c:843,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:846,1
    - Dst: switch
      Src: /src/frr/isisd/isis_adjacency.c:851,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:866,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_adjacency.c:871,1
    - Dst: isis_adj_build_neigh_list
      Src: /src/frr/isisd/isis_adjacency.c:876,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:882,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:886,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:888,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_adjacency.c:894,1
    - Dst: isis_adj_build_up_list
      Src: /src/frr/isisd/isis_adjacency.c:899,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:905,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:910,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_adjacency.c:914,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_adjacency.c:916,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_adjacency.c:921,1
    - Dst: isis_adj_usage2levels
      Src: /src/frr/isisd/isis_adjacency.c:927,1
    - Dst: assert
      Src: /src/frr/isisd/isis_adjacency.c:940,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 141
    argCount: 3
    argNames:
    - adj
    - json
    - detail
    argTypes:
    - struct isis_adjacency*
    - struct json_object*
    - char
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 939
        line_start: 939
        source_file: /src/frr/isisd/isis_adjacency.c
    constantsTouched: []
    func_position:
      end: 941
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 941
    functionName: isis_adj_print_json
    functionSourceFile: /src/frr/isisd/isis_adjacency.c
    functionUses: 0
    functionsReached:
    - switch
    - nlpid2string
    - isis_disflag2string
    - bfd_get_status_str
    - listnode_add
    - zlog_warn
    - json_object_string_add
    - isis_adj_build_neigh_list
    - json_object_string_addf
    - bfd_sess_status
    - ALL_LIST_ELEMENTS_RO
    - isis_adj_build_up_list
    - inet_ntop
    - adj_state2string
    - isis_adj_name
    - assert
    - isis_adj_print_vty
    - vty_out
    - json_object_int_add
    - time2string
    - json_object_new_object
    - dynhn_find_by_id
    - snprintfrr
    - circuit_t2string
    - isis_mtid2str
    - json_object_object_add
    - isis_adj_usage2levels
    - time
    linkageType: ''
    returnType: void
    signature: "void isis_adj_print_json(struct isis_adjacency *adj, struct json_object
      *json,\n\t\t\t char detail)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: area_lookup_mt_setting
      Src: /src/frr/isisd/isis_mt.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 28
    functionName: isis_area_ipv6_dstsrc_enabled
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 4
    functionsReached:
    - area_lookup_mt_setting
    linkageType: ''
    returnType: bool
    signature: bool isis_area_ipv6_dstsrc_enabled(struct isis_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: area_lookup_mt_setting
      Src: /src/frr/isisd/isis_mt.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 38
    functionName: isis_area_ipv6_topology
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 3
    functionsReached:
    - area_lookup_mt_setting
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t isis_area_ipv6_topology(struct isis_area *area)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_mt.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - mtid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 64
    functionName: isis_mtid2str
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 8
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *isis_mtid2str(uint16_t mtid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:68,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:70,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:72,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:74,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:76,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:78,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:80,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_mt.c:82,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 85
    functionName: isis_str2mtid
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t isis_str2mtid(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_mt.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mt_list
    - mtid
    argTypes:
    - struct list*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 103
    functionName: lookup_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: void *lookup_mt_setting(struct list *mt_list, uint16_t mtid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/isisd/isis_mt.c:108,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_mt.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - mt_list
    - setting
    argTypes:
    - struct list**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: add_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - list_new
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void add_mt_setting(struct list **mt_list, void *setting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_mt_setting
      Src: /src/frr/isisd/isis_mt.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - area
    - mtid
    argTypes:
    - struct isis_area*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: area_lookup_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 2
    functionsReached:
    - lookup_mt_setting
    linkageType: ''
    returnType: struct isis_area_mt_setting
    signature: "struct isis_area_mt_setting *area_lookup_mt_setting(struct isis_area
      *area,\n\t\t\t\t\t\t    uint16_t mtid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_mt.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - area
    - mtid
    argTypes:
    - struct isis_area*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: area_new_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_area_mt_setting
    signature: "struct isis_area_mt_setting *area_new_mt_setting(struct isis_area
      *area,\n\t\t\t\t\t\t uint16_t mtid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_mt.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - setting
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: area_free_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void area_free_mt_setting(void *setting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_mt_setting
      Src: /src/frr/isisd/isis_mt.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - area
    - setting
    argTypes:
    - struct isis_area*
    - struct isis_area_mt_setting*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: area_add_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - add_mt_setting
    linkageType: ''
    returnType: void
    signature: "void area_add_mt_setting(struct isis_area *area,\n\t\t\t struct isis_area_mt_setting
      *setting)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: area_new_mt_setting
      Src: /src/frr/isisd/isis_mt.c:146,1
    - Dst: add_mt_setting
      Src: /src/frr/isisd/isis_mt.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 150
    functionName: area_mt_init
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 1
    functionsReached:
    - add_mt_setting
    - area_new_mt_setting
    linkageType: ''
    returnType: void
    signature: void area_mt_init(struct isis_area *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/isisd/isis_mt.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: area_mt_finish
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 2
    functionsReached:
    - list_delete
    linkageType: ''
    returnType: void
    signature: void area_mt_finish(struct isis_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: area_lookup_mt_setting
      Src: /src/frr/isisd/isis_mt.c:162,1
    - Dst: area_new_mt_setting
      Src: /src/frr/isisd/isis_mt.c:164,1
    - Dst: area_add_mt_setting
      Src: /src/frr/isisd/isis_mt.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - area
    - mtid
    argTypes:
    - struct isis_area*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 168
    functionName: area_get_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 4
    functionsReached:
    - area_lookup_mt_setting
    - area_add_mt_setting
    - area_new_mt_setting
    linkageType: ''
    returnType: struct isis_area_mt_setting
    signature: "struct isis_area_mt_setting *area_get_mt_setting(struct isis_area
      *area,\n\t\t\t\t\t\t uint16_t mtid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_mt.c:176,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_mt.c:177,1
    - Dst: if
      Src: /src/frr/isisd/isis_mt.c:178,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_mt.c:182,1
    - Dst: area_is_mt
      Src: /src/frr/isisd/isis_mt.c:190,1
    - Dst: for
      Src: /src/frr/isisd/isis_mt.c:197,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_mt.c:197,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_mt.c:201,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_mt.c:202,1
    - Dst: area_mt_settings
      Src: /src/frr/isisd/isis_mt.c:213,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_mt.c:223,1
    - Dst: XREALLOC
      Src: /src/frr/isisd/isis_mt.c:229,1
    - Dst: circuit_lookup_mt_setting
      Src: /src/frr/isisd/isis_mt.c:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 2
    argNames:
    - area
    - vty
    argTypes:
    - struct isis_area*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 245
    functionName: area_write_mt_settings
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - circuit_lookup_mt_setting
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - area_is_mt
    - isis_mtid2str
    - if
    - for
    - area_mt_settings
    - XREALLOC
    linkageType: ''
    returnType: int
    signature: int area_write_mt_settings(struct isis_area *area, struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_mt.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - circuit
    - mtid
    argTypes:
    - struct isis_circuit*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 256
    functionName: circuit_new_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct isis_circuit_mt_setting
    signature: 'struct isis_circuit_mt_setting *

      circuit_new_mt_setting(struct isis_circuit *circuit, uint16_t mtid)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_mt.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - setting
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: circuit_free_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void circuit_free_mt_setting(void *setting)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_mt_setting
      Src: /src/frr/isisd/isis_mt.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - circuit
    - setting
    argTypes:
    - struct isis_circuit*
    - struct isis_circuit_mt_setting*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 267
    functionName: circuit_add_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - add_mt_setting
    linkageType: ''
    returnType: void
    signature: "void circuit_add_mt_setting(struct isis_circuit *circuit,\n\t\t\t
      \   struct isis_circuit_mt_setting *setting)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/isisd/isis_mt.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: circuit_mt_init
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 1
    functionsReached:
    - list_new
    linkageType: ''
    returnType: void
    signature: void circuit_mt_init(struct isis_circuit *circuit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/isisd/isis_mt.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: circuit_mt_finish
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 1
    functionsReached:
    - list_delete
    linkageType: ''
    returnType: void
    signature: void circuit_mt_finish(struct isis_circuit *circuit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: circuit_lookup_mt_setting
      Src: /src/frr/isisd/isis_mt.c:285,1
    - Dst: circuit_new_mt_setting
      Src: /src/frr/isisd/isis_mt.c:287,1
    - Dst: circuit_add_mt_setting
      Src: /src/frr/isisd/isis_mt.c:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - circuit
    - mtid
    argTypes:
    - struct isis_circuit*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 280
    functionDepth: 3
    functionLinenumber: 280
    functionLinenumberEnd: 291
    functionName: circuit_get_mt_setting
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 1
    functionsReached:
    - circuit_new_mt_setting
    - circuit_lookup_mt_setting
    - circuit_add_mt_setting
    linkageType: ''
    returnType: struct isis_circuit_mt_setting
    signature: 'struct isis_circuit_mt_setting *

      circuit_get_mt_setting(struct isis_circuit *circuit, uint16_t mtid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - adj
    - mtid
    argTypes:
    - struct isis_adjacency*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 450
    functionName: adj_has_mt
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool adj_has_mt(struct isis_adjacency *adj, uint16_t mtid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_mt.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 456
    functionName: adj_mt_finish
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void adj_mt_finish(struct isis_adjacency *adj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/isisd/isis_mt.c:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - mt_set
    - size
    - index
    - mtid
    argTypes:
    - uint16_t**
    - unsigned int*
    - unsigned int*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 474
    functionName: mt_set_add
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - XREALLOC
    linkageType: ''
    returnType: void
    signature: "void mt_set_add(uint16_t **mt_set, unsigned int *size,\n\t\t       unsigned
      int *index, uint16_t mtid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_mt.c:491,1
    - Dst: for
      Src: /src/frr/isisd/isis_mt.c:494,1
    - Dst: mt_set_add
      Src: /src/frr/isisd/isis_mt.c:495,1
    - Dst: tlvs_add_mt_set
      Src: /src/frr/isisd/isis_mt.c:502,1
    - Dst: area_is_mt
      Src: /src/frr/isisd/isis_mt.c:508,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_mt.c:509,1
    - Dst: isis_tlvs_add_extended_reach
      Src: /src/frr/isisd/isis_mt.c:512,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_mt.c:521,1
    - Dst: lsp_debug
      Src: /src/frr/isisd/isis_mt.c:524,1
    - Dst: isis_mtid2str
      Src: /src/frr/isisd/isis_mt.c:526,1
    - Dst: isis_tlvs_add_extended_reach
      Src: /src/frr/isisd/isis_mt.c:528,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - circuit
    - level
    - mt_count
    argTypes:
    - struct isis_circuit*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 530
    functionName: circuit_bcast_mt_set
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - tlvs_add_mt_set
    - ALL_LIST_ELEMENTS_RO
    - isis_tlvs_add_extended_reach
    - area_is_mt
    - mt_set_add
    - isis_mtid2str
    - lsp_debug
    - for
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t *circuit_bcast_mt_set(struct isis_circuit *circuit, int level,\n\t\t\t\t
      \     unsigned int *mt_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: circuit_bcast_mt_set
      Src: /src/frr/isisd/isis_mt.c:536,1
    - Dst: tlvs_add_mt_set
      Src: /src/frr/isisd/isis_mt.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - tlvs
    - circuit
    - level
    - id
    - metric
    argTypes:
    - struct isis_tlvs*
    - struct isis_circuit*
    - int
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 540
    functionName: tlvs_add_mt_bcast
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - tlvs_add_mt_set
    - circuit_bcast_mt_set
    linkageType: ''
    returnType: void
    signature: "void tlvs_add_mt_bcast(struct isis_tlvs *tlvs, struct isis_circuit
      *circuit,\n\t\t       int level, uint8_t *id, uint32_t metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tlvs_add_mt_set
      Src: /src/frr/isisd/isis_mt.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - tlvs
    - circuit
    - id
    - metric
    argTypes:
    - struct isis_tlvs*
    - struct isis_circuit*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 549
    functionName: tlvs_add_mt_p2p
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 0
    functionsReached:
    - tlvs_add_mt_set
    linkageType: ''
    returnType: void
    signature: "void tlvs_add_mt_p2p(struct isis_tlvs *tlvs, struct isis_circuit *circuit,\n\t\t
      \    uint8_t *id, uint32_t metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/isisd/isis_mt.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 557
    functionName: mt_init
    functionSourceFile: /src/frr/isisd/isis_mt.c
    functionUses: 3
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void mt_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - srgb
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: IS_SR_IPV4
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SR_IPV4(srgb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - srgb
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: IS_SR_IPV6
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SR_IPV6(srgb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 477
    functionName: SET_SUBTLV
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_SUBTLV(s, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 478
    functionName: UNSET_SUBTLV
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSET_SUBTLV(s, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 479
    functionName: IS_SUBTLV
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SUBTLV(s, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 480
    functionName: RESET_SUBTLV
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESET_SUBTLV(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 481
    functionName: NO_SUBTLV
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NO_SUBTLV(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 519
    functionName: IS_ANORMAL
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_ANORMAL(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlv_type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 596
    functionName: IS_COMPAT_MT_TLV
    functionSourceFile: /src/frr/isisd/isis_tlvs.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_COMPAT_MT_TLV(tlv_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: VTYPE_IS
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTYPE_IS(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: VTYPE_ES
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTYPE_ES(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: VTYPE_IP
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTYPE_IP(t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_spf_private.h:86,1
    - Dst: prefix_hash_key
      Src: /src/frr/isisd/isis_spf_private.h:89,1
    - Dst: jhash_1word
      Src: /src/frr/isisd/isis_spf_private.h:90,1
    - Dst: prefix_hash_key
      Src: /src/frr/isisd/isis_spf_private.h:90,1
    - Dst: jhash
      Src: /src/frr/isisd/isis_spf_private.h:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vp
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 95
    functionName: isis_vertex_queue_hash_key
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 0
    functionsReached:
    - VTYPE_IP
    - jhash_1word
    - prefix_hash_key
    - jhash
    linkageType: ''
    returnType: unsigned
    signature: unsigned isis_vertex_queue_hash_key(const void *vp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_spf_private.h:105,1
    - Dst: prefix_cmp
      Src: /src/frr/isisd/isis_spf_private.h:106,1
    - Dst: prefix_cmp
      Src: /src/frr/isisd/isis_spf_private.h:109,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_spf_private.h:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: isis_vertex_queue_hash_cmp
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 0
    functionsReached:
    - VTYPE_IP
    - memcmp
    - prefix_cmp
    linkageType: ''
    returnType: bool
    signature: bool isis_vertex_queue_hash_cmp(const void *a, const void *b)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 146
    functionName: isis_vertex_queue_tent_cmp
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int isis_vertex_queue_tent_cmp(const void *a,\n\t\t\t\t\t\t\t\t  const
      void *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_new
      Src: /src/frr/isisd/isis_spf_private.h:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 152
    functionName: isis_vertex_queue_skiplist
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 0
    functionsReached:
    - skiplist_new
    linkageType: ''
    returnType: struct skiplist
    signature: struct skiplist *isis_vertex_queue_skiplist(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_vertex_queue_skiplist
      Src: /src/frr/isisd/isis_spf_private.h:160,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_spf_private.h:163,1
    - Dst: hash_create
      Src: /src/frr/isisd/isis_spf_private.h:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - queue
    - name
    - ordered
    argTypes:
    - struct isis_vertex_queue*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 167
    functionName: isis_vertex_queue_init
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 2
    functionsReached:
    - hash_create
    - list_new
    - isis_vertex_queue_skiplist
    linkageType: ''
    returnType: void
    signature: "void isis_vertex_queue_init(struct isis_vertex_queue *queue,\n\t\t\t\t
      \  const char *name, bool ordered)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean
      Src: /src/frr/isisd/isis_spf_private.h:183,1
    - Dst: skiplist_first
      Src: /src/frr/isisd/isis_spf_private.h:187,1
    - Dst: isis_vertex_del
      Src: /src/frr/isisd/isis_spf_private.h:189,1
    - Dst: skiplist_delete_first
      Src: /src/frr/isisd/isis_spf_private.h:190,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_spf_private.h:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_vertex_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 198
    functionName: isis_vertex_queue_clear
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 1
    functionsReached:
    - isis_vertex_del
    - list_delete_all_node
    - skiplist_delete_first
    - skiplist_first
    - hash_clean
    linkageType: ''
    returnType: void
    signature: void isis_vertex_queue_clear(struct isis_vertex_queue *queue)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_vertex_queue_clear
      Src: /src/frr/isisd/isis_spf_private.h:203,1
    - Dst: hash_free
      Src: /src/frr/isisd/isis_spf_private.h:205,1
    - Dst: skiplist_free
      Src: /src/frr/isisd/isis_spf_private.h:209,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_spf_private.h:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_vertex_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 213
    functionName: isis_vertex_queue_free
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 2
    functionsReached:
    - skiplist_free
    - hash_free
    - list_delete
    - isis_vertex_queue_clear
    linkageType: ''
    returnType: void
    signature: void isis_vertex_queue_free(struct isis_vertex_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashcount
      Src: /src/frr/isisd/isis_spf_private.h:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_vertex_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 219
    functionName: isis_vertex_queue_count
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 5
    functionsReached:
    - hashcount
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int isis_vertex_queue_count(struct isis_vertex_queue *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:225,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_spf_private.h:227,1
    - Dst: hash_get
      Src: /src/frr/isisd/isis_spf_private.h:231,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - queue
    - vertex
    argTypes:
    - struct isis_vertex_queue*
    - struct isis_vertex*
    assertStmts:
    - condition: (!queue->insert_counter)
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/frr/isisd/isis_spf_private.h
    - condition: (inserted == vertex)
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/frr/isisd/isis_spf_private.h
    constantsTouched: []
    func_position:
      end: 233
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 233
    functionName: isis_vertex_queue_append
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 2
    functionsReached:
    - listnode_add
    - hash_get
    - assert
    linkageType: ''
    returnType: void
    signature: "void isis_vertex_queue_append(struct isis_vertex_queue *queue,\n\t\t\t\t
      \    struct isis_vertex *vertex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:240,1
    - Dst: listtail
      Src: /src/frr/isisd/isis_spf_private.h:241,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:242,1
    - Dst: listgetdata
      Src: /src/frr/isisd/isis_spf_private.h:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_vertex_queue*
    assertStmts:
    - condition: (!queue->insert_counter)
      pos:
        line_end: 239
        line_start: 239
        source_file: /src/frr/isisd/isis_spf_private.h
    - condition: (tail)
      pos:
        line_end: 241
        line_start: 241
        source_file: /src/frr/isisd/isis_spf_private.h
    constantsTouched: []
    func_position:
      end: 244
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 244
    functionName: isis_vertex_queue_last
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 0
    functionsReached:
    - listtail
    - listgetdata
    - assert
    linkageType: ''
    returnType: struct isis_vertex
    signature: struct isis_vertex *isis_vertex_queue_last(struct isis_vertex_queue
      *queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:250,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:252,1
    - Dst: skiplist_insert
      Src: /src/frr/isisd/isis_spf_private.h:254,1
    - Dst: hash_get
      Src: /src/frr/isisd/isis_spf_private.h:257,1
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - queue
    - vertex
    argTypes:
    - struct isis_vertex_queue*
    - struct isis_vertex*
    assertStmts:
    - condition: (queue->insert_counter)
      pos:
        line_end: 249
        line_start: 249
        source_file: /src/frr/isisd/isis_spf_private.h
    - condition: (queue->insert_counter != (uint64_t)-1)
      pos:
        line_end: 251
        line_start: 251
        source_file: /src/frr/isisd/isis_spf_private.h
    - condition: (inserted == vertex)
      pos:
        line_end: 257
        line_start: 257
        source_file: /src/frr/isisd/isis_spf_private.h
    constantsTouched: []
    func_position:
      end: 259
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 259
    functionName: isis_vertex_queue_insert
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 3
    functionsReached:
    - hash_get
    - skiplist_insert
    - assert
    linkageType: ''
    returnType: void
    signature: "void isis_vertex_queue_insert(struct isis_vertex_queue *queue,\n\t\t\t\t
      \    struct isis_vertex *vertex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:265,1
    - Dst: skiplist_first
      Src: /src/frr/isisd/isis_spf_private.h:269,1
    - Dst: skiplist_delete_first
      Src: /src/frr/isisd/isis_spf_private.h:272,1
    - Dst: hash_release
      Src: /src/frr/isisd/isis_spf_private.h:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - queue
    argTypes:
    - struct isis_vertex_queue*
    assertStmts:
    - condition: (queue->insert_counter)
      pos:
        line_end: 264
        line_start: 264
        source_file: /src/frr/isisd/isis_spf_private.h
    constantsTouched: []
    func_position:
      end: 276
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 276
    functionName: isis_vertex_queue_pop
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 2
    functionsReached:
    - skiplist_delete_first
    - skiplist_first
    - hash_release
    - assert
    linkageType: ''
    returnType: struct isis_vertex
    signature: 'struct isis_vertex *

      isis_vertex_queue_pop(struct isis_vertex_queue *queue)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:282,1
    - Dst: skiplist_delete
      Src: /src/frr/isisd/isis_spf_private.h:284,1
    - Dst: hash_release
      Src: /src/frr/isisd/isis_spf_private.h:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - queue
    - vertex
    argTypes:
    - struct isis_vertex_queue*
    - struct isis_vertex*
    assertStmts:
    - condition: (queue->insert_counter)
      pos:
        line_end: 281
        line_start: 281
        source_file: /src/frr/isisd/isis_spf_private.h
    constantsTouched: []
    func_position:
      end: 286
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 286
    functionName: isis_vertex_queue_delete
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 2
    functionsReached:
    - hash_release
    - skiplist_delete
    - assert
    linkageType: ''
    returnType: void
    signature: "void isis_vertex_queue_delete(struct isis_vertex_queue *queue,\n\t\t\t\t
      \    struct isis_vertex *vertex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - queue
    - ','
    - node
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 290
    functionName: ALL_QUEUE_ELEMENTS_RO
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_QUEUE_ELEMENTS_RO(queue, node, data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_spf_private.h:369,1
    - Dst: VTYPE_ES
      Src: /src/frr/isisd/isis_spf_private.h:369,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf_private.h:370,1
    - Dst: VTYPE_IP
      Src: /src/frr/isisd/isis_spf_private.h:371,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf_private.h:372,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_spf_private.h:374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - vertex
    - id
    - vtype
    argTypes:
    - struct isis_vertex*
    - void*
    - enum vertextype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 376
    functionName: isis_vertex_id_init
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 1
    functionsReached:
    - VTYPE_IP
    - VTYPE_ES
    - flog_err
    - VTYPE_IS
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void isis_vertex_id_init(struct isis_vertex *vertex, const void *id,\n\t\t\t\tenum
      vertextype vtype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isis_vertex_id_init
      Src: /src/frr/isisd/isis_spf_private.h:385,1
    - Dst: hash_lookup
      Src: /src/frr/isisd/isis_spf_private.h:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - queue
    - id
    - vtype
    argTypes:
    - struct isis_vertex_queue*
    - void*
    - enum vertextype
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 387
    functionName: isis_find_vertex
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 8
    functionsReached:
    - hash_lookup
    - isis_vertex_id_init
    linkageType: ''
    returnType: struct isis_vertex
    signature: "struct isis_vertex *isis_find_vertex(struct isis_vertex_queue *queue,\n\t\t\t\t\t
      \   const void *id,\n\t\t\t\t\t    enum vertextype vtype)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_spf_private.h:395,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/isis_spf_private.h:395,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_spf_private.h:397,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_spf_private.h:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - spftree
    - vertex
    argTypes:
    - struct isis_spftree*
    - struct isis_vertex*
    assertStmts:
    - condition: (VTYPE_IS(vertex->type))
      pos:
        line_end: 394
        line_start: 394
        source_file: /src/frr/isisd/isis_spf_private.h
    constantsTouched: []
    func_position:
      end: 406
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 406
    functionName: lsp_for_vertex
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 1
    functionsReached:
    - memcpy
    - VTYPE_IS
    - assert
    - lsp_search
    linkageType: ''
    returnType: struct isis_lsp
    signature: "struct isis_lsp *lsp_for_vertex(struct isis_spftree *spftree,\n\t\t\t\t
      \      struct isis_vertex *vertex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 398
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_spf_private.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lsp_id)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - pdu_type
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 42
    functionName: pdu_type_to_counter_index
    functionSourceFile: /src/frr/isisd/isis_pdu_counter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pdu_type_to_counter_index(uint8_t pdu_type)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu_counter.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - index
    argTypes:
    - enum pdu_counter_index
    assertStmts:
    - condition: (!"Reached end of function where we were not expecting to")
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/frr/isisd/isis_pdu_counter.c
    constantsTouched: []
    func_position:
      end: 72
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 72
    functionName: pdu_counter_index_to_name
    functionSourceFile: /src/frr/isisd/isis_pdu_counter.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pdu_counter_index_to_name(enum pdu_counter_index index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdu_type_to_counter_index
      Src: /src/frr/isisd/isis_pdu_counter.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - counter
    - pdu_type
    argTypes:
    - pdu_counter_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: pdu_counter_count
    functionSourceFile: /src/frr/isisd/isis_pdu_counter.c
    functionUses: 0
    functionsReached:
    - pdu_type_to_counter_index
    linkageType: ''
    returnType: void
    signature: void pdu_counter_count(pdu_counter_t counter, uint8_t pdu_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/isis_pdu_counter.c:90,1
    - Dst: pdu_counter_index_to_name
      Src: /src/frr/isisd/isis_pdu_counter.c:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - prefix
    - counter
    argTypes:
    - struct vty*
    - char*
    - pdu_counter_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: pdu_counter_print
    functionSourceFile: /src/frr/isisd/isis_pdu_counter.c
    functionUses: 0
    functionsReached:
    - pdu_counter_index_to_name
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void pdu_counter_print(struct vty *vty, const char *prefix,\n\t\t
      \      pdu_counter_t counter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdu_counter_count
      Src: /src/frr/isisd/isis_pdu_counter.c:97,1
    - Dst: isis_log_pdu_drops
      Src: /src/frr/isisd/isis_pdu_counter.c:100,1
    - Dst: pdu_counter_index_to_name
      Src: /src/frr/isisd/isis_pdu_counter.c:101,1
    - Dst: pdu_type_to_counter_index
      Src: /src/frr/isisd/isis_pdu_counter.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - area
    - pdu_type
    argTypes:
    - struct isis_area*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: pdu_counter_count_drop
    functionSourceFile: /src/frr/isisd/isis_pdu_counter.c
    functionUses: 0
    functionsReached:
    - pdu_counter_count
    - isis_log_pdu_drops
    - pdu_type_to_counter_index
    - pdu_counter_index_to_name
    linkageType: ''
    returnType: void
    signature: void pdu_counter_count_drop(struct isis_area *area, uint8_t pdu_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdu_type_to_counter_index
      Src: /src/frr/isisd/isis_pdu_counter.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - counter
    - pdu_type
    argTypes:
    - pdu_counter_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 113
    functionName: pdu_counter_get_count
    functionSourceFile: /src/frr/isisd/isis_pdu_counter.c
    functionUses: 0
    functionsReached:
    - pdu_type_to_counter_index
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pdu_counter_get_count(pdu_counter_t counter, uint8_t pdu_type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:27,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:31,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_vty_fabricd.c:35,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 42
    functionName: isis_circuit_lookup
    functionSourceFile: /src/frr/isisd/isis_vty_fabricd.c
    functionUses: 0
    functionsReached:
    - VTY_GET_CONTEXT
    - circuit_scan_by_ifp
    - vty_out
    linkageType: ''
    returnType: struct isis_circuit
    signature: struct isis_circuit *isis_circuit_lookup(struct vty *vty)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: lspid_print
      Src: /src/frr/isisd/isis_vty_fabricd.c:108,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:109,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:112,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:116,1
    - Dst: time
      Src: /src/frr/isisd/isis_vty_fabricd.c:120,1
    - Dst: frrtime_to_interval
      Src: /src/frr/isisd/isis_vty_fabricd.c:122,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:124,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:127,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:136,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_vty_fabricd.c:138,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:140,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_vty_fabricd.c:141,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:146,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:174,1
    - Dst: lsp_for_sysid
      Src: /src/frr/isisd/isis_vty_fabricd.c:177,1
    - Dst: lsp_print_flooding
      Src: /src/frr/isisd/isis_vty_fabricd.c:179,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_vty_fabricd.c:182,1
    - Dst: lsp_print_flooding
      Src: /src/frr/isisd/isis_vty_fabricd.c:183,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:184,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:191,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:201,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_vty_fabricd.c:208,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_vty_fabricd.c:210,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:211,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:217,1
    - Dst: isis_area_create
      Src: /src/frr/isisd/isis_vty_fabricd.c:219,1
    - Dst: isis_circuit_new
      Src: /src/frr/isisd/isis_vty_fabricd.c:222,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:226,1
    - Dst: ipv6_router
      Src: /src/frr/isisd/isis_vty_fabricd.c:232,1
    - Dst: isis_circuit_af_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:238,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:242,1
    - Dst: ip_router_isis
      Src: /src/frr/isisd/isis_vty_fabricd.c:250,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:253,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:265,1
    - Dst: isis_area_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:271,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:273,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_vty_fabricd.c:278,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:280,1
    - Dst: ipv6_router
      Src: /src/frr/isisd/isis_vty_fabricd.c:284,1
    - Dst: isis_circuit_af_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:290,1
    - Dst: isis_circuit_del
      Src: /src/frr/isisd/isis_vty_fabricd.c:293,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:298,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:304,1
    - Dst: CMD_ERR_NO_MATCH
      Src: /src/frr/isisd/isis_vty_fabricd.c:307,1
    - Dst: isis_bfd_circuit_cmd
      Src: /src/frr/isisd/isis_vty_fabricd.c:313,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:318,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:326,1
    - Dst: CMD_ERR_NO_MATCH
      Src: /src/frr/isisd/isis_vty_fabricd.c:329,1
    - Dst: isis_bfd_circuit_cmd
      Src: /src/frr/isisd/isis_vty_fabricd.c:335,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:340,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:345,1
    - Dst: isis_area_overload_bit_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:347,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:351,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:357,1
    - Dst: isis_area_overload_bit_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:359,1
    - Dst: isis_vty_password_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:363,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:366,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_vty_fabricd.c:374,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:375,1
    - Dst: CMD_WARNING_CONFIG_FAILED
      Src: /src/frr/isisd/isis_vty_fabricd.c:376,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_vty_fabricd.c:381,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_vty_fabricd.c:385,1
    - Dst: isis_area_passwd_cleartext_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:386,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_vty_fabricd.c:388,1
    - Dst: isis_area_passwd_hmac_md5_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:389,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:396,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:417,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:449,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:455,1
    - Dst: isis_vty_lsp_gen_interval_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:457,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:460,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:467,1
    - Dst: isis_vty_lsp_gen_interval_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:469,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:476,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:483,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:489,1
    - Dst: isis_area_lsp_refresh_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:499,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:505,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:511,1
    - Dst: isis_vty_lsp_refresh_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:512,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:515,1
    - Dst: isis_vty_lsp_refresh_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:522,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:529,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:539,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:542,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:549,1
    - Dst: isis_area_max_lsp_lifetime_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:561,1
    - Dst: isis_area_lsp_refresh_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:563,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:569,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:575,1
    - Dst: isis_vty_max_lsp_lifetime_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:577,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:581,1
    - Dst: isis_vty_max_lsp_lifetime_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:588,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:592,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:598,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:599,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:607,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:614,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:624,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_vty_fabricd.c:628,1
    - Dst: if
      Src: /src/frr/isisd/isis_vty_fabricd.c:632,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_vty_fabricd.c:632,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:633,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_vty_fabricd.c:636,1
    - Dst: isis_area_lsp_mtu_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:641,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:645,1
    - Dst: strtoul
      Src: /src/frr/isisd/isis_vty_fabricd.c:654,1
    - Dst: isis_vty_lsp_mtu_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:656,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:659,1
    - Dst: isis_vty_lsp_mtu_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:666,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:669,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:675,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:677,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:678,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:685,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:702,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:703,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:704,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:705,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:706,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_vty_fabricd.c:708,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_vty_fabricd.c:709,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_vty_fabricd.c:711,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:712,1
    - Dst: spf_backoff_new
      Src: /src/frr/isisd/isis_vty_fabricd.c:714,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_vty_fabricd.c:717,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:718,1
    - Dst: spf_backoff_new
      Src: /src/frr/isisd/isis_vty_fabricd.c:720,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_vty_fabricd.c:723,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:727,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:733,1
    - Dst: strcmp
      Src: /src/frr/isisd/isis_vty_fabricd.c:735,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:739,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:745,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:749,1
    - Dst: isis_circuit_passive_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:749,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:754,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:761,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:765,1
    - Dst: isis_circuit_passive_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:765,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:770,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:781,1
    - Dst: isis_circuit_passwd_hmac_md5_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:788,1
    - Dst: isis_circuit_passwd_cleartext_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:791,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:794,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:798,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:808,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:812,1
    - Dst: isis_circuit_passwd_unset
      Src: /src/frr/isisd/isis_vty_fabricd.c:812,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:817,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:826,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:830,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:835,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:844,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:850,1
    - Dst: isis_circuit_metric_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:850,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:852,1
    - Dst: isis_circuit_metric_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:852,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:857,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:865,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:869,1
    - Dst: isis_circuit_metric_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:869,1
    - Dst: CMD_FERR_RETURN
      Src: /src/frr/isisd/isis_vty_fabricd.c:872,1
    - Dst: isis_circuit_metric_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:872,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:878,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:885,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:886,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:896,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:904,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:914,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:921,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:922,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:932,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:940,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:950,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:957,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:958,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:968,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:976,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:986,1
    - Dst: atoi
      Src: /src/frr/isisd/isis_vty_fabricd.c:993,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:994,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:1004,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:1012,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:1022,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:1029,1
    - Dst: isis_str2mtid
      Src: /src/frr/isisd/isis_vty_fabricd.c:1033,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:1036,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:1042,1
    - Dst: isis_circuit_mt_enabled_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:1046,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:1049,1
    - Dst: isis_circuit_lookup
      Src: /src/frr/isisd/isis_vty_fabricd.c:1057,1
    - Dst: isis_str2mtid
      Src: /src/frr/isisd/isis_vty_fabricd.c:1061,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:1064,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:1070,1
    - Dst: isis_circuit_mt_enabled_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:1074,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1079,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1080,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1081,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1082,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1084,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1086,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1087,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1088,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1089,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1090,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1092,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1093,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1095,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1096,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1098,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1099,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1101,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1102,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1104,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1105,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1107,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1108,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1110,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1111,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1113,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1114,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1116,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1118,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1119,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1121,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1122,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1124,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1125,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1127,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1128,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1130,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1131,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1133,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1134,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1136,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1137,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1139,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1140,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 296
    argCount: 3
    argNames:
    - vty
    - lsp
    - isis
    argTypes:
    - struct vty*
    - struct isis_lsp*
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 102
    functionDepth: 5
    functionLinenumber: 102
    functionLinenumberEnd: 1141
    functionName: lsp_print_flooding
    functionSourceFile: /src/frr/isisd/isis_vty_fabricd.c
    functionUses: 1
    functionsReached:
    - isis_circuit_af_set
    - isis_area_lookup
    - strlen
    - atol
    - frr_each
    - ipv6_router
    - isis_vty_lsp_gen_interval_set
    - isis_area_create
    - CMD_WARNING_CONFIG_FAILED
    - isis_circuit_lookup
    - CMD_ERR_NO_MATCH
    - lsp_print_flooding
    - lsp_for_sysid
    - install_element
    - isis_area_passwd_cleartext_set
    - strmatch
    - isis_vty_lsp_refresh_set
    - lspid_print
    - isis_circuit_mt_enabled_set
    - VTY_DECLVAR_CONTEXT
    - isis_area_lsp_refresh_set
    - XCALLOC
    - isis_vty_max_lsp_lifetime_set
    - ALL_LIST_ELEMENTS_RO
    - isis_area_lsp_mtu_set
    - snprintf
    - CMD_FERR_RETURN
    - isis_vty_password_set
    - if
    - isis_vty_lsp_mtu_set
    - frrtime_to_interval
    - DEFUN
    - isis_circuit_del
    - vty_out
    - isis_area_max_lsp_lifetime_set
    - spf_backoff_new
    - print_sys_hostname
    - isis_str2mtid
    - circuit_scan_by_ifp
    - isis_circuit_metric_set
    - XFREE
    - atoi
    - spf_backoff_free
    - isis_circuit_pdu_size
    - ip_router_isis
    - strtoul
    - isis_area_passwd_hmac_md5_set
    - isis_circuit_passwd_cleartext_set
    - strcmp
    - isis_circuit_passwd_hmac_md5_set
    - isis_bfd_circuit_cmd
    - isis_area_overload_bit_set
    - isis_circuit_passive_set
    - isis_circuit_new
    - time
    - isis_circuit_passwd_unset
    linkageType: ''
    returnType: void
    signature: "void lsp_print_flooding(struct vty *vty, struct isis_lsp *lsp,\n\t\t\t
      \      struct isis *isis)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:476,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:483,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:489,1
    - Dst: isis_area_lsp_refresh_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:499,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - vty
    - level
    - interval
    argTypes:
    - struct vty*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 503
    functionName: isis_vty_lsp_refresh_set
    functionSourceFile: /src/frr/isisd/isis_vty_fabricd.c
    functionUses: 1
    functionsReached:
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - isis_area_lsp_refresh_set
    linkageType: ''
    returnType: int
    signature: int isis_vty_lsp_refresh_set(struct vty *vty, int level, uint16_t interval)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:529,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:539,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:542,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:549,1
    - Dst: isis_area_max_lsp_lifetime_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:561,1
    - Dst: isis_area_lsp_refresh_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:563,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - vty
    - level
    - interval
    argTypes:
    - struct vty*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 567
    functionName: isis_vty_max_lsp_lifetime_set
    functionSourceFile: /src/frr/isisd/isis_vty_fabricd.c
    functionUses: 1
    functionsReached:
    - isis_area_max_lsp_lifetime_set
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - isis_area_lsp_refresh_set
    linkageType: ''
    returnType: int
    signature: int isis_vty_max_lsp_lifetime_set(struct vty *vty, int level, uint16_t
      interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:624,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_vty_fabricd.c:628,1
    - Dst: if
      Src: /src/frr/isisd/isis_vty_fabricd.c:632,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_vty_fabricd.c:632,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_vty_fabricd.c:633,1
    - Dst: isis_circuit_pdu_size
      Src: /src/frr/isisd/isis_vty_fabricd.c:636,1
    - Dst: isis_area_lsp_mtu_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:641,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:645,1
    - Dst: strtoul
      Src: /src/frr/isisd/isis_vty_fabricd.c:654,1
    - Dst: isis_vty_lsp_mtu_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:656,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:659,1
    - Dst: isis_vty_lsp_mtu_set
      Src: /src/frr/isisd/isis_vty_fabricd.c:666,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:669,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/isisd/isis_vty_fabricd.c:675,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:677,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:678,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_vty_fabricd.c:685,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:702,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:703,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:704,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:705,1
    - Dst: atol
      Src: /src/frr/isisd/isis_vty_fabricd.c:706,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_vty_fabricd.c:708,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_vty_fabricd.c:709,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_vty_fabricd.c:711,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:712,1
    - Dst: spf_backoff_new
      Src: /src/frr/isisd/isis_vty_fabricd.c:714,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_vty_fabricd.c:717,1
    - Dst: spf_backoff_free
      Src: /src/frr/isisd/isis_vty_fabricd.c:718,1
    - Dst: spf_backoff_new
      Src: /src/frr/isisd/isis_vty_fabricd.c:720,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_vty_fabricd.c:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - lsp_mtu
    argTypes:
    - struct vty*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 622
    functionDepth: 2
    functionLinenumber: 622
    functionLinenumberEnd: 725
    functionName: isis_vty_lsp_mtu_set
    functionSourceFile: /src/frr/isisd/isis_vty_fabricd.c
    functionUses: 2
    functionsReached:
    - spf_backoff_free
    - DEFUN
    - strlen
    - strtoul
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - atol
    - XCALLOC
    - isis_area_lsp_mtu_set
    - ALL_LIST_ELEMENTS_RO
    - snprintf
    - spf_backoff_new
    - XFREE
    - if
    - isis_vty_lsp_mtu_set
    - isis_circuit_pdu_size
    linkageType: ''
    returnType: int
    signature: int isis_vty_lsp_mtu_set(struct vty *vty, unsigned int lsp_mtu)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1079,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1080,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1081,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1082,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1084,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1086,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1087,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1088,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1089,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1090,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1092,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1093,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1095,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1096,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1098,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1099,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1101,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1102,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1104,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1105,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1107,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1108,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1110,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1111,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1113,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1114,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1116,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1118,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1119,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1121,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1122,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1124,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1125,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1127,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1128,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1130,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1131,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1133,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1134,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1136,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1137,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1139,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_vty_fabricd.c:1140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1077
    functionDepth: 1
    functionLinenumber: 1077
    functionLinenumberEnd: 1141
    functionName: isis_vty_daemon_init
    functionSourceFile: /src/frr/isisd/isis_vty_fabricd.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void isis_vty_daemon_init(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_bpf.c:72,1
    - Dst: open
      Src: /src/frr/isisd/isis_bpf.c:73,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:77,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_bpf.c:78,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_bpf.c:82,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_bpf.c:84,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:85,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:86,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_bpf.c:87,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:91,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:92,1
    - Dst: malloc
      Src: /src/frr/isisd/isis_bpf.c:99,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_bpf.c:101,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:108,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:109,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:117,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:118,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:125,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:126,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:133,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:134,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:144,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:145,1
    - Dst: memset
      Src: /src/frr/isisd/isis_bpf.c:151,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:154,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:155,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_bpf.c:156,1
    - Dst: assert
      Src: /src/frr/isisd/isis_bpf.c:160,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts:
    - condition: (fd > 0)
      pos:
        line_end: 159
        line_start: 159
        source_file: /src/frr/isisd/isis_bpf.c
    constantsTouched: []
    func_position:
      end: 165
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 165
    functionName: open_bpf_dev
    functionSourceFile: /src/frr/isisd/isis_bpf.c
    functionUses: 0
    functionsReached:
    - assert
    - open
    - snprintf
    - memset
    - malloc
    - ioctl
    - zlog_debug
    - zlog_warn
    - safe_strerror
    - memcpy
    linkageType: ''
    returnType: int
    signature: int open_bpf_dev(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open_bpf_dev
      Src: /src/frr/isisd/isis_bpf.c:176,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:179,1
    - Dst: if_is_broadcast
      Src: /src/frr/isisd/isis_bpf.c:184,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 195
    functionName: isis_sock_init
    functionSourceFile: /src/frr/isisd/isis_bpf.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - zlog_warn
    - open_bpf_dev
    linkageType: ''
    returnType: int
    signature: int isis_sock_init(struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open_bpf_dev
      Src: /src/frr/isisd/isis_bpf.c:176,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:179,1
    - Dst: if_is_broadcast
      Src: /src/frr/isisd/isis_bpf.c:184,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:188,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 192
    functionName: (&isisd_privs)
    functionSourceFile: /src/frr/isisd/isis_bpf.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - zlog_warn
    - open_bpf_dev
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&isisd_privs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_bpf.c:203,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:205,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:206,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_bpf.c:206,1
    - Dst: read
      Src: /src/frr/isisd/isis_bpf.c:210,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:213,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_bpf.c:214,1
    - Dst: assert
      Src: /src/frr/isisd/isis_bpf.c:224,1
    - Dst: stream_write
      Src: /src/frr/isisd/isis_bpf.c:228,1
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_bpf.c:230,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_bpf.c:232,1
    - Dst: isis_handle_pdu
      Src: /src/frr/isisd/isis_bpf.c:235,1
    - Dst: stream_reset
      Src: /src/frr/isisd/isis_bpf.c:236,1
    - Dst: BPF_WORDALIGN
      Src: /src/frr/isisd/isis_bpf.c:237,1
    - Dst: ioctl
      Src: /src/frr/isisd/isis_bpf.c:242,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:243,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_bpf.c:243,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - circuit
    - ssnpa
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts:
    - condition: (circuit->fd > 0)
      pos:
        line_end: 202
        line_start: 202
        source_file: /src/frr/isisd/isis_bpf.c
    - condition: (bpf_hdr->bh_caplen == bpf_hdr->bh_datalen)
      pos:
        line_end: 223
        line_start: 223
        source_file: /src/frr/isisd/isis_bpf.c
    constantsTouched: []
    func_position:
      end: 246
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 246
    functionName: isis_recv_pdu_bcast
    functionSourceFile: /src/frr/isisd/isis_bpf.c
    functionUses: 0
    functionsReached:
    - read
    - stream_set_getp
    - stream_reset
    - ioctl
    - stream_write
    - zlog_warn
    - safe_strerror
    - BPF_WORDALIGN
    - memcpy
    - isis_handle_pdu
    - assert
    linkageType: ''
    returnType: int
    signature: int isis_recv_pdu_bcast(struct isis_circuit *circuit, uint8_t *ssnpa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_bpf.c:254,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:256,1
    - Dst: stream_set_getp
      Src: /src/frr/isisd/isis_bpf.c:263,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_bpf.c:270,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_bpf.c:272,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_bpf.c:273,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_bpf.c:274,1
    - Dst: htons
      Src: /src/frr/isisd/isis_bpf.c:275,1
    - Dst: isis_ethertype
      Src: /src/frr/isisd/isis_bpf.c:275,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_bpf.c:285,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_bpf.c:286,1
    - Dst: write
      Src: /src/frr/isisd/isis_bpf.c:289,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_bpf.c:291,1
    - Dst: safe_strerror
      Src: /src/frr/isisd/isis_bpf.c:292,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/isisd/isis_bpf.c:293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 299
    functionName: isis_send_pdu_bcast
    functionSourceFile: /src/frr/isisd/isis_bpf.c
    functionUses: 0
    functionsReached:
    - isis_ethertype
    - stream_set_getp
    - htons
    - stream_get_endp
    - ERRNO_IO_RETRY
    - zlog_warn
    - safe_strerror
    - write
    - memcpy
    linkageType: ''
    returnType: int
    signature: int isis_send_pdu_bcast(struct isis_circuit *circuit, int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/isisd/fabricd.c:70,1
    - Dst: memcpy
      Src: /src/frr/isisd/fabricd.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - id
    - adj
    argTypes:
    - uint8_t*
    - struct isis_adjacency*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: neighbor_entry_new
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: struct neighbor_entry
    signature: "struct neighbor_entry *neighbor_entry_new(const uint8_t *id,\n\t\t\t\t\t\t
      struct isis_adjacency *adj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/fabricd.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - neighbor
    argTypes:
    - struct neighbor_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: neighbor_entry_del
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void neighbor_entry_del(struct neighbor_entry *neighbor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: neighbor_entry_del
      Src: /src/frr/isisd/fabricd.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: neighbor_entry_del_void
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - neighbor_entry_del
    linkageType: ''
    returnType: void
    signature: void neighbor_entry_del_void(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_empty
      Src: /src/frr/isisd/fabricd.c:91,1
    - Dst: skiplist_delete_first
      Src: /src/frr/isisd/fabricd.c:92,1
    - Dst: hash_clean
      Src: /src/frr/isisd/fabricd.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - struct fabricd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: neighbor_lists_clear
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - skiplist_delete_first
    - hash_clean
    - skiplist_empty
    linkageType: ''
    returnType: void
    signature: void neighbor_lists_clear(struct fabricd *f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/isisd/fabricd.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - np
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: neighbor_entry_hash_key
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned
    signature: unsigned neighbor_entry_hash_key(const void *np)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/fabricd.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: neighbor_entry_hash_cmp
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool neighbor_entry_hash_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/isisd/fabricd.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: neighbor_entry_list_cmp
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int neighbor_entry_list_cmp(const void *a, const void *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/fabricd.c:123,1
    - Dst: skiplist_search
      Src: /src/frr/isisd/fabricd.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - id
    argTypes:
    - struct skiplist*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 134
    functionName: neighbor_entry_lookup_list
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    - memcpy
    linkageType: ''
    returnType: struct neighbor_entry
    signature: "struct neighbor_entry *neighbor_entry_lookup_list(struct skiplist
      *list,\n\t\t\t\t\t\t\t const uint8_t *id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/fabricd.c:141,1
    - Dst: hash_lookup
      Src: /src/frr/isisd/fabricd.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - hash
    - id
    argTypes:
    - struct hash*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 149
    functionName: neighbor_entry_lookup_hash
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - memcpy
    linkageType: ''
    returnType: struct neighbor_entry
    signature: "struct neighbor_entry *neighbor_entry_lookup_hash(struct hash *hash,\n\t\t\t\t\t\t\t
      const uint8_t *id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_empty
      Src: /src/frr/isisd/fabricd.c:158,1
    - Dst: skiplist_delete_first
      Src: /src/frr/isisd/fabricd.c:159,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/fabricd.c:164,1
    - Dst: if
      Src: /src/frr/isisd/fabricd.c:170,1
    - Dst: neighbor_entry_new
      Src: /src/frr/isisd/fabricd.c:173,1
    - Dst: skiplist_insert
      Src: /src/frr/isisd/fabricd.c:175,1
    - Dst: neighbors_neighbors_update
      Src: /src/frr/isisd/fabricd.c:181,1
    - Dst: hash_clean
      Src: /src/frr/isisd/fabricd.c:183,1
    - Dst: ALL_QUEUE_ELEMENTS_RO
      Src: /src/frr/isisd/fabricd.c:188,1
    - Dst: VTYPE_IS
      Src: /src/frr/isisd/fabricd.c:189,1
    - Dst: neighbor_entry_new
      Src: /src/frr/isisd/fabricd.c:195,1
    - Dst: hash_get
      Src: /src/frr/isisd/fabricd.c:197,1
    - Dst: assert
      Src: /src/frr/isisd/fabricd.c:199,1
    - Dst: fabricd_new
      Src: /src/frr/isisd/fabricd.c:203,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/fabricd.c:205,1
    - Dst: isis_spftree_new
      Src: /src/frr/isisd/fabricd.c:210,1
    - Dst: skiplist_new
      Src: /src/frr/isisd/fabricd.c:214,1
    - Dst: hash_create
      Src: /src/frr/isisd/fabricd.c:216,1
    - Dst: fabricd_finish
      Src: /src/frr/isisd/fabricd.c:226,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/fabricd.c:228,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/fabricd.c:230,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/fabricd.c:232,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/fabricd.c:234,1
    - Dst: neighbor_lists_clear
      Src: /src/frr/isisd/fabricd.c:235,1
    - Dst: skiplist_free
      Src: /src/frr/isisd/fabricd.c:236,1
    - Dst: hash_free
      Src: /src/frr/isisd/fabricd.c:237,1
    - Dst: fabricd_initial_sync_timeout
      Src: /src/frr/isisd/fabricd.c:240,1
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/fabricd.c:242,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:245,1
    - Dst: fabricd_initial_sync_hello
      Src: /src/frr/isisd/fabricd.c:252,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/fabricd.c:270,1
    - Dst: monotime
      Src: /src/frr/isisd/fabricd.c:272,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:275,1
    - Dst: fabricd_initial_sync_is_in_progress
      Src: /src/frr/isisd/fabricd.c:281,1
    - Dst: fabricd_initial_sync_is_complete
      Src: /src/frr/isisd/fabricd.c:295,1
    - Dst: fabricd_initial_sync_circuit
      Src: /src/frr/isisd/fabricd.c:305,1
    - Dst: fabricd_initial_sync_finish
      Src: /src/frr/isisd/fabricd.c:314,1
    - Dst: monotime
      Src: /src/frr/isisd/fabricd.c:321,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:324,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/fabricd.c:328,1
    - Dst: fabricd_bump_tier_calculation_timer
      Src: /src/frr/isisd/fabricd.c:331,1
    - Dst: fabricd_set_tier
      Src: /src/frr/isisd/fabricd.c:332,1
    - Dst: fabricd_calculate_fabric_tier
      Src: /src/frr/isisd/fabricd.c:334,1
    - Dst: fabricd_spftree
      Src: /src/frr/isisd/fabricd.c:336,1
    - Dst: lsp_for_vertex
      Src: /src/frr/isisd/fabricd.c:345,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:358,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:362,1
    - Dst: isis_run_hopcount_spf
      Src: /src/frr/isisd/fabricd.c:367,1
    - Dst: isis_vertex_queue_last
      Src: /src/frr/isisd/fabricd.c:370,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:373,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/fabricd.c:374,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:377,1
    - Dst: isis_spftree_del
      Src: /src/frr/isisd/fabricd.c:383,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:386,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:391,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct isis_adjacency*
    assertStmts:
    - condition: (inserted == n)
      pos:
        line_end: 198
        line_start: 198
        source_file: /src/frr/isisd/fabricd.c
    constantsTouched: []
    func_position:
      end: 393
      start: 151
    functionDepth: 6
    functionLinenumber: 151
    functionLinenumberEnd: 393
    functionName: fabricd_handle_adj_state_change
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - ALL_QUEUE_ELEMENTS_RO
    - isis_spftree_new
    - neighbor_lists_clear
    - hash_create
    - fabricd_initial_sync_timeout
    - isis_vertex_queue_last
    - isis_spftree_del
    - skiplist_delete_first
    - fabricd_initial_sync_finish
    - XCALLOC
    - fabricd_new
    - ALL_LIST_ELEMENTS_RO
    - hash_free
    - fabricd_initial_sync_is_complete
    - zlog_debug
    - VTYPE_IS
    - EVENT_ARG
    - if
    - hash_clean
    - hash_get
    - fabricd_spftree
    - assert
    - zlog_info
    - skiplist_empty
    - isis_run_hopcount_spf
    - lsp_for_vertex
    - monotime
    - fabricd_initial_sync_hello
    - EVENT_OFF
    - fabricd_initial_sync_circuit
    - neighbors_neighbors_update
    - skiplist_free
    - event_add_timer
    - fabricd_initial_sync_is_in_progress
    - fabricd_set_tier
    - fabricd_finish
    - neighbor_entry_new
    - skiplist_new
    - fabricd_bump_tier_calculation_timer
    - fabricd_calculate_fabric_tier
    - skiplist_insert
    linkageType: ''
    returnType: int
    signature: int fabricd_handle_adj_state_change(struct isis_adjacency *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/fabricd.c:397,1
    - Dst: fabricd_set_tier
      Src: /src/frr/isisd/fabricd.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: fabricd_tier_set_timer
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - fabricd_set_tier
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void fabricd_tier_set_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/fabricd.c:404,1
    - Dst: fabricd_calculate_fabric_tier
      Src: /src/frr/isisd/fabricd.c:407,1
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:411,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/fabricd.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 417
    functionName: fabricd_tier_calculation_cb
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_info
    - fabricd_calculate_fabric_tier
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void fabricd_tier_calculation_cb(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/fabricd.c:423,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/fabricd.c:430,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/fabricd.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - f
    argTypes:
    - struct fabricd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 435
    functionName: fabricd_bump_tier_calculation_timer
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void fabricd_bump_tier_calculation_timer(struct fabricd *f)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/isisd/fabricd.c:442,1
    - Dst: fabricd_bump_tier_calculation_timer
      Src: /src/frr/isisd/fabricd.c:445,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/fabricd.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - f
    - tier
    argTypes:
    - struct fabricd*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 447
    functionName: fabricd_set_tier
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 2
    functionsReached:
    - zlog_info
    - fabricd_bump_tier_calculation_timer
    - lsp_regenerate_schedule
    linkageType: ''
    returnType: void
    signature: void fabricd_set_tier(struct fabricd *f, uint8_t tier)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_run_hopcount_spf
      Src: /src/frr/isisd/fabricd.c:456,1
    - Dst: neighbors_neighbors_update
      Src: /src/frr/isisd/fabricd.c:457,1
    - Dst: fabricd_bump_tier_calculation_timer
      Src: /src/frr/isisd/fabricd.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 449
    functionDepth: 6
    functionLinenumber: 449
    functionLinenumberEnd: 459
    functionName: fabricd_run_spf
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - fabricd_bump_tier_calculation_timer
    - isis_run_hopcount_spf
    - neighbors_neighbors_update
    linkageType: ''
    returnType: void
    signature: void fabricd_run_spf(struct isis_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 469
    functionName: fabricd_spftree
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct isis_spftree
    signature: struct isis_spftree *fabricd_spftree(struct isis_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fabricd_set_tier
      Src: /src/frr/isisd/fabricd.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - area
    - tier
    argTypes:
    - struct isis_area*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 471
    functionDepth: 3
    functionLinenumber: 471
    functionLinenumberEnd: 480
    functionName: fabricd_configure_tier
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - fabricd_set_tier
    linkageType: ''
    returnType: void
    signature: void fabricd_configure_tier(struct isis_area *area, uint8_t tier)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 490
    functionName: fabricd_tier
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t fabricd_tier(struct isis_area *area)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/isisd/fabricd.c:501,1
    - Dst: vty_out
      Src: /src/frr/isisd/fabricd.c:507,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - area
    - vty
    argTypes:
    - struct isis_area*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 512
    functionName: fabricd_write_settings
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int fabricd_write_settings(struct isis_area *area, struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:523,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/fabricd.c:524,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/fabricd.c:529,1
    - Dst: XMALLOC
      Src: /src/frr/isisd/fabricd.c:531,1
    - Dst: memcpy
      Src: /src/frr/isisd/fabricd.c:534,1
    - Dst: listnode_add
      Src: /src/frr/isisd/fabricd.c:535,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - lsp
    - n
    - type
    - circuit
    argTypes:
    - struct isis_lsp*
    - struct neighbor_entry*
    - enum isis_tx_type
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 536
    functionName: move_to_queue
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - isis_tx_queue_add
    - print_sys_hostname
    - XMALLOC
    - listnode_add
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void move_to_queue(struct isis_lsp *lsp, struct neighbor_entry *n,\n\t\t\t
      \ enum isis_tx_type type, struct isis_circuit *circuit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 543
    functionName: mark_neighbor_as_present
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mark_neighbor_as_present(struct hash_bucket *bucket, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: neighbor_entry_lookup_list
      Src: /src/frr/isisd/fabricd.c:553,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:556,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/fabricd.c:557,1
    - Dst: neighbor_entry_lookup_hash
      Src: /src/frr/isisd/fabricd.c:562,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:565,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/fabricd.c:566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 570
    functionName: handle_firsthops
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - print_sys_hostname
    - zlog_debug
    - neighbor_entry_lookup_hash
    - neighbor_entry_lookup_list
    linkageType: ''
    returnType: void
    signature: void handle_firsthops(struct hash_bucket *bucket, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/fabricd.c:577,1
    - Dst: isis_vertex_id_init
      Src: /src/frr/isisd/fabricd.c:581,1
    - Dst: lsp_for_vertex
      Src: /src/frr/isisd/fabricd.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - f
    - n
    argTypes:
    - struct fabricd*
    - struct neighbor_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 584
    functionName: lsp_for_neighbor
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - isis_vertex_id_init
    - memcpy
    - lsp_for_vertex
    linkageType: ''
    returnType: struct isis_lsp
    signature: "struct isis_lsp *lsp_for_neighbor(struct fabricd *f,\n\t\t\t\t\t struct
      neighbor_entry *n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/fabricd.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 589
    functionName: fabricd_free_lsp_flooding_info
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void fabricd_free_lsp_flooding_info(void *val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/isisd/fabricd.c:594,1
    - Dst: XFREE
      Src: /src/frr/isisd/fabricd.c:596,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/fabricd.c:600,1
    - Dst: list_new
      Src: /src/frr/isisd/fabricd.c:604,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/fabricd.c:610,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - lsp
    - circuit
    argTypes:
    - struct isis_lsp*
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 615
    functionName: fabricd_lsp_reset_flooding_info
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - time
    - list_delete_all_node
    - list_new
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void fabricd_lsp_reset_flooding_info(struct isis_lsp *lsp,\n\t\t\t\t\t
      \   struct isis_circuit *circuit)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/fabricd.c:620,1
    - Dst: fabricd_lsp_reset_flooding_info
      Src: /src/frr/isisd/fabricd.c:622,1
    - Dst: skiplist_next
      Src: /src/frr/isisd/fabricd.c:628,1
    - Dst: hash_iterate
      Src: /src/frr/isisd/fabricd.c:632,1
    - Dst: isis_find_vertex
      Src: /src/frr/isisd/fabricd.c:635,1
    - Dst: hash_iterate
      Src: /src/frr/isisd/fabricd.c:642,1
    - Dst: skiplist_next
      Src: /src/frr/isisd/fabricd.c:646,1
    - Dst: lsp_for_neighbor
      Src: /src/frr/isisd/fabricd.c:650,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:653,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/fabricd.c:654,1
    - Dst: move_to_queue
      Src: /src/frr/isisd/fabricd.c:657,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:662,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/fabricd.c:663,1
    - Dst: neighbor_entry_lookup_hash
      Src: /src/frr/isisd/fabricd.c:674,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:679,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/fabricd.c:680,1
    - Dst: move_to_queue
      Src: /src/frr/isisd/fabricd.c:688,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/fabricd.c:694,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 2
    argNames:
    - lsp
    - circuit
    argTypes:
    - struct isis_lsp*
    - struct isis_circuit*
    assertStmts:
    - condition: (f)
      pos:
        line_end: 619
        line_start: 619
        source_file: /src/frr/isisd/fabricd.c
    constantsTouched: []
    func_position:
      end: 696
      start: 617
    functionDepth: 3
    functionLinenumber: 617
    functionLinenumberEnd: 696
    functionName: fabricd_lsp_flood
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 1
    functionsReached:
    - print_sys_hostname
    - neighbor_entry_lookup_hash
    - fabricd_lsp_reset_flooding_info
    - lsp_for_neighbor
    - zlog_debug
    - skiplist_next
    - move_to_queue
    - hash_iterate
    - assert
    - isis_find_vertex
    linkageType: ''
    returnType: void
    signature: void fabricd_lsp_flood(struct isis_lsp *lsp, struct isis_circuit *circuit)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/fabricd.c:711,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/fabricd.c:715,1
    - Dst: event_add_timer_msec
      Src: /src/frr/isisd/fabricd.c:716,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/fabricd.c:717,1
    - Dst: fabricd_ip_addrs
      Src: /src/frr/isisd/fabricd.c:722,1
    - Dst: listcount
      Src: /src/frr/isisd/fabricd.c:724,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/fabricd.c:733,1
    - Dst: listcount
      Src: /src/frr/isisd/fabricd.c:737,1
    - Dst: XFREE
      Src: /src/frr/isisd/fabricd.c:748,1
    - Dst: list_delete
      Src: /src/frr/isisd/fabricd.c:754,1
    - Dst: fabricd_lsp_reset_flooding_info
      Src: /src/frr/isisd/fabricd.c:764,1
    - Dst: hook_register
      Src: /src/frr/isisd/fabricd.c:782,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - area
    - circuit_scoped
    argTypes:
    - struct isis_area*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 698
    functionDepth: 2
    functionLinenumber: 698
    functionLinenumberEnd: 784
    functionName: fabricd_trigger_csnp
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - list_delete
    - isis_jitter
    - hook_register
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - event_add_timer_msec
    - fabricd_lsp_reset_flooding_info
    - EVENT_OFF
    - XFREE
    - fabricd_ip_addrs
    linkageType: ''
    returnType: void
    signature: void fabricd_trigger_csnp(struct isis_area *area, bool circuit_scoped)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fabricd_lsp_reset_flooding_info
      Src: /src/frr/isisd/fabricd.c:764,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lsp
    - circuit
    argTypes:
    - struct isis_lsp*
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 758
    functionDepth: 2
    functionLinenumber: 758
    functionLinenumberEnd: 766
    functionName: fabricd_update_lsp_no_flood
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - fabricd_lsp_reset_flooding_info
    linkageType: ''
    returnType: void
    signature: "void fabricd_update_lsp_no_flood(struct isis_lsp *lsp,\n\t\t\t\t struct
      isis_circuit *circuit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - area
    - delay
    - always_send_csnp
    argTypes:
    - struct isis_area*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 778
    functionName: fabricd_configure_triggered_csnp
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fabricd_configure_triggered_csnp(struct isis_area *area, int
      delay,\n\t\t\t\t      bool always_send_csnp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/isisd/fabricd.c:782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 784
    functionName: fabricd_init
    functionSourceFile: /src/frr/isisd/fabricd.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: void
    signature: void fabricd_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_redist.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts:
    - condition: (!"Unsupported address family!")
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/frr/isisd/isis_redist.c
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: redist_protocol
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int redist_protocol(int family)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/isisd/isis_redist.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - protocol
    argTypes:
    - int
    assertStmts:
    - condition: (!"Unknown redist protocol!")
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/frr/isisd/isis_redist.c
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: afi_for_redist_protocol
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: afi_t
    signature: afi_t afi_for_redist_protocol(int protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redist_protocol
      Src: /src/frr/isisd/isis_redist.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - i
    - family
    argTypes:
    - struct isis*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: get_ext_info
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - redist_protocol
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *get_ext_info(struct isis *i, int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redist_protocol
      Src: /src/frr/isisd/isis_redist.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - area
    - family
    - type
    - level
    argTypes:
    - struct isis_area*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: get_redist_settings
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - redist_protocol
    linkageType: ''
    returnType: struct isis_redist
    signature: "struct isis_redist *get_redist_settings(struct isis_area *area,\n\t\t\t\t\t
      \      int family, int type, int level)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redist_protocol
      Src: /src/frr/isisd/isis_redist.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - area
    - family
    - level
    argTypes:
    - struct isis_area*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: get_ext_reach
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 3
    functionsReached:
    - redist_protocol
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *get_ext_reach(struct isis_area *area, int family,
      int level)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_ext_reach
      Src: /src/frr/isisd/isis_redist.c:88,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_redist.c:92,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/isisd/isis_redist.c:98,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:100,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_redist.c:103,1
    - Dst: XMALLOC
      Src: /src/frr/isisd/isis_redist.c:106,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_redist.c:109,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_redist.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - area
    - level
    - p
    - src_p
    - info
    argTypes:
    - struct isis_area*
    - int
    - struct prefix*
    - struct prefix_ipv6*
    - struct isis_ext_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 111
    functionName: isis_redist_install
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - get_ext_reach
    - XMALLOC
    - memcmp
    - zlog_warn
    - lsp_regenerate_schedule
    - memcpy
    - srcdest_rnode_get
    linkageType: ''
    returnType: void
    signature: "void isis_redist_install(struct isis_area *area, int level,\n\t\t\t\tconst
      struct prefix *p,\n\t\t\t\tconst struct prefix_ipv6 *src_p,\n\t\t\t\tstruct
      isis_ext_info *info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_ext_reach
      Src: /src/frr/isisd/isis_redist.c:121,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_redist.c:125,1
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/isisd/isis_redist.c:131,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:135,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_redist.c:140,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:141,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_redist.c:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - area
    - level
    - p
    - src_p
    argTypes:
    - struct isis_area*
    - int
    - struct prefix*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 143
    functionName: isis_redist_uninstall
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - get_ext_reach
    - zlog_warn
    - XFREE
    - lsp_regenerate_schedule
    - srcdest_rnode_lookup
    linkageType: ''
    returnType: void
    signature: "void isis_redist_uninstall(struct isis_area *area, int level,\n\t\t\t\t
      \ const struct prefix *p,\n\t\t\t\t  const struct prefix_ipv6 *src_p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_redist.c:156,1
    - Dst: route_map_apply
      Src: /src/frr/isisd/isis_redist.c:160,1
    - Dst: isis_redist_install
      Src: /src/frr/isisd/isis_redist.c:171,1
    - Dst: isis_redist_uninstall
      Src: /src/frr/isisd/isis_redist.c:173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 6
    argNames:
    - area
    - level
    - redist
    - p
    - src_p
    - info
    argTypes:
    - struct isis_area*
    - int
    - struct isis_redist*
    - struct prefix*
    - struct prefix_ipv6*
    - struct isis_ext_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 147
    functionDepth: 4
    functionLinenumber: 147
    functionLinenumberEnd: 174
    functionName: isis_redist_update_ext_reach
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - isis_redist_uninstall
    - route_map_apply
    - isis_redist_install
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void isis_redist_update_ext_reach(struct isis_area *area, int level,\n\t\t\t\t\t
      struct isis_redist *redist,\n\t\t\t\t\t const struct prefix *p,\n\t\t\t\t\t
      const struct prefix_ipv6 *src_p,\n\t\t\t\t\t struct isis_ext_info *info)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_ext_info
      Src: /src/frr/isisd/isis_redist.c:179,1
    - Dst: memset
      Src: /src/frr/isisd/isis_redist.c:186,1
    - Dst: memset
      Src: /src/frr/isisd/isis_redist.c:190,1
    - Dst: assert
      Src: /src/frr/isisd/isis_redist.c:192,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/isisd/isis_redist.c:194,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:196,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_redist.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - isis
    - family
    argTypes:
    - struct isis*
    - int
    assertStmts:
    - condition: (!"Unknown family!")
      pos:
        line_end: 191
        line_start: 191
        source_file: /src/frr/isisd/isis_redist.c
    constantsTouched: []
    func_position:
      end: 207
      start: 176
    functionDepth: 3
    functionLinenumber: 176
    functionLinenumberEnd: 207
    functionName: isis_redist_ensure_default
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - memset
    - XCALLOC
    - get_ext_info
    - assert
    - srcdest_rnode_get
    linkageType: ''
    returnType: void
    signature: void isis_redist_ensure_default(struct isis *isis, int family)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_ext_info
      Src: /src/frr/isisd/isis_redist.c:215,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_redist.c:223,1
    - Dst: zebra_route_string
      Src: /src/frr/isisd/isis_redist.c:224,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_redist.c:227,1
    - Dst: srcdest_rnode_get
      Src: /src/frr/isisd/isis_redist.c:232,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:234,1
    - Dst: XCALLOC
      Src: /src/frr/isisd/isis_redist.c:236,1
    - Dst: is_default_prefix
      Src: /src/frr/isisd/isis_redist.c:245,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_redist.c:250,1
    - Dst: get_redist_settings
      Src: /src/frr/isisd/isis_redist.c:252,1
    - Dst: isis_redist_update_ext_reach
      Src: /src/frr/isisd/isis_redist.c:256,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 7
    argNames:
    - isis
    - type
    - p
    - src_p
    - distance
    - metric
    - tag
    argTypes:
    - struct isis*
    - int
    - struct prefix*
    - struct prefix_ipv6*
    - uint8_t
    - uint32_t
    - route_tag_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 210
    functionDepth: 5
    functionLinenumber: 210
    functionLinenumberEnd: 259
    functionName: isis_redist_add
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - is_default_prefix
    - XCALLOC
    - get_ext_info
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - zlog_warn
    - isis_redist_update_ext_reach
    - zebra_route_string
    - get_redist_settings
    - srcdest_rnode_get
    linkageType: ''
    returnType: void
    signature: "void isis_redist_add(struct isis *isis, int type, struct prefix *p,\n\t\t
      \    struct prefix_ipv6 *src_p, uint8_t distance,\n\t\t     uint32_t metric,
      const route_tag_t tag)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_ext_info
      Src: /src/frr/isisd/isis_redist.c:265,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_redist.c:272,1
    - Dst: zebra_route_string
      Src: /src/frr/isisd/isis_redist.c:273,1
    - Dst: is_default_prefix
      Src: /src/frr/isisd/isis_redist.c:275,1
    - Dst: isis_redist_add
      Src: /src/frr/isisd/isis_redist.c:281,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_redist.c:287,1
    - Dst: srcdest_rnode_lookup
      Src: /src/frr/isisd/isis_redist.c:292,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_redist.c:294,1
    - Dst: zebra_route_string
      Src: /src/frr/isisd/isis_redist.c:296,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:298,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:301,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_redist.c:303,1
    - Dst: get_redist_settings
      Src: /src/frr/isisd/isis_redist.c:305,1
    - Dst: isis_redist_uninstall
      Src: /src/frr/isisd/isis_redist.c:309,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_redist.c:312,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:313,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 4
    argNames:
    - isis
    - type
    - p
    - src_p
    argTypes:
    - struct isis*
    - int
    - struct prefix*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 261
    functionDepth: 6
    functionLinenumber: 261
    functionLinenumberEnd: 314
    functionName: isis_redist_delete
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - is_default_prefix
    - get_ext_info
    - ALL_LIST_ELEMENTS_RO
    - isis_redist_add
    - isis_redist_uninstall
    - zlog_debug
    - zlog_warn
    - get_redist_settings
    - XFREE
    - zebra_route_string
    - srcdest_rnode_lookup
    linkageType: ''
    returnType: void
    signature: "void isis_redist_delete(struct isis *isis, int type, struct prefix
      *p,\n\t\t\tstruct prefix_ipv6 *src_p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_redist.c:320,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/isisd/isis_redist.c:321,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_redist.c:325,1
    - Dst: XSTRDUP
      Src: /src/frr/isisd/isis_redist.c:326,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/isisd/isis_redist.c:327,1
    - Dst: route_map_counter_increment
      Src: /src/frr/isisd/isis_redist.c:328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - redist
    - routemap
    argTypes:
    - struct isis_redist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 330
    functionName: isis_redist_routemap_set
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - strlen
    - route_map_counter_decrement
    - route_map_lookup_by_name
    - route_map_counter_increment
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void isis_redist_routemap_set(struct isis_redist *redist,\n\t\t\t\t
      \    const char *routemap)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/isisd/isis_redist.c:345,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_redist.c:347,1
    - Dst: afi_for_redist_protocol
      Src: /src/frr/isisd/isis_redist.c:368,1
    - Dst: isis_zebra_redistribute_set
      Src: /src/frr/isisd/isis_redist.c:371,1
    - Dst: isis_zebra_redistribute_unset
      Src: /src/frr/isisd/isis_redist.c:374,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 1
    argNames:
    - isis
    argTypes:
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 377
    functionName: isis_redist_update_zebra_subscriptions
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - memset
    - isis_zebra_redistribute_unset
    - ALL_LIST_ELEMENTS_RO
    - afi_for_redist_protocol
    - isis_zebra_redistribute_set
    linkageType: ''
    returnType: void
    signature: void isis_redist_update_zebra_subscriptions(struct isis *isis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/isisd/isis_redist.c:388,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_redist.c:389,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_redist.c:391,1
    - Dst: route_table_finish
      Src: /src/frr/isisd/isis_redist.c:394,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - isis
    argTypes:
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 397
    functionName: isis_redist_free
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 1
    functionsReached:
    - route_top
    - route_table_finish
    - XFREE
    - srcdest_route_next
    linkageType: ''
    returnType: void
    signature: void isis_redist_free(struct isis *isis)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: redist_protocol
      Src: /src/frr/isisd/isis_redist.c:402,1
    - Dst: get_redist_settings
      Src: /src/frr/isisd/isis_redist.c:404,1
    - Dst: isis_redist_routemap_set
      Src: /src/frr/isisd/isis_redist.c:412,1
    - Dst: srcdest_table_init
      Src: /src/frr/isisd/isis_redist.c:415,1
    - Dst: srcdest_table_init
      Src: /src/frr/isisd/isis_redist.c:420,1
    - Dst: isis_redist_update_zebra_subscriptions
      Src: /src/frr/isisd/isis_redist.c:424,1
    - Dst: isis_redist_ensure_default
      Src: /src/frr/isisd/isis_redist.c:427,1
    - Dst: get_ext_info
      Src: /src/frr/isisd/isis_redist.c:429,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_redist.c:430,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_redist.c:430,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/isisd/isis_redist.c:437,1
    - Dst: is_default_prefix
      Src: /src/frr/isisd/isis_redist.c:440,1
    - Dst: isis_redist_update_ext_reach
      Src: /src/frr/isisd/isis_redist.c:449,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 7
    argNames:
    - area
    - level
    - family
    - type
    - metric
    - routemap
    - originate_type
    argTypes:
    - struct isis_area*
    - int
    - int
    - int
    - uint32_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 399
    functionDepth: 5
    functionLinenumber: 399
    functionLinenumberEnd: 453
    functionName: isis_redist_set
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - is_default_prefix
    - isis_redist_ensure_default
    - srcdest_route_next
    - get_ext_info
    - redist_protocol
    - route_top
    - isis_redist_routemap_set
    - srcdest_rnode_prefixes
    - isis_redist_update_ext_reach
    - srcdest_table_init
    - isis_redist_update_zebra_subscriptions
    - get_redist_settings
    linkageType: ''
    returnType: void
    signature: "void isis_redist_set(struct isis_area *area, int level, int family,
      int type,\n\t\t     uint32_t metric, const char *routemap, int originate_type)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_redist_settings
      Src: /src/frr/isisd/isis_redist.c:458,1
    - Dst: get_ext_reach
      Src: /src/frr/isisd/isis_redist.c:459,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_redist.c:468,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_redist.c:473,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_redist.c:473,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/isisd/isis_redist.c:479,1
    - Dst: is_default_prefix
      Src: /src/frr/isisd/isis_redist.c:482,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_redist.c:491,1
    - Dst: route_unlock_node
      Src: /src/frr/isisd/isis_redist.c:492,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_redist.c:495,1
    - Dst: isis_redist_update_zebra_subscriptions
      Src: /src/frr/isisd/isis_redist.c:496,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 4
    argNames:
    - area
    - level
    - family
    - type
    argTypes:
    - struct isis_area*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 497
    functionName: isis_redist_unset
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - get_ext_reach
    - is_default_prefix
    - srcdest_route_next
    - route_top
    - zlog_warn
    - srcdest_rnode_prefixes
    - XFREE
    - lsp_regenerate_schedule
    - isis_redist_update_zebra_subscriptions
    - get_redist_settings
    linkageType: ''
    returnType: void
    signature: void isis_redist_unset(struct isis_area *area, int level, int family,
      int type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/isisd/isis_redist.c:514,1
    - Dst: route_top
      Src: /src/frr/isisd/isis_redist.c:518,1
    - Dst: srcdest_route_next
      Src: /src/frr/isisd/isis_redist.c:519,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_redist.c:521,1
    - Dst: route_table_finish
      Src: /src/frr/isisd/isis_redist.c:523,1
    - Dst: isis_redist_update_zebra_subscriptions
      Src: /src/frr/isisd/isis_redist.c:527,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 528
    functionName: isis_redist_area_finish
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 2
    functionsReached:
    - route_table_finish
    - srcdest_route_next
    - route_top
    - XFREE
    - isis_redist_update_zebra_subscriptions
    linkageType: ''
    returnType: void
    signature: void isis_redist_area_finish(struct isis_area *area)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: get_redist_settings
      Src: /src/frr/isisd/isis_redist.c:730,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:733,1
    - Dst: zebra_route_string
      Src: /src/frr/isisd/isis_redist.c:734,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:736,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:738,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:740,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:741,1
    - Dst: get_redist_settings
      Src: /src/frr/isisd/isis_redist.c:748,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:751,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:754,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:756,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:758,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:760,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_redist.c:761,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 41
    argCount: 3
    argNames:
    - vty
    - area
    - family
    argTypes:
    - struct vty*
    - struct isis_area*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 709
    functionDepth: 3
    functionLinenumber: 709
    functionLinenumberEnd: 766
    functionName: isis_redist_config_write
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 1
    functionsReached:
    - zebra_route_string
    - vty_out
    - get_redist_settings
    linkageType: ''
    returnType: int
    signature: "int isis_redist_config_write(struct vty *vty, struct isis_area *area,\n\t\t\t
      \    int family)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/isisd/isis_redist.c:771,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_redist.c:772,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_redist.c:774,1
    - Dst: install_element
      Src: /src/frr/isisd/isis_redist.c:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 777
    functionName: isis_redist_init
    functionSourceFile: /src/frr/isisd/isis_redist.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void isis_redist_init(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_te.c:77,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/isisd/isis_te.c:80,1
    - Dst: interas_areaid::interas_areaid
      Src: /src/frr/isisd/isis_te.c:86,1
    - Dst: router_id::router_id
      Src: /src/frr/isisd/isis_te.c:87,1
    - Dst: ls_ted_new
      Src: /src/frr/isisd/isis_te.c:88,1
    - Dst: ted::ted
      Src: /src/frr/isisd/isis_te.c:89,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_te.c:90,1
    - Dst: isis_te_init_ted
      Src: /src/frr/isisd/isis_te.c:99,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:104,1
    - Dst: isis_link_params_update
      Src: /src/frr/isisd/isis_te.c:105,1
    - Dst: isis_mpls_te_circuit_ip_update
      Src: /src/frr/isisd/isis_te.c:106,1
    - Dst: isis_mpls_te_disable
      Src: /src/frr/isisd/isis_te.c:115,1
    - Dst: ls_ted_clean
      Src: /src/frr/isisd/isis_te.c:126,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:129,1
    - Dst: IS_EXT_TE
      Src: /src/frr/isisd/isis_te.c:130,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:134,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:136,1
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_te.c:151,1
    - Dst: ls_ted_del_all
      Src: /src/frr/isisd/isis_te.c:153,1
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_te.c:156,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:157,1
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_te.c:158,1
    - Dst: isis_del_ext_subtlvs
      Src: /src/frr/isisd/isis_te.c:159,1
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_te.c:163,1
    - Dst: XFREE
      Src: /src/frr/isisd/isis_te.c:164,1
    - Dst: isis_link_params_update_asla
      Src: /src/frr/isisd/isis_te.c:167,1
    - Dst: if
      Src: /src/frr/isisd/isis_te.c:175,1
    - Dst: HAS_LINK_PARAMS
      Src: /src/frr/isisd/isis_te.c:175,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_te.c:176,1
    - Dst: if
      Src: /src/frr/isisd/isis_te.c:184,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_te.c:184,1
    - Dst: isis_tlvs_free_asla
      Src: /src/frr/isisd/isis_te.c:185,1
    - Dst: isis_tlvs_find_alloc_asla
      Src: /src/frr/isisd/isis_te.c:187,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_te.c:190,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_te.c:193,1
    - Dst: RESET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:195,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:201,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:203,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:205,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:207,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_te.c:208,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:210,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:212,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:218,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:219,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:221,1
    - Dst: admin_group_clear
      Src: /src/frr/isisd/isis_te.c:222,1
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/isisd/isis_te.c:223,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:224,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:227,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:229,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:231,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:233,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:235,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:237,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:239,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:242,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:244,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:253,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:255,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:257,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:259,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:261,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:263,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:265,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:269,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:273,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:275,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:277,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:279,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:281,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:283,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:285,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:287,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:289,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:291,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:293,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:295,1
    - Dst: IS_PARAM_SET
      Src: /src/frr/isisd/isis_te.c:297,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:299,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:301,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct isis_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 302
    functionName: isis_mpls_te_create
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 1
    functionsReached:
    - isis_te_init_ted
    - RESET_SUBTLV
    - ted::ted
    - zlog_warn
    - isis_link_params_update_asla
    - admin_group_copy
    - HAS_LINK_PARAMS
    - UNSET_SUBTLV
    - ALL_LIST_ELEMENTS_RO
    - isis_tlvs_free_asla
    - zlog_debug
    - list_delete_all_node
    - if
    - IS_PARAM_SET
    - IS_SUBTLV
    - isis_mpls_te_disable
    - interas_areaid::interas_areaid
    - isis_link_params_update
    - XCALLOC::XCALLOC
    - IS_EXT_TE
    - zlog_info
    - ls_ted_del_all
    - XFREE
    - ls_ted_clean
    - isis_del_ext_subtlvs
    - admin_group_allow_explicit_zero
    - isis_tlvs_find_alloc_asla
    - list_isempty
    - ls_ted_new
    - SET_SUBTLV
    - router_id::router_id
    - isis_mpls_te_circuit_ip_update
    - ALL_LIST_ELEMENTS
    - admin_group_clear
    linkageType: ''
    returnType: void
    signature: void isis_mpls_te_create(struct isis_area *area)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:509,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:518,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:520,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:522,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:536,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:538,1
    - Dst: SET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:540,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - adj
    - family
    - global
    argTypes:
    - struct isis_adjacency*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 548
    functionName: _isis_mpls_te_adj_ip_enabled
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - SET_SUBTLV
    - IPV4_ADDR_COPY
    - IS_MPLS_TE
    - IPV6_ADDR_COPY
    - UNSET_SUBTLV
    linkageType: ''
    returnType: int
    signature: "int _isis_mpls_te_adj_ip_enabled(struct isis_adjacency *adj, int family,\n\t\t\t\t\tbool
      global)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _isis_mpls_te_adj_ip_enabled
      Src: /src/frr/isisd/isis_te.c:559,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_te.c:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - adj
    - family
    - global
    argTypes:
    - struct isis_adjacency*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 550
    functionDepth: 2
    functionLinenumber: 550
    functionLinenumberEnd: 565
    functionName: isis_mpls_te_adj_ip_enabled
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 1
    functionsReached:
    - lsp_regenerate_schedule
    - _isis_mpls_te_adj_ip_enabled
    linkageType: ''
    returnType: int
    signature: "int isis_mpls_te_adj_ip_enabled(struct isis_adjacency *adj, int family,\n\t\t\t\t
      \      bool global)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:576,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:582,1
    - Dst: IS_EXT_TE
      Src: /src/frr/isisd/isis_te.c:582,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:588,1
    - Dst: UNSET_SUBTLV
      Src: /src/frr/isisd/isis_te.c:592,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - adj
    - family
    - global
    argTypes:
    - struct isis_adjacency*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 599
    functionName: _isis_mpls_te_adj_ip_disabled
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - IS_EXT_TE
    - IS_MPLS_TE
    - UNSET_SUBTLV
    linkageType: ''
    returnType: int
    signature: "int _isis_mpls_te_adj_ip_disabled(struct isis_adjacency *adj, int
      family,\n\t\t\t\t\t bool global)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _isis_mpls_te_adj_ip_disabled
      Src: /src/frr/isisd/isis_te.c:610,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_te.c:613,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - adj
    - family
    - global
    argTypes:
    - struct isis_adjacency*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 601
    functionDepth: 2
    functionLinenumber: 601
    functionLinenumberEnd: 616
    functionName: isis_mpls_te_adj_ip_disabled
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 1
    functionsReached:
    - lsp_regenerate_schedule
    - _isis_mpls_te_adj_ip_disabled
    linkageType: ''
    returnType: int
    signature: "int isis_mpls_te_adj_ip_disabled(struct isis_adjacency *adj, int family,\n\t\t\t\t\tbool
      global)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _isis_mpls_te_adj_ip_enabled
      Src: /src/frr/isisd/isis_te.c:640,1
    - Dst: _isis_mpls_te_adj_ip_disabled
      Src: /src/frr/isisd/isis_te.c:642,1
    - Dst: _isis_mpls_te_adj_ip_enabled
      Src: /src/frr/isisd/isis_te.c:645,1
    - Dst: _isis_mpls_te_adj_ip_disabled
      Src: /src/frr/isisd/isis_te.c:647,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 648
    functionName: isis_mpls_te_circuit_ip_update
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 1
    functionsReached:
    - _isis_mpls_te_adj_ip_disabled
    - _isis_mpls_te_adj_ip_enabled
    linkageType: ''
    returnType: void
    signature: void isis_mpls_te_circuit_ip_update(struct isis_circuit *circuit)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_te.c:661,1
    - Dst: isis_link_params_update
      Src: /src/frr/isisd/isis_te.c:666,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:670,1
    - Dst: list_isempty
      Src: /src/frr/isisd/isis_te.c:672,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_te.c:675,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 679
    functionName: isis_mpls_te_update
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 1
    functionsReached:
    - list_isempty
    - circuit_scan_by_ifp
    - IS_MPLS_TE
    - lsp_regenerate_schedule
    - isis_link_params_update
    linkageType: ''
    returnType: int
    signature: int isis_mpls_te_update(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ls_vertex2msg
      Src: /src/frr/isisd/isis_te.c:698,1
    - Dst: ls_send_msg
      Src: /src/frr/isisd/isis_te.c:699,1
    - Dst: ls_edge2msg
      Src: /src/frr/isisd/isis_te.c:702,1
    - Dst: ls_send_msg
      Src: /src/frr/isisd/isis_te.c:703,1
    - Dst: ls_subnet2msg
      Src: /src/frr/isisd/isis_te.c:706,1
    - Dst: ls_send_msg
      Src: /src/frr/isisd/isis_te.c:707,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - type
    - link_state
    argTypes:
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 715
    functionName: isis_te_export
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - ls_edge2msg
    - ls_subnet2msg
    - ls_vertex2msg
    - ls_send_msg
    linkageType: ''
    returnType: int
    signature: int isis_te_export(uint8_t type, void *link_state)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:742,1
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/isisd/isis_te.c:745,1
    - Dst: ls_node_new
      Src: /src/frr/isisd/isis_te.c:748,1
    - Dst: ls_vertex_add
      Src: /src/frr/isisd/isis_te.c:750,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:753,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_te.c:755,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:761,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:762,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:765,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:767,1
    - Dst: strlcpy
      Src: /src/frr/isisd/isis_te.c:770,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:771,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:778,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:790,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:794,1
    - Dst: ls_node_same
      Src: /src/frr/isisd/isis_te.c:800,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:801,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:802,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 59
    argCount: 2
    argNames:
    - ted
    - lsp
    argTypes:
    - struct ls_ted*
    - struct isis_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 726
    functionDepth: 2
    functionLinenumber: 726
    functionLinenumberEnd: 812
    functionName: lsp_to_vertex
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - ls_node_same
    - IPV6_ADDR_COPY
    - print_sys_hostname
    - strlcpy
    - ls_find_vertex_by_id
    - IPV4_ADDR_COPY
    - SET_FLAG
    - te_debug
    - ls_vertex_add
    - memcpy
    - ls_node_new
    linkageType: ''
    returnType: struct ls_vertex
    signature: struct ls_vertex *lsp_to_vertex(struct ls_ted *ted, struct isis_lsp
      *lsp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:837,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:839,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:840,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:842,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:843,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/isisd/isis_te.c:856,1
    - Dst: ls_edge_add
      Src: /src/frr/isisd/isis_te.c:860,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:870,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:871,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:874,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:875,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:879,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 2
    argNames:
    - ted
    - attr
    argTypes:
    - struct ls_ted*
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 884
    functionName: get_edge
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 3
    functionsReached:
    - ls_edge_add
    - CHECK_FLAG
    - ls_find_edge_by_key
    - IPV4_ADDR_COPY
    - te_debug
    - IPV6_ADDR_COPY
    linkageType: ''
    returnType: struct ls_edge
    signature: struct ls_edge *get_edge(struct ls_ted *ted, struct ls_attributes *attr)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:904,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:907,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:908,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:910,1
    - Dst: ls_attributes_new
      Src: /src/frr/isisd/isis_te.c:914,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:919,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:921,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:923,1
    - Dst: admin_group_copy
      Src: /src/frr/isisd/isis_te.c:924,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:926,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:928,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:931,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:932,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:934,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:936,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:938,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:939,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:941,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:943,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:945,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:947,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:949,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:951,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:952,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:954,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:956,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:958,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:960,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:962,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:964,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:966,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:968,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:970,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:972,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:975,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:977,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:979,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:981,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:983,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:985,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:987,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:989,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:991,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:993,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:995,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:997,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1009,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1012,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1015,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1018,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:1023,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:1033,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1037,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1040,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1043,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1046,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 133
    argCount: 2
    argNames:
    - adv
    - tlvs
    argTypes:
    - struct ls_node_id
    - struct isis_ext_subtlvs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 1053
    functionName: get_attributes
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - ls_attributes_new
    - CHECK_FLAG
    - SET_FLAG
    - admin_group_copy
    - memcpy
    linkageType: ''
    returnType: struct ls_attributes
    signature: "struct ls_attributes *get_attributes(struct ls_node_id adv,\n\t\t\t\t\t
      \   struct isis_ext_subtlvs *tlvs)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1076,1
    - Dst: get_attributes
      Src: /src/frr/isisd/isis_te.c:1084,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1094,1
    - Dst: get_edge
      Src: /src/frr/isisd/isis_te.c:1097,1
    - Dst: ls_attributes_del
      Src: /src/frr/isisd/isis_te.c:1104,1
    - Dst: ls_attributes_same
      Src: /src/frr/isisd/isis_te.c:1110,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1111,1
    - Dst: ls_attributes_del
      Src: /src/frr/isisd/isis_te.c:1112,1
    - Dst: ls_attributes_del
      Src: /src/frr/isisd/isis_te.c:1117,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1124,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_te.c:1125,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1127,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_te.c:1128,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1130,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_te.c:1132,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1134,1
    - Dst: print_sys_hostname
      Src: /src/frr/isisd/isis_te.c:1136,1
    - Dst: ls_find_edge_by_destination
      Src: /src/frr/isisd/isis_te.c:1138,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/isisd/isis_te.c:1144,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/isisd/isis_te.c:1152,1
    - Dst: ls_find_vertex_by_key
      Src: /src/frr/isisd/isis_te.c:1159,1
    - Dst: sysid_to_key
      Src: /src/frr/isisd/isis_te.c:1160,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/isisd/isis_te.c:1162,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1171,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 62
    argCount: 5
    argNames:
    - id
    - metric
    - old_metric
    - tlvs
    - arg
    argTypes:
    - uint8_t*
    - uint32_t
    - bool
    - struct isis_ext_subtlvs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1068
    functionDepth: 2
    functionLinenumber: 1068
    functionLinenumberEnd: 1176
    functionName: lsp_to_edge_cb
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - ls_find_vertex_by_key
    - print_sys_hostname
    - get_edge
    - isis_te_export
    - sysid_to_key
    - SET_FLAG
    - ls_attributes_del
    - ls_find_edge_by_destination
    - te_debug
    - get_attributes
    - listnode_add_sort_nodup
    - ls_attributes_same
    linkageType: ''
    returnType: int
    signature: "int lsp_to_edge_cb(const uint8_t *id, uint32_t metric, bool old_metric,\n\t\t\t
      \ struct isis_ext_subtlvs *tlvs, void *arg)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1207,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1222,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:1223,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/isisd/isis_te.c:1230,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/isisd/isis_te.c:1231,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1242,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:1243,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/isisd/isis_te.c:1250,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/isisd/isis_te.c:1251,1
    - Dst: prefix_copy
      Src: /src/frr/isisd/isis_te.c:1260,1
    - Dst: ls_find_subnet
      Src: /src/frr/isisd/isis_te.c:1263,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1267,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1269,1
    - Dst: ls_subnet_del_all
      Src: /src/frr/isisd/isis_te.c:1271,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1273,1
    - Dst: ls_find_subnet
      Src: /src/frr/isisd/isis_te.c:1278,1
    - Dst: ls_prefix_new
      Src: /src/frr/isisd/isis_te.c:1281,1
    - Dst: ls_subnet_add
      Src: /src/frr/isisd/isis_te.c:1282,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1289,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:1293,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1296,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:1314,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_te.c:1315,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:1316,1
    - Dst: SET_FLAG
      Src: /src/frr/isisd/isis_te.c:1317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_te.c:1325,1
    - Dst: UNSET_FLAG
      Src: /src/frr/isisd/isis_te.c:1326,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1338,1
    - Dst: isis_te_parse_lsp
      Src: /src/frr/isisd/isis_te.c:1351,1
    - Dst: isis_te_args
      Src: /src/frr/isisd/isis_te.c:1358,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:1361,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1366,1
    - Dst: lsp_to_vertex
      Src: /src/frr/isisd/isis_te.c:1370,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_te.c:1372,1
    - Dst: IS_EXPORT_TE
      Src: /src/frr/isisd/isis_te.c:1380,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1381,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1386,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1389,1
    - Dst: isis_lsp_iterate_is_reach
      Src: /src/frr/isisd/isis_te.c:1396,1
    - Dst: isis_lsp_iterate_is_reach
      Src: /src/frr/isisd/isis_te.c:1399,1
    - Dst: isis_lsp_iterate_ip_reach
      Src: /src/frr/isisd/isis_te.c:1403,1
    - Dst: isis_lsp_iterate_ip_reach
      Src: /src/frr/isisd/isis_te.c:1405,1
    - Dst: isis_lsp_iterate_ip_reach
      Src: /src/frr/isisd/isis_te.c:1407,1
    - Dst: IS_EXPORT_TE
      Src: /src/frr/isisd/isis_te.c:1411,1
    - Dst: ls_vertex_clean
      Src: /src/frr/isisd/isis_te.c:1412,1
    - Dst: ls_vertex_clean
      Src: /src/frr/isisd/isis_te.c:1414,1
    - Dst: isis_te_delete_lsp
      Src: /src/frr/isisd/isis_te.c:1424,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1437,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:1445,1
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/isisd/isis_te.c:1449,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1453,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_te.c:1460,1
    - Dst: IS_EXPORT_TE
      Src: /src/frr/isisd/isis_te.c:1461,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1463,1
    - Dst: ls_edge_del_all
      Src: /src/frr/isisd/isis_te.c:1465,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_te.c:1469,1
    - Dst: ls_disconnect
      Src: /src/frr/isisd/isis_te.c:1470,1
    - Dst: IS_EXPORT_TE
      Src: /src/frr/isisd/isis_te.c:1472,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1474,1
    - Dst: ls_edge_del_all
      Src: /src/frr/isisd/isis_te.c:1476,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_te.c:1481,1
    - Dst: IS_EXPORT_TE
      Src: /src/frr/isisd/isis_te.c:1482,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1484,1
    - Dst: ls_subnet_del_all
      Src: /src/frr/isisd/isis_te.c:1486,1
    - Dst: IS_EXPORT_TE
      Src: /src/frr/isisd/isis_te.c:1490,1
    - Dst: isis_te_export
      Src: /src/frr/isisd/isis_te.c:1492,1
    - Dst: ls_node_del
      Src: /src/frr/isisd/isis_te.c:1494,1
    - Dst: ls_vertex_del
      Src: /src/frr/isisd/isis_te.c:1497,1
    - Dst: isis_te_lsp_event
      Src: /src/frr/isisd/isis_te.c:1511,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:1521,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_te.c:1525,1
    - Dst: isis_te_parse_lsp
      Src: /src/frr/isisd/isis_te.c:1535,1
    - Dst: isis_te_delete_lsp
      Src: /src/frr/isisd/isis_te.c:1538,1
    - Dst: isis_te_sync_ted
      Src: /src/frr/isisd/isis_te.c:1554,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1562,1
    - Dst: for
      Src: /src/frr/isisd/isis_te.c:1565,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1565,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1566,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:1568,1
    - Dst: IS_EXPORT_TE
      Src: /src/frr/isisd/isis_te.c:1568,1
    - Dst: te_debug
      Src: /src/frr/isisd/isis_te.c:1569,1
    - Dst: ls_sync_ted
      Src: /src/frr/isisd/isis_te.c:1571,1
    - Dst: isis_te_init_ted
      Src: /src/frr/isisd/isis_te.c:1586,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_te.c:1592,1
    - Dst: isis_te_parse_lsp
      Src: /src/frr/isisd/isis_te.c:1593,1
    - Dst: show_router_id
      Src: /src/frr/isisd/isis_te.c:1599,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1603,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1605,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/isisd/isis_te.c:1609,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1610,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1615,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_te.c:1618,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1635,1
    - Dst: ISIS_FIND_VRF_ARGS
      Src: /src/frr/isisd/isis_te.c:1638,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1641,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1642,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:1644,1
    - Dst: show_router_id
      Src: /src/frr/isisd/isis_te.c:1647,1
    - Dst: isis_lookup_by_vrfname
      Src: /src/frr/isisd/isis_te.c:1652,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1654,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:1657,1
    - Dst: show_router_id
      Src: /src/frr/isisd/isis_te.c:1660,1
    - Dst: show_ext_sub
      Src: /src/frr/isisd/isis_te.c:1668,1
    - Dst: sbuf_init
      Src: /src/frr/isisd/isis_te.c:1674,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1679,1
    - Dst: sbuf_reset
      Src: /src/frr/isisd/isis_te.c:1681,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1683,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1684,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1686,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1687,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1689,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1692,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1693,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1695,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1696,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1698,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1699,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_te.c:1700,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1702,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1703,1
    - Dst: inet_ntop
      Src: /src/frr/isisd/isis_te.c:1704,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1706,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1707,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1709,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1710,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1713,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1714,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1716,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1722,1
    - Dst: te_metric
      Src: /src/frr/isisd/isis_te.c:1724,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1725,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1726,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1729,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1730,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1733,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1734,1
    - Dst: IS_ANORMAL
      Src: /src/frr/isisd/isis_te.c:1736,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1738,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1739,1
    - Dst: IS_ANORMAL
      Src: /src/frr/isisd/isis_te.c:1740,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1744,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1745,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1748,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1749,1
    - Dst: IS_ANORMAL
      Src: /src/frr/isisd/isis_te.c:1750,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1753,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1754,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1757,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1758,1
    - Dst: IS_SUBTLV
      Src: /src/frr/isisd/isis_te.c:1761,1
    - Dst: sbuf_push
      Src: /src/frr/isisd/isis_te.c:1762,1
    - Dst: vty_multiline
      Src: /src/frr/isisd/isis_te.c:1766,1
    - Dst: sbuf_buf
      Src: /src/frr/isisd/isis_te.c:1766,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1767,1
    - Dst: sbuf_free
      Src: /src/frr/isisd/isis_te.c:1769,1
    - Dst: DEFUN
      Src: /src/frr/isisd/isis_te.c:1773,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1790,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1796,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1797,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:1800,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_te.c:1805,1
    - Dst: if_lookup_by_name
      Src: /src/frr/isisd/isis_te.c:1814,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1816,1
    - Dst: circuit_scan_by_ifp
      Src: /src/frr/isisd/isis_te.c:1818,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1820,1
    - Dst: show_ext_sub
      Src: /src/frr/isisd/isis_te.c:1824,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 42
    argCount: 5
    argNames:
    - prefix
    - metric
    - external
    - subtlvs
    - arg
    argTypes:
    - struct prefix*
    - uint32_t
    - bool
    - struct isis_subtlvs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1190
    functionDepth: 3
    functionLinenumber: 1190
    functionLinenumberEnd: 1829
    functionName: lsp_to_subnet_cb
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - isis_lsp_iterate_is_reach
    - isis_te_sync_ted
    - isis_te_init_ted
    - ls_prefix_new
    - frr_each
    - sbuf_reset
    - isis_te_export
    - memcmp
    - ls_sync_ted
    - IPV4_ADDR_SAME
    - zlog_warn
    - sbuf_free
    - isis_lookup_by_vrfname
    - show_ext_sub
    - IN6_IS_ADDR_UNSPECIFIED
    - ls_disconnect
    - IS_ANORMAL
    - lsp_to_vertex
    - isis_te_lsp_event
    - ALL_LIST_ELEMENTS_RO
    - vty_multiline
    - isis_te_delete_lsp
    - sbuf_push
    - inet_ntop
    - sbuf_buf
    - apply_mask_ipv6
    - prefix_copy
    - isis_te_parse_lsp
    - ls_subnet_del_all
    - isis_lsp_iterate_ip_reach
    - LSP_FRAGMENT
    - for
    - ls_vertex_del
    - ls_edge_del_all
    - DEFUN
    - IS_EXPORT_TE
    - IS_SUBTLV
    - vty_out
    - sbuf_init
    - circuit_scan_by_ifp
    - ls_find_subnet
    - ls_find_vertex_by_id
    - UNSET_FLAG
    - ls_vertex_clean
    - memcpy
    - if_lookup_by_name
    - ls_node_del
    - CHECK_FLAG
    - isis_te_args
    - SET_FLAG
    - show_router_id
    - ls_subnet_add
    - IS_MPLS_TE
    - te_debug
    - IPV6_ADDR_SAME
    - ALL_LIST_ELEMENTS
    - te_metric
    - ISIS_FIND_VRF_ARGS
    linkageType: ''
    returnType: int
    signature: "int lsp_to_subnet_cb(const struct prefix *prefix, uint32_t metric,\n\t\t\t
      \   bool external, struct isis_subtlvs *subtlvs,\n\t\t\t    void *arg)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/isisd/isis_te.c:1863,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_te.c:1864,1
    - Dst: strlen
      Src: /src/frr/isisd/isis_te.c:1865,1
    - Dst: strncmp
      Src: /src/frr/isisd/isis_te.c:1866,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:1867,1
    - Dst: strtol
      Src: /src/frr/isisd/isis_te.c:1869,1
    - Dst: strncmp
      Src: /src/frr/isisd/isis_te.c:1871,1
    - Dst: strncmp
      Src: /src/frr/isisd/isis_te.c:1874,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:1875,1
    - Dst: strtol
      Src: /src/frr/isisd/isis_te.c:1877,1
    - Dst: sysid2buff
      Src: /src/frr/isisd/isis_te.c:1888,1
    - Dst: sysid_to_key
      Src: /src/frr/isisd/isis_te.c:1889,1
    - Dst: dynhn_find_by_name
      Src: /src/frr/isisd/isis_te.c:1890,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:1891,1
    - Dst: sysid_to_key
      Src: /src/frr/isisd/isis_te.c:1892,1
    - Dst: strncmp
      Src: /src/frr/isisd/isis_te.c:1893,1
    - Dst: cmd_hostname_get
      Src: /src/frr/isisd/isis_te.c:1893,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_te.c:1894,1
    - Dst: sysid_to_key
      Src: /src/frr/isisd/isis_te.c:1895,1
    - Dst: ls_find_vertex_by_key
      Src: /src/frr/isisd/isis_te.c:1901,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - ted
    - id
    - isis
    argTypes:
    - struct ls_ted*
    - char*
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1841
    functionDepth: 1
    functionLinenumber: 1841
    functionLinenumberEnd: 1902
    functionName: vertex_for_arg
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - strlen
    - strlcpy
    - strtol
    - sysid2buff
    - sysid_to_key
    - strncmp
    - dynhn_find_by_name
    - ls_find_vertex_by_key
    - memcpy
    linkageType: ''
    returnType: struct ls_vertex
    signature: "struct ls_vertex *vertex_for_arg(struct ls_ted *ted, const char *id,\n\t\t\t\t\tstruct
      isis *isis)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: use_json
      Src: /src/frr/isisd/isis_te.c:1929,1
    - Dst: IS_MPLS_TE
      Src: /src/frr/isisd/isis_te.c:1932,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1933,1
    - Dst: json_object_new_object
      Src: /src/frr/isisd/isis_te.c:1941,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1943,1
    - Dst: strmatch
      Src: /src/frr/isisd/isis_te.c:1946,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:1950,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:1952,1
    - Dst: strncmp
      Src: /src/frr/isisd/isis_te.c:1956,1
    - Dst: vertex_for_arg
      Src: /src/frr/isisd/isis_te.c:1959,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1961,1
    - Dst: ls_show_vertex
      Src: /src/frr/isisd/isis_te.c:1967,1
    - Dst: ls_show_vertices
      Src: /src/frr/isisd/isis_te.c:1969,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:1971,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:1973,1
    - Dst: inet_pton
      Src: /src/frr/isisd/isis_te.c:1974,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1975,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:1982,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/isisd/isis_te.c:1983,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1985,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:1989,1
    - Dst: inet_pton
      Src: /src/frr/isisd/isis_te.c:1990,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:1991,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/isisd/isis_te.c:1998,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/isisd/isis_te.c:1999,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:2001,1
    - Dst: ls_show_edge
      Src: /src/frr/isisd/isis_te.c:2009,1
    - Dst: ls_show_edges
      Src: /src/frr/isisd/isis_te.c:2011,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:2013,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:2015,1
    - Dst: str2prefix
      Src: /src/frr/isisd/isis_te.c:2016,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:2017,1
    - Dst: ls_find_subnet
      Src: /src/frr/isisd/isis_te.c:2022,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:2024,1
    - Dst: argv_find
      Src: /src/frr/isisd/isis_te.c:2028,1
    - Dst: str2prefix
      Src: /src/frr/isisd/isis_te.c:2029,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:2030,1
    - Dst: ls_find_subnet
      Src: /src/frr/isisd/isis_te.c:2035,1
    - Dst: vty_out
      Src: /src/frr/isisd/isis_te.c:2037,1
    - Dst: ls_show_subnet
      Src: /src/frr/isisd/isis_te.c:2045,1
    - Dst: ls_show_subnets
      Src: /src/frr/isisd/isis_te.c:2047,1
    - Dst: ls_show_ted
      Src: /src/frr/isisd/isis_te.c:2051,1
    - Dst: vty_json
      Src: /src/frr/isisd/isis_te.c:2055,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 93
    argCount: 5
    argNames:
    - vty
    - argv
    - argc
    - area
    - isis
    argTypes:
    - struct vty*
    - struct cmd_token*[]
    - int
    - struct isis_area*
    - struct isis*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 1915
    functionDepth: 2
    functionLinenumber: 1915
    functionLinenumberEnd: 2058
    functionName: show_ted
    functionSourceFile: /src/frr/isisd/isis_te.c
    functionUses: 1
    functionsReached:
    - use_json
    - strncmp
    - ls_show_ted
    - strmatch
    - ls_find_edge_by_key
    - str2prefix
    - ls_show_subnets
    - vty_out
    - ls_find_subnet
    - inet_pton
    - argv_find
    - json_object_new_object
    - ls_show_vertex
    - ls_show_edge
    - IPV4_ADDR_COPY
    - ls_show_edges
    - IS_MPLS_TE
    - IPV6_ADDR_COPY
    - vty_json
    - ls_show_vertices
    - vertex_for_arg
    - ls_show_subnet
    linkageType: ''
    returnType: int
    signature: "int show_ted(struct vty *vty, struct cmd_token *argv[], int argc,\n\t\t
      \   struct isis_area *area, struct isis *isis)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:79,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:80,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:81,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:82,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:84,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:85,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:86,1
    - Dst: yang_data_new_enum
      Src: /src/frr/isisd/isis_nb_notifications.c:87,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - xpath
    - area
    - routing_instance
    - args
    argTypes:
    - char*
    - struct isis_area*
    - char*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: notif_prep_instance_hdr
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    - listnode_add
    - snprintf
    - yang_data_new_enum
    linkageType: ''
    returnType: void
    signature: "void notif_prep_instance_hdr(const char *xpath,\n\t\t\t\t    const
      struct isis_area *area,\n\t\t\t\t    const char *routing_instance,\n\t\t\t\t
      \   struct list *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:98,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:99,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:100,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:101,1
    - Dst: yang_data_new_enum
      Src: /src/frr/isisd/isis_nb_notifications.c:102,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:103,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:104,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_notifications.c:106,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - xpath
    - circuit
    - args
    argTypes:
    - char*
    - struct isis_circuit*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 108
    functionName: notif_prepr_iface_hdr
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - listnode_add
    - yang_data_new_enum
    - yang_data_new_string
    - yang_data_new_uint32
    linkageType: ''
    returnType: void
    signature: "void notif_prepr_iface_hdr(const char *xpath,\n\t\t\t\t  const struct
      isis_circuit *circuit,\n\t\t\t\t  struct list *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:116,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:120,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:121,1
    - Dst: yang_data_new_enum
      Src: /src/frr/isisd/isis_nb_notifications.c:122,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:123,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - area
    - overload
    argTypes:
    - struct isis_area*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 126
    functionName: isis_notif_db_overload
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_new_enum
    - yang_data_list_new
    linkageType: ''
    returnType: void
    signature: void isis_notif_db_overload(const struct isis_area *area, bool overload)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:135,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:141,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:142,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:143,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_notifications.c:144,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:145,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:146,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:147,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:148,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:149,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:151,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - circuit
    - pdu_size
    - lsp_id
    argTypes:
    - struct isis_circuit*
    - uint32_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 154
    functionName: isis_notif_lsp_too_large
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - yang_data_new_uint32
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_lsp_too_large(const struct isis_circuit *circuit,\n\t\t\t
      \     uint32_t pdu_size, const uint8_t *lsp_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:162,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:167,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:168,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:169,1
    - Dst: yang_data_new_enum
      Src: /src/frr/isisd/isis_nb_notifications.c:170,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:171,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - circuit
    - down
    argTypes:
    - struct isis_circuit*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 174
    functionName: isis_notif_if_state_change
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 1
    functionsReached:
    - snprintf
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_new_enum
    - yang_data_list_new
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: void isis_notif_if_state_change(const struct isis_circuit *circuit,
      bool down)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:183,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:188,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:189,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:190,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:191,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:192,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:194,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - area
    - lsp_id
    argTypes:
    - struct isis_area*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 197
    functionName: isis_notif_corrupted_lsp
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    linkageType: ''
    returnType: void
    signature: "void isis_notif_corrupted_lsp(const struct isis_area *area,\n\t\t\t
      \     const uint8_t *lsp_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:206,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:211,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:212,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:213,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:214,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:215,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:217,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - area
    - lsp_id
    argTypes:
    - struct isis_area*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 220
    functionName: isis_notif_lsp_exceed_max
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 1
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    linkageType: ''
    returnType: void
    signature: "void isis_notif_lsp_exceed_max(const struct isis_area *area,\n\t\t\t
      \      const uint8_t *lsp_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:230,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:235,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:236,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:237,1
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_notifications.c:238,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:239,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:240,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:241,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:242,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:244,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - circuit
    - max_area_addrs
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 248
    functionName: isis_notif_max_area_addr_mismatch
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_uint8
    - yang_data_new_binary
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_max_area_addr_mismatch(const struct isis_circuit *circuit,\n\t\t\t\t
      \      uint8_t max_area_addrs,\n\t\t\t\t       const char *raw_pdu, size_t raw_pdu_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:258,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:263,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:264,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:265,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:266,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:267,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:269,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - circuit
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: isis_notif_authentication_type_failure
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_binary
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_authentication_type_failure(const struct isis_circuit
      *circuit,\n\t\t\t\t\t    const char *raw_pdu,\n\t\t\t\t\t    size_t raw_pdu_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:282,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:287,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:288,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:289,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:290,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:291,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:293,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - circuit
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 297
    functionName: isis_notif_authentication_failure
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_binary
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_authentication_failure(const struct isis_circuit *circuit,\n\t\t\t\t
      \      const char *raw_pdu, size_t raw_pdu_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:306,1
    - Dst: dynhn_find_by_id
      Src: /src/frr/isisd/isis_nb_notifications.c:312,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:314,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:315,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:317,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:318,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:319,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:321,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:322,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:323,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:324,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:326,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:327,1
    - Dst: isis_adj_yang_state
      Src: /src/frr/isisd/isis_nb_notifications.c:327,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:328,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:330,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:331,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:332,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:335,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - adj
    - new_state
    - reason
    argTypes:
    - struct isis_adjacency*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 338
    functionName: isis_notif_adj_state_change
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 2
    functionsReached:
    - isis_adj_yang_state
    - dynhn_find_by_id
    - snprintf
    - hook_call
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_adj_state_change(const struct isis_adjacency *adj,\n\t\t\t\t
      int new_state, const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:348,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:353,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:354,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:355,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:356,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:357,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:358,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:359,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:360,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:362,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - circuit
    - reason
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 365
    functionName: isis_notif_reject_adjacency
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_data_new_binary
    - hook_call
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_reject_adjacency(const struct isis_circuit *circuit,\n\t\t\t\t
      const char *reason, const char *raw_pdu,\n\t\t\t\t size_t raw_pdu_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:374,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:379,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:380,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:381,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:382,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:383,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:385,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - circuit
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 388
    functionName: isis_notif_area_mismatch
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_binary
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_area_mismatch(const struct isis_circuit *circuit,\n\t\t\t
      \     const char *raw_pdu, size_t raw_pdu_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:398,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:404,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:405,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:406,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:407,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:408,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:409,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:410,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_notifications.c:411,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:412,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:413,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_notifications.c:414,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:415,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:416,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:417,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:418,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 5
    argNames:
    - circuit
    - lsp_id
    - seqno
    - timestamp
    - sys_id
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    - uint32_t
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 421
    functionName: isis_notif_lsp_received
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - yang_data_new_uint32
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_lsp_received(const struct isis_circuit *circuit,\n\t\t\t
      \    const uint8_t *lsp_id, uint32_t seqno,\n\t\t\t     uint32_t timestamp,
      const char *sys_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:430,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:435,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:436,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:437,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:438,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:439,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:440,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_notifications.c:441,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:442,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:443,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/isisd/isis_nb_notifications.c:444,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:445,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - area
    - lsp_id
    - seqno
    - timestamp
    argTypes:
    - struct isis_area*
    - uint8_t*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 426
    functionDepth: 2
    functionLinenumber: 426
    functionLinenumberEnd: 448
    functionName: isis_notif_lsp_gen
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - yang_data_new_uint32
    linkageType: ''
    returnType: void
    signature: "void isis_notif_lsp_gen(const struct isis_area *area, const uint8_t
      *lsp_id,\n\t\t\tuint32_t seqno, uint32_t timestamp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:458,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:463,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:464,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:465,1
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_notifications.c:466,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:467,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:468,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:469,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:470,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:472,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - circuit
    - rcv_id_len
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 476
    functionName: isis_notif_id_len_mismatch
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_uint8
    - yang_data_new_binary
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_id_len_mismatch(const struct isis_circuit *circuit,\n\t\t\t\tuint8_t
      rcv_id_len, const char *raw_pdu,\n\t\t\t\tsize_t raw_pdu_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:486,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:491,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:492,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:493,1
    - Dst: yang_data_new_uint8
      Src: /src/frr/isisd/isis_nb_notifications.c:494,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:495,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:496,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:497,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:498,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:500,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - circuit
    - version
    - raw_pdu
    - raw_pdu_len
    argTypes:
    - struct isis_circuit*
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 504
    functionName: isis_notif_version_skew
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_uint8
    - yang_data_new_binary
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_version_skew(const struct isis_circuit *circuit,\n\t\t\t
      \    uint8_t version, const char *raw_pdu,\n\t\t\t     size_t raw_pdu_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:516,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:522,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:523,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:524,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:525,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:526,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:527,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:528,1
    - Dst: yang_data_new_binary
      Src: /src/frr/isisd/isis_nb_notifications.c:529,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:530,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:533,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 6
    argNames:
    - circuit
    - lsp_id
    - raw_pdu
    - raw_pdu_len
    - offset
    - tlv_type
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    - char*
    - size_t
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 536
    functionName: isis_notif_lsp_error
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_data_new_binary
    - hook_call
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_lsp_error(const struct isis_circuit *circuit,\n\t\t\t
      \ const uint8_t *lsp_id, const char *raw_pdu,\n\t\t\t  size_t raw_pdu_len,\n\t\t\t
      \ __attribute__((unused)) uint32_t offset,\n\t\t\t  __attribute__((unused))
      uint8_t tlv_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:545,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:551,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:552,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:553,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:554,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:555,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:556,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:558,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - circuit
    - lsp_id
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 561
    functionName: isis_notif_seqno_skipped
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_seqno_skipped(const struct isis_circuit *circuit,\n\t\t\t
      \     const uint8_t *lsp_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_list_new
      Src: /src/frr/isisd/isis_nb_notifications.c:570,1
    - Dst: notif_prep_instance_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:576,1
    - Dst: notif_prepr_iface_hdr
      Src: /src/frr/isisd/isis_nb_notifications.c:577,1
    - Dst: snprintf
      Src: /src/frr/isisd/isis_nb_notifications.c:578,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_nb_notifications.c:579,1
    - Dst: yang_data_new_string
      Src: /src/frr/isisd/isis_nb_notifications.c:580,1
    - Dst: listnode_add
      Src: /src/frr/isisd/isis_nb_notifications.c:581,1
    - Dst: hook_call
      Src: /src/frr/isisd/isis_nb_notifications.c:583,1
    - Dst: nb_notification_send
      Src: /src/frr/isisd/isis_nb_notifications.c:585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - circuit
    - lsp_id
    argTypes:
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 586
    functionName: isis_notif_own_lsp_purge
    functionSourceFile: /src/frr/isisd/isis_nb_notifications.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hook_call
    - nb_notification_send
    - snprintfrr
    - listnode_add
    - notif_prep_instance_hdr
    - yang_data_list_new
    - yang_data_new_string
    - notif_prepr_iface_hdr
    linkageType: ''
    returnType: void
    signature: "void isis_notif_own_lsp_purge(const struct isis_circuit *circuit,\n\t\t\t
      \     const uint8_t *lsp_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - area
    - ','
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: isis_spf_schedule
    functionSourceFile: /src/frr/isisd/isis_spf.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isis_spf_schedule(area, level)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isis_circuit_stream
      Src: /src/frr/isisd/isis_pdu.c:59,1
    - Dst: fill_fixed_hdr
      Src: /src/frr/isisd/isis_pdu.c:61,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:63,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_pdu.c:65,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:66,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:67,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:68,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:69,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_pdu.c:71,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:72,1
    - Dst: stream_putl
      Src: /src/frr/isisd/isis_pdu.c:73,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_pdu.c:74,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:76,1
    - Dst: stream_putw_at
      Src: /src/frr/isisd/isis_pdu.c:78,1
    - Dst: pdu_counter_count
      Src: /src/frr/isisd/isis_pdu.c:80,1
    - Dst: struct isis_circuit*::tx
      Src: /src/frr/isisd/isis_pdu.c:81,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - hdr
    - circuit
    - level
    argTypes:
    - struct isis_lsp_hdr*
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 89
    functionName: ack_lsp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - pdu_counter_count
    - flog_err
    - struct isis_circuit*::tx
    - fill_fixed_hdr
    - isis_circuit_stream
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int ack_lsp(struct isis_lsp_hdr *hdr, struct isis_circuit *circuit,\n\t\t
      \  int level)"
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:123,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:132,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:138,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:155,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:156,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:158,1
    - Dst: isis_new_adj
      Src: /src/frr/isisd/isis_pdu.c:165,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:178,1
    - Dst: time
      Src: /src/frr/isisd/isis_pdu.c:187,1
    - Dst: isis_tlvs_to_adj
      Src: /src/frr/isisd/isis_pdu.c:190,1
    - Dst: tlvs_to_adj_mt_set
      Src: /src/frr/isisd/isis_pdu.c:191,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_pdu.c:195,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_pdu.c:196,1
    - Dst: fabricd_initial_sync_is_in_progress
      Src: /src/frr/isisd/isis_pdu.c:201,1
    - Dst: fabricd_initial_sync_circuit
      Src: /src/frr/isisd/isis_pdu.c:202,1
    - Dst: isis_tlvs_area_addresses_match
      Src: /src/frr/isisd/isis_pdu.c:206,1
    - Dst: isis_adj_process_threeway
      Src: /src/frr/isisd/isis_pdu.c:215,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:223,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:227,1
    - Dst: isis_adj_process_threeway
      Src: /src/frr/isisd/isis_pdu.c:241,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:248,1
    - Dst: isis_adj_process_threeway
      Src: /src/frr/isisd/isis_pdu.c:256,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:262,1
    - Dst: isis_adj_process_threeway
      Src: /src/frr/isisd/isis_pdu.c:270,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:276,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:291,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:298,1
    - Dst: isis_adj_process_threeway
      Src: /src/frr/isisd/isis_pdu.c:307,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:312,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_pdu.c:321,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:325,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:329,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:339,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:343,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:352,1
    - Dst: isis_adj_process_threeway
      Src: /src/frr/isisd/isis_pdu.c:361,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:365,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:372,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:377,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:387,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_pdu.c:392,1
    - Dst: isis_adj_usage2levels
      Src: /src/frr/isisd/isis_pdu.c:394,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:420,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_pdu.c:424,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 179
    argCount: 1
    argNames:
    - iih
    argTypes:
    - struct iih_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 429
    functionName: process_p2p_hello
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_new_adj
    - isis_tlvs_to_adj
    - isis_adj_process_threeway
    - fabricd_initial_sync_is_in_progress
    - isis_adj_state_change
    - listcount
    - lsp_regenerate_schedule
    - memcmp
    - circuit_t2string
    - zlog_debug
    - EVENT_OFF
    - fabricd_initial_sync_circuit
    - isis_tlvs_area_addresses_match
    - zlog_warn
    - event_add_timer
    - isis_adj_usage2levels
    - tlvs_to_adj_mt_set
    - time
    linkageType: ''
    returnType: int
    signature: int process_p2p_hello(struct iih_info *iih)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isis_adj_lookup
      Src: /src/frr/isisd/isis_pdu.c:434,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:436,1
    - Dst: isis_new_adj
      Src: /src/frr/isisd/isis_pdu.c:440,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:444,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pdu.c:446,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:450,1
    - Dst: list_delete_all_node
      Src: /src/frr/isisd/isis_pdu.c:456,1
    - Dst: isis_adj_build_neigh_list
      Src: /src/frr/isisd/isis_pdu.c:458,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:468,1
    - Dst: event_add_event
      Src: /src/frr/isisd/isis_pdu.c:469,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:471,1
    - Dst: time
      Src: /src/frr/isisd/isis_pdu.c:477,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:479,1
    - Dst: isis_tlvs_to_adj
      Src: /src/frr/isisd/isis_pdu.c:482,1
    - Dst: tlvs_to_adj_mt_set
      Src: /src/frr/isisd/isis_pdu.c:483,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_pdu.c:487,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_pdu.c:488,1
    - Dst: isis_tlvs_own_snpa_found
      Src: /src/frr/isisd/isis_pdu.c:496,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:500,1
    - Dst: isis_adj_state_change
      Src: /src/frr/isisd/isis_pdu.c:506,1
    - Dst: lsp_regenerate_schedule
      Src: /src/frr/isisd/isis_pdu.c:513,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:516,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_pdu.c:520,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:522,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 1
    argNames:
    - iih
    argTypes:
    - struct iih_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 431
    functionDepth: 4
    functionLinenumber: 431
    functionLinenumberEnd: 525
    functionName: process_lan_hello
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_adj_state_change
    - memcmp
    - isis_adj_build_neigh_list
    - memset
    - zlog_debug
    - list_delete_all_node
    - isis_new_adj
    - isis_adj_lookup
    - EVENT_OFF
    - event_add_timer
    - tlvs_to_adj_mt_set
    - memcpy
    - isis_tlvs_to_adj
    - stream_get_endp
    - circuit_t2string
    - lsp_regenerate_schedule
    - isis_tlvs_own_snpa_found
    - time
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int process_lan_hello(struct iih_info *iih)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_pdu.c:529,1
    - Dst: ISO_MTU
      Src: /src/frr/isisd/isis_pdu.c:530,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:531,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:534,1
    - Dst: stream_set_endp
      Src: /src/frr/isisd/isis_pdu.c:535,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - pdu_len
    - circuit
    argTypes:
    - uint16_t
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 537
    functionName: pdu_len_validate
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - stream_set_endp
    - stream_get_endp
    - stream_get_getp
    - ISO_MTU
    linkageType: ''
    returnType: int
    signature: int pdu_len_validate(uint16_t pdu_len, struct isis_circuit *circuit)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - circuit
    argTypes:
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 550
    functionName: update_rej_adj_count
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void update_rej_adj_count(struct isis_circuit *circuit)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_pdu.c:556,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:557,1
    - Dst: stream_get_from
      Src: /src/frr/isisd/isis_pdu.c:568,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:571,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_pdu.c:574,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:577,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:577,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:578,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:583,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:584,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:586,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:594,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:595,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:597,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:605,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:608,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:610,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:620,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:625,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:627,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:639,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_pdu.c:640,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_pdu.c:641,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_pdu.c:642,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:645,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:647,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_pdu.c:648,1
    - Dst: pdu_len_validate
      Src: /src/frr/isisd/isis_pdu.c:651,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:652,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:656,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:658,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:665,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:668,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:670,1
    - Dst: isis_unpack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:680,1
    - Dst: STREAM_READABLE
      Src: /src/frr/isisd/isis_pdu.c:680,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:682,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:683,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:685,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:692,1
    - Dst: isis_notif_area_mismatch
      Src: /src/frr/isisd/isis_pdu.c:695,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:701,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:702,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:704,1
    - Dst: isis_tlvs_auth_is_valid
      Src: /src/frr/isisd/isis_pdu.c:711,1
    - Dst: isis_event_auth_failure
      Src: /src/frr/isisd/isis_pdu.c:714,1
    - Dst: stream_get_from
      Src: /src/frr/isisd/isis_pdu.c:719,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:722,1
    - Dst: isis_notif_authentication_failure
      Src: /src/frr/isisd/isis_pdu.c:723,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:726,1
    - Dst: isis_notif_authentication_type_failure
      Src: /src/frr/isisd/isis_pdu.c:727,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:734,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:735,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:738,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:740,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_pdu.c:748,1
    - Dst: isis_tlvs_area_addresses_match
      Src: /src/frr/isisd/isis_pdu.c:750,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:753,1
    - Dst: isis_notif_area_mismatch
      Src: /src/frr/isisd/isis_pdu.c:760,1
    - Dst: fabricd_ip_addrs
      Src: /src/frr/isisd/isis_pdu.c:765,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_pdu.c:769,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:773,1
    - Dst: update_rej_adj_count
      Src: /src/frr/isisd/isis_pdu.c:777,1
    - Dst: isis_notif_reject_adjacency
      Src: /src/frr/isisd/isis_pdu.c:779,1
    - Dst: process_p2p_hello
      Src: /src/frr/isisd/isis_pdu.c:786,1
    - Dst: process_lan_hello
      Src: /src/frr/isisd/isis_pdu.c:786,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:788,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 122
    argCount: 3
    argNames:
    - pdu_type
    - circuit
    - ssnpa
    argTypes:
    - uint8_t
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 552
    functionDepth: 5
    functionLinenumber: 552
    functionLinenumberEnd: 791
    functionName: process_hello
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_notif_authentication_type_failure
    - pdu_len_validate
    - isis_free_tlvs
    - isis_notif_reject_adjacency
    - isis_notif_area_mismatch
    - memcmp
    - zlog_warn
    - flog_err
    - isis_tlvs_area_addresses_match
    - isis_tlvs_auth_is_valid
    - stream_getc
    - zlog_debug
    - update_rej_adj_count
    - zlog_dump_data
    - stream_get_getp
    - isis_notif_authentication_failure
    - STREAM_READABLE
    - isis_event_auth_failure
    - listcount
    - stream_get
    - stream_get_from
    - process_p2p_hello
    - STREAM_DATA
    - stream_get_endp
    - stream_getw
    - process_lan_hello
    - circuit_t2string
    - fabricd_ip_addrs
    - isis_unpack_tlvs
    linkageType: ''
    returnType: int
    signature: "int process_hello(uint8_t pdu_type, struct isis_circuit *circuit,\n\t\t\t
      uint8_t *ssnpa)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_pdu.c:798,1
    - Dst: fabricd_update_lsp_no_flood
      Src: /src/frr/isisd/isis_pdu.c:800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - lsp
    - circuit
    - circuit_scoped
    argTypes:
    - struct isis_lsp*
    - struct isis_circuit*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 793
    functionDepth: 3
    functionLinenumber: 793
    functionLinenumberEnd: 801
    functionName: lsp_flood_or_update
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - lsp_flood
    - fabricd_update_lsp_no_flood
    linkageType: ''
    returnType: void
    signature: "void lsp_flood_or_update(struct isis_lsp *lsp,\n\t\t\t\tstruct isis_circuit
      *circuit,\n\t\t\t\tbool circuit_scoped)"
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_pdu.c:813,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:814,1
    - Dst: stream_get_from
      Src: /src/frr/isisd/isis_pdu.c:817,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_pdu.c:831,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_pdu.c:832,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:842,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_pdu.c:847,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:850,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:850,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:851,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_pdu.c:856,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_pdu.c:857,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_pdu.c:858,1
    - Dst: stream_getl
      Src: /src/frr/isisd/isis_pdu.c:859,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_pdu.c:860,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:861,1
    - Dst: snprintfrr
      Src: /src/frr/isisd/isis_pdu.c:867,1
    - Dst: isis_notif_lsp_received
      Src: /src/frr/isisd/isis_pdu.c:868,1
    - Dst: time
      Src: /src/frr/isisd/isis_pdu.c:868,1
    - Dst: pdu_len_validate
      Src: /src/frr/isisd/isis_pdu.c:872,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:873,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:879,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:888,1
    - Dst: iso_csum_verify
      Src: /src/frr/isisd/isis_pdu.c:897,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:897,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:899,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:907,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:915,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_pdu.c:918,1
    - Dst: isis_unpack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:926,1
    - Dst: STREAM_READABLE
      Src: /src/frr/isisd/isis_pdu.c:926,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:928,1
    - Dst: isis_notif_lsp_error
      Src: /src/frr/isisd/isis_pdu.c:948,1
    - Dst: isis_tlvs_auth_is_valid
      Src: /src/frr/isisd/isis_pdu.c:963,1
    - Dst: isis_event_auth_failure
      Src: /src/frr/isisd/isis_pdu.c:966,1
    - Dst: isis_notif_authentication_failure
      Src: /src/frr/isisd/isis_pdu.c:981,1
    - Dst: isis_notif_authentication_type_failure
      Src: /src/frr/isisd/isis_pdu.c:993,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_pdu.c:1003,1
    - Dst: lsp_compare
      Src: /src/frr/isisd/isis_pdu.c:1006,1
    - Dst: isis_adj_lookup_snpa
      Src: /src/frr/isisd/isis_pdu.c:1016,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1018,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1059,1
    - Dst: ack_lsp
      Src: /src/frr/isisd/isis_pdu.c:1074,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:1077,1
    - Dst: lsp_update
      Src: /src/frr/isisd/isis_pdu.c:1082,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1087,1
    - Dst: lsp_flood_or_update
      Src: /src/frr/isisd/isis_pdu.c:1090,1
    - Dst: ISIS_FLAGS_CLEAR_ALL
      Src: /src/frr/isisd/isis_pdu.c:1093,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_pdu.c:1105,1
    - Dst: ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1112,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_pdu.c:1119,1
    - Dst: ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1124,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_pdu.c:1128,1
    - Dst: ISIS_CLEAR_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1130,1
    - Dst: isis_notif_seqno_skipped
      Src: /src/frr/isisd/isis_pdu.c:1141,1
    - Dst: lsp_inc_seqno
      Src: /src/frr/isisd/isis_pdu.c:1145,1
    - Dst: lsp_flood_or_update
      Src: /src/frr/isisd/isis_pdu.c:1146,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_pdu.c:1149,1
    - Dst: ISIS_CLEAR_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1151,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1154,1
    - Dst: isis_notif_own_lsp_purge
      Src: /src/frr/isisd/isis_pdu.c:1162,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:1170,1
    - Dst: lsp_purge_non_exist
      Src: /src/frr/isisd/isis_pdu.c:1173,1
    - Dst: lsp_inc_seqno
      Src: /src/frr/isisd/isis_pdu.c:1187,1
    - Dst: isis_notif_seqno_skipped
      Src: /src/frr/isisd/isis_pdu.c:1191,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1194,1
    - Dst: lsp_flood
      Src: /src/frr/isisd/isis_pdu.c:1199,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_pdu.c:1201,1
    - Dst: ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1203,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_pdu.c:1205,1
    - Dst: ISIS_CLEAR_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1207,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_pdu.c:1220,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:1222,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_pdu.c:1224,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1227,1
    - Dst: lsp_new_from_recv
      Src: /src/frr/isisd/isis_pdu.c:1234,1
    - Dst: lsp_insert
      Src: /src/frr/isisd/isis_pdu.c:1238,1
    - Dst: lsp_update
      Src: /src/frr/isisd/isis_pdu.c:1242,1
    - Dst: lsp_flood_or_update
      Src: /src/frr/isisd/isis_pdu.c:1246,1
    - Dst: ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1250,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_pdu.c:1255,1
    - Dst: lsp_update
      Src: /src/frr/isisd/isis_pdu.c:1256,1
    - Dst: ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1260,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_pdu.c:1264,1
    - Dst: ISIS_CLEAR_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1266,1
    - Dst: fabricd_trigger_csnp
      Src: /src/frr/isisd/isis_pdu.c:1273,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1275,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 243
    argCount: 4
    argNames:
    - pdu_type
    - circuit
    - ssnpa
    - max_area_addrs
    argTypes:
    - uint8_t
    - struct isis_circuit*
    - uint8_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 808
    functionDepth: 11
    functionLinenumber: 808
    functionLinenumberEnd: 1277
    functionName: process_lsp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 3
    functionsReached:
    - isis_tx_queue_add
    - isis_notif_authentication_type_failure
    - lsp_update
    - lsp_inc_seqno
    - pdu_len_validate
    - ack_lsp
    - isis_free_tlvs
    - ISIS_FLAGS_CLEAR_ALL
    - isis_adj_lookup_snpa
    - memcmp
    - lsp_flood_or_update
    - lsp_compare
    - zlog_warn
    - ISIS_CLEAR_FLAG
    - isis_tlvs_auth_is_valid
    - stream_getc
    - stream_putc_at
    - isis_tx_queue_del
    - zlog_debug
    - stream_getl
    - isis_notif_seqno_skipped
    - zlog_dump_data
    - lsp_flood
    - isis_notif_lsp_received
    - LSP_FRAGMENT
    - stream_get_getp
    - isis_notif_lsp_error
    - lsp_new_from_recv
    - isis_notif_authentication_failure
    - STREAM_READABLE
    - lsp_purge_non_exist
    - isis_event_auth_failure
    - stream_get
    - stream_get_from
    - isis_notif_own_lsp_purge
    - ISIS_SET_FLAG
    - memcpy
    - fabricd_trigger_csnp
    - lsp_search
    - lsp_insert
    - STREAM_DATA
    - snprintfrr
    - stream_get_endp
    - stream_getw
    - circuit_t2string
    - iso_csum_verify
    - isis_unpack_tlvs
    - time
    linkageType: ''
    returnType: int
    signature: "int process_lsp(uint8_t pdu_type, struct isis_circuit *circuit,\n\t\t
      \      const uint8_t *ssnpa, uint8_t max_area_addrs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1223
    functionDepth: 0
    functionLinenumber: 1223
    functionLinenumberEnd: 1223
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lspid)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_pdu.c:1289,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:1290,1
    - Dst: stream_getw
      Src: /src/frr/isisd/isis_pdu.c:1302,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_pdu.c:1305,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_pdu.c:1306,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_pdu.c:1312,1
    - Dst: stream_get
      Src: /src/frr/isisd/isis_pdu.c:1314,1
    - Dst: pdu_len_validate
      Src: /src/frr/isisd/isis_pdu.c:1318,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1319,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1324,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_pdu.c:1328,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:1331,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:1331,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:1332,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1338,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1348,1
    - Dst: circuit_t2string
      Src: /src/frr/isisd/isis_pdu.c:1352,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1360,1
    - Dst: isis_adj_lookup
      Src: /src/frr/isisd/isis_pdu.c:1380,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1385,1
    - Dst: isis_unpack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1395,1
    - Dst: STREAM_READABLE
      Src: /src/frr/isisd/isis_pdu.c:1395,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1397,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1406,1
    - Dst: isis_tlvs_auth_is_valid
      Src: /src/frr/isisd/isis_pdu.c:1407,1
    - Dst: isis_event_auth_failure
      Src: /src/frr/isisd/isis_pdu.c:1410,1
    - Dst: stream_get_from
      Src: /src/frr/isisd/isis_pdu.c:1415,1
    - Dst: isis_notif_authentication_failure
      Src: /src/frr/isisd/isis_pdu.c:1427,1
    - Dst: isis_notif_authentication_type_failure
      Src: /src/frr/isisd/isis_pdu.c:1439,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1452,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1457,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_pdu.c:1471,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:1472,1
    - Dst: lsp_compare
      Src: /src/frr/isisd/isis_pdu.c:1476,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_pdu.c:1483,1
    - Dst: ISIS_CLEAR_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1488,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_pdu.c:1489,1
    - Dst: lsp_inc_seqno
      Src: /src/frr/isisd/isis_pdu.c:1496,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_pdu.c:1497,1
    - Dst: ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1500,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_pdu.c:1503,1
    - Dst: memcmp
      Src: /src/frr/isisd/isis_pdu.c:1513,1
    - Dst: LSP_FRAGMENT
      Src: /src/frr/isisd/isis_pdu.c:1517,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:1520,1
    - Dst: lsp_search
      Src: /src/frr/isisd/isis_pdu.c:1523,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1527,1
    - Dst: lsp_new
      Src: /src/frr/isisd/isis_pdu.c:1531,1
    - Dst: lsp_insert
      Src: /src/frr/isisd/isis_pdu.c:1534,1
    - Dst: lsp_set_all_srmflags
      Src: /src/frr/isisd/isis_pdu.c:1537,1
    - Dst: ISIS_SET_FLAG
      Src: /src/frr/isisd/isis_pdu.c:1538,1
    - Dst: list_new
      Src: /src/frr/isisd/isis_pdu.c:1551,1
    - Dst: lsp_build_list_nonzero_ht
      Src: /src/frr/isisd/isis_pdu.c:1552,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/isisd/isis_pdu.c:1560,1
    - Dst: lsp_id_cmp
      Src: /src/frr/isisd/isis_pdu.c:1561,1
    - Dst: list_delete_node
      Src: /src/frr/isisd/isis_pdu.c:1563,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/isisd/isis_pdu.c:1570,1
    - Dst: isis_tx_queue_add
      Src: /src/frr/isisd/isis_pdu.c:1571,1
    - Dst: list_delete
      Src: /src/frr/isisd/isis_pdu.c:1576,1
    - Dst: fabricd_initial_sync_is_complete
      Src: /src/frr/isisd/isis_pdu.c:1579,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1580,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1584,1
    - Dst: pdu_size
      Src: /src/frr/isisd/isis_pdu.c:1588,1
    - Dst: isis_handle_pdu
      Src: /src/frr/isisd/isis_pdu.c:1622,1
    - Dst: stream_get_getp
      Src: /src/frr/isisd/isis_pdu.c:1625,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:1626,1
    - Dst: stream_get_from
      Src: /src/frr/isisd/isis_pdu.c:1629,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:1633,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:1634,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:1638,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:1639,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:1640,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:1641,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:1642,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:1644,1
    - Dst: stream_forward_getp
      Src: /src/frr/isisd/isis_pdu.c:1646,1
    - Dst: stream_getc
      Src: /src/frr/isisd/isis_pdu.c:1647,1
    - Dst: pdu_counter_count
      Src: /src/frr/isisd/isis_pdu.c:1649,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:1652,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1654,1
    - Dst: ISIS_ERROR
      Src: /src/frr/isisd/isis_pdu.c:1655,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:1659,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1661,1
    - Dst: ISIS_ERROR
      Src: /src/frr/isisd/isis_pdu.c:1662,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1666,1
    - Dst: isis_notif_version_skew
      Src: /src/frr/isisd/isis_pdu.c:1669,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1672,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:1677,1
    - Dst: isis_notif_id_len_mismatch
      Src: /src/frr/isisd/isis_pdu.c:1693,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1696,1
    - Dst: pdu_size
      Src: /src/frr/isisd/isis_pdu.c:1701,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1702,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1703,1
    - Dst: ISIS_WARNING
      Src: /src/frr/isisd/isis_pdu.c:1704,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:1708,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1711,1
    - Dst: ISIS_ERROR
      Src: /src/frr/isisd/isis_pdu.c:1712,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:1715,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:1716,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1719,1
    - Dst: ISIS_ERROR
      Src: /src/frr/isisd/isis_pdu.c:1720,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1724,1
    - Dst: isis_notif_version_skew
      Src: /src/frr/isisd/isis_pdu.c:1727,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1730,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1735,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1737,1
    - Dst: ISIS_WARNING
      Src: /src/frr/isisd/isis_pdu.c:1738,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:1746,1
    - Dst: isis_notif_max_area_addr_mismatch
      Src: /src/frr/isisd/isis_pdu.c:1753,1
    - Dst: pdu_counter_count_drop
      Src: /src/frr/isisd/isis_pdu.c:1756,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 128
    argCount: 3
    argNames:
    - pdu_type
    - circuit
    - ssnpa
    argTypes:
    - uint8_t
    - struct isis_circuit*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1285
    functionDepth: 10
    functionLinenumber: 1285
    functionLinenumberEnd: 1767
    functionName: process_snp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_tx_queue_add
    - isis_notif_authentication_type_failure
    - lsp_inc_seqno
    - list_delete
    - pdu_len_validate
    - isis_free_tlvs
    - lsp_build_list_nonzero_ht
    - ISIS_ERROR
    - memcmp
    - pdu_counter_count
    - lsp_compare
    - zlog_warn
    - flog_err
    - ISIS_CLEAR_FLAG
    - isis_tlvs_auth_is_valid
    - stream_getc
    - isis_tx_queue_del
    - ALL_LIST_ELEMENTS_RO
    - fabricd_initial_sync_is_complete
    - isis_notif_max_area_addr_mismatch
    - zlog_debug
    - zlog_dump_data
    - LSP_FRAGMENT
    - stream_get_getp
    - isis_notif_id_len_mismatch
    - pdu_counter_count_drop
    - isis_notif_authentication_failure
    - lsp_id_cmp
    - STREAM_READABLE
    - stream_forward_getp
    - isis_event_auth_failure
    - isis_notif_version_skew
    - list_delete_node
    - stream_get
    - isis_adj_lookup
    - stream_get_from
    - ISIS_SET_FLAG
    - lsp_new
    - isis_handle_pdu
    - memcpy
    - lsp_set_all_srmflags
    - ISIS_WARNING
    - lsp_search
    - CHECK_FLAG
    - STREAM_DATA
    - lsp_insert
    - stream_getw
    - stream_get_endp
    - circuit_t2string
    - pdu_size
    - list_new
    - ALL_LIST_ELEMENTS
    - isis_unpack_tlvs
    linkageType: ''
    returnType: int
    signature: "int process_snp(uint8_t pdu_type, struct isis_circuit *circuit,\n\t\t
      \      const uint8_t *ssnpa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1522
    functionDepth: 0
    functionLinenumber: 1522
    functionLinenumberEnd: 1522
    functionName: LSP_FRAGMENT
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LSP_FRAGMENT(lspid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdu_size
      Src: /src/frr/isisd/isis_pdu.c:1839,1
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu.c:1840,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1842,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1843,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1844,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1845,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1846,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1847,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1848,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1849,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - pdu_type
    - stream
    argTypes:
    - uint8_t
    - struct stream*
    assertStmts:
    - condition: (!"Unknown PDU Type")
      pos:
        line_end: 1839
        line_start: 1839
        source_file: /src/frr/isisd/isis_pdu.c
    constantsTouched: []
    func_position:
      end: 1850
      start: 1835
    functionDepth: 1
    functionLinenumber: 1835
    functionLinenumberEnd: 1850
    functionName: fill_fixed_hdr
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 2
    functionsReached:
    - pdu_size
    - stream_putc
    - assert
    linkageType: ''
    returnType: void
    signature: void fill_fixed_hdr(uint8_t pdu_type, struct stream *stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1852
    functionDepth: 0
    functionLinenumber: 1852
    functionLinenumberEnd: 1858
    functionName: hello_pdu_type
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t hello_pdu_type(struct isis_circuit *circuit, int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hello_pdu_type
      Src: /src/frr/isisd/isis_pdu.c:1863,1
    - Dst: isis_circuit_stream
      Src: /src/frr/isisd/isis_pdu.c:1865,1
    - Dst: fill_fixed_hdr
      Src: /src/frr/isisd/isis_pdu.c:1866,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1868,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:1869,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_pdu.c:1877,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:1878,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_pdu.c:1879,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1885,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:1886,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:1888,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - circuit
    - level
    - len_pointer
    argTypes:
    - struct isis_circuit*
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1860
    functionDepth: 2
    functionLinenumber: 1860
    functionLinenumberEnd: 1890
    functionName: put_hello_hdr
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_putw
    - stream_get_endp
    - hello_pdu_type
    - fill_fixed_hdr
    - isis_circuit_stream
    - stream_putc
    linkageType: ''
    returnType: void
    signature: "void put_hello_hdr(struct isis_circuit *circuit, int level,\n\t\t\t
      \ size_t *len_pointer)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:1901,1
    - Dst: put_hello_hdr
      Src: /src/frr/isisd/isis_pdu.c:1905,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1907,1
    - Dst: isis_tlvs_add_auth
      Src: /src/frr/isisd/isis_pdu.c:1909,1
    - Dst: listcount
      Src: /src/frr/isisd/isis_pdu.c:1911,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1912,1
    - Dst: isis_tlvs_add_area_addresses
      Src: /src/frr/isisd/isis_pdu.c:1916,1
    - Dst: isis_tlvs_add_lan_neighbors
      Src: /src/frr/isisd/isis_pdu.c:1919,1
    - Dst: fabricd_initial_sync_is_in_progress
      Src: /src/frr/isisd/isis_pdu.c:1927,1
    - Dst: fabricd_initial_sync_circuit
      Src: /src/frr/isisd/isis_pdu.c:1928,1
    - Dst: isis_tlvs_add_threeway_adj
      Src: /src/frr/isisd/isis_pdu.c:1932,1
    - Dst: isis_tlvs_add_threeway_adj
      Src: /src/frr/isisd/isis_pdu.c:1938,1
    - Dst: isis_tlvs_set_protocols_supported
      Src: /src/frr/isisd/isis_pdu.c:1945,1
    - Dst: circuit_mt_settings
      Src: /src/frr/isisd/isis_pdu.c:1957,1
    - Dst: area_is_mt
      Src: /src/frr/isisd/isis_pdu.c:1958,1
    - Dst: isis_tlvs_add_mt_router_info
      Src: /src/frr/isisd/isis_pdu.c:1964,1
    - Dst: fabricd_ip_addrs
      Src: /src/frr/isisd/isis_pdu.c:1969,1
    - Dst: isis_tlvs_add_ipv4_addresses
      Src: /src/frr/isisd/isis_pdu.c:1972,1
    - Dst: isis_tlvs_add_ipv6_addresses
      Src: /src/frr/isisd/isis_pdu.c:1976,1
    - Dst: isis_tlvs_add_global_ipv6_addresses
      Src: /src/frr/isisd/isis_pdu.c:1980,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1989,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:1991,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:1997,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2001,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:2003,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2007,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:2010,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:2010,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2011,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2014,1
    - Dst: pdu_counter_count
      Src: /src/frr/isisd/isis_pdu.c:2016,1
    - Dst: hello_pdu_type
      Src: /src/frr/isisd/isis_pdu.c:2017,1
    - Dst: struct isis_circuit*::tx
      Src: /src/frr/isisd/isis_pdu.c:2018,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:2020,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 63
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 1892
    functionDepth: 8
    functionLinenumber: 1892
    functionLinenumberEnd: 2026
    functionName: send_hello
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 11
    functionsReached:
    - isis_free_tlvs
    - isis_tlvs_add_global_ipv6_addresses
    - pdu_counter_count
    - zlog_warn
    - flog_err
    - isis_alloc_tlvs
    - isis_tlvs_add_lan_neighbors
    - isis_pack_tlvs
    - isis_tlvs_set_protocols_supported
    - isis_tlvs_add_ipv6_addresses
    - isis_tlvs_add_area_addresses
    - isis_tlvs_add_mt_router_info
    - hello_pdu_type
    - zlog_debug
    - zlog_dump_data
    - listcount
    - area_is_mt
    - fabricd_initial_sync_circuit
    - circuit_mt_settings
    - fabricd_initial_sync_is_in_progress
    - isis_tlvs_add_ipv4_addresses
    - struct isis_circuit*::tx
    - put_hello_hdr
    - STREAM_DATA
    - isis_tlvs_add_threeway_adj
    - isis_tlvs_add_auth
    - stream_get_endp
    - fabricd_ip_addrs
    linkageType: ''
    returnType: int
    signature: int send_hello(struct isis_circuit *circuit, int level)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_pdu.c:2030,1
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu.c:2031,1
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu.c:2036,1
    - Dst: send_hello
      Src: /src/frr/isisd/isis_pdu.c:2040,1
    - Dst: send_hello_sched
      Src: /src/frr/isisd/isis_pdu.c:2041,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:2047,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:2054,1
    - Dst: isis_dr_elect
      Src: /src/frr/isisd/isis_pdu.c:2060,1
    - Dst: send_hello
      Src: /src/frr/isisd/isis_pdu.c:2062,1
    - Dst: send_hello_sched
      Src: /src/frr/isisd/isis_pdu.c:2065,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (arg)
      pos:
        line_end: 2030
        line_start: 2030
        source_file: /src/frr/isisd/isis_pdu.c
    - condition: (circuit)
      pos:
        line_end: 2035
        line_start: 2035
        source_file: /src/frr/isisd/isis_pdu.c
    constantsTouched: []
    func_position:
      end: 2066
      start: 2028
    functionDepth: 2
    functionLinenumber: 2028
    functionLinenumberEnd: 2066
    functionName: send_hello_cb
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - send_hello_sched
    - send_hello
    - zlog_warn
    - EVENT_ARG
    - isis_dr_elect
    - assert
    linkageType: ''
    returnType: void
    signature: void send_hello_cb(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_msec
      Src: /src/frr/isisd/isis_pdu.c:2072,1
    - Dst: EVENT_OFF
      Src: /src/frr/isisd/isis_pdu.c:2075,1
    - Dst: event_add_timer_msec
      Src: /src/frr/isisd/isis_pdu.c:2078,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_pdu.c:2080,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - circuit
    - threadp
    - level
    - delay
    argTypes:
    - struct isis_circuit*
    - struct event**
    - int
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2068
    functionDepth: 2
    functionLinenumber: 2068
    functionLinenumberEnd: 2081
    functionName: _send_hello_sched
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - EVENT_OFF
    - event_timer_remain_msec
    - isis_jitter
    linkageType: ''
    returnType: void
    signature: "void _send_hello_sched(struct isis_circuit *circuit,\n\t\t\t      struct
      event **threadp, int level, long delay)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _send_hello_sched
      Src: /src/frr/isisd/isis_pdu.c:2086,1
    - Dst: zlog_warn
      Src: /src/frr/isisd/isis_pdu.c:2092,1
    - Dst: _send_hello_sched
      Src: /src/frr/isisd/isis_pdu.c:2102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - circuit
    - level
    - delay
    argTypes:
    - struct isis_circuit*
    - int
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2083
    functionDepth: 3
    functionLinenumber: 2083
    functionLinenumberEnd: 2109
    functionName: send_hello_sched
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 6
    functionsReached:
    - zlog_warn
    - _send_hello_sched
    linkageType: ''
    returnType: void
    signature: void send_hello_sched(struct isis_circuit *circuit, int level, long
      delay)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2132
      start: 2116
    functionDepth: 0
    functionLinenumber: 2116
    functionLinenumberEnd: 2132
    functionName: get_max_lsp_count
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t get_max_lsp_count(uint16_t size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lspdb_count
      Src: /src/frr/isisd/isis_pdu.c:2136,1
    - Dst: isis_circuit_stream
      Src: /src/frr/isisd/isis_pdu.c:2142,1
    - Dst: fill_fixed_hdr
      Src: /src/frr/isisd/isis_pdu.c:2143,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2145,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_pdu.c:2147,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:2148,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:2150,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2152,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:2153,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2154,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:2155,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2161,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_pdu.c:2163,1
    - Dst: isis_tlvs_add_auth
      Src: /src/frr/isisd/isis_pdu.c:2164,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2166,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2167,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2169,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2172,1
    - Dst: get_max_lsp_count
      Src: /src/frr/isisd/isis_pdu.c:2175,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_pdu.c:2175,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pdu.c:2178,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pdu.c:2180,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_pdu.c:2185,1
    - Dst: isis_tlvs_add_auth
      Src: /src/frr/isisd/isis_pdu.c:2186,1
    - Dst: isis_tlvs_add_csnp_entries
      Src: /src/frr/isisd/isis_pdu.c:2189,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pdu.c:2196,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:2198,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:2201,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:2201,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:2203,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:2203,1
    - Dst: stream_set_endp
      Src: /src/frr/isisd/isis_pdu.c:2205,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2206,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2208,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:2213,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2217,1
    - Dst: log_multiline
      Src: /src/frr/isisd/isis_pdu.c:2218,1
    - Dst: isis_format_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2219,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:2221,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:2222,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2223,1
    - Dst: pdu_counter_count
      Src: /src/frr/isisd/isis_pdu.c:2226,1
    - Dst: struct isis_circuit*::tx
      Src: /src/frr/isisd/isis_pdu.c:2227,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:2229,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2233,1
    - Dst: memcpy
      Src: /src/frr/isisd/isis_pdu.c:2241,1
    - Dst: memset
      Src: /src/frr/isisd/isis_pdu.c:2250,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2251,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 61
    argCount: 2
    argNames:
    - circuit
    - level
    argTypes:
    - struct isis_circuit*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2255
      start: 2134
    functionDepth: 8
    functionLinenumber: 2134
    functionLinenumberEnd: 2255
    functionName: send_csnp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - stream_put
    - isis_free_tlvs
    - get_max_lsp_count
    - pdu_counter_count
    - flog_err
    - isis_alloc_tlvs
    - stream_set_endp
    - isis_pack_tlvs
    - stream_putc
    - memset
    - zlog_debug
    - fill_fixed_hdr
    - zlog_dump_data
    - isis_circuit_stream
    - isis_format_tlvs
    - log_multiline
    - lspdb_count
    - memcpy
    - struct isis_circuit*::tx
    - CHECK_FLAG
    - STREAM_DATA
    - STREAM_WRITEABLE
    - stream_putw
    - stream_get_endp
    - isis_tlvs_add_auth
    - isis_tlvs_add_csnp_entries
    linkageType: ''
    returnType: int
    signature: int send_csnp(struct isis_circuit *circuit, int level)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_pdu.c:2261,1
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu.c:2262,1
    - Dst: send_csnp
      Src: /src/frr/isisd/isis_pdu.c:2269,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_pdu.c:2272,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_pdu.c:2273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (circuit)
      pos:
        line_end: 2261
        line_start: 2261
        source_file: /src/frr/isisd/isis_pdu.c
    constantsTouched: []
    func_position:
      end: 2275
      start: 2257
    functionDepth: 9
    functionLinenumber: 2257
    functionLinenumberEnd: 2275
    functionName: send_l1_csnp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_jitter
    - send_csnp
    - EVENT_ARG
    - event_add_timer
    - assert
    linkageType: ''
    returnType: void
    signature: void send_l1_csnp(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_pdu.c:2281,1
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu.c:2282,1
    - Dst: send_csnp
      Src: /src/frr/isisd/isis_pdu.c:2289,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_pdu.c:2292,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_pdu.c:2293,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (circuit)
      pos:
        line_end: 2281
        line_start: 2281
        source_file: /src/frr/isisd/isis_pdu.c
    constantsTouched: []
    func_position:
      end: 2295
      start: 2277
    functionDepth: 9
    functionLinenumber: 2277
    functionLinenumberEnd: 2295
    functionName: send_l2_csnp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_jitter
    - send_csnp
    - EVENT_ARG
    - event_add_timer
    - assert
    linkageType: ''
    returnType: void
    signature: void send_l2_csnp(struct event *thread)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lspdb_count
      Src: /src/frr/isisd/isis_pdu.c:2307,1
    - Dst: isis_circuit_stream
      Src: /src/frr/isisd/isis_pdu.c:2316,1
    - Dst: fill_fixed_hdr
      Src: /src/frr/isisd/isis_pdu.c:2317,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2319,1
    - Dst: stream_putw
      Src: /src/frr/isisd/isis_pdu.c:2320,1
    - Dst: stream_put
      Src: /src/frr/isisd/isis_pdu.c:2321,1
    - Dst: stream_putc
      Src: /src/frr/isisd/isis_pdu.c:2322,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_pdu.c:2330,1
    - Dst: isis_tlvs_add_auth
      Src: /src/frr/isisd/isis_pdu.c:2331,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2333,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2334,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2336,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2339,1
    - Dst: get_max_lsp_count
      Src: /src/frr/isisd/isis_pdu.c:2342,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/isisd/isis_pdu.c:2342,1
    - Dst: isis_alloc_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/isisd/isis_pdu.c:2348,1
    - Dst: isis_tlvs_add_auth
      Src: /src/frr/isisd/isis_pdu.c:2349,1
    - Dst: frr_each
      Src: /src/frr/isisd/isis_pdu.c:2351,1
    - Dst: ISIS_CHECK_FLAG
      Src: /src/frr/isisd/isis_pdu.c:2352,1
    - Dst: isis_tlvs_add_lsp_entry
      Src: /src/frr/isisd/isis_pdu.c:2353,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2360,1
    - Dst: stream_set_endp
      Src: /src/frr/isisd/isis_pdu.c:2364,1
    - Dst: isis_pack_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2365,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2367,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:2372,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2376,1
    - Dst: log_multiline
      Src: /src/frr/isisd/isis_pdu.c:2377,1
    - Dst: isis_format_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2378,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:2380,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:2381,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2382,1
    - Dst: pdu_counter_count
      Src: /src/frr/isisd/isis_pdu.c:2385,1
    - Dst: struct isis_circuit*::tx
      Src: /src/frr/isisd/isis_pdu.c:2386,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:2388,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2392,1
    - Dst: ISIS_CLEAR_FLAG
      Src: /src/frr/isisd/isis_pdu.c:2404,1
    - Dst: isis_free_tlvs
      Src: /src/frr/isisd/isis_pdu.c:2405,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 2
    argNames:
    - level
    - circuit
    argTypes:
    - int
    - struct isis_circuit*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2301
    functionDepth: 8
    functionLinenumber: 2301
    functionLinenumberEnd: 2409
    functionName: send_psnp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - stream_put
    - isis_free_tlvs
    - get_max_lsp_count
    - frr_each
    - pdu_counter_count
    - flog_err
    - ISIS_CLEAR_FLAG
    - isis_alloc_tlvs
    - stream_set_endp
    - isis_pack_tlvs
    - stream_putc
    - ISIS_CHECK_FLAG
    - zlog_debug
    - fill_fixed_hdr
    - zlog_dump_data
    - isis_circuit_stream
    - isis_format_tlvs
    - log_multiline
    - lspdb_count
    - struct isis_circuit*::tx
    - isis_tlvs_add_lsp_entry
    - CHECK_FLAG
    - STREAM_DATA
    - STREAM_WRITEABLE
    - stream_putw
    - stream_get_endp
    - isis_tlvs_add_auth
    linkageType: ''
    returnType: int
    signature: int send_psnp(int level, struct isis_circuit *circuit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_pdu.c:2416,1
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu.c:2417,1
    - Dst: send_psnp
      Src: /src/frr/isisd/isis_pdu.c:2421,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_pdu.c:2423,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_pdu.c:2424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (circuit)
      pos:
        line_end: 2416
        line_start: 2416
        source_file: /src/frr/isisd/isis_pdu.c
    constantsTouched: []
    func_position:
      end: 2426
      start: 2411
    functionDepth: 9
    functionLinenumber: 2411
    functionLinenumberEnd: 2426
    functionName: send_l1_psnp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_jitter
    - send_psnp
    - EVENT_ARG
    - event_add_timer
    - assert
    linkageType: ''
    returnType: void
    signature: void send_l1_psnp(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/isisd/isis_pdu.c:2436,1
    - Dst: assert
      Src: /src/frr/isisd/isis_pdu.c:2437,1
    - Dst: send_psnp
      Src: /src/frr/isisd/isis_pdu.c:2441,1
    - Dst: event_add_timer
      Src: /src/frr/isisd/isis_pdu.c:2444,1
    - Dst: isis_jitter
      Src: /src/frr/isisd/isis_pdu.c:2445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (circuit)
      pos:
        line_end: 2436
        line_start: 2436
        source_file: /src/frr/isisd/isis_pdu.c
    constantsTouched: []
    func_position:
      end: 2447
      start: 2432
    functionDepth: 9
    functionLinenumber: 2432
    functionLinenumberEnd: 2447
    functionName: send_l2_psnp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - isis_jitter
    - send_psnp
    - EVENT_ARG
    - event_add_timer
    - assert
    linkageType: ''
    returnType: void
    signature: void send_l2_psnp(struct event *thread)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2476,1
    - Dst: stream_get_size
      Src: /src/frr/isisd/isis_pdu.c:2476,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:2477,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2483,1
    - Dst: stream_get_size
      Src: /src/frr/isisd/isis_pdu.c:2484,1
    - Dst: isis_notif_lsp_too_large
      Src: /src/frr/isisd/isis_pdu.c:2487,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2487,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:2491,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:2491,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2492,1
    - Dst: stream_copy
      Src: /src/frr/isisd/isis_pdu.c:2498,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_pdu.c:2501,1
    - Dst: stream_putc_at
      Src: /src/frr/isisd/isis_pdu.c:2502,1
    - Dst: zlog_debug
      Src: /src/frr/isisd/isis_pdu.c:2507,1
    - Dst: zlog_dump_data
      Src: /src/frr/isisd/isis_pdu.c:2516,1
    - Dst: STREAM_DATA
      Src: /src/frr/isisd/isis_pdu.c:2516,1
    - Dst: stream_get_endp
      Src: /src/frr/isisd/isis_pdu.c:2517,1
    - Dst: pdu_counter_count
      Src: /src/frr/isisd/isis_pdu.c:2525,1
    - Dst: struct isis_circuit*::tx
      Src: /src/frr/isisd/isis_pdu.c:2526,1
    - Dst: flog_err
      Src: /src/frr/isisd/isis_pdu.c:2528,1
    - Dst: isis_tx_queue_del
      Src: /src/frr/isisd/isis_pdu.c:2549,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 40
    argCount: 3
    argNames:
    - circuit
    - lsp
    - tx_type
    argTypes:
    - struct isis_circuit*
    - struct isis_lsp*
    - enum isis_tx_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2452
    functionDepth: 3
    functionLinenumber: 2452
    functionLinenumberEnd: 2551
    functionName: send_lsp
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 0
    functionsReached:
    - stream_copy
    - isis_tx_queue_del
    - STREAM_DATA
    - stream_get_endp
    - pdu_counter_count
    - flog_err
    - zlog_debug
    - stream_get_size
    - isis_notif_lsp_too_large
    - zlog_dump_data
    - stream_putc_at
    - struct isis_circuit*::tx
    linkageType: ''
    returnType: void
    signature: "void send_lsp(struct isis_circuit *circuit, struct isis_lsp *lsp,\n\t
      \     enum isis_tx_type tx_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/isisd/isis_pdu.c:2563,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2571,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2572,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2573,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2574,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2575,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2576,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2577,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2579,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2581,1
    - Dst: pdu_counter_get_count
      Src: /src/frr/isisd/isis_pdu.c:2583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - area
    - pdu_type
    argTypes:
    - struct isis_area*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2553
    functionDepth: 2
    functionLinenumber: 2553
    functionLinenumberEnd: 2585
    functionName: isis_log_pdu_drops
    functionSourceFile: /src/frr/isisd/isis_pdu.c
    functionUses: 1
    functionsReached:
    - pdu_counter_get_count
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void isis_log_pdu_drops(struct isis_area *area, const char *pdu_type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/lib/imsg-buffer.c:21,1
    - Dst: malloc
      Src: /src/frr/lib/imsg-buffer.c:23,1
    - Dst: free
      Src: /src/frr/lib/imsg-buffer.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 31
    functionName: ibuf_open
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - malloc
    - free
    - calloc
    linkageType: ''
    returnType: struct ibuf
    signature: struct ibuf *ibuf_open(size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_open
      Src: /src/frr/lib/imsg-buffer.c:40,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - len
    - max
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 47
    functionName: ibuf_dynamic
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - ibuf_open
    linkageType: ''
    returnType: struct ibuf
    signature: struct ibuf *ibuf_dynamic(size_t len, size_t max)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/frr/lib/imsg-buffer.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - struct ibuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 66
    functionName: ibuf_realloc
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - realloc
    linkageType: ''
    returnType: int
    signature: int ibuf_realloc(struct ibuf *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_realloc
      Src: /src/frr/lib/imsg-buffer.c:71,1
    - Dst: memcpy
      Src: /src/frr/lib/imsg-buffer.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - data
    - len
    argTypes:
    - struct ibuf*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: ibuf_add
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - ibuf_realloc
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ibuf_add(struct ibuf *buf, const void *data, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_realloc
      Src: /src/frr/lib/imsg-buffer.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - struct ibuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 90
    functionName: ibuf_reserve
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - ibuf_realloc
    linkageType: ''
    returnType: void
    signature: void *ibuf_reserve(struct ibuf *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - pos
    - len
    argTypes:
    - struct ibuf*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: ibuf_seek
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *ibuf_seek(struct ibuf *buf, size_t pos, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: ibuf_size
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ibuf_size(struct ibuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: ibuf_left
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ibuf_left(struct ibuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_enqueue
      Src: /src/frr/lib/imsg-buffer.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - msgbuf
    - buf
    argTypes:
    - struct msgbuf*
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: ibuf_close
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - ibuf_enqueue
    linkageType: ''
    returnType: void
    signature: void ibuf_close(struct msgbuf *msgbuf, struct ibuf *buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/imsg-buffer.c:123,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/lib/imsg-buffer.c:124,1
    - Dst: writev
      Src: /src/frr/lib/imsg-buffer.c:133,1
    - Dst: msgbuf_drain
      Src: /src/frr/lib/imsg-buffer.c:146,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - msgbuf
    argTypes:
    - struct msgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 149
    functionName: ibuf_write
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - msgbuf_drain
    - writev
    - memset
    - TAILQ_FOREACH
    linkageType: ''
    returnType: int
    signature: int ibuf_write(struct msgbuf *msgbuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/lib/imsg-buffer.c:155,1
    - Dst: free
      Src: /src/frr/lib/imsg-buffer.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: ibuf_free
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ibuf_free(struct ibuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_INIT
      Src: /src/frr/lib/imsg-buffer.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - msgbuf
    argTypes:
    - struct msgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 164
    functionName: msgbuf_init
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - TAILQ_INIT
    linkageType: ''
    returnType: void
    signature: void msgbuf_init(struct msgbuf *msgbuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FIRST
      Src: /src/frr/lib/imsg-buffer.c:170,1
    - Dst: TAILQ_NEXT
      Src: /src/frr/lib/imsg-buffer.c:172,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/lib/imsg-buffer.c:176,1
    - Dst: ibuf_dequeue
      Src: /src/frr/lib/imsg-buffer.c:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - msgbuf
    - n
    argTypes:
    - struct msgbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 183
    functionName: msgbuf_drain
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 1
    functionsReached:
    - TAILQ_REMOVE
    - ibuf_dequeue
    - TAILQ_NEXT
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void msgbuf_drain(struct msgbuf *msgbuf, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_POP_FIRST
      Src: /src/frr/lib/imsg-buffer.c:189,1
    - Dst: ibuf_dequeue
      Src: /src/frr/lib/imsg-buffer.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - msgbuf
    argTypes:
    - struct msgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 191
    functionName: msgbuf_clear
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - TAILQ_POP_FIRST
    - ibuf_dequeue
    linkageType: ''
    returnType: void
    signature: void msgbuf_clear(struct msgbuf *msgbuf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/lib/imsg-buffer.c:203,1
    - Dst: memset
      Src: /src/frr/lib/imsg-buffer.c:206,1
    - Dst: memset
      Src: /src/frr/lib/imsg-buffer.c:207,1
    - Dst: memset
      Src: /src/frr/lib/imsg-buffer.c:208,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/lib/imsg-buffer.c:209,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/lib/imsg-buffer.c:225,1
    - Dst: CMSG_LEN
      Src: /src/frr/lib/imsg-buffer.c:226,1
    - Dst: memcpy
      Src: /src/frr/lib/imsg-buffer.c:229,1
    - Dst: CMSG_DATA
      Src: /src/frr/lib/imsg-buffer.c:229,1
    - Dst: sendmsg
      Src: /src/frr/lib/imsg-buffer.c:233,1
    - Dst: close
      Src: /src/frr/lib/imsg-buffer.c:251,1
    - Dst: msgbuf_drain
      Src: /src/frr/lib/imsg-buffer.c:255,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 1
    argNames:
    - msgbuf
    argTypes:
    - struct msgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 258
    functionName: msgbuf_write
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 0
    functionsReached:
    - memset
    - CMSG_FIRSTHDR
    - close
    - msgbuf_drain
    - sendmsg
    - CMSG_SPACE
    - CMSG_DATA
    - CMSG_LEN
    - memcpy
    - TAILQ_FOREACH
    linkageType: ''
    returnType: int
    signature: int msgbuf_write(struct msgbuf *msgbuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/imsg-buffer.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - msgbuf
    - buf
    argTypes:
    - struct msgbuf*
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 264
    functionName: ibuf_enqueue
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 1
    functionsReached:
    - TAILQ_INSERT_TAIL
    linkageType: ''
    returnType: void
    signature: void ibuf_enqueue(struct msgbuf *msgbuf, struct ibuf *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/lib/imsg-buffer.c:270,1
    - Dst: ibuf_free
      Src: /src/frr/lib/imsg-buffer.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - msgbuf
    - buf
    argTypes:
    - struct msgbuf*
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 274
    functionName: ibuf_dequeue
    functionSourceFile: /src/frr/lib/imsg-buffer.c
    functionUses: 2
    functionsReached:
    - ibuf_free
    - close
    linkageType: ''
    returnType: void
    signature: void ibuf_dequeue(struct msgbuf *msgbuf, struct ibuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/routemap_cli.c:93,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/routemap_cli.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 97
    functionName: route_map_instance_cmp
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: int
    signature: "int route_map_instance_cmp(const struct lyd_node *dnode1,\n\t\t\t
      \  const struct lyd_node *dnode2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:102,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:103,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:104,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 108
    functionName: route_map_instance_show
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void route_map_instance_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:112,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: route_map_instance_show_end
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void route_map_instance_show_end(struct vty *vty, const struct lyd_node
      *dnode)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:529,1
    - Dst: IS_MATCH_INTERFACE
      Src: /src/frr/lib/routemap_cli.c:533,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:534,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:535,1
    - Dst: IS_MATCH_IPv4_ADDRESS_LIST
      Src: /src/frr/lib/routemap_cli.c:537,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:538,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:539,1
    - Dst: IS_MATCH_IPv4_NEXTHOP_LIST
      Src: /src/frr/lib/routemap_cli.c:541,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:542,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:543,1
    - Dst: IS_MATCH_IPv6_NEXTHOP_LIST
      Src: /src/frr/lib/routemap_cli.c:545,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:546,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:547,1
    - Dst: IS_MATCH_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap_cli.c:549,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:550,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:551,1
    - Dst: IS_MATCH_IPv4_NEXTHOP_PREFIX_LIST
      Src: /src/frr/lib/routemap_cli.c:553,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:554,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:555,1
    - Dst: IS_MATCH_IPv6_NEXTHOP_PREFIX_LIST
      Src: /src/frr/lib/routemap_cli.c:557,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:558,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:559,1
    - Dst: IS_MATCH_IPv6_ADDRESS_LIST
      Src: /src/frr/lib/routemap_cli.c:561,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:562,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:563,1
    - Dst: IS_MATCH_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap_cli.c:565,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:566,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:567,1
    - Dst: IS_MATCH_IPv4_NEXTHOP_TYPE
      Src: /src/frr/lib/routemap_cli.c:569,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:570,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:571,1
    - Dst: IS_MATCH_IPv6_NEXTHOP_TYPE
      Src: /src/frr/lib/routemap_cli.c:574,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:575,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:576,1
    - Dst: IS_MATCH_METRIC
      Src: /src/frr/lib/routemap_cli.c:579,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:580,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:581,1
    - Dst: IS_MATCH_TAG
      Src: /src/frr/lib/routemap_cli.c:583,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:584,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:585,1
    - Dst: IS_MATCH_IPv4_PREFIX_LEN
      Src: /src/frr/lib/routemap_cli.c:587,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:588,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:589,1
    - Dst: IS_MATCH_IPv6_PREFIX_LEN
      Src: /src/frr/lib/routemap_cli.c:592,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:593,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:594,1
    - Dst: IS_MATCH_IPv4_NH_PREFIX_LEN
      Src: /src/frr/lib/routemap_cli.c:597,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:598,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:599,1
    - Dst: IS_MATCH_SRC_PROTO
      Src: /src/frr/lib/routemap_cli.c:602,1
    - Dst: IS_MATCH_BGP_SRC_PROTO
      Src: /src/frr/lib/routemap_cli.c:603,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:604,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:605,1
    - Dst: IS_MATCH_SRC_PROTO
      Src: /src/frr/lib/routemap_cli.c:607,1
    - Dst: IS_MATCH_SRC_INSTANCE
      Src: /src/frr/lib/routemap_cli.c:610,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:611,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:612,1
    - Dst: IS_MATCH_LOCAL_PREF
      Src: /src/frr/lib/routemap_cli.c:615,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:616,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:617,1
    - Dst: IS_MATCH_ALIAS
      Src: /src/frr/lib/routemap_cli.c:620,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:621,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:622,1
    - Dst: IS_MATCH_SCRIPT
      Src: /src/frr/lib/routemap_cli.c:625,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:626,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:627,1
    - Dst: IS_MATCH_ORIGIN
      Src: /src/frr/lib/routemap_cli.c:630,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:631,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:632,1
    - Dst: IS_MATCH_RPKI
      Src: /src/frr/lib/routemap_cli.c:635,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:636,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:637,1
    - Dst: IS_MATCH_RPKI_EXTCOMMUNITY
      Src: /src/frr/lib/routemap_cli.c:640,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:641,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:642,1
    - Dst: IS_MATCH_PROBABILITY
      Src: /src/frr/lib/routemap_cli.c:645,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:646,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:647,1
    - Dst: IS_MATCH_SRC_VRF
      Src: /src/frr/lib/routemap_cli.c:650,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:651,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:652,1
    - Dst: IS_MATCH_PEER
      Src: /src/frr/lib/routemap_cli.c:655,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:657,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:661,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:663,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:667,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:669,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:673,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:674,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:680,1
    - Dst: IS_MATCH_AS_LIST
      Src: /src/frr/lib/routemap_cli.c:681,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:682,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:683,1
    - Dst: IS_MATCH_EVPN_ROUTE_TYPE
      Src: /src/frr/lib/routemap_cli.c:686,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:687,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:688,1
    - Dst: IS_MATCH_EVPN_DEFAULT_ROUTE
      Src: /src/frr/lib/routemap_cli.c:691,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:692,1
    - Dst: IS_MATCH_EVPN_VNI
      Src: /src/frr/lib/routemap_cli.c:693,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:694,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:695,1
    - Dst: IS_MATCH_EVPN_DEFAULT_ROUTE
      Src: /src/frr/lib/routemap_cli.c:698,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:699,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:700,1
    - Dst: IS_MATCH_EVPN_RD
      Src: /src/frr/lib/routemap_cli.c:703,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:704,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:705,1
    - Dst: IS_MATCH_MAC_LIST
      Src: /src/frr/lib/routemap_cli.c:708,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:709,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:710,1
    - Dst: IS_MATCH_ROUTE_SRC
      Src: /src/frr/lib/routemap_cli.c:713,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:714,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:715,1
    - Dst: IS_MATCH_ROUTE_SRC_PL
      Src: /src/frr/lib/routemap_cli.c:718,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:719,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:720,1
    - Dst: IS_MATCH_COMMUNITY
      Src: /src/frr/lib/routemap_cli.c:723,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:724,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:725,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:728,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:731,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:732,1
    - Dst: IS_MATCH_LCOMMUNITY
      Src: /src/frr/lib/routemap_cli.c:733,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:734,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:735,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:738,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:741,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:742,1
    - Dst: IS_MATCH_EXTCOMMUNITY
      Src: /src/frr/lib/routemap_cli.c:743,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:744,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:745,1
    - Dst: IS_MATCH_IPV4_NH
      Src: /src/frr/lib/routemap_cli.c:748,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:749,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:750,1
    - Dst: IS_MATCH_IPV6_NH
      Src: /src/frr/lib/routemap_cli.c:753,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:754,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:755,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 139
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 759
    functionName: route_map_condition_show
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - IS_MATCH_IPv6_PREFIX_LEN
    - IS_MATCH_IPv4_NH_PREFIX_LEN
    - IS_MATCH_SRC_VRF
    - IS_MATCH_TAG
    - IS_MATCH_AS_LIST
    - IS_MATCH_EVPN_DEFAULT_ROUTE
    - yang_dnode_get_string
    - IS_MATCH_INTERFACE
    - IS_MATCH_IPV6_NH
    - IS_MATCH_IPv4_PREFIX_LEN
    - IS_MATCH_EVPN_ROUTE_TYPE
    - IS_MATCH_IPv6_ADDRESS_LIST
    - IS_MATCH_PROBABILITY
    - IS_MATCH_SRC_PROTO
    - IS_MATCH_IPv4_PREFIX_LIST
    - IS_MATCH_IPv4_NEXTHOP_PREFIX_LIST
    - IS_MATCH_ROUTE_SRC
    - IS_MATCH_ALIAS
    - IS_MATCH_RPKI
    - IS_MATCH_EXTCOMMUNITY
    - IS_MATCH_IPv6_PREFIX_LIST
    - IS_MATCH_COMMUNITY
    - IS_MATCH_EVPN_VNI
    - vty_out
    - yang_dnode_get
    - IS_MATCH_MAC_LIST
    - IS_MATCH_RPKI_EXTCOMMUNITY
    - IS_MATCH_LOCAL_PREF
    - IS_MATCH_IPv4_ADDRESS_LIST
    - IS_MATCH_IPv6_NEXTHOP_TYPE
    - IS_MATCH_IPv6_NEXTHOP_LIST
    - IS_MATCH_ROUTE_SRC_PL
    - IS_MATCH_SCRIPT
    - IS_MATCH_PEER
    - IS_MATCH_EVPN_RD
    - IS_MATCH_IPV4_NH
    - IS_MATCH_IPv4_NEXTHOP_LIST
    - IS_MATCH_METRIC
    - IS_MATCH_ORIGIN
    - IS_MATCH_BGP_SRC_PROTO
    - IS_MATCH_IPv4_NEXTHOP_TYPE
    - IS_MATCH_SRC_INSTANCE
    - IS_MATCH_LCOMMUNITY
    - IS_MATCH_IPv6_NEXTHOP_PREFIX_LIST
    linkageType: ''
    returnType: void
    signature: "void route_map_condition_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1045,1
    - Dst: IS_SET_IPv4_NH
      Src: /src/frr/lib/routemap_cli.c:1049,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1050,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1051,1
    - Dst: IS_SET_IPv6_NH
      Src: /src/frr/lib/routemap_cli.c:1053,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1054,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1055,1
    - Dst: IS_SET_METRIC
      Src: /src/frr/lib/routemap_cli.c:1057,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1058,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1060,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1061,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1064,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1066,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1069,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1070,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1072,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1073,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1075,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1078,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1079,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1083,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1084,1
    - Dst: IS_SET_MIN_METRIC
      Src: /src/frr/lib/routemap_cli.c:1087,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1088,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1089,1
    - Dst: IS_SET_MAX_METRIC
      Src: /src/frr/lib/routemap_cli.c:1091,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1092,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1093,1
    - Dst: IS_SET_TAG
      Src: /src/frr/lib/routemap_cli.c:1095,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1096,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1097,1
    - Dst: IS_SET_SR_TE_COLOR
      Src: /src/frr/lib/routemap_cli.c:1098,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1099,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1100,1
    - Dst: IS_SET_SRC
      Src: /src/frr/lib/routemap_cli.c:1102,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/routemap_cli.c:1103,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1106,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1107,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1111,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1112,1
    - Dst: IS_SET_METRIC_TYPE
      Src: /src/frr/lib/routemap_cli.c:1115,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1116,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1117,1
    - Dst: IS_SET_FORWARDING_ADDR
      Src: /src/frr/lib/routemap_cli.c:1120,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1121,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1122,1
    - Dst: IS_SET_WEIGHT
      Src: /src/frr/lib/routemap_cli.c:1125,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1126,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1127,1
    - Dst: IS_SET_TABLE
      Src: /src/frr/lib/routemap_cli.c:1130,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1131,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1132,1
    - Dst: IS_SET_LOCAL_PREF
      Src: /src/frr/lib/routemap_cli.c:1135,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1136,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1137,1
    - Dst: IS_SET_LABEL_INDEX
      Src: /src/frr/lib/routemap_cli.c:1140,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1141,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1142,1
    - Dst: IS_SET_DISTANCE
      Src: /src/frr/lib/routemap_cli.c:1145,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1146,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1147,1
    - Dst: IS_SET_ORIGIN
      Src: /src/frr/lib/routemap_cli.c:1150,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1151,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1152,1
    - Dst: IS_SET_ATOMIC_AGGREGATE
      Src: /src/frr/lib/routemap_cli.c:1155,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1156,1
    - Dst: IS_SET_AIGP_METRIC
      Src: /src/frr/lib/routemap_cli.c:1157,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1158,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1159,1
    - Dst: IS_SET_ORIGINATOR_ID
      Src: /src/frr/lib/routemap_cli.c:1162,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1163,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1164,1
    - Dst: IS_SET_COMM_LIST_DEL
      Src: /src/frr/lib/routemap_cli.c:1167,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1169,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1173,1
    - Dst: assert
      Src: /src/frr/lib/routemap_cli.c:1175,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1177,1
    - Dst: IS_SET_LCOMM_LIST_DEL
      Src: /src/frr/lib/routemap_cli.c:1178,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1180,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1184,1
    - Dst: assert
      Src: /src/frr/lib/routemap_cli.c:1186,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1188,1
    - Dst: IS_SET_LCOMMUNITY
      Src: /src/frr/lib/routemap_cli.c:1189,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/routemap_cli.c:1190,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1193,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1194,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:1199,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1202,1
    - Dst: IS_SET_COMMUNITY
      Src: /src/frr/lib/routemap_cli.c:1204,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/routemap_cli.c:1205,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1208,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1209,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:1214,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1217,1
    - Dst: IS_SET_EXTCOMMUNITY_RT
      Src: /src/frr/lib/routemap_cli.c:1219,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1220,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1221,1
    - Dst: IS_SET_EXTCOMMUNITY_NT
      Src: /src/frr/lib/routemap_cli.c:1224,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1225,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1226,1
    - Dst: IS_SET_EXTCOMMUNITY_SOO
      Src: /src/frr/lib/routemap_cli.c:1229,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1230,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1231,1
    - Dst: IS_SET_EXTCOMMUNITY_LB
      Src: /src/frr/lib/routemap_cli.c:1234,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/routemap_cli.c:1239,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/routemap_cli.c:1244,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap_cli.c:1247,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap_cli.c:1250,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap_cli.c:1253,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:1256,1
    - Dst: strlcat
      Src: /src/frr/lib/routemap_cli.c:1259,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1261,1
    - Dst: IS_SET_EXTCOMMUNITY_NONE
      Src: /src/frr/lib/routemap_cli.c:1262,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:1263,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1266,1
    - Dst: IS_SET_AGGREGATOR
      Src: /src/frr/lib/routemap_cli.c:1267,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1268,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1269,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1272,1
    - Dst: IS_SET_AS_EXCLUDE
      Src: /src/frr/lib/routemap_cli.c:1275,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1276,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1277,1
    - Dst: IS_SET_AS_REPLACE
      Src: /src/frr/lib/routemap_cli.c:1280,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1281,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1282,1
    - Dst: IS_SET_AS_PREPEND
      Src: /src/frr/lib/routemap_cli.c:1285,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/routemap_cli.c:1286,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1289,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1290,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1294,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/routemap_cli.c:1295,1
    - Dst: IS_SET_IPV6_NH_GLOBAL
      Src: /src/frr/lib/routemap_cli.c:1299,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1300,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1301,1
    - Dst: IS_SET_IPV6_VPN_NH
      Src: /src/frr/lib/routemap_cli.c:1304,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1305,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1306,1
    - Dst: IS_SET_IPV6_PEER_ADDR
      Src: /src/frr/lib/routemap_cli.c:1309,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:1311,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1314,1
    - Dst: IS_SET_IPV6_PREFER_GLOBAL
      Src: /src/frr/lib/routemap_cli.c:1315,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:1317,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1320,1
    - Dst: IS_SET_IPV4_VPN_NH
      Src: /src/frr/lib/routemap_cli.c:1321,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1322,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1323,1
    - Dst: IS_SET_BGP_IPV4_NH
      Src: /src/frr/lib/routemap_cli.c:1326,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1327,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1328,1
    - Dst: IS_SET_BGP_EVPN_GATEWAY_IP_IPV4
      Src: /src/frr/lib/routemap_cli.c:1331,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1332,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1333,1
    - Dst: IS_SET_BGP_EVPN_GATEWAY_IP_IPV6
      Src: /src/frr/lib/routemap_cli.c:1336,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1337,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1338,1
    - Dst: IS_SET_BGP_L3VPN_NEXTHOP_ENCAPSULATION
      Src: /src/frr/lib/routemap_cli.c:1341,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1342,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1343,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 178
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts:
    - condition: (acl)
      pos:
        line_end: 1174
        line_start: 1174
        source_file: /src/frr/lib/routemap_cli.c
    - condition: (acl)
      pos:
        line_end: 1185
        line_start: 1185
        source_file: /src/frr/lib/routemap_cli.c
    constantsTouched: []
    func_position:
      end: 1347
      start: 1042
    functionDepth: 1
    functionLinenumber: 1042
    functionLinenumberEnd: 1347
    functionName: route_map_action_show
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - IS_SET_BGP_EVPN_GATEWAY_IP_IPV6
    - IS_SET_TAG
    - IS_SET_IPv4_NH
    - IS_SET_LABEL_INDEX
    - IS_SET_SRC
    - IS_SET_AIGP_METRIC
    - yang_dnode_get_string
    - IS_SET_EXTCOMMUNITY_SOO
    - IS_SET_IPV6_PEER_ADDR
    - IS_SET_WEIGHT
    - IS_SET_AGGREGATOR
    - IS_SET_METRIC_TYPE
    - IS_SET_IPV6_NH_GLOBAL
    - IS_SET_AS_EXCLUDE
    - IS_SET_IPV6_PREFER_GLOBAL
    - IS_SET_MAX_METRIC
    - strlcat
    - IS_SET_SR_TE_COLOR
    - snprintf
    - IS_SET_LCOMMUNITY
    - IS_SET_DISTANCE
    - IS_SET_ORIGIN
    - IS_SET_LCOMM_LIST_DEL
    - IS_SET_EXTCOMMUNITY_LB
    - IS_SET_EXTCOMMUNITY_NONE
    - IS_SET_COMM_LIST_DEL
    - yang_dnode_get_uint16
    - assert
    - IS_SET_MIN_METRIC
    - IS_SET_BGP_IPV4_NH
    - IS_SET_BGP_L3VPN_NEXTHOP_ENCAPSULATION
    - vty_out
    - IS_SET_AS_REPLACE
    - yang_dnode_get
    - IS_SET_METRIC
    - IS_SET_EXTCOMMUNITY_RT
    - IS_SET_TABLE
    - yang_dnode_get_uint8
    - IS_SET_COMMUNITY
    - IS_SET_AS_PREPEND
    - IS_SET_LOCAL_PREF
    - IS_SET_ATOMIC_AGGREGATE
    - yang_dnode_exists
    - IS_SET_IPv6_NH
    - IS_SET_ORIGINATOR_ID
    - IS_SET_IPV6_VPN_NH
    - IS_SET_BGP_EVPN_GATEWAY_IP_IPV4
    - IS_SET_IPV4_VPN_NH
    - IS_SET_FORWARDING_ADDR
    - yang_dnode_get_enum
    - IS_SET_EXTCOMMUNITY_NT
    linkageType: ''
    returnType: void
    signature: "void route_map_action_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/routemap_cli.c:1415,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1422,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1425,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1412
    functionDepth: 1
    functionLinenumber: 1412
    functionLinenumberEnd: 1429
    functionName: route_map_exit_policy_show
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void route_map_exit_policy_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1457,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1454
    functionDepth: 1
    functionLinenumber: 1454
    functionLinenumberEnd: 1458
    functionName: route_map_call_show
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void route_map_call_show(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1491,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1488
    functionDepth: 1
    functionLinenumber: 1488
    functionLinenumberEnd: 1492
    functionName: route_map_description_show
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void route_map_description_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_cli.c:1520,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_cli.c:1521,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap_cli.c:1523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1516
    functionDepth: 1
    functionLinenumber: 1516
    functionLinenumberEnd: 1525
    functionName: route_map_optimization_disabled_show
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void route_map_optimization_disabled_show(struct vty *vty,\n\t\t\t\t\t
      \ const struct lyd_node *dnode,\n\t\t\t\t\t  bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/lib/routemap_cli.c:1532,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/routemap_cli.c:1535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1540
    functionName: route_map_config_write
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int route_map_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set
      Src: /src/frr/lib/routemap_cli.c:1557,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap_cli.c:1557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1552
    functionDepth: 1
    functionLinenumber: 1552
    functionLinenumberEnd: 1558
    functionName: rmap_autocomplete
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - vector_set
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void rmap_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/routemap_cli.c:1570,1
    - Dst: install_node
      Src: /src/frr/lib/routemap_cli.c:1573,1
    - Dst: install_default
      Src: /src/frr/lib/routemap_cli.c:1574,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1575,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1576,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1577,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1578,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1581,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1582,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1583,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1584,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1585,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1586,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1589,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1590,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1593,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1594,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1597,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1598,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1600,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1601,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1603,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1604,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1606,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1607,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1609,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1610,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1612,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1613,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1615,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1616,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1618,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1619,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1621,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1622,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1624,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1625,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1627,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1628,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1631,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1632,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1634,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1635,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1637,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1638,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1640,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1641,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1643,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1644,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1646,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1647,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1649,1
    - Dst: install_element
      Src: /src/frr/lib/routemap_cli.c:1650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1567
    functionDepth: 1
    functionLinenumber: 1567
    functionLinenumberEnd: 1651
    functionName: route_map_cli_init
    functionSourceFile: /src/frr/lib/routemap_cli.c
    functionUses: 0
    functionsReached:
    - install_element
    - cmd_variable_handler_register
    - install_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void route_map_cli_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - type
    - ','
    - typname
    - ','
    - varname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 92
    functionName: _FRR_CFG_DEFAULT
    functionSourceFile: /src/frr/lib/defaults.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _FRR_CFG_DEFAULT(type, typname, varname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: FRR_CFG_DEFAULT_BOOL
    functionSourceFile: /src/frr/lib/defaults.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_CFG_DEFAULT_BOOL(varname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: FRR_CFG_DEFAULT_LONG
    functionSourceFile: /src/frr/lib/defaults.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_CFG_DEFAULT_LONG(varname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: FRR_CFG_DEFAULT_ULONG
    functionSourceFile: /src/frr/lib/defaults.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_CFG_DEFAULT_ULONG(varname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: FRR_CFG_DEFAULT_FLOAT
    functionSourceFile: /src/frr/lib/defaults.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_CFG_DEFAULT_FLOAT(varname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - varname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: FRR_CFG_DEFAULT_STR
    functionSourceFile: /src/frr/lib/defaults.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_CFG_DEFAULT_STR(varname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - privs
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 137
    functionName: frr_with_privs
    functionSourceFile: /src/frr/lib/privs.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_with_privs(privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: _darr_esize
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _darr_esize(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: darr_esize
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_esize(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: _darr_len
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _darr_len(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: _darr_meta
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _darr_meta(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: _darr_resize
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _darr_resize(A, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: darr_cap
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_cap(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: darr_maxi
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_maxi(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: darr_len
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_len(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: darr_reset
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_reset(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: darr_setlen
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_setlen(A, L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: darr_free
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_free(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: darr_ensure_cap
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_ensure_cap(A, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 166
    functionName: darr_ensure_i
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_ensure_i(A, I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - A
    - ','
    - I
    - ','
    - N
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: _darr_insert_n
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _darr_insert_n(A, I, N, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - A
    - ','
    - I
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: darr_insert_n
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_insert_n(A, I, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - A
    - ','
    - I
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: darr_insert_nz
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_insert_nz(A, I, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    functionName: darr_insert
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_insert(A, I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 213
    functionName: darr_insertz
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_insertz(A, I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - A
    - ','
    - I
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 237
    functionName: darr_remove_n
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_remove_n(A, I, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 248
    functionName: darr_remove
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_remove(A, I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - A
    - ','
    - N
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 259
    functionName: _darr_append_n
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _darr_append_n(A, N, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    functionName: darr_append_n
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_append_n(A, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 272
    functionName: darr_append_nz
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_append_nz(A, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 285
    functionName: darr_append
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_append(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 286
    functionName: darr_appendz
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_appendz(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 299
    functionName: darr_push
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_push(A, E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 300
    functionName: darr_pushz
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_pushz(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 315
    functionName: darr_pop_n
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_pop_n(A, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: darr_pop
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_pop(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 346
    functionName: darr_end
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_end(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 355
    functionName: darr_foreach_p
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_foreach_p(A, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 364
    functionName: darr_foreach_i
    functionSourceFile: /src/frr/lib/darr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: darr_foreach_i(A, I)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/ringbuf.c:16,1
    - Dst: XCALLOC
      Src: /src/frr/lib/ringbuf.c:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 21
    functionName: ringbuf_new
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ringbuf
    signature: struct ringbuf *ringbuf_new(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/ringbuf.c:25,1
    - Dst: XFREE
      Src: /src/frr/lib/ringbuf.c:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: ringbuf_del
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 4
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ringbuf_del(struct ringbuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 35
    functionName: ringbuf_remain
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ringbuf_remain(struct ringbuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ringbuf_remain
      Src: /src/frr/lib/ringbuf.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: ringbuf_space
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 2
    functionsReached:
    - ringbuf_remain
    linkageType: ''
    returnType: size_t
    signature: size_t ringbuf_space(struct ringbuf *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ringbuf_space
      Src: /src/frr/lib/ringbuf.c:45,1
    - Dst: MIN
      Src: /src/frr/lib/ringbuf.c:46,1
    - Dst: memcpy
      Src: /src/frr/lib/ringbuf.c:50,1
    - Dst: memcpy
      Src: /src/frr/lib/ringbuf.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - data
    - size
    argTypes:
    - struct ringbuf*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 59
    functionName: ringbuf_put
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 3
    functionsReached:
    - MIN
    - memcpy
    - ringbuf_space
    linkageType: ''
    returnType: size_t
    signature: size_t ringbuf_put(struct ringbuf *buf, const void *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ringbuf_remain
      Src: /src/frr/lib/ringbuf.c:64,1
    - Dst: MIN
      Src: /src/frr/lib/ringbuf.c:65,1
    - Dst: memcpy
      Src: /src/frr/lib/ringbuf.c:69,1
    - Dst: memcpy
      Src: /src/frr/lib/ringbuf.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - data
    - size
    argTypes:
    - struct ringbuf*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 78
    functionName: ringbuf_get
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 3
    functionsReached:
    - MIN
    - memcpy
    - ringbuf_remain
    linkageType: ''
    returnType: size_t
    signature: size_t ringbuf_get(struct ringbuf *buf, void *data, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ringbuf_remain
      Src: /src/frr/lib/ringbuf.c:83,1
    - Dst: MAX
      Src: /src/frr/lib/ringbuf.c:86,1
    - Dst: MIN
      Src: /src/frr/lib/ringbuf.c:86,1
    - Dst: memcpy
      Src: /src/frr/lib/ringbuf.c:91,1
    - Dst: memcpy
      Src: /src/frr/lib/ringbuf.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - buf
    - offset
    - data
    - size
    argTypes:
    - struct ringbuf*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 98
    functionName: ringbuf_peek
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 4
    functionsReached:
    - MIN
    - MAX
    - memcpy
    - ringbuf_remain
    linkageType: ''
    returnType: size_t
    signature: size_t ringbuf_peek(struct ringbuf *buf, size_t offset, void *data,
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/lib/ringbuf.c:102,1
    - Dst: ringbuf_space
      Src: /src/frr/lib/ringbuf.c:102,1
    - Dst: XCALLOC
      Src: /src/frr/lib/ringbuf.c:103,1
    - Dst: ringbuf_peek
      Src: /src/frr/lib/ringbuf.c:104,1
    - Dst: ringbuf_put
      Src: /src/frr/lib/ringbuf.c:105,1
    - Dst: XFREE
      Src: /src/frr/lib/ringbuf.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - to
    - from
    - size
    argTypes:
    - struct ringbuf*
    - struct ringbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: ringbuf_copy
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 1
    functionsReached:
    - MIN
    - ringbuf_put
    - XCALLOC
    - XFREE
    - ringbuf_peek
    - ringbuf_space
    linkageType: ''
    returnType: size_t
    signature: size_t ringbuf_copy(struct ringbuf *to, struct ringbuf *from, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: ringbuf_reset
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ringbuf_reset(struct ringbuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/ringbuf.c:118,1
    - Dst: ringbuf_reset
      Src: /src/frr/lib/ringbuf.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: ringbuf_wipe
    functionSourceFile: /src/frr/lib/ringbuf.c
    functionUses: 5
    functionsReached:
    - ringbuf_reset
    - memset
    linkageType: ''
    returnType: void
    signature: void ringbuf_wipe(struct ringbuf *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct zlog_live_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: zlog_live_is_null
    functionSourceFile: /src/frr/lib/zlog_live.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool zlog_live_is_null(struct zlog_live_cfg *cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - node
    argTypes:
    - struct rb_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 25
    functionName: rb_n2e
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct rb_entry
    signature: struct rb_entry *rb_n2e(const struct rb_type *t, void *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - rbe
    argTypes:
    - struct rb_type*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 32
    functionName: rb_e2n
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *rb_e2n(const struct rb_type *t, struct rb_entry *rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: RBE_LEFT
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_LEFT(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: RBE_RIGHT
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_RIGHT(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: RBE_PARENT
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_PARENT(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: RBE_COLOR
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_COLOR(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: RBH_ROOT
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBH_ROOT(_rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:43,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:44,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:44,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rbe
    - parent
    argTypes:
    - struct rb_entry*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: rbe_set
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBE_COLOR
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void rbe_set(struct rb_entry *rbe, struct rb_entry *parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:51,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - black
    - red
    argTypes:
    - struct rb_entry*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: rbe_set_blackred
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_COLOR
    linkageType: ''
    returnType: void
    signature: "void rbe_set_blackred(struct rb_entry *black,\n\t\t\t\t    struct
      rb_entry *red)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - rbe
    argTypes:
    - struct rb_type*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: rbe_augment
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_e2n
    linkageType: ''
    returnType: void
    signature: void rbe_augment(const struct rb_type *t, struct rb_entry *rbe)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - t
    - rbe
    argTypes:
    - struct rb_type*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: rbe_if_augment
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rbe_augment
    linkageType: ''
    returnType: void
    signature: void rbe_if_augment(const struct rb_type *t, struct rb_entry *rbe)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:72,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:73,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:73,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:74,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:75,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:75,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:77,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:78,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:80,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:81,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:83,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:85,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:87,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:88,1
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:91,1
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:92,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:93,1
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:95,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - t
    - rbt
    - rbe
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 97
    functionName: rbe_rotate_left
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rbe_augment
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: "void rbe_rotate_left(const struct rb_type *t,\n\t\t\t\t   struct rbt_tree
      *rbt, struct rb_entry *rbe)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:105,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:106,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:106,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:107,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:108,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:108,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:110,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:111,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:113,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:114,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:116,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:118,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:120,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:121,1
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:124,1
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:125,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:126,1
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:128,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - t
    - rbt
    - rbe
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 130
    functionName: rbe_rotate_right
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rbe_augment
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: "void rbe_rotate_right(const struct rb_type *t,\n\t\t\t\t    struct
      rbt_tree *rbt, struct rb_entry *rbe)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:137,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:138,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:139,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:141,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:142,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:143,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:144,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/openbsd-tree.c:145,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:150,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/openbsd-tree.c:151,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/openbsd-tree.c:157,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/openbsd-tree.c:158,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:160,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:161,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:162,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/openbsd-tree.c:163,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:168,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/openbsd-tree.c:169,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/openbsd-tree.c:175,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/openbsd-tree.c:176,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:180,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:180,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - t
    - rbt
    - rbe
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 181
    functionName: rbe_insert_color
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rbe_rotate_right
    - rbe_rotate_left
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - rbe_set_blackred
    - RBE_COLOR
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: "void rbe_insert_color(const struct rb_type *t,\n\t\t\t\t    struct
      rbt_tree *rbt, struct rb_entry *rbe)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:190,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:191,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:192,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:193,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:194,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/openbsd-tree.c:195,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/openbsd-tree.c:196,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:197,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:199,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:200,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:200,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:201,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:202,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:202,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:203,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:205,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:207,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:208,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:208,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:211,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:213,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:215,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/openbsd-tree.c:216,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:217,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:220,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:220,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:221,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:222,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:223,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:223,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/openbsd-tree.c:225,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:226,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:230,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:231,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/openbsd-tree.c:232,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/openbsd-tree.c:233,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:234,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:237,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:238,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:238,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:239,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:240,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:240,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:241,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:243,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:245,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:246,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:246,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:249,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:251,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:253,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/openbsd-tree.c:254,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:255,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:258,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:258,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:259,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:260,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:261,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:261,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/openbsd-tree.c:263,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:264,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:271,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 4
    argNames:
    - t
    - rbt
    - parent
    - rbe
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - struct rb_entry*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 272
    functionName: rbe_remove_color
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rbe_rotate_right
    - rbe_rotate_left
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - rbe_set_blackred
    - RBE_COLOR
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: "void rbe_remove_color(const struct rb_type *t,\n\t\t\t\t    struct
      rbt_tree *rbt,\n\t\t\t\t    struct rb_entry *parent,\n\t\t\t\t    struct rb_entry
      *rbe)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:280,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:281,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:282,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:283,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:287,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:288,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:291,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:292,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:293,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:295,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:297,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:298,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:300,1
    - Dst: rbe_if_augment
      Src: /src/frr/lib/openbsd-tree.c:302,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:304,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:305,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:309,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:311,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:312,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:314,1
    - Dst: rbe_if_augment
      Src: /src/frr/lib/openbsd-tree.c:316,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:318,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:320,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:320,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:321,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:322,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:322,1
    - Dst: rbe_augment
      Src: /src/frr/lib/openbsd-tree.c:327,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:328,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:335,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/openbsd-tree.c:336,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:339,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:341,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:342,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:344,1
    - Dst: rbe_if_augment
      Src: /src/frr/lib/openbsd-tree.c:346,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:348,1
    - Dst: rbe_remove_color
      Src: /src/frr/lib/openbsd-tree.c:351,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 3
    argNames:
    - t
    - rbt
    - rbe
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 274
    functionDepth: 3
    functionLinenumber: 274
    functionLinenumberEnd: 354
    functionName: rbe_remove
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rbe_augment
    - RBE_RIGHT
    - rbe_if_augment
    - RBE_PARENT
    - RBH_ROOT
    - rbe_remove_color
    - RBE_COLOR
    - RBE_LEFT
    linkageType: ''
    returnType: struct rb_entry
    signature: 'struct rb_entry *

      rbe_remove(const struct rb_type *t, struct rbt_tree *rbt, struct rb_entry *rbe)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:358,1
    - Dst: rbe_remove
      Src: /src/frr/lib/openbsd-tree.c:361,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - t
    - rbt
    - elm
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: _rb_remove
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - rb_e2n
    - rbe_remove
    linkageType: ''
    returnType: void
    signature: void *_rb_remove(const struct rb_type *t, struct rbt_tree *rbt, void
      *elm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:368,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:374,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:378,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:381,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:383,1
    - Dst: rbe_set
      Src: /src/frr/lib/openbsd-tree.c:388,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:392,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:394,1
    - Dst: rbe_if_augment
      Src: /src/frr/lib/openbsd-tree.c:396,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:398,1
    - Dst: rbe_insert_color
      Src: /src/frr/lib/openbsd-tree.c:400,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - t
    - rbt
    - elm
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 366
    functionDepth: 3
    functionLinenumber: 366
    functionLinenumberEnd: 403
    functionName: _rb_insert
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - rbe_set
    - rb_e2n
    - RBE_RIGHT
    - RBH_ROOT
    - rbe_if_augment
    - rbe_insert_color
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void *_rb_insert(const struct rb_type *t, struct rbt_tree *rbt, void
      *elm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:409,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:414,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:417,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - t
    - rbt
    - key
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 425
    functionName: _rb_find
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - rb_e2n
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: "void *_rb_find(const struct rb_type *t, const struct rbt_tree *rbt,\n\t
      \      const void *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:431,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:437,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:441,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - t
    - rbt
    - key
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 449
    functionName: _rb_nfind
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - rb_e2n
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: "void *_rb_nfind(const struct rb_type *t, const struct rbt_tree *rbt,\n\t\tconst
      void *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:453,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:455,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:456,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:457,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:458,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:460,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:460,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:460,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:461,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:463,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:464,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:464,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:465,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:466,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:470,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - t
    - elm
    argTypes:
    - struct rb_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 471
    functionName: _rb_next
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - rb_e2n
    - RBE_RIGHT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void *_rb_next(const struct rb_type *t, void *elm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:475,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:477,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:478,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:479,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:480,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:482,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:482,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:482,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:483,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:485,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:486,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:486,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:487,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:488,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - t
    - elm
    argTypes:
    - struct rb_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 493
    functionName: _rb_prev
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - rb_e2n
    - RBE_RIGHT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void *_rb_prev(const struct rb_type *t, void *elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:497,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - t
    - rbt
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 500
    functionName: _rb_root
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBH_ROOT
    - rb_e2n
    linkageType: ''
    returnType: void
    signature: void *_rb_root(const struct rb_type *t, const struct rbt_tree *rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:504,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:509,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - t
    - rbt
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 513
    functionName: _rb_min
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBH_ROOT
    - rb_e2n
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void *_rb_min(const struct rb_type *t, const struct rbt_tree *rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/openbsd-tree.c:517,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:522,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - t
    - rbt
    argTypes:
    - struct rb_type*
    - struct rbt_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 526
    functionName: _rb_max
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - rb_e2n
    linkageType: ''
    returnType: void
    signature: void *_rb_max(const struct rb_type *t, const struct rbt_tree *rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:530,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:531,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - node
    argTypes:
    - struct rb_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 533
    functionName: _rb_left
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - rb_e2n
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void *_rb_left(const struct rb_type *t, void *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:537,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:538,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - node
    argTypes:
    - struct rb_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 540
    functionName: _rb_right
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - rb_n2e
    - rb_e2n
    linkageType: ''
    returnType: void
    signature: void *_rb_right(const struct rb_type *t, void *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:544,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:545,1
    - Dst: rb_e2n
      Src: /src/frr/lib/openbsd-tree.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - node
    argTypes:
    - struct rb_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 547
    functionName: _rb_parent
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - RBE_PARENT
    - rb_e2n
    linkageType: ''
    returnType: void
    signature: void *_rb_parent(const struct rb_type *t, void *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:551,1
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:552,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - node
    - left
    argTypes:
    - struct rb_type*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 555
    functionName: _rb_set_left
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void _rb_set_left(const struct rb_type *t, void *node, void *left)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:559,1
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:560,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - node
    - right
    argTypes:
    - struct rb_type*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 563
    functionName: _rb_set_right
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - rb_n2e
    linkageType: ''
    returnType: void
    signature: void _rb_set_right(const struct rb_type *t, void *node, void *right)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:567,1
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:568,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - node
    - parent
    argTypes:
    - struct rb_type*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 571
    functionName: _rb_set_parent
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - rb_n2e
    - RBE_PARENT
    linkageType: ''
    returnType: void
    signature: void _rb_set_parent(const struct rb_type *t, void *node, void *parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:575,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:577,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:577,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - node
    - poison
    argTypes:
    - struct rb_type*
    - void*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 579
    functionName: _rb_poison
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - rb_n2e
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void _rb_poison(const struct rb_type *t, void *node, unsigned long
      poison)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_n2e
      Src: /src/frr/lib/openbsd-tree.c:583,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/openbsd-tree.c:585,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/openbsd-tree.c:586,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/openbsd-tree.c:587,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - t
    - node
    - poison
    argTypes:
    - struct rb_type*
    - void*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 588
    functionName: _rb_check
    functionSourceFile: /src/frr/lib/openbsd-tree.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - rb_n2e
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: int
    signature: int _rb_check(const struct rb_type *t, void *node, unsigned long poison)
  - 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: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: ZLOG_MAXLVL
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZLOG_MAXLVL(a, b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - priority
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: zlog_priority_str
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zlog_priority_str(int priority)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - facility
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: facility_name
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *facility_name(int facility)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/log_vty.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 136
    functionName: facility_match
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int facility_match(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/log_vty.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: log_level_match
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int log_level_match(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_file_rotate
      Src: /src/frr/lib/log_vty.c:150,1
    - Dst: zlog_file_rotate
      Src: /src/frr/lib/log_vty.c:151,1
    - Dst: zlog_file_rotate
      Src: /src/frr/lib/log_vty.c:152,1
    - Dst: hook_call
      Src: /src/frr/lib/log_vty.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: zlog_rotate
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 12
    functionsReached:
    - zlog_file_rotate
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zlog_rotate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_syslog_get_prio_min
      Src: /src/frr/lib/log_vty.c:159,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:161,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:163,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:165,1
    - Dst: facility_name
      Src: /src/frr/lib/log_vty.c:167,1
    - Dst: zlog_syslog_get_facility
      Src: /src/frr/lib/log_vty.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: log_show_syslog
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - zlog_syslog_get_facility
    - vty_out
    - zlog_syslog_get_prio_min
    - facility_name
    linkageType: ''
    returnType: void
    signature: void log_show_syslog(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZLOG_MAXLVL
      Src: /src/frr/lib/log_vty.c:232,1
    - Dst: zlog_5424_apply_meta
      Src: /src/frr/lib/log_vty.c:236,1
    - Dst: zlog_file_set_other
      Src: /src/frr/lib/log_vty.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 241
    functionName: log_stdout_apply_level
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - zlog_5424_apply_meta
    - ZLOG_MAXLVL
    - zlog_file_set_other
    linkageType: ''
    returnType: void
    signature: void log_stdout_apply_level(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_DIRECTORY_SEP
      Src: /src/frr/lib/log_vty.c:345,1
    - Dst: getcwd
      Src: /src/frr/lib/log_vty.c:350,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/log_vty.c:351,1
    - Dst: snprintf
      Src: /src/frr/lib/log_vty.c:356,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/log_vty.c:358,1
    - Dst: zlog_file_set_filename
      Src: /src/frr/lib/log_vty.c:370,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:374,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - target
    - vty
    - fname
    - loglevel
    argTypes:
    - struct zlog_cfg_file*
    - struct vty*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 378
    functionName: set_log_file
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - zlog_file_set_filename
    - vty_out
    - snprintf
    - IS_DIRECTORY_SEP
    - flog_err_sys
    - getcwd
    linkageType: ''
    returnType: int
    signature: "int set_log_file(struct zlog_cfg_file *target, struct vty *vty,\n\t\t\tconst
      char *fname, int loglevel)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_level_match
      Src: /src/frr/lib/log_vty.c:388,1
    - Dst: fprintf
      Src: /src/frr/lib/log_vty.c:391,1
    - Dst: exit
      Src: /src/frr/lib/log_vty.c:392,1
    - Dst: strchr
      Src: /src/frr/lib/log_vty.c:400,1
    - Dst: strlen
      Src: /src/frr/lib/log_vty.c:401,1
    - Dst: snprintfrr
      Src: /src/frr/lib/log_vty.c:403,1
    - Dst: strcmp
      Src: /src/frr/lib/log_vty.c:405,1
    - Dst: log_stdout_apply_level
      Src: /src/frr/lib/log_vty.c:407,1
    - Dst: strcmp
      Src: /src/frr/lib/log_vty.c:410,1
    - Dst: zlog_syslog_set_prio_min
      Src: /src/frr/lib/log_vty.c:412,1
    - Dst: ZLOG_MAXLVL
      Src: /src/frr/lib/log_vty.c:412,1
    - Dst: strcmp
      Src: /src/frr/lib/log_vty.c:416,1
    - Dst: set_log_file
      Src: /src/frr/lib/log_vty.c:418,1
    - Dst: strcmp
      Src: /src/frr/lib/log_vty.c:421,1
    - Dst: strtoul
      Src: /src/frr/lib/log_vty.c:427,1
    - Dst: fprintf
      Src: /src/frr/lib/log_vty.c:429,1
    - Dst: exit
      Src: /src/frr/lib/log_vty.c:430,1
    - Dst: zlog_live_open_fd
      Src: /src/frr/lib/log_vty.c:433,1
    - Dst: zlog_live_disown
      Src: /src/frr/lib/log_vty.c:434,1
    - Dst: fprintf
      Src: /src/frr/lib/log_vty.c:438,1
    - Dst: exit
      Src: /src/frr/lib/log_vty.c:439,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - dest
    - level
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 440
    functionName: command_setup_early_logging
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - exit
    - strlen
    - log_stdout_apply_level
    - zlog_syslog_set_prio_min
    - set_log_file
    - strtoul
    - strcmp
    - snprintfrr
    - fprintf
    - strchr
    - zlog_live_open_fd
    - ZLOG_MAXLVL
    - zlog_live_disown
    - log_level_match
    linkageType: ''
    returnType: void
    signature: void command_setup_early_logging(const char *dest, const char *level)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:766,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:769,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:770,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:775,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:779,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:781,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:785,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:788,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:790,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:794,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:797,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:799,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:803,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:809,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:815,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:822,1
    - Dst: zlog_syslog_get_facility
      Src: /src/frr/lib/log_vty.c:825,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:826,1
    - Dst: facility_name
      Src: /src/frr/lib/log_vty.c:827,1
    - Dst: zlog_syslog_get_facility
      Src: /src/frr/lib/log_vty.c:827,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:830,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:833,1
    - Dst: zlog_get_prefix_ec
      Src: /src/frr/lib/log_vty.c:836,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:837,1
    - Dst: zlog_get_prefix_xid
      Src: /src/frr/lib/log_vty.c:838,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:839,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:845,1
    - Dst: frr_each
      Src: /src/frr/lib/log_vty.c:847,1
    - Dst: container_of
      Src: /src/frr/lib/log_vty.c:851,1
    - Dst: vty_out
      Src: /src/frr/lib/log_vty.c:854,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 59
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 858
    functionName: log_config_write
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - frr_each
    - container_of
    - zlog_get_prefix_xid
    - zlog_get_prefix_ec
    - zlog_syslog_get_facility
    - facility_name
    linkageType: ''
    returnType: void
    signature: void log_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_set_prefix_ec
      Src: /src/frr/lib/log_vty.c:866,1
    - Dst: zlog_set_prefix_xid
      Src: /src/frr/lib/log_vty.c:867,1
    - Dst: zlog_filterfile_init
      Src: /src/frr/lib/log_vty.c:869,1
    - Dst: zlog_5424_init
      Src: /src/frr/lib/log_vty.c:873,1
    - Dst: zlog_5424_apply_dst
      Src: /src/frr/lib/log_vty.c:874,1
    - Dst: zlog_file_set_fd
      Src: /src/frr/lib/log_vty.c:876,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - progname
    - protoname
    - instance
    - uid
    - gid
    argTypes:
    - char*
    - char*
    - unsigned short
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 878
    functionName: log_vty_init
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - zlog_filterfile_init
    - zlog_set_prefix_xid
    - zlog_set_prefix_ec
    - zlog_file_set_fd
    - zlog_5424_init
    - zlog_5424_apply_dst
    linkageType: ''
    returnType: int
    signature: "int log_vty_init(const char *progname, const char *protoname,\n\t\t\t
      unsigned short instance, uid_t uid, gid_t gid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _CONSTRUCTOR
      Src: /src/frr/lib/log_vty.c:880,1
    - Dst: hook_register
      Src: /src/frr/lib/log_vty.c:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 883
    functionName: log_vty_preinit
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - _CONSTRUCTOR
    - hook_register
    linkageType: ''
    returnType: void
    signature: void log_vty_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:887,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:888,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:890,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:891,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:892,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:893,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:894,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:895,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:896,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:897,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:898,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:899,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:900,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:901,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:902,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:903,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:904,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:905,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:907,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:908,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:909,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:910,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:911,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:912,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:914,1
    - Dst: install_element
      Src: /src/frr/lib/log_vty.c:915,1
    - Dst: log_5424_cmd_init
      Src: /src/frr/lib/log_vty.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 918
    functionName: log_cmd_init
    functionSourceFile: /src/frr/lib/log_vty.c
    functionUses: 0
    functionsReached:
    - install_element
    - log_5424_cmd_init
    linkageType: ''
    returnType: void
    signature: void log_cmd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:134,1
    - Dst: vty_mgmt_send_lockds_req
      Src: /src/frr/lib/vty.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts:
    - condition: (!vty->mgmt_locked_candidate_ds)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: vty_mgmt_lock_candidate_inline
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - assert
    - vty_mgmt_send_lockds_req
    linkageType: ''
    returnType: int
    signature: int vty_mgmt_lock_candidate_inline(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:141,1
    - Dst: vty_mgmt_send_lockds_req
      Src: /src/frr/lib/vty.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts:
    - condition: (vty->mgmt_locked_candidate_ds)
      pos:
        line_end: 140
        line_start: 140
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: vty_mgmt_unlock_candidate_inline
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - assert
    - vty_mgmt_send_lockds_req
    linkageType: ''
    returnType: int
    signature: int vty_mgmt_unlock_candidate_inline(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:148,1
    - Dst: vty_mgmt_send_lockds_req
      Src: /src/frr/lib/vty.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts:
    - condition: (!vty->mgmt_locked_running_ds)
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: vty_mgmt_lock_running_inline
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - assert
    - vty_mgmt_send_lockds_req
    linkageType: ''
    returnType: int
    signature: int vty_mgmt_lock_running_inline(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:155,1
    - Dst: vty_mgmt_send_lockds_req
      Src: /src/frr/lib/vty.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts:
    - condition: (vty->mgmt_locked_running_ds)
      pos:
        line_end: 154
        line_start: 154
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 158
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 158
    functionName: vty_mgmt_unlock_running_inline
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - assert
    - vty_mgmt_send_lockds_req
    linkageType: ''
    returnType: int
    signature: int vty_mgmt_unlock_running_inline(struct vty *vty)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:166,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:174,1
    - Dst: buffer_put
      Src: /src/frr/lib/vty.c:184,1
    - Dst: vtysh_flush
      Src: /src/frr/lib/vty.c:185,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:186,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:193,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:195,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - vty
    - success
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 199
    functionName: vty_mgmt_resume_response
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - vty_event
    - vtysh_flush
    - zlog_err
    - MGMTD_FE_CLIENT_DBG
    - buffer_put
    - vty_close
    linkageType: ''
    returnType: void
    signature: void vty_mgmt_resume_response(struct vty *vty, bool success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/vty.c:205,1
    - Dst: vsnprintfrr
      Src: /src/frr/lib/vty.c:206,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:208,1
    - Dst: va_end
      Src: /src/frr/lib/vty.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - format
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 210
    functionName: vty_frame
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 2
    functionsReached:
    - va_start
    - va_end
    - strlen
    - vsnprintfrr
    linkageType: ''
    returnType: void
    signature: void vty_frame(struct vty *vty, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - endtext
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 217
    functionName: vty_endframe
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 2
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_endframe(struct vty *vty, const char *endtext)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regfree
      Src: /src/frr/lib/vty.c:227,1
    - Dst: regcomp
      Src: /src/frr/lib/vty.c:233,1
    - Dst: regerror
      Src: /src/frr/lib/vty.c:237,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - vty
    - regexp
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 244
    functionName: vty_set_include
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - regfree
    - regerror
    - vty_out
    - regcomp
    linkageType: ''
    returnType: bool
    signature: bool vty_set_include(struct vty *vty, const char *regexp)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:259,1
    - Dst: va_start
      Src: /src/frr/lib/vty.c:262,1
    - Dst: vasnprintfrr
      Src: /src/frr/lib/vty.c:264,1
    - Dst: va_end
      Src: /src/frr/lib/vty.c:265,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:267,1
    - Dst: frrstr_split_vec
      Src: /src/frr/lib/vty.c:271,1
    - Dst: vector_slot
      Src: /src/frr/lib/vty.c:274,1
    - Dst: buffer_put
      Src: /src/frr/lib/vty.c:275,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:275,1
    - Dst: vector_active
      Src: /src/frr/lib/vty.c:278,1
    - Dst: buffer_getstr
      Src: /src/frr/lib/vty.c:283,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:284,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:285,1
    - Dst: vector_set_index
      Src: /src/frr/lib/vty.c:286,1
    - Dst: frrstr_filter_vec
      Src: /src/frr/lib/vty.c:287,1
    - Dst: vector_compact
      Src: /src/frr/lib/vty.c:288,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:304,1
    - Dst: vector_active
      Src: /src/frr/lib/vty.c:304,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:305,1
    - Dst: vector_slot
      Src: /src/frr/lib/vty.c:305,1
    - Dst: vector_active
      Src: /src/frr/lib/vty.c:305,1
    - Dst: vector_set
      Src: /src/frr/lib/vty.c:306,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/vty.c:306,1
    - Dst: frrstr_join_vec
      Src: /src/frr/lib/vty.c:308,1
    - Dst: frrstr_strvec_free
      Src: /src/frr/lib/vty.c:314,1
    - Dst: buffer_put_crlf
      Src: /src/frr/lib/vty.c:326,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:327,1
    - Dst: fprintf
      Src: /src/frr/lib/vty.c:331,1
    - Dst: fflush
      Src: /src/frr/lib/vty.c:332,1
    - Dst: fprintf
      Src: /src/frr/lib/vty.c:334,1
    - Dst: fflush
      Src: /src/frr/lib/vty.c:335,1
    - Dst: buffer_put
      Src: /src/frr/lib/vty.c:342,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:342,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:349,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:353,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 2
    argNames:
    - vty
    - format
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 356
    functionName: vty_out
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 711
    functionsReached:
    - strlen
    - vector_slot
    - vector_set_index
    - vector_compact
    - buffer_put
    - buffer_reset
    - fprintf
    - vector_set
    - frrstr_strvec_free
    - fflush
    - frrstr_filter_vec
    - vty_out
    - vector_active
    - buffer_getstr
    - va_start
    - va_end
    - frrstr_join_vec
    - XFREE
    - XSTRDUP
    - buffer_put_crlf
    - frrstr_split_vec
    - vasnprintfrr
    linkageType: ''
    returnType: int
    signature: int vty_out(struct vty *vty, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/lib/vty.c:366,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:368,1
    - Dst: json_object_free
      Src: /src/frr/lib/vty.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - json
    - options
    argTypes:
    - struct vty*
    - struct json_object*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 372
    functionName: vty_json_helper
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - json_object_free
    - vty_out
    - json_object_to_json_string_ext
    linkageType: ''
    returnType: int
    signature: "int vty_json_helper(struct vty *vty, struct json_object *json,\n\t\t\t
      \  uint32_t options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_json_helper
      Src: /src/frr/lib/vty.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 3
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: vty_json
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 79
    functionsReached:
    - vty_json_helper
    linkageType: ''
    returnType: int
    signature: int vty_json(struct vty *vty, struct json_object *json)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_json_helper
      Src: /src/frr/lib/vty.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: vty_json_no_pretty
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 2
    functionsReached:
    - vty_json_helper
    linkageType: ''
    returnType: int
    signature: int vty_json_no_pretty(struct vty *vty, struct json_object *json)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/vty.c:388,1
    - Dst: vty_json
      Src: /src/frr/lib/vty.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 386
    functionDepth: 4
    functionLinenumber: 386
    functionLinenumberEnd: 391
    functionName: vty_json_empty
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_json
    linkageType: ''
    returnType: void
    signature: void vty_json_empty(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_timestamp
      Src: /src/frr/lib/vty.c:398,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:399,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:403,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - cr
    argTypes:
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 408
    functionName: vty_time_print
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 2
    functionsReached:
    - zlog_info
    - frr_timestamp
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_time_print(struct vty *vty, int cr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/frr/lib/vty.c:417,1
    - Dst: fgets
      Src: /src/frr/lib/vty.c:419,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:423,1
    - Dst: isspace
      Src: /src/frr/lib/vty.c:424,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:428,1
    - Dst: fclose
      Src: /src/frr/lib/vty.c:430,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:432,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:434,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 435
    functionName: vty_hello
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - fopen
    - strlen
    - vty_out
    - fclose
    - isspace
    - fgets
    linkageType: ''
    returnType: void
    signature: void vty_hello(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:450,1
    - Dst: cmd_prompt
      Src: /src/frr/lib/vty.c:450,1
    - Dst: cmd_hostname_get
      Src: /src/frr/lib/vty.c:450,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 447
    functionDepth: 2
    functionLinenumber: 447
    functionLinenumberEnd: 452
    functionName: vty_prompt
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - vty_out
    - cmd_prompt
    linkageType: ''
    returnType: void
    signature: void vty_prompt(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 460
    functionName: vty_will_echo
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_will_echo(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 467
    functionName: vty_will_suppress_go_ahead
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_will_suppress_go_ahead(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 474
    functionName: vty_dont_linemode
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_dont_linemode(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 481
    functionName: vty_do_window_size
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_do_window_size(struct vty *vty)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/vty.c:512,1
    - Dst: crypt
      Src: /src/frr/lib/vty.c:512,1
    - Dst: strcmp
      Src: /src/frr/lib/vty.c:514,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:525,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:531,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - vty
    - buf
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 484
    functionDepth: 2
    functionLinenumber: 484
    functionLinenumberEnd: 537
    functionName: vty_auth
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - crypt
    - strcmp
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_auth(struct vty *vty, char *buf)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:546,1
    - Dst: strncmp
      Src: /src/frr/lib/vty.c:552,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:552,1
    - Dst: isspace
      Src: /src/frr/lib/vty.c:556,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:564,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:571,1
    - Dst: cmd_prompt
      Src: /src/frr/lib/vty.c:571,1
    - Dst: zlog_notice
      Src: /src/frr/lib/vty.c:576,1
    - Dst: GETRUSAGE
      Src: /src/frr/lib/vty.c:589,1
    - Dst: cmd_execute
      Src: /src/frr/lib/vty.c:591,1
    - Dst: GETRUSAGE
      Src: /src/frr/lib/vty.c:593,1
    - Dst: event_consumed_time
      Src: /src/frr/lib/vty.c:595,1
    - Dst: flog_warn
      Src: /src/frr/lib/vty.c:600,1
    - Dst: flog_warn
      Src: /src/frr/lib/vty.c:604,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:615,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:618,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:621,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:625,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 39
    argCount: 2
    argNames:
    - vty
    - buf
    argTypes:
    - struct vty*
    - char*
    assertStmts:
    - condition: (vty)
      pos:
        line_end: 545
        line_start: 545
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 630
      start: 540
    functionDepth: 2
    functionLinenumber: 540
    functionLinenumberEnd: 630
    functionName: vty_command
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - strlen
    - event_consumed_time
    - flog_warn
    - snprintf
    - cmd_prompt
    - vty_out
    - strncmp
    - isspace
    - GETRUSAGE
    - cmd_execute
    - zlog_notice
    - assert
    linkageType: ''
    returnType: int
    signature: int vty_command(struct vty *vty, char *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_put
      Src: /src/frr/lib/vty.c:642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - buf
    - nbytes
    argTypes:
    - struct vty*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 643
    functionName: vty_write
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - buffer_put
    linkageType: ''
    returnType: void
    signature: void vty_write(struct vty *vty, const char *buf, size_t nbytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/frr/lib/vty.c:655,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:658,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:660,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - c
    argTypes:
    - struct vty*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 646
    functionDepth: 2
    functionLinenumber: 646
    functionLinenumberEnd: 666
    functionName: vty_self_insert
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_write
    - memmove
    linkageType: ''
    returnType: void
    signature: void vty_self_insert(struct vty *vty, char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_self_insert
      Src: /src/frr/lib/vty.c:672,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - c
    argTypes:
    - struct vty*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 669
    functionDepth: 3
    functionLinenumber: 669
    functionLinenumberEnd: 678
    functionName: vty_self_insert_overwrite
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_self_insert
    - vty_write
    linkageType: ''
    returnType: void
    signature: void vty_self_insert_overwrite(struct vty *vty, char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/lib/vty.c:691,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:691,1
    - Dst: memcpy
      Src: /src/frr/lib/vty.c:692,1
    - Dst: MAX
      Src: /src/frr/lib/vty.c:694,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 686
    functionDepth: 2
    functionLinenumber: 686
    functionLinenumberEnd: 697
    functionName: vty_insert_word_overwrite
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - MIN
    - strlen
    - vty_write
    - MAX
    - memcpy
    linkageType: ''
    returnType: void
    signature: void vty_insert_word_overwrite(struct vty *vty, char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 706
    functionName: vty_forward_char
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_write
    linkageType: ''
    returnType: void
    signature: void vty_forward_char(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:713,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 715
    functionName: vty_backward_char
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_write
    linkageType: ''
    returnType: void
    signature: void vty_backward_char(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 718
    functionDepth: 3
    functionLinenumber: 718
    functionLinenumberEnd: 722
    functionName: vty_beginning_of_line
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_backward_char
    linkageType: ''
    returnType: void
    signature: void vty_beginning_of_line(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_forward_char
      Src: /src/frr/lib/vty.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 725
    functionDepth: 3
    functionLinenumber: 725
    functionLinenumberEnd: 729
    functionName: vty_end_of_line
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_forward_char
    linkageType: ''
    returnType: void
    signature: void vty_end_of_line(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_kill_line_from_beginning
      Src: /src/frr/lib/vty.c:740,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:743,1
    - Dst: memcpy
      Src: /src/frr/lib/vty.c:744,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 750
    functionName: vty_history_print
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_redraw_line
    - strlen
    - vty_kill_line_from_beginning
    - memcpy
    linkageType: ''
    returnType: void
    signature: void vty_history_print(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_history_print
      Src: /src/frr/lib/vty.c:773,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 753
    functionDepth: 2
    functionLinenumber: 753
    functionLinenumberEnd: 774
    functionName: vty_next_line
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_history_print
    linkageType: ''
    returnType: void
    signature: void vty_next_line(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_history_print
      Src: /src/frr/lib/vty.c:792,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 777
    functionDepth: 2
    functionLinenumber: 777
    functionLinenumberEnd: 793
    functionName: vty_previous_line
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_history_print
    linkageType: ''
    returnType: void
    signature: void vty_previous_line(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 796
    functionDepth: 2
    functionLinenumber: 796
    functionLinenumberEnd: 800
    functionName: vty_redraw_line
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - vty_write
    linkageType: ''
    returnType: void
    signature: void vty_redraw_line(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_forward_char
      Src: /src/frr/lib/vty.c:806,1
    - Dst: vty_forward_char
      Src: /src/frr/lib/vty.c:809,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 803
    functionDepth: 3
    functionLinenumber: 803
    functionLinenumberEnd: 810
    functionName: vty_forward_word
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_forward_char
    linkageType: ''
    returnType: void
    signature: void vty_forward_word(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:816,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 813
    functionDepth: 3
    functionLinenumber: 813
    functionLinenumberEnd: 817
    functionName: vty_backward_pure_word
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_backward_char
    linkageType: ''
    returnType: void
    signature: void vty_backward_pure_word(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:823,1
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:826,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 820
    functionDepth: 3
    functionLinenumber: 820
    functionLinenumberEnd: 827
    functionName: vty_backward_word
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_backward_char
    linkageType: ''
    returnType: void
    signature: void vty_backward_word(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:833,1
    - Dst: cmd_exit
      Src: /src/frr/lib/vty.c:834,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 831
    functionDepth: 3
    functionLinenumber: 831
    functionLinenumberEnd: 837
    functionName: vty_down_level
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - cmd_exit
    - vty_out
    - vty_prompt
    linkageType: ''
    returnType: void
    signature: void vty_down_level(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:842,1
    - Dst: vty_config_exit
      Src: /src/frr/lib/vty.c:845,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:849,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 851
    functionName: vty_end_config
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_config_exit
    - vty_out
    - vty_prompt
    linkageType: ''
    returnType: void
    signature: void vty_end_config(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_down_level
      Src: /src/frr/lib/vty.c:860,1
    - Dst: memmove
      Src: /src/frr/lib/vty.c:870,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:876,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:877,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:880,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 854
    functionDepth: 4
    functionLinenumber: 854
    functionLinenumberEnd: 881
    functionName: vty_delete_char
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_down_level
    - vty_write
    - memmove
    linkageType: ''
    returnType: void
    signature: void vty_delete_char(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:889,1
    - Dst: vty_delete_char
      Src: /src/frr/lib/vty.c:890,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 884
    functionDepth: 5
    functionLinenumber: 884
    functionLinenumberEnd: 891
    functionName: vty_delete_backward_char
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_delete_char
    - vty_backward_char
    linkageType: ''
    returnType: void
    signature: void vty_delete_backward_char(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:905,1
    - Dst: vty_write
      Src: /src/frr/lib/vty.c:907,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:909,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 894
    functionDepth: 2
    functionLinenumber: 894
    functionLinenumberEnd: 911
    functionName: vty_kill_line
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - memset
    - vty_write
    linkageType: ''
    returnType: void
    signature: void vty_kill_line(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_beginning_of_line
      Src: /src/frr/lib/vty.c:916,1
    - Dst: vty_kill_line
      Src: /src/frr/lib/vty.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 914
    functionDepth: 4
    functionLinenumber: 914
    functionLinenumberEnd: 918
    functionName: vty_kill_line_from_beginning
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - vty_beginning_of_line
    - vty_kill_line
    linkageType: ''
    returnType: void
    signature: void vty_kill_line_from_beginning(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_delete_char
      Src: /src/frr/lib/vty.c:924,1
    - Dst: vty_delete_char
      Src: /src/frr/lib/vty.c:926,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 921
    functionDepth: 5
    functionLinenumber: 921
    functionLinenumberEnd: 927
    functionName: vty_forward_kill_word
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_delete_char
    linkageType: ''
    returnType: void
    signature: void vty_forward_kill_word(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_delete_backward_char
      Src: /src/frr/lib/vty.c:933,1
    - Dst: vty_delete_backward_char
      Src: /src/frr/lib/vty.c:935,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 930
    functionDepth: 6
    functionLinenumber: 930
    functionLinenumberEnd: 936
    functionName: vty_backward_kill_word
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_delete_backward_char
    linkageType: ''
    returnType: void
    signature: void vty_backward_kill_word(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:953,1
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:954,1
    - Dst: vty_self_insert_overwrite
      Src: /src/frr/lib/vty.c:955,1
    - Dst: vty_self_insert_overwrite
      Src: /src/frr/lib/vty.c:956,1
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:961,1
    - Dst: vty_self_insert_overwrite
      Src: /src/frr/lib/vty.c:962,1
    - Dst: vty_self_insert_overwrite
      Src: /src/frr/lib/vty.c:963,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 939
    functionDepth: 4
    functionLinenumber: 939
    functionLinenumberEnd: 965
    functionName: vty_transpose_chars
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_self_insert_overwrite
    - vty_backward_char
    linkageType: ''
    returnType: void
    signature: void vty_transpose_chars(struct vty *vty)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: cmd_make_strvec
      Src: /src/frr/lib/vty.c:978,1
    - Dst: isspace
      Src: /src/frr/lib/vty.c:983,1
    - Dst: vector_set
      Src: /src/frr/lib/vty.c:984,1
    - Dst: cmd_complete_command
      Src: /src/frr/lib/vty.c:986,1
    - Dst: cmd_free_strvec
      Src: /src/frr/lib/vty.c:988,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:990,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:993,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:994,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:995,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:999,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1000,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1005,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1006,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1007,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1010,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1011,1
    - Dst: vty_backward_pure_word
      Src: /src/frr/lib/vty.c:1012,1
    - Dst: vty_insert_word_overwrite
      Src: /src/frr/lib/vty.c:1013,1
    - Dst: vty_self_insert
      Src: /src/frr/lib/vty.c:1014,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:1015,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1018,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1019,1
    - Dst: vty_backward_pure_word
      Src: /src/frr/lib/vty.c:1020,1
    - Dst: vty_insert_word_overwrite
      Src: /src/frr/lib/vty.c:1021,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:1022,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1027,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1028,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:1029,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1031,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1033,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1034,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1037,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1038,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:1043,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 968
    functionDepth: 4
    functionLinenumber: 968
    functionLinenumberEnd: 1044
    functionName: vty_complete_command
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - cmd_complete_command
    - cmd_make_strvec
    - vty_out
    - cmd_free_strvec
    - vector_set
    - vty_self_insert
    - isspace
    - vty_redraw_line
    - vty_backward_pure_word
    - XFREE
    - vty_insert_word_overwrite
    - vty_prompt
    linkageType: ''
    returnType: void
    signature: void vty_complete_command(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1056,1
    - Dst: XCALLOC
      Src: /src/frr/lib/vty.c:1060,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:1060,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:1062,1
    - Dst: memcpy
      Src: /src/frr/lib/vty.c:1070,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1072,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1077,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:1079,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - vty
    - cmd_width
    - desc_width
    - token
    argTypes:
    - struct vty*
    - int
    - unsigned int
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1046
    functionDepth: 2
    functionLinenumber: 1046
    functionLinenumberEnd: 1080
    functionName: vty_describe_fold
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - strlen
    - vty_out
    - XCALLOC
    - XFREE
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void vty_describe_fold(struct vty *vty, int cmd_width,\n\t\t\t      unsigned
      int desc_width, struct cmd_token *token)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: cmd_make_strvec
      Src: /src/frr/lib/vty.c:1091,1
    - Dst: vector_init
      Src: /src/frr/lib/vty.c:1095,1
    - Dst: vector_set
      Src: /src/frr/lib/vty.c:1096,1
    - Dst: isspace
      Src: /src/frr/lib/vty.c:1097,1
    - Dst: vector_set
      Src: /src/frr/lib/vty.c:1098,1
    - Dst: cmd_describe_command
      Src: /src/frr/lib/vty.c:1100,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1102,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1107,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1111,1
    - Dst: vector_active
      Src: /src/frr/lib/vty.c:1118,1
    - Dst: vector_slot
      Src: /src/frr/lib/vty.c:1119,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:1125,1
    - Dst: vector_active
      Src: /src/frr/lib/vty.c:1135,1
    - Dst: vector_slot
      Src: /src/frr/lib/vty.c:1136,1
    - Dst: strcmp
      Src: /src/frr/lib/vty.c:1140,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1146,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:1147,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1148,1
    - Dst: vty_describe_fold
      Src: /src/frr/lib/vty.c:1151,1
    - Dst: IS_VARYING_TOKEN
      Src: /src/frr/lib/vty.c:1154,1
    - Dst: vector_slot
      Src: /src/frr/lib/vty.c:1155,1
    - Dst: vector_active
      Src: /src/frr/lib/vty.c:1156,1
    - Dst: vector_init
      Src: /src/frr/lib/vty.c:1158,1
    - Dst: cmd_variable_complete
      Src: /src/frr/lib/vty.c:1159,1
    - Dst: vector_active
      Src: /src/frr/lib/vty.c:1161,1
    - Dst: cmd_variable_comp2str
      Src: /src/frr/lib/vty.c:1162,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1164,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:1165,1
    - Dst: vector_free
      Src: /src/frr/lib/vty.c:1168,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1174,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:1175,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1176,1
    - Dst: vty_describe_fold
      Src: /src/frr/lib/vty.c:1179,1
    - Dst: cmd_free_strvec
      Src: /src/frr/lib/vty.c:1183,1
    - Dst: vector_free
      Src: /src/frr/lib/vty.c:1185,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1187,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1188,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 68
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1083
    functionDepth: 3
    functionLinenumber: 1083
    functionLinenumberEnd: 1189
    functionName: vty_describe_command
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - strlen
    - cmd_free_strvec
    - vector_slot
    - IS_VARYING_TOKEN
    - vty_describe_fold
    - vector_set
    - vty_prompt
    - vector_free
    - vty_out
    - vector_active
    - cmd_variable_comp2str
    - cmd_describe_command
    - XFREE
    - vector_init
    - cmd_make_strvec
    - strcmp
    - isspace
    - vty_redraw_line
    - cmd_variable_complete
    linkageType: ''
    returnType: void
    signature: void vty_describe_command(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/vty.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1191
    functionDepth: 0
    functionLinenumber: 1191
    functionLinenumberEnd: 1194
    functionName: vty_clear_buf
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void vty_clear_buf(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_clear_buf
      Src: /src/frr/lib/vty.c:1200,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1201,1
    - Dst: vty_config_exit
      Src: /src/frr/lib/vty.c:1204,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1197
    functionDepth: 3
    functionLinenumber: 1197
    functionLinenumberEnd: 1212
    functionName: vty_stop_input
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_clear_buf
    - vty_config_exit
    - vty_out
    - vty_prompt
    linkageType: ''
    returnType: void
    signature: void vty_stop_input(struct vty *vty)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/vty.c:1226,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:1232,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/vty.c:1233,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1241
    functionName: vty_hist_add
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vty_hist_add(struct vty *vty)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1254,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1257,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1260,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1263,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1266,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1269,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1272,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1275,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1278,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1281,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1284,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1288,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:1308,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:1314,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1325,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 70
    argCount: 3
    argNames:
    - vty
    - buf
    - nbytes
    argTypes:
    - struct vty*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1246
    functionDepth: 2
    functionLinenumber: 1246
    functionLinenumberEnd: 1339
    functionName: vty_telnet_option
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - flog_err
    - vty_out
    linkageType: ''
    returnType: int
    signature: int vty_telnet_option(struct vty *vty, unsigned char *buf, int nbytes)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_auth
      Src: /src/frr/lib/vty.c:1351,1
    - Dst: vty_command
      Src: /src/frr/lib/vty.c:1354,1
    - Dst: vty_hist_add
      Src: /src/frr/lib/vty.c:1356,1
    - Dst: vty_clear_buf
      Src: /src/frr/lib/vty.c:1362,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1365,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1368
      start: 1342
    functionDepth: 3
    functionLinenumber: 1342
    functionLinenumberEnd: 1368
    functionName: vty_execute
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_command
    - vty_auth
    - vty_clear_buf
    - vty_hist_add
    - vty_prompt
    linkageType: ''
    returnType: int
    signature: int vty_execute(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1370
    functionDepth: 0
    functionLinenumber: 1370
    functionLinenumberEnd: 1371
    functionName: CONTROL
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONTROL(X)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_previous_line
      Src: /src/frr/lib/vty.c:1381,1
    - Dst: vty_next_line
      Src: /src/frr/lib/vty.c:1384,1
    - Dst: vty_forward_char
      Src: /src/frr/lib/vty.c:1387,1
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:1390,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - c
    - vty
    argTypes:
    - unsigned char
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1377
    functionDepth: 3
    functionLinenumber: 1377
    functionLinenumberEnd: 1398
    functionName: vty_escape_map
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_forward_char
    - vty_next_line
    - vty_previous_line
    - vty_backward_char
    linkageType: ''
    returnType: void
    signature: void vty_escape_map(unsigned char c, struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:1403,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:1404,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1405,1
    - Dst: vty_redraw_line
      Src: /src/frr/lib/vty.c:1406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1401
    functionDepth: 3
    functionLinenumber: 1401
    functionLinenumberEnd: 1407
    functionName: vty_buffer_reset
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - buffer_reset
    - vty_redraw_line
    - vty_prompt
    linkageType: ''
    returnType: void
    signature: void vty_buffer_reset(struct vty *vty)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/vty.c:1416,1
    - Dst: read
      Src: /src/frr/lib/vty.c:1419,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/vty.c:1421,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1422,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:1425,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:1428,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:1429,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:1430,1
    - Dst: vty_telnet_option
      Src: /src/frr/lib/vty.c:1455,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1464,1
    - Dst: vty_buffer_reset
      Src: /src/frr/lib/vty.c:1467,1
    - Dst: vty_escape_map
      Src: /src/frr/lib/vty.c:1477,1
    - Dst: vty_backward_word
      Src: /src/frr/lib/vty.c:1488,1
    - Dst: vty_forward_word
      Src: /src/frr/lib/vty.c:1492,1
    - Dst: vty_forward_kill_word
      Src: /src/frr/lib/vty.c:1496,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1499,1
    - Dst: vty_backward_kill_word
      Src: /src/frr/lib/vty.c:1501,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1523,1
    - Dst: vty_beginning_of_line
      Src: /src/frr/lib/vty.c:1524,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1526,1
    - Dst: vty_backward_char
      Src: /src/frr/lib/vty.c:1527,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1529,1
    - Dst: vty_stop_input
      Src: /src/frr/lib/vty.c:1530,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1532,1
    - Dst: vty_delete_char
      Src: /src/frr/lib/vty.c:1533,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1535,1
    - Dst: vty_end_of_line
      Src: /src/frr/lib/vty.c:1536,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1538,1
    - Dst: vty_forward_char
      Src: /src/frr/lib/vty.c:1539,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1541,1
    - Dst: vty_delete_backward_char
      Src: /src/frr/lib/vty.c:1543,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1545,1
    - Dst: vty_kill_line
      Src: /src/frr/lib/vty.c:1546,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1548,1
    - Dst: vty_next_line
      Src: /src/frr/lib/vty.c:1549,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1551,1
    - Dst: vty_previous_line
      Src: /src/frr/lib/vty.c:1552,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1554,1
    - Dst: vty_transpose_chars
      Src: /src/frr/lib/vty.c:1555,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1557,1
    - Dst: vty_kill_line_from_beginning
      Src: /src/frr/lib/vty.c:1558,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1560,1
    - Dst: vty_backward_kill_word
      Src: /src/frr/lib/vty.c:1561,1
    - Dst: CONTROL
      Src: /src/frr/lib/vty.c:1563,1
    - Dst: vty_end_config
      Src: /src/frr/lib/vty.c:1564,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1570,1
    - Dst: buffer_flush_available
      Src: /src/frr/lib/vty.c:1571,1
    - Dst: vty_execute
      Src: /src/frr/lib/vty.c:1572,1
    - Dst: close
      Src: /src/frr/lib/vty.c:1575,1
    - Dst: vty_complete_command
      Src: /src/frr/lib/vty.c:1580,1
    - Dst: vty_self_insert
      Src: /src/frr/lib/vty.c:1585,1
    - Dst: vty_describe_command
      Src: /src/frr/lib/vty.c:1587,1
    - Dst: vty_self_insert
      Src: /src/frr/lib/vty.c:1598,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:1605,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1607,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1608,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 164
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1410
    functionDepth: 7
    functionLinenumber: 1410
    functionLinenumberEnd: 1610
    functionName: vty_read
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_stop_input
    - vty_transpose_chars
    - vty_forward_char
    - flog_err
    - vty_next_line
    - vty_end_of_line
    - vty_kill_line_from_beginning
    - vty_beginning_of_line
    - vty_delete_char
    - vty_kill_line
    - vty_escape_map
    - buffer_reset
    - vty_event
    - vty_backward_kill_word
    - vty_backward_char
    - ERRNO_IO_RETRY
    - safe_strerror
    - vty_forward_word
    - EVENT_ARG
    - vty_close
    - vty_backward_word
    - vty_forward_kill_word
    - vty_out
    - vty_delete_backward_char
    - buffer_flush_available
    - vty_describe_command
    - vty_buffer_reset
    - vty_execute
    - read
    - vty_complete_command
    - close
    - vty_self_insert
    - vty_end_config
    - vty_previous_line
    - CONTROL
    - vty_telnet_option
    linkageType: ''
    returnType: void
    signature: void vty_read(struct event *thread)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/vty.c:1617,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:1621,1
    - Dst: buffer_flush_available
      Src: /src/frr/lib/vty.c:1628,1
    - Dst: buffer_flush_window
      Src: /src/frr/lib/vty.c:1630,1
    - Dst: buffer_flush_window
      Src: /src/frr/lib/vty.c:1633,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:1638,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:1640,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:1641,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:1642,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:1646,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1650,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1657,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1613
    functionDepth: 1
    functionLinenumber: 1613
    functionLinenumberEnd: 1660
    functionName: vty_flush
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - buffer_reset
    - vty_event
    - buffer_flush_available
    - EVENT_OFF
    - EVENT_ARG
    - vty_close
    - buffer_flush_window
    linkageType: ''
    returnType: void
    signature: void vty_flush(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/vty.c:1665,1
    - Dst: buffer_new
      Src: /src/frr/lib/vty.c:1669,1
    - Dst: buffer_new
      Src: /src/frr/lib/vty.c:1670,1
    - Dst: XCALLOC
      Src: /src/frr/lib/vty.c:1671,1
    - Dst: mgmt_fe_create_client_session
      Src: /src/frr/lib/vty.c:1680,1
    - Dst: mgmt_client_id::mgmt_client_id
      Src: /src/frr/lib/vty.c:1681,1
    - Dst: assertf
      Src: /src/frr/lib/vty.c:1683,1
    - Dst: mgmt_session_id::mgmt_session_id
      Src: /src/frr/lib/vty.c:1683,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1688
      start: 1663
    functionDepth: 1
    functionLinenumber: 1663
    functionLinenumberEnd: 1688
    functionName: vty_new
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 3
    functionsReached:
    - mgmt_client_id::mgmt_client_id
    - buffer_new
    - XCALLOC
    - assertf
    - mgmt_fe_create_client_session
    - mgmt_session_id::mgmt_session_id
    linkageType: ''
    returnType: struct vty
    signature: struct vty *vty_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_new
      Src: /src/frr/lib/vty.c:1696,1
    - Dst: vty_clear_buf
      Src: /src/frr/lib/vty.c:1703,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:1705,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:1709,1
    - Dst: vtys_add_tail
      Src: /src/frr/lib/vty.c:1718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - vty_sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1692
    functionDepth: 2
    functionLinenumber: 1692
    functionLinenumberEnd: 1721
    functionName: vty_new_init
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_new
    - vty_clear_buf
    - vtys_add_tail
    - memset
    linkageType: ''
    returnType: struct vty
    signature: struct vty *vty_new_init(int vty_sock)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2str
      Src: /src/frr/lib/vty.c:1729,1
    - Dst: vty_new_init
      Src: /src/frr/lib/vty.c:1732,1
    - Dst: strlcpy
      Src: /src/frr/lib/vty.c:1736,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1749,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:1751,1
    - Dst: vty_hello
      Src: /src/frr/lib/vty.c:1757,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:1759,1
    - Dst: vty_will_echo
      Src: /src/frr/lib/vty.c:1762,1
    - Dst: vty_will_suppress_go_ahead
      Src: /src/frr/lib/vty.c:1763,1
    - Dst: vty_dont_linemode
      Src: /src/frr/lib/vty.c:1765,1
    - Dst: vty_do_window_size
      Src: /src/frr/lib/vty.c:1766,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1769,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1772,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1773,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - vty_sock
    - su
    argTypes:
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1724
    functionDepth: 3
    functionLinenumber: 1724
    functionLinenumberEnd: 1776
    functionName: vty_create
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_hello
    - vty_do_window_size
    - vty_out
    - vty_dont_linemode
    - vty_new_init
    - strlcpy
    - vty_event
    - vty_will_echo
    - vty_prompt
    - vty_close
    - vty_will_suppress_go_ahead
    - sockunion2str
    linkageType: ''
    returnType: struct vty
    signature: struct vty *vty_create(int vty_sock, union sockunion *su)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: tcsetattr
      Src: /src/frr/lib/vty.c:1788,1
    - Dst: stdio_vty_atclose
      Src: /src/frr/lib/vty.c:1794,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - isexit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1784
    functionDepth: 0
    functionLinenumber: 1784
    functionLinenumberEnd: 1797
    functionName: vty_stdio_reset
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - stdio_vty_atclose
    - tcsetattr
    linkageType: ''
    returnType: void
    signature: void vty_stdio_reset(int isexit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_stdio_reset
      Src: /src/frr/lib/vty.c:1801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1799
    functionDepth: 1
    functionLinenumber: 1799
    functionLinenumberEnd: 1802
    functionName: vty_stdio_atexit
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_stdio_reset
    linkageType: ''
    returnType: void
    signature: void vty_stdio_atexit(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:1809,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:1810,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:1811,1
    - Dst: tcsetattr
      Src: /src/frr/lib/vty.c:1814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1804
    functionDepth: 1
    functionLinenumber: 1804
    functionLinenumberEnd: 1816
    functionName: vty_stdio_suspend
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - tcsetattr
    linkageType: ''
    returnType: void
    signature: void vty_stdio_suspend(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tcgetattr
      Src: /src/frr/lib/vty.c:1823,1
    - Dst: tcsetattr
      Src: /src/frr/lib/vty.c:1832,1
    - Dst: vty_prompt
      Src: /src/frr/lib/vty.c:1836,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1839,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:1840,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1818
    functionDepth: 3
    functionLinenumber: 1818
    functionLinenumberEnd: 1841
    functionName: vty_stdio_resume
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_prompt
    - vty_event
    - tcsetattr
    - tcgetattr
    linkageType: ''
    returnType: void
    signature: void vty_stdio_resume(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:1847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1848
      start: 1843
    functionDepth: 1
    functionLinenumber: 1843
    functionLinenumberEnd: 1848
    functionName: vty_stdio_close
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_close
    linkageType: ''
    returnType: void
    signature: void vty_stdio_close(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_new_init
      Src: /src/frr/lib/vty.c:1858,1
    - Dst: strlcpy
      Src: /src/frr/lib/vty.c:1868,1
    - Dst: vty_stdio_resume
      Src: /src/frr/lib/vty.c:1870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1850
    functionDepth: 4
    functionLinenumber: 1850
    functionLinenumberEnd: 1872
    functionName: vty_stdio
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 5
    functionsReached:
    - vty_new_init
    - strlcpy
    - vty_stdio_resume
    linkageType: ''
    returnType: struct vty
    signature: struct vty *vty_stdio(void (*atclose)(int isexit))
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/vty.c:1877,1
    - Dst: vty_event_serv
      Src: /src/frr/lib/vty.c:1887,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:1889,1
    - Dst: sockunion_accept
      Src: /src/frr/lib/vty.c:1892,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:1894,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:1895,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/vty.c:1898,1
    - Dst: set_cloexec
      Src: /src/frr/lib/vty.c:1899,1
    - Dst: sockunion2hostprefix
      Src: /src/frr/lib/vty.c:1901,1
    - Dst: close
      Src: /src/frr/lib/vty.c:1902,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:1903,1
    - Dst: access_list_lookup
      Src: /src/frr/lib/vty.c:1910,1
    - Dst: access_list_apply
      Src: /src/frr/lib/vty.c:1911,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:1912,1
    - Dst: close
      Src: /src/frr/lib/vty.c:1913,1
    - Dst: access_list_lookup
      Src: /src/frr/lib/vty.c:1920,1
    - Dst: access_list_apply
      Src: /src/frr/lib/vty.c:1922,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:1923,1
    - Dst: close
      Src: /src/frr/lib/vty.c:1924,1
    - Dst: setsockopt
      Src: /src/frr/lib/vty.c:1930,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:1933,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:1934,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:1936,1
    - Dst: vty_create
      Src: /src/frr/lib/vty.c:1938,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1875
    functionDepth: 4
    functionLinenumber: 1875
    functionLinenumberEnd: 1939
    functionName: vty_accept
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - sockunion2hostprefix
    - zlog_info
    - memset
    - set_cloexec
    - vty_create
    - close
    - flog_err
    - vty_event_serv
    - safe_strerror
    - access_list_lookup
    - access_list_apply
    - EVENT_ARG
    - set_nonblocking
    - sockunion_accept
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void vty_accept(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/vty.c:1950,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:1954,1
    - Dst: getaddrinfo
      Src: /src/frr/lib/vty.c:1957,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:1960,1
    - Dst: gai_strerror
      Src: /src/frr/lib/vty.c:1961,1
    - Dst: exit
      Src: /src/frr/lib/vty.c:1962,1
    - Dst: socket
      Src: /src/frr/lib/vty.c:1973,1
    - Dst: sockopt_v6only
      Src: /src/frr/lib/vty.c:1978,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/lib/vty.c:1979,1
    - Dst: sockopt_reuseport
      Src: /src/frr/lib/vty.c:1980,1
    - Dst: set_cloexec
      Src: /src/frr/lib/vty.c:1981,1
    - Dst: bind
      Src: /src/frr/lib/vty.c:1983,1
    - Dst: close
      Src: /src/frr/lib/vty.c:1985,1
    - Dst: listen
      Src: /src/frr/lib/vty.c:1989,1
    - Dst: close
      Src: /src/frr/lib/vty.c:1991,1
    - Dst: XCALLOC
      Src: /src/frr/lib/vty.c:1995,1
    - Dst: vtyservs_add_tail
      Src: /src/frr/lib/vty.c:1997,1
    - Dst: vty_event_serv
      Src: /src/frr/lib/vty.c:1999,1
    - Dst: freeaddrinfo
      Src: /src/frr/lib/vty.c:2002,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - hostname
    - port
    argTypes:
    - char*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 2003
    functionName: vty_serv_sock_addrinfo
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - exit
    - getaddrinfo
    - snprintf
    - memset
    - sockopt_reuseaddr
    - set_cloexec
    - socket
    - gai_strerror
    - XCALLOC
    - sockopt_reuseport
    - close
    - vtyservs_add_tail
    - freeaddrinfo
    - vty_event_serv
    - sockopt_v6only
    - bind
    - listen
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void vty_serv_sock_addrinfo(const char *hostname, unsigned short port)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/frr/lib/vty.c:2020,1
    - Dst: umask
      Src: /src/frr/lib/vty.c:2023,1
    - Dst: socket
      Src: /src/frr/lib/vty.c:2026,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:2028,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2030,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:2035,1
    - Dst: strlcpy
      Src: /src/frr/lib/vty.c:2037,1
    - Dst: SUN_LEN
      Src: /src/frr/lib/vty.c:2039,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:2041,1
    - Dst: set_cloexec
      Src: /src/frr/lib/vty.c:2044,1
    - Dst: bind
      Src: /src/frr/lib/vty.c:2046,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:2048,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2049,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2050,1
    - Dst: listen
      Src: /src/frr/lib/vty.c:2054,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:2056,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2057,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2058,1
    - Dst: umask
      Src: /src/frr/lib/vty.c:2062,1
    - Dst: zprivs_get_ids
      Src: /src/frr/lib/vty.c:2064,1
    - Dst: chown
      Src: /src/frr/lib/vty.c:2071,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:2072,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2074,1
    - Dst: XCALLOC
      Src: /src/frr/lib/vty.c:2078,1
    - Dst: vtyservs_add_tail
      Src: /src/frr/lib/vty.c:2081,1
    - Dst: vty_event_serv
      Src: /src/frr/lib/vty.c:2083,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2010
    functionDepth: 1
    functionLinenumber: 2010
    functionLinenumberEnd: 2084
    functionName: vty_serv_un
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - zprivs_get_ids
    - unlink
    - strlen
    - chown
    - memset
    - set_cloexec
    - XCALLOC
    - socket
    - strlcpy
    - close
    - SUN_LEN
    - vtyservs_add_tail
    - safe_strerror
    - vty_event_serv
    - bind
    - listen
    - umask
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void vty_serv_un(const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/vty.c:2090,1
    - Dst: vty_event_serv
      Src: /src/frr/lib/vty.c:2097,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:2099,1
    - Dst: accept
      Src: /src/frr/lib/vty.c:2102,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2106,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2107,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/vty.c:2111,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2112,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2115,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2116,1
    - Dst: set_cloexec
      Src: /src/frr/lib/vty.c:2119,1
    - Dst: printf
      Src: /src/frr/lib/vty.c:2122,1
    - Dst: vty_new
      Src: /src/frr/lib/vty.c:2125,1
    - Dst: vtys_add_tail
      Src: /src/frr/lib/vty.c:2130,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:2132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2133
      start: 2088
    functionDepth: 2
    functionLinenumber: 2088
    functionLinenumberEnd: 2133
    functionName: vtysh_accept
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - memset
    - set_cloexec
    - vty_event
    - close
    - accept
    - vty_new
    - flog_err
    - vty_event_serv
    - safe_strerror
    - vtys_add_tail
    - printf
    - EVENT_ARG
    - set_nonblocking
    linkageType: ''
    returnType: void
    signature: void vtysh_accept(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/lib/vty.c:2144,1
    - Dst: array_size
      Src: /src/frr/lib/vty.c:2149,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/lib/vty.c:2153,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:2156,1
    - Dst: CMSG_LEN
      Src: /src/frr/lib/vty.c:2159,1
    - Dst: memcpy
      Src: /src/frr/lib/vty.c:2160,1
    - Dst: CMSG_DATA
      Src: /src/frr/lib/vty.c:2160,1
    - Dst: sendmsg
      Src: /src/frr/lib/vty.c:2162,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/vty.c:2163,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2166,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:2174,1
    - Dst: buffer_put
      Src: /src/frr/lib/vty.c:2179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2135
    functionDepth: 1
    functionLinenumber: 2135
    functionLinenumberEnd: 2183
    functionName: vtysh_do_pass_fd
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - memset
    - vty_event
    - CMSG_FIRSTHDR
    - close
    - ERRNO_IO_RETRY
    - array_size
    - sendmsg
    - CMSG_SPACE
    - CMSG_DATA
    - buffer_put
    - CMSG_LEN
    - memcpy
    linkageType: ''
    returnType: int
    signature: int vtysh_do_pass_fd(struct vty *vty)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_flush_available
      Src: /src/frr/lib/vty.c:2189,1
    - Dst: vtysh_do_pass_fd
      Src: /src/frr/lib/vty.c:2191,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:2195,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2198,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:2200,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:2201,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:2202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2185
    functionDepth: 2
    functionLinenumber: 2185
    functionLinenumberEnd: 2208
    functionName: vtysh_flush
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - buffer_reset
    - vty_event
    - vtysh_do_pass_fd
    - buffer_flush_available
    - flog_err
    - vty_close
    linkageType: ''
    returnType: int
    signature: int vtysh_flush(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/lib/vty.c:2213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - fd
    argTypes:
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2210
    functionDepth: 0
    functionLinenumber: 2210
    functionLinenumberEnd: 2216
    functionName: vty_pass_fd
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void vty_pass_fd(struct vty *vty, int fd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_new
      Src: /src/frr/lib/vty.c:2227,1
    - Dst: vty_mgmt_lock_candidate_inline
      Src: /src/frr/lib/vty.c:2236,1
    - Dst: vty_mgmt_lock_running_inline
      Src: /src/frr/lib/vty.c:2237,1
    - Dst: array_size
      Src: /src/frr/lib/vty.c:2239,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:2240,1
    - Dst: vty_open_config
      Src: /src/frr/lib/vty.c:2243,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:2247,1
    - Dst: config_from_file
      Src: /src/frr/lib/vty.c:2251,1
    - Dst: fclose
      Src: /src/frr/lib/vty.c:2254,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:2257,1
    - Dst: vty_open_config
      Src: /src/frr/lib/vty.c:2258,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:2262,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/vty.c:2263,1
    - Dst: host_config_get
      Src: /src/frr/lib/vty.c:2263,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:2265,1
    - Dst: vty_open_config
      Src: /src/frr/lib/vty.c:2266,1
    - Dst: host_config_set
      Src: /src/frr/lib/vty.c:2268,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2269,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:2273,1
    - Dst: config_from_file
      Src: /src/frr/lib/vty.c:2276,1
    - Dst: fclose
      Src: /src/frr/lib/vty.c:2279,1
    - Dst: vty_mgmt_unlock_running_inline
      Src: /src/frr/lib/vty.c:2286,1
    - Dst: vty_mgmt_unlock_candidate_inline
      Src: /src/frr/lib/vty.c:2288,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:2293,1
    - Dst: vty_read_file_finish
      Src: /src/frr/lib/vty.c:2295,1
    - Dst: zlog_info
      Src: /src/frr/lib/vty.c:2297,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2218
    functionDepth: 2
    functionLinenumber: 2218
    functionLinenumberEnd: 2300
    functionName: mgmt_vty_read_configs
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - zlog_info
    - host_config_set
    - snprintf
    - vty_mgmt_unlock_candidate_inline
    - vty_read_file_finish
    - vty_mgmt_unlock_running_inline
    - vty_mgmt_lock_running_inline
    - fclose
    - vty_new
    - vty_mgmt_lock_candidate_inline
    - array_size
    - XFREE
    - vty_open_config
    - config_from_file
    - vty_close
    - host_config_get
    - XSTRDUP
    linkageType: ''
    returnType: bool
    signature: bool mgmt_vty_read_configs(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/lib/vty.c:2312,1
    - Dst: EVENT_ARG
      Src: /src/frr/lib/vty.c:2313,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:2326,1
    - Dst: read
      Src: /src/frr/lib/vty.c:2328,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/vty.c:2330,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:2331,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2334,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2337,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:2339,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:2340,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:2341,1
    - Dst: printf
      Src: /src/frr/lib/vty.c:2343,1
    - Dst: printf
      Src: /src/frr/lib/vty.c:2349,1
    - Dst: vty_clear_buf
      Src: /src/frr/lib/vty.c:2355,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2356,1
    - Dst: vty_execute
      Src: /src/frr/lib/vty.c:2362,1
    - Dst: printf
      Src: /src/frr/lib/vty.c:2368,1
    - Dst: printf
      Src: /src/frr/lib/vty.c:2369,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:2373,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:2378,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:2403,1
    - Dst: buffer_put
      Src: /src/frr/lib/vty.c:2413,1
    - Dst: vtysh_flush
      Src: /src/frr/lib/vty.c:2415,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:2424,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:2426,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (vty->type == VTY_SHELL_SERV)
      pos:
        line_end: 2325
        line_start: 2325
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 2427
      start: 2302
    functionDepth: 4
    functionLinenumber: 2302
    functionLinenumberEnd: 2427
    functionName: vtysh_read
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_execute
    - read
    - vty_out
    - EVENT_FD
    - memset
    - buffer_reset
    - vty_event
    - vtysh_flush
    - ERRNO_IO_RETRY
    - flog_err
    - safe_strerror
    - vty_clear_buf
    - MGMTD_FE_CLIENT_DBG
    - printf
    - EVENT_ARG
    - buffer_put
    - vty_close
    - assert
    linkageType: ''
    returnType: void
    signature: void vtysh_read(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/vty.c:2431,1
    - Dst: vtysh_flush
      Src: /src/frr/lib/vty.c:2433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2429
    functionDepth: 3
    functionLinenumber: 2429
    functionLinenumberEnd: 2434
    functionName: vtysh_write
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vtysh_flush
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void vtysh_write(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_serv_sock_addrinfo
      Src: /src/frr/lib/vty.c:2443,1
    - Dst: vty_serv_un
      Src: /src/frr/lib/vty.c:2446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - addr
    - port
    - path
    argTypes:
    - char*
    - unsigned short
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2448
      start: 2439
    functionDepth: 2
    functionLinenumber: 2439
    functionLinenumberEnd: 2448
    functionName: vty_serv_start
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - vty_serv_sock_addrinfo
    - vty_serv_un
    linkageType: ''
    returnType: void
    signature: void vty_serv_start(const char *addr, unsigned short port, const char
      *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vtyservs_pop
      Src: /src/frr/lib/vty.c:2454,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:2455,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2456,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2457,1
    - Dst: vtyservs_fini
      Src: /src/frr/lib/vty.c:2460,1
    - Dst: vtyservs_init
      Src: /src/frr/lib/vty.c:2461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2462
      start: 2450
    functionDepth: 1
    functionLinenumber: 2450
    functionLinenumberEnd: 2462
    functionName: vty_serv_stop
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vtyservs_fini
    - close
    - vtyservs_pop
    - EVENT_OFF
    - vtyservs_init
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vty_serv_stop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2469
      start: 2464
    functionDepth: 0
    functionLinenumber: 2464
    functionLinenumberEnd: 2469
    functionName: vty_error_delete
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vty_error_delete(void *arg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_ERR
      Src: /src/frr/lib/vty.c:2487,1
    - Dst: vty_config_exit
      Src: /src/frr/lib/vty.c:2491,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:2494,1
    - Dst: mgmt_fe_destroy_client_session
      Src: /src/frr/lib/vty.c:2495,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:2501,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:2502,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:2503,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2506,1
    - Dst: zlog_live_close
      Src: /src/frr/lib/vty.c:2509,1
    - Dst: buffer_flush_all
      Src: /src/frr/lib/vty.c:2512,1
    - Dst: buffer_free
      Src: /src/frr/lib/vty.c:2515,1
    - Dst: buffer_free
      Src: /src/frr/lib/vty.c:2516,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2520,1
    - Dst: vtys_del
      Src: /src/frr/lib/vty.c:2526,1
    - Dst: vtys_del
      Src: /src/frr/lib/vty.c:2528,1
    - Dst: fsync
      Src: /src/frr/lib/vty.c:2532,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2540,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2542,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2546,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2547,1
    - Dst: list_delete
      Src: /src/frr/lib/vty.c:2551,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2555,1
    - Dst: vty_stdio_reset
      Src: /src/frr/lib/vty.c:2558,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2475
    functionDepth: 1
    functionLinenumber: 2475
    functionLinenumberEnd: 2559
    functionName: vty_close
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 11
    functionsReached:
    - vtys_del
    - list_delete
    - buffer_free
    - vty_config_exit
    - close
    - fsync
    - zlog_live_close
    - EVENT_OFF
    - MGMTD_FE_CLIENT_DBG
    - XFREE
    - MGMTD_FE_CLIENT_ERR
    - mgmt_fe_destroy_client_session
    - vty_stdio_reset
    - buffer_flush_all
    linkageType: ''
    returnType: void
    signature: void vty_close(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/vty.c:2566,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:2570,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:2571,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2572,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:2576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2577
      start: 2562
    functionDepth: 2
    functionLinenumber: 2562
    functionLinenumberEnd: 2577
    functionName: vty_timeout
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - buffer_reset
    - vty_close
    - vty_out
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void vty_timeout(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_new
      Src: /src/frr/lib/vty.c:2585,1
    - Dst: nb_config_new
      Src: /src/frr/lib/vty.c:2601,1
    - Dst: config_from_file
      Src: /src/frr/lib/vty.c:2605,1
    - Dst: vty_read_file_finish
      Src: /src/frr/lib/vty.c:2607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - config
    - confp
    argTypes:
    - struct nb_config*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2608
      start: 2580
    functionDepth: 2
    functionLinenumber: 2580
    functionLinenumberEnd: 2608
    functionName: vty_read_file
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - nb_config_new
    - vty_new
    - config_from_file
    - vty_read_file_finish
    linkageType: ''
    returnType: void
    signature: void vty_read_file(struct nb_config *config, FILE *confp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buffer_flush_all
      Src: /src/frr/lib/vty.c:2616,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/vty.c:2618,1
    - Dst: switch
      Src: /src/frr/lib/vty.c:2622,1
    - Dst: strchr
      Src: /src/frr/lib/vty.c:2653,1
    - Dst: if
      Src: /src/frr/lib/vty.c:2654,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2656,1
    - Dst: nb_candidate_commit
      Src: /src/frr/lib/vty.c:2671,1
    - Dst: if
      Src: /src/frr/lib/vty.c:2674,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:2675,1
    - Dst: nb_err_name
      Src: /src/frr/lib/vty.c:2677,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:2680,1
    - Dst: vty_use_backup_config
      Src: /src/frr/lib/vty.c:2683,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:2691,1
    - Dst: malloc
      Src: /src/frr/lib/vty.c:2692,1
    - Dst: strlcpy
      Src: /src/frr/lib/vty.c:2693,1
    - Dst: strlcat
      Src: /src/frr/lib/vty.c:2694,1
    - Dst: open
      Src: /src/frr/lib/vty.c:2696,1
    - Dst: if
      Src: /src/frr/lib/vty.c:2697,1
    - Dst: free
      Src: /src/frr/lib/vty.c:2698,1
    - Dst: malloc
      Src: /src/frr/lib/vty.c:2702,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:2702,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:2703,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:2703,1
    - Dst: mkstemp
      Src: /src/frr/lib/vty.c:2706,1
    - Dst: fchmod
      Src: /src/frr/lib/vty.c:2710,1
    - Dst: read
      Src: /src/frr/lib/vty.c:2713,1
    - Dst: write
      Src: /src/frr/lib/vty.c:2714,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2718,1
    - Dst: rename
      Src: /src/frr/lib/vty.c:2720,1
    - Dst: fopen
      Src: /src/frr/lib/vty.c:2721,1
    - Dst: unlink
      Src: /src/frr/lib/vty.c:2723,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2727,1
    - Dst: unlink
      Src: /src/frr/lib/vty.c:2728,1
    - Dst: close
      Src: /src/frr/lib/vty.c:2730,1
    - Dst: free
      Src: /src/frr/lib/vty.c:2733,1
    - Dst: free
      Src: /src/frr/lib/vty.c:2734,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 2
    argNames:
    - vty
    - config
    argTypes:
    - struct vty*
    - struct nb_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2736
      start: 2610
    functionDepth: 2
    functionLinenumber: 2610
    functionLinenumberEnd: 2736
    functionName: vty_read_file_finish
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 2
    functionsReached:
    - switch
    - strlen
    - open
    - malloc
    - strchr
    - flog_err
    - strlcat
    - unlink
    - fchmod
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - if
    - mkstemp
    - vty_close
    - write
    - strlcpy
    - free
    - zlog_err
    - vty_use_backup_config
    - buffer_flush_all
    - rename
    - fopen
    - nb_err_name
    - read
    - nb_candidate_commit
    - close
    linkageType: ''
    returnType: void
    signature: void vty_read_file_finish(struct vty *vty, struct nb_config *config)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IS_DIRECTORY_SEP
      Src: /src/frr/lib/vty.c:2747,1
    - Dst: getcwd
      Src: /src/frr/lib/vty.c:2748,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:2749,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:2755,1
    - Dst: strlen
      Src: /src/frr/lib/vty.c:2755,1
    - Dst: XMALLOC
      Src: /src/frr/lib/vty.c:2756,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:2757,1
    - Dst: fopen
      Src: /src/frr/lib/vty.c:2762,1
    - Dst: flog_warn
      Src: /src/frr/lib/vty.c:2765,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2768,1
    - Dst: vty_use_backup_config
      Src: /src/frr/lib/vty.c:2770,1
    - Dst: flog_warn
      Src: /src/frr/lib/vty.c:2772,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2775,1
    - Dst: host_config_set
      Src: /src/frr/lib/vty.c:2784,1
    - Dst: strstr
      Src: /src/frr/lib/vty.c:2804,1
    - Dst: stat
      Src: /src/frr/lib/vty.c:2805,1
    - Dst: fopen
      Src: /src/frr/lib/vty.c:2810,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2812,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vty.c:2816,1
    - Dst: vty_use_backup_config
      Src: /src/frr/lib/vty.c:2818,1
    - Dst: flog_warn
      Src: /src/frr/lib/vty.c:2820,1
    - Dst: flog_err
      Src: /src/frr/lib/vty.c:2824,1
    - Dst: host_config_set
      Src: /src/frr/lib/vty.c:2833,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:2836,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 2
    argNames:
    - config_file
    - config_default_dir
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2839
      start: 2738
    functionDepth: 1
    functionLinenumber: 2738
    functionLinenumberEnd: 2839
    functionName: vty_open_config
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - strstr
    - fopen
    - strlen
    - host_config_set
    - flog_warn
    - snprintf
    - IS_DIRECTORY_SEP
    - XMALLOC
    - vty_use_backup_config
    - flog_err
    - safe_strerror
    - XFREE
    - flog_err_sys
    - getcwd
    - stat
    linkageType: ''
    returnType: FILE
    signature: FILE *vty_open_config(const char *config_file, char *config_default_dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_open_config
      Src: /src/frr/lib/vty.c:2847,1
    - Dst: vty_read_file
      Src: /src/frr/lib/vty.c:2851,1
    - Dst: fclose
      Src: /src/frr/lib/vty.c:2853,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - config
    - config_file
    - config_default_dir
    argTypes:
    - struct nb_config*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2856
      start: 2842
    functionDepth: 3
    functionLinenumber: 2842
    functionLinenumberEnd: 2856
    functionName: vty_read_config
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 5
    functionsReached:
    - vty_open_config
    - vty_read_file
    - fclose
    linkageType: ''
    returnType: bool
    signature: "bool vty_read_config(struct nb_config *config, const char *config_file,\n\t\t
      \    char *config_default_dir)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_mgmt_fe_enabled
      Src: /src/frr/lib/vty.c:2861,1
    - Dst: nb_running_lock
      Src: /src/frr/lib/vty.c:2862,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2863,1
    - Dst: vty_mgmt_fe_enabled
      Src: /src/frr/lib/vty.c:2873,1
    - Dst: vty_mgmt_lock_candidate_inline
      Src: /src/frr/lib/vty.c:2874,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2875,1
    - Dst: vty_mgmt_lock_running_inline
      Src: /src/frr/lib/vty.c:2879,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2880,1
    - Dst: vty_mgmt_unlock_candidate_inline
      Src: /src/frr/lib/vty.c:2882,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:2885,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:2886,1
    - Dst: nb_config_dup
      Src: /src/frr/lib/vty.c:2895,1
    - Dst: nb_config_dup
      Src: /src/frr/lib/vty.c:2896,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2897,1
    - Dst: frr_get_cli_mode
      Src: /src/frr/lib/vty.c:2910,1
    - Dst: nb_config_dup
      Src: /src/frr/lib/vty.c:2911,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 4
    argNames:
    - vty
    - private_config
    - exclusive
    - file_lock
    argTypes:
    - struct vty*
    - bool
    - bool
    - bool
    assertStmts:
    - condition: (vty->mgmt_locked_candidate_ds)
      pos:
        line_end: 2884
        line_start: 2884
        source_file: /src/frr/lib/vty.c
    - condition: (vty->mgmt_locked_running_ds)
      pos:
        line_end: 2885
        line_start: 2885
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 2914
      start: 2858
    functionDepth: 2
    functionLinenumber: 2858
    functionLinenumberEnd: 2914
    functionName: vty_config_enter
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - nb_running_lock
    - vty_out
    - vty_mgmt_fe_enabled
    - vty_mgmt_unlock_candidate_inline
    - vty_mgmt_lock_running_inline
    - nb_config_dup
    - frr_get_cli_mode
    - vty_mgmt_lock_candidate_inline
    - assert
    linkageType: ''
    returnType: int
    signature: "int vty_config_enter(struct vty *vty, bool private_config, bool exclusive,\n\t\t
      \    bool file_lock)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_lookup
      Src: /src/frr/lib/vty.c:2925,1
    - Dst: cmd_exit
      Src: /src/frr/lib/vty.c:2934,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2935
      start: 2917
    functionDepth: 1
    functionLinenumber: 2917
    functionLinenumberEnd: 2935
    functionName: vty_config_exit
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 3
    functionsReached:
    - vector_lookup
    - cmd_exit
    linkageType: ''
    returnType: void
    signature: void vty_config_exit(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vty_mgmt_unlock_running_inline
      Src: /src/frr/lib/vty.c:2944,1
    - Dst: vty_mgmt_unlock_candidate_inline
      Src: /src/frr/lib/vty.c:2947,1
    - Dst: nb_cli_pending_commit_check
      Src: /src/frr/lib/vty.c:2950,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2954,1
    - Dst: nb_cli_confirmed_commit_rollback
      Src: /src/frr/lib/vty.c:2956,1
    - Dst: nb_cli_confirmed_commit_clean
      Src: /src/frr/lib/vty.c:2957,1
    - Dst: nb_running_unlock
      Src: /src/frr/lib/vty.c:2960,1
    - Dst: nb_config_free
      Src: /src/frr/lib/vty.c:2964,1
    - Dst: nb_config_free
      Src: /src/frr/lib/vty.c:2968,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:2979,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2984
      start: 2937
    functionDepth: 2
    functionLinenumber: 2937
    functionLinenumberEnd: 2984
    functionName: vty_config_node_exit
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - nb_cli_confirmed_commit_clean
    - vty_out
    - vty_mgmt_unlock_candidate_inline
    - nb_cli_pending_commit_check
    - nb_running_unlock
    - nb_config_free
    - nb_cli_confirmed_commit_rollback
    - vty_mgmt_unlock_running_inline
    linkageType: ''
    returnType: int
    signature: int vty_config_node_exit(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/lib/vty.c:2993,1
    - Dst: event_add_read
      Src: /src/frr/lib/vty.c:2998,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3007,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - event
    - vty_serv
    argTypes:
    - enum vty_event
    - struct vty_serv*
    assertStmts:
    - condition: (!"vty_event_serv() called incorrectly")
      pos:
        line_end: 3006
        line_start: 3006
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3009
      start: 2989
    functionDepth: 1
    functionLinenumber: 2989
    functionLinenumberEnd: 3009
    functionName: vty_event_serv
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 4
    functionsReached:
    - event_add_read
    - assert
    linkageType: ''
    returnType: void
    signature: void vty_event_serv(enum vty_event event, struct vty_serv *vty_serv)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/lib/vty.c:3016,1
    - Dst: event_add_write
      Src: /src/frr/lib/vty.c:3020,1
    - Dst: event_add_read
      Src: /src/frr/lib/vty.c:3025,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:3030,1
    - Dst: event_add_timer
      Src: /src/frr/lib/vty.c:3031,1
    - Dst: event_add_write
      Src: /src/frr/lib/vty.c:3036,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/vty.c:3040,1
    - Dst: event_add_timer
      Src: /src/frr/lib/vty.c:3042,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3047,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - event
    - vty
    argTypes:
    - enum vty_event
    - struct vty*
    assertStmts:
    - condition: (!"vty_event() called incorrectly")
      pos:
        line_end: 3046
        line_start: 3046
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3049
      start: 3011
    functionDepth: 1
    functionLinenumber: 3011
    functionLinenumberEnd: 3049
    functionName: vty_event
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 9
    functionsReached:
    - event_add_write
    - EVENT_OFF
    - event_add_read
    - assert
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void vty_event(enum vty_event event, struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/frr/lib/vty.c:3085,1
    - Dst: strtol
      Src: /src/frr/lib/vty.c:3089,1
    - Dst: vty_event
      Src: /src/frr/lib/vty.c:3093,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - min_str
    - sec_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3097
      start: 3077
    functionDepth: 2
    functionLinenumber: 3077
    functionLinenumberEnd: 3097
    functionName: exec_timeout
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_event
    - strtol
    linkageType: ''
    returnType: int
    signature: "int exec_timeout(struct vty *vty, const char *min_str,\n\t\t\tconst
      char *sec_str)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_frame
      Src: /src/frr/lib/vty.c:3355,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3358,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3361,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3366,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3371,1
    - Dst: vty_endframe
      Src: /src/frr/lib/vty.c:3373,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3376,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3378,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3381
      start: 3353
    functionDepth: 2
    functionLinenumber: 3353
    functionLinenumberEnd: 3381
    functionName: vty_config_write
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_frame
    - vty_out
    - vty_endframe
    linkageType: ''
    returnType: int
    signature: int vty_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3398,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3399,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:3401,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:3406,1
    - Dst: XFREE
      Src: /src/frr/lib/vty.c:3407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3408
      start: 3393
    functionDepth: 2
    functionLinenumber: 3393
    functionLinenumberEnd: 3408
    functionName: vty_reset
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 2
    functionsReached:
    - buffer_reset
    - vty_close
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vty_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3398,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3399,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:3401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3402
      start: 3397
    functionDepth: 2
    functionLinenumber: 3397
    functionLinenumberEnd: 3402
    functionName: frr_each_safe
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 44
    functionsReached:
    - buffer_reset
    - vty_close
    linkageType: ''
    returnType: void
    signature: void frr_each_safe (vtys, vty_sessions, vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getcwd
      Src: /src/frr/lib/vty.c:3414,1
    - Dst: chdir
      Src: /src/frr/lib/vty.c:3422,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:3423,1
    - Dst: exit
      Src: /src/frr/lib/vty.c:3426,1
    - Dst: getcwd
      Src: /src/frr/lib/vty.c:3428,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vty.c:3429,1
    - Dst: exit
      Src: /src/frr/lib/vty.c:3431,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3410
    functionDepth: 1
    functionLinenumber: 3410
    functionLinenumberEnd: 3434
    functionName: vty_save_cwd
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - chdir
    - exit
    - flog_err_sys
    - getcwd
    linkageType: ''
    returnType: void
    signature: void vty_save_cwd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3439
      start: 3436
    functionDepth: 0
    functionLinenumber: 3436
    functionLinenumberEnd: 3439
    functionName: vty_get_cwd
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *vty_get_cwd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3444
      start: 3441
    functionDepth: 0
    functionLinenumber: 3441
    functionLinenumberEnd: 3444
    functionName: vty_shell
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vty_shell(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3449
      start: 3446
    functionDepth: 0
    functionLinenumber: 3446
    functionLinenumberEnd: 3449
    functionName: vty_shell_serv
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vty_shell_serv(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3454
      start: 3451
    functionDepth: 0
    functionLinenumber: 3451
    functionLinenumberEnd: 3454
    functionName: vty_init_vtysh
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vty_init_vtysh(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:3466,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3475,1
    - Dst: mgmt_fe_client_session_count
      Src: /src/frr/lib/vty.c:3475,1
    - Dst: frr_vty_serv_start
      Src: /src/frr/lib/vty.c:3481,1
    - Dst: frr_vty_serv_stop
      Src: /src/frr/lib/vty.c:3483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - client
    - usr_data
    - connected
    argTypes:
    - struct mgmt_fe_client*
    - uintptr_t
    - bool
    assertStmts:
    - condition: (mgmt_fe_client_session_count(client) == 0)
      pos:
        line_end: 3474
        line_start: 3474
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3484
      start: 3463
    functionDepth: 1
    functionLinenumber: 3463
    functionLinenumberEnd: 3484
    functionName: vty_mgmt_server_connected
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - frr_vty_serv_start
    - frr_vty_serv_stop
    - MGMTD_FE_CLIENT_DBG
    - mgmt_fe_client_session_count
    - assert
    linkageType: ''
    returnType: void
    signature: "void vty_mgmt_server_connected(struct mgmt_fe_client *client,\n\t\t\t\t
      \     uintptr_t usr_data, bool connected)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3499,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:3504,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3508,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:3514,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 7
    argNames:
    - client
    - usr_data
    - client_id
    - create
    - success
    - session_id
    - session_ctx
    argTypes:
    - struct mgmt_fe_client*
    - uintptr_t
    - uint64_t
    - bool
    - bool
    - uintptr_t
    - uintptr_t
    assertStmts:
    - condition: (session_id != 0)
      pos:
        line_end: 3507
        line_start: 3507
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3516
      start: 3489
    functionDepth: 2
    functionLinenumber: 3489
    functionLinenumberEnd: 3516
    functionName: vty_mgmt_session_notify
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - assert
    - vty_close
    - MGMTD_FE_CLIENT_DBG
    - zlog_err
    linkageType: ''
    returnType: void
    signature: "void vty_mgmt_session_notify(struct mgmt_fe_client *client,\n\t\t\t\t
      \   uintptr_t usr_data, uint64_t client_id,\n\t\t\t\t    bool create, bool success,\n\t\t\t\t
      \   uintptr_t session_id, uintptr_t session_ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_client_current_msg_short_circuit
      Src: /src/frr/lib/vty.c:3527,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3531,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3533,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:3536,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3545,1
    - Dst: strcmp
      Src: /src/frr/lib/vty.c:3545,1
    - Dst: vty_mgmt_resume_response
      Src: /src/frr/lib/vty.c:3546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 10
    argNames:
    - client
    - usr_data
    - client_id
    - session_id
    - session_ctx
    - req_id
    - lock_ds
    - success
    - ds_id
    - errmsg_if_any
    argTypes:
    - struct mgmt_fe_client*
    - uintptr_t
    - uint64_t
    - uintptr_t
    - uintptr_t
    - uint64_t
    - bool
    - bool
    - Mgmtd__DatastoreId
    - char*
    assertStmts:
    - condition: (ds_id == MGMTD_DS_CANDIDATE || ds_id == MGMTD_DS_RUNNING)
      pos:
        line_end: 3530
        line_start: 3530
        source_file: /src/frr/lib/vty.c
    - condition: (!strcmp(vty->mgmt_req_pending_cmd, "MESSAGE_LOCKDS_REQ"))
      pos:
        line_end: 3544
        line_start: 3544
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3548
      start: 3518
    functionDepth: 2
    functionLinenumber: 3518
    functionLinenumberEnd: 3548
    functionName: vty_mgmt_ds_lock_notified
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - strcmp
    - vty_mgmt_resume_response
    - zlog_err
    - MGMTD_FE_CLIENT_DBG
    - mgmt_fe_client_current_msg_short_circuit
    - assert
    linkageType: ''
    returnType: void
    signature: "void vty_mgmt_ds_lock_notified(struct mgmt_fe_client *client,\n\t\t\t\t
      \     uintptr_t usr_data, uint64_t client_id,\n\t\t\t\t      uintptr_t session_id,\n\t\t\t\t
      \     uintptr_t session_ctx, uint64_t req_id,\n\t\t\t\t      bool lock_ds, bool
      success,\n\t\t\t\t      Mgmtd__DatastoreId ds_id,\n\t\t\t\t      char *errmsg_if_any)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3561,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3564,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:3567,1
    - Dst: vty_mgmt_unlock_candidate_inline
      Src: /src/frr/lib/vty.c:3574,1
    - Dst: vty_mgmt_unlock_running_inline
      Src: /src/frr/lib/vty.c:3575,1
    - Dst: vty_mgmt_resume_response
      Src: /src/frr/lib/vty.c:3578,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 10
    argNames:
    - client
    - usr_data
    - client_id
    - session_id
    - session_ctx
    - req_id
    - success
    - ds_id
    - implicit_commit
    - errmsg_if_any
    argTypes:
    - struct mgmt_fe_client*
    - uintptr_t
    - uint64_t
    - uintptr_t
    - uintptr_t
    - uint64_t
    - bool
    - Mgmtd__DatastoreId
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3579
      start: 3550
    functionDepth: 2
    functionLinenumber: 3550
    functionLinenumberEnd: 3579
    functionName: vty_mgmt_set_config_result_notified
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vty_mgmt_unlock_candidate_inline
    - vty_mgmt_resume_response
    - zlog_err
    - MGMTD_FE_CLIENT_DBG
    - vty_mgmt_unlock_running_inline
    linkageType: ''
    returnType: void
    signature: "void vty_mgmt_set_config_result_notified(\n\tstruct mgmt_fe_client
      *client, uintptr_t usr_data, uint64_t client_id,\n\tuintptr_t session_id, uintptr_t
      session_ctx, uint64_t req_id,\n\tbool success, Mgmtd__DatastoreId ds_id, bool
      implicit_commit,\n\tchar *errmsg_if_any)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3592,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3595,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:3598,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3603,1
    - Dst: vty_mgmt_resume_response
      Src: /src/frr/lib/vty.c:3606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 11
    argNames:
    - client
    - usr_data
    - client_id
    - session_id
    - session_ctx
    - req_id
    - success
    - src_ds_id
    - dst_ds_id
    - validate_only
    - errmsg_if_any
    argTypes:
    - struct mgmt_fe_client*
    - uintptr_t
    - uint64_t
    - uintptr_t
    - uintptr_t
    - uint64_t
    - bool
    - Mgmtd__DatastoreId
    - Mgmtd__DatastoreId
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3607
      start: 3581
    functionDepth: 2
    functionLinenumber: 3581
    functionLinenumberEnd: 3607
    functionName: vty_mgmt_commit_config_result_notified
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_mgmt_resume_response
    - MGMTD_FE_CLIENT_DBG
    - vty_out
    - zlog_err
    linkageType: ''
    returnType: void
    signature: "void vty_mgmt_commit_config_result_notified(\n\tstruct mgmt_fe_client
      *client, uintptr_t usr_data, uint64_t client_id,\n\tuintptr_t session_id, uintptr_t
      session_ctx, uint64_t req_id,\n\tbool success, Mgmtd__DatastoreId src_ds_id,\n\tMgmtd__DatastoreId
      dst_ds_id, bool validate_only, char *errmsg_if_any)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3621,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3624,1
    - Dst: vty_mgmt_resume_response
      Src: /src/frr/lib/vty.c:3626,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/vty.c:3630,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3636,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3640,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3644,1
    - Dst: vty_mgmt_resume_response
      Src: /src/frr/lib/vty.c:3645,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 12
    argNames:
    - client
    - usr_data
    - client_id
    - session_id
    - session_ctx
    - req_id
    - success
    - ds_id
    - yang_data
    - num_data
    - next_key
    - errmsg_if_any
    argTypes:
    - struct mgmt_fe_client*
    - uintptr_t
    - uint64_t
    - uintptr_t
    - uintptr_t
    - uint64_t
    - bool
    - Mgmtd__DatastoreId
    - Mgmtd__YangData**
    - size_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3649
      start: 3609
    functionDepth: 2
    functionLinenumber: 3609
    functionLinenumberEnd: 3649
    functionName: vty_mgmt_get_data_result_notified
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_mgmt_resume_response
    - MGMTD_FE_CLIENT_DBG
    - vty_out
    - zlog_err
    linkageType: ''
    returnType: int
    signature: "int vty_mgmt_get_data_result_notified(\n\tstruct mgmt_fe_client *client,
      uintptr_t usr_data, uint64_t client_id,\n\tuintptr_t session_id, uintptr_t session_ctx,
      uint64_t req_id,\n\tbool success, Mgmtd__DatastoreId ds_id, Mgmtd__YangData
      **yang_data,\n\tsize_t num_data, int next_key, char *errmsg_if_any)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:3664,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3665,1
    - Dst: snprintf
      Src: /src/frr/lib/vty.c:3666,1
    - Dst: frr_get_progname
      Src: /src/frr/lib/vty.c:3666,1
    - Dst: getpid
      Src: /src/frr/lib/vty.c:3667,1
    - Dst: mgmt_fe_client_create
      Src: /src/frr/lib/vty.c:3668,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (vty_master)
      pos:
        line_end: 3663
        line_start: 3663
        source_file: /src/frr/lib/vty.c
    - condition: (!mgmt_fe_client)
      pos:
        line_end: 3664
        line_start: 3664
        source_file: /src/frr/lib/vty.c
    - condition: (mgmt_fe_client)
      pos:
        line_end: 3668
        line_start: 3668
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3670
      start: 3660
    functionDepth: 1
    functionLinenumber: 3660
    functionLinenumberEnd: 3670
    functionName: vty_init_mgmt_fe
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached:
    - snprintf
    - getpid
    - frr_get_progname
    - mgmt_fe_client_create
    - assert
    linkageType: ''
    returnType: void
    signature: void vty_init_mgmt_fe(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3675
      start: 3672
    functionDepth: 0
    functionLinenumber: 3672
    functionLinenumberEnd: 3675
    functionName: vty_mgmt_fe_enabled
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool vty_mgmt_fe_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_mgmt_fe_enabled
      Src: /src/frr/lib/vty.c:3679,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3680
      start: 3677
    functionDepth: 1
    functionLinenumber: 3677
    functionLinenumberEnd: 3680
    functionName: vty_mgmt_should_process_cli_apply_changes
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - vty_mgmt_fe_enabled
    linkageType: ''
    returnType: bool
    signature: bool vty_mgmt_should_process_cli_apply_changes(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:3685,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3686,1
    - Dst: mgmt_fe_send_lockds_req
      Src: /src/frr/lib/vty.c:3689,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3691,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3693,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - vty
    - ds_id
    - lock
    - scok
    argTypes:
    - struct vty*
    - Mgmtd__DatastoreId
    - bool
    - bool
    assertStmts:
    - condition: (mgmt_fe_client)
      pos:
        line_end: 3684
        line_start: 3684
        source_file: /src/frr/lib/vty.c
    - condition: (vty->mgmt_session_id)
      pos:
        line_end: 3685
        line_start: 3685
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3702
      start: 3682
    functionDepth: 2
    functionLinenumber: 3682
    functionLinenumberEnd: 3702
    functionName: vty_mgmt_send_lockds_req
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 4
    functionsReached:
    - zlog_err
    - mgmt_fe_send_lockds_req
    - vty_out
    - assert
    linkageType: ''
    returnType: int
    signature: "int vty_mgmt_send_lockds_req(struct vty *vty, Mgmtd__DatastoreId ds_id,\n\t\t\t
      \    bool lock, bool scok)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/vty.c:3719,1
    - Dst: assert
      Src: /src/frr/lib/vty.c:3724,1
    - Dst: vty_mgmt_lock_candidate_inline
      Src: /src/frr/lib/vty.c:3733,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3734,1
    - Dst: vty_mgmt_lock_running_inline
      Src: /src/frr/lib/vty.c:3737,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3738,1
    - Dst: vty_mgmt_unlock_candidate_inline
      Src: /src/frr/lib/vty.c:3740,1
    - Dst: mgmt_yang_data_init
      Src: /src/frr/lib/vty.c:3746,1
    - Dst: mgmt_yang_data_value_init
      Src: /src/frr/lib/vty.c:3749,1
    - Dst: mgmt_yang_cfg_data_req_init
      Src: /src/frr/lib/vty.c:3759,1
    - Dst: assertf
      Src: /src/frr/lib/vty.c:3781,1
    - Dst: abort
      Src: /src/frr/lib/vty.c:3785,1
    - Dst: mgmt_fe_send_setcfg_req
      Src: /src/frr/lib/vty.c:3794,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3798,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3799,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 2
    argNames:
    - vty
    - implicit_commit
    argTypes:
    - struct vty*
    - bool
    assertStmts:
    - condition: (!vty->mgmt_num_pending_setcfg)
      pos:
        line_end: 3718
        line_start: 3718
        source_file: /src/frr/lib/vty.c
    - condition: (mgmt_fe_client && vty->mgmt_client_id && vty->mgmt_session_id)
      pos:
        line_end: 3723
        line_start: 3723
        source_file: /src/frr/lib/vty.c
    constantsTouched: []
    func_position:
      end: 3806
      start: 3704
    functionDepth: 2
    functionLinenumber: 3704
    functionLinenumberEnd: 3806
    functionName: vty_mgmt_send_config_data
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - mgmt_yang_data_init
    - vty_out
    - vty_mgmt_unlock_candidate_inline
    - mgmt_yang_cfg_data_req_init
    - vty_mgmt_lock_running_inline
    - assertf
    - zlog_err
    - abort
    - vty_mgmt_lock_candidate_inline
    - mgmt_fe_send_setcfg_req
    - mgmt_yang_data_value_init
    - assert
    linkageType: ''
    returnType: int
    signature: int vty_mgmt_send_config_data(struct vty *vty, bool implicit_commit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_send_commitcfg_req
      Src: /src/frr/lib/vty.c:3812,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3816,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3818,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - validate_only
    - abort
    argTypes:
    - struct vty*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3827
      start: 3808
    functionDepth: 2
    functionLinenumber: 3808
    functionLinenumberEnd: 3827
    functionName: vty_mgmt_send_commit_config
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - zlog_err
    - vty_out
    - mgmt_fe_send_commitcfg_req
    linkageType: ''
    returnType: int
    signature: int vty_mgmt_send_commit_config(struct vty *vty, bool validate_only,
      bool abort)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_yang_get_data_req_init
      Src: /src/frr/lib/vty.c:3841,1
    - Dst: mgmt_yang_data_init
      Src: /src/frr/lib/vty.c:3842,1
    - Dst: mgmt_fe_send_get_req
      Src: /src/frr/lib/vty.c:3849,1
    - Dst: zlog_err
      Src: /src/frr/lib/vty.c:3852,1
    - Dst: vty_out
      Src: /src/frr/lib/vty.c:3854,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - vty
    - is_config
    - datastore
    - xpath_list
    - num_req
    argTypes:
    - struct vty*
    - bool
    - Mgmtd__DatastoreId
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3861
      start: 3829
    functionDepth: 2
    functionLinenumber: 3829
    functionLinenumberEnd: 3861
    functionName: vty_mgmt_send_get_req
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 0
    functionsReached:
    - mgmt_yang_data_init
    - vty_out
    - zlog_err
    - mgmt_yang_get_data_req_init
    - mgmt_fe_send_get_req
    linkageType: ''
    returnType: int
    signature: "int vty_mgmt_send_get_req(struct vty *vty, bool is_config,\n\t\t\t
      \ Mgmtd__DatastoreId datastore, const char **xpath_list,\n\t\t\t  int num_req)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_save_cwd
      Src: /src/frr/lib/vty.c:3867,1
    - Dst: atexit
      Src: /src/frr/lib/vty.c:3871,1
    - Dst: install_node
      Src: /src/frr/lib/vty.c:3874,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3876,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3877,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3878,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3879,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3880,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3881,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3882,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3889,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3890,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3891,1
    - Dst: install_default
      Src: /src/frr/lib/vty.c:3893,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3894,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3895,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3896,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3897,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3898,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3899,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3900,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3901,1
    - Dst: install_element
      Src: /src/frr/lib/vty.c:3902,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 2
    argNames:
    - master_thread
    - do_command_logging
    argTypes:
    - struct event_loop*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3903
      start: 3864
    functionDepth: 2
    functionLinenumber: 3864
    functionLinenumberEnd: 3903
    functionName: vty_init
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 25
    functionsReached:
    - install_node
    - install_default
    - atexit
    - install_element
    - vty_save_cwd
    linkageType: ''
    returnType: void
    signature: void vty_init(struct event_loop *master_thread, bool do_command_logging)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_client_destroy
      Src: /src/frr/lib/vty.c:3910,1
    - Dst: memset
      Src: /src/frr/lib/vty.c:3914,1
    - Dst: vty_reset
      Src: /src/frr/lib/vty.c:3916,1
    - Dst: vtys_fini
      Src: /src/frr/lib/vty.c:3919,1
    - Dst: vtys_init
      Src: /src/frr/lib/vty.c:3920,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3924,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3925,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:3927,1
    - Dst: vtys_fini
      Src: /src/frr/lib/vty.c:3930,1
    - Dst: vtys_init
      Src: /src/frr/lib/vty.c:3931,1
    - Dst: vty_serv_stop
      Src: /src/frr/lib/vty.c:3933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3934
      start: 3905
    functionDepth: 3
    functionLinenumber: 3905
    functionLinenumberEnd: 3934
    functionName: vty_terminate
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 8
    functionsReached:
    - vtys_fini
    - memset
    - buffer_reset
    - vty_reset
    - vtys_init
    - vty_serv_stop
    - mgmt_fe_client_destroy
    - vty_close
    linkageType: ''
    returnType: void
    signature: void vty_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3924,1
    - Dst: buffer_reset
      Src: /src/frr/lib/vty.c:3925,1
    - Dst: vty_close
      Src: /src/frr/lib/vty.c:3927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3928
      start: 3923
    functionDepth: 2
    functionLinenumber: 3923
    functionLinenumberEnd: 3928
    functionName: frr_each_safe
    functionSourceFile: /src/frr/lib/vty.c
    functionUses: 44
    functionsReached:
    - buffer_reset
    - vty_close
    linkageType: ''
    returnType: void
    signature: void frr_each_safe (vtys, vtysh_sessions, vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/frr/lib/zlog_5424.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - zte
    - nmsgs
    - low_space
    argTypes:
    - struct zlt_5424*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 149
    functionName: zlog_5424_bufsz
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - MAX
    linkageType: ''
    returnType: size_t
    signature: "size_t zlog_5424_bufsz(struct zlt_5424 *zte, size_t nmsgs,\n\t\t\t\t
      \    size_t *low_space)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_5424.c:178,1
    - Dst: zlog_msg_pid
      Src: /src/frr/lib/zlog_5424.c:181,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:183,1
    - Dst: zlog_msg_ts
      Src: /src/frr/lib/zlog_5424.c:184,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:185,1
    - Dst: cmd_hostname_get
      Src: /src/frr/lib/zlog_5424.c:185,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:190,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:198,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:200,1
    - Dst: zlog_msg_xref
      Src: /src/frr/lib/zlog_5424.c:202,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:206,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:208,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:210,1
    - Dst: bputch
      Src: /src/frr/lib/zlog_5424.c:215,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog_5424.c:221,1
    - Dst: zlog_msg_args
      Src: /src/frr/lib/zlog_5424.c:222,1
    - Dst: bputs
      Src: /src/frr/lib/zlog_5424.c:225,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:230,1
    - Dst: bputch
      Src: /src/frr/lib/zlog_5424.c:234,1
    - Dst: bputch
      Src: /src/frr/lib/zlog_5424.c:237,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 3
    argNames:
    - zte
    - msg
    - state
    argTypes:
    - struct zlt_5424*
    - struct zlog_msg*
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 257
    functionName: zlog_5424_one
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - bprintfrr
    - zlog_msg_prio
    - bputch
    - zlog_msg_text
    - zlog_msg_ts
    - zlog_msg_args
    - zlog_msg_xref
    - zlog_msg_pid
    - bputs
    linkageType: ''
    returnType: size_t
    signature: "size_t zlog_5424_one(struct zlt_5424 *zte, struct zlog_msg *msg,\n\t\t\t
      \   struct state *state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_5424.c:266,1
    - Dst: zlog_msg_pid
      Src: /src/frr/lib/zlog_5424.c:269,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:271,1
    - Dst: zlog_msg_ts_3164
      Src: /src/frr/lib/zlog_5424.c:272,1
    - Dst: bputch
      Src: /src/frr/lib/zlog_5424.c:274,1
    - Dst: bputs
      Src: /src/frr/lib/zlog_5424.c:275,1
    - Dst: cmd_hostname_get
      Src: /src/frr/lib/zlog_5424.c:275,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:277,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog_5424.c:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - zte
    - msg
    - state
    argTypes:
    - struct zlt_5424*
    - struct zlog_msg*
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 297
    functionName: zlog_3164_one
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - bprintfrr
    - bputch
    - zlog_msg_prio
    - zlog_msg_text
    - zlog_msg_ts_3164
    - zlog_msg_pid
    - bputs
    linkageType: ''
    returnType: size_t
    signature: "size_t zlog_3164_one(struct zlt_5424 *zte, struct zlog_msg *msg,\n\t\t\t
      \   struct state *state)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_5424.c:306,1
    - Dst: zlog_msg_pid
      Src: /src/frr/lib/zlog_5424.c:309,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:311,1
    - Dst: zlog_msg_ts
      Src: /src/frr/lib/zlog_5424.c:318,1
    - Dst: bputch
      Src: /src/frr/lib/zlog_5424.c:319,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:321,1
    - Dst: zlog_msg_xref
      Src: /src/frr/lib/zlog_5424.c:326,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:330,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:332,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:334,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog_5424.c:346,1
    - Dst: zlog_msg_args
      Src: /src/frr/lib/zlog_5424.c:347,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:358,1
    - Dst: bputs
      Src: /src/frr/lib/zlog_5424.c:363,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - zte
    - msg
    - state
    argTypes:
    - struct zlt_5424*
    - struct zlog_msg*
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 383
    functionName: zlog_journald_one
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputch
    - zlog_msg_prio
    - zlog_msg_text
    - zlog_msg_ts
    - zlog_msg_args
    - zlog_msg_xref
    - zlog_msg_pid
    - bputs
    linkageType: ''
    returnType: size_t
    signature: "size_t zlog_journald_one(struct zlt_5424 *zte, struct zlog_msg *msg,\n\t\t\t\tstruct
      state *state)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_5424_one
      Src: /src/frr/lib/zlog_5424.c:390,1
    - Dst: zlog_3164_one
      Src: /src/frr/lib/zlog_5424.c:393,1
    - Dst: zlog_journald_one
      Src: /src/frr/lib/zlog_5424.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - zte
    - msg
    - state
    argTypes:
    - struct zlt_5424*
    - struct zlog_msg*
    - struct state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 398
    functionName: zlog_one
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - zlog_3164_one
    - zlog_journald_one
    - zlog_5424_one
    linkageType: ''
    returnType: size_t
    signature: "size_t zlog_one(struct zlt_5424 *zte, struct zlog_msg *msg,\n\t\t
      \      struct state *state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/zlog_5424.c:408,1
    - Dst: monotime
      Src: /src/frr/lib/zlog_5424.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - zte
    - count
    argTypes:
    - struct zlt_5424*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 415
    functionName: zlog_5424_err
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - atomic_fetch_add_explicit
    - monotime
    linkageType: ''
    returnType: void
    signature: void zlog_5424_err(struct zlt_5424 *zte, size_t count)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/zlog_5424.c:421,1
    - Dst: MIN
      Src: /src/frr/lib/zlog_5424.c:423,1
    - Dst: zlog_5424_bufsz
      Src: /src/frr/lib/zlog_5424.c:430,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_5424.c:441,1
    - Dst: memset
      Src: /src/frr/lib/zlog_5424.c:443,1
    - Dst: array_size
      Src: /src/frr/lib/zlog_5424.c:445,1
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_5424.c:453,1
    - Dst: zlog_one
      Src: /src/frr/lib/zlog_5424.c:460,1
    - Dst: sendmmsg
      Src: /src/frr/lib/zlog_5424.c:483,1
    - Dst: zlog_5424_err
      Src: /src/frr/lib/zlog_5424.c:489,1
    - Dst: writev
      Src: /src/frr/lib/zlog_5424.c:493,1
    - Dst: sendmsg
      Src: /src/frr/lib/zlog_5424.c:497,1
    - Dst: zlog_5424_err
      Src: /src/frr/lib/zlog_5424.c:501,1
    - Dst: zlog_5424_err
      Src: /src/frr/lib/zlog_5424.c:503,1
    - Dst: zlog_one
      Src: /src/frr/lib/zlog_5424.c:538,1
    - Dst: assert
      Src: /src/frr/lib/zlog_5424.c:539,1
    - Dst: writev
      Src: /src/frr/lib/zlog_5424.c:542,1
    - Dst: sendmsg
      Src: /src/frr/lib/zlog_5424.c:545,1
    - Dst: zlog_5424_err
      Src: /src/frr/lib/zlog_5424.c:549,1
    - Dst: zlog_5424_err
      Src: /src/frr/lib/zlog_5424.c:551,1
    - Dst: assert
      Src: /src/frr/lib/zlog_5424.c:559,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 68
    argCount: 3
    argNames:
    - zt
    - msgs
    - nmsgs
    argTypes:
    - struct zlog_target*
    - struct zlog_msg*[]
    - size_t
    assertStmts:
    - condition: (need == 0)
      pos:
        line_end: 538
        line_start: 538
        source_file: /src/frr/lib/zlog_5424.c
    - condition: (state.iov == iov)
      pos:
        line_end: 558
        line_start: 558
        source_file: /src/frr/lib/zlog_5424.c
    constantsTouched: []
    func_position:
      end: 560
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 560
    functionName: zlog_5424
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - MIN
    - zlog_5424_bufsz
    - zlog_msg_prio
    - memset
    - container_of
    - zlog_one
    - atomic_load_explicit
    - array_size
    - sendmsg
    - zlog_5424_err
    - writev
    - assert
    - sendmmsg
    linkageType: ''
    returnType: void
    signature: "void zlog_5424(struct zlog_target *zt, struct zlog_msg *msgs[],\n\t\t
      \     size_t nmsgs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/zlog_5424.c:600,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - ts
    - res
    argTypes:
    - time_t
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 609
    functionName: gmtime_assafe
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - array_size
    linkageType: ''
    returnType: void
    signature: void gmtime_assafe(time_t ts, struct tm *res)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/zlog_5424.c:622,1
    - Dst: getpid
      Src: /src/frr/lib/zlog_5424.c:631,1
    - Dst: gmtime_assafe
      Src: /src/frr/lib/zlog_5424.c:636,1
    - Dst: time
      Src: /src/frr/lib/zlog_5424.c:636,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:637,1
    - Dst: gmtime_assafe
      Src: /src/frr/lib/zlog_5424.c:652,1
    - Dst: time
      Src: /src/frr/lib/zlog_5424.c:652,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:653,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog_5424.c:661,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_5424.c:684,1
    - Dst: writev
      Src: /src/frr/lib/zlog_5424.c:687,1
    - Dst: sendmsg
      Src: /src/frr/lib/zlog_5424.c:695,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 3
    argNames:
    - zt
    - text
    - len
    argTypes:
    - struct zlog_target*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 614
    functionDepth: 2
    functionLinenumber: 614
    functionLinenumberEnd: 697
    functionName: zlog_5424_sigsafe
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - gmtime_assafe
    - getpid
    - container_of
    - atomic_load_explicit
    - sendmsg
    - writev
    - time
    linkageType: ''
    returnType: void
    signature: "void zlog_5424_sigsafe(struct zlog_target *zt, const char *text,\n\t\t\t
      \     size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/zlog_5424.c:703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_5424*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 704
    functionName: zlog_5424_init
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 2
    functionsReached:
    - pthread_mutex_init
    linkageType: ''
    returnType: void
    signature: void zlog_5424_init(struct zlog_cfg_5424 *zcf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rcu_close
      Src: /src/frr/lib/zlog_5424.c:711,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_5424.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zlt
    argTypes:
    - struct zlt_5424*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 713
    functionName: zlog_5424_target_free
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - rcu_close
    - rcu_free
    linkageType: ''
    returnType: void
    signature: void zlog_5424_target_free(struct zlt_5424 *zlt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_5424.c:724,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_5424.c:725,1
    - Dst: zlog_5424_target_free
      Src: /src/frr/lib/zlog_5424.c:726,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/zlog_5424.c:728,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - zcf
    - keepopen
    argTypes:
    - struct zlog_cfg_5424*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 729
    functionName: zlog_5424_fini
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - zlog_target_replace
    - container_of
    - zlog_5424_target_free
    - pthread_mutex_destroy
    linkageType: ''
    returnType: void
    signature: void zlog_5424_fini(struct zlog_cfg_5424 *zcf, bool keepopen)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_clone
      Src: /src/frr/lib/zlog_5424.c:742,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_5424.c:744,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_5424.c:782,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_5424.c:786,1
    - Dst: rcu_close
      Src: /src/frr/lib/zlog_5424.c:788,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_5424.c:789,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 2
    argNames:
    - zcf
    - fd
    argTypes:
    - struct zlog_cfg_5424*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 731
    functionDepth: 1
    functionLinenumber: 731
    functionLinenumberEnd: 790
    functionName: zlog_5424_cycle
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - container_of
    - zlog_target_clone
    - rcu_free
    - zlog_target_replace
    - rcu_close
    linkageType: ''
    returnType: void
    signature: void zlog_5424_cycle(struct zlog_cfg_5424 *zcf, int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/zlog_5424.c:794,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/zlog_5424.c:795,1
    - Dst: read
      Src: /src/frr/lib/zlog_5424.c:800,1
    - Dst: event_add_read
      Src: /src/frr/lib/zlog_5424.c:803,1
    - Dst: zlog_warn
      Src: /src/frr/lib/zlog_5424.c:809,1
    - Dst: zlog_warn
      Src: /src/frr/lib/zlog_5424.c:812,1
    - Dst: zlog_5424_open
      Src: /src/frr/lib/zlog_5424.c:820,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_5424.c:822,1
    - Dst: zlog_5424_cycle
      Src: /src/frr/lib/zlog_5424.c:823,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 792
    functionDepth: 2
    functionLinenumber: 792
    functionLinenumberEnd: 825
    functionName: zlog_5424_reconnect
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - read
    - zlog_5424_cycle
    - frr_with_mutex
    - EVENT_FD
    - zlog_warn
    - EVENT_ARG
    - event_add_read
    - zlog_5424_open
    linkageType: ''
    returnType: void
    signature: void zlog_5424_reconnect(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/lib/zlog_5424.c:834,1
    - Dst: connect
      Src: /src/frr/lib/zlog_5424.c:838,1
    - Dst: close
      Src: /src/frr/lib/zlog_5424.c:841,1
    - Dst: getsockopt
      Src: /src/frr/lib/zlog_5424.c:847,1
    - Dst: setsockopt
      Src: /src/frr/lib/zlog_5424.c:854,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - suna
    - sock_type
    argTypes:
    - struct sockaddr_un*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 858
    functionName: zlog_5424_unix
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - connect
    - getsockopt
    - socket
    - close
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int zlog_5424_unix(struct sockaddr_un *suna, int sock_type)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/frr/lib/zlog_5424.c:883,1
    - Dst: getsockopt
      Src: /src/frr/lib/zlog_5424.c:886,1
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:900,1
    - Dst: mkfifo
      Src: /src/frr/lib/zlog_5424.c:901,1
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:902,1
    - Dst: open
      Src: /src/frr/lib/zlog_5424.c:918,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/zlog_5424.c:924,1
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:933,1
    - Dst: open
      Src: /src/frr/lib/zlog_5424.c:934,1
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:938,1
    - Dst: open
      Src: /src/frr/lib/zlog_5424.c:946,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/zlog_5424.c:952,1
    - Dst: memset
      Src: /src/frr/lib/zlog_5424.c:961,1
    - Dst: strlcpy
      Src: /src/frr/lib/zlog_5424.c:963,1
    - Dst: if
      Src: /src/frr/lib/zlog_5424.c:970,1
    - Dst: zlog_5424_unix
      Src: /src/frr/lib/zlog_5424.c:971,1
    - Dst: for
      Src: /src/frr/lib/zlog_5424.c:973,1
    - Dst: array_size
      Src: /src/frr/lib/zlog_5424.c:973,1
    - Dst: zlog_5424_unix
      Src: /src/frr/lib/zlog_5424.c:975,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/zlog_5424.c:986,1
    - Dst: getpeername
      Src: /src/frr/lib/zlog_5424.c:1004,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/zlog_5424.c:1006,1
    - Dst: frr_with_privs
      Src: /src/frr/lib/zlog_5424.c:1018,1
    - Dst: fchown
      Src: /src/frr/lib/zlog_5424.c:1019,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/zlog_5424.c:1022,1
    - Dst: assert
      Src: /src/frr/lib/zlog_5424.c:1030,1
    - Dst: event_add_read
      Src: /src/frr/lib/zlog_5424.c:1033,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/zlog_5424.c:1038,1
    - Dst: event_cancel
      Src: /src/frr/lib/zlog_5424.c:1056,1
    - Dst: zlog_5424_open
      Src: /src/frr/lib/zlog_5424.c:1059,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_5424.c:1061,1
    - Dst: zlog_5424_cycle
      Src: /src/frr/lib/zlog_5424.c:1062,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 89
    argCount: 2
    argNames:
    - zcf
    - sock_type
    argTypes:
    - struct zlog_cfg_5424*
    - int
    assertStmts:
    - condition: (zcf->master)
      pos:
        line_end: 1029
        line_start: 1029
        source_file: /src/frr/lib/zlog_5424.c
    constantsTouched: []
    func_position:
      end: 1065
      start: 860
    functionDepth: 2
    functionLinenumber: 860
    functionLinenumberEnd: 1065
    functionName: zlog_5424_open
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 2
    functionsReached:
    - getpeername
    - open
    - fchown
    - zlog_5424_unix
    - umask
    - mkfifo
    - frr_with_mutex
    - memset
    - event_add_timer_msec
    - frr_with_privs
    - array_size
    - if
    - flog_err_sys
    - for
    - assert
    - zlog_5424_cycle
    - strlcpy
    - event_add_read
    - getsockopt
    - event_cancel
    - zlog_5424_open
    - dup
    linkageType: ''
    returnType: int
    signature: int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:900,1
    - Dst: mkfifo
      Src: /src/frr/lib/zlog_5424.c:901,1
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 897
    functionDepth: 0
    functionLinenumber: 897
    functionLinenumberEnd: 903
    functionName: frr_with_privs
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 5
    functionsReached:
    - mkfifo
    - umask
    linkageType: ''
    returnType: void
    signature: void frr_with_privs (lib_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:933,1
    - Dst: open
      Src: /src/frr/lib/zlog_5424.c:934,1
    - Dst: umask
      Src: /src/frr/lib/zlog_5424.c:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 939
    functionName: frr_with_privs
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 5
    functionsReached:
    - umask
    - open
    linkageType: ''
    returnType: void
    signature: void frr_with_privs (lib_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/lib/zlog_5424.c:946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 945
    functionDepth: 0
    functionLinenumber: 945
    functionLinenumberEnd: 948
    functionName: frr_with_privs
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 5
    functionsReached:
    - open
    linkageType: ''
    returnType: void
    signature: void frr_with_privs (lib_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_5424.c:1070,1
    - Dst: zlog_5424_cycle
      Src: /src/frr/lib/zlog_5424.c:1072,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_5424*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1068
    functionDepth: 2
    functionLinenumber: 1068
    functionLinenumberEnd: 1076
    functionName: zlog_5424_apply_meta
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 1
    functionsReached:
    - zlog_5424_cycle
    - frr_with_mutex
    linkageType: ''
    returnType: bool
    signature: bool zlog_5424_apply_meta(struct zlog_cfg_5424 *zcf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_5424.c:1084,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 5
    argNames:
    - zcf
    - lost_msgs
    - last_errno
    - stale_errno
    - err_ts
    argTypes:
    - struct zlog_cfg_5424*
    - size_t*
    - int*
    - bool*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1078
    functionDepth: 1
    functionLinenumber: 1078
    functionLinenumberEnd: 1093
    functionName: zlog_5424_state
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: void
    signature: "void zlog_5424_state(struct zlog_cfg_5424 *zcf, size_t *lost_msgs,\n\t\t
      \    int *last_errno, bool *stale_errno, struct timeval *err_ts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_5424.c:1105,1
    - Dst: event_cancel
      Src: /src/frr/lib/zlog_5424.c:1109,1
    - Dst: zlog_5424_open
      Src: /src/frr/lib/zlog_5424.c:1121,1
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/zlog_5424.c:1125,1
    - Dst: XCALLOC
      Src: /src/frr/lib/zlog_5424.c:1130,1
    - Dst: rcu_close
      Src: /src/frr/lib/zlog_5424.c:1131,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_5424.c:1132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_5424*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1100
    functionDepth: 3
    functionLinenumber: 1100
    functionLinenumberEnd: 1135
    functionName: zlog_5424_rotate
    functionSourceFile: /src/frr/lib/zlog_5424.c
    functionUses: 0
    functionsReached:
    - frr_with_mutex
    - XCALLOC
    - event_cancel
    - rcu_free
    - atomic_exchange_explicit
    - rcu_close
    - zlog_5424_open
    linkageType: ''
    returnType: bool
    signature: bool zlog_5424_rotate(struct zlog_cfg_5424 *zcf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: IS_IPADDR_NONE
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_IPADDR_NONE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: IS_IPADDR_V4
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_IPADDR_V4(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: IS_IPADDR_V6
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_IPADDR_V6(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: SET_IPADDR_V4
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_IPADDR_V4(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: SET_IPADDR_V6
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_IPADDR_V6(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: IPADDRSZ
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPADDRSZ(p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/ipaddr.h:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ipaddr*
    assertStmts:
    - condition: (!"Reached end of function where we should never hit")
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/frr/lib/ipaddr.h
    constantsTouched: []
    func_position:
      end: 62
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 62
    functionName: ipaddr_family
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int ipaddr_family(const struct ipaddr *ip)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/ipaddr.h:68,1
    - Dst: inet_pton
      Src: /src/frr/lib/ipaddr.h:70,1
    - Dst: inet_pton
      Src: /src/frr/lib/ipaddr.h:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - str
    - ip
    argTypes:
    - char*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 84
    functionName: str2ipaddr
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 3
    functionsReached:
    - inet_pton
    - memset
    linkageType: ''
    returnType: int
    signature: int str2ipaddr(const char *str, struct ipaddr *ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/ipaddr.h:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ip
    - buf
    - size
    argTypes:
    - struct ipaddr*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: ipaddr2str
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 22
    functionsReached:
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: char *ipaddr2str(const struct ipaddr *ip, char *buf, int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: IS_MAPPED_IPV6
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MAPPED_IPV6(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/lib/ipaddr.h:110,1
    - Dst: memset
      Src: /src/frr/lib/ipaddr.h:112,1
    - Dst: memcpy
      Src: /src/frr/lib/ipaddr.h:113,1
    - Dst: memcpy
      Src: /src/frr/lib/ipaddr.h:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - in6
    - in
    argTypes:
    - struct in6_addr*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 115
    functionName: ipv4_to_ipv4_mapped_ipv6
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 5
    functionsReached:
    - htonl
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void ipv4_to_ipv4_mapped_ipv6(struct in6_addr *in6,\n\t\t\t\t\t    struct
      in_addr in)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/ipaddr.h:123,1
    - Dst: memcpy
      Src: /src/frr/lib/ipaddr.h:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - in6
    - in
    argTypes:
    - struct in6_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: ipv4_mapped_ipv6_to_ipv4
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 7
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void ipv4_mapped_ipv6_to_ipv4(const struct in6_addr *in6,\n\t\t\t\t\t
      \   struct in_addr *in)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/ipaddr.h:139,1
    - Dst: ntohl
      Src: /src/frr/lib/ipaddr.h:140,1
    - Dst: memcmp
      Src: /src/frr/lib/ipaddr.h:145,1
    - Dst: assert
      Src: /src/frr/lib/ipaddr.h:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ipaddr*
    - struct ipaddr*
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/frr/lib/ipaddr.h
    constantsTouched: []
    func_position:
      end: 152
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 152
    functionName: ipaddr_cmp
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 7
    functionsReached:
    - assert
    - ntohl
    - memcmp
    linkageType: ''
    returnType: int
    signature: int ipaddr_cmp(const struct ipaddr *a, const struct ipaddr *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/lib/ipaddr.h:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ip
    argTypes:
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: ipaddr_is_zero
    functionSourceFile: /src/frr/lib/ipaddr.h
    functionUses: 1
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    linkageType: ''
    returnType: bool
    signature: bool ipaddr_is_zero(const struct ipaddr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - vty
    - node
    - id
    argTypes:
    - struct vty*
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: vty_push_context
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vty_push_context(struct vty *vty, int node, uint64_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodeval
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 250
    functionName: VTY_PUSH_CONTEXT
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_PUSH_CONTEXT(nodeval, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nodeval
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 251
    functionName: VTY_PUSH_CONTEXT_NULL
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_PUSH_CONTEXT_NULL(nodeval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodeval
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: VTY_PUSH_CONTEXT_SUB
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_PUSH_CONTEXT_SUB(nodeval, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - structname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: VTY_GET_CONTEXT
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_GET_CONTEXT(structname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - structname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 263
    functionName: VTY_GET_CONTEXT_SUB
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_GET_CONTEXT_SUB(structname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 272
    functionName: VTY_CHECK_CONTEXT
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_CHECK_CONTEXT(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - structname
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: VTY_DECLVAR_CONTEXT
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_DECLVAR_CONTEXT(structname, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - structname
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 280
    functionName: VTY_DECLVAR_CONTEXT_SUB
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_DECLVAR_CONTEXT_SUB(structname, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - structname
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 285
    functionName: VTY_DECLVAR_INSTANCE_CONTEXT
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_DECLVAR_INSTANCE_CONTEXT(structname, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vrfptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 294
    functionName: VTY_DECLVAR_CONTEXT_VRF
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_DECLVAR_CONTEXT_VRF(vrfptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nodeval
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 308
    functionName: VTY_PUSH_XPATH
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VTY_PUSH_XPATH(nodeval, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 347
    functionName: IS_DIRECTORY_SEP
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_DIRECTORY_SEP(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_get_cli_mode
      Src: /src/frr/lib/vty.h:427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: vty_needs_implicit_commit
    functionSourceFile: /src/frr/lib/vty.h
    functionUses: 0
    functionsReached:
    - frr_get_cli_mode
    linkageType: ''
    returnType: bool
    signature: bool vty_needs_implicit_commit(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/ferr.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: ferr_free
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ferr_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_create
      Src: /src/frr/lib/ferr.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: err_key_init
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - pthread_key_create
    linkageType: ''
    returnType: void
    signature: void err_key_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_delete
      Src: /src/frr/lib/ferr.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: err_key_fini
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - pthread_key_delete
    linkageType: ''
    returnType: void
    signature: void err_key_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: ferr_hash_cmp
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ferr_hash_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: ferr_hash_key
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ferr_hash_key(const void *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/lib/ferr.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ref
    argTypes:
    - struct log_ref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 82
    functionName: log_ref_add
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 9
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: void log_ref_add(struct log_ref *ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/lib/ferr.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: (&refs_mtx)
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&refs_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/lib/ferr.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - code
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 95
    functionName: log_ref_get
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct log_ref
    signature: struct log_ref *log_ref_get(uint32_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/lib/ferr.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: (&refs_mtx)
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&refs_mtx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/ferr.c:105,1
    - Dst: list_new
      Src: /src/frr/lib/ferr.c:108,1
    - Dst: hash_to_list
      Src: /src/frr/lib/ferr.c:108,1
    - Dst: log_ref_get
      Src: /src/frr/lib/ferr.c:112,1
    - Dst: json_object_free
      Src: /src/frr/lib/ferr.c:115,1
    - Dst: list_delete
      Src: /src/frr/lib/ferr.c:116,1
    - Dst: listnode_add
      Src: /src/frr/lib/ferr.c:119,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/ferr.c:122,1
    - Dst: snprintf
      Src: /src/frr/lib/ferr.c:126,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/ferr.c:127,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/ferr.c:128,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/ferr.c:129,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/ferr.c:131,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/ferr.c:133,1
    - Dst: snprintf
      Src: /src/frr/lib/ferr.c:138,1
    - Dst: memset
      Src: /src/frr/lib/ferr.c:140,1
    - Dst: strlen
      Src: /src/frr/lib/ferr.c:140,1
    - Dst: strlen
      Src: /src/frr/lib/ferr.c:141,1
    - Dst: vty_out
      Src: /src/frr/lib/ferr.c:143,1
    - Dst: vty_out
      Src: /src/frr/lib/ferr.c:144,1
    - Dst: vty_out
      Src: /src/frr/lib/ferr.c:145,1
    - Dst: vty_json
      Src: /src/frr/lib/ferr.c:149,1
    - Dst: list_delete
      Src: /src/frr/lib/ferr.c:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 3
    argNames:
    - vty
    - code
    - json
    argTypes:
    - struct vty*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 151
    functionName: log_ref_display
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - strlen
    - list_delete
    - vty_out
    - snprintf
    - memset
    - ALL_LIST_ELEMENTS_RO
    - listnode_add
    - json_object_free
    - hash_to_list
    - list_new
    - json_object_string_add
    - json_object_object_add
    - log_ref_get
    - vty_json
    linkageType: ''
    returnType: void
    signature: void log_ref_display(struct vty *vty, uint32_t code, bool json)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/ferr.c:108,1
    - Dst: hash_to_list
      Src: /src/frr/lib/ferr.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: (&refs_mtx)
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_to_list
    - list_new
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&refs_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/lib/ferr.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 178
    functionName: log_ref_init
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: void
    signature: void log_ref_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/lib/ferr.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: (&refs_mtx)
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_create
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&refs_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/ferr.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 185
    functionName: log_ref_fini
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void log_ref_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/ferr.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 184
    functionName: (&refs_mtx)
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&refs_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/ferr.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: log_ref_vty_init
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void log_ref_vty_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/frr/lib/ferr.c:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - errval
    argTypes:
    - ferr_r
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 199
    functionName: ferr_get_last
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - pthread_getspecific
    linkageType: ''
    returnType: struct ferr
    signature: struct ferr *ferr_get_last(ferr_r errval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/frr/lib/ferr.c:203,1
    - Dst: ferr_ok
      Src: /src/frr/lib/ferr.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 207
    functionName: ferr_clear
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - ferr_ok
    - pthread_getspecific
    linkageType: ''
    returnType: ferr_r
    signature: ferr_r ferr_clear(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/frr/lib/ferr.c:214,1
    - Dst: XCALLOC
      Src: /src/frr/lib/ferr.c:217,1
    - Dst: pthread_setspecific
      Src: /src/frr/lib/ferr.c:219,1
    - Dst: jhash
      Src: /src/frr/lib/ferr.c:227,1
    - Dst: strlen
      Src: /src/frr/lib/ferr.c:227,1
    - Dst: jhash
      Src: /src/frr/lib/ferr.c:228,1
    - Dst: strlen
      Src: /src/frr/lib/ferr.c:228,1
    - Dst: snprintf
      Src: /src/frr/lib/ferr.c:232,1
    - Dst: vsnprintf
      Src: /src/frr/lib/ferr.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 8
    argNames:
    - file
    - line
    - func
    - kind
    - pathname
    - errno_val
    - text
    - va
    argTypes:
    - char*
    - int
    - char*
    - enum ferr_kind
    - char*
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 239
    functionName: ferr_set_va
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - XCALLOC
    - vsnprintf
    - pthread_getspecific
    - jhash
    - pthread_setspecific
    linkageType: ''
    returnType: ferr_r
    signature: "ferr_r ferr_set_va(const char *file, int line, const char *func,\n\t\t\t
      \ enum ferr_kind kind, const char *pathname,\n\t\t\t  int errno_val, const char
      *text, va_list va)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/ferr.c:246,1
    - Dst: ferr_set_va
      Src: /src/frr/lib/ferr.c:247,1
    - Dst: va_end
      Src: /src/frr/lib/ferr.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - file
    - line
    - func
    - kind
    - text
    argTypes:
    - char*
    - int
    - char*
    - enum ferr_kind
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: ferr_set_internal
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - ferr_set_va
    linkageType: ''
    returnType: ferr_r
    signature: "ferr_r ferr_set_internal(const char *file, int line, const char *func,\n\t\t\t
      enum ferr_kind kind, const char *text, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/ferr.c:258,1
    - Dst: ferr_set_va
      Src: /src/frr/lib/ferr.c:259,1
    - Dst: va_end
      Src: /src/frr/lib/ferr.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - file
    - line
    - func
    - kind
    - pathname
    - errno_val
    - text
    argTypes:
    - char*
    - int
    - char*
    - enum ferr_kind
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 262
    functionName: ferr_set_internal_ext
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - ferr_set_va
    linkageType: ''
    returnType: ferr_r
    signature: "ferr_r ferr_set_internal_ext(const char *file, int line, const char
      *func,\n\t\t\t     enum ferr_kind kind, const char *pathname,\n\t\t\t     int
      errno_val, const char *text, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ferr_get_last
      Src: /src/frr/lib/ferr.c:268,1
    - Dst: va_start
      Src: /src/frr/lib/ferr.c:271,1
    - Dst: vsnprintf
      Src: /src/frr/lib/ferr.c:272,1
    - Dst: va_end
      Src: /src/frr/lib/ferr.c:273,1
    - Dst: strstr
      Src: /src/frr/lib/ferr.c:275,1
    - Dst: vty_out
      Src: /src/frr/lib/ferr.c:277,1
    - Dst: vty_out
      Src: /src/frr/lib/ferr.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - err
    - msg
    argTypes:
    - struct vty*
    - ferr_r
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 285
    functionName: vty_print_error
    functionSourceFile: /src/frr/lib/ferr.c
    functionUses: 0
    functionsReached:
    - strstr
    - ferr_get_last
    - vty_out
    - vsnprintf
    - va_start
    - va_end
    linkageType: ''
    returnType: void
    signature: void vty_print_error(struct vty *vty, ferr_r err, const char *msg,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/pullwr.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - tm
    - fd
    - arg
    argTypes:
    - struct event_loop*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 60
    functionName: _pullwr_new
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct pullwr
    signature: "struct pullwr *_pullwr_new(struct event_loop *tm, int fd, void *arg,\n\t\t\t
      \  void (*fill)(void *, struct pullwr *),\n\t\t\t   void (*err)(void *, struct
      pullwr *, bool))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/lib/pullwr.c:64,1
    - Dst: XFREE
      Src: /src/frr/lib/pullwr.c:66,1
    - Dst: XFREE
      Src: /src/frr/lib/pullwr.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pullwr
    argTypes:
    - struct pullwr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: pullwr_del
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pullwr_del(struct pullwr *pullwr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - pullwr
    - max_spin_usec
    - write_threshold
    argTypes:
    - struct pullwr*
    - int64_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: pullwr_cfg
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pullwr_cfg(struct pullwr *pullwr, int64_t max_spin_usec,\n\t\tsize_t
      write_threshold)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer
      Src: /src/frr/lib/pullwr.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pullwr
    argTypes:
    - struct pullwr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 83
    functionName: pullwr_bump
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void pullwr_bump(struct pullwr *pullwr)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - pullwr
    - iov
    argTypes:
    - struct pullwr*
    - struct iovec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 105
    functionName: pullwr_iov
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t pullwr_iov(struct pullwr *pullwr, struct iovec *iov)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/frr/lib/pullwr.c:123,1
    - Dst: XMALLOC
      Src: /src/frr/lib/pullwr.c:124,1
    - Dst: MAX
      Src: /src/frr/lib/pullwr.c:133,1
    - Dst: XMALLOC
      Src: /src/frr/lib/pullwr.c:134,1
    - Dst: pullwr_iov
      Src: /src/frr/lib/pullwr.c:137,1
    - Dst: memcpy
      Src: /src/frr/lib/pullwr.c:139,1
    - Dst: memcpy
      Src: /src/frr/lib/pullwr.c:141,1
    - Dst: XFREE
      Src: /src/frr/lib/pullwr.c:145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - pullwr
    - need
    argTypes:
    - struct pullwr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 149
    functionName: pullwr_resize
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 0
    functionsReached:
    - pullwr_iov
    - XMALLOC
    - XFREE
    - MAX
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pullwr_resize(struct pullwr *pullwr, size_t need)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pullwr_resize
      Src: /src/frr/lib/pullwr.c:153,1
    - Dst: memcpy
      Src: /src/frr/lib/pullwr.c:159,1
    - Dst: MIN
      Src: /src/frr/lib/pullwr.c:163,1
    - Dst: memcpy
      Src: /src/frr/lib/pullwr.c:165,1
    - Dst: memcpy
      Src: /src/frr/lib/pullwr.c:170,1
    - Dst: pullwr_bump
      Src: /src/frr/lib/pullwr.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - pullwr
    - data
    - len
    argTypes:
    - struct pullwr*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 176
    functionName: pullwr_write
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 1
    functionsReached:
    - MIN
    - memcpy
    - pullwr_resize
    - pullwr_bump
    linkageType: ''
    returnType: void
    signature: void pullwr_write(struct pullwr *pullwr, const void *data, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/pullwr.c:180,1
    - Dst: monotime
      Src: /src/frr/lib/pullwr.c:187,1
    - Dst: struct pullwr*::fill
      Src: /src/frr/lib/pullwr.c:195,1
    - Dst: monotime_since
      Src: /src/frr/lib/pullwr.c:200,1
    - Dst: pullwr_resize
      Src: /src/frr/lib/pullwr.c:210,1
    - Dst: pullwr_iov
      Src: /src/frr/lib/pullwr.c:214,1
    - Dst: assert
      Src: /src/frr/lib/pullwr.c:215,1
    - Dst: writev
      Src: /src/frr/lib/pullwr.c:217,1
    - Dst: struct pullwr*::err
      Src: /src/frr/lib/pullwr.c:221,1
    - Dst: struct pullwr*::err
      Src: /src/frr/lib/pullwr.c:226,1
    - Dst: event_add_write
      Src: /src/frr/lib/pullwr.c:239,1
    - Dst: pullwr_resize
      Src: /src/frr/lib/pullwr.c:246,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (niov)
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/frr/lib/pullwr.c
    constantsTouched: []
    func_position:
      end: 247
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 247
    functionName: pullwr_run
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 0
    functionsReached:
    - struct pullwr*::fill
    - struct pullwr*::err
    - pullwr_iov
    - event_add_write
    - monotime
    - pullwr_resize
    - monotime_since
    - EVENT_ARG
    - writev
    - assert
    linkageType: ''
    returnType: void
    signature: void pullwr_run(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ioctl
      Src: /src/frr/lib/pullwr.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - pullwr
    - total_written
    - pending
    - kernel_pending
    argTypes:
    - struct pullwr*
    - uint64_t*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 260
    functionName: pullwr_stats
    functionSourceFile: /src/frr/lib/pullwr.c
    functionUses: 0
    functionsReached:
    - ioctl
    linkageType: ''
    returnType: void
    signature: "void pullwr_stats(struct pullwr *pullwr, uint64_t *total_written,\n\t\t
      \ size_t *pending, size_t *kernel_pending)"
  - BBCount: 18
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 37
    argCount: 1
    argNames:
    - action
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 54
    functionName: seg6local_action2str
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *seg6local_action2str(uint32_t action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/srv6.c:64,1
    - Dst: strlcat
      Src: /src/frr/lib/srv6.c:65,1
    - Dst: strlcat
      Src: /src/frr/lib/srv6.c:66,1
    - Dst: strlen
      Src: /src/frr/lib/srv6.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - str
    - size
    - segs
    argTypes:
    - char*
    - size_t
    - struct seg6_segs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: snprintf_seg6_segs
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 0
    functionsReached:
    - strlcat
    - inet_ntop
    - strlen
    linkageType: ''
    returnType: int
    signature: "int snprintf_seg6_segs(char *str,\n\t\tsize_t size, const struct seg6_segs
      *segs)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/srv6.c:78,1
    - Dst: snprintfrr
      Src: /src/frr/lib/srv6.c:83,1
    - Dst: snprintfrr
      Src: /src/frr/lib/srv6.c:87,1
    - Dst: snprintf
      Src: /src/frr/lib/srv6.c:94,1
    - Dst: snprintf
      Src: /src/frr/lib/srv6.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 4
    argNames:
    - str
    - size
    - ctx
    - action
    argTypes:
    - char*
    - size_t
    - struct seg6local_context*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 109
    functionName: seg6local_context2str
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 1
    functionsReached:
    - snprintfrr
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *seg6local_context2str(char *str, size_t size,\n\t\t\t\t  const
      struct seg6local_context *ctx,\n\t\t\t\t  uint32_t action)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srv6_locator_chunk_free
      Src: /src/frr/lib/srv6.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: srv6_locator_chunk_list_free
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 0
    functionsReached:
    - srv6_locator_chunk_free
    linkageType: ''
    returnType: void
    signature: void srv6_locator_chunk_list_free(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/srv6.c:122,1
    - Dst: strlcpy
      Src: /src/frr/lib/srv6.c:123,1
    - Dst: list_new
      Src: /src/frr/lib/srv6.c:124,1
    - Dst: QOBJ_REG
      Src: /src/frr/lib/srv6.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 129
    functionName: srv6_locator_alloc
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - QOBJ_REG
    - list_new
    - XCALLOC
    linkageType: ''
    returnType: struct srv6_locator
    signature: struct srv6_locator *srv6_locator_alloc(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/srv6.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 138
    functionName: srv6_locator_chunk_alloc
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 3
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct srv6_locator_chunk
    signature: struct srv6_locator_chunk *srv6_locator_chunk_alloc(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/lib/srv6.c:143,1
    - Dst: list_delete
      Src: /src/frr/lib/srv6.c:144,1
    - Dst: XFREE
      Src: /src/frr/lib/srv6.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - locator
    argTypes:
    - struct srv6_locator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 148
    functionName: srv6_locator_free
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 1
    functionsReached:
    - QOBJ_UNREG
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void srv6_locator_free(struct srv6_locator *locator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/srv6.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - struct srv6_locator_chunk**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: srv6_locator_chunk_free
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 10
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void srv6_locator_chunk_free(struct srv6_locator_chunk **chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/srv6.c:159,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/srv6.c:160,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/srv6.c:161,1
    - Dst: zebra_route_string
      Src: /src/frr/lib/srv6.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - struct srv6_locator_chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 165
    functionName: srv6_locator_chunk_json
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - zebra_route_string
    - json_object_string_add
    - json_object_string_addf
    linkageType: ''
    returnType: json_object
    signature: json_object *srv6_locator_chunk_json(const struct srv6_locator_chunk
      *chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/srv6.c:172,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/srv6.c:175,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:178,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:182,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:185,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:189,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:193,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/srv6.c:196,1
    - Dst: zebra_route_string
      Src: /src/frr/lib/srv6.c:197,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:200,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - struct srv6_locator_chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 206
    functionName: srv6_locator_chunk_detailed_json
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_int_add
    - json_object_string_add
    - json_object_string_addf
    - zebra_route_string
    linkageType: ''
    returnType: json_object
    signature: 'json_object *

      srv6_locator_chunk_detailed_json(const struct srv6_locator_chunk *chunk)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/srv6.c:216,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/srv6.c:219,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/srv6.c:222,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:225,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:228,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:231,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:235,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/srv6.c:239,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/srv6.c:240,1
    - Dst: json_object_boolean_add
      Src: /src/frr/lib/srv6.c:243,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/srv6.c:247,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/srv6.c:248,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/srv6.c:249,1
    - Dst: srv6_locator_chunk_json
      Src: /src/frr/lib/srv6.c:250,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/srv6.c:251,1
    - Dst: srv6_locator_detailed_json
      Src: /src/frr/lib/srv6.c:257,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/srv6.c:265,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/srv6.c:268,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/srv6.c:271,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:274,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:277,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:280,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/srv6.c:288,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/srv6.c:292,1
    - Dst: json_object_boolean_add
      Src: /src/frr/lib/srv6.c:295,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/srv6.c:298,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/srv6.c:299,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/srv6.c:300,1
    - Dst: srv6_locator_chunk_detailed_json
      Src: /src/frr/lib/srv6.c:301,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/srv6.c:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - loc
    argTypes:
    - struct srv6_locator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 306
    functionName: srv6_locator_json
    functionSourceFile: /src/frr/lib/srv6.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - json_object_new_array
    - json_object_array_add
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - json_object_int_add
    - srv6_locator_chunk_detailed_json
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - srv6_locator_chunk_json
    - srv6_locator_detailed_json
    linkageType: ''
    returnType: json_object
    signature: json_object *srv6_locator_json(const struct srv6_locator *loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - matcher_rv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: MATCHER_ERROR
    functionSourceFile: /src/frr/lib/command_match.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MATCHER_ERROR(matcher_rv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/strlcpy.c:25,1
    - Dst: __builtin_expect
      Src: /src/frr/lib/strlcpy.c:27,1
    - Dst: memcpy
      Src: /src/frr/lib/strlcpy.c:37,1
    - Dst: memcpy
      Src: /src/frr/lib/strlcpy.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - dest
    - src
    - destsize
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 44
    functionName: strlcpy
    functionSourceFile: /src/frr/lib/strlcpy.c
    functionUses: 113
    functionsReached:
    - strlen
    - __builtin_expect
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: "size_t strlcpy(char *__restrict dest,\n\t       const char *__restrict
      src, size_t destsize)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_cmp
      Src: /src/frr/lib/srte.h:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - a_endpoint
    - b_endpoint
    - a_color
    - b_color
    argTypes:
    - struct ipaddr*
    - struct ipaddr*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 35
    functionName: sr_policy_compare
    functionSourceFile: /src/frr/lib/srte.h
    functionUses: 1
    functionsReached:
    - ipaddr_cmp
    linkageType: ''
    returnType: int
    signature: "int sr_policy_compare(const struct ipaddr *a_endpoint,\n\t\t\t\t    const
      struct ipaddr *b_endpoint,\n\t\t\t\t    uint32_t a_color, uint32_t b_color)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: STREAM_SIZE
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_SIZE(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: STREAM_WRITEABLE
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_WRITEABLE(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: STREAM_READABLE
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_READABLE(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - S1
    - ','
    - S2
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: STREAM_CONCAT_REMAIN
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_CONCAT_REMAIN(S1, S2, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: STREAM_DATA
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_DATA(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/stream.h:378,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.h:379,1
    - Dst: ntohl
      Src: /src/frr/lib/stream.h:381,1
    - Dst: ntohl
      Src: /src/frr/lib/stream.h:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - out
    argTypes:
    - uint8_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 384
    functionName: ptr_get_be64
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 1
    functionsReached:
    - ntohl
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *ptr_get_be64(const uint8_t *ptr, uint64_t *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/stream.h:390,1
    - Dst: ntohl
      Src: /src/frr/lib/stream.h:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - out
    argTypes:
    - uint8_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 393
    functionName: ptr_get_be32
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 15
    functionsReached:
    - ntohl
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *ptr_get_be32(const uint8_t *ptr, uint32_t *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/stream.h:399,1
    - Dst: ntohs
      Src: /src/frr/lib/stream.h:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - out
    argTypes:
    - uint8_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 403
    functionName: ptr_get_be16
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 3
    functionsReached:
    - ntohs
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *ptr_get_be16(uint8_t *ptr, uint16_t *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 427
    functionName: STREAM_GETC
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETC(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 435
    functionName: STREAM_GETW
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETW(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 443
    functionName: STREAM_GETL
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETL(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 454
    functionName: STREAM_GETF
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETF(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 462
    functionName: STREAM_GETQ
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GETQ(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - P
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 468
    functionName: STREAM_GET_IPADDR
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GET_IPADDR(S, P)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - P
    - ','
    - STR
    - ','
    - SIZE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 474
    functionName: STREAM_GET
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_GET(P, STR, SIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - STR
    - ','
    - SIZE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 480
    functionName: STREAM_FORWARD_GETP
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_FORWARD_GETP(STR, SIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - STR
    - ','
    - SIZE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 486
    functionName: STREAM_REWIND_GETP
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_REWIND_GETP(STR, SIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - STR
    - ','
    - SIZE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 492
    functionName: STREAM_FORWARD_ENDP
    functionSourceFile: /src/frr/lib/stream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_FORWARD_ENDP(STR, SIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sid
    - ','
    - str
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: sid2str
    functionSourceFile: /src/frr/lib/srv6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sid2str(sid, str, size)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - mode
    argTypes:
    - enum seg6_mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 149
    functionName: seg6_mode2str
    functionSourceFile: /src/frr/lib/srv6.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *seg6_mode2str(enum seg6_mode_t mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/srv6.h:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 161
    functionName: sid_same
    functionSourceFile: /src/frr/lib/srv6.h
    functionUses: 3
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool sid_same(\n\t\tconst struct in6_addr *a,\n\t\tconst struct in6_addr
      *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sid_same
      Src: /src/frr/lib/srv6.h:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 168
    functionName: sid_diff
    functionSourceFile: /src/frr/lib/srv6.h
    functionUses: 2
    functionsReached:
    - sid_same
    linkageType: ''
    returnType: bool
    signature: "bool sid_diff(\n\t\tconst struct in6_addr *a,\n\t\tconst struct in6_addr
      *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sid_same
      Src: /src/frr/lib/srv6.h:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 176
    functionName: sid_zero
    functionSourceFile: /src/frr/lib/srv6.h
    functionUses: 3
    functionsReached:
    - sid_same
    linkageType: ''
    returnType: bool
    signature: "bool sid_zero(\n\t\tconst struct in6_addr *a)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/srv6.h:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: sid_copy
    functionSourceFile: /src/frr/lib/srv6.h
    functionUses: 3
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void *sid_copy(struct in6_addr *dst,\n\t\tconst struct in6_addr *src)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/nexthop.c:51,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 53
    functionName: _nexthop_labels_cmp
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int _nexthop_labels_cmp(const struct nexthop *nh1,\n\t\t\t       const
      struct nexthop *nh2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/nexthop.c:75,1
    - Dst: memcmp
      Src: /src/frr/lib/nexthop.c:81,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 86
    functionName: _nexthop_srv6_cmp
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int _nexthop_srv6_cmp(const struct nexthop *nh1,\n\t\t\t     const
      struct nexthop *nh2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/lib/nexthop.c:96,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/lib/nexthop.c:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - type
    - addr1
    - addr2
    argTypes:
    - enum nexthop_types_t
    - union g_addr*
    - union g_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 109
    functionName: nexthop_g_addr_cmp
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_CMP
    - IPV6_ADDR_CMP
    linkageType: ''
    returnType: int
    signature: "int nexthop_g_addr_cmp(enum nexthop_types_t type, const union g_addr
      *addr1,\n\t\t       const union g_addr *addr2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/nexthop.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: _nexthop_gateway_cmp
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - nexthop_g_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int _nexthop_gateway_cmp(const struct nexthop *nh1,\n\t\t\t\tconst
      struct nexthop *nh2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/nexthop.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: _nexthop_source_cmp
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - nexthop_g_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int _nexthop_source_cmp(const struct nexthop *nh1,\n\t\t\t       const
      struct nexthop *nh2)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: _nexthop_gateway_cmp
      Src: /src/frr/lib/nexthop.c:149,1
    - Dst: _nexthop_gateway_cmp
      Src: /src/frr/lib/nexthop.c:155,1
    - Dst: _nexthop_source_cmp
      Src: /src/frr/lib/nexthop.c:180,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:185,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:188,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:189,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:192,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:193,1
    - Dst: memcmp
      Src: /src/frr/lib/nexthop.c:205,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 63
    argCount: 2
    argNames:
    - next1
    - next2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 210
    functionName: _nexthop_cmp_no_labels
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - _nexthop_gateway_cmp
    - CHECK_FLAG
    - _nexthop_source_cmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int _nexthop_cmp_no_labels(const struct nexthop *next1,\n\t\t\t\t
      \ const struct nexthop *next2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _nexthop_cmp_no_labels
      Src: /src/frr/lib/nexthop.c:216,1
    - Dst: _nexthop_labels_cmp
      Src: /src/frr/lib/nexthop.c:220,1
    - Dst: _nexthop_srv6_cmp
      Src: /src/frr/lib/nexthop.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - next1
    - next2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 212
    functionDepth: 4
    functionLinenumber: 212
    functionLinenumberEnd: 227
    functionName: nexthop_cmp
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 6
    functionsReached:
    - _nexthop_labels_cmp
    - _nexthop_cmp_no_labels
    - _nexthop_srv6_cmp
    linkageType: ''
    returnType: int
    signature: int nexthop_cmp(const struct nexthop *next1, const struct nexthop *next2)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/nexthop.c:271,1
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/nexthop.c:277,1
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/nexthop.c:298,1
    - Dst: memcmp
      Src: /src/frr/lib/nexthop.c:321,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 64
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 326
    functionName: nexthop_cmp_basic
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 1
    functionsReached:
    - memcmp
    - nexthop_g_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int nexthop_cmp_basic(const struct nexthop *nh1,\n\t\t      const
      struct nexthop *nh2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nh_type
    argTypes:
    - enum nexthop_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 341
    functionName: nexthop_type_to_str
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nexthop_type_to_str(enum nexthop_types_t nh_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _nexthop_labels_cmp
      Src: /src/frr/lib/nexthop.c:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 352
    functionName: nexthop_labels_match
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 1
    functionsReached:
    - _nexthop_labels_cmp
    linkageType: ''
    returnType: bool
    signature: bool nexthop_labels_match(const struct nexthop *nh1, const struct nexthop
      *nh2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/nexthop.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 373
    functionName: nexthop_new
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 8
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct nexthop
    signature: struct nexthop *nexthop_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_del_labels
      Src: /src/frr/lib/nexthop.c:378,1
    - Dst: nexthop_del_srv6_seg6local
      Src: /src/frr/lib/nexthop.c:379,1
    - Dst: nexthop_del_srv6_seg6
      Src: /src/frr/lib/nexthop.c:380,1
    - Dst: nexthops_free
      Src: /src/frr/lib/nexthop.c:382,1
    - Dst: XFREE
      Src: /src/frr/lib/nexthop.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 384
    functionName: nexthop_free
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 14
    functionsReached:
    - nexthop_del_srv6_seg6local
    - nexthop_del_srv6_seg6
    - nexthop_del_labels
    - XFREE
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: void nexthop_free(struct nexthop *nexthop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_free
      Src: /src/frr/lib/nexthop.c:393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 395
    functionName: nexthops_free
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 15
    functionsReached:
    - nexthop_free
    linkageType: ''
    returnType: void
    signature: void nexthops_free(struct nexthop *nexthop)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_cmp
      Src: /src/frr/lib/nexthop.c:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 397
    functionDepth: 5
    functionLinenumber: 397
    functionLinenumberEnd: 412
    functionName: nexthop_same
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 15
    functionsReached:
    - nexthop_cmp
    linkageType: ''
    returnType: bool
    signature: bool nexthop_same(const struct nexthop *nh1, const struct nexthop *nh2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: _nexthop_cmp_no_labels
      Src: /src/frr/lib/nexthop.c:426,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 414
    functionDepth: 4
    functionLinenumber: 414
    functionLinenumberEnd: 430
    functionName: nexthop_same_no_labels
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 3
    functionsReached:
    - _nexthop_cmp_no_labels
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_same_no_labels(const struct nexthop *nh1,\n\t\t\t    const
      struct nexthop *nh2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ifindex
    - vrf_id
    argTypes:
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 445
    functionName: nexthop_from_ifindex
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 3
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: struct nexthop *nexthop_from_ifindex(ifindex_t ifindex, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ipv4
    - src
    - vrf_id
    argTypes:
    - struct in_addr*
    - struct in_addr*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 461
    functionName: nexthop_from_ipv4
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 3
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_from_ipv4(const struct in_addr *ipv4,\n\t\t\t\t
      \ const struct in_addr *src,\n\t\t\t\t  vrf_id_t vrf_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ipv4
    - src
    - ifindex
    - vrf_id
    argTypes:
    - struct in_addr*
    - struct in_addr*
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 478
    functionName: nexthop_from_ipv4_ifindex
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 2
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_from_ipv4_ifindex(const struct in_addr *ipv4,\n\t\t\t\t\t
      \ const struct in_addr *src,\n\t\t\t\t\t  ifindex_t ifindex, vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ipv6
    - vrf_id
    argTypes:
    - struct in6_addr*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 491
    functionName: nexthop_from_ipv6
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 3
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_from_ipv6(const struct in6_addr *ipv6,\n\t\t\t\t
      \ vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ipv6
    - ifindex
    - vrf_id
    argTypes:
    - struct in6_addr*
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 505
    functionName: nexthop_from_ipv6_ifindex
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 2
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_from_ipv6_ifindex(const struct in6_addr *ipv6,\n\t\t\t\t\t
      \ ifindex_t ifindex, vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - bh_type
    - nh_vrf_id
    argTypes:
    - enum blackhole_type
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 518
    functionName: nexthop_from_blackhole
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 2
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_from_blackhole(enum blackhole_type bh_type,\n\t\t\t\t
      \      vrf_id_t nh_vrf_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/nexthop.c:536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - nexthop
    - ltype
    - num_labels
    - labels
    argTypes:
    - struct nexthop*
    - enum lsp_types_t
    - uint8_t
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 543
    functionName: nexthop_add_labels
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 13
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void nexthop_add_labels(struct nexthop *nexthop, enum lsp_types_t
      ltype,\n\t\t\tuint8_t num_labels, const mpls_label_t *labels)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/nexthop.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 550
    functionName: nexthop_del_labels
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 14
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nexthop_del_labels(struct nexthop *nexthop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/nexthop.c:559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - nexthop
    - action
    - ctx
    argTypes:
    - struct nexthop*
    - uint32_t
    - struct seg6local_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 564
    functionName: nexthop_add_srv6_seg6local
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 4
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void nexthop_add_srv6_seg6local(struct nexthop *nexthop, uint32_t
      action,\n\t\t\t\tconst struct seg6local_context *ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sid_zero
      Src: /src/frr/lib/nexthop.c:573,1
    - Dst: XFREE
      Src: /src/frr/lib/nexthop.c:574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 575
    functionName: nexthop_del_srv6_seg6local
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 3
    functionsReached:
    - sid_zero
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nexthop_del_srv6_seg6local(struct nexthop *nexthop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/nexthop.c:584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - nexthop
    - segs
    argTypes:
    - struct nexthop*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 577
    functionDepth: 0
    functionLinenumber: 577
    functionLinenumberEnd: 588
    functionName: nexthop_add_srv6_seg6
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 4
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void nexthop_add_srv6_seg6(struct nexthop *nexthop,\n\t\t\t   const
      struct in6_addr *segs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/nexthop.c:595,1
    - Dst: XFREE
      Src: /src/frr/lib/nexthop.c:600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 601
    functionName: nexthop_del_srv6_seg6
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 3
    functionsReached:
    - XFREE
    - memset
    linkageType: ''
    returnType: void
    signature: void nexthop_del_srv6_seg6(struct nexthop *nexthop)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/nexthop.c:607,1
    - Dst: snprintfrr
      Src: /src/frr/lib/nexthop.c:611,1
    - Dst: snprintfrr
      Src: /src/frr/lib/nexthop.c:616,1
    - Dst: snprintf
      Src: /src/frr/lib/nexthop.c:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - nexthop
    - str
    - size
    argTypes:
    - struct nexthop*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 625
    functionName: nexthop2str
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 9
    functionsReached:
    - snprintfrr
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *nexthop2str(const struct nexthop *nexthop, char *str, int size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:644,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 655
    functionName: nexthop_next
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 4
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: struct nexthop
    signature: struct nexthop *nexthop_next(const struct nexthop *nexthop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_next
      Src: /src/frr/lib/nexthop.c:660,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:663,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:664,1
    - Dst: nexthop_next
      Src: /src/frr/lib/nexthop.c:665,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 668
    functionName: nexthop_next_active_resolved
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 3
    functionsReached:
    - nexthop_next
    - CHECK_FLAG
    linkageType: ''
    returnType: struct nexthop
    signature: struct nexthop *nexthop_next_active_resolved(const struct nexthop *nexthop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 670
    functionDepth: 0
    functionLinenumber: 670
    functionLinenumberEnd: 679
    functionName: nexthop_level
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nexthop_level(const struct nexthop *nexthop)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: jhash_3words
      Src: /src/frr/lib/nexthop.c:687,1
    - Dst: jhash_3words
      Src: /src/frr/lib/nexthop.c:696,1
    - Dst: jhash_2words
      Src: /src/frr/lib/nexthop.c:705,1
    - Dst: jhash_1word
      Src: /src/frr/lib/nexthop.c:713,1
    - Dst: jhash_2words
      Src: /src/frr/lib/nexthop.c:716,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:717,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:721,1
    - Dst: jhash_3words
      Src: /src/frr/lib/nexthop.c:727,1
    - Dst: jhash_2words
      Src: /src/frr/lib/nexthop.c:735,1
    - Dst: jhash_1word
      Src: /src/frr/lib/nexthop.c:742,1
    - Dst: jhash_1word
      Src: /src/frr/lib/nexthop.c:746,1
    - Dst: jhash
      Src: /src/frr/lib/nexthop.c:747,1
    - Dst: jhash
      Src: /src/frr/lib/nexthop.c:749,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 754
    functionName: nexthop_hash_quick
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - jhash_3words
    - CHECK_FLAG
    - jhash_1word
    - jhash
    - jhash_2words
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t nexthop_hash_quick(const struct nexthop *nexthop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_hash_quick
      Src: /src/frr/lib/nexthop.c:764,1
    - Dst: assert
      Src: /src/frr/lib/nexthop.c:766,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:771,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:772,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:773,1
    - Dst: jhash2
      Src: /src/frr/lib/nexthop.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - nexthop
    argTypes:
    - struct nexthop*
    assertStmts:
    - condition: "(((sizeof(nexthop->gate) + sizeof(nexthop->src)\n\t\t + sizeof(nexthop->rmap_src))\n\t\t/
        3)\n\t       == (GATE_SIZE * sizeof(uint32_t)))"
      pos:
        line_end: 768
        line_start: 765
        source_file: /src/frr/lib/nexthop.c
    constantsTouched: []
    func_position:
      end: 779
      start: 760
    functionDepth: 2
    functionLinenumber: 760
    functionLinenumberEnd: 779
    functionName: nexthop_hash
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - nexthop_hash_quick
    - memcpy
    - jhash2
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t nexthop_hash(const struct nexthop *nexthop)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/nexthop.c:791,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:794,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:797,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:798,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:799,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:800,1
    - Dst: nexthop_add_labels
      Src: /src/frr/lib/nexthop.c:803,1
    - Dst: nexthop_add_srv6_seg6local
      Src: /src/frr/lib/nexthop.c:810,1
    - Dst: sid_zero
      Src: /src/frr/lib/nexthop.c:813,1
    - Dst: nexthop_add_srv6_seg6
      Src: /src/frr/lib/nexthop.c:814,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - copy
    - nexthop
    - rparent
    argTypes:
    - struct nexthop*
    - struct nexthop*
    - struct nexthop*
    assertStmts:
    - condition: (nexthop->backup_num < NEXTHOP_MAX_BACKUPS)
      pos:
        line_end: 790
        line_start: 790
        source_file: /src/frr/lib/nexthop.c
    constantsTouched: []
    func_position:
      end: 817
      start: 781
    functionDepth: 2
    functionLinenumber: 781
    functionLinenumberEnd: 817
    functionName: nexthop_copy_no_recurse
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 1
    functionsReached:
    - assert
    - sid_zero
    - nexthop_add_srv6_seg6local
    - nexthop_add_srv6_seg6
    - nexthop_add_labels
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void nexthop_copy_no_recurse(struct nexthop *copy,\n\t\t\t     const
      struct nexthop *nexthop,\n\t\t\t     struct nexthop *rparent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_copy_no_recurse
      Src: /src/frr/lib/nexthop.c:822,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop.c:828,1
    - Dst: copy_nexthops
      Src: /src/frr/lib/nexthop.c:829,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - copy
    - nexthop
    - rparent
    argTypes:
    - struct nexthop*
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 819
    functionDepth: 3
    functionLinenumber: 819
    functionLinenumberEnd: 830
    functionName: nexthop_copy
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - nexthop_copy_no_recurse
    - CHECK_FLAG
    - copy_nexthops
    linkageType: ''
    returnType: void
    signature: "void nexthop_copy(struct nexthop *copy, const struct nexthop *nexthop,\n\t\t
      \ struct nexthop *rparent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - nexthop
    - rparent
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 832
    functionDepth: 1
    functionLinenumber: 832
    functionLinenumberEnd: 839
    functionName: nexthop_dup_no_recurse
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 1
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_dup_no_recurse(const struct nexthop *nexthop,\n\t\t\t\t
      \      struct nexthop *rparent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/nexthop.c:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - nexthop
    - rparent
    argTypes:
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 841
    functionDepth: 1
    functionLinenumber: 841
    functionLinenumberEnd: 848
    functionName: nexthop_dup
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 9
    functionsReached:
    - nexthop_new
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_dup(const struct nexthop *nexthop,\n\t\t\t
      \   struct nexthop *rparent)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/nexthop.c:868,1
    - Dst: strsep
      Src: /src/frr/lib/nexthop.c:873,1
    - Dst: strtoul
      Src: /src/frr/lib/nexthop.c:874,1
    - Dst: memcpy
      Src: /src/frr/lib/nexthop.c:903,1
    - Dst: XFREE
      Src: /src/frr/lib/nexthop.c:906,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - str
    - num_backups
    - backups
    argTypes:
    - char*
    - int*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 909
    functionName: nexthop_str2backups
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XSTRDUP
    - XFREE
    - strsep
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int nexthop_str2backups(const char *str, int *num_backups,\n\t\t\tuint8_t
      *backups)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:916,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:920,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:924,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:929,1
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:933,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - buf
    - nexthop
    argTypes:
    - struct fbuf*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 911
    functionDepth: 1
    functionLinenumber: 911
    functionLinenumberEnd: 937
    functionName: printfrr_nhs
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 2
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t printfrr_nhs(struct fbuf *buf, const struct nexthop *nexthop)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:980,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:985,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:991,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:996,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop.c:997,1
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:1001,1
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:1005,1
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:1008,1
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:1011,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:1019,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop.c:1020,1
    - Dst: printfrr_nhs
      Src: /src/frr/lib/nexthop.c:1027,1
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:1034,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:1038,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:1043,1
    - Dst: bputs
      Src: /src/frr/lib/nexthop.c:1053,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:1056,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop.c:1058,1
    - Dst: bprintfrr
      Src: /src/frr/lib/nexthop.c:1066,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop.c:1068,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 92
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 961
    functionDepth: 2
    functionLinenumber: 961
    functionLinenumberEnd: 1079
    functionName: printfrr_nh
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 0
    functionsReached:
    - printfrr_nhs
    - ifindex2ifname
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_nh(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1081
    functionDepth: 0
    functionLinenumber: 1081
    functionLinenumberEnd: 1088
    functionName: nexthop_is_ifindex_type
    functionSourceFile: /src/frr/lib/nexthop.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nexthop_is_ifindex_type(const struct nexthop *nh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - jo
    - ','
    - joi
    - ','
    - join
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 29
    functionName: JSON_FOREACH
    functionSourceFile: /src/frr/lib/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_FOREACH(jo, joi, join)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - json_func
    - ','
    - fields
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 38
    functionName: JSON_OBJECT_NEW_ARRAY
    functionSourceFile: /src/frr/lib/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_OBJECT_NEW_ARRAY(json_func, fields, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/json.h:69,1
    - Dst: json_object_string_addv
      Src: /src/frr/lib/json.h:70,1
    - Dst: va_end
      Src: /src/frr/lib/json.h:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - obj
    - key
    - fmt
    argTypes:
    - struct json_object*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: json_object_string_addf
    functionSourceFile: /src/frr/lib/json.h
    functionUses: 69
    functionsReached:
    - va_start
    - json_object_string_addv
    - va_end
    linkageType: ''
    returnType: void
    signature: "void json_object_string_addf(struct json_object *obj,\n\t\t\t\t\t
      \  const char *key, const char *fmt,\n\t\t\t\t\t   ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/json.h:83,1
    - Dst: json_array_string_addv
      Src: /src/frr/lib/json.h:84,1
    - Dst: va_end
      Src: /src/frr/lib/json.h:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - obj
    - fmt
    argTypes:
    - struct json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: json_array_string_addf
    functionSourceFile: /src/frr/lib/json.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - json_array_string_addv
    linkageType: ''
    returnType: void
    signature: "void json_array_string_addf(struct json_object *obj,\n\t\t\t\t\t  const
      char *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/json.h:97,1
    - Dst: json_object_new_stringv
      Src: /src/frr/lib/json.h:98,1
    - Dst: va_end
      Src: /src/frr/lib/json.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: json_object_new_stringf
    functionSourceFile: /src/frr/lib/json.h
    functionUses: 1
    functionsReached:
    - va_start
    - va_end
    - json_object_new_stringv
    linkageType: ''
    returnType: struct json_object
    signature: struct json_object *json_object_new_stringf(const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/json.h:121,1
    - Dst: json_object_object_addv
      Src: /src/frr/lib/json.h:122,1
    - Dst: va_end
      Src: /src/frr/lib/json.h:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - parent
    - child
    - keyfmt
    argTypes:
    - struct json_object*
    - struct json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: json_object_object_addf
    functionSourceFile: /src/frr/lib/json.h
    functionUses: 13
    functionsReached:
    - va_start
    - va_end
    - json_object_object_addv
    linkageType: ''
    returnType: void
    signature: "void json_object_object_addf(struct json_object *parent,\n\t\t\t\t\t
      \  struct json_object *child,\n\t\t\t\t\t   const char *keyfmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - ','
    - attrs
    - ','
    - dnum
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 256
    functionName: DEFUN_CMD_ELEMENT
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_CMD_ELEMENT(funcname, cmdname, cmdstr, helpstr, attrs, dnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: DEFUN_CMD_FUNC_DECL
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_CMD_FUNC_DECL(funcname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 268
    functionName: DEFUN_CMD_FUNC_TEXT
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_CMD_FUNC_TEXT(funcname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: DEFPY_ATTR
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: DEFPY
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 280
    functionName: DEFPY_NOSH
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY_NOSH(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 283
    functionName: DEFPY_HIDDEN
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY_HIDDEN(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 286
    functionName: DEFPY_YANG
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY_YANG(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: DEFPY_YANG_NOSH
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFPY_YANG_NOSH(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 297
    functionName: DEFUN_ATTR
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_ATTR(funcname, cmdname, cmdstr, helpstr, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 300
    functionName: DEFUN
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 303
    functionName: DEFUN_HIDDEN
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_HIDDEN(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 306
    functionName: DEFUN_YANG
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_YANG(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 310
    functionName: DEFUN_NOSH
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_NOSH(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: DEFUN_YANG_NOSH
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUN_YANG_NOSH(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - daemon
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 318
    functionName: DEFSH_ATTR
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFSH_ATTR(daemon, cmdname, cmdstr, helpstr, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - daemon
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 321
    functionName: DEFSH
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFSH(daemon, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - daemon
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 324
    functionName: DEFSH_HIDDEN
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFSH_HIDDEN(daemon, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - daemon
    - ','
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: DEFUNSH_ATTR
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUNSH_ATTR(daemon, funcname, cmdname, cmdstr, helpstr, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - daemon
    - ','
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 333
    functionName: DEFUNSH
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUNSH(daemon, funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - daemon
    - ','
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 337
    functionName: DEFUNSH_HIDDEN
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFUNSH_HIDDEN(daemon, funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - ','
    - attr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 341
    functionName: ALIAS_ATTR
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIAS_ATTR(funcname, cmdname, cmdstr, helpstr, attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 344
    functionName: ALIAS
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIAS(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 347
    functionName: ALIAS_HIDDEN
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIAS_HIDDEN(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 355
    functionName: ALIAS_DEPRECATED
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIAS_DEPRECATED(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - funcname
    - ','
    - cmdname
    - ','
    - cmdstr
    - ','
    - helpstr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 358
    functionName: ALIAS_YANG
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIAS_YANG(funcname, cmdname, cmdstr, helpstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 368
    functionName: CMD_CREATE_STR
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMD_CREATE_STR(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 369
    functionName: CMD_CREATE_STR_HELPER
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMD_CREATE_STR_HELPER(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 370
    functionName: CMD_RANGE_STR
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMD_RANGE_STR(a,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - node_type_
    - ','
    - cmd_element_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 523
    functionName: install_element
    functionSourceFile: /src/frr/lib/command.h
    functionUses: 84
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: install_element(node_type_, cmd_element_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - level
    - ','
    - cond
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: OSPF_LOG
    functionSourceFile: /src/frr/lib/log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_LOG(level, cond, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: OSPF_LOG_ERR
    functionSourceFile: /src/frr/lib/log.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_LOG_ERR(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: OSPF_LOG_WARN
    functionSourceFile: /src/frr/lib/log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_LOG_WARN(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: OSPF_LOG_INFO
    functionSourceFile: /src/frr/lib/log.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_LOG_INFO(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cond
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: OSPF_LOG_DEBUG
    functionSourceFile: /src/frr/lib/log.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_LOG_DEBUG(cond, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: OSPF_LOG_NOTICE
    functionSourceFile: /src/frr/lib/log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF_LOG_NOTICE(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - EN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: ERRNO_IO_RETRY
    functionSourceFile: /src/frr/lib/network.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRNO_IO_RETRY(EN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: be64toh
    functionSourceFile: /src/frr/lib/network.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: htobe64
    functionSourceFile: /src/frr/lib/network.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: be64toh
    functionSourceFile: /src/frr/lib/network.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: htobe64
    functionSourceFile: /src/frr/lib/network.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/frr/lib/network.h:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: frr_weak_random
    functionSourceFile: /src/frr/lib/network.h
    functionUses: 15
    functionsReached:
    - random
    linkageType: ''
    returnType: long
    signature: long frr_weak_random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/atomlist.h:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts:
    - condition: (!(atomval & ATOMPTR_LOCK))
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/frr/lib/atomlist.h
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: atomptr_i
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: atomptr_t
    signature: atomptr_t atomptr_i(void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - atomptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: atomptr_p
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *atomptr_p(atomptr_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - atomptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: atomptr_l
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool atomptr_l(atomptr_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - atomptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: atomptr_u
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool atomptr_u(atomptr_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: atomlist_itemp
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomlist_itemp(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: PREDECL_ATOMLIST
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_ATOMLIST(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 127
    functionName: INIT_ATOMLIST
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_ATOMLIST(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: DECLARE_ATOMLIST
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_ATOMLIST(prefix, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomlist_pop
      Src: /src/frr/lib/atomlist.h:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 142
    functionName: _pop
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 46
    functionsReached:
    - atomlist_pop
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _pop(struct prefix##_head *h)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomptr_p
      Src: /src/frr/lib/atomlist.h:144,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.h:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: _first
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 57
    functionsReached:
    - atomic_load_explicit
    - atomptr_p
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _first(struct prefix##_head *h)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomptr_p
      Src: /src/frr/lib/atomlist.h:148,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.h:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct prefix*
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: _next
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 424
    functionsReached:
    - atomic_load_explicit
    - atomptr_p
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _next(struct prefix##_head *h, type *item)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _next
      Src: /src/frr/lib/atomlist.h:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct prefix*
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: _next_safe
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached:
    - _next
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _next_safe(struct prefix##_head *h, type *item)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.h:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 154
    functionName: _count
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 163
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: macro_inline
    signature: macro_inline _count(struct prefix##_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/atomlist.h:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: _init
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 438
    functionsReached:
    - memset
    linkageType: ''
    returnType: macro_inline
    signature: macro_inline _init(struct prefix##_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/atomlist.h:161,1
    - Dst: _count
      Src: /src/frr/lib/atomlist.h:161,1
    - Dst: memset
      Src: /src/frr/lib/atomlist.h:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts:
    - condition: '(prefix ## _count(h) == 0)'
      pos:
        line_end: 160
        line_start: 160
        source_file: /src/frr/lib/atomlist.h
    constantsTouched: []
    func_position:
      end: 163
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 163
    functionName: _fini
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 52
    functionsReached:
    - memset
    - _count
    - assert
    linkageType: ''
    returnType: macro_inline
    signature: macro_inline _fini(struct prefix##_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 206
    functionName: atomsort_itemp
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomsort_itemp(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: _PREDECL_ATOMSORT
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _PREDECL_ATOMSORT(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: INIT_ATOMSORT_UNIQ
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_ATOMSORT_UNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 219
    functionName: INIT_ATOMSORT_NONUNIQ
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_ATOMSORT_NONUNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn_nuq
    - ','
    - cmpfn_uq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 280
    functionName: _DECLARE_ATOMSORT
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DECLARE_ATOMSORT(prefix, type, field, cmpfn_nuq, cmpfn_uq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.h:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 286
    functionName: _count
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 164
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: macro_inline
    signature: macro_inline _count(struct prefix##_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomsort_pop
      Src: /src/frr/lib/atomlist.h:289,1
    - Dst: container_of
      Src: /src/frr/lib/atomlist.h:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 291
    functionName: _pop
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 47
    functionsReached:
    - atomsort_pop
    - container_of
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _pop(struct prefix##_head *h)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 296
    functionName: PREDECL_ATOMSORT_UNIQ
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_ATOMSORT_UNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 320
    functionName: DECLARE_ATOMSORT_UNIQ
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_ATOMSORT_UNIQ(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 323
    functionName: PREDECL_ATOMSORT_NONUNIQ
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_ATOMSORT_NONUNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 348
    functionName: DECLARE_ATOMSORT_NONUNIQ
    functionSourceFile: /src/frr/lib/atomlist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_ATOMSORT_NONUNIQ(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/flex_algo.c:32,1
    - Dst: list_new
      Src: /src/frr/lib/flex_algo.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - allocator
    - releaser
    argTypes:
    - flex_algo_allocator_t
    - flex_algo_releaser_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    functionName: flex_algos_alloc
    functionSourceFile: /src/frr/lib/flex_algo.c
    functionUses: 1
    functionsReached:
    - list_new
    - XCALLOC
    linkageType: ''
    returnType: struct flex_algos
    signature: "struct flex_algos *flex_algos_alloc(flex_algo_allocator_t allocator,\n\t\t\t\t
      \   flex_algo_releaser_t releaser)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/flex_algo.c:44,1
    - Dst: _flex_algo_delete
      Src: /src/frr/lib/flex_algo.c:45,1
    - Dst: list_delete
      Src: /src/frr/lib/flex_algo.c:46,1
    - Dst: XFREE
      Src: /src/frr/lib/flex_algo.c:47,1
    - Dst: XCALLOC
      Src: /src/frr/lib/flex_algo.c:55,1
    - Dst: if
      Src: /src/frr/lib/flex_algo.c:57,1
    - Dst: struct flex_algos*::allocator
      Src: /src/frr/lib/flex_algo.c:58,1
    - Dst: admin_group_init
      Src: /src/frr/lib/flex_algo.c:59,1
    - Dst: admin_group_init
      Src: /src/frr/lib/flex_algo.c:60,1
    - Dst: admin_group_init
      Src: /src/frr/lib/flex_algo.c:61,1
    - Dst: listnode_add
      Src: /src/frr/lib/flex_algo.c:62,1
    - Dst: _flex_algo_delete
      Src: /src/frr/lib/flex_algo.c:66,1
    - Dst: struct flex_algos*::releaser
      Src: /src/frr/lib/flex_algo.c:70,1
    - Dst: admin_group_term
      Src: /src/frr/lib/flex_algo.c:71,1
    - Dst: admin_group_term
      Src: /src/frr/lib/flex_algo.c:72,1
    - Dst: admin_group_term
      Src: /src/frr/lib/flex_algo.c:73,1
    - Dst: listnode_delete
      Src: /src/frr/lib/flex_algo.c:74,1
    - Dst: XFREE
      Src: /src/frr/lib/flex_algo.c:75,1
    - Dst: flex_algo_delete
      Src: /src/frr/lib/flex_algo.c:79,1
    - Dst: for
      Src: /src/frr/lib/flex_algo.c:84,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/flex_algo.c:84,1
    - Dst: _flex_algo_delete
      Src: /src/frr/lib/flex_algo.c:87,1
    - Dst: snprintf
      Src: /src/frr/lib/flex_algo.c:160,1
    - Dst: snprintf
      Src: /src/frr/lib/flex_algo.c:163,1
    - Dst: snprintf
      Src: /src/frr/lib/flex_algo.c:166,1
    - Dst: flex_algo_get_state
      Src: /src/frr/lib/flex_algo.c:172,1
    - Dst: flex_algo_lookup
      Src: /src/frr/lib/flex_algo.c:174,1
    - Dst: flex_algo_lookup
      Src: /src/frr/lib/flex_algo.c:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - flex_algos
    argTypes:
    - struct flex_algos*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 191
    functionName: flex_algos_free
    functionSourceFile: /src/frr/lib/flex_algo.c
    functionUses: 2
    functionsReached:
    - list_delete
    - admin_group_init
    - flex_algo_delete
    - snprintf
    - XCALLOC
    - listnode_delete
    - flex_algo_get_state
    - _flex_algo_delete
    - flex_algo_lookup
    - listnode_add
    - admin_group_term
    - XFREE
    - if
    - ALL_LIST_ELEMENTS
    - for
    - struct flex_algos*::releaser
    - struct flex_algos*::allocator
    linkageType: ''
    returnType: void
    signature: void flex_algos_free(struct flex_algos *flex_algos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - type
    - ','
    - f
    - ','
    - d
    - ','
    - call
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 72
    functionName: _xref_zmq_a
    functionSourceFile: /src/frr/lib/frr_zmq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _xref_zmq_a(type, f, d, call)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - e
    - ','
    - a
    - ','
    - z
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: frrzmq_event_add_read_msg
    functionSourceFile: /src/frr/lib/frr_zmq.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrzmq_event_add_read_msg(m, f, e, a, z, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - e
    - ','
    - a
    - ','
    - z
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: frrzmq_event_add_read_part
    functionSourceFile: /src/frr/lib/frr_zmq.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrzmq_event_add_read_part(m, f, e, a, z, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - e
    - ','
    - a
    - ','
    - z
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: frrzmq_event_add_write_msg
    functionSourceFile: /src/frr/lib/frr_zmq.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrzmq_event_add_write_msg(m, f, e, a, z, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: in_cksumv
      Src: /src/frr/lib/checksum.h:39,1
    - Dst: array_size
      Src: /src/frr/lib/checksum.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - data
    - nbytes
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: in_cksum
    functionSourceFile: /src/frr/lib/checksum.h
    functionUses: 6
    functionsReached:
    - in_cksumv
    - array_size
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t in_cksum(const void *data, size_t nbytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: in_cksumv
      Src: /src/frr/lib/checksum.h:51,1
    - Dst: array_size
      Src: /src/frr/lib/checksum.h:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ph
    - data
    - nbytes
    argTypes:
    - struct ipv4_ph*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 52
    functionName: in_cksum_with_ph4
    functionSourceFile: /src/frr/lib/checksum.h
    functionUses: 0
    functionsReached:
    - in_cksumv
    - array_size
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t in_cksum_with_ph4(const struct ipv4_ph *ph,\n\t\t\t\t\t const
      void *data, size_t nbytes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: in_cksumv
      Src: /src/frr/lib/checksum.h:63,1
    - Dst: array_size
      Src: /src/frr/lib/checksum.h:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ph
    - data
    - nbytes
    argTypes:
    - struct ipv6_ph*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 64
    functionName: in_cksum_with_ph6
    functionSourceFile: /src/frr/lib/checksum.h
    functionUses: 0
    functionsReached:
    - in_cksumv
    - array_size
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t in_cksum_with_ph6(const struct ipv6_ph *ph,\n\t\t\t\t\t const
      void *data, size_t nbytes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomptr_i
      Src: /src/frr/lib/atomlist.c:17,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/atomlist.c:19,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/atomlist.c:30,1
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/atomlist.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct atomlist_head*
    - struct atomlist_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 14
    functionDepth: 2
    functionLinenumber: 14
    functionLinenumberEnd: 34
    functionName: atomlist_add_head
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 0
    functionsReached:
    - atomic_fetch_add_explicit
    - atomic_store_explicit
    - atomptr_i
    - atomic_compare_exchange_weak_explicit
    linkageType: ''
    returnType: void
    signature: void atomlist_add_head(struct atomlist_head *h, struct atomlist_item
      *item)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: atomptr_i
      Src: /src/frr/lib/atomlist.c:39,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/atomlist.c:46,1
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/atomlist.c:51,1
    - Dst: atomptr_p
      Src: /src/frr/lib/atomlist.c:54,1
    - Dst: atomlist_itemp
      Src: /src/frr/lib/atomlist.c:57,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.c:60,1
    - Dst: atomlist_itemp
      Src: /src/frr/lib/atomlist.c:62,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:70,1
    - Dst: atomic_compare_exchange_strong_explicit
      Src: /src/frr/lib/atomlist.c:76,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct atomlist_head*
    - struct atomlist_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 84
    functionName: atomlist_add_tail
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 0
    functionsReached:
    - atomptr_i
    - atomptr_p
    - atomptr_l
    - atomic_fetch_add_explicit
    - atomic_exchange_explicit
    - atomic_load_explicit
    - atomlist_itemp
    - atomic_compare_exchange_strong_explicit
    linkageType: ''
    returnType: void
    signature: void atomlist_add_tail(struct atomlist_head *h, struct atomlist_item
      *item)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: atomptr_i
      Src: /src/frr/lib/atomlist.c:96,1
    - Dst: atomic_compare_exchange_strong_explicit
      Src: /src/frr/lib/atomlist.c:97,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/lib/atomlist.c:101,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.c:111,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:118,1
    - Dst: atomlist_itemp
      Src: /src/frr/lib/atomlist.c:123,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:134,1
    - Dst: atomic_compare_exchange_strong_explicit
      Src: /src/frr/lib/atomlist.c:142,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 4
    argNames:
    - h
    - item
    - hint
    - next
    argTypes:
    - struct atomlist_head*
    - struct atomlist_item*
    - atomptr_t*
    - atomptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 152
    functionName: atomlist_del_core
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 0
    functionsReached:
    - atomptr_i
    - atomptr_l
    - atomic_load_explicit
    - atomic_fetch_sub_explicit
    - atomlist_itemp
    - atomic_compare_exchange_strong_explicit
    linkageType: ''
    returnType: void
    signature: "void atomlist_del_core(struct atomlist_head *h,\n\t\t\t      struct
      atomlist_item *item,\n\t\t\t      _Atomic atomptr_t *hint,\n\t\t\t      atomptr_t
      next)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_or_explicit
      Src: /src/frr/lib/atomlist.c:160,1
    - Dst: assert
      Src: /src/frr/lib/atomlist.c:162,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:162,1
    - Dst: atomlist_del_core
      Src: /src/frr/lib/atomlist.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - h
    - item
    - hint
    argTypes:
    - struct atomlist_head*
    - struct atomlist_item*
    - atomptr_t*
    assertStmts:
    - condition: (!atomptr_l(next))
      pos:
        line_end: 161
        line_start: 161
        source_file: /src/frr/lib/atomlist.c
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 3
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: atomlist_del_hint
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 0
    functionsReached:
    - atomic_fetch_or_explicit
    - atomlist_del_core
    - atomptr_l
    - assert
    linkageType: ''
    returnType: void
    signature: "void atomlist_del_hint(struct atomlist_head *h, struct atomlist_item
      *item,\n\t\t_Atomic atomptr_t *hint)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.c:177,1
    - Dst: atomlist_itemp
      Src: /src/frr/lib/atomlist.c:180,1
    - Dst: atomic_fetch_or_explicit
      Src: /src/frr/lib/atomlist.c:185,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:188,1
    - Dst: atomlist_del_core
      Src: /src/frr/lib/atomlist.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct atomlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 167
    functionDepth: 3
    functionLinenumber: 167
    functionLinenumberEnd: 195
    functionName: atomlist_pop
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 1
    functionsReached:
    - atomic_fetch_or_explicit
    - atomlist_del_core
    - atomptr_l
    - atomic_load_explicit
    - atomlist_itemp
    linkageType: ''
    returnType: struct atomlist_item
    signature: struct atomlist_item *atomlist_pop(struct atomlist_head *h)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: atomptr_i
      Src: /src/frr/lib/atomlist.c:204,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.c:212,1
    - Dst: atomptr_p
      Src: /src/frr/lib/atomlist.c:214,1
    - Dst: cmpfn
      Src: /src/frr/lib/atomlist.c:216,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:224,1
    - Dst: atomic_compare_exchange_strong_explicit
      Src: /src/frr/lib/atomlist.c:228,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/atomlist.c:233,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct atomsort_head*
    - struct atomsort_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 235
    functionName: atomsort_add
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 0
    functionsReached:
    - atomptr_i
    - atomptr_p
    - atomptr_l
    - cmpfn
    - atomic_fetch_add_explicit
    - atomic_load_explicit
    - atomic_compare_exchange_strong_explicit
    linkageType: ''
    returnType: struct atomsort_item
    signature: "struct atomsort_item *atomsort_add(struct atomsort_head *h,\n\t\tstruct
      atomsort_item *item, int (*cmpfn)(\n\t\t\tconst struct atomsort_item *,\n\t\t\tconst
      struct atomsort_item *))"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/lib/atomlist.c:245,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.c:255,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:262,1
    - Dst: atomsort_itemp
      Src: /src/frr/lib/atomlist.c:267,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:278,1
    - Dst: atomic_compare_exchange_strong_explicit
      Src: /src/frr/lib/atomlist.c:286,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - h
    - item
    - hint
    - next
    argTypes:
    - struct atomsort_head*
    - struct atomsort_item*
    - atomptr_t*
    - atomptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 296
    functionName: atomsort_del_core
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 0
    functionsReached:
    - atomsort_itemp
    - atomptr_l
    - atomic_fetch_sub_explicit
    - atomic_load_explicit
    - atomic_compare_exchange_strong_explicit
    linkageType: ''
    returnType: void
    signature: "void atomsort_del_core(struct atomsort_head *h,\n\t\tstruct atomsort_item
      *item, _Atomic atomptr_t *hint,\n\t\tatomptr_t next)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_or_explicit
      Src: /src/frr/lib/atomlist.c:304,1
    - Dst: assert
      Src: /src/frr/lib/atomlist.c:306,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:306,1
    - Dst: atomsort_del_core
      Src: /src/frr/lib/atomlist.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - h
    - item
    - hint
    argTypes:
    - struct atomsort_head*
    - struct atomsort_item*
    - atomptr_t*
    assertStmts:
    - condition: (!atomptr_l(next))
      pos:
        line_end: 305
        line_start: 305
        source_file: /src/frr/lib/atomlist.c
    constantsTouched: []
    func_position:
      end: 309
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 309
    functionName: atomsort_del_hint
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 0
    functionsReached:
    - atomic_fetch_or_explicit
    - atomsort_del_core
    - atomptr_l
    - assert
    linkageType: ''
    returnType: void
    signature: "void atomsort_del_hint(struct atomsort_head *h, struct atomsort_item
      *item,\n\t\t_Atomic atomptr_t *hint)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/atomlist.c:321,1
    - Dst: atomsort_itemp
      Src: /src/frr/lib/atomlist.c:324,1
    - Dst: atomic_fetch_or_explicit
      Src: /src/frr/lib/atomlist.c:329,1
    - Dst: atomptr_l
      Src: /src/frr/lib/atomlist.c:332,1
    - Dst: atomsort_del_core
      Src: /src/frr/lib/atomlist.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct atomsort_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 339
    functionName: atomsort_pop
    functionSourceFile: /src/frr/lib/atomlist.c
    functionUses: 1
    functionsReached:
    - atomsort_itemp
    - atomic_fetch_or_explicit
    - atomsort_del_core
    - atomptr_l
    - atomic_load_explicit
    linkageType: ''
    returnType: struct atomsort_item
    signature: struct atomsort_item *atomsort_pop(struct atomsort_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: lib_affinity_map_create
    functionSourceFile: /src/frr/lib/affinitymap_northbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_affinity_map_create(struct nb_cb_create_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/affinitymap_northbound.c:45,1
    - Dst: affinity_map_check_use_hook
      Src: /src/frr/lib/affinitymap_northbound.c:50,1
    - Dst: snprintf
      Src: /src/frr/lib/affinitymap_northbound.c:52,1
    - Dst: affinity_map_unset
      Src: /src/frr/lib/affinitymap_northbound.c:59,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 63
    functionName: lib_affinity_map_destroy
    functionSourceFile: /src/frr/lib/affinitymap_northbound.c
    functionUses: 0
    functionsReached:
    - affinity_map_unset
    - affinity_map_check_use_hook
    - yang_dnode_get_string
    - snprintf
    linkageType: ''
    returnType: int
    signature: int lib_affinity_map_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/affinitymap_northbound.c:74,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/affinitymap_northbound.c:77,1
    - Dst: affinity_map_name_get
      Src: /src/frr/lib/affinitymap_northbound.c:82,1
    - Dst: strncmp
      Src: /src/frr/lib/affinitymap_northbound.c:84,1
    - Dst: snprintf
      Src: /src/frr/lib/affinitymap_northbound.c:85,1
    - Dst: affinity_map_check_update_hook
      Src: /src/frr/lib/affinitymap_northbound.c:89,1
    - Dst: snprintf
      Src: /src/frr/lib/affinitymap_northbound.c:90,1
    - Dst: affinity_map_update_hook
      Src: /src/frr/lib/affinitymap_northbound.c:100,1
    - Dst: affinity_map_set
      Src: /src/frr/lib/affinitymap_northbound.c:101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 106
    functionName: lib_affinity_map_value_modify
    functionSourceFile: /src/frr/lib/affinitymap_northbound.c
    functionUses: 0
    functionsReached:
    - affinity_map_name_get
    - affinity_map_check_update_hook
    - snprintf
    - affinity_map_set
    - strncmp
    - yang_dnode_get_string
    - affinity_map_update_hook
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: int
    signature: int lib_affinity_map_value_modify(struct nb_cb_modify_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: lib_affinity_map_value_destroy
    functionSourceFile: /src/frr/lib/affinitymap_northbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_affinity_map_value_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/distribute.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: distribute_new
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct distribute
    signature: struct distribute *distribute_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:32,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:35,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:39,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - dist
    argTypes:
    - struct distribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 43
    functionName: distribute_free
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void distribute_free(struct distribute *dist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/lib/distribute.c:54,1
    - Dst: distribute_free
      Src: /src/frr/lib/distribute.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - dist
    argTypes:
    - struct distribute_ctx*
    - struct distribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 56
    functionName: distribute_free_if_empty
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - hash_release
    - distribute_free
    linkageType: ''
    returnType: void
    signature: "void distribute_free_if_empty(struct distribute_ctx *ctx,\n\t\t\t\t
      \    struct distribute *dist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/distribute.c:66,1
    - Dst: hash_lookup
      Src: /src/frr/lib/distribute.c:68,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - ifname
    argTypes:
    - struct distribute_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: distribute_lookup
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 6
    functionsReached:
    - hash_lookup
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: struct distribute
    signature: "struct distribute *distribute_lookup(struct distribute_ctx *ctx,\n\t\t\t\t
      \    const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct distribute_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: distribute_list_add_hook
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void distribute_list_add_hook(struct distribute_ctx *ctx,\n\t\t\t
      \     void (*func)(struct distribute_ctx *ctx,\n\t\t\t\t\t   struct distribute
      *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct distribute_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: distribute_list_delete_hook
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void distribute_list_delete_hook(struct distribute_ctx *ctx,\n\t\t\t\t
      void (*func)(struct distribute_ctx *ctx,\n\t\t\t\t\t      struct distribute
      *))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: distribute_new
      Src: /src/frr/lib/distribute.c:93,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/distribute.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - struct distribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 99
    functionName: distribute_hash_alloc
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_new
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *distribute_hash_alloc(struct distribute *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/distribute.c:109,1
    - Dst: hash_get
      Src: /src/frr/lib/distribute.c:111,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - ifname
    argTypes:
    - struct distribute_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 117
    functionName: distribute_get
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - XFREE
    - hash_get
    - XSTRDUP
    linkageType: ''
    returnType: struct distribute
    signature: "struct distribute *distribute_get(struct distribute_ctx *ctx,\n\t\t\t\t\t
      const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/distribute.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: distribute_hash_make
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int distribute_hash_make(const void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/distribute.c:132,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - dist1
    - dist2
    argTypes:
    - struct distribute*
    - struct distribute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: distribute_cmp
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: "bool distribute_cmp(const struct distribute *dist1,\n\t\t\t  const
      struct distribute *dist2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: distribute_get
      Src: /src/frr/lib/distribute.c:146,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:148,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/distribute.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - ifname
    - type
    - alist_name
    argTypes:
    - struct distribute_ctx*
    - char*
    - enum distribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 153
    functionName: distribute_list_set
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_get
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void distribute_list_set(struct distribute_ctx *ctx,\n\t\t\t\tconst
      char *ifname, enum distribute_type type,\n\t\t\t\tconst char *alist_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: distribute_lookup
      Src: /src/frr/lib/distribute.c:164,1
    - Dst: strcmp
      Src: /src/frr/lib/distribute.c:170,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:173,1
    - Dst: distribute_free_if_empty
      Src: /src/frr/lib/distribute.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - ifname
    - type
    - alist_name
    argTypes:
    - struct distribute_ctx*
    - char*
    - enum distribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 181
    functionName: distribute_list_unset
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_free_if_empty
    - strcmp
    - distribute_lookup
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int distribute_list_unset(struct distribute_ctx *ctx,\n\t\t\t\t const
      char *ifname,\n\t\t\t\t enum distribute_type type,\n\t\t\t\t const char *alist_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: distribute_get
      Src: /src/frr/lib/distribute.c:191,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:193,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/distribute.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - ifname
    - type
    - plist_name
    argTypes:
    - struct distribute_ctx*
    - char*
    - enum distribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 198
    functionName: distribute_list_prefix_set
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_get
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void distribute_list_prefix_set(struct distribute_ctx *ctx,\n\t\t\t\t
      \      const char *ifname,\n\t\t\t\t       enum distribute_type type,\n\t\t\t\t
      \      const char *plist_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: distribute_lookup
      Src: /src/frr/lib/distribute.c:209,1
    - Dst: strcmp
      Src: /src/frr/lib/distribute.c:215,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:218,1
    - Dst: distribute_free_if_empty
      Src: /src/frr/lib/distribute.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - ifname
    - type
    - plist_name
    argTypes:
    - struct distribute_ctx*
    - char*
    - enum distribute_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 226
    functionName: distribute_list_prefix_unset
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_free_if_empty
    - strcmp
    - distribute_lookup
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int distribute_list_prefix_unset(struct distribute_ctx *ctx,\n\t\t\t\t\tconst
      char *ifname,\n\t\t\t\t\tenum distribute_type type,\n\t\t\t\t\tconst char *plist_name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/distribute.c:242,1
    - Dst: __builtin_unreachable
      Src: /src/frr/lib/distribute.c:244,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - dir
    - v4
    argTypes:
    - char*
    - bool
    assertStmts:
    - condition: (!"Expecting in or out only, fix your code")
      pos:
        line_end: 241
        line_start: 241
        source_file: /src/frr/lib/distribute.c
    constantsTouched: []
    func_position:
      end: 245
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 245
    functionName: distribute_direction
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - __builtin_unreachable
    - assert
    linkageType: ''
    returnType: enum distribute_type
    signature: enum distribute_type distribute_direction(const char *dir, bool v4)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: distribute_direction
      Src: /src/frr/lib/distribute.c:250,1
    - Dst: listnode_head
      Src: /src/frr/lib/distribute.c:251,1
    - Dst: distfn
      Src: /src/frr/lib/distribute.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - prefix
    - v4
    - dir
    - list
    - ifname
    argTypes:
    - bool
    - bool
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 260
    functionName: distribute_list_parser
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_direction
    - distfn
    - listnode_head
    linkageType: ''
    returnType: int
    signature: "int distribute_list_parser(bool prefix, bool v4, const char *dir,\n\t\t\t
      \  const char *list, const char *ifname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: distribute_direction
      Src: /src/frr/lib/distribute.c:266,1
    - Dst: listnode_head
      Src: /src/frr/lib/distribute.c:267,1
    - Dst: distfn
      Src: /src/frr/lib/distribute.c:275,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - vty
    - prefix
    - v4
    - dir
    - list
    - ifname
    argTypes:
    - struct vty*
    - bool
    - bool
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 282
    functionName: distribute_list_no_parser
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_direction
    - vty_out
    - distfn
    - listnode_head
    linkageType: ''
    returnType: int
    signature: "int distribute_list_no_parser(struct vty *vty, bool prefix, bool v4,\n\t\t\t
      \     const char *dir, const char *list,\n\t\t\t      const char *ifname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - vty
    - tab
    - is_prefix
    - type
    - has_print
    argTypes:
    - struct vty*
    - char*[]
    - int
    - enum distribute_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 293
    functionName: distribute_print
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int distribute_print(struct vty *vty, char *tab[], int is_prefix,\n\t\t\t
      \   enum distribute_type type, int has_print)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: distribute_lookup
      Src: /src/frr/lib/distribute.c:303,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:304,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:307,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:309,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:311,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:313,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:317,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:319,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:325,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:328,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:331,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:334,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:337,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:341,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:343,1
    - Dst: distribute_lookup
      Src: /src/frr/lib/distribute.c:349,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:350,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:353,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:355,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:357,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:359,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:363,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:365,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:371,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:374,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:377,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:380,1
    - Dst: distribute_print
      Src: /src/frr/lib/distribute.c:383,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:387,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:389,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 56
    argCount: 2
    argNames:
    - vty
    - dist_ctxt
    argTypes:
    - struct vty*
    - struct distribute_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 393
    functionName: config_show_distribute
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 0
    functionsReached:
    - distribute_print
    - distribute_lookup
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_show_distribute(struct vty *vty, struct distribute_ctx *dist_ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:417,1
    - Dst: vty_out
      Src: /src/frr/lib/distribute.c:433,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - vty
    - dist_ctxt
    argTypes:
    - struct vty*
    - struct distribute_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 444
    functionName: config_write_distribute
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 2
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int config_write_distribute(struct vty *vty,\n\t\t\t    struct distribute_ctx
      *dist_ctxt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/distribute.c:448,1
    - Dst: listnode_delete
      Src: /src/frr/lib/distribute.c:452,1
    - Dst: list_isempty
      Src: /src/frr/lib/distribute.c:453,1
    - Dst: list_delete
      Src: /src/frr/lib/distribute.c:454,1
    - Dst: XFREE
      Src: /src/frr/lib/distribute.c:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct distribute_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 458
    functionName: distribute_list_delete
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 3
    functionsReached:
    - hash_clean_and_free
    - list_delete
    - list_isempty
    - XFREE
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: void distribute_list_delete(struct distribute_ctx **ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/distribute.c:465,1
    - Dst: hash_create
      Src: /src/frr/lib/distribute.c:467,1
    - Dst: list_new
      Src: /src/frr/lib/distribute.c:471,1
    - Dst: listnode_add
      Src: /src/frr/lib/distribute.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 474
    functionName: distribute_list_ctx_create
    functionSourceFile: /src/frr/lib/distribute.c
    functionUses: 3
    functionsReached:
    - hash_create
    - list_new
    - listnode_add
    - XCALLOC
    linkageType: ''
    returnType: struct distribute_ctx
    signature: struct distribute_ctx *distribute_list_ctx_create(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: listnextnode
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listnextnode(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: listnextnode_unchecked
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listnextnode_unchecked(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: listhead
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 57
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listhead(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: listhead_unchecked
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listhead_unchecked(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: listtail
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listtail(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: listtail_unchecked
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listtail_unchecked(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: listcount
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 123
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listcount(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: list_isempty
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 56
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_isempty(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: listgetdata
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 76
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listgetdata(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: listset_app_node_mem
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listset_app_node_mem(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: listnode_init
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: listnode_init(X, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - list
    - ','
    - node
    - ','
    - nextnode
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 325
    functionName: ALL_LIST_ELEMENTS
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 290
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LIST_ELEMENTS(list, node, nextnode, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - list
    - ','
    - node
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 336
    functionName: ALL_LIST_ELEMENTS_RO
    functionSourceFile: /src/frr/lib/linklist.h
    functionUses: 378
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LIST_ELEMENTS_RO(list, node, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - used
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: HASH_THRESHOLD
    functionSourceFile: /src/frr/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_THRESHOLD(used, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: hashcount
    functionSourceFile: /src/frr/lib/hash.h
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hashcount(X)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/db.c:30,1
    - Dst: vsnprintf
      Src: /src/frr/lib/db.c:31,1
    - Dst: va_end
      Src: /src/frr/lib/db.c:32,1
    - Dst: sqlite3_open_v2
      Src: /src/frr/lib/db.c:34,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:38,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:43,1
    - Dst: sqlite3_errmsg
      Src: /src/frr/lib/db.c:44,1
    - Dst: sqlite3_close_v2
      Src: /src/frr/lib/db.c:45,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:46,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - path_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 52
    functionName: db_init
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 7
    functionsReached:
    - sqlite3_open_v2
    - sqlite3_errmsg
    - vsnprintf
    - sqlite3_close_v2
    - va_start
    - va_end
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int db_init(const char *path_fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_close_v2
      Src: /src/frr/lib/db.c:60,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 65
    functionName: db_close
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - sqlite3_close_v2
    linkageType: ''
    returnType: int
    signature: int db_close(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: va_arg
      Src: /src/frr/lib/db.c:88,1
    - Dst: sqlite3_bind_int
      Src: /src/frr/lib/db.c:89,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:94,1
    - Dst: sqlite3_bind_int64
      Src: /src/frr/lib/db.c:95,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:100,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:101,1
    - Dst: sqlite3_bind_text
      Src: /src/frr/lib/db.c:102,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:108,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:109,1
    - Dst: sqlite3_bind_blob
      Src: /src/frr/lib/db.c:110,1
    - Dst: sqlite3_bind_null
      Src: /src/frr/lib/db.c:116,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:120,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 3
    argNames:
    - ss
    - fmt
    - vl
    argTypes:
    - struct sqlite3_stmt*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 126
    functionName: db_vbindf
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - sqlite3_bind_text
    - va_arg
    - sqlite3_bind_null
    - sqlite3_bind_blob
    - sqlite3_bind_int64
    - zlog_warn
    - sqlite3_bind_int
    linkageType: ''
    returnType: int
    signature: int db_vbindf(struct sqlite3_stmt *ss, const char *fmt, va_list vl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/db.c:138,1
    - Dst: db_vbindf
      Src: /src/frr/lib/db.c:139,1
    - Dst: va_end
      Src: /src/frr/lib/db.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ss
    - fmt
    argTypes:
    - struct sqlite3_stmt*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 143
    functionName: db_bindf
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - va_start
    - db_vbindf
    - va_end
    linkageType: ''
    returnType: int
    signature: int db_bindf(struct sqlite3_stmt *ss, const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_prepare_v2
      Src: /src/frr/lib/db.c:154,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:156,1
    - Dst: sqlite3_errmsg
      Src: /src/frr/lib/db.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - stmt
    - stmtlen
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 162
    functionName: db_prepare_len
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - sqlite3_errmsg
    - zlog_warn
    - sqlite3_prepare_v2
    linkageType: ''
    returnType: struct sqlite3_stmt
    signature: struct sqlite3_stmt *db_prepare_len(const char *stmt, int stmtlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db_prepare_len
      Src: /src/frr/lib/db.c:167,1
    - Dst: strlen
      Src: /src/frr/lib/db.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: db_prepare
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - strlen
    - db_prepare_len
    linkageType: ''
    returnType: struct sqlite3_stmt
    signature: struct sqlite3_stmt *db_prepare(const char *stmt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_step
      Src: /src/frr/lib/db.c:175,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:196,1
    - Dst: sqlite3_errstr
      Src: /src/frr/lib/db.c:197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ss
    argTypes:
    - struct sqlite3_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 201
    functionName: db_run
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - sqlite3_errstr
    - sqlite3_step
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int db_run(struct sqlite3_stmt *ss)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_column_count
      Src: /src/frr/lib/db.c:217,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:231,1
    - Dst: sqlite3_column_int
      Src: /src/frr/lib/db.c:232,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:235,1
    - Dst: sqlite3_column_int64
      Src: /src/frr/lib/db.c:236,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:239,1
    - Dst: sqlite3_column_text
      Src: /src/frr/lib/db.c:240,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:243,1
    - Dst: va_arg
      Src: /src/frr/lib/db.c:244,1
    - Dst: sqlite3_column_bytes
      Src: /src/frr/lib/db.c:245,1
    - Dst: sqlite3_column_blob
      Src: /src/frr/lib/db.c:246,1
    - Dst: memcpy
      Src: /src/frr/lib/db.c:247,1
    - Dst: MIN
      Src: /src/frr/lib/db.c:247,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:250,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 3
    argNames:
    - ss
    - fmt
    - vl
    argTypes:
    - struct sqlite3_stmt*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 258
    functionName: db_vloadf
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - MIN
    - va_arg
    - sqlite3_column_blob
    - sqlite3_column_bytes
    - sqlite3_column_count
    - zlog_warn
    - sqlite3_column_int
    - sqlite3_column_int64
    - sqlite3_column_text
    - memcpy
    linkageType: ''
    returnType: int
    signature: int db_vloadf(struct sqlite3_stmt *ss, const char *fmt, va_list vl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/db.c:266,1
    - Dst: db_vloadf
      Src: /src/frr/lib/db.c:267,1
    - Dst: va_end
      Src: /src/frr/lib/db.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ss
    - fmt
    argTypes:
    - struct sqlite3_stmt*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 271
    functionName: db_loadf
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - va_start
    - db_vloadf
    - va_end
    linkageType: ''
    returnType: int
    signature: int db_loadf(struct sqlite3_stmt *ss, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_finalize
      Src: /src/frr/lib/db.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ss
    argTypes:
    - struct sqlite3_stmt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 278
    functionName: db_finalize
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - sqlite3_finalize
    linkageType: ''
    returnType: void
    signature: void db_finalize(struct sqlite3_stmt **ss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/db.c:289,1
    - Dst: vsnprintf
      Src: /src/frr/lib/db.c:290,1
    - Dst: va_end
      Src: /src/frr/lib/db.c:291,1
    - Dst: sqlite3_exec
      Src: /src/frr/lib/db.c:293,1
    - Dst: zlog_warn
      Src: /src/frr/lib/db.c:294,1
    - Dst: sqlite3_errmsg
      Src: /src/frr/lib/db.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - stmt_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 300
    functionName: db_execute
    functionSourceFile: /src/frr/lib/db.c
    functionUses: 0
    functionsReached:
    - sqlite3_errmsg
    - vsnprintf
    - va_start
    - va_end
    - zlog_warn
    - sqlite3_exec
    linkageType: ''
    returnType: int
    signature: int db_execute(const char *stmt_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - tm
    - ','
    - fd
    - ','
    - arg
    - ','
    - fill
    - ','
    - err
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: pullwr_new
    functionSourceFile: /src/frr/lib/pullwr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pullwr_new(tm, fd, arg, fill, err)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pullwr_write
      Src: /src/frr/lib/pullwr.h:95,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/pullwr.h:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pullwr
    - s
    argTypes:
    - struct pullwr*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: pullwr_write_stream
    functionSourceFile: /src/frr/lib/pullwr.h
    functionUses: 4
    functionsReached:
    - pullwr_write
    - stream_get_endp
    linkageType: ''
    returnType: void
    signature: "void pullwr_write_stream(struct pullwr *pullwr,\n\t\tstruct stream
      *s)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: NEXTHOP_IS_ACTIVE
    functionSourceFile: /src/frr/lib/nexthop.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NEXTHOP_IS_ACTIVE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - to
    - ','
    - new
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: NEXTHOP_APPEND
    functionSourceFile: /src/frr/lib/nexthop.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NEXTHOP_APPEND(to, new)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: ASN_FORMAT
    functionSourceFile: /src/frr/lib/asn.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASN_FORMAT(mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: ASN_FORMAT_SPACE
    functionSourceFile: /src/frr/lib/asn.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASN_FORMAT_SPACE(mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/cspf.c:44,1
    - Dst: list_new
      Src: /src/frr/lib/cspf.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - key
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 51
    functionName: cpath_new
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - list_new
    - XCALLOC
    linkageType: ''
    returnType: struct c_path
    signature: struct c_path *cpath_new(uint64_t key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/cspf.c:71,1
    - Dst: list_delete
      Src: /src/frr/lib/cspf.c:75,1
    - Dst: list_dup
      Src: /src/frr/lib/cspf.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct c_path*
    - struct c_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 84
    functionName: cpath_copy
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - list_delete
    - list_dup
    - XCALLOC
    linkageType: ''
    returnType: struct c_path
    signature: struct c_path *cpath_copy(struct c_path *dest, const struct c_path
      *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/lib/cspf.c:97,1
    - Dst: XFREE
      Src: /src/frr/lib/cspf.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct c_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: cpath_del
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cpath_del(struct c_path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/lib/cspf.c:114,1
    - Dst: list_dup
      Src: /src/frr/lib/cspf.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - next_path
    - cur_path
    argTypes:
    - struct c_path*
    - struct c_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: cpath_replace
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - list_delete
    - list_dup
    linkageType: ''
    returnType: void
    signature: void cpath_replace(struct c_path *next_path, struct c_path *cur_path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/cspf.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vertex
    argTypes:
    - struct ls_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 139
    functionName: vnode_new
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct v_node
    signature: struct v_node *vnode_new(struct ls_vertex *vertex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/cspf.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vnode
    argTypes:
    - struct v_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 153
    functionName: vnode_del
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vnode_del(struct v_node *vnode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/cspf.c:174,1
    - Dst: prefix_same
      Src: /src/frr/lib/cspf.c:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ted
    - ipv4
    argTypes:
    - struct ls_ted*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 183
    functionName: get_vertex_by_ipv4
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - frr_each
    linkageType: ''
    returnType: struct ls_vertex
    signature: "struct ls_vertex *get_vertex_by_ipv4(struct ls_ted *ted,\n\t\t\t\t\t
      \   struct in_addr ipv4)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/cspf.c:204,1
    - Dst: prefix_cmp
      Src: /src/frr/lib/cspf.c:208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ted
    - ipv6
    argTypes:
    - struct ls_ted*
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 213
    functionName: get_vertex_by_ipv6
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    - frr_each
    linkageType: ''
    returnType: struct ls_vertex
    signature: "struct ls_vertex *get_vertex_by_ipv6(struct ls_ted *ted,\n\t\t\t\t\t
      \   struct in6_addr ipv6)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/cspf.c:220,1
    - Dst: processed_init
      Src: /src/frr/lib/cspf.c:223,1
    - Dst: visited_init
      Src: /src/frr/lib/cspf.c:224,1
    - Dst: pqueue_init
      Src: /src/frr/lib/cspf.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 231
    functionName: cspf_new
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - visited_init
    - processed_init
    - pqueue_init
    - XCALLOC
    linkageType: ''
    returnType: struct cspf
    signature: struct cspf *cspf_new(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cspf_new
      Src: /src/frr/lib/cspf.c:243,1
    - Dst: cpath_new
      Src: /src/frr/lib/cspf.c:249,1
    - Dst: processed_add
      Src: /src/frr/lib/cspf.c:251,1
    - Dst: pqueue_add
      Src: /src/frr/lib/cspf.c:252,1
    - Dst: cpath_new
      Src: /src/frr/lib/cspf.c:256,1
    - Dst: processed_add
      Src: /src/frr/lib/cspf.c:257,1
    - Dst: memcpy
      Src: /src/frr/lib/cspf.c:260,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - algo
    - src
    - dst
    - csts
    argTypes:
    - struct cspf*
    - struct ls_vertex*
    - struct ls_vertex*
    - struct constraints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 263
    functionName: cspf_init
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - pqueue_add
    - cpath_new
    - cspf_new
    - processed_add
    - memcpy
    linkageType: ''
    returnType: struct cspf
    signature: "struct cspf *cspf_init(struct cspf *algo, const struct ls_vertex *src,\n\t\t
      \      const struct ls_vertex *dst, struct constraints *csts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cspf_new
      Src: /src/frr/lib/cspf.c:278,1
    - Dst: get_vertex_by_ipv4
      Src: /src/frr/lib/cspf.c:283,1
    - Dst: get_vertex_by_ipv4
      Src: /src/frr/lib/cspf.c:284,1
    - Dst: cspf_init
      Src: /src/frr/lib/cspf.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - algo
    - ted
    - src
    - dst
    - csts
    argTypes:
    - struct cspf*
    - struct ls_ted*
    - struct in_addr
    - struct in_addr
    - struct constraints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 288
    functionName: cspf_init_v4
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - cspf_init
    - cspf_new
    - get_vertex_by_ipv4
    linkageType: ''
    returnType: struct cspf
    signature: "struct cspf *cspf_init_v4(struct cspf *algo, struct ls_ted *ted,\n\t\t\t
      \ const struct in_addr src, const struct in_addr dst,\n\t\t\t  struct constraints
      *csts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cspf_new
      Src: /src/frr/lib/cspf.c:303,1
    - Dst: get_vertex_by_ipv6
      Src: /src/frr/lib/cspf.c:308,1
    - Dst: get_vertex_by_ipv6
      Src: /src/frr/lib/cspf.c:309,1
    - Dst: cspf_init
      Src: /src/frr/lib/cspf.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - algo
    - ted
    - src
    - dst
    - csts
    argTypes:
    - struct cspf*
    - struct ls_ted*
    - struct in6_addr
    - struct in6_addr
    - struct constraints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 290
    functionDepth: 3
    functionLinenumber: 290
    functionLinenumberEnd: 313
    functionName: cspf_init_v6
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - cspf_init
    - cspf_new
    - get_vertex_by_ipv6
    linkageType: ''
    returnType: struct cspf
    signature: "struct cspf *cspf_init_v6(struct cspf *algo, struct ls_ted *ted,\n\t\t\t
      \ const struct in6_addr src, const struct in6_addr dst,\n\t\t\t  struct constraints
      *csts)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pqueue_count
      Src: /src/frr/lib/cspf.c:324,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/cspf.c:325,1
    - Dst: pqueue_del
      Src: /src/frr/lib/cspf.c:326,1
    - Dst: processed_count
      Src: /src/frr/lib/cspf.c:331,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/cspf.c:332,1
    - Dst: processed_del
      Src: /src/frr/lib/cspf.c:333,1
    - Dst: cpath_del
      Src: /src/frr/lib/cspf.c:334,1
    - Dst: visited_count
      Src: /src/frr/lib/cspf.c:339,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/cspf.c:340,1
    - Dst: visited_del
      Src: /src/frr/lib/cspf.c:341,1
    - Dst: vnode_del
      Src: /src/frr/lib/cspf.c:342,1
    - Dst: memset
      Src: /src/frr/lib/cspf.c:346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - algo
    argTypes:
    - struct cspf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 349
    functionName: cspf_clean
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - pqueue_del
    - memset
    - processed_count
    - processed_del
    - vnode_del
    - visited_del
    - pqueue_count
    - frr_each_safe
    - visited_count
    - cpath_del
    linkageType: ''
    returnType: void
    signature: void cspf_clean(struct cspf *algo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cspf_clean
      Src: /src/frr/lib/cspf.c:357,1
    - Dst: pqueue_fini
      Src: /src/frr/lib/cspf.c:360,1
    - Dst: processed_fini
      Src: /src/frr/lib/cspf.c:361,1
    - Dst: visited_fini
      Src: /src/frr/lib/cspf.c:362,1
    - Dst: XFREE
      Src: /src/frr/lib/cspf.c:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - algo
    argTypes:
    - struct cspf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 366
    functionName: cspf_del
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - visited_fini
    - pqueue_fini
    - XFREE
    - cspf_clean
    - processed_fini
    linkageType: ''
    returnType: void
    signature: void cspf_del(struct cspf *algo)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_NET0
      Src: /src/frr/lib/cspf.c:400,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/cspf.c:403,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/cspf.c:404,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/lib/cspf.c:408,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/cspf.c:411,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/cspf.c:412,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/cspf.c:422,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/cspf.c:429,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/cspf.c:436,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 48
    argCount: 3
    argNames:
    - path
    - edge
    - csts
    argTypes:
    - struct c_path*
    - struct ls_edge*
    - struct constraints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 453
    functionName: prune_edge
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - CHECK_FLAG
    - IPV4_NET0
    linkageType: ''
    returnType: bool
    signature: "bool prune_edge(const struct c_path *path, const struct ls_edge *edge,\n\t\t
      \      const struct constraints *csts)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: visited_member
      Src: /src/frr/lib/cspf.c:482,1
    - Dst: processed_find
      Src: /src/frr/lib/cspf.c:491,1
    - Dst: cpath_new
      Src: /src/frr/lib/cspf.c:493,1
    - Dst: processed_add
      Src: /src/frr/lib/cspf.c:494,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/cspf.c:528,1
    - Dst: pqueue_del
      Src: /src/frr/lib/cspf.c:530,1
    - Dst: cpath_replace
      Src: /src/frr/lib/cspf.c:535,1
    - Dst: listnode_add
      Src: /src/frr/lib/cspf.c:536,1
    - Dst: pqueue_add
      Src: /src/frr/lib/cspf.c:537,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - algo
    - edge
    argTypes:
    - struct cspf*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 542
    functionName: relax_constraints
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - processed_find
    - visited_member
    - pqueue_del
    - pqueue_add
    - cpath_new
    - listnode_add
    - processed_add
    - frr_each_safe
    - cpath_replace
    linkageType: ''
    returnType: bool
    signature: bool relax_constraints(struct cspf *algo, struct ls_edge *edge)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: cpath_new
      Src: /src/frr/lib/cspf.c:553,1
    - Dst: pqueue_count
      Src: /src/frr/lib/cspf.c:587,1
    - Dst: pqueue_pop
      Src: /src/frr/lib/cspf.c:589,1
    - Dst: ls_find_vertex_by_key
      Src: /src/frr/lib/cspf.c:592,1
    - Dst: vnode_new
      Src: /src/frr/lib/cspf.c:595,1
    - Dst: visited_add
      Src: /src/frr/lib/cspf.c:596,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/cspf.c:599,1
    - Dst: prune_edge
      Src: /src/frr/lib/cspf.c:605,1
    - Dst: relax_constraints
      Src: /src/frr/lib/cspf.c:612,1
    - Dst: cpath_copy
      Src: /src/frr/lib/cspf.c:615,1
    - Dst: listcount
      Src: /src/frr/lib/cspf.c:628,1
    - Dst: cspf_clean
      Src: /src/frr/lib/cspf.c:630,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 2
    argNames:
    - algo
    - ted
    argTypes:
    - struct cspf*
    - struct ls_ted*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 544
    functionDepth: 3
    functionLinenumber: 544
    functionLinenumberEnd: 633
    functionName: compute_p2p_path
    functionSourceFile: /src/frr/lib/cspf.c
    functionUses: 0
    functionsReached:
    - relax_constraints
    - pqueue_pop
    - cpath_copy
    - vnode_new
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - cpath_new
    - pqueue_count
    - prune_edge
    - cspf_clean
    - visited_add
    - ls_find_vertex_by_key
    linkageType: ''
    returnType: struct c_path
    signature: struct c_path *compute_p2p_path(struct cspf *algo, struct ls_ted *ted)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrstr.c:36,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frrstr.c:37,1
    - Dst: strsep
      Src: /src/frr/lib/frrstr.c:43,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frrstr.c:44,1
    - Dst: XREALLOC
      Src: /src/frr/lib/frrstr.c:46,1
    - Dst: XFREE
      Src: /src/frr/lib/frrstr.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - string
    - delimiter
    - result
    - argc
    argTypes:
    - char*
    - char*
    - char***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 52
    functionName: frrstr_split
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 9
    functionsReached:
    - XCALLOC
    - XFREE
    - strsep
    - XREALLOC
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void frrstr_split(const char *string, const char *delimiter, char
      ***result,\n\t\t  int *argc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_split
      Src: /src/frr/lib/frrstr.c:62,1
    - Dst: array_to_vector
      Src: /src/frr/lib/frrstr.c:64,1
    - Dst: XFREE
      Src: /src/frr/lib/frrstr.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - string
    - delimiter
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 69
    functionName: frrstr_split_vec
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 1
    functionsReached:
    - array_to_vector
    - frrstr_split
    - XFREE
    linkageType: ''
    returnType: vector
    signature: vector frrstr_split_vec(const char *string, const char *delimiter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:77,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:83,1
    - Dst: XMALLOC
      Src: /src/frr/lib/frrstr.c:89,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:92,1
    - Dst: memcpy
      Src: /src/frr/lib/frrstr.c:94,1
    - Dst: memcpy
      Src: /src/frr/lib/frrstr.c:97,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - parts
    - argc
    - join
    argTypes:
    - char**
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 105
    functionName: frrstr_join
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 1
    functionsReached:
    - strlen
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: char
    signature: char *frrstr_join(const char **parts, int argc, const char *join)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_to_array
      Src: /src/frr/lib/frrstr.c:112,1
    - Dst: frrstr_join
      Src: /src/frr/lib/frrstr.c:114,1
    - Dst: XFREE
      Src: /src/frr/lib/frrstr.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v
    - join
    argTypes:
    - vector
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 119
    functionName: frrstr_join_vec
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 1
    functionsReached:
    - frrstr_join
    - vector_to_array
    - XFREE
    linkageType: ''
    returnType: char
    signature: char *frrstr_join_vec(vector v, const char *join)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/frrstr.c:125,1
    - Dst: regexec
      Src: /src/frr/lib/frrstr.c:126,1
    - Dst: vector_slot
      Src: /src/frr/lib/frrstr.c:126,1
    - Dst: XFREE
      Src: /src/frr/lib/frrstr.c:127,1
    - Dst: vector_slot
      Src: /src/frr/lib/frrstr.c:127,1
    - Dst: vector_unset
      Src: /src/frr/lib/frrstr.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - v
    - filter
    argTypes:
    - vector
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 131
    functionName: frrstr_filter_vec
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 1
    functionsReached:
    - vector_active
    - vector_slot
    - vector_unset
    - XFREE
    - regexec
    linkageType: ''
    returnType: void
    signature: void frrstr_filter_vec(vector v, regex_t *filter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/frrstr.c:141,1
    - Dst: vector_slot
      Src: /src/frr/lib/frrstr.c:142,1
    - Dst: XFREE
      Src: /src/frr/lib/frrstr.c:143,1
    - Dst: vector_free
      Src: /src/frr/lib/frrstr.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - vector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 147
    functionName: frrstr_strvec_free
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 1
    functionsReached:
    - vector_free
    - vector_active
    - vector_slot
    - XFREE
    linkageType: ''
    returnType: void
    signature: void frrstr_strvec_free(vector v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/frrstr.c:152,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:154,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:155,1
    - Dst: strstr
      Src: /src/frr/lib/frrstr.c:157,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:159,1
    - Dst: XREALLOC
      Src: /src/frr/lib/frrstr.c:160,1
    - Dst: strstr
      Src: /src/frr/lib/frrstr.c:161,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:164,1
    - Dst: memmove
      Src: /src/frr/lib/frrstr.c:167,1
    - Dst: memcpy
      Src: /src/frr/lib/frrstr.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - str
    - find
    - replace
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 173
    functionName: frrstr_replace
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 0
    functionsReached:
    - strstr
    - strlen
    - memmove
    - memcpy
    - XREALLOC
    - XSTRDUP
    linkageType: ''
    returnType: char
    signature: char *frrstr_replace(const char *str, const char *find, const char
      *replace)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:180,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:181,1
    - Dst: strncmp
      Src: /src/frr/lib/frrstr.c:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - str
    - prefix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 187
    functionName: frrstr_startswith
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool frrstr_startswith(const char *str, const char *prefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:194,1
    - Dst: strlen
      Src: /src/frr/lib/frrstr.c:195,1
    - Dst: strncmp
      Src: /src/frr/lib/frrstr.c:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - str
    - suffix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 201
    functionName: frrstr_endswith
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncmp
    linkageType: ''
    returnType: bool
    signature: bool frrstr_endswith(const char *str, const char *suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/frr/lib/frrstr.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 209
    functionName: all_digit
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 8
    functionsReached:
    - isdigit
    linkageType: ''
    returnType: int
    signature: int all_digit(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/frrstr.c:222,1
    - Dst: strlcat
      Src: /src/frr/lib/frrstr.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - buff
    - bufsiz
    - str
    - num
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 227
    functionName: frrstr_hex
    functionSourceFile: /src/frr/lib/frrstr.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *frrstr_hex(char *buff, size_t bufsiz, const uint8_t *str, size_t
      num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: _Q_INVALIDATE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _Q_INVALIDATE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: SLIST_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: SLIST_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: SLIST_FIRST
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: SLIST_END
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_END(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: SLIST_EMPTY
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: SLIST_NEXT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: SLIST_FOREACH
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: SLIST_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 110
    functionName: SLIST_INIT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - slistelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: SLIST_INSERT_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_INSERT_AFTER(slistelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 122
    functionName: SLIST_INSERT_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: SLIST_REMOVE_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_REMOVE_AFTER(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: SLIST_REMOVE_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_REMOVE_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 147
    functionName: SLIST_REMOVE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_REMOVE(head, elm, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: LIST_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: LIST_ENTRY
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_ENTRY(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: LIST_FIRST
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: LIST_END
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_END(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: LIST_EMPTY
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: LIST_NEXT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: LIST_FOREACH
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: LIST_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 190
    functionName: LIST_INIT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: LIST_INSERT_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INSERT_AFTER(listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: LIST_INSERT_BEFORE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INSERT_BEFORE(listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 216
    functionName: LIST_INSERT_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 226
    functionName: LIST_REMOVE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_REMOVE(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - elm
    - ','
    - elm2
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 237
    functionName: LIST_REPLACE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_REPLACE(elm, elm2, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 243
    functionName: SIMPLEQ_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: SIMPLEQ_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: SIMPLEQ_FIRST
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 262
    functionName: SIMPLEQ_END
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_END(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    functionName: SIMPLEQ_EMPTY
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 264
    functionName: SIMPLEQ_NEXT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: SIMPLEQ_FOREACH
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: SIMPLEQ_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 281
    functionName: SIMPLEQ_INIT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 288
    functionName: SIMPLEQ_INSERT_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 295
    functionName: SIMPLEQ_INSERT_TAIL
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_INSERT_TAIL(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 303
    functionName: SIMPLEQ_INSERT_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_INSERT_AFTER(head, listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: SIMPLEQ_REMOVE_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_REMOVE_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 318
    functionName: SIMPLEQ_REMOVE_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_REMOVE_AFTER(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head1
    - ','
    - head2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 327
    functionName: SIMPLEQ_CONCAT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SIMPLEQ_CONCAT(head1, head2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 333
    functionName: XSIMPLEQ_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 348
    functionName: XSIMPLEQ_XOR
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_XOR(head, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 349
    functionName: XSIMPLEQ_FIRST
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 350
    functionName: XSIMPLEQ_END
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_END(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 351
    functionName: XSIMPLEQ_EMPTY
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 352
    functionName: XSIMPLEQ_NEXT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_NEXT(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 356
    functionName: XSIMPLEQ_FOREACH
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: XSIMPLEQ_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 372
    functionName: XSIMPLEQ_INIT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 381
    functionName: XSIMPLEQ_INSERT_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 389
    functionName: XSIMPLEQ_INSERT_TAIL
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_INSERT_TAIL(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 398
    functionName: XSIMPLEQ_INSERT_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_INSERT_AFTER(head, listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 407
    functionName: XSIMPLEQ_REMOVE_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_REMOVE_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 417
    functionName: XSIMPLEQ_REMOVE_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSIMPLEQ_REMOVE_AFTER(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 424
    functionName: TAILQ_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 432
    functionName: TAILQ_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 435
    functionName: TAILQ_ENTRY
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_ENTRY(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 443
    functionName: TAILQ_FIRST
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 444
    functionName: TAILQ_END
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_END(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 445
    functionName: TAILQ_NEXT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - headname
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 447
    functionName: TAILQ_LAST
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_LAST(head, headname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - elm
    - ','
    - headname
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 450
    functionName: TAILQ_PREV
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_PREV(elm, headname, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 451
    functionName: TAILQ_EMPTY
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: TAILQ_FOREACH
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 460
    functionName: TAILQ_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - headname
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 465
    functionName: TAILQ_FOREACH_REVERSE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH_REVERSE(var, head, headname, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - headname
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 471
    functionName: TAILQ_FOREACH_REVERSE_SAFE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 480
    functionName: TAILQ_INIT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 491
    functionName: TAILQ_INSERT_HEAD
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 499
    functionName: TAILQ_INSERT_TAIL
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_TAIL(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 511
    functionName: TAILQ_INSERT_AFTER
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_AFTER(head, listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 519
    functionName: TAILQ_INSERT_BEFORE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_BEFORE(listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 531
    functionName: TAILQ_REMOVE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_REMOVE(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - elm2
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 544
    functionName: TAILQ_REPLACE
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_REPLACE(head, elm, elm2, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head1
    - ','
    - head2
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 555
    functionName: TAILQ_CONCAT
    functionSourceFile: /src/frr/lib/openbsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_CONCAT(head1, head2, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/yang_translator.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct yang_translator*
    - struct yang_translator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: yang_translator_compare
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int yang_translator_compare(const struct yang_translator *a,\n\t\t\t\t\t
      \ const struct yang_translator *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/yang_translator.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value1
    - value2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: yang_mapping_hash_cmp
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: bool
    signature: bool yang_mapping_hash_cmp(const void *value1, const void *value2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/yang_translator.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: yang_mapping_hash_key
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int yang_mapping_hash_key(const void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/yang_translator.c:60,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_translator.c:61,1
    - Dst: xpath_from_canonical::xpath_from_canonical
      Src: /src/frr/lib/yang_translator.c:61,1
    - Dst: xpath_from_canonical::xpath_from_canonical
      Src: /src/frr/lib/yang_translator.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 65
    functionName: yang_mapping_hash_alloc
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - xpath_from_canonical::xpath_from_canonical
    - strlcpy
    linkageType: ''
    returnType: void
    signature: void *yang_mapping_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/yang_translator.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: yang_mapping_hash_free
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void yang_mapping_hash_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/yang_translator.c:78,1
    - Dst: hash_lookup
      Src: /src/frr/lib/yang_translator.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - translator
    - dir
    - xpath
    argTypes:
    - struct yang_translator*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: yang_mapping_lookup
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - strlcpy
    linkageType: ''
    returnType: struct yang_mapping_node
    signature: "struct yang_mapping_node *\nyang_mapping_lookup(const struct yang_translator
      *translator, int dir,\n\t\t    const char *xpath)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_snode_get_path
      Src: /src/frr/lib/yang_translator.c:89,1
    - Dst: hash_get
      Src: /src/frr/lib/yang_translator.c:91,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_translator.c:93,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_translator.c:95,1
    - Dst: array_size
      Src: /src/frr/lib/yang_translator.c:101,1
    - Dst: frrstr_replace
      Src: /src/frr/lib/yang_translator.c:102,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_translator.c:104,1
    - Dst: XFREE
      Src: /src/frr/lib/yang_translator.c:106,1
    - Dst: array_size
      Src: /src/frr/lib/yang_translator.c:109,1
    - Dst: frrstr_replace
      Src: /src/frr/lib/yang_translator.c:110,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_translator.c:111,1
    - Dst: XFREE
      Src: /src/frr/lib/yang_translator.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 5
    argNames:
    - translator
    - dir
    - snode
    - xpath_from_fmt
    - xpath_to_fmt
    argTypes:
    - struct yang_translator*
    - int
    - struct lysc_node*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 115
    functionName: yang_mapping_add
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - frrstr_replace
    - yang_snode_get_path
    - strlcpy
    - array_size
    - XFREE
    - hash_get
    linkageType: ''
    returnType: void
    signature: "void yang_mapping_add(struct yang_translator *translator, int dir,\n\t\t\t
      \    const struct lysc_node *snode,\n\t\t\t     const char *xpath_from_fmt,\n\t\t\t
      \    const char *xpath_to_fmt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/yang_translator.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tmodule
    argTypes:
    - struct yang_tmodule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: yang_tmodule_delete
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void yang_tmodule_delete(struct yang_tmodule *tmodule)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parse_data_path
      Src: /src/frr/lib/yang_translator.c:133,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:137,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/yang_translator.c:141,1
    - Dst: assert
      Src: /src/frr/lib/yang_translator.c:147,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/yang_translator.c:149,1
    - Dst: yang_translator_find
      Src: /src/frr/lib/yang_translator.c:150,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:152,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/yang_translator.c:155,1
    - Dst: XCALLOC
      Src: /src/frr/lib/yang_translator.c:159,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_translator.c:160,1
    - Dst: list_new
      Src: /src/frr/lib/yang_translator.c:161,1
    - Dst: hash_create
      Src: /src/frr/lib/yang_translator.c:163,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/yang_translator.c:166,1
    - Dst: yang_ctx_new_setup
      Src: /src/frr/lib/yang_translator.c:169,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:171,1
    - Dst: lyd_find_xpath
      Src: /src/frr/lib/yang_translator.c:176,1
    - Dst: assert
      Src: /src/frr/lib/yang_translator.c:177,1
    - Dst: XCALLOC
      Src: /src/frr/lib/yang_translator.c:183,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/yang_translator.c:185,1
    - Dst: ly_ctx_load_module
      Src: /src/frr/lib/yang_translator.c:186,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:189,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang_translator.c:192,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/yang_translator.c:198,1
    - Dst: yang_module_nodes_count
      Src: /src/frr/lib/yang_translator.c:200,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/yang_translator.c:204,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang_translator.c:212,1
    - Dst: yang_module_nodes_count
      Src: /src/frr/lib/yang_translator.c:217,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang_translator.c:219,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/yang_translator.c:222,1
    - Dst: lyd_find_xpath
      Src: /src/frr/lib/yang_translator.c:229,1
    - Dst: assert
      Src: /src/frr/lib/yang_translator.c:230,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/yang_translator.c:236,1
    - Dst: yang_find_snode
      Src: /src/frr/lib/yang_translator.c:239,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:241,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang_translator.c:244,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/yang_translator.c:249,1
    - Dst: yang_find_snode
      Src: /src/frr/lib/yang_translator.c:250,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:252,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang_translator.c:255,1
    - Dst: yang_mapping_add
      Src: /src/frr/lib/yang_translator.c:259,1
    - Dst: yang_mapping_add
      Src: /src/frr/lib/yang_translator.c:261,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang_translator.c:264,1
    - Dst: yang_translator_validate
      Src: /src/frr/lib/yang_translator.c:267,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/yang_translator.c:270,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/yang_translator.c:275,1
    - Dst: yang_translator_unload
      Src: /src/frr/lib/yang_translator.c:276,1
    - Dst: yang_tmodule_delete
      Src: /src/frr/lib/yang_translator.c:277,1
    - Dst: yang_translator_unload
      Src: /src/frr/lib/yang_translator.c:282,1
    - Dst: hash_clean
      Src: /src/frr/lib/yang_translator.c:285,1
    - Dst: list_delete
      Src: /src/frr/lib/yang_translator.c:287,1
    - Dst: ly_ctx_destroy
      Src: /src/frr/lib/yang_translator.c:288,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/yang_translator.c:289,1
    - Dst: XFREE
      Src: /src/frr/lib/yang_translator.c:290,1
    - Dst: RB_FIND
      Src: /src/frr/lib/yang_translator.c:298,1
    - Dst: yang_find_snode
      Src: /src/frr/lib/yang_translator.c:317,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:319,1
    - Dst: yang_mapping_lookup
      Src: /src/frr/lib/yang_translator.c:326,1
    - Dst: if
      Src: /src/frr/lib/yang_translator.c:336,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:337,1
    - Dst: safe_strerror
      Src: /src/frr/lib/yang_translator.c:339,1
    - Dst: dnode_iter
      Src: /src/frr/lib/yang_translator.c:358,1
    - Dst: yang_dnode_new
      Src: /src/frr/lib/yang_translator.c:365,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/yang_translator.c:368,1
    - Dst: LYD_TREE_DFS_BEGIN
      Src: /src/frr/lib/yang_translator.c:369,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/yang_translator.c:373,1
    - Dst: yang_translate_xpath
      Src: /src/frr/lib/yang_translator.c:374,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/yang_translator.c:387,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_translator.c:390,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/yang_translator.c:396,1
    - Dst: YANG_TRANSLATE_SUCCESS::YANG_TRANSLATE_SUCCESS
      Src: /src/frr/lib/yang_translator.c:402,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts:
    - condition: (dnode)
      pos:
        line_end: 146
        line_start: 146
        source_file: /src/frr/lib/yang_translator.c
    - condition: (0)
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/frr/lib/yang_translator.c
    - condition: (0)
      pos:
        line_end: 229
        line_start: 229
        source_file: /src/frr/lib/yang_translator.c
    constantsTouched: []
    func_position:
      end: 410
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 410
    functionName: yang_translator_load
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - list_delete
    - ly_ctx_destroy
    - hash_create
    - RB_FIND
    - LYD_TREE_DFS_END
    - yang_dnode_free
    - ly_ctx_load_module
    - ly_set_free
    - YANG_TRANSLATE_SUCCESS::YANG_TRANSLATE_SUCCESS
    - flog_err
    - yang_dnode_get_string
    - LYD_TREE_DFS_BEGIN
    - yang_tmodule_delete
    - yang_dnode_get_path
    - flog_warn
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - yang_dnode_new
    - RB_INSERT
    - yang_module_nodes_count
    - safe_strerror
    - yang_mapping_lookup
    - lyd_parse_data_path
    - if
    - yang_translator_validate
    - hash_clean
    - yang_find_snode
    - assert
    - yang_translator_unload
    - yang_dnode_get
    - strlcpy
    - LY_LIST_FOR
    - XFREE
    - yang_mapping_add
    - yang_translator_find
    - RB_REMOVE
    - yang_translate_xpath
    - yang_ctx_new_setup
    - list_new
    - dnode_iter
    linkageType: ''
    returnType: struct yang_translator
    signature: struct yang_translator *yang_translator_load(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_snode_get_path
      Src: /src/frr/lib/yang_translator.c:426,1
    - Dst: yang_mapping_lookup
      Src: /src/frr/lib/yang_translator.c:427,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:430,1
    - Dst: lys_find_path
      Src: /src/frr/lib/yang_translator.c:437,1
    - Dst: assert
      Src: /src/frr/lib/yang_translator.c:438,1
    - Dst: yang_snode_get_type
      Src: /src/frr/lib/yang_translator.c:441,1
    - Dst: yang_snode_get_type
      Src: /src/frr/lib/yang_translator.c:442,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:445,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - snode_custom
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts:
    - condition: (snode_native)
      pos:
        line_end: 437
        line_start: 437
        source_file: /src/frr/lib/yang_translator.c
    constantsTouched: []
    func_position:
      end: 457
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 457
    functionName: yang_translator_validate_cb
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - yang_snode_get_path
    - lys_find_path
    - yang_mapping_lookup
    - yang_snode_get_type
    - assert
    linkageType: ''
    returnType: int
    signature: "int yang_translator_validate_cb(const struct lysc_node *snode_custom,\n\t\t\t\t
      \      void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/yang_translator.c:472,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/yang_translator.c:473,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_translator.c:482,1
    - Dst: yang_module_nodes_count_cb
      Src: /src/frr/lib/yang_translator.c:490,1
    - Dst: yang_module_nodes_count
      Src: /src/frr/lib/yang_translator.c:500,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/yang_translator.c:504,1
    - Dst: yang_translator_init
      Src: /src/frr/lib/yang_translator.c:513,1
    - Dst: yang_ctx_new_setup
      Src: /src/frr/lib/yang_translator.c:515,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_translator.c:517,1
    - Dst: exit
      Src: /src/frr/lib/yang_translator.c:518,1
    - Dst: if
      Src: /src/frr/lib/yang_translator.c:521,1
    - Dst: ly_ctx_load_module
      Src: /src/frr/lib/yang_translator.c:521,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_translator.c:523,1
    - Dst: exit
      Src: /src/frr/lib/yang_translator.c:527,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/yang_translator.c:533,1
    - Dst: yang_translator_unload
      Src: /src/frr/lib/yang_translator.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - translator
    argTypes:
    - struct yang_translator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 538
    functionName: yang_translator_validate
    functionSourceFile: /src/frr/lib/yang_translator.c
    functionUses: 1
    functionsReached:
    - exit
    - yang_translator_unload
    - flog_warn
    - ALL_LIST_ELEMENTS_RO
    - yang_module_nodes_count_cb
    - ly_ctx_load_module
    - yang_ctx_new_setup
    - yang_module_nodes_count
    - flog_err
    - yang_snodes_iterate
    - if
    - RB_EMPTY
    - yang_translator_init
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int yang_translator_validate(struct yang_translator *translator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/command_graph.c:26,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_graph.c:29,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_graph.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - type
    - attr
    - text
    - desc
    argTypes:
    - enum cmd_token_type
    - uint8_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 37
    functionName: cmd_token_new
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: struct cmd_token
    signature: "struct cmd_token *cmd_token_new(enum cmd_token_type type, uint8_t
      attr,\n\t\t\t\tconst char *text, const char *desc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/command_graph.c:44,1
    - Dst: XFREE
      Src: /src/frr/lib/command_graph.c:45,1
    - Dst: XFREE
      Src: /src/frr/lib/command_graph.c:46,1
    - Dst: XFREE
      Src: /src/frr/lib/command_graph.c:47,1
    - Dst: XFREE
      Src: /src/frr/lib/command_graph.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - token
    argTypes:
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 50
    functionName: cmd_token_del
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cmd_token_del(struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_token_new
      Src: /src/frr/lib/command_graph.c:55,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_graph.c:58,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_graph.c:59,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_graph.c:60,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_graph.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - token
    argTypes:
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: cmd_token_dup
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - cmd_token_new
    linkageType: ''
    returnType: struct cmd_token
    signature: struct cmd_token *cmd_token_dup(struct cmd_token *token)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/command_graph.c:73,1
    - Dst: strlen
      Src: /src/frr/lib/command_graph.c:75,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command_graph.c:76,1
    - Dst: tolower
      Src: /src/frr/lib/command_graph.c:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - token
    - varname
    - varname_src
    argTypes:
    - struct cmd_token*
    - char*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 91
    functionName: cmd_token_varname_do
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - strlen
    - XMALLOC
    - tolower
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void cmd_token_varname_do(struct cmd_token *token, const char *varname,\n\t\t\t\t
      uint8_t varname_src)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cmd_token_varname_do
      Src: /src/frr/lib/command_graph.c:96,1
    - Dst: strcmp
      Src: /src/frr/lib/command_graph.c:100,1
    - Dst: strcmp
      Src: /src/frr/lib/command_graph.c:100,1
    - Dst: cmd_token_varname_do
      Src: /src/frr/lib/command_graph.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - token
    - varname
    argTypes:
    - struct cmd_token*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 103
    functionName: cmd_token_varname_set
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - cmd_token_varname_do
    - strcmp
    linkageType: ''
    returnType: void
    signature: void cmd_token_varname_set(struct cmd_token *token, const char *varname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:108,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:109,1
    - Dst: cmd_token_varname_fork
      Src: /src/frr/lib/command_graph.c:113,1
    - Dst: IS_VARYING_TOKEN
      Src: /src/frr/lib/command_graph.c:118,1
    - Dst: cmd_token_varname_do
      Src: /src/frr/lib/command_graph.c:121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - node
    - prevtoken
    argTypes:
    - struct graph_node*
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 123
    functionName: cmd_token_varname_fork
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - IS_VARYING_TOKEN
    - cmd_token_varname_do
    - vector_active
    - vector_slot
    - cmd_token_varname_fork
    linkageType: ''
    returnType: void
    signature: "void cmd_token_varname_fork(struct graph_node *node,\n\t\t\t\t   struct
      cmd_token *prevtoken)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:130,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:131,1
    - Dst: cmd_token_varname_join
      Src: /src/frr/lib/command_graph.c:135,1
    - Dst: cmd_token_varname_do
      Src: /src/frr/lib/command_graph.c:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - join
    - varname
    argTypes:
    - struct graph_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 139
    functionName: cmd_token_varname_join
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - vector_active
    - vector_slot
    - cmd_token_varname_join
    - cmd_token_varname_do
    linkageType: ''
    returnType: void
    signature: void cmd_token_varname_join(struct graph_node *join, const char *varname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:151,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:154,1
    - Dst: cmd_token_varname_fork
      Src: /src/frr/lib/command_graph.c:162,1
    - Dst: cmd_token_varname_do
      Src: /src/frr/lib/command_graph.c:164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 165
    functionName: cmd_token_varname_seqappend
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - cmd_token_varname_fork
    - vector_active
    - vector_slot
    - cmd_token_varname_do
    linkageType: ''
    returnType: void
    signature: void cmd_token_varname_seqappend(struct graph_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:169,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - struct graph_node*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 173
    functionName: cmd_nodes_link
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - vector_active
    - vector_slot
    linkageType: ''
    returnType: bool
    signature: bool cmd_nodes_link(struct graph_node *from, struct graph_node *to)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - gn
    argTypes:
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 188
    functionName: cmd_loopstop
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct graph_node
    signature: struct graph_node *cmd_loopstop(struct graph_node *gn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: cmd_loopstop
      Src: /src/frr/lib/command_graph.c:195,1
    - Dst: cmd_loopstop
      Src: /src/frr/lib/command_graph.c:196,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:198,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:198,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:200,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:201,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:203,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:204,1
    - Dst: cmd_nodes_equal
      Src: /src/frr/lib/command_graph.c:211,1
    - Dst: cmd_subgraph_equal
      Src: /src/frr/lib/command_graph.c:214,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:218,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 22
    argCount: 3
    argNames:
    - ga
    - gb
    - a_join
    argTypes:
    - struct graph_node*
    - struct graph_node*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 222
    functionName: cmd_subgraph_equal
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - cmd_nodes_equal
    - vector_active
    - vector_slot
    - cmd_subgraph_equal
    - cmd_loopstop
    linkageType: ''
    returnType: bool
    signature: "bool cmd_subgraph_equal(struct graph_node *ga, struct graph_node *gb,\n\t\t\t
      \      struct graph_node *a_join)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/command_graph.c:233,1
    - Dst: cmd_nodes_link
      Src: /src/frr/lib/command_graph.c:236,1
    - Dst: cmd_nodes_link
      Src: /src/frr/lib/command_graph.c:236,1
    - Dst: strcmp
      Src: /src/frr/lib/command_graph.c:240,1
    - Dst: cmd_nodes_link
      Src: /src/frr/lib/command_graph.c:249,1
    - Dst: cmd_nodes_link
      Src: /src/frr/lib/command_graph.c:250,1
    - Dst: cmd_nodes_link
      Src: /src/frr/lib/command_graph.c:252,1
    - Dst: cmd_nodes_link
      Src: /src/frr/lib/command_graph.c:253,1
    - Dst: cmd_subgraph_equal
      Src: /src/frr/lib/command_graph.c:255,1
    - Dst: assert
      Src: /src/frr/lib/command_graph.c:273,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 2
    argNames:
    - ga
    - gb
    argTypes:
    - struct graph_node*
    - struct graph_node*
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 272
        line_start: 272
        source_file: /src/frr/lib/command_graph.c
    constantsTouched: []
    func_position:
      end: 274
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 274
    functionName: cmd_nodes_equal
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - cmd_nodes_link
    - strcmp
    - cmd_subgraph_equal
    - assert
    linkageType: ''
    returnType: bool
    signature: bool cmd_nodes_equal(struct graph_node *ga, struct graph_node *gb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmd_loopstop
      Src: /src/frr/lib/command_graph.c:281,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:284,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:285,1
    - Dst: cmd_fork_bump_attr
      Src: /src/frr/lib/command_graph.c:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - gn
    - join
    - attr
    argTypes:
    - struct graph_node*
    - struct graph_node*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 290
    functionName: cmd_fork_bump_attr
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - cmd_loopstop
    - vector_active
    - cmd_fork_bump_attr
    - vector_slot
    linkageType: ''
    returnType: void
    signature: "void cmd_fork_bump_attr(struct graph_node *gn, struct graph_node *join,\n\t\t\t
      \      uint8_t attr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cmd_loopstop
      Src: /src/frr/lib/command_graph.c:300,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:303,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:304,1
    - Dst: vector_unset
      Src: /src/frr/lib/command_graph.c:308,1
    - Dst: vector_set
      Src: /src/frr/lib/command_graph.c:309,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:313,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:314,1
    - Dst: cmd_reparent_tree
      Src: /src/frr/lib/command_graph.c:316,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - fromgraph
    - tograph
    - node
    argTypes:
    - struct graph*
    - struct graph*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 318
    functionName: cmd_reparent_tree
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - vector_active
    - vector_slot
    - vector_unset
    - vector_set
    - cmd_loopstop
    - cmd_reparent_tree
    linkageType: ''
    returnType: void
    signature: "void cmd_reparent_tree(struct graph *fromgraph, struct graph *tograph,\n\t\t\t
      \     struct graph_node *node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:325,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:326,1
    - Dst: cmd_loopstop
      Src: /src/frr/lib/command_graph.c:329,1
    - Dst: cmd_free_recur
      Src: /src/frr/lib/command_graph.c:331,1
    - Dst: cmd_free_recur
      Src: /src/frr/lib/command_graph.c:332,1
    - Dst: graph_delete_node
      Src: /src/frr/lib/command_graph.c:334,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - graph
    - node
    - stop
    argTypes:
    - struct graph*
    - struct graph_node*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 335
    functionName: cmd_free_recur
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - vector_active
    - vector_slot
    - cmd_loopstop
    - cmd_free_recur
    - graph_delete_node
    linkageType: ''
    returnType: void
    signature: "void cmd_free_recur(struct graph *graph, struct graph_node *node,\n\t\t\t
      \  struct graph_node *stop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cmd_free_recur
      Src: /src/frr/lib/command_graph.c:341,1
    - Dst: graph_delete_node
      Src: /src/frr/lib/command_graph.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - graph
    - node
    argTypes:
    - struct graph*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 343
    functionName: cmd_free_node
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - cmd_free_recur
    - graph_delete_node
    linkageType: ''
    returnType: void
    signature: void cmd_free_node(struct graph *graph, struct graph_node *node)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: cmd_loopstop
      Src: /src/frr/lib/command_graph.c:355,1
    - Dst: cmd_loopstop
      Src: /src/frr/lib/command_graph.c:356,1
    - Dst: assert
      Src: /src/frr/lib/command_graph.c:358,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:364,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:365,1
    - Dst: to::to
      Src: /src/frr/lib/command_graph.c:365,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:369,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:370,1
    - Dst: cmd_nodes_equal
      Src: /src/frr/lib/command_graph.c:374,1
    - Dst: graph_delete_node
      Src: /src/frr/lib/command_graph.c:380,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:382,1
    - Dst: graph_delete_node
      Src: /src/frr/lib/command_graph.c:384,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:389,1
    - Dst: cmd_fork_bump_attr
      Src: /src/frr/lib/command_graph.c:398,1
    - Dst: cmd_merge_nodes
      Src: /src/frr/lib/command_graph.c:408,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:414,1
    - Dst: cmd_reparent_tree
      Src: /src/frr/lib/command_graph.c:417,1
    - Dst: graph_add_edge
      Src: /src/frr/lib/command_graph.c:419,1
    - Dst: cmd_free_node
      Src: /src/frr/lib/command_graph.c:424,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 5
    argNames:
    - oldgraph
    - newgraph
    - old
    - new
    - direction
    argTypes:
    - struct graph*
    - struct graph*
    - struct graph_node*
    - struct graph_node*
    - int
    assertStmts:
    - condition: (direction == 1 || direction == -1)
      pos:
        line_end: 357
        line_start: 357
        source_file: /src/frr/lib/command_graph.c
    constantsTouched: []
    func_position:
      end: 425
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 425
    functionName: cmd_merge_nodes
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 1
    functionsReached:
    - cmd_fork_bump_attr
    - cmd_nodes_equal
    - vector_active
    - cmd_merge_nodes
    - vector_slot
    - cmd_free_node
    - graph_add_edge
    - cmd_loopstop
    - graph_delete_node
    - to::to
    - assert
    - cmd_reparent_tree
    linkageType: ''
    returnType: void
    signature: "void cmd_merge_nodes(struct graph *oldgraph, struct graph *newgraph,\n\t\t\t
      \   struct graph_node *old, struct graph_node *new,\n\t\t\t    int direction)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_graph.c:429,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:429,1
    - Dst: assert
      Src: /src/frr/lib/command_graph.c:430,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:430,1
    - Dst: nodes::nodes
      Src: /src/frr/lib/command_graph.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - old
    - new
    - direction
    argTypes:
    - struct graph*
    - struct graph*
    - int
    assertStmts:
    - condition: (vector_active(old->nodes) >= 1)
      pos:
        line_end: 428
        line_start: 428
        source_file: /src/frr/lib/command_graph.c
    - condition: (vector_active(new->nodes) >= 1)
      pos:
        line_end: 429
        line_start: 429
        source_file: /src/frr/lib/command_graph.c
    constantsTouched: []
    func_position:
      end: 434
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 434
    functionName: cmd_graph_merge
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - vector_active
    - nodes::nodes
    - assert
    linkageType: ''
    returnType: void
    signature: void cmd_graph_merge(struct graph *old, struct graph *new, int direction)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_graph.c:440,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:440,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:441,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:445,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:448,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:451,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:454,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:455,1
    - Dst: strcmp
      Src: /src/frr/lib/command_graph.c:463,1
    - Dst: cmd_token_varname_do
      Src: /src/frr/lib/command_graph.c:464,1
    - Dst: strcmp
      Src: /src/frr/lib/command_graph.c:465,1
    - Dst: cmd_token_varname_do
      Src: /src/frr/lib/command_graph.c:466,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 15
    argCount: 1
    argNames:
    - graph
    argTypes:
    - struct graph*
    assertStmts:
    - condition: (vector_active(graph->nodes) >= 1)
      pos:
        line_end: 439
        line_start: 439
        source_file: /src/frr/lib/command_graph.c
    constantsTouched: []
    func_position:
      end: 468
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 468
    functionName: cmd_graph_names
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - cmd_token_varname_do
    - vector_active
    - strcmp
    - vector_slot
    - assert
    linkageType: ''
    returnType: void
    signature: void cmd_graph_names(struct graph *graph)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:493,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:494,1
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:495,1
    - Dst: lookup_msg
      Src: /src/frr/lib/command_graph.c:496,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:497,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:499,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:502,1
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:505,1
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:510,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:511,1
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:548,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:550,1
    - Dst: vector_active
      Src: /src/frr/lib/command_graph.c:552,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:553,1
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:556,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:558,1
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:559,1
    - Dst: snprintf
      Src: /src/frr/lib/command_graph.c:564,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/command_graph.c:567,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 63
    argCount: 2
    argNames:
    - gn
    - buf
    argTypes:
    - struct graph_node*
    - struct buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 569
    functionName: cmd_graph_node_print_cb
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - snprintf
    - vector_active
    - vector_slot
    - buffer_putstr
    - lookup_msg
    linkageType: ''
    returnType: void
    signature: void cmd_graph_node_print_cb(struct graph_node *gn, struct buffer *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_slot
      Src: /src/frr/lib/command_graph.c:573,1
    - Dst: graph_dump_dot
      Src: /src/frr/lib/command_graph.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmdgraph
    argTypes:
    - struct graph*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 576
    functionName: cmd_graph_dump_dot
    functionSourceFile: /src/frr/lib/command_graph.c
    functionUses: 0
    functionsReached:
    - graph_dump_dot
    - vector_slot
    linkageType: ''
    returnType: char
    signature: char *cmd_graph_dump_dot(struct graph *cmdgraph)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wq
    argTypes:
    - struct work_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: work_queue_item_count
    functionSourceFile: /src/frr/lib/workqueue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int work_queue_item_count(struct work_queue *wq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wq
    argTypes:
    - struct work_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: work_queue_empty
    functionSourceFile: /src/frr/lib/workqueue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool work_queue_empty(struct work_queue *wq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STAILQ_LAST
      Src: /src/frr/lib/workqueue.h:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wq
    argTypes:
    - struct work_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: work_queue_last_item
    functionSourceFile: /src/frr/lib/workqueue.h
    functionUses: 1
    functionsReached:
    - STAILQ_LAST
    linkageType: ''
    returnType: struct work_queue_item
    signature: 'struct work_queue_item *

      work_queue_last_item(struct work_queue *wq)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STAILQ_INSERT_TAIL
      Src: /src/frr/lib/workqueue.h:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - wq
    - item
    argTypes:
    - struct work_queue*
    - struct work_queue_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: work_queue_item_enqueue
    functionSourceFile: /src/frr/lib/workqueue.h
    functionUses: 0
    functionsReached:
    - STAILQ_INSERT_TAIL
    linkageType: ''
    returnType: void
    signature: "void work_queue_item_enqueue(struct work_queue *wq,\n\t\t\t\t\t   struct
      work_queue_item *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/workqueue.h:130,1
    - Dst: STAILQ_REMOVE
      Src: /src/frr/lib/workqueue.h:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - wq
    - item
    argTypes:
    - struct work_queue*
    - struct work_queue_item*
    assertStmts:
    - condition: (wq->item_count > 0)
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/frr/lib/workqueue.h
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: work_queue_item_dequeue
    functionSourceFile: /src/frr/lib/workqueue.h
    functionUses: 0
    functionsReached:
    - STAILQ_REMOVE
    - assert
    linkageType: ''
    returnType: void
    signature: "void work_queue_item_dequeue(struct work_queue *wq,\n\t\t\t\t\t   struct
      work_queue_item *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct qobj_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: qobj_hash
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t qobj_hash(const struct qobj_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - na
    - nb
    argTypes:
    - struct qobj_node*
    - struct qobj_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 30
    functionName: qobj_cmp
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int qobj_cmp(const struct qobj_node *na, const struct qobj_node *nb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_wrlock
      Src: /src/frr/lib/qobj.c:42,1
    - Dst: frr_weak_random
      Src: /src/frr/lib/qobj.c:44,1
    - Dst: frr_weak_random
      Src: /src/frr/lib/qobj.c:45,1
    - Dst: qobj_nodes_find
      Src: /src/frr/lib/qobj.c:46,1
    - Dst: qobj_nodes_add
      Src: /src/frr/lib/qobj.c:47,1
    - Dst: pthread_rwlock_unlock
      Src: /src/frr/lib/qobj.c:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - type
    argTypes:
    - struct qobj_node*
    - struct qobj_nodetype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: qobj_reg
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    - qobj_nodes_add
    - pthread_rwlock_unlock
    - qobj_nodes_find
    - pthread_rwlock_wrlock
    linkageType: ''
    returnType: void
    signature: void qobj_reg(struct qobj_node *node, const struct qobj_nodetype *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_wrlock
      Src: /src/frr/lib/qobj.c:53,1
    - Dst: qobj_nodes_del
      Src: /src/frr/lib/qobj.c:54,1
    - Dst: pthread_rwlock_unlock
      Src: /src/frr/lib/qobj.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct qobj_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: qobj_unreg
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 0
    functionsReached:
    - qobj_nodes_del
    - pthread_rwlock_unlock
    - pthread_rwlock_wrlock
    linkageType: ''
    returnType: void
    signature: void qobj_unreg(struct qobj_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_rdlock
      Src: /src/frr/lib/qobj.c:61,1
    - Dst: qobj_nodes_find
      Src: /src/frr/lib/qobj.c:62,1
    - Dst: pthread_rwlock_unlock
      Src: /src/frr/lib/qobj.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: qobj_get
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_rdlock
    - pthread_rwlock_unlock
    - qobj_nodes_find
    linkageType: ''
    returnType: struct qobj_node
    signature: struct qobj_node *qobj_get(uint64_t id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_rdlock
      Src: /src/frr/lib/qobj.c:73,1
    - Dst: qobj_nodes_find
      Src: /src/frr/lib/qobj.c:74,1
    - Dst: pthread_rwlock_unlock
      Src: /src/frr/lib/qobj.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - id
    - type
    argTypes:
    - uint64_t
    - struct qobj_nodetype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 89
    functionName: qobj_get_typed
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_rdlock
    - pthread_rwlock_unlock
    - qobj_nodes_find
    linkageType: ''
    returnType: void
    signature: void *qobj_get_typed(uint64_t id, const struct qobj_nodetype *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_init
      Src: /src/frr/lib/qobj.c:93,1
    - Dst: qobj_nodes_init
      Src: /src/frr/lib/qobj.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: qobj_init
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 7
    functionsReached:
    - pthread_rwlock_init
    - qobj_nodes_init
    linkageType: ''
    returnType: void
    signature: void qobj_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qobj_nodes_pop
      Src: /src/frr/lib/qobj.c:100,1
    - Dst: qobj_nodes_del
      Src: /src/frr/lib/qobj.c:101,1
    - Dst: pthread_rwlock_destroy
      Src: /src/frr/lib/qobj.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: qobj_finish
    functionSourceFile: /src/frr/lib/qobj.c
    functionUses: 0
    functionsReached:
    - qobj_nodes_del
    - pthread_rwlock_destroy
    - qobj_nodes_pop
    linkageType: ''
    returnType: void
    signature: void qobj_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: ERRLOG
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERRLOG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: DLOG
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLOG(fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/ptm_lib.c:53,1
    - Dst: snprintf
      Src: /src/frr/lib/ptm_lib.c:54,1
    - Dst: snprintf
      Src: /src/frr/lib/ptm_lib.c:55,1
    - Dst: snprintf
      Src: /src/frr/lib/ptm_lib.c:56,1
    - Dst: snprintf
      Src: /src/frr/lib/ptm_lib.c:57,1
    - Dst: csv_encode_record
      Src: /src/frr/lib/ptm_lib.c:59,1
    - Dst: csv_encode
      Src: /src/frr/lib/ptm_lib.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - csv
    - rec
    - msglen
    - version
    - type
    - cmd_id
    - client_name
    argTypes:
    - csv_t*
    - csv_record_t*
    - int
    - int
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 66
    functionName: _ptm_lib_encode_header
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 0
    functionsReached:
    - csv_encode_record
    - csv_encode
    - snprintf
    linkageType: ''
    returnType: csv_record_t
    signature: "csv_record_t *_ptm_lib_encode_header(csv_t *csv, csv_record_t *rec,\n\t\t\t\t\t
      \   int msglen, int version, int type,\n\t\t\t\t\t    int cmd_id, char *client_name)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: csv_decode
      Src: /src/frr/lib/ptm_lib.c:76,1
    - Dst: csv_record_iter
      Src: /src/frr/lib/ptm_lib.c:77,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:79,1
    - Dst: csv_field_iter
      Src: /src/frr/lib/ptm_lib.c:82,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:84,1
    - Dst: atoi
      Src: /src/frr/lib/ptm_lib.c:87,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/ptm_lib.c:88,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:90,1
    - Dst: atoi
      Src: /src/frr/lib/ptm_lib.c:93,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/ptm_lib.c:94,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:96,1
    - Dst: atoi
      Src: /src/frr/lib/ptm_lib.c:99,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/ptm_lib.c:100,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:102,1
    - Dst: atoi
      Src: /src/frr/lib/ptm_lib.c:105,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/ptm_lib.c:106,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:108,1
    - Dst: csv_field_len
      Src: /src/frr/lib/ptm_lib.c:112,1
    - Dst: isspace
      Src: /src/frr/lib/ptm_lib.c:113,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 6
    argNames:
    - csv
    - msglen
    - version
    - type
    - cmd_id
    - client_name
    argTypes:
    - csv_t*
    - int*
    - int*
    - int*
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 121
    functionName: _ptm_lib_decode_header
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 0
    functionsReached:
    - csv_field_len
    - csv_record_iter
    - DLOG
    - csv_decode
    - csv_field_iter
    - isspace
    - csv_field_iter_next
    - atoi
    linkageType: ''
    returnType: int
    signature: "int _ptm_lib_decode_header(csv_t *csv, int *msglen, int *version,\n\t\t\t\t
      \ int *type, int *cmd_id, char *client_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:131,1
    - Dst: csv_record_iter
      Src: /src/frr/lib/ptm_lib.c:136,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/ptm_lib.c:137,1
    - Dst: csv_append_record
      Src: /src/frr/lib/ptm_lib.c:140,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:142,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/ptm_lib.c:146,1
    - Dst: csv_append_record
      Src: /src/frr/lib/ptm_lib.c:148,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:150,1
    - Dst: _ptm_lib_encode_header
      Src: /src/frr/lib/ptm_lib.c:155,1
    - Dst: csvlen
      Src: /src/frr/lib/ptm_lib.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - hdl
    - ctxt
    - key
    - val
    argTypes:
    - ptm_lib_handle_t*
    - void*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: ptm_lib_append_msg
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 5
    functionsReached:
    - csv_record_iter
    - csv_record_iter_next
    - csv_append_record
    - _ptm_lib_encode_header
    - ERRLOG
    - csvlen
    linkageType: ''
    returnType: int
    signature: "int ptm_lib_append_msg(ptm_lib_handle_t *hdl, void *ctxt, const char
      *key,\n\t\t       const char *val)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: csv_init
      Src: /src/frr/lib/ptm_lib.c:171,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:174,1
    - Dst: _ptm_lib_encode_header
      Src: /src/frr/lib/ptm_lib.c:178,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:182,1
    - Dst: csv_clean
      Src: /src/frr/lib/ptm_lib.c:183,1
    - Dst: csv_free
      Src: /src/frr/lib/ptm_lib.c:184,1
    - Dst: calloc
      Src: /src/frr/lib/ptm_lib.c:188,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:190,1
    - Dst: csv_clean
      Src: /src/frr/lib/ptm_lib.c:191,1
    - Dst: csv_free
      Src: /src/frr/lib/ptm_lib.c:192,1
    - Dst: csv_record_iter
      Src: /src/frr/lib/ptm_lib.c:205,1
    - Dst: csv_clone_record
      Src: /src/frr/lib/ptm_lib.c:206,1
    - Dst: csv_insert_record
      Src: /src/frr/lib/ptm_lib.c:207,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/ptm_lib.c:209,1
    - Dst: csv_clone_record
      Src: /src/frr/lib/ptm_lib.c:210,1
    - Dst: csv_insert_record
      Src: /src/frr/lib/ptm_lib.c:211,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 5
    argNames:
    - hdl
    - cmd_id
    - type
    - in_ctxt
    - out_ctxt
    argTypes:
    - ptm_lib_handle_t*
    - int
    - int
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 214
    functionName: ptm_lib_init_msg
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 5
    functionsReached:
    - csv_record_iter
    - csv_record_iter_next
    - _ptm_lib_encode_header
    - ERRLOG
    - csv_clone_record
    - csv_insert_record
    - csv_init
    - csv_clean
    - csv_free
    - calloc
    linkageType: ''
    returnType: int
    signature: "int ptm_lib_init_msg(ptm_lib_handle_t *hdl, int cmd_id, int type,
      void *in_ctxt,\n\t\t     void **out_ctxt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:222,1
    - Dst: csv_clean
      Src: /src/frr/lib/ptm_lib.c:228,1
    - Dst: csv_free
      Src: /src/frr/lib/ptm_lib.c:229,1
    - Dst: free
      Src: /src/frr/lib/ptm_lib.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - hdl
    - ctxt
    argTypes:
    - ptm_lib_handle_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 233
    functionName: ptm_lib_cleanup_msg
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 2
    functionsReached:
    - csv_clean
    - free
    - csv_free
    - ERRLOG
    linkageType: ''
    returnType: int
    signature: int ptm_lib_cleanup_msg(ptm_lib_handle_t *hdl, void *ctxt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:242,1
    - Dst: csv_record_iter
      Src: /src/frr/lib/ptm_lib.c:247,1
    - Dst: _ptm_lib_encode_header
      Src: /src/frr/lib/ptm_lib.c:249,1
    - Dst: csvlen
      Src: /src/frr/lib/ptm_lib.c:249,1
    - Dst: csv_serialize
      Src: /src/frr/lib/ptm_lib.c:255,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:256,1
    - Dst: csvlen
      Src: /src/frr/lib/ptm_lib.c:259,1
    - Dst: csv_clean
      Src: /src/frr/lib/ptm_lib.c:262,1
    - Dst: csv_free
      Src: /src/frr/lib/ptm_lib.c:263,1
    - Dst: free
      Src: /src/frr/lib/ptm_lib.c:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - hdl
    - ctxt
    - buf
    - len
    argTypes:
    - ptm_lib_handle_t*
    - void*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 267
    functionName: ptm_lib_complete_msg
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 5
    functionsReached:
    - csv_serialize
    - csv_record_iter
    - free
    - _ptm_lib_encode_header
    - ERRLOG
    - csvlen
    - csv_clean
    - csv_free
    linkageType: ''
    returnType: int
    signature: int ptm_lib_complete_msg(ptm_lib_handle_t *hdl, void *ctxt, char *buf,
      int *len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: csv_num_records
      Src: /src/frr/lib/ptm_lib.c:282,1
    - Dst: csv_record_iter
      Src: /src/frr/lib/ptm_lib.c:283,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/ptm_lib.c:284,1
    - Dst: csv_record_iter
      Src: /src/frr/lib/ptm_lib.c:286,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/ptm_lib.c:288,1
    - Dst: csv_field_iter
      Src: /src/frr/lib/ptm_lib.c:290,1
    - Dst: csv_field_iter
      Src: /src/frr/lib/ptm_lib.c:291,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/ptm_lib.c:292,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/ptm_lib.c:293,1
    - Dst: strncmp
      Src: /src/frr/lib/ptm_lib.c:294,1
    - Dst: csv_field_len
      Src: /src/frr/lib/ptm_lib.c:294,1
    - Dst: snprintf
      Src: /src/frr/lib/ptm_lib.c:295,1
    - Dst: csv_field_len
      Src: /src/frr/lib/ptm_lib.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ctxt
    - key
    - val
    argTypes:
    - void*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 301
    functionName: ptm_lib_find_key_in_msg
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 2
    functionsReached:
    - csv_field_len
    - snprintf
    - csv_record_iter
    - csv_record_iter_next
    - csv_field_iter
    - strncmp
    - csv_field_iter_next
    - csv_num_records
    linkageType: ''
    returnType: int
    signature: int ptm_lib_find_key_in_msg(void *ctxt, const char *key, char *val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/frr/lib/ptm_lib.c:309,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:314,1
    - Dst: strerror
      Src: /src/frr/lib/ptm_lib.c:315,1
    - Dst: usleep
      Src: /src/frr/lib/ptm_lib.c:319,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:322,1
    - Dst: strerror
      Src: /src/frr/lib/ptm_lib.c:323,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - fd
    - buf
    - len
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 333
    functionName: _ptm_lib_read_ptm_socket
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 0
    functionsReached:
    - strerror
    - DLOG
    - ERRLOG
    - recv
    - usleep
    linkageType: ''
    returnType: int
    signature: int _ptm_lib_read_ptm_socket(int fd, char *buf, int len)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: _ptm_lib_read_ptm_socket
      Src: /src/frr/lib/ptm_lib.c:344,1
    - Dst: csv_init
      Src: /src/frr/lib/ptm_lib.c:348,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:351,1
    - Dst: _ptm_lib_decode_header
      Src: /src/frr/lib/ptm_lib.c:355,1
    - Dst: csv_clean
      Src: /src/frr/lib/ptm_lib.c:358,1
    - Dst: csv_free
      Src: /src/frr/lib/ptm_lib.c:359,1
    - Dst: _ptm_lib_read_ptm_socket
      Src: /src/frr/lib/ptm_lib.c:367,1
    - Dst: strcmp
      Src: /src/frr/lib/ptm_lib.c:376,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:377,1
    - Dst: ptm_lib_init_msg
      Src: /src/frr/lib/ptm_lib.c:381,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:384,1
    - Dst: ptm_lib_append_msg
      Src: /src/frr/lib/ptm_lib.c:387,1
    - Dst: DLOG
      Src: /src/frr/lib/ptm_lib.c:392,1
    - Dst: _ptm_lib_read_ptm_socket
      Src: /src/frr/lib/ptm_lib.c:397,1
    - Dst: csv_init
      Src: /src/frr/lib/ptm_lib.c:404,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:406,1
    - Dst: csv_decode
      Src: /src/frr/lib/ptm_lib.c:410,1
    - Dst: calloc
      Src: /src/frr/lib/ptm_lib.c:411,1
    - Dst: ERRLOG
      Src: /src/frr/lib/ptm_lib.c:413,1
    - Dst: csv_clean
      Src: /src/frr/lib/ptm_lib.c:414,1
    - Dst: csv_free
      Src: /src/frr/lib/ptm_lib.c:415,1
    - Dst: ptm_lib_handle_t*::notify_cb
      Src: /src/frr/lib/ptm_lib.c:427,1
    - Dst: ptm_lib_handle_t*::cmd_cb
      Src: /src/frr/lib/ptm_lib.c:431,1
    - Dst: ptm_lib_handle_t*::response_cb
      Src: /src/frr/lib/ptm_lib.c:435,1
    - Dst: csv_clean
      Src: /src/frr/lib/ptm_lib.c:441,1
    - Dst: csv_free
      Src: /src/frr/lib/ptm_lib.c:442,1
    - Dst: free
      Src: /src/frr/lib/ptm_lib.c:443,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 5
    argNames:
    - hdl
    - fd
    - inbuf
    - inlen
    - arg
    argTypes:
    - ptm_lib_handle_t*
    - int
    - char*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 335
    functionDepth: 3
    functionLinenumber: 335
    functionLinenumberEnd: 446
    functionName: ptm_lib_process_msg
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 1
    functionsReached:
    - ptm_lib_init_msg
    - _ptm_lib_read_ptm_socket
    - ptm_lib_append_msg
    - ptm_lib_handle_t*::cmd_cb
    - DLOG
    - strcmp
    - free
    - ERRLOG
    - csv_decode
    - ptm_lib_handle_t*::response_cb
    - ptm_lib_handle_t*::notify_cb
    - _ptm_lib_decode_header
    - csv_init
    - csv_clean
    - csv_free
    - calloc
    linkageType: ''
    returnType: int
    signature: "int ptm_lib_process_msg(ptm_lib_handle_t *hdl, int fd, char *inbuf,
      int inlen,\n\t\t\tvoid *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/lib/ptm_lib.c:454,1
    - Dst: strncpy
      Src: /src/frr/lib/ptm_lib.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - client_name
    - cmd_cb
    - notify_cb
    - response_cb
    argTypes:
    - char*
    - ptm_cmd_cb
    - ptm_notify_cb
    - ptm_response_cb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 464
    functionName: ptm_lib_register
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 1
    functionsReached:
    - strncpy
    - calloc
    linkageType: ''
    returnType: ptm_lib_handle_t
    signature: "ptm_lib_handle_t *ptm_lib_register(char *client_name, ptm_cmd_cb cmd_cb,\n\t\t\t\t
      \  ptm_notify_cb notify_cb,\n\t\t\t\t   ptm_response_cb response_cb)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/ptm_lib.c:469,1
    - Dst: free
      Src: /src/frr/lib/ptm_lib.c:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hdl
    argTypes:
    - ptm_lib_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 472
    functionName: ptm_lib_deregister
    functionSourceFile: /src/frr/lib/ptm_lib.c
    functionUses: 0
    functionsReached:
    - free
    - memset
    linkageType: ''
    returnType: void
    signature: void ptm_lib_deregister(ptm_lib_handle_t *hdl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 32
    functionName: LISTNODE_ATTACH
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LISTNODE_ATTACH(L, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: LISTNODE_DETACH
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LISTNODE_DETACH(L, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/linklist.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: list_new
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 211
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct list
    signature: struct list *list_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/linklist.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: list_free_internal
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void list_free_internal(struct list *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/linklist.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - struct list*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 75
    functionName: listnode_new
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct listnode
    signature: struct listnode *listnode_new(struct list *list, void *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/linklist.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - list
    - node
    argTypes:
    - struct list*
    - struct listnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: listnode_free
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void listnode_free(struct list *list, struct listnode *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/linklist.c:86,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:90,1
    - Dst: listnode_new
      Src: /src/frr/lib/linklist.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - struct list*
    - void*
    assertStmts:
    - condition: (val != NULL)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/lib/linklist.c
    constantsTouched: []
    func_position:
      end: 105
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 105
    functionName: listnode_add
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 203
    functionsReached:
    - listnode_new
    - assert
    - frrtrace
    linkageType: ''
    returnType: struct listnode
    signature: struct listnode *listnode_add(struct list *list, void *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/linklist.c:111,1
    - Dst: listnode_new
      Src: /src/frr/lib/linklist.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - struct list*
    - void*
    assertStmts:
    - condition: (val != NULL)
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/frr/lib/linklist.c
    constantsTouched: []
    func_position:
      end: 125
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 125
    functionName: listnode_add_head
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 2
    functionsReached:
    - listnode_new
    - assert
    linkageType: ''
    returnType: void
    signature: void listnode_add_head(struct list *list, void *val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/linklist.c:134,1
    - Dst: listnode_new::listnode_new
      Src: /src/frr/lib/linklist.c:147,1
    - Dst: n::n
      Src: /src/frr/lib/linklist.c:155,1
    - Dst: list::list
      Src: /src/frr/lib/linklist.c:156,1
    - Dst: listnode_new::listnode_new
      Src: /src/frr/lib/linklist.c:166,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - struct list*
    - void*
    assertStmts:
    - condition: (val != NULL)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/frr/lib/linklist.c
    constantsTouched: []
    func_position:
      end: 171
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 171
    functionName: listnode_add_sort_nodup
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 10
    functionsReached:
    - listnode_new::listnode_new
    - list::list
    - assert
    - n::n
    linkageType: ''
    returnType: bool
    signature: bool listnode_add_sort_nodup(struct list *list, void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/linklist.c:179,1
    - Dst: list_new
      Src: /src/frr/lib/linklist.c:181,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/linklist.c:184,1
    - Dst: listnode_add
      Src: /src/frr/lib/linklist.c:185,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:195,1
    - Dst: listnode_new::listnode_new
      Src: /src/frr/lib/linklist.c:197,1
    - Dst: data::data
      Src: /src/frr/lib/linklist.c:198,1
    - Dst: if
      Src: /src/frr/lib/linklist.c:200,1
    - Dst: if
      Src: /src/frr/lib/linklist.c:206,1
    - Dst: list::list
      Src: /src/frr/lib/linklist.c:207,1
    - Dst: n::n
      Src: /src/frr/lib/linklist.c:209,1
    - Dst: list::list
      Src: /src/frr/lib/linklist.c:210,1
    - Dst: if
      Src: /src/frr/lib/linklist.c:219,1
    - Dst: list::list
      Src: /src/frr/lib/linklist.c:222,1
    - Dst: list::list
      Src: /src/frr/lib/linklist.c:224,1
    - Dst: listnode_add_after
      Src: /src/frr/lib/linklist.c:228,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:233,1
    - Dst: listnode_new
      Src: /src/frr/lib/linklist.c:235,1
    - Dst: listnode_add_before
      Src: /src/frr/lib/linklist.c:262,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:267,1
    - Dst: listnode_new
      Src: /src/frr/lib/linklist.c:269,1
    - Dst: listnode_move_to_tail
      Src: /src/frr/lib/linklist.c:296,1
    - Dst: LISTNODE_DETACH
      Src: /src/frr/lib/linklist.c:298,1
    - Dst: LISTNODE_ATTACH
      Src: /src/frr/lib/linklist.c:299,1
    - Dst: listnode_delete
      Src: /src/frr/lib/linklist.c:302,1
    - Dst: frrtrace
      Src: /src/frr/lib/linklist.c:304,1
    - Dst: listnode_lookup
      Src: /src/frr/lib/linklist.c:306,1
    - Dst: list_delete_node
      Src: /src/frr/lib/linklist.c:309,1
    - Dst: listnode_head
      Src: /src/frr/lib/linklist.c:312,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:316,1
    - Dst: list_delete_all_node
      Src: /src/frr/lib/linklist.c:324,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:329,1
    - Dst: listnode_free
      Src: /src/frr/lib/linklist.c:334,1
    - Dst: list_delete
      Src: /src/frr/lib/linklist.c:340,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:342,1
    - Dst: list_delete_all_node
      Src: /src/frr/lib/linklist.c:343,1
    - Dst: list_free_internal
      Src: /src/frr/lib/linklist.c:344,1
    - Dst: listnode_lookup
      Src: /src/frr/lib/linklist.c:348,1
    - Dst: assert
      Src: /src/frr/lib/linklist.c:352,1
    - Dst: listhead
      Src: /src/frr/lib/linklist.c:353,1
    - Dst: listnextnode
      Src: /src/frr/lib/linklist.c:353,1
    - Dst: if
      Src: /src/frr/lib/linklist.c:354,1
    - Dst: listgetdata
      Src: /src/frr/lib/linklist.c:354,1
    - Dst: listnode_lookup_nocheck
      Src: /src/frr/lib/linklist.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct list*
    assertStmts:
    - condition: (val != NULL)
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/frr/lib/linklist.c
    - condition: (*list)
      pos:
        line_end: 341
        line_start: 341
        source_file: /src/frr/lib/linklist.c
    - condition: (list)
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/frr/lib/linklist.c
    - condition: (list)
      pos:
        line_end: 351
        line_start: 351
        source_file: /src/frr/lib/linklist.c
    - condition: (val != NULL)
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/frr/lib/linklist.c
    - condition: (list)
      pos:
        line_end: 328
        line_start: 328
        source_file: /src/frr/lib/linklist.c
    - condition: (list)
      pos:
        line_end: 178
        line_start: 178
        source_file: /src/frr/lib/linklist.c
    - condition: (val != NULL)
      pos:
        line_end: 194
        line_start: 194
        source_file: /src/frr/lib/linklist.c
    constantsTouched: []
    func_position:
      end: 364
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 364
    functionName: list_dup
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 7
    functionsReached:
    - list_delete
    - n::n
    - listnode_lookup_nocheck
    - listnode_new::listnode_new
    - listhead
    - listnode_add
    - LISTNODE_DETACH
    - data::data
    - frrtrace
    - list_free_internal
    - ALL_LIST_ELEMENTS_RO
    - listnode_free
    - list_delete_all_node
    - if
    - listgetdata
    - LISTNODE_ATTACH
    - listnode_add_before
    - assert
    - listnextnode
    - listnode_add_after
    - listnode_move_to_tail
    - list::list
    - list_delete_node
    - listnode_new
    - listnode_head
    - listnode_delete
    - listnode_lookup
    - list_new
    linkageType: ''
    returnType: struct list
    signature: struct list *list_dup(struct list *list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/linklist.c:368,1
    - Dst: listnode_free
      Src: /src/frr/lib/linklist.c:379,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - list
    - node
    argTypes:
    - struct list*
    - struct listnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 380
    functionName: list_delete_node
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 47
    functionsReached:
    - listnode_free
    - frrtrace
    linkageType: ''
    returnType: void
    signature: void list_delete_node(struct list *list, struct listnode *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/linklist.c:384,1
    - Dst: XCALLOC
      Src: /src/frr/lib/linklist.c:397,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/linklist.c:399,1
    - Dst: list_delete_node
      Src: /src/frr/lib/linklist.c:401,1
    - Dst: qsort
      Src: /src/frr/lib/linklist.c:404,1
    - Dst: listnode_add
      Src: /src/frr/lib/linklist.c:407,1
    - Dst: XFREE
      Src: /src/frr/lib/linklist.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 410
    functionName: list_sort
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - qsort
    - listnode_add
    - list_delete_node
    - XFREE
    - frrtrace
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void list_sort(struct list *list, int (*cmp)(const void **, const void
      **))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/linklist.c:415,1
    - Dst: listnode_add
      Src: /src/frr/lib/linklist.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - list
    - val
    argTypes:
    - struct list**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 412
    functionDepth: 2
    functionLinenumber: 412
    functionLinenumberEnd: 417
    functionName: listnode_add_force
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 2
    functionsReached:
    - list_new
    - listnode_add
    linkageType: ''
    returnType: struct listnode
    signature: struct listnode *listnode_add_force(struct list **list, void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/linklist.c:425,1
    - Dst: if
      Src: /src/frr/lib/linklist.c:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 432
    functionName: list_to_array
    functionSourceFile: /src/frr/lib/linklist.c
    functionUses: 0
    functionsReached:
    - if
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: void **list_to_array(struct list *list, void **arr, size_t arrlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/wheel.c:29,1
    - Dst: zlog_debug
      Src: /src/frr/lib/wheel.c:36,1
    - Dst: listcount
      Src: /src/frr/lib/wheel.c:38,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/wheel.c:40,1
    - Dst: while
      Src: /src/frr/lib/wheel.c:44,1
    - Dst: list_isempty
      Src: /src/frr/lib/wheel.c:44,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/wheel.c:50,1
    - Dst: wheel_timer_thread
      Src: /src/frr/lib/wheel.c:54,1
    - Dst: EVENT_ARG
      Src: /src/frr/lib/wheel.c:58,1
    - Dst: event_execute
      Src: /src/frr/lib/wheel.c:60,1
    - Dst: wheel_init
      Src: /src/frr/lib/wheel.c:63,1
    - Dst: unsigned
      Src: /src/frr/lib/wheel.c:65,1
    - Dst: XCALLOC
      Src: /src/frr/lib/wheel.c:71,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/wheel.c:73,1
    - Dst: XCALLOC
      Src: /src/frr/lib/wheel.c:83,1
    - Dst: list_new
      Src: /src/frr/lib/wheel.c:86,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/wheel.c:88,1
    - Dst: list_delete
      Src: /src/frr/lib/wheel.c:99,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/wheel.c:102,1
    - Dst: XFREE
      Src: /src/frr/lib/wheel.c:103,1
    - Dst: XFREE
      Src: /src/frr/lib/wheel.c:104,1
    - Dst: XFREE
      Src: /src/frr/lib/wheel.c:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 106
    functionName: wheel_timer_thread_helper
    functionSourceFile: /src/frr/lib/wheel.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XCALLOC
    - wheel_timer_thread
    - listcount
    - list_isempty
    - event_execute
    - unsigned
    - event_add_timer_msec
    - zlog_debug
    - EVENT_OFF
    - list_new
    - while
    - EVENT_ARG
    - wheel_init
    - ALL_LIST_ELEMENTS
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void wheel_timer_thread_helper(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/wheel.c:115,1
    - Dst: listnode_add
      Src: /src/frr/lib/wheel.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - wheel
    - item
    argTypes:
    - struct timer_wheel*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 120
    functionName: wheel_add_item
    functionSourceFile: /src/frr/lib/wheel.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - listnode_add
    linkageType: ''
    returnType: int
    signature: int wheel_add_item(struct timer_wheel *wheel, void *item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/wheel.c:129,1
    - Dst: listnode_delete
      Src: /src/frr/lib/wheel.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - wheel
    - item
    argTypes:
    - struct timer_wheel*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 134
    functionName: wheel_remove_item
    functionSourceFile: /src/frr/lib/wheel.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int wheel_remove_item(struct timer_wheel *wheel, void *item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: log_error
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_error(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: log_verbose
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_verbose(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - csv
    argTypes:
    - csv_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: csvlen
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int csvlen(csv_t *csv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/lib/csv.c:70,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:72,1
    - Dst: memset
      Src: /src/frr/lib/csv.c:76,1
    - Dst: TAILQ_INIT
      Src: /src/frr/lib/csv.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - csv
    - buf
    - buflen
    argTypes:
    - csv_t*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 82
    functionName: csv_init
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached:
    - malloc
    - log_error
    - TAILQ_INIT
    - memset
    linkageType: ''
    returnType: csv_t
    signature: csv_t *csv_init(csv_t *csv, char *buf, int buflen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FIRST
      Src: /src/frr/lib/csv.c:89,1
    - Dst: TAILQ_NEXT
      Src: /src/frr/lib/csv.c:91,1
    - Dst: csv_remove_record
      Src: /src/frr/lib/csv.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - csv
    argTypes:
    - csv_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 95
    functionName: csv_clean
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 4
    functionsReached:
    - TAILQ_NEXT
    - TAILQ_FIRST
    - csv_remove_record
    linkageType: ''
    returnType: void
    signature: void csv_clean(csv_t *csv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/lib/csv.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - csv
    argTypes:
    - csv_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: csv_free
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void csv_free(csv_t *csv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_INIT
      Src: /src/frr/lib/csv.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - record
    argTypes:
    - csv_record_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: csv_init_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached:
    - TAILQ_INIT
    linkageType: ''
    returnType: void
    signature: void csv_init_record(csv_record_t *record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FIRST
      Src: /src/frr/lib/csv.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - csv
    argTypes:
    - csv_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: csv_record_iter
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 5
    functionsReached:
    - TAILQ_FIRST
    linkageType: ''
    returnType: csv_record_t
    signature: csv_record_t *csv_record_iter(csv_t *csv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_NEXT
      Src: /src/frr/lib/csv.c:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rec
    argTypes:
    - csv_record_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: csv_record_iter_next
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 3
    functionsReached:
    - TAILQ_NEXT
    linkageType: ''
    returnType: csv_record_t
    signature: csv_record_t *csv_record_iter_next(csv_record_t *rec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FIRST
      Src: /src/frr/lib/csv.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rec
    - fld
    argTypes:
    - csv_record_t*
    - csv_field_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: csv_field_iter
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached:
    - TAILQ_FIRST
    linkageType: ''
    returnType: char
    signature: char *csv_field_iter(csv_record_t *rec, csv_field_t **fld)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_NEXT
      Src: /src/frr/lib/csv.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fld
    argTypes:
    - csv_field_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: csv_field_iter_next
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached:
    - TAILQ_NEXT
    linkageType: ''
    returnType: char
    signature: char *csv_field_iter_next(csv_field_t **fld)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fld
    argTypes:
    - csv_field_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 145
    functionName: csv_field_len
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int csv_field_len(csv_field_t *fld)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/frr/lib/csv.c:153,1
    - Dst: malloc
      Src: /src/frr/lib/csv.c:155,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/csv.c:157,1
    - Dst: strpbrk
      Src: /src/frr/lib/csv.c:162,1
    - Dst: strstr
      Src: /src/frr/lib/csv.c:164,1
    - Dst: malloc
      Src: /src/frr/lib/csv.c:168,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/csv.c:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - rec
    argTypes:
    - csv_record_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 174
    functionName: csv_decode_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached:
    - strpbrk
    - strstr
    - malloc
    - TAILQ_INSERT_TAIL
    linkageType: ''
    returnType: void
    signature: void csv_decode_record(csv_record_t *rec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/lib/csv.c:184,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:186,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/csv.c:190,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - csv
    - rec
    - col
    argTypes:
    - csv_t*
    - csv_record_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 196
    functionName: csv_add_field_to_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached:
    - malloc
    - log_error
    - snprintf
    - TAILQ_INSERT_TAIL
    linkageType: ''
    returnType: csv_field_t
    signature: "csv_field_t *csv_add_field_to_record(csv_t *csv, csv_record_t *rec,\n\t\t\t\t\t
      \   char *col)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/lib/csv.c:214,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:216,1
    - Dst: va_start
      Src: /src/frr/lib/csv.c:221,1
    - Dst: malloc
      Src: /src/frr/lib/csv.c:222,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:224,1
    - Dst: free
      Src: /src/frr/lib/csv.c:226,1
    - Dst: va_end
      Src: /src/frr/lib/csv.c:227,1
    - Dst: csv_init_record
      Src: /src/frr/lib/csv.c:230,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/csv.c:232,1
    - Dst: va_arg
      Src: /src/frr/lib/csv.c:239,1
    - Dst: csv_add_field_to_record
      Src: /src/frr/lib/csv.c:240,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:242,1
    - Dst: csv_remove_record
      Src: /src/frr/lib/csv.c:243,1
    - Dst: va_end
      Src: /src/frr/lib/csv.c:244,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:248,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:253,1
    - Dst: va_end
      Src: /src/frr/lib/csv.c:254,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 2
    argNames:
    - csv
    - count
    argTypes:
    - csv_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 258
    functionName: csv_encode
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 1
    functionsReached:
    - va_arg
    - snprintf
    - malloc
    - csv_add_field_to_record
    - free
    - csv_remove_record
    - TAILQ_INSERT_TAIL
    - va_start
    - va_end
    - csv_init_record
    - log_error
    linkageType: ''
    returnType: csv_record_t
    signature: csv_record_t *csv_encode(csv_t *csv, int count, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - csv
    argTypes:
    - csv_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: csv_num_records
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int csv_num_records(csv_t *csv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/csv.c:277,1
    - Dst: csv_field_iter
      Src: /src/frr/lib/csv.c:278,1
    - Dst: va_end
      Src: /src/frr/lib/csv.c:280,1
    - Dst: va_arg
      Src: /src/frr/lib/csv.c:285,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/csv.c:289,1
    - Dst: va_end
      Src: /src/frr/lib/csv.c:291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - csv
    - rec
    - count
    argTypes:
    - csv_t*
    - csv_record_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 293
    functionName: csv_encode_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 1
    functionsReached:
    - va_arg
    - csv_field_iter
    - va_start
    - va_end
    - csv_field_iter_next
    linkageType: ''
    returnType: csv_record_t
    signature: csv_record_t *csv_encode_record(csv_t *csv, csv_record_t *rec, int
      count, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/lib/csv.c:311,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:313,1
    - Dst: csv_init_record
      Src: /src/frr/lib/csv.c:316,1
    - Dst: calloc
      Src: /src/frr/lib/csv.c:317,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:319,1
    - Dst: free
      Src: /src/frr/lib/csv.c:320,1
    - Dst: csv_insert_record
      Src: /src/frr/lib/csv.c:323,1
    - Dst: va_start
      Src: /src/frr/lib/csv.c:328,1
    - Dst: va_arg
      Src: /src/frr/lib/csv.c:338,1
    - Dst: csv_add_field_to_record
      Src: /src/frr/lib/csv.c:339,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:341,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:345,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:350,1
    - Dst: va_end
      Src: /src/frr/lib/csv.c:351,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - csv
    - rec
    - count
    argTypes:
    - csv_t*
    - csv_record_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 355
    functionName: csv_append_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 1
    functionsReached:
    - va_arg
    - snprintf
    - csv_add_field_to_record
    - free
    - va_start
    - csv_insert_record
    - va_end
    - csv_init_record
    - log_error
    - calloc
    linkageType: ''
    returnType: csv_record_t
    signature: csv_record_t *csv_append_record(csv_t *csv, csv_record_t *rec, int
      count, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: csv_record_iter
      Src: /src/frr/lib/csv.c:365,1
    - Dst: sprintf
      Src: /src/frr/lib/csv.c:369,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/csv.c:370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - csv
    - msgbuf
    - msglen
    argTypes:
    - csv_t*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 374
    functionName: csv_serialize
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 1
    functionsReached:
    - csv_record_iter
    - sprintf
    - csv_record_iter_next
    linkageType: ''
    returnType: int
    signature: int csv_serialize(csv_t *csv, char *msgbuf, int msglen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: csv_is_record_valid
      Src: /src/frr/lib/csv.c:382,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:383,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:389,1
    - Dst: calloc
      Src: /src/frr/lib/csv.c:395,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:397,1
    - Dst: csv_init_record
      Src: /src/frr/lib/csv.c:400,1
    - Dst: calloc
      Src: /src/frr/lib/csv.c:401,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:403,1
    - Dst: free
      Src: /src/frr/lib/csv.c:404,1
    - Dst: strlcpy
      Src: /src/frr/lib/csv.c:409,1
    - Dst: csv_decode_record
      Src: /src/frr/lib/csv.c:412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - csv
    - in_rec
    - out_rec
    argTypes:
    - csv_t*
    - csv_record_t*
    - csv_record_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 415
    functionName: csv_clone_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - free
    - csv_init_record
    - csv_is_record_valid
    - log_error
    - csv_decode_record
    - calloc
    linkageType: ''
    returnType: void
    signature: void csv_clone_record(csv_t *csv, csv_record_t *in_rec, csv_record_t
      **out_rec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: csv_is_record_valid
      Src: /src/frr/lib/csv.c:422,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:423,1
    - Dst: csv_field_iter
      Src: /src/frr/lib/csv.c:428,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/csv.c:431,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/lib/csv.c:432,1
    - Dst: free
      Src: /src/frr/lib/csv.c:433,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/lib/csv.c:436,1
    - Dst: free
      Src: /src/frr/lib/csv.c:442,1
    - Dst: free
      Src: /src/frr/lib/csv.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - csv
    - rec
    argTypes:
    - csv_t*
    - csv_record_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 444
    functionName: csv_remove_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached:
    - TAILQ_REMOVE
    - free
    - csv_field_iter
    - csv_field_iter_next
    - csv_is_record_valid
    - log_error
    linkageType: ''
    returnType: void
    signature: void csv_remove_record(csv_t *csv, csv_record_t *rec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: csv_is_record_valid
      Src: /src/frr/lib/csv.c:449,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:450,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:456,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:463,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/csv.c:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - csv
    - rec
    argTypes:
    - csv_t*
    - csv_record_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 471
    functionName: csv_insert_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached:
    - csv_is_record_valid
    - log_error
    - TAILQ_INSERT_TAIL
    linkageType: ''
    returnType: void
    signature: void csv_insert_record(csv_t *csv, csv_record_t *rec)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: csv_is_record_valid
      Src: /src/frr/lib/csv.c:481,1
    - Dst: csv_is_record_valid
      Src: /src/frr/lib/csv.c:482,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:483,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:489,1
    - Dst: calloc
      Src: /src/frr/lib/csv.c:495,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:497,1
    - Dst: csv_init_record
      Src: /src/frr/lib/csv.c:500,1
    - Dst: calloc
      Src: /src/frr/lib/csv.c:502,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:504,1
    - Dst: strstr
      Src: /src/frr/lib/csv.c:510,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:512,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:516,1
    - Dst: strcat
      Src: /src/frr/lib/csv.c:517,1
    - Dst: strstr
      Src: /src/frr/lib/csv.c:519,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:521,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:525,1
    - Dst: strlen
      Src: /src/frr/lib/csv.c:525,1
    - Dst: strcat
      Src: /src/frr/lib/csv.c:527,1
    - Dst: strlen
      Src: /src/frr/lib/csv.c:528,1
    - Dst: assert
      Src: /src/frr/lib/csv.c:531,1
    - Dst: csv_decode_record
      Src: /src/frr/lib/csv.c:535,1
    - Dst: csv_remove_record
      Src: /src/frr/lib/csv.c:538,1
    - Dst: csv_remove_record
      Src: /src/frr/lib/csv.c:539,1
    - Dst: csv_insert_record
      Src: /src/frr/lib/csv.c:540,1
    - Dst: free
      Src: /src/frr/lib/csv.c:545,1
    - Dst: free
      Src: /src/frr/lib/csv.c:547,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 3
    argNames:
    - csv
    - rec1
    - rec2
    argTypes:
    - csv_t*
    - csv_record_t*
    - csv_record_t*
    assertStmts:
    - condition: "(csv->buflen\n\t       > (csv->csv_len - rec1->rec_len - rec2->rec_len
        + rec->rec_len))"
      pos:
        line_end: 531
        line_start: 530
        source_file: /src/frr/lib/csv.c
    constantsTouched: []
    func_position:
      end: 549
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 549
    functionName: csv_concat_record
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached:
    - strstr
    - assert
    - strlen
    - snprintf
    - csv_remove_record
    - free
    - strcat
    - csv_insert_record
    - csv_init_record
    - csv_is_record_valid
    - log_error
    - csv_decode_record
    - calloc
    linkageType: ''
    returnType: csv_record_t
    signature: "csv_record_t *csv_concat_record(csv_t *csv, csv_record_t *rec1,\n\t\t\t\tcsv_record_t
      *rec2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/csv.c:558,1
    - Dst: strpbrk
      Src: /src/frr/lib/csv.c:560,1
    - Dst: calloc
      Src: /src/frr/lib/csv.c:562,1
    - Dst: csv_init_record
      Src: /src/frr/lib/csv.c:565,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/csv.c:566,1
    - Dst: calloc
      Src: /src/frr/lib/csv.c:571,1
    - Dst: log_error
      Src: /src/frr/lib/csv.c:573,1
    - Dst: strncpy
      Src: /src/frr/lib/csv.c:576,1
    - Dst: csv_decode_record
      Src: /src/frr/lib/csv.c:580,1
    - Dst: strpbrk
      Src: /src/frr/lib/csv.c:582,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - csv
    - inbuf
    argTypes:
    - csv_t*
    - char*
    assertStmts:
    - condition: (buf)
      pos:
        line_end: 557
        line_start: 557
        source_file: /src/frr/lib/csv.c
    constantsTouched: []
    func_position:
      end: 584
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 584
    functionName: csv_decode
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 2
    functionsReached:
    - assert
    - TAILQ_INSERT_TAIL
    - csv_init_record
    - strncpy
    - strpbrk
    - log_error
    - csv_decode_record
    - calloc
    linkageType: ''
    returnType: void
    signature: void csv_decode(csv_t *csv, char *inbuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: csv_record_iter
      Src: /src/frr/lib/csv.c:591,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/csv.c:597,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - csv
    - in_rec
    argTypes:
    - csv_t*
    - csv_record_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 601
    functionName: csv_is_record_valid
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 4
    functionsReached:
    - csv_record_iter
    - csv_record_iter_next
    linkageType: ''
    returnType: int
    signature: int csv_is_record_valid(csv_t *csv, csv_record_t *in_rec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: csv_record_iter
      Src: /src/frr/lib/csv.c:609,1
    - Dst: csv_field_iter
      Src: /src/frr/lib/csv.c:611,1
    - Dst: fprintf
      Src: /src/frr/lib/csv.c:613,1
    - Dst: csv_field_iter_next
      Src: /src/frr/lib/csv.c:614,1
    - Dst: csv_record_iter_next
      Src: /src/frr/lib/csv.c:616,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - csv
    argTypes:
    - csv_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 618
    functionName: csv_dump
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached:
    - csv_record_iter
    - csv_record_iter_next
    - csv_field_iter
    - fprintf
    - csv_field_iter_next
    linkageType: ''
    returnType: void
    signature: void csv_dump(csv_t *csv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:628,1
    - Dst: open
      Src: /src/frr/lib/csv.c:629,1
    - Dst: read
      Src: /src/frr/lib/csv.c:633,1
    - Dst: close
      Src: /src/frr/lib/csv.c:635,1
    - Dst: strstr
      Src: /src/frr/lib/csv.c:639,1
    - Dst: sscanf
      Src: /src/frr/lib/csv.c:641,1
    - Dst: strstr
      Src: /src/frr/lib/csv.c:643,1
    - Dst: sscanf
      Src: /src/frr/lib/csv.c:645,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 649
    functionName: get_memory_usage
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 0
    functionsReached:
    - strstr
    - read
    - open
    - snprintf
    - close
    - sscanf
    linkageType: ''
    returnType: int
    signature: int get_memory_usage(pid_t pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:659,1
    - Dst: get_memory_usage
      Src: /src/frr/lib/csv.c:659,1
    - Dst: getpid
      Src: /src/frr/lib/csv.c:659,1
    - Dst: csv_init
      Src: /src/frr/lib/csv.c:660,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:661,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:662,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:663,1
    - Dst: strlen
      Src: /src/frr/lib/csv.c:663,1
    - Dst: strlen
      Src: /src/frr/lib/csv.c:663,1
    - Dst: atoi
      Src: /src/frr/lib/csv.c:663,1
    - Dst: atoi
      Src: /src/frr/lib/csv.c:664,1
    - Dst: csv_encode
      Src: /src/frr/lib/csv.c:665,1
    - Dst: csv_encode
      Src: /src/frr/lib/csv.c:666,1
    - Dst: csv_encode
      Src: /src/frr/lib/csv.c:667,1
    - Dst: csv_encode
      Src: /src/frr/lib/csv.c:668,1
    - Dst: csv_encode
      Src: /src/frr/lib/csv.c:670,1
    - Dst: csv_encode
      Src: /src/frr/lib/csv.c:672,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:673,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:674,1
    - Dst: snprintf
      Src: /src/frr/lib/csv.c:675,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:676,1
    - Dst: strlen
      Src: /src/frr/lib/csv.c:676,1
    - Dst: strlen
      Src: /src/frr/lib/csv.c:676,1
    - Dst: atoi
      Src: /src/frr/lib/csv.c:676,1
    - Dst: atoi
      Src: /src/frr/lib/csv.c:677,1
    - Dst: csv_encode_record
      Src: /src/frr/lib/csv.c:678,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:679,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:681,1
    - Dst: get_memory_usage
      Src: /src/frr/lib/csv.c:681,1
    - Dst: getpid
      Src: /src/frr/lib/csv.c:681,1
    - Dst: csv_clean
      Src: /src/frr/lib/csv.c:682,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:683,1
    - Dst: get_memory_usage
      Src: /src/frr/lib/csv.c:683,1
    - Dst: getpid
      Src: /src/frr/lib/csv.c:683,1
    - Dst: csv_init
      Src: /src/frr/lib/csv.c:684,1
    - Dst: csv_decode
      Src: /src/frr/lib/csv.c:685,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:686,1
    - Dst: csv_dump
      Src: /src/frr/lib/csv.c:687,1
    - Dst: csv_clean
      Src: /src/frr/lib/csv.c:688,1
    - Dst: log_verbose
      Src: /src/frr/lib/csv.c:689,1
    - Dst: get_memory_usage
      Src: /src/frr/lib/csv.c:689,1
    - Dst: getpid
      Src: /src/frr/lib/csv.c:689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 651
    functionDepth: 3
    functionLinenumber: 651
    functionLinenumberEnd: 690
    functionName: main
    functionSourceFile: /src/frr/lib/csv.c
    functionUses: 17
    functionsReached:
    - csv_encode_record
    - csv_encode
    - strlen
    - snprintf
    - get_memory_usage
    - getpid
    - csv_decode
    - atoi
    - csv_dump
    - csv_init
    - csv_clean
    - log_verbose
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/imsg.c:28,1
    - Dst: socket
      Src: /src/frr/lib/imsg.c:34,1
    - Dst: socket
      Src: /src/frr/lib/imsg.c:36,1
    - Dst: close
      Src: /src/frr/lib/imsg.c:45,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 1
    argNames:
    - n
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 48
    functionName: available_fds
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - socket
    - array_size
    - close
    linkageType: ''
    returnType: int
    signature: int available_fds(unsigned int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_init
      Src: /src/frr/lib/imsg.c:53,1
    - Dst: memset
      Src: /src/frr/lib/imsg.c:54,1
    - Dst: getpid
      Src: /src/frr/lib/imsg.c:57,1
    - Dst: TAILQ_INIT
      Src: /src/frr/lib/imsg.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ibuf
    - fd
    argTypes:
    - struct imsgbuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: imsg_init
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - TAILQ_INIT
    - getpid
    - msgbuf_init
    - memset
    linkageType: ''
    returnType: void
    signature: void imsg_init(struct imsgbuf *ibuf, int fd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/imsg.c:155,1
    - Dst: malloc
      Src: /src/frr/lib/imsg.c:166,1
    - Dst: imsg_get_fd
      Src: /src/frr/lib/imsg.c:170,1
    - Dst: memcpy
      Src: /src/frr/lib/imsg.c:175,1
    - Dst: memmove
      Src: /src/frr/lib/imsg.c:179,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - ibuf
    - imsg
    argTypes:
    - struct imsgbuf*
    - struct imsg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 185
    functionName: imsg_get
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - malloc
    - imsg_get_fd
    - memcpy
    - memmove
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t imsg_get(struct imsgbuf *ibuf, struct imsg *imsg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imsg_create
      Src: /src/frr/lib/imsg.c:192,1
    - Dst: imsg_add
      Src: /src/frr/lib/imsg.c:195,1
    - Dst: imsg_close
      Src: /src/frr/lib/imsg.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 7
    argNames:
    - ibuf
    - type
    - peerid
    - pid
    - fd
    - data
    - datalen
    argTypes:
    - struct imsgbuf*
    - uint32_t
    - uint32_t
    - pid_t
    - int
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 203
    functionName: imsg_compose
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - imsg_close
    - imsg_create
    - imsg_add
    linkageType: ''
    returnType: int
    signature: "int imsg_compose(struct imsgbuf *ibuf, uint32_t type, uint32_t peerid,\n\t\t
      pid_t pid, int fd, const void *data, uint16_t datalen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: imsg_create
      Src: /src/frr/lib/imsg.c:214,1
    - Dst: imsg_add
      Src: /src/frr/lib/imsg.c:218,1
    - Dst: imsg_close
      Src: /src/frr/lib/imsg.c:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 7
    argNames:
    - ibuf
    - type
    - peerid
    - pid
    - fd
    - iov
    - iovcnt
    argTypes:
    - struct imsgbuf*
    - uint32_t
    - uint32_t
    - pid_t
    - int
    - struct iovec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 226
    functionName: imsg_composev
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - imsg_close
    - imsg_create
    - imsg_add
    linkageType: ''
    returnType: int
    signature: "int imsg_composev(struct imsgbuf *ibuf, uint32_t type, uint32_t peerid,\n\t\t
      \ pid_t pid, int fd, const struct iovec *iov, int iovcnt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/imsg.c:235,1
    - Dst: ibuf_dynamic
      Src: /src/frr/lib/imsg.c:248,1
    - Dst: imsg_add
      Src: /src/frr/lib/imsg.c:251,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - ibuf
    - type
    - peerid
    - pid
    - datalen
    argTypes:
    - struct imsgbuf*
    - uint32_t
    - uint32_t
    - pid_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 255
    functionName: imsg_create
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 2
    functionsReached:
    - imsg_add
    - ibuf_dynamic
    - memset
    linkageType: ''
    returnType: struct ibuf
    signature: "struct ibuf *imsg_create(struct imsgbuf *ibuf, uint32_t type, uint32_t
      peerid,\n\t\t\t pid_t pid, uint16_t datalen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_add
      Src: /src/frr/lib/imsg.c:260,1
    - Dst: ibuf_free
      Src: /src/frr/lib/imsg.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - msg
    - data
    - datalen
    argTypes:
    - struct ibuf*
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 265
    functionName: imsg_add
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 3
    functionsReached:
    - ibuf_add
    - ibuf_free
    linkageType: ''
    returnType: int
    signature: int imsg_add(struct ibuf *msg, const void *data, uint16_t datalen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_close
      Src: /src/frr/lib/imsg.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ibuf
    - msg
    argTypes:
    - struct imsgbuf*
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 280
    functionName: imsg_close
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 2
    functionsReached:
    - ibuf_close
    linkageType: ''
    returnType: void
    signature: void imsg_close(struct imsgbuf *ibuf, struct ibuf *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/lib/imsg.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - imsg
    argTypes:
    - struct imsg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: imsg_free
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void imsg_free(struct imsg *imsg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_POP_FIRST
      Src: /src/frr/lib/imsg.c:292,1
    - Dst: free
      Src: /src/frr/lib/imsg.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ibuf
    argTypes:
    - struct imsgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 299
    functionName: imsg_get_fd
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 1
    functionsReached:
    - TAILQ_POP_FIRST
    - free
    linkageType: ''
    returnType: int
    signature: int imsg_get_fd(struct imsgbuf *ibuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_write
      Src: /src/frr/lib/imsg.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ibuf
    argTypes:
    - struct imsgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 3
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: imsg_flush
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - msgbuf_write
    linkageType: ''
    returnType: int
    signature: int imsg_flush(struct imsgbuf *ibuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_clear
      Src: /src/frr/lib/imsg.c:313,1
    - Dst: imsg_get_fd
      Src: /src/frr/lib/imsg.c:314,1
    - Dst: close
      Src: /src/frr/lib/imsg.c:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ibuf
    argTypes:
    - struct imsgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 316
    functionName: imsg_clear
    functionSourceFile: /src/frr/lib/imsg.c
    functionUses: 0
    functionsReached:
    - msgbuf_clear
    - imsg_get_fd
    - close
    linkageType: ''
    returnType: void
    signature: void imsg_clear(struct imsgbuf *ibuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fieldname
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 32
    functionName: RESERVED_SPACE_STRUCT
    functionSourceFile: /src/frr/lib/qobj.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESERVED_SPACE_STRUCT(name, fieldname, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fieldname
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: RESERVED_SPACE_STRUCT
    functionSourceFile: /src/frr/lib/qobj.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESERVED_SPACE_STRUCT(name, fieldname, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - structname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: DEFINE_QOBJ_TYPE_INIT
    functionSourceFile: /src/frr/lib/qobj.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_QOBJ_TYPE_INIT(structname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - id
    - ','
    - structname
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: QOBJ_GET_TYPESAFE
    functionSourceFile: /src/frr/lib/qobj.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QOBJ_GET_TYPESAFE(id, structname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: QOBJ_ID
    functionSourceFile: /src/frr/lib/qobj.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QOBJ_ID(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: QOBJ_ID_0SAFE
    functionSourceFile: /src/frr/lib/qobj.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QOBJ_ID_0SAFE(ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_cli.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: acl_get_seq_cb
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int acl_get_seq_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_iterate
      Src: /src/frr/lib/filter_cli.c:61,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - xpath
    - is_remove
    argTypes:
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 70
    functionName: acl_get_seq
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_iterate
    - vty_out
    linkageType: ''
    returnType: int64_t
    signature: int64_t acl_get_seq(struct vty *vty, const char *xpath, bool is_remove)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/filter_cli.c:77,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:81,1
    - Dst: snprintf
      Src: /src/frr/lib/filter_cli.c:85,1
    - Dst: acl_get_seq
      Src: /src/frr/lib/filter_cli.c:92,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/filter_cli.c:96,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/filter_cli.c:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - iptype
    - name
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 98
    functionName: acl_remove_if_empty
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nb_cli_enqueue_change
    - nb_cli_apply_changes
    - yang_dnode_exists
    - acl_get_seq
    linkageType: ''
    returnType: int
    signature: "int acl_remove_if_empty(struct vty *vty, const char *iptype,\n\t\t\t
      \      const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_cli.c:106,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/filter_cli.c:110,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/filter_cli.c:112,1
    - Dst: acl_remove_if_empty
      Src: /src/frr/lib/filter_cli.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - vty
    - iptype
    - name
    - sseq
    argTypes:
    - struct vty*
    - char*
    - char*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 100
    functionDepth: 4
    functionLinenumber: 100
    functionLinenumberEnd: 117
    functionName: acl_remove
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - acl_remove_if_empty
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    - snprintfrr
    linkageType: ''
    returnType: int
    signature: "int acl_remove(struct vty *vty, const char *iptype, const char *name,\n\t\t
      \     int64_t sseq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_cli.c:1007,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_cli.c:1008,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1004
    functionDepth: 1
    functionLinenumber: 1004
    functionLinenumberEnd: 1011
    functionName: access_list_cmp
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int access_list_cmp(const struct lyd_node *dnode1,\n\t\t    const
      struct lyd_node *dnode2)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_cli.c:1016,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1025,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1031,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1032,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1033,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1035,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1036,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1038,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_cli.c:1041,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/filter_cli.c:1042,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1047,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_cli.c:1051,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/filter_cli.c:1052,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1055,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_cli.c:1059,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1063,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1064,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1065,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1066,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1071,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1073,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_cli.c:1074,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_cli.c:1075,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1076,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1077,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1079,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1081,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1082,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1083,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1084,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1088,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1093,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_cli.c:1094,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_cli.c:1096,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1098,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1099,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1100,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1101,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1103,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1104,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1106,1
    - Dst: prefix_mac2str
      Src: /src/frr/lib/filter_cli.c:1114,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1115,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1117,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1119,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1122,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1124,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 72
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1013
    functionDepth: 2
    functionLinenumber: 1013
    functionLinenumberEnd: 1125
    functionName: access_list_show
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    - prefix_mac2str
    - yang_dnode_get_ipv4
    - yang_dnode_get_string
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void access_list_show(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \     bool show_defaults)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_cli.c:1130,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1136,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1139,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1143,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1144,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1127
    functionDepth: 2
    functionLinenumber: 1127
    functionLinenumberEnd: 1146
    functionName: access_list_remark_show
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void access_list_remark_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/filter_cli.c:1161,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1165,1
    - Dst: snprintf
      Src: /src/frr/lib/filter_cli.c:1169,1
    - Dst: acl_get_seq
      Src: /src/frr/lib/filter_cli.c:1176,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/filter_cli.c:1180,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/filter_cli.c:1181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - iptype
    - name
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1156
    functionDepth: 3
    functionLinenumber: 1156
    functionLinenumberEnd: 1182
    functionName: plist_remove_if_empty
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nb_cli_enqueue_change
    - nb_cli_apply_changes
    - yang_dnode_exists
    - acl_get_seq
    linkageType: ''
    returnType: int
    signature: "int plist_remove_if_empty(struct vty *vty, const char *iptype,\n\t\t\t\t
      const char *name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/filter_cli.c:1196,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/filter_cli.c:1200,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/filter_cli.c:1202,1
    - Dst: plist_remove_if_empty
      Src: /src/frr/lib/filter_cli.c:1204,1
    - Dst: prefix_copy
      Src: /src/frr/lib/filter_cli.c:1214,1
    - Dst: apply_mask
      Src: /src/frr/lib/filter_cli.c:1215,1
    - Dst: plist_is_dup
      Src: /src/frr/lib/filter_cli.c:1222,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_cli.c:1227,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/filter_cli.c:1231,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/filter_cli.c:1233,1
    - Dst: plist_remove_if_empty
      Src: /src/frr/lib/filter_cli.c:1235,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 8
    argNames:
    - vty
    - iptype
    - name
    - seq
    - action
    - prefix
    - ge
    - le
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    - char*
    - union prefixconstptr
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1184
    functionDepth: 4
    functionLinenumber: 1184
    functionLinenumberEnd: 1238
    functionName: plist_remove
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - apply_mask
    - snprintf
    - plist_is_dup
    - nb_cli_enqueue_change
    - snprintfrr
    - plist_remove_if_empty
    - prefix_copy
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: "int plist_remove(struct vty *vty, const char *iptype, const char *name,\n\t\t\tconst
      char *seq, const char *action,\n\t\t\tunion prefixconstptr prefix, int ge, int
      le)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_cli.c:1647,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_cli.c:1648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1644
    functionDepth: 1
    functionLinenumber: 1644
    functionLinenumberEnd: 1651
    functionName: prefix_list_cmp
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int prefix_list_cmp(const struct lyd_node *dnode1,\n\t\t    const
      struct lyd_node *dnode2)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_cli.c:1656,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1661,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_cli.c:1665,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1666,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1668,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1670,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1672,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1675,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_cli.c:1679,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1680,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1682,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_cli.c:1684,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1686,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1689,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1693,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1694,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1695,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1696,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1699,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1703,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1705,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1707,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1709,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1653
    functionDepth: 2
    functionLinenumber: 1653
    functionLinenumberEnd: 1710
    functionName: prefix_list_show
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_dnode_get_string
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void prefix_list_show(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \     bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_cli.c:1715,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1719,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1722,1
    - Dst: vty_out
      Src: /src/frr/lib/filter_cli.c:1726,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1727,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_cli.c:1728,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1712
    functionDepth: 2
    functionLinenumber: 1712
    functionLinenumberEnd: 1729
    functionName: prefix_list_remark_show
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void prefix_list_remark_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1734,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1735,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1736,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1737,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1740,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1741,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1742,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1743,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1744,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1745,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1747,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1748,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1749,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1750,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1751,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1752,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1754,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1755,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1756,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1757,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1758,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1759,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1762,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1763,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1764,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1765,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1766,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1767,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1768,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1770,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1771,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1772,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1773,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1774,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1775,1
    - Dst: install_element
      Src: /src/frr/lib/filter_cli.c:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1731
    functionDepth: 1
    functionLinenumber: 1731
    functionLinenumberEnd: 1777
    functionName: filter_cli_init
    functionSourceFile: /src/frr/lib/filter_cli.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void filter_cli_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/lib/grammar_sandbox_main.c:21,1
    - Dst: exit
      Src: /src/frr/lib/grammar_sandbox_main.c:23,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - isexit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 24
    functionName: vty_do_exit
    functionSourceFile: /src/frr/lib/grammar_sandbox_main.c
    functionUses: 0
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void vty_do_exit(int isexit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_master_create
      Src: /src/frr/lib/grammar_sandbox_main.c:32,1
    - Dst: zlog_aux_init
      Src: /src/frr/lib/grammar_sandbox_main.c:34,1
    - Dst: cmd_init
      Src: /src/frr/lib/grammar_sandbox_main.c:37,1
    - Dst: cmd_hostname_set
      Src: /src/frr/lib/grammar_sandbox_main.c:38,1
    - Dst: cmd_domainname_set
      Src: /src/frr/lib/grammar_sandbox_main.c:39,1
    - Dst: vty_init
      Src: /src/frr/lib/grammar_sandbox_main.c:41,1
    - Dst: lib_cmd_init
      Src: /src/frr/lib/grammar_sandbox_main.c:42,1
    - Dst: nb_init
      Src: /src/frr/lib/grammar_sandbox_main.c:43,1
    - Dst: vty_stdio
      Src: /src/frr/lib/grammar_sandbox_main.c:45,1
    - Dst: event_fetch
      Src: /src/frr/lib/grammar_sandbox_main.c:48,1
    - Dst: event_call
      Src: /src/frr/lib/grammar_sandbox_main.c:49,1
    - Dst: exit
      Src: /src/frr/lib/grammar_sandbox_main.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 28
    functionDepth: 5
    functionLinenumber: 28
    functionLinenumberEnd: 53
    functionName: main
    functionSourceFile: /src/frr/lib/grammar_sandbox_main.c
    functionUses: 17
    functionsReached:
    - cmd_domainname_set
    - exit
    - lib_cmd_init
    - cmd_init
    - cmd_hostname_set
    - event_master_create
    - nb_init
    - zlog_aux_init
    - vty_init
    - event_fetch
    - event_call
    - vty_stdio
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: agg_node_to_rnode
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *agg_node_to_rnode(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: agg_node_from_rnode
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_node_from_rnode(struct route_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/lib/agg_table.h:47,1
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: agg_lock_node
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 16
    functionsReached:
    - agg_node_to_rnode
    - route_lock_node
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_lock_node(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_unlock_node
      Src: /src/frr/lib/agg_table.h:52,1
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: agg_unlock_node
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 44
    functionsReached:
    - route_unlock_node
    - agg_node_to_rnode
    linkageType: ''
    returnType: void
    signature: void agg_unlock_node(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - atable
    - data
    argTypes:
    - struct agg_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: agg_set_table_info
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void agg_set_table_info(struct agg_table *atable, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - atable
    argTypes:
    - struct agg_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: agg_get_table_info
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *agg_get_table_info(struct agg_table *atable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:67,1
    - Dst: route_top
      Src: /src/frr/lib/agg_table.h:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct agg_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: agg_route_top
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 36
    functionsReached:
    - agg_node_from_rnode
    - route_top
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_route_top(struct agg_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:72,1
    - Dst: route_next
      Src: /src/frr/lib/agg_table.h:72,1
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: agg_route_next
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 37
    functionsReached:
    - agg_node_from_rnode
    - agg_node_to_rnode
    - route_next
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_route_next(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:78,1
    - Dst: route_node_get
      Src: /src/frr/lib/agg_table.h:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: agg_node_get
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 22
    functionsReached:
    - agg_node_from_rnode
    - route_node_get
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *agg_node_get(struct agg_table *table,\n\t\t\t\t\t
      \   const struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:84,1
    - Dst: route_node_lookup
      Src: /src/frr/lib/agg_table.h:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: agg_node_lookup
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 8
    functionsReached:
    - agg_node_from_rnode
    - route_node_lookup
    linkageType: ''
    returnType: struct agg_node
    signature: 'struct agg_node *

      agg_node_lookup(const struct agg_table *const table, const struct prefix *p)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_next_until
      Src: /src/frr/lib/agg_table.h:92,1
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:92,1
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:93,1
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - limit
    argTypes:
    - struct agg_node*
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: agg_route_next_until
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 1
    functionsReached:
    - agg_node_to_rnode
    - route_next_until
    - agg_node_from_rnode
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *agg_route_next_until(struct agg_node *node,\n\t\t\t\t\t\t
      \   struct agg_node *limit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:101,1
    - Dst: route_node_match
      Src: /src/frr/lib/agg_table.h:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct agg_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: agg_node_match
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 6
    functionsReached:
    - agg_node_from_rnode
    - route_node_match
    linkageType: ''
    returnType: struct agg_node
    signature: "struct agg_node *agg_node_match(struct agg_table *table,\n\t\t\t\t\t
      \     const struct prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:106,1
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: agg_node_parent
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 13
    functionsReached:
    - agg_node_to_rnode
    - agg_node_from_rnode
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_node_parent(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:113,1
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: agg_node_left
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 2
    functionsReached:
    - agg_node_to_rnode
    - agg_node_from_rnode
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_node_left(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.h:120,1
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.h:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: agg_node_right
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 2
    functionsReached:
    - agg_node_to_rnode
    - agg_node_from_rnode
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_node_right(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_finish
      Src: /src/frr/lib/agg_table.h:129,1
    - Dst: XFREE
      Src: /src/frr/lib/agg_table.h:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - atable
    argTypes:
    - struct agg_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: agg_table_finish
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 6
    functionsReached:
    - route_table_finish
    - XFREE
    linkageType: ''
    returnType: void
    signature: void agg_table_finish(struct agg_table *atable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/lib/agg_table.h:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: agg_route_table_top
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 1
    functionsReached:
    - route_top
    linkageType: ''
    returnType: struct agg_node
    signature: struct agg_node *agg_route_table_top(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_info
      Src: /src/frr/lib/agg_table.h:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: agg_get_table
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 4
    functionsReached:
    - route_table_get_info
    linkageType: ''
    returnType: struct agg_table
    signature: struct agg_table *agg_get_table(struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 149
    functionName: agg_node_get_prefix
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 41
    functionsReached: []
    linkageType: ''
    returnType: struct prefix
    signature: 'struct prefix *

      agg_node_get_prefix(const struct agg_node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct agg_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: agg_node_get_lock_count
    functionSourceFile: /src/frr/lib/agg_table.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int agg_node_get_lock_count(const struct agg_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/vrf.c:67,1
    - Dst: RB_FIND
      Src: /src/frr/lib/vrf.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: vrf_lookup_by_name
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 21
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct vrf
    signature: struct vrf *vrf_lookup_by_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct vrf*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: vrf_id_compare
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vrf_id_compare(const struct vrf *a, const struct vrf *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/vrf.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct vrf*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: vrf_name_compare
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int vrf_name_compare(const struct vrf *a, const struct vrf *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/vrf.c:84,1
    - Dst: ns_netns_pathname
      Src: /src/frr/lib/vrf.c:92,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:94,1
    - Dst: ns_switch_to_netns
      Src: /src/frr/lib/vrf.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 96
    functionName: vrf_switch_to_netns
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - ns_switch_to_netns
    - zlog_debug
    - vrf_lookup_by_id
    - ns_netns_pathname
    linkageType: ''
    returnType: int
    signature: int vrf_switch_to_netns(vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ns_switchback_to_initial
      Src: /src/frr/lib/vrf.c:100,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: vrf_switchback_to_initial
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - ns_switchback_to_initial
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int vrf_switchback_to_initial(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/vrf.c:126,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:130,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/vrf.c:136,1
    - Dst: XCALLOC
      Src: /src/frr/lib/vrf.c:139,1
    - Dst: QOBJ_REG
      Src: /src/frr/lib/vrf.c:141,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:145,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/vrf.c:152,1
    - Dst: strcmp
      Src: /src/frr/lib/vrf.c:156,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/vrf.c:158,1
    - Dst: strlcpy
      Src: /src/frr/lib/vrf.c:159,1
    - Dst: strlcpy
      Src: /src/frr/lib/vrf.c:161,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/vrf.c:162,1
    - Dst: strlcpy
      Src: /src/frr/lib/vrf.c:164,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/vrf.c:165,1
    - Dst: vrf_master::vrf_master
      Src: /src/frr/lib/vrf.c:167,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 36
    argCount: 2
    argNames:
    - vrf_id
    - name
    argTypes:
    - vrf_id_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 171
    functionName: vrf_get
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 2
    functionsReached:
    - vrf_master::vrf_master
    - RB_REMOVE
    - XCALLOC
    - QOBJ_REG
    - strcmp
    - strlcpy
    - vrf_lookup_by_name
    - RB_INSERT
    - zlog_debug
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct vrf
    signature: struct vrf *vrf_get(vrf_id_t vrf_id, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/vrf.c:190,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:194,1
    - Dst: vrf_disable
      Src: /src/frr/lib/vrf.c:203,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/vrf.c:206,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/vrf.c:208,1
    - Dst: vrf_get
      Src: /src/frr/lib/vrf.c:215,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - new_vrf_id
    - name
    argTypes:
    - vrf_id_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 218
    functionName: vrf_update
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 15
    functionsReached:
    - vrf_get
    - RB_REMOVE
    - vrf_lookup_by_name
    - RB_INSERT
    - zlog_debug
    - vrf_disable
    linkageType: ''
    returnType: struct vrf
    signature: struct vrf *vrf_update(vrf_id_t new_vrf_id, const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:226,1
    - Dst: vrf_is_enabled
      Src: /src/frr/lib/vrf.c:229,1
    - Dst: vrf_disable
      Src: /src/frr/lib/vrf.c:230,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/vrf.c:233,1
    - Dst: vrf_is_user_cfged
      Src: /src/frr/lib/vrf.c:241,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/vrf.c:245,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/lib/vrf.c:251,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/vrf.c:254,1
    - Dst: XFREE
      Src: /src/frr/lib/vrf.c:256,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 257
    functionName: vrf_delete
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 13
    functionsReached:
    - vrf_is_user_cfged
    - RB_REMOVE
    - QOBJ_UNREG
    - vrf_is_enabled
    - zlog_debug
    - XFREE
    - RB_EMPTY
    - vrf_disable
    linkageType: ''
    returnType: void
    signature: void vrf_delete(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/lib/vrf.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 265
    functionName: vrf_lookup_by_id
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 144
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct vrf
    signature: struct vrf *vrf_lookup_by_id(vrf_id_t vrf_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_enabled
      Src: /src/frr/lib/vrf.c:276,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:280,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/vrf.c:282,1
    - Dst: nexthop_group_enable_vrf
      Src: /src/frr/lib/vrf.c:292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 295
    functionName: vrf_enable
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 6
    functionsReached:
    - vrf_is_enabled
    - zlog_debug
    - nexthop_group_enable_vrf
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: int vrf_enable(struct vrf *vrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_enabled
      Src: /src/frr/lib/vrf.c:304,1
    - Dst: UNSET_FLAG
      Src: /src/frr/lib/vrf.c:307,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:310,1
    - Dst: nexthop_group_disable_vrf
      Src: /src/frr/lib/vrf.c:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 326
    functionName: vrf_disable
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 4
    functionsReached:
    - vrf_is_enabled
    - zlog_debug
    - UNSET_FLAG
    - nexthop_group_disable_vrf
    linkageType: ''
    returnType: void
    signature: void vrf_disable(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/vrf.c:335,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/lib/vrf.c:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 337
    functionName: vrf_id_to_name
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 62
    functionsReached:
    - VRF_LOGNAME
    - vrf_lookup_by_id
    linkageType: ''
    returnType: char
    signature: char *vrf_id_to_name(vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/vrf.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 344
    functionName: vrf_info_lookup
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 14
    functionsReached:
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void *vrf_info_lookup(vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 359
    functionName: vrf_hash_bitmap_key
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int vrf_hash_bitmap_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 367
    functionName: vrf_hash_bitmap_cmp
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool vrf_hash_bitmap_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/vrf.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 378
    functionName: vrf_hash_bitmap_alloc
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *vrf_hash_bitmap_alloc(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/vrf.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 385
    functionName: vrf_hash_bitmap_free
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vrf_hash_bitmap_free(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create_size
      Src: /src/frr/lib/vrf.c:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 391
    functionName: vrf_bitmap_init
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 1
    functionsReached:
    - hash_create_size
    linkageType: ''
    returnType: vrf_bitmap_t
    signature: vrf_bitmap_t vrf_bitmap_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/vrf.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bmap
    argTypes:
    - vrf_bitmap_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 398
    functionName: vrf_bitmap_free
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void vrf_bitmap_free(vrf_bitmap_t bmap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/lib/vrf.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bmap
    - vrf_id
    argTypes:
    - vrf_bitmap_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 411
    functionName: vrf_bitmap_set
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 8
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: void vrf_bitmap_set(vrf_bitmap_t bmap, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/lib/vrf.c:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - bmap
    - vrf_id
    argTypes:
    - vrf_bitmap_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 424
    functionName: vrf_bitmap_unset
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 12
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: void vrf_bitmap_unset(vrf_bitmap_t bmap, vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/lib/vrf.c:435,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - bmap
    - vrf_id
    argTypes:
    - vrf_bitmap_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 440
    functionName: vrf_bitmap_check
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 15
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: int
    signature: int vrf_bitmap_check(vrf_bitmap_t bmap, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/vrf.c:446,1
    - Dst: vector_set
      Src: /src/frr/lib/vrf.c:447,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/vrf.c:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 448
    functionName: vrf_autocomplete
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - vector_set
    - RB_FOREACH
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void vrf_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ns_init
      Src: /src/frr/lib/vrf.c:473,1
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:475,1
    - Dst: vrf_get
      Src: /src/frr/lib/vrf.c:483,1
    - Dst: flog_err
      Src: /src/frr/lib/vrf.c:485,1
    - Dst: exit
      Src: /src/frr/lib/vrf.c:487,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/vrf.c:489,1
    - Dst: strlcpy
      Src: /src/frr/lib/vrf.c:492,1
    - Dst: ns_lookup
      Src: /src/frr/lib/vrf.c:494,1
    - Dst: vrf_enable
      Src: /src/frr/lib/vrf.c:500,1
    - Dst: flog_err
      Src: /src/frr/lib/vrf.c:501,1
    - Dst: exit
      Src: /src/frr/lib/vrf.c:503,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/vrf.c:506,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 467
    functionDepth: 3
    functionLinenumber: 467
    functionLinenumberEnd: 507
    functionName: vrf_init
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 28
    functionsReached:
    - exit
    - vrf_is_backend_netns
    - vrf_enable
    - vrf_get
    - ns_lookup
    - strlcpy
    - ns_init
    - zlog_debug
    - flog_err
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: "void vrf_init(int (*create)(struct vrf *), int (*enable)(struct vrf
      *),\n\t      int (*disable)(struct vrf *), int (*destroy)(struct vrf *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_disable
      Src: /src/frr/lib/vrf.c:512,1
    - Dst: UNSET_FLAG
      Src: /src/frr/lib/vrf.c:513,1
    - Dst: if_terminate
      Src: /src/frr/lib/vrf.c:514,1
    - Dst: vrf_delete
      Src: /src/frr/lib/vrf.c:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 516
    functionName: vrf_terminate_single
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - vrf_delete
    - if_terminate
    - UNSET_FLAG
    - vrf_disable
    linkageType: ''
    returnType: void
    signature: void vrf_terminate_single(struct vrf *vrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/vrf.c:524,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/lib/vrf.c:526,1
    - Dst: vrf_terminate_single
      Src: /src/frr/lib/vrf.c:530,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/lib/vrf.c:533,1
    - Dst: vrf_terminate_single
      Src: /src/frr/lib/vrf.c:537,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/vrf.c:541,1
    - Dst: vrf_terminate_single
      Src: /src/frr/lib/vrf.c:543,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 544
    functionName: vrf_terminate
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 15
    functionsReached:
    - zlog_debug
    - vrf_terminate_single
    - vrf_lookup_by_id
    - RB_FOREACH_SAFE
    linkageType: ''
    returnType: void
    signature: void vrf_terminate(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_switch_to_netns
      Src: /src/frr/lib/vrf.c:551,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:553,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:554,1
    - Dst: socket
      Src: /src/frr/lib/vrf.c:556,1
    - Dst: vrf_switchback_to_initial
      Src: /src/frr/lib/vrf.c:558,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:560,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:562,1
    - Dst: vrf_bind
      Src: /src/frr/lib/vrf.c:566,1
    - Dst: close
      Src: /src/frr/lib/vrf.c:568,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - domain
    - type
    - protocol
    - vrf_id
    - interfacename
    argTypes:
    - int
    - int
    - int
    - vrf_id_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 572
    functionName: vrf_socket
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 18
    functionsReached:
    - socket
    - close
    - safe_strerror
    - vrf_bind
    - vrf_switchback_to_initial
    - flog_err_sys
    - vrf_switch_to_netns
    linkageType: ''
    returnType: int
    signature: "int vrf_socket(int domain, int type, int protocol, vrf_id_t vrf_id,\n\t
      \      const char *interfacename)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 577
    functionName: vrf_is_backend_netns
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vrf_is_backend_netns(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 584
    functionName: vrf_get_backend
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vrf_get_backend(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - backend
    argTypes:
    - enum vrf_backend_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 602
    functionName: vrf_configure_backend
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vrf_configure_backend(enum vrf_backend_type backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/vrf.c:721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 724
    functionName: vrf_write_host
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int vrf_write_host(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/lib/vrf.c:736,1
    - Dst: install_element
      Src: /src/frr/lib/vrf.c:738,1
    - Dst: install_element
      Src: /src/frr/lib/vrf.c:739,1
    - Dst: install_element
      Src: /src/frr/lib/vrf.c:740,1
    - Dst: install_element
      Src: /src/frr/lib/vrf.c:741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 742
    functionName: vrf_install_commands
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void vrf_install_commands(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/vrf.c:746,1
    - Dst: install_element
      Src: /src/frr/lib/vrf.c:747,1
    - Dst: install_node
      Src: /src/frr/lib/vrf.c:749,1
    - Dst: install_default
      Src: /src/frr/lib/vrf.c:750,1
    - Dst: install_element
      Src: /src/frr/lib/vrf.c:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 752
    functionName: vrf_cmd_init
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 11
    functionsReached:
    - install_element
    - install_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void vrf_cmd_init(int (*writefunc)(struct vty *vty))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/vrf.c:756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - default_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 757
    functionName: vrf_set_default_name
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void vrf_set_default_name(const char *default_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 762
    functionName: vrf_get_default_name
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *vrf_get_default_name(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/vrf.c:777,1
    - Dst: vrf_is_enabled
      Src: /src/frr/lib/vrf.c:778,1
    - Dst: strcmp
      Src: /src/frr/lib/vrf.c:781,1
    - Dst: if_lookup_by_name
      Src: /src/frr/lib/vrf.c:785,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/vrf.c:792,1
    - Dst: setsockopt
      Src: /src/frr/lib/vrf.c:803,1
    - Dst: strlen
      Src: /src/frr/lib/vrf.c:804,1
    - Dst: zlog_err
      Src: /src/frr/lib/vrf.c:806,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - vrf_id
    - fd
    - ifname
    argTypes:
    - vrf_id_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 810
    functionName: vrf_bind
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 1
    functionsReached:
    - vrf_is_backend_netns
    - strlen
    - if_lookup_by_name
    - strcmp
    - zlog_err
    - vrf_is_enabled
    - vrf_lookup_by_id
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int vrf_bind(vrf_id_t vrf_id, int fd, const char *ifname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_switch_to_netns
      Src: /src/frr/lib/vrf.c:817,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:819,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:820,1
    - Dst: getaddrinfo
      Src: /src/frr/lib/vrf.c:821,1
    - Dst: vrf_switchback_to_initial
      Src: /src/frr/lib/vrf.c:823,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:825,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - node
    - service
    - hints
    - res
    - vrf_id
    argTypes:
    - char*
    - char*
    - struct addrinfo*
    - struct addrinfo**
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 811
    functionDepth: 2
    functionLinenumber: 811
    functionLinenumberEnd: 830
    functionName: vrf_getaddrinfo
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - getaddrinfo
    - safe_strerror
    - vrf_switchback_to_initial
    - flog_err_sys
    - vrf_switch_to_netns
    linkageType: ''
    returnType: int
    signature: "int vrf_getaddrinfo(const char *node, const char *service,\n\t\t    const
      struct addrinfo *hints, struct addrinfo **res,\n\t\t    vrf_id_t vrf_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_switch_to_netns
      Src: /src/frr/lib/vrf.c:836,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:838,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:839,1
    - Dst: ioctl
      Src: /src/frr/lib/vrf.c:842,1
    - Dst: vrf_switchback_to_initial
      Src: /src/frr/lib/vrf.c:844,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:846,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:848,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - vrf_id
    - d
    - request
    - params
    argTypes:
    - vrf_id_t
    - int
    - unsigned long
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 851
    functionName: vrf_ioctl
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 4
    functionsReached:
    - ioctl
    - safe_strerror
    - vrf_switchback_to_initial
    - flog_err_sys
    - vrf_switch_to_netns
    linkageType: ''
    returnType: int
    signature: int vrf_ioctl(vrf_id_t vrf_id, int d, unsigned long request, char *params)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_switch_to_netns
      Src: /src/frr/lib/vrf.c:858,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:860,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:861,1
    - Dst: sockunion_socket
      Src: /src/frr/lib/vrf.c:862,1
    - Dst: vrf_switchback_to_initial
      Src: /src/frr/lib/vrf.c:864,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/vrf.c:866,1
    - Dst: safe_strerror
      Src: /src/frr/lib/vrf.c:868,1
    - Dst: vrf_bind
      Src: /src/frr/lib/vrf.c:873,1
    - Dst: close
      Src: /src/frr/lib/vrf.c:875,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - su
    - vrf_id
    - interfacename
    argTypes:
    - union sockunion*
    - vrf_id_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 853
    functionDepth: 3
    functionLinenumber: 853
    functionLinenumberEnd: 879
    functionName: vrf_sockunion_socket
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - sockunion_socket
    - close
    - safe_strerror
    - vrf_bind
    - vrf_switchback_to_initial
    - flog_err_sys
    - vrf_switch_to_netns
    linkageType: ''
    returnType: int
    signature: "int vrf_sockunion_socket(const union sockunion *su, vrf_id_t vrf_id,\n\t\t\t
      const char *interfacename)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/vrf.c:891,1
    - Dst: vrf_get
      Src: /src/frr/lib/vrf.c:896,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/vrf.c:898,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/vrf.c:899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 886
    functionDepth: 3
    functionLinenumber: 886
    functionLinenumberEnd: 902
    functionName: lib_vrf_create
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - SET_FLAG
    - yang_dnode_get_string
    - vrf_get
    linkageType: ''
    returnType: int
    signature: int lib_vrf_create(struct nb_cb_create_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/vrf.c:910,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/vrf.c:911,1
    - Dst: snprintf
      Src: /src/frr/lib/vrf.c:912,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/vrf.c:921,1
    - Dst: UNSET_FLAG
      Src: /src/frr/lib/vrf.c:924,1
    - Dst: vrf_delete
      Src: /src/frr/lib/vrf.c:925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 930
    functionName: lib_vrf_destroy
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - snprintf
    - CHECK_FLAG
    - nb_running_get_entry
    - UNSET_FLAG
    - nb_running_unset_entry
    - vrf_delete
    linkageType: ''
    returnType: int
    signature: int lib_vrf_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/lib/vrf.c:937,1
    - Dst: RB_NEXT
      Src: /src/frr/lib/vrf.c:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 943
    functionName: lib_vrf_get_next
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    - RB_NEXT
    linkageType: ''
    returnType: void
    signature: void *lib_vrf_get_next(struct nb_cb_get_next_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/vrf.c:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 945
    functionDepth: 1
    functionLinenumber: 945
    functionLinenumberEnd: 953
    functionName: lib_vrf_get_keys
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: int
    signature: int lib_vrf_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/vrf.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 955
    functionDepth: 2
    functionLinenumber: 955
    functionLinenumberEnd: 962
    functionName: lib_vrf_lookup_entry
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - vrf_lookup_by_name
    linkageType: ''
    returnType: void
    signature: void *lib_vrf_lookup_entry(struct nb_cb_lookup_entry_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/lib/vrf.c:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 973
    functionName: lib_vrf_state_id_get_elem
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_vrf_state_id_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_bool
      Src: /src/frr/lib/vrf.c:984,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 987
    functionName: lib_vrf_state_active_get_elem
    functionSourceFile: /src/frr/lib/vrf.c
    functionUses: 0
    functionsReached:
    - yang_data_new_bool
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_vrf_state_active_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_ext_len
      Src: /src/frr/lib/strformat.c:24,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:41,1
    - Dst: bputhex
      Src: /src/frr/lib/strformat.c:42,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 46
    functionName: printfrr_hexdump
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - printfrr_ext_len
    - bputch
    - bputhex
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_hexdump(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      void *ptr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_ext_len
      Src: /src/frr/lib/strformat.c:55,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:63,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 69
    functionName: printfrr_hexdstr
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - printfrr_ext_len
    - bputch
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_hexdstr(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      void *ptr)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_expect
      Src: /src/frr/lib/strformat.c:96,1
    - Dst: isalnum
      Src: /src/frr/lib/strformat.c:96,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:97,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:111,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:117,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:118,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:123,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:124,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:129,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:130,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:135,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:136,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:141,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:142,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:147,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:148,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:153,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:154,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:159,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:160,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:165,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:166,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:171,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:172,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:180,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:181,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:185,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:186,1
    - Dst: bputhex
      Src: /src/frr/lib/strformat.c:187,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 84
    argCount: 4
    argNames:
    - buf
    - pos
    - len
    - flags
    argTypes:
    - struct fbuf*
    - uint8_t*
    - size_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 191
    functionName: bquote
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - __builtin_expect
    - bputch
    - isalnum
    - bputhex
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t bquote(struct fbuf *buf, const uint8_t *pos, size_t len,\n\t\t
      \     unsigned int flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_ext_len
      Src: /src/frr/lib/strformat.c:197,1
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:209,1
    - Dst: strlen
      Src: /src/frr/lib/strformat.c:213,1
    - Dst: bquote
      Src: /src/frr/lib/strformat.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 216
    functionName: printfrr_escape
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - strlen
    - printfrr_ext_len
    - bquote
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_escape(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \      const void *vptr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_ext_len
      Src: /src/frr/lib/strformat.c:222,1
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:250,1
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:251,1
    - Dst: strlen
      Src: /src/frr/lib/strformat.c:255,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:258,1
    - Dst: bquote
      Src: /src/frr/lib/strformat.c:259,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:261,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 263
    functionName: printfrr_quote
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - strlen
    - printfrr_ext_len
    - bputch
    - bquote
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_quote(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \     const void *vptr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:287,1
    - Dst: printfrr_abstime
      Src: /src/frr/lib/strformat.c:305,1
    - Dst: printfrr_reltime
      Src: /src/frr/lib/strformat.c:307,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - buf
    - ea
    - ts
    - flags
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - struct timespec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 308
    functionName: printfrr_time
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - printfrr_reltime
    - bputs
    - printfrr_abstime
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_time(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t
      \     const struct timespec *ts, unsigned int flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:323,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - buf
    - ts
    - precision
    - flags
    argTypes:
    - struct fbuf*
    - struct timespec*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 324
    functionName: do_subsec
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t do_subsec(struct fbuf *buf, const struct timespec *ts,\n\t\t\t
      int precision, unsigned int flags)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:354,1
    - Dst: clock_gettime
      Src: /src/frr/lib/strformat.c:361,1
    - Dst: clock_gettime
      Src: /src/frr/lib/strformat.c:362,1
    - Dst: timespecsub
      Src: /src/frr/lib/strformat.c:364,1
    - Dst: timespecadd
      Src: /src/frr/lib/strformat.c:365,1
    - Dst: clock_gettime
      Src: /src/frr/lib/strformat.c:367,1
    - Dst: timespecsub
      Src: /src/frr/lib/strformat.c:370,1
    - Dst: timespecadd
      Src: /src/frr/lib/strformat.c:372,1
    - Dst: localtime_r
      Src: /src/frr/lib/strformat.c:375,1
    - Dst: strftime
      Src: /src/frr/lib/strformat.c:379,1
    - Dst: strftime
      Src: /src/frr/lib/strformat.c:381,1
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:382,1
    - Dst: do_subsec
      Src: /src/frr/lib/strformat.c:386,1
    - Dst: asctime_r
      Src: /src/frr/lib/strformat.c:390,1
    - Dst: strlen
      Src: /src/frr/lib/strformat.c:392,1
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:399,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 4
    argNames:
    - buf
    - ea
    - ts
    - flags
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - struct timespec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 402
    functionName: printfrr_abstime
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 1
    functionsReached:
    - do_subsec
    - asctime_r
    - strlen
    - bputch
    - localtime_r
    - clock_gettime
    - strftime
    - timespecadd
    - timespecsub
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_abstime(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      struct timespec *ts, unsigned int flags)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:447,1
    - Dst: clock_gettime
      Src: /src/frr/lib/strformat.c:453,1
    - Dst: clock_gettime
      Src: /src/frr/lib/strformat.c:455,1
    - Dst: timespecsub
      Src: /src/frr/lib/strformat.c:457,1
    - Dst: timespecsub
      Src: /src/frr/lib/strformat.c:459,1
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:465,1
    - Dst: bputs
      Src: /src/frr/lib/strformat.c:469,1
    - Dst: bputch
      Src: /src/frr/lib/strformat.c:480,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:484,1
    - Dst: do_subsec
      Src: /src/frr/lib/strformat.c:487,1
    - Dst: lldiv
      Src: /src/frr/lib/strformat.c:494,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:497,1
    - Dst: do_subsec
      Src: /src/frr/lib/strformat.c:499,1
    - Dst: lldiv
      Src: /src/frr/lib/strformat.c:503,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:506,1
    - Dst: do_subsec
      Src: /src/frr/lib/strformat.c:508,1
    - Dst: lldiv
      Src: /src/frr/lib/strformat.c:513,1
    - Dst: lldiv
      Src: /src/frr/lib/strformat.c:515,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:521,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:525,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:529,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:538,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:540,1
    - Dst: bprintfrr
      Src: /src/frr/lib/strformat.c:542,1
    - Dst: do_subsec
      Src: /src/frr/lib/strformat.c:547,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 88
    argCount: 4
    argNames:
    - buf
    - ea
    - ts
    - flags
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - struct timespec*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 549
    functionName: printfrr_reltime
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 1
    functionsReached:
    - do_subsec
    - bprintfrr
    - bputch
    - clock_gettime
    - lldiv
    - timespecsub
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_reltime(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      struct timespec *ts, unsigned int flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_time
      Src: /src/frr/lib/strformat.c:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 558
    functionName: printfrr_ts
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - printfrr_time
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_ts(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *vptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_time
      Src: /src/frr/lib/strformat.c:568,1
    - Dst: printfrr_time
      Src: /src/frr/lib/strformat.c:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 561
    functionDepth: 2
    functionLinenumber: 561
    functionLinenumberEnd: 573
    functionName: printfrr_tv
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - printfrr_time
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_tv(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *vptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_time
      Src: /src/frr/lib/strformat.c:583,1
    - Dst: printfrr_time
      Src: /src/frr/lib/strformat.c:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 588
    functionName: printfrr_tt
    functionSourceFile: /src/frr/lib/strformat.c
    functionUses: 0
    functionsReached:
    - printfrr_time
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_tt(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *vptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: grpc_debug
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: grpc_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/frr/lib/northbound_grpc.cpp:72,1
    - Dst: end
      Src: /src/frr/lib/northbound_grpc.cpp:72,1
    - Dst: delete_candidate
      Src: /src/frr/lib/northbound_grpc.cpp:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: ~Candidates(void)
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - begin
    - end
    - delete_candidate
    linkageType: ''
    returnType: void
    signature: void ~Candidates(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound_grpc.cpp:79,1
    - Dst: nb_config_dup
      Src: /src/frr/lib/northbound_grpc.cpp:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (id)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/frr/lib/northbound_grpc.cpp
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: Candidates::create_candidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - nb_config_dup
    - assert
    linkageType: ''
    returnType: struct candidate
    signature: struct candidate *create_candidate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/frr/lib/northbound_grpc.cpp:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - candidate_id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: Candidates::contains
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool contains(uint64_t candidate_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_grpc.cpp:99,1
    - Dst: nb_candidate_commit_abort
      Src: /src/frr/lib/northbound_grpc.cpp:101,1
    - Dst: erase
      Src: /src/frr/lib/northbound_grpc.cpp:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - candidate_id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 104
    functionName: Candidates::delete_candidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - nb_candidate_commit_abort
    - erase
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void delete_candidate(uint64_t candidate_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/frr/lib/northbound_grpc.cpp:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: Candidates::get_candidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: struct candidate
    signature: struct candidate *get_candidate(uint64_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 126
    functionName: RpcStateBase::RpcStateBase
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RpcStateBase(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: ~RpcStateBase()
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RpcStateBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: RpcStateBase::get_state
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CallState
    signature: CallState get_state() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: RpcStateBase::is_initial_process
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_initial_process() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:151,1
    - Dst: event_add_event
      Src: /src/frr/lib/northbound_grpc.cpp:160,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:162,1
    - Dst: pthread_cond_wait
      Src: /src/frr/lib/northbound_grpc.cpp:164,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:165,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:167,1
    - Dst: RpcStateBase::do_request
      Src: /src/frr/lib/northbound_grpc.cpp:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - service
    - cq
    argTypes:
    - frr::Northbound::AsyncService*
    - grpc::ServerCompletionQueue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 180
    functionName: RpcStateBase::run
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - RpcStateBase::do_request
    - grpc_debug
    - event_add_event
    - pthread_mutex_unlock
    - pthread_cond_wait
    linkageType: ''
    returnType: bool
    signature: "bool run(frr::Northbound::AsyncService *service,\n\t\t grpc::ServerCompletionQueue
      *cq)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:187,1
    - Dst: EVENT_ARG
      Src: /src/frr/lib/northbound_grpc.cpp:187,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:192,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:195,1
    - Dst: auto::run_mainthread
      Src: /src/frr/lib/northbound_grpc.cpp:198,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:200,1
    - Dst: pthread_cond_signal
      Src: /src/frr/lib/northbound_grpc.cpp:203,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 206
    functionName: RpcStateBase::c_callback
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - grpc_debug
    - pthread_cond_signal
    - static_cast
    - EVENT_ARG
    - pthread_mutex_unlock
    - auto::run_mainthread
    linkageType: ''
    returnType: void
    signature: void c_callback(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - cdb
    - rfunc
    - name
    argTypes:
    - Candidates*
    - reqfunc_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: UnaryRpcState::UnaryRpcState
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void UnaryRpcState(Candidates *cdb, reqfunc_t rfunc,\n\t\t      grpc::Status
      (*cb)(UnaryRpcState<Q, S> *),\n\t\t      const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:244,1
    - Dst: UnaryRpcState::UnaryRpcState
      Src: /src/frr/lib/northbound_grpc.cpp:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - service
    - cq
    - no_copy
    argTypes:
    - ::frr::Northbound::AsyncService*
    - ::grpc::ServerCompletionQueue*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: UnaryRpcState::do_request
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - UnaryRpcState::UnaryRpcState
    - grpc_debug
    linkageType: ''
    returnType: void
    signature: "void do_request(::frr::Northbound::AsyncService *service,\n\t\t\t::grpc::ServerCompletionQueue
      *cq,\n\t\t\tbool no_copy) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnaryRpcState::callback
      Src: /src/frr/lib/northbound_grpc.cpp:255,1
    - Dst: Finish
      Src: /src/frr/lib/northbound_grpc.cpp:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 258
    functionName: UnaryRpcState::run_mainthread
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - UnaryRpcState::callback
    - Finish
    linkageType: ''
    returnType: CallState
    signature: CallState run_mainthread(struct event *thread) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - rfunc
    - name
    argTypes:
    - reqsfunc_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: StreamRpcState::StreamRpcState
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void StreamRpcState(reqsfunc_t rfunc, bool (*cb)(StreamRpcState<Q,
      S, X> *),\n\t\t       const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:296,1
    - Dst: StreamRpcState::StreamRpcState
      Src: /src/frr/lib/northbound_grpc.cpp:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - service
    - cq
    - no_copy
    argTypes:
    - ::frr::Northbound::AsyncService*
    - ::grpc::ServerCompletionQueue*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 302
    functionName: StreamRpcState::do_request
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - StreamRpcState::StreamRpcState
    - grpc_debug
    linkageType: ''
    returnType: void
    signature: "void do_request(::frr::Northbound::AsyncService *service,\n\t\t\t::grpc::ServerCompletionQueue
      *cq,\n\t\t\tbool no_copy) override"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StreamRpcState::callback
      Src: /src/frr/lib/northbound_grpc.cpp:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: StreamRpcState::run_mainthread
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - StreamRpcState::callback
    linkageType: ''
    returnType: CallState
    signature: CallState run_mainthread(struct event *thread) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/lib/northbound_grpc.cpp:334,1
    - Dst: exit
      Src: /src/frr/lib/northbound_grpc.cpp:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - encoding
    argTypes:
    - enum frr::Encoding
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 339
    functionName: encoding2lyd_format
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - exit
    - flog_err
    linkageType: ''
    returnType: LYD_FORMAT
    signature: LYD_FORMAT encoding2lyd_format(enum frr::Encoding encoding)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_new_path
      Src: /src/frr/lib/northbound_grpc.cpp:344,1
    - Dst: std::string::c_str
      Src: /src/frr/lib/northbound_grpc.cpp:344,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_grpc.cpp:347,1
    - Dst: ly_errmsg
      Src: /src/frr/lib/northbound_grpc.cpp:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - dnode
    - path
    - value
    argTypes:
    - struct lyd_node*
    - std::string
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 353
    functionName: yang_dnode_edit
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - lyd_new_path
    - flog_warn
    - std::string::c_str
    - ly_errmsg
    linkageType: ''
    returnType: int
    signature: "int yang_dnode_edit(struct lyd_node *dnode, const std::string &path,\n\t\t\t
      \  const char *value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound_grpc.cpp:357,1
    - Dst: std::string::c_str
      Src: /src/frr/lib/northbound_grpc.cpp:357,1
    - Dst: lyd_free_tree
      Src: /src/frr/lib/northbound_grpc.cpp:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dnode
    - path
    argTypes:
    - struct lyd_node*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 364
    functionName: yang_dnode_delete
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - lyd_free_tree
    - yang_dnode_get
    - std::string::c_str
    linkageType: ''
    returnType: int
    signature: int yang_dnode_delete(struct lyd_node *dnode, const std::string &path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/lib/northbound_grpc.cpp:373,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/northbound_grpc.cpp:375,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/northbound_grpc.cpp:377,1
    - Dst: lyd_print_mem
      Src: /src/frr/lib/northbound_grpc.cpp:379,1
    - Dst: frr::DataTree*::set_data
      Src: /src/frr/lib/northbound_grpc.cpp:382,1
    - Dst: free
      Src: /src/frr/lib/northbound_grpc.cpp:383,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - dt
    - dnode
    - lyd_format
    - with_defaults
    argTypes:
    - frr::DataTree*
    - struct lyd_node*
    - LYD_FORMAT
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 387
    functionName: data_tree_from_dnode
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - free
    - lyd_print_mem
    - frr::DataTree*::set_data
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR data_tree_from_dnode(frr::DataTree *dt,\n\t\t\t\t   const struct
      lyd_node *dnode,\n\t\t\t\t   LYD_FORMAT lyd_format, bool with_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parse_data_mem
      Src: /src/frr/lib/northbound_grpc.cpp:404,1
    - Dst: frr::DataTree*::data
      Src: /src/frr/lib/northbound_grpc.cpp:404,1
    - Dst: encoding2lyd_format
      Src: /src/frr/lib/northbound_grpc.cpp:405,1
    - Dst: frr::DataTree*::encoding
      Src: /src/frr/lib/northbound_grpc.cpp:405,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_grpc.cpp:408,1
    - Dst: ly_errmsg
      Src: /src/frr/lib/northbound_grpc.cpp:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - dt
    - config_only
    argTypes:
    - frr::DataTree*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 389
    functionDepth: 2
    functionLinenumber: 389
    functionLinenumberEnd: 412
    functionName: dnode_from_data_tree
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - flog_warn
    - frr::DataTree*::data
    - lyd_parse_data_mem
    - frr::DataTree*::encoding
    - encoding2lyd_format
    - ly_errmsg
    linkageType: ''
    returnType: struct lyd_node
    signature: "struct lyd_node *dnode_from_data_tree(const frr::DataTree *dt,\n\t\t\t\t\t
      \    bool config_only)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/northbound_grpc.cpp:418,1
    - Dst: std::string::empty
      Src: /src/frr/lib/northbound_grpc.cpp:419,1
    - Dst: std::string::c_str
      Src: /src/frr/lib/northbound_grpc.cpp:419,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound_grpc.cpp:422,1
    - Dst: std::string::empty
      Src: /src/frr/lib/northbound_grpc.cpp:423,1
    - Dst: std::string::c_str
      Src: /src/frr/lib/northbound_grpc.cpp:423,1
    - Dst: yang_dnode_dup
      Src: /src/frr/lib/northbound_grpc.cpp:425,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 428
    functionName: get_dnode_config
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - yang_dnode_dup
    - std::string::empty
    - yang_dnode_get
    - std::string::c_str
    - yang_dnode_exists
    linkageType: ''
    returnType: struct lyd_node
    signature: struct lyd_node *get_dnode_config(const std::string &path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:434,1
    - Dst: yang_dnode_edit
      Src: /src/frr/lib/northbound_grpc.cpp:435,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_grpc.cpp:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - snode
    - translator
    - data
    - arg
    argTypes:
    - struct lysc_node*
    - struct yang_translator*
    - struct yang_data*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 439
    functionName: get_oper_data_cb
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - yang_dnode_edit
    - static_cast
    - yang_data_free
    linkageType: ''
    returnType: int
    signature: "int get_oper_data_cb(const struct lysc_node *snode,\n\t\t\t    struct
      yang_translator *translator,\n\t\t\t    struct yang_data *data, void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_new
      Src: /src/frr/lib/northbound_grpc.cpp:443,1
    - Dst: nb_oper_data_iterate
      Src: /src/frr/lib/northbound_grpc.cpp:444,1
    - Dst: std::string::c_str
      Src: /src/frr/lib/northbound_grpc.cpp:444,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound_grpc.cpp:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 451
    functionName: get_dnode_state
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - nb_oper_data_iterate
    - yang_dnode_new
    - std::string::c_str
    - yang_dnode_free
    linkageType: ''
    returnType: struct lyd_node
    signature: struct lyd_node *get_dnode_state(const std::string &path)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: get_dnode_config
      Src: /src/frr/lib/northbound_grpc.cpp:464,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:466,1
    - Dst: get_dnode_state
      Src: /src/frr/lib/northbound_grpc.cpp:473,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound_grpc.cpp:476,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:477,1
    - Dst: lyd_merge_siblings
      Src: /src/frr/lib/northbound_grpc.cpp:488,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound_grpc.cpp:491,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound_grpc.cpp:492,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:493,1
    - Dst: ly_errmsg
      Src: /src/frr/lib/northbound_grpc.cpp:496,1
    - Dst: lyd_validate_all
      Src: /src/frr/lib/northbound_grpc.cpp:516,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_grpc.cpp:520,1
    - Dst: ly_errmsg
      Src: /src/frr/lib/northbound_grpc.cpp:521,1
    - Dst: data_tree_from_dnode
      Src: /src/frr/lib/northbound_grpc.cpp:524,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound_grpc.cpp:526,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:528,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 5
    argNames:
    - dt
    - path
    - type
    - lyd_format
    - with_defaults
    argTypes:
    - frr::DataTree*
    - std::string
    - int
    - LYD_FORMAT
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 531
    functionName: get_path
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 6
    functionsReached:
    - grpc::Status
    - get_dnode_state
    - flog_warn
    - lyd_validate_all
    - lyd_merge_siblings
    - yang_dnode_free
    - data_tree_from_dnode
    - get_dnode_config
    - ly_errmsg
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status get_path(frr::DataTree *dt, const std::string &path,\n\t\t\t
      \    int type, LYD_FORMAT lyd_format,\n\t\t\t     bool with_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:542,1
    - Dst: UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::set_frr_version
      Src: /src/frr/lib/northbound_grpc.cpp:545,1
    - Dst: UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::set_rollback_support
      Src: /src/frr/lib/northbound_grpc.cpp:549,1
    - Dst: UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::set_rollback_support
      Src: /src/frr/lib/northbound_grpc.cpp:551,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_grpc.cpp:555,1
    - Dst: UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::add_supported_modules
      Src: /src/frr/lib/northbound_grpc.cpp:556,1
    - Dst: auto::set_name
      Src: /src/frr/lib/northbound_grpc.cpp:558,1
    - Dst: auto::set_revision
      Src: /src/frr/lib/northbound_grpc.cpp:560,1
    - Dst: auto::set_organization
      Src: /src/frr/lib/northbound_grpc.cpp:561,1
    - Dst: UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::add_supported_encodings
      Src: /src/frr/lib/northbound_grpc.cpp:565,1
    - Dst: UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::add_supported_encodings
      Src: /src/frr/lib/northbound_grpc.cpp:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 569
    functionName: HandleUnaryGetCapabilities
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - auto::set_revision
    - auto::set_organization
    - auto::set_name
    - grpc_debug
    - UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::add_supported_encodings
    - UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::set_rollback_support
    - UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::set_frr_version
    - UnaryRpcState<frr::GetCapabilitiesRequest, frr::GetCapabilitiesResponse>*::response::add_supported_modules
    - RB_FOREACH
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryGetCapabilities(\n\tUnaryRpcState<frr::GetCapabilitiesRequest,
      frr::GetCapabilitiesResponse>\n\t\t*tag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:577,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::is_initial_process
      Src: /src/frr/lib/northbound_grpc.cpp:580,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:582,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::path
      Src: /src/frr/lib/northbound_grpc.cpp:583,1
    - Dst: auto::push_back
      Src: /src/frr/lib/northbound_grpc.cpp:585,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:585,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::type
      Src: /src/frr/lib/northbound_grpc.cpp:590,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::encoding
      Src: /src/frr/lib/northbound_grpc.cpp:592,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::with_defaults
      Src: /src/frr/lib/northbound_grpc.cpp:594,1
    - Dst: auto::empty
      Src: /src/frr/lib/northbound_grpc.cpp:596,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::async_responder::Finish
      Src: /src/frr/lib/northbound_grpc.cpp:597,1
    - Dst: frr::GetResponse::set_timestamp
      Src: /src/frr/lib/northbound_grpc.cpp:605,1
    - Dst: time
      Src: /src/frr/lib/northbound_grpc.cpp:605,1
    - Dst: frr::GetResponse::mutable_data
      Src: /src/frr/lib/northbound_grpc.cpp:608,1
    - Dst: auto*::set_encoding
      Src: /src/frr/lib/northbound_grpc.cpp:609,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::encoding
      Src: /src/frr/lib/northbound_grpc.cpp:609,1
    - Dst: get_path
      Src: /src/frr/lib/northbound_grpc.cpp:610,1
    - Dst: auto::back
      Src: /src/frr/lib/northbound_grpc.cpp:610,1
    - Dst: encoding2lyd_format
      Src: /src/frr/lib/northbound_grpc.cpp:611,1
    - Dst: grpc::Status::ok
      Src: /src/frr/lib/northbound_grpc.cpp:613,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::async_responder::WriteAndFinish
      Src: /src/frr/lib/northbound_grpc.cpp:614,1
    - Dst: grpc::WriteOptions
      Src: /src/frr/lib/northbound_grpc.cpp:615,1
    - Dst: auto::pop_back
      Src: /src/frr/lib/northbound_grpc.cpp:619,1
    - Dst: auto::empty
      Src: /src/frr/lib/northbound_grpc.cpp:620,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::async_responder::WriteAndFinish
      Src: /src/frr/lib/northbound_grpc.cpp:621,1
    - Dst: grpc::WriteOptions
      Src: /src/frr/lib/northbound_grpc.cpp:622,1
    - Dst: StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::async_responder::Write
      Src: /src/frr/lib/northbound_grpc.cpp:625,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - tag
    argTypes:
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 574
    functionDepth: 3
    functionLinenumber: 574
    functionLinenumberEnd: 628
    functionName: HandleStreamingGet
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::with_defaults
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::is_initial_process
    - std::string
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::async_responder::WriteAndFinish
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::type
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::async_responder::Finish
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::path
    - auto::push_back
    - frr::GetResponse::mutable_data
    - frr::GetResponse::set_timestamp
    - get_path
    - grpc::Status::ok
    - grpc_debug
    - auto::empty
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::async_responder::Write
    - StreamRpcState<frr::GetRequest, frr::GetResponse, GetContextType>*::request::encoding
    - auto::pop_back
    - auto*::set_encoding
    - grpc::WriteOptions
    - auto::back
    - encoding2lyd_format
    - time
    linkageType: ''
    returnType: bool
    signature: "bool HandleStreamingGet(\n\tStreamRpcState<frr::GetRequest, frr::GetResponse,
      GetContextType> *tag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:634,1
    - Dst: UnaryRpcState<frr::CreateCandidateRequest, frr::CreateCandidateResponse>*::cdb::create_candidate
      Src: /src/frr/lib/northbound_grpc.cpp:636,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:638,1
    - Dst: UnaryRpcState<frr::CreateCandidateRequest, frr::CreateCandidateResponse>*::response::set_candidate_id
      Src: /src/frr/lib/northbound_grpc.cpp:640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::CreateCandidateRequest, frr::CreateCandidateResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 642
    functionName: HandleUnaryCreateCandidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - UnaryRpcState<frr::CreateCandidateRequest, frr::CreateCandidateResponse>*::response::set_candidate_id
    - UnaryRpcState<frr::CreateCandidateRequest, frr::CreateCandidateResponse>*::cdb::create_candidate
    - grpc_debug
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryCreateCandidate(\n\tUnaryRpcState<frr::CreateCandidateRequest,
      frr::CreateCandidateResponse>\n\t\t*tag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:648,1
    - Dst: UnaryRpcState<frr::DeleteCandidateRequest, frr::DeleteCandidateResponse>*::request::candidate_id
      Src: /src/frr/lib/northbound_grpc.cpp:650,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:652,1
    - Dst: UnaryRpcState<frr::DeleteCandidateRequest, frr::DeleteCandidateResponse>*::cdb::contains
      Src: /src/frr/lib/northbound_grpc.cpp:654,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:655,1
    - Dst: UnaryRpcState<frr::DeleteCandidateRequest, frr::DeleteCandidateResponse>*::cdb::delete_candidate
      Src: /src/frr/lib/northbound_grpc.cpp:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::DeleteCandidateRequest, frr::DeleteCandidateResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 659
    functionName: HandleUnaryDeleteCandidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - UnaryRpcState<frr::DeleteCandidateRequest, frr::DeleteCandidateResponse>*::cdb::delete_candidate
    - grpc_debug
    - UnaryRpcState<frr::DeleteCandidateRequest, frr::DeleteCandidateResponse>*::cdb::contains
    - UnaryRpcState<frr::DeleteCandidateRequest, frr::DeleteCandidateResponse>*::request::candidate_id
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryDeleteCandidate(\n\tUnaryRpcState<frr::DeleteCandidateRequest,
      frr::DeleteCandidateResponse>\n\t\t*tag)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:665,1
    - Dst: UnaryRpcState<frr::UpdateCandidateRequest, frr::UpdateCandidateResponse>*::request::candidate_id
      Src: /src/frr/lib/northbound_grpc.cpp:667,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:669,1
    - Dst: UnaryRpcState<frr::UpdateCandidateRequest, frr::UpdateCandidateResponse>*::cdb::get_candidate
      Src: /src/frr/lib/northbound_grpc.cpp:671,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:674,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:677,1
    - Dst: nb_candidate_update
      Src: /src/frr/lib/northbound_grpc.cpp:680,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:681,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::UpdateCandidateRequest, frr::UpdateCandidateResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 685
    functionName: HandleUnaryUpdateCandidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - nb_candidate_update
    - grpc_debug
    - UnaryRpcState<frr::UpdateCandidateRequest, frr::UpdateCandidateResponse>*::cdb::get_candidate
    - UnaryRpcState<frr::UpdateCandidateRequest, frr::UpdateCandidateResponse>*::request::candidate_id
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryUpdateCandidate(\n\tUnaryRpcState<frr::UpdateCandidateRequest,
      frr::UpdateCandidateResponse>\n\t\t*tag)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:691,1
    - Dst: UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::request::candidate_id
      Src: /src/frr/lib/northbound_grpc.cpp:693,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:695,1
    - Dst: UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::cdb::get_candidate
      Src: /src/frr/lib/northbound_grpc.cpp:697,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:699,1
    - Dst: nb_config_dup
      Src: /src/frr/lib/northbound_grpc.cpp:702,1
    - Dst: UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::request::update
      Src: /src/frr/lib/northbound_grpc.cpp:704,1
    - Dst: yang_dnode_edit
      Src: /src/frr/lib/northbound_grpc.cpp:706,1
    - Dst: path
      Src: /src/frr/lib/northbound_grpc.cpp:706,1
    - Dst: value
      Src: /src/frr/lib/northbound_grpc.cpp:707,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_grpc.cpp:708,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:710,1
    - Dst: path
      Src: /src/frr/lib/northbound_grpc.cpp:711,1
    - Dst: UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::request::delete_
      Src: /src/frr/lib/northbound_grpc.cpp:716,1
    - Dst: yang_dnode_delete
      Src: /src/frr/lib/northbound_grpc.cpp:718,1
    - Dst: path
      Src: /src/frr/lib/northbound_grpc.cpp:718,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_grpc.cpp:719,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:720,1
    - Dst: path
      Src: /src/frr/lib/northbound_grpc.cpp:721,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound_grpc.cpp:727,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 687
    functionDepth: 2
    functionLinenumber: 687
    functionLinenumberEnd: 729
    functionName: HandleUnaryEditCandidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - yang_dnode_delete
    - grpc_debug
    - path
    - nb_config_dup
    - value
    - UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::cdb::get_candidate
    - UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::request::update
    - UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::request::delete_
    - nb_config_replace
    - yang_dnode_edit
    - nb_config_free
    - UnaryRpcState<frr::EditCandidateRequest, frr::EditCandidateResponse>*::request::candidate_id
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryEditCandidate(\n\tUnaryRpcState<frr::EditCandidateRequest,
      frr::EditCandidateResponse>\n\t\t*tag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:735,1
    - Dst: UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::request::candidate_id
      Src: /src/frr/lib/northbound_grpc.cpp:737,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:739,1
    - Dst: UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::request::type
      Src: /src/frr/lib/northbound_grpc.cpp:742,1
    - Dst: UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::request::config
      Src: /src/frr/lib/northbound_grpc.cpp:744,1
    - Dst: UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::cdb::get_candidate
      Src: /src/frr/lib/northbound_grpc.cpp:746,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:748,1
    - Dst: dnode_from_data_tree
      Src: /src/frr/lib/northbound_grpc.cpp:751,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:753,1
    - Dst: nb_config_new
      Src: /src/frr/lib/northbound_grpc.cpp:756,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound_grpc.cpp:758,1
    - Dst: nb_config_merge
      Src: /src/frr/lib/northbound_grpc.cpp:759,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 731
    functionDepth: 3
    functionLinenumber: 731
    functionLinenumberEnd: 765
    functionName: HandleUnaryLoadToCandidate
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::request::type
    - grpc_debug
    - nb_config_new
    - UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::cdb::get_candidate
    - dnode_from_data_tree
    - nb_config_merge
    - nb_config_replace
    - UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::request::config
    - UnaryRpcState<frr::LoadToCandidateRequest, frr::LoadToCandidateResponse>*::request::candidate_id
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryLoadToCandidate(\n\tUnaryRpcState<frr::LoadToCandidateRequest,
      frr::LoadToCandidateResponse>\n\t\t*tag)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:770,1
    - Dst: UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::request::candidate_id
      Src: /src/frr/lib/northbound_grpc.cpp:773,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:775,1
    - Dst: UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::request::phase
      Src: /src/frr/lib/northbound_grpc.cpp:778,1
    - Dst: UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::request::comment
      Src: /src/frr/lib/northbound_grpc.cpp:780,1
    - Dst: UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::cdb::get_candidate
      Src: /src/frr/lib/northbound_grpc.cpp:783,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:785,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:796,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:803,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:819,1
    - Dst: nb_candidate_validate
      Src: /src/frr/lib/northbound_grpc.cpp:820,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:824,1
    - Dst: nb_candidate_commit_prepare
      Src: /src/frr/lib/northbound_grpc.cpp:825,1
    - Dst: std::string::c_str
      Src: /src/frr/lib/northbound_grpc.cpp:826,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:831,1
    - Dst: nb_candidate_commit_abort
      Src: /src/frr/lib/northbound_grpc.cpp:832,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:836,1
    - Dst: nb_candidate_commit_apply
      Src: /src/frr/lib/northbound_grpc.cpp:837,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:842,1
    - Dst: nb_candidate_commit
      Src: /src/frr/lib/northbound_grpc.cpp:843,1
    - Dst: std::string::c_str
      Src: /src/frr/lib/northbound_grpc.cpp:844,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:856,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:859,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:862,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:866,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:871,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:875,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound_grpc.cpp:876,1
    - Dst: UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::response::set_transaction_id
      Src: /src/frr/lib/northbound_grpc.cpp:881,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_grpc.cpp:883,1
    - Dst: UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::response::set_error_message
      Src: /src/frr/lib/northbound_grpc.cpp:884,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 71
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 887
    functionName: HandleUnaryCommit
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - nb_candidate_validate
    - nb_err_name
    - strlen
    - nb_candidate_commit
    - nb_candidate_commit_abort
    - grpc_debug
    - UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::request::phase
    - UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::response::set_error_message
    - std::string::c_str
    - UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::response::set_transaction_id
    - UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::cdb::get_candidate
    - nb_candidate_commit_prepare
    - nb_candidate_commit_apply
    - UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::request::comment
    - UnaryRpcState<frr::CommitRequest, frr::CommitResponse>*::request::candidate_id
    linkageType: ''
    returnType: grpc::Status
    signature: grpc::Status HandleUnaryCommit(UnaryRpcState<frr::CommitRequest, frr::CommitResponse>
      *tag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:892,1
    - Dst: nb_running_lock
      Src: /src/frr/lib/northbound_grpc.cpp:894,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::LockConfigRequest, frr::LockConfigResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 889
    functionDepth: 1
    functionLinenumber: 889
    functionLinenumberEnd: 898
    functionName: HandleUnaryLockConfig
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - nb_running_lock
    - grpc_debug
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryLockConfig(\n\tUnaryRpcState<frr::LockConfigRequest,
      frr::LockConfigResponse> *tag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:903,1
    - Dst: nb_running_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:905,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:906,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::UnlockConfigRequest, frr::UnlockConfigResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 900
    functionDepth: 1
    functionLinenumber: 900
    functionLinenumberEnd: 910
    functionName: HandleUnaryUnlockConfig
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - grpc::Status
    - nb_running_unlock
    - grpc_debug
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryUnlockConfig(\n\tUnaryRpcState<frr::UnlockConfigRequest,
      frr::UnlockConfigResponse> *tag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:916,1
    - Dst: auto::push_back
      Src: /src/frr/lib/northbound_grpc.cpp:918,1
    - Dst: std::make_tuple
      Src: /src/frr/lib/northbound_grpc.cpp:919,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:919,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:920,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - arg
    - transaction_id
    - client_name
    - date
    - comment
    argTypes:
    - void*
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 921
    functionName: list_transactions_cb
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - static_cast
    - std::make_tuple
    - std::string
    - auto::push_back
    linkageType: ''
    returnType: void
    signature: "void list_transactions_cb(void *arg, int transaction_id,\n\t\t\t\t
      const char *client_name, const char *date,\n\t\t\t\t const char *comment)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:932,1
    - Dst: "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
        \      ListTransactionsContextType>*::is_initial_process"
      Src: /src/frr/lib/northbound_grpc.cpp:935,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:936,1
    - Dst: nb_db_transactions_iterate
      Src: /src/frr/lib/northbound_grpc.cpp:938,1
    - Dst: auto::push_back
      Src: /src/frr/lib/northbound_grpc.cpp:939,1
    - Dst: std::make_tuple
      Src: /src/frr/lib/northbound_grpc.cpp:939,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:940,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:941,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:941,1
    - Dst: auto::push_back
      Src: /src/frr/lib/northbound_grpc.cpp:942,1
    - Dst: std::make_tuple
      Src: /src/frr/lib/northbound_grpc.cpp:942,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:943,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:944,1
    - Dst: std::string
      Src: /src/frr/lib/northbound_grpc.cpp:945,1
    - Dst: auto::empty
      Src: /src/frr/lib/northbound_grpc.cpp:948,1
    - Dst: "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
        \      ListTransactionsContextType>*::async_responder::Finish"
      Src: /src/frr/lib/northbound_grpc.cpp:949,1
    - Dst: auto::back
      Src: /src/frr/lib/northbound_grpc.cpp:953,1
    - Dst: frr::ListTransactionsResponse::set_id
      Src: /src/frr/lib/northbound_grpc.cpp:958,1
    - Dst: std::get<0>
      Src: /src/frr/lib/northbound_grpc.cpp:958,1
    - Dst: frr::ListTransactionsResponse::set_client
      Src: /src/frr/lib/northbound_grpc.cpp:961,1
    - Dst: std::get<1>
      Src: /src/frr/lib/northbound_grpc.cpp:961,1
    - Dst: frr::ListTransactionsResponse::set_date
      Src: /src/frr/lib/northbound_grpc.cpp:964,1
    - Dst: std::get<2>
      Src: /src/frr/lib/northbound_grpc.cpp:964,1
    - Dst: frr::ListTransactionsResponse::set_comment
      Src: /src/frr/lib/northbound_grpc.cpp:967,1
    - Dst: std::get<3>
      Src: /src/frr/lib/northbound_grpc.cpp:967,1
    - Dst: auto::pop_back
      Src: /src/frr/lib/northbound_grpc.cpp:969,1
    - Dst: auto::empty
      Src: /src/frr/lib/northbound_grpc.cpp:970,1
    - Dst: "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
        \      ListTransactionsContextType>*::async_responder::WriteAndFinish"
      Src: /src/frr/lib/northbound_grpc.cpp:971,1
    - Dst: grpc::WriteOptions
      Src: /src/frr/lib/northbound_grpc.cpp:972,1
    - Dst: "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
        \      ListTransactionsContextType>*::async_responder::Write"
      Src: /src/frr/lib/northbound_grpc.cpp:975,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - tag
    argTypes:
    - "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
      \      ListTransactionsContextType>*"
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 927
    functionDepth: 1
    functionLinenumber: 927
    functionLinenumberEnd: 978
    functionName: HandleStreamingListTransactions
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - frr::ListTransactionsResponse::set_comment
    - "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
      \      ListTransactionsContextType>*::async_responder::Write"
    - std::get<2>
    - std::string
    - frr::ListTransactionsResponse::set_date
    - auto::push_back
    - std::get<1>
    - std::get<0>
    - frr::ListTransactionsResponse::set_client
    - "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
      \      ListTransactionsContextType>*::async_responder::Finish"
    - grpc_debug
    - auto::empty
    - std::make_tuple
    - "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
      \      ListTransactionsContextType>*::is_initial_process"
    - nb_db_transactions_iterate
    - std::get<3>
    - auto::pop_back
    - grpc::WriteOptions
    - auto::back
    - "StreamRpcState<frr::ListTransactionsRequest,\n\t\t       frr::ListTransactionsResponse,\n\t\t
      \      ListTransactionsContextType>*::async_responder::WriteAndFinish"
    - frr::ListTransactionsResponse::set_id
    linkageType: ''
    returnType: bool
    signature: "bool HandleStreamingListTransactions(\n\tStreamRpcState<frr::ListTransactionsRequest,\n\t\t
      \      frr::ListTransactionsResponse,\n\t\t       ListTransactionsContextType>
      *tag)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:984,1
    - Dst: UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::request::transaction_id
      Src: /src/frr/lib/northbound_grpc.cpp:987,1
    - Dst: UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::request::encoding
      Src: /src/frr/lib/northbound_grpc.cpp:989,1
    - Dst: UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::request::with_defaults
      Src: /src/frr/lib/northbound_grpc.cpp:991,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:993,1
    - Dst: nb_db_transaction_load
      Src: /src/frr/lib/northbound_grpc.cpp:999,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:1001,1
    - Dst: UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::response::mutable_config
      Src: /src/frr/lib/northbound_grpc.cpp:1005,1
    - Dst: auto::set_encoding
      Src: /src/frr/lib/northbound_grpc.cpp:1006,1
    - Dst: data_tree_from_dnode
      Src: /src/frr/lib/northbound_grpc.cpp:1009,1
    - Dst: encoding2lyd_format
      Src: /src/frr/lib/northbound_grpc.cpp:1010,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_grpc.cpp:1012,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:1013,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_grpc.cpp:1017,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 980
    functionDepth: 2
    functionLinenumber: 980
    functionLinenumberEnd: 1020
    functionName: HandleUnaryGetTransaction
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::request::encoding
    - grpc::Status
    - grpc_debug
    - auto::set_encoding
    - UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::response::mutable_config
    - data_tree_from_dnode
    - UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::request::with_defaults
    - UnaryRpcState<frr::GetTransactionRequest, frr::GetTransactionResponse>*::request::transaction_id
    - encoding2lyd_format
    - nb_config_free
    - nb_db_transaction_load
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryGetTransaction(\n\tUnaryRpcState<frr::GetTransactionRequest,
      frr::GetTransactionResponse>\n\t\t*tag)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1025,1
    - Dst: UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*::request::path
      Src: /src/frr/lib/northbound_grpc.cpp:1036,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1038,1
    - Dst: UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*::request::path
      Src: /src/frr/lib/northbound_grpc.cpp:1040,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:1041,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_grpc.cpp:1044,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:1046,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_grpc.cpp:1049,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_grpc.cpp:1050,1
    - Dst: UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*::request::input
      Src: /src/frr/lib/northbound_grpc.cpp:1053,1
    - Dst: yang_data_new
      Src: /src/frr/lib/northbound_grpc.cpp:1056,1
    - Dst: path
      Src: /src/frr/lib/northbound_grpc.cpp:1056,1
    - Dst: value
      Src: /src/frr/lib/northbound_grpc.cpp:1056,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_grpc.cpp:1057,1
    - Dst: nb_callback_rpc
      Src: /src/frr/lib/northbound_grpc.cpp:1061,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_grpc.cpp:1064,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_grpc.cpp:1066,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_grpc.cpp:1067,1
    - Dst: grpc::Status
      Src: /src/frr/lib/northbound_grpc.cpp:1069,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_grpc.cpp:1073,1
    - Dst: UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*::response::add_output
      Src: /src/frr/lib/northbound_grpc.cpp:1075,1
    - Dst: frr::PathValue*::set_path
      Src: /src/frr/lib/northbound_grpc.cpp:1076,1
    - Dst: frr::PathValue*::set_value
      Src: /src/frr/lib/northbound_grpc.cpp:1077,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_grpc.cpp:1081,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_grpc.cpp:1082,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1092,1
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1122,1
    - Dst: reinterpret_cast<intptr_t>
      Src: /src/frr/lib/northbound_grpc.cpp:1123,1
    - Dst: frr_pthread_set_name
      Src: /src/frr/lib/northbound_grpc.cpp:1130,1
    - Dst: grpc::ServerBuilder::AddListeningPort
      Src: /src/frr/lib/northbound_grpc.cpp:1133,1
    - Dst: std::stringstream::str
      Src: /src/frr/lib/northbound_grpc.cpp:1133,1
    - Dst: grpc::InsecureServerCredentials
      Src: /src/frr/lib/northbound_grpc.cpp:1134,1
    - Dst: grpc::ServerBuilder::RegisterService
      Src: /src/frr/lib/northbound_grpc.cpp:1135,1
    - Dst: grpc::ServerBuilder::AddChannelArgument
      Src: /src/frr/lib/northbound_grpc.cpp:1136,1
    - Dst: grpc::ServerBuilder::AddCompletionQueue
      Src: /src/frr/lib/northbound_grpc.cpp:1139,1
    - Dst: grpc::ServerBuilder::BuildAndStart
      Src: /src/frr/lib/northbound_grpc.cpp:1140,1
    - Dst: std::unique_ptr::get
      Src: /src/frr/lib/northbound_grpc.cpp:1141,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:1143,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:1145,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1148,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1149,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1150,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1151,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1152,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1153,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1154,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1155,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1156,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1157,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1158,1
    - Dst: REQUEST_NEWRPC_STREAMING
      Src: /src/frr/lib/northbound_grpc.cpp:1161,1
    - Dst: REQUEST_NEWRPC_STREAMING
      Src: /src/frr/lib/northbound_grpc.cpp:1162,1
    - Dst: zlog_notice
      Src: /src/frr/lib/northbound_grpc.cpp:1164,1
    - Dst: std::stringstream::str
      Src: /src/frr/lib/northbound_grpc.cpp:1165,1
    - Dst: std::unique_ptr::Next
      Src: /src/frr/lib/northbound_grpc.cpp:1171,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1172,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1176,1
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1180,1
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1184,1
    - Dst: RpcStateBase*::get_state
      Src: /src/frr/lib/northbound_grpc.cpp:1185,1
    - Dst: RpcStateBase*::run
      Src: /src/frr/lib/northbound_grpc.cpp:1186,1
    - Dst: std::unique_ptr::get
      Src: /src/frr/lib/northbound_grpc.cpp:1186,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1188,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:1194,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1197,1
    - Dst: std::unique_ptr::Shutdown
      Src: /src/frr/lib/northbound_grpc.cpp:1198,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:1201,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1203,1
    - Dst: std::unique_ptr::Shutdown
      Src: /src/frr/lib/northbound_grpc.cpp:1204,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1206,1
    - Dst: std::unique_ptr::Next
      Src: /src/frr/lib/northbound_grpc.cpp:1207,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1208,1
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1209,1
    - Dst: zlog_info
      Src: /src/frr/lib/northbound_grpc.cpp:1212,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1224,1
    - Dst: frr_pthread_new
      Src: /src/frr/lib/northbound_grpc.cpp:1226,1
    - Dst: reinterpret_cast<void *>
      Src: /src/frr/lib/northbound_grpc.cpp:1227,1
    - Dst: frr_pthread_run
      Src: /src/frr/lib/northbound_grpc.cpp:1230,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_grpc.cpp:1231,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_grpc.cpp:1232,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1241,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:1250,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1253,1
    - Dst: grpc::Server*::Shutdown
      Src: /src/frr/lib/northbound_grpc.cpp:1254,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:1257,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1259,1
    - Dst: pthread_join
      Src: /src/frr/lib/northbound_grpc.cpp:1260,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/lib/northbound_grpc.cpp:1261,1
    - Dst: google::protobuf::ShutdownProtobufLibrary
      Src: /src/frr/lib/northbound_grpc.cpp:1265,1
    - Dst: std::stoul
      Src: /src/frr/lib/northbound_grpc.cpp:1283,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_grpc.cpp:1285,1
    - Dst: frr_grpc_init
      Src: /src/frr/lib/northbound_grpc.cpp:1292,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_grpc.cpp:1298,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_grpc.cpp:1304,1
    - Dst: event_add_event
      Src: /src/frr/lib/northbound_grpc.cpp:1305,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_grpc.cpp:1311,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 128
    argCount: 1
    argNames:
    - tag
    argTypes:
    - UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1022
    functionDepth: 2
    functionLinenumber: 1022
    functionLinenumberEnd: 1318
    functionName: HandleUnaryExecute
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - list_delete
    - frr_grpc_init
    - reinterpret_cast<intptr_t>
    - RpcStateBase*::get_state
    - listnode_add
    - value
    - nb_callback_rpc
    - yang_data_list_new
    - flog_err
    - std::unique_ptr::Shutdown
    - std::stringstream::str
    - UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*::response::add_output
    - grpc::InsecureServerCredentials
    - UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*::request::path
    - yang_data_new
    - frr_pthread_destroy
    - std::unique_ptr::get
    - UnaryRpcState<frr::ExecuteRequest, frr::ExecuteResponse>*::request::input
    - grpc::ServerBuilder::RegisterService
    - flog_warn
    - reinterpret_cast<void *>
    - pthread_join
    - hook_register
    - ALL_LIST_ELEMENTS_RO
    - std::unique_ptr::Next
    - grpc::ServerBuilder::AddCompletionQueue
    - safe_strerror
    - grpc::ServerBuilder::AddListeningPort
    - frr_pthread_new
    - pthread_mutex_unlock
    - grpc::Status
    - pthread_mutex_lock
    - zlog_info
    - google::protobuf::ShutdownProtobufLibrary
    - grpc_debug
    - path
    - static_cast
    - grpc::ServerBuilder::AddChannelArgument
    - RpcStateBase*::run
    - nb_node_find
    - grpc::Server*::Shutdown
    - std::stoul
    - grpc::ServerBuilder::BuildAndStart
    - frr_pthread_run
    - REQUEST_NEWRPC_STREAMING
    - frr_pthread_set_name
    - REQUEST_NEWRPC
    - frr::PathValue*::set_value
    - frr::PathValue*::set_path
    - zlog_notice
    - event_add_event
    linkageType: ''
    returnType: grpc::Status
    signature: "grpc::Status HandleUnaryExecute(\n\tUnaryRpcState<frr::ExecuteRequest,
      frr::ExecuteResponse> *tag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NAME
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1101
    functionDepth: 0
    functionLinenumber: 1101
    functionLinenumberEnd: 1110
    functionName: REQUEST_NEWRPC_STREAMING
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REQUEST_NEWRPC_STREAMING(NAME)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1122,1
    - Dst: reinterpret_cast<intptr_t>
      Src: /src/frr/lib/northbound_grpc.cpp:1123,1
    - Dst: frr_pthread_set_name
      Src: /src/frr/lib/northbound_grpc.cpp:1130,1
    - Dst: grpc::ServerBuilder::AddListeningPort
      Src: /src/frr/lib/northbound_grpc.cpp:1133,1
    - Dst: std::stringstream::str
      Src: /src/frr/lib/northbound_grpc.cpp:1133,1
    - Dst: grpc::InsecureServerCredentials
      Src: /src/frr/lib/northbound_grpc.cpp:1134,1
    - Dst: grpc::ServerBuilder::RegisterService
      Src: /src/frr/lib/northbound_grpc.cpp:1135,1
    - Dst: grpc::ServerBuilder::AddChannelArgument
      Src: /src/frr/lib/northbound_grpc.cpp:1136,1
    - Dst: grpc::ServerBuilder::AddCompletionQueue
      Src: /src/frr/lib/northbound_grpc.cpp:1139,1
    - Dst: grpc::ServerBuilder::BuildAndStart
      Src: /src/frr/lib/northbound_grpc.cpp:1140,1
    - Dst: std::unique_ptr::get
      Src: /src/frr/lib/northbound_grpc.cpp:1141,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:1143,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:1145,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1148,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1149,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1150,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1151,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1152,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1153,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1154,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1155,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1156,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1157,1
    - Dst: REQUEST_NEWRPC
      Src: /src/frr/lib/northbound_grpc.cpp:1158,1
    - Dst: REQUEST_NEWRPC_STREAMING
      Src: /src/frr/lib/northbound_grpc.cpp:1161,1
    - Dst: REQUEST_NEWRPC_STREAMING
      Src: /src/frr/lib/northbound_grpc.cpp:1162,1
    - Dst: zlog_notice
      Src: /src/frr/lib/northbound_grpc.cpp:1164,1
    - Dst: std::stringstream::str
      Src: /src/frr/lib/northbound_grpc.cpp:1165,1
    - Dst: std::unique_ptr::Next
      Src: /src/frr/lib/northbound_grpc.cpp:1171,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1172,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1176,1
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1180,1
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1184,1
    - Dst: RpcStateBase*::get_state
      Src: /src/frr/lib/northbound_grpc.cpp:1185,1
    - Dst: RpcStateBase*::run
      Src: /src/frr/lib/northbound_grpc.cpp:1186,1
    - Dst: std::unique_ptr::get
      Src: /src/frr/lib/northbound_grpc.cpp:1186,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1188,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:1194,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1197,1
    - Dst: std::unique_ptr::Shutdown
      Src: /src/frr/lib/northbound_grpc.cpp:1198,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:1201,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1203,1
    - Dst: std::unique_ptr::Shutdown
      Src: /src/frr/lib/northbound_grpc.cpp:1204,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1206,1
    - Dst: std::unique_ptr::Next
      Src: /src/frr/lib/northbound_grpc.cpp:1207,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1208,1
    - Dst: static_cast
      Src: /src/frr/lib/northbound_grpc.cpp:1209,1
    - Dst: zlog_info
      Src: /src/frr/lib/northbound_grpc.cpp:1212,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 57
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1120
    functionDepth: 1
    functionLinenumber: 1120
    functionLinenumberEnd: 1214
    functionName: grpc_pthread_start
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - reinterpret_cast<intptr_t>
    - RpcStateBase*::get_state
    - std::unique_ptr::Shutdown
    - std::stringstream::str
    - grpc::InsecureServerCredentials
    - std::unique_ptr::get
    - grpc::ServerBuilder::RegisterService
    - std::unique_ptr::Next
    - grpc::ServerBuilder::AddCompletionQueue
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - zlog_info
    - grpc_debug
    - static_cast
    - grpc::ServerBuilder::AddChannelArgument
    - RpcStateBase*::run
    - grpc::ServerBuilder::BuildAndStart
    - REQUEST_NEWRPC_STREAMING
    - frr_pthread_set_name
    - REQUEST_NEWRPC
    - grpc::ServerBuilder::AddListeningPort
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void *grpc_pthread_start(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1224,1
    - Dst: frr_pthread_new
      Src: /src/frr/lib/northbound_grpc.cpp:1226,1
    - Dst: reinterpret_cast<void *>
      Src: /src/frr/lib/northbound_grpc.cpp:1227,1
    - Dst: frr_pthread_run
      Src: /src/frr/lib/northbound_grpc.cpp:1230,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_grpc.cpp:1231,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_grpc.cpp:1232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - port
    argTypes:
    - uint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1217
    functionDepth: 1
    functionLinenumber: 1217
    functionLinenumberEnd: 1237
    functionName: frr_grpc_init
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 1
    functionsReached:
    - reinterpret_cast<void *>
    - grpc_debug
    - frr_pthread_run
    - flog_err
    - safe_strerror
    - frr_pthread_new
    linkageType: ''
    returnType: int
    signature: int frr_grpc_init(uint port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1241,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/northbound_grpc.cpp:1250,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1253,1
    - Dst: Shutdown
      Src: /src/frr/lib/northbound_grpc.cpp:1254,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/northbound_grpc.cpp:1257,1
    - Dst: grpc_debug
      Src: /src/frr/lib/northbound_grpc.cpp:1259,1
    - Dst: pthread_join
      Src: /src/frr/lib/northbound_grpc.cpp:1260,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/lib/northbound_grpc.cpp:1261,1
    - Dst: google::protobuf::ShutdownProtobufLibrary
      Src: /src/frr/lib/northbound_grpc.cpp:1265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1239
    functionDepth: 1
    functionLinenumber: 1239
    functionLinenumberEnd: 1268
    functionName: frr_grpc_finish
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_join
    - google::protobuf::ShutdownProtobufLibrary
    - grpc_debug
    - frr_pthread_destroy
    - pthread_mutex_unlock
    - Shutdown
    linkageType: ''
    returnType: int
    signature: int frr_grpc_finish(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::stoul
      Src: /src/frr/lib/northbound_grpc.cpp:1283,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_grpc.cpp:1285,1
    - Dst: frr_grpc_init
      Src: /src/frr/lib/northbound_grpc.cpp:1292,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_grpc.cpp:1298,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1277
    functionDepth: 2
    functionLinenumber: 1277
    functionLinenumberEnd: 1299
    functionName: frr_grpc_module_very_late_init
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - std::stoul
    - flog_err
    - frr_grpc_init
    linkageType: ''
    returnType: void
    signature: void frr_grpc_module_very_late_init(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/lib/northbound_grpc.cpp:1304,1
    - Dst: event_add_event
      Src: /src/frr/lib/northbound_grpc.cpp:1305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1301
    functionDepth: 1
    functionLinenumber: 1301
    functionLinenumberEnd: 1307
    functionName: frr_grpc_module_late_init
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - hook_register
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int frr_grpc_module_late_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/lib/northbound_grpc.cpp:1311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1309
    functionDepth: 1
    functionLinenumber: 1309
    functionLinenumberEnd: 1314
    functionName: frr_grpc_module_init
    functionSourceFile: /src/frr/lib/northbound_grpc.cpp
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int frr_grpc_module_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/lib/affinitymap_cli.c:83,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/affinitymap_cli.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 90
    functionName: affinity_map_config_write
    functionSourceFile: /src/frr/lib/affinitymap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int affinity_map_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/affinitymap_cli.c:95,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/affinitymap_cli.c:96,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/affinitymap_cli.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 98
    functionName: cli_show_affinity_map
    functionSourceFile: /src/frr/lib/affinitymap_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: void
    signature: "void cli_show_affinity_map(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/lib/affinitymap_cli.c:104,1
    - Dst: install_element
      Src: /src/frr/lib/affinitymap_cli.c:105,1
    - Dst: install_element
      Src: /src/frr/lib/affinitymap_cli.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 107
    functionName: affinity_map_init
    functionSourceFile: /src/frr/lib/affinitymap_cli.c
    functionUses: 2
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void affinity_map_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - txn
    - ','
    - batch
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: FOREACH_BE_TXN_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_BE_TXN_BATCH_IN_LIST(txn, batch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - txn
    - ','
    - batch
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: FOREACH_BE_APPLY_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_BE_APPLY_BATCH_IN_LIST(txn, batch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - client_ctx
    - ','
    - txn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: FOREACH_BE_TXN_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_BE_TXN_IN_LIST(client_ctx, txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_conn_send_msg
      Src: /src/frr/lib/mgmt_be_client.c:131,1
    - Dst: mgmtd__be_message__get_packed_size
      Src: /src/frr/lib/mgmt_be_client.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - client_ctx
    - be_msg
    argTypes:
    - struct mgmt_be_client*
    - Mgmtd__BeMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: mgmt_be_client_send_msg
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - msg_conn_send_msg
    - mgmtd__be_message__get_packed_size
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_client_send_msg(struct mgmt_be_client *client_ctx,\n\t\t\t\t
      \  Mgmtd__BeMessage *be_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - txn
    - batch_id
    argTypes:
    - struct mgmt_be_txn_ctx*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 149
    functionName: mgmt_be_find_batch_by_id
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct mgmt_be_batch_ctx
    signature: "struct mgmt_be_batch_ctx *\nmgmt_be_find_batch_by_id(struct mgmt_be_txn_ctx
      *txn,\n\t\t\t    uint64_t batch_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: FOREACH_BE_TXN_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOREACH_BE_TXN_BATCH_IN_LIST (txn, batch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_find_batch_by_id
      Src: /src/frr/lib/mgmt_be_client.c:156,1
    - Dst: XCALLOC
      Src: /src/frr/lib/mgmt_be_client.c:158,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_be_client.c:160,1
    - Dst: mgmt_be_batches_add_tail
      Src: /src/frr/lib/mgmt_be_client.c:163,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - txn
    - batch_id
    argTypes:
    - struct mgmt_be_txn_ctx*
    - uint64_t
    assertStmts:
    - condition: (batch)
      pos:
        line_end: 159
        line_start: 159
        source_file: /src/frr/lib/mgmt_be_client.c
    constantsTouched: []
    func_position:
      end: 171
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 171
    functionName: mgmt_be_batch_create
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - mgmt_be_find_batch_by_id
    - XCALLOC
    - mgmt_be_batches_add_tail
    - assert
    linkageType: ''
    returnType: struct mgmt_be_batch_ctx
    signature: 'struct mgmt_be_batch_ctx *

      mgmt_be_batch_create(struct mgmt_be_txn_ctx *txn, uint64_t batch_id)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_batches_del
      Src: /src/frr/lib/mgmt_be_client.c:181,1
    - Dst: free
      Src: /src/frr/lib/mgmt_be_client.c:186,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_be_client.c:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - txn
    - batch
    argTypes:
    - struct mgmt_be_txn_ctx*
    - struct mgmt_be_batch_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 196
    functionName: mgmt_be_batch_delete
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_batches_del
    - free
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void mgmt_be_batch_delete(struct mgmt_be_txn_ctx *txn,\n\t\t\t\t    struct
      mgmt_be_batch_ctx **batch)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_batch_delete
      Src: /src/frr/lib/mgmt_be_client.c:203,1
    - Dst: mgmt_be_batch_delete
      Src: /src/frr/lib/mgmt_be_client.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_be_txn_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 209
    functionName: mgmt_be_cleanup_all_batches
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_batch_delete
    linkageType: ''
    returnType: void
    signature: void mgmt_be_cleanup_all_batches(struct mgmt_be_txn_ctx *txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_batch_delete
      Src: /src/frr/lib/mgmt_be_client.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: FOREACH_BE_TXN_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_batch_delete
    linkageType: ''
    returnType: void
    signature: void FOREACH_BE_TXN_BATCH_IN_LIST (txn, batch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_batch_delete
      Src: /src/frr/lib/mgmt_be_client.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 208
    functionName: FOREACH_BE_APPLY_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_batch_delete
    linkageType: ''
    returnType: void
    signature: void FOREACH_BE_APPLY_BATCH_IN_LIST (txn, batch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FOREACH_BE_TXN_IN_LIST
      Src: /src/frr/lib/mgmt_be_client.c:217,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - client_ctx
    - txn_id
    - warn
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 224
    functionName: mgmt_be_find_txn_by_id
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_ERR
    - FOREACH_BE_TXN_IN_LIST
    linkageType: ''
    returnType: struct mgmt_be_txn_ctx
    signature: "struct mgmt_be_txn_ctx *\nmgmt_be_find_txn_by_id(struct mgmt_be_client
      *client_ctx, uint64_t txn_id,\n\t\t       bool warn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_find_txn_by_id
      Src: /src/frr/lib/mgmt_be_client.c:231,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:233,1
    - Dst: XCALLOC
      Src: /src/frr/lib/mgmt_be_client.c:238,1
    - Dst: mgmt_be_batches_init
      Src: /src/frr/lib/mgmt_be_client.c:241,1
    - Dst: mgmt_be_batches_init
      Src: /src/frr/lib/mgmt_be_client.c:242,1
    - Dst: mgmt_be_txns_add_tail
      Src: /src/frr/lib/mgmt_be_client.c:243,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - client_ctx
    - txn_id
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 248
    functionName: mgmt_be_txn_create
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - XCALLOC
    - MGMTD_BE_CLIENT_ERR
    - mgmt_be_batches_init
    - mgmt_be_txns_add_tail
    - mgmt_be_find_txn_by_id
    linkageType: ''
    returnType: struct mgmt_be_txn_ctx
    signature: 'struct mgmt_be_txn_ctx *

      mgmt_be_txn_create(struct mgmt_be_client *client_ctx, uint64_t txn_id)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_txns_del
      Src: /src/frr/lib/mgmt_be_client.c:263,1
    - Dst: mgmt_be_cleanup_all_batches
      Src: /src/frr/lib/mgmt_be_client.c:276,1
    - Dst: nb_candidate_commit_abort
      Src: /src/frr/lib/mgmt_be_client.c:278,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_be_client.c:280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - client_ctx
    - txn
    argTypes:
    - struct mgmt_be_client*
    - struct mgmt_be_txn_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 283
    functionName: mgmt_be_txn_delete
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - XFREE
    - mgmt_be_txns_del
    - nb_candidate_commit_abort
    - mgmt_be_cleanup_all_batches
    linkageType: ''
    returnType: void
    signature: "void mgmt_be_txn_delete(struct mgmt_be_client *client_ctx,\n\t\t\t
      \      struct mgmt_be_txn_ctx **txn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_txn_delete
      Src: /src/frr/lib/mgmt_be_client.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - client_ctx
    argTypes:
    - struct mgmt_be_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 292
    functionName: mgmt_be_cleanup_all_txns
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_txn_delete
    linkageType: ''
    returnType: void
    signature: void mgmt_be_cleanup_all_txns(struct mgmt_be_client *client_ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_txn_delete
      Src: /src/frr/lib/mgmt_be_client.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 291
    functionName: FOREACH_BE_TXN_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 1
    functionsReached:
    - mgmt_be_txn_delete
    linkageType: ''
    returnType: void
    signature: void FOREACH_BE_TXN_IN_LIST (client_ctx, txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_txn_reply__init
      Src: /src/frr/lib/mgmt_be_client.c:300,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/lib/mgmt_be_client.c:305,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:309,1
    - Dst: mgmt_be_client_send_msg
      Src: /src/frr/lib/mgmt_be_client.c:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - client_ctx
    - txn_id
    - create
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 312
    functionName: mgmt_be_send_txn_reply
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_message__init
    - mgmtd__be_txn_reply__init
    - MGMTD_BE_CLIENT_DBG
    - mgmt_be_client_send_msg
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_txn_reply(struct mgmt_be_client *client_ctx,\n\t\t\t\t
      \ uint64_t txn_id, bool create)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:320,1
    - Dst: mgmt_be_txn_create
      Src: /src/frr/lib/mgmt_be_client.c:322,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:331,1
    - Dst: mgmt_be_find_txn_by_id
      Src: /src/frr/lib/mgmt_be_client.c:332,1
    - Dst: mgmt_be_txn_delete
      Src: /src/frr/lib/mgmt_be_client.c:334,1
    - Dst: mgmt_be_send_txn_reply
      Src: /src/frr/lib/mgmt_be_client.c:337,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/lib/mgmt_be_client.c:340,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - client_ctx
    - txn_id
    - create
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 342
    functionName: mgmt_be_process_txn_req
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - mgmt_be_send_txn_reply
    - mgmt_be_txn_create
    - mgmt_be_txn_delete
    - msg_conn_disconnect
    - mgmt_be_find_txn_by_id
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_process_txn_req(struct mgmt_be_client *client_ctx,\n\t\t\t\t
      \  uint64_t txn_id, bool create)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_cfg_data_create_reply__init
      Src: /src/frr/lib/mgmt_be_client.c:352,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/lib/mgmt_be_client.c:359,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:363,1
    - Dst: mgmt_be_client_send_msg
      Src: /src/frr/lib/mgmt_be_client.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - client_ctx
    - txn_id
    - batch_id
    - success
    - error_if_any
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    - uint64_t
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 368
    functionName: mgmt_be_send_cfgdata_create_reply
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_cfg_data_create_reply__init
    - mgmtd__be_message__init
    - MGMTD_BE_CLIENT_DBG
    - mgmt_be_client_send_msg
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_cfgdata_create_reply(struct mgmt_be_client *client_ctx,\n\t\t\t\t\t
      \    uint64_t txn_id, uint64_t batch_id,\n\t\t\t\t\t     bool success,\n\t\t\t\t\t
      \    const char *error_if_any)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/mgmt_be_client.c:374,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:376,1
    - Dst: nb_candidate_commit_abort
      Src: /src/frr/lib/mgmt_be_client.c:379,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:389,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/mgmt_be_client.c:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_be_txn_ctx*
    assertStmts:
    - condition: (txn && txn->client)
      pos:
        line_end: 373
        line_start: 373
        source_file: /src/frr/lib/mgmt_be_client.c
    constantsTouched: []
    func_position:
      end: 394
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 394
    functionName: mgmt_be_txn_cfg_abort
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - nb_candidate_commit_abort
    - MGMTD_BE_CLIENT_ERR
    - nb_config_replace
    - assert
    linkageType: ''
    returnType: void
    signature: void mgmt_be_txn_cfg_abort(struct mgmt_be_txn_ctx *txn)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/mgmt_be_client.c:413,1
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:431,1
    - Dst: nb_candidate_edit_config_changes
      Src: /src/frr/lib/mgmt_be_client.c:432,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:440,1
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:447,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/mgmt_be_client.c:448,1
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:470,1
    - Dst: nb_candidate_commit_prepare
      Src: /src/frr/lib/mgmt_be_client.c:471,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:482,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:487,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/mgmt_be_client.c:492,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:494,1
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:498,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/mgmt_be_client.c:499,1
    - Dst: mgmt_be_send_cfgdata_create_reply
      Src: /src/frr/lib/mgmt_be_client.c:507,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/mgmt_be_client.c:511,1
    - Dst: mgmt_be_batches_del
      Src: /src/frr/lib/mgmt_be_client.c:513,1
    - Dst: mgmt_be_batches_add_tail
      Src: /src/frr/lib/mgmt_be_client.c:514,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:518,1
    - Dst: mgmt_be_txn_cfg_abort
      Src: /src/frr/lib/mgmt_be_client.c:524,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 54
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_be_txn_ctx*
    assertStmts:
    - condition: (txn && txn->client)
      pos:
        line_end: 412
        line_start: 412
        source_file: /src/frr/lib/mgmt_be_client.c
    constantsTouched: []
    func_position:
      end: 527
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 527
    functionName: mgmt_be_txn_cfg_prepare
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - nb_candidate_edit_config_changes
    - MGMTD_BE_CLIENT_ERR
    - timeval_elapsed
    - mgmt_be_batches_add_tail
    - nb_candidate_commit_prepare
    - SET_FLAG
    - gettimeofday
    - mgmt_be_send_cfgdata_create_reply
    - mgmt_be_batches_del
    - mgmt_be_txn_cfg_abort
    - assert
    linkageType: ''
    returnType: int
    signature: int mgmt_be_txn_cfg_prepare(struct mgmt_be_txn_ctx *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:431,1
    - Dst: nb_candidate_edit_config_changes
      Src: /src/frr/lib/mgmt_be_client.c:432,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:440,1
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:447,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/mgmt_be_client.c:448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 459
    functionName: FOREACH_BE_TXN_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_ERR
    - timeval_elapsed
    - gettimeofday
    - nb_candidate_edit_config_changes
    linkageType: ''
    returnType: void
    signature: void FOREACH_BE_TXN_BATCH_IN_LIST (txn, batch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_send_cfgdata_create_reply
      Src: /src/frr/lib/mgmt_be_client.c:507,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/mgmt_be_client.c:511,1
    - Dst: mgmt_be_batches_del
      Src: /src/frr/lib/mgmt_be_client.c:513,1
    - Dst: mgmt_be_batches_add_tail
      Src: /src/frr/lib/mgmt_be_client.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 516
    functionName: FOREACH_BE_TXN_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_batches_del
    - SET_FLAG
    - mgmt_be_batches_add_tail
    - mgmt_be_send_cfgdata_create_reply
    linkageType: ''
    returnType: void
    signature: void FOREACH_BE_TXN_BATCH_IN_LIST (txn, batch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_batch_create
      Src: /src/frr/lib/mgmt_be_client.c:543,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:545,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:551,1
    - Dst: strlcpy
      Src: /src/frr/lib/mgmt_be_client.c:565,1
    - Dst: strdup
      Src: /src/frr/lib/mgmt_be_client.c:571,1
    - Dst: strncmp
      Src: /src/frr/lib/mgmt_be_client.c:576,1
    - Dst: strlen
      Src: /src/frr/lib/mgmt_be_client.c:577,1
    - Dst: free
      Src: /src/frr/lib/mgmt_be_client.c:578,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - client_ctx
    - txn
    - batch_id
    - cfg_req
    - num_req
    argTypes:
    - struct mgmt_be_client*
    - struct mgmt_be_txn_ctx*
    - uint64_t
    - Mgmtd__YangCfgDataReq*[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 584
    functionName: mgmt_be_update_setcfg_in_batch
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - strlen
    - MGMTD_BE_CLIENT_ERR
    - strlcpy
    - free
    - strdup
    - strncmp
    - mgmt_be_batch_create
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_update_setcfg_in_batch(struct mgmt_be_client *client_ctx,\n\t\t\t\t\t
      \ struct mgmt_be_txn_ctx *txn,\n\t\t\t\t\t  uint64_t batch_id,\n\t\t\t\t\t  Mgmtd__YangCfgDataReq
      *cfg_req[],\n\t\t\t\t\t  int num_req)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_find_txn_by_id
      Src: /src/frr/lib/mgmt_be_client.c:593,1
    - Dst: mgmt_be_update_setcfg_in_batch
      Src: /src/frr/lib/mgmt_be_client.c:597,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:601,1
    - Dst: mgmt_be_txn_cfg_prepare
      Src: /src/frr/lib/mgmt_be_client.c:602,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/lib/mgmt_be_client.c:608,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 6
    argNames:
    - client_ctx
    - txn_id
    - batch_id
    - cfg_req
    - num_req
    - end_of_data
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    - uint64_t
    - Mgmtd__YangCfgDataReq*[]
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 586
    functionDepth: 4
    functionLinenumber: 586
    functionLinenumberEnd: 610
    functionName: mgmt_be_process_cfgdata_req
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - mgmt_be_update_setcfg_in_batch
    - mgmt_be_txn_cfg_prepare
    - msg_conn_disconnect
    - mgmt_be_find_txn_by_id
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_process_cfgdata_req(struct mgmt_be_client *client_ctx,\n\t\t\t\t
      \      uint64_t txn_id, uint64_t batch_id,\n\t\t\t\t       Mgmtd__YangCfgDataReq
      *cfg_req[],\n\t\t\t\t       int num_req, bool end_of_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_cfg_data_apply_reply__init
      Src: /src/frr/lib/mgmt_be_client.c:620,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/lib/mgmt_be_client.c:629,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:633,1
    - Dst: mgmt_be_client_send_msg
      Src: /src/frr/lib/mgmt_be_client.c:640,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - client_ctx
    - txn_id
    - batch_ids
    - num_batch_ids
    - success
    - error_if_any
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    - uint64_t[]
    - size_t
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 612
    functionDepth: 2
    functionLinenumber: 612
    functionLinenumberEnd: 641
    functionName: mgmt_be_send_apply_reply
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_message__init
    - mgmtd__be_cfg_data_apply_reply__init
    - mgmt_be_client_send_msg
    - MGMTD_BE_CLIENT_DBG
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_apply_reply(struct mgmt_be_client *client_ctx,\n\t\t\t\t
      \   uint64_t txn_id, uint64_t batch_ids[],\n\t\t\t\t    size_t num_batch_ids,
      bool success,\n\t\t\t\t    const char *error_if_any)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/mgmt_be_client.c:654,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_be_client.c:657,1
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:663,1
    - Dst: nb_candidate_commit_apply
      Src: /src/frr/lib/mgmt_be_client.c:664,1
    - Dst: gettimeofday
      Src: /src/frr/lib/mgmt_be_client.c:666,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/mgmt_be_client.c:668,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/mgmt_be_client.c:684,1
    - Dst: mgmt_be_batches_del
      Src: /src/frr/lib/mgmt_be_client.c:685,1
    - Dst: mgmt_be_batches_add_tail
      Src: /src/frr/lib/mgmt_be_client.c:686,1
    - Dst: mgmt_be_send_apply_reply
      Src: /src/frr/lib/mgmt_be_client.c:691,1
    - Dst: mgmt_be_send_apply_reply
      Src: /src/frr/lib/mgmt_be_client.c:698,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:701,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - txn
    argTypes:
    - struct mgmt_be_txn_ctx*
    assertStmts:
    - condition: (txn && txn->client)
      pos:
        line_end: 653
        line_start: 653
        source_file: /src/frr/lib/mgmt_be_client.c
    - condition: (txn->nb_txn)
      pos:
        line_end: 656
        line_start: 656
        source_file: /src/frr/lib/mgmt_be_client.c
    constantsTouched: []
    func_position:
      end: 705
      start: 643
    functionDepth: 3
    functionLinenumber: 643
    functionLinenumberEnd: 705
    functionName: mgmt_be_txn_proc_cfgapply
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - mgmt_be_send_apply_reply
    - timeval_elapsed
    - mgmt_be_batches_add_tail
    - SET_FLAG
    - nb_candidate_commit_apply
    - gettimeofday
    - mgmt_be_batches_del
    - assert
    linkageType: ''
    returnType: int
    signature: int mgmt_be_txn_proc_cfgapply(struct mgmt_be_txn_ctx *txn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/lib/mgmt_be_client.c:684,1
    - Dst: mgmt_be_batches_del
      Src: /src/frr/lib/mgmt_be_client.c:685,1
    - Dst: mgmt_be_batches_add_tail
      Src: /src/frr/lib/mgmt_be_client.c:686,1
    - Dst: mgmt_be_send_apply_reply
      Src: /src/frr/lib/mgmt_be_client.c:691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 679
    functionDepth: 3
    functionLinenumber: 679
    functionLinenumberEnd: 696
    functionName: FOREACH_BE_APPLY_BATCH_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_batches_del
    - SET_FLAG
    - mgmt_be_batches_add_tail
    - mgmt_be_send_apply_reply
    linkageType: ''
    returnType: void
    signature: void FOREACH_BE_APPLY_BATCH_IN_LIST (txn, batch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_be_find_txn_by_id
      Src: /src/frr/lib/mgmt_be_client.c:712,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:716,1
    - Dst: mgmt_be_txn_proc_cfgapply
      Src: /src/frr/lib/mgmt_be_client.c:717,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/lib/mgmt_be_client.c:722,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - client_ctx
    - txn_id
    argTypes:
    - struct mgmt_be_client*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 707
    functionDepth: 4
    functionLinenumber: 707
    functionLinenumberEnd: 724
    functionName: mgmt_be_process_cfg_apply
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - msg_conn_disconnect
    - mgmt_be_find_txn_by_id
    - mgmt_be_txn_proc_cfgapply
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_process_cfg_apply(struct mgmt_be_client *client_ctx,\n\t\t\t\t
      \    uint64_t txn_id)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:739,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:743,1
    - Dst: mgmt_be_process_txn_req
      Src: /src/frr/lib/mgmt_be_client.c:747,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:752,1
    - Dst: mgmt_be_process_cfgdata_req
      Src: /src/frr/lib/mgmt_be_client.c:757,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:765,1
    - Dst: mgmt_be_process_cfg_apply
      Src: /src/frr/lib/mgmt_be_client.c:767,1
    - Dst: MGMTD_BE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_be_client.c:771,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - client_ctx
    - be_msg
    argTypes:
    - struct mgmt_be_client*
    - Mgmtd__BeMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 727
    functionDepth: 5
    functionLinenumber: 727
    functionLinenumberEnd: 798
    functionName: mgmt_be_client_handle_msg
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - mgmt_be_process_cfg_apply
    - MGMTD_BE_CLIENT_ERR
    - mgmt_be_process_cfgdata_req
    - mgmt_be_process_txn_req
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_client_handle_msg(struct mgmt_be_client *client_ctx,\n\t\t\t\t
      \    Mgmtd__BeMessage *be_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/mgmt_be_client.c:807,1
    - Dst: container_of
      Src: /src/frr/lib/mgmt_be_client.c:808,1
    - Dst: mgmtd__be_message__unpack
      Src: /src/frr/lib/mgmt_be_client.c:810,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:812,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:816,1
    - Dst: mgmt_be_client_handle_msg
      Src: /src/frr/lib/mgmt_be_client.c:819,1
    - Dst: mgmtd__be_message__free_unpacked
      Src: /src/frr/lib/mgmt_be_client.c:820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - version
    - data
    - len
    - conn
    argTypes:
    - uint8_t
    - uint8_t*
    - size_t
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 800
    functionDepth: 6
    functionLinenumber: 800
    functionLinenumberEnd: 821
    functionName: mgmt_be_client_process_msg
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - mgmtd__be_message__free_unpacked
    - mgmtd__be_message__unpack
    - container_of
    - mgmt_be_client_handle_msg
    linkageType: ''
    returnType: void
    signature: "void mgmt_be_client_process_msg(uint8_t version, uint8_t *data,\n\t\t\t\t
      \      size_t len, struct msg_conn *conn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__be_subscribe_req__init
      Src: /src/frr/lib/mgmt_be_client.c:830,1
    - Dst: mgmtd__be_message__init
      Src: /src/frr/lib/mgmt_be_client.c:839,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:843,1
    - Dst: mgmt_be_client_send_msg
      Src: /src/frr/lib/mgmt_be_client.c:848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - client_ctx
    - subscr_xpaths
    - num_xpaths
    - reg_xpaths
    argTypes:
    - struct mgmt_be_client*
    - bool
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 823
    functionDepth: 2
    functionLinenumber: 823
    functionLinenumberEnd: 849
    functionName: mgmt_be_send_subscr_req
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__be_message__init
    - mgmt_be_client_send_msg
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__be_subscribe_req__init
    linkageType: ''
    returnType: int
    signature: "int mgmt_be_send_subscr_req(struct mgmt_be_client *client_ctx,\n\t\t\t
      \   bool subscr_xpaths, int num_xpaths,\n\t\t\t    char **reg_xpaths)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/mgmt_be_client.c:855,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_be_client.c:859,1
    - Dst: mgmt_be_send_subscr_req
      Src: /src/frr/lib/mgmt_be_client.c:860,1
    - Dst: mgmt_be_cleanup_all_txns
      Src: /src/frr/lib/mgmt_be_client.c:872,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - msg_client
    - connected
    argTypes:
    - struct msg_client*
    - bool
    assertStmts:
    - condition: (msg_client->conn.fd != -1)
      pos:
        line_end: 858
        line_start: 858
        source_file: /src/frr/lib/mgmt_be_client.c
    constantsTouched: []
    func_position:
      end: 875
      start: 851
    functionDepth: 4
    functionLinenumber: 851
    functionLinenumberEnd: 875
    functionName: _notify_conenct_disconnect
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - mgmt_be_cleanup_all_txns
    - container_of
    - mgmt_be_send_subscr_req
    - assert
    linkageType: ''
    returnType: int
    signature: "int _notify_conenct_disconnect(struct msg_client *msg_client,\n\t\t\t\t
      \     bool connected)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _notify_conenct_disconnect
      Src: /src/frr/lib/mgmt_be_client.c:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct msg_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 877
    functionDepth: 5
    functionLinenumber: 877
    functionLinenumberEnd: 880
    functionName: mgmt_be_client_notify_conenct
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - _notify_conenct_disconnect
    linkageType: ''
    returnType: int
    signature: int mgmt_be_client_notify_conenct(struct msg_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/mgmt_be_client.c:884,1
    - Dst: _notify_conenct_disconnect
      Src: /src/frr/lib/mgmt_be_client.c:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 882
    functionDepth: 5
    functionLinenumber: 882
    functionLinenumberEnd: 887
    functionName: mgmt_be_client_notify_disconenct
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - container_of
    - _notify_conenct_disconnect
    linkageType: ''
    returnType: int
    signature: int mgmt_be_client_notify_disconenct(struct msg_conn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/lib/mgmt_be_client.c:908,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 909
    functionName: mgmt_debug_client_be_set_all
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    linkageType: ''
    returnType: void
    signature: void mgmt_debug_client_be_set_all(uint32_t flags, bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/mgmt_be_client.c:913,1
    - Dst: vty_out
      Src: /src/frr/lib/mgmt_be_client.c:914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 911
    functionDepth: 2
    functionLinenumber: 911
    functionLinenumberEnd: 917
    functionName: mgmt_debug_be_client_config_write
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - vty_out
    linkageType: ''
    returnType: int
    signature: int mgmt_debug_be_client_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_DBG_BE_CLIENT_CHECK
      Src: /src/frr/lib/mgmt_be_client.c:921,1
    - Dst: vty_out
      Src: /src/frr/lib/mgmt_be_client.c:922,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 919
    functionDepth: 2
    functionLinenumber: 919
    functionLinenumberEnd: 923
    functionName: mgmt_debug_be_client_show_debug
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 0
    functionsReached:
    - vty_out
    - MGMTD_DBG_BE_CLIENT_CHECK
    linkageType: ''
    returnType: void
    signature: void mgmt_debug_be_client_show_debug(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/mgmt_be_client.c:941,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_be_client.c:944,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/mgmt_be_client.c:946,1
    - Dst: nb_config_new
      Src: /src/frr/lib/mgmt_be_client.c:948,1
    - Dst: mgmt_be_txns_init
      Src: /src/frr/lib/mgmt_be_client.c:951,1
    - Dst: msg_client_init
      Src: /src/frr/lib/mgmt_be_client.c:952,1
    - Dst: MGMTD_DBG_BE_CLIENT_CHECK
      Src: /src/frr/lib/mgmt_be_client.c:957,1
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - client_name
    - cbs
    - user_data
    - event_loop
    argTypes:
    - char*
    - struct mgmt_be_client_cbs*
    - uintptr_t
    - struct event_loop*
    assertStmts:
    - condition: (running_config)
      pos:
        line_end: 943
        line_start: 943
        source_file: /src/frr/lib/mgmt_be_client.c
    constantsTouched: []
    func_position:
      end: 962
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 962
    functionName: mgmt_be_client_create
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 1
    functionsReached:
    - assert
    - MGMTD_BE_CLIENT_DBG
    - XCALLOC
    - nb_config_new
    - mgmt_be_txns_init
    - msg_client_init
    - MGMTD_DBG_BE_CLIENT_CHECK
    - XSTRDUP
    linkageType: ''
    returnType: struct mgmt_be_client
    signature: "struct mgmt_be_client *mgmt_be_client_create(const char *client_name,\n\t\t\t\t\t
      \    struct mgmt_be_client_cbs *cbs,\n\t\t\t\t\t     uintptr_t user_data,\n\t\t\t\t\t
      \    struct event_loop *event_loop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_init
      Src: /src/frr/lib/mgmt_be_client.c:967,1
    - Dst: install_node
      Src: /src/frr/lib/mgmt_be_client.c:968,1
    - Dst: install_element
      Src: /src/frr/lib/mgmt_be_client.c:969,1
    - Dst: install_element
      Src: /src/frr/lib/mgmt_be_client.c:970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 965
    functionDepth: 1
    functionLinenumber: 965
    functionLinenumberEnd: 971
    functionName: mgmt_be_client_lib_vty_init
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 1
    functionsReached:
    - install_element
    - install_node
    - debug_init
    linkageType: ''
    returnType: void
    signature: void mgmt_be_client_lib_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_BE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_be_client.c:975,1
    - Dst: msg_client_cleanup
      Src: /src/frr/lib/mgmt_be_client.c:978,1
    - Dst: mgmt_be_cleanup_all_txns
      Src: /src/frr/lib/mgmt_be_client.c:979,1
    - Dst: mgmt_be_txns_fini
      Src: /src/frr/lib/mgmt_be_client.c:980,1
    - Dst: nb_config_free
      Src: /src/frr/lib/mgmt_be_client.c:981,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_be_client.c:983,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_be_client.c:984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct mgmt_be_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 973
    functionDepth: 4
    functionLinenumber: 973
    functionLinenumberEnd: 985
    functionName: mgmt_be_client_destroy
    functionSourceFile: /src/frr/lib/mgmt_be_client.c
    functionUses: 1
    functionsReached:
    - MGMTD_BE_CLIENT_DBG
    - msg_client_cleanup
    - mgmt_be_cleanup_all_txns
    - mgmt_be_txns_fini
    - XFREE
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void mgmt_be_client_destroy(struct mgmt_be_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/json.c:21,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - struct cmd_token*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 25
    functionName: use_json
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 5
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: bool
    signature: bool use_json(const int argc, struct cmd_token *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vasnprintfrr
      Src: /src/frr/lib/json.c:32,1
    - Dst: json_object_new_string
      Src: /src/frr/lib/json.c:33,1
    - Dst: XFREE
      Src: /src/frr/lib/json.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fmt
    - args
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 38
    functionName: json_object_new_stringv
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 1
    functionsReached:
    - vasnprintfrr
    - json_object_new_string
    - XFREE
    linkageType: ''
    returnType: struct json_object
    signature: struct json_object *json_object_new_stringv(const char *fmt, va_list
      args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_add
      Src: /src/frr/lib/json.c:42,1
    - Dst: json_object_new_string
      Src: /src/frr/lib/json.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - json
    - str
    argTypes:
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: json_array_string_add
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 12
    functionsReached:
    - json_object_new_string
    - json_object_array_add
    linkageType: ''
    returnType: void
    signature: void json_array_string_add(json_object *json, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_add
      Src: /src/frr/lib/json.c:47,1
    - Dst: json_object_new_stringv
      Src: /src/frr/lib/json.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - json
    - fmt
    - args
    argTypes:
    - json_object*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: json_array_string_addv
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 1
    functionsReached:
    - json_object_new_stringv
    - json_object_array_add
    linkageType: ''
    returnType: void
    signature: void json_array_string_addv(json_object *json, const char *fmt, va_list
      args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:53,1
    - Dst: json_object_new_string
      Src: /src/frr/lib/json.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - obj
    - key
    - s
    argTypes:
    - struct json_object*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: json_object_string_add
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 159
    functionsReached:
    - json_object_new_string
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void json_object_string_add(struct json_object *obj, const char *key,\n\t\t\t
      \   const char *s)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:59,1
    - Dst: json_object_new_stringv
      Src: /src/frr/lib/json.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - obj
    - key
    - fmt
    - args
    argTypes:
    - struct json_object*
    - char*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: json_object_string_addv
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 1
    functionsReached:
    - json_object_new_stringv
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void json_object_string_addv(struct json_object *obj, const char *key,\n\t\t\t
      \    const char *fmt, va_list args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vasnprintfrr
      Src: /src/frr/lib/json.c:68,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:69,1
    - Dst: XFREE
      Src: /src/frr/lib/json.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - parent
    - child
    - keyfmt
    - args
    argTypes:
    - struct json_object*
    - struct json_object*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: json_object_object_addv
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 1
    functionsReached:
    - vasnprintfrr
    - json_object_object_add
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void json_object_object_addv(struct json_object *parent,\n\t\t\t     struct
      json_object *child, const char *keyfmt,\n\t\t\t     va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:77,1
    - Dst: json_object_new_int64
      Src: /src/frr/lib/json.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - obj
    - key
    - i
    argTypes:
    - struct json_object*
    - char*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: json_object_int_add
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 154
    functionsReached:
    - json_object_object_add
    - json_object_new_int64
    linkageType: ''
    returnType: void
    signature: void json_object_int_add(struct json_object *obj, const char *key,
      int64_t i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:82,1
    - Dst: json_object_new_double
      Src: /src/frr/lib/json.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - obj
    - key
    - i
    argTypes:
    - struct json_object*
    - char*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: json_object_double_add
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 4
    functionsReached:
    - json_object_object_add
    - json_object_new_double
    linkageType: ''
    returnType: void
    signature: void json_object_double_add(struct json_object *obj, const char *key,
      double i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:87,1
    - Dst: json_object_new_boolean
      Src: /src/frr/lib/json.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - obj
    - key
    argTypes:
    - struct json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: json_object_boolean_false_add
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 20
    functionsReached:
    - json_object_new_boolean
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void json_object_boolean_false_add(struct json_object *obj, const char
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:92,1
    - Dst: json_object_new_boolean
      Src: /src/frr/lib/json.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - obj
    - key
    argTypes:
    - struct json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: json_object_boolean_true_add
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 43
    functionsReached:
    - json_object_new_boolean
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void json_object_boolean_true_add(struct json_object *obj, const char
      *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_add
      Src: /src/frr/lib/json.c:97,1
    - Dst: json_object_new_boolean
      Src: /src/frr/lib/json.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - obj
    - key
    - val
    argTypes:
    - struct json_object*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: json_object_boolean_add
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 19
    functionsReached:
    - json_object_new_boolean
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void json_object_boolean_add(struct json_object *obj, const char *key,
      bool val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_get
      Src: /src/frr/lib/json.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - obj
    argTypes:
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: json_object_lock
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 2
    functionsReached:
    - json_object_get
    linkageType: ''
    returnType: struct json_object
    signature: struct json_object *json_object_lock(struct json_object *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_put
      Src: /src/frr/lib/json.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - obj
    argTypes:
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: json_object_free
    functionSourceFile: /src/frr/lib/json.c
    functionUses: 32
    functionsReached:
    - json_object_put
    linkageType: ''
    returnType: void
    signature: void json_object_free(struct json_object *obj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debug_cb_list_init
      Src: /src/frr/lib/debug.c:40,1
    - Dst: debug_cb_list_add_head
      Src: /src/frr/lib/debug.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cb
    argTypes:
    - struct debug_callbacks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 44
    functionName: debug_init
    functionSourceFile: /src/frr/lib/debug.c
    functionUses: 14
    functionsReached:
    - debug_cb_list_init
    - debug_cb_list_add_head
    linkageType: ''
    returnType: void
    signature: void debug_init(struct debug_callbacks *cb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/debug.c:48,1
    - Dst: install_element
      Src: /src/frr/lib/debug.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: debug_init_cli
    functionSourceFile: /src/frr/lib/debug.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void debug_init_cli(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fseek
      Src: /src/frr/lib/fuzz.h:13,1
    - Dst: ftell
      Src: /src/frr/lib/fuzz.h:14,1
    - Dst: malloc
      Src: /src/frr/lib/fuzz.h:18,1
    - Dst: fseek
      Src: /src/frr/lib/fuzz.h:20,1
    - Dst: fread
      Src: /src/frr/lib/fuzz.h:21,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - input
    argTypes:
    - uint8_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 24
    functionName: frrfuzz_read_input
    functionSourceFile: /src/frr/lib/fuzz.h
    functionUses: 2
    functionsReached:
    - malloc
    - ftell
    - fseek
    - fread
    linkageType: ''
    returnType: int
    signature: int frrfuzz_read_input(uint8_t **input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 73
    functionName: FRR_COREMOD_SETUP
    functionSourceFile: /src/frr/lib/module.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_COREMOD_SETUP(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: FRR_MODULE_SETUP
    functionSourceFile: /src/frr/lib/module.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_MODULE_SETUP(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/frr/lib/seqlock.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - addr1
    - op
    - val1
    - timeout
    - addr2
    - val3
    argTypes:
    - void*
    - int
    - int
    - struct timespec*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: sys_futex
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: long
    signature: "long sys_futex(void *addr1, int op, int val1,\n\t\t      const struct
      timespec *timeout, void *addr2, int val3)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sqlo
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: wait_once
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_once(sqlo, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - sqlo
    - ','
    - val
    - ','
    - time
    - ','
    - reltime
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: wait_time
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_time(sqlo, val, time, reltime)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sqlo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: wait_poke
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_poke(sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sqlo
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: wait_once
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_once(sqlo, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - sqlo
    - ','
    - val
    - ','
    - time
    - ','
    - reltime
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: wait_time
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_time(sqlo, val, time, reltime)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sqlo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: wait_poke
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_poke(sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sqlo
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: wait_once
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_once(sqlo, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/seqlock.c:81,1
    - Dst: _umtx_op
      Src: /src/frr/lib/seqlock.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - sqlo
    - val
    - abstime
    - reltime
    argTypes:
    - struct seqlock*
    - uint32_t
    - struct timespec*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: wait_time
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached:
    - _umtx_op
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int wait_time(struct seqlock *sqlo, uint32_t val,\n\t\t      const
      struct timespec *abstime,\n\t\t      const struct timespec *reltime)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sqlo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: wait_poke
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_poke(sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sqlo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: wait_init
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_init(sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sqlo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: wait_prep
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_prep(sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sqlo
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: wait_once
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_once(sqlo, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - sqlo
    - ','
    - val
    - ','
    - time
    - ','
    - reltime
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: wait_time
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_time(sqlo, val, time, reltime)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sqlo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: wait_done
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_done(sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sqlo
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: wait_poke
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wait_poke(sqlo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seqlock_assert_valid
      Src: /src/frr/lib/seqlock.c:124,1
    - Dst: wait_prep
      Src: /src/frr/lib/seqlock.c:126,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.c:127,1
    - Dst: SEQLOCK_VAL
      Src: /src/frr/lib/seqlock.c:130,1
    - Dst: assert
      Src: /src/frr/lib/seqlock.c:131,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/seqlock.c:136,1
    - Dst: wait_once
      Src: /src/frr/lib/seqlock.c:139,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.c:140,1
    - Dst: wait_done
      Src: /src/frr/lib/seqlock.c:145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - sqlo
    - val
    argTypes:
    - struct seqlock*
    - seqlock_val_t
    assertStmts:
    - condition: (cal < 0x40000000 || cal > 0xc0000000)
      pos:
        line_end: 130
        line_start: 130
        source_file: /src/frr/lib/seqlock.c
    constantsTouched: []
    func_position:
      end: 146
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 146
    functionName: seqlock_wait
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 3
    functionsReached:
    - atomic_compare_exchange_weak_explicit
    - SEQLOCK_VAL
    - seqlock_assert_valid
    - atomic_load_explicit
    - wait_prep
    - wait_done
    - wait_once
    - assert
    linkageType: ''
    returnType: void
    signature: void seqlock_wait(struct seqlock *sqlo, seqlock_val_t val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/frr/lib/seqlock.c:160,1
    - Dst: clock_gettime
      Src: /src/frr/lib/seqlock.c:161,1
    - Dst: seqlock_assert_valid
      Src: /src/frr/lib/seqlock.c:201,1
    - Dst: wait_prep
      Src: /src/frr/lib/seqlock.c:203,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.c:204,1
    - Dst: SEQLOCK_VAL
      Src: /src/frr/lib/seqlock.c:207,1
    - Dst: assert
      Src: /src/frr/lib/seqlock.c:208,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/seqlock.c:213,1
    - Dst: wait_time
      Src: /src/frr/lib/seqlock.c:220,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.c:226,1
    - Dst: wait_done
      Src: /src/frr/lib/seqlock.c:230,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - sqlo
    - val
    - abs_monotime_limit
    argTypes:
    - struct seqlock*
    - seqlock_val_t
    - struct timespec*
    assertStmts:
    - condition: (cal < 0x40000000 || cal > 0xc0000000)
      pos:
        line_end: 207
        line_start: 207
        source_file: /src/frr/lib/seqlock.c
    constantsTouched: []
    func_position:
      end: 233
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 233
    functionName: seqlock_timedwait
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 0
    functionsReached:
    - assert
    - atomic_compare_exchange_weak_explicit
    - clock_gettime
    - seqlock_assert_valid
    - atomic_load_explicit
    - wait_prep
    - wait_done
    - wait_time
    - SEQLOCK_VAL
    linkageType: ''
    returnType: bool
    signature: "bool seqlock_timedwait(struct seqlock *sqlo, seqlock_val_t val,\n\t\t
      \      const struct timespec *abs_monotime_limit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: seqlock_assert_valid
      Src: /src/frr/lib/seqlock.c:239,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.c:241,1
    - Dst: SEQLOCK_VAL
      Src: /src/frr/lib/seqlock.c:244,1
    - Dst: assert
      Src: /src/frr/lib/seqlock.c:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sqlo
    - val
    argTypes:
    - struct seqlock*
    - seqlock_val_t
    assertStmts:
    - condition: (cur < 0x40000000 || cur > 0xc0000000)
      pos:
        line_end: 244
        line_start: 244
        source_file: /src/frr/lib/seqlock.c
    constantsTouched: []
    func_position:
      end: 247
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 247
    functionName: seqlock_check
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 1
    functionsReached:
    - assert
    - seqlock_assert_valid
    - atomic_load_explicit
    - SEQLOCK_VAL
    linkageType: ''
    returnType: bool
    signature: bool seqlock_check(struct seqlock *sqlo, seqlock_val_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: seqlock_assert_valid
      Src: /src/frr/lib/seqlock.c:253,1
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/seqlock.c:255,1
    - Dst: wait_poke
      Src: /src/frr/lib/seqlock.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sqlo
    - val
    argTypes:
    - struct seqlock*
    - seqlock_val_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: seqlock_acquire_val
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 2
    functionsReached:
    - atomic_exchange_explicit
    - seqlock_assert_valid
    - wait_poke
    linkageType: ''
    returnType: void
    signature: void seqlock_acquire_val(struct seqlock *sqlo, seqlock_val_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/seqlock.c:264,1
    - Dst: wait_poke
      Src: /src/frr/lib/seqlock.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - sqlo
    argTypes:
    - struct seqlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: seqlock_release
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 1
    functionsReached:
    - atomic_exchange_explicit
    - wait_poke
    linkageType: ''
    returnType: void
    signature: void seqlock_release(struct seqlock *sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wait_init
      Src: /src/frr/lib/seqlock.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sqlo
    argTypes:
    - struct seqlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: seqlock_init
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 2
    functionsReached:
    - wait_init
    linkageType: ''
    returnType: void
    signature: void seqlock_init(struct seqlock *sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SEQLOCK_VAL
      Src: /src/frr/lib/seqlock.c:278,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sqlo
    argTypes:
    - struct seqlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 280
    functionName: seqlock_cur
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 2
    functionsReached:
    - atomic_load_explicit
    - SEQLOCK_VAL
    linkageType: ''
    returnType: seqlock_val_t
    signature: seqlock_val_t seqlock_cur(struct seqlock *sqlo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.c:286,1
    - Dst: seqlock_assert_valid
      Src: /src/frr/lib/seqlock.c:287,1
    - Dst: SEQLOCK_VAL
      Src: /src/frr/lib/seqlock.c:290,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/seqlock.c:291,1
    - Dst: wait_poke
      Src: /src/frr/lib/seqlock.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - sqlo
    argTypes:
    - struct seqlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 297
    functionName: seqlock_bump
    functionSourceFile: /src/frr/lib/seqlock.c
    functionUses: 3
    functionsReached:
    - atomic_compare_exchange_weak_explicit
    - seqlock_assert_valid
    - atomic_load_explicit
    - SEQLOCK_VAL
    - wait_poke
    linkageType: ''
    returnType: seqlock_val_t
    signature: seqlock_val_t seqlock_bump(struct seqlock *sqlo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/sbuf.c:20,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - dest
    - buf
    - size
    argTypes:
    - struct sbuf*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 26
    functionName: sbuf_init
    functionSourceFile: /src/frr/lib/sbuf.c
    functionUses: 4
    functionsReached:
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void sbuf_init(struct sbuf *dest, char *buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dest
    argTypes:
    - struct sbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: sbuf_reset
    functionSourceFile: /src/frr/lib/sbuf.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sbuf_reset(struct sbuf *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct sbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: sbuf_buf
    functionSourceFile: /src/frr/lib/sbuf.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *sbuf_buf(struct sbuf *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/sbuf.c:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct sbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: sbuf_free
    functionSourceFile: /src/frr/lib/sbuf.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void sbuf_free(struct sbuf *buf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/sbuf.c:55,1
    - Dst: vsnprintfrr
      Src: /src/frr/lib/sbuf.c:56,1
    - Dst: va_end
      Src: /src/frr/lib/sbuf.c:57,1
    - Dst: XREALLOC
      Src: /src/frr/lib/sbuf.c:65,1
    - Dst: snprintf
      Src: /src/frr/lib/sbuf.c:71,1
    - Dst: va_start
      Src: /src/frr/lib/sbuf.c:79,1
    - Dst: vsnprintfrr
      Src: /src/frr/lib/sbuf.c:80,1
    - Dst: va_end
      Src: /src/frr/lib/sbuf.c:82,1
    - Dst: assert
      Src: /src/frr/lib/sbuf.c:90,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - buf
    - indent
    - format
    argTypes:
    - struct sbuf*
    - int
    - char*
    assertStmts:
    - condition: (!"Buffer filled up!")
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/frr/lib/sbuf.c
    constantsTouched: []
    func_position:
      end: 91
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 91
    functionName: sbuf_push
    functionSourceFile: /src/frr/lib/sbuf.c
    functionUses: 49
    functionsReached:
    - snprintf
    - vsnprintfrr
    - va_start
    - va_end
    - XREALLOC
    - assert
    linkageType: ''
    returnType: void
    signature: void sbuf_push(struct sbuf *buf, int indent, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrscript.c:35,1
    - Dst: strlcpy
      Src: /src/frr/lib/frrscript.c:36,1
    - Dst: frrscript_names_add
      Src: /src/frr/lib/frrscript.c:39,1
    - Dst: zlog_warn
      Src: /src/frr/lib/frrscript.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - function_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 45
    functionName: frrscript_names_add_function_name
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - strlcpy
    - frrscript_names_add
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int frrscript_names_add_function_name(const char *function_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrscript_names_pop
      Src: /src/frr/lib/frrscript.c:51,1
    - Dst: XFREE
      Src: /src/frr/lib/frrscript.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: frrscript_names_destroy
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 1
    functionsReached:
    - frrscript_names_pop
    - XFREE
    linkageType: ''
    returnType: void
    signature: void frrscript_names_destroy(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/frrscript.c:67,1
    - Dst: frrscript_names_find
      Src: /src/frr/lib/frrscript.c:70,1
    - Dst: strlcpy
      Src: /src/frr/lib/frrscript.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - function_name
    - script_name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 75
    functionName: frrscript_names_set_script_name
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - frrscript_names_find
    - strlcpy
    linkageType: ''
    returnType: int
    signature: "int frrscript_names_set_script_name(const char *function_name,\n\t\t\t\t
      \   const char *script_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/frrscript.c:87,1
    - Dst: frrscript_names_find
      Src: /src/frr/lib/frrscript.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - function_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 98
    functionName: frrscript_names_get_script_name
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 3
    functionsReached:
    - frrscript_names_find
    - strlcpy
    linkageType: ''
    returnType: char
    signature: char *frrscript_names_get_script_name(const char *function_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/frrscript.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - snhe
    argTypes:
    - struct frrscript_names_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: frrscript_names_hash_key
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t frrscript_names_hash_key(const struct frrscript_names_entry
      *snhe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/frrscript.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - snhe1
    - snhe2
    argTypes:
    - struct frrscript_names_entry*
    - struct frrscript_names_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: frrscript_names_hash_cmp
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: "int frrscript_names_hash_cmp(const struct frrscript_names_entry *snhe1,\n\t\t\t
      \    const struct frrscript_names_entry *snhe2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/frrscript.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 148
    functionName: codec_hash_key
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int codec_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/frrscript.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: codec_hash_cmp
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: bool
    signature: bool codec_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrscript.c:163,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frrscript.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 169
    functionName: codec_alloc
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *codec_alloc(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/frrscript.c:176,1
    - Dst: XFREE
      Src: /src/frr/lib/frrscript.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 178
    functionName: codec_free
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void codec_free(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/frrscript.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 187
    functionName: lua_function_hash_key
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int lua_function_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/frrscript.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 195
    functionName: lua_function_hash_cmp
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: bool
    signature: bool lua_function_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrscript.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: lua_function_alloc
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_function_alloc(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_close
      Src: /src/frr/lib/frrscript.c:212,1
    - Dst: XFREE
      Src: /src/frr/lib/frrscript.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 214
    functionName: lua_function_free
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - lua_close
    - XFREE
    linkageType: ''
    returnType: void
    signature: void lua_function_free(void *data)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lua_pcall
      Src: /src/frr/lib/frrscript.c:222,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:228,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrscript.c:229,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:232,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrscript.c:233,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:236,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrscript.c:237,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:240,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrscript.c:241,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:244,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrscript.c:245,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrscript.c:250,1
    - Dst: lua_gettop
      Src: /src/frr/lib/frrscript.c:254,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:255,1
    - Dst: lua_istable
      Src: /src/frr/lib/frrscript.c:262,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:263,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - lfs
    - nargs
    argTypes:
    - struct lua_function_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 272
    functionName: _frrscript_call_lua
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - lua_pcall
    - lua_istable
    - zlog_err
    - lua_pop
    - lua_tostring
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: int _frrscript_call_lua(struct lua_function_state *lfs, int nargs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/lib/frrscript.c:282,1
    - Dst: assert
      Src: /src/frr/lib/frrscript.c:292,1
    - Dst: lua_gettop
      Src: /src/frr/lib/frrscript.c:292,1
    - Dst: assert
      Src: /src/frr/lib/frrscript.c:293,1
    - Dst: lua_istable
      Src: /src/frr/lib/frrscript.c:293,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrscript.c:294,1
    - Dst: lua_isnil
      Src: /src/frr/lib/frrscript.c:295,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrscript.c:296,1
    - Dst: zlog_warn
      Src: /src/frr/lib/frrscript.c:297,1
    - Dst: lua_to
      Src: /src/frr/lib/frrscript.c:302,1
    - Dst: assert
      Src: /src/frr/lib/frrscript.c:307,1
    - Dst: lua_gettop
      Src: /src/frr/lib/frrscript.c:307,1
    - Dst: assert
      Src: /src/frr/lib/frrscript.c:308,1
    - Dst: lua_istable
      Src: /src/frr/lib/frrscript.c:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - fs
    - function_name
    - name
    - (*lua_to)(lua_State *L, int idx)
    argTypes:
    - struct frrscript*
    - char*
    - char*
    - void*
    assertStmts:
    - condition: (lua_gettop(lfs->L) == 1)
      pos:
        line_end: 291
        line_start: 291
        source_file: /src/frr/lib/frrscript.c
    - condition: (lua_istable(lfs->L, -1) == 1)
      pos:
        line_end: 292
        line_start: 292
        source_file: /src/frr/lib/frrscript.c
    - condition: (lua_gettop(lfs->L) == 1)
      pos:
        line_end: 306
        line_start: 306
        source_file: /src/frr/lib/frrscript.c
    - condition: (lua_istable(lfs->L, -1) == 1)
      pos:
        line_end: 307
        line_start: 307
        source_file: /src/frr/lib/frrscript.c
    constantsTouched: []
    func_position:
      end: 311
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 311
    functionName: frrscript_get_result
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 2
    functionsReached:
    - lua_istable
    - lua_getfield
    - hash_lookup
    - zlog_warn
    - lua_to
    - lua_pop
    - lua_isnil
    - assert
    - lua_gettop
    linkageType: ''
    returnType: void
    signature: "void *frrscript_get_result(struct frrscript *fs, const char *function_name,\n\t\t\t
      \  const char *name,\n\t\t\t   void *(*lua_to)(lua_State *L, int idx))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/lib/frrscript.c:317,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/frrscript.c:318,1
    - Dst: assert
      Src: /src/frr/lib/frrscript.c:319,1
    - Dst: hash_get
      Src: /src/frr/lib/frrscript.c:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - codec
    argTypes:
    - struct frrscript_codec*
    assertStmts:
    - condition: (!"Type codec double-registered.")
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/frr/lib/frrscript.c
    constantsTouched: []
    func_position:
      end: 323
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 323
    functionName: frrscript_register_type_codec
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    - hash_get
    - zlog_backtrace
    - assert
    linkageType: ''
    returnType: void
    signature: void frrscript_register_type_codec(struct frrscript_codec *codec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrscript_register_type_codec
      Src: /src/frr/lib/frrscript.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - codecs
    argTypes:
    - struct frrscript_codec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 329
    functionName: frrscript_register_type_codecs
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 1
    functionsReached:
    - frrscript_register_type_codec
    linkageType: ''
    returnType: void
    signature: void frrscript_register_type_codecs(struct frrscript_codec *codecs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrscript.c:333,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frrscript.c:335,1
    - Dst: hash_create
      Src: /src/frr/lib/frrscript.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 340
    functionName: frrscript_new
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 5
    functionsReached:
    - hash_create
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: struct frrscript
    signature: struct frrscript *frrscript_new(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newstate
      Src: /src/frr/lib/frrscript.c:347,1
    - Dst: frrlua_export_logging
      Src: /src/frr/lib/frrscript.c:349,1
    - Dst: snprintf
      Src: /src/frr/lib/frrscript.c:353,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:356,1
    - Dst: luaL_dofile
      Src: /src/frr/lib/frrscript.c:361,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:362,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrscript.c:363,1
    - Dst: lua_getglobal
      Src: /src/frr/lib/frrscript.c:368,1
    - Dst: lua_isfunction
      Src: /src/frr/lib/frrscript.c:369,1
    - Dst: lua_gettop
      Src: /src/frr/lib/frrscript.c:369,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:370,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrscript.c:376,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrscript.c:379,1
    - Dst: hash_get
      Src: /src/frr/lib/frrscript.c:388,1
    - Dst: lua_close
      Src: /src/frr/lib/frrscript.c:392,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - fs
    - function_name
    argTypes:
    - struct frrscript*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 394
    functionName: frrscript_load
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 5
    functionsReached:
    - luaL_dofile
    - lua_close
    - lua_getglobal
    - snprintf
    - zlog_err
    - frrlua_export_logging
    - lua_isfunction
    - lua_pop
    - lua_tostring
    - hash_get
    - luaL_newstate
    - lua_gettop
    linkageType: ''
    returnType: int
    signature: "int frrscript_load(struct frrscript *fs, const char *function_name,\n\t\t
      \  int (*load_cb)(struct frrscript *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/frrscript.c:398,1
    - Dst: XFREE
      Src: /src/frr/lib/frrscript.c:399,1
    - Dst: XFREE
      Src: /src/frr/lib/frrscript.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fs
    argTypes:
    - struct frrscript*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 401
    functionName: frrscript_delete
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 3
    functionsReached:
    - hash_clean_and_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void frrscript_delete(struct frrscript *fs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/lib/frrscript.c:405,1
    - Dst: strlcpy
      Src: /src/frr/lib/frrscript.c:408,1
    - Dst: frrscript_register_type_codecs
      Src: /src/frr/lib/frrscript.c:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - sd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 412
    functionName: frrscript_init
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 1
    functionsReached:
    - hash_create
    - strlcpy
    - frrscript_register_type_codecs
    linkageType: ''
    returnType: void
    signature: void frrscript_init(const char *sd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/frrscript.c:416,1
    - Dst: frrscript_names_destroy
      Src: /src/frr/lib/frrscript.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 419
    functionName: frrscript_fini
    functionSourceFile: /src/frr/lib/frrscript.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - frrscript_names_destroy
    linkageType: ''
    returnType: void
    signature: void frrscript_fini(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/iso.c:54,1
    - Dst: bprintfrr
      Src: /src/frr/lib/iso.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 58
    functionName: printfrr_iso_sysid
    functionSourceFile: /src/frr/lib/iso.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_iso_sysid(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t  const void *vptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/iso.c:76,1
    - Dst: bprintfrr
      Src: /src/frr/lib/iso.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: printfrr_iso_pseudo
    functionSourceFile: /src/frr/lib/iso.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_iso_pseudo(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t   const void *vptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/iso.c:98,1
    - Dst: bprintfrr
      Src: /src/frr/lib/iso.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: printfrr_iso_frag_id
    functionSourceFile: /src/frr/lib/iso.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_iso_frag_id(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t    const void *vptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/iso.c:130,1
    - Dst: bprintfrr
      Src: /src/frr/lib/iso.c:136,1
    - Dst: bprintfrr
      Src: /src/frr/lib/iso.c:138,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 143
    functionName: printfrr_iso_addr
    functionSourceFile: /src/frr/lib/iso.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_iso_addr(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t const void *vptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: MGMTD_FE_CLIENT_DBG
    functionSourceFile: /src/frr/lib/mgmt_fe_client.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_FE_CLIENT_DBG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: MGMTD_FE_CLIENT_ERR
    functionSourceFile: /src/frr/lib/mgmt_fe_client.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_FE_CLIENT_ERR(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: MGMTD_DBG_FE_CLIENT_CHECK
    functionSourceFile: /src/frr/lib/mgmt_fe_client.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_DBG_FE_CLIENT_CHECK()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/mpls.c:36,1
    - Dst: strsep
      Src: /src/frr/lib/mpls.c:41,1
    - Dst: strtoul
      Src: /src/frr/lib/mpls.c:42,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/lib/mpls.c:48,1
    - Dst: memcpy
      Src: /src/frr/lib/mpls.c:58,1
    - Dst: XFREE
      Src: /src/frr/lib/mpls.c:61,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - label_str
    - num_labels
    - labels
    argTypes:
    - char*
    - uint8_t*
    - mpls_label_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 64
    functionName: mpls_str2label
    functionSourceFile: /src/frr/lib/mpls.c
    functionUses: 0
    functionsReached:
    - strtoul
    - IS_MPLS_UNRESERVED_LABEL
    - XSTRDUP
    - XFREE
    - strsep
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int mpls_str2label(const char *label_str, uint8_t *num_labels,\n\t\t
      \  mpls_label_t *labels)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcat
      Src: /src/frr/lib/mpls.c:78,1
    - Dst: label2str
      Src: /src/frr/lib/mpls.c:80,1
    - Dst: snprintf
      Src: /src/frr/lib/mpls.c:83,1
    - Dst: label2vni
      Src: /src/frr/lib/mpls.c:85,1
    - Dst: strlcat
      Src: /src/frr/lib/mpls.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - num_labels
    - labels
    - buf
    - len
    - type
    - pretty
    argTypes:
    - uint8_t
    - mpls_label_t*
    - char*
    - int
    - enum lsp_types_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 92
    functionName: mpls_label2str
    functionSourceFile: /src/frr/lib/mpls.c
    functionUses: 14
    functionsReached:
    - strlcat
    - label2vni
    - snprintf
    - label2str
    linkageType: ''
    returnType: char
    signature: "char *mpls_label2str(uint8_t num_labels, const mpls_label_t *labels,
      char *buf,\n\t\t     int len, enum lsp_types_t type, int pretty)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - algo
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 30
    functionName: sr_algorithm_string
    functionSourceFile: /src/frr/lib/segment_routing.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *sr_algorithm_string(uint8_t algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: IS_MATCH_INTERFACE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_INTERFACE(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 232
    functionName: IS_MATCH_IPv4_ADDRESS_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv4_ADDRESS_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 234
    functionName: IS_MATCH_IPv6_ADDRESS_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv6_ADDRESS_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    functionName: IS_MATCH_IPv4_NEXTHOP_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv4_NEXTHOP_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: IS_MATCH_IPv6_NEXTHOP_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv6_NEXTHOP_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: IS_MATCH_IPv4_PREFIX_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv4_PREFIX_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: IS_MATCH_IPv6_PREFIX_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv6_PREFIX_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 244
    functionName: IS_MATCH_IPv4_NEXTHOP_PREFIX_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv4_NEXTHOP_PREFIX_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 246
    functionName: IS_MATCH_IPv6_NEXTHOP_PREFIX_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv6_NEXTHOP_PREFIX_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 248
    functionName: IS_MATCH_IPv4_NEXTHOP_TYPE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv4_NEXTHOP_TYPE(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 250
    functionName: IS_MATCH_IPv6_NEXTHOP_TYPE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv6_NEXTHOP_TYPE(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 252
    functionName: IS_MATCH_METRIC
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_METRIC(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 253
    functionName: IS_MATCH_TAG
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_TAG(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 256
    functionName: IS_MATCH_IPv4_PREFIX_LEN
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv4_PREFIX_LEN(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 258
    functionName: IS_MATCH_IPv6_PREFIX_LEN
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv6_PREFIX_LEN(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 260
    functionName: IS_MATCH_IPv4_NH_PREFIX_LEN
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPv4_NH_PREFIX_LEN(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 262
    functionName: IS_MATCH_SRC_PROTO
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_SRC_PROTO(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 264
    functionName: IS_MATCH_BGP_SRC_PROTO
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_BGP_SRC_PROTO(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 266
    functionName: IS_MATCH_SRC_INSTANCE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_SRC_INSTANCE(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 269
    functionName: IS_MATCH_LOCAL_PREF
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_LOCAL_PREF(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    functionName: IS_MATCH_ALIAS
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_ALIAS(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    functionName: IS_MATCH_SCRIPT
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_SCRIPT(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 273
    functionName: IS_MATCH_ORIGIN
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_ORIGIN(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 274
    functionName: IS_MATCH_RPKI
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_RPKI(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 276
    functionName: IS_MATCH_RPKI_EXTCOMMUNITY
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_RPKI_EXTCOMMUNITY(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 278
    functionName: IS_MATCH_PROBABILITY
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_PROBABILITY(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 280
    functionName: IS_MATCH_SRC_VRF
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_SRC_VRF(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 281
    functionName: IS_MATCH_PEER
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_PEER(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 283
    functionName: IS_MATCH_AS_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_AS_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 285
    functionName: IS_MATCH_MAC_LIST
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_MAC_LIST(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 287
    functionName: IS_MATCH_EVPN_ROUTE_TYPE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_EVPN_ROUTE_TYPE(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 289
    functionName: IS_MATCH_EVPN_DEFAULT_ROUTE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_EVPN_DEFAULT_ROUTE(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 291
    functionName: IS_MATCH_EVPN_VNI
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_EVPN_VNI(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 293
    functionName: IS_MATCH_EVPN_DEFAULT_ROUTE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_EVPN_DEFAULT_ROUTE(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 295
    functionName: IS_MATCH_EVPN_RD
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_EVPN_RD(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 297
    functionName: IS_MATCH_ROUTE_SRC
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_ROUTE_SRC(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 299
    functionName: IS_MATCH_ROUTE_SRC_PL
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_ROUTE_SRC_PL(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: IS_MATCH_COMMUNITY
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_COMMUNITY(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 303
    functionName: IS_MATCH_LCOMMUNITY
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_LCOMMUNITY(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 305
    functionName: IS_MATCH_EXTCOMMUNITY
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_EXTCOMMUNITY(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 307
    functionName: IS_MATCH_IPV4_NH
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPV4_NH(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 309
    functionName: IS_MATCH_IPV6_NH
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MATCH_IPV6_NH(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 313
    functionName: IS_SET_IPv4_NH
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_IPv4_NH(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 315
    functionName: IS_SET_IPv6_NH
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_IPv6_NH(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 317
    functionName: IS_SET_METRIC
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_METRIC(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 318
    functionName: IS_SET_MIN_METRIC
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_MIN_METRIC(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 319
    functionName: IS_SET_MAX_METRIC
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_MAX_METRIC(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 320
    functionName: IS_SET_TAG
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_TAG(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 322
    functionName: IS_SET_SR_TE_COLOR
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_SR_TE_COLOR(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 325
    functionName: IS_SET_SRC
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_SRC(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 328
    functionName: IS_SET_METRIC_TYPE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_METRIC_TYPE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 330
    functionName: IS_SET_FORWARDING_ADDR
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_FORWARDING_ADDR(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 333
    functionName: IS_SET_WEIGHT
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_WEIGHT(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    functionName: IS_SET_TABLE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_TABLE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: IS_SET_LOCAL_PREF
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_LOCAL_PREF(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 338
    functionName: IS_SET_LABEL_INDEX
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_LABEL_INDEX(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 340
    functionName: IS_SET_DISTANCE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_DISTANCE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 342
    functionName: IS_SET_ORIGIN
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_ORIGIN(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 344
    functionName: IS_SET_ATOMIC_AGGREGATE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_ATOMIC_AGGREGATE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 345
    functionName: IS_SET_AIGP_METRIC
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_AIGP_METRIC(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 347
    functionName: IS_SET_ORIGINATOR_ID
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_ORIGINATOR_ID(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 349
    functionName: IS_SET_COMM_LIST_DEL
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_COMM_LIST_DEL(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 351
    functionName: IS_SET_LCOMM_LIST_DEL
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_LCOMM_LIST_DEL(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 353
    functionName: IS_SET_LCOMMUNITY
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_LCOMMUNITY(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 355
    functionName: IS_SET_COMMUNITY
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_COMMUNITY(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 357
    functionName: IS_SET_EXTCOMMUNITY_NONE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_EXTCOMMUNITY_NONE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 359
    functionName: IS_SET_EXTCOMMUNITY_RT
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_EXTCOMMUNITY_RT(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 361
    functionName: IS_SET_EXTCOMMUNITY_NT
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_EXTCOMMUNITY_NT(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 363
    functionName: IS_SET_EXTCOMMUNITY_SOO
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_EXTCOMMUNITY_SOO(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 365
    functionName: IS_SET_EXTCOMMUNITY_LB
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_EXTCOMMUNITY_LB(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 367
    functionName: IS_SET_AGGREGATOR
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_AGGREGATOR(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: IS_SET_AS_PREPEND
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_AS_PREPEND(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 371
    functionName: IS_SET_AS_EXCLUDE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_AS_EXCLUDE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 372
    functionName: IS_SET_AS_REPLACE
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_AS_REPLACE(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 374
    functionName: IS_SET_IPV6_NH_GLOBAL
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_IPV6_NH_GLOBAL(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 376
    functionName: IS_SET_IPV6_VPN_NH
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_IPV6_VPN_NH(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 378
    functionName: IS_SET_IPV6_PEER_ADDR
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_IPV6_PEER_ADDR(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 380
    functionName: IS_SET_IPV6_PREFER_GLOBAL
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_IPV6_PREFER_GLOBAL(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 382
    functionName: IS_SET_IPV4_VPN_NH
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_IPV4_VPN_NH(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 384
    functionName: IS_SET_BGP_IPV4_NH
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_BGP_IPV4_NH(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 386
    functionName: IS_SET_BGP_EVPN_GATEWAY_IP_IPV4
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_BGP_EVPN_GATEWAY_IP_IPV4(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 388
    functionName: IS_SET_BGP_EVPN_GATEWAY_IP_IPV6
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_BGP_EVPN_GATEWAY_IP_IPV6(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 390
    functionName: IS_SET_BGP_L3VPN_NEXTHOP_ENCAPSULATION
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_SET_BGP_L3VPN_NEXTHOP_ENCAPSULATION(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 454
    functionName: route_map_install_match
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: route_map_install_match(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 460
    functionName: route_map_install_set
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: route_map_install_set(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - map
    - ','
    - prefix
    - ','
    - object
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 488
    functionName: route_map_apply
    functionSourceFile: /src/frr/lib/routemap.h
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: route_map_apply(map, prefix, object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/xref.h:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct xrefdata*
    - struct xrefdata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: xrefdata_uid_cmp
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int xrefdata_uid_cmp(const struct xrefdata *a,\n\t\t\t\t   const struct
      xrefdata *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 134
    functionName: XREF_SETUP
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XREF_SETUP()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: XREF_SETUP
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XREF_SETUP()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _CONSTRUCTOR
      Src: /src/frr/lib/xref.h:171,1
    - Dst: xref_block_add
      Src: /src/frr/lib/xref.h:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: _xref_init
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached:
    - _CONSTRUCTOR
    - xref_block_add
    linkageType: ''
    returnType: void
    signature: void _xref_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dst
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 258
    functionName: XREF_LINK
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XREF_LINK(dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xref_gcc_workaround
      Src: /src/frr/lib/xref.h:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ptr
    argTypes:
    - struct xref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: _xref_p
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached:
    - xref_gcc_workaround
    linkageType: ''
    returnType: void
    signature: void _xref_p(const struct xref *_ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dst
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 279
    functionName: XREF_LINK
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XREF_LINK(dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type_
    - ','
    - xrefdata_
    - ','
    - func_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 284
    functionName: XREF_INIT
    functionSourceFile: /src/frr/lib/xref.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XREF_INIT(type_, xrefdata_, func_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:23,1
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:26,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - su
    - str
    argTypes:
    - union sockunion*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 30
    functionName: inet_sutop
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: char *inet_sutop(const union sockunion *su, char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/sockunion.c:39,1
    - Dst: inet_pton
      Src: /src/frr/lib/sockunion.c:41,1
    - Dst: inet_pton
      Src: /src/frr/lib/sockunion.c:50,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - str
    - su
    argTypes:
    - char*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 60
    functionName: str2sockunion
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 12
    functionsReached:
    - inet_pton
    - memset
    linkageType: ''
    returnType: int
    signature: int str2sockunion(const char *str, union sockunion *su)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:64,1
    - Dst: snprintf
      Src: /src/frr/lib/sockunion.c:66,1
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:69,1
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:71,1
    - Dst: snprintf
      Src: /src/frr/lib/sockunion.c:73,1
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - su
    - buf
    - len
    argTypes:
    - union sockunion*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 75
    functionName: sockunion2str
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 11
    functionsReached:
    - inet_ntop
    - sockunion_family
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *sockunion2str(const union sockunion *su, char *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/sockunion.c:79,1
    - Dst: str2sockunion
      Src: /src/frr/lib/sockunion.c:81,1
    - Dst: XFREE
      Src: /src/frr/lib/sockunion.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 86
    functionName: sockunion_str2su
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 1
    functionsReached:
    - XFREE
    - str2sockunion
    - XCALLOC
    linkageType: ''
    returnType: union sockunion
    signature: union sockunion *sockunion_str2su(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_V4MAPPED
      Src: /src/frr/lib/sockunion.c:94,1
    - Dst: memset
      Src: /src/frr/lib/sockunion.c:95,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:98,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: sockunion_normalise_mapped
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    - IN6_IS_ADDR_V4MAPPED
    linkageType: ''
    returnType: void
    signature: void sockunion_normalise_mapped(union sockunion *su)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:109,1
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:112,1
    - Dst: snprintf
      Src: /src/frr/lib/sockunion.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - su
    - buf
    - len
    argTypes:
    - union sockunion*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 118
    functionName: sockunion_log
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *sockunion_log(const union sockunion *su, char *buf,\n\t\t\t\t
      size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/lib/sockunion.c:125,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:128,1
    - Dst: sockunion_log
      Src: /src/frr/lib/sockunion.c:129,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 135
    functionName: sockunion_socket
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 2
    functionsReached:
    - socket
    - flog_err
    - safe_strerror
    - sockunion_log
    linkageType: ''
    returnType: int
    signature: int sockunion_socket(const union sockunion *su)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/frr/lib/sockunion.c:144,1
    - Dst: sockunion_normalise_mapped
      Src: /src/frr/lib/sockunion.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - su
    argTypes:
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 148
    functionName: sockunion_accept
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 3
    functionsReached:
    - sockunion_normalise_mapped
    - accept
    linkageType: ''
    returnType: int
    signature: int sockunion_accept(int sock, union sockunion *su)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 165
    functionName: sockunion_sizeof
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sockunion_sizeof(const union sockunion *su)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:174,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/sockunion.c:183,1
    - Dst: SET_IN6_LINKLOCAL_IFINDEX
      Src: /src/frr/lib/sockunion.c:185,1
    - Dst: connect
      Src: /src/frr/lib/sockunion.c:192,1
    - Dst: sockunion_sizeof
      Src: /src/frr/lib/sockunion.c:192,1
    - Dst: zlog_info
      Src: /src/frr/lib/sockunion.c:202,1
    - Dst: sockunion_log
      Src: /src/frr/lib/sockunion.c:203,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:204,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - fd
    - peersu
    - port
    - ifindex
    argTypes:
    - int
    - union sockunion*
    - unsigned short
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 210
    functionName: sockunion_connect
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 1
    functionsReached:
    - zlog_info
    - connect
    - sockunion_log
    - IN6_IS_ADDR_LINKLOCAL
    - safe_strerror
    - sockunion_sizeof
    - memcpy
    - SET_IN6_LINKLOCAL_IFINDEX
    linkageType: ''
    returnType: enum connect_result
    signature: "enum connect_result sockunion_connect(int fd, const union sockunion
      *peersu,\n\t\t\t\t      unsigned short port, ifindex_t ifindex)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/lib/sockunion.c:220,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 227
    functionName: sockunion_stream_socket
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 1
    functionsReached:
    - socket
    - flog_err
    linkageType: ''
    returnType: int
    signature: int sockunion_stream_socket(union sockunion *su)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/lib/sockunion.c:238,1
    - Dst: sockunion2ip
      Src: /src/frr/lib/sockunion.c:243,1
    - Dst: htonl
      Src: /src/frr/lib/sockunion.c:243,1
    - Dst: htons
      Src: /src/frr/lib/sockunion.c:246,1
    - Dst: memset
      Src: /src/frr/lib/sockunion.c:252,1
    - Dst: bind
      Src: /src/frr/lib/sockunion.c:259,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:262,1
    - Dst: sockunion_log
      Src: /src/frr/lib/sockunion.c:263,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 4
    argNames:
    - sock
    - su
    - port
    - su_addr
    argTypes:
    - int
    - union sockunion*
    - unsigned short
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 268
    functionName: sockunion_bind
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 3
    functionsReached:
    - memset
    - htons
    - sockunion_log
    - flog_err
    - safe_strerror
    - sockunion2ip
    - bind
    - htonl
    linkageType: ''
    returnType: int
    signature: "int sockunion_bind(int sock, union sockunion *su, unsigned short port,\n\t\t
      \  union sockunion *su_addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockunion.c:275,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:278,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 285
    functionName: sockopt_reuseaddr
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 6
    functionsReached:
    - flog_err
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int sockopt_reuseaddr(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockunion.c:293,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 301
    functionName: sockopt_reuseport
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 6
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int sockopt_reuseport(int sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 306
    functionName: sockopt_reuseport
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sockopt_reuseport(int sock)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockunion.c:315,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:318,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockunion.c:327,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:330,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - family
    - sock
    - ttl
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 339
    functionName: sockopt_ttl
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 1
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int sockopt_ttl(int family, int sock, int ttl)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockunion.c:345,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:348,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:351,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockunion.c:357,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:360,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:363,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - family
    - sock
    - minttl
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 370
    functionName: sockopt_minttl
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 3
    functionsReached:
    - flog_err
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int sockopt_minttl(int family, int sock, int minttl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockunion.c:378,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - family
    - sock
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 390
    functionName: sockopt_v6only
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 2
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int sockopt_v6only(int family, int sock)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/sockunion.c:402,1
    - Dst: memcmp
      Src: /src/frr/lib/sockunion.c:406,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/sockunion.c:408,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - su1
    - su2
    argTypes:
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 422
    functionName: sockunion_same
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 25
    functionsReached:
    - IN6_IS_ADDR_LINKLOCAL
    - memcmp
    linkageType: ''
    returnType: int
    signature: int sockunion_same(const union sockunion *su1, const union sockunion
      *su2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:426,1
    - Dst: jhash_1word
      Src: /src/frr/lib/sockunion.c:428,1
    - Dst: jhash2
      Src: /src/frr/lib/sockunion.c:430,1
    - Dst: array_size
      Src: /src/frr/lib/sockunion.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 434
    functionName: sockunion_hash
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 5
    functionsReached:
    - sockunion_family
    - jhash2
    - array_size
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int sockunion_hash(const union sockunion *su)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 445
    functionName: family2addrsize
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t family2addrsize(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: family2addrsize
      Src: /src/frr/lib/sockunion.c:449,1
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 450
    functionName: sockunion_get_addrlen
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 8
    functionsReached:
    - sockunion_family
    - family2addrsize
    linkageType: ''
    returnType: size_t
    signature: size_t sockunion_get_addrlen(const union sockunion *su)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 461
    functionName: sockunion_get_addr
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 7
    functionsReached:
    - sockunion_family
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *sockunion_get_addr(const union sockunion *su)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: family2addrsize
      Src: /src/frr/lib/sockunion.c:466,1
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:469,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:472,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:475,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - su
    - family
    - addr
    - bytes
    argTypes:
    - union sockunion*
    - int
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 478
    functionName: sockunion_set
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 5
    functionsReached:
    - memcpy
    - sockunion_family
    - family2addrsize
    linkageType: ''
    returnType: void
    signature: "void sockunion_set(union sockunion *su, int family, const uint8_t
      *addr,\n\t\t   size_t bytes)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/sockunion.c:493,1
    - Dst: getsockname
      Src: /src/frr/lib/sockunion.c:496,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:498,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:500,1
    - Dst: XCALLOC
      Src: /src/frr/lib/sockunion.c:505,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:506,1
    - Dst: XCALLOC
      Src: /src/frr/lib/sockunion.c:510,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:511,1
    - Dst: sockunion_normalise_mapped
      Src: /src/frr/lib/sockunion.c:512,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 521
    functionName: sockunion_getsockname
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - memset
    - XCALLOC
    - sockunion_normalise_mapped
    - flog_err
    - safe_strerror
    - getsockname
    - memcpy
    linkageType: ''
    returnType: union sockunion
    signature: union sockunion *sockunion_getsockname(int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/sockunion.c:536,1
    - Dst: getpeername
      Src: /src/frr/lib/sockunion.c:538,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:540,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockunion.c:541,1
    - Dst: XCALLOC
      Src: /src/frr/lib/sockunion.c:546,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:547,1
    - Dst: XCALLOC
      Src: /src/frr/lib/sockunion.c:551,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:552,1
    - Dst: sockunion_normalise_mapped
      Src: /src/frr/lib/sockunion.c:553,1
    - Dst: flog_err
      Src: /src/frr/lib/sockunion.c:557,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 562
    functionName: sockunion_getpeername
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - getpeername
    - memset
    - XCALLOC
    - sockunion_normalise_mapped
    - flog_err
    - safe_strerror
    - memcpy
    linkageType: ''
    returnType: union sockunion
    signature: union sockunion *sockunion_getpeername(int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/lib/sockunion.c:572,1
    - Dst: printf
      Src: /src/frr/lib/sockunion.c:575,1
    - Dst: printf
      Src: /src/frr/lib/sockunion.c:582,1
    - Dst: printf
      Src: /src/frr/lib/sockunion.c:586,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 589
    functionName: sockunion_print
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void sockunion_print(const union sockunion *su)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - addr1
    - addr2
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 591
    functionDepth: 0
    functionLinenumber: 591
    functionLinenumberEnd: 606
    functionName: in6addr_cmp
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int in6addr_cmp(const struct in6_addr *addr1, const struct in6_addr
      *addr2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/sockunion.c:616,1
    - Dst: sockunion2ip
      Src: /src/frr/lib/sockunion.c:616,1
    - Dst: ntohl
      Src: /src/frr/lib/sockunion.c:616,1
    - Dst: sockunion2ip
      Src: /src/frr/lib/sockunion.c:616,1
    - Dst: ntohl
      Src: /src/frr/lib/sockunion.c:618,1
    - Dst: sockunion2ip
      Src: /src/frr/lib/sockunion.c:618,1
    - Dst: ntohl
      Src: /src/frr/lib/sockunion.c:618,1
    - Dst: sockunion2ip
      Src: /src/frr/lib/sockunion.c:618,1
    - Dst: in6addr_cmp
      Src: /src/frr/lib/sockunion.c:624,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - su1
    - su2
    argTypes:
    - union sockunion*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 626
    functionName: sockunion_cmp
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 12
    functionsReached:
    - in6addr_cmp
    - sockunion2ip
    - ntohl
    linkageType: ''
    returnType: int
    signature: int sockunion_cmp(const union sockunion *su1, const union sockunion
      *su2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/sockunion.c:632,1
    - Dst: memcpy
      Src: /src/frr/lib/sockunion.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 635
    functionName: sockunion_dup
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 3
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: union sockunion
    signature: union sockunion *sockunion_dup(const union sockunion *su)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/sockunion.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 640
    functionName: sockunion_free
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 12
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void sockunion_free(union sockunion *su)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/sockunion.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: sockunion_init
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 3
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void sockunion_init(union sockunion *su)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:658,1
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:676,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:678,1
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:681,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:682,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:684,1
    - Dst: ntohs
      Src: /src/frr/lib/sockunion.c:684,1
    - Dst: bputch
      Src: /src/frr/lib/sockunion.c:688,1
    - Dst: inet_ntop
      Src: /src/frr/lib/sockunion.c:689,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:690,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:692,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:695,1
    - Dst: ntohs
      Src: /src/frr/lib/sockunion.c:696,1
    - Dst: strnlen
      Src: /src/frr/lib/sockunion.c:702,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:704,1
    - Dst: strnlen
      Src: /src/frr/lib/sockunion.c:709,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:710,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:714,1
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:714,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 648
    functionDepth: 1
    functionLinenumber: 648
    functionLinenumberEnd: 718
    functionName: printfrr_psu
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - sockunion_family
    - bprintfrr
    - bputch
    - ntohs
    - inet_ntop
    - bputs
    - strnlen
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_psu(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \   const void *ptr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_family
      Src: /src/frr/lib/sockunion.c:724,1
    - Dst: memcmp
      Src: /src/frr/lib/sockunion.c:730,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - su
    argTypes:
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 735
    functionName: sockunion_is_null
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 3
    functionsReached:
    - sockunion_family
    - memcmp
    linkageType: ''
    returnType: int
    signature: int sockunion_is_null(const union sockunion *su)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:743,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:745,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:747,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:750,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:754,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - buf
    - ea
    - val
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 758
    functionName: printfrr_pf
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_pf(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  uintmax_t val)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:766,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:768,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:770,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:773,1
    - Dst: bputs
      Src: /src/frr/lib/sockunion.c:777,1
    - Dst: bprintfrr
      Src: /src/frr/lib/sockunion.c:780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - buf
    - ea
    - val
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 781
    functionName: printfrr_so
    functionSourceFile: /src/frr/lib/sockunion.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_so(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  uintmax_t val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - V
    - ','
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: vector_slot
    functionSourceFile: /src/frr/lib/vector.h
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vector_slot(V,I)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: vector_active
    functionSourceFile: /src/frr/lib/vector.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vector_active(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - vector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: vector_count
    functionSourceFile: /src/frr/lib/vector.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int vector_count(vector v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:27,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - size
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 35
    functionName: setsockopt_so_recvbuf
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 4
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setsockopt_so_recvbuf(int sock, int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:41,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - size
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: setsockopt_so_sendbuf
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 3
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setsockopt_so_sendbuf(const int sock, int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/frr/lib/sockopt.c:55,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:58,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: getsockopt_so_sendbuf
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 2
    functionsReached:
    - getsockopt
    - flog_err_sys
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int getsockopt_so_sendbuf(const int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/frr/lib/sockopt.c:70,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:73,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 79
    functionName: getsockopt_so_recvbuf
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - flog_err_sys
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int getsockopt_so_recvbuf(const int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/lib/sockopt.c:85,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/lib/sockopt.c:86,1
    - Dst: CMSG_DATA
      Src: /src/frr/lib/sockopt.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - msgh
    - level
    - type
    argTypes:
    - struct msghdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: getsockopt_cmsg_data
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - CMSG_NXTHDR
    - CMSG_FIRSTHDR
    - CMSG_DATA
    linkageType: ''
    returnType: void
    signature: void *getsockopt_cmsg_data(struct msghdr *msgh, int level, int type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:99,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:102,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:104,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:106,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:108,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sock
    - val
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: setsockopt_ipv6_pktinfo
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 2
    functionsReached:
    - flog_err
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv6_pktinfo(int sock, int val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:119,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - val
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: setsockopt_ipv6_multicast_hops
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 2
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv6_multicast_hops(int sock, int val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:131,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - val
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 136
    functionName: setsockopt_ipv6_unicast_hops
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 1
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv6_unicast_hops(int sock, int val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:143,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:146,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:148,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sock
    - val
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 153
    functionName: setsockopt_ipv6_hoplimit
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 2
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv6_hoplimit(int sock, int val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:160,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - val
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 165
    functionName: setsockopt_ipv6_multicast_loop
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 2
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv6_multicast_loop(int sock, int val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt_cmsg_data
      Src: /src/frr/lib/sockopt.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - msgh
    argTypes:
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 174
    functionName: getsockopt_ipv6_ifindex
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - getsockopt_cmsg_data
    linkageType: ''
    returnType: int
    signature: int getsockopt_ipv6_ifindex(struct msghdr *msgh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:181,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:184,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - tclass
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 189
    functionName: setsockopt_ipv6_tclass
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 2
    functionsReached:
    - flog_err
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv6_tclass(int sock, int tclass)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/sockopt.c:219,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:227,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:233,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:235,1
    - Dst: assert
      Src: /src/frr/lib/sockopt.c:244,1
    - Dst: memset
      Src: /src/frr/lib/sockopt.c:245,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:250,1
    - Dst: zlog_info
      Src: /src/frr/lib/sockopt.c:256,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:259,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:261,1
    - Dst: assert
      Src: /src/frr/lib/sockopt.c:277,1
    - Dst: memset
      Src: /src/frr/lib/sockopt.c:280,1
    - Dst: htonl
      Src: /src/frr/lib/sockopt.c:283,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:288,1
    - Dst: zlog_info
      Src: /src/frr/lib/sockopt.c:294,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:297,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:299,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 5
    argNames:
    - sock
    - optname
    - if_addr
    - mcast_addr
    - ifindex
    argTypes:
    - int
    - int
    - struct in_addr
    - unsigned int
    - ifindex_t
    assertStmts:
    - condition: (optname == IP_ADD_MEMBERSHIP || optname == IP_DROP_MEMBERSHIP)
      pos:
        line_end: 243
        line_start: 243
        source_file: /src/frr/lib/sockopt.c
    - condition: (optname == IP_ADD_MEMBERSHIP || optname == IP_DROP_MEMBERSHIP)
      pos:
        line_end: 276
        line_start: 276
        source_file: /src/frr/lib/sockopt.c
    constantsTouched: []
    func_position:
      end: 307
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 307
    functionName: setsockopt_ipv4_multicast
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 8
    functionsReached:
    - zlog_info
    - memset
    - htonl
    - setsockopt
    - assert
    linkageType: ''
    returnType: int
    signature: "int setsockopt_ipv4_multicast(int sock, int optname, struct in_addr
      if_addr,\n\t\t\t      unsigned int mcast_addr, ifindex_t ifindex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/sockopt.c:318,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:321,1
    - Dst: htonl
      Src: /src/frr/lib/sockopt.c:332,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - sock
    - if_addr
    - ifindex
    argTypes:
    - int
    - struct in_addr
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 342
    functionName: setsockopt_ipv4_multicast_if
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 3
    functionsReached:
    - htonl
    - setsockopt
    - memset
    linkageType: ''
    returnType: int
    signature: "int setsockopt_ipv4_multicast_if(int sock, struct in_addr if_addr,\n\t\t\t\t
      ifindex_t ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:348,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - val
    argTypes:
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 354
    functionName: setsockopt_ipv4_multicast_loop
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 3
    functionsReached:
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv4_multicast_loop(int sock, uint8_t val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:361,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:363,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:365,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:367,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:369,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:371,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - sock
    - val
    argTypes:
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 381
    functionName: setsockopt_ipv4_ifindex
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - flog_err
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv4_ifindex(int sock, ifindex_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:387,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:389,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sock
    - tos
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 393
    functionName: setsockopt_ipv4_tos
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 5
    functionsReached:
    - flog_err
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int setsockopt_ipv4_tos(int sock, int tos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_ifindex
      Src: /src/frr/lib/sockopt.c:402,1
    - Dst: setsockopt_ipv6_pktinfo
      Src: /src/frr/lib/sockopt.c:405,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - af
    - sock
    - val
    argTypes:
    - int
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 412
    functionName: setsockopt_ifindex
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 5
    functionsReached:
    - flog_err
    - setsockopt_ipv4_ifindex
    - setsockopt_ipv6_pktinfo
    linkageType: ''
    returnType: int
    signature: int setsockopt_ifindex(int af, int sock, ifindex_t val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt_cmsg_data
      Src: /src/frr/lib/sockopt.c:429,1
    - Dst: getsockopt_cmsg_data
      Src: /src/frr/lib/sockopt.c:446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - msgh
    argTypes:
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 467
    functionName: getsockopt_ipv4_ifindex
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - getsockopt_cmsg_data
    linkageType: ''
    returnType: ifindex_t
    signature: ifindex_t getsockopt_ipv4_ifindex(struct msghdr *msgh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt_ipv4_ifindex
      Src: /src/frr/lib/sockopt.c:474,1
    - Dst: getsockopt_ipv6_ifindex
      Src: /src/frr/lib/sockopt.c:476,1
    - Dst: flog_err
      Src: /src/frr/lib/sockopt.c:478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - af
    - msgh
    argTypes:
    - int
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 482
    functionName: getsockopt_ifindex
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 3
    functionsReached:
    - getsockopt_ipv6_ifindex
    - flog_err
    - getsockopt_ipv4_ifindex
    linkageType: ''
    returnType: ifindex_t
    signature: ifindex_t getsockopt_ifindex(int af, struct msghdr *msgh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/lib/sockopt.c:491,1
    - Dst: htons
      Src: /src/frr/lib/sockopt.c:492,1
    - Dst: htons
      Src: /src/frr/lib/sockopt.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - iph
    argTypes:
    - struct ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 496
    functionName: sockopt_iphdrincl_swab_htosys
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 4
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: void sockopt_iphdrincl_swab_htosys(struct ip *iph)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/lib/sockopt.c:501,1
    - Dst: ntohs
      Src: /src/frr/lib/sockopt.c:502,1
    - Dst: ntohs
      Src: /src/frr/lib/sockopt.c:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - iph
    argTypes:
    - struct ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 506
    functionName: sockopt_iphdrincl_swab_systoh
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 7
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: void
    signature: void sockopt_iphdrincl_swab_systoh(struct ip *iph)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/frr/lib/sockopt.c:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 521
    functionName: sockopt_tcp_rtt
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 5
    functionsReached:
    - getsockopt
    linkageType: ''
    returnType: int
    signature: int sockopt_tcp_rtt(int sock)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/sockopt.c:554,1
    - Dst: sockunion_getsockname
      Src: /src/frr/lib/sockopt.c:561,1
    - Dst: sockunion_free
      Src: /src/frr/lib/sockopt.c:571,1
    - Dst: memset
      Src: /src/frr/lib/sockopt.c:589,1
    - Dst: htonl
      Src: /src/frr/lib/sockopt.c:591,1
    - Dst: memcpy
      Src: /src/frr/lib/sockopt.c:592,1
    - Dst: memset
      Src: /src/frr/lib/sockopt.c:597,1
    - Dst: memcpy
      Src: /src/frr/lib/sockopt.c:598,1
    - Dst: memcpy
      Src: /src/frr/lib/sockopt.c:602,1
    - Dst: sockunion_free
      Src: /src/frr/lib/sockopt.c:603,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:621,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:626,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:629,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 4
    argNames:
    - sock
    - su
    - prefixlen
    - password
    argTypes:
    - int
    - union sockunion*
    - uint16_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 523
    functionDepth: 2
    functionLinenumber: 523
    functionLinenumberEnd: 639
    functionName: sockopt_tcp_signature_ext
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - strlen
    - memset
    - sockunion_free
    - safe_strerror
    - sockunion_getsockname
    - htonl
    - flog_err_sys
    - setsockopt
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int sockopt_tcp_signature_ext(int sock, union sockunion *su, uint16_t
      prefixlen,\n\t\t\t      const char *password)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockopt_tcp_signature_ext
      Src: /src/frr/lib/sockopt.c:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sock
    - su
    - password
    argTypes:
    - int
    - union sockunion*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 641
    functionDepth: 3
    functionLinenumber: 641
    functionLinenumberEnd: 644
    functionName: sockopt_tcp_signature
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - sockopt_tcp_signature_ext
    linkageType: ''
    returnType: int
    signature: int sockopt_tcp_signature(int sock, union sockunion *su, const char
      *password)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:652,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:655,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sock
    - tcp_maxseg
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 661
    functionName: sockopt_tcp_mss_set
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int sockopt_tcp_mss_set(int sock, int tcp_maxseg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/frr/lib/sockopt.c:670,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:673,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 664
    functionDepth: 1
    functionLinenumber: 664
    functionLinenumberEnd: 680
    functionName: sockopt_tcp_mss_get
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 1
    functionsReached:
    - getsockopt
    - flog_err_sys
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int sockopt_tcp_mss_get(int sock)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:688,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:689,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:691,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:700,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:702,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:704,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:710,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:712,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:714,1
    - Dst: setsockopt
      Src: /src/frr/lib/sockopt.c:720,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sockopt.c:721,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sockopt.c:723,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - sock
    - keepalive_idle
    - keepalive_intvl
    - keepalive_probes
    argTypes:
    - int
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 729
    functionName: setsockopt_tcp_keepalive
    functionSourceFile: /src/frr/lib/sockopt.c
    functionUses: 1
    functionsReached:
    - flog_err_sys
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: "int setsockopt_tcp_keepalive(int sock, uint16_t keepalive_idle,\n\t\t\t
      \    uint16_t keepalive_intvl,\n\t\t\t     uint16_t keepalive_probes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/routemap.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct route_map_rule_cmd_proxy*
    - struct route_map_rule_cmd_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: rmap_cmd_name_cmp
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int rmap_cmd_name_cmp(const struct route_map_rule_cmd_proxy *a,\n\t\t\t
      \    const struct route_map_rule_cmd_proxy *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/lib/routemap.c:46,1
    - Dst: strlen
      Src: /src/frr/lib/routemap.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - item
    argTypes:
    - struct route_map_rule_cmd_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: rmap_cmd_name_hash
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strlen
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rmap_cmd_name_hash(const struct route_map_rule_cmd_proxy *item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: IS_RULE_IPv4_PREFIX_LIST
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_IPv4_PREFIX_LIST(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: IS_RULE_IPv6_PREFIX_LIST
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_RULE_IPv6_PREFIX_LIST(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: route_map_match_interface_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_interface_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: route_map_no_match_interface_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_interface_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: route_map_match_ip_address_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ip_address_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: route_map_no_match_ip_address_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ip_address_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 137
    functionName: route_map_match_ip_address_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ip_address_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: route_map_no_match_ip_address_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ip_address_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 155
    functionName: route_map_match_ip_next_hop_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ip_next_hop_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: route_map_no_match_ip_next_hop_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ip_next_hop_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: route_map_match_ipv6_next_hop_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ipv6_next_hop_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command, const char *arg,\n\troute_map_event_t type, char
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: route_map_no_match_ipv6_next_hop_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ipv6_next_hop_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command, const char *arg,\n\troute_map_event_t
      type, char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: route_map_match_ip_next_hop_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ip_next_hop_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 198
    functionName: route_map_no_match_ip_next_hop_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ip_next_hop_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 207
    functionName: route_map_match_ip_next_hop_type_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ip_next_hop_type_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 216
    functionName: route_map_no_match_ip_next_hop_type_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ip_next_hop_type_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: route_map_match_ipv6_address_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ipv6_address_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: route_map_no_match_ipv6_address_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ipv6_address_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: route_map_match_ipv6_address_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ipv6_address_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 253
    functionName: route_map_no_match_ipv6_address_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ipv6_address_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 262
    functionName: route_map_match_ipv6_next_hop_type_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ipv6_next_hop_type_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 271
    functionName: route_map_no_match_ipv6_next_hop_type_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ipv6_next_hop_type_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command,\n\tconst char *arg, route_map_event_t
      type,\n\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: route_map_match_ipv6_next_hop_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_ipv6_next_hop_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command, const char *arg,\n\troute_map_event_t
      type, char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: route_map_no_match_ipv6_next_hop_prefix_list_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_ipv6_next_hop_prefix_list_hook(int (*func)(\n\tstruct
      route_map_index *index, const char *command, const char *arg,\n\troute_map_event_t
      type, char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 296
    functionName: route_map_match_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_metric_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 305
    functionName: route_map_no_match_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_metric_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 314
    functionName: route_map_match_tag_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_match_tag_hook(int (*func)(struct route_map_index *index,\n\t\t\t\t\t
      \ const char *command, const char *arg,\n\t\t\t\t\t  route_map_event_t type,\n\t\t\t\t\t
      \ char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 323
    functionName: route_map_no_match_tag_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_match_tag_hook(int (*func)(\n\tstruct route_map_index
      *index, const char *command,\n\tconst char *arg, route_map_event_t type,\n\tchar
      *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 332
    functionName: route_map_set_srte_color_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_set_srte_color_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t       const char *command,\n\t\t\t\t\t       const char
      *arg,\n\t\t\t\t\t       char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 341
    functionName: route_map_no_set_srte_color_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_set_srte_color_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t\t  const char *command,\n\t\t\t\t\t\t  const char *arg,\n\t\t\t\t\t\t
      \ char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 350
    functionName: route_map_set_ip_nexthop_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_set_ip_nexthop_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t       const char *command,\n\t\t\t\t\t       const char
      *arg,\n\t\t\t\t\t       char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 360
    functionName: route_map_no_set_ip_nexthop_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_set_ip_nexthop_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t\t  const char *command,\n\t\t\t\t\t\t  const char *arg,\n\t\t\t\t\t\t
      \ char *errmsg,\n\t\t\t\t\t\t  size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 369
    functionName: route_map_set_ipv6_nexthop_local_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_set_ipv6_nexthop_local_hook(\n\tint (*func)(struct
      route_map_index *index,\n\t\t    const char *command, const char *arg,\n\t\t
      \   char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 378
    functionName: route_map_no_set_ipv6_nexthop_local_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_set_ipv6_nexthop_local_hook(\n\tint (*func)(struct
      route_map_index *index,\n\t\t    const char *command, const char *arg,\n\t\t
      \   char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 387
    functionName: route_map_set_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_set_metric_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t   const char *command,\n\t\t\t\t\t   const char *arg,\n\t\t\t\t\t
      \  char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 396
    functionName: route_map_no_set_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_set_metric_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t      const char *command,\n\t\t\t\t\t      const char *arg,\n\t\t\t\t\t
      \     char *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 404
    functionName: route_map_set_min_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_set_min_metric_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t       const char *command,\n\t\t\t\t\t       const char
      *arg, char *errmsg,\n\t\t\t\t\t       size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 413
    functionName: route_map_no_set_min_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_set_min_metric_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t\t  const char *command,\n\t\t\t\t\t\t  const char *arg,
      char *errmsg,\n\t\t\t\t\t\t  size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 421
    functionName: route_map_set_max_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_set_max_metric_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t       const char *command,\n\t\t\t\t\t       const char
      *arg, char *errmsg,\n\t\t\t\t\t       size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 430
    functionName: route_map_no_set_max_metric_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_set_max_metric_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t\t  const char *command,\n\t\t\t\t\t\t  const char *arg,
      char *errmsg,\n\t\t\t\t\t\t  size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 438
    functionName: route_map_set_tag_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_set_tag_hook(int (*func)(struct route_map_index *index,\n\t\t\t\t\tconst
      char *command, const char *arg,\n\t\t\t\t\tchar *errmsg, size_t errmsg_len))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 447
    functionName: route_map_no_set_tag_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_no_set_tag_hook(int (*func)(struct route_map_index
      *index,\n\t\t\t\t\t   const char *command,\n\t\t\t\t\t   const char *arg,\n\t\t\t\t\t
      \  char *errmsg, size_t errmsg_len))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_add_match
      Src: /src/frr/lib/routemap.c:456,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:459,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - index
    - command
    - arg
    - type
    - errmsg
    - errmsg_len
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - route_map_event_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 475
    functionName: generic_match_add
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached:
    - snprintf
    - route_map_add_match
    linkageType: ''
    returnType: int
    signature: "int generic_match_add(struct route_map_index *index,\n\t\t      const
      char *command, const char *arg,\n\t\t      route_map_event_t type,\n\t\t      char
      *errmsg, size_t errmsg_len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_map_get_match_arg
      Src: /src/frr/lib/routemap.c:491,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:494,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:496,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:498,1
    - Dst: route_map_delete_match
      Src: /src/frr/lib/routemap.c:501,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:504,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:509,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:521,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:522,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 6
    argNames:
    - index
    - command
    - arg
    - type
    - errmsg
    - errmsg_len
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - route_map_event_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 525
    functionName: generic_match_delete
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - snprintf
    - route_map_delete_match
    - XFREE
    - XSTRDUP
    - route_map_get_match_arg
    linkageType: ''
    returnType: int
    signature: "int generic_match_delete(struct route_map_index *index,\n\t\t\t const
      char *command, const char *arg,\n\t\t\t route_map_event_t type,\n\t\t\t char
      *errmsg, size_t errmsg_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_add_set
      Src: /src/frr/lib/routemap.c:533,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:536,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - index
    - command
    - arg
    - errmsg
    - errmsg_len
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 549
    functionName: generic_set_add
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 34
    functionsReached:
    - route_map_add_set
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int generic_set_add(struct route_map_index *index,\n\t\t    const
      char *command, const char *arg,\n\t\t    char *errmsg, size_t errmsg_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_delete_set
      Src: /src/frr/lib/routemap.c:557,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:560,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - index
    - command
    - arg
    - errmsg
    - errmsg_len
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 573
    functionName: generic_set_delete
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - snprintf
    - route_map_delete_set
    linkageType: ''
    returnType: int
    signature: "int generic_set_delete(struct route_map_index *index,\n\t\t       const
      char *command, const char *arg,\n\t\t       char *errmsg, size_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/routemap.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 584
    functionName: route_map_hash_key_make
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int route_map_hash_key_make(const void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/routemap.c:591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 595
    functionName: route_map_hash_cmp
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool route_map_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/routemap.c:646,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 650
    functionName: route_map_new
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - XSTRDUP
    linkageType: ''
    returnType: struct route_map
    signature: struct route_map *route_map_new(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: route_map_new
      Src: /src/frr/lib/routemap.c:658,1
    - Dst: hash_release
      Src: /src/frr/lib/routemap.c:669,1
    - Dst: route_map_free_map
      Src: /src/frr/lib/routemap.c:672,1
    - Dst: hash_get
      Src: /src/frr/lib/routemap.c:674,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap.c:697,1
    - Dst: route_table_init
      Src: /src/frr/lib/routemap.c:701,1
    - Dst: route_table_init
      Src: /src/frr/lib/routemap.c:704,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:706,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:706,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:707,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 709
    functionName: route_map_add
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_free_map
    - CHECK_FLAG
    - route_table_init
    - zlog_debug
    - unlikely
    - route_map_notify_dependencies
    - route_map_new
    - hash_release
    - hash_get
    linkageType: ''
    returnType: struct route_map
    signature: struct route_map *route_map_add(const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_map_index_delete
      Src: /src/frr/lib/routemap.c:724,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:726,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:726,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:727,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/lib/routemap.c:731,1
    - Dst: route_table_finish
      Src: /src/frr/lib/routemap.c:743,1
    - Dst: route_table_finish
      Src: /src/frr/lib/routemap.c:744,1
    - Dst: hash_release
      Src: /src/frr/lib/routemap.c:746,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:747,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:748,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 749
    functionName: route_map_free_map
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached:
    - route_table_finish
    - QOBJ_UNREG
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - XFREE
    - route_map_index_delete
    - hash_release
    linkageType: ''
    returnType: void
    signature: void route_map_free_map(struct route_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_map_index_delete
      Src: /src/frr/lib/routemap.c:758,1
    - Dst: route_map_clear_all_references
      Src: /src/frr/lib/routemap.c:764,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap.c:769,1
    - Dst: route_map_free_map
      Src: /src/frr/lib/routemap.c:773,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 752
    functionDepth: 2
    functionLinenumber: 752
    functionLinenumberEnd: 775
    functionName: route_map_delete
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_index_delete
    - route_map_free_map
    - route_map_clear_all_references
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void route_map_delete(struct route_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/routemap.c:787,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:788,1
    - Dst: hash_lookup
      Src: /src/frr/lib/routemap.c:789,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:790,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 796
    functionName: route_map_lookup_by_name
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 32
    functionsReached:
    - hash_lookup
    - XFREE
    - XSTRDUP
    - memset
    linkageType: ''
    returnType: struct route_map
    signature: struct route_map *route_map_lookup_by_name(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/lib/routemap.c:801,1
    - Dst: vty_shell_serv
      Src: /src/frr/lib/routemap.c:804,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:805,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 799
    functionDepth: 2
    functionLinenumber: 799
    functionLinenumberEnd: 808
    functionName: route_map_lookup_warn_noexist
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 4
    functionsReached:
    - route_map_lookup_by_name
    - vty_shell_serv
    - vty_out
    linkageType: ''
    returnType: struct route_map
    signature: struct route_map *route_map_lookup_warn_noexist(struct vty *vty, const
      char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/lib/routemap.c:819,1
    - Dst: memset
      Src: /src/frr/lib/routemap.c:825,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:826,1
    - Dst: hash_lookup
      Src: /src/frr/lib/routemap.c:828,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:829,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 810
    functionDepth: 2
    functionLinenumber: 810
    functionLinenumberEnd: 838
    functionName: route_map_mark_updated
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached:
    - memset
    - route_map_lookup_by_name
    - hash_lookup
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: int route_map_mark_updated(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_map_free_map
      Src: /src/frr/lib/routemap.c:845,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 840
    functionDepth: 2
    functionLinenumber: 840
    functionLinenumberEnd: 847
    functionName: route_map_clear_updated
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_free_map
    linkageType: ''
    returnType: void
    signature: void route_map_clear_updated(struct route_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/lib/routemap.c:855,1
    - Dst: route_map_add
      Src: /src/frr/lib/routemap.c:857,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 851
    functionDepth: 3
    functionLinenumber: 851
    functionLinenumberEnd: 860
    functionName: route_map_get
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_lookup_by_name
    - route_map_add
    linkageType: ''
    returnType: struct route_map
    signature: struct route_map *route_map_get(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_map_update_fn
      Src: /src/frr/lib/routemap.c:870,1
    - Dst: route_map_clear_updated
      Src: /src/frr/lib/routemap.c:872,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 862
    functionDepth: 3
    functionLinenumber: 862
    functionLinenumberEnd: 876
    functionName: route_map_walk_update_list
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached:
    - route_map_update_fn
    - route_map_clear_updated
    linkageType: ''
    returnType: void
    signature: void route_map_walk_update_list(void (*route_map_update_fn)(char *name))
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum route_map_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 891
    functionName: route_map_type_str
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *route_map_type_str(enum route_map_type type)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - res
    argTypes:
    - enum route_map_cmd_result_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 909
    functionName: route_map_cmd_result_str
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *route_map_cmd_result_str(enum route_map_cmd_result_t res)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - res
    argTypes:
    - route_map_result_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 921
    functionName: route_map_result_str
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *route_map_result_str(route_map_result_t res)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/routemap.c:933,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/routemap.c:934,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/routemap.c:936,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/routemap.c:937,1
    - Dst: json_object_boolean_add
      Src: /src/frr/lib/routemap.c:939,1
    - Dst: json_object_boolean_add
      Src: /src/frr/lib/routemap.c:941,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/routemap.c:943,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:945,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/routemap.c:960,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/routemap.c:961,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/routemap.c:963,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/routemap.c:965,1
    - Dst: route_map_type_str
      Src: /src/frr/lib/routemap.c:966,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/routemap.c:967,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/routemap.c:973,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/routemap.c:977,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/routemap.c:978,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:984,1
    - Dst: json_array_string_add
      Src: /src/frr/lib/routemap.c:986,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/routemap.c:990,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/routemap.c:991,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:997,1
    - Dst: json_array_string_add
      Src: /src/frr/lib/routemap.c:999,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/routemap.c:1004,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:1009,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:1012,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap.c:1015,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/routemap.c:1018,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1021,1
    - Dst: route_map_type_str
      Src: /src/frr/lib/routemap.c:1022,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1027,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1031,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1034,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1038,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1041,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1045,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1047,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1050,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1052,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1054,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:1056,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 65
    argCount: 3
    argNames:
    - vty
    - map
    - json
    argTypes:
    - struct vty*
    - struct route_map*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 924
    functionDepth: 2
    functionLinenumber: 924
    functionLinenumberEnd: 1059
    functionName: vty_show_route_map_entry
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - json_object_new_array
    - vty_out
    - json_object_array_add
    - snprintf
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_array_string_add
    - route_map_type_str
    linkageType: ''
    returnType: void
    signature: "void vty_show_route_map_entry(struct vty *vty, struct route_map *map,\n\t\t\t\t
      \    json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/routemap.c:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - map1
    - map2
    argTypes:
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1061
    functionDepth: 0
    functionLinenumber: 1061
    functionLinenumberEnd: 1067
    functionName: sort_route_map
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int sort_route_map(const void **map1, const void **map2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - map
    - type
    - pref
    argTypes:
    - struct route_map*
    - enum route_map_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1214
    functionDepth: 0
    functionLinenumber: 1214
    functionLinenumberEnd: 1225
    functionName: route_map_index_lookup
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct route_map_index
    signature: "struct route_map_index *route_map_index_lookup(struct route_map *map,\n\t\t\t\t\t\t
      \     enum route_map_type type,\n\t\t\t\t\t\t      int pref)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: route_map_index_new
      Src: /src/frr/lib/routemap.c:1235,1
    - Dst: route_map_pfx_tbl_update
      Src: /src/frr/lib/routemap.c:1263,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap.c:1268,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:1271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:1271,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:1272,1
    - Dst: route_map_type_str
      Src: /src/frr/lib/routemap.c:1273,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - map
    - type
    - pref
    argTypes:
    - struct route_map*
    - enum route_map_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1276
    functionName: route_map_index_add
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_pfx_tbl_update
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - route_map_notify_dependencies
    - route_map_index_new
    - route_map_type_str
    linkageType: ''
    returnType: struct route_map_index
    signature: 'struct route_map_index *

      route_map_index_add(struct route_map *map, enum route_map_type type, int pref)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_map_index_lookup
      Src: /src/frr/lib/routemap.c:1284,1
    - Dst: route_map_index_delete
      Src: /src/frr/lib/routemap.c:1287,1
    - Dst: route_map_index_add
      Src: /src/frr/lib/routemap.c:1291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - map
    - type
    - pref
    argTypes:
    - struct route_map*
    - enum route_map_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1279
    functionDepth: 2
    functionLinenumber: 1279
    functionLinenumberEnd: 1293
    functionName: route_map_index_get
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_index_delete
    - route_map_index_add
    - route_map_index_lookup
    linkageType: ''
    returnType: struct route_map_index
    signature: 'struct route_map_index *

      route_map_index_get(struct route_map *map, enum route_map_type type, int pref)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/routemap.c:1300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1296
    functionDepth: 0
    functionLinenumber: 1296
    functionLinenumberEnd: 1302
    functionName: route_map_rule_new
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct route_map_rule
    signature: struct route_map_rule *route_map_rule_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmap_cmd_name_add
      Src: /src/frr/lib/routemap.c:1307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct route_map_rule_cmd_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1305
    functionDepth: 0
    functionLinenumber: 1305
    functionLinenumberEnd: 1308
    functionName: _route_map_install_match
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - rmap_cmd_name_add
    linkageType: ''
    returnType: void
    signature: void _route_map_install_match(struct route_map_rule_cmd_proxy *proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmap_cmd_name_add
      Src: /src/frr/lib/routemap.c:1313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proxy
    argTypes:
    - struct route_map_rule_cmd_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1311
    functionDepth: 0
    functionLinenumber: 1311
    functionLinenumberEnd: 1314
    functionName: _route_map_install_set
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - rmap_cmd_name_add
    linkageType: ''
    returnType: void
    signature: void _route_map_install_set(struct route_map_rule_cmd_proxy *proxy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rmap_cmd_name_find
      Src: /src/frr/lib/routemap.c:1323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1317
    functionDepth: 0
    functionLinenumber: 1317
    functionLinenumberEnd: 1327
    functionName: route_map_lookup_match
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - rmap_cmd_name_find
    linkageType: ''
    returnType: struct route_map_rule_cmd
    signature: struct route_map_rule_cmd *route_map_lookup_match(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rmap_cmd_name_find
      Src: /src/frr/lib/routemap.c:1336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1330
    functionDepth: 0
    functionLinenumber: 1330
    functionLinenumberEnd: 1340
    functionName: route_map_lookup_set
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - rmap_cmd_name_find
    linkageType: ''
    returnType: struct route_map_rule_cmd
    signature: struct route_map_rule_cmd *route_map_lookup_set(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - list
    - rule
    argTypes:
    - struct route_map_rule_list*
    - struct route_map_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1343
    functionDepth: 0
    functionLinenumber: 1343
    functionLinenumberEnd: 1353
    functionName: route_map_rule_add
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void route_map_rule_add(struct route_map_rule_list *list,\n\t\t\t
      \      struct route_map_rule *rule)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:1362,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:1373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - list
    - rule
    argTypes:
    - struct route_map_rule_list*
    - struct route_map_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1356
    functionDepth: 0
    functionLinenumber: 1356
    functionLinenumberEnd: 1374
    functionName: route_map_rule_delete
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void route_map_rule_delete(struct route_map_rule_list *list,\n\t\t\t\t
      \ struct route_map_rule *rule)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/routemap.c:1388,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1377
    functionDepth: 0
    functionLinenumber: 1377
    functionLinenumberEnd: 1391
    functionName: rulecmp
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int rulecmp(const char *dst, const char *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_match
      Src: /src/frr/lib/routemap.c:1404,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - index
    - match_name
    argTypes:
    - struct route_map_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1397
    functionDepth: 1
    functionLinenumber: 1397
    functionLinenumberEnd: 1413
    functionName: route_map_get_match_arg
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached:
    - route_map_lookup_match
    linkageType: ''
    returnType: char
    signature: "char *route_map_get_match_arg(struct route_map_index *index,\n\t\t\t\t
      \   const char *match_name)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/routemap.c:1454,1
    - Dst: assert
      Src: /src/frr/lib/routemap.c:1457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 35
    argCount: 1
    argNames:
    - type
    argTypes:
    - route_map_event_t
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1453
        line_start: 1453
        source_file: /src/frr/lib/routemap.c
    - condition: (0)
      pos:
        line_end: 1456
        line_start: 1456
        source_file: /src/frr/lib/routemap.c
    constantsTouched: []
    func_position:
      end: 1463
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1463
    functionName: get_route_map_delete_event
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: route_map_event_t
    signature: route_map_event_t get_route_map_delete_event(route_map_event_t type)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_match
      Src: /src/frr/lib/routemap.c:1479,1
    - Dst: rulecmp
      Src: /src/frr/lib/routemap.c:1505,1
    - Dst: IS_RULE_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:1516,1
    - Dst: route_map_pfx_tbl_update
      Src: /src/frr/lib/routemap.c:1517,1
    - Dst: IS_RULE_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:1520,1
    - Dst: route_map_pfx_tbl_update
      Src: /src/frr/lib/routemap.c:1521,1
    - Dst: get_route_map_delete_event
      Src: /src/frr/lib/routemap.c:1530,1
    - Dst: route_map_upd8_dependency
      Src: /src/frr/lib/routemap.c:1531,1
    - Dst: route_map_rule_delete
      Src: /src/frr/lib/routemap.c:1537,1
    - Dst: route_map_rule_new
      Src: /src/frr/lib/routemap.c:1542,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:1546,1
    - Dst: route_map_rule_add
      Src: /src/frr/lib/routemap.c:1551,1
    - Dst: IS_RULE_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:1557,1
    - Dst: route_map_pfx_tbl_update
      Src: /src/frr/lib/routemap.c:1558,1
    - Dst: IS_RULE_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:1560,1
    - Dst: route_map_pfx_tbl_update
      Src: /src/frr/lib/routemap.c:1561,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap.c:1568,1
    - Dst: route_map_upd8_dependency
      Src: /src/frr/lib/routemap.c:1572,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 4
    argNames:
    - index
    - match_name
    - match_arg
    - type
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - route_map_event_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1466
    functionDepth: 2
    functionLinenumber: 1466
    functionLinenumberEnd: 1575
    functionName: route_map_add_match
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached:
    - IS_RULE_IPv6_PREFIX_LIST
    - route_map_rule_new
    - route_map_pfx_tbl_update
    - route_map_lookup_match
    - get_route_map_delete_event
    - rulecmp
    - route_map_rule_add
    - route_map_rule_delete
    - route_map_upd8_dependency
    - route_map_notify_dependencies
    - XSTRDUP
    - IS_RULE_IPv4_PREFIX_LIST
    linkageType: ''
    returnType: enum rmap_compile_rets
    signature: "enum rmap_compile_rets route_map_add_match(struct route_map_index
      *index,\n\t\t\t\t\t   const char *match_name,\n\t\t\t\t\t   const char *match_arg,\n\t\t\t\t\t
      \  route_map_event_t type)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_match
      Src: /src/frr/lib/routemap.c:1587,1
    - Dst: rulecmp
      Src: /src/frr/lib/routemap.c:1592,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap.c:1597,1
    - Dst: route_map_upd8_dependency
      Src: /src/frr/lib/routemap.c:1608,1
    - Dst: route_map_rule_delete
      Src: /src/frr/lib/routemap.c:1611,1
    - Dst: IS_RULE_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:1617,1
    - Dst: route_map_pfx_tbl_update
      Src: /src/frr/lib/routemap.c:1618,1
    - Dst: IS_RULE_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:1621,1
    - Dst: route_map_pfx_tbl_update
      Src: /src/frr/lib/routemap.c:1622,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - index
    - match_name
    - match_arg
    - type
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    - route_map_event_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1578
    functionDepth: 1
    functionLinenumber: 1578
    functionLinenumberEnd: 1631
    functionName: route_map_delete_match
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached:
    - IS_RULE_IPv6_PREFIX_LIST
    - route_map_pfx_tbl_update
    - route_map_lookup_match
    - rulecmp
    - route_map_rule_delete
    - route_map_upd8_dependency
    - route_map_notify_dependencies
    - IS_RULE_IPv4_PREFIX_LIST
    linkageType: ''
    returnType: enum rmap_compile_rets
    signature: "enum rmap_compile_rets route_map_delete_match(struct route_map_index
      *index,\n\t\t\t\t\t      const char *match_name,\n\t\t\t\t\t      const char
      *match_arg,\n\t\t\t\t\t      route_map_event_t type)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_set
      Src: /src/frr/lib/routemap.c:1643,1
    - Dst: route_map_rule_delete
      Src: /src/frr/lib/routemap.c:1661,1
    - Dst: route_map_rule_new
      Src: /src/frr/lib/routemap.c:1665,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:1669,1
    - Dst: route_map_rule_add
      Src: /src/frr/lib/routemap.c:1674,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap.c:1679,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - index
    - set_name
    - set_arg
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1683
    functionName: route_map_add_set
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached:
    - route_map_rule_new
    - route_map_rule_add
    - route_map_rule_delete
    - route_map_lookup_set
    - route_map_notify_dependencies
    - XSTRDUP
    linkageType: ''
    returnType: enum rmap_compile_rets
    signature: "enum rmap_compile_rets route_map_add_set(struct route_map_index *index,\n\t\t\t\t\t
      const char *set_name,\n\t\t\t\t\t const char *set_arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_set
      Src: /src/frr/lib/routemap.c:1693,1
    - Dst: rulecmp
      Src: /src/frr/lib/routemap.c:1698,1
    - Dst: route_map_rule_delete
      Src: /src/frr/lib/routemap.c:1700,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap.c:1704,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - index
    - set_name
    - set_arg
    argTypes:
    - struct route_map_index*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1686
    functionDepth: 1
    functionLinenumber: 1686
    functionLinenumberEnd: 1712
    functionName: route_map_delete_set
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached:
    - route_map_rule_delete
    - rulecmp
    - route_map_notify_dependencies
    - route_map_lookup_set
    linkageType: ''
    returnType: enum rmap_compile_rets
    signature: "enum rmap_compile_rets route_map_delete_set(struct route_map_index
      *index,\n\t\t\t\t\t    const char *set_name,\n\t\t\t\t\t    const char *set_arg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - match_list
    - prefix
    - object
    argTypes:
    - struct route_map_rule_list*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1714
    functionDepth: 0
    functionLinenumber: 1714
    functionLinenumberEnd: 1790
    functionName: route_map_apply_match
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t route_map_apply_match(struct route_map_rule_list
      *match_list,\n\t\t      const struct prefix *prefix, void *object)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_node_match
      Src: /src/frr/lib/routemap.c:1799,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:1816,1
    - Dst: route_lock_node
      Src: /src/frr/lib/routemap.c:1822,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - rn
    - prefix
    - table
    argTypes:
    - struct route_node**
    - struct prefix*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1792
    functionDepth: 1
    functionLinenumber: 1792
    functionLinenumberEnd: 1828
    functionName: route_map_get_index_list
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_match
    - route_lock_node
    linkageType: ''
    returnType: struct list
    signature: "struct list *route_map_get_index_list(struct route_node **rn,\n\t\t\t\t\t
      \    const struct prefix *prefix,\n\t\t\t\t\t     struct route_table *table)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:1852,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:1852,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:1853,1
    - Dst: route_map_get_index_list
      Src: /src/frr/lib/routemap.c:1866,1
    - Dst: listgetdata
      Src: /src/frr/lib/routemap.c:1874,1
    - Dst: listhead
      Src: /src/frr/lib/routemap.c:1875,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:1878,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/routemap.c:1882,1
    - Dst: route_map_apply_match
      Src: /src/frr/lib/routemap.c:1890,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:1919,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 37
    argCount: 4
    argNames:
    - map
    - prefix
    - object
    - match_ret
    argTypes:
    - struct route_map*
    - struct prefix*
    - void*
    - enum route_map_cmd_result_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1833
    functionDepth: 2
    functionLinenumber: 1833
    functionLinenumberEnd: 1924
    functionName: route_map_get_index
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_map_get_index_list
    - CHECK_FLAG
    - listhead
    - zlog_debug
    - unlikely
    - listgetdata
    - ALL_LIST_ELEMENTS
    - route_map_apply_match
    linkageType: ''
    returnType: struct route_map_index
    signature: "struct route_map_index *\nroute_map_get_index(struct route_map *map,
      const struct prefix *prefix,\n\t\t    void *object, enum route_map_cmd_result_t
      *match_ret)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - idx1
    - idx2
    argTypes:
    - struct route_map_index*
    - struct route_map_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1926
    functionDepth: 0
    functionLinenumber: 1926
    functionLinenumberEnd: 1930
    functionName: route_map_candidate_list_cmp
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int route_map_candidate_list_cmp(struct route_map_index *idx1,\n\t\t\t\t\tstruct
      route_map_index *idx2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/routemap.c:1945,1
    - Dst: afi2family
      Src: /src/frr/lib/routemap.c:1946,1
    - Dst: route_node_get
      Src: /src/frr/lib/routemap.c:1955,1
    - Dst: list_new
      Src: /src/frr/lib/routemap.c:1961,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/routemap.c:1970,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:1972,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - afi
    - index
    argTypes:
    - afi_t
    - struct route_map_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1936
    functionDepth: 2
    functionLinenumber: 1936
    functionLinenumberEnd: 1973
    functionName: route_map_pfx_table_add_default
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - memset
    - afi2family
    - route_node_get
    - list_new
    - listnode_add_sort_nodup
    linkageType: ''
    returnType: void
    signature: "void route_map_pfx_table_add_default(afi_t afi,\n\t\t\t\t\t    struct
      route_map_index *index)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/routemap.c:1987,1
    - Dst: afi2family
      Src: /src/frr/lib/routemap.c:1988,1
    - Dst: route_node_lookup
      Src: /src/frr/lib/routemap.c:1997,1
    - Dst: listnode_delete
      Src: /src/frr/lib/routemap.c:2003,1
    - Dst: listcount
      Src: /src/frr/lib/routemap.c:2005,1
    - Dst: list_delete
      Src: /src/frr/lib/routemap.c:2006,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:2008,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:2010,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - afi
    - index
    argTypes:
    - afi_t
    - struct route_map_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 1979
    functionDepth: 1
    functionLinenumber: 1979
    functionLinenumberEnd: 2011
    functionName: route_map_pfx_table_del_default
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - list_delete
    - memset
    - listcount
    - afi2family
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: "void route_map_pfx_table_del_default(afi_t afi,\n\t\t\t\t\t    struct
      route_map_index *index)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/lib/routemap.c:2025,1
    - Dst: list_new
      Src: /src/frr/lib/routemap.c:2030,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/routemap.c:2039,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:2041,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - table
    - index
    - pentry
    argTypes:
    - struct route_table*
    - struct route_map_index*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2042
      start: 2017
    functionDepth: 2
    functionLinenumber: 2017
    functionLinenumberEnd: 2042
    functionName: route_map_pfx_table_add
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_get
    - list_new
    - listnode_add_sort_nodup
    linkageType: ''
    returnType: void
    signature: "void route_map_pfx_table_add(struct route_table *table,\n\t\t\t\t
      \   struct route_map_index *index,\n\t\t\t\t    struct prefix_list_entry *pentry)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/lib/routemap.c:2055,1
    - Dst: listnode_delete
      Src: /src/frr/lib/routemap.c:2061,1
    - Dst: listcount
      Src: /src/frr/lib/routemap.c:2063,1
    - Dst: list_delete
      Src: /src/frr/lib/routemap.c:2064,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:2066,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/routemap.c:2068,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - table
    - index
    - pentry
    argTypes:
    - struct route_table*
    - struct route_map_index*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2069
      start: 2048
    functionDepth: 1
    functionLinenumber: 2048
    functionLinenumberEnd: 2069
    functionName: route_map_pfx_table_del
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - list_delete
    - listcount
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: "void route_map_pfx_table_del(struct route_table *table,\n\t\t\t\t
      \   struct route_map_index *index,\n\t\t\t\t    struct prefix_list_entry *pentry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_RULE_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2081,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct route_map_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2074
    functionDepth: 1
    functionLinenumber: 2074
    functionLinenumberEnd: 2085
    functionName: route_map_is_ip_pfx_list_rule_present
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - IS_RULE_IPv4_PREFIX_LIST
    linkageType: ''
    returnType: bool
    signature: bool route_map_is_ip_pfx_list_rule_present(struct route_map_index *index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_RULE_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2098,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - index
    argTypes:
    - struct route_map_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2102
      start: 2090
    functionDepth: 1
    functionLinenumber: 2090
    functionLinenumberEnd: 2102
    functionName: route_map_is_ipv6_pfx_list_rule_present
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - IS_RULE_IPv6_PREFIX_LIST
    linkageType: ''
    returnType: bool
    signature: bool route_map_is_ipv6_pfx_list_rule_present(struct route_map_index
      *index)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IS_RULE_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2135,1
    - Dst: IS_RULE_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2140,1
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/routemap.c:2148,1
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/routemap.c:2150,1
    - Dst: route_map_pfx_table_add_default
      Src: /src/frr/lib/routemap.c:2154,1
    - Dst: route_map_pfx_table_del_default
      Src: /src/frr/lib/routemap.c:2163,1
    - Dst: route_map_pfx_table_del_default
      Src: /src/frr/lib/routemap.c:2165,1
    - Dst: route_map_pfx_table_add
      Src: /src/frr/lib/routemap.c:2170,1
    - Dst: route_map_pfx_table_add
      Src: /src/frr/lib/routemap.c:2173,1
    - Dst: route_map_pfx_table_add
      Src: /src/frr/lib/routemap.c:2179,1
    - Dst: route_map_pfx_table_add
      Src: /src/frr/lib/routemap.c:2183,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 4
    argNames:
    - afi
    - index
    - plist_name
    - entry
    argTypes:
    - afi_t
    - struct route_map_index*
    - char*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2119
    functionDepth: 3
    functionLinenumber: 2119
    functionLinenumberEnd: 2189
    functionName: route_map_add_plist_entries
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - IS_RULE_IPv6_PREFIX_LIST
    - route_map_pfx_table_add
    - route_map_pfx_table_add_default
    - route_map_pfx_table_del_default
    - IS_RULE_IPv4_PREFIX_LIST
    linkageType: ''
    returnType: void
    signature: "void route_map_add_plist_entries(afi_t afi,\n\t\t\t\t\tstruct route_map_index
      *index,\n\t\t\t\t\tconst char *plist_name,\n\t\t\t\t\tstruct prefix_list_entry
      *entry)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IS_RULE_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2220,1
    - Dst: IS_RULE_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2225,1
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/routemap.c:2233,1
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/routemap.c:2235,1
    - Dst: route_map_pfx_table_del_default
      Src: /src/frr/lib/routemap.c:2239,1
    - Dst: route_map_pfx_table_del
      Src: /src/frr/lib/routemap.c:2245,1
    - Dst: route_map_pfx_table_del
      Src: /src/frr/lib/routemap.c:2248,1
    - Dst: route_map_pfx_table_del
      Src: /src/frr/lib/routemap.c:2254,1
    - Dst: route_map_pfx_table_del
      Src: /src/frr/lib/routemap.c:2258,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 4
    argNames:
    - afi
    - index
    - plist_name
    - entry
    argTypes:
    - afi_t
    - struct route_map_index*
    - char*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2264
      start: 2204
    functionDepth: 2
    functionLinenumber: 2204
    functionLinenumberEnd: 2264
    functionName: route_map_del_plist_entries
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - IS_RULE_IPv6_PREFIX_LIST
    - route_map_pfx_table_del
    - route_map_pfx_table_del_default
    - IS_RULE_IPv4_PREFIX_LIST
    linkageType: ''
    returnType: void
    signature: "void route_map_del_plist_entries(afi_t afi,\n\t\t\t\t\tstruct route_map_index
      *index,\n\t\t\t\t\tconst char *plist_name,\n\t\t\t\t\tstruct prefix_list_entry
      *entry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: route_map_is_ipv6_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2277,1
    - Dst: route_map_pfx_table_del_default
      Src: /src/frr/lib/routemap.c:2278,1
    - Dst: route_map_add_plist_entries
      Src: /src/frr/lib/routemap.c:2279,1
    - Dst: route_map_del_plist_entries
      Src: /src/frr/lib/routemap.c:2282,1
    - Dst: route_map_is_ip_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2286,1
    - Dst: route_map_pfx_table_del_default
      Src: /src/frr/lib/routemap.c:2287,1
    - Dst: route_map_add_plist_entries
      Src: /src/frr/lib/routemap.c:2288,1
    - Dst: route_map_del_plist_entries
      Src: /src/frr/lib/routemap.c:2291,1
    - Dst: route_map_del_plist_entries
      Src: /src/frr/lib/routemap.c:2297,1
    - Dst: route_map_is_ipv6_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2309,1
    - Dst: route_map_pfx_table_add_default
      Src: /src/frr/lib/routemap.c:2310,1
    - Dst: route_map_add_plist_entries
      Src: /src/frr/lib/routemap.c:2312,1
    - Dst: route_map_del_plist_entries
      Src: /src/frr/lib/routemap.c:2314,1
    - Dst: route_map_is_ip_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2326,1
    - Dst: route_map_pfx_table_add_default
      Src: /src/frr/lib/routemap.c:2327,1
    - Dst: route_map_add_plist_entries
      Src: /src/frr/lib/routemap.c:2329,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - afi
    - event
    - index
    - plist_name
    argTypes:
    - afi_t
    - route_map_event_t
    - struct route_map_index*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2332
      start: 2271
    functionDepth: 4
    functionLinenumber: 2271
    functionLinenumberEnd: 2332
    functionName: route_map_trie_update
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_del_plist_entries
    - route_map_add_plist_entries
    - route_map_pfx_table_add_default
    - route_map_is_ip_pfx_list_rule_present
    - route_map_pfx_table_del_default
    - route_map_is_ipv6_pfx_list_rule_present
    linkageType: ''
    returnType: void
    signature: "void route_map_trie_update(afi_t afi, route_map_event_t event,\n\t\t\t\t
      \ struct route_map_index *index,\n\t\t\t\t  const char *plist_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_map_pfx_table_add_default
      Src: /src/frr/lib/routemap.c:2347,1
    - Dst: route_map_pfx_table_add_default
      Src: /src/frr/lib/routemap.c:2348,1
    - Dst: route_map_pfx_table_del_default
      Src: /src/frr/lib/routemap.c:2353,1
    - Dst: route_map_pfx_table_del_default
      Src: /src/frr/lib/routemap.c:2354,1
    - Dst: route_map_trie_update
      Src: /src/frr/lib/routemap.c:2361,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - event
    - index
    - afi
    - plist_name
    argTypes:
    - route_map_event_t
    - struct route_map_index*
    - afi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2362
      start: 2339
    functionDepth: 5
    functionLinenumber: 2339
    functionLinenumberEnd: 2362
    functionName: route_map_pfx_tbl_update
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached:
    - route_map_pfx_table_add_default
    - route_map_pfx_table_del_default
    - route_map_trie_update
    linkageType: ''
    returnType: void
    signature: "void route_map_pfx_tbl_update(route_map_event_t event,\n\t\t\t\t     struct
      route_map_index *index, afi_t afi,\n\t\t\t\t     const char *plist_name)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/routemap.c:2380,1
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/routemap.c:2383,1
    - Dst: route_map_is_ipv6_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2388,1
    - Dst: route_map_add_plist_entries
      Src: /src/frr/lib/routemap.c:2389,1
    - Dst: route_map_is_ip_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2392,1
    - Dst: route_map_add_plist_entries
      Src: /src/frr/lib/routemap.c:2393,1
    - Dst: route_map_del_plist_entries
      Src: /src/frr/lib/routemap.c:2397,1
    - Dst: route_map_is_ipv6_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2401,1
    - Dst: route_map_pfx_table_add_default
      Src: /src/frr/lib/routemap.c:2403,1
    - Dst: route_map_is_ip_pfx_list_rule_present
      Src: /src/frr/lib/routemap.c:2406,1
    - Dst: route_map_pfx_table_add_default
      Src: /src/frr/lib/routemap.c:2408,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 4
    argNames:
    - event
    - plist_name
    - index
    - pentry
    argTypes:
    - route_map_event_t
    - char*
    - struct route_map_index*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2413
      start: 2369
    functionDepth: 4
    functionLinenumber: 2369
    functionLinenumberEnd: 2413
    functionName: route_map_pentry_update
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - route_map_del_plist_entries
    - prefix_list_lookup
    - route_map_add_plist_entries
    - route_map_pfx_table_add_default
    - route_map_is_ip_pfx_list_rule_present
    - route_map_is_ipv6_pfx_list_rule_present
    linkageType: ''
    returnType: void
    signature: "void route_map_pentry_update(route_map_event_t event,\n\t\t\t\t    const
      char *plist_name,\n\t\t\t\t    struct route_map_index *index,\n\t\t\t\t    struct
      prefix_list_entry *pentry)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_map_lookup_by_name
      Src: /src/frr/lib/routemap.c:2433,1
    - Dst: strcmp
      Src: /src/frr/lib/routemap.c:2444,1
    - Dst: IS_RULE_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2446,1
    - Dst: route_map_pentry_update
      Src: /src/frr/lib/routemap.c:2448,1
    - Dst: IS_RULE_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap.c:2452,1
    - Dst: route_map_pentry_update
      Src: /src/frr/lib/routemap.c:2455,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2415
    functionDepth: 5
    functionLinenumber: 2415
    functionLinenumberEnd: 2463
    functionName: route_map_pentry_process_dependency
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - IS_RULE_IPv6_PREFIX_LIST
    - strcmp
    - route_map_lookup_by_name
    - route_map_pentry_update
    - IS_RULE_IPv4_PREFIX_LIST
    linkageType: ''
    returnType: void
    signature: "void route_map_pentry_process_dependency(struct hash_bucket *bucket,\n\t\t\t\t\t\tvoid
      *data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_map_get_dep_hash
      Src: /src/frr/lib/routemap.c:2476,1
    - Dst: hash_get
      Src: /src/frr/lib/routemap.c:2480,1
    - Dst: memset
      Src: /src/frr/lib/routemap.c:2486,1
    - Dst: hash_iterate
      Src: /src/frr/lib/routemap.c:2491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - affected_name
    - pentry
    - event
    argTypes:
    - char*
    - struct prefix_list_entry*
    - route_map_event_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2495
      start: 2465
    functionDepth: 1
    functionLinenumber: 2465
    functionLinenumberEnd: 2495
    functionName: route_map_notify_pentry_dependencies
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - memset
    - hash_get
    - route_map_get_dep_hash
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: "void route_map_notify_pentry_dependencies(const char *affected_name,\n\t\t\t\t\t
      \ struct prefix_list_entry *pentry,\n\t\t\t\t\t  route_map_event_t event)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/lib/routemap.c:2560,1
    - Dst: evpn_prefix2prefix
      Src: /src/frr/lib/routemap.c:2584,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2585,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2585,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2587,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2591,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2591,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2593,1
    - Dst: route_map_get_index
      Src: /src/frr/lib/routemap.c:2601,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2604,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2604,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2605,1
    - Dst: route_map_cmd_result_str
      Src: /src/frr/lib/routemap.c:2608,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2610,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2610,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2611,1
    - Dst: route_map_cmd_result_str
      Src: /src/frr/lib/routemap.c:2614,1
    - Dst: route_map_apply_match
      Src: /src/frr/lib/routemap.c:2631,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2633,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2633,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2634,1
    - Dst: route_map_cmd_result_str
      Src: /src/frr/lib/routemap.c:2637,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/lib/routemap.c:2696,1
    - Dst: route_map_apply_ext
      Src: /src/frr/lib/routemap.c:2703,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2746,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2746,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2747,1
    - Dst: route_map_result_str
      Src: /src/frr/lib/routemap.c:2749,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 106
    argCount: 5
    argNames:
    - map
    - prefix
    - match_object
    - set_object
    - pref
    argTypes:
    - struct route_map*
    - struct prefix*
    - void*
    - void*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2543
    functionDepth: 3
    functionLinenumber: 2543
    functionLinenumberEnd: 2759
    functionName: route_map_apply_ext
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached:
    - flog_warn
    - route_map_apply_ext
    - CHECK_FLAG
    - route_map_cmd_result_str
    - route_map_lookup_by_name
    - route_map_result_str
    - zlog_debug
    - evpn_prefix2prefix
    - unlikely
    - route_map_get_index
    - route_map_apply_match
    linkageType: ''
    returnType: route_map_result_t
    signature: "route_map_result_t route_map_apply_ext(struct route_map *map,\n\t\t\t\t
      \      const struct prefix *prefix,\n\t\t\t\t       void *match_object, void
      *set_object,\n\t\t\t\t       int *pref)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2764
      start: 2761
    functionDepth: 0
    functionLinenumber: 2761
    functionLinenumberEnd: 2764
    functionName: route_map_add_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void route_map_add_hook(void (*func)(const char *))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2769
      start: 2766
    functionDepth: 0
    functionLinenumber: 2766
    functionLinenumberEnd: 2769
    functionName: route_map_delete_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void route_map_delete_hook(void (*func)(const char *))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2774
      start: 2771
    functionDepth: 0
    functionLinenumber: 2771
    functionLinenumberEnd: 2774
    functionName: route_map_event_hook
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void route_map_event_hook(void (*func)(const char *name))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/routemap.c:2779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2777
    functionDepth: 0
    functionLinenumber: 2777
    functionLinenumberEnd: 2782
    functionName: route_map_rmap_hash_cmp
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool route_map_rmap_hash_cmp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/routemap.c:2787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2790
      start: 2784
    functionDepth: 0
    functionLinenumber: 2784
    functionLinenumberEnd: 2790
    functionName: route_map_dep_hash_cmp
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool route_map_dep_hash_cmp(const void *p1, const void *p2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/routemap.c:2797,1
    - Dst: hash_release
      Src: /src/frr/lib/routemap.c:2799,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2801,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2801,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2802,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2806,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2807,1
    - Dst: hash_release
      Src: /src/frr/lib/routemap.c:2810,1
    - Dst: hash_free
      Src: /src/frr/lib/routemap.c:2811,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2812,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2813,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2792
    functionDepth: 1
    functionLinenumber: 2792
    functionLinenumberEnd: 2815
    functionName: route_map_clear_reference
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - memset
    - CHECK_FLAG
    - hash_free
    - zlog_debug
    - unlikely
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void route_map_clear_reference(struct hash_bucket *bucket, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2821,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2821,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2822,1
    - Dst: hash_iterate
      Src: /src/frr/lib/routemap.c:2825,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2817
    functionDepth: 1
    functionLinenumber: 2817
    functionLinenumberEnd: 2828
    functionName: route_map_clear_all_references
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: void
    signature: void route_map_clear_all_references(char *rmap_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/routemap.c:2834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2830
    functionDepth: 1
    functionLinenumber: 2830
    functionLinenumberEnd: 2835
    functionName: route_map_dep_data_hash_make_key
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int route_map_dep_data_hash_make_key(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/routemap.c:2842,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:2843,1
    - Dst: hash_create_size
      Src: /src/frr/lib/routemap.c:2845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2850
      start: 2837
    functionDepth: 1
    functionLinenumber: 2837
    functionLinenumberEnd: 2850
    functionName: route_map_dep_hash_alloc
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_map_dep_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/routemap.c:2856,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:2859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2852
    functionDepth: 1
    functionLinenumber: 2852
    functionLinenumberEnd: 2861
    functionName: route_map_name_hash_alloc
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *route_map_name_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/routemap.c:2865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2866
      start: 2863
    functionDepth: 1
    functionLinenumber: 2863
    functionLinenumberEnd: 2866
    functionName: route_map_dep_hash_make_key
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int route_map_dep_hash_make_key(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2875
      start: 2868
    functionDepth: 1
    functionLinenumber: 2868
    functionLinenumberEnd: 2875
    functionName: route_map_print_dependency
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void route_map_print_dependency(struct hash_bucket *bucket, void *data)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:2886,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:2887,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2897,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2897,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2898,1
    - Dst: hash_get
      Src: /src/frr/lib/routemap.c:2900,1
    - Dst: memset
      Src: /src/frr/lib/routemap.c:2910,1
    - Dst: hash_lookup
      Src: /src/frr/lib/routemap.c:2912,1
    - Dst: hash_get
      Src: /src/frr/lib/routemap.c:2914,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:2926,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2926,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:2927,1
    - Dst: hash_get
      Src: /src/frr/lib/routemap.c:2929,1
    - Dst: memset
      Src: /src/frr/lib/routemap.c:2934,1
    - Dst: hash_lookup
      Src: /src/frr/lib/routemap.c:2936,1
    - Dst: zlog_warn
      Src: /src/frr/lib/routemap.c:2943,1
    - Dst: hash_release
      Src: /src/frr/lib/routemap.c:2952,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2955,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2957,1
    - Dst: hash_release
      Src: /src/frr/lib/routemap.c:2962,1
    - Dst: hash_free
      Src: /src/frr/lib/routemap.c:2963,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2964,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:2980,1
    - Dst: hash_iterate
      Src: /src/frr/lib/routemap.c:2981,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2986,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:2987,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 84
    argCount: 4
    argNames:
    - dephash
    - dep_name
    - rmap_name
    - type
    argTypes:
    - struct hash*
    - char*
    - char*
    - route_map_event_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2989
      start: 2877
    functionDepth: 1
    functionLinenumber: 2877
    functionLinenumberEnd: 2989
    functionName: route_map_dep_update
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - memset
    - CHECK_FLAG
    - hash_free
    - hash_lookup
    - zlog_debug
    - zlog_warn
    - unlikely
    - XFREE
    - hash_iterate
    - hash_release
    - hash_get
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int route_map_dep_update(struct hash *dephash, const char *dep_name,\n\t\t\t\tconst
      char *rmap_name, route_map_event_t type)"
  - BBCount: 23
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 1
    argNames:
    - event
    argTypes:
    - route_map_event_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3042
      start: 2991
    functionDepth: 0
    functionLinenumber: 2991
    functionLinenumberEnd: 3042
    functionName: route_map_get_dep_hash
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct hash
    signature: struct hash *route_map_get_dep_hash(route_map_event_t event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:3052,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:3052,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:3053,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - bucket
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 3044
    functionDepth: 1
    functionLinenumber: 3044
    functionLinenumberEnd: 3056
    functionName: route_map_process_dependency
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    linkageType: ''
    returnType: void
    signature: void route_map_process_dependency(struct hash_bucket *bucket, void
      *data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: route_map_get_dep_hash
      Src: /src/frr/lib/routemap.c:3063,1
    - Dst: route_map_dep_update
      Src: /src/frr/lib/routemap.c:3064,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - type
    - arg
    - rmap_name
    argTypes:
    - route_map_event_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3076
      start: 3058
    functionDepth: 2
    functionLinenumber: 3058
    functionLinenumberEnd: 3076
    functionName: route_map_upd8_dependency
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached:
    - route_map_dep_update
    - route_map_get_dep_hash
    linkageType: ''
    returnType: void
    signature: "void route_map_upd8_dependency(route_map_event_t type, const char
      *arg,\n\t\t\t       const char *rmap_name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap.c:3088,1
    - Dst: route_map_get_dep_hash
      Src: /src/frr/lib/routemap.c:3090,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:3091,1
    - Dst: hash_get
      Src: /src/frr/lib/routemap.c:3095,1
    - Dst: unlikely
      Src: /src/frr/lib/routemap.c:3100,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:3100,1
    - Dst: zlog_debug
      Src: /src/frr/lib/routemap.c:3101,1
    - Dst: hash_iterate
      Src: /src/frr/lib/routemap.c:3102,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:3106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - affected_name
    - event
    argTypes:
    - char*
    - route_map_event_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3107
      start: 3078
    functionDepth: 1
    functionLinenumber: 3078
    functionLinenumberEnd: 3107
    functionName: route_map_notify_dependencies
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 18
    functionsReached:
    - route_map_get_dep_hash
    - CHECK_FLAG
    - zlog_debug
    - unlikely
    - XFREE
    - hash_iterate
    - hash_get
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void route_map_notify_dependencies(const char *affected_name,\n\t\t\t\t
      \  route_map_event_t event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3117
      start: 3110
    functionDepth: 0
    functionLinenumber: 3110
    functionLinenumberEnd: 3117
    functionName: clear_route_map_helper
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void clear_route_map_helper(struct route_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:3217,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:3218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3219
      start: 3215
    functionDepth: 2
    functionLinenumber: 3215
    functionLinenumberEnd: 3219
    functionName: route_map_show_debug
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: void
    signature: void route_map_show_debug(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/routemap.c:3226,1
    - Dst: vty_out
      Src: /src/frr/lib/routemap.c:3227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3232
      start: 3222
    functionDepth: 2
    functionLinenumber: 3222
    functionLinenumberEnd: 3232
    functionName: rmap_config_write_debug
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: int
    signature: int rmap_config_write_debug(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/lib/routemap.c:3243,1
    - Dst: XMALLOC
      Src: /src/frr/lib/routemap.c:3247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3251
      start: 3236
    functionDepth: 0
    functionLinenumber: 3236
    functionLinenumberEnd: 3251
    functionName: route_map_rule_tag_compile
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void *route_map_rule_tag_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/routemap.c:3255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3256
      start: 3253
    functionDepth: 0
    functionLinenumber: 3253
    functionLinenumberEnd: 3256
    functionName: route_map_rule_tag_free
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void route_map_rule_tag_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmap_cmd_name_pop
      Src: /src/frr/lib/routemap.c:3267,1
    - Dst: rmap_cmd_name_fini
      Src: /src/frr/lib/routemap.c:3269,1
    - Dst: rmap_cmd_name_init
      Src: /src/frr/lib/routemap.c:3270,1
    - Dst: rmap_cmd_name_pop
      Src: /src/frr/lib/routemap.c:3272,1
    - Dst: rmap_cmd_name_fini
      Src: /src/frr/lib/routemap.c:3274,1
    - Dst: rmap_cmd_name_init
      Src: /src/frr/lib/routemap.c:3275,1
    - Dst: route_map_delete
      Src: /src/frr/lib/routemap.c:3290,1
    - Dst: hash_free
      Src: /src/frr/lib/routemap.c:3294,1
    - Dst: hash_free
      Src: /src/frr/lib/routemap.c:3298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3300
      start: 3258
    functionDepth: 3
    functionLinenumber: 3258
    functionLinenumberEnd: 3300
    functionName: route_map_finish
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 2
    functionsReached:
    - rmap_cmd_name_pop
    - route_map_delete
    - hash_free
    - rmap_cmd_name_init
    - rmap_cmd_name_fini
    linkageType: ''
    returnType: void
    signature: void route_map_finish(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3307
      start: 3303
    functionDepth: 0
    functionLinenumber: 3303
    functionLinenumberEnd: 3307
    functionName: route_map_counter_increment
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void route_map_counter_increment(struct route_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct route_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3317
      start: 3310
    functionDepth: 0
    functionLinenumber: 3310
    functionLinenumberEnd: 3317
    functionName: route_map_counter_decrement
    functionSourceFile: /src/frr/lib/routemap.c
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void route_map_counter_decrement(struct route_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - count
    argTypes:
    - uint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 25
    functionName: _msb
    functionSourceFile: /src/frr/lib/darr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint
    signature: uint _msb(uint count)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _msb
      Src: /src/frr/lib/darr.c:35,1
    - Dst: assert
      Src: /src/frr/lib/darr.c:40,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - count
    - esize
    argTypes:
    - uint
    - size_t
    assertStmts:
    - condition: (ncount < count)
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/frr/lib/darr.c
    constantsTouched: []
    func_position:
      end: 47
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 47
    functionName: darr_next_count
    functionSourceFile: /src/frr/lib/darr.c
    functionUses: 0
    functionsReached:
    - _msb
    - assert
    linkageType: ''
    returnType: uint
    signature: uint darr_next_count(uint count, size_t esize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - count
    - esize
    argTypes:
    - uint
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: darr_size
    functionSourceFile: /src/frr/lib/darr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t darr_size(uint count, size_t esize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: darr_next_count
      Src: /src/frr/lib/darr.c:56,1
    - Dst: darr_size
      Src: /src/frr/lib/darr.c:57,1
    - Dst: darr_cap
      Src: /src/frr/lib/darr.c:57,1
    - Dst: darr_size
      Src: /src/frr/lib/darr.c:58,1
    - Dst: realloc
      Src: /src/frr/lib/darr.c:59,1
    - Dst: _darr_meta
      Src: /src/frr/lib/darr.c:59,1
    - Dst: assert
      Src: /src/frr/lib/darr.c:62,1
    - Dst: memset
      Src: /src/frr/lib/darr.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - a
    - count
    - esize
    argTypes:
    - void*
    - uint
    - size_t
    assertStmts:
    - condition: (dm)
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/frr/lib/darr.c
    constantsTouched: []
    func_position:
      end: 69
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 69
    functionName: __darr_resize
    functionSourceFile: /src/frr/lib/darr.c
    functionUses: 0
    functionsReached:
    - memset
    - darr_next_count
    - darr_cap
    - _darr_meta
    - darr_size
    - realloc
    - assert
    linkageType: ''
    returnType: void
    signature: void *__darr_resize(void *a, uint count, size_t esize)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: __darr_resize
      Src: /src/frr/lib/darr.c:79,1
    - Dst: __darr_resize
      Src: /src/frr/lib/darr.c:94,1
    - Dst: memmove
      Src: /src/frr/lib/darr.c:100,1
    - Dst: _a_at
      Src: /src/frr/lib/darr.c:100,1
    - Dst: _a_at
      Src: /src/frr/lib/darr.c:100,1
    - Dst: memset
      Src: /src/frr/lib/darr.c:109,1
    - Dst: _a_at
      Src: /src/frr/lib/darr.c:109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - a
    - at
    - count
    - esize
    - zero
    argTypes:
    - void*
    - uint
    - uint
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 114
    functionName: __darr_insert_n
    functionSourceFile: /src/frr/lib/darr.c
    functionUses: 0
    functionsReached:
    - memset
    - __darr_resize
    - _a_at
    - memmove
    linkageType: ''
    returnType: void
    signature: void *__darr_insert_n(void *a, uint at, uint count, size_t esize, bool
      zero)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: _a_at
    functionSourceFile: /src/frr/lib/darr.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _a_at(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - label
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: IS_MPLS_RESERVED_LABEL
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MPLS_RESERVED_LABEL(label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - label
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: IS_MPLS_UNRESERVED_LABEL
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MPLS_UNRESERVED_LABEL(label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lse
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: MPLS_LABEL_VALUE
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MPLS_LABEL_VALUE(lse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lse
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: MPLS_LABEL_EXP
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MPLS_LABEL_EXP(lse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lse
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: MPLS_LABEL_BOS
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MPLS_LABEL_BOS(lse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lse
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: MPLS_LABEL_TTL
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MPLS_LABEL_TTL(lse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ls
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: IS_MPLS_LABEL_BOS
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_MPLS_LABEL_BOS(ls)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/mpls.h:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vni
    - label
    argTypes:
    - vni_t
    - mpls_label_t*
    assertStmts:
    - condition: (tag)
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/frr/lib/mpls.h
    constantsTouched: []
    func_position:
      end: 132
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 132
    functionName: vni2label
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 6
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void vni2label(vni_t vni, mpls_label_t *label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/mpls.h:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t*
    assertStmts:
    - condition: (tag)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/frr/lib/mpls.h
    constantsTouched: []
    func_position:
      end: 146
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 146
    functionName: label2vni
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 6
    functionsReached:
    - assert
    linkageType: ''
    returnType: vni_t
    signature: vni_t label2vni(const mpls_label_t *label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/lib/mpls.h:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - label
    - ttl
    - exp
    - bos
    argTypes:
    - mpls_label_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: mpls_lse_encode
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 5
    functionsReached:
    - htonl
    linkageType: ''
    returnType: mpls_lse_t
    signature: "mpls_lse_t mpls_lse_encode(mpls_label_t label, uint32_t ttl,\n\t\t\t\t\t
      uint32_t exp, uint32_t bos)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/mpls.h:170,1
    - Dst: MPLS_LABEL_VALUE
      Src: /src/frr/lib/mpls.h:171,1
    - Dst: MPLS_LABEL_EXP
      Src: /src/frr/lib/mpls.h:172,1
    - Dst: MPLS_LABEL_BOS
      Src: /src/frr/lib/mpls.h:173,1
    - Dst: MPLS_LABEL_TTL
      Src: /src/frr/lib/mpls.h:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - lse
    - label
    - ttl
    - exp
    - bos
    argTypes:
    - mpls_lse_t
    - mpls_label_t*
    - uint32_t*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 175
    functionName: mpls_lse_decode
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 7
    functionsReached:
    - MPLS_LABEL_EXP
    - MPLS_LABEL_BOS
    - MPLS_LABEL_VALUE
    - MPLS_LABEL_TTL
    - ntohl
    linkageType: ''
    returnType: void
    signature: "void mpls_lse_decode(mpls_lse_t lse, mpls_label_t *label,\n\t\t\t\t
      \  uint32_t *ttl, uint32_t *exp, uint32_t *bos)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/mpls.h:187,1
    - Dst: label2vni
      Src: /src/frr/lib/mpls.h:187,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:193,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:196,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:199,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:202,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:205,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:208,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:211,1
    - Dst: strlcpy
      Src: /src/frr/lib/mpls.h:214,1
    - Dst: snprintf
      Src: /src/frr/lib/mpls.h:218,1
    - Dst: snprintf
      Src: /src/frr/lib/mpls.h:220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 4
    argNames:
    - label
    - type
    - buf
    - len
    argTypes:
    - mpls_label_t
    - enum lsp_types_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 223
    functionName: label2str
    functionSourceFile: /src/frr/lib/mpls.h
    functionUses: 19
    functionsReached:
    - strlcpy
    - label2vni
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *label2str(mpls_label_t label, enum lsp_types_t type,\n\t\t\t
      \     char *buf, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: DEBUG_MODE_CHECK
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_MODE_CHECK(name, mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: DEBUG_OPT_CHECK
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OPT_CHECK(name, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - fl
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: DEBUG_FLAGS_CHECK
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_FLAGS_CHECK(name, fl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - mode
    - ','
    - onoff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 136
    functionName: DEBUG_MODE_SET
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_MODE_SET(name, mode, onoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: DEBUG_MODE_ON
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_MODE_ON(name, mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - mode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: DEBUG_MODE_OFF
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_MODE_OFF(name, mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - opt
    - ','
    - onoff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: DEBUG_OPT_SET
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OPT_SET(name, opt, onoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: DEBUG_OPT_ON
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OPT_ON(name, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 158
    functionName: DEBUG_OPT_OFF
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OPT_OFF(name, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fl
    - ','
    - onoff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 171
    functionName: DEBUG_FLAGS_SET
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_FLAGS_SET(name, fl, onoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - fl
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: DEBUG_FLAGS_ON
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_FLAGS_ON(name, fl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - fl
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    functionName: DEBUG_FLAGS_OFF
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_FLAGS_OFF(name, fl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 182
    functionName: DEBUG_CLEAR
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_CLEAR(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: DEBUG_ON
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_ON(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - vtynode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 201
    functionName: DEBUG_NODE2MODE
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_NODE2MODE(vtynode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - level
    - ','
    - name
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: DEBUG
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 215
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG(level, name, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: DEBUGE
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGE(name, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: DEBUGW
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGW(name, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    functionName: DEBUGI
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGI(name, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: DEBUGN
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGN(name, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 219
    functionName: DEBUGD
    functionSourceFile: /src/frr/lib/debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGD(name, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: MD5Init
    functionSourceFile: /src/frr/lib/md5.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MD5Init(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: MD5Update
    functionSourceFile: /src/frr/lib/md5.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MD5Update(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: MD5Final
    functionSourceFile: /src/frr/lib/md5.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MD5Final(x, y)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/link_state.c:46,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/link_state.c:51,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/link_state.c:52,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - i1
    - i2
    argTypes:
    - struct ls_node_id
    - struct ls_node_id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 57
    functionName: ls_node_id_same
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - memcmp
    linkageType: ''
    returnType: int
    signature: int ls_node_id_same(struct ls_node_id i1, struct ls_node_id i2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/link_state.c:67,1
    - Dst: IPV4_NET0
      Src: /src/frr/lib/link_state.c:69,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/link_state.c:71,1
    - Dst: flags::flags
      Src: /src/frr/lib/link_state.c:71,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/link_state.c:76,1
    - Dst: flags::flags
      Src: /src/frr/lib/link_state.c:76,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/lib/link_state.c:79,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/link_state.c:81,1
    - Dst: flags::flags
      Src: /src/frr/lib/link_state.c:81,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - adv
    - rid
    - rid6
    argTypes:
    - struct ls_node_id
    - struct in_addr
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 84
    functionName: ls_node_new
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - XCALLOC::XCALLOC
    - SET_FLAG
    - flags::flags
    - IPV4_NET0
    linkageType: ''
    returnType: struct ls_node
    signature: "struct ls_node *ls_node_new(struct ls_node_id adv, struct in_addr
      rid,\n\t\t\t    struct in6_addr rid6)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct ls_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: ls_node_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ls_node_del(struct ls_node *node)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ls_node_id_same
      Src: /src/frr/lib/link_state.c:107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:111,1
    - Dst: strncmp
      Src: /src/frr/lib/link_state.c:112,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:114,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/link_state.c:115,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:117,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/link_state.c:118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:123,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:125,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:128,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:140,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 32
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - struct ls_node*
    - struct ls_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 146
    functionName: ls_node_same
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - IPV4_ADDR_SAME
    - strncmp
    - IPV6_ADDR_SAME
    - ls_node_id_same
    linkageType: ''
    returnType: int
    signature: int ls_node_same(struct ls_node *n1, struct ls_node *n2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/link_state.c:161,1
    - Dst: IPV4_NET0
      Src: /src/frr/lib/link_state.c:163,1
    - Dst: standard::standard
      Src: /src/frr/lib/link_state.c:164,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/link_state.c:165,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/lib/link_state.c:167,1
    - Dst: standard::standard
      Src: /src/frr/lib/link_state.c:168,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/link_state.c:169,1
    - Dst: standard::standard
      Src: /src/frr/lib/link_state.c:172,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/link_state.c:173,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:177,1
    - Dst: flags::flags
      Src: /src/frr/lib/link_state.c:177,1
    - Dst: admin_group_init
      Src: /src/frr/lib/link_state.c:183,1
    - Dst: ext_admin_group::ext_admin_group
      Src: /src/frr/lib/link_state.c:183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - adv
    - local
    - local6
    - local_id
    argTypes:
    - struct ls_node_id
    - struct in_addr
    - struct in6_addr
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 186
    functionName: ls_attributes_new
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - XCALLOC::XCALLOC
    - admin_group_init
    - standard::standard
    - ext_admin_group::ext_admin_group
    - CHECK_FLAG
    - SET_FLAG
    - flags::flags
    - IPV4_NET0
    linkageType: ''
    returnType: struct ls_attributes
    signature: "struct ls_attributes *ls_attributes_new(struct ls_node_id adv,\n\t\t\t\t\tstruct
      in_addr local,\n\t\t\t\t\tstruct in6_addr local6,\n\t\t\t\t\tuint32_t local_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:194,1
    - Dst: UNSET_FLAG
      Src: /src/frr/lib/link_state.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: ls_attributes_srlg_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ls_attributes_srlg_del(struct ls_attributes *attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_attributes_srlg_del
      Src: /src/frr/lib/link_state.c:206,1
    - Dst: admin_group_term
      Src: /src/frr/lib/link_state.c:208,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - attr
    argTypes:
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 211
    functionName: ls_attributes_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - ls_attributes_srlg_del
    - admin_group_term
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ls_attributes_del(struct ls_attributes *attr)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: ls_node_id_same
      Src: /src/frr/lib/link_state.c:226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:230,1
    - Dst: strncmp
      Src: /src/frr/lib/link_state.c:231,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:233,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:235,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:238,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:241,1
    - Dst: admin_group_cmp
      Src: /src/frr/lib/link_state.c:242,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:244,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/link_state.c:245,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:247,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/link_state.c:248,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:250,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/link_state.c:251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:253,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/link_state.c:254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:256,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:259,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:262,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:268,1
    - Dst: memcmp
      Src: /src/frr/lib/link_state.c:269,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:271,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:274,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/link_state.c:275,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:278,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/link_state.c:279,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:282,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:285,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:289,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:292,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:301,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:305,1
    - Dst: memcmp
      Src: /src/frr/lib/link_state.c:312,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/link_state.c:319,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:323,1
    - Dst: memcmp
      Src: /src/frr/lib/link_state.c:325,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 70
    argCount: 2
    argNames:
    - l1
    - l2
    argTypes:
    - struct ls_attributes*
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 332
    functionName: ls_attributes_same
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - admin_group_cmp
    - CHECK_FLAG
    - memcmp
    - IPV4_ADDR_SAME
    - strncmp
    - IPV6_ADDR_SAME
    - ls_node_id_same
    linkageType: ''
    returnType: int
    signature: int ls_attributes_same(struct ls_attributes *l1, struct ls_attributes
      *l2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/link_state.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - adv
    - p
    argTypes:
    - struct ls_node_id
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 349
    functionName: ls_prefix_new
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct ls_prefix
    signature: struct ls_prefix *ls_prefix_new(struct ls_node_id adv, struct prefix
      *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pref
    argTypes:
    - struct ls_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 357
    functionName: ls_prefix_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ls_prefix_del(struct ls_prefix *pref)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ls_node_id_same
      Src: /src/frr/lib/link_state.c:372,1
    - Dst: prefix_same
      Src: /src/frr/lib/link_state.c:376,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:378,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:381,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:389,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 24
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct ls_prefix*
    - struct ls_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 397
    functionName: ls_prefix_same
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - prefix_same
    - ls_node_id_same
    linkageType: ''
    returnType: int
    signature: int ls_prefix_same(struct ls_prefix *p1, struct ls_prefix *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/link_state.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sysid
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 419
    functionName: sysid_to_key
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t sysid_to_key(const uint8_t sysid[ISO_SYS_ID_LEN])
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/link_state.c:434,1
    - Dst: sysid_to_key
      Src: /src/frr/lib/link_state.c:439,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/link_state.c:451,1
    - Dst: list_new
      Src: /src/frr/lib/link_state.c:459,1
    - Dst: incoming_edges::incoming_edges
      Src: /src/frr/lib/link_state.c:460,1
    - Dst: list_new
      Src: /src/frr/lib/link_state.c:461,1
    - Dst: outgoing_edges::outgoing_edges
      Src: /src/frr/lib/link_state.c:462,1
    - Dst: list_new
      Src: /src/frr/lib/link_state.c:463,1
    - Dst: prefixes::prefixes
      Src: /src/frr/lib/link_state.c:464,1
    - Dst: vertices_add
      Src: /src/frr/lib/link_state.c:465,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - ted
    - node
    argTypes:
    - struct ls_ted*
    - struct ls_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 468
    functionName: ls_vertex_add
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - XCALLOC::XCALLOC
    - outgoing_edges::outgoing_edges
    - sysid_to_key
    - list_new
    - incoming_edges::incoming_edges
    - prefixes::prefixes
    - vertices_add
    - ntohl
    linkageType: ''
    returnType: struct ls_vertex
    signature: struct ls_vertex *ls_vertex_add(struct ls_ted *ted, struct ls_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/link_state.c:480,1
    - Dst: ls_edge_del_all
      Src: /src/frr/lib/link_state.c:481,1
    - Dst: list_delete
      Src: /src/frr/lib/link_state.c:482,1
    - Dst: for
      Src: /src/frr/lib/link_state.c:485,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/link_state.c:485,1
    - Dst: ls_disconnect
      Src: /src/frr/lib/link_state.c:486,1
    - Dst: ls_edge_del_all
      Src: /src/frr/lib/link_state.c:488,1
    - Dst: list_delete
      Src: /src/frr/lib/link_state.c:490,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/link_state.c:493,1
    - Dst: ls_subnet_del_all
      Src: /src/frr/lib/link_state.c:494,1
    - Dst: list_delete
      Src: /src/frr/lib/link_state.c:495,1
    - Dst: vertices_del
      Src: /src/frr/lib/link_state.c:498,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:499,1
    - Dst: ls_vertex_del_all
      Src: /src/frr/lib/link_state.c:502,1
    - Dst: ls_node_del
      Src: /src/frr/lib/link_state.c:508,1
    - Dst: ls_vertex_del
      Src: /src/frr/lib/link_state.c:511,1
    - Dst: ls_vertex_update
      Src: /src/frr/lib/link_state.c:514,1
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/lib/link_state.c:521,1
    - Dst: ls_node_same
      Src: /src/frr/lib/link_state.c:523,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - ted
    - vertex
    argTypes:
    - struct ls_ted*
    - struct ls_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 526
    functionName: ls_vertex_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - ls_vertex_del
    - ls_edge_del_all
    - ls_disconnect
    - list_delete
    - ls_node_same
    - ls_node_del
    - ls_find_vertex_by_id
    - vertices_del
    - ls_vertex_update
    - XFREE
    - ls_vertex_del_all
    - ALL_LIST_ELEMENTS
    - for
    - ls_subnet_del_all
    linkageType: ''
    returnType: void
    signature: void ls_vertex_del(struct ls_ted *ted, struct ls_vertex *vertex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vertices_find
      Src: /src/frr/lib/link_state.c:542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ted
    - key
    argTypes:
    - struct ls_ted*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 543
    functionName: ls_find_vertex_by_key
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - vertices_find
    linkageType: ''
    returnType: struct ls_vertex
    signature: struct ls_vertex *ls_find_vertex_by_key(struct ls_ted *ted, const uint64_t
      key)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/link_state.c:556,1
    - Dst: sysid_to_key
      Src: /src/frr/lib/link_state.c:560,1
    - Dst: vertices_find
      Src: /src/frr/lib/link_state.c:566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ted
    - nid
    argTypes:
    - struct ls_ted*
    - struct ls_node_id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 567
    functionName: ls_find_vertex_by_id
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 6
    functionsReached:
    - vertices_find
    - sysid_to_key
    - ntohl
    linkageType: ''
    returnType: struct ls_vertex
    signature: "struct ls_vertex *ls_find_vertex_by_id(struct ls_ted *ted,\n\t\t\t\t
      \      struct ls_node_id nid)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ls_node_same
      Src: /src/frr/lib/link_state.c:583,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - struct ls_vertex*
    - struct ls_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 569
    functionDepth: 3
    functionLinenumber: 569
    functionLinenumberEnd: 584
    functionName: ls_vertex_same
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_node_same
    linkageType: ''
    returnType: int
    signature: int ls_vertex_same(struct ls_vertex *v1, struct ls_vertex *v2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/link_state.c:595,1
    - Dst: ls_edge2msg
      Src: /src/frr/lib/link_state.c:599,1
    - Dst: ls_send_msg
      Src: /src/frr/lib/link_state.c:600,1
    - Dst: ls_edge_del_all
      Src: /src/frr/lib/link_state.c:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ted
    - vertex
    - zclient
    argTypes:
    - struct ls_ted*
    - struct ls_vertex*
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 604
    functionName: ls_vertex_clean
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - ls_edge2msg
    - ALL_LIST_ELEMENTS
    - ls_edge_del_all
    - ls_send_msg
    linkageType: ''
    returnType: void
    signature: "void ls_vertex_clean(struct ls_ted *ted, struct ls_vertex *vertex,\n\t\t
      \    struct zclient *zclient)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/lib/link_state.c:652,1
    - Dst: ls_node_new
      Src: /src/frr/lib/link_state.c:655,1
    - Dst: ls_vertex_add
      Src: /src/frr/lib/link_state.c:657,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:660,1
    - Dst: ls_find_edge_by_destination
      Src: /src/frr/lib/link_state.c:664,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:667,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:671,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ted
    - edge
    argTypes:
    - struct ls_ted*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 674
    functionName: ls_edge_connect_to
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_find_vertex_by_id
    - ls_find_edge_by_destination
    - ls_vertex_add
    - listnode_add_sort_nodup
    - ls_node_new
    linkageType: ''
    returnType: void
    signature: void ls_edge_connect_to(struct ls_ted *ted, struct ls_edge *edge)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:687,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/lib/link_state.c:690,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:691,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/lib/link_state.c:694,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:695,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:703,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/lib/link_state.c:706,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:707,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/lib/link_state.c:710,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:711,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - attr
    - dst
    argTypes:
    - struct ls_attributes*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 721
    functionName: get_edge_key
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_COPY
    - CHECK_FLAG
    - IPV6_ADDR_COPY
    linkageType: ''
    returnType: struct ls_edge_key
    signature: struct ls_edge_key get_edge_key(struct ls_attributes *attr, bool dst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_edge_key
      Src: /src/frr/lib/link_state.c:732,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/link_state.c:737,1
    - Dst: edges_add
      Src: /src/frr/lib/link_state.c:743,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - ted
    - attributes
    argTypes:
    - struct ls_ted*
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 723
    functionDepth: 2
    functionLinenumber: 723
    functionLinenumberEnd: 749
    functionName: ls_edge_add
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - XCALLOC::XCALLOC
    - edges_add
    - get_edge_key
    linkageType: ''
    returnType: struct ls_edge
    signature: "struct ls_edge *ls_edge_add(struct ls_ted *ted,\n\t\t\t    struct
      ls_attributes *attributes)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: edges_find
      Src: /src/frr/lib/link_state.c:760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ted
    - key
    argTypes:
    - struct ls_ted*
    - struct ls_edge_key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 751
    functionDepth: 0
    functionLinenumber: 751
    functionLinenumberEnd: 761
    functionName: ls_find_edge_by_key
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 5
    functionsReached:
    - edges_find
    linkageType: ''
    returnType: struct ls_edge
    signature: "struct ls_edge *ls_find_edge_by_key(struct ls_ted *ted,\n\t\t\t\t
      \   const struct ls_edge_key key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_edge_key
      Src: /src/frr/lib/link_state.c:771,1
    - Dst: edges_find
      Src: /src/frr/lib/link_state.c:775,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ted
    - attributes
    argTypes:
    - struct ls_ted*
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 763
    functionDepth: 2
    functionLinenumber: 763
    functionLinenumberEnd: 776
    functionName: ls_find_edge_by_source
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - edges_find
    - get_edge_key
    linkageType: ''
    returnType: struct ls_edge
    signature: "struct ls_edge *ls_find_edge_by_source(struct ls_ted *ted,\n\t\t\t\t
      \      struct ls_attributes *attributes)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_edge_key
      Src: /src/frr/lib/link_state.c:786,1
    - Dst: edges_find
      Src: /src/frr/lib/link_state.c:790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ted
    - attributes
    argTypes:
    - struct ls_ted*
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 778
    functionDepth: 2
    functionLinenumber: 778
    functionLinenumberEnd: 791
    functionName: ls_find_edge_by_destination
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - edges_find
    - get_edge_key
    linkageType: ''
    returnType: struct ls_edge
    signature: "struct ls_edge *ls_find_edge_by_destination(struct ls_ted *ted,\n\t\t\t\t\t
      \   struct ls_attributes *attributes)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ls_find_edge_by_source
      Src: /src/frr/lib/link_state.c:802,1
    - Dst: ls_attributes_same
      Src: /src/frr/lib/link_state.c:805,1
    - Dst: ls_attributes_del
      Src: /src/frr/lib/link_state.c:806,1
    - Dst: ls_edge_add
      Src: /src/frr/lib/link_state.c:814,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ted
    - attributes
    argTypes:
    - struct ls_ted*
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 793
    functionDepth: 3
    functionLinenumber: 793
    functionLinenumberEnd: 815
    functionName: ls_edge_update
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_find_edge_by_source
    - ls_attributes_del
    - ls_edge_add
    - ls_attributes_same
    linkageType: ''
    returnType: struct ls_edge
    signature: "struct ls_edge *ls_edge_update(struct ls_ted *ted,\n\t\t\t       struct
      ls_attributes *attributes)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: edge_cmp
      Src: /src/frr/lib/link_state.c:825,1
    - Dst: ls_attributes_same
      Src: /src/frr/lib/link_state.c:831,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - struct ls_edge*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 817
    functionDepth: 3
    functionLinenumber: 817
    functionLinenumberEnd: 832
    functionName: ls_edge_same
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - edge_cmp
    - ls_attributes_same
    linkageType: ''
    returnType: int
    signature: int ls_edge_same(struct ls_edge *e1, struct ls_edge *e2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_disconnect_edge
      Src: /src/frr/lib/link_state.c:840,1
    - Dst: edges_del
      Src: /src/frr/lib/link_state.c:842,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ted
    - edge
    argTypes:
    - struct ls_ted*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 844
    functionName: ls_edge_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_disconnect_edge
    - edges_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ls_edge_del(struct ls_ted *ted, struct ls_edge *edge)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_attributes_del
      Src: /src/frr/lib/link_state.c:852,1
    - Dst: ls_edge_del
      Src: /src/frr/lib/link_state.c:854,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ted
    - edge
    argTypes:
    - struct ls_ted*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 846
    functionDepth: 3
    functionLinenumber: 846
    functionLinenumberEnd: 855
    functionName: ls_edge_del_all
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 4
    functionsReached:
    - ls_attributes_del
    - ls_edge_del
    linkageType: ''
    returnType: void
    signature: void ls_edge_del_all(struct ls_ted *ted, struct ls_edge *edge)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/link_state.c:871,1
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/lib/link_state.c:878,1
    - Dst: ls_node_new
      Src: /src/frr/lib/link_state.c:881,1
    - Dst: ls_vertex_add
      Src: /src/frr/lib/link_state.c:882,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:886,1
    - Dst: subnets_add
      Src: /src/frr/lib/link_state.c:888,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ted
    - ls_pref
    argTypes:
    - struct ls_ted*
    - struct ls_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 860
    functionDepth: 2
    functionLinenumber: 860
    functionLinenumberEnd: 891
    functionName: ls_subnet_add
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - XCALLOC::XCALLOC
    - ls_find_vertex_by_id
    - subnets_add
    - ls_vertex_add
    - listnode_add_sort_nodup
    - ls_node_new
    linkageType: ''
    returnType: struct ls_subnet
    signature: "struct ls_subnet *ls_subnet_add(struct ls_ted *ted,\n\t\t\t\tstruct
      ls_prefix *ls_pref)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ls_find_subnet
      Src: /src/frr/lib/link_state.c:900,1
    - Dst: ls_prefix_same
      Src: /src/frr/lib/link_state.c:902,1
    - Dst: ls_prefix_del
      Src: /src/frr/lib/link_state.c:903,1
    - Dst: ls_subnet_add
      Src: /src/frr/lib/link_state.c:910,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ted
    - pref
    argTypes:
    - struct ls_ted*
    - struct ls_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 893
    functionDepth: 3
    functionLinenumber: 893
    functionLinenumberEnd: 911
    functionName: ls_subnet_update
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_subnet_add
    - ls_prefix_same
    - ls_prefix_del
    - ls_find_subnet
    linkageType: ''
    returnType: struct ls_subnet
    signature: struct ls_subnet *ls_subnet_update(struct ls_ted *ted, struct ls_prefix
      *pref)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/lib/link_state.c:921,1
    - Dst: ls_prefix_same
      Src: /src/frr/lib/link_state.c:927,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct ls_subnet*
    - struct ls_subnet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 913
    functionDepth: 3
    functionLinenumber: 913
    functionLinenumberEnd: 928
    functionName: ls_subnet_same
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - ls_prefix_same
    linkageType: ''
    returnType: int
    signature: int ls_subnet_same(struct ls_subnet *s1, struct ls_subnet *s2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/lib/link_state.c:936,1
    - Dst: subnets_del
      Src: /src/frr/lib/link_state.c:938,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:939,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ted
    - subnet
    argTypes:
    - struct ls_ted*
    - struct ls_subnet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 940
    functionName: ls_subnet_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - subnets_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ls_subnet_del(struct ls_ted *ted, struct ls_subnet *subnet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_prefix_del
      Src: /src/frr/lib/link_state.c:948,1
    - Dst: ls_subnet_del
      Src: /src/frr/lib/link_state.c:950,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ted
    - subnet
    argTypes:
    - struct ls_ted*
    - struct ls_subnet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 951
    functionName: ls_subnet_del_all
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - ls_prefix_del
    - ls_subnet_del
    linkageType: ''
    returnType: void
    signature: void ls_subnet_del_all(struct ls_ted *ted, struct ls_subnet *subnet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/lib/link_state.c:961,1
    - Dst: subnets_find
      Src: /src/frr/lib/link_state.c:962,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ted
    - prefix
    argTypes:
    - struct ls_ted*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 963
    functionName: ls_find_subnet
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 7
    functionsReached:
    - subnets_find
    - prefix_copy
    linkageType: ''
    returnType: struct ls_subnet
    signature: "struct ls_subnet *ls_find_subnet(struct ls_ted *ted,\n\t\t\t\t const
      struct prefix *prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/link_state.c:973,1
    - Dst: strlcpy
      Src: /src/frr/lib/link_state.c:978,1
    - Dst: name::name
      Src: /src/frr/lib/link_state.c:978,1
    - Dst: vertices_init
      Src: /src/frr/lib/link_state.c:981,1
    - Dst: vertices::vertices
      Src: /src/frr/lib/link_state.c:981,1
    - Dst: edges_init
      Src: /src/frr/lib/link_state.c:982,1
    - Dst: edges::edges
      Src: /src/frr/lib/link_state.c:982,1
    - Dst: subnets_init
      Src: /src/frr/lib/link_state.c:983,1
    - Dst: subnets::subnets
      Src: /src/frr/lib/link_state.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - key
    - name
    - as_number
    argTypes:
    - uint32_t
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 986
    functionName: ls_ted_new
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - vertices_init
    - XCALLOC::XCALLOC
    - vertices::vertices
    - edges_init
    - strlcpy
    - subnets::subnets
    - edges::edges
    - name::name
    - subnets_init
    linkageType: ''
    returnType: struct ls_ted
    signature: "struct ls_ted *ls_ted_new(const uint32_t key, const char *name,\n\t\t\t
      \ uint32_t as_number)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vertices_count
      Src: /src/frr/lib/link_state.c:994,1
    - Dst: edges_count
      Src: /src/frr/lib/link_state.c:994,1
    - Dst: subnets_count
      Src: /src/frr/lib/link_state.c:995,1
    - Dst: vertices_fini
      Src: /src/frr/lib/link_state.c:999,1
    - Dst: edges_fini
      Src: /src/frr/lib/link_state.c:1000,1
    - Dst: subnets_fini
      Src: /src/frr/lib/link_state.c:1001,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:1003,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ted
    argTypes:
    - struct ls_ted*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 1004
    functionName: ls_ted_del
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - vertices_count
    - subnets_count
    - edges_fini
    - vertices_fini
    - subnets_fini
    - XFREE
    - edges_count
    linkageType: ''
    returnType: void
    signature: void ls_ted_del(struct ls_ted *ted)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/lib/link_state.c:1016,1
    - Dst: ls_vertex_del_all
      Src: /src/frr/lib/link_state.c:1017,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/link_state.c:1018,1
    - Dst: ls_edge_del_all
      Src: /src/frr/lib/link_state.c:1019,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/link_state.c:1020,1
    - Dst: ls_subnet_del_all
      Src: /src/frr/lib/link_state.c:1021,1
    - Dst: ls_ted_del
      Src: /src/frr/lib/link_state.c:1024,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ted
    argTypes:
    - struct ls_ted**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1006
    functionDepth: 4
    functionLinenumber: 1006
    functionLinenumberEnd: 1026
    functionName: ls_ted_del_all
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - ls_edge_del_all
    - ls_ted_del
    - frr_each_safe
    - ls_vertex_del_all
    - ls_subnet_del_all
    linkageType: ''
    returnType: void
    signature: void ls_ted_del_all(struct ls_ted **ted)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/lib/link_state.c:1038,1
    - Dst: ls_vertex_del_all
      Src: /src/frr/lib/link_state.c:1040,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/link_state.c:1043,1
    - Dst: ls_edge_del_all
      Src: /src/frr/lib/link_state.c:1045,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/link_state.c:1048,1
    - Dst: ls_subnet_del_all
      Src: /src/frr/lib/link_state.c:1050,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ted
    argTypes:
    - struct ls_ted*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1028
    functionDepth: 4
    functionLinenumber: 1028
    functionLinenumberEnd: 1052
    functionName: ls_ted_clean
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - ls_edge_del_all
    - ls_subnet_del_all
    - frr_each_safe
    - ls_vertex_del_all
    linkageType: ''
    returnType: void
    signature: void ls_ted_clean(struct ls_ted *ted)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:1060,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:1063,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - vertex
    - edge
    - source
    argTypes:
    - struct ls_vertex*
    - struct ls_edge*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1054
    functionDepth: 2
    functionLinenumber: 1054
    functionLinenumberEnd: 1066
    functionName: ls_connect
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - listnode_add_sort_nodup
    linkageType: ''
    returnType: void
    signature: void ls_connect(struct ls_vertex *vertex, struct ls_edge *edge, bool
      source)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/lib/link_state.c:1075,1
    - Dst: listnode_delete
      Src: /src/frr/lib/link_state.c:1078,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - vertex
    - edge
    - source
    argTypes:
    - struct ls_vertex*
    - struct ls_edge*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1081
    functionName: ls_disconnect
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: void ls_disconnect(struct ls_vertex *vertex, struct ls_edge *edge,
      bool source)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:1093,1
    - Dst: listnode_add_sort_nodup
      Src: /src/frr/lib/link_state.c:1096,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - src
    - dst
    - edge
    argTypes:
    - struct ls_vertex*
    - struct ls_vertex*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1083
    functionDepth: 2
    functionLinenumber: 1083
    functionLinenumberEnd: 1097
    functionName: ls_connect_vertices
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - listnode_add_sort_nodup
    linkageType: ''
    returnType: void
    signature: "void ls_connect_vertices(struct ls_vertex *src, struct ls_vertex *dst,\n\t\t\t
      struct ls_edge *edge)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_disconnect
      Src: /src/frr/lib/link_state.c:1104,1
    - Dst: ls_disconnect
      Src: /src/frr/lib/link_state.c:1105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - edge
    argTypes:
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1099
    functionDepth: 1
    functionLinenumber: 1099
    functionLinenumberEnd: 1109
    functionName: ls_disconnect_edge
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - ls_disconnect
    linkageType: ''
    returnType: void
    signature: void ls_disconnect_edge(struct ls_edge *edge)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_register_opaque
      Src: /src/frr/lib/link_state.c:1120,1
    - Dst: zclient_register_opaque
      Src: /src/frr/lib/link_state.c:1122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - zclient
    - server
    argTypes:
    - struct zclient*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1115
    functionDepth: 1
    functionLinenumber: 1115
    functionLinenumberEnd: 1125
    functionName: ls_register
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - zclient_register_opaque
    linkageType: ''
    returnType: int
    signature: int ls_register(struct zclient *zclient, bool server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_unregister_opaque
      Src: /src/frr/lib/link_state.c:1132,1
    - Dst: zclient_unregister_opaque
      Src: /src/frr/lib/link_state.c:1134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - zclient
    - server
    argTypes:
    - struct zclient*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1127
    functionDepth: 1
    functionLinenumber: 1127
    functionLinenumberEnd: 1137
    functionName: ls_unregister
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - zclient_unregister_opaque
    linkageType: ''
    returnType: int
    signature: int ls_unregister(struct zclient *zclient, bool server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/link_state.c:1145,1
    - Dst: stream_reset
      Src: /src/frr/lib/link_state.c:1150,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/link_state.c:1152,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1155,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1156,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1158,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1159,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1160,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/link_state.c:1163,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/link_state.c:1163,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/link_state.c:1165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1139
    functionDepth: 1
    functionLinenumber: 1139
    functionLinenumberEnd: 1166
    functionName: ls_request_sync
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - STREAM_SIZE
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int ls_request_sync(struct zclient *zclient)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1173,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1175,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/link_state.c:1176,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1177,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1178,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1179,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1181,1
    - Dst: stream_get_ipv4
      Src: /src/frr/lib/link_state.c:1182,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1183,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1185,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1186,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1187,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1188,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1189,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1190,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1191,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1192,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1193,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1194,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1195,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1197,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1198,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1199,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1201,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1202,1
    - Dst: zlog_err
      Src: /src/frr/lib/link_state.c:1207,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:1208,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1168
    functionDepth: 1
    functionLinenumber: 1168
    functionLinenumberEnd: 1210
    functionName: ls_parse_node
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - stream_get_ipv4
    - CHECK_FLAG
    - zlog_err
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - XFREE
    linkageType: ''
    returnType: struct ls_node
    signature: struct ls_node *ls_parse_node(struct stream *s)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1219,1
    - Dst: admin_group_init
      Src: /src/frr/lib/link_state.c:1220,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1223,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1224,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1225,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1226,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1227,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1229,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1230,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1231,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1232,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1233,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1234,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1235,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1237,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1239,1
    - Dst: admin_group_bulk_set
      Src: /src/frr/lib/link_state.c:1240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1244,1
    - Dst: stream_get_ipv4
      Src: /src/frr/lib/link_state.c:1245,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1246,1
    - Dst: stream_get_ipv4
      Src: /src/frr/lib/link_state.c:1247,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1248,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1249,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1250,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1251,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1252,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1253,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1254,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1255,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1256,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/link_state.c:1257,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1258,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/link_state.c:1259,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1260,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/link_state.c:1262,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1263,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1264,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1265,1
    - Dst: stream_get_ipv4
      Src: /src/frr/lib/link_state.c:1266,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1267,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1268,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1269,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1270,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1271,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1272,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1273,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1275,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1276,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1277,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1279,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/link_state.c:1280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1281,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/link_state.c:1282,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1283,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/link_state.c:1284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1285,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1286,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1287,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1288,1
    - Dst: stream_get_ipv4
      Src: /src/frr/lib/link_state.c:1290,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1292,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1293,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1294,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1295,1
    - Dst: stream_get_ipv4
      Src: /src/frr/lib/link_state.c:1297,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1299,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1300,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1301,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1302,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1303,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1306,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1307,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1308,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1309,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1313,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1314,1
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1315,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1318,1
    - Dst: zlog_err
      Src: /src/frr/lib/link_state.c:1324,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:1328,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:1329,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 103
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1212
    functionDepth: 1
    functionLinenumber: 1212
    functionLinenumberEnd: 1332
    functionName: ls_parse_attributes
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - admin_group_init
    - XCALLOC
    - stream_get_ipv4
    - CHECK_FLAG
    - STREAM_GETF
    - zlog_err
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - admin_group_bulk_set
    - XFREE
    linkageType: ''
    returnType: struct ls_attributes
    signature: struct ls_attributes *ls_parse_attributes(struct stream *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1339,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1341,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/link_state.c:1342,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1343,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/link_state.c:1344,1
    - Dst: prefix_blen
      Src: /src/frr/lib/link_state.c:1345,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1346,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1347,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1348,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1349,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1351,1
    - Dst: STREAM_GETQ
      Src: /src/frr/lib/link_state.c:1352,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1353,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1354,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1355,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/link_state.c:1356,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1357,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1358,1
    - Dst: zlog_err
      Src: /src/frr/lib/link_state.c:1364,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:1365,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1334
    functionDepth: 1
    functionLinenumber: 1334
    functionLinenumberEnd: 1367
    functionName: ls_parse_prefix
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - CHECK_FLAG
    - STREAM_GETQ
    - zlog_err
    - STREAM_GETW
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    - XFREE
    linkageType: ''
    returnType: struct ls_prefix
    signature: struct ls_prefix *ls_parse_prefix(struct stream *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1373,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1376,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/link_state.c:1377,1
    - Dst: ls_parse_node
      Src: /src/frr/lib/link_state.c:1382,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/link_state.c:1385,1
    - Dst: ls_parse_attributes
      Src: /src/frr/lib/link_state.c:1386,1
    - Dst: ls_parse_prefix
      Src: /src/frr/lib/link_state.c:1389,1
    - Dst: zlog_err
      Src: /src/frr/lib/link_state.c:1392,1
    - Dst: zlog_err
      Src: /src/frr/lib/link_state.c:1403,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:1404,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1369
    functionDepth: 2
    functionLinenumber: 1369
    functionLinenumberEnd: 1406
    functionName: ls_parse_msg
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - ls_parse_prefix
    - zlog_err
    - STREAM_GETC
    - ls_parse_attributes
    - STREAM_GET
    - XFREE
    - ls_parse_node
    linkageType: ''
    returnType: struct ls_message
    signature: struct ls_message *ls_parse_msg(struct stream *s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1413,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1416,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1417,1
    - Dst: strlen
      Src: /src/frr/lib/link_state.c:1418,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1419,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1420,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1423,1
    - Dst: stream_put_ipv4
      Src: /src/frr/lib/link_state.c:1424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1425,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1426,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1427,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1428,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1429,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1431,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1432,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1433,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1434,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1435,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1436,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1439,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1440,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1441,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1443,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1444,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - s
    - node
    argTypes:
    - struct stream*
    - struct ls_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1408
    functionDepth: 1
    functionLinenumber: 1408
    functionLinenumberEnd: 1447
    functionName: ls_format_node
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - strlen
    - stream_put
    - CHECK_FLAG
    - stream_putw
    - stream_put_ipv4
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int ls_format_node(struct stream *s, struct ls_node *node)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1454,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1457,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1458,1
    - Dst: strlen
      Src: /src/frr/lib/link_state.c:1459,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1460,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1461,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1462,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1464,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1465,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1466,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1467,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1468,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1469,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1470,1
    - Dst: admin_group_nb_words
      Src: /src/frr/lib/link_state.c:1472,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1473,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1475,1
    - Dst: admin_group_get_offset
      Src: /src/frr/lib/link_state.c:1475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1478,1
    - Dst: stream_put_ipv4
      Src: /src/frr/lib/link_state.c:1479,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1480,1
    - Dst: stream_put_ipv4
      Src: /src/frr/lib/link_state.c:1481,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1482,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1483,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1484,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1485,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1486,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1487,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1488,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1489,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1490,1
    - Dst: stream_putf
      Src: /src/frr/lib/link_state.c:1491,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1492,1
    - Dst: stream_putf
      Src: /src/frr/lib/link_state.c:1493,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1494,1
    - Dst: stream_putf
      Src: /src/frr/lib/link_state.c:1496,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1497,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1498,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1499,1
    - Dst: stream_put_ipv4
      Src: /src/frr/lib/link_state.c:1500,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1501,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1502,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1503,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1504,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1505,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1506,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1507,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1509,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1510,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1511,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1512,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1513,1
    - Dst: stream_putf
      Src: /src/frr/lib/link_state.c:1514,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1515,1
    - Dst: stream_putf
      Src: /src/frr/lib/link_state.c:1516,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1517,1
    - Dst: stream_putf
      Src: /src/frr/lib/link_state.c:1518,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1519,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1520,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1521,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1522,1
    - Dst: stream_put_ipv4
      Src: /src/frr/lib/link_state.c:1523,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1526,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1527,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1528,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1529,1
    - Dst: stream_put_ipv4
      Src: /src/frr/lib/link_state.c:1530,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1533,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1534,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1535,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1536,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1537,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1540,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1541,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1542,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1543,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1544,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1547,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1548,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1550,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 92
    argCount: 2
    argNames:
    - s
    - attr
    argTypes:
    - struct stream*
    - struct ls_attributes*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1554
    functionName: ls_format_attributes
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - stream_putf
    - strlen
    - stream_put
    - admin_group_get_offset
    - CHECK_FLAG
    - admin_group_nb_words
    - stream_put_ipv4
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int ls_format_attributes(struct stream *s, struct ls_attributes *attr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1561,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1564,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1565,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1566,1
    - Dst: prefix_blen
      Src: /src/frr/lib/link_state.c:1567,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1568,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1569,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1570,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1571,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1572,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1573,1
    - Dst: stream_putq
      Src: /src/frr/lib/link_state.c:1574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1575,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1576,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:1577,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1578,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1579,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1580,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - s
    - ls_pref
    argTypes:
    - struct stream*
    - struct ls_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1584
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1584
    functionName: ls_format_prefix
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - stream_put
    - CHECK_FLAG
    - stream_putw
    - prefix_blen
    - stream_putq
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int ls_format_prefix(struct stream *s, struct ls_prefix *ls_pref)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1590,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1591,1
    - Dst: ls_format_node
      Src: /src/frr/lib/link_state.c:1596,1
    - Dst: stream_put
      Src: /src/frr/lib/link_state.c:1599,1
    - Dst: ls_format_attributes
      Src: /src/frr/lib/link_state.c:1600,1
    - Dst: ls_format_prefix
      Src: /src/frr/lib/link_state.c:1602,1
    - Dst: zlog_warn
      Src: /src/frr/lib/link_state.c:1604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - s
    - msg
    argTypes:
    - struct stream*
    - struct ls_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1586
    functionDepth: 2
    functionLinenumber: 1586
    functionLinenumberEnd: 1609
    functionName: ls_format_msg
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - stream_put
    - zlog_warn
    - ls_format_node
    - ls_format_prefix
    - stream_putc
    - ls_format_attributes
    linkageType: ''
    returnType: int
    signature: int ls_format_msg(struct stream *s, struct ls_message *msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/link_state.c:1622,1
    - Dst: stream_reset
      Src: /src/frr/lib/link_state.c:1627,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/link_state.c:1629,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1632,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/link_state.c:1634,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1635,1
    - Dst: stream_putc
      Src: /src/frr/lib/link_state.c:1637,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1638,1
    - Dst: stream_putl
      Src: /src/frr/lib/link_state.c:1639,1
    - Dst: stream_putw
      Src: /src/frr/lib/link_state.c:1641,1
    - Dst: ls_format_msg
      Src: /src/frr/lib/link_state.c:1645,1
    - Dst: stream_reset
      Src: /src/frr/lib/link_state.c:1646,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/link_state.c:1651,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/link_state.c:1651,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/link_state.c:1653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - zclient
    - msg
    - dst
    argTypes:
    - struct zclient*
    - struct ls_message*
    - struct zapi_opaque_reg_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1611
    functionDepth: 3
    functionLinenumber: 1611
    functionLinenumberEnd: 1654
    functionName: ls_send_msg
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - SET_FLAG
    - ls_format_msg
    - stream_reset
    - stream_putc
    - STREAM_SIZE
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int ls_send_msg(struct zclient *zclient, struct ls_message *msg,\n\t\tstruct
      zapi_opaque_reg_info *dst)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1660,1
    - Dst: memset
      Src: /src/frr/lib/link_state.c:1662,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - msg
    - vertex
    argTypes:
    - struct ls_message*
    - struct ls_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1655
    functionDepth: 0
    functionLinenumber: 1655
    functionLinenumberEnd: 1687
    functionName: ls_vertex2msg
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - memset
    - XCALLOC
    linkageType: ''
    returnType: struct ls_message
    signature: "struct ls_message *ls_vertex2msg(struct ls_message *msg,\n\t\t\t\t
      struct ls_vertex *vertex)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1693,1
    - Dst: memset
      Src: /src/frr/lib/link_state.c:1695,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - msg
    - edge
    argTypes:
    - struct ls_message*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1689
    functionDepth: 0
    functionLinenumber: 1689
    functionLinenumberEnd: 1723
    functionName: ls_edge2msg
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 3
    functionsReached:
    - memset
    - XCALLOC
    linkageType: ''
    returnType: struct ls_message
    signature: struct ls_message *ls_edge2msg(struct ls_message *msg, struct ls_edge
      *edge)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/link_state.c:1730,1
    - Dst: memset
      Src: /src/frr/lib/link_state.c:1732,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - msg
    - subnet
    argTypes:
    - struct ls_message*
    - struct ls_subnet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1725
    functionDepth: 0
    functionLinenumber: 1725
    functionLinenumberEnd: 1757
    functionName: ls_subnet2msg
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - memset
    - XCALLOC
    linkageType: ''
    returnType: struct ls_message
    signature: "struct ls_message *ls_subnet2msg(struct ls_message *msg,\n\t\t\t\t
      struct ls_subnet *subnet)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ls_vertex_add
      Src: /src/frr/lib/link_state.c:1767,1
    - Dst: ls_vertex_add
      Src: /src/frr/lib/link_state.c:1772,1
    - Dst: ls_vertex_update
      Src: /src/frr/lib/link_state.c:1777,1
    - Dst: ls_find_vertex_by_id
      Src: /src/frr/lib/link_state.c:1782,1
    - Dst: ls_vertex_del_all
      Src: /src/frr/lib/link_state.c:1785,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - ted
    - msg
    - delete
    argTypes:
    - struct ls_ted*
    - struct ls_message*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1759
    functionDepth: 2
    functionLinenumber: 1759
    functionLinenumberEnd: 1797
    functionName: ls_msg2vertex
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_find_vertex_by_id
    - ls_vertex_add
    - ls_vertex_update
    - ls_vertex_del_all
    linkageType: ''
    returnType: struct ls_vertex
    signature: "struct ls_vertex *ls_msg2vertex(struct ls_ted *ted, struct ls_message
      *msg,\n\t\t\t\tbool delete)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ls_edge_add
      Src: /src/frr/lib/link_state.c:1807,1
    - Dst: ls_edge_add
      Src: /src/frr/lib/link_state.c:1812,1
    - Dst: ls_edge_update
      Src: /src/frr/lib/link_state.c:1817,1
    - Dst: ls_find_edge_by_source
      Src: /src/frr/lib/link_state.c:1822,1
    - Dst: ls_edge_del_all
      Src: /src/frr/lib/link_state.c:1825,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - ted
    - msg
    - delete
    argTypes:
    - struct ls_ted*
    - struct ls_message*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1799
    functionDepth: 4
    functionLinenumber: 1799
    functionLinenumberEnd: 1837
    functionName: ls_msg2edge
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_edge_del_all
    - ls_find_edge_by_source
    - ls_edge_add
    - ls_edge_update
    linkageType: ''
    returnType: struct ls_edge
    signature: "struct ls_edge *ls_msg2edge(struct ls_ted *ted, struct ls_message
      *msg,\n\t\t\t    bool delete)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ls_subnet_add
      Src: /src/frr/lib/link_state.c:1847,1
    - Dst: ls_subnet_add
      Src: /src/frr/lib/link_state.c:1852,1
    - Dst: ls_subnet_update
      Src: /src/frr/lib/link_state.c:1857,1
    - Dst: ls_find_subnet
      Src: /src/frr/lib/link_state.c:1862,1
    - Dst: ls_subnet_del_all
      Src: /src/frr/lib/link_state.c:1865,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - ted
    - msg
    - delete
    argTypes:
    - struct ls_ted*
    - struct ls_message*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1839
    functionDepth: 4
    functionLinenumber: 1839
    functionLinenumberEnd: 1877
    functionName: ls_msg2subnet
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_subnet_update
    - ls_subnet_add
    - ls_subnet_del_all
    - ls_find_subnet
    linkageType: ''
    returnType: struct ls_subnet
    signature: "struct ls_subnet *ls_msg2subnet(struct ls_ted *ted, struct ls_message
      *msg,\n\t\t\t\tbool delete)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ls_msg2vertex
      Src: /src/frr/lib/link_state.c:1886,1
    - Dst: ls_msg2edge
      Src: /src/frr/lib/link_state.c:1889,1
    - Dst: ls_msg2subnet
      Src: /src/frr/lib/link_state.c:1892,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ted
    - msg
    - delete
    argTypes:
    - struct ls_ted*
    - struct ls_message*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1879
    functionDepth: 5
    functionLinenumber: 1879
    functionLinenumberEnd: 1900
    functionName: ls_msg2ted
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_msg2vertex
    - ls_msg2subnet
    - ls_msg2edge
    linkageType: ''
    returnType: struct ls_element
    signature: "struct ls_element *ls_msg2ted(struct ls_ted *ted, struct ls_message
      *msg,\n\t\t\t       bool delete)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_parse_msg
      Src: /src/frr/lib/link_state.c:1908,1
    - Dst: ls_msg2ted
      Src: /src/frr/lib/link_state.c:1910,1
    - Dst: ls_delete_msg
      Src: /src/frr/lib/link_state.c:1911,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ted
    - s
    - delete
    argTypes:
    - struct ls_ted*
    - struct stream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1902
    functionDepth: 6
    functionLinenumber: 1902
    functionLinenumberEnd: 1915
    functionName: ls_stream2ted
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - ls_delete_msg
    - ls_parse_msg
    - ls_msg2ted
    linkageType: ''
    returnType: struct ls_element
    signature: "struct ls_element *ls_stream2ted(struct ls_ted *ted, struct stream
      *s,\n\t\t\t\t  bool delete)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ls_node_del
      Src: /src/frr/lib/link_state.c:1925,1
    - Dst: ls_attributes_del
      Src: /src/frr/lib/link_state.c:1928,1
    - Dst: ls_prefix_del
      Src: /src/frr/lib/link_state.c:1931,1
    - Dst: XFREE
      Src: /src/frr/lib/link_state.c:1936,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct ls_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1917
    functionDepth: 3
    functionLinenumber: 1917
    functionLinenumberEnd: 1937
    functionName: ls_delete_msg
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - ls_attributes_del
    - ls_prefix_del
    - XFREE
    - ls_node_del
    linkageType: ''
    returnType: void
    signature: void ls_delete_msg(struct ls_message *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:1948,1
    - Dst: ls_vertex2msg
      Src: /src/frr/lib/link_state.c:1949,1
    - Dst: ls_send_msg
      Src: /src/frr/lib/link_state.c:1950,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:1952,1
    - Dst: ls_edge2msg
      Src: /src/frr/lib/link_state.c:1953,1
    - Dst: ls_send_msg
      Src: /src/frr/lib/link_state.c:1954,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:1956,1
    - Dst: ls_subnet2msg
      Src: /src/frr/lib/link_state.c:1957,1
    - Dst: ls_send_msg
      Src: /src/frr/lib/link_state.c:1958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - ted
    - zclient
    - dst
    argTypes:
    - struct ls_ted*
    - struct zclient*
    - struct zapi_opaque_reg_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1939
    functionDepth: 4
    functionLinenumber: 1939
    functionLinenumberEnd: 1961
    functionName: ls_sync_ted
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 2
    functionsReached:
    - ls_edge2msg
    - ls_subnet2msg
    - ls_vertex2msg
    - frr_each
    - ls_send_msg
    linkageType: ''
    returnType: int
    signature: "int ls_sync_ted(struct ls_ted *ted, struct zclient *zclient,\n\t\tstruct
      zapi_opaque_reg_info *dst)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:1997,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:1999,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - lnid
    - str
    - size
    argTypes:
    - struct ls_node_id
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1993
    functionDepth: 1
    functionLinenumber: 1993
    functionLinenumberEnd: 2002
    functionName: ls_node_id_to_text
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: "char *ls_node_id_to_text(struct ls_node_id lnid, char *str,\n\t\t\t\t
      \     size_t size)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_init
      Src: /src/frr/lib/link_state.c:2021,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2023,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2024,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2025,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2026,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2028,1
    - Dst: listcount
      Src: /src/frr/lib/link_state.c:2031,1
    - Dst: listcount
      Src: /src/frr/lib/link_state.c:2032,1
    - Dst: listcount
      Src: /src/frr/lib/link_state.c:2033,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2037,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2038,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2039,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2040,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2041,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2042,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2044,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2046,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2049,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2052,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2057,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2060,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2061,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2062,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2065,1
    - Dst: listcount
      Src: /src/frr/lib/link_state.c:2066,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/link_state.c:2067,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2070,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2073,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2076,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2077,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2080,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2081,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2086,1
    - Dst: listcount
      Src: /src/frr/lib/link_state.c:2087,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/link_state.c:2088,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2091,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2097,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2098,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2101,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2102,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2107,1
    - Dst: listcount
      Src: /src/frr/lib/link_state.c:2107,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/link_state.c:2108,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2109,1
    - Dst: vty_out
      Src: /src/frr/lib/link_state.c:2112,1
    - Dst: sbuf_buf
      Src: /src/frr/lib/link_state.c:2112,1
    - Dst: sbuf_free
      Src: /src/frr/lib/link_state.c:2113,1
    - Dst: if
      Src: /src/frr/lib/link_state.c:2124,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2129,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2130,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2131,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2132,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2133,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2134,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2135,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2138,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2139,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2140,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2142,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2143,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2145,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2146,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2147,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2148,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2149,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2150,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2151,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2152,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2153,1
    - Dst: if
      Src: /src/frr/lib/link_state.c:2155,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2157,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2159,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2160,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2162,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2164,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2165,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2167,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2170,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2171,1
    - Dst: ls_show_vertex
      Src: /src/frr/lib/link_state.c:2175,1
    - Dst: ls_show_vertex_json
      Src: /src/frr/lib/link_state.c:2179,1
    - Dst: ls_show_vertex_vty
      Src: /src/frr/lib/link_state.c:2181,1
    - Dst: ls_show_vertices
      Src: /src/frr/lib/link_state.c:2184,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2191,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2192,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2193,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2194,1
    - Dst: ls_show_vertex
      Src: /src/frr/lib/link_state.c:2195,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2196,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2199,1
    - Dst: ls_show_vertex
      Src: /src/frr/lib/link_state.c:2200,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2219,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2222,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2225,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 98
    argCount: 3
    argNames:
    - vertex
    - vty
    - verbose
    argTypes:
    - struct ls_vertex*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2004
    functionDepth: 2
    functionLinenumber: 2004
    functionLinenumberEnd: 2227
    functionName: ls_show_vertex_vty
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - frr_each
    - json_object_string_add
    - sbuf_free
    - ALL_LIST_ELEMENTS_RO
    - sbuf_push
    - sbuf_buf
    - if
    - vty_out
    - ls_show_vertex_json
    - sbuf_init
    - listcount
    - json_object_int_add
    - json_object_new_object
    - json_object_new_array
    - ls_show_vertex
    - json_object_array_add
    - CHECK_FLAG
    - snprintfrr
    - json_object_object_add
    - ls_show_vertex_vty
    - ls_show_vertices
    linkageType: ''
    returnType: void
    signature: "void ls_show_vertex_vty(struct ls_vertex *vertex, struct vty *vty,\n\t\t\t
      \      bool verbose)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_init
      Src: /src/frr/lib/link_state.c:2242,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2244,1
    - Dst: edge_key_to_text
      Src: /src/frr/lib/link_state.c:2244,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2245,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2247,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2248,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2250,1
    - Dst: ls_node_id_to_text
      Src: /src/frr/lib/link_state.c:2252,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2253,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2254,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2255,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2260,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2261,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2262,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2263,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2264,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2266,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2269,1
    - Dst: admin_group_nb_words
      Src: /src/frr/lib/link_state.c:2270,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2272,1
    - Dst: admin_group_string
      Src: /src/frr/lib/link_state.c:2273,1
    - Dst: strlen
      Src: /src/frr/lib/link_state.c:2275,1
    - Dst: strlen
      Src: /src/frr/lib/link_state.c:2278,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2283,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2284,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2286,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2287,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2289,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2290,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2292,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2293,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2295,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2296,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2298,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2299,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2301,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2302,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2304,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2305,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2308,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2309,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2311,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2316,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2319,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2320,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2322,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2323,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2325,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2326,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2328,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2329,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2331,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2332,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2334,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2335,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2337,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2338,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2340,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2341,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2343,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2344,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2346,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2347,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2349,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2353,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2354,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2356,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2360,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2361,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2363,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2367,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2368,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2370,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2374,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2375,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2378,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2380,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2382,1
    - Dst: vty_out
      Src: /src/frr/lib/link_state.c:2386,1
    - Dst: sbuf_buf
      Src: /src/frr/lib/link_state.c:2386,1
    - Dst: sbuf_free
      Src: /src/frr/lib/link_state.c:2387,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 99
    argCount: 3
    argNames:
    - edge
    - vty
    - verbose
    argTypes:
    - struct ls_edge*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2388
      start: 2232
    functionDepth: 2
    functionLinenumber: 2232
    functionLinenumberEnd: 2388
    functionName: ls_show_edge_vty
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_node_id_to_text
    - strlen
    - vty_out
    - sbuf_init
    - CHECK_FLAG
    - admin_group_nb_words
    - admin_group_string
    - sbuf_push
    - sbuf_buf
    - sbuf_free
    - edge_key_to_text
    linkageType: ''
    returnType: void
    signature: "void ls_show_edge_vty(struct ls_edge *edge, struct vty *vty,\n\t\t\t
      \    bool verbose)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/link_state.c:2397,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2403,1
    - Dst: edge_key_to_text
      Src: /src/frr/lib/link_state.c:2403,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2404,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2405,1
    - Dst: ls_node_id_to_text
      Src: /src/frr/lib/link_state.c:2406,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2407,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2409,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2411,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2413,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2414,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2415,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2416,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2418,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2420,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2423,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2424,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2425,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2426,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2427,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2428,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2429,1
    - Dst: admin_group_nb_words
      Src: /src/frr/lib/link_state.c:2431,1
    - Dst: admin_group_get_offset
      Src: /src/frr/lib/link_state.c:2433,1
    - Dst: snprintf
      Src: /src/frr/lib/link_state.c:2435,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2436,1
    - Dst: json_object_new_string
      Src: /src/frr/lib/link_state.c:2437,1
    - Dst: admin_group_size
      Src: /src/frr/lib/link_state.c:2440,1
    - Dst: admin_group_get
      Src: /src/frr/lib/link_state.c:2442,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2443,1
    - Dst: json_object_new_int
      Src: /src/frr/lib/link_state.c:2444,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2447,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2448,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2449,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2451,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2452,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2453,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2455,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2456,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2457,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2459,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2460,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2461,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2463,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2464,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2466,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2467,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2469,1
    - Dst: json_object_double_add
      Src: /src/frr/lib/link_state.c:2470,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2472,1
    - Dst: json_object_double_add
      Src: /src/frr/lib/link_state.c:2473,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2475,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2476,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2477,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2479,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2480,1
    - Dst: json_object_double_add
      Src: /src/frr/lib/link_state.c:2481,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2483,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2486,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2487,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2489,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2490,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2492,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2494,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2495,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2497,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2499,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2500,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2501,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2502,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2505,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2506,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2507,1
    - Dst: json_object_double_add
      Src: /src/frr/lib/link_state.c:2508,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2510,1
    - Dst: json_object_double_add
      Src: /src/frr/lib/link_state.c:2511,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2513,1
    - Dst: json_object_double_add
      Src: /src/frr/lib/link_state.c:2514,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2516,1
    - Dst: json_object_double_add
      Src: /src/frr/lib/link_state.c:2517,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2519,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2520,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2521,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2523,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2524,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2525,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2528,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2529,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2530,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2531,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2532,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2534,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2535,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2536,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2538,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2540,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2542,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2543,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2545,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2546,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2548,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2549,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2550,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2554,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2555,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2556,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2557,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2558,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2560,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2561,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2562,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2564,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2566,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2568,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2569,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2571,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2572,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2574,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2575,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2576,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2578,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 150
    argCount: 2
    argNames:
    - edge
    - json
    argTypes:
    - struct ls_edge*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2390
    functionDepth: 2
    functionLinenumber: 2390
    functionLinenumberEnd: 2580
    functionName: ls_show_edge_json
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - strlen
    - json_object_string_add
    - snprintf
    - admin_group_get_offset
    - json_object_double_add
    - admin_group_get
    - admin_group_size
    - edge_key_to_text
    - ls_node_id_to_text
    - admin_group_nb_words
    - json_object_int_add
    - json_object_new_string
    - json_object_new_object
    - json_object_new_array
    - json_object_new_int
    - json_object_array_add
    - CHECK_FLAG
    - snprintfrr
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void ls_show_edge_json(struct ls_edge *edge, struct json_object *json)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ls_show_edge_json
      Src: /src/frr/lib/link_state.c:2590,1
    - Dst: ls_show_edge_vty
      Src: /src/frr/lib/link_state.c:2592,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - edge
    - vty
    - json
    - verbose
    argTypes:
    - struct ls_edge*
    - struct vty*
    - struct json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2582
    functionDepth: 3
    functionLinenumber: 2582
    functionLinenumberEnd: 2593
    functionName: ls_show_edge
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - ls_show_edge_json
    - ls_show_edge_vty
    linkageType: ''
    returnType: void
    signature: "void ls_show_edge(struct ls_edge *edge, struct vty *vty,\n\t\t  struct
      json_object *json, bool verbose)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2602,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2603,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2604,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2605,1
    - Dst: ls_show_edge
      Src: /src/frr/lib/link_state.c:2606,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2607,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2610,1
    - Dst: ls_show_edge
      Src: /src/frr/lib/link_state.c:2611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - ted
    - vty
    - json
    - verbose
    argTypes:
    - struct ls_ted*
    - struct vty*
    - struct json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2595
    functionDepth: 4
    functionLinenumber: 2595
    functionLinenumberEnd: 2613
    functionName: ls_show_edges
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - json_object_array_add
    - frr_each
    - ls_show_edge
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void ls_show_edges(struct ls_ted *ted, struct vty *vty,\n\t\t   struct
      json_object *json, bool verbose)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sbuf_init
      Src: /src/frr/lib/link_state.c:2623,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2625,1
    - Dst: ls_node_id_to_text
      Src: /src/frr/lib/link_state.c:2626,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2627,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2628,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2629,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2634,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2635,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2636,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2638,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2639,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2641,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2642,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2645,1
    - Dst: sbuf_push
      Src: /src/frr/lib/link_state.c:2646,1
    - Dst: vty_out
      Src: /src/frr/lib/link_state.c:2650,1
    - Dst: sbuf_buf
      Src: /src/frr/lib/link_state.c:2650,1
    - Dst: sbuf_free
      Src: /src/frr/lib/link_state.c:2651,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - subnet
    - vty
    - verbose
    argTypes:
    - struct ls_subnet*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2652
      start: 2615
    functionDepth: 2
    functionLinenumber: 2615
    functionLinenumberEnd: 2652
    functionName: ls_show_subnet_vty
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ls_node_id_to_text
    - vty_out
    - sbuf_init
    - CHECK_FLAG
    - sbuf_push
    - sbuf_buf
    - sbuf_free
    linkageType: ''
    returnType: void
    signature: "void ls_show_subnet_vty(struct ls_subnet *subnet, struct vty *vty,\n\t\t\t
      \      bool verbose)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2663,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2664,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2665,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2666,1
    - Dst: ls_node_id_to_text
      Src: /src/frr/lib/link_state.c:2667,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2668,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2670,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2671,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2672,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2673,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2674,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2676,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2677,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2678,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2679,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/link_state.c:2680,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2681,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2682,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2683,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2684,1
    - Dst: snprintfrr
      Src: /src/frr/lib/link_state.c:2685,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2686,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - subnet
    - json
    argTypes:
    - struct ls_subnet*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2688
      start: 2654
    functionDepth: 2
    functionLinenumber: 2654
    functionLinenumberEnd: 2688
    functionName: ls_show_subnet_json
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ls_node_id_to_text
    - CHECK_FLAG
    - snprintfrr
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void ls_show_subnet_json(struct ls_subnet *subnet,\n\t\t\t\tstruct
      json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ls_show_subnet_json
      Src: /src/frr/lib/link_state.c:2698,1
    - Dst: ls_show_subnet_vty
      Src: /src/frr/lib/link_state.c:2700,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - subnet
    - vty
    - json
    - verbose
    argTypes:
    - struct ls_subnet*
    - struct vty*
    - struct json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2701
      start: 2690
    functionDepth: 3
    functionLinenumber: 2690
    functionLinenumberEnd: 2701
    functionName: ls_show_subnet
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - ls_show_subnet_json
    - ls_show_subnet_vty
    linkageType: ''
    returnType: void
    signature: "void ls_show_subnet(struct ls_subnet *subnet, struct vty *vty,\n\t\t
      \   struct json_object *json, bool verbose)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/lib/link_state.c:2710,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2711,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2712,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2713,1
    - Dst: ls_show_subnet
      Src: /src/frr/lib/link_state.c:2714,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/link_state.c:2715,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2718,1
    - Dst: ls_show_subnet
      Src: /src/frr/lib/link_state.c:2719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - ted
    - vty
    - json
    - verbose
    argTypes:
    - struct ls_ted*
    - struct vty*
    - struct json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2721
      start: 2703
    functionDepth: 4
    functionLinenumber: 2703
    functionLinenumberEnd: 2721
    functionName: ls_show_subnets
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - json_object_array_add
    - frr_each
    - json_object_object_add
    - ls_show_subnet
    linkageType: ''
    returnType: void
    signature: "void ls_show_subnets(struct ls_ted *ted, struct vty *vty,\n\t\t     struct
      json_object *json, bool verbose)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/link_state.c:2729,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/link_state.c:2730,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/link_state.c:2731,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2732,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2733,1
    - Dst: vertices_count
      Src: /src/frr/lib/link_state.c:2734,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2735,1
    - Dst: edges_count
      Src: /src/frr/lib/link_state.c:2736,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/link_state.c:2737,1
    - Dst: subnets_count
      Src: /src/frr/lib/link_state.c:2738,1
    - Dst: ls_show_vertices
      Src: /src/frr/lib/link_state.c:2739,1
    - Dst: ls_show_edges
      Src: /src/frr/lib/link_state.c:2740,1
    - Dst: ls_show_subnets
      Src: /src/frr/lib/link_state.c:2741,1
    - Dst: vty_out
      Src: /src/frr/lib/link_state.c:2746,1
    - Dst: ls_show_vertices
      Src: /src/frr/lib/link_state.c:2749,1
    - Dst: ls_show_edges
      Src: /src/frr/lib/link_state.c:2750,1
    - Dst: ls_show_subnets
      Src: /src/frr/lib/link_state.c:2751,1
    - Dst: vty_out
      Src: /src/frr/lib/link_state.c:2752,1
    - Dst: vertices_count
      Src: /src/frr/lib/link_state.c:2754,1
    - Dst: edges_count
      Src: /src/frr/lib/link_state.c:2755,1
    - Dst: subnets_count
      Src: /src/frr/lib/link_state.c:2755,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 4
    argNames:
    - ted
    - vty
    - json
    - verbose
    argTypes:
    - struct ls_ted*
    - struct vty*
    - struct json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2723
    functionDepth: 5
    functionLinenumber: 2723
    functionLinenumberEnd: 2757
    functionName: ls_show_ted
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vertices_count
    - ls_show_subnets
    - vty_out
    - json_object_int_add
    - subnets_count
    - ls_show_edges
    - json_object_string_add
    - json_object_object_add
    - edges_count
    - ls_show_vertices
    linkageType: ''
    returnType: void
    signature: "void ls_show_ted(struct ls_ted *ted, struct vty *vty, struct json_object
      *json,\n\t\t bool verbose)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/link_state.c:2766,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2769,1
    - Dst: zlog_debug
      Src: /src/frr/lib/link_state.c:2770,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/link_state.c:2778,1
    - Dst: zlog_debug
      Src: /src/frr/lib/link_state.c:2780,1
    - Dst: edge_key_to_text
      Src: /src/frr/lib/link_state.c:2782,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/link_state.c:2787,1
    - Dst: zlog_debug
      Src: /src/frr/lib/link_state.c:2789,1
    - Dst: edge_key_to_text
      Src: /src/frr/lib/link_state.c:2791,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2797,1
    - Dst: zlog_debug
      Src: /src/frr/lib/link_state.c:2798,1
    - Dst: edge_key_to_text
      Src: /src/frr/lib/link_state.c:2799,1
    - Dst: frr_each
      Src: /src/frr/lib/link_state.c:2806,1
    - Dst: zlog_debug
      Src: /src/frr/lib/link_state.c:2807,1
    - Dst: zlog_debug
      Src: /src/frr/lib/link_state.c:2811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ted
    argTypes:
    - struct ls_ted*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2812
      start: 2759
    functionDepth: 1
    functionLinenumber: 2759
    functionLinenumberEnd: 2812
    functionName: ls_dump_ted
    functionSourceFile: /src/frr/lib/link_state.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - edge_key_to_text
    - frr_each
    linkageType: ''
    returnType: void
    signature: void ls_dump_ted(struct ls_ted *ted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lp
    - ','
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: IS_PARAM_UNSET
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PARAM_UNSET(lp, st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lp
    - ','
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: IS_PARAM_SET
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_PARAM_SET(lp, st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    functionName: IS_LINK_PARAMS_SET
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_LINK_PARAMS_SET(lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lp
    - ','
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 177
    functionName: SET_PARAM
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_PARAM(lp, st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lp
    - ','
    - st
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: UNSET_PARAM
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSET_PARAM(lp, st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 179
    functionName: RESET_LINK_PARAM
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESET_LINK_PARAM(lp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: HAS_LINK_PARAMS
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAS_LINK_PARAMS(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 330
    functionName: IFNAME_RB_INSERT
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFNAME_RB_INSERT(v, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 343
    functionName: IFNAME_RB_REMOVE
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFNAME_RB_REMOVE(v, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 357
    functionName: IFINDEX_RB_INSERT
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFINDEX_RB_INSERT(v, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 370
    functionName: IFINDEX_RB_REMOVE
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFINDEX_RB_REMOVE(v, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - vrf
    - ','
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 374
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ifp
    - ','
    - connected
    - ','
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 377
    functionName: FOR_ALL_INTERFACES_ADDRESSES
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_ALL_INTERFACES_ADDRESSES(ifp, connected, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 453
    functionName: CONNECTED_PEER
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONNECTED_PEER(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 457
    functionName: CONNECTED_PREFIX
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONNECTED_PREFIX(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 464
    functionName: CONNECTED_ID
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONNECTED_ID(C)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_address_local
      Src: /src/frr/lib/if.h:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - matchaddr
    - family
    - vrf_id
    argTypes:
    - void*
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 530
    functionName: if_address_is_local
    functionSourceFile: /src/frr/lib/if.h
    functionUses: 2
    functionsReached:
    - if_lookup_address_local
    linkageType: ''
    returnType: bool
    signature: "bool if_address_is_local(const void *matchaddr, int family,\n\t\t\t\t
      \      vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_create
      Src: /src/frr/lib/zlog.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: zlog_tls_key_init
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - pthread_key_create
    linkageType: ''
    returnType: void
    signature: void zlog_tls_key_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_delete
      Src: /src/frr/lib/zlog.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: zlog_tls_key_fini
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - pthread_key_delete
    linkageType: ''
    returnType: void
    signature: void zlog_tls_key_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/frr/lib/zlog.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: zlog_tls_get
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - pthread_getspecific
    linkageType: ''
    returnType: struct zlog_tls
    signature: struct zlog_tls *zlog_tls_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setspecific
      Src: /src/frr/lib/zlog.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - struct zlog_tls*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: zlog_tls_set
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - pthread_setspecific
    linkageType: ''
    returnType: void
    signature: void zlog_tls_set(struct zlog_tls *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tls_model
      Src: /src/frr/lib/zlog.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 211
    functionName: zlog_tls_get
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - tls_model
    linkageType: ''
    returnType: struct zlog_tls
    signature: struct zlog_tls *zlog_tls_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - struct zlog_tls*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: zlog_tls_set
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zlog_tls_set(struct zlog_tls *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getthreadid_np
      Src: /src/frr/lib/zlog.c:231,1
    - Dst: syscall
      Src: /src/frr/lib/zlog.c:233,1
    - Dst: _lwp_self
      Src: /src/frr/lib/zlog.c:235,1
    - Dst: thr_self
      Src: /src/frr/lib/zlog.c:237,1
    - Dst: lwp_gettid
      Src: /src/frr/lib/zlog.c:239,1
    - Dst: getthrid
      Src: /src/frr/lib/zlog.c:241,1
    - Dst: pthread_self
      Src: /src/frr/lib/zlog.c:243,1
    - Dst: mach_thread_self
      Src: /src/frr/lib/zlog.c:245,1
    - Dst: mach_port_deallocate
      Src: /src/frr/lib/zlog.c:246,1
    - Dst: mach_task_self
      Src: /src/frr/lib/zlog.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 253
    functionName: zlog_gettid
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - pthread_getthreadid_np
    - mach_thread_self
    - thr_self
    - mach_port_deallocate
    - getthrid
    - _lwp_self
    - pthread_self
    - syscall
    - lwp_gettid
    - mach_task_self
    linkageType: ''
    returnType: intmax_t
    signature: intmax_t zlog_gettid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_tls_get
      Src: /src/frr/lib/zlog.c:330,1
    - Dst: zlog_tls_buffer_flush
      Src: /src/frr/lib/zlog.c:333,1
    - Dst: zlog_tls_free
      Src: /src/frr/lib/zlog.c:335,1
    - Dst: zlog_tls_set
      Src: /src/frr/lib/zlog.c:336,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:338,1
    - Dst: zlog_gettid
      Src: /src/frr/lib/zlog.c:338,1
    - Dst: unlinkat
      Src: /src/frr/lib/zlog.c:339,1
    - Dst: zlog_err
      Src: /src/frr/lib/zlog.c:340,1
    - Dst: strerror
      Src: /src/frr/lib/zlog.c:340,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 341
    functionName: zlog_tls_buffer_fini
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached:
    - zlog_gettid
    - zlog_tls_get
    - strerror
    - unlinkat
    - snprintfrr
    - zlog_tls_set
    - zlog_tls_buffer_flush
    - zlog_err
    - zlog_tls_free
    linkageType: ''
    returnType: void
    signature: void zlog_tls_buffer_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: zlog_tls_buffer_init
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zlog_tls_buffer_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 350
    functionName: zlog_tls_buffer_fini
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zlog_tls_buffer_fini(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/frr/lib/zlog.c:360,1
    - Dst: getpid
      Src: /src/frr/lib/zlog.c:362,1
    - Dst: zlog_gettid
      Src: /src/frr/lib/zlog.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - msg
    - pid
    - tid
    argTypes:
    - struct zlog_msg*
    - intmax_t*
    - intmax_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 369
    functionName: zlog_msg_pid
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 3
    functionsReached:
    - getpid
    - zlog_gettid
    linkageType: ''
    returnType: void
    signature: void zlog_msg_pid(struct zlog_msg *msg, intmax_t *pid, intmax_t *tid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/frr/lib/zlog.c:378,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 380
    functionName: zlog_tls_free
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 1
    functionsReached:
    - XFREE
    - munmap
    linkageType: ''
    returnType: void
    signature: void zlog_tls_free(void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_tls_get
      Src: /src/frr/lib/zlog.c:385,1
    - Dst: rcu_read_lock
      Src: /src/frr/lib/zlog.c:392,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/zlog.c:393,1
    - Dst: struct zlog_target*::logfn
      Src: /src/frr/lib/zlog.c:397,1
    - Dst: rcu_read_unlock
      Src: /src/frr/lib/zlog.c:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 403
    functionName: zlog_tls_buffer_flush
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached:
    - zlog_tls_get
    - rcu_read_unlock
    - frr_each_safe
    - struct zlog_target*::logfn
    - rcu_read_lock
    linkageType: ''
    returnType: void
    signature: void zlog_tls_buffer_flush(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/frr/lib/zlog.c:417,1
    - Dst: va_copy
      Src: /src/frr/lib/zlog.c:418,1
    - Dst: rcu_read_lock
      Src: /src/frr/lib/zlog.c:422,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/zlog.c:423,1
    - Dst: struct zlog_target*::logfn
      Src: /src/frr/lib/zlog.c:429,1
    - Dst: rcu_read_unlock
      Src: /src/frr/lib/zlog.c:431,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.c:433,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog.c:435,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - xref
    - prio
    - fmt
    - ap
    argTypes:
    - struct xref_logmsg*
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 436
    functionName: vzlog_notls
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - va_copy
    - clock_gettime
    - va_end
    - rcu_read_unlock
    - frr_each_safe
    - XFREE
    - struct zlog_target*::logfn
    - rcu_read_lock
    linkageType: ''
    returnType: void
    signature: "void vzlog_notls(const struct xref_logmsg *xref, int prio,\n\t\t\tconst
      char *fmt, va_list ap)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rcu_read_lock
      Src: /src/frr/lib/zlog.c:448,1
    - Dst: frr_each
      Src: /src/frr/lib/zlog.c:449,1
    - Dst: rcu_read_unlock
      Src: /src/frr/lib/zlog.c:455,1
    - Dst: array_size
      Src: /src/frr/lib/zlog.c:462,1
    - Dst: memset
      Src: /src/frr/lib/zlog.c:465,1
    - Dst: clock_gettime
      Src: /src/frr/lib/zlog.c:466,1
    - Dst: va_copy
      Src: /src/frr/lib/zlog.c:467,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog.c:480,1
    - Dst: zlog_tls_buffer_flush
      Src: /src/frr/lib/zlog.c:500,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.c:502,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog.c:504,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 5
    argNames:
    - zlog_tls
    - xref
    - prio
    - fmt
    - ap
    argTypes:
    - struct zlog_tls*
    - struct xref_logmsg*
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 505
    functionName: vzlog_tls
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - va_copy
    - memset
    - frr_each
    - zlog_msg_text
    - clock_gettime
    - zlog_tls_buffer_flush
    - va_end
    - rcu_read_unlock
    - array_size
    - XFREE
    - rcu_read_lock
    linkageType: ''
    returnType: void
    signature: "void vzlog_tls(struct zlog_tls *zlog_tls, const struct xref_logmsg
      *xref,\n\t\t      int prio, const char *fmt, va_list ap)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/frr/lib/zlog.c:509,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:513,1
    - Dst: zlog_gettid
      Src: /src/frr/lib/zlog.c:514,1
    - Dst: unw_getcontext
      Src: /src/frr/lib/zlog.c:524,1
    - Dst: unw_init_local
      Src: /src/frr/lib/zlog.c:526,1
    - Dst: unw_step
      Src: /src/frr/lib/zlog.c:527,1
    - Dst: unw_get_reg
      Src: /src/frr/lib/zlog.c:531,1
    - Dst: unw_get_reg
      Src: /src/frr/lib/zlog.c:532,1
    - Dst: unw_is_signal_frame
      Src: /src/frr/lib/zlog.c:534,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:535,1
    - Dst: unw_get_proc_name
      Src: /src/frr/lib/zlog.c:537,1
    - Dst: strcmp
      Src: /src/frr/lib/zlog.c:538,1
    - Dst: strcmp
      Src: /src/frr/lib/zlog.c:540,1
    - Dst: snprintf
      Src: /src/frr/lib/zlog.c:543,1
    - Dst: dladdr
      Src: /src/frr/lib/zlog.c:549,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:550,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:555,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:559,1
    - Dst: backtrace
      Src: /src/frr/lib/zlog.c:568,1
    - Dst: array_size
      Src: /src/frr/lib/zlog.c:568,1
    - Dst: backtrace_symbols
      Src: /src/frr/lib/zlog.c:572,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:578,1
    - Dst: free
      Src: /src/frr/lib/zlog.c:580,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:583,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 2
    argNames:
    - xref
    - prio
    argTypes:
    - struct xref_logmsg*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 586
    functionName: zlog_backtrace_msg
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - zlog
    - zlog_gettid
    - snprintf
    - unw_get_proc_name
    - unw_is_signal_frame
    - strcmp
    - backtrace
    - free
    - unw_getcontext
    - unw_get_reg
    - dladdr
    - pthread_getspecific
    - unw_step
    - unw_init_local
    - array_size
    - backtrace_symbols
    linkageType: ''
    returnType: void
    signature: void zlog_backtrace_msg(const struct xref_logmsg *xref, int prio)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_tls_get
      Src: /src/frr/lib/zlog.c:591,1
    - Dst: va_copy
      Src: /src/frr/lib/zlog.c:595,1
    - Dst: vasprintfrr
      Src: /src/frr/lib/zlog.c:596,1
    - Dst: frrtracelog
      Src: /src/frr/lib/zlog.c:600,1
    - Dst: frrtracelog
      Src: /src/frr/lib/zlog.c:603,1
    - Dst: frrtracelog
      Src: /src/frr/lib/zlog.c:606,1
    - Dst: frrtracelog
      Src: /src/frr/lib/zlog.c:609,1
    - Dst: frrtracelog
      Src: /src/frr/lib/zlog.c:613,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.c:617,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog.c:618,1
    - Dst: vzlog_tls
      Src: /src/frr/lib/zlog.c:622,1
    - Dst: vzlog_notls
      Src: /src/frr/lib/zlog.c:624,1
    - Dst: container_of
      Src: /src/frr/lib/zlog.c:629,1
    - Dst: zlog_backtrace_msg
      Src: /src/frr/lib/zlog.c:632,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - xref
    - prio
    - fmt
    - ap
    argTypes:
    - struct xref_logmsg*
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 588
    functionDepth: 3
    functionLinenumber: 588
    functionLinenumberEnd: 634
    functionName: vzlogx
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - va_copy
    - vasprintfrr
    - zlog_tls_get
    - frrtracelog
    - container_of
    - va_end
    - XFREE
    - vzlog_tls
    - zlog_backtrace_msg
    - vzlog_notls
    linkageType: ''
    returnType: void
    signature: "void vzlogx(const struct xref_logmsg *xref, int prio,\n\t    const
      char *fmt, va_list ap)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/frr/lib/zlog.c:642,1
    - Dst: frr_each
      Src: /src/frr/lib/zlog.c:646,1
    - Dst: struct zlog_target*::logfn_sigsafe
      Src: /src/frr/lib/zlog.c:652,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - text
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 659
    functionName: zlog_sigsafe
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - frr_each
    - struct zlog_target*::logfn_sigsafe
    - memchr
    linkageType: ''
    returnType: void
    signature: void zlog_sigsafe(const char *text, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/frr/lib/zlog.c:667,1
    - Dst: va_start
      Src: /src/frr/lib/zlog.c:673,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:677,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.c:682,1
    - Dst: zlog
      Src: /src/frr/lib/zlog.c:684,1
    - Dst: abort
      Src: /src/frr/lib/zlog.c:689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - xref
    - extra
    argTypes:
    - struct xref_assert*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 661
    functionDepth: 1
    functionLinenumber: 661
    functionLinenumberEnd: 690
    functionName: _zlog_assert_failed
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - abort
    - va_end
    - zlog
    - va_start
    linkageType: ''
    returnType: void
    signature: void _zlog_assert_failed(const struct xref_assert *xref, const char
      *extra, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct zlog_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 695
    functionName: zlog_msg_prio
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zlog_msg_prio(struct zlog_msg *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct zlog_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 700
    functionName: zlog_msg_xref
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct xref_logmsg
    signature: struct xref_logmsg *zlog_msg_xref(struct zlog_msg *msg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog.c:714,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog.c:715,1
    - Dst: bputch
      Src: /src/frr/lib/zlog.c:718,1
    - Dst: bputs
      Src: /src/frr/lib/zlog.c:719,1
    - Dst: bputch
      Src: /src/frr/lib/zlog.c:720,1
    - Dst: bprintfrr
      Src: /src/frr/lib/zlog.c:723,1
    - Dst: bputch
      Src: /src/frr/lib/zlog.c:725,1
    - Dst: assert
      Src: /src/frr/lib/zlog.c:728,1
    - Dst: array_size
      Src: /src/frr/lib/zlog.c:731,1
    - Dst: va_copy
      Src: /src/frr/lib/zlog.c:734,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/zlog.c:738,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.c:740,1
    - Dst: bputch
      Src: /src/frr/lib/zlog.c:743,1
    - Dst: XMALLOC
      Src: /src/frr/lib/zlog.c:748,1
    - Dst: memcpy
      Src: /src/frr/lib/zlog.c:750,1
    - Dst: va_copy
      Src: /src/frr/lib/zlog.c:757,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/zlog.c:761,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.c:763,1
    - Dst: bputch
      Src: /src/frr/lib/zlog.c:765,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - msg
    - textlen
    argTypes:
    - struct zlog_msg*
    - size_t*
    assertStmts:
    - condition: (hdrlen < msg->stackbufsz)
      pos:
        line_end: 727
        line_start: 727
        source_file: /src/frr/lib/zlog.c
    constantsTouched: []
    func_position:
      end: 773
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 773
    functionName: zlog_msg_text
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 4
    functionsReached:
    - va_copy
    - bprintfrr
    - bputch
    - bputs
    - XMALLOC
    - vbprintfrr
    - va_end
    - atomic_load_explicit
    - array_size
    - memcpy
    - assert
    linkageType: ''
    returnType: char
    signature: char *zlog_msg_text(struct zlog_msg *msg, size_t *textlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog.c:779,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - msg
    - hdrlen
    - n_argpos
    - argpos
    argTypes:
    - struct zlog_msg*
    - size_t*
    - size_t*
    - struct fmt_outpos**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 787
    functionName: zlog_msg_args
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached:
    - zlog_msg_text
    linkageType: ''
    returnType: void
    signature: "void zlog_msg_args(struct zlog_msg *msg, size_t *hdrlen, size_t *n_argpos,\n\t\t
      \  const struct fmt_outpos **argpos)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: gmtime_r
      Src: /src/frr/lib/zlog.c:805,1
    - Dst: localtime_r
      Src: /src/frr/lib/zlog.c:807,1
    - Dst: strftime
      Src: /src/frr/lib/zlog.c:809,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:816,1
    - Dst: labs
      Src: /src/frr/lib/zlog.c:819,1
    - Dst: strlen
      Src: /src/frr/lib/zlog.c:821,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:822,1
    - Dst: strlen
      Src: /src/frr/lib/zlog.c:832,1
    - Dst: strlen
      Src: /src/frr/lib/zlog.c:833,1
    - Dst: memset
      Src: /src/frr/lib/zlog.c:840,1
    - Dst: strlen
      Src: /src/frr/lib/zlog.c:860,1
    - Dst: memset
      Src: /src/frr/lib/zlog.c:866,1
    - Dst: memcpy
      Src: /src/frr/lib/zlog.c:871,1
    - Dst: memcpy
      Src: /src/frr/lib/zlog.c:873,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 56
    argCount: 3
    argNames:
    - msg
    - out
    - flags
    argTypes:
    - struct zlog_msg*
    - struct fbuf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 877
    functionName: zlog_msg_ts
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached:
    - strlen
    - memset
    - gmtime_r
    - labs
    - localtime_r
    - snprintfrr
    - strftime
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: size_t zlog_msg_ts(struct zlog_msg *msg, struct fbuf *out, uint32_t
      flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gmtime_r
      Src: /src/frr/lib/zlog.c:895,1
    - Dst: localtime_r
      Src: /src/frr/lib/zlog.c:897,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:899,1
    - Dst: bputs
      Src: /src/frr/lib/zlog.c:905,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - msg
    - out
    - flags
    argTypes:
    - struct zlog_msg*
    - struct fbuf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 906
    functionName: zlog_msg_ts_3164
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 1
    functionsReached:
    - localtime_r
    - snprintfrr
    - bputs
    - gmtime_r
    linkageType: ''
    returnType: size_t
    signature: size_t zlog_msg_ts_3164(struct zlog_msg *msg, struct fbuf *out, uint32_t
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/zlog.c:910,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - msg
    - ts
    argTypes:
    - struct zlog_msg*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 911
    functionName: zlog_msg_tsraw
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void zlog_msg_tsraw(struct zlog_msg *msg, struct timespec *ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/zlog.c:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 916
    functionName: zlog_set_prefix_ec
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 1
    functionsReached:
    - atomic_store_explicit
    linkageType: ''
    returnType: void
    signature: void zlog_set_prefix_ec(bool enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 921
    functionName: zlog_get_prefix_ec
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 1
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: bool
    signature: bool zlog_get_prefix_ec(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/zlog.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 923
    functionDepth: 1
    functionLinenumber: 923
    functionLinenumberEnd: 926
    functionName: zlog_set_prefix_xid
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 1
    functionsReached:
    - atomic_store_explicit
    linkageType: ''
    returnType: void
    signature: void zlog_set_prefix_xid(bool enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 931
    functionName: zlog_get_prefix_xid
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 1
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: bool
    signature: bool zlog_get_prefix_xid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/zlog.c:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - mt
    - oldzt
    - size
    argTypes:
    - struct memtype*
    - struct zlog_target*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 948
    functionName: zlog_target_clone
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct zlog_target
    signature: "struct zlog_target *zlog_target_clone(struct memtype *mt,\n\t\t\t\t
      \     struct zlog_target *oldzt, size_t size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_targets_add_tail
      Src: /src/frr/lib/zlog.c:954,1
    - Dst: zlog_targets_del
      Src: /src/frr/lib/zlog.c:956,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - oldzt
    - newzt
    argTypes:
    - struct zlog_target*
    - struct zlog_target*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 958
    functionName: zlog_target_replace
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 2
    functionsReached:
    - zlog_targets_add_tail
    - zlog_targets_del
    linkageType: ''
    returnType: struct zlog_target
    signature: "struct zlog_target *zlog_target_replace(struct zlog_target *oldzt,\n\t\t\t\t\tstruct
      zlog_target *newzt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - set_p
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 967
    functionName: zlog_set_immediate
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zlog_set_immediate(bool set_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/zlog.c:978,1
    - Dst: hook_call
      Src: /src/frr/lib/zlog.c:980,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - prefix
    - prio_min
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 981
    functionName: zlog_aux_init
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 15
    functionsReached:
    - strlcpy
    - hook_call
    linkageType: ''
    returnType: void
    signature: void zlog_aux_init(const char *prefix, int prio_min)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:991,1
    - Dst: getpid
      Src: /src/frr/lib/zlog.c:992,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:994,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:997,1
    - Dst: getpid
      Src: /src/frr/lib/zlog.c:998,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog.c:1000,1
    - Dst: mkdir
      Src: /src/frr/lib/zlog.c:1004,1
    - Dst: zlog_err
      Src: /src/frr/lib/zlog.c:1006,1
    - Dst: strerror
      Src: /src/frr/lib/zlog.c:1007,1
    - Dst: chown
      Src: /src/frr/lib/zlog.c:1011,1
    - Dst: mkdir
      Src: /src/frr/lib/zlog.c:1013,1
    - Dst: zlog_err
      Src: /src/frr/lib/zlog.c:1014,1
    - Dst: strerror
      Src: /src/frr/lib/zlog.c:1015,1
    - Dst: open
      Src: /src/frr/lib/zlog.c:1020,1
    - Dst: open
      Src: /src/frr/lib/zlog.c:1023,1
    - Dst: zlog_err
      Src: /src/frr/lib/zlog.c:1027,1
    - Dst: strerror
      Src: /src/frr/lib/zlog.c:1028,1
    - Dst: fchownat
      Src: /src/frr/lib/zlog.c:1033,1
    - Dst: chown
      Src: /src/frr/lib/zlog.c:1035,1
    - Dst: hook_call
      Src: /src/frr/lib/zlog.c:1038,1
    - Dst: zlog_err
      Src: /src/frr/lib/zlog.c:1042,1
    - Dst: hook_call
      Src: /src/frr/lib/zlog.c:1043,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 5
    argNames:
    - progname
    - protoname
    - instance
    - uid
    - gid
    argTypes:
    - char*
    - char*
    - unsigned short
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 983
    functionDepth: 1
    functionLinenumber: 983
    functionLinenumberEnd: 1044
    functionName: zlog_init
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - chown
    - open
    - hook_call
    - mkdir
    - getpid
    - strerror
    - snprintfrr
    - zlog_err
    - fchownat
    linkageType: ''
    returnType: void
    signature: "void zlog_init(const char *progname, const char *protoname,\n\t       unsigned
      short instance, uid_t uid, gid_t gid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/lib/zlog.c:1048,1
    - Dst: close
      Src: /src/frr/lib/zlog.c:1051,1
    - Dst: rmdir
      Src: /src/frr/lib/zlog.c:1054,1
    - Dst: zlog_err
      Src: /src/frr/lib/zlog.c:1055,1
    - Dst: strerror
      Src: /src/frr/lib/zlog.c:1056,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1058
    functionName: zlog_fini
    functionSourceFile: /src/frr/lib/zlog.c
    functionUses: 0
    functionsReached:
    - hook_call
    - strerror
    - rmdir
    - zlog_err
    - close
    linkageType: ''
    returnType: void
    signature: void zlog_fini(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:36,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound_cli.c:36,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_cli.c:37,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - error
    - errmsg
    argTypes:
    - struct vty*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: vty_show_nb_errors
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - nb_err_name
    - strlen
    - vty_out
    linkageType: ''
    returnType: void
    signature: void vty_show_nb_errors(struct vty *vty, int error, const char *errmsg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_commit
      Src: /src/frr/lib/northbound_cli.c:49,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_cli.c:54,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:55,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:60,1
    - Dst: vty_show_nb_errors
      Src: /src/frr/lib/northbound_cli.c:61,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:63,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound_cli.c:68,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 73
    functionName: nb_cli_classic_commit
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - strlen
    - nb_candidate_commit
    - vty_out
    - vty_show_nb_errors
    - nb_config_replace
    linkageType: ''
    returnType: int
    signature: int nb_cli_classic_commit(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/northbound_cli.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: nb_cli_pending_commit_clear
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nb_cli_pending_commit_clear(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_classic_commit
      Src: /src/frr/lib/northbound_cli.c:88,1
    - Dst: nb_cli_pending_commit_clear
      Src: /src/frr/lib/northbound_cli.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 83
    functionDepth: 4
    functionLinenumber: 83
    functionLinenumberEnd: 93
    functionName: nb_cli_pending_commit_check
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 2
    functionsReached:
    - nb_cli_classic_commit
    - nb_cli_pending_commit_clear
    linkageType: ''
    returnType: int
    signature: int nb_cli_pending_commit_check(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound_cli.c:101,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_cli.c:103,1
    - Dst: XREALLOC
      Src: /src/frr/lib/northbound_cli.c:107,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound_cli.c:110,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound_cli.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 118
    functionName: nb_cli_schedule_command
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - strlcat
    - strlen
    - XREALLOC
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int nb_cli_schedule_command(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:127,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_cli.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - vty
    - xpath
    - operation
    - value
    argTypes:
    - struct vty*
    - char*
    - enum nb_operation
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 137
    functionName: nb_cli_enqueue_change
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 9
    functionsReached:
    - strlcpy
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void nb_cli_enqueue_change(struct vty *vty, const char *xpath,\n\t\t\t
      \  enum nb_operation operation, const char *value)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_edit_config_changes
      Src: /src/frr/lib/northbound_cli.c:148,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:158,1
    - Dst: frr_get_cli_mode
      Src: /src/frr/lib/northbound_cli.c:170,1
    - Dst: nb_cli_pending_commit_check
      Src: /src/frr/lib/northbound_cli.c:173,1
    - Dst: nb_cli_schedule_command
      Src: /src/frr/lib/northbound_cli.c:175,1
    - Dst: assert
      Src: /src/frr/lib/northbound_cli.c:176,1
    - Dst: nb_cli_classic_commit
      Src: /src/frr/lib/northbound_cli.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - vty
    - xpath_base
    - clear_pending
    argTypes:
    - struct vty*
    - char*
    - bool
    assertStmts:
    - condition: (!vty->pending_commit)
      pos:
        line_end: 175
        line_start: 175
        source_file: /src/frr/lib/northbound_cli.c
    constantsTouched: []
    func_position:
      end: 181
      start: 139
    functionDepth: 5
    functionLinenumber: 139
    functionLinenumberEnd: 181
    functionName: nb_cli_apply_changes_internal
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - nb_cli_schedule_command
    - nb_candidate_edit_config_changes
    - nb_cli_pending_commit_check
    - nb_cli_classic_commit
    - frr_get_cli_mode
    - assert
    linkageType: ''
    returnType: int
    signature: "int nb_cli_apply_changes_internal(struct vty *vty,\n\t\t\t\t\t const
      char *xpath_base,\n\t\t\t\t\t bool clear_pending)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/northbound_cli.c:193,1
    - Dst: vsnprintf
      Src: /src/frr/lib/northbound_cli.c:194,1
    - Dst: va_end
      Src: /src/frr/lib/northbound_cli.c:195,1
    - Dst: vty_mgmt_should_process_cli_apply_changes
      Src: /src/frr/lib/northbound_cli.c:198,1
    - Dst: vty_needs_implicit_commit
      Src: /src/frr/lib/northbound_cli.c:204,1
    - Dst: vty_mgmt_send_config_data
      Src: /src/frr/lib/northbound_cli.c:205,1
    - Dst: nb_cli_apply_changes_internal
      Src: /src/frr/lib/northbound_cli.c:211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - vty
    - xpath_base_fmt
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 183
    functionDepth: 6
    functionLinenumber: 183
    functionLinenumberEnd: 212
    functionName: nb_cli_apply_changes
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 9
    functionsReached:
    - vsnprintf
    - vty_mgmt_send_config_data
    - va_start
    - va_end
    - vty_mgmt_should_process_cli_apply_changes
    - nb_cli_apply_changes_internal
    - vty_needs_implicit_commit
    linkageType: ''
    returnType: int
    signature: int nb_cli_apply_changes(struct vty *vty, const char *xpath_base_fmt,
      ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/northbound_cli.c:225,1
    - Dst: vsnprintf
      Src: /src/frr/lib/northbound_cli.c:226,1
    - Dst: va_end
      Src: /src/frr/lib/northbound_cli.c:227,1
    - Dst: vty_mgmt_should_process_cli_apply_changes
      Src: /src/frr/lib/northbound_cli.c:230,1
    - Dst: vty_needs_implicit_commit
      Src: /src/frr/lib/northbound_cli.c:240,1
    - Dst: vty_mgmt_send_config_data
      Src: /src/frr/lib/northbound_cli.c:241,1
    - Dst: nb_cli_apply_changes_internal
      Src: /src/frr/lib/northbound_cli.c:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - vty
    - xpath_base_fmt
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 214
    functionDepth: 6
    functionLinenumber: 214
    functionLinenumberEnd: 248
    functionName: nb_cli_apply_changes_clear_pending
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - vty_mgmt_send_config_data
    - va_start
    - va_end
    - vty_mgmt_should_process_cli_apply_changes
    - nb_cli_apply_changes_internal
    - vty_needs_implicit_commit
    linkageType: ''
    returnType: int
    signature: "int nb_cli_apply_changes_clear_pending(struct vty *vty,\n\t\t\t\t
      \      const char *xpath_base_fmt, ...)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_cli.c:257,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_cli.c:259,1
    - Dst: nb_callback_rpc
      Src: /src/frr/lib/northbound_cli.c:264,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_cli.c:270,1
    - Dst: vty_show_nb_errors
      Src: /src/frr/lib/northbound_cli.c:271,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - vty
    - xpath
    - input
    - output
    argTypes:
    - struct vty*
    - char*
    - struct list*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 250
    functionDepth: 3
    functionLinenumber: 250
    functionLinenumberEnd: 274
    functionName: nb_cli_rpc
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - strlen
    - flog_warn
    - vty_show_nb_errors
    - nb_callback_rpc
    - nb_node_find
    linkageType: ''
    returnType: int
    signature: "int nb_cli_rpc(struct vty *vty, const char *xpath, struct list *input,\n\t
      \      struct list *output)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/lib/northbound_cli.c:278,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_cli.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 281
    functionName: nb_cli_confirmed_commit_clean
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 1
    functionsReached:
    - event_cancel
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void nb_cli_confirmed_commit_clean(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_commit
      Src: /src/frr/lib/northbound_cli.c:293,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:298,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_cli.c:302,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:303,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:305,1
    - Dst: vty_show_nb_errors
      Src: /src/frr/lib/northbound_cli.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 311
    functionName: nb_cli_confirmed_commit_rollback
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 1
    functionsReached:
    - strlen
    - nb_candidate_commit
    - vty_out
    - vty_show_nb_errors
    linkageType: ''
    returnType: int
    signature: int nb_cli_confirmed_commit_rollback(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/northbound_cli.c:315,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:318,1
    - Dst: nb_cli_confirmed_commit_rollback
      Src: /src/frr/lib/northbound_cli.c:321,1
    - Dst: nb_cli_confirmed_commit_clean
      Src: /src/frr/lib/northbound_cli.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 313
    functionDepth: 4
    functionLinenumber: 313
    functionLinenumberEnd: 323
    functionName: nb_cli_confirmed_commit_timeout
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - nb_cli_confirmed_commit_clean
    - nb_cli_confirmed_commit_rollback
    - vty_out
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nb_cli_confirmed_commit_timeout(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:337,1
    - Dst: event_cancel
      Src: /src/frr/lib/northbound_cli.c:341,1
    - Dst: event_add_timer
      Src: /src/frr/lib/northbound_cli.c:342,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:347,1
    - Dst: nb_cli_confirmed_commit_clean
      Src: /src/frr/lib/northbound_cli.c:348,1
    - Dst: nb_candidate_needs_update
      Src: /src/frr/lib/northbound_cli.c:354,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:355,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:357,1
    - Dst: nb_config_dup
      Src: /src/frr/lib/northbound_cli.c:364,1
    - Dst: event_add_timer
      Src: /src/frr/lib/northbound_cli.c:367,1
    - Dst: nb_candidate_commit
      Src: /src/frr/lib/northbound_cli.c:374,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound_cli.c:380,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:382,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_cli.c:386,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:387,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:390,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:393,1
    - Dst: vty_show_nb_errors
      Src: /src/frr/lib/northbound_cli.c:395,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 4
    argNames:
    - vty
    - force
    - confirmed_timeout
    - comment
    argTypes:
    - struct vty*
    - bool
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 398
    functionName: nb_cli_commit
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - nb_cli_confirmed_commit_clean
    - strlen
    - nb_candidate_commit
    - vty_out
    - event_cancel
    - vty_show_nb_errors
    - nb_config_replace
    - nb_config_dup
    - nb_candidate_needs_update
    - event_add_timer
    linkageType: ''
    returnType: int
    signature: "int nb_cli_commit(struct vty *vty, bool force,\n\t\t\t unsigned int
      confirmed_timeout, char *comment)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_new
      Src: /src/frr/lib/northbound_cli.c:414,1
    - Dst: vty_read_config
      Src: /src/frr/lib/northbound_cli.c:415,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:416,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:417,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_cli.c:419,1
    - Dst: lyd_parse_data_path
      Src: /src/frr/lib/northbound_cli.c:428,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_cli.c:432,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:434,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:435,1
    - Dst: yang_print_errors
      Src: /src/frr/lib/northbound_cli.c:436,1
    - Dst: yang_translate_dnode
      Src: /src/frr/lib/northbound_cli.c:441,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:444,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound_cli.c:445,1
    - Dst: nb_config_new
      Src: /src/frr/lib/northbound_cli.c:448,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound_cli.c:453,1
    - Dst: nb_config_merge
      Src: /src/frr/lib/northbound_cli.c:454,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:456,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:458,1
    - Dst: yang_print_errors
      Src: /src/frr/lib/northbound_cli.c:459,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 5
    argNames:
    - vty
    - format
    - translator
    - path
    - replace
    argTypes:
    - struct vty*
    - enum nb_cfg_format
    - struct yang_translator*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 400
    functionDepth: 4
    functionLinenumber: 400
    functionLinenumberEnd: 464
    functionName: nb_cli_candidate_load_file
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - flog_warn
    - yang_dnode_free
    - nb_config_replace
    - yang_translate_dnode
    - nb_config_new
    - vty_read_config
    - nb_config_merge
    - yang_print_errors
    - lyd_parse_data_path
    - nb_config_free
    linkageType: ''
    returnType: int
    signature: "int nb_cli_candidate_load_file(struct vty *vty,\n\t\t\t\t      enum
      nb_cfg_format format,\n\t\t\t\t      struct yang_translator *translator,\n\t\t\t\t
      \     const char *path, bool replace)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_db_transaction_load
      Src: /src/frr/lib/northbound_cli.c:473,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:475,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound_cli.c:481,1
    - Dst: nb_config_merge
      Src: /src/frr/lib/northbound_cli.c:482,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:484,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:486,1
    - Dst: yang_print_errors
      Src: /src/frr/lib/northbound_cli.c:487,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - transaction_id
    - replace
    argTypes:
    - struct vty*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 466
    functionDepth: 2
    functionLinenumber: 466
    functionLinenumberEnd: 492
    functionName: nb_cli_candidate_load_transaction
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - nb_config_merge
    - yang_print_errors
    - nb_config_replace
    - nb_db_transaction_load
    linkageType: ''
    returnType: int
    signature: "int nb_cli_candidate_load_transaction(struct vty *vty,\n\t\t\t\t\t
      \    uint32_t transaction_id,\n\t\t\t\t\t     bool replace)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_validate_all
      Src: /src/frr/lib/northbound_cli.c:508,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - config
    - with_defaults
    argTypes:
    - struct nb_config*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 510
    functionName: nb_cli_show_config_prepare
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - lyd_validate_all
    linkageType: ''
    returnType: void
    signature: void nb_cli_show_config_prepare(struct nb_config *config, bool with_defaults)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct nb_node*::cbs::cli_cmp
      Src: /src/frr/lib/northbound_cli.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnode1
    - dnode2
    argTypes:
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 518
    functionName: lyd_node_cmp
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - struct nb_node*::cbs::cli_cmp
    linkageType: ''
    returnType: int
    signature: "int lyd_node_cmp(const struct lyd_node **dnode1,\n\t\t\tconst struct
      lyd_node **dnode2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_sort
      Src: /src/frr/lib/northbound_cli.c:538,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_cli.c:542,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/northbound_cli.c:543,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_cli.c:546,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_cli.c:561,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/northbound_cli.c:565,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - root
    - with_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 520
    functionDepth: 3
    functionLinenumber: 520
    functionLinenumberEnd: 566
    functionName: show_dnode_children_cmds
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - list_delete
    - ALL_LIST_ELEMENTS_RO
    - listnode_add
    - nb_cli_show_dnode_cmds
    - list_sort
    linkageType: ''
    returnType: void
    signature: "void show_dnode_children_cmds(struct vty *vty,\n\t\t\t\t     const
      struct lyd_node *root,\n\t\t\t\t     bool with_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_sort
      Src: /src/frr/lib/northbound_cli.c:538,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_cli.c:542,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/northbound_cli.c:543,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_cli.c:546,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_cli.c:561,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 530
    functionDepth: 3
    functionLinenumber: 530
    functionLinenumberEnd: 563
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 1
    functionsReached:
    - list_delete
    - ALL_LIST_ELEMENTS_RO
    - listnode_add
    - nb_cli_show_dnode_cmds
    - list_sort
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (lyd_child(root), child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ttable_add_row
      Src: /src/frr/lib/northbound_cli.c:1254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - arg
    - transaction_id
    - client_name
    - date
    - comment
    argTypes:
    - void*
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1248
    functionDepth: 1
    functionLinenumber: 1248
    functionLinenumberEnd: 1256
    functionName: nb_cli_show_transactions_cb
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void nb_cli_show_transactions_cb(void *arg, int transaction_id,\n\t\t\t\t\tconst
      char *client_name,\n\t\t\t\t\tconst char *date, const char *comment)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ttable_new
      Src: /src/frr/lib/northbound_cli.c:1263,1
    - Dst: ttable_add_row
      Src: /src/frr/lib/northbound_cli.c:1264,1
    - Dst: ttable_restyle
      Src: /src/frr/lib/northbound_cli.c:1267,1
    - Dst: ttable_rowseps
      Src: /src/frr/lib/northbound_cli.c:1268,1
    - Dst: nb_db_transactions_iterate
      Src: /src/frr/lib/northbound_cli.c:1271,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1273,1
    - Dst: ttable_dump
      Src: /src/frr/lib/northbound_cli.c:1282,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1283,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_cli.c:1284,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1286,1
    - Dst: ttable_del
      Src: /src/frr/lib/northbound_cli.c:1288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1258
    functionDepth: 2
    functionLinenumber: 1258
    functionLinenumberEnd: 1291
    functionName: nb_cli_show_transactions
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - ttable_del
    - vty_out
    - ttable_new
    - ttable_restyle
    - ttable_rowseps
    - ttable_dump
    - nb_db_transactions_iterate
    - XFREE
    - ttable_add_row
    linkageType: ''
    returnType: int
    signature: int nb_cli_show_transactions(struct vty *vty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_translate_xpath
      Src: /src/frr/lib/northbound_cli.c:1388,1
    - Dst: lyd_new_path
      Src: /src/frr/lib/northbound_cli.c:1405,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_cli.c:1408,1
    - Dst: ly_errmsg
      Src: /src/frr/lib/northbound_cli.c:1409,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_cli.c:1414,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_cli.c:1418,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - snode
    - translator
    - data
    - arg
    argTypes:
    - struct lysc_node*
    - struct yang_translator*
    - struct yang_data*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1378
    functionDepth: 1
    functionLinenumber: 1378
    functionLinenumberEnd: 1420
    functionName: nb_cli_oper_data_cb
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - ly_errmsg
    - flog_warn
    - yang_translate_xpath
    - lyd_new_path
    - yang_data_free
    linkageType: ''
    returnType: int
    signature: "int nb_cli_oper_data_cb(const struct lysc_node *snode,\n\t\t\t       struct
      yang_translator *translator,\n\t\t\t       struct yang_data *data, void *arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_db_transaction_load
      Src: /src/frr/lib/northbound_cli.c:1690,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1692,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_cli.c:1697,1
    - Dst: nb_candidate_commit
      Src: /src/frr/lib/northbound_cli.c:1702,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_cli.c:1704,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1707,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_cli.c:1710,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1711,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1714,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1718,1
    - Dst: vty_show_nb_errors
      Src: /src/frr/lib/northbound_cli.c:1719,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - vty
    - transaction_id
    argTypes:
    - struct vty*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1681
    functionDepth: 3
    functionLinenumber: 1681
    functionLinenumberEnd: 1722
    functionName: nb_cli_rollback_configuration
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - strlen
    - nb_candidate_commit
    - vty_out
    - snprintf
    - vty_show_nb_errors
    - nb_config_free
    - nb_db_transaction_load
    linkageType: ''
    returnType: int
    signature: "int nb_cli_rollback_configuration(struct vty *vty,\n\t\t\t\t\t uint32_t
      transaction_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/northbound_cli.c:1760,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/lib/northbound_cli.c:1761,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_cli.c:1764,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/lib/northbound_cli.c:1765,1
    - Dst: hook_call
      Src: /src/frr/lib/northbound_cli.c:1768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1758
    functionDepth: 1
    functionLinenumber: 1758
    functionLinenumberEnd: 1769
    functionName: nb_debug_set_all
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - hook_call
    - DEBUG_CLEAR
    - array_size
    - DEBUG_FLAGS_SET
    linkageType: ''
    returnType: void
    signature: void nb_debug_set_all(uint32_t flags, bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/northbound_cli.c:1825,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_cli.c:1826,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_cli.c:1827,1
    - Dst: hook_call
      Src: /src/frr/lib/northbound_cli.c:1829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1823
    functionDepth: 2
    functionLinenumber: 1823
    functionLinenumberEnd: 1832
    functionName: nb_debug_config_write
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - array_size
    - vty_out
    - hook_call
    linkageType: ''
    returnType: int
    signature: int nb_debug_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1844,1
    - Dst: frr_get_cli_mode
      Src: /src/frr/lib/northbound_cli.c:1846,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1849,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1850,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1851,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1852,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1853,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1854,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1855,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1856,1
    - Dst: _install_element
      Src: /src/frr/lib/northbound_cli.c:1857,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - node
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1842
    functionDepth: 1
    functionLinenumber: 1842
    functionLinenumberEnd: 1858
    functionName: nb_cli_install_default
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - frr_get_cli_mode
    - _install_element
    linkageType: ''
    returnType: void
    signature: void nb_cli_install_default(int node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_iter
      Src: /src/frr/lib/northbound_cli.c:1868,1
    - Dst: vector_set
      Src: /src/frr/lib/northbound_cli.c:1869,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/northbound_cli.c:1869,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_cli.c:1871,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/frr/lib/northbound_cli.c:1873,1
    - Dst: vector_set
      Src: /src/frr/lib/northbound_cli.c:1875,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/northbound_cli.c:1876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1878
      start: 1861
    functionDepth: 1
    functionLinenumber: 1861
    functionLinenumberEnd: 1878
    functionName: yang_module_autocomplete
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - vector_set
    - RB_FOREACH
    - ly_ctx_get_module_iter
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void yang_module_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_cli.c:1885,1
    - Dst: vector_set
      Src: /src/frr/lib/northbound_cli.c:1886,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/northbound_cli.c:1886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1881
    functionDepth: 1
    functionLinenumber: 1881
    functionLinenumberEnd: 1887
    functionName: yang_translator_autocomplete
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - vector_set
    - RB_FOREACH
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void yang_translator_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_new
      Src: /src/frr/lib/northbound_cli.c:1900,1
    - Dst: debug_init
      Src: /src/frr/lib/northbound_cli.c:1902,1
    - Dst: install_node
      Src: /src/frr/lib/northbound_cli.c:1904,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1905,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1906,1
    - Dst: frr_get_cli_mode
      Src: /src/frr/lib/northbound_cli.c:1909,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1910,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1911,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1912,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1914,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1915,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1916,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1918,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1919,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1924,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1925,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1926,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1927,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1928,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1929,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_cli.c:1930,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/northbound_cli.c:1931,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1895
    functionDepth: 1
    functionLinenumber: 1895
    functionLinenumberEnd: 1932
    functionName: nb_cli_init
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - install_node
    - debug_init
    - nb_config_new
    - frr_get_cli_mode
    - install_element
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void nb_cli_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_cli.c:1936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1934
    functionDepth: 1
    functionLinenumber: 1934
    functionLinenumberEnd: 1937
    functionName: nb_cli_terminate
    functionSourceFile: /src/frr/lib/northbound_cli.c
    functionUses: 0
    functionsReached:
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void nb_cli_terminate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/privs.c:173,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:174,1
    - Dst: XCALLOC
      Src: /src/frr/lib/privs.c:178,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - zcaps
    - num
    argTypes:
    - zebra_capabilities_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 197
    functionName: zcaps2sys
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - fprintf
    - XCALLOC
    linkageType: ''
    returnType: pset_t
    signature: pset_t *zcaps2sys(zebra_capabilities_t *zcaps, int num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/privs.c:205,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:207,1
    - Dst: cap_set_flag
      Src: /src/frr/lib/privs.c:216,1
    - Dst: cap_set_proc
      Src: /src/frr/lib/privs.c:219,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - op
    argTypes:
    - zebra_privs_ops_t
    assertStmts:
    - condition: (zprivs_state.syscaps_p && zprivs_state.caps)
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/lib/privs.c
    constantsTouched: []
    func_position:
      end: 221
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 221
    functionName: zprivs_change_caps
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - cap_set_flag
    - exit
    - cap_set_proc
    - assert
    linkageType: ''
    returnType: int
    signature: int zprivs_change_caps(zebra_privs_ops_t op)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/privs.c:229,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:231,1
    - Dst: cap_get_flag
      Src: /src/frr/lib/privs.c:234,1
    - Dst: flog_err
      Src: /src/frr/lib/privs.c:237,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:240,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (zprivs_state.syscaps_p && zprivs_state.caps)
      pos:
        line_end: 228
        line_start: 228
        source_file: /src/frr/lib/privs.c
    constantsTouched: []
    func_position:
      end: 247
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 247
    functionName: zprivs_state_caps
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - exit
    - cap_get_flag
    - flog_err
    - safe_strerror
    - assert
    linkageType: ''
    returnType: zebra_privs_current_t
    signature: zebra_privs_current_t zprivs_state_caps(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/privs.c:254,1
    - Dst: XFREE
      Src: /src/frr/lib/privs.c:256,1
    - Dst: XFREE
      Src: /src/frr/lib/privs.c:261,1
    - Dst: XFREE
      Src: /src/frr/lib/privs.c:263,1
    - Dst: cap_free
      Src: /src/frr/lib/privs.c:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 270
    functionName: zprivs_state_free_caps
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - XFREE
    - cap_free
    linkageType: ''
    returnType: void
    signature: void zprivs_state_free_caps(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zprivs_state_free_caps
      Src: /src/frr/lib/privs.c:275,1
    - Dst: zcaps2sys
      Src: /src/frr/lib/privs.c:277,1
    - Dst: zcaps2sys
      Src: /src/frr/lib/privs.c:278,1
    - Dst: prctl
      Src: /src/frr/lib/privs.c:281,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:282,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:284,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:285,1
    - Dst: setreuid
      Src: /src/frr/lib/privs.c:293,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:294,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:296,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:297,1
    - Dst: cap_init
      Src: /src/frr/lib/privs.c:301,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:302,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:303,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:304,1
    - Dst: cap_clear
      Src: /src/frr/lib/privs.c:307,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:308,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:309,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:310,1
    - Dst: cap_set_flag
      Src: /src/frr/lib/privs.c:315,1
    - Dst: cap_set_flag
      Src: /src/frr/lib/privs.c:322,1
    - Dst: cap_set_proc
      Src: /src/frr/lib/privs.c:331,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:336,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:337,1
    - Dst: cap_get_proc
      Src: /src/frr/lib/privs.c:339,1
    - Dst: cap_to_text
      Src: /src/frr/lib/privs.c:341,1
    - Dst: cap_free
      Src: /src/frr/lib/privs.c:342,1
    - Dst: cap_to_text
      Src: /src/frr/lib/privs.c:345,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:346,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:348,1
    - Dst: cap_free
      Src: /src/frr/lib/privs.c:351,1
    - Dst: cap_free
      Src: /src/frr/lib/privs.c:353,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:355,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 1
    argNames:
    - zprivs
    argTypes:
    - struct zebra_privs_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 361
    functionName: zprivs_caps_init
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - exit
    - cap_init
    - setreuid
    - cap_set_proc
    - cap_free
    - cap_set_flag
    - fprintf
    - cap_to_text
    - safe_strerror
    - prctl
    - zcaps2sys
    - zprivs_state_free_caps
    - cap_get_proc
    - cap_clear
    linkageType: ''
    returnType: void
    signature: void zprivs_caps_init(struct zebra_privs_t *zprivs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cap_clear
      Src: /src/frr/lib/privs.c:367,1
    - Dst: cap_set_proc
      Src: /src/frr/lib/privs.c:372,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:373,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:374,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:375,1
    - Dst: zprivs_state_free_caps
      Src: /src/frr/lib/privs.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 379
    functionName: zprivs_caps_terminate
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - exit
    - cap_set_proc
    - fprintf
    - safe_strerror
    - cap_clear
    - zprivs_state_free_caps
    linkageType: ''
    returnType: void
    signature: void zprivs_caps_terminate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: seteuid
      Src: /src/frr/lib/privs.c:390,1
    - Dst: seteuid
      Src: /src/frr/lib/privs.c:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - zebra_privs_ops_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 395
    functionName: zprivs_change_uid
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - seteuid
    linkageType: ''
    returnType: int
    signature: int zprivs_change_uid(zebra_privs_ops_t op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/frr/lib/privs.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 401
    functionName: zprivs_state_uid
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - geteuid
    linkageType: ''
    returnType: zebra_privs_current_t
    signature: zebra_privs_current_t zprivs_state_uid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - op
    argTypes:
    - zebra_privs_ops_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: zprivs_change_null
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zprivs_change_null(zebra_privs_ops_t op)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 411
    functionName: zprivs_state_null
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: zebra_privs_current_t
    signature: zebra_privs_current_t zprivs_state_null(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setgrent
      Src: /src/frr/lib/privs.c:426,1
    - Dst: getgrent
      Src: /src/frr/lib/privs.c:427,1
    - Dst: strcmp
      Src: /src/frr/lib/privs.c:431,1
    - Dst: endgrent
      Src: /src/frr/lib/privs.c:438,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 4
    argNames:
    - user
    - group
    - groups
    - ngroups
    argTypes:
    - char*
    - gid_t
    - gid_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 443
    functionName: getgrouplist
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - strcmp
    - endgrent
    - setgrent
    - getgrent
    linkageType: ''
    returnType: int
    signature: "int getgrouplist(const char *user, gid_t group, gid_t *groups,\n\t\t\tint
      *ngroups)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/frr/lib/privs.c:459,1
    - Dst: STAILQ_FOREACH
      Src: /src/frr/lib/privs.c:461,1
    - Dst: pthread_equal
      Src: /src/frr/lib/privs.c:462,1
    - Dst: XCALLOC
      Src: /src/frr/lib/privs.c:470,1
    - Dst: STAILQ_INSERT_TAIL
      Src: /src/frr/lib/privs.c:473,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - privs
    argTypes:
    - struct zebra_privs_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 478
    functionName: get_privs_refs
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - STAILQ_INSERT_TAIL
    - XCALLOC
    - pthread_equal
    - pthread_self
    - STAILQ_FOREACH
    linkageType: ''
    returnType: struct zebra_privs_refs_t
    signature: struct zebra_privs_refs_t *get_privs_refs(struct zebra_privs_t *privs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/privs.c:496,1
    - Dst: get_privs_refs
      Src: /src/frr/lib/privs.c:498,1
    - Dst: struct zebra_privs_t*::change
      Src: /src/frr/lib/privs.c:502,1
    - Dst: zlog_err
      Src: /src/frr/lib/privs.c:503,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - privs
    - funcname
    argTypes:
    - struct zebra_privs_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 512
    functionName: _zprivs_raise
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - frr_with_mutex
    - get_privs_refs
    - zlog_err
    - struct zebra_privs_t*::change
    - safe_strerror
    linkageType: ''
    returnType: struct zebra_privs_t
    signature: "struct zebra_privs_t *_zprivs_raise(struct zebra_privs_t *privs,\n\t\t\t\t
      \   const char *funcname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/privs.c:528,1
    - Dst: get_privs_refs
      Src: /src/frr/lib/privs.c:529,1
    - Dst: change
      Src: /src/frr/lib/privs.c:533,1
    - Dst: zlog_err
      Src: /src/frr/lib/privs.c:534,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - privs
    argTypes:
    - struct zebra_privs_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 544
    functionName: _zprivs_lower
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 0
    functionsReached:
    - frr_with_mutex
    - get_privs_refs
    - zlog_err
    - safe_strerror
    - change
    linkageType: ''
    returnType: void
    signature: void _zprivs_lower(struct zebra_privs_t **privs)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:552,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:553,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/privs.c:556,1
    - Dst: STAILQ_INIT
      Src: /src/frr/lib/privs.c:559,1
    - Dst: getgrnam
      Src: /src/frr/lib/privs.c:570,1
    - Dst: getpwnam
      Src: /src/frr/lib/privs.c:585,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:587,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:590,1
    - Dst: getgrnam
      Src: /src/frr/lib/privs.c:600,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:601,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:604,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 1
    argNames:
    - zprivs
    argTypes:
    - struct zebra_privs_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 609
    functionName: zprivs_preinit
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 3
    functionsReached:
    - STAILQ_INIT
    - exit
    - getgrnam
    - pthread_mutex_init
    - fprintf
    - getpwnam
    linkageType: ''
    returnType: void
    signature: void zprivs_preinit(struct zebra_privs_t *zprivs)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/privs.c:627,1
    - Dst: getgrouplist
      Src: /src/frr/lib/privs.c:628,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:632,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:635,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:644,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:647,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:657,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:660,1
    - Dst: array_size
      Src: /src/frr/lib/privs.c:662,1
    - Dst: geteuid
      Src: /src/frr/lib/privs.c:667,1
    - Dst: setgroups
      Src: /src/frr/lib/privs.c:671,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:672,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:673,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:674,1
    - Dst: setregid
      Src: /src/frr/lib/privs.c:681,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:682,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:683,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:684,1
    - Dst: zprivs_caps_init
      Src: /src/frr/lib/privs.c:690,1
    - Dst: geteuid
      Src: /src/frr/lib/privs.c:711,1
    - Dst: setreuid
      Src: /src/frr/lib/privs.c:714,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:715,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:717,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:718,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 1
    argNames:
    - zprivs
    argTypes:
    - struct zebra_privs_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 613
    functionDepth: 2
    functionLinenumber: 613
    functionLinenumberEnd: 726
    functionName: zprivs_init
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 3
    functionsReached:
    - setgroups
    - exit
    - geteuid
    - setreuid
    - fprintf
    - safe_strerror
    - array_size
    - setregid
    - getgrouplist
    - zprivs_caps_init
    linkageType: ''
    returnType: void
    signature: void zprivs_init(struct zebra_privs_t *zprivs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:735,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:737,1
    - Dst: zprivs_caps_terminate
      Src: /src/frr/lib/privs.c:743,1
    - Dst: setreuid
      Src: /src/frr/lib/privs.c:747,1
    - Dst: fprintf
      Src: /src/frr/lib/privs.c:748,1
    - Dst: safe_strerror
      Src: /src/frr/lib/privs.c:750,1
    - Dst: exit
      Src: /src/frr/lib/privs.c:751,1
    - Dst: STAILQ_FIRST
      Src: /src/frr/lib/privs.c:756,1
    - Dst: STAILQ_REMOVE_HEAD
      Src: /src/frr/lib/privs.c:757,1
    - Dst: XFREE
      Src: /src/frr/lib/privs.c:758,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - zprivs
    argTypes:
    - struct zebra_privs_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 728
    functionDepth: 2
    functionLinenumber: 728
    functionLinenumberEnd: 765
    functionName: zprivs_terminate
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 2
    functionsReached:
    - exit
    - setreuid
    - fprintf
    - STAILQ_FIRST
    - safe_strerror
    - XFREE
    - STAILQ_REMOVE_HEAD
    - zprivs_caps_terminate
    linkageType: ''
    returnType: void
    signature: void zprivs_terminate(struct zebra_privs_t *zprivs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getuid
      Src: /src/frr/lib/privs.c:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ids
    argTypes:
    - struct zprivs_ids_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 779
    functionName: zprivs_get_ids
    functionSourceFile: /src/frr/lib/privs.c
    functionUses: 2
    functionsReached:
    - getuid
    linkageType: ''
    returnType: void
    signature: void zprivs_get_ids(struct zprivs_ids_t *ids)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/bfd.c:158,1
    - Dst: memset
      Src: /src/frr/lib/bfd.c:159,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/bfd.c:162,1
    - Dst: if_lookup_by_index
      Src: /src/frr/lib/bfd.c:166,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:169,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/bfd.c:177,1
    - Dst: prefix_blen
      Src: /src/frr/lib/bfd.c:179,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/bfd.c:180,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/bfd.c:181,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/bfd.c:184,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/bfd.c:186,1
    - Dst: prefix_blen
      Src: /src/frr/lib/bfd.c:188,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/bfd.c:189,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/bfd.c:190,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/bfd.c:192,1
    - Dst: memset
      Src: /src/frr/lib/bfd.c:202,1
    - Dst: memset
      Src: /src/frr/lib/bfd.c:203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 6
    argNames:
    - s
    - dp
    - sp
    - status
    - remote_cbit
    - vrf_id
    argTypes:
    - struct stream*
    - struct prefix*
    - struct prefix*
    - int*
    - int*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 205
    functionName: bfd_get_peer_info
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - memset
    - zlog_debug
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *bfd_get_peer_info(struct stream *s, struct prefix
      *dp,\n\t\t\t\t\t   struct prefix *sp, int *status,\n\t\t\t\t\t   int *remote_cbit,
      vrf_id_t vrf_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: bfd_get_status_str
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *bfd_get_status_str(int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/bfd.c:238,1
    - Dst: monotime
      Src: /src/frr/lib/bfd.c:243,1
    - Dst: gmtime_r
      Src: /src/frr/lib/bfd.c:246,1
    - Dst: snprintf
      Src: /src/frr/lib/bfd.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - last_update
    - buf
    - len
    argTypes:
    - time_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 250
    functionName: bfd_last_update
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - monotime
    - snprintf
    - gmtime_r
    linkageType: ''
    returnType: void
    signature: void bfd_last_update(time_t last_update, char *buf, size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:265,1
    - Dst: stream_reset
      Src: /src/frr/lib/bfd.c:272,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/bfd.c:273,1
    - Dst: stream_putl
      Src: /src/frr/lib/bfd.c:275,1
    - Dst: getpid
      Src: /src/frr/lib/bfd.c:275,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/bfd.c:277,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/bfd.c:277,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/bfd.c:279,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:283,1
    - Dst: getpid
      Src: /src/frr/lib/bfd.c:285,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - zclient
    - command
    - vrf_id
    argTypes:
    - struct zclient*
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 290
    functionName: bfd_client_sendmsg
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 6
    functionsReached:
    - zclient_create_header
    - getpid
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void bfd_client_sendmsg(struct zclient *zclient, int command,\n\t\t\tvrf_id_t
      vrf_id)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:300,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:309,1
    - Dst: stream_reset
      Src: /src/frr/lib/bfd.c:314,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/bfd.c:317,1
    - Dst: stream_putl
      Src: /src/frr/lib/bfd.c:318,1
    - Dst: getpid
      Src: /src/frr/lib/bfd.c:318,1
    - Dst: stream_putw
      Src: /src/frr/lib/bfd.c:321,1
    - Dst: stream_put
      Src: /src/frr/lib/bfd.c:324,1
    - Dst: stream_putl
      Src: /src/frr/lib/bfd.c:332,1
    - Dst: stream_putl
      Src: /src/frr/lib/bfd.c:333,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:334,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:337,1
    - Dst: stream_putw
      Src: /src/frr/lib/bfd.c:340,1
    - Dst: stream_put
      Src: /src/frr/lib/bfd.c:341,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:344,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:349,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:351,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:354,1
    - Dst: stream_put
      Src: /src/frr/lib/bfd.c:356,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:360,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:363,1
    - Dst: stream_put
      Src: /src/frr/lib/bfd.c:365,1
    - Dst: stream_putl
      Src: /src/frr/lib/bfd.c:369,1
    - Dst: stream_putl
      Src: /src/frr/lib/bfd.c:370,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:371,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:376,1
    - Dst: stream_putw
      Src: /src/frr/lib/bfd.c:379,1
    - Dst: stream_put
      Src: /src/frr/lib/bfd.c:380,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:383,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:386,1
    - Dst: stream_putw
      Src: /src/frr/lib/bfd.c:390,1
    - Dst: stream_put
      Src: /src/frr/lib/bfd.c:391,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:395,1
    - Dst: stream_put
      Src: /src/frr/lib/bfd.c:397,1
    - Dst: stream_putc
      Src: /src/frr/lib/bfd.c:401,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/bfd.c:405,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/bfd.c:405,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/bfd.c:408,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:410,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 66
    argCount: 2
    argNames:
    - zc
    - args
    argTypes:
    - struct zclient*
    - struct bfd_session_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 415
    functionName: zclient_bfd_command
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - stream_put
    - getpid
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zclient_bfd_command(struct zclient *zc, struct bfd_session_arg
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/bfd.c:421,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/bfd.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - updatecb
    - arg
    argTypes:
    - bsp_status_update
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 438
    functionName: bfd_sess_new
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 6
    functionsReached:
    - TAILQ_INSERT_TAIL
    - XCALLOC
    linkageType: ''
    returnType: struct bfd_session_params
    signature: struct bfd_session_params *bfd_sess_new(bsp_status_update updatecb,
      void *arg)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:449,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:455,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:458,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:462,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:470,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:472,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:481,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 486
    functionName: _bfd_sess_valid
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool _bfd_sess_valid(const struct bfd_session_params *bsp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/bfd.c:490,1
    - Dst: _bfd_sess_valid
      Src: /src/frr/lib/bfd.c:494,1
    - Dst: zclient_bfd_command
      Src: /src/frr/lib/bfd.c:507,1
    - Dst: zlog_err
      Src: /src/frr/lib/bfd.c:523,1
    - Dst: vrf_id_to_name
      Src: /src/frr/lib/bfd.c:527,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 488
    functionDepth: 3
    functionLinenumber: 488
    functionLinenumberEnd: 531
    functionName: _bfd_sess_send
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - zclient_bfd_command
    - vrf_id_to_name
    - _bfd_sess_valid
    - zlog_err
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void _bfd_sess_send(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/lib/bfd.c:536,1
    - Dst: event_execute
      Src: /src/frr/lib/bfd.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 545
    functionName: _bfd_sess_remove
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - event_execute
    linkageType: ''
    returnType: void
    signature: void _bfd_sess_remove(struct bfd_session_params *bsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:553,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/lib/bfd.c:556,1
    - Dst: bfd_source_cache_put
      Src: /src/frr/lib/bfd.c:558,1
    - Dst: XFREE
      Src: /src/frr/lib/bfd.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 547
    functionDepth: 2
    functionLinenumber: 547
    functionLinenumberEnd: 562
    functionName: bfd_sess_free
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 9
    functionsReached:
    - TAILQ_REMOVE
    - bfd_source_cache_put
    - XFREE
    - _bfd_sess_remove
    linkageType: ''
    returnType: void
    signature: void bfd_sess_free(struct bfd_session_params **bsp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:576,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:577,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:578,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 4
    argNames:
    - bsp
    - family
    - src
    - dst
    argTypes:
    - struct bfd_session_params*
    - uint32_t
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 582
    functionName: bfd_sess_address_changed
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool bfd_sess_address_changed(const struct bfd_session_params *bsp,\n\t\t\t\t
      \    uint32_t family,\n\t\t\t\t     const struct in6_addr *src,\n\t\t\t\t     const
      struct in6_addr *dst)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_address_changed
      Src: /src/frr/lib/bfd.c:588,1
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:593,1
    - Dst: bfd_source_cache_put
      Src: /src/frr/lib/bfd.c:595,1
    - Dst: memset
      Src: /src/frr/lib/bfd.c:600,1
    - Dst: memset
      Src: /src/frr/lib/bfd.c:601,1
    - Dst: memcpy
      Src: /src/frr/lib/bfd.c:605,1
    - Dst: assert
      Src: /src/frr/lib/bfd.c:607,1
    - Dst: memcpy
      Src: /src/frr/lib/bfd.c:608,1
    - Dst: bfd_source_cache_get
      Src: /src/frr/lib/bfd.c:611,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - bsp
    - src
    - dst
    argTypes:
    - struct bfd_session_params*
    - struct in_addr*
    - struct in_addr*
    assertStmts:
    - condition: (dst)
      pos:
        line_end: 606
        line_start: 606
        source_file: /src/frr/lib/bfd.c
    constantsTouched: []
    func_position:
      end: 612
      start: 584
    functionDepth: 2
    functionLinenumber: 584
    functionLinenumberEnd: 612
    functionName: bfd_sess_set_ipv4_addrs
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 8
    functionsReached:
    - assert
    - bfd_source_cache_put
    - memset
    - bfd_sess_address_changed
    - _bfd_sess_remove
    - bfd_source_cache_get
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void bfd_sess_set_ipv4_addrs(struct bfd_session_params *bsp,\n\t\t\t
      \    const struct in_addr *src,\n\t\t\t     const struct in_addr *dst)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_address_changed
      Src: /src/frr/lib/bfd.c:618,1
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:622,1
    - Dst: bfd_source_cache_put
      Src: /src/frr/lib/bfd.c:624,1
    - Dst: memset
      Src: /src/frr/lib/bfd.c:629,1
    - Dst: assert
      Src: /src/frr/lib/bfd.c:634,1
    - Dst: bfd_source_cache_get
      Src: /src/frr/lib/bfd.c:638,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - bsp
    - src
    - dst
    argTypes:
    - struct bfd_session_params*
    - struct in6_addr*
    - struct in6_addr*
    assertStmts:
    - condition: (dst)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/frr/lib/bfd.c
    constantsTouched: []
    func_position:
      end: 639
      start: 614
    functionDepth: 2
    functionLinenumber: 614
    functionLinenumberEnd: 639
    functionName: bfd_sess_set_ipv6_addrs
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 6
    functionsReached:
    - bfd_source_cache_put
    - memset
    - bfd_sess_address_changed
    - _bfd_sess_remove
    - bfd_source_cache_get
    - assert
    linkageType: ''
    returnType: void
    signature: "void bfd_sess_set_ipv6_addrs(struct bfd_session_params *bsp,\n\t\t\t
      \    const struct in6_addr *src,\n\t\t\t     const struct in6_addr *dst)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/bfd.c:644,1
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:648,1
    - Dst: strlcpy
      Src: /src/frr/lib/bfd.c:656,1
    - Dst: zlog_warn
      Src: /src/frr/lib/bfd.c:658,1
    - Dst: strlen
      Src: /src/frr/lib/bfd.c:660,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - bsp
    - ifname
    argTypes:
    - struct bfd_session_params*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 641
    functionDepth: 2
    functionLinenumber: 641
    functionLinenumberEnd: 661
    functionName: bfd_sess_set_interface
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 7
    functionsReached:
    - strlen
    - strlcpy
    - strcmp
    - _bfd_sess_remove
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void bfd_sess_set_interface(struct bfd_session_params *bsp, const char
      *ifname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/bfd.c:671,1
    - Dst: zlog_warn
      Src: /src/frr/lib/bfd.c:673,1
    - Dst: strlen
      Src: /src/frr/lib/bfd.c:675,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - bsp
    - profile
    argTypes:
    - struct bfd_session_params*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 676
    functionName: bfd_sess_set_profile
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 6
    functionsReached:
    - strlcpy
    - strlen
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void bfd_sess_set_profile(struct bfd_session_params *bsp, const char
      *profile)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:684,1
    - Dst: bfd_source_cache_put
      Src: /src/frr/lib/bfd.c:686,1
    - Dst: bfd_source_cache_get
      Src: /src/frr/lib/bfd.c:691,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bsp
    - vrf_id
    argTypes:
    - struct bfd_session_params*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 692
    functionName: bfd_sess_set_vrf
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 6
    functionsReached:
    - bfd_source_cache_put
    - bfd_source_cache_get
    - _bfd_sess_remove
    linkageType: ''
    returnType: void
    signature: void bfd_sess_set_vrf(struct bfd_session_params *bsp, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bsp
    - hops
    argTypes:
    - struct bfd_session_params*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 694
    functionDepth: 2
    functionLinenumber: 694
    functionLinenumberEnd: 704
    functionName: bfd_sess_set_hop_count
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 5
    functionsReached:
    - _bfd_sess_remove
    linkageType: ''
    returnType: void
    signature: void bfd_sess_set_hop_count(struct bfd_session_params *bsp, uint8_t
      hops)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bsp
    - enable
    argTypes:
    - struct bfd_session_params*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: bfd_sess_set_cbit
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bfd_sess_set_cbit(struct bfd_session_params *bsp, bool enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - bsp
    - detection_multiplier
    - min_rx
    - min_tx
    argTypes:
    - struct bfd_session_params*
    - uint8_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 719
    functionName: bfd_sess_set_timers
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bfd_sess_set_timers(struct bfd_session_params *bsp,\n\t\t\t uint8_t
      detection_multiplier, uint32_t min_rx,\n\t\t\t uint32_t min_tx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bfd_source_cache_get
      Src: /src/frr/lib/bfd.c:728,1
    - Dst: bfd_source_cache_put
      Src: /src/frr/lib/bfd.c:730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - bsp
    - enable
    argTypes:
    - struct bfd_session_params*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 731
    functionName: bfd_sess_set_auto_source
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 3
    functionsReached:
    - bfd_source_cache_put
    - bfd_source_cache_get
    linkageType: ''
    returnType: void
    signature: void bfd_sess_set_auto_source(struct bfd_session_params *bsp, bool
      enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/lib/bfd.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 737
    functionName: bfd_sess_install
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 11
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void bfd_sess_install(struct bfd_session_params *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/lib/bfd.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 743
    functionName: bfd_sess_uninstall
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 3
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void bfd_sess_uninstall(struct bfd_session_params *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 748
    functionName: bfd_sess_status
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: enum bfd_session_state
    signature: enum bfd_session_state bfd_sess_status(const struct bfd_session_params
      *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 750
    functionDepth: 0
    functionLinenumber: 750
    functionLinenumberEnd: 753
    functionName: bfd_sess_hop_count
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t bfd_sess_hop_count(const struct bfd_session_params *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 758
    functionName: bfd_sess_profile
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *bfd_sess_profile(const struct bfd_session_params *bsp)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - bsp
    - family
    - src
    - dst
    argTypes:
    - struct bfd_session_params*
    - int*
    - struct in6_addr*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 768
    functionName: bfd_sess_addresses
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bfd_sess_addresses(const struct bfd_session_params *bsp, int
      *family,\n\t\t\tstruct in6_addr *src, struct in6_addr *dst)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 770
    functionDepth: 0
    functionLinenumber: 770
    functionLinenumberEnd: 776
    functionName: bfd_sess_interface
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *bfd_sess_interface(const struct bfd_session_params *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_id_to_name
      Src: /src/frr/lib/bfd.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 778
    functionDepth: 3
    functionLinenumber: 778
    functionLinenumberEnd: 781
    functionName: bfd_sess_vrf
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 3
    functionsReached:
    - vrf_id_to_name
    linkageType: ''
    returnType: char
    signature: char *bfd_sess_vrf(const struct bfd_session_params *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 783
    functionDepth: 0
    functionLinenumber: 783
    functionLinenumberEnd: 786
    functionName: bfd_sess_vrf_id
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t bfd_sess_vrf_id(const struct bfd_session_params *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: bfd_sess_cbit
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bfd_sess_cbit(const struct bfd_session_params *bsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - bsp
    - detection_multiplier
    - min_rx
    - min_tx
    argTypes:
    - struct bfd_session_params*
    - uint8_t*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 800
    functionName: bfd_sess_timers
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bfd_sess_timers(const struct bfd_session_params *bsp,\n\t\t     uint8_t
      *detection_multiplier, uint32_t *min_rx,\n\t\t     uint32_t *min_tx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsp
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 802
    functionDepth: 0
    functionLinenumber: 802
    functionLinenumberEnd: 805
    functionName: bfd_sess_auto_source
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bfd_sess_auto_source(const struct bfd_session_params *bsp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/bfd.c:818,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/bfd.c:820,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/bfd.c:822,1
    - Dst: vty_out
      Src: /src/frr/lib/bfd.c:824,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/bfd.c:829,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/bfd.c:831,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/bfd.c:833,1
    - Dst: vty_out
      Src: /src/frr/lib/bfd.c:836,1
    - Dst: bfd_last_update
      Src: /src/frr/lib/bfd.c:842,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/bfd.c:844,1
    - Dst: bfd_get_status_str
      Src: /src/frr/lib/bfd.c:845,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/bfd.c:846,1
    - Dst: vty_out
      Src: /src/frr/lib/bfd.c:848,1
    - Dst: bfd_get_status_str
      Src: /src/frr/lib/bfd.c:849,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/bfd.c:852,1
    - Dst: vty_out
      Src: /src/frr/lib/bfd.c:854,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - vty
    - json
    - bsp
    argTypes:
    - struct vty*
    - struct json_object*
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 807
    functionDepth: 2
    functionLinenumber: 807
    functionLinenumberEnd: 855
    functionName: bfd_sess_show
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 3
    functionsReached:
    - json_object_new_object
    - vty_out
    - bfd_get_status_str
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - bfd_last_update
    linkageType: ''
    returnType: void
    signature: "void bfd_sess_show(struct vty *vty, struct json_object *json,\n\t\t
      \  struct bfd_session_params *bsp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:878,1
    - Dst: bfd_client_sendmsg
      Src: /src/frr/lib/bfd.c:881,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/lib/bfd.c:884,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/bfd.c:893,1
    - Dst: event_execute
      Src: /src/frr/lib/bfd.c:897,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 866
    functionDepth: 2
    functionLinenumber: 866
    functionLinenumberEnd: 901
    functionName: zclient_bfd_session_replay
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_client_sendmsg
    - event_execute
    - zlog_debug
    - EVENT_OFF
    - TAILQ_FOREACH
    linkageType: ''
    returnType: int
    signature: int zclient_bfd_session_replay(ZAPI_CALLBACK_ARGS)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: bfd_get_peer_info
      Src: /src/frr/lib/bfd.c:923,1
    - Dst: snprintf
      Src: /src/frr/lib/bfd.c:936,1
    - Dst: snprintf
      Src: /src/frr/lib/bfd.c:939,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:942,1
    - Dst: vrf_id_to_name
      Src: /src/frr/lib/bfd.c:943,1
    - Dst: bfd_get_status_str
      Src: /src/frr/lib/bfd.c:944,1
    - Dst: assert
      Src: /src/frr/lib/bfd.c:957,1
    - Dst: monotime
      Src: /src/frr/lib/bfd.c:962,1
    - Dst: TAILQ_FOREACH_SAFE
      Src: /src/frr/lib/bfd.c:965,1
    - Dst: strcmp
      Src: /src/frr/lib/bfd.c:977,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:980,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:988,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:989,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:990,1
    - Dst: struct bfd_session_params*::updatecb
      Src: /src/frr/lib/bfd.c:1000,1
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:1005,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (0)
      pos:
        line_end: 956
        line_start: 956
        source_file: /src/frr/lib/bfd.c
    constantsTouched: []
    func_position:
      end: 1009
      start: 903
    functionDepth: 3
    functionLinenumber: 903
    functionLinenumberEnd: 1009
    functionName: zclient_bfd_session_update
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - snprintf
    - bfd_get_status_str
    - vrf_id_to_name
    - struct bfd_session_params*::updatecb
    - strcmp
    - monotime
    - memcmp
    - zlog_debug
    - bfd_get_peer_info
    - TAILQ_FOREACH_SAFE
    - assert
    linkageType: ''
    returnType: int
    signature: int zclient_bfd_session_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/lib/bfd.c:1026,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/lib/bfd.c:1028,1
    - Dst: bfd_sess_free
      Src: /src/frr/lib/bfd.c:1029,1
    - Dst: SLIST_EMPTY
      Src: /src/frr/lib/bfd.c:1036,1
    - Dst: zlog_warn
      Src: /src/frr/lib/bfd.c:1037,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1021
    functionDepth: 3
    functionLinenumber: 1021
    functionLinenumberEnd: 1040
    functionName: bfd_protocol_integration_finish
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - SLIST_EMPTY
    - TAILQ_FIRST
    - zlog_warn
    - TAILQ_EMPTY
    - bfd_sess_free
    linkageType: ''
    returnType: int
    signature: int bfd_protocol_integration_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_INIT
      Src: /src/frr/lib/bfd.c:1045,1
    - Dst: SLIST_INIT
      Src: /src/frr/lib/bfd.c:1046,1
    - Dst: bfd_client_sendmsg
      Src: /src/frr/lib/bfd.c:1056,1
    - Dst: hook_register
      Src: /src/frr/lib/bfd.c:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - zc
    - tm
    argTypes:
    - struct zclient*
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1042
    functionDepth: 2
    functionLinenumber: 1042
    functionLinenumberEnd: 1059
    functionName: bfd_protocol_integration_init
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 5
    functionsReached:
    - bfd_client_sendmsg
    - hook_register
    - TAILQ_INIT
    - SLIST_INIT
    linkageType: ''
    returnType: void
    signature: void bfd_protocol_integration_init(struct zclient *zc, struct event_loop
      *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1061
    functionDepth: 0
    functionLinenumber: 1061
    functionLinenumberEnd: 1064
    functionName: bfd_protocol_integration_set_debug
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bfd_protocol_integration_set_debug(bool enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1066
    functionDepth: 0
    functionLinenumber: 1066
    functionLinenumberEnd: 1069
    functionName: bfd_protocol_integration_set_shutdown
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bfd_protocol_integration_set_shutdown(bool enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1071
    functionDepth: 0
    functionLinenumber: 1071
    functionLinenumberEnd: 1074
    functionName: bfd_protocol_integration_debug
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bfd_protocol_integration_debug(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1079
    functionName: bfd_protocol_integration_shutting_down
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bfd_protocol_integration_shutting_down(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:1128,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - source
    - session
    argTypes:
    - struct bfd_source_cache*
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1137
    functionName: bfd_source_cache_session_match
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool bfd_source_cache_session_match(const struct bfd_source_cache
      *source,\n\t\t\t       const struct bfd_session_params *session)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLIST_FOREACH
      Src: /src/frr/lib/bfd.c:1144,1
    - Dst: prefix_same
      Src: /src/frr/lib/bfd.c:1147,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - vrf_id
    - prefix
    argTypes:
    - vrf_id_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1139
    functionDepth: 1
    functionLinenumber: 1139
    functionLinenumberEnd: 1154
    functionName: bfd_source_cache_find
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - SLIST_FOREACH
    linkageType: ''
    returnType: struct bfd_source_cache
    signature: 'struct bfd_source_cache *

      bfd_source_cache_find(vrf_id_t vrf_id, const struct prefix *prefix)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/bfd.c:1165,1
    - Dst: memcpy
      Src: /src/frr/lib/bfd.c:1171,1
    - Dst: bfd_source_cache_find
      Src: /src/frr/lib/bfd.c:1178,1
    - Dst: bfd_source_cache_put
      Src: /src/frr/lib/bfd.c:1183,1
    - Dst: XCALLOC
      Src: /src/frr/lib/bfd.c:1189,1
    - Dst: prefix_copy
      Src: /src/frr/lib/bfd.c:1190,1
    - Dst: SLIST_INSERT_HEAD
      Src: /src/frr/lib/bfd.c:1192,1
    - Dst: bfd_source_cache_put
      Src: /src/frr/lib/bfd.c:1194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - session
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1199
    functionName: bfd_source_cache_get
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 4
    functionsReached:
    - bfd_source_cache_put
    - SLIST_INSERT_HEAD
    - XCALLOC
    - bfd_source_cache_find
    - prefix_copy
    - memcpy
    linkageType: ''
    returnType: void
    signature: void bfd_source_cache_get(struct bfd_session_params *session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLIST_REMOVE
      Src: /src/frr/lib/bfd.c:1212,1
    - Dst: XFREE
      Src: /src/frr/lib/bfd.c:1214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - session
    argTypes:
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1201
    functionDepth: 0
    functionLinenumber: 1201
    functionLinenumberEnd: 1215
    functionName: bfd_source_cache_put
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 6
    functionsReached:
    - XFREE
    - SLIST_REMOVE
    linkageType: ''
    returnType: void
    signature: void bfd_source_cache_put(struct bfd_session_params *session)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:1228,1
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:1232,1
    - Dst: memcpy
      Src: /src/frr/lib/bfd.c:1233,1
    - Dst: memcmp
      Src: /src/frr/lib/bfd.c:1238,1
    - Dst: _bfd_sess_remove
      Src: /src/frr/lib/bfd.c:1242,1
    - Dst: memcpy
      Src: /src/frr/lib/bfd.c:1243,1
    - Dst: bfd_sess_install
      Src: /src/frr/lib/bfd.c:1250,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - source
    - session
    argTypes:
    - struct bfd_source_cache*
    - struct bfd_session_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1218
    functionDepth: 2
    functionLinenumber: 1218
    functionLinenumberEnd: 1251
    functionName: bfd_source_cache_update_session
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - memcpy
    - _bfd_sess_remove
    - memcmp
    - bfd_sess_install
    linkageType: ''
    returnType: void
    signature: "void bfd_source_cache_update_session(const struct bfd_source_cache
      *source,\n\t\t\t\tstruct bfd_session_params *session)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/lib/bfd.c:1261,1
    - Dst: bfd_source_cache_session_match
      Src: /src/frr/lib/bfd.c:1264,1
    - Dst: bfd_source_cache_update_session
      Src: /src/frr/lib/bfd.c:1267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct bfd_source_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1253
    functionDepth: 3
    functionLinenumber: 1253
    functionLinenumberEnd: 1269
    functionName: bfd_source_cache_update_sessions
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_source_cache_update_session
    - bfd_source_cache_session_match
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfd_source_cache_update_sessions(const struct bfd_source_cache
      *source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/lib/bfd.c:1287,1
    - Dst: zlog_err
      Src: /src/frr/lib/bfd.c:1289,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/bfd.c:1294,1
    - Dst: if
      Src: /src/frr/lib/bfd.c:1299,1
    - Dst: prefix_same
      Src: /src/frr/lib/bfd.c:1299,1
    - Dst: if
      Src: /src/frr/lib/bfd.c:1305,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/bfd.c:1306,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - source
    - route
    argTypes:
    - struct bfd_source_cache*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1276
    functionDepth: 1
    functionLinenumber: 1276
    functionLinenumberEnd: 1314
    functionName: bfd_source_cache_update
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - prefix_same
    - IN6_IS_ADDR_LINKLOCAL
    - ALL_LIST_ELEMENTS_RO
    - zlog_err
    - if
    linkageType: ''
    returnType: bool
    signature: "bool bfd_source_cache_update(struct bfd_source_cache *source,\n\t\t\t\t
      \   const struct zapi_route *route)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/bfd.c:1326,1
    - Dst: SLIST_FOREACH
      Src: /src/frr/lib/bfd.c:1328,1
    - Dst: prefix_same
      Src: /src/frr/lib/bfd.c:1331,1
    - Dst: bfd_source_cache_update
      Src: /src/frr/lib/bfd.c:1333,1
    - Dst: bfd_source_cache_update_sessions
      Src: /src/frr/lib/bfd.c:1334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - match
    - route
    argTypes:
    - struct prefix*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1321
    functionDepth: 4
    functionLinenumber: 1321
    functionLinenumberEnd: 1338
    functionName: bfd_nht_update
    functionSourceFile: /src/frr/lib/bfd.c
    functionUses: 1
    functionsReached:
    - prefix_same
    - SLIST_FOREACH
    - bfd_source_cache_update_sessions
    - zlog_debug
    - bfd_source_cache_update
    linkageType: ''
    returnType: int
    signature: int bfd_nht_update(const struct prefix *match, const struct zapi_route
      *route)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: MASKBIT
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MASKBIT(offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: is_zero_mac
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_zero_mac(const struct ethaddr *mac)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: is_bcast_mac
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_bcast_mac(const struct ethaddr *mac)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mac
    argTypes:
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: is_mcast_mac
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_mcast_mac(const struct ethaddr *mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - bit_index
    argTypes:
    - uint8_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: prefix_bit
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int prefix_bit(const uint8_t *prefix, const uint16_t bit_index)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/prefix.c:76,1
    - Dst: strcmp
      Src: /src/frr/lib/prefix.c:78,1
    - Dst: strcmp
      Src: /src/frr/lib/prefix.c:80,1
    - Dst: strcmp
      Src: /src/frr/lib/prefix.c:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: str2family
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int str2family(const char *string)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: family2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *family2str(int family)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - afi
    argTypes:
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 113
    functionName: afi2family
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int afi2family(afi_t afi)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: family2afi
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 124
    functionsReached: []
    linkageType: ''
    returnType: afi_t
    signature: afi_t family2afi(int family)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/prefix.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - afi
    argTypes:
    - afi_t
    assertStmts:
    - condition: (!"Reached end of function we should never reach")
      pos:
        line_end: 139
        line_start: 139
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 141
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 141
    functionName: afi2str_lower
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *afi2str_lower(afi_t afi)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/prefix.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - afi
    argTypes:
    - afi_t
    assertStmts:
    - condition: (!"Reached end of function we should never reach")
      pos:
        line_end: 156
        line_start: 156
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 158
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 158
    functionName: afi2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 50
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *afi2str(afi_t afi)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/prefix.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - safi
    argTypes:
    - safi_t
    assertStmts:
    - condition: (!"Reached end of function we should never reach")
      pos:
        line_end: 181
        line_start: 181
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 183
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 183
    functionName: safi2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 36
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *safi2str(safi_t safi)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 2
    argNames:
    - unet
    - upfx
    argTypes:
    - union prefixconstptr
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 236
    functionName: prefix_match
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int prefix_match(union prefixconstptr unet, union prefixconstptr upfx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_v6
      Src: /src/frr/lib/prefix.c:258,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/lib/prefix.c:259,1
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/lib/prefix.c:260,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 2
    argNames:
    - n
    - p
    argTypes:
    - struct prefix*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 282
    functionName: evpn_type5_prefix_match
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 1
    functionsReached:
    - is_evpn_prefix_ipaddr_v6
    - is_evpn_prefix_ipaddr_none
    - is_evpn_prefix_ipaddr_v4
    linkageType: ''
    returnType: int
    signature: int evpn_type5_prefix_match(const struct prefix *n, const struct prefix
      *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - unet
    - upfx
    argTypes:
    - union prefixconstptr
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 309
    functionName: prefix_match_network_statement
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int prefix_match_network_statement(union prefixconstptr unet,\n\t\t\t\t
      \  union prefixconstptr upfx)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:328,1
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:331,1
    - Dst: XCALLOC
      Src: /src/frr/lib/prefix.c:346,1
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:348,1
    - Dst: flog_err
      Src: /src/frr/lib/prefix.c:351,1
    - Dst: assert
      Src: /src/frr/lib/prefix.c:354,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - udest
    - usrc
    argTypes:
    - union prefixptr
    - union prefixconstptr
    assertStmts:
    - condition: (0)
      pos:
        line_end: 353
        line_start: 353
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 356
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 356
    functionName: prefix_copy
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 44
    functionsReached:
    - assert
    - flog_err
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void prefix_copy(union prefixptr udest, union prefixconstptr usrc)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/prefix.c:379,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/prefix.c:382,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:386,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:390,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:400,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 28
    argCount: 2
    argNames:
    - up1
    - up2
    argTypes:
    - union prefixconstptr
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 407
    functionName: prefix_same
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 50
    functionsReached:
    - IPV6_ADDR_SAME
    - IPV4_ADDR_SAME
    - memcmp
    linkageType: ''
    returnType: int
    signature: int prefix_same(union prefixconstptr up1, union prefixconstptr up2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/prefix.c:433,1
    - Dst: numcmp
      Src: /src/frr/lib/prefix.c:444,1
    - Dst: numcmp
      Src: /src/frr/lib/prefix.c:450,1
    - Dst: numcmp
      Src: /src/frr/lib/prefix.c:457,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:461,1
    - Dst: numcmp
      Src: /src/frr/lib/prefix.c:473,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - up1
    - up2
    argTypes:
    - union prefixconstptr
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 477
    functionName: prefix_cmp
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 37
    functionsReached:
    - numcmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: int prefix_cmp(union prefixconstptr up1, union prefixconstptr up2)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 21
    argCount: 2
    argNames:
    - ua
    - ub
    argTypes:
    - union prefixconstptr
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 521
    functionName: prefix_common_bits
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int prefix_common_bits(union prefixconstptr ua, union prefixconstptr
      ub)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - pu
    argTypes:
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 537
    functionName: prefix_family_str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *prefix_family_str(union prefixconstptr pu)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_new
      Src: /src/frr/lib/prefix.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 551
    functionName: prefix_ipv4_new
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 10
    functionsReached:
    - prefix_new
    linkageType: ''
    returnType: struct prefix_ipv4
    signature: struct prefix_ipv4 *prefix_ipv4_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_free
      Src: /src/frr/lib/prefix.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv4**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 557
    functionName: prefix_ipv4_free
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 2
    functionsReached:
    - prefix_free
    linkageType: ''
    returnType: void
    signature: void prefix_ipv4_free(struct prefix_ipv4 **p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/lib/prefix.c:568,1
    - Dst: inet_pton
      Src: /src/frr/lib/prefix.c:573,1
    - Dst: XMALLOC
      Src: /src/frr/lib/prefix.c:584,1
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:585,1
    - Dst: inet_pton
      Src: /src/frr/lib/prefix.c:587,1
    - Dst: XFREE
      Src: /src/frr/lib/prefix.c:588,1
    - Dst: atoi
      Src: /src/frr/lib/prefix.c:593,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - str
    - p
    argTypes:
    - char*
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 602
    functionName: str2prefix_ipv4
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 14
    functionsReached:
    - XMALLOC
    - strchr
    - inet_pton
    - XFREE
    - atoi
    - memcpy
    linkageType: ''
    returnType: int
    signature: int str2prefix_ipv4(const char *str, struct prefix_ipv4 *p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/prefix.c:616,1
    - Dst: memset
      Src: /src/frr/lib/prefix.c:617,1
    - Dst: strchr
      Src: /src/frr/lib/prefix.c:623,1
    - Dst: atoi
      Src: /src/frr/lib/prefix.c:627,1
    - Dst: XMALLOC
      Src: /src/frr/lib/prefix.c:633,1
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:634,1
    - Dst: sscanf
      Src: /src/frr/lib/prefix.c:642,1
    - Dst: is_zero_mac
      Src: /src/frr/lib/prefix.c:659,1
    - Dst: XFREE
      Src: /src/frr/lib/prefix.c:665,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 2
    argNames:
    - str
    - p
    argTypes:
    - char*
    - struct prefix_eth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 668
    functionName: str2prefix_eth
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 1
    functionsReached:
    - memset
    - strcmp
    - XMALLOC
    - is_zero_mac
    - strchr
    - XFREE
    - sscanf
    - atoi
    - memcpy
    linkageType: ''
    returnType: int
    signature: int str2prefix_eth(const char *str, struct prefix_eth *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/prefix.c:673,1
    - Dst: htonl
      Src: /src/frr/lib/prefix.c:681,1
    - Dst: htonl
      Src: /src/frr/lib/prefix.c:684,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - masklen
    - netmask
    argTypes:
    - int
    - struct in_addr*
    assertStmts:
    - condition: (masklen >= 0 && masklen <= IPV4_MAX_BITLEN)
      pos:
        line_end: 672
        line_start: 672
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 685
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 685
    functionName: masklen2ip
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 29
    functionsReached:
    - htonl
    - assert
    linkageType: ''
    returnType: void
    signature: void masklen2ip(const int masklen, struct in_addr *netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:691,1
    - Dst: __builtin_clz
      Src: /src/frr/lib/prefix.c:697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - netmask
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 698
    functionName: ip_masklen
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 40
    functionsReached:
    - __builtin_clz
    - ntohl
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ip_masklen(struct in_addr netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: masklen2ip
      Src: /src/frr/lib/prefix.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 701
    functionDepth: 2
    functionLinenumber: 701
    functionLinenumberEnd: 706
    functionName: apply_mask_ipv4
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 34
    functionsReached:
    - masklen2ip
    linkageType: ''
    returnType: void
    signature: void apply_mask_ipv4(struct prefix_ipv4 *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 712
    functionName: prefix_ipv4_any
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int prefix_ipv4_any(const struct prefix_ipv4 *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_new
      Src: /src/frr/lib/prefix.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 724
    functionName: prefix_ipv6_new
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 9
    functionsReached:
    - prefix_new
    linkageType: ''
    returnType: struct prefix_ipv6
    signature: struct prefix_ipv6 *prefix_ipv6_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_free
      Src: /src/frr/lib/prefix.c:729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv6**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 730
    functionName: prefix_ipv6_free
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 2
    functionsReached:
    - prefix_free
    linkageType: ''
    returnType: void
    signature: void prefix_ipv6_free(struct prefix_ipv6 **p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/lib/prefix.c:739,1
    - Dst: inet_pton
      Src: /src/frr/lib/prefix.c:743,1
    - Dst: XMALLOC
      Src: /src/frr/lib/prefix.c:750,1
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:751,1
    - Dst: inet_pton
      Src: /src/frr/lib/prefix.c:753,1
    - Dst: XFREE
      Src: /src/frr/lib/prefix.c:754,1
    - Dst: atoi
      Src: /src/frr/lib/prefix.c:757,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - str
    - p
    argTypes:
    - char*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 733
    functionDepth: 0
    functionLinenumber: 733
    functionLinenumberEnd: 765
    functionName: str2prefix_ipv6
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 6
    functionsReached:
    - XMALLOC
    - strchr
    - inet_pton
    - XFREE
    - atoi
    - memcpy
    linkageType: ''
    returnType: int
    signature: int str2prefix_ipv6(const char *str, struct prefix_ipv6 *p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_clz
      Src: /src/frr/lib/prefix.c:772,1
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:772,1
    - Dst: __builtin_clz
      Src: /src/frr/lib/prefix.c:774,1
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:774,1
    - Dst: __builtin_clz
      Src: /src/frr/lib/prefix.c:776,1
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:776,1
    - Dst: __builtin_clz
      Src: /src/frr/lib/prefix.c:778,1
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:778,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - netmask
    argTypes:
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 781
    functionName: ip6_masklen
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 4
    functionsReached:
    - __builtin_clz
    - ntohl
    linkageType: ''
    returnType: int
    signature: int ip6_masklen(struct in6_addr netmask)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/prefix.c:785,1
    - Dst: memset
      Src: /src/frr/lib/prefix.c:789,1
    - Dst: htonl
      Src: /src/frr/lib/prefix.c:791,1
    - Dst: htonl
      Src: /src/frr/lib/prefix.c:797,1
    - Dst: htonl
      Src: /src/frr/lib/prefix.c:803,1
    - Dst: htonl
      Src: /src/frr/lib/prefix.c:809,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - masklen
    - netmask
    argTypes:
    - int
    - struct in6_addr*
    assertStmts:
    - condition: (masklen >= 0 && masklen <= IPV6_MAX_BITLEN)
      pos:
        line_end: 784
        line_start: 784
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 811
      start: 783
    functionDepth: 1
    functionLinenumber: 783
    functionLinenumberEnd: 811
    functionName: masklen2ip6
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 3
    functionsReached:
    - memset
    - htonl
    - assert
    linkageType: ''
    returnType: void
    signature: void masklen2ip6(const int masklen, struct in6_addr *netmask)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 813
    functionDepth: 0
    functionLinenumber: 813
    functionLinenumberEnd: 831
    functionName: apply_mask_ipv6
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void apply_mask_ipv6(struct prefix_ipv6 *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: apply_mask_ipv4
      Src: /src/frr/lib/prefix.c:839,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/lib/prefix.c:842,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - pu
    argTypes:
    - union prefixptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 833
    functionDepth: 3
    functionLinenumber: 833
    functionLinenumberEnd: 848
    functionName: apply_mask
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 35
    functionsReached:
    - apply_mask_ipv6
    - apply_mask_ipv4
    linkageType: ''
    returnType: void
    signature: void apply_mask(union prefixptr pu)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_ipv4_new
      Src: /src/frr/lib/prefix.c:857,1
    - Dst: prefix_ipv6_new
      Src: /src/frr/lib/prefix.c:866,1
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:869,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - su
    - prefix
    argTypes:
    - union sockunion*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 851
    functionDepth: 2
    functionLinenumber: 851
    functionLinenumberEnd: 874
    functionName: sockunion2hostprefix
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 17
    functionsReached:
    - prefix_ipv6_new
    - prefix_ipv4_new
    - memcpy
    linkageType: ''
    returnType: struct prefix
    signature: "struct prefix *sockunion2hostprefix(const union sockunion *su,\n\t\t\t\t
      \   struct prefix *prefix)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/prefix.c:878,1
    - Dst: memcpy
      Src: /src/frr/lib/prefix.c:884,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - p
    - su
    argTypes:
    - struct prefix*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 876
    functionDepth: 0
    functionLinenumber: 876
    functionLinenumberEnd: 886
    functionName: prefix2sockunion
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 2
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: void prefix2sockunion(const struct prefix *p, union sockunion *su)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - pu
    argTypes:
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 901
    functionName: prefix_blen
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int prefix_blen(union prefixconstptr pu)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/lib/prefix.c:912,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/lib/prefix.c:917,1
    - Dst: str2prefix_eth
      Src: /src/frr/lib/prefix.c:922,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - str
    - p
    argTypes:
    - char*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 904
    functionDepth: 2
    functionLinenumber: 904
    functionLinenumberEnd: 927
    functionName: str2prefix
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 35
    functionsReached:
    - str2prefix_ipv6
    - str2prefix_ipv4
    - str2prefix_eth
    linkageType: ''
    returnType: int
    signature: int str2prefix(const char *str, struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.c:936,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:937,1
    - Dst: esi_to_str
      Src: /src/frr/lib/prefix.c:939,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - p
    - str
    - size
    argTypes:
    - struct prefix_evpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 945
    functionName: prefixevpn_ead2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - IS_IPADDR_V4
    - esi_to_str
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *prefixevpn_ead2str(const struct prefix_evpn *p, char *str,\n\t\t\t\t
      \     int size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_evpn_prefix_ipaddr_none
      Src: /src/frr/lib/prefix.c:954,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:955,1
    - Dst: prefix_mac2str
      Src: /src/frr/lib/prefix.c:957,1
    - Dst: is_evpn_prefix_ipaddr_v4
      Src: /src/frr/lib/prefix.c:960,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:961,1
    - Dst: prefix_mac2str
      Src: /src/frr/lib/prefix.c:964,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - p
    - str
    - size
    argTypes:
    - struct prefix_evpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 971
    functionName: prefixevpn_macip2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - is_evpn_prefix_ipaddr_v4
    - snprintf
    - prefix_mac2str
    - is_evpn_prefix_ipaddr_none
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: "char *prefixevpn_macip2str(const struct prefix_evpn *p, char *str,\n\t\t\t\t\tint
      size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.c:979,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:980,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - p
    - str
    - size
    argTypes:
    - struct prefix_evpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 987
    functionName: prefixevpn_imet2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - IS_IPADDR_V4
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *prefixevpn_imet2str(const struct prefix_evpn *p, char *str,\n\t\t\t\t
      \      int size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.c:996,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:997,1
    - Dst: esi_to_str
      Src: /src/frr/lib/prefix.c:998,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:1000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - p
    - str
    - size
    argTypes:
    - struct prefix_evpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 1004
    functionName: prefixevpn_es2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - IS_IPADDR_V4
    - esi_to_str
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *prefixevpn_es2str(const struct prefix_evpn *p, char *str,\n\t\t\t\t
      \    int size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.c:1012,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1013,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:1016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - p
    - str
    - size
    argTypes:
    - struct prefix_evpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1019
    functionName: prefixevpn_prefix2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - IS_IPADDR_V4
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *prefixevpn_prefix2str(const struct prefix_evpn *p, char *str,\n\t\t\t\t\t
      int size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: prefixevpn_ead2str
      Src: /src/frr/lib/prefix.c:1026,1
    - Dst: prefixevpn_macip2str
      Src: /src/frr/lib/prefix.c:1028,1
    - Dst: prefixevpn_imet2str
      Src: /src/frr/lib/prefix.c:1030,1
    - Dst: prefixevpn_es2str
      Src: /src/frr/lib/prefix.c:1032,1
    - Dst: prefixevpn_prefix2str
      Src: /src/frr/lib/prefix.c:1034,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1036,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - p
    - str
    - size
    argTypes:
    - struct prefix_evpn*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1021
    functionDepth: 2
    functionLinenumber: 1021
    functionLinenumberEnd: 1040
    functionName: prefixevpn2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - prefixevpn_prefix2str
    - prefixevpn_macip2str
    - snprintf
    - prefixevpn_imet2str
    - prefixevpn_es2str
    - prefixevpn_ead2str
    linkageType: ''
    returnType: char
    signature: "char *prefixevpn2str(const struct prefix_evpn *p, char *str,\n\t\t\t\t
      \ int size)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:1053,1
    - Dst: strlen
      Src: /src/frr/lib/prefix.c:1054,1
    - Dst: strlcpy
      Src: /src/frr/lib/prefix.c:1069,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1073,1
    - Dst: prefix_mac2str
      Src: /src/frr/lib/prefix.c:1074,1
    - Dst: prefixevpn2str
      Src: /src/frr/lib/prefix.c:1079,1
    - Dst: strlcpy
      Src: /src/frr/lib/prefix.c:1083,1
    - Dst: strlcpy
      Src: /src/frr/lib/prefix.c:1087,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - pu
    - str
    - size
    argTypes:
    - union prefixconstptr
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1042
    functionDepth: 3
    functionLinenumber: 1042
    functionLinenumberEnd: 1092
    functionName: prefix2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 48
    functionsReached:
    - strlen
    - snprintf
    - prefixevpn2str
    - prefix_mac2str
    - strlcpy
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: char *prefix2str(union prefixconstptr pu, char *str, int size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:1102,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1103,1
    - Dst: prefix_mac2str
      Src: /src/frr/lib/prefix.c:1106,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1107,1
    - Dst: bprintfrr
      Src: /src/frr/lib/prefix.c:1110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - fbuf
    - pu
    argTypes:
    - struct fbuf*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1112
    functionName: prefixhost2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - bprintfrr
    - prefix_mac2str
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t prefixhost2str(struct fbuf *fbuf, union prefixconstptr pu)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/prefix.c:1120,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:1122,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - onfail
    - addr
    - buf
    - buf_size
    argTypes:
    - char*
    - struct in_addr
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1129
    functionName: prefix_mcast_inet4_dump
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - strlcpy
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void prefix_mcast_inet4_dump(const char *onfail, struct in_addr addr,\n\t\tchar
      *buf, int buf_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_mcast_inet4_dump
      Src: /src/frr/lib/prefix.c:1136,1
    - Dst: prefix_mcast_inet4_dump
      Src: /src/frr/lib/prefix.c:1137,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - sg
    - sg_str
    argTypes:
    - struct prefix_sg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1131
    functionDepth: 2
    functionLinenumber: 1131
    functionLinenumberEnd: 1141
    functionName: prefix_sg2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 2
    functionsReached:
    - prefix_mcast_inet4_dump
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *prefix_sg2str(const struct prefix_sg *sg, char *sg_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/prefix.c:1147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1143
    functionDepth: 0
    functionLinenumber: 1143
    functionLinenumberEnd: 1149
    functionName: prefix_new
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 13
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct prefix
    signature: struct prefix *prefix_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_free
      Src: /src/frr/lib/prefix.c:1155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1151
    functionDepth: 1
    functionLinenumber: 1151
    functionLinenumberEnd: 1156
    functionName: prefix_free_lists
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - prefix_free
    linkageType: ''
    returnType: void
    signature: void prefix_free_lists(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/prefix.c:1161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1162
    functionName: prefix_free
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 8
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void prefix_free(struct prefix **p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:1170,1
    - Dst: IN_CLASSC
      Src: /src/frr/lib/prefix.c:1175,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/lib/prefix.c:1177,1
    - Dst: IN_CLASSB
      Src: /src/frr/lib/prefix.c:1178,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/lib/prefix.c:1180,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/lib/prefix.c:1183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1165
    functionDepth: 3
    functionLinenumber: 1165
    functionLinenumberEnd: 1185
    functionName: apply_classful_mask_ipv4
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 1
    functionsReached:
    - IN_CLASSC
    - IN_CLASSB
    - ntohl
    - apply_mask_ipv4
    linkageType: ''
    returnType: void
    signature: void apply_classful_mask_ipv4(struct prefix_ipv4 *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: masklen2ip
      Src: /src/frr/lib/prefix.c:1191,1
    - Dst: htonl
      Src: /src/frr/lib/prefix.c:1198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - hostaddr
    - masklen
    argTypes:
    - in_addr_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1187
    functionDepth: 2
    functionLinenumber: 1187
    functionLinenumberEnd: 1199
    functionName: ipv4_broadcast_addr
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 4
    functionsReached:
    - htonl
    - masklen2ip
    linkageType: ''
    returnType: in_addr_t
    signature: in_addr_t ipv4_broadcast_addr(in_addr_t hostaddr, int masklen)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: inet_aton
      Src: /src/frr/lib/prefix.c:1213,1
    - Dst: inet_aton
      Src: /src/frr/lib/prefix.c:1218,1
    - Dst: ip_masklen
      Src: /src/frr/lib/prefix.c:1222,1
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:1224,1
    - Dst: IN_CLASSC
      Src: /src/frr/lib/prefix.c:1228,1
    - Dst: IN_CLASSB
      Src: /src/frr/lib/prefix.c:1230,1
    - Dst: IN_CLASSA
      Src: /src/frr/lib/prefix.c:1232,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1238,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - net_str
    - mask_str
    - prefix_str
    - prefix_str_len
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1241
    functionName: netmask_str2prefix_str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 1
    functionsReached:
    - snprintf
    - inet_aton
    - IN_CLASSC
    - ip_masklen
    - IN_CLASSA
    - IN_CLASSB
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int netmask_str2prefix_str(const char *net_str, const char *mask_str,\n\t\t\t
      \  char *prefix_str, size_t prefix_str_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/frr/lib/prefix.c:1256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - str
    - mac
    argTypes:
    - char*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1248
    functionDepth: 0
    functionLinenumber: 1248
    functionLinenumberEnd: 1268
    functionName: prefix_str2mac
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 3
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: int
    signature: int prefix_str2mac(const char *str, struct ethaddr *mac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/prefix.c:1277,1
    - Dst: assert
      Src: /src/frr/lib/prefix.c:1279,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - mac
    - buf
    - size
    argTypes:
    - struct ethaddr*
    - char*
    - int
    assertStmts:
    - condition: (size >= ETHER_ADDR_STRLEN)
      pos:
        line_end: 1278
        line_start: 1278
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 1287
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1287
    functionName: prefix_mac2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 31
    functionsReached:
    - snprintf
    - XMALLOC
    - assert
    linkageType: ''
    returnType: char
    signature: char *prefix_mac2str(const struct ethaddr *mac, char *buf, int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/prefix.c:1301,1
    - Dst: prefix_copy
      Src: /src/frr/lib/prefix.c:1302,1
    - Dst: jhash
      Src: /src/frr/lib/prefix.c:1303,1
    - Dst: XFREE
      Src: /src/frr/lib/prefix.c:1307,1
    - Dst: memset
      Src: /src/frr/lib/prefix.c:1314,1
    - Dst: prefix_copy
      Src: /src/frr/lib/prefix.c:1315,1
    - Dst: jhash
      Src: /src/frr/lib/prefix.c:1316,1
    - Dst: PSIZE
      Src: /src/frr/lib/prefix.c:1317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - pp
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1289
    functionDepth: 1
    functionLinenumber: 1289
    functionLinenumberEnd: 1319
    functionName: prefix_hash_key
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 9
    functionsReached:
    - PSIZE
    - memset
    - XFREE
    - jhash
    - prefix_copy
    linkageType: ''
    returnType: unsigned
    signature: unsigned prefix_hash_key(const void *pp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/frr/lib/prefix.c:1334,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - str
    - esi
    argTypes:
    - char*
    - esi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1326
    functionDepth: 0
    functionLinenumber: 1326
    functionLinenumberEnd: 1349
    functionName: str_to_esi
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - sscanf
    linkageType: ''
    returnType: int
    signature: int str_to_esi(const char *str, esi_t *esi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/prefix.c:1358,1
    - Dst: assert
      Src: /src/frr/lib/prefix.c:1360,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - esi
    - buf
    - size
    argTypes:
    - esi_t*
    - char*
    - int
    assertStmts:
    - condition: (size >= ESI_STR_LEN)
      pos:
        line_end: 1359
        line_start: 1359
        source_file: /src/frr/lib/prefix.c
    constantsTouched: []
    func_position:
      end: 1371
      start: 1351
    functionDepth: 1
    functionLinenumber: 1351
    functionLinenumberEnd: 1371
    functionName: esi_to_str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 34
    functionsReached:
    - snprintf
    - XMALLOC
    - assert
    linkageType: ''
    returnType: char
    signature: char *esi_to_str(const esi_t *esi, char *buf, int size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1377,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1381,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1385,1
    - Dst: snprintf
      Src: /src/frr/lib/prefix.c:1389,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - df_alg
    - buf
    - buf_len
    argTypes:
    - uint8_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1373
    functionDepth: 0
    functionLinenumber: 1373
    functionLinenumberEnd: 1394
    functionName: evpn_es_df_alg2str
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 3
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *evpn_es_df_alg2str(uint8_t df_alg, char *buf, int buf_len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.c:1398,1
    - Dst: IPV4_CLASS_D
      Src: /src/frr/lib/prefix.c:1400,1
    - Dst: IPV4_NET0
      Src: /src/frr/lib/prefix.c:1403,1
    - Dst: IPV4_NET127
      Src: /src/frr/lib/prefix.c:1403,1
    - Dst: IPV4_CLASS_E
      Src: /src/frr/lib/prefix.c:1403,1
    - Dst: cmd_allow_reserved_ranges_get
      Src: /src/frr/lib/prefix.c:1404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1411
    functionName: ipv4_unicast_valid
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 3
    functionsReached:
    - IPV4_CLASS_D
    - cmd_allow_reserved_ranges_get
    - IPV4_CLASS_E
    - IPV4_NET127
    - ntohl
    - IPV4_NET0
    linkageType: ''
    returnType: bool
    signature: bool ipv4_unicast_valid(const struct in_addr *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ip
    - prefixlen
    - p
    argTypes:
    - struct ipaddr*
    - uint16_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1413
    functionDepth: 0
    functionLinenumber: 1413
    functionLinenumberEnd: 1433
    functionName: ipaddr2prefix
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ipaddr2prefix(const struct ipaddr *ip, uint16_t prefixlen,\n\t\t\t
      struct prefix *p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.c:1451,1
    - Dst: ipaddr2prefix
      Src: /src/frr/lib/prefix.c:1452,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/lib/prefix.c:1454,1
    - Dst: ipaddr2prefix
      Src: /src/frr/lib/prefix.c:1455,1
    - Dst: ipaddr2prefix
      Src: /src/frr/lib/prefix.c:1462,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - evpn
    - to
    argTypes:
    - struct prefix*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1440
    functionDepth: 1
    functionLinenumber: 1440
    functionLinenumberEnd: 1470
    functionName: evpn_prefix2prefix
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 2
    functionsReached:
    - IS_IPADDR_V6
    - IS_IPADDR_V4
    - ipaddr2prefix
    linkageType: ''
    returnType: int
    signature: int evpn_prefix2prefix(const struct prefix *evpn, struct prefix *to)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1480,1
    - Dst: prefix_mac2str
      Src: /src/frr/lib/prefix.c:1483,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1473
    functionDepth: 2
    functionLinenumber: 1473
    functionLinenumberEnd: 1485
    functionName: printfrr_ea
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - prefix_mac2str
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_ea(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1501,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:1509,1
    - Dst: bputch
      Src: /src/frr/lib/prefix.c:1510,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:1514,1
    - Dst: bputch
      Src: /src/frr/lib/prefix.c:1515,1
    - Dst: ipaddr2str
      Src: /src/frr/lib/prefix.c:1523,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1524,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1488
    functionDepth: 1
    functionLinenumber: 1488
    functionLinenumberEnd: 1525
    functionName: printfrr_ia
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - ipaddr2str
    - bputch
    - bputs
    - memcmp
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_ia(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1541,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:1543,1
    - Dst: bputch
      Src: /src/frr/lib/prefix.c:1544,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:1546,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1547,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1528
    functionDepth: 1
    functionLinenumber: 1528
    functionLinenumberEnd: 1548
    functionName: printfrr_i4
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - bputch
    - bputs
    - memcmp
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_i4(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1564,1
    - Dst: memcmp
      Src: /src/frr/lib/prefix.c:1566,1
    - Dst: bputch
      Src: /src/frr/lib/prefix.c:1567,1
    - Dst: inet_ntop
      Src: /src/frr/lib/prefix.c:1569,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1570,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1551
    functionDepth: 1
    functionLinenumber: 1551
    functionLinenumberEnd: 1571
    functionName: printfrr_i6
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - bputch
    - bputs
    - memcmp
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_i6(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1585,1
    - Dst: prefixhost2str
      Src: /src/frr/lib/prefix.c:1588,1
    - Dst: prefix2str
      Src: /src/frr/lib/prefix.c:1592,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1593,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1574
    functionDepth: 4
    functionLinenumber: 1574
    functionLinenumberEnd: 1595
    functionName: printfrr_pfx
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - prefixhost2str
    - prefix2str
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_pfx(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \   const void *ptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1605,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1608,1
    - Dst: bprintfrr
      Src: /src/frr/lib/prefix.c:1610,1
    - Dst: bputs
      Src: /src/frr/lib/prefix.c:1613,1
    - Dst: bprintfrr
      Src: /src/frr/lib/prefix.c:1615,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1598
    functionDepth: 1
    functionLinenumber: 1598
    functionLinenumberEnd: 1618
    functionName: printfrr_psg
    functionSourceFile: /src/frr/lib/prefix.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_psg(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \   const void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - modinfo
    argTypes:
    - struct frrmod_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: frrmod_init
    functionSourceFile: /src/frr/lib/module.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void frrmod_init(struct frrmod_runtime *modinfo)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/module.c:87,1
    - Dst: snprintf
      Src: /src/frr/lib/module.c:119,1
    - Dst: strchr
      Src: /src/frr/lib/module.c:120,1
    - Dst: strchr
      Src: /src/frr/lib/module.c:124,1
    - Dst: snprintf
      Src: /src/frr/lib/module.c:126,1
    - Dst: dlopen
      Src: /src/frr/lib/module.c:128,1
    - Dst: ERR_RECORD
      Src: /src/frr/lib/module.c:130,1
    - Dst: dlerror
      Src: /src/frr/lib/module.c:131,1
    - Dst: snprintf
      Src: /src/frr/lib/module.c:134,1
    - Dst: dlopen
      Src: /src/frr/lib/module.c:136,1
    - Dst: ERR_RECORD
      Src: /src/frr/lib/module.c:138,1
    - Dst: dlerror
      Src: /src/frr/lib/module.c:139,1
    - Dst: snprintf
      Src: /src/frr/lib/module.c:143,1
    - Dst: dlopen
      Src: /src/frr/lib/module.c:144,1
    - Dst: ERR_RECORD
      Src: /src/frr/lib/module.c:146,1
    - Dst: dlerror
      Src: /src/frr/lib/module.c:147,1
    - Dst: dlsym
      Src: /src/frr/lib/module.c:158,1
    - Dst: dlclose
      Src: /src/frr/lib/module.c:160,1
    - Dst: ERR_RECORD
      Src: /src/frr/lib/module.c:161,1
    - Dst: dlerror
      Src: /src/frr/lib/module.c:161,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/module.c:167,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/module.c:170,1
    - Dst: dlclose
      Src: /src/frr/lib/module.c:174,1
    - Dst: ERR_RECORD
      Src: /src/frr/lib/module.c:175,1
    - Dst: struct frrmod_info*::init
      Src: /src/frr/lib/module.c:179,1
    - Dst: dlclose
      Src: /src/frr/lib/module.c:180,1
    - Dst: ERR_RECORD
      Src: /src/frr/lib/module.c:181,1
    - Dst: XFREE
      Src: /src/frr/lib/module.c:193,1
    - Dst: XFREE
      Src: /src/frr/lib/module.c:194,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 70
    argCount: 3
    argNames:
    - spec
    - dir
    - pErrlogCookie
    argTypes:
    - char*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 198
    functionName: frrmod_load
    functionSourceFile: /src/frr/lib/module.c
    functionUses: 1
    functionsReached:
    - dlerror
    - snprintf
    - memset
    - dlsym
    - dlopen
    - ERR_RECORD
    - strchr
    - XFREE
    - struct frrmod_info*::init
    - XSTRDUP
    - dlclose
    linkageType: ''
    returnType: struct frrmod_runtime
    signature: "struct frrmod_runtime *frrmod_load(const char *spec, const char *dir,\n\t\t\t\t
      \  void (*pFerrlog)(const void *, const char *),\n\t\t\t\t   const void *pErrlogCookie)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 96
    functionName: ERR_RECORD
    functionSourceFile: /src/frr/lib/module.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ERR_RECORD(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct frrmod_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 203
    functionName: frrmod_unload
    functionSourceFile: /src/frr/lib/module.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void frrmod_unload(struct frrmod_runtime *module)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mutex
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 221
    functionName: _frr_with_mutex
    functionSourceFile: /src/frr/lib/frr_pthread.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _frr_with_mutex(mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 226
    functionName: frr_with_mutex
    functionSourceFile: /src/frr/lib/frr_pthread.h
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_with_mutex(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mutex
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 238
    functionName: frr_mutex_lock_autounlock
    functionSourceFile: /src/frr/lib/frr_pthread.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_mutex_lock_autounlock(mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/frr_pthread.h:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mutex
    argTypes:
    - pthread_mutex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: _frr_mtx_lock
    functionSourceFile: /src/frr/lib/frr_pthread.h
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    linkageType: ''
    returnType: pthread_mutex_t
    signature: pthread_mutex_t *_frr_mtx_lock(pthread_mutex_t *mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/frr_pthread.h:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mutex
    argTypes:
    - pthread_mutex_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 251
    functionName: _frr_mtx_unlock
    functionSourceFile: /src/frr/lib/frr_pthread.h
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void _frr_mtx_unlock(pthread_mutex_t **mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: table_rdonly
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: table_rdonly(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: table_internal
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: table_internal(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: table_rdonly
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: table_rdonly(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: table_internal
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: table_internal(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: table_rdonly
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: table_rdonly(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: route_table_get_info
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *route_table_get_info(struct route_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - table
    - d
    argTypes:
    - struct route_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: route_table_set_info
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void route_table_set_info(struct route_table *table, void *d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: route_lock_node
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *route_lock_node(struct route_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/table.h:239,1
    - Dst: route_node_delete
      Src: /src/frr/lib/table.h:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts:
    - condition: (node->lock > 0)
      pos:
        line_end: 238
        line_start: 238
        source_file: /src/frr/lib/table.h
    constantsTouched: []
    func_position:
      end: 244
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 244
    functionName: route_unlock_node
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 173
    functionsReached:
    - route_node_delete
    - assert
    linkageType: ''
    returnType: void
    signature: void route_unlock_node(struct route_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: route_node_get_lock_count
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int route_node_get_lock_count(struct route_node *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/lib/table.h:267,1
    - Dst: route_next
      Src: /src/frr/lib/table.h:271,1
    - Dst: route_table_get_next
      Src: /src/frr/lib/table.h:279,1
    - Dst: assert
      Src: /src/frr/lib/table.h:288,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - iter
    argTypes:
    - route_table_iter_t*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 287
        line_start: 287
        source_file: /src/frr/lib/table.h
    constantsTouched: []
    func_position:
      end: 298
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 298
    functionName: route_table_iter_next
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 6
    functionsReached:
    - route_table_get_next
    - route_top
    - assert
    - route_next
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *route_table_iter_next(route_table_iter_t *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - route_table_iter_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 308
    functionName: route_table_iter_is_done
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int route_table_iter_is_done(route_table_iter_t *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iter
    argTypes:
    - route_table_iter_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 318
    functionName: route_table_iter_started
    functionSourceFile: /src/frr/lib/table.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int route_table_iter_started(route_table_iter_t *iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/srcdest_table.c:32,1
    - Dst: rnode_is_dstnode
      Src: /src/frr/lib/srcdest_table.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts:
    - condition: (rnode_is_dstnode(rn))
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/frr/lib/srcdest_table.c
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: srcdest_rnode_from_rnode
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - rnode_is_dstnode
    - assert
    linkageType: ''
    returnType: struct srcdest_rnode
    signature: struct srcdest_rnode *srcdest_rnode_from_rnode(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srn
    argTypes:
    - struct srcdest_rnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: srcdest_rnode_to_rnode
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *srcdest_rnode_to_rnode(struct srcdest_rnode *srn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/srcdest_table.c:45,1
    - Dst: srcdest_rnode_to_rnode
      Src: /src/frr/lib/srcdest_table.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - delegate
    - table
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: srcdest_rnode_create
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - srcdest_rnode_to_rnode
    - XCALLOC
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *srcdest_rnode_create(route_table_delegate_t *delegate,\n\t\t\t\t\t
      \      struct route_table *table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_from_rnode
      Src: /src/frr/lib/srcdest_table.c:53,1
    - Dst: route_table_finish
      Src: /src/frr/lib/srcdest_table.c:64,1
    - Dst: XFREE
      Src: /src/frr/lib/srcdest_table.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - delegate
    - table
    - rn
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 66
    functionName: srcdest_rnode_destroy
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - route_table_finish
    - XFREE
    - srcdest_rnode_from_rnode
    linkageType: ''
    returnType: void
    signature: "void srcdest_rnode_destroy(route_table_delegate_t *delegate,\n\t\t\t\t
      \ struct route_table *table,\n\t\t\t\t  struct route_node *rn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/srcdest_table.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - delegate
    - table
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: srcdest_srcnode_create
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *\nsrcdest_srcnode_create(route_table_delegate_t
      *delegate,\n\t\t       struct route_table *table)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/srcdest_table.c:92,1
    - Dst: route_table_get_info
      Src: /src/frr/lib/srcdest_table.c:94,1
    - Dst: route_table_count
      Src: /src/frr/lib/srcdest_table.c:95,1
    - Dst: route_table_finish
      Src: /src/frr/lib/srcdest_table.c:100,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/srcdest_table.c:108,1
    - Dst: srcdest_rnode_to_rnode
      Src: /src/frr/lib/srcdest_table.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - delegate
    - table
    - rn
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 110
    functionName: srcdest_srcnode_destroy
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_table_finish
    - route_table_get_info
    - srcdest_rnode_to_rnode
    - route_table_count
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void srcdest_srcnode_destroy(route_table_delegate_t *delegate,\n\t\t\t\t
      \   struct route_table *table,\n\t\t\t\t    struct route_node *rn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_from_rnode
      Src: /src/frr/lib/srcdest_table.c:125,1
    - Dst: route_table_init_with_delegate
      Src: /src/frr/lib/srcdest_table.c:129,1
    - Dst: route_table_set_info
      Src: /src/frr/lib/srcdest_table.c:131,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/srcdest_table.c:146,1
    - Dst: route_node_get
      Src: /src/frr/lib/srcdest_table.c:149,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - rn
    - src_p
    argTypes:
    - struct route_node*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 150
    functionName: srcdest_srcnode_get
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - srcdest_rnode_from_rnode
    - route_node_get
    - route_table_set_info
    - route_table_init_with_delegate
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *srcdest_srcnode_get(struct route_node *rn,\n\t\t\t\t\t
      \     const struct prefix_ipv6 *src_p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_unlock_node
      Src: /src/frr/lib/srcdest_table.c:166,1
    - Dst: srcdest_rnode_from_rnode
      Src: /src/frr/lib/srcdest_table.c:168,1
    - Dst: route_node_lookup
      Src: /src/frr/lib/srcdest_table.c:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - rn
    - src_p
    argTypes:
    - struct route_node*
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 173
    functionName: srcdest_srcnode_lookup
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - srcdest_rnode_from_rnode
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *srcdest_srcnode_lookup(\n\tstruct route_node *rn,\n\tconst
      struct prefix_ipv6 *src_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init_with_delegate
      Src: /src/frr/lib/srcdest_table.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 180
    functionName: srcdest_table_init
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 6
    functionsReached:
    - route_table_init_with_delegate
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *srcdest_table_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rnode_is_dstnode
      Src: /src/frr/lib/srcdest_table.c:187,1
    - Dst: rnode_is_srcnode
      Src: /src/frr/lib/srcdest_table.c:187,1
    - Dst: route_next
      Src: /src/frr/lib/srcdest_table.c:188,1
    - Dst: rnode_is_dstnode
      Src: /src/frr/lib/srcdest_table.c:190,1
    - Dst: srcdest_rnode_from_rnode
      Src: /src/frr/lib/srcdest_table.c:193,1
    - Dst: route_top
      Src: /src/frr/lib/srcdest_table.c:196,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/srcdest_table.c:202,1
    - Dst: route_next
      Src: /src/frr/lib/srcdest_table.c:206,1
    - Dst: route_lock_node
      Src: /src/frr/lib/srcdest_table.c:211,1
    - Dst: route_table_get_info
      Src: /src/frr/lib/srcdest_table.c:211,1
    - Dst: route_next
      Src: /src/frr/lib/srcdest_table.c:212,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/srcdest_table.c:216,1
    - Dst: route_next
      Src: /src/frr/lib/srcdest_table.c:220,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 222
    functionName: srcdest_route_next
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 26
    functionsReached:
    - route_unlock_node
    - route_lock_node
    - route_table_get_info
    - rnode_is_dstnode
    - route_top
    - srcdest_rnode_from_rnode
    - route_next
    - rnode_is_srcnode
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *srcdest_route_next(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/lib/srcdest_table.c:231,1
    - Dst: srcdest_srcnode_get
      Src: /src/frr/lib/srcdest_table.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - table
    - dst_pu
    - src_p
    argTypes:
    - struct route_table*
    - union prefixconstptr
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 233
    functionName: srcdest_rnode_get
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 10
    functionsReached:
    - srcdest_srcnode_get
    - route_node_get
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *srcdest_rnode_get(struct route_table *table,\n\t\t\t\t
      \    union prefixconstptr dst_pu,\n\t\t\t\t     const struct prefix_ipv6 *src_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup_maynull
      Src: /src/frr/lib/srcdest_table.c:243,1
    - Dst: srcdest_srcnode_lookup
      Src: /src/frr/lib/srcdest_table.c:244,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/srcdest_table.c:249,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - table
    - dst_pu
    - src_p
    argTypes:
    - struct route_table*
    - union prefixconstptr
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 253
    functionName: srcdest_rnode_lookup
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 8
    functionsReached:
    - route_node_lookup_maynull
    - route_unlock_node
    - srcdest_srcnode_lookup
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *srcdest_rnode_lookup(struct route_table *table,\n\t\t\t\t\tunion
      prefixconstptr dst_pu,\n\t\t\t\t\tconst struct prefix_ipv6 *src_p)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rnode_is_srcnode
      Src: /src/frr/lib/srcdest_table.c:259,1
    - Dst: route_table_get_info
      Src: /src/frr/lib/srcdest_table.c:260,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - rn
    - p
    - src_p
    argTypes:
    - struct route_node*
    - struct prefix**
    - struct prefix**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 271
    functionName: srcdest_rnode_prefixes
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 15
    functionsReached:
    - rnode_is_srcnode
    - route_table_get_info
    linkageType: ''
    returnType: void
    signature: "void srcdest_rnode_prefixes(const struct route_node *rn,\n\t\t\t    const
      struct prefix **p,\n\t\t\t    const struct prefix **src_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/srcdest_table.c:279,1
    - Dst: prefix2str
      Src: /src/frr/lib/srcdest_table.c:280,1
    - Dst: prefix2str
      Src: /src/frr/lib/srcdest_table.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - dst_p
    - src_p
    - str
    - size
    argTypes:
    - struct prefix*
    - struct prefix_ipv6*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 273
    functionDepth: 4
    functionLinenumber: 273
    functionLinenumberEnd: 286
    functionName: srcdest2str
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 3
    functionsReached:
    - prefix2str
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *srcdest2str(const struct prefix *dst_p,\n\t\t\tconst struct
      prefix_ipv6 *src_p,\n\t\t\tchar *str, int size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/lib/srcdest_table.c:292,1
    - Dst: srcdest2str
      Src: /src/frr/lib/srcdest_table.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rn
    - str
    - size
    argTypes:
    - struct route_node*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 288
    functionDepth: 5
    functionLinenumber: 288
    functionLinenumberEnd: 294
    functionName: srcdest_rnode2str
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 5
    functionsReached:
    - srcdest2str
    - srcdest_rnode_prefixes
    linkageType: ''
    returnType: char
    signature: char *srcdest_rnode2str(const struct route_node *rn, char *str, int
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/srcdest_table.c:305,1
    - Dst: srcdest_rnode_prefixes
      Src: /src/frr/lib/srcdest_table.c:307,1
    - Dst: srcdest2str
      Src: /src/frr/lib/srcdest_table.c:308,1
    - Dst: bputs
      Src: /src/frr/lib/srcdest_table.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 297
    functionDepth: 5
    functionLinenumber: 297
    functionLinenumberEnd: 311
    functionName: printfrr_rn
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 0
    functionsReached:
    - srcdest2str
    - srcdest_rnode_prefixes
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_rn(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rnode_is_dstnode
      Src: /src/frr/lib/srcdest_table.c:315,1
    - Dst: srcdest_rnode_from_rnode
      Src: /src/frr/lib/srcdest_table.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 321
    functionName: srcdest_srcnode_table
    functionSourceFile: /src/frr/lib/srcdest_table.c
    functionUses: 2
    functionsReached:
    - rnode_is_dstnode
    - srcdest_rnode_from_rnode
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *srcdest_srcnode_table(struct route_node *rn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/filter_nb.c:34,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - acl
    - route_map_event
    argTypes:
    - struct access_list*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 35
    functionName: acl_notify_route_map
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void acl_notify_route_map(struct access_list *acl, int route_map_event)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:39,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_nb.c:45,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_nb.c:49,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:58,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:59,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:68,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:69,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:78,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:79,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:80,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:81,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:89,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 94
    functionName: prefix_list_length_validate
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - snprintfrr
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: enum nb_error
    signature: enum nb_error prefix_list_length_validate(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/filter_nb.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ple
    argTypes:
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 107
    functionName: prefix_list_entry_set_empty
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void prefix_list_entry_set_empty(struct prefix_list_entry *ple)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:115,1
    - Dst: snprintf
      Src: /src/frr/lib/filter_nb.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - plist_dnode
    - errmsg
    - errmsg_len
    argTypes:
    - struct lyd_node*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 123
    functionName: prefix_list_nb_validate_v4_af_type
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int prefix_list_nb_validate_v4_af_type(const struct lyd_node *plist_dnode,\n\t\t\t\t
      \  char *errmsg, size_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:131,1
    - Dst: snprintf
      Src: /src/frr/lib/filter_nb.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - plist_dnode
    - errmsg
    - errmsg_len
    argTypes:
    - struct lyd_node*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 139
    functionName: prefix_list_nb_validate_v6_af_type
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int prefix_list_nb_validate_v6_af_type(const struct lyd_node *plist_dnode,\n\t\t\t\t
      \  char *errmsg, size_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:149,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:152,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:154,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 160
    functionName: lib_prefix_list_entry_prefix_length_greater_or_equal_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - prefix_list_entry_update_finish
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_prefix_length_greater_or_equal_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:170,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:173,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:175,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 181
    functionName: lib_prefix_list_entry_prefix_length_lesser_or_equal_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - prefix_list_entry_update_finish
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_prefix_length_lesser_or_equal_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:191,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:194,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 202
    functionName: lib_prefix_list_entry_prefix_length_greater_or_equal_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - prefix_list_entry_update_finish
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_prefix_length_greater_or_equal_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:212,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:215,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 223
    functionName: lib_prefix_list_entry_prefix_length_lesser_or_equal_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - prefix_list_entry_update_finish
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_prefix_length_lesser_or_equal_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - addr
    - mask
    argTypes:
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: cisco_unset_addr_mask
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cisco_unset_addr_mask(struct in_addr *addr, struct in_addr *mask)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/filter_nb.c:248,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:248,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:258,1
    - Dst: strcmp
      Src: /src/frr/lib/filter_nb.c:262,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:262,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_nb.c:269,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 272
    functionName: _acl_is_dup
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - strcmp
    - yang_dnode_get_string
    - yang_dnode_exists
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int _acl_is_dup(const struct lyd_node *dnode, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_iterate
      Src: /src/frr/lib/filter_nb.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - ada
    argTypes:
    - struct lyd_node*
    - struct acl_dup_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 284
    functionName: acl_is_dup
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_iterate
    linkageType: ''
    returnType: bool
    signature: bool acl_is_dup(const struct lyd_node *dnode, struct acl_dup_args *ada)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:289,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:306,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:307,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:312,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:318,1
    - Dst: acl_is_dup
      Src: /src/frr/lib/filter_nb.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 325
    functionName: acl_cisco_is_dup
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - acl_is_dup
    - yang_dnode_get_string
    - yang_dnode_exists
    linkageType: ''
    returnType: bool
    signature: bool acl_cisco_is_dup(const struct lyd_node *dnode)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:331,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:356,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:357,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:362,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:368,1
    - Dst: acl_is_dup
      Src: /src/frr/lib/filter_nb.c:374,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - dnode
    - type
    argTypes:
    - struct lyd_node*
    - enum yang_access_list_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 375
    functionName: acl_zebra_is_dup
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - acl_is_dup
    - yang_dnode_get_string
    - yang_dnode_exists
    linkageType: ''
    returnType: bool
    signature: "bool acl_zebra_is_dup(const struct lyd_node *dnode,\n\t\t\t     enum
      yang_access_list_type type)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:384,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:389,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_nb.c:391,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:392,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:394,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:396,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:398,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_nb.c:402,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:403,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:405,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/filter_nb.c:407,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/lib/filter_nb.c:409,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 5
    argNames:
    - dnode
    - any
    - p
    - ge
    - le
    argTypes:
    - struct lyd_node*
    - bool*
    - struct prefix*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 413
    functionName: plist_dnode_to_prefix
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    - yang_dnode_get_uint8
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void plist_dnode_to_prefix(const struct lyd_node *dnode, bool *any,\n\t\t\t\t
      \ struct prefix *p, int *ge, int *le)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/filter_nb.c:427,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:427,1
    - Dst: plist_dnode_to_prefix
      Src: /src/frr/lib/filter_nb.c:430,1
    - Dst: prefix_same
      Src: /src/frr/lib/filter_nb.c:436,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_nb.c:442,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 445
    functionName: _plist_is_dup
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - strcmp
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - plist_dnode_to_prefix
    linkageType: ''
    returnType: int
    signature: int _plist_is_dup(const struct lyd_node *dnode, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_iterate
      Src: /src/frr/lib/filter_nb.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - pda
    argTypes:
    - struct lyd_node*
    - struct plist_dup_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 457
    functionName: plist_is_dup
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 1
    functionsReached:
    - yang_dnode_iterate
    linkageType: ''
    returnType: bool
    signature: bool plist_is_dup(const struct lyd_node *dnode, struct plist_dup_args
      *pda)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:471,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:472,1
    - Dst: access_list_get
      Src: /src/frr/lib/filter_nb.c:476,1
    - Dst: access_list_get
      Src: /src/frr/lib/filter_nb.c:479,1
    - Dst: access_list_get
      Src: /src/frr/lib/filter_nb.c:482,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/filter_nb.c:486,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 489
    functionName: lib_access_list_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - access_list_get
    - yang_dnode_get_enum
    - nb_running_set_entry
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_access_list_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/filter_nb.c:498,1
    - Dst: access_list_delete
      Src: /src/frr/lib/filter_nb.c:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 502
    functionName: lib_access_list_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - access_list_delete
    linkageType: ''
    returnType: int
    signature: int lib_access_list_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:515,1
    - Dst: XFREE
      Src: /src/frr/lib/filter_nb.c:517,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:519,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/filter_nb.c:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 523
    functionName: lib_access_list_remark_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_access_list_remark_modify(struct nb_cb_modify_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:533,1
    - Dst: XFREE
      Src: /src/frr/lib/filter_nb.c:535,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 538
    functionName: lib_access_list_remark_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_access_list_remark_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: filter_new
      Src: /src/frr/lib/filter_nb.c:552,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_nb.c:553,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:555,1
    - Dst: access_list_filter_add
      Src: /src/frr/lib/filter_nb.c:557,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/filter_nb.c:558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 561
    functionName: lib_access_list_entry_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - access_list_filter_add
    - nb_running_get_entry
    - yang_dnode_get_uint32
    - filter_new
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/filter_nb.c:571,1
    - Dst: access_list_filter_delete
      Src: /src/frr/lib/filter_nb.c:573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 576
    functionName: lib_access_list_entry_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - access_list_filter_delete
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:590,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:591,1
    - Dst: strcmp
      Src: /src/frr/lib/filter_nb.c:592,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:597,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 581
    functionDepth: 3
    functionLinenumber: 581
    functionLinenumberEnd: 600
    functionName: lib_access_list_entry_action_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - acl_notify_route_map
    - strcmp
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_action_modify(struct nb_cb_modify_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_zebra_is_dup
      Src: /src/frr/lib/filter_nb.c:613,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:615,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:616,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:618,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:627,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_nb.c:630,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:632,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 605
    functionDepth: 3
    functionLinenumber: 605
    functionLinenumberEnd: 635
    functionName: lib_access_list_entry_ipv4_prefix_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - acl_zebra_is_dup
    - nb_running_get_entry
    - snprintfrr
    - acl_notify_route_map
    - yang_dnode_get_string
    - yang_dnode_get_prefix
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_ipv4_prefix_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:646,1
    - Dst: memset
      Src: /src/frr/lib/filter_nb.c:648,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 637
    functionDepth: 3
    functionLinenumber: 637
    functionLinenumberEnd: 653
    functionName: lib_access_list_entry_ipv4_prefix_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - memset
    - acl_notify_route_map
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_ipv4_prefix_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_zebra_is_dup
      Src: /src/frr/lib/filter_nb.c:666,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:668,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:669,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:671,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:680,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/filter_nb.c:682,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:684,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 658
    functionDepth: 3
    functionLinenumber: 658
    functionLinenumberEnd: 687
    functionName: lib_access_list_entry_ipv4_exact_match_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - acl_zebra_is_dup
    - nb_running_get_entry
    - snprintfrr
    - acl_notify_route_map
    - yang_dnode_get_string
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_ipv4_exact_match_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:698,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:702,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 705
    functionName: lib_access_list_entry_ipv4_exact_match_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_notify_route_map
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_ipv4_exact_match_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:718,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:719,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:721,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:730,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_nb.c:733,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:736,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 710
    functionDepth: 3
    functionLinenumber: 710
    functionLinenumberEnd: 739
    functionName: lib_access_list_entry_host_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - snprintfrr
    - yang_dnode_get_ipv4
    - acl_notify_route_map
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_host_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:750,1
    - Dst: cisco_unset_addr_mask
      Src: /src/frr/lib/filter_nb.c:752,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 757
    functionName: lib_access_list_entry_host_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - cisco_unset_addr_mask
    - nb_running_get_entry
    - acl_notify_route_map
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_host_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:770,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:771,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:773,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:782,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_nb.c:785,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:787,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 762
    functionDepth: 3
    functionLinenumber: 762
    functionLinenumberEnd: 790
    functionName: lib_access_list_entry_network_address_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - snprintfrr
    - yang_dnode_get_ipv4
    - acl_notify_route_map
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_network_address_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:803,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:804,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:806,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:815,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_nb.c:818,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 795
    functionDepth: 3
    functionLinenumber: 795
    functionLinenumberEnd: 823
    functionName: lib_access_list_entry_network_mask_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - snprintfrr
    - yang_dnode_get_ipv4
    - acl_notify_route_map
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_network_mask_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:836,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:837,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:839,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:848,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:854,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 828
    functionDepth: 3
    functionLinenumber: 828
    functionLinenumberEnd: 857
    functionName: lib_access_list_entry_source_any_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - acl_notify_route_map
    - snprintfrr
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_source_any_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:868,1
    - Dst: cisco_unset_addr_mask
      Src: /src/frr/lib/filter_nb.c:870,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:872,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 859
    functionDepth: 3
    functionLinenumber: 859
    functionLinenumberEnd: 875
    functionName: lib_access_list_entry_source_any_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - cisco_unset_addr_mask
    - nb_running_get_entry
    - acl_notify_route_map
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_source_any_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:888,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:889,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:891,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:900,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_nb.c:903,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:906,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 880
    functionDepth: 3
    functionLinenumber: 880
    functionLinenumberEnd: 909
    functionName: lib_access_list_entry_destination_host_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - snprintfrr
    - yang_dnode_get_ipv4
    - acl_notify_route_map
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: "int lib_access_list_entry_destination_host_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:920,1
    - Dst: cisco_unset_addr_mask
      Src: /src/frr/lib/filter_nb.c:923,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 911
    functionDepth: 3
    functionLinenumber: 911
    functionLinenumberEnd: 928
    functionName: lib_access_list_entry_destination_host_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - cisco_unset_addr_mask
    - nb_running_get_entry
    - acl_notify_route_map
    linkageType: ''
    returnType: int
    signature: "int lib_access_list_entry_destination_host_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:941,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:942,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:944,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:953,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_nb.c:956,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:958,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 933
    functionDepth: 3
    functionLinenumber: 933
    functionLinenumberEnd: 961
    functionName: lib_access_list_entry_destination_network_address_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - snprintfrr
    - yang_dnode_get_ipv4
    - acl_notify_route_map
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: "int lib_access_list_entry_destination_network_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:974,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:975,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:977,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:986,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/filter_nb.c:989,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:991,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 966
    functionDepth: 3
    functionLinenumber: 966
    functionLinenumberEnd: 994
    functionName: lib_access_list_entry_destination_network_mask_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - snprintfrr
    - yang_dnode_get_ipv4
    - acl_notify_route_map
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: "int lib_access_list_entry_destination_network_mask_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_cisco_is_dup
      Src: /src/frr/lib/filter_nb.c:1007,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:1008,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:1010,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1019,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:1025,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 999
    functionDepth: 3
    functionLinenumber: 999
    functionLinenumberEnd: 1028
    functionName: lib_access_list_entry_destination_any_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_cisco_is_dup
    - acl_notify_route_map
    - snprintfrr
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: "int lib_access_list_entry_destination_any_create(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1039,1
    - Dst: cisco_unset_addr_mask
      Src: /src/frr/lib/filter_nb.c:1042,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:1044,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1030
    functionDepth: 3
    functionLinenumber: 1030
    functionLinenumberEnd: 1047
    functionName: lib_access_list_entry_destination_any_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - cisco_unset_addr_mask
    - nb_running_get_entry
    - acl_notify_route_map
    linkageType: ''
    returnType: int
    signature: "int lib_access_list_entry_destination_any_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: acl_zebra_is_dup
      Src: /src/frr/lib/filter_nb.c:1060,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:1062,1
    - Dst: snprintfrr
      Src: /src/frr/lib/filter_nb.c:1063,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:1065,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1074,1
    - Dst: memset
      Src: /src/frr/lib/filter_nb.c:1077,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:1079,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:1092,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1052
    functionDepth: 3
    functionLinenumber: 1052
    functionLinenumberEnd: 1095
    functionName: lib_access_list_entry_any_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - memset
    - acl_zebra_is_dup
    - nb_running_get_entry
    - snprintfrr
    - acl_notify_route_map
    - yang_dnode_get_string
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_any_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1105,1
    - Dst: acl_notify_route_map
      Src: /src/frr/lib/filter_nb.c:1109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1112
    functionName: lib_access_list_entry_any_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - acl_notify_route_map
    linkageType: ''
    returnType: int
    signature: int lib_access_list_entry_any_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:1126,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:1127,1
    - Dst: prefix_list_get
      Src: /src/frr/lib/filter_nb.c:1130,1
    - Dst: prefix_list_get
      Src: /src/frr/lib/filter_nb.c:1133,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/filter_nb.c:1137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1117
    functionDepth: 1
    functionLinenumber: 1117
    functionLinenumberEnd: 1140
    functionName: lib_prefix_list_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - prefix_list_get
    - yang_dnode_get_string
    - nb_running_set_entry
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/filter_nb.c:1149,1
    - Dst: prefix_list_delete
      Src: /src/frr/lib/filter_nb.c:1150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1142
    functionDepth: 1
    functionLinenumber: 1142
    functionLinenumberEnd: 1153
    functionName: lib_prefix_list_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - prefix_list_delete
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1166,1
    - Dst: XFREE
      Src: /src/frr/lib/filter_nb.c:1168,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/filter_nb.c:1170,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/filter_nb.c:1171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1158
    functionDepth: 1
    functionLinenumber: 1158
    functionLinenumberEnd: 1174
    functionName: lib_prefix_list_remark_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_remark_modify(struct nb_cb_modify_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1183,1
    - Dst: XFREE
      Src: /src/frr/lib/filter_nb.c:1185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1176
    functionDepth: 1
    functionLinenumber: 1176
    functionLinenumberEnd: 1188
    functionName: lib_prefix_list_remark_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_remark_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1201,1
    - Dst: prefix_list_entry_new
      Src: /src/frr/lib/filter_nb.c:1202,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/filter_nb.c:1204,1
    - Dst: prefix_list_entry_set_empty
      Src: /src/frr/lib/filter_nb.c:1205,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/filter_nb.c:1206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1193
    functionDepth: 1
    functionLinenumber: 1193
    functionLinenumberEnd: 1209
    functionName: lib_prefix_list_entry_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - nb_running_get_entry
    - prefix_list_entry_new
    - prefix_list_entry_set_empty
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_create(struct nb_cb_create_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/filter_nb.c:1218,1
    - Dst: prefix_list_entry_delete2
      Src: /src/frr/lib/filter_nb.c:1220,1
    - Dst: prefix_list_entry_free
      Src: /src/frr/lib/filter_nb.c:1222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1225
    functionName: lib_prefix_list_entry_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - prefix_list_entry_free
    - prefix_list_entry_delete2
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1238,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:1241,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:1243,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:1250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1230
    functionDepth: 1
    functionLinenumber: 1230
    functionLinenumberEnd: 1253
    functionName: lib_prefix_list_entry_action_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    - prefix_list_entry_update_finish
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_action_modify(struct nb_cb_modify_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1263,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:1266,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/lib/filter_nb.c:1268,1
    - Dst: prefix_copy
      Src: /src/frr/lib/filter_nb.c:1271,1
    - Dst: apply_mask
      Src: /src/frr/lib/filter_nb.c:1272,1
    - Dst: prefix_same
      Src: /src/frr/lib/filter_nb.c:1273,1
    - Dst: zlog_info
      Src: /src/frr/lib/filter_nb.c:1274,1
    - Dst: prefix_copy
      Src: /src/frr/lib/filter_nb.c:1276,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:1281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1255
    functionDepth: 4
    functionLinenumber: 1255
    functionLinenumberEnd: 1284
    functionName: lib_prefix_list_entry_prefix_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - prefix_same
    - apply_mask
    - nb_running_get_entry
    - prefix_list_entry_update_start
    - yang_dnode_get_prefix
    - prefix_copy
    - prefix_list_entry_update_finish
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_prefix_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1293,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:1296,1
    - Dst: memset
      Src: /src/frr/lib/filter_nb.c:1298,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:1301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1286
    functionDepth: 1
    functionLinenumber: 1286
    functionLinenumberEnd: 1304
    functionName: lib_prefix_list_entry_prefix_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - prefix_list_entry_update_finish
    - nb_running_get_entry
    - memset
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_prefix_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1314,1
    - Dst: prefix_list_nb_validate_v4_af_type
      Src: /src/frr/lib/filter_nb.c:1316,1
    - Dst: lib_prefix_list_entry_prefix_modify
      Src: /src/frr/lib/filter_nb.c:1320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1309
    functionDepth: 5
    functionLinenumber: 1309
    functionLinenumberEnd: 1321
    functionName: lib_prefix_list_entry_ipv4_prefix_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - lib_prefix_list_entry_prefix_modify
    - prefix_list_nb_validate_v4_af_type
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_ipv4_prefix_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_prefix_list_entry_prefix_destroy
      Src: /src/frr/lib/filter_nb.c:1330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1323
    functionDepth: 2
    functionLinenumber: 1323
    functionLinenumberEnd: 1331
    functionName: lib_prefix_list_entry_ipv4_prefix_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - lib_prefix_list_entry_prefix_destroy
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_ipv4_prefix_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1342,1
    - Dst: prefix_list_nb_validate_v6_af_type
      Src: /src/frr/lib/filter_nb.c:1344,1
    - Dst: lib_prefix_list_entry_prefix_modify
      Src: /src/frr/lib/filter_nb.c:1348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1336
    functionDepth: 5
    functionLinenumber: 1336
    functionLinenumberEnd: 1349
    functionName: lib_prefix_list_entry_ipv6_prefix_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - prefix_list_nb_validate_v6_af_type
    - yang_dnode_get_parent
    - lib_prefix_list_entry_prefix_modify
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_ipv6_prefix_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_prefix_list_entry_prefix_destroy
      Src: /src/frr/lib/filter_nb.c:1358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1351
    functionDepth: 2
    functionLinenumber: 1351
    functionLinenumberEnd: 1359
    functionName: lib_prefix_list_entry_ipv6_prefix_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - lib_prefix_list_entry_prefix_destroy
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_ipv6_prefix_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_length_validate
      Src: /src/frr/lib/filter_nb.c:1368,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1373,1
    - Dst: prefix_list_nb_validate_v4_af_type
      Src: /src/frr/lib/filter_nb.c:1375,1
    - Dst: lib_prefix_list_entry_prefix_length_greater_or_equal_modify
      Src: /src/frr/lib/filter_nb.c:1379,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1364
    functionDepth: 2
    functionLinenumber: 1364
    functionLinenumberEnd: 1381
    functionName: lib_prefix_list_entry_ipv4_prefix_length_greater_or_equal_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - prefix_list_length_validate
    - prefix_list_nb_validate_v4_af_type
    - lib_prefix_list_entry_prefix_length_greater_or_equal_modify
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv4_prefix_length_greater_or_equal_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1388,1
    - Dst: prefix_list_nb_validate_v4_af_type
      Src: /src/frr/lib/filter_nb.c:1390,1
    - Dst: lib_prefix_list_entry_prefix_length_greater_or_equal_destroy
      Src: /src/frr/lib/filter_nb.c:1394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1383
    functionDepth: 2
    functionLinenumber: 1383
    functionLinenumberEnd: 1396
    functionName: lib_prefix_list_entry_ipv4_prefix_length_greater_or_equal_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - lib_prefix_list_entry_prefix_length_greater_or_equal_destroy
    - yang_dnode_get_parent
    - prefix_list_nb_validate_v4_af_type
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv4_prefix_length_greater_or_equal_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_length_validate
      Src: /src/frr/lib/filter_nb.c:1405,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1410,1
    - Dst: prefix_list_nb_validate_v4_af_type
      Src: /src/frr/lib/filter_nb.c:1412,1
    - Dst: lib_prefix_list_entry_prefix_length_lesser_or_equal_modify
      Src: /src/frr/lib/filter_nb.c:1416,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1401
    functionDepth: 2
    functionLinenumber: 1401
    functionLinenumberEnd: 1418
    functionName: lib_prefix_list_entry_ipv4_prefix_length_lesser_or_equal_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - prefix_list_length_validate
    - lib_prefix_list_entry_prefix_length_lesser_or_equal_modify
    - prefix_list_nb_validate_v4_af_type
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv4_prefix_length_lesser_or_equal_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1425,1
    - Dst: prefix_list_nb_validate_v4_af_type
      Src: /src/frr/lib/filter_nb.c:1427,1
    - Dst: lib_prefix_list_entry_prefix_length_lesser_or_equal_destroy
      Src: /src/frr/lib/filter_nb.c:1431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1420
    functionDepth: 2
    functionLinenumber: 1420
    functionLinenumberEnd: 1433
    functionName: lib_prefix_list_entry_ipv4_prefix_length_lesser_or_equal_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - lib_prefix_list_entry_prefix_length_lesser_or_equal_destroy
    - prefix_list_nb_validate_v4_af_type
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv4_prefix_length_lesser_or_equal_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_length_validate
      Src: /src/frr/lib/filter_nb.c:1442,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1447,1
    - Dst: prefix_list_nb_validate_v6_af_type
      Src: /src/frr/lib/filter_nb.c:1449,1
    - Dst: lib_prefix_list_entry_prefix_length_greater_or_equal_modify
      Src: /src/frr/lib/filter_nb.c:1453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1438
    functionDepth: 2
    functionLinenumber: 1438
    functionLinenumberEnd: 1455
    functionName: lib_prefix_list_entry_ipv6_prefix_length_greater_or_equal_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - prefix_list_nb_validate_v6_af_type
    - yang_dnode_get_parent
    - prefix_list_length_validate
    - lib_prefix_list_entry_prefix_length_greater_or_equal_modify
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv6_prefix_length_greater_or_equal_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1462,1
    - Dst: prefix_list_nb_validate_v6_af_type
      Src: /src/frr/lib/filter_nb.c:1464,1
    - Dst: lib_prefix_list_entry_prefix_length_greater_or_equal_destroy
      Src: /src/frr/lib/filter_nb.c:1468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1457
    functionDepth: 2
    functionLinenumber: 1457
    functionLinenumberEnd: 1470
    functionName: lib_prefix_list_entry_ipv6_prefix_length_greater_or_equal_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - prefix_list_nb_validate_v6_af_type
    - yang_dnode_get_parent
    - lib_prefix_list_entry_prefix_length_greater_or_equal_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv6_prefix_length_greater_or_equal_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_length_validate
      Src: /src/frr/lib/filter_nb.c:1479,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1484,1
    - Dst: prefix_list_nb_validate_v6_af_type
      Src: /src/frr/lib/filter_nb.c:1486,1
    - Dst: lib_prefix_list_entry_prefix_length_lesser_or_equal_modify
      Src: /src/frr/lib/filter_nb.c:1490,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1475
    functionDepth: 2
    functionLinenumber: 1475
    functionLinenumberEnd: 1492
    functionName: lib_prefix_list_entry_ipv6_prefix_length_lesser_or_equal_modify
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - prefix_list_nb_validate_v6_af_type
    - yang_dnode_get_parent
    - prefix_list_length_validate
    - lib_prefix_list_entry_prefix_length_lesser_or_equal_modify
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv6_prefix_length_lesser_or_equal_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/lib/filter_nb.c:1499,1
    - Dst: prefix_list_nb_validate_v6_af_type
      Src: /src/frr/lib/filter_nb.c:1501,1
    - Dst: lib_prefix_list_entry_prefix_length_lesser_or_equal_destroy
      Src: /src/frr/lib/filter_nb.c:1505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1494
    functionDepth: 2
    functionLinenumber: 1494
    functionLinenumberEnd: 1507
    functionName: lib_prefix_list_entry_ipv6_prefix_length_lesser_or_equal_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - prefix_list_nb_validate_v6_af_type
    - yang_dnode_get_parent
    - lib_prefix_list_entry_prefix_length_lesser_or_equal_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_prefix_list_entry_ipv6_prefix_length_lesser_or_equal_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1526,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:1529,1
    - Dst: memset
      Src: /src/frr/lib/filter_nb.c:1534,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/filter_nb.c:1536,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:1551,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1512
    functionDepth: 1
    functionLinenumber: 1512
    functionLinenumberEnd: 1554
    functionName: lib_prefix_list_entry_any_create
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - memset
    - nb_running_get_entry
    - prefix_list_entry_update_start
    - yang_dnode_get_enum
    - prefix_list_entry_update_finish
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_any_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/filter_nb.c:1563,1
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/filter_nb.c:1566,1
    - Dst: prefix_list_entry_update_finish
      Src: /src/frr/lib/filter_nb.c:1571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1574
    functionName: lib_prefix_list_entry_any_destroy
    functionSourceFile: /src/frr/lib/filter_nb.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - prefix_list_entry_update_finish
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: int
    signature: int lib_prefix_list_entry_any_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: _CONSTRUCTOR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CONSTRUCTOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: _DEPRECATED
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DEPRECATED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: assume
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assume(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: _CONSTRUCTOR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CONSTRUCTOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: _DESTRUCTOR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DESTRUCTOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: _ALLOC_SIZE
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ALLOC_SIZE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: _DEPRECATED
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DEPRECATED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: assume
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assume(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: __has_attribute
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __has_attribute(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: _CONSTRUCTOR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CONSTRUCTOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: _DESTRUCTOR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DESTRUCTOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: _DEPRECATED
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DEPRECATED(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: MACRO_REQUIRE_SEMICOLON
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MACRO_REQUIRE_SEMICOLON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 27
    argNames:
    - (
    - A0
    - ','
    - A1
    - ','
    - A2
    - ','
    - A3
    - ','
    - A4
    - ','
    - A5
    - ','
    - A6
    - ','
    - A7
    - ','
    - A8
    - ','
    - A9
    - ','
    - A10
    - ','
    - N
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: _MACRO_VARIANT
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_VARIANT(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10, N, ...)
  - 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: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: _CONCAT2
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CONCAT2(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 142
    functionName: _CONCAT
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CONCAT(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: MACRO_VARIANT
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MACRO_VARIANT(NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: NAMECTR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NAMECTR(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NAME
    - ','
    - A1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: _MACRO_REPEAT_1
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_1(NAME, A1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NAME
    - ','
    - A1
    - ','
    - A2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 159
    functionName: _MACRO_REPEAT_2
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_2(NAME, A1, A2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NAME
    - ','
    - A1
    - ','
    - A2
    - ','
    - A3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: _MACRO_REPEAT_3
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_3(NAME, A1, A2, A3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - NAME
    - ','
    - A1
    - ','
    - A2
    - ','
    - A3
    - ','
    - A4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: _MACRO_REPEAT_4
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_4(NAME, A1, A2, A3, A4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - NAME
    - ','
    - A1
    - ','
    - A2
    - ','
    - A3
    - ','
    - A4
    - ','
    - A5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: _MACRO_REPEAT_5
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_5(NAME, A1, A2, A3, A4, A5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NAME
    - ','
    - A1
    - ','
    - A2
    - ','
    - A3
    - ','
    - A4
    - ','
    - A5
    - ','
    - A6
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: _MACRO_REPEAT_6
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_6(NAME, A1, A2, A3, A4, A5, A6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - NAME
    - ','
    - A1
    - ','
    - A2
    - ','
    - A3
    - ','
    - A4
    - ','
    - A5
    - ','
    - A6
    - ','
    - A7
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: _MACRO_REPEAT_7
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_7(NAME, A1, A2, A3, A4, A5, A6, A7)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - NAME
    - ','
    - A1
    - ','
    - A2
    - ','
    - A3
    - ','
    - A4
    - ','
    - A5
    - ','
    - A6
    - ','
    - A7
    - ','
    - A8
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: _MACRO_REPEAT_8
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MACRO_REPEAT_8(NAME, A1, A2, A3, A4, A5, A6, A7, A8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: MACRO_REPEAT
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MACRO_REPEAT(NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    functionName: ESC
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ESC(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - M
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: MAP_LISTS
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAP_LISTS(M, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - M
    - ','
    - _1
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: _MAP_LISTS_1
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_1(M, _1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - M
    - ','
    - _1
    - ','
    - _2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: _MAP_LISTS_2
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_2(M, _1, _2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - M
    - ','
    - _1
    - ','
    - _2
    - ','
    - _3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: _MAP_LISTS_3
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_3(M, _1, _2, _3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - M
    - ','
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: _MAP_LISTS_4
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_4(M, _1, _2, _3, _4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - M
    - ','
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: _MAP_LISTS_5
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_5(M, _1, _2, _3, _4, _5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - M
    - ','
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - _6
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: _MAP_LISTS_6
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_6(M, _1, _2, _3, _4, _5, _6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - M
    - ','
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - _6
    - ','
    - _7
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: _MAP_LISTS_7
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_7(M, _1, _2, _3, _4, _5, _6, _7)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - M
    - ','
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - _6
    - ','
    - _7
    - ','
    - _8
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: _MAP_LISTS_8
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAP_LISTS_8(M, _1, _2, _3, _4, _5, _6, _7, _8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: CPP_STR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPP_STR(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 206
    functionName: CPP_NOTICE
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPP_NOTICE(text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: CPP_WARN
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPP_WARN(text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 214
    functionName: CPP_WARN
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPP_WARN(text)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - text
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: CPP_NOTICE
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CPP_NOTICE(text)
  - 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: 232
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 232
    functionName: MAX
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MAX(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: MIN
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 54
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIN(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 248
    functionName: numcmp
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: numcmp(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 252
    functionName: offsetof
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: offsetof(TYPE, MEMBER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 254
    functionName: offsetof
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: offsetof(TYPE, MEMBER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 295
    functionName: container_of
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_of(ptr, type, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 303
    functionName: container_of
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_of(ptr, type, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 310
    functionName: container_of_null
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_of_null(ptr, type, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ar
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 312
    functionName: array_size
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 102
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: array_size(ar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 131
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - _6
    - ','
    - _7
    - ','
    - _8
    - ','
    - _9
    - ','
    - _10
    - ','
    - _11
    - ','
    - _12
    - ','
    - _13
    - ','
    - _14
    - ','
    - _15
    - ','
    - _16
    - ','
    - _17
    - ','
    - _18
    - ','
    - _19
    - ','
    - _20
    - ','
    - _21
    - ','
    - _22
    - ','
    - _23
    - ','
    - _24
    - ','
    - _25
    - ','
    - _26
    - ','
    - _27
    - ','
    - _28
    - ','
    - _29
    - ','
    - _30
    - ','
    - _31
    - ','
    - _32
    - ','
    - _33
    - ','
    - _34
    - ','
    - _35
    - ','
    - _36
    - ','
    - _37
    - ','
    - _38
    - ','
    - _39
    - ','
    - _40
    - ','
    - _41
    - ','
    - _42
    - ','
    - _43
    - ','
    - _44
    - ','
    - _45
    - ','
    - _46
    - ','
    - _47
    - ','
    - _48
    - ','
    - _49
    - ','
    - _50
    - ','
    - _51
    - ','
    - _52
    - ','
    - _53
    - ','
    - _54
    - ','
    - _55
    - ','
    - _56
    - ','
    - _57
    - ','
    - _58
    - ','
    - _59
    - ','
    - _60
    - ','
    - _61
    - ','
    - _62
    - ','
    - _63
    - ','
    - N
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: PP_ARG_N
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "PP_ARG_N( \\\n          _1,  _2,  _3,  _4,  _5,  _6,  _7,  _8,  _9,
      _10, \\\n         _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \\\n         _21,
      _22, _23, _24, _25, _26, _27, _28, _29, _30, \\\n         _31, _32, _33, _34,
      _35, _36, _37, _38, _39, _40, \\\n         _41, _42, _43, _44, _45, _46, _47,
      _48, _49, _50, \\\n         _51, _52, _53, _54, _55, _56, _57, _58, _59, _60,
      \\\n         _61, _62, _63, N, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 331
    functionName: PP_RSEQ_N
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PP_RSEQ_N()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    functionName: PP_NARG_
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PP_NARG_(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    functionName: PP_NARG
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PP_NARG(...)
  - 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: 363
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 363
    functionName: PRINTFRR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINTFRR(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 374
    functionName: PRINTFRR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINTFRR(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 376
    functionName: PRINTFRR
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINTFRR(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - uname
    - ','
    - typename
    - ','
    - fieldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 420
    functionName: prefixtype
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: prefixtype(uname, typename, fieldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - uname
    - ','
    - typename
    - ','
    - fieldname
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 428
    functionName: prefixtype
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: prefixtype(uname, typename, fieldname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 444
    functionName: likely
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: likely(_x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 445
    functionName: unlikely
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlikely(_x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 447
    functionName: likely
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: likely(_x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 448
    functionName: unlikely
    functionSourceFile: /src/frr/lib/compiler.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unlikely(_x)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/lib/systemd.c:42,1
    - Dst: strlcpy
      Src: /src/frr/lib/systemd.c:47,1
    - Dst: sendto
      Src: /src/frr/lib/systemd.c:54,1
    - Dst: strlen
      Src: /src/frr/lib/systemd.c:54,1
    - Dst: close
      Src: /src/frr/lib/systemd.c:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - info
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 58
    functionName: systemd_send_information
    functionSourceFile: /src/frr/lib/systemd.c
    functionUses: 0
    functionsReached:
    - strlen
    - socket
    - strlcpy
    - close
    - sendto
    linkageType: ''
    returnType: void
    signature: void systemd_send_information(const char *info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: systemd_send_information
      Src: /src/frr/lib/systemd.c:62,1
    - Dst: systemd_send_information
      Src: /src/frr/lib/systemd.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: systemd_send_stopping
    functionSourceFile: /src/frr/lib/systemd.c
    functionUses: 2
    functionsReached:
    - systemd_send_information
    linkageType: ''
    returnType: void
    signature: void systemd_send_stopping(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: systemd_send_information
      Src: /src/frr/lib/systemd.c:70,1
    - Dst: assert
      Src: /src/frr/lib/systemd.c:72,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/systemd.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (watchdog_msec > 0)
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/frr/lib/systemd.c
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: systemd_send_watchdog
    functionSourceFile: /src/frr/lib/systemd.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - systemd_send_information
    - assert
    linkageType: ''
    returnType: void
    signature: void systemd_send_watchdog(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/systemd.c:79,1
    - Dst: systemd_send_information
      Src: /src/frr/lib/systemd.c:83,1
    - Dst: systemd_send_watchdog
      Src: /src/frr/lib/systemd.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct event_loop*
    assertStmts:
    - condition: (m != NULL)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/frr/lib/systemd.c
    constantsTouched: []
    func_position:
      end: 86
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 86
    functionName: systemd_send_started
    functionSourceFile: /src/frr/lib/systemd.c
    functionUses: 1
    functionsReached:
    - systemd_send_information
    - assert
    - systemd_send_watchdog
    linkageType: ''
    returnType: void
    signature: void systemd_send_started(struct event_loop *m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/systemd.c:92,1
    - Dst: systemd_send_information
      Src: /src/frr/lib/systemd.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - status
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 94
    functionName: systemd_send_status
    functionSourceFile: /src/frr/lib/systemd.c
    functionUses: 5
    functionsReached:
    - systemd_send_information
    - snprintf
    linkageType: ''
    returnType: void
    signature: void systemd_send_status(const char *status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/frr/lib/systemd.c:101,1
    - Dst: strtoimax
      Src: /src/frr/lib/systemd.c:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - varname
    - dflt
    argTypes:
    - char*
    - intmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 109
    functionName: getenv_int
    functionSourceFile: /src/frr/lib/systemd.c
    functionUses: 0
    functionsReached:
    - strtoimax
    - getenv
    linkageType: ''
    returnType: intmax_t
    signature: intmax_t getenv_int(const char *varname, intmax_t dflt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/frr/lib/systemd.c:118,1
    - Dst: getenv_int
      Src: /src/frr/lib/systemd.c:124,1
    - Dst: getenv_int
      Src: /src/frr/lib/systemd.c:129,1
    - Dst: flog_err
      Src: /src/frr/lib/systemd.c:134,1
    - Dst: getenv
      Src: /src/frr/lib/systemd.c:142,1
    - Dst: sscanf
      Src: /src/frr/lib/systemd.c:143,1
    - Dst: strlen
      Src: /src/frr/lib/systemd.c:144,1
    - Dst: fstat
      Src: /src/frr/lib/systemd.c:145,1
    - Dst: fstat
      Src: /src/frr/lib/systemd.c:148,1
    - Dst: unsetenv
      Src: /src/frr/lib/systemd.c:154,1
    - Dst: unsetenv
      Src: /src/frr/lib/systemd.c:155,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 156
    functionName: systemd_init_env
    functionSourceFile: /src/frr/lib/systemd.c
    functionUses: 0
    functionsReached:
    - strlen
    - unsetenv
    - getenv_int
    - fstat
    - flog_err
    - sscanf
    - getenv
    linkageType: ''
    returnType: void
    signature: void systemd_init_env(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zmq_ctx_new
      Src: /src/frr/lib/frr_zmq.c:33,1
    - Dst: zmq_ctx_set
      Src: /src/frr/lib/frr_zmq.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 36
    functionName: frrzmq_init
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 1
    functionsReached:
    - zmq_ctx_set
    - zmq_ctx_new
    linkageType: ''
    returnType: void
    signature: void frrzmq_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zmq_ctx_term
      Src: /src/frr/lib/frr_zmq.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: frrzmq_finish
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 1
    functionsReached:
    - zmq_ctx_term
    linkageType: ''
    returnType: void
    signature: void frrzmq_finish(void)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/frr_zmq.c:48,1
    - Dst: zmq_poll
      Src: /src/frr/lib/frr_zmq.c:65,1
    - Dst: struct frrzmq_cb*::read::cb_msg
      Src: /src/frr/lib/frr_zmq.c:75,1
    - Dst: frrzmq_check_events
      Src: /src/frr/lib/frr_zmq.c:81,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_zmq.c:85,1
    - Dst: zmq_msg_init
      Src: /src/frr/lib/frr_zmq.c:93,1
    - Dst: zmq_msg_recv
      Src: /src/frr/lib/frr_zmq.c:96,1
    - Dst: zmq_msg_close
      Src: /src/frr/lib/frr_zmq.c:101,1
    - Dst: struct frrzmq_cb*::read::cb_part
      Src: /src/frr/lib/frr_zmq.c:107,1
    - Dst: zmq_msg_close
      Src: /src/frr/lib/frr_zmq.c:112,1
    - Dst: frrzmq_check_events
      Src: /src/frr/lib/frr_zmq.c:113,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_zmq.c:117,1
    - Dst: zmq_getsockopt
      Src: /src/frr/lib/frr_zmq.c:126,1
    - Dst: zmq_msg_close
      Src: /src/frr/lib/frr_zmq.c:129,1
    - Dst: zmq_msg_close
      Src: /src/frr/lib/frr_zmq.c:135,1
    - Dst: frrzmq_check_events
      Src: /src/frr/lib/frr_zmq.c:139,1
    - Dst: event_add_read
      Src: /src/frr/lib/frr_zmq.c:141,1
    - Dst: flog_err
      Src: /src/frr/lib/frr_zmq.c:146,1
    - Dst: strerror
      Src: /src/frr/lib/frr_zmq.c:146,1
    - Dst: struct frrzmq_cb*::read::cb_error
      Src: /src/frr/lib/frr_zmq.c:149,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 73
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 150
    functionName: frrzmq_read_msg
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 0
    functionsReached:
    - struct frrzmq_cb*::read::cb_part
    - strerror
    - struct frrzmq_cb*::read::cb_msg
    - zmq_msg_recv
    - zmq_poll
    - flog_err
    - zmq_getsockopt
    - XFREE
    - EVENT_ARG
    - event_add_read
    - struct frrzmq_cb*::read::cb_error
    - zmq_msg_close
    - frrzmq_check_events
    - zmq_msg_init
    linkageType: ''
    returnType: void
    signature: void frrzmq_read_msg(struct event *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zmq_getsockopt
      Src: /src/frr/lib/frr_zmq.c:169,1
    - Dst: zmq_getsockopt
      Src: /src/frr/lib/frr_zmq.c:172,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_zmq.c:178,1
    - Dst: event_cancel
      Src: /src/frr/lib/frr_zmq.c:193,1
    - Dst: event_add_event
      Src: /src/frr/lib/frr_zmq.c:195,1
    - Dst: event_add_read
      Src: /src/frr/lib/frr_zmq.c:198,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 5
    argNames:
    - xref
    - master
    - arg
    - zmqsock
    - cbp
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - void*
    - struct frrzmq_cb**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 201
    functionName: _frrzmq_event_add_read
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - event_cancel
    - event_add_read
    - zmq_getsockopt
    - event_add_event
    linkageType: ''
    returnType: int
    signature: "int _frrzmq_event_add_read(const struct xref_eventsched *xref,\n\t\t\t
      \  struct event_loop *master,\n\t\t\t   void (*msgfunc)(void *arg, void *zmqsock),\n\t\t\t
      \  void (*partfunc)(void *arg, void *zmqsock,\n\t\t\t\t\t    zmq_msg_t *msg,
      unsigned partnum),\n\t\t\t   void (*errfunc)(void *arg, void *zmqsock), void
      *arg,\n\t\t\t   void *zmqsock, struct frrzmq_cb **cbp)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/frr_zmq.c:205,1
    - Dst: zmq_poll
      Src: /src/frr/lib/frr_zmq.c:219,1
    - Dst: struct frrzmq_cb*::write::cb_msg
      Src: /src/frr/lib/frr_zmq.c:229,1
    - Dst: frrzmq_check_events
      Src: /src/frr/lib/frr_zmq.c:235,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_zmq.c:238,1
    - Dst: frrzmq_check_events
      Src: /src/frr/lib/frr_zmq.c:247,1
    - Dst: event_add_write
      Src: /src/frr/lib/frr_zmq.c:249,1
    - Dst: flog_err
      Src: /src/frr/lib/frr_zmq.c:254,1
    - Dst: strerror
      Src: /src/frr/lib/frr_zmq.c:254,1
    - Dst: struct frrzmq_cb*::write::cb_error
      Src: /src/frr/lib/frr_zmq.c:257,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 258
    functionName: frrzmq_write_msg
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - strerror
    - struct frrzmq_cb*::write::cb_error
    - zmq_poll
    - struct frrzmq_cb*::write::cb_msg
    - flog_err
    - XFREE
    - EVENT_ARG
    - frrzmq_check_events
    linkageType: ''
    returnType: void
    signature: void frrzmq_write_msg(struct event *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zmq_getsockopt
      Src: /src/frr/lib/frr_zmq.c:275,1
    - Dst: zmq_getsockopt
      Src: /src/frr/lib/frr_zmq.c:278,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_zmq.c:284,1
    - Dst: event_cancel
      Src: /src/frr/lib/frr_zmq.c:299,1
    - Dst: _event_add_event
      Src: /src/frr/lib/frr_zmq.c:301,1
    - Dst: event_add_write
      Src: /src/frr/lib/frr_zmq.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 5
    argNames:
    - xref
    - master
    - arg
    - zmqsock
    - cbp
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - void*
    - struct frrzmq_cb**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 307
    functionName: _frrzmq_event_add_write
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - XCALLOC
    - event_cancel
    - _event_add_event
    - zmq_getsockopt
    linkageType: ''
    returnType: int
    signature: "int _frrzmq_event_add_write(const struct xref_eventsched *xref,\n\t\t\t
      \   struct event_loop *master,\n\t\t\t    void (*msgfunc)(void *arg, void *zmqsock),\n\t\t\t
      \   void (*errfunc)(void *arg, void *zmqsock),\n\t\t\t    void *arg, void *zmqsock,
      struct frrzmq_cb **cbp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/lib/frr_zmq.c:314,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_zmq.c:325,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - cb
    - core
    argTypes:
    - struct frrzmq_cb**
    - struct cb_core*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 326
    functionName: frrzmq_thread_cancel
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 3
    functionsReached:
    - event_cancel
    - XFREE
    linkageType: ''
    returnType: void
    signature: void frrzmq_thread_cancel(struct frrzmq_cb **cb, struct cb_core *core)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zmq_getsockopt
      Src: /src/frr/lib/frr_zmq.c:342,1
    - Dst: event_cancel
      Src: /src/frr/lib/frr_zmq.c:347,1
    - Dst: event_add_event
      Src: /src/frr/lib/frr_zmq.c:350,1
    - Dst: event_add_event
      Src: /src/frr/lib/frr_zmq.c:353,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 3
    argNames:
    - cbp
    - core
    - event
    argTypes:
    - struct frrzmq_cb**
    - struct cb_core*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 356
    functionName: frrzmq_check_events
    functionSourceFile: /src/frr/lib/frr_zmq.c
    functionUses: 2
    functionsReached:
    - event_cancel
    - zmq_getsockopt
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void frrzmq_check_events(struct frrzmq_cb **cbp, struct cb_core *core,\n\t\t\t
      int event)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - descr
    - ','
    - var
    - ','
    - vartype
    - ','
    - theoid
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: REGISTER_MIB
    functionSourceFile: /src/frr/lib/smux.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REGISTER_MIB(descr, var, vartype, theoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: SNMP_INTEGER
    functionSourceFile: /src/frr/lib/smux.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SNMP_INTEGER(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: SNMP_OCTET
    functionSourceFile: /src/frr/lib/smux.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SNMP_OCTET(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: SNMP_STRING
    functionSourceFile: /src/frr/lib/smux.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SNMP_STRING(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: SNMP_IPADDRESS
    functionSourceFile: /src/frr/lib/smux.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SNMP_IPADDRESS(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: SNMP_IP6ADDRESS
    functionSourceFile: /src/frr/lib/smux.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SNMP_IP6ADDRESS(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/keychain.c:26,1
    - Dst: QOBJ_REG
      Src: /src/frr/lib/keychain.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 29
    functionName: keychain_new
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - QOBJ_REG
    - XCALLOC
    linkageType: ''
    returnType: struct keychain
    signature: struct keychain *keychain_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/lib/keychain.c:33,1
    - Dst: XFREE
      Src: /src/frr/lib/keychain.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - keychain
    argTypes:
    - struct keychain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: keychain_free
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - XFREE
    linkageType: ''
    returnType: void
    signature: void keychain_free(struct keychain *keychain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/keychain.c:39,1
    - Dst: QOBJ_REG
      Src: /src/frr/lib/keychain.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: key_new
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 2
    functionsReached:
    - QOBJ_REG
    - XCALLOC
    linkageType: ''
    returnType: struct key
    signature: struct key *key_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/lib/keychain.c:46,1
    - Dst: XFREE
      Src: /src/frr/lib/keychain.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: key_free
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - XFREE
    linkageType: ''
    returnType: void
    signature: void key_free(struct key *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - enum keychain_hash_algo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: keychain_get_hash_len
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t keychain_get_hash_len(enum keychain_hash_algo key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - enum keychain_hash_algo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: keychain_get_description
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *keychain_get_description(enum keychain_hash_algo key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - enum keychain_hash_algo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: keychain_get_hash_algo_info
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct keychain_algo_info
    signature: struct keychain_algo_info keychain_get_hash_algo_info(enum keychain_hash_algo
      key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:369,1
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:371,1
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:376,1
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:378,1
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:380,1
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:382,1
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:384,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 389
    functionName: keychain_get_algo_id_by_name
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: enum keychain_hash_algo
    signature: enum keychain_hash_algo keychain_get_algo_id_by_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - enum keychain_hash_algo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 394
    functionName: keychain_get_algo_name_by_id
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *keychain_get_algo_name_by_id(enum keychain_hash_algo key)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/lib/keychain.c:486,1
    - Dst: GET_LONG_RANGE0
      Src: /src/frr/lib/keychain.c:492,1
    - Dst: strchr
      Src: /src/frr/lib/keychain.c:496,1
    - Dst: GET_LONG_RANGE0
      Src: /src/frr/lib/keychain.c:502,1
    - Dst: GET_LONG_RANGE0
      Src: /src/frr/lib/keychain.c:510,1
    - Dst: GET_LONG_RANGE
      Src: /src/frr/lib/keychain.c:513,1
    - Dst: strlen
      Src: /src/frr/lib/keychain.c:517,1
    - Dst: strncmp
      Src: /src/frr/lib/keychain.c:519,1
    - Dst: strlen
      Src: /src/frr/lib/keychain.c:519,1
    - Dst: GET_LONG_RANGE
      Src: /src/frr/lib/keychain.c:528,1
    - Dst: memset
      Src: /src/frr/lib/keychain.c:530,1
    - Dst: mktime
      Src: /src/frr/lib/keychain.c:538,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 4
    argNames:
    - time_str
    - day_str
    - month_str
    - year_str
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 542
    functionName: key_str2time
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - strlen
    - memset
    - mktime
    - GET_LONG_RANGE
    - strchr
    - strncmp
    - GET_LONG_RANGE0
    linkageType: ''
    returnType: time_t
    signature: "time_t key_str2time(const char *time_str, const char *day_str,\n\t\t\t
      \  const char *month_str, const char *year_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - V
    - ','
    - STR
    - ','
    - MMCOND
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 481
    functionName: _GET_LONG_RANGE
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _GET_LONG_RANGE(V, STR, MMCOND)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - V
    - ','
    - STR
    - ','
    - MIN
    - ','
    - MAX
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 483
    functionName: GET_LONG_RANGE
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_LONG_RANGE(V, STR, MIN, MAX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - V
    - ','
    - STR
    - ','
    - MAX
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 484
    functionName: GET_LONG_RANGE0
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_LONG_RANGE0(V, STR, MAX)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: key_str2time
      Src: /src/frr/lib/keychain.c:553,1
    - Dst: vty_out
      Src: /src/frr/lib/keychain.c:555,1
    - Dst: key_str2time
      Src: /src/frr/lib/keychain.c:558,1
    - Dst: vty_out
      Src: /src/frr/lib/keychain.c:561,1
    - Dst: vty_out
      Src: /src/frr/lib/keychain.c:566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 10
    argNames:
    - vty
    - krange
    - stime_str
    - sday_str
    - smonth_str
    - syear_str
    - etime_str
    - eday_str
    - emonth_str
    - eyear_str
    argTypes:
    - struct vty*
    - struct key_range*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 544
    functionDepth: 2
    functionLinenumber: 544
    functionLinenumberEnd: 574
    functionName: key_lifetime_set
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - key_str2time
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int key_lifetime_set(struct vty *vty, struct key_range *krange,\n\t\t\t
      \   const char *stime_str, const char *sday_str,\n\t\t\t    const char *smonth_str,
      const char *syear_str,\n\t\t\t    const char *etime_str, const char *eday_str,\n\t\t\t
      \   const char *emonth_str, const char *eyear_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_str2time
      Src: /src/frr/lib/keychain.c:586,1
    - Dst: vty_out
      Src: /src/frr/lib/keychain.c:588,1
    - Dst: strtoul
      Src: /src/frr/lib/keychain.c:593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 7
    argNames:
    - vty
    - krange
    - stime_str
    - sday_str
    - smonth_str
    - syear_str
    - duration_str
    argTypes:
    - struct vty*
    - struct key_range*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 598
    functionName: key_lifetime_duration_set
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - key_str2time
    - vty_out
    - strtoul
    linkageType: ''
    returnType: int
    signature: "int key_lifetime_duration_set(struct vty *vty, struct key_range *krange,\n\t\t\t\t
      \    const char *stime_str,\n\t\t\t\t     const char *sday_str,\n\t\t\t\t     const
      char *smonth_str,\n\t\t\t\t     const char *syear_str,\n\t\t\t\t     const char
      *duration_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_str2time
      Src: /src/frr/lib/keychain.c:608,1
    - Dst: vty_out
      Src: /src/frr/lib/keychain.c:610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - vty
    - krange
    - stime_str
    - sday_str
    - smonth_str
    - syear_str
    argTypes:
    - struct vty*
    - struct key_range*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 600
    functionDepth: 2
    functionLinenumber: 600
    functionLinenumberEnd: 618
    functionName: key_lifetime_infinite_set
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - key_str2time
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int key_lifetime_infinite_set(struct vty *vty, struct key_range *krange,\n\t\t\t\t
      \    const char *stime_str,\n\t\t\t\t     const char *sday_str,\n\t\t\t\t     const
      char *smonth_str,\n\t\t\t\t     const char *syear_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/frr/lib/keychain.c:1097,1
    - Dst: strftime
      Src: /src/frr/lib/keychain.c:1099,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - bufsiz
    - time
    argTypes:
    - char*
    - int
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1092
    functionDepth: 0
    functionLinenumber: 1092
    functionLinenumberEnd: 1102
    functionName: keychain_strftime
    functionSourceFile: /src/frr/lib/keychain.c
    functionUses: 0
    functionsReached:
    - localtime_r
    - strftime
    linkageType: ''
    returnType: int
    signature: int keychain_strftime(char *buf, int bufsiz, time_t *time)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state_in
    argTypes:
    - struct base64_encodestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 22
    functionName: base64_init_encodestate
    functionSourceFile: /src/frr/lib/base64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void base64_init_encodestate(struct base64_encodestate *state_in)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - value_in
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 29
    functionName: base64_encode_value
    functionSourceFile: /src/frr/lib/base64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char base64_encode_value(char value_in)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: base64_encode_value
      Src: /src/frr/lib/base64.c:52,1
    - Dst: base64_encode_value
      Src: /src/frr/lib/base64.c:63,1
    - Dst: base64_encode_value
      Src: /src/frr/lib/base64.c:74,1
    - Dst: base64_encode_value
      Src: /src/frr/lib/base64.c:76,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 4
    argNames:
    - plaintext_in
    - length_in
    - code_out
    - state_in
    argTypes:
    - char*
    - int
    - char*
    - struct base64_encodestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 87
    functionName: base64_encode_block
    functionSourceFile: /src/frr/lib/base64.c
    functionUses: 0
    functionsReached:
    - base64_encode_value
    linkageType: ''
    returnType: int
    signature: "int base64_encode_block(const char *plaintext_in, int length_in, char
      *code_out,\n\t\t\tstruct base64_encodestate *state_in)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: base64_encode_value
      Src: /src/frr/lib/base64.c:95,1
    - Dst: base64_encode_value
      Src: /src/frr/lib/base64.c:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - code_out
    - state_in
    argTypes:
    - char*
    - struct base64_encodestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 109
    functionName: base64_encode_blockend
    functionSourceFile: /src/frr/lib/base64.c
    functionUses: 0
    functionsReached:
    - base64_encode_value
    linkageType: ''
    returnType: int
    signature: int base64_encode_blockend(char *code_out, struct base64_encodestate
      *state_in)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - value_in
    argTypes:
    - signed char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 130
    functionName: base64_decode_value
    functionSourceFile: /src/frr/lib/base64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: signed char
    signature: signed char base64_decode_value(signed char value_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state_in
    argTypes:
    - struct base64_decodestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 136
    functionName: base64_init_decodestate
    functionSourceFile: /src/frr/lib/base64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void base64_init_decodestate(struct base64_decodestate *state_in)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: base64_decode_value
      Src: /src/frr/lib/base64.c:156,1
    - Dst: base64_decode_value
      Src: /src/frr/lib/base64.c:167,1
    - Dst: base64_decode_value
      Src: /src/frr/lib/base64.c:179,1
    - Dst: base64_decode_value
      Src: /src/frr/lib/base64.c:191,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 4
    argNames:
    - code_in
    - length_in
    - plaintext_out
    - state_in
    argTypes:
    - char*
    - int
    - char*
    - struct base64_decodestate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 198
    functionName: base64_decode_block
    functionSourceFile: /src/frr/lib/base64.c
    functionUses: 0
    functionsReached:
    - base64_decode_value
    linkageType: ''
    returnType: int
    signature: "int base64_decode_block(const char *code_in, int length_in, char *plaintext_out,\n\t\t\tstruct
      base64_decodestate *state_in)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - hook
    - ','
    - funcptr
    - ','
    - arg
    - ','
    - has_arg
    - ','
    - module
    - ','
    - funcname
    - ','
    - prio
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 141
    functionName: _hook_reg_svar
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _hook_reg_svar(hook, funcptr, arg, has_arg, module, funcname, prio)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hookname
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: hook_register
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 47
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hook_register(hookname, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hookname
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 149
    functionName: hook_register_arg
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hook_register_arg(hookname, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hookname
    - ','
    - prio
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: hook_register_prio
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hook_register_prio(hookname, prio, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - hookname
    - ','
    - prio
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: hook_register_arg_prio
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hook_register_arg_prio(hookname, prio, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hookname
    - ','
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: hook_unregister
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hook_unregister(hookname, func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hookname
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: hook_unregister_arg
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hook_unregister_arg(hookname, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - hookname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 170
    functionName: hook_call
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 101
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hook_call(hookname, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: HOOK_ADDDEF
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HOOK_ADDDEF(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: HOOK_ADDARG
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HOOK_ADDARG(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 25
    argNames:
    - (
    - x0
    - ','
    - x1
    - ','
    - x2
    - ','
    - x3
    - ','
    - x4
    - ','
    - x5
    - ','
    - x6
    - ','
    - x7
    - ','
    - x8
    - ','
    - x9
    - ','
    - ret
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 177
    functionName: _SKIP_10
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _SKIP_10(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, ret, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: _MAKE_VOID
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MAKE_VOID(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 180
    functionName: HOOK_VOIDIFY
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HOOK_VOIDIFY(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hookname
    - ','
    - arglist
    - ','
    - passlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 202
    functionName: DECLARE_HOOK
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_HOOK(hookname, arglist, passlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hookname
    - ','
    - arglist
    - ','
    - passlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 205
    functionName: DECLARE_KOOH
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_KOOH(hookname, arglist, passlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - hookname
    - ','
    - arglist
    - ','
    - passlist
    - ','
    - rev
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 233
    functionName: DEFINE_HOOK_INT
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_HOOK_INT(hookname, arglist, passlist, rev)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hookname
    - ','
    - arglist
    - ','
    - passlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    functionName: DEFINE_HOOK
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_HOOK(hookname, arglist, passlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hookname
    - ','
    - arglist
    - ','
    - passlist
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: DEFINE_KOOH
    functionSourceFile: /src/frr/lib/hook.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_KOOH(hookname, arglist, passlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/affinitymap.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct affinity_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: affinity_map_free
    functionSourceFile: /src/frr/lib/affinitymap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void affinity_map_free(struct affinity_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/affinitymap.c:63,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/affinitymap.c:65,1
    - Dst: strncmp
      Src: /src/frr/lib/affinitymap.c:66,1
    - Dst: XCALLOC
      Src: /src/frr/lib/affinitymap.c:72,1
    - Dst: snprintf
      Src: /src/frr/lib/affinitymap.c:74,1
    - Dst: listnode_add
      Src: /src/frr/lib/affinitymap.c:75,1
    - Dst: affinity_map_unset
      Src: /src/frr/lib/affinitymap.c:78,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/affinitymap.c:86,1
    - Dst: strncmp
      Src: /src/frr/lib/affinitymap.c:87,1
    - Dst: listnode_delete
      Src: /src/frr/lib/affinitymap.c:89,1
    - Dst: affinity_map_free
      Src: /src/frr/lib/affinitymap.c:90,1
    - Dst: affinity_map_get
      Src: /src/frr/lib/affinitymap.c:95,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/affinitymap.c:103,1
    - Dst: if
      Src: /src/frr/lib/affinitymap.c:104,1
    - Dst: strncmp
      Src: /src/frr/lib/affinitymap.c:104,1
    - Dst: affinity_map_name_get
      Src: /src/frr/lib/affinitymap.c:110,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/affinitymap.c:118,1
    - Dst: if
      Src: /src/frr/lib/affinitymap.c:119,1
    - Dst: affinity_map_check_use_hook
      Src: /src/frr/lib/affinitymap.c:124,1
    - Dst: return
      Src: /src/frr/lib/affinitymap.c:127,1
    - Dst: affinity_map_check_update_hook
      Src: /src/frr/lib/affinitymap.c:131,1
    - Dst: return
      Src: /src/frr/lib/affinitymap.c:134,1
    - Dst: affinity_map_update_hook
      Src: /src/frr/lib/affinitymap.c:139,1
    - Dst: affinity_map_get
      Src: /src/frr/lib/affinitymap.c:146,1
    - Dst: affinity_map_set_check_use_hook
      Src: /src/frr/lib/affinitymap.c:157,1
    - Dst: affinity_map_set_check_update_hook
      Src: /src/frr/lib/affinitymap.c:162,1
    - Dst: affinity_map_set_update_hook
      Src: /src/frr/lib/affinitymap.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - name
    - pos
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 173
    functionName: affinity_map_set
    functionSourceFile: /src/frr/lib/affinitymap.c
    functionUses: 1
    functionsReached:
    - affinity_map_set_check_update_hook
    - listnode_add
    - strncmp
    - affinity_map_unset
    - snprintf
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - return
    - if
    - affinity_map_name_get
    - affinity_map_check_update_hook
    - affinity_map_get
    - affinity_map_check_use_hook
    - listnode_delete
    - affinity_map_set_check_use_hook
    - affinity_map_free
    - list_new
    - affinity_map_update_hook
    - ALL_LIST_ELEMENTS
    - affinity_map_set_update_hook
    linkageType: ''
    returnType: void
    signature: void affinity_map_set(const char *name, int pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/ldp_sync.c:30,1
    - Dst: assert
      Src: /src/frr/lib/ldp_sync.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ldp_sync_info)
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/frr/lib/ldp_sync.c
    constantsTouched: []
    func_position:
      end: 40
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 40
    functionName: ldp_sync_info_create
    functionSourceFile: /src/frr/lib/ldp_sync.c
    functionUses: 4
    functionsReached:
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct ldp_sync_info
    signature: struct ldp_sync_info *ldp_sync_info_create(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/ldp_sync.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ldp_sync_info
    argTypes:
    - struct ldp_sync_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: ldp_sync_info_free
    functionSourceFile: /src/frr/lib/ldp_sync.c
    functionUses: 3
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ldp_sync_info_free(struct ldp_sync_info **ldp_sync_info)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ldp_sync_info
    argTypes:
    - struct ldp_sync_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: ldp_sync_if_is_enabled
    functionSourceFile: /src/frr/lib/ldp_sync.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ldp_sync_if_is_enabled(struct ldp_sync_info *ldp_sync_info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/lib/ldp_sync.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ldp_sync_info
    argTypes:
    - struct ldp_sync_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 78
    functionName: ldp_sync_if_down
    functionSourceFile: /src/frr/lib/ldp_sync.c
    functionUses: 3
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: bool
    signature: bool ldp_sync_if_down(struct ldp_sync_info *ldp_sync_info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/workqueue.c:32,1
    - Dst: XCALLOC
      Src: /src/frr/lib/workqueue.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - wq
    argTypes:
    - struct work_queue*
    assertStmts:
    - condition: (wq)
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/frr/lib/workqueue.c
    constantsTouched: []
    func_position:
      end: 37
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 37
    functionName: work_queue_item_new
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 0
    functionsReached:
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct work_queue_item
    signature: struct work_queue_item *work_queue_item_new(struct work_queue *wq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/workqueue.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - item
    argTypes:
    - struct work_queue_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: work_queue_item_free
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void work_queue_item_free(struct work_queue_item *item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/workqueue.c:48,1
    - Dst: struct work_queue*::spec::del_item_data
      Src: /src/frr/lib/workqueue.c:52,1
    - Dst: work_queue_item_dequeue
      Src: /src/frr/lib/workqueue.c:54,1
    - Dst: work_queue_item_free
      Src: /src/frr/lib/workqueue.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - wq
    - item
    argTypes:
    - struct work_queue*
    - struct work_queue_item*
    assertStmts:
    - condition: (item && item->data)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/frr/lib/workqueue.c
    constantsTouched: []
    func_position:
      end: 59
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 59
    functionName: work_queue_item_remove
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 0
    functionsReached:
    - work_queue_item_dequeue
    - struct work_queue*::spec::del_item_data
    - assert
    - work_queue_item_free
    linkageType: ''
    returnType: void
    signature: "void work_queue_item_remove(struct work_queue *wq,\n\t\t\t\t   struct
      work_queue_item *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/workqueue.c:66,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/workqueue.c:68,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/workqueue.c:70,1
    - Dst: flags::flags
      Src: /src/frr/lib/workqueue.c:70,1
    - Dst: STAILQ_INIT
      Src: /src/frr/lib/workqueue.c:72,1
    - Dst: items::items
      Src: /src/frr/lib/workqueue.c:72,1
    - Dst: cycles::cycles
      Src: /src/frr/lib/workqueue.c:76,1
    - Dst: spec::spec
      Src: /src/frr/lib/workqueue.c:79,1
    - Dst: spec::spec
      Src: /src/frr/lib/workqueue.c:80,1
    - Dst: spec::spec
      Src: /src/frr/lib/workqueue.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - m
    - queue_name
    argTypes:
    - struct event_loop*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 84
    functionName: work_queue_new
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 11
    functionsReached:
    - STAILQ_INIT
    - XCALLOC::XCALLOC
    - items::items
    - spec::spec
    - SET_FLAG
    - flags::flags
    - cycles::cycles
    - XSTRDUP
    linkageType: ''
    returnType: struct work_queue
    signature: struct work_queue *work_queue_new(struct event_loop *m, const char
      *queue_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/lib/workqueue.c:90,1
    - Dst: work_queue_empty
      Src: /src/frr/lib/workqueue.c:92,1
    - Dst: work_queue_last_item
      Src: /src/frr/lib/workqueue.c:93,1
    - Dst: work_queue_item_remove
      Src: /src/frr/lib/workqueue.c:95,1
    - Dst: listnode_delete
      Src: /src/frr/lib/workqueue.c:98,1
    - Dst: XFREE
      Src: /src/frr/lib/workqueue.c:100,1
    - Dst: XFREE
      Src: /src/frr/lib/workqueue.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - wqp
    argTypes:
    - struct work_queue**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 86
    functionDepth: 3
    functionLinenumber: 86
    functionLinenumberEnd: 104
    functionName: work_queue_free_and_null
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 8
    functionsReached:
    - work_queue_last_item
    - work_queue_empty
    - EVENT_OFF
    - XFREE
    - listnode_delete
    - work_queue_item_remove
    linkageType: ''
    returnType: void
    signature: void work_queue_free_and_null(struct work_queue **wqp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_is_scheduled
      Src: /src/frr/lib/workqueue.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wq
    argTypes:
    - struct work_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: work_queue_is_scheduled
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 2
    functionsReached:
    - event_is_scheduled
    linkageType: ''
    returnType: bool
    signature: bool work_queue_is_scheduled(struct work_queue *wq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/workqueue.c:114,1
    - Dst: event_is_scheduled
      Src: /src/frr/lib/workqueue.c:115,1
    - Dst: work_queue_empty
      Src: /src/frr/lib/workqueue.c:115,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/workqueue.c:120,1
    - Dst: event_ignore_late_timer
      Src: /src/frr/lib/workqueue.c:122,1
    - Dst: event_add_event
      Src: /src/frr/lib/workqueue.c:124,1
    - Dst: event_is_scheduled
      Src: /src/frr/lib/workqueue.c:128,1
    - Dst: event_set_yield_time
      Src: /src/frr/lib/workqueue.c:130,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - wq
    - delay
    argTypes:
    - struct work_queue*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 134
    functionName: work_queue_schedule
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 0
    functionsReached:
    - work_queue_empty
    - CHECK_FLAG
    - event_ignore_late_timer
    - event_add_timer_msec
    - event_set_yield_time
    - event_is_scheduled
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int work_queue_schedule(struct work_queue *wq, unsigned int delay)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/workqueue.c:140,1
    - Dst: work_queue_item_new
      Src: /src/frr/lib/workqueue.c:142,1
    - Dst: work_queue_item_enqueue
      Src: /src/frr/lib/workqueue.c:145,1
    - Dst: work_queue_schedule
      Src: /src/frr/lib/workqueue.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - wq
    - data
    argTypes:
    - struct work_queue*
    - void*
    assertStmts:
    - condition: (wq)
      pos:
        line_end: 139
        line_start: 139
        source_file: /src/frr/lib/workqueue.c
    constantsTouched: []
    func_position:
      end: 150
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 150
    functionName: work_queue_add
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 12
    functionsReached:
    - work_queue_item_enqueue
    - work_queue_item_new
    - work_queue_schedule
    - assert
    linkageType: ''
    returnType: void
    signature: void work_queue_add(struct work_queue *wq, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: work_queue_item_dequeue
      Src: /src/frr/lib/workqueue.c:155,1
    - Dst: work_queue_item_enqueue
      Src: /src/frr/lib/workqueue.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - wq
    - item
    argTypes:
    - struct work_queue*
    - struct work_queue_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: work_queue_item_requeue
    functionSourceFile: /src/frr/lib/workqueue.c
    functionUses: 0
    functionsReached:
    - work_queue_item_enqueue
    - work_queue_item_dequeue
    linkageType: ''
    returnType: void
    signature: "void work_queue_item_requeue(struct work_queue *wq,\n\t\t\t\t    struct
      work_queue_item *item)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/strlcat.c:26,1
    - Dst: strnlen
      Src: /src/frr/lib/strlcat.c:34,1
    - Dst: memcpy
      Src: /src/frr/lib/strlcat.c:44,1
    - Dst: _Static_assert
      Src: /src/frr/lib/strlcat.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - dest
    - src
    - destsize
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 57
    functionName: strlcat
    functionSourceFile: /src/frr/lib/strlcat.c
    functionUses: 48
    functionsReached:
    - strlen
    - _Static_assert
    - memcpy
    - strnlen
    linkageType: ''
    returnType: size_t
    signature: "size_t strlcat(char *__restrict dest,\n\t       const char *__restrict
      src, size_t destsize)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ns_map_nsid*
    - struct ns_map_nsid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: ns_map_compare
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ns_map_compare(const struct ns_map_nsid *a,\n\t\t\t\t   const
      struct ns_map_nsid *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/frr/lib/netns_linux.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - nstype
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 79
    functionName: setns
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 2
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int setns(int fd, int nstype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/lib/netns_linux.c:90,1
    - Dst: close
      Src: /src/frr/lib/netns_linux.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 103
    functionName: have_netns
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - open
    - close
    linkageType: ''
    returnType: int
    signature: int have_netns(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ns*
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: ns_compare
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ns_compare(const struct ns *a, const struct ns *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/lib/netns_linux.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: ns_lookup_internal
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_lookup_internal(ns_id_t ns_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/netns_linux.c:136,1
    - Dst: strcmp
      Src: /src/frr/lib/netns_linux.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 143
    functionName: ns_lookup_name_internal
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - strcmp
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_lookup_name_internal(const char *name)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ns_lookup_internal
      Src: /src/frr/lib/netns_linux.c:153,1
    - Dst: ns_lookup_name_internal
      Src: /src/frr/lib/netns_linux.c:155,1
    - Dst: XCALLOC
      Src: /src/frr/lib/netns_linux.c:157,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/netns_linux.c:160,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/netns_linux.c:162,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/netns_linux.c:166,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/netns_linux.c:168,1
    - Dst: zlog_info
      Src: /src/frr/lib/netns_linux.c:174,1
    - Dst: zlog_info
      Src: /src/frr/lib/netns_linux.c:176,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 3
    argNames:
    - ns
    - name
    - ns_id
    argTypes:
    - struct ns*
    - char*
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 181
    functionName: ns_get_created_internal
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - RB_REMOVE
    - XCALLOC
    - RB_INSERT
    - ns_lookup_name_internal
    - XSTRDUP
    - ns_lookup_internal
    linkageType: ''
    returnType: struct ns
    signature: "struct ns *ns_get_created_internal(struct ns *ns, char *name,\n\t\t\t\t\t
      \ ns_id_t ns_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ns_is_enabled
      Src: /src/frr/lib/netns_linux.c:192,1
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:193,1
    - Dst: open
      Src: /src/frr/lib/netns_linux.c:194,1
    - Dst: ns_is_enabled
      Src: /src/frr/lib/netns_linux.c:201,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/netns_linux.c:202,1
    - Dst: safe_strerror
      Src: /src/frr/lib/netns_linux.c:204,1
    - Dst: flog_err
      Src: /src/frr/lib/netns_linux.c:210,1
    - Dst: func
      Src: /src/frr/lib/netns_linux.c:216,1
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:218,1
    - Dst: zlog_info
      Src: /src/frr/lib/netns_linux.c:219,1
    - Dst: zlog_info
      Src: /src/frr/lib/netns_linux.c:221,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 231
    functionName: ns_enable_internal
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 0
    functionsReached:
    - have_netns
    - zlog_info
    - open
    - func
    - flog_err
    - safe_strerror
    - flog_err_sys
    - ns_is_enabled
    linkageType: ''
    returnType: int
    signature: int ns_enable_internal(struct ns *ns, void (*func)(ns_id_t, void *))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: ns_is_enabled
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - have_netns
    linkageType: ''
    returnType: int
    signature: int ns_is_enabled(struct ns *ns)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ns_is_enabled
      Src: /src/frr/lib/netns_linux.c:253,1
    - Dst: zlog_info
      Src: /src/frr/lib/netns_linux.c:255,1
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:260,1
    - Dst: close
      Src: /src/frr/lib/netns_linux.c:261,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 265
    functionName: ns_disable_internal
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 2
    functionsReached:
    - have_netns
    - zlog_info
    - close
    - ns_is_enabled
    linkageType: ''
    returnType: void
    signature: void ns_disable_internal(struct ns *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/lib/netns_linux.c:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 274
    functionName: ns_map_nsid_lookup_by_nsid
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct ns_map_nsid
    signature: struct ns_map_nsid *ns_map_nsid_lookup_by_nsid(ns_id_t ns_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ns_map_nsid_lookup_by_nsid
      Src: /src/frr/lib/netns_linux.c:281,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/netns_linux.c:284,1
    - Dst: XCALLOC
      Src: /src/frr/lib/netns_linux.c:289,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/netns_linux.c:295,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ns_id
    - map
    argTypes:
    - ns_id_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 297
    functionName: ns_map_nsid_with_external
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 2
    functionsReached:
    - RB_INSERT
    - XCALLOC
    - RB_REMOVE
    - ns_map_nsid_lookup_by_nsid
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t ns_map_nsid_with_external(ns_id_t ns_id, bool map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_get_created_internal
      Src: /src/frr/lib/netns_linux.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ns
    - name
    - ns_id
    argTypes:
    - struct ns*
    - char*
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: ns_get_created
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - ns_get_created_internal
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_get_created(struct ns *ns, char *name, ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: ns_have_netns
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - have_netns
    linkageType: ''
    returnType: int
    signature: int ns_have_netns(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/lib/netns_linux.c:313,1
    - Dst: ns_disable
      Src: /src/frr/lib/netns_linux.c:315,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/netns_linux.c:326,1
    - Dst: XFREE
      Src: /src/frr/lib/netns_linux.c:327,1
    - Dst: XFREE
      Src: /src/frr/lib/netns_linux.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 330
    functionName: ns_delete
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 2
    functionsReached:
    - ns_disable
    - zlog_info
    - XFREE
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void ns_delete(struct ns *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_lookup_internal
      Src: /src/frr/lib/netns_linux.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: ns_info_lookup
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - ns_lookup_internal
    linkageType: ''
    returnType: void
    signature: void *ns_info_lookup(ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_lookup_name_internal
      Src: /src/frr/lib/netns_linux.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: ns_lookup_name
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - ns_lookup_name_internal
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_lookup_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_enable_internal
      Src: /src/frr/lib/netns_linux.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: ns_enable
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 5
    functionsReached:
    - ns_enable_internal
    linkageType: ''
    returnType: int
    signature: int ns_enable(struct ns *ns, void (*func)(ns_id_t, void *))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_disable_internal
      Src: /src/frr/lib/netns_linux.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: ns_disable
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - ns_disable_internal
    linkageType: ''
    returnType: void
    signature: void ns_disable(struct ns *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ns_lookup_internal
      Src: /src/frr/lib/netns_linux.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 359
    functionName: ns_lookup
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 62
    functionsReached:
    - ns_lookup_internal
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_lookup(ns_id_t ns_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/netns_linux.c:370,1
    - Dst: func
      Src: /src/frr/lib/netns_linux.c:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - param_in
    - param_out
    argTypes:
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 375
    functionName: ns_walk_func
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 7
    functionsReached:
    - RB_FOREACH
    - func
    linkageType: ''
    returnType: void
    signature: "void ns_walk_func(int (*func)(struct ns *,\n\t\t\t      void *param_in,\n\t\t\t
      \     void **param_out),\n\t\t  void *param_in,\n\t\t  void **param_out)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 382
    functionName: ns_get_name
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ns_get_name(struct ns *ns)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 403
    functionName: ns_add_hook
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ns_add_hook(int type, int (*func)(struct ns *))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: realpath
      Src: /src/frr/lib/netns_linux.c:416,1
    - Dst: snprintf
      Src: /src/frr/lib/netns_linux.c:421,1
    - Dst: realpath
      Src: /src/frr/lib/netns_linux.c:422,1
    - Dst: vty_out
      Src: /src/frr/lib/netns_linux.c:427,1
    - Dst: safe_strerror
      Src: /src/frr/lib/netns_linux.c:429,1
    - Dst: flog_warn
      Src: /src/frr/lib/netns_linux.c:431,1
    - Dst: safe_strerror
      Src: /src/frr/lib/netns_linux.c:433,1
    - Dst: basename
      Src: /src/frr/lib/netns_linux.c:436,1
    - Dst: strlen
      Src: /src/frr/lib/netns_linux.c:437,1
    - Dst: vty_out
      Src: /src/frr/lib/netns_linux.c:439,1
    - Dst: flog_warn
      Src: /src/frr/lib/netns_linux.c:442,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - vty
    - name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 448
    functionName: ns_netns_pathname
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 3
    functionsReached:
    - realpath
    - strlen
    - flog_warn
    - vty_out
    - snprintf
    - safe_strerror
    - basename
    linkageType: ''
    returnType: char
    signature: char *ns_netns_pathname(struct vty *vty, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:459,1
    - Dst: open
      Src: /src/frr/lib/netns_linux.c:460,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 467
    functionName: ns_init
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 21
    functionsReached:
    - have_netns
    - open
    linkageType: ''
    returnType: void
    signature: void ns_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ns_init
      Src: /src/frr/lib/netns_linux.c:474,1
    - Dst: ns_get_created_internal
      Src: /src/frr/lib/netns_linux.c:475,1
    - Dst: flog_err
      Src: /src/frr/lib/netns_linux.c:477,1
    - Dst: exit
      Src: /src/frr/lib/netns_linux.c:479,1
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:481,1
    - Dst: open
      Src: /src/frr/lib/netns_linux.c:482,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/netns_linux.c:488,1
    - Dst: zlog_info
      Src: /src/frr/lib/netns_linux.c:490,1
    - Dst: ns_enable
      Src: /src/frr/lib/netns_linux.c:494,1
    - Dst: flog_err
      Src: /src/frr/lib/netns_linux.c:495,1
    - Dst: exit
      Src: /src/frr/lib/netns_linux.c:497,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - default_ns_id
    - internal_ns
    argTypes:
    - ns_id_t
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 499
    functionName: ns_init_management
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - ns_get_created_internal
    - have_netns
    - exit
    - open
    - zlog_info
    - ns_init
    - flog_err
    - XSTRDUP
    - ns_enable
    linkageType: ''
    returnType: void
    signature: void ns_init_management(ns_id_t default_ns_id, ns_id_t internal_ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/lib/netns_linux.c:506,1
    - Dst: RB_ROOT
      Src: /src/frr/lib/netns_linux.c:507,1
    - Dst: ns_delete
      Src: /src/frr/lib/netns_linux.c:509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 511
    functionName: ns_terminate
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 1
    functionsReached:
    - RB_EMPTY
    - RB_ROOT
    - ns_delete
    linkageType: ''
    returnType: void
    signature: void ns_terminate(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/lib/netns_linux.c:522,1
    - Dst: setns
      Src: /src/frr/lib/netns_linux.c:527,1
    - Dst: close
      Src: /src/frr/lib/netns_linux.c:529,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 513
    functionDepth: 1
    functionLinenumber: 513
    functionLinenumberEnd: 531
    functionName: ns_switch_to_netns
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 5
    functionsReached:
    - setns
    - open
    - close
    linkageType: ''
    returnType: int
    signature: int ns_switch_to_netns(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setns
      Src: /src/frr/lib/netns_linux.c:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 547
    functionName: ns_switchback_to_initial
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 5
    functionsReached:
    - setns
    linkageType: ''
    returnType: int
    signature: int ns_switchback_to_initial(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ns_lookup
      Src: /src/frr/lib/netns_linux.c:552,1
    - Dst: ns_is_enabled
      Src: /src/frr/lib/netns_linux.c:555,1
    - Dst: have_netns
      Src: /src/frr/lib/netns_linux.c:559,1
    - Dst: setns
      Src: /src/frr/lib/netns_linux.c:560,1
    - Dst: socket
      Src: /src/frr/lib/netns_linux.c:562,1
    - Dst: setns
      Src: /src/frr/lib/netns_linux.c:564,1
    - Dst: ns_lookup
      Src: /src/frr/lib/netns_linux.c:564,1
    - Dst: socket
      Src: /src/frr/lib/netns_linux.c:569,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - domain
    - type
    - protocol
    - ns_id
    argTypes:
    - int
    - int
    - int
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 550
    functionDepth: 2
    functionLinenumber: 550
    functionLinenumberEnd: 572
    functionName: ns_socket
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 6
    functionsReached:
    - have_netns
    - ns_lookup
    - socket
    - setns
    - ns_is_enabled
    linkageType: ''
    returnType: int
    signature: int ns_socket(int domain, int type, int protocol, ns_id_t ns_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ns_lookup
      Src: /src/frr/lib/netns_linux.c:582,1
    - Dst: ns_get_default
      Src: /src/frr/lib/netns_linux.c:589,1
    - Dst: assert
      Src: /src/frr/lib/netns_linux.c:590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ns_id_reference
    - link_nsid
    argTypes:
    - ns_id_t
    - ns_id_t
    assertStmts:
    - condition: (ns)
      pos:
        line_end: 589
        line_start: 589
        source_file: /src/frr/lib/netns_linux.c
    constantsTouched: []
    func_position:
      end: 592
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 592
    functionName: ns_id_get_absolute
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 2
    functionsReached:
    - ns_lookup
    - ns_get_default
    - assert
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t ns_id_get_absolute(ns_id_t ns_id_reference, ns_id_t link_nsid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 597
    functionName: ns_get_default
    functionSourceFile: /src/frr/lib/netns_linux.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_get_default(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/hash.c:33,1
    - Dst: XCALLOC
      Src: /src/frr/lib/hash.c:34,1
    - Dst: XCALLOC
      Src: /src/frr/lib/hash.c:36,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/hash.c:41,1
    - Dst: list_new
      Src: /src/frr/lib/hash.c:46,1
    - Dst: listnode_add
      Src: /src/frr/lib/hash.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - size
    - name
    argTypes:
    - unsigned int
    - char*
    assertStmts:
    - condition: ((size & (size - 1)) == 0)
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/frr/lib/hash.c
    constantsTouched: []
    func_position:
      end: 52
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 52
    functionName: hash_create_size
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 15
    functionsReached:
    - assert
    - XCALLOC
    - listnode_add
    - list_new
    - XSTRDUP
    linkageType: ''
    returnType: struct hash
    signature: "struct hash *hash_create_size(unsigned int size,\n\t\t\t      unsigned
      int (*hash_key)(const void *),\n\t\t\t      bool (*hash_cmp)(const void *, const
      void *),\n\t\t\t      const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/hash.c:46,1
    - Dst: listnode_add
      Src: /src/frr/lib/hash.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: (&_hashes_mtx)
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 0
    functionsReached:
    - list_new
    - listnode_add
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&_hashes_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create_size
      Src: /src/frr/lib/hash.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: hash_create
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 52
    functionsReached:
    - hash_create_size
    linkageType: ''
    returnType: struct hash
    signature: "struct hash *hash_create(unsigned int (*hash_key)(const void *),\n\t\t\t
      bool (*hash_cmp)(const void *, const void *),\n\t\t\t const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: hash_alloc_intern
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *hash_alloc_intern(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hz
    - ','
    - old
    - ','
    - new
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: hash_update_ssq
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hash_update_ssq(hz, old, new)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/hash.c:92,1
    - Dst: hash_update_ssq
      Src: /src/frr/lib/hash.c:114,1
    - Dst: XFREE
      Src: /src/frr/lib/hash.c:120,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 123
    functionName: hash_expand
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 0
    functionsReached:
    - XFREE
    - hash_update_ssq
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void hash_expand(struct hash *hash)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/hash.c:127,1
    - Dst: HASH_THRESHOLD
      Src: /src/frr/lib/hash.c:151,1
    - Dst: hash_expand
      Src: /src/frr/lib/hash.c:152,1
    - Dst: XCALLOC
      Src: /src/frr/lib/hash.c:156,1
    - Dst: frrtrace
      Src: /src/frr/lib/hash.c:163,1
    - Dst: hash_update_ssq
      Src: /src/frr/lib/hash.c:175,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - hash
    - data
    - (*alloc_func)(void *)
    argTypes:
    - struct hash*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 180
    functionName: hash_get
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 106
    functionsReached:
    - hash_update_ssq
    - HASH_THRESHOLD
    - XCALLOC
    - hash_expand
    - frrtrace
    linkageType: ''
    returnType: void
    signature: void *hash_get(struct hash *hash, void *data, void *(*alloc_func)(void
      *))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/lib/hash.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hash
    - data
    argTypes:
    - struct hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: hash_lookup
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 93
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: void *hash_lookup(struct hash *hash, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 195
    functionName: string_hash_make
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int string_hash_make(const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_update_ssq
      Src: /src/frr/lib/hash.c:224,1
    - Dst: XFREE
      Src: /src/frr/lib/hash.c:227,1
    - Dst: frrtrace
      Src: /src/frr/lib/hash.c:234,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - hash
    - data
    argTypes:
    - struct hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 237
    functionName: hash_release
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 96
    functionsReached:
    - XFREE
    - hash_update_ssq
    - frrtrace
    linkageType: ''
    returnType: void
    signature: void *hash_release(struct hash *hash, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - hash
    - arg
    argTypes:
    - struct hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 254
    functionName: hash_iterate
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 116
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void hash_iterate(struct hash *hash, void (*func)(struct hash_bucket
      *, void *),\n\t\t  void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - hash
    - arg
    argTypes:
    - struct hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 275
    functionName: hash_walk
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void hash_walk(struct hash *hash, int (*func)(struct hash_bucket *,
      void *),\n\t       void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/hash.c:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 298
    functionName: hash_clean
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 12
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void hash_clean(struct hash *hash, void (*free_func)(void *))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean
      Src: /src/frr/lib/hash.c:305,1
    - Dst: hash_free
      Src: /src/frr/lib/hash.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 308
    functionName: hash_clean_and_free
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 40
    functionsReached:
    - hash_clean
    - hash_free
    linkageType: ''
    returnType: void
    signature: void hash_clean_and_free(struct hash **hash, void (*free_func)(void
      *))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add
      Src: /src/frr/lib/hash.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 315
    functionName: hash_to_list_iter
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 0
    functionsReached:
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void hash_to_list_iter(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/hash.c:319,1
    - Dst: hash_iterate
      Src: /src/frr/lib/hash.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 323
    functionName: hash_to_list
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 2
    functionsReached:
    - hash_iterate
    - list_new
    linkageType: ''
    returnType: struct list
    signature: struct list *hash_to_list(struct hash *hash)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/lib/hash.c:329,1
    - Dst: list_delete
      Src: /src/frr/lib/hash.c:331,1
    - Dst: XFREE
      Src: /src/frr/lib/hash.c:336,1
    - Dst: XFREE
      Src: /src/frr/lib/hash.c:338,1
    - Dst: XFREE
      Src: /src/frr/lib/hash.c:339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 340
    functionName: hash_free
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 27
    functionsReached:
    - listnode_delete
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void hash_free(struct hash *hash)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/lib/hash.c:329,1
    - Dst: list_delete
      Src: /src/frr/lib/hash.c:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 334
    functionName: (&_hashes_mtx)
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - list_delete
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&_hashes_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/hash.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 459
    functionName: hash_cmd_init
    functionSourceFile: /src/frr/lib/hash.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void hash_cmd_init(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/lib/routing_nb_config.c:30,1
    - Dst: nb_node_has_dependency
      Src: /src/frr/lib/routing_nb_config.c:46,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routing_nb_config.c:47,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/routing_nb_config.c:48,1
    - Dst: assert
      Src: /src/frr/lib/routing_nb_config.c:49,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/routing_nb_config.c:50,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts:
    - condition: (vrf)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/frr/lib/routing_nb_config.c
    constantsTouched: []
    func_position:
      end: 56
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 56
    functionName: routing_control_plane_protocols_control_plane_protocol_create
    functionSourceFile: /src/frr/lib/routing_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - hook_call
    - vrf_lookup_by_name
    - yang_dnode_get_string
    - nb_node_has_dependency
    - assert
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_has_dependency
      Src: /src/frr/lib/routing_nb_config.c:68,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/routing_nb_config.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 72
    functionName: routing_control_plane_protocols_control_plane_protocol_destroy
    functionSourceFile: /src/frr/lib/routing_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_node_has_dependency
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routing_nb_config.c:79,1
    - Dst: snprintf
      Src: /src/frr/lib/routing_nb_config.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnode
    - xpath
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: vrf_to_control_plane_protocol
    functionSourceFile: /src/frr/lib/routing_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void vrf_to_control_plane_protocol(const struct lyd_node *dnode,\n\t\t\t\t\t
      \ char *xpath)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routing_nb_config.c:89,1
    - Dst: snprintf
      Src: /src/frr/lib/routing_nb_config.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnode
    - xpath
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: control_plane_protocol_to_vrf
    functionSourceFile: /src/frr/lib/routing_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void control_plane_protocol_to_vrf(const struct lyd_node *dnode,\n\t\t\t\t\t
      \ char *xpath)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_set_dependency_cbs
      Src: /src/frr/lib/routing_nb_config.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: routing_control_plane_protocols_register_vrf_dependency
    functionSourceFile: /src/frr/lib/routing_nb_config.c
    functionUses: 2
    functionsReached:
    - nb_node_set_dependency_cbs
    linkageType: ''
    returnType: void
    signature: void routing_control_plane_protocols_register_vrf_dependency(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/lib/mgmt_be_client.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_MGMTD_BE_CLIENT_ID(id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - id
    argTypes:
    - enum mgmt_be_client_id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: mgmt_be_client_id2name
    functionSourceFile: /src/frr/lib/mgmt_be_client.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *mgmt_be_client_id2name(enum mgmt_be_client_id id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/mgmt_be_client.h:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 132
    functionName: mgmt_be_client_name2id
    functionSourceFile: /src/frr/lib/mgmt_be_client.h
    functionUses: 1
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: enum mgmt_be_client_id
    signature: enum mgmt_be_client_id mgmt_be_client_name2id(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/mgmt_be_client.h:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: FOREACH_MGMTD_BE_CLIENT_ID
    functionSourceFile: /src/frr/lib/mgmt_be_client.h
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: void
    signature: void FOREACH_MGMTD_BE_CLIENT_ID (id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: MGMTD_BE_CLIENT_DBG
    functionSourceFile: /src/frr/lib/mgmt_be_client.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_BE_CLIENT_DBG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: MGMTD_BE_CLIENT_ERR
    functionSourceFile: /src/frr/lib/mgmt_be_client.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_BE_CLIENT_ERR(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: MGMTD_DBG_BE_CLIENT_CHECK
    functionSourceFile: /src/frr/lib/mgmt_be_client.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMTD_DBG_BE_CLIENT_CHECK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: __explicit_bzero_hook
    functionSourceFile: /src/frr/lib/explicit_bzero.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void __explicit_bzero_hook(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/explicit_bzero.c:35,1
    - Dst: __explicit_bzero_hook
      Src: /src/frr/lib/explicit_bzero.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: explicit_bzero
    functionSourceFile: /src/frr/lib/explicit_bzero.c
    functionUses: 0
    functionsReached:
    - __explicit_bzero_hook
    - memset
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - l
    - ','
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: static_cast
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: static_cast(l, r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - l
    - ','
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 205
    functionName: static_cast
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: static_cast(l, r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sendmsg
      Src: /src/frr/lib/zebra.h:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fd
    - mmh
    - len
    - flags
    argTypes:
    - int
    - struct mmsghdr*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: sendmmsg
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 1
    functionsReached:
    - sendmsg
    linkageType: ''
    returnType: int
    signature: "int sendmmsg(int fd, struct mmsghdr *mmh, unsigned int len,\n\t\t\t
      \  int flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 255
    functionName: _CMSG_DATA_ALIGN
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CMSG_DATA_ALIGN(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 259
    functionName: _CMSG_HDR_ALIGN
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CMSG_HDR_ALIGN(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 268
    functionName: CMSG_SPACE
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_SPACE(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 274
    functionName: CMSG_LEN
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_LEN(l)
  - 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: 327
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 327
    functionName: strmatch
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 64
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strmatch(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 330
    functionName: htonll
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htonll(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 331
    functionName: ntohll
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ntohll(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    functionName: htonll
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htonll(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    functionName: ntohll
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ntohll(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 350
    functionName: IS_VALID_AFI
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VALID_AFI(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - afi
    - ','
    - safi
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: FOREACH_AFI_SAFI
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_AFI_SAFI(afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - afi
    - ','
    - safi
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: FOREACH_AFI_SAFI_NSF
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_AFI_SAFI_NSF(afi, safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - V
    - ','
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 395
    functionName: CHECK_FLAG
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 978
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_FLAG(V,F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - V
    - ','
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    functionName: SET_FLAG
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 609
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_FLAG(V,F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - V
    - ','
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 397
    functionName: UNSET_FLAG
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 307
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSET_FLAG(V,F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 398
    functionName: RESET_FLAG
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESET_FLAG(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - V
    - ','
    - F
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 399
    functionName: COND_FLAG
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COND_FLAG(V, F, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PV
    - ','
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 403
    functionName: CHECK_FLAG_ATOMIC
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_FLAG_ATOMIC(PV, F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PV
    - ','
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 405
    functionName: SET_FLAG_ATOMIC
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_FLAG_ATOMIC(PV, F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PV
    - ','
    - F
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 407
    functionName: UNSET_FLAG_ATOMIC
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNSET_FLAG_ATOMIC(PV, F)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PV
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 409
    functionName: RESET_FLAG_ATOMIC
    functionSourceFile: /src/frr/lib/zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESET_FLAG_ATOMIC(PV)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/vector.c:17,1
    - Dst: XCALLOC
      Src: /src/frr/lib/vector.c:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - size
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: vector_init
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 4
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: vector
    signature: vector vector_init(unsigned int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/vector.c:32,1
    - Dst: XFREE
      Src: /src/frr/lib/vector.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - vector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: vector_free
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 5
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vector_free(vector v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/vector.c:39,1
    - Dst: XCALLOC
      Src: /src/frr/lib/vector.c:46,1
    - Dst: memcpy
      Src: /src/frr/lib/vector.c:47,1
    - Dst: index::index
      Src: /src/frr/lib/vector.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - vector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 50
    functionName: vector_copy
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 0
    functionsReached:
    - index::index
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: vector
    signature: vector vector_copy(vector v)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/lib/vector.c:58,1
    - Dst: memset
      Src: /src/frr/lib/vector.c:60,1
    - Dst: vector_ensure
      Src: /src/frr/lib/vector.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - v
    - num
    argTypes:
    - vector
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: vector_ensure
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 1
    functionsReached:
    - vector_ensure
    - XREALLOC
    - memset
    linkageType: ''
    returnType: void
    signature: void vector_ensure(vector v, unsigned int num)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - v
    argTypes:
    - vector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 85
    functionName: vector_empty_slot
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vector_empty_slot(vector v)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector_empty_slot
      Src: /src/frr/lib/vector.c:92,1
    - Dst: vector_ensure
      Src: /src/frr/lib/vector.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - v
    - val
    argTypes:
    - vector
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 105
    functionName: vector_set
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 25
    functionsReached:
    - vector_ensure
    - vector_empty_slot
    linkageType: ''
    returnType: int
    signature: int vector_set(vector v, void *val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector_ensure
      Src: /src/frr/lib/vector.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - v
    - i
    - val
    argTypes:
    - vector
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 122
    functionName: vector_set_index
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 1
    functionsReached:
    - vector_ensure
    linkageType: ''
    returnType: int
    signature: int vector_set_index(vector v, unsigned int i, void *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - v
    - i
    argTypes:
    - vector
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 130
    functionName: vector_lookup
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *vector_lookup(vector v, unsigned int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_ensure
      Src: /src/frr/lib/vector.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v
    - i
    argTypes:
    - vector
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: vector_lookup_ensure
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 0
    functionsReached:
    - vector_ensure
    linkageType: ''
    returnType: void
    signature: void *vector_lookup_ensure(vector v, unsigned int i)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - v
    - i
    argTypes:
    - vector
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 155
    functionName: vector_unset
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vector_unset(vector v, unsigned int i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/frr/lib/vector.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - v
    - ix
    argTypes:
    - vector
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: vector_remove
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 0
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void vector_remove(vector v, unsigned int ix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/vector.c:173,1
    - Dst: vector_slot
      Src: /src/frr/lib/vector.c:174,1
    - Dst: vector_remove
      Src: /src/frr/lib/vector.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - vector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 179
    functionName: vector_compact
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 1
    functionsReached:
    - vector_active
    - vector_slot
    - vector_remove
    linkageType: ''
    returnType: void
    signature: void vector_compact(vector v)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - v
    - val
    argTypes:
    - vector
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 196
    functionName: vector_unset_value
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vector_unset_value(vector v, void *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/vector.c:200,1
    - Dst: memcpy
      Src: /src/frr/lib/vector.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - v
    - dest
    - argc
    argTypes:
    - vector
    - void***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 203
    functionName: vector_to_array
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 1
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void vector_to_array(vector v, void ***dest, int *argc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_init
      Src: /src/frr/lib/vector.c:207,1
    - Dst: vector_set_index
      Src: /src/frr/lib/vector.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - src
    - argc
    argTypes:
    - void**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: array_to_vector
    functionSourceFile: /src/frr/lib/vector.c
    functionUses: 1
    functionsReached:
    - vector_init
    - vector_set_index
    linkageType: ''
    returnType: vector
    signature: vector array_to_vector(void **src, int argc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 28
    functionName: trace_matcher
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: trace_matcher(...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:70,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:70,1
    - Dst: strcmp
      Src: /src/frr/lib/command_match.c:72,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - vline
    - idx
    argTypes:
    - vector
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: is_neg
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 0
    functionsReached:
    - vector_active
    - vector_slot
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool is_neg(vector vline, size_t idx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector_init
      Src: /src/frr/lib/command_match.c:83,1
    - Dst: vector_set_index
      Src: /src/frr/lib/command_match.c:84,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_match.c:84,1
    - Dst: memcpy
      Src: /src/frr/lib/command_match.c:85,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:89,1
    - Dst: command_match_r
      Src: /src/frr/lib/command_match.c:90,1
    - Dst: listhead
      Src: /src/frr/lib/command_match.c:92,1
    - Dst: listtail
      Src: /src/frr/lib/command_match.c:93,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:95,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:96,1
    - Dst: cmd_token_del
      Src: /src/frr/lib/command_match.c:99,1
    - Dst: list_delete_node
      Src: /src/frr/lib/command_match.c:100,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:103,1
    - Dst: list_delete_node
      Src: /src/frr/lib/command_match.c:104,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:109,1
    - Dst: del_arglist
      Src: /src/frr/lib/command_match.c:111,1
    - Dst: trace_matcher
      Src: /src/frr/lib/command_match.c:116,1
    - Dst: trace_matcher
      Src: /src/frr/lib/command_match.c:118,1
    - Dst: XFREE
      Src: /src/frr/lib/command_match.c:123,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:123,1
    - Dst: vector_free
      Src: /src/frr/lib/command_match.c:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 4
    argNames:
    - cmdgraph
    - vline
    - argv
    - el
    argTypes:
    - struct graph*
    - vector
    - struct list**
    - struct cmd_element**
    assertStmts:
    - condition: (head)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/frr/lib/command_match.c
    - condition: (*el)
      pos:
        line_end: 108
        line_start: 108
        source_file: /src/frr/lib/command_match.c
    - condition: (tail)
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 128
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 128
    functionName: command_match
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 0
    functionsReached:
    - assert
    - cmd_token_del
    - vector_free
    - command_match_r
    - listtail
    - trace_matcher
    - listhead
    - vector_slot
    - list_delete_node
    - del_arglist
    - vector_set_index
    - XSTRDUP
    - XFREE
    - listgetdata
    - vector_init
    - memcpy
    linkageType: ''
    returnType: enum matcher_rv
    signature: "enum matcher_rv command_match(struct graph *cmdgraph, vector vline,\n\t\t\t
      \     struct list **argv, const struct cmd_element **el)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_match.c:186,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:186,1
    - Dst: min_match_level
      Src: /src/frr/lib/command_match.c:192,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:205,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:208,1
    - Dst: match_token
      Src: /src/frr/lib/command_match.c:210,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:211,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:212,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:215,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:218,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:221,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:224,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:228,1
    - Dst: fprintf
      Src: /src/frr/lib/command_match.c:229,1
    - Dst: match_token
      Src: /src/frr/lib/command_match.c:233,1
    - Dst: list_new
      Src: /src/frr/lib/command_match.c:243,1
    - Dst: add_nexthops
      Src: /src/frr/lib/command_match.c:244,1
    - Dst: is_neg
      Src: /src/frr/lib/command_match.c:244,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/command_match.c:247,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:249,1
    - Dst: list_new
      Src: /src/frr/lib/command_match.c:259,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:263,1
    - Dst: listnode_add
      Src: /src/frr/lib/command_match.c:270,1
    - Dst: command_match_r
      Src: /src/frr/lib/command_match.c:283,1
    - Dst: disambiguate
      Src: /src/frr/lib/command_match.c:289,1
    - Dst: del_arglist
      Src: /src/frr/lib/command_match.c:310,1
    - Dst: MAX
      Src: /src/frr/lib/command_match.c:317,1
    - Dst: cmd_token_dup
      Src: /src/frr/lib/command_match.c:323,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command_match.c:324,1
    - Dst: listnode_add_before
      Src: /src/frr/lib/command_match.c:325,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:326,1
    - Dst: list_delete
      Src: /src/frr/lib/command_match.c:330,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 75
    argCount: 5
    argNames:
    - start
    - vline
    - n
    - stack
    - currbest
    argTypes:
    - struct graph_node*
    - vector
    - unsigned int
    - struct graph_node**
    - struct list**
    assertStmts:
    - condition: (n < vector_active(vline))
      pos:
        line_end: 185
        line_start: 185
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 333
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 333
    functionName: command_match_r
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - command_match_r
    - list_delete
    - vector_slot
    - match_token
    - listnode_add
    - min_match_level
    - del_arglist
    - ALL_LIST_ELEMENTS_RO
    - fprintf
    - is_neg
    - listnode_add_before
    - assert
    - vector_active
    - cmd_token_dup
    - MAX
    - XSTRDUP
    - add_nexthops
    - list_new
    - disambiguate
    linkageType: ''
    returnType: enum matcher_rv
    signature: "enum matcher_rv command_match_r(struct graph_node *start, vector vline,\n\t\t\t\t
      \      unsigned int n,\n\t\t\t\t       struct graph_node **stack,\n\t\t\t\t
      \      struct list **currbest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/command_match.c:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: stack_del
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void stack_del(void *val)
  - BBCount: 128
    BranchProfiles: []
    Callsites:
    - Dst: is_neg
      Src: /src/frr/lib/command_match.c:345,1
    - Dst: list_new
      Src: /src/frr/lib/command_match.c:349,1
    - Dst: list_new
      Src: /src/frr/lib/command_match.c:350,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:359,1
    - Dst: add_nexthops
      Src: /src/frr/lib/command_match.c:360,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:363,1
    - Dst: list_delete
      Src: /src/frr/lib/command_match.c:364,1
    - Dst: list_new
      Src: /src/frr/lib/command_match.c:366,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:369,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/command_match.c:372,1
    - Dst: match_token
      Src: /src/frr/lib/command_match.c:375,1
    - Dst: switch
      Src: /src/frr/lib/command_match.c:395,1
    - Dst: trace_matcher
      Src: /src/frr/lib/command_match.c:398,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:399,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command_match.c:400,1
    - Dst: listnode_add
      Src: /src/frr/lib/command_match.c:405,1
    - Dst: trace_matcher
      Src: /src/frr/lib/command_match.c:408,1
    - Dst: trace_matcher
      Src: /src/frr/lib/command_match.c:413,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command_match.c:415,1
    - Dst: listnode_add
      Src: /src/frr/lib/command_match.c:421,1
    - Dst: add_nexthops
      Src: /src/frr/lib/command_match.c:423,1
    - Dst: trace_matcher
      Src: /src/frr/lib/command_match.c:427,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:441,1
    - Dst: MATCHER_ERROR
      Src: /src/frr/lib/command_match.c:446,1
    - Dst: list_new
      Src: /src/frr/lib/command_match.c:448,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/command_match.c:449,1
    - Dst: listnode_add
      Src: /src/frr/lib/command_match.c:450,1
    - Dst: list_delete
      Src: /src/frr/lib/command_match.c:454,1
    - Dst: list_delete
      Src: /src/frr/lib/command_match.c:455,1
    - Dst: add_nexthops
      Src: /src/frr/lib/command_match.c:473,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:479,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:480,1
    - Dst: add_nexthops
      Src: /src/frr/lib/command_match.c:496,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command_match.c:499,1
    - Dst: memcpy
      Src: /src/frr/lib/command_match.c:504,1
    - Dst: listnode_add
      Src: /src/frr/lib/command_match.c:507,1
    - Dst: listnode_add
      Src: /src/frr/lib/command_match.c:509,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:549,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:584,1
    - Dst: score_precedence
      Src: /src/frr/lib/command_match.c:601,1
    - Dst: score_precedence
      Src: /src/frr/lib/command_match.c:602,1
    - Dst: match_token
      Src: /src/frr/lib/command_match.c:610,1
    - Dst: match_token
      Src: /src/frr/lib/command_match.c:611,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:630,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:631,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:633,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:634,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:634,1
    - Dst: listhead_unchecked
      Src: /src/frr/lib/command_match.c:636,1
    - Dst: listhead_unchecked
      Src: /src/frr/lib/command_match.c:637,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:638,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:638,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:642,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:643,1
    - Dst: disambiguate_tokens
      Src: /src/frr/lib/command_match.c:644,1
    - Dst: listnextnode
      Src: /src/frr/lib/command_match.c:646,1
    - Dst: listnextnode
      Src: /src/frr/lib/command_match.c:647,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:648,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:649,1
    - Dst: listtail
      Src: /src/frr/lib/command_match.c:669,1
    - Dst: list_delete_node
      Src: /src/frr/lib/command_match.c:671,1
    - Dst: list_delete
      Src: /src/frr/lib/command_match.c:674,1
    - Dst: match_word
      Src: /src/frr/lib/command_match.c:687,1
    - Dst: match_ipv4
      Src: /src/frr/lib/command_match.c:689,1
    - Dst: match_ipv4_prefix
      Src: /src/frr/lib/command_match.c:691,1
    - Dst: match_ipv6_prefix
      Src: /src/frr/lib/command_match.c:693,1
    - Dst: match_ipv6_prefix
      Src: /src/frr/lib/command_match.c:695,1
    - Dst: match_range
      Src: /src/frr/lib/command_match.c:697,1
    - Dst: match_variable
      Src: /src/frr/lib/command_match.c:699,1
    - Dst: match_mac
      Src: /src/frr/lib/command_match.c:701,1
    - Dst: match_mac
      Src: /src/frr/lib/command_match.c:703,1
    - Dst: asn_str2asn_match
      Src: /src/frr/lib/command_match.c:705,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:714,1
    - Dst: memset
      Src: /src/frr/lib/command_match.c:727,1
    - Dst: isdigit
      Src: /src/frr/lib/command_match.c:743,1
    - Dst: memcpy
      Src: /src/frr/lib/command_match.c:752,1
    - Dst: atoi
      Src: /src/frr/lib/command_match.c:754,1
    - Dst: memset
      Src: /src/frr/lib/command_match.c:782,1
    - Dst: isdigit
      Src: /src/frr/lib/command_match.c:799,1
    - Dst: memcpy
      Src: /src/frr/lib/command_match.c:808,1
    - Dst: atoi
      Src: /src/frr/lib/command_match.c:810,1
    - Dst: isdigit
      Src: /src/frr/lib/command_match.c:836,1
    - Dst: atoi
      Src: /src/frr/lib/command_match.c:842,1
    - Dst: strspn
      Src: /src/frr/lib/command_match.c:869,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:870,1
    - Dst: inet_pton
      Src: /src/frr/lib/command_match.c:965,1
    - Dst: strtol
      Src: /src/frr/lib/command_match.c:972,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:984,1
    - Dst: strtoll
      Src: /src/frr/lib/command_match.c:989,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:1001,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1004,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1009,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1009,1
    - Dst: strncmp
      Src: /src/frr/lib/command_match.c:1010,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1010,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1014,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1014,1
    - Dst: strncmp
      Src: /src/frr/lib/command_match.c:1015,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1015,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:1023,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1040,1
    - Dst: strchr
      Src: /src/frr/lib/command_match.c:1045,1
    - Dst: strtoul
      Src: /src/frr/lib/command_match.c:1062,1
    CyclomaticComplexity: 130
    EdgeCount: 130
    ICount: 365
    argCount: 3
    argNames:
    - graph
    - vline
    - completions
    argTypes:
    - struct graph*
    - vector
    - struct list**
    assertStmts:
    - condition: (first != NULL)
      pos:
        line_end: 629
        line_start: 629
        source_file: /src/frr/lib/command_match.c
    - condition: (token->type == WORD_TKN)
      pos:
        line_end: 1000
        line_start: 1000
        source_file: /src/frr/lib/command_match.c
    - condition: (second != NULL)
      pos:
        line_end: 630
        line_start: 630
        source_file: /src/frr/lib/command_match.c
    - condition: (first->count == second->count)
      pos:
        line_end: 632
        line_start: 632
        source_file: /src/frr/lib/command_match.c
    - condition: (first->count == vector_active(vline) - n + 1)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/frr/lib/command_match.c
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 713
        line_start: 713
        source_file: /src/frr/lib/command_match.c
    - condition: (token->type == RANGE_TKN)
      pos:
        line_end: 983
        line_start: 983
        source_file: /src/frr/lib/command_match.c
    - condition: (last_token)
      pos:
        line_end: 398
        line_start: 398
        source_file: /src/frr/lib/command_match.c
    - condition: (token->type == VARIABLE_TKN)
      pos:
        line_end: 1022
        line_start: 1022
        source_file: /src/frr/lib/command_match.c
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 548
        line_start: 548
        source_file: /src/frr/lib/command_match.c
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 583
        line_start: 583
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 1072
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 1072
    functionName: command_complete
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 0
    functionsReached:
    - switch
    - listhead_unchecked
    - list_delete
    - match_ipv4
    - strlen
    - trace_matcher
    - vector_slot
    - match_token
    - listnode_add
    - strncmp
    - strchr
    - match_ipv4_prefix
    - memset
    - match_variable
    - ALL_LIST_ELEMENTS_RO
    - match_mac
    - is_neg
    - listgetdata
    - assert
    - listnextnode
    - isdigit
    - score_precedence
    - MATCHER_ERROR
    - strtoll
    - vector_active
    - strspn
    - list_delete_node
    - inet_pton
    - atoi
    - memcpy
    - add_nexthops
    - strtoul
    - match_word
    - listtail
    - match_range
    - XMALLOC
    - strtol
    - list_new
    - disambiguate_tokens
    - match_ipv6_prefix
    - asn_str2asn_match
    linkageType: ''
    returnType: enum matcher_rv
    signature: "enum matcher_rv command_complete(struct graph *graph, vector vline,\n\t\t\t\t
      struct list **completions)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_match.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum cmd_token_type
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 548
        line_start: 548
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 550
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 550
    functionName: min_match_level
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type min_match_level(enum cmd_token_type type)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_match.c:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum cmd_token_type
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 583
        line_start: 583
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 585
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 585
    functionName: score_precedence
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int score_precedence(enum cmd_token_type type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: score_precedence
      Src: /src/frr/lib/command_match.c:601,1
    - Dst: score_precedence
      Src: /src/frr/lib/command_match.c:602,1
    - Dst: match_token
      Src: /src/frr/lib/command_match.c:610,1
    - Dst: match_token
      Src: /src/frr/lib/command_match.c:611,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - first
    - second
    - input_token
    argTypes:
    - struct cmd_token*
    - struct cmd_token*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 595
    functionDepth: 2
    functionLinenumber: 595
    functionLinenumberEnd: 616
    functionName: disambiguate_tokens
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 1
    functionsReached:
    - score_precedence
    - match_token
    linkageType: ''
    returnType: struct cmd_token
    signature: "struct cmd_token *disambiguate_tokens(struct cmd_token *first,\n\t\t\t\t\t
      \    struct cmd_token *second,\n\t\t\t\t\t     char *input_token)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_match.c:630,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:631,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:633,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:634,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:634,1
    - Dst: listhead_unchecked
      Src: /src/frr/lib/command_match.c:636,1
    - Dst: listhead_unchecked
      Src: /src/frr/lib/command_match.c:637,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:638,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:638,1
    - Dst: vector_active
      Src: /src/frr/lib/command_match.c:642,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_match.c:643,1
    - Dst: disambiguate_tokens
      Src: /src/frr/lib/command_match.c:644,1
    - Dst: listnextnode
      Src: /src/frr/lib/command_match.c:646,1
    - Dst: listnextnode
      Src: /src/frr/lib/command_match.c:647,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:648,1
    - Dst: listgetdata
      Src: /src/frr/lib/command_match.c:649,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - first
    - second
    - vline
    - n
    argTypes:
    - struct list*
    - struct list*
    - vector
    - unsigned int
    assertStmts:
    - condition: (first != NULL)
      pos:
        line_end: 629
        line_start: 629
        source_file: /src/frr/lib/command_match.c
    - condition: (first->count == vector_active(vline) - n + 1)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/frr/lib/command_match.c
    - condition: (second != NULL)
      pos:
        line_end: 630
        line_start: 630
        source_file: /src/frr/lib/command_match.c
    - condition: (first->count == second->count)
      pos:
        line_end: 632
        line_start: 632
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 653
      start: 627
    functionDepth: 3
    functionLinenumber: 627
    functionLinenumberEnd: 653
    functionName: disambiguate
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 1
    functionsReached:
    - listnextnode
    - listhead_unchecked
    - vector_active
    - vector_slot
    - disambiguate_tokens
    - listgetdata
    - assert
    linkageType: ''
    returnType: struct list
    signature: "struct list *disambiguate(struct list *first, struct list *second,\n\t\t\t\t
      vector vline, unsigned int n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listtail
      Src: /src/frr/lib/command_match.c:669,1
    - Dst: list_delete_node
      Src: /src/frr/lib/command_match.c:671,1
    - Dst: list_delete
      Src: /src/frr/lib/command_match.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 666
    functionDepth: 2
    functionLinenumber: 666
    functionLinenumberEnd: 675
    functionName: del_arglist
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - listtail
    - list_delete_node
    - list_delete
    linkageType: ''
    returnType: void
    signature: void del_arglist(struct list *list)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: match_word
      Src: /src/frr/lib/command_match.c:687,1
    - Dst: match_ipv4
      Src: /src/frr/lib/command_match.c:689,1
    - Dst: match_ipv4_prefix
      Src: /src/frr/lib/command_match.c:691,1
    - Dst: match_ipv6_prefix
      Src: /src/frr/lib/command_match.c:693,1
    - Dst: match_ipv6_prefix
      Src: /src/frr/lib/command_match.c:695,1
    - Dst: match_range
      Src: /src/frr/lib/command_match.c:697,1
    - Dst: match_variable
      Src: /src/frr/lib/command_match.c:699,1
    - Dst: match_mac
      Src: /src/frr/lib/command_match.c:701,1
    - Dst: match_mac
      Src: /src/frr/lib/command_match.c:703,1
    - Dst: asn_str2asn_match
      Src: /src/frr/lib/command_match.c:705,1
    - Dst: assert
      Src: /src/frr/lib/command_match.c:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 32
    argCount: 2
    argNames:
    - token
    - input_token
    argTypes:
    - struct cmd_token*
    - char*
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 713
        line_start: 713
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 715
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 715
    functionName: match_token
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 3
    functionsReached:
    - match_ipv4
    - match_ipv4_prefix
    - match_word
    - match_variable
    - match_range
    - match_mac
    - match_ipv6_prefix
    - asn_str2asn_match
    - assert
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_token(struct cmd_token *token, char *input_token)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/command_match.c:727,1
    - Dst: isdigit
      Src: /src/frr/lib/command_match.c:743,1
    - Dst: memcpy
      Src: /src/frr/lib/command_match.c:752,1
    - Dst: atoi
      Src: /src/frr/lib/command_match.c:754,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 773
    functionName: match_ipv4
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 3
    functionsReached:
    - memcpy
    - isdigit
    - atoi
    - memset
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_ipv4(const char *str)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/command_match.c:782,1
    - Dst: isdigit
      Src: /src/frr/lib/command_match.c:799,1
    - Dst: memcpy
      Src: /src/frr/lib/command_match.c:808,1
    - Dst: atoi
      Src: /src/frr/lib/command_match.c:810,1
    - Dst: isdigit
      Src: /src/frr/lib/command_match.c:836,1
    - Dst: atoi
      Src: /src/frr/lib/command_match.c:842,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 49
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 775
    functionDepth: 0
    functionLinenumber: 775
    functionLinenumberEnd: 846
    functionName: match_ipv4_prefix
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - memcpy
    - isdigit
    - atoi
    - memset
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_ipv4_prefix(const char *str)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: strspn
      Src: /src/frr/lib/command_match.c:869,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:870,1
    - Dst: inet_pton
      Src: /src/frr/lib/command_match.c:965,1
    - Dst: strtol
      Src: /src/frr/lib/command_match.c:972,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 90
    argCount: 2
    argNames:
    - str
    - prefix
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 980
    functionName: match_ipv6_prefix
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - strspn
    - strlen
    - inet_pton
    - strtol
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_ipv6_prefix(const char *str, bool prefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_match.c:984,1
    - Dst: strtoll
      Src: /src/frr/lib/command_match.c:989,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - token
    - str
    argTypes:
    - struct cmd_token*
    - char*
    assertStmts:
    - condition: (token->type == RANGE_TKN)
      pos:
        line_end: 983
        line_start: 983
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 997
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 997
    functionName: match_range
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - strtoll
    - assert
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_range(struct cmd_token *token, const char *str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_match.c:1001,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1004,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1009,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1009,1
    - Dst: strncmp
      Src: /src/frr/lib/command_match.c:1010,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1010,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1014,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1014,1
    - Dst: strncmp
      Src: /src/frr/lib/command_match.c:1015,1
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1015,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - token
    - word
    argTypes:
    - struct cmd_token*
    - char*
    assertStmts:
    - condition: (token->type == WORD_TKN)
      pos:
        line_end: 1000
        line_start: 1000
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 1019
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1019
    functionName: match_word
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - strlen
    - assert
    - strncmp
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_word(struct cmd_token *token, const char *word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/command_match.c:1023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - token
    - word
    argTypes:
    - struct cmd_token*
    - char*
    assertStmts:
    - condition: (token->type == VARIABLE_TKN)
      pos:
        line_end: 1022
        line_start: 1022
        source_file: /src/frr/lib/command_match.c
    constantsTouched: []
    func_position:
      end: 1025
      start: 1021
    functionDepth: 1
    functionLinenumber: 1021
    functionLinenumberEnd: 1025
    functionName: match_variable
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_variable(struct cmd_token *token, const char
      *word)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/command_match.c:1040,1
    - Dst: strchr
      Src: /src/frr/lib/command_match.c:1045,1
    - Dst: strtoul
      Src: /src/frr/lib/command_match.c:1062,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 27
    argCount: 2
    argNames:
    - word
    - prefix
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1029
    functionDepth: 0
    functionLinenumber: 1029
    functionLinenumberEnd: 1072
    functionName: match_mac
    functionSourceFile: /src/frr/lib/command_match.c
    functionUses: 2
    functionsReached:
    - strlen
    - strchr
    - strtoul
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type match_mac(const char *word, bool prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/nexthop_group.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nhgc1
    - nhgc2
    argTypes:
    - struct nexthop_group_cmd*
    - struct nexthop_group_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: nexthop_group_cmd_compare
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int nexthop_group_cmd_compare(const struct nexthop_group_cmd *nhgc1,\n\t\t\t
      \ const struct nexthop_group_cmd *nhgc2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: nexthop_group_tail
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct nexthop
    signature: struct nexthop *nexthop_group_tail(const struct nexthop_group *nhg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/lib/nexthop_group.c:78,1
    - Dst: for
      Src: /src/frr/lib/nexthop_group.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 93
    functionName: nexthop_group_nexthop_num
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 6
    functionsReached:
    - for
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t nexthop_group_nexthop_num(const struct nexthop_group *nhg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/lib/nexthop_group.c:100,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop_group.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 106
    functionName: nexthop_group_active_nexthop_num
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 10
    functionsReached:
    - CHECK_FLAG
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t nexthop_group_active_nexthop_num(const struct nexthop_group
      *nhg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop_group.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 120
    functionName: nexthop_group_active_nexthop_num_no_recurse
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t nexthop_group_active_nexthop_num_no_recurse(const struct nexthop_group
      *nhg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/lib/nexthop_group.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 132
    functionName: nexthop_group_has_label
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: bool
    signature: bool nexthop_group_has_label(const struct nexthop_group *nhg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/lib/nexthop_group.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - nhg
    - nh
    argTypes:
    - struct nexthop_group*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 134
    functionDepth: 6
    functionLinenumber: 134
    functionLinenumberEnd: 145
    functionName: nexthop_exists
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - nexthop_same
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nexthop_exists(const struct nexthop_group *nhg,\n\t\t\t
      \      const struct nexthop *nh)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/nexthop_group.c:172,1
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/nexthop_group.c:179,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 2
    argNames:
    - nhg
    - nh
    argTypes:
    - struct nexthop_group*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 198
    functionName: nhg_nh_find
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - nexthop_g_addr_cmp
    linkageType: ''
    returnType: struct nexthop
    signature: "struct nexthop *nhg_nh_find(const struct nexthop_group *nhg,\n\t\t\t\t
      \  const struct nexthop *nh)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_nexthop_num_func
      Src: /src/frr/lib/nexthop_group.c:215,1
    - Dst: nexthop_group_nexthop_num_func
      Src: /src/frr/lib/nexthop_group.c:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - nhg1
    - nhg2
    argTypes:
    - struct nexthop_group*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 220
    functionName: nexthop_group_equal_common
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - nexthop_group_nexthop_num_func
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_group_equal_common(const struct nexthop_group *nhg1,\n\t\t\t
      \  const struct nexthop_group *nhg2,\n\t\t\t   uint8_t (*nexthop_group_nexthop_num_func)(\n\t\t\t\t
      \  const struct nexthop_group *nhg))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_equal_common
      Src: /src/frr/lib/nexthop_group.c:229,1
    - Dst: nexthop_same
      Src: /src/frr/lib/nexthop_group.c:239,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - nhg1
    - nhg2
    argTypes:
    - struct nexthop_group*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 223
    functionDepth: 6
    functionLinenumber: 223
    functionLinenumberEnd: 244
    functionName: nexthop_group_equal_no_recurse
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 2
    functionsReached:
    - nexthop_same
    - nexthop_group_equal_common
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_group_equal_no_recurse(const struct nexthop_group *nhg1,\n\t\t\t\t
      \   const struct nexthop_group *nhg2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_equal_common
      Src: /src/frr/lib/nexthop_group.c:253,1
    - Dst: nexthop_next
      Src: /src/frr/lib/nexthop_group.c:257,1
    - Dst: nexthop_next
      Src: /src/frr/lib/nexthop_group.c:257,1
    - Dst: nexthop_same
      Src: /src/frr/lib/nexthop_group.c:262,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - nhg1
    - nhg2
    argTypes:
    - struct nexthop_group*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 247
    functionDepth: 6
    functionLinenumber: 247
    functionLinenumberEnd: 267
    functionName: nexthop_group_equal
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 3
    functionsReached:
    - nexthop_same
    - nexthop_next
    - nexthop_group_equal_common
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_group_equal(const struct nexthop_group *nhg1,\n\t\t\t
      const struct nexthop_group *nhg2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/nexthop_group.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 271
    functionName: nexthop_group_new
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 4
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct nexthop_group
    signature: struct nexthop_group *nexthop_group_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_nexthops
      Src: /src/frr/lib/nexthop_group.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - to
    - from
    argTypes:
    - struct nexthop_group*
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 279
    functionName: nexthop_group_copy
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 5
    functionsReached:
    - copy_nexthops
    linkageType: ''
    returnType: void
    signature: "void nexthop_group_copy(struct nexthop_group *to,\n\t\t\tconst struct
      nexthop_group *from)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthops_free
      Src: /src/frr/lib/nexthop_group.c:288,1
    - Dst: XFREE
      Src: /src/frr/lib/nexthop_group.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 291
    functionName: nexthop_group_delete
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 5
    functionsReached:
    - nexthops_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nexthop_group_delete(struct nexthop_group **nhg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - target
    - nexthop
    argTypes:
    - struct nexthop**
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 305
    functionName: _nexthop_add
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _nexthop_add(struct nexthop **target, struct nexthop *nexthop)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/nexthop_group.c:313,1
    - Dst: nexthop_cmp
      Src: /src/frr/lib/nexthop_group.c:317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - head
    - nexthop
    argTypes:
    - struct nexthop**
    - struct nexthop*
    assertStmts:
    - condition: (!nexthop->next)
      pos:
        line_end: 312
        line_start: 312
        source_file: /src/frr/lib/nexthop_group.c
    constantsTouched: []
    func_position:
      end: 336
      start: 308
    functionDepth: 5
    functionLinenumber: 308
    functionLinenumberEnd: 336
    functionName: _nexthop_add_sorted
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - assert
    - nexthop_cmp
    linkageType: ''
    returnType: void
    signature: "void _nexthop_add_sorted(struct nexthop **head,\n\t\t\t\tstruct nexthop
      *nexthop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/nexthop_group.c:343,1
    - Dst: nexthop_group_tail
      Src: /src/frr/lib/nexthop_group.c:348,1
    - Dst: nexthop_cmp
      Src: /src/frr/lib/nexthop_group.c:350,1
    - Dst: _nexthop_add_sorted
      Src: /src/frr/lib/nexthop_group.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - nhg
    - nexthop
    argTypes:
    - struct nexthop_group*
    - struct nexthop*
    assertStmts:
    - condition: (!nexthop->next)
      pos:
        line_end: 342
        line_start: 342
        source_file: /src/frr/lib/nexthop_group.c
    constantsTouched: []
    func_position:
      end: 358
      start: 338
    functionDepth: 6
    functionLinenumber: 338
    functionLinenumberEnd: 358
    functionName: nexthop_group_add_sorted
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 6
    functionsReached:
    - nexthop_group_tail
    - _nexthop_add_sorted
    - assert
    - nexthop_cmp
    linkageType: ''
    returnType: void
    signature: "void nexthop_group_add_sorted(struct nexthop_group *nhg,\n\t\t\t      struct
      nexthop *nexthop)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/lib/nexthop_group.c:366,1
    - Dst: assert
      Src: /src/frr/lib/nexthop_group.c:370,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - nhg
    - nh
    argTypes:
    - struct nexthop_group*
    - struct nexthop*
    assertStmts:
    - condition: (nexthop)
      pos:
        line_end: 369
        line_start: 369
        source_file: /src/frr/lib/nexthop_group.c
    constantsTouched: []
    func_position:
      end: 382
      start: 361
    functionDepth: 6
    functionLinenumber: 361
    functionLinenumberEnd: 382
    functionName: _nexthop_del
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - nexthop_same
    - assert
    linkageType: ''
    returnType: void
    signature: void _nexthop_del(struct nexthop_group *nhg, struct nexthop *nh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/nexthop_group.c:391,1
    - Dst: assert
      Src: /src/frr/lib/nexthop_group.c:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - nhg
    - nexthop
    argTypes:
    - struct nexthop_group*
    - struct nexthop*
    assertStmts:
    - condition: (nhg->nexthop == nexthop)
      pos:
        line_end: 390
        line_start: 390
        source_file: /src/frr/lib/nexthop_group.c
    - condition: (nexthop->prev == NULL)
      pos:
        line_end: 391
        line_start: 391
        source_file: /src/frr/lib/nexthop_group.c
    constantsTouched: []
    func_position:
      end: 401
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 401
    functionName: nexthop_unlink
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void nexthop_unlink(struct nexthop_group *nhg, struct nexthop *nexthop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_tail
      Src: /src/frr/lib/nexthop_group.c:416,1
    - Dst: nexthop_dup
      Src: /src/frr/lib/nexthop_group.c:419,1
    - Dst: nexthop_cmp
      Src: /src/frr/lib/nexthop_group.c:421,1
    - Dst: _nexthop_add_sorted
      Src: /src/frr/lib/nexthop_group.c:429,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - nhg
    - nh
    argTypes:
    - struct nexthop_group*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 406
    functionDepth: 6
    functionLinenumber: 406
    functionLinenumberEnd: 434
    functionName: nexthop_group_copy_nh_sorted
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 1
    functionsReached:
    - nexthop_group_tail
    - nexthop_dup
    - _nexthop_add_sorted
    - nexthop_cmp
    linkageType: ''
    returnType: void
    signature: "void nexthop_group_copy_nh_sorted(struct nexthop_group *nhg,\n\t\t\t\t
      \ const struct nexthop *nh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_dup
      Src: /src/frr/lib/nexthop_group.c:444,1
    - Dst: _nexthop_add
      Src: /src/frr/lib/nexthop_group.c:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - tnh
    - nh
    - rparent
    argTypes:
    - struct nexthop**
    - struct nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 447
    functionName: copy_nexthops
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 17
    functionsReached:
    - nexthop_dup
    - _nexthop_add
    linkageType: ''
    returnType: void
    signature: "void copy_nexthops(struct nexthop **tnh, const struct nexthop *nh,\n\t\t
      \  struct nexthop *rparent)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/lib/nexthop_group.c:459,1
    - Dst: nexthop_hash
      Src: /src/frr/lib/nexthop_group.c:459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 462
    functionName: nexthop_group_hash_no_recurse
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - nexthop_hash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t nexthop_group_hash_no_recurse(const struct nexthop_group *nhg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/lib/nexthop_group.c:469,1
    - Dst: jhash_1word
      Src: /src/frr/lib/nexthop_group.c:470,1
    - Dst: nexthop_hash
      Src: /src/frr/lib/nexthop_group.c:470,1
    - Dst: nhgc_get
      Src: /src/frr/lib/nexthop_group.c:632,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/lib/nexthop_group.c:633,1
    - Dst: nhgc_find
      Src: /src/frr/lib/nexthop_group.c:646,1
    - Dst: if
      Src: /src/frr/lib/nexthop_group.c:647,1
    - Dst: nhgc_delete
      Src: /src/frr/lib/nexthop_group.c:648,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/lib/nexthop_group.c:658,1
    - Dst: strlcpy
      Src: /src/frr/lib/nexthop_group.c:660,1
    - Dst: DEFPY
      Src: /src/frr/lib/nexthop_group.c:665,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/lib/nexthop_group.c:671,1
    - Dst: DEFPY
      Src: /src/frr/lib/nexthop_group.c:678,1
    - Dst: modify
      Src: /src/frr/lib/nexthop_group.c:696,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - nhg
    argTypes:
    - struct nexthop_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 464
    functionDepth: 3
    functionLinenumber: 464
    functionLinenumberEnd: 699
    functionName: nexthop_group_hash
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 2
    functionsReached:
    - nhgc_find
    - VTY_DECLVAR_CONTEXT
    - nexthop_hash
    - strlcpy
    - modify
    - nhgc_delete
    - jhash_1word
    - VTY_PUSH_CONTEXT
    - if
    - nhgc_get
    - DEFPY
    - ALL_NEXTHOPS_PTR
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t nexthop_group_hash(const struct nexthop_group *nhg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/nexthop_group.c:731,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/nexthop_group.c:734,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/nexthop_group.c:736,1
    - Dst: sockunion_dup
      Src: /src/frr/lib/nexthop_group.c:738,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/nexthop_group.c:740,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/nexthop_group.c:747,1
    - Dst: listnode_add_sort
      Src: /src/frr/lib/nexthop_group.c:749,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 8
    argNames:
    - nhgc
    - nhvrf_name
    - addr
    - intf
    - onlink
    - labels
    - weight
    - backup_str
    argTypes:
    - struct nexthop_group_cmd*
    - char*
    - union sockunion*
    - char*
    - bool
    - char*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 722
    functionDepth: 1
    functionLinenumber: 722
    functionLinenumberEnd: 750
    functionName: nexthop_group_save_nhop
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - sockunion_dup
    - listnode_add_sort
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void nexthop_group_save_nhop(struct nexthop_group_cmd *nhgc,\n\t\t\t\t
      \   const char *nhvrf_name,\n\t\t\t\t    const union sockunion *addr,\n\t\t\t\t
      \   const char *intf, bool onlink,\n\t\t\t\t    const char *labels, const uint32_t
      weight,\n\t\t\t\t    const char *backup_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/nexthop_group.c:767,1
    - Dst: nhgc_cmp_helper
      Src: /src/frr/lib/nexthop_group.c:768,1
    - Dst: nhgc_addr_cmp_helper
      Src: /src/frr/lib/nexthop_group.c:769,1
    - Dst: nhgc_cmp_helper
      Src: /src/frr/lib/nexthop_group.c:770,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - nhgc
    - nhvrf_name
    - addr
    - intf
    argTypes:
    - struct nexthop_group_cmd*
    - char*
    - union sockunion*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 772
    functionName: nexthop_group_unsave_nhop
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - nhgc_cmp_helper
    - nhgc_addr_cmp_helper
    linkageType: ''
    returnType: void
    signature: "void nexthop_group_unsave_nhop(struct nexthop_group_cmd *nhgc,\n\t\t\t\t
      \     const char *nhvrf_name,\n\t\t\t\t      const union sockunion *addr,\n\t\t\t\t
      \     const char *intf)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/nexthop_group.c:802,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/nexthop_group.c:805,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/nexthop_group.c:807,1
    - Dst: ifname2ifindex
      Src: /src/frr/lib/nexthop_group.c:815,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/nexthop_group.c:821,1
    - Dst: mpls_str2label
      Src: /src/frr/lib/nexthop_group.c:843,1
    - Dst: nexthop_add_labels
      Src: /src/frr/lib/nexthop_group.c:852,1
    - Dst: vni2label
      Src: /src/frr/lib/nexthop_group.c:857,1
    - Dst: nexthop_add_labels
      Src: /src/frr/lib/nexthop_group.c:858,1
    - Dst: nexthop_str2backups
      Src: /src/frr/lib/nexthop_group.c:865,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/nexthop_group.c:868,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 10
    argNames:
    - nhop
    - addr
    - intf
    - onlink
    - name
    - labels
    - vni
    - lbl_ret
    - weight
    - backup_str
    argTypes:
    - struct nexthop*
    - union sockunion*
    - char*
    - bool
    - char*
    - char*
    - vni_t
    - int*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 790
    functionDepth: 2
    functionLinenumber: 790
    functionLinenumberEnd: 875
    functionName: nexthop_group_parse_nexthop
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - memset
    - vni2label
    - ifname2ifindex
    - nexthop_str2backups
    - vrf_lookup_by_name
    - SET_FLAG
    - vrf_lookup_by_id
    - nexthop_add_labels
    - mpls_str2label
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_group_parse_nexthop(struct nexthop *nhop,\n\t\t\t\t\tconst
      union sockunion *addr,\n\t\t\t\t\tconst char *intf, bool onlink,\n\t\t\t\t\tconst
      char *name, const char *labels,\n\t\t\t\t\tvni_t vni, int *lbl_ret,\n\t\t\t\t\tuint32_t
      weight, const char *backup_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_parse_nexthop
      Src: /src/frr/lib/nexthop_group.c:883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nhop
    - nhh
    argTypes:
    - struct nexthop*
    - struct nexthop_hold*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 880
    functionDepth: 3
    functionLinenumber: 880
    functionLinenumberEnd: 886
    functionName: nexthop_group_parse_nhh
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - nexthop_group_parse_nexthop
    linkageType: ''
    returnType: bool
    signature: "bool nexthop_group_parse_nhh(struct nexthop *nhop,\n\t\t\t\t    const
      struct nexthop_hold *nhh)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1026,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop_group.c:1031,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1035,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1038,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1041,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1044,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1047,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - vty
    - nh
    - altifname
    argTypes:
    - struct vty*
    - struct nexthop*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1020
    functionDepth: 2
    functionLinenumber: 1020
    functionLinenumberEnd: 1052
    functionName: nexthop_group_write_nexthop_simple
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - ifindex2ifname
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void nexthop_group_write_nexthop_simple(struct vty *vty,\n\t\t\t\t\tconst
      struct nexthop *nh,\n\t\t\t\t\tchar *altifname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_write_nexthop_simple
      Src: /src/frr/lib/nexthop_group.c:1059,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/nexthop_group.c:1062,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1063,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/lib/nexthop_group.c:1063,1
    - Dst: mpls_label2str
      Src: /src/frr/lib/nexthop_group.c:1069,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1071,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop_group.c:1077,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1078,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1081,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1084,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - vty
    - nh
    argTypes:
    - struct vty*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1054
    functionDepth: 3
    functionLinenumber: 1054
    functionLinenumberEnd: 1085
    functionName: nexthop_group_write_nexthop
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - vty_out
    - nexthop_group_write_nexthop_simple
    - CHECK_FLAG
    - mpls_label2str
    - VRF_LOGNAME
    - vrf_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void nexthop_group_write_nexthop(struct vty *vty, const struct nexthop
      *nh)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/lib/nexthop_group.c:1095,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop_group.c:1096,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/nexthop_group.c:1099,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/nexthop_group.c:1102,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/nexthop_group.c:1103,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop_group.c:1104,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/nexthop_group.c:1107,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/nexthop_group.c:1110,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/nexthop_group.c:1111,1
    - Dst: ifindex2ifname
      Src: /src/frr/lib/nexthop_group.c:1112,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/nexthop_group.c:1119,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/nexthop_group.c:1120,1
    - Dst: mpls_label2str
      Src: /src/frr/lib/nexthop_group.c:1126,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/nexthop_group.c:1128,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/nexthop_group.c:1132,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/nexthop_group.c:1134,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/nexthop_group.c:1135,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/nexthop_group.c:1137,1
    - Dst: json_object_new_int
      Src: /src/frr/lib/nexthop_group.c:1139,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/nexthop_group.c:1141,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - j
    - nh
    argTypes:
    - json_object*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1087
    functionDepth: 2
    functionLinenumber: 1087
    functionLinenumberEnd: 1143
    functionName: nexthop_group_json_nexthop
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_int
    - ifindex2ifname
    - json_object_array_add
    - CHECK_FLAG
    - mpls_label2str
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - vrf_lookup_by_id
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: void nexthop_group_json_nexthop(json_object *j, const struct nexthop
      *nh)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1148,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1151,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1154,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1157,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1160,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1163,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1166,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1169,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1172,1
    - Dst: vty_out
      Src: /src/frr/lib/nexthop_group.c:1174,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - vty
    - nh
    argTypes:
    - struct vty*
    - struct nexthop_hold*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1145
    functionDepth: 2
    functionLinenumber: 1145
    functionLinenumberEnd: 1175
    functionName: nexthop_group_write_nexthop_internal
    functionSourceFile: /src/frr/lib/nexthop_group.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void nexthop_group_write_nexthop_internal(struct vty *vty,\n\t\t\t\t\t\t
      const struct nexthop_hold *nh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - dbgtag
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 24
    functionName: MGMT_MSG_DBG
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_MSG_DBG(dbgtag, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ms
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: MGMT_MSG_ERR
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_MSG_ERR(ms, fmt, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/mgmt_msg.c:49,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:55,1
    - Dst: stream_read_try
      Src: /src/frr/lib/mgmt_msg.c:61,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:65,1
    - Dst: MGMT_MSG_ERR
      Src: /src/frr/lib/mgmt_msg.c:70,1
    - Dst: MGMT_MSG_ERR
      Src: /src/frr/lib/mgmt_msg.c:72,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:74,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:77,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:85,1
    - Dst: stream_get_getp
      Src: /src/frr/lib/mgmt_msg.c:85,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/mgmt_msg.c:86,1
    - Dst: STREAM_DATA
      Src: /src/frr/lib/mgmt_msg.c:88,1
    - Dst: MGMT_MSG_IS_MARKER
      Src: /src/frr/lib/mgmt_msg.c:89,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:90,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:96,1
    - Dst: STREAM_DATA
      Src: /src/frr/lib/mgmt_msg.c:108,1
    - Dst: stream_set_endp
      Src: /src/frr/lib/mgmt_msg.c:109,1
    - Dst: stream_fifo_push
      Src: /src/frr/lib/mgmt_msg.c:110,1
    - Dst: stream_new
      Src: /src/frr/lib/mgmt_msg.c:111,1
    - Dst: stream_put
      Src: /src/frr/lib/mgmt_msg.c:113,1
    - Dst: stream_set_endp
      Src: /src/frr/lib/mgmt_msg.c:114,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 3
    argNames:
    - ms
    - fd
    - debug
    argTypes:
    - struct mgmt_msg_state*
    - int
    - bool
    assertStmts:
    - condition: (ms && fd != -1)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/frr/lib/mgmt_msg.c
    - condition: (stream_get_getp(ms->ins) == 0)
      pos:
        line_end: 84
        line_start: 84
        source_file: /src/frr/lib/mgmt_msg.c
    constantsTouched: []
    func_position:
      end: 118
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 118
    functionName: mgmt_msg_read
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - stream_read_try
    - MGMT_MSG_DBG
    - stream_fifo_push
    - stream_new
    - stream_put
    - STREAM_DATA
    - STREAM_WRITEABLE
    - MGMT_MSG_IS_MARKER
    - stream_get_endp
    - safe_strerror
    - stream_set_endp
    - MGMT_MSG_ERR
    - stream_get_getp
    - assert
    linkageType: ''
    returnType: enum mgmt_msg_rsched
    signature: "enum mgmt_msg_rsched mgmt_msg_read(struct mgmt_msg_state *ms, int
      fd,\n\t\t\t\t   bool debug)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:145,1
    - Dst: stream_fifo_pop
      Src: /src/frr/lib/mgmt_msg.c:149,1
    - Dst: STREAM_DATA
      Src: /src/frr/lib/mgmt_msg.c:153,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/mgmt_msg.c:154,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:155,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:161,1
    - Dst: MGMT_MSG_IS_MARKER
      Src: /src/frr/lib/mgmt_msg.c:161,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:162,1
    - Dst: handle_msg
      Src: /src/frr/lib/mgmt_msg.c:164,1
    - Dst: MGMT_MSG_MARKER_VERSION
      Src: /src/frr/lib/mgmt_msg.c:164,1
    - Dst: stream_free
      Src: /src/frr/lib/mgmt_msg.c:173,1
    - Dst: stream_reset
      Src: /src/frr/lib/mgmt_msg.c:175,1
    - Dst: stream_fifo_head
      Src: /src/frr/lib/mgmt_msg.c:179,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - ms
    - user
    - debug
    argTypes:
    - struct mgmt_msg_state*
    - void*
    - bool
    assertStmts:
    - condition: (MGMT_MSG_IS_MARKER(mhdr->marker))
      pos:
        line_end: 160
        line_start: 160
        source_file: /src/frr/lib/mgmt_msg.c
    - condition: (left >= mhdr->len)
      pos:
        line_end: 161
        line_start: 161
        source_file: /src/frr/lib/mgmt_msg.c
    constantsTouched: []
    func_position:
      end: 180
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 180
    functionName: mgmt_msg_procbufs
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - MGMT_MSG_MARKER_VERSION
    - MGMT_MSG_DBG
    - handle_msg
    - stream_free
    - STREAM_DATA
    - MGMT_MSG_IS_MARKER
    - stream_get_endp
    - stream_fifo_head
    - stream_fifo_pop
    - stream_reset
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool mgmt_msg_procbufs(struct mgmt_msg_state *ms,\n\t\t       void
      (*handle_msg)(uint8_t version, uint8_t *msg,\n\t\t\t\t\t  size_t msglen, void
      *user),\n\t\t       void *user, bool debug)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:209,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/mgmt_msg.c:211,1
    - Dst: stream_fifo_push
      Src: /src/frr/lib/mgmt_msg.c:212,1
    - Dst: stream_fifo_head
      Src: /src/frr/lib/mgmt_msg.c:216,1
    - Dst: stream_fifo_head
      Src: /src/frr/lib/mgmt_msg.c:217,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/mgmt_msg.c:218,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:219,1
    - Dst: stream_flush
      Src: /src/frr/lib/mgmt_msg.c:221,1
    - Dst: MGMT_MSG_ERR
      Src: /src/frr/lib/mgmt_msg.c:224,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/mgmt_msg.c:226,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:227,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:230,1
    - Dst: MGMT_MSG_ERR
      Src: /src/frr/lib/mgmt_msg.c:233,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:236,1
    - Dst: mgmt_msg_reset_writes
      Src: /src/frr/lib/mgmt_msg.c:238,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:239,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:246,1
    - Dst: stream_forward_getp
      Src: /src/frr/lib/mgmt_msg.c:248,1
    - Dst: stream_free
      Src: /src/frr/lib/mgmt_msg.c:252,1
    - Dst: stream_fifo_pop
      Src: /src/frr/lib/mgmt_msg.c:252,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:253,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:257,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:263,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 3
    argNames:
    - ms
    - fd
    - debug
    argTypes:
    - struct mgmt_msg_state*
    - int
    - bool
    assertStmts:
    - condition: (left)
      pos:
        line_end: 218
        line_start: 218
        source_file: /src/frr/lib/mgmt_msg.c
    constantsTouched: []
    func_position:
      end: 265
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 265
    functionName: mgmt_msg_write
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - MGMT_MSG_DBG
    - stream_free
    - stream_fifo_push
    - STREAM_READABLE
    - stream_forward_getp
    - mgmt_msg_reset_writes
    - stream_get_endp
    - stream_flush
    - stream_fifo_head
    - ERRNO_IO_RETRY
    - safe_strerror
    - stream_fifo_pop
    - MGMT_MSG_ERR
    - assert
    linkageType: ''
    returnType: enum mgmt_msg_wsched
    signature: "enum mgmt_msg_wsched mgmt_msg_write(struct mgmt_msg_state *ms, int
      fd,\n\t\t\t\t    bool debug)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MGMT_MSG_ERR
      Src: /src/frr/lib/mgmt_msg.c:296,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:302,1
    - Dst: stream_new
      Src: /src/frr/lib/mgmt_msg.c:304,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/mgmt_msg.c:305,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:306,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/mgmt_msg.c:309,1
    - Dst: stream_fifo_push
      Src: /src/frr/lib/mgmt_msg.c:310,1
    - Dst: stream_new
      Src: /src/frr/lib/mgmt_msg.c:311,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:313,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/mgmt_msg.c:316,1
    - Dst: STREAM_DATA
      Src: /src/frr/lib/mgmt_msg.c:321,1
    - Dst: MGMT_MSG_MARKER
      Src: /src/frr/lib/mgmt_msg.c:322,1
    - Dst: stream_forward_endp
      Src: /src/frr/lib/mgmt_msg.c:324,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/mgmt_msg.c:325,1
    - Dst: STREAM_DATA
      Src: /src/frr/lib/mgmt_msg.c:326,1
    - Dst: packf
      Src: /src/frr/lib/mgmt_msg.c:328,1
    - Dst: memcpy
      Src: /src/frr/lib/mgmt_msg.c:330,1
    - Dst: stream_set_endp
      Src: /src/frr/lib/mgmt_msg.c:333,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 5
    argNames:
    - ms
    - version
    - msg
    - len
    - debug
    argTypes:
    - struct mgmt_msg_state*
    - uint8_t
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 337
    functionName: mgmt_msg_send_msg
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - MGMT_MSG_DBG
    - stream_fifo_push
    - stream_new
    - memcpy
    - MGMT_MSG_MARKER
    - stream_forward_endp
    - STREAM_DATA
    - STREAM_WRITEABLE
    - stream_get_endp
    - stream_set_endp
    - MGMT_MSG_ERR
    - packf
    linkageType: ''
    returnType: int
    signature: "int mgmt_msg_send_msg(struct mgmt_msg_state *ms, uint8_t version,
      void *msg,\n\t\t      size_t len, size_t (*packf)(void *msg, void *buf),\n\t\t
      \     bool debug)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:358,1
    - Dst: socket
      Src: /src/frr/lib/mgmt_msg.c:359,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:361,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:361,1
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:365,1
    - Dst: strlcpy
      Src: /src/frr/lib/mgmt_msg.c:367,1
    - Dst: SUN_LEN
      Src: /src/frr/lib/mgmt_msg.c:369,1
    - Dst: strlen
      Src: /src/frr/lib/mgmt_msg.c:371,1
    - Dst: connect
      Src: /src/frr/lib/mgmt_msg.c:373,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:375,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:376,1
    - Dst: close
      Src: /src/frr/lib/mgmt_msg.c:377,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:381,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/mgmt_msg.c:382,1
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/lib/mgmt_msg.c:383,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/lib/mgmt_msg.c:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - path
    - sendbuf
    - recvbuf
    - dbgtag
    argTypes:
    - char*
    - size_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 386
    functionName: mgmt_msg_connect
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - MGMT_MSG_DBG
    - strlen
    - memset
    - connect
    - setsockopt_so_sendbuf
    - socket
    - strlcpy
    - close
    - SUN_LEN
    - safe_strerror
    - setsockopt_so_recvbuf
    - set_nonblocking
    linkageType: ''
    returnType: int
    signature: "int mgmt_msg_connect(const char *path, size_t sendbuf, size_t recvbuf,\n\t\t
      \    const char *dbgtag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_pop
      Src: /src/frr/lib/mgmt_msg.c:404,1
    - Dst: stream_fifo_pop
      Src: /src/frr/lib/mgmt_msg.c:405,1
    - Dst: stream_free
      Src: /src/frr/lib/mgmt_msg.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ms
    argTypes:
    - struct mgmt_msg_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 409
    functionName: mgmt_msg_reset_writes
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 1
    functionsReached:
    - stream_free
    - stream_fifo_pop
    linkageType: ''
    returnType: size_t
    signature: size_t mgmt_msg_reset_writes(struct mgmt_msg_state *ms)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:415,1
    - Dst: stream_new
      Src: /src/frr/lib/mgmt_msg.c:416,1
    - Dst: stream_fifo_init
      Src: /src/frr/lib/mgmt_msg.c:417,1
    - Dst: stream_fifo_init
      Src: /src/frr/lib/mgmt_msg.c:418,1
    - Dst: strdup
      Src: /src/frr/lib/mgmt_msg.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - ms
    - max_read_buf
    - max_write_buf
    - max_msg_sz
    - idtag
    argTypes:
    - struct mgmt_msg_state*
    - size_t
    - size_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 423
    functionName: mgmt_msg_init
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - strdup
    - stream_new
    - stream_fifo_init
    - memset
    linkageType: ''
    returnType: void
    signature: "void mgmt_msg_init(struct mgmt_msg_state *ms, size_t max_read_buf,\n\t\t
      \  size_t max_write_buf, size_t max_msg_sz, const char *idtag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_msg_reset_writes
      Src: /src/frr/lib/mgmt_msg.c:427,1
    - Dst: stream_free
      Src: /src/frr/lib/mgmt_msg.c:429,1
    - Dst: free
      Src: /src/frr/lib/mgmt_msg.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ms
    argTypes:
    - struct mgmt_msg_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 425
    functionDepth: 2
    functionLinenumber: 425
    functionLinenumberEnd: 431
    functionName: mgmt_msg_destroy
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - mgmt_msg_reset_writes
    - stream_free
    - free
    linkageType: ''
    returnType: void
    signature: void mgmt_msg_destroy(struct mgmt_msg_state *ms)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/mgmt_msg.c:450,1
    - Dst: mgmt_msg_write
      Src: /src/frr/lib/mgmt_msg.c:453,1
    - Dst: msg_conn_sched_write
      Src: /src/frr/lib/mgmt_msg.c:455,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/lib/mgmt_msg.c:457,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:459,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (rv == MSW_SCHED_NONE)
      pos:
        line_end: 458
        line_start: 458
        source_file: /src/frr/lib/mgmt_msg.c
    constantsTouched: []
    func_position:
      end: 460
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 460
    functionName: msg_conn_write
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - msg_conn_sched_write
    - msg_conn_disconnect
    - EVENT_ARG
    - mgmt_msg_write
    - assert
    linkageType: ''
    returnType: void
    signature: void msg_conn_write(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/mgmt_msg.c:464,1
    - Dst: mgmt_msg_read
      Src: /src/frr/lib/mgmt_msg.c:467,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/lib/mgmt_msg.c:469,1
    - Dst: msg_conn_sched_proc_msgs
      Src: /src/frr/lib/mgmt_msg.c:473,1
    - Dst: msg_conn_sched_read
      Src: /src/frr/lib/mgmt_msg.c:474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 475
    functionName: msg_conn_read
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - mgmt_msg_read
    - msg_conn_sched_read
    - msg_conn_disconnect
    - msg_conn_sched_proc_msgs
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void msg_conn_read(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/mgmt_msg.c:480,1
    - Dst: mgmt_msg_procbufs
      Src: /src/frr/lib/mgmt_msg.c:482,1
    - Dst: msg_conn_sched_proc_msgs
      Src: /src/frr/lib/mgmt_msg.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 478
    functionDepth: 2
    functionLinenumber: 478
    functionLinenumberEnd: 488
    functionName: msg_conn_proc_msgs
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - msg_conn_sched_proc_msgs
    - mgmt_msg_procbufs
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void msg_conn_proc_msgs(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/lib/mgmt_msg.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 494
    functionName: msg_conn_sched_read
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 1
    functionsReached:
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void msg_conn_sched_read(struct msg_conn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_write
      Src: /src/frr/lib/mgmt_msg.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 500
    functionName: msg_conn_sched_write
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 1
    functionsReached:
    - event_add_write
    linkageType: ''
    returnType: void
    signature: void msg_conn_sched_write(struct msg_conn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/lib/mgmt_msg.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 506
    functionName: msg_conn_sched_proc_msgs
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 2
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void msg_conn_sched_proc_msgs(struct msg_conn *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/lib/mgmt_msg.c:519,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:528,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - conn
    - reconnect
    argTypes:
    - struct msg_conn*
    - bool
    assertStmts:
    - condition: (conn->is_client)
      pos:
        line_end: 527
        line_start: 527
        source_file: /src/frr/lib/mgmt_msg.c
    constantsTouched: []
    func_position:
      end: 533
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 533
    functionName: msg_conn_disconnect
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 11
    functionsReached:
    - assert
    - close
    linkageType: ''
    returnType: void
    signature: void msg_conn_disconnect(struct msg_conn *conn, bool reconnect)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MGMT_MSG_ERR
      Src: /src/frr/lib/mgmt_msg.c:542,1
    - Dst: XMALLOC
      Src: /src/frr/lib/mgmt_msg.c:554,1
    - Dst: packf
      Src: /src/frr/lib/mgmt_msg.c:555,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:559,1
    - Dst: struct msg_conn*::remote_conn::handle_msg
      Src: /src/frr/lib/mgmt_msg.c:564,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:569,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_msg.c:573,1
    - Dst: mgmt_msg_send_msg
      Src: /src/frr/lib/mgmt_msg.c:577,1
    - Dst: msg_conn_sched_write
      Src: /src/frr/lib/mgmt_msg.c:580,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 5
    argNames:
    - conn
    - version
    - msg
    - mlen
    - short_circuit_ok
    argTypes:
    - struct msg_conn*
    - uint8_t
    - void*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 535
    functionDepth: 2
    functionLinenumber: 535
    functionLinenumberEnd: 583
    functionName: msg_conn_send_msg
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 3
    functionsReached:
    - MGMT_MSG_DBG
    - struct msg_conn*::remote_conn::handle_msg
    - XMALLOC
    - msg_conn_sched_write
    - mgmt_msg_send_msg
    - XFREE
    - MGMT_MSG_ERR
    - packf
    linkageType: ''
    returnType: int
    signature: "int msg_conn_send_msg(struct msg_conn *conn, uint8_t version, void
      *msg,\n\t\t      size_t mlen, size_t (*packf)(void *, void *),\n\t\t      bool
      short_circuit_ok)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/lib/mgmt_msg.c:596,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/mgmt_msg.c:600,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/mgmt_msg.c:601,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/mgmt_msg.c:602,1
    - Dst: mgmt_msg_destroy
      Src: /src/frr/lib/mgmt_msg.c:604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 585
    functionDepth: 3
    functionLinenumber: 585
    functionLinenumberEnd: 605
    functionName: msg_conn_cleanup
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - mgmt_msg_destroy
    - EVENT_OFF
    - close
    linkageType: ''
    returnType: void
    signature: void msg_conn_cleanup(struct msg_conn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_client_connect
      Src: /src/frr/lib/mgmt_msg.c:619,1
    - Dst: EVENT_ARG
      Src: /src/frr/lib/mgmt_msg.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 620
    functionName: msg_client_connect_timer
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - EVENT_ARG
    - msg_client_connect
    linkageType: ''
    returnType: void
    signature: void msg_client_connect_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:628,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/mgmt_msg.c:630,1
    - Dst: event_add_event
      Src: /src/frr/lib/mgmt_msg.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - client
    - msec
    argTypes:
    - struct msg_client*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 635
    functionName: msg_client_sched_connect
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - MGMT_MSG_DBG
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void msg_client_sched_connect(struct msg_client *client,\n\t\t\t\t
      \    unsigned long msec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/mgmt_msg.c:646,1
    - Dst: strcmp
      Src: /src/frr/lib/mgmt_msg.c:647,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:650,1
    - Dst: socketpair
      Src: /src/frr/lib/mgmt_msg.c:657,1
    - Dst: MGMT_MSG_ERR
      Src: /src/frr/lib/mgmt_msg.c:658,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:661,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/mgmt_msg.c:667,1
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/lib/mgmt_msg.c:668,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/lib/mgmt_msg.c:669,1
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:672,1
    - Dst: struct msg_server*::create
      Src: /src/frr/lib/mgmt_msg.c:673,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:678,1
    - Dst: MGMT_MSG_DBG
      Src: /src/frr/lib/mgmt_msg.c:684,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct msg_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 637
    functionDepth: 2
    functionLinenumber: 637
    functionLinenumberEnd: 691
    functionName: msg_client_connect_short_circuit
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - MGMT_MSG_DBG
    - memset
    - frr_each
    - setsockopt_so_sendbuf
    - struct msg_server*::create
    - strcmp
    - socketpair
    - safe_strerror
    - setsockopt_so_recvbuf
    - set_nonblocking
    - MGMT_MSG_ERR
    linkageType: ''
    returnType: bool
    signature: bool msg_client_connect_short_circuit(struct msg_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: msg_client_connect_short_circuit
      Src: /src/frr/lib/mgmt_msg.c:701,1
    - Dst: mgmt_msg_connect
      Src: /src/frr/lib/mgmt_msg.c:703,1
    - Dst: msg_client_sched_connect
      Src: /src/frr/lib/mgmt_msg.c:708,1
    - Dst: struct msg_client*::notify_connect
      Src: /src/frr/lib/mgmt_msg.c:710,1
    - Dst: msg_conn_disconnect
      Src: /src/frr/lib/mgmt_msg.c:712,1
    - Dst: msg_conn_sched_read
      Src: /src/frr/lib/mgmt_msg.c:715,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct msg_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 695
    functionDepth: 3
    functionLinenumber: 695
    functionLinenumberEnd: 716
    functionName: msg_client_connect
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 1
    functionsReached:
    - mgmt_msg_connect
    - msg_client_connect_short_circuit
    - msg_conn_sched_read
    - msg_conn_disconnect
    - struct msg_client*::notify_connect
    - msg_client_sched_connect
    linkageType: ''
    returnType: void
    signature: void msg_client_connect(struct msg_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:729,1
    - Dst: strdup
      Src: /src/frr/lib/mgmt_msg.c:738,1
    - Dst: mgmt_msg_init
      Src: /src/frr/lib/mgmt_msg.c:741,1
    - Dst: msg_client_sched_connect
      Src: /src/frr/lib/mgmt_msg.c:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 9
    argNames:
    - client
    - tm
    - sopath
    - max_read_buf
    - max_write_buf
    - max_msg_sz
    - short_circuit_ok
    - idtag
    - debug
    argTypes:
    - struct msg_client*
    - struct event_loop*
    - char*
    - size_t
    - size_t
    - size_t
    - bool
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 747
    functionName: msg_client_init
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 1
    functionsReached:
    - strdup
    - msg_client_sched_connect
    - mgmt_msg_init
    - memset
    linkageType: ''
    returnType: void
    signature: "void msg_client_init(struct msg_client *client, struct event_loop
      *tm,\n\t\t     const char *sopath,\n\t\t     int (*notify_connect)(struct msg_client
      *client),\n\t\t     int (*notify_disconnect)(struct msg_conn *client),\n\t\t
      \    void (*handle_msg)(uint8_t version, uint8_t *data,\n\t\t\t\t\tsize_t len,
      struct msg_conn *client),\n\t\t     size_t max_read_buf, size_t max_write_buf,\n\t\t
      \    size_t max_msg_sz, bool short_circuit_ok,\n\t\t     const char *idtag,
      bool debug)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/mgmt_msg.c:751,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/mgmt_msg.c:753,1
    - Dst: free
      Src: /src/frr/lib/mgmt_msg.c:754,1
    - Dst: msg_conn_cleanup
      Src: /src/frr/lib/mgmt_msg.c:756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct msg_client*
    assertStmts:
    - condition: (client->conn.is_client)
      pos:
        line_end: 750
        line_start: 750
        source_file: /src/frr/lib/mgmt_msg.c
    constantsTouched: []
    func_position:
      end: 757
      start: 749
    functionDepth: 4
    functionLinenumber: 749
    functionLinenumberEnd: 757
    functionName: msg_client_cleanup
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 1
    functionsReached:
    - msg_conn_cleanup
    - EVENT_OFF
    - free
    - assert
    linkageType: ''
    returnType: void
    signature: void msg_client_cleanup(struct msg_client *client)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/mgmt_msg.c:766,1
    - Dst: event_add_read
      Src: /src/frr/lib/mgmt_msg.c:774,1
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:777,1
    - Dst: sockunion_accept
      Src: /src/frr/lib/mgmt_msg.c:780,1
    - Dst: zlog_err
      Src: /src/frr/lib/mgmt_msg.c:782,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:783,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/mgmt_msg.c:786,1
    - Dst: set_cloexec
      Src: /src/frr/lib/mgmt_msg.c:787,1
    - Dst: DEBUGD
      Src: /src/frr/lib/mgmt_msg.c:789,1
    - Dst: struct msg_server*::create
      Src: /src/frr/lib/mgmt_msg.c:791,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 792
    functionName: msg_server_accept
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - memset
    - set_cloexec
    - DEBUGD
    - struct msg_server*::create
    - zlog_err
    - safe_strerror
    - set_nonblocking
    - EVENT_ARG
    - event_add_read
    - sockunion_accept
    linkageType: ''
    returnType: void
    signature: void msg_server_accept(struct event *event)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:804,1
    - Dst: socket
      Src: /src/frr/lib/mgmt_msg.c:807,1
    - Dst: zlog_err
      Src: /src/frr/lib/mgmt_msg.c:809,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:810,1
    - Dst: strlcpy
      Src: /src/frr/lib/mgmt_msg.c:815,1
    - Dst: unlink
      Src: /src/frr/lib/mgmt_msg.c:816,1
    - Dst: umask
      Src: /src/frr/lib/mgmt_msg.c:817,1
    - Dst: bind
      Src: /src/frr/lib/mgmt_msg.c:818,1
    - Dst: zlog_err
      Src: /src/frr/lib/mgmt_msg.c:820,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:821,1
    - Dst: umask
      Src: /src/frr/lib/mgmt_msg.c:822,1
    - Dst: umask
      Src: /src/frr/lib/mgmt_msg.c:825,1
    - Dst: listen
      Src: /src/frr/lib/mgmt_msg.c:827,1
    - Dst: zlog_err
      Src: /src/frr/lib/mgmt_msg.c:829,1
    - Dst: safe_strerror
      Src: /src/frr/lib/mgmt_msg.c:830,1
    - Dst: strdup
      Src: /src/frr/lib/mgmt_msg.c:836,1
    - Dst: strdup
      Src: /src/frr/lib/mgmt_msg.c:837,1
    - Dst: msg_server_list_add_head
      Src: /src/frr/lib/mgmt_msg.c:841,1
    - Dst: event_add_read
      Src: /src/frr/lib/mgmt_msg.c:843,1
    - Dst: DEBUGD
      Src: /src/frr/lib/mgmt_msg.c:847,1
    - Dst: close
      Src: /src/frr/lib/mgmt_msg.c:852,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 6
    argNames:
    - server
    - sopath
    - loop
    - (*create)(int fd, union sockunion *su)
    - idtag
    - debug
    argTypes:
    - struct msg_server*
    - char*
    - struct event_loop*
    - struct msg_conn*
    - char*
    - struct debug*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 855
    functionName: msg_server_init
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 2
    functionsReached:
    - unlink
    - memset
    - DEBUGD
    - socket
    - strlcpy
    - zlog_err
    - close
    - strdup
    - msg_server_list_add_head
    - safe_strerror
    - bind
    - listen
    - event_add_read
    - umask
    linkageType: ''
    returnType: int
    signature: "int msg_server_init(struct msg_server *server, const char *sopath,\n\t\t
      \   struct event_loop *loop,\n\t\t    struct msg_conn *(*create)(int fd, union
      sockunion *su),\n\t\t    const char *idtag, struct debug *debug)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/lib/mgmt_msg.c:859,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/mgmt_msg.c:862,1
    - Dst: msg_server_list_del
      Src: /src/frr/lib/mgmt_msg.c:864,1
    - Dst: close
      Src: /src/frr/lib/mgmt_msg.c:867,1
    - Dst: free
      Src: /src/frr/lib/mgmt_msg.c:868,1
    - Dst: free
      Src: /src/frr/lib/mgmt_msg.c:869,1
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:871,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct msg_server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 873
    functionName: msg_server_cleanup
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 2
    functionsReached:
    - memset
    - DEBUGD
    - msg_server_list_del
    - free
    - close
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void msg_server_cleanup(struct msg_server *server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_msg_init
      Src: /src/frr/lib/mgmt_msg.c:893,1
    - Dst: msg_conn_sched_read
      Src: /src/frr/lib/mgmt_msg.c:896,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/mgmt_msg.c:899,1
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/lib/mgmt_msg.c:900,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/lib/mgmt_msg.c:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 7
    argNames:
    - conn
    - tm
    - fd
    - max_read
    - max_write
    - max_size
    - idtag
    argTypes:
    - struct msg_conn*
    - struct event_loop*
    - int
    - size_t
    - size_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 880
    functionDepth: 2
    functionLinenumber: 880
    functionLinenumberEnd: 902
    functionName: msg_conn_accept_init
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 0
    functionsReached:
    - setsockopt_so_sendbuf
    - msg_conn_sched_read
    - mgmt_msg_init
    - setsockopt_so_recvbuf
    - set_nonblocking
    linkageType: ''
    returnType: void
    signature: "void msg_conn_accept_init(struct msg_conn *conn, struct event_loop
      *tm, int fd,\n\t\t\t  int (*notify_disconnect)(struct msg_conn *conn),\n\t\t\t
      \ void (*handle_msg)(uint8_t version, uint8_t *data,\n\t\t\t\t\t     size_t
      len, struct msg_conn *conn),\n\t\t\t  size_t max_read, size_t max_write, size_t
      max_size,\n\t\t\t  const char *idtag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/mgmt_msg.c:912,1
    - Dst: memset
      Src: /src/frr/lib/mgmt_msg.c:913,1
    - Dst: msg_conn_accept_init
      Src: /src/frr/lib/mgmt_msg.c:914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - tm
    - fd
    - max_read
    - max_write
    - max_size
    - user
    - idtag
    argTypes:
    - struct event_loop*
    - int
    - size_t
    - size_t
    - size_t
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 904
    functionDepth: 3
    functionLinenumber: 904
    functionLinenumberEnd: 918
    functionName: msg_server_conn_create
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 2
    functionsReached:
    - msg_conn_accept_init
    - XMALLOC
    - memset
    linkageType: ''
    returnType: struct msg_conn
    signature: "struct msg_conn *\nmsg_server_conn_create(struct event_loop *tm, int
      fd,\n\t\t       int (*notify_disconnect)(struct msg_conn *conn),\n\t\t       void
      (*handle_msg)(uint8_t version, uint8_t *data,\n\t\t\t\t\t  size_t len, struct
      msg_conn *conn),\n\t\t       size_t max_read, size_t max_write, size_t max_size,\n\t\t
      \      void *user, const char *idtag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: msg_conn_cleanup
      Src: /src/frr/lib/mgmt_msg.c:924,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_msg.c:925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 920
    functionDepth: 4
    functionLinenumber: 920
    functionLinenumberEnd: 926
    functionName: msg_server_conn_delete
    functionSourceFile: /src/frr/lib/mgmt_msg.c
    functionUses: 2
    functionsReached:
    - msg_conn_cleanup
    - XFREE
    linkageType: ''
    returnType: void
    signature: void msg_server_conn_delete(struct msg_conn *conn)
  - 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: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: prefix_list_apply
    functionSourceFile: /src/frr/lib/plist.h
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: prefix_list_apply(A, B)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/cspf.h:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct c_path*
    - struct c_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: q_cmp
    functionSourceFile: /src/frr/lib/cspf.h
    functionUses: 0
    functionsReached:
    - numcmp
    linkageType: ''
    returnType: macro_inline
    signature: macro_inline q_cmp(const struct c_path *p1, const struct c_path *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/cspf.h:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct c_path*
    - struct c_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: p_cmp
    functionSourceFile: /src/frr/lib/cspf.h
    functionUses: 13
    functionsReached:
    - numcmp
    linkageType: ''
    returnType: macro_inline
    signature: macro_inline p_cmp(const struct c_path *p1, const struct c_path *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/cspf.h:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct v_node*
    - struct v_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: v_cmp
    functionSourceFile: /src/frr/lib/cspf.h
    functionUses: 0
    functionsReached:
    - numcmp
    linkageType: ''
    returnType: macro_inline
    signature: macro_inline v_cmp(const struct v_node *p1, const struct v_node *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: TRASHIT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRASHIT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - link
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: QMD_SAVELINK
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_SAVELINK(name, link)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 104
    functionName: QMD_TRACE_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_TRACE_HEAD(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - elem
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: QMD_TRACE_ELEM
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_TRACE_ELEM(elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: SLIST_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: SLIST_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 143
    functionName: SLIST_EMPTY
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: SLIST_FIRST
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: SLIST_FOREACH
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: SLIST_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - varp
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: SLIST_FOREACH_PREVPTR
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_FOREACH_PREVPTR(var, varp, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: SLIST_INIT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - slistelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 168
    functionName: SLIST_INSERT_AFTER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_INSERT_AFTER(slistelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 174
    functionName: SLIST_INSERT_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: SLIST_NEXT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 190
    functionName: SLIST_REMOVE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_REMOVE(head, elm, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: SLIST_REMOVE_AFTER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_REMOVE_AFTER(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: SLIST_REMOVE_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_REMOVE_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head1
    - ','
    - head2
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 208
    functionName: SLIST_SWAP
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLIST_SWAP(head1, head2, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 214
    functionName: STAILQ_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: STAILQ_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head1
    - ','
    - head2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 239
    functionName: STAILQ_CONCAT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_CONCAT(head1, head2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 241
    functionName: STAILQ_EMPTY
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 243
    functionName: STAILQ_FIRST
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: STAILQ_FOREACH
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 252
    functionName: STAILQ_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 258
    functionName: STAILQ_INIT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - tqelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: STAILQ_INSERT_AFTER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INSERT_AFTER(head, tqelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: STAILQ_INSERT_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 281
    functionName: STAILQ_INSERT_TAIL
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INSERT_TAIL(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: STAILQ_LAST
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_LAST(head, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 289
    functionName: STAILQ_NEXT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 303
    functionName: STAILQ_REMOVE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_REMOVE(head, elm, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 311
    functionName: STAILQ_REMOVE_AFTER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_REMOVE_AFTER(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 319
    functionName: STAILQ_REMOVE_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_REMOVE_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head1
    - ','
    - head2
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 333
    functionName: STAILQ_SWAP
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_SWAP(head1, head2, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 347
    functionName: LIST_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 350
    functionName: LIST_ENTRY
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_ENTRY(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 366
    functionName: QMD_LIST_CHECK_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_LIST_CHECK_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 374
    functionName: QMD_LIST_CHECK_NEXT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_LIST_CHECK_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 380
    functionName: QMD_LIST_CHECK_PREV
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_LIST_CHECK_PREV(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 387
    functionName: LIST_EMPTY
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 389
    functionName: LIST_FIRST
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 392
    functionName: LIST_FOREACH
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 396
    functionName: LIST_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 401
    functionName: LIST_INIT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 412
    functionName: LIST_INSERT_AFTER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INSERT_AFTER(listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 421
    functionName: LIST_INSERT_BEFORE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INSERT_BEFORE(listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 431
    functionName: LIST_INSERT_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 433
    functionName: LIST_NEXT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 447
    functionName: LIST_REMOVE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_REMOVE(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head1
    - ','
    - head2
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 458
    functionName: LIST_SWAP
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIST_SWAP(head1, head2, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 464
    functionName: TAILQ_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 473
    functionName: TAILQ_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 476
    functionName: TAILQ_ENTRY
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_ENTRY(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 493
    functionName: QMD_TAILQ_CHECK_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_TAILQ_CHECK_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 499
    functionName: QMD_TAILQ_CHECK_TAIL
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_TAILQ_CHECK_TAIL(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 507
    functionName: QMD_TAILQ_CHECK_NEXT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_TAILQ_CHECK_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 513
    functionName: QMD_TAILQ_CHECK_PREV
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QMD_TAILQ_CHECK_PREV(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head1
    - ','
    - head2
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 532
    functionName: TAILQ_CONCAT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_CONCAT(head1, head2, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 534
    functionName: TAILQ_EMPTY
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 536
    functionName: TAILQ_FIRST
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 540
    functionName: TAILQ_FOREACH
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 544
    functionName: TAILQ_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - headname
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: TAILQ_FOREACH_REVERSE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH_REVERSE(var, head, headname, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - headname
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 553
    functionName: TAILQ_FOREACH_REVERSE_SAFE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 560
    functionName: TAILQ_INIT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 577
    functionName: TAILQ_INSERT_AFTER
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_AFTER(head, listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - listelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 588
    functionName: TAILQ_INSERT_BEFORE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_BEFORE(listelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 602
    functionName: TAILQ_INSERT_HEAD
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 613
    functionName: TAILQ_INSERT_TAIL
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_INSERT_TAIL(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - headname
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 616
    functionName: TAILQ_LAST
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_LAST(head, headname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 618
    functionName: TAILQ_NEXT
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - elm
    - ','
    - headname
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 621
    functionName: TAILQ_PREV
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_PREV(elm, headname, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 640
    functionName: TAILQ_REMOVE
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_REMOVE(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head1
    - ','
    - head2
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 658
    functionName: TAILQ_SWAP
    functionSourceFile: /src/frr/lib/freebsd-queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_SWAP(head1, head2, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: VRF_LOGNAME
    functionSourceFile: /src/frr/lib/vrf.h
    functionUses: 48
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VRF_LOGNAME(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - V
    - ','
    - NAME
    - ','
    - USE_JSON
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 131
    functionName: VRF_GET_ID
    functionSourceFile: /src/frr/lib/vrf.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VRF_GET_ID(V, NAME, USE_JSON)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/vrf.h:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: vrf_is_enabled
    functionSourceFile: /src/frr/lib/vrf.h
    functionUses: 8
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int vrf_is_enabled(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/vrf.h:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: vrf_is_user_cfged
    functionSourceFile: /src/frr/lib/vrf.h
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int vrf_is_user_cfged(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/vrf.h:151,1
    - Dst: strncmp
      Src: /src/frr/lib/vrf.h:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 158
    functionName: vrf_interface_count
    functionSourceFile: /src/frr/lib/vrf.h
    functionUses: 1
    functionsReached:
    - strncmp
    - RB_FOREACH
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t vrf_interface_count(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: FFS32
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFS32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: FFS32
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFS32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: ID_DIR
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ID_DIR(id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: ID_SUBDIR
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ID_SUBDIR(id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: ID_PAGE
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ID_PAGE(id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: ID_WORD
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ID_WORD(id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: ID_OFFSET
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ID_OFFSET(id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ID_DIR
      Src: /src/frr/lib/id_alloc.c:66,1
    - Dst: XCALLOC
      Src: /src/frr/lib/id_alloc.c:69,1
    - Dst: ID_DIR
      Src: /src/frr/lib/id_alloc.c:70,1
    - Dst: ID_SUBDIR
      Src: /src/frr/lib/id_alloc.c:76,1
    - Dst: XCALLOC
      Src: /src/frr/lib/id_alloc.c:79,1
    - Dst: ID_SUBDIR
      Src: /src/frr/lib/id_alloc.c:81,1
    - Dst: ID_PAGE
      Src: /src/frr/lib/id_alloc.c:87,1
    - Dst: XCALLOC
      Src: /src/frr/lib/id_alloc.c:89,1
    - Dst: ID_PAGE
      Src: /src/frr/lib/id_alloc.c:91,1
    - Dst: flog_err
      Src: /src/frr/lib/id_alloc.c:97,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - alloc
    - id
    - create
    argTypes:
    - struct id_alloc*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 104
    functionName: find_or_create_page
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached:
    - ID_DIR
    - XCALLOC
    - ID_SUBDIR
    - ID_PAGE
    - flog_err
    linkageType: ''
    returnType: struct id_alloc_page
    signature: "struct id_alloc_page *find_or_create_page(struct id_alloc *alloc,\n\t\t\t\t\t\t
      uint32_t id, int create)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find_or_create_page
      Src: /src/frr/lib/id_alloc.c:119,1
    - Dst: flog_err
      Src: /src/frr/lib/id_alloc.c:121,1
    - Dst: ID_WORD
      Src: /src/frr/lib/id_alloc.c:127,1
    - Dst: ID_OFFSET
      Src: /src/frr/lib/id_alloc.c:128,1
    - Dst: flog_err
      Src: /src/frr/lib/id_alloc.c:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - alloc
    - id
    argTypes:
    - struct id_alloc*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 155
    functionName: idalloc_free
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 2
    functionsReached:
    - ID_OFFSET
    - flog_err
    - ID_WORD
    - find_or_create_page
    linkageType: ''
    returnType: void
    signature: void idalloc_free(struct id_alloc *alloc, uint32_t id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_or_create_page
      Src: /src/frr/lib/id_alloc.c:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct id_alloc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 167
    functionName: create_next_page
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached:
    - find_or_create_page
    linkageType: ''
    returnType: struct id_alloc_page
    signature: struct id_alloc_page *create_next_page(struct id_alloc *alloc)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - alloc
    - page
    - word
    - offset
    argTypes:
    - struct id_alloc*
    - struct id_alloc_page*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 208
    functionName: reserve_bit
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void reserve_bit(struct id_alloc *alloc, struct id_alloc_page *page,\n\t\t\tint
      word, int offset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: create_next_page
      Src: /src/frr/lib/id_alloc.c:221,1
    - Dst: flog_err
      Src: /src/frr/lib/id_alloc.c:224,1
    - Dst: FFS32
      Src: /src/frr/lib/id_alloc.c:230,1
    - Dst: flog_err
      Src: /src/frr/lib/id_alloc.c:233,1
    - Dst: FFS32
      Src: /src/frr/lib/id_alloc.c:239,1
    - Dst: flog_err
      Src: /src/frr/lib/id_alloc.c:241,1
    - Dst: reserve_bit
      Src: /src/frr/lib/id_alloc.c:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct id_alloc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 214
    functionDepth: 3
    functionLinenumber: 214
    functionLinenumberEnd: 251
    functionName: idalloc_allocate
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 2
    functionsReached:
    - FFS32
    - create_next_page
    - flog_err
    - reserve_bit
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t idalloc_allocate(struct id_alloc *alloc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_next_page
      Src: /src/frr/lib/id_alloc.c:265,1
    - Dst: ID_WORD
      Src: /src/frr/lib/id_alloc.c:267,1
    - Dst: ID_OFFSET
      Src: /src/frr/lib/id_alloc.c:268,1
    - Dst: find_or_create_page
      Src: /src/frr/lib/id_alloc.c:269,1
    - Dst: flog_err
      Src: /src/frr/lib/id_alloc.c:273,1
    - Dst: reserve_bit
      Src: /src/frr/lib/id_alloc.c:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - alloc
    - id
    argTypes:
    - struct id_alloc*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 259
    functionDepth: 3
    functionLinenumber: 259
    functionLinenumberEnd: 281
    functionName: idalloc_reserve
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 2
    functionsReached:
    - find_or_create_page
    - ID_WORD
    - create_next_page
    - reserve_bit
    - flog_err
    - ID_OFFSET
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t idalloc_reserve(struct id_alloc *alloc, uint32_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/id_alloc.c:290,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/id_alloc.c:291,1
    - Dst: idalloc_reserve
      Src: /src/frr/lib/id_alloc.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 286
    functionDepth: 4
    functionLinenumber: 286
    functionLinenumberEnd: 296
    functionName: idalloc_new
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 2
    functionsReached:
    - idalloc_reserve
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: struct id_alloc
    signature: struct id_alloc *idalloc_new(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/id_alloc.c:307,1
    - Dst: XFREE
      Src: /src/frr/lib/id_alloc.c:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - subdir
    argTypes:
    - struct id_alloc_subdir*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 312
    functionName: idalloc_destroy_subdir
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void idalloc_destroy_subdir(struct id_alloc_subdir *subdir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: idalloc_destroy_subdir
      Src: /src/frr/lib/id_alloc.c:323,1
    - Dst: XFREE
      Src: /src/frr/lib/id_alloc.c:327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - dir
    argTypes:
    - struct id_alloc_dir*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 328
    functionName: idalloc_destroy_dir
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached:
    - idalloc_destroy_subdir
    - XFREE
    linkageType: ''
    returnType: void
    signature: void idalloc_destroy_dir(struct id_alloc_dir *dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: idalloc_destroy_dir
      Src: /src/frr/lib/id_alloc.c:339,1
    - Dst: XFREE
      Src: /src/frr/lib/id_alloc.c:344,1
    - Dst: XFREE
      Src: /src/frr/lib/id_alloc.c:345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct id_alloc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 346
    functionName: idalloc_destroy
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 2
    functionsReached:
    - idalloc_destroy_dir
    - XFREE
    linkageType: ''
    returnType: void
    signature: void idalloc_destroy(struct id_alloc *alloc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/id_alloc.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pool_ptr
    - id
    argTypes:
    - struct id_alloc_pool**
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 359
    functionName: idalloc_free_to_pool
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 1
    functionsReached:
    - XMALLOC
    linkageType: ''
    returnType: void
    signature: void idalloc_free_to_pool(struct id_alloc_pool **pool_ptr, uint32_t
      id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: idalloc_free
      Src: /src/frr/lib/id_alloc.c:371,1
    - Dst: XFREE
      Src: /src/frr/lib/id_alloc.c:372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - alloc
    - pool_ptr
    argTypes:
    - struct id_alloc*
    - struct id_alloc_pool**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 364
    functionDepth: 3
    functionLinenumber: 364
    functionLinenumberEnd: 375
    functionName: idalloc_drain_pool
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 2
    functionsReached:
    - XFREE
    - idalloc_free
    linkageType: ''
    returnType: void
    signature: void idalloc_drain_pool(struct id_alloc *alloc, struct id_alloc_pool
      **pool_ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/id_alloc.c:390,1
    - Dst: idalloc_allocate
      Src: /src/frr/lib/id_alloc.c:393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - alloc
    - pool_ptr
    argTypes:
    - struct id_alloc*
    - struct id_alloc_pool**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 381
    functionDepth: 4
    functionLinenumber: 381
    functionLinenumberEnd: 395
    functionName: idalloc_allocate_prefer_pool
    functionSourceFile: /src/frr/lib/id_alloc.c
    functionUses: 0
    functionsReached:
    - idalloc_allocate
    - XFREE
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t idalloc_allocate_prefer_pool(struct id_alloc *alloc,\n\t\t\t\t
      \     struct id_alloc_pool **pool_ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - embed
    argTypes:
    - struct yang_module_embed*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 28
    functionName: yang_module_embed
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void yang_module_embed(struct yang_module_embed *embed)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:39,1
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:40,1
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:46,1
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:49,1
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:52,1
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:55,1
    - Dst: zlog_debug
      Src: /src/frr/lib/yang.c:65,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 21
    argCount: 7
    argNames:
    - mod_name
    - mod_rev
    - submod_name
    - submod_rev
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 71
    functionName: yang_module_imp_clb
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - strcmp
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yang_module_imp_clb(const char *mod_name, const char *mod_rev,\n\t\t\t\t
      \ const char *submod_name,\n\t\t\t\t  const char *submod_rev, void *user_data,\n\t\t\t\t
      \ LYS_INFORMAT *format,\n\t\t\t\t  const char **module_data,\n\t\t\t\t  void
      (**free_module_data)(void *, void *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct yang_module*
    - struct yang_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: yang_module_compare
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int yang_module_compare(const struct yang_module *a,\n\t\t\t\t      const
      struct yang_module *b)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_load_module
      Src: /src/frr/lib/yang.c:106,1
    - Dst: flog_err
      Src: /src/frr/lib/yang.c:108,1
    - Dst: exit
      Src: /src/frr/lib/yang.c:111,1
    - Dst: XCALLOC
      Src: /src/frr/lib/yang.c:114,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/yang.c:118,1
    - Dst: flog_err
      Src: /src/frr/lib/yang.c:119,1
    - Dst: exit
      Src: /src/frr/lib/yang.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - module_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 126
    functionName: yang_module_load
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 3
    functionsReached:
    - exit
    - XCALLOC
    - ly_ctx_load_module
    - RB_INSERT
    - flog_err
    linkageType: ''
    returnType: struct yang_module
    signature: struct yang_module *yang_module_load(const char *module_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/yang.c:130,1
    - Dst: yang_module_load
      Src: /src/frr/lib/yang.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: yang_module_load_all
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - array_size
    - yang_module_load
    linkageType: ''
    returnType: void
    signature: void yang_module_load_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/lib/yang.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - module_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: yang_module_find
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct yang_module
    signature: struct yang_module *yang_module_find(const char *module_name)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:154,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:155,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:160,1
    - Dst: lysc_is_key
      Src: /src/frr/lib/yang.c:162,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:168,1
    - Dst: assert
      Src: /src/frr/lib/yang.c:172,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:186,1
    - Dst: yang_snodes_iterate_subtree
      Src: /src/frr/lib/yang.c:190,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 41
    argCount: 5
    argNames:
    - snode
    - module
    - cb
    - flags
    - arg
    argTypes:
    - struct lysc_node*
    - struct lys_module*
    - yang_iterate_cb
    - uint16_t
    - void*
    assertStmts:
    - condition: "(snode->nodetype != LYS_AUGMENT\n\t\t       && snode->nodetype !=
        LYS_GROUPING\n\t\t       && snode->nodetype != LYS_USES)"
      pos:
        line_end: 173
        line_start: 171
        source_file: /src/frr/lib/yang.c
    constantsTouched: []
    func_position:
      end: 196
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 196
    functionName: yang_snodes_iterate_subtree
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - assert
    - CHECK_FLAG
    - yang_snodes_iterate_subtree
    - lysc_is_key
    linkageType: ''
    returnType: int
    signature: "int yang_snodes_iterate_subtree(const struct lysc_node *snode,\n\t\t\t\tconst
      struct lys_module *module,\n\t\t\t\tyang_iterate_cb cb, uint16_t flags, void
      *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_snodes_iterate_subtree
      Src: /src/frr/lib/yang.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 194
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - yang_snodes_iterate_subtree
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (lysc_node_child(snode), child)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_internal_modules_count
      Src: /src/frr/lib/yang.c:205,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/frr/lib/yang.c:206,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/yang.c:212,1
    - Dst: yang_snodes_iterate_subtree
      Src: /src/frr/lib/yang.c:213,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/yang.c:218,1
    - Dst: yang_snodes_iterate_subtree
      Src: /src/frr/lib/yang.c:219,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/yang.c:224,1
    - Dst: yang_snodes_iterate_subtree
      Src: /src/frr/lib/yang.c:225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - module
    - cb
    - flags
    - arg
    argTypes:
    - struct lys_module*
    - yang_iterate_cb
    - uint16_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 233
    functionName: yang_snodes_iterate
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 3
    functionsReached:
    - yang_snodes_iterate_subtree
    - LY_LIST_FOR
    - ly_ctx_get_module_iter
    - ly_ctx_internal_modules_count
    linkageType: ''
    returnType: int
    signature: "int yang_snodes_iterate(const struct lys_module *module, yang_iterate_cb
      cb,\n\t\t\tuint16_t flags, void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysc_path
      Src: /src/frr/lib/yang.c:241,1
    - Dst: lysc_path
      Src: /src/frr/lib/yang.c:244,1
    - Dst: flog_err
      Src: /src/frr/lib/yang.c:247,1
    - Dst: exit
      Src: /src/frr/lib/yang.c:249,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - snode
    - type
    - xpath
    - xpath_len
    argTypes:
    - struct lysc_node*
    - enum yang_path_type
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 251
    functionName: yang_snode_get_path
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 4
    functionsReached:
    - lysc_path
    - flog_err
    - exit
    linkageType: ''
    returnType: void
    signature: "void yang_snode_get_path(const struct lysc_node *snode,\n\t\t\t enum
      yang_path_type type, char *xpath,\n\t\t\t size_t xpath_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lys_find_xpath
      Src: /src/frr/lib/yang.c:260,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang.c:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ly_ctx
    - xpath
    - options
    argTypes:
    - struct ly_ctx*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 268
    functionName: yang_find_snode
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - lys_find_xpath
    - ly_set_free
    linkageType: ''
    returnType: struct lysc_node
    signature: "struct lysc_node *yang_find_snode(struct ly_ctx *ly_ctx, const char
      *xpath,\n\t\t\t\t  uint32_t options)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:277,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - snode
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: yang_snode_real_parent
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: struct lysc_node
    signature: struct lysc_node *yang_snode_real_parent(const struct lysc_node *snode)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - snode
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 306
    functionName: yang_snode_parent_list
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_node
    signature: struct lysc_node *yang_snode_parent_list(const struct lysc_node *snode)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - snode
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 323
    functionName: yang_snode_is_typeless_data
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool yang_snode_is_typeless_data(const struct lysc_node *snode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyd_value_get_canonical
      Src: /src/frr/lib/yang.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - snode
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 341
    functionName: yang_snode_get_default
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - lyd_value_get_canonical
    linkageType: ''
    returnType: char
    signature: char *yang_snode_get_default(const struct lysc_node *snode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - snode
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 356
    functionName: yang_snode_get_type
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: struct lysc_type
    signature: struct lysc_type *yang_snode_get_type(const struct lysc_node *snode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - snode
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 371
    functionName: yang_snode_num_keys
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int yang_snode_num_keys(const struct lysc_node *snode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: LY_FOR_KEYS
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_FOR_KEYS (snode, skey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_path
      Src: /src/frr/lib/yang.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnode
    - xpath
    - xpath_len
    argTypes:
    - struct lyd_node*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 377
    functionName: yang_dnode_get_path
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 2
    functionsReached:
    - lyd_path
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_path(const struct lyd_node *dnode, char *xpath,\n\t\t\t
      size_t xpath_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang.c:386,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang.c:387,1
    - Dst: va_end
      Src: /src/frr/lib/yang.c:388,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/yang.c:390,1
    - Dst: flog_err
      Src: /src/frr/lib/yang.c:392,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/yang.c:394,1
    - Dst: abort
      Src: /src/frr/lib/yang.c:395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 400
    functionName: yang_dnode_get_schema_name
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - yang_dnode_get
    - va_start
    - va_end
    - flog_err
    - abort
    - zlog_backtrace
    linkageType: ''
    returnType: char
    signature: "char *yang_dnode_get_schema_name(const struct lyd_node *dnode,\n\t\t\t\t
      \      const char *xpath_fmt, ...)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_xpath
      Src: /src/frr/lib/yang.c:414,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang.c:427,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang.c:436,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - dnode
    - xpath
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 439
    functionName: yang_dnode_get
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 21
    functionsReached:
    - lyd_find_xpath
    - ly_set_free
    - flog_warn
    linkageType: ''
    returnType: struct lyd_node
    signature: struct lyd_node *yang_dnode_get(const struct lyd_node *dnode, const
      char *xpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang.c:447,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang.c:448,1
    - Dst: va_end
      Src: /src/frr/lib/yang.c:449,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/yang.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 441
    functionDepth: 2
    functionLinenumber: 441
    functionLinenumberEnd: 452
    functionName: yang_dnode_getf
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - va_start
    - vsnprintf
    - yang_dnode_get
    - va_end
    linkageType: ''
    returnType: struct lyd_node
    signature: "struct lyd_node *yang_dnode_getf(const struct lyd_node *dnode,\n\t\t\t\t
      const char *xpath_fmt, ...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_xpath
      Src: /src/frr/lib/yang.c:461,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang.c:464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - dnode
    - xpath
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 466
    functionName: yang_dnode_exists
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 38
    functionsReached:
    - lyd_find_xpath
    - ly_set_free
    linkageType: ''
    returnType: bool
    signature: bool yang_dnode_exists(const struct lyd_node *dnode, const char *xpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang.c:474,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang.c:475,1
    - Dst: va_end
      Src: /src/frr/lib/yang.c:476,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/yang.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 479
    functionName: yang_dnode_existsf
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - va_start
    - vsnprintf
    - yang_dnode_exists
    - va_end
    linkageType: ''
    returnType: bool
    signature: "bool yang_dnode_existsf(const struct lyd_node *dnode, const char *xpath_fmt,\n\t\t\t...)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang.c:489,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang.c:490,1
    - Dst: va_end
      Src: /src/frr/lib/yang.c:491,1
    - Dst: lyd_find_xpath
      Src: /src/frr/lib/yang.c:493,1
    - Dst: assert
      Src: /src/frr/lib/yang.c:494,1
    - Dst: ly_set_free
      Src: /src/frr/lib/yang.c:505,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - cb
    - arg
    - dnode
    - xpath_fmt
    argTypes:
    - yang_dnode_iter_cb
    - void*
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 493
        line_start: 493
        source_file: /src/frr/lib/yang.c
    constantsTouched: []
    func_position:
      end: 506
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 506
    functionName: yang_dnode_iterate
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 10
    functionsReached:
    - lyd_find_xpath
    - vsnprintf
    - ly_set_free
    - va_start
    - va_end
    - assert
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_iterate(yang_dnode_iter_cb cb, void *arg,\n\t\t\tconst
      struct lyd_node *dnode, const char *xpath_fmt,\n\t\t\t...)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/lib/yang.c:514,1
    - Dst: assert
      Src: /src/frr/lib/yang.c:516,1
    - Dst: lyd_is_default
      Src: /src/frr/lib/yang.c:523,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:528,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - dnode
    - xpath
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dnode)
      pos:
        line_end: 515
        line_start: 515
        source_file: /src/frr/lib/yang.c
    constantsTouched: []
    func_position:
      end: 534
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 534
    functionName: yang_dnode_is_default
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 5
    functionsReached:
    - yang_dnode_get
    - CHECK_FLAG
    - assert
    - lyd_is_default
    linkageType: ''
    returnType: bool
    signature: bool yang_dnode_is_default(const struct lyd_node *dnode, const char
      *xpath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_is_default
      Src: /src/frr/lib/yang.c:540,1
    - Dst: va_start
      Src: /src/frr/lib/yang.c:545,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang.c:546,1
    - Dst: va_end
      Src: /src/frr/lib/yang.c:547,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/lib/yang.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 551
    functionName: yang_dnode_is_defaultf
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - va_start
    - vsnprintf
    - yang_dnode_is_default
    - va_end
    linkageType: ''
    returnType: bool
    signature: "bool yang_dnode_is_defaultf(const struct lyd_node *dnode, const char
      *xpath_fmt,\n\t\t\t    ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_is_default
      Src: /src/frr/lib/yang.c:557,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:560,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/lib/yang.c:565,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/yang.c:568,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 553
    functionDepth: 3
    functionLinenumber: 553
    functionLinenumberEnd: 573
    functionName: yang_dnode_is_default_recursive
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - LYD_TREE_DFS_END
    - yang_dnode_is_default
    linkageType: ''
    returnType: bool
    signature: bool yang_dnode_is_default_recursive(const struct lyd_node *dnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_is_default
      Src: /src/frr/lib/yang.c:565,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/yang.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 563
    functionDepth: 3
    functionLinenumber: 563
    functionLinenumberEnd: 570
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 2
    functionsReached:
    - LYD_TREE_DFS_END
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (lyd_child(dnode), root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_is_default
      Src: /src/frr/lib/yang.c:565,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/yang.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 564
    functionDepth: 3
    functionLinenumber: 564
    functionLinenumberEnd: 569
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN (root, dnode_iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/yang.c:577,1
    - Dst: lyd_change_term
      Src: /src/frr/lib/yang.c:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnode
    - value
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dnode->schema->nodetype == LYS_LEAF)
      pos:
        line_end: 576
        line_start: 576
        source_file: /src/frr/lib/yang.c
    constantsTouched: []
    func_position:
      end: 579
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 579
    functionName: yang_dnode_change_leaf
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - lyd_change_term
    - assert
    linkageType: ''
    returnType: void
    signature: void yang_dnode_change_leaf(struct lyd_node *dnode, const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_validate_all
      Src: /src/frr/lib/yang.c:586,1
    - Dst: flog_err
      Src: /src/frr/lib/yang.c:588,1
    - Dst: exit
      Src: /src/frr/lib/yang.c:589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ly_ctx
    - config_only
    argTypes:
    - struct ly_ctx*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 581
    functionDepth: 1
    functionLinenumber: 581
    functionLinenumberEnd: 593
    functionName: yang_dnode_new
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 4
    functionsReached:
    - exit
    - lyd_validate_all
    - flog_err
    linkageType: ''
    returnType: struct lyd_node
    signature: struct lyd_node *yang_dnode_new(struct ly_ctx *ly_ctx, bool config_only)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_dup_siblings
      Src: /src/frr/lib/yang.c:599,1
    - Dst: assert
      Src: /src/frr/lib/yang.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts:
    - condition: (!err)
      pos:
        line_end: 599
        line_start: 599
        source_file: /src/frr/lib/yang.c
    constantsTouched: []
    func_position:
      end: 602
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 602
    functionName: yang_dnode_dup
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 2
    functionsReached:
    - lyd_dup_siblings
    - assert
    linkageType: ''
    returnType: struct lyd_node
    signature: struct lyd_node *yang_dnode_dup(const struct lyd_node *dnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parent
      Src: /src/frr/lib/yang.c:607,1
    - Dst: lyd_free_all
      Src: /src/frr/lib/yang.c:608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 609
    functionName: yang_dnode_free
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 8
    functionsReached:
    - lyd_free_all
    - lyd_parent
    linkageType: ''
    returnType: void
    signature: void yang_dnode_free(struct lyd_node *dnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/yang.c:615,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang.c:616,1
    - Dst: strdup
      Src: /src/frr/lib/yang.c:618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 621
    functionName: yang_data_new
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 3
    functionsReached:
    - strdup
    - strlcpy
    - XCALLOC
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new(const char *xpath, const char *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/lib/yang.c:626,1
    - Dst: XFREE
      Src: /src/frr/lib/yang.c:627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct yang_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 628
    functionName: yang_data_free
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 2
    functionsReached:
    - free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void yang_data_free(struct yang_data *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/yang.c:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 638
    functionName: yang_data_list_new
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 21
    functionsReached:
    - list_new
    linkageType: ''
    returnType: struct list
    signature: struct list *yang_data_list_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang.c:648,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang.c:649,1
    - Dst: va_end
      Src: /src/frr/lib/yang.c:650,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/yang.c:652,1
    - Dst: strmatch
      Src: /src/frr/lib/yang.c:653,1
    - Dst: switch
      Src: /src/frr/lib/yang.c:664,1
    - Dst: zlog
      Src: /src/frr/lib/yang.c:678,1
    - Dst: ly_err_first
      Src: /src/frr/lib/yang.c:688,1
    - Dst: if
      Src: /src/frr/lib/yang.c:689,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang.c:692,1
    - Dst: strlcat
      Src: /src/frr/lib/yang.c:694,1
    - Dst: strlcat
      Src: /src/frr/lib/yang.c:695,1
    - Dst: strlcat
      Src: /src/frr/lib/yang.c:696,1
    - Dst: ly_errpath
      Src: /src/frr/lib/yang.c:699,1
    - Dst: strlcat
      Src: /src/frr/lib/yang.c:701,1
    - Dst: strlcat
      Src: /src/frr/lib/yang.c:702,1
    - Dst: strlcat
      Src: /src/frr/lib/yang.c:703,1
    - Dst: ly_err_clean
      Src: /src/frr/lib/yang.c:706,1
    - Dst: yang_debugging_set
      Src: /src/frr/lib/yang.c:711,1
    - Dst: ly_log_level
      Src: /src/frr/lib/yang.c:714,1
    - Dst: ly_log_dbg_groups
      Src: /src/frr/lib/yang.c:715,1
    - Dst: ly_log_level
      Src: /src/frr/lib/yang.c:717,1
    - Dst: ly_log_dbg_groups
      Src: /src/frr/lib/yang.c:718,1
    - Dst: yang_ctx_new_setup
      Src: /src/frr/lib/yang.c:722,1
    - Dst: LY_ERR
      Src: /src/frr/lib/yang.c:726,1
    - Dst: access
      Src: /src/frr/lib/yang.c:728,1
    - Dst: zlog_info
      Src: /src/frr/lib/yang.c:731,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/yang.c:734,1
    - Dst: ly_ctx_new
      Src: /src/frr/lib/yang.c:742,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/frr/lib/yang.c:747,1
    - Dst: yang_init
      Src: /src/frr/lib/yang.c:752,1
    - Dst: ly_set_log_clb
      Src: /src/frr/lib/yang.c:755,1
    - Dst: ly_log_options
      Src: /src/frr/lib/yang.c:756,1
    - Dst: yang_ctx_new_setup
      Src: /src/frr/lib/yang.c:759,1
    - Dst: flog_err
      Src: /src/frr/lib/yang.c:761,1
    - Dst: exit
      Src: /src/frr/lib/yang.c:762,1
    - Dst: yang_translator_init
      Src: /src/frr/lib/yang.c:765,1
    - Dst: yang_init_loading_complete
      Src: /src/frr/lib/yang.c:768,1
    - Dst: if
      Src: /src/frr/lib/yang.c:771,1
    - Dst: ly_ctx_compile
      Src: /src/frr/lib/yang.c:771,1
    - Dst: flog_err
      Src: /src/frr/lib/yang.c:772,1
    - Dst: ly_errmsg
      Src: /src/frr/lib/yang.c:774,1
    - Dst: exit
      Src: /src/frr/lib/yang.c:775,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/yang.c:785,1
    - Dst: RB_ROOT
      Src: /src/frr/lib/yang.c:786,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/yang.c:794,1
    - Dst: XFREE
      Src: /src/frr/lib/yang.c:795,1
    - Dst: ly_ctx_destroy
      Src: /src/frr/lib/yang.c:798,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - list
    - xpath_fmt
    argTypes:
    - struct list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 799
    functionName: yang_data_list_find
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 3
    functionsReached:
    - switch
    - yang_debugging_set
    - ly_ctx_set_module_imp_clb
    - ly_ctx_destroy
    - flog_err
    - ly_err_first
    - ly_set_log_clb
    - ly_log_level
    - ly_log_dbg_groups
    - RB_EMPTY
    - strmatch
    - strlcat
    - exit
    - ALL_LIST_ELEMENTS_RO
    - ly_err_clean
    - ly_log_options
    - if
    - yang_init_loading_complete
    - flog_err_sys
    - access
    - ly_errpath
    - RB_ROOT
    - zlog
    - zlog_info
    - vsnprintf
    - strlcpy
    - ly_ctx_compile
    - va_start
    - va_end
    - XFREE
    - LY_ERR
    - ly_ctx_new
    - yang_translator_init
    - yang_init
    - RB_REMOVE
    - yang_ctx_new_setup
    - ly_errmsg
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_list_find(const struct list *list,\n\t\t\t\t
      \     const char *xpath_fmt, ...)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:810,1
    - Dst: lyd_parent
      Src: /src/frr/lib/yang.c:817,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - dnode
    - name
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 801
    functionDepth: 1
    functionLinenumber: 801
    functionLinenumberEnd: 821
    functionName: yang_dnode_get_parent
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 23
    functionsReached:
    - strcmp
    - lyd_parent
    linkageType: ''
    returnType: struct lyd_node
    signature: "struct lyd_node *yang_dnode_get_parent(const struct lyd_node *dnode,\n\t\t\t\t\t
      \    const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:827,1
    - Dst: strcmp
      Src: /src/frr/lib/yang.c:831,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 2
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 833
    functionName: yang_is_last_list_dnode
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool yang_is_last_list_dnode(const struct lyd_node *dnode)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/yang.c:843,1
    - Dst: lyd_parent
      Src: /src/frr/lib/yang.c:844,1
    - Dst: yang_snode_num_keys
      Src: /src/frr/lib/yang.c:845,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts:
    - condition: (dnode->parent)
      pos:
        line_end: 842
        line_start: 842
        source_file: /src/frr/lib/yang.c
    constantsTouched: []
    func_position:
      end: 860
      start: 835
    functionDepth: 2
    functionLinenumber: 835
    functionLinenumberEnd: 860
    functionName: yang_is_last_level_dnode
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 0
    functionsReached:
    - yang_snode_num_keys
    - lyd_parent
    - assert
    linkageType: ''
    returnType: bool
    signature: bool yang_is_last_level_dnode(const struct lyd_node *dnode)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang.c:875,1
    - Dst: lyd_parent
      Src: /src/frr/lib/yang.c:879,1
    - Dst: yang_is_last_list_dnode
      Src: /src/frr/lib/yang.c:886,1
    - Dst: yang_is_last_level_dnode
      Src: /src/frr/lib/yang.c:887,1
    - Dst: lyd_parent
      Src: /src/frr/lib/yang.c:891,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 862
    functionDepth: 3
    functionLinenumber: 862
    functionLinenumberEnd: 903
    functionName: yang_get_subtree_with_no_sibling
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - lyd_parent
    - yang_is_last_list_dnode
    - yang_is_last_level_dnode
    linkageType: ''
    returnType: struct lyd_node
    signature: 'struct lyd_node *

      yang_get_subtree_with_no_sibling(const struct lyd_node *dnode)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_list_pos
      Src: /src/frr/lib/yang.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 905
    functionDepth: 1
    functionLinenumber: 905
    functionLinenumberEnd: 908
    functionName: yang_get_list_pos
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 3
    functionsReached:
    - lyd_list_pos
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t yang_get_list_pos(const struct lyd_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 910
    functionDepth: 0
    functionLinenumber: 910
    functionLinenumberEnd: 929
    functionName: yang_get_list_elements_count
    functionSourceFile: /src/frr/lib/yang.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t yang_get_list_elements_count(const struct lyd_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - afi
    argTypes:
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: access_master_get
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct access_master
    signature: struct access_master *access_master_get(afi_t afi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/filter.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: filter_new
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct filter
    signature: struct filter *filter_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/filter.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: filter_free
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 4
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void filter_free(struct filter *filter)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: filter_type_str
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *filter_type_str(struct filter *filter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: masklen2ip
      Src: /src/frr/lib/filter.c:94,1
    - Dst: memcmp
      Src: /src/frr/lib/filter.c:97,1
    - Dst: memcmp
      Src: /src/frr/lib/filter.c:99,1
    - Dst: memcmp
      Src: /src/frr/lib/filter.c:103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - mfilter
    - p
    argTypes:
    - struct filter*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 108
    functionName: filter_match_cisco
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - memcmp
    - masklen2ip
    linkageType: ''
    returnType: int
    signature: int filter_match_cisco(struct filter *mfilter, const struct prefix
      *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prefix_match
      Src: /src/frr/lib/filter.c:120,1
    - Dst: prefix_match
      Src: /src/frr/lib/filter.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - mfilter
    - p
    argTypes:
    - struct filter*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 127
    functionName: filter_match_zebra
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - prefix_match
    linkageType: ''
    returnType: int
    signature: int filter_match_zebra(struct filter *mfilter, const struct prefix
      *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/filter.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: access_list_new
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct access_list
    signature: struct access_list *access_list_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/filter.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - access
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: access_list_free
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void access_list_free(struct access_list *access)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: filter_free
      Src: /src/frr/lib/filter.c:151,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/filter.c:168,1
    - Dst: struct access_master*::delete_hook
      Src: /src/frr/lib/filter.c:171,1
    - Dst: XFREE
      Src: /src/frr/lib/filter.c:173,1
    - Dst: XFREE
      Src: /src/frr/lib/filter.c:175,1
    - Dst: access_list_free
      Src: /src/frr/lib/filter.c:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - access
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 178
    functionName: access_list_delete
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 1
    functionsReached:
    - access_list_free
    - struct access_master*::delete_hook
    - route_map_notify_dependencies
    - XFREE
    - filter_free
    linkageType: ''
    returnType: void
    signature: void access_list_delete(struct access_list *access)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: access_master_get
      Src: /src/frr/lib/filter.c:189,1
    - Dst: access_list_new
      Src: /src/frr/lib/filter.c:194,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/filter.c:195,1
    - Dst: strcmp
      Src: /src/frr/lib/filter.c:203,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - afi
    - name
    argTypes:
    - afi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 237
    functionName: access_list_insert
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_list_new
    - strcmp
    - access_master_get
    - XSTRDUP
    linkageType: ''
    returnType: struct access_list
    signature: struct access_list *access_list_insert(afi_t afi, const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: access_master_get
      Src: /src/frr/lib/filter.c:248,1
    - Dst: strcmp
      Src: /src/frr/lib/filter.c:253,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - afi
    - name
    argTypes:
    - afi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 257
    functionName: access_list_lookup
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 43
    functionsReached:
    - strcmp
    - access_master_get
    linkageType: ''
    returnType: struct access_list
    signature: struct access_list *access_list_lookup(afi_t afi, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/lib/filter.c:265,1
    - Dst: access_list_insert
      Src: /src/frr/lib/filter.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - afi
    - name
    argTypes:
    - afi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: access_list_get
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 1
    functionsReached:
    - access_list_lookup
    - access_list_insert
    linkageType: ''
    returnType: struct access_list
    signature: struct access_list *access_list_get(afi_t afi, const char *name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: filter_match_cisco
      Src: /src/frr/lib/filter.c:283,1
    - Dst: filter_match_zebra
      Src: /src/frr/lib/filter.c:286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - access
    - object
    argTypes:
    - struct access_list*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 292
    functionName: access_list_apply
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 33
    functionsReached:
    - filter_match_cisco
    - filter_match_zebra
    linkageType: ''
    returnType: enum filter_type
    signature: "enum filter_type access_list_apply(struct access_list *access,\n\t\t\t\t
      \  const void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 300
    functionName: access_list_add_hook
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void access_list_add_hook(void (*func)(struct access_list *access))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 308
    functionName: access_list_delete_hook
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void access_list_delete_hook(void (*func)(struct access_list *access))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - access
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 327
    functionName: filter_new_seq_get
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64_t
    signature: int64_t filter_new_seq_get(struct access_list *access)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - access
    - seq
    argTypes:
    - struct access_list*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 339
    functionName: filter_seq_check
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct filter
    signature: "struct filter *filter_seq_check(struct access_list *access,\n\t\t\t\t\t\t
      \ int64_t seq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: filter_free
      Src: /src/frr/lib/filter.c:360,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/filter.c:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - access
    - filter
    argTypes:
    - struct access_list*
    - struct filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 366
    functionName: access_list_filter_delete
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 1
    functionsReached:
    - filter_free
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: "void access_list_filter_delete(struct access_list *access,\n\t\t\t
      \      struct filter *filter)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: filter_new_seq_get
      Src: /src/frr/lib/filter.c:377,1
    - Dst: filter_seq_check
      Src: /src/frr/lib/filter.c:383,1
    - Dst: access_list_filter_delete
      Src: /src/frr/lib/filter.c:385,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/filter.c:417,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - access
    - filter
    argTypes:
    - struct access_list*
    - struct filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 418
    functionName: access_list_filter_add
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 1
    functionsReached:
    - filter_new_seq_get
    - access_list_filter_delete
    - filter_seq_check
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: "void access_list_filter_add(struct access_list *access,\n\t\t\t    struct
      filter *filter)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - filter
    argTypes:
    - struct filter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 446
    functionName: filter_type2str
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *filter_type2str(struct filter *filter)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: access_master_get
      Src: /src/frr/lib/filter.c:460,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:463,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/filter.c:468,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/filter.c:472,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/filter.c:473,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:475,1
    - Dst: strcmp
      Src: /src/frr/lib/filter.c:481,1
    - Dst: filter_type2str
      Src: /src/frr/lib/filter.c:492,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/filter.c:495,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/filter.c:496,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/filter.c:500,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/filter.c:502,1
    - Dst: afi2str
      Src: /src/frr/lib/filter.c:504,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/filter.c:505,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/filter.c:506,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:509,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/filter.c:523,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/filter.c:524,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/filter.c:526,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/filter.c:528,1
    - Dst: filter_type_str
      Src: /src/frr/lib/filter.c:530,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:532,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:533,1
    - Dst: filter_type_str
      Src: /src/frr/lib/filter.c:533,1
    - Dst: config_write_access_zebra
      Src: /src/frr/lib/filter.c:539,1
    - Dst: config_write_access_cisco
      Src: /src/frr/lib/filter.c:542,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/filter.c:546,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/filter.c:549,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:555,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:557,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:561,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:564,1
    - Dst: vty_json
      Src: /src/frr/lib/filter.c:571,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 62
    argCount: 4
    argNames:
    - vty
    - name
    - afi
    - use_json
    argTypes:
    - struct vty*
    - char*
    - afi_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 449
    functionDepth: 4
    functionLinenumber: 449
    functionLinenumberEnd: 572
    functionName: filter_show
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - config_write_access_cisco
    - vty_out
    - json_object_array_add
    - config_write_access_zebra
    - strcmp
    - access_master_get
    - filter_type2str
    - afi2str
    - json_object_int_add
    - filter_type_str
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int filter_show(struct vty *vty, const char *name, afi_t afi,\n\t\t
      \      bool use_json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_boolean_add
      Src: /src/frr/lib/filter.c:656,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/filter.c:657,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/filter.c:659,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/filter.c:661,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/filter.c:663,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:666,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:668,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:670,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:672,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:673,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:677,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:679,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:681,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:682,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:684,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - vty
    - mfilter
    - json
    argTypes:
    - struct vty*
    - struct filter*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 648
    functionDepth: 2
    functionLinenumber: 648
    functionLinenumberEnd: 686
    functionName: config_write_access_cisco
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 1
    functionsReached:
    - json_object_boolean_add
    - vty_out
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void config_write_access_cisco(struct vty *vty, struct filter *mfilter,\n\t\t\t\t
      \     json_object *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_addf
      Src: /src/frr/lib/filter.c:699,1
    - Dst: json_object_boolean_add
      Src: /src/frr/lib/filter.c:700,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:703,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:705,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:709,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:711,1
    - Dst: prefix_mac2str
      Src: /src/frr/lib/filter.c:712,1
    - Dst: vty_out
      Src: /src/frr/lib/filter.c:716,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - vty
    - mfilter
    - json
    argTypes:
    - struct vty*
    - struct filter*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 688
    functionDepth: 2
    functionLinenumber: 688
    functionLinenumberEnd: 718
    functionName: config_write_access_zebra
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 1
    functionsReached:
    - json_object_boolean_add
    - prefix_mac2str
    - vty_out
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void config_write_access_zebra(struct vty *vty, struct filter *mfilter,\n\t\t\t\t
      \     json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_master_get
      Src: /src/frr/lib/filter.c:732,1
    - Dst: access_list_delete
      Src: /src/frr/lib/filter.c:738,1
    - Dst: assert
      Src: /src/frr/lib/filter.c:741,1
    - Dst: assert
      Src: /src/frr/lib/filter.c:742,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (master->str.head == NULL)
      pos:
        line_end: 740
        line_start: 740
        source_file: /src/frr/lib/filter.c
    - condition: (master->str.tail == NULL)
      pos:
        line_end: 741
        line_start: 741
        source_file: /src/frr/lib/filter.c
    constantsTouched: []
    func_position:
      end: 743
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 743
    functionName: access_list_reset_mac
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_master_get
    - assert
    - access_list_delete
    linkageType: ''
    returnType: void
    signature: void access_list_reset_mac(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/lib/filter.c:748,1
    - Dst: install_element
      Src: /src/frr/lib/filter.c:750,1
    - Dst: install_element
      Src: /src/frr/lib/filter.c:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 752
    functionName: access_list_init_mac
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void access_list_init_mac(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/lib/filter.c:768,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/filter.c:770,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 763
    functionDepth: 2
    functionLinenumber: 763
    functionLinenumberEnd: 775
    functionName: config_write_access
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int config_write_access(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_master_get
      Src: /src/frr/lib/filter.c:783,1
    - Dst: access_list_delete
      Src: /src/frr/lib/filter.c:789,1
    - Dst: assert
      Src: /src/frr/lib/filter.c:792,1
    - Dst: assert
      Src: /src/frr/lib/filter.c:793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (master->str.head == NULL)
      pos:
        line_end: 791
        line_start: 791
        source_file: /src/frr/lib/filter.c
    - condition: (master->str.tail == NULL)
      pos:
        line_end: 792
        line_start: 792
        source_file: /src/frr/lib/filter.c
    constantsTouched: []
    func_position:
      end: 794
      start: 777
    functionDepth: 3
    functionLinenumber: 777
    functionLinenumberEnd: 794
    functionName: access_list_reset_ipv4
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_master_get
    - assert
    - access_list_delete
    linkageType: ''
    returnType: void
    signature: void access_list_reset_ipv4(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/lib/filter.c:799,1
    - Dst: install_element
      Src: /src/frr/lib/filter.c:801,1
    - Dst: install_element
      Src: /src/frr/lib/filter.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 803
    functionName: access_list_init_ipv4
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void access_list_init_ipv4(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_master_get
      Src: /src/frr/lib/filter.c:812,1
    - Dst: vector_set
      Src: /src/frr/lib/filter.c:818,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/filter.c:818,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - afi
    - comps
    - token
    argTypes:
    - afi_t
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 805
    functionDepth: 3
    functionLinenumber: 805
    functionLinenumberEnd: 820
    functionName: access_list_autocomplete_afi
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - vector_set
    - access_master_get
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void access_list_autocomplete_afi(afi_t afi, vector comps,\n\t\t\t\t\t
      struct cmd_token *token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: access_list_autocomplete_afi
      Src: /src/frr/lib/filter.c:830,1
    - Dst: access_list_autocomplete_afi
      Src: /src/frr/lib/filter.c:831,1
    - Dst: access_list_autocomplete_afi
      Src: /src/frr/lib/filter.c:832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 828
    functionDepth: 4
    functionLinenumber: 828
    functionLinenumberEnd: 833
    functionName: access_list_autocomplete
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_list_autocomplete_afi
    linkageType: ''
    returnType: void
    signature: void access_list_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: access_list_autocomplete_afi
      Src: /src/frr/lib/filter.c:837,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 835
    functionDepth: 4
    functionLinenumber: 835
    functionLinenumberEnd: 838
    functionName: access_list4_autocomplete
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_list_autocomplete_afi
    linkageType: ''
    returnType: void
    signature: void access_list4_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: access_list_autocomplete_afi
      Src: /src/frr/lib/filter.c:842,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 840
    functionDepth: 4
    functionLinenumber: 840
    functionLinenumberEnd: 843
    functionName: access_list6_autocomplete
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_list_autocomplete_afi
    linkageType: ''
    returnType: void
    signature: void access_list6_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: access_list_autocomplete_afi
      Src: /src/frr/lib/filter.c:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 845
    functionDepth: 4
    functionLinenumber: 845
    functionLinenumberEnd: 848
    functionName: access_list_mac_autocomplete
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_list_autocomplete_afi
    linkageType: ''
    returnType: void
    signature: void access_list_mac_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: access_master_get
      Src: /src/frr/lib/filter.c:867,1
    - Dst: access_list_delete
      Src: /src/frr/lib/filter.c:873,1
    - Dst: assert
      Src: /src/frr/lib/filter.c:876,1
    - Dst: assert
      Src: /src/frr/lib/filter.c:877,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (master->str.head == NULL)
      pos:
        line_end: 875
        line_start: 875
        source_file: /src/frr/lib/filter.c
    - condition: (master->str.tail == NULL)
      pos:
        line_end: 876
        line_start: 876
        source_file: /src/frr/lib/filter.c
    constantsTouched: []
    func_position:
      end: 878
      start: 861
    functionDepth: 3
    functionLinenumber: 861
    functionLinenumberEnd: 878
    functionName: access_list_reset_ipv6
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - access_master_get
    - assert
    - access_list_delete
    linkageType: ''
    returnType: void
    signature: void access_list_reset_ipv6(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/lib/filter.c:882,1
    - Dst: install_element
      Src: /src/frr/lib/filter.c:884,1
    - Dst: install_element
      Src: /src/frr/lib/filter.c:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 886
    functionName: access_list_init_ipv6
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void access_list_init_ipv6(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/filter.c:890,1
    - Dst: access_list_init_ipv4
      Src: /src/frr/lib/filter.c:892,1
    - Dst: access_list_init_ipv6
      Src: /src/frr/lib/filter.c:893,1
    - Dst: access_list_init_mac
      Src: /src/frr/lib/filter.c:894,1
    - Dst: filter_cli_init
      Src: /src/frr/lib/filter.c:896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 888
    functionDepth: 2
    functionLinenumber: 888
    functionLinenumberEnd: 897
    functionName: access_list_init
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 11
    functionsReached:
    - access_list_init_ipv6
    - access_list_init_mac
    - filter_cli_init
    - access_list_init_ipv4
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void access_list_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: access_list_reset_ipv4
      Src: /src/frr/lib/filter.c:901,1
    - Dst: access_list_reset_ipv6
      Src: /src/frr/lib/filter.c:902,1
    - Dst: access_list_reset_mac
      Src: /src/frr/lib/filter.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 899
    functionDepth: 4
    functionLinenumber: 899
    functionLinenumberEnd: 904
    functionName: access_list_reset
    functionSourceFile: /src/frr/lib/filter.c
    functionUses: 5
    functionsReached:
    - access_list_reset_mac
    - access_list_reset_ipv6
    - access_list_reset_ipv4
    linkageType: ''
    returnType: void
    signature: void access_list_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - funcname
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: flog_err_confd
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: flog_err_confd(funcname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: confd_xpath_pp_kpath
      Src: /src/frr/lib/northbound_confd.c:54,1
    - Dst: strchr
      Src: /src/frr/lib/northbound_confd.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - kp
    - xpath
    - len
    argTypes:
    - confd_hkeypath_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 63
    functionName: frr_confd_get_xpath
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - strchr
    - confd_xpath_pp_kpath
    linkageType: ''
    returnType: void
    signature: "void frr_confd_get_xpath(const confd_hkeypath_t *kp, char *xpath,\n\t\t\t\tsize_t
      len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: confd_cs_node_cd
      Src: /src/frr/lib/northbound_confd.c:71,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:73,1
    - Dst: confd_val2str
      Src: /src/frr/lib/northbound_confd.c:76,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - xpath
    - value
    - string
    - string_size
    argTypes:
    - char*
    - confd_value_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 83
    functionName: frr_confd_val2str
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - confd_val2str
    - flog_err_confd
    - confd_cs_node_cd
    linkageType: ''
    returnType: int
    signature: "int frr_confd_val2str(const char *xpath, const confd_value_t *value,\n\t\t\t
      \    char *string, size_t string_size)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:117,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:119,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:131,1
    - Dst: nb_callback_lookup_entry
      Src: /src/frr/lib/northbound_confd.c:132,1
    - Dst: sscanf
      Src: /src/frr/lib/northbound_confd.c:140,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - kp
    - nb_node
    - list_entry
    argTypes:
    - confd_hkeypath_t*
    - struct nb_node*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 149
    functionName: frr_confd_hkeypath_get_list_entry
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - memset
    - strlcpy
    - CHECK_FLAG
    - nb_callback_lookup_entry
    - sscanf
    linkageType: ''
    returnType: int
    signature: "int frr_confd_hkeypath_get_list_entry(const confd_hkeypath_t *kp,\n\t\t\t\t\t
      \    struct nb_node *nb_node,\n\t\t\t\t\t     const void **list_entry)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/lib/northbound_confd.c:157,1
    - Dst: gmtime_r
      Src: /src/frr/lib/northbound_confd.c:158,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - datetime
    argTypes:
    - struct confd_datetime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 170
    functionName: getdatetime
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    - memset
    - gmtime_r
    linkageType: ''
    returnType: void
    signature: void getdatetime(struct confd_datetime *datetime)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_get_xpath
      Src: /src/frr/lib/northbound_confd.c:192,1
    - Dst: strrchr
      Src: /src/frr/lib/northbound_confd.c:199,1
    - Dst: strrchr
      Src: /src/frr/lib/northbound_confd.c:200,1
    - Dst: strchr
      Src: /src/frr/lib/northbound_confd.c:201,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:203,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:207,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:209,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound_confd.c:224,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:237,1
    - Dst: frr_confd_val2str
      Src: /src/frr/lib/northbound_confd.c:246,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:249,1
    - Dst: yang_data_new
      Src: /src/frr/lib/northbound_confd.c:257,1
    - Dst: nb_candidate_edit
      Src: /src/frr/lib/northbound_confd.c:258,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_confd.c:260,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:262,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound_confd.c:265,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 5
    argNames:
    - kp
    - cdb_op
    - oldv
    - newv
    - args
    argTypes:
    - confd_hkeypath_t*
    - enum cdb_iter_op
    - confd_value_t*
    - confd_value_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 271
    functionName: frr_confd_cdb_diff_iter
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - nb_candidate_edit
    - nb_operation_is_valid
    - frr_confd_get_xpath
    - flog_warn
    - yang_data_free
    - strlcpy
    - strrchr
    - strchr
    - flog_err
    - nb_node_find
    - nb_operation_name
    - frr_confd_val2str
    linkageType: ''
    returnType: enum cdb_iter_ret
    signature: "enum cdb_iter_ret frr_confd_cdb_diff_iter(confd_hkeypath_t *kp, enum
      cdb_iter_op cdb_op,\n\t\t\tconfd_value_t *oldv, confd_value_t *newv, void *args)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_dup
      Src: /src/frr/lib/northbound_confd.c:281,1
    - Dst: cdb_diff_iterate
      Src: /src/frr/lib/northbound_confd.c:287,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:290,1
    - Dst: free
      Src: /src/frr/lib/northbound_confd.c:293,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_confd.c:296,1
    - Dst: cdb_sub_abort_trans
      Src: /src/frr/lib/northbound_confd.c:298,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:302,1
    - Dst: nb_candidate_commit_prepare
      Src: /src/frr/lib/northbound_confd.c:314,1
    - Dst: cdb_sub_abort_trans
      Src: /src/frr/lib/northbound_confd.c:333,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:336,1
    - Dst: cdb_sync_subscription_socket
      Src: /src/frr/lib/northbound_confd.c:341,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:343,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_confd.c:349,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 3
    argNames:
    - fd
    - subp
    - reslen
    argTypes:
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 351
    functionName: frr_confd_cdb_read_cb_prepare
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - cdb_sync_subscription_socket
    - cdb_sub_abort_trans
    - free
    - nb_config_dup
    - nb_candidate_commit_prepare
    - flog_err_confd
    - cdb_diff_iterate
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void frr_confd_cdb_read_cb_prepare(int fd, int *subp, int reslen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/lib/northbound_confd.c:359,1
    - Dst: nb_candidate_commit_apply
      Src: /src/frr/lib/northbound_confd.c:366,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_confd.c:368,1
    - Dst: cdb_sync_subscription_socket
      Src: /src/frr/lib/northbound_confd.c:372,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - fd
    - subp
    - reslen
    argTypes:
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 376
    functionName: frr_confd_cdb_read_cb_commit
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - cdb_sync_subscription_socket
    - free
    - nb_candidate_commit_apply
    - flog_err_confd
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void frr_confd_cdb_read_cb_commit(int fd, int *subp, int reslen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/lib/northbound_confd.c:384,1
    - Dst: nb_candidate_commit_abort
      Src: /src/frr/lib/northbound_confd.c:391,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_confd.c:392,1
    - Dst: cdb_sync_subscription_socket
      Src: /src/frr/lib/northbound_confd.c:396,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:397,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - fd
    - subp
    - reslen
    argTypes:
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 402
    functionName: frr_confd_cdb_read_cb_abort
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - nb_candidate_commit_abort
    - cdb_sync_subscription_socket
    - free
    - flog_err_confd
    - nb_config_free
    linkageType: ''
    returnType: int
    signature: int frr_confd_cdb_read_cb_abort(int fd, int *subp, int reslen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/lib/northbound_confd.c:406,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:412,1
    - Dst: cdb_read_subscription_socket2
      Src: /src/frr/lib/northbound_confd.c:414,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:416,1
    - Dst: frr_confd_cdb_read_cb_prepare
      Src: /src/frr/lib/northbound_confd.c:422,1
    - Dst: frr_confd_cdb_read_cb_commit
      Src: /src/frr/lib/northbound_confd.c:425,1
    - Dst: frr_confd_cdb_read_cb_abort
      Src: /src/frr/lib/northbound_confd.c:428,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:431,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 434
    functionName: frr_confd_cdb_read_cb
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - frr_confd_cdb_read_cb_abort
    - EVENT_FD
    - cdb_read_subscription_socket2
    - frr_confd_cdb_read_cb_commit
    - flog_err_confd
    - event_add_read
    - frr_confd_cdb_read_cb_prepare
    linkageType: ''
    returnType: void
    signature: void frr_confd_cdb_read_cb(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/lib/northbound_confd.c:446,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:448,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_confd.c:449,1
    - Dst: cdb_connect
      Src: /src/frr/lib/northbound_confd.c:453,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:456,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:464,1
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound_confd.c:465,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_confd.c:466,1
    - Dst: if
      Src: /src/frr/lib/northbound_confd.c:469,1
    - Dst: cdb_trigger_subscriptions
      Src: /src/frr/lib/northbound_confd.c:469,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:470,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_confd.c:475,1
    - Dst: cdb_close
      Src: /src/frr/lib/northbound_confd.c:476,1
    - Dst: frr_confd_subscribe
      Src: /src/frr/lib/northbound_confd.c:481,1
    - Dst: YANG_ITER_CONTINUE
      Src: /src/frr/lib/northbound_confd.c:495,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:498,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound_confd.c:505,1
    - Dst: XMALLOC
      Src: /src/frr/lib/northbound_confd.c:508,1
    - Dst: cdb_subscribe2
      Src: /src/frr/lib/northbound_confd.c:509,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:513,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_confd.c:514,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_confd.c:518,1
    - Dst: frr_confd_init_cdb
      Src: /src/frr/lib/northbound_confd.c:522,1
    - Dst: socket
      Src: /src/frr/lib/northbound_confd.c:528,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:530,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_confd.c:531,1
    - Dst: if
      Src: /src/frr/lib/northbound_confd.c:535,1
    - Dst: cdb_connect
      Src: /src/frr/lib/northbound_confd.c:535,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:538,1
    - Dst: list_new
      Src: /src/frr/lib/northbound_confd.c:543,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_confd.c:544,1
    - Dst: confd_str2hash
      Src: /src/frr/lib/northbound_confd.c:545,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:547,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_confd.c:559,1
    - Dst: if
      Src: /src/frr/lib/northbound_confd.c:563,1
    - Dst: cdb_subscribe_done
      Src: /src/frr/lib/northbound_confd.c:563,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:564,1
    - Dst: if
      Src: /src/frr/lib/northbound_confd.c:569,1
    - Dst: pthread_create
      Src: /src/frr/lib/northbound_confd.c:569,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:571,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_confd.c:572,1
    - Dst: pthread_detach
      Src: /src/frr/lib/northbound_confd.c:575,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:577,1
    - Dst: frr_confd_finish_cdb
      Src: /src/frr/lib/northbound_confd.c:583,1
    - Dst: cdb_close
      Src: /src/frr/lib/northbound_confd.c:592,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 593
    functionName: thread_cdb_trigger_subscriptions
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - cdb_trigger_subscriptions
    - cdb_connect
    - listnode_add
    - flog_err
    - YANG_ITER_CONTINUE
    - yang_snodes_iterate
    - confd_str2hash
    - XCALLOC
    - frr_confd_init_cdb
    - socket
    - ALL_LIST_ELEMENTS_RO
    - safe_strerror
    - flog_err_confd
    - if
    - cdb_subscribe2
    - listcount
    - XFREE
    - event_add_read
    - pthread_detach
    - cdb_subscribe_done
    - DEBUGD
    - CHECK_FLAG
    - pthread_create
    - XMALLOC
    - list_new
    - cdb_close
    - frr_confd_subscribe
    - frr_confd_finish_cdb
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void *thread_cdb_trigger_subscriptions(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: confd_trans_set_fd
      Src: /src/frr/lib/northbound_confd.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tctx
    argTypes:
    - struct confd_trans_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 603
    functionName: frr_confd_transaction_init
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - confd_trans_set_fd
    linkageType: ''
    returnType: int
    signature: int frr_confd_transaction_init(struct confd_trans_ctx *tctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_get_xpath
      Src: /src/frr/lib/northbound_confd.c:616,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:618,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:620,1
    - Dst: confd_data_reply_not_found
      Src: /src/frr/lib/northbound_confd.c:622,1
    - Dst: frr_confd_hkeypath_get_list_entry
      Src: /src/frr/lib/northbound_confd.c:626,1
    - Dst: confd_data_reply_not_found
      Src: /src/frr/lib/northbound_confd.c:627,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound_confd.c:631,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:634,1
    - Dst: confd_data_reply_value
      Src: /src/frr/lib/northbound_confd.c:635,1
    - Dst: confd_data_reply_found
      Src: /src/frr/lib/northbound_confd.c:637,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_confd.c:638,1
    - Dst: confd_data_reply_not_found
      Src: /src/frr/lib/northbound_confd.c:640,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - tctx
    - kp
    argTypes:
    - struct confd_trans_ctx*
    - confd_hkeypath_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 643
    functionName: frr_confd_data_get_elem
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - frr_confd_hkeypath_get_list_entry
    - nb_callback_get_elem
    - flog_warn
    - frr_confd_get_xpath
    - confd_data_reply_not_found
    - confd_data_reply_found
    - CONFD_SET_STR
    - nb_node_find
    - confd_data_reply_value
    - yang_data_free
    linkageType: ''
    returnType: int
    signature: "int frr_confd_data_get_elem(struct confd_trans_ctx *tctx,\n\t\t\t\t
      \  confd_hkeypath_t *kp)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_get_xpath
      Src: /src/frr/lib/northbound_confd.c:654,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:656,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:658,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:660,1
    - Dst: frr_confd_hkeypath_get_list_entry
      Src: /src/frr/lib/northbound_confd.c:664,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:667,1
    - Dst: nb_callback_get_next
      Src: /src/frr/lib/northbound_confd.c:671,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:681,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:684,1
    - Dst: nb_callback_get_keys
      Src: /src/frr/lib/northbound_confd.c:685,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:687,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:690,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:696,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:697,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:724,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:726,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:727,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound_confd.c:731,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:734,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:735,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_confd.c:738,1
    - Dst: confd_data_reply_next_key
      Src: /src/frr/lib/northbound_confd.c:740,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 3
    argNames:
    - tctx
    - kp
    - next
    argTypes:
    - struct confd_trans_ctx*
    - confd_hkeypath_t*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 747
    functionName: frr_confd_data_get_next
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - frr_confd_hkeypath_get_list_entry
    - nb_callback_get_elem
    - flog_warn
    - frr_confd_get_xpath
    - memset
    - snprintf
    - CHECK_FLAG
    - confd_data_reply_next_key
    - nb_callback_get_keys
    - CONFD_SET_STR
    - nb_node_find
    - nb_callback_get_next
    - yang_data_free
    linkageType: ''
    returnType: int
    signature: "int frr_confd_data_get_next(struct confd_trans_ctx *tctx,\n\t\t\t\t
      \  confd_hkeypath_t *kp, long next)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_get_xpath
      Src: /src/frr/lib/northbound_confd.c:765,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:767,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:769,1
    - Dst: confd_data_reply_not_found
      Src: /src/frr/lib/northbound_confd.c:771,1
    - Dst: frr_confd_hkeypath_get_list_entry
      Src: /src/frr/lib/northbound_confd.c:775,1
    - Dst: confd_data_reply_not_found
      Src: /src/frr/lib/northbound_confd.c:776,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_confd.c:780,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound_confd.c:783,1
    - Dst: lysc_node_child
      Src: /src/frr/lib/northbound_confd.c:783,1
    - Dst: CONFD_SET_NOEXISTS
      Src: /src/frr/lib/northbound_confd.c:794,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:798,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound_confd.c:800,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:804,1
    - Dst: CONFD_SET_XMLTAG
      Src: /src/frr/lib/northbound_confd.c:807,1
    - Dst: confd_str2hash
      Src: /src/frr/lib/northbound_confd.c:809,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_confd.c:812,1
    - Dst: CONFD_SET_NOEXISTS
      Src: /src/frr/lib/northbound_confd.c:814,1
    - Dst: confd_data_reply_value_array
      Src: /src/frr/lib/northbound_confd.c:817,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_confd.c:820,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 2
    argNames:
    - tctx
    - kp
    argTypes:
    - struct confd_trans_ctx*
    - confd_hkeypath_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 752
    functionDepth: 2
    functionLinenumber: 752
    functionLinenumberEnd: 823
    functionName: frr_confd_data_get_object
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - frr_confd_hkeypath_get_list_entry
    - CONFD_SET_STR
    - nb_callback_get_elem
    - list_delete
    - flog_warn
    - frr_confd_get_xpath
    - snprintf
    - confd_data_reply_value_array
    - CONFD_SET_NOEXISTS
    - LY_LIST_FOR
    - listnode_add
    - confd_data_reply_not_found
    - yang_data_list_new
    - CONFD_SET_XMLTAG
    - lysc_node_child
    - nb_node_find
    - confd_str2hash
    linkageType: ''
    returnType: int
    signature: "int frr_confd_data_get_object(struct confd_trans_ctx *tctx,\n\t\t\t\t
      \    confd_hkeypath_t *kp)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_get_xpath
      Src: /src/frr/lib/northbound_confd.c:841,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:843,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:845,1
    - Dst: confd_data_reply_next_object_array
      Src: /src/frr/lib/northbound_confd.c:847,1
    - Dst: frr_confd_hkeypath_get_list_entry
      Src: /src/frr/lib/northbound_confd.c:851,1
    - Dst: confd_data_reply_next_object_array
      Src: /src/frr/lib/northbound_confd.c:853,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_confd.c:857,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:860,1
    - Dst: nb_callback_get_next
      Src: /src/frr/lib/northbound_confd.c:869,1
    - Dst: XMALLOC
      Src: /src/frr/lib/northbound_confd.c:879,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound_confd.c:880,1
    - Dst: assert
      Src: /src/frr/lib/northbound_confd.c:881,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:882,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_confd.c:884,1
    - Dst: XMALLOC
      Src: /src/frr/lib/northbound_confd.c:889,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:902,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:905,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:909,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound_confd.c:913,1
    - Dst: lysc_node_child
      Src: /src/frr/lib/northbound_confd.c:913,1
    - Dst: CONFD_SET_NOEXISTS
      Src: /src/frr/lib/northbound_confd.c:925,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:929,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound_confd.c:931,1
    - Dst: CONFD_SET_STR
      Src: /src/frr/lib/northbound_confd.c:935,1
    - Dst: CONFD_SET_XMLTAG
      Src: /src/frr/lib/northbound_confd.c:940,1
    - Dst: confd_str2hash
      Src: /src/frr/lib/northbound_confd.c:942,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_confd.c:946,1
    - Dst: CONFD_SET_NOEXISTS
      Src: /src/frr/lib/northbound_confd.c:948,1
    - Dst: confd_data_reply_next_object_array
      Src: /src/frr/lib/northbound_confd.c:956,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_confd.c:957,1
    - Dst: confd_data_reply_next_object_arrays
      Src: /src/frr/lib/northbound_confd.c:968,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_confd.c:973,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_confd.c:978,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 79
    argCount: 3
    argNames:
    - tctx
    - kp
    - next
    argTypes:
    - struct confd_trans_ctx*
    - confd_hkeypath_t*
    - long
    assertStmts:
    - condition: (data && data->value)
      pos:
        line_end: 880
        line_start: 880
        source_file: /src/frr/lib/northbound_confd.c
    constantsTouched: []
    func_position:
      end: 982
      start: 828
    functionDepth: 2
    functionLinenumber: 828
    functionLinenumberEnd: 982
    functionName: frr_confd_data_get_next_object
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - frr_confd_hkeypath_get_list_entry
    - list_delete
    - frr_confd_get_xpath
    - CONFD_SET_NOEXISTS
    - listnode_add
    - yang_data_list_new
    - CONFD_SET_STR
    - confd_str2hash
    - flog_warn
    - memset
    - snprintf
    - confd_data_reply_next_object_arrays
    - lysc_node_child
    - assert
    - nb_callback_get_next
    - nb_callback_get_elem
    - LY_LIST_FOR
    - CONFD_SET_XMLTAG
    - XFREE
    - nb_node_find
    - CHECK_FLAG
    - XMALLOC
    - confd_data_reply_next_object_array
    linkageType: ''
    returnType: int
    signature: "int frr_confd_data_get_next_object(struct confd_trans_ctx *tctx,\n\t\t\t\t\t
      \ confd_hkeypath_t *kp, long next)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:997,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:999,1
    - Dst: yang_module_find
      Src: /src/frr/lib/northbound_confd.c:1003,1
    - Dst: assert
      Src: /src/frr/lib/northbound_confd.c:1004,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:1008,1
    - Dst: XMALLOC
      Src: /src/frr/lib/northbound_confd.c:1010,1
    - Dst: CONFD_SET_TAG_XMLBEGIN
      Src: /src/frr/lib/northbound_confd.c:1012,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_confd.c:1014,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:1017,1
    - Dst: if
      Src: /src/frr/lib/northbound_confd.c:1018,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:1019,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_confd.c:1022,1
    - Dst: CONFD_SET_TAG_STR
      Src: /src/frr/lib/northbound_confd.c:1026,1
    - Dst: CONFD_SET_TAG_XMLEND
      Src: /src/frr/lib/northbound_confd.c:1029,1
    - Dst: getdatetime
      Src: /src/frr/lib/northbound_confd.c:1032,1
    - Dst: confd_notification_send
      Src: /src/frr/lib/northbound_confd.c:1033,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_confd.c:1036,1
    - Dst: confd_action_set_fd
      Src: /src/frr/lib/northbound_confd.c:1049,1
    - Dst: frr_confd_get_xpath
      Src: /src/frr/lib/northbound_confd.c:1070,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound_confd.c:1071,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound_confd.c:1072,1
    - Dst: confd_hash2str
      Src: /src/frr/lib/northbound_confd.c:1072,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:1075,1
    - Dst: confd_ns2prefix
      Src: /src/frr/lib/northbound_confd.c:1076,1
    - Dst: confd_hash2str
      Src: /src/frr/lib/northbound_confd.c:1076,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:1079,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:1081,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_confd.c:1086,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_confd.c:1087,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:1094,1
    - Dst: confd_hash2str
      Src: /src/frr/lib/northbound_confd.c:1095,1
    - Dst: frr_confd_val2str
      Src: /src/frr/lib/northbound_confd.c:1097,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1100,1
    - Dst: yang_data_new
      Src: /src/frr/lib/northbound_confd.c:1108,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_confd.c:1109,1
    - Dst: nb_callback_rpc
      Src: /src/frr/lib/northbound_confd.c:1113,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:1116,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:1123,1
    - Dst: XMALLOC
      Src: /src/frr/lib/northbound_confd.c:1127,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:1128,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_confd.c:1130,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:1134,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:1136,1
    - Dst: confd_str2hash
      Src: /src/frr/lib/northbound_confd.c:1142,1
    - Dst: CONFD_SET_TAG_STR
      Src: /src/frr/lib/northbound_confd.c:1143,1
    - Dst: confd_action_reply_values
      Src: /src/frr/lib/northbound_confd.c:1145,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:1145,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_confd.c:1146,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_confd.c:1151,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_confd.c:1152,1
    - Dst: confd_fd_ready
      Src: /src/frr/lib/northbound_confd.c:1162,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1164,1
    - Dst: frr_confd_finish
      Src: /src/frr/lib/northbound_confd.c:1165,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1168,1
    - Dst: frr_confd_finish
      Src: /src/frr/lib/northbound_confd.c:1169,1
    - Dst: EVENT_ARG
      Src: /src/frr/lib/northbound_confd.c:1178,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/northbound_confd.c:1179,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1181,1
    - Dst: frr_confd_dp_read
      Src: /src/frr/lib/northbound_confd.c:1183,1
    - Dst: EVENT_ARG
      Src: /src/frr/lib/northbound_confd.c:1188,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/northbound_confd.c:1189,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1191,1
    - Dst: frr_confd_dp_read
      Src: /src/frr/lib/northbound_confd.c:1194,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:1202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:1205,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound_confd.c:1208,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:1212,1
    - Dst: confd_register_data_cb
      Src: /src/frr/lib/northbound_confd.c:1213,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1214,1
    - Dst: confd_init_daemon
      Src: /src/frr/lib/northbound_confd.c:1227,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1229,1
    - Dst: confd_set_daemon_flags
      Src: /src/frr/lib/northbound_confd.c:1238,1
    - Dst: socket
      Src: /src/frr/lib/northbound_confd.c:1241,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1243,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_confd.c:1244,1
    - Dst: confd_connect
      Src: /src/frr/lib/northbound_confd.c:1248,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1251,1
    - Dst: socket
      Src: /src/frr/lib/northbound_confd.c:1259,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1261,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_confd.c:1262,1
    - Dst: confd_connect
      Src: /src/frr/lib/northbound_confd.c:1265,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1268,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1273,1
    - Dst: confd_register_trans_cb
      Src: /src/frr/lib/northbound_confd.c:1275,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1278,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_confd.c:1289,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1292,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:1301,1
    - Dst: confd_register_notification_stream
      Src: /src/frr/lib/northbound_confd.c:1302,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1304,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1309,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:1310,1
    - Dst: confd_register_action_cbs
      Src: /src/frr/lib/northbound_confd.c:1313,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1314,1
    - Dst: confd_register_done
      Src: /src/frr/lib/northbound_confd.c:1319,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1320,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1324,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1326,1
    - Dst: frr_confd_finish_dp
      Src: /src/frr/lib/northbound_confd.c:1332,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/northbound_confd.c:1340,1
    - Dst: close
      Src: /src/frr/lib/northbound_confd.c:1341,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/northbound_confd.c:1344,1
    - Dst: close
      Src: /src/frr/lib/northbound_confd.c:1345,1
    - Dst: confd_release_daemon
      Src: /src/frr/lib/northbound_confd.c:1348,1
    - Dst: DEFUN
      Src: /src/frr/lib/northbound_confd.c:1353,1
    - Dst: DEBUG_NODE2MODE
      Src: /src/frr/lib/northbound_confd.c:1362,1
    - Dst: strmatch
      Src: /src/frr/lib/northbound_confd.c:1363,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/lib/northbound_confd.c:1365,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_confd.c:1372,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_confd.c:1373,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/lib/northbound_confd.c:1380,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_confd.c:1383,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/lib/northbound_confd.c:1384,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1391,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1393,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_confd.c:1395,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_confd.c:1396,1
    - Dst: confd_str2hash
      Src: /src/frr/lib/northbound_confd.c:1407,1
    - Dst: confd_init
      Src: /src/frr/lib/northbound_confd.c:1419,1
    - Dst: inet_addr
      Src: /src/frr/lib/northbound_confd.c:1422,1
    - Dst: htons
      Src: /src/frr/lib/northbound_confd.c:1423,1
    - Dst: confd_load_schemas
      Src: /src/frr/lib/northbound_confd.c:1424,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1426,1
    - Dst: frr_confd_init_cdb
      Src: /src/frr/lib/northbound_confd.c:1430,1
    - Dst: frr_confd_init_dp
      Src: /src/frr/lib/northbound_confd.c:1434,1
    - Dst: frr_confd_finish_cdb
      Src: /src/frr/lib/northbound_confd.c:1436,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_confd.c:1440,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1442,1
    - Dst: confd_free_schemas
      Src: /src/frr/lib/northbound_confd.c:1448,1
    - Dst: frr_confd_finish_cdb
      Src: /src/frr/lib/northbound_confd.c:1458,1
    - Dst: frr_confd_finish_dp
      Src: /src/frr/lib/northbound_confd.c:1459,1
    - Dst: confd_free_schemas
      Src: /src/frr/lib/northbound_confd.c:1461,1
    - Dst: frr_confd_init
      Src: /src/frr/lib/northbound_confd.c:1472,1
    - Dst: frr_get_progname
      Src: /src/frr/lib/northbound_confd.c:1472,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1473,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1478,1
    - Dst: frr_confd_cli_init
      Src: /src/frr/lib/northbound_confd.c:1479,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1486,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 247
    argCount: 2
    argNames:
    - xpath
    - arguments
    argTypes:
    - char*
    - struct list*
    assertStmts:
    - condition: (module)
      pos:
        line_end: 1003
        line_start: 1003
        source_file: /src/frr/lib/northbound_confd.c
    constantsTouched: []
    func_position:
      end: 1494
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 1494
    functionName: frr_confd_notification_send
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - frr_confd_finish_dp
    - list_delete
    - confd_fd_ready
    - frr_confd_get_xpath
    - confd_release_daemon
    - DEBUG_MODE_SET
    - hook_register
    - htons
    - getdatetime
    - listnode_add
    - nb_callback_rpc
    - flog_err
    - yang_data_list_new
    - confd_init_daemon
    - yang_snodes_iterate
    - frr_get_progname
    - frr_confd_cli_init
    - install_element
    - confd_set_daemon_flags
    - yang_data_new
    - frr_confd_init
    - confd_str2hash
    - strlcat
    - strmatch
    - confd_free_schemas
    - flog_warn
    - confd_hash2str
    - snprintf
    - yang_module_find
    - confd_action_set_fd
    - ALL_LIST_ELEMENTS_RO
    - confd_action_reply_values
    - socket
    - memset
    - confd_register_trans_cb
    - confd_register_done
    - frr_confd_init_cdb
    - frr_confd_finish_cdb
    - confd_ns2prefix
    - safe_strerror
    - confd_register_notification_stream
    - confd_register_data_cb
    - flog_err_confd
    - if
    - EVENT_ARG
    - CONFD_SET_TAG_XMLEND
    - CONFD_SET_TAG_STR
    - assert
    - CONFD_SET_TAG_XMLBEGIN
    - confd_load_schemas
    - DEFUN
    - confd_connect
    - vty_out
    - frr_confd_dp_read
    - listcount
    - strlcpy
    - inet_addr
    - confd_init
    - frr_confd_finish
    - EVENT_OFF
    - DEBUG_CLEAR
    - XFREE
    - confd_notification_send
    - event_add_read
    - nb_node_find
    - DEBUG_NODE2MODE
    - frr_confd_init_dp
    - DEBUG_MODE_CHECK
    - EVENT_FD
    - DEBUGD
    - CHECK_FLAG
    - XMALLOC
    - close
    - DEBUG_FLAGS_SET
    - confd_register_action_cbs
    - frr_confd_val2str
    linkageType: ''
    returnType: int
    signature: "int frr_confd_notification_send(const char *xpath,\n\t\t\t\t       struct
      list *arguments)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_get_xpath
      Src: /src/frr/lib/northbound_confd.c:1070,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound_confd.c:1071,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound_confd.c:1072,1
    - Dst: confd_hash2str
      Src: /src/frr/lib/northbound_confd.c:1072,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:1075,1
    - Dst: confd_ns2prefix
      Src: /src/frr/lib/northbound_confd.c:1076,1
    - Dst: confd_hash2str
      Src: /src/frr/lib/northbound_confd.c:1076,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:1079,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:1081,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_confd.c:1086,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_confd.c:1087,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound_confd.c:1094,1
    - Dst: confd_hash2str
      Src: /src/frr/lib/northbound_confd.c:1095,1
    - Dst: frr_confd_val2str
      Src: /src/frr/lib/northbound_confd.c:1097,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1100,1
    - Dst: yang_data_new
      Src: /src/frr/lib/northbound_confd.c:1108,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_confd.c:1109,1
    - Dst: nb_callback_rpc
      Src: /src/frr/lib/northbound_confd.c:1113,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:1116,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:1123,1
    - Dst: XMALLOC
      Src: /src/frr/lib/northbound_confd.c:1127,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:1128,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_confd.c:1130,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_confd.c:1134,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_confd.c:1136,1
    - Dst: confd_str2hash
      Src: /src/frr/lib/northbound_confd.c:1142,1
    - Dst: CONFD_SET_TAG_STR
      Src: /src/frr/lib/northbound_confd.c:1143,1
    - Dst: confd_action_reply_values
      Src: /src/frr/lib/northbound_confd.c:1145,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_confd.c:1145,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound_confd.c:1146,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_confd.c:1151,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_confd.c:1152,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 51
    argCount: 5
    argNames:
    - uinfo
    - name
    - kp
    - params
    - nparams
    argTypes:
    - struct confd_user_info*
    - struct xml_tag*
    - confd_hkeypath_t*
    - confd_tag_value_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1054
    functionDepth: 2
    functionLinenumber: 1054
    functionLinenumberEnd: 1155
    functionName: frr_confd_action_execute
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - list_delete
    - frr_confd_get_xpath
    - listnode_add
    - nb_callback_rpc
    - flog_err
    - yang_data_list_new
    - yang_data_new
    - confd_str2hash
    - strlcat
    - confd_hash2str
    - snprintf
    - flog_warn
    - confd_action_reply_values
    - ALL_LIST_ELEMENTS_RO
    - confd_ns2prefix
    - CONFD_SET_TAG_STR
    - listcount
    - XFREE
    - nb_node_find
    - XMALLOC
    - frr_confd_val2str
    linkageType: ''
    returnType: int
    signature: "int frr_confd_action_execute(struct confd_user_info *uinfo,\n\t\t\t\t
      \   struct xml_tag *name, confd_hkeypath_t *kp,\n\t\t\t\t    confd_tag_value_t
      *params, int nparams)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: confd_fd_ready
      Src: /src/frr/lib/northbound_confd.c:1162,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1164,1
    - Dst: frr_confd_finish
      Src: /src/frr/lib/northbound_confd.c:1165,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1168,1
    - Dst: frr_confd_finish
      Src: /src/frr/lib/northbound_confd.c:1169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - dctx
    - fd
    argTypes:
    - struct confd_daemon_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1158
    functionDepth: 1
    functionLinenumber: 1158
    functionLinenumberEnd: 1174
    functionName: frr_confd_dp_read
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 1
    functionsReached:
    - frr_confd_finish
    - confd_fd_ready
    - flog_err_confd
    linkageType: ''
    returnType: int
    signature: int frr_confd_dp_read(struct confd_daemon_ctx *dctx, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/northbound_confd.c:1178,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/northbound_confd.c:1179,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1181,1
    - Dst: frr_confd_dp_read
      Src: /src/frr/lib/northbound_confd.c:1183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1176
    functionDepth: 2
    functionLinenumber: 1176
    functionLinenumberEnd: 1184
    functionName: frr_confd_dp_ctl_read
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - frr_confd_dp_read
    - EVENT_FD
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void frr_confd_dp_ctl_read(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/northbound_confd.c:1188,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/northbound_confd.c:1189,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1191,1
    - Dst: frr_confd_dp_read
      Src: /src/frr/lib/northbound_confd.c:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1186
    functionDepth: 2
    functionLinenumber: 1186
    functionLinenumberEnd: 1195
    functionName: frr_confd_dp_worker_read
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - frr_confd_dp_read
    - EVENT_FD
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void frr_confd_dp_worker_read(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:1202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_confd.c:1205,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound_confd.c:1208,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:1212,1
    - Dst: confd_register_data_cb
      Src: /src/frr/lib/northbound_confd.c:1213,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1214,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - snode
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1197
    functionDepth: 1
    functionLinenumber: 1197
    functionLinenumberEnd: 1217
    functionName: frr_confd_subscribe_state
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - CHECK_FLAG
    - strlcpy
    - confd_register_data_cb
    - flog_err_confd
    linkageType: ''
    returnType: int
    signature: int frr_confd_subscribe_state(const struct lysc_node *snode, void *arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: confd_init_daemon
      Src: /src/frr/lib/northbound_confd.c:1227,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1229,1
    - Dst: confd_set_daemon_flags
      Src: /src/frr/lib/northbound_confd.c:1238,1
    - Dst: socket
      Src: /src/frr/lib/northbound_confd.c:1241,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1243,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_confd.c:1244,1
    - Dst: confd_connect
      Src: /src/frr/lib/northbound_confd.c:1248,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1251,1
    - Dst: socket
      Src: /src/frr/lib/northbound_confd.c:1259,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1261,1
    - Dst: safe_strerror
      Src: /src/frr/lib/northbound_confd.c:1262,1
    - Dst: confd_connect
      Src: /src/frr/lib/northbound_confd.c:1265,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1268,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1273,1
    - Dst: confd_register_trans_cb
      Src: /src/frr/lib/northbound_confd.c:1275,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1278,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_confd.c:1289,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1292,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:1301,1
    - Dst: confd_register_notification_stream
      Src: /src/frr/lib/northbound_confd.c:1302,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1304,1
    - Dst: memset
      Src: /src/frr/lib/northbound_confd.c:1309,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound_confd.c:1310,1
    - Dst: confd_register_action_cbs
      Src: /src/frr/lib/northbound_confd.c:1313,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1314,1
    - Dst: confd_register_done
      Src: /src/frr/lib/northbound_confd.c:1319,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1320,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1324,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_confd.c:1326,1
    - Dst: frr_confd_finish_dp
      Src: /src/frr/lib/northbound_confd.c:1332,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 69
    argCount: 1
    argNames:
    - program_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1219
    functionDepth: 3
    functionLinenumber: 1219
    functionLinenumberEnd: 1335
    functionName: frr_confd_init_dp
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 1
    functionsReached:
    - frr_confd_finish_dp
    - confd_connect
    - memset
    - socket
    - confd_register_trans_cb
    - strlcpy
    - confd_register_done
    - confd_init_daemon
    - flog_err
    - safe_strerror
    - yang_snodes_iterate
    - confd_register_notification_stream
    - flog_err_confd
    - event_add_read
    - confd_set_daemon_flags
    - confd_register_action_cbs
    linkageType: ''
    returnType: int
    signature: int frr_confd_init_dp(const char *program_name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/lib/northbound_confd.c:1340,1
    - Dst: close
      Src: /src/frr/lib/northbound_confd.c:1341,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/northbound_confd.c:1344,1
    - Dst: close
      Src: /src/frr/lib/northbound_confd.c:1345,1
    - Dst: confd_release_daemon
      Src: /src/frr/lib/northbound_confd.c:1348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1337
    functionDepth: 1
    functionLinenumber: 1337
    functionLinenumberEnd: 1349
    functionName: frr_confd_finish_dp
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 2
    functionsReached:
    - EVENT_OFF
    - confd_release_daemon
    - close
    linkageType: ''
    returnType: void
    signature: void frr_confd_finish_dp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_confd.c:1372,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_confd.c:1373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1370
    functionDepth: 2
    functionLinenumber: 1370
    functionLinenumberEnd: 1376
    functionName: frr_confd_debug_config_write
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - vty_out
    linkageType: ''
    returnType: int
    signature: int frr_confd_debug_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/lib/northbound_confd.c:1380,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_confd.c:1383,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/lib/northbound_confd.c:1384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1387
      start: 1378
    functionDepth: 1
    functionLinenumber: 1378
    functionLinenumberEnd: 1387
    functionName: frr_confd_debug_set_all
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: int
    signature: int frr_confd_debug_set_all(uint32_t flags, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1391,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1393,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_confd.c:1395,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_confd.c:1396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1389
    functionDepth: 1
    functionLinenumber: 1389
    functionLinenumberEnd: 1397
    functionName: frr_confd_cli_init
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 1
    functionsReached:
    - install_element
    - hook_register
    linkageType: ''
    returnType: void
    signature: void frr_confd_cli_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: confd_str2hash
      Src: /src/frr/lib/northbound_confd.c:1407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - snode
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1401
    functionDepth: 0
    functionLinenumber: 1401
    functionLinenumberEnd: 1410
    functionName: frr_confd_calculate_snode_hash
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - confd_str2hash
    linkageType: ''
    returnType: int
    signature: "int frr_confd_calculate_snode_hash(const struct lysc_node *snode,\n\t\t\t\t\t
      \ void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: confd_init
      Src: /src/frr/lib/northbound_confd.c:1419,1
    - Dst: inet_addr
      Src: /src/frr/lib/northbound_confd.c:1422,1
    - Dst: htons
      Src: /src/frr/lib/northbound_confd.c:1423,1
    - Dst: confd_load_schemas
      Src: /src/frr/lib/northbound_confd.c:1424,1
    - Dst: flog_err_confd
      Src: /src/frr/lib/northbound_confd.c:1426,1
    - Dst: frr_confd_init_cdb
      Src: /src/frr/lib/northbound_confd.c:1430,1
    - Dst: frr_confd_init_dp
      Src: /src/frr/lib/northbound_confd.c:1434,1
    - Dst: frr_confd_finish_cdb
      Src: /src/frr/lib/northbound_confd.c:1436,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_confd.c:1440,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1442,1
    - Dst: confd_free_schemas
      Src: /src/frr/lib/northbound_confd.c:1448,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - program_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1451
      start: 1412
    functionDepth: 4
    functionLinenumber: 1412
    functionLinenumberEnd: 1451
    functionName: frr_confd_init
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 1
    functionsReached:
    - frr_confd_init_dp
    - confd_free_schemas
    - hook_register
    - htons
    - frr_confd_init_cdb
    - inet_addr
    - confd_init
    - yang_snodes_iterate
    - flog_err_confd
    - frr_confd_finish_cdb
    - confd_load_schemas
    linkageType: ''
    returnType: int
    signature: int frr_confd_init(const char *program_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_finish_cdb
      Src: /src/frr/lib/northbound_confd.c:1458,1
    - Dst: frr_confd_finish_dp
      Src: /src/frr/lib/northbound_confd.c:1459,1
    - Dst: confd_free_schemas
      Src: /src/frr/lib/northbound_confd.c:1461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1453
    functionDepth: 2
    functionLinenumber: 1453
    functionLinenumberEnd: 1466
    functionName: frr_confd_finish
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 2
    functionsReached:
    - frr_confd_finish_cdb
    - confd_free_schemas
    - frr_confd_finish_dp
    linkageType: ''
    returnType: int
    signature: int frr_confd_finish(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_confd_init
      Src: /src/frr/lib/northbound_confd.c:1472,1
    - Dst: frr_get_progname
      Src: /src/frr/lib/northbound_confd.c:1472,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_confd.c:1473,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1478,1
    - Dst: frr_confd_cli_init
      Src: /src/frr/lib/northbound_confd.c:1479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1468
    functionDepth: 5
    functionLinenumber: 1468
    functionLinenumberEnd: 1482
    functionName: frr_confd_module_late_init
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - hook_register
    - flog_err
    - frr_get_progname
    - frr_confd_cli_init
    - frr_confd_init
    linkageType: ''
    returnType: int
    signature: int frr_confd_module_late_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/lib/northbound_confd.c:1486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1484
    functionDepth: 1
    functionLinenumber: 1484
    functionLinenumberEnd: 1489
    functionName: frr_confd_module_init
    functionSourceFile: /src/frr/lib/northbound_confd.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int frr_confd_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: IN6_LINKLOCAL_IFINDEX
    functionSourceFile: /src/frr/lib/sockunion.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN6_LINKLOCAL_IFINDEX(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: SET_IN6_LINKLOCAL_IFINDEX
    functionSourceFile: /src/frr/lib/sockunion.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_IN6_LINKLOCAL_IFINDEX(a, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: sockunion_family
    functionSourceFile: /src/frr/lib/sockunion.h
    functionUses: 54
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sockunion_family(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: sockunion2ip
    functionSourceFile: /src/frr/lib/sockunion.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sockunion2ip(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 57
    functionName: __jhash_mix
    functionSourceFile: /src/frr/lib/jhash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __jhash_mix(a, b, c)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/jhash.c:63,1
    - Dst: __jhash_mix
      Src: /src/frr/lib/jhash.c:80,1
    - Dst: __jhash_mix
      Src: /src/frr/lib/jhash.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - key
    - length
    - initval
    argTypes:
    - void*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 125
    functionName: jhash
    functionSourceFile: /src/frr/lib/jhash.c
    functionUses: 32
    functionsReached:
    - __jhash_mix
    - no_sanitize
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t jhash(const void *key, uint32_t length, uint32_t initval)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/jhash.c:131,1
    - Dst: __jhash_mix
      Src: /src/frr/lib/jhash.c:143,1
    - Dst: __jhash_mix
      Src: /src/frr/lib/jhash.c:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - uint32_t*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 161
    functionName: jhash2
    functionSourceFile: /src/frr/lib/jhash.c
    functionUses: 10
    functionsReached:
    - __jhash_mix
    - no_sanitize
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t jhash2(const uint32_t *k, uint32_t length, uint32_t initval)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/jhash.c:171,1
    - Dst: __jhash_mix
      Src: /src/frr/lib/jhash.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - a
    - b
    - c
    - initval
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 180
    functionName: jhash_3words
    functionSourceFile: /src/frr/lib/jhash.c
    functionUses: 3
    functionsReached:
    - __jhash_mix
    - no_sanitize
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t jhash_3words(uint32_t a, uint32_t b, uint32_t c, uint32_t
      initval)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_3words
      Src: /src/frr/lib/jhash.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - initval
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: jhash_2words
    functionSourceFile: /src/frr/lib/jhash.c
    functionUses: 11
    functionsReached:
    - jhash_3words
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t jhash_2words(uint32_t a, uint32_t b, uint32_t initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_3words
      Src: /src/frr/lib/jhash.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - initval
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: jhash_1word
    functionSourceFile: /src/frr/lib/jhash.c
    functionUses: 34
    functionsReached:
    - jhash_3words
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t jhash_1word(uint32_t a, uint32_t initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: malloc_usable_size
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: malloc_usable_size(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: DECLARE_MGROUP
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_MGROUP(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - mname
    - ','
    - desc
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 103
    functionName: _DEFINE_MGROUP
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DEFINE_MGROUP(mname, desc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mname
    - ','
    - desc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: DEFINE_MGROUP
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_MGROUP(mname, desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mname
    - ','
    - desc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: DEFINE_MGROUP_ACTIVEATEXIT
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_MGROUP_ACTIVEATEXIT(mname, desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: DECLARE_MTYPE
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_MTYPE(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - group
    - ','
    - mname
    - ','
    - attr
    - ','
    - desc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 139
    functionName: DEFINE_MTYPE_ATTR
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_MTYPE_ATTR(group, mname, attr, desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - group
    - ','
    - name
    - ','
    - desc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: DEFINE_MTYPE
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_MTYPE(group, name, desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - group
    - ','
    - name
    - ','
    - desc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: DEFINE_MTYPE_STATIC
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_MTYPE_STATIC(group, name, desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mtype
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 165
    functionName: XMALLOC
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 128
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XMALLOC(mtype, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mtype
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 166
    functionName: XCALLOC
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 561
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XCALLOC(mtype, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - mtype
    - ','
    - ptr
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: XREALLOC
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XREALLOC(mtype, ptr, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mtype
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: XSTRDUP
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 202
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XSTRDUP(mtype, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mtype
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: XCOUNTFREE
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XCOUNTFREE(mtype, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mtype
    - ','
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 174
    functionName: XFREE
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 915
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XFREE(mtype, ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mt
    argTypes:
    - struct memtype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: mtype_stats_alloc
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t mtype_stats_alloc(struct memtype *mt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: log_memstats_stderr
    functionSourceFile: /src/frr/lib/memory.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_memstats_stderr(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - D
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: BUFFER_DATA_FREE
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUFFER_DATA_FREE(D)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/buffer.c:57,1
    - Dst: sysconf
      Src: /src/frr/lib/buffer.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 72
    functionName: buffer_new
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 5
    functionsReached:
    - sysconf
    - XCALLOC
    linkageType: ''
    returnType: struct buffer
    signature: struct buffer *buffer_new(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_reset
      Src: /src/frr/lib/buffer.c:77,1
    - Dst: XFREE
      Src: /src/frr/lib/buffer.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: buffer_free
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 5
    functionsReached:
    - buffer_reset
    - XFREE
    linkageType: ''
    returnType: void
    signature: void buffer_free(struct buffer *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/buffer.c:91,1
    - Dst: memcpy
      Src: /src/frr/lib/buffer.c:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 100
    functionName: buffer_getstr
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 3
    functionsReached:
    - XMALLOC
    - memcpy
    linkageType: ''
    returnType: char
    signature: char *buffer_getstr(struct buffer *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BUFFER_DATA_FREE
      Src: /src/frr/lib/buffer.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 113
    functionName: buffer_reset
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 14
    functionsReached:
    - BUFFER_DATA_FREE
    linkageType: ''
    returnType: void
    signature: void buffer_reset(struct buffer *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/buffer.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 132
    functionName: buffer_add
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    linkageType: ''
    returnType: struct buffer_data
    signature: struct buffer_data *buffer_add(struct buffer *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buffer_add
      Src: /src/frr/lib/buffer.c:146,1
    - Dst: memcpy
      Src: /src/frr/lib/buffer.c:150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - b
    - p
    - size
    argTypes:
    - struct buffer*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 155
    functionName: buffer_put
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 7
    functionsReached:
    - memcpy
    - buffer_add
    linkageType: ''
    returnType: void
    signature: void buffer_put(struct buffer *b, const void *p, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_put
      Src: /src/frr/lib/buffer.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - c
    argTypes:
    - struct buffer*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: buffer_putc
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 1
    functionsReached:
    - buffer_put
    linkageType: ''
    returnType: void
    signature: void buffer_putc(struct buffer *b, uint8_t c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_put
      Src: /src/frr/lib/buffer.c:166,1
    - Dst: strlen
      Src: /src/frr/lib/buffer.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - c
    argTypes:
    - struct buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: buffer_putstr
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 3
    functionsReached:
    - buffer_put
    - strlen
    linkageType: ''
    returnType: void
    signature: void buffer_putstr(struct buffer *b, const char *c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/frr/lib/buffer.c:176,1
    - Dst: buffer_add
      Src: /src/frr/lib/buffer.c:184,1
    - Dst: memcpy
      Src: /src/frr/lib/buffer.c:190,1
    - Dst: buffer_add
      Src: /src/frr/lib/buffer.c:198,1
    - Dst: buffer_add
      Src: /src/frr/lib/buffer.c:201,1
    - Dst: memchr
      Src: /src/frr/lib/buffer.c:205,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - b
    - origp
    - origsize
    argTypes:
    - struct buffer*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 208
    functionName: buffer_put_crlf
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 1
    functionsReached:
    - buffer_add
    - memcpy
    - memchr
    linkageType: ''
    returnType: void
    signature: void buffer_put_crlf(struct buffer *b, const void *origp, size_t origsize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buffer_flush_available
      Src: /src/frr/lib/buffer.c:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - b
    - fd
    argTypes:
    - struct buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 232
    functionName: buffer_flush_all
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 4
    functionsReached:
    - buffer_flush_available
    linkageType: ''
    returnType: buffer_status_t
    signature: buffer_status_t buffer_flush_all(struct buffer *b, int fd)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/buffer.c:265,1
    - Dst: XMALLOC
      Src: /src/frr/lib/buffer.c:269,1
    - Dst: XREALLOC
      Src: /src/frr/lib/buffer.c:309,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/buffer.c:313,1
    - Dst: XMALLOC
      Src: /src/frr/lib/buffer.c:318,1
    - Dst: memcpy
      Src: /src/frr/lib/buffer.c:320,1
    - Dst: writev
      Src: /src/frr/lib/buffer.c:345,1
    - Dst: flog_err
      Src: /src/frr/lib/buffer.c:347,1
    - Dst: safe_strerror
      Src: /src/frr/lib/buffer.c:349,1
    - Dst: writev
      Src: /src/frr/lib/buffer.c:359,1
    - Dst: flog_err
      Src: /src/frr/lib/buffer.c:361,1
    - Dst: safe_strerror
      Src: /src/frr/lib/buffer.c:362,1
    - Dst: BUFFER_DATA_FREE
      Src: /src/frr/lib/buffer.c:370,1
    - Dst: XFREE
      Src: /src/frr/lib/buffer.c:374,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 77
    argCount: 6
    argNames:
    - b
    - fd
    - width
    - height
    - erase_flag
    - no_more_flag
    argTypes:
    - struct buffer*
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 378
    functionName: buffer_flush_window
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 1
    functionsReached:
    - writev
    - XMALLOC
    - flog_err
    - safe_strerror
    - array_size
    - XFREE
    - BUFFER_DATA_FREE
    - flog_err_sys
    - XREALLOC
    - memcpy
    linkageType: ''
    returnType: buffer_status_t
    signature: "buffer_status_t buffer_flush_window(struct buffer *b, int fd, int
      width,\n\t\t\t\t    int height, int erase_flag,\n\t\t\t\t    int no_more_flag)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: writev
      Src: /src/frr/lib/buffer.c:418,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/buffer.c:419,1
    - Dst: flog_err
      Src: /src/frr/lib/buffer.c:422,1
    - Dst: safe_strerror
      Src: /src/frr/lib/buffer.c:423,1
    - Dst: flog_err
      Src: /src/frr/lib/buffer.c:430,1
    - Dst: BUFFER_DATA_FREE
      Src: /src/frr/lib/buffer.c:444,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 2
    argNames:
    - b
    - fd
    argTypes:
    - struct buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 451
    functionName: buffer_flush_available
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 5
    functionsReached:
    - ERRNO_IO_RETRY
    - flog_err
    - safe_strerror
    - BUFFER_DATA_FREE
    - writev
    linkageType: ''
    returnType: buffer_status_t
    signature: buffer_status_t buffer_flush_available(struct buffer *b, int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/frr/lib/buffer.c:463,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/buffer.c:465,1
    - Dst: flog_err
      Src: /src/frr/lib/buffer.c:468,1
    - Dst: safe_strerror
      Src: /src/frr/lib/buffer.c:470,1
    - Dst: buffer_put
      Src: /src/frr/lib/buffer.c:479,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - b
    - fd
    - p
    - size
    argTypes:
    - struct buffer*
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 483
    functionName: buffer_write
    functionSourceFile: /src/frr/lib/buffer.c
    functionUses: 1
    functionsReached:
    - ERRNO_IO_RETRY
    - flog_err
    - safe_strerror
    - buffer_put
    - write
    linkageType: ''
    returnType: buffer_status_t
    signature: "buffer_status_t buffer_write(struct buffer *b, int fd, const void
      *p,\n\t\t\t     size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: IS_VARYING_TOKEN
    functionSourceFile: /src/frr/lib/command_graph.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_VARYING_TOKEN(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/frr_pthread.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: frr_pthread_init
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 5
    functionsReached:
    - list_new
    linkageType: ''
    returnType: void
    signature: void frr_pthread_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/frr_pthread.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: (&frr_pthread_list_mtx)
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - list_new
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&frr_pthread_list_mtx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_pthread_stop_all
      Src: /src/frr/lib/frr_pthread.c:52,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/frr_pthread.c:58,1
    - Dst: listnode_delete
      Src: /src/frr/lib/frr_pthread.c:59,1
    - Dst: frr_pthread_destroy_nolock
      Src: /src/frr/lib/frr_pthread.c:60,1
    - Dst: list_delete
      Src: /src/frr/lib/frr_pthread.c:63,1
    - Dst: frr_pthread_new
      Src: /src/frr/lib/frr_pthread.c:67,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_pthread.c:74,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/frr_pthread.c:76,1
    - Dst: event_master_create
      Src: /src/frr/lib/frr_pthread.c:78,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frr_pthread.c:82,1
    - Dst: strlcpy
      Src: /src/frr/lib/frr_pthread.c:84,1
    - Dst: strlcpy
      Src: /src/frr/lib/frr_pthread.c:86,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_pthread.c:88,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_pthread.c:90,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/frr_pthread.c:92,1
    - Dst: pthread_cond_init
      Src: /src/frr/lib/frr_pthread.c:93,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:95,1
    - Dst: listnode_add
      Src: /src/frr/lib/frr_pthread.c:96,1
    - Dst: frr_pthread_destroy_nolock
      Src: /src/frr/lib/frr_pthread.c:102,1
    - Dst: event_master_free
      Src: /src/frr/lib/frr_pthread.c:104,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/frr_pthread.c:105,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/frr_pthread.c:106,1
    - Dst: pthread_cond_destroy
      Src: /src/frr/lib/frr_pthread.c:107,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:108,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:109,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:110,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:111,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/lib/frr_pthread.c:114,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:116,1
    - Dst: listnode_delete
      Src: /src/frr/lib/frr_pthread.c:117,1
    - Dst: frr_pthread_destroy_nolock
      Src: /src/frr/lib/frr_pthread.c:120,1
    - Dst: frr_pthread_set_name
      Src: /src/frr/lib/frr_pthread.c:123,1
    - Dst: pthread_setname_np
      Src: /src/frr/lib/frr_pthread.c:129,1
    - Dst: pthread_setname_np
      Src: /src/frr/lib/frr_pthread.c:131,1
    - Dst: pthread_set_name_np
      Src: /src/frr/lib/frr_pthread.c:134,1
    - Dst: rcu_thread_start
      Src: /src/frr/lib/frr_pthread.c:144,1
    - Dst: struct frr_pthread*::attr::start
      Src: /src/frr/lib/frr_pthread.c:145,1
    - Dst: assert
      Src: /src/frr/lib/frr_pthread.c:153,1
    - Dst: sigfillset
      Src: /src/frr/lib/frr_pthread.c:158,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/frr_pthread.c:159,1
    - Dst: frrtrace
      Src: /src/frr/lib/frr_pthread.c:161,1
    - Dst: rcu_thread_prepare
      Src: /src/frr/lib/frr_pthread.c:163,1
    - Dst: pthread_create
      Src: /src/frr/lib/frr_pthread.c:164,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/frr_pthread.c:167,1
    - Dst: rcu_thread_unprepare
      Src: /src/frr/lib/frr_pthread.c:174,1
    - Dst: memset
      Src: /src/frr/lib/frr_pthread.c:175,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:183,1
    - Dst: pthread_cond_wait
      Src: /src/frr/lib/frr_pthread.c:185,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:192,1
    - Dst: pthread_cond_signal
      Src: /src/frr/lib/frr_pthread.c:194,1
    - Dst: frrtrace
      Src: /src/frr/lib/frr_pthread.c:200,1
    - Dst: memset
      Src: /src/frr/lib/frr_pthread.c:203,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/frr_pthread.c:212,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/frr_pthread.c:213,1
    - Dst: frr_pthread_stop
      Src: /src/frr/lib/frr_pthread.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (frr_is_after_fork || !"trying to start thread before fork()")
      pos:
        line_end: 152
        line_start: 152
        source_file: /src/frr/lib/frr_pthread.c
    constantsTouched: []
    func_position:
      end: 218
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 218
    functionName: frr_pthread_finish
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - list_delete
    - listnode_add
    - pthread_mutex_init
    - event_master_free
    - frrtrace
    - frr_pthread_destroy
    - pthread_cond_wait
    - pthread_cond_init
    - frr_with_mutex
    - struct frr_pthread*::attr::start
    - XCALLOC
    - memset
    - frr_pthread_destroy_nolock
    - ALL_LIST_ELEMENTS_RO
    - sigfillset
    - atomic_load_explicit
    - pthread_cond_destroy
    - frr_pthread_stop_all
    - frr_pthread_new
    - pthread_set_name_np
    - assert
    - strlcpy
    - rcu_thread_prepare
    - event_master_create
    - pthread_sigmask
    - rcu_thread_unprepare
    - frr_pthread_stop
    - XFREE
    - listnode_delete
    - XSTRDUP
    - pthread_cond_signal
    - pthread_create
    - pthread_setname_np
    - frr_pthread_set_name
    - ALL_LIST_ELEMENTS
    - pthread_mutex_destroy
    - rcu_thread_start
    linkageType: ''
    returnType: void
    signature: void frr_pthread_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/frr_pthread.c:58,1
    - Dst: listnode_delete
      Src: /src/frr/lib/frr_pthread.c:59,1
    - Dst: frr_pthread_destroy_nolock
      Src: /src/frr/lib/frr_pthread.c:60,1
    - Dst: list_delete
      Src: /src/frr/lib/frr_pthread.c:63,1
    - Dst: frr_pthread_new
      Src: /src/frr/lib/frr_pthread.c:67,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_pthread.c:74,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/frr_pthread.c:76,1
    - Dst: event_master_create
      Src: /src/frr/lib/frr_pthread.c:78,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frr_pthread.c:82,1
    - Dst: strlcpy
      Src: /src/frr/lib/frr_pthread.c:84,1
    - Dst: strlcpy
      Src: /src/frr/lib/frr_pthread.c:86,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_pthread.c:88,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frr_pthread.c:90,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/frr_pthread.c:92,1
    - Dst: pthread_cond_init
      Src: /src/frr/lib/frr_pthread.c:93,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:95,1
    - Dst: listnode_add
      Src: /src/frr/lib/frr_pthread.c:96,1
    - Dst: frr_pthread_destroy_nolock
      Src: /src/frr/lib/frr_pthread.c:102,1
    - Dst: event_master_free
      Src: /src/frr/lib/frr_pthread.c:104,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/frr_pthread.c:105,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/frr_pthread.c:106,1
    - Dst: pthread_cond_destroy
      Src: /src/frr/lib/frr_pthread.c:107,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:108,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:109,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:110,1
    - Dst: XFREE
      Src: /src/frr/lib/frr_pthread.c:111,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/lib/frr_pthread.c:114,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:116,1
    - Dst: listnode_delete
      Src: /src/frr/lib/frr_pthread.c:117,1
    - Dst: frr_pthread_destroy_nolock
      Src: /src/frr/lib/frr_pthread.c:120,1
    - Dst: frr_pthread_set_name
      Src: /src/frr/lib/frr_pthread.c:123,1
    - Dst: pthread_setname_np
      Src: /src/frr/lib/frr_pthread.c:129,1
    - Dst: pthread_setname_np
      Src: /src/frr/lib/frr_pthread.c:131,1
    - Dst: pthread_set_name_np
      Src: /src/frr/lib/frr_pthread.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 138
    functionName: (&frr_pthread_list_mtx)
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - list_delete
    - listnode_add
    - pthread_mutex_init
    - event_master_free
    - frr_pthread_destroy
    - pthread_cond_init
    - frr_with_mutex
    - XCALLOC
    - frr_pthread_destroy_nolock
    - pthread_cond_destroy
    - frr_pthread_new
    - pthread_set_name_np
    - strlcpy
    - event_master_create
    - XFREE
    - listnode_delete
    - XSTRDUP
    - pthread_setname_np
    - frr_pthread_set_name
    - ALL_LIST_ELEMENTS
    - pthread_mutex_destroy
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&frr_pthread_list_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rcu_thread_start
      Src: /src/frr/lib/frr_pthread.c:144,1
    - Dst: struct frr_pthread*::attr::start
      Src: /src/frr/lib/frr_pthread.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 146
    functionName: frr_pthread_inner
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - struct frr_pthread*::attr::start
    - rcu_thread_start
    linkageType: ''
    returnType: void
    signature: void *frr_pthread_inner(void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/frr_pthread.c:153,1
    - Dst: sigfillset
      Src: /src/frr/lib/frr_pthread.c:158,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/frr_pthread.c:159,1
    - Dst: frrtrace
      Src: /src/frr/lib/frr_pthread.c:161,1
    - Dst: rcu_thread_prepare
      Src: /src/frr/lib/frr_pthread.c:163,1
    - Dst: pthread_create
      Src: /src/frr/lib/frr_pthread.c:164,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/frr_pthread.c:167,1
    - Dst: rcu_thread_unprepare
      Src: /src/frr/lib/frr_pthread.c:174,1
    - Dst: memset
      Src: /src/frr/lib/frr_pthread.c:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - fpt
    - attr
    argTypes:
    - struct frr_pthread*
    - pthread_attr_t*
    assertStmts:
    - condition: (frr_is_after_fork || !"trying to start thread before fork()")
      pos:
        line_end: 152
        line_start: 152
        source_file: /src/frr/lib/frr_pthread.c
    constantsTouched: []
    func_position:
      end: 179
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 179
    functionName: frr_pthread_run
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 12
    functionsReached:
    - memset
    - pthread_create
    - rcu_thread_prepare
    - sigfillset
    - pthread_sigmask
    - rcu_thread_unprepare
    - frrtrace
    - assert
    linkageType: ''
    returnType: int
    signature: int frr_pthread_run(struct frr_pthread *fpt, const pthread_attr_t *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:183,1
    - Dst: pthread_cond_wait
      Src: /src/frr/lib/frr_pthread.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fpt
    argTypes:
    - struct frr_pthread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 188
    functionName: frr_pthread_wait_running
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 4
    functionsReached:
    - frr_with_mutex
    - pthread_cond_wait
    linkageType: ''
    returnType: void
    signature: void frr_pthread_wait_running(struct frr_pthread *fpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/frr_pthread.c:192,1
    - Dst: pthread_cond_signal
      Src: /src/frr/lib/frr_pthread.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fpt
    argTypes:
    - struct frr_pthread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: frr_pthread_notify_running
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 2
    functionsReached:
    - frr_with_mutex
    - pthread_cond_signal
    linkageType: ''
    returnType: void
    signature: void frr_pthread_notify_running(struct frr_pthread *fpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/frr_pthread.c:200,1
    - Dst: memset
      Src: /src/frr/lib/frr_pthread.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fpt
    - result
    argTypes:
    - struct frr_pthread*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 205
    functionName: frr_pthread_stop
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 7
    functionsReached:
    - memset
    - frrtrace
    linkageType: ''
    returnType: int
    signature: int frr_pthread_stop(struct frr_pthread *fpt, void **result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/frr_pthread.c:212,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/frr_pthread.c:213,1
    - Dst: frr_pthread_stop
      Src: /src/frr/lib/frr_pthread.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 217
    functionName: frr_pthread_stop_all
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 6
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - atomic_load_explicit
    - frr_pthread_stop
    linkageType: ''
    returnType: void
    signature: void frr_pthread_stop_all(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/frr_pthread.c:212,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/frr_pthread.c:213,1
    - Dst: frr_pthread_stop
      Src: /src/frr/lib/frr_pthread.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 216
    functionName: (&frr_pthread_list_mtx)
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - atomic_load_explicit
    - frr_pthread_stop
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&frr_pthread_list_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 229
    functionName: fpt_dummy
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fpt_dummy(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/frr_pthread.c:234,1
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/frr_pthread.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 237
    functionName: fpt_finish
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - atomic_store_explicit
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void fpt_finish(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/lib/frr_pthread.c:242,1
    - Dst: pthread_join
      Src: /src/frr/lib/frr_pthread.c:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fpt
    - res
    argTypes:
    - struct frr_pthread*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 246
    functionName: fpt_halt
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - pthread_join
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int fpt_halt(struct frr_pthread *fpt, void **res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/frr/lib/frr_pthread.c:278,1
    - Dst: zlog_tls_buffer_init
      Src: /src/frr/lib/frr_pthread.c:280,1
    - Dst: pipe
      Src: /src/frr/lib/frr_pthread.c:283,1
    - Dst: event_add_read
      Src: /src/frr/lib/frr_pthread.c:284,1
    - Dst: frr_pthread_set_name
      Src: /src/frr/lib/frr_pthread.c:288,1
    - Dst: frr_pthread_notify_running
      Src: /src/frr/lib/frr_pthread.c:290,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/frr_pthread.c:293,1
    - Dst: pthread_testcancel
      Src: /src/frr/lib/frr_pthread.c:294,1
    - Dst: event_fetch
      Src: /src/frr/lib/frr_pthread.c:295,1
    - Dst: event_call
      Src: /src/frr/lib/frr_pthread.c:296,1
    - Dst: close
      Src: /src/frr/lib/frr_pthread.c:300,1
    - Dst: close
      Src: /src/frr/lib/frr_pthread.c:301,1
    - Dst: zlog_tls_buffer_fini
      Src: /src/frr/lib/frr_pthread.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 306
    functionName: fpt_run
    functionSourceFile: /src/frr/lib/frr_pthread.c
    functionUses: 0
    functionsReached:
    - zlog_tls_buffer_fini
    - frr_pthread_notify_running
    - pthread_self
    - frr_pthread_set_name
    - close
    - pipe
    - zlog_tls_buffer_init
    - atomic_load_explicit
    - pthread_testcancel
    - event_add_read
    - event_fetch
    - event_call
    linkageType: ''
    returnType: void
    signature: void *fpt_run(void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/frr/lib/pid_output.c:25,1
    - Dst: umask
      Src: /src/frr/lib/pid_output.c:27,1
    - Dst: open
      Src: /src/frr/lib/pid_output.c:28,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/pid_output.c:30,1
    - Dst: safe_strerror
      Src: /src/frr/lib/pid_output.c:32,1
    - Dst: umask
      Src: /src/frr/lib/pid_output.c:33,1
    - Dst: exit
      Src: /src/frr/lib/pid_output.c:34,1
    - Dst: umask
      Src: /src/frr/lib/pid_output.c:38,1
    - Dst: memset
      Src: /src/frr/lib/pid_output.c:39,1
    - Dst: set_cloexec
      Src: /src/frr/lib/pid_output.c:41,1
    - Dst: fcntl
      Src: /src/frr/lib/pid_output.c:46,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/pid_output.c:47,1
    - Dst: safe_strerror
      Src: /src/frr/lib/pid_output.c:49,1
    - Dst: exit
      Src: /src/frr/lib/pid_output.c:50,1
    - Dst: snprintf
      Src: /src/frr/lib/pid_output.c:53,1
    - Dst: strlen
      Src: /src/frr/lib/pid_output.c:54,1
    - Dst: write
      Src: /src/frr/lib/pid_output.c:55,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/pid_output.c:56,1
    - Dst: safe_strerror
      Src: /src/frr/lib/pid_output.c:59,1
    - Dst: ftruncate
      Src: /src/frr/lib/pid_output.c:60,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/pid_output.c:61,1
    - Dst: safe_strerror
      Src: /src/frr/lib/pid_output.c:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 68
    functionName: pid_output
    functionSourceFile: /src/frr/lib/pid_output.c
    functionUses: 0
    functionsReached:
    - exit
    - strlen
    - open
    - memset
    - set_cloexec
    - snprintf
    - getpid
    - safe_strerror
    - umask
    - ftruncate
    - flog_err_sys
    - fcntl
    - write
    linkageType: ''
    returnType: pid_t
    signature: pid_t pid_output(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: bf_init
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_init(v, N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: bf_assign_index
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_assign_index(v, id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: bf_assign_zero_index
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_assign_zero_index(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: bf_release_index
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_release_index(v, id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: bf_test_index
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_test_index(v, id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: bf_is_inited
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_is_inited(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v1
    - ','
    - v2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: bf_cmp
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_cmp(v1, v2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: bf_release_zero_index
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_release_zero_index(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: bf_index
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_index(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: bf_offset
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_offset(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: bf_set_bit
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_set_bit(v, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 146
    functionName: bf_find_bit
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_find_bit(v, b)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bf_index
      Src: /src/frr/lib/bitfield.h:162,1
    - Dst: bf_index
      Src: /src/frr/lib/bitfield.h:165,1
    - Dst: realloc
      Src: /src/frr/lib/bitfield.h:191,1
    - Dst: bf_index
      Src: /src/frr/lib/bitfield.h:201,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 3
    argNames:
    - v
    - start_index
    - max_index
    argTypes:
    - bitfield_t*
    - word_t
    - word_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 214
    functionName: bf_find_next_clear_bit_wrap
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 1
    functionsReached:
    - bf_index
    - realloc
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bf_find_next_clear_bit_wrap(bitfield_t *v, word_t start_index,
      word_t max_index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bf_index
      Src: /src/frr/lib/bitfield.h:224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - v
    - start_index
    argTypes:
    - bitfield_t
    - word_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 239
    functionName: bf_find_next_set_bit
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 0
    functionsReached:
    - bf_index
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int bf_find_next_set_bit(bitfield_t v,\n\t\tword_t start_index)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - v
    - ','
    - b
    - ','
    - max
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 246
    functionName: bf_for_each_set_bit
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_for_each_set_bit(v, b, max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 256
    functionName: bf_free
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bf_free(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/bitfield.h:261,1
    - Dst: bf_is_inited
      Src: /src/frr/lib/bitfield.h:261,1
    - Dst: bf_init
      Src: /src/frr/lib/bitfield.h:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - src
    argTypes:
    - bitfield_t
    assertStmts:
    - condition: (bf_is_inited(src))
      pos:
        line_end: 260
        line_start: 260
        source_file: /src/frr/lib/bitfield.h
    constantsTouched: []
    func_position:
      end: 267
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 267
    functionName: bf_copy
    functionSourceFile: /src/frr/lib/bitfield.h
    functionUses: 0
    functionsReached:
    - bf_init
    - assert
    - bf_is_inited
    linkageType: ''
    returnType: bitfield_t
    signature: bitfield_t bf_copy(bitfield_t src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcat
      Src: /src/frr/lib/libfrr.c:91,1
    - Dst: strlcat
      Src: /src/frr/lib/libfrr.c:92,1
    - Dst: memcpy
      Src: /src/frr/lib/libfrr.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - os
    argTypes:
    - struct optspec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 95
    functionName: opt_extend
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - strlcat
    - memcpy
    linkageType: ''
    returnType: void
    signature: void opt_extend(const struct optspec *os)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/libfrr.c:207,1
    - Dst: strncmp
      Src: /src/frr/lib/libfrr.c:212,1
    - Dst: strlen
      Src: /src/frr/lib/libfrr.c:212,1
    - Dst: strlen
      Src: /src/frr/lib/libfrr.c:220,1
    - Dst: strtoul
      Src: /src/frr/lib/libfrr.c:240,1
    - Dst: htons
      Src: /src/frr/lib/libfrr.c:252,1
    - Dst: htonl
      Src: /src/frr/lib/libfrr.c:253,1
    - Dst: htons
      Src: /src/frr/lib/libfrr.c:261,1
    - Dst: inet_pton
      Src: /src/frr/lib/libfrr.c:262,1
    - Dst: memset
      Src: /src/frr/lib/libfrr.c:281,1
    - Dst: strlcpy
      Src: /src/frr/lib/libfrr.c:289,1
    - Dst: SUN_LEN
      Src: /src/frr/lib/libfrr.c:291,1
    - Dst: strlen
      Src: /src/frr/lib/libfrr.c:293,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 3
    argNames:
    - sa
    - sa_len
    - path
    argTypes:
    - struct sockaddr_storage*
    - socklen_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 312
    functionName: frr_zclient_addr
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 2
    functionsReached:
    - strlen
    - strtoul
    - memset
    - htons
    - strlcpy
    - SUN_LEN
    - strncmp
    - inet_pton
    - htonl
    linkageType: ''
    returnType: bool
    signature: "bool frr_zclient_addr(struct sockaddr_storage *sa, socklen_t *sa_len,\n\t\t
      \     const char *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: frr_init_vtydir
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void frr_init_vtydir(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/frr/lib/libfrr.c:327,1
    - Dst: umask
      Src: /src/frr/lib/libfrr.c:330,1
    - Dst: log_args_init
      Src: /src/frr/lib/libfrr.c:332,1
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:334,1
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:336,1
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:338,1
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:340,1
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:342,1
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:344,1
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:346,1
    - Dst: frr_init_vtydir
      Src: /src/frr/lib/libfrr.c:350,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:351,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:353,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:355,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:358,1
    - Dst: strlcpy
      Src: /src/frr/lib/libfrr.c:362,1
    - Dst: strlcpy
      Src: /src/frr/lib/libfrr.c:363,1
    - Dst: fstat
      Src: /src/frr/lib/libfrr.c:376,1
    - Dst: S_ISDIR
      Src: /src/frr/lib/libfrr.c:378,1
    - Dst: S_ISBLK
      Src: /src/frr/lib/libfrr.c:378,1
    - Dst: UINT64_C
      Src: /src/frr/lib/libfrr.c:381,1
    - Dst: systemd_init_env
      Src: /src/frr/lib/libfrr.c:387,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 3
    argNames:
    - daemon
    - argc
    - argv
    argTypes:
    - struct frr_daemon_info*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 388
    functionName: frr_preinit
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 14
    functionsReached:
    - frr_init_vtydir
    - log_args_init
    - S_ISBLK
    - snprintf
    - fstat
    - systemd_init_env
    - strlcpy
    - strrchr
    - S_ISDIR
    - UINT64_C
    - umask
    - opt_extend
    linkageType: ''
    returnType: void
    signature: void frr_preinit(struct frr_daemon_info *daemon, int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UINT64_C
      Src: /src/frr/lib/libfrr.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: frr_is_startup_fd
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - UINT64_C
    linkageType: ''
    returnType: bool
    signature: bool frr_is_startup_fd(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opt_extend
      Src: /src/frr/lib/libfrr.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - optstr
    - longopts
    - helpstr
    argTypes:
    - char*
    - struct option*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 400
    functionName: frr_opt_add
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 11
    functionsReached:
    - opt_extend
    linkageType: ''
    returnType: void
    signature: "void frr_opt_add(const char *optstr, const struct option *longopts,\n\t\t
      const char *helpstr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:407,1
    - Dst: printhelp
      Src: /src/frr/lib/libfrr.c:410,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:412,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:415,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 417
    functionName: frr_help_exit
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 12
    functionsReached:
    - fprintf
    - exit
    - printhelp
    linkageType: ''
    returnType: void
    signature: void frr_help_exit(int status)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: frr_help_exit
      Src: /src/frr/lib/libfrr.c:438,1
    - Dst: print_version
      Src: /src/frr/lib/libfrr.c:440,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:441,1
    - Dst: XMALLOC
      Src: /src/frr/lib/libfrr.c:447,1
    - Dst: frr_defaults_profile_valid
      Src: /src/frr/lib/libfrr.c:454,1
    - Dst: strcmp
      Src: /src/frr/lib/libfrr.c:458,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:461,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:465,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:467,1
    - Dst: strcmp
      Src: /src/frr/lib/libfrr.c:468,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:472,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:473,1
    - Dst: frr_defaults_profile_set
      Src: /src/frr/lib/libfrr.c:477,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:491,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:497,1
    - Dst: strchr
      Src: /src/frr/lib/libfrr.c:500,1
    - Dst: strchr
      Src: /src/frr/lib/libfrr.c:500,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:501,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:509,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:511,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:513,1
    - Dst: vrf_set_default_name
      Src: /src/frr/lib/libfrr.c:517,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:539,1
    - Dst: strlcpy
      Src: /src/frr/lib/libfrr.c:543,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:549,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:561,1
    - Dst: strtoul
      Src: /src/frr/lib/libfrr.c:567,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:569,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:578,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:587,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:596,1
    - Dst: strlen
      Src: /src/frr/lib/libfrr.c:616,1
    - Dst: XCALLOC
      Src: /src/frr/lib/libfrr.c:617,1
    - Dst: memcpy
      Src: /src/frr/lib/libfrr.c:618,1
    - Dst: log_args_add_tail
      Src: /src/frr/lib/libfrr.c:619,1
    - Dst: strtoul
      Src: /src/frr/lib/libfrr.c:628,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 172
    argCount: 1
    argNames:
    - opt
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 634
    functionName: frr_opt
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - frr_defaults_profile_set
    - frr_help_exit
    - exit
    - strtoul
    - strlen
    - print_version
    - snprintf
    - XCALLOC
    - strlcpy
    - strcmp
    - XMALLOC
    - fprintf
    - strchr
    - vrf_set_default_name
    - log_args_add_tail
    - frr_defaults_profile_valid
    - memcpy
    linkageType: ''
    returnType: int
    signature: int frr_opt(int opt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/frr/lib/libfrr.c:644,1
    - Dst: frr_opt
      Src: /src/frr/lib/libfrr.c:645,1
    - Dst: frr_help_exit
      Src: /src/frr/lib/libfrr.c:650,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - argc
    - argv
    - longindex
    argTypes:
    - int
    - char*[]
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 636
    functionDepth: 3
    functionLinenumber: 636
    functionLinenumberEnd: 654
    functionName: frr_getopt
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 11
    functionsReached:
    - frr_help_exit
    - getopt_long
    - frr_opt
    linkageType: ''
    returnType: int
    signature: int frr_getopt(int argc, char *const argv[], int *longindex)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/frr/lib/libfrr.c:664,1
    - Dst: memcpy
      Src: /src/frr/lib/libfrr.c:671,1
    - Dst: umask
      Src: /src/frr/lib/libfrr.c:679,1
    - Dst: mkdir
      Src: /src/frr/lib/libfrr.c:680,1
    - Dst: umask
      Src: /src/frr/lib/libfrr.c:681,1
    - Dst: flog_err
      Src: /src/frr/lib/libfrr.c:690,1
    - Dst: strerror
      Src: /src/frr/lib/libfrr.c:691,1
    - Dst: zprivs_get_ids
      Src: /src/frr/lib/libfrr.c:695,1
    - Dst: chown
      Src: /src/frr/lib/libfrr.c:696,1
    - Dst: flog_err
      Src: /src/frr/lib/libfrr.c:697,1
    - Dst: strerror
      Src: /src/frr/lib/libfrr.c:698,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - path
    - strip
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 699
    functionName: frr_mkdir
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - zprivs_get_ids
    - chown
    - mkdir
    - strerror
    - strrchr
    - flog_err
    - umask
    - memcpy
    linkageType: ''
    returnType: void
    signature: void frr_mkdir(const char *path, bool strip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cookie
    - errstr
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 706
    functionName: _err_print
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void _err_print(const void *cookie, const char *errstr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: srandom
      Src: /src/frr/lib/libfrr.c:720,1
    - Dst: time
      Src: /src/frr/lib/libfrr.c:720,1
    - Dst: frr_defaults_apply
      Src: /src/frr/lib/libfrr.c:721,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:724,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:726,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:729,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:732,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:734,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:737,1
    - Dst: zprivs_preinit
      Src: /src/frr/lib/libfrr.c:741,1
    - Dst: zprivs_get_ids
      Src: /src/frr/lib/libfrr.c:742,1
    - Dst: zlog_init
      Src: /src/frr/lib/libfrr.c:744,1
    - Dst: log_args_pop
      Src: /src/frr/lib/libfrr.c:747,1
    - Dst: command_setup_early_logging
      Src: /src/frr/lib/libfrr.c:748,1
    - Dst: strcmp
      Src: /src/frr/lib/libfrr.c:753,1
    - Dst: XFREE
      Src: /src/frr/lib/libfrr.c:755,1
    - Dst: frr_zclient_addr
      Src: /src/frr/lib/libfrr.c:758,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:760,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:762,1
    - Dst: frr_mkdir
      Src: /src/frr/lib/libfrr.c:768,1
    - Dst: frr_mkdir
      Src: /src/frr/lib/libfrr.c:770,1
    - Dst: frr_mkdir
      Src: /src/frr/lib/libfrr.c:772,1
    - Dst: frrmod_init
      Src: /src/frr/lib/libfrr.c:775,1
    - Dst: frrmod_load
      Src: /src/frr/lib/libfrr.c:778,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:780,1
    - Dst: XFREE
      Src: /src/frr/lib/libfrr.c:781,1
    - Dst: zprivs_init
      Src: /src/frr/lib/libfrr.c:784,1
    - Dst: event_master_create
      Src: /src/frr/lib/libfrr.c:786,1
    - Dst: signal_init
      Src: /src/frr/lib/libfrr.c:787,1
    - Dst: hook_call
      Src: /src/frr/lib/libfrr.c:788,1
    - Dst: db_init
      Src: /src/frr/lib/libfrr.c:793,1
    - Dst: cmd_init
      Src: /src/frr/lib/libfrr.c:797,1
    - Dst: cmd_init
      Src: /src/frr/lib/libfrr.c:799,1
    - Dst: vty_init
      Src: /src/frr/lib/libfrr.c:801,1
    - Dst: lib_cmd_init
      Src: /src/frr/lib/libfrr.c:802,1
    - Dst: frr_pthread_init
      Src: /src/frr/lib/libfrr.c:804,1
    - Dst: frrscript_init
      Src: /src/frr/lib/libfrr.c:806,1
    - Dst: log_ref_init
      Src: /src/frr/lib/libfrr.c:809,1
    - Dst: log_ref_vty_init
      Src: /src/frr/lib/libfrr.c:810,1
    - Dst: lib_error_init
      Src: /src/frr/lib/libfrr.c:811,1
    - Dst: nb_init
      Src: /src/frr/lib/libfrr.c:813,1
    - Dst: nb_db_init
      Src: /src/frr/lib/libfrr.c:814,1
    - Dst: flog_warn
      Src: /src/frr/lib/libfrr.c:815,1
    - Dst: debug_init_cli
      Src: /src/frr/lib/libfrr.c:819,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 709
    functionDepth: 4
    functionLinenumber: 709
    functionLinenumberEnd: 822
    functionName: frr_init
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 11
    functionsReached:
    - lib_cmd_init
    - nb_db_init
    - command_setup_early_logging
    - time
    - frrmod_init
    - signal_init
    - lib_error_init
    - zprivs_get_ids
    - exit
    - flog_warn
    - snprintf
    - hook_call
    - frrscript_init
    - cmd_init
    - fprintf
    - frr_defaults_apply
    - frr_pthread_init
    - srandom
    - db_init
    - zprivs_init
    - frrmod_load
    - log_ref_vty_init
    - event_master_create
    - nb_init
    - vty_init
    - XFREE
    - zlog_init
    - debug_init_cli
    - log_args_pop
    - strcmp
    - frr_zclient_addr
    - zprivs_preinit
    - log_ref_init
    - frr_mkdir
    linkageType: ''
    returnType: struct event_loop
    signature: struct event_loop *frr_init(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:838,1
    - Dst: zprivs_preinit
      Src: /src/frr/lib/libfrr.c:844,1
    - Dst: zprivs_get_ids
      Src: /src/frr/lib/libfrr.c:845,1
    - Dst: zlog_init
      Src: /src/frr/lib/libfrr.c:847,1
    - Dst: zlog_tls_buffer_init
      Src: /src/frr/lib/libfrr.c:849,1
    - Dst: log_args_pop
      Src: /src/frr/lib/libfrr.c:851,1
    - Dst: command_setup_early_logging
      Src: /src/frr/lib/libfrr.c:852,1
    - Dst: strcmp
      Src: /src/frr/lib/libfrr.c:857,1
    - Dst: XFREE
      Src: /src/frr/lib/libfrr.c:859,1
    - Dst: frr_zclient_addr
      Src: /src/frr/lib/libfrr.c:863,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:865,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:867,1
    - Dst: frr_mkdir
      Src: /src/frr/lib/libfrr.c:873,1
    - Dst: frr_mkdir
      Src: /src/frr/lib/libfrr.c:875,1
    - Dst: frr_mkdir
      Src: /src/frr/lib/libfrr.c:877,1
    - Dst: frrmod_init
      Src: /src/frr/lib/libfrr.c:882,1
    - Dst: frrmod_load
      Src: /src/frr/lib/libfrr.c:885,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:887,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:888,1
    - Dst: XFREE
      Src: /src/frr/lib/libfrr.c:890,1
    - Dst: zprivs_init
      Src: /src/frr/lib/libfrr.c:895,1
    - Dst: event_master_create
      Src: /src/frr/lib/libfrr.c:896,1
    - Dst: signal_init
      Src: /src/frr/lib/libfrr.c:901,1
    - Dst: db_init
      Src: /src/frr/lib/libfrr.c:908,1
    - Dst: cmd_init
      Src: /src/frr/lib/libfrr.c:913,1
    - Dst: cmd_init
      Src: /src/frr/lib/libfrr.c:915,1
    - Dst: vty_init
      Src: /src/frr/lib/libfrr.c:917,1
    - Dst: log_filter_cmd_init
      Src: /src/frr/lib/libfrr.c:920,1
    - Dst: frr_pthread_init
      Src: /src/frr/lib/libfrr.c:924,1
    - Dst: log_ref_init
      Src: /src/frr/lib/libfrr.c:927,1
    - Dst: log_ref_vty_init
      Src: /src/frr/lib/libfrr.c:929,1
    - Dst: lib_error_init
      Src: /src/frr/lib/libfrr.c:931,1
    - Dst: yang_init
      Src: /src/frr/lib/libfrr.c:934,1
    - Dst: debug_init_cli
      Src: /src/frr/lib/libfrr.c:936,1
    - Dst: nb_init
      Src: /src/frr/lib/libfrr.c:938,1
    - Dst: nb_db_init
      Src: /src/frr/lib/libfrr.c:939,1
    - Dst: flog_warn
      Src: /src/frr/lib/libfrr.c:940,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 946
    functionName: frr_init_fast
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 3
    functionsReached:
    - nb_db_init
    - command_setup_early_logging
    - frrmod_init
    - signal_init
    - lib_error_init
    - zprivs_get_ids
    - exit
    - flog_warn
    - snprintf
    - cmd_init
    - fprintf
    - frr_pthread_init
    - db_init
    - zprivs_init
    - frrmod_load
    - log_ref_vty_init
    - event_master_create
    - zlog_tls_buffer_init
    - nb_init
    - vty_init
    - XFREE
    - log_filter_cmd_init
    - zlog_init
    - debug_init_cli
    - yang_init
    - log_args_pop
    - strcmp
    - frr_zclient_addr
    - zprivs_preinit
    - log_ref_init
    - frr_mkdir
    linkageType: ''
    returnType: struct event_loop
    signature: struct event_loop *frr_init_fast(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 952
    functionName: frr_get_progname
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *frr_get_progname(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 957
    functionName: frr_get_cli_mode
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: enum frr_cli_mode
    signature: enum frr_cli_mode frr_get_cli_mode(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 959
    functionDepth: 0
    functionLinenumber: 959
    functionLinenumberEnd: 962
    functionName: frr_get_fd_limit
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t frr_get_fd_limit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - signum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 970
    functionName: rcv_signal
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rcv_signal(int signum)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/frr/lib/libfrr.c:980,1
    - Dst: sigaddset
      Src: /src/frr/lib/libfrr.c:981,1
    - Dst: sigaddset
      Src: /src/frr/lib/libfrr.c:982,1
    - Dst: sigaddset
      Src: /src/frr/lib/libfrr.c:983,1
    - Dst: sigprocmask
      Src: /src/frr/lib/libfrr.c:984,1
    - Dst: sigemptyset
      Src: /src/frr/lib/libfrr.c:989,1
    - Dst: sigaction
      Src: /src/frr/lib/libfrr.c:990,1
    - Dst: sigaction
      Src: /src/frr/lib/libfrr.c:991,1
    - Dst: sigaction
      Src: /src/frr/lib/libfrr.c:992,1
    - Dst: ppoll
      Src: /src/frr/lib/libfrr.c:1004,1
    - Dst: pollts
      Src: /src/frr/lib/libfrr.c:1006,1
    - Dst: sigprocmask
      Src: /src/frr/lib/libfrr.c:1010,1
    - Dst: poll
      Src: /src/frr/lib/libfrr.c:1011,1
    - Dst: sigprocmask
      Src: /src/frr/lib/libfrr.c:1012,1
    - Dst: perror
      Src: /src/frr/lib/libfrr.c:1015,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:1016,1
    - Dst: send
      Src: /src/frr/lib/libfrr.c:1020,1
    - Dst: recv
      Src: /src/frr/lib/libfrr.c:1022,1
    - Dst: raise
      Src: /src/frr/lib/libfrr.c:1026,1
    - Dst: sigaction
      Src: /src/frr/lib/libfrr.c:1027,1
    - Dst: send
      Src: /src/frr/lib/libfrr.c:1028,1
    - Dst: send
      Src: /src/frr/lib/libfrr.c:1031,1
    - Dst: send
      Src: /src/frr/lib/libfrr.c:1034,1
    - Dst: waitpid
      Src: /src/frr/lib/libfrr.c:1039,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:1042,1
    - Dst: WIFEXITED
      Src: /src/frr/lib/libfrr.c:1045,1
    - Dst: WEXITSTATUS
      Src: /src/frr/lib/libfrr.c:1045,1
    - Dst: WIFEXITED
      Src: /src/frr/lib/libfrr.c:1048,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:1049,1
    - Dst: WEXITSTATUS
      Src: /src/frr/lib/libfrr.c:1050,1
    - Dst: WIFSIGNALED
      Src: /src/frr/lib/libfrr.c:1051,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:1052,1
    - Dst: WTERMSIG
      Src: /src/frr/lib/libfrr.c:1053,1
    - Dst: fprintf
      Src: /src/frr/lib/libfrr.c:1055,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:1057,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 1058
    functionName: frr_daemon_wait
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - exit
    - poll
    - perror
    - pollts
    - sigprocmask
    - recv
    - ppoll
    - sigaddset
    - waitpid
    - WEXITSTATUS
    - WIFEXITED
    - sigaction
    - fprintf
    - raise
    - sigemptyset
    - send
    - WTERMSIG
    - WIFSIGNALED
    linkageType: ''
    returnType: void
    signature: void frr_daemon_wait(int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: socketpair
      Src: /src/frr/lib/libfrr.c:1067,1
    - Dst: perror
      Src: /src/frr/lib/libfrr.c:1068,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:1069,1
    - Dst: set_cloexec
      Src: /src/frr/lib/libfrr.c:1071,1
    - Dst: set_cloexec
      Src: /src/frr/lib/libfrr.c:1072,1
    - Dst: fork
      Src: /src/frr/lib/libfrr.c:1074,1
    - Dst: perror
      Src: /src/frr/lib/libfrr.c:1076,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:1077,1
    - Dst: close
      Src: /src/frr/lib/libfrr.c:1081,1
    - Dst: setsid
      Src: /src/frr/lib/libfrr.c:1082,1
    - Dst: perror
      Src: /src/frr/lib/libfrr.c:1083,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:1084,1
    - Dst: close
      Src: /src/frr/lib/libfrr.c:1091,1
    - Dst: nb_terminate
      Src: /src/frr/lib/libfrr.c:1092,1
    - Dst: yang_terminate
      Src: /src/frr/lib/libfrr.c:1093,1
    - Dst: frr_daemon_wait
      Src: /src/frr/lib/libfrr.c:1094,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1062
    functionDepth: 1
    functionLinenumber: 1062
    functionLinenumberEnd: 1095
    functionName: frr_daemonize
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - exit
    - setsid
    - perror
    - set_cloexec
    - close
    - socketpair
    - nb_terminate
    - frr_daemon_wait
    - yang_terminate
    - fork
    linkageType: ''
    returnType: void
    signature: void frr_daemonize(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/lib/libfrr.c:1108,1
    - Dst: vty_read_config
      Src: /src/frr/lib/libfrr.c:1110,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/libfrr.c:1113,1
    - Dst: host_config_get
      Src: /src/frr/lib/libfrr.c:1113,1
    - Dst: zlog_info
      Src: /src/frr/lib/libfrr.c:1115,1
    - Dst: vty_read_config
      Src: /src/frr/lib/libfrr.c:1117,1
    - Dst: host_config_set
      Src: /src/frr/lib/libfrr.c:1120,1
    - Dst: XFREE
      Src: /src/frr/lib/libfrr.c:1121,1
    - Dst: frr_get_cli_mode
      Src: /src/frr/lib/libfrr.c:1128,1
    - Dst: nb_candidate_commit
      Src: /src/frr/lib/libfrr.c:1134,1
    - Dst: zlog_err
      Src: /src/frr/lib/libfrr.c:1138,1
    - Dst: nb_err_name
      Src: /src/frr/lib/libfrr.c:1140,1
    - Dst: hook_call
      Src: /src/frr/lib/libfrr.c:1143,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1106
    functionDepth: 4
    functionLinenumber: 1106
    functionLinenumberEnd: 1144
    functionName: frr_config_read_in
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - host_config_set
    - nb_candidate_commit
    - nb_err_name
    - hook_call
    - zlog_err
    - frr_get_cli_mode
    - vty_read_config
    - XFREE
    - host_config_get
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void frr_config_read_in(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/lib/libfrr.c:1148,1
    - Dst: frr_config_read_in
      Src: /src/frr/lib/libfrr.c:1153,1
    - Dst: exit
      Src: /src/frr/lib/libfrr.c:1154,1
    - Dst: event_add_event
      Src: /src/frr/lib/libfrr.c:1157,1
    - Dst: frr_daemonize
      Src: /src/frr/lib/libfrr.c:1162,1
    - Dst: pid_output
      Src: /src/frr/lib/libfrr.c:1168,1
    - Dst: zlog_tls_buffer_init
      Src: /src/frr/lib/libfrr.c:1169,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1146
    functionDepth: 5
    functionLinenumber: 1146
    functionLinenumberEnd: 1170
    functionName: frr_config_fork
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 11
    functionsReached:
    - exit
    - hook_call
    - frr_daemonize
    - pid_output
    - zlog_tls_buffer_init
    - frr_config_read_in
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void frr_config_fork(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:1180,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:1185,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:1188,1
    - Dst: vty_serv_start
      Src: /src/frr/lib/libfrr.c:1194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1172
    functionDepth: 3
    functionLinenumber: 1172
    functionLinenumberEnd: 1195
    functionName: frr_vty_serv_start
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 1
    functionsReached:
    - snprintf
    - vty_serv_start
    linkageType: ''
    returnType: void
    signature: void frr_vty_serv_start(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_serv_stop
      Src: /src/frr/lib/libfrr.c:1199,1
    - Dst: unlink
      Src: /src/frr/lib/libfrr.c:1202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1197
    functionDepth: 2
    functionLinenumber: 1197
    functionLinenumberEnd: 1203
    functionName: frr_vty_serv_stop
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 1
    functionsReached:
    - vty_serv_stop
    - unlink
    linkageType: ''
    returnType: void
    signature: void frr_vty_serv_stop(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/lib/libfrr.c:1211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1205
    functionDepth: 0
    functionLinenumber: 1205
    functionLinenumberEnd: 1213
    functionName: frr_check_detach
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void frr_check_detach(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_check_detach
      Src: /src/frr/lib/libfrr.c:1220,1
    - Dst: printf
      Src: /src/frr/lib/libfrr.c:1223,1
    - Dst: raise
      Src: /src/frr/lib/libfrr.c:1225,1
    - Dst: printf
      Src: /src/frr/lib/libfrr.c:1228,1
    - Dst: fflush
      Src: /src/frr/lib/libfrr.c:1229,1
    - Dst: open
      Src: /src/frr/lib/libfrr.c:1232,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/libfrr.c:1234,1
    - Dst: safe_strerror
      Src: /src/frr/lib/libfrr.c:1236,1
    - Dst: isatty
      Src: /src/frr/lib/libfrr.c:1244,1
    - Dst: dup2
      Src: /src/frr/lib/libfrr.c:1246,1
    - Dst: close
      Src: /src/frr/lib/libfrr.c:1247,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - isexit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1249
    functionName: frr_terminal_close
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - open
    - isatty
    - close
    - safe_strerror
    - fflush
    - frr_check_detach
    - printf
    - raise
    - flog_err_sys
    - dup2
    linkageType: ''
    returnType: void
    signature: void frr_terminal_close(int isexit)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/frr/lib/libfrr.c:1258,1
    - Dst: vty_stdio_suspend
      Src: /src/frr/lib/libfrr.c:1266,1
    - Dst: send
      Src: /src/frr/lib/libfrr.c:1267,1
    - Dst: zlog_err
      Src: /src/frr/lib/libfrr.c:1268,1
    - Dst: vty_stdio_resume
      Src: /src/frr/lib/libfrr.c:1272,1
    - Dst: raise
      Src: /src/frr/lib/libfrr.c:1276,1
    - Dst: vty_stdio_close
      Src: /src/frr/lib/libfrr.c:1280,1
    - Dst: event_add_read
      Src: /src/frr/lib/libfrr.c:1285,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1253
    functionDepth: 4
    functionLinenumber: 1253
    functionLinenumberEnd: 1287
    functionName: frr_daemon_ctl
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - vty_stdio_resume
    - vty_stdio_close
    - event_add_read
    - zlog_err
    - raise
    - recv
    - send
    - vty_stdio_suspend
    linkageType: ''
    returnType: void
    signature: void frr_daemon_ctl(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_check_detach
      Src: /src/frr/lib/libfrr.c:1292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1289
    functionDepth: 1
    functionLinenumber: 1289
    functionLinenumberEnd: 1293
    functionName: frr_detach
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 1
    functionsReached:
    - frr_check_detach
    linkageType: ''
    returnType: void
    signature: void frr_detach(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: frr_vty_serv_start
      Src: /src/frr/lib/libfrr.c:1300,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:1303,1
    - Dst: zlog_notice
      Src: /src/frr/lib/libfrr.c:1306,1
    - Dst: vty_stdio
      Src: /src/frr/lib/libfrr.c:1312,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/libfrr.c:1314,1
    - Dst: event_add_read
      Src: /src/frr/lib/libfrr.c:1315,1
    - Dst: open
      Src: /src/frr/lib/libfrr.c:1319,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/libfrr.c:1321,1
    - Dst: safe_strerror
      Src: /src/frr/lib/libfrr.c:1323,1
    - Dst: isatty
      Src: /src/frr/lib/libfrr.c:1332,1
    - Dst: dup2
      Src: /src/frr/lib/libfrr.c:1334,1
    - Dst: close
      Src: /src/frr/lib/libfrr.c:1335,1
    - Dst: frr_check_detach
      Src: /src/frr/lib/libfrr.c:1338,1
    - Dst: zlog_startup_end
      Src: /src/frr/lib/libfrr.c:1342,1
    - Dst: event_fetch
      Src: /src/frr/lib/libfrr.c:1345,1
    - Dst: event_call
      Src: /src/frr/lib/libfrr.c:1346,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1295
    functionDepth: 5
    functionLinenumber: 1295
    functionLinenumberEnd: 1347
    functionName: frr_run
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 11
    functionsReached:
    - frr_vty_serv_start
    - open
    - snprintf
    - dup2
    - event_call
    - isatty
    - event_add_read
    - close
    - zlog_notice
    - safe_strerror
    - frr_check_detach
    - zlog_startup_end
    - set_nonblocking
    - event_fetch
    - flog_err_sys
    - vty_stdio
    linkageType: ''
    returnType: void
    signature: void frr_run(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/lib/libfrr.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1349
    functionDepth: 1
    functionLinenumber: 1349
    functionLinenumberEnd: 1352
    functionName: frr_early_fini
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 4
    functionsReached:
    - hook_call
    linkageType: ''
    returnType: void
    signature: void frr_early_fini(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/lib/libfrr.c:1360,1
    - Dst: vty_terminate
      Src: /src/frr/lib/libfrr.c:1362,1
    - Dst: cmd_terminate
      Src: /src/frr/lib/libfrr.c:1363,1
    - Dst: nb_terminate
      Src: /src/frr/lib/libfrr.c:1364,1
    - Dst: yang_terminate
      Src: /src/frr/lib/libfrr.c:1365,1
    - Dst: db_close
      Src: /src/frr/lib/libfrr.c:1367,1
    - Dst: log_ref_fini
      Src: /src/frr/lib/libfrr.c:1369,1
    - Dst: frrscript_fini
      Src: /src/frr/lib/libfrr.c:1372,1
    - Dst: frr_pthread_finish
      Src: /src/frr/lib/libfrr.c:1374,1
    - Dst: zprivs_terminate
      Src: /src/frr/lib/libfrr.c:1375,1
    - Dst: event_master_free
      Src: /src/frr/lib/libfrr.c:1377,1
    - Dst: zlog_tls_buffer_fini
      Src: /src/frr/lib/libfrr.c:1379,1
    - Dst: zlog_fini
      Src: /src/frr/lib/libfrr.c:1380,1
    - Dst: rcu_shutdown
      Src: /src/frr/lib/libfrr.c:1382,1
    - Dst: isatty
      Src: /src/frr/lib/libfrr.c:1385,1
    - Dst: log_memstats
      Src: /src/frr/lib/libfrr.c:1386,1
    - Dst: snprintf
      Src: /src/frr/lib/libfrr.c:1395,1
    - Dst: getpid
      Src: /src/frr/lib/libfrr.c:1396,1
    - Dst: time
      Src: /src/frr/lib/libfrr.c:1397,1
    - Dst: fopen
      Src: /src/frr/lib/libfrr.c:1399,1
    - Dst: log_memstats
      Src: /src/frr/lib/libfrr.c:1401,1
    - Dst: fclose
      Src: /src/frr/lib/libfrr.c:1402,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1354
    functionDepth: 4
    functionLinenumber: 1354
    functionLinenumberEnd: 1404
    functionName: frr_fini
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 12
    functionsReached:
    - zlog_tls_buffer_fini
    - zprivs_terminate
    - zlog_fini
    - event_master_free
    - vty_terminate
    - yang_terminate
    - snprintf
    - hook_call
    - db_close
    - nb_terminate
    - fclose
    - isatty
    - cmd_terminate
    - fopen
    - getpid
    - log_ref_fini
    - rcu_shutdown
    - frrscript_fini
    - frr_pthread_finish
    - time
    - log_memstats
    linkageType: ''
    returnType: void
    signature: void frr_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/frr/lib/libfrr.c:1424,1
    - Dst: _exit
      Src: /src/frr/lib/libfrr.c:1425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1418
    functionDepth: 0
    functionLinenumber: 1418
    functionLinenumberEnd: 1426
    functionName: _libfrr_version
    functionSourceFile: /src/frr/lib/libfrr.c
    functionUses: 0
    functionsReached:
    - write
    - _exit
    linkageType: ''
    returnType: void
    signature: void _libfrr_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prio
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: vzlog
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: vzlog(prio, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/zlog.h:72,1
    - Dst: vzlog
      Src: /src/frr/lib/zlog.h:73,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.h:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - prio
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: zlog
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 6
    functionsReached:
    - va_start
    - va_end
    - vzlog
    linkageType: ''
    returnType: void
    signature: void zlog(int prio, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/zlog.h:83,1
    - Dst: vzlogx
      Src: /src/frr/lib/zlog.h:84,1
    - Dst: va_end
      Src: /src/frr/lib/zlog.h:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - xref
    - fmt
    argTypes:
    - struct xref_logmsg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: zlog_ref
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 0
    functionsReached:
    - va_start
    - vzlogx
    - va_end
    linkageType: ''
    returnType: void
    signature: "void zlog_ref(const struct xref_logmsg *xref,\n\t\t\t    const char
      *fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ec_
    - ','
    - prio
    - ','
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 111
    functionName: _zlog_ecref
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _zlog_ecref(ec_, prio, msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: zlog_err
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 137
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_err(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: zlog_warn
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 237
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_warn(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: zlog_info
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 160
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_info(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: zlog_notice
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_notice(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: zlog_debug
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 1382
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ferr_id
    - ','
    - format
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: flog_err
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 330
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: flog_err(ferr_id, format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ferr_id
    - ','
    - format
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: flog_warn
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 204
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: flog_warn(ferr_id, format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ferr_id
    - ','
    - format
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: flog_err_sys
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 96
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: flog_err_sys(ferr_id, format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: zlog_err
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 137
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_err(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: zlog_warn
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 237
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_warn(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: zlog_info
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 160
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_info(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    functionName: zlog_notice
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_notice(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: zlog_debug
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 1382
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ferr_id
    - ','
    - format
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: flog_err
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 330
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: flog_err(ferr_id, format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ferr_id
    - ','
    - format
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: flog_warn
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 204
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: flog_warn(ferr_id, format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ferr_id
    - ','
    - format
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: flog_err_sys
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 96
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: flog_err_sys(ferr_id, format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - mt
    - ','
    - zt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 265
    functionName: zlog_target_free
    functionSourceFile: /src/frr/lib/zlog.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_target_free(mt, zt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/link_state.h:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct ls_vertex*
    - struct ls_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 426
    functionName: vertex_cmp
    functionSourceFile: /src/frr/lib/link_state.h
    functionUses: 0
    functionsReached:
    - numcmp
    linkageType: ''
    returnType: macro_inline
    signature: "macro_inline vertex_cmp(const struct ls_vertex *node1,\n\t\t\t    const
      struct ls_vertex *node2)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/link_state.h:433,1
    - Dst: memcmp
      Src: /src/frr/lib/link_state.h:437,1
    - Dst: memcmp
      Src: /src/frr/lib/link_state.h:439,1
    - Dst: numcmp
      Src: /src/frr/lib/link_state.h:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - edge1
    - edge2
    argTypes:
    - struct ls_edge*
    - struct ls_edge*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 445
    functionName: edge_cmp
    functionSourceFile: /src/frr/lib/link_state.h
    functionUses: 1
    functionsReached:
    - numcmp
    - memcmp
    linkageType: ''
    returnType: macro_inline
    signature: "macro_inline edge_cmp(const struct ls_edge *edge1,\n\t\t\t  const
      struct ls_edge *edge2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/link_state.h:456,1
    - Dst: numcmp
      Src: /src/frr/lib/link_state.h:459,1
    - Dst: memcmp
      Src: /src/frr/lib/link_state.h:462,1
    - Dst: memcmp
      Src: /src/frr/lib/link_state.h:464,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ls_subnet*
    - struct ls_subnet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 465
    functionName: subnet_cmp
    functionSourceFile: /src/frr/lib/link_state.h
    functionUses: 0
    functionsReached:
    - numcmp
    - memcmp
    linkageType: ''
    returnType: macro_inline
    signature: "macro_inline subnet_cmp(const struct ls_subnet *a,\n\t\t\t    const
      struct ls_subnet *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - mtype
    - ','
    - ptr
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 87
    functionName: rcu_free_internal
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rcu_free_internal(mtype, ptr, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seqlock_init
      Src: /src/frr/lib/frrcu.c:131,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/lib/frrcu.c:132,1
    - Dst: pthread_key_create
      Src: /src/frr/lib/frrcu.c:134,1
    - Dst: pthread_setspecific
      Src: /src/frr/lib/frrcu.c:135,1
    - Dst: rcu_threads_add_tail
      Src: /src/frr/lib/frrcu.c:137,1
    - Dst: seqlock_init
      Src: /src/frr/lib/frrcu.c:143,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/lib/frrcu.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 145
    functionName: rcu_preinit
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - seqlock_acquire_val
    - seqlock_init
    - rcu_threads_add_tail
    - pthread_key_create
    - pthread_setspecific
    linkageType: ''
    returnType: void
    signature: void rcu_preinit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/frr/lib/frrcu.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: rcu_self
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - pthread_getspecific
    linkageType: ''
    returnType: struct rcu_thread
    signature: struct rcu_thread *rcu_self(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rcu_assert_read_locked
      Src: /src/frr/lib/frrcu.c:159,1
    - Dst: rcu_start
      Src: /src/frr/lib/frrcu.c:162,1
    - Dst: rcu_self
      Src: /src/frr/lib/frrcu.c:164,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:165,1
    - Dst: XCALLOC
      Src: /src/frr/lib/frrcu.c:171,1
    - Dst: seqlock_init
      Src: /src/frr/lib/frrcu.c:174,1
    - Dst: seqlock_acquire
      Src: /src/frr/lib/frrcu.c:175,1
    - Dst: rcu_threads_add_tail
      Src: /src/frr/lib/frrcu.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (cur->depth)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 180
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 180
    functionName: rcu_thread_prepare
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 2
    functionsReached:
    - rcu_self
    - rcu_assert_read_locked
    - seqlock_init
    - XCALLOC
    - seqlock_acquire
    - rcu_threads_add_tail
    - rcu_start
    - assert
    linkageType: ''
    returnType: struct rcu_thread
    signature: struct rcu_thread *rcu_thread_prepare(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setspecific
      Src: /src/frr/lib/frrcu.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct rcu_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: rcu_thread_start
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 2
    functionsReached:
    - pthread_setspecific
    linkageType: ''
    returnType: void
    signature: void rcu_thread_start(struct rcu_thread *rt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seqlock_acquire
      Src: /src/frr/lib/frrcu.c:193,1
    - Dst: rcu_bump
      Src: /src/frr/lib/frrcu.c:195,1
    - Dst: rcu_free_internal
      Src: /src/frr/lib/frrcu.c:198,1
    - Dst: rcu_threads_del
      Src: /src/frr/lib/frrcu.c:200,1
    - Dst: seqlock_release
      Src: /src/frr/lib/frrcu.c:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct rcu_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 202
    functionName: rcu_thread_unprepare
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 2
    functionsReached:
    - rcu_free_internal
    - rcu_bump
    - seqlock_acquire
    - rcu_threads_del
    - seqlock_release
    linkageType: ''
    returnType: void
    signature: void rcu_thread_unprepare(struct rcu_thread *rt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rcu_thread_unprepare
      Src: /src/frr/lib/frrcu.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtvoid
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: rcu_thread_end
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - rcu_thread_unprepare
    linkageType: ''
    returnType: void
    signature: void rcu_thread_end(void *rtvoid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/lib/frrcu.c:218,1
    - Dst: rcu_heads_add_tail
      Src: /src/frr/lib/frrcu.c:247,1
    - Dst: rcu_free_internal
      Src: /src/frr/lib/frrcu.c:261,1
    - Dst: seqlock_bump
      Src: /src/frr/lib/frrcu.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 275
    functionName: rcu_bump
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 1
    functionsReached:
    - rcu_heads_add_tail
    - seqlock_bump
    - XMALLOC
    - rcu_free_internal
    linkageType: ''
    returnType: void
    signature: void rcu_bump(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/frrcu.c:281,1
    - Dst: seqlock_cur
      Src: /src/frr/lib/frrcu.c:286,1
    - Dst: rcu_bump
      Src: /src/frr/lib/frrcu.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 277
    functionDepth: 3
    functionLinenumber: 277
    functionLinenumberEnd: 288
    functionName: rcu_bump_maybe
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - rcu_bump
    - atomic_load_explicit
    - seqlock_cur
    linkageType: ''
    returnType: void
    signature: void rcu_bump_maybe(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rcu_self
      Src: /src/frr/lib/frrcu.c:292,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:294,1
    - Dst: seqlock_acquire
      Src: /src/frr/lib/frrcu.c:298,1
    - Dst: rcu_bump_maybe
      Src: /src/frr/lib/frrcu.c:300,1
    - Dst: seqlock_acquire
      Src: /src/frr/lib/frrcu.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rt)
      pos:
        line_end: 293
        line_start: 293
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 303
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 303
    functionName: rcu_read_lock
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 3
    functionsReached:
    - seqlock_acquire
    - rcu_bump_maybe
    - rcu_self
    - assert
    linkageType: ''
    returnType: void
    signature: void rcu_read_lock(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rcu_self
      Src: /src/frr/lib/frrcu.c:307,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:309,1
    - Dst: rcu_bump_maybe
      Src: /src/frr/lib/frrcu.c:312,1
    - Dst: seqlock_release
      Src: /src/frr/lib/frrcu.c:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rt && rt->depth)
      pos:
        line_end: 308
        line_start: 308
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 314
      start: 305
    functionDepth: 4
    functionLinenumber: 305
    functionLinenumberEnd: 314
    functionName: rcu_read_unlock
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 4
    functionsReached:
    - rcu_bump_maybe
    - rcu_self
    - assert
    - seqlock_release
    linkageType: ''
    returnType: void
    signature: void rcu_read_unlock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rcu_self
      Src: /src/frr/lib/frrcu.c:318,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:319,1
    - Dst: seqlock_held
      Src: /src/frr/lib/frrcu.c:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rt && rt->depth && seqlock_held(&rt->rcu))
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 320
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 320
    functionName: rcu_assert_read_locked
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 1
    functionsReached:
    - seqlock_held
    - rcu_self
    - assert
    linkageType: ''
    returnType: void
    signature: void rcu_assert_read_locked(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rcu_self
      Src: /src/frr/lib/frrcu.c:324,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:325,1
    - Dst: seqlock_held
      Src: /src/frr/lib/frrcu.c:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rt && !rt->depth && !seqlock_held(&rt->rcu))
      pos:
        line_end: 324
        line_start: 324
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 326
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 326
    functionName: rcu_assert_read_unlocked
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - seqlock_held
    - rcu_self
    - assert
    linkageType: ''
    returnType: void
    signature: void rcu_assert_read_unlocked(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sigfillset
      Src: /src/frr/lib/frrcu.c:341,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/frrcu.c:342,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:346,1
    - Dst: pthread_create
      Src: /src/frr/lib/frrcu.c:346,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/frrcu.c:348,1
    - Dst: pthread_setname_np
      Src: /src/frr/lib/frrcu.c:352,1
    - Dst: pthread_setname_np
      Src: /src/frr/lib/frrcu.c:354,1
    - Dst: pthread_set_name_np
      Src: /src/frr/lib/frrcu.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!pthread_create(&rcu_pthread, NULL, rcu_main, NULL))
      pos:
        line_end: 345
        line_start: 345
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 359
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 359
    functionName: rcu_start
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 1
    functionsReached:
    - pthread_create
    - pthread_setname_np
    - pthread_set_name_np
    - sigfillset
    - pthread_sigmask
    - assert
    linkageType: ''
    returnType: void
    signature: void rcu_start(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: qfree
      Src: /src/frr/lib/frrcu.c:370,1
    - Dst: free
      Src: /src/frr/lib/frrcu.c:372,1
    - Dst: container_of
      Src: /src/frr/lib/frrcu.c:375,1
    - Dst: close
      Src: /src/frr/lib/frrcu.c:377,1
    - Dst: struct rcu_head*::action::u::call::fptr
      Src: /src/frr/lib/frrcu.c:381,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:388,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - rh
    argTypes:
    - struct rcu_head*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 387
        line_start: 387
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 390
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 390
    functionName: rcu_do
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - container_of
    - free
    - close
    - qfree
    - struct rcu_head*::action::u::call::fptr
    - assert
    linkageType: ''
    returnType: void
    signature: void rcu_do(struct rcu_head *rh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/frrcu.c:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct rcu_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 404
    functionName: rcu_watchdog
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void rcu_watchdog(struct rcu_thread *rt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setspecific
      Src: /src/frr/lib/frrcu.c:415,1
    - Dst: seqlock_wait
      Src: /src/frr/lib/frrcu.c:418,1
    - Dst: clock_gettime
      Src: /src/frr/lib/frrcu.c:421,1
    - Dst: frr_each
      Src: /src/frr/lib/frrcu.c:428,1
    - Dst: seqlock_timedwait
      Src: /src/frr/lib/frrcu.c:429,1
    - Dst: rcu_watchdog
      Src: /src/frr/lib/frrcu.c:430,1
    - Dst: seqlock_wait
      Src: /src/frr/lib/frrcu.c:431,1
    - Dst: rcu_heads_pop
      Src: /src/frr/lib/frrcu.c:434,1
    - Dst: rcu_do
      Src: /src/frr/lib/frrcu.c:440,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:451,1
    - Dst: rcu_heads_first
      Src: /src/frr/lib/frrcu.c:451,1
    - Dst: rcu_heads_pop
      Src: /src/frr/lib/frrcu.c:453,1
    - Dst: rcu_do
      Src: /src/frr/lib/frrcu.c:455,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts:
    - condition: (!rcu_heads_first(&rcu_heads))
      pos:
        line_end: 450
        line_start: 450
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 458
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 458
    functionName: rcu_main
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 0
    functionsReached:
    - assert
    - frr_each
    - rcu_heads_first
    - clock_gettime
    - rcu_do
    - seqlock_timedwait
    - rcu_watchdog
    - pthread_setspecific
    - rcu_heads_pop
    - seqlock_wait
    linkageType: ''
    returnType: void
    signature: void *rcu_main(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rcu_self
      Src: /src/frr/lib/frrcu.c:463,1
    - Dst: rcu_assert_read_locked
      Src: /src/frr/lib/frrcu.c:469,1
    - Dst: assert
      Src: /src/frr/lib/frrcu.c:470,1
    - Dst: rcu_threads_count
      Src: /src/frr/lib/frrcu.c:470,1
    - Dst: rcu_enqueue
      Src: /src/frr/lib/frrcu.c:472,1
    - Dst: seqlock_release
      Src: /src/frr/lib/frrcu.c:475,1
    - Dst: seqlock_release
      Src: /src/frr/lib/frrcu.c:476,1
    - Dst: pthread_join
      Src: /src/frr/lib/frrcu.c:483,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/lib/frrcu.c:484,1
    - Dst: seqlock_acquire_val
      Src: /src/frr/lib/frrcu.c:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (rcu_threads_count(&rcu_threads) == 1)
      pos:
        line_end: 469
        line_start: 469
        source_file: /src/frr/lib/frrcu.c
    constantsTouched: []
    func_position:
      end: 488
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 488
    functionName: rcu_shutdown
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 1
    functionsReached:
    - seqlock_acquire_val
    - rcu_assert_read_locked
    - rcu_self
    - pthread_join
    - rcu_enqueue
    - seqlock_release
    - rcu_threads_count
    - assert
    linkageType: ''
    returnType: void
    signature: void rcu_shutdown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rcu_assert_read_locked
      Src: /src/frr/lib/frrcu.c:499,1
    - Dst: rcu_do
      Src: /src/frr/lib/frrcu.c:504,1
    - Dst: rcu_heads_add_tail
      Src: /src/frr/lib/frrcu.c:507,1
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/frrcu.c:508,1
    - Dst: seqlock_cur
      Src: /src/frr/lib/frrcu.c:508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - rh
    - action
    argTypes:
    - struct rcu_head*
    - struct rcu_action*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 510
    functionName: rcu_enqueue
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 1
    functionsReached:
    - rcu_heads_add_tail
    - rcu_assert_read_locked
    - atomic_store_explicit
    - rcu_do
    - seqlock_cur
    linkageType: ''
    returnType: void
    signature: void rcu_enqueue(struct rcu_head *rh, const struct rcu_action *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rcu_enqueue
      Src: /src/frr/lib/frrcu.c:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rhc
    - fd
    argTypes:
    - struct rcu_head_close*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 512
    functionDepth: 3
    functionLinenumber: 512
    functionLinenumberEnd: 516
    functionName: rcu_close
    functionSourceFile: /src/frr/lib/frrcu.c
    functionUses: 3
    functionsReached:
    - rcu_enqueue
    linkageType: ''
    returnType: void
    signature: void rcu_close(struct rcu_head_close *rhc, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/log.c:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - mz
    - kz
    - nf
    argTypes:
    - struct message*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: lookup_msg
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 73
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: char
    signature: char *lookup_msg(const struct message *mz, int kz, const char *nf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/lib/log.c:61,1
    - Dst: localtime_r
      Src: /src/frr/lib/log.c:67,1
    - Dst: strftime
      Src: /src/frr/lib/log.c:68,1
    - Dst: memcpy
      Src: /src/frr/lib/log.c:77,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - timestamp_precision
    - buf
    - buflen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 107
    functionName: frr_timestamp
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 7
    functionsReached:
    - localtime_r
    - gettimeofday
    - memcpy
    - strftime
    linkageType: ''
    returnType: size_t
    signature: size_t frr_timestamp(int timestamp_precision, char *buf, size_t buflen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/lib/log.c:125,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:127,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:129,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:133,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:135,1
    - Dst: zlog_sigsafe
      Src: /src/frr/lib/log.c:137,1
    - Dst: zlog_backtrace_sigsafe
      Src: /src/frr/lib/log.c:139,1
    - Dst: pthread_getspecific
      Src: /src/frr/lib/log.c:144,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:147,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:149,1
    - Dst: zlog_sigsafe
      Src: /src/frr/lib/log.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - signo
    - action
    - siginfo_v
    - program_counter
    argTypes:
    - int
    - char*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 154
    functionName: zlog_signal
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - pthread_getspecific
    - zlog_backtrace_sigsafe
    - time
    - zlog_sigsafe
    linkageType: ''
    returnType: void
    signature: "void zlog_signal(int signo, const char *action, void *siginfo_v,\n\t\t
      void *program_counter)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/log.c:168,1
    - Dst: memset
      Src: /src/frr/lib/log.c:169,1
    - Dst: unw_getcontext
      Src: /src/frr/lib/log.c:171,1
    - Dst: unw_init_local
      Src: /src/frr/lib/log.c:172,1
    - Dst: unw_step
      Src: /src/frr/lib/log.c:173,1
    - Dst: unw_get_reg
      Src: /src/frr/lib/log.c:176,1
    - Dst: unw_get_reg
      Src: /src/frr/lib/log.c:177,1
    - Dst: unw_get_proc_name
      Src: /src/frr/lib/log.c:179,1
    - Dst: snprintfrr
      Src: /src/frr/lib/log.c:180,1
    - Dst: unw_is_signal_frame
      Src: /src/frr/lib/log.c:184,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:185,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:186,1
    - Dst: dladdr
      Src: /src/frr/lib/log.c:187,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:188,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:190,1
    - Dst: zlog_sigsafe
      Src: /src/frr/lib/log.c:191,1
    - Dst: backtrace
      Src: /src/frr/lib/log.c:200,1
    - Dst: array_size
      Src: /src/frr/lib/log.c:200,1
    - Dst: array_size
      Src: /src/frr/lib/log.c:201,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:204,1
    - Dst: zlog_sigsafe
      Src: /src/frr/lib/log.c:205,1
    - Dst: backtrace_symbols
      Src: /src/frr/lib/log.c:207,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:212,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:214,1
    - Dst: zlog_sigsafe
      Src: /src/frr/lib/log.c:216,1
    - Dst: free
      Src: /src/frr/lib/log.c:219,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - priority
    - program_counter
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 221
    functionName: zlog_backtrace_sigsafe
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 1
    functionsReached:
    - bprintfrr
    - memset
    - unw_get_proc_name
    - unw_is_signal_frame
    - snprintfrr
    - backtrace
    - free
    - unw_getcontext
    - unw_get_reg
    - dladdr
    - unw_step
    - array_size
    - unw_init_local
    - backtrace_symbols
    - zlog_sigsafe
    linkageType: ''
    returnType: void
    signature: void zlog_backtrace_sigsafe(int priority, void *program_counter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: unw_getcontext
      Src: /src/frr/lib/log.c:232,1
    - Dst: unw_init_local
      Src: /src/frr/lib/log.c:233,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:234,1
    - Dst: unw_step
      Src: /src/frr/lib/log.c:235,1
    - Dst: unw_get_reg
      Src: /src/frr/lib/log.c:238,1
    - Dst: unw_get_reg
      Src: /src/frr/lib/log.c:239,1
    - Dst: unw_is_signal_frame
      Src: /src/frr/lib/log.c:241,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:242,1
    - Dst: unw_get_proc_name
      Src: /src/frr/lib/log.c:244,1
    - Dst: snprintf
      Src: /src/frr/lib/log.c:245,1
    - Dst: dladdr
      Src: /src/frr/lib/log.c:248,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:249,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:253,1
    - Dst: backtrace
      Src: /src/frr/lib/log.c:261,1
    - Dst: array_size
      Src: /src/frr/lib/log.c:261,1
    - Dst: array_size
      Src: /src/frr/lib/log.c:262,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/log.c:263,1
    - Dst: array_size
      Src: /src/frr/lib/log.c:266,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:269,1
    - Dst: backtrace_symbols
      Src: /src/frr/lib/log.c:270,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/log.c:271,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:274,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:277,1
    - Dst: free
      Src: /src/frr/lib/log.c:278,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:281,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - priority
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 283
    functionName: zlog_backtrace
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 4
    functionsReached:
    - zlog
    - snprintf
    - unw_get_proc_name
    - unw_is_signal_frame
    - backtrace
    - free
    - unw_getcontext
    - unw_get_reg
    - dladdr
    - unw_step
    - array_size
    - unw_init_local
    - backtrace_symbols
    - flog_err_sys
    linkageType: ''
    returnType: void
    signature: void zlog_backtrace(int priority)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/frr/lib/log.c:288,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:291,1
    - Dst: zlog
      Src: /src/frr/lib/log.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - log_level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 297
    functionName: zlog_thread_info
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 0
    functionsReached:
    - zlog
    - pthread_getspecific
    linkageType: ''
    returnType: void
    signature: void zlog_thread_info(int log_level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog
      Src: /src/frr/lib/log.c:301,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/log.c:304,1
    - Dst: log_memstats
      Src: /src/frr/lib/log.c:305,1
    - Dst: abort
      Src: /src/frr/lib/log.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - size
    - name
    argTypes:
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 307
    functionName: memory_oom
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 0
    functionsReached:
    - abort
    - zlog
    - zlog_backtrace
    - log_memstats
    linkageType: ''
    returnType: void
    signature: void memory_oom(size_t size, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/frr/lib/log.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 314
    functionName: safe_strerror
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 187
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: char *safe_strerror(int errnum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 317
    functionName: DESC_ENTRY
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DESC_ENTRY(T)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/log.c:469,1
    - Dst: flog_err
      Src: /src/frr/lib/log.c:470,1
    - Dst: array_size
      Src: /src/frr/lib/log.c:476,1
    - Dst: zlog_warn
      Src: /src/frr/lib/log.c:478,1
    - Dst: flog_err
      Src: /src/frr/lib/log.c:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - zroute
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 487
    functionName: zroute_lookup
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 0
    functionsReached:
    - flog_err
    - array_size
    - zlog_warn
    linkageType: ''
    returnType: struct zebra_desc_table
    signature: struct zebra_desc_table *zroute_lookup(unsigned int zroute)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zroute_lookup
      Src: /src/frr/lib/log.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zroute
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 492
    functionName: zebra_route_string
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 115
    functionsReached:
    - zroute_lookup
    linkageType: ''
    returnType: char
    signature: char *zebra_route_string(unsigned int zroute)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zroute_lookup
      Src: /src/frr/lib/log.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zroute
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 497
    functionName: zebra_route_char
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 3
    functionsReached:
    - zroute_lookup
    linkageType: ''
    returnType: char
    signature: char zebra_route_char(unsigned int zroute)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/log.c:501,1
    - Dst: flog_err
      Src: /src/frr/lib/log.c:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - command
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 507
    functionName: zserv_command_string
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 17
    functionsReached:
    - flog_err
    - array_size
    linkageType: ''
    returnType: char
    signature: char *zserv_command_string(unsigned int command)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - T
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 510
    functionName: DESC_ENTRY
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DESC_ENTRY(T)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/log.c:521,1
    - Dst: flog_err
      Src: /src/frr/lib/log.c:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zcc
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 527
    functionName: zserv_gr_client_cap_string
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 1
    functionsReached:
    - flog_err
    - array_size
    linkageType: ''
    returnType: char
    signature: char *zserv_gr_client_cap_string(uint32_t zcc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/log.c:533,1
    - Dst: strcasecmp
      Src: /src/frr/lib/log.c:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 537
    functionName: proto_name2num
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 3
    functionsReached:
    - array_size
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int proto_name2num(const char *s)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/log.c:545,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:547,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:549,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:551,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:553,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:555,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:557,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:559,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:561,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:563,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:565,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:567,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:569,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:571,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:573,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:577,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:579,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:581,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:583,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:585,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:587,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:589,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:591,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:593,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:595,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:597,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:599,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:601,1
    - Dst: strmatch
      Src: /src/frr/lib/log.c:603,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 66
    argCount: 2
    argNames:
    - afi
    - s
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 607
    functionName: proto_redistnum
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 1
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: int
    signature: int proto_redistnum(int afi, const char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/log.c:616,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:629,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:632,1
    - Dst: bprintfrr
      Src: /src/frr/lib/log.c:636,1
    - Dst: isprint
      Src: /src/frr/lib/log.c:642,1
    - Dst: zlog_debug
      Src: /src/frr/lib/log.c:648,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - mem
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 650
    functionName: zlog_hexdump
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 5
    functionsReached:
    - zlog_debug
    - bprintfrr
    - isprint
    linkageType: ''
    returnType: void
    signature: void zlog_hexdump(const void *mem, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/log.c:658,1
    - Dst: snprintf
      Src: /src/frr/lib/log.c:665,1
    - Dst: snprintf
      Src: /src/frr/lib/log.c:667,1
    - Dst: snprintf
      Src: /src/frr/lib/log.c:669,1
    - Dst: snprintf
      Src: /src/frr/lib/log.c:671,1
    - Dst: strlen
      Src: /src/frr/lib/log.c:675,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 4
    argNames:
    - buf
    - bufsz
    - in
    - inlen
    argTypes:
    - char*
    - size_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 678
    functionName: zlog_sanitize
    functionSourceFile: /src/frr/lib/log.c
    functionUses: 2
    functionsReached:
    - snprintf
    - strlen
    - memset
    linkageType: ''
    returnType: char
    signature: char *zlog_sanitize(char *buf, size_t bufsz, const void *in, size_t
      inlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PyPreConfig_InitPythonConfig
      Src: /src/frr/lib/clippy.c:25,1
    - Dst: Py_PreInitializeFromBytesArgs
      Src: /src/frr/lib/clippy.c:33,1
    - Dst: PyStatus_Exception
      Src: /src/frr/lib/clippy.c:34,1
    - Dst: Py_ExitStatusException
      Src: /src/frr/lib/clippy.c:35,1
    - Dst: PyConfig_InitPythonConfig
      Src: /src/frr/lib/clippy.c:37,1
    - Dst: PyConfig_SetBytesArgv
      Src: /src/frr/lib/clippy.c:42,1
    - Dst: PyStatus_Exception
      Src: /src/frr/lib/clippy.c:43,1
    - Dst: Py_ExitStatusException
      Src: /src/frr/lib/clippy.c:44,1
    - Dst: PyConfig_SetBytesString
      Src: /src/frr/lib/clippy.c:46,1
    - Dst: PyConfig_SetBytesString
      Src: /src/frr/lib/clippy.c:49,1
    - Dst: PyImport_AppendInittab
      Src: /src/frr/lib/clippy.c:51,1
    - Dst: Py_InitializeFromConfig
      Src: /src/frr/lib/clippy.c:53,1
    - Dst: PyStatus_Exception
      Src: /src/frr/lib/clippy.c:54,1
    - Dst: Py_ExitStatusException
      Src: /src/frr/lib/clippy.c:55,1
    - Dst: PyConfig_Clear
      Src: /src/frr/lib/clippy.c:57,1
    - Dst: Py_RunMain
      Src: /src/frr/lib/clippy.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 60
    functionName: main
    functionSourceFile: /src/frr/lib/clippy.c
    functionUses: 17
    functionsReached:
    - PyConfig_Clear
    - Py_InitializeFromConfig
    - PyConfig_SetBytesArgv
    - PyImport_AppendInittab
    - PyStatus_Exception
    - PyPreConfig_InitPythonConfig
    - Py_PreInitializeFromBytesArgs
    - Py_ExitStatusException
    - PyConfig_SetBytesString
    - Py_RunMain
    - PyConfig_InitPythonConfig
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mbstowcs
      Src: /src/frr/lib/clippy.c:68,1
    - Dst: malloc
      Src: /src/frr/lib/clippy.c:69,1
    - Dst: mbstowcs
      Src: /src/frr/lib/clippy.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: wconv
    functionSourceFile: /src/frr/lib/clippy.c
    functionUses: 0
    functionsReached:
    - malloc
    - mbstowcs
    linkageType: ''
    returnType: wchar_t
    signature: wchar_t *wconv(const 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: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: wconv
    functionSourceFile: /src/frr/lib/clippy.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: wconv(x)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Py_SetStandardStreamEncoding
      Src: /src/frr/lib/clippy.c:86,1
    - Dst: wconv
      Src: /src/frr/lib/clippy.c:88,1
    - Dst: Py_SetProgramName
      Src: /src/frr/lib/clippy.c:89,1
    - Dst: PyImport_AppendInittab
      Src: /src/frr/lib/clippy.c:90,1
    - Dst: Py_Initialize
      Src: /src/frr/lib/clippy.c:92,1
    - Dst: malloc
      Src: /src/frr/lib/clippy.c:94,1
    - Dst: wconv
      Src: /src/frr/lib/clippy.c:96,1
    - Dst: PySys_SetArgv
      Src: /src/frr/lib/clippy.c:97,1
    - Dst: fopen
      Src: /src/frr/lib/clippy.c:102,1
    - Dst: fprintf
      Src: /src/frr/lib/clippy.c:104,1
    - Dst: strerror
      Src: /src/frr/lib/clippy.c:104,1
    - Dst: free
      Src: /src/frr/lib/clippy.c:106,1
    - Dst: strdup
      Src: /src/frr/lib/clippy.c:111,1
    - Dst: Py_GetVersion
      Src: /src/frr/lib/clippy.c:111,1
    - Dst: strchr
      Src: /src/frr/lib/clippy.c:112,1
    - Dst: fprintf
      Src: /src/frr/lib/clippy.c:115,1
    - Dst: free
      Src: /src/frr/lib/clippy.c:116,1
    - Dst: PyRun_SimpleString
      Src: /src/frr/lib/clippy.c:117,1
    - Dst: PyRun_AnyFile
      Src: /src/frr/lib/clippy.c:122,1
    - Dst: PyErr_Occurred
      Src: /src/frr/lib/clippy.c:123,1
    - Dst: PyErr_Print
      Src: /src/frr/lib/clippy.c:124,1
    - Dst: free
      Src: /src/frr/lib/clippy.c:126,1
    - Dst: Py_Finalize
      Src: /src/frr/lib/clippy.c:129,1
    - Dst: free
      Src: /src/frr/lib/clippy.c:133,1
    - Dst: free
      Src: /src/frr/lib/clippy.c:135,1
    - Dst: free
      Src: /src/frr/lib/clippy.c:136,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 138
    functionName: main
    functionSourceFile: /src/frr/lib/clippy.c
    functionUses: 17
    functionsReached:
    - PyRun_AnyFile
    - malloc
    - PyImport_AppendInittab
    - wconv
    - Py_Finalize
    - strdup
    - strchr
    - Py_SetProgramName
    - Py_SetStandardStreamEncoding
    - PyErr_Print
    - PyRun_SimpleString
    - Py_GetVersion
    - fprintf
    - Py_Initialize
    - PySys_SetArgv
    - free
    - PyErr_Occurred
    - fopen
    - strerror
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vfprintf
      Src: /src/frr/lib/clippy.c:150,1
    - Dst: fputs
      Src: /src/frr/lib/clippy.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - xref
    - prio
    - format
    - args
    argTypes:
    - struct xref_logmsg*
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 152
    functionName: vzlogx
    functionSourceFile: /src/frr/lib/clippy.c
    functionUses: 1
    functionsReached:
    - vfprintf
    - fputs
    linkageType: ''
    returnType: void
    signature: "void vzlogx(const struct xref_logmsg *xref, int prio,\n\t    const
      char *format, va_list args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/frr/lib/clippy.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - size
    - name
    argTypes:
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: memory_oom
    functionSourceFile: /src/frr/lib/clippy.c
    functionUses: 0
    functionsReached:
    - abort
    linkageType: ''
    returnType: void
    signature: void memory_oom(size_t size, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/frr/lib/frrlua.c:34,1
    - Dst: lua_gettable
      Src: /src/frr/lib/frrlua.c:35,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:37,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - L
    - key
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 41
    functionName: frrlua_table_get_integer
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_tointeger
    - lua_pushstring
    - lua_gettable
    - lua_pop
    linkageType: ''
    returnType: int
    signature: int frrlua_table_get_integer(lua_State *L, const char *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:53,1
    - Dst: lua_pushstring
      Src: /src/frr/lib/frrlua.c:54,1
    - Dst: prefix2str
      Src: /src/frr/lib/frrlua.c:54,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:55,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:56,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:57,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:58,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - L
    - prefix
    argTypes:
    - lua_State*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 60
    functionName: lua_pushprefix
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 2
    functionsReached:
    - prefix2str
    - lua_pushstring
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_pushprefix(lua_State *L, const struct prefix *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:64,1
    - Dst: str2prefix
      Src: /src/frr/lib/frrlua.c:65,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:65,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:66,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - L
    - idx
    - prefix
    argTypes:
    - lua_State*
    - int
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: lua_decode_prefix
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_getfield
    - lua_tostring
    - str2prefix
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void lua_decode_prefix(lua_State *L, int idx, struct prefix *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrlua.c:73,1
    - Dst: lua_decode_prefix
      Src: /src/frr/lib/frrlua.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: lua_toprefix
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_decode_prefix
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_toprefix(lua_State *L, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:80,1
    - Dst: lua_pushstring
      Src: /src/frr/lib/frrlua.c:81,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:82,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:83,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:84,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:85,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:86,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:87,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:88,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:89,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:90,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:91,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:92,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:93,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:94,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:95,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:96,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:97,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:98,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:99,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:100,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:101,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 2
    argNames:
    - L
    - ifp
    argTypes:
    - lua_State*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 103
    functionName: lua_pushinterface
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void lua_pushinterface(lua_State *L, const struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:107,1
    - Dst: strlcpy
      Src: /src/frr/lib/frrlua.c:108,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:108,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:109,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:110,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:111,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:112,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:113,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:114,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:115,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:116,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:117,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:118,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:119,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:120,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:121,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:122,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:123,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:124,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:125,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:126,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:127,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:128,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:129,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:130,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:131,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:132,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:133,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:134,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:135,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:136,1
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:137,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:138,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:139,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 3
    argNames:
    - L
    - idx
    - ifp
    argTypes:
    - lua_State*
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 142
    functionName: lua_decode_interface
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_getfield
    - strlcpy
    - lua_tointeger
    - lua_pop
    - lua_tostring
    linkageType: ''
    returnType: void
    signature: void lua_decode_interface(lua_State *L, int idx, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrlua.c:146,1
    - Dst: lua_decode_interface
      Src: /src/frr/lib/frrlua.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 150
    functionName: lua_tointerface
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_decode_interface
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_tointerface(lua_State *L, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/frrlua.c:156,1
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:158,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:159,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:160,1
    - Dst: lua_pushstring
      Src: /src/frr/lib/frrlua.c:161,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - L
    - addr
    argTypes:
    - lua_State*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 163
    functionName: lua_pushinaddr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 3
    functionsReached:
    - inet_ntop
    - lua_pushstring
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_pushinaddr(lua_State *L, const struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:167,1
    - Dst: lua_tointeger
      Src: /src/frr/lib/frrlua.c:168,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:169,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - L
    - idx
    - inaddr
    argTypes:
    - lua_State*
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 172
    functionName: lua_decode_inaddr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_getfield
    - lua_tointeger
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void lua_decode_inaddr(lua_State *L, int idx, struct in_addr *inaddr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrlua.c:177,1
    - Dst: lua_decode_inaddr
      Src: /src/frr/lib/frrlua.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 180
    functionName: lua_toinaddr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_decode_inaddr
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_toinaddr(lua_State *L, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/frrlua.c:187,1
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:189,1
    - Dst: lua_pushlstring
      Src: /src/frr/lib/frrlua.c:190,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:191,1
    - Dst: lua_pushstring
      Src: /src/frr/lib/frrlua.c:192,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - L
    - addr
    argTypes:
    - lua_State*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 194
    functionName: lua_pushin6addr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - inet_ntop
    - lua_pushlstring
    - lua_pushstring
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_pushin6addr(lua_State *L, const struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:198,1
    - Dst: inet_pton
      Src: /src/frr/lib/frrlua.c:199,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:199,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:200,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - L
    - idx
    - in6addr
    argTypes:
    - lua_State*
    - int
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 203
    functionName: lua_decode_in6addr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_getfield
    - inet_pton
    - lua_tostring
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void lua_decode_in6addr(lua_State *L, int idx, struct in6_addr *in6addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrlua.c:208,1
    - Dst: lua_decode_in6addr
      Src: /src/frr/lib/frrlua.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: lua_toin6addr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_decode_in6addr
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_toin6addr(lua_State *L, int idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/frrlua.c:215,1
    - Dst: lua_pushinaddr
      Src: /src/frr/lib/frrlua.c:216,1
    - Dst: lua_pushin6addr
      Src: /src/frr/lib/frrlua.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - L
    - addr
    argTypes:
    - lua_State*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 219
    functionName: lua_pushipaddr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_pushin6addr
    - lua_pushinaddr
    - IS_IPADDR_V4
    linkageType: ''
    returnType: void
    signature: void lua_pushipaddr(lua_State *L, const struct ipaddr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:223,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:224,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - L
    - addr
    argTypes:
    - lua_State*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: lua_pushethaddr
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_pushethaddr(lua_State *L, const struct ethaddr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion2str
      Src: /src/frr/lib/frrlua.c:232,1
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:234,1
    - Dst: lua_pushlstring
      Src: /src/frr/lib/frrlua.c:235,1
    - Dst: sockunion_get_addr
      Src: /src/frr/lib/frrlua.c:235,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/lib/frrlua.c:236,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:237,1
    - Dst: lua_pushstring
      Src: /src/frr/lib/frrlua.c:238,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - L
    - su
    argTypes:
    - lua_State*
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 240
    functionName: lua_pushsockunion
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 2
    functionsReached:
    - sockunion_get_addr
    - sockunion_get_addrlen
    - lua_pushlstring
    - lua_pushstring
    - lua_newtable
    - lua_setfield
    - sockunion2str
    linkageType: ''
    returnType: void
    signature: void lua_pushsockunion(lua_State *L, const union sockunion *su)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_getfield
      Src: /src/frr/lib/frrlua.c:244,1
    - Dst: str2sockunion
      Src: /src/frr/lib/frrlua.c:245,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:245,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrlua.c:246,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:248,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - L
    - idx
    - su
    argTypes:
    - lua_State*
    - int
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 251
    functionName: lua_decode_sockunion
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - str2sockunion
    - lua_getfield
    - zlog_err
    - lua_pop
    - lua_tostring
    linkageType: ''
    returnType: void
    signature: void lua_decode_sockunion(lua_State *L, int idx, union sockunion *su)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrlua.c:256,1
    - Dst: lua_decode_sockunion
      Src: /src/frr/lib/frrlua.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 260
    functionName: lua_tosockunion
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_decode_sockunion
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_tosockunion(lua_State *L, int idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - num
    argTypes:
    - lua_State*
    - long long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: lua_pushintegerp
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_pushinteger
    linkageType: ''
    returnType: void
    signature: void lua_pushintegerp(lua_State *L, const long long *num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tonumberx
      Src: /src/frr/lib/frrlua.c:270,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:271,1
    - Dst: assert
      Src: /src/frr/lib/frrlua.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - L
    - idx
    - num
    argTypes:
    - lua_State*
    - int
    - long long*
    assertStmts:
    - condition: (isnum)
      pos:
        line_end: 271
        line_start: 271
        source_file: /src/frr/lib/frrlua.c
    constantsTouched: []
    func_position:
      end: 273
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 273
    functionName: lua_decode_integerp
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_tonumberx
    - assert
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void lua_decode_integerp(lua_State *L, int idx, long long *num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/frrlua.c:277,1
    - Dst: lua_decode_integerp
      Src: /src/frr/lib/frrlua.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - L
    - idx
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 281
    functionName: lua_tointegerp
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_decode_integerp
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *lua_tointegerp(lua_State *L, int idx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:285,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:286,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:287,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:288,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:289,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:290,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:291,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:292,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:293,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:295,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:296,1
    - Dst: lua_pushinaddr
      Src: /src/frr/lib/frrlua.c:298,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:299,1
    - Dst: lua_pushin6addr
      Src: /src/frr/lib/frrlua.c:301,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:302,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:304,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:305,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:306,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:307,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:308,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:309,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:310,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:311,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:313,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:314,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:316,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:317,1
    - Dst: lua_pushinteger
      Src: /src/frr/lib/frrlua.c:318,1
    - Dst: lua_setfield
      Src: /src/frr/lib/frrlua.c:319,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 2
    argNames:
    - L
    - nexthop
    argTypes:
    - lua_State*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 320
    functionName: lua_pushnexthop
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 0
    functionsReached:
    - lua_pushin6addr
    - lua_pushinaddr
    - lua_pushinteger
    - lua_newtable
    - lua_setfield
    linkageType: ''
    returnType: void
    signature: void lua_pushnexthop(lua_State *L, const struct nexthop *nexthop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:324,1
    - Dst: ALL_NEXTHOPS_PTR
      Src: /src/frr/lib/frrlua.c:328,1
    - Dst: lua_pushnexthop
      Src: /src/frr/lib/frrlua.c:329,1
    - Dst: lua_seti
      Src: /src/frr/lib/frrlua.c:330,1
    - Dst: lua_decode_stringp
      Src: /src/frr/lib/frrlua.c:335,1
    - Dst: strlcpy
      Src: /src/frr/lib/frrlua.c:337,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:337,1
    - Dst: strlen
      Src: /src/frr/lib/frrlua.c:337,1
    - Dst: lua_pop
      Src: /src/frr/lib/frrlua.c:338,1
    - Dst: lua_tostringp
      Src: /src/frr/lib/frrlua.c:341,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frrlua.c:343,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:343,1
    - Dst: lua_decode_noop
      Src: /src/frr/lib/frrlua.c:351,1
    - Dst: lua_decode_integer_noop
      Src: /src/frr/lib/frrlua.c:359,1
    - Dst: frrlua_log_thunk
      Src: /src/frr/lib/frrlua.c:368,1
    - Dst: lua_gettop
      Src: /src/frr/lib/frrlua.c:372,1
    - Dst: assert
      Src: /src/frr/lib/frrlua.c:373,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:375,1
    - Dst: frrlua_log_debug
      Src: /src/frr/lib/frrlua.c:378,1
    - Dst: zlog_debug
      Src: /src/frr/lib/frrlua.c:380,1
    - Dst: frrlua_log_thunk
      Src: /src/frr/lib/frrlua.c:380,1
    - Dst: frrlua_log_info
      Src: /src/frr/lib/frrlua.c:384,1
    - Dst: zlog_info
      Src: /src/frr/lib/frrlua.c:386,1
    - Dst: frrlua_log_thunk
      Src: /src/frr/lib/frrlua.c:386,1
    - Dst: frrlua_log_notice
      Src: /src/frr/lib/frrlua.c:390,1
    - Dst: zlog_notice
      Src: /src/frr/lib/frrlua.c:392,1
    - Dst: frrlua_log_thunk
      Src: /src/frr/lib/frrlua.c:392,1
    - Dst: frrlua_log_warn
      Src: /src/frr/lib/frrlua.c:396,1
    - Dst: zlog_warn
      Src: /src/frr/lib/frrlua.c:398,1
    - Dst: frrlua_log_thunk
      Src: /src/frr/lib/frrlua.c:398,1
    - Dst: frrlua_log_error
      Src: /src/frr/lib/frrlua.c:402,1
    - Dst: zlog_err
      Src: /src/frr/lib/frrlua.c:404,1
    - Dst: frrlua_log_thunk
      Src: /src/frr/lib/frrlua.c:404,1
    - Dst: frrlua_export_logging
      Src: /src/frr/lib/frrlua.c:417,1
    - Dst: lua_newtable
      Src: /src/frr/lib/frrlua.c:419,1
    - Dst: luaL_setfuncs
      Src: /src/frr/lib/frrlua.c:420,1
    - Dst: lua_setglobal
      Src: /src/frr/lib/frrlua.c:421,1
    - Dst: frrlua_stackdump
      Src: /src/frr/lib/frrlua.c:428,1
    - Dst: lua_gettop
      Src: /src/frr/lib/frrlua.c:430,1
    - Dst: buffer_new
      Src: /src/frr/lib/frrlua.c:433,1
    - Dst: lua_type
      Src: /src/frr/lib/frrlua.c:436,1
    - Dst: snprintf
      Src: /src/frr/lib/frrlua.c:440,1
    - Dst: lua_tostring
      Src: /src/frr/lib/frrlua.c:441,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/frrlua.c:442,1
    - Dst: snprintf
      Src: /src/frr/lib/frrlua.c:445,1
    - Dst: lua_toboolean
      Src: /src/frr/lib/frrlua.c:446,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/frrlua.c:447,1
    - Dst: snprintf
      Src: /src/frr/lib/frrlua.c:450,1
    - Dst: lua_tonumber
      Src: /src/frr/lib/frrlua.c:451,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/frrlua.c:452,1
    - Dst: snprintf
      Src: /src/frr/lib/frrlua.c:455,1
    - Dst: lua_typename
      Src: /src/frr/lib/frrlua.c:456,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/frrlua.c:457,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/frrlua.c:462,1
    - Dst: buffer_getstr
      Src: /src/frr/lib/frrlua.c:462,1
    - Dst: buffer_free
      Src: /src/frr/lib/frrlua.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - ng
    argTypes:
    - lua_State*
    - struct nexthop_group*
    assertStmts:
    - condition: (nargs == 1)
      pos:
        line_end: 372
        line_start: 372
        source_file: /src/frr/lib/frrlua.c
    constantsTouched: []
    func_position:
      end: 467
      start: 322
    functionDepth: 3
    functionLinenumber: 322
    functionLinenumberEnd: 467
    functionName: lua_pushnexthop_group
    functionSourceFile: /src/frr/lib/frrlua.c
    functionUses: 1
    functionsReached:
    - lua_decode_noop
    - strlen
    - buffer_new
    - lua_pushnexthop
    - lua_type
    - zlog_warn
    - lua_pop
    - frrlua_stackdump
    - buffer_free
    - lua_decode_stringp
    - frrlua_log_warn
    - snprintf
    - frrlua_log_error
    - lua_toboolean
    - zlog_debug
    - lua_tonumber
    - lua_decode_integer_noop
    - lua_newtable
    - assert
    - lua_gettop
    - zlog_info
    - lua_seti
    - strlcpy
    - buffer_getstr
    - frrlua_log_info
    - zlog_err
    - frrlua_log_thunk
    - frrlua_export_logging
    - lua_tostringp
    - buffer_putstr
    - lua_tostring
    - XSTRDUP
    - ALL_NEXTHOPS_PTR
    - luaL_setfuncs
    - lua_typename
    - frrlua_log_notice
    - frrlua_log_debug
    - zlog_notice
    - lua_setglobal
    linkageType: ''
    returnType: void
    signature: void lua_pushnexthop_group(lua_State *L, const struct nexthop_group
      *ng)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: SOPT_SIZE_CMSG_PKTINFO_IPV6
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_PKTINFO_IPV6()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: SOPT_SIZE_CMSG_PKTINFO_IPV4
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_PKTINFO_IPV4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - af
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: SOPT_SIZE_CMSG_PKTINFO
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_PKTINFO(af)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: SOPT_SIZE_CMSG_RECVIF_IPV4
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_RECVIF_IPV4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: SOPT_SIZE_CMSG_IFINDEX_IPV4
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_IFINDEX_IPV4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: SOPT_SIZE_CMSG_IFINDEX_IPV4
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_IFINDEX_IPV4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: SOPT_SIZE_CMSG_IFINDEX_IPV4
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_IFINDEX_IPV4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - af
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: SOPT_SIZE_CMSG_IFINDEX
    functionSourceFile: /src/frr/lib/sockopt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SOPT_SIZE_CMSG_IFINDEX(af)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/zlog_live.c:38,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_live.c:47,1
    - Dst: memset
      Src: /src/frr/lib/zlog_live.c:52,1
    - Dst: memset
      Src: /src/frr/lib/zlog_live.c:53,1
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_live.c:59,1
    - Dst: zlog_msg_args
      Src: /src/frr/lib/zlog_live.c:66,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog_live.c:80,1
    - Dst: zlog_msg_tsraw
      Src: /src/frr/lib/zlog_live.c:84,1
    - Dst: zlog_msg_pid
      Src: /src/frr/lib/zlog_live.c:85,1
    - Dst: zlog_msg_xref
      Src: /src/frr/lib/zlog_live.c:86,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_live.c:92,1
    - Dst: memcpy
      Src: /src/frr/lib/zlog_live.c:100,1
    - Dst: memset
      Src: /src/frr/lib/zlog_live.c:104,1
    - Dst: sendmmsg
      Src: /src/frr/lib/zlog_live.c:118,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/zlog_live.c:121,1
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/zlog_live.c:132,1
    - Dst: rcu_close
      Src: /src/frr/lib/zlog_live.c:136,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_live.c:137,1
    - Dst: atomic_compare_exchange_strong_explicit
      Src: /src/frr/lib/zlog_live.c:140,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_live.c:144,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 69
    argCount: 3
    argNames:
    - zt
    - msgs
    - nmsgs
    argTypes:
    - struct zlog_target*
    - struct zlog_msg*[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 35
    functionDepth: 4
    functionLinenumber: 35
    functionLinenumberEnd: 145
    functionName: zlog_live
    functionSourceFile: /src/frr/lib/zlog_live.c
    functionUses: 0
    functionsReached:
    - zlog_msg_tsraw
    - zlog_msg_prio
    - memset
    - zlog_msg_text
    - atomic_compare_exchange_strong_explicit
    - container_of
    - rcu_close
    - rcu_free
    - atomic_fetch_add_explicit
    - atomic_exchange_explicit
    - zlog_target_replace
    - atomic_load_explicit
    - zlog_msg_args
    - zlog_msg_xref
    - zlog_msg_pid
    - memcpy
    - sendmmsg
    linkageType: ''
    returnType: void
    signature: "void zlog_live(struct zlog_target *zt, struct zlog_msg *msgs[],\n\t\t
      \     size_t nmsgs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/zlog_live.c:150,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_live.c:156,1
    - Dst: clock_gettime
      Src: /src/frr/lib/zlog_live.c:160,1
    - Dst: writev
      Src: /src/frr/lib/zlog_live.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - zt
    - text
    - len
    argTypes:
    - struct zlog_target*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 176
    functionName: zlog_live_sigsafe
    functionSourceFile: /src/frr/lib/zlog_live.c
    functionUses: 0
    functionsReached:
    - writev
    - atomic_load_explicit
    - container_of
    - clock_gettime
    linkageType: ''
    returnType: void
    signature: "void zlog_live_sigsafe(struct zlog_target *zt, const char *text,\n\t\t\t
      \     size_t len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_live_close
      Src: /src/frr/lib/zlog_live.c:183,1
    - Dst: socketpair
      Src: /src/frr/lib/zlog_live.c:195,1
    - Dst: socketpair
      Src: /src/frr/lib/zlog_live.c:196,1
    - Dst: zlog_warn
      Src: /src/frr/lib/zlog_live.c:197,1
    - Dst: shutdown
      Src: /src/frr/lib/zlog_live.c:202,1
    - Dst: zlog_live_open_fd
      Src: /src/frr/lib/zlog_live.c:205,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - cfg
    - prio_min
    - other_fd
    argTypes:
    - struct zlog_live_cfg*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 206
    functionName: zlog_live_open
    functionSourceFile: /src/frr/lib/zlog_live.c
    functionUses: 0
    functionsReached:
    - socketpair
    - zlog_live_close
    - zlog_warn
    - zlog_live_open_fd
    - shutdown
    linkageType: ''
    returnType: void
    signature: void zlog_live_open(struct zlog_live_cfg *cfg, int prio_min, int *other_fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_live_close
      Src: /src/frr/lib/zlog_live.c:214,1
    - Dst: zlog_target_clone
      Src: /src/frr/lib/zlog_live.c:216,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_live.c:217,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/zlog_live.c:220,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_live.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - cfg
    - prio_min
    - fd
    argTypes:
    - struct zlog_live_cfg*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: zlog_live_open_fd
    functionSourceFile: /src/frr/lib/zlog_live.c
    functionUses: 2
    functionsReached:
    - container_of
    - zlog_target_clone
    - zlog_live_close
    - zlog_target_replace
    - set_nonblocking
    linkageType: ''
    returnType: void
    signature: void zlog_live_open_fd(struct zlog_live_cfg *cfg, int prio_min, int
      fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/zlog_live.c:240,1
    - Dst: rcu_close
      Src: /src/frr/lib/zlog_live.c:243,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_live.c:244,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_live.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct zlog_live_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 229
    functionDepth: 4
    functionLinenumber: 229
    functionLinenumberEnd: 247
    functionName: zlog_live_close
    functionSourceFile: /src/frr/lib/zlog_live.c
    functionUses: 3
    functionsReached:
    - atomic_exchange_explicit
    - zlog_target_replace
    - rcu_close
    - rcu_free
    linkageType: ''
    returnType: void
    signature: void zlog_live_close(struct zlog_live_cfg *cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atomic_compare_exchange_strong_explicit
      Src: /src/frr/lib/zlog_live.c:261,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_live.c:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct zlog_live_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 266
    functionName: zlog_live_disown
    functionSourceFile: /src/frr/lib/zlog_live.c
    functionUses: 1
    functionsReached:
    - atomic_compare_exchange_strong_explicit
    - rcu_free
    linkageType: ''
    returnType: void
    signature: void zlog_live_disown(struct zlog_live_cfg *cfg)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: sr_val_set_xpath
      Src: /src/frr/lib/northbound_sysrepo.c:44,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_sysrepo.c:46,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:48,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_sysrepo.c:58,1
    - Dst: sr_val_set_str_data
      Src: /src/frr/lib/northbound_sysrepo.c:79,1
    - Dst: sr_val_set_str_data
      Src: /src/frr/lib/northbound_sysrepo.c:82,1
    - Dst: yang_str2bool
      Src: /src/frr/lib/northbound_sysrepo.c:86,1
    - Dst: yang_str2dec64
      Src: /src/frr/lib/northbound_sysrepo.c:91,1
    - Dst: sr_val_set_str_data
      Src: /src/frr/lib/northbound_sysrepo.c:97,1
    - Dst: sr_val_set_str_data
      Src: /src/frr/lib/northbound_sysrepo.c:100,1
    - Dst: sr_val_set_str_data
      Src: /src/frr/lib/northbound_sysrepo.c:103,1
    - Dst: yang_str2int8
      Src: /src/frr/lib/northbound_sysrepo.c:107,1
    - Dst: yang_str2int16
      Src: /src/frr/lib/northbound_sysrepo.c:111,1
    - Dst: yang_str2int32
      Src: /src/frr/lib/northbound_sysrepo.c:115,1
    - Dst: yang_str2int64
      Src: /src/frr/lib/northbound_sysrepo.c:119,1
    - Dst: sr_val_set_str_data
      Src: /src/frr/lib/northbound_sysrepo.c:122,1
    - Dst: yang_str2uint8
      Src: /src/frr/lib/northbound_sysrepo.c:126,1
    - Dst: yang_str2uint16
      Src: /src/frr/lib/northbound_sysrepo.c:130,1
    - Dst: yang_str2uint32
      Src: /src/frr/lib/northbound_sysrepo.c:134,1
    - Dst: yang_str2uint64
      Src: /src/frr/lib/northbound_sysrepo.c:138,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 95
    argCount: 2
    argNames:
    - frr_data
    - sr_data
    argTypes:
    - struct yang_data*
    - sr_val_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 145
    functionName: yang_data_frr2sr
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - yang_str2int32
    - yang_str2uint16
    - yang_str2uint64
    - flog_warn
    - yang_str2uint32
    - CHECK_FLAG
    - yang_str2bool
    - yang_str2int16
    - sr_val_set_xpath
    - yang_str2int64
    - sr_val_set_str_data
    - nb_node_find
    - yang_str2uint8
    - yang_str2dec64
    - yang_str2int8
    linkageType: ''
    returnType: int
    signature: int yang_data_frr2sr(struct yang_data *frr_data, sr_val_t *sr_data)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound_sysrepo.c:160,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound_sysrepo.c:164,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_sysrepo.c:171,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:173,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound_sysrepo.c:182,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound_sysrepo.c:184,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound_sysrepo.c:196,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:205,1
    - Dst: sr_val_to_buff
      Src: /src/frr/lib/northbound_sysrepo.c:211,1
    - Dst: yang_data_new
      Src: /src/frr/lib/northbound_sysrepo.c:212,1
    - Dst: nb_candidate_edit
      Src: /src/frr/lib/northbound_sysrepo.c:214,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_sysrepo.c:215,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:217,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound_sysrepo.c:220,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 4
    argNames:
    - candidate
    - sr_op
    - sr_old_val
    - sr_new_val
    argTypes:
    - struct nb_config*
    - sr_change_oper_t
    - sr_val_t*
    - sr_val_t*
    assertStmts:
    - condition: (sr_data)
      pos:
        line_end: 159
        line_start: 159
        source_file: /src/frr/lib/northbound_sysrepo.c
    constantsTouched: []
    func_position:
      end: 225
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 225
    functionName: frr_sr_process_change
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - nb_candidate_edit
    - nb_operation_is_valid
    - flog_warn
    - DEBUGD
    - sr_val_to_buff
    - flog_err
    - nb_node_find
    - nb_operation_name
    - assert
    - yang_data_free
    linkageType: ''
    returnType: int
    signature: "int frr_sr_process_change(struct nb_config *candidate,\n\t\t\t\t sr_change_oper_t
      sr_op, sr_val_t *sr_old_val,\n\t\t\t\t sr_val_t *sr_new_val)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sr_get_changes_iter
      Src: /src/frr/lib/northbound_sysrepo.c:238,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:240,1
    - Dst: nb_config_dup
      Src: /src/frr/lib/northbound_sysrepo.c:246,1
    - Dst: sr_get_change_next
      Src: /src/frr/lib/northbound_sysrepo.c:248,1
    - Dst: frr_sr_process_change
      Src: /src/frr/lib/northbound_sysrepo.c:251,1
    - Dst: sr_free_val
      Src: /src/frr/lib/northbound_sysrepo.c:253,1
    - Dst: sr_free_val
      Src: /src/frr/lib/northbound_sysrepo.c:254,1
    - Dst: sr_free_change_iter
      Src: /src/frr/lib/northbound_sysrepo.c:259,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_sysrepo.c:261,1
    - Dst: nb_candidate_commit_prepare
      Src: /src/frr/lib/northbound_sysrepo.c:271,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:275,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound_sysrepo.c:278,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_sysrepo.c:281,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - session
    - module_name
    argTypes:
    - sr_session_ctx_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 296
    functionName: frr_sr_config_change_cb_prepare
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - sr_get_change_next
    - nb_err_name
    - flog_warn
    - sr_free_change_iter
    - sr_get_changes_iter
    - nb_config_dup
    - flog_err
    - frr_sr_process_change
    - nb_candidate_commit_prepare
    - sr_free_val
    - nb_config_free
    linkageType: ''
    returnType: int
    signature: "int frr_sr_config_change_cb_prepare(sr_session_ctx_t *session,\n\t\t\t\t\t
      \  const char *module_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_commit_apply
      Src: /src/frr/lib/northbound_sysrepo.c:306,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_sysrepo.c:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - session
    - module_name
    argTypes:
    - sr_session_ctx_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 312
    functionName: frr_sr_config_change_cb_apply
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - nb_candidate_commit_apply
    - nb_config_free
    linkageType: ''
    returnType: int
    signature: "int frr_sr_config_change_cb_apply(sr_session_ctx_t *session,\n\t\t\t\t\t
      const char *module_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_commit_abort
      Src: /src/frr/lib/northbound_sysrepo.c:322,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound_sysrepo.c:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - session
    - module_name
    argTypes:
    - sr_session_ctx_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 327
    functionName: frr_sr_config_change_cb_abort
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - nb_config_free
    - nb_candidate_commit_abort
    linkageType: ''
    returnType: int
    signature: "int frr_sr_config_change_cb_abort(sr_session_ctx_t *session,\n\t\t\t\t\t
      const char *module_name)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: frr_sr_config_change_cb_prepare
      Src: /src/frr/lib/northbound_sysrepo.c:338,1
    - Dst: frr_sr_config_change_cb_apply
      Src: /src/frr/lib/northbound_sysrepo.c:340,1
    - Dst: frr_sr_config_change_cb_abort
      Src: /src/frr/lib/northbound_sysrepo.c:342,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 7
    argNames:
    - session
    - sub_id
    - module_name
    - xpath
    - sr_ev
    - request_id
    - private_data
    argTypes:
    - sr_session_ctx_t*
    - uint32_t
    - char*
    - char*
    - sr_event_t
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 330
    functionDepth: 4
    functionLinenumber: 330
    functionLinenumberEnd: 348
    functionName: frr_sr_config_change_cb
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - frr_sr_config_change_cb_prepare
    - frr_sr_config_change_cb_abort
    - frr_sr_config_change_cb_apply
    - flog_err
    linkageType: ''
    returnType: int
    signature: "int frr_sr_config_change_cb(sr_session_ctx_t *session, uint32_t sub_id,\n\t\t\t\t
      \  const char *module_name, const char *xpath,\n\t\t\t\t   sr_event_t sr_ev,
      uint32_t request_id,\n\t\t\t\t   void *private_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_new_path
      Src: /src/frr/lib/northbound_sysrepo.c:358,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:361,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_sysrepo.c:363,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound_sysrepo.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - snode
    - translator
    - data
    - arg
    argTypes:
    - struct lysc_node*
    - struct yang_translator*
    - struct yang_data*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 369
    functionName: frr_sr_state_data_iter_cb
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - lyd_new_path
    - flog_warn
    - yang_data_free
    linkageType: ''
    returnType: int
    signature: "int frr_sr_state_data_iter_cb(const struct lysc_node *snode,\n\t\t\t\t
      \    struct yang_translator *translator,\n\t\t\t\t     struct yang_data *data,
      void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_oper_data_iterate
      Src: /src/frr/lib/northbound_sysrepo.c:380,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 8
    argNames:
    - session
    - sub_id
    - module_name
    - xpath
    - request_xpath
    - request_id
    - parent
    - private_ctx
    argTypes:
    - sr_session_ctx_t*
    - uint32_t
    - char*
    - char*
    - char*
    - uint32_t
    - struct lyd_node**
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 392
    functionName: frr_sr_state_cb
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - nb_oper_data_iterate
    - flog_warn
    linkageType: ''
    returnType: int
    signature: "int frr_sr_state_cb(sr_session_ctx_t *session, uint32_t sub_id,\n\t\t\t
      \  const char *module_name, const char *xpath,\n\t\t\t   const char *request_xpath,
      uint32_t request_id,\n\t\t\t   struct lyd_node **parent, void *private_ctx)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound_sysrepo.c:407,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:409,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_sysrepo.c:414,1
    - Dst: yang_data_list_new
      Src: /src/frr/lib/northbound_sysrepo.c:415,1
    - Dst: sr_val_to_buff
      Src: /src/frr/lib/northbound_sysrepo.c:421,1
    - Dst: yang_data_new
      Src: /src/frr/lib/northbound_sysrepo.c:423,1
    - Dst: listnode_add
      Src: /src/frr/lib/northbound_sysrepo.c:424,1
    - Dst: nb_callback_rpc
      Src: /src/frr/lib/northbound_sysrepo.c:428,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_sysrepo.c:431,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_sysrepo.c:438,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_sysrepo.c:443,1
    - Dst: sr_new_values
      Src: /src/frr/lib/northbound_sysrepo.c:444,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:446,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:447,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_sysrepo.c:451,1
    - Dst: yang_data_frr2sr
      Src: /src/frr/lib/northbound_sysrepo.c:452,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:453,1
    - Dst: sr_free_values
      Src: /src/frr/lib/northbound_sysrepo.c:458,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_sysrepo.c:469,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound_sysrepo.c:470,1
    - Dst: frr_sr_notification_send
      Src: /src/frr/lib/northbound_sysrepo.c:475,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_sysrepo.c:481,1
    - Dst: listcount
      Src: /src/frr/lib/northbound_sysrepo.c:486,1
    - Dst: sr_new_values
      Src: /src/frr/lib/northbound_sysrepo.c:487,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:489,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:490,1
    - Dst: NB_ERR
      Src: /src/frr/lib/northbound_sysrepo.c:491,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound_sysrepo.c:494,1
    - Dst: yang_data_frr2sr
      Src: /src/frr/lib/northbound_sysrepo.c:495,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:496,1
    - Dst: sr_free_values
      Src: /src/frr/lib/northbound_sysrepo.c:500,1
    - Dst: sr_notif_send
      Src: /src/frr/lib/northbound_sysrepo.c:506,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:508,1
    - Dst: frr_sr_read_cb
      Src: /src/frr/lib/northbound_sysrepo.c:517,1
    - Dst: EVENT_ARG
      Src: /src/frr/lib/northbound_sysrepo.c:519,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/northbound_sysrepo.c:520,1
    - Dst: sr_subscription_process_events
      Src: /src/frr/lib/northbound_sysrepo.c:523,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:526,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:527,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_sysrepo.c:531,1
    - Dst: frr_sr_subscribe_config
      Src: /src/frr/lib/northbound_sysrepo.c:534,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound_sysrepo.c:538,1
    - Dst: sr_module_change_subscribe
      Src: /src/frr/lib/northbound_sysrepo.c:542,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:547,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:548,1
    - Dst: frr_sr_subscribe_state
      Src: /src/frr/lib/northbound_sysrepo.c:551,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_sysrepo.c:557,1
    - Dst: YANG_ITER_CONTINUE
      Src: /src/frr/lib/northbound_sysrepo.c:558,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound_sysrepo.c:560,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound_sysrepo.c:567,1
    - Dst: sr_oper_get_subscribe
      Src: /src/frr/lib/northbound_sysrepo.c:570,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:574,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:575,1
    - Dst: frr_sr_subscribe_rpc
      Src: /src/frr/lib/northbound_sysrepo.c:580,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound_sysrepo.c:593,1
    - Dst: sr_rpc_subscribe
      Src: /src/frr/lib/northbound_sysrepo.c:596,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:599,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:600,1
    - Dst: DEFUN
      Src: /src/frr/lib/northbound_sysrepo.c:606,1
    - Dst: DEBUG_NODE2MODE
      Src: /src/frr/lib/northbound_sysrepo.c:615,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/lib/northbound_sysrepo.c:618,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_sysrepo.c:625,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_sysrepo.c:626,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/lib/northbound_sysrepo.c:633,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_sysrepo.c:636,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/lib/northbound_sysrepo.c:637,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:644,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:645,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_sysrepo.c:647,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_sysrepo.c:648,1
    - Dst: sr_connect
      Src: /src/frr/lib/northbound_sysrepo.c:658,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:660,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:661,1
    - Dst: sr_session_start
      Src: /src/frr/lib/northbound_sysrepo.c:666,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:668,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:669,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_sysrepo.c:674,1
    - Dst: frr_sr_subscribe_config
      Src: /src/frr/lib/northbound_sysrepo.c:677,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_sysrepo.c:678,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_sysrepo.c:680,1
    - Dst: sr_get_event_pipe
      Src: /src/frr/lib/northbound_sysrepo.c:684,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:686,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:688,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_sysrepo.c:691,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:695,1
    - Dst: frr_sr_finish
      Src: /src/frr/lib/northbound_sysrepo.c:700,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_sysrepo.c:709,1
    - Dst: sr_unsubscribe
      Src: /src/frr/lib/northbound_sysrepo.c:712,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/northbound_sysrepo.c:713,1
    - Dst: sr_session_stop
      Src: /src/frr/lib/northbound_sysrepo.c:717,1
    - Dst: sr_disconnect
      Src: /src/frr/lib/northbound_sysrepo.c:719,1
    - Dst: frr_sr_init
      Src: /src/frr/lib/northbound_sysrepo.c:728,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:729,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:734,1
    - Dst: frr_sr_cli_init
      Src: /src/frr/lib/northbound_sysrepo.c:741,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:748,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:749,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 105
    argCount: 10
    argNames:
    - session
    - sub_id
    - xpath
    - sr_input
    - input_cnt
    - sr_ev
    - request_id
    - sr_output
    - sr_output_cnt
    - private_ctx
    argTypes:
    - sr_session_ctx_t*
    - uint32_t
    - char*
    - sr_val_t*
    - size_t
    - sr_event_t
    - uint32_t
    - sr_val_t**
    - size_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 757
    functionName: frr_sr_config_rpc_cb
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - sr_session_stop
    - sr_disconnect
    - list_delete
    - sr_rpc_subscribe
    - DEBUG_MODE_SET
    - sr_session_start
    - listnode_add
    - nb_callback_rpc
    - flog_err
    - yang_data_list_new
    - YANG_ITER_CONTINUE
    - yang_snodes_iterate
    - sr_module_change_subscribe
    - install_element
    - yang_data_new
    - flog_warn
    - hook_register
    - sr_connect
    - frr_sr_read_cb
    - ALL_LIST_ELEMENTS_RO
    - sr_val_to_buff
    - sr_unsubscribe
    - frr_sr_init
    - sr_get_event_pipe
    - frr_sr_subscribe_config
    - sr_new_values
    - EVENT_ARG
    - frr_sr_subscribe_rpc
    - DEFUN
    - frr_sr_finish
    - vty_out
    - listcount
    - sr_strerror
    - EVENT_OFF
    - DEBUG_CLEAR
    - event_add_read
    - sr_subscription_process_events
    - sr_notif_send
    - nb_node_find
    - frr_sr_notification_send
    - DEBUG_NODE2MODE
    - DEBUG_MODE_CHECK
    - EVENT_FD
    - frr_sr_subscribe_state
    - DEBUGD
    - CHECK_FLAG
    - sr_oper_get_subscribe
    - sr_free_values
    - NB_ERR
    - frr_sr_cli_init
    - DEBUG_FLAGS_SET
    - RB_FOREACH
    - yang_data_frr2sr
    linkageType: ''
    returnType: int
    signature: "int frr_sr_config_rpc_cb(sr_session_ctx_t *session, uint32_t sub_id,\n\t\t\t\tconst
      char *xpath, const sr_val_t *sr_input,\n\t\t\t\tconst size_t input_cnt, sr_event_t
      sr_ev,\n\t\t\t\tuint32_t request_id, sr_val_t **sr_output,\n\t\t\t\tsize_t *sr_output_cnt,
      void *private_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_sysrepo.c:625,1
    - Dst: vty_out
      Src: /src/frr/lib/northbound_sysrepo.c:626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 623
    functionDepth: 2
    functionLinenumber: 623
    functionLinenumberEnd: 629
    functionName: frr_sr_debug_config_write
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - vty_out
    linkageType: ''
    returnType: int
    signature: int frr_sr_debug_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/lib/northbound_sysrepo.c:633,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound_sysrepo.c:636,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/lib/northbound_sysrepo.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 640
    functionName: frr_sr_debug_set_all
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: int
    signature: int frr_sr_debug_set_all(uint32_t flags, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:644,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:645,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_sysrepo.c:647,1
    - Dst: install_element
      Src: /src/frr/lib/northbound_sysrepo.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 649
    functionName: frr_sr_cli_init
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 1
    functionsReached:
    - install_element
    - hook_register
    linkageType: ''
    returnType: void
    signature: void frr_sr_cli_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sr_connect
      Src: /src/frr/lib/northbound_sysrepo.c:658,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:660,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:661,1
    - Dst: sr_session_start
      Src: /src/frr/lib/northbound_sysrepo.c:666,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:668,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:669,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_sysrepo.c:674,1
    - Dst: frr_sr_subscribe_config
      Src: /src/frr/lib/northbound_sysrepo.c:677,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_sysrepo.c:678,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound_sysrepo.c:680,1
    - Dst: sr_get_event_pipe
      Src: /src/frr/lib/northbound_sysrepo.c:684,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:686,1
    - Dst: sr_strerror
      Src: /src/frr/lib/northbound_sysrepo.c:688,1
    - Dst: event_add_read
      Src: /src/frr/lib/northbound_sysrepo.c:691,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:695,1
    - Dst: frr_sr_finish
      Src: /src/frr/lib/northbound_sysrepo.c:700,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 652
    functionDepth: 3
    functionLinenumber: 652
    functionLinenumberEnd: 703
    functionName: frr_sr_init
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 1
    functionsReached:
    - frr_sr_finish
    - sr_session_start
    - hook_register
    - sr_connect
    - sr_strerror
    - flog_err
    - yang_snodes_iterate
    - frr_sr_subscribe_config
    - sr_get_event_pipe
    - event_add_read
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int frr_sr_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound_sysrepo.c:709,1
    - Dst: sr_unsubscribe
      Src: /src/frr/lib/northbound_sysrepo.c:712,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/northbound_sysrepo.c:713,1
    - Dst: sr_session_stop
      Src: /src/frr/lib/northbound_sysrepo.c:717,1
    - Dst: sr_disconnect
      Src: /src/frr/lib/northbound_sysrepo.c:719,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 722
    functionName: frr_sr_finish
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 2
    functionsReached:
    - sr_session_stop
    - sr_disconnect
    - sr_unsubscribe
    - EVENT_OFF
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int frr_sr_finish(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_sr_init
      Src: /src/frr/lib/northbound_sysrepo.c:728,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound_sysrepo.c:729,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 724
    functionDepth: 4
    functionLinenumber: 724
    functionLinenumberEnd: 737
    functionName: frr_sr_module_config_loaded
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - flog_err
    - hook_register
    - frr_sr_init
    linkageType: ''
    returnType: int
    signature: int frr_sr_module_config_loaded(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_sr_cli_init
      Src: /src/frr/lib/northbound_sysrepo.c:741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 739
    functionDepth: 2
    functionLinenumber: 739
    functionLinenumberEnd: 744
    functionName: frr_sr_module_late_init
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - frr_sr_cli_init
    linkageType: ''
    returnType: int
    signature: int frr_sr_module_late_init(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:748,1
    - Dst: hook_register
      Src: /src/frr/lib/northbound_sysrepo.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 752
    functionName: frr_sr_module_init
    functionSourceFile: /src/frr/lib/northbound_sysrepo.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int frr_sr_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: rnode_is_dstnode
    functionSourceFile: /src/frr/lib/srcdest_table.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rnode_is_dstnode(const struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: rnode_is_srcnode
    functionSourceFile: /src/frr/lib/srcdest_table.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rnode_is_srcnode(const struct route_node *rn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rnode_is_srcnode
      Src: /src/frr/lib/srcdest_table.h:77,1
    - Dst: route_table_get_info
      Src: /src/frr/lib/srcdest_table.h:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: srcdest_rnode_table
    functionSourceFile: /src/frr/lib/srcdest_table.h
    functionUses: 3
    functionsReached:
    - rnode_is_srcnode
    - route_table_get_info
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *srcdest_rnode_table(struct route_node *rn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_info
      Src: /src/frr/lib/srcdest_table.h:87,1
    - Dst: srcdest_rnode_table
      Src: /src/frr/lib/srcdest_table.h:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rn
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: srcdest_rnode_table_info
    functionSourceFile: /src/frr/lib/srcdest_table.h
    functionUses: 7
    functionsReached:
    - srcdest_rnode_table
    - route_table_get_info
    linkageType: ''
    returnType: void
    signature: void *srcdest_rnode_table_info(struct route_node *rn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:14,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:17,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:20,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - role
    - buf
    - size
    argTypes:
    - enum mlag_role
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 25
    functionName: mlag_role2str
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *mlag_role2str(enum mlag_role role, char *buf, size_t size)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:31,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:34,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:37,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:40,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:43,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:46,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:49,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:52,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:55,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:58,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:61,1
    - Dst: snprintf
      Src: /src/frr/lib/mlag.c:64,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 3
    argNames:
    - msg_type
    - buf
    - size
    argTypes:
    - enum mlag_msg_type
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 68
    functionName: mlag_lib_msgid_to_str
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *mlag_lib_msgid_to_str(enum mlag_msg_type msg_type, char *buf,
      size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/lib/mlag.c:78,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:85,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/mlag.c:86,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/mlag.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - s
    - msg
    - length
    argTypes:
    - struct stream*
    - struct mlag_msg*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 92
    functionName: mlag_lib_decode_mlag_hdr
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 1
    functionsReached:
    - STREAM_GETW
    - STREAM_GETL
    - stream_get_endp
    linkageType: ''
    returnType: int
    signature: "int mlag_lib_decode_mlag_hdr(struct stream *s, struct mlag_msg *msg,\n\t\t\t
      \    size_t *length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/mlag.c:103,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:104,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:105,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:106,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:107,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/mlag.c:108,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/mlag.c:109,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:110,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/mlag.c:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - s
    - msg
    - length
    argTypes:
    - struct stream*
    - struct mlag_mroute_add*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 116
    functionName: mlag_lib_decode_mroute_add
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 1
    functionsReached:
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: "int mlag_lib_decode_mroute_add(struct stream *s, struct mlag_mroute_add
      *msg,\n\t\t\t       size_t *length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/mlag.c:126,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:127,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:128,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:129,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:130,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/mlag.c:131,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - s
    - msg
    - length
    argTypes:
    - struct stream*
    - struct mlag_mroute_del*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 136
    functionName: mlag_lib_decode_mroute_del
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 1
    functionsReached:
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: "int mlag_lib_decode_mroute_del(struct stream *s, struct mlag_mroute_del
      *msg,\n\t\t\t       size_t *length)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/mlag.c:143,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:144,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - s
    - msg
    argTypes:
    - struct stream*
    - struct mlag_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 149
    functionName: mlag_lib_decode_mlag_status
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 0
    functionsReached:
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int mlag_lib_decode_mlag_status(struct stream *s, struct mlag_status
      *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:156,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - s
    - msg
    argTypes:
    - struct stream*
    - struct mlag_vxlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 162
    functionName: mlag_lib_decode_vxlan_update
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 0
    functionsReached:
    - STREAM_GETL
    linkageType: ''
    returnType: int
    signature: int mlag_lib_decode_vxlan_update(struct stream *s, struct mlag_vxlan
      *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/mlag.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - s
    - msg
    argTypes:
    - struct stream*
    - struct mlag_frr_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 173
    functionName: mlag_lib_decode_frr_status
    functionSourceFile: /src/frr/lib/mlag.c
    functionUses: 0
    functionsReached:
    - STREAM_GETL
    linkageType: ''
    returnType: int
    signature: int mlag_lib_decode_frr_status(struct stream *s, struct mlag_frr_status
      *msg)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strcspn
      Src: /src/frr/lib/if.c:73,1
    - Dst: strcspn
      Src: /src/frr/lib/if.c:74,1
    - Dst: strcmp
      Src: /src/frr/lib/if.c:78,1
    - Dst: strncmp
      Src: /src/frr/lib/if.c:84,1
    - Dst: strtol
      Src: /src/frr/lib/if.c:101,1
    - Dst: strtol
      Src: /src/frr/lib/if.c:102,1
    - Dst: strspn
      Src: /src/frr/lib/if.c:111,1
    - Dst: strspn
      Src: /src/frr/lib/if.c:112,1
    - Dst: strcmp
      Src: /src/frr/lib/if.c:114,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 128
    functionName: if_cmp_name_func
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 3
    functionsReached:
    - strcmp
    - strtol
    - strspn
    - strncmp
    - strcspn
    linkageType: ''
    returnType: int
    signature: int if_cmp_name_func(const char *p1, const char *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmp_name_func
      Src: /src/frr/lib/if.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp1
    - ifp2
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: if_cmp_func
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - if_cmp_name_func
    linkageType: ''
    returnType: int
    signature: "int if_cmp_func(const struct interface *ifp1,\n\t\t       const struct
      interface *ifp2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ifp1
    - ifp2
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 145
    functionName: if_cmp_index_func
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int if_cmp_index_func(const struct interface *ifp1,\n\t\t\t     const
      struct interface *ifp2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: connected_free
      Src: /src/frr/lib/if.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 152
    functionName: ifp_connected_free
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - connected_free
    linkageType: ''
    returnType: void
    signature: void ifp_connected_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/if.c:159,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:161,1
    - Dst: list_new
      Src: /src/frr/lib/if.c:168,1
    - Dst: list_new
      Src: /src/frr/lib/if.c:171,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/if.c:175,1
    - Dst: QOBJ_REG
      Src: /src/frr/lib/if.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts:
    - condition: (vrf)
      pos:
        line_end: 158
        line_start: 158
        source_file: /src/frr/lib/if.c
    constantsTouched: []
    func_position:
      end: 179
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 179
    functionName: if_new
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 3
    functionsReached:
    - XCALLOC
    - QOBJ_REG
    - SET_FLAG
    - list_new
    - assert
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_new(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: if_new_via_zapi
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void if_new_via_zapi(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_set_index
      Src: /src/frr/lib/if.c:193,1
    - Dst: if_delete
      Src: /src/frr/lib/if.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 197
    functionName: if_destroy_via_zapi
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - if_delete
    - if_set_index
    linkageType: ''
    returnType: void
    signature: void if_destroy_via_zapi(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: if_up_via_zapi
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void if_up_via_zapi(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: if_down_via_zapi
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void if_down_via_zapi(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_new
      Src: /src/frr/lib/if.c:218,1
    - Dst: if_set_name
      Src: /src/frr/lib/if.c:220,1
    - Dst: hook_call
      Src: /src/frr/lib/if.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - name
    - vrf
    argTypes:
    - char*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 224
    functionName: if_create_name
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - if_set_name
    - if_new
    - hook_call
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_create_name(const char *name, struct vrf *vrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IFNAME_RB_REMOVE
      Src: /src/frr/lib/if.c:235,1
    - Dst: IFINDEX_RB_REMOVE
      Src: /src/frr/lib/if.c:238,1
    - Dst: vrf_get
      Src: /src/frr/lib/if.c:240,1
    - Dst: IFNAME_RB_INSERT
      Src: /src/frr/lib/if.c:244,1
    - Dst: IFINDEX_RB_INSERT
      Src: /src/frr/lib/if.c:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ifp
    - vrf_id
    argTypes:
    - struct interface*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 248
    functionName: if_update_to_new_vrf
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 5
    functionsReached:
    - IFINDEX_RB_REMOVE
    - IFNAME_RB_INSERT
    - vrf_get
    - IFINDEX_RB_INSERT
    - IFNAME_RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void if_update_to_new_vrf(struct interface *ifp, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/lib/if.c:254,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/lib/if.c:255,1
    - Dst: list_delete_all_node
      Src: /src/frr/lib/if.c:258,1
    - Dst: list_delete_all_node
      Src: /src/frr/lib/if.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 262
    functionName: if_delete_retain
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - list_delete_all_node
    - hook_call
    linkageType: ''
    returnType: void
    signature: void if_delete_retain(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IFNAME_RB_REMOVE
      Src: /src/frr/lib/if.c:270,1
    - Dst: IFINDEX_RB_REMOVE
      Src: /src/frr/lib/if.c:272,1
    - Dst: if_delete_retain
      Src: /src/frr/lib/if.c:274,1
    - Dst: list_delete
      Src: /src/frr/lib/if.c:276,1
    - Dst: list_delete
      Src: /src/frr/lib/if.c:277,1
    - Dst: if_link_params_free
      Src: /src/frr/lib/if.c:279,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:281,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 285
    functionName: if_delete
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 7
    functionsReached:
    - IFINDEX_RB_REMOVE
    - list_delete
    - if_link_params_free
    - if_delete_retain
    - XFREE
    - IFNAME_RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void if_delete(struct interface **ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:294,1
    - Dst: RB_FIND
      Src: /src/frr/lib/if.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ifindex
    - vrf_id
    argTypes:
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 300
    functionName: if_lookup_by_ifindex
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *if_lookup_by_ifindex(ifindex_t ifindex,\n\t\t\t\t\t
      \     vrf_id_t vrf_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_get_backend
      Src: /src/frr/lib/if.c:305,1
    - Dst: if_lookup_by_ifindex
      Src: /src/frr/lib/if.c:308,1
    - Dst: if_lookup_by_index_all_vrf
      Src: /src/frr/lib/if.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ifindex
    - vrf_id
    argTypes:
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 313
    functionName: if_lookup_by_index
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 55
    functionsReached:
    - vrf_get_backend
    - if_lookup_by_ifindex
    - if_lookup_by_index_all_vrf
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_lookup_by_index(ifindex_t ifindex, vrf_id_t vrf_id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:319,1
    - Dst: RB_MIN
      Src: /src/frr/lib/if.c:327,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:329,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:335,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:338,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - ifindex
    - vrf_id
    argTypes:
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 347
    functionName: if_vrf_lookup_by_index_next
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 1
    functionsReached:
    - RB_MIN
    - if_is_vrf
    - RB_FOREACH
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *if_vrf_lookup_by_index_next(ifindex_t ifindex,\n\t\t\t\t\t
      \     vrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/lib/if.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifindex
    - vrf_id
    argTypes:
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 349
    functionDepth: 4
    functionLinenumber: 349
    functionLinenumberEnd: 356
    functionName: ifindex2ifname
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 38
    functionsReached:
    - if_lookup_by_index
    linkageType: ''
    returnType: char
    signature: char *ifindex2ifname(ifindex_t ifindex, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/lib/if.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - vrf_id
    argTypes:
    - char*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 365
    functionName: ifname2ifindex
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 4
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: ifindex_t
    signature: ifindex_t ifname2ifindex(const char *name, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:370,1
    - Dst: strnlen
      Src: /src/frr/lib/if.c:374,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:377,1
    - Dst: RB_FIND
      Src: /src/frr/lib/if.c:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - name
    - vrf_id
    argTypes:
    - char*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 379
    functionName: if_lookup_by_name
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 36
    functionsReached:
    - RB_FIND
    - strlcpy
    - vrf_lookup_by_id
    - strnlen
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_lookup_by_name(const char *name, vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/frr/lib/if.c:385,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:388,1
    - Dst: RB_FIND
      Src: /src/frr/lib/if.c:389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - name
    - vrf
    argTypes:
    - char*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 390
    functionName: if_lookup_by_name_vrf
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 5
    functionsReached:
    - RB_FIND
    - strlcpy
    - strnlen
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_lookup_by_name_vrf(const char *name, struct vrf
      *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/frr/lib/if.c:397,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:400,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/lib/if.c:401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 407
    functionName: if_lookup_by_name_all_vrf
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - if_lookup_by_name_vrf
    - strnlen
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_lookup_by_name_all_vrf(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:417,1
    - Dst: if_lookup_by_ifindex
      Src: /src/frr/lib/if.c:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ifindex
    argTypes:
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 409
    functionDepth: 3
    functionLinenumber: 409
    functionLinenumberEnd: 424
    functionName: if_lookup_by_index_all_vrf
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 1
    functionsReached:
    - if_lookup_by_ifindex
    - RB_FOREACH
    linkageType: ''
    returnType: struct interface
    signature: struct interface *if_lookup_by_index_all_vrf(ifindex_t ifindex)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:438,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:448,1
    - Dst: if
      Src: /src/frr/lib/if.c:451,1
    - Dst: if
      Src: /src/frr/lib/if.c:454,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/if.c:455,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/if.c:459,1
    - Dst: if_is_up
      Src: /src/frr/lib/if.c:464,1
    - Dst: if_lookup_address
      Src: /src/frr/lib/if.c:474,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:477,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:499,1
    - Dst: prefix_match
      Src: /src/frr/lib/if.c:501,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/lib/if.c:501,1
    - Dst: if_lookup_prefix
      Src: /src/frr/lib/if.c:512,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:514,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:519,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:520,1
    - Dst: prefix_cmp
      Src: /src/frr/lib/if.c:521,1
    - Dst: if_lookup_by_hwaddr
      Src: /src/frr/lib/if.c:529,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:532,1
    - Dst: list_new
      Src: /src/frr/lib/if.c:534,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:537,1
    - Dst: memcmp
      Src: /src/frr/lib/if.c:539,1
    - Dst: listnode_add
      Src: /src/frr/lib/if.c:540,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:544,1
    - Dst: list_to_array
      Src: /src/frr/lib/if.c:546,1
    - Dst: list_delete
      Src: /src/frr/lib/if.c:551,1
    - Dst: if_get_vrf_loopback
      Src: /src/frr/lib/if.c:559,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:562,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:564,1
    - Dst: if
      Src: /src/frr/lib/if.c:565,1
    - Dst: if_is_loopback
      Src: /src/frr/lib/if.c:565,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/if.c:573,1
    - Dst: vrf_get_backend
      Src: /src/frr/lib/if.c:579,1
    - Dst: vrf_get
      Src: /src/frr/lib/if.c:582,1
    - Dst: assert
      Src: /src/frr/lib/if.c:583,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/lib/if.c:585,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/lib/if.c:591,1
    - Dst: if_lookup_by_name_all_vrf
      Src: /src/frr/lib/if.c:598,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/lib/if.c:604,1
    - Dst: vrf_get
      Src: /src/frr/lib/if.c:609,1
    - Dst: assert
      Src: /src/frr/lib/if.c:610,1
    - Dst: if_create_name
      Src: /src/frr/lib/if.c:617,1
    - Dst: if_set_index
      Src: /src/frr/lib/if.c:620,1
    - Dst: if_lookup_by_ifindex
      Src: /src/frr/lib/if.c:629,1
    - Dst: IFINDEX_RB_REMOVE
      Src: /src/frr/lib/if.c:633,1
    - Dst: IFINDEX_RB_INSERT
      Src: /src/frr/lib/if.c:643,1
    - Dst: if_set_name
      Src: /src/frr/lib/if.c:650,1
    - Dst: if_cmp_name_func
      Src: /src/frr/lib/if.c:652,1
    - Dst: IFNAME_RB_REMOVE
      Src: /src/frr/lib/if.c:656,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:658,1
    - Dst: IFNAME_RB_INSERT
      Src: /src/frr/lib/if.c:661,1
    - Dst: if_is_up
      Src: /src/frr/lib/if.c:665,1
    - Dst: if_is_running
      Src: /src/frr/lib/if.c:671,1
    - Dst: if_is_operative
      Src: /src/frr/lib/if.c:679,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:684,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/lib/if.c:690,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:694,1
    - Dst: if_is_loopback_exact
      Src: /src/frr/lib/if.c:699,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:708,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:710,1
    - Dst: if_is_loopback
      Src: /src/frr/lib/if.c:714,1
    - Dst: if_is_loopback_exact
      Src: /src/frr/lib/if.c:716,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:716,1
    - Dst: if_is_broadcast
      Src: /src/frr/lib/if.c:723,1
    - Dst: if_is_pointopoint
      Src: /src/frr/lib/if.c:729,1
    - Dst: if_is_multicast
      Src: /src/frr/lib/if.c:735,1
    - Dst: if_flag_dump
      Src: /src/frr/lib/if.c:741,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:746,1
    - Dst: if
      Src: /src/frr/lib/if.c:747,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:749,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:752,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:755,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:756,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:757,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:758,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:759,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:760,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:761,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:762,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:763,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:764,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:765,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:766,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:767,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:768,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:769,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:770,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:771,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:772,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:773,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:774,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:775,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:776,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:778,1
    - Dst: if_dump
      Src: /src/frr/lib/if.c:785,1
    - Dst: __attribute__
      Src: /src/frr/lib/if.c:788,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:790,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:791,1
    - Dst: if_flag_dump
      Src: /src/frr/lib/if.c:795,1
    - Dst: if_dump_all
      Src: /src/frr/lib/if.c:799,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:804,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:805,1
    - Dst: if_dump
      Src: /src/frr/lib/if.c:806,1
    - Dst: connected_new
      Src: /src/frr/lib/if.c:810,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:812,1
    - Dst: nbr_connected_new
      Src: /src/frr/lib/if.c:816,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:818,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:831,1
    - Dst: prefix_free
      Src: /src/frr/lib/if.c:839,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:841,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:851,1
    - Dst: prefix_same
      Src: /src/frr/lib/if.c:852,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:870,1
    - Dst: prefix_family_str
      Src: /src/frr/lib/if.c:872,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:876,1
    - Dst: inet_ntop
      Src: /src/frr/lib/if.c:876,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:879,1
    - Dst: __attribute__
      Src: /src/frr/lib/if.c:883,1
    - Dst: nbr_connected_log
      Src: /src/frr/lib/if.c:884,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:893,1
    - Dst: prefix_family_str
      Src: /src/frr/lib/if.c:894,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:896,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:900,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/if.c:905,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/if.c:908,1
    - Dst: connected_count_by_family
      Src: /src/frr/lib/if.c:915,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:921,1
    - Dst: if
      Src: /src/frr/lib/if.c:922,1
    - Dst: connected_lookup_prefix_exact
      Src: /src/frr/lib/if.c:928,1
    - Dst: listhead
      Src: /src/frr/lib/if.c:935,1
    - Dst: listgetdata
      Src: /src/frr/lib/if.c:936,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:939,1
    - Dst: connected_delete_by_prefix
      Src: /src/frr/lib/if.c:945,1
    - Dst: listhead
      Src: /src/frr/lib/if.c:953,1
    - Dst: listgetdata
      Src: /src/frr/lib/if.c:954,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:957,1
    - Dst: listnode_delete
      Src: /src/frr/lib/if.c:958,1
    - Dst: connected_lookup_prefix
      Src: /src/frr/lib/if.c:967,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:976,1
    - Dst: prefix_match
      Src: /src/frr/lib/if.c:978,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/lib/if.c:978,1
    - Dst: connected_add_by_prefix
      Src: /src/frr/lib/if.c:986,1
    - Dst: connected_new
      Src: /src/frr/lib/if.c:993,1
    - Dst: prefix_new
      Src: /src/frr/lib/if.c:997,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:998,1
    - Dst: prefix_new
      Src: /src/frr/lib/if.c:1002,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1003,1
    - Dst: listnode_add
      Src: /src/frr/lib/if.c:1007,1
    - Dst: connected_get_linklocal
      Src: /src/frr/lib/if.c:1011,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:1016,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/if.c:1018,1
    - Dst: if_terminate
      Src: /src/frr/lib/if.c:1024,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/if.c:1028,1
    - Dst: RB_ROOT
      Src: /src/frr/lib/if.c:1029,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/if.c:1033,1
    - Dst: if_delete
      Src: /src/frr/lib/if.c:1036,1
    - Dst: if_link_type_str
      Src: /src/frr/lib/if.c:1040,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1044,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1045,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1046,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1047,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1048,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1049,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1050,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1051,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1052,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1053,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1054,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1055,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1056,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1057,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1058,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1059,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1060,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1061,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1062,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1063,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1064,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1065,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1066,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1067,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1068,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1069,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1070,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1071,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1072,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1073,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1074,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1075,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1076,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1077,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1078,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1079,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1080,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1081,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1082,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1083,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1084,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1085,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1086,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1087,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1088,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1089,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1090,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1091,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1092,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1093,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1109,1
    - Dst: memset
      Src: /src/frr/lib/if.c:1110,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1112,1
    - Dst: memset
      Src: /src/frr/lib/if.c:1113,1
    - Dst: memcmp
      Src: /src/frr/lib/if.c:1115,1
    - Dst: admin_group_cmp
      Src: /src/frr/lib/if.c:1118,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1129,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1131,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1133,1
    - Dst: admin_group_copy
      Src: /src/frr/lib/if.c:1135,1
    - Dst: if_link_params_init
      Src: /src/frr/lib/if.c:1148,1
    - Dst: if_link_params_get
      Src: /src/frr/lib/if.c:1178,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:1183,1
    - Dst: admin_group_init
      Src: /src/frr/lib/if.c:1185,1
    - Dst: admin_group_term
      Src: /src/frr/lib/if.c:1197,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:1198,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:1210,1
    - Dst: strmatch
      Src: /src/frr/lib/if.c:1212,1
    - Dst: DEFPY_YANG_NOSH
      Src: /src/frr/lib/if.c:1225,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1237,1
    - Dst: vrfname_by_ifname
      Src: /src/frr/lib/if.c:1244,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1249,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1253,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/if.c:1257,1
    - Dst: nb_cli_apply_changes_clear_pending
      Src: /src/frr/lib/if.c:1258,1
    - Dst: VTY_PUSH_XPATH
      Src: /src/frr/lib/if.c:1260,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1268,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/if.c:1269,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/lib/if.c:1271,1
    - Dst: if_lookup_by_name_all_vrf
      Src: /src/frr/lib/if.c:1275,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/lib/if.c:1278,1
    - Dst: DEFPY_YANG
      Src: /src/frr/lib/if.c:1284,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1295,1
    - Dst: vrfname_by_ifname
      Src: /src/frr/lib/if.c:1302,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1307,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1311,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/if.c:1315,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/if.c:1317,1
    - Dst: assert
      Src: /src/frr/lib/if.c:1325,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1325,1
    - Dst: strchr
      Src: /src/frr/lib/if.c:1327,1
    - Dst: assert
      Src: /src/frr/lib/if.c:1328,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1331,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:1334,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1340,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1342,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1346,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1346,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1349,1
    - Dst: strmatch
      Src: /src/frr/lib/if.c:1350,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1351,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1353,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1355,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1358,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1364,1
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1369,1
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1370,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1372,1
    - Dst: strcmp
      Src: /src/frr/lib/if.c:1372,1
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1373,1
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1375,1
    - Dst: vty_endframe
      Src: /src/frr/lib/if.c:1380,1
    - Dst: DEFPY_YANG
      Src: /src/frr/lib/if.c:1386,1
    - Dst: argv_concat
      Src: /src/frr/lib/if.c:1395,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/if.c:1396,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/if.c:1397,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:1398,1
    - Dst: DEFPY_YANG
      Src: /src/frr/lib/if.c:1403,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/if.c:1409,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/if.c:1411,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1418,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1418,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:1427,1
    - Dst: vector_set
      Src: /src/frr/lib/if.c:1429,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if.c:1429,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/if.c:1451,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/lib/if.c:1458,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/if.c:1465,1
    - Dst: install_node
      Src: /src/frr/lib/if.c:1468,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1470,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1471,1
    - Dst: install_default
      Src: /src/frr/lib/if.c:1473,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1474,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1475,1
    - Dst: if_cmd_init
      Src: /src/frr/lib/if.c:1480,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1504,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1508,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1512,1
    - Dst: strlen
      Src: /src/frr/lib/if.c:1514,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1515,1
    - Dst: strlen
      Src: /src/frr/lib/if.c:1520,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1521,1
    - Dst: strlen
      Src: /src/frr/lib/if.c:1527,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1528,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1539,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1543,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/if.c:1545,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/if.c:1548,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/if.c:1553,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/if.c:1567,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:1568,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1569,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/if.c:1578,1
    - Dst: if_delete
      Src: /src/frr/lib/if.c:1582,1
    - Dst: vrf_is_enabled
      Src: /src/frr/lib/if.c:1584,1
    - Dst: vrf_delete
      Src: /src/frr/lib/if.c:1585,1
    - Dst: RB_MIN
      Src: /src/frr/lib/if.c:1601,1
    - Dst: assert
      Src: /src/frr/lib/if.c:1602,1
    - Dst: RB_MIN
      Src: /src/frr/lib/if.c:1603,1
    - Dst: RB_NEXT
      Src: /src/frr/lib/if.c:1606,1
    - Dst: RB_NEXT
      Src: /src/frr/lib/if.c:1609,1
    - Dst: RB_MIN
      Src: /src/frr/lib/if.c:1612,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1625,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1626,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1629,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1638,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1643,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/if.c:1645,1
    - Dst: if_lookup_by_name
      Src: /src/frr/lib/if.c:1647,1
    - Dst: if_lookup_by_name_all_vrf
      Src: /src/frr/lib/if.c:1649,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/if.c:1664,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:1665,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1666,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if.c:1667,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/if.c:1679,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:1680,1
    - Dst: yang_data_new_string
      Src: /src/frr/lib/if.c:1693,1
    - Dst: yang_data_new_int32
      Src: /src/frr/lib/if.c:1704,1
    - Dst: yang_data_new_uint16
      Src: /src/frr/lib/if.c:1715,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/lib/if.c:1726,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/lib/if.c:1737,1
    - Dst: yang_data_new_uint32
      Src: /src/frr/lib/if.c:1748,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1780,1
    - Dst: yang_data_new_mac
      Src: /src/frr/lib/if.c:1782,1
    CyclomaticComplexity: 70
    EdgeCount: 70
    ICount: 361
    argCount: 3
    argNames:
    - src
    - family
    - vrf_id
    argTypes:
    - void*
    - int
    - vrf_id_t
    assertStmts:
    - condition: (vrf_is_backend_netns())
      pos:
        line_end: 1324
        line_start: 1324
        source_file: /src/frr/lib/if.c
    - condition: (delim)
      pos:
        line_end: 1327
        line_start: 1327
        source_file: /src/frr/lib/if.c
    - condition: (vrf)
      pos:
        line_end: 1601
        line_start: 1601
        source_file: /src/frr/lib/if.c
    - condition: (vrf)
      pos:
        line_end: 582
        line_start: 582
        source_file: /src/frr/lib/if.c
    - condition: (vrf)
      pos:
        line_end: 609
        line_start: 609
        source_file: /src/frr/lib/if.c
    constantsTouched: []
    func_position:
      end: 1867
      start: 435
    functionDepth: 7
    functionLinenumber: 435
    functionLinenumberEnd: 1867
    functionName: if_lookup_address_local
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 2
    functionsReached:
    - connected_get_linklocal
    - admin_group_cmp
    - if_get_by_name
    - yang_data_new_int32
    - listhead
    - vrf_lookup_by_name
    - if_lookup_by_hwaddr
    - IPV4_ADDR_SAME
    - strchr
    - vrf_delete
    - list_to_array
    - RB_EMPTY
    - strlcat
    - nbr_connected_new
    - if_link_type_str
    - if_lookup_prefix
    - XCALLOC
    - snprintf
    - memset
    - if_is_loopback
    - vrf_is_enabled
    - vector_set
    - if
    - if_flag_dump
    - listgetdata
    - vrfname_by_ifname
    - if_set_name
    - if_is_up
    - if_update_to_new_vrf
    - route_unlock_node
    - if_is_no_ptm_operative
    - connected_new
    - admin_group_init
    - if_is_vrf
    - IFINDEX_RB_INSERT
    - if_link_params_get
    - nbr_connected_log
    - if_dump_all
    - memcpy
    - connected_lookup_prefix_exact
    - list_new
    - nb_cli_apply_changes_clear_pending
    - nb_cli_show_dnode_cmds
    - yang_data_new_string
    - vrf_get_backend
    - IFINDEX_RB_REMOVE
    - nb_running_set_entry
    - if_is_broadcast
    - nb_running_get_entry
    - if_lookup_by_name_all_vrf
    - inet_ntop
    - CONNECTED_PREFIX
    - if_link_params_init
    - if_delete
    - if_lookup_address
    - prefix_family_str
    - connected_count_by_family
    - install_default
    - nb_cli_apply_changes
    - vty_endframe
    - if_set_index
    - IFNAME_RB_INSERT
    - connected_lookup_prefix
    - yang_data_new_uint16
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - if_lookup_by_name_vrf
    - RB_FOREACH
    - if_is_operative
    - vrf_is_backend_netns
    - strlen
    - vrf_get
    - memcmp
    - nb_running_unset_entry
    - DEFPY_YANG
    - admin_group_copy
    - install_element
    - IFNAME_RB_REMOVE
    - yang_data_new_uint32
    - strmatch
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    - RB_MIN
    - RB_ROOT
    - assert
    - zlog_info
    - vty_out
    - strlcpy
    - nb_cli_enqueue_change
    - yang_data_new_mac
    - llts
    - XFREE
    - cmd_variable_handler_register
    - install_node
    - if_lookup_by_ifindex
    - IPV6_ADDR_SAME
    - vty_frame
    - connected_same_prefix
    - list_delete
    - if_terminate
    - connected_add_by_prefix
    - if_cmp_name_func
    - RB_NEXT
    - listnode_add
    - yang_dnode_get_string
    - IFF_OUT_LOG
    - admin_group_term
    - DEFPY_YANG_NOSH
    - prefix_free
    - yang_dnode_iterate
    - prefix_match
    - prefix_cmp
    - ALL_LIST_ELEMENTS_RO
    - if_create_name
    - if_is_multicast
    - if_get_vrf_loopback
    - prefix_same
    - prefix_new
    - VTY_PUSH_XPATH
    - argv_concat
    - if_cmd_init
    - connected_delete_by_prefix
    - listnode_delete
    - netns_ifname_split
    - XSTRDUP
    - if_is_loopback_exact
    - if_is_pointopoint
    - __attribute__
    - if_lookup_by_name
    - CHECK_FLAG
    - if_is_running
    - if_dump
    - VTY_PUSH_CONTEXT
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *if_lookup_address_local(const void *src, int family,\n\t\t\t\t\t
      \ vrf_id_t vrf_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:448,1
    - Dst: if
      Src: /src/frr/lib/if.c:451,1
    - Dst: if
      Src: /src/frr/lib/if.c:454,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/if.c:455,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/if.c:459,1
    - Dst: if_is_up
      Src: /src/frr/lib/if.c:464,1
    - Dst: if_lookup_address
      Src: /src/frr/lib/if.c:474,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:477,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:499,1
    - Dst: prefix_match
      Src: /src/frr/lib/if.c:501,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/lib/if.c:501,1
    - Dst: if_lookup_prefix
      Src: /src/frr/lib/if.c:512,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:514,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:519,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:520,1
    - Dst: prefix_cmp
      Src: /src/frr/lib/if.c:521,1
    - Dst: if_lookup_by_hwaddr
      Src: /src/frr/lib/if.c:529,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:532,1
    - Dst: list_new
      Src: /src/frr/lib/if.c:534,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:537,1
    - Dst: memcmp
      Src: /src/frr/lib/if.c:539,1
    - Dst: listnode_add
      Src: /src/frr/lib/if.c:540,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:544,1
    - Dst: list_to_array
      Src: /src/frr/lib/if.c:546,1
    - Dst: list_delete
      Src: /src/frr/lib/if.c:551,1
    - Dst: if_get_vrf_loopback
      Src: /src/frr/lib/if.c:559,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:562,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:564,1
    - Dst: if
      Src: /src/frr/lib/if.c:565,1
    - Dst: if_is_loopback
      Src: /src/frr/lib/if.c:565,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/if.c:573,1
    - Dst: vrf_get_backend
      Src: /src/frr/lib/if.c:579,1
    - Dst: vrf_get
      Src: /src/frr/lib/if.c:582,1
    - Dst: assert
      Src: /src/frr/lib/if.c:583,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/lib/if.c:585,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/lib/if.c:591,1
    - Dst: if_lookup_by_name_all_vrf
      Src: /src/frr/lib/if.c:598,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/lib/if.c:604,1
    - Dst: vrf_get
      Src: /src/frr/lib/if.c:609,1
    - Dst: assert
      Src: /src/frr/lib/if.c:610,1
    - Dst: if_create_name
      Src: /src/frr/lib/if.c:617,1
    - Dst: if_set_index
      Src: /src/frr/lib/if.c:620,1
    - Dst: if_lookup_by_ifindex
      Src: /src/frr/lib/if.c:629,1
    - Dst: IFINDEX_RB_REMOVE
      Src: /src/frr/lib/if.c:633,1
    - Dst: IFINDEX_RB_INSERT
      Src: /src/frr/lib/if.c:643,1
    - Dst: if_set_name
      Src: /src/frr/lib/if.c:650,1
    - Dst: if_cmp_name_func
      Src: /src/frr/lib/if.c:652,1
    - Dst: IFNAME_RB_REMOVE
      Src: /src/frr/lib/if.c:656,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:658,1
    - Dst: IFNAME_RB_INSERT
      Src: /src/frr/lib/if.c:661,1
    - Dst: if_is_up
      Src: /src/frr/lib/if.c:665,1
    - Dst: if_is_running
      Src: /src/frr/lib/if.c:671,1
    - Dst: if_is_operative
      Src: /src/frr/lib/if.c:679,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:684,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/lib/if.c:690,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:694,1
    - Dst: if_is_loopback_exact
      Src: /src/frr/lib/if.c:699,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:708,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:710,1
    - Dst: if_is_loopback
      Src: /src/frr/lib/if.c:714,1
    - Dst: if_is_loopback_exact
      Src: /src/frr/lib/if.c:716,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:716,1
    - Dst: if_is_broadcast
      Src: /src/frr/lib/if.c:723,1
    - Dst: if_is_pointopoint
      Src: /src/frr/lib/if.c:729,1
    - Dst: if_is_multicast
      Src: /src/frr/lib/if.c:735,1
    - Dst: if_flag_dump
      Src: /src/frr/lib/if.c:741,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:746,1
    - Dst: if
      Src: /src/frr/lib/if.c:747,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:749,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:752,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:755,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:756,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:757,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:758,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:759,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:760,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:761,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:762,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:763,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:764,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:765,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:766,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:767,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:768,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:769,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:770,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:771,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:772,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:773,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:774,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:775,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:776,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:778,1
    - Dst: if_dump
      Src: /src/frr/lib/if.c:785,1
    - Dst: __attribute__
      Src: /src/frr/lib/if.c:788,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:790,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:791,1
    - Dst: if_flag_dump
      Src: /src/frr/lib/if.c:795,1
    - Dst: if_dump_all
      Src: /src/frr/lib/if.c:799,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:804,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:805,1
    - Dst: if_dump
      Src: /src/frr/lib/if.c:806,1
    - Dst: connected_new
      Src: /src/frr/lib/if.c:810,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:812,1
    - Dst: nbr_connected_new
      Src: /src/frr/lib/if.c:816,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:818,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:831,1
    - Dst: prefix_free
      Src: /src/frr/lib/if.c:839,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:841,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:851,1
    - Dst: prefix_same
      Src: /src/frr/lib/if.c:852,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:870,1
    - Dst: prefix_family_str
      Src: /src/frr/lib/if.c:872,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:876,1
    - Dst: inet_ntop
      Src: /src/frr/lib/if.c:876,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:879,1
    - Dst: __attribute__
      Src: /src/frr/lib/if.c:883,1
    - Dst: nbr_connected_log
      Src: /src/frr/lib/if.c:884,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:893,1
    - Dst: prefix_family_str
      Src: /src/frr/lib/if.c:894,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:896,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:900,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/if.c:905,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/if.c:908,1
    - Dst: connected_count_by_family
      Src: /src/frr/lib/if.c:915,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:921,1
    - Dst: if
      Src: /src/frr/lib/if.c:922,1
    - Dst: connected_lookup_prefix_exact
      Src: /src/frr/lib/if.c:928,1
    - Dst: listhead
      Src: /src/frr/lib/if.c:935,1
    - Dst: listgetdata
      Src: /src/frr/lib/if.c:936,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:939,1
    - Dst: connected_delete_by_prefix
      Src: /src/frr/lib/if.c:945,1
    - Dst: listhead
      Src: /src/frr/lib/if.c:953,1
    - Dst: listgetdata
      Src: /src/frr/lib/if.c:954,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:957,1
    - Dst: listnode_delete
      Src: /src/frr/lib/if.c:958,1
    - Dst: connected_lookup_prefix
      Src: /src/frr/lib/if.c:967,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:976,1
    - Dst: prefix_match
      Src: /src/frr/lib/if.c:978,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/lib/if.c:978,1
    - Dst: connected_add_by_prefix
      Src: /src/frr/lib/if.c:986,1
    - Dst: connected_new
      Src: /src/frr/lib/if.c:993,1
    - Dst: prefix_new
      Src: /src/frr/lib/if.c:997,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:998,1
    - Dst: prefix_new
      Src: /src/frr/lib/if.c:1002,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1003,1
    - Dst: listnode_add
      Src: /src/frr/lib/if.c:1007,1
    - Dst: connected_get_linklocal
      Src: /src/frr/lib/if.c:1011,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:1016,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/if.c:1018,1
    - Dst: if_terminate
      Src: /src/frr/lib/if.c:1024,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/if.c:1028,1
    - Dst: RB_ROOT
      Src: /src/frr/lib/if.c:1029,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/if.c:1033,1
    - Dst: if_delete
      Src: /src/frr/lib/if.c:1036,1
    - Dst: if_link_type_str
      Src: /src/frr/lib/if.c:1040,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1044,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1045,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1046,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1047,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1048,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1049,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1050,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1051,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1052,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1053,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1054,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1055,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1056,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1057,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1058,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1059,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1060,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1061,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1062,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1063,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1064,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1065,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1066,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1067,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1068,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1069,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1070,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1071,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1072,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1073,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1074,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1075,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1076,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1077,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1078,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1079,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1080,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1081,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1082,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1083,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1084,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1085,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1086,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1087,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1088,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1089,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1090,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1091,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1092,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1093,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (vrf)
      pos:
        line_end: 582
        line_start: 582
        source_file: /src/frr/lib/if.c
    - condition: (vrf)
      pos:
        line_end: 609
        line_start: 609
        source_file: /src/frr/lib/if.c
    constantsTouched: []
    func_position:
      end: 1097
      start: 447
    functionDepth: 4
    functionLinenumber: 447
    functionLinenumberEnd: 1097
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 36
    functionsReached:
    - connected_get_linklocal
    - if_get_by_name
    - listhead
    - if_lookup_by_hwaddr
    - IPV4_ADDR_SAME
    - list_to_array
    - RB_EMPTY
    - strlcat
    - nbr_connected_new
    - if_link_type_str
    - if_lookup_prefix
    - XCALLOC
    - snprintf
    - if_is_loopback
    - if
    - if_flag_dump
    - listgetdata
    - if_set_name
    - if_is_up
    - if_update_to_new_vrf
    - route_unlock_node
    - if_is_no_ptm_operative
    - connected_new
    - if_is_vrf
    - IFINDEX_RB_INSERT
    - nbr_connected_log
    - if_dump_all
    - memcpy
    - connected_lookup_prefix_exact
    - list_new
    - vrf_get_backend
    - IFINDEX_RB_REMOVE
    - if_is_broadcast
    - if_lookup_by_name_all_vrf
    - inet_ntop
    - CONNECTED_PREFIX
    - if_delete
    - if_lookup_address
    - prefix_family_str
    - connected_count_by_family
    - if_set_index
    - IFNAME_RB_INSERT
    - connected_lookup_prefix
    - IN6_IS_ADDR_LINKLOCAL
    - if_lookup_by_name_vrf
    - RB_FOREACH
    - if_is_operative
    - vrf_get
    - memcmp
    - IFNAME_RB_REMOVE
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    - RB_ROOT
    - assert
    - zlog_info
    - strlcpy
    - llts
    - XFREE
    - if_lookup_by_ifindex
    - IPV6_ADDR_SAME
    - connected_same_prefix
    - list_delete
    - if_terminate
    - connected_add_by_prefix
    - if_cmp_name_func
    - listnode_add
    - IFF_OUT_LOG
    - prefix_free
    - prefix_match
    - prefix_cmp
    - ALL_LIST_ELEMENTS_RO
    - if_create_name
    - if_is_multicast
    - if_get_vrf_loopback
    - prefix_same
    - prefix_new
    - connected_delete_by_prefix
    - listnode_delete
    - if_is_loopback_exact
    - if_is_pointopoint
    - __attribute__
    - CHECK_FLAG
    - if_is_running
    - if_dump
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:499,1
    - Dst: prefix_match
      Src: /src/frr/lib/if.c:501,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/lib/if.c:501,1
    - Dst: if_lookup_prefix
      Src: /src/frr/lib/if.c:512,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:514,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:519,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:520,1
    - Dst: prefix_cmp
      Src: /src/frr/lib/if.c:521,1
    - Dst: if_lookup_by_hwaddr
      Src: /src/frr/lib/if.c:529,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:532,1
    - Dst: list_new
      Src: /src/frr/lib/if.c:534,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:537,1
    - Dst: memcmp
      Src: /src/frr/lib/if.c:539,1
    - Dst: listnode_add
      Src: /src/frr/lib/if.c:540,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:544,1
    - Dst: list_to_array
      Src: /src/frr/lib/if.c:546,1
    - Dst: list_delete
      Src: /src/frr/lib/if.c:551,1
    - Dst: if_get_vrf_loopback
      Src: /src/frr/lib/if.c:559,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/if.c:562,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:564,1
    - Dst: if
      Src: /src/frr/lib/if.c:565,1
    - Dst: if_is_loopback
      Src: /src/frr/lib/if.c:565,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/if.c:573,1
    - Dst: vrf_get_backend
      Src: /src/frr/lib/if.c:579,1
    - Dst: vrf_get
      Src: /src/frr/lib/if.c:582,1
    - Dst: assert
      Src: /src/frr/lib/if.c:583,1
    - Dst: if_lookup_by_name_vrf
      Src: /src/frr/lib/if.c:585,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/lib/if.c:591,1
    - Dst: if_lookup_by_name_all_vrf
      Src: /src/frr/lib/if.c:598,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/lib/if.c:604,1
    - Dst: vrf_get
      Src: /src/frr/lib/if.c:609,1
    - Dst: assert
      Src: /src/frr/lib/if.c:610,1
    - Dst: if_create_name
      Src: /src/frr/lib/if.c:617,1
    - Dst: if_set_index
      Src: /src/frr/lib/if.c:620,1
    - Dst: if_lookup_by_ifindex
      Src: /src/frr/lib/if.c:629,1
    - Dst: IFINDEX_RB_REMOVE
      Src: /src/frr/lib/if.c:633,1
    - Dst: IFINDEX_RB_INSERT
      Src: /src/frr/lib/if.c:643,1
    - Dst: if_set_name
      Src: /src/frr/lib/if.c:650,1
    - Dst: if_cmp_name_func
      Src: /src/frr/lib/if.c:652,1
    - Dst: IFNAME_RB_REMOVE
      Src: /src/frr/lib/if.c:656,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:658,1
    - Dst: IFNAME_RB_INSERT
      Src: /src/frr/lib/if.c:661,1
    - Dst: if_is_up
      Src: /src/frr/lib/if.c:665,1
    - Dst: if_is_running
      Src: /src/frr/lib/if.c:671,1
    - Dst: if_is_operative
      Src: /src/frr/lib/if.c:679,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:684,1
    - Dst: if_is_no_ptm_operative
      Src: /src/frr/lib/if.c:690,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:694,1
    - Dst: if_is_loopback_exact
      Src: /src/frr/lib/if.c:699,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:708,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:710,1
    - Dst: if_is_loopback
      Src: /src/frr/lib/if.c:714,1
    - Dst: if_is_loopback_exact
      Src: /src/frr/lib/if.c:716,1
    - Dst: if_is_vrf
      Src: /src/frr/lib/if.c:716,1
    - Dst: if_is_broadcast
      Src: /src/frr/lib/if.c:723,1
    - Dst: if_is_pointopoint
      Src: /src/frr/lib/if.c:729,1
    - Dst: if_is_multicast
      Src: /src/frr/lib/if.c:735,1
    - Dst: if_flag_dump
      Src: /src/frr/lib/if.c:741,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:746,1
    - Dst: if
      Src: /src/frr/lib/if.c:747,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:749,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:752,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:755,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:756,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:757,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:758,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:759,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:760,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:761,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:762,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:763,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:764,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:765,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:766,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:767,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:768,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:769,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:770,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:771,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:772,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:773,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:774,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:775,1
    - Dst: IFF_OUT_LOG
      Src: /src/frr/lib/if.c:776,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:778,1
    - Dst: if_dump
      Src: /src/frr/lib/if.c:785,1
    - Dst: __attribute__
      Src: /src/frr/lib/if.c:788,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:790,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:791,1
    - Dst: if_flag_dump
      Src: /src/frr/lib/if.c:795,1
    - Dst: if_dump_all
      Src: /src/frr/lib/if.c:799,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:804,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/lib/if.c:805,1
    - Dst: if_dump
      Src: /src/frr/lib/if.c:806,1
    - Dst: connected_new
      Src: /src/frr/lib/if.c:810,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:812,1
    - Dst: nbr_connected_new
      Src: /src/frr/lib/if.c:816,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:818,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:831,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (vrf)
      pos:
        line_end: 582
        line_start: 582
        source_file: /src/frr/lib/if.c
    - condition: (vrf)
      pos:
        line_end: 609
        line_start: 609
        source_file: /src/frr/lib/if.c
    constantsTouched: []
    func_position:
      end: 833
      start: 498
    functionDepth: 4
    functionLinenumber: 498
    functionLinenumberEnd: 833
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 37
    functionsReached:
    - vrf_get_backend
    - IFINDEX_RB_REMOVE
    - list_delete
    - if_get_by_name
    - vrf_get
    - if_cmp_name_func
    - if_lookup_by_hwaddr
    - memcmp
    - listnode_add
    - list_to_array
    - IFF_OUT_LOG
    - IFNAME_RB_REMOVE
    - strlcat
    - if_is_broadcast
    - nbr_connected_new
    - if_lookup_prefix
    - prefix_match
    - prefix_cmp
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - if_create_name
    - RB_FOREACH
    - FOR_ALL_INTERFACES
    - if_lookup_by_name_all_vrf
    - CONNECTED_PREFIX
    - vrf_lookup_by_id
    - if
    - if_flag_dump
    - if_is_multicast
    - if_set_name
    - if_update_to_new_vrf
    - assert
    - if_get_vrf_loopback
    - if_is_up
    - if_is_no_ptm_operative
    - zlog_info
    - connected_new
    - if_is_vrf
    - IFINDEX_RB_INSERT
    - strlcpy
    - XFREE
    - if_dump_all
    - if_is_loopback_exact
    - if_set_index
    - IFNAME_RB_INSERT
    - if_is_pointopoint
    - __attribute__
    - CHECK_FLAG
    - if_is_running
    - if_lookup_by_name_vrf
    - if_dump
    - if_lookup_by_ifindex
    - list_new
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_free
      Src: /src/frr/lib/if.c:839,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:841,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - connected
    argTypes:
    - struct nbr_connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 842
    functionName: nbr_connected_free
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 5
    functionsReached:
    - prefix_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nbr_connected_free(struct nbr_connected *connected)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:851,1
    - Dst: prefix_same
      Src: /src/frr/lib/if.c:852,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:870,1
    - Dst: prefix_family_str
      Src: /src/frr/lib/if.c:872,1
    - Dst: strlcat
      Src: /src/frr/lib/if.c:876,1
    - Dst: inet_ntop
      Src: /src/frr/lib/if.c:876,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:879,1
    - Dst: __attribute__
      Src: /src/frr/lib/if.c:883,1
    - Dst: nbr_connected_log
      Src: /src/frr/lib/if.c:884,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:893,1
    - Dst: prefix_family_str
      Src: /src/frr/lib/if.c:894,1
    - Dst: zlog_info
      Src: /src/frr/lib/if.c:896,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:900,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/lib/if.c:905,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/if.c:908,1
    - Dst: connected_count_by_family
      Src: /src/frr/lib/if.c:915,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:921,1
    - Dst: if
      Src: /src/frr/lib/if.c:922,1
    - Dst: connected_lookup_prefix_exact
      Src: /src/frr/lib/if.c:928,1
    - Dst: listhead
      Src: /src/frr/lib/if.c:935,1
    - Dst: listgetdata
      Src: /src/frr/lib/if.c:936,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:939,1
    - Dst: connected_delete_by_prefix
      Src: /src/frr/lib/if.c:945,1
    - Dst: listhead
      Src: /src/frr/lib/if.c:953,1
    - Dst: listgetdata
      Src: /src/frr/lib/if.c:954,1
    - Dst: connected_same_prefix
      Src: /src/frr/lib/if.c:957,1
    - Dst: listnode_delete
      Src: /src/frr/lib/if.c:958,1
    - Dst: connected_lookup_prefix
      Src: /src/frr/lib/if.c:967,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:976,1
    - Dst: prefix_match
      Src: /src/frr/lib/if.c:978,1
    - Dst: CONNECTED_PREFIX
      Src: /src/frr/lib/if.c:978,1
    - Dst: connected_add_by_prefix
      Src: /src/frr/lib/if.c:986,1
    - Dst: connected_new
      Src: /src/frr/lib/if.c:993,1
    - Dst: prefix_new
      Src: /src/frr/lib/if.c:997,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:998,1
    - Dst: prefix_new
      Src: /src/frr/lib/if.c:1002,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1003,1
    - Dst: listnode_add
      Src: /src/frr/lib/if.c:1007,1
    - Dst: connected_get_linklocal
      Src: /src/frr/lib/if.c:1011,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/if.c:1016,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/if.c:1018,1
    - Dst: if_terminate
      Src: /src/frr/lib/if.c:1024,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/if.c:1028,1
    - Dst: RB_ROOT
      Src: /src/frr/lib/if.c:1029,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/if.c:1033,1
    - Dst: if_delete
      Src: /src/frr/lib/if.c:1036,1
    - Dst: if_link_type_str
      Src: /src/frr/lib/if.c:1040,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1044,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1045,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1046,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1047,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1048,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1049,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1050,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1051,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1052,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1053,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1054,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1055,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1056,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1057,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1058,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1059,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1060,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1061,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1062,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1063,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1064,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1065,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1066,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1067,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1068,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1069,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1070,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1071,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1072,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1073,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1074,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1075,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1076,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1077,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1078,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1079,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1080,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1081,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1082,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1083,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1084,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1085,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1086,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1087,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1088,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1089,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1090,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1091,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1092,1
    - Dst: llts
      Src: /src/frr/lib/if.c:1093,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 60
    argCount: 2
    argNames:
    - ifp
    - p
    argTypes:
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 845
    functionDepth: 3
    functionLinenumber: 845
    functionLinenumberEnd: 1095
    functionName: nbr_connected_check
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 2
    functionsReached:
    - connected_get_linklocal
    - connected_same_prefix
    - if_terminate
    - connected_add_by_prefix
    - listhead
    - listnode_add
    - IPV4_ADDR_SAME
    - RB_EMPTY
    - strlcat
    - if_link_type_str
    - snprintf
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - inet_ntop
    - CONNECTED_PREFIX
    - listgetdata
    - if
    - RB_ROOT
    - route_unlock_node
    - zlog_info
    - connected_new
    - prefix_same
    - if_delete
    - prefix_new
    - prefix_family_str
    - connected_count_by_family
    - nbr_connected_log
    - llts
    - connected_delete_by_prefix
    - listnode_delete
    - memcpy
    - __attribute__
    - connected_lookup_prefix
    - connected_lookup_prefix_exact
    - IN6_IS_ADDR_LINKLOCAL
    - IPV6_ADDR_SAME
    linkageType: ''
    returnType: struct nbr_connected
    signature: "struct nbr_connected *nbr_connected_check(struct interface *ifp,\n\t\t\t\t\t
      \ struct prefix *p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1109,1
    - Dst: memset
      Src: /src/frr/lib/if.c:1110,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1112,1
    - Dst: memset
      Src: /src/frr/lib/if.c:1113,1
    - Dst: memcmp
      Src: /src/frr/lib/if.c:1115,1
    - Dst: admin_group_cmp
      Src: /src/frr/lib/if.c:1118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - iflp1
    - iflp2
    argTypes:
    - struct if_link_params*
    - struct if_link_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1099
    functionDepth: 1
    functionLinenumber: 1099
    functionLinenumberEnd: 1122
    functionName: if_link_params_cmp
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - memset
    - admin_group_cmp
    - memcpy
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool if_link_params_cmp(struct if_link_params *iflp1,\n\t\t\tstruct
      if_link_params *iflp2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1129,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1131,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1133,1
    - Dst: admin_group_copy
      Src: /src/frr/lib/if.c:1135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - struct if_link_params*
    - struct if_link_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1124
    functionDepth: 1
    functionLinenumber: 1124
    functionLinenumberEnd: 1136
    functionName: if_link_params_copy
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - admin_group_copy
    - memcpy
    linkageType: ''
    returnType: void
    signature: void if_link_params_copy(struct if_link_params *dst, struct if_link_params
      *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1141
    functionName: if_link_params_get
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: struct if_link_params
    signature: struct if_link_params *if_link_params_get(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_link_params_init
      Src: /src/frr/lib/if.c:1148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1174
    functionName: if_link_params_enable
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 6
    functionsReached:
    - if_link_params_init
    linkageType: ''
    returnType: struct if_link_params
    signature: struct if_link_params *if_link_params_enable(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_link_params_get
      Src: /src/frr/lib/if.c:1178,1
    - Dst: XCALLOC
      Src: /src/frr/lib/if.c:1183,1
    - Dst: admin_group_init
      Src: /src/frr/lib/if.c:1185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1176
    functionDepth: 1
    functionLinenumber: 1176
    functionLinenumberEnd: 1190
    functionName: if_link_params_init
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 2
    functionsReached:
    - if_link_params_get
    - admin_group_init
    - XCALLOC
    linkageType: ''
    returnType: struct if_link_params
    signature: struct if_link_params *if_link_params_init(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_term
      Src: /src/frr/lib/if.c:1197,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:1198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1192
    functionDepth: 1
    functionLinenumber: 1192
    functionLinenumberEnd: 1199
    functionName: if_link_params_free
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 3
    functionsReached:
    - admin_group_term
    - XFREE
    linkageType: ''
    returnType: void
    signature: void if_link_params_free(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:1210,1
    - Dst: strmatch
      Src: /src/frr/lib/if.c:1212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ifname
    - vrfname
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1220
    functionName: vrfname_by_ifname
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 1
    functionsReached:
    - strmatch
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int vrfname_by_ifname(const char *ifname, const char **vrfname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/if.c:1212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1216
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 37
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/if.c:1325,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1325,1
    - Dst: strchr
      Src: /src/frr/lib/if.c:1327,1
    - Dst: assert
      Src: /src/frr/lib/if.c:1328,1
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1331,1
    - Dst: strlcpy
      Src: /src/frr/lib/if.c:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - xpath
    - ifname
    - vrfname
    argTypes:
    - char*
    - char*
    - char*
    assertStmts:
    - condition: (vrf_is_backend_netns())
      pos:
        line_end: 1324
        line_start: 1324
        source_file: /src/frr/lib/if.c
    - condition: (delim)
      pos:
        line_end: 1327
        line_start: 1327
        source_file: /src/frr/lib/if.c
    constantsTouched: []
    func_position:
      end: 1335
      start: 1320
    functionDepth: 1
    functionLinenumber: 1320
    functionLinenumberEnd: 1335
    functionName: netns_ifname_split
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 1
    functionsReached:
    - assert
    - vrf_is_backend_netns
    - strlcpy
    - strchr
    - memcpy
    linkageType: ''
    returnType: void
    signature: void netns_ifname_split(const char *xpath, char *ifname, char *vrfname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1340,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1342,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1346,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1346,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1349,1
    - Dst: strmatch
      Src: /src/frr/lib/if.c:1350,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1351,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1353,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1355,1
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1337
    functionDepth: 2
    functionLinenumber: 1337
    functionLinenumberEnd: 1359
    functionName: cli_show_interface
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - strmatch
    - vrf_is_backend_netns
    - vty_out
    - yang_dnode_get_string
    - netns_ifname_split
    linkageType: ''
    returnType: void
    signature: "void cli_show_interface(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1361
    functionDepth: 2
    functionLinenumber: 1361
    functionLinenumberEnd: 1365
    functionName: cli_show_interface_end
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_interface_end(struct vty *vty,\n\t\t\t\t   const struct
      lyd_node *dnode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1369,1
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1370,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1372,1
    - Dst: strcmp
      Src: /src/frr/lib/if.c:1372,1
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1373,1
    - Dst: vty_frame
      Src: /src/frr/lib/if.c:1375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1367
    functionDepth: 2
    functionLinenumber: 1367
    functionLinenumberEnd: 1376
    functionName: if_vty_config_start
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 11
    functionsReached:
    - vty_frame
    - vrf_is_backend_netns
    - strcmp
    linkageType: ''
    returnType: void
    signature: void if_vty_config_start(struct vty *vty, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_endframe
      Src: /src/frr/lib/if.c:1380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1378
    functionDepth: 2
    functionLinenumber: 1378
    functionLinenumberEnd: 1381
    functionName: if_vty_config_end
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 9
    functionsReached:
    - vty_endframe
    linkageType: ''
    returnType: void
    signature: void if_vty_config_end(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/if.c:1418,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1414
    functionDepth: 2
    functionLinenumber: 1414
    functionLinenumberEnd: 1419
    functionName: cli_show_interface_desc
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_interface_desc(struct vty *vty,\n\t\t\t\t    const struct
      lyd_node *dnode,\n\t\t\t\t    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/if.c:1427,1
    - Dst: vector_set
      Src: /src/frr/lib/if.c:1429,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if.c:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1422
    functionDepth: 3
    functionLinenumber: 1422
    functionLinenumberEnd: 1432
    functionName: if_autocomplete
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - vector_set
    - RB_FOREACH
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void if_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set
      Src: /src/frr/lib/if.c:1429,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if.c:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1428
    functionDepth: 3
    functionLinenumber: 1428
    functionLinenumberEnd: 1430
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 37
    functionsReached:
    - vector_set
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/lib/if.c:1451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1449
    functionDepth: 0
    functionLinenumber: 1449
    functionLinenumberEnd: 1454
    functionName: if_config_write_single
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int if_config_write_single(const struct lyd_node *dnode, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_iterate
      Src: /src/frr/lib/if.c:1458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1456
    functionDepth: 2
    functionLinenumber: 1456
    functionLinenumberEnd: 1461
    functionName: if_nb_config_write
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_dnode_iterate
    linkageType: ''
    returnType: int
    signature: int if_nb_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/if.c:1465,1
    - Dst: install_node
      Src: /src/frr/lib/if.c:1468,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1470,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1471,1
    - Dst: install_default
      Src: /src/frr/lib/if.c:1473,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1474,1
    - Dst: install_element
      Src: /src/frr/lib/if.c:1475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1476
    functionName: if_cmd_init
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 7
    functionsReached:
    - install_element
    - cmd_variable_handler_register
    - install_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void if_cmd_init(int (*config_write)(struct vty *))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmd_init
      Src: /src/frr/lib/if.c:1480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1478
    functionDepth: 2
    functionLinenumber: 1478
    functionLinenumberEnd: 1481
    functionName: if_cmd_init_default
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 5
    functionsReached:
    - if_cmd_init
    linkageType: ''
    returnType: void
    signature: void if_cmd_init_default(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1483
    functionDepth: 0
    functionLinenumber: 1483
    functionLinenumberEnd: 1492
    functionName: if_zapi_callbacks
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void if_zapi_callbacks(int (*create)(struct interface *ifp),\n\t\t
      \      int (*up)(struct interface *ifp),\n\t\t       int (*down)(struct interface
      *ifp),\n\t\t       int (*destroy)(struct interface *ifp))"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1504,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1508,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1512,1
    - Dst: strlen
      Src: /src/frr/lib/if.c:1514,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1515,1
    - Dst: strlen
      Src: /src/frr/lib/if.c:1520,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1521,1
    - Dst: strlen
      Src: /src/frr/lib/if.c:1527,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1528,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1539,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1543,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/if.c:1545,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/if.c:1548,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/if.c:1553,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1499
    functionDepth: 2
    functionLinenumber: 1499
    functionLinenumberEnd: 1558
    functionName: lib_interface_create
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - strlen
    - if_get_by_name
    - nb_running_set_entry
    - snprintf
    - yang_dnode_get_string
    - netns_ifname_split
    linkageType: ''
    returnType: int
    signature: int lib_interface_create(struct nb_cb_create_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/if.c:1567,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/if.c:1568,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1569,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/if.c:1578,1
    - Dst: if_delete
      Src: /src/frr/lib/if.c:1582,1
    - Dst: vrf_is_enabled
      Src: /src/frr/lib/if.c:1584,1
    - Dst: vrf_delete
      Src: /src/frr/lib/if.c:1585,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1560
    functionDepth: 3
    functionLinenumber: 1560
    functionLinenumberEnd: 1590
    functionName: lib_interface_destroy
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - if_delete
    - snprintf
    - CHECK_FLAG
    - nb_running_get_entry
    - vrf_is_enabled
    - vrf_delete
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/lib/if.c:1601,1
    - Dst: assert
      Src: /src/frr/lib/if.c:1602,1
    - Dst: RB_MIN
      Src: /src/frr/lib/if.c:1603,1
    - Dst: RB_NEXT
      Src: /src/frr/lib/if.c:1606,1
    - Dst: RB_NEXT
      Src: /src/frr/lib/if.c:1609,1
    - Dst: RB_MIN
      Src: /src/frr/lib/if.c:1612,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts:
    - condition: (vrf)
      pos:
        line_end: 1601
        line_start: 1601
        source_file: /src/frr/lib/if.c
    constantsTouched: []
    func_position:
      end: 1617
      start: 1595
    functionDepth: 1
    functionLinenumber: 1595
    functionLinenumberEnd: 1617
    functionName: lib_interface_get_next
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    - RB_NEXT
    - assert
    linkageType: ''
    returnType: void
    signature: void *lib_interface_get_next(struct nb_cb_get_next_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1625,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1626,1
    - Dst: snprintf
      Src: /src/frr/lib/if.c:1629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1619
    functionDepth: 1
    functionLinenumber: 1619
    functionLinenumberEnd: 1633
    functionName: lib_interface_get_keys
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - snprintf
    linkageType: ''
    returnType: int
    signature: int lib_interface_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/lib/if.c:1638,1
    - Dst: netns_ifname_split
      Src: /src/frr/lib/if.c:1643,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/lib/if.c:1645,1
    - Dst: if_lookup_by_name
      Src: /src/frr/lib/if.c:1647,1
    - Dst: if_lookup_by_name_all_vrf
      Src: /src/frr/lib/if.c:1649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1635
    functionDepth: 3
    functionLinenumber: 1635
    functionLinenumberEnd: 1651
    functionName: lib_interface_lookup_entry
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - if_lookup_by_name
    - vrf_lookup_by_name
    - if_lookup_by_name_all_vrf
    - netns_ifname_split
    linkageType: ''
    returnType: void
    signature: 'void *

      lib_interface_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/if.c:1664,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:1665,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if.c:1666,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if.c:1667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1656
    functionDepth: 1
    functionLinenumber: 1656
    functionLinenumberEnd: 1670
    functionName: lib_interface_description_modify
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_interface_description_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/if.c:1679,1
    - Dst: XFREE
      Src: /src/frr/lib/if.c:1680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1683
      start: 1672
    functionDepth: 1
    functionLinenumber: 1672
    functionLinenumberEnd: 1683
    functionName: lib_interface_description_destroy
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_interface_description_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_string
      Src: /src/frr/lib/if.c:1693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1688
    functionDepth: 1
    functionLinenumber: 1688
    functionLinenumberEnd: 1694
    functionName: lib_interface_vrf_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_vrf_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_int32
      Src: /src/frr/lib/if.c:1704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1699
    functionDepth: 1
    functionLinenumber: 1699
    functionLinenumberEnd: 1705
    functionName: lib_interface_state_if_index_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_data_new_int32
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_if_index_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/lib/if.c:1715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1710
    functionDepth: 1
    functionLinenumber: 1710
    functionLinenumberEnd: 1716
    functionName: lib_interface_state_mtu_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_mtu_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/lib/if.c:1726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1721
    functionDepth: 1
    functionLinenumber: 1721
    functionLinenumberEnd: 1727
    functionName: lib_interface_state_mtu6_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_mtu6_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/lib/if.c:1737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1732
    functionDepth: 1
    functionLinenumber: 1732
    functionLinenumberEnd: 1738
    functionName: lib_interface_state_speed_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_speed_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/lib/if.c:1748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1743
    functionDepth: 1
    functionLinenumber: 1743
    functionLinenumberEnd: 1749
    functionName: lib_interface_state_metric_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_metric_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1754
    functionDepth: 0
    functionLinenumber: 1754
    functionLinenumberEnd: 1759
    functionName: lib_interface_state_flags_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_flags_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1764
    functionDepth: 0
    functionLinenumber: 1764
    functionLinenumberEnd: 1769
    functionName: lib_interface_state_type_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_type_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/if.c:1780,1
    - Dst: yang_data_new_mac
      Src: /src/frr/lib/if.c:1782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1774
    functionDepth: 1
    functionLinenumber: 1774
    functionLinenumberEnd: 1783
    functionName: lib_interface_state_phy_address_get_elem
    functionSourceFile: /src/frr/lib/if.c
    functionUses: 0
    functionsReached:
    - yang_data_new_mac
    - memcpy
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      lib_interface_state_phy_address_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - execname
    - ','
    - constname
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 132
    functionName: FRR_DAEMON_INFO
    functionSourceFile: /src/frr/lib/libfrr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FRR_DAEMON_INFO(execname, constname, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:30,1
    - Dst: struct routemap_hook_context*::rhc_mhook
      Src: /src/frr/lib/routemap_northbound.c:34,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 41
    functionName: lib_route_map_entry_match_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 30
    functionsReached:
    - struct routemap_hook_context*::rhc_mhook
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_match_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:51,1
    - Dst: struct routemap_hook_context*::rhc_shook
      Src: /src/frr/lib/routemap_northbound.c:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 61
    functionName: lib_route_map_entry_set_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 33
    functionsReached:
    - struct routemap_hook_context*::rhc_shook
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/routemap_northbound.c:71,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/lib/routemap_northbound.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - rmi
    argTypes:
    - struct route_map_index*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: routemap_hook_context_insert
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - TAILQ_INSERT_TAIL
    - XCALLOC
    linkageType: ''
    returnType: struct routemap_hook_context
    signature: 'struct routemap_hook_context *

      routemap_hook_context_insert(struct route_map_index *rmi)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_REMOVE
      Src: /src/frr/lib/routemap_northbound.c:82,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap_northbound.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rhc
    argTypes:
    - struct routemap_hook_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: routemap_hook_context_free
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - XFREE
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: void routemap_hook_context_free(struct routemap_hook_context *rhc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:101,1
    - Dst: route_map_get
      Src: /src/frr/lib/routemap_northbound.c:102,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/routemap_northbound.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 108
    functionName: lib_route_map_create
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - route_map_get
    - nb_running_set_entry
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_route_map_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/routemap_northbound.c:121,1
    - Dst: route_map_delete
      Src: /src/frr/lib/routemap_northbound.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 127
    functionName: lib_route_map_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - route_map_delete
    linkageType: ''
    returnType: int
    signature: int lib_route_map_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/lib/routemap_northbound.c:136,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 151
    functionName: lib_route_map_optimization_disabled_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_optimization_disabled_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/routemap_northbound.c:170,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/routemap_northbound.c:171,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:174,1
    - Dst: route_map_index_get
      Src: /src/frr/lib/routemap_northbound.c:175,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/routemap_northbound.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 181
    functionName: lib_route_map_entry_create
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - nb_running_get_entry
    - route_map_index_get
    - yang_dnode_get_enum
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/routemap_northbound.c:194,1
    - Dst: route_map_index_delete
      Src: /src/frr/lib/routemap_northbound.c:195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 200
    functionName: lib_route_map_entry_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - route_map_index_delete
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:216,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap_northbound.c:217,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap_northbound.c:222,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:225,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap_northbound.c:226,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 232
    functionName: lib_route_map_entry_description_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - XFREE
    - yang_dnode_get_string
    - nb_running_get_entry
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_description_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:246,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap_northbound.c:247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 252
    functionName: lib_route_map_entry_description_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_description_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:269,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/routemap_northbound.c:270,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap_northbound.c:276,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 284
    functionName: lib_route_map_entry_action_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    - route_map_notify_dependencies
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_action_modify(struct nb_cb_modify_args *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:296,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:297,1
    - Dst: strcmp
      Src: /src/frr/lib/routemap_northbound.c:299,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:305,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/routemap_northbound.c:306,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap_northbound.c:309,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:312,1
    - Dst: route_map_upd8_dependency
      Src: /src/frr/lib/routemap_northbound.c:314,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap_northbound.c:316,1
    - Dst: route_map_upd8_dependency
      Src: /src/frr/lib/routemap_northbound.c:319,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 325
    functionName: lib_route_map_entry_call_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - strcmp
    - nb_running_get_entry
    - yang_dnode_get_string
    - route_map_upd8_dependency
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_call_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:338,1
    - Dst: route_map_upd8_dependency
      Src: /src/frr/lib/routemap_northbound.c:339,1
    - Dst: XFREE
      Src: /src/frr/lib/routemap_northbound.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 327
    functionDepth: 3
    functionLinenumber: 327
    functionLinenumberEnd: 347
    functionName: lib_route_map_entry_call_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - route_map_upd8_dependency
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_call_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/routemap_northbound.c:362,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/routemap_northbound.c:370,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:385,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/lib/routemap_northbound.c:387,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/routemap_northbound.c:404,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 412
    functionName: lib_route_map_entry_exit_policy_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - nb_running_get_entry
    - route_map_notify_dependencies
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_exit_policy_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/routemap_northbound.c:425,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/routemap_northbound.c:426,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:437,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/lib/routemap_northbound.c:438,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 443
    functionName: lib_route_map_entry_goto_value_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_goto_value_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 463
    functionName: lib_route_map_entry_goto_value_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_goto_value_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:481,1
    - Dst: routemap_hook_context_insert
      Src: /src/frr/lib/routemap_northbound.c:482,1
    - Dst: nb_running_set_entry
      Src: /src/frr/lib/routemap_northbound.c:483,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 488
    functionName: lib_route_map_entry_match_condition_create
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - routemap_hook_context_insert
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_match_condition_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/lib/routemap_northbound.c:499,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/routemap_northbound.c:500,1
    - Dst: routemap_hook_context_free
      Src: /src/frr/lib/routemap_northbound.c:501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 504
    functionName: lib_route_map_entry_match_condition_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - routemap_hook_context_free
    - lib_route_map_entry_match_destroy
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_match_condition_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:524,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:525,1
    - Dst: match_interface
      Src: /src/frr/lib/routemap_northbound.c:532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 542
    functionName: lib_route_map_entry_match_condition_interface_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - match_interface
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_interface_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/lib/routemap_northbound.c:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 544
    functionDepth: 2
    functionLinenumber: 544
    functionLinenumberEnd: 548
    functionName: lib_route_map_entry_match_condition_interface_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_interface_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:565,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:566,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:567,1
    - Dst: IS_MATCH_IPv4_ADDRESS_LIST
      Src: /src/frr/lib/routemap_northbound.c:569,1
    - Dst: match_ip_address
      Src: /src/frr/lib/routemap_northbound.c:575,1
    - Dst: IS_MATCH_IPv4_PREFIX_LIST
      Src: /src/frr/lib/routemap_northbound.c:579,1
    - Dst: match_ip_address_prefix_list
      Src: /src/frr/lib/routemap_northbound.c:586,1
    - Dst: IS_MATCH_IPv4_NEXTHOP_LIST
      Src: /src/frr/lib/routemap_northbound.c:590,1
    - Dst: match_ip_next_hop
      Src: /src/frr/lib/routemap_northbound.c:596,1
    - Dst: IS_MATCH_IPv6_NEXTHOP_LIST
      Src: /src/frr/lib/routemap_northbound.c:600,1
    - Dst: match_ipv6_next_hop
      Src: /src/frr/lib/routemap_northbound.c:606,1
    - Dst: IS_MATCH_IPv4_NEXTHOP_PREFIX_LIST
      Src: /src/frr/lib/routemap_northbound.c:610,1
    - Dst: match_ip_next_hop_prefix_list
      Src: /src/frr/lib/routemap_northbound.c:617,1
    - Dst: IS_MATCH_IPv6_NEXTHOP_PREFIX_LIST
      Src: /src/frr/lib/routemap_northbound.c:621,1
    - Dst: match_ipv6_next_hop_prefix_list
      Src: /src/frr/lib/routemap_northbound.c:628,1
    - Dst: IS_MATCH_IPv6_ADDRESS_LIST
      Src: /src/frr/lib/routemap_northbound.c:631,1
    - Dst: match_ipv6_address
      Src: /src/frr/lib/routemap_northbound.c:637,1
    - Dst: IS_MATCH_IPv6_PREFIX_LIST
      Src: /src/frr/lib/routemap_northbound.c:641,1
    - Dst: match_ipv6_address_prefix_list
      Src: /src/frr/lib/routemap_northbound.c:648,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 661
    functionName: lib_route_map_entry_match_condition_list_name_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - match_ip_next_hop_prefix_list
    - match_ipv6_next_hop_prefix_list
    - match_ip_next_hop
    - IS_MATCH_IPv6_ADDRESS_LIST
    - IS_MATCH_IPv4_NEXTHOP_LIST
    - IS_MATCH_IPv4_PREFIX_LIST
    - IS_MATCH_IPv4_NEXTHOP_PREFIX_LIST
    - nb_running_get_entry
    - match_ip_address_prefix_list
    - match_ipv6_address
    - yang_dnode_get_string
    - IS_MATCH_IPv4_ADDRESS_LIST
    - match_ipv6_address_prefix_list
    - match_ip_address
    - IS_MATCH_IPv6_NEXTHOP_LIST
    - IS_MATCH_IPv6_PREFIX_LIST
    - IS_MATCH_IPv6_NEXTHOP_PREFIX_LIST
    - match_ipv6_next_hop
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_list_name_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/lib/routemap_northbound.c:666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 667
    functionName: lib_route_map_entry_match_condition_list_name_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_list_name_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:687,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:688,1
    - Dst: match_ip_next_hop_type
      Src: /src/frr/lib/routemap_northbound.c:695,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 672
    functionDepth: 1
    functionLinenumber: 672
    functionLinenumberEnd: 705
    functionName: lib_route_map_entry_match_condition_ipv4_next_hop_type_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - match_ip_next_hop_type
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_ipv4_next_hop_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/lib/routemap_northbound.c:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 707
    functionDepth: 2
    functionLinenumber: 707
    functionLinenumberEnd: 711
    functionName: lib_route_map_entry_match_condition_ipv4_next_hop_type_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_ipv4_next_hop_type_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:731,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:732,1
    - Dst: match_ipv6_next_hop_type
      Src: /src/frr/lib/routemap_northbound.c:739,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 749
    functionName: lib_route_map_entry_match_condition_ipv6_next_hop_type_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - match_ipv6_next_hop_type
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_ipv6_next_hop_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/lib/routemap_northbound.c:754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 755
    functionName: lib_route_map_entry_match_condition_ipv6_next_hop_type_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_ipv6_next_hop_type_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:775,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:776,1
    - Dst: match_metric
      Src: /src/frr/lib/routemap_northbound.c:783,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 792
    functionName: lib_route_map_entry_match_condition_metric_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - match_metric
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_metric_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/lib/routemap_northbound.c:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 794
    functionDepth: 2
    functionLinenumber: 794
    functionLinenumberEnd: 798
    functionName: lib_route_map_entry_match_condition_metric_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_match_condition_metric_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:818,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:819,1
    - Dst: match_tag
      Src: /src/frr/lib/routemap_northbound.c:826,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 835
    functionName: lib_route_map_entry_match_condition_tag_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - match_tag
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_match_condition_tag_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_destroy
      Src: /src/frr/lib/routemap_northbound.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 837
    functionDepth: 2
    functionLinenumber: 837
    functionLinenumberEnd: 841
    functionName: lib_route_map_entry_match_condition_tag_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_destroy
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_match_condition_tag_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_match_condition_create
      Src: /src/frr/lib/routemap_northbound.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 849
    functionName: lib_route_map_entry_set_action_create
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_match_condition_create
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:860,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/lib/routemap_northbound.c:861,1
    - Dst: routemap_hook_context_free
      Src: /src/frr/lib/routemap_northbound.c:862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 851
    functionDepth: 2
    functionLinenumber: 851
    functionLinenumberEnd: 865
    functionName: lib_route_map_entry_set_action_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - routemap_hook_context_free
    - nb_running_unset_entry
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/lib/routemap_northbound.c:885,1
    - Dst: ipv4_unicast_valid
      Src: /src/frr/lib/routemap_northbound.c:886,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:901,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:902,1
    - Dst: set_ip_nexthop
      Src: /src/frr/lib/routemap_northbound.c:908,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 870
    functionDepth: 2
    functionLinenumber: 870
    functionLinenumberEnd: 917
    functionName: lib_route_map_entry_set_action_ipv4_address_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - ipv4_unicast_valid
    - nb_running_get_entry
    - yang_dnode_get_ipv4
    - set_ip_nexthop
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_ipv4_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 919
    functionDepth: 2
    functionLinenumber: 919
    functionLinenumberEnd: 923
    functionName: lib_route_map_entry_set_action_ipv4_address_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_ipv4_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_ipv6
      Src: /src/frr/lib/routemap_northbound.c:944,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/routemap_northbound.c:945,1
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:960,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:961,1
    - Dst: set_ipv6_nexthop_local
      Src: /src/frr/lib/routemap_northbound.c:967,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 976
    functionName: lib_route_map_entry_set_action_ipv6_address_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_ipv6_nexthop_local
    - yang_dnode_get_ipv6
    - IN6_IS_ADDR_LINKLOCAL
    - nb_running_get_entry
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_ipv6_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 978
    functionDepth: 2
    functionLinenumber: 978
    functionLinenumberEnd: 982
    functionName: lib_route_map_entry_set_action_ipv6_address_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_ipv6_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:1007,1
    - Dst: set_metric
      Src: /src/frr/lib/routemap_northbound.c:1013,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - event
    - dnode
    - resource
    - value
    - errmsg
    - errmsg_len
    argTypes:
    - enum nb_event
    - struct lyd_node*
    - union nb_resource*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1023
    functionName: set_action_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_metric
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int set_action_modify(enum nb_event event, const struct lyd_node *dnode,\n\t\t\t
      \    union nb_resource *resource, const char *value,\n\t\t\t     char *errmsg,
      size_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:1028,1
    - Dst: set_action_modify
      Src: /src/frr/lib/routemap_northbound.c:1030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1025
    functionDepth: 2
    functionLinenumber: 1025
    functionLinenumberEnd: 1032
    functionName: lib_route_map_entry_set_action_value_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - set_action_modify
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_value_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1034
    functionDepth: 2
    functionLinenumber: 1034
    functionLinenumberEnd: 1038
    functionName: lib_route_map_entry_set_action_value_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_value_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:1060,1
    - Dst: set_min_metric
      Src: /src/frr/lib/routemap_northbound.c:1066,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - event
    - dnode
    - resource
    - value
    - errmsg
    - errmsg_len
    argTypes:
    - enum nb_event
    - struct lyd_node*
    - union nb_resource*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1074
    functionName: set_action_min_metric_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_min_metric
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int set_action_min_metric_modify(enum nb_event event,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tunion nb_resource *resource,\n\t\t\t\t\tconst
      char *value, char *errmsg,\n\t\t\t\t\tsize_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:1079,1
    - Dst: set_action_min_metric_modify
      Src: /src/frr/lib/routemap_northbound.c:1081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1076
    functionDepth: 2
    functionLinenumber: 1076
    functionLinenumberEnd: 1084
    functionName: lib_route_map_entry_set_action_min_metric_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_action_min_metric_modify
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_min_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1086
    functionDepth: 2
    functionLinenumber: 1086
    functionLinenumberEnd: 1090
    functionName: lib_route_map_entry_set_action_min_metric_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_min_metric_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:1112,1
    - Dst: set_max_metric
      Src: /src/frr/lib/routemap_northbound.c:1118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - event
    - dnode
    - resource
    - value
    - errmsg
    - errmsg_len
    argTypes:
    - enum nb_event
    - struct lyd_node*
    - union nb_resource*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1126
    functionName: set_action_max_metric_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_max_metric
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int set_action_max_metric_modify(enum nb_event event,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tunion nb_resource *resource,\n\t\t\t\t\tconst
      char *value, char *errmsg,\n\t\t\t\t\tsize_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:1131,1
    - Dst: set_action_max_metric_modify
      Src: /src/frr/lib/routemap_northbound.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1128
    functionDepth: 2
    functionLinenumber: 1128
    functionLinenumberEnd: 1136
    functionName: lib_route_map_entry_set_action_max_metric_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_action_max_metric_modify
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_max_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:1141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1138
    functionDepth: 2
    functionLinenumber: 1138
    functionLinenumberEnd: 1142
    functionName: lib_route_map_entry_set_action_max_metric_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_max_metric_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/routemap_northbound.c:1153,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap_northbound.c:1154,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap_northbound.c:1159,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:1160,1
    - Dst: set_action_modify
      Src: /src/frr/lib/routemap_northbound.c:1161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1147
    functionDepth: 2
    functionLinenumber: 1147
    functionLinenumberEnd: 1164
    functionName: lib_route_map_entry_set_action_add_metric_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_dnode_get_string
    - set_action_modify
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_add_metric_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_action_value_destroy
      Src: /src/frr/lib/routemap_northbound.c:1169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1166
    functionDepth: 3
    functionLinenumber: 1166
    functionLinenumberEnd: 1170
    functionName: lib_route_map_entry_set_action_add_metric_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_action_value_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_add_metric_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/lib/routemap_northbound.c:1181,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap_northbound.c:1182,1
    - Dst: snprintf
      Src: /src/frr/lib/routemap_northbound.c:1187,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:1188,1
    - Dst: set_action_modify
      Src: /src/frr/lib/routemap_northbound.c:1189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1175
    functionDepth: 2
    functionLinenumber: 1175
    functionLinenumberEnd: 1192
    functionName: lib_route_map_entry_set_action_subtract_metric_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_dnode_get_string
    - set_action_modify
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_subtract_metric_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_action_value_destroy
      Src: /src/frr/lib/routemap_northbound.c:1197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1194
    functionDepth: 3
    functionLinenumber: 1194
    functionLinenumberEnd: 1198
    functionName: lib_route_map_entry_set_action_subtract_metric_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_action_value_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_subtract_metric_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_action_modify
      Src: /src/frr/lib/routemap_northbound.c:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1203
    functionDepth: 2
    functionLinenumber: 1203
    functionLinenumberEnd: 1209
    functionName: lib_route_map_entry_set_action_use_round_trip_time_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_action_modify
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_use_round_trip_time_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_action_value_destroy
      Src: /src/frr/lib/routemap_northbound.c:1214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1211
    functionDepth: 3
    functionLinenumber: 1211
    functionLinenumberEnd: 1215
    functionName: lib_route_map_entry_set_action_use_round_trip_time_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_action_value_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_use_round_trip_time_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_action_modify
      Src: /src/frr/lib/routemap_northbound.c:1223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1220
    functionDepth: 2
    functionLinenumber: 1220
    functionLinenumberEnd: 1226
    functionName: lib_route_map_entry_set_action_add_round_trip_time_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_action_modify
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_add_round_trip_time_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_action_value_destroy
      Src: /src/frr/lib/routemap_northbound.c:1231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1228
    functionDepth: 3
    functionLinenumber: 1228
    functionLinenumberEnd: 1232
    functionName: lib_route_map_entry_set_action_add_round_trip_time_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_action_value_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_add_round_trip_time_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_action_modify
      Src: /src/frr/lib/routemap_northbound.c:1240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1237
    functionDepth: 2
    functionLinenumber: 1237
    functionLinenumberEnd: 1242
    functionName: lib_route_map_entry_set_action_subtract_round_trip_time_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - set_action_modify
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_subtract_round_trip_time_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_action_value_destroy
      Src: /src/frr/lib/routemap_northbound.c:1247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1244
    functionDepth: 3
    functionLinenumber: 1244
    functionLinenumberEnd: 1248
    functionName: lib_route_map_entry_set_action_subtract_round_trip_time_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_action_value_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_subtract_round_trip_time_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:1273,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:1274,1
    - Dst: set_tag
      Src: /src/frr/lib/routemap_northbound.c:1280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1288
    functionName: lib_route_map_entry_set_action_tag_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - set_tag
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_tag_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:1293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1290
    functionDepth: 2
    functionLinenumber: 1290
    functionLinenumberEnd: 1294
    functionName: lib_route_map_entry_set_action_tag_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_tag_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/lib/routemap_northbound.c:1319,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/routemap_northbound.c:1320,1
    - Dst: set_tag
      Src: /src/frr/lib/routemap_northbound.c:1326,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1299
    functionDepth: 1
    functionLinenumber: 1299
    functionLinenumberEnd: 1334
    functionName: lib_route_map_entry_set_action_policy_modify
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - set_tag
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_policy_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/lib/routemap_northbound.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1336
    functionDepth: 2
    functionLinenumber: 1336
    functionLinenumberEnd: 1340
    functionName: lib_route_map_entry_set_action_policy_destroy
    functionSourceFile: /src/frr/lib/routemap_northbound.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: int lib_route_map_entry_set_action_policy_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/lib/resolver.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct resolver_fd*
    - struct resolver_fd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: resolver_fd_cmp
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - numcmp
    linkageType: ''
    returnType: int
    signature: "int resolver_fd_cmp(const struct resolver_fd *a,\n\t\t\t   const struct
      resolver_fd *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/lib/resolver.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - item
    argTypes:
    - struct resolver_fd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: resolver_fd_hash
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t resolver_fd_hash(const struct resolver_fd *item)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resolver_fds_find
      Src: /src/frr/lib/resolver.c:74,1
    - Dst: XCALLOC
      Src: /src/frr/lib/resolver.c:76,1
    - Dst: resolver_fds_add
      Src: /src/frr/lib/resolver.c:79,1
    - Dst: zlog_debug
      Src: /src/frr/lib/resolver.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - fd
    - newstate
    argTypes:
    - int
    - struct resolver_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 85
    functionName: resolver_fd_get
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - resolver_fds_add
    - zlog_debug
    - XCALLOC
    - resolver_fds_find
    linkageType: ''
    returnType: struct resolver_fd
    signature: "struct resolver_fd *resolver_fd_get(int fd,\n\t\t\t\t\t   struct resolver_state
      *newstate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/resolver.c:93,1
    - Dst: resolver_fds_del
      Src: /src/frr/lib/resolver.c:95,1
    - Dst: XFREE
      Src: /src/frr/lib/resolver.c:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - resfd
    argTypes:
    - struct resolver_fd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 97
    functionName: resolver_fd_drop_maybe
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - resolver_fds_del
    - zlog_debug
    - XFREE
    linkageType: ''
    returnType: void
    signature: void resolver_fd_drop_maybe(struct resolver_fd *resfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/resolver.c:105,1
    - Dst: ares_process
      Src: /src/frr/lib/resolver.c:107,1
    - Dst: resolver_update_timeouts
      Src: /src/frr/lib/resolver.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: resolver_cb_timeout
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - resolver_update_timeouts
    - ares_process
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void resolver_cb_timeout(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/resolver.c:113,1
    - Dst: event_add_read
      Src: /src/frr/lib/resolver.c:116,1
    - Dst: ares_process_fd
      Src: /src/frr/lib/resolver.c:122,1
    - Dst: resolver_update_timeouts
      Src: /src/frr/lib/resolver.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 124
    functionName: resolver_cb_socket_readable
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - resolver_update_timeouts
    - ares_process_fd
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void resolver_cb_socket_readable(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/resolver.c:128,1
    - Dst: event_add_write
      Src: /src/frr/lib/resolver.c:131,1
    - Dst: ares_process_fd
      Src: /src/frr/lib/resolver.c:137,1
    - Dst: resolver_update_timeouts
      Src: /src/frr/lib/resolver.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: resolver_cb_socket_writable
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - resolver_update_timeouts
    - event_add_write
    - ares_process_fd
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void resolver_cb_socket_writable(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/lib/resolver.c:145,1
    - Dst: ares_timeout
      Src: /src/frr/lib/resolver.c:146,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/resolver.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct resolver_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 153
    functionName: resolver_update_timeouts
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 3
    functionsReached:
    - event_add_timer_msec
    - ares_timeout
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void resolver_update_timeouts(struct resolver_state *r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: resolver_fd_get
      Src: /src/frr/lib/resolver.c:161,1
    - Dst: assert
      Src: /src/frr/lib/resolver.c:165,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/resolver.c:168,1
    - Dst: event_add_read
      Src: /src/frr/lib/resolver.c:170,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/resolver.c:174,1
    - Dst: event_add_write
      Src: /src/frr/lib/resolver.c:176,1
    - Dst: resolver_fd_drop_maybe
      Src: /src/frr/lib/resolver.c:179,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - data
    - fd
    - readable
    - writable
    argTypes:
    - void*
    - ares_socket_t
    - int
    - int
    assertStmts:
    - condition: (resfd->state == r)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/frr/lib/resolver.c
    constantsTouched: []
    func_position:
      end: 180
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 180
    functionName: ares_socket_cb
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - EVENT_OFF
    - resolver_fd_drop_maybe
    - event_add_read
    - resolver_fd_get
    - assert
    linkageType: ''
    returnType: void
    signature: "void ares_socket_cb(void *data, ares_socket_t fd, int readable,\n\t\t\t
      \  int writable)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/resolver.c:197,1
    - Dst: ares_strerror
      Src: /src/frr/lib/resolver.c:198,1
    - Dst: callback
      Src: /src/frr/lib/resolver.c:200,1
    - Dst: ares_strerror
      Src: /src/frr/lib/resolver.c:200,1
    - Dst: array_size
      Src: /src/frr/lib/resolver.c:204,1
    - Dst: memset
      Src: /src/frr/lib/resolver.c:205,1
    - Dst: memcpy
      Src: /src/frr/lib/resolver.c:209,1
    - Dst: memcpy
      Src: /src/frr/lib/resolver.c:213,1
    - Dst: zlog_debug
      Src: /src/frr/lib/resolver.c:220,1
    - Dst: callback
      Src: /src/frr/lib/resolver.c:222,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - arg
    - status
    - timeouts
    - he
    argTypes:
    - void*
    - int
    - int
    - struct hostent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 223
    functionName: ares_address_cb
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - memset
    - callback
    - zlog_debug
    - array_size
    - memcpy
    - ares_strerror
    linkageType: ''
    returnType: void
    signature: "void ares_address_cb(void *arg, int status, int timeouts,\n\t\t\t
      \   struct hostent *he)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/resolver.c:227,1
    - Dst: callback
      Src: /src/frr/lib/resolver.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 235
    functionName: resolver_cb_literal
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - callback
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void resolver_cb_literal(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/lib/resolver.c:248,1
    - Dst: str2sockunion
      Src: /src/frr/lib/resolver.c:258,1
    - Dst: zlog_debug
      Src: /src/frr/lib/resolver.c:261,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/resolver.c:267,1
    - Dst: zlog_debug
      Src: /src/frr/lib/resolver.c:273,1
    - Dst: vrf_switch_to_netns
      Src: /src/frr/lib/resolver.c:275,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/resolver.c:277,1
    - Dst: safe_strerror
      Src: /src/frr/lib/resolver.c:278,1
    - Dst: ares_gethostbyname
      Src: /src/frr/lib/resolver.c:281,1
    - Dst: vrf_switchback_to_initial
      Src: /src/frr/lib/resolver.c:282,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/resolver.c:284,1
    - Dst: safe_strerror
      Src: /src/frr/lib/resolver.c:286,1
    - Dst: resolver_update_timeouts
      Src: /src/frr/lib/resolver.c:287,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - query
    - af
    - vrf_id
    - hostname
    argTypes:
    - struct resolver_query*
    - int
    - vrf_id_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 288
    functionName: resolver_resolve
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 2
    functionsReached:
    - resolver_update_timeouts
    - str2sockunion
    - ares_gethostbyname
    - event_add_timer_msec
    - flog_err
    - zlog_debug
    - safe_strerror
    - vrf_switchback_to_initial
    - flog_err_sys
    - vrf_switch_to_netns
    linkageType: ''
    returnType: void
    signature: "void resolver_resolve(struct resolver_query *query, int af, vrf_id_t
      vrf_id,\n\t\t      const char *hostname,\n\t\t      void (*callback)(struct
      resolver_query *, const char *,\n\t\t\t\t       int, union sockunion *))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/resolver.c:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 314
    functionName: resolver_config_write_debug
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int resolver_config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ares_init_options
      Src: /src/frr/lib/resolver.c:330,1
    - Dst: install_node
      Src: /src/frr/lib/resolver.c:334,1
    - Dst: install_element
      Src: /src/frr/lib/resolver.c:335,1
    - Dst: install_element
      Src: /src/frr/lib/resolver.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 337
    functionName: resolver_init
    functionSourceFile: /src/frr/lib/resolver.c
    functionUses: 3
    functionsReached:
    - install_node
    - install_element
    - ares_init_options
    linkageType: ''
    returnType: void
    signature: void resolver_init(struct event_loop *tm)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 54
    functionName: event_timer_cmp
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int event_timer_cmp(const struct event *a, const struct event *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: AWAKEN
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AWAKEN(m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/lib/event.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct cpu_event_history*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: cpu_record_hash_key
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int cpu_record_hash_key(const struct cpu_event_history *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct cpu_event_history*
    - struct cpu_event_history*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: cpu_record_hash_cmp
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool cpu_record_hash_cmp(const struct cpu_event_history *a,\n\t\t\t\tconst
      struct cpu_event_history *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/event.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct cpu_event_history*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 113
    functionName: cpu_record_hash_alloc
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: void
    signature: void *cpu_record_hash_alloc(struct cpu_event_history *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/event.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: cpu_record_hash_free
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cpu_record_hash_free(void *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/event.c:125,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - a
    argTypes:
    - struct vty*
    - struct cpu_event_history*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 137
    functionName: vty_out_cpu_event_history
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void vty_out_cpu_event_history(struct vty *vty,\n\t\t\t\t      struct
      cpu_event_history *a)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:149,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:151,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:153,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:155,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:156,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:159,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:160,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:162,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:164,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:165,1
    - Dst: vty_out_cpu_event_history
      Src: /src/frr/lib/event.c:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - bucket
    - args
    argTypes:
    - struct hash_bucket*
    - void*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 183
    functionName: cpu_record_hash_print
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - vty_out_cpu_event_history
    - atomic_load_explicit
    linkageType: ''
    returnType: void
    signature: void cpu_record_hash_print(struct hash_bucket *bucket, void *args[])
  - BBCount: 119
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/event.c:193,1
    - Dst: memset
      Src: /src/frr/lib/event.c:200,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:205,1
    - Dst: strlen
      Src: /src/frr/lib/event.c:207,1
    - Dst: memset
      Src: /src/frr/lib/event.c:209,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:212,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:213,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:215,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:217,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:219,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:221,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:222,1
    - Dst: if
      Src: /src/frr/lib/event.c:225,1
    - Dst: hash_iterate
      Src: /src/frr/lib/event.c:226,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:232,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:234,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:238,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:239,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:240,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:241,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:243,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:244,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:245,1
    - Dst: vty_out_cpu_event_history
      Src: /src/frr/lib/event.c:248,1
    - Dst: cpu_record_hash_clear
      Src: /src/frr/lib/event.c:251,1
    - Dst: hash_release
      Src: /src/frr/lib/event.c:261,1
    - Dst: cpu_record_clear
      Src: /src/frr/lib/event.c:264,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:270,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:271,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:272,1
    - Dst: hash_iterate
      Src: /src/frr/lib/event.c:275,1
    - Dst: parse_filter
      Src: /src/frr/lib/event.c:285,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/lib/event.c:320,1
    - Dst: argv_find
      Src: /src/frr/lib/event.c:331,1
    - Dst: parse_filter
      Src: /src/frr/lib/event.c:332,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:334,1
    - Dst: cpu_record_print
      Src: /src/frr/lib/event.c:341,1
    - Dst: DEFPY
      Src: /src/frr/lib/event.c:345,1
    - Dst: DEFPY
      Src: /src/frr/lib/event.c:356,1
    - Dst: DEFPY
      Src: /src/frr/lib/event.c:371,1
    - Dst: show_thread_poll_helper
      Src: /src/frr/lib/event.c:386,1
    - Dst: strlen
      Src: /src/frr/lib/event.c:389,1
    - Dst: memset
      Src: /src/frr/lib/event.c:393,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:396,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:397,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:398,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:401,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:409,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:411,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:413,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:419,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:421,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:423,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/lib/event.c:427,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:438,1
    - Dst: show_thread_poll_helper
      Src: /src/frr/lib/event.c:439,1
    - Dst: DEFUN
      Src: /src/frr/lib/event.c:446,1
    - Dst: argv_find
      Src: /src/frr/lib/event.c:457,1
    - Dst: parse_filter
      Src: /src/frr/lib/event.c:458,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:460,1
    - Dst: cpu_record_clear
      Src: /src/frr/lib/event.c:467,1
    - Dst: strlen
      Src: /src/frr/lib/event.c:474,1
    - Dst: memset
      Src: /src/frr/lib/event.c:477,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:480,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:481,1
    - Dst: frr_each
      Src: /src/frr/lib/event.c:483,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:484,1
    - Dst: DEFPY_NOSH
      Src: /src/frr/lib/event.c:488,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:499,1
    - Dst: show_thread_timers_helper
      Src: /src/frr/lib/event.c:500,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:508,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:509,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:510,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:512,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:513,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:514,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:516,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:523,1
    - Dst: pthread_key_create
      Src: /src/frr/lib/event.c:529,1
    - Dst: pthread_once
      Src: /src/frr/lib/event.c:537,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:539,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/event.c:542,1
    - Dst: pthread_cond_init
      Src: /src/frr/lib/event.c:543,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/event.c:547,1
    - Dst: frr_get_fd_limit
      Src: /src/frr/lib/event.c:552,1
    - Dst: getrlimit
      Src: /src/frr/lib/event.c:554,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:558,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:561,1
    - Dst: strlen
      Src: /src/frr/lib/event.c:564,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:566,1
    - Dst: hash_create_size
      Src: /src/frr/lib/event.c:568,1
    - Dst: event_list_init
      Src: /src/frr/lib/event.c:573,1
    - Dst: event_list_init
      Src: /src/frr/lib/event.c:574,1
    - Dst: event_list_init
      Src: /src/frr/lib/event.c:575,1
    - Dst: event_timer_list_init
      Src: /src/frr/lib/event.c:576,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:583,1
    - Dst: list_new
      Src: /src/frr/lib/event.c:584,1
    - Dst: pipe
      Src: /src/frr/lib/event.c:589,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/event.c:590,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/event.c:591,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:596,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:598,1
    - Dst: list_new
      Src: /src/frr/lib/event.c:604,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:606,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:614,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:615,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/event.c:616,1
    - Dst: assert
      Src: /src/frr/lib/event.c:627,1
    - Dst: memset
      Src: /src/frr/lib/event.c:630,1
    - Dst: event_list_count
      Src: /src/frr/lib/event.c:636,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:637,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:641,1
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:649,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:650,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:662,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:665,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:678,1
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:681,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:682,1
    - Dst: listnode_delete
      Src: /src/frr/lib/event.c:692,1
    - Dst: list_delete
      Src: /src/frr/lib/event.c:694,1
    - Dst: thread_array_free
      Src: /src/frr/lib/event.c:697,1
    - Dst: thread_array_free
      Src: /src/frr/lib/event.c:698,1
    - Dst: event_timer_list_pop
      Src: /src/frr/lib/event.c:699,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:700,1
    - Dst: thread_list_free
      Src: /src/frr/lib/event.c:701,1
    - Dst: thread_list_free
      Src: /src/frr/lib/event.c:702,1
    - Dst: thread_list_free
      Src: /src/frr/lib/event.c:703,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/event.c:704,1
    - Dst: pthread_cond_destroy
      Src: /src/frr/lib/event.c:705,1
    - Dst: close
      Src: /src/frr/lib/event.c:706,1
    - Dst: close
      Src: /src/frr/lib/event.c:707,1
    - Dst: list_delete
      Src: /src/frr/lib/event.c:708,1
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/event.c:711,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:713,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:714,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:715,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:716,1
    - Dst: event_is_scheduled
      Src: /src/frr/lib/event.c:724,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:727,1
    - Dst: monotime_until
      Src: /src/frr/lib/event.c:728,1
    - Dst: event_timer_remain_msec
      Src: /src/frr/lib/event.c:737,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:744,1
    - Dst: monotime_until
      Src: /src/frr/lib/event.c:745,1
    - Dst: assert
      Src: /src/frr/lib/event.c:756,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:763,1
    - Dst: time_hhmmss
      Src: /src/frr/lib/event.c:771,1
    - Dst: event_timer_remain_second
      Src: /src/frr/lib/event.c:771,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:773,1
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:783,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:787,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/event.c:789,1
    - Dst: hash_get
      Src: /src/frr/lib/event.c:816,1
    - Dst: assert
      Src: /src/frr/lib/event.c:829,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/event.c:833,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:834,1
    - Dst: zlog_tls_buffer_flush
      Src: /src/frr/lib/event.c:871,1
    - Dst: rcu_read_unlock
      Src: /src/frr/lib/event.c:872,1
    - Dst: rcu_assert_read_unlocked
      Src: /src/frr/lib/event.c:873,1
    - Dst: assert
      Src: /src/frr/lib/event.c:876,1
    - Dst: sigemptyset
      Src: /src/frr/lib/event.c:889,1
    - Dst: frr_sigevent_check
      Src: /src/frr/lib/event.c:892,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:894,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:901,1
    - Dst: ppoll
      Src: /src/frr/lib/event.c:914,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:915,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:918,1
    - Dst: poll
      Src: /src/frr/lib/event.c:919,1
    - Dst: read
      Src: /src/frr/lib/event.c:928,1
    - Dst: rcu_read_lock
      Src: /src/frr/lib/event.c:931,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:946,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:950,1
    - Dst: assert
      Src: /src/frr/lib/event.c:954,1
    - Dst: assert
      Src: /src/frr/lib/event.c:956,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:958,1
    - Dst: assert
      Src: /src/frr/lib/event.c:985,1
    - Dst: assert
      Src: /src/frr/lib/event.c:991,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:993,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1003,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1014,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1027,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1029,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1031,1
    - Dst: monotime
      Src: /src/frr/lib/event.c:1036,1
    - Dst: timeradd
      Src: /src/frr/lib/event.c:1037,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1039,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:1044,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1046,1
    - Dst: event_timer_list_add
      Src: /src/frr/lib/event.c:1048,1
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1059,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1060,1
    - Dst: flog_err
      Src: /src/frr/lib/event.c:1064,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1078,1
    - Dst: _event_add_timer_timeval
      Src: /src/frr/lib/event.c:1083,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1093,1
    - Dst: _event_add_timer_timeval
      Src: /src/frr/lib/event.c:1098,1
    - Dst: _event_add_timer_timeval
      Src: /src/frr/lib/event.c:1106,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1116,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1120,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1122,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:1127,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1128,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1130,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1138,1
    - Dst: zlog_debug
      Src: /src/frr/lib/event.c:1183,1
    - Dst: zlog_debug
      Src: /src/frr/lib/event.c:1185,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1195,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1213,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/event.c:1239,1
    - Dst: event_list_del
      Src: /src/frr/lib/event.c:1242,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1245,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/event.c:1248,1
    - Dst: event_list_del
      Src: /src/frr/lib/event.c:1251,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/event.c:1258,1
    - Dst: event_cancel_rw
      Src: /src/frr/lib/event.c:1274,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1284,1
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1294,1
    - Dst: event_timer_list_next
      Src: /src/frr/lib/event.c:1298,1
    - Dst: event_timer_list_del
      Src: /src/frr/lib/event.c:1301,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1304,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:1327,1
    - Dst: cancel_arg_helper
      Src: /src/frr/lib/event.c:1334,1
    - Dst: event_cancel_rw
      Src: /src/frr/lib/event.c:1355,1
    - Dst: event_cancel_rw
      Src: /src/frr/lib/event.c:1359,1
    - Dst: event_timer_list_del
      Src: /src/frr/lib/event.c:1363,1
    - Dst: event_list_del
      Src: /src/frr/lib/event.c:1378,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1385,1
    - Dst: list_delete_all_node
      Src: /src/frr/lib/event.c:1390,1
    - Dst: pthread_cond_broadcast
      Src: /src/frr/lib/event.c:1394,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1404,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:1404,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1410,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1414,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1416,1
    - Dst: do_event_cancel
      Src: /src/frr/lib/event.c:1417,1
    - Dst: cancel_event_helper
      Src: /src/frr/lib/event.c:1431,1
    - Dst: cancel_event_helper
      Src: /src/frr/lib/event.c:1446,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1465,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1470,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:1470,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1472,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1474,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1476,1
    - Dst: do_event_cancel
      Src: /src/frr/lib/event.c:1477,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1510,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1513,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1519,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1522,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:1522,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1524,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1529,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1531,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1534,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1536,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1538,1
    - Dst: pthread_cond_wait
      Src: /src/frr/lib/event.c:1541,1
    - Dst: event_timer_list_count
      Src: /src/frr/lib/event.c:1552,1
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1555,1
    - Dst: monotime_until
      Src: /src/frr/lib/event.c:1557,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1565,1
    - Dst: flog_err
      Src: /src/frr/lib/event.c:1589,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1601,1
    - Dst: thread_process_io_helper
      Src: /src/frr/lib/event.c:1643,1
    - Dst: thread_process_io_helper
      Src: /src/frr/lib/event.c:1647,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1655,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1662,1
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1683,1
    - Dst: timercmp
      Src: /src/frr/lib/event.c:1684,1
    - Dst: timercmp
      Src: /src/frr/lib/event.c:1694,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:1695,1
    - Dst: flog_warn
      Src: /src/frr/lib/event.c:1699,1
    - Dst: event_timer_list_pop
      Src: /src/frr/lib/event.c:1707,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1709,1
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:1722,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1724,1
    - Dst: frr_sigevent_process
      Src: /src/frr/lib/event.c:1745,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/event.c:1747,1
    - Dst: do_event_cancel
      Src: /src/frr/lib/event.c:1750,1
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:1756,1
    - Dst: thread_run
      Src: /src/frr/lib/event.c:1757,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1760,1
    - Dst: GETRUSAGE
      Src: /src/frr/lib/event.c:1762,1
    - Dst: thread_process
      Src: /src/frr/lib/event.c:1774,1
    - Dst: event_list_count
      Src: /src/frr/lib/event.c:1792,1
    - Dst: thread_timer_wait
      Src: /src/frr/lib/event.c:1793,1
    - Dst: event_list_count
      Src: /src/frr/lib/event.c:1795,1
    - Dst: timercmp
      Src: /src/frr/lib/event.c:1796,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1800,1
    - Dst: memcpy
      Src: /src/frr/lib/event.c:1810,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1813,1
    - Dst: fd_poll
      Src: /src/frr/lib/event.c:1816,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/event.c:1818,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1823,1
    - Dst: flog_err
      Src: /src/frr/lib/event.c:1829,1
    - Dst: safe_strerror
      Src: /src/frr/lib/event.c:1830,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1831,1
    - Dst: monotime
      Src: /src/frr/lib/event.c:1837,1
    - Dst: thread_process_timers
      Src: /src/frr/lib/event.c:1838,1
    - Dst: thread_process_io
      Src: /src/frr/lib/event.c:1842,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1844,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/event.c:1886,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/event.c:1887,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/event.c:1889,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1908,1
    - Dst: monotime_since
      Src: /src/frr/lib/event.c:1909,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1917,1
    - Dst: monotime
      Src: /src/frr/lib/event.c:1924,1
    - Dst: memset
      Src: /src/frr/lib/event.c:1926,1
    - Dst: clock_gettime
      Src: /src/frr/lib/event.c:1934,1
    - Dst: getrusage
      Src: /src/frr/lib/event.c:1941,1
    - Dst: GETRUSAGE
      Src: /src/frr/lib/event.c:1969,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1973,1
    - Dst: pthread_setspecific
      Src: /src/frr/lib/event.c:1978,1
    - Dst: pthread_setspecific
      Src: /src/frr/lib/event.c:1980,1
    - Dst: GETRUSAGE
      Src: /src/frr/lib/event.c:1982,1
    - Dst: event_consumed_time
      Src: /src/frr/lib/event.c:1988,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:1991,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:1993,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/event.c:1996,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2003,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:2005,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/event.c:2008,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2014,1
    - Dst: atomic_fetch_or_explicit
      Src: /src/frr/lib/event.c:2016,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2027,1
    - Dst: flog_warn
      Src: /src/frr/lib/event.c:2029,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2041,1
    - Dst: flog_warn
      Src: /src/frr/lib/event.c:2043,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:2058,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:2059,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:2062,1
    - Dst: event_call
      Src: /src/frr/lib/event.c:2070,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:2073,1
    - Dst: sigemptyset
      Src: /src/frr/lib/event.c:2096,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:2097,1
    - Dst: sigismember
      Src: /src/frr/lib/event.c:2107,1
    - Dst: strlcat
      Src: /src/frr/lib/event.c:2109,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:2110,1
    - Dst: strlcat
      Src: /src/frr/lib/event.c:2111,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:2117,1
    - Dst: zlog_debug
      Src: /src/frr/lib/event.c:2119,1
    - Dst: bputs
      Src: /src/frr/lib/event.c:2135,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2137,1
    - Dst: array_size
      Src: /src/frr/lib/event.c:2139,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2140,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2142,1
    - Dst: snprintfrr
      Src: /src/frr/lib/event.c:2147,1
    - Dst: snprintfrr
      Src: /src/frr/lib/event.c:2151,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2160,1
    - Dst: printfrr_ext_autoreg_p
      Src: /src/frr/lib/event.c:2166,1
    - Dst: printfrr_thread_dbg
      Src: /src/frr/lib/event.c:2175,1
    - Dst: printfrr_time
      Src: /src/frr/lib/event.c:2182,1
    - Dst: bputch
      Src: /src/frr/lib/event.c:2184,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/frr/lib/event.c:2187,1
    - Dst: printfrr_time
      Src: /src/frr/lib/event.c:2188,1
    CyclomaticComplexity: 180
    EdgeCount: 180
    ICount: 778
    argCount: 2
    argNames:
    - vty
    - filter
    argTypes:
    - struct vty*
    - uint8_t
    assertStmts:
    - condition: (m != NULL)
      pos:
        line_end: 1077
        line_start: 1077
        source_file: /src/frr/lib/event.c
    - condition: (fd >= 0)
      pos:
        line_end: 953
        line_start: 953
        source_file: /src/frr/lib/event.c
    - condition: (buf_size >= 8)
      pos:
        line_end: 755
        line_start: 755
        source_file: /src/frr/lib/event.c
    - condition: (m != NULL)
      pos:
        line_end: 1026
        line_start: 1026
        source_file: /src/frr/lib/event.c
    - condition: (master->owner == pthread_self())
      pos:
        line_end: 1469
        line_start: 1469
        source_file: /src/frr/lib/event.c
    - condition: (m != NULL && thread != NULL)
      pos:
        line_end: 626
        line_start: 626
        source_file: /src/frr/lib/event.c
    - condition: (m->owner == pthread_self())
      pos:
        line_end: 1403
        line_start: 1403
        source_file: /src/frr/lib/event.c
    - condition: (m != NULL)
      pos:
        line_end: 1092
        line_start: 1092
        source_file: /src/frr/lib/event.c
    - condition: (master->owner != pthread_self())
      pos:
        line_end: 1521
        line_start: 1521
        source_file: /src/frr/lib/event.c
    - condition: (queuepos + 1 < m->handler.pfdsize)
      pos:
        line_end: 990
        line_start: 990
        source_file: /src/frr/lib/event.c
    - condition: (!"Thread already scheduled for file descriptor")
      pos:
        line_end: 984
        line_start: 984
        source_file: /src/frr/lib/event.c
    - condition: (!(thread && eventobj) && (thread || eventobj))
      pos:
        line_end: 1509
        line_start: 1509
        source_file: /src/frr/lib/event.c
    - condition: (master->alloc > 0)
      pos:
        line_end: 828
        line_start: 828
        source_file: /src/frr/lib/event.c
    - condition: (count + 1 < m->handler.pfdsize)
      pos:
        line_end: 875
        line_start: 875
        source_file: /src/frr/lib/event.c
    - condition: (m != NULL)
      pos:
        line_end: 1119
        line_start: 1119
        source_file: /src/frr/lib/event.c
    - condition: (time_relative)
      pos:
        line_end: 1028
        line_start: 1028
        source_file: /src/frr/lib/event.c
    - condition: (!"Number of FD's open is greater than FRR currently configured to
        handle, aborting")
      pos:
        line_end: 955
        line_start: 955
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 2189
      start: 185
    functionDepth: 5
    functionLinenumber: 185
    functionLinenumberEnd: 2189
    functionName: cpu_record_print
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - atomic_fetch_or_explicit
    - cancel_arg_helper
    - atomic_fetch_add_explicit
    - flog_err
    - frr_get_fd_limit
    - show_thread_timers_helper
    - strlcat
    - frr_with_mutex
    - memset
    - XCALLOC
    - snprintf
    - flog_warn
    - thread_run
    - if
    - _event_add_timer_timeval
    - pthread_mutex_unlock
    - cpu_record_print
    - cancel_event_helper
    - event_consumed_time
    - event_list_del
    - event_list_pop
    - pthread_sigmask
    - pipe
    - monotime_since
    - timeradd
    - AWAKEN
    - argv_find
    - rcu_read_lock
    - memcpy
    - event_timer_list_pop
    - bprintfrr
    - pthread_once
    - snprintfrr
    - close
    - event_list_count
    - thread_process_io
    - list_new
    - DEFPY_NOSH
    - thread_process_timers
    - rcu_assert_read_unlocked
    - printfrr_time
    - thread_process_io_helper
    - cpu_record_hash_clear
    - pthread_mutex_init
    - ppoll
    - GETRUSAGE
    - event_timer_list_count
    - DEFPY
    - frr_sigevent_check
    - TIMEVAL_TO_TIMESPEC
    - timercmp
    - vty_out_cpu_event_history
    - printfrr_thread_dbg
    - atomic_load_explicit
    - pthread_cond_destroy
    - event_list_add_tail
    - event_call
    - DEFUN
    - pthread_mutex_lock
    - atomic_compare_exchange_weak_explicit
    - event_cancel_rw
    - thread_get
    - monotime
    - sigemptyset
    - pthread_setspecific
    - hash_create_size
    - thread_free
    - event_timer_remain_msec
    - clock_gettime
    - event_list_init
    - memmove
    - do_event_cancel
    - event_timer_list_del
    - strlen
    - bputch
    - printfrr_ext_autoreg_p
    - DEFUN_NOSH
    - frrtrace
    - install_element
    - sigismember
    - pthread_cond_init
    - thread_timer_wait
    - event_timer_list_first
    - zlog_debug
    - array_size
    - getrusage
    - assert
    - event_timer_list_next
    - hash_clean_and_free
    - show_thread_poll_helper
    - vty_out
    - pthread_cond_broadcast
    - timeval_elapsed
    - thread_process
    - event_timer_remain_second
    - XFREE
    - hash_release
    - monotime_until
    - read
    - event_timer_list_add
    - zlog_tls_buffer_flush
    - thread_add_unuse
    - pthread_mutex_destroy
    - list_delete
    - frr_each
    - listnode_add
    - frr_each_safe
    - set_nonblocking
    - pthread_cond_wait
    - ALL_LIST_ELEMENTS_RO
    - parse_filter
    - list_delete_all_node
    - safe_strerror
    - fd_poll
    - hash_iterate
    - event_is_scheduled
    - hash_get
    - getrlimit
    - rcu_read_unlock
    - time_hhmmss
    - listnode_delete
    - thread_list_free
    - XSTRDUP
    - poll
    - CHECK_FLAG
    - pthread_self
    - event_timer_list_init
    - cpu_record_clear
    - thread_array_free
    - frr_sigevent_process
    - pthread_key_create
    - bputs
    linkageType: ''
    returnType: void
    signature: void cpu_record_print(struct vty *vty, uint8_t filter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:205,1
    - Dst: strlen
      Src: /src/frr/lib/event.c:207,1
    - Dst: memset
      Src: /src/frr/lib/event.c:209,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:212,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:213,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:215,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:217,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:219,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:221,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:222,1
    - Dst: if
      Src: /src/frr/lib/event.c:225,1
    - Dst: hash_iterate
      Src: /src/frr/lib/event.c:226,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:232,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:234,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:238,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:239,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:240,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:241,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:243,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:244,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:245,1
    - Dst: vty_out_cpu_event_history
      Src: /src/frr/lib/event.c:248,1
    - Dst: cpu_record_hash_clear
      Src: /src/frr/lib/event.c:251,1
    - Dst: hash_release
      Src: /src/frr/lib/event.c:261,1
    - Dst: cpu_record_clear
      Src: /src/frr/lib/event.c:264,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:270,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:271,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:272,1
    - Dst: hash_iterate
      Src: /src/frr/lib/event.c:275,1
    - Dst: parse_filter
      Src: /src/frr/lib/event.c:285,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/lib/event.c:320,1
    - Dst: argv_find
      Src: /src/frr/lib/event.c:331,1
    - Dst: parse_filter
      Src: /src/frr/lib/event.c:332,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:334,1
    - Dst: cpu_record_print
      Src: /src/frr/lib/event.c:341,1
    - Dst: DEFPY
      Src: /src/frr/lib/event.c:345,1
    - Dst: DEFPY
      Src: /src/frr/lib/event.c:356,1
    - Dst: DEFPY
      Src: /src/frr/lib/event.c:371,1
    - Dst: show_thread_poll_helper
      Src: /src/frr/lib/event.c:386,1
    - Dst: strlen
      Src: /src/frr/lib/event.c:389,1
    - Dst: memset
      Src: /src/frr/lib/event.c:393,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:396,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:397,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:398,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:401,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:409,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:411,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:413,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:419,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:421,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:423,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 204
    functionDepth: 6
    functionLinenumber: 204
    functionLinenumberEnd: 425
    functionName: (&masters_mtx)
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - show_thread_poll_helper
    - strlen
    - vty_out
    - memset
    - frr_with_mutex
    - ALL_LIST_ELEMENTS_RO
    - parse_filter
    - vty_out_cpu_event_history
    - cpu_record_hash_clear
    - cpu_record_clear
    - DEFUN_NOSH
    - hash_iterate
    - if
    - hash_release
    - DEFPY
    - argv_find
    - cpu_record_print
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&masters_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:438,1
    - Dst: show_thread_poll_helper
      Src: /src/frr/lib/event.c:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 440
    functionName: (&masters_mtx)
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - show_thread_poll_helper
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&masters_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/event.c:474,1
    - Dst: memset
      Src: /src/frr/lib/event.c:477,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:480,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:481,1
    - Dst: frr_each
      Src: /src/frr/lib/event.c:483,1
    - Dst: vty_out
      Src: /src/frr/lib/event.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - m
    argTypes:
    - struct vty*
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 486
    functionName: show_thread_timers_helper
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - strlen
    - vty_out
    - memset
    - frr_each
    linkageType: ''
    returnType: void
    signature: void show_thread_timers_helper(struct vty *vty, struct event_loop *m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:499,1
    - Dst: show_thread_timers_helper
      Src: /src/frr/lib/event.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 501
    functionName: (&masters_mtx)
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - show_thread_timers_helper
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&masters_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/event.c:508,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:509,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:510,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:512,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:513,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:514,1
    - Dst: install_element
      Src: /src/frr/lib/event.c:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 517
    functionName: event_cmd_init
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void event_cmd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/event.c:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 524
    functionName: cancelreq_del
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cancelreq_del(void *cr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_create
      Src: /src/frr/lib/event.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 530
    functionName: initializer
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - pthread_key_create
    linkageType: ''
    returnType: void
    signature: void initializer(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_once
      Src: /src/frr/lib/event.c:537,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:539,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/event.c:542,1
    - Dst: pthread_cond_init
      Src: /src/frr/lib/event.c:543,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/event.c:547,1
    - Dst: frr_get_fd_limit
      Src: /src/frr/lib/event.c:552,1
    - Dst: getrlimit
      Src: /src/frr/lib/event.c:554,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:558,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:561,1
    - Dst: strlen
      Src: /src/frr/lib/event.c:564,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:566,1
    - Dst: hash_create_size
      Src: /src/frr/lib/event.c:568,1
    - Dst: event_list_init
      Src: /src/frr/lib/event.c:573,1
    - Dst: event_list_init
      Src: /src/frr/lib/event.c:574,1
    - Dst: event_list_init
      Src: /src/frr/lib/event.c:575,1
    - Dst: event_timer_list_init
      Src: /src/frr/lib/event.c:576,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:583,1
    - Dst: list_new
      Src: /src/frr/lib/event.c:584,1
    - Dst: pipe
      Src: /src/frr/lib/event.c:589,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/event.c:590,1
    - Dst: set_nonblocking
      Src: /src/frr/lib/event.c:591,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:596,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:598,1
    - Dst: list_new
      Src: /src/frr/lib/event.c:604,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 532
    functionDepth: 3
    functionLinenumber: 532
    functionLinenumberEnd: 610
    functionName: event_master_create
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 25
    functionsReached:
    - hash_create_size
    - strlen
    - pthread_cond_init
    - snprintf
    - XCALLOC
    - pthread_once
    - pthread_self
    - getrlimit
    - listnode_add
    - event_list_init
    - pthread_mutex_init
    - event_timer_list_init
    - pipe
    - frr_get_fd_limit
    - list_new
    - set_nonblocking
    - XSTRDUP
    linkageType: ''
    returnType: struct event_loop
    signature: struct event_loop *event_master_create(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/event.c:604,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 602
    functionDepth: 2
    functionLinenumber: 602
    functionLinenumberEnd: 607
    functionName: (&masters_mtx)
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - list_new
    - listnode_add
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&masters_mtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:614,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:615,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/event.c:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - master
    - name
    argTypes:
    - struct event_loop*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 618
    functionName: event_master_set_name
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - frr_with_mutex
    - XFREE
    linkageType: ''
    returnType: void
    signature: void event_master_set_name(struct event_loop *master, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:627,1
    - Dst: memset
      Src: /src/frr/lib/event.c:630,1
    - Dst: event_list_count
      Src: /src/frr/lib/event.c:636,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:637,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:641,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - m
    - thread
    argTypes:
    - struct event_loop*
    - struct event*
    assertStmts:
    - condition: (m != NULL && thread != NULL)
      pos:
        line_end: 626
        line_start: 626
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 642
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 642
    functionName: thread_add_unuse
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - thread_free
    - memset
    - event_list_count
    - event_list_add_tail
    - assert
    linkageType: ''
    returnType: void
    signature: void thread_add_unuse(struct event_loop *m, struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:649,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - m
    - list
    argTypes:
    - struct event_loop*
    - struct event_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 651
    functionName: thread_list_free
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - thread_free
    - event_list_pop
    linkageType: ''
    returnType: void
    signature: void thread_list_free(struct event_loop *m, struct event_list_head
      *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: thread_free
      Src: /src/frr/lib/event.c:662,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - m
    - thread_array
    argTypes:
    - struct event_loop*
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 666
    functionName: thread_array_free
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - thread_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void thread_array_free(struct event_loop *m, struct event **thread_array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:678,1
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:681,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 684
    functionName: event_master_free_unused
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 2
    functionsReached:
    - thread_free
    - frr_with_mutex
    - event_list_pop
    linkageType: ''
    returnType: void
    signature: void event_master_free_unused(struct event_loop *m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/lib/event.c:692,1
    - Dst: list_delete
      Src: /src/frr/lib/event.c:694,1
    - Dst: thread_array_free
      Src: /src/frr/lib/event.c:697,1
    - Dst: thread_array_free
      Src: /src/frr/lib/event.c:698,1
    - Dst: event_timer_list_pop
      Src: /src/frr/lib/event.c:699,1
    - Dst: thread_free
      Src: /src/frr/lib/event.c:700,1
    - Dst: thread_list_free
      Src: /src/frr/lib/event.c:701,1
    - Dst: thread_list_free
      Src: /src/frr/lib/event.c:702,1
    - Dst: thread_list_free
      Src: /src/frr/lib/event.c:703,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/event.c:704,1
    - Dst: pthread_cond_destroy
      Src: /src/frr/lib/event.c:705,1
    - Dst: close
      Src: /src/frr/lib/event.c:706,1
    - Dst: close
      Src: /src/frr/lib/event.c:707,1
    - Dst: list_delete
      Src: /src/frr/lib/event.c:708,1
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/event.c:711,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:713,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:714,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:715,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:716,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 687
    functionDepth: 2
    functionLinenumber: 687
    functionLinenumberEnd: 717
    functionName: event_master_free
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 14
    functionsReached:
    - event_timer_list_pop
    - thread_free
    - hash_clean_and_free
    - list_delete
    - close
    - thread_array_free
    - pthread_cond_destroy
    - XFREE
    - listnode_delete
    - pthread_mutex_destroy
    - thread_list_free
    linkageType: ''
    returnType: void
    signature: void event_master_free(struct event_loop *m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/lib/event.c:692,1
    - Dst: list_delete
      Src: /src/frr/lib/event.c:694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 695
    functionName: (&masters_mtx)
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - list_delete
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&masters_mtx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_is_scheduled
      Src: /src/frr/lib/event.c:724,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:727,1
    - Dst: monotime_until
      Src: /src/frr/lib/event.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 732
    functionName: event_timer_remain_msec
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 2
    functionsReached:
    - event_is_scheduled
    - monotime_until
    - frr_with_mutex
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long event_timer_remain_msec(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_msec
      Src: /src/frr/lib/event.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 738
    functionName: event_timer_remain_second
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 18
    functionsReached:
    - event_timer_remain_msec
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long event_timer_remain_second(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:744,1
    - Dst: monotime_until
      Src: /src/frr/lib/event.c:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 748
    functionName: event_timer_remain
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 3
    functionsReached:
    - monotime_until
    - frr_with_mutex
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval event_timer_remain(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:756,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - buf
    - buf_size
    - sec
    argTypes:
    - char*
    - int
    - long
    assertStmts:
    - condition: (buf_size >= 8)
      pos:
        line_end: 755
        line_start: 755
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 766
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 766
    functionName: time_hhmmss
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - snprintf
    - assert
    linkageType: ''
    returnType: int
    signature: int time_hhmmss(char *buf, int buf_size, long sec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time_hhmmss
      Src: /src/frr/lib/event.c:771,1
    - Dst: event_timer_remain_second
      Src: /src/frr/lib/event.c:771,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:773,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buf
    - buf_size
    - t_timer
    argTypes:
    - char*
    - int
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 768
    functionDepth: 3
    functionLinenumber: 768
    functionLinenumberEnd: 776
    functionName: event_timer_to_hhmmss
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 5
    functionsReached:
    - event_timer_remain_second
    - time_hhmmss
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *event_timer_to_hhmmss(char *buf, int buf_size, struct event *t_timer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:783,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:787,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/event.c:789,1
    - Dst: hash_get
      Src: /src/frr/lib/event.c:816,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - m
    - type
    - arg
    - xref
    argTypes:
    - struct event_loop*
    - uint8_t
    - void*
    - struct xref_eventsched*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 779
    functionDepth: 3
    functionLinenumber: 779
    functionLinenumberEnd: 824
    functionName: thread_get
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_init
    - hash_get
    - event_list_pop
    - XCALLOC
    linkageType: ''
    returnType: struct event
    signature: "struct event *thread_get(struct event_loop *m, uint8_t type,\n\t\t\t\tvoid
      (*func)(struct event *), void *arg,\n\t\t\t\tconst struct xref_eventsched *xref)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:829,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/event.c:833,1
    - Dst: XFREE
      Src: /src/frr/lib/event.c:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - master
    - thread
    argTypes:
    - struct event_loop*
    - struct event*
    assertStmts:
    - condition: (master->alloc > 0)
      pos:
        line_end: 828
        line_start: 828
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 835
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 835
    functionName: thread_free
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 6
    functionsReached:
    - XFREE
    - pthread_mutex_destroy
    - assert
    linkageType: ''
    returnType: void
    signature: void thread_free(struct event_loop *master, struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_tls_buffer_flush
      Src: /src/frr/lib/event.c:871,1
    - Dst: rcu_read_unlock
      Src: /src/frr/lib/event.c:872,1
    - Dst: rcu_assert_read_unlocked
      Src: /src/frr/lib/event.c:873,1
    - Dst: assert
      Src: /src/frr/lib/event.c:876,1
    - Dst: sigemptyset
      Src: /src/frr/lib/event.c:889,1
    - Dst: frr_sigevent_check
      Src: /src/frr/lib/event.c:892,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:894,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:901,1
    - Dst: ppoll
      Src: /src/frr/lib/event.c:914,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:915,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:918,1
    - Dst: poll
      Src: /src/frr/lib/event.c:919,1
    - Dst: read
      Src: /src/frr/lib/event.c:928,1
    - Dst: rcu_read_lock
      Src: /src/frr/lib/event.c:931,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 3
    argNames:
    - m
    - timer_wait
    - eintr_p
    argTypes:
    - struct event_loop*
    - struct timeval*
    - bool*
    assertStmts:
    - condition: (count + 1 < m->handler.pfdsize)
      pos:
        line_end: 875
        line_start: 875
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 934
      start: 837
    functionDepth: 5
    functionLinenumber: 837
    functionLinenumberEnd: 934
    functionName: fd_poll
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - poll
    - read
    - rcu_read_lock
    - frr_sigevent_check
    - zlog_tls_buffer_flush
    - pthread_sigmask
    - ppoll
    - rcu_read_unlock
    - sigemptyset
    - rcu_assert_read_unlocked
    - assert
    linkageType: ''
    returnType: int
    signature: "int fd_poll(struct event_loop *m, const struct timeval *timer_wait,\n\t\t
      \  bool *eintr_p)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:946,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:950,1
    - Dst: assert
      Src: /src/frr/lib/event.c:954,1
    - Dst: assert
      Src: /src/frr/lib/event.c:956,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:958,1
    - Dst: assert
      Src: /src/frr/lib/event.c:985,1
    - Dst: assert
      Src: /src/frr/lib/event.c:991,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:993,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1003,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1014,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 5
    argNames:
    - xref
    - m
    - arg
    - fd
    - t_ptr
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - int
    - struct event**
    assertStmts:
    - condition: (!"Number of FD's open is greater than FRR currently configured to
        handle, aborting")
      pos:
        line_end: 955
        line_start: 955
        source_file: /src/frr/lib/event.c
    - condition: (fd >= 0)
      pos:
        line_end: 953
        line_start: 953
        source_file: /src/frr/lib/event.c
    - condition: (!"Thread already scheduled for file descriptor")
      pos:
        line_end: 984
        line_start: 984
        source_file: /src/frr/lib/event.c
    - condition: (queuepos + 1 < m->handler.pfdsize)
      pos:
        line_end: 990
        line_start: 990
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1016
      start: 937
    functionDepth: 4
    functionLinenumber: 937
    functionLinenumberEnd: 1016
    functionName: _event_add_read_write
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - frr_with_mutex
    - thread_get
    - frrtrace
    - AWAKEN
    - assert
    linkageType: ''
    returnType: void
    signature: "void _event_add_read_write(const struct xref_eventsched *xref,\n\t\t\t
      \  struct event_loop *m, void (*func)(struct event *),\n\t\t\t   void *arg,
      int fd, struct event **t_ptr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:1027,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1029,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1031,1
    - Dst: monotime
      Src: /src/frr/lib/event.c:1036,1
    - Dst: timeradd
      Src: /src/frr/lib/event.c:1037,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1039,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:1044,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1046,1
    - Dst: event_timer_list_add
      Src: /src/frr/lib/event.c:1048,1
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1059,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1060,1
    - Dst: flog_err
      Src: /src/frr/lib/event.c:1064,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 5
    argNames:
    - xref
    - m
    - arg
    - time_relative
    - t_ptr
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - struct timeval*
    - struct event**
    assertStmts:
    - condition: (m != NULL)
      pos:
        line_end: 1026
        line_start: 1026
        source_file: /src/frr/lib/event.c
    - condition: (time_relative)
      pos:
        line_end: 1028
        line_start: 1028
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1068
      start: 1018
    functionDepth: 4
    functionLinenumber: 1018
    functionLinenumberEnd: 1068
    functionName: _event_add_timer_timeval
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - frr_with_mutex
    - monotime
    - frrtrace
    - thread_get
    - event_timer_list_add
    - event_timer_list_first
    - flog_err
    - timeradd
    - AWAKEN
    - assert
    linkageType: ''
    returnType: void
    signature: "void _event_add_timer_timeval(const struct xref_eventsched *xref,\n\t\t\t\t
      \    struct event_loop *m,\n\t\t\t\t     void (*func)(struct event *), void
      *arg,\n\t\t\t\t     struct timeval *time_relative,\n\t\t\t\t     struct event
      **t_ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:1078,1
    - Dst: _event_add_timer_timeval
      Src: /src/frr/lib/event.c:1083,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - xref
    - m
    - arg
    - timer
    - t_ptr
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - long
    - struct event**
    assertStmts:
    - condition: (m != NULL)
      pos:
        line_end: 1077
        line_start: 1077
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1084
      start: 1072
    functionDepth: 5
    functionLinenumber: 1072
    functionLinenumberEnd: 1084
    functionName: _event_add_timer
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - _event_add_timer_timeval
    - assert
    linkageType: ''
    returnType: void
    signature: "void _event_add_timer(const struct xref_eventsched *xref, struct event_loop
      *m,\n\t\t      void (*func)(struct event *), void *arg, long timer,\n\t\t      struct
      event **t_ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:1093,1
    - Dst: _event_add_timer_timeval
      Src: /src/frr/lib/event.c:1098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - xref
    - m
    - arg
    - timer
    - t_ptr
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - long
    - struct event**
    assertStmts:
    - condition: (m != NULL)
      pos:
        line_end: 1092
        line_start: 1092
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1099
      start: 1087
    functionDepth: 5
    functionLinenumber: 1087
    functionLinenumberEnd: 1099
    functionName: _event_add_timer_msec
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - _event_add_timer_timeval
    - assert
    linkageType: ''
    returnType: void
    signature: "void _event_add_timer_msec(const struct xref_eventsched *xref,\n\t\t\t
      \  struct event_loop *m, void (*func)(struct event *),\n\t\t\t   void *arg,
      long timer, struct event **t_ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _event_add_timer_timeval
      Src: /src/frr/lib/event.c:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - xref
    - m
    - arg
    - tv
    - t_ptr
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - struct timeval*
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1102
    functionDepth: 5
    functionLinenumber: 1102
    functionLinenumberEnd: 1107
    functionName: _event_add_timer_tv
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - _event_add_timer_timeval
    linkageType: ''
    returnType: void
    signature: "void _event_add_timer_tv(const struct xref_eventsched *xref,\n\t\t\t
      struct event_loop *m, void (*func)(struct event *),\n\t\t\t void *arg, struct
      timeval *tv, struct event **t_ptr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1116,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1120,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1122,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:1127,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1128,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1130,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - xref
    - m
    - arg
    - val
    - t_ptr
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - int
    - struct event**
    assertStmts:
    - condition: (m != NULL)
      pos:
        line_end: 1119
        line_start: 1119
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1140
      start: 1110
    functionDepth: 4
    functionLinenumber: 1110
    functionLinenumberEnd: 1140
    functionName: _event_add_event
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - frr_with_mutex
    - thread_get
    - event_list_add_tail
    - frrtrace
    - AWAKEN
    - assert
    linkageType: ''
    returnType: void
    signature: "void _event_add_event(const struct xref_eventsched *xref, struct event_loop
      *m,\n\t\t      void (*func)(struct event *), void *arg, int val,\n\t\t      struct
      event **t_ptr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/event.c:1183,1
    - Dst: zlog_debug
      Src: /src/frr/lib/event.c:1185,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1195,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1213,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 4
    argNames:
    - master
    - fd
    - state
    - idx_hint
    argTypes:
    - struct event_loop*
    - int
    - short
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1158
    functionDepth: 1
    functionLinenumber: 1158
    functionLinenumberEnd: 1220
    functionName: event_cancel_rw
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - memmove
    linkageType: ''
    returnType: void
    signature: "void event_cancel_rw(struct event_loop *master, int fd, short state,\n\t\t\t
      \   int idx_hint)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/lib/event.c:1239,1
    - Dst: event_list_del
      Src: /src/frr/lib/event.c:1242,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1245,1
    - Dst: frr_each_safe
      Src: /src/frr/lib/event.c:1248,1
    - Dst: event_list_del
      Src: /src/frr/lib/event.c:1251,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/event.c:1258,1
    - Dst: event_cancel_rw
      Src: /src/frr/lib/event.c:1274,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1284,1
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1294,1
    - Dst: event_timer_list_next
      Src: /src/frr/lib/event.c:1298,1
    - Dst: event_timer_list_del
      Src: /src/frr/lib/event.c:1301,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1304,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 2
    argNames:
    - master
    - cr
    argTypes:
    - struct event_loop*
    - struct cancel_req*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1226
    functionDepth: 2
    functionLinenumber: 1226
    functionLinenumberEnd: 1309
    functionName: cancel_arg_helper
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - event_cancel_rw
    - event_list_del
    - CHECK_FLAG
    - event_timer_list_first
    - thread_add_unuse
    - frr_each_safe
    - event_timer_list_next
    - event_timer_list_del
    linkageType: ''
    returnType: void
    signature: "void cancel_arg_helper(struct event_loop *master,\n\t\t\t      const
      struct cancel_req *cr)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/event.c:1327,1
    - Dst: cancel_arg_helper
      Src: /src/frr/lib/event.c:1334,1
    - Dst: event_cancel_rw
      Src: /src/frr/lib/event.c:1355,1
    - Dst: event_cancel_rw
      Src: /src/frr/lib/event.c:1359,1
    - Dst: event_timer_list_del
      Src: /src/frr/lib/event.c:1363,1
    - Dst: event_list_del
      Src: /src/frr/lib/event.c:1378,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1385,1
    - Dst: list_delete_all_node
      Src: /src/frr/lib/event.c:1390,1
    - Dst: pthread_cond_broadcast
      Src: /src/frr/lib/event.c:1394,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1319
    functionDepth: 3
    functionLinenumber: 1319
    functionLinenumberEnd: 1395
    functionName: do_event_cancel
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - event_cancel_rw
    - pthread_cond_broadcast
    - event_list_del
    - ALL_LIST_ELEMENTS_RO
    - cancel_arg_helper
    - list_delete_all_node
    - thread_add_unuse
    - event_timer_list_del
    linkageType: ''
    returnType: void
    signature: void do_event_cancel(struct event_loop *master)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:1404,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:1404,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1410,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1414,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1416,1
    - Dst: do_event_cancel
      Src: /src/frr/lib/event.c:1417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - m
    - arg
    - flags
    argTypes:
    - struct event_loop*
    - void*
    - int
    assertStmts:
    - condition: (m->owner == pthread_self())
      pos:
        line_end: 1403
        line_start: 1403
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1419
      start: 1400
    functionDepth: 4
    functionLinenumber: 1400
    functionLinenumberEnd: 1419
    functionName: cancel_event_helper
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - frr_with_mutex
    - XCALLOC
    - pthread_self
    - listnode_add
    - do_event_cancel
    - assert
    linkageType: ''
    returnType: void
    signature: void cancel_event_helper(struct event_loop *m, void *arg, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cancel_event_helper
      Src: /src/frr/lib/event.c:1431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - master
    - arg
    argTypes:
    - struct event_loop*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1429
    functionDepth: 5
    functionLinenumber: 1429
    functionLinenumberEnd: 1432
    functionName: event_cancel_event
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 7
    functionsReached:
    - cancel_event_helper
    linkageType: ''
    returnType: void
    signature: void event_cancel_event(struct event_loop *master, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cancel_event_helper
      Src: /src/frr/lib/event.c:1446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - m
    - arg
    argTypes:
    - struct event_loop*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1442
    functionDepth: 5
    functionLinenumber: 1442
    functionLinenumberEnd: 1447
    functionName: event_cancel_event_ready
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 2
    functionsReached:
    - cancel_event_helper
    linkageType: ''
    returnType: void
    signature: void event_cancel_event_ready(struct event_loop *m, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1465,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1470,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:1470,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1472,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1474,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1476,1
    - Dst: do_event_cancel
      Src: /src/frr/lib/event.c:1477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event**
    assertStmts:
    - condition: (master->owner == pthread_self())
      pos:
        line_end: 1469
        line_start: 1469
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1481
      start: 1456
    functionDepth: 4
    functionLinenumber: 1456
    functionLinenumberEnd: 1481
    functionName: event_cancel
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 24
    functionsReached:
    - frr_with_mutex
    - XCALLOC
    - pthread_self
    - listnode_add
    - frrtrace
    - do_event_cancel
    - assert
    linkageType: ''
    returnType: void
    signature: void event_cancel(struct event **thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/event.c:1510,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1513,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1519,1
    - Dst: assert
      Src: /src/frr/lib/event.c:1522,1
    - Dst: pthread_self
      Src: /src/frr/lib/event.c:1522,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1524,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1529,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1531,1
    - Dst: XCALLOC
      Src: /src/frr/lib/event.c:1534,1
    - Dst: listnode_add
      Src: /src/frr/lib/event.c:1536,1
    - Dst: AWAKEN
      Src: /src/frr/lib/event.c:1538,1
    - Dst: pthread_cond_wait
      Src: /src/frr/lib/event.c:1541,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - master
    - thread
    - eventobj
    argTypes:
    - struct event_loop*
    - struct event**
    - void*
    assertStmts:
    - condition: (!(thread && eventobj) && (thread || eventobj))
      pos:
        line_end: 1509
        line_start: 1509
        source_file: /src/frr/lib/event.c
    - condition: (master->owner != pthread_self())
      pos:
        line_end: 1521
        line_start: 1521
        source_file: /src/frr/lib/event.c
    constantsTouched: []
    func_position:
      end: 1546
      start: 1507
    functionDepth: 2
    functionLinenumber: 1507
    functionLinenumberEnd: 1546
    functionName: event_cancel_async
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 5
    functionsReached:
    - frr_with_mutex
    - XCALLOC
    - pthread_self
    - listnode_add
    - frrtrace
    - AWAKEN
    - assert
    - pthread_cond_wait
    linkageType: ''
    returnType: void
    signature: "void event_cancel_async(struct event_loop *master, struct event **thread,\n\t\t\tvoid
      *eventobj)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_list_count
      Src: /src/frr/lib/event.c:1552,1
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1555,1
    - Dst: monotime_until
      Src: /src/frr/lib/event.c:1557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - timers
    - timer_val
    argTypes:
    - struct event_timer_list_head*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1549
    functionDepth: 1
    functionLinenumber: 1549
    functionLinenumberEnd: 1559
    functionName: thread_timer_wait
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - monotime_until
    - event_timer_list_first
    - event_timer_list_count
    linkageType: ''
    returnType: struct timeval
    signature: "struct timeval *thread_timer_wait(struct event_timer_list_head *timers,\n\t\t\t\t\t
      struct timeval *timer_val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:1565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - m
    - thread
    - fetch
    argTypes:
    - struct event_loop*
    - struct event*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1561
    functionDepth: 2
    functionLinenumber: 1561
    functionLinenumberEnd: 1567
    functionName: thread_run
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 13
    functionsReached:
    - thread_add_unuse
    linkageType: ''
    returnType: struct event
    signature: "struct event *thread_run(struct event_loop *m, struct event *thread,\n\t\t\t\tstruct
      event *fetch)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/lib/event.c:1589,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1601,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - m
    - thread
    - state
    - actual_state
    - pos
    argTypes:
    - struct event_loop*
    - struct event*
    - short
    - short
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1569
    functionDepth: 1
    functionLinenumber: 1569
    functionLinenumberEnd: 1605
    functionName: thread_process_io_helper
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - flog_err
    - event_list_add_tail
    linkageType: ''
    returnType: int
    signature: "int thread_process_io_helper(struct event_loop *m, struct event *thread,\n\t\t\t\t
      \   short state, short actual_state, int pos)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: thread_process_io_helper
      Src: /src/frr/lib/event.c:1643,1
    - Dst: thread_process_io_helper
      Src: /src/frr/lib/event.c:1647,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1655,1
    - Dst: memmove
      Src: /src/frr/lib/event.c:1662,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - m
    - num
    argTypes:
    - struct event_loop*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1672
      start: 1616
    functionDepth: 2
    functionLinenumber: 1616
    functionLinenumberEnd: 1672
    functionName: thread_process_io
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - thread_process_io_helper
    - memmove
    linkageType: ''
    returnType: void
    signature: void thread_process_io(struct event_loop *m, unsigned int num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_list_first
      Src: /src/frr/lib/event.c:1683,1
    - Dst: timercmp
      Src: /src/frr/lib/event.c:1684,1
    - Dst: timercmp
      Src: /src/frr/lib/event.c:1694,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:1695,1
    - Dst: flog_warn
      Src: /src/frr/lib/event.c:1699,1
    - Dst: event_timer_list_pop
      Src: /src/frr/lib/event.c:1707,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1709,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - m
    - timenow
    argTypes:
    - struct event_loop*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1675
    functionDepth: 1
    functionLinenumber: 1675
    functionLinenumberEnd: 1714
    functionName: thread_process_timers
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - event_timer_list_pop
    - flog_warn
    - event_timer_list_first
    - timercmp
    - atomic_fetch_add_explicit
    - event_list_add_tail
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int thread_process_timers(struct event_loop *m,\n\t\t\t\t\t
      \ struct timeval *timenow)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:1722,1
    - Dst: event_list_add_tail
      Src: /src/frr/lib/event.c:1724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct event_list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1717
    functionDepth: 0
    functionLinenumber: 1717
    functionLinenumberEnd: 1728
    functionName: thread_process
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - event_list_add_tail
    - event_list_pop
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int thread_process(struct event_list_head *list)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: frr_sigevent_process
      Src: /src/frr/lib/event.c:1745,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/event.c:1747,1
    - Dst: do_event_cancel
      Src: /src/frr/lib/event.c:1750,1
    - Dst: event_list_pop
      Src: /src/frr/lib/event.c:1756,1
    - Dst: thread_run
      Src: /src/frr/lib/event.c:1757,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1760,1
    - Dst: GETRUSAGE
      Src: /src/frr/lib/event.c:1762,1
    - Dst: thread_process
      Src: /src/frr/lib/event.c:1774,1
    - Dst: event_list_count
      Src: /src/frr/lib/event.c:1792,1
    - Dst: thread_timer_wait
      Src: /src/frr/lib/event.c:1793,1
    - Dst: event_list_count
      Src: /src/frr/lib/event.c:1795,1
    - Dst: timercmp
      Src: /src/frr/lib/event.c:1796,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1800,1
    - Dst: memcpy
      Src: /src/frr/lib/event.c:1810,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1813,1
    - Dst: fd_poll
      Src: /src/frr/lib/event.c:1816,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/lib/event.c:1818,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1823,1
    - Dst: flog_err
      Src: /src/frr/lib/event.c:1829,1
    - Dst: safe_strerror
      Src: /src/frr/lib/event.c:1830,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1831,1
    - Dst: monotime
      Src: /src/frr/lib/event.c:1837,1
    - Dst: thread_process_timers
      Src: /src/frr/lib/event.c:1838,1
    - Dst: thread_process_io
      Src: /src/frr/lib/event.c:1842,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/lib/event.c:1844,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 2
    argNames:
    - m
    - fetch
    argTypes:
    - struct event_loop*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1849
      start: 1732
    functionDepth: 6
    functionLinenumber: 1732
    functionLinenumberEnd: 1849
    functionName: event_fetch
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 13
    functionsReached:
    - pthread_mutex_lock
    - thread_process_timers
    - thread_run
    - thread_timer_wait
    - monotime
    - event_list_pop
    - thread_process
    - timercmp
    - event_list_count
    - flog_err
    - safe_strerror
    - GETRUSAGE
    - fd_poll
    - frr_sigevent_process
    - thread_process_io
    - memcpy
    - do_event_cancel
    - pthread_mutex_unlock
    linkageType: ''
    returnType: struct event
    signature: struct event *event_fetch(struct event_loop *m, struct event *fetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1851
    functionDepth: 0
    functionLinenumber: 1851
    functionLinenumberEnd: 1855
    functionName: timeval_elapsed
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long timeval_elapsed(struct timeval a, struct timeval b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timeval_elapsed
      Src: /src/frr/lib/event.c:1886,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/event.c:1887,1
    - Dst: timeval_elapsed
      Src: /src/frr/lib/event.c:1889,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - now
    - start
    - cputime
    argTypes:
    - RUSAGE_T*
    - RUSAGE_T*
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1857
    functionDepth: 0
    functionLinenumber: 1857
    functionLinenumberEnd: 1890
    functionName: event_consumed_time
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 2
    functionsReached:
    - timeval_elapsed
    linkageType: ''
    returnType: unsigned long
    signature: "unsigned long event_consumed_time(RUSAGE_T *now, RUSAGE_T *start,\n\t\t\t\t
      \ unsigned long *cputime)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1908,1
    - Dst: monotime_since
      Src: /src/frr/lib/event.c:1909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1904
    functionDepth: 1
    functionLinenumber: 1904
    functionLinenumberEnd: 1913
    functionName: event_should_yield
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 2
    functionsReached:
    - monotime_since
    - frr_with_mutex
    linkageType: ''
    returnType: int
    signature: int event_should_yield(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:1917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - thread
    - yield_time
    argTypes:
    - struct event*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1915
    functionDepth: 0
    functionLinenumber: 1915
    functionLinenumberEnd: 1920
    functionName: event_set_yield_time
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - frr_with_mutex
    linkageType: ''
    returnType: void
    signature: void event_set_yield_time(struct event *thread, unsigned long yield_time)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/lib/event.c:1924,1
    - Dst: memset
      Src: /src/frr/lib/event.c:1926,1
    - Dst: clock_gettime
      Src: /src/frr/lib/event.c:1934,1
    - Dst: getrusage
      Src: /src/frr/lib/event.c:1941,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - r
    argTypes:
    - RUSAGE_T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1922
    functionDepth: 1
    functionLinenumber: 1922
    functionLinenumberEnd: 1943
    functionName: event_getrusage
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - clock_gettime
    - getrusage
    - monotime
    - memset
    linkageType: ''
    returnType: void
    signature: void event_getrusage(RUSAGE_T *r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GETRUSAGE
      Src: /src/frr/lib/event.c:1969,1
    - Dst: frrtrace
      Src: /src/frr/lib/event.c:1973,1
    - Dst: pthread_setspecific
      Src: /src/frr/lib/event.c:1978,1
    - Dst: pthread_setspecific
      Src: /src/frr/lib/event.c:1980,1
    - Dst: GETRUSAGE
      Src: /src/frr/lib/event.c:1982,1
    - Dst: event_consumed_time
      Src: /src/frr/lib/event.c:1988,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:1991,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:1993,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/event.c:1996,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2003,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/event.c:2005,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/event.c:2008,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2014,1
    - Dst: atomic_fetch_or_explicit
      Src: /src/frr/lib/event.c:2016,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2027,1
    - Dst: flog_warn
      Src: /src/frr/lib/event.c:2029,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/event.c:2041,1
    - Dst: flog_warn
      Src: /src/frr/lib/event.c:2043,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 1956
    functionDepth: 1
    functionLinenumber: 1956
    functionLinenumberEnd: 2049
    functionName: event_call
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 14
    functionsReached:
    - atomic_fetch_or_explicit
    - event_consumed_time
    - flog_warn
    - atomic_compare_exchange_weak_explicit
    - atomic_fetch_add_explicit
    - atomic_load_explicit
    - GETRUSAGE
    - frrtrace
    - pthread_setspecific
    linkageType: ''
    returnType: void
    signature: void event_call(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:2058,1
    - Dst: thread_get
      Src: /src/frr/lib/event.c:2059,1
    - Dst: frr_with_mutex
      Src: /src/frr/lib/event.c:2062,1
    - Dst: event_call
      Src: /src/frr/lib/event.c:2070,1
    - Dst: thread_add_unuse
      Src: /src/frr/lib/event.c:2073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - xref
    - m
    - arg
    - val
    argTypes:
    - struct xref_eventsched*
    - struct event_loop*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2052
    functionDepth: 4
    functionLinenumber: 2052
    functionLinenumberEnd: 2074
    functionName: _event_execute
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - thread_add_unuse
    - event_call
    - thread_get
    - frr_with_mutex
    linkageType: ''
    returnType: void
    signature: "void _event_execute(const struct xref_eventsched *xref, struct event_loop
      *m,\n\t\t    void (*func)(struct event *), void *arg, int val)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/frr/lib/event.c:2096,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/event.c:2097,1
    - Dst: sigismember
      Src: /src/frr/lib/event.c:2107,1
    - Dst: strlcat
      Src: /src/frr/lib/event.c:2109,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:2110,1
    - Dst: strlcat
      Src: /src/frr/lib/event.c:2111,1
    - Dst: snprintf
      Src: /src/frr/lib/event.c:2117,1
    - Dst: zlog_debug
      Src: /src/frr/lib/event.c:2119,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - sigs
    argTypes:
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2120
      start: 2077
    functionDepth: 1
    functionLinenumber: 2077
    functionLinenumberEnd: 2120
    functionName: debug_signals
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - strlcat
    - sigismember
    - snprintf
    - pthread_sigmask
    - zlog_debug
    - sigemptyset
    linkageType: ''
    returnType: void
    signature: void debug_signals(const sigset_t *sigs)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/event.c:2135,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2137,1
    - Dst: array_size
      Src: /src/frr/lib/event.c:2139,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2140,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2142,1
    - Dst: snprintfrr
      Src: /src/frr/lib/event.c:2147,1
    - Dst: snprintfrr
      Src: /src/frr/lib/event.c:2151,1
    - Dst: bprintfrr
      Src: /src/frr/lib/event.c:2160,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - buf
    - ea
    - thread
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2122
    functionDepth: 1
    functionLinenumber: 2122
    functionLinenumberEnd: 2164
    functionName: printfrr_thread_dbg
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 1
    functionsReached:
    - array_size
    - bprintfrr
    - snprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_thread_dbg(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t   const struct event *thread)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_thread_dbg
      Src: /src/frr/lib/event.c:2175,1
    - Dst: printfrr_time
      Src: /src/frr/lib/event.c:2182,1
    - Dst: bputch
      Src: /src/frr/lib/event.c:2184,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/frr/lib/event.c:2187,1
    - Dst: printfrr_time
      Src: /src/frr/lib/event.c:2188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2167
    functionDepth: 2
    functionLinenumber: 2167
    functionLinenumberEnd: 2189
    functionName: printfrr_thread
    functionSourceFile: /src/frr/lib/event.c
    functionUses: 0
    functionsReached:
    - printfrr_thread_dbg
    - printfrr_time
    - bputch
    - TIMEVAL_TO_TIMESPEC
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_thread(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \      const void *ptr)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strtoull
      Src: /src/frr/lib/tc.c:12,1
    - Dst: strcmp
      Src: /src/frr/lib/tc.c:25,1
    - Dst: strcmp
      Src: /src/frr/lib/tc.c:29,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 2
    argNames:
    - str
    - rate
    argTypes:
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 75
    functionName: tc_getrate
    functionSourceFile: /src/frr/lib/tc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strtoull
    linkageType: ''
    returnType: int
    signature: int tc_getrate(const char *str, uint64_t *rate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ns*
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: ns_compare
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ns_compare(const struct ns *a, const struct ns *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: ns_terminate
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ns_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: ns_init_management
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ns_init_management(ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - domain
    - type
    - protocol
    - ns_id
    argTypes:
    - int
    - int
    - int
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: ns_socket
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ns_socket(int domain, int type, int protocol, ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: ns_netns_pathname
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ns_netns_pathname(struct vty *vty, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: ns_walk_func
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ns_walk_func(int (*func)(struct ns *))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: ns_get_name
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ns_get_name(struct ns *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: ns_delete
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ns_delete(struct ns *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: ns_have_netns
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ns_have_netns(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: ns_info_lookup
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *ns_info_lookup(ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: ns_init
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ns_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: ns_switchback_to_initial
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ns_switchback_to_initial(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - netns_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: ns_switch_to_netns
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ns_switch_to_netns(const char *netns_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns_id
    argTypes:
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 119
    functionName: ns_lookup
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 64
    functionsReached: []
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_lookup(ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: ns_lookup_name
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_lookup_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: ns_enable
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ns_enable(struct ns *ns, int (*func)(ns_id_t, void *))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ns_id
    - maporunmap
    argTypes:
    - ns_id_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: ns_map_nsid_with_external
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ns_id_t
    signature: ns_id_t ns_map_nsid_with_external(ns_id_t ns_id, bool maporunmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ns
    - name
    - ns_id
    argTypes:
    - struct ns*
    - char*
    - ns_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: ns_get_created
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct ns
    signature: struct ns *ns_get_created(struct ns *ns, char *name, ns_id_t ns_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ns
    argTypes:
    - struct ns*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: ns_disable
    functionSourceFile: /src/frr/lib/netns_other.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ns_disable(struct ns *ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_cmp
      Src: /src/frr/lib/table.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct route_node*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 26
    functionName: route_table_hash_cmp
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int route_table_hash_cmp(const struct route_node *a,\n\t\t\t\tconst
      struct route_node *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/table.c:38,1
    - Dst: rn_hash_node_init
      Src: /src/frr/lib/table.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - delegate
    argTypes:
    - route_table_delegate_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: route_table_init_with_delegate
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 4
    functionsReached:
    - rn_hash_node_init
    - XCALLOC
    linkageType: ''
    returnType: struct route_table
    signature: 'struct route_table *

      route_table_init_with_delegate(route_table_delegate_t *delegate)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_free
      Src: /src/frr/lib/table.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: route_table_finish
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 31
    functionsReached:
    - route_table_free
    linkageType: ''
    returnType: void
    signature: void route_table_finish(struct route_table *rt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct route_table*::delegate::create_node
      Src: /src/frr/lib/table.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: route_node_new
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - struct route_table*::delegate::create_node
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *route_node_new(struct route_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_node_new
      Src: /src/frr/lib/table.c:61,1
    - Dst: prefix_copy
      Src: /src/frr/lib/table.c:63,1
    - Dst: rn_hash_node_add
      Src: /src/frr/lib/table.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - table
    - prefix
    argTypes:
    - struct route_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: route_node_set
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - rn_hash_node_add
    - prefix_copy
    - route_node_new
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_set(struct route_table *table,\n\t\t\t\t\t
      const struct prefix *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct route_table*::cleanup
      Src: /src/frr/lib/table.c:75,1
    - Dst: struct route_table*::delegate::destroy_node
      Src: /src/frr/lib/table.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - table
    - node
    argTypes:
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: route_node_free
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - struct route_table*::cleanup
    - struct route_table*::delegate::destroy_node
    linkageType: ''
    returnType: void
    signature: void route_node_free(struct route_table *table, struct route_node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rn_hash_node_del
      Src: /src/frr/lib/table.c:110,1
    - Dst: route_node_free
      Src: /src/frr/lib/table.c:111,1
    - Dst: assert
      Src: /src/frr/lib/table.c:123,1
    - Dst: rn_hash_node_fini
      Src: /src/frr/lib/table.c:125,1
    - Dst: XFREE
      Src: /src/frr/lib/table.c:126,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - rt
    argTypes:
    - struct route_table*
    assertStmts:
    - condition: (rt->count == 0)
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/frr/lib/table.c
    constantsTouched: []
    func_position:
      end: 128
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 128
    functionName: route_table_free
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 6
    functionsReached:
    - route_node_free
    - rn_hash_node_del
    - rn_hash_node_fini
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: void route_table_free(struct route_table *rt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/lib/table.c:146,1
    - Dst: p::p
      Src: /src/frr/lib/table.c:146,1
    - Dst: u::u
      Src: /src/frr/lib/table.c:150,1
    - Dst: prefixlen::prefixlen
      Src: /src/frr/lib/table.c:161,1
    - Dst: prefixlen::prefixlen
      Src: /src/frr/lib/table.c:166,1
    - Dst: prefixlen::prefixlen
      Src: /src/frr/lib/table.c:168,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - n
    - p
    - new
    argTypes:
    - struct prefix*
    - struct prefix*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 170
    functionName: route_common
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - u::u
    - p::p
    - prefix_copy
    - prefixlen::prefixlen
    linkageType: ''
    returnType: void
    signature: "void route_common(const struct prefix *n, const struct prefix *p,\n\t\t\t
      struct prefix *new)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_bit
      Src: /src/frr/lib/table.c:174,1
    - Dst: p::p
      Src: /src/frr/lib/table.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - new
    argTypes:
    - struct route_node*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 178
    functionName: set_link
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - p::p
    - prefix_bit
    linkageType: ''
    returnType: void
    signature: void set_link(struct route_node *node, struct route_node *new)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prefix_match
      Src: /src/frr/lib/table.c:194,1
    - Dst: prefix_bit
      Src: /src/frr/lib/table.c:201,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:206,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - table
    - pu
    argTypes:
    - struct route_table*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 209
    functionName: route_node_match
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 23
    functionsReached:
    - prefix_bit
    - route_lock_node
    - prefix_match
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_match(struct route_table *table,\n\t\t\t\t
      \   union prefixconstptr pu)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/table.c:216,1
    - Dst: route_node_match
      Src: /src/frr/lib/table.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - table
    - addr
    argTypes:
    - struct route_table*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 222
    functionName: route_node_match_ipv4
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 1
    functionsReached:
    - route_node_match
    - memset
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_match_ipv4(struct route_table *table,\n\t\t\t\t\t
      const struct in_addr *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/table.c:229,1
    - Dst: route_node_match
      Src: /src/frr/lib/table.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - table
    - addr
    argTypes:
    - struct route_table*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 235
    functionName: route_node_match_ipv6
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - route_node_match
    - memset
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_match_ipv6(struct route_table *table,\n\t\t\t\t\t
      const struct in6_addr *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/lib/table.c:242,1
    - Dst: apply_mask
      Src: /src/frr/lib/table.c:243,1
    - Dst: rn_hash_node_find
      Src: /src/frr/lib/table.c:245,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - table
    - pu
    argTypes:
    - struct route_table*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 247
    functionName: route_node_lookup
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 72
    functionsReached:
    - rn_hash_node_find
    - prefix_copy
    - route_lock_node
    - apply_mask
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_lookup(struct route_table *table,\n\t\t\t\t
      \    union prefixconstptr pu)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/lib/table.c:254,1
    - Dst: apply_mask
      Src: /src/frr/lib/table.c:255,1
    - Dst: rn_hash_node_find
      Src: /src/frr/lib/table.c:257,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - table
    - pu
    argTypes:
    - struct route_table*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 259
    functionName: route_node_lookup_maynull
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 1
    functionsReached:
    - rn_hash_node_find
    - prefix_copy
    - route_lock_node
    - apply_mask
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_lookup_maynull(struct route_table *table,\n\t\t\t\t\t
      \    union prefixconstptr pu)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace_enabled
      Src: /src/frr/lib/table.c:265,1
    - Dst: prefix2str
      Src: /src/frr/lib/table.c:267,1
    - Dst: frrtrace
      Src: /src/frr/lib/table.c:268,1
    - Dst: prefix_copy
      Src: /src/frr/lib/table.c:274,1
    - Dst: apply_mask
      Src: /src/frr/lib/table.c:275,1
    - Dst: rn_hash_node_find
      Src: /src/frr/lib/table.c:283,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:285,1
    - Dst: prefix_match
      Src: /src/frr/lib/table.c:290,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:292,1
    - Dst: prefix_bit
      Src: /src/frr/lib/table.c:295,1
    - Dst: route_node_set::route_node_set
      Src: /src/frr/lib/table.c:299,1
    - Dst: set_link
      Src: /src/frr/lib/table.c:301,1
    - Dst: route_node_new::route_node_new
      Src: /src/frr/lib/table.c:305,1
    - Dst: route_common
      Src: /src/frr/lib/table.c:306,1
    - Dst: p::p
      Src: /src/frr/lib/table.c:306,1
    - Dst: p::p
      Src: /src/frr/lib/table.c:307,1
    - Dst: rn_hash_node_add
      Src: /src/frr/lib/table.c:310,1
    - Dst: set_link
      Src: /src/frr/lib/table.c:313,1
    - Dst: p::p
      Src: /src/frr/lib/table.c:317,1
    - Dst: route_node_set::route_node_set
      Src: /src/frr/lib/table.c:319,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - table
    - pu
    argTypes:
    - struct route_table*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 262
    functionDepth: 4
    functionLinenumber: 262
    functionLinenumberEnd: 328
    functionName: route_node_get
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 54
    functionsReached:
    - prefix2str
    - route_lock_node
    - set_link
    - apply_mask
    - route_common
    - prefix_match
    - rn_hash_node_add
    - route_node_set::route_node_set
    - frrtrace_enabled
    - prefix_bit
    - route_node_new::route_node_new
    - frrtrace
    - rn_hash_node_find
    - p::p
    - prefix_copy
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_get(struct route_table *table,\n\t\t\t\t
      \ union prefixconstptr pu)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/table.c:336,1
    - Dst: assert
      Src: /src/frr/lib/table.c:337,1
    - Dst: rn_hash_node_del
      Src: /src/frr/lib/table.c:362,1
    - Dst: route_node_free
      Src: /src/frr/lib/table.c:374,1
    - Dst: route_node_delete
      Src: /src/frr/lib/table.c:378,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts:
    - condition: (node->lock == 0)
      pos:
        line_end: 335
        line_start: 335
        source_file: /src/frr/lib/table.c
    - condition: (node->info == NULL)
      pos:
        line_end: 336
        line_start: 336
        source_file: /src/frr/lib/table.c
    constantsTouched: []
    func_position:
      end: 379
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 379
    functionName: route_node_delete
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 2
    functionsReached:
    - route_node_free
    - rn_hash_node_del
    - route_node_delete
    - assert
    linkageType: ''
    returnType: void
    signature: void route_node_delete(struct route_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 392
    functionName: route_top
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 231
    functionsReached:
    - route_lock_node
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *route_top(struct route_table *table)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:405,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:406,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:411,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:412,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:420,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:421,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:426,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 428
    functionName: route_next
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 321
    functionsReached:
    - route_unlock_node
    - route_lock_node
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *route_next(struct route_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:442,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:443,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:448,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:449,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:457,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:458,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:463,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - node
    - limit
    argTypes:
    - struct route_node*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 431
    functionDepth: 2
    functionLinenumber: 431
    functionLinenumberEnd: 465
    functionName: route_next_until
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 12
    functionsReached:
    - route_unlock_node
    - route_lock_node
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_next_until(struct route_node *node,\n\t\t\t\t
      \   const struct route_node *limit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 470
    functionName: route_table_count
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long route_table_count(struct route_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/table.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - delegate
    - table
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 483
    functionName: route_node_create
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_node_create(route_table_delegate_t *delegate,\n\t\t\t\t
      \    struct route_table *table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/table.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - delegate
    - table
    - node
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 494
    functionName: route_node_destroy
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void route_node_destroy(route_table_delegate_t *delegate,\n\t\t\tstruct
      route_table *table, struct route_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 506
    functionName: route_table_get_default_delegate
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: route_table_delegate_t
    signature: route_table_delegate_t *route_table_get_default_delegate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_table_init_with_delegate
      Src: /src/frr/lib/table.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 514
    functionName: route_table_init
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 28
    functionsReached:
    - route_table_init_with_delegate
    linkageType: ''
    returnType: struct route_table
    signature: struct route_table *route_table_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_match
      Src: /src/frr/lib/table.c:533,1
    - Dst: prefix_match
      Src: /src/frr/lib/table.c:545,1
    - Dst: route_common
      Src: /src/frr/lib/table.c:549,1
    - Dst: assert
      Src: /src/frr/lib/table.c:550,1
    - Dst: assert
      Src: /src/frr/lib/table.c:551,1
    - Dst: prefix_bit
      Src: /src/frr/lib/table.c:559,1
    - Dst: assert
      Src: /src/frr/lib/table.c:564,1
    - Dst: prefix_bit
      Src: /src/frr/lib/table.c:564,1
    - Dst: assert
      Src: /src/frr/lib/table.c:571,1
    - Dst: prefix_bit
      Src: /src/frr/lib/table.c:571,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - struct prefix*
    - struct prefix*
    assertStmts:
    - condition: (common->prefixlen < p1->prefixlen)
      pos:
        line_end: 549
        line_start: 549
        source_file: /src/frr/lib/table.c
    - condition: (common->prefixlen < p2->prefixlen)
      pos:
        line_end: 550
        line_start: 550
        source_file: /src/frr/lib/table.c
    - condition: (!prefix_bit(&p2->u.prefix, common->prefixlen))
      pos:
        line_end: 563
        line_start: 563
        source_file: /src/frr/lib/table.c
    - condition: (prefix_bit(&p2->u.prefix, common->prefixlen))
      pos:
        line_end: 570
        line_start: 570
        source_file: /src/frr/lib/table.c
    constantsTouched: []
    func_position:
      end: 573
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 573
    functionName: route_table_prefix_iter_cmp
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 2
    functionsReached:
    - assert
    - prefix_bit
    - route_common
    - prefix_match
    linkageType: ''
    returnType: int
    signature: "int route_table_prefix_iter_cmp(const struct prefix *p1,\n\t\t\t\tconst
      struct prefix *p2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 591
    functionName: route_get_subtree_next
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *route_get_subtree_next(struct route_node *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_match
      Src: /src/frr/lib/table.c:614,1
    - Dst: prefix_match
      Src: /src/frr/lib/table.c:616,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:626,1
    - Dst: route_next
      Src: /src/frr/lib/table.c:627,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:629,1
    - Dst: prefix_bit
      Src: /src/frr/lib/table.c:646,1
    - Dst: route_get_subtree_next
      Src: /src/frr/lib/table.c:668,1
    - Dst: route_table_prefix_iter_cmp
      Src: /src/frr/lib/table.c:674,1
    - Dst: assert
      Src: /src/frr/lib/table.c:683,1
    - Dst: route_get_subtree_next
      Src: /src/frr/lib/table.c:691,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - table
    - p
    argTypes:
    - struct route_table*
    - struct prefix*
    assertStmts:
    - condition: (cmp < 0)
      pos:
        line_end: 682
        line_start: 682
        source_file: /src/frr/lib/table.c
    constantsTouched: []
    func_position:
      end: 695
      start: 601
    functionDepth: 3
    functionLinenumber: 601
    functionLinenumberEnd: 695
    functionName: route_table_get_next_internal
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_lock_node
    - prefix_match
    - route_get_subtree_next
    - route_next
    - prefix_bit
    - route_table_prefix_iter_cmp
    - assert
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *\nroute_table_get_next_internal(struct route_table
      *table,\n\t\t\t      const struct prefix *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_table_get_next_internal
      Src: /src/frr/lib/table.c:709,1
    - Dst: assert
      Src: /src/frr/lib/table.c:711,1
    - Dst: route_table_prefix_iter_cmp
      Src: /src/frr/lib/table.c:711,1
    - Dst: route_lock_node
      Src: /src/frr/lib/table.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - table
    - pu
    argTypes:
    - struct route_table*
    - union prefixconstptr
    assertStmts:
    - condition: (route_table_prefix_iter_cmp(&node->p, p) > 0)
      pos:
        line_end: 710
        line_start: 710
        source_file: /src/frr/lib/table.c
    constantsTouched: []
    func_position:
      end: 715
      start: 703
    functionDepth: 4
    functionLinenumber: 703
    functionLinenumberEnd: 715
    functionName: route_table_get_next
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 3
    functionsReached:
    - route_table_get_next_internal
    - route_lock_node
    - assert
    - route_table_prefix_iter_cmp
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *route_table_get_next(struct route_table *table,\n\t\t\t\t\tunion
      prefixconstptr pu)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/table.c:722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - iter
    - table
    argTypes:
    - route_table_iter_t*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 725
    functionName: route_table_iter_init
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 7
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void route_table_iter_init(route_table_iter_t *iter, struct route_table
      *table)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prefix_copy
      Src: /src/frr/lib/table.c:752,1
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:753,1
    - Dst: assert
      Src: /src/frr/lib/table.c:759,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - iter
    argTypes:
    - route_table_iter_t*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 758
        line_start: 758
        source_file: /src/frr/lib/table.c
    constantsTouched: []
    func_position:
      end: 761
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 761
    functionName: route_table_iter_pause
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 2
    functionsReached:
    - route_unlock_node
    - prefix_copy
    - assert
    linkageType: ''
    returnType: void
    signature: void route_table_iter_pause(route_table_iter_t *iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_unlock_node
      Src: /src/frr/lib/table.c:771,1
    - Dst: assert
      Src: /src/frr/lib/table.c:774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - iter
    argTypes:
    - route_table_iter_t*
    assertStmts:
    - condition: (!iter->current)
      pos:
        line_end: 773
        line_start: 773
        source_file: /src/frr/lib/table.c
    constantsTouched: []
    func_position:
      end: 781
      start: 768
    functionDepth: 2
    functionLinenumber: 768
    functionLinenumberEnd: 781
    functionName: route_table_iter_cleanup
    functionSourceFile: /src/frr/lib/table.c
    functionUses: 8
    functionsReached:
    - route_unlock_node
    - assert
    linkageType: ''
    returnType: void
    signature: void route_table_iter_cleanup(route_table_iter_t *iter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/lib/snmp.c:17,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - o1
    - o1_len
    - o2
    - o2_len
    argTypes:
    - oid*
    - int
    - oid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 29
    functionName: oid_compare
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 0
    functionsReached:
    - MIN
    linkageType: ''
    returnType: int
    signature: int oid_compare(const oid *o1, int o1_len, const oid *o2, int o2_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/snmp.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dest
    - src
    - size
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: oid_copy
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *oid_copy(void *dest, const void *src, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - oid
    - len
    - addr
    argTypes:
    - oid[]
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: oid2in_addr
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void oid2in_addr(oid oid[], int len, struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - oid
    - addr
    argTypes:
    - oid[]
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: oid2in6_addr
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void oid2in6_addr(oid oid[], struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/snmp.c:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oid
    - dest
    argTypes:
    - oid[]
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 72
    functionName: oid2int
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 2
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: void
    signature: void oid2int(oid oid[], int *dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - oid
    - addr
    argTypes:
    - oid[]
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: oid_copy_in_addr
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void oid_copy_in_addr(oid oid[], const struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - oid
    - addr
    argTypes:
    - oid[]
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 97
    functionName: oid_copy_in6_addr
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void oid_copy_in6_addr(oid oid[], const struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/lib/snmp.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oid
    - val
    argTypes:
    - oid[]
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 110
    functionName: oid_copy_int
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 3
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: void oid_copy_int(oid oid[], int *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - oid
    - len
    - string
    argTypes:
    - oid[]
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 124
    functionName: oid2string
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void oid2string(oid oid[], int len, char *string)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - oid
    - string
    - len
    argTypes:
    - oid[]
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 138
    functionName: oid_copy_str
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void oid_copy_str(oid oid[], const char *string, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: oid_copy
      Src: /src/frr/lib/snmp.c:146,1
    - Dst: oid_compare
      Src: /src/frr/lib/snmp.c:149,1
    - Dst: memcpy
      Src: /src/frr/lib/snmp.c:156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 163
    functionName: smux_header_generic
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 20
    functionsReached:
    - oid_compare
    - oid_copy
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int smux_header_generic(struct variable *v, oid *name, size_t *length,\n\t\t\tint
      exact, size_t *var_len, WriteMethod **write_method)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: oid_compare
      Src: /src/frr/lib/snmp.c:170,1
    - Dst: oid_copy
      Src: /src/frr/lib/snmp.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 181
    functionName: smux_header_table
    functionSourceFile: /src/frr/lib/snmp.c
    functionUses: 27
    functionsReached:
    - oid_compare
    - oid_copy
    linkageType: ''
    returnType: int
    signature: "int smux_header_table(struct variable *v, oid *name, size_t *length,
      int exact,\n\t\t      size_t *var_len, WriteMethod **write_method)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isalpha
      Src: /src/frr/lib/defaults.c:35,1
    - Dst: tolower
      Src: /src/frr/lib/defaults.c:36,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ch
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 40
    functionName: version_value
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 0
    functionsReached:
    - isalpha
    - tolower
    linkageType: ''
    returnType: int
    signature: int version_value(int ch)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/frr/lib/defaults.c:49,1
    - Dst: isdigit
      Src: /src/frr/lib/defaults.c:50,1
    - Dst: strtoul
      Src: /src/frr/lib/defaults.c:54,1
    - Dst: strtoul
      Src: /src/frr/lib/defaults.c:55,1
    - Dst: version_value
      Src: /src/frr/lib/defaults.c:66,1
    - Dst: version_value
      Src: /src/frr/lib/defaults.c:67,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - aa
    - bb
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 75
    functionName: frr_version_cmp
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 1
    functionsReached:
    - isdigit
    - version_value
    - strtoul
    linkageType: ''
    returnType: int
    signature: int frr_version_cmp(const char *aa, const char *bb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_default_apply_one
      Src: /src/frr/lib/defaults.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - dflt
    argTypes:
    - struct frr_default*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 86
    functionName: frr_default_add
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 0
    functionsReached:
    - frr_default_apply_one
    linkageType: ''
    returnType: void
    signature: void frr_default_add(struct frr_default *dflt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/defaults.c:111,1
    - Dst: strlen
      Src: /src/frr/lib/defaults.c:111,1
    - Dst: fprintf
      Src: /src/frr/lib/defaults.c:115,1
    - Dst: strlen
      Src: /src/frr/lib/defaults.c:121,1
    - Dst: isspace
      Src: /src/frr/lib/defaults.c:122,1
    - Dst: frr_version_cmp
      Src: /src/frr/lib/defaults.c:125,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 4
    argNames:
    - name
    - vspec
    - version
    - check
    argTypes:
    - char*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 130
    functionName: frr_match_version
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 0
    functionsReached:
    - strlen
    - fprintf
    - strncmp
    - frr_version_cmp
    - isspace
    linkageType: ''
    returnType: bool
    signature: "bool frr_match_version(const char *name, const char *vspec,\n\t\t\t
      \     const char *version, bool check)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/defaults.c:139,1
    - Dst: frr_match_version
      Src: /src/frr/lib/defaults.c:142,1
    - Dst: frr_match_version
      Src: /src/frr/lib/defaults.c:145,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 35
    argCount: 2
    argNames:
    - dflt
    - check
    argTypes:
    - struct frr_default*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 132
    functionDepth: 3
    functionLinenumber: 132
    functionLinenumberEnd: 179
    functionName: frr_default_apply_one
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 1
    functionsReached:
    - frr_match_version
    - strcmp
    linkageType: ''
    returnType: void
    signature: void frr_default_apply_one(struct frr_default *dflt, bool check)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_default_apply_one
      Src: /src/frr/lib/defaults.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 181
    functionDepth: 4
    functionLinenumber: 181
    functionLinenumberEnd: 187
    functionName: frr_defaults_apply
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 1
    functionsReached:
    - frr_default_apply_one
    linkageType: ''
    returnType: void
    signature: void frr_defaults_apply(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/defaults.c:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - profile
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 197
    functionName: frr_defaults_profile_valid
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool frr_defaults_profile_valid(const char *profile)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: frr_defaults_version
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *frr_defaults_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: frr_defaults_profile
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *frr_defaults_profile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/defaults.c:211,1
    - Dst: frr_defaults_apply
      Src: /src/frr/lib/defaults.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - version
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 5
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: frr_defaults_version_set
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - frr_defaults_apply
    linkageType: ''
    returnType: void
    signature: void frr_defaults_version_set(const char *version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/lib/defaults.c:217,1
    - Dst: frr_defaults_apply
      Src: /src/frr/lib/defaults.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - profile
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 215
    functionDepth: 5
    functionLinenumber: 215
    functionLinenumberEnd: 219
    functionName: frr_defaults_profile_set
    functionSourceFile: /src/frr/lib/defaults.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - frr_defaults_apply
    linkageType: ''
    returnType: void
    signature: void frr_defaults_profile_set(const char *profile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/graph.c:17,1
    - Dst: vector_init
      Src: /src/frr/lib/graph.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 21
    functionName: graph_new
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 2
    functionsReached:
    - vector_init
    - XCALLOC
    linkageType: ''
    returnType: struct graph
    signature: struct graph *graph_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/graph.c:24,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:26,1
    - Dst: graph_delete_node
      Src: /src/frr/lib/graph.c:27,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:27,1
    - Dst: vector_free
      Src: /src/frr/lib/graph.c:29,1
    - Dst: XFREE
      Src: /src/frr/lib/graph.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - graph
    argTypes:
    - struct graph*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: graph_delete_graph
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 1
    functionsReached:
    - vector_free
    - vector_active
    - vector_slot
    - XFREE
    - graph_delete_node
    - no_sanitize
    linkageType: ''
    returnType: void
    signature: "void graph_delete_graph(struct graph *graph)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/graph.c:37,1
    - Dst: vector_init
      Src: /src/frr/lib/graph.c:39,1
    - Dst: vector_init
      Src: /src/frr/lib/graph.c:40,1
    - Dst: vector_set
      Src: /src/frr/lib/graph.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - graph
    - data
    argTypes:
    - struct graph*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 47
    functionName: graph_new_node
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 2
    functionsReached:
    - vector_init
    - vector_set
    - XCALLOC
    linkageType: ''
    returnType: struct graph_node
    signature: "struct graph_node *graph_new_node(struct graph *graph, void *data,\n\t\t\t\t
      \ void (*del)(void *))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - v
    - ix
    argTypes:
    - vector
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: graph_vector_remove
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void graph_vector_remove(vector v, unsigned int ix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/graph.c:64,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:73,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:74,1
    - Dst: graph_remove_edge
      Src: /src/frr/lib/graph.c:75,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:79,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:80,1
    - Dst: graph_remove_edge
      Src: /src/frr/lib/graph.c:81,1
    - Dst: vector_free
      Src: /src/frr/lib/graph.c:89,1
    - Dst: vector_free
      Src: /src/frr/lib/graph.c:90,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:93,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:94,1
    - Dst: graph_vector_remove
      Src: /src/frr/lib/graph.c:95,1
    - Dst: XFREE
      Src: /src/frr/lib/graph.c:100,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - graph
    - node
    argTypes:
    - struct graph*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 101
    functionName: graph_delete_node
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 5
    functionsReached:
    - vector_free
    - graph_vector_remove
    - vector_active
    - vector_slot
    - graph_remove_edge
    - XFREE
    - no_sanitize
    linkageType: ''
    returnType: void
    signature: "void graph_delete_node(struct graph *graph, struct graph_node *node)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set
      Src: /src/frr/lib/graph.c:106,1
    - Dst: vector_set
      Src: /src/frr/lib/graph.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - struct graph_node*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: graph_add_edge
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 2
    functionsReached:
    - vector_set
    linkageType: ''
    returnType: struct graph_node
    signature: "struct graph_node *graph_add_edge(struct graph_node *from,\n\t\t\t\t
      \ struct graph_node *to)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/graph.c:112,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:115,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:116,1
    - Dst: graph_vector_remove
      Src: /src/frr/lib/graph.c:117,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:121,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:122,1
    - Dst: graph_vector_remove
      Src: /src/frr/lib/graph.c:123,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - struct graph_node*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 126
    functionName: graph_remove_edge
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 2
    functionsReached:
    - graph_vector_remove
    - vector_active
    - no_sanitize
    - vector_slot
    linkageType: ''
    returnType: void
    signature: "void graph_remove_edge(struct graph_node *from, struct graph_node
      *to)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/graph.c:129,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:133,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - graph
    - data
    argTypes:
    - struct graph*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: graph_find_node
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 0
    functionsReached:
    - vector_active
    - no_sanitize
    - vector_slot
    linkageType: ''
    returnType: struct graph_node
    signature: "struct graph_node *graph_find_node(struct graph *graph, void *data)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/graph.c:143,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:145,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - struct graph_node*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: graph_has_edge
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 0
    functionsReached:
    - vector_active
    - no_sanitize
    - vector_slot
    linkageType: ''
    returnType: bool
    signature: "bool graph_has_edge(struct graph_node *from, struct graph_node *to)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/graph.c:155,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:158,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:159,1
    - Dst: vector_ensure
      Src: /src/frr/lib/graph.c:164,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:164,1
    - Dst: vector_set_index
      Src: /src/frr/lib/graph.c:165,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:165,1
    - Dst: dfs_cb
      Src: /src/frr/lib/graph.c:168,1
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:171,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:172,1
    - Dst: _graph_dfs
      Src: /src/frr/lib/graph.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - graph
    - start
    - visited
    - arg
    argTypes:
    - struct graph*
    - struct graph_node*
    - vector
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 176
    functionName: _graph_dfs
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 1
    functionsReached:
    - dfs_cb
    - vector_active
    - vector_slot
    - vector_set_index
    - _graph_dfs
    - vector_ensure
    - no_sanitize
    linkageType: ''
    returnType: void
    signature: "void _graph_dfs(struct graph *graph, struct graph_node *start,\n\t\t
      \      vector visited,\n\t\t       void (*dfs_cb)(struct graph_node *, void
      *), void *arg)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_init
      Src: /src/frr/lib/graph.c:181,1
    - Dst: _graph_dfs
      Src: /src/frr/lib/graph.c:183,1
    - Dst: vector_free
      Src: /src/frr/lib/graph.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - graph
    - start
    - arg
    argTypes:
    - struct graph*
    - struct graph_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 178
    functionDepth: 4
    functionLinenumber: 178
    functionLinenumberEnd: 185
    functionName: graph_dfs
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 2
    functionsReached:
    - _graph_dfs
    - vector_init
    - vector_free
    linkageType: ''
    returnType: void
    signature: "void graph_dfs(struct graph *graph, struct graph_node *start,\n\t
      \      void (*dfs_cb)(struct graph_node *, void *), void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/graph.c:193,1
    - Dst: vector_slot
      Src: /src/frr/lib/graph.c:194,1
    - Dst: snprintf
      Src: /src/frr/lib/graph.c:196,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/graph.c:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - gn
    - buf
    argTypes:
    - struct graph_node*
    - struct buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 199
    functionName: graph_dump_dot_default_print_cb
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 0
    functionsReached:
    - buffer_putstr
    - vector_active
    - vector_slot
    - snprintf
    linkageType: ''
    returnType: void
    signature: void graph_dump_dot_default_print_cb(struct graph_node *gn, struct
      buffer *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buffer_new
      Src: /src/frr/lib/graph.c:204,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/graph.c:208,1
    - Dst: graph_dfs
      Src: /src/frr/lib/graph.c:210,1
    - Dst: buffer_putstr
      Src: /src/frr/lib/graph.c:213,1
    - Dst: buffer_getstr
      Src: /src/frr/lib/graph.c:215,1
    - Dst: buffer_free
      Src: /src/frr/lib/graph.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - graph
    - start
    argTypes:
    - struct graph*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 201
    functionDepth: 5
    functionLinenumber: 201
    functionLinenumberEnd: 219
    functionName: graph_dump_dot
    functionSourceFile: /src/frr/lib/graph.c
    functionUses: 2
    functionsReached:
    - buffer_new
    - buffer_free
    - graph_dfs
    - buffer_getstr
    - buffer_putstr
    linkageType: ''
    returnType: char
    signature: "char *graph_dump_dot(struct graph *graph, struct graph_node *start,\n\t\t
      \    void (*pcb)(struct graph_node *, struct buffer *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: STAILQ_HEAD
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: STAILQ_HEAD_INITIALIZER
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_HEAD_INITIALIZER(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - entry
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: STAILQ_ENTRY
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_ENTRY(entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head1
    - ','
    - head2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: STAILQ_CONCAT
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_CONCAT(head1, head2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: STAILQ_EMPTY
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: STAILQ_FIRST
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_FIRST(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: STAILQ_FOREACH
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_FOREACH(var, head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - var
    - ','
    - head
    - ','
    - field
    - ','
    - tvar
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: STAILQ_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_FOREACH_SAFE(var, head, field, tvar)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: STAILQ_INIT
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INIT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - tqelm
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: STAILQ_INSERT_AFTER
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INSERT_AFTER(head, tqelm, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: STAILQ_INSERT_HEAD
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INSERT_HEAD(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: STAILQ_INSERT_TAIL
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_INSERT_TAIL(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: STAILQ_LAST
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_LAST(head, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: STAILQ_NEXT
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_NEXT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: STAILQ_REMOVE
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_REMOVE(head, elm, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: STAILQ_REMOVE_AFTER
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_REMOVE_AFTER(head, elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: STAILQ_REMOVE_HEAD
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_REMOVE_HEAD(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head1
    - ','
    - head2
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 62
    functionName: STAILQ_SWAP
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAILQ_SWAP(head1, head2, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: TAILQ_POP_FIRST
    functionSourceFile: /src/frr/lib/queue.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TAILQ_POP_FIRST(head, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - mtype
    - ','
    - ptr
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 148
    functionName: rcu_free
    functionSourceFile: /src/frr/lib/frrcu.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rcu_free(mtype, ptr, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - func
    - ','
    - ptr
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 165
    functionName: rcu_call
    functionSourceFile: /src/frr/lib/frrcu.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rcu_call(func, ptr, field)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - afi
    argTypes:
    - iana_afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 56
    functionName: afi_iana2int
    functionSourceFile: /src/frr/lib/iana_afi.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: afi_t
    signature: afi_t afi_iana2int(iana_afi_t afi)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - afi
    argTypes:
    - afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 73
    functionName: afi_int2iana
    functionSourceFile: /src/frr/lib/iana_afi.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: iana_afi_t
    signature: iana_afi_t afi_int2iana(afi_t afi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: afi2str
      Src: /src/frr/lib/iana_afi.h:77,1
    - Dst: afi_iana2int
      Src: /src/frr/lib/iana_afi.h:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - afi
    argTypes:
    - iana_afi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: iana_afi2str
    functionSourceFile: /src/frr/lib/iana_afi.h
    functionUses: 15
    functionsReached:
    - afi_iana2int
    - afi2str
    linkageType: ''
    returnType: char
    signature: char *iana_afi2str(iana_afi_t afi)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - safi
    argTypes:
    - iana_safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 102
    functionName: safi_iana2int
    functionSourceFile: /src/frr/lib/iana_afi.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: safi_t
    signature: safi_t safi_iana2int(iana_safi_t safi)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - safi
    argTypes:
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 127
    functionName: safi_int2iana
    functionSourceFile: /src/frr/lib/iana_afi.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: iana_safi_t
    signature: iana_safi_t safi_int2iana(safi_t safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: safi2str
      Src: /src/frr/lib/iana_afi.h:131,1
    - Dst: safi_iana2int
      Src: /src/frr/lib/iana_afi.h:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - safi
    argTypes:
    - iana_safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: iana_safi2str
    functionSourceFile: /src/frr/lib/iana_afi.h
    functionUses: 15
    functionsReached:
    - safi2str
    - safi_iana2int
    linkageType: ''
    returnType: char
    signature: char *iana_safi2str(iana_safi_t safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/lib/lib_errors.c:378,1
    - Dst: log_ref_add
      Src: /src/frr/lib/lib_errors.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 380
    functionName: lib_error_init
    functionSourceFile: /src/frr/lib/lib_errors.c
    functionUses: 2
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void lib_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: at
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 200
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: at(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: atn
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atn(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: atm
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atm(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: printfrr
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 164
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: printfrr(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ch
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: printfrr_ext_char
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: printfrr_ext_char(ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ea
    argTypes:
    - struct printfrr_eargs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 185
    functionName: printfrr_ext_len
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t printfrr_ext_len(struct printfrr_eargs *ea)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - matchs
    - ','
    - print_fn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 206
    functionName: printfrr_ext_autoreg_p
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: printfrr_ext_autoreg_p(matchs, print_fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - matchs
    - ','
    - print_fn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 220
    functionName: printfrr_ext_autoreg_i
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: printfrr_ext_autoreg_i(matchs, print_fn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/printfrr.h:229,1
    - Dst: MIN
      Src: /src/frr/lib/printfrr.h:235,1
    - Dst: memcpy
      Src: /src/frr/lib/printfrr.h:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - str
    argTypes:
    - struct fbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 240
    functionName: bputs
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 35
    functionsReached:
    - MIN
    - strlen
    - memcpy
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t bputs(struct fbuf *buf, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - ch
    argTypes:
    - struct fbuf*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 247
    functionName: bputch
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t bputch(struct fbuf *buf, char ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - val
    argTypes:
    - struct fbuf*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: bputhex
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t bputhex(struct fbuf *buf, uint8_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 310
    functionName: FMT_NSTD
    functionSourceFile: /src/frr/lib/printfrr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FMT_NSTD(expr)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/frr/lib/asn.c:52,1
    - Dst: isdigit
      Src: /src/frr/lib/asn.c:56,1
    - Dst: isdigit
      Src: /src/frr/lib/asn.c:60,1
    - Dst: isdigit
      Src: /src/frr/lib/asn.c:79,1
    - Dst: isdigit
      Src: /src/frr/lib/asn.c:83,1
    - Dst: isdigit
      Src: /src/frr/lib/asn.c:94,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 80
    argCount: 5
    argNames:
    - asstring
    - asn
    - next
    - partial
    - mode
    argTypes:
    - char*
    - as_t*
    - char**
    - bool*
    - enum asnotation_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 129
    functionName: asn_str2asn_internal
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 0
    functionsReached:
    - isdigit
    linkageType: ''
    returnType: bool
    signature: "bool asn_str2asn_internal(const char *asstring, as_t *asn,\n\t\t\t\t
      const char **next, bool *partial,\n\t\t\t\t enum asnotation_mode *mode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/asn.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - asn
    - asstring
    - len
    argTypes:
    - as_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 138
    functionName: asn_asn2asdot
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void asn_asn2asdot(as_t asn, char *asstring, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: asn_str2asn_internal
      Src: /src/frr/lib/asn.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - asstring
    - asn
    argTypes:
    - char*
    - as_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: asn_str2asn
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 4
    functionsReached:
    - asn_str2asn_internal
    linkageType: ''
    returnType: bool
    signature: bool asn_str2asn(const char *asstring, as_t *asn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/asn.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - asn
    argTypes:
    - as_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 151
    functionName: asn_asn2asplain
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *asn_asn2asplain(as_t asn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asn_str2asn_internal
      Src: /src/frr/lib/asn.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - asstring
    - asn
    - found_ptr
    argTypes:
    - char*
    - as_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 163
    functionName: asn_str2asn_parse
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 1
    functionsReached:
    - asn_str2asn_internal
    linkageType: ''
    returnType: char
    signature: char *asn_str2asn_parse(const char *asstring, as_t *asn, bool *found_ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - relax
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: asn_relax_as_zero
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void asn_relax_as_zero(bool relax)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: asn_str2asn_internal
      Src: /src/frr/lib/asn.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 182
    functionName: asn_str2asn_match
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 3
    functionsReached:
    - asn_str2asn_internal
    linkageType: ''
    returnType: enum match_type
    signature: enum match_type asn_str2asn_match(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: asn_str2asn_internal
      Src: /src/frr/lib/asn.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - asstring
    - asn
    - asnotation
    argTypes:
    - char*
    - as_t*
    - enum asnotation_mode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: asn_str2asn_notation
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 1
    functionsReached:
    - asn_str2asn_internal
    linkageType: ''
    returnType: bool
    signature: "bool asn_str2asn_notation(const char *asstring, as_t *asn,\n\t\t\t
      \ enum asnotation_mode *asnotation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_msg
      Src: /src/frr/lib/asn.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - asnotation
    argTypes:
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: asn_mode2str
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 1
    functionsReached:
    - lookup_msg
    linkageType: ''
    returnType: char
    signature: char *asn_mode2str(enum asnotation_mode asnotation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_int_add
      Src: /src/frr/lib/asn.c:203,1
    - Dst: asn_asn2asdot
      Src: /src/frr/lib/asn.c:205,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/asn.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - json
    - attr
    - asn
    - asnotation
    argTypes:
    - json_object*
    - char*
    - as_t
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 208
    functionName: asn_asn2json
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 4
    functionsReached:
    - asn_asn2asdot
    - json_object_string_add
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void asn_asn2json(json_object *json, const char *attr,\n\t\t  as_t
      asn, enum asnotation_mode asnotation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_add
      Src: /src/frr/lib/asn.c:217,1
    - Dst: json_object_new_int64
      Src: /src/frr/lib/asn.c:218,1
    - Dst: asn_asn2asdot
      Src: /src/frr/lib/asn.c:220,1
    - Dst: json_array_string_add
      Src: /src/frr/lib/asn.c:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - jseg_list
    - asn
    - asnotation
    argTypes:
    - json_object*
    - as_t
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: asn_asn2json_array
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 1
    functionsReached:
    - asn_asn2asdot
    - json_object_array_add
    - json_object_new_int64
    - json_array_string_add
    linkageType: ''
    returnType: void
    signature: "void asn_asn2json_array(json_object *jseg_list, as_t asn,\n\t\t\tenum
      asnotation_mode asnotation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/asn.c:230,1
    - Dst: asn_asn2asdot
      Src: /src/frr/lib/asn.c:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - asn
    - buf
    - len
    - asnotation
    argTypes:
    - as_t*
    - char*
    - size_t
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 234
    functionName: asn_asn2string
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 0
    functionsReached:
    - asn_asn2asdot
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *asn_asn2string(const as_t *asn, char *buf, size_t len,\n\t\t
      \    enum asnotation_mode asnotation)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/asn.c:245,1
    - Dst: asn_asn2string
      Src: /src/frr/lib/asn.c:247,1
    - Dst: bputs
      Src: /src/frr/lib/asn.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - buf
    - ea
    - ptr
    - asnotation
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    - enum asnotation_mode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 249
    functionName: printfrr_asnotation
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 0
    functionsReached:
    - asn_asn2string
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_asnotation(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t   const void *ptr,\n\t\t\t\t   enum asnotation_mode asnotation)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_asnotation
      Src: /src/frr/lib/asn.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 256
    functionName: printfrr_asplain
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 0
    functionsReached:
    - printfrr_asnotation
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_asplain(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_asnotation
      Src: /src/frr/lib/asn.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 259
    functionDepth: 3
    functionLinenumber: 259
    functionLinenumberEnd: 263
    functionName: printfrr_asdot
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 0
    functionsReached:
    - printfrr_asnotation
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_asdot(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr_asnotation
      Src: /src/frr/lib/asn.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: printfrr_asdotplus
    functionSourceFile: /src/frr/lib/asn.c
    functionUses: 0
    functionsReached:
    - printfrr_asnotation
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_asdotplus(struct fbuf *buf, struct printfrr_eargs
      *ea,\n\t\t\t\t  const void *ptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: item
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: item(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: cmd_hostname_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cmd_hostname_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: cmd_domainname_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cmd_domainname_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: cmd_system_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cmd_system_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: cmd_release_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cmd_release_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: cmd_version_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cmd_version_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: cmd_allow_reserved_ranges_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool cmd_allow_reserved_ranges_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: cmd_software_version_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cmd_software_version_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/lib/command.c:166,1
    - Dst: printf
      Src: /src/frr/lib/command.c:167,1
    - Dst: printf
      Src: /src/frr/lib/command.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - progname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 171
    functionName: print_version
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_version(const char *progname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/frr/lib/command.c:175,1
    - Dst: frrstr_join
      Src: /src/frr/lib/command.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - argv
    - argc
    - shift
    argTypes:
    - struct cmd_token**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 185
    functionName: argv_concat
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 3
    functionsReached:
    - frrstr_join
    - MAX
    linkageType: ''
    returnType: char
    signature: char *argv_concat(struct cmd_token **argv, int argc, int shift)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/frr/lib/command.c:195,1
    - Dst: frrstr_split_vec
      Src: /src/frr/lib/command.c:202,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:204,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:205,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:205,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:206,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:206,1
    - Dst: vector_unset
      Src: /src/frr/lib/command.c:207,1
    - Dst: vector_compact
      Src: /src/frr/lib/command.c:211,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 1
    argNames:
    - string
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 214
    functionName: cmd_make_strvec
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 4
    functionsReached:
    - strlen
    - vector_active
    - vector_slot
    - vector_unset
    - frrstr_split_vec
    - isspace
    - vector_compact
    - XFREE
    linkageType: ''
    returnType: vector
    signature: vector cmd_make_strvec(const char *string)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_strvec_free
      Src: /src/frr/lib/command.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - vector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: cmd_free_strvec
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 4
    functionsReached:
    - frrstr_strvec_free
    linkageType: ''
    returnType: void
    signature: void cmd_free_strvec(vector v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/command.c:235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - argv
    - argc
    - text
    - index
    argTypes:
    - struct cmd_token**
    - int
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 238
    functionName: argv_find
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 18
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: int
    signature: int argv_find(struct cmd_token **argv, int argc, const char *text,
      int *index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/lib/command.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 245
    functionName: cmd_hash_key
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int cmd_hash_key(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 250
    functionName: cmd_hash_cmp
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool cmd_hash_cmp(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set_index
      Src: /src/frr/lib/command.c:258,1
    - Dst: graph_new
      Src: /src/frr/lib/command.c:259,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:260,1
    - Dst: cmd_token_new
      Src: /src/frr/lib/command.c:262,1
    - Dst: graph_new_node
      Src: /src/frr/lib/command.c:263,1
    - Dst: snprintf
      Src: /src/frr/lib/command.c:266,1
    - Dst: hash_create_size
      Src: /src/frr/lib/command.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct cmd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 253
    functionDepth: 4
    functionLinenumber: 253
    functionLinenumberEnd: 269
    functionName: install_node
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 42
    functionsReached:
    - hash_create_size
    - cmd_token_new
    - graph_new
    - snprintf
    - vector_set_index
    - vector_init
    - graph_new_node
    linkageType: ''
    returnType: void
    signature: void install_node(struct cmd_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - enum node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 278
    functionName: cmd_prompt
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached:
    - vector_slot
    linkageType: ''
    returnType: char
    signature: char *cmd_prompt(enum node_type node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: cmd_defer_tree
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cmd_defer_tree(bool val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/command.c:295,1
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:300,1
    - Dst: fprintf
      Src: /src/frr/lib/command.c:303,1
    - Dst: exit
      Src: /src/frr/lib/command.c:308,1
    - Dst: hash_lookup
      Src: /src/frr/lib/command.c:311,1
    - Dst: fprintf
      Src: /src/frr/lib/command.c:312,1
    - Dst: hash_get
      Src: /src/frr/lib/command.c:320,1
    - Dst: graph_new
      Src: /src/frr/lib/command.c:323,1
    - Dst: cmd_token_new
      Src: /src/frr/lib/command.c:325,1
    - Dst: graph_new_node
      Src: /src/frr/lib/command.c:326,1
    - Dst: cmd_graph_parse
      Src: /src/frr/lib/command.c:329,1
    - Dst: cmd_graph_names
      Src: /src/frr/lib/command.c:330,1
    - Dst: cmd_graph_merge
      Src: /src/frr/lib/command.c:331,1
    - Dst: graph_delete_graph
      Src: /src/frr/lib/command.c:332,1
    - Dst: vector_set
      Src: /src/frr/lib/command.c:337,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - ntype
    - cmd
    argTypes:
    - enum node_type
    - struct cmd_element*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 286
    functionDepth: 4
    functionLinenumber: 286
    functionLinenumberEnd: 341
    functionName: _install_element
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached:
    - exit
    - cmd_token_new
    - graph_new
    - graph_delete_graph
    - _install_element
    - vector_lookup
    - fprintf
    - hash_lookup
    - vector_set
    - cmd_graph_names
    - cmd_graph_parse
    - hash_get
    - cmd_graph_merge
    - graph_new_node
    linkageType: ''
    returnType: void
    signature: void _install_element(enum node_type ntype, const struct cmd_element
      *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: graph_new
      Src: /src/frr/lib/command.c:347,1
    - Dst: cmd_token_new
      Src: /src/frr/lib/command.c:348,1
    - Dst: graph_new_node
      Src: /src/frr/lib/command.c:350,1
    - Dst: cmd_graph_parse
      Src: /src/frr/lib/command.c:352,1
    - Dst: cmd_graph_names
      Src: /src/frr/lib/command.c:353,1
    - Dst: cmd_graph_merge
      Src: /src/frr/lib/command.c:354,1
    - Dst: graph_delete_graph
      Src: /src/frr/lib/command.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 356
    functionName: cmd_finalize_iter
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - cmd_token_new
    - graph_new
    - graph_delete_graph
    - cmd_graph_names
    - cmd_graph_parse
    - cmd_graph_merge
    - graph_new_node
    linkageType: ''
    returnType: void
    signature: void cmd_finalize_iter(struct hash_bucket *hb, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/lib/command.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cnode
    argTypes:
    - struct cmd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 365
    functionName: cmd_finalize_node
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void cmd_finalize_node(struct cmd_node *cnode)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/command.c:373,1
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:378,1
    - Dst: fprintf
      Src: /src/frr/lib/command.c:381,1
    - Dst: exit
      Src: /src/frr/lib/command.c:386,1
    - Dst: hash_release
      Src: /src/frr/lib/command.c:389,1
    - Dst: fprintf
      Src: /src/frr/lib/command.c:390,1
    - Dst: vector_unset_value
      Src: /src/frr/lib/command.c:398,1
    - Dst: graph_new
      Src: /src/frr/lib/command.c:401,1
    - Dst: cmd_token_new
      Src: /src/frr/lib/command.c:403,1
    - Dst: graph_new_node
      Src: /src/frr/lib/command.c:404,1
    - Dst: cmd_graph_parse
      Src: /src/frr/lib/command.c:407,1
    - Dst: cmd_graph_names
      Src: /src/frr/lib/command.c:408,1
    - Dst: cmd_graph_merge
      Src: /src/frr/lib/command.c:409,1
    - Dst: graph_delete_graph
      Src: /src/frr/lib/command.c:410,1
    - Dst: uninstall_element
      Src: /src/frr/lib/command.c:414,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - ntype
    - cmd
    argTypes:
    - enum node_type
    - struct cmd_element*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 367
    functionDepth: 4
    functionLinenumber: 367
    functionLinenumberEnd: 415
    functionName: uninstall_element
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached:
    - exit
    - cmd_token_new
    - vector_unset_value
    - graph_new
    - graph_delete_graph
    - vector_lookup
    - fprintf
    - uninstall_element
    - cmd_graph_names
    - hash_release
    - cmd_graph_parse
    - cmd_graph_merge
    - graph_new_node
    linkageType: ''
    returnType: void
    signature: void uninstall_element(enum node_type ntype, const struct cmd_element
      *cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - s
    - v
    - n
    argTypes:
    - char*
    - long
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 427
    functionName: to64
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void to64(char *s, long v, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/lib/command.c:434,1
    - Dst: to64
      Src: /src/frr/lib/command.c:436,1
    - Dst: frr_weak_random
      Src: /src/frr/lib/command.c:436,1
    - Dst: to64
      Src: /src/frr/lib/command.c:437,1
    - Dst: crypt
      Src: /src/frr/lib/command.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - passwd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 441
    functionName: zencrypt
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - to64
    - crypt
    - frr_weak_random
    - gettimeofday
    linkageType: ''
    returnType: char
    signature: char *zencrypt(const char *passwd)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: cmd_hostname_get
      Src: /src/frr/lib/command.c:450,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:452,1
    - Dst: cmd_domainname_get
      Src: /src/frr/lib/command.c:454,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:456,1
    - Dst: cmd_allow_reserved_ranges_get
      Src: /src/frr/lib/command.c:458,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:459,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:470,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:473,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:477,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:479,1
    - Dst: log_config_write
      Src: /src/frr/lib/command.c:482,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:488,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:495,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:501,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:505,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:511,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:515,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:518,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:521,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:525,1
    - Dst: strncmp
      Src: /src/frr/lib/command.c:527,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:528,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:529,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:531,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:535,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 46
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 538
    functionName: config_write_host
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - cmd_hostname_get
    - strlen
    - vty_out
    - cmd_allow_reserved_ranges_get
    - strncmp
    - cmd_domainname_get
    - log_config_write
    linkageType: ''
    returnType: int
    signature: int config_write_host(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:543,1
    - Dst: cmd_finalize_node
      Src: /src/frr/lib/command.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v
    - ntype
    argTypes:
    - vector
    - enum node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 547
    functionName: cmd_node_graph
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - cmd_finalize_node
    - vector_slot
    linkageType: ''
    returnType: struct graph
    signature: struct graph *cmd_node_graph(vector v, enum node_type ntype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/command.c:552,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 2
    argNames:
    - node
    - first_word
    argTypes:
    - enum node_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 555
    functionName: cmd_try_do_shortcut
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cmd_try_do_shortcut(enum node_type node, char *first_word)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/command.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fst
    - snd
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 566
    functionName: compare_completions
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int compare_completions(const void *fst, const void *snd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vector_init
      Src: /src/frr/lib/command.c:578,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/command.c:583,1
    - Dst: for
      Src: /src/frr/lib/command.c:589,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:589,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:590,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:592,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:593,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:595,1
    - Dst: vector_set
      Src: /src/frr/lib/command.c:600,1
    - Dst: qsort
      Src: /src/frr/lib/command.c:604,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:604,1
    - Dst: vector_set_index
      Src: /src/frr/lib/command.c:609,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:609,1
    - Dst: memmove
      Src: /src/frr/lib/command.c:610,1
    - Dst: vector_set_index
      Src: /src/frr/lib/command.c:612,1
    - Dst: cmd_complete_command_real
      Src: /src/frr/lib/command.c:626,1
    - Dst: cmd_node_graph
      Src: /src/frr/lib/command.c:630,1
    - Dst: command_complete
      Src: /src/frr/lib/command.c:632,1
    - Dst: MATCHER_ERROR
      Src: /src/frr/lib/command.c:634,1
    - Dst: completions_to_vec
      Src: /src/frr/lib/command.c:639,1
    - Dst: list_delete
      Src: /src/frr/lib/command.c:640,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:643,1
    - Dst: vector
      Src: /src/frr/lib/command.c:659,1
    - Dst: cmd_try_do_shortcut
      Src: /src/frr/lib/command.c:661,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:661,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:674,1
    - Dst: vector_count
      Src: /src/frr/lib/command.c:674,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:676,1
    - Dst: vector_set_index
      Src: /src/frr/lib/command.c:677,1
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:678,1
    - Dst: cmd_complete_command_real
      Src: /src/frr/lib/command.c:681,1
    - Dst: vector_free
      Src: /src/frr/lib/command.c:683,1
    - Dst: cmd_complete_command_real
      Src: /src/frr/lib/command.c:689,1
    - Dst: cmd_variable_complete
      Src: /src/frr/lib/command.c:694,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:702,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/command.c:704,1
    - Dst: if
      Src: /src/frr/lib/command.c:705,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:705,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:708,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:720,1
    - Dst: strncmp
      Src: /src/frr/lib/command.c:720,1
    - Dst: vector_set
      Src: /src/frr/lib/command.c:721,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:723,1
    - Dst: cmd_variable_comp2str
      Src: /src/frr/lib/command.c:730,1
    - Dst: XCALLOC
      Src: /src/frr/lib/command.c:733,1
    - Dst: snprintf
      Src: /src/frr/lib/command.c:737,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:738,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:739,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:740,1
    - Dst: XREALLOC
      Src: /src/frr/lib/command.c:747,1
    - Dst: snprintf
      Src: /src/frr/lib/command.c:750,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:758,1
    - Dst: vector_set_index
      Src: /src/frr/lib/command.c:759,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/command.c:764,1
    - Dst: if
      Src: /src/frr/lib/command.c:766,1
    - Dst: listnode_add
      Src: /src/frr/lib/command.c:770,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:782,1
    - Dst: memset
      Src: /src/frr/lib/command.c:785,1
    - Dst: atoi
      Src: /src/frr/lib/command.c:786,1
    - Dst: arg
      Src: /src/frr/lib/command.c:788,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:789,1
    - Dst: cmd_variable_complete
      Src: /src/frr/lib/command.c:792,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:794,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:795,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:796,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:797,1
    - Dst: cmd_complete_command
      Src: /src/frr/lib/command.c:816,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:820,1
    - Dst: vector_count
      Src: /src/frr/lib/command.c:820,1
    - Dst: cmd_try_do_shortcut
      Src: /src/frr/lib/command.c:824,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:824,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:829,1
    - Dst: vector_set_index
      Src: /src/frr/lib/command.c:830,1
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:831,1
    - Dst: cmd_complete_command_real
      Src: /src/frr/lib/command.c:835,1
    - Dst: MATCHER_ERROR
      Src: /src/frr/lib/command.c:837,1
    - Dst: assert
      Src: /src/frr/lib/command.c:838,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:841,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:842,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:844,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:846,1
    - Dst: IS_VARYING_TOKEN
      Src: /src/frr/lib/command.c:848,1
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:849,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:850,1
    - Dst: cmd_variable_complete
      Src: /src/frr/lib/command.c:851,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:857,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command.c:869,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:870,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:872,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:873,1
    - Dst: vector_free
      Src: /src/frr/lib/command.c:879,1
    - Dst: vector_free
      Src: /src/frr/lib/command.c:882,1
    - Dst: assert
      Src: /src/frr/lib/command.c:885,1
    - Dst: vector_free
      Src: /src/frr/lib/command.c:888,1
    - Dst: node_parent
      Src: /src/frr/lib/command.c:898,1
    - Dst: assert
      Src: /src/frr/lib/command.c:902,1
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:904,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:931,1
    - Dst: node_parent
      Src: /src/frr/lib/command.c:932,1
    - Dst: cmd_node_graph
      Src: /src/frr/lib/command.c:938,1
    - Dst: command_match
      Src: /src/frr/lib/command.c:939,1
    - Dst: matched_element
      Src: /src/frr/lib/command.c:942,1
    - Dst: MATCHER_ERROR
      Src: /src/frr/lib/command.c:945,1
    - Dst: list_delete
      Src: /src/frr/lib/command.c:947,1
    - Dst: cmd_exit
      Src: /src/frr/lib/command.c:960,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command.c:963,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/command.c:969,1
    - Dst: if
      Src: /src/frr/lib/command.c:978,1
    - Dst: memset
      Src: /src/frr/lib/command.c:981,1
    - Dst: frr_get_cli_mode
      Src: /src/frr/lib/command.c:984,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/command.c:987,1
    - Dst: nb_cli_pending_commit_check
      Src: /src/frr/lib/command.c:995,1
    - Dst: func
      Src: /src/frr/lib/command.c:998,1
    - Dst: list_delete
      Src: /src/frr/lib/command.c:1002,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:1003,1
    - Dst: cmd_execute_command
      Src: /src/frr/lib/command.c:1023,1
    - Dst: cmd_try_do_shortcut
      Src: /src/frr/lib/command.c:1033,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:1033,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:1042,1
    - Dst: vector_count
      Src: /src/frr/lib/command.c:1042,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:1044,1
    - Dst: vector_set_index
      Src: /src/frr/lib/command.c:1045,1
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:1046,1
    - Dst: cmd_execute_command_real
      Src: /src/frr/lib/command.c:1048,1
    - Dst: vector_free
      Src: /src/frr/lib/command.c:1051,1
    - Dst: cmd_execute_command_real
      Src: /src/frr/lib/command.c:1058,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:1069,1
    - Dst: node_parent
      Src: /src/frr/lib/command.c:1071,1
    - Dst: cmd_execute_command_real
      Src: /src/frr/lib/command.c:1076,1
    - Dst: DEFINE_HOOK
      Src: /src/frr/lib/command.c:1136,1
    - Dst: DECLARE_KOOH
      Src: /src/frr/lib/command.c:1140,1
    - Dst: DEFINE_KOOH
      Src: /src/frr/lib/command.c:1142,1
    - Dst: handle_pipe_action
      Src: /src/frr/lib/command.c:1148,1
    - Dst: strstr
      Src: /src/frr/lib/command.c:1153,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:1160,1
    - Dst: strsep
      Src: /src/frr/lib/command.c:1163,1
    - Dst: assert
      Src: /src/frr/lib/command.c:1164,1
    - Dst: strmatch
      Src: /src/frr/lib/command.c:1167,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1172,1
    - Dst: vty_set_include
      Src: /src/frr/lib/command.c:1177,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1180,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:1184,1
    - Dst: strsep
      Src: /src/frr/lib/command.c:1186,1
    - Dst: vty_set_include
      Src: /src/frr/lib/command.c:1201,1
    - Dst: hook_call
      Src: /src/frr/lib/command.c:1214,1
    - Dst: cmd_make_strvec
      Src: /src/frr/lib/command.c:1222,1
    - Dst: cmd_execute_command
      Src: /src/frr/lib/command.c:1225,1
    - Dst: cmd_free_strvec
      Src: /src/frr/lib/command.c:1226,1
    - Dst: hook_call
      Src: /src/frr/lib/command.c:1232,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:1234,1
    - Dst: command_config_read_one_line
      Src: /src/frr/lib/command.c:1254,1
    - Dst: cmd_make_strvec
      Src: /src/frr/lib/command.c:1262,1
    - Dst: cmd_execute_command_strict
      Src: /src/frr/lib/command.c:1269,1
    - Dst: cmd_execute_command_real
      Src: /src/frr/lib/command.c:1281,1
    - Dst: CMD_ERR_NO_MATCH
      Src: /src/frr/lib/command.c:1285,1
    - Dst: XCALLOC
      Src: /src/frr/lib/command.c:1290,1
    - Dst: memcpy
      Src: /src/frr/lib/command.c:1292,1
    - Dst: ret
      Src: /src/frr/lib/command.c:1294,1
    - Dst: list_new
      Src: /src/frr/lib/command.c:1296,1
    - Dst: listnode_add
      Src: /src/frr/lib/command.c:1298,1
    - Dst: cmd_free_strvec
      Src: /src/frr/lib/command.c:1301,1
    - Dst: config_from_file
      Src: /src/frr/lib/command.c:1307,1
    - Dst: fgets
      Src: /src/frr/lib/command.c:1312,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:1316,1
    - Dst: zlog_notice
      Src: /src/frr/lib/command.c:1319,1
    - Dst: ret
      Src: /src/frr/lib/command.c:1327,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 36
    argCount: 1
    argNames:
    - completions
    argTypes:
    - struct list*
    assertStmts:
    - condition: (!comps)
      pos:
        line_end: 884
        line_start: 884
        source_file: /src/frr/lib/command.c
    - condition: (initial_comps)
      pos:
        line_end: 837
        line_start: 837
        source_file: /src/frr/lib/command.c
    - condition: (token)
      pos:
        line_end: 1163
        line_start: 1163
        source_file: /src/frr/lib/command.c
    - condition: (node > CONFIG_NODE)
      pos:
        line_end: 901
        line_start: 901
        source_file: /src/frr/lib/command.c
    constantsTouched: []
    func_position:
      end: 1383
      start: 576
    functionDepth: 5
    functionLinenumber: 576
    functionLinenumberEnd: 1383
    functionName: completions_to_vec
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 1
    functionsReached:
    - cmd_exit
    - strlen
    - list_delete
    - cmd_free_strvec
    - cmd_execute_command_strict
    - vector_slot
    - listnode_add
    - zlog_notice
    - strncmp
    - CMD_ERR_NO_MATCH
    - vector_set_index
    - cmd_complete_command_real
    - config_from_file
    - vty_set_include
    - ret
    - DEFINE_KOOH
    - strmatch
    - IS_VARYING_TOKEN
    - snprintf
    - XCALLOC
    - memset
    - vector_count
    - ALL_LIST_ELEMENTS_RO
    - command_match
    - command_complete
    - cmd_execute_command_real
    - hook_call
    - cmd_node_graph
    - handle_pipe_action
    - vector_set
    - if
    - for
    - arg
    - assert
    - cmd_complete_command
    - vector_free
    - strstr
    - completions_to_vec
    - vty_out
    - MATCHER_ERROR
    - vector_active
    - cmd_variable_comp2str
    - DEFINE_HOOK
    - XFREE
    - cmd_execute_command
    - nb_config_replace
    - vector_init
    - cmd_variable_handler_register
    - matched_element
    - atoi
    - strsep
    - XSTRDUP
    - memcpy
    - fgets
    - DECLARE_KOOH
    - cmd_make_strvec
    - func
    - nb_cli_pending_commit_check
    - strcmp
    - qsort
    - XMALLOC
    - memmove
    - vector_lookup
    - frr_get_cli_mode
    - list_new
    - command_config_read_one_line
    - cmd_try_do_shortcut
    - XREALLOC
    - node_parent
    - vector
    - cmd_variable_complete
    linkageType: ''
    returnType: vector
    signature: vector completions_to_vec(struct list *completions)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_shell
      Src: /src/frr/lib/command.c:1387,1
    - Dst: exit
      Src: /src/frr/lib/command.c:1388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1392
    functionName: root_on_exit
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - exit
    - vty_shell
    linkageType: ''
    returnType: int
    signature: int root_on_exit(struct vty *vty)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vector_lookup
      Src: /src/frr/lib/command.c:1396,1
    - Dst: struct cmd_node*::node_exit
      Src: /src/frr/lib/command.c:1399,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1394
    functionDepth: 1
    functionLinenumber: 1394
    functionLinenumberEnd: 1406
    functionName: cmd_exit
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 3
    functionsReached:
    - vector_lookup
    - struct cmd_node*::node_exit
    linkageType: ''
    returnType: void
    signature: void cmd_exit(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:1564,1
    - Dst: cmd_finalize_node
      Src: /src/frr/lib/command.c:1567,1
    - Dst: permute
      Src: /src/frr/lib/command.c:1568,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:1568,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:1572,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:1574,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1576,1
    - Dst: print_cmd
      Src: /src/frr/lib/command.c:1577,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - do_permute
    argTypes:
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1562
    functionDepth: 2
    functionLinenumber: 1562
    functionLinenumberEnd: 1581
    functionName: cmd_list_cmds
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - cmd_finalize_node
    - vty_out
    - permute
    - vector_active
    - vector_slot
    - print_cmd
    linkageType: ''
    returnType: int
    signature: int cmd_list_cmds(struct vty *vty, int do_permute)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_show_config_prepare
      Src: /src/frr/lib/command.c:1629,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1632,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1633,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:1636,1
    - Dst: frr_defaults_version
      Src: /src/frr/lib/command.c:1636,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1637,1
    - Dst: frr_defaults_version
      Src: /src/frr/lib/command.c:1637,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1638,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1639,1
    - Dst: frr_defaults_profile
      Src: /src/frr/lib/command.c:1639,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1640,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:1642,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:1643,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1645,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1649,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1621
    functionDepth: 2
    functionLinenumber: 1621
    functionLinenumberEnd: 1653
    functionName: vty_write_config
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - vty_out
    - frr_defaults_version
    - strcmp
    - vector_active
    - vector_slot
    - nb_cli_show_config_prepare
    - frr_defaults_profile
    linkageType: ''
    returnType: int
    signature: int vty_write_config(struct vty *vty)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1670,1
    - Dst: strrchr
      Src: /src/frr/lib/command.c:1681,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:1683,1
    - Dst: open
      Src: /src/frr/lib/command.c:1685,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:1686,1
    - Dst: open
      Src: /src/frr/lib/command.c:1688,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:1691,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:1691,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command.c:1692,1
    - Dst: strlcpy
      Src: /src/frr/lib/command.c:1693,1
    - Dst: strlcat
      Src: /src/frr/lib/command.c:1694,1
    - Dst: XMALLOC
      Src: /src/frr/lib/command.c:1697,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:1697,1
    - Dst: snprintf
      Src: /src/frr/lib/command.c:1698,1
    - Dst: strlen
      Src: /src/frr/lib/command.c:1698,1
    - Dst: mkstemp
      Src: /src/frr/lib/command.c:1702,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1704,1
    - Dst: fchmod
      Src: /src/frr/lib/command.c:1708,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1709,1
    - Dst: safe_strerror
      Src: /src/frr/lib/command.c:1710,1
    - Dst: vty_new
      Src: /src/frr/lib/command.c:1715,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1720,1
    - Dst: vty_time_print
      Src: /src/frr/lib/command.c:1721,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1722,1
    - Dst: vty_write_config
      Src: /src/frr/lib/command.c:1723,1
    - Dst: vty_close
      Src: /src/frr/lib/command.c:1724,1
    - Dst: stat
      Src: /src/frr/lib/command.c:1726,1
    - Dst: unlink
      Src: /src/frr/lib/command.c:1727,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1729,1
    - Dst: link
      Src: /src/frr/lib/command.c:1734,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1735,1
    - Dst: fsync
      Src: /src/frr/lib/command.c:1741,1
    - Dst: rename
      Src: /src/frr/lib/command.c:1743,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1744,1
    - Dst: fsync
      Src: /src/frr/lib/command.c:1749,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:1751,1
    - Dst: unlink
      Src: /src/frr/lib/command.c:1756,1
    - Dst: close
      Src: /src/frr/lib/command.c:1758,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:1759,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:1760,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 72
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1655
    functionDepth: 3
    functionLinenumber: 1655
    functionLinenumberEnd: 1762
    functionName: file_write_config
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - strlen
    - vty_write_config
    - open
    - vty_new
    - strlcat
    - unlink
    - fchmod
    - snprintf
    - fsync
    - safe_strerror
    - mkstemp
    - vty_close
    - stat
    - vty_time_print
    - vty_out
    - strlcpy
    - XFREE
    - XSTRDUP
    - link
    - rename
    - XMALLOC
    - close
    - strrchr
    linkageType: ''
    returnType: int
    signature: int file_write_config(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/command.c:1845,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:1846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - domainname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1848
      start: 1843
    functionDepth: 1
    functionLinenumber: 1843
    functionLinenumberEnd: 1848
    functionName: cmd_domainname_set
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached:
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: int
    signature: int cmd_domainname_set(const char *domainname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/command.c:1879,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:1880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - hostname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1877
    functionDepth: 1
    functionLinenumber: 1877
    functionLinenumberEnd: 1882
    functionName: cmd_hostname_set
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 7
    functionsReached:
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: int
    signature: int cmd_hostname_set(const char *hostname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realpath
      Src: /src/frr/lib/command.c:2230,1
    - Dst: strstr
      Src: /src/frr/lib/command.c:2233,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2235,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2241
      start: 2223
    functionDepth: 1
    functionLinenumber: 2223
    functionLinenumberEnd: 2241
    functionName: cmd_banner_motd_file
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - strstr
    - realpath
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: int
    signature: int cmd_banner_motd_file(const char *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2245,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2243
    functionDepth: 1
    functionLinenumber: 2243
    functionLinenumberEnd: 2247
    functionName: cmd_banner_motd_line
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cmd_banner_motd_line(const char *line)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: argv_concat
      Src: /src/frr/lib/command.c:2337,1
    - Dst: regcomp
      Src: /src/frr/lib/command.c:2338,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2339,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2344,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2347,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2350,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2353,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2356,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2359,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2363,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2367,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2370,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2373,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2376,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2380,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:2388,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:2389,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:2393,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:2394,1
    - Dst: regexec
      Src: /src/frr/lib/command.c:2396,1
    - Dst: vty_out
      Src: /src/frr/lib/command.c:2397,1
    - Dst: print_cmd
      Src: /src/frr/lib/command.c:2398,1
    - Dst: regfree
      Src: /src/frr/lib/command.c:2404,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 3
    argNames:
    - vty
    - argv
    - argc
    argTypes:
    - struct vty*
    - struct cmd_token**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2329
    functionDepth: 2
    functionLinenumber: 2329
    functionLinenumberEnd: 2406
    functionName: cmd_find_cmds
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vector_active
    - vector_slot
    - argv_concat
    - XFREE
    - regexec
    - regfree
    - print_cmd
    - regcomp
    linkageType: ''
    returnType: int
    signature: int cmd_find_cmds(struct vty *vty, struct cmd_token **argv, int argc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2449,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2451
      start: 2447
    functionDepth: 1
    functionLinenumber: 2447
    functionLinenumberEnd: 2451
    functionName: host_config_set
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 4
    functionsReached:
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: void
    signature: void host_config_set(const char *filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2453
    functionDepth: 0
    functionLinenumber: 2453
    functionLinenumberEnd: 2456
    functionName: host_config_get
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *host_config_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_show_debug
      Src: /src/frr/lib/command.c:2460,1
    - Dst: mgmt_debug_be_client_show_debug
      Src: /src/frr/lib/command.c:2461,1
    - Dst: mgmt_debug_fe_client_show_debug
      Src: /src/frr/lib/command.c:2462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2458
    functionDepth: 3
    functionLinenumber: 2458
    functionLinenumberEnd: 2463
    functionName: cmd_show_lib_debugs
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 0
    functionsReached:
    - route_map_show_debug
    - mgmt_debug_be_client_show_debug
    - mgmt_debug_fe_client_show_debug
    linkageType: ''
    returnType: void
    signature: void cmd_show_lib_debugs(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2467,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2468,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2469,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2470,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2471,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2472,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2473,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2475,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2476,1
    - Dst: _install_element
      Src: /src/frr/lib/command.c:2478,1
    - Dst: nb_cli_install_default
      Src: /src/frr/lib/command.c:2480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - enum node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2465
    functionDepth: 5
    functionLinenumber: 2465
    functionLinenumberEnd: 2481
    functionName: install_default
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 18
    functionsReached:
    - nb_cli_install_default
    - _install_element
    linkageType: ''
    returnType: void
    signature: void install_default(enum node_type node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: uname
      Src: /src/frr/lib/command.c:2492,1
    - Dst: qobj_init
      Src: /src/frr/lib/command.c:2493,1
    - Dst: hook_register
      Src: /src/frr/lib/command.c:2496,1
    - Dst: hook_register
      Src: /src/frr/lib/command.c:2497,1
    - Dst: list_new
      Src: /src/frr/lib/command.c:2499,1
    - Dst: vector_init
      Src: /src/frr/lib/command.c:2502,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2505,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2506,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2507,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2508,1
    - Dst: strcmp
      Src: /src/frr/lib/command.c:2511,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/command.c:2514,1
    - Dst: cmd_banner_motd_line
      Src: /src/frr/lib/command.c:2523,1
    - Dst: install_node
      Src: /src/frr/lib/command.c:2528,1
    - Dst: install_node
      Src: /src/frr/lib/command.c:2529,1
    - Dst: install_node
      Src: /src/frr/lib/command.c:2530,1
    - Dst: install_node
      Src: /src/frr/lib/command.c:2531,1
    - Dst: install_node
      Src: /src/frr/lib/command.c:2532,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2535,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2536,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2539,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2541,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2542,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2543,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2544,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2545,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2546,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2547,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2548,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2549,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2550,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2551,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2553,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2557,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2558,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2559,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2560,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2561,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2562,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2563,1
    - Dst: install_default
      Src: /src/frr/lib/command.c:2565,1
    - Dst: event_cmd_init
      Src: /src/frr/lib/command.c:2567,1
    - Dst: workqueue_cmd_init
      Src: /src/frr/lib/command.c:2568,1
    - Dst: hash_cmd_init
      Src: /src/frr/lib/command.c:2569,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2572,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2573,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2574,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2575,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2580,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2582,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2583,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2584,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2585,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2587,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2588,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2589,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2590,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2591,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2592,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2593,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2594,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2595,1
    - Dst: install_element
      Src: /src/frr/lib/command.c:2596,1
    - Dst: log_cmd_init
      Src: /src/frr/lib/command.c:2598,1
    - Dst: vrf_install_commands
      Src: /src/frr/lib/command.c:2599,1
    - Dst: grammar_sandbox_init
      Src: /src/frr/lib/command.c:2603,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 81
    argCount: 1
    argNames:
    - terminal
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2605
      start: 2488
    functionDepth: 6
    functionLinenumber: 2488
    functionLinenumberEnd: 2605
    functionName: cmd_init
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 40
    functionsReached:
    - install_node
    - hook_register
    - cmd_banner_motd_line
    - uname
    - strcmp
    - hash_cmd_init
    - install_default
    - list_new
    - log_cmd_init
    - vrf_install_commands
    - qobj_init
    - install_element
    - vector_init
    - grammar_sandbox_init
    - event_cmd_init
    - workqueue_cmd_init
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void cmd_init(int terminal)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hook_unregister
      Src: /src/frr/lib/command.c:2611,1
    - Dst: hook_unregister
      Src: /src/frr/lib/command.c:2612,1
    - Dst: vector_active
      Src: /src/frr/lib/command.c:2615,1
    - Dst: vector_slot
      Src: /src/frr/lib/command.c:2616,1
    - Dst: graph_delete_graph
      Src: /src/frr/lib/command.c:2619,1
    - Dst: vector_free
      Src: /src/frr/lib/command.c:2620,1
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/command.c:2621,1
    - Dst: vector_free
      Src: /src/frr/lib/command.c:2624,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2628,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2629,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2630,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2631,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2632,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2633,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2634,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2635,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2636,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2637,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2638,1
    - Dst: XFREE
      Src: /src/frr/lib/command.c:2639,1
    - Dst: list_delete
      Src: /src/frr/lib/command.c:2641,1
    - Dst: qobj_finish
      Src: /src/frr/lib/command.c:2642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2643
      start: 2607
    functionDepth: 2
    functionLinenumber: 2607
    functionLinenumberEnd: 2643
    functionName: cmd_terminate
    functionSourceFile: /src/frr/lib/command.c
    functionUses: 9
    functionsReached:
    - hash_clean_and_free
    - vector_free
    - list_delete
    - graph_delete_graph
    - vector_active
    - vector_slot
    - qobj_finish
    - XFREE
    - hook_unregister
    linkageType: ''
    returnType: void
    signature: void cmd_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/zlog_5424_cli.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct zlog_cfg_5424_user*
    - struct zlog_cfg_5424_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: target_cmp
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int target_cmp(const struct zlog_cfg_5424_user *a,\n\t\t      const
      struct zlog_cfg_5424_user *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/zlog_5424_cli.c:66,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/zlog_5424_cli.c:67,1
    - Dst: clear_dst
      Src: /src/frr/lib/zlog_5424_cli.c:75,1
    - Dst: zlog_5424_init
      Src: /src/frr/lib/zlog_5424_cli.c:82,1
    - Dst: QOBJ_REG
      Src: /src/frr/lib/zlog_5424_cli.c:84,1
    - Dst: targets_add
      Src: /src/frr/lib/zlog_5424_cli.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 87
    functionName: log_5424_alloc
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - targets_add
    - XCALLOC
    - QOBJ_REG
    - clear_dst
    - zlog_5424_init
    - XSTRDUP
    linkageType: ''
    returnType: struct zlog_cfg_5424_user
    signature: struct zlog_cfg_5424_user *log_5424_alloc(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: targets_del
      Src: /src/frr/lib/zlog_5424_cli.c:91,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/lib/zlog_5424_cli.c:92,1
    - Dst: zlog_5424_fini
      Src: /src/frr/lib/zlog_5424_cli.c:94,1
    - Dst: clear_dst
      Src: /src/frr/lib/zlog_5424_cli.c:95,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_5424_cli.c:97,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_5424_cli.c:98,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_5424_cli.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - cfg
    - keepopen
    argTypes:
    - struct zlog_cfg_5424_user*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: log_5424_free
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - zlog_5424_fini
    - XFREE
    - clear_dst
    - targets_del
    linkageType: ''
    returnType: void
    signature: void log_5424_free(struct zlog_cfg_5424_user *cfg, bool keepopen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/zlog_5424_cli.c:104,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_5424_cli.c:107,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_5424_cli.c:108,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_5424_cli.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct zlog_cfg_5424_user*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 117
    functionName: clear_dst
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 2
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void clear_dst(struct zlog_cfg_5424_user *cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - cfg
    - vty
    argTypes:
    - struct zlog_cfg_5424_user*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 127
    functionName: reconf_dst
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int reconf_dst(struct zlog_cfg_5424_user *cfg, struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - cfg
    - vty
    argTypes:
    - struct zlog_cfg_5424_user*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 137
    functionName: reconf_meta
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int reconf_meta(struct zlog_cfg_5424_user *cfg, struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear_dst
      Src: /src/frr/lib/zlog_5424_cli.c:144,1
    - Dst: reconf_dst
      Src: /src/frr/lib/zlog_5424_cli.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cfg
    - vty
    argTypes:
    - struct zlog_cfg_5424_user*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 146
    functionName: reconf_clear_dst
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - reconf_dst
    - clear_dst
    linkageType: ''
    returnType: int
    signature: int reconf_clear_dst(struct zlog_cfg_5424_user *cfg, struct vty *vty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/zlog_5424_cli.c:206,1
    - Dst: strcmp
      Src: /src/frr/lib/zlog_5424_cli.c:208,1
    - Dst: strcmp
      Src: /src/frr/lib/zlog_5424_cli.c:210,1
    - Dst: strcmp
      Src: /src/frr/lib/zlog_5424_cli.c:212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - fmt
    - dflt
    argTypes:
    - char*
    - enum zlog_5424_format
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 216
    functionName: log_5424_fmt
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum zlog_5424_format
    signature: "enum zlog_5424_format log_5424_fmt(const char *fmt,\n\t\t\t\t\t  enum
      zlog_5424_format dflt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/lib/zlog_5424_cli.c:371,1
    - Dst: reconf_clear_dst
      Src: /src/frr/lib/zlog_5424_cli.c:374,1
    - Dst: strcmp
      Src: /src/frr/lib/zlog_5424_cli.c:379,1
    - Dst: clear_dst
      Src: /src/frr/lib/zlog_5424_cli.c:383,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/zlog_5424_cli.c:385,1
    - Dst: reconf_dst
      Src: /src/frr/lib/zlog_5424_cli.c:393,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - vty
    - 'no'
    - path
    - fmt
    - special
    argTypes:
    - struct vty*
    - char*
    - char*
    - enum zlog_5424_format
    - enum unix_special
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 368
    functionDepth: 4
    functionLinenumber: 368
    functionLinenumberEnd: 394
    functionName: dst_unix
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - VTY_DECLVAR_CONTEXT
    - strcmp
    - reconf_clear_dst
    - clear_dst
    - reconf_dst
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int dst_unix(struct vty *vty, const char *no, const char *path,\n\t\t
      \   enum zlog_5424_format fmt, enum unix_special special)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/lib/zlog_5424_cli.c:654,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:657,1
    - Dst: zlog_5424_apply_dst
      Src: /src/frr/lib/zlog_5424_cli.c:660,1
    - Dst: zlog_5424_apply_meta
      Src: /src/frr/lib/zlog_5424_cli.c:662,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 652
    functionDepth: 3
    functionLinenumber: 652
    functionLinenumberEnd: 666
    functionName: log_5424_node_exit
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - zlog_5424_apply_meta
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - zlog_5424_apply_dst
    linkageType: ''
    returnType: int
    signature: int log_5424_node_exit(struct vty *vty)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/zlog_5424_cli.c:672,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:675,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:694,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:702,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:705,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:708,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:711,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:720,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:726,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:729,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:732,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:735,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:738,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:741,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:747,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:752,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:754,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:758,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:765,1
    - Dst: zlog_priority_str
      Src: /src/frr/lib/zlog_5424_cli.c:766,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:768,1
    - Dst: facility_name
      Src: /src/frr/lib/zlog_5424_cli.c:769,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:775,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:780,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:785,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:787,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:790,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 84
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 793
    functionName: log_5424_config_write
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - facility_name
    - zlog_priority_str
    - vty_out
    - frr_each
    linkageType: ''
    returnType: int
    signature: int log_5424_config_write(struct vty *vty)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/zlog_5424_cli.c:799,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:800,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:804,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:810,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:814,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:816,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:818,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:825,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:834,1
    - Dst: zlog_priority_str
      Src: /src/frr/lib/zlog_5424_cli.c:835,1
    - Dst: facility_name
      Src: /src/frr/lib/zlog_5424_cli.c:836,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:852,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:860,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:869,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:874,1
    - Dst: zlog_5424_state
      Src: /src/frr/lib/zlog_5424_cli.c:882,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:884,1
    - Dst: monotime_since
      Src: /src/frr/lib/zlog_5424_cli.c:889,1
    - Dst: vty_out
      Src: /src/frr/lib/zlog_5424_cli.c:890,1
    - Dst: safe_strerror
      Src: /src/frr/lib/zlog_5424_cli.c:892,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 795
    functionDepth: 2
    functionLinenumber: 795
    functionLinenumberEnd: 897
    functionName: log_5424_show
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - frr_each
    - zlog_priority_str
    - safe_strerror
    - monotime_since
    - zlog_5424_state
    - facility_name
    linkageType: ''
    returnType: int
    signature: int log_5424_show(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/zlog_5424_cli.c:913,1
    - Dst: vector_set
      Src: /src/frr/lib/zlog_5424_cli.c:914,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/zlog_5424_cli.c:914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 909
    functionDepth: 3
    functionLinenumber: 909
    functionLinenumberEnd: 915
    functionName: log_5424_autocomplete
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - vector_set
    - XSTRDUP
    - frr_each
    linkageType: ''
    returnType: void
    signature: void log_5424_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/lib/zlog_5424_cli.c:924,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/zlog_5424_cli.c:926,1
    - Dst: install_node
      Src: /src/frr/lib/zlog_5424_cli.c:929,1
    - Dst: install_default
      Src: /src/frr/lib/zlog_5424_cli.c:930,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:932,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:933,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:935,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:936,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:937,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:938,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:939,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:940,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:942,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:943,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:944,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:945,1
    - Dst: install_element
      Src: /src/frr/lib/zlog_5424_cli.c:946,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 922
    functionDepth: 6
    functionLinenumber: 922
    functionLinenumberEnd: 947
    functionName: log_5424_cmd_init
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 1
    functionsReached:
    - install_node
    - hook_register
    - install_default
    - install_element
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void log_5424_cmd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _CONSTRUCTOR
      Src: /src/frr/lib/zlog_5424_cli.c:955,1
    - Dst: hook_register
      Src: /src/frr/lib/zlog_5424_cli.c:957,1
    - Dst: hook_register
      Src: /src/frr/lib/zlog_5424_cli.c:958,1
    - Dst: hook_register
      Src: /src/frr/lib/zlog_5424_cli.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 960
    functionName: zlog_5424_startup_init
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached:
    - _CONSTRUCTOR
    - hook_register
    linkageType: ''
    returnType: void
    signature: void zlog_5424_startup_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 962
    functionDepth: 0
    functionLinenumber: 962
    functionLinenumberEnd: 967
    functionName: log_5424_early_init
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int log_5424_early_init(struct event_loop *master)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/lib/zlog_5424_cli.c:973,1
    - Dst: zlog_5424_rotate
      Src: /src/frr/lib/zlog_5424_cli.c:974,1
    - Dst: zlog_err
      Src: /src/frr/lib/zlog_5424_cli.c:975,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 969
    functionDepth: 4
    functionLinenumber: 969
    functionLinenumberEnd: 980
    functionName: log_5424_rotate
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 1
    functionsReached:
    - zlog_5424_rotate
    - zlog_err
    - frr_each
    linkageType: ''
    returnType: int
    signature: int log_5424_rotate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: targets_pop
      Src: /src/frr/lib/zlog_5424_cli.c:986,1
    - Dst: log_5424_free
      Src: /src/frr/lib/zlog_5424_cli.c:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 982
    functionDepth: 4
    functionLinenumber: 982
    functionLinenumberEnd: 992
    functionName: log_5424_fini
    functionSourceFile: /src/frr/lib/zlog_5424_cli.c
    functionUses: 1
    functionsReached:
    - targets_pop
    - log_5424_free
    linkageType: ''
    returnType: int
    signature: int log_5424_fini(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - afi
    - orf
    argTypes:
    - afi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: prefix_master_get
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct prefix_master
    signature: struct prefix_master *prefix_master_get(afi_t afi, int orf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: prefix_list_name
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *prefix_list_name(struct prefix_list *plist)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: prefix_list_afi
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: afi_t
    signature: afi_t prefix_list_afi(struct prefix_list *plist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/plist.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct prefix_list*
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: prefix_list_compare_func
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int prefix_list_compare_func(const struct prefix_list *a,\n\t\t\t\t
      \   const struct prefix_list *b)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_master_get
      Src: /src/frr/lib/plist.c:126,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/plist.c:130,1
    - Dst: plist_find
      Src: /src/frr/lib/plist.c:131,1
    - Dst: XFREE
      Src: /src/frr/lib/plist.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - afi
    - orf
    - name
    argTypes:
    - afi_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 134
    functionName: prefix_list_lookup_do
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - plist_find
    - prefix_master_get
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: struct prefix_list
    signature: "struct prefix_list *prefix_list_lookup_do(afi_t afi, int orf,\n\t\t\t\t\t\t
      const char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup_do
      Src: /src/frr/lib/plist.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - afi
    - name
    argTypes:
    - afi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: prefix_list_lookup
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 33
    functionsReached:
    - prefix_list_lookup_do
    linkageType: ''
    returnType: struct prefix_list
    signature: struct prefix_list *prefix_list_lookup(afi_t afi, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup_do
      Src: /src/frr/lib/plist.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - afi
    - name
    argTypes:
    - afi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: prefix_bgp_orf_lookup
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 2
    functionsReached:
    - prefix_list_lookup_do
    linkageType: ''
    returnType: struct prefix_list
    signature: struct prefix_list *prefix_bgp_orf_lookup(afi_t afi, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/plist.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 152
    functionName: prefix_list_new
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct prefix_list
    signature: struct prefix_list *prefix_list_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/plist.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: prefix_list_free
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void prefix_list_free(struct prefix_list *plist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/plist.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 166
    functionName: prefix_list_entry_new
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 1
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct prefix_list_entry
    signature: struct prefix_list_entry *prefix_list_entry_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/plist.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pentry
    argTypes:
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: prefix_list_entry_free
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void prefix_list_entry_free(struct prefix_list_entry *pentry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_master_get
      Src: /src/frr/lib/plist.c:181,1
    - Dst: prefix_list_new
      Src: /src/frr/lib/plist.c:186,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/plist.c:187,1
    - Dst: XCALLOC
      Src: /src/frr/lib/plist.c:190,1
    - Dst: plist_add
      Src: /src/frr/lib/plist.c:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - afi
    - orf
    - name
    argTypes:
    - afi_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 195
    functionName: prefix_list_insert
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_list_new
    - XCALLOC
    - plist_add
    - prefix_master_get
    - XSTRDUP
    linkageType: ''
    returnType: struct prefix_list
    signature: "struct prefix_list *prefix_list_insert(afi_t afi, int orf,\n\t\t\t\t\t
      \     const char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup_do
      Src: /src/frr/lib/plist.c:201,1
    - Dst: prefix_list_insert
      Src: /src/frr/lib/plist.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - afi
    - orf
    - name
    argTypes:
    - afi_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: prefix_list_get
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 1
    functionsReached:
    - prefix_list_insert
    - prefix_list_lookup_do
    linkageType: ''
    returnType: struct prefix_list
    signature: struct prefix_list *prefix_list_get(afi_t afi, int orf, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_map_notify_pentry_dependencies
      Src: /src/frr/lib/plist.c:220,1
    - Dst: prefix_list_trie_del
      Src: /src/frr/lib/plist.c:223,1
    - Dst: prefix_list_entry_free
      Src: /src/frr/lib/plist.c:224,1
    - Dst: plist_del
      Src: /src/frr/lib/plist.c:230,1
    - Dst: XFREE
      Src: /src/frr/lib/plist.c:232,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/plist.c:238,1
    - Dst: XFREE
      Src: /src/frr/lib/plist.c:243,1
    - Dst: XFREE
      Src: /src/frr/lib/plist.c:245,1
    - Dst: prefix_list_free
      Src: /src/frr/lib/plist.c:247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 248
    functionName: prefix_list_delete
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 1
    functionsReached:
    - prefix_list_free
    - plist_del
    - route_map_notify_pentry_dependencies
    - prefix_list_entry_free
    - XFREE
    - route_map_notify_dependencies
    - prefix_list_trie_del
    linkageType: ''
    returnType: void
    signature: void prefix_list_delete(struct prefix_list *plist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_entry_new
      Src: /src/frr/lib/plist.c:256,1
    - Dst: prefix_copy
      Src: /src/frr/lib/plist.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - prefix
    - type
    - seq
    - le
    - ge
    - any
    argTypes:
    - struct prefix*
    - enum prefix_list_type
    - int64_t
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 268
    functionName: prefix_list_entry_make
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_copy
    - prefix_list_entry_new
    linkageType: ''
    returnType: struct prefix_list_entry
    signature: "struct prefix_list_entry *\nprefix_list_entry_make(struct prefix *prefix,
      enum prefix_list_type type,\n\t\t       int64_t seq, int le, int ge, bool any)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 275
    functionName: prefix_list_add_hook
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void prefix_list_add_hook(void (*func)(struct prefix_list *plist))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 282
    functionName: prefix_list_delete_hook
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void prefix_list_delete_hook(void (*func)(struct prefix_list *plist))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 301
    functionName: prefix_new_seq_get
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64_t
    signature: int64_t prefix_new_seq_get(struct prefix_list *plist)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - plist
    - seq
    argTypes:
    - struct prefix_list*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: prefix_seq_check
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct prefix_list_entry
    signature: "struct prefix_list_entry *prefix_seq_check(struct prefix_list *plist,\n\t\t\t\t\t\t
      \ int64_t seq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/lib/plist.c:323,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 6
    argNames:
    - plist
    - prefix
    - type
    - seq
    - le
    - ge
    argTypes:
    - struct prefix_list*
    - struct prefix*
    - enum prefix_list_type
    - int64_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 337
    functionName: prefix_list_entry_lookup
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: struct prefix_list_entry
    signature: "struct prefix_list_entry *\nprefix_list_entry_lookup(struct prefix_list
      *plist, struct prefix *prefix,\n\t\t\t enum prefix_list_type type, int64_t seq,\n\t\t\t
      int le, int ge)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/lib/plist.c:348,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - plist
    - plist_entry
    argTypes:
    - struct prefix_list*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 353
    functionName: prefix_list_entry_lookup_prefix
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: bool
    signature: "bool prefix_list_entry_lookup_prefix(struct prefix_list *plist,\n\t\t\t\tstruct
      prefix_list_entry *plist_entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fn
      Src: /src/frr/lib/plist.c:364,1
    - Dst: fn
      Src: /src/frr/lib/plist.c:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - validbits
    - table
    - byte
    - object
    argTypes:
    - size_t
    - struct pltrie_table*
    - uint8_t
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 372
    functionName: trie_walk_affected
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - fn
    linkageType: ''
    returnType: void
    signature: "void trie_walk_affected(size_t validbits, struct pltrie_table *table,\n\t\t\t
      \      uint8_t byte, struct prefix_list_entry *object,\n\t\t\t       void (*fn)(struct
      prefix_list_entry *object,\n\t\t\t\t\t  struct prefix_list_entry **updptr))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - object
    - updptr
    argTypes:
    - struct prefix_list_entry*
    - struct prefix_list_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 382
    functionName: trie_uninstall_fn
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void trie_uninstall_fn(struct prefix_list_entry *object,\n\t\t\t      struct
      prefix_list_entry **updptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct pltrie_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 391
    functionName: trie_table_empty
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int trie_table_empty(struct pltrie_table *table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/plist.c:404,1
    - Dst: trie_walk_affected
      Src: /src/frr/lib/plist.c:412,1
    - Dst: trie_table_empty
      Src: /src/frr/lib/plist.c:416,1
    - Dst: XFREE
      Src: /src/frr/lib/plist.c:417,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - plist
    - pentry
    argTypes:
    - struct prefix_list*
    - struct prefix_list_entry*
    assertStmts:
    - condition: (table->entries[byte].next_table)
      pos:
        line_end: 403
        line_start: 403
        source_file: /src/frr/lib/plist.c
    constantsTouched: []
    func_position:
      end: 419
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 419
    functionName: prefix_list_trie_del
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 1
    functionsReached:
    - XFREE
    - trie_walk_affected
    - assert
    - trie_table_empty
    linkageType: ''
    returnType: void
    signature: "void prefix_list_trie_del(struct prefix_list *plist,\n\t\t\t\t struct
      prefix_list_entry *pentry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_entry_lookup_prefix
      Src: /src/frr/lib/plist.c:430,1
    - Dst: prefix_list_trie_del
      Src: /src/frr/lib/plist.c:433,1
    - Dst: route_map_notify_pentry_dependencies
      Src: /src/frr/lib/plist.c:445,1
    - Dst: prefix_list_entry_free
      Src: /src/frr/lib/plist.c:448,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/plist.c:453,1
    - Dst: prefix_list_delete
      Src: /src/frr/lib/plist.c:460,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - plist
    - pentry
    - update_list
    argTypes:
    - struct prefix_list*
    - struct prefix_list_entry*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 464
    functionName: prefix_list_entry_delete
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_list_entry_lookup_prefix
    - route_map_notify_pentry_dependencies
    - prefix_list_entry_free
    - route_map_notify_dependencies
    - prefix_list_delete
    - prefix_list_trie_del
    linkageType: ''
    returnType: void
    signature: "void prefix_list_entry_delete(struct prefix_list *plist,\n\t\t\t      struct
      prefix_list_entry *pentry, int update_list)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/plist.c:483,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 2
    argNames:
    - object
    - updptr
    argTypes:
    - struct prefix_list_entry*
    - struct prefix_list_entry**
    assertStmts:
    - condition: (object->next_best == *updptr || !*updptr)
      pos:
        line_end: 482
        line_start: 482
        source_file: /src/frr/lib/plist.c
    constantsTouched: []
    func_position:
      end: 486
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 486
    functionName: trie_install_fn
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: "void trie_install_fn(struct prefix_list_entry *object,\n\t\t\t    struct
      prefix_list_entry **updptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/plist.c:500,1
    - Dst: trie_walk_affected
      Src: /src/frr/lib/plist.c:508,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - plist
    - pentry
    argTypes:
    - struct prefix_list*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 509
    functionName: prefix_list_trie_add
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - trie_walk_affected
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void prefix_list_trie_add(struct prefix_list *plist,\n\t\t\t\t struct
      prefix_list_entry *pentry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_new_seq_get
      Src: /src/frr/lib/plist.c:519,1
    - Dst: prefix_seq_check
      Src: /src/frr/lib/plist.c:525,1
    - Dst: prefix_list_entry_delete
      Src: /src/frr/lib/plist.c:527,1
    - Dst: prefix_list_trie_add
      Src: /src/frr/lib/plist.c:556,1
    - Dst: route_map_notify_pentry_dependencies
      Src: /src/frr/lib/plist.c:561,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/plist.c:568,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 2
    argNames:
    - plist
    - pentry
    argTypes:
    - struct prefix_list*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 511
    functionDepth: 4
    functionLinenumber: 511
    functionLinenumberEnd: 570
    functionName: prefix_list_entry_add
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_list_trie_add
    - prefix_seq_check
    - prefix_list_entry_delete
    - prefix_new_seq_get
    - route_map_notify_pentry_dependencies
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: "void prefix_list_entry_add(struct prefix_list *plist,\n\t\t\t\t  struct
      prefix_list_entry *pentry)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_entry_lookup_prefix
      Src: /src/frr/lib/plist.c:588,1
    - Dst: prefix_list_trie_del
      Src: /src/frr/lib/plist.c:591,1
    - Dst: route_map_notify_pentry_dependencies
      Src: /src/frr/lib/plist.c:604,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/plist.c:608,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - ple
    argTypes:
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 579
    functionDepth: 3
    functionLinenumber: 579
    functionLinenumberEnd: 617
    functionName: prefix_list_entry_update_start
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 9
    functionsReached:
    - prefix_list_trie_del
    - route_map_notify_dependencies
    - prefix_list_entry_lookup_prefix
    - route_map_notify_pentry_dependencies
    linkageType: ''
    returnType: void
    signature: void prefix_list_entry_update_start(struct prefix_list_entry *ple)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_trie_add
      Src: /src/frr/lib/plist.c:674,1
    - Dst: route_map_notify_pentry_dependencies
      Src: /src/frr/lib/plist.c:677,1
    - Dst: route_map_notify_dependencies
      Src: /src/frr/lib/plist.c:684,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 1
    argNames:
    - ple
    argTypes:
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 626
    functionDepth: 2
    functionLinenumber: 626
    functionLinenumberEnd: 688
    functionName: prefix_list_entry_update_finish
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 9
    functionsReached:
    - prefix_list_trie_add
    - route_map_notify_dependencies
    - route_map_notify_pentry_dependencies
    linkageType: ''
    returnType: void
    signature: void prefix_list_entry_update_finish(struct prefix_list_entry *ple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_entry_update_start
      Src: /src/frr/lib/plist.c:699,1
    - Dst: prefix_list_entry_free
      Src: /src/frr/lib/plist.c:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ple
    argTypes:
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 696
    functionDepth: 4
    functionLinenumber: 696
    functionLinenumberEnd: 703
    functionName: prefix_list_entry_delete2
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 1
    functionsReached:
    - prefix_list_entry_free
    - prefix_list_entry_update_start
    linkageType: ''
    returnType: void
    signature: void prefix_list_entry_delete2(struct prefix_list_entry *ple)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - pentry
    argTypes:
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 716
    functionName: prefix_list_type_str
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *prefix_list_type_str(struct prefix_list_entry *pentry)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: prefix_match
      Src: /src/frr/lib/plist.c:726,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 3
    argNames:
    - pentry
    - p
    - address_mode
    argTypes:
    - struct prefix_list_entry*
    - struct prefix*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 718
    functionDepth: 1
    functionLinenumber: 718
    functionLinenumberEnd: 747
    functionName: prefix_list_entry_match
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_match
    linkageType: ''
    returnType: int
    signature: "int prefix_list_entry_match(struct prefix_list_entry *pentry,\n\t\t\t\t
      \  const struct prefix *p, bool address_mode)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_entry_match
      Src: /src/frr/lib/plist.c:782,1
    - Dst: prefix_list_entry_match
      Src: /src/frr/lib/plist.c:803,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 47
    argCount: 4
    argNames:
    - plist
    - which
    - object
    - address_mode
    argTypes:
    - struct prefix_list*
    - struct prefix_list_entry**
    - union prefixconstptr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 749
    functionDepth: 2
    functionLinenumber: 749
    functionLinenumberEnd: 821
    functionName: prefix_list_apply_ext
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_list_entry_match
    linkageType: ''
    returnType: enum prefix_list_type
    signature: "enum prefix_list_type prefix_list_apply_ext(\n\tstruct prefix_list
      *plist,\n\tconst struct prefix_list_entry **which,\n\tunion prefixconstptr object,\n\tbool
      address_mode)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/lib/plist.c:830,1
    - Dst: printf
      Src: /src/frr/lib/plist.c:834,1
    - Dst: prefix_list_type_str
      Src: /src/frr/lib/plist.c:834,1
    - Dst: printf
      Src: /src/frr/lib/plist.c:840,1
    - Dst: prefix_list_type_str
      Src: /src/frr/lib/plist.c:841,1
    - Dst: printf
      Src: /src/frr/lib/plist.c:843,1
    - Dst: printf
      Src: /src/frr/lib/plist.c:845,1
    - Dst: printf
      Src: /src/frr/lib/plist.c:846,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 849
    functionName: prefix_list_print
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_list_type_str
    - printf
    linkageType: ''
    returnType: void
    signature: void prefix_list_print(struct prefix_list *plist)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix::prefix
      Src: /src/frr/lib/plist.c:856,1
    - Dst: prefix::prefix
      Src: /src/frr/lib/plist.c:857,1
    - Dst: seq::seq
      Src: /src/frr/lib/plist.c:862,1
    - Dst: prefix_new_seq_get
      Src: /src/frr/lib/plist.c:863,1
    - Dst: seq::seq
      Src: /src/frr/lib/plist.c:865,1
    - Dst: prefix_same
      Src: /src/frr/lib/plist.c:884,1
    - Dst: prefix::prefix
      Src: /src/frr/lib/plist.c:884,1
    - Dst: type::type
      Src: /src/frr/lib/plist.c:885,1
    - Dst: le::le
      Src: /src/frr/lib/plist.c:885,1
    - Dst: ge::ge
      Src: /src/frr/lib/plist.c:886,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 2
    argNames:
    - plist
    - new
    argTypes:
    - struct prefix_list*
    - struct prefix_list_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 852
    functionDepth: 2
    functionLinenumber: 852
    functionLinenumberEnd: 890
    functionName: prefix_entry_dup_check
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix::prefix
    - ge::ge
    - prefix_same
    - seq::seq
    - prefix_new_seq_get
    - type::type
    - le::le
    linkageType: ''
    returnType: struct prefix_list_entry
    signature: 'struct prefix_list_entry *

      prefix_entry_dup_check(struct prefix_list *plist, struct prefix_list_entry *new)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/lib/plist.c:911,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/plist.c:912,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:914,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/plist.c:918,1
    - Dst: afi2str
      Src: /src/frr/lib/plist.c:919,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:920,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/plist.c:922,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:925,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:929,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/plist.c:934,1
    - Dst: afi2str
      Src: /src/frr/lib/plist.c:935,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/plist.c:937,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:939,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:940,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:942,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:944,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:947,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:951,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:954,1
    - Dst: json_object_new_array
      Src: /src/frr/lib/plist.c:967,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/plist.c:968,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/plist.c:980,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/plist.c:981,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:983,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/plist.c:986,1
    - Dst: prefix_list_type_str
      Src: /src/frr/lib/plist.c:988,1
    - Dst: json_object_string_addf
      Src: /src/frr/lib/plist.c:989,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:994,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:999,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:1006,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:1009,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1014,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1016,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1018,1
    - Dst: prefix_list_type_str
      Src: /src/frr/lib/plist.c:1019,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1022,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1026,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1029,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1032,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1038,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1042,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 74
    argCount: 7
    argNames:
    - vty
    - json
    - afi
    - plist
    - master
    - dtype
    - seqnum
    argTypes:
    - struct vty*
    - json_object*
    - afi_t
    - struct prefix_list*
    - struct prefix_master*
    - enum display_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 1046
    functionName: vty_show_prefix_entry
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - vty_out
    - json_object_array_add
    - prefix_list_type_str
    - afi2str
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: "void vty_show_prefix_entry(struct vty *vty, json_object *json, afi_t
      afi,\n\t\t\t\t  struct prefix_list *plist,\n\t\t\t\t  struct prefix_master *master,\n\t\t\t\t
      \ enum display_type dtype, int seqnum)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_master_get
      Src: /src/frr/lib/plist.c:1058,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/plist.c:1063,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/plist.c:1064,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/plist.c:1065,1
    - Dst: atol
      Src: /src/frr/lib/plist.c:1069,1
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/plist.c:1072,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1075,1
    - Dst: vty_show_prefix_entry
      Src: /src/frr/lib/plist.c:1079,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1084,1
    - Dst: frr_each
      Src: /src/frr/lib/plist.c:1089,1
    - Dst: vty_show_prefix_entry
      Src: /src/frr/lib/plist.c:1090,1
    - Dst: vty_json
      Src: /src/frr/lib/plist.c:1094,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 6
    argNames:
    - vty
    - afi
    - name
    - seq
    - dtype
    - uj
    argTypes:
    - struct vty*
    - afi_t
    - char*
    - char*
    - enum display_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1048
    functionDepth: 4
    functionLinenumber: 1048
    functionLinenumberEnd: 1095
    functionName: vty_show_prefix_list
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix_list_lookup
    - atol
    - vty_out
    - vty_show_prefix_entry
    - frr_each
    - json_object_object_add
    - prefix_master_get
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int vty_show_prefix_list(struct vty *vty, afi_t afi, const char *name,\n\t\t\t\tconst
      char *seq, enum display_type dtype,\n\t\t\t\tbool uj)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/plist.c:1107,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1109,1
    - Dst: str2prefix
      Src: /src/frr/lib/plist.c:1113,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1115,1
    - Dst: prefix_same
      Src: /src/frr/lib/plist.c:1123,1
    - Dst: prefix_match
      Src: /src/frr/lib/plist.c:1128,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1133,1
    - Dst: prefix_list_type_str
      Src: /src/frr/lib/plist.c:1134,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1137,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1141,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1144,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1146,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1151,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1154,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 5
    argNames:
    - vty
    - afi
    - name
    - prefix
    - type
    argTypes:
    - struct vty*
    - afi_t
    - char*
    - char*
    - enum display_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1161
    functionName: vty_show_prefix_list_prefix
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_same
    - vty_out
    - prefix_match
    - prefix_list_type_str
    - str2prefix
    linkageType: ''
    returnType: int
    signature: "int vty_show_prefix_list_prefix(struct vty *vty, afi_t afi,\n\t\t\t\t
      \      const char *name, const char *prefix,\n\t\t\t\t       enum display_type
      type)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: prefix_master_get
      Src: /src/frr/lib/plist.c:1172,1
    - Dst: frr_each
      Src: /src/frr/lib/plist.c:1177,1
    - Dst: prefix_list_lookup
      Src: /src/frr/lib/plist.c:1182,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1184,1
    - Dst: str2prefix
      Src: /src/frr/lib/plist.c:1189,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1191,1
    - Dst: prefix_match
      Src: /src/frr/lib/plist.c:1199,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 4
    argNames:
    - vty
    - afi
    - name
    - prefix
    argTypes:
    - struct vty*
    - afi_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1163
    functionDepth: 3
    functionLinenumber: 1163
    functionLinenumberEnd: 1206
    functionName: vty_clear_prefix_list
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - vty_out
    - frr_each
    - prefix_match
    - str2prefix
    - prefix_master_get
    linkageType: ''
    returnType: int
    signature: "int vty_clear_prefix_list(struct vty *vty, afi_t afi, const char *name,\n\t\t\t\t
      const char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/lib/plist.c:1430,1
    - Dst: stream_putl
      Src: /src/frr/lib/plist.c:1431,1
    - Dst: stream_putc
      Src: /src/frr/lib/plist.c:1432,1
    - Dst: stream_putc
      Src: /src/frr/lib/plist.c:1433,1
    - Dst: stream_put_prefix
      Src: /src/frr/lib/plist.c:1434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - s
    - plist
    - init_flag
    - permit_flag
    - deny_flag
    argTypes:
    - struct stream*
    - struct prefix_list*
    - uint8_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1415
    functionDepth: 1
    functionLinenumber: 1415
    functionLinenumberEnd: 1438
    functionName: prefix_bgp_orf_entry
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 2
    functionsReached:
    - stream_put_prefix
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: struct stream
    signature: "struct stream *prefix_bgp_orf_entry(struct stream *s, struct prefix_list
      *plist,\n\t\t\t\t    uint8_t init_flag, uint8_t permit_flag,\n\t\t\t\t    uint8_t
      deny_flag)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_get
      Src: /src/frr/lib/plist.c:1457,1
    - Dst: apply_mask
      Src: /src/frr/lib/plist.c:1461,1
    - Dst: prefix_list_entry_make
      Src: /src/frr/lib/plist.c:1464,1
    - Dst: prefix_entry_dup_check
      Src: /src/frr/lib/plist.c:1468,1
    - Dst: prefix_list_entry_free
      Src: /src/frr/lib/plist.c:1469,1
    - Dst: prefix_list_entry_add
      Src: /src/frr/lib/plist.c:1473,1
    - Dst: prefix_list_entry_lookup
      Src: /src/frr/lib/plist.c:1475,1
    - Dst: prefix_list_entry_delete
      Src: /src/frr/lib/plist.c:1482,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 5
    argNames:
    - name
    - afi
    - orfp
    - permit
    - set
    argTypes:
    - char*
    - afi_t
    - struct orf_prefix*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1440
    functionDepth: 5
    functionLinenumber: 1440
    functionLinenumberEnd: 1486
    functionName: prefix_bgp_orf_set
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 2
    functionsReached:
    - prefix_list_entry_make
    - apply_mask
    - prefix_list_entry_lookup
    - prefix_list_entry_delete
    - prefix_entry_dup_check
    - prefix_list_get
    - prefix_list_entry_add
    - prefix_list_entry_free
    linkageType: ''
    returnType: int
    signature: "int prefix_bgp_orf_set(char *name, afi_t afi, struct orf_prefix *orfp,\n\t\t
      \      int permit, int set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_bgp_orf_lookup
      Src: /src/frr/lib/plist.c:1492,1
    - Dst: prefix_list_delete
      Src: /src/frr/lib/plist.c:1494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - afi
    - name
    argTypes:
    - afi_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1488
    functionDepth: 3
    functionLinenumber: 1488
    functionLinenumberEnd: 1495
    functionName: prefix_bgp_orf_remove_all
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 5
    functionsReached:
    - prefix_list_delete
    - prefix_bgp_orf_lookup
    linkageType: ''
    returnType: void
    signature: void prefix_bgp_orf_remove_all(afi_t afi, char *name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: prefix_bgp_orf_lookup
      Src: /src/frr/lib/plist.c:1507,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/plist.c:1515,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/plist.c:1516,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/plist.c:1517,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:1519,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/plist.c:1521,1
    - Dst: snprintf
      Src: /src/frr/lib/plist.c:1528,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:1530,1
    - Dst: json_object_string_add
      Src: /src/frr/lib/plist.c:1531,1
    - Dst: prefix_list_type_str
      Src: /src/frr/lib/plist.c:1532,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:1535,1
    - Dst: json_object_int_add
      Src: /src/frr/lib/plist.c:1538,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/plist.c:1541,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/plist.c:1544,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/plist.c:1547,1
    - Dst: vty_json
      Src: /src/frr/lib/plist.c:1550,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1552,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1558,1
    - Dst: prefix_list_type_str
      Src: /src/frr/lib/plist.c:1559,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1562,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1564,1
    - Dst: vty_out
      Src: /src/frr/lib/plist.c:1566,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - vty
    - afi
    - name
    - use_json
    argTypes:
    - struct vty*
    - afi_t
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1498
    functionDepth: 4
    functionLinenumber: 1498
    functionLinenumberEnd: 1570
    functionName: prefix_bgp_show_prefix_list
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - vty_out
    - snprintf
    - prefix_bgp_orf_lookup
    - prefix_list_type_str
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int prefix_bgp_show_prefix_list(struct vty *vty, afi_t afi, char *name,\n\t\t\t\tbool
      use_json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_master_get
      Src: /src/frr/lib/plist.c:1577,1
    - Dst: plist_first
      Src: /src/frr/lib/plist.c:1581,1
    - Dst: prefix_list_delete
      Src: /src/frr/lib/plist.c:1582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - afi
    - orf
    argTypes:
    - afi_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1572
    functionDepth: 3
    functionLinenumber: 1572
    functionLinenumberEnd: 1586
    functionName: prefix_list_reset_afi
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - plist_first
    - prefix_master_get
    - prefix_list_delete
    linkageType: ''
    returnType: void
    signature: void prefix_list_reset_afi(afi_t afi, int orf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_master_get
      Src: /src/frr/lib/plist.c:1601,1
    - Dst: frr_each
      Src: /src/frr/lib/plist.c:1605,1
    - Dst: vector_set
      Src: /src/frr/lib/plist.c:1606,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/plist.c:1606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - afi
    - comps
    - token
    argTypes:
    - afi_t
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1595
    functionDepth: 3
    functionLinenumber: 1595
    functionLinenumberEnd: 1607
    functionName: plist_autocomplete_afi
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - prefix_master_get
    - vector_set
    - XSTRDUP
    - frr_each
    linkageType: ''
    returnType: void
    signature: "void plist_autocomplete_afi(afi_t afi, vector comps,\n\t\t\t\t   struct
      cmd_token *token)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: plist_autocomplete_afi
      Src: /src/frr/lib/plist.c:1611,1
    - Dst: plist_autocomplete_afi
      Src: /src/frr/lib/plist.c:1612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1609
    functionDepth: 4
    functionLinenumber: 1609
    functionLinenumberEnd: 1613
    functionName: plist_autocomplete
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - plist_autocomplete_afi
    linkageType: ''
    returnType: void
    signature: void plist_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/lib/plist.c:1626,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1628,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1629,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1630,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1631,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1624
    functionDepth: 5
    functionLinenumber: 1624
    functionLinenumberEnd: 1634
    functionName: prefix_list_init_ipv4
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void prefix_list_init_ipv4(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/lib/plist.c:1645,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1647,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1648,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1649,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1650,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1651,1
    - Dst: install_element
      Src: /src/frr/lib/plist.c:1653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1643
    functionDepth: 5
    functionLinenumber: 1643
    functionLinenumberEnd: 1654
    functionName: prefix_list_init_ipv6
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_node
    linkageType: ''
    returnType: void
    signature: void prefix_list_init_ipv6(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: plist_init
      Src: /src/frr/lib/plist.c:1658,1
    - Dst: plist_init
      Src: /src/frr/lib/plist.c:1659,1
    - Dst: plist_init
      Src: /src/frr/lib/plist.c:1660,1
    - Dst: plist_init
      Src: /src/frr/lib/plist.c:1661,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/plist.c:1663,1
    - Dst: prefix_list_init_ipv4
      Src: /src/frr/lib/plist.c:1665,1
    - Dst: prefix_list_init_ipv6
      Src: /src/frr/lib/plist.c:1666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1656
    functionDepth: 6
    functionLinenumber: 1656
    functionLinenumberEnd: 1667
    functionName: prefix_list_init
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 11
    functionsReached:
    - cmd_variable_handler_register
    - prefix_list_init_ipv4
    - plist_init
    - prefix_list_init_ipv6
    linkageType: ''
    returnType: void
    signature: void prefix_list_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_reset_afi
      Src: /src/frr/lib/plist.c:1671,1
    - Dst: prefix_list_reset_afi
      Src: /src/frr/lib/plist.c:1672,1
    - Dst: prefix_list_reset_afi
      Src: /src/frr/lib/plist.c:1673,1
    - Dst: prefix_list_reset_afi
      Src: /src/frr/lib/plist.c:1674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1669
    functionDepth: 4
    functionLinenumber: 1669
    functionLinenumberEnd: 1675
    functionName: prefix_list_reset
    functionSourceFile: /src/frr/lib/plist.c
    functionUses: 5
    functionsReached:
    - prefix_list_reset_afi
    linkageType: ''
    returnType: void
    signature: void prefix_list_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: ZEBRA_CLIENT_GR_ENABLED
    functionSourceFile: /src/frr/lib/zclient.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZEBRA_CLIENT_GR_ENABLED(X)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum zebra_error_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 261
    functionName: zebra_error_type2str
    functionSourceFile: /src/frr/lib/zclient.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *zebra_error_type2str(enum zebra_error_types type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - note
    argTypes:
    - enum zapi_nhg_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 746
    functionDepth: 0
    functionLinenumber: 746
    functionLinenumberEnd: 767
    functionName: zapi_nhg_notify_owner2str
    functionSourceFile: /src/frr/lib/zclient.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      zapi_nhg_notify_owner2str(enum zapi_nhg_notify_owner note)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - note
    argTypes:
    - enum zapi_rule_notify_owner
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 790
    functionName: zapi_rule_notify_owner2str
    functionSourceFile: /src/frr/lib/zclient.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      zapi_rule_notify_owner2str(enum zapi_rule_notify_owner note)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.h:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - api
    - bh_type
    argTypes:
    - struct zapi_route*
    - enum blackhole_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1144
    functionDepth: 1
    functionLinenumber: 1144
    functionLinenumberEnd: 1152
    functionName: zapi_route_set_blackhole
    functionSourceFile: /src/frr/lib/zclient.h
    functionUses: 5
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void zapi_route_set_blackhole(struct zapi_route *api,\n\t\t\t\t\t
      \   enum blackhole_type bh_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - __xpath
    - ','
    - __indx1
    - ','
    - __indx2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: NB_YANG_XPATH_KEY
    functionSourceFile: /src/frr/lib/northbound.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NB_YANG_XPATH_KEY(__xpath, __indx1, __indx2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/frr/lib/network.c:21,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - fd
    - ptr
    - nbytes
    argTypes:
    - int
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 33
    functionName: readn
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 1
    functionsReached:
    - read
    linkageType: ''
    returnType: int
    signature: int readn(int fd, uint8_t *ptr, int nbytes)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/frr/lib/network.c:44,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/network.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - fd
    - ptr
    - nbytes
    argTypes:
    - int
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 57
    functionName: writen
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 1
    functionsReached:
    - ERRNO_IO_RETRY
    - write
    linkageType: ''
    returnType: int
    signature: int writen(int fd, const uint8_t *ptr, int nbytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/frr/lib/network.c:66,1
    - Dst: flog_err
      Src: /src/frr/lib/network.c:68,1
    - Dst: safe_strerror
      Src: /src/frr/lib/network.c:70,1
    - Dst: fcntl
      Src: /src/frr/lib/network.c:73,1
    - Dst: flog_err
      Src: /src/frr/lib/network.c:74,1
    - Dst: safe_strerror
      Src: /src/frr/lib/network.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 80
    functionName: set_nonblocking
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 23
    functionsReached:
    - flog_err
    - safe_strerror
    - fcntl
    linkageType: ''
    returnType: int
    signature: int set_nonblocking(int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/frr/lib/network.c:85,1
    - Dst: fcntl
      Src: /src/frr/lib/network.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 93
    functionName: set_cloexec
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 10
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: int
    signature: int set_cloexec(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/network.c:100,1
    - Dst: htonl
      Src: /src/frr/lib/network.c:101,1
    - Dst: memcpy
      Src: /src/frr/lib/network.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - host
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: htonf
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 6
    functionsReached:
    - htonl
    - memcpy
    linkageType: ''
    returnType: float
    signature: float htonf(float host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonf
      Src: /src/frr/lib/network.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - net
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: ntohf
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 7
    functionsReached:
    - htonf
    linkageType: ''
    returnType: float
    signature: float ntohf(float net)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/frr/lib/network.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 124
    functionName: frr_sequence_next
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 0
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t frr_sequence_next(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_sequence_next
      Src: /src/frr/lib/network.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: frr_sequence32_next
    functionSourceFile: /src/frr/lib/network.c
    functionUses: 3
    functionsReached:
    - frr_sequence_next
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t frr_sequence32_next(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dst
    - ','
    - add
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 19
    functionName: add_carry
    functionSourceFile: /src/frr/lib/checksum.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: add_carry(dst, add)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: add_carry
      Src: /src/frr/lib/checksum.c:50,1
    - Dst: add_carry
      Src: /src/frr/lib/checksum.c:54,1
    - Dst: add_carry
      Src: /src/frr/lib/checksum.c:55,1
    - Dst: add_carry
      Src: /src/frr/lib/checksum.c:60,1
    - Dst: add_carry
      Src: /src/frr/lib/checksum.c:73,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - iov
    - iov_len
    argTypes:
    - struct iovec*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 85
    functionName: in_cksumv
    functionSourceFile: /src/frr/lib/checksum.c
    functionUses: 4
    functionsReached:
    - add_carry
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t in_cksumv(const struct iovec *iov, size_t iov_len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/checksum.c:96,1
    - Dst: assert
      Src: /src/frr/lib/checksum.c:107,1
    - Dst: MIN
      Src: /src/frr/lib/checksum.c:118,1
    - Dst: htons
      Src: /src/frr/lib/checksum.c:154,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - buffer
    - len
    - offset
    argTypes:
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts:
    - condition: "(offset\n\t\t       < (len - 1))"
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/frr/lib/checksum.c
    constantsTouched: []
    func_position:
      end: 158
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 158
    functionName: fletcher_checksum
    functionSourceFile: /src/frr/lib/checksum.c
    functionUses: 5
    functionsReached:
    - MIN
    - no_sanitize
    - assert
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t fletcher_checksum(uint8_t *buffer, const size_t len,\n\t\t\t
      \  const uint16_t offset)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct slist_head*
    - struct slist_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 41
    functionName: typesafe_list_member
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool typesafe_list_member(const struct slist_head *head,\n\t\t\t  const
      struct slist_item *item)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct dlist_head*
    - struct dlist_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 60
    functionName: typesafe_dlist_member
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool typesafe_dlist_member(const struct dlist_head *head,\n\t\t\t
      \  const struct dlist_item *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HASH_SIZE
      Src: /src/frr/lib/typesafe.c:68,1
    - Dst: assert
      Src: /src/frr/lib/typesafe.c:72,1
    - Dst: HASH_KEY
      Src: /src/frr/lib/typesafe.c:72,1
    - Dst: assert
      Src: /src/frr/lib/typesafe.c:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct thash_head*
    assertStmts:
    - condition: (!prev || item->hashval >= prev->hashval)
      pos:
        line_end: 72
        line_start: 72
        source_file: /src/frr/lib/typesafe.c
    - condition: (HASH_KEY(*head, item->hashval) == i)
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/frr/lib/typesafe.c
    constantsTouched: []
    func_position:
      end: 78
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 78
    functionName: hash_consistency_check
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - assert
    - HASH_KEY
    - HASH_SIZE
    linkageType: ''
    returnType: void
    signature: void hash_consistency_check(struct thash_head *head)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/typesafe.c:95,1
    - Dst: hash_consistency_check
      Src: /src/frr/lib/typesafe.c:97,1
    - Dst: __builtin_ctz
      Src: /src/frr/lib/typesafe.c:105,1
    - Dst: _HASH_SIZE
      Src: /src/frr/lib/typesafe.c:111,1
    - Dst: XREALLOC
      Src: /src/frr/lib/typesafe.c:113,1
    - Dst: memset
      Src: /src/frr/lib/typesafe.c:115,1
    - Dst: HASH_SIZE
      Src: /src/frr/lib/typesafe.c:115,1
    - Dst: HASH_SIZE
      Src: /src/frr/lib/typesafe.c:117,1
    - Dst: HASH_SIZE
      Src: /src/frr/lib/typesafe.c:121,1
    - Dst: _HASH_KEY
      Src: /src/frr/lib/typesafe.c:139,1
    - Dst: hash_consistency_check
      Src: /src/frr/lib/typesafe.c:150,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct thash_head*
    assertStmts:
    - condition: (head->count > 0)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/frr/lib/typesafe.c
    constantsTouched: []
    func_position:
      end: 151
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 151
    functionName: typesafe_hash_grow
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - assert
    - hash_consistency_check
    - _HASH_KEY
    - memset
    - HASH_SIZE
    - _HASH_SIZE
    - XREALLOC
    - __builtin_ctz
    linkageType: ''
    returnType: void
    signature: void typesafe_hash_grow(struct thash_head *head)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_consistency_check
      Src: /src/frr/lib/typesafe.c:158,1
    - Dst: XFREE
      Src: /src/frr/lib/typesafe.c:161,1
    - Dst: __builtin_ctz
      Src: /src/frr/lib/typesafe.c:172,1
    - Dst: _HASH_SIZE
      Src: /src/frr/lib/typesafe.c:178,1
    - Dst: XREALLOC
      Src: /src/frr/lib/typesafe.c:191,1
    - Dst: hash_consistency_check
      Src: /src/frr/lib/typesafe.c:195,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct thash_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 196
    functionName: typesafe_hash_shrink
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - hash_consistency_check
    - _HASH_SIZE
    - XFREE
    - XREALLOC
    - __builtin_ctz
    linkageType: ''
    returnType: void
    signature: void typesafe_hash_shrink(struct thash_head *head)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - item
    - level
    argTypes:
    - struct sskip_item*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 212
    functionName: sl_level_get
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct sskip_item
    signature: "struct sskip_item *sl_level_get(const struct sskip_item *item,\n\t\t\tsize_t
      level)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - item
    - level
    - value
    argTypes:
    - struct sskip_item*
    - size_t
    - struct sskip_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 227
    functionName: sl_level_set
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void sl_level_set(struct sskip_item *item, size_t level,\n\t\tstruct
      sskip_item *value)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_ctz
      Src: /src/frr/lib/typesafe.c:239,1
    - Dst: frr_weak_random
      Src: /src/frr/lib/typesafe.c:239,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:245,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:250,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:266,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:268,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:270,1
    - Dst: memset
      Src: /src/frr/lib/typesafe.c:277,1
    - Dst: XMALLOC
      Src: /src/frr/lib/typesafe.c:280,1
    - Dst: sl_level_set
      Src: /src/frr/lib/typesafe.c:286,1
    - Dst: sl_level_set
      Src: /src/frr/lib/typesafe.c:287,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:291,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:292,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:294,1
    - Dst: sl_level_set
      Src: /src/frr/lib/typesafe.c:297,1
    - Dst: sl_level_set
      Src: /src/frr/lib/typesafe.c:298,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct sskip_head*
    - struct sskip_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 301
    functionName: typesafe_skiplist_add
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - sl_level_get
    - frr_weak_random
    - memset
    - sl_level_set
    - XMALLOC
    - cmpfn
    - __builtin_ctz
    linkageType: ''
    returnType: struct sskip_item
    signature: "struct sskip_item *typesafe_skiplist_add(struct sskip_head *head,\n\t\tstruct
      sskip_item *item,\n\t\tint (*cmpfn)(const struct sskip_item *a,\n\t\t\t\tconst
      struct sskip_item *b))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:316,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:321,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct sskip_head*
    - struct sskip_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 331
    functionName: typesafe_skiplist_find
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - sl_level_get
    - cmpfn
    linkageType: ''
    returnType: struct sskip_item
    signature: "struct sskip_item *typesafe_skiplist_find(\n\t\tconst struct sskip_head
      *head,\n\t\tconst struct sskip_item *item, int (*cmpfn)(\n\t\t\t\tconst struct
      sskip_item *a,\n\t\t\t\tconst struct sskip_item *b))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:344,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:349,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct sskip_head*
    - struct sskip_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 359
    functionName: typesafe_skiplist_find_gteq
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - sl_level_get
    - cmpfn
    linkageType: ''
    returnType: struct sskip_item
    signature: "struct sskip_item *typesafe_skiplist_find_gteq(\n\t\tconst struct
      sskip_head *head,\n\t\tconst struct sskip_item *item, int (*cmpfn)(\n\t\t\t\tconst
      struct sskip_item *a,\n\t\t\t\tconst struct sskip_item *b))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:372,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:377,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct sskip_head*
    - struct sskip_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 385
    functionName: typesafe_skiplist_find_lt
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - sl_level_get
    - cmpfn
    linkageType: ''
    returnType: struct sskip_item
    signature: "struct sskip_item *typesafe_skiplist_find_lt(\n\t\tconst struct sskip_head
      *head,\n\t\tconst struct sskip_item *item, int (*cmpfn)(\n\t\t\t\tconst struct
      sskip_item *a,\n\t\t\t\tconst struct sskip_item *b))"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:397,1
    - Dst: sl_level_set
      Src: /src/frr/lib/typesafe.c:403,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:404,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:409,1
    - Dst: XFREE
      Src: /src/frr/lib/typesafe.c:427,1
    - Dst: memset
      Src: /src/frr/lib/typesafe.c:429,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct sskip_head*
    - struct sskip_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 432
    functionName: typesafe_skiplist_del
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - sl_level_get
    - memset
    - sl_level_set
    - cmpfn
    - XFREE
    linkageType: ''
    returnType: struct sskip_item
    signature: "struct sskip_item *typesafe_skiplist_del(\n\tstruct sskip_head *head,
      struct sskip_item *item,\n\tint (*cmpfn)(const struct sskip_item *a, const struct
      sskip_item *b))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:439,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:446,1
    - Dst: sl_level_set
      Src: /src/frr/lib/typesafe.c:450,1
    - Dst: sl_level_get
      Src: /src/frr/lib/typesafe.c:450,1
    - Dst: XFREE
      Src: /src/frr/lib/typesafe.c:459,1
    - Dst: memset
      Src: /src/frr/lib/typesafe.c:461,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct sskip_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 464
    functionName: typesafe_skiplist_pop
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - memset
    - sl_level_get
    - XFREE
    - sl_level_set
    linkageType: ''
    returnType: struct sskip_item
    signature: struct sskip_item *typesafe_skiplist_pop(struct sskip_head *head)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/typesafe.c:481,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:481,1
    - Dst: heap_consistency_check
      Src: /src/frr/lib/typesafe.c:482,1
    - Dst: assert
      Src: /src/frr/lib/typesafe.c:485,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:485,1
    - Dst: heap_consistency_check
      Src: /src/frr/lib/typesafe.c:486,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - head
    - pos
    argTypes:
    - struct heap_head*
    - uint32_t
    assertStmts:
    - condition: (cmpfn(head->array[rghtpos], head->array[pos]) >= 0)
      pos:
        line_end: 480
        line_start: 480
        source_file: /src/frr/lib/typesafe.c
    - condition: (cmpfn(head->array[downpos], head->array[pos]) >= 0)
      pos:
        line_end: 484
        line_start: 484
        source_file: /src/frr/lib/typesafe.c
    constantsTouched: []
    func_position:
      end: 488
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 488
    functionName: heap_consistency_check
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 1
    functionsReached:
    - heap_consistency_check
    - assert
    - cmpfn
    linkageType: ''
    returnType: void
    signature: "void heap_consistency_check(struct heap_head *head,\n\t\t\t\t   int
      (*cmpfn)(const struct heap_item *a,\n\t\t\t\t\t\tconst struct heap_item *b),\n\t\t\t\t
      \  uint32_t pos)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/typesafe.c:506,1
    - Dst: XFREE
      Src: /src/frr/lib/typesafe.c:510,1
    - Dst: XREALLOC
      Src: /src/frr/lib/typesafe.c:520,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - head
    - grow
    argTypes:
    - struct heap_head*
    - bool
    assertStmts:
    - condition: (!newsize)
      pos:
        line_end: 505
        line_start: 505
        source_file: /src/frr/lib/typesafe.c
    constantsTouched: []
    func_position:
      end: 523
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 523
    functionName: typesafe_heap_resize
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - XFREE
    - XREALLOC
    - assert
    linkageType: ''
    returnType: void
    signature: void typesafe_heap_resize(struct heap_head *head, bool grow)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:554,1
    - Dst: nary_last
      Src: /src/frr/lib/typesafe.c:556,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:557,1
    - Dst: nary_last
      Src: /src/frr/lib/typesafe.c:565,1
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:565,1
    - Dst: heap_consistency_check
      Src: /src/frr/lib/typesafe.c:580,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - head
    - pos
    - item
    argTypes:
    - struct heap_head*
    - uint32_t
    - struct heap_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 581
    functionName: typesafe_heap_pushdown
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - heap_consistency_check
    - nary_last
    - cmpfn
    linkageType: ''
    returnType: void
    signature: "void typesafe_heap_pushdown(struct heap_head *head, uint32_t pos,\n\t\tstruct
      heap_item *item,\n\t\tint (*cmpfn)(const struct heap_item *a,\n\t\t\t     const
      struct heap_item *b))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 553
    functionName: nary_last
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: nary_last(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cmpfn
      Src: /src/frr/lib/typesafe.c:596,1
    - Dst: heap_consistency_check
      Src: /src/frr/lib/typesafe.c:608,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - head
    - pos
    - item
    argTypes:
    - struct heap_head*
    - uint32_t
    - struct heap_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 583
    functionDepth: 2
    functionLinenumber: 583
    functionLinenumberEnd: 609
    functionName: typesafe_heap_pullup
    functionSourceFile: /src/frr/lib/typesafe.c
    functionUses: 0
    functionsReached:
    - heap_consistency_check
    - cmpfn
    linkageType: ''
    returnType: void
    signature: "void typesafe_heap_pullup(struct heap_head *head, uint32_t pos,\n\t\tstruct
      heap_item *item,\n\t\tint (*cmpfn)(const struct heap_item *a,\n\t\t\t     const
      struct heap_item *b))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - nhop
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: ALL_NEXTHOPS
    functionSourceFile: /src/frr/lib/nexthop_group.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_NEXTHOPS(head, nhop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - nhop
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: ALL_NEXTHOPS_PTR
    functionSourceFile: /src/frr/lib/nexthop_group.h
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_NEXTHOPS_PTR(head, nhop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: RBE_LEFT
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_LEFT(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: RBE_RIGHT
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_RIGHT(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: RBE_PARENT
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_PARENT(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbe
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: RBE_COLOR
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBE_COLOR(_rbe)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _rbt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: RBH_ROOT
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBH_ROOT(_rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:34,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:35,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:35,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rbe
    - parent
    argTypes:
    - struct rb_entry*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: rbe_set
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 1
    functionsReached:
    - RBE_RIGHT
    - RBE_COLOR
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void rbe_set(struct rb_entry *rbe, struct rb_entry *parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:42,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - black
    - red
    argTypes:
    - struct rb_entry*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: rbe_set_blackred
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 2
    functionsReached:
    - RBE_COLOR
    linkageType: ''
    returnType: void
    signature: "void rbe_set_blackred(struct rb_entry *black,\n\t\t\t\t    struct
      rb_entry *red)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:51,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:52,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:52,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:53,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:54,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:54,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:56,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:57,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:59,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:60,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:62,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:64,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:66,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - rbt
    - rbe
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 68
    functionName: rbe_rotate_left
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 2
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void rbe_rotate_left(struct rbt_tree *rbt, struct rb_entry *rbe)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:75,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:76,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:76,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:77,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:78,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:78,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:80,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:81,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:83,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:84,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:86,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:88,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:90,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - rbt
    - rbe
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 92
    functionName: rbe_rotate_right
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 2
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void rbe_rotate_right(struct rbt_tree *rbt, struct rb_entry *rbe)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:100,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:101,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:102,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:104,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:105,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:106,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:107,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/typerb.c:108,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:113,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/typerb.c:114,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/typerb.c:120,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/typerb.c:121,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:123,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:124,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:125,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/typerb.c:126,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:131,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/typerb.c:132,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/typerb.c:138,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/typerb.c:139,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:143,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:143,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - rbt
    - rbe
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 144
    functionName: rbe_insert_color
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 1
    functionsReached:
    - rbe_rotate_right
    - rbe_rotate_left
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - rbe_set_blackred
    - RBE_COLOR
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: void rbe_insert_color(struct rbt_tree *rbt, struct rb_entry *rbe)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:152,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:153,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:154,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:155,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:156,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/typerb.c:157,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/typerb.c:158,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:159,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:161,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:162,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:162,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:163,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:164,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:164,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:165,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:167,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:169,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:170,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:170,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:173,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:175,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:177,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/typerb.c:178,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:179,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:182,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:182,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:183,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:184,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:185,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:185,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/typerb.c:187,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:188,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:192,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:193,1
    - Dst: rbe_set_blackred
      Src: /src/frr/lib/typerb.c:194,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/typerb.c:195,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:196,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:199,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:200,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:200,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:201,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:202,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:202,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:203,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:205,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:207,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:208,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:208,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:211,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:213,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:215,1
    - Dst: rbe_rotate_left
      Src: /src/frr/lib/typerb.c:216,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:217,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:220,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:220,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:221,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:222,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:223,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:223,1
    - Dst: rbe_rotate_right
      Src: /src/frr/lib/typerb.c:225,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:226,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:233,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 3
    argNames:
    - rbt
    - parent
    - rbe
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 234
    functionName: rbe_remove_color
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 1
    functionsReached:
    - rbe_rotate_right
    - rbe_rotate_left
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - rbe_set_blackred
    - RBE_COLOR
    - RBE_LEFT
    linkageType: ''
    returnType: void
    signature: "void rbe_remove_color(struct rbt_tree *rbt,\n\t\t\t\t    struct rb_entry
      *parent,\n\t\t\t\t    struct rb_entry *rbe)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:242,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:243,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:244,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:245,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:249,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:250,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:253,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:254,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:255,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:257,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:259,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:260,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:262,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:264,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:265,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:269,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:271,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:272,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:274,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:276,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:278,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:278,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:279,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:280,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:280,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:285,1
    - Dst: RBE_COLOR
      Src: /src/frr/lib/typerb.c:286,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:289,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:291,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:292,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:294,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:296,1
    - Dst: rbe_remove_color
      Src: /src/frr/lib/typerb.c:299,1
    - Dst: memset
      Src: /src/frr/lib/typerb.c:302,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 2
    argNames:
    - rbt
    - rbe
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 304
    functionName: rbe_remove
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 1
    functionsReached:
    - memset
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_PARENT
    - rbe_remove_color
    - RBE_COLOR
    - RBE_LEFT
    linkageType: ''
    returnType: struct rb_entry
    signature: 'struct rb_entry *

      rbe_remove(struct rbt_tree *rbt, struct rb_entry *rbe)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbe_remove
      Src: /src/frr/lib/typerb.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rbt
    - rbe
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 310
    functionName: typed_rb_remove
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - rbe_remove
    linkageType: ''
    returnType: struct typed_rb_entry
    signature: "struct typed_rb_entry *typed_rb_remove(struct rbt_tree *rbt,\n\t\t\t\t
      \      struct rb_entry *rbe)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:321,1
    - Dst: cmpfn
      Src: /src/frr/lib/typerb.c:325,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:327,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:329,1
    - Dst: rbe_set
      Src: /src/frr/lib/typerb.c:334,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:338,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:340,1
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:342,1
    - Dst: rbe_insert_color
      Src: /src/frr/lib/typerb.c:344,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - rbt
    - rbe
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 347
    functionName: typed_rb_insert
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - rbe_set
    - cmpfn
    - RBE_RIGHT
    - RBH_ROOT
    - rbe_insert_color
    - RBE_LEFT
    linkageType: ''
    returnType: struct typed_rb_entry
    signature: "struct typed_rb_entry *typed_rb_insert(struct rbt_tree *rbt,\n\t\tstruct
      rb_entry *rbe, int (*cmpfn)(\n\t\t\tconst struct typed_rb_entry *a,\n\t\t\tconst
      struct typed_rb_entry *b))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:356,1
    - Dst: cmpfn
      Src: /src/frr/lib/typerb.c:360,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:362,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - rbt
    - key
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 370
    functionName: typed_rb_find
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_LEFT
    - cmpfn
    linkageType: ''
    returnType: struct rb_entry
    signature: "struct rb_entry *typed_rb_find(const struct rbt_tree *rbt,\n\t\tconst
      struct rb_entry *key,\n\t\tint (*cmpfn)(\n\t\t\tconst struct typed_rb_entry
      *a,\n\t\t\tconst struct typed_rb_entry *b))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:378,1
    - Dst: cmpfn
      Src: /src/frr/lib/typerb.c:382,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:385,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - rbt
    - key
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 393
    functionName: typed_rb_find_gteq
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_LEFT
    - cmpfn
    linkageType: ''
    returnType: struct rb_entry
    signature: "struct rb_entry *typed_rb_find_gteq(const struct rbt_tree *rbt,\n\t\tconst
      struct rb_entry *key,\n\t\tint (*cmpfn)(\n\t\t\tconst struct typed_rb_entry
      *a,\n\t\t\tconst struct typed_rb_entry *b))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:401,1
    - Dst: cmpfn
      Src: /src/frr/lib/typerb.c:405,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:407,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - rbt
    - key
    argTypes:
    - struct rbt_tree*
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 415
    functionName: typed_rb_find_lt
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    - RBE_LEFT
    - cmpfn
    linkageType: ''
    returnType: struct rb_entry
    signature: "struct rb_entry *typed_rb_find_lt(const struct rbt_tree *rbt,\n\t\tconst
      struct rb_entry *key,\n\t\tint (*cmpfn)(\n\t\t\tconst struct typed_rb_entry
      *a,\n\t\t\tconst struct typed_rb_entry *b))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:421,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:422,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:423,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:424,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:426,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:426,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:426,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:427,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:429,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:430,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:430,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:431,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:432,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - rbe_const
    argTypes:
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 437
    functionName: typed_rb_next
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: struct rb_entry
    signature: struct rb_entry *typed_rb_next(const struct rb_entry *rbe_const)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:443,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:444,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:445,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:446,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:448,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:448,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:448,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:449,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:451,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:452,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:452,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:453,1
    - Dst: RBE_PARENT
      Src: /src/frr/lib/typerb.c:454,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - rbe_const
    argTypes:
    - struct rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 459
    functionName: typed_rb_prev
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBE_PARENT
    - RBE_LEFT
    linkageType: ''
    returnType: struct rb_entry
    signature: struct rb_entry *typed_rb_prev(const struct rb_entry *rbe_const)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:463,1
    - Dst: RBE_LEFT
      Src: /src/frr/lib/typerb.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rbt
    argTypes:
    - struct rbt_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 472
    functionName: typed_rb_min
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - RBH_ROOT
    - RBE_LEFT
    linkageType: ''
    returnType: struct rb_entry
    signature: struct rb_entry *typed_rb_min(const struct rbt_tree *rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RBH_ROOT
      Src: /src/frr/lib/typerb.c:476,1
    - Dst: RBE_RIGHT
      Src: /src/frr/lib/typerb.c:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - rbt
    argTypes:
    - struct rbt_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 485
    functionName: typed_rb_max
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached:
    - RBE_RIGHT
    - RBH_ROOT
    linkageType: ''
    returnType: struct rb_entry
    signature: struct rb_entry *typed_rb_max(const struct rbt_tree *rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rbt
    - rbe
    argTypes:
    - struct typed_rb_root*
    - struct typed_rb_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 493
    functionName: typed_rb_member
    functionSourceFile: /src/frr/lib/typerb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool typed_rb_member(const struct typed_rb_root *rbt,\n\t\t     const
      struct typed_rb_entry *rbe)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 49
    functionName: frr_signal_handler
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void frr_signal_handler(int signo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/frr/lib/sigevent.c:63,1
    - Dst: sigemptyset
      Src: /src/frr/lib/sigevent.c:64,1
    - Dst: sigaddset
      Src: /src/frr/lib/sigevent.c:68,1
    - Dst: pthread_sigmask
      Src: /src/frr/lib/sigevent.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - setp
    argTypes:
    - sigset_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 76
    functionName: frr_sigevent_check
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 2
    functionsReached:
    - sigemptyset
    - pthread_sigmask
    - sigaddset
    linkageType: ''
    returnType: bool
    signature: bool frr_sigevent_check(sigset_t *setp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sigfillset
      Src: /src/frr/lib/sigevent.c:92,1
    - Dst: sigdelset
      Src: /src/frr/lib/sigevent.c:93,1
    - Dst: sigdelset
      Src: /src/frr/lib/sigevent.c:94,1
    - Dst: sigprocmask
      Src: /src/frr/lib/sigevent.c:96,1
    - Dst: flog_err_sys
      Src: /src/frr/lib/sigevent.c:97,1
    - Dst: struct frr_signal_t*::handler
      Src: /src/frr/lib/sigevent.c:115,1
    - Dst: sigprocmask
      Src: /src/frr/lib/sigevent.c:121,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 126
    functionName: frr_sigevent_process
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 2
    functionsReached:
    - sigprocmask
    - sigfillset
    - flog_err_sys
    - struct frr_signal_t*::handler
    - sigdelset
    linkageType: ''
    returnType: int
    signature: int frr_sigevent_process(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/sigevent.c:134,1
    - Dst: event_add_timer
      Src: /src/frr/lib/sigevent.c:136,1
    - Dst: frr_sigevent_process
      Src: /src/frr/lib/sigevent.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 139
    functionName: frr_signal_timer
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - frr_sigevent_process
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void frr_signal_timer(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sigfillset
      Src: /src/frr/lib/sigevent.c:151,1
    - Dst: sigaction
      Src: /src/frr/lib/sigevent.c:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 168
    functionName: signal_set
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 0
    functionsReached:
    - sigaction
    - sigfillset
    linkageType: ''
    returnType: int
    signature: int signal_set(int signo)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - context
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 205
    functionName: program_counter
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *program_counter(void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: program_counter
      Src: /src/frr/lib/sigevent.c:210,1
    - Dst: zlog_signal
      Src: /src/frr/lib/sigevent.c:212,1
    - Dst: _exit
      Src: /src/frr/lib/sigevent.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - signo
    - siginfo
    - context
    argTypes:
    - int
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 214
    functionName: exit_handler
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 0
    functionsReached:
    - _exit
    - program_counter
    - zlog_signal
    linkageType: ''
    returnType: void
    signature: void exit_handler(int signo, siginfo_t *siginfo, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: program_counter
      Src: /src/frr/lib/sigevent.c:219,1
    - Dst: sigaction
      Src: /src/frr/lib/sigevent.c:225,1
    - Dst: sigaction
      Src: /src/frr/lib/sigevent.c:226,1
    - Dst: sigemptyset
      Src: /src/frr/lib/sigevent.c:230,1
    - Dst: sigaddset
      Src: /src/frr/lib/sigevent.c:231,1
    - Dst: sigprocmask
      Src: /src/frr/lib/sigevent.c:232,1
    - Dst: alarm
      Src: /src/frr/lib/sigevent.c:234,1
    - Dst: zlog_signal
      Src: /src/frr/lib/sigevent.c:236,1
    - Dst: log_memstats
      Src: /src/frr/lib/sigevent.c:239,1
    - Dst: zlog_tls_buffer_fini
      Src: /src/frr/lib/sigevent.c:241,1
    - Dst: sigaddset
      Src: /src/frr/lib/sigevent.c:244,1
    - Dst: sigprocmask
      Src: /src/frr/lib/sigevent.c:245,1
    - Dst: raise
      Src: /src/frr/lib/sigevent.c:246,1
    - Dst: _exit
      Src: /src/frr/lib/sigevent.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - signo
    - siginfo
    - context
    argTypes:
    - int
    - siginfo_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 252
    functionName: core_handler
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 0
    functionsReached:
    - zlog_tls_buffer_fini
    - zlog_signal
    - sigprocmask
    - raise
    - program_counter
    - sigaddset
    - _exit
    - sigaction
    - alarm
    - sigemptyset
    - log_memstats
    linkageType: ''
    returnType: void
    signature: void core_handler(int signo, siginfo_t *siginfo, void *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/lib/sigevent.c:292,1
    - Dst: array_size
      Src: /src/frr/lib/sigevent.c:293,1
    - Dst: array_size
      Src: /src/frr/lib/sigevent.c:294,1
    - Dst: array_size
      Src: /src/frr/lib/sigevent.c:298,1
    - Dst: sigaction
      Src: /src/frr/lib/sigevent.c:303,1
    - Dst: sigfillset
      Src: /src/frr/lib/sigevent.c:306,1
    - Dst: sigaction
      Src: /src/frr/lib/sigevent.c:322,1
    - Dst: flog_err
      Src: /src/frr/lib/sigevent.c:324,1
    - Dst: safe_strerror
      Src: /src/frr/lib/sigevent.c:328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 332
    functionName: trap_default_signals
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 0
    functionsReached:
    - sigfillset
    - flog_err
    - safe_strerror
    - array_size
    - sigaction
    linkageType: ''
    returnType: void
    signature: void trap_default_signals(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: trap_default_signals
      Src: /src/frr/lib/sigevent.c:342,1
    - Dst: signal_set
      Src: /src/frr/lib/sigevent.c:346,1
    - Dst: exit
      Src: /src/frr/lib/sigevent.c:347,1
    - Dst: event_add_timer
      Src: /src/frr/lib/sigevent.c:356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - m
    - sigc
    - signals
    argTypes:
    - struct event_loop*
    - int
    - struct frr_signal_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 359
    functionName: signal_init
    functionSourceFile: /src/frr/lib/sigevent.c
    functionUses: 6
    functionsReached:
    - event_add_timer
    - signal_set
    - trap_default_signals
    - exit
    linkageType: ''
    returnType: void
    signature: void signal_init(struct event_loop *m, int sigc, struct frr_signal_t
      signals[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - G
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: GETP_VALID
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETP_VALID(S, G)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - G
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: PUT_AT_VALID
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUT_AT_VALID(S,G)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: ENDP_VALID
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENDP_VALID(S, E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: STREAM_WARN_OFFSETS
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_WARN_OFFSETS(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: STREAM_VERIFY_SANE
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_VERIFY_SANE(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - WHAT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: STREAM_BOUND_WARN
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_BOUND_WARN(S, WHAT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - WHAT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: STREAM_BOUND_WARN2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STREAM_BOUND_WARN2(S, WHAT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - S
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: CHECK_SIZE
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SIZE(S, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/stream.c:93,1
    - Dst: XMALLOC
      Src: /src/frr/lib/stream.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts:
    - condition: (size > 0)
      pos:
        line_end: 92
        line_start: 92
        source_file: /src/frr/lib/stream.c
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: stream_new
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 105
    functionsReached:
    - XMALLOC
    - assert
    linkageType: ''
    returnType: struct stream
    signature: struct stream *stream_new(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/stream.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: stream_free
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 71
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void stream_free(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:114,1
    - Dst: assert
      Src: /src/frr/lib/stream.c:116,1
    - Dst: assert
      Src: /src/frr/lib/stream.c:117,1
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/stream.c:117,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - dest
    - src
    argTypes:
    - struct stream*
    - struct stream*
    assertStmts:
    - condition: (dest != NULL)
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/frr/lib/stream.c
    - condition: (STREAM_SIZE(dest) >= src->endp)
      pos:
        line_end: 116
        line_start: 116
        source_file: /src/frr/lib/stream.c
    constantsTouched: []
    func_position:
      end: 125
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 125
    functionName: stream_copy
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 5
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - assert
    - STREAM_SIZE
    linkageType: ''
    returnType: struct stream
    signature: struct stream *stream_copy(struct stream *dest, const struct stream
      *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:131,1
    - Dst: stream_new
      Src: /src/frr/lib/stream.c:133,1
    - Dst: stream_copy
      Src: /src/frr/lib/stream.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 136
    functionName: stream_dup
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 11
    functionsReached:
    - STREAM_VERIFY_SANE
    - stream_new
    - stream_copy
    linkageType: ''
    returnType: struct stream
    signature: struct stream *stream_dup(const struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:143,1
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:144,1
    - Dst: stream_new::stream_new
      Src: /src/frr/lib/stream.c:146,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:149,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:150,1
    - Dst: data::data
      Src: /src/frr/lib/stream.c:150,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - s1
    - s2
    - offset
    argTypes:
    - struct stream*
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 155
    functionName: stream_dupcat
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - stream_new::stream_new
    - data::data
    linkageType: ''
    returnType: struct stream
    signature: "struct stream *stream_dupcat(const struct stream *s1, const struct
      stream *s2,\n\t\t\t     size_t offset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:161,1
    - Dst: XREALLOC
      Src: /src/frr/lib/stream.c:163,1
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - sptr
    - newsize
    argTypes:
    - struct stream**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 176
    functionName: stream_resize_inplace
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 3
    functionsReached:
    - STREAM_VERIFY_SANE
    - XREALLOC
    linkageType: ''
    returnType: size_t
    signature: size_t stream_resize_inplace(struct stream **sptr, size_t newsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: stream_get_getp
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 33
    functionsReached:
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: size_t
    signature: size_t stream_get_getp(const struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: stream_get_endp
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 164
    functionsReached:
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: size_t
    signature: size_t stream_get_endp(const struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: stream_get_size
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 2
    functionsReached:
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: size_t
    signature: size_t stream_get_size(const struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:199,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:201,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - s
    - pos
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 207
    functionName: stream_set_getp
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 35
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: void
    signature: void stream_set_getp(struct stream *s, size_t pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:211,1
    - Dst: ENDP_VALID
      Src: /src/frr/lib/stream.c:213,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:214,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:222,1
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - s
    - pos
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 228
    functionName: stream_set_endp
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 12
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    - ENDP_VALID
    linkageType: ''
    returnType: void
    signature: void stream_set_endp(struct stream *s, size_t pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:233,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:235,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 241
    functionName: stream_forward_getp
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 52
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: void
    signature: void stream_forward_getp(struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:245,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 253
    functionName: stream_forward_getp2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: bool
    signature: bool stream_forward_getp2(struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:257,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:259,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 265
    functionName: stream_rewind_getp
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 2
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: void
    signature: void stream_rewind_getp(struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:269,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 277
    functionName: stream_rewind_getp2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: bool
    signature: bool stream_rewind_getp2(struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:281,1
    - Dst: ENDP_VALID
      Src: /src/frr/lib/stream.c:283,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: stream_forward_endp
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 7
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    - ENDP_VALID
    linkageType: ''
    returnType: void
    signature: void stream_forward_endp(struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:293,1
    - Dst: ENDP_VALID
      Src: /src/frr/lib/stream.c:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 301
    functionName: stream_forward_endp2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - STREAM_VERIFY_SANE
    - ENDP_VALID
    linkageType: ''
    returnType: bool
    signature: bool stream_forward_endp2(struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:306,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:308,1
    - Dst: STREAM_BOUND_WARN2
      Src: /src/frr/lib/stream.c:309,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - dst
    - s
    - size
    argTypes:
    - void*
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 317
    functionName: stream_get2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN2
    linkageType: ''
    returnType: bool
    signature: bool stream_get2(void *dst, struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:321,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:323,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:324,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - dst
    - s
    - size
    argTypes:
    - void*
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 330
    functionName: stream_get
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 42
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: void
    signature: void stream_get(void *dst, struct stream *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:335,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:337,1
    - Dst: STREAM_BOUND_WARN2
      Src: /src/frr/lib/stream.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s
    - byte
    argTypes:
    - struct stream*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 344
    functionName: stream_getc2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN2
    linkageType: ''
    returnType: bool
    signature: bool stream_getc2(struct stream *s, uint8_t *byte)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:350,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:352,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 359
    functionName: stream_getc
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 53
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t stream_getc(struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:366,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:368,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s
    - from
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 376
    functionName: stream_getc_from
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t stream_getc_from(struct stream *s, size_t from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:380,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:382,1
    - Dst: STREAM_BOUND_WARN2
      Src: /src/frr/lib/stream.c:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - word
    argTypes:
    - struct stream*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 391
    functionName: stream_getw2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN2
    linkageType: ''
    returnType: bool
    signature: bool stream_getw2(struct stream *s, uint16_t *word)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:398,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:400,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:401,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 409
    functionName: stream_getw
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 41
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t stream_getw(struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:416,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:418,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - from
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 427
    functionName: stream_getw_from
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 2
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t stream_getw_from(struct stream *s, size_t from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:434,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:436,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - s
    - from
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 446
    functionName: stream_get3_from
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t stream_get3_from(struct stream *s, size_t from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:452,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:454,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 464
    functionName: stream_get3
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 3
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t stream_get3(struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:471,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:473,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - s
    - from
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 484
    functionName: stream_getl_from
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t stream_getl_from(struct stream *s, size_t from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:489,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:491,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:492,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - dst
    - s
    - from
    - size
    argTypes:
    - void*
    - struct stream*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 497
    functionName: stream_get_from
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 5
    functionsReached:
    - memcpy
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: void
    signature: void stream_get_from(void *dst, struct stream *s, size_t from, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:501,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:503,1
    - Dst: STREAM_BOUND_WARN2
      Src: /src/frr/lib/stream.c:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - s
    - l
    argTypes:
    - struct stream*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 514
    functionName: stream_getl2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN2
    linkageType: ''
    returnType: bool
    signature: bool stream_getl2(struct stream *s, uint32_t *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:520,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:522,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 533
    functionName: stream_getl
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 27
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t stream_getl(struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:540,1
    - Dst: GETP_VALID
      Src: /src/frr/lib/stream.c:542,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - s
    - from
    argTypes:
    - struct stream*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 557
    functionName: stream_getq_from
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - GETP_VALID
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stream_getq_from(struct stream *s, size_t from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:563,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:565,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 580
    functionName: stream_getq
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t stream_getq(struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:584,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:586,1
    - Dst: STREAM_BOUND_WARN2
      Src: /src/frr/lib/stream.c:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - s
    - q
    argTypes:
    - struct stream*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 601
    functionName: stream_getq2
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN2
    linkageType: ''
    returnType: bool
    signature: bool stream_getq2(struct stream *s, uint64_t *q)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:608,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:610,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:611,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 619
    functionName: stream_get_ipv4
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 16
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t stream_get_ipv4(struct stream *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:625,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:628,1
    - Dst: STREAM_BOUND_WARN2
      Src: /src/frr/lib/stream.c:629,1
    - Dst: stream_getw
      Src: /src/frr/lib/stream.c:632,1
    - Dst: flog_err
      Src: /src/frr/lib/stream.c:643,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:648,1
    - Dst: STREAM_BOUND_WARN2
      Src: /src/frr/lib/stream.c:649,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:652,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - s
    - ip
    argTypes:
    - struct stream*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 621
    functionDepth: 2
    functionLinenumber: 621
    functionLinenumberEnd: 656
    functionName: stream_get_ipaddr
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_READABLE
    - stream_getw
    - flog_err
    - STREAM_BOUND_WARN2
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool stream_get_ipaddr(struct stream *s, struct ipaddr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_getl
      Src: /src/frr/lib/stream.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 666
    functionName: stream_getf
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - stream_getl
    linkageType: ''
    returnType: float
    signature: float stream_getf(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_getq
      Src: /src/frr/lib/stream.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 676
    functionName: stream_getd
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - stream_getq
    linkageType: ''
    returnType: double
    signature: double stream_getd(struct stream *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SIZE
      Src: /src/frr/lib/stream.c:689,1
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:691,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:693,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:694,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:699,1
    - Dst: memset
      Src: /src/frr/lib/stream.c:701,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - s
    - src
    - size
    argTypes:
    - struct stream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 704
    functionName: stream_put
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 110
    functionsReached:
    - CHECK_SIZE
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    - memset
    - STREAM_WRITEABLE
    - memcpy
    linkageType: ''
    returnType: void
    signature: void stream_put(struct stream *s, const void *src, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:709,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:711,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - struct stream*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 718
    functionName: stream_putc
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 112
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putc(struct stream *s, uint8_t c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:723,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:725,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:726,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - w
    argTypes:
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 721
    functionDepth: 1
    functionLinenumber: 721
    functionLinenumberEnd: 734
    functionName: stream_putw
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 87
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putw(struct stream *s, uint16_t w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:739,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:741,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - s
    - l
    argTypes:
    - struct stream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 751
    functionName: stream_put3
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 6
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_put3(struct stream *s, uint32_t l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:756,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:758,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:759,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - s
    - l
    argTypes:
    - struct stream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 769
    functionName: stream_putl
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 100
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putl(struct stream *s, uint32_t l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:774,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:776,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - s
    - q
    argTypes:
    - struct stream*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 791
    functionName: stream_putq
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 4
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putq(struct stream *s, uint64_t q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/lib/stream.c:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s
    - f
    argTypes:
    - struct stream*
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 793
    functionDepth: 2
    functionLinenumber: 793
    functionLinenumberEnd: 801
    functionName: stream_putf
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int stream_putf(struct stream *s, float f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putq
      Src: /src/frr/lib/stream.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - s
    - d
    argTypes:
    - struct stream*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 803
    functionDepth: 2
    functionLinenumber: 803
    functionLinenumberEnd: 811
    functionName: stream_putd
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - stream_putq
    linkageType: ''
    returnType: int
    signature: int stream_putd(struct stream *s, double d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:815,1
    - Dst: PUT_AT_VALID
      Src: /src/frr/lib/stream.c:817,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:818,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - s
    - putp
    - c
    argTypes:
    - struct stream*
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 813
    functionDepth: 1
    functionLinenumber: 813
    functionLinenumberEnd: 825
    functionName: stream_putc_at
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 17
    functionsReached:
    - STREAM_VERIFY_SANE
    - PUT_AT_VALID
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putc_at(struct stream *s, size_t putp, uint8_t c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:829,1
    - Dst: PUT_AT_VALID
      Src: /src/frr/lib/stream.c:831,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - s
    - putp
    - w
    argTypes:
    - struct stream*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 827
    functionDepth: 1
    functionLinenumber: 827
    functionLinenumberEnd: 840
    functionName: stream_putw_at
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 89
    functionsReached:
    - STREAM_VERIFY_SANE
    - PUT_AT_VALID
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putw_at(struct stream *s, size_t putp, uint16_t w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:844,1
    - Dst: PUT_AT_VALID
      Src: /src/frr/lib/stream.c:846,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - s
    - putp
    - l
    argTypes:
    - struct stream*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 855
    functionName: stream_put3_at
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - STREAM_VERIFY_SANE
    - PUT_AT_VALID
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_put3_at(struct stream *s, size_t putp, uint32_t l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:859,1
    - Dst: PUT_AT_VALID
      Src: /src/frr/lib/stream.c:861,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - s
    - putp
    - l
    argTypes:
    - struct stream*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 871
    functionName: stream_putl_at
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 10
    functionsReached:
    - STREAM_VERIFY_SANE
    - PUT_AT_VALID
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putl_at(struct stream *s, size_t putp, uint32_t l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:875,1
    - Dst: PUT_AT_VALID
      Src: /src/frr/lib/stream.c:877,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - s
    - putp
    - q
    argTypes:
    - struct stream*
    - size_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 873
    functionDepth: 1
    functionLinenumber: 873
    functionLinenumberEnd: 891
    functionName: stream_putq_at
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - STREAM_VERIFY_SANE
    - PUT_AT_VALID
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_putq_at(struct stream *s, size_t putp, uint64_t q)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:896,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:898,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:899,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:902,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - l
    argTypes:
    - struct stream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 894
    functionDepth: 1
    functionLinenumber: 894
    functionLinenumberEnd: 906
    functionName: stream_put_ipv4
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 19
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_put_ipv4(struct stream *s, uint32_t l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:911,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:913,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:914,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:918,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - addr
    argTypes:
    - struct stream*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 922
    functionName: stream_put_in_addr
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 17
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: int stream_put_in_addr(struct stream *s, const struct in_addr *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/lib/stream.c:926,1
    - Dst: stream_put_in_addr
      Src: /src/frr/lib/stream.c:930,1
    - Dst: stream_write
      Src: /src/frr/lib/stream.c:933,1
    - Dst: flog_err
      Src: /src/frr/lib/stream.c:936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - s
    - ip
    argTypes:
    - struct stream*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 924
    functionDepth: 2
    functionLinenumber: 924
    functionLinenumberEnd: 943
    functionName: stream_put_ipaddr
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 2
    functionsReached:
    - stream_write
    - stream_put_in_addr
    - flog_err
    - stream_putw
    linkageType: ''
    returnType: bool
    signature: bool stream_put_ipaddr(struct stream *s, struct ipaddr *ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:949,1
    - Dst: PUT_AT_VALID
      Src: /src/frr/lib/stream.c:951,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:952,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:956,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - s
    - putp
    - addr
    argTypes:
    - struct stream*
    - size_t
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 946
    functionDepth: 1
    functionLinenumber: 946
    functionLinenumberEnd: 958
    functionName: stream_put_in_addr_at
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - PUT_AT_VALID
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: "int stream_put_in_addr_at(struct stream *s, size_t putp,\n\t\t\t  const
      struct in_addr *addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:964,1
    - Dst: PUT_AT_VALID
      Src: /src/frr/lib/stream.c:966,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:967,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:971,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - s
    - putp
    - addr
    argTypes:
    - struct stream*
    - size_t
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 961
    functionDepth: 1
    functionLinenumber: 961
    functionLinenumberEnd: 973
    functionName: stream_put_in6_addr_at
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - memcpy
    - STREAM_VERIFY_SANE
    - PUT_AT_VALID
    - STREAM_BOUND_WARN
    linkageType: ''
    returnType: int
    signature: "int stream_put_in6_addr_at(struct stream *s, size_t putp,\n\t\t\t
      \  const struct in6_addr *addr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:982,1
    - Dst: PSIZE
      Src: /src/frr/lib/stream.c:984,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:991,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:992,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:1004,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - s
    - p
    - addpath_capable
    - addpath_tx_id
    argTypes:
    - struct stream*
    - struct prefix*
    - bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 1008
    functionName: stream_put_prefix_addpath
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 6
    functionsReached:
    - STREAM_VERIFY_SANE
    - PSIZE
    - STREAM_BOUND_WARN
    - STREAM_WRITEABLE
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int stream_put_prefix_addpath(struct stream *s, const struct prefix
      *p,\n\t\t\t      bool addpath_capable, uint32_t addpath_tx_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_put_prefix_addpath
      Src: /src/frr/lib/stream.c:1012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - p
    argTypes:
    - struct stream*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1010
    functionDepth: 2
    functionLinenumber: 1010
    functionLinenumberEnd: 1013
    functionName: stream_put_prefix
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 5
    functionsReached:
    - stream_put_prefix_addpath
    linkageType: ''
    returnType: int
    signature: int stream_put_prefix(struct stream *s, const struct prefix *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1024,1
    - Dst: PSIZE
      Src: /src/frr/lib/stream.c:1026,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:1029,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:1030,1
    - Dst: stream_putc
      Src: /src/frr/lib/stream.c:1041,1
    - Dst: stream_putc
      Src: /src/frr/lib/stream.c:1042,1
    - Dst: stream_putc
      Src: /src/frr/lib/stream.c:1043,1
    - Dst: stream_putc
      Src: /src/frr/lib/stream.c:1044,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:1045,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 5
    argNames:
    - s
    - p
    - label
    - addpath_capable
    - addpath_tx_id
    argTypes:
    - struct stream*
    - struct prefix*
    - mpls_label_t*
    - bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1016
    functionDepth: 2
    functionLinenumber: 1016
    functionLinenumberEnd: 1049
    functionName: stream_put_labeled_prefix
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - STREAM_VERIFY_SANE
    - PSIZE
    - STREAM_BOUND_WARN
    - STREAM_WRITEABLE
    - stream_putc
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int stream_put_labeled_prefix(struct stream *s, const struct prefix
      *p,\n\t\t\t      mpls_label_t *label, bool addpath_capable,\n\t\t\t      uint32_t
      addpath_tx_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1056,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:1058,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:1059,1
    - Dst: readn
      Src: /src/frr/lib/stream.c:1063,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - s
    - fd
    - size
    argTypes:
    - struct stream*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1052
    functionDepth: 1
    functionLinenumber: 1052
    functionLinenumberEnd: 1069
    functionName: stream_read
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_WRITEABLE
    - STREAM_BOUND_WARN
    - readn
    linkageType: ''
    returnType: int
    signature: int stream_read(struct stream *s, int fd, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1075,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:1077,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:1078,1
    - Dst: read
      Src: /src/frr/lib/stream.c:1084,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/stream.c:1090,1
    - Dst: flog_err
      Src: /src/frr/lib/stream.c:1092,1
    - Dst: safe_strerror
      Src: /src/frr/lib/stream.c:1093,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - s
    - fd
    - size
    argTypes:
    - struct stream*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1071
    functionDepth: 1
    functionLinenumber: 1071
    functionLinenumberEnd: 1095
    functionName: stream_read_try
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 4
    functionsReached:
    - read
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    - STREAM_WRITEABLE
    - ERRNO_IO_RETRY
    - flog_err
    - safe_strerror
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t stream_read_try(struct stream *s, int fd, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1105,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:1107,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:1108,1
    - Dst: recvfrom
      Src: /src/frr/lib/stream.c:1114,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/lib/stream.c:1120,1
    - Dst: flog_err
      Src: /src/frr/lib/stream.c:1122,1
    - Dst: safe_strerror
      Src: /src/frr/lib/stream.c:1123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - s
    - fd
    - size
    - flags
    - from
    - fromlen
    argTypes:
    - struct stream*
    - int
    - size_t
    - int
    - struct sockaddr*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1100
    functionDepth: 1
    functionLinenumber: 1100
    functionLinenumberEnd: 1125
    functionName: stream_recvfrom
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    - STREAM_WRITEABLE
    - ERRNO_IO_RETRY
    - flog_err
    - safe_strerror
    - recvfrom
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t stream_recvfrom(struct stream *s, int fd, size_t size, int
      flags,\n\t\t\tstruct sockaddr *from, socklen_t *fromlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1138,1
    - Dst: assert
      Src: /src/frr/lib/stream.c:1139,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:1141,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:1142,1
    - Dst: recvmsg
      Src: /src/frr/lib/stream.c:1153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - s
    - fd
    - msgh
    - flags
    - size
    argTypes:
    - struct stream*
    - int
    - struct msghdr*
    - int
    - size_t
    assertStmts:
    - condition: (msgh->msg_iovlen > 0)
      pos:
        line_end: 1138
        line_start: 1138
        source_file: /src/frr/lib/stream.c
    constantsTouched: []
    func_position:
      end: 1159
      start: 1132
    functionDepth: 1
    functionLinenumber: 1132
    functionLinenumberEnd: 1159
    functionName: stream_recvmsg
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 2
    functionsReached:
    - assert
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    - STREAM_WRITEABLE
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t stream_recvmsg(struct stream *s, int fd, struct msghdr *msgh,
      int flags,\n\t\t       size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_SIZE
      Src: /src/frr/lib/stream.c:1165,1
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1167,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/lib/stream.c:1169,1
    - Dst: STREAM_BOUND_WARN
      Src: /src/frr/lib/stream.c:1170,1
    - Dst: memcpy
      Src: /src/frr/lib/stream.c:1174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - s
    - ptr
    - size
    argTypes:
    - struct stream*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1162
    functionDepth: 1
    functionLinenumber: 1162
    functionLinenumberEnd: 1178
    functionName: stream_write
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 17
    functionsReached:
    - CHECK_SIZE
    - STREAM_VERIFY_SANE
    - STREAM_BOUND_WARN
    - STREAM_WRITEABLE
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: size_t stream_write(struct stream *s, const void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1189
    functionName: stream_pnt
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 44
    functionsReached:
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *stream_pnt(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1192
    functionDepth: 1
    functionLinenumber: 1192
    functionLinenumberEnd: 1197
    functionName: stream_empty
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 4
    functionsReached:
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: int
    signature: int stream_empty(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1205
    functionName: stream_reset
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 60
    functionsReached:
    - STREAM_VERIFY_SANE
    linkageType: ''
    returnType: void
    signature: void stream_reset(struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_VERIFY_SANE
      Src: /src/frr/lib/stream.c:1212,1
    - Dst: write
      Src: /src/frr/lib/stream.c:1214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s
    - fd
    argTypes:
    - struct stream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1208
    functionDepth: 1
    functionLinenumber: 1208
    functionLinenumberEnd: 1217
    functionName: stream_flush
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - STREAM_VERIFY_SANE
    - write
    linkageType: ''
    returnType: int
    signature: int stream_flush(struct stream *s, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_hexdump
      Src: /src/frr/lib/stream.c:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1219
    functionDepth: 2
    functionLinenumber: 1219
    functionLinenumberEnd: 1222
    functionName: stream_hexdump
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - zlog_hexdump
    linkageType: ''
    returnType: void
    signature: void stream_hexdump(const struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC::XMALLOC
      Src: /src/frr/lib/stream.c:1230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1233
    functionName: stream_fifo_new
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 7
    functionsReached:
    - XMALLOC::XMALLOC
    linkageType: ''
    returnType: struct stream_fifo
    signature: struct stream_fifo *stream_fifo_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/stream.c:1237,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/stream.c:1238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1235
    functionDepth: 0
    functionLinenumber: 1235
    functionLinenumberEnd: 1239
    functionName: stream_fifo_init
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 4
    functionsReached:
    - pthread_mutex_init
    - memset
    linkageType: ''
    returnType: void
    signature: void stream_fifo_init(struct stream_fifo *fifo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/stream.c:1256,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/stream.c:1258,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/stream.c:1259,1
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/stream.c:1261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fifo
    - s
    argTypes:
    - struct stream_fifo*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1242
    functionDepth: 1
    functionLinenumber: 1242
    functionLinenumberEnd: 1264
    functionName: stream_fifo_push
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 16
    functionsReached:
    - atomic_fetch_add_explicit
    - atomic_store_explicit
    - atomic_load_explicit
    linkageType: ''
    returnType: void
    signature: void stream_fifo_push(struct stream_fifo *fifo, struct stream *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/stream.c:1268,1
    - Dst: stream_fifo_push
      Src: /src/frr/lib/stream.c:1269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fifo
    - s
    argTypes:
    - struct stream_fifo*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1266
    functionDepth: 2
    functionLinenumber: 1266
    functionLinenumberEnd: 1271
    functionName: stream_fifo_push_safe
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 3
    functionsReached:
    - stream_fifo_push
    - frr_with_mutex
    linkageType: ''
    returnType: void
    signature: void stream_fifo_push_safe(struct stream_fifo *fifo, struct stream
      *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/lib/stream.c:1286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1274
    functionDepth: 1
    functionLinenumber: 1274
    functionLinenumberEnd: 1294
    functionName: stream_fifo_pop
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 16
    functionsReached:
    - atomic_fetch_sub_explicit
    linkageType: ''
    returnType: struct stream
    signature: struct stream *stream_fifo_pop(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/stream.c:1300,1
    - Dst: stream_fifo_pop
      Src: /src/frr/lib/stream.c:1301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1296
    functionDepth: 2
    functionLinenumber: 1296
    functionLinenumberEnd: 1305
    functionName: stream_fifo_pop_safe
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 1
    functionsReached:
    - stream_fifo_pop
    - frr_with_mutex
    linkageType: ''
    returnType: struct stream
    signature: struct stream *stream_fifo_pop_safe(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1307
    functionDepth: 0
    functionLinenumber: 1307
    functionLinenumberEnd: 1310
    functionName: stream_fifo_head
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: struct stream
    signature: struct stream *stream_fifo_head(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/stream.c:1316,1
    - Dst: stream_fifo_head
      Src: /src/frr/lib/stream.c:1317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1321
    functionName: stream_fifo_head_safe
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - stream_fifo_head
    - frr_with_mutex
    linkageType: ''
    returnType: struct stream
    signature: struct stream *stream_fifo_head_safe(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/lib/stream.c:1330,1
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/stream.c:1333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1334
    functionName: stream_fifo_clean
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 5
    functionsReached:
    - atomic_store_explicit
    - stream_free
    linkageType: ''
    returnType: void
    signature: void stream_fifo_clean(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/stream.c:1338,1
    - Dst: stream_fifo_clean
      Src: /src/frr/lib/stream.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1336
    functionDepth: 2
    functionLinenumber: 1336
    functionLinenumberEnd: 1341
    functionName: stream_fifo_clean_safe
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 0
    functionsReached:
    - stream_fifo_clean
    - frr_with_mutex
    linkageType: ''
    returnType: void
    signature: void stream_fifo_clean_safe(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/stream.c:1345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1343
    functionDepth: 1
    functionLinenumber: 1343
    functionLinenumberEnd: 1346
    functionName: stream_fifo_count_safe
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 2
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: size_t
    signature: size_t stream_fifo_count_safe(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_clean
      Src: /src/frr/lib/stream.c:1350,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/stream.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1348
    functionDepth: 2
    functionLinenumber: 1348
    functionLinenumberEnd: 1352
    functionName: stream_fifo_deinit
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 3
    functionsReached:
    - stream_fifo_clean
    - pthread_mutex_destroy
    linkageType: ''
    returnType: void
    signature: void stream_fifo_deinit(struct stream_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_deinit
      Src: /src/frr/lib/stream.c:1356,1
    - Dst: XFREE
      Src: /src/frr/lib/stream.c:1357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct stream_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1354
    functionDepth: 3
    functionLinenumber: 1354
    functionLinenumberEnd: 1358
    functionName: stream_fifo_free
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 7
    functionsReached:
    - stream_fifo_deinit
    - XFREE
    linkageType: ''
    returnType: void
    signature: void stream_fifo_free(struct stream_fifo *fifo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/stream.c:1362,1
    - Dst: stream_reset
      Src: /src/frr/lib/stream.c:1366,1
    - Dst: memmove
      Src: /src/frr/lib/stream.c:1371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1360
    functionDepth: 2
    functionLinenumber: 1360
    functionLinenumberEnd: 1374
    functionName: stream_pulldown
    functionSourceFile: /src/frr/lib/stream.c
    functionUses: 2
    functionsReached:
    - stream_reset
    - STREAM_READABLE
    - memmove
    linkageType: ''
    returnType: void
    signature: void stream_pulldown(struct stream *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/memory.c:39,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/memory.c:42,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/memory.c:45,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/memory.c:50,1
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/memory.c:52,1
    - Dst: atomic_store_explicit
      Src: /src/frr/lib/memory.c:55,1
    - Dst: malloc_usable_size
      Src: /src/frr/lib/memory.c:59,1
    - Dst: atomic_fetch_add_explicit
      Src: /src/frr/lib/memory.c:61,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/memory.c:63,1
    - Dst: atomic_compare_exchange_weak_explicit
      Src: /src/frr/lib/memory.c:66,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - mt
    - size
    - ptr
    argTypes:
    - struct memtype*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 71
    functionName: mt_count_alloc
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - atomic_compare_exchange_weak_explicit
    - atomic_store_explicit
    - atomic_fetch_add_explicit
    - atomic_exchange_explicit
    - atomic_load_explicit
    - malloc_usable_size
    linkageType: ''
    returnType: void
    signature: void mt_count_alloc(struct memtype *mt, size_t size, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/memory.c:75,1
    - Dst: assert
      Src: /src/frr/lib/memory.c:77,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/lib/memory.c:78,1
    - Dst: malloc_usable_size
      Src: /src/frr/lib/memory.c:81,1
    - Dst: atomic_fetch_sub_explicit
      Src: /src/frr/lib/memory.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - mt
    - ptr
    argTypes:
    - struct memtype*
    - void*
    assertStmts:
    - condition: (mt->n_alloc)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/frr/lib/memory.c
    constantsTouched: []
    func_position:
      end: 85
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 85
    functionName: mt_count_free
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - malloc_usable_size
    - atomic_fetch_sub_explicit
    - assert
    - frrtrace
    linkageType: ''
    returnType: void
    signature: void mt_count_free(struct memtype *mt, void *ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frrtrace
      Src: /src/frr/lib/memory.c:89,1
    - Dst: __builtin_expect
      Src: /src/frr/lib/memory.c:91,1
    - Dst: memory_oom
      Src: /src/frr/lib/memory.c:94,1
    - Dst: mt_count_alloc
      Src: /src/frr/lib/memory.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - mt
    - ptr
    - size
    argTypes:
    - struct memtype*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: mt_checkalloc
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - memory_oom
    - __builtin_expect
    - mt_count_alloc
    - frrtrace
    linkageType: ''
    returnType: void
    signature: void *mt_checkalloc(struct memtype *mt, void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mt_checkalloc
      Src: /src/frr/lib/memory.c:104,1
    - Dst: malloc
      Src: /src/frr/lib/memory.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mt
    - size
    argTypes:
    - struct memtype*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: qmalloc
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - malloc
    - mt_checkalloc
    linkageType: ''
    returnType: void
    signature: void *qmalloc(struct memtype *mt, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mt_checkalloc
      Src: /src/frr/lib/memory.c:109,1
    - Dst: calloc
      Src: /src/frr/lib/memory.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mt
    - size
    argTypes:
    - struct memtype*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 3
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: qcalloc
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - calloc
    - mt_checkalloc
    linkageType: ''
    returnType: void
    signature: void *qcalloc(struct memtype *mt, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mt_count_free
      Src: /src/frr/lib/memory.c:115,1
    - Dst: mt_checkalloc
      Src: /src/frr/lib/memory.c:116,1
    - Dst: realloc
      Src: /src/frr/lib/memory.c:116,1
    - Dst: malloc
      Src: /src/frr/lib/memory.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - mt
    - ptr
    - size
    argTypes:
    - struct memtype*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: qrealloc
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - malloc
    - realloc
    - mt_checkalloc
    - mt_count_free
    linkageType: ''
    returnType: void
    signature: void *qrealloc(struct memtype *mt, void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mt_checkalloc
      Src: /src/frr/lib/memory.c:121,1
    - Dst: strdup
      Src: /src/frr/lib/memory.c:121,1
    - Dst: strlen
      Src: /src/frr/lib/memory.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mt
    - str
    argTypes:
    - struct memtype*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: qstrdup
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - strdup
    - strlen
    - mt_checkalloc
    linkageType: ''
    returnType: void
    signature: void *qstrdup(struct memtype *mt, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mt_count_free
      Src: /src/frr/lib/memory.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - mt
    - ptr
    argTypes:
    - struct memtype*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: qcountfree
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - mt_count_free
    linkageType: ''
    returnType: void
    signature: void qcountfree(struct memtype *mt, void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mt_count_free
      Src: /src/frr/lib/memory.c:133,1
    - Dst: free
      Src: /src/frr/lib/memory.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - mt
    - ptr
    argTypes:
    - struct memtype*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: qfree
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 1
    functionsReached:
    - free
    - mt_count_free
    linkageType: ''
    returnType: void
    signature: void qfree(struct memtype *mt, void *ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: func
      Src: /src/frr/lib/memory.c:144,1
    - Dst: func
      Src: /src/frr/lib/memory.c:147,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - func
    - arg
    argTypes:
    - qmem_walk_fn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: qmem_walk
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - func
    linkageType: ''
    returnType: int
    signature: int qmem_walk(qmem_walk_fn *func, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/lib/memory.c:164,1
    - Dst: snprintf
      Src: /src/frr/lib/memory.c:172,1
    - Dst: fprintf
      Src: /src/frr/lib/memory.c:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - arg
    - mg
    - mt
    argTypes:
    - void*
    - struct memgroup*
    - struct memtype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 178
    functionName: qmem_exit_walker
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 0
    functionsReached:
    - fprintf
    - snprintf
    linkageType: ''
    returnType: int
    signature: int qmem_exit_walker(void *arg, struct memgroup *mg, struct memtype
      *mt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qmem_walk
      Src: /src/frr/lib/memory.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fp
    - prefix
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 185
    functionName: log_memstats
    functionSourceFile: /src/frr/lib/memory.c
    functionUses: 8
    functionsReached:
    - qmem_walk
    linkageType: ''
    returnType: int
    signature: int log_memstats(FILE *fp, const char *prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: debugf
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 107
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debugf(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - type
    - args
    - kwds
    argTypes:
    - PyTypeObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: refuse_new
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - PyErr_SetString
    linkageType: ''
    returnType: PyObject
    signature: PyObject *refuse_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - doc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: member
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: member(name, type, doc)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct elfreloc*
    - struct elfreloc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 254
    functionName: elfreloc_cmp
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int elfreloc_cmp(const struct elfreloc *a, const struct elfreloc *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/lib/elf_py.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reloc
    argTypes:
    - struct elfreloc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 260
    functionName: elfreloc_hash
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t elfreloc_hash(const struct elfreloc *reloc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elfrelocs_find
      Src: /src/frr/lib/elf_py.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - head
    - offset
    argTypes:
    - struct elfrelocs_head*
    - GElf_Addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 270
    functionName: elfrelocs_get
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elfrelocs_find
    linkageType: ''
    returnType: struct elfreloc
    signature: "struct elfreloc *elfrelocs_get(struct elfrelocs_head *head,\n\t\t\t\t
      \     GElf_Addr offset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:277,1
    - Dst: elf_find_addr
      Src: /src/frr/lib/elf_py.c:288,1
    - Dst: elffile_secbyidx
      Src: /src/frr/lib/elf_py.c:291,1
    - Dst: elffile_secbyidx
      Src: /src/frr/lib/elf_py.c:293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 294
    functionName: elfreloc_getsection
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_find_addr
    - elffile_secbyidx
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfreloc_getsection(PyObject *self, PyObject *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Py_BuildValue
      Src: /src/frr/lib/elf_py.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - obj
    - closure
    argTypes:
    - PyObject*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 301
    functionName: elfreloc_getaddend
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - Py_BuildValue
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfreloc_getaddend(PyObject *obj, void *closure)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyUnicode_FromFormat
      Src: /src/frr/lib/elf_py.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 312
    functionName: elfreloc_repr
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - PyUnicode_FromFormat
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfreloc_repr(PyObject *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 319
    functionName: elfreloc_free
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void elfreloc_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - doc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 354
    functionName: member
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: member(name, type, doc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Py_BuildValue
      Src: /src/frr/lib/elf_py.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - self
    - closure
    argTypes:
    - PyObject*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: elfsect_getaddr
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - Py_BuildValue
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfsect_getaddr(PyObject *self, void *closure)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:386,1
    - Dst: elfrelocs_get
      Src: /src/frr/lib/elf_py.c:389,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/elf_py.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 396
    functionName: elfsect_getreloc
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elfrelocs_get
    - Py_INCREF
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfsect_getreloc(PyObject *self, PyObject *args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PySlice_Check
      Src: /src/frr/lib/elf_py.c:413,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:414,1
    - Dst: PyLong_Check
      Src: /src/frr/lib/elf_py.c:419,1
    - Dst: PySlice_GetIndicesEx
      Src: /src/frr/lib/elf_py.c:420,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:425,1
    - Dst: PyErr_Format
      Src: /src/frr/lib/elf_py.c:430,1
    - Dst: PyLong_Check
      Src: /src/frr/lib/elf_py.c:440,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:441,1
    - Dst: PyLong_AsUnsignedLongLong
      Src: /src/frr/lib/elf_py.c:445,1
    - Dst: PyErr_Format
      Src: /src/frr/lib/elf_py.c:451,1
    - Dst: strnlen
      Src: /src/frr/lib/elf_py.c:457,1
    - Dst: Py_BuildValue
      Src: /src/frr/lib/elf_py.c:462,1
    - Dst: Py_BuildValue
      Src: /src/frr/lib/elf_py.c:464,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - self
    - key
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 466
    functionName: elfsect_subscript
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - PySlice_GetIndicesEx
    - PyLong_Check
    - PyErr_SetString
    - PyLong_AsUnsignedLongLong
    - Py_BuildValue
    - PySlice_Check
    - PyErr_Format
    - strnlen
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfsect_subscript(PyObject *self, PyObject *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 477
    functionName: elfsect_free
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void elfsect_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyUnicode_FromFormat
      Src: /src/frr/lib/elf_py.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 484
    functionName: elfsect_repr
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - PyUnicode_FromFormat
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfsect_repr(PyObject *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elf_getscn
      Src: /src/frr/lib/elf_py.c:504,1
    - Dst: gelf_getshdr
      Src: /src/frr/lib/elf_py.c:505,1
    - Dst: elf_getdata
      Src: /src/frr/lib/elf_py.c:506,1
    - Dst: elf_getdata
      Src: /src/frr/lib/elf_py.c:507,1
    - Dst: tp_alloc
      Src: /src/frr/lib/elf_py.c:516,1
    - Dst: gelf_getrel
      Src: /src/frr/lib/elf_py.c:523,1
    - Dst: gelf_getrela
      Src: /src/frr/lib/elf_py.c:530,1
    - Dst: GELF_R_SYM
      Src: /src/frr/lib/elf_py.c:537,1
    - Dst: gelf_getsym
      Src: /src/frr/lib/elf_py.c:538,1
    - Dst: elf_strptr
      Src: /src/frr/lib/elf_py.c:540,1
    - Dst: GELF_ST_TYPE
      Src: /src/frr/lib/elf_py.c:542,1
    - Dst: debugf
      Src: /src/frr/lib/elf_py.c:553,1
    - Dst: elfrelocs_add
      Src: /src/frr/lib/elf_py.c:557,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - w
    - rel
    - relhdr
    argTypes:
    - struct elfsect*
    - Elf_Scn*
    - GElf_Shdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 559
    functionName: elfsect_add_relocations
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_getdata
    - gelf_getsym
    - debugf
    - elfrelocs_add
    - gelf_getrela
    - GELF_ST_TYPE
    - gelf_getshdr
    - tp_alloc
    - elf_getscn
    - gelf_getrel
    - GELF_R_SYM
    - elf_strptr
    linkageType: ''
    returnType: void
    signature: "void elfsect_add_relocations(struct elfsect *w, Elf_Scn *rel,\n\t\t\t\t
      \   GElf_Shdr *relhdr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: tp_alloc
      Src: /src/frr/lib/elf_py.c:571,1
    - Dst: gelf_getshdr
      Src: /src/frr/lib/elf_py.c:578,1
    - Dst: elfrelocs_init
      Src: /src/frr/lib/elf_py.c:581,1
    - Dst: elf_getscn
      Src: /src/frr/lib/elf_py.c:584,1
    - Dst: gelf_getshdr
      Src: /src/frr/lib/elf_py.c:585,1
    - Dst: elfsect_add_relocations
      Src: /src/frr/lib/elf_py.c:591,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - ef
    - scn
    - idx
    - name
    argTypes:
    - struct elffile*
    - Elf_Scn*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 595
    functionName: elfsect_wrap
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elfsect_add_relocations
    - gelf_getshdr
    - tp_alloc
    - elf_getscn
    - elfrelocs_init
    linkageType: ''
    returnType: PyObject
    signature: "PyObject *elfsect_wrap(struct elffile *ef, Elf_Scn *scn, size_t idx,\n\t\t\t
      \     const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: elf_getscn
      Src: /src/frr/lib/elf_py.c:604,1
    - Dst: gelf_getshdr
      Src: /src/frr/lib/elf_py.c:605,1
    - Dst: elf_strptr
      Src: /src/frr/lib/elf_py.c:607,1
    - Dst: strcmp
      Src: /src/frr/lib/elf_py.c:609,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ef
    - name
    - idx
    argTypes:
    - struct elffile*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 616
    functionName: elf_find_section
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_strptr
    - gelf_getshdr
    - strcmp
    - elf_getscn
    linkageType: ''
    returnType: Elf_Scn
    signature: "Elf_Scn *elf_find_section(struct elffile *ef, const char *name,\n\t\tsize_t
      *idx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elf_getscn
      Src: /src/frr/lib/elf_py.c:623,1
    - Dst: gelf_getshdr
      Src: /src/frr/lib/elf_py.c:624,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - ef
    - addr
    - idx
    argTypes:
    - struct elffile*
    - uint64_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 638
    functionName: elf_find_addr
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 1
    functionsReached:
    - gelf_getshdr
    - elf_getscn
    linkageType: ''
    returnType: Elf_Scn
    signature: Elf_Scn *elf_find_addr(struct elffile *ef, uint64_t addr, size_t *idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - doc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 661
    functionName: member
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: member(name, type, doc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: elf_getscn
      Src: /src/frr/lib/elf_py.c:684,1
    - Dst: gelf_getshdr
      Src: /src/frr/lib/elf_py.c:689,1
    - Dst: elf_strptr
      Src: /src/frr/lib/elf_py.c:691,1
    - Dst: elfsect_wrap
      Src: /src/frr/lib/elf_py.c:692,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/elf_py.c:696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - w
    - scn
    - idx
    argTypes:
    - struct elffile*
    - Elf_Scn*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 678
    functionDepth: 2
    functionLinenumber: 678
    functionLinenumberEnd: 698
    functionName: elffile_secbyidx
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 1
    functionsReached:
    - gelf_getshdr
    - elf_strptr
    - elfsect_wrap
    - elf_getscn
    - Py_INCREF
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_secbyidx(struct elffile *w, Elf_Scn *scn, size_t
      idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:707,1
    - Dst: elf_find_section
      Src: /src/frr/lib/elf_py.c:710,1
    - Dst: elffile_secbyidx
      Src: /src/frr/lib/elf_py.c:711,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 700
    functionDepth: 3
    functionLinenumber: 700
    functionLinenumberEnd: 712
    functionName: elffile_get_section
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_find_section
    - elffile_secbyidx
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_get_section(PyObject *self, PyObject *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:721,1
    - Dst: elf_find_addr
      Src: /src/frr/lib/elf_py.c:724,1
    - Dst: elffile_secbyidx
      Src: /src/frr/lib/elf_py.c:725,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 714
    functionDepth: 3
    functionLinenumber: 714
    functionLinenumberEnd: 726
    functionName: elffile_get_section_addr
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_find_addr
    - elffile_secbyidx
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_get_section_addr(PyObject *self, PyObject *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:733,1
    - Dst: elffile_secbyidx
      Src: /src/frr/lib/elf_py.c:736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 728
    functionDepth: 3
    functionLinenumber: 728
    functionLinenumberEnd: 737
    functionName: elffile_get_section_idx
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elffile_secbyidx
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_get_section_idx(PyObject *self, PyObject *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:746,1
    - Dst: gelf_getsym
      Src: /src/frr/lib/elf_py.c:750,1
    - Dst: elf_strptr
      Src: /src/frr/lib/elf_py.c:753,1
    - Dst: strcmp
      Src: /src/frr/lib/elf_py.c:754,1
    - Dst: elf_getscn
      Src: /src/frr/lib/elf_py.c:758,1
    - Dst: elffile_secbyidx
      Src: /src/frr/lib/elf_py.c:761,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/elf_py.c:764,1
    - Dst: Py_BuildValue
      Src: /src/frr/lib/elf_py.c:766,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 739
    functionDepth: 3
    functionLinenumber: 739
    functionLinenumberEnd: 770
    functionName: elffile_get_symbol
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - gelf_getsym
    - strcmp
    - PyArg_ParseTuple
    - Py_BuildValue
    - elf_strptr
    - elf_getscn
    - Py_INCREF
    - elffile_secbyidx
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_get_symbol(PyObject *self, PyObject *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:779,1
    - Dst: elfrelocs_get
      Src: /src/frr/lib/elf_py.c:782,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/elf_py.c:787,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 789
    functionName: elffile_getreloc
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elfrelocs_get
    - Py_INCREF
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_getreloc(PyObject *self, PyObject *args)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:800,1
    - Dst: strlen
      Src: /src/frr/lib/elf_py.c:803,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:804,1
    - Dst: gelf_getphdr
      Src: /src/frr/lib/elf_py.c:814,1
    - Dst: elf_getdata_rawchunk
      Src: /src/frr/lib/elf_py.c:821,1
    - Dst: gelf_getnote
      Src: /src/frr/lib/elf_py.c:828,1
    - Dst: strcmp
      Src: /src/frr/lib/elf_py.c:835,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/frr/lib/elf_py.c:842,1
    - Dst: PyLong_FromUnsignedLongLong
      Src: /src/frr/lib/elf_py.c:844,1
    - Dst: PySlice_New
      Src: /src/frr/lib/elf_py.c:846,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 791
    functionDepth: 0
    functionLinenumber: 791
    functionLinenumberEnd: 851
    functionName: elffile_find_note
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_getdata_rawchunk
    - strlen
    - PyErr_SetString
    - PyLong_FromUnsignedLongLong
    - strcmp
    - PyArg_ParseTuple
    - gelf_getphdr
    - PySlice_New
    - gelf_getnote
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_find_note(PyObject *self, PyObject *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gelf_getphdr
      Src: /src/frr/lib/elf_py.c:860,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - w
    - virt
    - offs
    argTypes:
    - struct elffile*
    - GElf_Addr
    - GElf_Addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 854
    functionDepth: 0
    functionLinenumber: 854
    functionLinenumberEnd: 877
    functionName: elffile_virt2file
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - gelf_getphdr
    linkageType: ''
    returnType: bool
    signature: "bool elffile_virt2file(struct elffile *w, GElf_Addr virt,\n\t\t\t
      \     GElf_Addr *offs)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: PySlice_Check
      Src: /src/frr/lib/elf_py.c:887,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:888,1
    - Dst: PyLong_Check
      Src: /src/frr/lib/elf_py.c:895,1
    - Dst: PyLong_AsSsize_t
      Src: /src/frr/lib/elf_py.c:896,1
    - Dst: PyErr_Occurred
      Src: /src/frr/lib/elf_py.c:897,1
    - Dst: PyLong_AsSsize_t
      Src: /src/frr/lib/elf_py.c:900,1
    - Dst: PyErr_Occurred
      Src: /src/frr/lib/elf_py.c:901,1
    - Dst: PyLong_AsSsize_t
      Src: /src/frr/lib/elf_py.c:905,1
    - Dst: PyErr_Occurred
      Src: /src/frr/lib/elf_py.c:906,1
    - Dst: PyLong_Check
      Src: /src/frr/lib/elf_py.c:911,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:912,1
    - Dst: PyLong_AsUnsignedLongLong
      Src: /src/frr/lib/elf_py.c:917,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:920,1
    - Dst: gelf_getphdr
      Src: /src/frr/lib/elf_py.c:928,1
    - Dst: PyErr_Format
      Src: /src/frr/lib/elf_py.c:938,1
    - Dst: strlen
      Src: /src/frr/lib/elf_py.c:949,1
    - Dst: Py_BuildValue
      Src: /src/frr/lib/elf_py.c:956,1
    - Dst: Py_BuildValue
      Src: /src/frr/lib/elf_py.c:958,1
    - Dst: PyErr_Format
      Src: /src/frr/lib/elf_py.c:962,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 2
    argNames:
    - self
    - key
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 965
    functionName: elffile_subscript
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - PyLong_Check
    - PyErr_SetString
    - strlen
    - PyLong_AsUnsignedLongLong
    - PyErr_Occurred
    - PyLong_AsSsize_t
    - gelf_getphdr
    - Py_BuildValue
    - PySlice_Check
    - PyErr_Format
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elffile_subscript(PyObject *self, PyObject *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: elf_end
      Src: /src/frr/lib/elf_py.c:990,1
    - Dst: munmap
      Src: /src/frr/lib/elf_py.c:991,1
    - Dst: free
      Src: /src/frr/lib/elf_py.c:992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 986
    functionDepth: 0
    functionLinenumber: 986
    functionLinenumberEnd: 993
    functionName: elffile_free
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_end
    - free
    - munmap
    linkageType: ''
    returnType: void
    signature: void elffile_free(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/frr/lib/elf_py.c:1020,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - data
    - offset
    argTypes:
    - Elf_Data*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1024
    functionName: elfdata_strptr
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - strnlen
    linkageType: ''
    returnType: char
    signature: char *elfdata_strptr(Elf_Data *data, size_t offset)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: tp_alloc
      Src: /src/frr/lib/elf_py.c:1039,1
    - Dst: gelf_getrel
      Src: /src/frr/lib/elf_py.c:1047,1
    - Dst: elffile_virt2file
      Src: /src/frr/lib/elf_py.c:1060,1
    - Dst: elf_getdata_rawchunk
      Src: /src/frr/lib/elf_py.c:1064,1
    - Dst: memcpy
      Src: /src/frr/lib/elf_py.c:1079,1
    - Dst: gelf_getrela
      Src: /src/frr/lib/elf_py.c:1086,1
    - Dst: GELF_R_SYM
      Src: /src/frr/lib/elf_py.c:1089,1
    - Dst: gelf_getsym
      Src: /src/frr/lib/elf_py.c:1090,1
    - Dst: elfdata_strptr
      Src: /src/frr/lib/elf_py.c:1092,1
    - Dst: GELF_ST_TYPE
      Src: /src/frr/lib/elf_py.c:1093,1
    - Dst: debugf
      Src: /src/frr/lib/elf_py.c:1105,1
    - Dst: debugf
      Src: /src/frr/lib/elf_py.c:1110,1
    - Dst: elfrelocs_add
      Src: /src/frr/lib/elf_py.c:1115,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 6
    argNames:
    - w
    - reldata
    - entries
    - symdata
    - strdata
    - typ
    argTypes:
    - struct elffile*
    - Elf_Data*
    - size_t
    - Elf_Data*
    - Elf_Data*
    - Elf_Type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1026
    functionDepth: 1
    functionLinenumber: 1026
    functionLinenumberEnd: 1118
    functionName: elffile_add_dynreloc
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - elf_getdata_rawchunk
    - gelf_getsym
    - debugf
    - elffile_virt2file
    - elfrelocs_add
    - gelf_getrela
    - elfdata_strptr
    - GELF_ST_TYPE
    - tp_alloc
    - gelf_getrel
    - GELF_R_SYM
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void elffile_add_dynreloc(struct elffile *w, Elf_Data *reldata,\n\t\t\t\t
      size_t entries, Elf_Data *symdata,\n\t\t\t\t Elf_Data *strdata, Elf_Type typ)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: tp_alloc
      Src: /src/frr/lib/elf_py.c:1131,1
    - Dst: PyArg_ParseTupleAndKeywords
      Src: /src/frr/lib/elf_py.c:1135,1
    - Dst: strdup
      Src: /src/frr/lib/elf_py.c:1139,1
    - Dst: open
      Src: /src/frr/lib/elf_py.c:1140,1
    - Dst: fstat
      Src: /src/frr/lib/elf_py.c:1141,1
    - Dst: PyErr_SetFromErrnoWithFilename
      Src: /src/frr/lib/elf_py.c:1142,1
    - Dst: close
      Src: /src/frr/lib/elf_py.c:1144,1
    - Dst: mmap
      Src: /src/frr/lib/elf_py.c:1148,1
    - Dst: PyErr_SetFromErrnoWithFilename
      Src: /src/frr/lib/elf_py.c:1150,1
    - Dst: close
      Src: /src/frr/lib/elf_py.c:1151,1
    - Dst: close
      Src: /src/frr/lib/elf_py.c:1154,1
    - Dst: memcmp
      Src: /src/frr/lib/elf_py.c:1157,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:1158,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:1170,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/elf_py.c:1181,1
    - Dst: elf_memory
      Src: /src/frr/lib/elf_py.c:1185,1
    - Dst: gelf_getehdr
      Src: /src/frr/lib/elf_py.c:1188,1
    - Dst: elf_getscn
      Src: /src/frr/lib/elf_py.c:1193,1
    - Dst: gelf_getshdr
      Src: /src/frr/lib/elf_py.c:1194,1
    - Dst: elf_getdata
      Src: /src/frr/lib/elf_py.c:1199,1
    - Dst: elfrelocs_init
      Src: /src/frr/lib/elf_py.c:1205,1
    - Dst: gelf_getphdr
      Src: /src/frr/lib/elf_py.c:1209,1
    - Dst: elf_getdata_rawchunk
      Src: /src/frr/lib/elf_py.c:1214,1
    - Dst: gelf_getdyn
      Src: /src/frr/lib/elf_py.c:1224,1
    - Dst: elffile_virt2file
      Src: /src/frr/lib/elf_py.c:1266,1
    - Dst: elf_getdata_rawchunk
      Src: /src/frr/lib/elf_py.c:1267,1
    - Dst: elffile_virt2file
      Src: /src/frr/lib/elf_py.c:1270,1
    - Dst: elf_getdata_rawchunk
      Src: /src/frr/lib/elf_py.c:1271,1
    - Dst: elffile_virt2file
      Src: /src/frr/lib/elf_py.c:1277,1
    - Dst: debugf
      Src: /src/frr/lib/elf_py.c:1280,1
    - Dst: elf_getdata_rawchunk
      Src: /src/frr/lib/elf_py.c:1283,1
    - Dst: elffile_add_dynreloc
      Src: /src/frr/lib/elf_py.c:1287,1
    - Dst: elffile_virt2file
      Src: /src/frr/lib/elf_py.c:1292,1
    - Dst: debugf
      Src: /src/frr/lib/elf_py.c:1295,1
    - Dst: elf_getdata_rawchunk
      Src: /src/frr/lib/elf_py.c:1298,1
    - Dst: elffile_add_dynreloc
      Src: /src/frr/lib/elf_py.c:1302,1
    - Dst: calloc
      Src: /src/frr/lib/elf_py.c:1308,1
    - Dst: elf_errno
      Src: /src/frr/lib/elf_py.c:1314,1
    - Dst: PyErr_Format
      Src: /src/frr/lib/elf_py.c:1316,1
    - Dst: elf_errmsg
      Src: /src/frr/lib/elf_py.c:1317,1
    - Dst: elf_end
      Src: /src/frr/lib/elf_py.c:1320,1
    - Dst: free
      Src: /src/frr/lib/elf_py.c:1321,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 140
    argCount: 3
    argNames:
    - type
    - args
    - kwds
    argTypes:
    - PyTypeObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1122
    functionDepth: 2
    functionLinenumber: 1122
    functionLinenumberEnd: 1323
    functionName: elffile_load
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - open
    - fstat
    - gelf_getehdr
    - elffile_virt2file
    - memcmp
    - strdup
    - gelf_getphdr
    - PyArg_ParseTupleAndKeywords
    - calloc
    - gelf_getdyn
    - PyErr_SetString
    - PyErr_SetFromErrnoWithFilename
    - gelf_getshdr
    - PyErr_Format
    - elf_errno
    - elf_memory
    - mmap
    - elf_errmsg
    - free
    - tp_alloc
    - elf_getdata_rawchunk
    - elf_getdata
    - debugf
    - elffile_add_dynreloc
    - close
    - elf_getscn
    - elf_end
    - elfrelocs_init
    linkageType: ''
    returnType: PyObject
    signature: "PyObject *elffile_load(PyTypeObject *type, PyObject *args,\n\t\t\t
      \     PyObject *kwds)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyArg_ParseTuple
      Src: /src/frr/lib/elf_py.c:1329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1325
    functionDepth: 0
    functionLinenumber: 1325
    functionLinenumberEnd: 1335
    functionName: elfpy_debug
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - PyArg_ParseTuple
    linkageType: ''
    returnType: PyObject
    signature: PyObject *elfpy_debug(PyObject *self, PyObject *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PyType_Ready
      Src: /src/frr/lib/elf_py.c:1344,1
    - Dst: PyType_Ready
      Src: /src/frr/lib/elf_py.c:1346,1
    - Dst: PyType_Ready
      Src: /src/frr/lib/elf_py.c:1348,1
    - Dst: elf_version
      Src: /src/frr/lib/elf_py.c:1350,1
    - Dst: PyModule_AddFunctions
      Src: /src/frr/lib/elf_py.c:1354,1
    - Dst: PyErr_NewException
      Src: /src/frr/lib/elf_py.c:1359,1
    - Dst: PyModule_AddObject
      Src: /src/frr/lib/elf_py.c:1361,1
    - Dst: PyErr_NewException
      Src: /src/frr/lib/elf_py.c:1362,1
    - Dst: PyModule_AddObject
      Src: /src/frr/lib/elf_py.c:1364,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/elf_py.c:1366,1
    - Dst: PyModule_AddObject
      Src: /src/frr/lib/elf_py.c:1367,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/elf_py.c:1368,1
    - Dst: PyModule_AddObject
      Src: /src/frr/lib/elf_py.c:1369,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/elf_py.c:1370,1
    - Dst: PyModule_AddObject
      Src: /src/frr/lib/elf_py.c:1371,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - pymod
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1342
    functionDepth: 0
    functionLinenumber: 1342
    functionLinenumberEnd: 1373
    functionName: elf_py_init
    functionSourceFile: /src/frr/lib/elf_py.c
    functionUses: 0
    functionsReached:
    - PyModule_AddFunctions
    - PyErr_NewException
    - PyModule_AddObject
    - PyType_Ready
    - elf_version
    - Py_INCREF
    linkageType: ''
    returnType: bool
    signature: bool elf_py_init(PyObject *pymod)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/hook.c:26,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 8
    argNames:
    - hook
    - stackent
    - funcptr
    - arg
    - has_arg
    - module
    - funcname
    - priority
    argTypes:
    - struct hook*
    - struct hookent*
    - void*
    - void*
    - bool
    - struct frrmod_runtime*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 44
    functionName: _hook_register
    functionSourceFile: /src/frr/lib/hook.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void _hook_register(struct hook *hook, struct hookent *stackent, void
      *funcptr,\n\t\t    void *arg, bool has_arg, struct frrmod_runtime *module,\n\t\t
      \   const char *funcname, int priority)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/hook.c:55,1
    - Dst: memset
      Src: /src/frr/lib/hook.c:57,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 4
    argNames:
    - hook
    - funcptr
    - arg
    - has_arg
    argTypes:
    - struct hook*
    - void*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 60
    functionName: _hook_unregister
    functionSourceFile: /src/frr/lib/hook.c
    functionUses: 0
    functionsReached:
    - memset
    - XFREE
    linkageType: ''
    returnType: void
    signature: void _hook_unregister(struct hook *hook, void *funcptr, void *arg,
      bool has_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/agg_table.c:17,1
    - Dst: agg_node_to_rnode
      Src: /src/frr/lib/agg_table.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - delegate
    - table
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: agg_node_create
    functionSourceFile: /src/frr/lib/agg_table.c
    functionUses: 0
    functionsReached:
    - agg_node_to_rnode
    - XCALLOC
    linkageType: ''
    returnType: struct route_node
    signature: "struct route_node *agg_node_create(route_table_delegate_t *delegate,\n\t\t\t\t\t
      \ struct route_table *table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agg_node_from_rnode
      Src: /src/frr/lib/agg_table.c:26,1
    - Dst: XFREE
      Src: /src/frr/lib/agg_table.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - delegate
    - table
    - node
    argTypes:
    - route_table_delegate_t*
    - struct route_table*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 29
    functionName: agg_node_destroy
    functionSourceFile: /src/frr/lib/agg_table.c
    functionUses: 0
    functionsReached:
    - agg_node_from_rnode
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void agg_node_destroy(route_table_delegate_t *delegate,\n\t\t\t     struct
      route_table *table, struct route_node *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/agg_table.c:40,1
    - Dst: route_table_init_with_delegate
      Src: /src/frr/lib/agg_table.c:42,1
    - Dst: route_table_set_info
      Src: /src/frr/lib/agg_table.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: agg_table_init
    functionSourceFile: /src/frr/lib/agg_table.c
    functionUses: 9
    functionsReached:
    - route_table_set_info
    - route_table_init_with_delegate
    - XCALLOC
    linkageType: ''
    returnType: struct agg_table
    signature: struct agg_table *agg_table_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - snode
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: nb_node_check_config_only
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int nb_node_check_config_only(const struct lysc_node *snode, void *arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound.c:99,1
    - Dst: yang_snode_get_path
      Src: /src/frr/lib/northbound.c:100,1
    - Dst: yang_snode_real_parent
      Src: /src/frr/lib/northbound.c:103,1
    - Dst: yang_snode_parent_list
      Src: /src/frr/lib/northbound.c:106,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:111,1
    - Dst: yang_snodes_iterate_subtree
      Src: /src/frr/lib/northbound.c:114,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/northbound.c:118,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:120,1
    - Dst: yang_snode_num_keys
      Src: /src/frr/lib/northbound.c:121,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/northbound.c:122,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:130,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/northbound.c:134,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - snode
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts:
    - condition: (snode->priv == NULL)
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 137
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 137
    functionName: nb_node_new_cb
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - yang_snode_real_parent
    - XCALLOC
    - yang_snode_get_path
    - CHECK_FLAG
    - yang_snode_parent_list
    - yang_snodes_iterate_subtree
    - SET_FLAG
    - yang_snode_num_keys
    - assert
    linkageType: ''
    returnType: int
    signature: int nb_node_new_cb(const struct lysc_node *snode, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/northbound.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - snode
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 150
    functionName: nb_node_del_cb
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: int
    signature: int nb_node_del_cb(const struct lysc_node *snode, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 3
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: nb_nodes_create
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - yang_snodes_iterate
    linkageType: ''
    returnType: void
    signature: void nb_nodes_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: nb_nodes_delete
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - yang_snodes_iterate
    linkageType: ''
    returnType: void
    signature: void nb_nodes_delete(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_find_snode
      Src: /src/frr/lib/northbound.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 175
    functionName: nb_node_find
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 13
    functionsReached:
    - yang_find_snode
    linkageType: ''
    returnType: struct nb_node
    signature: struct nb_node *nb_node_find(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound.c:181,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - dependency_xpath
    - dependant_xpath
    - cbs
    argTypes:
    - char*
    - char*
    - struct nb_dependency_callbacks*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 189
    functionName: nb_node_set_dependency_cbs
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_node_find
    linkageType: ''
    returnType: void
    signature: "void nb_node_set_dependency_cbs(const char *dependency_xpath,\n\t\t\t\tconst
      char *dependant_xpath,\n\t\t\t\tstruct nb_dependency_callbacks *cbs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct nb_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: nb_node_has_dependency
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nb_node_has_dependency(struct nb_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound.c:202,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:216,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:218,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound.c:221,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:222,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 4
    argNames:
    - nb_node
    - operation
    - callback_implemented
    - optional
    argTypes:
    - struct nb_node*
    - enum nb_operation
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 227
    functionName: nb_node_validate_cb
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_operation_name
    - flog_err
    - nb_operation_is_valid
    - flog_warn
    linkageType: ''
    returnType: int
    signature: "int nb_node_validate_cb(const struct nb_node *nb_node,\n\t\t\t       enum
      nb_operation operation,\n\t\t\t       int callback_implemented, bool optional)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:238,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:241,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:243,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:245,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:247,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:249,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:251,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:253,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:255,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:257,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:259,1
    - Dst: nb_node_validate_cb
      Src: /src/frr/lib/northbound.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - nb_node
    argTypes:
    - struct nb_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 265
    functionName: nb_node_validate_cbs
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - nb_node_validate_cb
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nb_node_validate_cbs(const struct nb_node *nb_node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/lib/northbound.c:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - nb_node
    argTypes:
    - struct nb_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 281
    functionName: nb_node_validate_priority
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - flog_err
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int nb_node_validate_priority(const struct nb_node *nb_node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_validate_cbs
      Src: /src/frr/lib/northbound.c:290,1
    - Dst: nb_node_validate_priority
      Src: /src/frr/lib/northbound.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - snode
    - arg
    argTypes:
    - struct lysc_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 295
    functionName: nb_node_validate
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_node_validate_cbs
    - nb_node_validate_priority
    linkageType: ''
    returnType: int
    signature: int nb_node_validate(const struct lysc_node *snode, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound.c:301,1
    - Dst: yang_dnode_new
      Src: /src/frr/lib/northbound.c:305,1
    - Dst: RB_INIT
      Src: /src/frr/lib/northbound.c:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 311
    functionName: nb_config_new
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 6
    functionsReached:
    - yang_dnode_new
    - RB_INIT
    - XCALLOC
    linkageType: ''
    returnType: struct nb_config
    signature: struct nb_config *nb_config_new(struct lyd_node *dnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound.c:316,1
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/lib/northbound.c:317,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct nb_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 319
    functionName: nb_config_free
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 19
    functionsReached:
    - nb_config_diff_del_changes
    - yang_dnode_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nb_config_free(struct nb_config *config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound.c:325,1
    - Dst: yang_dnode_dup
      Src: /src/frr/lib/northbound.c:326,1
    - Dst: RB_INIT
      Src: /src/frr/lib/northbound.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct nb_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 332
    functionName: nb_config_dup
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 8
    functionsReached:
    - yang_dnode_dup
    - RB_INIT
    - XCALLOC
    linkageType: ''
    returnType: struct nb_config
    signature: struct nb_config *nb_config_dup(const struct nb_config *config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_merge_siblings
      Src: /src/frr/lib/northbound.c:339,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:341,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - config_dst
    - config_src
    - preserve_source
    argTypes:
    - struct nb_config*
    - struct nb_config*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 347
    functionName: nb_config_merge
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 4
    functionsReached:
    - lyd_merge_siblings
    - flog_warn
    - nb_config_free
    linkageType: ''
    returnType: int
    signature: "int nb_config_merge(struct nb_config *config_dst, struct nb_config
      *config_src,\n\t\t    bool preserve_source)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound.c:358,1
    - Dst: yang_dnode_dup
      Src: /src/frr/lib/northbound.c:360,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound.c:364,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - config_dst
    - config_src
    - preserve_source
    argTypes:
    - struct nb_config*
    - struct nb_config*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 366
    functionName: nb_config_replace
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 9
    functionsReached:
    - yang_dnode_dup
    - yang_dnode_free
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: "void nb_config_replace(struct nb_config *config_dst,\n\t\t       struct
      nb_config *config_src, bool preserve_source)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct nb_config_cb*
    - struct nb_config_cb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 397
    functionName: nb_config_cb_compare
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int nb_config_cb_compare(const struct nb_config_cb *a,\n\t\t\t\t       const
      struct nb_config_cb *b)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound.c:411,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/northbound.c:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - changes
    - operation
    - seq
    - dnode
    argTypes:
    - struct nb_config_cbs*
    - enum nb_operation
    - uint32_t*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 419
    functionName: nb_config_diff_add_change
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void nb_config_diff_add_change(struct nb_config_cbs *changes,\n\t\t\t\t
      \     enum nb_operation operation,\n\t\t\t\t      uint32_t *seq,\n\t\t\t\t      const
      struct lyd_node *dnode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/lib/northbound.c:423,1
    - Dst: RB_ROOT
      Src: /src/frr/lib/northbound.c:426,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/northbound.c:428,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - changes
    argTypes:
    - struct nb_config_cbs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 431
    functionName: nb_config_diff_del_changes
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 4
    functionsReached:
    - RB_EMPTY
    - RB_ROOT
    - XFREE
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void nb_config_diff_del_changes(struct nb_config_cbs *changes)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lyd_is_default
      Src: /src/frr/lib/northbound.c:451,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound.c:454,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound.c:456,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:461,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound.c:465,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:466,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound.c:470,1
    - Dst: lyd_child
      Src: /src/frr/lib/northbound.c:470,1
    - Dst: nb_config_diff_created
      Src: /src/frr/lib/northbound.c:471,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - dnode
    - seq
    - changes
    argTypes:
    - struct lyd_node*
    - uint32_t*
    - struct nb_config_cbs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 477
    functionName: nb_config_diff_created
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - nb_config_diff_created
    - nb_operation_is_valid
    - nb_config_diff_add_change
    - LY_LIST_FOR
    - lyd_is_default
    - lyd_child
    linkageType: ''
    returnType: void
    signature: "void nb_config_diff_created(const struct lyd_node *dnode, uint32_t
      *seq,\n\t\t\t    struct nb_config_cbs *changes)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound.c:486,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:487,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:488,1
    - Dst: nb_config_diff_deleted
      Src: /src/frr/lib/northbound.c:498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - dnode
    - seq
    - changes
    argTypes:
    - struct lyd_node*
    - uint32_t*
    - struct nb_config_cbs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 479
    functionDepth: 2
    functionLinenumber: 479
    functionLinenumberEnd: 501
    functionName: nb_config_diff_deleted
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - nb_operation_is_valid
    - nb_config_diff_deleted
    - nb_config_diff_add_change
    linkageType: ''
    returnType: void
    signature: "void nb_config_diff_deleted(const struct lyd_node *dnode, uint32_t
      *seq,\n\t\t\t\t   struct nb_config_cbs *changes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_diff_deleted
      Src: /src/frr/lib/northbound.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 497
    functionDepth: 3
    functionLinenumber: 497
    functionLinenumberEnd: 499
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 5
    functionsReached:
    - nb_config_diff_deleted
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (lyd_child(dnode), child)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound.c:506,1
    - Dst: strcmp
      Src: /src/frr/lib/northbound.c:507,1
    - Dst: strcmp
      Src: /src/frr/lib/northbound.c:508,1
    - Dst: lyd_get_meta_value
      Src: /src/frr/lib/northbound.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - dnode
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 513
    functionName: nb_lyd_diff_get_op
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - lyd_get_meta_value
    - strcmp
    - LY_LIST_FOR
    linkageType: ''
    returnType: int
    signature: int nb_lyd_diff_get_op(const struct lyd_node *dnode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/northbound.c:521,1
    - Dst: lyd_get_value
      Src: /src/frr/lib/northbound.c:522,1
    - Dst: zlog_debug
      Src: /src/frr/lib/northbound.c:524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - context
    - path
    - dnode
    argTypes:
    - char*
    - char*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 525
    functionName: nb_config_diff_dnode_log_path
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - lyd_get_value
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void nb_config_diff_dnode_log_path(const char *context,\n\t\t\t\t\t\t
      const char *path,\n\t\t\t\t\t\t const struct lyd_node *dnode)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/northbound.c:531,1
    - Dst: lyd_path
      Src: /src/frr/lib/northbound.c:535,1
    - Dst: nb_config_diff_dnode_log_path
      Src: /src/frr/lib/northbound.c:536,1
    - Dst: free
      Src: /src/frr/lib/northbound.c:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - context
    - dnode
    argTypes:
    - char*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 527
    functionDepth: 2
    functionLinenumber: 527
    functionLinenumberEnd: 538
    functionName: nb_config_diff_dnode_log
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - lyd_path
    - zlog_debug
    - free
    - nb_config_diff_dnode_log_path
    linkageType: ''
    returnType: void
    signature: "void nb_config_diff_dnode_log(const char *context,\n\t\t\t\t\t    const
      struct lyd_node *dnode)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound.c:560,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound.c:561,1
    - Dst: nb_config_diff_dnode_log
      Src: /src/frr/lib/northbound.c:563,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:564,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound.c:567,1
    - Dst: nb_config_diff_dnode_log
      Src: /src/frr/lib/northbound.c:569,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:570,1
    - Dst: lyd_diff_siblings
      Src: /src/frr/lib/northbound.c:576,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:578,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound.c:580,1
    - Dst: lyd_print_mem
      Src: /src/frr/lib/northbound.c:583,1
    - Dst: zlog_debug
      Src: /src/frr/lib/northbound.c:585,1
    - Dst: free
      Src: /src/frr/lib/northbound.c:586,1
    - Dst: nb_lyd_diff_get_op
      Src: /src/frr/lib/northbound.c:594,1
    - Dst: lyd_path
      Src: /src/frr/lib/northbound.c:596,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound.c:599,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:601,1
    - Dst: nb_config_diff_dnode_log_path
      Src: /src/frr/lib/northbound.c:603,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:615,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:616,1
    - Dst: nb_config_diff_created
      Src: /src/frr/lib/northbound.c:617,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:624,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:625,1
    - Dst: nb_config_diff_deleted
      Src: /src/frr/lib/northbound.c:626,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:634,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:635,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:636,1
    - Dst: free
      Src: /src/frr/lib/northbound.c:643,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:644,1
    - Dst: lyd_free_all
      Src: /src/frr/lib/northbound.c:648,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 54
    argCount: 3
    argNames:
    - config1
    - config2
    - changes
    argTypes:
    - struct nb_config*
    - struct nb_config*
    - struct nb_config_cbs*
    assertStmts:
    - condition: (!err)
      pos:
        line_end: 577
        line_start: 577
        source_file: /src/frr/lib/northbound.c
    - condition: (target)
      pos:
        line_end: 615
        line_start: 615
        source_file: /src/frr/lib/northbound.c
    - condition: (target)
      pos:
        line_end: 624
        line_start: 624
        source_file: /src/frr/lib/northbound.c
    - condition: (target)
      pos:
        line_end: 634
        line_start: 634
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 649
      start: 548
    functionDepth: 3
    functionLinenumber: 548
    functionLinenumberEnd: 649
    functionName: nb_config_diff
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - nb_config_diff_created
    - lyd_print_mem
    - DEBUG_MODE_CHECK
    - lyd_free_all
    - snprintf
    - nb_config_diff_dnode_log_path
    - nb_config_diff_add_change
    - yang_dnode_get
    - LYD_TREE_DFS_END
    - free
    - LY_LIST_FOR
    - lyd_diff_siblings
    - zlog_debug
    - nb_lyd_diff_get_op
    - nb_config_diff_deleted
    - lyd_path
    - assert
    - nb_config_diff_dnode_log
    linkageType: ''
    returnType: void
    signature: "void nb_config_diff(const struct nb_config *config1,\n\t\t    const
      struct nb_config *config2,\n\t\t    struct nb_config_cbs *changes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_diff_dnode_log
      Src: /src/frr/lib/northbound.c:563,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 562
    functionDepth: 3
    functionLinenumber: 562
    functionLinenumberEnd: 565
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    - nb_config_diff_dnode_log
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(root, dnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_diff_dnode_log
      Src: /src/frr/lib/northbound.c:569,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 568
    functionDepth: 3
    functionLinenumber: 568
    functionLinenumberEnd: 571
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    - nb_config_diff_dnode_log
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(root, dnode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_lyd_diff_get_op
      Src: /src/frr/lib/northbound.c:594,1
    - Dst: lyd_path
      Src: /src/frr/lib/northbound.c:596,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound.c:599,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:601,1
    - Dst: nb_config_diff_dnode_log_path
      Src: /src/frr/lib/northbound.c:603,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:615,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:616,1
    - Dst: nb_config_diff_created
      Src: /src/frr/lib/northbound.c:617,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:624,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:625,1
    - Dst: nb_config_diff_deleted
      Src: /src/frr/lib/northbound.c:626,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:634,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:635,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:636,1
    - Dst: free
      Src: /src/frr/lib/northbound.c:643,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:644,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (target)
      pos:
        line_end: 615
        line_start: 615
        source_file: /src/frr/lib/northbound.c
    - condition: (target)
      pos:
        line_end: 624
        line_start: 624
        source_file: /src/frr/lib/northbound.c
    - condition: (target)
      pos:
        line_end: 634
        line_start: 634
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 646
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 646
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 7
    functionsReached:
    - nb_config_diff_created
    - DEBUG_MODE_CHECK
    - nb_config_diff_dnode_log_path
    - snprintf
    - nb_config_diff_add_change
    - yang_dnode_get
    - LYD_TREE_DFS_END
    - free
    - nb_lyd_diff_get_op
    - nb_config_diff_deleted
    - lyd_path
    - assert
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (diff, root)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_lyd_diff_get_op
      Src: /src/frr/lib/northbound.c:594,1
    - Dst: lyd_path
      Src: /src/frr/lib/northbound.c:596,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound.c:599,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:601,1
    - Dst: nb_config_diff_dnode_log_path
      Src: /src/frr/lib/northbound.c:603,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:615,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:616,1
    - Dst: nb_config_diff_created
      Src: /src/frr/lib/northbound.c:617,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:624,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:625,1
    - Dst: nb_config_diff_deleted
      Src: /src/frr/lib/northbound.c:626,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:634,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:635,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:636,1
    - Dst: free
      Src: /src/frr/lib/northbound.c:643,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:644,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (target)
      pos:
        line_end: 615
        line_start: 615
        source_file: /src/frr/lib/northbound.c
    - condition: (target)
      pos:
        line_end: 624
        line_start: 624
        source_file: /src/frr/lib/northbound.c
    - condition: (target)
      pos:
        line_end: 634
        line_start: 634
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 645
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 645
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_config_diff_created
    - DEBUG_MODE_CHECK
    - nb_config_diff_dnode_log_path
    - snprintf
    - nb_config_diff_add_change
    - yang_dnode_get
    - LYD_TREE_DFS_END
    - free
    - nb_lyd_diff_get_op
    - nb_config_diff_deleted
    - lyd_path
    - assert
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN (root, dnode)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:664,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:667,1
    - Dst: lyd_new_path
      Src: /src/frr/lib/northbound.c:672,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:676,1
    - Dst: lyd_new_implicit_tree
      Src: /src/frr/lib/northbound.c:682,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:685,1
    - Dst: struct nb_node*::dep_cbs::get_dependency_xpath
      Src: /src/frr/lib/northbound.c:697,1
    - Dst: lyd_new_path
      Src: /src/frr/lib/northbound.c:700,1
    - Dst: lyd_new_implicit_tree
      Src: /src/frr/lib/northbound.c:706,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:710,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:720,1
    - Dst: struct nb_node*::dep_cbs::get_dependant_xpath
      Src: /src/frr/lib/northbound.c:729,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:731,1
    - Dst: lyd_free_tree
      Src: /src/frr/lib/northbound.c:733,1
    - Dst: lyd_free_tree
      Src: /src/frr/lib/northbound.c:735,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:747,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 6
    argNames:
    - candidate
    - nb_node
    - operation
    - xpath
    - previous
    - data
    argTypes:
    - struct nb_config*
    - struct nb_node*
    - enum nb_operation
    - char*
    - struct yang_data*
    - struct yang_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 754
    functionName: nb_candidate_edit
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - struct nb_node*::dep_cbs::get_dependant_xpath
    - flog_warn
    - snprintf
    - lyd_free_tree
    - yang_dnode_get
    - strlcpy
    - lyd_new_implicit_tree
    - lyd_new_path
    - struct nb_node*::dep_cbs::get_dependency_xpath
    linkageType: ''
    returnType: int
    signature: "int nb_candidate_edit(struct nb_config *candidate,\n\t\t      const
      struct nb_node *nb_node,\n\t\t      enum nb_operation operation, const char
      *xpath,\n\t\t      const struct yang_data *previous,\n\t\t      const struct
      yang_data *data)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:770,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:773,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:786,1
    - Dst: nb_lyd_diff_get_op
      Src: /src/frr/lib/northbound.c:793,1
    - Dst: nb_config_diff_created
      Src: /src/frr/lib/northbound.c:796,1
    - Dst: nb_config_diff_deleted
      Src: /src/frr/lib/northbound.c:800,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:804,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:811,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 3
    argNames:
    - candidate
    - change
    - seq
    argTypes:
    - struct nb_config*
    - struct nb_cfg_change*
    - uint32_t*
    assertStmts:
    - condition: (!"non-enum value, invalid")
      pos:
        line_end: 785
        line_start: 785
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 813
      start: 756
    functionDepth: 3
    functionLinenumber: 756
    functionLinenumberEnd: 813
    functionName: nb_update_candidate_changes
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_config_diff_created
    - nb_config_diff_add_change
    - yang_dnode_get
    - LYD_TREE_DFS_END
    - nb_lyd_diff_get_op
    - nb_config_diff_deleted
    - assert
    linkageType: ''
    returnType: void
    signature: "void nb_update_candidate_changes(struct nb_config *candidate,\n\t\t\t\t\tstruct
      nb_cfg_change *change,\n\t\t\t\t\tuint32_t *seq)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_lyd_diff_get_op
      Src: /src/frr/lib/northbound.c:793,1
    - Dst: nb_config_diff_created
      Src: /src/frr/lib/northbound.c:796,1
    - Dst: nb_config_diff_deleted
      Src: /src/frr/lib/northbound.c:800,1
    - Dst: nb_config_diff_add_change
      Src: /src/frr/lib/northbound.c:804,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 792
    functionDepth: 3
    functionLinenumber: 792
    functionLinenumberEnd: 812
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_config_diff_created
    - nb_config_diff_add_change
    - LYD_TREE_DFS_END
    - nb_lyd_diff_get_op
    - nb_config_diff_deleted
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN (root, dnode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysc_is_key
      Src: /src/frr/lib/northbound.c:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - nb_node
    - change
    argTypes:
    - struct nb_node*
    - struct nb_cfg_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 815
    functionDepth: 1
    functionLinenumber: 815
    functionLinenumberEnd: 825
    functionName: nb_is_operation_allowed
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - lysc_is_key
    linkageType: ''
    returnType: bool
    signature: "bool nb_is_operation_allowed(struct nb_node *nb_node,\n\t\t\t\t    struct
      nb_cfg_change *change)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/northbound.c:849,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:852,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound.c:855,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound.c:857,1
    - Dst: strlcat
      Src: /src/frr/lib/northbound.c:860,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:862,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound.c:865,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:867,1
    - Dst: nb_is_operation_allowed
      Src: /src/frr/lib/northbound.c:874,1
    - Dst: zlog_err
      Src: /src/frr/lib/northbound.c:875,1
    - Dst: yang_snode_get_default
      Src: /src/frr/lib/northbound.c:883,1
    - Dst: yang_data_new
      Src: /src/frr/lib/northbound.c:884,1
    - Dst: nb_candidate_edit
      Src: /src/frr/lib/northbound.c:890,1
    - Dst: yang_data_free
      Src: /src/frr/lib/northbound.c:892,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:894,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:897,1
    - Dst: nb_update_candidate_changes
      Src: /src/frr/lib/northbound.c:903,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:914,1
    - Dst: yang_print_errors
      Src: /src/frr/lib/northbound.c:916,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 46
    argCount: 9
    argNames:
    - candidate_config
    - cfg_changes
    - num_cfg_changes
    - xpath_base
    - curr_xpath
    - xpath_index
    - err_buf
    - err_bufsize
    - error
    argTypes:
    - struct nb_config*
    - struct nb_cfg_change[]
    - size_t
    - char*
    - char*
    - int
    - char*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 827
    functionDepth: 4
    functionLinenumber: 827
    functionLinenumberEnd: 918
    functionName: nb_candidate_edit_config_changes
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 4
    functionsReached:
    - strlcat
    - yang_data_new
    - nb_candidate_edit
    - flog_warn
    - memset
    - snprintf
    - strlcpy
    - yang_snode_get_default
    - nb_update_candidate_changes
    - zlog_err
    - yang_print_errors
    - nb_is_operation_allowed
    - nb_node_find
    - nb_operation_name
    - yang_data_free
    linkageType: ''
    returnType: void
    signature: "void nb_candidate_edit_config_changes(\n\tstruct nb_config *candidate_config,
      struct nb_cfg_change cfg_changes[],\n\tsize_t num_cfg_changes, const char *xpath_base,
      const char *curr_xpath,\n\tint xpath_index, char *err_buf, int err_bufsize,
      bool *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct nb_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 926
    functionName: nb_candidate_needs_update
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nb_candidate_needs_update(const struct nb_config *candidate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_dup
      Src: /src/frr/lib/northbound.c:932,1
    - Dst: nb_config_merge
      Src: /src/frr/lib/northbound.c:933,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound.c:936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct nb_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 928
    functionDepth: 4
    functionLinenumber: 928
    functionLinenumberEnd: 939
    functionName: nb_candidate_update
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_config_dup
    - nb_config_merge
    - nb_config_replace
    linkageType: ''
    returnType: int
    signature: int nb_candidate_update(struct nb_config *candidate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_validate_all
      Src: /src/frr/lib/northbound.c:950,1
    - Dst: yang_print_errors
      Src: /src/frr/lib/northbound.c:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - candidate
    - no_state
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_config*
    - bool
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 959
    functionName: nb_candidate_validate_yang
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - lyd_validate_all
    - yang_print_errors
    linkageType: ''
    returnType: int
    signature: "int nb_candidate_validate_yang(struct nb_config *candidate, bool no_state,\n\t\t\t
      \      char *errmsg, size_t errmsg_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound.c:972,1
    - Dst: nb_callback_pre_validate
      Src: /src/frr/lib/northbound.c:980,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:986,1
    - Dst: nb_callback_configuration
      Src: /src/frr/lib/northbound.c:994,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - context
    - candidate
    - changes
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_config*
    - struct nb_config_cbs*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 1001
    functionName: nb_candidate_validate_code
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_callback_pre_validate
    - LYD_TREE_DFS_END
    - nb_callback_configuration
    - LY_LIST_FOR
    linkageType: ''
    returnType: int
    signature: "int nb_candidate_validate_code(struct nb_context *context,\n\t\t\t
      \      struct nb_config *candidate,\n\t\t\t       struct nb_config_cbs *changes,
      char *errmsg,\n\t\t\t       size_t errmsg_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_callback_pre_validate
      Src: /src/frr/lib/northbound.c:980,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/frr/lib/northbound.c:986,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 987
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_callback_pre_validate
    - LYD_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN (root, child)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_callback_configuration
      Src: /src/frr/lib/northbound.c:994,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 998
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 104
    functionsReached:
    - nb_callback_configuration
    linkageType: ''
    returnType: void
    signature: void RB_FOREACH (cb, nb_config_cbs, changes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_validate_yang
      Src: /src/frr/lib/northbound.c:1008,1
    - Dst: RB_INIT
      Src: /src/frr/lib/northbound.c:1012,1
    - Dst: nb_config_diff
      Src: /src/frr/lib/northbound.c:1013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - context
    - candidate
    - changes
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_config*
    - struct nb_config_cbs*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 1003
    functionDepth: 4
    functionLinenumber: 1003
    functionLinenumberEnd: 1016
    functionName: nb_candidate_diff_and_validate_yang
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_candidate_validate_yang
    - nb_config_diff
    - RB_INIT
    linkageType: ''
    returnType: int
    signature: "int nb_candidate_diff_and_validate_yang(struct nb_context *context,\n\t\t\t\t\tstruct
      nb_config *candidate,\n\t\t\t\t\tstruct nb_config_cbs *changes,\n\t\t\t\t\tchar
      *errmsg, size_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_diff_and_validate_yang
      Src: /src/frr/lib/northbound.c:1025,1
    - Dst: nb_candidate_validate_code
      Src: /src/frr/lib/northbound.c:1030,1
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/lib/northbound.c:1032,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - context
    - candidate
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_config*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1018
    functionDepth: 5
    functionLinenumber: 1018
    functionLinenumberEnd: 1035
    functionName: nb_candidate_validate
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_config_diff_del_changes
    - nb_candidate_diff_and_validate_yang
    - nb_candidate_validate_code
    linkageType: ''
    returnType: int
    signature: "int nb_candidate_validate(struct nb_context *context,\n\t\t\t  struct
      nb_config *candidate, char *errmsg,\n\t\t\t  size_t errmsg_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_validate_yang
      Src: /src/frr/lib/northbound.c:1047,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1049,1
    - Dst: RB_INIT
      Src: /src/frr/lib/northbound.c:1055,1
    - Dst: nb_config_diff
      Src: /src/frr/lib/northbound.c:1056,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/northbound.c:1057,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:1058,1
    - Dst: nb_candidate_validate_code
      Src: /src/frr/lib/northbound.c:1065,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1067,1
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/lib/northbound.c:1070,1
    - Dst: nb_transaction_new
      Src: /src/frr/lib/northbound.c:1078,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1081,1
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/lib/northbound.c:1084,1
    - Dst: nb_transaction_process
      Src: /src/frr/lib/northbound.c:1088,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 8
    argNames:
    - context
    - candidate
    - comment
    - transaction
    - skip_validate
    - ignore_zero_change
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context
    - struct nb_config*
    - char*
    - struct nb_transaction**
    - bool
    - bool
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1037
    functionDepth: 4
    functionLinenumber: 1037
    functionLinenumberEnd: 1090
    functionName: nb_candidate_commit_prepare
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 4
    functionsReached:
    - nb_config_diff_del_changes
    - flog_warn
    - snprintf
    - nb_transaction_new
    - RB_INIT
    - nb_candidate_validate_yang
    - nb_config_diff
    - nb_transaction_process
    - RB_EMPTY
    - nb_candidate_validate_code
    linkageType: ''
    returnType: int
    signature: "int nb_candidate_commit_prepare(struct nb_context context,\n\t\t\t\tstruct
      nb_config *candidate,\n\t\t\t\tconst char *comment,\n\t\t\t\tstruct nb_transaction
      **transaction,\n\t\t\t\tbool skip_validate, bool ignore_zero_change,\n\t\t\t\tchar
      *errmsg, size_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_transaction_process
      Src: /src/frr/lib/northbound.c:1095,1
    - Dst: nb_transaction_free
      Src: /src/frr/lib/northbound.c:1097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - transaction
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_transaction*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1092
    functionDepth: 1
    functionLinenumber: 1092
    functionLinenumberEnd: 1098
    functionName: nb_candidate_commit_abort
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 6
    functionsReached:
    - nb_transaction_free
    - nb_transaction_process
    linkageType: ''
    returnType: void
    signature: "void nb_candidate_commit_abort(struct nb_transaction *transaction,
      char *errmsg,\n\t\t\t       size_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_transaction_process
      Src: /src/frr/lib/northbound.c:1104,1
    - Dst: nb_transaction_apply_finish
      Src: /src/frr/lib/northbound.c:1106,1
    - Dst: nb_config_replace
      Src: /src/frr/lib/northbound.c:1110,1
    - Dst: nb_db_transaction_save
      Src: /src/frr/lib/northbound.c:1114,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1115,1
    - Dst: nb_transaction_free
      Src: /src/frr/lib/northbound.c:1118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - transaction
    - save_transaction
    - transaction_id
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_transaction*
    - bool
    - uint32_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1100
    functionDepth: 4
    functionLinenumber: 1100
    functionLinenumberEnd: 1119
    functionName: nb_candidate_commit_apply
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 4
    functionsReached:
    - flog_warn
    - nb_transaction_apply_finish
    - nb_transaction_free
    - nb_db_transaction_save
    - nb_transaction_process
    - nb_config_replace
    linkageType: ''
    returnType: void
    signature: "void nb_candidate_commit_apply(struct nb_transaction *transaction,\n\t\t\t
      \      bool save_transaction, uint32_t *transaction_id,\n\t\t\t       char *errmsg,
      size_t errmsg_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_candidate_commit_prepare
      Src: /src/frr/lib/northbound.c:1129,1
    - Dst: nb_candidate_commit_apply
      Src: /src/frr/lib/northbound.c:1137,1
    - Dst: nb_candidate_commit_abort
      Src: /src/frr/lib/northbound.c:1140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 7
    argNames:
    - context
    - candidate
    - save_transaction
    - comment
    - transaction_id
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context
    - struct nb_config*
    - bool
    - char*
    - uint32_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1121
    functionDepth: 5
    functionLinenumber: 1121
    functionLinenumberEnd: 1143
    functionName: nb_candidate_commit
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 7
    functionsReached:
    - nb_candidate_commit_prepare
    - nb_candidate_commit_apply
    - nb_candidate_commit_abort
    linkageType: ''
    returnType: int
    signature: "int nb_candidate_commit(struct nb_context context, struct nb_config
      *candidate,\n\t\t\tbool save_transaction, const char *comment,\n\t\t\tuint32_t
      *transaction_id, char *errmsg,\n\t\t\tsize_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/northbound.c:1149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - client
    - user
    argTypes:
    - enum nb_client
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1145
    functionDepth: 0
    functionLinenumber: 1145
    functionLinenumberEnd: 1159
    functionName: nb_running_lock
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - frr_with_mutex
    linkageType: ''
    returnType: int
    signature: int nb_running_lock(enum nb_client client, const void *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/northbound.c:1165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - client
    - user
    argTypes:
    - enum nb_client
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1161
    functionDepth: 0
    functionLinenumber: 1161
    functionLinenumberEnd: 1177
    functionName: nb_running_unlock
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - frr_with_mutex
    linkageType: ''
    returnType: int
    signature: int nb_running_unlock(enum nb_client client, const void *user)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/northbound.c:1183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - client
    - user
    argTypes:
    - enum nb_client
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1191
    functionName: nb_running_lock_check
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - frr_with_mutex
    linkageType: ''
    returnType: int
    signature: int nb_running_lock_check(enum nb_client client, const void *user)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/northbound.c:1200,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:1203,1
    - Dst: yang_snode_is_typeless_data
      Src: /src/frr/lib/northbound.c:1204,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/northbound.c:1207,1
    - Dst: zlog_debug
      Src: /src/frr/lib/northbound.c:1209,1
    - Dst: nb_event_name
      Src: /src/frr/lib/northbound.c:1211,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:1211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - event
    - operation
    - dnode
    argTypes:
    - enum nb_event
    - enum nb_operation
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1193
    functionDepth: 2
    functionLinenumber: 1193
    functionLinenumberEnd: 1213
    functionName: nb_log_config_callback
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - yang_snode_is_typeless_data
    - zlog_debug
    - yang_dnode_get_string
    - yang_dnode_get_path
    - nb_event_name
    - nb_operation_name
    linkageType: ''
    returnType: void
    signature: "void nb_log_config_callback(const enum nb_event event,\n\t\t\t\t   enum
      nb_operation operation,\n\t\t\t\t   const struct lyd_node *dnode)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:1225,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1225,1
    - Dst: nb_log_config_callback
      Src: /src/frr/lib/northbound.c:1227,1
    - Dst: struct nb_node*::cbs::create
      Src: /src/frr/lib/northbound.c:1235,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1259,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1261,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 7
    argNames:
    - context
    - nb_node
    - event
    - dnode
    - resource
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_node*
    - enum nb_event
    - struct lyd_node*
    - union nb_resource*
    - char*
    - size_t
    assertStmts:
    - condition: (!CHECK_FLAG(nb_node->flags, F_NB_NODE_IGNORE_CBS))
      pos:
        line_end: 1224
        line_start: 1224
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 1264
      start: 1215
    functionDepth: 3
    functionLinenumber: 1215
    functionLinenumberEnd: 1264
    functionName: nb_callback_create
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_err_name
    - DEBUGD
    - CHECK_FLAG
    - nb_log_config_callback
    - struct nb_node*::cbs::create
    - assert
    linkageType: ''
    returnType: int
    signature: "int nb_callback_create(struct nb_context *context,\n\t\t\t      const
      struct nb_node *nb_node,\n\t\t\t      enum nb_event event, const struct lyd_node
      *dnode,\n\t\t\t      union nb_resource *resource, char *errmsg,\n\t\t\t      size_t
      errmsg_len)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:1276,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1276,1
    - Dst: nb_log_config_callback
      Src: /src/frr/lib/northbound.c:1278,1
    - Dst: struct nb_node*::cbs::modify
      Src: /src/frr/lib/northbound.c:1286,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1310,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1312,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 7
    argNames:
    - context
    - nb_node
    - event
    - dnode
    - resource
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_node*
    - enum nb_event
    - struct lyd_node*
    - union nb_resource*
    - char*
    - size_t
    assertStmts:
    - condition: (!CHECK_FLAG(nb_node->flags, F_NB_NODE_IGNORE_CBS))
      pos:
        line_end: 1275
        line_start: 1275
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 1315
      start: 1266
    functionDepth: 3
    functionLinenumber: 1266
    functionLinenumberEnd: 1315
    functionName: nb_callback_modify
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_err_name
    - DEBUGD
    - CHECK_FLAG
    - nb_log_config_callback
    - struct nb_node*::cbs::modify
    - assert
    linkageType: ''
    returnType: int
    signature: "int nb_callback_modify(struct nb_context *context,\n\t\t\t      const
      struct nb_node *nb_node,\n\t\t\t      enum nb_event event, const struct lyd_node
      *dnode,\n\t\t\t      union nb_resource *resource, char *errmsg,\n\t\t\t      size_t
      errmsg_len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:1327,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1327,1
    - Dst: nb_log_config_callback
      Src: /src/frr/lib/northbound.c:1329,1
    - Dst: struct nb_node*::cbs::destroy
      Src: /src/frr/lib/northbound.c:1336,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1356,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1358,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 6
    argNames:
    - context
    - nb_node
    - event
    - dnode
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_node*
    - enum nb_event
    - struct lyd_node*
    - char*
    - size_t
    assertStmts:
    - condition: (!CHECK_FLAG(nb_node->flags, F_NB_NODE_IGNORE_CBS))
      pos:
        line_end: 1326
        line_start: 1326
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 1361
      start: 1317
    functionDepth: 3
    functionLinenumber: 1317
    functionLinenumberEnd: 1361
    functionName: nb_callback_destroy
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_err_name
    - DEBUGD
    - CHECK_FLAG
    - nb_log_config_callback
    - struct nb_node*::cbs::destroy
    - assert
    linkageType: ''
    returnType: int
    signature: "int nb_callback_destroy(struct nb_context *context,\n\t\t\t       const
      struct nb_node *nb_node,\n\t\t\t       enum nb_event event,\n\t\t\t       const
      struct lyd_node *dnode, char *errmsg,\n\t\t\t       size_t errmsg_len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:1372,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1372,1
    - Dst: nb_log_config_callback
      Src: /src/frr/lib/northbound.c:1374,1
    - Dst: struct nb_node*::cbs::move
      Src: /src/frr/lib/northbound.c:1381,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1401,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1403,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 6
    argNames:
    - context
    - nb_node
    - event
    - dnode
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_node*
    - enum nb_event
    - struct lyd_node*
    - char*
    - size_t
    assertStmts:
    - condition: (!CHECK_FLAG(nb_node->flags, F_NB_NODE_IGNORE_CBS))
      pos:
        line_end: 1371
        line_start: 1371
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 1406
      start: 1363
    functionDepth: 3
    functionLinenumber: 1363
    functionLinenumberEnd: 1406
    functionName: nb_callback_move
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_err_name
    - DEBUGD
    - CHECK_FLAG
    - nb_log_config_callback
    - struct nb_node*::cbs::move
    - assert
    linkageType: ''
    returnType: int
    signature: "int nb_callback_move(struct nb_context *context,\n\t\t\t    const
      struct nb_node *nb_node, enum nb_event event,\n\t\t\t    const struct lyd_node
      *dnode, char *errmsg,\n\t\t\t    size_t errmsg_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1417,1
    - Dst: nb_log_config_callback
      Src: /src/frr/lib/northbound.c:1420,1
    - Dst: struct nb_node*::cbs::pre_validate
      Src: /src/frr/lib/northbound.c:1425,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1437,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1439,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - context
    - nb_node
    - dnode
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_node*
    - struct lyd_node*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1408
    functionDepth: 3
    functionLinenumber: 1408
    functionLinenumberEnd: 1442
    functionName: nb_callback_pre_validate
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - nb_err_name
    - struct nb_node*::cbs::pre_validate
    - DEBUGD
    - CHECK_FLAG
    - nb_log_config_callback
    linkageType: ''
    returnType: int
    signature: "int nb_callback_pre_validate(struct nb_context *context,\n\t\t\t\t
      \   const struct nb_node *nb_node,\n\t\t\t\t    const struct lyd_node *dnode,
      char *errmsg,\n\t\t\t\t    size_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1451,1
    - Dst: nb_log_config_callback
      Src: /src/frr/lib/northbound.c:1454,1
    - Dst: struct nb_node*::cbs::apply_finish
      Src: /src/frr/lib/northbound.c:1460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - context
    - nb_node
    - dnode
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - struct nb_node*
    - struct lyd_node*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1461
      start: 1444
    functionDepth: 3
    functionLinenumber: 1444
    functionLinenumberEnd: 1461
    functionName: nb_callback_apply_finish
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - struct nb_node*::cbs::apply_finish
    - nb_log_config_callback
    linkageType: ''
    returnType: void
    signature: "void nb_callback_apply_finish(struct nb_context *context,\n\t\t\t\t
      \    const struct nb_node *nb_node,\n\t\t\t\t     const struct lyd_node *dnode,
      char *errmsg,\n\t\t\t\t     size_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1469,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1472,1
    - Dst: struct nb_node*::cbs::get_elem
      Src: /src/frr/lib/northbound.c:1478,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - nb_node
    - xpath
    - list_entry
    argTypes:
    - struct nb_node*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1463
    functionDepth: 1
    functionLinenumber: 1463
    functionLinenumberEnd: 1479
    functionName: nb_callback_get_elem
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 4
    functionsReached:
    - struct nb_node*::cbs::get_elem
    - DEBUGD
    - CHECK_FLAG
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *nb_callback_get_elem(const struct nb_node *nb_node,\n\t\t\t\t
      \      const char *xpath,\n\t\t\t\t       const void *list_entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1487,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1490,1
    - Dst: struct nb_node*::cbs::get_next
      Src: /src/frr/lib/northbound.c:1496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - nb_node
    - parent_list_entry
    - list_entry
    argTypes:
    - struct nb_node*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1481
    functionDepth: 1
    functionLinenumber: 1481
    functionLinenumberEnd: 1497
    functionName: nb_callback_get_next
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - DEBUGD
    - CHECK_FLAG
    - struct nb_node*::cbs::get_next
    linkageType: ''
    returnType: void
    signature: "void *nb_callback_get_next(const struct nb_node *nb_node,\n\t\t\t\t
      const void *parent_list_entry,\n\t\t\t\t const void *list_entry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1504,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1507,1
    - Dst: struct nb_node*::cbs::get_keys
      Src: /src/frr/lib/northbound.c:1513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - nb_node
    - list_entry
    - keys
    argTypes:
    - struct nb_node*
    - void*
    - struct yang_list_keys*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1499
    functionDepth: 1
    functionLinenumber: 1499
    functionLinenumberEnd: 1514
    functionName: nb_callback_get_keys
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - DEBUGD
    - CHECK_FLAG
    - struct nb_node*::cbs::get_keys
    linkageType: ''
    returnType: int
    signature: "int nb_callback_get_keys(const struct nb_node *nb_node, const void
      *list_entry,\n\t\t\t struct yang_list_keys *keys)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1522,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1525,1
    - Dst: struct nb_node*::cbs::lookup_entry
      Src: /src/frr/lib/northbound.c:1531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - nb_node
    - parent_list_entry
    - keys
    argTypes:
    - struct nb_node*
    - void*
    - struct yang_list_keys*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1516
    functionDepth: 1
    functionLinenumber: 1516
    functionLinenumberEnd: 1532
    functionName: nb_callback_lookup_entry
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - DEBUGD
    - CHECK_FLAG
    - struct nb_node*::cbs::lookup_entry
    linkageType: ''
    returnType: void
    signature: "void *nb_callback_lookup_entry(const struct nb_node *nb_node,\n\t\t\t\t
      \    const void *parent_list_entry,\n\t\t\t\t     const struct yang_list_keys
      *keys)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1540,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:1543,1
    - Dst: struct nb_node*::cbs::rpc
      Src: /src/frr/lib/northbound.c:1550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - nb_node
    - xpath
    - input
    - output
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_node*
    - char*
    - struct list*
    - struct list*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1551
    functionName: nb_callback_rpc
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 5
    functionsReached:
    - DEBUGD
    - CHECK_FLAG
    - struct nb_node*::cbs::rpc
    linkageType: ''
    returnType: int
    signature: "int nb_callback_rpc(const struct nb_node *nb_node, const char *xpath,\n\t\t
      \   const struct list *input, struct list *output, char *errmsg,\n\t\t    size_t
      errmsg_len)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1569,1
    - Dst: nb_callback_create
      Src: /src/frr/lib/northbound.c:1579,1
    - Dst: nb_callback_modify
      Src: /src/frr/lib/northbound.c:1583,1
    - Dst: nb_callback_destroy
      Src: /src/frr/lib/northbound.c:1587,1
    - Dst: nb_callback_move
      Src: /src/frr/lib/northbound.c:1591,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:1601,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound.c:1602,1
    - Dst: exit
      Src: /src/frr/lib/northbound.c:1605,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:1609,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1613,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1615,1
    - Dst: nb_event_name
      Src: /src/frr/lib/northbound.c:1615,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:1616,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1620,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1622,1
    - Dst: nb_event_name
      Src: /src/frr/lib/northbound.c:1622,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:1623,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1627,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1629,1
    - Dst: nb_event_name
      Src: /src/frr/lib/northbound.c:1629,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:1630,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound.c:1634,1
    - Dst: nb_err_name
      Src: /src/frr/lib/northbound.c:1636,1
    - Dst: nb_event_name
      Src: /src/frr/lib/northbound.c:1636,1
    - Dst: nb_operation_name
      Src: /src/frr/lib/northbound.c:1637,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound.c:1641,1
    - Dst: exit
      Src: /src/frr/lib/northbound.c:1644,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 5
    argNames:
    - context
    - event
    - change
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context*
    - enum nb_event
    - struct nb_config_change*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1557
    functionDepth: 4
    functionLinenumber: 1557
    functionLinenumberEnd: 1649
    functionName: nb_callback_configuration
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - exit
    - nb_err_name
    - flog_warn
    - CHECK_FLAG
    - nb_callback_move
    - flog_err
    - yang_dnode_get_path
    - nb_event_name
    - nb_callback_destroy
    - nb_callback_create
    - nb_operation_name
    - nb_callback_modify
    linkageType: ''
    returnType: int
    signature: "int nb_callback_configuration(struct nb_context *context,\n\t\t\t\t
      \    const enum nb_event event,\n\t\t\t\t     struct nb_config_change *change,\n\t\t\t\t
      \    char *errmsg, size_t errmsg_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_lock_check
      Src: /src/frr/lib/northbound.c:1658,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:1659,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:1666,1
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound.c:1673,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:1676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - context
    - config
    - changes
    - comment
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_context
    - struct nb_config*
    - struct nb_config_cbs*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1651
    functionDepth: 1
    functionLinenumber: 1651
    functionLinenumberEnd: 1682
    functionName: nb_transaction_new
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_running_lock_check
    - strlcpy
    - XCALLOC
    linkageType: ''
    returnType: struct nb_transaction
    signature: "struct nb_transaction *\nnb_transaction_new(struct nb_context context,
      struct nb_config *config,\n\t\t   struct nb_config_cbs *changes, const char
      *comment,\n\t\t   char *errmsg, size_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_config_diff_del_changes
      Src: /src/frr/lib/northbound.c:1686,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound.c:1687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - transaction
    argTypes:
    - struct nb_transaction*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1684
    functionDepth: 2
    functionLinenumber: 1684
    functionLinenumberEnd: 1689
    functionName: nb_transaction_free
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - nb_config_diff_del_changes
    - XFREE
    linkageType: ''
    returnType: void
    signature: void nb_transaction_free(struct nb_transaction *transaction)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound.c:1698,1
    - Dst: nb_callback_configuration
      Src: /src/frr/lib/northbound.c:1710,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - event
    - transaction
    - errmsg
    - errmsg_len
    argTypes:
    - enum nb_event
    - struct nb_transaction*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1692
    functionDepth: 5
    functionLinenumber: 1692
    functionLinenumberEnd: 1735
    functionName: nb_transaction_process
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 3
    functionsReached:
    - RB_FOREACH
    - nb_callback_configuration
    linkageType: ''
    returnType: int
    signature: "int nb_transaction_process(enum nb_event event,\n\t\t\t\t  struct
      nb_transaction *transaction,\n\t\t\t\t  char *errmsg, size_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/northbound.c:1743,1
    - Dst: RB_INSERT
      Src: /src/frr/lib/northbound.c:1746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - cbs
    - nb_node
    - dnode
    argTypes:
    - struct nb_config_cbs*
    - struct nb_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1737
    functionDepth: 1
    functionLinenumber: 1737
    functionLinenumberEnd: 1749
    functionName: nb_apply_finish_cb_new
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: struct nb_config_cb
    signature: "struct nb_config_cb *\nnb_apply_finish_cb_new(struct nb_config_cbs
      *cbs, const struct nb_node *nb_node,\n\t\t       const struct lyd_node *dnode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/lib/northbound.c:1761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - cbs
    - nb_node
    - dnode
    argTypes:
    - struct nb_config_cbs*
    - struct nb_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1751
    functionDepth: 1
    functionLinenumber: 1751
    functionLinenumberEnd: 1762
    functionName: nb_apply_finish_cb_find
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct nb_config_cb
    signature: "struct nb_config_cb *\nnb_apply_finish_cb_find(struct nb_config_cbs
      *cbs,\n\t\t\tconst struct nb_node *nb_node,\n\t\t\tconst struct lyd_node *dnode)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_INIT
      Src: /src/frr/lib/northbound.c:1772,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound.c:1775,1
    - Dst: lyd_parent
      Src: /src/frr/lib/northbound.c:1788,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:1798,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:1799,1
    - Dst: nb_apply_finish_cb_find
      Src: /src/frr/lib/northbound.c:1813,1
    - Dst: nb_apply_finish_cb_new
      Src: /src/frr/lib/northbound.c:1816,1
    - Dst: lyd_parent
      Src: /src/frr/lib/northbound.c:1819,1
    - Dst: RB_FOREACH
      Src: /src/frr/lib/northbound.c:1824,1
    - Dst: nb_callback_apply_finish
      Src: /src/frr/lib/northbound.c:1825,1
    - Dst: RB_EMPTY
      Src: /src/frr/lib/northbound.c:1829,1
    - Dst: RB_ROOT
      Src: /src/frr/lib/northbound.c:1830,1
    - Dst: RB_REMOVE
      Src: /src/frr/lib/northbound.c:1831,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound.c:1832,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - transaction
    - errmsg
    - errmsg_len
    argTypes:
    - struct nb_transaction*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1765
    functionDepth: 4
    functionLinenumber: 1765
    functionLinenumberEnd: 1834
    functionName: nb_transaction_apply_finish
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_apply_finish_cb_new
    - lyd_parent
    - RB_REMOVE
    - yang_dnode_get
    - nb_apply_finish_cb_find
    - RB_INIT
    - nb_callback_apply_finish
    - XFREE
    - yang_dnode_get_path
    - RB_EMPTY
    - RB_ROOT
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void nb_transaction_apply_finish(struct nb_transaction *transaction,\n\t\t\t\t\tchar
      *errmsg, size_t errmsg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_oper_data_iter_node
      Src: /src/frr/lib/northbound.c:1848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 9
    argNames:
    - snode
    - xpath
    - list_entry
    - list_keys
    - translator
    - first
    - flags
    - cb
    - arg
    argTypes:
    - struct lysc_node*
    - char*
    - void*
    - struct yang_list_keys*
    - struct yang_translator*
    - bool
    - uint32_t
    - nb_oper_data_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1836
    functionDepth: 1
    functionLinenumber: 1836
    functionLinenumberEnd: 1856
    functionName: nb_oper_data_iter_children
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - nb_oper_data_iter_node
    linkageType: ''
    returnType: int
    signature: "int nb_oper_data_iter_children(const struct lysc_node *snode,\n\t\t\t\t
      \     const char *xpath, const void *list_entry,\n\t\t\t\t      const struct
      yang_list_keys *list_keys,\n\t\t\t\t      struct yang_translator *translator,\n\t\t\t\t
      \     bool first, uint32_t flags,\n\t\t\t\t      nb_oper_data_cb cb, void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_oper_data_iter_node
      Src: /src/frr/lib/northbound.c:1848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1845
    functionDepth: 1
    functionLinenumber: 1845
    functionLinenumberEnd: 1853
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 8
    functionsReached:
    - nb_oper_data_iter_node
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (lysc_node_child(snode), child)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1866,1
    - Dst: lysc_is_key
      Src: /src/frr/lib/northbound.c:1870,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound.c:1873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 8
    argNames:
    - nb_node
    - xpath
    - list_entry
    - list_keys
    - translator
    - flags
    - cb
    - arg
    argTypes:
    - struct nb_node*
    - char*
    - void*
    - struct yang_list_keys*
    - struct yang_translator*
    - uint32_t
    - nb_oper_data_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1858
    functionDepth: 2
    functionLinenumber: 1858
    functionLinenumberEnd: 1879
    functionName: nb_oper_data_iter_leaf
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - nb_callback_get_elem
    - lysc_is_key
    linkageType: ''
    returnType: int
    signature: "int nb_oper_data_iter_leaf(const struct nb_node *nb_node,\n\t\t\t\t
      \ const char *xpath, const void *list_entry,\n\t\t\t\t  const struct yang_list_keys
      *list_keys,\n\t\t\t\t  struct yang_translator *translator,\n\t\t\t\t  uint32_t
      flags, nb_oper_data_cb cb, void *arg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1891,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound.c:1899,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1910,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1914,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:1915,1
    - Dst: nb_oper_data_iter_children
      Src: /src/frr/lib/northbound.c:1920,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 8
    argNames:
    - nb_node
    - xpath
    - list_entry
    - list_keys
    - translator
    - flags
    - cb
    - arg
    argTypes:
    - struct nb_node*
    - char*
    - void*
    - struct yang_list_keys*
    - struct yang_translator*
    - uint32_t
    - nb_oper_data_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1881
    functionDepth: 2
    functionLinenumber: 1881
    functionLinenumberEnd: 1922
    functionName: nb_oper_data_iter_container
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - CHECK_FLAG
    - nb_callback_get_elem
    - nb_oper_data_iter_children
    linkageType: ''
    returnType: int
    signature: "int nb_oper_data_iter_container(const struct nb_node *nb_node,\n\t\t\t\t
      \      const char *xpath,\n\t\t\t\t       const void *list_entry,\n\t\t\t\t
      \      const struct yang_list_keys *list_keys,\n\t\t\t\t       struct yang_translator
      *translator,\n\t\t\t\t       uint32_t flags, nb_oper_data_cb cb,\n\t\t\t\t       void
      *arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1933,1
    - Dst: nb_callback_get_next
      Src: /src/frr/lib/northbound.c:1940,1
    - Dst: nb_callback_get_elem
      Src: /src/frr/lib/northbound.c:1946,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 8
    argNames:
    - nb_node
    - xpath
    - parent_list_entry
    - parent_list_keys
    - translator
    - flags
    - cb
    - arg
    argTypes:
    - struct nb_node*
    - char*
    - void*
    - struct yang_list_keys*
    - struct yang_translator*
    - uint32_t
    - nb_oper_data_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1924
    functionDepth: 2
    functionLinenumber: 1924
    functionLinenumberEnd: 1956
    functionName: nb_oper_data_iter_leaflist
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - nb_callback_get_elem
    - nb_callback_get_next
    linkageType: ''
    returnType: int
    signature: "int nb_oper_data_iter_leaflist(const struct nb_node *nb_node, const
      char *xpath,\n\t\t\t   const void *parent_list_entry,\n\t\t\t   const struct
      yang_list_keys *parent_list_keys,\n\t\t\t   struct yang_translator *translator,
      uint32_t flags,\n\t\t\t   nb_oper_data_cb cb, void *arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1969,1
    - Dst: nb_callback_get_next
      Src: /src/frr/lib/northbound.c:1980,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:1986,1
    - Dst: nb_callback_get_keys
      Src: /src/frr/lib/northbound.c:1988,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:1991,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:1998,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2001,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:2002,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2002,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2003,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2008,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:2013,1
    - Dst: nb_oper_data_iter_children
      Src: /src/frr/lib/northbound.c:2019,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 8
    argNames:
    - nb_node
    - xpath_list
    - parent_list_entry
    - parent_list_keys
    - translator
    - flags
    - cb
    - arg
    argTypes:
    - struct nb_node*
    - char*
    - void*
    - struct yang_list_keys*
    - struct yang_translator*
    - uint32_t
    - nb_oper_data_cb
    - void*
    assertStmts:
    - condition: (i < list_keys.num)
      pos:
        line_end: 2000
        line_start: 2000
        source_file: /src/frr/lib/northbound.c
    - condition: (i == list_keys.num)
      pos:
        line_end: 2007
        line_start: 2007
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2027
      start: 1958
    functionDepth: 2
    functionLinenumber: 1958
    functionLinenumberEnd: 2027
    functionName: nb_oper_data_iter_list
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - assert
    - strlen
    - flog_warn
    - snprintf
    - nb_oper_data_iter_children
    - strlcpy
    - CHECK_FLAG
    - nb_callback_get_keys
    - nb_callback_get_next
    linkageType: ''
    returnType: int
    signature: "int nb_oper_data_iter_list(const struct nb_node *nb_node,\n\t\t\t\t
      \ const char *xpath_list,\n\t\t\t\t  const void *parent_list_entry,\n\t\t\t\t
      \ const struct yang_list_keys *parent_list_keys,\n\t\t\t\t  struct yang_translator
      *translator,\n\t\t\t\t  uint32_t flags, nb_oper_data_cb cb, void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2001,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:2002,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2002,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (i < list_keys.num)
      pos:
        line_end: 2000
        line_start: 2000
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2007
      start: 2000
    functionDepth: 1
    functionLinenumber: 2000
    functionLinenumberEnd: 2007
    functionName: LY_FOR_KEYS
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    - strlen
    - assert
    linkageType: ''
    returnType: void
    signature: void LY_FOR_KEYS (snode, skey)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2041,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2042,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:2046,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:2058,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2058,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2059,1
    - Dst: snprintf
      Src: /src/frr/lib/northbound.c:2062,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2062,1
    - Dst: strlen
      Src: /src/frr/lib/northbound.c:2063,1
    - Dst: nb_oper_data_iter_container
      Src: /src/frr/lib/northbound.c:2070,1
    - Dst: nb_oper_data_iter_leaf
      Src: /src/frr/lib/northbound.c:2075,1
    - Dst: nb_oper_data_iter_leaflist
      Src: /src/frr/lib/northbound.c:2080,1
    - Dst: nb_oper_data_iter_list
      Src: /src/frr/lib/northbound.c:2085,1
    - Dst: nb_oper_data_iter_children
      Src: /src/frr/lib/northbound.c:2090,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 9
    argNames:
    - snode
    - xpath_parent
    - list_entry
    - list_keys
    - translator
    - first
    - flags
    - cb
    - arg
    argTypes:
    - struct lysc_node*
    - char*
    - void*
    - struct yang_list_keys*
    - struct yang_translator*
    - bool
    - uint32_t
    - nb_oper_data_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 2029
    functionDepth: 3
    functionLinenumber: 2029
    functionLinenumberEnd: 2099
    functionName: nb_oper_data_iter_node
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - nb_oper_data_iter_list
    - strlen
    - nb_oper_data_iter_leaflist
    - snprintf
    - nb_oper_data_iter_children
    - CHECK_FLAG
    - strlcpy
    - nb_oper_data_iter_container
    - nb_oper_data_iter_leaf
    linkageType: ''
    returnType: int
    signature: "int nb_oper_data_iter_node(const struct lysc_node *snode,\n\t\t\t\t
      \ const char *xpath_parent,\n\t\t\t\t  const void *list_entry,\n\t\t\t\t  const
      struct yang_list_keys *list_keys,\n\t\t\t\t  struct yang_translator *translator,\n\t\t\t\t
      \ bool first, uint32_t flags,\n\t\t\t\t  nb_oper_data_cb cb, void *arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound.c:2112,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:2114,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2120,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:2121,1
    - Dst: lyd_new_path2
      Src: /src/frr/lib/northbound.c:2133,1
    - Dst: ly_errmsg
      Src: /src/frr/lib/northbound.c:2137,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:2138,1
    - Dst: list_new
      Src: /src/frr/lib/northbound.c:2146,1
    - Dst: lyd_parent
      Src: /src/frr/lib/northbound.c:2147,1
    - Dst: lyd_child
      Src: /src/frr/lib/northbound.c:2148,1
    - Dst: listnode_add_head
      Src: /src/frr/lib/northbound.c:2150,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound.c:2156,1
    - Dst: memset
      Src: /src/frr/lib/northbound.c:2162,1
    - Dst: LY_LIST_FOR
      Src: /src/frr/lib/northbound.c:2163,1
    - Dst: lyd_child
      Src: /src/frr/lib/northbound.c:2163,1
    - Dst: lysc_is_key
      Src: /src/frr/lib/northbound.c:2164,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:2166,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/northbound.c:2167,1
    - Dst: yang_snode_num_keys
      Src: /src/frr/lib/northbound.c:2172,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound.c:2173,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound.c:2174,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:2181,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound.c:2185,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound.c:2186,1
    - Dst: nb_callback_lookup_entry
      Src: /src/frr/lib/northbound.c:2191,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound.c:2193,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound.c:2194,1
    - Dst: NB_ERR_NOT_FOUND
      Src: /src/frr/lib/northbound.c:2195,1
    - Dst: lyd_child
      Src: /src/frr/lib/northbound.c:2200,1
    - Dst: nb_oper_data_iter_children
      Src: /src/frr/lib/northbound.c:2201,1
    - Dst: nb_oper_data_iter_node
      Src: /src/frr/lib/northbound.c:2205,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound.c:2209,1
    - Dst: yang_dnode_free
      Src: /src/frr/lib/northbound.c:2210,1
    - Dst: nb_operation_is_valid
      Src: /src/frr/lib/northbound.c:2215,1
    - Dst: NB_OP_CREATE
      Src: /src/frr/lib/northbound.c:2223,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2224,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2235,1
    - Dst: NB_OP_MODIFY
      Src: /src/frr/lib/northbound.c:2245,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2246,1
    - Dst: lysc_is_key
      Src: /src/frr/lib/northbound.c:2256,1
    - Dst: NB_OP_DESTROY
      Src: /src/frr/lib/northbound.c:2263,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2264,1
    - Dst: lysc_is_key
      Src: /src/frr/lib/northbound.c:2272,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2283,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2289,1
    - Dst: NB_OP_MOVE
      Src: /src/frr/lib/northbound.c:2299,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2300,1
    - Dst: LYS_LEAFLIST
      Src: /src/frr/lib/northbound.c:2305,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2306,1
    - Dst: NB_OP_APPLY_FINISH
      Src: /src/frr/lib/northbound.c:2314,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2315,1
    - Dst: NB_OP_GET_ELEM
      Src: /src/frr/lib/northbound.c:2318,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2319,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2328,1
    - Dst: NB_OP_GET_NEXT
      Src: /src/frr/lib/northbound.c:2335,1
    - Dst: LYS_LIST
      Src: /src/frr/lib/northbound.c:2337,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2338,1
    - Dst: LYS_LEAFLIST
      Src: /src/frr/lib/northbound.c:2341,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2342,1
    - Dst: NB_OP_LOOKUP_ENTRY
      Src: /src/frr/lib/northbound.c:2350,1
    - Dst: LYS_LIST
      Src: /src/frr/lib/northbound.c:2352,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2353,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2355,1
    - Dst: NB_OP_RPC
      Src: /src/frr/lib/northbound.c:2362,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2363,1
    - Dst: DEFINE_HOOK
      Src: /src/frr/lib/northbound.c:2379,1
    - Dst: nb_notification_send
      Src: /src/frr/lib/northbound.c:2382,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:2386,1
    - Dst: hook_call
      Src: /src/frr/lib/northbound.c:2388,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound.c:2390,1
    - Dst: running_config_entry_cmp
      Src: /src/frr/lib/northbound.c:2401,1
    - Dst: strmatch
      Src: /src/frr/lib/northbound.c:2406,1
    - Dst: running_config_entry_key_make
      Src: /src/frr/lib/northbound.c:2409,1
    - Dst: string_hash_make
      Src: /src/frr/lib/northbound.c:2411,1
    - Dst: running_config_entry_alloc
      Src: /src/frr/lib/northbound.c:2414,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:2419,1
    - Dst: xpath::xpath
      Src: /src/frr/lib/northbound.c:2419,1
    - Dst: xpath::xpath
      Src: /src/frr/lib/northbound.c:2419,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 5
    argNames:
    - xpath
    - translator
    - flags
    - cb
    - arg
    argTypes:
    - char*
    - struct yang_translator*
    - uint32_t
    - nb_oper_data_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2422
      start: 2101
    functionDepth: 4
    functionLinenumber: 2101
    functionLinenumberEnd: 2422
    functionName: nb_oper_data_iterate
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - NB_OP_DESTROY
    - list_delete
    - nb_oper_data_iter_children
    - nb_oper_data_iter_node
    - string_hash_make
    - yang_dnode_free
    - NB_OP_GET_NEXT
    - yang_dnode_get_string
    - LYS_LEAFLIST
    - NB_OP_GET_ELEM
    - strmatch
    - ly_errmsg
    - xpath::xpath
    - flog_warn
    - memset
    - lyd_new_path2
    - lysc_is_key
    - hook_call
    - ALL_LIST_ELEMENTS_RO
    - NB_OP_APPLY_FINISH
    - nb_notification_send
    - running_config_entry_alloc
    - NB_OP_MODIFY
    - running_config_entry_cmp
    - yang_snode_num_keys
    - running_config_entry_key_make
    - NB_ERR_NOT_FOUND
    - lyd_parent
    - NB_OP_RPC
    - strlcpy
    - LY_LIST_FOR
    - DEFINE_HOOK
    - nb_callback_lookup_entry
    - nb_node_find
    - LYS_LIST
    - nb_operation_is_valid
    - DEBUGD
    - CHECK_FLAG
    - list_new
    - lyd_child
    - NB_OP_CREATE
    - NB_OP_MOVE
    - NB_OP_LOOKUP_ENTRY
    - listnode_add_head
    linkageType: ''
    returnType: int
    signature: "int nb_oper_data_iterate(const char *xpath, struct yang_translator
      *translator,\n\t\t\t uint32_t flags, nb_oper_data_cb cb, void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/northbound.c:2426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2424
    functionDepth: 0
    functionLinenumber: 2424
    functionLinenumberEnd: 2427
    functionName: running_config_entry_free
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void running_config_entry_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:2433,1
    - Dst: hash_get
      Src: /src/frr/lib/northbound.c:2434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - entry
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2429
    functionDepth: 3
    functionLinenumber: 2429
    functionLinenumberEnd: 2437
    functionName: nb_running_set_entry
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 28
    functionsReached:
    - hash_get
    - yang_dnode_get_path
    linkageType: ''
    returnType: void
    signature: void nb_running_set_entry(const struct lyd_node *dnode, void *entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_to_list
      Src: /src/frr/lib/northbound.c:2442,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/northbound.c:2445,1
    - Dst: frrstr_startswith
      Src: /src/frr/lib/northbound.c:2446,1
    - Dst: hash_release
      Src: /src/frr/lib/northbound.c:2449,1
    - Dst: frrstr_replace
      Src: /src/frr/lib/northbound.c:2452,1
    - Dst: strlcpy
      Src: /src/frr/lib/northbound.c:2453,1
    - Dst: XFREE
      Src: /src/frr/lib/northbound.c:2454,1
    - Dst: hash_get
      Src: /src/frr/lib/northbound.c:2456,1
    - Dst: list_delete
      Src: /src/frr/lib/northbound.c:2460,1
    - Dst: nb_running_unset_entry_helper
      Src: /src/frr/lib/northbound.c:2463,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:2469,1
    - Dst: hash_release
      Src: /src/frr/lib/northbound.c:2470,1
    - Dst: running_config_entry_free
      Src: /src/frr/lib/northbound.c:2473,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/northbound.c:2477,1
    - Dst: nb_running_unset_entry_helper
      Src: /src/frr/lib/northbound.c:2479,1
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2491,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - xpath_from
    - xpath_to
    argTypes:
    - char*
    - char*
    assertStmts:
    - condition: (entry)
      pos:
        line_end: 2490
        line_start: 2490
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2494
      start: 2439
    functionDepth: 3
    functionLinenumber: 2439
    functionLinenumberEnd: 2494
    functionName: nb_running_move_tree
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - list_delete
    - frrstr_replace
    - frrstr_startswith
    - ALL_LIST_ELEMENTS_RO
    - strlcpy
    - nb_running_unset_entry_helper
    - CHECK_FLAG
    - hash_to_list
    - running_config_entry_free
    - XFREE
    - yang_dnode_get_path
    - hash_release
    - hash_get
    - assert
    linkageType: ''
    returnType: void
    signature: void nb_running_move_tree(const char *xpath_from, const char *xpath_to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry_helper
      Src: /src/frr/lib/northbound.c:2479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2480
      start: 2478
    functionDepth: 0
    functionLinenumber: 2478
    functionLinenumberEnd: 2480
    functionName: LY_LIST_FOR
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 9
    functionsReached:
    - nb_running_unset_entry_helper
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR (lyd_child(dnode), child)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2505,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/northbound.c:2508,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:2513,1
    - Dst: hash_lookup
      Src: /src/frr/lib/northbound.c:2514,1
    - Dst: lyd_parent
      Src: /src/frr/lib/northbound.c:2520,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/northbound.c:2526,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound.c:2527,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/northbound.c:2529,1
    - Dst: abort
      Src: /src/frr/lib/northbound.c:2530,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - dnode
    - xpath
    - abort_if_not_found
    - rec_search
    argTypes:
    - struct lyd_node*
    - char*
    - bool
    - bool
    assertStmts:
    - condition: (dnode || xpath)
      pos:
        line_end: 2504
        line_start: 2504
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2531
      start: 2496
    functionDepth: 4
    functionLinenumber: 2496
    functionLinenumberEnd: 2531
    functionName: nb_running_get_entry_worker
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - yang_dnode_get
    - abort
    - hash_lookup
    - flog_err
    - zlog_backtrace
    - yang_dnode_get_path
    - assert
    linkageType: ''
    returnType: void
    signature: "void *nb_running_get_entry_worker(const struct lyd_node *dnode,\n\t\t\t\t\t
      const char *xpath,\n\t\t\t\t\t bool abort_if_not_found,\n\t\t\t\t\t bool rec_search)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry_worker
      Src: /src/frr/lib/northbound.c:2536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnode
    - xpath
    - abort_if_not_found
    argTypes:
    - struct lyd_node*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2538
      start: 2533
    functionDepth: 5
    functionLinenumber: 2533
    functionLinenumberEnd: 2538
    functionName: nb_running_get_entry
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 391
    functionsReached:
    - nb_running_get_entry_worker
    linkageType: ''
    returnType: void
    signature: "void *nb_running_get_entry(const struct lyd_node *dnode, const char
      *xpath,\n\t\t\t   bool abort_if_not_found)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry_worker
      Src: /src/frr/lib/northbound.c:2543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnode
    - xpath
    - abort_if_not_found
    argTypes:
    - struct lyd_node*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2545
      start: 2540
    functionDepth: 5
    functionLinenumber: 2540
    functionLinenumberEnd: 2545
    functionName: nb_running_get_entry_non_rec
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 1
    functionsReached:
    - nb_running_get_entry_worker
    linkageType: ''
    returnType: void
    signature: "void *nb_running_get_entry_non_rec(const struct lyd_node *dnode,\n\t\t\t\t
      \  const char *xpath, bool abort_if_not_found)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - event
    argTypes:
    - enum nb_event
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 2560
        line_start: 2560
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2562
      start: 2548
    functionDepth: 1
    functionLinenumber: 2548
    functionLinenumberEnd: 2562
    functionName: nb_event_name
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *nb_event_name(enum nb_event event)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - operation
    argTypes:
    - enum nb_operation
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 2590
        line_start: 2590
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2592
      start: 2564
    functionDepth: 1
    functionLinenumber: 2564
    functionLinenumberEnd: 2592
    functionName: nb_operation_name
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 7
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *nb_operation_name(enum nb_operation operation)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - error
    argTypes:
    - enum nb_error
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 2614
        line_start: 2614
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2616
      start: 2594
    functionDepth: 1
    functionLinenumber: 2594
    functionLinenumberEnd: 2616
    functionName: nb_err_name
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 11
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *nb_err_name(enum nb_error error)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/northbound.c:2639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - client
    argTypes:
    - enum nb_client
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 2638
        line_start: 2638
        source_file: /src/frr/lib/northbound.c
    constantsTouched: []
    func_position:
      end: 2640
      start: 2618
    functionDepth: 1
    functionLinenumber: 2618
    functionLinenumberEnd: 2640
    functionName: nb_client_name
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *nb_client_name(enum nb_client client)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/lib/northbound.c:2653,1
    - Dst: exit
      Src: /src/frr/lib/northbound.c:2656,1
    - Dst: nb_node_find
      Src: /src/frr/lib/northbound.c:2659,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound.c:2661,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct frr_yang_module_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2642
    functionDepth: 3
    functionLinenumber: 2642
    functionLinenumberEnd: 2672
    functionName: nb_load_callbacks
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - exit
    - nb_node_find
    - flog_warn
    - zlog_err
    linkageType: ''
    returnType: void
    signature: void nb_load_callbacks(const struct frr_yang_module_info *module)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound.c:2678,1
    - Dst: flog_err
      Src: /src/frr/lib/northbound.c:2680,1
    - Dst: exit
      Src: /src/frr/lib/northbound.c:2684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2686
      start: 2674
    functionDepth: 3
    functionLinenumber: 2674
    functionLinenumberEnd: 2686
    functionName: nb_validate_callbacks
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 0
    functionsReached:
    - exit
    - flog_err
    - yang_snodes_iterate
    linkageType: ''
    returnType: void
    signature: void nb_validate_callbacks(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_init
      Src: /src/frr/lib/northbound.c:2707,1
    - Dst: DEBUGD
      Src: /src/frr/lib/northbound.c:2711,1
    - Dst: yang_module_load
      Src: /src/frr/lib/northbound.c:2713,1
    - Dst: yang_init_loading_complete
      Src: /src/frr/lib/northbound.c:2717,1
    - Dst: yang_snodes_iterate
      Src: /src/frr/lib/northbound.c:2721,1
    - Dst: nb_load_callbacks
      Src: /src/frr/lib/northbound.c:2723,1
    - Dst: nb_validate_callbacks
      Src: /src/frr/lib/northbound.c:2727,1
    - Dst: nb_config_new
      Src: /src/frr/lib/northbound.c:2730,1
    - Dst: hash_create
      Src: /src/frr/lib/northbound.c:2731,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/northbound.c:2734,1
    - Dst: nb_cli_init
      Src: /src/frr/lib/northbound.c:2737,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - tm
    - modules
    - nmodules
    - db_enabled
    argTypes:
    - struct event_loop*
    - struct frr_yang_module_info*[]
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2738
      start: 2689
    functionDepth: 4
    functionLinenumber: 2689
    functionLinenumberEnd: 2738
    functionName: nb_init
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 10
    functionsReached:
    - yang_init
    - yang_module_load
    - hash_create
    - DEBUGD
    - nb_validate_callbacks
    - pthread_mutex_init
    - nb_config_new
    - nb_cli_init
    - yang_snodes_iterate
    - yang_init_loading_complete
    - nb_load_callbacks
    linkageType: ''
    returnType: void
    signature: "void nb_init(struct event_loop *tm,\n\t     const struct frr_yang_module_info
      *const modules[],\n\t     size_t nmodules, bool db_enabled)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_terminate
      Src: /src/frr/lib/northbound.c:2743,1
    - Dst: nb_nodes_delete
      Src: /src/frr/lib/northbound.c:2746,1
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/northbound.c:2749,1
    - Dst: nb_config_free
      Src: /src/frr/lib/northbound.c:2750,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/northbound.c:2751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2752
      start: 2740
    functionDepth: 4
    functionLinenumber: 2740
    functionLinenumberEnd: 2752
    functionName: nb_terminate
    functionSourceFile: /src/frr/lib/northbound.c
    functionUses: 8
    functionsReached:
    - hash_clean_and_free
    - nb_nodes_delete
    - nb_cli_terminate
    - pthread_mutex_destroy
    - nb_config_free
    linkageType: ''
    returnType: void
    signature: void nb_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: seqlock_assert_valid
    functionSourceFile: /src/frr/lib/seqlock.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: seqlock_assert_valid(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: SEQLOCK_VAL
    functionSourceFile: /src/frr/lib/seqlock.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SEQLOCK_VAL(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/seqlock.h:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sqlo
    argTypes:
    - struct seqlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: seqlock_held
    functionSourceFile: /src/frr/lib/seqlock.h
    functionUses: 4
    functionsReached:
    - atomic_load_explicit
    linkageType: ''
    returnType: bool
    signature: bool seqlock_held(struct seqlock *sqlo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: seqlock_acquire_val
      Src: /src/frr/lib/seqlock.h:119,1
    - Dst: seqlock_cur
      Src: /src/frr/lib/seqlock.h:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sqlo
    - ref
    argTypes:
    - struct seqlock*
    - struct seqlock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: seqlock_acquire
    functionSourceFile: /src/frr/lib/seqlock.h
    functionUses: 4
    functionsReached:
    - seqlock_acquire_val
    - seqlock_cur
    linkageType: ''
    returnType: void
    signature: void seqlock_acquire(struct seqlock *sqlo, struct seqlock *ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 32
    functionName: backoff_debug
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: backoff_debug(...)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum spf_backoff_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: spf_backoff_state2str
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *spf_backoff_state2str(enum spf_backoff_state state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/spf_backoff.c:80,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/spf_backoff.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 7
    argNames:
    - m
    - name
    - init_delay
    - short_delay
    - long_delay
    - holddown
    - timetolearn
    argTypes:
    - struct event_loop*
    - char*
    - long
    - long
    - long
    - long
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 93
    functionName: spf_backoff_new
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 2
    functionsReached:
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: struct spf_backoff
    signature: "struct spf_backoff *spf_backoff_new(struct event_loop *m, const char
      *name,\n\t\t\t\t    long init_delay, long short_delay,\n\t\t\t\t    long long_delay,
      long holddown,\n\t\t\t\t    long timetolearn)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/lib/spf_backoff.c:100,1
    - Dst: event_cancel
      Src: /src/frr/lib/spf_backoff.c:101,1
    - Dst: XFREE
      Src: /src/frr/lib/spf_backoff.c:102,1
    - Dst: XFREE
      Src: /src/frr/lib/spf_backoff.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - backoff
    argTypes:
    - struct spf_backoff*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 5
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: spf_backoff_free
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 4
    functionsReached:
    - event_cancel
    - XFREE
    linkageType: ''
    returnType: void
    signature: void spf_backoff_free(struct spf_backoff *backoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/spf_backoff.c:109,1
    - Dst: backoff_debug
      Src: /src/frr/lib/spf_backoff.c:112,1
    - Dst: spf_backoff_state2str
      Src: /src/frr/lib/spf_backoff.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: spf_backoff_timetolearn_elapsed
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached:
    - spf_backoff_state2str
    - backoff_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void spf_backoff_timetolearn_elapsed(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/spf_backoff.c:118,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/spf_backoff.c:120,1
    - Dst: timerclear
      Src: /src/frr/lib/spf_backoff.c:121,1
    - Dst: backoff_debug
      Src: /src/frr/lib/spf_backoff.c:123,1
    - Dst: spf_backoff_state2str
      Src: /src/frr/lib/spf_backoff.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 125
    functionName: spf_backoff_holddown_elapsed
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached:
    - backoff_debug
    - spf_backoff_state2str
    - EVENT_OFF
    - EVENT_ARG
    - timerclear
    linkageType: ''
    returnType: void
    signature: void spf_backoff_holddown_elapsed(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/lib/spf_backoff.c:132,1
    - Dst: backoff_debug
      Src: /src/frr/lib/spf_backoff.c:134,1
    - Dst: spf_backoff_state2str
      Src: /src/frr/lib/spf_backoff.c:135,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/spf_backoff.c:142,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/spf_backoff.c:145,1
    - Dst: event_cancel
      Src: /src/frr/lib/spf_backoff.c:153,1
    - Dst: event_add_timer_msec
      Src: /src/frr/lib/spf_backoff.c:154,1
    - Dst: backoff_debug
      Src: /src/frr/lib/spf_backoff.c:164,1
    - Dst: spf_backoff_state2str
      Src: /src/frr/lib/spf_backoff.c:166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - backoff
    argTypes:
    - struct spf_backoff*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 127
    functionDepth: 5
    functionLinenumber: 127
    functionLinenumberEnd: 168
    functionName: spf_backoff_schedule
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached:
    - spf_backoff_state2str
    - backoff_debug
    - event_cancel
    - event_add_timer_msec
    - gettimeofday
    linkageType: ''
    returnType: long
    signature: long spf_backoff_schedule(struct spf_backoff *backoff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/frr/lib/spf_backoff.c:179,1
    - Dst: strftime
      Src: /src/frr/lib/spf_backoff.c:181,1
    - Dst: strlen
      Src: /src/frr/lib/spf_backoff.c:186,1
    - Dst: snprintf
      Src: /src/frr/lib/spf_backoff.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 191
    functionName: timeval_format
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached:
    - strlen
    - localtime_r
    - snprintf
    - strftime
    linkageType: ''
    returnType: char
    signature: char *timeval_format(struct timeval *tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:196,1
    - Dst: spf_backoff_state2str
      Src: /src/frr/lib/spf_backoff.c:197,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:198,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:200,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:202,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:204,1
    - Dst: event_timer_remain
      Src: /src/frr/lib/spf_backoff.c:207,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:209,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:214,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:217,1
    - Dst: event_timer_remain
      Src: /src/frr/lib/spf_backoff.c:221,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:222,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:227,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:230,1
    - Dst: timeval_format
      Src: /src/frr/lib/spf_backoff.c:231,1
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:232,1
    - Dst: timeval_format
      Src: /src/frr/lib/spf_backoff.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - backoff
    - vty
    - prefix
    argTypes:
    - struct spf_backoff*
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 234
    functionName: spf_backoff_show
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached:
    - spf_backoff_state2str
    - timeval_format
    - vty_out
    - event_timer_remain
    linkageType: ''
    returnType: void
    signature: "void spf_backoff_show(struct spf_backoff *backoff, struct vty *vty,\n\t\t
      \     const char *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/spf_backoff.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 267
    functionName: spf_backoff_write_config
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int spf_backoff_write_config(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/spf_backoff.c:271,1
    - Dst: install_element
      Src: /src/frr/lib/spf_backoff.c:272,1
    - Dst: install_element
      Src: /src/frr/lib/spf_backoff.c:273,1
    - Dst: install_element
      Src: /src/frr/lib/spf_backoff.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 275
    functionName: spf_backoff_cmd_init
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void spf_backoff_cmd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backoff
    argTypes:
    - struct spf_backoff*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 280
    functionName: spf_backoff_init_delay
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long spf_backoff_init_delay(struct spf_backoff *backoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backoff
    argTypes:
    - struct spf_backoff*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: spf_backoff_short_delay
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long spf_backoff_short_delay(struct spf_backoff *backoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backoff
    argTypes:
    - struct spf_backoff*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: spf_backoff_long_delay
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long spf_backoff_long_delay(struct spf_backoff *backoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backoff
    argTypes:
    - struct spf_backoff*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 295
    functionName: spf_backoff_holddown
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long spf_backoff_holddown(struct spf_backoff *backoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - backoff
    argTypes:
    - struct spf_backoff*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 300
    functionName: spf_backoff_timetolearn
    functionSourceFile: /src/frr/lib/spf_backoff.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: long
    signature: long spf_backoff_timetolearn(struct spf_backoff *backoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ttable_del_row
      Src: /src/frr/lib/termtable.c:84,1
    - Dst: XFREE
      Src: /src/frr/lib/termtable.c:86,1
    - Dst: XFREE
      Src: /src/frr/lib/termtable.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tt
    argTypes:
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: ttable_del
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 6
    functionsReached:
    - ttable_del_row
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ttable_del(struct ttable *tt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/termtable.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - style
    argTypes:
    - struct ttable_style*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 102
    functionName: ttable_new
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 7
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ttable
    signature: struct ttable *ttable_new(const struct ttable_style *style)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/termtable.c:125,1
    - Dst: MAX
      Src: /src/frr/lib/termtable.c:145,1
    - Dst: XREALLOC
      Src: /src/frr/lib/termtable.c:146,1
    - Dst: XCALLOC
      Src: /src/frr/lib/termtable.c:150,1
    - Dst: vasnprintfrr
      Src: /src/frr/lib/termtable.c:152,1
    - Dst: strsep
      Src: /src/frr/lib/termtable.c:156,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/termtable.c:157,1
    - Dst: XFREE
      Src: /src/frr/lib/termtable.c:163,1
    - Dst: memmove
      Src: /src/frr/lib/termtable.c:169,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 4
    argNames:
    - tt
    - i
    - format
    - ap
    argTypes:
    - struct ttable*
    - int
    - char*
    - va_list
    assertStmts:
    - condition: (i >= -1 && i < tt->nrows)
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/frr/lib/termtable.c
    constantsTouched: []
    func_position:
      end: 177
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 177
    functionName: ttable_insert_row_va
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - MAX
    - memmove
    - XSTRDUP
    - XFREE
    - vasnprintfrr
    - strsep
    - XREALLOC
    - assert
    linkageType: ''
    returnType: struct ttable_cell
    signature: "struct ttable_cell *ttable_insert_row_va(struct ttable *tt, int i,\n\t\t\t\t\t\tconst
      char *format, va_list ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/termtable.c:185,1
    - Dst: ttable_insert_row_va
      Src: /src/frr/lib/termtable.c:186,1
    - Dst: va_end
      Src: /src/frr/lib/termtable.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tt
    - i
    - format
    argTypes:
    - struct ttable*
    - unsigned int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 190
    functionName: ttable_insert_row
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 1
    functionsReached:
    - va_start
    - va_end
    - ttable_insert_row_va
    linkageType: ''
    returnType: struct ttable_cell
    signature: "struct ttable_cell *ttable_insert_row(struct ttable *tt, unsigned
      int i,\n\t\t\t\t      const char *format, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/termtable.c:197,1
    - Dst: ttable_insert_row_va
      Src: /src/frr/lib/termtable.c:198,1
    - Dst: va_end
      Src: /src/frr/lib/termtable.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tt
    - format
    argTypes:
    - struct ttable*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 202
    functionName: ttable_add_row
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 8
    functionsReached:
    - va_start
    - va_end
    - ttable_insert_row_va
    linkageType: ''
    returnType: struct ttable_cell
    signature: struct ttable_cell *ttable_add_row(struct ttable *tt, const char *format,
      ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/termtable.c:206,1
    - Dst: XFREE
      Src: /src/frr/lib/termtable.c:209,1
    - Dst: XFREE
      Src: /src/frr/lib/termtable.c:211,1
    - Dst: memmove
      Src: /src/frr/lib/termtable.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - tt
    - i
    argTypes:
    - struct ttable*
    - unsigned int
    assertStmts:
    - condition: ((int)i < tt->nrows)
      pos:
        line_end: 205
        line_start: 205
        source_file: /src/frr/lib/termtable.c
    constantsTouched: []
    func_position:
      end: 220
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 220
    functionName: ttable_del_row
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 2
    functionsReached:
    - XFREE
    - assert
    - memmove
    linkageType: ''
    returnType: void
    signature: void ttable_del_row(struct ttable *tt, unsigned int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/termtable.c:225,1
    - Dst: assert
      Src: /src/frr/lib/termtable.c:226,1
    - Dst: assert
      Src: /src/frr/lib/termtable.c:227,1
    - Dst: assert
      Src: /src/frr/lib/termtable.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 6
    argNames:
    - tt
    - row
    - col
    - nrow
    - ncol
    - align
    argTypes:
    - struct ttable*
    - unsigned int
    - unsigned int
    - unsigned int
    - unsigned int
    - enum ttable_align
    assertStmts:
    - condition: ((int)row < tt->nrows)
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/frr/lib/termtable.c
    - condition: ((int)col + (int)ncol <= tt->ncols)
      pos:
        line_end: 227
        line_start: 227
        source_file: /src/frr/lib/termtable.c
    - condition: ((int)col < tt->ncols)
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/frr/lib/termtable.c
    - condition: ((int)row + (int)nrow <= tt->nrows)
      pos:
        line_end: 226
        line_start: 226
        source_file: /src/frr/lib/termtable.c
    constantsTouched: []
    func_position:
      end: 233
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 233
    functionName: ttable_align
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: "void ttable_align(struct ttable *tt, unsigned int row, unsigned int
      col,\n\t\t  unsigned int nrow, unsigned int ncol, enum ttable_align align)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - cell
    - align
    - pad
    argTypes:
    - struct ttable_cell*
    - enum ttable_align
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: ttable_cell_pad
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ttable_cell_pad(struct ttable_cell *cell, enum ttable_align align,\n\t\t\t
      \   short pad)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/termtable.c:248,1
    - Dst: assert
      Src: /src/frr/lib/termtable.c:249,1
    - Dst: assert
      Src: /src/frr/lib/termtable.c:250,1
    - Dst: assert
      Src: /src/frr/lib/termtable.c:251,1
    - Dst: ttable_cell_pad
      Src: /src/frr/lib/termtable.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 7
    argNames:
    - tt
    - row
    - col
    - nrow
    - ncol
    - align
    - pad
    argTypes:
    - struct ttable*
    - unsigned int
    - unsigned int
    - unsigned int
    - unsigned int
    - enum ttable_align
    - short
    assertStmts:
    - condition: ((int)row < tt->nrows)
      pos:
        line_end: 247
        line_start: 247
        source_file: /src/frr/lib/termtable.c
    - condition: ((int)row + (int)nrow <= tt->nrows)
      pos:
        line_end: 249
        line_start: 249
        source_file: /src/frr/lib/termtable.c
    - condition: ((int)col + (int)ncol <= tt->ncols)
      pos:
        line_end: 250
        line_start: 250
        source_file: /src/frr/lib/termtable.c
    - condition: ((int)col < tt->ncols)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/frr/lib/termtable.c
    constantsTouched: []
    func_position:
      end: 256
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 256
    functionName: ttable_pad
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 1
    functionsReached:
    - assert
    - ttable_cell_pad
    linkageType: ''
    returnType: void
    signature: "void ttable_pad(struct ttable *tt, unsigned int row, unsigned int
      col,\n\t\tunsigned int nrow, unsigned int ncol, enum ttable_align align,\n\t\tshort
      pad)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - tt
    argTypes:
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 263
    functionName: ttable_restyle
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ttable_restyle(struct ttable *tt)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - tt
    - col
    - align
    - 'on'
    - sep
    argTypes:
    - struct ttable*
    - unsigned int
    - enum ttable_align
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 277
    functionName: ttable_colseps
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ttable_colseps(struct ttable *tt, unsigned int col,\n\t\t    enum
      ttable_align align, bool on, char sep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - tt
    - row
    - align
    - 'on'
    - sep
    argTypes:
    - struct ttable*
    - unsigned int
    - enum ttable_align
    - bool
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 291
    functionName: ttable_rowseps
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ttable_rowseps(struct ttable *tt, unsigned int row,\n\t\t    enum
      ttable_align align, bool on, char sep)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/termtable.c:310,1
    - Dst: memset
      Src: /src/frr/lib/termtable.c:313,1
    - Dst: strlen
      Src: /src/frr/lib/termtable.c:319,1
    - Dst: MAX
      Src: /src/frr/lib/termtable.c:326,1
    - Dst: strlen
      Src: /src/frr/lib/termtable.c:334,1
    - Dst: XCALLOC
      Src: /src/frr/lib/termtable.c:350,1
    - Dst: XCALLOC
      Src: /src/frr/lib/termtable.c:352,1
    - Dst: memset
      Src: /src/frr/lib/termtable.c:354,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:361,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:363,1
    - Dst: XCALLOC
      Src: /src/frr/lib/termtable.c:366,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:370,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:376,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:385,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:401,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:405,1
    - Dst: sprintf
      Src: /src/frr/lib/termtable.c:428,1
    - Dst: sprintf
      Src: /src/frr/lib/termtable.c:431,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:443,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:448,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:464,1
    - Dst: assert
      Src: /src/frr/lib/termtable.c:468,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:472,1
    - Dst: memcpy
      Src: /src/frr/lib/termtable.c:478,1
    - Dst: XFREE
      Src: /src/frr/lib/termtable.c:484,1
    - Dst: XFREE
      Src: /src/frr/lib/termtable.c:485,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 124
    argCount: 2
    argNames:
    - tt
    - newline
    argTypes:
    - struct ttable*
    - char*
    assertStmts:
    - condition: (!buf[pos])
      pos:
        line_end: 467
        line_start: 467
        source_file: /src/frr/lib/termtable.c
    constantsTouched: []
    func_position:
      end: 488
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 488
    functionName: ttable_dump
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 5
    functionsReached:
    - assert
    - strlen
    - memset
    - XCALLOC
    - sprintf
    - XFREE
    - MAX
    - memcpy
    linkageType: ''
    returnType: char
    signature: char *ttable_dump(struct ttable *tt, const char *newline)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/lib/termtable.c:504,1
    - Dst: json_object_new_object
      Src: /src/frr/lib/termtable.c:511,1
    - Dst: json_object_array_add
      Src: /src/frr/lib/termtable.c:512,1
    - Dst: json_object_new_int64
      Src: /src/frr/lib/termtable.c:517,1
    - Dst: atol
      Src: /src/frr/lib/termtable.c:517,1
    - Dst: json_object_new_double
      Src: /src/frr/lib/termtable.c:520,1
    - Dst: atof
      Src: /src/frr/lib/termtable.c:520,1
    - Dst: json_object_new_string
      Src: /src/frr/lib/termtable.c:523,1
    - Dst: json_object_object_add
      Src: /src/frr/lib/termtable.c:525,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - tt
    - formats
    argTypes:
    - struct ttable*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 530
    functionName: ttable_json
    functionSourceFile: /src/frr/lib/termtable.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - atol
    - json_object_array_add
    - atof
    - json_object_new_int64
    - json_object_new_double
    - json_object_new_string
    - json_object_object_add
    linkageType: ''
    returnType: json_object
    signature: json_object *ttable_json(struct ttable *tt, const char *const formats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: db_execute
      Src: /src/frr/lib/northbound_db.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 17
    functionDepth: 2
    functionLinenumber: 17
    functionLinenumberEnd: 50
    functionName: nb_db_init
    functionSourceFile: /src/frr/lib/northbound_db.c
    functionUses: 2
    functionsReached:
    - db_execute
    linkageType: ''
    returnType: int
    signature: int nb_db_init(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: db_execute
      Src: /src/frr/lib/northbound_db.c:65,1
    - Dst: db_prepare
      Src: /src/frr/lib/northbound_db.c:68,1
    - Dst: nb_client_name
      Src: /src/frr/lib/northbound_db.c:76,1
    - Dst: lyd_print_mem
      Src: /src/frr/lib/northbound_db.c:81,1
    - Dst: db_bindf
      Src: /src/frr/lib/northbound_db.c:86,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_db.c:86,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_db.c:87,1
    - Dst: strlen
      Src: /src/frr/lib/northbound_db.c:89,1
    - Dst: db_run
      Src: /src/frr/lib/northbound_db.c:93,1
    - Dst: db_finalize
      Src: /src/frr/lib/northbound_db.c:96,1
    - Dst: db_prepare
      Src: /src/frr/lib/northbound_db.c:103,1
    - Dst: db_run
      Src: /src/frr/lib/northbound_db.c:107,1
    - Dst: db_loadf
      Src: /src/frr/lib/northbound_db.c:110,1
    - Dst: db_finalize
      Src: /src/frr/lib/northbound_db.c:113,1
    - Dst: db_execute
      Src: /src/frr/lib/northbound_db.c:116,1
    - Dst: free
      Src: /src/frr/lib/northbound_db.c:123,1
    - Dst: db_finalize
      Src: /src/frr/lib/northbound_db.c:125,1
    - Dst: db_execute
      Src: /src/frr/lib/northbound_db.c:127,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 45
    argCount: 2
    argNames:
    - transaction
    - transaction_id
    argTypes:
    - struct nb_transaction*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 133
    functionName: nb_db_transaction_save
    functionSourceFile: /src/frr/lib/northbound_db.c
    functionUses: 1
    functionsReached:
    - lyd_print_mem
    - strlen
    - db_loadf
    - nb_client_name
    - db_finalize
    - free
    - db_bindf
    - db_execute
    - db_prepare
    - db_run
    linkageType: ''
    returnType: int
    signature: "int nb_db_transaction_save(const struct nb_transaction *transaction,\n\t\t\t
      \  uint32_t *transaction_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: db_prepare
      Src: /src/frr/lib/northbound_db.c:144,1
    - Dst: db_bindf
      Src: /src/frr/lib/northbound_db.c:154,1
    - Dst: db_run
      Src: /src/frr/lib/northbound_db.c:157,1
    - Dst: db_loadf
      Src: /src/frr/lib/northbound_db.c:160,1
    - Dst: lyd_parse_data_mem
      Src: /src/frr/lib/northbound_db.c:163,1
    - Dst: flog_warn
      Src: /src/frr/lib/northbound_db.c:167,1
    - Dst: nb_config_new
      Src: /src/frr/lib/northbound_db.c:170,1
    - Dst: db_finalize
      Src: /src/frr/lib/northbound_db.c:173,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - transaction_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 177
    functionName: nb_db_transaction_load
    functionSourceFile: /src/frr/lib/northbound_db.c
    functionUses: 3
    functionsReached:
    - flog_warn
    - db_loadf
    - db_finalize
    - db_bindf
    - lyd_parse_data_mem
    - nb_config_new
    - db_prepare
    - db_run
    linkageType: ''
    returnType: struct nb_config
    signature: struct nb_config *nb_db_transaction_load(uint32_t transaction_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: db_execute
      Src: /src/frr/lib/northbound_db.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - n_oldest
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 200
    functionName: nb_db_clear_transactions
    functionSourceFile: /src/frr/lib/northbound_db.c
    functionUses: 0
    functionsReached:
    - db_execute
    linkageType: ''
    returnType: int
    signature: int nb_db_clear_transactions(unsigned int n_oldest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: db_execute
      Src: /src/frr/lib/northbound_db.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - max
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 239
    functionName: nb_db_set_max_transactions
    functionSourceFile: /src/frr/lib/northbound_db.c
    functionUses: 0
    functionsReached:
    - db_execute
    linkageType: ''
    returnType: int
    signature: int nb_db_set_max_transactions(unsigned int max)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: db_prepare
      Src: /src/frr/lib/northbound_db.c:251,1
    - Dst: db_run
      Src: /src/frr/lib/northbound_db.c:261,1
    - Dst: db_loadf
      Src: /src/frr/lib/northbound_db.c:268,1
    - Dst: db_finalize
      Src: /src/frr/lib/northbound_db.c:276,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 280
    functionName: nb_db_transactions_iterate
    functionSourceFile: /src/frr/lib/northbound_db.c
    functionUses: 2
    functionsReached:
    - db_prepare
    - db_finalize
    - db_loadf
    - db_run
    linkageType: ''
    returnType: int
    signature: "int nb_db_transactions_iterate(void (*func)(void *arg, int transaction_id,\n\t\t\t\t\t
      \   const char *client_name,\n\t\t\t\t\t    const char *date,\n\t\t\t\t\t    const
      char *comment),\n\t\t\t       void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tv
    - ','
    - ts
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 27
    functionName: TIMESPEC_TO_TIMEVAL
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMESPEC_TO_TIMEVAL(tv, ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tv
    - ','
    - ts
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: TIMEVAL_TO_TIMESPEC
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMEVAL_TO_TIMESPEC(tv, ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tsp
    - ','
    - usp
    - ','
    - vsp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: timespecadd
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timespecadd(tsp, usp, vsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tsp
    - ','
    - usp
    - ','
    - vsp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: timespecsub
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timespecsub(tsp, usp, vsp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/frr/lib/monotime.h:66,1
    - Dst: TIMESPEC_TO_TIMEVAL
      Src: /src/frr/lib/monotime.h:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tvo
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: monotime
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 129
    functionsReached:
    - TIMESPEC_TO_TIMEVAL
    - clock_gettime
    linkageType: ''
    returnType: time_t
    signature: time_t monotime(struct timeval *tvo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/lib/monotime.h:86,1
    - Dst: timersub
      Src: /src/frr/lib/monotime.h:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ref
    - out
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 91
    functionName: monotime_since
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 32
    functionsReached:
    - timersub
    - monotime
    linkageType: ''
    returnType: int64_t
    signature: "int64_t monotime_since(const struct timeval *ref,\n\t\t\t\t     struct
      timeval *out)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/lib/monotime.h:97,1
    - Dst: timersub
      Src: /src/frr/lib/monotime.h:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ref
    - out
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: monotime_until
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 11
    functionsReached:
    - timersub
    - monotime
    linkageType: ''
    returnType: int64_t
    signature: "int64_t monotime_until(const struct timeval *ref,\n\t\t\t\t     struct
      timeval *out)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: monotime_since
      Src: /src/frr/lib/monotime.h:109,1
    - Dst: gettimeofday
      Src: /src/frr/lib/monotime.h:110,1
    - Dst: timersub
      Src: /src/frr/lib/monotime.h:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - mono
    - realout
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 116
    functionName: monotime_to_realtime
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 2
    functionsReached:
    - timersub
    - monotime_since
    - gettimeofday
    linkageType: ''
    returnType: time_t
    signature: "time_t monotime_to_realtime(const struct timeval *mono,\n\t\t\t\t\t
      \ struct timeval *realout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/lib/monotime.h:126,1
    - Dst: time
      Src: /src/frr/lib/monotime.h:127,1
    - Dst: ctime_r
      Src: /src/frr/lib/monotime.h:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ts
    - buf
    argTypes:
    - time_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: time_to_string
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 5
    functionsReached:
    - ctime_r
    - monotime
    - time
    linkageType: ''
    returnType: char
    signature: char *time_to_string(time_t ts, char *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gmtime_r
      Src: /src/frr/lib/monotime.h:138,1
    - Dst: snprintf
      Src: /src/frr/lib/monotime.h:141,1
    - Dst: snprintf
      Src: /src/frr/lib/monotime.h:144,1
    - Dst: snprintf
      Src: /src/frr/lib/monotime.h:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - t
    - buf
    - buflen
    argTypes:
    - time_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 150
    functionName: frrtime_to_interval
    functionSourceFile: /src/frr/lib/monotime.h
    functionUses: 8
    functionsReached:
    - snprintf
    - gmtime_r
    linkageType: ''
    returnType: char
    signature: "char *frrtime_to_interval(time_t t, char *buf,\n\t\t\t\t\t      size_t
      buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 161
    functionName: ENCODE_ARGS
    functionSourceFile: /src/frr/lib/frrscript.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENCODE_ARGS(name, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 182
    functionName: DECODE_ARGS
    functionSourceFile: /src/frr/lib/frrscript.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECODE_ARGS(name, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 211
    functionName: ENCODE_ARGS_WITH_STATE
    functionSourceFile: /src/frr/lib/frrscript.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENCODE_ARGS_WITH_STATE(L, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 231
    functionName: DECODE_ARGS_WITH_STATE
    functionSourceFile: /src/frr/lib/frrscript.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECODE_ARGS_WITH_STATE(L, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - fs
    - ','
    - f
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 296
    functionName: frrscript_call
    functionSourceFile: /src/frr/lib/frrscript.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrscript_call(fs, f, ...)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/lib/prefix.h:233,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/lib/prefix.h:235,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/lib/prefix.h:237,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/lib/prefix.h:239,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/lib/prefix.h:241,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - evp
    argTypes:
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 243
    functionName: is_evpn_prefix_ipaddr_none
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 24
    functionsReached:
    - IS_IPADDR_NONE
    linkageType: ''
    returnType: int
    signature: int is_evpn_prefix_ipaddr_none(const struct prefix_evpn *evp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.h:248,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.h:250,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.h:252,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.h:254,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/prefix.h:256,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - evp
    argTypes:
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 258
    functionName: is_evpn_prefix_ipaddr_v4
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 21
    functionsReached:
    - IS_IPADDR_V4
    linkageType: ''
    returnType: int
    signature: int is_evpn_prefix_ipaddr_v4(const struct prefix_evpn *evp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V6
      Src: /src/frr/lib/prefix.h:263,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/lib/prefix.h:265,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/lib/prefix.h:267,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/lib/prefix.h:269,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/lib/prefix.h:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - evp
    argTypes:
    - struct prefix_evpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 273
    functionName: is_evpn_prefix_ipaddr_v6
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 19
    functionsReached:
    - IS_IPADDR_V6
    linkageType: ''
    returnType: int
    signature: int is_evpn_prefix_ipaddr_v6(const struct prefix_evpn *evp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - D
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    functionName: IPV4_ADDR_CMP
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_ADDR_CMP(D,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 341
    functionName: ipv4_addr_same
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool ipv4_addr_same(const struct in_addr *a,\n\t\t\t\t  const struct
      in_addr *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - A
    - ','
    - B
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 343
    functionName: IPV4_ADDR_SAME
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 119
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_ADDR_SAME(A,B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 348
    functionName: ipv4_addr_copy
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ipv4_addr_copy(struct in_addr *dst,\n\t\t\t\t  const struct in_addr
      *src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - D
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 350
    functionName: IPV4_ADDR_COPY
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_ADDR_COPY(D,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 352
    functionName: IPV4_NET0
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_NET0(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 353
    functionName: IPV4_NET127
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_NET127(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 354
    functionName: IPV4_LINKLOCAL
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_LINKLOCAL(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 355
    functionName: IPV4_CLASS_D
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_CLASS_D(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 356
    functionName: IPV4_CLASS_E
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_CLASS_E(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 357
    functionName: IPV4_CLASS_DE
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_CLASS_DE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 358
    functionName: IPV4_MC_LINKLOCAL
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV4_MC_LINKLOCAL(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - D
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 363
    functionName: IPV6_ADDR_CMP
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV6_ADDR_CMP(D,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - D
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 364
    functionName: IPV6_ADDR_SAME
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV6_ADDR_SAME(D,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - D
    - ','
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 365
    functionName: IPV6_ADDR_COPY
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV6_ADDR_COPY(D,S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 368
    functionName: PSIZE
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PSIZE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 370
    functionName: BSIZE
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BSIZE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 373
    functionName: PREFIX_FAMILY
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_FAMILY(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: family2afi
      Src: /src/frr/lib/prefix.h:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pu
    argTypes:
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: prefix_afi
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 1
    functionsReached:
    - family2afi
    linkageType: ''
    returnType: afi_t
    signature: afi_t prefix_afi(union prefixconstptr pu)
  - 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: 437
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 437
    functionName: prefix_copy
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: prefix_copy(a, b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/lib/prefix.h:489,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/lib/prefix.h:491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 495
    functionName: ipv6_martian
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 5
    functionsReached:
    - IPV6_ADDR_SAME
    - inet_pton
    linkageType: ''
    returnType: int
    signature: int ipv6_martian(const struct in6_addr *addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipv4_unicast_valid
      Src: /src/frr/lib/prefix.h:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 505
    functionName: ipv4_martian
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 6
    functionsReached:
    - ipv4_unicast_valid
    linkageType: ''
    returnType: bool
    signature: bool ipv4_martian(const struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 511
    functionName: is_default_prefix4
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_default_prefix4(const struct prefix_ipv4 *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/prefix.h:516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 518
    functionName: is_default_prefix6
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool is_default_prefix6(const struct prefix_ipv6 *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_default_prefix4
      Src: /src/frr/lib/prefix.h:527,1
    - Dst: is_default_prefix6
      Src: /src/frr/lib/prefix.h:529,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 533
    functionName: is_default_prefix
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 16
    functionsReached:
    - is_default_prefix4
    - is_default_prefix6
    linkageType: ''
    returnType: bool
    signature: bool is_default_prefix(const struct prefix *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 542
    functionName: is_host_route
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_host_route(const struct prefix *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/prefix.h:550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 555
    functionName: is_default_host_route
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 1
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int is_default_host_route(const struct prefix *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/lib/prefix.h:559,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/lib/prefix.h:559,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/lib/prefix.h:560,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/lib/prefix.h:560,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 564
    functionName: is_ipv6_global_unicast
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - IN6_IS_ADDR_LINKLOCAL
    - IN6_IS_ADDR_MULTICAST
    - IN6_IS_ADDR_LOOPBACK
    linkageType: ''
    returnType: bool
    signature: bool is_ipv6_global_unicast(const struct in6_addr *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 586
    functionName: ipv6_mcast_scope
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ipv6_mcast_scope(const struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 591
    functionName: ipv6_mcast_nofwd
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ipv6_mcast_nofwd(const struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.h:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 599
    functionName: ipv6_mcast_ssm
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool ipv6_mcast_ssm(const struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.h:603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 607
    functionName: ipv6_mcast_reserved
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool ipv6_mcast_reserved(const struct in6_addr *addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.h:611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 621
    functionName: ipv4_mcast_scope
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ipv4_mcast_scope(const struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.h:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 629
    functionName: ipv4_mcast_nofwd
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool ipv4_mcast_nofwd(const struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/lib/prefix.h:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 637
    functionName: ipv4_mcast_ssm
    functionSourceFile: /src/frr/lib/prefix.h
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool ipv4_mcast_ssm(const struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PyErr_SetString
      Src: /src/frr/lib/command_py.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - type
    - args
    - kwds
    argTypes:
    - PyTypeObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: refuse_new
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached:
    - PyErr_SetString
    linkageType: ''
    returnType: PyObject
    signature: PyObject *refuse_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: member
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: member(name, type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyList_New
      Src: /src/frr/lib/command_py.c:106,1
    - Dst: PyList_New
      Src: /src/frr/lib/command_py.c:107,1
    - Dst: vector_active
      Src: /src/frr/lib/command_py.c:107,1
    - Dst: vector_active
      Src: /src/frr/lib/command_py.c:108,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_py.c:109,1
    - Dst: PyList_SetItem
      Src: /src/frr/lib/command_py.c:110,1
    - Dst: graph_to_pyobj
      Src: /src/frr/lib/command_py.c:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 113
    functionName: graph_node_next
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached:
    - vector_active
    - vector_slot
    - PyList_New
    - PyList_SetItem
    - graph_to_pyobj
    linkageType: ''
    returnType: PyObject
    signature: PyObject *graph_node_next(PyObject *self, PyObject *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: graph_to_pyobj
      Src: /src/frr/lib/command_py.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 131
    functionName: graph_node_join
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached:
    - graph_to_pyobj
    linkageType: ''
    returnType: PyObject
    signature: PyObject *graph_node_join(PyObject *self, PyObject *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Py_DECREF
      Src: /src/frr/lib/command_py.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: graph_node_wrap_free
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached:
    - Py_DECREF
    linkageType: ''
    returnType: void
    signature: void graph_node_wrap_free(void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/lib/command_py.c:162,1
    - Dst: vector_slot
      Src: /src/frr/lib/command_py.c:163,1
    - Dst: vector_active
      Src: /src/frr/lib/command_py.c:165,1
    - Dst: PyErr_SetString
      Src: /src/frr/lib/command_py.c:166,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/command_py.c:171,1
    - Dst: tp_alloc
      Src: /src/frr/lib/command_py.c:175,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/command_py.c:180,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:195,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:196,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:197,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:198,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:199,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:200,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:201,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:202,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:203,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:204,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:207,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:208,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:209,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:210,1
    - Dst: item
      Src: /src/frr/lib/command_py.c:211,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 2
    argNames:
    - wgraph
    - gn
    argTypes:
    - struct wrap_graph*
    - struct graph_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 228
    functionName: graph_to_pyobj
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 2
    functionsReached:
    - PyErr_SetString
    - vector_active
    - vector_slot
    - tp_alloc
    - Py_INCREF
    - item
    linkageType: ''
    returnType: PyObject
    signature: "PyObject *graph_to_pyobj(struct wrap_graph *wgraph,\n\t\t\t\tstruct
      graph_node *gn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: item
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 37
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: item(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 235
    functionName: member
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: member(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_slot
      Src: /src/frr/lib/command_py.c:245,1
    - Dst: graph_to_pyobj
      Src: /src/frr/lib/command_py.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - self
    - args
    argTypes:
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 247
    functionName: graph_first
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached:
    - vector_slot
    - graph_to_pyobj
    linkageType: ''
    returnType: PyObject
    signature: PyObject *graph_first(PyObject *self, PyObject *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: graph_delete_graph
      Src: /src/frr/lib/command_py.c:260,1
    - Dst: free
      Src: /src/frr/lib/command_py.c:261,1
    - Dst: free
      Src: /src/frr/lib/command_py.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 263
    functionName: graph_wrap_free
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached:
    - graph_delete_graph
    - free
    linkageType: ''
    returnType: void
    signature: void graph_wrap_free(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tp_alloc
      Src: /src/frr/lib/command_py.c:283,1
    - Dst: PyArg_ParseTupleAndKeywords
      Src: /src/frr/lib/command_py.c:287,1
    - Dst: graph_new
      Src: /src/frr/lib/command_py.c:291,1
    - Dst: cmd_token_new
      Src: /src/frr/lib/command_py.c:292,1
    - Dst: graph_new_node
      Src: /src/frr/lib/command_py.c:293,1
    - Dst: cmd_graph_parse
      Src: /src/frr/lib/command_py.c:296,1
    - Dst: cmd_graph_names
      Src: /src/frr/lib/command_py.c:297,1
    - Dst: strdup
      Src: /src/frr/lib/command_py.c:300,1
    - Dst: calloc
      Src: /src/frr/lib/command_py.c:301,1
    - Dst: vector_active
      Src: /src/frr/lib/command_py.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - type
    - args
    - kwds
    argTypes:
    - PyTypeObject*
    - PyObject*
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 277
    functionDepth: 4
    functionLinenumber: 277
    functionLinenumberEnd: 304
    functionName: graph_parse
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 5
    functionsReached:
    - cmd_token_new
    - graph_new
    - vector_active
    - strdup
    - calloc
    - PyArg_ParseTupleAndKeywords
    - tp_alloc
    - cmd_graph_names
    - cmd_graph_parse
    - graph_new_node
    linkageType: ''
    returnType: PyObject
    signature: PyObject *graph_parse(PyTypeObject *type, PyObject *args, PyObject
      *kwds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 319
    functionName: modcreate
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: modcreate()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 320
    functionName: initret
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: initret(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 322
    functionName: modcreate
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: modcreate()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 328
    functionName: initret
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: initret(val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyType_Ready
      Src: /src/frr/lib/command_py.c:335,1
    - Dst: initret
      Src: /src/frr/lib/command_py.c:336,1
    - Dst: PyType_Ready
      Src: /src/frr/lib/command_py.c:337,1
    - Dst: initret
      Src: /src/frr/lib/command_py.c:338,1
    - Dst: modcreate
      Src: /src/frr/lib/command_py.c:340,1
    - Dst: initret
      Src: /src/frr/lib/command_py.c:342,1
    - Dst: PyModule_AddIntMacro
      Src: /src/frr/lib/command_py.c:344,1
    - Dst: PyModule_AddIntMacro
      Src: /src/frr/lib/command_py.c:345,1
    - Dst: PyModule_AddIntMacro
      Src: /src/frr/lib/command_py.c:346,1
    - Dst: PyModule_AddIntMacro
      Src: /src/frr/lib/command_py.c:347,1
    - Dst: initret
      Src: /src/frr/lib/command_py.c:348,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/command_py.c:350,1
    - Dst: PyModule_AddObject
      Src: /src/frr/lib/command_py.c:351,1
    - Dst: Py_INCREF
      Src: /src/frr/lib/command_py.c:352,1
    - Dst: PyModule_AddObject
      Src: /src/frr/lib/command_py.c:353,1
    - Dst: elf_py_init
      Src: /src/frr/lib/command_py.c:354,1
    - Dst: initret
      Src: /src/frr/lib/command_py.c:355,1
    - Dst: initret
      Src: /src/frr/lib/command_py.c:356,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 357
    functionName: command_py_init
    functionSourceFile: /src/frr/lib/command_py.c
    functionUses: 0
    functionsReached:
    - PyModule_AddIntMacro
    - initret
    - PyModule_AddObject
    - PyType_Ready
    - elf_py_init
    - modcreate
    - Py_INCREF
    linkageType: ''
    returnType: PyMODINIT_FUNC
    signature: PyMODINIT_FUNC command_py_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: _PREDECL_RBTREE
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _PREDECL_RBTREE(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: INIT_RBTREE_UNIQ
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_RBTREE_UNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: INIT_RBTREE_NONUNIQ
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_RBTREE_NONUNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn_nuq
    - ','
    - cmpfn_uq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 165
    functionName: _DECLARE_RBTREE
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DECLARE_RBTREE(prefix, type, field, cmpfn_nuq, cmpfn_uq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: PREDECL_RBTREE_UNIQ
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_RBTREE_UNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 187
    functionName: DECLARE_RBTREE_UNIQ
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_RBTREE_UNIQ(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: PREDECL_RBTREE_NONUNIQ
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_RBTREE_NONUNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 214
    functionName: DECLARE_RBTREE_NONUNIQ
    functionSourceFile: /src/frr/lib/typerb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_RBTREE_NONUNIQ(prefix, type, field, cmpfn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/log_filter.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lookup
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 29
    functionName: zlog_filter_lookup
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int zlog_filter_lookup(const char *lookup)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 36
    functionName: zlog_filter_clear
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zlog_filter_clear(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: (&logfilterlock)
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&logfilterlock)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_filter_lookup
      Src: /src/frr/lib/log_filter.c:44,1
    - Dst: strlcpy
      Src: /src/frr/lib/log_filter.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - filter
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 60
    functionName: zlog_filter_add
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - zlog_filter_lookup
    - strlcpy
    linkageType: ''
    returnType: int
    signature: int zlog_filter_add(const char *filter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_filter_lookup
      Src: /src/frr/lib/log_filter.c:44,1
    - Dst: strlcpy
      Src: /src/frr/lib/log_filter.c:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 58
    functionName: (&logfilterlock)
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - zlog_filter_lookup
    - strlcpy
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&logfilterlock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_filter_lookup
      Src: /src/frr/lib/log_filter.c:65,1
    - Dst: memmove
      Src: /src/frr/lib/log_filter.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - filter
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 79
    functionName: zlog_filter_del
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - zlog_filter_lookup
    - memmove
    linkageType: ''
    returnType: int
    signature: int zlog_filter_del(const char *filter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_filter_lookup
      Src: /src/frr/lib/log_filter.c:65,1
    - Dst: memmove
      Src: /src/frr/lib/log_filter.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 77
    functionName: (&logfilterlock)
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - zlog_filter_lookup
    - memmove
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&logfilterlock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/log_filter.c:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - max_size
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 99
    functionName: zlog_filter_dump
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int zlog_filter_dump(char *buf, size_t max_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/log_filter.c:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 96
    functionName: (&logfilterlock)
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&logfilterlock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmem
      Src: /src/frr/lib/log_filter.c:107,1
    - Dst: strlen
      Src: /src/frr/lib/log_filter.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 115
    functionName: search_buf
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - strlen
    - memmem
    linkageType: ''
    returnType: int
    signature: int search_buf(const char *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmem
      Src: /src/frr/lib/log_filter.c:107,1
    - Dst: strlen
      Src: /src/frr/lib/log_filter.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: (&logfilterlock)
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - strlen
    - memmem
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&logfilterlock)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/log_filter.c:126,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/log_filter.c:127,1
    - Dst: search_buf
      Src: /src/frr/lib/log_filter.c:128,1
    - Dst: zlog_fd
      Src: /src/frr/lib/log_filter.c:135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - zt
    - msgs
    - nmsgs
    argTypes:
    - struct zlog_target*
    - struct zlog_msg*[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 136
    functionName: zlog_filterfile_fd
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - zlog_msg_text
    - search_buf
    - zlog_fd
    - zlog_msg_prio
    linkageType: ''
    returnType: void
    signature: "void zlog_filterfile_fd(struct zlog_target *zt, struct zlog_msg *msgs[],\n\t\t\t
      \      size_t nmsgs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_file_init
      Src: /src/frr/lib/log_filter.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_filterfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: zlog_filterfile_init
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 1
    functionsReached:
    - zlog_file_init
    linkageType: ''
    returnType: void
    signature: void zlog_filterfile_init(struct zlog_cfg_filterfile *zcf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_file_fini
      Src: /src/frr/lib/log_filter.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_filterfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: zlog_filterfile_fini
    functionSourceFile: /src/frr/lib/log_filter.c
    functionUses: 0
    functionsReached:
    - zlog_file_fini
    linkageType: ''
    returnType: void
    signature: void zlog_filterfile_fini(struct zlog_cfg_filterfile *zcf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/frr/lib/frrlua.h:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - L
    - str
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: lua_pushstring_wrapper
    functionSourceFile: /src/frr/lib/frrlua.h
    functionUses: 1
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void lua_pushstring_wrapper(lua_State *L, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MAX
      Src: /src/frr/lib/zclient.c:60,1
    - Dst: XCALLOC
      Src: /src/frr/lib/zclient.c:62,1
    - Dst: stream_new
      Src: /src/frr/lib/zclient.c:64,1
    - Dst: stream_new
      Src: /src/frr/lib/zclient.c:65,1
    - Dst: buffer_new
      Src: /src/frr/lib/zclient.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - master
    - opt
    - handlers
    - n_handlers
    argTypes:
    - struct event_loop*
    - struct zclient_options*
    - zclient_handler**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 76
    functionName: zclient_new
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 14
    functionsReached:
    - stream_new
    - buffer_new
    - MAX
    - XCALLOC
    linkageType: ''
    returnType: struct zclient
    signature: "struct zclient *zclient_new(struct event_loop *master,\n\t\t\t    struct
      zclient_options *opt,\n\t\t\t    zclient_handler *const *handlers, size_t n_handlers)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/lib/zclient.c:86,1
    - Dst: stream_free
      Src: /src/frr/lib/zclient.c:88,1
    - Dst: buffer_free
      Src: /src/frr/lib/zclient.c:90,1
    - Dst: XFREE
      Src: /src/frr/lib/zclient.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 93
    functionName: zclient_free
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 12
    functionsReached:
    - stream_free
    - buffer_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void zclient_free(struct zclient *zclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/lib/zclient.c:104,1
    - Dst: if
      Src: /src/frr/lib/zclient.c:117,1
    - Dst: list_new
      Src: /src/frr/lib/zclient.c:118,1
    - Dst: XMALLOC
      Src: /src/frr/lib/zclient.c:120,1
    - Dst: listnode_add
      Src: /src/frr/lib/zclient.c:122,1
    - Dst: redist_del_instance
      Src: /src/frr/lib/zclient.c:125,1
    - Dst: redist_check_instance
      Src: /src/frr/lib/zclient.c:129,1
    - Dst: if
      Src: /src/frr/lib/zclient.c:130,1
    - Dst: listnode_delete
      Src: /src/frr/lib/zclient.c:133,1
    - Dst: XFREE
      Src: /src/frr/lib/zclient.c:134,1
    - Dst: list_delete
      Src: /src/frr/lib/zclient.c:137,1
    - Dst: redist_del_all_instances
      Src: /src/frr/lib/zclient.c:141,1
    - Dst: if
      Src: /src/frr/lib/zclient.c:146,1
    - Dst: for
      Src: /src/frr/lib/zclient.c:149,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/lib/zclient.c:149,1
    - Dst: redist_del_instance
      Src: /src/frr/lib/zclient.c:150,1
    - Dst: zclient_stop
      Src: /src/frr/lib/zclient.c:154,1
    - Dst: if
      Src: /src/frr/lib/zclient.c:159,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:160,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/zclient.c:163,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/zclient.c:164,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/zclient.c:165,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:168,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:169,1
    - Dst: buffer_reset
      Src: /src/frr/lib/zclient.c:172,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:176,1
    - Dst: vrf_bitmap_free
      Src: /src/frr/lib/zclient.c:183,1
    - Dst: redist_del_instance
      Src: /src/frr/lib/zclient.c:186,1
    - Dst: vrf_bitmap_free
      Src: /src/frr/lib/zclient.c:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - red
    - instance
    argTypes:
    - struct redist_proto*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 193
    functionName: redist_check_instance
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 5
    functionsReached:
    - list_delete
    - listnode_add
    - stream_reset
    - zclient_stop
    - buffer_reset
    - ALL_LIST_ELEMENTS_RO
    - vrf_bitmap_free
    - zlog_debug
    - if
    - for
    - redist_del_instance
    - redist_del_all_instances
    - EVENT_OFF
    - XFREE
    - listnode_delete
    - redist_check_instance
    - XMALLOC
    - close
    - list_new
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: unsigned short
    signature: "unsigned short *redist_check_instance(struct redist_proto *red,\n\t\t\t\t
      \     unsigned short instance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/lib/zclient.c:199,1
    - Dst: redist_del_instance
      Src: /src/frr/lib/zclient.c:202,1
    - Dst: zclient_init
      Src: /src/frr/lib/zclient.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 208
    functionName: zclient_reset
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - zclient_init
    - redist_del_instance
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void zclient_reset(struct zclient *zclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/lib/zclient.c:223,1
    - Dst: set_cloexec
      Src: /src/frr/lib/zclient.c:227,1
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/lib/zclient.c:228,1
    - Dst: connect
      Src: /src/frr/lib/zclient.c:231,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:234,1
    - Dst: safe_strerror
      Src: /src/frr/lib/zclient.c:235,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 242
    functionName: zclient_socket_connect
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - connect
    - setsockopt_so_sendbuf
    - set_cloexec
    - socket
    - close
    - zlog_debug
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int zclient_socket_connect(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/lib/zclient.c:247,1
    - Dst: zclient_event
      Src: /src/frr/lib/zclient.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 250
    functionName: zclient_failed
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_event
    - zclient_stop
    linkageType: ''
    returnType: enum zclient_send_status
    signature: enum zclient_send_status zclient_failed(struct zclient *zclient)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/zclient.c:254,1
    - Dst: buffer_flush_available
      Src: /src/frr/lib/zclient.c:259,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:261,1
    - Dst: zclient_failed
      Src: /src/frr/lib/zclient.c:265,1
    - Dst: event_add_write
      Src: /src/frr/lib/zclient.c:269,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 277
    functionName: zclient_flush_data
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - zclient_failed
    - buffer_flush_available
    - flog_err
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void zclient_flush_data(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: buffer_write
      Src: /src/frr/lib/zclient.c:289,1
    - Dst: STREAM_DATA
      Src: /src/frr/lib/zclient.c:290,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:291,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:293,1
    - Dst: zclient_failed
      Src: /src/frr/lib/zclient.c:296,1
    - Dst: EVENT_OFF
      Src: /src/frr/lib/zclient.c:298,1
    - Dst: event_add_write
      Src: /src/frr/lib/zclient.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 308
    functionName: zclient_send_message
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 26
    functionsReached:
    - event_add_write
    - zclient_failed
    - STREAM_DATA
    - stream_get_endp
    - flog_err
    - EVENT_OFF
    - buffer_write
    linkageType: ''
    returnType: enum zclient_send_status
    signature: enum zclient_send_status zclient_send_message(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:317,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:318,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:319,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:320,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - s
    - command
    - vrf_id
    argTypes:
    - struct stream*
    - uint16_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: zclient_create_header
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 64
    functionsReached:
    - stream_putw
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void zclient_create_header(struct stream *s, uint16_t command, vrf_id_t
      vrf_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_read
      Src: /src/frr/lib/zclient.c:328,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:331,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:333,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:334,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:335,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:336,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:339,1
    - Dst: stream_read
      Src: /src/frr/lib/zclient.c:346,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 7
    argNames:
    - s
    - sock
    - size
    - marker
    - version
    - vrf_id
    - cmd
    argTypes:
    - struct stream*
    - int
    - uint16_t*
    - uint8_t*
    - uint8_t*
    - vrf_id_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 352
    functionName: zclient_read_header
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - stream_read
    - STREAM_GETW
    - flog_err
    - STREAM_GETC
    - STREAM_GETL
    linkageType: ''
    returnType: int
    signature: "int zclient_read_header(struct stream *s, int sock, uint16_t *size,\n\t\t\tuint8_t
      *marker, uint8_t *version, vrf_id_t *vrf_id,\n\t\t\tuint16_t *cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:356,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:357,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:358,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:359,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - zmsg
    - hdr
    argTypes:
    - struct stream*
    - struct zmsghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 364
    functionName: zapi_parse_header
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    linkageType: ''
    returnType: bool
    signature: bool zapi_parse_header(struct stream *zmsg, struct zmsghdr *hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:374,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:377,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - zclient
    - command
    - vrf_id
    argTypes:
    - struct zclient*
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 367
    functionDepth: 4
    functionLinenumber: 367
    functionLinenumberEnd: 380
    functionName: zebra_message_send
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - stream_reset
    - zclient_send_message
    - zclient_create_header
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zebra_message_send(struct zclient *zclient,\n\t\t\t\t\t\t
      \  int command, vrf_id_t vrf_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:388,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:391,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:392,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:393,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:394,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:396,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:398,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:400,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:402,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:404,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:404,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 382
    functionDepth: 4
    functionLinenumber: 382
    functionLinenumberEnd: 409
    functionName: zclient_send_hello
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: enum zclient_send_status zclient_send_hello(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:419,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:421,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:422,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:423,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:424,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:425,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:425,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - zclient
    - vrf_id
    - afi
    - label
    - ltype
    argTypes:
    - struct zclient*
    - vrf_id_t
    - afi_t
    - mpls_label_t
    - enum lsp_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 427
    functionName: zclient_send_vrf_label
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_vrf_label(struct zclient *zclient,\n\t\t\t\t\t\tvrf_id_t
      vrf_id, afi_t afi,\n\t\t\t\t\t\tmpls_label_t label,\n\t\t\t\t\t\tenum lsp_types_t
      ltype)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_get_vrf_loopback
      Src: /src/frr/lib/zclient.c:439,1
    - Dst: memcpy
      Src: /src/frr/lib/zclient.c:451,1
    - Dst: zclient_route_send
      Src: /src/frr/lib/zclient.c:454,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:456,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:457,1
    - Dst: memset
      Src: /src/frr/lib/zclient.c:461,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:465,1
    - Dst: memcpy
      Src: /src/frr/lib/zclient.c:467,1
    - Dst: zclient_route_send
      Src: /src/frr/lib/zclient.c:471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 5
    argNames:
    - zclient
    - sid
    - vrf_id
    - action
    - context
    argTypes:
    - struct zclient*
    - struct in6_addr*
    - vrf_id_t
    - enum seg6local_action_t
    - struct seg6local_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 472
    functionName: zclient_send_localsid
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - memset
    - SET_FLAG
    - zclient_route_send
    - memcpy
    - if_get_vrf_loopback
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_localsid(struct zclient *zclient,\n\t\tconst
      struct in6_addr *sid, vrf_id_t vrf_id,\n\t\tenum seg6local_action_t action,\n\t\tconst
      struct seg6local_context *context)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:773,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:774,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:775,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:776,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:777,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:778,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/lib/zclient.c:778,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:779,1
    - Dst: PREFIX_FAMILY
      Src: /src/frr/lib/zclient.c:780,1
    - Dst: stream_put_in_addr
      Src: /src/frr/lib/zclient.c:782,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:785,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:790,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:790,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:792,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 7
    argNames:
    - zclient
    - command
    - p
    - safi
    - connected
    - resolve_via_def
    - vrf_id
    argTypes:
    - struct zclient*
    - int
    - struct prefix*
    - safi_t
    - bool
    - bool
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 765
    functionDepth: 4
    functionLinenumber: 765
    functionLinenumberEnd: 793
    functionName: zclient_send_rnh
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 7
    functionsReached:
    - zclient_create_header
    - stream_put
    - PREFIX_FAMILY
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_put_in_addr
    - stream_putw_at
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_rnh(struct zclient *zclient,
      int command,\n\t\t\t\t\t  const struct prefix *p, safi_t safi,\n\t\t\t\t\t  bool
      connected, bool resolve_via_def,\n\t\t\t\t\t  vrf_id_t vrf_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_encode
      Src: /src/frr/lib/zclient.c:820,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - cmd
    - zclient
    - api
    argTypes:
    - uint8_t
    - struct zclient*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 817
    functionDepth: 4
    functionLinenumber: 817
    functionLinenumberEnd: 823
    functionName: zclient_route_send
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 16
    functionsReached:
    - zclient_send_message
    - zapi_route_encode
    linkageType: ''
    returnType: enum zclient_send_status
    signature: enum zclient_send_status zclient_route_send(uint8_t cmd, struct zclient
      *zclient, struct zapi_route *api)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/zclient.c:834,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - next1
    - next2
    argTypes:
    - struct zapi_nexthop*
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 835
    functionName: zapi_nexthop_labels_cmp
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int zapi_nexthop_labels_cmp(const struct zapi_nexthop *next1,\n\t\t\t\t
      \  const struct zapi_nexthop *next2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/zclient.c:842,1
    - Dst: memcmp
      Src: /src/frr/lib/zclient.c:853,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - next1
    - next2
    argTypes:
    - struct zapi_nexthop*
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 855
    functionName: zapi_nexthop_srv6_cmp
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int zapi_nexthop_srv6_cmp(const struct zapi_nexthop *next1,\n\t\t\t\t
      const struct zapi_nexthop *next2)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/zclient.c:883,1
    - Dst: nexthop_g_addr_cmp
      Src: /src/frr/lib/zclient.c:890,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:916,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:917,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:919,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:920,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:923,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:924,1
    - Dst: memcmp
      Src: /src/frr/lib/zclient.c:935,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 58
    argCount: 2
    argNames:
    - next1
    - next2
    argTypes:
    - struct zapi_nexthop*
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 857
    functionDepth: 2
    functionLinenumber: 857
    functionLinenumberEnd: 943
    functionName: zapi_nexthop_cmp_no_labels
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - memcmp
    - nexthop_g_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int zapi_nexthop_cmp_no_labels(const struct zapi_nexthop *next1,\n\t\t\t\t
      \     const struct zapi_nexthop *next2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nexthop_cmp_no_labels
      Src: /src/frr/lib/zclient.c:952,1
    - Dst: zapi_nexthop_labels_cmp
      Src: /src/frr/lib/zclient.c:956,1
    - Dst: zapi_nexthop_srv6_cmp
      Src: /src/frr/lib/zclient.c:960,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - item1
    - item2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 945
    functionDepth: 3
    functionLinenumber: 945
    functionLinenumberEnd: 963
    functionName: zapi_nexthop_cmp
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zapi_nexthop_srv6_cmp
    - zapi_nexthop_cmp_no_labels
    - zapi_nexthop_labels_cmp
    linkageType: ''
    returnType: int
    signature: int zapi_nexthop_cmp(const void *item1, const void *item2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/frr/lib/zclient.c:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nh_grp
    - nexthop_num
    argTypes:
    - struct zapi_nexthop*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 970
    functionName: zapi_nexthop_group_sort
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - qsort
    linkageType: ''
    returnType: void
    signature: "void zapi_nexthop_group_sort(struct zapi_nexthop *nh_grp,\n\t\t\t\t
      \   uint16_t nexthop_num)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:981,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:982,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:986,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:997,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1000,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1004,1
    - Dst: stream_put_in_addr
      Src: /src/frr/lib/zclient.c:1008,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1009,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1012,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:1016,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1018,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1027,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1028,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1029,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1034,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1037,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1038,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1042,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1043,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1046,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1053,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1055,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1058,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1059,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:1060,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1064,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:1065,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 62
    argCount: 4
    argNames:
    - s
    - api_nh
    - api_flags
    - api_message
    argTypes:
    - struct stream*
    - struct zapi_nexthop*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 975
    functionDepth: 2
    functionLinenumber: 975
    functionLinenumberEnd: 1070
    functionName: zapi_nexthop_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - stream_put
    - CHECK_FLAG
    - stream_write
    - SET_FLAG
    - stream_put_in_addr
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zapi_nexthop_encode(struct stream *s, const struct zapi_nexthop
      *api_nh,\n\t\t\tuint32_t api_flags, uint32_t api_message)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1075,1
    - Dst: strlen
      Src: /src/frr/lib/zclient.c:1075,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1076,1
    - Dst: strlen
      Src: /src/frr/lib/zclient.c:1076,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1077,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1078,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1079,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1080,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1081,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1082,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1083,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - struct stream*
    - struct srv6_locator_chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1072
    functionDepth: 2
    functionLinenumber: 1072
    functionLinenumberEnd: 1085
    functionName: zapi_srv6_locator_chunk_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - strlen
    - stream_put
    - stream_putw
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int zapi_srv6_locator_chunk_encode(struct stream *s,\n\t\t\t\t   const
      struct srv6_locator_chunk *c)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1094,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1098,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1099,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1100,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1101,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1102,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1103,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1104,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - struct stream*
    - struct srv6_locator_chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1110
    functionName: zapi_srv6_locator_chunk_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: "int zapi_srv6_locator_chunk_decode(struct stream *s,\n\t\t\t\t   struct
      srv6_locator_chunk *c)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1114,1
    - Dst: strlen
      Src: /src/frr/lib/zclient.c:1114,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1115,1
    - Dst: strlen
      Src: /src/frr/lib/zclient.c:1115,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1116,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - s
    - l
    argTypes:
    - struct stream*
    - struct srv6_locator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1112
    functionDepth: 2
    functionLinenumber: 1112
    functionLinenumberEnd: 1119
    functionName: zapi_srv6_locator_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - strlen
    - stream_put
    - stream_putw
    linkageType: ''
    returnType: int
    signature: int zapi_srv6_locator_encode(struct stream *s, const struct srv6_locator
      *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1125,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1129,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1130,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - s
    - l
    argTypes:
    - struct stream*
    - struct srv6_locator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1137
    functionName: zapi_srv6_locator_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - STREAM_GETW
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int zapi_srv6_locator_decode(struct stream *s, struct srv6_locator
      *l)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1144,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1152,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:1157,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:1158,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1160,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1161,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1163,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1164,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1165,1
    - Dst: zapi_nexthop_group_sort
      Src: /src/frr/lib/zclient.c:1169,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1172,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/lib/zclient.c:1175,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1178,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/lib/zclient.c:1181,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:1185,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:1185,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - s
    - cmd
    - api_nhg
    argTypes:
    - struct stream*
    - int
    - struct zapi_nhg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1139
    functionDepth: 3
    functionLinenumber: 1139
    functionLinenumberEnd: 1188
    functionName: zapi_nhg_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - flog_err
    - zapi_nexthop_encode
    - stream_reset
    - zapi_nexthop_group_sort
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zapi_nhg_encode(struct stream *s, int cmd, struct zapi_nhg *api_nhg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nhg_encode
      Src: /src/frr/lib/zclient.c:1195,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:1198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - zclient
    - cmd
    - api_nhg
    argTypes:
    - struct zclient*
    - int
    - struct zapi_nhg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1190
    functionDepth: 4
    functionLinenumber: 1190
    functionLinenumberEnd: 1199
    functionName: zclient_nhg_send
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 5
    functionsReached:
    - zapi_nhg_encode
    - zclient_send_message
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_nhg_send(struct zclient *zclient,
      int cmd,\n\t\t\t\t\t  struct zapi_nhg *api_nhg)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:1207,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:1208,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1211,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1216,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1218,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1219,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1220,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1223,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1228,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1231,1
    - Dst: PSIZE
      Src: /src/frr/lib/zclient.c:1232,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1233,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:1234,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1236,1
    - Dst: PSIZE
      Src: /src/frr/lib/zclient.c:1237,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1238,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:1239,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1242,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1243,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1246,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1249,1
    - Dst: zapi_nexthop_group_sort
      Src: /src/frr/lib/zclient.c:1261,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1263,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1270,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/lib/zclient.c:1278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1286,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1289,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1302,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1309,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/lib/zclient.c:1317,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1325,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1326,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1327,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1328,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1329,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1330,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1331,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1332,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1333,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1334,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1336,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1338,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1345,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:1346,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:1349,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:1349,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 80
    argCount: 3
    argNames:
    - cmd
    - s
    - api
    argTypes:
    - uint8_t
    - struct stream*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1201
    functionDepth: 3
    functionLinenumber: 1201
    functionLinenumberEnd: 1352
    functionName: zapi_route_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - PSIZE
    - zclient_create_header
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - flog_err
    - zapi_nexthop_encode
    - stream_reset
    - zapi_nexthop_group_sort
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zapi_route_encode(uint8_t cmd, struct stream *s, struct zapi_route
      *api)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1362,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1363,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1366,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1370,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1374,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1376,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1379,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1383,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1389,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1390,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1391,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1393,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1400,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1404,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1405,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1408,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1409,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1413,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1414,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1417,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1418,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1427,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1428,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1429,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1433,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1434,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 4
    argNames:
    - s
    - api_nh
    - api_flags
    - api_message
    argTypes:
    - struct stream*
    - struct zapi_nexthop*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1443
    functionName: zapi_nexthop_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - flog_err
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: "int zapi_nexthop_decode(struct stream *s, struct zapi_nexthop *api_nh,\n\t\t\tuint32_t
      api_flags, uint32_t api_message)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:1450,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1453,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1455,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1461,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1462,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1463,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1464,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1466,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1473,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1474,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1478,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1487,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1495,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1500,1
    - Dst: PSIZE
      Src: /src/frr/lib/zclient.c:1500,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1502,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1504,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1506,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1512,1
    - Dst: PSIZE
      Src: /src/frr/lib/zclient.c:1513,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1517,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1525,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1526,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1529,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1530,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1532,1
    - Dst: zapi_nexthop_decode
      Src: /src/frr/lib/zclient.c:1541,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1549,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1550,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1552,1
    - Dst: zapi_nexthop_decode
      Src: /src/frr/lib/zclient.c:1561,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1569,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1570,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1571,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1572,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1573,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1574,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1575,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1576,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1577,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1578,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1580,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1581,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:1583,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1590,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 96
    argCount: 2
    argNames:
    - s
    - api
    argTypes:
    - struct stream*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1445
    functionDepth: 2
    functionLinenumber: 1445
    functionLinenumberEnd: 1596
    functionName: zapi_route_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 14
    functionsReached:
    - PSIZE
    - zapi_nexthop_decode
    - memset
    - CHECK_FLAG
    - STREAM_GETW
    - flog_err
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int zapi_route_decode(struct stream *s, struct zapi_route *api)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:1604,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1609,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:1610,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1611,1
    - Dst: prefix_blen
      Src: /src/frr/lib/zclient.c:1611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - s
    - p
    - family
    argTypes:
    - struct stream*
    - struct prefix*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1598
    functionDepth: 2
    functionLinenumber: 1598
    functionLinenumberEnd: 1612
    functionName: zapi_encode_prefix
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - stream_put
    - prefix_blen
    - stream_putc
    - memset
    linkageType: ''
    returnType: void
    signature: "void zapi_encode_prefix(struct stream *s, struct prefix *p,\n\t\t\t
      \      uint8_t family)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:1616,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:1617,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1622,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1624,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1625,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1626,1
    - Dst: zapi_encode_prefix
      Src: /src/frr/lib/zclient.c:1628,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1630,1
    - Dst: zapi_encode_prefix
      Src: /src/frr/lib/zclient.c:1631,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1633,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:1634,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1636,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:1637,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:1640,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:1640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - cmd
    - s
    - zrule
    argTypes:
    - uint8_t
    - struct stream*
    - struct pbr_rule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1614
    functionDepth: 3
    functionLinenumber: 1614
    functionLinenumberEnd: 1643
    functionName: zapi_pbr_rule_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - stream_put
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_putl
    - stream_reset
    - zapi_encode_prefix
    linkageType: ''
    returnType: int
    signature: int zapi_pbr_rule_encode(uint8_t cmd, struct stream *s, struct pbr_rule
      *zrule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:1647,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:1648,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1651,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1653,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:1654,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:1656,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:1656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - cmd
    - s
    - qdisc
    argTypes:
    - uint8_t
    - struct stream*
    - struct tc_qdisc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1659
      start: 1645
    functionDepth: 3
    functionLinenumber: 1645
    functionLinenumberEnd: 1659
    functionName: zapi_tc_qdisc_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zclient_create_header
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zapi_tc_qdisc_encode(uint8_t cmd, struct stream *s, struct tc_qdisc
      *qdisc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1764,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1766,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1767,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1768,1
    - Dst: prefix_blen
      Src: /src/frr/lib/zclient.c:1768,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1769,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1770,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:1771,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 6
    argNames:
    - s
    - p
    - tableid
    - note
    - afi
    - safi
    argTypes:
    - struct stream*
    - struct prefix*
    - uint32_t*
    - enum zapi_route_notify_owner*
    - afi_t*
    - safi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1755
    functionDepth: 1
    functionLinenumber: 1755
    functionLinenumberEnd: 1784
    functionName: zapi_route_notify_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 5
    functionsReached:
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: bool
    signature: "bool zapi_route_notify_decode(struct stream *s, struct prefix *p,\n\t\t\t
      \     uint32_t *tableid,\n\t\t\t      enum zapi_route_notify_owner *note,\n\t\t\t
      \     afi_t *afi, safi_t *safi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1792,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1794,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1795,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1796,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1797,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:1800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 6
    argNames:
    - s
    - seqno
    - priority
    - unique
    - ifname
    - note
    argTypes:
    - struct stream*
    - uint32_t*
    - uint32_t*
    - uint32_t*
    - char*
    - enum zapi_rule_notify_owner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1786
    functionDepth: 1
    functionLinenumber: 1786
    functionLinenumberEnd: 1809
    functionName: zapi_rule_notify_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: bool
    signature: "bool zapi_rule_notify_decode(struct stream *s, uint32_t *seqno,\n\t\t\t
      \    uint32_t *priority, uint32_t *unique, char *ifname,\n\t\t\t     enum zapi_rule_notify_owner
      *note)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1817,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1819,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:1822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - s
    - unique
    - note
    argTypes:
    - struct stream*
    - uint32_t*
    - enum zapi_ipset_notify_owner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1811
    functionDepth: 1
    functionLinenumber: 1811
    functionLinenumberEnd: 1829
    functionName: zapi_ipset_notify_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETL
    linkageType: ''
    returnType: bool
    signature: "bool zapi_ipset_notify_decode(struct stream *s, uint32_t *unique,\n\t\t\t
      \     enum zapi_ipset_notify_owner *note)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1838,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1840,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:1842,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:1845,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - s
    - unique
    - ipset_name
    - note
    argTypes:
    - struct stream*
    - uint32_t*
    - char*
    - enum zapi_ipset_entry_notify_owner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1831
    functionDepth: 1
    functionLinenumber: 1831
    functionLinenumberEnd: 1853
    functionName: zapi_ipset_entry_notify_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: bool
    signature: "bool zapi_ipset_entry_notify_decode(struct stream *s, uint32_t *unique,\n\t\t\t\t
      \   char *ipset_name,\n\t\t\t\t    enum zapi_ipset_entry_notify_owner *note)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:1862,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:1864,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:1867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - s
    - unique
    - note
    argTypes:
    - struct stream*
    - uint32_t*
    - enum zapi_iptable_notify_owner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1875
    functionName: zapi_iptable_notify_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETL
    linkageType: ''
    returnType: bool
    signature: "bool zapi_iptable_notify_decode(struct stream *s,\n\t\tuint32_t *unique,\n\t\tenum
      zapi_iptable_notify_owner *note)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_new
      Src: /src/frr/lib/zclient.c:1879,1
    - Dst: nexthop_add_labels
      Src: /src/frr/lib/zclient.c:1891,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1895,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:1896,1
    - Dst: memcpy
      Src: /src/frr/lib/zclient.c:1898,1
    - Dst: nexthop_add_srv6_seg6local
      Src: /src/frr/lib/zclient.c:1902,1
    - Dst: sid_zero
      Src: /src/frr/lib/zclient.c:1905,1
    - Dst: nexthop_add_srv6_seg6
      Src: /src/frr/lib/zclient.c:1906,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - znh
    argTypes:
    - struct zapi_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1877
    functionDepth: 2
    functionLinenumber: 1877
    functionLinenumberEnd: 1909
    functionName: nexthop_from_zapi_nexthop
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - nexthop_new
    - SET_FLAG
    - sid_zero
    - nexthop_add_srv6_seg6local
    - nexthop_add_srv6_seg6
    - nexthop_add_labels
    - memcpy
    linkageType: ''
    returnType: struct nexthop
    signature: struct nexthop *nexthop_from_zapi_nexthop(const struct zapi_nexthop
      *znh)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:1919,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1927,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:1928,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1930,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:1931,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:1944,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:1947,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:1951,1
    - Dst: memcpy
      Src: /src/frr/lib/zclient.c:1953,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:1959,1
    - Dst: memcpy
      Src: /src/frr/lib/zclient.c:1961,1
    - Dst: sid_zero
      Src: /src/frr/lib/zclient.c:1966,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:1967,1
    - Dst: memcpy
      Src: /src/frr/lib/zclient.c:1968,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - znh
    - nh
    argTypes:
    - struct zapi_nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1914
    functionDepth: 2
    functionLinenumber: 1914
    functionLinenumberEnd: 1974
    functionName: zapi_nexthop_from_nexthop
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 7
    functionsReached:
    - memset
    - CHECK_FLAG
    - sid_zero
    - SET_FLAG
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int zapi_nexthop_from_nexthop(struct zapi_nexthop *znh,\n\t\t\t      const
      struct nexthop *nh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_nexthop_from_nexthop
      Src: /src/frr/lib/zclient.c:1985,1
    - Dst: UNSET_FLAG
      Src: /src/frr/lib/zclient.c:1987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - znh
    - nh
    argTypes:
    - struct zapi_nexthop*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1979
    functionDepth: 3
    functionLinenumber: 1979
    functionLinenumberEnd: 1990
    functionName: zapi_backup_nexthop_from_nexthop
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - UNSET_FLAG
    - zapi_nexthop_from_nexthop
    linkageType: ''
    returnType: int
    signature: "int zapi_backup_nexthop_from_nexthop(struct zapi_nexthop *znh,\n\t\t\t\t
      \    const struct nexthop *nh)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/zclient.c:2002,1
    - Dst: inet_ntop
      Src: /src/frr/lib/zclient.c:2006,1
    - Dst: snprintf
      Src: /src/frr/lib/zclient.c:2007,1
    - Dst: inet_ntop
      Src: /src/frr/lib/zclient.c:2011,1
    - Dst: snprintf
      Src: /src/frr/lib/zclient.c:2012,1
    - Dst: snprintf
      Src: /src/frr/lib/zclient.c:2015,1
    - Dst: snprintf
      Src: /src/frr/lib/zclient.c:2018,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - znh
    - buf
    - bufsize
    argTypes:
    - struct zapi_nexthop*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2023
      start: 1995
    functionDepth: 0
    functionLinenumber: 1995
    functionLinenumberEnd: 2023
    functionName: zapi_nexthop2str
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - inet_ntop
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *zapi_nexthop2str(const struct zapi_nexthop *znh, char *buf,\n\t\t\t
      \    int bufsize)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:2033,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2035,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:2036,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:2037,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2038,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2044,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2047,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:2053,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2054,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2057,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2060,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:2065,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2066,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2068,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:2069,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2070,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2071,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2072,1
    - Dst: zapi_nexthop_decode
      Src: /src/frr/lib/zclient.c:2075,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 3
    argNames:
    - s
    - match
    - nhr
    argTypes:
    - struct stream*
    - struct prefix*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2028
    functionDepth: 2
    functionLinenumber: 2028
    functionLinenumberEnd: 2082
    functionName: zapi_nexthop_update_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 7
    functionsReached:
    - zapi_nexthop_decode
    - memset
    - CHECK_FLAG
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: bool
    signature: "bool zapi_nexthop_update_decode(struct stream *s, struct prefix *match,\n\t\t\t\tstruct
      zapi_route *nhr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:2086,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2088,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2091,1
    - Dst: zebra_error_type2str
      Src: /src/frr/lib/zclient.c:2092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - s
    - error
    argTypes:
    - struct stream*
    - enum zebra_error_types*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2097
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2097
    functionName: zapi_error_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zebra_error_type2str
    - zlog_debug
    - STREAM_GET
    - memset
    linkageType: ''
    returnType: bool
    signature: bool zapi_error_decode(struct stream *s, enum zebra_error_types *error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:2112,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:2114,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2115,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2116,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:2117,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:2119,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:2119,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:2121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 6
    argNames:
    - command
    - zclient
    - afi
    - type
    - instance
    - vrf_id
    argTypes:
    - int
    - struct zclient*
    - afi_t
    - int
    - unsigned short
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 2105
    functionDepth: 4
    functionLinenumber: 2105
    functionLinenumberEnd: 2122
    functionName: zebra_redistribute_send
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 14
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zebra_redistribute_send(int command, struct
      zclient *zclient, afi_t afi,\n\t\t\tint type, unsigned short instance, vrf_id_t
      vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:2131,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:2133,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2134,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:2136,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:2136,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:2138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - command
    - zclient
    - afi
    - vrf_id
    argTypes:
    - int
    - struct zclient*
    - afi_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2139
      start: 2124
    functionDepth: 4
    functionLinenumber: 2124
    functionLinenumberEnd: 2139
    functionName: zebra_redistribute_default_send
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zebra_redistribute_default_send(int command,
      struct zclient *zclient, afi_t afi,\n\t\t\t\tvrf_id_t vrf_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:2147,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:2149,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2150,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:2152,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:2152,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:2154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - command
    - zclient
    - set
    argTypes:
    - int
    - struct zclient*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2155
      start: 2142
    functionDepth: 4
    functionLinenumber: 2142
    functionLinenumberEnd: 2155
    functionName: zebra_route_notify_send
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: int
    signature: int zebra_route_notify_send(int command, struct zclient *zclient, bool
      set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_blen
      Src: /src/frr/lib/zclient.c:2160,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2167,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2168,1
    - Dst: MIN
      Src: /src/frr/lib/zclient.c:2169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - s
    - p
    argTypes:
    - struct stream*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2158
    functionDepth: 1
    functionLinenumber: 2158
    functionLinenumberEnd: 2174
    functionName: zclient_stream_get_prefix
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - MIN
    - STREAM_GETC
    - prefix_blen
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int zclient_stream_get_prefix(struct stream *s, struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2180,1
    - Dst: zclient_stream_get_prefix
      Src: /src/frr/lib/zclient.c:2182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - s
    - rid
    argTypes:
    - struct stream*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2186
      start: 2177
    functionDepth: 2
    functionLinenumber: 2177
    functionLinenumberEnd: 2186
    functionName: zebra_router_id_update_read
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - zclient_stream_get_prefix
    - STREAM_GETC
    linkageType: ''
    returnType: int
    signature: int zebra_router_id_update_read(struct stream *s, struct prefix *rid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2240,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2242,1
    - Dst: strlen
      Src: /src/frr/lib/zclient.c:2244,1
    - Dst: vrf_get
      Src: /src/frr/lib/zclient.c:2248,1
    - Dst: memcpy
      Src: /src/frr/lib/zclient.c:2255,1
    - Dst: vrf_enable
      Src: /src/frr/lib/zclient.c:2256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2261
      start: 2234
    functionDepth: 3
    functionLinenumber: 2234
    functionLinenumberEnd: 2261
    functionName: zclient_vrf_add
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - strlen
    - vrf_enable
    - vrf_get
    - STREAM_GET
    - memcpy
    linkageType: ''
    returnType: int
    signature: int zclient_vrf_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/zclient.c:2268,1
    - Dst: vrf_delete
      Src: /src/frr/lib/zclient.c:2278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2280
      start: 2263
    functionDepth: 2
    functionLinenumber: 2263
    functionLinenumberEnd: 2280
    functionName: zclient_vrf_delete
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - vrf_delete
    - vrf_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int zclient_vrf_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2290,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/lib/zclient.c:2293,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2295,1
    - Dst: if_get_by_name
      Src: /src/frr/lib/zclient.c:2301,1
    - Dst: zebra_interface_if_set_value
      Src: /src/frr/lib/zclient.c:2303,1
    - Dst: if_new_via_zapi
      Src: /src/frr/lib/zclient.c:2305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2310
      start: 2282
    functionDepth: 2
    functionLinenumber: 2282
    functionLinenumberEnd: 2310
    functionName: zclient_interface_add
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - if_get_by_name
    - zebra_interface_if_set_value
    - zlog_debug
    - if_new_via_zapi
    - vrf_lookup_by_id
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int zclient_interface_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2324,1
    - Dst: if_lookup_by_name
      Src: /src/frr/lib/zclient.c:2327,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2329,1
    - Dst: zebra_interface_if_set_value
      Src: /src/frr/lib/zclient.c:2335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - s
    - vrf_id
    argTypes:
    - struct stream*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2318
    functionDepth: 3
    functionLinenumber: 2318
    functionLinenumberEnd: 2340
    functionName: zebra_interface_state_read
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - flog_err
    - if_lookup_by_name
    - zebra_interface_if_set_value
    - STREAM_GET
    linkageType: ''
    returnType: struct interface
    signature: struct interface *zebra_interface_state_read(struct stream *s, vrf_id_t
      vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_state_read
      Src: /src/frr/lib/zclient.c:2347,1
    - Dst: if_destroy_via_zapi
      Src: /src/frr/lib/zclient.c:2352,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2354
      start: 2342
    functionDepth: 4
    functionLinenumber: 2342
    functionLinenumberEnd: 2354
    functionName: zclient_interface_delete
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zebra_interface_state_read
    - if_destroy_via_zapi
    linkageType: ''
    returnType: int
    signature: int zclient_interface_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_state_read
      Src: /src/frr/lib/zclient.c:2361,1
    - Dst: if_up_via_zapi
      Src: /src/frr/lib/zclient.c:2366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2356
    functionDepth: 4
    functionLinenumber: 2356
    functionLinenumberEnd: 2368
    functionName: zclient_interface_up
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zebra_interface_state_read
    - if_up_via_zapi
    linkageType: ''
    returnType: int
    signature: int zclient_interface_up(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_state_read
      Src: /src/frr/lib/zclient.c:2375,1
    - Dst: if_down_via_zapi
      Src: /src/frr/lib/zclient.c:2380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2382
      start: 2370
    functionDepth: 4
    functionLinenumber: 2370
    functionLinenumberEnd: 2382
    functionName: zclient_interface_down
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zebra_interface_state_read
    - if_down_via_zapi
    linkageType: ''
    returnType: int
    signature: int zclient_interface_down(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_error_decode
      Src: /src/frr/lib/zclient.c:2389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2384
    functionDepth: 2
    functionLinenumber: 2384
    functionLinenumberEnd: 2394
    functionName: zclient_handle_error
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zapi_error_decode
    linkageType: ''
    returnType: int
    signature: int zclient_handle_error(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_link_params_get
      Src: /src/frr/lib/zclient.c:2402,1
    - Dst: if_link_params_init
      Src: /src/frr/lib/zclient.c:2405,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2407,1
    - Dst: if_link_params_free
      Src: /src/frr/lib/zclient.c:2409,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2413,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2414,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/zclient.c:2415,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/zclient.c:2416,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2417,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/zclient.c:2421,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2423,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2428,1
    - Dst: admin_group_clear
      Src: /src/frr/lib/zclient.c:2431,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2432,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2434,1
    - Dst: admin_group_bulk_set
      Src: /src/frr/lib/zclient.c:2435,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2438,1
    - Dst: stream_get_ipv4
      Src: /src/frr/lib/zclient.c:2439,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2441,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2442,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2443,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2444,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/zclient.c:2446,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/zclient.c:2447,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/zclient.c:2448,1
    - Dst: STREAM_GETF
      Src: /src/frr/lib/zclient.c:2449,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 2
    argNames:
    - s
    - ifp
    argTypes:
    - struct stream*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2454
      start: 2396
    functionDepth: 2
    functionLinenumber: 2396
    functionLinenumberEnd: 2454
    functionName: link_params_set_value
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - if_link_params_init
    - if_link_params_free
    - stream_get_ipv4
    - STREAM_GETF
    - if_link_params_get
    - STREAM_GETC
    - flog_err
    - STREAM_GETL
    - admin_group_bulk_set
    - admin_group_clear
    linkageType: ''
    returnType: int
    signature: int link_params_set_value(struct stream *s, struct interface *ifp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2465,1
    - Dst: if_lookup_by_index
      Src: /src/frr/lib/zclient.c:2467,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2470,1
    - Dst: if_link_params_get
      Src: /src/frr/lib/zclient.c:2476,1
    - Dst: admin_group_init
      Src: /src/frr/lib/zclient.c:2480,1
    - Dst: if_link_params_copy
      Src: /src/frr/lib/zclient.c:2481,1
    - Dst: link_params_set_value
      Src: /src/frr/lib/zclient.c:2488,1
    - Dst: if_link_params_get
      Src: /src/frr/lib/zclient.c:2492,1
    - Dst: if_link_params_cmp
      Src: /src/frr/lib/zclient.c:2495,1
    - Dst: admin_group_term
      Src: /src/frr/lib/zclient.c:2506,1
    - Dst: admin_group_term
      Src: /src/frr/lib/zclient.c:2512,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - s
    - vrf_id
    - changed
    argTypes:
    - struct stream*
    - vrf_id_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2514
      start: 2456
    functionDepth: 4
    functionLinenumber: 2456
    functionLinenumberEnd: 2514
    functionName: zebra_interface_link_params_read
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - if_link_params_copy
    - if_lookup_by_index
    - admin_group_init
    - link_params_set_value
    - if_link_params_get
    - flog_err
    - if_link_params_cmp
    - STREAM_GETL
    - admin_group_term
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *zebra_interface_link_params_read(struct stream *s,\n\t\t\t\t\t\t
      \  vrf_id_t vrf_id,\n\t\t\t\t\t\t   bool *changed)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2524,1
    - Dst: if_set_index
      Src: /src/frr/lib/zclient.c:2525,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2526,1
    - Dst: STREAM_GETQ
      Src: /src/frr/lib/zclient.c:2529,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2530,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2531,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2532,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2533,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2534,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2535,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2536,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2537,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2538,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2539,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2541,1
    - Dst: MIN
      Src: /src/frr/lib/zclient.c:2542,1
    - Dst: stream_getc
      Src: /src/frr/lib/zclient.c:2545,1
    - Dst: link_params_set_value
      Src: /src/frr/lib/zclient.c:2548,1
    - Dst: nexthop_group_interface_state_change
      Src: /src/frr/lib/zclient.c:2550,1
    - Dst: zlog_err
      Src: /src/frr/lib/zclient.c:2554,1
    - Dst: assert
      Src: /src/frr/lib/zclient.c:2555,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - s
    - ifp
    argTypes:
    - struct stream*
    - struct interface*
    assertStmts:
    - condition: (!"Failed to parse interface values")
      pos:
        line_end: 2554
        line_start: 2554
        source_file: /src/frr/lib/zclient.c
    constantsTouched: []
    func_position:
      end: 2556
      start: 2516
    functionDepth: 3
    functionLinenumber: 2516
    functionLinenumberEnd: 2556
    functionName: zebra_interface_if_set_value
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - MIN
    - if_set_index
    - link_params_set_value
    - STREAM_GETQ
    - nexthop_group_interface_state_change
    - zlog_err
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - stream_getc
    - assert
    linkageType: ''
    returnType: void
    signature: "void zebra_interface_if_set_value(struct stream *s,\n\t\t\t\t\t struct
      interface *ifp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2574,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2576,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2580,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2582,1
    - Dst: stream_putf
      Src: /src/frr/lib/zclient.c:2583,1
    - Dst: stream_putf
      Src: /src/frr/lib/zclient.c:2584,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2586,1
    - Dst: stream_putf
      Src: /src/frr/lib/zclient.c:2588,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2590,1
    - Dst: admin_group_nb_words
      Src: /src/frr/lib/zclient.c:2593,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2594,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2596,1
    - Dst: admin_group_get_offset
      Src: /src/frr/lib/zclient.c:2596,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2598,1
    - Dst: stream_put_in_addr
      Src: /src/frr/lib/zclient.c:2599,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2601,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2602,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2603,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:2604,1
    - Dst: stream_putf
      Src: /src/frr/lib/zclient.c:2606,1
    - Dst: stream_putf
      Src: /src/frr/lib/zclient.c:2607,1
    - Dst: stream_putf
      Src: /src/frr/lib/zclient.c:2608,1
    - Dst: stream_putf
      Src: /src/frr/lib/zclient.c:2609,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 2
    argNames:
    - s
    - ifp
    argTypes:
    - struct stream*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2612
      start: 2558
    functionDepth: 3
    functionLinenumber: 2558
    functionLinenumberEnd: 2612
    functionName: zebra_interface_link_params_write
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - stream_putf
    - admin_group_get_offset
    - admin_group_nb_words
    - stream_put_in_addr
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: size_t
    signature: "size_t zebra_interface_link_params_write(struct stream *s,\n\t\t\t\t\t
      struct interface *ifp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - s
    - c
    - n
    argTypes:
    - void*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2653
      start: 2645
    functionDepth: 0
    functionLinenumber: 2645
    functionLinenumberEnd: 2653
    functionName: memconstant
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int memconstant(const void *s, int c, size_t n)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:2666,1
    - Dst: memset
      Src: /src/frr/lib/zclient.c:2667,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2670,1
    - Dst: if_lookup_by_index
      Src: /src/frr/lib/zclient.c:2673,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2675,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2683,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2686,1
    - Dst: prefix_blen
      Src: /src/frr/lib/zclient.c:2688,1
    - Dst: zclient_stream_get_prefix
      Src: /src/frr/lib/zclient.c:2690,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2694,1
    - Dst: memconstant
      Src: /src/frr/lib/zclient.c:2697,1
    - Dst: connected_lookup_prefix_exact
      Src: /src/frr/lib/zclient.c:2700,1
    - Dst: connected_add_by_prefix
      Src: /src/frr/lib/zclient.c:2704,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:2711,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2714,1
    - Dst: UNSET_FLAG
      Src: /src/frr/lib/zclient.c:2718,1
    - Dst: assert
      Src: /src/frr/lib/zclient.c:2722,1
    - Dst: connected_delete_by_prefix
      Src: /src/frr/lib/zclient.c:2723,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 3
    argNames:
    - type
    - s
    - vrf_id
    argTypes:
    - int
    - struct stream*
    - vrf_id_t
    assertStmts:
    - condition: (type == ZEBRA_INTERFACE_ADDRESS_DELETE)
      pos:
        line_end: 2721
        line_start: 2721
        source_file: /src/frr/lib/zclient.c
    constantsTouched: []
    func_position:
      end: 2730
      start: 2656
    functionDepth: 4
    functionLinenumber: 2656
    functionLinenumberEnd: 2730
    functionName: zebra_interface_address_read
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 19
    functionsReached:
    - if_lookup_by_index
    - memconstant
    - memset
    - connected_lookup_prefix_exact
    - zclient_stream_get_prefix
    - connected_add_by_prefix
    - CHECK_FLAG
    - flog_err
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    - UNSET_FLAG
    - connected_delete_by_prefix
    - assert
    linkageType: ''
    returnType: struct connected
    signature: "struct connected *zebra_interface_address_read(int type, struct stream
      *s,\n\t\t\t\t\t       vrf_id_t vrf_id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2765,1
    - Dst: if_lookup_by_index
      Src: /src/frr/lib/zclient.c:2768,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2770,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2778,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2779,1
    - Dst: prefix_blen
      Src: /src/frr/lib/zclient.c:2779,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2780,1
    - Dst: listnode_head
      Src: /src/frr/lib/zclient.c:2787,1
    - Dst: nbr_connected_new
      Src: /src/frr/lib/zclient.c:2788,1
    - Dst: prefix_new
      Src: /src/frr/lib/zclient.c:2789,1
    - Dst: listnode_add
      Src: /src/frr/lib/zclient.c:2791,1
    - Dst: prefix_copy
      Src: /src/frr/lib/zclient.c:2794,1
    - Dst: assert
      Src: /src/frr/lib/zclient.c:2796,1
    - Dst: nbr_connected_check
      Src: /src/frr/lib/zclient.c:2798,1
    - Dst: listnode_delete
      Src: /src/frr/lib/zclient.c:2800,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - type
    - s
    - vrf_id
    argTypes:
    - int
    - struct stream*
    - vrf_id_t
    assertStmts:
    - condition: (type == ZEBRA_INTERFACE_NBR_ADDRESS_DELETE)
      pos:
        line_end: 2795
        line_start: 2795
        source_file: /src/frr/lib/zclient.c
    constantsTouched: []
    func_position:
      end: 2807
      start: 2756
    functionDepth: 4
    functionLinenumber: 2756
    functionLinenumberEnd: 2807
    functionName: zebra_interface_nbr_address_read
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - if_lookup_by_index
    - nbr_connected_new
    - prefix_new
    - nbr_connected_check
    - listnode_add
    - flog_err
    - STREAM_GETC
    - prefix_blen
    - STREAM_GETL
    - STREAM_GET
    - listnode_head
    - listnode_delete
    - prefix_copy
    - assert
    linkageType: ''
    returnType: struct nbr_connected
    signature: 'struct nbr_connected *

      zebra_interface_nbr_address_read(int type, struct stream *s, vrf_id_t vrf_id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:2818,1
    - Dst: if_lookup_by_name
      Src: /src/frr/lib/zclient.c:2821,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2823,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:2830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - s
    - vrf_id
    - new_vrf_id
    argTypes:
    - struct stream*
    - vrf_id_t
    - vrf_id_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2837
      start: 2809
    functionDepth: 3
    functionLinenumber: 2809
    functionLinenumberEnd: 2837
    functionName: zebra_interface_vrf_update_read
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - flog_err
    - if_lookup_by_name
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *zebra_interface_vrf_update_read(struct stream *s,\n\t\t\t\t\t\t
      \ vrf_id_t vrf_id,\n\t\t\t\t\t\t  vrf_id_t *new_vrf_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:2856,1
    - Dst: FD_ZERO
      Src: /src/frr/lib/zclient.c:2859,1
    - Dst: FD_SET
      Src: /src/frr/lib/zclient.c:2860,1
    - Dst: select
      Src: /src/frr/lib/zclient.c:2861,1
    - Dst: FD_ISSET
      Src: /src/frr/lib/zclient.c:2862,1
    - Dst: zclient_read_header
      Src: /src/frr/lib/zclient.c:2865,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2868,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2872,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - zclient
    - expected_cmd
    argTypes:
    - struct zclient*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2878
      start: 2840
    functionDepth: 3
    functionLinenumber: 2840
    functionLinenumberEnd: 2878
    functionName: zclient_read_sync_response
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - FD_ZERO
    - FD_ISSET
    - zclient_read_header
    - select
    - zlog_debug
    - flog_err
    - stream_reset
    linkageType: ''
    returnType: int
    signature: "int zclient_read_sync_response(struct zclient *zclient,\n\t\t\t\t
      \     uint16_t expected_cmd)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2898,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2901,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:2907,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:2908,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:2911,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:2913,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:2916,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:2916,1
    - Dst: writen
      Src: /src/frr/lib/zclient.c:2918,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:2918,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2920,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:2921,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2926,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:2927,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2932,1
    - Dst: zclient_read_sync_response
      Src: /src/frr/lib/zclient.c:2938,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2948,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:2949,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2953,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:2958,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:2964,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2966,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 2
    argNames:
    - zclient
    - async
    argTypes:
    - struct zclient*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2972
      start: 2889
    functionDepth: 4
    functionLinenumber: 2889
    functionLinenumberEnd: 2972
    functionName: lm_label_manager_connect
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - zclient_create_header
    - zclient_read_sync_response
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - writen
    - close
    - zlog_debug
    - flog_err
    - STREAM_GETC
    - STREAM_GETW
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: int
    signature: int lm_label_manager_connect(struct zclient *zclient, int async)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/zclient.c:2985,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:2988,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:2995,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:2996,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3000,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:3001,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3004,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3004,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - zclient
    - locator_name
    argTypes:
    - struct zclient*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3007
      start: 2981
    functionDepth: 4
    functionLinenumber: 2981
    functionLinenumberEnd: 3007
    functionName: srv6_manager_get_locator_chunk
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 5
    functionsReached:
    - strlen
    - zclient_create_header
    - stream_put
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_reset
    linkageType: ''
    returnType: int
    signature: "int srv6_manager_get_locator_chunk(struct zclient *zclient,\n\t\t\t\t
      \  const char *locator_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/zclient.c:3020,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3023,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3030,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3031,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3035,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:3036,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3039,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3039,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3041,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - zclient
    - locator_name
    argTypes:
    - struct zclient*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3042
      start: 3016
    functionDepth: 4
    functionLinenumber: 3016
    functionLinenumberEnd: 3042
    functionName: srv6_manager_release_locator_chunk
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 5
    functionsReached:
    - strlen
    - zclient_create_header
    - stream_put
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_reset
    linkageType: ''
    returnType: int
    signature: "int srv6_manager_release_locator_chunk(struct zclient *zclient,\n\t\t\t\t
      \      const char *locator_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3061,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3067,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3069,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3071,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3073,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3074,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3075,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3076,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3079,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3079,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3081,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - zclient
    - keep
    - chunk_size
    - base
    argTypes:
    - struct zclient*
    - uint8_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3053
    functionDepth: 4
    functionLinenumber: 3053
    functionLinenumberEnd: 3082
    functionName: zclient_send_get_label_chunk
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_get_label_chunk(struct zclient
      *zclient,\n\t\t\t\t\t\t      uint8_t keep,\n\t\t\t\t\t\t      uint32_t chunk_size,\n\t\t\t\t\t\t
      \     uint32_t base)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3105,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3112,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3113,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3115,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3117,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3119,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3121,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3123,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3125,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3125,1
    - Dst: writen
      Src: /src/frr/lib/zclient.c:3127,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3127,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3129,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:3130,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3135,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:3136,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3141,1
    - Dst: zclient_read_sync_response
      Src: /src/frr/lib/zclient.c:3144,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3154,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3155,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3159,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3163,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/zclient.c:3170,1
    - Dst: zlog_info
      Src: /src/frr/lib/zclient.c:3171,1
    - Dst: zebra_route_string
      Src: /src/frr/lib/zclient.c:3172,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3177,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3179,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3180,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3184,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3192,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3198,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 6
    argNames:
    - zclient
    - keep
    - base
    - chunk_size
    - start
    - end
    argTypes:
    - struct zclient*
    - uint8_t
    - uint32_t
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3205
      start: 3097
    functionDepth: 4
    functionLinenumber: 3097
    functionLinenumberEnd: 3205
    functionName: lm_get_label_chunk
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - zlog_info
    - zclient_create_header
    - zclient_read_sync_response
    - STREAM_READABLE
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - writen
    - close
    - zlog_debug
    - flog_err
    - STREAM_GETC
    - STREAM_GETW
    - STREAM_GETL
    - stream_reset
    - zebra_route_string
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int lm_get_label_chunk(struct zclient *zclient, uint8_t keep, uint32_t
      base,\n\t\t       uint32_t chunk_size, uint32_t *start, uint32_t *end)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3222,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3229,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3230,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3233,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3235,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3237,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3239,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3242,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3242,1
    - Dst: writen
      Src: /src/frr/lib/zclient.c:3244,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3244,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3246,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:3247,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3252,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:3253,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - zclient
    - start
    - end
    argTypes:
    - struct zclient*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3259
      start: 3215
    functionDepth: 3
    functionLinenumber: 3215
    functionLinenumberEnd: 3259
    functionName: lm_release_label_chunk
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - zclient_create_header
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - writen
    - close
    - zlog_debug
    - flog_err
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int lm_release_label_chunk(struct zclient *zclient, uint32_t start,\n\t\t\t
      \  uint32_t end)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3277,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3284,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3285,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3288,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3290,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3293,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3293,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3295,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3300,1
    - Dst: zclient_read_sync_response
      Src: /src/frr/lib/zclient.c:3303,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3309,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3311,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3318
      start: 3270
    functionDepth: 4
    functionLinenumber: 3270
    functionLinenumberEnd: 3318
    functionName: tm_table_manager_connect
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zclient_create_header
    - zclient_read_sync_response
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - STREAM_GETC
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: int
    signature: int tm_table_manager_connect(struct zclient *zclient)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3339,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3346,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3347,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3349,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3351,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3351,1
    - Dst: writen
      Src: /src/frr/lib/zclient.c:3353,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3353,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3355,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:3357,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3362,1
    - Dst: close
      Src: /src/frr/lib/zclient.c:3364,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3369,1
    - Dst: zclient_read_sync_response
      Src: /src/frr/lib/zclient.c:3373,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3378,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3379,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3382,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 4
    argNames:
    - zclient
    - chunk_size
    - start
    - end
    argTypes:
    - struct zclient*
    - uint32_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3387
      start: 3332
    functionDepth: 4
    functionLinenumber: 3332
    functionLinenumberEnd: 3387
    functionName: tm_get_table_chunk
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zclient_create_header
    - zclient_read_sync_response
    - stream_get_endp
    - stream_putw_at
    - writen
    - close
    - zlog_debug
    - flog_err
    - STREAM_GETL
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int tm_get_table_chunk(struct zclient *zclient, uint32_t chunk_size,\n\t\t
      \      uint32_t *start, uint32_t *end)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3403,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3410,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3411,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3414,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3416,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3419,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3419,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - zclient
    - start
    - end
    argTypes:
    - struct zclient*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3425
      start: 3397
    functionDepth: 4
    functionLinenumber: 3397
    functionLinenumberEnd: 3425
    functionName: tm_release_table_chunk
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - zlog_debug
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int tm_release_table_chunk(struct zclient *zclient, uint32_t start,\n\t\t\t
      \  uint32_t end)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_sr_policy_encode
      Src: /src/frr/lib/zclient.c:3430,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - zclient
    - cmd
    - zp
    argTypes:
    - struct zclient*
    - int
    - struct zapi_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3427
    functionDepth: 4
    functionLinenumber: 3427
    functionLinenumberEnd: 3433
    functionName: zebra_send_sr_policy
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_send_message
    - zapi_sr_policy_encode
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zebra_send_sr_policy(struct zclient *zclient,
      int cmd,\n\t\t\t\t\t      struct zapi_sr_policy *zp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3439,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3441,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3442,1
    - Dst: stream_put_ipaddr
      Src: /src/frr/lib/zclient.c:3443,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:3444,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3446,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3447,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3450,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3456,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3459,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3462,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - s
    - cmd
    - zp
    argTypes:
    - struct stream*
    - int
    - struct zapi_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3465
      start: 3435
    functionDepth: 3
    functionLinenumber: 3435
    functionLinenumberEnd: 3465
    functionName: zapi_sr_policy_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zclient_create_header
    - stream_putc
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - flog_err
    - stream_reset
    - stream_put_ipaddr
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zapi_sr_policy_encode(struct stream *s, int cmd, struct zapi_sr_policy
      *zp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:3469,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3473,1
    - Dst: STREAM_GET_IPADDR
      Src: /src/frr/lib/zclient.c:3474,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:3475,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3478,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3479,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3480,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3482,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - s
    - zp
    argTypes:
    - struct stream*
    - struct zapi_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3495
      start: 3467
    functionDepth: 1
    functionLinenumber: 3467
    functionLinenumberEnd: 3495
    functionName: zapi_sr_policy_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - memset
    - STREAM_GET_IPADDR
    - STREAM_GETW
    - STREAM_GETC
    - flog_err
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int zapi_sr_policy_decode(struct stream *s, struct zapi_sr_policy *zp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:3500,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3502,1
    - Dst: STREAM_GET_IPADDR
      Src: /src/frr/lib/zclient.c:3503,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:3504,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - s
    - zp
    argTypes:
    - struct stream*
    - struct zapi_sr_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3511
      start: 3497
    functionDepth: 1
    functionLinenumber: 3497
    functionLinenumberEnd: 3511
    functionName: zapi_sr_policy_notify_status_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - STREAM_GET_IPADDR
    - STREAM_GET
    - STREAM_GETL
    - memset
    linkageType: ''
    returnType: int
    signature: "int zapi_sr_policy_notify_status_decode(struct stream *s,\n\t\t\t\t\tstruct
      zapi_sr_policy *zp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zapi_labels_encode
      Src: /src/frr/lib/zclient.c:3516,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - zclient
    - cmd
    - zl
    argTypes:
    - struct zclient*
    - int
    - struct zapi_labels*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3519
      start: 3513
    functionDepth: 4
    functionLinenumber: 3513
    functionLinenumberEnd: 3519
    functionName: zebra_send_mpls_labels
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 7
    functionsReached:
    - zclient_send_message
    - zapi_labels_encode
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zebra_send_mpls_labels(struct zclient *zclient,\n\t\t\t\t\t\tint
      cmd, struct zapi_labels *zl)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3525,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3527,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3528,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3529,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3530,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:3532,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3533,1
    - Dst: stream_put_prefix
      Src: /src/frr/lib/zclient.c:3534,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3535,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3536,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3540,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3547,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/lib/zclient.c:3552,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:3556,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3559,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3566,1
    - Dst: zapi_nexthop_encode
      Src: /src/frr/lib/zclient.c:3571,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3578,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3578,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - s
    - cmd
    - zl
    argTypes:
    - struct stream*
    - int
    - struct zapi_labels*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3581
      start: 3521
    functionDepth: 3
    functionLinenumber: 3521
    functionLinenumberEnd: 3581
    functionName: zapi_labels_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zclient_create_header
    - CHECK_FLAG
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_put_prefix
    - flog_err
    - zapi_nexthop_encode
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int zapi_labels_encode(struct stream *s, int cmd, struct zapi_labels
      *zl)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:3587,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3590,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3591,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3592,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:3594,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3597,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3598,1
    - Dst: PSIZE
      Src: /src/frr/lib/zclient.c:3600,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3604,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:3609,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:3614,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:3619,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3622,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3628,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3629,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3632,1
    - Dst: flog_warn
      Src: /src/frr/lib/zclient.c:3635,1
    - Dst: MIN
      Src: /src/frr/lib/zclient.c:3642,1
    - Dst: zapi_nexthop_decode
      Src: /src/frr/lib/zclient.c:3647,1
    - Dst: flog_warn
      Src: /src/frr/lib/zclient.c:3651,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:3659,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3660,1
    - Dst: flog_warn
      Src: /src/frr/lib/zclient.c:3663,1
    - Dst: MIN
      Src: /src/frr/lib/zclient.c:3670,1
    - Dst: zapi_nexthop_decode
      Src: /src/frr/lib/zclient.c:3676,1
    - Dst: flog_warn
      Src: /src/frr/lib/zclient.c:3680,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 65
    argCount: 2
    argNames:
    - s
    - zl
    argTypes:
    - struct stream*
    - struct zapi_labels*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3692
      start: 3583
    functionDepth: 2
    functionLinenumber: 3583
    functionLinenumberEnd: 3692
    functionName: zapi_labels_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - MIN
    - PSIZE
    - flog_warn
    - memset
    - zapi_nexthop_decode
    - CHECK_FLAG
    - STREAM_GETW
    - zlog_debug
    - STREAM_GETC
    - flog_err
    - STREAM_GETL
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int zapi_labels_decode(struct stream *s, struct zapi_labels *zl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3701,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3703,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:3704,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3705,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3708,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3711,1
    - Dst: stream_put_in_addr
      Src: /src/frr/lib/zclient.c:3714,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:3717,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3720,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3725,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3726,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3729,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:3732,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3735,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3735,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3737,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - zclient
    - command
    - pw
    argTypes:
    - struct zclient*
    - int
    - struct zapi_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3738
      start: 3694
    functionDepth: 4
    functionLinenumber: 3694
    functionLinenumberEnd: 3738
    functionName: zebra_send_pw
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_put_in_addr
    - stream_write
    - stream_putw_at
    - flog_err
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zebra_send_pw(struct zclient *zclient, int
      command,\n\t\t\t\t       struct zapi_pw *pw)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:3747,1
    - Dst: stream_get
      Src: /src/frr/lib/zclient.c:3751,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3752,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct zapi_pw_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3758
      start: 3743
    functionDepth: 2
    functionLinenumber: 3743
    functionLinenumberEnd: 3758
    functionName: zebra_read_pw_status_update
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - stream_get
    - STREAM_GETL
    - memset
    linkageType: ''
    returnType: int
    signature: int zebra_read_pw_status_update(ZAPI_CALLBACK_ARGS, struct zapi_pw_status
      *pw)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3767,1
    - Dst: vrf_configure_backend
      Src: /src/frr/lib/zclient.c:3769,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:3770,1
    - Dst: memset
      Src: /src/frr/lib/zclient.c:3777,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3778,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3780,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3781,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3788
      start: 3760
    functionDepth: 1
    functionLinenumber: 3760
    functionLinenumberEnd: 3788
    functionName: zclient_capability_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - memset
    - vrf_configure_backend
    - flog_err
    - STREAM_GETC
    - STREAM_GETL
    linkageType: ''
    returnType: int
    signature: int zclient_capability_decode(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3796,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3798,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3799,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3801,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3801,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - client
    - bit_map
    argTypes:
    - struct zclient*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3803
      start: 3790
    functionDepth: 4
    functionLinenumber: 3790
    functionLinenumberEnd: 3803
    functionName: zclient_send_mlag_register
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_mlag_register(struct zclient
      *client,\n\t\t\t\t\t\t    uint32_t bit_map)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_message_send
      Src: /src/frr/lib/zclient.c:3807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3809
      start: 3805
    functionDepth: 5
    functionLinenumber: 3805
    functionLinenumberEnd: 3809
    functionName: zclient_send_mlag_deregister
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zebra_message_send
    linkageType: ''
    returnType: enum zclient_send_status
    signature: enum zclient_send_status zclient_send_mlag_deregister(struct zclient
      *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3817,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3819,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:3820,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3822,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3822,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - client
    - client_s
    argTypes:
    - struct zclient*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3824
      start: 3811
    functionDepth: 4
    functionLinenumber: 3811
    functionLinenumberEnd: 3824
    functionName: zclient_send_mlag_data
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - stream_put
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_mlag_data(struct zclient *client,\n\t\t\t\t\t\tstruct
      stream *client_s)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/zclient.c:3838,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3843,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3845,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3848,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3849,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:3852,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3855,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3855,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3857,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - zclient
    - type
    - data
    - datasize
    argTypes:
    - struct zclient*
    - uint32_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3858
      start: 3830
    functionDepth: 4
    functionLinenumber: 3830
    functionLinenumberEnd: 3858
    functionName: zclient_send_opaque
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - stream_reset
    - STREAM_SIZE
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_opaque(struct zclient *zclient,\n\t\t\t\t\t
      \    uint32_t type, const uint8_t *data,\n\t\t\t\t\t     size_t datasize)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/zclient.c:3874,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3879,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3881,1
    - Dst: SET_FLAG
      Src: /src/frr/lib/zclient.c:3884,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3885,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3886,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3889,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3890,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3891,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:3894,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3897,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3897,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 7
    argNames:
    - zclient
    - type
    - proto
    - instance
    - session_id
    - data
    - datasize
    argTypes:
    - struct zclient*
    - uint32_t
    - uint8_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3900
      start: 3864
    functionDepth: 4
    functionLinenumber: 3864
    functionLinenumberEnd: 3900
    functionName: zclient_send_opaque_unicast
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - SET_FLAG
    - stream_reset
    - stream_putc
    - STREAM_SIZE
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_opaque_unicast(struct zclient
      *zclient, uint32_t type,\n\t\t\t    uint8_t proto, uint16_t instance,\n\t\t\t
      \   uint32_t session_id, const uint8_t *data,\n\t\t\t    size_t datasize)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:3907,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3910,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3911,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:3914,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3915,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3916,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3917,1
    - Dst: STREAM_READABLE
      Src: /src/frr/lib/zclient.c:3920,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - s
    - info
    argTypes:
    - struct stream*
    - struct zapi_opaque_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3927
      start: 3905
    functionDepth: 1
    functionLinenumber: 3905
    functionLinenumberEnd: 3927
    functionName: zclient_opaque_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 5
    functionsReached:
    - memset
    - STREAM_READABLE
    - CHECK_FLAG
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    linkageType: ''
    returnType: int
    signature: int zclient_opaque_decode(struct stream *s, struct zapi_opaque_msg
      *info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3938,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3940,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3943,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3946,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3947,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3948,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3951,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3951,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - zclient
    - type
    argTypes:
    - struct zclient*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3954
      start: 3932
    functionDepth: 4
    functionLinenumber: 3932
    functionLinenumberEnd: 3954
    functionName: zclient_register_opaque
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_register_opaque(struct zclient *zclient,\n\t\t\t\t\t\t
      uint32_t type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:3965,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:3967,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3970,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:3973,1
    - Dst: stream_putw
      Src: /src/frr/lib/zclient.c:3974,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:3975,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:3978,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:3978,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:3980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - zclient
    - type
    argTypes:
    - struct zclient*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3981
      start: 3959
    functionDepth: 4
    functionLinenumber: 3959
    functionLinenumberEnd: 3981
    functionName: zclient_unregister_opaque
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_putw
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_unregister_opaque(struct zclient
      *zclient,\n\t\t\t\t\t\t   uint32_t type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3986,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:3987,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:3988,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:3989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - s
    - info
    argTypes:
    - struct stream*
    - struct zapi_opaque_reg_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3996
      start: 3984
    functionDepth: 0
    functionLinenumber: 3984
    functionLinenumberEnd: 3996
    functionName: zapi_opaque_reg_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    linkageType: ''
    returnType: int
    signature: int zapi_opaque_reg_decode(struct stream *s, struct zapi_opaque_reg_info
      *info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:4002,1
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:4004,1
    - Dst: STREAM_GETW
      Src: /src/frr/lib/zclient.c:4005,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - s
    - info
    argTypes:
    - struct stream*
    - struct zapi_client_close_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4013
      start: 3999
    functionDepth: 0
    functionLinenumber: 3999
    functionLinenumberEnd: 4013
    functionName: zapi_client_close_notify_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - STREAM_GETW
    - STREAM_GETC
    - STREAM_GETL
    - memset
    linkageType: ''
    returnType: int
    signature: "int zapi_client_close_notify_decode(struct stream *s,\n\t\t\t\t    struct
      zapi_client_close_info *info)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/zclient.c:4041,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:4043,1
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/zclient.c:4047,1
    - Dst: stream_new
      Src: /src/frr/lib/zclient.c:4048,1
    - Dst: stream_free
      Src: /src/frr/lib/zclient.c:4049,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:4054,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:4060,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:4061,1
    - Dst: stream_getw
      Src: /src/frr/lib/zclient.c:4063,1
    - Dst: stream_getc
      Src: /src/frr/lib/zclient.c:4064,1
    - Dst: stream_getc
      Src: /src/frr/lib/zclient.c:4065,1
    - Dst: stream_getl
      Src: /src/frr/lib/zclient.c:4066,1
    - Dst: stream_getw
      Src: /src/frr/lib/zclient.c:4067,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:4070,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:4080,1
    - Dst: zserv_command_string
      Src: /src/frr/lib/zclient.c:4081,1
    - Dst: array_size
      Src: /src/frr/lib/zclient.c:4083,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:4093,1
    - Dst: zclient_event
      Src: /src/frr/lib/zclient.c:4094,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - zclient
    - data
    - len
    argTypes:
    - struct zclient*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4097
      start: 4034
    functionDepth: 2
    functionLinenumber: 4034
    functionLinenumberEnd: 4097
    functionName: zclient_read_fuzz
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_new
    - stream_put
    - zserv_command_string
    - zclient_event
    - stream_getw
    - flog_err
    - stream_getl
    - zlog_debug
    - array_size
    - stream_reset
    - stream_getc
    - STREAM_SIZE
    linkageType: ''
    returnType: int
    signature: int zclient_read_fuzz(struct zclient *zclient, const uint8_t *data,
      size_t len)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/zclient.c:4110,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:4114,1
    - Dst: stream_read_try
      Src: /src/frr/lib/zclient.c:4117,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:4122,1
    - Dst: zclient_failed
      Src: /src/frr/lib/zclient.c:4125,1
    - Dst: zclient_event
      Src: /src/frr/lib/zclient.c:4129,1
    - Dst: stream_set_getp
      Src: /src/frr/lib/zclient.c:4136,1
    - Dst: stream_getw
      Src: /src/frr/lib/zclient.c:4139,1
    - Dst: stream_getc
      Src: /src/frr/lib/zclient.c:4140,1
    - Dst: stream_getc
      Src: /src/frr/lib/zclient.c:4141,1
    - Dst: stream_getl
      Src: /src/frr/lib/zclient.c:4142,1
    - Dst: stream_getw
      Src: /src/frr/lib/zclient.c:4143,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:4146,1
    - Dst: zclient_failed
      Src: /src/frr/lib/zclient.c:4150,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:4155,1
    - Dst: zclient_failed
      Src: /src/frr/lib/zclient.c:4158,1
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/zclient.c:4163,1
    - Dst: flog_err
      Src: /src/frr/lib/zclient.c:4165,1
    - Dst: STREAM_SIZE
      Src: /src/frr/lib/zclient.c:4169,1
    - Dst: stream_new
      Src: /src/frr/lib/zclient.c:4170,1
    - Dst: stream_copy
      Src: /src/frr/lib/zclient.c:4171,1
    - Dst: stream_free
      Src: /src/frr/lib/zclient.c:4172,1
    - Dst: stream_read_try
      Src: /src/frr/lib/zclient.c:4179,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:4184,1
    - Dst: zclient_failed
      Src: /src/frr/lib/zclient.c:4187,1
    - Dst: zclient_event
      Src: /src/frr/lib/zclient.c:4192,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:4200,1
    - Dst: zserv_command_string
      Src: /src/frr/lib/zclient.c:4201,1
    - Dst: array_size
      Src: /src/frr/lib/zclient.c:4203,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:4213,1
    - Dst: zclient_event
      Src: /src/frr/lib/zclient.c:4214,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 63
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4215
      start: 4101
    functionDepth: 2
    functionLinenumber: 4101
    functionLinenumberEnd: 4215
    functionName: zclient_read
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - stream_read_try
    - stream_free
    - stream_set_getp
    - stream_new
    - stream_copy
    - zclient_failed
    - zclient_event
    - zserv_command_string
    - stream_get_endp
    - stream_getw
    - zlog_debug
    - stream_getl
    - flog_err
    - array_size
    - EVENT_ARG
    - stream_reset
    - stream_getc
    - STREAM_SIZE
    linkageType: ''
    returnType: void
    signature: void zclient_read(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: redist_check_instance
      Src: /src/frr/lib/zclient.c:4223,1
    - Dst: redist_add_instance
      Src: /src/frr/lib/zclient.c:4226,1
    - Dst: redist_check_instance
      Src: /src/frr/lib/zclient.c:4229,1
    - Dst: redist_del_instance
      Src: /src/frr/lib/zclient.c:4232,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/lib/zclient.c:4238,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/lib/zclient.c:4241,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/lib/zclient.c:4243,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/lib/zclient.c:4246,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/lib/zclient.c:4251,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 6
    argNames:
    - command
    - zclient
    - afi
    - type
    - instance
    - vrf_id
    argTypes:
    - int
    - struct zclient*
    - afi_t
    - int
    - unsigned short
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4253
      start: 4217
    functionDepth: 5
    functionLinenumber: 4217
    functionLinenumberEnd: 4253
    functionName: zclient_redistribute
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 7
    functionsReached:
    - vrf_bitmap_check
    - zebra_redistribute_send
    - redist_check_instance
    - vrf_bitmap_unset
    - vrf_bitmap_set
    - redist_add_instance
    - redist_del_instance
    linkageType: ''
    returnType: void
    signature: "void zclient_redistribute(int command, struct zclient *zclient, afi_t
      afi,\n\t\t\t  int type, unsigned short instance, vrf_id_t vrf_id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_bitmap_check
      Src: /src/frr/lib/zclient.c:4261,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/lib/zclient.c:4263,1
    - Dst: vrf_bitmap_check
      Src: /src/frr/lib/zclient.c:4265,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/lib/zclient.c:4268,1
    - Dst: zebra_redistribute_default_send
      Src: /src/frr/lib/zclient.c:4272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - command
    - zclient
    - afi
    - vrf_id
    argTypes:
    - int
    - struct zclient*
    - afi_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4273
      start: 4256
    functionDepth: 5
    functionLinenumber: 4256
    functionLinenumberEnd: 4273
    functionName: zclient_redistribute_default
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - vrf_bitmap_check
    - vrf_bitmap_set
    - vrf_bitmap_unset
    - zebra_redistribute_default_send
    linkageType: ''
    returnType: void
    signature: "void zclient_redistribute_default(int command, struct zclient *zclient,\n\t\t\t\t
      \ afi_t afi, vrf_id_t vrf_id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/lib/zclient.c:4279,1
    - Dst: zlog_debug
      Src: /src/frr/lib/zclient.c:4284,1
    - Dst: event_add_timer
      Src: /src/frr/lib/zclient.c:4287,1
    - Dst: event_add_read
      Src: /src/frr/lib/zclient.c:4293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - event
    - zclient
    argTypes:
    - enum zclient_event
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4297
      start: 4275
    functionDepth: 1
    functionLinenumber: 4275
    functionLinenumberEnd: 4297
    functionName: zclient_event
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - event_add_timer
    - zlog_debug
    - event_add_read
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zclient_event(enum zclient_event event, struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:4306,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:4308,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4311,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4312,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4313,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4314,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:4316,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:4316,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:4317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - client
    - master
    - slave
    argTypes:
    - struct zclient*
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4318
      start: 4299
    functionDepth: 4
    functionLinenumber: 4299
    functionLinenumberEnd: 4318
    functionName: zclient_interface_set_master
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_interface_set_master(struct zclient
      *client,\n\t\t\t\t\t\t      struct interface *master,\n\t\t\t\t\t\t      struct
      interface *slave)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:4334,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:4335,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4336,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4341,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4342,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4346,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4347,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4348,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4351,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:4356,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:4356,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:4358,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 3
    argNames:
    - cmd
    - zclient
    - api
    argTypes:
    - uint32_t
    - struct zclient*
    - struct zapi_cap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4359
      start: 4323
    functionDepth: 4
    functionLinenumber: 4323
    functionLinenumberEnd: 4359
    functionName: zclient_capabilities_send
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 6
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_capabilities_send(uint32_t cmd,\n\t\t\t\t\t\t
      \  struct zclient *zclient,\n\t\t\t\t\t\t   struct zapi_cap *api)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zclient.c:4367,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4371,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4375,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4376,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4380,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4381,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4382,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - s
    - api
    argTypes:
    - struct stream*
    - struct zapi_cap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4390
      start: 4364
    functionDepth: 0
    functionLinenumber: 4364
    functionLinenumberEnd: 4390
    functionName: zapi_capabilities_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - STREAM_GETL
    - memset
    linkageType: ''
    returnType: int32_t
    signature: int32_t zapi_capabilities_decode(struct stream *s, struct zapi_cap
      *api)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:4400,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:4402,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4403,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:4405,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:4406,1
    - Dst: stream_put
      Src: /src/frr/lib/zclient.c:4407,1
    - Dst: prefix_blen
      Src: /src/frr/lib/zclient.c:4407,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:4409,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:4409,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:4410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - zclient
    - ifp
    - p
    argTypes:
    - struct zclient*
    - struct interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4411
      start: 4392
    functionDepth: 4
    functionLinenumber: 4392
    functionLinenumberEnd: 4411
    functionName: zclient_send_neigh_discovery_req
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - zclient_create_header
    - stream_put
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - prefix_blen
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: enum zclient_send_status
    signature: "enum zclient_send_status zclient_send_neigh_discovery_req(struct zclient
      *zclient,\n\t\t\t\t const struct interface *ifp,\n\t\t\t\t const struct prefix
      *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/zclient.c:4418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - proto
    argTypes:
    - uint32_t
    assertStmts:
    - condition: (proto < ZEBRA_ROUTE_MAX)
      pos:
        line_end: 4417
        line_start: 4417
        source_file: /src/frr/lib/zclient.c
    constantsTouched: []
    func_position:
      end: 4421
      start: 4416
    functionDepth: 1
    functionLinenumber: 4416
    functionLinenumberEnd: 4421
    functionName: zclient_get_nhg_start
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t zclient_get_nhg_start(uint32_t proto)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/zclient.c:4426,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zclient.c:4430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4432,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4434,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4436,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4437,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4438,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4439,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4441,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4442,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - flags
    - buf
    - len
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4446
      start: 4423
    functionDepth: 1
    functionLinenumber: 4423
    functionLinenumberEnd: 4446
    functionName: zclient_dump_route_flags
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 4
    functionsReached:
    - CHECK_FLAG
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: char *zclient_dump_route_flags(uint32_t flags, char *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/zclient.c:4451,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zclient.c:4455,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4457,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4459,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4461,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4463,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4464,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/zclient.c:4466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - flags
    - buf
    - len
    argTypes:
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4469
      start: 4448
    functionDepth: 1
    functionLinenumber: 4448
    functionLinenumberEnd: 4469
    functionName: zclient_evpn_dump_macip_flags
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: char *zclient_evpn_dump_macip_flags(uint8_t flags, char *buf, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETC
      Src: /src/frr/lib/zclient.c:4475,1
    - Dst: STREAM_GET
      Src: /src/frr/lib/zclient.c:4479,1
    - Dst: family2addrsize
      Src: /src/frr/lib/zclient.c:4479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - s
    - add
    argTypes:
    - struct stream*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4484
      start: 4471
    functionDepth: 1
    functionLinenumber: 4471
    functionLinenumberEnd: 4484
    functionName: zclient_neigh_ip_read_entry
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 0
    functionsReached:
    - STREAM_GETC
    - STREAM_GET
    - family2addrsize
    linkageType: ''
    returnType: int
    signature: int zclient_neigh_ip_read_entry(struct stream *s, struct ipaddr *add)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:4492,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:4493,1
    - Dst: sockunion_family
      Src: /src/frr/lib/zclient.c:4493,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:4494,1
    - Dst: sockunion_get_addr
      Src: /src/frr/lib/zclient.c:4494,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/lib/zclient.c:4494,1
    - Dst: sockunion_family
      Src: /src/frr/lib/zclient.c:4495,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:4496,1
    - Dst: sockunion_family
      Src: /src/frr/lib/zclient.c:4496,1
    - Dst: stream_write
      Src: /src/frr/lib/zclient.c:4497,1
    - Dst: sockunion_get_addr
      Src: /src/frr/lib/zclient.c:4497,1
    - Dst: sockunion_get_addrlen
      Src: /src/frr/lib/zclient.c:4498,1
    - Dst: stream_putc
      Src: /src/frr/lib/zclient.c:4500,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4501,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4503,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4505,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - s
    - cmd
    - in
    - out
    - ifp
    - ndm_state
    argTypes:
    - struct stream*
    - uint16_t
    - union sockunion*
    - union sockunion*
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4507
      start: 4486
    functionDepth: 3
    functionLinenumber: 4486
    functionLinenumberEnd: 4507
    functionName: zclient_neigh_ip_encode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 2
    functionsReached:
    - sockunion_family
    - zclient_create_header
    - sockunion_get_addr
    - sockunion_get_addrlen
    - stream_write
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zclient_neigh_ip_encode(struct stream *s, uint16_t cmd, union
      sockunion *in,\n\t\t\t    union sockunion *out, struct interface *ifp,\n\t\t\t
      \   int ndm_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_neigh_ip_read_entry
      Src: /src/frr/lib/zclient.c:4513,1
    - Dst: zclient_neigh_ip_read_entry
      Src: /src/frr/lib/zclient.c:4516,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4518,1
    - Dst: STREAM_GETL
      Src: /src/frr/lib/zclient.c:4519,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - s
    - api
    argTypes:
    - struct stream*
    - struct zapi_neigh_ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4523
      start: 4509
    functionDepth: 2
    functionLinenumber: 4509
    functionLinenumberEnd: 4523
    functionName: zclient_neigh_ip_decode
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 3
    functionsReached:
    - zclient_neigh_ip_read_entry
    - STREAM_GETL
    linkageType: ''
    returnType: int
    signature: int zclient_neigh_ip_decode(struct stream *s, struct zapi_neigh_ip
      *api)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/lib/zclient.c:4531,1
    - Dst: stream_reset
      Src: /src/frr/lib/zclient.c:4535,1
    - Dst: zclient_create_header
      Src: /src/frr/lib/zclient.c:4536,1
    - Dst: stream_putl
      Src: /src/frr/lib/zclient.c:4537,1
    - Dst: stream_putw_at
      Src: /src/frr/lib/zclient.c:4538,1
    - Dst: stream_get_endp
      Src: /src/frr/lib/zclient.c:4538,1
    - Dst: zclient_send_message
      Src: /src/frr/lib/zclient.c:4539,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - client
    - ifp
    argTypes:
    - struct zclient*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4541
      start: 4525
    functionDepth: 4
    functionLinenumber: 4525
    functionLinenumberEnd: 4541
    functionName: zclient_send_zebra_gre_request
    functionSourceFile: /src/frr/lib/zclient.c
    functionUses: 1
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - zlog_err
    - stream_putw_at
    - stream_get_endp
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: "int zclient_send_zebra_gre_request(struct zclient *client,\n\t\t\t\t
      \  struct interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - snode
    - ','
    - skey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 311
    functionName: LY_FOR_KEYS
    functionSourceFile: /src/frr/lib/yang.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_FOR_KEYS(snode, skey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - client
    - ','
    - session
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOREACH_SESSION_IN_LIST(client, session)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - id
    argTypes:
    - Mgmtd__DatastoreId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 67
    functionName: dsid2name
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *dsid2name(Mgmtd__DatastoreId id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:77,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - client
    - client_id
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 86
    functionName: mgmt_fe_find_session_by_client_id
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - MGMTD_FE_CLIENT_DBG
    linkageType: ''
    returnType: struct mgmt_fe_client_session
    signature: "struct mgmt_fe_client_session *\nmgmt_fe_find_session_by_client_id(struct
      mgmt_fe_client *client,\n\t\t\t\t  uint64_t client_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 82
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - MGMTD_FE_CLIENT_DBG
    linkageType: ''
    returnType: void
    signature: void FOREACH_SESSION_IN_LIST (client, session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:96,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - client
    - session_id
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 106
    functionName: mgmt_fe_find_session_by_session_id
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_CLIENT_DBG
    linkageType: ''
    returnType: struct mgmt_fe_client_session
    signature: "struct mgmt_fe_client_session *\nmgmt_fe_find_session_by_session_id(struct
      mgmt_fe_client *client,\n\t\t\t\t   uint64_t session_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - MGMTD_FE_CLIENT_DBG
    linkageType: ''
    returnType: void
    signature: void FOREACH_SESSION_IN_LIST (client, session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msg_conn_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:112,1
    - Dst: mgmtd__fe_message__get_packed_size
      Src: /src/frr/lib/mgmt_fe_client.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - client
    - fe_msg
    - short_circuit_ok
    argTypes:
    - struct mgmt_fe_client*
    - Mgmtd__FeMessage*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: mgmt_fe_client_send_msg
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - msg_conn_send_msg
    - mgmtd__fe_message__get_packed_size
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_client_send_msg(struct mgmt_fe_client *client,\n\t\t\t\t
      \  Mgmtd__FeMessage *fe_msg,\n\t\t\t\t   bool short_circuit_ok)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_register_req__init
      Src: /src/frr/lib/mgmt_fe_client.c:124,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/lib/mgmt_fe_client.c:127,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:131,1
    - Dst: mgmt_fe_client_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct mgmt_fe_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 119
    functionDepth: 4
    functionLinenumber: 119
    functionLinenumberEnd: 135
    functionName: mgmt_fe_send_register_req
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__fe_message__init
    - mgmt_fe_client_send_msg
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__fe_register_req__init
    linkageType: ''
    returnType: int
    signature: int mgmt_fe_send_register_req(struct mgmt_fe_client *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_session_req__init
      Src: /src/frr/lib/mgmt_fe_client.c:144,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/lib/mgmt_fe_client.c:154,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:158,1
    - Dst: mgmt_fe_client_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - client
    - session
    - create
    argTypes:
    - struct mgmt_fe_client*
    - struct mgmt_fe_client_session*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 163
    functionName: mgmt_fe_send_session_req
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__fe_message__init
    - mgmt_fe_client_send_msg
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__fe_session_req__init
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_session_req(struct mgmt_fe_client *client,\n\t\t\t\t
      \   struct mgmt_fe_client_session *session,\n\t\t\t\t    bool create)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_lock_ds_req__init
      Src: /src/frr/lib/mgmt_fe_client.c:173,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/lib/mgmt_fe_client.c:179,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:183,1
    - Dst: dsid2name
      Src: /src/frr/lib/mgmt_fe_client.c:185,1
    - Dst: mgmt_fe_client_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 6
    argNames:
    - client
    - session_id
    - req_id
    - ds_id
    - lock
    - scok
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 165
    functionDepth: 4
    functionLinenumber: 165
    functionLinenumberEnd: 189
    functionName: mgmt_fe_send_lockds_req
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - mgmtd__fe_lock_ds_req__init
    - mgmt_fe_client_send_msg
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__fe_message__init
    - dsid2name
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_lockds_req(struct mgmt_fe_client *client, uint64_t
      session_id,\n\t\t\t    uint64_t req_id, Mgmtd__DatastoreId ds_id,\n\t\t\t    bool
      lock, bool scok)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_set_config_req__init
      Src: /src/frr/lib/mgmt_fe_client.c:200,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/lib/mgmt_fe_client.c:209,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:213,1
    - Dst: dsid2name
      Src: /src/frr/lib/mgmt_fe_client.c:216,1
    - Dst: mgmt_fe_client_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 8
    argNames:
    - client
    - session_id
    - req_id
    - ds_id
    - data_req
    - num_data_reqs
    - implicit_commit
    - dst_ds_id
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - Mgmtd__YangCfgDataReq**
    - int
    - bool
    - Mgmtd__DatastoreId
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 219
    functionName: mgmt_fe_send_setcfg_req
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - mgmt_fe_client_send_msg
    - mgmtd__fe_set_config_req__init
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__fe_message__init
    - dsid2name
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_setcfg_req(struct mgmt_fe_client *client, uint64_t
      session_id,\n\t\t\t    uint64_t req_id, Mgmtd__DatastoreId ds_id,\n\t\t\t    Mgmtd__YangCfgDataReq
      **data_req, int num_data_reqs,\n\t\t\t    bool implicit_commit, Mgmtd__DatastoreId
      dst_ds_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_commit_config_req__init
      Src: /src/frr/lib/mgmt_fe_client.c:231,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/lib/mgmt_fe_client.c:239,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:243,1
    - Dst: dsid2name
      Src: /src/frr/lib/mgmt_fe_client.c:245,1
    - Dst: dsid2name
      Src: /src/frr/lib/mgmt_fe_client.c:245,1
    - Dst: mgmt_fe_client_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 7
    argNames:
    - client
    - session_id
    - req_id
    - src_ds_id
    - dest_ds_id
    - validate_only
    - abort
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - Mgmtd__DatastoreId
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 221
    functionDepth: 4
    functionLinenumber: 221
    functionLinenumberEnd: 248
    functionName: mgmt_fe_send_commitcfg_req
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - mgmtd__fe_commit_config_req__init
    - mgmt_fe_client_send_msg
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__fe_message__init
    - dsid2name
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_commitcfg_req(struct mgmt_fe_client *client,\n\t\t\t
      \      uint64_t session_id, uint64_t req_id,\n\t\t\t       Mgmtd__DatastoreId
      src_ds_id,\n\t\t\t       Mgmtd__DatastoreId dest_ds_id,\n\t\t\t       bool validate_only,
      bool abort)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_get_req__init
      Src: /src/frr/lib/mgmt_fe_client.c:259,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/lib/mgmt_fe_client.c:267,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:271,1
    - Dst: dsid2name
      Src: /src/frr/lib/mgmt_fe_client.c:273,1
    - Dst: mgmt_fe_client_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 7
    argNames:
    - client
    - session_id
    - req_id
    - is_config
    - ds_id
    - data_req
    - num_data_reqs
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    - uint64_t
    - bool
    - Mgmtd__DatastoreId
    - Mgmtd__YangGetDataReq*[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 277
    functionName: mgmt_fe_send_get_req
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - mgmt_fe_client_send_msg
    - mgmtd__fe_message__init
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__fe_get_req__init
    - dsid2name
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_get_req(struct mgmt_fe_client *client, uint64_t session_id,\n\t\t\t
      uint64_t req_id, bool is_config,\n\t\t\t Mgmtd__DatastoreId ds_id,\n\t\t\t Mgmtd__YangGetDataReq
      *data_req[], int num_data_reqs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmtd__fe_register_notify_req__init
      Src: /src/frr/lib/mgmt_fe_client.c:289,1
    - Dst: mgmtd__fe_message__init
      Src: /src/frr/lib/mgmt_fe_client.c:296,1
    - Dst: mgmt_fe_client_send_msg
      Src: /src/frr/lib/mgmt_fe_client.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 7
    argNames:
    - client
    - session_id
    - req_id
    - ds_id
    - register_req
    - data_req
    - num_data_reqs
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    - uint64_t
    - Mgmtd__DatastoreId
    - bool
    - Mgmtd__YangDataXPath*[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 301
    functionName: mgmt_fe_send_regnotify_req
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__fe_register_notify_req__init
    - mgmtd__fe_message__init
    - mgmt_fe_client_send_msg
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_send_regnotify_req(struct mgmt_fe_client *client,\n\t\t\t
      \      uint64_t session_id, uint64_t req_id,\n\t\t\t       Mgmtd__DatastoreId
      ds_id, bool register_req,\n\t\t\t       Mgmtd__YangDataXPath *data_req[],\n\t\t\t
      \      int num_data_reqs)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:316,1
    - Dst: mgmt_fe_find_session_by_client_id
      Src: /src/frr/lib/mgmt_fe_client.c:322,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:326,1
    - Dst: MGMTD_FE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_fe_client.c:332,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:337,1
    - Dst: mgmt_fe_find_session_by_session_id
      Src: /src/frr/lib/mgmt_fe_client.c:341,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:356,1
    - Dst: mgmt_fe_find_session_by_session_id
      Src: /src/frr/lib/mgmt_fe_client.c:358,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:373,1
    - Dst: mgmt_fe_find_session_by_session_id
      Src: /src/frr/lib/mgmt_fe_client.c:376,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:391,1
    - Dst: mgmt_fe_find_session_by_session_id
      Src: /src/frr/lib/mgmt_fe_client.c:394,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:411,1
    - Dst: mgmt_fe_find_session_by_session_id
      Src: /src/frr/lib/mgmt_fe_client.c:415,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 58
    argCount: 2
    argNames:
    - client
    - fe_msg
    argTypes:
    - struct mgmt_fe_client*
    - Mgmtd__FeMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 466
    functionName: mgmt_fe_client_handle_msg
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - MGMTD_FE_CLIENT_DBG
    - MGMTD_FE_CLIENT_ERR
    - mgmt_fe_find_session_by_session_id
    - mgmt_fe_find_session_by_client_id
    linkageType: ''
    returnType: int
    signature: "int mgmt_fe_client_handle_msg(struct mgmt_fe_client *client,\n\t\t\t\t
      \    Mgmtd__FeMessage *fe_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/mgmt_fe_client.c:475,1
    - Dst: container_of
      Src: /src/frr/lib/mgmt_fe_client.c:476,1
    - Dst: mgmtd__fe_message__unpack
      Src: /src/frr/lib/mgmt_fe_client.c:478,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:480,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:484,1
    - Dst: mgmt_fe_client_handle_msg
      Src: /src/frr/lib/mgmt_fe_client.c:487,1
    - Dst: mgmtd__fe_message__free_unpacked
      Src: /src/frr/lib/mgmt_fe_client.c:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - version
    - data
    - len
    - conn
    argTypes:
    - uint8_t
    - uint8_t*
    - size_t
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 468
    functionDepth: 3
    functionLinenumber: 468
    functionLinenumberEnd: 489
    functionName: mgmt_fe_client_process_msg
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - mgmtd__fe_message__unpack
    - container_of
    - mgmt_fe_client_handle_msg
    - MGMTD_FE_CLIENT_DBG
    - mgmtd__fe_message__free_unpacked
    linkageType: ''
    returnType: void
    signature: "void mgmt_fe_client_process_msg(uint8_t version, uint8_t *data,\n\t\t\t\t
      \      size_t len, struct msg_conn *conn)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/mgmt_fe_client.c:495,1
    - Dst: mgmt_fe_send_register_req
      Src: /src/frr/lib/mgmt_fe_client.c:501,1
    - Dst: mgmt_sessions_count
      Src: /src/frr/lib/mgmt_fe_client.c:506,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:507,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_fe_client.c:510,1
    - Dst: mgmt_sessions_del
      Src: /src/frr/lib/mgmt_fe_client.c:513,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_fe_client.c:523,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - msg_client
    - connected
    argTypes:
    - struct msg_client*
    - bool
    assertStmts:
    - condition: (session->client)
      pos:
        line_end: 509
        line_start: 509
        source_file: /src/frr/lib/mgmt_fe_client.c
    constantsTouched: []
    func_position:
      end: 532
      start: 491
    functionDepth: 5
    functionLinenumber: 491
    functionLinenumberEnd: 532
    functionName: _notify_connect_disconnect
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - mgmt_sessions_del
    - mgmt_fe_send_register_req
    - container_of
    - mgmt_sessions_count
    - MGMTD_FE_CLIENT_DBG
    - XFREE
    - assert
    linkageType: ''
    returnType: int
    signature: "int _notify_connect_disconnect(struct msg_client *msg_client,\n\t\t\t\t
      \     bool connected)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/mgmt_fe_client.c:510,1
    - Dst: mgmt_sessions_del
      Src: /src/frr/lib/mgmt_fe_client.c:513,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_fe_client.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (session->client)
      pos:
        line_end: 509
        line_start: 509
        source_file: /src/frr/lib/mgmt_fe_client.c
    constantsTouched: []
    func_position:
      end: 524
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 524
    functionName: FOREACH_SESSION_IN_LIST
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - mgmt_sessions_del
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: void FOREACH_SESSION_IN_LIST (client, session)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _notify_connect_disconnect
      Src: /src/frr/lib/mgmt_fe_client.c:536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct msg_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 534
    functionDepth: 6
    functionLinenumber: 534
    functionLinenumberEnd: 537
    functionName: mgmt_fe_client_notify_connect
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - _notify_connect_disconnect
    linkageType: ''
    returnType: int
    signature: int mgmt_fe_client_notify_connect(struct msg_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/mgmt_fe_client.c:541,1
    - Dst: _notify_connect_disconnect
      Src: /src/frr/lib/mgmt_fe_client.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct msg_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 539
    functionDepth: 6
    functionLinenumber: 539
    functionLinenumberEnd: 544
    functionName: mgmt_fe_client_notify_disconnect
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - container_of
    - _notify_connect_disconnect
    linkageType: ''
    returnType: int
    signature: int mgmt_fe_client_notify_disconnect(struct msg_conn *conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/lib/mgmt_fe_client.c:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 563
    functionName: mgmt_debug_client_fe_set_all
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    linkageType: ''
    returnType: void
    signature: void mgmt_debug_client_fe_set_all(uint32_t flags, bool set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/lib/mgmt_fe_client.c:567,1
    - Dst: vty_out
      Src: /src/frr/lib/mgmt_fe_client.c:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 565
    functionDepth: 2
    functionLinenumber: 565
    functionLinenumberEnd: 571
    functionName: mgmt_debug_fe_client_config_write
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - vty_out
    linkageType: ''
    returnType: int
    signature: int mgmt_debug_fe_client_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_DBG_FE_CLIENT_CHECK
      Src: /src/frr/lib/mgmt_fe_client.c:575,1
    - Dst: vty_out
      Src: /src/frr/lib/mgmt_fe_client.c:576,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 577
    functionName: mgmt_debug_fe_client_show_debug
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - MGMTD_DBG_FE_CLIENT_CHECK
    - vty_out
    linkageType: ''
    returnType: void
    signature: void mgmt_debug_fe_client_show_debug(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/mgmt_fe_client.c:598,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/mgmt_fe_client.c:600,1
    - Dst: mgmt_sessions_init
      Src: /src/frr/lib/mgmt_fe_client.c:605,1
    - Dst: msg_client_init
      Src: /src/frr/lib/mgmt_fe_client.c:607,1
    - Dst: MGMTD_DBG_FE_CLIENT_CHECK
      Src: /src/frr/lib/mgmt_fe_client.c:612,1
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:614,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - client_name
    - cbs
    - user_data
    - event_loop
    argTypes:
    - char*
    - struct mgmt_fe_client_cbs*
    - uintptr_t
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 617
    functionName: mgmt_fe_client_create
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - mgmt_sessions_init
    - MGMTD_DBG_FE_CLIENT_CHECK
    - MGMTD_FE_CLIENT_DBG
    - msg_client_init
    - XSTRDUP
    linkageType: ''
    returnType: struct mgmt_fe_client
    signature: "struct mgmt_fe_client *mgmt_fe_client_create(const char *client_name,\n\t\t\t\t\t
      \    struct mgmt_fe_client_cbs *cbs,\n\t\t\t\t\t     uintptr_t user_data,\n\t\t\t\t\t
      \    struct event_loop *event_loop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_init
      Src: /src/frr/lib/mgmt_fe_client.c:621,1
    - Dst: install_node
      Src: /src/frr/lib/mgmt_fe_client.c:622,1
    - Dst: install_element
      Src: /src/frr/lib/mgmt_fe_client.c:623,1
    - Dst: install_element
      Src: /src/frr/lib/mgmt_fe_client.c:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 619
    functionDepth: 5
    functionLinenumber: 619
    functionLinenumberEnd: 625
    functionName: mgmt_fe_client_lib_vty_init
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - install_element
    - install_node
    - debug_init
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_client_lib_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_sessions_count
      Src: /src/frr/lib/mgmt_fe_client.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct mgmt_fe_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 630
    functionName: mgmt_fe_client_session_count
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - mgmt_sessions_count
    linkageType: ''
    returnType: uint
    signature: uint mgmt_fe_client_session_count(struct mgmt_fe_client *client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct mgmt_fe_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 635
    functionName: mgmt_fe_client_current_msg_short_circuit
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool mgmt_fe_client_current_msg_short_circuit(struct mgmt_fe_client
      *client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/mgmt_fe_client.c:646,1
    - Dst: assert
      Src: /src/frr/lib/mgmt_fe_client.c:648,1
    - Dst: mgmt_sessions_add_tail
      Src: /src/frr/lib/mgmt_fe_client.c:654,1
    - Dst: mgmt_fe_send_session_req
      Src: /src/frr/lib/mgmt_fe_client.c:656,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_fe_client.c:657,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - client
    - client_id
    - user_ctx
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    - uintptr_t
    assertStmts:
    - condition: (session)
      pos:
        line_end: 647
        line_start: 647
        source_file: /src/frr/lib/mgmt_fe_client.c
    constantsTouched: []
    func_position:
      end: 662
      start: 640
    functionDepth: 5
    functionLinenumber: 640
    functionLinenumberEnd: 662
    functionName: mgmt_fe_create_client_session
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - mgmt_fe_send_session_req
    - mgmt_sessions_add_tail
    - XFREE
    - assert
    linkageType: ''
    returnType: enum mgmt_result
    signature: "enum mgmt_result mgmt_fe_create_client_session(struct mgmt_fe_client
      *client,\n\t\t\t\t\t       uint64_t client_id,\n\t\t\t\t\t       uintptr_t user_ctx)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mgmt_fe_find_session_by_client_id
      Src: /src/frr/lib/mgmt_fe_client.c:672,1
    - Dst: mgmt_fe_send_session_req
      Src: /src/frr/lib/mgmt_fe_client.c:677,1
    - Dst: MGMTD_FE_CLIENT_ERR
      Src: /src/frr/lib/mgmt_fe_client.c:678,1
    - Dst: mgmt_sessions_del
      Src: /src/frr/lib/mgmt_fe_client.c:682,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_fe_client.c:683,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - client
    - client_id
    argTypes:
    - struct mgmt_fe_client*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 667
    functionDepth: 5
    functionLinenumber: 667
    functionLinenumberEnd: 686
    functionName: mgmt_fe_destroy_client_session
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - mgmt_sessions_del
    - mgmt_fe_send_session_req
    - mgmt_fe_find_session_by_client_id
    - XFREE
    - MGMTD_FE_CLIENT_ERR
    linkageType: ''
    returnType: enum mgmt_result
    signature: "enum mgmt_result mgmt_fe_destroy_client_session(struct mgmt_fe_client
      *client,\n\t\t\t\t\t\tuint64_t client_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGMTD_FE_CLIENT_DBG
      Src: /src/frr/lib/mgmt_fe_client.c:695,1
    - Dst: FOREACH_SESSION_IN_LIST
      Src: /src/frr/lib/mgmt_fe_client.c:698,1
    - Dst: mgmt_fe_destroy_client_session
      Src: /src/frr/lib/mgmt_fe_client.c:699,1
    - Dst: msg_client_cleanup
      Src: /src/frr/lib/mgmt_fe_client.c:701,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_fe_client.c:703,1
    - Dst: XFREE
      Src: /src/frr/lib/mgmt_fe_client.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client
    argTypes:
    - struct mgmt_fe_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 691
    functionDepth: 6
    functionLinenumber: 691
    functionLinenumberEnd: 705
    functionName: mgmt_fe_client_destroy
    functionSourceFile: /src/frr/lib/mgmt_fe_client.c
    functionUses: 1
    functionsReached:
    - FOREACH_SESSION_IN_LIST
    - msg_client_cleanup
    - MGMTD_FE_CLIENT_DBG
    - XFREE
    - mgmt_fe_destroy_client_session
    linkageType: ''
    returnType: void
    signature: void mgmt_fe_client_destroy(struct mgmt_fe_client *client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assume
      Src: /src/frr/lib/ntop.c:47,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - bytex
    - posx
    argTypes:
    - uint8_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 56
    functionName: putbyte
    functionSourceFile: /src/frr/lib/ntop.c
    functionUses: 0
    functionsReached:
    - assume
    linkageType: ''
    returnType: void
    signature: void putbyte(uint8_t bytex, char **posx)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - word
    - posx
    argTypes:
    - uint16_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 71
    functionName: puthex
    functionSourceFile: /src/frr/lib/ntop.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void puthex(uint16_t word, char **posx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: putbyte
      Src: /src/frr/lib/ntop.c:94,1
    - Dst: putbyte
      Src: /src/frr/lib/ntop.c:96,1
    - Dst: putbyte
      Src: /src/frr/lib/ntop.c:98,1
    - Dst: putbyte
      Src: /src/frr/lib/ntop.c:100,1
    - Dst: puthex
      Src: /src/frr/lib/ntop.c:139,1
    - Dst: assume
      Src: /src/frr/lib/ntop.c:156,1
    - Dst: memcpy
      Src: /src/frr/lib/ntop.c:157,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 64
    argCount: 4
    argNames:
    - af
    - src
    - dst
    - size
    argTypes:
    - int
    - void*
    - char*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 159
    functionName: frr_inet_ntop
    functionSourceFile: /src/frr/lib/ntop.c
    functionUses: 1
    functionsReached:
    - puthex
    - assume
    - memcpy
    - putbyte
    linkageType: ''
    returnType: char
    signature: "char *frr_inet_ntop(int af, const void * restrict src,\n\t\t\t  char
      * restrict dst, socklen_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: SHIFT
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHIFT(X, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: F
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 437
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: F(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: G
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 1811
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: G(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: H
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 212
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: H(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - X
    - ','
    - Y
    - ','
    - Z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: I
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 83
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I(X, Y, Z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: ROUND1
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND1(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: ROUND2
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND2(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: ROUND3
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND3(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - k
    - ','
    - s
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: ROUND4
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND4(a, b, c, d, k, s, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/md5.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctxt
    argTypes:
    - md5_ctxt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: md5_init
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void md5_init(md5_ctxt *ctxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:125,1
    - Dst: md5_calc
      Src: /src/frr/lib/md5.c:126,1
    - Dst: md5_calc
      Src: /src/frr/lib/md5.c:129,1
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:133,1
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctxt
    - vinput
    - len
    argTypes:
    - md5_ctxt*
    - void*
    - uint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 138
    functionName: md5_loop
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached:
    - md5_calc
    - memcpy
    linkageType: ''
    returnType: void
    signature: void md5_loop(md5_ctxt *ctxt, const void *vinput, uint len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:147,1
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:151,1
    - Dst: md5_calc
      Src: /src/frr/lib/md5.c:152,1
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:153,1
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:159,1
    - Dst: md5_calc
      Src: /src/frr/lib/md5.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - ctxt
    argTypes:
    - md5_ctxt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 171
    functionName: md5_pad
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached:
    - md5_calc
    - memcpy
    linkageType: ''
    returnType: void
    signature: void md5_pad(md5_ctxt *ctxt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/md5.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - digest
    - ctxt
    argTypes:
    - uint8_t*
    - md5_ctxt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 196
    functionName: md5_result
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void md5_result(uint8_t *digest, md5_ctxt *ctxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:280,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:281,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:282,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:283,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:284,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:285,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:286,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:287,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:288,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:289,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:290,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:291,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:292,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:293,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:294,1
    - Dst: ROUND1
      Src: /src/frr/lib/md5.c:295,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:297,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:298,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:299,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:300,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:301,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:302,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:303,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:304,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:305,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:306,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:307,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:308,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:309,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:310,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:311,1
    - Dst: ROUND2
      Src: /src/frr/lib/md5.c:312,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:314,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:315,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:316,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:317,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:318,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:319,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:320,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:321,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:322,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:323,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:324,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:325,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:326,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:327,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:328,1
    - Dst: ROUND3
      Src: /src/frr/lib/md5.c:329,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:331,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:332,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:333,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:334,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:335,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:336,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:337,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:338,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:339,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:340,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:341,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:342,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:343,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:344,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:345,1
    - Dst: ROUND4
      Src: /src/frr/lib/md5.c:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 135
    argCount: 2
    argNames:
    - b64
    - ctxt
    argTypes:
    - uint8_t*
    - md5_ctxt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 352
    functionName: md5_calc
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 2
    functionsReached:
    - ROUND3
    - ROUND1
    - ROUND2
    - ROUND4
    linkageType: ''
    returnType: void
    signature: void md5_calc(const uint8_t *b64, md5_ctxt *ctxt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MD5Init
      Src: /src/frr/lib/md5.c:372,1
    - Dst: MD5Update
      Src: /src/frr/lib/md5.c:373,1
    - Dst: MD5Final
      Src: /src/frr/lib/md5.c:374,1
    - Dst: bzero
      Src: /src/frr/lib/md5.c:392,1
    - Dst: bzero
      Src: /src/frr/lib/md5.c:393,1
    - Dst: bcopy
      Src: /src/frr/lib/md5.c:394,1
    - Dst: bcopy
      Src: /src/frr/lib/md5.c:395,1
    - Dst: MD5Init
      Src: /src/frr/lib/md5.c:405,1
    - Dst: MD5Update
      Src: /src/frr/lib/md5.c:407,1
    - Dst: MD5Update
      Src: /src/frr/lib/md5.c:408,1
    - Dst: MD5Final
      Src: /src/frr/lib/md5.c:409,1
    - Dst: MD5Init
      Src: /src/frr/lib/md5.c:413,1
    - Dst: MD5Update
      Src: /src/frr/lib/md5.c:415,1
    - Dst: MD5Update
      Src: /src/frr/lib/md5.c:416,1
    - Dst: MD5Final
      Src: /src/frr/lib/md5.c:418,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/md5.c:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 5
    argNames:
    - text
    - text_len
    - key
    - key_len
    - digest
    argTypes:
    - unsigned char*
    - int
    - unsigned char*
    - int
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 420
    functionName: hmac_md5
    functionSourceFile: /src/frr/lib/md5.c
    functionUses: 3
    functionsReached:
    - explicit_bzero
    - bcopy
    - MD5Init
    - bzero
    - MD5Update
    - MD5Final
    linkageType: ''
    returnType: void
    signature: "void hmac_md5(unsigned char *text, int text_len, unsigned char *key,\n\t
      \     int key_len, uint8_t *digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 14
    functionName: mgmt_yang_data_xpath_init
    functionSourceFile: /src/frr/lib/mgmt_pb.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mgmt_yang_data_xpath_init(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 16
    functionName: mgmt_yang_data_value_init
    functionSourceFile: /src/frr/lib/mgmt_pb.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mgmt_yang_data_value_init(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: mgmt_yang_data_init
    functionSourceFile: /src/frr/lib/mgmt_pb.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mgmt_yang_data_init(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: mgmt_yang_data_reply_init
    functionSourceFile: /src/frr/lib/mgmt_pb.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mgmt_yang_data_reply_init(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: mgmt_yang_cfg_data_req_init
    functionSourceFile: /src/frr/lib/mgmt_pb.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mgmt_yang_cfg_data_req_init(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: mgmt_yang_get_data_req_init
    functionSourceFile: /src/frr/lib/mgmt_pb.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mgmt_yang_get_data_req_init(ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - head
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: frr_each
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 102
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_each(prefix, head, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - head
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: frr_each_const
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_each_const(prefix, head, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - head
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 33
    functionName: frr_each_safe
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 52
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_each_safe(prefix, head, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - head
    - ','
    - item
    - ','
    - from
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 37
    functionName: frr_each_from
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_each_from(prefix, head, item, from)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - head
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: frr_rev_each
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_rev_each(prefix, head, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - head
    - ','
    - item
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: frr_rev_each_safe
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_rev_each_safe(prefix, head, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - head
    - ','
    - item
    - ','
    - from
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: frr_rev_each_from
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frr_rev_each_from(prefix, head, item, from)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 68
    functionName: TYPESAFE_FIRST_NEXT
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPESAFE_FIRST_NEXT(prefix, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: TYPESAFE_LAST_PREV
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPESAFE_LAST_PREV(prefix, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: TYPESAFE_FIND
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPESAFE_FIND(prefix, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 97
    functionName: TYPESAFE_FIND_CMP
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPESAFE_FIND_CMP(prefix, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - prefix
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: TYPESAFE_MEMBER_VIA_FIND
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPESAFE_MEMBER_VIA_FIND(prefix, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 123
    functionName: TYPESAFE_MEMBER_VIA_FIND_GTEQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPESAFE_MEMBER_VIA_FIND_GTEQ(prefix, type, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: TYPESAFE_SWAP_ALL_SIMPLE
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPESAFE_SWAP_ALL_SIMPLE(prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - head
    - pos
    - item
    argTypes:
    - struct slist_head*
    - struct slist_item**
    - struct slist_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 164
    functionName: typesafe_list_add
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void typesafe_list_add(struct slist_head *head,\n\t\tstruct slist_item
      **pos, struct slist_item *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: PREDECL_LIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_LIST(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 183
    functionName: INIT_LIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_LIST(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 211
    functionName: DECLARE_LIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_LIST(prefix, type, field)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct prefix*
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 225
    functionName: _del
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 303
    functionsReached: []
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _del(struct prefix##_head *h, type *item)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/typesafe.h:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 237
    functionName: _pop
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 78
    functionsReached:
    - container_of
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _pop(struct prefix##_head *h)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct prefix*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 248
    functionName: _swap_all
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: macro_inline
    signature: "macro_inline _swap_all(struct prefix##_head *a,                 \\\n\t\t\t\t
      \     struct prefix##_head *b)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/typesafe.h:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: _const_first
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 2
    functionsReached:
    - container_of
    linkageType: ''
    returnType: macro_pure
    signature: 'macro_pure *prefix ## _const_first(const struct prefix##_head *h)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/typesafe.h:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct prefix*
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 262
    functionName: _const_next
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 3
    functionsReached:
    - container_of
    linkageType: ''
    returnType: macro_pure
    signature: "macro_pure *prefix ## _const_next(const struct prefix##_head *h,    \\\n\t\t\t\t\t
      \    const type *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: _count
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 182
    functionsReached: []
    linkageType: ''
    returnType: macro_pure
    signature: macro_pure _count(const struct prefix##_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - item
    argTypes:
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 281
    functionName: _anywhere
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: macro_pure
    signature: macro_pure _anywhere(const type *item)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: typesafe_list_member
      Src: /src/frr/lib/typesafe.h:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct prefix*
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: _member
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 7
    functionsReached:
    - typesafe_list_member
    linkageType: ''
    returnType: macro_pure
    signature: "macro_pure _member(const struct prefix##_head *h,               \\\n\t\t\t\t
      \ const type *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assume
      Src: /src/frr/lib/typesafe.h:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - head
    - prev
    - item
    argTypes:
    - struct dlist_head*
    - struct dlist_item*
    - struct dlist_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 327
    functionName: typesafe_dlist_add
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached:
    - assume
    linkageType: ''
    returnType: void
    signature: "void typesafe_dlist_add(struct dlist_head *head,\n\t\tstruct dlist_item
      *prev, struct dlist_item *item)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct dlist_head*
    - struct dlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 355
    functionName: typesafe_dlist_swap_all
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void typesafe_dlist_swap_all(struct dlist_head *a,\n\t\t\t\t\t   struct
      dlist_head *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 366
    functionName: PREDECL_DLIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_DLIST(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: INIT_DLIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_DLIST(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 481
    functionName: DECLARE_DLIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_DLIST(prefix, type, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 498
    functionName: HEAP_RESIZE_TRESH_UP
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAP_RESIZE_TRESH_UP(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 501
    functionName: HEAP_RESIZE_TRESH_DN
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEAP_RESIZE_TRESH_DN(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 506
    functionName: PREDECL_HEAP
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_HEAP(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 508
    functionName: INIT_HEAP
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_HEAP(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 598
    functionName: DECLARE_HEAP
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_HEAP(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 635
    functionName: _PREDECL_SORTLIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _PREDECL_SORTLIST(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 637
    functionName: INIT_SORTLIST_UNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_SORTLIST_UNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 638
    functionName: INIT_SORTLIST_NONUNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_SORTLIST_NONUNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 641
    functionName: PREDECL_SORTLIST_UNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_SORTLIST_UNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 643
    functionName: PREDECL_SORTLIST_NONUNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_SORTLIST_NONUNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn_nuq
    - ','
    - cmpfn_uq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 689
    functionName: _DECLARE_SORTLIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DECLARE_SORTLIST(prefix, type, field, cmpfn_nuq, cmpfn_uq)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct prefix*
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 701
    functionName: _del
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 303
    functionsReached: []
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _del(struct prefix##_head *h, type *item)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/typesafe.h:709,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 710
    functionName: _pop
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 78
    functionsReached:
    - container_of
    linkageType: ''
    returnType: macro_inline
    signature: 'macro_inline *prefix ## _pop(struct prefix##_head *h)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of_null
      Src: /src/frr/lib/typesafe.h:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 715
    functionName: _const_first
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 2
    functionsReached:
    - container_of_null
    linkageType: ''
    returnType: type
    signature: 'type *prefix ## _const_first(const struct prefix##_head *h)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of_null
      Src: /src/frr/lib/typesafe.h:720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - h
    - item
    argTypes:
    - struct prefix*
    - type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 721
    functionName: _const_next
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 3
    functionsReached:
    - container_of_null
    linkageType: ''
    returnType: macro_pure
    signature: "macro_pure *prefix ## _const_next(const struct prefix##_head *h,    \\\n\t\t\t\t\t
      \    const type *item)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 731
    functionDepth: 0
    functionLinenumber: 731
    functionLinenumberEnd: 734
    functionName: _count
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 182
    functionsReached: []
    linkageType: ''
    returnType: macro_pure
    signature: macro_pure _count(const struct prefix##_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 737
    functionDepth: 0
    functionLinenumber: 737
    functionLinenumberEnd: 755
    functionName: DECLARE_SORTLIST_UNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_SORTLIST_UNIQ(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 771
    functionName: DECLARE_SORTLIST_NONUNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_SORTLIST_NONUNIQ(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tabshift
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 798
    functionName: _HASH_SIZE
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _HASH_SIZE(tabshift)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 800
    functionName: HASH_SIZE
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_SIZE(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tabshift
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 805
    functionName: _HASH_KEY
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _HASH_KEY(tabshift, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - head
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 805
    functionDepth: 0
    functionLinenumber: 805
    functionLinenumberEnd: 807
    functionName: HASH_KEY
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_KEY(head, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 809
    functionName: HASH_GROW_THRESHOLD
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_GROW_THRESHOLD(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 809
    functionDepth: 0
    functionLinenumber: 809
    functionLinenumberEnd: 811
    functionName: HASH_SHRINK_THRESHOLD
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_SHRINK_THRESHOLD(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 827
    functionName: PREDECL_HASH
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_HASH(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 829
    functionName: INIT_HASH
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_HASH(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - ','
    - hashfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 830
    functionDepth: 0
    functionLinenumber: 830
    functionLinenumberEnd: 964
    functionName: DECLARE_HASH
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_HASH(prefix, type, field, cmpfn, hashfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 996
    functionDepth: 0
    functionLinenumber: 996
    functionLinenumberEnd: 1000
    functionName: _PREDECL_SKIPLIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _PREDECL_SKIPLIST(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 1001
    functionDepth: 0
    functionLinenumber: 1001
    functionLinenumberEnd: 1002
    functionName: INIT_SKIPLIST_UNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_SKIPLIST_UNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1003
    functionName: INIT_SKIPLIST_NONUNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INIT_SKIPLIST_NONUNIQ(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn_nuq
    - ','
    - cmpfn_uq
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1082
    functionName: _DECLARE_SKIPLIST
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _DECLARE_SKIPLIST(prefix, type, field, cmpfn_nuq, cmpfn_uq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1083
    functionDepth: 0
    functionLinenumber: 1083
    functionLinenumberEnd: 1085
    functionName: PREDECL_SKIPLIST_UNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_SKIPLIST_UNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1106
    functionName: DECLARE_SKIPLIST_UNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_SKIPLIST_UNIQ(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - prefix
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1107
    functionDepth: 0
    functionLinenumber: 1107
    functionLinenumberEnd: 1109
    functionName: PREDECL_SKIPLIST_NONUNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREDECL_SKIPLIST_NONUNIQ(prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - prefix
    - ','
    - type
    - ','
    - field
    - ','
    - cmpfn
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1135
    functionName: DECLARE_SKIPLIST_NONUNIQ
    functionSourceFile: /src/frr/lib/typesafe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_SKIPLIST_NONUNIQ(prefix, type, field, cmpfn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: SPLAY_HEAD
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_HEAD(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - root
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: SPLAY_INITIALIZER
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_INITIALIZER(root)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - root
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: SPLAY_INIT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_INIT(root)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: SPLAY_ENTRY
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_ENTRY(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: SPLAY_LEFT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_LEFT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - elm
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: SPLAY_RIGHT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_RIGHT(elm, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: SPLAY_ROOT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_ROOT(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: SPLAY_EMPTY
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_EMPTY(head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - tmp
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: SPLAY_ROTATE_RIGHT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_ROTATE_RIGHT(head, tmp, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - tmp
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: SPLAY_ROTATE_LEFT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_ROTATE_LEFT(head, tmp, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - tmp
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: SPLAY_LINKLEFT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_LINKLEFT(head, tmp, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - head
    - ','
    - tmp
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: SPLAY_LINKRIGHT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_LINKRIGHT(head, tmp, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - head
    - ','
    - node
    - ','
    - left
    - ','
    - right
    - ','
    - field
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 107
    functionName: SPLAY_ASSEMBLE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_ASSEMBLE(head, node, left, right, field)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - field
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 116
    functionName: SPLAY_PROTOTYPE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_PROTOTYPE(name, type, field, cmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SPLAY_EMPTY
      Src: /src/frr/lib/openbsd-tree.h:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - head
    - elm
    argTypes:
    - struct name*
    - struct type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 126
    functionName: _SPLAY_FIND
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached:
    - SPLAY_EMPTY
    linkageType: ''
    returnType: struct type
    signature: "struct type *name##_SPLAY_FIND(struct name *head,      \\\n\t\t\t\t\t\t
      \      struct type *elm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SPLAY_RIGHT
      Src: /src/frr/lib/openbsd-tree.h:132,1
    - Dst: SPLAY_RIGHT
      Src: /src/frr/lib/openbsd-tree.h:133,1
    - Dst: SPLAY_LEFT
      Src: /src/frr/lib/openbsd-tree.h:134,1
    - Dst: SPLAY_LEFT
      Src: /src/frr/lib/openbsd-tree.h:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - head
    - elm
    argTypes:
    - struct name*
    - struct type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: _SPLAY_NEXT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached:
    - SPLAY_LEFT
    - SPLAY_RIGHT
    linkageType: ''
    returnType: struct type
    signature: "struct type *name##_SPLAY_NEXT(struct name *head,      \\\n\t\t\t\t\t\t
      \      struct type *elm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPLAY_ROOT
      Src: /src/frr/lib/openbsd-tree.h:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - head
    - val
    argTypes:
    - struct name*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 147
    functionName: _SPLAY_MIN_MAX
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached:
    - SPLAY_ROOT
    linkageType: ''
    returnType: struct type
    signature: "struct type *name##_SPLAY_MIN_MAX(struct name *head,   \\\n\t\t\t\t\t\t\t
      \ int val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - name
    - ','
    - type
    - ','
    - field
    - ','
    - cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 243
    functionName: SPLAY_GENERATE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_GENERATE(name, type, field, cmp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SPLAY_LEFT
      Src: /src/frr/lib/openbsd-tree.h:248,1
    - Dst: SPLAY_RIGHT
      Src: /src/frr/lib/openbsd-tree.h:248,1
    - Dst: SPLAY_LEFT
      Src: /src/frr/lib/openbsd-tree.h:254,1
    - Dst: SPLAY_ROTATE_RIGHT
      Src: /src/frr/lib/openbsd-tree.h:258,1
    - Dst: SPLAY_LEFT
      Src: /src/frr/lib/openbsd-tree.h:260,1
    - Dst: SPLAY_LINKLEFT
      Src: /src/frr/lib/openbsd-tree.h:265,1
    - Dst: SPLAY_RIGHT
      Src: /src/frr/lib/openbsd-tree.h:267,1
    - Dst: SPLAY_ROTATE_LEFT
      Src: /src/frr/lib/openbsd-tree.h:271,1
    - Dst: SPLAY_RIGHT
      Src: /src/frr/lib/openbsd-tree.h:272,1
    - Dst: SPLAY_LINKRIGHT
      Src: /src/frr/lib/openbsd-tree.h:277,1
    - Dst: SPLAY_ASSEMBLE
      Src: /src/frr/lib/openbsd-tree.h:280,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 2
    argNames:
    - head
    - __comp
    argTypes:
    - struct name*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 281
    functionName: _SPLAY_MINMAX
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached:
    - SPLAY_LINKLEFT
    - SPLAY_ROTATE_LEFT
    - SPLAY_LEFT
    - SPLAY_LINKRIGHT
    - SPLAY_ROTATE_RIGHT
    - SPLAY_RIGHT
    - SPLAY_ASSEMBLE
    linkageType: ''
    returnType: void
    signature: void _SPLAY_MINMAX(struct name *head, int __comp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: SPLAY_INSERT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_INSERT(name, x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 288
    functionName: SPLAY_REMOVE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_REMOVE(name, x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 289
    functionName: SPLAY_FIND
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_FIND(name, x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name
    - ','
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 290
    functionName: SPLAY_NEXT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_NEXT(name, x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 292
    functionName: SPLAY_MIN
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_MIN(name, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 294
    functionName: SPLAY_MAX
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_MAX(name, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - name
    - ','
    - head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: SPLAY_FOREACH
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SPLAY_FOREACH(x, name, head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 327
    functionName: RB_HEAD
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_HEAD(_name, _type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 329
    functionName: RB_ENTRY
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_ENTRY(_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rbt
    argTypes:
    - struct rbt_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 333
    functionName: _rb_init
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _rb_init(struct rbt_tree *rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rbt
    argTypes:
    - struct rbt_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: _rb_empty
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _rb_empty(const struct rbt_tree *rbt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 359
    functionName: RB_INITIALIZER
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_INITIALIZER(_head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _name
    - ','
    - _type
    - ','
    - _field
    - ','
    - _cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 485
    functionName: RB_PROTOTYPE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_PROTOTYPE(_name, _type, _field, _cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _name
    - ','
    - _type
    - ','
    - _field
    - ','
    - _cmp
    - ','
    - _aug
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 496
    functionName: RB_GENERATE_INTERNAL
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_GENERATE_INTERNAL(_name, _type, _field, _cmp, _aug)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _name
    - ','
    - _type
    - ','
    - _field
    - ','
    - _cmp
    - ','
    - _aug
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 504
    functionName: RB_GENERATE_AUGMENT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_GENERATE_AUGMENT(_name, _type, _field, _cmp, _aug)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _name
    - ','
    - _type
    - ','
    - _field
    - ','
    - _cmp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 507
    functionName: RB_GENERATE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_GENERATE(_name, _type, _field, _cmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 509
    functionName: RB_INIT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_INIT(_name, _head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _head
    - ','
    - _elm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 510
    functionName: RB_INSERT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_INSERT(_name, _head, _elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _head
    - ','
    - _elm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 511
    functionName: RB_REMOVE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_REMOVE(_name, _head, _elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _head
    - ','
    - _key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 512
    functionName: RB_FIND
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_FIND(_name, _head, _key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _head
    - ','
    - _key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 513
    functionName: RB_NFIND
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_NFIND(_name, _head, _key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 514
    functionName: RB_ROOT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_ROOT(_name, _head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 515
    functionName: RB_EMPTY
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_EMPTY(_name, _head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 516
    functionName: RB_MIN
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_MIN(_name, _head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 517
    functionName: RB_MAX
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_MAX(_name, _head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _elm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 518
    functionName: RB_NEXT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_NEXT(_name, _elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _elm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 519
    functionName: RB_PREV
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_PREV(_name, _elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _elm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 520
    functionName: RB_LEFT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_LEFT(_name, _elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _elm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 521
    functionName: RB_RIGHT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_RIGHT(_name, _elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _name
    - ','
    - _elm
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 522
    functionName: RB_PARENT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_PARENT(_name, _elm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _elm
    - ','
    - _l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 523
    functionName: RB_SET_LEFT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_SET_LEFT(_name, _elm, _l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _elm
    - ','
    - _r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 524
    functionName: RB_SET_RIGHT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_SET_RIGHT(_name, _elm, _r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _elm
    - ','
    - _p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 525
    functionName: RB_SET_PARENT
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_SET_PARENT(_name, _elm, _p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _elm
    - ','
    - _p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 526
    functionName: RB_POISON
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_POISON(_name, _elm, _p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _name
    - ','
    - _elm
    - ','
    - _p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 527
    functionName: RB_CHECK
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_CHECK(_name, _elm, _p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _e
    - ','
    - _name
    - ','
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: RB_FOREACH
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 106
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_FOREACH(_e, _name, _head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _e
    - ','
    - _name
    - ','
    - _head
    - ','
    - _n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 535
    functionName: RB_FOREACH_SAFE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_FOREACH_SAFE(_e, _name, _head, _n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _e
    - ','
    - _name
    - ','
    - _head
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 539
    functionName: RB_FOREACH_REVERSE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_FOREACH_REVERSE(_e, _name, _head)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _e
    - ','
    - _name
    - ','
    - _head
    - ','
    - _n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 543
    functionName: RB_FOREACH_REVERSE_SAFE
    functionSourceFile: /src/frr/lib/openbsd-tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RB_FOREACH_REVERSE_SAFE(_e, _name, _head, _n)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - inpos
    - bitpos
    - out
    - n_chars
    argTypes:
    - uint8_t**
    - int*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 55
    functionName: base32
    functionSourceFile: /src/frr/lib/xref.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void base32(uint8_t **inpos, int *bitpos,\n\t\t   char *out, size_t
      n_chars)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/frr/lib/xref.c:82,1
    - Dst: memrchr
      Src: /src/frr/lib/xref.c:84,1
    - Dst: SHA256_Init
      Src: /src/frr/lib/xref.c:89,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/xref.c:90,1
    - Dst: strlen
      Src: /src/frr/lib/xref.c:90,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/xref.c:91,1
    - Dst: strlen
      Src: /src/frr/lib/xref.c:92,1
    - Dst: htonl
      Src: /src/frr/lib/xref.c:93,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/xref.c:94,1
    - Dst: htonl
      Src: /src/frr/lib/xref.c:95,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/xref.c:96,1
    - Dst: SHA256_Final
      Src: /src/frr/lib/xref.c:97,1
    - Dst: base32
      Src: /src/frr/lib/xref.c:100,1
    - Dst: base32
      Src: /src/frr/lib/xref.c:102,1
    - Dst: xrefdata_uid_add
      Src: /src/frr/lib/xref.c:104,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - xref
    argTypes:
    - struct xref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 105
    functionName: xref_add_one
    functionSourceFile: /src/frr/lib/xref.c
    functionUses: 0
    functionsReached:
    - SHA256_Init
    - strlen
    - SHA256_Update
    - strrchr
    - base32
    - htonl
    - memrchr
    - SHA256_Final
    - xrefdata_uid_add
    linkageType: ''
    returnType: void
    signature: void xref_add_one(const struct xref *xref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xref_add_one
      Src: /src/frr/lib/xref.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - xref
    argTypes:
    - struct xref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: xref_gcc_workaround
    functionSourceFile: /src/frr/lib/xref.c
    functionUses: 1
    functionsReached:
    - xref_add_one
    linkageType: ''
    returnType: void
    signature: void xref_gcc_workaround(const struct xref *xref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xref_add_one
      Src: /src/frr/lib/xref.c:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - block
    argTypes:
    - struct xref_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: xref_block_add
    functionSourceFile: /src/frr/lib/xref.c
    functionUses: 1
    functionsReached:
    - xref_add_one
    linkageType: ''
    returnType: void
    signature: void xref_block_add(struct xref_block *block)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/if_rmap.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: if_rmap_new
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct if_rmap
    signature: struct if_rmap *if_rmap_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:37,1
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:39,1
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:40,1
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - if_rmap
    argTypes:
    - struct if_rmap*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: if_rmap_free
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void if_rmap_free(struct if_rmap *if_rmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/lib/if_rmap.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - ifname
    argTypes:
    - struct if_rmap_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 4
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: if_rmap_lookup
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 2
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct if_rmap
    signature: struct if_rmap *if_rmap_lookup(struct if_rmap_ctx *ctx, const char
      *ifname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct if_rmap_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: if_rmap_hook_add
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void if_rmap_hook_add(struct if_rmap_ctx *ctx,\n\t\t      void (*func)(struct
      if_rmap_ctx *ctx, struct if_rmap *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct if_rmap_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: if_rmap_hook_delete
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void if_rmap_hook_delete(struct if_rmap_ctx *ctx,\n\t\t\t void (*func)(struct
      if_rmap_ctx *ctx,\n\t\t\t\t      struct if_rmap *))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_rmap_new
      Src: /src/frr/lib/if_rmap.c:73,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if_rmap.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: if_rmap_hash_alloc
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - if_rmap_new
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *if_rmap_hash_alloc(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/lib/if_rmap.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - ifname
    argTypes:
    - struct if_rmap_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 87
    functionName: if_rmap_get
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: struct if_rmap
    signature: struct if_rmap *if_rmap_get(struct if_rmap_ctx *ctx, const char *ifname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/lib/if_rmap.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: if_rmap_hash_make
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int if_rmap_hash_make(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/if_rmap.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: if_rmap_hash_cmp
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool if_rmap_hash_cmp(const void *arg1, const void *arg2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_rmap_get
      Src: /src/frr/lib/if_rmap.c:107,1
    - Dst: assert
      Src: /src/frr/lib/if_rmap.c:109,1
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:110,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if_rmap.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - ifname
    - type
    - routemap_name
    argTypes:
    - struct if_rmap_ctx*
    - char*
    - enum if_rmap_type
    - char*
    assertStmts:
    - condition: (type == IF_RMAP_IN || type == IF_RMAP_OUT)
      pos:
        line_end: 108
        line_start: 108
        source_file: /src/frr/lib/if_rmap.c
    constantsTouched: []
    func_position:
      end: 115
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 115
    functionName: if_rmap_set
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - XFREE
    - if_rmap_get
    - XSTRDUP
    - assert
    linkageType: ''
    returnType: void
    signature: "void if_rmap_set(struct if_rmap_ctx *ctx, const char *ifname,\n\t\t\tenum
      if_rmap_type type, const char *routemap_name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_rmap_lookup
      Src: /src/frr/lib/if_rmap.c:120,1
    - Dst: assert
      Src: /src/frr/lib/if_rmap.c:125,1
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:129,1
    - Dst: struct if_rmap_ctx*::if_rmap_delete_hook
      Src: /src/frr/lib/if_rmap.c:132,1
    - Dst: hash_release
      Src: /src/frr/lib/if_rmap.c:136,1
    - Dst: if_rmap_free
      Src: /src/frr/lib/if_rmap.c:137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - ifname
    - type
    argTypes:
    - struct if_rmap_ctx*
    - char*
    - enum if_rmap_type
    assertStmts:
    - condition: (type == IF_RMAP_IN || type == IF_RMAP_OUT)
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/frr/lib/if_rmap.c
    constantsTouched: []
    func_position:
      end: 139
      start: 117
    functionDepth: 5
    functionLinenumber: 117
    functionLinenumberEnd: 139
    functionName: if_rmap_unset
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - if_rmap_lookup
    - if_rmap_free
    - struct if_rmap_ctx*::if_rmap_delete_hook
    - XFREE
    - hash_release
    - assert
    linkageType: ''
    returnType: void
    signature: "void if_rmap_unset(struct if_rmap_ctx *ctx, const char *ifname,\n\t\t\t
      \ enum if_rmap_type type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/if_rmap.c:150,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/if_rmap.c:160,1
    - Dst: yang_dnode_existsf
      Src: /src/frr/lib/if_rmap.c:162,1
    - Dst: snprintf
      Src: /src/frr/lib/if_rmap.c:166,1
    - Dst: snprintf
      Src: /src/frr/lib/if_rmap.c:172,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/lib/if_rmap.c:177,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/lib/if_rmap.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - vty
    - 'no'
    - dir
    - other_dir
    - ifname
    - route_map
    argTypes:
    - struct vty*
    - bool
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 141
    functionDepth: 7
    functionLinenumber: 141
    functionLinenumberEnd: 180
    functionName: if_route_map_handler
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - yang_dnode_existsf
    - snprintf
    - yang_dnode_get
    - nb_cli_enqueue_change
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: "int if_route_map_handler(struct vty *vty, bool no, const char *dir,\n\t\t\t\tconst
      char *other_dir, const char *ifname,\n\t\t\t\tconst char *route_map)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/if_rmap.c:246,1
    - Dst: vty_out
      Src: /src/frr/lib/if_rmap.c:247,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if_rmap.c:248,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if_rmap.c:249,1
    - Dst: yang_dnode_exists
      Src: /src/frr/lib/if_rmap.c:250,1
    - Dst: vty_out
      Src: /src/frr/lib/if_rmap.c:251,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if_rmap.c:252,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if_rmap.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 254
    functionName: cli_show_if_route_map
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void cli_show_if_route_map(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if_rmap.c:261,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if_rmap.c:262,1
    - Dst: if_rmap_unset
      Src: /src/frr/lib/if_rmap.c:265,1
    - Dst: if_rmap_set
      Src: /src/frr/lib/if_rmap.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - dnode
    - type
    - del
    argTypes:
    - struct if_rmap_ctx*
    - struct lyd_node*
    - enum if_rmap_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 256
    functionDepth: 6
    functionLinenumber: 256
    functionLinenumberEnd: 268
    functionName: if_rmap_yang_modify_cb
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 2
    functionsReached:
    - yang_dnode_get_string
    - if_rmap_unset
    - if_rmap_set
    linkageType: ''
    returnType: void
    signature: "void if_rmap_yang_modify_cb(struct if_rmap_ctx *ctx,\n\t\t\t    const
      struct lyd_node *dnode,\n\t\t\t    enum if_rmap_type type, bool del)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/lib/if_rmap.c:273,1
    - Dst: if_rmap_unset
      Src: /src/frr/lib/if_rmap.c:274,1
    - Dst: if_rmap_unset
      Src: /src/frr/lib/if_rmap.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - dnode
    argTypes:
    - struct if_rmap_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 270
    functionDepth: 6
    functionLinenumber: 270
    functionLinenumberEnd: 276
    functionName: if_rmap_yang_destroy_cb
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 2
    functionsReached:
    - yang_dnode_get_string
    - if_rmap_unset
    linkageType: ''
    returnType: void
    signature: "void if_rmap_yang_destroy_cb(struct if_rmap_ctx *ctx,\n\t\t\t     const
      struct lyd_node *dnode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/lib/if_rmap.c:280,1
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:281,1
    - Dst: XFREE
      Src: /src/frr/lib/if_rmap.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct if_rmap_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 283
    functionName: if_rmap_ctx_delete
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void if_rmap_ctx_delete(struct if_rmap_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/lib/if_rmap.c:290,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/if_rmap.c:292,1
    - Dst: hash_create_size
      Src: /src/frr/lib/if_rmap.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 297
    functionName: if_rmap_ctx_create
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 1
    functionsReached:
    - hash_create_size
    - XSTRDUP
    - XCALLOC
    linkageType: ''
    returnType: struct if_rmap_ctx
    signature: struct if_rmap_ctx *if_rmap_ctx_create(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/lib/if_rmap.c:302,1
    - Dst: install_element
      Src: /src/frr/lib/if_rmap.c:303,1
    - Dst: install_element
      Src: /src/frr/lib/if_rmap.c:305,1
    - Dst: install_element
      Src: /src/frr/lib/if_rmap.c:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 308
    functionName: if_rmap_init
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void if_rmap_init(int node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 312
    functionName: if_rmap_terminate
    functionSourceFile: /src/frr/lib/if_rmap.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void if_rmap_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: ferr_ok
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_ok()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: ferr_code_bug
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_code_bug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: ferr_cfg_invalid
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_cfg_invalid(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: ferr_cfg_reality
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_cfg_reality(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: ferr_cfg_resource
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_cfg_resource(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: ferr_system
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_system(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: ferr_library
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_library(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: ferr_system_errno
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_system_errno(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - path
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: ferr_system_path_errno
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ferr_system_path_errno(path, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - func
    - ','
    - action
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 226
    functionName: CMD_FERR_DO
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMD_FERR_DO(func, action, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - func
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 229
    functionName: CMD_FERR_RETURN
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMD_FERR_RETURN(func, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - func
    - ','
    - label
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 231
    functionName: CMD_FERR_GOTO
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMD_FERR_GOTO(func, label, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ferr_config_invalid
      Src: /src/frr/lib/ferr.h:237,1
    - Dst: ioctl
      Src: /src/frr/lib/ferr.h:240,1
    - Dst: ferr_system_errno
      Src: /src/frr/lib/ferr.h:241,1
    - Dst: ferr_ok
      Src: /src/frr/lib/ferr.h:243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - obj
    - bar
    argTypes:
    - struct object*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 244
    functionName: foo_bar_set
    functionSourceFile: /src/frr/lib/ferr.h
    functionUses: 0
    functionsReached:
    - ferr_system_errno
    - ferr_config_invalid
    - ferr_ok
    - ioctl
    linkageType: ''
    returnType: ferr_r
    signature: ferr_r foo_bar_set(struct object *obj, int bar)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_explicit_zero
      Src: /src/frr/lib/admin_group.c:36,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:37,1
    - Dst: admin_group_zero
      Src: /src/frr/lib/admin_group.c:41,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:42,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:46,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:53,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:55,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:59,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 4
    argNames:
    - out
    - sz
    - indent
    - ag
    argTypes:
    - char*
    - size_t
    - int
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 66
    functionName: admin_group_string
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 3
    functionsReached:
    - admin_group_explicit_zero
    - admin_group_zero
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *admin_group_string(char *out, size_t sz, int indent,\n\t\t\t
      const struct admin_group *ag)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:77,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:81,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:88,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:88,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:89,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:94,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:94,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:95,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:100,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:100,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:101,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - out
    - indent
    - bitmap
    argTypes:
    - char*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 108
    functionName: admin_group_standard_print
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 1
    functionsReached:
    - strlen
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *admin_group_standard_print(char *out, int indent, uint32_t bitmap)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:118,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:119,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:123,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:125,1
    - Dst: admin_group_get
      Src: /src/frr/lib/admin_group.c:126,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:129,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:129,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:130,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:135,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:135,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:136,1
    - Dst: snprintf
      Src: /src/frr/lib/admin_group.c:141,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:141,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:142,1
    - Dst: strlen
      Src: /src/frr/lib/admin_group.c:145,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - out
    - indent
    - ag
    argTypes:
    - char*
    - int
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 153
    functionName: admin_group_print
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 1
    functionsReached:
    - admin_group_size
    - strlen
    - admin_group_get
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *admin_group_print(char *out, int indent, const struct admin_group
      *ag)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/lib/admin_group.c:167,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ag1
    - ag2
    argTypes:
    - struct admin_group*
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 173
    functionName: admin_group_cmp
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 3
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool admin_group_cmp(const struct admin_group *ag1,\n\t\t     const
      struct admin_group *ag2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/admin_group.c:177,1
    - Dst: bf_is_inited
      Src: /src/frr/lib/admin_group.c:177,1
    - Dst: bf_is_inited
      Src: /src/frr/lib/admin_group.c:178,1
    - Dst: bf_free
      Src: /src/frr/lib/admin_group.c:179,1
    - Dst: bf_copy
      Src: /src/frr/lib/admin_group.c:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - struct admin_group*
    - struct admin_group*
    assertStmts:
    - condition: (bf_is_inited(src->bitmap))
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/frr/lib/admin_group.c
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: admin_group_copy
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 7
    functionsReached:
    - bf_free
    - bf_copy
    - assert
    - bf_is_inited
    linkageType: ''
    returnType: void
    signature: void admin_group_copy(struct admin_group *dst, const struct admin_group
      *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/admin_group.c:185,1
    - Dst: bf_is_inited
      Src: /src/frr/lib/admin_group.c:185,1
    - Dst: bf_init
      Src: /src/frr/lib/admin_group.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts:
    - condition: (!bf_is_inited(ag->bitmap))
      pos:
        line_end: 184
        line_start: 184
        source_file: /src/frr/lib/admin_group.c
    constantsTouched: []
    func_position:
      end: 187
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 187
    functionName: admin_group_init
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 8
    functionsReached:
    - bf_init
    - assert
    - bf_is_inited
    linkageType: ''
    returnType: void
    signature: void admin_group_init(struct admin_group *ag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/admin_group.c:191,1
    - Dst: bf_is_inited
      Src: /src/frr/lib/admin_group.c:191,1
    - Dst: bf_free
      Src: /src/frr/lib/admin_group.c:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts:
    - condition: (bf_is_inited(ag->bitmap))
      pos:
        line_end: 190
        line_start: 190
        source_file: /src/frr/lib/admin_group.c
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: admin_group_term
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 8
    functionsReached:
    - bf_free
    - assert
    - bf_is_inited
    linkageType: ''
    returnType: void
    signature: void admin_group_term(struct admin_group *ag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/admin_group.c:197,1
    - Dst: bf_is_inited
      Src: /src/frr/lib/admin_group.c:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ag
    - oct_offset
    argTypes:
    - struct admin_group*
    - size_t
    assertStmts:
    - condition: (bf_is_inited(ag->bitmap))
      pos:
        line_end: 196
        line_start: 196
        source_file: /src/frr/lib/admin_group.c
    constantsTouched: []
    func_position:
      end: 201
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 201
    functionName: admin_group_get_offset
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 5
    functionsReached:
    - assert
    - bf_is_inited
    linkageType: ''
    returnType: word_t
    signature: word_t admin_group_get_offset(const struct admin_group *ag, size_t
      oct_offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XREALLOC
      Src: /src/frr/lib/admin_group.c:211,1
    - Dst: memset
      Src: /src/frr/lib/admin_group.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ag
    - idx
    argTypes:
    - struct admin_group*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 213
    functionName: admin_group_extend
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 0
    functionsReached:
    - XREALLOC
    - memset
    linkageType: ''
    returnType: void
    signature: void admin_group_extend(struct admin_group *ag, size_t idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bf_index
      Src: /src/frr/lib/admin_group.c:217,1
    - Dst: admin_group_extend
      Src: /src/frr/lib/admin_group.c:220,1
    - Dst: bf_offset
      Src: /src/frr/lib/admin_group.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ag
    - pos
    argTypes:
    - struct admin_group*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 226
    functionName: admin_group_set
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 4
    functionsReached:
    - bf_index
    - bf_offset
    - admin_group_extend
    linkageType: ''
    returnType: void
    signature: void admin_group_set(struct admin_group *ag, size_t pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bf_index
      Src: /src/frr/lib/admin_group.c:230,1
    - Dst: bf_release_index
      Src: /src/frr/lib/admin_group.c:232,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ag
    - pos
    argTypes:
    - struct admin_group*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: admin_group_unset
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 4
    functionsReached:
    - bf_release_index
    - bf_index
    - admin_group_size
    linkageType: ''
    returnType: void
    signature: void admin_group_unset(struct admin_group *ag, size_t pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:238,1
    - Dst: bf_index
      Src: /src/frr/lib/admin_group.c:245,1
    - Dst: admin_group_get_offset
      Src: /src/frr/lib/admin_group.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ag
    - pos
    argTypes:
    - struct admin_group*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 252
    functionName: admin_group_get
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 3
    functionsReached:
    - admin_group_size
    - bf_index
    - admin_group_get_offset
    linkageType: ''
    returnType: int
    signature: int admin_group_get(const struct admin_group *ag, size_t pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_allow_explicit_zero
      Src: /src/frr/lib/admin_group.c:259,1
    - Dst: admin_group_extend
      Src: /src/frr/lib/admin_group.c:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ag
    - bitmap
    - oct_offset
    argTypes:
    - struct admin_group*
    - uint32_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 270
    functionName: admin_group_bulk_set
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 4
    functionsReached:
    - admin_group_allow_explicit_zero
    - admin_group_extend
    linkageType: ''
    returnType: void
    signature: "void admin_group_bulk_set(struct admin_group *ag, uint32_t bitmap,\n\t\t\t
      \ size_t oct_offset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 280
    functionName: admin_group_size
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t admin_group_size(const struct admin_group *ag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: admin_group_nb_words
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t admin_group_nb_words(const struct admin_group *ag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 292
    functionName: admin_group_clear
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void admin_group_clear(struct admin_group *ag)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 300
    functionName: admin_group_zero
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool admin_group_zero(const struct admin_group *ag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 306
    functionName: admin_group_explicit_zero
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool admin_group_explicit_zero(const struct admin_group *ag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_zero
      Src: /src/frr/lib/admin_group.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 308
    functionDepth: 1
    functionLinenumber: 308
    functionLinenumberEnd: 312
    functionName: admin_group_allow_explicit_zero
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 5
    functionsReached:
    - admin_group_zero
    linkageType: ''
    returnType: void
    signature: void admin_group_allow_explicit_zero(struct admin_group *ag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: admin_group_zero
      Src: /src/frr/lib/admin_group.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ag
    argTypes:
    - struct admin_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 318
    functionName: admin_group_disallow_explicit_zero
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 1
    functionsReached:
    - admin_group_zero
    linkageType: ''
    returnType: void
    signature: void admin_group_disallow_explicit_zero(struct admin_group *ag)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/admin_group.c:334,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:337,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:339,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:345,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - fad_ag
    - link_std_ag
    - link_ext_ag
    argTypes:
    - struct admin_group*
    - uint32_t*
    - struct admin_group*
    assertStmts:
    - condition: (fad_ag)
      pos:
        line_end: 333
        line_start: 333
        source_file: /src/frr/lib/admin_group.c
    constantsTouched: []
    func_position:
      end: 360
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 360
    functionName: admin_group_match_any
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 0
    functionsReached:
    - admin_group_size
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool admin_group_match_any(const struct admin_group *fad_ag,\n\t\t\t
      \  const uint32_t *link_std_ag,\n\t\t\t   const struct admin_group *link_ext_ag)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/admin_group.c:370,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:373,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:375,1
    - Dst: admin_group_size
      Src: /src/frr/lib/admin_group.c:381,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 3
    argNames:
    - fad_ag
    - link_std_ag
    - link_ext_ag
    argTypes:
    - struct admin_group*
    - uint32_t*
    - struct admin_group*
    assertStmts:
    - condition: (fad_ag)
      pos:
        line_end: 369
        line_start: 369
        source_file: /src/frr/lib/admin_group.c
    constantsTouched: []
    func_position:
      end: 402
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 402
    functionName: admin_group_match_all
    functionSourceFile: /src/frr/lib/admin_group.c
    functionUses: 0
    functionsReached:
    - admin_group_size
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool admin_group_match_all(const struct admin_group *fad_ag,\n\t\t\t
      \  const uint32_t *link_std_ag,\n\t\t\t   const struct admin_group *link_ext_ag)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: MGMT_MSG_IS_MARKER
    functionSourceFile: /src/frr/lib/mgmt_msg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_MSG_IS_MARKER(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - version
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: MGMT_MSG_MARKER
    functionSourceFile: /src/frr/lib/mgmt_msg.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_MSG_MARKER(version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: MGMT_MSG_MARKER_VERSION
    functionSourceFile: /src/frr/lib/mgmt_msg.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MGMT_MSG_MARKER_VERSION(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - nargs
    - ','
    - provider
    - ','
    - name
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: frrtrace
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtrace(nargs, provider, name, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: frrtrace_enabled
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtrace_enabled(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: frrtracelog
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtracelog(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - nargs
    - ','
    - provider
    - ','
    - name
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: frrtrace
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtrace(nargs, provider, name, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: frrtrace_enabled
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtrace_enabled(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - nargs
    - ','
    - provider
    - ','
    - name
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: frrtrace
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtrace(nargs, provider, name, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: frrtrace_enabled
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtrace_enabled(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: frrtracelog
    functionSourceFile: /src/frr/lib/trace.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: frrtracelog(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: newNodeOfLevel
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newNodeOfLevel(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: newStatsOfLevel
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: newStatsOfLevel(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sl
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: CHECKLAST
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECKLAST(sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/lib/skiplist.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 106
    functionName: randomLevel
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    linkageType: ''
    returnType: int
    signature: int randomLevel(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: default_cmp
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int default_cmp(const void *key1, const void *key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct skiplist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: skiplist_count
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int skiplist_count(struct skiplist *l)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/lib/skiplist.c:128,1
    - Dst: newNodeOfLevel
      Src: /src/frr/lib/skiplist.c:133,1
    - Dst: newStatsOfLevel
      Src: /src/frr/lib/skiplist.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 146
    functionName: skiplist_new
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 25
    functionsReached:
    - XCALLOC::XCALLOC
    - newNodeOfLevel
    - newStatsOfLevel
    linkageType: ''
    returnType: struct skiplist
    signature: "struct skiplist *skiplist_new(int flags,\n\t\t\t      int (*cmp)(const
      void *key1, const void *key2),\n\t\t\t      void (*del)(void *val))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/skiplist.c:158,1
    - Dst: XFREE
      Src: /src/frr/lib/skiplist.c:162,1
    - Dst: XFREE
      Src: /src/frr/lib/skiplist.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct skiplist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 164
    functionName: skiplist_free
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 22
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void skiplist_free(struct skiplist *l)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:174,1
    - Dst: flog_err
      Src: /src/frr/lib/skiplist.c:179,1
    - Dst: randomLevel
      Src: /src/frr/lib/skiplist.c:198,1
    - Dst: assert
      Src: /src/frr/lib/skiplist.c:199,1
    - Dst: newNodeOfLevel
      Src: /src/frr/lib/skiplist.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:214,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:233,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 3
    argNames:
    - l
    - key
    - value
    argTypes:
    - struct skiplist*
    - void*
    - void*
    assertStmts:
    - condition: (k >= 0)
      pos:
        line_end: 198
        line_start: 198
        source_file: /src/frr/lib/skiplist.c
    constantsTouched: []
    func_position:
      end: 236
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 236
    functionName: skiplist_insert
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 24
    functionsReached:
    - newNodeOfLevel
    - flog_err
    - zlog_debug
    - CHECKLAST
    - randomLevel
    - assert
    linkageType: ''
    returnType: int
    signature: "int skiplist_insert(register struct skiplist *l, register void *key,\n\t\t
      \   register void *value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:245,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:298,1
    - Dst: XFREE
      Src: /src/frr/lib/skiplist.c:303,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:307,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:313,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 46
    argCount: 3
    argNames:
    - l
    - key
    - value
    argTypes:
    - struct skiplist*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 315
    functionName: skiplist_delete
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 14
    functionsReached:
    - zlog_debug
    - CHECKLAST
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int skiplist_delete(register struct skiplist *l, register void *key,\n\t\t
      \   register void *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - l
    - key
    - valuePointer
    - cursor
    argTypes:
    - struct skiplist*
    - void*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 350
    functionName: skiplist_first_value
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int skiplist_first_value(register struct skiplist *l, /* in */\n\t\t\t
      register const void *key,    /* in */\n\t\t\t void **valuePointer,\t      /*
      out */\n\t\t\t void **cursor)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: skiplist_first_value
      Src: /src/frr/lib/skiplist.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - l
    - key
    - valuePointer
    argTypes:
    - struct skiplist*
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: skiplist_search
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 22
    functionsReached:
    - skiplist_first_value
    linkageType: ''
    returnType: int
    signature: "int skiplist_search(register struct skiplist *l, register void *key,\n\t\t
      \   void **valuePointer)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:376,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:408,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:430,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 4
    argNames:
    - l
    - key
    - valuePointer
    - cursor
    argTypes:
    - struct skiplist*
    - void*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 432
    functionName: skiplist_next_value
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 3
    functionsReached:
    - CHECKLAST
    linkageType: ''
    returnType: int
    signature: "int skiplist_next_value(register struct skiplist *l, /* in */\n\t\t\tregister
      const void *key,\t  /* in */\n\t\t\tvoid **valuePointer,\t /* in/out */\n\t\t\tvoid
      **cursor)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:439,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - l
    - keyPointer
    - valuePointer
    argTypes:
    - struct skiplist*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 453
    functionName: skiplist_first
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 9
    functionsReached:
    - CHECKLAST
    linkageType: ''
    returnType: int
    signature: "int skiplist_first(register struct skiplist *l, void **keyPointer,\n\t\t
      \  void **valuePointer)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - l
    - keyPointer
    - valuePointer
    argTypes:
    - struct skiplist*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 467
    functionName: skiplist_last
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 1
    functionsReached:
    - CHECKLAST
    linkageType: ''
    returnType: int
    signature: "int skiplist_last(register struct skiplist *l, void **keyPointer,\n\t\t
      \ void **valuePointer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct skiplist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 478
    functionName: skiplist_empty
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 6
    functionsReached:
    - CHECKLAST
    linkageType: ''
    returnType: int
    signature: int skiplist_empty(register struct skiplist *l)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:495,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:514,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - l
    - keyPointer
    - valuePointer
    - cursor
    argTypes:
    - struct skiplist*
    - void**
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 517
    functionName: skiplist_next
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 24
    functionsReached:
    - CHECKLAST
    linkageType: ''
    returnType: int
    signature: "int skiplist_next(register struct skiplist *l, /* in */\n\t\t  void
      **keyPointer,\t   /* out */\n\t\t  void **valuePointer,\t /* out */\n\t\t  void
      **cursor)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:525,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:557,1
    - Dst: XFREE
      Src: /src/frr/lib/skiplist.c:564,1
    - Dst: CHECKLAST
      Src: /src/frr/lib/skiplist.c:566,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct skiplist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 571
    functionName: skiplist_delete_first
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 12
    functionsReached:
    - zlog_debug
    - CHECKLAST
    - XFREE
    linkageType: ''
    returnType: int
    signature: int skiplist_delete_first(register struct skiplist *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/skiplist.c:580,1
    - Dst: vty_out
      Src: /src/frr/lib/skiplist.c:582,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - l
    argTypes:
    - struct vty*
    - struct skiplist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 583
    functionName: skiplist_debug
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void skiplist_debug(struct vty *vty, struct skiplist *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 593
    functionName: scramble
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *scramble(int i)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:603,1
    - Dst: skiplist_new
      Src: /src/frr/lib/skiplist.c:605,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:607,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:613,1
    - Dst: scramble
      Src: /src/frr/lib/skiplist.c:616,1
    - Dst: skiplist_insert
      Src: /src/frr/lib/skiplist.c:617,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:618,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:621,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:626,1
    - Dst: skiplist_search
      Src: /src/frr/lib/skiplist.c:627,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:628,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:631,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:638,1
    - Dst: skiplist_delete
      Src: /src/frr/lib/skiplist.c:639,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:640,1
    - Dst: scramble
      Src: /src/frr/lib/skiplist.c:641,1
    - Dst: skiplist_insert
      Src: /src/frr/lib/skiplist.c:642,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:643,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:649,1
    - Dst: skiplist_delete_first
      Src: /src/frr/lib/skiplist.c:650,1
    - Dst: zlog_debug
      Src: /src/frr/lib/skiplist.c:651,1
    - Dst: skiplist_free
      Src: /src/frr/lib/skiplist.c:655,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 596
    functionDepth: 3
    functionLinenumber: 596
    functionLinenumberEnd: 656
    functionName: skiplist_test
    functionSourceFile: /src/frr/lib/skiplist.c
    functionUses: 0
    functionsReached:
    - skiplist_search
    - skiplist_delete
    - scramble
    - zlog_debug
    - skiplist_new
    - skiplist_free
    - skiplist_delete_first
    - skiplist_insert
    linkageType: ''
    returnType: void
    signature: void skiplist_test(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: THREAD_OPERATION_TRACEPOINT_INSTANCE
    functionSourceFile: /src/frr/lib/libfrr_trace.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: THREAD_OPERATION_TRACEPOINT_INSTANCE(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dnode
    - ','
    - xpath_fmt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 27
    functionName: YANG_DNODE_XPATH_GET_VALUE
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dnode
    - ','
    - xpath_fmt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 37
    functionName: YANG_DNODE_XPATH_GET_CANON
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dnode
    - ','
    - xpath
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: YANG_DNODE_GET_ASSERT
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: YANG_DNODE_GET_ASSERT(dnode, xpath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:55,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:58,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/yang_wrappers.c:59,1
    - Dst: YANG_DNODE_GET_ASSERT
      Src: /src/frr/lib/yang_wrappers.c:61,1
    - Dst: lyd_get_value
      Src: /src/frr/lib/yang_wrappers.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - dnode
    - xpath_fmt
    - ap
    argTypes:
    - struct lyd_node*
    - char*
    - va_list
    assertStmts:
    - condition: (__dleaf)
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: yang_dnode_xpath_get_canon
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - lyd_get_value
    - yang_dnode_get
    - YANG_DNODE_GET_ASSERT
    - assert
    linkageType: ''
    returnType: char
    signature: "char *\nyang_dnode_xpath_get_canon(const struct lyd_node *dnode, const
      char *xpath_fmt,\n\t\t\t   va_list ap)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:73,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:76,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/yang_wrappers.c:77,1
    - Dst: YANG_DNODE_GET_ASSERT
      Src: /src/frr/lib/yang_wrappers.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - dnode
    - xpath_fmt
    - ap
    argTypes:
    - struct lyd_node*
    - char*
    - va_list
    assertStmts:
    - condition: (__dleaf)
      pos:
        line_end: 72
        line_start: 72
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 85
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 85
    functionName: yang_dnode_xpath_get_value
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - YANG_DNODE_GET_ASSERT
    - vsnprintf
    - yang_dnode_get
    - assert
    linkageType: ''
    returnType: struct lyd_value
    signature: "struct lyd_value *\nyang_dnode_xpath_get_value(const struct lyd_node
      *dnode, const char *xpath_fmt,\n\t\t\t   va_list ap)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_find_snode
      Src: /src/frr/lib/yang_wrappers.c:92,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_wrappers.c:94,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/yang_wrappers.c:96,1
    - Dst: abort
      Src: /src/frr/lib/yang_wrappers.c:97,1
    - Dst: yang_snode_get_default
      Src: /src/frr/lib/yang_wrappers.c:100,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - xpath
    argTypes:
    - char*
    assertStmts:
    - condition: (value)
      pos:
        line_end: 100
        line_start: 100
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 104
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 104
    functionName: yang_get_default_value
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_snode_get_default
    - abort
    - flog_err
    - zlog_backtrace
    - yang_find_snode
    - assert
    linkageType: ''
    returnType: char
    signature: char *yang_get_default_value(const char *xpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: yang_str2bool
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: bool
    signature: bool yang_str2bool(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: yang_data_new_bool
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 4
    functionsReached:
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_bool(const char *xpath, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:123,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_BOOL)
      pos:
        line_end: 123
        line_start: 123
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: yang_dnode_get_bool
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 96
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: bool
    signature: "bool yang_dnode_get_bool(const struct lyd_node *dnode, const char
      *xpath_fmt,\n\t\t\t ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:134,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:135,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:136,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:138,1
    - Dst: yang_str2bool
      Src: /src/frr/lib/yang_wrappers.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: yang_get_default_bool
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 2
    functionsReached:
    - vsnprintf
    - yang_str2bool
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: bool
    signature: bool yang_get_default_bool(const char *xpath_fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/frr/lib/yang_wrappers.c:149,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_wrappers.c:150,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/yang_wrappers.c:153,1
    - Dst: abort
      Src: /src/frr/lib/yang_wrappers.c:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 145
    functionDepth: 3
    functionLinenumber: 145
    functionLinenumberEnd: 158
    functionName: yang_str2dec64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - abort
    - flog_err
    - zlog_backtrace
    - sscanf
    linkageType: ''
    returnType: double
    signature: double yang_str2dec64(const char *xpath, const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/yang_wrappers.c:164,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 166
    functionName: yang_data_new_dec64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - snprintf
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_dec64(const char *xpath, double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:178,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:180,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dectype->fraction_digits < sizeof(denom) / sizeof(*denom))
      pos:
        line_end: 180
        line_start: 180
        source_file: /src/frr/lib/yang_wrappers.c
    - condition: (dectype->basetype == LY_TYPE_DEC64)
      pos:
        line_end: 179
        line_start: 179
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 183
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 183
    functionName: yang_dnode_get_dec64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: double
    signature: "double yang_dnode_get_dec64(const struct lyd_node *dnode, const char
      *xpath_fmt,\n\t\t\t    ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:191,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:192,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:193,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:195,1
    - Dst: yang_str2dec64
      Src: /src/frr/lib/yang_wrappers.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: yang_get_default_dec64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - yang_str2dec64
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: double
    signature: double yang_get_default_dec64(const char *xpath_fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_find_snode
      Src: /src/frr/lib/yang_wrappers.c:209,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_wrappers.c:211,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/yang_wrappers.c:213,1
    - Dst: abort
      Src: /src/frr/lib/yang_wrappers.c:214,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:217,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:220,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/frr/lib/yang_wrappers.c:222,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:224,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:225,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang_wrappers.c:225,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_wrappers.c:230,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/yang_wrappers.c:233,1
    - Dst: abort
      Src: /src/frr/lib/yang_wrappers.c:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - char*
    assertStmts:
    - condition: (snode->nodetype == LYS_LEAF)
      pos:
        line_end: 216
        line_start: 216
        source_file: /src/frr/lib/yang_wrappers.c
    - condition: (type->basetype == LY_TYPE_ENUM)
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/frr/lib/yang_wrappers.c
    - condition: (CHECK_FLAG(enums[i].flags, LYS_SET_VALUE))
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 235
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 235
    functionName: yang_str2enum
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - strmatch
    - LY_ARRAY_COUNT
    - CHECK_FLAG
    - abort
    - flog_err
    - zlog_backtrace
    - yang_find_snode
    - assert
    linkageType: ''
    returnType: int
    signature: int yang_str2enum(const char *xpath, const char *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_find_snode
      Src: /src/frr/lib/yang_wrappers.c:244,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_wrappers.c:246,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/yang_wrappers.c:248,1
    - Dst: abort
      Src: /src/frr/lib/yang_wrappers.c:249,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:252,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:255,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/frr/lib/yang_wrappers.c:257,1
    - Dst: CHECK_FLAG
      Src: /src/frr/lib/yang_wrappers.c:259,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:261,1
    - Dst: flog_err
      Src: /src/frr/lib/yang_wrappers.c:264,1
    - Dst: zlog_backtrace
      Src: /src/frr/lib/yang_wrappers.c:267,1
    - Dst: abort
      Src: /src/frr/lib/yang_wrappers.c:268,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - int
    assertStmts:
    - condition: (snode->nodetype == LYS_LEAF)
      pos:
        line_end: 251
        line_start: 251
        source_file: /src/frr/lib/yang_wrappers.c
    - condition: (type->basetype == LY_TYPE_ENUM)
      pos:
        line_end: 254
        line_start: 254
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 269
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 269
    functionName: yang_data_new_enum
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 6
    functionsReached:
    - LY_ARRAY_COUNT
    - CHECK_FLAG
    - abort
    - flog_err
    - zlog_backtrace
    - yang_data_new
    - yang_find_snode
    - assert
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_enum(const char *xpath, int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:276,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:277,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->enum_item->flags & LYS_SET_VALUE)
      pos:
        line_end: 277
        line_start: 277
        source_file: /src/frr/lib/yang_wrappers.c
    - condition: (dvalue->realtype->basetype == LY_TYPE_ENUM)
      pos:
        line_end: 276
        line_start: 276
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 280
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 280
    functionName: yang_dnode_get_enum
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 102
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: int
    signature: "int yang_dnode_get_enum(const struct lyd_node *dnode, const char *xpath_fmt,\n\t\t\t...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:288,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:289,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:290,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:292,1
    - Dst: yang_str2enum
      Src: /src/frr/lib/yang_wrappers.c:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 282
    functionDepth: 4
    functionLinenumber: 282
    functionLinenumberEnd: 294
    functionName: yang_get_default_enum
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 6
    functionsReached:
    - vsnprintf
    - va_start
    - va_end
    - yang_str2enum
    - yang_get_default_value
    linkageType: ''
    returnType: int
    signature: int yang_get_default_enum(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/frr/lib/yang_wrappers.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: yang_str2int8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int8_t
    signature: int8_t yang_str2int8(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/yang_wrappers.c:308,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - int8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: yang_data_new_int8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - snprintf
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_int8(const char *xpath, int8_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:316,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_INT8)
      pos:
        line_end: 316
        line_start: 316
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 319
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 319
    functionName: yang_dnode_get_int8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: int8_t
    signature: "int8_t yang_dnode_get_int8(const struct lyd_node *dnode, const char
      *xpath_fmt,\n\t\t\t   ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:327,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:328,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:329,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:331,1
    - Dst: yang_str2int8
      Src: /src/frr/lib/yang_wrappers.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 321
    functionDepth: 4
    functionLinenumber: 321
    functionLinenumberEnd: 333
    functionName: yang_get_default_int8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - va_start
    - va_end
    - yang_get_default_value
    - yang_str2int8
    linkageType: ''
    returnType: int8_t
    signature: int8_t yang_get_default_int8(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/frr/lib/yang_wrappers.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: yang_str2int16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int16_t
    signature: int16_t yang_str2int16(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/yang_wrappers.c:347,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - int16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 349
    functionName: yang_data_new_int16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - snprintf
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_int16(const char *xpath, int16_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:355,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_INT16)
      pos:
        line_end: 355
        line_start: 355
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 358
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 358
    functionName: yang_dnode_get_int16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: int16_t
    signature: "int16_t yang_dnode_get_int16(const struct lyd_node *dnode,\n\t\t\t
      \    const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:366,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:367,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:368,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:370,1
    - Dst: yang_str2int16
      Src: /src/frr/lib/yang_wrappers.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 360
    functionDepth: 4
    functionLinenumber: 360
    functionLinenumberEnd: 372
    functionName: yang_get_default_int16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - va_start
    - yang_str2int16
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: int16_t
    signature: int16_t yang_get_default_int16(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/frr/lib/yang_wrappers.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 380
    functionName: yang_str2int32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int32_t
    signature: int32_t yang_str2int32(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/yang_wrappers.c:386,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 388
    functionName: yang_data_new_int32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 4
    functionsReached:
    - yang_data_new
    - snprintf
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_int32(const char *xpath, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:394,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_INT32)
      pos:
        line_end: 394
        line_start: 394
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: yang_dnode_get_int32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: int32_t
    signature: "int32_t yang_dnode_get_int32(const struct lyd_node *dnode,\n\t\t\t
      \    const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:405,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:406,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:407,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:409,1
    - Dst: yang_str2int32
      Src: /src/frr/lib/yang_wrappers.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 399
    functionDepth: 4
    functionLinenumber: 399
    functionLinenumberEnd: 411
    functionName: yang_get_default_int32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_str2int32
    - vsnprintf
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: int32_t
    signature: int32_t yang_get_default_int32(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoll
      Src: /src/frr/lib/yang_wrappers.c:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 419
    functionName: yang_str2int64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strtoll
    linkageType: ''
    returnType: int64_t
    signature: int64_t yang_str2int64(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/yang_wrappers.c:425,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 427
    functionName: yang_data_new_int64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - snprintfrr
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_int64(const char *xpath, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:433,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_INT64)
      pos:
        line_end: 433
        line_start: 433
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 436
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 436
    functionName: yang_dnode_get_int64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: int64_t
    signature: "int64_t yang_dnode_get_int64(const struct lyd_node *dnode,\n\t\t\t
      \    const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:444,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:445,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:446,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:448,1
    - Dst: yang_str2int64
      Src: /src/frr/lib/yang_wrappers.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 438
    functionDepth: 4
    functionLinenumber: 438
    functionLinenumberEnd: 450
    functionName: yang_get_default_int64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - va_start
    - va_end
    - yang_str2int64
    - yang_get_default_value
    linkageType: ''
    returnType: int64_t
    signature: int64_t yang_get_default_int64(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/lib/yang_wrappers.c:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: yang_str2uint8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t yang_str2uint8(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/yang_wrappers.c:464,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 466
    functionName: yang_data_new_uint8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 13
    functionsReached:
    - yang_data_new
    - snprintf
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_uint8(const char *xpath, uint8_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:472,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_UINT8)
      pos:
        line_end: 472
        line_start: 472
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 475
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 475
    functionName: yang_dnode_get_uint8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 34
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t yang_dnode_get_uint8(const struct lyd_node *dnode,\n\t\t\t
      \    const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:483,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:484,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:485,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:487,1
    - Dst: yang_str2uint8
      Src: /src/frr/lib/yang_wrappers.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 477
    functionDepth: 4
    functionLinenumber: 477
    functionLinenumberEnd: 489
    functionName: yang_get_default_uint8
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 2
    functionsReached:
    - vsnprintf
    - va_start
    - va_end
    - yang_str2uint8
    - yang_get_default_value
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t yang_get_default_uint8(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/lib/yang_wrappers.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 497
    functionName: yang_str2uint16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t yang_str2uint16(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/yang_wrappers.c:503,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 499
    functionDepth: 2
    functionLinenumber: 499
    functionLinenumberEnd: 505
    functionName: yang_data_new_uint16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 7
    functionsReached:
    - yang_data_new
    - snprintf
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_uint16(const char *xpath, uint16_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:511,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_UINT16)
      pos:
        line_end: 511
        line_start: 511
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 514
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 514
    functionName: yang_dnode_get_uint16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 25
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t yang_dnode_get_uint16(const struct lyd_node *dnode,\n\t\t\t
      \      const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:522,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:523,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:524,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:526,1
    - Dst: yang_str2uint16
      Src: /src/frr/lib/yang_wrappers.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 516
    functionDepth: 4
    functionLinenumber: 516
    functionLinenumberEnd: 528
    functionName: yang_get_default_uint16
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 2
    functionsReached:
    - yang_str2uint16
    - vsnprintf
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t yang_get_default_uint16(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/lib/yang_wrappers.c:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: yang_str2uint32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 3
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t yang_str2uint32(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/yang_wrappers.c:542,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 2
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: yang_data_new_uint32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 26
    functionsReached:
    - yang_data_new
    - snprintf
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_uint32(const char *xpath, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:550,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_UINT32)
      pos:
        line_end: 550
        line_start: 550
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 553
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 553
    functionName: yang_dnode_get_uint32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 63
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t yang_dnode_get_uint32(const struct lyd_node *dnode,\n\t\t\t
      \      const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:561,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:562,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:563,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:565,1
    - Dst: yang_str2uint32
      Src: /src/frr/lib/yang_wrappers.c:566,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 555
    functionDepth: 4
    functionLinenumber: 555
    functionLinenumberEnd: 567
    functionName: yang_get_default_uint32
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 2
    functionsReached:
    - yang_str2uint32
    - vsnprintf
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t yang_get_default_uint32(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoull
      Src: /src/frr/lib/yang_wrappers.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 575
    functionName: yang_str2uint64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strtoull
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t yang_str2uint64(const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/lib/yang_wrappers.c:581,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 583
    functionName: yang_data_new_uint64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_data_new
    - snprintfrr
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_uint64(const char *xpath, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_VALUE
      Src: /src/frr/lib/yang_wrappers.c:589,1
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dvalue->realtype->basetype == LY_TYPE_UINT64)
      pos:
        line_end: 589
        line_start: 589
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 592
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 592
    functionName: yang_dnode_get_uint64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - assert
    - YANG_DNODE_XPATH_GET_VALUE
    linkageType: ''
    returnType: uint64_t
    signature: "uint64_t yang_dnode_get_uint64(const struct lyd_node *dnode,\n\t\t\t
      \      const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:600,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:601,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:602,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:604,1
    - Dst: yang_str2uint64
      Src: /src/frr/lib/yang_wrappers.c:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 594
    functionDepth: 4
    functionLinenumber: 594
    functionLinenumberEnd: 606
    functionName: yang_get_default_uint64
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_str2uint64
    - vsnprintf
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t yang_get_default_uint64(const char *xpath_fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - xpath
    - value
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 613
    functionDepth: 2
    functionLinenumber: 613
    functionLinenumberEnd: 616
    functionName: yang_data_new_string
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 23
    functionsReached:
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_string(const char *xpath, const char
      *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 622
    functionName: yang_dnode_get_string
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 274
    functionsReached:
    - YANG_DNODE_XPATH_GET_CANON
    linkageType: ''
    returnType: char
    signature: "char *yang_dnode_get_string(const struct lyd_node *dnode,\n\t\t\t\t
      \ const char *xpath_fmt, ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:628,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_wrappers.c:629,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/yang_wrappers.c:632,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_wrappers.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - buf
    - size
    - dnode
    - xpath_fmt
    argTypes:
    - char*
    - size_t
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 624
    functionDepth: 2
    functionLinenumber: 624
    functionLinenumberEnd: 637
    functionName: yang_dnode_get_string_buf
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - YANG_DNODE_XPATH_GET_CANON
    - flog_warn
    - yang_dnode_get_path
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_string_buf(char *buf, size_t size,\n\t\t\t       const
      struct lyd_node *dnode,\n\t\t\t       const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:644,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:645,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:646,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - xpath_fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 639
    functionDepth: 4
    functionLinenumber: 639
    functionLinenumberEnd: 649
    functionName: yang_get_default_string
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - va_start
    - vsnprintf
    - yang_get_default_value
    - va_end
    linkageType: ''
    returnType: char
    signature: char *yang_get_default_string(const char *xpath_fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:658,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:659,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:660,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:662,1
    - Dst: strlcpy
      Src: /src/frr/lib/yang_wrappers.c:663,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_wrappers.c:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - size
    - xpath_fmt
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 651
    functionDepth: 4
    functionLinenumber: 651
    functionLinenumberEnd: 667
    functionName: yang_get_default_string_buf
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - vsnprintf
    - strlcpy
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: void
    signature: "void yang_get_default_string_buf(char *buf, size_t size, const char
      *xpath_fmt,\n\t\t\t\t ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/lib/yang_wrappers.c:681,1
    - Dst: base64_init_encodestate
      Src: /src/frr/lib/yang_wrappers.c:682,1
    - Dst: base64_encode_block
      Src: /src/frr/lib/yang_wrappers.c:683,1
    - Dst: base64_encode_blockend
      Src: /src/frr/lib/yang_wrappers.c:685,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:688,1
    - Dst: free
      Src: /src/frr/lib/yang_wrappers.c:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - xpath
    - value
    - len
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 672
    functionDepth: 2
    functionLinenumber: 672
    functionLinenumberEnd: 691
    functionName: yang_data_new_binary
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 8
    functionsReached:
    - base64_init_encodestate
    - base64_encode_block
    - malloc
    - free
    - base64_encode_blockend
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_new_binary(const char *xpath, const char
      *value,\n\t\t\t\t       size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:705,1
    - Dst: strlen
      Src: /src/frr/lib/yang_wrappers.c:706,1
    - Dst: malloc
      Src: /src/frr/lib/yang_wrappers.c:708,1
    - Dst: base64_init_decodestate
      Src: /src/frr/lib/yang_wrappers.c:709,1
    - Dst: base64_decode_block
      Src: /src/frr/lib/yang_wrappers.c:710,1
    - Dst: memcpy
      Src: /src/frr/lib/yang_wrappers.c:713,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/lib/yang_wrappers.c:717,1
    - Dst: flog_warn
      Src: /src/frr/lib/yang_wrappers.c:718,1
    - Dst: free
      Src: /src/frr/lib/yang_wrappers.c:722,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - buf
    - size
    - dnode
    - xpath_fmt
    argTypes:
    - char*
    - size_t
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 693
    functionDepth: 2
    functionLinenumber: 693
    functionLinenumberEnd: 724
    functionName: yang_dnode_get_binary_buf
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - strlen
    - flog_warn
    - malloc
    - free
    - YANG_DNODE_XPATH_GET_CANON
    - base64_decode_block
    - yang_dnode_get_path
    - base64_init_decodestate
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: "size_t yang_dnode_get_binary_buf(char *buf, size_t size,\n\t\t\t\t
      const struct lyd_node *dnode,\n\t\t\t\t const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - xpath
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 730
    functionDepth: 2
    functionLinenumber: 730
    functionLinenumberEnd: 733
    functionName: yang_data_new_empty
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 9
    functionsReached:
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_empty(const char *xpath)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/yang_wrappers.c:742,1
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:744,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:745,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:746,1
    - Dst: yang_dnode_get
      Src: /src/frr/lib/yang_wrappers.c:748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - dnode
    - xpath_fmt
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (dnode)
      pos:
        line_end: 741
        line_start: 741
        source_file: /src/frr/lib/yang_wrappers.c
    constantsTouched: []
    func_position:
      end: 756
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 756
    functionName: yang_dnode_get_empty
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - yang_dnode_get
    - va_start
    - va_end
    - assert
    linkageType: ''
    returnType: bool
    signature: "bool yang_dnode_get_empty(const struct lyd_node *dnode, const char
      *xpath_fmt,\n\t\t\t  ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix
      Src: /src/frr/lib/yang_wrappers.c:763,1
    - Dst: apply_mask
      Src: /src/frr/lib/yang_wrappers.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - prefix
    argTypes:
    - char*
    - union prefixptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 761
    functionDepth: 4
    functionLinenumber: 761
    functionLinenumberEnd: 765
    functionName: yang_str2prefix
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - apply_mask
    - str2prefix
    linkageType: ''
    returnType: void
    signature: void yang_str2prefix(const char *value, union prefixptr prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/lib/yang_wrappers.c:772,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - prefix
    argTypes:
    - char*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 767
    functionDepth: 4
    functionLinenumber: 767
    functionLinenumberEnd: 774
    functionName: yang_data_new_prefix
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_new_prefix(const char *xpath,\n\t\t\t\t
      \      union prefixconstptr prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/yang_wrappers.c:784,1
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:787,1
    - Dst: str2prefix
      Src: /src/frr/lib/yang_wrappers.c:788,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - prefix
    - dnode
    - xpath_fmt
    argTypes:
    - struct prefix*
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 776
    functionDepth: 3
    functionLinenumber: 776
    functionLinenumberEnd: 789
    functionName: yang_dnode_get_prefix
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 16
    functionsReached:
    - str2prefix
    - YANG_DNODE_XPATH_GET_CANON
    - memset
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_prefix(struct prefix *prefix, const struct lyd_node
      *dnode,\n\t\t\t   const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:797,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:798,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:799,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:801,1
    - Dst: yang_str2prefix
      Src: /src/frr/lib/yang_wrappers.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - xpath_fmt
    argTypes:
    - union prefixptr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 791
    functionDepth: 5
    functionLinenumber: 791
    functionLinenumberEnd: 803
    functionName: yang_get_default_prefix
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - yang_str2prefix
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: void
    signature: void yang_get_default_prefix(union prefixptr var, const char *xpath_fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/lib/yang_wrappers.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - addr
    argTypes:
    - char*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 808
    functionDepth: 0
    functionLinenumber: 808
    functionLinenumberEnd: 811
    functionName: yang_str2ipv4
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 2
    functionsReached:
    - inet_pton
    linkageType: ''
    returnType: void
    signature: void yang_str2ipv4(const char *value, struct in_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/yang_wrappers.c:818,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - addr
    argTypes:
    - char*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 813
    functionDepth: 2
    functionLinenumber: 813
    functionLinenumberEnd: 820
    functionName: yang_data_new_ipv4
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 4
    functionsReached:
    - inet_ntop
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_new_ipv4(const char *xpath,\n\t\t\t\t
      \    const struct in_addr *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:826,1
    - Dst: inet_pton
      Src: /src/frr/lib/yang_wrappers.c:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - addr
    - dnode
    - xpath_fmt
    argTypes:
    - struct in_addr*
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 828
    functionName: yang_dnode_get_ipv4
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 12
    functionsReached:
    - inet_pton
    - YANG_DNODE_XPATH_GET_CANON
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_ipv4(struct in_addr *addr, const struct lyd_node
      *dnode,\n\t\t\t const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:836,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:837,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:838,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:840,1
    - Dst: yang_str2ipv4
      Src: /src/frr/lib/yang_wrappers.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - xpath_fmt
    argTypes:
    - struct in_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 830
    functionDepth: 4
    functionLinenumber: 830
    functionLinenumberEnd: 842
    functionName: yang_get_default_ipv4
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - yang_str2ipv4
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: void
    signature: void yang_get_default_ipv4(struct in_addr *var, const char *xpath_fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv4
      Src: /src/frr/lib/yang_wrappers.c:851,1
    - Dst: apply_mask_ipv4
      Src: /src/frr/lib/yang_wrappers.c:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - prefix
    argTypes:
    - char*
    - union prefixptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 847
    functionDepth: 3
    functionLinenumber: 847
    functionLinenumberEnd: 853
    functionName: yang_str2ipv4p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv4
    - str2prefix_ipv4
    linkageType: ''
    returnType: void
    signature: void yang_str2ipv4p(const char *value, union prefixptr prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/lib/yang_wrappers.c:860,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - prefix
    argTypes:
    - char*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 855
    functionDepth: 4
    functionLinenumber: 855
    functionLinenumberEnd: 862
    functionName: yang_data_new_ipv4p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_new_ipv4p(const char *xpath,\n\t\t\t\t
      \     union prefixconstptr prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:869,1
    - Dst: str2prefix_ipv4
      Src: /src/frr/lib/yang_wrappers.c:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prefix
    - dnode
    - xpath_fmt
    argTypes:
    - union prefixptr
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 871
    functionName: yang_dnode_get_ipv4p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 9
    functionsReached:
    - str2prefix_ipv4
    - YANG_DNODE_XPATH_GET_CANON
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_ipv4p(union prefixptr prefix, const struct lyd_node
      *dnode,\n\t\t\t  const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:879,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:880,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:881,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:883,1
    - Dst: yang_str2ipv4p
      Src: /src/frr/lib/yang_wrappers.c:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - xpath_fmt
    argTypes:
    - union prefixptr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 873
    functionDepth: 4
    functionLinenumber: 873
    functionLinenumberEnd: 885
    functionName: yang_get_default_ipv4p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - va_start
    - va_end
    - yang_str2ipv4p
    - yang_get_default_value
    linkageType: ''
    returnType: void
    signature: void yang_get_default_ipv4p(union prefixptr var, const char *xpath_fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/lib/yang_wrappers.c:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - addr
    argTypes:
    - char*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 893
    functionName: yang_str2ipv6
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 2
    functionsReached:
    - inet_pton
    linkageType: ''
    returnType: void
    signature: void yang_str2ipv6(const char *value, struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/lib/yang_wrappers.c:900,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - addr
    argTypes:
    - char*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 895
    functionDepth: 2
    functionLinenumber: 895
    functionLinenumberEnd: 902
    functionName: yang_data_new_ipv6
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_new_ipv6(const char *xpath,\n\t\t\t\t
      \    const struct in6_addr *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:908,1
    - Dst: inet_pton
      Src: /src/frr/lib/yang_wrappers.c:909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - addr
    - dnode
    - xpath_fmt
    argTypes:
    - struct in6_addr*
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 910
    functionName: yang_dnode_get_ipv6
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 3
    functionsReached:
    - inet_pton
    - YANG_DNODE_XPATH_GET_CANON
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_ipv6(struct in6_addr *addr, const struct lyd_node
      *dnode,\n\t\t\t const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:918,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:919,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:920,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:922,1
    - Dst: yang_str2ipv6
      Src: /src/frr/lib/yang_wrappers.c:923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - xpath_fmt
    argTypes:
    - struct in6_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 912
    functionDepth: 4
    functionLinenumber: 912
    functionLinenumberEnd: 924
    functionName: yang_get_default_ipv6
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - va_start
    - va_end
    - yang_str2ipv6
    - yang_get_default_value
    linkageType: ''
    returnType: void
    signature: void yang_get_default_ipv6(struct in6_addr *var, const char *xpath_fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv6
      Src: /src/frr/lib/yang_wrappers.c:933,1
    - Dst: apply_mask_ipv6
      Src: /src/frr/lib/yang_wrappers.c:934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - prefix
    argTypes:
    - char*
    - union prefixptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 935
    functionName: yang_str2ipv6p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - apply_mask_ipv6
    - str2prefix_ipv6
    linkageType: ''
    returnType: void
    signature: void yang_str2ipv6p(const char *value, union prefixptr prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/lib/yang_wrappers.c:942,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - prefix
    argTypes:
    - char*
    - union prefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 937
    functionDepth: 4
    functionLinenumber: 937
    functionLinenumberEnd: 944
    functionName: yang_data_new_ipv6p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_new_ipv6p(const char *xpath,\n\t\t\t\t
      \     union prefixconstptr prefix)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:952,1
    - Dst: str2prefix_ipv6
      Src: /src/frr/lib/yang_wrappers.c:953,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prefix
    - dnode
    - xpath_fmt
    argTypes:
    - union prefixptr
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 946
    functionDepth: 1
    functionLinenumber: 946
    functionLinenumberEnd: 954
    functionName: yang_dnode_get_ipv6p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 8
    functionsReached:
    - str2prefix_ipv6
    - YANG_DNODE_XPATH_GET_CANON
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_ipv6p(union prefixptr prefix, const struct lyd_node
      *dnode,\n\t\t\t  const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:962,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:963,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:964,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:966,1
    - Dst: yang_str2ipv6p
      Src: /src/frr/lib/yang_wrappers.c:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - xpath_fmt
    argTypes:
    - union prefixptr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 956
    functionDepth: 4
    functionLinenumber: 956
    functionLinenumberEnd: 968
    functionName: yang_get_default_ipv6p
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_str2ipv6p
    - vsnprintf
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: void
    signature: void yang_get_default_ipv6p(union prefixptr var, const char *xpath_fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str2ipaddr
      Src: /src/frr/lib/yang_wrappers.c:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - ip
    argTypes:
    - char*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 976
    functionName: yang_str2ip
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - str2ipaddr
    linkageType: ''
    returnType: void
    signature: void yang_str2ip(const char *value, struct ipaddr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/lib/yang_wrappers.c:980,1
    - Dst: ipaddr2str
      Src: /src/frr/lib/yang_wrappers.c:983,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - addr
    argTypes:
    - char*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 978
    functionDepth: 2
    functionLinenumber: 978
    functionLinenumberEnd: 985
    functionName: yang_data_new_ip
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - ipaddr2str
    - yang_data_new
    - IS_IPADDR_V4
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_ip(const char *xpath, const struct
      ipaddr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YANG_DNODE_XPATH_GET_CANON
      Src: /src/frr/lib/yang_wrappers.c:991,1
    - Dst: str2ipaddr
      Src: /src/frr/lib/yang_wrappers.c:992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - addr
    - dnode
    - xpath_fmt
    argTypes:
    - struct ipaddr*
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 993
    functionName: yang_dnode_get_ip
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 3
    functionsReached:
    - str2ipaddr
    - YANG_DNODE_XPATH_GET_CANON
    linkageType: ''
    returnType: void
    signature: "void yang_dnode_get_ip(struct ipaddr *addr, const struct lyd_node
      *dnode,\n\t\t       const char *xpath_fmt, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/yang_wrappers.c:1001,1
    - Dst: vsnprintf
      Src: /src/frr/lib/yang_wrappers.c:1002,1
    - Dst: va_end
      Src: /src/frr/lib/yang_wrappers.c:1003,1
    - Dst: yang_get_default_value
      Src: /src/frr/lib/yang_wrappers.c:1005,1
    - Dst: yang_str2ip
      Src: /src/frr/lib/yang_wrappers.c:1006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - var
    - xpath_fmt
    argTypes:
    - struct ipaddr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 995
    functionDepth: 4
    functionLinenumber: 995
    functionLinenumberEnd: 1007
    functionName: yang_get_default_ip
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 0
    functionsReached:
    - yang_str2ip
    - vsnprintf
    - va_start
    - va_end
    - yang_get_default_value
    linkageType: ''
    returnType: void
    signature: void yang_get_default_ip(struct ipaddr *var, const char *xpath_fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_mac2str
      Src: /src/frr/lib/yang_wrappers.c:1014,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:1015,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xpath
    - mac
    argTypes:
    - char*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 1009
    functionDepth: 2
    functionLinenumber: 1009
    functionLinenumberEnd: 1016
    functionName: yang_data_new_mac
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 2
    functionsReached:
    - prefix_mac2str
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *yang_data_new_mac(const char *xpath,\n\t\t\t\t    const
      struct ethaddr *mac)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_str2mac
      Src: /src/frr/lib/yang_wrappers.c:1020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - mac
    argTypes:
    - char*
    - struct ethaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1018
    functionDepth: 1
    functionLinenumber: 1018
    functionLinenumberEnd: 1021
    functionName: yang_str2mac
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - prefix_str2mac
    linkageType: ''
    returnType: void
    signature: void yang_str2mac(const char *value, struct ethaddr *mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: monotime_to_realtime
      Src: /src/frr/lib/yang_wrappers.c:1033,1
    - Dst: gmtime_r
      Src: /src/frr/lib/yang_wrappers.c:1035,1
    - Dst: strftime
      Src: /src/frr/lib/yang_wrappers.c:1038,1
    - Dst: strlen
      Src: /src/frr/lib/yang_wrappers.c:1039,1
    - Dst: snprintfrr
      Src: /src/frr/lib/yang_wrappers.c:1043,1
    - Dst: yang_data_new
      Src: /src/frr/lib/yang_wrappers.c:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - xpath
    - time
    argTypes:
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1023
    functionDepth: 4
    functionLinenumber: 1023
    functionLinenumberEnd: 1047
    functionName: yang_data_new_date_and_time
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached:
    - strlen
    - gmtime_r
    - snprintfrr
    - monotime_to_realtime
    - strftime
    - yang_data_new
    linkageType: ''
    returnType: struct yang_data
    signature: struct yang_data *yang_data_new_date_and_time(const char *xpath, time_t
      time)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - ntype
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1049
    functionDepth: 0
    functionLinenumber: 1049
    functionLinenumberEnd: 1074
    functionName: yang_nexthop_type2str
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *yang_nexthop_type2str(uint32_t ntype)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 24
    argCount: 2
    argNames:
    - afi
    - safi
    argTypes:
    - afi_t
    - safi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1077
    functionDepth: 0
    functionLinenumber: 1077
    functionLinenumberEnd: 1103
    functionName: yang_afi_safi_value2identity
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *yang_afi_safi_value2identity(afi_t afi, safi_t safi)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1107,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1110,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1113,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1116,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1119,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1122,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1125,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1128,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1131,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1134,1
    - Dst: strmatch
      Src: /src/frr/lib/yang_wrappers.c:1137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 3
    argNames:
    - key
    - afi
    - safi
    argTypes:
    - char*
    - afi_t*
    - safi_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1144
    functionName: yang_afi_safi_identity2value
    functionSourceFile: /src/frr/lib/yang_wrappers.c
    functionUses: 4
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: void
    signature: void yang_afi_safi_identity2value(const char *key, afi_t *afi, safi_t
      *safi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snmp_timeout
      Src: /src/frr/lib/agentx.c:38,1
    - Dst: run_alarms
      Src: /src/frr/lib/agentx.c:39,1
    - Dst: netsnmp_check_outstanding_agent_requests
      Src: /src/frr/lib/agentx.c:40,1
    - Dst: agentx_events_update
      Src: /src/frr/lib/agentx.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: agentx_timeout
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 0
    functionsReached:
    - snmp_timeout
    - netsnmp_check_outstanding_agent_requests
    - agentx_events_update
    - run_alarms
    linkageType: ''
    returnType: void
    signature: void agentx_timeout(struct event *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/lib/agentx.c:49,1
    - Dst: listgetdata
      Src: /src/frr/lib/agentx.c:50,1
    - Dst: XFREE
      Src: /src/frr/lib/agentx.c:51,1
    - Dst: list_delete_node
      Src: /src/frr/lib/agentx.c:52,1
    - Dst: fcntl
      Src: /src/frr/lib/agentx.c:55,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/agentx.c:55,1
    - Dst: flog_err
      Src: /src/frr/lib/agentx.c:57,1
    - Dst: strerror
      Src: /src/frr/lib/agentx.c:58,1
    - Dst: fcntl
      Src: /src/frr/lib/agentx.c:65,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/agentx.c:65,1
    - Dst: flog_err
      Src: /src/frr/lib/agentx.c:68,1
    - Dst: strerror
      Src: /src/frr/lib/agentx.c:69,1
    - Dst: FD_ZERO
      Src: /src/frr/lib/agentx.c:71,1
    - Dst: FD_SET
      Src: /src/frr/lib/agentx.c:72,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/agentx.c:72,1
    - Dst: snmp_read
      Src: /src/frr/lib/agentx.c:73,1
    - Dst: fcntl
      Src: /src/frr/lib/agentx.c:77,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/agentx.c:77,1
    - Dst: flog_err
      Src: /src/frr/lib/agentx.c:80,1
    - Dst: strerror
      Src: /src/frr/lib/agentx.c:83,1
    - Dst: netsnmp_check_outstanding_agent_requests
      Src: /src/frr/lib/agentx.c:86,1
    - Dst: agentx_events_update
      Src: /src/frr/lib/agentx.c:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 88
    functionName: agentx_read
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - FD_ZERO
    - agentx_events_update
    - EVENT_FD
    - strerror
    - snmp_read
    - netsnmp_check_outstanding_agent_requests
    - list_delete_node
    - flog_err
    - XFREE
    - EVENT_ARG
    - listgetdata
    - fcntl
    linkageType: ''
    returnType: void
    signature: void agentx_read(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/lib/agentx.c:100,1
    - Dst: FD_ZERO
      Src: /src/frr/lib/agentx.c:102,1
    - Dst: snmp_select_info
      Src: /src/frr/lib/agentx.c:103,1
    - Dst: event_add_timer_tv
      Src: /src/frr/lib/agentx.c:106,1
    - Dst: listhead
      Src: /src/frr/lib/agentx.c:110,1
    - Dst: listgetdata
      Src: /src/frr/lib/agentx.c:111,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/agentx.c:112,1
    - Dst: listnextnode
      Src: /src/frr/lib/agentx.c:120,1
    - Dst: FD_ISSET
      Src: /src/frr/lib/agentx.c:121,1
    - Dst: event_cancel
      Src: /src/frr/lib/agentx.c:122,1
    - Dst: XFREE
      Src: /src/frr/lib/agentx.c:123,1
    - Dst: list_delete_node
      Src: /src/frr/lib/agentx.c:124,1
    - Dst: listgetdata
      Src: /src/frr/lib/agentx.c:127,1
    - Dst: EVENT_FD
      Src: /src/frr/lib/agentx.c:128,1
    - Dst: FD_ISSET
      Src: /src/frr/lib/agentx.c:131,1
    - Dst: XCALLOC
      Src: /src/frr/lib/agentx.c:134,1
    - Dst: listnode_add_before
      Src: /src/frr/lib/agentx.c:135,1
    - Dst: event_add_read
      Src: /src/frr/lib/agentx.c:136,1
    - Dst: listnextnode
      Src: /src/frr/lib/agentx.c:143,1
    - Dst: listgetdata
      Src: /src/frr/lib/agentx.c:144,1
    - Dst: event_cancel
      Src: /src/frr/lib/agentx.c:145,1
    - Dst: XFREE
      Src: /src/frr/lib/agentx.c:146,1
    - Dst: list_delete_node
      Src: /src/frr/lib/agentx.c:147,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 90
    functionDepth: 5
    functionLinenumber: 90
    functionLinenumberEnd: 150
    functionName: agentx_events_update
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 2
    functionsReached:
    - listnextnode
    - FD_ZERO
    - event_add_timer_tv
    - FD_ISSET
    - snmp_select_info
    - EVENT_FD
    - XCALLOC
    - event_cancel
    - event_add_read
    - listhead
    - list_delete_node
    - XFREE
    - listgetdata
    - listnode_add_before
    linkageType: ''
    returnType: void
    signature: void agentx_events_update(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/lib/agentx.c:166,1
    - Dst: strlen
      Src: /src/frr/lib/agentx.c:168,1
    - Dst: flog_err
      Src: /src/frr/lib/agentx.c:171,1
    - Dst: flog_err
      Src: /src/frr/lib/agentx.c:174,1
    - Dst: flog_err
      Src: /src/frr/lib/agentx.c:177,1
    - Dst: flog_err
      Src: /src/frr/lib/agentx.c:180,1
    - Dst: flog_warn
      Src: /src/frr/lib/agentx.c:183,1
    - Dst: zlog_notice
      Src: /src/frr/lib/agentx.c:187,1
    - Dst: zlog_info
      Src: /src/frr/lib/agentx.c:190,1
    - Dst: zlog_debug
      Src: /src/frr/lib/agentx.c:193,1
    - Dst: XFREE
      Src: /src/frr/lib/agentx.c:196,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 4
    argNames:
    - major
    - minor
    - serverarg
    - clientarg
    argTypes:
    - int
    - int
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 198
    functionName: agentx_log_callback
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 0
    functionsReached:
    - strlen
    - zlog_info
    - flog_warn
    - flog_err
    - zlog_debug
    - XFREE
    - zlog_notice
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int agentx_log_callback(int major, int minor, void *serverarg,\n\t\t\t
      \      void *clientarg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/agentx.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 205
    functionName: config_write_agentx
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_agentx(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 240
    functionName: smux_disable
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int smux_disable(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: smux_enabled
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool smux_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_enable_subagent
      Src: /src/frr/lib/agentx.c:251,1
    - Dst: snmp_disable_log
      Src: /src/frr/lib/agentx.c:252,1
    - Dst: snmp_enable_calllog
      Src: /src/frr/lib/agentx.c:253,1
    - Dst: snmp_register_callback
      Src: /src/frr/lib/agentx.c:254,1
    - Dst: init_agent
      Src: /src/frr/lib/agentx.c:256,1
    - Dst: install_node
      Src: /src/frr/lib/agentx.c:258,1
    - Dst: install_element
      Src: /src/frr/lib/agentx.c:259,1
    - Dst: install_element
      Src: /src/frr/lib/agentx.c:260,1
    - Dst: hook_register
      Src: /src/frr/lib/agentx.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 247
    functionDepth: 5
    functionLinenumber: 247
    functionLinenumberEnd: 263
    functionName: smux_init
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 6
    functionsReached:
    - snmp_disable_log
    - snmp_enable_calllog
    - install_node
    - hook_register
    - netsnmp_enable_subagent
    - snmp_register_callback
    - install_element
    - init_agent
    linkageType: ''
    returnType: void
    signature: void smux_init(struct event_loop *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: init_snmp
      Src: /src/frr/lib/agentx.c:268,1
    - Dst: list_new
      Src: /src/frr/lib/agentx.c:269,1
    - Dst: agentx_events_update
      Src: /src/frr/lib/agentx.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 6
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: smux_agentx_enable
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 0
    functionsReached:
    - list_new
    - agentx_events_update
    - init_snmp
    linkageType: ''
    returnType: void
    signature: void smux_agentx_enable(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: register_mib
      Src: /src/frr/lib/agentx.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - descr
    - var
    - width
    - num
    - name
    - namelen
    argTypes:
    - char*
    - struct variable*
    - size_t
    - int
    - oid[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 279
    functionName: smux_register_mib
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 0
    functionsReached:
    - register_mib
    linkageType: ''
    returnType: void
    signature: "void smux_register_mib(const char *descr, struct variable *var, size_t
      width,\n\t\t       int num, oid name[], size_t namelen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:290,1
    - Dst: smux_trap_multi_index
      Src: /src/frr/lib/agentx.c:293,1
    - Dst: array_size
      Src: /src/frr/lib/agentx.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 11
    argNames:
    - vp
    - vp_len
    - ename
    - enamelen
    - name
    - namelen
    - iname
    - inamelen
    - trapobj
    - trapobjlen
    - sptrap
    argTypes:
    - struct variable*
    - size_t
    - oid*
    - size_t
    - oid*
    - size_t
    - oid*
    - size_t
    - struct trap_object*
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 296
    functionName: smux_trap
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 6
    functionsReached:
    - smux_trap_multi_index
    - oid_copy
    - array_size
    linkageType: ''
    returnType: void
    signature: "void smux_trap(struct variable *vp, size_t vp_len, const oid *ename,\n\t
      \      size_t enamelen, const oid *name, size_t namelen,\n\t       const oid
      *iname, size_t inamelen,\n\t       const struct trap_object *trapobj, size_t
      trapobjlen,\n\t       uint8_t sptrap)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:315,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/lib/agentx.c:318,1
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:344,1
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:345,1
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:346,1
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:353,1
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:354,1
    - Dst: oid_compare
      Src: /src/frr/lib/agentx.c:362,1
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:368,1
    - Dst: oid_copy
      Src: /src/frr/lib/agentx.c:369,1
    - Dst: struct variable::findVar
      Src: /src/frr/lib/agentx.c:377,1
    - Dst: snmp_varlist_add_variable
      Src: /src/frr/lib/agentx.c:381,1
    - Dst: send_v2trap
      Src: /src/frr/lib/agentx.c:389,1
    - Dst: snmp_free_varbind
      Src: /src/frr/lib/agentx.c:390,1
    - Dst: agentx_events_update
      Src: /src/frr/lib/agentx.c:391,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 11
    argNames:
    - vp
    - vp_len
    - ename
    - enamelen
    - name
    - namelen
    - iname
    - index_len
    - trapobj
    - trapobjlen
    - sptrap
    argTypes:
    - struct variable*
    - size_t
    - oid*
    - size_t
    - oid*
    - size_t
    - struct index_oid*
    - size_t
    - struct trap_object*
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 298
    functionDepth: 6
    functionLinenumber: 298
    functionLinenumberEnd: 393
    functionName: smux_trap_multi_index
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 2
    functionsReached:
    - oid_copy
    - snmp_varlist_add_variable
    - agentx_events_update
    - oid_compare
    - snmp_free_varbind
    - struct variable::findVar
    - send_v2trap
    linkageType: ''
    returnType: int
    signature: "int smux_trap_multi_index(struct variable *vp, size_t vp_len, const
      oid *ename,\n\t\t\t  size_t enamelen, const oid *name, size_t namelen,\n\t\t\t
      \ struct index_oid *iname, size_t index_len,\n\t\t\t  const struct trap_object
      *trapobj, size_t trapobjlen,\n\t\t\t  uint8_t sptrap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: agentx_events_update
      Src: /src/frr/lib/agentx.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 6
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: smux_events_update
    functionSourceFile: /src/frr/lib/agentx.c
    functionUses: 6
    functionsReached:
    - agentx_events_update
    linkageType: ''
    returnType: void
    signature: void smux_events_update(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pp
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 17
    functionName: be32dec
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t be32dec(const void *pp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pp
    - x
    argTypes:
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 29
    functionName: be32enc
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void be32enc(void *pp, uint32_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be32enc
      Src: /src/frr/lib/sha256.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - dst
    - src
    - len
    argTypes:
    - unsigned char*
    - uint32_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: be32enc_vect
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached:
    - be32enc
    linkageType: ''
    returnType: void
    signature: void be32enc_vect(unsigned char *dst, const uint32_t *src, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be32dec
      Src: /src/frr/lib/sha256.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - dst
    - src
    - len
    argTypes:
    - uint32_t*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 54
    functionName: be32dec_vect
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached:
    - be32dec
    linkageType: ''
    returnType: void
    signature: void be32dec_vect(uint32_t *dst, const unsigned char *src, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: Ch
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Ch(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: Maj
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Maj(x, y, z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: SHR
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHR(x, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: ROTR
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTR(x, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: S0
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S0(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: S1
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S1(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: s0
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: s0(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: s1
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: s1(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - ','
    - k
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: RND
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RND(a, b, c, d, e, f, g, h, k)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - S
    - ','
    - W
    - ','
    - i
    - ','
    - k
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: RNDr
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RNDr(S, W, i, k)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be32dec_vect
      Src: /src/frr/lib/sha256.c:91,1
    - Dst: s1
      Src: /src/frr/lib/sha256.c:93,1
    - Dst: s0
      Src: /src/frr/lib/sha256.c:93,1
    - Dst: memcpy
      Src: /src/frr/lib/sha256.c:96,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:99,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:100,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:101,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:102,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:103,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:104,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:105,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:106,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:107,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:108,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:109,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:110,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:111,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:112,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:113,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:114,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:115,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:116,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:117,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:118,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:119,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:120,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:121,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:122,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:123,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:124,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:125,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:126,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:127,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:128,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:129,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:130,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:131,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:132,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:133,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:134,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:135,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:136,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:137,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:138,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:139,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:140,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:141,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:142,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:143,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:144,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:145,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:146,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:147,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:148,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:149,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:150,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:151,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:152,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:153,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:154,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:155,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:156,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:157,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:158,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:159,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:160,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:161,1
    - Dst: RNDr
      Src: /src/frr/lib/sha256.c:162,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:169,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:170,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:171,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 75
    argCount: 2
    argNames:
    - state
    - block
    argTypes:
    - uint32_t*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 173
    functionName: SHA256_Transform
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached:
    - s0
    - s1
    - explicit_bzero
    - RNDr
    - be32dec_vect
    - memcpy
    linkageType: ''
    returnType: void
    signature: void SHA256_Transform(uint32_t *state, const unsigned char block[64])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be32enc_vect
      Src: /src/frr/lib/sha256.c:190,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/sha256.c:195,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/sha256.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - SHA256_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 199
    functionName: SHA256_Pad
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached:
    - SHA256_Update
    - be32enc_vect
    linkageType: ''
    returnType: void
    signature: void SHA256_Pad(SHA256_CTX *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - SHA256_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 217
    functionName: SHA256_Init
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SHA256_Init(SHA256_CTX *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/sha256.c:240,1
    - Dst: memcpy
      Src: /src/frr/lib/sha256.c:245,1
    - Dst: SHA256_Transform
      Src: /src/frr/lib/sha256.c:246,1
    - Dst: SHA256_Transform
      Src: /src/frr/lib/sha256.c:252,1
    - Dst: memcpy
      Src: /src/frr/lib/sha256.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - in
    - len
    argTypes:
    - SHA256_CTX*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 259
    functionName: SHA256_Update
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 5
    functionsReached:
    - SHA256_Transform
    - memcpy
    linkageType: ''
    returnType: void
    signature: void SHA256_Update(SHA256_CTX *ctx, const void *in, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA256_Pad
      Src: /src/frr/lib/sha256.c:269,1
    - Dst: be32enc_vect
      Src: /src/frr/lib/sha256.c:272,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - digest
    - ctx
    argTypes:
    - unsigned char[]
    - SHA256_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 276
    functionName: SHA256_Final
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 3
    functionsReached:
    - SHA256_Pad
    - be32enc_vect
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SHA256_Init
      Src: /src/frr/lib/sha256.c:288,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/sha256.c:289,1
    - Dst: SHA256_Final
      Src: /src/frr/lib/sha256.c:290,1
    - Dst: SHA256_Init
      Src: /src/frr/lib/sha256.c:296,1
    - Dst: memset
      Src: /src/frr/lib/sha256.c:297,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/sha256.c:300,1
    - Dst: SHA256_Init
      Src: /src/frr/lib/sha256.c:303,1
    - Dst: memset
      Src: /src/frr/lib/sha256.c:304,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/sha256.c:307,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - _K
    - Klen
    argTypes:
    - HMAC_SHA256_CTX*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 311
    functionName: HMAC__SHA256_Init
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 1
    functionsReached:
    - SHA256_Init
    - memset
    - explicit_bzero
    - SHA256_Update
    - SHA256_Final
    linkageType: ''
    returnType: void
    signature: void HMAC__SHA256_Init(HMAC_SHA256_CTX *ctx, const void *_K, size_t
      Klen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA256_Update
      Src: /src/frr/lib/sha256.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - in
    - len
    argTypes:
    - HMAC_SHA256_CTX*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 314
    functionDepth: 4
    functionLinenumber: 314
    functionLinenumberEnd: 319
    functionName: HMAC__SHA256_Update
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 1
    functionsReached:
    - SHA256_Update
    linkageType: ''
    returnType: void
    signature: void HMAC__SHA256_Update(HMAC_SHA256_CTX *ctx, const void *in, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA256_Final
      Src: /src/frr/lib/sha256.c:327,1
    - Dst: SHA256_Update
      Src: /src/frr/lib/sha256.c:330,1
    - Dst: SHA256_Final
      Src: /src/frr/lib/sha256.c:333,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - digest
    - ctx
    argTypes:
    - unsigned char[]
    - HMAC_SHA256_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 322
    functionDepth: 4
    functionLinenumber: 322
    functionLinenumberEnd: 337
    functionName: HMAC__SHA256_Final
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 1
    functionsReached:
    - SHA256_Update
    - SHA256_Final
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void HMAC__SHA256_Final(unsigned char digest[32], HMAC_SHA256_CTX *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HMAC__SHA256_Init
      Src: /src/frr/lib/sha256.c:357,1
    - Dst: HMAC__SHA256_Update
      Src: /src/frr/lib/sha256.c:358,1
    - Dst: be32enc
      Src: /src/frr/lib/sha256.c:363,1
    - Dst: memcpy
      Src: /src/frr/lib/sha256.c:366,1
    - Dst: HMAC__SHA256_Update
      Src: /src/frr/lib/sha256.c:367,1
    - Dst: HMAC__SHA256_Final
      Src: /src/frr/lib/sha256.c:368,1
    - Dst: memcpy
      Src: /src/frr/lib/sha256.c:371,1
    - Dst: HMAC__SHA256_Init
      Src: /src/frr/lib/sha256.c:375,1
    - Dst: HMAC__SHA256_Update
      Src: /src/frr/lib/sha256.c:376,1
    - Dst: HMAC__SHA256_Final
      Src: /src/frr/lib/sha256.c:377,1
    - Dst: memcpy
      Src: /src/frr/lib/sha256.c:388,1
    - Dst: explicit_bzero
      Src: /src/frr/lib/sha256.c:392,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 7
    argNames:
    - passwd
    - passwdlen
    - salt
    - saltlen
    - c
    - buf
    - dkLen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint64_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 344
    functionDepth: 5
    functionLinenumber: 344
    functionLinenumberEnd: 393
    functionName: PBKDF2_SHA256
    functionSourceFile: /src/frr/lib/sha256.c
    functionUses: 0
    functionsReached:
    - explicit_bzero
    - HMAC__SHA256_Update
    - HMAC__SHA256_Final
    - HMAC__SHA256_Init
    - be32enc
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, const
      uint8_t *salt,\n\t\t   size_t saltlen, uint64_t c, uint8_t *buf, size_t dkLen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: check_nodegraph
    functionSourceFile: /src/frr/lib/grammar_sandbox.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_nodegraph()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/lib/grammar_sandbox.c:285,1
    - Dst: XFREE
      Src: /src/frr/lib/grammar_sandbox.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 287
    functionName: cmd_permute_free
    functionSourceFile: /src/frr/lib/grammar_sandbox.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void cmd_permute_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/lib/grammar_sandbox.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: cmd_permute_cmp
    functionSourceFile: /src/frr/lib/grammar_sandbox.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cmd_permute_cmp(void *a, void *b)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/lib/grammar_sandbox.c:300,1
    - Dst: sprintf
      Src: /src/frr/lib/grammar_sandbox.c:304,1
    - Dst: strlen
      Src: /src/frr/lib/grammar_sandbox.c:305,1
    - Dst: XMALLOC
      Src: /src/frr/lib/grammar_sandbox.c:307,1
    - Dst: vector_slot
      Src: /src/frr/lib/grammar_sandbox.c:308,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/grammar_sandbox.c:309,1
    - Dst: strlen
      Src: /src/frr/lib/grammar_sandbox.c:310,1
    - Dst: listnode_add_sort
      Src: /src/frr/lib/grammar_sandbox.c:311,1
    - Dst: vector_active
      Src: /src/frr/lib/grammar_sandbox.c:318,1
    - Dst: vector_slot
      Src: /src/frr/lib/grammar_sandbox.c:319,1
    - Dst: cmd_graph_permute
      Src: /src/frr/lib/grammar_sandbox.c:328,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - out
    - stack
    - stackpos
    - cmd
    argTypes:
    - struct list*
    - struct graph_node**
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 330
    functionName: cmd_graph_permute
    functionSourceFile: /src/frr/lib/grammar_sandbox.c
    functionUses: 1
    functionsReached:
    - strlen
    - listnode_add_sort
    - vector_active
    - XMALLOC
    - vector_slot
    - sprintf
    - cmd_graph_permute
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void cmd_graph_permute(struct list *out, struct graph_node **stack,\n\t\t\t
      \     size_t stackpos, char *cmd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/lib/grammar_sandbox.c:337,1
    - Dst: vector_slot
      Src: /src/frr/lib/grammar_sandbox.c:340,1
    - Dst: cmd_graph_permute
      Src: /src/frr/lib/grammar_sandbox.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - graph
    argTypes:
    - struct graph*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 343
    functionName: cmd_graph_permutations
    functionSourceFile: /src/frr/lib/grammar_sandbox.c
    functionUses: 0
    functionsReached:
    - cmd_graph_permute
    - list_new
    - vector_slot
    linkageType: ''
    returnType: struct list
    signature: struct list *cmd_graph_permutations(struct graph *graph)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:54,1
    - Dst: MIN
      Src: /src/frr/lib/zlog_targets.c:57,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_targets.c:63,1
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_targets.c:67,1
    - Dst: zlog_msg_ts
      Src: /src/frr/lib/zlog_targets.c:77,1
    - Dst: strlen
      Src: /src/frr/lib/zlog_targets.c:90,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog_targets.c:101,1
    - Dst: array_size
      Src: /src/frr/lib/zlog_targets.c:114,1
    - Dst: writev
      Src: /src/frr/lib/zlog_targets.c:115,1
    - Dst: assert
      Src: /src/frr/lib/zlog_targets.c:122,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - zt
    - msgs
    - nmsgs
    argTypes:
    - struct zlog_target*
    - struct zlog_msg*[]
    - size_t
    assertStmts:
    - condition: (iovpos == 0)
      pos:
        line_end: 121
        line_start: 121
        source_file: /src/frr/lib/zlog_targets.c
    constantsTouched: []
    func_position:
      end: 123
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 123
    functionName: zlog_fd
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - MIN
    - strlen
    - zlog_msg_prio
    - zlog_msg_text
    - zlog_msg_ts
    - container_of
    - atomic_load_explicit
    - array_size
    - writev
    - assert
    linkageType: ''
    returnType: void
    signature: void zlog_fd(struct zlog_target *zt, struct zlog_msg *msgs[], size_t
      nmsgs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:128,1
    - Dst: strlen
      Src: /src/frr/lib/zlog_targets.c:133,1
    - Dst: atomic_load_explicit
      Src: /src/frr/lib/zlog_targets.c:144,1
    - Dst: writev
      Src: /src/frr/lib/zlog_targets.c:146,1
    - Dst: array_size
      Src: /src/frr/lib/zlog_targets.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - zt
    - text
    - len
    argTypes:
    - struct zlog_target*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 147
    functionName: zlog_fd_sigsafe
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - strlen
    - container_of
    - atomic_load_explicit
    - array_size
    - writev
    linkageType: ''
    returnType: void
    signature: "void zlog_fd_sigsafe(struct zlog_target *zt, const char *text,\n\t\t\t
      \   size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/lib/zlog_targets.c:155,1
    - Dst: pthread_mutex_init
      Src: /src/frr/lib/zlog_targets.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 159
    functionName: zlog_file_init
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_init
    - memset
    linkageType: ''
    returnType: void
    signature: void zlog_file_init(struct zlog_cfg_file *zcf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rcu_close
      Src: /src/frr/lib/zlog_targets.c:166,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_targets.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zlt
    argTypes:
    - struct zlt_fd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 4
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: zlog_file_target_free
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - rcu_close
    - rcu_free
    linkageType: ''
    returnType: void
    signature: void zlog_file_target_free(struct zlt_fd *zlt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:176,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:177,1
    - Dst: zlog_file_target_free
      Src: /src/frr/lib/zlog_targets.c:178,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_targets.c:180,1
    - Dst: pthread_mutex_destroy
      Src: /src/frr/lib/zlog_targets.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 170
    functionDepth: 5
    functionLinenumber: 170
    functionLinenumberEnd: 182
    functionName: zlog_file_fini
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - zlog_file_target_free
    - container_of
    - zlog_target_replace
    - XFREE
    - pthread_mutex_destroy
    linkageType: ''
    returnType: void
    signature: void zlog_file_fini(struct zlog_cfg_file *zcf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/frr/lib/zlog_targets.c:196,1
    - Dst: open
      Src: /src/frr/lib/zlog_targets.c:198,1
    - Dst: zlog_target_clone
      Src: /src/frr/lib/zlog_targets.c:210,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:212,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:223,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 230
    functionName: zlog_file_cycle
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - open
    - container_of
    - zlog_target_clone
    - zlog_target_replace
    - dup
    linkageType: ''
    returnType: bool
    signature: bool zlog_file_cycle(struct zlog_cfg_file *zcf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_targets.c:234,1
    - Dst: zlog_file_cycle
      Src: /src/frr/lib/zlog_targets.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 237
    functionName: zlog_file_set_other
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - frr_with_mutex
    - zlog_file_cycle
    linkageType: ''
    returnType: void
    signature: void zlog_file_set_other(struct zlog_cfg_file *zcf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_targets.c:241,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_targets.c:242,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/zlog_targets.c:243,1
    - Dst: zlog_file_cycle
      Src: /src/frr/lib/zlog_targets.c:246,1
    - Dst: assert
      Src: /src/frr/lib/zlog_targets.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - zcf
    - filename
    argTypes:
    - struct zlog_cfg_file*
    - char*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 247
        line_start: 247
        source_file: /src/frr/lib/zlog_targets.c
    constantsTouched: []
    func_position:
      end: 250
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 250
    functionName: zlog_file_set_filename
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - frr_with_mutex
    - XSTRDUP
    - XFREE
    - assert
    - zlog_file_cycle
    linkageType: ''
    returnType: bool
    signature: bool zlog_file_set_filename(struct zlog_cfg_file *zcf, const char *filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_targets.c:254,1
    - Dst: XFREE
      Src: /src/frr/lib/zlog_targets.c:258,1
    - Dst: zlog_file_cycle
      Src: /src/frr/lib/zlog_targets.c:261,1
    - Dst: assert
      Src: /src/frr/lib/zlog_targets.c:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - zcf
    - fd
    argTypes:
    - struct zlog_cfg_file*
    - int
    assertStmts:
    - condition: (0)
      pos:
        line_end: 262
        line_start: 262
        source_file: /src/frr/lib/zlog_targets.c
    constantsTouched: []
    func_position:
      end: 265
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 265
    functionName: zlog_file_set_fd
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - assert
    - frr_with_mutex
    - XFREE
    - zlog_file_cycle
    linkageType: ''
    returnType: bool
    signature: bool zlog_file_set_fd(struct zlog_cfg_file *zcf, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_mutex
      Src: /src/frr/lib/zlog_targets.c:277,1
    - Dst: open
      Src: /src/frr/lib/zlog_targets.c:281,1
    - Dst: atomic_exchange_explicit
      Src: /src/frr/lib/zlog_targets.c:287,1
    - Dst: XCALLOC
      Src: /src/frr/lib/zlog_targets.c:292,1
    - Dst: rcu_close
      Src: /src/frr/lib/zlog_targets.c:293,1
    - Dst: rcu_free
      Src: /src/frr/lib/zlog_targets.c:294,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - zcf
    argTypes:
    - struct zlog_cfg_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 272
    functionDepth: 4
    functionLinenumber: 272
    functionLinenumberEnd: 297
    functionName: zlog_file_rotate
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - open
    - frr_with_mutex
    - XCALLOC
    - rcu_free
    - atomic_exchange_explicit
    - rcu_close
    linkageType: ''
    returnType: bool
    signature: bool zlog_file_rotate(struct zlog_cfg_file *zcf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: openat
      Src: /src/frr/lib/zlog_targets.c:310,1
    - Dst: zlog_fd_sigsafe
      Src: /src/frr/lib/zlog_targets.c:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - zt
    - text
    - len
    argTypes:
    - struct zlog_target*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 323
    functionName: zlog_crashlog_sigsafe
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_fd_sigsafe
    - openat
    linkageType: ''
    returnType: void
    signature: "void zlog_crashlog_sigsafe(struct zlog_target *zt, const char *text,\n\t\t\t\t
      \ size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_targets.c:333,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog_targets.c:336,1
    - Dst: zlog_crashlog_sigsafe
      Src: /src/frr/lib/zlog_targets.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - zt
    - msgs
    - nmsgs
    argTypes:
    - struct zlog_target*
    - struct zlog_msg*[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 326
    functionDepth: 3
    functionLinenumber: 326
    functionLinenumberEnd: 339
    functionName: zlog_crashlog_plain
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_msg_text
    - zlog_crashlog_sigsafe
    - zlog_msg_prio
    linkageType: ''
    returnType: void
    signature: "void zlog_crashlog_plain(struct zlog_target *zt, struct zlog_msg *msgs[],\n\t\t\t\tsize_t
      nmsgs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 349
    functionName: zlog_crashlog_init
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_target_replace
    linkageType: ''
    returnType: void
    signature: void zlog_crashlog_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:365,1
    - Dst: zlog_startup_end
      Src: /src/frr/lib/zlog_targets.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - prefix
    - prio_min
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 368
    functionName: zlt_aux_init
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_target_replace
    - zlog_startup_end
    linkageType: ''
    returnType: int
    signature: int zlt_aux_init(const char *prefix, int prio_min)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openlog
      Src: /src/frr/lib/zlog_targets.c:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - progname
    - protoname
    - instance
    - uid
    - gid
    argTypes:
    - char*
    - char*
    - unsigned short
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 375
    functionName: zlt_init
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - openlog
    linkageType: ''
    returnType: int
    signature: "int zlt_init(const char *progname, const char *protoname,\n\t\t     unsigned
      short instance, uid_t uid, gid_t gid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closelog
      Src: /src/frr/lib/zlog_targets.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 381
    functionName: zlt_fini
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - closelog
    linkageType: ''
    returnType: int
    signature: int zlt_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _CONSTRUCTOR
      Src: /src/frr/lib/zlog_targets.c:387,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:394,1
    - Dst: hook_register
      Src: /src/frr/lib/zlog_targets.c:396,1
    - Dst: hook_register
      Src: /src/frr/lib/zlog_targets.c:397,1
    - Dst: hook_register
      Src: /src/frr/lib/zlog_targets.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 399
    functionName: zlog_startup_init
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_target_replace
    - _CONSTRUCTOR
    - hook_register
    linkageType: ''
    returnType: void
    signature: void zlog_startup_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:409,1
    - Dst: zlog_crashlog_init
      Src: /src/frr/lib/zlog_targets.c:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 401
    functionDepth: 2
    functionLinenumber: 401
    functionLinenumberEnd: 416
    functionName: zlog_startup_end
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 2
    functionsReached:
    - zlog_target_replace
    - zlog_crashlog_init
    linkageType: ''
    returnType: void
    signature: void zlog_startup_end(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:430,1
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_targets.c:435,1
    - Dst: zlog_msg_text
      Src: /src/frr/lib/zlog_targets.c:438,1
    - Dst: syslog
      Src: /src/frr/lib/zlog_targets.c:439,1
    - Dst: zlog_msg_prio
      Src: /src/frr/lib/zlog_targets.c:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - zt
    - msgs
    - nmsgs
    argTypes:
    - struct zlog_target*
    - struct zlog_msg*[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 426
    functionDepth: 2
    functionLinenumber: 426
    functionLinenumberEnd: 442
    functionName: zlog_syslog
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_msg_text
    - container_of
    - zlog_msg_prio
    - syslog
    linkageType: ''
    returnType: void
    signature: "void zlog_syslog(struct zlog_target *zt, struct zlog_msg *msgs[],\n\t\t\tsize_t
      nmsgs)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/lib/zlog_targets.c:458,1
    - Dst: strlcpy
      Src: /src/frr/lib/zlog_targets.c:464,1
    - Dst: SUN_LEN
      Src: /src/frr/lib/zlog_targets.c:466,1
    - Dst: connect
      Src: /src/frr/lib/zlog_targets.c:468,1
    - Dst: close
      Src: /src/frr/lib/zlog_targets.c:469,1
    - Dst: open
      Src: /src/frr/lib/zlog_targets.c:476,1
    - Dst: snprintfrr
      Src: /src/frr/lib/zlog_targets.c:487,1
    - Dst: getpid
      Src: /src/frr/lib/zlog_targets.c:489,1
    - Dst: writev
      Src: /src/frr/lib/zlog_targets.c:497,1
    - Dst: array_size
      Src: /src/frr/lib/zlog_targets.c:497,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - zt
    - text
    - len
    argTypes:
    - struct zlog_target*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 448
    functionDepth: 1
    functionLinenumber: 448
    functionLinenumberEnd: 498
    functionName: zlog_syslog_sigsafe
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - open
    - connect
    - getpid
    - socket
    - strlcpy
    - snprintfrr
    - close
    - SUN_LEN
    - array_size
    - writev
    linkageType: ''
    returnType: void
    signature: "void zlog_syslog_sigsafe(struct zlog_target *zt, const char *text,\n\t\t\t\tsize_t
      len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_clone
      Src: /src/frr/lib/zlog_targets.c:519,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:521,1
    - Dst: zlog_target_free
      Src: /src/frr/lib/zlog_targets.c:524,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - facility
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 530
    functionName: zlog_syslog_set_facility
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_target_replace
    - container_of
    - zlog_target_clone
    - zlog_target_free
    linkageType: ''
    returnType: void
    signature: void zlog_syslog_set_facility(int facility)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_clone
      Src: /src/frr/lib/zlog_targets.c:519,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:521,1
    - Dst: zlog_target_free
      Src: /src/frr/lib/zlog_targets.c:524,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 529
    functionName: (&syslog_cfg_mutex)
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_target_replace
    - container_of
    - zlog_target_clone
    - zlog_target_free
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&syslog_cfg_mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/zlog_targets.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (0)
      pos:
        line_end: 536
        line_start: 536
        source_file: /src/frr/lib/zlog_targets.c
    constantsTouched: []
    func_position:
      end: 539
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 539
    functionName: zlog_syslog_get_facility
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int zlog_syslog_get_facility(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 536
    functionName: (&syslog_cfg_mutex)
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&syslog_cfg_mutex)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_clone
      Src: /src/frr/lib/zlog_targets.c:552,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:555,1
    - Dst: zlog_target_free
      Src: /src/frr/lib/zlog_targets.c:562,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - prio_min
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 568
    functionName: zlog_syslog_set_prio_min
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 2
    functionsReached:
    - zlog_target_replace
    - container_of
    - zlog_target_clone
    - zlog_target_free
    linkageType: ''
    returnType: void
    signature: void zlog_syslog_set_prio_min(int prio_min)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_target_clone
      Src: /src/frr/lib/zlog_targets.c:552,1
    - Dst: container_of
      Src: /src/frr/lib/zlog_targets.c:555,1
    - Dst: zlog_target_free
      Src: /src/frr/lib/zlog_targets.c:562,1
    - Dst: zlog_target_replace
      Src: /src/frr/lib/zlog_targets.c:563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 567
    functionName: (&syslog_cfg_mutex)
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached:
    - zlog_target_replace
    - container_of
    - zlog_target_clone
    - zlog_target_free
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&syslog_cfg_mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/lib/zlog_targets.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (0)
      pos:
        line_end: 574
        line_start: 574
        source_file: /src/frr/lib/zlog_targets.c
    constantsTouched: []
    func_position:
      end: 577
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 577
    functionName: zlog_syslog_get_prio_min
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int zlog_syslog_get_prio_min(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 574
    functionName: (&syslog_cfg_mutex)
    functionSourceFile: /src/frr/lib/zlog_targets.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: frr_with_mutex
    signature: frr_with_mutex (&syslog_cfg_mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mallinfo2
      Src: /src/frr/lib/lib_vty.c:38,1
    - Dst: mallinfo
      Src: /src/frr/lib/lib_vty.c:40,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:44,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:45,1
    - Dst: mtype_memstr
      Src: /src/frr/lib/lib_vty.c:46,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:47,1
    - Dst: mtype_memstr
      Src: /src/frr/lib/lib_vty.c:48,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:49,1
    - Dst: mtype_memstr
      Src: /src/frr/lib/lib_vty.c:50,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:51,1
    - Dst: mtype_memstr
      Src: /src/frr/lib/lib_vty.c:52,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:53,1
    - Dst: mtype_memstr
      Src: /src/frr/lib/lib_vty.c:54,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:55,1
    - Dst: mtype_memstr
      Src: /src/frr/lib/lib_vty.c:56,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:57,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:59,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:61,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 65
    functionName: show_memory_mallinfo
    functionSourceFile: /src/frr/lib/lib_vty.c
    functionUses: 0
    functionsReached:
    - mallinfo2
    - vty_out
    - mtype_memstr
    - mallinfo
    linkageType: ''
    returnType: int
    signature: int show_memory_mallinfo(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:72,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:73,1
    - Dst: snprintf
      Src: /src/frr/lib/lib_vty.c:90,1
    - Dst: vty_out
      Src: /src/frr/lib/lib_vty.c:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - arg
    - mg
    - mt
    argTypes:
    - void*
    - struct memgroup*
    - struct memtype*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 113
    functionName: qmem_walker
    functionSourceFile: /src/frr/lib/lib_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - snprintf
    linkageType: ''
    returnType: int
    signature: int qmem_walker(void *arg, struct memgroup *mg, struct memtype *mt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 268
    functionName: cmd_init_config_callbacks
    functionSourceFile: /src/frr/lib/lib_vty.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void cmd_init_config_callbacks(void (*start_config_cb)(void),\n\t\t\t
      \      void (*end_config_cb)(void))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector_set
      Src: /src/frr/lib/lib_vty.c:276,1
    - Dst: XSTRDUP
      Src: /src/frr/lib/lib_vty.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 277
    functionName: defaults_autocomplete
    functionSourceFile: /src/frr/lib/lib_vty.c
    functionUses: 0
    functionsReached:
    - vector_set
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void defaults_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/lib/lib_vty.c:286,1
    - Dst: install_element
      Src: /src/frr/lib/lib_vty.c:288,1
    - Dst: install_element
      Src: /src/frr/lib/lib_vty.c:289,1
    - Dst: install_element
      Src: /src/frr/lib/lib_vty.c:291,1
    - Dst: install_element
      Src: /src/frr/lib/lib_vty.c:292,1
    - Dst: install_element
      Src: /src/frr/lib/lib_vty.c:294,1
    - Dst: install_element
      Src: /src/frr/lib/lib_vty.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 296
    functionName: lib_cmd_init
    functionSourceFile: /src/frr/lib/lib_vty.c
    functionUses: 8
    functionsReached:
    - install_element
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void lib_cmd_init(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/lib/lib_vty.c:332,1
    - Dst: snprintf
      Src: /src/frr/lib/lib_vty.c:336,1
    - Dst: snprintf
      Src: /src/frr/lib/lib_vty.c:338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - buf
    - len
    - bytes
    argTypes:
    - char*
    - size_t
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 341
    functionName: mtype_memstr
    functionSourceFile: /src/frr/lib/lib_vty.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *mtype_memstr(char *buf, size_t len, unsigned long bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - atom
    - ','
    - expect
    - ','
    - desire
    - ','
    - mem1
    - ','
    - mem2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: atomic_compare_exchange_weak_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "atomic_compare_exchange_weak_explicit(atom, expect, desire, mem1,
      \     \\\n\t\t\t\t\t      mem2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - atom
    - ','
    - expect
    - ','
    - desire
    - ','
    - mem1
    - ','
    - mem2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: atomic_compare_exchange_strong_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "atomic_compare_exchange_strong_explicit(atom, expect, desire, mem1,
      \   \\\n\t\t\t\t\t      mem2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 103
    functionName: atomic_load_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_load_explicit(ptr, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: atomic_store_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_store_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: atomic_exchange_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_exchange_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 132
    functionName: atomic_exchange_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_exchange_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: atomic_fetch_add_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_fetch_add_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: atomic_fetch_sub_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_fetch_sub_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - atom
    - ','
    - expect
    - ','
    - desire
    - ','
    - mem1
    - ','
    - mem2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 162
    functionName: atomic_compare_exchange_strong_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "atomic_compare_exchange_strong_explicit(atom, expect, desire, mem1,
      \   \\\n\t\t\t\t\t      mem2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 172
    functionName: atomic_fetch_and_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_fetch_and_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 179
    functionName: atomic_fetch_or_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_fetch_or_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: atomic_add_fetch_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_add_fetch_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 194
    functionName: atomic_sub_fetch_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_sub_fetch_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 202
    functionName: atomic_and_fetch_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_and_fetch_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - val
    - ','
    - mem
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 209
    functionName: atomic_or_fetch_explicit
    functionSourceFile: /src/frr/lib/frratomic.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: atomic_or_fetch_explicit(ptr, val, mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: GETRUSAGE
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETRUSAGE(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: EVENT_ARG
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 260
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVENT_ARG(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 158
    functionName: EVENT_FD
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVENT_FD(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    functionName: EVENT_VAL
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVENT_VAL(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - thread
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 168
    functionName: EVENT_OFF
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 252
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EVENT_OFF(thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - addfn
    - ','
    - type
    - ','
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 187
    functionName: _xref_t_a
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _xref_t_a(addfn, type, m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: event_add_read
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 79
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_read(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: event_add_write
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_write(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 194
    functionName: event_add_timer
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 151
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_timer(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 196
    functionName: event_add_timer_msec
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 56
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_timer_msec(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 198
    functionName: event_add_timer_tv
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_timer_tv(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    functionName: event_add_event
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 71
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_event(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 212
    functionName: event_execute
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_execute(m, f, a, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: event_add_read
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 79
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_read(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: event_add_write
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_write(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    functionName: event_add_timer
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 151
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_timer(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: event_add_timer_msec
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 56
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_timer_msec(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 219
    functionName: event_add_timer_tv
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_timer_tv(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    functionName: event_add_event
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 71
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_add_event(m, f, a, v, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 221
    functionName: event_execute
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_execute(m, f, a, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - m
    - ','
    - f
    - ','
    - a
    - ','
    - v
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: event_execute_name
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: event_execute_name(m, f, a, v, n)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 295
    functionName: event_is_scheduled
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool event_is_scheduled(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: event_ignore_late_timer
    functionSourceFile: /src/frr/lib/frrevent.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void event_ignore_late_timer(struct event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: assert
    functionSourceFile: /src/frr/lib/assert/assert.h
    functionUses: 1036
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert(expr_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - expr_
    - ','
    - extra_
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 80
    functionName: assertf
    functionSourceFile: /src/frr/lib/assert/assert.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assertf(expr_, extra_, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - types
    argTypes:
    - struct typetable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 105
    functionName: inittypes
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void inittypes(struct typetable *types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/lib/printf/printf-pos.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - types
    argTypes:
    - struct typetable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 116
    functionName: freetypes
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void freetypes(struct typetable *types)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: __grow_type_table
      Src: /src/frr/lib/printf/printf-pos.c:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - types
    argTypes:
    - struct typetable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 133
    functionName: _ensurespace
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - __grow_type_table
    linkageType: ''
    returnType: int
    signature: int _ensurespace(struct typetable *types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _ensurespace
      Src: /src/frr/lib/printf/printf-pos.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - types
    - type
    argTypes:
    - struct typetable*
    - enum typeid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 147
    functionName: addtype
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - _ensurespace
    linkageType: ''
    returnType: int
    signature: int addtype(struct typetable *types, enum typeid type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _ensurespace
      Src: /src/frr/lib/printf/printf-pos.c:153,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - types
    - flags
    argTypes:
    - struct typetable*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 170
    functionName: addsarg
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - _ensurespace
    linkageType: ''
    returnType: int
    signature: int addsarg(struct typetable *types, int flags)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _ensurespace
      Src: /src/frr/lib/printf/printf-pos.c:176,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - types
    - flags
    argTypes:
    - struct typetable*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 193
    functionName: adduarg
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - _ensurespace
    linkageType: ''
    returnType: int
    signature: int adduarg(struct typetable *types, int flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_digit
      Src: /src/frr/lib/printf/printf-pos.c:206,1
    - Dst: to_digit
      Src: /src/frr/lib/printf/printf-pos.c:207,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:213,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - types
    - fmtp
    argTypes:
    - struct typetable*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 222
    functionName: addaster
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - addtype
    - is_digit
    - to_digit
    linkageType: ''
    returnType: int
    signature: int addaster(struct typetable *types, char **fmtp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_digit
      Src: /src/frr/lib/printf/printf-pos.c:233,1
    - Dst: to_digit
      Src: /src/frr/lib/printf/printf-pos.c:234,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:240,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - types
    - fmtp
    argTypes:
    - struct typetable*
    - wchar_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 249
    functionName: addwaster
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - addtype
    - is_digit
    - to_digit
    linkageType: ''
    returnType: int
    signature: int addwaster(struct typetable *types, wchar_t **fmtp)
  - BBCount: 72
    BranchProfiles: []
    Callsites:
    - Dst: inittypes
      Src: /src/frr/lib/printf/printf-pos.c:270,1
    - Dst: addaster
      Src: /src/frr/lib/printf/printf-pos.c:291,1
    - Dst: addaster
      Src: /src/frr/lib/printf/printf-pos.c:300,1
    - Dst: is_digit
      Src: /src/frr/lib/printf/printf-pos.c:304,1
    - Dst: to_digit
      Src: /src/frr/lib/printf/printf-pos.c:314,1
    - Dst: is_digit
      Src: /src/frr/lib/printf/printf-pos.c:321,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:360,1
    - Dst: addsarg
      Src: /src/frr/lib/printf/printf-pos.c:370,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:381,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:390,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:392,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:394,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:396,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:398,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:400,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:402,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:404,1
    - Dst: adduarg
      Src: /src/frr/lib/printf/printf-pos.c:413,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:417,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:424,1
    - Dst: adduarg
      Src: /src/frr/lib/printf/printf-pos.c:435,1
    - Dst: build_arg_table
      Src: /src/frr/lib/printf/printf-pos.c:445,1
    - Dst: freetypes
      Src: /src/frr/lib/printf/printf-pos.c:447,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 202
    argCount: 3
    argNames:
    - fmt0
    - ap
    - argtable
    argTypes:
    - char*
    - va_list
    - union arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 449
    functionName: _frr_find_arguments
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - addtype
    - to_digit
    - is_digit
    - inittypes
    - adduarg
    - addaster
    - build_arg_table
    - freetypes
    - addsarg
    linkageType: ''
    returnType: int
    signature: int _frr_find_arguments (const char *fmt0, va_list ap, union arg **argtable)
  - BBCount: 72
    BranchProfiles: []
    Callsites:
    - Dst: inittypes
      Src: /src/frr/lib/printf/printf-pos.c:464,1
    - Dst: addwaster
      Src: /src/frr/lib/printf/printf-pos.c:485,1
    - Dst: addwaster
      Src: /src/frr/lib/printf/printf-pos.c:494,1
    - Dst: is_digit
      Src: /src/frr/lib/printf/printf-pos.c:498,1
    - Dst: to_digit
      Src: /src/frr/lib/printf/printf-pos.c:508,1
    - Dst: is_digit
      Src: /src/frr/lib/printf/printf-pos.c:515,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:554,1
    - Dst: addsarg
      Src: /src/frr/lib/printf/printf-pos.c:564,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:575,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:584,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:586,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:588,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:590,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:592,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:594,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:596,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:598,1
    - Dst: adduarg
      Src: /src/frr/lib/printf/printf-pos.c:607,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:611,1
    - Dst: addtype
      Src: /src/frr/lib/printf/printf-pos.c:618,1
    - Dst: adduarg
      Src: /src/frr/lib/printf/printf-pos.c:629,1
    - Dst: build_arg_table
      Src: /src/frr/lib/printf/printf-pos.c:639,1
    - Dst: freetypes
      Src: /src/frr/lib/printf/printf-pos.c:641,1
    CyclomaticComplexity: 68
    EdgeCount: 68
    ICount: 202
    argCount: 3
    argNames:
    - fmt0
    - ap
    - argtable
    argTypes:
    - wchar_t*
    - va_list
    - union arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 453
    functionDepth: 4
    functionLinenumber: 453
    functionLinenumberEnd: 643
    functionName: _frr_find_warguments
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 0
    functionsReached:
    - addtype
    - to_digit
    - addsarg
    - is_digit
    - adduarg
    - inittypes
    - build_arg_table
    - freetypes
    - addwaster
    linkageType: ''
    returnType: int
    signature: int _frr_find_warguments (const wchar_t *fmt0, va_list ap, union arg
      **argtable)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/lib/printf/printf-pos.c:665,1
    - Dst: bcopy
      Src: /src/frr/lib/printf/printf-pos.c:667,1
    - Dst: realloc
      Src: /src/frr/lib/printf/printf-pos.c:669,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - types
    argTypes:
    - struct typetable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 649
    functionDepth: 0
    functionLinenumber: 649
    functionLinenumberEnd: 680
    functionName: __grow_type_table
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 1
    functionsReached:
    - malloc
    - bcopy
    - realloc
    linkageType: ''
    returnType: int
    signature: int __grow_type_table(struct typetable *types)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/frr/lib/printf/printf-pos.c:693,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:702,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:705,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:708,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:711,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:714,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:717,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:720,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:723,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:726,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:729,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:732,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:735,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:738,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:741,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:744,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:747,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:750,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:753,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:756,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:759,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:762,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:765,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:769,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:774,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:778,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:781,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:784,1
    - Dst: va_arg
      Src: /src/frr/lib/printf/printf-pos.c:787,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 95
    argCount: 3
    argNames:
    - types
    - ap
    - argtable
    argTypes:
    - struct typetable*
    - va_list
    - union arg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 791
    functionName: build_arg_table
    functionSourceFile: /src/frr/lib/printf/printf-pos.c
    functionUses: 2
    functionsReached:
    - malloc
    - va_arg
    linkageType: ''
    returnType: void
    signature: void build_arg_table(struct typetable *types, va_list ap, union arg
      **argtable)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: wcsrtombs
      Src: /src/frr/lib/printf/vfprintf.c:95,1
    - Dst: wcrtomb
      Src: /src/frr/lib/printf/vfprintf.c:111,1
    - Dst: malloc
      Src: /src/frr/lib/printf/vfprintf.c:119,1
    - Dst: wcsrtombs
      Src: /src/frr/lib/printf/vfprintf.c:125,1
    - Dst: free
      Src: /src/frr/lib/printf/vfprintf.c:127,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - wcsarg
    - prec
    argTypes:
    - wchar_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 132
    functionName: __wcsconv
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 0
    functionsReached:
    - wcsrtombs
    - wcrtomb
    - free
    - malloc
    linkageType: ''
    returnType: char
    signature: 'char *

      __wcsconv(wchar_t *wcsarg, int prec)'
  - BBCount: 112
    BranchProfiles: []
    Callsites:
    - Dst: no_sanitize
      Src: /src/frr/lib/printf/vfprintf.c:150,1
    - Dst: va_copy
      Src: /src/frr/lib/printf/vfprintf.c:273,1
    - Dst: io_init
      Src: /src/frr/lib/printf/vfprintf.c:284,1
    - Dst: PRINT
      Src: /src/frr/lib/printf/vfprintf.c:299,1
    - Dst: GETASTER
      Src: /src/frr/lib/printf/vfprintf.c:339,1
    - Dst: GETASTER
      Src: /src/frr/lib/printf/vfprintf.c:355,1
    - Dst: is_digit
      Src: /src/frr/lib/printf/vfprintf.c:359,1
    - Dst: to_digit
      Src: /src/frr/lib/printf/vfprintf.c:360,1
    - Dst: to_digit
      Src: /src/frr/lib/printf/vfprintf.c:376,1
    - Dst: is_digit
      Src: /src/frr/lib/printf/vfprintf.c:378,1
    - Dst: _frr_find_arguments
      Src: /src/frr/lib/printf/vfprintf.c:383,1
    - Dst: wcrtomb
      Src: /src/frr/lib/printf/vfprintf.c:433,1
    - Dst: GETARG
      Src: /src/frr/lib/printf/vfprintf.c:434,1
    - Dst: GETARG
      Src: /src/frr/lib/printf/vfprintf.c:442,1
    - Dst: SJARG
      Src: /src/frr/lib/printf/vfprintf.c:454,1
    - Dst: SARG
      Src: /src/frr/lib/printf/vfprintf.c:456,1
    - Dst: printfrr_ext_char
      Src: /src/frr/lib/printf/vfprintf.c:458,1
    - Dst: printfrr_exti
      Src: /src/frr/lib/printf/vfprintf.c:470,1
    - Dst: GETARG
      Src: /src/frr/lib/printf/vfprintf.c:502,1
    - Dst: snprintf
      Src: /src/frr/lib/printf/vfprintf.c:509,1
    - Dst: GETARG
      Src: /src/frr/lib/printf/vfprintf.c:512,1
    - Dst: snprintf
      Src: /src/frr/lib/printf/vfprintf.c:519,1
    - Dst: is_digit
      Src: /src/frr/lib/printf/vfprintf.c:529,1
    - Dst: strlen
      Src: /src/frr/lib/printf/vfprintf.c:531,1
    - Dst: strerror
      Src: /src/frr/lib/printf/vfprintf.c:535,1
    - Dst: strnlen
      Src: /src/frr/lib/printf/vfprintf.c:536,1
    - Dst: strlen
      Src: /src/frr/lib/printf/vfprintf.c:536,1
    - Dst: UJARG
      Src: /src/frr/lib/printf/vfprintf.c:544,1
    - Dst: UARG
      Src: /src/frr/lib/printf/vfprintf.c:546,1
    - Dst: GETARG
      Src: /src/frr/lib/printf/vfprintf.c:557,1
    - Dst: printfrr_ext_char
      Src: /src/frr/lib/printf/vfprintf.c:558,1
    - Dst: printfrr_extp
      Src: /src/frr/lib/printf/vfprintf.c:570,1
    - Dst: free
      Src: /src/frr/lib/printf/vfprintf.c:592,1
    - Dst: GETARG
      Src: /src/frr/lib/printf/vfprintf.c:593,1
    - Dst: __wcsconv
      Src: /src/frr/lib/printf/vfprintf.c:596,1
    - Dst: GETARG
      Src: /src/frr/lib/printf/vfprintf.c:604,1
    - Dst: strnlen
      Src: /src/frr/lib/printf/vfprintf.c:606,1
    - Dst: strlen
      Src: /src/frr/lib/printf/vfprintf.c:606,1
    - Dst: UJARG
      Src: /src/frr/lib/printf/vfprintf.c:614,1
    - Dst: UARG
      Src: /src/frr/lib/printf/vfprintf.c:616,1
    - Dst: UJARG
      Src: /src/frr/lib/printf/vfprintf.c:626,1
    - Dst: UARG
      Src: /src/frr/lib/printf/vfprintf.c:628,1
    - Dst: __ujtoa
      Src: /src/frr/lib/printf/vfprintf.c:659,1
    - Dst: __ultoa
      Src: /src/frr/lib/printf/vfprintf.c:664,1
    - Dst: abort
      Src: /src/frr/lib/printf/vfprintf.c:669,1
    - Dst: PAD
      Src: /src/frr/lib/printf/vfprintf.c:715,1
    - Dst: PRINT
      Src: /src/frr/lib/printf/vfprintf.c:722,1
    - Dst: PRINT
      Src: /src/frr/lib/printf/vfprintf.c:726,1
    - Dst: PAD
      Src: /src/frr/lib/printf/vfprintf.c:731,1
    - Dst: PAD
      Src: /src/frr/lib/printf/vfprintf.c:735,1
    - Dst: PRINT
      Src: /src/frr/lib/printf/vfprintf.c:736,1
    - Dst: PAD
      Src: /src/frr/lib/printf/vfprintf.c:745,1
    - Dst: FLUSH
      Src: /src/frr/lib/printf/vfprintf.c:750,1
    - Dst: MIN
      Src: /src/frr/lib/printf/vfprintf.c:787,1
    - Dst: memmove
      Src: /src/frr/lib/printf/vfprintf.c:789,1
    - Dst: PAD
      Src: /src/frr/lib/printf/vfprintf.c:792,1
    - Dst: PAD
      Src: /src/frr/lib/printf/vfprintf.c:807,1
    - Dst: FLUSH
      Src: /src/frr/lib/printf/vfprintf.c:812,1
    - Dst: FLUSH
      Src: /src/frr/lib/printf/vfprintf.c:815,1
    - Dst: va_end
      Src: /src/frr/lib/printf/vfprintf.c:817,1
    - Dst: free
      Src: /src/frr/lib/printf/vfprintf.c:819,1
    - Dst: free
      Src: /src/frr/lib/printf/vfprintf.c:821,1
    CyclomaticComplexity: 122
    EdgeCount: 122
    ICount: 428
    argCount: 3
    argNames:
    - cb_in
    - fmt0
    - ap
    argTypes:
    - struct fbuf*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 149
    functionDepth: 5
    functionLinenumber: 149
    functionLinenumberEnd: 826
    functionName: vbprintfrr
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 2
    functionsReached:
    - strlen
    - wcrtomb
    - printfrr_extp
    - GETASTER
    - abort
    - printfrr_exti
    - printfrr_ext_char
    - va_copy
    - UARG
    - MIN
    - to_digit
    - snprintf
    - PRINT
    - GETARG
    - SARG
    - strnlen
    - UJARG
    - free
    - __wcsconv
    - va_end
    - PAD
    - no_sanitize
    - io_init
    - SJARG
    - FLUSH
    - __ultoa
    - strerror
    - is_digit
    - __ujtoa
    - memmove
    - _frr_find_arguments
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t vbprintfrr(struct fbuf *cb_in, const char *fmt0, va_list ap)\n\t__attribute__((no_sanitize(\"unsigned-integer-overflow\")))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: PRINT
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINT(ptr, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - howmany
    - ','
    - with
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 196
    functionName: PAD
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAD(howmany, with)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - p
    - ','
    - ep
    - ','
    - len
    - ','
    - with
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: PRINTANDPAD
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINTANDPAD(p, ep, len, with)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 201
    functionName: FLUSH
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLUSH()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 210
    functionName: GETARG
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETARG(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: SARG
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SARG()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 225
    functionName: UARG
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UARG()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 232
    functionName: SJARG
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SJARG()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 238
    functionName: UJARG
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UJARG()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 266
    functionName: GETASTER
    functionSourceFile: /src/frr/lib/printf/vfprintf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETASTER(val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: to_digit
    functionSourceFile: /src/frr/lib/printf/printflocal.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: to_digit(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: is_digit
    functionSourceFile: /src/frr/lib/printf/printflocal.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_digit(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: to_char
    functionSourceFile: /src/frr/lib/printf/printflocal.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: to_char(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - iop
    - cb
    argTypes:
    - struct io_state*
    - struct fbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: io_init
    functionSourceFile: /src/frr/lib/printf/printfcommon.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void io_init(struct io_state *iop, struct fbuf *cb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/lib/printf/printfcommon.h:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - iop
    - ptr
    - len
    argTypes:
    - struct io_state*
    - CHAR*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 82
    functionName: io_print
    functionSourceFile: /src/frr/lib/printf/printfcommon.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int io_print(struct io_state *iop, const CHAR * __restrict ptr, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: io_print
      Src: /src/frr/lib/printf/printfcommon.h:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - iop
    - howmany
    - with
    argTypes:
    - struct io_state*
    - int
    - CHAR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 111
    functionName: io_pad
    functionSourceFile: /src/frr/lib/printf/printfcommon.h
    functionUses: 0
    functionsReached:
    - io_print
    linkageType: ''
    returnType: int
    signature: int io_pad(struct io_state *iop, int howmany, const CHAR * __restrict
      with)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: io_print
      Src: /src/frr/lib/printf/printfcommon.h:127,1
    - Dst: io_pad
      Src: /src/frr/lib/printf/printfcommon.h:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - iop
    - p
    - ep
    - len
    - with
    argTypes:
    - struct io_state*
    - CHAR*
    - CHAR*
    - int
    - CHAR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 133
    functionName: io_printandpad
    functionSourceFile: /src/frr/lib/printf/printfcommon.h
    functionUses: 0
    functionsReached:
    - io_pad
    - io_print
    linkageType: ''
    returnType: int
    signature: "int io_printandpad(struct io_state *iop, const CHAR *p, const CHAR
      *ep,\n\t       int len, const CHAR * __restrict with)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:154,1
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:164,1
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:169,1
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:176,1
    - Dst: abort
      Src: /src/frr/lib/printf/printfcommon.h:191,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 5
    argNames:
    - val
    - endp
    - base
    - octzero
    - xdigs
    argTypes:
    - u_long
    - CHAR*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 194
    functionName: __ultoa
    functionSourceFile: /src/frr/lib/printf/printfcommon.h
    functionUses: 1
    functionsReached:
    - abort
    - to_char
    linkageType: ''
    returnType: CHAR
    signature: 'CHAR *

      __ultoa(u_long val, CHAR *endp, int base, int octzero, const char *xdigs)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: __ultoa
      Src: /src/frr/lib/printf/printfcommon.h:206,1
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:210,1
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:214,1
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:219,1
    - Dst: to_char
      Src: /src/frr/lib/printf/printfcommon.h:226,1
    - Dst: abort
      Src: /src/frr/lib/printf/printfcommon.h:241,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 5
    argNames:
    - val
    - endp
    - base
    - octzero
    - xdigs
    argTypes:
    - uintmax_t
    - CHAR*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 244
    functionName: __ujtoa
    functionSourceFile: /src/frr/lib/printf/printfcommon.h
    functionUses: 1
    functionsReached:
    - abort
    - to_char
    - __ultoa
    linkageType: ''
    returnType: CHAR
    signature: 'CHAR *

      __ujtoa(uintmax_t val, CHAR *endp, int base, int octzero, const char *xdigs)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/printf/glue.c:22,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:23,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - out
    - fmt
    argTypes:
    - struct fbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 17
    functionDepth: 6
    functionLinenumber: 17
    functionLinenumberEnd: 26
    functionName: bprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 29
    functionsReached:
    - va_start
    - va_end
    - vbprintfrr
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t bprintfrr(struct fbuf *out, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - out
    - outsz
    - fmt
    - ap
    argTypes:
    - char*
    - size_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 28
    functionDepth: 6
    functionLinenumber: 28
    functionLinenumberEnd: 38
    functionName: vsnprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 4
    functionsReached:
    - vbprintfrr
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t vsnprintfrr(char *out, size_t outsz, const char *fmt, va_list
      ap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/printf/glue.c:47,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:48,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - out
    - outsz
    - fmt
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 6
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: snprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 127
    functionsReached:
    - va_start
    - va_end
    - vbprintfrr
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t snprintfrr(char *out, size_t outsz, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:58,1
    - Dst: strnlen
      Src: /src/frr/lib/printf/glue.c:64,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - out
    - outsz
    - fmt
    - ap
    argTypes:
    - char*
    - size_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 55
    functionDepth: 6
    functionLinenumber: 55
    functionLinenumberEnd: 70
    functionName: vcsnprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 0
    functionsReached:
    - vbprintfrr
    - strnlen
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t vcsnprintfrr(char *out, size_t outsz, const char *fmt, va_list
      ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/printf/glue.c:77,1
    - Dst: vcsnprintfrr
      Src: /src/frr/lib/printf/glue.c:78,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - out
    - outsz
    - fmt
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 7
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: csnprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 2
    functionsReached:
    - va_start
    - va_end
    - vcsnprintfrr
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t csnprintfrr(char *out, size_t outsz, const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_copy
      Src: /src/frr/lib/printf/glue.c:91,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:92,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:94,1
    - Dst: qstrdup
      Src: /src/frr/lib/printf/glue.c:96,1
    - Dst: qmalloc
      Src: /src/frr/lib/printf/glue.c:100,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:104,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - mt
    - out
    - outsz
    - fmt
    - ap
    argTypes:
    - struct memtype*
    - char*
    - size_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 83
    functionDepth: 6
    functionLinenumber: 83
    functionLinenumberEnd: 110
    functionName: vasnprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 5
    functionsReached:
    - va_copy
    - vbprintfrr
    - va_end
    - qmalloc
    - qstrdup
    linkageType: ''
    returnType: char
    signature: "char *vasnprintfrr(struct memtype *mt, char *out, size_t outsz, const
      char *fmt,\n\t\t   va_list ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/printf/glue.c:118,1
    - Dst: vasnprintfrr
      Src: /src/frr/lib/printf/glue.c:119,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - mt
    - out
    - outsz
    - fmt
    argTypes:
    - struct memtype*
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 112
    functionDepth: 7
    functionLinenumber: 112
    functionLinenumberEnd: 122
    functionName: asnprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 9
    functionsReached:
    - va_start
    - va_end
    - vasnprintfrr
    linkageType: ''
    returnType: char
    signature: "char *asnprintfrr(struct memtype *mt, char *out, size_t outsz, const
      char *fmt,\n\t\t  ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vasnprintfrr
      Src: /src/frr/lib/printf/glue.c:129,1
    - Dst: qstrdup
      Src: /src/frr/lib/printf/glue.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - mt
    - fmt
    - ap
    argTypes:
    - struct memtype*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 124
    functionDepth: 7
    functionLinenumber: 124
    functionLinenumberEnd: 134
    functionName: vasprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 4
    functionsReached:
    - vasnprintfrr
    - qstrdup
    linkageType: ''
    returnType: char
    signature: char *vasprintfrr(struct memtype *mt, const char *fmt, va_list ap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/lib/printf/glue.c:142,1
    - Dst: vasnprintfrr
      Src: /src/frr/lib/printf/glue.c:143,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:144,1
    - Dst: qstrdup
      Src: /src/frr/lib/printf/glue.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - mt
    - fmt
    argTypes:
    - struct memtype*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 136
    functionDepth: 7
    functionLinenumber: 136
    functionLinenumberEnd: 149
    functionName: asprintfrr
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 11
    functionsReached:
    - va_start
    - va_end
    - vasnprintfrr
    - qstrdup
    linkageType: ''
    returnType: char
    signature: char *asprintfrr(struct memtype *mt, const char *fmt, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: aligned
      Src: /src/frr/lib/printf/glue.c:172,1
    - Dst: printfrr_ext_char
      Src: /src/frr/lib/printf/glue.c:179,1
    - Dst: memcmp
      Src: /src/frr/lib/printf/glue.c:185,1
    - Dst: memmove
      Src: /src/frr/lib/printf/glue.c:193,1
    - Dst: memmove
      Src: /src/frr/lib/printf/glue.c:195,1
    - Dst: memcpy
      Src: /src/frr/lib/printf/glue.c:198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ext
    argTypes:
    - struct printfrr_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 200
    functionName: printfrr_ext_reg
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 0
    functionsReached:
    - memcmp
    - memmove
    - aligned
    - printfrr_ext_char
    - memcpy
    linkageType: ''
    returnType: void
    signature: void printfrr_ext_reg(const struct printfrr_ext *ext)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/printf/glue.c:217,1
    - Dst: strlen
      Src: /src/frr/lib/printf/glue.c:217,1
    - Dst: strlen
      Src: /src/frr/lib/printf/glue.c:219,1
    - Dst: struct printfrr_ext*::print_ptr
      Src: /src/frr/lib/printf/glue.c:220,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 223
    functionName: printfrr_extp
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 1
    functionsReached:
    - strncmp
    - strlen
    - struct printfrr_ext*::print_ptr
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_extp(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t
      \     const void *ptr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/lib/printf/glue.c:240,1
    - Dst: strlen
      Src: /src/frr/lib/printf/glue.c:240,1
    - Dst: strlen
      Src: /src/frr/lib/printf/glue.c:242,1
    - Dst: struct printfrr_ext*::print_int
      Src: /src/frr/lib/printf/glue.c:243,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 3
    argNames:
    - buf
    - ea
    - num
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - uintmax_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 246
    functionName: printfrr_exti
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 1
    functionsReached:
    - struct printfrr_ext*::print_int
    - strncmp
    - strlen
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_exti(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t
      \     uintmax_t num)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/printf/glue.c:256,1
    - Dst: MIN
      Src: /src/frr/lib/printf/glue.c:259,1
    - Dst: memcpy
      Src: /src/frr/lib/printf/glue.c:262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - out
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 268
    functionName: printfrr_fb
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 0
    functionsReached:
    - MIN
    - memcpy
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_fb(struct fbuf *out, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/lib/printf/glue.c:279,1
    - Dst: va_copy
      Src: /src/frr/lib/printf/glue.c:285,1
    - Dst: vbprintfrr
      Src: /src/frr/lib/printf/glue.c:289,1
    - Dst: va_end
      Src: /src/frr/lib/printf/glue.c:291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - ea
    - ptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 271
    functionDepth: 6
    functionLinenumber: 271
    functionLinenumberEnd: 294
    functionName: printfrr_va
    functionSourceFile: /src/frr/lib/printf/glue.c
    functionUses: 0
    functionsReached:
    - va_copy
    - va_end
    - bputs
    - vbprintfrr
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_va(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \  const void *ptr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum pcc_status
    assertStmts:
    - condition: (!"Reached end of function where we do not expect to")
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: pcc_status_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcc_status_name(enum pcc_status status)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - event_type
    argTypes:
    - pcep_event_type
    assertStmts:
    - condition: (!"Reached end of function where we do not expect to")
      pos:
        line_end: 113
        line_start: 113
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 115
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 115
    functionName: pcep_event_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcep_event_type_name(pcep_event_type event_type)
  - BBCount: 32
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 65
    argCount: 1
    argNames:
    - error_type
    argTypes:
    - enum pcep_error_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 184
    functionName: pcep_error_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pcep_error_type_name(enum pcep_error_type error_type)
  - BBCount: 145
    BranchProfiles: []
    Callsites:
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:189,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:191,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:192,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:193,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:194,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:196,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:199,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:201,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:203,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:206,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:209,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:212,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:214,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:216,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:220,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:222,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:225,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:228,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:231,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:233,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:236,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:239,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:242,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:245,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:249,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:252,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:255,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:258,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:260,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:263,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:265,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:268,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:272,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:275,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:278,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:281,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:284,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:287,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:290,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:293,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:296,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:299,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:302,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:305,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:309,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:312,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:314,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:317,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:319,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:321,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:324,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:327,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:330,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:333,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:335,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:337,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:340,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:342,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:344,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:347,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:350,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:352,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:355,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:357,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:359,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:362,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:365,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:368,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:371,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:374,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:377,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:380,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:383,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:386,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:389,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:392,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:396,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:399,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:402,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:406,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:410,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:413,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:417,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:419,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:423,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:426,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:429,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:432,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:435,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:438,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:441,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:444,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:448,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:451,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:454,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:457,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:460,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:463,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:466,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:469,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:471,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:474,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:477,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:480,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:483,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:487,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:490,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:493,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:496,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:499,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:502,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:505,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:509,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:512,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:516,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:519,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:523,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:526,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:528,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:531,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:534,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:537,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:540,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:543,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:547,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:550,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:553,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:555,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:557,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:560,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:562,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:565,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:567,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:570,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:573,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:577,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:579,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:581,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:584,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:586,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:590,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:593,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:596,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:599,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 287
    argCount: 2
    argNames:
    - error_type
    - error_value
    argTypes:
    - enum pcep_error_type
    - enum pcep_error_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 606
    functionName: pcep_error_value_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - TUP
    linkageType: ''
    returnType: char
    signature: "char *pcep_error_value_name(enum pcep_error_type error_type,\n\t\t\t\t
      \ enum pcep_error_value error_value)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:638,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 1
    argNames:
    - pcep_message_type
    argTypes:
    - enum pcep_message_types
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 637
        line_start: 637
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 639
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 639
    functionName: pcep_message_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcep_message_type_name(enum pcep_message_types pcep_message_type)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 1
    argNames:
    - obj_class
    argTypes:
    - enum pcep_object_classes
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 693
        line_start: 693
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 695
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 695
    functionName: pcep_object_class_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcep_object_class_name(enum pcep_object_classes obj_class)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:700,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:701,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:703,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:705,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:707,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:709,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:711,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:713,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:715,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:717,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:719,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:721,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:723,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:725,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:727,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:729,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:731,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:733,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:735,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:737,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:739,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:741,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:743,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:745,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:747,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 53
    argCount: 2
    argNames:
    - obj_class
    - obj_type
    argTypes:
    - enum pcep_object_classes
    - enum pcep_object_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 752
    functionName: pcep_object_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - TUP
    linkageType: ''
    returnType: char
    signature: "char *pcep_object_type_name(enum pcep_object_classes obj_class,\n\t\t\t\t
      \ enum pcep_object_types obj_type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum pcep_lsp_operational_status
    assertStmts:
    - condition: (!"Reached end of function where we do not expect to")
      pos:
        line_end: 768
        line_start: 768
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 770
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 770
    functionName: pcep_lsp_status_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcep_lsp_status_name(enum pcep_lsp_operational_status status)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 46
    argCount: 1
    argNames:
    - tlv_type
    argTypes:
    - enum pcep_object_tlv_types
    assertStmts:
    - condition: (!"Reached end of function where we do not expect to")
      pos:
        line_end: 819
        line_start: 819
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 821
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 821
    functionName: pcep_tlv_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcep_tlv_type_name(enum pcep_object_tlv_types tlv_type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:843,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - ro_type
    argTypes:
    - enum pcep_ro_subobj_types
    assertStmts:
    - condition: (!"Reached end of function where we do not expect to")
      pos:
        line_end: 842
        line_start: 842
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 844
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 844
    functionName: pcep_ro_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcep_ro_type_name(enum pcep_ro_subobj_types ro_type)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - nai_type
    argTypes:
    - enum pcep_sr_subobj_nai
    assertStmts:
    - condition: (!"Reached end of function where we do not expect to")
      pos:
        line_end: 866
        line_start: 866
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 868
      start: 846
    functionDepth: 1
    functionLinenumber: 846
    functionLinenumberEnd: 868
    functionName: pcep_nai_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *pcep_nai_type_name(enum pcep_sr_subobj_nai nai_type)
  - BBCount: 23
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum pcep_metric_types
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 918
    functionName: pcep_metric_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pcep_metric_type_name(enum pcep_metric_types type)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum pcep_nopath_tlv_err_codes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 934
    functionName: pcep_nopath_tlv_err_code_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pcep_nopath_tlv_err_code_name(enum pcep_nopath_tlv_err_codes
      type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT_INIT
      Src: /src/frr/pathd/path_pcep_debug.c:939,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_debug.c:941,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:943,1
    - Dst: objfun_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:943,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:945,1
    - Dst: objfun_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:945,1
    - Dst: PATHD_FORMAT_FINI
      Src: /src/frr/pathd/path_pcep_debug.c:949,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 950
    functionName: format_objfun_set
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - objfun_type_name
    - PATHD_FORMAT
    - PATHD_FORMAT_FINI
    - PATHD_FORMAT_INIT
    - CHECK_FLAG
    linkageType: ''
    returnType: char
    signature: char *format_objfun_set(uint32_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT_INIT
      Src: /src/frr/pathd/path_pcep_debug.c:955,1
    - Dst: _format_pcc_opts
      Src: /src/frr/pathd/path_pcep_debug.c:956,1
    - Dst: PATHD_FORMAT_FINI
      Src: /src/frr/pathd/path_pcep_debug.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - opts
    argTypes:
    - struct pcc_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 953
    functionDepth: 1
    functionLinenumber: 953
    functionLinenumberEnd: 958
    functionName: format_pcc_opts
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT_FINI
    - _format_pcc_opts
    - PATHD_FORMAT_INIT
    linkageType: ''
    returnType: char
    signature: char *format_pcc_opts(struct pcc_opts *opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT_INIT
      Src: /src/frr/pathd/path_pcep_debug.c:962,1
    - Dst: _format_pcc_state
      Src: /src/frr/pathd/path_pcep_debug.c:963,1
    - Dst: PATHD_FORMAT_FINI
      Src: /src/frr/pathd/path_pcep_debug.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 960
    functionDepth: 1
    functionLinenumber: 960
    functionLinenumberEnd: 965
    functionName: format_pcc_state
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT_FINI
    - _format_pcc_state
    - PATHD_FORMAT_INIT
    linkageType: ''
    returnType: char
    signature: char *format_pcc_state(struct pcc_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT_INIT
      Src: /src/frr/pathd/path_pcep_debug.c:969,1
    - Dst: _format_ctrl_state
      Src: /src/frr/pathd/path_pcep_debug.c:970,1
    - Dst: PATHD_FORMAT_FINI
      Src: /src/frr/pathd/path_pcep_debug.c:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct ctrl_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 972
    functionName: format_ctrl_state
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - _format_ctrl_state
    - PATHD_FORMAT_FINI
    - PATHD_FORMAT_INIT
    linkageType: ''
    returnType: char
    signature: char *format_ctrl_state(struct ctrl_state *state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT_INIT
      Src: /src/frr/pathd/path_pcep_debug.c:976,1
    - Dst: _format_path
      Src: /src/frr/pathd/path_pcep_debug.c:977,1
    - Dst: PATHD_FORMAT_FINI
      Src: /src/frr/pathd/path_pcep_debug.c:978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 974
    functionDepth: 1
    functionLinenumber: 974
    functionLinenumberEnd: 979
    functionName: format_path
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT_FINI
    - PATHD_FORMAT_INIT
    - _format_path
    linkageType: ''
    returnType: char
    signature: char *format_path(struct path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT_INIT
      Src: /src/frr/pathd/path_pcep_debug.c:983,1
    - Dst: _format_pcep_event
      Src: /src/frr/pathd/path_pcep_debug.c:984,1
    - Dst: PATHD_FORMAT_FINI
      Src: /src/frr/pathd/path_pcep_debug.c:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - event
    argTypes:
    - pcep_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 986
    functionName: format_pcep_event
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT_FINI
    - _format_pcep_event
    - PATHD_FORMAT_INIT
    linkageType: ''
    returnType: char
    signature: char *format_pcep_event(pcep_event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT_INIT
      Src: /src/frr/pathd/path_pcep_debug.c:990,1
    - Dst: _format_pcep_message
      Src: /src/frr/pathd/path_pcep_debug.c:991,1
    - Dst: PATHD_FORMAT_FINI
      Src: /src/frr/pathd/path_pcep_debug.c:992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 988
    functionDepth: 1
    functionLinenumber: 988
    functionLinenumberEnd: 993
    functionName: format_pcep_message
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT_FINI
    - _format_pcep_message
    - PATHD_FORMAT_INIT
    linkageType: ''
    returnType: char
    signature: char *format_pcep_message(struct pcep_message *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:998,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1001,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_debug.c:1002,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1003,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1006,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_debug.c:1008,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1009,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1012,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1014,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1015,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - ps
    - opts
    argTypes:
    - int
    - struct pcc_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1017
    functionName: _format_pcc_opts
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - IS_IPADDR_V6
    - IS_IPADDR_V4
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcc_opts(int ps, struct pcc_opts *opts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1022,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1025,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_debug.c:1026,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1027,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1030,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1033,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ps
    - opts
    argTypes:
    - int
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1019
    functionDepth: 1
    functionLinenumber: 1019
    functionLinenumberEnd: 1035
    functionName: _format_pce_opts
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - IS_IPADDR_V6
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pce_opts(int ps, struct pce_opts *opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1040,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ps
    - caps
    argTypes:
    - int
    - struct pcep_caps*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1037
    functionDepth: 1
    functionLinenumber: 1037
    functionLinenumberEnd: 1042
    functionName: _format_pcc_caps
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 0
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcc_caps(int ps, struct pcep_caps *caps)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1047,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1050,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1051,1
    - Dst: pcc_status_name
      Src: /src/frr/pathd/path_pcep_debug.c:1052,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1053,1
    - Dst: _format_pcc_opts
      Src: /src/frr/pathd/path_pcep_debug.c:1054,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1055,1
    - Dst: _format_pce_opts
      Src: /src/frr/pathd/path_pcep_debug.c:1056,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1058,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1060,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1063,1
    - Dst: _format_pcc_caps
      Src: /src/frr/pathd/path_pcep_debug.c:1064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ps
    - state
    argTypes:
    - int
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1066
    functionName: _format_pcc_state
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - _format_pcc_opts
    - PATHD_FORMAT
    - _format_pce_opts
    - pcc_status_name
    - _format_pcc_caps
    linkageType: ''
    returnType: void
    signature: void _format_pcc_state(int ps, struct pcc_state *state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1071,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1076,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1078,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1080,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1084,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1086,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1089,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1090,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1093,1
    - Dst: _format_pcc_state
      Src: /src/frr/pathd/path_pcep_debug.c:1094,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - ps
    - state
    argTypes:
    - int
    - struct ctrl_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1068
    functionDepth: 3
    functionLinenumber: 1068
    functionLinenumberEnd: 1098
    functionName: _format_ctrl_state
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    - _format_pcc_state
    linkageType: ''
    returnType: void
    signature: void _format_ctrl_state(int ps, struct ctrl_state *state)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1103,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1107,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1108,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1109,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1112,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1116,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1120,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1123,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1127,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1130,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1133,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1136,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1139,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1142,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1144,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1145,1
    - Dst: srte_protocol_origin_name
      Src: /src/frr/pathd/path_pcep_debug.c:1146,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1148,1
    - Dst: srte_protocol_origin_name
      Src: /src/frr/pathd/path_pcep_debug.c:1149,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1152,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1155,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1157,1
    - Dst: srte_candidate_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1158,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1159,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1161,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1163,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1165,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1166,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1167,1
    - Dst: pcep_lsp_status_name
      Src: /src/frr/pathd/path_pcep_debug.c:1168,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1169,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1170,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1171,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1173,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1175,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1177,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1179,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1182,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1184,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1187,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1190,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1192,1
    - Dst: objfun_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1193,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1196,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1199,1
    - Dst: objfun_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1200,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1202,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1205,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1208,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1211,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1217,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1219,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1222,1
    - Dst: _format_path_hop
      Src: /src/frr/pathd/path_pcep_debug.c:1223,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1227,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1229,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1232,1
    - Dst: _format_path_metric
      Src: /src/frr/pathd/path_pcep_debug.c:1233,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 97
    argCount: 2
    argNames:
    - ps
    - path
    argTypes:
    - int
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1100
    functionDepth: 2
    functionLinenumber: 1100
    functionLinenumberEnd: 1237
    functionName: _format_path
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - objfun_type_name
    - PATHD_FORMAT
    - srte_protocol_origin_name
    - pcep_lsp_status_name
    - srte_candidate_type_name
    - _format_path_metric
    - _format_path_hop
    linkageType: ''
    returnType: void
    signature: void _format_path(int ps, struct path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1241,1
    - Dst: pcep_metric_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1241,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1243,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1244,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1245,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ps
    - metric
    argTypes:
    - int
    - struct path_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1239
    functionDepth: 1
    functionLinenumber: 1239
    functionLinenumberEnd: 1247
    functionName: _format_path_metric
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - pcep_metric_type_name
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_path_metric(int ps, struct path_metric *metric)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1251,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1252,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1255,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1257,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1259,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1262,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1264,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1266,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1270,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1274,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1276,1
    - Dst: pcep_nai_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1277,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1280,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1284,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1288,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1293,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1298,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1307,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 2
    argNames:
    - ps
    - hop
    argTypes:
    - int
    - struct path_hop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1249
    functionDepth: 2
    functionLinenumber: 1249
    functionLinenumberEnd: 1311
    functionName: _format_path_hop
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - pcep_nai_type_name
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_path_hop(int ps, struct path_hop *hop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1316,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1319,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1320,1
    - Dst: pcep_event_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1321,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1322,1
    - Dst: ctime
      Src: /src/frr/pathd/path_pcep_debug.c:1323,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1325,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1327,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1330,1
    - Dst: _format_pcep_message
      Src: /src/frr/pathd/path_pcep_debug.c:1331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ps
    - event
    argTypes:
    - int
    - pcep_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1313
    functionDepth: 2
    functionLinenumber: 1313
    functionLinenumberEnd: 1333
    functionName: _format_pcep_event
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - _format_pcep_message
    - PATHD_FORMAT
    - ctime
    - pcep_event_type_name
    linkageType: ''
    returnType: void
    signature: void _format_pcep_event(int ps, pcep_event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1338,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1341,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1342,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1344,1
    - Dst: pcep_message_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1345,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1347,1
    - Dst: _format_pcep_objects
      Src: /src/frr/pathd/path_pcep_debug.c:1348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ps
    - msg
    argTypes:
    - int
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1335
    functionDepth: 2
    functionLinenumber: 1335
    functionLinenumberEnd: 1350
    functionName: _format_pcep_message
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 2
    functionsReached:
    - _format_pcep_objects
    - PATHD_FORMAT
    - pcep_message_type_name
    linkageType: ''
    returnType: void
    signature: void _format_pcep_message(int ps, struct pcep_message *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1355,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1362,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1366,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1371,1
    - Dst: _format_pcep_object
      Src: /src/frr/pathd/path_pcep_debug.c:1372,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ps
    - objs
    argTypes:
    - int
    - double_linked_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1352
    functionDepth: 1
    functionLinenumber: 1352
    functionLinenumberEnd: 1375
    functionName: _format_pcep_objects
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    - _format_pcep_object
    linkageType: ''
    returnType: void
    signature: void _format_pcep_objects(int ps, double_linked_list *objs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1380,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1382,1
    - Dst: pcep_object_class_name
      Src: /src/frr/pathd/path_pcep_debug.c:1383,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1385,1
    - Dst: pcep_object_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1386,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1389,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1390,1
    - Dst: _format_pcep_object_details
      Src: /src/frr/pathd/path_pcep_debug.c:1391,1
    - Dst: _format_pcep_object_tlvs
      Src: /src/frr/pathd/path_pcep_debug.c:1392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1377
    functionDepth: 2
    functionLinenumber: 1377
    functionLinenumberEnd: 1394
    functionName: _format_pcep_object
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    - pcep_object_type_name
    - pcep_object_class_name
    - _format_pcep_object_tlvs
    - _format_pcep_object_details
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object(int ps, struct pcep_object_header *obj)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1398,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1399,1
    - Dst: _format_pcep_object_error
      Src: /src/frr/pathd/path_pcep_debug.c:1400,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1402,1
    - Dst: _format_pcep_object_open
      Src: /src/frr/pathd/path_pcep_debug.c:1403,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1405,1
    - Dst: _format_pcep_object_rp
      Src: /src/frr/pathd/path_pcep_debug.c:1406,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1408,1
    - Dst: _format_pcep_object_srp
      Src: /src/frr/pathd/path_pcep_debug.c:1409,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1411,1
    - Dst: _format_pcep_object_lsp
      Src: /src/frr/pathd/path_pcep_debug.c:1412,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1414,1
    - Dst: _format_pcep_object_lspa
      Src: /src/frr/pathd/path_pcep_debug.c:1415,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1417,1
    - Dst: _format_pcep_object_ipv4_endpoint
      Src: /src/frr/pathd/path_pcep_debug.c:1418,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1421,1
    - Dst: _format_pcep_object_ro
      Src: /src/frr/pathd/path_pcep_debug.c:1422,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1424,1
    - Dst: _format_pcep_object_metric
      Src: /src/frr/pathd/path_pcep_debug.c:1425,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1428,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1429,1
    - Dst: _format_pcep_object_bandwidth
      Src: /src/frr/pathd/path_pcep_debug.c:1430,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1433,1
    - Dst: _format_pcep_object_nopath
      Src: /src/frr/pathd/path_pcep_debug.c:1434,1
    - Dst: TUP
      Src: /src/frr/pathd/path_pcep_debug.c:1437,1
    - Dst: _format_pcep_object_objfun
      Src: /src/frr/pathd/path_pcep_debug.c:1438,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1442,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1445
    functionName: _format_pcep_object_details
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - _format_pcep_object_ipv4_endpoint
    - _format_pcep_object_ro
    - _format_pcep_object_objfun
    - _format_pcep_object_lsp
    - _format_pcep_object_nopath
    - PATHD_FORMAT
    - _format_pcep_object_rp
    - TUP
    - _format_pcep_object_error
    - _format_pcep_object_open
    - _format_pcep_object_bandwidth
    - _format_pcep_object_metric
    - _format_pcep_object_lspa
    - _format_pcep_object_srp
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_details(int ps, struct pcep_object_header
      *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1449,1
    - Dst: pcep_error_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1450,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1451,1
    - Dst: pcep_error_value_name
      Src: /src/frr/pathd/path_pcep_debug.c:1452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1447
    functionDepth: 2
    functionLinenumber: 1447
    functionLinenumberEnd: 1454
    functionName: _format_pcep_object_error
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - pcep_error_value_name
    - PATHD_FORMAT
    - pcep_error_type_name
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_error(int ps, struct pcep_object_error *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1459,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1460,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1461,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_open*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1457
    functionDepth: 1
    functionLinenumber: 1457
    functionLinenumberEnd: 1463
    functionName: _format_pcep_object_open
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_open(int ps, struct pcep_object_open *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1467,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1468,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1470,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1472,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1473,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_rp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1465
    functionDepth: 1
    functionLinenumber: 1465
    functionLinenumberEnd: 1475
    functionName: _format_pcep_object_rp
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_rp(int ps, struct pcep_object_rp *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1480,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_srp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1478
    functionDepth: 1
    functionLinenumber: 1478
    functionLinenumberEnd: 1482
    functionName: _format_pcep_object_srp
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_srp(int ps, struct pcep_object_srp *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1486,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1487,1
    - Dst: pcep_lsp_status_name
      Src: /src/frr/pathd/path_pcep_debug.c:1488,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1489,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1490,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1491,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1492,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1484
    functionDepth: 2
    functionLinenumber: 1484
    functionLinenumberEnd: 1494
    functionName: _format_pcep_object_lsp
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    - pcep_lsp_status_name
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_lsp(int ps, struct pcep_object_lsp *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1498,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1500,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1502,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1504,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1505,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_lspa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1496
    functionDepth: 1
    functionLinenumber: 1496
    functionLinenumberEnd: 1509
    functionName: _format_pcep_object_lspa
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_lspa(int ps, struct pcep_object_lspa *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1514,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_endpoints_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1511
    functionDepth: 1
    functionLinenumber: 1511
    functionLinenumberEnd: 1516
    functionName: _format_pcep_object_ipv4_endpoint
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: "void _format_pcep_object_ipv4_endpoint(int ps,\n\t\t\t\t       struct
      pcep_object_endpoints_ipv4 *obj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1520,1
    - Dst: pcep_metric_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1521,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1522,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1523,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1518
    functionDepth: 1
    functionLinenumber: 1518
    functionLinenumberEnd: 1525
    functionName: _format_pcep_object_metric
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - pcep_metric_type_name
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_metric(int ps, struct pcep_object_metric *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_bandwidth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1530
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1530
    functionName: _format_pcep_object_bandwidth
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_bandwidth(int ps, struct pcep_object_bandwidth
      *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1534,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1535,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1536,1
    - Dst: pcep_nopath_tlv_err_code_name
      Src: /src/frr/pathd/path_pcep_debug.c:1537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_nopath*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1532
    functionDepth: 1
    functionLinenumber: 1532
    functionLinenumberEnd: 1539
    functionName: _format_pcep_object_nopath
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - pcep_nopath_tlv_err_code_name
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_nopath(int ps, struct pcep_object_nopath *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1544,1
    - Dst: objfun_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_objective_function*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1541
    functionDepth: 1
    functionLinenumber: 1541
    functionLinenumberEnd: 1546
    functionName: _format_pcep_object_objfun
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - objfun_type_name
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: "void _format_pcep_object_objfun(int ps,\n\t\t\t\tstruct pcep_object_objective_function
      *obj)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1558,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1562,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1567,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1569,1
    - Dst: pcep_ro_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1570,1
    - Dst: _format_pcep_object_ro_details
      Src: /src/frr/pathd/path_pcep_debug.c:1572,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_ro*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1548
    functionDepth: 2
    functionLinenumber: 1548
    functionLinenumberEnd: 1574
    functionName: _format_pcep_object_ro
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - pcep_ro_type_name
    - _format_pcep_object_ro_details
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_ro(int ps, struct pcep_object_ro *obj)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _format_pcep_object_ro_ipv4
      Src: /src/frr/pathd/path_pcep_debug.c:1580,1
    - Dst: _format_pcep_object_ro_sr
      Src: /src/frr/pathd/path_pcep_debug.c:1584,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1591,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ps
    - ro
    argTypes:
    - int
    - struct pcep_object_ro_subobj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1576
    functionDepth: 1
    functionLinenumber: 1576
    functionLinenumberEnd: 1594
    functionName: _format_pcep_object_ro_details
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - _format_pcep_object_ro_sr
    - PATHD_FORMAT
    - _format_pcep_object_ro_ipv4
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_ro_details(int ps, struct pcep_object_ro_subobj
      *ro)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1598,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1599,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_ro_subobj_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1596
    functionDepth: 1
    functionLinenumber: 1596
    functionLinenumberEnd: 1602
    functionName: _format_pcep_object_ro_ipv4
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_ro_ipv4(int ps, struct pcep_ro_subobj_ipv4
      *obj)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1606,1
    - Dst: pcep_nai_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1607,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1608,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1609,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1610,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1611,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1614,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1616,1
    - Dst: GET_SR_ERO_SID_LABEL
      Src: /src/frr/pathd/path_pcep_debug.c:1617,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1619,1
    - Dst: GET_SR_ERO_SID_TC
      Src: /src/frr/pathd/path_pcep_debug.c:1620,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1621,1
    - Dst: GET_SR_ERO_SID_S
      Src: /src/frr/pathd/path_pcep_debug.c:1622,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1623,1
    - Dst: GET_SR_ERO_SID_TTL
      Src: /src/frr/pathd/path_pcep_debug.c:1624,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1633,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1635,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1636,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1640,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1644,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1647,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1648,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1651,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1655,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1656,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1659,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1665,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1666,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1669,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1670,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1672,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_debug.c:1673,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1675,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1681,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 66
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_ro_subobj_sr*
    assertStmts:
    - condition: (obj->nai_list != NULL)
      pos:
        line_end: 1632
        line_start: 1632
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->next_node != NULL)
      pos:
        line_end: 1654
        line_start: 1654
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1665
        line_start: 1665
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n != NULL)
      pos:
        line_end: 1668
        line_start: 1668
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->next_node != NULL)
      pos:
        line_end: 1646
        line_start: 1646
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n != NULL)
      pos:
        line_end: 1671
        line_start: 1671
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1635
        line_start: 1635
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->next_node->data != NULL)
      pos:
        line_end: 1655
        line_start: 1655
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n != NULL)
      pos:
        line_end: 1664
        line_start: 1664
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1669
        line_start: 1669
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n != NULL)
      pos:
        line_end: 1634
        line_start: 1634
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->next_node->data != NULL)
      pos:
        line_end: 1647
        line_start: 1647
        source_file: /src/frr/pathd/path_pcep_debug.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1672
        line_start: 1672
        source_file: /src/frr/pathd/path_pcep_debug.c
    constantsTouched: []
    func_position:
      end: 1685
      start: 1604
    functionDepth: 2
    functionLinenumber: 1604
    functionLinenumberEnd: 1685
    functionName: _format_pcep_object_ro_sr
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - GET_SR_ERO_SID_TTL
    - PATHD_FORMAT
    - pcep_nai_type_name
    - GET_SR_ERO_SID_TC
    - GET_SR_ERO_SID_S
    - GET_SR_ERO_SID_LABEL
    - assert
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_ro_sr(int ps, struct pcep_ro_subobj_sr *obj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1698,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1702,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1707,1
    - Dst: _format_pcep_object_tlv
      Src: /src/frr/pathd/path_pcep_debug.c:1708,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ps
    - obj
    argTypes:
    - int
    - struct pcep_object_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1687
    functionDepth: 1
    functionLinenumber: 1687
    functionLinenumberEnd: 1710
    functionName: _format_pcep_object_tlvs
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - _format_pcep_object_tlv
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_tlvs(int ps, struct pcep_object_header *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1714,1
    - Dst: pcep_tlv_type_name
      Src: /src/frr/pathd/path_pcep_debug.c:1714,1
    - Dst: _format_pcep_object_tlv_details
      Src: /src/frr/pathd/path_pcep_debug.c:1716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ps
    - tlv_header
    argTypes:
    - int
    - struct pcep_object_tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1712
    functionDepth: 2
    functionLinenumber: 1712
    functionLinenumberEnd: 1717
    functionName: _format_pcep_object_tlv
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - pcep_tlv_type_name
    - PATHD_FORMAT
    - _format_pcep_object_tlv_details
    linkageType: ''
    returnType: void
    signature: void _format_pcep_object_tlv(int ps, struct pcep_object_tlv_header
      *tlv_header)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: _format_pcep_object_tlv_symbolic_path_name
      Src: /src/frr/pathd/path_pcep_debug.c:1724,1
    - Dst: _format_pcep_object_tlv_stateful_pce_capability
      Src: /src/frr/pathd/path_pcep_debug.c:1729,1
    - Dst: _format_pcep_object_tlv_sr_pce_capability
      Src: /src/frr/pathd/path_pcep_debug.c:1734,1
    - Dst: _format_pcep_object_tlv_path_setup_type
      Src: /src/frr/pathd/path_pcep_debug.c:1739,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1760,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - ps
    - tlv_header
    argTypes:
    - int
    - struct pcep_object_tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1719
    functionDepth: 1
    functionLinenumber: 1719
    functionLinenumberEnd: 1763
    functionName: _format_pcep_object_tlv_details
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - _format_pcep_object_tlv_symbolic_path_name
    - PATHD_FORMAT
    - _format_pcep_object_tlv_stateful_pce_capability
    - _format_pcep_object_tlv_path_setup_type
    - _format_pcep_object_tlv_sr_pce_capability
    linkageType: ''
    returnType: void
    signature: "void _format_pcep_object_tlv_details(int ps,\n\t\t\t\t     struct
      pcep_object_tlv_header *tlv_header)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ps
    - tlv
    argTypes:
    - int
    - struct pcep_object_tlv_symbolic_path_name*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1765
    functionDepth: 1
    functionLinenumber: 1765
    functionLinenumberEnd: 1770
    functionName: _format_pcep_object_tlv_symbolic_path_name
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: "void _format_pcep_object_tlv_symbolic_path_name(\n\tint ps, struct
      pcep_object_tlv_symbolic_path_name *tlv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1775,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1777,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1779,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1781,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1783,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ps
    - tlv
    argTypes:
    - int
    - struct pcep_object_tlv_stateful_pce_capability*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1787
    functionName: _format_pcep_object_tlv_stateful_pce_capability
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: "void _format_pcep_object_tlv_stateful_pce_capability(\n\tint ps, struct
      pcep_object_tlv_stateful_pce_capability *tlv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1793,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1794,1
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ps
    - tlv
    argTypes:
    - int
    - struct pcep_object_tlv_sr_pce_capability*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1789
    functionDepth: 1
    functionLinenumber: 1789
    functionLinenumberEnd: 1796
    functionName: _format_pcep_object_tlv_sr_pce_capability
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: "void _format_pcep_object_tlv_sr_pce_capability(\n\tint ps, struct
      pcep_object_tlv_sr_pce_capability *tlv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATHD_FORMAT
      Src: /src/frr/pathd/path_pcep_debug.c:1801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ps
    - tlv
    argTypes:
    - int
    - struct pcep_object_tlv_path_setup_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1798
    functionDepth: 1
    functionLinenumber: 1798
    functionLinenumberEnd: 1802
    functionName: _format_pcep_object_tlv_path_setup_type
    functionSourceFile: /src/frr/pathd/path_pcep_debug.c
    functionUses: 1
    functionsReached:
    - PATHD_FORMAT
    linkageType: ''
    returnType: void
    signature: "void _format_pcep_object_tlv_path_setup_type(\n\tint ps, struct pcep_object_tlv_path_setup_type
      *tlv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_register_vty
      Src: /src/frr/pathd/path_ted.c:49,1
    - Dst: path_ted_segment_list_refresh
      Src: /src/frr/pathd/path_ted.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: path_ted_init
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - path_ted_register_vty
    - path_ted_segment_list_refresh
    linkageType: ''
    returnType: void
    signature: void path_ted_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/path_ted.c:55,1
    - Dst: path_ted_unregister_vty
      Src: /src/frr/pathd/path_ted.c:56,1
    - Dst: path_ted_stop_importing_igp
      Src: /src/frr/pathd/path_ted.c:57,1
    - Dst: ls_ted_del_all
      Src: /src/frr/pathd/path_ted.c:58,1
    - Dst: path_ted_timer_sync_cancel
      Src: /src/frr/pathd/path_ted.c:59,1
    - Dst: path_ted_timer_refresh_cancel
      Src: /src/frr/pathd/path_ted.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 53
    functionDepth: 5
    functionLinenumber: 53
    functionLinenumberEnd: 62
    functionName: path_ted_teardown
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - PATH_TED_DEBUG
    - path_ted_timer_refresh_cancel
    - path_ted_timer_sync_cancel
    - ls_ted_del_all
    - path_ted_unregister_vty
    - path_ted_stop_importing_igp
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_teardown(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_ted.c:74,1
    - Dst: strcmp
      Src: /src/frr/pathd/path_ted.c:76,1
    - Dst: strcmp
      Src: /src/frr/pathd/path_ted.c:79,1
    - Dst: ls_register
      Src: /src/frr/pathd/path_ted.c:86,1
    - Dst: PATH_TED_ERROR
      Src: /src/frr/pathd/path_ted.c:87,1
    - Dst: path_ted_link_state_sync
      Src: /src/frr/pathd/path_ted.c:92,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/path_ted.c:93,1
    - Dst: PATH_TED_IGP_PRINT
      Src: /src/frr/pathd/path_ted.c:95,1
    - Dst: PATH_TED_WARN
      Src: /src/frr/pathd/path_ted.c:97,1
    - Dst: PATH_TED_IGP_PRINT
      Src: /src/frr/pathd/path_ted.c:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - daemon_str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 104
    functionName: path_ted_start_importing_igp
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - PATH_TED_WARN
    - PATH_TED_DEBUG
    - strcmp
    - PATH_TED_ERROR
    - PATH_TED_IGP_PRINT
    - ls_register
    - path_ted_link_state_sync
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_start_importing_igp(const char *daemon_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ls_unregister
      Src: /src/frr/pathd/path_ted.c:117,1
    - Dst: PATH_TED_ERROR
      Src: /src/frr/pathd/path_ted.c:118,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/path_ted.c:124,1
    - Dst: path_ted_timer_sync_cancel
      Src: /src/frr/pathd/path_ted.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 130
    functionName: path_ted_stop_importing_igp
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 1
    functionsReached:
    - path_ted_timer_sync_cancel
    - PATH_TED_DEBUG
    - ls_unregister
    - PATH_TED_ERROR
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_stop_importing_igp(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PATH_TED_WARN
      Src: /src/frr/pathd/path_ted.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: path_ted_is_initialized
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - PATH_TED_WARN
    linkageType: ''
    returnType: bool
    signature: bool path_ted_is_initialized(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_ted_new
      Src: /src/frr/pathd/path_ted.c:156,1
    - Dst: PATH_TED_ERROR
      Src: /src/frr/pathd/path_ted.c:159,1
    - Dst: PATH_TED_INFO
      Src: /src/frr/pathd/path_ted.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 167
    functionName: path_ted_create_ted
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - PATH_TED_INFO
    - ls_ted_new
    - PATH_TED_ERROR
    linkageType: ''
    returnType: struct ls_ted
    signature: struct ls_ted *path_ted_create_ted(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/path_ted.c:171,1
    - Dst: PATH_TED_ERROR
      Src: /src/frr/pathd/path_ted.c:175,1
    - Dst: path_ted_get_current_igp
      Src: /src/frr/pathd/path_ted.c:180,1
    - Dst: ls_msg2vertex
      Src: /src/frr/pathd/path_ted.c:185,1
    - Dst: ls_msg2edge
      Src: /src/frr/pathd/path_ted.c:189,1
    - Dst: ls_msg2subnet
      Src: /src/frr/pathd/path_ted.c:193,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/path_ted.c:197,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct ls_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 169
    functionDepth: 5
    functionLinenumber: 169
    functionLinenumberEnd: 203
    functionName: path_ted_rcvd_message
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - PATH_TED_DEBUG
    - ls_msg2subnet
    - path_ted_is_initialized
    - PATH_TED_ERROR
    - path_ted_get_current_igp
    - ls_msg2vertex
    - ls_msg2edge
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_rcvd_message(struct ls_message *msg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/path_ted.c:211,1
    - Dst: IPV4_ADDR_COPY
      Src: /src/frr/pathd/path_ted.c:222,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/pathd/path_ted.c:223,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_ted.c:227,1
    - Dst: IPV6_ADDR_COPY
      Src: /src/frr/pathd/path_ted.c:237,1
    - Dst: ls_find_edge_by_key
      Src: /src/frr/pathd/path_ted.c:238,1
    - Dst: memcmp
      Src: /src/frr/pathd/path_ted.c:240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_ted.c:243,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 2
    argNames:
    - local
    - remote
    argTypes:
    - struct ipaddr*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 256
    functionName: path_ted_query_type_f
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - path_ted_is_initialized
    - memcmp
    - ls_find_edge_by_key
    - IPV4_ADDR_COPY
    - IPV6_ADDR_COPY
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_query_type_f(struct ipaddr *local, struct ipaddr
      *remote)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/path_ted.c:263,1
    - Dst: ls_find_subnet
      Src: /src/frr/pathd/path_ted.c:272,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_ted.c:274,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - prefix
    - algo
    argTypes:
    - struct prefix*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 284
    functionName: path_ted_query_type_c
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - path_ted_is_initialized
    - ls_find_subnet
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_query_type_c(struct prefix *prefix, uint8_t algo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/path_ted.c:293,1
    - Dst: ls_find_subnet
      Src: /src/frr/pathd/path_ted.c:302,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pathd/path_ted.c:307,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_ted.c:312,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 2
    argNames:
    - prefix
    - iface_id
    argTypes:
    - struct prefix*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 327
    functionName: path_ted_query_type_e
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - path_ted_is_initialized
    - CHECK_FLAG
    - ls_find_subnet
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_query_type_e(struct prefix *prefix, uint32_t iface_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pathd/path_ted.c:475,1
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/path_ted.c:476,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_ted.c:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 481
    functionName: path_ted_cli_debug_config_write
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_CHECK
    - DEBUG_MODE_CHECK
    - vty_out
    linkageType: ''
    returnType: int
    signature: int path_ted_cli_debug_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/path_ted.c:485,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_ted.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 483
    functionDepth: 2
    functionLinenumber: 483
    functionLinenumberEnd: 487
    functionName: path_ted_show_debugging
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_CHECK
    - vty_out
    linkageType: ''
    returnType: void
    signature: void path_ted_show_debugging(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pathd/path_ted.c:491,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pathd/path_ted.c:494,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/pathd/path_ted.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 498
    functionName: path_ted_cli_debug_set_all
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: int
    signature: int path_ted_cli_debug_set_all(uint32_t flags, bool set)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_ted.c:511,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_ted.c:514,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_ted.c:517,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_ted.c:520,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 507
    functionDepth: 2
    functionLinenumber: 507
    functionLinenumberEnd: 527
    functionName: path_ted_config_write
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/pathd/path_ted.c:537,1
    - Dst: install_element
      Src: /src/frr/pathd/path_ted.c:538,1
    - Dst: install_element
      Src: /src/frr/pathd/path_ted.c:539,1
    - Dst: install_element
      Src: /src/frr/pathd/path_ted.c:540,1
    - Dst: install_element
      Src: /src/frr/pathd/path_ted.c:541,1
    - Dst: install_element
      Src: /src/frr/pathd/path_ted.c:543,1
    - Dst: install_element
      Src: /src/frr/pathd/path_ted.c:544,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_ted.c:546,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_ted.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 549
    functionName: path_ted_register_vty
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 1
    functionsReached:
    - install_element
    - hook_register
    linkageType: ''
    returnType: void
    signature: void path_ted_register_vty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uninstall_element
      Src: /src/frr/pathd/path_ted.c:559,1
    - Dst: uninstall_element
      Src: /src/frr/pathd/path_ted.c:560,1
    - Dst: uninstall_element
      Src: /src/frr/pathd/path_ted.c:561,1
    - Dst: uninstall_element
      Src: /src/frr/pathd/path_ted.c:562,1
    - Dst: uninstall_element
      Src: /src/frr/pathd/path_ted.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 557
    functionDepth: 5
    functionLinenumber: 557
    functionLinenumberEnd: 564
    functionName: path_ted_unregister_vty
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 1
    functionsReached:
    - uninstall_element
    linkageType: ''
    returnType: void
    signature: void path_ted_unregister_vty(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ls_request_sync
      Src: /src/frr/pathd/path_ted.c:577,1
    - Dst: PATH_TED_ERROR
      Src: /src/frr/pathd/path_ted.c:579,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/path_ted.c:584,1
    - Dst: event_add_timer
      Src: /src/frr/pathd/path_ted.c:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 592
    functionName: path_ted_link_state_sync
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 1
    functionsReached:
    - ls_request_sync
    - event_add_timer
    - PATH_TED_DEBUG
    - PATH_TED_ERROR
    linkageType: ''
    returnType: enum zclient_send_status
    signature: enum zclient_send_status path_ted_link_state_sync(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_ted.c:604,1
    - Dst: assert
      Src: /src/frr/pathd/path_ted.c:606,1
    - Dst: path_ted_link_state_sync
      Src: /src/frr/pathd/path_ted.c:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 605
        line_start: 605
        source_file: /src/frr/pathd/path_ted.c
    constantsTouched: []
    func_position:
      end: 609
      start: 601
    functionDepth: 3
    functionLinenumber: 601
    functionLinenumberEnd: 609
    functionName: path_ted_timer_handler_sync
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - path_ted_link_state_sync
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void path_ted_timer_handler_sync(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_timer_refresh_cancel
      Src: /src/frr/pathd/path_ted.c:622,1
    - Dst: event_add_timer
      Src: /src/frr/pathd/path_ted.c:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 628
    functionName: path_ted_segment_list_refresh
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - path_ted_timer_refresh_cancel
    linkageType: ''
    returnType: int
    signature: int path_ted_segment_list_refresh(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/path_ted.c:639,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/path_ted.c:642,1
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_ted.c:644,1
    - Dst: assert
      Src: /src/frr/pathd/path_ted.c:646,1
    - Dst: srte_policy_update_ted_sid
      Src: /src/frr/pathd/path_ted.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/frr/pathd/path_ted.c
    constantsTouched: []
    func_position:
      end: 649
      start: 637
    functionDepth: 2
    functionLinenumber: 637
    functionLinenumberEnd: 649
    functionName: path_ted_timer_handler_refresh
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 0
    functionsReached:
    - srte_policy_update_ted_sid
    - PATH_TED_DEBUG
    - path_ted_is_initialized
    - EVENT_ARG
    - assert
    linkageType: ''
    returnType: void
    signature: void path_ted_timer_handler_refresh(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/pathd/path_ted.c:661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 658
    functionDepth: 5
    functionLinenumber: 658
    functionLinenumberEnd: 664
    functionName: path_ted_timer_sync_cancel
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 2
    functionsReached:
    - event_cancel
    linkageType: ''
    returnType: void
    signature: void path_ted_timer_sync_cancel(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/pathd/path_ted.c:676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 673
    functionDepth: 5
    functionLinenumber: 673
    functionLinenumberEnd: 679
    functionName: path_ted_timer_refresh_cancel
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 2
    functionsReached:
    - event_cancel
    linkageType: ''
    returnType: void
    signature: void path_ted_timer_refresh_cancel(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PATH_TED_ERROR
      Src: /src/frr/pathd/path_ted.c:694,1
    - Dst: PATH_TED_IGP_PRINT
      Src: /src/frr/pathd/path_ted.c:697,1
    - Dst: LS_IGP_PRINT
      Src: /src/frr/pathd/path_ted.c:698,1
    - Dst: PATH_TED_ERROR
      Src: /src/frr/pathd/path_ted.c:704,1
    - Dst: PATH_TED_IGP_PRINT
      Src: /src/frr/pathd/path_ted.c:707,1
    - Dst: LS_IGP_PRINT
      Src: /src/frr/pathd/path_ted.c:708,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - igp
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 716
    functionName: path_ted_get_current_igp
    functionSourceFile: /src/frr/pathd/path_ted.c
    functionUses: 1
    functionsReached:
    - PATH_TED_IGP_PRINT
    - LS_IGP_PRINT
    - PATH_TED_ERROR
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t path_ted_get_current_igp(uint32_t igp)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - origin
    argTypes:
    - enum srte_protocol_origin
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 40
    functionName: srte_protocol_origin_name
    functionSourceFile: /src/frr/pathd/path_debug.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *srte_protocol_origin_name(enum srte_protocol_origin origin)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum srte_candidate_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 60
    functionName: srte_candidate_type_name
    functionSourceFile: /src/frr/pathd/path_debug.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *srte_candidate_type_name(enum srte_candidate_type type)
  - BBCount: 20
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 41
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum objfun_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 110
    functionName: objfun_type_name
    functionSourceFile: /src/frr/pathd/path_debug.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *objfun_type_name(enum objfun_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/pathd/path_errors.c:125,1
    - Dst: log_ref_add
      Src: /src/frr/pathd/path_errors.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: path_error_init
    functionSourceFile: /src/frr/pathd/path_errors.c
    functionUses: 0
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void path_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: PCEP_DEBUG
    functionSourceFile: /src/frr/pathd/path_pcep.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PCEP_DEBUG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: PCEP_DEBUG_PATH
    functionSourceFile: /src/frr/pathd/path_pcep.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PCEP_DEBUG_PATH(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: PCEP_DEBUG_PCEP
    functionSourceFile: /src/frr/pathd/path_pcep.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PCEP_DEBUG_PCEP(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - priority
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 71
    functionName: PCEP_DEBUG_PCEPLIB
    functionSourceFile: /src/frr/pathd/path_pcep.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PCEP_DEBUG_PCEPLIB(priority, fmt, ...)
  - 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: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: TUP
    functionSourceFile: /src/frr/pathd/path_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TUP(A, B)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: PATHD_FORMAT_INIT
    functionSourceFile: /src/frr/pathd/path_debug.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATHD_FORMAT_INIT()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 23
    functionName: PATHD_FORMAT
    functionSourceFile: /src/frr/pathd/path_debug.h
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATHD_FORMAT(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: PATHD_FORMAT_FINI
    functionSourceFile: /src/frr/pathd/path_debug.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATHD_FORMAT_FINI()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/pathd/path_nb_state.c:28,1
    - Dst: RB_NEXT
      Src: /src/frr/pathd/path_nb_state.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 33
    functionName: pathd_srte_segment_list_get_next
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    - RB_NEXT
    linkageType: ''
    returnType: void
    signature: void *pathd_srte_segment_list_get_next(struct nb_cb_get_next_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pathd/path_nb_state.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: pathd_srte_segment_list_get_keys
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pathd_srte_segment_list_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srte_segment_list_find
      Src: /src/frr/pathd/path_nb_state.c:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: pathd_srte_segment_list_lookup_entry
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - srte_segment_list_find
    linkageType: ''
    returnType: void
    signature: 'void *

      pathd_srte_segment_list_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/pathd/path_nb_state.c:61,1
    - Dst: RB_NEXT
      Src: /src/frr/pathd/path_nb_state.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 66
    functionName: pathd_srte_policy_get_next
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    - RB_NEXT
    linkageType: ''
    returnType: void
    signature: void *pathd_srte_policy_get_next(struct nb_cb_get_next_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pathd/path_nb_state.c:74,1
    - Dst: ipaddr2str
      Src: /src/frr/pathd/path_nb_state.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: pathd_srte_policy_get_keys
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - ipaddr2str
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_get_keys(struct nb_cb_get_keys_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_str2uint32
      Src: /src/frr/pathd/path_nb_state.c:87,1
    - Dst: yang_str2ip
      Src: /src/frr/pathd/path_nb_state.c:88,1
    - Dst: srte_policy_find
      Src: /src/frr/pathd/path_nb_state.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 91
    functionName: pathd_srte_policy_lookup_entry
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_str2uint32
    - srte_policy_find
    - yang_str2ip
    linkageType: ''
    returnType: void
    signature: void *pathd_srte_policy_lookup_entry(struct nb_cb_lookup_entry_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_bool
      Src: /src/frr/pathd/path_nb_state.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 3
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: pathd_srte_policy_is_operational_get_elem
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_bool
    linkageType: ''
    returnType: struct yang_data
    signature: 'struct yang_data *

      pathd_srte_policy_is_operational_get_elem(struct nb_cb_get_elem_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/pathd/path_nb_state.c:121,1
    - Dst: RB_NEXT
      Src: /src/frr/pathd/path_nb_state.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 126
    functionName: pathd_srte_policy_candidate_path_get_next
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    - RB_NEXT
    linkageType: ''
    returnType: void
    signature: 'void *

      pathd_srte_policy_candidate_path_get_next(struct nb_cb_get_next_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pathd/path_nb_state.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: pathd_srte_policy_candidate_path_get_keys
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_candidate_path_get_keys(struct nb_cb_get_keys_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_str2uint32
      Src: /src/frr/pathd/path_nb_state.c:147,1
    - Dst: srte_candidate_find
      Src: /src/frr/pathd/path_nb_state.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 150
    functionName: pathd_srte_policy_candidate_path_lookup_entry
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_str2uint32
    - srte_candidate_find
    linkageType: ''
    returnType: void
    signature: "void *pathd_srte_policy_candidate_path_lookup_entry(\n\tstruct nb_cb_lookup_entry_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_bool
      Src: /src/frr/pathd/path_nb_state.c:162,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_nb_state.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: pathd_srte_policy_candidate_path_is_best_candidate_path_get_elem
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - yang_data_new_bool
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\npathd_srte_policy_candidate_path_is_best_candidate_path_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/pathd/path_nb_state.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 176
    functionName: pathd_srte_policy_candidate_path_discriminator_get_elem
    functionSourceFile: /src/frr/pathd/path_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *pathd_srte_policy_candidate_path_discriminator_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:289,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 291
    functionName: cli_show_srte_segment_list
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_segment_list(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 297
    functionName: cli_show_srte_segment_list_end
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_segment_list_end(struct vty *vty,\n\t\t\t\t    const
      struct lyd_node *dnode)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_query_type_f
      Src: /src/frr/pathd/path_cli.c:324,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_cli.c:326,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:331,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:334,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:338,1
    - Dst: assert
      Src: /src/frr/pathd/path_cli.c:348,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:352,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:354,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:355,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:357,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 12
    argNames:
    - vty
    - xpath
    - index
    - index_str
    - adj_src_ipv4
    - adj_dst_ipv4
    - adj_src_ipv6
    - adj_dst_ipv6
    - adj_src_ipv4_str
    - adj_dst_ipv4_str
    - adj_src_ipv6_str
    - adj_dst_ipv6_str
    argTypes:
    - struct vty*
    - char*
    - long
    - char*
    - struct in_addr
    - struct in_addr
    - struct in6_addr
    - struct in6_addr
    - char*
    - char*
    - char*
    - char*
    assertStmts:
    - condition: (!"We must have a adj_src_ipv4_str or a adj_src_ipv6_str")
      pos:
        line_end: 347
        line_start: 347
        source_file: /src/frr/pathd/path_cli.c
    constantsTouched: []
    func_position:
      end: 361
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 361
    functionName: segment_list_has_src_dst
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - assert
    - snprintf
    - nb_cli_enqueue_change
    - zlog_warn
    - path_ted_query_type_f
    linkageType: ''
    returnType: int
    signature: "int segment_list_has_src_dst(\n\tstruct vty *vty, char *xpath, long
      index, const char *index_str,\n\tstruct in_addr adj_src_ipv4, struct in_addr
      adj_dst_ipv4,\n\tstruct in6_addr adj_src_ipv6, struct in6_addr adj_dst_ipv6,\n\tconst
      char *adj_src_ipv4_str, const char *adj_dst_ipv4_str,\n\tconst char *adj_src_ipv6_str,
      const char *adj_dst_ipv6_str)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:376,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:380,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:383,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:390,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:393,1
    - Dst: str2prefix
      Src: /src/frr/pathd/path_cli.c:401,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:402,1
    - Dst: inet_ntop
      Src: /src/frr/pathd/path_cli.c:405,1
    - Dst: str2prefix
      Src: /src/frr/pathd/path_cli.c:410,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:411,1
    - Dst: inet_ntop
      Src: /src/frr/pathd/path_cli.c:414,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:419,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:421,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:422,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:424,1
    - Dst: strchr
      Src: /src/frr/pathd/path_cli.c:426,1
    - Dst: strchr
      Src: /src/frr/pathd/path_cli.c:427,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:430,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:432,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_cli.c:435,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pathd/path_cli.c:438,1
    - Dst: path_ted_query_type_c
      Src: /src/frr/pathd/path_cli.c:443,1
    - Dst: zlog_err
      Src: /src/frr/pathd/path_cli.c:445,1
    - Dst: path_ted_query_type_e
      Src: /src/frr/pathd/path_cli.c:452,1
    - Dst: zlog_err
      Src: /src/frr/pathd/path_cli.c:454,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 65
    argCount: 14
    argNames:
    - vty
    - xpath
    - index
    - index_str
    - prefix_ipv4
    - prefix_ipv4_str
    - prefix_ipv6
    - prefix_ipv6_str
    - has_algo
    - algo
    - algo_str
    - has_iface_id
    - iface_id
    - iface_id_str
    argTypes:
    - struct vty*
    - char*
    - long
    - char*
    - struct prefix_ipv4*
    - char*
    - struct prefix_ipv6*
    - char*
    - char*
    - long
    - char*
    - char*
    - long
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 461
    functionName: segment_list_has_prefix
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - path_ted_query_type_c
    - vty_out
    - snprintf
    - nb_cli_enqueue_change
    - zlog_err
    - inet_ntop
    - strchr
    - str2prefix
    - path_ted_query_type_e
    linkageType: ''
    returnType: int
    signature: "int segment_list_has_prefix(\n\tstruct vty *vty, char *xpath, long
      index, const char *index_str,\n\tconst struct prefix_ipv4 *prefix_ipv4, const
      char *prefix_ipv4_str,\n\tconst struct prefix_ipv6 *prefix_ipv6, const char
      *prefix_ipv6_str,\n\tconst char *has_algo, long algo, const char *algo_str,\n\tconst
      char *has_iface_id, long iface_id, const char *iface_id_str)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:549,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:549,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:550,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:551,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:552,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:554,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_cli.c:558,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_cli.c:562,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:563,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_cli.c:568,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:569,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_cli.c:572,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_cli.c:573,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:575,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:576,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_cli.c:579,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_cli.c:580,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:582,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:583,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:588,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:589,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:590,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:593,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:594,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:595,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:598,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:599,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:600,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:604,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 605
    functionName: cli_show_srte_segment_list_segment
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_dnode_get_ip
    - yang_dnode_get_string
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_segment_list_segment(struct vty *vty,\n\t\t\t\t\tconst
      struct lyd_node *dnode,\n\t\t\t\t\tbool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:660,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:661,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 657
    functionDepth: 2
    functionLinenumber: 657
    functionLinenumberEnd: 663
    functionName: cli_show_srte_policy
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_policy(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 665
    functionDepth: 2
    functionLinenumber: 665
    functionLinenumberEnd: 668
    functionName: cli_show_srte_policy_end
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void cli_show_srte_policy_end(struct vty *vty, const struct lyd_node
      *dnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:700,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 701
    functionName: cli_show_srte_policy_name
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_policy_name(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t       bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:733,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 734
    functionName: cli_show_srte_policy_binding_sid
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_policy_binding_sid(struct vty *vty,\n\t\t\t\t      const
      struct lyd_node *dnode,\n\t\t\t\t      bool show_defaults)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_cli.c:1073,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 40
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum objfun_type
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 1072
        line_start: 1072
        source_file: /src/frr/pathd/path_cli.c
    constantsTouched: []
    func_position:
      end: 1074
      start: 1032
    functionDepth: 1
    functionLinenumber: 1032
    functionLinenumberEnd: 1074
    functionName: objfun_type_name
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 3
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *objfun_type_name(enum objfun_type type)
  - BBCount: 23
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum srte_candidate_metric_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1105
    functionDepth: 0
    functionLinenumber: 1105
    functionLinenumberEnd: 1153
    functionName: metric_type_name
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *metric_type_name(enum srte_candidate_metric_type type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fabs
      Src: /src/frr/pathd/path_cli.c:1157,1
    - Dst: truncf
      Src: /src/frr/pathd/path_cli.c:1157,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1158,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - value
    argTypes:
    - struct vty*
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1155
    functionDepth: 2
    functionLinenumber: 1155
    functionLinenumberEnd: 1163
    functionName: config_write_float
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - truncf
    - fabs
    linkageType: ''
    returnType: void
    signature: void config_write_float(struct vty *vty, float value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: metric_type_name
      Src: /src/frr/pathd/path_cli.c:1169,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1172,1
    - Dst: metric_type_name
      Src: /src/frr/pathd/path_cli.c:1173,1
    - Dst: config_write_float
      Src: /src/frr/pathd/path_cli.c:1174,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1175,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - vty
    - type
    - value
    - required
    - is_bound
    argTypes:
    - struct vty*
    - enum srte_candidate_metric_type
    - float
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1165
    functionDepth: 3
    functionLinenumber: 1165
    functionLinenumberEnd: 1177
    functionName: config_write_metric
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - config_write_float
    - vty_out
    - metric_type_name
    linkageType: ''
    returnType: void
    signature: "void config_write_metric(struct vty *vty,\n\t\t\t\tenum srte_candidate_metric_type
      type,\n\t\t\t\tfloat value, bool required, bool is_bound)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_cli.c:1186,1
    - Dst: yang_dnode_get_dec64
      Src: /src/frr/pathd/path_cli.c:1187,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_cli.c:1188,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:1189,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_cli.c:1190,1
    - Dst: config_write_metric
      Src: /src/frr/pathd/path_cli.c:1192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1179
    functionDepth: 4
    functionLinenumber: 1179
    functionLinenumberEnd: 1194
    functionName: config_write_metric_cb
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_dec64
    - config_write_metric
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: int
    signature: int config_write_metric_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:1204,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1206,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:1207,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:1208,1
    - Dst: strmatch
      Src: /src/frr/pathd/path_cli.c:1209,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1210,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:1211,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1212,1
    - Dst: strmatch
      Src: /src/frr/pathd/path_cli.c:1214,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:1215,1
    - Dst: yang_dnode_get_dec64
      Src: /src/frr/pathd/path_cli.c:1216,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_cli.c:1218,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1220,1
    - Dst: config_write_float
      Src: /src/frr/pathd/path_cli.c:1221,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1223,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1224,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:1226,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_cli.c:1228,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1230,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:1233,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_cli.c:1235,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1237,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:1240,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_cli.c:1242,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1244,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/pathd/path_cli.c:1247,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_cli.c:1249,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_cli.c:1251,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_cli.c:1253,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1255,1
    - Dst: objfun_type_name
      Src: /src/frr/pathd/path_cli.c:1256,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1196
    functionDepth: 3
    functionLinenumber: 1196
    functionLinenumberEnd: 1260
    functionName: cli_show_srte_policy_candidate_path
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_dec64
    - yang_dnode_get_bool
    - config_write_float
    - yang_dnode_iterate
    - vty_out
    - objfun_type_name
    - yang_dnode_get_string
    - yang_dnode_get_uint32
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_policy_candidate_path(struct vty *vty,\n\t\t\t\t\t
      const struct lyd_node *dnode,\n\t\t\t\t\t bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_cli.c:1265,1
    - Dst: strmatch
      Src: /src/frr/pathd/path_cli.c:1267,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1269
    functionName: cli_show_srte_policy_candidate_path_end
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_srte_policy_candidate_path_end(struct vty *vty,\n\t\t\t\t\t
      \    const struct lyd_node *dnode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/pathd/path_cli.c:1275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1271
    functionDepth: 0
    functionLinenumber: 1271
    functionLinenumberEnd: 1278
    functionName: config_write_dnode
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int config_write_dnode(const struct lyd_node *dnode, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1282,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1283,1
    - Dst: path_ted_config_write
      Src: /src/frr/pathd/path_cli.c:1285,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/pathd/path_cli.c:1287,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/pathd/path_cli.c:1289,1
    - Dst: hook_call
      Src: /src/frr/pathd/path_cli.c:1292,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1294,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1280
    functionDepth: 3
    functionLinenumber: 1280
    functionLinenumberEnd: 1298
    functionName: config_write_segment_routing
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - path_ted_config_write
    - yang_dnode_iterate
    - vty_out
    - hook_call
    linkageType: ''
    returnType: int
    signature: int config_write_segment_routing(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pathd/path_cli.c:1302,1
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/path_cli.c:1303,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_cli.c:1305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1300
    functionDepth: 2
    functionLinenumber: 1300
    functionLinenumberEnd: 1309
    functionName: path_policy_cli_debug_config_write
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_CHECK
    - DEBUG_MODE_CHECK
    - vty_out
    linkageType: ''
    returnType: int
    signature: int path_policy_cli_debug_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pathd/path_cli.c:1313,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pathd/path_cli.c:1316,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/pathd/path_cli.c:1317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1311
    functionDepth: 1
    functionLinenumber: 1311
    functionLinenumberEnd: 1320
    functionName: path_policy_cli_debug_set_all
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: int
    signature: int path_policy_cli_debug_set_all(uint32_t flags, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/pathd/path_cli.c:1324,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_cli.c:1326,1
    - Dst: install_node
      Src: /src/frr/pathd/path_cli.c:1328,1
    - Dst: install_node
      Src: /src/frr/pathd/path_cli.c:1329,1
    - Dst: install_node
      Src: /src/frr/pathd/path_cli.c:1330,1
    - Dst: install_node
      Src: /src/frr/pathd/path_cli.c:1331,1
    - Dst: install_node
      Src: /src/frr/pathd/path_cli.c:1332,1
    - Dst: install_default
      Src: /src/frr/pathd/path_cli.c:1333,1
    - Dst: install_default
      Src: /src/frr/pathd/path_cli.c:1334,1
    - Dst: install_default
      Src: /src/frr/pathd/path_cli.c:1335,1
    - Dst: install_default
      Src: /src/frr/pathd/path_cli.c:1336,1
    - Dst: install_default
      Src: /src/frr/pathd/path_cli.c:1337,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1339,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1340,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1341,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1343,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1344,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1346,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1347,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1348,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1349,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1350,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1352,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1354,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1355,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1356,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1357,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1358,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1359,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1360,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1361,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1362,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1363,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1365,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1367,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1369,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1371,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1373,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1375,1
    - Dst: install_element
      Src: /src/frr/pathd/path_cli.c:1377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1322
    functionDepth: 6
    functionLinenumber: 1322
    functionLinenumberEnd: 1379
    functionName: path_cli_init
    functionSourceFile: /src/frr/pathd/path_cli.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_default
    - install_node
    - hook_register
    linkageType: ''
    returnType: void
    signature: void path_cli_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: pcep_new_path
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct path
    signature: struct path *pcep_new_path(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: pcep_new_hop
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct path_hop
    signature: struct path_hop *pcep_new_hop(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: pcep_new_metric
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct path_metric
    signature: struct path_metric *pcep_new_metric(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_new_metric
      Src: /src/frr/pathd/path_pcep.c:93,1
    - Dst: pcep_copy_metrics
      Src: /src/frr/pathd/path_pcep.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - metric
    argTypes:
    - struct path_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: pcep_copy_metrics
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 1
    functionsReached:
    - pcep_new_metric
    - pcep_copy_metrics
    linkageType: ''
    returnType: struct path_metric
    signature: struct path_metric *pcep_copy_metrics(struct path_metric *metric)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_new_hop
      Src: /src/frr/pathd/path_pcep.c:103,1
    - Dst: pcep_copy_hops
      Src: /src/frr/pathd/path_pcep.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hop
    argTypes:
    - struct path_hop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: pcep_copy_hops
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 1
    functionsReached:
    - pcep_new_hop
    - pcep_copy_hops
    linkageType: ''
    returnType: struct path_hop
    signature: struct path_hop *pcep_copy_hops(struct path_hop *hop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_new_path
      Src: /src/frr/pathd/path_pcep.c:111,1
    - Dst: pcep_copy_metrics
      Src: /src/frr/pathd/path_pcep.c:114,1
    - Dst: pcep_copy_hops
      Src: /src/frr/pathd/path_pcep.c:115,1
    - Dst: XSTRDUP
      Src: /src/frr/pathd/path_pcep.c:117,1
    - Dst: XSTRDUP
      Src: /src/frr/pathd/path_pcep.c:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: pcep_copy_path
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_new_path
    - pcep_copy_metrics
    - pcep_copy_hops
    - XSTRDUP
    linkageType: ''
    returnType: struct path
    signature: struct path *pcep_copy_path(struct path *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:132,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:138,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:146,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:154,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 158
    functionName: pcep_free_path
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pcep_free_path(struct path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: path_pcep_config_get_path
      Src: /src/frr/pathd/path_pcep.c:166,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep.c:168,1
    - Dst: pcep_ctrl_send_report
      Src: /src/frr/pathd/path_pcep.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - path
    - not_changed
    argTypes:
    - struct path*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 174
    functionName: notify_status
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - path_pcep_config_get_path
    - flog_warn
    - pcep_ctrl_send_report
    linkageType: ''
    returnType: void
    signature: void notify_status(struct path *path, bool not_changed)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_main_event_start_sync
      Src: /src/frr/pathd/path_pcep.c:185,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep.c:188,1
    - Dst: pcep_main_event_initiate_candidate
      Src: /src/frr/pathd/path_pcep.c:189,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep.c:193,1
    - Dst: pcep_main_event_update_candidate
      Src: /src/frr/pathd/path_pcep.c:194,1
    - Dst: pcep_main_event_remove_candidate_segments
      Src: /src/frr/pathd/path_pcep.c:197,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep.c:201,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - type
    - pcc_id
    - payload
    argTypes:
    - enum pcep_main_event_type
    - int
    - void*
    assertStmts:
    - condition: (payload != NULL)
      pos:
        line_end: 187
        line_start: 187
        source_file: /src/frr/pathd/path_pcep.c
    - condition: (payload != NULL)
      pos:
        line_end: 192
        line_start: 192
        source_file: /src/frr/pathd/path_pcep.c
    constantsTouched: []
    func_position:
      end: 208
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 208
    functionName: pcep_main_event_handler
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - pcep_main_event_start_sync
    - pcep_main_event_remove_candidate_segments
    - pcep_main_event_update_candidate
    - pcep_main_event_initiate_candidate
    - assert
    linkageType: ''
    returnType: int
    signature: "int pcep_main_event_handler(enum pcep_main_event_type type, int pcc_id,\n\t\t\t
      \   void *payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_pcep_config_list_path
      Src: /src/frr/pathd/path_pcep.c:212,1
    - Dst: pcep_ctrl_sync_done
      Src: /src/frr/pathd/path_pcep.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pcc_id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 215
    functionName: pcep_main_event_start_sync
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 1
    functionsReached:
    - pcep_ctrl_sync_done
    - path_pcep_config_list_path
    linkageType: ''
    returnType: int
    signature: int pcep_main_event_start_sync(int pcc_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_ctrl_sync_path
      Src: /src/frr/pathd/path_pcep.c:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - path
    - arg
    argTypes:
    - struct path*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pcep_main_event_start_sync_cb
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_ctrl_sync_path
    linkageType: ''
    returnType: int
    signature: int pcep_main_event_start_sync_cb(struct path *path, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: path_pcep_config_initiate_path
      Src: /src/frr/pathd/path_pcep.c:228,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep.c:231,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep.c:247,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:249,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep.c:250,1
    - Dst: pcep_ctrl_send_error
      Src: /src/frr/pathd/path_pcep.c:254,1
    - Dst: notify_status
      Src: /src/frr/pathd/path_pcep.c:256,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 258
    functionName: pcep_main_event_initiate_candidate
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 1
    functionsReached:
    - pcep_free_path
    - XCALLOC
    - notify_status
    - path_pcep_config_initiate_path
    - zlog_warn
    - XFREE
    - pcep_ctrl_send_error
    linkageType: ''
    returnType: int
    signature: int pcep_main_event_initiate_candidate(struct path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: path_pcep_config_update_path
      Src: /src/frr/pathd/path_pcep.c:264,1
    - Dst: notify_status
      Src: /src/frr/pathd/path_pcep.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 268
    functionName: pcep_main_event_update_candidate
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 1
    functionsReached:
    - notify_status
    - path_pcep_config_update_path
    linkageType: ''
    returnType: int
    signature: int pcep_main_event_update_candidate(struct path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srte_candidate_unset_segment_list
      Src: /src/frr/pathd/path_pcep.c:273,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:276,1
    - Dst: srte_apply_changes
      Src: /src/frr/pathd/path_pcep.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - originator
    - force
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 281
    functionName: pcep_main_event_remove_candidate_segments
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 1
    functionsReached:
    - srte_candidate_unset_segment_list
    - srte_apply_changes
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int pcep_main_event_remove_candidate_segments(const char *originator,\n\t\t\t\t\t
      \     bool force)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: candidate_to_path
      Src: /src/frr/pathd/path_pcep.c:287,1
    - Dst: pcep_ctrl_pathd_event
      Src: /src/frr/pathd/path_pcep.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 290
    functionName: pathd_candidate_created_handler
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_ctrl_pathd_event
    - candidate_to_path
    linkageType: ''
    returnType: int
    signature: int pathd_candidate_created_handler(struct srte_candidate *candidate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: candidate_to_path
      Src: /src/frr/pathd/path_pcep.c:294,1
    - Dst: pcep_ctrl_pathd_event
      Src: /src/frr/pathd/path_pcep.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 297
    functionName: pathd_candidate_updated_handler
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_ctrl_pathd_event
    - candidate_to_path
    linkageType: ''
    returnType: int
    signature: int pathd_candidate_updated_handler(struct srte_candidate *candidate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: candidate_to_path
      Src: /src/frr/pathd/path_pcep.c:301,1
    - Dst: pcep_ctrl_pathd_event
      Src: /src/frr/pathd/path_pcep.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 304
    functionName: pathd_candidate_removed_handler
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_ctrl_pathd_event
    - candidate_to_path
    linkageType: ''
    returnType: int
    signature: int pathd_candidate_removed_handler(struct srte_candidate *candidate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep.c:315,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep.c:316,1
    - Dst: pcep_ctrl_initialize
      Src: /src/frr/pathd/path_pcep.c:320,1
    - Dst: pcep_lib_initialize
      Src: /src/frr/pathd/path_pcep.c:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts:
    - condition: (pcep_g->fpt == NULL)
      pos:
        line_end: 314
        line_start: 314
        source_file: /src/frr/pathd/path_pcep.c
    - condition: (pcep_g->master == NULL)
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/frr/pathd/path_pcep.c
    constantsTouched: []
    func_position:
      end: 330
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 330
    functionName: pcep_module_config_pre
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_lib_initialize
    - pcep_ctrl_initialize
    - assert
    linkageType: ''
    returnType: int
    signature: int pcep_module_config_pre(struct event_loop *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep.c:334,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep.c:335,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep.c:336,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep.c:338,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep.c:339,1
    - Dst: pcep_cli_init
      Src: /src/frr/pathd/path_pcep.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 344
    functionName: pcep_module_late_init
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_cli_init
    - hook_register
    linkageType: ''
    returnType: int
    signature: int pcep_module_late_init(struct event_loop *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_ctrl_finalize
      Src: /src/frr/pathd/path_pcep.c:348,1
    - Dst: pcep_lib_finalize
      Src: /src/frr/pathd/path_pcep.c:349,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep.c:353,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 356
    functionName: pcep_module_finish
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - pcep_lib_finalize
    - pcep_ctrl_finalize
    - XFREE
    linkageType: ''
    returnType: int
    signature: int pcep_module_finish(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep.c:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 369
    functionName: pcep_module_init
    functionSourceFile: /src/frr/pathd/path_pcep.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int pcep_module_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup_candidate
      Src: /src/frr/pathd/path_pcep_config.c:41,1
    - Dst: candidate_name
      Src: /src/frr/pathd/path_pcep_config.c:50,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 58
    functionName: path_pcep_refine_path
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 0
    functionsReached:
    - candidate_name
    - lookup_candidate
    linkageType: ''
    returnType: void
    signature: void path_pcep_refine_path(struct path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup_candidate
      Src: /src/frr/pathd/path_pcep_config.c:62,1
    - Dst: candidate_to_path
      Src: /src/frr/pathd/path_pcep_config.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct lsp_nb_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 66
    functionName: path_pcep_config_get_path
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - candidate_to_path
    - lookup_candidate
    linkageType: ''
    returnType: struct path
    signature: struct path *path_pcep_config_get_path(struct lsp_nb_key *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/path_pcep_config.c:74,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/path_pcep_config.c:75,1
    - Dst: candidate_to_path
      Src: /src/frr/pathd/path_pcep_config.c:77,1
    - Dst: cb
      Src: /src/frr/pathd/path_pcep_config.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - cb
    - arg
    argTypes:
    - path_list_cb_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 82
    functionName: path_pcep_config_list_path
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - cb
    - RB_FOREACH
    - candidate_to_path
    linkageType: ''
    returnType: void
    signature: void path_pcep_config_list_path(path_list_cb_t cb, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: path_pcep_config_list_path_hops
      Src: /src/frr/pathd/path_pcep_config.c:100,1
    - Dst: XSTRDUP
      Src: /src/frr/pathd/path_pcep_config.c:102,1
    - Dst: pcep_new_path
      Src: /src/frr/pathd/path_pcep_config.c:104,1
    - Dst: candidate_name
      Src: /src/frr/pathd/path_pcep_config.c:105,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:106,1
    - Dst: status_int_to_ext
      Src: /src/frr/pathd/path_pcep_config.c:107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:114,1
    - Dst: pcep_new_metric
      Src: /src/frr/pathd/path_pcep_config.c:115,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:122,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:124,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:152,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:155,1
    - Dst: copy_candidate_objfun_info
      Src: /src/frr/pathd/path_pcep_config.c:162,1
    - Dst: copy_candidate_affinity_filters
      Src: /src/frr/pathd/path_pcep_config.c:163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 166
    functionName: candidate_to_path
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 5
    functionsReached:
    - pcep_new_path
    - copy_candidate_objfun_info
    - CHECK_FLAG
    - pcep_new_metric
    - status_int_to_ext
    - copy_candidate_affinity_filters
    - candidate_name
    - path_pcep_config_list_path_hops
    - XSTRDUP
    linkageType: ''
    returnType: struct path
    signature: struct path *candidate_to_path(struct srte_candidate *candidate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:174,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:182,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:185,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - candidate
    - path
    argTypes:
    - struct srte_candidate*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 193
    functionName: copy_candidate_objfun_info
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: "void copy_candidate_objfun_info(struct srte_candidate *candidate,\n\t\t\t\tstruct
      path *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:199,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - candidate
    - path
    argTypes:
    - struct srte_candidate*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 214
    functionName: copy_candidate_affinity_filters
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: "void copy_candidate_affinity_filters(struct srte_candidate *candidate,\n\t\t\t\t
      \    struct path *path)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_REVERSE
      Src: /src/frr/pathd/path_pcep_config.c:222,1
    - Dst: pcep_new_hop
      Src: /src/frr/pathd/path_pcep_config.c:224,1
    - Dst: pcep_nai_type
      Src: /src/frr/pathd/path_pcep_config.c:234,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_config.c:242,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_config.c:247,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_config.c:249,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_config.c:253,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_config.c:256,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - segment_list
    argTypes:
    - struct srte_segment_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 267
    functionName: path_pcep_config_list_path_hops
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH_REVERSE
    - pcep_nai_type
    - pcep_new_hop
    - memcpy
    linkageType: ''
    returnType: struct path_hop
    signature: 'struct path_hop *

      path_pcep_config_list_path_hops(struct srte_segment_list *segment_list)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_config.c:275,1
    - Dst: lookup_candidate
      Src: /src/frr/pathd/path_pcep_config.c:277,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_config.c:280,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_config.c:286,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_config.c:291,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:295,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:296,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_config.c:298,1
    - Dst: srte_apply_changes
      Src: /src/frr/pathd/path_pcep_config.c:302,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:304,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/pathd/path_pcep_config.c:304,1
    - Dst: lookup_candidate
      Src: /src/frr/pathd/path_pcep_config.c:312,1
    - Dst: srte_policy_add
      Src: /src/frr/pathd/path_pcep_config.c:314,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_config.c:317,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:319,1
    - Dst: srte_candidate_add
      Src: /src/frr/pathd/path_pcep_config.c:320,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_config.c:324,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:326,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_config.c:334,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_config.c:346,1
    - Dst: path_pcep_config_update_path
      Src: /src/frr/pathd/path_pcep_config.c:352,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts:
    - condition: (!IS_IPADDR_NONE(&path->nbkey.endpoint))
      pos:
        line_end: 303
        line_start: 303
        source_file: /src/frr/pathd/path_pcep_config.c
    constantsTouched: []
    func_position:
      end: 355
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 355
    functionName: path_pcep_config_initiate_path
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - path_pcep_config_update_path
    - srte_policy_add
    - strlcpy
    - IS_IPADDR_NONE
    - zlog_warn
    - SET_FLAG
    - srte_apply_changes
    - lookup_candidate
    - srte_candidate_add
    - assert
    linkageType: ''
    returnType: int
    signature: int path_pcep_config_initiate_path(struct path *path)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:359,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:360,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:361,1
    - Dst: lookup_candidate
      Src: /src/frr/pathd/path_pcep_config.c:373,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:382,1
    - Dst: srte_segment_list_del
      Src: /src/frr/pathd/path_pcep_config.c:384,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_pcep_config.c:391,1
    - Dst: srte_segment_list_add
      Src: /src/frr/pathd/path_pcep_config.c:395,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_config.c:397,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:399,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:400,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:404,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:405,1
    - Dst: srte_segment_entry_add
      Src: /src/frr/pathd/path_pcep_config.c:407,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:410,1
    - Dst: srte_segment_entry_set_nai
      Src: /src/frr/pathd/path_pcep_config.c:414,1
    - Dst: srte_nai_type
      Src: /src/frr/pathd/path_pcep_config.c:415,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:425,1
    - Dst: srte_lsp_set_metric
      Src: /src/frr/pathd/path_pcep_config.c:428,1
    - Dst: srte_lsp_set_bandwidth
      Src: /src/frr/pathd/path_pcep_config.c:435,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:439,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_config.c:444,1
    - Dst: srte_apply_changes
      Src: /src/frr/pathd/path_pcep_config.c:446,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct path*
    assertStmts:
    - condition: (path->nbkey.endpoint.ipa_type == IPADDR_V4)
      pos:
        line_end: 360
        line_start: 360
        source_file: /src/frr/pathd/path_pcep_config.c
    - condition: (path->nbkey.preference != 0)
      pos:
        line_end: 359
        line_start: 359
        source_file: /src/frr/pathd/path_pcep_config.c
    - condition: (hop->has_sid)
      pos:
        line_end: 403
        line_start: 403
        source_file: /src/frr/pathd/path_pcep_config.c
    - condition: (hop->is_mpls)
      pos:
        line_end: 404
        line_start: 404
        source_file: /src/frr/pathd/path_pcep_config.c
    - condition: (path != NULL)
      pos:
        line_end: 358
        line_start: 358
        source_file: /src/frr/pathd/path_pcep_config.c
    constantsTouched: []
    func_position:
      end: 449
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 449
    functionName: path_pcep_config_update_path
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 2
    functionsReached:
    - srte_segment_entry_add
    - snprintf
    - srte_segment_list_del
    - strlcpy
    - srte_lsp_set_metric
    - SET_FLAG
    - srte_nai_type
    - srte_apply_changes
    - lookup_candidate
    - srte_segment_entry_set_nai
    - srte_lsp_set_bandwidth
    - assert
    - srte_segment_list_add
    linkageType: ''
    returnType: int
    signature: int path_pcep_config_update_path(struct path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: srte_policy_find
      Src: /src/frr/pathd/path_pcep_config.c:454,1
    - Dst: srte_candidate_find
      Src: /src/frr/pathd/path_pcep_config.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct lsp_nb_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 458
    functionName: lookup_candidate
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 4
    functionsReached:
    - srte_policy_find
    - srte_candidate_find
    linkageType: ''
    returnType: struct srte_candidate
    signature: struct srte_candidate *lookup_candidate(struct lsp_nb_key *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asprintfrr
      Src: /src/frr/pathd/path_pcep_config.c:464,1
    - Dst: asprintfrr
      Src: /src/frr/pathd/path_pcep_config.c:466,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 460
    functionDepth: 8
    functionLinenumber: 460
    functionLinenumberEnd: 468
    functionName: candidate_name
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 2
    functionsReached:
    - asprintfrr
    linkageType: ''
    returnType: char
    signature: char *candidate_name(struct srte_candidate *candidate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum srte_policy_status
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 484
        line_start: 484
        source_file: /src/frr/pathd/path_pcep_config.c
    constantsTouched: []
    func_position:
      end: 486
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 486
    functionName: status_int_to_ext
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: enum pcep_lsp_operational_status
    signature: enum pcep_lsp_operational_status status_int_to_ext(enum srte_policy_status
      status)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum srte_segment_nai_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 516
    functionName: pcep_nai_type
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum pcep_sr_subobj_nai
    signature: enum pcep_sr_subobj_nai pcep_nai_type(enum srte_segment_nai_type type)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_config.c:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum pcep_sr_subobj_nai
    assertStmts:
    - condition: (!"Reached end of function where we were not expecting to")
      pos:
        line_end: 537
        line_start: 537
        source_file: /src/frr/pathd/path_pcep_config.c
    constantsTouched: []
    func_position:
      end: 539
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 539
    functionName: srte_nai_type
    functionSourceFile: /src/frr/pathd/path_pcep_config.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: enum srte_segment_nai_type
    signature: enum srte_segment_nai_type srte_nai_type(enum pcep_sr_subobj_nai type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_zebra.c:49,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pathd/path_zebra.c:50,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_zebra.c:52,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pathd/path_zebra.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - router_id
    argTypes:
    - struct in_addr*
    assertStmts:
    - condition: (router_id != NULL)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/frr/pathd/path_zebra.c
    constantsTouched: []
    func_position:
      end: 57
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 57
    functionName: get_ipv4_router_id
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    - memcpy
    - pthread_mutex_lock
    - assert
    linkageType: ''
    returnType: bool
    signature: bool get_ipv4_router_id(struct in_addr *router_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_zebra.c:68,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pathd/path_zebra.c:69,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_zebra.c:71,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pathd/path_zebra.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - router_id
    argTypes:
    - struct in6_addr*
    assertStmts:
    - condition: (router_id != NULL)
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/frr/pathd/path_zebra.c
    constantsTouched: []
    func_position:
      end: 76
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 76
    functionName: get_ipv6_router_id
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    - memcpy
    - pthread_mutex_lock
    - assert
    linkageType: ''
    returnType: bool
    signature: bool get_ipv6_router_id(struct in6_addr *router_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/pathd/path_zebra.c:82,1
    - Dst: zclient_send_router_id_update
      Src: /src/frr/pathd/path_zebra.c:83,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/path_zebra.c:86,1
    - Dst: path_zebra_add_sr_policy
      Src: /src/frr/pathd/path_zebra.c:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 100
    functionName: path_zebra_connected
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - path_zebra_add_sr_policy
    - zclient_send_router_id_update
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void path_zebra_connected(struct zclient *zclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zapi_sr_policy_notify_status_decode
      Src: /src/frr/pathd/path_zebra.c:108,1
    - Dst: srte_policy_find
      Src: /src/frr/pathd/path_zebra.c:111,1
    - Dst: srte_candidate_status_update
      Src: /src/frr/pathd/path_zebra.c:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 124
    functionName: path_zebra_sr_policy_notify_status
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - zapi_sr_policy_notify_status_decode
    - srte_policy_find
    - srte_candidate_status_update
    linkageType: ''
    returnType: int
    signature: int path_zebra_sr_policy_notify_status(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_router_id_update_read
      Src: /src/frr/pathd/path_zebra.c:132,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pathd/path_zebra.c:134,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_zebra.c:135,1
    - Dst: inet_ntop
      Src: /src/frr/pathd/path_zebra.c:138,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pathd/path_zebra.c:139,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pathd/path_zebra.c:142,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_zebra.c:143,1
    - Dst: inet_ntop
      Src: /src/frr/pathd/path_zebra.c:146,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pathd/path_zebra.c:147,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_zebra.c:150,1
    - Dst: zlog_info
      Src: /src/frr/pathd/path_zebra.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 156
    functionName: path_zebra_router_id_update
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - zlog_info
    - zebra_router_id_update_read
    - inet_ntop
    - zlog_warn
    - memcpy
    - pthread_mutex_unlock
    linkageType: ''
    returnType: int
    signature: int path_zebra_router_id_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pathd/path_zebra.c:172,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/path_zebra.c:176,1
    - Dst: zebra_send_sr_policy
      Src: /src/frr/pathd/path_zebra.c:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - policy
    - segment_list
    argTypes:
    - struct srte_policy*
    - struct srte_segment_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 164
    functionDepth: 5
    functionLinenumber: 164
    functionLinenumberEnd: 182
    functionName: path_zebra_add_sr_policy
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - RB_FOREACH
    - zebra_send_sr_policy
    linkageType: ''
    returnType: void
    signature: "void path_zebra_add_sr_policy(struct srte_policy *policy,\n\t\t\t
      \     struct srte_segment_list *segment_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pathd/path_zebra.c:195,1
    - Dst: zebra_send_sr_policy
      Src: /src/frr/pathd/path_zebra.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - policy
    argTypes:
    - struct srte_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 189
    functionDepth: 5
    functionLinenumber: 189
    functionLinenumberEnd: 202
    functionName: path_zebra_delete_sr_policy
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - zebra_send_sr_policy
    linkageType: ''
    returnType: void
    signature: void path_zebra_delete_sr_policy(struct srte_policy *policy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lm_get_label_chunk
      Src: /src/frr/pathd/path_zebra.c:215,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_zebra.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 210
    functionDepth: 5
    functionLinenumber: 210
    functionLinenumberEnd: 222
    functionName: path_zebra_request_label
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - lm_get_label_chunk
    linkageType: ''
    returnType: int
    signature: int path_zebra_request_label(mpls_label_t label)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lm_release_label_chunk
      Src: /src/frr/pathd/path_zebra.c:234,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_zebra.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - label
    argTypes:
    - mpls_label_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 230
    functionDepth: 4
    functionLinenumber: 230
    functionLinenumberEnd: 237
    functionName: path_zebra_release_label
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - lm_release_label_chunk
    linkageType: ''
    returnType: void
    signature: void path_zebra_release_label(mpls_label_t label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_socket_connect
      Src: /src/frr/pathd/path_zebra.c:242,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_zebra.c:243,1
    - Dst: sleep
      Src: /src/frr/pathd/path_zebra.c:245,1
    - Dst: set_nonblocking
      Src: /src/frr/pathd/path_zebra.c:247,1
    - Dst: zclient_send_hello
      Src: /src/frr/pathd/path_zebra.c:250,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_zebra.c:251,1
    - Dst: sleep
      Src: /src/frr/pathd/path_zebra.c:253,1
    - Dst: lm_label_manager_connect
      Src: /src/frr/pathd/path_zebra.c:256,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_zebra.c:257,1
    - Dst: sleep
      Src: /src/frr/pathd/path_zebra.c:258,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 239
    functionDepth: 5
    functionLinenumber: 239
    functionLinenumberEnd: 260
    functionName: path_zebra_label_manager_connect
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - sleep
    - set_nonblocking
    - lm_label_manager_connect
    - zclient_socket_connect
    - zclient_send_hello
    linkageType: ''
    returnType: void
    signature: void path_zebra_label_manager_connect(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zclient_opaque_decode
      Src: /src/frr/pathd/path_zebra.c:270,1
    - Dst: path_ted_timer_sync_cancel
      Src: /src/frr/pathd/path_zebra.c:277,1
    - Dst: ls_parse_msg
      Src: /src/frr/pathd/path_zebra.c:279,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_zebra.c:282,1
    - Dst: LS_MSG_TYPE_PRINT
      Src: /src/frr/pathd/path_zebra.c:287,1
    - Dst: LS_MSG_EVENT_PRINT
      Src: /src/frr/pathd/path_zebra.c:288,1
    - Dst: zlog_err
      Src: /src/frr/pathd/path_zebra.c:290,1
    - Dst: path_ted_rcvd_message
      Src: /src/frr/pathd/path_zebra.c:296,1
    - Dst: ls_delete_msg
      Src: /src/frr/pathd/path_zebra.c:297,1
    - Dst: path_ted_segment_list_refresh
      Src: /src/frr/pathd/path_zebra.c:299,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_zebra.c:302,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 262
    functionDepth: 6
    functionLinenumber: 262
    functionLinenumberEnd: 308
    functionName: path_zebra_opaque_msg_handler
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - path_ted_rcvd_message
    - LS_MSG_EVENT_PRINT
    - path_ted_segment_list_refresh
    - zclient_opaque_decode
    - zlog_err
    - path_ted_timer_sync_cancel
    - ls_parse_msg
    - zlog_debug
    - LS_MSG_TYPE_PRINT
    - ls_delete_msg
    linkageType: ''
    returnType: int
    signature: int path_zebra_opaque_msg_handler(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/pathd/path_zebra.c:327,1
    - Dst: array_size
      Src: /src/frr/pathd/path_zebra.c:328,1
    - Dst: zclient_init
      Src: /src/frr/pathd/path_zebra.c:329,1
    - Dst: zclient_new
      Src: /src/frr/pathd/path_zebra.c:333,1
    - Dst: path_zebra_label_manager_connect
      Src: /src/frr/pathd/path_zebra.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 321
    functionDepth: 6
    functionLinenumber: 321
    functionLinenumberEnd: 341
    functionName: path_zebra_init
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_init
    - path_zebra_label_manager_connect
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void path_zebra_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/pathd/path_zebra.c:345,1
    - Dst: zclient_free
      Src: /src/frr/pathd/path_zebra.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 343
    functionDepth: 3
    functionLinenumber: 343
    functionLinenumberEnd: 347
    functionName: path_zebra_stop
    functionSourceFile: /src/frr/pathd/path_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_free
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void path_zebra_stop(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:159,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:168,1
    - Dst: frr_pthread_new
      Src: /src/frr/pathd/path_pcep_controller.c:171,1
    - Dst: flog_err
      Src: /src/frr/pathd/path_pcep_controller.c:173,1
    - Dst: frr_pthread_run
      Src: /src/frr/pathd/path_pcep_controller.c:177,1
    - Dst: flog_err
      Src: /src/frr/pathd/path_pcep_controller.c:179,1
    - Dst: frr_pthread_wait_running
      Src: /src/frr/pathd/path_pcep_controller.c:182,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:185,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:192,1
    - Dst: set_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 3
    argNames:
    - main_thread
    - fpt
    - event_handler
    argTypes:
    - struct event_loop*
    - struct frr_pthread**
    - pcep_main_event_handler_t
    assertStmts:
    - condition: (fpt != NULL)
      pos:
        line_end: 158
        line_start: 158
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 201
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 201
    functionName: pcep_ctrl_initialize
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - set_ctrl_state
    - XCALLOC
    - frr_pthread_run
    - flog_err
    - PCEP_DEBUG
    - frr_pthread_wait_running
    - frr_pthread_new
    - assert
    linkageType: ''
    returnType: int
    signature: "int pcep_ctrl_initialize(struct event_loop *main_thread,\n\t\t\t struct
      frr_pthread **fpt,\n\t\t\t pcep_main_event_handler_t event_handler)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:205,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:209,1
    - Dst: frr_pthread_stop
      Src: /src/frr/pathd/path_pcep_controller.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fpt
    argTypes:
    - struct frr_pthread**
    assertStmts:
    - condition: (fpt != NULL)
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 217
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 217
    functionName: pcep_ctrl_finalize
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - frr_pthread_stop
    - PCEP_DEBUG
    - assert
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_finalize(struct frr_pthread **fpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:221,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fpt
    - opts
    argTypes:
    - struct frr_pthread*
    - struct pcc_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 223
    functionName: pcep_ctrl_update_pcc_options
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_update_pcc_options(struct frr_pthread *fpt, struct pcc_opts
      *opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:227,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fpt
    - opts
    argTypes:
    - struct frr_pthread*
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: pcep_ctrl_update_pce_options
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_update_pce_options(struct frr_pthread *fpt, struct pce_opts
      *opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:233,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fpt
    - pce_opts
    argTypes:
    - struct frr_pthread*
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: pcep_ctrl_remove_pcc
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_remove_pcc(struct frr_pthread *fpt, struct pce_opts *pce_opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:239,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fpt
    - pce_name
    argTypes:
    - struct frr_pthread*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: pcep_ctrl_reset_pcc_session
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_reset_pcc_session(struct frr_pthread *fpt, char *pce_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:246,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fpt
    - type
    - path
    argTypes:
    - struct frr_pthread*
    - enum pcep_pathd_event_type
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: pcep_ctrl_pathd_event
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 3
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: "int pcep_ctrl_pathd_event(struct frr_pthread *fpt,\n\t\t\t  enum pcep_pathd_event_type
      type, struct path *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:252,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fpt
    - pcc_id
    - path
    argTypes:
    - struct frr_pthread*
    - int
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 254
    functionName: pcep_ctrl_sync_path
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_sync_path(struct frr_pthread *fpt, int pcc_id, struct
      path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:258,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fpt
    - pcc_id
    argTypes:
    - struct frr_pthread*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 260
    functionName: pcep_ctrl_sync_done
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_sync_done(struct frr_pthread *fpt, int pcc_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:265,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:268,1
    - Dst: pcep_lib_copy_counters
      Src: /src/frr/pathd/path_pcep_controller.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fpt
    - pcc_id
    argTypes:
    - struct frr_pthread*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 273
    functionName: pcep_ctrl_get_counters
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - get_ctrl_state
    - pcep_pcc_get_pcc_by_id
    - pcep_lib_copy_counters
    linkageType: ''
    returnType: struct counters_group
    signature: "struct counters_group *pcep_ctrl_get_counters(struct frr_pthread *fpt,\n\t\t\t\t\t
      \     int pcc_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:277,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:281,1
    - Dst: pcep_lib_copy_pcep_session
      Src: /src/frr/pathd/path_pcep_controller.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fpt
    - pcc_id
    argTypes:
    - struct frr_pthread*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 286
    functionName: pcep_ctrl_get_pcep_session
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - get_ctrl_state
    - pcep_pcc_get_pcc_by_id
    - pcep_lib_copy_pcep_session
    linkageType: ''
    returnType: pcep_session
    signature: pcep_session *pcep_ctrl_get_pcep_session(struct frr_pthread *fpt, int
      pcc_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:291,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:292,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_controller.c:294,1
    - Dst: pcep_pcc_copy_pcc_info
      Src: /src/frr/pathd/path_pcep_controller.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fpt
    - pce_name
    argTypes:
    - struct frr_pthread*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 299
    functionName: pcep_ctrl_get_pcc_info
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - get_ctrl_state
    - strlcpy
    - pcep_pcc_copy_pcc_info
    - XCALLOC
    linkageType: ''
    returnType: struct pcep_pcc_info
    signature: "struct pcep_pcc_info *pcep_ctrl_get_pcc_info(struct frr_pthread *fpt,\n\t\t\t\t\t
      \    const char *pce_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:304,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fpt
    - pcc_id
    - path
    - is_stable
    argTypes:
    - struct frr_pthread*
    - int
    - struct path*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: pcep_ctrl_send_report
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: "int pcep_ctrl_send_report(struct frr_pthread *fpt, int pcc_id,\n\t\t\t
      \ struct path *path, bool is_stable)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_ctrl_state
      Src: /src/frr/pathd/path_pcep_controller.c:313,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fpt
    - pcc_id
    - error
    argTypes:
    - struct frr_pthread*
    - int
    - struct pcep_error*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 315
    functionName: pcep_ctrl_send_error
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - get_ctrl_state
    - send_to_thread
    linkageType: ''
    returnType: int
    signature: "int pcep_ctrl_send_error(struct frr_pthread *fpt, int pcc_id,\n\t\t\t
      struct pcep_error *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/pathd/path_pcep_controller.c:322,1
    - Dst: pthread_join
      Src: /src/frr/pathd/path_pcep_controller.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fpt
    - res
    argTypes:
    - struct frr_pthread*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 327
    functionName: pcep_ctrl_halt_cb
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - pthread_join
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int pcep_ctrl_halt_cb(struct frr_pthread *fpt, void **res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_controller.c:331,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:332,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:335,1
    - Dst: path_pcep_refine_path
      Src: /src/frr/pathd/path_pcep_controller.c:339,1
    - Dst: send_to_thread
      Src: /src/frr/pathd/path_pcep_controller.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (path != NULL)
      pos:
        line_end: 334
        line_start: 334
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (data != NULL)
      pos:
        line_end: 331
        line_start: 331
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 341
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 341
    functionName: pcep_refine_path_event_cb
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - send_to_thread
    - path_pcep_refine_path
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pcep_refine_path_event_cb(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_to_main
      Src: /src/frr/pathd/path_pcep_controller.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_id
    argTypes:
    - struct ctrl_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: pcep_thread_start_sync
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - send_to_main
    linkageType: ''
    returnType: void
    signature: void pcep_thread_start_sync(struct ctrl_state *ctrl_state, int pcc_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_to_main
      Src: /src/frr/pathd/path_pcep_controller.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_id
    - path
    argTypes:
    - struct ctrl_state*
    - int
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 356
    functionName: pcep_thread_update_path
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - send_to_main
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_update_path(struct ctrl_state *ctrl_state, int pcc_id,\n\t\t\t
      \    struct path *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_to_main
      Src: /src/frr/pathd/path_pcep_controller.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_id
    - path
    argTypes:
    - struct ctrl_state*
    - int
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 363
    functionName: pcep_thread_initiate_path
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - send_to_main
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_initiate_path(struct ctrl_state *ctrl_state, int
      pcc_id,\n\t\t\t       struct path *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/pathd/path_pcep_controller.c:371,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:372,1
    - Dst: send_to_main
      Src: /src/frr/pathd/path_pcep_controller.c:374,1
    - Dst: pcep_pcc_get_pcc_id
      Src: /src/frr/pathd/path_pcep_controller.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 376
    functionName: pcep_thread_remove_candidate_path_segments
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - pcep_pcc_get_pcc_id
    - send_to_main
    - PCEP_DEBUG
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_remove_candidate_path_segments(struct ctrl_state
      *ctrl_state,\n\t\t\t\t\t\tstruct pcc_state *pcc_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: schedule_thread_timer
      Src: /src/frr/pathd/path_pcep_controller.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_id
    - delay
    - thread
    argTypes:
    - struct ctrl_state*
    - int
    - int
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 385
    functionName: pcep_thread_schedule_sync_best_pce
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - schedule_thread_timer
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_schedule_sync_best_pce(struct ctrl_state *ctrl_state,\n\t\t\t\t\tint
      pcc_id, int delay,\n\t\t\t\t\tstruct event **thread)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_controller.c:393,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:394,1
    - Dst: timer_type_name
      Src: /src/frr/pathd/path_pcep_controller.c:394,1
    - Dst: timeout_type_name
      Src: /src/frr/pathd/path_pcep_controller.c:395,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:397,1
    - Dst: pthread_self
      Src: /src/frr/pathd/path_pcep_controller.c:400,1
    - Dst: event_cancel
      Src: /src/frr/pathd/path_pcep_controller.c:401,1
    - Dst: event_cancel_async
      Src: /src/frr/pathd/path_pcep_controller.c:403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 387
    functionDepth: 5
    functionLinenumber: 387
    functionLinenumberEnd: 405
    functionName: pcep_thread_cancel_timer
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - timeout_type_name
    - event_cancel_async
    - event_cancel
    - pthread_self
    - PCEP_DEBUG
    - XFREE
    - EVENT_ARG
    - timer_type_name
    linkageType: ''
    returnType: void
    signature: void pcep_thread_cancel_timer(struct event **thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backoff_delay
      Src: /src/frr/pathd/path_pcep_controller.c:410,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:411,1
    - Dst: schedule_thread_timer
      Src: /src/frr/pathd/path_pcep_controller.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_id
    - retry_count
    - thread
    argTypes:
    - struct ctrl_state*
    - int
    - int
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 415
    functionName: pcep_thread_schedule_reconnect
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - backoff_delay
    - PCEP_DEBUG
    - schedule_thread_timer
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_schedule_reconnect(struct ctrl_state *ctrl_state,
      int pcc_id,\n\t\t\t\t    int retry_count, struct event **thread)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:422,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:423,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:424,1
    - Dst: timeout_type_name
      Src: /src/frr/pathd/path_pcep_controller.c:425,1
    - Dst: schedule_thread_timer
      Src: /src/frr/pathd/path_pcep_controller.c:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - ctrl_state
    - pcc_id
    - timeout_type
    - delay
    - param
    - thread
    argTypes:
    - struct ctrl_state*
    - int
    - enum pcep_ctrl_timeout_type
    - uint32_t
    - void*
    - struct event**
    assertStmts:
    - condition: (timeout_type > TO_UNDEFINED)
      pos:
        line_end: 421
        line_start: 421
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (timeout_type < TO_MAX)
      pos:
        line_end: 422
        line_start: 422
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 428
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 428
    functionName: pcep_thread_schedule_timeout
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - timeout_type_name
    - PCEP_DEBUG
    - assert
    - schedule_thread_timer
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_schedule_timeout(struct ctrl_state *ctrl_state, int
      pcc_id,\n\t\t\t\t  enum pcep_ctrl_timeout_type timeout_type,\n\t\t\t\t  uint32_t
      delay, void *param,\n\t\t\t\t  struct event **thread)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:435,1
    - Dst: schedule_thread_timer_with_cb
      Src: /src/frr/pathd/path_pcep_controller.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctrl_state
    - delay
    - payload
    - thread
    - timer_cb
    argTypes:
    - struct ctrl_state*
    - int
    - void*
    - struct event**
    - pcep_ctrl_thread_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 439
    functionName: pcep_thread_schedule_pceplib_timer
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - schedule_thread_timer_with_cb
    - PCEP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_schedule_pceplib_timer(struct ctrl_state *ctrl_state,\n\t\t\t\t\tint
      delay, void *payload,\n\t\t\t\t\tstruct event **thread,\n\t\t\t\t\tpcep_ctrl_thread_callback
      timer_cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:445,1
    - Dst: schedule_thread_timer
      Src: /src/frr/pathd/path_pcep_controller.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_id
    - delay
    - thread
    argTypes:
    - struct ctrl_state*
    - int
    - int
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 448
    functionName: pcep_thread_schedule_session_timeout
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - PCEP_DEBUG
    - schedule_thread_timer
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_schedule_session_timeout(struct ctrl_state *ctrl_state,\n\t\t\t\t\t
      \ int pcc_id, int delay,\n\t\t\t\t\t  struct event **thread)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctrl_state
    argTypes:
    - struct ctrl_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 457
    functionName: pcep_thread_pcc_count
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pcep_thread_pcc_count(struct ctrl_state *ctrl_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:465,1
    - Dst: event_add_event
      Src: /src/frr/pathd/path_pcep_controller.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - ctrl_state
    - pcc_id
    - cb
    - path
    - payload
    argTypes:
    - struct ctrl_state*
    - int
    - pcep_refine_callback_t
    - struct path*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 475
    functionName: pcep_thread_refine_path
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - event_add_event
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_refine_path(struct ctrl_state *ctrl_state, int pcc_id,\n\t\t\t
      \   pcep_refine_callback_t cb, struct path *path,\n\t\t\t    void *payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:480,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:483,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:487,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:489,1
    - Dst: continue_lsp_update_handler
      Src: /src/frr/pathd/path_pcep_controller.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctrl_state
    - data
    argTypes:
    - struct ctrl_state*
    - struct pcep_refine_path_event_data*
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 479
        line_start: 479
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (continue_lsp_update_handler != NULL)
      pos:
        line_end: 482
        line_start: 482
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 491
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 491
    functionName: pcep_thread_path_refined_event
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - XFREE
    - pcep_pcc_get_pcc_by_id
    - continue_lsp_update_handler
    - assert
    linkageType: ''
    returnType: void
    signature: "void pcep_thread_path_refined_event(struct ctrl_state *ctrl_state,\n\t\t\t\t
      \   struct pcep_refine_path_event_data *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_controller.c:499,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:502,1
    - Dst: pcep_pcc_finalize
      Src: /src/frr/pathd/path_pcep_controller.c:506,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:511,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:512,1
    - Dst: atomic_store_explicit
      Src: /src/frr/pathd/path_pcep_controller.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 501
        line_start: 501
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 516
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 516
    functionName: pcep_thread_finish_event_handler
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - pcep_pcc_finalize
    - atomic_store_explicit
    - XFREE
    - EVENT_ARG
    - assert
    linkageType: ''
    returnType: void
    signature: void pcep_thread_finish_event_handler(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:527,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:531,1
    - Dst: event_add_timer
      Src: /src/frr/pathd/path_pcep_controller.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 8
    argNames:
    - ctrl_state
    - pcc_id
    - timer_type
    - timeout_type
    - delay
    - payload
    - thread
    - timer_cb
    argTypes:
    - struct ctrl_state*
    - int
    - enum pcep_ctrl_timer_type
    - enum pcep_ctrl_timeout_type
    - uint32_t
    - void*
    - struct event**
    - pcep_ctrl_thread_callback
    assertStmts:
    - condition: (thread != NULL)
      pos:
        line_end: 526
        line_start: 526
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 542
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 542
    functionName: schedule_thread_timer_with_cb
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - assert
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int schedule_thread_timer_with_cb(struct ctrl_state *ctrl_state, int
      pcc_id,\n\t\t\t\t  enum pcep_ctrl_timer_type timer_type,\n\t\t\t\t  enum pcep_ctrl_timeout_type
      timeout_type,\n\t\t\t\t  uint32_t delay, void *payload,\n\t\t\t\t  struct event
      **thread,\n\t\t\t\t  pcep_ctrl_thread_callback timer_cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: schedule_thread_timer_with_cb
      Src: /src/frr/pathd/path_pcep_controller.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - ctrl_state
    - pcc_id
    - timer_type
    - timeout_type
    - delay
    - payload
    - thread
    argTypes:
    - struct ctrl_state*
    - int
    - enum pcep_ctrl_timer_type
    - enum pcep_ctrl_timeout_type
    - uint32_t
    - void*
    - struct event**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 544
    functionDepth: 2
    functionLinenumber: 544
    functionLinenumberEnd: 552
    functionName: schedule_thread_timer
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 4
    functionsReached:
    - schedule_thread_timer_with_cb
    linkageType: ''
    returnType: int
    signature: "int schedule_thread_timer(struct ctrl_state *ctrl_state, int pcc_id,\n\t\t\t
      \ enum pcep_ctrl_timer_type timer_type,\n\t\t\t  enum pcep_ctrl_timeout_type
      timeout_type,\n\t\t\t  uint32_t delay, void *payload, struct event **thread)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_controller.c:557,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:558,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:560,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:565,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:571,1
    - Dst: pcep_pcc_reconnect
      Src: /src/frr/pathd/path_pcep_controller.c:574,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:577,1
    - Dst: pcep_pcc_timeout_handler
      Src: /src/frr/pathd/path_pcep_controller.c:580,1
    - Dst: pcep_pcc_timer_update_best_pce
      Src: /src/frr/pathd/path_pcep_controller.c:585,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:588,1
    - Dst: pcep_thread_remove_candidate_path_segments
      Src: /src/frr/pathd/path_pcep_controller.c:589,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_controller.c:595,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 559
        line_start: 559
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (data != NULL)
      pos:
        line_end: 557
        line_start: 557
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 599
      start: 554
    functionDepth: 2
    functionLinenumber: 554
    functionLinenumberEnd: 599
    functionName: pcep_thread_timer_handler
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - pcep_pcc_get_pcc_by_id
    - flog_warn
    - pcep_pcc_timer_update_best_pce
    - pcep_thread_remove_candidate_path_segments
    - XFREE
    - EVENT_ARG
    - pcep_pcc_timeout_handler
    - pcep_pcc_reconnect
    - assert
    linkageType: ''
    returnType: void
    signature: void pcep_thread_timer_handler(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_controller.c:603,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:604,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:607,1
    - Dst: pcep_pcc_pcep_event_handler
      Src: /src/frr/pathd/path_pcep_controller.c:615,1
    - Dst: destroy_pcep_event
      Src: /src/frr/pathd/path_pcep_controller.c:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 603
        line_start: 603
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 621
      start: 601
    functionDepth: 5
    functionLinenumber: 601
    functionLinenumberEnd: 621
    functionName: pcep_thread_pcep_event
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - EVENT_ARG
    - destroy_pcep_event
    - XFREE
    - pcep_pcc_pcep_event_handler
    - assert
    linkageType: ''
    returnType: void
    signature: void pcep_thread_pcep_event(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:630,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:634,1
    - Dst: event_add_read
      Src: /src/frr/pathd/path_pcep_controller.c:643,1
    - Dst: event_add_write
      Src: /src/frr/pathd/path_pcep_controller.c:646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 8
    argNames:
    - ctrl_state
    - pcc_id
    - type
    - is_read
    - payload
    - fd
    - thread
    - socket_cb
    argTypes:
    - struct ctrl_state*
    - int
    - enum pcep_ctrl_socket_type
    - bool
    - void*
    - int
    - struct event**
    - pcep_ctrl_thread_callback
    assertStmts:
    - condition: (thread != NULL)
      pos:
        line_end: 629
        line_start: 629
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 651
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 651
    functionName: schedule_thread_socket
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - event_add_write
    - assert
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int schedule_thread_socket(struct ctrl_state *ctrl_state, int pcc_id,\n\t\t\t
      \  enum pcep_ctrl_socket_type type, bool is_read,\n\t\t\t   void *payload, int
      fd, struct event **thread,\n\t\t\t   pcep_ctrl_thread_callback socket_cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: schedule_thread_socket
      Src: /src/frr/pathd/path_pcep_controller.c:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - fpt
    - thread
    - fd
    - payload
    - socket_cb
    argTypes:
    - void*
    - void**
    - int
    - void*
    - pcep_ctrl_thread_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 661
    functionName: pcep_thread_socket_write
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - schedule_thread_socket
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_socket_write(void *fpt, void **thread, int fd, void
      *payload,\n\t\t\t     pcep_ctrl_thread_callback socket_cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: schedule_thread_socket
      Src: /src/frr/pathd/path_pcep_controller.c:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - fpt
    - thread
    - fd
    - payload
    - socket_cb
    argTypes:
    - void*
    - void**
    - int
    - void*
    - pcep_ctrl_thread_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 671
    functionName: pcep_thread_socket_read
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - schedule_thread_socket
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_socket_read(void *fpt, void **thread, int fd, void
      *payload,\n\t\t\t    pcep_ctrl_thread_callback socket_cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_to_thread_with_cb
      Src: /src/frr/pathd/path_pcep_controller.c:678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fpt
    - payload
    - cb
    argTypes:
    - void*
    - void*
    - pcep_ctrl_thread_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 680
    functionName: pcep_thread_send_ctrl_event
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - send_to_thread_with_cb
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_send_ctrl_event(void *fpt, void *payload,\n\t\t\t\tpcep_ctrl_thread_callback
      cb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_to_thread_with_cb
      Src: /src/frr/pathd/path_pcep_controller.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ctrl_state
    - pcc_id
    - type
    - sub_type
    - payload
    argTypes:
    - struct ctrl_state*
    - int
    - enum pcep_ctrl_event_type
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 684
    functionDepth: 1
    functionLinenumber: 684
    functionLinenumberEnd: 690
    functionName: send_to_thread
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 10
    functionsReached:
    - send_to_thread_with_cb
    linkageType: ''
    returnType: int
    signature: "int send_to_thread(struct ctrl_state *ctrl_state, int pcc_id,\n\t\t
      \  enum pcep_ctrl_event_type type, uint32_t sub_type,\n\t\t   void *payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:698,1
    - Dst: event_add_event
      Src: /src/frr/pathd/path_pcep_controller.c:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 6
    argNames:
    - ctrl_state
    - pcc_id
    - type
    - sub_type
    - payload
    - event_cb
    argTypes:
    - struct ctrl_state*
    - int
    - enum pcep_ctrl_event_type
    - uint32_t
    - void*
    - pcep_ctrl_thread_callback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 708
    functionName: send_to_thread_with_cb
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 2
    functionsReached:
    - event_add_event
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int send_to_thread_with_cb(struct ctrl_state *ctrl_state, int pcc_id,\n\t\t\t
      \  enum pcep_ctrl_event_type type, uint32_t sub_type,\n\t\t\t   void *payload,
      pcep_ctrl_thread_callback event_cb)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_controller.c:713,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:714,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:716,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:721,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:738,1
    - Dst: pcep_thread_event_update_pcc_options
      Src: /src/frr/pathd/path_pcep_controller.c:740,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:743,1
    - Dst: pcep_thread_event_update_pce_options
      Src: /src/frr/pathd/path_pcep_controller.c:745,1
    - Dst: pcep_thread_event_remove_pcc
      Src: /src/frr/pathd/path_pcep_controller.c:750,1
    - Dst: pcep_pcc_multi_pce_remove_pcc
      Src: /src/frr/pathd/path_pcep_controller.c:751,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:755,1
    - Dst: pcep_thread_event_pathd_event
      Src: /src/frr/pathd/path_pcep_controller.c:758,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:762,1
    - Dst: pcep_pcc_multi_pce_sync_path
      Src: /src/frr/pathd/path_pcep_controller.c:764,1
    - Dst: pcep_thread_event_sync_path
      Src: /src/frr/pathd/path_pcep_controller.c:766,1
    - Dst: pcep_thread_event_sync_done
      Src: /src/frr/pathd/path_pcep_controller.c:769,1
    - Dst: pcep_pcc_get_pcc_by_name
      Src: /src/frr/pathd/path_pcep_controller.c:772,1
    - Dst: pcep_pcc_disable
      Src: /src/frr/pathd/path_pcep_controller.c:775,1
    - Dst: pcep_pcc_enable
      Src: /src/frr/pathd/path_pcep_controller.c:776,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_controller.c:778,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:784,1
    - Dst: pcep_copy_path
      Src: /src/frr/pathd/path_pcep_controller.c:789,1
    - Dst: pcep_pcc_send_report
      Src: /src/frr/pathd/path_pcep_controller.c:790,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:797,1
    - Dst: pcep_pcc_send_report
      Src: /src/frr/pathd/path_pcep_controller.c:798,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:803,1
    - Dst: pcep_thread_path_refined_event
      Src: /src/frr/pathd/path_pcep_controller.c:805,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:808,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:810,1
    - Dst: pcep_pcc_send_error
      Src: /src/frr/pathd/path_pcep_controller.c:811,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_controller.c:815,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 74
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (payload != NULL)
      pos:
        line_end: 802
        line_start: 802
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (payload != NULL)
      pos:
        line_end: 737
        line_start: 737
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 715
        line_start: 715
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (payload != NULL)
      pos:
        line_end: 783
        line_start: 783
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (payload != NULL)
      pos:
        line_end: 742
        line_start: 742
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (payload != NULL)
      pos:
        line_end: 761
        line_start: 761
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (payload != NULL)
      pos:
        line_end: 754
        line_start: 754
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (payload != NULL)
      pos:
        line_end: 807
        line_start: 807
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (data != NULL)
      pos:
        line_end: 713
        line_start: 713
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 820
      start: 710
    functionDepth: 3
    functionLinenumber: 710
    functionLinenumberEnd: 820
    functionName: pcep_thread_event_handler
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - pcep_pcc_send_error
    - pcep_thread_event_sync_done
    - pcep_pcc_send_report
    - pcep_thread_event_sync_path
    - pcep_thread_event_update_pcc_options
    - flog_warn
    - pcep_pcc_enable
    - pcep_thread_event_remove_pcc
    - EVENT_ARG
    - assert
    - pcep_thread_event_update_pce_options
    - pcep_pcc_multi_pce_sync_path
    - pcep_pcc_get_pcc_by_name
    - pcep_copy_path
    - pcep_thread_event_pathd_event
    - XFREE
    - pcep_pcc_get_pcc_by_id
    - pcep_thread_path_refined_event
    - pcep_pcc_disable
    - pcep_pcc_multi_pce_remove_pcc
    linkageType: ''
    returnType: void
    signature: void pcep_thread_event_handler(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:825,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:827,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctrl_state
    - opts
    argTypes:
    - struct ctrl_state*
    - struct pcc_opts*
    assertStmts:
    - condition: (opts != NULL)
      pos:
        line_end: 824
        line_start: 824
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 831
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 831
    functionName: pcep_thread_event_update_pcc_options
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - XFREE
    - assert
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_event_update_pcc_options(struct ctrl_state *ctrl_state,\n\t\t\t\t\t
      struct pcc_opts *opts)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_get_pcc_id_by_ip_port
      Src: /src/frr/pathd/path_pcep_controller.c:843,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:846,1
    - Dst: pcep_pcc_initialize
      Src: /src/frr/pathd/path_pcep_controller.c:848,1
    - Dst: get_next_id
      Src: /src/frr/pathd/path_pcep_controller.c:849,1
    - Dst: set_pcc_state
      Src: /src/frr/pathd/path_pcep_controller.c:850,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:851,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:857,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_controller.c:858,1
    - Dst: pcep_pcc_update
      Src: /src/frr/pathd/path_pcep_controller.c:860,1
    - Dst: flog_err
      Src: /src/frr/pathd/path_pcep_controller.c:861,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_id
    - pce_opts
    argTypes:
    - struct ctrl_state*
    - int
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 833
    functionDepth: 1
    functionLinenumber: 833
    functionLinenumberEnd: 867
    functionName: pcep_thread_event_update_pce_options
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_initialize
    - pcep_pcc_get_pcc_by_id
    - set_pcc_state
    - XCALLOC
    - get_next_id
    - flog_err
    - XFREE
    - memcpy
    - pcep_pcc_update
    - pcep_pcc_get_pcc_id_by_ip_port
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_event_update_pce_options(struct ctrl_state *ctrl_state,\n\t\t\t\t\t
      int pcc_id, struct pce_opts *pce_opts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:874,1
    - Dst: remove_pcc_state
      Src: /src/frr/pathd/path_pcep_controller.c:876,1
    - Dst: pcep_pcc_finalize
      Src: /src/frr/pathd/path_pcep_controller.c:877,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_id
    argTypes:
    - struct ctrl_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 869
    functionDepth: 1
    functionLinenumber: 869
    functionLinenumberEnd: 881
    functionName: pcep_thread_event_remove_pcc_by_id
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - remove_pcc_state
    - pcep_pcc_get_pcc_by_id
    - pcep_pcc_finalize
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_event_remove_pcc_by_id(struct ctrl_state *ctrl_state,\n\t\t\t\t
      \      int pcc_id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:885,1
    - Dst: pcep_thread_event_remove_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:888,1
    - Dst: pcep_pcc_get_pcc_id_by_idx
      Src: /src/frr/pathd/path_pcep_controller.c:890,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctrl_state
    argTypes:
    - struct ctrl_state*
    assertStmts:
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 884
        line_start: 884
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 893
      start: 883
    functionDepth: 2
    functionLinenumber: 883
    functionLinenumberEnd: 893
    functionName: pcep_thread_event_remove_pcc_all
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - pcep_thread_event_remove_pcc_by_id
    - assert
    - pcep_pcc_get_pcc_id_by_idx
    linkageType: ''
    returnType: int
    signature: int pcep_thread_event_remove_pcc_all(struct ctrl_state *ctrl_state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:898,1
    - Dst: pcep_pcc_get_pcc_id_by_ip_port
      Src: /src/frr/pathd/path_pcep_controller.c:901,1
    - Dst: pcep_thread_event_remove_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:904,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:908,1
    - Dst: pcep_thread_event_remove_pcc_all
      Src: /src/frr/pathd/path_pcep_controller.c:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctrl_state
    - pce_opts
    argTypes:
    - struct ctrl_state*
    - struct pce_opts*
    assertStmts:
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 897
        line_start: 897
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 914
      start: 895
    functionDepth: 3
    functionLinenumber: 895
    functionLinenumberEnd: 914
    functionName: pcep_thread_event_remove_pcc
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - assert
    - pcep_thread_event_remove_pcc_by_id
    - pcep_thread_event_remove_pcc_all
    - XFREE
    - pcep_pcc_get_pcc_id_by_ip_port
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_event_remove_pcc(struct ctrl_state *ctrl_state,\n\t\t\t\t
      struct pce_opts *pce_opts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:920,1
    - Dst: pcep_pcc_sync_path
      Src: /src/frr/pathd/path_pcep_controller.c:921,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_controller.c:922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_id
    - path
    argTypes:
    - struct ctrl_state*
    - int
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 924
    functionName: pcep_thread_event_sync_path
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - pcep_free_path
    - pcep_pcc_get_pcc_by_id
    - pcep_pcc_sync_path
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_event_sync_path(struct ctrl_state *ctrl_state, int
      pcc_id,\n\t\t\t\tstruct path *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:929,1
    - Dst: pcep_pcc_sync_done
      Src: /src/frr/pathd/path_pcep_controller.c:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_id
    argTypes:
    - struct ctrl_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 932
    functionName: pcep_thread_event_sync_done
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_get_pcc_by_id
    - pcep_pcc_sync_done
    linkageType: ''
    returnType: int
    signature: int pcep_thread_event_sync_done(struct ctrl_state *ctrl_state, int
      pcc_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_pathd_event_handler
      Src: /src/frr/pathd/path_pcep_controller.c:943,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_controller.c:948,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctrl_state
    - type
    - path
    argTypes:
    - struct ctrl_state*
    - enum pcep_pathd_event_type
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 934
    functionDepth: 1
    functionLinenumber: 934
    functionLinenumberEnd: 951
    functionName: pcep_thread_event_pathd_event
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - pcep_free_path
    - pcep_pcc_pathd_event_handler
    linkageType: ''
    returnType: int
    signature: "int pcep_thread_event_pathd_event(struct ctrl_state *ctrl_state,\n\t\t\t\t
      \ enum pcep_pathd_event_type type,\n\t\t\t\t  struct path *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_controller.c:961,1
    - Dst: event_add_event
      Src: /src/frr/pathd/path_pcep_controller.c:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_id
    - type
    - payload
    argTypes:
    - struct ctrl_state*
    - int
    - enum pcep_main_event_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 970
    functionName: send_to_main
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 4
    functionsReached:
    - event_add_event
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: "int send_to_main(struct ctrl_state *ctrl_state, int pcc_id,\n\t\t
      enum pcep_main_event_type type, void *payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_controller.c:975,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:976,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_controller.c:981,1
    - Dst: handler
      Src: /src/frr/pathd/path_pcep_controller.c:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 975
        line_start: 975
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 984
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 984
    functionName: pcep_main_event_handler
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 0
    functionsReached:
    - XFREE
    - handler
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pcep_main_event_handler(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fpt
    - ctrl_state
    argTypes:
    - struct frr_pthread*
    - struct ctrl_state*
    assertStmts:
    - condition: (fpt != NULL)
      pos:
        line_end: 990
        line_start: 990
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 993
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 993
    functionName: set_ctrl_state
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void set_ctrl_state(struct frr_pthread *fpt, struct ctrl_state *ctrl_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:997,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:998,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fpt
    argTypes:
    - struct frr_pthread*
    assertStmts:
    - condition: (fpt != NULL)
      pos:
        line_end: 996
        line_start: 996
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 1001
        line_start: 1001
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (fpt->data != NULL)
      pos:
        line_end: 997
        line_start: 997
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 1004
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1004
    functionName: get_ctrl_state
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 12
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct ctrl_state
    signature: struct ctrl_state *get_ctrl_state(struct frr_pthread *fpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctrl_state
    argTypes:
    - struct ctrl_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1006
    functionDepth: 0
    functionLinenumber: 1006
    functionLinenumberEnd: 1009
    functionName: get_next_id
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_next_id(struct ctrl_state *ctrl_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:1013,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:1014,1
    - Dst: pcep_pcc_get_pcc_id
      Src: /src/frr/pathd/path_pcep_controller.c:1014,1
    - Dst: pcep_pcc_get_free_pcc_idx
      Src: /src/frr/pathd/path_pcep_controller.c:1016,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:1020,1
    - Dst: pcep_pcc_get_pcc_id
      Src: /src/frr/pathd/path_pcep_controller.c:1021,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:1024,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts:
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 1012
        line_start: 1012
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (pcep_pcc_get_pcc_id(pcc_state) != 0)
      pos:
        line_end: 1013
        line_start: 1013
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 1027
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1027
    functionName: set_pcc_state
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_get_pcc_id
    - PCEP_DEBUG
    - pcep_pcc_get_free_pcc_idx
    - assert
    linkageType: ''
    returnType: int
    signature: int set_pcc_state(struct ctrl_state *ctrl_state, struct pcc_state *pcc_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:1032,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:1033,1
    - Dst: pcep_pcc_get_pcc_id
      Src: /src/frr/pathd/path_pcep_controller.c:1033,1
    - Dst: pcep_pcc_get_pcc_idx_by_id
      Src: /src/frr/pathd/path_pcep_controller.c:1036,1
    - Dst: pcep_pcc_get_pcc_id
      Src: /src/frr/pathd/path_pcep_controller.c:1037,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_controller.c:1041,1
    - Dst: pcep_pcc_get_pcc_id
      Src: /src/frr/pathd/path_pcep_controller.c:1042,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts:
    - condition: (ctrl_state != NULL)
      pos:
        line_end: 1031
        line_start: 1031
        source_file: /src/frr/pathd/path_pcep_controller.c
    - condition: (pcep_pcc_get_pcc_id(pcc_state) != 0)
      pos:
        line_end: 1032
        line_start: 1032
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 1044
      start: 1029
    functionDepth: 1
    functionLinenumber: 1029
    functionLinenumberEnd: 1044
    functionName: remove_pcc_state
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_get_pcc_id
    - pcep_pcc_get_pcc_idx_by_id
    - PCEP_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: "void remove_pcc_state(struct ctrl_state *ctrl_state,\n\t\t      struct
      pcc_state *pcc_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MIN
      Src: /src/frr/pathd/path_pcep_controller.c:1048,1
    - Dst: frr_weak_random
      Src: /src/frr/pathd/path_pcep_controller.c:1049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - max
    - base
    - retry_count
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1052
    functionName: backoff_delay
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - MIN
    - frr_weak_random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t backoff_delay(uint32_t max, uint32_t base, uint32_t retry_count)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:1073,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum pcep_ctrl_timer_type
    assertStmts:
    - condition: (!"Reached end of function where we did not expect to")
      pos:
        line_end: 1072
        line_start: 1072
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 1074
      start: 1054
    functionDepth: 1
    functionLinenumber: 1054
    functionLinenumberEnd: 1074
    functionName: timer_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *timer_type_name(enum pcep_ctrl_timer_type type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_controller.c:1087,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum pcep_ctrl_timeout_type
    assertStmts:
    - condition: (!"Reached end of function where we did not expect to")
      pos:
        line_end: 1086
        line_start: 1086
        source_file: /src/frr/pathd/path_pcep_controller.c
    constantsTouched: []
    func_position:
      end: 1088
      start: 1076
    functionDepth: 1
    functionLinenumber: 1076
    functionLinenumberEnd: 1088
    functionName: timeout_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_controller.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *timeout_type_name(enum pcep_ctrl_timeout_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: PATH_POLICY_DEBUG
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_POLICY_DEBUG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct srte_segment_entry*
    - struct srte_segment_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: srte_segment_entry_compare
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int srte_segment_entry_compare(const struct srte_segment_entry *a,\n\t\t\t\t\t
      \    const struct srte_segment_entry *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/pathd.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct srte_segment_list*
    - struct srte_segment_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: srte_segment_list_compare
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int srte_segment_list_compare(const struct srte_segment_list *a,\n\t\t\t\t\t
      \   const struct srte_segment_list *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct srte_candidate*
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: srte_candidate_compare
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int srte_candidate_compare(const struct srte_candidate *a,\n\t\t\t\t\t
      const struct srte_candidate *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sr_policy_compare
      Src: /src/frr/pathd/pathd.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct srte_policy*
    - struct srte_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 3
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: srte_policy_compare
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - sr_policy_compare
    linkageType: ''
    returnType: int
    signature: "int srte_policy_compare(const struct srte_policy *a,\n\t\t\t\t      const
      struct srte_policy *b)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:104,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:106,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - policy
    argTypes:
    - struct srte_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: srte_policy_status_log
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - ipaddr2str
    - PATH_POLICY_DEBUG
    linkageType: ''
    returnType: void
    signature: void srte_policy_status_log(struct srte_policy *policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/pathd.c:124,1
    - Dst: strlcpy
      Src: /src/frr/pathd/pathd.c:125,1
    - Dst: RB_INIT
      Src: /src/frr/pathd/pathd.c:126,1
    - Dst: RB_INSERT
      Src: /src/frr/pathd/pathd.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 130
    functionName: srte_segment_list_add
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - RB_INIT
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: struct srte_segment_list
    signature: struct srte_segment_list *srte_segment_list_add(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pathd/pathd.c:143,1
    - Dst: srte_segment_entry_del
      Src: /src/frr/pathd/pathd.c:145,1
    - Dst: RB_REMOVE
      Src: /src/frr/pathd/pathd.c:147,1
    - Dst: XFREE
      Src: /src/frr/pathd/pathd.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - segment_list
    argTypes:
    - struct srte_segment_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 149
    functionName: srte_segment_list_del
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - XFREE
    - RB_FOREACH_SAFE
    - srte_segment_entry_del
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void srte_segment_list_del(struct srte_segment_list *segment_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pathd/pathd.c:161,1
    - Dst: RB_FIND
      Src: /src/frr/pathd/pathd.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: srte_segment_list_find
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct srte_segment_list
    signature: struct srte_segment_list *srte_segment_list_find(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/pathd.c:177,1
    - Dst: RB_INSERT
      Src: /src/frr/pathd/pathd.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - segment_list
    - index
    argTypes:
    - struct srte_segment_list*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 183
    functionName: srte_segment_entry_add
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: struct srte_segment_entry
    signature: 'struct srte_segment_entry *

      srte_segment_entry_add(struct srte_segment_list *segment_list, uint32_t index)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_REMOVE
      Src: /src/frr/pathd/pathd.c:192,1
    - Dst: XFREE
      Src: /src/frr/pathd/pathd.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - segment
    argTypes:
    - struct srte_segment_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: srte_segment_entry_del
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - XFREE
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void srte_segment_entry_del(struct srte_segment_entry *segment)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pathd/pathd.c:221,1
    - Dst: memcpy
      Src: /src/frr/pathd/pathd.c:229,1
    - Dst: srte_ted_do_query_type_f
      Src: /src/frr/pathd/pathd.c:231,1
    - Dst: memcpy
      Src: /src/frr/pathd/pathd.c:234,1
    - Dst: srte_ted_do_query_type_c
      Src: /src/frr/pathd/pathd.c:245,1
    - Dst: srte_ted_do_query_type_c
      Src: /src/frr/pathd/pathd.c:253,1
    - Dst: srte_ted_do_query_type_e
      Src: /src/frr/pathd/pathd.c:261,1
    - Dst: srte_ted_do_query_type_e
      Src: /src/frr/pathd/pathd.c:269,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 59
    argCount: 8
    argNames:
    - segment
    - type
    - local_ip
    - local_iface
    - remote_ip
    - remote_iface
    - algo
    - pref_len
    argTypes:
    - struct srte_segment_entry*
    - enum srte_segment_nai_type
    - struct ipaddr*
    - uint32_t
    - struct ipaddr*
    - uint32_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 279
    functionName: srte_segment_entry_set_nai
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - srte_ted_do_query_type_c
    - srte_ted_do_query_type_e
    - memcpy
    - srte_ted_do_query_type_f
    linkageType: ''
    returnType: int
    signature: "int srte_segment_entry_set_nai(struct srte_segment_entry *segment,\n\t\t\t
      \      enum srte_segment_nai_type type,\n\t\t\t       struct ipaddr *local_ip,
      uint32_t local_iface,\n\t\t\t       struct ipaddr *remote_ip, uint32_t remote_iface,\n\t\t\t
      \      uint8_t algo, uint8_t pref_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:300,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - s_list
    - s_entry
    - ted_sid
    argTypes:
    - struct srte_segment_list*
    - struct srte_segment_entry*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 302
    functionName: srte_segment_set_local_modification
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void srte_segment_set_local_modification(struct srte_segment_list
      *s_list,\n\t\t\t\t\t struct srte_segment_entry *s_entry,\n\t\t\t\t\t uint32_t
      ted_sid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/pathd.c:319,1
    - Dst: strlcpy
      Src: /src/frr/pathd/pathd.c:325,1
    - Dst: RB_INIT
      Src: /src/frr/pathd/pathd.c:328,1
    - Dst: RB_INSERT
      Src: /src/frr/pathd/pathd.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - color
    - endpoint
    - origin
    - originator
    argTypes:
    - uint32_t
    - struct ipaddr*
    - enum srte_protocol_origin
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 332
    functionName: srte_policy_add
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - RB_INIT
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: struct srte_policy
    signature: "struct srte_policy *srte_policy_add(uint32_t color, struct ipaddr
      *endpoint,\n\t\t\t\t    enum srte_protocol_origin origin,\n\t\t\t\t    const
      char *originator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_zebra_delete_sr_policy
      Src: /src/frr/pathd/pathd.c:346,1
    - Dst: path_zebra_release_label
      Src: /src/frr/pathd/pathd.c:348,1
    - Dst: RB_EMPTY
      Src: /src/frr/pathd/pathd.c:350,1
    - Dst: RB_ROOT
      Src: /src/frr/pathd/pathd.c:352,1
    - Dst: trigger_pathd_candidate_removed
      Src: /src/frr/pathd/pathd.c:353,1
    - Dst: srte_candidate_del
      Src: /src/frr/pathd/pathd.c:354,1
    - Dst: RB_REMOVE
      Src: /src/frr/pathd/pathd.c:357,1
    - Dst: XFREE
      Src: /src/frr/pathd/pathd.c:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - policy
    argTypes:
    - struct srte_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 342
    functionDepth: 6
    functionLinenumber: 342
    functionLinenumberEnd: 359
    functionName: srte_policy_del
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - RB_REMOVE
    - path_zebra_delete_sr_policy
    - XFREE
    - trigger_pathd_candidate_removed
    - srte_candidate_del
    - RB_EMPTY
    - RB_ROOT
    - path_zebra_release_label
    linkageType: ''
    returnType: void
    signature: void srte_policy_del(struct srte_policy *policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/pathd/pathd.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - color
    - endpoint
    argTypes:
    - uint32_t
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 377
    functionName: srte_policy_find
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 3
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct srte_policy
    signature: struct srte_policy *srte_policy_find(uint32_t color, struct ipaddr
      *endpoint)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/pathd.c:391,1
    - Dst: RB_EMPTY
      Src: /src/frr/pathd/pathd.c:393,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/pathd.c:396,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:397,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/pathd.c:399,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/pathd.c:401,1
    - Dst: srte_ted_do_query_type_f
      Src: /src/frr/pathd/pathd.c:414,1
    - Dst: srte_ted_do_query_type_e
      Src: /src/frr/pathd/pathd.c:426,1
    - Dst: srte_ted_do_query_type_e
      Src: /src/frr/pathd/pathd.c:437,1
    - Dst: srte_ted_do_query_type_c
      Src: /src/frr/pathd/pathd.c:448,1
    - Dst: srte_ted_do_query_type_c
      Src: /src/frr/pathd/pathd.c:459,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:472,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:475,1
    - Dst: srte_apply_changes
      Src: /src/frr/pathd/pathd.c:477,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 480
    functionName: srte_policy_update_ted_sid
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - srte_ted_do_query_type_e
    - PATH_TED_DEBUG
    - srte_ted_do_query_type_c
    - CHECK_FLAG
    - path_ted_is_initialized
    - srte_ted_do_query_type_f
    - SET_FLAG
    - UNSET_FLAG
    - srte_apply_changes
    - RB_EMPTY
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int srte_policy_update_ted_sid(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: path_zebra_release_label
      Src: /src/frr/pathd/pathd.c:492,1
    - Dst: path_zebra_add_sr_policy
      Src: /src/frr/pathd/pathd.c:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - policy
    - binding_sid
    argTypes:
    - struct srte_policy*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 488
    functionDepth: 6
    functionLinenumber: 488
    functionLinenumberEnd: 500
    functionName: srte_policy_update_binding_sid
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - path_zebra_release_label
    - path_zebra_add_sr_policy
    linkageType: ''
    returnType: void
    signature: "void srte_policy_update_binding_sid(struct srte_policy *policy,\n\t\t\t\t
      \   uint32_t binding_sid)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_REVERSE
      Src: /src/frr/pathd/pathd.c:513,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:516,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - policy
    argTypes:
    - struct srte_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 524
    functionName: srte_policy_best_candidate
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH_REVERSE
    - CHECK_FLAG
    linkageType: ''
    returnType: struct srte_candidate
    signature: 'struct srte_candidate *

      srte_policy_best_candidate(const struct srte_policy *policy)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pathd/pathd.c:530,1
    - Dst: srte_policy_del
      Src: /src/frr/pathd/pathd.c:531,1
    - Dst: path_zebra_stop
      Src: /src/frr/pathd/pathd.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 526
    functionDepth: 7
    functionLinenumber: 526
    functionLinenumberEnd: 534
    functionName: srte_clean_zebra
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH_SAFE
    - srte_policy_del
    - path_zebra_stop
    linkageType: ''
    returnType: void
    signature: void srte_clean_zebra(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pathd/pathd.c:551,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:552,1
    - Dst: srte_policy_status_log
      Src: /src/frr/pathd/pathd.c:555,1
    - Dst: srte_policy_del
      Src: /src/frr/pathd/pathd.c:557,1
    - Dst: srte_policy_apply_changes
      Src: /src/frr/pathd/pathd.c:560,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:561,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:562,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pathd/pathd.c:565,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:567,1
    - Dst: srte_segment_list_del
      Src: /src/frr/pathd/pathd.c:568,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:571,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:572,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 546
    functionDepth: 7
    functionLinenumber: 546
    functionLinenumberEnd: 574
    functionName: srte_apply_changes
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 4
    functionsReached:
    - srte_policy_del
    - srte_segment_list_del
    - CHECK_FLAG
    - srte_policy_apply_changes
    - srte_policy_status_log
    - RB_FOREACH_SAFE
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void srte_apply_changes(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:593,1
    - Dst: srte_policy_best_candidate
      Src: /src/frr/pathd/pathd.c:597,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:600,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:608,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:609,1
    - Dst: path_zebra_delete_sr_policy
      Src: /src/frr/pathd/pathd.c:617,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:621,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:622,1
    - Dst: path_zebra_add_sr_policy
      Src: /src/frr/pathd/pathd.c:625,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:633,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:637,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:642,1
    - Dst: path_zebra_add_sr_policy
      Src: /src/frr/pathd/pathd.c:647,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pathd/pathd.c:652,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:654,1
    - Dst: trigger_pathd_candidate_removed
      Src: /src/frr/pathd/pathd.c:655,1
    - Dst: srte_candidate_del
      Src: /src/frr/pathd/pathd.c:656,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:658,1
    - Dst: trigger_pathd_candidate_created
      Src: /src/frr/pathd/pathd.c:659,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:660,1
    - Dst: trigger_pathd_candidate_updated
      Src: /src/frr/pathd/pathd.c:661,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/pathd.c:663,1
    - Dst: trigger_pathd_candidate_updated
      Src: /src/frr/pathd/pathd.c:665,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:668,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:669,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 1
    argNames:
    - policy
    argTypes:
    - struct srte_policy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 586
    functionDepth: 6
    functionLinenumber: 586
    functionLinenumberEnd: 671
    functionName: srte_policy_apply_changes
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - path_zebra_add_sr_policy
    - CHECK_FLAG
    - trigger_pathd_candidate_updated
    - trigger_pathd_candidate_created
    - SET_FLAG
    - UNSET_FLAG
    - path_zebra_delete_sr_policy
    - RB_FOREACH_SAFE
    - trigger_pathd_candidate_removed
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - srte_policy_best_candidate
    - srte_candidate_del
    linkageType: ''
    returnType: void
    signature: void srte_policy_apply_changes(struct srte_policy *policy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/pathd.c:688,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/pathd.c:689,1
    - Dst: frr_weak_random
      Src: /src/frr/pathd/pathd.c:694,1
    - Dst: strlcpy
      Src: /src/frr/pathd/pathd.c:697,1
    - Dst: RB_INSERT
      Src: /src/frr/pathd/pathd.c:709,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - policy
    - preference
    - origin
    - originator
    argTypes:
    - struct srte_policy*
    - uint32_t
    - enum srte_protocol_origin
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 680
    functionDepth: 1
    functionLinenumber: 680
    functionLinenumberEnd: 712
    functionName: srte_candidate_add
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - frr_weak_random
    - RB_INSERT
    - XCALLOC
    linkageType: ''
    returnType: struct srte_candidate
    signature: "struct srte_candidate *srte_candidate_add(struct srte_policy *policy,\n\t\t\t\t\t
      \ uint32_t preference,\n\t\t\t\t\t  enum srte_protocol_origin origin,\n\t\t\t\t\t
      \ const char *originator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_REMOVE
      Src: /src/frr/pathd/pathd.c:727,1
    - Dst: XFREE
      Src: /src/frr/pathd/pathd.c:730,1
    - Dst: XFREE
      Src: /src/frr/pathd/pathd.c:731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 723
    functionDepth: 1
    functionLinenumber: 723
    functionLinenumberEnd: 732
    functionName: srte_candidate_del
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - XFREE
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void srte_candidate_del(struct srte_candidate *candidate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:749,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:750,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:754,1
    - Dst: COND_FLAG
      Src: /src/frr/pathd/pathd.c:755,1
    - Dst: srte_lsp_set_bandwidth
      Src: /src/frr/pathd/pathd.c:758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - candidate
    - bandwidth
    - required
    argTypes:
    - struct srte_candidate*
    - float
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 759
    functionName: srte_candidate_set_bandwidth
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - COND_FLAG
    - SET_FLAG
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - srte_lsp_set_bandwidth
    linkageType: ''
    returnType: void
    signature: "void srte_candidate_set_bandwidth(struct srte_candidate *candidate,\n\t\t\t\t
      \ float bandwidth, bool required)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:777,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:778,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:782,1
    - Dst: COND_FLAG
      Src: /src/frr/pathd/pathd.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - lsp
    - bandwidth
    - required
    argTypes:
    - struct srte_lsp*
    - float
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 785
    functionName: srte_lsp_set_bandwidth
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - SET_FLAG
    - COND_FLAG
    linkageType: ''
    returnType: void
    signature: "void srte_lsp_set_bandwidth(struct srte_lsp *lsp, float bandwidth,\n\t\t\t
      \   bool required)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:799,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:800,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:802,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:803,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:805,1
    - Dst: srte_lsp_unset_bandwidth
      Src: /src/frr/pathd/pathd.c:806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 807
    functionName: srte_candidate_unset_bandwidth
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - srte_lsp_unset_bandwidth
    - SET_FLAG
    - UNSET_FLAG
    - ipaddr2str
    - PATH_POLICY_DEBUG
    linkageType: ''
    returnType: void
    signature: void srte_candidate_unset_bandwidth(struct srte_candidate *candidate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:822,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:823,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:825,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:826,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - lsp
    argTypes:
    - struct srte_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 829
    functionName: srte_lsp_unset_bandwidth
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - SET_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void srte_lsp_unset_bandwidth(struct srte_lsp *lsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:851,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:852,1
    - Dst: srte_candidate_metric_name
      Src: /src/frr/pathd/pathd.c:855,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:858,1
    - Dst: srte_set_metric
      Src: /src/frr/pathd/pathd.c:859,1
    - Dst: srte_lsp_set_metric
      Src: /src/frr/pathd/pathd.c:861,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - candidate
    - type
    - value
    - required
    - is_bound
    - is_computed
    argTypes:
    - struct srte_candidate*
    - enum srte_candidate_metric_type
    - float
    - bool
    - bool
    - bool
    assertStmts:
    - condition: ((type > 0) && (type <= MAX_METRIC_TYPE))
      pos:
        line_end: 857
        line_start: 857
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 864
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 864
    functionName: srte_candidate_set_metric
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - srte_candidate_metric_name
    - srte_lsp_set_metric
    - SET_FLAG
    - srte_set_metric
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: "void srte_candidate_set_metric(struct srte_candidate *candidate,\n\t\t\t
      \      enum srte_candidate_metric_type type,\n\t\t\t       float value, bool
      required, bool is_bound,\n\t\t\t       bool is_computed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:886,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:887,1
    - Dst: srte_candidate_metric_name
      Src: /src/frr/pathd/pathd.c:890,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:893,1
    - Dst: srte_set_metric
      Src: /src/frr/pathd/pathd.c:894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - lsp
    - type
    - value
    - required
    - is_bound
    - is_computed
    argTypes:
    - struct srte_lsp*
    - enum srte_candidate_metric_type
    - float
    - bool
    - bool
    - bool
    assertStmts:
    - condition: ((type > 0) && (type <= MAX_METRIC_TYPE))
      pos:
        line_end: 892
        line_start: 892
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 896
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 896
    functionName: srte_lsp_set_metric
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - srte_candidate_metric_name
    - srte_set_metric
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: "void srte_lsp_set_metric(struct srte_lsp *lsp,\n\t\t\t enum srte_candidate_metric_type
      type, float value,\n\t\t\t bool required, bool is_bound, bool is_computed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:901,1
    - Dst: COND_FLAG
      Src: /src/frr/pathd/pathd.c:902,1
    - Dst: COND_FLAG
      Src: /src/frr/pathd/pathd.c:903,1
    - Dst: COND_FLAG
      Src: /src/frr/pathd/pathd.c:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - metric
    - value
    - required
    - is_bound
    - is_computed
    argTypes:
    - struct srte_metric*
    - float
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 898
    functionDepth: 1
    functionLinenumber: 898
    functionLinenumberEnd: 906
    functionName: srte_set_metric
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - COND_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void srte_set_metric(struct srte_metric *metric, float value, bool
      required,\n\t\t     bool is_bound, bool is_computed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:922,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:923,1
    - Dst: srte_candidate_metric_name
      Src: /src/frr/pathd/pathd.c:926,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:927,1
    - Dst: srte_unset_metric
      Src: /src/frr/pathd/pathd.c:928,1
    - Dst: srte_lsp_unset_metric
      Src: /src/frr/pathd/pathd.c:929,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - candidate
    - type
    argTypes:
    - struct srte_candidate*
    - enum srte_candidate_metric_type
    assertStmts:
    - condition: ((type > 0) && (type <= MAX_METRIC_TYPE))
      pos:
        line_end: 926
        line_start: 926
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 931
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 931
    functionName: srte_candidate_unset_metric
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - srte_candidate_metric_name
    - SET_FLAG
    - srte_unset_metric
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - srte_lsp_unset_metric
    - assert
    linkageType: ''
    returnType: void
    signature: "void srte_candidate_unset_metric(struct srte_candidate *candidate,\n\t\t\t\t
      enum srte_candidate_metric_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:948,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:949,1
    - Dst: srte_candidate_metric_name
      Src: /src/frr/pathd/pathd.c:952,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:953,1
    - Dst: srte_unset_metric
      Src: /src/frr/pathd/pathd.c:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lsp
    - type
    argTypes:
    - struct srte_lsp*
    - enum srte_candidate_metric_type
    assertStmts:
    - condition: ((type > 0) && (type <= MAX_METRIC_TYPE))
      pos:
        line_end: 952
        line_start: 952
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 955
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 955
    functionName: srte_lsp_unset_metric
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - srte_candidate_metric_name
    - srte_unset_metric
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: "void srte_lsp_unset_metric(struct srte_lsp *lsp,\n\t\t\t   enum srte_candidate_metric_type
      type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:959,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:960,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - metric
    argTypes:
    - struct srte_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 963
    functionName: srte_unset_metric
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void srte_unset_metric(struct srte_metric *metric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:978,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:981,1
    - Dst: COND_FLAG
      Src: /src/frr/pathd/pathd.c:982,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:983,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:984,1
    - Dst: objfun_type_name
      Src: /src/frr/pathd/pathd.c:987,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - candidate
    - required
    - type
    argTypes:
    - struct srte_candidate*
    - bool
    - enum objfun_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 988
    functionName: srte_candidate_set_objfun
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - COND_FLAG
    - objfun_type_name
    - SET_FLAG
    - ipaddr2str
    - PATH_POLICY_DEBUG
    linkageType: ''
    returnType: void
    signature: "void srte_candidate_set_objfun(struct srte_candidate *candidate, bool
      required,\n\t\t\t       enum objfun_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:1000,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:1002,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:1003,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:1004,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1009
    functionName: srte_candidate_unset_objfun
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - SET_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: void srte_candidate_unset_objfun(struct srte_candidate *candidate)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:1024,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum affinity_filter_type
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 1023
        line_start: 1023
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 1025
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1025
    functionName: filter_type_to_flag
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t filter_type_to_flag(enum affinity_filter_type type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:1040,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum affinity_filter_type
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 1039
        line_start: 1039
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 1041
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1041
    functionName: filter_type_name
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *filter_type_name(enum affinity_filter_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:1057,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:1059,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:1060,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:1061,1
    - Dst: filter_type_to_flag
      Src: /src/frr/pathd/pathd.c:1061,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:1062,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1064,1
    - Dst: filter_type_name
      Src: /src/frr/pathd/pathd.c:1067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - candidate
    - type
    - filter
    argTypes:
    - struct srte_candidate*
    - enum affinity_filter_type
    - uint32_t
    assertStmts:
    - condition: (type > AFFINITY_FILTER_UNDEFINED)
      pos:
        line_end: 1058
        line_start: 1058
        source_file: /src/frr/pathd/pathd.c
    - condition: (type <= MAX_AFFINITY_FILTER_TYPE)
      pos:
        line_end: 1059
        line_start: 1059
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 1068
      start: 1050
    functionDepth: 2
    functionLinenumber: 1050
    functionLinenumberEnd: 1068
    functionName: srte_candidate_set_affinity_filter
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - filter_type_name
    - filter_type_to_flag
    - SET_FLAG
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: "void srte_candidate_set_affinity_filter(struct srte_candidate *candidate,\n\t\t\t\t\tenum
      affinity_filter_type type,\n\t\t\t\t\tuint32_t filter)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:1083,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:1085,1
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:1086,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/pathd.c:1087,1
    - Dst: filter_type_to_flag
      Src: /src/frr/pathd/pathd.c:1087,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:1088,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1090,1
    - Dst: filter_type_name
      Src: /src/frr/pathd/pathd.c:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - candidate
    - type
    argTypes:
    - struct srte_candidate*
    - enum affinity_filter_type
    assertStmts:
    - condition: (type <= MAX_AFFINITY_FILTER_TYPE)
      pos:
        line_end: 1085
        line_start: 1085
        source_file: /src/frr/pathd/pathd.c
    - condition: (type > AFFINITY_FILTER_UNDEFINED)
      pos:
        line_end: 1084
        line_start: 1084
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 1094
      start: 1077
    functionDepth: 2
    functionLinenumber: 1077
    functionLinenumberEnd: 1094
    functionName: srte_candidate_unset_affinity_filter
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - filter_type_name
    - filter_type_to_flag
    - SET_FLAG
    - UNSET_FLAG
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - assert
    linkageType: ''
    returnType: void
    signature: "void srte_candidate_unset_affinity_filter(struct srte_candidate *candidate,\n\t\t\t\t\t
      \ enum affinity_filter_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/pathd/pathd.c:1109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - policy
    - preference
    argTypes:
    - struct srte_policy*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1110
    functionName: srte_candidate_find
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct srte_candidate
    signature: "struct srte_candidate *srte_candidate_find(struct srte_policy *policy,\n\t\t\t\t\t
      \  uint32_t preference)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/pathd/pathd.c:1125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - segment_list
    - index
    argTypes:
    - struct srte_segment_list*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1119
    functionDepth: 1
    functionLinenumber: 1119
    functionLinenumberEnd: 1127
    functionName: srte_segment_entry_find
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct srte_segment_entry
    signature: 'struct srte_segment_entry *

      srte_segment_entry_find(struct srte_segment_list *segment_list, uint32_t index)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr2str
      Src: /src/frr/pathd/pathd.c:1140,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1141,1
    - Dst: srte_policy_status_log
      Src: /src/frr/pathd/pathd.c:1158,1
    - Dst: srte_policy_status_log
      Src: /src/frr/pathd/pathd.c:1171,1
    - Dst: trigger_pathd_candidate_updated
      Src: /src/frr/pathd/pathd.c:1177,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - candidate
    - status
    argTypes:
    - struct srte_candidate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1135
    functionDepth: 2
    functionLinenumber: 1135
    functionLinenumberEnd: 1178
    functionName: srte_candidate_status_update
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - ipaddr2str
    - PATH_POLICY_DEBUG
    - srte_policy_status_log
    - trigger_pathd_candidate_updated
    linkageType: ''
    returnType: void
    signature: void srte_candidate_status_update(struct srte_candidate *candidate,
      int status)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pathd/pathd.c:1192,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1197,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/pathd.c:1202,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1203,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/pathd.c:1206,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1208,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/pathd.c:1227,1
    - Dst: strncmp
      Src: /src/frr/pathd/pathd.c:1236,1
    - Dst: PATH_POLICY_DEBUG
      Src: /src/frr/pathd/pathd.c:1240,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:1242,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/pathd.c:1244,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - originator
    - force
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1250
    functionName: srte_candidate_unset_segment_list
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - SET_FLAG
    - strncmp
    - PATH_POLICY_DEBUG
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void srte_candidate_unset_segment_list(const char *originator, bool
      force)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/pathd.c:1271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - origin
    argTypes:
    - enum srte_protocol_origin
    assertStmts:
    - condition: (!"Reached end of function we should never hit")
      pos:
        line_end: 1270
        line_start: 1270
        source_file: /src/frr/pathd/pathd.c
    constantsTouched: []
    func_position:
      end: 1272
      start: 1258
    functionDepth: 1
    functionLinenumber: 1258
    functionLinenumberEnd: 1272
    functionName: srte_origin2str
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: char
    signature: char *srte_origin2str(enum srte_protocol_origin origin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/pathd.c:1276,1
    - Dst: vty_out
      Src: /src/frr/pathd/pathd.c:1277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1274
    functionDepth: 2
    functionLinenumber: 1274
    functionLinenumberEnd: 1278
    functionName: path_policy_show_debugging
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_CHECK
    - vty_out
    linkageType: ''
    returnType: void
    signature: void path_policy_show_debugging(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_teardown
      Src: /src/frr/pathd/pathd.c:1282,1
    - Dst: srte_clean_zebra
      Src: /src/frr/pathd/pathd.c:1283,1
    - Dst: frr_fini
      Src: /src/frr/pathd/pathd.c:1284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1280
    functionDepth: 8
    functionLinenumber: 1280
    functionLinenumberEnd: 1285
    functionName: pathd_shutdown
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - srte_clean_zebra
    - path_ted_teardown
    - frr_fini
    linkageType: ''
    returnType: void
    signature: void pathd_shutdown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer
      Src: /src/frr/pathd/pathd.c:1296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1287
    functionDepth: 1
    functionLinenumber: 1287
    functionLinenumberEnd: 1298
    functionName: trigger_pathd_candidate_created
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void trigger_pathd_candidate_created(struct srte_candidate *candidate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/pathd.c:1302,1
    - Dst: hook_call
      Src: /src/frr/pathd/pathd.c:1304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1305
    functionName: trigger_pathd_candidate_created_timer
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - hook_call
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void trigger_pathd_candidate_created_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer
      Src: /src/frr/pathd/pathd.c:1316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1318
    functionName: trigger_pathd_candidate_updated
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void trigger_pathd_candidate_updated(struct srte_candidate *candidate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/pathd.c:1322,1
    - Dst: hook_call
      Src: /src/frr/pathd/pathd.c:1324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1320
    functionDepth: 1
    functionLinenumber: 1320
    functionLinenumberEnd: 1325
    functionName: trigger_pathd_candidate_updated_timer
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 0
    functionsReached:
    - hook_call
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void trigger_pathd_candidate_updated_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/pathd/pathd.c:1332,1
    - Dst: hook_call
      Src: /src/frr/pathd/pathd.c:1335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - candidate
    argTypes:
    - struct srte_candidate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1327
    functionDepth: 5
    functionLinenumber: 1327
    functionLinenumberEnd: 1336
    functionName: trigger_pathd_candidate_removed
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - event_cancel
    - hook_call
    linkageType: ''
    returnType: void
    signature: void trigger_pathd_candidate_removed(struct srte_candidate *candidate)
  - BBCount: 23
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum srte_candidate_metric_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1338
    functionDepth: 0
    functionLinenumber: 1338
    functionLinenumberEnd: 1386
    functionName: srte_candidate_metric_name
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *srte_candidate_metric_name(enum srte_candidate_metric_type type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/pathd.c:1397,1
    - Dst: path_ted_query_type_c
      Src: /src/frr/pathd/pathd.c:1400,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/pathd.c:1402,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/pathd.c:1405,1
    - Dst: CHECK_SID
      Src: /src/frr/pathd/pathd.c:1409,1
    - Dst: srte_segment_set_local_modification
      Src: /src/frr/pathd/pathd.c:1413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - entry
    - prefix_cli
    - algo
    argTypes:
    - struct srte_segment_entry*
    - struct prefix*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1388
    functionDepth: 3
    functionLinenumber: 1388
    functionLinenumberEnd: 1416
    functionName: srte_ted_do_query_type_c
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - path_ted_query_type_c
    - PATH_TED_DEBUG
    - srte_segment_set_local_modification
    - path_ted_is_initialized
    - zlog_warn
    - CHECK_SID
    linkageType: ''
    returnType: int32_t
    signature: "int32_t srte_ted_do_query_type_c(struct srte_segment_entry *entry,\n\t\t\t\t
      struct prefix *prefix_cli, uint32_t algo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/pathd.c:1428,1
    - Dst: path_ted_query_type_e
      Src: /src/frr/pathd/pathd.c:1431,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/pathd.c:1433,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/pathd.c:1436,1
    - Dst: CHECK_SID
      Src: /src/frr/pathd/pathd.c:1440,1
    - Dst: srte_segment_set_local_modification
      Src: /src/frr/pathd/pathd.c:1444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - entry
    - prefix_cli
    - local_iface
    argTypes:
    - struct srte_segment_entry*
    - struct prefix*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1418
    functionDepth: 3
    functionLinenumber: 1418
    functionLinenumberEnd: 1447
    functionName: srte_ted_do_query_type_e
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - PATH_TED_DEBUG
    - srte_segment_set_local_modification
    - path_ted_is_initialized
    - zlog_warn
    - path_ted_query_type_e
    - CHECK_SID
    linkageType: ''
    returnType: int32_t
    signature: "int32_t srte_ted_do_query_type_e(struct srte_segment_entry *entry,\n\t\t\t\t
      struct prefix *prefix_cli,\n\t\t\t\t uint32_t local_iface)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: path_ted_is_initialized
      Src: /src/frr/pathd/pathd.c:1458,1
    - Dst: path_ted_query_type_f
      Src: /src/frr/pathd/pathd.c:1461,1
    - Dst: zlog_warn
      Src: /src/frr/pathd/pathd.c:1463,1
    - Dst: PATH_TED_DEBUG
      Src: /src/frr/pathd/pathd.c:1466,1
    - Dst: CHECK_SID
      Src: /src/frr/pathd/pathd.c:1469,1
    - Dst: srte_segment_set_local_modification
      Src: /src/frr/pathd/pathd.c:1473,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - entry
    - local
    - remote
    argTypes:
    - struct srte_segment_entry*
    - struct ipaddr*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1449
    functionDepth: 3
    functionLinenumber: 1449
    functionLinenumberEnd: 1476
    functionName: srte_ted_do_query_type_f
    functionSourceFile: /src/frr/pathd/pathd.c
    functionUses: 2
    functionsReached:
    - PATH_TED_DEBUG
    - srte_segment_set_local_modification
    - path_ted_is_initialized
    - zlog_warn
    - CHECK_SID
    - path_ted_query_type_f
    linkageType: ''
    returnType: int32_t
    signature: "int32_t srte_ted_do_query_type_f(struct srte_segment_entry *entry,\n\t\t\t\t
      struct ipaddr *local, struct ipaddr *remote)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CLASS
    - ','
    - TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: CLASS_TYPE
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CLASS_TYPE(CLASS, TYPE)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_lib.c:100,1
    - Dst: register_logger
      Src: /src/frr/pathd/path_pcep_lib.c:103,1
    - Dst: initialize_pcc_infra
      Src: /src/frr/pathd/path_pcep_lib.c:124,1
    - Dst: flog_err
      Src: /src/frr/pathd/path_pcep_lib.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fpt
    argTypes:
    - struct frr_pthread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 98
    functionDepth: 7
    functionLinenumber: 98
    functionLinenumberEnd: 130
    functionName: pcep_lib_initialize
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - flog_err
    - PCEP_DEBUG
    - initialize_pcc_infra
    - register_logger
    linkageType: ''
    returnType: int
    signature: int pcep_lib_initialize(struct frr_pthread *fpt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_lib.c:134,1
    - Dst: destroy_pcc
      Src: /src/frr/pathd/path_pcep_lib.c:135,1
    - Dst: flog_err
      Src: /src/frr/pathd/path_pcep_lib.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 6
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: pcep_lib_finalize
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - destroy_pcc
    - flog_err
    - PCEP_DEBUG
    linkageType: ''
    returnType: void
    signature: void pcep_lib_finalize(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: create_default_pcep_configuration
      Src: /src/frr/pathd/path_pcep_lib.c:149,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_lib.c:152,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:154,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_lib.c:185,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_lib.c:192,1
    - Dst: connect_pce_ipv6
      Src: /src/frr/pathd/path_pcep_lib.c:193,1
    - Dst: connect_pce
      Src: /src/frr/pathd/path_pcep_lib.c:195,1
    - Dst: destroy_pcep_configuration
      Src: /src/frr/pathd/path_pcep_lib.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 6
    argNames:
    - src_addr
    - src_port
    - dst_addr
    - dst_port
    - msd
    - pcep_options
    argTypes:
    - struct ipaddr*
    - int
    - struct ipaddr*
    - int
    - short
    - struct pcep_config_group_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 141
    functionDepth: 7
    functionLinenumber: 141
    functionLinenumberEnd: 199
    functionName: pcep_lib_connect
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - connect_pce_ipv6
    - IS_IPADDR_V6
    - connect_pce
    - create_default_pcep_configuration
    - strlcpy
    - destroy_pcep_configuration
    - memcpy
    linkageType: ''
    returnType: pcep_session
    signature: "pcep_session *\npcep_lib_connect(struct ipaddr *src_addr, int src_port,
      struct ipaddr *dst_addr,\n\t\t int dst_port, short msd,\n\t\t const struct pcep_config_group_opts
      *pcep_options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:203,1
    - Dst: disconnect_pce
      Src: /src/frr/pathd/path_pcep_lib.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sess
    argTypes:
    - pcep_session*
    assertStmts:
    - condition: (sess != NULL)
      pos:
        line_end: 202
        line_start: 202
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 205
      start: 201
    functionDepth: 5
    functionLinenumber: 201
    functionLinenumberEnd: 205
    functionName: pcep_lib_disconnect
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - disconnect_pce
    - assert
    linkageType: ''
    returnType: void
    signature: void pcep_lib_disconnect(pcep_session *sess)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_thread_socket_write
      Src: /src/frr/pathd/path_pcep_lib.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fpt
    - thread
    - fd
    - payload
    argTypes:
    - void*
    - void**
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 211
    functionDepth: 3
    functionLinenumber: 211
    functionLinenumberEnd: 216
    functionName: pcep_lib_pceplib_socket_write_cb
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pcep_thread_socket_write
    linkageType: ''
    returnType: int
    signature: "int pcep_lib_pceplib_socket_write_cb(void *fpt, void **thread, int
      fd,\n\t\t\t\t     void *payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_thread_socket_read
      Src: /src/frr/pathd/path_pcep_lib.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fpt
    - thread
    - fd
    - payload
    argTypes:
    - void*
    - void**
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 227
    functionName: pcep_lib_pceplib_socket_read_cb
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pcep_thread_socket_read
    linkageType: ''
    returnType: int
    signature: "int pcep_lib_pceplib_socket_read_cb(void *fpt, void **thread, int
      fd,\n\t\t\t\t    void *payload)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_lib.c:234,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:235,1
    - Dst: pceplib_external_socket_write
      Src: /src/frr/pathd/path_pcep_lib.c:237,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 234
        line_start: 234
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 239
      start: 232
    functionDepth: 6
    functionLinenumber: 232
    functionLinenumberEnd: 239
    functionName: pcep_lib_socket_write_ready
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pceplib_external_socket_write
    - XFREE
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pcep_lib_socket_write_ready(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pathd/path_pcep_lib.c:243,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:244,1
    - Dst: pceplib_external_socket_read
      Src: /src/frr/pathd/path_pcep_lib.c:246,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 243
        line_start: 243
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 248
      start: 241
    functionDepth: 7
    functionLinenumber: 241
    functionLinenumberEnd: 248
    functionName: pcep_lib_socket_read_ready
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - XFREE
    - pceplib_external_socket_read
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pcep_lib_socket_read_ready(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_thread_send_ctrl_event
      Src: /src/frr/pathd/path_pcep_lib.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fpt
    - event
    argTypes:
    - void*
    - pcep_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: pcep_lib_pceplib_event_cb
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pcep_thread_send_ctrl_event
    linkageType: ''
    returnType: void
    signature: void pcep_lib_pceplib_event_cb(void *fpt, pcep_event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:263,1
    - Dst: start_routine
      Src: /src/frr/pathd/path_pcep_lib.c:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 270
    functionName: pcep_lib_pthread_start_passthrough
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - XFREE
    - start_routine
    linkageType: ''
    returnType: void
    signature: void *pcep_lib_pthread_start_passthrough(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:279,1
    - Dst: frr_pthread_new
      Src: /src/frr/pathd/path_pcep_lib.c:288,1
    - Dst: frr_pthread_run
      Src: /src/frr/pathd/path_pcep_lib.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - thread_id
    - attr
    - (*start_routine)(void *)
    - data
    - thread_name
    argTypes:
    - pthread_t*
    - pthread_attr_t*
    - void*
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 302
    functionName: pcep_lib_pthread_create_cb
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - frr_pthread_run
    - XMALLOC
    - frr_pthread_new
    linkageType: ''
    returnType: int
    signature: "int pcep_lib_pthread_create_cb(pthread_t *thread_id, const pthread_attr_t
      *attr,\n\t\t\t       void *(*start_routine)(void *), void *data,\n\t\t\t       const
      char *thread_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_lib_finalize
      Src: /src/frr/pathd/path_pcep_lib.c:306,1
    - Dst: frr_pthread_destroy
      Src: /src/frr/pathd/path_pcep_lib.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fpt
    - res
    argTypes:
    - struct frr_pthread*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 7
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: pcep_lib_pthread_stop_cb
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pcep_lib_finalize
    - frr_pthread_destroy
    linkageType: ''
    returnType: int
    signature: int pcep_lib_pthread_stop_cb(struct frr_pthread *fpt, void **res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_lib_format_path
      Src: /src/frr/pathd/path_pcep_lib.c:315,1
    - Dst: pcep_msg_create_report
      Src: /src/frr/pathd/path_pcep_lib.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - caps
    - path
    argTypes:
    - struct pcep_caps*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 312
    functionDepth: 4
    functionLinenumber: 312
    functionLinenumberEnd: 317
    functionName: pcep_lib_format_report
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pcep_msg_create_report
    - pcep_lib_format_path
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_lib_format_report(struct pcep_caps *caps,\n\t\t\t\t\t
      \   struct path *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:325,1
    - Dst: pcep_tlv_create_path_setup_type
      Src: /src/frr/pathd/path_pcep_lib.c:326,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:327,1
    - Dst: pcep_obj_create_rp
      Src: /src/frr/pathd/path_pcep_lib.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - reqid
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 332
    functionName: create_rp
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 8
    functionsReached:
    - pcep_tlv_create_path_setup_type
    - dll_append
    - dll_initialize
    - pcep_obj_create_rp
    linkageType: ''
    returnType: struct pcep_object_rp
    signature: struct pcep_object_rp *create_rp(uint32_t reqid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:346,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:348,1
    - Dst: create_rp
      Src: /src/frr/pathd/path_pcep_lib.c:349,1
    - Dst: pcep_lib_format_constraints
      Src: /src/frr/pathd/path_pcep_lib.c:352,1
    - Dst: pcep_obj_create_objective_function
      Src: /src/frr/pathd/path_pcep_lib.c:360,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:361,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:363,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_lib.c:366,1
    - Dst: pcep_obj_create_endpoint_ipv6
      Src: /src/frr/pathd/path_pcep_lib.c:367,1
    - Dst: pcep_msg_create_request_ipv6
      Src: /src/frr/pathd/path_pcep_lib.c:370,1
    - Dst: pcep_obj_create_endpoint_ipv4
      Src: /src/frr/pathd/path_pcep_lib.c:372,1
    - Dst: pcep_msg_create_request
      Src: /src/frr/pathd/path_pcep_lib.c:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - caps
    - path
    argTypes:
    - struct pcep_caps*
    - struct path*
    assertStmts:
    - condition: (src->ipa_type == dst->ipa_type)
      pos:
        line_end: 345
        line_start: 345
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (of != NULL)
      pos:
        line_end: 360
        line_start: 360
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 377
      start: 334
    functionDepth: 4
    functionLinenumber: 334
    functionLinenumberEnd: 377
    functionName: pcep_lib_format_request
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - dll_append
    - pcep_msg_create_request_ipv6
    - IS_IPADDR_V6
    - pcep_obj_create_endpoint_ipv6
    - pcep_obj_create_endpoint_ipv4
    - pcep_msg_create_request
    - pcep_obj_create_objective_function
    - pcep_lib_format_constraints
    - dll_initialize
    - create_rp
    - assert
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_lib_format_request(struct pcep_caps *caps,\n\t\t\t\t\t
      \    struct path *path)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_msg_create_error
      Src: /src/frr/pathd/path_pcep_lib.c:387,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:389,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:390,1
    - Dst: pcep_tlv_create_path_setup_type
      Src: /src/frr/pathd/path_pcep_lib.c:391,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:393,1
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pathd/path_pcep_lib.c:394,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:395,1
    - Dst: pcep_msg_create_error_with_objects
      Src: /src/frr/pathd/path_pcep_lib.c:396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - error_type
    - error_value
    - path
    argTypes:
    - int
    - int
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 379
    functionDepth: 5
    functionLinenumber: 379
    functionLinenumberEnd: 398
    functionName: pcep_lib_format_error
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - dll_append
    - pcep_tlv_create_path_setup_type
    - pcep_msg_create_error
    - pcep_msg_create_error_with_objects
    - pcep_obj_create_srp
    - dll_initialize
    linkageType: ''
    returnType: struct pcep_message
    signature: "struct pcep_message *pcep_lib_format_error(int error_type, int error_value,\n\t\t\t\t\t
      \  struct path *path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_notify
      Src: /src/frr/pathd/path_pcep_lib.c:406,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:409,1
    - Dst: create_rp
      Src: /src/frr/pathd/path_pcep_lib.c:410,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:411,1
    - Dst: pcep_msg_create_notify
      Src: /src/frr/pathd/path_pcep_lib.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - reqid
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 400
    functionDepth: 4
    functionLinenumber: 400
    functionLinenumberEnd: 414
    functionName: pcep_lib_format_request_cancelled
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - dll_append
    - pcep_obj_create_notify
    - dll_initialize
    - create_rp
    - pcep_msg_create_notify
    linkageType: ''
    returnType: struct pcep_message
    signature: struct pcep_message *pcep_lib_format_request_cancelled(uint32_t reqid)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: pcep_new_path
      Src: /src/frr/pathd/path_pcep_lib.c:435,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:439,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:440,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:441,1
    - Dst: pcep_lib_parse_rp
      Src: /src/frr/pathd/path_pcep_lib.c:443,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:445,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:446,1
    - Dst: pcep_lib_parse_srp
      Src: /src/frr/pathd/path_pcep_lib.c:448,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:450,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:452,1
    - Dst: pcep_lib_parse_lsp
      Src: /src/frr/pathd/path_pcep_lib.c:454,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:456,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:457,1
    - Dst: pcep_lib_parse_lspa
      Src: /src/frr/pathd/path_pcep_lib.c:459,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:461,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:463,1
    - Dst: pcep_lib_parse_ero
      Src: /src/frr/pathd/path_pcep_lib.c:465,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:467,1
    - Dst: pcep_lib_parse_metric
      Src: /src/frr/pathd/path_pcep_lib.c:469,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:471,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:473,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:479,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:482,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:487,1
    - Dst: pcep_lib_parse_endpoints_ipv4
      Src: /src/frr/pathd/path_pcep_lib.c:490,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:492,1
    - Dst: pcep_lib_parse_endpoints_ipv6
      Src: /src/frr/pathd/path_pcep_lib.c:495,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:497,1
    - Dst: pcep_lib_parse_vendor_info
      Src: /src/frr/pathd/path_pcep_lib.c:500,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:503,1
    - Dst: pcep_object_class_name
      Src: /src/frr/pathd/path_pcep_lib.c:505,1
    - Dst: pcep_object_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:507,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 66
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct pcep_message*
    assertStmts:
    - condition: (lsp == NULL)
      pos:
        line_end: 451
        line_start: 451
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (ero == NULL)
      pos:
        line_end: 462
        line_start: 462
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (srp == NULL)
      pos:
        line_end: 445
        line_start: 445
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (rp == NULL)
      pos:
        line_end: 440
        line_start: 440
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (lspa == NULL)
      pos:
        line_end: 456
        line_start: 456
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 515
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 515
    functionName: pcep_lib_parse_path
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pcep_new_path
    - pcep_lib_parse_endpoints_ipv6
    - flog_warn
    - CLASS_TYPE
    - pcep_lib_parse_metric
    - pcep_lib_parse_rp
    - pcep_lib_parse_lsp
    - pcep_lib_parse_lspa
    - pcep_object_type_name
    - pcep_object_class_name
    - pcep_lib_parse_endpoints_ipv4
    - pcep_lib_parse_srp
    - pcep_lib_parse_ero
    - pcep_lib_parse_vendor_info
    - assert
    linkageType: ''
    returnType: struct path
    signature: struct path *pcep_lib_parse_path(struct pcep_message *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:528,1
    - Dst: CLASS_TYPE
      Src: /src/frr/pathd/path_pcep_lib.c:529,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:530,1
    - Dst: pcep_lib_parse_open
      Src: /src/frr/pathd/path_pcep_lib.c:532,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:535,1
    - Dst: pcep_object_class_name
      Src: /src/frr/pathd/path_pcep_lib.c:537,1
    - Dst: pcep_object_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:539,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - msg
    - caps
    argTypes:
    - struct pcep_message*
    - struct pcep_caps*
    assertStmts:
    - condition: (open == NULL)
      pos:
        line_end: 529
        line_start: 529
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 545
      start: 517
    functionDepth: 2
    functionLinenumber: 517
    functionLinenumberEnd: 545
    functionName: pcep_lib_parse_capabilities
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - pcep_lib_parse_open
    - flog_warn
    - CLASS_TYPE
    - pcep_object_type_name
    - pcep_object_class_name
    - assert
    linkageType: ''
    returnType: void
    signature: "void pcep_lib_parse_capabilities(struct pcep_message *msg,\n\t\t\t\t
      struct pcep_caps *caps)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: copy_counter_group
      Src: /src/frr/pathd/path_pcep_lib.c:553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - sess
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 554
    functionName: pcep_lib_copy_counters
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - copy_counter_group
    linkageType: ''
    returnType: struct counters_group
    signature: struct counters_group *pcep_lib_copy_counters(pcep_session *sess)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_counter_group
      Src: /src/frr/pathd/path_pcep_lib.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - counters
    argTypes:
    - struct counters_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 559
    functionName: pcep_lib_free_counters
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - free_counter_group
    linkageType: ''
    returnType: void
    signature: void pcep_lib_free_counters(struct counters_group *counters)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:568,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - sess
    argTypes:
    - pcep_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 576
    functionName: pcep_lib_copy_pcep_session
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: pcep_session
    signature: pcep_session *pcep_lib_copy_pcep_session(pcep_session *sess)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintf
      Src: /src/frr/pathd/path_pcep_lib.c:583,1
    - Dst: PCEP_DEBUG_PCEPLIB
      Src: /src/frr/pathd/path_pcep_lib.c:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - priority
    - fmt
    - args
    argTypes:
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 586
    functionName: pceplib_logging_cb
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - PCEP_DEBUG_PCEPLIB
    linkageType: ''
    returnType: int
    signature: int pceplib_logging_cb(int priority, const char *fmt, va_list args)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pathd/path_pcep_lib.c:603,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:605,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:609,1
    - Dst: pcep_tlv_create_path_setup_type
      Src: /src/frr/pathd/path_pcep_lib.c:611,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:612,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:613,1
    - Dst: pcep_obj_create_srp
      Src: /src/frr/pathd/path_pcep_lib.c:614,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:616,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:618,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:622,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/pathd/path_pcep_lib.c:624,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/pathd/path_pcep_lib.c:625,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pathd/path_pcep_lib.c:627,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:630,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_lib.c:632,1
    - Dst: pcep_tlv_create_ipv4_lsp_identifiers
      Src: /src/frr/pathd/path_pcep_lib.c:634,1
    - Dst: pcep_tlv_create_ipv6_lsp_identifiers
      Src: /src/frr/pathd/path_pcep_lib.c:640,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:646,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:647,1
    - Dst: pcep_tlv_create_symbolic_path_name
      Src: /src/frr/pathd/path_pcep_lib.c:652,1
    - Dst: strlen
      Src: /src/frr/pathd/path_pcep_lib.c:653,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:654,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:655,1
    - Dst: memset
      Src: /src/frr/pathd/path_pcep_lib.c:658,1
    - Dst: htonl
      Src: /src/frr/pathd/path_pcep_lib.c:659,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:660,1
    - Dst: pcep_tlv_create_tlv_arbitrary
      Src: /src/frr/pathd/path_pcep_lib.c:662,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:666,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:667,1
    - Dst: pcep_obj_create_lsp
      Src: /src/frr/pathd/path_pcep_lib.c:669,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:674,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:676,1
    - Dst: dll_initialize
      Src: /src/frr/pathd/path_pcep_lib.c:678,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:684,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:685,1
    - Dst: ENCODE_SR_ERO_SID
      Src: /src/frr/pathd/path_pcep_lib.c:688,1
    - Dst: ENCODE_SR_ERO_SID
      Src: /src/frr/pathd/path_pcep_lib.c:693,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:698,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:699,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:701,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_node
      Src: /src/frr/pathd/path_pcep_lib.c:705,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_node
      Src: /src/frr/pathd/path_pcep_lib.c:714,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv4_adj
      Src: /src/frr/pathd/path_pcep_lib.c:723,1
    - Dst: pcep_obj_create_ro_subobj_sr_ipv6_adj
      Src: /src/frr/pathd/path_pcep_lib.c:734,1
    - Dst: pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj
      Src: /src/frr/pathd/path_pcep_lib.c:745,1
    - Dst: pcep_obj_create_ro_subobj_sr_nonai
      Src: /src/frr/pathd/path_pcep_lib.c:765,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:770,1
    - Dst: pcep_obj_create_ero
      Src: /src/frr/pathd/path_pcep_lib.c:772,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:773,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:775,1
    - Dst: pcep_lib_format_constraints
      Src: /src/frr/pathd/path_pcep_lib.c:781,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 93
    argCount: 2
    argNames:
    - caps
    - path
    argTypes:
    - struct pcep_caps*
    - struct path*
    assertStmts:
    - condition: (hop->nai.type != PCEP_SR_SUBOBJ_NAI_ABSENT)
      pos:
        line_end: 697
        line_start: 697
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (tlv != NULL)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (tlv != NULL)
      pos:
        line_end: 653
        line_start: 653
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: "(hop->nai.type\n\t\t\t       != PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY)"
      pos:
        line_end: 699
        line_start: 698
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (ero != NULL)
      pos:
        line_end: 772
        line_start: 772
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: "(path->pcc_addr.ipa_type\n\t\t       == path->nbkey.endpoint.ipa_type)"
      pos:
        line_end: 630
        line_start: 629
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (hop->has_sid)
      pos:
        line_end: 684
        line_start: 684
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (tlv != NULL)
      pos:
        line_end: 611
        line_start: 611
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (srp != NULL)
      pos:
        line_end: 615
        line_start: 615
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (tlv != NULL)
      pos:
        line_end: 665
        line_start: 665
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (lsp != NULL)
      pos:
        line_end: 673
        line_start: 673
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (hop->is_mpls)
      pos:
        line_end: 683
        line_start: 683
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (hop->nai.type != PCEP_SR_SUBOBJ_NAI_UNKNOWN)
      pos:
        line_end: 700
        line_start: 700
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 784
      start: 590
    functionDepth: 4
    functionLinenumber: 590
    functionLinenumberEnd: 784
    functionName: pcep_lib_format_path
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - strlen
    - IS_IPADDR_NONE
    - pcep_obj_create_ero
    - ENCODE_SR_ERO_SID
    - pcep_tlv_create_ipv4_lsp_identifiers
    - htonl
    - dll_initialize
    - dll_append
    - memset
    - pcep_obj_create_ro_subobj_sr_ipv6_adj
    - pcep_obj_create_ro_subobj_sr_nonai
    - pcep_obj_create_ro_subobj_sr_ipv4_adj
    - pcep_lib_format_constraints
    - assert
    - pcep_tlv_create_symbolic_path_name
    - pcep_obj_create_lsp
    - pcep_obj_create_srp
    - pcep_tlv_create_tlv_arbitrary
    - memcpy
    - pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj
    - pcep_obj_create_ro_subobj_sr_ipv6_node
    - pcep_tlv_create_path_setup_type
    - pcep_tlv_create_ipv6_lsp_identifiers
    - pcep_obj_create_ro_subobj_sr_ipv4_node
    - IS_IPADDR_V4
    linkageType: ''
    returnType: double_linked_list
    signature: "double_linked_list *pcep_lib_format_path(struct pcep_caps *caps,\n\t\t\t\t\t
      struct path *path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_obj_create_lspa
      Src: /src/frr/pathd/path_pcep_lib.c:794,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:800,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:802,1
    - Dst: pcep_obj_create_bandwidth
      Src: /src/frr/pathd/path_pcep_lib.c:808,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:809,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:811,1
    - Dst: pcep_obj_create_metric
      Src: /src/frr/pathd/path_pcep_lib.c:817,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:819,1
    - Dst: dll_append
      Src: /src/frr/pathd/path_pcep_lib.c:821,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - path
    - objs
    argTypes:
    - struct path*
    - double_linked_list*
    assertStmts:
    - condition: (lspa != NULL)
      pos:
        line_end: 799
        line_start: 799
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (bandwidth != NULL)
      pos:
        line_end: 808
        line_start: 808
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (metric != NULL)
      pos:
        line_end: 818
        line_start: 818
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 823
      start: 786
    functionDepth: 4
    functionLinenumber: 786
    functionLinenumberEnd: 823
    functionName: pcep_lib_format_constraints
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 2
    functionsReached:
    - dll_append
    - pcep_obj_create_bandwidth
    - pcep_obj_create_metric
    - pcep_obj_create_lspa
    - assert
    linkageType: ''
    returnType: void
    signature: void pcep_lib_format_constraints(struct path *path, double_linked_list
      *objs)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: pcep_lib_parse_open_pce_capability
      Src: /src/frr/pathd/path_pcep_lib.c:839,1
    - Dst: pcep_lib_parse_open_objfun_list
      Src: /src/frr/pathd/path_pcep_lib.c:844,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:864,1
    - Dst: pcep_tlv_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:866,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 2
    argNames:
    - caps
    - open
    argTypes:
    - struct pcep_caps*
    - struct pcep_object_open*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 825
    functionDepth: 2
    functionLinenumber: 825
    functionLinenumberEnd: 871
    functionName: pcep_lib_parse_open
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - pcep_lib_parse_open_objfun_list
    - pcep_tlv_type_name
    - pcep_lib_parse_open_pce_capability
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void pcep_lib_parse_open(struct pcep_caps *caps, struct pcep_object_open
      *open)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - caps
    - tlv_header
    argTypes:
    - struct pcep_caps*
    - struct pcep_object_tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 879
    functionName: pcep_lib_parse_open_pce_capability
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pcep_lib_parse_open_pce_capability(\n\tstruct pcep_caps *caps,
      struct pcep_object_tlv_header *tlv_header)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:892,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_lib.c:897,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - caps
    - tlv_header
    argTypes:
    - struct pcep_caps*
    - struct pcep_object_tlv_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 881
    functionDepth: 1
    functionLinenumber: 881
    functionLinenumberEnd: 899
    functionName: pcep_lib_parse_open_objfun_list
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void pcep_lib_parse_open_objfun_list(struct pcep_caps *caps,\n\t\t\t\t
      \    struct pcep_object_tlv_header *tlv_header)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:908,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:944,1
    - Dst: pcep_tlv_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:946,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 2
    argNames:
    - path
    - rp
    argTypes:
    - struct path*
    - struct pcep_object_rp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 901
    functionDepth: 2
    functionLinenumber: 901
    functionLinenumberEnd: 950
    functionName: pcep_lib_parse_rp
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - pcep_tlv_type_name
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void pcep_lib_parse_rp(struct path *path, struct pcep_object_rp *rp)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:962,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:993,1
    - Dst: pcep_tlv_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:995,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - path
    - srp
    argTypes:
    - struct path*
    - struct pcep_object_srp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 952
    functionDepth: 2
    functionLinenumber: 952
    functionLinenumberEnd: 999
    functionName: pcep_lib_parse_srp
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - pcep_tlv_type_name
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void pcep_lib_parse_srp(struct path *path, struct pcep_object_srp *srp)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:1018,1
    - Dst: pcep_lib_parse_lsp_symbolic_name
      Src: /src/frr/pathd/path_pcep_lib.c:1029,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1033,1
    - Dst: ntohl
      Src: /src/frr/pathd/path_pcep_lib.c:1035,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:1057,1
    - Dst: pcep_tlv_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:1059,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 48
    argCount: 2
    argNames:
    - path
    - lsp
    argTypes:
    - struct path*
    - struct pcep_object_lsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1063
    functionName: pcep_lib_parse_lsp
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - flog_warn
    - pcep_lib_parse_lsp_symbolic_name
    - pcep_tlv_type_name
    - ntohl
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pcep_lib_parse_lsp(struct path *path, struct pcep_object_lsp *lsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1069,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:1071,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - path
    - tlv
    argTypes:
    - struct path*
    - struct pcep_object_tlv_symbolic_path_name*
    assertStmts:
    - condition: (path->name == NULL)
      pos:
        line_end: 1068
        line_start: 1068
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 1073
      start: 1065
    functionDepth: 1
    functionLinenumber: 1065
    functionLinenumberEnd: 1073
    functionName: pcep_lib_parse_lsp_symbolic_name
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - assert
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: "void pcep_lib_parse_lsp_symbolic_name(\n\tstruct path *path, struct
      pcep_object_tlv_symbolic_path_name *tlv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - path
    - lspa
    argTypes:
    - struct path*
    - struct pcep_object_lspa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1075
    functionDepth: 0
    functionLinenumber: 1075
    functionLinenumberEnd: 1084
    functionName: pcep_lib_parse_lspa
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pcep_lib_parse_lspa(struct path *path, struct pcep_object_lspa
      *lspa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_new_metric
      Src: /src/frr/pathd/path_pcep_lib.c:1090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - path
    - obj
    argTypes:
    - struct path*
    - struct pcep_object_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1086
    functionDepth: 1
    functionLinenumber: 1086
    functionLinenumberEnd: 1097
    functionName: pcep_lib_parse_metric
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - pcep_new_metric
    linkageType: ''
    returnType: void
    signature: void pcep_lib_parse_metric(struct path *path, struct pcep_object_metric
      *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_lib.c:1102,1
    - Dst: SET_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_lib.c:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - path
    - obj
    argTypes:
    - struct path*
    - struct pcep_object_endpoints_ipv4*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1099
    functionDepth: 1
    functionLinenumber: 1099
    functionLinenumberEnd: 1106
    functionName: pcep_lib_parse_endpoints_ipv4
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - SET_IPADDR_V4
    linkageType: ''
    returnType: void
    signature: "void pcep_lib_parse_endpoints_ipv4(struct path *path,\n\t\t\t\t   struct
      pcep_object_endpoints_ipv4 *obj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SET_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_lib.c:1111,1
    - Dst: SET_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_lib.c:1113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - path
    - obj
    argTypes:
    - struct path*
    - struct pcep_object_endpoints_ipv6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1108
    functionDepth: 1
    functionLinenumber: 1108
    functionLinenumberEnd: 1115
    functionName: pcep_lib_parse_endpoints_ipv6
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - SET_IPADDR_V6
    linkageType: ''
    returnType: void
    signature: "void pcep_lib_parse_endpoints_ipv6(struct path *path,\n\t\t\t\t   struct
      pcep_object_endpoints_ipv6 *obj)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - path
    - obj
    argTypes:
    - struct path*
    - struct pcep_object_vendor_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1117
    functionDepth: 0
    functionLinenumber: 1117
    functionLinenumberEnd: 1125
    functionName: pcep_lib_parse_vendor_info
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pcep_lib_parse_vendor_info(struct path *path,\n\t\t\t\tstruct
      pcep_object_vendor_info *obj)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:1135,1
    - Dst: pcep_lib_parse_ero_sr
      Src: /src/frr/pathd/path_pcep_lib.c:1144,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:1153,1
    - Dst: pcep_ro_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:1155,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - path
    - ero
    argTypes:
    - struct path*
    - struct pcep_object_ro*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1127
    functionDepth: 2
    functionLinenumber: 1127
    functionLinenumberEnd: 1162
    functionName: pcep_lib_parse_ero
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - pcep_ro_type_name
    - pcep_lib_parse_ero_sr
    - flog_warn
    linkageType: ''
    returnType: void
    signature: void pcep_lib_parse_ero(struct path *path, struct pcep_object_ro *ero)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1171,1
    - Dst: GET_SR_ERO_SID_LABEL
      Src: /src/frr/pathd/path_pcep_lib.c:1175,1
    - Dst: GET_SR_ERO_SID_TC
      Src: /src/frr/pathd/path_pcep_lib.c:1176,1
    - Dst: GET_SR_ERO_SID_S
      Src: /src/frr/pathd/path_pcep_lib.c:1177,1
    - Dst: GET_SR_ERO_SID_TTL
      Src: /src/frr/pathd/path_pcep_lib.c:1178,1
    - Dst: pcep_new_hop
      Src: /src/frr/pathd/path_pcep_lib.c:1183,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1195,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1197,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1198,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1202,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1207,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1212,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1215,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1216,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1218,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1223,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1226,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1227,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1229,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1234,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1237,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1238,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1241,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1242,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1244,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1247,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1248,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_lib.c:1255,1
    - Dst: pcep_nai_type_name
      Src: /src/frr/pathd/path_pcep_lib.c:1257,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 66
    argCount: 2
    argNames:
    - next
    - sr
    argTypes:
    - struct path_hop*
    - struct pcep_ro_subobj_sr*
    assertStmts:
    - condition: (n->data != NULL)
      pos:
        line_end: 1215
        line_start: 1215
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1226
        line_start: 1226
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n != NULL)
      pos:
        line_end: 1236
        line_start: 1236
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1241
        line_start: 1241
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n != NULL)
      pos:
        line_end: 1246
        line_start: 1246
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (sr->nai_list != NULL)
      pos:
        line_end: 1194
        line_start: 1194
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (!sr->flag_s)
      pos:
        line_end: 1170
        line_start: 1170
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1197
        line_start: 1197
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n != NULL)
      pos:
        line_end: 1214
        line_start: 1214
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n != NULL)
      pos:
        line_end: 1225
        line_start: 1225
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1237
        line_start: 1237
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n != NULL)
      pos:
        line_end: 1240
        line_start: 1240
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n->data != NULL)
      pos:
        line_end: 1247
        line_start: 1247
        source_file: /src/frr/pathd/path_pcep_lib.c
    - condition: (n != NULL)
      pos:
        line_end: 1196
        line_start: 1196
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 1264
      start: 1164
    functionDepth: 2
    functionLinenumber: 1164
    functionLinenumberEnd: 1264
    functionName: pcep_lib_parse_ero_sr
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - GET_SR_ERO_SID_TTL
    - flog_warn
    - pcep_nai_type_name
    - GET_SR_ERO_SID_TC
    - GET_SR_ERO_SID_S
    - pcep_new_hop
    - memcpy
    - GET_SR_ERO_SID_LABEL
    - assert
    linkageType: ''
    returnType: struct path_hop
    signature: "struct path_hop *pcep_lib_parse_ero_sr(struct path_hop *next,\n\t\t\t\t
      \      struct pcep_ro_subobj_sr *sr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1272,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:1273,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1274,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:1276,1
    - Dst: copy_counter_subgroup
      Src: /src/frr/pathd/path_pcep_lib.c:1279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - from
    argTypes:
    - struct counters_group*
    assertStmts:
    - condition: (from->max_subgroups >= from->num_subgroups)
      pos:
        line_end: 1271
        line_start: 1271
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 1281
      start: 1266
    functionDepth: 1
    functionLinenumber: 1266
    functionLinenumberEnd: 1281
    functionName: copy_counter_group
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - memcpy
    - copy_counter_subgroup
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct counters_group
    signature: struct counters_group *copy_counter_group(struct counters_group *from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_lib.c:1289,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:1290,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1291,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:1293,1
    - Dst: copy_counter
      Src: /src/frr/pathd/path_pcep_lib.c:1295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - from
    argTypes:
    - struct counters_subgroup*
    assertStmts:
    - condition: (from->max_counters >= from->num_counters)
      pos:
        line_end: 1288
        line_start: 1288
        source_file: /src/frr/pathd/path_pcep_lib.c
    constantsTouched: []
    func_position:
      end: 1297
      start: 1283
    functionDepth: 1
    functionLinenumber: 1283
    functionLinenumberEnd: 1297
    functionName: copy_counter_subgroup
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - copy_counter
    - memcpy
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct counters_subgroup
    signature: struct counters_subgroup *copy_counter_subgroup(struct counters_subgroup
      *from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_lib.c:1304,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_lib.c:1305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - from
    argTypes:
    - struct counter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1299
    functionDepth: 0
    functionLinenumber: 1299
    functionLinenumberEnd: 1307
    functionName: copy_counter
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: struct counter
    signature: struct counter *copy_counter(struct counter *from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free_counter_subgroup
      Src: /src/frr/pathd/path_pcep_lib.c:1315,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:1316,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:1317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct counters_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1309
    functionDepth: 1
    functionLinenumber: 1309
    functionLinenumberEnd: 1318
    functionName: free_counter_group
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - free_counter_subgroup
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_counter_group(struct counters_group *group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free_counter
      Src: /src/frr/pathd/path_pcep_lib.c:1326,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:1327,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:1328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - subgroup
    argTypes:
    - struct counters_subgroup*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1320
    functionDepth: 1
    functionLinenumber: 1320
    functionLinenumberEnd: 1329
    functionName: free_counter_subgroup
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - free_counter
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_counter_subgroup(struct counters_subgroup *subgroup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_lib.c:1335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - counter
    argTypes:
    - struct counter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1331
    functionDepth: 0
    functionLinenumber: 1331
    functionLinenumberEnd: 1336
    functionName: free_counter
    functionSourceFile: /src/frr/pathd/path_pcep_lib.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_counter(struct counter *counter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_iterate
      Src: /src/frr/pathd/path_nb.c:300,1
    - Dst: fun
      Src: /src/frr/pathd/path_nb.c:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - dnode
    - path
    - fun
    - arg
    argTypes:
    - struct lyd_node*
    - char*
    - of_pref_cp_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 303
    functionName: iter_objfun_prefs
    functionSourceFile: /src/frr/pathd/path_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_iterate
    - fun
    linkageType: ''
    returnType: void
    signature: "void iter_objfun_prefs(const struct lyd_node *dnode, const char* path,\n\t\t
      \      of_pref_cp_t fun, void *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb.c:316,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb.c:317,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 335
    functionName: iter_objfun_cb
    functionSourceFile: /src/frr/pathd/path_nb.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int iter_objfun_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: dummy_create
    functionSourceFile: /src/frr/pathd/path_nb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dummy_create(struct nb_cb_create_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 345
    functionName: dummy_modify
    functionSourceFile: /src/frr/pathd/path_nb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dummy_modify(struct nb_cb_modify_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: dummy_destroy
    functionSourceFile: /src/frr/pathd/path_nb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dummy_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: PATH_TED_DEBUG
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_TED_DEBUG(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: PATH_TED_ERROR
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_TED_ERROR(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: PATH_TED_WARN
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_TED_WARN(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: PATH_TED_INFO
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_TED_INFO(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - event
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: LS_MSG_EVENT_PRINT
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LS_MSG_EVENT_PRINT(event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: LS_MSG_TYPE_PRINT
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LS_MSG_TYPE_PRINT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 112
    functionName: LS_IGP_PRINT
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LS_IGP_PRINT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: PATH_TED_IGP_PRINT
    functionSourceFile: /src/frr/pathd/path_ted.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PATH_TED_IGP_PRINT(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - arg_str
    - ','
    - arg_val
    - ','
    - arg_store
    - ','
    - min_value
    - ','
    - max_value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: PCEP_VTYSH_INT_ARG_CHECK
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "PCEP_VTYSH_INT_ARG_CHECK(arg_str, arg_val, arg_store, min_value,       \\\n\t\t\t\t
      max_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - config_param
    - ','
    - not_set_value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 212
    functionName: MERGE_COMPARE_CONFIG_GROUP_VALUE
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MERGE_COMPARE_CONFIG_GROUP_VALUE(config_param, not_set_value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_cli.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - pce_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 232
    functionName: pcep_cli_find_pce
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct pce_opts_cli
    signature: struct pce_opts_cli *pcep_cli_find_pce(const char *pce_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pce_opts_cli
    argTypes:
    - struct pce_opts_cli*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 246
    functionName: pcep_cli_add_pce
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pcep_cli_add_pce(struct pce_opts_cli *pce_opts_cli)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_cli.c:252,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_cli.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: pcep_cli_create_pce_opts
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - XCALLOC
    linkageType: ''
    returnType: struct pce_opts_cli
    signature: struct pce_opts_cli *pcep_cli_create_pce_opts(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_cli.c:264,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_cli.c:267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - pce_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 274
    functionName: pcep_cli_delete_pce
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pcep_cli_delete_pce(const char *pce_name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:284,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_cli.c:304,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:319,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:322,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:323,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:324,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:325,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:326,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:327,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:328,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:329,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:330,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:331,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:332,1
    - Dst: MERGE_COMPARE_CONFIG_GROUP_VALUE
      Src: /src/frr/pathd/path_pcep_cli.c:333,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - pce_opts_cli
    argTypes:
    - struct pce_opts_cli*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 336
    functionName: pcep_cli_merge_pcep_pce_config_options
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - pcep_cli_find_pcep_pce_config
    - memcpy
    - MERGE_COMPARE_CONFIG_GROUP_VALUE
    linkageType: ''
    returnType: void
    signature: void pcep_cli_merge_pcep_pce_config_options(struct pce_opts_cli *pce_opts_cli)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_cli.c:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - group_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: pcep_cli_find_pcep_pce_config
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct pcep_config_group_opts
    signature: 'struct pcep_config_group_opts *

      pcep_cli_find_pcep_pce_config(const char *group_name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pcep_config_group_opts
    argTypes:
    - struct pcep_config_group_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 371
    functionName: pcep_cli_add_pcep_pce_config
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pcep_cli_add_pcep_pce_config(\n\tstruct pcep_config_group_opts
      *pcep_config_group_opts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_cli.c:378,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_cli.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - group_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 383
    functionName: pcep_cli_create_pcep_pce_config
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - XCALLOC
    linkageType: ''
    returnType: struct pcep_config_group_opts
    signature: 'struct pcep_config_group_opts *

      pcep_cli_create_pcep_pce_config(const char *group_name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_cli.c:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - group_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 400
    functionName: pcep_cli_is_pcep_pce_config_used
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool pcep_cli_is_pcep_pce_config_used(const char *group_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_cli.c:406,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_cli.c:409,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - group_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 416
    functionName: pcep_cli_delete_pcep_pce_config
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pcep_cli_delete_pcep_pce_config(const char *group_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_cli.c:426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - pce_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 432
    functionName: pcep_cli_pcc_has_pce
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool pcep_cli_pcc_has_pce(const char *pce_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pce_opts
    argTypes:
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 443
    functionName: pcep_cli_add_pce_connection
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pcep_cli_add_pce_connection(struct pce_opts *pce_opts)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pce_opts
    argTypes:
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 454
    functionName: pcep_cli_remove_pce_connection
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pcep_cli_remove_pce_connection(struct pce_opts *pce_opts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_NODE2MODE
      Src: /src/frr/pathd/path_pcep_cli.c:464,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/pathd/path_pcep_cli.c:467,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pathd/path_pcep_cli.c:470,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pathd/path_pcep_cli.c:473,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pathd/path_pcep_cli.c:476,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pathd/path_pcep_cli.c:479,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - vty
    - no_str
    - basic_str
    - path_str
    - message_str
    - pceplib_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 483
    functionName: path_pcep_cli_debug
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - DEBUG_NODE2MODE
    - DEBUG_FLAGS_SET
    - DEBUG_MODE_SET
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_debug(struct vty *vty, const char *no_str,\n\t\t\t
      \      const char *basic_str, const char *path_str,\n\t\t\t       const char
      *message_str, const char *pceplib_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_ctrl_get_counters
      Src: /src/frr/pathd/path_pcep_cli.c:498,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:501,1
    - Dst: time
      Src: /src/frr/pathd/path_pcep_cli.c:505,1
    - Dst: localtime_r
      Src: /src/frr/pathd/path_pcep_cli.c:506,1
    - Dst: strftime
      Src: /src/frr/pathd/path_pcep_cli.c:507,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:509,1
    - Dst: ttable_new
      Src: /src/frr/pathd/path_pcep_cli.c:514,1
    - Dst: ttable_add_row
      Src: /src/frr/pathd/path_pcep_cli.c:515,1
    - Dst: ttable_restyle
      Src: /src/frr/pathd/path_pcep_cli.c:518,1
    - Dst: ttable_rowseps
      Src: /src/frr/pathd/path_pcep_cli.c:519,1
    - Dst: ttable_add_row
      Src: /src/frr/pathd/path_pcep_cli.c:528,1
    - Dst: ttable_rowseps
      Src: /src/frr/pathd/path_pcep_cli.c:536,1
    - Dst: ttable_dump
      Src: /src/frr/pathd/path_pcep_cli.c:541,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:542,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_cli.c:543,1
    - Dst: ttable_del
      Src: /src/frr/pathd/path_pcep_cli.c:545,1
    - Dst: pcep_lib_free_counters
      Src: /src/frr/pathd/path_pcep_cli.c:547,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 485
    functionDepth: 3
    functionLinenumber: 485
    functionLinenumberEnd: 550
    functionName: path_pcep_cli_show_srte_pcep_counters
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - ttable_del
    - ttable_add_row
    - vty_out
    - ttable_new
    - localtime_r
    - ttable_restyle
    - ttable_rowseps
    - strftime
    - ttable_dump
    - pcep_lib_free_counters
    - XFREE
    - pcep_ctrl_get_counters
    - time
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_show_srte_pcep_counters(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:556,1
    - Dst: pcep_cli_create_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:558,1
    - Dst: pcep_cli_add_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:559,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:560,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_cli.c:563,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:567,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - pcep_pce_config
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 575
    functionName: path_pcep_cli_pcep_pce_config
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_cli_add_pcep_pce_config
    - vty_out
    - pcep_cli_find_pcep_pce_config
    - XFREE
    - pcep_cli_create_pcep_pce_config
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_pcep_pce_config(struct vty *vty,\n\t\t\t\t\t const
      char *pcep_pce_config)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:581,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:583,1
    - Dst: pcep_cli_is_pcep_pce_config_used
      Src: /src/frr/pathd/path_pcep_cli.c:588,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:589,1
    - Dst: pcep_cli_delete_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - pcep_pce_config
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 597
    functionName: path_pcep_cli_pcep_pce_config_delete
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_cli_is_pcep_pce_config_used
    - pcep_cli_delete_pcep_pce_config
    - vty_out
    - pcep_cli_find_pcep_pce_config
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_pcep_pce_config_delete(struct vty *vty,\n\t\t\t\t\t\tconst
      char *pcep_pce_config)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_cli.c:607,1
    - Dst: pcep_cli_find_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:611,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:614,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:619,1
    - Dst: pcep_cli_print_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:620,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:621,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:632,1
    - Dst: pcep_cli_print_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:633,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:634,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - vty
    - pcep_pce_config
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 639
    functionName: path_pcep_cli_show_srte_pcep_pce_config
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_cli_print_pce_config
    - strcmp
    - vty_out
    - pcep_cli_find_pcep_pce_config
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_show_srte_pcep_pce_config(struct vty *vty,\n\t\t\t\t\t\t
      \  const char *pcep_pce_config)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pce
      Src: /src/frr/pathd/path_pcep_cli.c:644,1
    - Dst: pcep_cli_create_pce_opts
      Src: /src/frr/pathd/path_pcep_cli.c:646,1
    - Dst: pcep_cli_add_pce
      Src: /src/frr/pathd/path_pcep_cli.c:648,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:649,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_cli.c:652,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - pce_peer_name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 641
    functionDepth: 2
    functionLinenumber: 641
    functionLinenumberEnd: 661
    functionName: path_pcep_cli_pce
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_cli_create_pce_opts
    - vty_out
    - pcep_cli_add_pce
    - pcep_cli_find_pce
    - XFREE
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_pce(struct vty *vty, const char *pce_peer_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pce
      Src: /src/frr/pathd/path_pcep_cli.c:665,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:667,1
    - Dst: pcep_cli_pcc_has_pce
      Src: /src/frr/pathd/path_pcep_cli.c:673,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:674,1
    - Dst: path_pcep_cli_pcc_pcc_peer_delete
      Src: /src/frr/pathd/path_pcep_cli.c:676,1
    - Dst: pcep_cli_delete_pce
      Src: /src/frr/pathd/path_pcep_cli.c:679,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - pce_peer_name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 682
    functionName: path_pcep_cli_pce_delete
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - pcep_cli_pcc_has_pce
    - pcep_cli_find_pce
    - pcep_cli_delete_pce
    - path_pcep_cli_pcc_pcc_peer_delete
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_pce_delete(struct vty *vty, const char *pce_peer_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:689,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_cli.c:692,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:693,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:697,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:703,1
    - Dst: pcep_cli_print_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:708,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - pce_opts_cli
    argTypes:
    - struct vty*
    - struct pce_opts_cli*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 686
    functionDepth: 2
    functionLinenumber: 686
    functionLinenumberEnd: 710
    functionName: show_pce_peer
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_cli_print_pce_config
    - IS_IPADDR_V6
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_pce_peer(struct vty *vty, struct pce_opts_cli *pce_opts_cli)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pce
      Src: /src/frr/pathd/path_pcep_cli.c:718,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:720,1
    - Dst: pcep_cli_merge_pcep_pce_config_options
      Src: /src/frr/pathd/path_pcep_cli.c:724,1
    - Dst: show_pce_peer
      Src: /src/frr/pathd/path_pcep_cli.c:725,1
    - Dst: pcep_cli_merge_pcep_pce_config_options
      Src: /src/frr/pathd/path_pcep_cli.c:737,1
    - Dst: show_pce_peer
      Src: /src/frr/pathd/path_pcep_cli.c:738,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - vty
    - pce_peer
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 712
    functionDepth: 3
    functionLinenumber: 712
    functionLinenumberEnd: 742
    functionName: path_pcep_cli_show_srte_pcep_pce
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_cli_merge_pcep_pce_config_options
    - show_pce_peer
    - vty_out
    - pcep_cli_find_pce
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_show_srte_pcep_pce(struct vty *vty,\n\t\t\t\t\t
      \   const char *pce_peer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 744
    functionDepth: 0
    functionLinenumber: 744
    functionLinenumberEnd: 762
    functionName: path_pcep_cli_peer_sr_draft07
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_peer_sr_draft07(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 764
    functionDepth: 0
    functionLinenumber: 764
    functionLinenumberEnd: 782
    functionName: path_pcep_cli_peer_pce_initiated
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_peer_pce_initiated(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_cli.c:800,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - tcp_md5_auth
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 804
    functionName: path_pcep_cli_peer_tcp_md5_auth
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_peer_tcp_md5_auth(struct vty *vty,\n\t\t\t\t\t   const
      char *tcp_md5_auth)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:823,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:827,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:834,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 7
    argNames:
    - vty
    - ip_str
    - ip
    - ipv6_str
    - ipv6
    - port_str
    - port
    argTypes:
    - struct vty*
    - char*
    - struct in_addr*
    - char*
    - struct in6_addr*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 837
    functionName: path_pcep_cli_peer_address
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - PCEP_VTYSH_INT_ARG_CHECK
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_peer_address(struct vty *vty, const char *ip_str,\n\t\t\t\t
      \     struct in_addr *ip, const char *ipv6_str,\n\t\t\t\t      struct in6_addr
      *ipv6,\n\t\t\t\t      const char *port_str, long port)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:861,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:865,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:870,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 7
    argNames:
    - vty
    - ip_str
    - ip
    - ipv6_str
    - ipv6
    - port_str
    - port
    argTypes:
    - struct vty*
    - char*
    - struct in_addr*
    - char*
    - struct in6_addr*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 839
    functionDepth: 1
    functionLinenumber: 839
    functionLinenumberEnd: 874
    functionName: path_pcep_cli_peer_source_address
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - PCEP_VTYSH_INT_ARG_CHECK
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_peer_source_address(struct vty *vty,\n\t\t\t\t\t
      \    const char *ip_str,\n\t\t\t\t\t     struct in_addr *ip,\n\t\t\t\t\t     const
      char *ipv6_str,\n\t\t\t\t\t     struct in6_addr *ipv6,\n\t\t\t\t\t     const
      char *port_str, long port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pcep_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:888,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:890,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_pcep_cli.c:895,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - config_group_name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 876
    functionDepth: 2
    functionLinenumber: 876
    functionLinenumberEnd: 899
    functionName: path_pcep_cli_peer_pcep_pce_config_ref
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - vty_out
    - pcep_cli_find_pcep_pce_config
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_peer_pcep_pce_config_ref(struct vty *vty,\n\t\t\t\t\t\t
      \ const char *config_group_name)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:935,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:937,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:939,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:941,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:943,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:945,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:947,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:949,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:952,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 19
    argNames:
    - vty
    - keep_alive_str
    - keep_alive
    - min_peer_keep_alive_str
    - min_peer_keep_alive
    - max_peer_keep_alive_str
    - max_peer_keep_alive
    - dead_timer_str
    - dead_timer
    - min_peer_dead_timer_str
    - min_peer_dead_timer
    - max_peer_dead_timer_str
    - max_peer_dead_timer
    - pcep_request_str
    - pcep_request
    - session_timeout_interval_str
    - session_timeout_interval
    - delegation_timeout_str
    - delegation_timeout
    argTypes:
    - struct vty*
    - char*
    - long
    - char*
    - long
    - char*
    - long
    - char*
    - long
    - char*
    - long
    - char*
    - long
    - char*
    - long
    - char*
    - long
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 956
    functionName: path_pcep_cli_peer_timers
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - PCEP_VTYSH_INT_ARG_CHECK
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_peer_timers(\n\tstruct vty *vty, const char *keep_alive_str,
      long keep_alive,\n\tconst char *min_peer_keep_alive_str, long min_peer_keep_alive,\n\tconst
      char *max_peer_keep_alive_str, long max_peer_keep_alive,\n\tconst char *dead_timer_str,
      long dead_timer,\n\tconst char *min_peer_dead_timer_str, long min_peer_dead_timer,\n\tconst
      char *max_peer_dead_timer_str, long max_peer_dead_timer,\n\tconst char *pcep_request_str,
      long pcep_request,\n\tconst char *session_timeout_interval_str, long session_timeout_interval,\n\tconst
      char *delegation_timeout_str, long delegation_timeout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VTY_PUSH_CONTEXT_NULL
      Src: /src/frr/pathd/path_pcep_cli.c:960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 958
    functionDepth: 1
    functionLinenumber: 958
    functionLinenumberEnd: 963
    functionName: path_pcep_cli_pcc
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - VTY_PUSH_CONTEXT_NULL
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_pcc(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pathd/path_pcep_cli.c:968,1
    - Dst: pcep_ctrl_remove_pcc
      Src: /src/frr/pathd/path_pcep_cli.c:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 965
    functionDepth: 2
    functionLinenumber: 965
    functionLinenumberEnd: 974
    functionName: path_pcep_cli_pcc_delete
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_ctrl_remove_pcc
    - memset
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_pcc_delete(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - msd_str
    - msd
    argTypes:
    - struct vty*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 983
    functionName: path_pcep_cli_pcc_pcc_msd
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - PCEP_VTYSH_INT_ARG_CHECK
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_pcc_pcc_msd(struct vty *vty, const char *msd_str,\n\t\t\t\t
      \    long msd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pce
      Src: /src/frr/pathd/path_pcep_cli.c:990,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:992,1
    - Dst: pcep_cli_pcc_has_pce
      Src: /src/frr/pathd/path_pcep_cli.c:998,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:999,1
    - Dst: PCEP_VTYSH_INT_ARG_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:1006,1
    - Dst: pcep_cli_merge_pcep_pce_config_options
      Src: /src/frr/pathd/path_pcep_cli.c:1010,1
    - Dst: pcep_cli_add_pce_connection
      Src: /src/frr/pathd/path_pcep_cli.c:1011,1
    - Dst: memset
      Src: /src/frr/pathd/path_pcep_cli.c:1015,1
    - Dst: memcmp
      Src: /src/frr/pathd/path_pcep_cli.c:1016,1
    - Dst: IPADDRSZ
      Src: /src/frr/pathd/path_pcep_cli.c:1016,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1018,1
    - Dst: XMALLOC
      Src: /src/frr/pathd/path_pcep_cli.c:1026,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:1027,1
    - Dst: pcep_ctrl_update_pcc_options
      Src: /src/frr/pathd/path_pcep_cli.c:1032,1
    - Dst: XMALLOC
      Src: /src/frr/pathd/path_pcep_cli.c:1038,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:1039,1
    - Dst: pcep_ctrl_update_pce_options
      Src: /src/frr/pathd/path_pcep_cli.c:1040,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - vty
    - peer_name
    - precedence_str
    - precedence
    argTypes:
    - struct vty*
    - char*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 985
    functionDepth: 2
    functionLinenumber: 985
    functionLinenumberEnd: 1045
    functionName: path_pcep_cli_pcc_pcc_peer
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_ctrl_update_pce_options
    - vty_out
    - pcep_cli_pcc_has_pce
    - pcep_cli_find_pce
    - pcep_cli_add_pce_connection
    - memset
    - XMALLOC
    - pcep_ctrl_update_pcc_options
    - PCEP_VTYSH_INT_ARG_CHECK
    - memcmp
    - pcep_cli_merge_pcep_pce_config_options
    - IPADDRSZ
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_pcc_pcc_peer(struct vty *vty, const char *peer_name,\n\t\t\t\t
      \     const char *precedence_str,\n\t\t\t\t      long precedence)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_pcc_has_pce
      Src: /src/frr/pathd/path_pcep_cli.c:1053,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1054,1
    - Dst: pcep_cli_find_pce
      Src: /src/frr/pathd/path_pcep_cli.c:1060,1
    - Dst: pcep_cli_remove_pce_connection
      Src: /src/frr/pathd/path_pcep_cli.c:1061,1
    - Dst: XMALLOC
      Src: /src/frr/pathd/path_pcep_cli.c:1065,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_cli.c:1066,1
    - Dst: pcep_ctrl_remove_pcc
      Src: /src/frr/pathd/path_pcep_cli.c:1067,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - vty
    - peer_name
    - precedence_str
    - precedence
    argTypes:
    - struct vty*
    - char*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1047
    functionDepth: 2
    functionLinenumber: 1047
    functionLinenumberEnd: 1070
    functionName: path_pcep_cli_pcc_pcc_peer_delete
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 1
    functionsReached:
    - vty_out
    - pcep_cli_pcc_has_pce
    - pcep_cli_find_pce
    - XMALLOC
    - pcep_cli_remove_pce_connection
    - pcep_ctrl_remove_pcc
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_pcc_pcc_peer_delete(struct vty *vty,\n\t\t\t\t\t
      \    const char *peer_name,\n\t\t\t\t\t     const char *precedence_str,\n\t\t\t\t\t
      \    long precedence)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1074,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1072
    functionDepth: 2
    functionLinenumber: 1072
    functionLinenumberEnd: 1077
    functionName: path_pcep_cli_show_srte_pcep_pcc
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int path_pcep_cli_show_srte_pcep_pcc(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1084,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1087,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1090,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1093,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1096,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1099,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1102,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - buf
    - buf_len
    - config
    argTypes:
    - char*
    - size_t
    - pcep_configuration*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1080
    functionDepth: 8
    functionLinenumber: 1080
    functionLinenumberEnd: 1104
    functionName: print_pcep_capabilities
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - csnprintfrr
    linkageType: ''
    returnType: void
    signature: "void print_pcep_capabilities(char *buf, size_t buf_len,\n\t\t\t\t
      \   pcep_configuration *config)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1113,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_cli.c:1116,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1117,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_cli.c:1119,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1120,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_cli.c:1125,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1126,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_cli.c:1128,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1129,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1132,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1135,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1137,1
    - Dst: pcc_status_name
      Src: /src/frr/pathd/path_pcep_cli.c:1138,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1142,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1146,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1150,1
    - Dst: pcep_ctrl_get_pcep_session
      Src: /src/frr/pathd/path_pcep_cli.c:1157,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1162,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1166,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1170,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1172,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1175,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1177,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1179,1
    - Dst: strlen
      Src: /src/frr/pathd/path_pcep_cli.c:1181,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1182,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1185,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1189,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1191,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1194,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1195,1
    - Dst: time
      Src: /src/frr/pathd/path_pcep_cli.c:1200,1
    - Dst: localtime_r
      Src: /src/frr/pathd/path_pcep_cli.c:1203,1
    - Dst: gmtime_r
      Src: /src/frr/pathd/path_pcep_cli.c:1204,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1205,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1217,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1220,1
    - Dst: print_pcep_capabilities
      Src: /src/frr/pathd/path_pcep_cli.c:1223,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1225,1
    - Dst: print_pcep_capabilities
      Src: /src/frr/pathd/path_pcep_cli.c:1229,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1231,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_cli.c:1233,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1235,1
    - Dst: pcep_ctrl_get_counters
      Src: /src/frr/pathd/path_pcep_cli.c:1240,1
    - Dst: find_subgroup
      Src: /src/frr/pathd/path_pcep_cli.c:1244,1
    - Dst: find_subgroup
      Src: /src/frr/pathd/path_pcep_cli.c:1246,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1249,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1250,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1257,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1263,1
    - Dst: subgroup_counters_total
      Src: /src/frr/pathd/path_pcep_cli.c:1264,1
    - Dst: subgroup_counters_total
      Src: /src/frr/pathd/path_pcep_cli.c:1265,1
    - Dst: pcep_lib_free_counters
      Src: /src/frr/pathd/path_pcep_cli.c:1267,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1269,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_cli.c:1272,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 88
    argCount: 3
    argNames:
    - vty
    - pce_opts
    - pcc_info
    argTypes:
    - struct vty*
    - struct pce_opts*
    - struct pcep_pcc_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1107
    functionDepth: 9
    functionLinenumber: 1107
    functionLinenumberEnd: 1273
    functionName: print_pcep_session
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - strlen
    - IS_IPADDR_V6
    - vty_out
    - gmtime_r
    - localtime_r
    - subgroup_counters_total
    - print_pcep_capabilities
    - csnprintfrr
    - find_subgroup
    - pcep_lib_free_counters
    - pcc_status_name
    - XFREE
    - pcep_ctrl_get_pcep_session
    - pcep_ctrl_get_counters
    - IS_IPADDR_V4
    - time
    linkageType: ''
    returnType: void
    signature: "void print_pcep_session(struct vty *vty, struct pce_opts *pce_opts,\n\t\t\t
      \      struct pcep_pcc_info *pcc_info)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pce
      Src: /src/frr/pathd/path_pcep_cli.c:1283,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1285,1
    - Dst: pcep_cli_pcc_has_pce
      Src: /src/frr/pathd/path_pcep_cli.c:1289,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1290,1
    - Dst: pcep_ctrl_get_pcc_info
      Src: /src/frr/pathd/path_pcep_cli.c:1295,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1297,1
    - Dst: print_pcep_session
      Src: /src/frr/pathd/path_pcep_cli.c:1303,1
    - Dst: pcep_ctrl_get_pcc_info
      Src: /src/frr/pathd/path_pcep_cli.c:1319,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1321,1
    - Dst: print_pcep_session
      Src: /src/frr/pathd/path_pcep_cli.c:1330,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1333,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - vty
    - pcc_peer
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1275
    functionDepth: 10
    functionLinenumber: 1275
    functionLinenumberEnd: 1337
    functionName: path_pcep_cli_show_srte_pcep_session
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - print_pcep_session
    - pcep_cli_pcc_has_pce
    - pcep_cli_find_pce
    - pcep_ctrl_get_pcc_info
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_show_srte_pcep_session(struct vty *vty,\n\t\t\t\t\t\tconst
      char *pcc_peer)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcep_cli_find_pce
      Src: /src/frr/pathd/path_pcep_cli.c:1346,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1348,1
    - Dst: pcep_cli_pcc_has_pce
      Src: /src/frr/pathd/path_pcep_cli.c:1352,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1353,1
    - Dst: pcep_ctrl_reset_pcc_session
      Src: /src/frr/pathd/path_pcep_cli.c:1358,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1360,1
    - Dst: pcep_ctrl_reset_pcc_session
      Src: /src/frr/pathd/path_pcep_cli.c:1375,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1376,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1380,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - vty
    - pcc_peer
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1339
    functionDepth: 2
    functionLinenumber: 1339
    functionLinenumberEnd: 1383
    functionName: path_pcep_cli_clear_srte_pcep_session
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_ctrl_reset_pcc_session
    - vty_out
    - pcep_cli_pcc_has_pce
    - pcep_cli_find_pce
    linkageType: ''
    returnType: int
    signature: "int path_pcep_cli_clear_srte_pcep_session(struct vty *vty,\n\t\t\t\t\t\t
      const char *pcc_peer)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:1393,1
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:1394,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1395,1
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:1397,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1398,1
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:1400,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1401,1
    - Dst: DEBUG_FLAGS_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:1403,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1404,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1389
    functionDepth: 8
    functionLinenumber: 1389
    functionLinenumberEnd: 1412
    functionName: pcep_cli_debug_config_write
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_CHECK
    - DEBUG_MODE_CHECK
    - vty_out
    - csnprintfrr
    linkageType: ''
    returnType: int
    signature: int pcep_cli_debug_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pathd/path_pcep_cli.c:1416,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pathd/path_pcep_cli.c:1419,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/pathd/path_pcep_cli.c:1420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1414
    functionDepth: 1
    functionLinenumber: 1414
    functionLinenumberEnd: 1423
    functionName: pcep_cli_debug_set_all
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: int
    signature: int pcep_cli_debug_set_all(uint32_t flags, bool set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1427,1
    - Dst: pcep_cli_pcep_pce_config_write
      Src: /src/frr/pathd/path_pcep_cli.c:1428,1
    - Dst: pcep_cli_pce_config_write
      Src: /src/frr/pathd/path_pcep_cli.c:1429,1
    - Dst: pcep_cli_pcc_config_write
      Src: /src/frr/pathd/path_pcep_cli.c:1430,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1425
    functionDepth: 2
    functionLinenumber: 1425
    functionLinenumberEnd: 1433
    functionName: pcep_cli_pcep_config_write
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 0
    functionsReached:
    - pcep_cli_pcep_pce_config_write
    - pcep_cli_pce_config_write
    - vty_out
    - pcep_cli_pcc_config_write
    linkageType: ''
    returnType: int
    signature: int pcep_cli_pcep_config_write(struct vty *vty)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1446,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1451,1
    - Dst: pcep_cli_pcc_has_pce
      Src: /src/frr/pathd/path_pcep_cli.c:1467,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1471,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1475,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1479,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1484,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1435
    functionDepth: 8
    functionLinenumber: 1435
    functionLinenumberEnd: 1487
    functionName: pcep_cli_pcc_config_write
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 1
    functionsReached:
    - csnprintfrr
    - vty_out
    - pcep_cli_pcc_has_pce
    linkageType: ''
    returnType: int
    signature: int pcep_cli_pcc_config_write(struct vty *vty)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1498,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_cli.c:1499,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1500,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_cli.c:1504,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1505,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1511,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1514,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1521,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1524,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1529,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1534,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1538,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1546,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1549,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1554,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1559,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1563,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1568,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1574,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1581,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1588,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1593,1
    - Dst: csnprintfrr
      Src: /src/frr/pathd/path_pcep_cli.c:1598,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 68
    argCount: 3
    argNames:
    - group_opts
    - buf
    - buf_len
    argTypes:
    - struct pcep_config_group_opts*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1491
    functionDepth: 8
    functionLinenumber: 1491
    functionLinenumberEnd: 1603
    functionName: pcep_cli_print_pce_config
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 2
    functionsReached:
    - IS_IPADDR_V6
    - IS_IPADDR_V4
    - csnprintfrr
    linkageType: ''
    returnType: int
    signature: "int pcep_cli_print_pce_config(struct pcep_config_group_opts *group_opts,\n\t\t\t\t
      \    char *buf, size_t buf_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1617,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_cli.c:1618,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1619,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_cli.c:1621,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1622,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1626,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1629,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1633,1
    - Dst: pcep_cli_print_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:1640,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1643,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1646,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1605
    functionDepth: 9
    functionLinenumber: 1605
    functionLinenumberEnd: 1650
    functionName: pcep_cli_pce_config_write
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 1
    functionsReached:
    - pcep_cli_print_pce_config
    - IS_IPADDR_V6
    - vty_out
    - IS_IPADDR_V4
    linkageType: ''
    returnType: int
    signature: int pcep_cli_pce_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1664,1
    - Dst: pcep_cli_print_pce_config
      Src: /src/frr/pathd/path_pcep_cli.c:1668,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1669,1
    - Dst: vty_out
      Src: /src/frr/pathd/path_pcep_cli.c:1672,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1652
    functionDepth: 9
    functionLinenumber: 1652
    functionLinenumberEnd: 1676
    functionName: pcep_cli_pcep_pce_config_write
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 1
    functionsReached:
    - pcep_cli_print_pce_config
    - vty_out
    linkageType: ''
    returnType: int
    signature: int pcep_cli_pcep_pce_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep_cli.c:1993,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep_cli.c:1994,1
    - Dst: hook_register
      Src: /src/frr/pathd/path_pcep_cli.c:1996,1
    - Dst: memset
      Src: /src/frr/pathd/path_pcep_cli.c:1998,1
    - Dst: install_node
      Src: /src/frr/pathd/path_pcep_cli.c:2000,1
    - Dst: install_node
      Src: /src/frr/pathd/path_pcep_cli.c:2001,1
    - Dst: install_node
      Src: /src/frr/pathd/path_pcep_cli.c:2002,1
    - Dst: install_node
      Src: /src/frr/pathd/path_pcep_cli.c:2003,1
    - Dst: install_default
      Src: /src/frr/pathd/path_pcep_cli.c:2005,1
    - Dst: install_default
      Src: /src/frr/pathd/path_pcep_cli.c:2006,1
    - Dst: install_default
      Src: /src/frr/pathd/path_pcep_cli.c:2007,1
    - Dst: install_default
      Src: /src/frr/pathd/path_pcep_cli.c:2008,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2010,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2013,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2014,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2015,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2017,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2018,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2019,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2020,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2023,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2024,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2025,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2026,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2027,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2028,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2029,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2030,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2031,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2034,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2035,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2036,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2037,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2038,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2041,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2042,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2043,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2044,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2045,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2046,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2047,1
    - Dst: install_element
      Src: /src/frr/pathd/path_pcep_cli.c:2048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 1991
    functionDepth: 6
    functionLinenumber: 1991
    functionLinenumberEnd: 2049
    functionName: pcep_cli_init
    functionSourceFile: /src/frr/pathd/path_pcep_cli.c
    functionUses: 1
    functionsReached:
    - install_node
    - memset
    - hook_register
    - install_default
    - install_element
    linkageType: ''
    returnType: void
    signature: void pcep_cli_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srte_apply_changes
      Src: /src/frr/pathd/path_nb_config.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 8
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: pathd_apply_finish
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - srte_apply_changes
    linkageType: ''
    returnType: void
    signature: void pathd_apply_finish(struct nb_cb_apply_finish_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:34,1
    - Dst: srte_segment_list_add
      Src: /src/frr/pathd/path_nb_config.c:35,1
    - Dst: nb_running_set_entry
      Src: /src/frr/pathd/path_nb_config.c:36,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 26
    functionDepth: 4
    functionLinenumber: 26
    functionLinenumberEnd: 40
    functionName: pathd_srte_segment_list_create
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - SET_FLAG
    - yang_dnode_get_string
    - srte_segment_list_add
    linkageType: ''
    returnType: int
    signature: int pathd_srte_segment_list_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/pathd/path_nb_config.c:49,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: pathd_srte_segment_list_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int pathd_srte_segment_list_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:66,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb_config.c:67,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 58
    functionDepth: 6
    functionLinenumber: 58
    functionLinenumberEnd: 71
    functionName: pathd_srte_segment_list_protocol_origin_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - SET_FLAG
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_segment_list_protocol_origin_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:84,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:85,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_nb_config.c:86,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 76
    functionDepth: 6
    functionLinenumber: 76
    functionLinenumberEnd: 91
    functionName: pathd_srte_segment_list_originator_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - yang_dnode_get_string
    - nb_running_get_entry
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: int pathd_srte_segment_list_originator_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:106,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:107,1
    - Dst: srte_segment_entry_add
      Src: /src/frr/pathd/path_nb_config.c:108,1
    - Dst: nb_running_set_entry
      Src: /src/frr/pathd/path_nb_config.c:109,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 97
    functionDepth: 6
    functionLinenumber: 97
    functionLinenumberEnd: 113
    functionName: pathd_srte_segment_list_segment_create
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - srte_segment_entry_add
    - nb_running_get_entry
    - SET_FLAG
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int pathd_srte_segment_list_segment_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/pathd/path_nb_config.c:122,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:123,1
    - Dst: srte_segment_entry_del
      Src: /src/frr/pathd/path_nb_config.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 128
    functionName: pathd_srte_segment_list_segment_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_unset_entry
    - srte_segment_entry_del
    linkageType: ''
    returnType: int
    signature: int pathd_srte_segment_list_segment_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:142,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:143,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 133
    functionDepth: 6
    functionLinenumber: 133
    functionLinenumberEnd: 148
    functionName: pathd_srte_segment_list_segment_sid_value_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_segment_list_segment_sid_value_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:158,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 150
    functionDepth: 6
    functionLinenumber: 150
    functionLinenumberEnd: 163
    functionName: pathd_srte_segment_list_segment_sid_value_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_segment_list_segment_sid_value_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 166
    functionDepth: 6
    functionLinenumber: 166
    functionLinenumberEnd: 181
    functionName: pathd_srte_segment_list_segment_nai_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int pathd_srte_segment_list_segment_nai_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:193,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb_config.c:194,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_nb_config.c:196,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_nb_config.c:204,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_nb_config.c:208,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:211,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:212,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:216,1
    - Dst: atoi
      Src: /src/frr/pathd/path_nb_config.c:217,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:218,1
    - Dst: atoi
      Src: /src/frr/pathd/path_nb_config.c:220,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:224,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:225,1
    - Dst: atoi
      Src: /src/frr/pathd/path_nb_config.c:227,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_nb_config.c:236,1
    - Dst: srte_segment_entry_set_nai
      Src: /src/frr/pathd/path_nb_config.c:238,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:241,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 183
    functionDepth: 6
    functionLinenumber: 183
    functionLinenumberEnd: 243
    functionName: pathd_srte_segment_list_segment_nai_apply_finish
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ip
    - nb_running_get_entry
    - zlog_debug
    - yang_dnode_get_string
    - SET_FLAG
    - yang_dnode_get_uint32
    - srte_segment_entry_set_nai
    - yang_dnode_get_enum
    - atoi
    linkageType: ''
    returnType: void
    signature: "void pathd_srte_segment_list_segment_nai_apply_finish(\n\tstruct nb_cb_apply_finish_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:257,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pathd/path_nb_config.c:258,1
    - Dst: srte_policy_add
      Src: /src/frr/pathd/path_nb_config.c:259,1
    - Dst: nb_running_set_entry
      Src: /src/frr/pathd/path_nb_config.c:261,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 248
    functionDepth: 4
    functionLinenumber: 248
    functionLinenumberEnd: 265
    functionName: pathd_srte_policy_create
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_get_ip
    - srte_policy_add
    - SET_FLAG
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/pathd/path_nb_config.c:274,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 278
    functionName: pathd_srte_policy_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:291,1
    - Dst: strlen
      Src: /src/frr/pathd/path_nb_config.c:295,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_nb_config.c:296,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:303,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_nb_config.c:304,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 283
    functionDepth: 6
    functionLinenumber: 283
    functionLinenumberEnd: 308
    functionName: pathd_srte_policy_name_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - strlen
    - flog_warn
    - strlcpy
    - nb_running_get_entry
    - SET_FLAG
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_name_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:317,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 310
    functionDepth: 6
    functionLinenumber: 310
    functionLinenumberEnd: 322
    functionName: pathd_srte_policy_name_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_name_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:332,1
    - Dst: path_zebra_request_label
      Src: /src/frr/pathd/path_nb_config.c:338,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:344,1
    - Dst: srte_policy_update_binding_sid
      Src: /src/frr/pathd/path_nb_config.c:345,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:346,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 327
    functionDepth: 7
    functionLinenumber: 327
    functionLinenumberEnd: 351
    functionName: pathd_srte_policy_binding_sid_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - srte_policy_update_binding_sid
    - nb_running_get_entry
    - path_zebra_request_label
    - SET_FLAG
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_binding_sid_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:360,1
    - Dst: srte_policy_update_binding_sid
      Src: /src/frr/pathd/path_nb_config.c:361,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 353
    functionDepth: 7
    functionLinenumber: 353
    functionLinenumberEnd: 365
    functionName: pathd_srte_policy_binding_sid_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - srte_policy_update_binding_sid
    - SET_FLAG
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_binding_sid_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:379,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:380,1
    - Dst: srte_candidate_add
      Src: /src/frr/pathd/path_nb_config.c:382,1
    - Dst: nb_running_set_entry
      Src: /src/frr/pathd/path_nb_config.c:383,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 370
    functionDepth: 6
    functionLinenumber: 370
    functionLinenumberEnd: 387
    functionName: pathd_srte_policy_candidate_path_create
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - nb_running_get_entry
    - SET_FLAG
    - yang_dnode_get_uint32
    - srte_candidate_add
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_candidate_path_create(struct nb_cb_create_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/pathd/path_nb_config.c:396,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 400
    functionName: pathd_srte_policy_candidate_path_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_candidate_path_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_path
      Src: /src/frr/pathd/path_nb_config.c:419,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_nb_config.c:420,1
    - Dst: nb_running_get_entry_non_rec
      Src: /src/frr/pathd/path_nb_config.c:422,1
    - Dst: strlen
      Src: /src/frr/pathd/path_nb_config.c:425,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_nb_config.c:426,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:433,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:435,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_nb_config.c:436,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:437,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 405
    functionDepth: 6
    functionLinenumber: 405
    functionLinenumberEnd: 440
    functionName: pathd_srte_policy_candidate_path_name_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry_non_rec
    - strlen
    - flog_warn
    - snprintf
    - strlcpy
    - nb_running_get_entry
    - SET_FLAG
    - yang_dnode_get_string
    - yang_dnode_get_path
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_candidate_path_name_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:452,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:453,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pathd/path_nb_config.c:454,1
    - Dst: srte_candidate_set_affinity_filter
      Src: /src/frr/pathd/path_nb_config.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - args
    - type
    argTypes:
    - struct nb_cb_modify_args*
    - enum affinity_filter_type
    assertStmts:
    - condition: (args->context != NULL)
      pos:
        line_end: 451
        line_start: 451
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 458
      start: 443
    functionDepth: 6
    functionLinenumber: 443
    functionLinenumberEnd: 458
    functionName: affinity_filter_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - srte_candidate_set_affinity_filter
    - yang_dnode_get_uint32
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int affinity_filter_modify(struct nb_cb_modify_args *args,\n\t\t\t\t
      \ enum affinity_filter_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:468,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:469,1
    - Dst: srte_candidate_unset_affinity_filter
      Src: /src/frr/pathd/path_nb_config.c:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - args
    - type
    argTypes:
    - struct nb_cb_destroy_args*
    - enum affinity_filter_type
    assertStmts:
    - condition: (args->context != NULL)
      pos:
        line_end: 467
        line_start: 467
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 473
      start: 460
    functionDepth: 6
    functionLinenumber: 460
    functionLinenumberEnd: 473
    functionName: affinity_filter_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - srte_candidate_unset_affinity_filter
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int affinity_filter_destroy(struct nb_cb_destroy_args *args,\n\t\t\t\t
      \  enum affinity_filter_type type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: affinity_filter_modify
      Src: /src/frr/pathd/path_nb_config.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 480
    functionDepth: 7
    functionLinenumber: 480
    functionLinenumberEnd: 484
    functionName: pathd_srte_policy_candidate_path_exclude_any_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - affinity_filter_modify
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_exclude_any_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: affinity_filter_destroy
      Src: /src/frr/pathd/path_nb_config.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 486
    functionDepth: 7
    functionLinenumber: 486
    functionLinenumberEnd: 490
    functionName: pathd_srte_policy_candidate_path_exclude_any_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - affinity_filter_destroy
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_exclude_any_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: affinity_filter_modify
      Src: /src/frr/pathd/path_nb_config.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 497
    functionDepth: 7
    functionLinenumber: 497
    functionLinenumberEnd: 501
    functionName: pathd_srte_policy_candidate_path_include_any_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - affinity_filter_modify
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_include_any_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: affinity_filter_destroy
      Src: /src/frr/pathd/path_nb_config.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 503
    functionDepth: 7
    functionLinenumber: 503
    functionLinenumberEnd: 507
    functionName: pathd_srte_policy_candidate_path_include_any_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - affinity_filter_destroy
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_include_any_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: affinity_filter_modify
      Src: /src/frr/pathd/path_nb_config.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 514
    functionDepth: 7
    functionLinenumber: 514
    functionLinenumberEnd: 518
    functionName: pathd_srte_policy_candidate_path_include_all_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - affinity_filter_modify
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_include_all_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: affinity_filter_destroy
      Src: /src/frr/pathd/path_nb_config.c:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 520
    functionDepth: 7
    functionLinenumber: 520
    functionLinenumberEnd: 524
    functionName: pathd_srte_policy_candidate_path_include_all_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - affinity_filter_destroy
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_include_all_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:539,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:540,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb_config.c:542,1
    - Dst: srte_candidate_unset_metric
      Src: /src/frr/pathd/path_nb_config.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts:
    - condition: (args->context != NULL)
      pos:
        line_end: 538
        line_start: 538
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 546
      start: 530
    functionDepth: 6
    functionLinenumber: 530
    functionLinenumberEnd: 546
    functionName: pathd_srte_policy_candidate_path_metrics_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - srte_candidate_unset_metric
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_metrics_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:556,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:558,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb_config.c:560,1
    - Dst: yang_dnode_get_dec64
      Src: /src/frr/pathd/path_nb_config.c:561,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_nb_config.c:562,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_nb_config.c:563,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_nb_config.c:564,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pathd/path_nb_config.c:565,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_nb_config.c:566,1
    - Dst: srte_candidate_set_metric
      Src: /src/frr/pathd/path_nb_config.c:568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts:
    - condition: (args->context != NULL)
      pos:
        line_end: 555
        line_start: 555
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 570
      start: 548
    functionDepth: 6
    functionLinenumber: 548
    functionLinenumberEnd: 570
    functionName: pathd_srte_policy_candidate_path_metrics_apply_finish
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_dec64
    - srte_candidate_set_metric
    - nb_running_get_entry
    - yang_dnode_get_enum
    - yang_dnode_exists
    - assert
    linkageType: ''
    returnType: void
    signature: "void pathd_srte_policy_candidate_path_metrics_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:584,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:586,1
    - Dst: srte_candidate_unset_objfun
      Src: /src/frr/pathd/path_nb_config.c:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts:
    - condition: (args->context != NULL)
      pos:
        line_end: 583
        line_start: 583
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 590
      start: 576
    functionDepth: 6
    functionLinenumber: 576
    functionLinenumberEnd: 590
    functionName: pathd_srte_policy_candidate_path_objfun_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - srte_candidate_unset_objfun
    - nb_running_get_entry
    - assert
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_objfun_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:599,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_nb_config.c:600,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb_config.c:601,1
    - Dst: srte_candidate_set_objfun
      Src: /src/frr/pathd/path_nb_config.c:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 592
    functionDepth: 6
    functionLinenumber: 592
    functionLinenumberEnd: 603
    functionName: pathd_srte_policy_candidate_path_objfun_apply_finish
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_enum
    - srte_candidate_set_objfun
    - nb_running_get_entry
    linkageType: ''
    returnType: void
    signature: "void pathd_srte_policy_candidate_path_objfun_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:617,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb_config.c:618,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 608
    functionDepth: 6
    functionLinenumber: 608
    functionLinenumberEnd: 624
    functionName: pathd_srte_policy_candidate_path_protocol_origin_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_enum
    - SET_FLAG
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_protocol_origin_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:638,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:639,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_nb_config.c:640,1
    - Dst: strlcpy
      Src: /src/frr/pathd/path_nb_config.c:642,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 629
    functionDepth: 6
    functionLinenumber: 629
    functionLinenumberEnd: 647
    functionName: pathd_srte_policy_candidate_path_originator_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - yang_dnode_get_string
    - nb_running_get_entry
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_originator_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_path
      Src: /src/frr/pathd/path_nb_config.c:666,1
    - Dst: snprintf
      Src: /src/frr/pathd/path_nb_config.c:667,1
    - Dst: nb_running_get_entry_non_rec
      Src: /src/frr/pathd/path_nb_config.c:669,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_nb_config.c:674,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:681,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pathd/path_nb_config.c:683,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:685,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 652
    functionDepth: 6
    functionLinenumber: 652
    functionLinenumberEnd: 688
    functionName: pathd_srte_policy_candidate_path_type_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry_non_rec
    - flog_warn
    - snprintf
    - nb_running_get_entry
    - SET_FLAG
    - yang_dnode_get_path
    - yang_dnode_get_enum
    linkageType: ''
    returnType: int
    signature: int pathd_srte_policy_candidate_path_type_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:702,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pathd/path_nb_config.c:703,1
    - Dst: srte_segment_list_find
      Src: /src/frr/pathd/path_nb_config.c:705,1
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:707,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts:
    - condition: (candidate->segment_list)
      pos:
        line_end: 706
        line_start: 706
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 711
      start: 693
    functionDepth: 6
    functionLinenumber: 693
    functionLinenumberEnd: 711
    functionName: pathd_srte_policy_candidate_path_segment_list_name_modify
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - srte_segment_list_find
    - yang_dnode_get_string
    - SET_FLAG
    - assert
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_segment_list_name_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:721,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_nb_config.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 713
    functionDepth: 6
    functionLinenumber: 713
    functionLinenumberEnd: 727
    functionName: pathd_srte_policy_candidate_path_segment_list_name_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_segment_list_name_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:739,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:741,1
    - Dst: yang_dnode_get_dec64
      Src: /src/frr/pathd/path_nb_config.c:742,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pathd/path_nb_config.c:743,1
    - Dst: srte_candidate_set_bandwidth
      Src: /src/frr/pathd/path_nb_config.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts:
    - condition: (args->context != NULL)
      pos:
        line_end: 738
        line_start: 738
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 745
      start: 732
    functionDepth: 6
    functionLinenumber: 732
    functionLinenumberEnd: 745
    functionName: pathd_srte_policy_candidate_path_bandwidth_apply_finish
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_dec64
    - nb_running_get_entry
    - srte_candidate_set_bandwidth
    - assert
    linkageType: ''
    returnType: void
    signature: "void pathd_srte_policy_candidate_path_bandwidth_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_nb_config.c:755,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pathd/path_nb_config.c:756,1
    - Dst: srte_candidate_unset_bandwidth
      Src: /src/frr/pathd/path_nb_config.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts:
    - condition: (args->context != NULL)
      pos:
        line_end: 754
        line_start: 754
        source_file: /src/frr/pathd/path_nb_config.c
    constantsTouched: []
    func_position:
      end: 759
      start: 747
    functionDepth: 6
    functionLinenumber: 747
    functionLinenumberEnd: 759
    functionName: pathd_srte_policy_candidate_path_bandwidth_destroy
    functionSourceFile: /src/frr/pathd/path_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - assert
    - srte_candidate_unset_bandwidth
    linkageType: ''
    returnType: int
    signature: "int pathd_srte_policy_candidate_path_bandwidth_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/pathd/path_main.c:51,1
    - Dst: vty_read_config
      Src: /src/frr/pathd/path_main.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: sighup
    functionSourceFile: /src/frr/pathd/path_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vty_read_config
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/pathd/path_main.c:60,1
    - Dst: zlog_notice
      Src: /src/frr/pathd/path_main.c:61,1
    - Dst: pathd_shutdown
      Src: /src/frr/pathd/path_main.c:62,1
    - Dst: exit
      Src: /src/frr/pathd/path_main.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 9
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: sigint
    functionSourceFile: /src/frr/pathd/path_main.c
    functionUses: 0
    functionsReached:
    - exit
    - pathd_shutdown
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/pathd/path_main.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: sigusr1
    functionSourceFile: /src/frr/pathd/path_main.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/pathd/path_main.c:112,1
    - Dst: frr_opt_add
      Src: /src/frr/pathd/path_main.c:113,1
    - Dst: frr_getopt
      Src: /src/frr/pathd/path_main.c:118,1
    - Dst: frr_help_exit
      Src: /src/frr/pathd/path_main.c:127,1
    - Dst: frr_init
      Src: /src/frr/pathd/path_main.c:131,1
    - Dst: access_list_init
      Src: /src/frr/pathd/path_main.c:133,1
    - Dst: path_error_init
      Src: /src/frr/pathd/path_main.c:135,1
    - Dst: path_zebra_init
      Src: /src/frr/pathd/path_main.c:136,1
    - Dst: path_cli_init
      Src: /src/frr/pathd/path_main.c:137,1
    - Dst: path_ted_init
      Src: /src/frr/pathd/path_main.c:138,1
    - Dst: frr_config_fork
      Src: /src/frr/pathd/path_main.c:140,1
    - Dst: frr_run
      Src: /src/frr/pathd/path_main.c:141,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 110
    functionDepth: 7
    functionLinenumber: 110
    functionLinenumberEnd: 145
    functionName: main
    functionSourceFile: /src/frr/pathd/path_main.c
    functionUses: 22
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - frr_getopt
    - frr_init
    - path_zebra_init
    - path_ted_init
    - frr_config_fork
    - path_cli_init
    - access_list_init
    - path_error_init
    - frr_run
    - frr_opt_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - or
    - ','
    - ts
    - ','
    - es
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: CHECK_SID
    functionSourceFile: /src/frr/pathd/pathd.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_SID(or, ts, es)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct req_entry*
    - struct req_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 147
    functionName: req_entry_compare
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int req_entry_compare(const struct req_entry *a,\n\t\t\t\t    const
      struct req_entry *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_pcc.c:155,1
    - Dst: RB_INIT
      Src: /src/frr/pathd/path_pcep_pcc.c:162,1
    - Dst: update_tag
      Src: /src/frr/pathd/path_pcep_pcc.c:164,1
    - Dst: update_originator
      Src: /src/frr/pathd/path_pcep_pcc.c:165,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctrl_state
    - index
    argTypes:
    - struct ctrl_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 170
    functionName: pcep_pcc_initialize
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - RB_INIT
    - update_originator
    - update_tag
    - PCEP_DEBUG
    linkageType: ''
    returnType: struct pcc_state
    signature: struct pcc_state *pcep_pcc_initialize(struct ctrl_state *ctrl_state,
      int index)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:175,1
    - Dst: pcep_pcc_disable
      Src: /src/frr/pathd/path_pcep_pcc.c:177,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:180,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:184,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:188,1
    - Dst: event_cancel
      Src: /src/frr/pathd/path_pcep_pcc.c:193,1
    - Dst: event_cancel
      Src: /src/frr/pathd/path_pcep_pcc.c:198,1
    - Dst: event_cancel
      Src: /src/frr/pathd/path_pcep_pcc.c:203,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:207,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 172
    functionDepth: 5
    functionLinenumber: 172
    functionLinenumberEnd: 208
    functionName: pcep_pcc_finalize
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - pcep_pcc_disable
    - event_cancel
    - PCEP_DEBUG
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_finalize(struct ctrl_state *ctrl_state,\n\t\t       struct
      pcc_state *pcc_state)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_pcc.c:232,1
    - Dst: memcmp
      Src: /src/frr/pathd/path_pcep_pcc.c:233,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_pcc.c:238,1
    - Dst: memcmp
      Src: /src/frr/pathd/path_pcep_pcc.c:239,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - struct pcc_opts*
    - struct pcc_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 247
    functionName: compare_pcc_opts
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - IS_IPADDR_V6
    - IS_IPADDR_V4
    - memcmp
    linkageType: ''
    returnType: int
    signature: int compare_pcc_opts(struct pcc_opts *lhs, struct pcc_opts *rhs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_pcc.c:264,1
    - Dst: memcmp
      Src: /src/frr/pathd/path_pcep_pcc.c:274,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - struct pce_opts*
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 280
    functionName: compare_pce_opts
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - strcmp
    - memcmp
    linkageType: ''
    returnType: int
    signature: int compare_pce_opts(struct pce_opts *lhs, struct pce_opts *rhs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: compare_pce_opts
      Src: /src/frr/pathd/path_pcep_pcc.c:288,1
    - Dst: compare_pcc_opts
      Src: /src/frr/pathd/path_pcep_pcc.c:289,1
    - Dst: pcep_pcc_disable
      Src: /src/frr/pathd/path_pcep_pcc.c:293,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:294,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:295,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:300,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:303,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_pcc.c:309,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:311,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:313,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_pcc.c:316,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_pcc.c:317,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:319,1
    - Dst: UNSET_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:321,1
    - Dst: update_tag
      Src: /src/frr/pathd/path_pcep_pcc.c:324,1
    - Dst: update_originator
      Src: /src/frr/pathd/path_pcep_pcc.c:325,1
    - Dst: pcep_pcc_enable
      Src: /src/frr/pathd/path_pcep_pcc.c:327,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_state
    - pcc_opts
    - pce_opts
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct pcc_opts*
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 328
    functionName: pcep_pcc_update
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - IS_IPADDR_V6
    - pcep_pcc_enable
    - update_originator
    - update_tag
    - pcep_pcc_disable
    - SET_FLAG
    - compare_pcc_opts
    - UNSET_FLAG
    - XFREE
    - IS_IPADDR_V4
    - compare_pce_opts
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pcep_pcc_update(struct ctrl_state *ctrl_state, struct pcc_state
      *pcc_state,\n\t\t    struct pcc_opts *pcc_opts, struct pce_opts *pce_opts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_enable
      Src: /src/frr/pathd/path_pcep_pcc.c:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 335
    functionName: pcep_pcc_reconnect
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_enable
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_reconnect(struct ctrl_state *ctrl_state,\n\t\t\tstruct
      pcc_state *pcc_state)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:339,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:340,1
    - Dst: event_cancel
      Src: /src/frr/pathd/path_pcep_pcc.c:343,1
    - Dst: select_transport_address
      Src: /src/frr/pathd/path_pcep_pcc.c:347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:351,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:353,1
    - Dst: schedule_reconnect
      Src: /src/frr/pathd/path_pcep_pcc.c:357,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:360,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:367,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:369,1
    - Dst: schedule_reconnect
      Src: /src/frr/pathd/path_pcep_pcc.c:373,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:376,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:384,1
    - Dst: schedule_reconnect
      Src: /src/frr/pathd/path_pcep_pcc.c:388,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:392,1
    - Dst: pcep_lib_connect
      Src: /src/frr/pathd/path_pcep_pcc.c:393,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:399,1
    - Dst: schedule_reconnect
      Src: /src/frr/pathd/path_pcep_pcc.c:405,1
    - Dst: event_cancel
      Src: /src/frr/pathd/path_pcep_pcc.c:411,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts:
    - condition: (pcc_state->sess == NULL)
      pos:
        line_end: 339
        line_start: 339
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (pcc_state->status == PCEP_PCC_DISCONNECTED)
      pos:
        line_end: 338
        line_start: 338
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 418
      start: 337
    functionDepth: 8
    functionLinenumber: 337
    functionLinenumberEnd: 418
    functionName: pcep_pcc_enable
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - flog_warn
    - schedule_reconnect
    - select_transport_address
    - event_cancel
    - CHECK_FLAG
    - PCEP_DEBUG
    - pcep_lib_connect
    - assert
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_enable(struct ctrl_state *ctrl_state, struct pcc_state
      *pcc_state)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:428,1
    - Dst: cancel_comp_requests
      Src: /src/frr/pathd/path_pcep_pcc.c:429,1
    - Dst: pcep_lib_disconnect
      Src: /src/frr/pathd/path_pcep_pcc.c:430,1
    - Dst: get_pce_count_connected
      Src: /src/frr/pathd/path_pcep_pcc.c:432,1
    - Dst: pcep_thread_remove_candidate_path_segments
      Src: /src/frr/pathd/path_pcep_pcc.c:433,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 442
        line_start: 442
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 444
      start: 420
    functionDepth: 6
    functionLinenumber: 420
    functionLinenumberEnd: 444
    functionName: pcep_pcc_disable
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - pcep_thread_remove_candidate_path_segments
    - cancel_comp_requests
    - PCEP_DEBUG
    - pcep_lib_disconnect
    - get_pce_count_connected
    - assert
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_disable(struct ctrl_state *ctrl_state, struct pcc_state
      *pcc_state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: has_pending_req_for
      Src: /src/frr/pathd/path_pcep_pcc.c:462,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:463,1
    - Dst: push_new_req
      Src: /src/frr/pathd/path_pcep_pcc.c:465,1
    - Dst: filter_path
      Src: /src/frr/pathd/path_pcep_pcc.c:472,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:473,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:475,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:477,1
    - Dst: ipaddr_type_name
      Src: /src/frr/pathd/path_pcep_pcc.c:480,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - path
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 484
    functionName: pcep_pcc_sync_path
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - ipaddr_type_name
    - filter_path
    - push_new_req
    - send_report
    - has_pending_req_for
    - PCEP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_sync_path(struct ctrl_state *ctrl_state,\n\t\t\tstruct
      pcc_state *pcc_state, struct path *path)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_new_path
      Src: /src/frr/pathd/path_pcep_pcc.c:497,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:510,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:511,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:517,1
    - Dst: RB_FOREACH
      Src: /src/frr/pathd/path_pcep_pcc.c:520,1
    - Dst: send_comp_request
      Src: /src/frr/pathd/path_pcep_pcc.c:521,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 523
    functionName: pcep_pcc_sync_done
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_free_path
    - pcep_new_path
    - send_report
    - send_comp_request
    - PCEP_DEBUG
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_sync_done(struct ctrl_state *ctrl_state,\n\t\t\tstruct
      pcc_state *pcc_state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:531,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:535,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:544,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:549,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:552,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:555,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_state
    - path
    - is_stable
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct path*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 556
    functionName: pcep_pcc_send_report
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_free_path
    - send_report
    - PCEP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_send_report(struct ctrl_state *ctrl_state,\n\t\t\t  struct
      pcc_state *pcc_state, struct path *path,\n\t\t\t  bool is_stable)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:564,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:567,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:569,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_state
    - error
    - sub_type
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct pcep_error*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 571
    functionName: pcep_pcc_send_error
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - send_pcep_error
    - PCEP_DEBUG
    - pcep_free_path
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_send_error(struct ctrl_state *ctrl_state,\n\t\t\t struct
      pcc_state *pcc_state, struct pcep_error *error,\n\t\t\t bool sub_type)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:582,1
    - Dst: pop_req
      Src: /src/frr/pathd/path_pcep_pcc.c:584,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:585,1
    - Dst: cancel_comp_request
      Src: /src/frr/pathd/path_pcep_pcc.c:587,1
    - Dst: repush_req
      Src: /src/frr/pathd/path_pcep_pcc.c:589,1
    - Dst: send_comp_request
      Src: /src/frr/pathd/path_pcep_pcc.c:590,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:595,1
    - Dst: pcep_copy_path
      Src: /src/frr/pathd/path_pcep_pcc.c:599,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:601,1
    - Dst: free_req_entry
      Src: /src/frr/pathd/path_pcep_pcc.c:602,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_state
    - type
    - param
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - enum pcep_ctrl_timeout_type
    - void*
    assertStmts:
    - condition: (param != NULL)
      pos:
        line_end: 581
        line_start: 581
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 609
      start: 574
    functionDepth: 3
    functionLinenumber: 574
    functionLinenumberEnd: 609
    functionName: pcep_pcc_timeout_handler
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - assert
    - cancel_comp_request
    - pop_req
    - flog_warn
    - send_report
    - send_comp_request
    - pcep_copy_path
    - PCEP_DEBUG
    - free_req_entry
    - repush_req
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_timeout_handler(struct ctrl_state *ctrl_state,\n\t\t\t
      \     struct pcc_state *pcc_state,\n\t\t\t      enum pcep_ctrl_timeout_type
      type, void *param)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: filter_path
      Src: /src/frr/pathd/path_pcep_pcc.c:626,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:627,1
    - Dst: ipaddr_type_name
      Src: /src/frr/pathd/path_pcep_pcc.c:629,1
    - Dst: has_pending_req_for
      Src: /src/frr/pathd/path_pcep_pcc.c:635,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:636,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:641,1
    - Dst: push_new_req
      Src: /src/frr/pathd/path_pcep_pcc.c:645,1
    - Dst: send_comp_request
      Src: /src/frr/pathd/path_pcep_pcc.c:646,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:648,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:651,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:654,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:657,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:664,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:667,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_state
    - type
    - path
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - enum pcep_pathd_event_type
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 614
    functionDepth: 1
    functionLinenumber: 614
    functionLinenumberEnd: 672
    functionName: pcep_pcc_pathd_event_handler
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - ipaddr_type_name
    - filter_path
    - flog_warn
    - push_new_req
    - send_report
    - send_comp_request
    - has_pending_req_for
    - PCEP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_pathd_event_handler(struct ctrl_state *ctrl_state,\n\t\t\t\t
      \ struct pcc_state *pcc_state,\n\t\t\t\t  enum pcep_pathd_event_type type,\n\t\t\t\t
      \ struct path *path)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:680,1
    - Dst: pcep_event_type_name
      Src: /src/frr/pathd/path_pcep_pcc.c:681,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:684,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:685,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:689,1
    - Dst: cancel_session_timeout
      Src: /src/frr/pathd/path_pcep_pcc.c:690,1
    - Dst: pcep_pcc_calculate_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:691,1
    - Dst: pcep_thread_start_sync
      Src: /src/frr/pathd/path_pcep_pcc.c:692,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:695,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:696,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:712,1
    - Dst: PCEP_DEBUG_PCEP
      Src: /src/frr/pathd/path_pcep_pcc.c:713,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:714,1
    - Dst: pcep_pcc_disable
      Src: /src/frr/pathd/path_pcep_pcc.c:723,1
    - Dst: schedule_reconnect
      Src: /src/frr/pathd/path_pcep_pcc.c:724,1
    - Dst: schedule_session_timeout
      Src: /src/frr/pathd/path_pcep_pcc.c:725,1
    - Dst: PCEP_DEBUG_PCEP
      Src: /src/frr/pathd/path_pcep_pcc.c:728,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:729,1
    - Dst: handle_pcep_open
      Src: /src/frr/pathd/path_pcep_pcc.c:732,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:736,1
    - Dst: handle_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:738,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:741,1
    - Dst: format_pcep_event
      Src: /src/frr/pathd/path_pcep_pcc.c:743,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - event
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - pcep_event*
    assertStmts:
    - condition: "(pcc_state->status == PCEP_PCC_SYNCHRONIZING\n\t\t       || pcc_state->status
        == PCEP_PCC_OPERATING)"
      pos:
        line_end: 736
        line_start: 735
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (PCEP_PCC_CONNECTING == pcc_state->status)
      pos:
        line_end: 683
        line_start: 683
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 746
      start: 677
    functionDepth: 7
    functionLinenumber: 677
    functionLinenumberEnd: 746
    functionName: pcep_pcc_pcep_event_handler
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - format_pcep_event
    - PCEP_DEBUG_PCEP
    - flog_warn
    - schedule_reconnect
    - handle_pcep_message
    - cancel_session_timeout
    - pcep_pcc_disable
    - PCEP_DEBUG
    - pcep_event_type_name
    - format_pcep_message
    - handle_pcep_open
    - pcep_thread_start_sync
    - schedule_session_timeout
    - assert
    - pcep_pcc_calculate_best_pce
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_pcep_event_handler(struct ctrl_state *ctrl_state,\n\t\t\t\t
      struct pcc_state *pcc_state, pcep_event *event)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:754,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_pcc.c:757,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:759,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:764,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:770,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - pcc
    - best
    argTypes:
    - struct pcc_state**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 774
    functionName: update_best_pce
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_get_pcc_by_id
    - PCEP_DEBUG
    linkageType: ''
    returnType: bool
    signature: bool update_best_pce(struct pcc_state **pcc, int best)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - pcc
    argTypes:
    - struct pcc_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 786
    functionName: get_best_pce
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_best_pce(struct pcc_state **pcc)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - pcc
    argTypes:
    - struct pcc_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 798
    functionName: get_pce_count_connected
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_pce_count_connected(struct pcc_state **pcc)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - pcc
    argTypes:
    - struct pcc_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 812
    functionName: get_previous_best_pce
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_previous_best_pce(struct pcc_state **pcc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_calculate_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:820,1
    - Dst: update_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:822,1
    - Dst: pcep_thread_start_sync
      Src: /src/frr/pathd/path_pcep_pcc.c:823,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctrl_state
    - pcc
    argTypes:
    - struct ctrl_state*
    - struct pcc_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 816
    functionDepth: 2
    functionLinenumber: 816
    functionLinenumberEnd: 828
    functionName: pcep_pcc_multi_pce_remove_pcc
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_thread_start_sync
    - update_best_pce
    - pcep_pcc_calculate_best_pce
    linkageType: ''
    returnType: int
    signature: "int pcep_pcc_multi_pce_remove_pcc(struct ctrl_state *ctrl_state,\n\t\t\t\t
      \ struct pcc_state **pcc)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:837,1
    - Dst: get_previous_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:838,1
    - Dst: update_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:843,1
    - Dst: cancel_comp_requests
      Src: /src/frr/pathd/path_pcep_pcc.c:846,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_pcc.c:848,1
    - Dst: pcep_thread_start_sync
      Src: /src/frr/pathd/path_pcep_pcc.c:850,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_id
    - pcc
    argTypes:
    - struct ctrl_state*
    - int
    - struct pcc_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 857
    functionName: pcep_pcc_multi_pce_sync_path
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_get_pcc_by_id
    - update_best_pce
    - get_best_pce
    - get_previous_best_pce
    - cancel_comp_requests
    - pcep_thread_start_sync
    linkageType: ''
    returnType: int
    signature: "int pcep_pcc_multi_pce_sync_path(struct ctrl_state *ctrl_state, int
      pcc_id,\n\t\t\t\t struct pcc_state **pcc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:865,1
    - Dst: pcep_pcc_calculate_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:866,1
    - Dst: pcep_pcc_get_pcc_by_id
      Src: /src/frr/pathd/path_pcep_pcc.c:869,1
    - Dst: update_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:870,1
    - Dst: pcep_thread_start_sync
      Src: /src/frr/pathd/path_pcep_pcc.c:871,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_id
    argTypes:
    - struct ctrl_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 876
    functionName: pcep_pcc_timer_update_best_pce
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_get_pcc_by_id
    - update_best_pce
    - get_best_pce
    - pcep_pcc_calculate_best_pce
    - pcep_thread_start_sync
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_timer_update_best_pce(struct ctrl_state *ctrl_state, int
      pcc_id)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:893,1
    - Dst: ipaddr_cmp
      Src: /src/frr/pathd/path_pcep_pcc.c:921,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:941,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pathd/path_pcep_pcc.c:947,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:963,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:971,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:976,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:984,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pathd/path_pcep_pcc.c:992,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 68
    argCount: 1
    argNames:
    - pcc
    argTypes:
    - struct pcc_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 880
    functionDepth: 2
    functionLinenumber: 880
    functionLinenumberEnd: 996
    functionName: pcep_pcc_calculate_best_pce
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - ipaddr_cmp
    - pthread_mutex_lock
    - zlog_debug
    - pthread_mutex_unlock
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_calculate_best_pce(struct pcc_state **pcc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_cmp
      Src: /src/frr/pathd/path_pcep_pcc.c:1007,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:1012,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - pcc
    - pce_opts
    argTypes:
    - struct pcc_state**
    - struct pce_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 998
    functionDepth: 2
    functionLinenumber: 998
    functionLinenumberEnd: 1019
    functionName: pcep_pcc_get_pcc_id_by_ip_port
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - ipaddr_cmp
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int pcep_pcc_get_pcc_id_by_ip_port(struct pcc_state **pcc,\n\t\t\t\t
      \  struct pce_opts *pce_opts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - pcc
    - idx
    argTypes:
    - struct pcc_state**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1028
    functionName: pcep_pcc_get_pcc_id_by_idx
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_get_pcc_id_by_idx(struct pcc_state **pcc, int idx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:1039,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - pcc
    - id
    argTypes:
    - struct pcc_state**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1047
    functionName: pcep_pcc_get_pcc_by_id
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 12
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: struct pcc_state
    signature: struct pcc_state *pcep_pcc_get_pcc_by_id(struct pcc_state **pcc, int
      id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pathd/path_pcep_pcc.c:1061,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - pcc
    - pce_name
    argTypes:
    - struct pcc_state**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1049
    functionDepth: 0
    functionLinenumber: 1049
    functionLinenumberEnd: 1067
    functionName: pcep_pcc_get_pcc_by_name
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct pcc_state
    signature: "struct pcc_state *pcep_pcc_get_pcc_by_name(struct pcc_state **pcc,\n\t\t\t\t\t
      \  const char *pce_name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:1078,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - pcc
    - id
    argTypes:
    - struct pcc_state**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1086
    functionName: pcep_pcc_get_pcc_idx_by_id
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_get_pcc_idx_by_id(struct pcc_state **pcc, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1090,1
    - Dst: zlog_debug
      Src: /src/frr/pathd/path_pcep_pcc.c:1094,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pcc
    argTypes:
    - struct pcc_state**
    assertStmts:
    - condition: (pcc != NULL)
      pos:
        line_end: 1089
        line_start: 1089
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1100
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1100
    functionName: pcep_pcc_get_free_pcc_idx
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - assert
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_get_free_pcc_idx(struct pcc_state **pcc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pcc
    argTypes:
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1102
    functionDepth: 0
    functionLinenumber: 1102
    functionLinenumberEnd: 1105
    functionName: pcep_pcc_get_pcc_id
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pcep_pcc_get_pcc_id(struct pcc_state *pcc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pcep_pcc_get_pcc_by_name
      Src: /src/frr/pathd/path_pcep_pcc.c:1111,1
    - Dst: pthread_mutex_lock
      Src: /src/frr/pathd/path_pcep_pcc.c:1125,1
    - Dst: pthread_mutex_unlock
      Src: /src/frr/pathd/path_pcep_pcc.c:1128,1
    - Dst: memcpy
      Src: /src/frr/pathd/path_pcep_pcc.c:1132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - pcc
    - pcc_info
    argTypes:
    - struct pcc_state**
    - struct pcep_pcc_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1107
    functionDepth: 1
    functionLinenumber: 1107
    functionLinenumberEnd: 1135
    functionName: pcep_pcc_copy_pcc_info
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_pcc_get_pcc_by_name
    - memcpy
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: "void pcep_pcc_copy_pcc_info(struct pcc_state **pcc,\n\t\t\t    struct
      pcep_pcc_info *pcc_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1143,1
    - Dst: pcep_lib_parse_capabilities
      Src: /src/frr/pathd/path_pcep_pcc.c:1144,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1145,1
    - Dst: format_objfun_set
      Src: /src/frr/pathd/path_pcep_pcc.c:1152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - msg
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct pcep_message*
    assertStmts:
    - condition: (msg->msg_header->type == PCEP_TYPE_OPEN)
      pos:
        line_end: 1142
        line_start: 1142
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1153
      start: 1140
    functionDepth: 3
    functionLinenumber: 1140
    functionLinenumberEnd: 1153
    functionName: handle_pcep_open
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - format_objfun_set
    - PCEP_DEBUG
    - pcep_lib_parse_capabilities
    - assert
    linkageType: ''
    returnType: void
    signature: "void handle_pcep_open(struct ctrl_state *ctrl_state,\n\t\t      struct
      pcc_state *pcc_state, struct pcep_message *msg)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: handle_pcep_lsp_initiate
      Src: /src/frr/pathd/path_pcep_pcc.c:1163,1
    - Dst: handle_pcep_lsp_update
      Src: /src/frr/pathd/path_pcep_pcc.c:1166,1
    - Dst: handle_pcep_comp_reply
      Src: /src/frr/pathd/path_pcep_pcc.c:1169,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1180,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1182,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - msg
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1155
    functionDepth: 2
    functionLinenumber: 1155
    functionLinenumberEnd: 1185
    functionName: handle_pcep_message
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - handle_pcep_lsp_update
    - flog_warn
    - handle_pcep_lsp_initiate
    - handle_pcep_comp_reply
    - format_pcep_message
    linkageType: ''
    returnType: void
    signature: "void handle_pcep_message(struct ctrl_state *ctrl_state,\n\t\t\t struct
      pcc_state *pcc_state, struct pcep_message *msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_lib_parse_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1192,1
    - Dst: lookup_nbkey
      Src: /src/frr/pathd/path_pcep_pcc.c:1193,1
    - Dst: pcep_thread_refine_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - msg
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1187
    functionDepth: 3
    functionLinenumber: 1187
    functionLinenumberEnd: 1196
    functionName: handle_pcep_lsp_update
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - pcep_thread_refine_path
    - lookup_nbkey
    - pcep_lib_parse_path
    linkageType: ''
    returnType: void
    signature: "void handle_pcep_lsp_update(struct ctrl_state *ctrl_state,\n\t\t\t
      \   struct pcc_state *pcc_state,\n\t\t\t    struct pcep_message *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: specialize_incoming_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1204,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1205,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1206,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1206,1
    - Dst: validate_incoming_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1208,1
    - Dst: pcep_thread_update_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1209,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1213,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ctrl_state
    - pcc_state
    - path
    - payload
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct path*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1198
    functionDepth: 2
    functionLinenumber: 1198
    functionLinenumberEnd: 1217
    functionName: continue_pcep_lsp_update
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - validate_incoming_path
    - pcep_free_path
    - pcep_thread_update_path
    - flog_warn
    - specialize_incoming_path
    - format_path
    - PCEP_DEBUG_PATH
    - PCEP_DEBUG
    linkageType: ''
    returnType: void
    signature: "void continue_pcep_lsp_update(struct ctrl_state *ctrl_state,\n\t\t\t
      \     struct pcc_state *pcc_state, struct path *path,\n\t\t\t      void *payload)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pcep_lib_parse_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1226,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1230,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1232,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1233,1
    - Dst: frr_each
      Src: /src/frr/pathd/path_pcep_pcc.c:1243,1
    - Dst: ipaddr2str
      Src: /src/frr/pathd/path_pcep_pcc.c:1244,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1246,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1251,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1267,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1269,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1270,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1282,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1285,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1286,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1298,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1301,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1302,1
    - Dst: specialize_incoming_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1314,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1316,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1317,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1317,1
    - Dst: validate_incoming_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1319,1
    - Dst: pcep_thread_initiate_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1320,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1324,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1326,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1328,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - msg
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1219
    functionDepth: 3
    functionLinenumber: 1219
    functionLinenumberEnd: 1330
    functionName: handle_pcep_lsp_initiate
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - send_pcep_error
    - validate_incoming_path
    - pcep_free_path
    - flog_warn
    - pcep_lib_parse_path
    - frr_each
    - specialize_incoming_path
    - pcep_thread_initiate_path
    - format_path
    - PCEP_DEBUG_PATH
    - PCEP_DEBUG
    - format_pcep_message
    - ipaddr2str
    linkageType: ''
    returnType: void
    signature: "void handle_pcep_lsp_initiate(struct ctrl_state *ctrl_state,\n\t\t\t
      \     struct pcc_state *pcc_state,\n\t\t\t      struct pcep_message *msg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pcep_lib_parse_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1340,1
    - Dst: pop_req_no_reqid
      Src: /src/frr/pathd/path_pcep_pcc.c:1342,1
    - Dst: pop_req
      Src: /src/frr/pathd/path_pcep_pcc.c:1344,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1350,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1353,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1353,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1354,1
    - Dst: pcep_thread_cancel_timer
      Src: /src/frr/pathd/path_pcep_pcc.c:1360,1
    - Dst: XSTRDUP
      Src: /src/frr/pathd/path_pcep_pcc.c:1366,1
    - Dst: specialize_incoming_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1367,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1369,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1372,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1372,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1375,1
    - Dst: free_req_entry
      Src: /src/frr/pathd/path_pcep_pcc.c:1377,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1378,1
    - Dst: validate_incoming_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1380,1
    - Dst: pcep_thread_update_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1382,1
    - Dst: free_req_entry
      Src: /src/frr/pathd/path_pcep_pcc.c:1383,1
    - Dst: flog_warn
      Src: /src/frr/pathd/path_pcep_pcc.c:1388,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1392,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1398,1
    - Dst: pcep_copy_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1401,1
    - Dst: send_report
      Src: /src/frr/pathd/path_pcep_pcc.c:1403,1
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1404,1
    - Dst: free_req_entry
      Src: /src/frr/pathd/path_pcep_pcc.c:1407,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - msg
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1332
    functionDepth: 6
    functionLinenumber: 1332
    functionLinenumberEnd: 1408
    functionName: handle_pcep_comp_reply
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - send_pcep_error
    - pcep_free_path
    - validate_incoming_path
    - pop_req
    - pcep_thread_update_path
    - flog_warn
    - pcep_lib_parse_path
    - specialize_incoming_path
    - send_report
    - format_path
    - PCEP_DEBUG_PATH
    - pcep_copy_path
    - PCEP_DEBUG
    - pop_req_no_reqid
    - pcep_thread_cancel_timer
    - free_req_entry
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: "void handle_pcep_comp_reply(struct ctrl_state *ctrl_state,\n\t\t\t
      \   struct pcc_state *pcc_state,\n\t\t\t    struct pcep_message *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_pcc.c:1415,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_pcc.c:1417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1413
    functionDepth: 1
    functionLinenumber: 1413
    functionLinenumberEnd: 1420
    functionName: ipaddr_type_name
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - IS_IPADDR_V6
    - IS_IPADDR_V4
    linkageType: ''
    returnType: char
    signature: char *ipaddr_type_name(struct ipaddr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_pcc.c:1424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1425,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_pcc.c:1426,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1427,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1422
    functionDepth: 1
    functionLinenumber: 1422
    functionLinenumberEnd: 1428
    functionName: filter_path
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - IS_IPADDR_V6
    - CHECK_FLAG
    - IS_IPADDR_V4
    linkageType: ''
    returnType: bool
    signature: bool filter_path(struct pcc_state *pcc_state, struct path *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1433,1
    - Dst: get_ipv4_router_id
      Src: /src/frr/pathd/path_pcep_pcc.c:1434,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1435,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1440,1
    - Dst: get_ipv6_router_id
      Src: /src/frr/pathd/path_pcep_pcc.c:1441,1
    - Dst: SET_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1442,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - pcc_state
    argTypes:
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1430
    functionDepth: 2
    functionLinenumber: 1430
    functionLinenumberEnd: 1445
    functionName: select_pcc_addresses
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - get_ipv4_router_id
    - CHECK_FLAG
    - get_ipv6_router_id
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: void select_pcc_addresses(struct pcc_state *pcc_state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: select_pcc_addresses
      Src: /src/frr/pathd/path_pcep_pcc.c:1451,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_pcc.c:1457,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1458,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1463,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - pcc_state
    argTypes:
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1468
      start: 1447
    functionDepth: 3
    functionLinenumber: 1447
    functionLinenumberEnd: 1468
    functionName: select_transport_address
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - select_pcc_addresses
    - CHECK_FLAG
    - IS_IPADDR_V4
    linkageType: ''
    returnType: void
    signature: void select_transport_address(struct pcc_state *pcc_state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1473,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/pathd/path_pcep_pcc.c:1473,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_pcc.c:1474,1
    - Dst: snprintfrr
      Src: /src/frr/pathd/path_pcep_pcc.c:1475,1
    - Dst: snprintfrr
      Src: /src/frr/pathd/path_pcep_pcc.c:1480,1
    - Dst: snprintfrr
      Src: /src/frr/pathd/path_pcep_pcc.c:1486,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - pcc_state
    argTypes:
    - struct pcc_state*
    assertStmts:
    - condition: (!IS_IPADDR_NONE(&pcc_state->pce_opts->addr))
      pos:
        line_end: 1472
        line_start: 1472
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1489
      start: 1470
    functionDepth: 7
    functionLinenumber: 1470
    functionLinenumberEnd: 1489
    functionName: update_tag
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - IS_IPADDR_V6
    - snprintfrr
    - assert
    - IS_IPADDR_NONE
    linkageType: ''
    returnType: void
    signature: void update_tag(struct pcc_state *pcc_state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:1495,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_pcc.c:1500,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1501,1
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/pathd/path_pcep_pcc.c:1501,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_pcc.c:1502,1
    - Dst: snprintfrr
      Src: /src/frr/pathd/path_pcep_pcc.c:1503,1
    - Dst: snprintfrr
      Src: /src/frr/pathd/path_pcep_pcc.c:1507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - pcc_state
    argTypes:
    - struct pcc_state*
    assertStmts:
    - condition: (!IS_IPADDR_NONE(&pcc_state->pce_opts->addr))
      pos:
        line_end: 1500
        line_start: 1500
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1512
      start: 1491
    functionDepth: 7
    functionLinenumber: 1491
    functionLinenumberEnd: 1512
    functionName: update_originator
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - IS_IPADDR_V6
    - XCALLOC
    - snprintfrr
    - IS_IPADDR_NONE
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: void update_originator(struct pcc_state *pcc_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_thread_schedule_reconnect
      Src: /src/frr/pathd/path_pcep_pcc.c:1518,1
    - Dst: pcep_thread_schedule_sync_best_pce
      Src: /src/frr/pathd/path_pcep_pcc.c:1522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1514
    functionDepth: 2
    functionLinenumber: 1514
    functionLinenumberEnd: 1528
    functionName: schedule_reconnect
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - pcep_thread_schedule_sync_best_pce
    - pcep_thread_schedule_reconnect
    linkageType: ''
    returnType: void
    signature: "void schedule_reconnect(struct ctrl_state *ctrl_state,\n\t\t\tstruct
      pcc_state *pcc_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_pce_count_connected
      Src: /src/frr/pathd/path_pcep_pcc.c:1534,1
    - Dst: PCEP_DEBUG_PCEP
      Src: /src/frr/pathd/path_pcep_pcc.c:1535,1
    - Dst: pcep_thread_schedule_session_timeout
      Src: /src/frr/pathd/path_pcep_pcc.c:1541,1
    - Dst: pcep_pcc_get_pcc_id
      Src: /src/frr/pathd/path_pcep_pcc.c:1542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1530
    functionDepth: 2
    functionLinenumber: 1530
    functionLinenumberEnd: 1546
    functionName: schedule_session_timeout
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - pcep_thread_schedule_session_timeout
    - PCEP_DEBUG_PCEP
    - pcep_pcc_get_pcc_id
    - get_pce_count_connected
    linkageType: ''
    returnType: void
    signature: "void schedule_session_timeout(struct ctrl_state *ctrl_state,\n\t\t\t
      \     struct pcc_state *pcc_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG_PCEP
      Src: /src/frr/pathd/path_pcep_pcc.c:1553,1
    - Dst: PCEP_DEBUG_PCEP
      Src: /src/frr/pathd/path_pcep_pcc.c:1557,1
    - Dst: pcep_thread_cancel_timer
      Src: /src/frr/pathd/path_pcep_pcc.c:1558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1548
    functionDepth: 6
    functionLinenumber: 1548
    functionLinenumberEnd: 1560
    functionName: cancel_session_timeout
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - PCEP_DEBUG_PCEP
    - pcep_thread_cancel_timer
    linkageType: ''
    returnType: void
    signature: "void cancel_session_timeout(struct ctrl_state *ctrl_state,\n\t\t\t
      \   struct pcc_state *pcc_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG_PCEP
      Src: /src/frr/pathd/path_pcep_pcc.c:1565,1
    - Dst: format_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1566,1
    - Dst: send_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pcc_state
    - msg
    argTypes:
    - struct pcc_state*
    - struct pcep_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1562
    functionDepth: 5
    functionLinenumber: 1562
    functionLinenumberEnd: 1569
    functionName: send_pcep_message
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - send_message
    - PCEP_DEBUG_PCEP
    - format_pcep_message
    linkageType: ''
    returnType: void
    signature: void send_pcep_message(struct pcc_state *pcc_state, struct pcep_message
      *msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1577,1
    - Dst: pcep_error_type_name
      Src: /src/frr/pathd/path_pcep_pcc.c:1578,1
    - Dst: pcep_error_value_name
      Src: /src/frr/pathd/path_pcep_pcc.c:1579,1
    - Dst: pcep_lib_format_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1580,1
    - Dst: send_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - pcc_state
    - error_type
    - error_value
    - trigger_path
    argTypes:
    - struct pcc_state*
    - enum pcep_error_type
    - enum pcep_error_value
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1571
    functionDepth: 6
    functionLinenumber: 1571
    functionLinenumberEnd: 1582
    functionName: send_pcep_error
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 7
    functionsReached:
    - send_pcep_message
    - pcep_lib_format_error
    - pcep_error_type_name
    - PCEP_DEBUG
    - pcep_error_value_name
    linkageType: ''
    returnType: void
    signature: "void send_pcep_error(struct pcc_state *pcc_state,\n\t\t     enum pcep_error_type
      error_type,\n\t\t     enum pcep_error_value error_value,\n\t\t     struct path
      *trigger_path)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: specialize_outgoing_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1589,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1590,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1591,1
    - Dst: pcep_lib_format_report
      Src: /src/frr/pathd/path_pcep_pcc.c:1592,1
    - Dst: send_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1584
    functionDepth: 6
    functionLinenumber: 1584
    functionLinenumberEnd: 1594
    functionName: send_report
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 8
    functionsReached:
    - send_pcep_message
    - format_path
    - PCEP_DEBUG_PATH
    - specialize_outgoing_path
    - pcep_lib_format_report
    linkageType: ''
    returnType: void
    signature: void send_report(struct pcc_state *pcc_state, struct path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup_plspid
      Src: /src/frr/pathd/path_pcep_pcc.c:1602,1
    - Dst: set_pcc_address
      Src: /src/frr/pathd/path_pcep_pcc.c:1604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1597
    functionDepth: 1
    functionLinenumber: 1597
    functionLinenumberEnd: 1626
    functionName: specialize_outgoing_path
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - lookup_plspid
    - set_pcc_address
    linkageType: ''
    returnType: void
    signature: void specialize_outgoing_path(struct pcc_state *pcc_state, struct path
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_NONE
      Src: /src/frr/pathd/path_pcep_pcc.c:1631,1
    - Dst: set_pcc_address
      Src: /src/frr/pathd/path_pcep_pcc.c:1632,1
    - Dst: XSTRDUP
      Src: /src/frr/pathd/path_pcep_pcc.c:1636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1629
    functionDepth: 1
    functionLinenumber: 1629
    functionLinenumberEnd: 1637
    functionName: specialize_incoming_path
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - set_pcc_address
    - XSTRDUP
    - IS_IPADDR_NONE
    linkageType: ''
    returnType: void
    signature: void specialize_incoming_path(struct pcc_state *pcc_state, struct path
      *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/pathd/path_pcep_pcc.c:1650,1
    - Dst: snprintfrr
      Src: /src/frr/pathd/path_pcep_pcc.c:1657,1
    - Dst: send_pcep_error
      Src: /src/frr/pathd/path_pcep_pcc.c:1666,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - pcc_state
    - path
    - errbuff
    - buffsize
    argTypes:
    - struct pcc_state*
    - struct path*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1640
    functionDepth: 7
    functionLinenumber: 1640
    functionLinenumberEnd: 1671
    functionName: validate_incoming_path
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - send_pcep_error
    - snprintfrr
    linkageType: ''
    returnType: bool
    signature: "bool validate_incoming_path(struct pcc_state *pcc_state, struct path
      *path,\n\t\t\t    char *errbuff, size_t buffsize)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1676,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1681,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1682,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1683,1
    - Dst: RB_FIND
      Src: /src/frr/pathd/path_pcep_pcc.c:1683,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1684,1
    - Dst: lookup_reqid
      Src: /src/frr/pathd/path_pcep_pcc.c:1684,1
    - Dst: specialize_outgoing_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1693,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1695,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1699,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1700,1
    - Dst: pcep_lib_format_request
      Src: /src/frr/pathd/path_pcep_pcc.c:1702,1
    - Dst: send_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1703,1
    - Dst: pcep_thread_schedule_timeout
      Src: /src/frr/pathd/path_pcep_pcc.c:1707,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - req
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct req_entry*
    assertStmts:
    - condition: (req != NULL)
      pos:
        line_end: 1675
        line_start: 1675
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (req->path->req_id > 0)
      pos:
        line_end: 1681
        line_start: 1681
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (req->path != NULL)
      pos:
        line_end: 1680
        line_start: 1680
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (RB_FIND(req_entry_head, &pcc_state->requests, req) == req)
      pos:
        line_end: 1682
        line_start: 1682
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (lookup_reqid(pcc_state, req->path) == req->path->req_id)
      pos:
        line_end: 1683
        line_start: 1683
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1710
      start: 1673
    functionDepth: 6
    functionLinenumber: 1673
    functionLinenumberEnd: 1710
    functionName: send_comp_request
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - send_pcep_message
    - pcep_lib_format_request
    - RB_FIND
    - format_path
    - lookup_reqid
    - PCEP_DEBUG_PATH
    - pcep_thread_schedule_timeout
    - PCEP_DEBUG
    - specialize_outgoing_path
    - assert
    linkageType: ''
    returnType: void
    signature: "void send_comp_request(struct ctrl_state *ctrl_state,\n\t\t       struct
      pcc_state *pcc_state, struct req_entry *req)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pathd/path_pcep_pcc.c:1717,1
    - Dst: cancel_comp_request
      Src: /src/frr/pathd/path_pcep_pcc.c:1718,1
    - Dst: RB_REMOVE
      Src: /src/frr/pathd/path_pcep_pcc.c:1719,1
    - Dst: remove_reqid_mapping
      Src: /src/frr/pathd/path_pcep_pcc.c:1720,1
    - Dst: free_req_entry
      Src: /src/frr/pathd/path_pcep_pcc.c:1721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctrl_state
    - pcc_state
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1712
    functionDepth: 1
    functionLinenumber: 1712
    functionLinenumberEnd: 1723
    functionName: cancel_comp_requests
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - cancel_comp_request
    - RB_REMOVE
    - remove_reqid_mapping
    - RB_FOREACH_SAFE
    - free_req_entry
    linkageType: ''
    returnType: void
    signature: "void cancel_comp_requests(struct ctrl_state *ctrl_state,\n\t\t\t  struct
      pcc_state *pcc_state)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcep_thread_cancel_timer
      Src: /src/frr/pathd/path_pcep_pcc.c:1733,1
    - Dst: PCEP_DEBUG
      Src: /src/frr/pathd/path_pcep_pcc.c:1736,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1740,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1742,1
    - Dst: pcep_lib_format_request_cancelled
      Src: /src/frr/pathd/path_pcep_pcc.c:1744,1
    - Dst: send_pcep_message
      Src: /src/frr/pathd/path_pcep_pcc.c:1745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctrl_state
    - pcc_state
    - req
    argTypes:
    - struct ctrl_state*
    - struct pcc_state*
    - struct req_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1725
    functionDepth: 6
    functionLinenumber: 1725
    functionLinenumberEnd: 1746
    functionName: cancel_comp_request
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - send_pcep_message
    - format_path
    - pcep_lib_format_request_cancelled
    - PCEP_DEBUG_PATH
    - PCEP_DEBUG
    - pcep_thread_cancel_timer
    linkageType: ''
    returnType: void
    signature: "void cancel_comp_request(struct ctrl_state *ctrl_state,\n\t\t\t struct
      pcc_state *pcc_state, struct req_entry *req)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: select_pcc_addresses
      Src: /src/frr/pathd/path_pcep_pcc.c:1751,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/pathd/path_pcep_pcc.c:1752,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1753,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1753,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/pathd/path_pcep_pcc.c:1756,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1757,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pathd/path_pcep_pcc.c:1757,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - pcc_state
    - nbkey
    - addr
    argTypes:
    - struct pcc_state*
    - struct lsp_nb_key*
    - struct ipaddr*
    assertStmts:
    - condition: (CHECK_FLAG(pcc_state->flags, F_PCC_STATE_HAS_IPV6))
      pos:
        line_end: 1752
        line_start: 1752
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (CHECK_FLAG(pcc_state->flags, F_PCC_STATE_HAS_IPV4))
      pos:
        line_end: 1756
        line_start: 1756
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1763
      start: 1748
    functionDepth: 3
    functionLinenumber: 1748
    functionLinenumberEnd: 1763
    functionName: set_pcc_address
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - select_pcc_addresses
    - IS_IPADDR_V6
    - CHECK_FLAG
    - IS_IPADDR_V4
    - assert
    linkageType: ''
    returnType: void
    signature: "void set_pcc_address(struct pcc_state *pcc_state, struct lsp_nb_key
      *nbkey,\n\t\t     struct ipaddr *addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: plspid_map_find
      Src: /src/frr/pathd/path_pcep_pcc.c:1774,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_pcc.c:1777,1
    - Dst: plspid_map_add
      Src: /src/frr/pathd/path_pcep_pcc.c:1780,1
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_pcc.c:1782,1
    - Dst: nbkey_map_add
      Src: /src/frr/pathd/path_pcep_pcc.c:1785,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts:
    - condition: (pcc_state->next_plspid <= 1048576)
      pos:
        line_end: 1787
        line_start: 1787
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1792
      start: 1767
    functionDepth: 1
    functionLinenumber: 1767
    functionLinenumberEnd: 1792
    functionName: lookup_plspid
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - plspid_map_find
    - nbkey_map_add
    - assert
    - plspid_map_add
    linkageType: ''
    returnType: void
    signature: void lookup_plspid(struct pcc_state *pcc_state, struct path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1798,1
    - Dst: nbkey_map_find
      Src: /src/frr/pathd/path_pcep_pcc.c:1800,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts:
    - condition: (path->plsp_id != 0)
      pos:
        line_end: 1797
        line_start: 1797
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (mapping != NULL)
      pos:
        line_end: 1800
        line_start: 1800
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1803
      start: 1794
    functionDepth: 1
    functionLinenumber: 1794
    functionLinenumberEnd: 1803
    functionName: lookup_nbkey
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - nbkey_map_find
    - assert
    linkageType: ''
    returnType: void
    signature: void lookup_nbkey(struct pcc_state *pcc_state, struct path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pcep_free_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1807,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:1808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct req_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1805
    functionDepth: 1
    functionLinenumber: 1805
    functionLinenumberEnd: 1809
    functionName: free_req_entry
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 3
    functionsReached:
    - pcep_free_path
    - XFREE
    linkageType: ''
    returnType: void
    signature: void free_req_entry(struct req_entry *req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_pcc.c:1815,1
    - Dst: pcep_copy_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1817,1
    - Dst: repush_req
      Src: /src/frr/pathd/path_pcep_pcc.c:1818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1811
    functionDepth: 3
    functionLinenumber: 1811
    functionLinenumberEnd: 1821
    functionName: push_new_req
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - pcep_copy_path
    - repush_req
    - XCALLOC
    linkageType: ''
    returnType: struct req_entry
    signature: struct req_entry *push_new_req(struct pcc_state *pcc_state, struct
      path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_INSERT
      Src: /src/frr/pathd/path_pcep_pcc.c:1830,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1831,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1832,1
    - Dst: add_reqid_mapping
      Src: /src/frr/pathd/path_pcep_pcc.c:1832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pcc_state
    - req
    argTypes:
    - struct pcc_state*
    - struct req_entry*
    assertStmts:
    - condition: (add_reqid_mapping(pcc_state, req->path) == true)
      pos:
        line_end: 1831
        line_start: 1831
        source_file: /src/frr/pathd/path_pcep_pcc.c
    - condition: (res == NULL)
      pos:
        line_end: 1830
        line_start: 1830
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1838
      start: 1823
    functionDepth: 1
    functionLinenumber: 1823
    functionLinenumberEnd: 1838
    functionName: repush_req
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - assert
    - add_reqid_mapping
    - RB_INSERT
    linkageType: ''
    returnType: void
    signature: void repush_req(struct pcc_state *pcc_state, struct req_entry *req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/pathd/path_pcep_pcc.c:1846,1
    - Dst: RB_REMOVE
      Src: /src/frr/pathd/path_pcep_pcc.c:1849,1
    - Dst: remove_reqid_mapping
      Src: /src/frr/pathd/path_pcep_pcc.c:1850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pcc_state
    - reqid
    argTypes:
    - struct pcc_state*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1840
    functionDepth: 1
    functionLinenumber: 1840
    functionLinenumberEnd: 1853
    functionName: pop_req
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - RB_FIND
    - remove_reqid_mapping
    - RB_REMOVE
    linkageType: ''
    returnType: struct req_entry
    signature: struct req_entry *pop_req(struct pcc_state *pcc_state, uint32_t reqid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/pathd/path_pcep_pcc.c:1861,1
    - Dst: RB_REMOVE
      Src: /src/frr/pathd/path_pcep_pcc.c:1864,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pcc_state
    - reqid
    argTypes:
    - struct pcc_state*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1867
    functionName: pop_req_no_reqid
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    - RB_REMOVE
    linkageType: ''
    returnType: struct req_entry
    signature: struct req_entry *pop_req_no_reqid(struct pcc_state *pcc_state, uint32_t
      reqid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pathd/path_pcep_pcc.c:1872,1
    - Dst: req_map_add
      Src: /src/frr/pathd/path_pcep_pcc.c:1875,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:1876,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1880
      start: 1869
    functionDepth: 0
    functionLinenumber: 1869
    functionLinenumberEnd: 1880
    functionName: add_reqid_mapping
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - req_map_add
    - XFREE
    - XCALLOC
    linkageType: ''
    returnType: bool
    signature: bool add_reqid_mapping(struct pcc_state *pcc_state, struct path *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: req_map_find
      Src: /src/frr/pathd/path_pcep_pcc.c:1886,1
    - Dst: req_map_del
      Src: /src/frr/pathd/path_pcep_pcc.c:1888,1
    - Dst: XFREE
      Src: /src/frr/pathd/path_pcep_pcc.c:1889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1882
    functionDepth: 0
    functionLinenumber: 1882
    functionLinenumberEnd: 1891
    functionName: remove_reqid_mapping
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - req_map_find
    - req_map_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void remove_reqid_mapping(struct pcc_state *pcc_state, struct path
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: req_map_find
      Src: /src/frr/pathd/path_pcep_pcc.c:1897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1893
    functionDepth: 0
    functionLinenumber: 1893
    functionLinenumberEnd: 1901
    functionName: lookup_reqid
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 1
    functionsReached:
    - req_map_find
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t lookup_reqid(struct pcc_state *pcc_state, struct path *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1909,1
    - Dst: format_path
      Src: /src/frr/pathd/path_pcep_pcc.c:1909,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1912,1
    - Dst: RB_FIND
      Src: /src/frr/pathd/path_pcep_pcc.c:1914,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1917,1
    - Dst: lookup_reqid
      Src: /src/frr/pathd/path_pcep_pcc.c:1920,1
    - Dst: PCEP_DEBUG_PATH
      Src: /src/frr/pathd/path_pcep_pcc.c:1921,1
    - Dst: remove_reqid_mapping
      Src: /src/frr/pathd/path_pcep_pcc.c:1923,1
    - Dst: lookup_reqid
      Src: /src/frr/pathd/path_pcep_pcc.c:1932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - pcc_state
    - path
    argTypes:
    - struct pcc_state*
    - struct path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1903
    functionDepth: 2
    functionLinenumber: 1903
    functionLinenumberEnd: 1933
    functionName: has_pending_req_for
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 2
    functionsReached:
    - RB_FIND
    - format_path
    - remove_reqid_mapping
    - PCEP_DEBUG_PATH
    - lookup_reqid
    linkageType: ''
    returnType: bool
    signature: bool has_pending_req_for(struct pcc_state *pcc_state, struct path *path)
  - 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: 1941
      start: 1938
    functionDepth: 0
    functionLinenumber: 1938
    functionLinenumberEnd: 1941
    functionName: CMP_RETURN
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMP_RETURN(A, B)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: jhash_2words
      Src: /src/frr/pathd/path_pcep_pcc.c:1945,1
    - Dst: jhash
      Src: /src/frr/pathd/path_pcep_pcc.c:1948,1
    - Dst: jhash
      Src: /src/frr/pathd/path_pcep_pcc.c:1951,1
    - Dst: assert
      Src: /src/frr/pathd/path_pcep_pcc.c:1957,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - nbkey
    argTypes:
    - struct lsp_nb_key*
    assertStmts:
    - condition: (!"Reached end of function where we were not expecting to")
      pos:
        line_end: 1956
        line_start: 1956
        source_file: /src/frr/pathd/path_pcep_pcc.c
    constantsTouched: []
    func_position:
      end: 1958
      start: 1942
    functionDepth: 3
    functionLinenumber: 1942
    functionLinenumberEnd: 1958
    functionName: hash_nbkey
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - jhash_2words
    - assert
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_nbkey(const struct lsp_nb_key *nbkey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMP_RETURN
      Src: /src/frr/pathd/path_pcep_pcc.c:1962,1
    - Dst: ipaddr_cmp
      Src: /src/frr/pathd/path_pcep_pcc.c:1963,1
    - Dst: CMP_RETURN
      Src: /src/frr/pathd/path_pcep_pcc.c:1966,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct lsp_nb_key*
    - struct lsp_nb_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1960
    functionDepth: 2
    functionLinenumber: 1960
    functionLinenumberEnd: 1968
    functionName: cmp_nbkey
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - CMP_RETURN
    - ipaddr_cmp
    linkageType: ''
    returnType: int
    signature: int cmp_nbkey(const struct lsp_nb_key *a, const struct lsp_nb_key *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmp_nbkey
      Src: /src/frr/pathd/path_pcep_pcc.c:1973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct plspid_map_data*
    - struct plspid_map_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1970
    functionDepth: 3
    functionLinenumber: 1970
    functionLinenumberEnd: 1974
    functionName: plspid_map_cmp
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - cmp_nbkey
    linkageType: ''
    returnType: int
    signature: "int plspid_map_cmp(const struct plspid_map_data *a,\n\t\t   const
      struct plspid_map_data *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_nbkey
      Src: /src/frr/pathd/path_pcep_pcc.c:1978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - e
    argTypes:
    - struct plspid_map_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1979
      start: 1976
    functionDepth: 4
    functionLinenumber: 1976
    functionLinenumberEnd: 1979
    functionName: plspid_map_hash
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - hash_nbkey
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t plspid_map_hash(const struct plspid_map_data *e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CMP_RETURN
      Src: /src/frr/pathd/path_pcep_pcc.c:1984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct nbkey_map_data*
    - struct nbkey_map_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1981
    functionDepth: 1
    functionLinenumber: 1981
    functionLinenumberEnd: 1986
    functionName: nbkey_map_cmp
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - CMP_RETURN
    linkageType: ''
    returnType: int
    signature: "int nbkey_map_cmp(const struct nbkey_map_data *a,\n\t\t  const struct
      nbkey_map_data *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - e
    argTypes:
    - struct nbkey_map_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 1991
    functionName: nbkey_map_hash
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t nbkey_map_hash(const struct nbkey_map_data *e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmp_nbkey
      Src: /src/frr/pathd/path_pcep_pcc.c:1995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct req_map_data*
    - struct req_map_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1993
    functionDepth: 3
    functionLinenumber: 1993
    functionLinenumberEnd: 1996
    functionName: req_map_cmp
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - cmp_nbkey
    linkageType: ''
    returnType: int
    signature: int req_map_cmp(const struct req_map_data *a, const struct req_map_data
      *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_nbkey
      Src: /src/frr/pathd/path_pcep_pcc.c:2000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - e
    argTypes:
    - struct req_map_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2001
      start: 1998
    functionDepth: 4
    functionLinenumber: 1998
    functionLinenumberEnd: 2001
    functionName: req_map_hash
    functionSourceFile: /src/frr/pathd/path_pcep_pcc.c
    functionUses: 0
    functionsReached:
    - hash_nbkey
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t req_map_hash(const struct req_map_data *e)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrmod_load
      Src: /src/frr/ldpd/ldpd.c:88,1
    - Dst: fprintf
      Src: /src/frr/ldpd/ldpd.c:90,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 93
    functionName: ldp_load_module
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - fprintf
    - log_warnx
    - frrmod_load
    linkageType: ''
    returnType: void
    signature: void ldp_load_module(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_load_module
      Src: /src/frr/ldpd/ldpd.c:97,1
    - Dst: hook_call
      Src: /src/frr/ldpd/ldpd.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: ldp_agentx_enabled
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - ldp_load_module
    - hook_call
    linkageType: ''
    returnType: void
    signature: void ldp_agentx_enabled(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/frr/ldpd/ldpd.c:146,1
    - Dst: ldp_config_reset
      Src: /src/frr/ldpd/ldpd.c:152,1
    - Dst: vty_read_config
      Src: /src/frr/ldpd/ldpd.c:153,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldpd.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 155
    functionName: sighup
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - log_info
    - vty_read_config
    - ldp_config_reset
    - ldp_config_apply
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/frr/ldpd/ldpd.c:161,1
    - Dst: ldpd_shutdown
      Src: /src/frr/ldpd/ldpd.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 163
    functionName: sigint
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - log_info
    - ldpd_shutdown
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/ldpd/ldpd.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 170
    functionName: sigusr1
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldpd.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 223
    functionName: ldp_config_fork_apply
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    linkageType: ''
    returnType: void
    signature: void ldp_config_fork_apply(struct event *t)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/ldpd.c:235,1
    - Dst: frr_preinit
      Src: /src/frr/ldpd/ldpd.c:245,1
    - Dst: frr_opt_add
      Src: /src/frr/ldpd/ldpd.c:246,1
    - Dst: frr_getopt
      Src: /src/frr/ldpd/ldpd.c:253,1
    - Dst: strrchr
      Src: /src/frr/ldpd/ldpd.c:263,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:274,1
    - Dst: strlcat
      Src: /src/frr/ldpd/ldpd.c:275,1
    - Dst: strlcat
      Src: /src/frr/ldpd/ldpd.c:276,1
    - Dst: atoi
      Src: /src/frr/ldpd/ldpd.c:280,1
    - Dst: exit
      Src: /src/frr/ldpd/ldpd.c:282,1
    - Dst: frr_help_exit
      Src: /src/frr/ldpd/ldpd.c:291,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldpd.c:296,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:299,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:300,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:301,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:302,1
    - Dst: frr_help_exit
      Src: /src/frr/ldpd/ldpd.c:307,1
    - Dst: geteuid
      Src: /src/frr/ldpd/ldpd.c:310,1
    - Dst: perror
      Src: /src/frr/ldpd/ldpd.c:312,1
    - Dst: exit
      Src: /src/frr/ldpd/ldpd.c:313,1
    - Dst: zprivs_preinit
      Src: /src/frr/ldpd/ldpd.c:319,1
    - Dst: zprivs_get_ids
      Src: /src/frr/ldpd/ldpd.c:320,1
    - Dst: zlog_init
      Src: /src/frr/ldpd/ldpd.c:322,1
    - Dst: lde
      Src: /src/frr/ldpd/ldpd.c:326,1
    - Dst: ldpe
      Src: /src/frr/ldpd/ldpd.c:328,1
    - Dst: socketpair
      Src: /src/frr/ldpd/ldpd.c:330,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:331,1
    - Dst: socketpair
      Src: /src/frr/ldpd/ldpd.c:333,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:335,1
    - Dst: socketpair
      Src: /src/frr/ldpd/ldpd.c:337,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:338,1
    - Dst: socketpair
      Src: /src/frr/ldpd/ldpd.c:340,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:342,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:344,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:345,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:346,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:347,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:348,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:349,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:350,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:351,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:352,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:353,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:354,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:355,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:356,1
    - Dst: sock_set_cloexec
      Src: /src/frr/ldpd/ldpd.c:357,1
    - Dst: start_child
      Src: /src/frr/ldpd/ldpd.c:360,1
    - Dst: start_child
      Src: /src/frr/ldpd/ldpd.c:362,1
    - Dst: frr_init
      Src: /src/frr/ldpd/ldpd.c:365,1
    - Dst: vrf_init
      Src: /src/frr/ldpd/ldpd.c:367,1
    - Dst: access_list_init
      Src: /src/frr/ldpd/ldpd.c:368,1
    - Dst: ldp_vty_init
      Src: /src/frr/ldpd/ldpd.c:369,1
    - Dst: ldp_zebra_init
      Src: /src/frr/ldpd/ldpd.c:370,1
    - Dst: config_new_empty
      Src: /src/frr/ldpd/ldpd.c:378,1
    - Dst: config_new_empty
      Src: /src/frr/ldpd/ldpd.c:379,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldpd.c:380,1
    - Dst: frr_config_fork
      Src: /src/frr/ldpd/ldpd.c:383,1
    - Dst: event_add_event
      Src: /src/frr/ldpd/ldpd.c:386,1
    - Dst: calloc
      Src: /src/frr/ldpd/ldpd.c:389,1
    - Dst: calloc
      Src: /src/frr/ldpd/ldpd.c:390,1
    - Dst: calloc
      Src: /src/frr/ldpd/ldpd.c:391,1
    - Dst: calloc
      Src: /src/frr/ldpd/ldpd.c:392,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:393,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldpd.c:395,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpd.c:397,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldpd.c:401,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpd.c:403,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldpd.c:407,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpd.c:409,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldpd.c:413,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpd.c:415,1
    - Dst: main_imsg_send_ipc_sockets
      Src: /src/frr/ldpd/ldpd.c:419,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:420,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:422,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:423,1
    - Dst: main_imsg_send_config
      Src: /src/frr/ldpd/ldpd.c:424,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:426,1
    - Dst: main_imsg_send_net_sockets
      Src: /src/frr/ldpd/ldpd.c:427,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:429,1
    - Dst: main_imsg_send_net_sockets
      Src: /src/frr/ldpd/ldpd.c:430,1
    - Dst: frr_run
      Src: /src/frr/ldpd/ldpd.c:432,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 127
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 225
    functionDepth: 6
    functionLinenumber: 225
    functionLinenumberEnd: 436
    functionName: main
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 22
    functionsReached:
    - geteuid
    - frr_getopt
    - config_new_empty
    - main_imsg_send_config
    - calloc
    - strlcat
    - exit
    - zprivs_get_ids
    - snprintf
    - ldpe
    - QOBJ_REG
    - access_list_init
    - main_imsg_send_net_sockets
    - ldp_zebra_init
    - sock_set_nonblock
    - frr_help_exit
    - frr_init
    - vrf_init
    - strlcpy
    - frr_config_fork
    - sock_set_cloexec
    - event_add_read
    - zlog_init
    - atoi
    - frr_opt_add
    - fatal
    - frr_preinit
    - start_child
    - perror
    - ldp_vty_init
    - CHECK_FLAG
    - imsg_init
    - socketpair
    - strrchr
    - lde
    - main_imsg_compose_both
    - zprivs_preinit
    - main_imsg_send_ipc_sockets
    - frr_run
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_early_fini
      Src: /src/frr/ldpd/ldpd.c:444,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/ldpd.c:447,1
    - Dst: close
      Src: /src/frr/ldpd/ldpd.c:448,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/ldpd.c:449,1
    - Dst: close
      Src: /src/frr/ldpd/ldpd.c:450,1
    - Dst: config_clear
      Src: /src/frr/ldpd/ldpd.c:452,1
    - Dst: ldp_config_reset
      Src: /src/frr/ldpd/ldpd.c:454,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:455,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:456,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldpd.c:458,1
    - Dst: wait
      Src: /src/frr/ldpd/ldpd.c:462,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:472,1
    - Dst: WIFSIGNALED
      Src: /src/frr/ldpd/ldpd.c:477,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:478,1
    - Dst: WTERMSIG
      Src: /src/frr/ldpd/ldpd.c:481,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:486,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:487,1
    - Dst: log_info
      Src: /src/frr/ldpd/ldpd.c:489,1
    - Dst: vrf_terminate
      Src: /src/frr/ldpd/ldpd.c:491,1
    - Dst: access_list_reset
      Src: /src/frr/ldpd/ldpd.c:492,1
    - Dst: ldp_zebra_destroy
      Src: /src/frr/ldpd/ldpd.c:493,1
    - Dst: frr_fini
      Src: /src/frr/ldpd/ldpd.c:495,1
    - Dst: exit
      Src: /src/frr/ldpd/ldpd.c:496,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 438
    functionDepth: 5
    functionLinenumber: 438
    functionLinenumberEnd: 497
    functionName: ldpd_shutdown
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - access_list_reset
    - config_clear
    - ldp_config_reset
    - vrf_terminate
    - wait
    - msgbuf_clear
    - exit
    - log_info
    - frr_fini
    - frr_early_fini
    - WTERMSIG
    - WIFSIGNALED
    - log_debug
    - free
    - fatal
    - QOBJ_UNREG
    - close
    - ldp_zebra_destroy
    - log_warnx
    linkageType: ''
    returnType: void
    signature: void ldpd_shutdown(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/frr/ldpd/ldpd.c:506,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:509,1
    - Dst: close
      Src: /src/frr/ldpd/ldpd.c:513,1
    - Dst: close
      Src: /src/frr/ldpd/ldpd.c:514,1
    - Dst: open
      Src: /src/frr/ldpd/ldpd.c:518,1
    - Dst: flog_err_sys
      Src: /src/frr/ldpd/ldpd.c:520,1
    - Dst: safe_strerror
      Src: /src/frr/ldpd/ldpd.c:522,1
    - Dst: dup2
      Src: /src/frr/ldpd/ldpd.c:524,1
    - Dst: dup2
      Src: /src/frr/ldpd/ldpd.c:525,1
    - Dst: dup2
      Src: /src/frr/ldpd/ldpd.c:526,1
    - Dst: close
      Src: /src/frr/ldpd/ldpd.c:527,1
    - Dst: dup2
      Src: /src/frr/ldpd/ldpd.c:530,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:531,1
    - Dst: dup2
      Src: /src/frr/ldpd/ldpd.c:533,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:534,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:539,1
    - Dst: execvp
      Src: /src/frr/ldpd/ldpd.c:554,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:555,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 4
    argNames:
    - p
    - argv0
    - fd_async
    - fd_sync
    argTypes:
    - enum ldpd_process
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 556
    functionName: start_child
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - fatalx
    - open
    - close
    - safe_strerror
    - execvp
    - fork
    - dup2
    - flog_err_sys
    - fatal
    linkageType: ''
    returnType: pid_t
    signature: pid_t start_child(enum ldpd_process p, char *argv0, int fd_async, int
      fd_sync)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/ldpd.c:562,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/ldpd.c:571,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:572,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/ldpd.c:578,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:579,1
    - Dst: logit
      Src: /src/frr/ldpd/ldpd.c:586,1
    - Dst: main_imsg_send_net_sockets
      Src: /src/frr/ldpd/ldpd.c:590,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:595,1
    - Dst: ldp_acl_reply
      Src: /src/frr/ldpd/ldpd.c:596,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:601,1
    - Dst: ldp_sync_zebra_send_state_update
      Src: /src/frr/ldpd/ldpd.c:603,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldpd.c:606,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/ldpd.c:610,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/ldpd.c:613,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpd.c:616,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpd.c:617,1
    - Dst: ldpd_shutdown
      Src: /src/frr/ldpd/ldpd.c:621,1
    - Dst: kill
      Src: /src/frr/ldpd/ldpd.c:623,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 560
    functionDepth: 6
    functionLinenumber: 560
    functionLinenumberEnd: 625
    functionName: main_dispatch_ldpe
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - imsg_free
    - fatalx
    - logit
    - ldpd_shutdown
    - ldp_acl_reply
    - ldp_sync_zebra_send_state_update
    - imsg_event_add
    - main_imsg_send_net_sockets
    - EVENT_OFF
    - imsg_read
    - kill
    - EVENT_ARG
    - imsg_get
    - fatal
    - log_debug
    linkageType: ''
    returnType: void
    signature: void main_dispatch_ldpe(struct event *thread)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/ldpd.c:630,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/ldpd.c:639,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:640,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/ldpd.c:646,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:647,1
    - Dst: logit
      Src: /src/frr/ldpd/ldpd.c:654,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:659,1
    - Dst: kr_change
      Src: /src/frr/ldpd/ldpd.c:660,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:661,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:666,1
    - Dst: kr_delete
      Src: /src/frr/ldpd/ldpd.c:667,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:668,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:676,1
    - Dst: kmpw_add
      Src: /src/frr/ldpd/ldpd.c:680,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:681,1
    - Dst: kmpw_del
      Src: /src/frr/ldpd/ldpd.c:684,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:685,1
    - Dst: kmpw_set
      Src: /src/frr/ldpd/ldpd.c:688,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:689,1
    - Dst: kmpw_unset
      Src: /src/frr/ldpd/ldpd.c:692,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:693,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:700,1
    - Dst: ldp_acl_reply
      Src: /src/frr/ldpd/ldpd.c:701,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:706,1
    - Dst: ldp_zebra_send_rlfa_labels
      Src: /src/frr/ldpd/ldpd.c:710,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldpd.c:713,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/ldpd.c:718,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/ldpd.c:722,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpd.c:725,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpd.c:726,1
    - Dst: ldpd_shutdown
      Src: /src/frr/ldpd/ldpd.c:729,1
    - Dst: kill
      Src: /src/frr/ldpd/ldpd.c:731,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 80
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 628
    functionDepth: 6
    functionLinenumber: 628
    functionLinenumberEnd: 733
    functionName: main_dispatch_lde
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - imsg_read
    - imsg_get
    - fatalx
    - logit
    - kmpw_set
    - kmpw_add
    - ldp_zebra_send_rlfa_labels
    - EVENT_ARG
    - log_debug
    - kmpw_unset
    - ldp_acl_reply
    - imsg_event_add
    - EVENT_OFF
    - kill
    - kr_change
    - kr_delete
    - fatal
    - imsg_free
    - ldpd_shutdown
    - kmpw_del
    - log_warnx
    linkageType: ''
    returnType: void
    signature: void main_dispatch_lde(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/ldpd.c:738,1
    - Dst: msgbuf_write
      Src: /src/frr/ldpd/ldpd.c:744,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:745,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpd.c:748,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpd.c:749,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/ldpd.c:753,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 736
    functionDepth: 3
    functionLinenumber: 736
    functionLinenumberEnd: 754
    functionName: ldp_write_handler
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - imsg_event_add
    - EVENT_OFF
    - EVENT_ARG
    - msgbuf_write
    - fatal
    linkageType: ''
    returnType: void
    signature: void ldp_write_handler(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - type
    - pid
    - data
    - datalen
    argTypes:
    - int
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 763
    functionName: main_imsg_compose_ldpe
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - imsg_compose_event
    linkageType: ''
    returnType: void
    signature: void main_imsg_compose_ldpe(int type, pid_t pid, void *data, uint16_t
      datalen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - type
    - pid
    - data
    - datalen
    argTypes:
    - int
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 769
    functionName: main_imsg_compose_lde
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - imsg_compose_event
    linkageType: ''
    returnType: void
    signature: void main_imsg_compose_lde(int type, pid_t pid, void *data, uint16_t
      datalen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:777,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:780,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - type
    - buf
    - len
    argTypes:
    - enum imsg_type
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 784
    functionName: main_imsg_compose_both
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - imsg_compose_event
    linkageType: ''
    returnType: int
    signature: int main_imsg_compose_both(enum imsg_type type, void *buf, uint16_t
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpd.c:790,1
    - Dst: event_add_write
      Src: /src/frr/ldpd/ldpd.c:794,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - iev
    argTypes:
    - struct imsgev*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 796
    functionName: imsg_event_add
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 3
    functionsReached:
    - event_add_read
    - event_add_write
    linkageType: ''
    returnType: void
    signature: void imsg_event_add(struct imsgev *iev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldpd.c:804,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/ldpd.c:806,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 7
    argNames:
    - iev
    - type
    - peerid
    - pid
    - fd
    - data
    - datalen
    argTypes:
    - struct imsgev*
    - uint16_t
    - uint32_t
    - pid_t
    - int
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 798
    functionDepth: 2
    functionLinenumber: 798
    functionLinenumberEnd: 809
    functionName: imsg_compose_event
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 3
    functionsReached:
    - imsg_compose
    - imsg_event_add
    linkageType: ''
    returnType: int
    signature: "int imsg_compose_event(struct imsgev *iev, uint16_t type, uint32_t
      peerid,\n    pid_t pid, int fd, void *data, uint16_t datalen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_close
      Src: /src/frr/ldpd/ldpd.c:814,1
    - Dst: evbuf_event_add
      Src: /src/frr/ldpd/ldpd.c:815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - eb
    - buf
    argTypes:
    - struct evbuf*
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 811
    functionDepth: 2
    functionLinenumber: 811
    functionLinenumberEnd: 816
    functionName: evbuf_enqueue
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - ibuf_close
    - evbuf_event_add
    linkageType: ''
    returnType: void
    signature: void evbuf_enqueue(struct evbuf *eb, struct ibuf *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_write
      Src: /src/frr/ldpd/ldpd.c:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - eb
    argTypes:
    - struct evbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 824
    functionName: evbuf_event_add
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - event_add_write
    linkageType: ''
    returnType: void
    signature: void evbuf_event_add(struct evbuf *eb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_init
      Src: /src/frr/ldpd/ldpd.c:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - eb
    - fd
    - arg
    argTypes:
    - struct evbuf*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 826
    functionDepth: 1
    functionLinenumber: 826
    functionLinenumberEnd: 833
    functionName: evbuf_init
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - msgbuf_init
    linkageType: ''
    returnType: void
    signature: "void evbuf_init(struct evbuf *eb, int fd, void (*handler)(struct event
      *),\n\t\tvoid *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpd.c:838,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/ldpd.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - eb
    argTypes:
    - struct evbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 835
    functionDepth: 2
    functionLinenumber: 835
    functionLinenumberEnd: 841
    functionName: evbuf_clear
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - msgbuf_clear
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void evbuf_clear(struct evbuf *eb)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socketpair
      Src: /src/frr/ldpd/ldpd.c:848,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:850,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/ldpd.c:851,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldpd.c:853,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldpd.c:857,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ldpe_buf
    - lde_buf
    argTypes:
    - struct imsgbuf*
    - struct imsgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 862
    functionName: main_imsg_send_ipc_sockets
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - imsg_compose
    - sock_set_nonblock
    - socketpair
    linkageType: ''
    returnType: int
    signature: int main_imsg_send_ipc_sockets(struct imsgbuf *ldpe_buf, struct imsgbuf
      *lde_buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_addrisset
      Src: /src/frr/ldpd/ldpd.c:867,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldpd.c:867,1
    - Dst: main_imsg_send_net_socket
      Src: /src/frr/ldpd/ldpd.c:870,1
    - Dst: main_imsg_send_net_socket
      Src: /src/frr/ldpd/ldpd.c:871,1
    - Dst: main_imsg_send_net_socket
      Src: /src/frr/ldpd/ldpd.c:872,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:873,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 864
    functionDepth: 3
    functionLinenumber: 864
    functionLinenumberEnd: 874
    functionName: main_imsg_send_net_sockets
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 2
    functionsReached:
    - imsg_compose_event
    - ldp_af_conf_get
    - ldp_addrisset
    - main_imsg_send_net_socket
    linkageType: ''
    returnType: void
    signature: void main_imsg_send_net_sockets(int af)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_create_socket
      Src: /src/frr/ldpd/ldpd.c:881,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpd.c:883,1
    - Dst: socket_name
      Src: /src/frr/ldpd/ldpd.c:883,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldpd.c:883,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:887,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - af
    - type
    argTypes:
    - int
    - enum socket_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 876
    functionDepth: 3
    functionLinenumber: 876
    functionLinenumberEnd: 889
    functionName: main_imsg_send_net_socket
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - af_name
    - ldp_create_socket
    - imsg_compose_event
    - log_warnx
    - socket_name
    linkageType: ''
    returnType: void
    signature: void main_imsg_send_net_socket(int af, enum socket_type type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:902,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:908,1
    - Dst: imsg_flush
      Src: /src/frr/ldpd/ldpd.c:910,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/ldpd.c:913,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:914,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/ldpd.c:916,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:917,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:921,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 5
    argNames:
    - iev
    - acl_name
    - af
    - addr
    - prefixlen
    argTypes:
    - struct imsgev*
    - char*
    - int
    - union ldpd_addr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 891
    functionDepth: 4
    functionLinenumber: 891
    functionLinenumberEnd: 924
    functionName: ldp_acl_request
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - imsg_flush
    - fatalx
    - strlcpy
    - imsg_read
    - imsg_get
    - imsg_compose_event
    - fatal
    linkageType: ''
    returnType: int
    signature: "int ldp_acl_request(struct imsgev *iev, char *acl_name, int af,\n
      \   union ldpd_addr *addr, uint8_t prefixlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: access_list_lookup
      Src: /src/frr/ldpd/ldpd.c:933,1
    - Dst: family2afi
      Src: /src/frr/ldpd/ldpd.c:933,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:946,1
    - Dst: access_list_apply
      Src: /src/frr/ldpd/ldpd.c:949,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:952,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - iev
    - acl_check
    argTypes:
    - struct imsgev*
    - struct acl_check*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 926
    functionDepth: 4
    functionLinenumber: 926
    functionLinenumberEnd: 954
    functionName: ldp_acl_reply
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 2
    functionsReached:
    - fatalx
    - access_list_apply
    - family2afi
    - access_list_lookup
    - imsg_compose_event
    linkageType: ''
    returnType: void
    signature: void ldp_acl_reply(struct imsgev *iev, struct acl_check *acl_check)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - xconf
    - af
    argTypes:
    - struct ldpd_conf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 967
    functionName: ldp_af_conf_get
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - fatalx
    linkageType: ''
    returnType: struct ldpd_af_conf
    signature: 'struct ldpd_af_conf *

      ldp_af_conf_get(struct ldpd_conf *xconf, int af)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:978,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - xglobal
    - af
    argTypes:
    - struct ldpd_global*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 980
    functionName: ldp_af_global_get
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - fatalx
    linkageType: ''
    returnType: struct ldpd_af_global
    signature: 'struct ldpd_af_global *

      ldp_af_global_get(struct ldpd_global *xglobal, int af)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:985,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:986,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - xconf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 982
    functionDepth: 1
    functionLinenumber: 982
    functionLinenumberEnd: 987
    functionName: ldp_is_dual_stack
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int ldp_is_dual_stack(struct ldpd_conf *xconf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - xconf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 989
    functionDepth: 0
    functionLinenumber: 989
    functionLinenumberEnd: 996
    functionName: ldp_rtr_id_get
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: in_addr_t
    signature: in_addr_t ldp_rtr_id_get(struct ldpd_conf *xconf)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1008,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1012,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1013,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1018,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1019,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1024,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1025,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1030,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1031,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1035,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1036,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1041,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1042,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1047,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1048,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldpd.c:1054,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - xconf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 998
    functionDepth: 2
    functionLinenumber: 998
    functionLinenumberEnd: 1058
    functionName: main_imsg_send_config
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - main_imsg_compose_both
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int main_imsg_send_config(struct ldpd_conf *xconf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_normalize
      Src: /src/frr/ldpd/ldpd.c:1072,1
    - Dst: main_imsg_send_config
      Src: /src/frr/ldpd/ldpd.c:1074,1
    - Dst: merge_config
      Src: /src/frr/ldpd/ldpd.c:1077,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - xconf
    argTypes:
    - struct vty*
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1060
    functionDepth: 3
    functionLinenumber: 1060
    functionLinenumberEnd: 1080
    functionName: ldp_config_apply
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 2
    functionsReached:
    - ldp_config_normalize
    - main_imsg_send_config
    - merge_config
    linkageType: ''
    returnType: int
    signature: int ldp_config_apply(struct vty *vty, struct ldpd_conf *xconf)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1090,1
    - Dst: ldp_config_reset_main
      Src: /src/frr/ldpd/ldpd.c:1091,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1093,1
    - Dst: ldp_config_reset_af
      Src: /src/frr/ldpd/ldpd.c:1094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1095,1
    - Dst: ldp_config_reset_af
      Src: /src/frr/ldpd/ldpd.c:1096,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1098,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1102,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1103,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1104,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1108,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1113,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1114,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1115,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1119,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1121,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1128,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1129,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1132,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1134,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1141,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1142,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 46
    argCount: 1
    argNames:
    - xconf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1082
    functionDepth: 1
    functionLinenumber: 1082
    functionLinenumberEnd: 1145
    functionName: ldp_config_normalize
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - ldp_config_reset_main
    - ldp_config_reset_af
    - RB_REMOVE
    - QOBJ_UNREG
    - CHECK_FLAG
    - free
    - RB_INSERT
    - RB_FOREACH_SAFE
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void ldp_config_normalize(struct ldpd_conf *xconf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_reset_main
      Src: /src/frr/ldpd/ldpd.c:1150,1
    - Dst: ldp_config_reset_l2vpns
      Src: /src/frr/ldpd/ldpd.c:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - conf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1147
    functionDepth: 1
    functionLinenumber: 1147
    functionLinenumberEnd: 1152
    functionName: ldp_config_reset
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 2
    functionsReached:
    - ldp_config_reset_main
    - ldp_config_reset_l2vpns
    linkageType: ''
    returnType: void
    signature: void ldp_config_reset(struct ldpd_conf *conf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1160,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1161,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1163,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1164,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1165,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1168,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1169,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1171,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1172,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1173,1
    - Dst: ldp_config_reset_af
      Src: /src/frr/ldpd/ldpd.c:1177,1
    - Dst: ldp_config_reset_af
      Src: /src/frr/ldpd/ldpd.c:1178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - conf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1154
    functionDepth: 1
    functionLinenumber: 1154
    functionLinenumberEnd: 1186
    functionName: ldp_config_reset_main
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 2
    functionsReached:
    - ldp_config_reset_af
    - RB_REMOVE
    - QOBJ_UNREG
    - free
    - RB_EMPTY
    - RB_ROOT
    linkageType: ''
    returnType: void
    signature: void ldp_config_reset_main(struct ldpd_conf *conf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpd.c:1196,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldpd.c:1197,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1201,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1205,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1206,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1207,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldpd.c:1210,1
    - Dst: memset
      Src: /src/frr/ldpd/ldpd.c:1216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - conf
    - af
    argTypes:
    - struct ldpd_conf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1188
    functionDepth: 2
    functionLinenumber: 1188
    functionLinenumberEnd: 1218
    functionName: ldp_config_reset_af
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 2
    functionsReached:
    - RB_REMOVE
    - memset
    - QOBJ_UNREG
    - ldp_af_conf_get
    - free
    - RB_FOREACH_SAFE
    - iface_af_get
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void ldp_config_reset_af(struct ldpd_conf *conf, int af)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1227,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1228,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1229,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1230,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1232,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1233,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1234,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1237,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1238,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1240,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1241,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1242,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1245,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1246,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1248,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1249,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1250,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldpd.c:1253,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1254,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - conf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1220
    functionDepth: 1
    functionLinenumber: 1220
    functionLinenumberEnd: 1257
    functionName: ldp_config_reset_l2vpns
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - RB_REMOVE
    - QOBJ_UNREG
    - free
    - RB_EMPTY
    - RB_ROOT
    linkageType: ''
    returnType: void
    signature: void ldp_config_reset_l2vpns(struct ldpd_conf *conf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1267,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1268,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1270,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1271,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1274,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1275,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1277,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1278,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1281,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1282,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1284,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1285,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpd.c:1288,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpd.c:1289,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1291,1
    - Dst: l2vpn_del
      Src: /src/frr/ldpd/ldpd.c:1292,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - xconf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1259
    functionDepth: 1
    functionLinenumber: 1259
    functionLinenumberEnd: 1296
    functionName: ldp_clear_config
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 0
    functionsReached:
    - RB_REMOVE
    - free
    - l2vpn_del
    - RB_EMPTY
    - RB_ROOT
    linkageType: ''
    returnType: void
    signature: void ldp_clear_config(struct ldpd_conf *xconf)
  - 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: 1304
      start: 1298
    functionDepth: 0
    functionLinenumber: 1298
    functionLinenumberEnd: 1304
    functionName: COPY
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: merge_global
      Src: /src/frr/ldpd/ldpd.c:1308,1
    - Dst: merge_af
      Src: /src/frr/ldpd/ldpd.c:1309,1
    - Dst: merge_af
      Src: /src/frr/ldpd/ldpd.c:1310,1
    - Dst: merge_ifaces
      Src: /src/frr/ldpd/ldpd.c:1311,1
    - Dst: merge_tnbrs
      Src: /src/frr/ldpd/ldpd.c:1312,1
    - Dst: merge_nbrps
      Src: /src/frr/ldpd/ldpd.c:1313,1
    - Dst: merge_l2vpns
      Src: /src/frr/ldpd/ldpd.c:1314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - conf
    - xconf
    argTypes:
    - struct ldpd_conf*
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1315
    functionName: merge_config
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - merge_tnbrs
    - merge_af
    - merge_global
    - merge_ifaces
    - merge_l2vpns
    - merge_nbrps
    linkageType: ''
    returnType: void
    signature: void merge_config(struct ldpd_conf *conf, struct ldpd_conf *xconf)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1321,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1322,1
    - Dst: ldp_sync_fsm_reset_all
      Src: /src/frr/ldpd/ldpd.c:1325,1
    - Dst: ldpe_reset_nbrs
      Src: /src/frr/ldpd/ldpd.c:1331,1
    - Dst: if_update_all
      Src: /src/frr/ldpd/ldpd.c:1334,1
    - Dst: tnbr_update_all
      Src: /src/frr/ldpd/ldpd.c:1335,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1346,1
    - Dst: ldpe_reset_nbrs
      Src: /src/frr/ldpd/ldpd.c:1347,1
    - Dst: ldpe_reset_ds_nbrs
      Src: /src/frr/ldpd/ldpd.c:1357,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1361,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1362,1
    - Dst: ldpe_reset_ds_nbrs
      Src: /src/frr/ldpd/ldpd.c:1364,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1372,1
    - Dst: lde_allow_broken_lsp_update
      Src: /src/frr/ldpd/ldpd.c:1374,1
    - Dst: ldpe_set_config_change_time
      Src: /src/frr/ldpd/ldpd.c:1378,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 2
    argNames:
    - conf
    - xconf
    argTypes:
    - struct ldpd_conf*
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1381
    functionName: merge_global
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - ldpe_set_config_change_time
    - CHECK_FLAG
    - ldp_sync_fsm_reset_all
    - ldpe_reset_nbrs
    - ldpe_reset_ds_nbrs
    - lde_allow_broken_lsp_update
    - if_update_all
    - tnbr_update_all
    linkageType: ''
    returnType: void
    signature: void merge_global(struct ldpd_conf *conf, struct ldpd_conf *xconf)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1407,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1408,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1411,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1412,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1420,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1421,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1425,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1426,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1430,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1431,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/ldpd.c:1437,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1443,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1446,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1447,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1448,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1449,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1452,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1455,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1458,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1461,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1464,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1467,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1470,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1473,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1476,1
    - Dst: lde_change_egress_label
      Src: /src/frr/ldpd/ldpd.c:1483,1
    - Dst: lde_change_allocate_filter
      Src: /src/frr/ldpd/ldpd.c:1486,1
    - Dst: lde_route_update_release_all
      Src: /src/frr/ldpd/ldpd.c:1489,1
    - Dst: ldpe_stop_init_backoff
      Src: /src/frr/ldpd/ldpd.c:1494,1
    - Dst: ldpe_remove_dynamic_tnbrs
      Src: /src/frr/ldpd/ldpd.c:1496,1
    - Dst: ldpe_reset_nbrs
      Src: /src/frr/ldpd/ldpd.c:1498,1
    - Dst: ldpe_reset_nbrs
      Src: /src/frr/ldpd/ldpd.c:1500,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpd.c:1504,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 66
    argCount: 3
    argNames:
    - af
    - af_conf
    - xa
    argTypes:
    - int
    - struct ldpd_af_conf*
    - struct ldpd_af_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1383
    functionDepth: 3
    functionLinenumber: 1383
    functionLinenumberEnd: 1508
    functionName: merge_af
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - ldpe_stop_init_backoff
    - lde_change_egress_label
    - ldp_addrcmp
    - ldpe_remove_dynamic_tnbrs
    - CHECK_FLAG
    - strcmp
    - strlcpy
    - lde_change_allocate_filter
    - ldpe_reset_nbrs
    - lde_route_update_release_all
    - imsg_compose_event
    linkageType: ''
    returnType: void
    signature: void merge_af(int af, struct ldpd_af_conf *af_conf, struct ldpd_af_conf
      *xa)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1515,1
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/ldpd.c:1519,1
    - Dst: ldpe_if_exit
      Src: /src/frr/ldpd/ldpd.c:1522,1
    - Dst: lde_route_update_release
      Src: /src/frr/ldpd/ldpd.c:1526,1
    - Dst: lde_route_update_release
      Src: /src/frr/ldpd/ldpd.c:1529,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1535,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1536,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1539,1
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/ldpd.c:1541,1
    - Dst: COPY
      Src: /src/frr/ldpd/ldpd.c:1542,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1543,1
    - Dst: ldpe_if_init
      Src: /src/frr/ldpd/ldpd.c:1547,1
    - Dst: kif_redistribute
      Src: /src/frr/ldpd/ldpd.c:1553,1
    - Dst: lde_route_update_release
      Src: /src/frr/ldpd/ldpd.c:1569,1
    - Dst: lde_route_update_release
      Src: /src/frr/ldpd/ldpd.c:1572,1
    - Dst: lde_route_update
      Src: /src/frr/ldpd/ldpd.c:1578,1
    - Dst: lde_route_update
      Src: /src/frr/ldpd/ldpd.c:1581,1
    - Dst: merge_iface_af
      Src: /src/frr/ldpd/ldpd.c:1585,1
    - Dst: merge_iface_af
      Src: /src/frr/ldpd/ldpd.c:1586,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 49
    argCount: 2
    argNames:
    - conf
    - xconf
    argTypes:
    - struct ldpd_conf*
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1510
    functionDepth: 1
    functionLinenumber: 1510
    functionLinenumberEnd: 1588
    functionName: merge_ifaces
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - RB_REMOVE
    - lde_route_update
    - ldpe_if_init
    - free
    - RB_INSERT
    - RB_FOREACH_SAFE
    - COPY
    - ldpe_if_exit
    - merge_iface_af
    - if_lookup_name
    - kif_redistribute
    - lde_route_update_release
    linkageType: ''
    returnType: void
    signature: void merge_ifaces(struct ldpd_conf *conf, struct ldpd_conf *xconf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_if_update
      Src: /src/frr/ldpd/ldpd.c:1596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ia
    - xi
    argTypes:
    - struct iface_af*
    - struct iface_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1590
    functionDepth: 1
    functionLinenumber: 1590
    functionLinenumberEnd: 1600
    functionName: merge_iface_af
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - ldp_if_update
    linkageType: ''
    returnType: void
    signature: void merge_iface_af(struct iface_af *ia, struct iface_af *xi)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1607,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1608,1
    - Dst: tnbr_find
      Src: /src/frr/ldpd/ldpd.c:1612,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1615,1
    - Dst: tnbr_check
      Src: /src/frr/ldpd/ldpd.c:1616,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1620,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1621,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1626,1
    - Dst: tnbr_find
      Src: /src/frr/ldpd/ldpd.c:1628,1
    - Dst: COPY
      Src: /src/frr/ldpd/ldpd.c:1629,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1630,1
    - Dst: tnbr_update
      Src: /src/frr/ldpd/ldpd.c:1634,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1644,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1645,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - conf
    - xconf
    argTypes:
    - struct ldpd_conf*
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1602
    functionDepth: 1
    functionLinenumber: 1602
    functionLinenumberEnd: 1647
    functionName: merge_tnbrs
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - RB_REMOVE
    - CHECK_FLAG
    - free
    - tnbr_update
    - RB_INSERT
    - RB_FOREACH_SAFE
    - UNSET_FLAG
    - SET_FLAG
    - tnbr_check
    - tnbr_find
    - COPY
    linkageType: ''
    returnType: void
    signature: void merge_tnbrs(struct ldpd_conf *conf, struct ldpd_conf *xconf)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1656,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/ldpd.c:1658,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/ldpd.c:1663,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpd.c:1665,1
    - Dst: pfkey_remove
      Src: /src/frr/ldpd/ldpd.c:1667,1
    - Dst: sock_set_md5sig
      Src: /src/frr/ldpd/ldpd.c:1669,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/ldpd.c:1670,1
    - Dst: nbr_session_active_role
      Src: /src/frr/ldpd/ldpd.c:1675,1
    - Dst: nbr_establish_connection
      Src: /src/frr/ldpd/ldpd.c:1676,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1683,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1684,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1687,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/ldpd.c:1689,1
    - Dst: COPY
      Src: /src/frr/ldpd/ldpd.c:1690,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1691,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/ldpd.c:1695,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpd.c:1697,1
    - Dst: pfkey_establish
      Src: /src/frr/ldpd/ldpd.c:1700,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:1701,1
    - Dst: sock_set_md5sig
      Src: /src/frr/ldpd/ldpd.c:1703,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/ldpd.c:1704,1
    - Dst: nbr_session_active_role
      Src: /src/frr/ldpd/ldpd.c:1709,1
    - Dst: nbr_establish_connection
      Src: /src/frr/ldpd/ldpd.c:1710,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpd.c:1726,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1735,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/ldpd.c:1741,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpd.c:1743,1
    - Dst: pfkey_remove
      Src: /src/frr/ldpd/ldpd.c:1745,1
    - Dst: pfkey_establish
      Src: /src/frr/ldpd/ldpd.c:1747,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpd.c:1748,1
    - Dst: sock_set_md5sig
      Src: /src/frr/ldpd/ldpd.c:1751,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/ldpd.c:1751,1
    - Dst: nbr_session_active_role
      Src: /src/frr/ldpd/ldpd.c:1755,1
    - Dst: nbr_establish_connection
      Src: /src/frr/ldpd/ldpd.c:1756,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 71
    argCount: 2
    argNames:
    - conf
    - xconf
    argTypes:
    - struct ldpd_conf*
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1649
    functionDepth: 2
    functionLinenumber: 1649
    functionLinenumberEnd: 1760
    functionName: merge_nbrps
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - pfkey_remove
    - nbr_establish_connection
    - fatalx
    - ldp_af_global_get
    - RB_REMOVE
    - strlcpy
    - strcmp
    - free
    - RB_INSERT
    - nbr_session_active_role
    - RB_FOREACH_SAFE
    - COPY
    - sock_set_md5sig
    - nbr_params_find
    - nbr_find_ldpid
    - session_shutdown
    - pfkey_establish
    linkageType: ''
    returnType: void
    signature: void merge_nbrps(struct ldpd_conf *conf, struct ldpd_conf *xconf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1767,1
    - Dst: l2vpn_find
      Src: /src/frr/ldpd/ldpd.c:1769,1
    - Dst: l2vpn_exit
      Src: /src/frr/ldpd/ldpd.c:1772,1
    - Dst: ldpe_l2vpn_exit
      Src: /src/frr/ldpd/ldpd.c:1775,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1780,1
    - Dst: l2vpn_del
      Src: /src/frr/ldpd/ldpd.c:1781,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1784,1
    - Dst: l2vpn_find
      Src: /src/frr/ldpd/ldpd.c:1786,1
    - Dst: COPY
      Src: /src/frr/ldpd/ldpd.c:1787,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1788,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpd.c:1789,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpd.c:1790,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpd.c:1791,1
    - Dst: l2vpn_init
      Src: /src/frr/ldpd/ldpd.c:1795,1
    - Dst: ldpe_l2vpn_init
      Src: /src/frr/ldpd/ldpd.c:1798,1
    - Dst: merge_l2vpn
      Src: /src/frr/ldpd/ldpd.c:1806,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - conf
    - xconf
    argTypes:
    - struct ldpd_conf*
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1762
    functionDepth: 1
    functionLinenumber: 1762
    functionLinenumberEnd: 1808
    functionName: merge_l2vpns
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - RB_REMOVE
    - ldpe_l2vpn_init
    - RB_INIT
    - RB_INSERT
    - RB_FOREACH_SAFE
    - l2vpn_exit
    - l2vpn_find
    - l2vpn_del
    - l2vpn_init
    - merge_l2vpn
    - ldpe_l2vpn_exit
    - COPY
    linkageType: ''
    returnType: void
    signature: void merge_l2vpns(struct ldpd_conf *conf, struct ldpd_conf *xconf)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1823,1
    - Dst: l2vpn_if_find
      Src: /src/frr/ldpd/ldpd.c:1825,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1826,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1827,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1830,1
    - Dst: l2vpn_if_find
      Src: /src/frr/ldpd/ldpd.c:1832,1
    - Dst: COPY
      Src: /src/frr/ldpd/ldpd.c:1833,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1834,1
    - Dst: kif_redistribute
      Src: /src/frr/ldpd/ldpd.c:1842,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1849,1
    - Dst: l2vpn_pw_find_active
      Src: /src/frr/ldpd/ldpd.c:1851,1
    - Dst: l2vpn_pw_exit
      Src: /src/frr/ldpd/ldpd.c:1854,1
    - Dst: ldpe_l2vpn_pw_exit
      Src: /src/frr/ldpd/ldpd.c:1857,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1863,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1864,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1867,1
    - Dst: l2vpn_pw_find_active
      Src: /src/frr/ldpd/ldpd.c:1869,1
    - Dst: COPY
      Src: /src/frr/ldpd/ldpd.c:1870,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1871,1
    - Dst: l2vpn_pw_init
      Src: /src/frr/ldpd/ldpd.c:1876,1
    - Dst: ldpe_l2vpn_pw_init
      Src: /src/frr/ldpd/ldpd.c:1879,1
    - Dst: kif_redistribute
      Src: /src/frr/ldpd/ldpd.c:1882,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/ldpd.c:1890,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1896,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1897,1
    - Dst: ldpe_l2vpn_pw_exit
      Src: /src/frr/ldpd/ldpd.c:1911,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/ldpd.c:1913,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpd.c:1915,1
    - Dst: l2vpn_pw_exit
      Src: /src/frr/ldpd/ldpd.c:1919,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1924,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1926,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1927,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1929,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1931,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1932,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1934,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpd.c:1936,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1937,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/ldpd.c:1939,1
    - Dst: ldpe_l2vpn_pw_init
      Src: /src/frr/ldpd/ldpd.c:1942,1
    - Dst: l2vpn_pw_init
      Src: /src/frr/ldpd/ldpd.c:1947,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1954,1
    - Dst: l2vpn_pw_find_inactive
      Src: /src/frr/ldpd/ldpd.c:1956,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldpd.c:1957,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:1958,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpd.c:1961,1
    - Dst: l2vpn_pw_find_inactive
      Src: /src/frr/ldpd/ldpd.c:1963,1
    - Dst: COPY
      Src: /src/frr/ldpd/ldpd.c:1964,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpd.c:1965,1
    - Dst: kif_redistribute
      Src: /src/frr/ldpd/ldpd.c:1973,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1984,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpd.c:1991,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 136
    argCount: 3
    argNames:
    - xconf
    - l2vpn
    - xl
    argTypes:
    - struct ldpd_conf*
    - struct l2vpn*
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1810
    functionDepth: 1
    functionLinenumber: 1810
    functionLinenumberEnd: 1993
    functionName: merge_l2vpn
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - l2vpn_pw_find_active
    - ldpe_l2vpn_pw_exit
    - l2vpn_pw_find_inactive
    - RB_INSERT
    - l2vpn_if_find
    - strlcpy
    - free
    - l2vpn_pw_exit
    - UNSET_FLAG
    - l2vpn_pw_init
    - nbr_find_ldpid
    - session_shutdown
    - kif_redistribute
    - RB_REMOVE
    - ldp_addrcmp
    - CHECK_FLAG
    - RB_FOREACH_SAFE
    - SET_FLAG
    - COPY
    - ldpe_l2vpn_pw_init
    linkageType: ''
    returnType: void
    signature: void merge_l2vpn(struct ldpd_conf *xconf, struct l2vpn *l2vpn, struct
      l2vpn *xl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/ldpd.c:2000,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpd.c:2002,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpd.c:2004,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpd.c:2005,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpd.c:2006,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpd.c:2007,1
    - Dst: ldp_config_reset
      Src: /src/frr/ldpd/ldpd.c:2010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 1995
    functionDepth: 2
    functionLinenumber: 1995
    functionLinenumberEnd: 2013
    functionName: config_new_empty
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - fatal
    - RB_INIT
    - ldp_config_reset
    - calloc
    linkageType: ''
    returnType: struct ldpd_conf
    signature: 'struct ldpd_conf *

      config_new_empty(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_new_empty
      Src: /src/frr/ldpd/ldpd.c:2026,1
    - Dst: merge_config
      Src: /src/frr/ldpd/ldpd.c:2032,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:2033,1
    - Dst: free
      Src: /src/frr/ldpd/ldpd.c:2034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - conf
    argTypes:
    - struct ldpd_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2015
    functionDepth: 3
    functionLinenumber: 2015
    functionLinenumberEnd: 2035
    functionName: config_clear
    functionSourceFile: /src/frr/ldpd/ldpd.c
    functionUses: 1
    functionsReached:
    - merge_config
    - free
    - config_new_empty
    linkageType: ''
    returnType: void
    signature: void config_clear(struct ldpd_conf *conf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: IN6_IS_SCOPE_EMBED
    functionSourceFile: /src/frr/ldpd/ldpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN6_IS_SCOPE_EMBED(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 900
    functionDepth: 0
    functionLinenumber: 900
    functionLinenumberEnd: 901
    functionName: __IPV6_ADDR_MC_SCOPE
    functionSourceFile: /src/frr/ldpd/ldpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __IPV6_ADDR_MC_SCOPE(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 905
    functionName: IN6_IS_ADDR_MC_INTFACELOCAL
    functionSourceFile: /src/frr/ldpd/ldpd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN6_IS_ADDR_MC_INTFACELOCAL(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ldpd/l2vpn.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct l2vpn*
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: l2vpn_compare
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int l2vpn_compare(const struct l2vpn *a, const struct l2vpn *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/l2vpn.c:38,1
    - Dst: fatal
      Src: /src/frr/ldpd/l2vpn.c:39,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:41,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/l2vpn.c:47,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/l2vpn.c:48,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/l2vpn.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: l2vpn_new
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - fatal
    - strlcpy
    - RB_INIT
    - calloc
    linkageType: ''
    returnType: struct l2vpn
    signature: 'struct l2vpn *

      l2vpn_new(const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:58,1
    - Dst: RB_FIND
      Src: /src/frr/ldpd/l2vpn.c:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xconf
    - name
    argTypes:
    - struct ldpd_conf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 60
    functionName: l2vpn_find
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct l2vpn
    signature: 'struct l2vpn *

      l2vpn_find(struct ldpd_conf *xconf, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/l2vpn.c:68,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/l2vpn.c:69,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/l2vpn.c:71,1
    - Dst: free
      Src: /src/frr/ldpd/l2vpn.c:72,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/l2vpn.c:74,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/l2vpn.c:75,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/l2vpn.c:77,1
    - Dst: free
      Src: /src/frr/ldpd/l2vpn.c:78,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/l2vpn.c:80,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/l2vpn.c:81,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/l2vpn.c:83,1
    - Dst: free
      Src: /src/frr/ldpd/l2vpn.c:84,1
    - Dst: free
      Src: /src/frr/ldpd/l2vpn.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - l2vpn
    argTypes:
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 88
    functionName: l2vpn_del
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 2
    functionsReached:
    - RB_EMPTY
    - RB_ROOT
    - free
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void l2vpn_del(struct l2vpn *l2vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:95,1
    - Dst: l2vpn_pw_init
      Src: /src/frr/ldpd/l2vpn.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - l2vpn
    argTypes:
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 97
    functionName: l2vpn_init
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    - l2vpn_pw_init
    linkageType: ''
    returnType: void
    signature: void l2vpn_init(struct l2vpn *l2vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:104,1
    - Dst: l2vpn_pw_exit
      Src: /src/frr/ldpd/l2vpn.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - l2vpn
    argTypes:
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: l2vpn_exit
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - l2vpn_pw_exit
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void l2vpn_exit(struct l2vpn *l2vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmp_name_func
      Src: /src/frr/ldpd/l2vpn.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct l2vpn_if*
    - struct l2vpn_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: l2vpn_if_compare
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - if_cmp_name_func
    linkageType: ''
    returnType: int
    signature: int l2vpn_if_compare(const struct l2vpn_if *a, const struct l2vpn_if
      *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/l2vpn.c:119,1
    - Dst: fatal
      Src: /src/frr/ldpd/l2vpn.c:120,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - l2vpn
    - ifname
    argTypes:
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 126
    functionName: l2vpn_if_new
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - fatal
    - strlcpy
    - calloc
    linkageType: ''
    returnType: struct l2vpn_if
    signature: 'struct l2vpn_if *

      l2vpn_if_new(struct l2vpn *l2vpn, const char *ifname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:132,1
    - Dst: RB_FIND
      Src: /src/frr/ldpd/l2vpn.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - l2vpn
    - ifname
    argTypes:
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: l2vpn_if_find
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct l2vpn_if
    signature: 'struct l2vpn_if *

      l2vpn_if_find(struct l2vpn *l2vpn, const char *ifname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/l2vpn.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - lif
    - kif
    argTypes:
    - struct l2vpn_if*
    - struct kif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 142
    functionName: l2vpn_if_update_info
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void l2vpn_if_update_info(struct l2vpn_if *lif, struct kif *kif)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:155,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/l2vpn.c:156,1
    - Dst: memset
      Src: /src/frr/ldpd/l2vpn.c:160,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:164,1
    - Dst: send_mac_withdrawal
      Src: /src/frr/ldpd/l2vpn.c:167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - lif
    argTypes:
    - struct l2vpn_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 169
    functionName: l2vpn_if_update
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - memset
    - SET_FLAG
    - send_mac_withdrawal
    - nbr_find_ldpid
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void l2vpn_if_update(struct l2vpn_if *lif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmp_name_func
      Src: /src/frr/ldpd/l2vpn.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct l2vpn_pw*
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: l2vpn_pw_compare
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - if_cmp_name_func
    linkageType: ''
    returnType: int
    signature: int l2vpn_pw_compare(const struct l2vpn_pw *a, const struct l2vpn_pw
      *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/l2vpn.c:182,1
    - Dst: fatal
      Src: /src/frr/ldpd/l2vpn.c:183,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - l2vpn
    - ifname
    argTypes:
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 189
    functionName: l2vpn_pw_new
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - fatal
    - strlcpy
    - calloc
    linkageType: ''
    returnType: struct l2vpn_pw
    signature: 'struct l2vpn_pw *

      l2vpn_pw_new(struct l2vpn *l2vpn, const char *ifname)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:197,1
    - Dst: RB_FIND
      Src: /src/frr/ldpd/l2vpn.c:198,1
    - Dst: RB_FIND
      Src: /src/frr/ldpd/l2vpn.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - l2vpn
    - ifname
    argTypes:
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 202
    functionName: l2vpn_pw_find
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct l2vpn_pw
    signature: 'struct l2vpn_pw *

      l2vpn_pw_find(struct l2vpn *l2vpn, const char *ifname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:209,1
    - Dst: RB_FIND
      Src: /src/frr/ldpd/l2vpn.c:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - l2vpn
    - ifname
    argTypes:
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 211
    functionName: l2vpn_pw_find_active
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct l2vpn_pw
    signature: 'struct l2vpn_pw *

      l2vpn_pw_find_active(struct l2vpn *l2vpn, const char *ifname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:218,1
    - Dst: RB_FIND
      Src: /src/frr/ldpd/l2vpn.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - l2vpn
    - ifname
    argTypes:
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 220
    functionName: l2vpn_pw_find_inactive
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct l2vpn_pw
    signature: 'struct l2vpn_pw *

      l2vpn_pw_find_inactive(struct l2vpn *l2vpn, const char *ifname)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pw
    - kif
    argTypes:
    - struct l2vpn_pw*
    - struct kif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 226
    functionName: l2vpn_pw_update_info
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void l2vpn_pw_update_info(struct l2vpn_pw *pw, struct kif *kif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l2vpn_pw_reset
      Src: /src/frr/ldpd/l2vpn.c:234,1
    - Dst: pw2zpw
      Src: /src/frr/ldpd/l2vpn.c:236,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/l2vpn.c:237,1
    - Dst: l2vpn_pw_fec
      Src: /src/frr/ldpd/l2vpn.c:239,1
    - Dst: lde_kernel_insert
      Src: /src/frr/ldpd/l2vpn.c:240,1
    - Dst: lde_kernel_update
      Src: /src/frr/ldpd/l2vpn.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 243
    functionName: l2vpn_pw_init
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 2
    functionsReached:
    - lde_imsg_compose_parent
    - lde_kernel_insert
    - l2vpn_pw_reset
    - pw2zpw
    - l2vpn_pw_fec
    - lde_kernel_update
    linkageType: ''
    returnType: void
    signature: void l2vpn_pw_init(struct l2vpn_pw *pw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: l2vpn_pw_fec
      Src: /src/frr/ldpd/l2vpn.c:251,1
    - Dst: lde_kernel_remove
      Src: /src/frr/ldpd/l2vpn.c:252,1
    - Dst: lde_kernel_update
      Src: /src/frr/ldpd/l2vpn.c:253,1
    - Dst: pw2zpw
      Src: /src/frr/ldpd/l2vpn.c:255,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/l2vpn.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 257
    functionName: l2vpn_pw_exit
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 2
    functionsReached:
    - lde_imsg_compose_parent
    - lde_kernel_remove
    - pw2zpw
    - l2vpn_pw_fec
    - lde_kernel_update
    linkageType: ''
    returnType: void
    signature: void l2vpn_pw_exit(struct l2vpn_pw *pw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/l2vpn.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - pw
    - fec
    argTypes:
    - struct l2vpn_pw*
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 267
    functionName: l2vpn_pw_fec
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void l2vpn_pw_fec(struct l2vpn_pw *pw, struct fec *fec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:277,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:278,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:282,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:283,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:285,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:287,1
    - Dst: l2vpn_pw_fec
      Src: /src/frr/ldpd/l2vpn.c:290,1
    - Dst: fec_find
      Src: /src/frr/ldpd/l2vpn.c:291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 296
    functionName: l2vpn_pw_reset
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - fec_find
    - CHECK_FLAG
    - SET_FLAG
    - UNSET_FLAG
    - l2vpn_pw_fec
    linkageType: ''
    returnType: void
    signature: void l2vpn_pw_reset(struct l2vpn_pw *pw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_warnx
      Src: /src/frr/ldpd/l2vpn.c:303,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/l2vpn.c:310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:317,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/l2vpn.c:319,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - pw
    - fnh
    argTypes:
    - struct l2vpn_pw*
    - struct fec_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 326
    functionName: l2vpn_pw_ok
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - log_warnx
    - CHECK_FLAG
    linkageType: ''
    returnType: int
    signature: int l2vpn_pw_ok(struct l2vpn_pw *pw, struct fec_nh *fnh)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fec_find
      Src: /src/frr/ldpd/l2vpn.c:345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:346,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:347,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:351,1
    - Dst: htons
      Src: /src/frr/ldpd/l2vpn.c:355,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/l2vpn.c:356,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:358,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/l2vpn.c:359,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:361,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:362,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:363,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:368,1
    - Dst: fec_find
      Src: /src/frr/ldpd/l2vpn.c:371,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:372,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:373,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - ln
    - fn
    - map
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 376
    functionName: l2vpn_pw_negotiate
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - fec_find
    - htons
    - lde_send_labelmapping
    - CHECK_FLAG
    - SET_FLAG
    - UNSET_FLAG
    - lde_send_labelwithdraw
    linkageType: ''
    returnType: int
    signature: int l2vpn_pw_negotiate(struct lde_nbr *ln, struct fec_node *fn, struct
      map *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/l2vpn.c:383,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:386,1
    - Dst: lde_fec2map
      Src: /src/frr/ldpd/l2vpn.c:387,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:388,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/l2vpn.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ln
    - status
    - fec
    argTypes:
    - struct lde_nbr*
    - uint32_t
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 391
    functionName: l2vpn_send_pw_status
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - lde_imsg_compose_ldpe
    - memset
    - lde_fec2map
    linkageType: ''
    returnType: void
    signature: void l2vpn_send_pw_status(struct lde_nbr *ln, uint32_t status, struct
      fec *fec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/l2vpn.c:399,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:402,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/l2vpn.c:406,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/l2vpn.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - ln
    - status
    - pw_type
    - group_id
    argTypes:
    - struct lde_nbr*
    - uint32_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 409
    functionName: l2vpn_send_pw_status_wcard
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - lde_imsg_compose_ldpe
    - memset
    linkageType: ''
    returnType: void
    signature: "void l2vpn_send_pw_status_wcard(struct lde_nbr *ln, uint32_t status,\n
      \   uint16_t pw_type, uint32_t group_id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:420,1
    - Dst: l2vpn_recv_pw_status_wcard
      Src: /src/frr/ldpd/l2vpn.c:421,1
    - Dst: lde_map2fec
      Src: /src/frr/ldpd/l2vpn.c:425,1
    - Dst: fec_find
      Src: /src/frr/ldpd/l2vpn.c:426,1
    - Dst: fec_nh_find
      Src: /src/frr/ldpd/l2vpn.c:437,1
    - Dst: l2vpn_pw_ok
      Src: /src/frr/ldpd/l2vpn.c:446,1
    - Dst: lde_send_change_klabel
      Src: /src/frr/ldpd/l2vpn.c:447,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/l2vpn.c:449,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - ln
    - nm
    argTypes:
    - struct lde_nbr*
    - struct notify_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 450
    functionName: l2vpn_recv_pw_status
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - fec_find
    - lde_send_change_klabel
    - lde_map2fec
    - l2vpn_recv_pw_status_wcard
    - CHECK_FLAG
    - fec_nh_find
    - lde_send_delete_klabel
    - l2vpn_pw_ok
    linkageType: ''
    returnType: void
    signature: void l2vpn_recv_pw_status(struct lde_nbr *ln, struct notify_msg *nm)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:462,1
    - Dst: fec_nh_find
      Src: /src/frr/ldpd/l2vpn.c:485,1
    - Dst: l2vpn_pw_ok
      Src: /src/frr/ldpd/l2vpn.c:495,1
    - Dst: lde_send_change_klabel
      Src: /src/frr/ldpd/l2vpn.c:496,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/l2vpn.c:498,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 30
    argCount: 2
    argNames:
    - ln
    - nm
    argTypes:
    - struct lde_nbr*
    - struct notify_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 500
    functionName: l2vpn_recv_pw_status_wcard
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - l2vpn_pw_ok
    - lde_send_change_klabel
    - fec_nh_find
    - lde_send_delete_klabel
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void l2vpn_recv_pw_status_wcard(struct lde_nbr *ln, struct notify_msg
      *nm)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:511,1
    - Dst: l2vpn_pw_find
      Src: /src/frr/ldpd/l2vpn.c:512,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/l2vpn.c:517,1
    - Dst: lde_nbr_find_by_lsrid
      Src: /src/frr/ldpd/l2vpn.c:535,1
    - Dst: l2vpn_pw_fec
      Src: /src/frr/ldpd/l2vpn.c:538,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:539,1
    - Dst: l2vpn_send_pw_status
      Src: /src/frr/ldpd/l2vpn.c:540,1
    - Dst: fec_find
      Src: /src/frr/ldpd/l2vpn.c:543,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/l2vpn.c:546,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/l2vpn.c:548,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 1
    argNames:
    - zpw
    argTypes:
    - struct zapi_pw_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 502
    functionDepth: 2
    functionLinenumber: 502
    functionLinenumberEnd: 553
    functionName: l2vpn_pw_status_update
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - l2vpn_pw_find
    - fec_find
    - lde_send_labelmapping
    - CHECK_FLAG
    - l2vpn_send_pw_status
    - lde_send_labelwithdraw
    - log_warnx
    - RB_FOREACH
    - l2vpn_pw_fec
    - lde_nbr_find_by_lsrid
    linkageType: ''
    returnType: int
    signature: int l2vpn_pw_status_update(struct zapi_pw_status *zpw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:562,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:563,1
    - Dst: memset
      Src: /src/frr/ldpd/l2vpn.c:564,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:565,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/l2vpn.c:567,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/l2vpn.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 555
    functionDepth: 1
    functionLinenumber: 555
    functionLinenumberEnd: 580
    functionName: l2vpn_pw_ctl
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - RB_FOREACH
    - lde_imsg_compose_ldpe
    - memset
    linkageType: ''
    returnType: void
    signature: void l2vpn_pw_ctl(pid_t pid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:591,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/l2vpn.c:597,1
    - Dst: memset
      Src: /src/frr/ldpd/l2vpn.c:600,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:610,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:615,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:622,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/l2vpn.c:625,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/l2vpn.c:627,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/l2vpn.c:632,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 636
    functionName: l2vpn_binding_ctl
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 0
    functionsReached:
    - memset
    - CHECK_FLAG
    - lde_imsg_compose_ldpe
    - RB_EMPTY
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void l2vpn_binding_ctl(pid_t pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:645,1
    - Dst: ldpe_l2vpn_pw_init
      Src: /src/frr/ldpd/l2vpn.c:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - l2vpn
    argTypes:
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 647
    functionName: ldpe_l2vpn_init
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    - ldpe_l2vpn_pw_init
    linkageType: ''
    returnType: void
    signature: void ldpe_l2vpn_init(struct l2vpn *l2vpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/l2vpn.c:654,1
    - Dst: ldpe_l2vpn_pw_exit
      Src: /src/frr/ldpd/l2vpn.c:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - l2vpn
    argTypes:
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 656
    functionName: ldpe_l2vpn_exit
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    - ldpe_l2vpn_pw_exit
    linkageType: ''
    returnType: void
    signature: void ldpe_l2vpn_exit(struct l2vpn *l2vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tnbr_find
      Src: /src/frr/ldpd/l2vpn.c:663,1
    - Dst: tnbr_new
      Src: /src/frr/ldpd/l2vpn.c:665,1
    - Dst: tnbr_update
      Src: /src/frr/ldpd/l2vpn.c:666,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/l2vpn.c:667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 658
    functionDepth: 1
    functionLinenumber: 658
    functionLinenumberEnd: 671
    functionName: ldpe_l2vpn_pw_init
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 2
    functionsReached:
    - tnbr_find
    - tnbr_update
    - tnbr_new
    - RB_INSERT
    linkageType: ''
    returnType: void
    signature: void ldpe_l2vpn_pw_init(struct l2vpn_pw *pw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tnbr_find
      Src: /src/frr/ldpd/l2vpn.c:678,1
    - Dst: tnbr_check
      Src: /src/frr/ldpd/l2vpn.c:681,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pw
    argTypes:
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 673
    functionDepth: 1
    functionLinenumber: 673
    functionLinenumberEnd: 683
    functionName: ldpe_l2vpn_pw_exit
    functionSourceFile: /src/frr/ldpd/l2vpn.c
    functionUses: 2
    functionsReached:
    - tnbr_find
    - tnbr_check
    linkageType: ''
    returnType: void
    signature: void ldpe_l2vpn_pw_exit(struct l2vpn_pw *pw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: PREFIX_SIZE
    functionSourceFile: /src/frr/ldpd/ldpe.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_SIZE(x)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/socket.c:46,1
    - Dst: socket
      Src: /src/frr/ldpd/socket.c:48,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:50,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/socket.c:53,1
    - Dst: sockopt_v6only
      Src: /src/frr/ldpd/socket.c:54,1
    - Dst: memset
      Src: /src/frr/ldpd/socket.c:60,1
    - Dst: addr2sa
      Src: /src/frr/ldpd/socket.c:61,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/socket.c:65,1
    - Dst: addr2sa
      Src: /src/frr/ldpd/socket.c:66,1
    - Dst: sock_set_bindany
      Src: /src/frr/ldpd/socket.c:68,1
    - Dst: sock_set_reuse
      Src: /src/frr/ldpd/socket.c:72,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:73,1
    - Dst: bind
      Src: /src/frr/ldpd/socket.c:76,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/socket.c:76,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/socket.c:77,1
    - Dst: safe_strerror
      Src: /src/frr/ldpd/socket.c:78,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:79,1
    - Dst: sock_set_ipv4_tos
      Src: /src/frr/ldpd/socket.c:87,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:88,1
    - Dst: sock_set_ipv4_mcast_ttl
      Src: /src/frr/ldpd/socket.c:92,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:93,1
    - Dst: sock_set_ipv4_mcast_loop
      Src: /src/frr/ldpd/socket.c:96,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:97,1
    - Dst: sock_set_ipv4_recvif
      Src: /src/frr/ldpd/socket.c:102,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:103,1
    - Dst: sock_set_ipv4_pktinfo
      Src: /src/frr/ldpd/socket.c:108,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:109,1
    - Dst: sock_set_ipv4_recvdstaddr
      Src: /src/frr/ldpd/socket.c:113,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:114,1
    - Dst: sock_set_ipv4_ucast_ttl
      Src: /src/frr/ldpd/socket.c:123,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:124,1
    - Dst: sock_set_ipv6_dscp
      Src: /src/frr/ldpd/socket.c:130,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:131,1
    - Dst: sock_set_ipv6_mcast_loop
      Src: /src/frr/ldpd/socket.c:135,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:136,1
    - Dst: sock_set_ipv6_mcast_hops
      Src: /src/frr/ldpd/socket.c:139,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:140,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/socket.c:143,1
    - Dst: sock_set_ipv6_minhopcount
      Src: /src/frr/ldpd/socket.c:145,1
    - Dst: sock_set_ipv6_pktinfo
      Src: /src/frr/ldpd/socket.c:149,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:150,1
    - Dst: sock_set_ipv6_ucast_hops
      Src: /src/frr/ldpd/socket.c:155,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:156,1
    - Dst: sock_set_recvbuf
      Src: /src/frr/ldpd/socket.c:165,1
    - Dst: listen
      Src: /src/frr/ldpd/socket.c:168,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:169,1
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:173,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/socket.c:175,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:178,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 133
    argCount: 2
    argNames:
    - af
    - type
    argTypes:
    - int
    - enum socket_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 187
    functionName: ldp_create_socket
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - sock_set_recvbuf
    - sock_set_ipv4_mcast_ttl
    - ldp_af_conf_get
    - sockopt_v6only
    - sock_set_ipv6_mcast_hops
    - fatalx
    - memset
    - sock_set_ipv4_pktinfo
    - socket
    - sock_set_bindany
    - sock_set_reuse
    - sock_set_ipv6_minhopcount
    - safe_strerror
    - listen
    - setsockopt
    - sock_set_nonblock
    - sock_set_ipv6_ucast_hops
    - sock_set_ipv4_recvif
    - sock_set_ipv6_pktinfo
    - sock_set_ipv6_mcast_loop
    - sockaddr_len
    - sock_set_ipv6_dscp
    - CHECK_FLAG
    - close
    - sock_set_ipv4_mcast_loop
    - bind
    - sock_set_ipv4_tos
    - sock_set_ipv4_ucast_ttl
    - sock_set_ipv4_recvdstaddr
    - log_warnx
    - log_warn
    - addr2sa
    linkageType: ''
    returnType: int
    signature: int ldp_create_socket(int af, enum socket_type type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sock_set_reuse
      Src: /src/frr/ldpd/socket.c:72,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:73,1
    - Dst: bind
      Src: /src/frr/ldpd/socket.c:76,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/socket.c:76,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/socket.c:77,1
    - Dst: safe_strerror
      Src: /src/frr/ldpd/socket.c:78,1
    - Dst: close
      Src: /src/frr/ldpd/socket.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 82
    functionName: (&ldpd_privs)
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 0
    functionsReached:
    - sockaddr_len
    - close
    - sock_set_reuse
    - safe_strerror
    - bind
    - log_warnx
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ldpd_privs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/frr/ldpd/socket.c:194,1
    - Dst: fatal
      Src: /src/frr/ldpd/socket.c:195,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/socket.c:197,1
    - Dst: fcntl
      Src: /src/frr/ldpd/socket.c:199,1
    - Dst: fatal
      Src: /src/frr/ldpd/socket.c:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 201
    functionName: sock_set_nonblock
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 3
    functionsReached:
    - SET_FLAG
    - fcntl
    - fatal
    linkageType: ''
    returnType: void
    signature: void sock_set_nonblock(int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/frr/ldpd/socket.c:208,1
    - Dst: fatal
      Src: /src/frr/ldpd/socket.c:209,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/socket.c:211,1
    - Dst: fcntl
      Src: /src/frr/ldpd/socket.c:213,1
    - Dst: fatal
      Src: /src/frr/ldpd/socket.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 215
    functionName: sock_set_cloexec
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - SET_FLAG
    - fcntl
    - fatal
    linkageType: ''
    returnType: void
    signature: void sock_set_cloexec(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 225
    functionName: sock_set_recvbuf
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void sock_set_recvbuf(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:230,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - enable
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: sock_set_reuse
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 2
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_reuse(int fd, int enable)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:243,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:244,1
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:250,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:251,1
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:257,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:258,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/socket.c:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - fd
    - enable
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 269
    functionName: sock_set_bindany
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - log_warnx
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_bindany(int fd, int enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:243,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 247
    functionName: (&ldpd_privs)
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ldpd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:257,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 261
    functionName: (&ldpd_privs)
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ldpd_privs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: addr2sa
      Src: /src/frr/ldpd/socket.c:288,1
    - Dst: sockopt_tcp_signature
      Src: /src/frr/ldpd/socket.c:291,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/socket.c:296,1
    - Dst: safe_strerror
      Src: /src/frr/ldpd/socket.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - fd
    - af
    - addr
    - password
    argTypes:
    - int
    - int
    - union ldpd_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 300
    functionName: sock_set_md5sig
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - sockopt_tcp_signature
    - safe_strerror
    - log_warnx
    - addr2sa
    linkageType: ''
    returnType: int
    signature: int sock_set_md5sig(int fd, int af, union ldpd_addr *addr, const char
      *password)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockopt_tcp_signature
      Src: /src/frr/ldpd/socket.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: (&ldpe_privs)
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 0
    functionsReached:
    - sockopt_tcp_signature
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ldpe_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:306,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - tos
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 312
    functionName: sock_set_ipv4_tos
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_tos(int fd, int tos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ifindex
      Src: /src/frr/ldpd/socket.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - enable
    argTypes:
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 318
    functionName: sock_set_ipv4_recvif
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt_ifindex
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_recvif(int fd, ifindex_t enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockopt_minttl
      Src: /src/frr/ldpd/socket.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - ttl
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 324
    functionName: sock_set_ipv4_minttl
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 0
    functionsReached:
    - sockopt_minttl
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_minttl(int fd, int ttl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:329,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - ttl
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 335
    functionName: sock_set_ipv4_ucast_ttl
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_ucast_ttl(int fd, int ttl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:340,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - ttl
    argTypes:
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 346
    functionName: sock_set_ipv4_mcast_ttl
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_mcast_ttl(int fd, uint8_t ttl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:353,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - enable
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 359
    functionName: sock_set_ipv4_pktinfo
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_pktinfo(int fd, int enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:364,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - enable
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 370
    functionName: sock_set_ipv4_recvdstaddr
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_recvdstaddr(int fd, int enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_get_ipv4_addr
      Src: /src/frr/ldpd/socket.c:381,1
    - Dst: setsockopt_ipv4_multicast_if
      Src: /src/frr/ldpd/socket.c:383,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 391
    functionName: sock_set_ipv4_mcast
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 0
    functionsReached:
    - if_get_ipv4_addr
    - log_warn
    - setsockopt_ipv4_multicast_if
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_mcast(struct iface *iface)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast_loop
      Src: /src/frr/ldpd/socket.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 397
    functionName: sock_set_ipv4_mcast_loop
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt_ipv4_multicast_loop
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv4_mcast_loop(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:402,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - dscp
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 408
    functionName: sock_set_ipv6_dscp
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv6_dscp(int fd, int dscp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:413,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - enable
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 419
    functionName: sock_set_ipv6_pktinfo
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv6_pktinfo(int fd, int enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockopt_minttl
      Src: /src/frr/ldpd/socket.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - hoplimit
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 425
    functionName: sock_set_ipv6_minhopcount
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - sockopt_minttl
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv6_minhopcount(int fd, int hoplimit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:430,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - hoplimit
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 437
    functionName: sock_set_ipv6_ucast_hops
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv6_ucast_hops(int fd, int hoplimit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:442,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - hoplimit
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 449
    functionName: sock_set_ipv6_mcast_hops
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv6_mcast_hops(int fd, int hoplimit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:454,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 462
    functionName: sock_set_ipv6_mcast
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv6_mcast(struct iface *iface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ldpd/socket.c:469,1
    - Dst: log_warn
      Src: /src/frr/ldpd/socket.c:471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 476
    functionName: sock_set_ipv6_mcast_loop
    functionSourceFile: /src/frr/ldpd/socket.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - log_warn
    linkageType: ''
    returnType: int
    signature: int sock_set_ipv6_mcast_loop(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/packet.c:31,1
    - Dst: htons
      Src: /src/frr/ldpd/packet.c:32,1
    - Dst: htons
      Src: /src/frr/ldpd/packet.c:34,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/packet.c:35,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/packet.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - struct ibuf*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 39
    functionName: gen_ldp_hdr
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - ibuf_add
    - ldp_rtr_id_get
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_ldp_hdr(struct ibuf *buf, uint16_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/packet.c:47,1
    - Dst: htons
      Src: /src/frr/ldpd/packet.c:48,1
    - Dst: htons
      Src: /src/frr/ldpd/packet.c:50,1
    - Dst: htonl
      Src: /src/frr/ldpd/packet.c:51,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/packet.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - type
    - size
    argTypes:
    - struct ibuf*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 54
    functionName: gen_msg_hdr
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - htonl
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_msg_hdr(struct ibuf *buf, uint16_t type, uint16_t size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IN_MULTICAST
      Src: /src/frr/ldpd/packet.c:65,1
    - Dst: ntohl
      Src: /src/frr/ldpd/packet.c:65,1
    - Dst: sock_set_ipv4_mcast
      Src: /src/frr/ldpd/packet.c:67,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:68,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/ldpd/packet.c:74,1
    - Dst: sock_set_ipv6_mcast
      Src: /src/frr/ldpd/packet.c:76,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:77,1
    - Dst: fatalx
      Src: /src/frr/ldpd/packet.c:83,1
    - Dst: addr2sa
      Src: /src/frr/ldpd/packet.c:86,1
    - Dst: sendto
      Src: /src/frr/ldpd/packet.c:87,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/packet.c:87,1
    - Dst: log_warn
      Src: /src/frr/ldpd/packet.c:88,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/packet.c:89,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 6
    argNames:
    - fd
    - af
    - dst
    - ia
    - pkt
    - len
    argTypes:
    - int
    - int
    - union ldpd_addr*
    - struct iface_af*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 94
    functionName: send_packet
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 9
    functionsReached:
    - sockaddr_len
    - fatalx
    - log_warn
    - log_sockaddr
    - sock_set_ipv6_mcast
    - sendto
    - IN_MULTICAST
    - sock_set_ipv4_mcast
    - IN6_IS_ADDR_MULTICAST
    - ntohl
    - addr2sa
    - log_debug
    linkageType: ''
    returnType: int
    signature: "int send_packet(int fd, int af, union ldpd_addr *dst, struct iface_af
      *ia,\n    void *pkt, size_t len)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/ldpd/packet.c:99,1
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/packet.c:100,1
    - Dst: CMSG_SPACE
      Src: /src/frr/ldpd/packet.c:105,1
    - Dst: CMSG_SPACE
      Src: /src/frr/ldpd/packet.c:107,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/packet.c:131,1
    - Dst: memset
      Src: /src/frr/ldpd/packet.c:134,1
    - Dst: recvmsg
      Src: /src/frr/ldpd/packet.c:144,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:146,1
    - Dst: strerror
      Src: /src/frr/ldpd/packet.c:146,1
    - Dst: sa2addr
      Src: /src/frr/ldpd/packet.c:150,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/ldpd/packet.c:155,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/ldpd/packet.c:155,1
    - Dst: CMSG_DATA
      Src: /src/frr/ldpd/packet.c:162,1
    - Dst: IN_MULTICAST
      Src: /src/frr/ldpd/packet.c:163,1
    - Dst: ntohl
      Src: /src/frr/ldpd/packet.c:163,1
    - Dst: CMSG_DATA
      Src: /src/frr/ldpd/packet.c:173,1
    - Dst: IN_MULTICAST
      Src: /src/frr/ldpd/packet.c:174,1
    - Dst: ntohl
      Src: /src/frr/ldpd/packet.c:174,1
    - Dst: CMSG_DATA
      Src: /src/frr/ldpd/packet.c:186,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/ldpd/packet.c:187,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/packet.c:193,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:194,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:194,1
    - Dst: getsockopt_ifindex
      Src: /src/frr/ldpd/packet.c:197,1
    - Dst: disc_find_iface
      Src: /src/frr/ldpd/packet.c:201,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:209,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:209,1
    - Dst: memcpy
      Src: /src/frr/ldpd/packet.c:214,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:215,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:216,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:217,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:217,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:220,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:221,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:222,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:222,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:226,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:229,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:230,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:230,1
    - Dst: memcpy
      Src: /src/frr/ldpd/packet.c:243,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:246,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:248,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:249,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:249,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:256,1
    - Dst: recv_hello
      Src: /src/frr/ldpd/packet.c:258,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:261,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:262,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 86
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 264
    functionName: disc_recv_packet
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - sa2addr
    - CMSG_FIRSTHDR
    - ntohs
    - recv_hello
    - disc_find_iface
    - recvmsg
    - memset
    - EVENT_ARG
    - ntohl
    - log_debug
    - log_addr
    - bad_addr
    - CMSG_SPACE
    - CMSG_DATA
    - IN_MULTICAST
    - event_add_read
    - memcpy
    - CMSG_NXTHDR
    - getsockopt_ifindex
    - EVENT_FD
    - strerror
    - IN6_IS_ADDR_MULTICAST
    linkageType: ''
    returnType: void
    signature: void disc_recv_packet(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup
      Src: /src/frr/ldpd/packet.c:272,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/packet.c:276,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ldpd/packet.c:285,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ifindex
    - af
    - src
    argTypes:
    - unsigned int
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 289
    functionName: disc_find_iface
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 1
    functionsReached:
    - iface_af_get
    - IN6_IS_ADDR_LINKLOCAL
    - if_lookup
    linkageType: ''
    returnType: struct iface
    signature: 'struct iface *

      disc_find_iface(unsigned int ifindex, int af, union ldpd_addr *src)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/ldpd/packet.c:293,1
    - Dst: accept
      Src: /src/frr/ldpd/packet.c:302,1
    - Dst: accept_pause
      Src: /src/frr/ldpd/packet.c:309,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:311,1
    - Dst: strerror
      Src: /src/frr/ldpd/packet.c:311,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/packet.c:314,1
    - Dst: sa2addr
      Src: /src/frr/ldpd/packet.c:316,1
    - Dst: nbr_find_addr
      Src: /src/frr/ldpd/packet.c:323,1
    - Dst: pending_conn_find
      Src: /src/frr/ldpd/packet.c:336,1
    - Dst: close
      Src: /src/frr/ldpd/packet.c:338,1
    - Dst: pending_conn_new
      Src: /src/frr/ldpd/packet.c:340,1
    - Dst: nbr_session_active_role
      Src: /src/frr/ldpd/packet.c:344,1
    - Dst: close
      Src: /src/frr/ldpd/packet.c:345,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:349,1
    - Dst: close
      Src: /src/frr/ldpd/packet.c:350,1
    - Dst: session_accept_nbr
      Src: /src/frr/ldpd/packet.c:354,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 355
    functionName: session_accept
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - strerror
    - sa2addr
    - session_accept_nbr
    - accept_pause
    - close
    - accept
    - nbr_session_active_role
    - pending_conn_find
    - nbr_find_addr
    - pending_conn_new
    - sock_set_nonblock
    - log_debug
    linkageType: ''
    returnType: void
    signature: void session_accept(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/packet.c:365,1
    - Dst: nbr_gtsm_check
      Src: /src/frr/ldpd/packet.c:366,1
    - Dst: close
      Src: /src/frr/ldpd/packet.c:367,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/packet.c:373,1
    - Dst: close
      Src: /src/frr/ldpd/packet.c:374,1
    - Dst: getsockopt
      Src: /src/frr/ldpd/packet.c:379,1
    - Dst: fatal
      Src: /src/frr/ldpd/packet.c:380,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/packet.c:382,1
    - Dst: close
      Src: /src/frr/ldpd/packet.c:383,1
    - Dst: tcp_new
      Src: /src/frr/ldpd/packet.c:389,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/packet.c:390,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - nbr
    - fd
    argTypes:
    - struct nbr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 391
    functionName: session_accept_nbr
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 1
    functionsReached:
    - nbr_fsm
    - getsockopt
    - tcp_new
    - close
    - nbr_gtsm_check
    - nbr_params_find
    - log_warnx
    - fatal
    linkageType: ''
    returnType: void
    signature: void session_accept_nbr(struct nbr *nbr, int fd)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/ldpd/packet.c:395,1
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/packet.c:396,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/packet.c:405,1
    - Dst: read
      Src: /src/frr/ldpd/packet.c:407,1
    - Dst: log_warn
      Src: /src/frr/ldpd/packet.c:410,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/packet.c:411,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:419,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/packet.c:420,1
    - Dst: session_get_pdu
      Src: /src/frr/ldpd/packet.c:425,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:428,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:429,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:430,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:434,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:445,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:446,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:451,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:452,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/packet.c:458,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:464,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:465,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:467,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:468,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:479,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:480,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:487,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:488,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:496,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:497,1
    - Dst: recv_notification
      Src: /src/frr/ldpd/packet.c:506,1
    - Dst: recv_init
      Src: /src/frr/ldpd/packet.c:509,1
    - Dst: recv_keepalive
      Src: /src/frr/ldpd/packet.c:512,1
    - Dst: recv_capability
      Src: /src/frr/ldpd/packet.c:515,1
    - Dst: recv_address
      Src: /src/frr/ldpd/packet.c:519,1
    - Dst: recv_labelmessage
      Src: /src/frr/ldpd/packet.c:526,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:529,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:531,1
    - Dst: send_notification
      Src: /src/frr/ldpd/packet.c:533,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:542,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:586,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/packet.c:589,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:597,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 160
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 598
    functionName: session_read
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - nbr_fsm
    - recv_keepalive
    - read
    - EVENT_FD
    - recv_address
    - free
    - recv_init
    - recv_capability
    - ntohs
    - recv_labelmessage
    - session_get_pdu
    - send_notification
    - EVENT_ARG
    - event_add_read
    - session_shutdown
    - log_warn
    - recv_notification
    - log_debug
    linkageType: ''
    returnType: void
    signature: void session_read(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/packet.c:602,1
    - Dst: msgbuf_write
      Src: /src/frr/ldpd/packet.c:607,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/packet.c:609,1
    - Dst: tcp_close
      Src: /src/frr/ldpd/packet.c:616,1
    - Dst: evbuf_event_add
      Src: /src/frr/ldpd/packet.c:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 600
    functionDepth: 3
    functionLinenumber: 600
    functionLinenumberEnd: 621
    functionName: session_write
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - nbr_fsm
    - evbuf_event_add
    - EVENT_ARG
    - msgbuf_write
    - tcp_close
    linkageType: ''
    returnType: void
    signature: void session_write(struct event *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nbr_pending_connect
      Src: /src/frr/ldpd/packet.c:629,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/packet.c:630,1
    - Dst: send_notification
      Src: /src/frr/ldpd/packet.c:637,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/packet.c:639,1
    - Dst: send_notification
      Src: /src/frr/ldpd/packet.c:642,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/packet.c:644,1
    - Dst: fatalx
      Src: /src/frr/ldpd/packet.c:647,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - nbr
    - status
    - msg_id
    - msg_type
    argTypes:
    - struct nbr*
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 649
    functionName: session_shutdown
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 3
    functionsReached:
    - nbr_fsm
    - fatalx
    - nbr_pending_connect
    - EVENT_OFF
    - send_notification
    linkageType: ''
    returnType: void
    signature: "void session_shutdown(struct nbr *nbr, uint32_t status, uint32_t msg_id,\n
      \   uint32_t msg_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:654,1
    - Dst: ldp_sync_fsm_nbr_event
      Src: /src/frr/ldpd/packet.c:656,1
    - Dst: tcp_close
      Src: /src/frr/ldpd/packet.c:658,1
    - Dst: nbr_stop_ktimer
      Src: /src/frr/ldpd/packet.c:659,1
    - Dst: nbr_stop_ktimeout
      Src: /src/frr/ldpd/packet.c:660,1
    - Dst: nbr_stop_itimeout
      Src: /src/frr/ldpd/packet.c:661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 662
    functionName: session_close
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - nbr_stop_ktimer
    - nbr_stop_itimeout
    - ldp_sync_fsm_nbr_event
    - nbr_stop_ktimeout
    - tcp_close
    - log_debug
    linkageType: ''
    returnType: void
    signature: void session_close(struct nbr *nbr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/packet.c:674,1
    - Dst: ntohs
      Src: /src/frr/ldpd/packet.c:675,1
    - Dst: malloc
      Src: /src/frr/ldpd/packet.c:679,1
    - Dst: memcpy
      Src: /src/frr/ldpd/packet.c:682,1
    - Dst: memmove
      Src: /src/frr/ldpd/packet.c:685,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - r
    - b
    argTypes:
    - struct ibuf_read*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 691
    functionName: session_get_pdu
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 1
    functionsReached:
    - ntohs
    - malloc
    - memcpy
    - memmove
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t session_get_pdu(struct ibuf_read *r, char **b)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/packet.c:700,1
    - Dst: fatal
      Src: /src/frr/ldpd/packet.c:701,1
    - Dst: evbuf_init
      Src: /src/frr/ldpd/packet.c:704,1
    - Dst: calloc
      Src: /src/frr/ldpd/packet.c:707,1
    - Dst: fatal
      Src: /src/frr/ldpd/packet.c:708,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/packet.c:710,1
    - Dst: getsockname
      Src: /src/frr/ldpd/packet.c:714,1
    - Dst: log_warn
      Src: /src/frr/ldpd/packet.c:715,1
    - Dst: sa2addr
      Src: /src/frr/ldpd/packet.c:717,1
    - Dst: getpeername
      Src: /src/frr/ldpd/packet.c:718,1
    - Dst: log_warn
      Src: /src/frr/ldpd/packet.c:719,1
    - Dst: sa2addr
      Src: /src/frr/ldpd/packet.c:721,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - fd
    - nbr
    argTypes:
    - int
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 693
    functionDepth: 2
    functionLinenumber: 693
    functionLinenumberEnd: 724
    functionName: tcp_new
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 1
    functionsReached:
    - getpeername
    - sa2addr
    - calloc
    - getsockname
    - event_add_read
    - log_warn
    - fatal
    - evbuf_init
    linkageType: ''
    returnType: struct tcp_conn
    signature: 'struct tcp_conn *

      tcp_new(int fd, struct nbr *nbr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_write
      Src: /src/frr/ldpd/packet.c:730,1
    - Dst: evbuf_clear
      Src: /src/frr/ldpd/packet.c:731,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/packet.c:734,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:735,1
    - Dst: close
      Src: /src/frr/ldpd/packet.c:739,1
    - Dst: accept_unpause
      Src: /src/frr/ldpd/packet.c:740,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - tcp
    argTypes:
    - struct tcp_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 726
    functionDepth: 3
    functionLinenumber: 726
    functionLinenumberEnd: 742
    functionName: tcp_close
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 2
    functionsReached:
    - free
    - close
    - accept_unpause
    - EVENT_OFF
    - msgbuf_write
    - evbuf_clear
    linkageType: ''
    returnType: void
    signature: void tcp_close(struct tcp_conn *tcp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/packet.c:749,1
    - Dst: fatal
      Src: /src/frr/ldpd/packet.c:750,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/ldpd/packet.c:755,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/packet.c:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - fd
    - af
    - addr
    argTypes:
    - int
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 761
    functionName: pending_conn_new
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - fatal
    - calloc
    - TAILQ_INSERT_TAIL
    linkageType: ''
    returnType: struct pending_conn
    signature: 'struct pending_conn *

      pending_conn_new(int fd, int af, union ldpd_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/packet.c:766,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/ldpd/packet.c:767,1
    - Dst: free
      Src: /src/frr/ldpd/packet.c:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pconn
    argTypes:
    - struct pending_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 769
    functionName: pending_conn_del
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - free
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: void pending_conn_del(struct pending_conn *pconn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/ldpd/packet.c:776,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/packet.c:777,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - af
    - addr
    argTypes:
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 781
    functionName: pending_conn_find
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 1
    functionsReached:
    - ldp_addrcmp
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct pending_conn
    signature: 'struct pending_conn *

      pending_conn_find(int af, union ldpd_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/packet.c:785,1
    - Dst: log_debug
      Src: /src/frr/ldpd/packet.c:790,1
    - Dst: log_addr
      Src: /src/frr/ldpd/packet.c:791,1
    - Dst: tcp_new
      Src: /src/frr/ldpd/packet.c:797,1
    - Dst: send_notification
      Src: /src/frr/ldpd/packet.c:798,1
    - Dst: msgbuf_write
      Src: /src/frr/ldpd/packet.c:799,1
    - Dst: pending_conn_del
      Src: /src/frr/ldpd/packet.c:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 783
    functionDepth: 3
    functionLinenumber: 783
    functionLinenumberEnd: 802
    functionName: pending_conn_timeout
    functionSourceFile: /src/frr/ldpd/packet.c
    functionUses: 0
    functionsReached:
    - log_addr
    - tcp_new
    - pending_conn_del
    - EVENT_ARG
    - send_notification
    - msgbuf_write
    - log_debug
    linkageType: ''
    returnType: void
    signature: void pending_conn_timeout(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_open
      Src: /src/frr/ldpd/keepalive.c:22,1
    - Dst: fatal
      Src: /src/frr/ldpd/keepalive.c:23,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/keepalive.c:25,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/keepalive.c:27,1
    - Dst: debug_kalive_send
      Src: /src/frr/ldpd/keepalive.c:29,1
    - Dst: evbuf_enqueue
      Src: /src/frr/ldpd/keepalive.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 33
    functionName: send_keepalive
    functionSourceFile: /src/frr/ldpd/keepalive.c
    functionUses: 0
    functionsReached:
    - debug_kalive_send
    - gen_msg_hdr
    - ibuf_open
    - gen_ldp_hdr
    - evbuf_enqueue
    - fatal
    linkageType: ''
    returnType: void
    signature: void send_keepalive(struct nbr *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/keepalive.c:40,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/keepalive.c:42,1
    - Dst: debug_kalive_recv
      Src: /src/frr/ldpd/keepalive.c:46,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/keepalive.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - nbr
    - buf
    - len
    argTypes:
    - struct nbr*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 52
    functionName: recv_keepalive
    functionSourceFile: /src/frr/ldpd/keepalive.c
    functionUses: 1
    functionsReached:
    - nbr_fsm
    - session_shutdown
    - debug_kalive_recv
    - memcpy
    linkageType: ''
    returnType: int
    signature: int recv_keepalive(struct nbr *nbr, char *buf, uint16_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: ROUNDUP
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(x)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/frr/ldpd/pfkey.c:64,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:67,1
    - Dst: addr2sa
      Src: /src/frr/ldpd/pfkey.c:69,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:73,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:76,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/pfkey.c:83,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:85,1
    - Dst: addr2sa
      Src: /src/frr/ldpd/pfkey.c:87,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:91,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:94,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/pfkey.c:101,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:103,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:113,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:123,1
    - Dst: htonl
      Src: /src/frr/ldpd/pfkey.c:127,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:132,1
    - Dst: ROUNDUP
      Src: /src/frr/ldpd/pfkey.c:135,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/pfkey.c:135,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:137,1
    - Dst: ROUNDUP
      Src: /src/frr/ldpd/pfkey.c:140,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/pfkey.c:140,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:148,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:154,1
    - Dst: ROUNDUP
      Src: /src/frr/ldpd/pfkey.c:194,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/pfkey.c:194,1
    - Dst: ROUNDUP
      Src: /src/frr/ldpd/pfkey.c:203,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/pfkey.c:203,1
    - Dst: writev
      Src: /src/frr/ldpd/pfkey.c:235,1
    - Dst: log_warn
      Src: /src/frr/ldpd/pfkey.c:239,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 145
    argCount: 16
    argNames:
    - sd
    - satype
    - mtype
    - dir
    - af
    - src
    - dst
    - spi
    - aalg
    - alen
    - akey
    - ealg
    - elen
    - ekey
    - sport
    - dport
    argTypes:
    - int
    - uint8_t
    - uint8_t
    - uint8_t
    - int
    - union ldpd_addr*
    - union ldpd_addr*
    - uint32_t
    - uint8_t
    - int
    - char*
    - uint8_t
    - int
    - char*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 244
    functionName: pfkey_send
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - sockaddr_len
    - memset
    - ROUNDUP
    - getpid
    - htonl
    - writev
    - log_warn
    - addr2sa
    linkageType: ''
    returnType: int
    signature: "int pfkey_send(int sd, uint8_t satype, uint8_t mtype, uint8_t dir,\n
      \   int af, union ldpd_addr *src, union ldpd_addr *dst, uint32_t spi,\n    uint8_t
      aalg, int alen, char *akey, uint8_t ealg, int elen, char *ekey,\n    uint16_t
      sport, uint16_t dport)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/frr/ldpd/pfkey.c:251,1
    - Dst: log_warn
      Src: /src/frr/ldpd/pfkey.c:254,1
    - Dst: read
      Src: /src/frr/ldpd/pfkey.c:267,1
    - Dst: log_warn
      Src: /src/frr/ldpd/pfkey.c:270,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - sd
    - h
    argTypes:
    - int
    - struct sadb_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 275
    functionName: pfkey_read
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - recv
    - read
    - log_warn
    linkageType: ''
    returnType: int
    signature: int pfkey_read(int sd, struct sadb_msg *h)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pfkey_read
      Src: /src/frr/ldpd/pfkey.c:288,1
    - Dst: log_warn
      Src: /src/frr/ldpd/pfkey.c:298,1
    - Dst: reallocarray
      Src: /src/frr/ldpd/pfkey.c:302,1
    - Dst: log_warn
      Src: /src/frr/ldpd/pfkey.c:303,1
    - Dst: read
      Src: /src/frr/ldpd/pfkey.c:307,1
    - Dst: log_warn
      Src: /src/frr/ldpd/pfkey.c:308,1
    - Dst: explicit_bzero
      Src: /src/frr/ldpd/pfkey.c:309,1
    - Dst: free
      Src: /src/frr/ldpd/pfkey.c:310,1
    - Dst: explicit_bzero
      Src: /src/frr/ldpd/pfkey.c:316,1
    - Dst: free
      Src: /src/frr/ldpd/pfkey.c:317,1
    - Dst: ntohl
      Src: /src/frr/ldpd/pfkey.c:329,1
    - Dst: explicit_bzero
      Src: /src/frr/ldpd/pfkey.c:334,1
    - Dst: free
      Src: /src/frr/ldpd/pfkey.c:335,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 2
    argNames:
    - sd
    - spi
    argTypes:
    - int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 337
    functionName: pfkey_reply
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - read
    - explicit_bzero
    - ntohl
    - free
    - pfkey_read
    - log_warn
    - reallocarray
    linkageType: ''
    returnType: int
    signature: int pfkey_reply(int sd, uint32_t *spi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pfkey_send
      Src: /src/frr/ldpd/pfkey.c:343,1
    - Dst: pfkey_reply
      Src: /src/frr/ldpd/pfkey.c:346,1
    - Dst: pfkey_send
      Src: /src/frr/ldpd/pfkey.c:348,1
    - Dst: pfkey_reply
      Src: /src/frr/ldpd/pfkey.c:351,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 6
    argNames:
    - af
    - src
    - dst
    - keylen
    - key
    - spi
    argTypes:
    - int
    - union ldpd_addr*
    - union ldpd_addr*
    - uint8_t
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 339
    functionDepth: 3
    functionLinenumber: 339
    functionLinenumberEnd: 354
    functionName: pfkey_sa_add
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - pfkey_reply
    - pfkey_send
    linkageType: ''
    returnType: int
    signature: "int pfkey_sa_add(int af, union ldpd_addr *src, union ldpd_addr *dst,
      uint8_t keylen,\n    char *key, uint32_t *spi)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pfkey_send
      Src: /src/frr/ldpd/pfkey.c:360,1
    - Dst: pfkey_reply
      Src: /src/frr/ldpd/pfkey.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - af
    - src
    - dst
    - spi
    argTypes:
    - int
    - union ldpd_addr*
    - union ldpd_addr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 367
    functionName: pfkey_sa_remove
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - pfkey_reply
    - pfkey_send
    linkageType: ''
    returnType: int
    signature: "int pfkey_sa_remove(int af, union ldpd_addr *src, union ldpd_addr
      *dst,\n    uint32_t *spi)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sleep
      Src: /src/frr/ldpd/pfkey.c:372,1
    - Dst: pfkey_sa_add
      Src: /src/frr/ldpd/pfkey.c:375,1
    - Dst: pfkey_sa_add
      Src: /src/frr/ldpd/pfkey.c:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - nbr
    - nbrp
    argTypes:
    - struct nbr*
    - struct nbr_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 369
    functionDepth: 4
    functionLinenumber: 369
    functionLinenumberEnd: 387
    functionName: pfkey_md5sig_establish
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - pfkey_sa_add
    - sleep
    linkageType: ''
    returnType: int
    signature: int pfkey_md5sig_establish(struct nbr *nbr, struct nbr_params *nbrp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pfkey_sa_remove
      Src: /src/frr/ldpd/pfkey.c:393,1
    - Dst: pfkey_sa_remove
      Src: /src/frr/ldpd/pfkey.c:397,1
    - Dst: memset
      Src: /src/frr/ldpd/pfkey.c:405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 389
    functionDepth: 4
    functionLinenumber: 389
    functionLinenumberEnd: 408
    functionName: pfkey_md5sig_remove
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - pfkey_sa_remove
    - memset
    linkageType: ''
    returnType: int
    signature: int pfkey_md5sig_remove(struct nbr *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/pfkey.c:415,1
    - Dst: pfkey_md5sig_establish
      Src: /src/frr/ldpd/pfkey.c:417,1
    - Dst: assert
      Src: /src/frr/ldpd/pfkey.c:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - nbr
    - nbrp
    argTypes:
    - struct nbr*
    - struct nbr_params*
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 421
        line_start: 421
        source_file: /src/frr/ldpd/pfkey.c
    constantsTouched: []
    func_position:
      end: 423
      start: 410
    functionDepth: 5
    functionLinenumber: 410
    functionLinenumberEnd: 423
    functionName: pfkey_establish
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - pfkey_md5sig_establish
    - assert
    linkageType: ''
    returnType: int
    signature: int pfkey_establish(struct nbr *nbr, struct nbr_params *nbrp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pfkey_md5sig_remove
      Src: /src/frr/ldpd/pfkey.c:433,1
    - Dst: assert
      Src: /src/frr/ldpd/pfkey.c:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts:
    - condition: (!"Reached end of function where we are not expecting to")
      pos:
        line_end: 438
        line_start: 438
        source_file: /src/frr/ldpd/pfkey.c
    constantsTouched: []
    func_position:
      end: 440
      start: 425
    functionDepth: 5
    functionLinenumber: 425
    functionLinenumberEnd: 440
    functionName: pfkey_remove
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 1
    functionsReached:
    - pfkey_md5sig_remove
    - assert
    linkageType: ''
    returnType: int
    signature: int pfkey_remove(struct nbr *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/ldpd/pfkey.c:445,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/pfkey.c:448,1
    - Dst: fatal
      Src: /src/frr/ldpd/pfkey.c:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 455
    functionName: pfkey_init
    functionSourceFile: /src/frr/ldpd/pfkey.c
    functionUses: 0
    functionsReached:
    - socket
    - log_warnx
    - fatal
    linkageType: ''
    returnType: int
    signature: int pfkey_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/ldp_zebra.c:47,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_zebra.c:48,1
    - Dst: if_is_operative
      Src: /src/frr/ldpd/ldp_zebra.c:50,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_zebra.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ifp
    - kif
    argTypes:
    - struct interface*
    - struct kif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 53
    functionName: ifp2kif
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlcpy
    - if_is_operative
    - memset
    linkageType: ''
    returnType: void
    signature: void ifp2kif(struct interface *ifp, struct kif *kif)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/ldp_zebra.c:58,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_zebra.c:59,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - ifp
    - ifc
    - ka
    argTypes:
    - struct interface*
    - struct connected*
    - struct kaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 78
    functionName: ifc2kaddr
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - memset
    linkageType: ''
    returnType: void
    signature: void ifc2kaddr(struct interface *ifp, struct connected *ifc, struct
      kaddr *ka)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/ldp_zebra.c:83,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_zebra.c:84,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:91,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_zebra.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - pw
    - zpw
    argTypes:
    - struct l2vpn_pw*
    - struct zapi_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 97
    functionName: pw2zpw
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - CHECK_FLAG
    - memset
    linkageType: ''
    returnType: void
    signature: void pw2zpw(struct l2vpn_pw *pw, struct zapi_pw *zpw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_register_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:102,1
    - Dst: zclient_register_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:103,1
    - Dst: zclient_register_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 99
    functionDepth: 5
    functionLinenumber: 99
    functionLinenumberEnd: 105
    functionName: ldp_zebra_opaque_register
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_register_opaque
    linkageType: ''
    returnType: void
    signature: void ldp_zebra_opaque_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_unregister_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:110,1
    - Dst: zclient_unregister_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:111,1
    - Dst: zclient_unregister_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 107
    functionDepth: 5
    functionLinenumber: 107
    functionLinenumberEnd: 113
    functionName: ldp_zebra_opaque_unregister
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_unregister_opaque
    linkageType: ''
    returnType: void
    signature: void ldp_zebra_opaque_unregister(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct ldp_igp_sync_if_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 5
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: ldp_sync_zebra_send_state_update
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_send_opaque
    linkageType: ''
    returnType: int
    signature: int ldp_sync_zebra_send_state_update(struct ldp_igp_sync_if_state *state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 138
    functionName: ldp_sync_zebra_send_announce
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_opaque
    linkageType: ''
    returnType: int
    signature: int ldp_sync_zebra_send_announce(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_opaque
      Src: /src/frr/ldpd/ldp_zebra.c:144,1
    - Dst: log_warn
      Src: /src/frr/ldpd/ldp_zebra.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rlfa_labels
    argTypes:
    - struct zapi_rlfa_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 140
    functionDepth: 5
    functionLinenumber: 140
    functionLinenumberEnd: 153
    functionName: ldp_zebra_send_rlfa_labels
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - log_warn
    - zclient_send_opaque
    linkageType: ''
    returnType: int
    signature: int ldp_zebra_send_rlfa_labels(struct zapi_rlfa_response *rlfa_labels)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zclient_opaque_decode
      Src: /src/frr/ldpd/ldp_zebra.c:166,1
    - Dst: STREAM_GET
      Src: /src/frr/ldpd/ldp_zebra.c:171,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:172,1
    - Dst: STREAM_GET
      Src: /src/frr/ldpd/ldp_zebra.c:176,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:177,1
    - Dst: STREAM_GET
      Src: /src/frr/ldpd/ldp_zebra.c:180,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 189
    functionName: ldp_zebra_opaque_msg_handler
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - main_imsg_compose_both
    - main_imsg_compose_ldpe
    - zclient_opaque_decode
    - STREAM_GET
    linkageType: ''
    returnType: int
    signature: int ldp_zebra_opaque_msg_handler(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_sync_zebra_send_announce
      Src: /src/frr/ldpd/ldp_zebra.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 191
    functionDepth: 6
    functionLinenumber: 191
    functionLinenumberEnd: 195
    functionName: ldp_sync_zebra_init
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - ldp_sync_zebra_send_announce
    linkageType: ''
    returnType: void
    signature: void ldp_sync_zebra_init(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: debug_zebra_out
      Src: /src/frr/ldpd/ldp_zebra.c:206,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:207,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:208,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_zebra.c:209,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_zebra.c:209,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:217,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_zebra.c:227,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:241,1
    - Dst: zebra_send_mpls_labels
      Src: /src/frr/ldpd/ldp_zebra.c:273,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 2
    argNames:
    - cmd
    - kr
    argTypes:
    - int
    - struct kroute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 197
    functionDepth: 5
    functionLinenumber: 197
    functionLinenumberEnd: 277
    functionName: ldp_zebra_send_mpls_labels
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - fatalx
    - log_addr
    - CHECK_FLAG
    - SET_FLAG
    - zebra_send_mpls_labels
    - debug_zebra_out
    - log_label
    linkageType: ''
    returnType: int
    signature: int ldp_zebra_send_mpls_labels(int cmd, struct kroute *kr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_zebra_send_mpls_labels
      Src: /src/frr/ldpd/ldp_zebra.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kr
    argTypes:
    - struct kroute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 279
    functionDepth: 6
    functionLinenumber: 279
    functionLinenumberEnd: 283
    functionName: kr_change
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - ldp_zebra_send_mpls_labels
    linkageType: ''
    returnType: int
    signature: int kr_change(struct kroute *kr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_zebra_send_mpls_labels
      Src: /src/frr/ldpd/ldp_zebra.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kr
    argTypes:
    - struct kroute*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 285
    functionDepth: 6
    functionLinenumber: 285
    functionLinenumberEnd: 289
    functionName: kr_delete
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - ldp_zebra_send_mpls_labels
    linkageType: ''
    returnType: int
    signature: int kr_delete(struct kroute *kr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_zebra_out
      Src: /src/frr/ldpd/ldp_zebra.c:294,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:295,1
    - Dst: zebra_send_pw
      Src: /src/frr/ldpd/ldp_zebra.c:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zpw
    argTypes:
    - struct zapi_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 291
    functionDepth: 5
    functionLinenumber: 291
    functionLinenumberEnd: 298
    functionName: kmpw_add
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - zebra_send_pw
    - debug_zebra_out
    - log_addr
    linkageType: ''
    returnType: int
    signature: int kmpw_add(struct zapi_pw *zpw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_zebra_out
      Src: /src/frr/ldpd/ldp_zebra.c:303,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:304,1
    - Dst: zebra_send_pw
      Src: /src/frr/ldpd/ldp_zebra.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zpw
    argTypes:
    - struct zapi_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 5
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: kmpw_del
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - zebra_send_pw
    - debug_zebra_out
    - log_addr
    linkageType: ''
    returnType: int
    signature: int kmpw_del(struct zapi_pw *zpw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_zebra_out
      Src: /src/frr/ldpd/ldp_zebra.c:312,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:313,1
    - Dst: zebra_send_pw
      Src: /src/frr/ldpd/ldp_zebra.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zpw
    argTypes:
    - struct zapi_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 309
    functionDepth: 5
    functionLinenumber: 309
    functionLinenumberEnd: 317
    functionName: kmpw_set
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - zebra_send_pw
    - debug_zebra_out
    - log_addr
    linkageType: ''
    returnType: int
    signature: int kmpw_set(struct zapi_pw *zpw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_zebra_out
      Src: /src/frr/ldpd/ldp_zebra.c:322,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:323,1
    - Dst: zebra_send_pw
      Src: /src/frr/ldpd/ldp_zebra.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zpw
    argTypes:
    - struct zapi_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 319
    functionDepth: 5
    functionLinenumber: 319
    functionLinenumberEnd: 326
    functionName: kmpw_unset
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - zebra_send_pw
    - debug_zebra_out
    - log_addr
    linkageType: ''
    returnType: int
    signature: int kmpw_unset(struct zapi_pw *zpw)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ldpd/ldp_zebra.c:331,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_zebra.c:339,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:342,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:343,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ldpd/ldp_zebra.c:345,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:346,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:347,1
    - Dst: zebra_router_id_update_read
      Src: /src/frr/ldpd/ldp_zebra.c:357,1
    - Dst: if
      Src: /src/frr/ldpd/ldp_zebra.c:359,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_zebra.c:359,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:362,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:365,1
    - Dst: ldp_ifp_create
      Src: /src/frr/ldpd/ldp_zebra.c:372,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:376,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:379,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:380,1
    - Dst: ldp_ifp_destroy
      Src: /src/frr/ldpd/ldp_zebra.c:386,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:390,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:393,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:394,1
    - Dst: ldp_interface_status_change
      Src: /src/frr/ldpd/ldp_zebra.c:400,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:407,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:409,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:410,1
    - Dst: if_is_operative
      Src: /src/frr/ldpd/ldp_zebra.c:412,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ldpd/ldp_zebra.c:413,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:414,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:415,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ldpd/ldp_zebra.c:418,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:419,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:420,1
    - Dst: ldp_ifp_up
      Src: /src/frr/ldpd/ldp_zebra.c:427,1
    - Dst: ldp_interface_status_change
      Src: /src/frr/ldpd/ldp_zebra.c:429,1
    - Dst: ldp_ifp_down
      Src: /src/frr/ldpd/ldp_zebra.c:432,1
    - Dst: ldp_interface_status_change
      Src: /src/frr/ldpd/ldp_zebra.c:434,1
    - Dst: ldp_interface_address_add
      Src: /src/frr/ldpd/ldp_zebra.c:438,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ldpd/ldp_zebra.c:444,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:446,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:449,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_zebra.c:452,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:453,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:455,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:456,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:459,1
    - Dst: ldp_interface_address_delete
      Src: /src/frr/ldpd/ldp_zebra.c:465,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ldpd/ldp_zebra.c:471,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:473,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:476,1
    - Dst: connected_free
      Src: /src/frr/ldpd/ldp_zebra.c:477,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_zebra.c:480,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:481,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:483,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:484,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:487,1
    - Dst: ldp_zebra_read_route
      Src: /src/frr/ldpd/ldp_zebra.c:493,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:504,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_zebra.c:507,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:525,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_zebra.c:534,1
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/ldp_zebra.c:535,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:542,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:543,1
    - Dst: zebra_route_string
      Src: /src/frr/ldpd/ldp_zebra.c:544,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:575,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:582,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:583,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:584,1
    - Dst: zebra_route_string
      Src: /src/frr/ldpd/ldp_zebra.c:585,1
    - Dst: main_imsg_compose_lde
      Src: /src/frr/ldpd/ldp_zebra.c:588,1
    - Dst: main_imsg_compose_lde
      Src: /src/frr/ldpd/ldp_zebra.c:591,1
    - Dst: zebra_read_pw_status_update
      Src: /src/frr/ldpd/ldp_zebra.c:604,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:606,1
    - Dst: main_imsg_compose_lde
      Src: /src/frr/ldpd/ldp_zebra.c:610,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldp_zebra.c:620,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ldpd/ldp_zebra.c:624,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:625,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:627,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/ldpd/ldp_zebra.c:631,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:632,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:635,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:649,1
    - Dst: ldp_zebra_regdereg_zebra_info
      Src: /src/frr/ldpd/ldp_zebra.c:650,1
    - Dst: ldp_zebra_opaque_register
      Src: /src/frr/ldpd/ldp_zebra.c:652,1
    - Dst: ldp_sync_zebra_init
      Src: /src/frr/ldpd/ldp_zebra.c:654,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_zebra.c:663,1
    - Dst: debug_evt
      Src: /src/frr/ldpd/ldp_zebra.c:664,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:666,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/ldpd/ldp_zebra.c:684,1
    - Dst: zclient_new
      Src: /src/frr/ldpd/ldp_zebra.c:687,1
    - Dst: array_size
      Src: /src/frr/ldpd/ldp_zebra.c:688,1
    - Dst: zclient_init
      Src: /src/frr/ldpd/ldp_zebra.c:689,1
    - Dst: access_list_add_hook
      Src: /src/frr/ldpd/ldp_zebra.c:695,1
    - Dst: access_list_delete_hook
      Src: /src/frr/ldpd/ldp_zebra.c:696,1
    - Dst: ldp_zebra_opaque_unregister
      Src: /src/frr/ldpd/ldp_zebra.c:702,1
    - Dst: zclient_stop
      Src: /src/frr/ldpd/ldp_zebra.c:703,1
    - Dst: zclient_free
      Src: /src/frr/ldpd/ldp_zebra.c:704,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 123
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 328
    functionDepth: 7
    functionLinenumber: 328
    functionLinenumberEnd: 706
    functionName: kif_redistribute
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 2
    functionsReached:
    - main_imsg_compose_ldpe
    - ldp_zebra_opaque_unregister
    - debug_evt
    - bad_addr_v4
    - connected_free
    - ldp_zebra_regdereg_zebra_info
    - ldp_ifp_down
    - ifp2kif
    - ldp_interface_address_delete
    - ldp_interface_address_add
    - ldp_sync_zebra_init
    - zclient_stop
    - ldp_zebra_read_route
    - memset
    - ldp_ifp_destroy
    - IN6_IS_SCOPE_EMBED
    - ALL_LIST_ELEMENTS_RO
    - return
    - main_imsg_compose_lde
    - ifc2kaddr
    - zclient_send_reg_requests
    - array_size
    - vrf_lookup_by_id
    - if
    - zclient_init
    - zebra_read_pw_status_update
    - log_debug
    - ldp_zebra_opaque_register
    - zclient_send_dereg_requests
    - zebra_interface_address_read
    - zebra_router_id_update_read
    - log_addr
    - strlcpy
    - debug_zebra_in
    - ldp_ifp_create
    - bad_addr
    - zebra_route_string
    - access_list_delete_hook
    - if_zapi_callbacks
    - zclient_new
    - zebra_redistribute_send
    - CHECK_FLAG
    - strcmp
    - zclient_free
    - main_imsg_compose_both
    - SET_FLAG
    - access_list_add_hook
    - ldp_ifp_up
    - ldp_interface_status_change
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void kif_redistribute(const char *ifname)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_zebra.c:339,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:342,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:343,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ldpd/ldp_zebra.c:345,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:346,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:347,1
    - Dst: zebra_router_id_update_read
      Src: /src/frr/ldpd/ldp_zebra.c:357,1
    - Dst: if
      Src: /src/frr/ldpd/ldp_zebra.c:359,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_zebra.c:359,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:362,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:365,1
    - Dst: ldp_ifp_create
      Src: /src/frr/ldpd/ldp_zebra.c:372,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:376,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:379,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:380,1
    - Dst: ldp_ifp_destroy
      Src: /src/frr/ldpd/ldp_zebra.c:386,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:390,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:393,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:394,1
    - Dst: ldp_interface_status_change
      Src: /src/frr/ldpd/ldp_zebra.c:400,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:407,1
    - Dst: ifp2kif
      Src: /src/frr/ldpd/ldp_zebra.c:409,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:410,1
    - Dst: if_is_operative
      Src: /src/frr/ldpd/ldp_zebra.c:412,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ldpd/ldp_zebra.c:413,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:414,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:415,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ldpd/ldp_zebra.c:418,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:419,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:420,1
    - Dst: ldp_ifp_up
      Src: /src/frr/ldpd/ldp_zebra.c:427,1
    - Dst: ldp_interface_status_change
      Src: /src/frr/ldpd/ldp_zebra.c:429,1
    - Dst: ldp_ifp_down
      Src: /src/frr/ldpd/ldp_zebra.c:432,1
    - Dst: ldp_interface_status_change
      Src: /src/frr/ldpd/ldp_zebra.c:434,1
    - Dst: ldp_interface_address_add
      Src: /src/frr/ldpd/ldp_zebra.c:438,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ldpd/ldp_zebra.c:444,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:446,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:449,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_zebra.c:452,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:453,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:455,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:456,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:459,1
    - Dst: ldp_interface_address_delete
      Src: /src/frr/ldpd/ldp_zebra.c:465,1
    - Dst: zebra_interface_address_read
      Src: /src/frr/ldpd/ldp_zebra.c:471,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:473,1
    - Dst: ifc2kaddr
      Src: /src/frr/ldpd/ldp_zebra.c:476,1
    - Dst: connected_free
      Src: /src/frr/ldpd/ldp_zebra.c:477,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_zebra.c:480,1
    - Dst: return
      Src: /src/frr/ldpd/ldp_zebra.c:481,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:483,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:484,1
    - Dst: main_imsg_compose_ldpe
      Src: /src/frr/ldpd/ldp_zebra.c:487,1
    - Dst: ldp_zebra_read_route
      Src: /src/frr/ldpd/ldp_zebra.c:493,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:504,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_zebra.c:507,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:525,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_zebra.c:534,1
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/ldp_zebra.c:535,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:542,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:543,1
    - Dst: zebra_route_string
      Src: /src/frr/ldpd/ldp_zebra.c:544,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:575,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:582,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:583,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_zebra.c:584,1
    - Dst: zebra_route_string
      Src: /src/frr/ldpd/ldp_zebra.c:585,1
    - Dst: main_imsg_compose_lde
      Src: /src/frr/ldpd/ldp_zebra.c:588,1
    - Dst: main_imsg_compose_lde
      Src: /src/frr/ldpd/ldp_zebra.c:591,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 338
    functionDepth: 5
    functionLinenumber: 338
    functionLinenumberEnd: 594
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 37
    functionsReached:
    - main_imsg_compose_ldpe
    - bad_addr_v4
    - connected_free
    - ldp_ifp_down
    - ifp2kif
    - ldp_interface_address_delete
    - ldp_interface_address_add
    - ldp_zebra_read_route
    - memset
    - ldp_ifp_destroy
    - IN6_IS_SCOPE_EMBED
    - ALL_LIST_ELEMENTS_RO
    - return
    - main_imsg_compose_lde
    - ifc2kaddr
    - if
    - zebra_interface_address_read
    - zebra_router_id_update_read
    - log_addr
    - debug_zebra_in
    - ldp_ifp_create
    - bad_addr
    - zebra_route_string
    - CHECK_FLAG
    - strcmp
    - main_imsg_compose_both
    - SET_FLAG
    - ldp_ifp_up
    - ldp_interface_status_change
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_read_pw_status_update
      Src: /src/frr/ldpd/ldp_zebra.c:604,1
    - Dst: debug_zebra_in
      Src: /src/frr/ldpd/ldp_zebra.c:606,1
    - Dst: main_imsg_compose_lde
      Src: /src/frr/ldpd/ldp_zebra.c:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 599
    functionDepth: 3
    functionLinenumber: 599
    functionLinenumberEnd: 613
    functionName: ldp_zebra_read_pw_status_update
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_read_pw_status_update
    - debug_zebra_in
    - main_imsg_compose_lde
    linkageType: ''
    returnType: int
    signature: int ldp_zebra_read_pw_status_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/ldp_zebra.c:620,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ldpd/ldp_zebra.c:624,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:625,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:627,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/ldpd/ldp_zebra.c:631,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:632,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ldpd/ldp_zebra.c:635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - want_register
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 615
    functionDepth: 5
    functionLinenumber: 615
    functionLinenumberEnd: 640
    functionName: ldp_zebra_regdereg_zebra_info
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - zebra_redistribute_send
    - zclient_send_dereg_requests
    - zclient_send_reg_requests
    - log_debug
    linkageType: ''
    returnType: void
    signature: void ldp_zebra_regdereg_zebra_info(bool want_register)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_zebra.c:649,1
    - Dst: ldp_zebra_regdereg_zebra_info
      Src: /src/frr/ldpd/ldp_zebra.c:650,1
    - Dst: ldp_zebra_opaque_register
      Src: /src/frr/ldpd/ldp_zebra.c:652,1
    - Dst: ldp_sync_zebra_init
      Src: /src/frr/ldpd/ldp_zebra.c:654,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 642
    functionDepth: 7
    functionLinenumber: 642
    functionLinenumberEnd: 655
    functionName: ldp_zebra_connected
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - ldp_zebra_opaque_register
    - CHECK_FLAG
    - ldp_sync_zebra_init
    - ldp_zebra_regdereg_zebra_info
    linkageType: ''
    returnType: void
    signature: void ldp_zebra_connected(struct zclient *zclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_zebra.c:663,1
    - Dst: debug_evt
      Src: /src/frr/ldpd/ldp_zebra.c:664,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_zebra.c:666,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - access
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 657
    functionDepth: 2
    functionLinenumber: 657
    functionLinenumberEnd: 668
    functionName: ldp_zebra_filter_update
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 0
    functionsReached:
    - main_imsg_compose_both
    - strlcpy
    - debug_evt
    linkageType: ''
    returnType: void
    signature: void ldp_zebra_filter_update(struct access_list *access)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_zapi_callbacks
      Src: /src/frr/ldpd/ldp_zebra.c:684,1
    - Dst: zclient_new
      Src: /src/frr/ldpd/ldp_zebra.c:687,1
    - Dst: array_size
      Src: /src/frr/ldpd/ldp_zebra.c:688,1
    - Dst: zclient_init
      Src: /src/frr/ldpd/ldp_zebra.c:689,1
    - Dst: access_list_add_hook
      Src: /src/frr/ldpd/ldp_zebra.c:695,1
    - Dst: access_list_delete_hook
      Src: /src/frr/ldpd/ldp_zebra.c:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - master
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 682
    functionDepth: 3
    functionLinenumber: 682
    functionLinenumberEnd: 697
    functionName: ldp_zebra_init
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - if_zapi_callbacks
    - zclient_new
    - array_size
    - access_list_add_hook
    - zclient_init
    - access_list_delete_hook
    linkageType: ''
    returnType: void
    signature: void ldp_zebra_init(struct event_loop *master)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_zebra_opaque_unregister
      Src: /src/frr/ldpd/ldp_zebra.c:702,1
    - Dst: zclient_stop
      Src: /src/frr/ldpd/ldp_zebra.c:703,1
    - Dst: zclient_free
      Src: /src/frr/ldpd/ldp_zebra.c:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 699
    functionDepth: 6
    functionLinenumber: 699
    functionLinenumberEnd: 706
    functionName: ldp_zebra_destroy
    functionSourceFile: /src/frr/ldpd/ldp_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_free
    - zclient_stop
    - ldp_zebra_opaque_unregister
    linkageType: ''
    returnType: void
    signature: void ldp_zebra_destroy(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LIST_INIT
      Src: /src/frr/ldpd/accept.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: accept_init
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 1
    functionsReached:
    - LIST_INIT
    linkageType: ''
    returnType: void
    signature: void accept_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/accept.c:42,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/ldpd/accept.c:47,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/accept.c:49,1
    - Dst: log_debug
      Src: /src/frr/ldpd/accept.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - fd
    - arg
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: accept_add
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - LIST_INSERT_HEAD
    - calloc
    - log_debug
    linkageType: ''
    returnType: int
    signature: int accept_add(int fd, void (*cb)(struct event *), void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/accept.c:61,1
    - Dst: log_debug
      Src: /src/frr/ldpd/accept.c:63,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/accept.c:64,1
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/accept.c:65,1
    - Dst: free
      Src: /src/frr/ldpd/accept.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: accept_del
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - free
    - EVENT_OFF
    - LIST_REMOVE
    - log_debug
    linkageType: ''
    returnType: void
    signature: void accept_del(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/accept.c:74,1
    - Dst: accept_unarm
      Src: /src/frr/ldpd/accept.c:75,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/accept.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: accept_pause
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - accept_unarm
    - log_debug
    linkageType: ''
    returnType: void
    signature: void accept_pause(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/accept.c:83,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/accept.c:84,1
    - Dst: accept_arm
      Src: /src/frr/ldpd/accept.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 87
    functionName: accept_unpause
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 1
    functionsReached:
    - accept_arm
    - EVENT_OFF
    - log_debug
    linkageType: ''
    returnType: void
    signature: void accept_unpause(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/accept.c:93,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/accept.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 96
    functionName: accept_arm
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 1
    functionsReached:
    - event_add_read
    - LIST_FOREACH
    linkageType: ''
    returnType: void
    signature: void accept_arm(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/accept.c:102,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/accept.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 104
    functionName: accept_unarm
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 1
    functionsReached:
    - LIST_FOREACH
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void accept_unarm(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/accept.c:108,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/accept.c:109,1
    - Dst: struct accept_ev*::accept_cb
      Src: /src/frr/ldpd/accept.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: accept_cb
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 1
    functionsReached:
    - event_add_read
    - struct accept_ev*::accept_cb
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void accept_cb(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/accept.c:117,1
    - Dst: accept_arm
      Src: /src/frr/ldpd/accept.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: accept_timeout
    functionSourceFile: /src/frr/ldpd/accept.c
    functionUses: 0
    functionsReached:
    - accept_arm
    - log_debug
    linkageType: ''
    returnType: void
    signature: void accept_timeout(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmp_name_func
      Src: /src/frr/ldpd/interface.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct iface*
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: iface_compare
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - if_cmp_name_func
    linkageType: ''
    returnType: int
    signature: int iface_compare(const struct iface *a, const struct iface *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/interface.c:57,1
    - Dst: fatal
      Src: /src/frr/ldpd/interface.c:58,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/interface.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 73
    functionName: if_new
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 4
    functionsReached:
    - fatal
    - strlcpy
    - calloc
    linkageType: ''
    returnType: struct iface
    signature: 'struct iface *

      if_new(const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:78,1
    - Dst: LIST_INIT
      Src: /src/frr/ldpd/interface.c:80,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/interface.c:85,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/interface.c:90,1
    - Dst: ldp_sync_fsm_init
      Src: /src/frr/ldpd/interface.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 94
    functionName: ldpe_if_init
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - ldp_sync_fsm_init
    - RB_INIT
    - LIST_INIT
    - log_debug
    linkageType: ''
    returnType: void
    signature: void ldpe_if_init(struct iface *iface)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:101,1
    - Dst: ldp_sync_fsm
      Src: /src/frr/ldpd/interface.c:103,1
    - Dst: if_reset
      Src: /src/frr/ldpd/interface.c:106,1
    - Dst: if_reset
      Src: /src/frr/ldpd/interface.c:108,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/interface.c:110,1
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/interface.c:111,1
    - Dst: assert
      Src: /src/frr/ldpd/interface.c:112,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/interface.c:112,1
    - Dst: free
      Src: /src/frr/ldpd/interface.c:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts:
    - condition: (if_addr != LIST_FIRST(&iface->addr_list))
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/frr/ldpd/interface.c
    constantsTouched: []
    func_position:
      end: 115
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 115
    functionName: ldpe_if_exit
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - log_debug
    - if_reset
    - free
    - LIST_REMOVE
    - ldp_sync_fsm
    - assert
    - LIST_FIRST
    linkageType: ''
    returnType: void
    signature: void ldpe_if_exit(struct iface *iface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - xconf
    - ifindex
    argTypes:
    - struct ldpd_conf*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 127
    functionName: if_lookup
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 15
    functionsReached:
    - RB_FOREACH
    linkageType: ''
    returnType: struct iface
    signature: 'struct iface *

      if_lookup(struct ldpd_conf *xconf, ifindex_t ifindex)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/interface.c:133,1
    - Dst: RB_FIND
      Src: /src/frr/ldpd/interface.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xconf
    - ifname
    argTypes:
    - struct ldpd_conf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 135
    functionName: if_lookup_name
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    - strlcpy
    linkageType: ''
    returnType: struct iface
    signature: 'struct iface *

      if_lookup_name(struct ldpd_conf *xconf, const char *ifname)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/interface.c:141,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/interface.c:143,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/interface.c:144,1
    - Dst: ldp_sync_fsm
      Src: /src/frr/ldpd/interface.c:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - iface
    - kif
    argTypes:
    - struct iface*
    - struct kif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 153
    functionName: if_update_info
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ldp_sync_fsm
    linkageType: ''
    returnType: void
    signature: void if_update_info(struct iface *iface, struct kif *kif)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/interface.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - iface
    - af
    argTypes:
    - struct iface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 166
    functionName: iface_af_get
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 2
    functionsReached:
    - fatalx
    linkageType: ''
    returnType: struct iface_af
    signature: 'struct iface_af *

      iface_af_get(struct iface *iface, int af)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/interface.c:173,1
    - Dst: fatal
      Src: /src/frr/ldpd/interface.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ka
    argTypes:
    - struct kaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 182
    functionName: if_addr_new
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - fatal
    - calloc
    linkageType: ''
    returnType: struct if_addr
    signature: 'struct if_addr *

      if_addr_new(struct kaddr *ka)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/interface.c:190,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/interface.c:191,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/interface.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - addr_list
    - ka
    argTypes:
    - struct if_addr_head*
    - struct kaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 197
    functionName: if_addr_lookup
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - ldp_addrcmp
    linkageType: ''
    returnType: struct if_addr
    signature: 'struct if_addr *

      if_addr_lookup(struct if_addr_head *addr_list, struct kaddr *ka)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: if_addr_lookup
      Src: /src/frr/ldpd/interface.c:206,1
    - Dst: if_addr_new
      Src: /src/frr/ldpd/interface.c:207,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/ldpd/interface.c:209,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:210,1
    - Dst: send_address_single
      Src: /src/frr/ldpd/interface.c:218,1
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/interface.c:222,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ldpd/interface.c:224,1
    - Dst: if_addr_lookup
      Src: /src/frr/ldpd/interface.c:227,1
    - Dst: if_addr_new
      Src: /src/frr/ldpd/interface.c:228,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/ldpd/interface.c:229,1
    - Dst: ldp_if_update
      Src: /src/frr/ldpd/interface.c:230,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 1
    argNames:
    - ka
    argTypes:
    - struct kaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 233
    functionName: if_addr_add
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - if_addr_lookup
    - IN6_IS_ADDR_LINKLOCAL
    - LIST_INSERT_HEAD
    - if_addr_new
    - ldp_if_update
    - send_address_single
    - RB_FOREACH
    - if_lookup_name
    linkageType: ''
    returnType: void
    signature: void if_addr_add(struct kaddr *ka)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/interface.c:242,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/frr/ldpd/interface.c:245,1
    - Dst: memset
      Src: /src/frr/ldpd/interface.c:246,1
    - Dst: if_addr_lookup
      Src: /src/frr/ldpd/interface.c:248,1
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/interface.c:250,1
    - Dst: ldp_if_update
      Src: /src/frr/ldpd/interface.c:251,1
    - Dst: free
      Src: /src/frr/ldpd/interface.c:252,1
    - Dst: if_addr_lookup
      Src: /src/frr/ldpd/interface.c:256,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:258,1
    - Dst: send_address_single
      Src: /src/frr/ldpd/interface.c:265,1
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/interface.c:267,1
    - Dst: free
      Src: /src/frr/ldpd/interface.c:268,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 1
    argNames:
    - ka
    argTypes:
    - struct kaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 270
    functionName: if_addr_del
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - if_addr_lookup
    - memset
    - free
    - RB_FOREACH
    - IN6_ARE_ADDR_EQUAL
    - ldp_if_update
    - send_address_single
    - LIST_REMOVE
    - if_lookup_name
    linkageType: ''
    returnType: void
    signature: void if_addr_del(struct kaddr *ka)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:278,1
    - Dst: af_name
      Src: /src/frr/ldpd/interface.c:278,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/interface.c:280,1
    - Dst: gettimeofday
      Src: /src/frr/ldpd/interface.c:282,1
    - Dst: if_join_ipv4_group
      Src: /src/frr/ldpd/interface.c:287,1
    - Dst: if_join_ipv6_group
      Src: /src/frr/ldpd/interface.c:291,1
    - Dst: fatalx
      Src: /src/frr/ldpd/interface.c:295,1
    - Dst: send_hello
      Src: /src/frr/ldpd/interface.c:298,1
    - Dst: if_start_hello_timer
      Src: /src/frr/ldpd/interface.c:299,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - iface
    - af
    argTypes:
    - struct iface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 303
    functionName: if_start
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 6
    functionsReached:
    - af_name
    - fatalx
    - send_hello
    - if_join_ipv6_group
    - if_join_ipv4_group
    - if_start_hello_timer
    - gettimeofday
    - iface_af_get
    - log_debug
    linkageType: ''
    returnType: int
    signature: int if_start(struct iface *iface, int af)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:311,1
    - Dst: af_name
      Src: /src/frr/ldpd/interface.c:312,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/interface.c:314,1
    - Dst: if_stop_hello_timer
      Src: /src/frr/ldpd/interface.c:315,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/interface.c:317,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/interface.c:318,1
    - Dst: adj_del
      Src: /src/frr/ldpd/interface.c:320,1
    - Dst: if_leave_ipv4_group
      Src: /src/frr/ldpd/interface.c:327,1
    - Dst: if_leave_ipv6_group
      Src: /src/frr/ldpd/interface.c:331,1
    - Dst: fatalx
      Src: /src/frr/ldpd/interface.c:334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - iface
    - af
    argTypes:
    - struct iface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 340
    functionName: if_reset
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 7
    functionsReached:
    - af_name
    - fatalx
    - if_stop_hello_timer
    - adj_del
    - if_leave_ipv4_group
    - if_leave_ipv6_group
    - iface_af_get
    - RB_EMPTY
    - RB_ROOT
    - log_debug
    linkageType: ''
    returnType: int
    signature: int if_reset(struct iface *iface, int af)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/interface.c:354,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ldpd/interface.c:363,1
    - Dst: fatalx
      Src: /src/frr/ldpd/interface.c:367,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/interface.c:370,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/interface.c:375,1
    - Dst: if_start
      Src: /src/frr/ldpd/interface.c:385,1
    - Dst: if_reset
      Src: /src/frr/ldpd/interface.c:391,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 33
    argCount: 1
    argNames:
    - ia
    argTypes:
    - struct iface_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 342
    functionDepth: 3
    functionLinenumber: 342
    functionLinenumberEnd: 393
    functionName: if_update_af
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - fatalx
    - if_reset
    - IN6_IS_ADDR_LINKLOCAL
    - ldp_rtr_id_get
    - if_start
    - ldp_af_global_get
    linkageType: ''
    returnType: void
    signature: void if_update_af(struct iface_af *ia)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_update_af
      Src: /src/frr/ldpd/interface.c:399,1
    - Dst: if_update_af
      Src: /src/frr/ldpd/interface.c:401,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 2
    argNames:
    - iface
    - af
    argTypes:
    - struct iface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 395
    functionDepth: 4
    functionLinenumber: 395
    functionLinenumberEnd: 402
    functionName: ldp_if_update
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 3
    functionsReached:
    - if_update_af
    linkageType: ''
    returnType: void
    signature: void ldp_if_update(struct iface *iface, int af)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:409,1
    - Dst: ldp_if_update
      Src: /src/frr/ldpd/interface.c:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 404
    functionDepth: 5
    functionLinenumber: 404
    functionLinenumberEnd: 411
    functionName: if_update_all
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - ldp_if_update
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void if_update_all(int af)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/interface.c:419,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/interface.c:420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ia
    argTypes:
    - struct iface_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 413
    functionDepth: 2
    functionLinenumber: 413
    functionLinenumberEnd: 423
    functionName: if_get_hello_holdtime
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t if_get_hello_holdtime(struct iface_af *ia)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/interface.c:431,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/interface.c:432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ia
    argTypes:
    - struct iface_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 425
    functionDepth: 2
    functionLinenumber: 425
    functionLinenumberEnd: 435
    functionName: if_get_hello_interval
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t if_get_hello_interval(struct iface_af *ia)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 441
    functionName: if_get_wait_for_sync_interval
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t if_get_wait_for_sync_interval(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/interface.c:447,1
    - Dst: send_hello
      Src: /src/frr/ldpd/interface.c:450,1
    - Dst: if_start_hello_timer
      Src: /src/frr/ldpd/interface.c:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 452
    functionName: if_hello_timer
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - if_start_hello_timer
    - send_hello
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void if_hello_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/interface.c:457,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/interface.c:458,1
    - Dst: if_get_hello_interval
      Src: /src/frr/ldpd/interface.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ia
    argTypes:
    - struct iface_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 454
    functionDepth: 3
    functionLinenumber: 454
    functionLinenumberEnd: 460
    functionName: if_start_hello_timer
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    - if_get_hello_interval
    linkageType: ''
    returnType: void
    signature: void if_start_hello_timer(struct iface_af *ia)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/interface.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ia
    argTypes:
    - struct iface_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 466
    functionName: if_stop_hello_timer
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void if_stop_hello_timer(struct iface_af *ia)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/interface.c:476,1
    - Dst: if_get_hello_holdtime
      Src: /src/frr/ldpd/interface.c:480,1
    - Dst: if_get_hello_interval
      Src: /src/frr/ldpd/interface.c:481,1
    - Dst: gettimeofday
      Src: /src/frr/ldpd/interface.c:483,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ia
    argTypes:
    - struct iface_af*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 468
    functionDepth: 3
    functionLinenumber: 468
    functionLinenumberEnd: 495
    functionName: if_to_ctl
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    - if_get_hello_holdtime
    - RB_FOREACH
    - if_get_hello_interval
    - memcpy
    linkageType: ''
    returnType: struct ctl_iface
    signature: 'struct ctl_iface *

      if_to_ctl(struct iface_af *ia)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: iface_af_get
      Src: /src/frr/ldpd/interface.c:504,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:505,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/interface.c:513,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:514,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - iface
    - peer_ldp_id
    argTypes:
    - struct iface*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 497
    functionDepth: 2
    functionLinenumber: 497
    functionLinenumberEnd: 520
    functionName: ldp_sync_get_peer_ldp_id
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - iface_af_get
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void ldp_sync_get_peer_ldp_id(struct iface *iface, struct in_addr *peer_ldp_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/interface.c:527,1
    - Dst: if_get_wait_for_sync_interval
      Src: /src/frr/ldpd/interface.c:530,1
    - Dst: event_timer_remain_second
      Src: /src/frr/ldpd/interface.c:534,1
    - Dst: memset
      Src: /src/frr/ldpd/interface.c:536,1
    - Dst: ldp_sync_get_peer_ldp_id
      Src: /src/frr/ldpd/interface.c:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 541
    functionName: ldp_sync_to_ctl
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - if_get_wait_for_sync_interval
    - memset
    - event_timer_remain_second
    - memcpy
    - ldp_sync_get_peer_ldp_id
    linkageType: ''
    returnType: struct ctl_ldp_sync
    signature: 'struct ctl_ldp_sync *

      ldp_sync_to_ctl(struct iface *iface)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/interface.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 554
    functionName: if_get_ipv4_addr
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - LIST_FOREACH
    linkageType: ''
    returnType: in_addr_t
    signature: in_addr_t if_get_ipv4_addr(struct iface *iface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:561,1
    - Dst: if_get_ipv4_addr
      Src: /src/frr/ldpd/interface.c:563,1
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ldpd/interface.c:565,1
    - Dst: log_warn
      Src: /src/frr/ldpd/interface.c:567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - iface
    - addr
    argTypes:
    - struct iface*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 556
    functionDepth: 2
    functionLinenumber: 556
    functionLinenumberEnd: 572
    functionName: if_join_ipv4_group
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - if_get_ipv4_addr
    - log_warn
    - setsockopt_ipv4_multicast
    - log_debug
    linkageType: ''
    returnType: int
    signature: int if_join_ipv4_group(struct iface *iface, struct in_addr *addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:579,1
    - Dst: if_get_ipv4_addr
      Src: /src/frr/ldpd/interface.c:581,1
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/ldpd/interface.c:583,1
    - Dst: log_warn
      Src: /src/frr/ldpd/interface.c:585,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - iface
    - addr
    argTypes:
    - struct iface*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 574
    functionDepth: 2
    functionLinenumber: 574
    functionLinenumberEnd: 590
    functionName: if_leave_ipv4_group
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - if_get_ipv4_addr
    - log_warn
    - setsockopt_ipv4_multicast
    - log_debug
    linkageType: ''
    returnType: int
    signature: int if_leave_ipv4_group(struct iface *iface, struct in_addr *addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:597,1
    - Dst: log_in6addr
      Src: /src/frr/ldpd/interface.c:598,1
    - Dst: setsockopt
      Src: /src/frr/ldpd/interface.c:603,1
    - Dst: log_warn
      Src: /src/frr/ldpd/interface.c:605,1
    - Dst: log_in6addr
      Src: /src/frr/ldpd/interface.c:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - iface
    - addr
    argTypes:
    - struct iface*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 592
    functionDepth: 1
    functionLinenumber: 592
    functionLinenumberEnd: 611
    functionName: if_join_ipv6_group
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - log_in6addr
    - setsockopt
    - log_warn
    - log_debug
    linkageType: ''
    returnType: int
    signature: int if_join_ipv6_group(struct iface *iface, struct in6_addr *addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/interface.c:618,1
    - Dst: log_in6addr
      Src: /src/frr/ldpd/interface.c:619,1
    - Dst: setsockopt
      Src: /src/frr/ldpd/interface.c:624,1
    - Dst: log_warn
      Src: /src/frr/ldpd/interface.c:626,1
    - Dst: log_in6addr
      Src: /src/frr/ldpd/interface.c:627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - iface
    - addr
    argTypes:
    - struct iface*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 632
    functionName: if_leave_ipv6_group
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - log_in6addr
    - setsockopt
    - log_warn
    - log_debug
    linkageType: ''
    returnType: int
    signature: int if_leave_ipv6_group(struct iface *iface, struct in6_addr *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 683
    functionDepth: 0
    functionLinenumber: 683
    functionLinenumberEnd: 694
    functionName: ldp_sync_state_name
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      ldp_sync_state_name(int state)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:699,1
    - Dst: ldpe_imsg_compose_parent
      Src: /src/frr/ldpd/interface.c:707,1
    - Dst: getpid
      Src: /src/frr/ldpd/interface.c:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - name
    - ifindex
    - sync_start
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 709
    functionName: send_ldp_sync_state_update
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - ldpe_imsg_compose_parent
    - getpid
    - debug_evt_ldp_sync
    linkageType: ''
    returnType: int
    signature: int send_ldp_sync_state_update(char *name, int ifindex, int sync_start)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_ldp_sync_state_update
      Src: /src/frr/ldpd/interface.c:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 711
    functionDepth: 2
    functionLinenumber: 711
    functionLinenumberEnd: 717
    functionName: ldp_sync_act_iface_start_sync
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - send_ldp_sync_state_update
    linkageType: ''
    returnType: int
    signature: int ldp_sync_act_iface_start_sync(struct iface *iface)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/interface.c:721,1
    - Dst: ldp_sync_fsm
      Src: /src/frr/ldpd/interface.c:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 724
    functionName: iface_wait_for_ldp_sync_timer
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - ldp_sync_fsm
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void iface_wait_for_ldp_sync_timer(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/interface.c:731,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/interface.c:732,1
    - Dst: if_get_wait_for_sync_interval
      Src: /src/frr/ldpd/interface.c:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 735
    functionName: start_wait_for_ldp_sync_timer
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - if_get_wait_for_sync_interval
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void start_wait_for_ldp_sync_timer(struct iface *iface)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/interface.c:739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 740
    functionName: stop_wait_for_ldp_sync_timer
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void stop_wait_for_ldp_sync_timer(struct iface *iface)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: start_wait_for_ldp_sync_timer
      Src: /src/frr/ldpd/interface.c:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 742
    functionDepth: 2
    functionLinenumber: 742
    functionLinenumberEnd: 748
    functionName: ldp_sync_act_ldp_start_sync
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - start_wait_for_ldp_sync_timer
    linkageType: ''
    returnType: int
    signature: int ldp_sync_act_ldp_start_sync(struct iface *iface)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_ldp_sync_state_update
      Src: /src/frr/ldpd/interface.c:753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - iface
    argTypes:
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 750
    functionDepth: 2
    functionLinenumber: 750
    functionLinenumberEnd: 756
    functionName: ldp_sync_act_ldp_complete_sync
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - send_ldp_sync_state_update
    linkageType: ''
    returnType: int
    signature: int ldp_sync_act_ldp_complete_sync(struct iface *iface)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:764,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:770,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - iface
    - type
    argTypes:
    - struct iface*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 777
    functionName: iface_to_oper_nbr_count
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int iface_to_oper_nbr_count(struct iface *iface, unsigned int type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: iface_to_oper_nbr_count
      Src: /src/frr/ldpd/interface.c:798,1
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:803,1
    - Dst: log_addr
      Src: /src/frr/ldpd/interface.c:810,1
    - Dst: adj_get_af
      Src: /src/frr/ldpd/interface.c:810,1
    - Dst: log_addr
      Src: /src/frr/ldpd/interface.c:811,1
    - Dst: adj_get_af
      Src: /src/frr/ldpd/interface.c:811,1
    - Dst: ldp_sync_fsm
      Src: /src/frr/ldpd/interface.c:813,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - adj
    - event
    argTypes:
    - struct adj*
    - enum ldp_sync_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 814
    functionName: ldp_sync_fsm_adj_event
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - log_addr
    - iface_to_oper_nbr_count
    - adj_get_af
    - debug_evt_ldp_sync
    - ldp_sync_fsm
    linkageType: ''
    returnType: int
    signature: int ldp_sync_fsm_adj_event(struct adj *adj, enum ldp_sync_event event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:821,1
    - Dst: iface_to_oper_nbr_count
      Src: /src/frr/ldpd/interface.c:830,1
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:837,1
    - Dst: ldp_sync_fsm
      Src: /src/frr/ldpd/interface.c:841,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - nbr
    - event
    argTypes:
    - struct nbr*
    - enum ldp_sync_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 845
    functionName: ldp_sync_fsm_nbr_event
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - debug_evt_ldp_sync
    - iface_to_oper_nbr_count
    - RB_FOREACH
    - ldp_sync_fsm
    linkageType: ''
    returnType: int
    signature: int ldp_sync_fsm_nbr_event(struct nbr *nbr, enum ldp_sync_event event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:850,1
    - Dst: zebra_route_string
      Src: /src/frr/ldpd/interface.c:852,1
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/interface.c:854,1
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:857,1
    - Dst: send_ldp_sync_state_update
      Src: /src/frr/ldpd/interface.c:865,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - state_req
    argTypes:
    - struct ldp_igp_sync_if_state_req*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 847
    functionDepth: 3
    functionLinenumber: 847
    functionLinenumberEnd: 868
    functionName: ldp_sync_fsm_state_req
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 0
    functionsReached:
    - send_ldp_sync_state_update
    - debug_evt_ldp_sync
    - if_lookup_name
    - zebra_route_string
    linkageType: ''
    returnType: int
    signature: int ldp_sync_fsm_state_req(struct ldp_igp_sync_if_state_req *state_req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stop_wait_for_ldp_sync_timer
      Src: /src/frr/ldpd/interface.c:876,1
    - Dst: send_ldp_sync_state_update
      Src: /src/frr/ldpd/interface.c:878,1
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:882,1
    - Dst: ldp_sync_state_name
      Src: /src/frr/ldpd/interface.c:886,1
    - Dst: ldp_sync_state_name
      Src: /src/frr/ldpd/interface.c:887,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - iface
    - state
    argTypes:
    - struct iface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 870
    functionDepth: 2
    functionLinenumber: 870
    functionLinenumberEnd: 891
    functionName: ldp_sync_fsm_init
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - send_ldp_sync_state_update
    - stop_wait_for_ldp_sync_timer
    - debug_evt_ldp_sync
    - ldp_sync_state_name
    linkageType: ''
    returnType: int
    signature: int ldp_sync_fsm_init(struct iface *iface, int state)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_warnx
      Src: /src/frr/ldpd/interface.c:909,1
    - Dst: ldp_sync_state_name
      Src: /src/frr/ldpd/interface.c:912,1
    - Dst: ldp_sync_act_iface_start_sync
      Src: /src/frr/ldpd/interface.c:921,1
    - Dst: ldp_sync_act_ldp_start_sync
      Src: /src/frr/ldpd/interface.c:924,1
    - Dst: ldp_sync_act_ldp_complete_sync
      Src: /src/frr/ldpd/interface.c:927,1
    - Dst: ldp_sync_fsm_init
      Src: /src/frr/ldpd/interface.c:930,1
    - Dst: ldp_sync_fsm_init
      Src: /src/frr/ldpd/interface.c:933,1
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:942,1
    - Dst: ldp_sync_state_name
      Src: /src/frr/ldpd/interface.c:946,1
    - Dst: ldp_sync_state_name
      Src: /src/frr/ldpd/interface.c:947,1
    - Dst: debug_evt_ldp_sync
      Src: /src/frr/ldpd/interface.c:950,1
    - Dst: ldp_sync_state_name
      Src: /src/frr/ldpd/interface.c:955,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 2
    argNames:
    - iface
    - event
    argTypes:
    - struct iface*
    - enum ldp_sync_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 893
    functionDepth: 3
    functionLinenumber: 893
    functionLinenumberEnd: 959
    functionName: ldp_sync_fsm
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 5
    functionsReached:
    - ldp_sync_state_name
    - ldp_sync_act_ldp_start_sync
    - ldp_sync_act_iface_start_sync
    - debug_evt_ldp_sync
    - ldp_sync_fsm_init
    - log_warnx
    - ldp_sync_act_ldp_complete_sync
    linkageType: ''
    returnType: int
    signature: int ldp_sync_fsm(struct iface *iface, enum ldp_sync_event event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/interface.c:966,1
    - Dst: ldp_sync_fsm
      Src: /src/frr/ldpd/interface.c:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 961
    functionDepth: 4
    functionLinenumber: 961
    functionLinenumberEnd: 968
    functionName: ldp_sync_fsm_reset_all
    functionSourceFile: /src/frr/ldpd/interface.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    - ldp_sync_fsm
    linkageType: ''
    returnType: void
    signature: void ldp_sync_fsm_reset_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffs
      Src: /src/frr/ldpd/util.c:22,1
    - Dst: ntohl
      Src: /src/frr/ldpd/util.c:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ina
    argTypes:
    - in_addr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 23
    functionName: mask2prefixlen
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - ntohl
    - ffs
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t mask2prefixlen(in_addr_t ina)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/util.c:35,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 1
    argNames:
    - sa_in6
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 71
    functionName: mask2prefixlen6
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - sockaddr_len
    - fatalx
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t mask2prefixlen6(struct sockaddr_in6 *sa_in6)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ldpd/util.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - prefixlen
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: prefixlen2mask
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: in_addr_t
    signature: in_addr_t prefixlen2mask(uint8_t prefixlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/util.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - prefixlen
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 96
    functionName: prefixlen2mask6
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: struct in6_addr
    signature: 'struct in6_addr *

      prefixlen2mask6(uint8_t prefixlen)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefixlen2mask
      Src: /src/frr/ldpd/util.c:107,1
    - Dst: memset
      Src: /src/frr/ldpd/util.c:110,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:122,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - af
    - dest
    - src
    - prefixlen
    argTypes:
    - int
    - union ldpd_addr*
    - union ldpd_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 124
    functionName: ldp_applymask
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - fatalx
    - prefixlen2mask
    - memset
    linkageType: ''
    returnType: void
    signature: "void ldp_applymask(int af, union ldpd_addr *dest, const union ldpd_addr
      *src,\n    int prefixlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ldpd/util.c:133,1
    - Dst: ntohl
      Src: /src/frr/ldpd/util.c:133,1
    - Dst: memcmp
      Src: /src/frr/ldpd/util.c:135,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - af
    - a
    - b
    argTypes:
    - int
    - union ldpd_addr*
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: ldp_addrcmp
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 4
    functionsReached:
    - fatalx
    - ntohl
    - memcmp
    linkageType: ''
    returnType: int
    signature: int ldp_addrcmp(int af, const union ldpd_addr *a, const union ldpd_addr
      *b)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ldpd/util.c:152,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - af
    - addr
    argTypes:
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 160
    functionName: ldp_addrisset
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 1
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - fatalx
    linkageType: ''
    returnType: int
    signature: int ldp_addrisset(int af, const union ldpd_addr *addr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:175,1
    - Dst: htonl
      Src: /src/frr/ldpd/util.c:176,1
    - Dst: prefixlen2mask
      Src: /src/frr/ldpd/util.c:176,1
    - Dst: htonl
      Src: /src/frr/ldpd/util.c:177,1
    - Dst: htonl
      Src: /src/frr/ldpd/util.c:178,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:184,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:198,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - af
    - a
    - b
    - prefixlen
    argTypes:
    - int
    - union ldpd_addr*
    - union ldpd_addr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 201
    functionName: ldp_prefixcmp
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - htonl
    - fatalx
    - prefixlen2mask
    linkageType: ''
    returnType: int
    signature: "int ldp_prefixcmp(int af, const union ldpd_addr *a, const union ldpd_addr
      *b,\n    uint8_t prefixlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ldpd/util.c:206,1
    - Dst: IN_MULTICAST
      Src: /src/frr/ldpd/util.c:210,1
    - Dst: IN_BADCLASS
      Src: /src/frr/ldpd/util.c:210,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 214
    functionName: bad_addr_v4
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 2
    functionsReached:
    - IN_MULTICAST
    - IN_BADCLASS
    - ntohl
    linkageType: ''
    returnType: int
    signature: int bad_addr_v4(struct in_addr addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ldpd/util.c:219,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/ldpd/util.c:220,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/ldpd/util.c:221,1
    - Dst: IN6_IS_ADDR_SITELOCAL
      Src: /src/frr/ldpd/util.c:222,1
    - Dst: IN6_IS_ADDR_V4MAPPED
      Src: /src/frr/ldpd/util.c:223,1
    - Dst: IN6_IS_ADDR_V4COMPAT
      Src: /src/frr/ldpd/util.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 228
    functionName: bad_addr_v6
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - IN6_IS_ADDR_SITELOCAL
    - IN6_IS_ADDR_V4COMPAT
    - IN6_IS_ADDR_LOOPBACK
    - IN6_IS_ADDR_V4MAPPED
    - IN6_IS_ADDR_MULTICAST
    linkageType: ''
    returnType: int
    signature: int bad_addr_v6(struct in6_addr *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/util.c:235,1
    - Dst: bad_addr_v6
      Src: /src/frr/ldpd/util.c:237,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - af
    - addr
    argTypes:
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 241
    functionName: bad_addr
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 3
    functionsReached:
    - bad_addr_v6
    - fatalx
    - bad_addr_v4
    linkageType: ''
    returnType: int
    signature: int bad_addr(int af, union ldpd_addr *addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/util.c:248,1
    - Dst: memcpy
      Src: /src/frr/ldpd/util.c:249,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/util.c:251,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/util.c:252,1
    - Dst: ntohs
      Src: /src/frr/ldpd/util.c:252,1
    - Dst: htons
      Src: /src/frr/ldpd/util.c:254,1
    - Dst: memcpy
      Src: /src/frr/ldpd/util.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - sin6
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 258
    functionName: embedscope
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - htons
    - IN6_IS_SCOPE_EMBED
    - log_sockaddr
    - ntohs
    - log_warnx
    - memcpy
    linkageType: ''
    returnType: void
    signature: void embedscope(struct sockaddr_in6 *sin6)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_warnx
      Src: /src/frr/ldpd/util.c:266,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/util.c:267,1
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/util.c:269,1
    - Dst: memcpy
      Src: /src/frr/ldpd/util.c:270,1
    - Dst: ntohs
      Src: /src/frr/ldpd/util.c:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - sin6
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 275
    functionName: recoverscope
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - IN6_IS_SCOPE_EMBED
    - log_sockaddr
    - ntohs
    - log_warnx
    - memcpy
    linkageType: ''
    returnType: void
    signature: void recoverscope(struct sockaddr_in6 *sin6)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_warnx
      Src: /src/frr/ldpd/util.c:281,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/util.c:282,1
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/util.c:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - sin6
    - id
    argTypes:
    - struct sockaddr_in6*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 286
    functionName: addscope
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - IN6_IS_SCOPE_EMBED
    - log_warnx
    - log_sockaddr
    linkageType: ''
    returnType: void
    signature: void addscope(struct sockaddr_in6 *sin6, uint32_t id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/util.c:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - in6
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 295
    functionName: clearscope
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 0
    functionsReached:
    - IN6_IS_SCOPE_EMBED
    linkageType: ''
    returnType: void
    signature: void clearscope(struct in6_addr *in6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/util.c:303,1
    - Dst: htons
      Src: /src/frr/ldpd/util.c:311,1
    - Dst: htons
      Src: /src/frr/ldpd/util.c:319,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - af
    - addr
    - port
    - su
    argTypes:
    - int
    - union ldpd_addr*
    - uint16_t
    - union sockunion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 324
    functionName: addr2sa
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 4
    functionsReached:
    - fatalx
    - memset
    - htons
    linkageType: ''
    returnType: void
    signature: void addr2sa(int af, const union ldpd_addr *addr, uint16_t port, union
      sockunion *su)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/util.c:333,1
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:352,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 4
    argNames:
    - sa
    - af
    - addr
    - port
    argTypes:
    - struct sockaddr*
    - int*
    - union ldpd_addr*
    - in_port_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 354
    functionName: sa2addr
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 3
    functionsReached:
    - fatalx
    - memset
    linkageType: ''
    returnType: void
    signature: void sa2addr(struct sockaddr *sa, int *af, union ldpd_addr *addr, in_port_t
      *port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/util.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - sa
    argTypes:
    - struct sockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 371
    functionName: sockaddr_len
    functionSourceFile: /src/frr/ldpd/util.c
    functionUses: 5
    functionsReached:
    - fatalx
    linkageType: ''
    returnType: socklen_t
    signature: socklen_t sockaddr_len(struct sockaddr *sa)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LIST_EMPTY
      Src: /src/frr/ldpd/address.c:40,1
    - Dst: fatalx
      Src: /src/frr/ldpd/address.c:56,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/address.c:59,1
    - Dst: ibuf_open
      Src: /src/frr/ldpd/address.c:72,1
    - Dst: fatal
      Src: /src/frr/ldpd/address.c:73,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:75,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/address.c:75,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:77,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/address.c:77,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:79,1
    - Dst: gen_address_list_tlv
      Src: /src/frr/ldpd/address.c:79,1
    - Dst: address_list_clr
      Src: /src/frr/ldpd/address.c:83,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/address.c:84,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/address.c:88,1
    - Dst: log_msg_address
      Src: /src/frr/ldpd/address.c:89,1
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/address.c:91,1
    - Dst: assert
      Src: /src/frr/ldpd/address.c:92,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/address.c:92,1
    - Dst: free
      Src: /src/frr/ldpd/address.c:93,1
    - Dst: evbuf_enqueue
      Src: /src/frr/ldpd/address.c:98,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/address.c:113,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 57
    argCount: 5
    argNames:
    - nbr
    - af
    - addr_list
    - addr_count
    - withdraw
    argTypes:
    - struct nbr*
    - int
    - struct if_addr_head*
    - unsigned int
    - int
    assertStmts:
    - condition: (if_addr != LIST_FIRST(addr_list))
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/frr/ldpd/address.c
    constantsTouched: []
    func_position:
      end: 114
      start: 27
    functionDepth: 3
    functionLinenumber: 27
    functionLinenumberEnd: 114
    functionName: send_address
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 0
    functionsReached:
    - assert
    - nbr_fsm
    - gen_address_list_tlv
    - fatalx
    - ibuf_open
    - gen_msg_hdr
    - address_list_clr
    - log_msg_address
    - free
    - SET_FLAG
    - gen_ldp_hdr
    - evbuf_enqueue
    - LIST_EMPTY
    - LIST_REMOVE
    - ibuf_free
    - fatal
    - LIST_FIRST
    linkageType: ''
    returnType: void
    signature: "void send_address(struct nbr *nbr, int af, struct if_addr_head *addr_list,\n
      \   unsigned int addr_count, int withdraw)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LIST_INIT
      Src: /src/frr/ldpd/address.c:121,1
    - Dst: address_list_add
      Src: /src/frr/ldpd/address.c:122,1
    - Dst: send_address
      Src: /src/frr/ldpd/address.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - nbr
    - if_addr
    - withdraw
    argTypes:
    - struct nbr*
    - struct if_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 124
    functionName: send_address_single
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 2
    functionsReached:
    - address_list_add
    - LIST_INIT
    - send_address
    linkageType: ''
    returnType: void
    signature: void send_address_single(struct nbr *nbr, struct if_addr *if_addr,
      int withdraw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_INIT
      Src: /src/frr/ldpd/address.c:133,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/address.c:134,1
    - Dst: address_list_add
      Src: /src/frr/ldpd/address.c:138,1
    - Dst: send_address
      Src: /src/frr/ldpd/address.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - nbr
    - af
    argTypes:
    - struct nbr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 143
    functionName: send_address_all
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - address_list_add
    - LIST_INIT
    - send_address
    linkageType: ''
    returnType: void
    signature: void send_address_all(struct nbr *nbr, int af)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: len_fec_tlv
      Src: /src/frr/ldpd/address.c:152,1
    - Dst: ibuf_open
      Src: /src/frr/ldpd/address.c:157,1
    - Dst: fatal
      Src: /src/frr/ldpd/address.c:158,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/address.c:160,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:163,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/address.c:163,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:164,1
    - Dst: gen_address_list_tlv
      Src: /src/frr/ldpd/address.c:164,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:165,1
    - Dst: gen_fec_tlv
      Src: /src/frr/ldpd/address.c:165,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:166,1
    - Dst: gen_mac_list_tlv
      Src: /src/frr/ldpd/address.c:166,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/address.c:169,1
    - Dst: log_msg_mac_withdrawal
      Src: /src/frr/ldpd/address.c:173,1
    - Dst: evbuf_enqueue
      Src: /src/frr/ldpd/address.c:175,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/address.c:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - nbr
    - fec
    - mac
    argTypes:
    - struct nbr*
    - struct map*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 145
    functionDepth: 3
    functionLinenumber: 145
    functionLinenumberEnd: 178
    functionName: send_mac_withdrawal
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 1
    functionsReached:
    - nbr_fsm
    - ibuf_open
    - gen_msg_hdr
    - log_msg_mac_withdrawal
    - SET_FLAG
    - gen_ldp_hdr
    - len_fec_tlv
    - gen_mac_list_tlv
    - evbuf_enqueue
    - gen_fec_tlv
    - ibuf_free
    - fatal
    - gen_address_list_tlv
    linkageType: ''
    returnType: void
    signature: void send_mac_withdrawal(struct nbr *nbr, struct map *fec, uint8_t
      *mac)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/address.c:191,1
    - Dst: ntohs
      Src: /src/frr/ldpd/address.c:192,1
    - Dst: fatalx
      Src: /src/frr/ldpd/address.c:201,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/address.c:208,1
    - Dst: memcpy
      Src: /src/frr/ldpd/address.c:211,1
    - Dst: ntohs
      Src: /src/frr/ldpd/address.c:212,1
    - Dst: ntohs
      Src: /src/frr/ldpd/address.c:213,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/address.c:215,1
    - Dst: ntohs
      Src: /src/frr/ldpd/address.c:218,1
    - Dst: send_notification
      Src: /src/frr/ldpd/address.c:219,1
    - Dst: send_notification
      Src: /src/frr/ldpd/address.c:234,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/address.c:246,1
    - Dst: memset
      Src: /src/frr/ldpd/address.c:251,1
    - Dst: memcpy
      Src: /src/frr/ldpd/address.c:253,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/address.c:261,1
    - Dst: memset
      Src: /src/frr/ldpd/address.c:266,1
    - Dst: memcpy
      Src: /src/frr/ldpd/address.c:268,1
    - Dst: fatalx
      Src: /src/frr/ldpd/address.c:275,1
    - Dst: log_msg_address
      Src: /src/frr/ldpd/address.c:278,1
    - Dst: ldpe_imsg_compose_lde
      Src: /src/frr/ldpd/address.c:280,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/address.c:291,1
    - Dst: memcpy
      Src: /src/frr/ldpd/address.c:295,1
    - Dst: ntohs
      Src: /src/frr/ldpd/address.c:296,1
    - Dst: ntohs
      Src: /src/frr/ldpd/address.c:297,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/address.c:299,1
    - Dst: ntohs
      Src: /src/frr/ldpd/address.c:307,1
    - Dst: send_notification_rtlvs
      Src: /src/frr/ldpd/address.c:308,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 102
    argCount: 3
    argNames:
    - nbr
    - buf
    - len
    argTypes:
    - struct nbr*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 318
    functionName: recv_address
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 1
    functionsReached:
    - fatalx
    - send_notification_rtlvs
    - memset
    - log_msg_address
    - ntohs
    - send_notification
    - ldpe_imsg_compose_lde
    - session_shutdown
    - memcpy
    linkageType: ''
    returnType: int
    signature: int recv_address(struct nbr *nbr, char *buf, uint16_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/address.c:329,1
    - Dst: htons
      Src: /src/frr/ldpd/address.c:330,1
    - Dst: htons
      Src: /src/frr/ldpd/address.c:334,1
    - Dst: htons
      Src: /src/frr/ldpd/address.c:338,1
    - Dst: fatalx
      Src: /src/frr/ldpd/address.c:342,1
    - Dst: htons
      Src: /src/frr/ldpd/address.c:344,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:346,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/address.c:346,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:352,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/address.c:352,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - buf
    - af
    - addr_list
    - tlv_addr_count
    argTypes:
    - struct ibuf*
    - int
    - struct if_addr_head*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 359
    functionName: gen_address_list_tlv
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 2
    functionsReached:
    - fatalx
    - memset
    - htons
    - SET_FLAG
    - ibuf_add
    linkageType: ''
    returnType: int
    signature: "int gen_address_list_tlv(struct ibuf *buf, int af, struct if_addr_head
      *addr_list,\n    unsigned int tlv_addr_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:352,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/address.c:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 356
    functionName: LIST_FOREACH
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 16
    functionsReached:
    - SET_FLAG
    - ibuf_add
    linkageType: ''
    returnType: void
    signature: void LIST_FOREACH(if_addr, addr_list, entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/address.c:367,1
    - Dst: htons
      Src: /src/frr/ldpd/address.c:368,1
    - Dst: htons
      Src: /src/frr/ldpd/address.c:370,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/address.c:371,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/address.c:373,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/address.c:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - mac
    argTypes:
    - struct ibuf*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 376
    functionName: gen_mac_list_tlv
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 1
    functionsReached:
    - SET_FLAG
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_mac_list_tlv(struct ibuf *buf, uint8_t *mac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc::malloc
      Src: /src/frr/ldpd/address.c:383,1
    - Dst: fatal
      Src: /src/frr/ldpd/address.c:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - addr_list
    - if_addr
    argTypes:
    - struct if_addr_head*
    - struct if_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 389
    functionName: address_list_add
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 2
    functionsReached:
    - malloc::malloc
    - fatal
    linkageType: ''
    returnType: void
    signature: void address_list_add(struct if_addr_head *addr_list, struct if_addr
      *if_addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/address.c:396,1
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/address.c:397,1
    - Dst: assert
      Src: /src/frr/ldpd/address.c:398,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/address.c:398,1
    - Dst: free
      Src: /src/frr/ldpd/address.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - addr_list
    argTypes:
    - struct if_addr_head*
    assertStmts:
    - condition: (if_addr != LIST_FIRST(addr_list))
      pos:
        line_end: 397
        line_start: 397
        source_file: /src/frr/ldpd/address.c
    constantsTouched: []
    func_position:
      end: 401
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 401
    functionName: address_list_clr
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 1
    functionsReached:
    - LIST_REMOVE
    - free
    - assert
    - LIST_FIRST
    linkageType: ''
    returnType: void
    signature: void address_list_clr(struct if_addr_head *addr_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_msg
      Src: /src/frr/ldpd/address.c:407,1
    - Dst: msg_name
      Src: /src/frr/ldpd/address.c:407,1
    - Dst: log_addr
      Src: /src/frr/ldpd/address.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - out
    - msg_type
    - nbr
    - af
    - addr
    argTypes:
    - int
    - uint16_t
    - struct nbr*
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 409
    functionName: log_msg_address
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 2
    functionsReached:
    - log_addr
    - debug_msg
    - msg_name
    linkageType: ''
    returnType: void
    signature: "void log_msg_address(int out, uint16_t msg_type, struct nbr *nbr,
      int af,\n    union ldpd_addr *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_msg
      Src: /src/frr/ldpd/address.c:416,1
    - Dst: prefix_mac2str
      Src: /src/frr/ldpd/address.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - out
    - nbr
    - mac
    argTypes:
    - int
    - struct nbr*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 419
    functionName: log_msg_mac_withdrawal
    functionSourceFile: /src/frr/ldpd/address.c
    functionUses: 1
    functionsReached:
    - prefix_mac2str
    - debug_msg
    linkageType: ''
    returnType: void
    signature: void log_msg_mac_withdrawal(int out, struct nbr *nbr, uint8_t *mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ibuf_seek
      Src: /src/frr/ldpd/labelmapping.c:28,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:29,1
    - Dst: evbuf_enqueue
      Src: /src/frr/ldpd/labelmapping.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - nbr
    - type
    - buf
    - size
    argTypes:
    - struct nbr*
    - uint16_t
    - struct ibuf*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 3
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: enqueue_pdu
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 0
    functionsReached:
    - ibuf_seek
    - evbuf_enqueue
    - htons
    linkageType: ''
    returnType: void
    signature: void enqueue_pdu(struct nbr *nbr, uint16_t type, struct ibuf *buf,
      uint16_t size)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/ldpd/labelmapping.c:44,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/ldpd/labelmapping.c:47,1
    - Dst: ibuf_open
      Src: /src/frr/ldpd/labelmapping.c:50,1
    - Dst: fatal
      Src: /src/frr/ldpd/labelmapping.c:51,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:54,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/labelmapping.c:54,1
    - Dst: len_fec_tlv
      Src: /src/frr/ldpd/labelmapping.c:62,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:65,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:67,1
    - Dst: enqueue_pdu
      Src: /src/frr/ldpd/labelmapping.c:72,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:80,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/labelmapping.c:80,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:81,1
    - Dst: gen_fec_tlv
      Src: /src/frr/ldpd/labelmapping.c:81,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:83,1
    - Dst: gen_label_tlv
      Src: /src/frr/ldpd/labelmapping.c:83,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:84,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:85,1
    - Dst: gen_reqid_tlv
      Src: /src/frr/ldpd/labelmapping.c:85,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:86,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:87,1
    - Dst: gen_pw_status_tlv
      Src: /src/frr/ldpd/labelmapping.c:87,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:88,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:89,1
    - Dst: gen_status_tlv
      Src: /src/frr/ldpd/labelmapping.c:89,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/labelmapping.c:92,1
    - Dst: mapping_list_clr
      Src: /src/frr/ldpd/labelmapping.c:93,1
    - Dst: log_msg_mapping
      Src: /src/frr/ldpd/labelmapping.c:97,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/ldpd/labelmapping.c:120,1
    - Dst: assert
      Src: /src/frr/ldpd/labelmapping.c:121,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/ldpd/labelmapping.c:121,1
    - Dst: free
      Src: /src/frr/ldpd/labelmapping.c:122,1
    - Dst: enqueue_pdu
      Src: /src/frr/ldpd/labelmapping.c:125,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/labelmapping.c:127,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 66
    argCount: 3
    argNames:
    - nbr
    - type
    - mh
    argTypes:
    - struct nbr*
    - uint16_t
    - struct mapping_head*
    assertStmts:
    - condition: (me != TAILQ_FIRST(mh))
      pos:
        line_end: 120
        line_start: 120
        source_file: /src/frr/ldpd/labelmapping.c
    constantsTouched: []
    func_position:
      end: 128
      start: 34
    functionDepth: 4
    functionLinenumber: 34
    functionLinenumberEnd: 128
    functionName: send_labelmessage
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 0
    functionsReached:
    - mapping_list_clr
    - gen_msg_hdr
    - gen_reqid_tlv
    - log_msg_mapping
    - nbr_fsm
    - TAILQ_EMPTY
    - assert
    - TAILQ_REMOVE
    - free
    - gen_ldp_hdr
    - len_fec_tlv
    - gen_fec_tlv
    - enqueue_pdu
    - ibuf_free
    - gen_status_tlv
    - fatal
    - gen_label_tlv
    - ibuf_open
    - CHECK_FLAG
    - SET_FLAG
    - gen_pw_status_tlv
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void send_labelmessage(struct nbr *nbr, uint16_t type, struct mapping_head
      *mh)
  - BBCount: 66
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:145,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:151,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:155,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:156,1
    - Dst: send_notification
      Src: /src/frr/ldpd/labelmapping.c:157,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:160,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:162,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/labelmapping.c:169,1
    - Dst: memset
      Src: /src/frr/ldpd/labelmapping.c:171,1
    - Dst: tlv_decode_fec_elm
      Src: /src/frr/ldpd/labelmapping.c:174,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:177,1
    - Dst: send_notification
      Src: /src/frr/ldpd/labelmapping.c:180,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:193,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:210,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:222,1
    - Dst: mapping_list_add
      Src: /src/frr/ldpd/labelmapping.c:226,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:241,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:245,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:246,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:247,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:249,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:261,1
    - Dst: send_notification
      Src: /src/frr/ldpd/labelmapping.c:262,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:272,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:276,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:277,1
    - Dst: ntohl
      Src: /src/frr/ldpd/labelmapping.c:278,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:295,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:299,1
    - Dst: ntohl
      Src: /src/frr/ldpd/labelmapping.c:300,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:307,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:323,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:333,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:342,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:346,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:347,1
    - Dst: ntohl
      Src: /src/frr/ldpd/labelmapping.c:348,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:356,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:356,1
    - Dst: send_notification_rtlvs
      Src: /src/frr/ldpd/labelmapping.c:357,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/ldpd/labelmapping.c:368,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:371,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:377,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:385,1
    - Dst: fatalx
      Src: /src/frr/ldpd/labelmapping.c:392,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:397,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:400,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:407,1
    - Dst: log_msg_mapping
      Src: /src/frr/ldpd/labelmapping.c:410,1
    - Dst: ldpe_imsg_compose_lde
      Src: /src/frr/ldpd/labelmapping.c:432,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/ldpd/labelmapping.c:436,1
    - Dst: assert
      Src: /src/frr/ldpd/labelmapping.c:437,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/ldpd/labelmapping.c:437,1
    - Dst: free
      Src: /src/frr/ldpd/labelmapping.c:438,1
    - Dst: mapping_list_clr
      Src: /src/frr/ldpd/labelmapping.c:444,1
    CyclomaticComplexity: 94
    EdgeCount: 94
    ICount: 251
    argCount: 4
    argNames:
    - nbr
    - buf
    - len
    - type
    argTypes:
    - struct nbr*
    - char*
    - uint16_t
    - uint16_t
    assertStmts:
    - condition: (me != TAILQ_FIRST(&mh))
      pos:
        line_end: 436
        line_start: 436
        source_file: /src/frr/ldpd/labelmapping.c
    constantsTouched: []
    func_position:
      end: 447
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 447
    functionName: recv_labelmessage
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 1
    functionsReached:
    - mapping_list_clr
    - log_msg_mapping
    - ntohs
    - mapping_list_add
    - send_notification
    - fatalx
    - memset
    - ntohl
    - assert
    - TAILQ_INIT
    - TAILQ_REMOVE
    - free
    - ldpe_imsg_compose_lde
    - session_shutdown
    - memcpy
    - send_notification_rtlvs
    - CHECK_FLAG
    - SET_FLAG
    - tlv_decode_fec_elm
    - TAILQ_FIRST
    linkageType: ''
    returnType: int
    signature: int recv_labelmessage(struct nbr *nbr, char *buf, uint16_t len, uint16_t
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:455,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:456,1
    - Dst: htonl
      Src: /src/frr/ldpd/labelmapping.c:457,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - label
    argTypes:
    - struct ibuf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: gen_label_tlv
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 1
    functionsReached:
    - htonl
    - ibuf_add
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_label_tlv(struct ibuf *buf, uint32_t label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:467,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:468,1
    - Dst: htonl
      Src: /src/frr/ldpd/labelmapping.c:469,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - reqid
    argTypes:
    - struct ibuf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 472
    functionName: gen_reqid_tlv
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 1
    functionsReached:
    - htonl
    - ibuf_add
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_reqid_tlv(struct ibuf *buf, uint32_t reqid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:479,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:480,1
    - Dst: htonl
      Src: /src/frr/ldpd/labelmapping.c:481,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - status
    argTypes:
    - struct ibuf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 484
    functionName: gen_pw_status_tlv
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 1
    functionsReached:
    - htonl
    - ibuf_add
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_pw_status_tlv(struct ibuf *buf, uint32_t status)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PREFIX_SIZE
      Src: /src/frr/ldpd/labelmapping.c:497,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:501,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:505,1
    - Dst: fatalx
      Src: /src/frr/ldpd/labelmapping.c:516,1
    - Dst: fatalx
      Src: /src/frr/ldpd/labelmapping.c:520,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 524
    functionName: len_fec_tlv
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - PREFIX_SIZE
    - fatalx
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t len_fec_tlv(struct map *map)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:535,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:539,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:540,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:540,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:541,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:541,1
    - Dst: PREFIX_SIZE
      Src: /src/frr/ldpd/labelmapping.c:544,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:545,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:547,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:547,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:548,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:548,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:551,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:554,1
    - Dst: fatalx
      Src: /src/frr/ldpd/labelmapping.c:557,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:560,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:560,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:561,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:561,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:564,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:564,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:567,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:569,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:574,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:575,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:575,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:577,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:577,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:579,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:580,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:581,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:582,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:582,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:583,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:583,1
    - Dst: htonl
      Src: /src/frr/ldpd/labelmapping.c:584,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:585,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:585,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:586,1
    - Dst: htonl
      Src: /src/frr/ldpd/labelmapping.c:587,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:588,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:588,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:590,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:595,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:595,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:597,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:598,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:598,1
    - Dst: fatalx
      Src: /src/frr/ldpd/labelmapping.c:609,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:611,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:612,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:612,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:613,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:613,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:614,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:614,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:619,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:619,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:623,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:626,1
    - Dst: fatalx
      Src: /src/frr/ldpd/labelmapping.c:629,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:633,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:633,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:637,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:637,1
    - Dst: htons
      Src: /src/frr/ldpd/labelmapping.c:638,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:639,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/labelmapping.c:639,1
    - Dst: fatalx
      Src: /src/frr/ldpd/labelmapping.c:642,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 103
    argCount: 2
    argNames:
    - buf
    - map
    argTypes:
    - struct ibuf*
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 650
    functionName: gen_fec_tlv
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 2
    functionsReached:
    - fatalx
    - htons
    - CHECK_FLAG
    - ibuf_add
    - SET_FLAG
    - htonl
    - PREFIX_SIZE
    linkageType: ''
    returnType: int
    signature: int gen_fec_tlv(struct ibuf *buf, struct map *map)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:667,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:673,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:678,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:680,1
    - Dst: send_notification
      Src: /src/frr/ldpd/labelmapping.c:689,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:700,1
    - Dst: PREFIX_SIZE
      Src: /src/frr/ldpd/labelmapping.c:703,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:704,1
    - Dst: memset
      Src: /src/frr/ldpd/labelmapping.c:709,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:710,1
    - Dst: PREFIX_SIZE
      Src: /src/frr/ldpd/labelmapping.c:711,1
    - Dst: ldp_applymask
      Src: /src/frr/ldpd/labelmapping.c:714,1
    - Dst: PREFIX_SIZE
      Src: /src/frr/ldpd/labelmapping.c:717,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:720,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:725,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:726,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/labelmapping.c:727,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:728,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:729,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:738,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:743,1
    - Dst: ntohl
      Src: /src/frr/ldpd/labelmapping.c:744,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:752,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:756,1
    - Dst: ntohl
      Src: /src/frr/ldpd/labelmapping.c:757,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:758,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:767,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:771,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:773,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:780,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:783,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:785,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/labelmapping.c:786,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:799,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:803,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:805,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:808,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:815,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:819,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:820,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:831,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/labelmapping.c:837,1
    - Dst: memcpy
      Src: /src/frr/ldpd/labelmapping.c:841,1
    - Dst: ntohs
      Src: /src/frr/ldpd/labelmapping.c:842,1
    - Dst: send_notification
      Src: /src/frr/ldpd/labelmapping.c:848,1
    - Dst: send_notification
      Src: /src/frr/ldpd/labelmapping.c:854,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 157
    argCount: 5
    argNames:
    - nbr
    - msg
    - buf
    - len
    - map
    argTypes:
    - struct nbr*
    - struct ldp_msg*
    - char*
    - uint16_t
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 652
    functionDepth: 2
    functionLinenumber: 652
    functionLinenumberEnd: 859
    functionName: tlv_decode_fec_elm
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 1
    functionsReached:
    - session_shutdown
    - memset
    - CHECK_FLAG
    - ntohl
    - ntohs
    - SET_FLAG
    - UNSET_FLAG
    - send_notification
    - PREFIX_SIZE
    - ldp_applymask
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int tlv_decode_fec_elm(struct nbr *nbr, struct ldp_msg *msg, char
      *buf,\n    uint16_t len, struct map *map)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_msg
      Src: /src/frr/ldpd/labelmapping.c:864,1
    - Dst: msg_name
      Src: /src/frr/ldpd/labelmapping.c:864,1
    - Dst: log_map
      Src: /src/frr/ldpd/labelmapping.c:865,1
    - Dst: log_label
      Src: /src/frr/ldpd/labelmapping.c:865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - out
    - msg_type
    - nbr
    - map
    argTypes:
    - int
    - uint16_t
    - struct nbr*
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 866
    functionName: log_msg_mapping
    functionSourceFile: /src/frr/ldpd/labelmapping.c
    functionUses: 2
    functionsReached:
    - debug_msg
    - log_label
    - log_map
    - msg_name
    linkageType: ''
    returnType: void
    signature: void log_msg_mapping(int out, uint16_t msg_type, struct nbr *nbr, struct
      map *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lde_shutdown
      Src: /src/frr/ldpd/lde.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: sigint
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_shutdown
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setproctitle
      Src: /src/frr/ldpd/lde.c:120,1
    - Dst: frr_init
      Src: /src/frr/ldpd/lde.c:125,1
    - Dst: signal_init
      Src: /src/frr/ldpd/lde.c:130,1
    - Dst: array_size
      Src: /src/frr/ldpd/lde.c:130,1
    - Dst: calloc
      Src: /src/frr/ldpd/lde.c:133,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:134,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/lde.c:135,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/lde.c:137,1
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:141,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/lde.c:143,1
    - Dst: config_new_empty
      Src: /src/frr/ldpd/lde.c:146,1
    - Dst: event_fetch
      Src: /src/frr/ldpd/lde.c:149,1
    - Dst: event_call
      Src: /src/frr/ldpd/lde.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 116
    functionDepth: 7
    functionLinenumber: 116
    functionLinenumberEnd: 154
    functionName: lde
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 6
    functionsReached:
    - fatal
    - memset
    - frr_init
    - imsg_init
    - setproctitle
    - array_size
    - config_new_empty
    - signal_init
    - event_add_read
    - event_fetch
    - event_call
    - calloc
    linkageType: ''
    returnType: void
    signature: void lde(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zprivs_preinit
      Src: /src/frr/ldpd/lde.c:162,1
    - Dst: zprivs_init
      Src: /src/frr/ldpd/lde.c:163,1
    - Dst: lde_gc_start_timer
      Src: /src/frr/ldpd/lde.c:166,1
    - Dst: frr_zclient_addr
      Src: /src/frr/ldpd/lde.c:169,1
    - Dst: zclient_sync_init
      Src: /src/frr/ldpd/lde.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - init
    argTypes:
    - struct ldpd_init*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 172
    functionName: lde_init
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - zclient_sync_init
    - zprivs_init
    - frr_zclient_addr
    - zprivs_preinit
    - lde_gc_start_timer
    linkageType: ''
    returnType: void
    signature: void lde_init(struct ldpd_init *init)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/lde.c:179,1
    - Dst: close
      Src: /src/frr/ldpd/lde.c:180,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/lde.c:183,1
    - Dst: close
      Src: /src/frr/ldpd/lde.c:184,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/lde.c:186,1
    - Dst: close
      Src: /src/frr/ldpd/lde.c:187,1
    - Dst: lde_gc_stop_timer
      Src: /src/frr/ldpd/lde.c:190,1
    - Dst: lde_nbr_clear
      Src: /src/frr/ldpd/lde.c:191,1
    - Dst: fec_tree_clear
      Src: /src/frr/ldpd/lde.c:192,1
    - Dst: config_clear
      Src: /src/frr/ldpd/lde.c:194,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:197,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:198,1
    - Dst: log_info
      Src: /src/frr/ldpd/lde.c:200,1
    - Dst: zlog_fini
      Src: /src/frr/ldpd/lde.c:202,1
    - Dst: exit
      Src: /src/frr/ldpd/lde.c:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 174
    functionDepth: 4
    functionLinenumber: 174
    functionLinenumberEnd: 204
    functionName: lde_shutdown
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - msgbuf_clear
    - exit
    - lde_gc_stop_timer
    - config_clear
    - fec_tree_clear
    - log_info
    - free
    - close
    - zlog_fini
    - lde_nbr_clear
    linkageType: ''
    returnType: void
    signature: void lde_shutdown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/lde.c:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - type
    - pid
    - data
    - datalen
    argTypes:
    - int
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 213
    functionName: lde_imsg_compose_parent
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 2
    functionsReached:
    - imsg_compose_event
    linkageType: ''
    returnType: int
    signature: int lde_imsg_compose_parent(int type, pid_t pid, void *data, uint16_t
      datalen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/lde.c:220,1
    - Dst: imsg_flush
      Src: /src/frr/ldpd/lde.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - type
    - pid
    - data
    - datalen
    argTypes:
    - int
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 215
    functionDepth: 4
    functionLinenumber: 215
    functionLinenumberEnd: 222
    functionName: lde_imsg_compose_parent_sync
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - imsg_flush
    - imsg_compose_event
    linkageType: ''
    returnType: void
    signature: void lde_imsg_compose_parent_sync(int type, pid_t pid, void *data,
      uint16_t datalen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/lde.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - type
    - peerid
    - pid
    - data
    - datalen
    argTypes:
    - int
    - uint32_t
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: lde_imsg_compose_ldpe
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 4
    functionsReached:
    - imsg_compose_event
    linkageType: ''
    returnType: int
    signature: "int lde_imsg_compose_ldpe(int type, uint32_t peerid, pid_t pid, void
      *data,\n    uint16_t datalen)"
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/lde.c:237,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/lde.c:249,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:250,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/lde.c:255,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:256,1
    - Dst: lde_nbr_find
      Src: /src/frr/ldpd/lde.c:262,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:264,1
    - Dst: fec_snap
      Src: /src/frr/ldpd/lde.c:268,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:276,1
    - Dst: lde_nbr_find
      Src: /src/frr/ldpd/lde.c:279,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:281,1
    - Dst: lde_check_mapping
      Src: /src/frr/ldpd/lde.c:287,1
    - Dst: lde_check_request
      Src: /src/frr/ldpd/lde.c:290,1
    - Dst: lde_check_release
      Src: /src/frr/ldpd/lde.c:293,1
    - Dst: lde_check_withdraw
      Src: /src/frr/ldpd/lde.c:296,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:305,1
    - Dst: lde_nbr_find
      Src: /src/frr/ldpd/lde.c:308,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:310,1
    - Dst: lde_address_add
      Src: /src/frr/ldpd/lde.c:314,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:315,1
    - Dst: log_addr
      Src: /src/frr/ldpd/lde.c:316,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:321,1
    - Dst: lde_nbr_find
      Src: /src/frr/ldpd/lde.c:324,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:326,1
    - Dst: lde_address_del
      Src: /src/frr/ldpd/lde.c:330,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:331,1
    - Dst: log_addr
      Src: /src/frr/ldpd/lde.c:332,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:337,1
    - Dst: lde_nbr_find
      Src: /src/frr/ldpd/lde.c:340,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:342,1
    - Dst: l2vpn_recv_pw_status
      Src: /src/frr/ldpd/lde.c:348,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:363,1
    - Dst: lde_nbr_find
      Src: /src/frr/ldpd/lde.c:365,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:366,1
    - Dst: lde_nbr_new
      Src: /src/frr/ldpd/lde.c:367,1
    - Dst: lde_nbr_del
      Src: /src/frr/ldpd/lde.c:370,1
    - Dst: lde_nbr_find
      Src: /src/frr/ldpd/lde.c:370,1
    - Dst: rt_dump
      Src: /src/frr/ldpd/lde.c:373,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:375,1
    - Dst: l2vpn_pw_ctl
      Src: /src/frr/ldpd/lde.c:379,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:381,1
    - Dst: l2vpn_binding_ctl
      Src: /src/frr/ldpd/lde.c:384,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:386,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:389,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/lde.c:392,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/lde.c:395,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/lde.c:398,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/lde.c:399,1
    - Dst: lde_shutdown
      Src: /src/frr/ldpd/lde.c:400,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 128
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 235
    functionDepth: 5
    functionLinenumber: 235
    functionLinenumberEnd: 402
    functionName: lde_dispatch_imsg
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fec_snap
    - lde_address_add
    - lde_check_request
    - rt_dump
    - imsg_read
    - imsg_get
    - l2vpn_pw_ctl
    - l2vpn_binding_ctl
    - fatalx
    - lde_nbr_find
    - lde_imsg_compose_ldpe
    - EVENT_ARG
    - lde_check_withdraw
    - log_debug
    - l2vpn_recv_pw_status
    - log_addr
    - imsg_event_add
    - EVENT_OFF
    - lde_nbr_new
    - fatal
    - imsg_free
    - lde_check_mapping
    - lde_check_release
    - lde_nbr_del
    - lde_shutdown
    - lde_address_del
    linkageType: ''
    returnType: void
    signature: void lde_dispatch_imsg(struct event *thread)
  - BBCount: 59
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/lde.c:418,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/lde.c:431,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:432,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/lde.c:437,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:438,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:445,1
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/lde.c:448,1
    - Dst: if_update_info
      Src: /src/frr/ldpd/lde.c:450,1
    - Dst: lde_route_update
      Src: /src/frr/ldpd/lde.c:454,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:458,1
    - Dst: l2vpn_if_find
      Src: /src/frr/ldpd/lde.c:459,1
    - Dst: l2vpn_if_update_info
      Src: /src/frr/ldpd/lde.c:461,1
    - Dst: l2vpn_pw_find
      Src: /src/frr/ldpd/lde.c:464,1
    - Dst: l2vpn_pw_update_info
      Src: /src/frr/ldpd/lde.c:466,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:473,1
    - Dst: l2vpn_pw_status_update
      Src: /src/frr/ldpd/lde.c:475,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:476,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:481,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:498,1
    - Dst: lde_kernel_insert
      Src: /src/frr/ldpd/lde.c:503,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:505,1
    - Dst: lde_kernel_update
      Src: /src/frr/ldpd/lde.c:508,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:514,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:518,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:522,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:523,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/lde.c:524,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/lde.c:526,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:534,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:536,1
    - Dst: lde_init
      Src: /src/frr/ldpd/lde.c:537,1
    - Dst: ldp_agentx_enabled
      Src: /src/frr/ldpd/lde.c:540,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:543,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:544,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:545,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde.c:547,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde.c:548,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde.c:549,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde.c:550,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:553,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:554,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:555,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:557,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:560,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:561,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:562,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:564,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:567,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:568,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:569,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:571,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:574,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:575,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:576,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde.c:578,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde.c:579,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde.c:580,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:582,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:585,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:586,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:587,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:589,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:592,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:593,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:594,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:596,1
    - Dst: malloc
      Src: /src/frr/ldpd/lde.c:599,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:600,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:601,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:603,1
    - Dst: merge_config
      Src: /src/frr/ldpd/lde.c:606,1
    - Dst: ldp_clear_config
      Src: /src/frr/ldpd/lde.c:607,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:613,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:616,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:621,1
    - Dst: lde_check_filter_af
      Src: /src/frr/ldpd/lde.c:625,1
    - Dst: lde_check_filter_af
      Src: /src/frr/ldpd/lde.c:627,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:633,1
    - Dst: rlfa_node_find
      Src: /src/frr/ldpd/lde.c:637,1
    - Dst: rlfa_node_new
      Src: /src/frr/ldpd/lde.c:640,1
    - Dst: rlfa_client_find
      Src: /src/frr/ldpd/lde.c:642,1
    - Dst: rlfa_client_new
      Src: /src/frr/ldpd/lde.c:646,1
    - Dst: lde_rlfa_check
      Src: /src/frr/ldpd/lde.c:647,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:652,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/lde.c:657,1
    - Dst: rlfa_client_find
      Src: /src/frr/ldpd/lde.c:659,1
    - Dst: rlfa_client_del
      Src: /src/frr/ldpd/lde.c:663,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:667,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/lde.c:670,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/lde.c:673,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/lde.c:676,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/lde.c:677,1
    - Dst: lde_shutdown
      Src: /src/frr/ldpd/lde.c:678,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 213
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 405
    functionDepth: 5
    functionLinenumber: 405
    functionLinenumberEnd: 680
    functionName: lde_dispatch_parent
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - l2vpn_pw_find
    - if_update_info
    - lde_route_update
    - malloc
    - merge_config
    - imsg_read
    - imsg_get
    - rlfa_client_del
    - l2vpn_if_update_info
    - fatalx
    - l2vpn_pw_status_update
    - ldp_clear_config
    - RB_INIT
    - RB_INSERT
    - lde_kernel_insert
    - rlfa_node_find
    - EVENT_ARG
    - rlfa_node_new
    - if_lookup_name
    - lde_rlfa_check
    - l2vpn_if_find
    - log_debug
    - lde_init
    - ldp_agentx_enabled
    - imsg_event_add
    - rlfa_client_new
    - EVENT_OFF
    - lde_check_filter_af
    - event_add_read
    - l2vpn_pw_update_info
    - fatal
    - memcpy
    - imsg_free
    - CHECK_FLAG
    - imsg_init
    - rlfa_client_find
    - RB_FOREACH_SAFE
    - lde_shutdown
    - log_warnx
    - RB_FOREACH
    - lde_kernel_update
    linkageType: ''
    returnType: void
    signature: void lde_dispatch_parent(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_acl_request
      Src: /src/frr/ldpd/lde.c:685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - acl_name
    - af
    - addr
    - prefixlen
    argTypes:
    - char*
    - int
    - union ldpd_addr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 682
    functionDepth: 5
    functionLinenumber: 682
    functionLinenumberEnd: 686
    functionName: lde_acl_check
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - ldp_acl_request
    linkageType: ''
    returnType: int
    signature: int lde_acl_check(char *acl_name, int af, union ldpd_addr *addr, uint8_t
      prefixlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:692,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fn
    argTypes:
    - struct fec_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 697
    functionName: lde_fec_connected
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool lde_fec_connected(const struct fec_node *fn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:703,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fn
    argTypes:
    - struct fec_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 708
    functionName: lde_fec_outside_mpls_network
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: bool lde_fec_outside_mpls_network(const struct fec_node *fn)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:717,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:721,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:727,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:731,1
    - Dst: lde_fec_connected
      Src: /src/frr/ldpd/lde.c:747,1
    - Dst: lde_fec_outside_mpls_network
      Src: /src/frr/ldpd/lde.c:747,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:751,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:754,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:760,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:763,1
    - Dst: lde_get_next_label
      Src: /src/frr/ldpd/lde.c:778,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 38
    argCount: 1
    argNames:
    - fn
    argTypes:
    - struct fec_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 710
    functionDepth: 6
    functionLinenumber: 710
    functionLinenumberEnd: 779
    functionName: lde_update_label
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_fec_connected
    - lde_fec_outside_mpls_network
    - CHECK_FLAG
    - lde_get_next_label
    - lde_acl_check
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t lde_update_label(struct fec_node *fn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:792,1
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:797,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/lde.c:807,1
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:810,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/lde.c:821,1
    - Dst: pw2zpw
      Src: /src/frr/ldpd/lde.c:830,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/lde.c:833,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 2
    argNames:
    - fn
    - fnh
    argTypes:
    - struct fec_node*
    - struct fec_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 781
    functionDepth: 4
    functionLinenumber: 781
    functionLinenumberEnd: 836
    functionName: lde_send_change_klabel
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 2
    functionsReached:
    - pw2zpw
    - lde_imsg_compose_parent
    - CHECK_FLAG
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_send_change_klabel(struct fec_node *fn, struct fec_nh *fnh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:847,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/lde.c:858,1
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:861,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/lde.c:872,1
    - Dst: pw2zpw
      Src: /src/frr/ldpd/lde.c:880,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/lde.c:883,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - fn
    - fnh
    argTypes:
    - struct fec_node*
    - struct fec_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 838
    functionDepth: 4
    functionLinenumber: 838
    functionLinenumberEnd: 886
    functionName: lde_send_delete_klabel
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 2
    functionsReached:
    - pw2zpw
    - lde_imsg_compose_parent
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_send_delete_klabel(struct fec_node *fn, struct fec_nh *fnh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:891,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - fec
    - prefix
    argTypes:
    - struct fec*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 907
    functionName: lde_fec2prefix
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_fec2prefix(const struct fec *fec, struct prefix *prefix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:912,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:925,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - prefix
    - fec
    argTypes:
    - struct prefix*
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 928
    functionName: lde_prefix2fec
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fatalx
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_prefix2fec(const struct prefix *prefix, struct fec *fec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:933,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:952,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - fec
    - map
    argTypes:
    - struct fec*
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 930
    functionDepth: 1
    functionLinenumber: 930
    functionLinenumberEnd: 956
    functionName: lde_fec2map
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - SET_FLAG
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_fec2map(struct fec *fec, struct map *map)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:961,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:977,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - map
    - lsr_id
    - fec
    argTypes:
    - struct map*
    - struct in_addr
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 958
    functionDepth: 1
    functionLinenumber: 958
    functionLinenumberEnd: 988
    functionName: lde_map2fec
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - fatalx
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_map2fec(struct map *map, struct in_addr lsr_id, struct fec
      *fec)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1006,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:1007,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1008,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde.c:1011,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1025,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1027,1
    - Dst: debug_evt
      Src: /src/frr/ldpd/lde.c:1028,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde.c:1029,1
    - Dst: lde_map_pending_add
      Src: /src/frr/ldpd/lde.c:1030,1
    - Dst: lde_fec2map
      Src: /src/frr/ldpd/lde.c:1041,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1047,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1051,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1060,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1064,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1078,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1079,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1081,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1082,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1090,1
    - Dst: lde_req_del
      Src: /src/frr/ldpd/lde.c:1097,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1101,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1104,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1108,1
    - Dst: lde_map_add
      Src: /src/frr/ldpd/lde.c:1110,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 67
    argCount: 3
    argNames:
    - ln
    - fn
    - single
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 990
    functionDepth: 6
    functionLinenumber: 990
    functionLinenumberEnd: 1112
    functionName: lde_send_labelmapping
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 2
    functionsReached:
    - LIST_FOREACH
    - fec_find
    - log_fec
    - lde_address_find
    - CHECK_FLAG
    - debug_evt
    - lde_acl_check
    - lde_req_del
    - SET_FLAG
    - lde_imsg_compose_ldpe
    - lde_map_add
    - lde_fec2map
    - lde_map_pending_add
    linkageType: ''
    returnType: void
    signature: void lde_send_labelmapping(struct lde_nbr *ln, struct fec_node *fn,
      int single)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lde_fec2map
      Src: /src/frr/ldpd/lde.c:1124,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1140,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1141,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:1146,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1152,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1156,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1158,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1162,1
    - Dst: lde_wdraw_add
      Src: /src/frr/ldpd/lde.c:1164,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1169,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1171,1
    - Dst: lde_wildcard_apply
      Src: /src/frr/ldpd/lde.c:1172,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1175,1
    - Dst: lde_wdraw_add
      Src: /src/frr/ldpd/lde.c:1177,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 4
    argNames:
    - ln
    - fn
    - wcard
    - st
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    - struct map*
    - struct status_tlv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1114
    functionDepth: 4
    functionLinenumber: 1114
    functionLinenumberEnd: 1182
    functionName: lde_send_labelwithdraw
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 2
    functionsReached:
    - fec_find
    - lde_wildcard_apply
    - CHECK_FLAG
    - SET_FLAG
    - lde_imsg_compose_ldpe
    - lde_fec2map
    - lde_wdraw_add
    - RB_FOREACH
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lde_send_labelwithdraw(struct lde_nbr *ln, struct fec_node *fn,\n
      \   struct map *wcard, struct status_tlv *st)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1189,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:1192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ln
    - label
    argTypes:
    - struct lde_nbr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1184
    functionDepth: 5
    functionLinenumber: 1184
    functionLinenumberEnd: 1193
    functionName: lde_send_labelwithdraw_wcard
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_send_labelwithdraw
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_send_labelwithdraw_wcard(struct lde_nbr *ln, uint32_t label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1201,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ln
    - af
    - label
    argTypes:
    - struct lde_nbr*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1195
    functionDepth: 5
    functionLinenumber: 1195
    functionLinenumberEnd: 1207
    functionName: lde_send_labelwithdraw_twcard_prefix
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_send_labelwithdraw
    - memset
    linkageType: ''
    returnType: void
    signature: "void lde_send_labelwithdraw_twcard_prefix(struct lde_nbr *ln, uint16_t
      af,\n    uint32_t label)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1215,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:1220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ln
    - pw_type
    - label
    argTypes:
    - struct lde_nbr*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1209
    functionDepth: 5
    functionLinenumber: 1209
    functionLinenumberEnd: 1221
    functionName: lde_send_labelwithdraw_twcard_pwid
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_send_labelwithdraw
    - memset
    linkageType: ''
    returnType: void
    signature: "void lde_send_labelwithdraw_twcard_pwid(struct lde_nbr *ln, uint16_t
      pw_type,\n    uint32_t label)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1229,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:1235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ln
    - pw_type
    - group_id
    argTypes:
    - struct lde_nbr*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1223
    functionDepth: 5
    functionLinenumber: 1223
    functionLinenumberEnd: 1236
    functionName: lde_send_labelwithdraw_pwid_wcard
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_send_labelwithdraw
    - memset
    linkageType: ''
    returnType: void
    signature: "void lde_send_labelwithdraw_pwid_wcard(struct lde_nbr *ln, uint16_t
      pw_type,\n    uint32_t group_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lde_fec2map
      Src: /src/frr/ldpd/lde.c:1246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1262,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1263,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:1267,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1270,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1272,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - ln
    - fn
    - wcard
    - label
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    - struct map*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1238
    functionDepth: 4
    functionLinenumber: 1238
    functionLinenumberEnd: 1273
    functionName: lde_send_labelrelease
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - SET_FLAG
    - lde_imsg_compose_ldpe
    - lde_fec2map
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lde_send_labelrelease(struct lde_nbr *ln, struct fec_node *fn,\n
      \   struct map *wcard, uint32_t label)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lde_fec2map
      Src: /src/frr/ldpd/lde.c:1284,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:1295,1
    - Dst: memcpy
      Src: /src/frr/ldpd/lde.c:1298,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1306,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1309,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1312,1
    - Dst: lde_req_add
      Src: /src/frr/ldpd/lde.c:1316,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1321,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1324,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1327,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1329,1
    - Dst: lde_wildcard_apply
      Src: /src/frr/ldpd/lde.c:1330,1
    - Dst: lde_req_add
      Src: /src/frr/ldpd/lde.c:1333,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 4
    argNames:
    - ln
    - fn
    - wcard
    - single
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    - struct map*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1275
    functionDepth: 4
    functionLinenumber: 1275
    functionLinenumberEnd: 1336
    functionName: lde_send_labelrequest
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fec_find
    - fatalx
    - lde_wildcard_apply
    - lde_req_add
    - lde_imsg_compose_ldpe
    - lde_fec2map
    - RB_FOREACH
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lde_send_labelrequest(struct lde_nbr *ln, struct fec_node *fn,\n\t\t
      \     struct map *wcard, int single)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1343,1
    - Dst: lde_send_labelrequest
      Src: /src/frr/ldpd/lde.c:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ln
    - af
    argTypes:
    - struct lde_nbr*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1338
    functionDepth: 5
    functionLinenumber: 1338
    functionLinenumberEnd: 1348
    functionName: lde_send_labelrequest_wcard
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - memset
    - lde_send_labelrequest
    linkageType: ''
    returnType: void
    signature: void lde_send_labelrequest_wcard(struct lde_nbr *ln, uint16_t af)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1356,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ln
    - status_code
    - msg_id
    - msg_type
    argTypes:
    - struct lde_nbr*
    - uint32_t
    - uint32_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1350
    functionDepth: 4
    functionLinenumber: 1350
    functionLinenumberEnd: 1364
    functionName: lde_send_notification
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_imsg_compose_ldpe
    - memset
    linkageType: ''
    returnType: void
    signature: "void lde_send_notification(struct lde_nbr *ln, uint32_t status_code,
      uint32_t msg_id,\n    uint16_t msg_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1371,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1376,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ln
    - af
    argTypes:
    - struct lde_nbr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1366
    functionDepth: 4
    functionLinenumber: 1366
    functionLinenumberEnd: 1380
    functionName: lde_send_notification_eol_prefix
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - lde_imsg_compose_ldpe
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_send_notification_eol_prefix(struct lde_nbr *ln, int af)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/lde.c:1387,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1392,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ln
    - pw_type
    argTypes:
    - struct lde_nbr*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1382
    functionDepth: 4
    functionLinenumber: 1382
    functionLinenumberEnd: 1396
    functionName: lde_send_notification_eol_pwid
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - lde_imsg_compose_ldpe
    - memset
    linkageType: ''
    returnType: void
    signature: void lde_send_notification_eol_pwid(struct lde_nbr *ln, uint16_t pw_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct lde_nbr*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1398
    functionDepth: 0
    functionLinenumber: 1398
    functionLinenumberEnd: 1402
    functionName: lde_nbr_compare
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lde_nbr_compare(const struct lde_nbr *a, const struct lde_nbr *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/lde.c:1409,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:1410,1
    - Dst: id::id
      Src: /src/frr/ldpd/lde.c:1412,1
    - Dst: v4_enabled::v4_enabled
      Src: /src/frr/ldpd/lde.c:1413,1
    - Dst: v6_enabled::v6_enabled
      Src: /src/frr/ldpd/lde.c:1414,1
    - Dst: flags::flags
      Src: /src/frr/ldpd/lde.c:1415,1
    - Dst: fec_init
      Src: /src/frr/ldpd/lde.c:1417,1
    - Dst: fec_init
      Src: /src/frr/ldpd/lde.c:1418,1
    - Dst: fec_init
      Src: /src/frr/ldpd/lde.c:1419,1
    - Dst: fec_init
      Src: /src/frr/ldpd/lde.c:1420,1
    - Dst: fec_init
      Src: /src/frr/ldpd/lde.c:1421,1
    - Dst: fec_init
      Src: /src/frr/ldpd/lde.c:1422,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/lde.c:1424,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:1426,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:1427,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - peerid
    - new
    argTypes:
    - uint32_t
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1404
    functionDepth: 1
    functionLinenumber: 1404
    functionLinenumberEnd: 1430
    functionName: lde_nbr_new
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - v4_enabled::v4_enabled
    - fatalx
    - fec_init
    - id::id
    - RB_INSERT
    - TAILQ_INIT
    - calloc
    - flags::flags
    - v6_enabled::v6_enabled
    - fatal
    linkageType: ''
    returnType: struct lde_nbr
    signature: 'struct lde_nbr *

      lde_nbr_new(uint32_t peerid, struct lde_nbr *new)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1445,1
    - Dst: lde_rlfa_update_clients
      Src: /src/frr/ldpd/lde.c:1449,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:1451,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde.c:1455,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1467,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:1468,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1470,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:1473,1
    - Dst: l2vpn_pw_reset
      Src: /src/frr/ldpd/lde.c:1483,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde.c:1490,1
    - Dst: lde_address_list_free
      Src: /src/frr/ldpd/lde.c:1495,1
    - Dst: fec_clear
      Src: /src/frr/ldpd/lde.c:1497,1
    - Dst: fec_clear
      Src: /src/frr/ldpd/lde.c:1498,1
    - Dst: fec_clear
      Src: /src/frr/ldpd/lde.c:1499,1
    - Dst: fec_clear
      Src: /src/frr/ldpd/lde.c:1500,1
    - Dst: fec_clear
      Src: /src/frr/ldpd/lde.c:1501,1
    - Dst: fec_clear
      Src: /src/frr/ldpd/lde.c:1502,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/lde.c:1504,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:1506,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 1
    argNames:
    - ln
    argTypes:
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1432
    functionDepth: 5
    functionLinenumber: 1432
    functionLinenumberEnd: 1507
    functionName: lde_nbr_del
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - lde_address_list_free
    - LIST_FOREACH
    - lde_address_find
    - RB_REMOVE
    - fec_clear
    - CHECK_FLAG
    - free
    - l2vpn_pw_reset
    - SET_FLAG
    - lde_rlfa_update_clients
    - lde_send_delete_klabel
    - RB_FOREACH
    - lde_send_labelwithdraw
    linkageType: ''
    returnType: void
    signature: void lde_nbr_del(struct lde_nbr *ln)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/lde.c:1516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peerid
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1517
    functionName: lde_nbr_find
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct lde_nbr
    signature: 'struct lde_nbr *

      lde_nbr_find(uint32_t peerid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1519
    functionDepth: 0
    functionLinenumber: 1519
    functionLinenumberEnd: 1529
    functionName: lde_nbr_find_by_lsrid
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    linkageType: ''
    returnType: struct lde_nbr
    signature: 'struct lde_nbr *

      lde_nbr_find_by_lsrid(struct in_addr addr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1536,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde.c:1537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - af
    - addr
    argTypes:
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1531
    functionDepth: 1
    functionLinenumber: 1531
    functionLinenumberEnd: 1541
    functionName: lde_nbr_find_by_addr
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - lde_address_find
    linkageType: ''
    returnType: struct lde_nbr
    signature: 'struct lde_nbr *

      lde_nbr_find_by_addr(int af, union ldpd_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde.c:1548,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/lde.c:1549,1
    - Dst: lde_nbr_del
      Src: /src/frr/ldpd/lde.c:1551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1543
    functionDepth: 6
    functionLinenumber: 1543
    functionLinenumberEnd: 1553
    functionName: lde_nbr_clear
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - RB_EMPTY
    - RB_ROOT
    - lde_nbr_del
    linkageType: ''
    returnType: void
    signature: void lde_nbr_clear(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1563,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1577,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:1582,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/lde.c:1583,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde.c:1587,1
    - Dst: lde_send_change_klabel
      Src: /src/frr/ldpd/lde.c:1592,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 3
    argNames:
    - ln
    - lde_addr
    - removed
    argTypes:
    - struct lde_nbr*
    - struct lde_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1555
    functionDepth: 5
    functionLinenumber: 1555
    functionLinenumberEnd: 1597
    functionName: lde_nbr_addr_update
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fec_find
    - LIST_FOREACH
    - ldp_addrcmp
    - lde_send_change_klabel
    - lde_send_delete_klabel
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void lde_nbr_addr_update(struct lde_nbr *ln, struct lde_addr *lde_addr,
      int removed)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1606,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:1609,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde.c:1615,1
    - Dst: lde_send_change_klabel
      Src: /src/frr/ldpd/lde.c:1618,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - new_config
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1599
    functionDepth: 5
    functionLinenumber: 1599
    functionLinenumberEnd: 1621
    functionName: lde_allow_broken_lsp_update
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - lde_send_delete_klabel
    - LIST_FOREACH
    - RB_FOREACH
    - lde_send_change_klabel
    linkageType: ''
    returnType: void
    signature: void lde_allow_broken_lsp_update(int new_config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/lde.c:1626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct lde_map*
    - struct lde_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1623
    functionDepth: 2
    functionLinenumber: 1623
    functionLinenumberEnd: 1628
    functionName: lde_map_compare
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - ldp_addrcmp
    linkageType: ''
    returnType: int
    signature: int lde_map_compare(const struct lde_map *a, const struct lde_map *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/lde.c:1635,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:1637,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:1643,1
    - Dst: fec_insert
      Src: /src/frr/ldpd/lde.c:1645,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:1646,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde.c:1646,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde.c:1649,1
    - Dst: fec_insert
      Src: /src/frr/ldpd/lde.c:1651,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:1652,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde.c:1652,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ln
    - fn
    - sent
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1630
    functionDepth: 1
    functionLinenumber: 1630
    functionLinenumberEnd: 1656
    functionName: lde_map_add
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - log_fec
    - RB_INSERT
    - fec_insert
    - calloc
    - log_warnx
    - fatal
    linkageType: ''
    returnType: struct lde_map
    signature: 'struct lde_map *

      lde_map_add(struct lde_nbr *ln, struct fec_node *fn, int sent)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde.c:1662,1
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde.c:1664,1
    - Dst: lde_map_free
      Src: /src/frr/ldpd/lde.c:1666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ln
    - me
    - sent
    argTypes:
    - struct lde_nbr*
    - struct lde_map*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1667
    functionName: lde_map_del
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - lde_map_free
    - fec_remove
    linkageType: ''
    returnType: void
    signature: void lde_map_del(struct lde_nbr *ln, struct lde_map *me, int sent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/lde.c:1674,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:1675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1669
    functionDepth: 1
    functionLinenumber: 1669
    functionLinenumberEnd: 1676
    functionName: lde_map_free
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - free
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void lde_map_free(void *ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/lde.c:1683,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:1685,1
    - Dst: fec_insert
      Src: /src/frr/ldpd/lde.c:1688,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:1689,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde.c:1689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ln
    - fn
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1678
    functionDepth: 1
    functionLinenumber: 1678
    functionLinenumberEnd: 1692
    functionName: lde_map_pending_add
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - log_fec
    - fec_insert
    - calloc
    - log_warnx
    - fatal
    linkageType: ''
    returnType: struct fec
    signature: 'struct fec *

      lde_map_pending_add(struct lde_nbr *ln, struct fec_node *fn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde.c:1697,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:1698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ln
    - map
    argTypes:
    - struct lde_nbr*
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1694
    functionDepth: 1
    functionLinenumber: 1694
    functionLinenumberEnd: 1699
    functionName: lde_map_pending_del
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fec_remove
    - free
    linkageType: ''
    returnType: void
    signature: void lde_map_pending_del(struct lde_nbr *ln, struct fec *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/lde.c:1709,1
    - Dst: fec_insert
      Src: /src/frr/ldpd/lde.c:1713,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:1714,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde.c:1715,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:1716,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ln
    - fec
    - sent
    argTypes:
    - struct lde_nbr*
    - struct fec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1701
    functionDepth: 1
    functionLinenumber: 1701
    functionLinenumberEnd: 1722
    functionName: lde_req_add
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - log_fec
    - free
    - fec_insert
    - log_warnx
    - calloc
    linkageType: ''
    returnType: struct lde_req
    signature: 'struct lde_req *

      lde_req_add(struct lde_nbr *ln, struct fec *fec, int sent)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde.c:1728,1
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde.c:1730,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:1732,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ln
    - lre
    - sent
    argTypes:
    - struct lde_nbr*
    - struct lde_req*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1724
    functionDepth: 1
    functionLinenumber: 1724
    functionLinenumberEnd: 1733
    functionName: lde_req_del
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - fec_remove
    - free
    linkageType: ''
    returnType: void
    signature: void lde_req_del(struct lde_nbr *ln, struct lde_req *lre, int sent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/lde.c:1740,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:1742,1
    - Dst: fec_insert
      Src: /src/frr/ldpd/lde.c:1746,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:1747,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde.c:1747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ln
    - fn
    argTypes:
    - struct lde_nbr*
    - struct fec_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1735
    functionDepth: 1
    functionLinenumber: 1735
    functionLinenumberEnd: 1750
    functionName: lde_wdraw_add
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - log_fec
    - fec_insert
    - calloc
    - log_warnx
    - fatal
    linkageType: ''
    returnType: struct lde_wdraw
    signature: 'struct lde_wdraw *

      lde_wdraw_add(struct lde_nbr *ln, struct fec_node *fn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde.c:1755,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:1756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ln
    - lw
    argTypes:
    - struct lde_nbr*
    - struct lde_wdraw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1752
    functionDepth: 1
    functionLinenumber: 1752
    functionLinenumberEnd: 1757
    functionName: lde_wdraw_del
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fec_remove
    - free
    linkageType: ''
    returnType: void
    signature: void lde_wdraw_del(struct lde_nbr *ln, struct lde_wdraw *lw)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1767,1
    - Dst: lde_send_labelwithdraw_wcard
      Src: /src/frr/ldpd/lde.c:1768,1
    - Dst: lde_send_labelwithdraw_wcard
      Src: /src/frr/ldpd/lde.c:1770,1
    - Dst: lde_send_labelwithdraw_wcard
      Src: /src/frr/ldpd/lde.c:1772,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1776,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:1791,1
    - Dst: lde_update_label
      Src: /src/frr/ldpd/lde.c:1794,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1796,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde.c:1797,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1799,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1800,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1759
    functionDepth: 7
    functionLinenumber: 1759
    functionLinenumberEnd: 1801
    functionName: lde_change_egress_label
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - fatalx
    - lde_send_labelmapping
    - lde_send_labelwithdraw_wcard
    - lde_imsg_compose_ldpe
    - RB_FOREACH
    - lde_update_label
    linkageType: ''
    returnType: void
    signature: void lde_change_egress_label(int af)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1812,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:1825,1
    - Dst: lde_update_label
      Src: /src/frr/ldpd/lde.c:1836,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1839,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:1840,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1844,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde.c:1845,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1849,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1850,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1803
    functionDepth: 7
    functionLinenumber: 1803
    functionLinenumberEnd: 1852
    functionName: lde_change_allocate_filter
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - fatalx
    - lde_update_label
    - lde_send_labelmapping
    - lde_imsg_compose_ldpe
    - RB_FOREACH
    - lde_send_labelwithdraw
    linkageType: ''
    returnType: void
    signature: void lde_change_allocate_filter(int af)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:1877,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1880,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1881,1
    - Dst: lde_send_labelwithdraw_wcard
      Src: /src/frr/ldpd/lde.c:1883,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1888,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1907,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1909,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:1912,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde.c:1915,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:1917,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1854
    functionDepth: 7
    functionLinenumber: 1854
    functionLinenumberEnd: 1920
    functionName: lde_change_advertise_filter
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fec_find
    - fatalx
    - lde_send_labelmapping
    - lde_acl_check
    - lde_send_labelwithdraw_wcard
    - lde_imsg_compose_ldpe
    - RB_FOREACH
    - lde_send_labelwithdraw
    linkageType: ''
    returnType: void
    signature: void lde_change_advertise_filter(int af)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:1951,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1954,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1955,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1960,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1963,1
    - Dst: lde_map_del
      Src: /src/frr/ldpd/lde.c:1965,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:1968,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:1975,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:1993,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde.c:1995,1
    - Dst: lde_map_del
      Src: /src/frr/ldpd/lde.c:1997,1
    - Dst: lde_send_labelrequest_wcard
      Src: /src/frr/ldpd/lde.c:2000,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:2003,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 55
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1923
    functionDepth: 6
    functionLinenumber: 1923
    functionLinenumberEnd: 2005
    functionName: lde_change_accept_filter
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fec_find
    - fatalx
    - lde_send_labelrequest_wcard
    - lde_acl_check
    - CHECK_FLAG
    - lde_map_del
    - lde_imsg_compose_ldpe
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void lde_change_accept_filter(int af)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2019,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:2040,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde.c:2043,1
    - Dst: lde_update_label
      Src: /src/frr/ldpd/lde.c:2046,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2047,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde.c:2048,1
    - Dst: lde_update_label
      Src: /src/frr/ldpd/lde.c:2053,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2054,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde.c:2055,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2059,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:2060,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2007
    functionDepth: 7
    functionLinenumber: 2007
    functionLinenumberEnd: 2062
    functionName: lde_change_expnull_for_filter
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - fatalx
    - lde_send_labelmapping
    - lde_acl_check
    - lde_imsg_compose_ldpe
    - RB_FOREACH
    - lde_update_label
    linkageType: ''
    returnType: void
    signature: void lde_change_expnull_for_filter(int af)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde.c:2069,1
    - Dst: calloc::calloc
      Src: /src/frr/ldpd/lde.c:2072,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde.c:2073,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/ldpd/lde.c:2077,1
    - Dst: entry::entry
      Src: /src/frr/ldpd/lde.c:2077,1
    - Dst: lde_nbr_addr_update
      Src: /src/frr/ldpd/lde.c:2080,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ln
    - lde_addr
    argTypes:
    - struct lde_nbr*
    - struct lde_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2083
      start: 2064
    functionDepth: 6
    functionLinenumber: 2064
    functionLinenumberEnd: 2083
    functionName: lde_address_add
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - lde_address_find
    - entry::entry
    - lde_nbr_addr_update
    - calloc::calloc
    - TAILQ_INSERT_TAIL
    - fatal
    linkageType: ''
    returnType: int
    signature: int lde_address_add(struct lde_nbr *ln, struct lde_addr *lde_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde.c:2088,1
    - Dst: lde_nbr_addr_update
      Src: /src/frr/ldpd/lde.c:2093,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/ldpd/lde.c:2095,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:2096,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ln
    - lde_addr
    argTypes:
    - struct lde_nbr*
    - struct lde_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2099
      start: 2085
    functionDepth: 6
    functionLinenumber: 2085
    functionLinenumberEnd: 2099
    functionName: lde_address_del
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - lde_nbr_addr_update
    - free
    - lde_address_find
    - TAILQ_REMOVE
    linkageType: ''
    returnType: int
    signature: int lde_address_del(struct lde_nbr *ln, struct lde_addr *lde_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/ldpd/lde.c:2106,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/lde.c:2108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ln
    - af
    - addr
    argTypes:
    - struct lde_nbr*
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2101
    functionDepth: 2
    functionLinenumber: 2101
    functionLinenumberEnd: 2112
    functionName: lde_address_find
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 5
    functionsReached:
    - ldp_addrcmp
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct lde_addr
    signature: 'struct lde_addr *

      lde_address_find(struct lde_nbr *ln, int af, union ldpd_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_POP_FIRST
      Src: /src/frr/ldpd/lde.c:2119,1
    - Dst: free
      Src: /src/frr/ldpd/lde.c:2120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ln
    argTypes:
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2114
    functionDepth: 1
    functionLinenumber: 2114
    functionLinenumberEnd: 2121
    functionName: lde_address_list_free
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - TAILQ_POP_FIRST
    - free
    linkageType: ''
    returnType: void
    signature: void lde_address_list_free(struct lde_nbr *ln)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_sync_init
      Src: /src/frr/ldpd/lde.c:2128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2129
      start: 2126
    functionDepth: 1
    functionLinenumber: 2126
    functionLinenumberEnd: 2129
    functionName: zclient_sync_retry
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - zclient_sync_init
    linkageType: ''
    returnType: void
    signature: void zclient_sync_retry(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/ldpd/lde.c:2143,1
    - Dst: zclient_socket_connect
      Src: /src/frr/ldpd/lde.c:2149,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:2150,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/lde.c:2154,1
    - Dst: zclient_send_hello
      Src: /src/frr/ldpd/lde.c:2157,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:2158,1
    - Dst: lm_label_manager_connect
      Src: /src/frr/ldpd/lde.c:2163,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:2164,1
    - Dst: lde_label_list_init
      Src: /src/frr/ldpd/lde.c:2169,1
    - Dst: zclient_stop
      Src: /src/frr/ldpd/lde.c:2176,1
    - Dst: zclient_free
      Src: /src/frr/ldpd/lde.c:2177,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/lde.c:2181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2182
      start: 2136
    functionDepth: 5
    functionLinenumber: 2136
    functionLinenumberEnd: 2182
    functionName: zclient_sync_init
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 2
    functionsReached:
    - zclient_stop
    - zclient_new
    - lde_label_list_init
    - zclient_free
    - sock_set_nonblock
    - event_add_timer
    - log_warnx
    - lm_label_manager_connect
    - zclient_socket_connect
    - zclient_send_hello
    linkageType: ''
    returnType: void
    signature: void zclient_sync_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/frr/ldpd/lde.c:2187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2184
    functionDepth: 0
    functionLinenumber: 2184
    functionLinenumberEnd: 2188
    functionName: lde_del_label_chunk
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void lde_del_label_chunk(void *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lm_release_label_chunk
      Src: /src/frr/ldpd/lde.c:2195,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:2197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2190
    functionDepth: 4
    functionLinenumber: 2190
    functionLinenumberEnd: 2201
    functionName: lde_release_label_chunk
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - log_warnx
    - lm_release_label_chunk
    linkageType: ''
    returnType: int
    signature: int lde_release_label_chunk(uint32_t start, uint32_t end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: debug_labels
      Src: /src/frr/ldpd/lde.c:2209,1
    - Dst: lm_get_label_chunk
      Src: /src/frr/ldpd/lde.c:2210,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:2213,1
    - Dst: on_get_label_chunk_response
      Src: /src/frr/ldpd/lde.c:2217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2220
      start: 2203
    functionDepth: 5
    functionLinenumber: 2203
    functionLinenumberEnd: 2220
    functionName: lde_get_label_chunk
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 0
    functionsReached:
    - on_get_label_chunk_response
    - debug_labels
    - log_warnx
    - lm_get_label_chunk
    linkageType: ''
    returnType: int
    signature: int lde_get_label_chunk(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/ldpd/lde.c:2225,1
    - Dst: lde_get_label_chunk
      Src: /src/frr/ldpd/lde.c:2229,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:2230,1
    - Dst: sleep
      Src: /src/frr/ldpd/lde.c:2231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2233
      start: 2222
    functionDepth: 6
    functionLinenumber: 2222
    functionLinenumberEnd: 2233
    functionName: lde_label_list_init
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - lde_get_label_chunk
    - log_warnx
    - list_new
    - sleep
    linkageType: ''
    returnType: void
    signature: void lde_label_list_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: debug_labels
      Src: /src/frr/ldpd/lde.c:2240,1
    - Dst: calloc
      Src: /src/frr/ldpd/lde.c:2242,1
    - Dst: log_warn
      Src: /src/frr/ldpd/lde.c:2244,1
    - Dst: listnode_add
      Src: /src/frr/ldpd/lde.c:2252,1
    - Dst: listtail
      Src: /src/frr/ldpd/lde.c:2256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2257
      start: 2235
    functionDepth: 2
    functionLinenumber: 2235
    functionLinenumberEnd: 2257
    functionName: on_get_label_chunk_response
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - listtail
    - listnode_add
    - debug_labels
    - log_warn
    - calloc
    linkageType: ''
    returnType: void
    signature: void on_get_label_chunk_response(uint32_t start, uint32_t end)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ldpd/lde.c:2266,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/lde.c:2269,1
    - Dst: if
      Src: /src/frr/ldpd/lde.c:2271,1
    - Dst: lde_release_label_chunk
      Src: /src/frr/ldpd/lde.c:2272,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde.c:2273,1
    - Dst: listnode_delete
      Src: /src/frr/ldpd/lde.c:2275,1
    - Dst: lde_del_label_chunk
      Src: /src/frr/ldpd/lde.c:2276,1
    - Dst: lde_get_next_label
      Src: /src/frr/ldpd/lde.c:2287,1
    - Dst: listgetdata
      Src: /src/frr/ldpd/lde.c:2295,1
    - Dst: if
      Src: /src/frr/ldpd/lde.c:2302,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:2303,1
    - Dst: listnextnode
      Src: /src/frr/ldpd/lde.c:2308,1
    - Dst: end
      Src: /src/frr/ldpd/lde.c:2311,1
    - Dst: listtail
      Src: /src/frr/ldpd/lde.c:2315,1
    - Dst: if
      Src: /src/frr/ldpd/lde.c:2317,1
    - Dst: lde_get_label_chunk
      Src: /src/frr/ldpd/lde.c:2317,1
    - Dst: log_warn
      Src: /src/frr/ldpd/lde.c:2318,1
    - Dst: strcmp
      Src: /src/frr/ldpd/lde.c:2329,1
    - Dst: strcmp
      Src: /src/frr/ldpd/lde.c:2332,1
    - Dst: strcmp
      Src: /src/frr/ldpd/lde.c:2333,1
    - Dst: strcmp
      Src: /src/frr/ldpd/lde.c:2336,1
    - Dst: strcmp
      Src: /src/frr/ldpd/lde.c:2337,1
    - Dst: strcmp
      Src: /src/frr/ldpd/lde.c:2340,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:2352,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2354,1
    - Dst: IS_MPLS_UNRESERVED_LABEL
      Src: /src/frr/ldpd/lde.c:2356,1
    - Dst: if
      Src: /src/frr/ldpd/lde.c:2361,1
    - Dst: if
      Src: /src/frr/ldpd/lde.c:2365,1
    - Dst: if
      Src: /src/frr/ldpd/lde.c:2380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:2380,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/lde.c:2386,1
    - Dst: IS_MPLS_RESERVED_LABEL
      Src: /src/frr/ldpd/lde.c:2387,1
    - Dst: lde_update_label
      Src: /src/frr/ldpd/lde.c:2389,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2391,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde.c:2392,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:2400,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2415,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:2428,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:2434,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde.c:2440,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:2446,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2447,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:2448,1
    - Dst: lde_free_label
      Src: /src/frr/ldpd/lde.c:2449,1
    - Dst: lde_update_label
      Src: /src/frr/ldpd/lde.c:2451,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2453,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde.c:2454,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2459,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde.c:2460,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 38
    argCount: 1
    argNames:
    - label
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2462
      start: 2259
    functionDepth: 7
    functionLinenumber: 2259
    functionLinenumberEnd: 2462
    functionName: lde_free_label
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - lde_free_label
    - fatalx
    - lde_send_labelmapping
    - lde_get_label_chunk
    - ALL_LIST_ELEMENTS_RO
    - lde_imsg_compose_ldpe
    - listgetdata
    - if
    - end
    - log_debug
    - listnextnode
    - LIST_FOREACH
    - lde_release_label_chunk
    - lde_get_next_label
    - lde_del_label_chunk
    - UNSET_FLAG
    - listnode_delete
    - IS_MPLS_RESERVED_LABEL
    - lde_update_label
    - lde_send_labelwithdraw
    - listtail
    - CHECK_FLAG
    - strcmp
    - IS_MPLS_UNRESERVED_LABEL
    - SET_FLAG
    - log_warnx
    - RB_FOREACH
    - log_warn
    linkageType: ''
    returnType: void
    signature: void lde_free_label(uint32_t label)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/lde.c:2474,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2477,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde.c:2489,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde.c:2492,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde.c:2493,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde.c:2495,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde.c:2496,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde.c:2497,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2500
      start: 2464
    functionDepth: 5
    functionLinenumber: 2464
    functionLinenumberEnd: 2500
    functionName: lde_route_update_release_all
    functionSourceFile: /src/frr/ldpd/lde.c
    functionUses: 1
    functionsReached:
    - LIST_FOREACH
    - fatalx
    - SET_FLAG
    - lde_send_delete_klabel
    - RB_FOREACH
    - lde_send_labelwithdraw
    - log_debug
    linkageType: ''
    returnType: void
    signature: void lde_route_update_release_all(int af)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: if_get_hello_holdtime
      Src: /src/frr/ldpd/hello.c:37,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/hello.c:39,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:44,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:45,1
    - Dst: fatalx
      Src: /src/frr/ldpd/hello.c:52,1
    - Dst: tnbr_get_hello_holdtime
      Src: /src/frr/ldpd/hello.c:57,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:59,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/hello.c:64,1
    - Dst: fatalx
      Src: /src/frr/ldpd/hello.c:70,1
    - Dst: fatalx
      Src: /src/frr/ldpd/hello.c:83,1
    - Dst: ldp_is_dual_stack
      Src: /src/frr/ldpd/hello.c:86,1
    - Dst: ibuf_open
      Src: /src/frr/ldpd/hello.c:90,1
    - Dst: fatal
      Src: /src/frr/ldpd/hello.c:91,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:93,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/hello.c:93,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:95,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/hello.c:95,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:96,1
    - Dst: gen_hello_prms_tlv
      Src: /src/frr/ldpd/hello.c:96,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:106,1
    - Dst: gen_opt4_hello_prms_tlv
      Src: /src/frr/ldpd/hello.c:106,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:110,1
    - Dst: gen_opt16_hello_prms_tlv
      Src: /src/frr/ldpd/hello.c:110,1
    - Dst: fatalx
      Src: /src/frr/ldpd/hello.c:114,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:117,1
    - Dst: gen_opt4_hello_prms_tlv
      Src: /src/frr/ldpd/hello.c:117,1
    - Dst: htonl
      Src: /src/frr/ldpd/hello.c:118,1
    - Dst: ldp_is_dual_stack
      Src: /src/frr/ldpd/hello.c:125,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:126,1
    - Dst: gen_ds_hello_prms_tlv
      Src: /src/frr/ldpd/hello.c:126,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/hello.c:129,1
    - Dst: debug_hello_send
      Src: /src/frr/ldpd/hello.c:135,1
    - Dst: af_name
      Src: /src/frr/ldpd/hello.c:136,1
    - Dst: debug_hello_send
      Src: /src/frr/ldpd/hello.c:139,1
    - Dst: log_addr
      Src: /src/frr/ldpd/hello.c:140,1
    - Dst: af_name
      Src: /src/frr/ldpd/hello.c:140,1
    - Dst: fatalx
      Src: /src/frr/ldpd/hello.c:144,1
    - Dst: send_packet
      Src: /src/frr/ldpd/hello.c:147,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/hello.c:148,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 82
    argCount: 3
    argNames:
    - type
    - ia
    - tnbr
    argTypes:
    - enum hello_type
    - struct iface_af*
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 24
    functionDepth: 3
    functionLinenumber: 24
    functionLinenumberEnd: 151
    functionName: send_hello
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 16
    functionsReached:
    - af_name
    - gen_msg_hdr
    - ldp_af_global_get
    - htonl
    - fatalx
    - gen_hello_prms_tlv
    - gen_opt4_hello_prms_tlv
    - send_packet
    - ldp_is_dual_stack
    - log_addr
    - debug_hello_send
    - tnbr_get_hello_holdtime
    - gen_opt16_hello_prms_tlv
    - gen_ldp_hdr
    - if_get_hello_holdtime
    - ibuf_free
    - gen_ds_hello_prms_tlv
    - fatal
    - ibuf_open
    - CHECK_FLAG
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: int send_hello(enum hello_type type, struct iface_af *ia, struct tnbr
      *tnbr)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: tlv_decode_hello_prms
      Src: /src/frr/ldpd/hello.c:172,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:174,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:179,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:183,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:184,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:187,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:188,1
    - Dst: tlv_decode_opt_hello_prms
      Src: /src/frr/ldpd/hello.c:194,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:197,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:202,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:206,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:209,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/hello.c:211,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:212,1
    - Dst: log_addr
      Src: /src/frr/ldpd/hello.c:213,1
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/hello.c:216,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:225,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:226,1
    - Dst: log_addr
      Src: /src/frr/ldpd/hello.c:227,1
    - Dst: memset
      Src: /src/frr/ldpd/hello.c:233,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:234,1
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/hello.c:240,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:241,1
    - Dst: tnbr_find
      Src: /src/frr/ldpd/hello.c:246,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:250,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:251,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/hello.c:252,1
    - Dst: tnbr_check
      Src: /src/frr/ldpd/hello.c:253,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:259,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/hello.c:261,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:262,1
    - Dst: ldpe_acl_check
      Src: /src/frr/ldpd/hello.c:264,1
    - Dst: tnbr_new
      Src: /src/frr/ldpd/hello.c:268,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:269,1
    - Dst: tnbr_update
      Src: /src/frr/ldpd/hello.c:270,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/hello.c:271,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/hello.c:277,1
    - Dst: debug_hello_recv
      Src: /src/frr/ldpd/hello.c:283,1
    - Dst: log_hello_src
      Src: /src/frr/ldpd/hello.c:284,1
    - Dst: log_addr
      Src: /src/frr/ldpd/hello.c:284,1
    - Dst: adj_find
      Src: /src/frr/ldpd/hello.c:287,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/hello.c:295,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:309,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/hello.c:311,1
    - Dst: adj_del
      Src: /src/frr/ldpd/hello.c:313,1
    - Dst: nbr_adj_count
      Src: /src/frr/ldpd/hello.c:324,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/hello.c:325,1
    - Dst: nbr_adj_count
      Src: /src/frr/ldpd/hello.c:330,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/hello.c:331,1
    - Dst: fatalx
      Src: /src/frr/ldpd/hello.c:336,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/hello.c:344,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/hello.c:346,1
    - Dst: adj_del
      Src: /src/frr/ldpd/hello.c:348,1
    - Dst: nbr_find_addr
      Src: /src/frr/ldpd/hello.c:352,1
    - Dst: log_debug
      Src: /src/frr/ldpd/hello.c:354,1
    - Dst: log_addr
      Src: /src/frr/ldpd/hello.c:354,1
    - Dst: adj_del
      Src: /src/frr/ldpd/hello.c:357,1
    - Dst: adj_new
      Src: /src/frr/ldpd/hello.c:363,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/hello.c:366,1
    - Dst: ldp_sync_fsm_adj_event
      Src: /src/frr/ldpd/hello.c:368,1
    - Dst: nbr_new
      Src: /src/frr/ldpd/hello.c:380,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:384,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:385,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/hello.c:387,1
    - Dst: nbr_pending_idtimer
      Src: /src/frr/ldpd/hello.c:392,1
    - Dst: nbr_stop_idtimer
      Src: /src/frr/ldpd/hello.c:393,1
    - Dst: MIN
      Src: /src/frr/ldpd/hello.c:403,1
    - Dst: if_get_hello_holdtime
      Src: /src/frr/ldpd/hello.c:403,1
    - Dst: MIN
      Src: /src/frr/ldpd/hello.c:409,1
    - Dst: tnbr_get_hello_holdtime
      Src: /src/frr/ldpd/hello.c:409,1
    - Dst: adj_start_itimer
      Src: /src/frr/ldpd/hello.c:412,1
    - Dst: adj_stop_itimer
      Src: /src/frr/ldpd/hello.c:414,1
    - Dst: nbr_pending_idtimer
      Src: /src/frr/ldpd/hello.c:416,1
    - Dst: nbr_session_active_role
      Src: /src/frr/ldpd/hello.c:417,1
    - Dst: nbr_pending_connect
      Src: /src/frr/ldpd/hello.c:417,1
    - Dst: nbr_establish_connection
      Src: /src/frr/ldpd/hello.c:418,1
    CyclomaticComplexity: 69
    EdgeCount: 69
    ICount: 159
    argCount: 8
    argNames:
    - lsr_id
    - msg
    - af
    - src
    - iface
    - multicast
    - buf
    - len
    argTypes:
    - struct in_addr
    - struct ldp_msg*
    - int
    - union ldpd_addr*
    - struct iface*
    - int
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 419
    functionName: recv_hello
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 1
    functionsReached:
    - nbr_adj_count
    - ldp_af_conf_get
    - tnbr_update
    - adj_find
    - adj_del
    - ldpe_acl_check
    - iface_af_get
    - tlv_decode_opt_hello_prms
    - MIN
    - nbr_establish_connection
    - tlv_decode_hello_prms
    - fatalx
    - memset
    - IN6_IS_SCOPE_EMBED
    - nbr_pending_connect
    - RB_INSERT
    - log_debug
    - log_addr
    - nbr_pending_idtimer
    - nbr_new
    - bad_addr
    - tnbr_get_hello_holdtime
    - UNSET_FLAG
    - adj_start_itimer
    - nbr_find_ldpid
    - if_get_hello_holdtime
    - tnbr_find
    - session_shutdown
    - tnbr_new
    - log_hello_src
    - debug_hello_recv
    - adj_stop_itimer
    - ldp_addrcmp
    - adj_new
    - CHECK_FLAG
    - nbr_session_active_role
    - SET_FLAG
    - ldp_sync_fsm_adj_event
    - nbr_find_addr
    - nbr_stop_idtimer
    - tnbr_check
    - log_warnx
    linkageType: ''
    returnType: void
    signature: "void recv_hello(struct in_addr lsr_id, struct ldp_msg *msg, int af,\n
      \   union ldpd_addr *src, struct iface *iface, int multicast, char *buf,\n    uint16_t
      len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/hello.c:426,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:427,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:428,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:429,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:430,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/hello.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - holdtime
    - flags
    argTypes:
    - struct ibuf*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 433
    functionName: gen_hello_prms_tlv
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 1
    functionsReached:
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_hello_prms_tlv(struct ibuf *buf, uint16_t holdtime, uint16_t
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/hello.c:440,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:441,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:442,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/hello.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - type
    - value
    argTypes:
    - struct ibuf*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 435
    functionDepth: 2
    functionLinenumber: 435
    functionLinenumberEnd: 446
    functionName: gen_opt4_hello_prms_tlv
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 1
    functionsReached:
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_opt4_hello_prms_tlv(struct ibuf *buf, uint16_t type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/hello.c:453,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:454,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:455,1
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:456,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/hello.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - type
    - value
    argTypes:
    - struct ibuf*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 459
    functionName: gen_opt16_hello_prms_tlv
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 1
    functionsReached:
    - memcpy
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_opt16_hello_prms_tlv(struct ibuf *buf, uint16_t type, uint8_t
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:464,1
    - Dst: htonl
      Src: /src/frr/ldpd/hello.c:465,1
    - Dst: htonl
      Src: /src/frr/ldpd/hello.c:467,1
    - Dst: gen_opt4_hello_prms_tlv
      Src: /src/frr/ldpd/hello.c:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - value
    argTypes:
    - struct ibuf*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 470
    functionName: gen_ds_hello_prms_tlv
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 1
    functionsReached:
    - htonl
    - CHECK_FLAG
    - gen_opt4_hello_prms_tlv
    linkageType: ''
    returnType: int
    signature: int gen_ds_hello_prms_tlv(struct ibuf *buf, uint32_t value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:480,1
    - Dst: htons
      Src: /src/frr/ldpd/hello.c:482,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:484,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:487,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:488,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - buf
    - len
    - holdtime
    - flags
    argTypes:
    - char*
    - uint16_t
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 491
    functionName: tlv_decode_hello_prms
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 1
    functionsReached:
    - ntohs
    - memcpy
    - htons
    linkageType: ''
    returnType: int
    signature: "int tlv_decode_hello_prms(char *buf, uint16_t len, uint16_t *holdtime,\n
      \   uint16_t *flags)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/hello.c:502,1
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:518,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:519,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:526,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:532,1
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:534,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:535,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:542,1
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:544,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:545,1
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:550,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:551,1
    - Dst: ldp_is_dual_stack
      Src: /src/frr/ldpd/hello.c:562,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:565,1
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:566,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:567,1
    - Dst: memcpy
      Src: /src/frr/ldpd/hello.c:569,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:570,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/hello.c:572,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/hello.c:576,1
    - Dst: ntohs
      Src: /src/frr/ldpd/hello.c:576,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 64
    argCount: 7
    argNames:
    - buf
    - len
    - tlvs_rcvd
    - af
    - addr
    - conf_number
    - trans_pref
    argTypes:
    - char*
    - uint16_t
    - int*
    - int
    - union ldpd_addr*
    - uint32_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 586
    functionName: tlv_decode_opt_hello_prms
    functionSourceFile: /src/frr/ldpd/hello.c
    functionUses: 1
    functionsReached:
    - memset
    - CHECK_FLAG
    - ntohs
    - SET_FLAG
    - ldp_is_dual_stack
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int tlv_decode_opt_hello_prms(char *buf, uint16_t len, int *tlvs_rcvd,
      int af,\n    union ldpd_addr *addr, uint32_t *conf_number, uint16_t *trans_pref)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: RB_GENERATE
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void RB_GENERATE(nbrp_head, nbr_params, entry, nbr_params_compare)


      const'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ldpd/neighbor.c:98,1
    - Dst: ntohl
      Src: /src/frr/ldpd/neighbor.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct nbr*
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: nbr_id_compare
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: int
    signature: int nbr_id_compare(const struct nbr *a, const struct nbr *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/neighbor.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct nbr*
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 110
    functionName: nbr_addr_compare
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - ldp_addrcmp
    linkageType: ''
    returnType: int
    signature: int nbr_addr_compare(const struct nbr *a, const struct nbr *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct nbr*
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: nbr_pid_compare
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int nbr_pid_compare(const struct nbr *a, const struct nbr *b)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/neighbor.c:128,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/neighbor.c:136,1
    - Dst: nbr_state_name
      Src: /src/frr/ldpd/neighbor.c:137,1
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:145,1
    - Dst: nbr_state_name
      Src: /src/frr/ldpd/neighbor.c:148,1
    - Dst: nbr_state_name
      Src: /src/frr/ldpd/neighbor.c:149,1
    - Dst: hook_call
      Src: /src/frr/ldpd/neighbor.c:151,1
    - Dst: gettimeofday
      Src: /src/frr/ldpd/neighbor.c:154,1
    - Dst: nbr_stop_itimeout
      Src: /src/frr/ldpd/neighbor.c:160,1
    - Dst: nbr_start_itimeout
      Src: /src/frr/ldpd/neighbor.c:162,1
    - Dst: nbr_start_ktimeout
      Src: /src/frr/ldpd/neighbor.c:166,1
    - Dst: nbr_start_ktimer
      Src: /src/frr/ldpd/neighbor.c:169,1
    - Dst: nbr_act_session_operational
      Src: /src/frr/ldpd/neighbor.c:172,1
    - Dst: nbr_start_ktimer
      Src: /src/frr/ldpd/neighbor.c:173,1
    - Dst: nbr_start_ktimeout
      Src: /src/frr/ldpd/neighbor.c:174,1
    - Dst: send_address_all
      Src: /src/frr/ldpd/neighbor.c:176,1
    - Dst: send_address_all
      Src: /src/frr/ldpd/neighbor.c:178,1
    - Dst: nbr_send_labelmappings
      Src: /src/frr/ldpd/neighbor.c:179,1
    - Dst: tcp_new
      Src: /src/frr/ldpd/neighbor.c:182,1
    - Dst: send_init
      Src: /src/frr/ldpd/neighbor.c:185,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/neighbor.c:186,1
    - Dst: send_init
      Src: /src/frr/ldpd/neighbor.c:189,1
    - Dst: send_keepalive
      Src: /src/frr/ldpd/neighbor.c:190,1
    - Dst: nbr_start_ktimeout
      Src: /src/frr/ldpd/neighbor.c:193,1
    - Dst: send_keepalive
      Src: /src/frr/ldpd/neighbor.c:194,1
    - Dst: ldpe_imsg_compose_lde
      Src: /src/frr/ldpd/neighbor.c:197,1
    - Dst: session_close
      Src: /src/frr/ldpd/neighbor.c:198,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 62
    argCount: 2
    argNames:
    - nbr
    - event
    argTypes:
    - struct nbr*
    - enum nbr_event
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 206
    functionName: nbr_fsm
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 9
    functionsReached:
    - nbr_send_labelmappings
    - send_address_all
    - tcp_new
    - gettimeofday
    - nbr_fsm
    - nbr_start_ktimeout
    - hook_call
    - nbr_start_ktimer
    - send_keepalive
    - log_debug
    - nbr_act_session_operational
    - ldpe_imsg_compose_lde
    - nbr_stop_itimeout
    - session_close
    - nbr_state_name
    - CHECK_FLAG
    - send_init
    - log_warnx
    - nbr_start_itimeout
    linkageType: ''
    returnType: int
    signature: int nbr_fsm(struct nbr *nbr, enum nbr_event event)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:217,1
    - Dst: log_addr
      Src: /src/frr/ldpd/neighbor.c:218,1
    - Dst: calloc
      Src: /src/frr/ldpd/neighbor.c:220,1
    - Dst: fatal
      Src: /src/frr/ldpd/neighbor.c:221,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/neighbor.c:223,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/neighbor.c:233,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/neighbor.c:238,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/neighbor.c:241,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/neighbor.c:245,1
    - Dst: fatalx
      Src: /src/frr/ldpd/neighbor.c:246,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/neighbor.c:247,1
    - Dst: fatalx
      Src: /src/frr/ldpd/neighbor.c:248,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/neighbor.c:250,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/neighbor.c:251,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/neighbor.c:252,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/neighbor.c:253,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/neighbor.c:254,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/neighbor.c:256,1
    - Dst: pfkey_establish
      Src: /src/frr/ldpd/neighbor.c:260,1
    - Dst: fatalx
      Src: /src/frr/ldpd/neighbor.c:261,1
    - Dst: sock_set_md5sig
      Src: /src/frr/ldpd/neighbor.c:263,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/neighbor.c:264,1
    - Dst: pending_conn_find
      Src: /src/frr/ldpd/neighbor.c:269,1
    - Dst: session_accept_nbr
      Src: /src/frr/ldpd/neighbor.c:271,1
    - Dst: pending_conn_del
      Src: /src/frr/ldpd/neighbor.c:272,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 5
    argNames:
    - id
    - af
    - ds_tlv
    - addr
    - scope_id
    argTypes:
    - struct in_addr
    - int
    - int
    - union ldpd_addr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 208
    functionDepth: 6
    functionLinenumber: 208
    functionLinenumberEnd: 276
    functionName: nbr_new
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 9
    functionsReached:
    - fatalx
    - log_addr
    - pfkey_establish
    - RB_INIT
    - ldp_af_conf_get
    - session_accept_nbr
    - RB_INSERT
    - pending_conn_del
    - TAILQ_INIT
    - calloc
    - sock_set_md5sig
    - pending_conn_find
    - nbr_params_find
    - ldp_af_global_get
    - RB_FOREACH
    - fatal
    - log_debug
    linkageType: ''
    returnType: struct nbr
    signature: "struct nbr *\nnbr_new(struct in_addr id, int af, int ds_tlv, union
      ldpd_addr *addr,\n    uint32_t scope_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:283,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/neighbor.c:285,1
    - Dst: pfkey_remove
      Src: /src/frr/ldpd/neighbor.c:287,1
    - Dst: sock_set_md5sig
      Src: /src/frr/ldpd/neighbor.c:289,1
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/neighbor.c:290,1
    - Dst: nbr_pending_connect
      Src: /src/frr/ldpd/neighbor.c:295,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:296,1
    - Dst: nbr_stop_ktimer
      Src: /src/frr/ldpd/neighbor.c:297,1
    - Dst: nbr_stop_ktimeout
      Src: /src/frr/ldpd/neighbor.c:298,1
    - Dst: nbr_stop_itimeout
      Src: /src/frr/ldpd/neighbor.c:299,1
    - Dst: nbr_stop_idtimer
      Src: /src/frr/ldpd/neighbor.c:300,1
    - Dst: mapping_list_clr
      Src: /src/frr/ldpd/neighbor.c:302,1
    - Dst: mapping_list_clr
      Src: /src/frr/ldpd/neighbor.c:303,1
    - Dst: mapping_list_clr
      Src: /src/frr/ldpd/neighbor.c:304,1
    - Dst: mapping_list_clr
      Src: /src/frr/ldpd/neighbor.c:305,1
    - Dst: mapping_list_clr
      Src: /src/frr/ldpd/neighbor.c:306,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/neighbor.c:308,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/neighbor.c:309,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/neighbor.c:312,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/neighbor.c:316,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/neighbor.c:317,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/neighbor.c:318,1
    - Dst: free
      Src: /src/frr/ldpd/neighbor.c:320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 278
    functionDepth: 6
    functionLinenumber: 278
    functionLinenumberEnd: 321
    functionName: nbr_del
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 2
    functionsReached:
    - nbr_fsm
    - pfkey_remove
    - mapping_list_clr
    - nbr_stop_ktimer
    - RB_REMOVE
    - nbr_pending_connect
    - free
    - nbr_stop_itimeout
    - nbr_stop_idtimer
    - EVENT_OFF
    - sock_set_md5sig
    - ldp_af_global_get
    - RB_EMPTY
    - RB_ROOT
    - nbr_stop_ktimeout
    - log_debug
    linkageType: ''
    returnType: void
    signature: void nbr_del(struct nbr *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/neighbor.c:329,1
    - Dst: nbr_find_peerid
      Src: /src/frr/ldpd/neighbor.c:332,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/neighbor.c:336,1
    - Dst: fatalx
      Src: /src/frr/ldpd/neighbor.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 338
    functionName: nbr_update_peerid
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - nbr_find_peerid
    - fatalx
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void nbr_update_peerid(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/neighbor.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsr_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 346
    functionName: nbr_find_ldpid
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 4
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct nbr
    signature: 'struct nbr *

      nbr_find_ldpid(uint32_t lsr_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_MIN
      Src: /src/frr/ldpd/neighbor.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: nbr_get_first_ldpid
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - RB_MIN
    linkageType: ''
    returnType: struct nbr
    signature: struct nbr *nbr_get_first_ldpid(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/neighbor.c:357,1
    - Dst: RB_NEXT
      Src: /src/frr/ldpd/neighbor.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lsr_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 361
    functionName: nbr_get_next_ldpid
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - RB_NEXT
    - nbr_find_ldpid
    linkageType: ''
    returnType: struct nbr
    signature: 'struct nbr *

      nbr_get_next_ldpid(uint32_t lsr_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/neighbor.c:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - af
    - addr
    argTypes:
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 371
    functionName: nbr_find_addr
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 2
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct nbr
    signature: 'struct nbr *

      nbr_find_addr(int af, union ldpd_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/neighbor.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - peerid
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 379
    functionName: nbr_find_peerid
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct nbr
    signature: 'struct nbr *

      nbr_find_peerid(uint32_t peerid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/neighbor.c:387,1
    - Dst: adj_get_af
      Src: /src/frr/ldpd/neighbor.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - nbr
    - af
    argTypes:
    - struct nbr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 392
    functionName: nbr_adj_count
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 1
    functionsReached:
    - adj_get_af
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int nbr_adj_count(struct nbr *nbr, int af)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/neighbor.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: nbr_session_active_role
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 3
    functionsReached:
    - ldp_addrcmp
    linkageType: ''
    returnType: int
    signature: int nbr_session_active_role(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/neighbor.c:409,1
    - Dst: send_keepalive
      Src: /src/frr/ldpd/neighbor.c:412,1
    - Dst: nbr_start_ktimer
      Src: /src/frr/ldpd/neighbor.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 407
    functionDepth: 4
    functionLinenumber: 407
    functionLinenumberEnd: 414
    functionName: nbr_ktimer
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - nbr_start_ktimer
    - send_keepalive
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nbr_ktimer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:423,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/neighbor.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 426
    functionName: nbr_start_ktimer
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_start_ktimer(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 432
    functionName: nbr_stop_ktimer
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 2
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_stop_ktimer(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/neighbor.c:438,1
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:442,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/neighbor.c:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 436
    functionDepth: 2
    functionLinenumber: 436
    functionLinenumberEnd: 445
    functionName: nbr_ktimeout
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - log_debug
    - session_shutdown
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nbr_ktimeout(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:450,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/neighbor.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 447
    functionDepth: 1
    functionLinenumber: 447
    functionLinenumberEnd: 454
    functionName: nbr_start_ktimeout
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_start_ktimeout(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 460
    functionName: nbr_stop_ktimeout
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 2
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_stop_ktimeout(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/neighbor.c:466,1
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:468,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/neighbor.c:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 464
    functionDepth: 6
    functionLinenumber: 464
    functionLinenumberEnd: 471
    functionName: nbr_itimeout
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - nbr_fsm
    - log_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nbr_itimeout(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:479,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/neighbor.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 482
    functionName: nbr_start_itimeout
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_start_itimeout(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 488
    functionName: nbr_stop_itimeout
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 3
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_stop_itimeout(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/neighbor.c:494,1
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:498,1
    - Dst: nbr_establish_connection
      Src: /src/frr/ldpd/neighbor.c:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 501
    functionName: nbr_idtimer
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - nbr_establish_connection
    - log_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void nbr_idtimer(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:525,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/neighbor.c:527,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 528
    functionName: nbr_start_idtimer
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_start_idtimer(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/neighbor.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 534
    functionName: nbr_stop_idtimer
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 2
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void nbr_stop_idtimer(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 540
    functionName: nbr_pending_idtimer
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int nbr_pending_idtimer(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 546
    functionName: nbr_pending_connect
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int nbr_pending_connect(struct nbr *nbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/neighbor.c:550,1
    - Dst: getsockopt
      Src: /src/frr/ldpd/neighbor.c:557,1
    - Dst: log_warn
      Src: /src/frr/ldpd/neighbor.c:558,1
    - Dst: close
      Src: /src/frr/ldpd/neighbor.c:563,1
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:565,1
    - Dst: log_addr
      Src: /src/frr/ldpd/neighbor.c:566,1
    - Dst: strerror
      Src: /src/frr/ldpd/neighbor.c:566,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/neighbor.c:570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 548
    functionDepth: 6
    functionLinenumber: 548
    functionLinenumberEnd: 571
    functionName: nbr_connect_cb
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - nbr_fsm
    - log_addr
    - getsockopt
    - strerror
    - close
    - EVENT_ARG
    - log_warn
    - log_debug
    linkageType: ''
    returnType: void
    signature: void nbr_connect_cb(struct event *thread)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/ldpd/neighbor.c:584,1
    - Dst: log_warn
      Src: /src/frr/ldpd/neighbor.c:586,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/neighbor.c:589,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/neighbor.c:591,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/neighbor.c:595,1
    - Dst: close
      Src: /src/frr/ldpd/neighbor.c:596,1
    - Dst: setsockopt
      Src: /src/frr/ldpd/neighbor.c:599,1
    - Dst: log_warn
      Src: /src/frr/ldpd/neighbor.c:601,1
    - Dst: close
      Src: /src/frr/ldpd/neighbor.c:602,1
    - Dst: sock_set_md5sig
      Src: /src/frr/ldpd/neighbor.c:606,1
    - Dst: sock_set_ipv4_tos
      Src: /src/frr/ldpd/neighbor.c:611,1
    - Dst: log_warn
      Src: /src/frr/ldpd/neighbor.c:612,1
    - Dst: sock_set_ipv6_dscp
      Src: /src/frr/ldpd/neighbor.c:615,1
    - Dst: log_warn
      Src: /src/frr/ldpd/neighbor.c:616,1
    - Dst: addr2sa
      Src: /src/frr/ldpd/neighbor.c:620,1
    - Dst: addr2sa
      Src: /src/frr/ldpd/neighbor.c:621,1
    - Dst: addscope
      Src: /src/frr/ldpd/neighbor.c:623,1
    - Dst: bind
      Src: /src/frr/ldpd/neighbor.c:625,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/neighbor.c:625,1
    - Dst: log_warn
      Src: /src/frr/ldpd/neighbor.c:626,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/neighbor.c:627,1
    - Dst: close
      Src: /src/frr/ldpd/neighbor.c:628,1
    - Dst: nbr_gtsm_check
      Src: /src/frr/ldpd/neighbor.c:632,1
    - Dst: close
      Src: /src/frr/ldpd/neighbor.c:633,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/neighbor.c:641,1
    - Dst: send_hello
      Src: /src/frr/ldpd/neighbor.c:642,1
    - Dst: connect
      Src: /src/frr/ldpd/neighbor.c:645,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/neighbor.c:645,1
    - Dst: event_add_write
      Src: /src/frr/ldpd/neighbor.c:647,1
    - Dst: log_warn
      Src: /src/frr/ldpd/neighbor.c:651,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/neighbor.c:652,1
    - Dst: close
      Src: /src/frr/ldpd/neighbor.c:653,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/neighbor.c:658,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 573
    functionDepth: 6
    functionLinenumber: 573
    functionLinenumberEnd: 661
    functionName: nbr_establish_connection
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 3
    functionsReached:
    - connect
    - nbr_fsm
    - event_add_write
    - socket
    - sock_set_md5sig
    - nbr_params_find
    - setsockopt
    - sock_set_nonblock
    - log_sockaddr
    - addscope
    - nbr_gtsm_check
    - sockaddr_len
    - sock_set_ipv6_dscp
    - send_hello
    - close
    - bind
    - sock_set_ipv4_tos
    - log_warnx
    - RB_FOREACH
    - log_warn
    - addr2sa
    linkageType: ''
    returnType: int
    signature: int nbr_establish_connection(struct nbr *nbr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/neighbor.c:672,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/neighbor.c:675,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/neighbor.c:675,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/neighbor.c:679,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - nbr
    - nbrp
    argTypes:
    - struct nbr*
    - struct nbr_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 683
    functionName: nbr_gtsm_enabled
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ldp_af_conf_get
    linkageType: ''
    returnType: int
    signature: int nbr_gtsm_enabled(struct nbr *nbr, struct nbr_params *nbrp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/neighbor.c:690,1
    - Dst: sock_set_ipv4_minttl
      Src: /src/frr/ldpd/neighbor.c:695,1
    - Dst: sock_set_ipv4_ucast_ttl
      Src: /src/frr/ldpd/neighbor.c:698,1
    - Dst: sock_set_ipv6_minhopcount
      Src: /src/frr/ldpd/neighbor.c:703,1
    - Dst: sock_set_ipv6_ucast_hops
      Src: /src/frr/ldpd/neighbor.c:705,1
    - Dst: fatalx
      Src: /src/frr/ldpd/neighbor.c:709,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - fd
    - af
    - nbrp
    argTypes:
    - int
    - int
    - struct nbr_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 685
    functionDepth: 3
    functionLinenumber: 685
    functionLinenumberEnd: 713
    functionName: nbr_gtsm_setup
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - fatalx
    - sock_set_ipv4_minttl
    - CHECK_FLAG
    - sock_set_ipv6_minhopcount
    - sock_set_ipv4_ucast_ttl
    - sock_set_ipv6_ucast_hops
    linkageType: ''
    returnType: int
    signature: int nbr_gtsm_setup(int fd, int af, struct nbr_params *nbrp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nbr_gtsm_enabled
      Src: /src/frr/ldpd/neighbor.c:718,1
    - Dst: sock_set_ipv4_ucast_ttl
      Src: /src/frr/ldpd/neighbor.c:721,1
    - Dst: sock_set_ipv6_ucast_hops
      Src: /src/frr/ldpd/neighbor.c:728,1
    - Dst: fatalx
      Src: /src/frr/ldpd/neighbor.c:731,1
    - Dst: nbr_gtsm_setup
      Src: /src/frr/ldpd/neighbor.c:737,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/neighbor.c:738,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - fd
    - nbr
    - nbrp
    argTypes:
    - int
    - struct nbr*
    - struct nbr_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 715
    functionDepth: 4
    functionLinenumber: 715
    functionLinenumberEnd: 743
    functionName: nbr_gtsm_check
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 2
    functionsReached:
    - nbr_gtsm_setup
    - fatalx
    - nbr_gtsm_enabled
    - sock_set_ipv4_ucast_ttl
    - log_warnx
    - sock_set_ipv6_ucast_hops
    linkageType: ''
    returnType: int
    signature: int nbr_gtsm_check(int fd, struct nbr *nbr, struct nbr_params *nbrp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nbr_update_peerid
      Src: /src/frr/ldpd/neighbor.c:753,1
    - Dst: ldp_sync_fsm_nbr_event
      Src: /src/frr/ldpd/neighbor.c:755,1
    - Dst: memset
      Src: /src/frr/ldpd/neighbor.c:757,1
    - Dst: ldpe_imsg_compose_lde
      Src: /src/frr/ldpd/neighbor.c:762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 745
    functionDepth: 2
    functionLinenumber: 745
    functionLinenumberEnd: 764
    functionName: nbr_act_session_operational
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 1
    functionsReached:
    - ldp_sync_fsm_nbr_event
    - ldpe_imsg_compose_lde
    - memset
    - nbr_update_peerid
    linkageType: ''
    returnType: int
    signature: int nbr_act_session_operational(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldpe_imsg_compose_lde
      Src: /src/frr/ldpd/neighbor.c:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 770
    functionName: nbr_send_labelmappings
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 1
    functionsReached:
    - ldpe_imsg_compose_lde
    linkageType: ''
    returnType: void
    signature: void nbr_send_labelmappings(struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ldpd/neighbor.c:775,1
    - Dst: ntohl
      Src: /src/frr/ldpd/neighbor.c:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct nbr_params*
    - struct nbr_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 776
    functionName: nbr_params_compare
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: int
    signature: int nbr_params_compare(const struct nbr_params *a, const struct nbr_params
      *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/neighbor.c:783,1
    - Dst: fatal
      Src: /src/frr/ldpd/neighbor.c:784,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lsr_id
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 778
    functionDepth: 0
    functionLinenumber: 778
    functionLinenumberEnd: 790
    functionName: nbr_params_new
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - fatal
    - calloc
    linkageType: ''
    returnType: struct nbr_params
    signature: 'struct nbr_params *

      nbr_params_new(struct in_addr lsr_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/neighbor.c:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xconf
    - lsr_id
    argTypes:
    - struct ldpd_conf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 798
    functionName: nbr_params_find
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 4
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct nbr_params
    signature: 'struct nbr_params *

      nbr_params_find(struct ldpd_conf *xconf, struct in_addr lsr_id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/neighbor.c:805,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/neighbor.c:806,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/neighbor.c:809,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - af
    - lsr_id
    argTypes:
    - int
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 800
    functionDepth: 2
    functionLinenumber: 800
    functionLinenumberEnd: 810
    functionName: nbr_get_keepalive
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ldp_af_conf_get
    - nbr_params_find
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t nbr_get_keepalive(int af, struct in_addr lsr_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_second
      Src: /src/frr/ldpd/neighbor.c:830,1
    - Dst: gettimeofday
      Src: /src/frr/ldpd/neighbor.c:832,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 812
    functionDepth: 3
    functionLinenumber: 812
    functionLinenumberEnd: 839
    functionName: nbr_to_ctl
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - event_timer_remain_second
    - gettimeofday
    linkageType: ''
    returnType: struct ctl_nbr
    signature: 'struct ctl_nbr *

      nbr_to_ctl(struct nbr *nbr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/neighbor.c:846,1
    - Dst: ldp_addrisset
      Src: /src/frr/ldpd/neighbor.c:847,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/neighbor.c:848,1
    - Dst: log_debug
      Src: /src/frr/ldpd/neighbor.c:851,1
    - Dst: log_addr
      Src: /src/frr/ldpd/neighbor.c:852,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/neighbor.c:853,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - nctl
    argTypes:
    - struct ctl_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 841
    functionDepth: 2
    functionLinenumber: 841
    functionLinenumberEnd: 855
    functionName: nbr_clear_ctl
    functionSourceFile: /src/frr/ldpd/neighbor.c
    functionUses: 0
    functionsReached:
    - session_shutdown
    - ldp_addrcmp
    - log_addr
    - RB_FOREACH
    - ldp_addrisset
    - log_debug
    linkageType: ''
    returnType: void
    signature: void nbr_clear_ctl(struct ctl_nbr *nctl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_cmds.c:773,1
    - Dst: vector_set
      Src: /src/frr/ldpd/ldp_vty_cmds.c:774,1
    - Dst: XSTRDUP
      Src: /src/frr/ldpd/ldp_vty_cmds.c:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 768
    functionDepth: 3
    functionLinenumber: 768
    functionLinenumberEnd: 775
    functionName: l2vpn_autocomplete
    functionSourceFile: /src/frr/ldpd/ldp_vty_cmds.c
    functionUses: 0
    functionsReached:
    - vector_set
    - RB_FOREACH
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void l2vpn_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/ldpd/ldp_vty_cmds.c:790,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:792,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:793,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:794,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:795,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:796,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:797,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:798,1
    - Dst: install_node
      Src: /src/frr/ldpd/ldp_vty_cmds.c:799,1
    - Dst: install_default
      Src: /src/frr/ldpd/ldp_vty_cmds.c:800,1
    - Dst: install_default
      Src: /src/frr/ldpd/ldp_vty_cmds.c:801,1
    - Dst: install_default
      Src: /src/frr/ldpd/ldp_vty_cmds.c:802,1
    - Dst: install_default
      Src: /src/frr/ldpd/ldp_vty_cmds.c:803,1
    - Dst: install_default
      Src: /src/frr/ldpd/ldp_vty_cmds.c:804,1
    - Dst: install_default
      Src: /src/frr/ldpd/ldp_vty_cmds.c:805,1
    - Dst: install_default
      Src: /src/frr/ldpd/ldp_vty_cmds.c:806,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:808,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:809,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:810,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:811,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:812,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:813,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:814,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:815,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:817,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:818,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:819,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:820,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:821,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:822,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:823,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:824,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:825,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:826,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:827,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:828,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:829,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:830,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:831,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:833,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:834,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:835,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:836,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:837,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:838,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:839,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:840,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:841,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:842,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:843,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:844,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:845,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:846,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:847,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:848,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:850,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:851,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:852,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:853,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:854,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:855,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:856,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:857,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:858,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:859,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:860,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:861,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:862,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:863,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:864,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:865,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:867,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:868,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:870,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:871,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:873,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:874,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:875,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:876,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:877,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:878,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:880,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:881,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:882,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:883,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:884,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:886,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:887,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:888,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:889,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:890,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:892,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:893,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:894,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:895,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:896,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:897,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:898,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:899,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:900,1
    - Dst: install_element
      Src: /src/frr/ldpd/ldp_vty_cmds.c:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 102
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 787
    functionDepth: 6
    functionLinenumber: 787
    functionLinenumberEnd: 902
    functionName: ldp_vty_init
    functionSourceFile: /src/frr/ldpd/ldp_vty_cmds.c
    functionUses: 1
    functionsReached:
    - install_element
    - cmd_variable_handler_register
    - install_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void ldp_vty_init (void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/ldpd/log.c:25,1
    - Dst: vlog
      Src: /src/frr/ldpd/log.c:26,1
    - Dst: va_end
      Src: /src/frr/ldpd/log.c:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pri
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 28
    functionName: logit
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 2
    functionsReached:
    - va_start
    - va_end
    - vlog
    linkageType: ''
    returnType: void
    signature: void logit(int pri, const char *fmt, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintfrr
      Src: /src/frr/ldpd/log.c:37,1
    - Dst: lde_imsg_compose_parent_sync
      Src: /src/frr/ldpd/log.c:38,1
    - Dst: strlen
      Src: /src/frr/ldpd/log.c:39,1
    - Dst: vsnprintfrr
      Src: /src/frr/ldpd/log.c:42,1
    - Dst: ldpe_imsg_compose_parent_sync
      Src: /src/frr/ldpd/log.c:43,1
    - Dst: strlen
      Src: /src/frr/ldpd/log.c:44,1
    - Dst: vzlog
      Src: /src/frr/ldpd/log.c:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - pri
    - fmt
    - ap
    argTypes:
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 30
    functionDepth: 7
    functionLinenumber: 30
    functionLinenumberEnd: 50
    functionName: vlog
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 1
    functionsReached:
    - strlen
    - vsnprintfrr
    - ldpe_imsg_compose_parent_sync
    - vzlog
    - lde_imsg_compose_parent_sync
    linkageType: ''
    returnType: void
    signature: void vlog(int pri, const char *fmt, va_list ap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: logit
      Src: /src/frr/ldpd/log.c:60,1
    - Dst: strerror
      Src: /src/frr/ldpd/log.c:60,1
    - Dst: va_start
      Src: /src/frr/ldpd/log.c:62,1
    - Dst: asprintf
      Src: /src/frr/ldpd/log.c:64,1
    - Dst: strerror
      Src: /src/frr/ldpd/log.c:64,1
    - Dst: vlog
      Src: /src/frr/ldpd/log.c:66,1
    - Dst: logit
      Src: /src/frr/ldpd/log.c:67,1
    - Dst: strerror
      Src: /src/frr/ldpd/log.c:67,1
    - Dst: vlog
      Src: /src/frr/ldpd/log.c:72,1
    - Dst: free
      Src: /src/frr/ldpd/log.c:74,1
    - Dst: va_end
      Src: /src/frr/ldpd/log.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - emsg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 52
    functionDepth: 8
    functionLinenumber: 52
    functionLinenumberEnd: 78
    functionName: log_warn
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 525
    functionsReached:
    - logit
    - strerror
    - free
    - asprintf
    - va_start
    - va_end
    - vlog
    linkageType: ''
    returnType: void
    signature: void log_warn(const char *emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/ldpd/log.c:85,1
    - Dst: vlog
      Src: /src/frr/ldpd/log.c:86,1
    - Dst: va_end
      Src: /src/frr/ldpd/log.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - emsg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 8
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: log_warnx
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 30
    functionsReached:
    - va_start
    - va_end
    - vlog
    linkageType: ''
    returnType: void
    signature: void log_warnx(const char *emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/ldpd/log.c:95,1
    - Dst: vlog
      Src: /src/frr/ldpd/log.c:96,1
    - Dst: va_end
      Src: /src/frr/ldpd/log.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - emsg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 90
    functionDepth: 8
    functionLinenumber: 90
    functionLinenumberEnd: 98
    functionName: log_info
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 173
    functionsReached:
    - va_start
    - va_end
    - vlog
    linkageType: ''
    returnType: void
    signature: void log_info(const char *emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/ldpd/log.c:105,1
    - Dst: vlog
      Src: /src/frr/ldpd/log.c:106,1
    - Dst: va_end
      Src: /src/frr/ldpd/log.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - emsg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 8
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: log_notice
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 36
    functionsReached:
    - va_start
    - va_end
    - vlog
    linkageType: ''
    returnType: void
    signature: void log_notice(const char *emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/frr/ldpd/log.c:115,1
    - Dst: vlog
      Src: /src/frr/ldpd/log.c:116,1
    - Dst: va_end
      Src: /src/frr/ldpd/log.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - emsg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 110
    functionDepth: 8
    functionLinenumber: 110
    functionLinenumberEnd: 118
    functionName: log_debug
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 1466
    functionsReached:
    - va_start
    - va_end
    - vlog
    linkageType: ''
    returnType: void
    signature: void log_debug(const char *emsg, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: logit
      Src: /src/frr/ldpd/log.c:124,1
    - Dst: strerror
      Src: /src/frr/ldpd/log.c:125,1
    - Dst: logit
      Src: /src/frr/ldpd/log.c:128,1
    - Dst: strerror
      Src: /src/frr/ldpd/log.c:129,1
    - Dst: logit
      Src: /src/frr/ldpd/log.c:131,1
    - Dst: exit
      Src: /src/frr/ldpd/log.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - emsg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 135
    functionName: fatal
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 43
    functionsReached:
    - strerror
    - logit
    - exit
    linkageType: ''
    returnType: void
    signature: void fatal(const char *emsg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal
      Src: /src/frr/ldpd/log.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - emsg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: fatalx
    functionSourceFile: /src/frr/ldpd/log.c
    functionUses: 50
    functionsReached:
    - fatal
    linkageType: ''
    returnType: void
    signature: void fatalx(const char *emsg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/ldpd/ldp_snmp.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 184
    functionName: ldpLsrId
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpLsrId(struct variable *v, oid name[], size_t *length,\n\t\t\t\tint
      exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/ldpd/ldp_snmp.c:190,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 195
    functionName: ldpLoopDetectCap
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpLoopDetectCap(struct variable *v, oid name[], size_t *length,\n\t\t\t\tint
      exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/ldpd/ldp_snmp.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 210
    functionName: ldpEntityLastChange
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpEntityLastChange(struct variable *v, oid name[],\n\t\t\t\tsize_t
      *length,\n\t\t\t\tint exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_generic
      Src: /src/frr/ldpd/ldp_snmp.c:216,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 221
    functionName: ldpEntityIndexNext
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_generic
    - SNMP_INTEGER
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpEntityIndexNext(struct variable *v, oid name[],\n\t\t\t\t
      \  size_t *length,int exact, size_t *var_len,\n\t\t\t\t   WriteMethod **write_method)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 5
    argNames:
    - v
    - name
    - length
    - exact
    - index
    argTypes:
    - struct variable*
    - oid*
    - size_t*
    - int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 263
    functionName: ldpEntityTable_lookup
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ldpd_af_conf
    signature: "struct ldpd_af_conf *ldpEntityTable_lookup(struct variable *v, oid
      *name,\n\t\t\t\t\t\t  size_t *length, int exact,\n\t\t\t\t\t\t  uint32_t *index)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ldpd/ldp_snmp.c:275,1
    - Dst: ldpEntityTable_lookup
      Src: /src/frr/ldpd/ldp_snmp.c:279,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_snmp.c:284,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:287,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:291,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:301,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:304,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:306,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:308,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:310,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:312,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:314,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:316,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:318,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:320,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:322,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:324,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:326,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:328,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:330,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:332,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:334,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:337,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:339,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:349,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:351,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:353,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:355,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 77
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 361
    functionName: ldpEntityTable
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ldp_rtr_id_get
    - ldpEntityTable_lookup
    - SNMP_INTEGER
    - oid_copy_in_addr
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpEntityTable(struct variable *v, oid name[], size_t *length,\n\t\t\t
      \      int exact, size_t *var_len,\n\t\t\t       WriteMethod **write_method)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ldpd/ldp_snmp.c:372,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_snmp.c:384,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:387,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:391,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:400,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:402,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:404,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:406,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:408,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:410,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:412,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:414,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:416,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:418,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:420,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:422,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:424,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 50
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 430
    functionName: ldpEntityStatsTable
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ldp_rtr_id_get
    - SNMP_INTEGER
    - oid_copy_in_addr
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpEntityStatsTable(struct variable *v, oid name[],\n\t\t\t\t
      \   size_t *length, int exact, size_t *var_len,\n\t\t\t\t    WriteMethod **write_method)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: oid2in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:450,1
    - Dst: oid2in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:470,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 7
    argNames:
    - v
    - name
    - length
    - entityLdpId
    - entityIndex
    - peerLdpId
    - adjacencyIndex
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - struct in_addr*
    - uint32_t*
    - struct in_addr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 481
    functionName: ldpHelloAdjacencyTable_oid_to_index
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - oid2in_addr
    linkageType: ''
    returnType: void
    signature: "void ldpHelloAdjacencyTable_oid_to_index(\n\tstruct variable *v, oid
      name[],\n\tsize_t *length,\n\tstruct in_addr *entityLdpId,\n\tuint32_t *entityIndex,\n\tstruct
      in_addr *peerLdpId,\n\tuint32_t *adjacencyIndex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_snmp.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - nbr
    - adjacencyIndex
    argTypes:
    - struct nbr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 494
    functionName: nbr_get_adj_by_index
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    linkageType: ''
    returnType: struct adj
    signature: 'struct adj *

      nbr_get_adj_by_index(struct nbr *nbr, uint32_t adjacencyIndex)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/ldp_snmp.c:505,1
    - Dst: nbr_get_adj_by_index
      Src: /src/frr/ldpd/ldp_snmp.c:511,1
    - Dst: adj_to_ctl
      Src: /src/frr/ldpd/ldp_snmp.c:514,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - entityLdpId
    - entityIndex
    - peerLdpId
    - adjacencyIndex
    argTypes:
    - struct in_addr*
    - uint32_t*
    - struct in_addr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 496
    functionDepth: 2
    functionLinenumber: 496
    functionLinenumberEnd: 517
    functionName: ldpHelloAdjacencyTable_lookup_helper
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - nbr_get_adj_by_index
    - adj_to_ctl
    - nbr_find_ldpid
    linkageType: ''
    returnType: struct ctl_adj
    signature: "struct ctl_adj *\nldpHelloAdjacencyTable_lookup_helper(\n\tstruct
      in_addr *entityLdpId,\n\tuint32_t *entityIndex,\n\tstruct in_addr *peerLdpId,\n\tuint32_t
      *adjacencyIndex)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nbr_get_first_ldpid
      Src: /src/frr/ldpd/ldp_snmp.c:532,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/ldp_snmp.c:534,1
    - Dst: nbr_get_adj_by_index
      Src: /src/frr/ldpd/ldp_snmp.c:539,1
    - Dst: nbr_get_next_ldpid
      Src: /src/frr/ldpd/ldp_snmp.c:543,1
    - Dst: RB_MIN
      Src: /src/frr/ldpd/ldp_snmp.c:547,1
    - Dst: adj_to_ctl
      Src: /src/frr/ldpd/ldp_snmp.c:552,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - first
    - entityLdpId
    - entityIndex
    - peerLdpId
    - adjacencyIndex
    argTypes:
    - int
    - struct in_addr*
    - uint32_t*
    - struct in_addr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 555
    functionName: ldpHelloAdjacencyTable_next_helper
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - nbr_get_first_ldpid
    - adj_to_ctl
    - nbr_get_adj_by_index
    - nbr_get_next_ldpid
    - nbr_find_ldpid
    - RB_MIN
    linkageType: ''
    returnType: struct ctl_adj
    signature: "struct ctl_adj *\nldpHelloAdjacencyTable_next_helper(\n\tint first,\n\tstruct
      in_addr *entityLdpId,\n\tuint32_t *entityIndex,\n\tstruct in_addr *peerLdpId,\n\tuint32_t
      *adjacencyIndex)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldpHelloAdjacencyTable_oid_to_index
      Src: /src/frr/ldpd/ldp_snmp.c:573,1
    - Dst: ldpHelloAdjacencyTable_lookup_helper
      Src: /src/frr/ldpd/ldp_snmp.c:577,1
    - Dst: ldpHelloAdjacencyTable_oid_to_index
      Src: /src/frr/ldpd/ldp_snmp.c:586,1
    - Dst: ldpHelloAdjacencyTable_next_helper
      Src: /src/frr/ldpd/ldp_snmp.c:590,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 8
    argNames:
    - v
    - name
    - length
    - exact
    - entityLdpId
    - entityIndex
    - peerLdpId
    - adjacencyIndex
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - struct in_addr*
    - uint32_t*
    - struct in_addr*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 559
    functionDepth: 4
    functionLinenumber: 559
    functionLinenumberEnd: 595
    functionName: ldpHelloAdjacencyTable_lookup
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - ldpHelloAdjacencyTable_lookup_helper
    - ldpHelloAdjacencyTable_next_helper
    - ldpHelloAdjacencyTable_oid_to_index
    linkageType: ''
    returnType: struct ctl_adj
    signature: "struct ctl_adj *\nldpHelloAdjacencyTable_lookup(struct variable *v,
      oid name[],\n\tsize_t *length, int exact,\n\tstruct in_addr *entityLdpId,\n\tuint32_t
      *entityIndex,\n\tstruct in_addr *peerLdpId,\n\tuint32_t *adjacencyIndex)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ldpd/ldp_snmp.c:606,1
    - Dst: ldpHelloAdjacencyTable_lookup
      Src: /src/frr/ldpd/ldp_snmp.c:610,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:620,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_snmp.c:624,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:628,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:632,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:643,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:645,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:647,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:650,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:651,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 597
    functionDepth: 5
    functionLinenumber: 597
    functionLinenumberEnd: 657
    functionName: ldpHelloAdjacencyTable
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ldp_rtr_id_get
    - SNMP_INTEGER
    - ldpHelloAdjacencyTable_lookup
    - oid_copy_in_addr
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpHelloAdjacencyTable(struct variable *v, oid name[], size_t
      *length,\n\t\t\t\tint exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: oid2in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:678,1
    - Dst: oid2in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:698,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 6
    argNames:
    - v
    - name
    - length
    - entityLdpId
    - entityIndex
    - peerLdpId
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - struct in_addr*
    - uint32_t*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 699
    functionName: ldpPeerTable_oid_to_index
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - oid2in_addr
    linkageType: ''
    returnType: void
    signature: "void ldpPeerTable_oid_to_index(\n\tstruct variable *v, oid name[],\n\tsize_t
      *length,\n\tstruct in_addr *entityLdpId,\n\tuint32_t *entityIndex,\n\tstruct
      in_addr *peerLdpId)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nbr_get_first_ldpid
      Src: /src/frr/ldpd/ldp_snmp.c:709,1
    - Dst: nbr_get_next_ldpid
      Src: /src/frr/ldpd/ldp_snmp.c:711,1
    - Dst: nbr_to_ctl
      Src: /src/frr/ldpd/ldp_snmp.c:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - first
    - peerLdpId
    argTypes:
    - int
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 701
    functionDepth: 4
    functionLinenumber: 701
    functionLinenumberEnd: 717
    functionName: ldpPeerTable_lookup_next
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - nbr_get_next_ldpid
    - nbr_get_first_ldpid
    - nbr_to_ctl
    linkageType: ''
    returnType: struct ctl_nbr
    signature: "struct ctl_nbr *\nldpPeerTable_lookup_next(int first,\n\tstruct in_addr
      peerLdpId)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ldpPeerTable_oid_to_index
      Src: /src/frr/ldpd/ldp_snmp.c:735,1
    - Dst: nbr_find_ldpid
      Src: /src/frr/ldpd/ldp_snmp.c:739,1
    - Dst: nbr_to_ctl
      Src: /src/frr/ldpd/ldp_snmp.c:741,1
    - Dst: ldpPeerTable_oid_to_index
      Src: /src/frr/ldpd/ldp_snmp.c:750,1
    - Dst: ldpPeerTable_lookup_next
      Src: /src/frr/ldpd/ldp_snmp.c:754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 7
    argNames:
    - v
    - name
    - length
    - exact
    - entityLdpId
    - entityIndex
    - peerLdpId
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - struct in_addr*
    - uint32_t*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 719
    functionDepth: 5
    functionLinenumber: 719
    functionLinenumberEnd: 758
    functionName: ldpPeerTable_lookup
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - ldpPeerTable_lookup_next
    - nbr_to_ctl
    - ldpPeerTable_oid_to_index
    - nbr_find_ldpid
    linkageType: ''
    returnType: struct ctl_nbr
    signature: "struct ctl_nbr *\nldpPeerTable_lookup(struct variable *v, oid name[],\n\t\t\tsize_t
      *length, int exact,\n\t\t\tstruct in_addr *entityLdpId,\n\t\t\tuint32_t *entityIndex,\n\t\t\tstruct
      in_addr *peerLdpId)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ldpd/ldp_snmp.c:770,1
    - Dst: ldpPeerTable_lookup
      Src: /src/frr/ldpd/ldp_snmp.c:774,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_snmp.c:782,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:787,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:790,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:795,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:806,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:809,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:811,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:814,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:816,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 760
    functionDepth: 6
    functionLinenumber: 760
    functionLinenumberEnd: 830
    functionName: ldpPeerTable
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ldpPeerTable_lookup
    - ldp_rtr_id_get
    - SNMP_INTEGER
    - oid_copy_in_addr
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpPeerTable(struct variable *v, oid name[], size_t *length,\n\t\t\t\tint
      exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ldpd/ldp_snmp.c:840,1
    - Dst: ldpPeerTable_lookup
      Src: /src/frr/ldpd/ldp_snmp.c:844,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_snmp.c:851,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:856,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:859,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:864,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:879,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:881,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:883,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:885,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:887,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/ldp_snmp.c:890,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:892,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:894,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:896,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:898,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:900,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:903,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:905,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:907,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 831
    functionDepth: 6
    functionLinenumber: 831
    functionLinenumberEnd: 913
    functionName: ldpSessionTable
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ldpPeerTable_lookup
    - ldp_addrcmp
    - ldp_rtr_id_get
    - SNMP_INTEGER
    - oid_copy_in_addr
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpSessionTable(struct variable *v, oid name[], size_t *length,\n\t\t\t\tint
      exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: smux_header_table
      Src: /src/frr/ldpd/ldp_snmp.c:924,1
    - Dst: ldpPeerTable_lookup
      Src: /src/frr/ldpd/ldp_snmp.c:928,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_snmp.c:935,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_snmp.c:940,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:943,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:947,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:956,1
    - Dst: SNMP_INTEGER
      Src: /src/frr/ldpd/ldp_snmp.c:958,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 6
    argNames:
    - v
    - name
    - length
    - exact
    - var_len
    - write_method
    argTypes:
    - struct variable*
    - oid[]
    - size_t*
    - int
    - size_t*
    - WriteMethod**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 915
    functionDepth: 6
    functionLinenumber: 915
    functionLinenumberEnd: 964
    functionName: ldpSessionStatsTable
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_header_table
    - ldpPeerTable_lookup
    - ldp_rtr_id_get
    - SNMP_INTEGER
    - oid_copy_in_addr
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *ldpSessionStatsTable(struct variable *v, oid name[],\n\t\t\t\tsize_t
      *length,\n\t\t\t\tint exact, size_t *var_len,\n\t\t\t\tWriteMethod **write_method)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nbr_to_ctl
      Src: /src/frr/ldpd/ldp_snmp.c:1121,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_snmp.c:1123,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:1127,1
    - Dst: oid_copy_in_addr
      Src: /src/frr/ldpd/ldp_snmp.c:1131,1
    - Dst: smux_trap
      Src: /src/frr/ldpd/ldp_snmp.c:1137,1
    - Dst: array_size
      Src: /src/frr/ldpd/ldp_snmp.c:1137,1
    - Dst: array_size
      Src: /src/frr/ldpd/ldp_snmp.c:1138,1
    - Dst: array_size
      Src: /src/frr/ldpd/ldp_snmp.c:1141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - nbr
    - sptrap
    argTypes:
    - struct nbr*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1112
    functionDepth: 4
    functionLinenumber: 1112
    functionLinenumberEnd: 1142
    functionName: ldpTrapSession
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - ldp_rtr_id_get
    - smux_trap
    - array_size
    - oid_copy_in_addr
    - nbr_to_ctl
    linkageType: ''
    returnType: void
    signature: void ldpTrapSession(struct nbr * nbr, unsigned int sptrap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldpTrapSession
      Src: /src/frr/ldpd/ldp_snmp.c:1147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1144
    functionDepth: 5
    functionLinenumber: 1144
    functionLinenumberEnd: 1148
    functionName: ldpTrapSessionUp
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - ldpTrapSession
    linkageType: ''
    returnType: void
    signature: void ldpTrapSessionUp(struct nbr * nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldpTrapSession
      Src: /src/frr/ldpd/ldp_snmp.c:1153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1150
    functionDepth: 5
    functionLinenumber: 1150
    functionLinenumberEnd: 1154
    functionName: ldpTrapSessionDown
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - ldpTrapSession
    linkageType: ''
    returnType: void
    signature: void ldpTrapSessionDown(struct nbr * nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_snmp.c:1158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1161
    functionName: ldp_snmp_agentx_enabled
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - main_imsg_compose_both
    linkageType: ''
    returnType: int
    signature: int ldp_snmp_agentx_enabled(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldpTrapSessionUp
      Src: /src/frr/ldpd/ldp_snmp.c:1169,1
    - Dst: ldpTrapSessionDown
      Src: /src/frr/ldpd/ldp_snmp.c:1171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - nbr
    - old_state
    argTypes:
    - struct nbr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1163
    functionDepth: 6
    functionLinenumber: 1163
    functionLinenumberEnd: 1174
    functionName: ldp_snmp_nbr_state_change
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - ldpTrapSessionUp
    - ldpTrapSessionDown
    linkageType: ''
    returnType: int
    signature: int ldp_snmp_nbr_state_change(struct nbr * nbr, int old_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/ldpd/ldp_snmp.c:1178,1
    - Dst: smux_init
      Src: /src/frr/ldpd/ldp_snmp.c:1180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1176
    functionDepth: 6
    functionLinenumber: 1176
    functionLinenumberEnd: 1183
    functionName: ldp_snmp_init
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_init
    - hook_register
    linkageType: ''
    returnType: int
    signature: int ldp_snmp_init(struct event_loop *tm)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: smux_init
      Src: /src/frr/ldpd/ldp_snmp.c:1194,1
    - Dst: smux_agentx_enable
      Src: /src/frr/ldpd/ldp_snmp.c:1196,1
    - Dst: REGISTER_MIB
      Src: /src/frr/ldpd/ldp_snmp.c:1199,1
    - Dst: REGISTER_MIB
      Src: /src/frr/ldpd/ldp_snmp.c:1201,1
    - Dst: hook_register
      Src: /src/frr/ldpd/ldp_snmp.c:1203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1185
    functionDepth: 7
    functionLinenumber: 1185
    functionLinenumberEnd: 1207
    functionName: ldp_snmp_register_mib
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - smux_init
    - REGISTER_MIB
    - hook_register
    - smux_agentx_enable
    linkageType: ''
    returnType: int
    signature: int ldp_snmp_register_mib(struct event_loop *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/ldpd/ldp_snmp.c:1212,1
    - Dst: hook_register
      Src: /src/frr/ldpd/ldp_snmp.c:1214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1217
    functionName: ldp_snmp_module_init
    functionSourceFile: /src/frr/ldpd/ldp_snmp.c
    functionUses: 0
    functionsReached:
    - hook_register
    linkageType: ''
    returnType: int
    signature: int ldp_snmp_module_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde_lib.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fh
    argTypes:
    - struct fec_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 37
    functionName: fec_init
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - RB_INIT
    linkageType: ''
    returnType: void
    signature: void fec_init(struct fec_tree *fh)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:49,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:49,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:51,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:51,1
    - Dst: memcmp
      Src: /src/frr/ldpd/lde_lib.c:59,1
    - Dst: memcmp
      Src: /src/frr/ldpd/lde_lib.c:62,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:79,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:79,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:81,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:81,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct fec*
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 87
    functionName: fec_compare
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 0
    functionsReached:
    - ntohl
    - memcmp
    linkageType: ''
    returnType: int
    signature: int fec_compare(const struct fec *a, const struct fec *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/lde_lib.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fh
    - f
    argTypes:
    - struct fec_tree*
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: fec_find
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 16
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct fec
    signature: 'struct fec *

      fec_find(struct fec_tree *fh, struct fec *f)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/lde_lib.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - fh
    - f
    argTypes:
    - struct fec_tree*
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: fec_insert
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 4
    functionsReached:
    - RB_INSERT
    linkageType: ''
    returnType: int
    signature: int fec_insert(struct fec_tree *fh, struct fec *f)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/lde_lib.c:106,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde_lib.c:107,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde_lib.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fh
    - f
    argTypes:
    - struct fec_tree*
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 9
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: fec_remove
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 4
    functionsReached:
    - log_warnx
    - log_fec
    - RB_REMOVE
    linkageType: ''
    returnType: int
    signature: int fec_remove(struct fec_tree *fh, struct fec *f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:118,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/lde_lib.c:119,1
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde_lib.c:121,1
    - Dst: free_cb
      Src: /src/frr/ldpd/lde_lib.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fh
    argTypes:
    - struct fec_tree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 10
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: fec_clear
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - RB_EMPTY
    - RB_ROOT
    - free_cb
    - fec_remove
    linkageType: ''
    returnType: void
    signature: void fec_clear(struct fec_tree *fh, void (*free_cb)(void *))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:132,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde_lib.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - fn
    - ln
    argTypes:
    - struct fec_node*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: lde_nbr_is_nexthop
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 0
    functionsReached:
    - LIST_FOREACH
    - lde_address_find
    linkageType: ''
    returnType: int
    signature: int lde_nbr_is_nexthop(struct fec_node *fn, struct lde_nbr *ln)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:147,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:150,1
    - Dst: memset
      Src: /src/frr/ldpd/lde_lib.c:153,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:170,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde_lib.c:176,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:179,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde_lib.c:181,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:185,1
    - Dst: lde_nbr_is_nexthop
      Src: /src/frr/ldpd/lde_lib.c:186,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde_lib.c:189,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde_lib.c:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 139
    functionDepth: 4
    functionLinenumber: 139
    functionLinenumberEnd: 195
    functionName: rt_dump
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - memset
    - lde_nbr_is_nexthop
    - lde_imsg_compose_ldpe
    - RB_EMPTY
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void rt_dump(pid_t pid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:203,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde_lib.c:208,1
    - Dst: lde_imsg_compose_ldpe
      Src: /src/frr/ldpd/lde_lib.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ln
    argTypes:
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 197
    functionDepth: 7
    functionLinenumber: 197
    functionLinenumberEnd: 212
    functionName: fec_snap
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - lde_send_labelmapping
    - RB_FOREACH
    - lde_imsg_compose_ldpe
    linkageType: ''
    returnType: void
    signature: void fec_snap(struct lde_nbr *ln)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/lde_lib.c:220,1
    - Dst: fec_nh_del
      Src: /src/frr/ldpd/lde_lib.c:221,1
    - Dst: assert
      Src: /src/frr/ldpd/lde_lib.c:222,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/lde_lib.c:222,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:224,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde_lib.c:225,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde_lib.c:226,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:227,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde_lib.c:228,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde_lib.c:229,1
    - Dst: free
      Src: /src/frr/ldpd/lde_lib.c:231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts:
    - condition: (fnh != LIST_FIRST(&fn->nexthops))
      pos:
        line_end: 221
        line_start: 221
        source_file: /src/frr/ldpd/lde_lib.c
    constantsTouched: []
    func_position:
      end: 232
      start: 214
    functionDepth: 9
    functionLinenumber: 214
    functionLinenumberEnd: 232
    functionName: fec_free
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 0
    functionsReached:
    - log_fec
    - fec_nh_del
    - free
    - RB_EMPTY
    - log_warnx
    - assert
    - LIST_FIRST
    linkageType: ''
    returnType: void
    signature: void fec_free(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fec_clear
      Src: /src/frr/ldpd/lde_lib.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 11
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: fec_tree_clear
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - fec_clear
    linkageType: ''
    returnType: void
    signature: void fec_tree_clear(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/lde_lib.c:245,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde_lib.c:247,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde_lib.c:251,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/lde_lib.c:252,1
    - Dst: LIST_INIT
      Src: /src/frr/ldpd/lde_lib.c:253,1
    - Dst: fec_insert
      Src: /src/frr/ldpd/lde_lib.c:258,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/lde_lib.c:259,1
    - Dst: log_fec
      Src: /src/frr/ldpd/lde_lib.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fec
    argTypes:
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 240
    functionDepth: 9
    functionLinenumber: 240
    functionLinenumberEnd: 262
    functionName: fec_add
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 4
    functionsReached:
    - log_fec
    - LIST_INIT
    - RB_INIT
    - fec_insert
    - calloc
    - log_warnx
    - fatal
    linkageType: ''
    returnType: struct fec_node
    signature: 'struct fec_node *

      fec_add(struct fec *fec)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:270,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/lde_lib.c:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 6
    argNames:
    - fn
    - af
    - nexthop
    - ifindex
    - route_type
    - route_instance
    argTypes:
    - struct fec_node*
    - int
    - union ldpd_addr*
    - ifindex_t
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 279
    functionName: fec_nh_find
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 2
    functionsReached:
    - LIST_FOREACH
    - ldp_addrcmp
    linkageType: ''
    returnType: struct fec_nh
    signature: "struct fec_nh *\nfec_nh_find(struct fec_node *fn, int af, union ldpd_addr
      *nexthop,\n    ifindex_t ifindex, uint8_t route_type, unsigned short route_instance)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/lde_lib.c:287,1
    - Dst: fatal
      Src: /src/frr/ldpd/lde_lib.c:289,1
    - Dst: LIST_INSERT_HEAD
      Src: /src/frr/ldpd/lde_lib.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 6
    argNames:
    - fn
    - af
    - nexthop
    - ifindex
    - route_type
    - route_instance
    argTypes:
    - struct fec_node*
    - int
    - union ldpd_addr*
    - ifindex_t
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 300
    functionName: fec_nh_add
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 0
    functionsReached:
    - fatal
    - LIST_INSERT_HEAD
    - calloc
    linkageType: ''
    returnType: struct fec_nh
    signature: "struct fec_nh *\nfec_nh_add(struct fec_node *fn, int af, union ldpd_addr
      *nexthop,\n    ifindex_t ifindex, uint8_t route_type, unsigned short route_instance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/lde_lib.c:305,1
    - Dst: free
      Src: /src/frr/ldpd/lde_lib.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fnh
    argTypes:
    - struct fec_nh*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 307
    functionName: fec_nh_del
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - LIST_REMOVE
    - free
    linkageType: ''
    returnType: void
    signature: void fec_nh_del(struct fec_nh *fnh)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:318,1
    - Dst: fec_add
      Src: /src/frr/ldpd/lde_lib.c:320,1
    - Dst: fec_nh_find
      Src: /src/frr/ldpd/lde_lib.c:324,1
    - Dst: fec_nh_add
      Src: /src/frr/ldpd/lde_lib.c:326,1
    - Dst: if_lookup
      Src: /src/frr/ldpd/lde_lib.c:334,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:335,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:337,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:340,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:342,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 8
    argNames:
    - fec
    - af
    - nexthop
    - ifindex
    - route_type
    - route_instance
    - connected
    - data
    argTypes:
    - struct fec*
    - int
    - union ldpd_addr*
    - ifindex_t
    - uint8_t
    - unsigned short
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 309
    functionDepth: 10
    functionLinenumber: 309
    functionLinenumberEnd: 343
    functionName: lde_kernel_insert
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 2
    functionsReached:
    - fec_find
    - fec_nh_add
    - CHECK_FLAG
    - fec_nh_find
    - if_lookup
    - SET_FLAG
    - fec_add
    linkageType: ''
    returnType: void
    signature: "void lde_kernel_insert(struct fec *fec, int af, union ldpd_addr *nexthop,\n
      \   ifindex_t ifindex, uint8_t route_type, unsigned short route_instance,\n
      \   int connected, void *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:352,1
    - Dst: fec_nh_find
      Src: /src/frr/ldpd/lde_lib.c:356,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde_lib.c:361,1
    - Dst: fec_nh_del
      Src: /src/frr/ldpd/lde_lib.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - fec
    - af
    - nexthop
    - ifindex
    - route_type
    - route_instance
    argTypes:
    - struct fec*
    - int
    - union ldpd_addr*
    - ifindex_t
    - uint8_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 345
    functionDepth: 5
    functionLinenumber: 345
    functionLinenumberEnd: 363
    functionName: lde_kernel_remove
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - lde_send_delete_klabel
    - fec_nh_del
    - fec_find
    - fec_nh_find
    linkageType: ''
    returnType: void
    signature: "void lde_kernel_remove(struct fec *fec, int af, union ldpd_addr *nexthop,\n
      \   ifindex_t ifindex, uint8_t route_type, unsigned short route_instance)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:380,1
    - Dst: LIST_FOREACH_SAFE
      Src: /src/frr/ldpd/lde_lib.c:384,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:385,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:386,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:391,1
    - Dst: if_lookup
      Src: /src/frr/ldpd/lde_lib.c:392,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:393,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:396,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:398,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:400,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde_lib.c:402,1
    - Dst: fec_nh_del
      Src: /src/frr/ldpd/lde_lib.c:403,1
    - Dst: LIST_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:407,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:408,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde_lib.c:409,1
    - Dst: lde_gc_start_timer
      Src: /src/frr/ldpd/lde_lib.c:420,1
    - Dst: lde_update_label
      Src: /src/frr/ldpd/lde_lib.c:422,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:425,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde_lib.c:426,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:433,1
    - Dst: lde_send_change_klabel
      Src: /src/frr/ldpd/lde_lib.c:434,1
    - Dst: lde_nbr_find_by_addr
      Src: /src/frr/ldpd/lde_lib.c:439,1
    - Dst: lde_nbr_find_by_lsrid
      Src: /src/frr/ldpd/lde_lib.c:442,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:451,1
    - Dst: lde_check_mapping
      Src: /src/frr/ldpd/lde_lib.c:454,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 1
    argNames:
    - fec
    argTypes:
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 371
    functionDepth: 7
    functionLinenumber: 371
    functionLinenumberEnd: 457
    functionName: lde_kernel_update
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 3
    functionsReached:
    - lde_nbr_find_by_addr
    - LIST_FOREACH_SAFE
    - fec_nh_del
    - LIST_EMPTY
    - lde_send_change_klabel
    - lde_send_labelmapping
    - if_lookup
    - lde_nbr_find_by_lsrid
    - LIST_FOREACH
    - UNSET_FLAG
    - lde_send_delete_klabel
    - lde_update_label
    - lde_send_labelwithdraw
    - fec_find
    - CHECK_FLAG
    - lde_check_mapping
    - SET_FLAG
    - lde_gc_start_timer
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void lde_kernel_update(struct fec *fec)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: lde_map2fec
      Src: /src/frr/ldpd/lde_lib.c:470,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde_lib.c:474,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde_lib.c:477,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde_lib.c:483,1
    - Dst: lde_acl_check
      Src: /src/frr/ldpd/lde_lib.c:486,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:495,1
    - Dst: fec_add
      Src: /src/frr/ldpd/lde_lib.c:497,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:500,1
    - Dst: lde_req_del
      Src: /src/frr/ldpd/lde_lib.c:503,1
    - Dst: l2vpn_pw_negotiate
      Src: /src/frr/ldpd/lde_lib.c:506,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:507,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:519,1
    - Dst: lde_send_labelrelease
      Src: /src/frr/ldpd/lde_lib.c:524,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:530,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde_lib.c:531,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde_lib.c:534,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:544,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde_lib.c:549,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:557,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/lde_lib.c:559,1
    - Dst: lde_send_change_klabel
      Src: /src/frr/ldpd/lde_lib.c:563,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:571,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:573,1
    - Dst: l2vpn_pw_ok
      Src: /src/frr/ldpd/lde_lib.c:580,1
    - Dst: lde_send_change_klabel
      Src: /src/frr/ldpd/lde_lib.c:581,1
    - Dst: lde_rlfa_update_clients
      Src: /src/frr/ldpd/lde_lib.c:589,1
    - Dst: lde_map_add
      Src: /src/frr/ldpd/lde_lib.c:593,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:608,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde_lib.c:609,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 82
    argCount: 3
    argNames:
    - map
    - ln
    - rcvd_label_mapping
    argTypes:
    - struct map*
    - struct lde_nbr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 459
    functionDepth: 10
    functionLinenumber: 459
    functionLinenumberEnd: 610
    functionName: lde_check_mapping
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 2
    functionsReached:
    - fec_find
    - lde_send_labelrelease
    - LIST_FOREACH
    - lde_address_find
    - lde_send_change_klabel
    - lde_map2fec
    - lde_send_labelmapping
    - lde_acl_check
    - CHECK_FLAG
    - RB_FOREACH
    - lde_req_del
    - UNSET_FLAG
    - lde_rlfa_update_clients
    - lde_map_add
    - l2vpn_pw_negotiate
    - lde_send_delete_klabel
    - fec_add
    - l2vpn_pw_ok
    linkageType: ''
    returnType: void
    signature: void lde_check_mapping(struct map *map, struct lde_nbr *ln, int rcvd_label_mapping)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lde_check_request_wcard
      Src: /src/frr/ldpd/lde_lib.c:622,1
    - Dst: lde_map2fec
      Src: /src/frr/ldpd/lde_lib.c:629,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:630,1
    - Dst: LIST_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:631,1
    - Dst: lde_send_notification
      Src: /src/frr/ldpd/lde_lib.c:633,1
    - Dst: htons
      Src: /src/frr/ldpd/lde_lib.c:634,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:639,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde_lib.c:643,1
    - Dst: lde_send_notification
      Src: /src/frr/ldpd/lde_lib.c:647,1
    - Dst: htons
      Src: /src/frr/ldpd/lde_lib.c:648,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:656,1
    - Dst: lde_req_add
      Src: /src/frr/ldpd/lde_lib.c:662,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:664,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde_lib.c:667,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - map
    - ln
    argTypes:
    - struct map*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 612
    functionDepth: 7
    functionLinenumber: 612
    functionLinenumberEnd: 674
    functionName: lde_check_request
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - fec_find
    - LIST_FOREACH
    - lde_address_find
    - htons
    - lde_map2fec
    - lde_send_labelmapping
    - lde_send_notification
    - lde_req_add
    - lde_check_request_wcard
    - LIST_EMPTY
    - ntohl
    linkageType: ''
    returnType: void
    signature: void lde_check_request(struct map *map, struct lde_nbr *ln)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:683,1
    - Dst: lde_wildcard_apply
      Src: /src/frr/ldpd/lde_lib.c:687,1
    - Dst: LIST_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:691,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:695,1
    - Dst: lde_req_add
      Src: /src/frr/ldpd/lde_lib.c:701,1
    - Dst: ntohl
      Src: /src/frr/ldpd/lde_lib.c:703,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde_lib.c:706,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - map
    - ln
    argTypes:
    - struct map*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 676
    functionDepth: 7
    functionLinenumber: 676
    functionLinenumberEnd: 708
    functionName: lde_check_request_wcard
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - fec_find
    - lde_wildcard_apply
    - lde_send_labelmapping
    - lde_req_add
    - LIST_EMPTY
    - RB_FOREACH
    - ntohl
    linkageType: ''
    returnType: void
    signature: void lde_check_request_wcard(struct map *map, struct lde_nbr *ln)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:722,1
    - Dst: lde_check_release_wcard
      Src: /src/frr/ldpd/lde_lib.c:723,1
    - Dst: lde_map2fec
      Src: /src/frr/ldpd/lde_lib.c:727,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:728,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:734,1
    - Dst: lde_map_del
      Src: /src/frr/ldpd/lde_lib.c:736,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:739,1
    - Dst: lde_wdraw_del
      Src: /src/frr/ldpd/lde_lib.c:742,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:745,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde_lib.c:747,1
    - Dst: lde_map_pending_del
      Src: /src/frr/ldpd/lde_lib.c:748,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 2
    argNames:
    - map
    - ln
    argTypes:
    - struct map*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 710
    functionDepth: 7
    functionLinenumber: 710
    functionLinenumberEnd: 756
    functionName: lde_check_release
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - fec_find
    - lde_map2fec
    - lde_send_labelmapping
    - CHECK_FLAG
    - lde_wdraw_del
    - lde_map_del
    - lde_check_release_wcard
    - lde_map_pending_del
    linkageType: ''
    returnType: void
    signature: void lde_check_release(struct map *map, struct lde_nbr *ln)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:767,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:769,1
    - Dst: lde_wildcard_apply
      Src: /src/frr/ldpd/lde_lib.c:772,1
    - Dst: lde_map_del
      Src: /src/frr/ldpd/lde_lib.c:778,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:781,1
    - Dst: lde_wdraw_del
      Src: /src/frr/ldpd/lde_lib.c:784,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:787,1
    - Dst: lde_send_labelmapping
      Src: /src/frr/ldpd/lde_lib.c:789,1
    - Dst: lde_map_pending_del
      Src: /src/frr/ldpd/lde_lib.c:790,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - map
    - ln
    argTypes:
    - struct map*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 758
    functionDepth: 7
    functionLinenumber: 758
    functionLinenumberEnd: 799
    functionName: lde_check_release_wcard
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - fec_find
    - lde_wildcard_apply
    - lde_send_labelmapping
    - lde_wdraw_del
    - lde_map_del
    - RB_FOREACH
    - lde_map_pending_del
    linkageType: ''
    returnType: void
    signature: void lde_check_release_wcard(struct map *map, struct lde_nbr *ln)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:814,1
    - Dst: lde_check_withdraw_wcard
      Src: /src/frr/ldpd/lde_lib.c:815,1
    - Dst: lde_map2fec
      Src: /src/frr/ldpd/lde_lib.c:819,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:820,1
    - Dst: fec_add
      Src: /src/frr/ldpd/lde_lib.c:822,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:825,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde_lib.c:829,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde_lib.c:844,1
    - Dst: lde_rlfa_update_clients
      Src: /src/frr/ldpd/lde_lib.c:849,1
    - Dst: lde_send_labelrelease
      Src: /src/frr/ldpd/lde_lib.c:852,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:855,1
    - Dst: lde_map_del
      Src: /src/frr/ldpd/lde_lib.c:858,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:864,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:866,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:871,1
    - Dst: lde_nbr_is_nexthop
      Src: /src/frr/ldpd/lde_lib.c:877,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde_lib.c:879,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 45
    argCount: 2
    argNames:
    - map
    - ln
    argTypes:
    - struct map*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 801
    functionDepth: 10
    functionLinenumber: 801
    functionLinenumberEnd: 883
    functionName: lde_check_withdraw
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - fec_find
    - LIST_FOREACH
    - lde_send_labelrelease
    - lde_address_find
    - lde_check_withdraw_wcard
    - lde_map2fec
    - CHECK_FLAG
    - lde_nbr_is_nexthop
    - lde_map_del
    - lde_rlfa_update_clients
    - lde_send_delete_klabel
    - fec_add
    - RB_FOREACH
    - lde_send_labelwithdraw
    linkageType: ''
    returnType: void
    signature: void lde_check_withdraw(struct map *map, struct lde_nbr *ln)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lde_send_labelrelease
      Src: /src/frr/ldpd/lde_lib.c:896,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:898,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:900,1
    - Dst: lde_wildcard_apply
      Src: /src/frr/ldpd/lde_lib.c:902,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:906,1
    - Dst: lde_address_find
      Src: /src/frr/ldpd/lde_lib.c:910,1
    - Dst: lde_send_delete_klabel
      Src: /src/frr/ldpd/lde_lib.c:926,1
    - Dst: lde_rlfa_update_clients
      Src: /src/frr/ldpd/lde_lib.c:931,1
    - Dst: lde_map_del
      Src: /src/frr/ldpd/lde_lib.c:939,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/lde_lib.c:945,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/lde_lib.c:950,1
    - Dst: fec_find
      Src: /src/frr/ldpd/lde_lib.c:957,1
    - Dst: lde_nbr_is_nexthop
      Src: /src/frr/ldpd/lde_lib.c:962,1
    - Dst: lde_send_labelwithdraw
      Src: /src/frr/ldpd/lde_lib.c:964,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 43
    argCount: 2
    argNames:
    - map
    - ln
    argTypes:
    - struct map*
    - struct lde_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 885
    functionDepth: 5
    functionLinenumber: 885
    functionLinenumberEnd: 968
    functionName: lde_check_withdraw_wcard
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - fec_find
    - lde_send_labelrelease
    - LIST_FOREACH
    - lde_address_find
    - lde_wildcard_apply
    - CHECK_FLAG
    - lde_nbr_is_nexthop
    - lde_map_del
    - lde_rlfa_update_clients
    - lde_send_delete_klabel
    - RB_FOREACH
    - lde_send_labelwithdraw
    linkageType: ''
    returnType: void
    signature: void lde_check_withdraw_wcard(struct map *map, struct lde_nbr *ln)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/lde_lib.c:995,1
    - Dst: fatalx
      Src: /src/frr/ldpd/lde_lib.c:1009,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 3
    argNames:
    - wcard
    - fec
    - me
    argTypes:
    - struct map*
    - struct fec*
    - struct lde_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 1011
    functionName: lde_wildcard_apply
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 5
    functionsReached:
    - fatalx
    linkageType: ''
    returnType: int
    signature: int lde_wildcard_apply(struct map *wcard, struct fec *fec, struct lde_map
      *me)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/lde_lib.c:1022,1
    - Dst: LIST_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:1025,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:1026,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/lde_lib.c:1027,1
    - Dst: lde_free_label
      Src: /src/frr/ldpd/lde_lib.c:1031,1
    - Dst: fec_remove
      Src: /src/frr/ldpd/lde_lib.c:1033,1
    - Dst: free
      Src: /src/frr/ldpd/lde_lib.c:1034,1
    - Dst: log_debug
      Src: /src/frr/ldpd/lde_lib.c:1039,1
    - Dst: lde_gc_start_timer
      Src: /src/frr/ldpd/lde_lib.c:1041,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1016
    functionDepth: 10
    functionLinenumber: 1016
    functionLinenumberEnd: 1042
    functionName: lde_gc_timer
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 0
    functionsReached:
    - free
    - lde_free_label
    - lde_gc_start_timer
    - RB_FOREACH_SAFE
    - LIST_EMPTY
    - RB_EMPTY
    - fec_remove
    - log_debug
    linkageType: ''
    returnType: void
    signature: void lde_gc_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/lde_lib.c:1047,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/lde_lib.c:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1049
    functionName: lde_gc_start_timer
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 3
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void lde_gc_start_timer(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/lde_lib.c:1054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1055
    functionName: lde_gc_stop_timer
    functionSourceFile: /src/frr/ldpd/lde_lib.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void lde_gc_stop_timer(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/ldpd/control.c:35,1
    - Dst: log_warn
      Src: /src/frr/ldpd/control.c:36,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/control.c:39,1
    - Dst: memset
      Src: /src/frr/ldpd/control.c:41,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/control.c:43,1
    - Dst: unlink
      Src: /src/frr/ldpd/control.c:45,1
    - Dst: log_warn
      Src: /src/frr/ldpd/control.c:47,1
    - Dst: close
      Src: /src/frr/ldpd/control.c:48,1
    - Dst: umask
      Src: /src/frr/ldpd/control.c:52,1
    - Dst: bind
      Src: /src/frr/ldpd/control.c:53,1
    - Dst: log_warn
      Src: /src/frr/ldpd/control.c:54,1
    - Dst: close
      Src: /src/frr/ldpd/control.c:55,1
    - Dst: umask
      Src: /src/frr/ldpd/control.c:56,1
    - Dst: umask
      Src: /src/frr/ldpd/control.c:59,1
    - Dst: chmod
      Src: /src/frr/ldpd/control.c:61,1
    - Dst: log_warn
      Src: /src/frr/ldpd/control.c:62,1
    - Dst: close
      Src: /src/frr/ldpd/control.c:63,1
    - Dst: unlink
      Src: /src/frr/ldpd/control.c:64,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 28
    functionDepth: 9
    functionLinenumber: 28
    functionLinenumberEnd: 71
    functionName: control_init
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - unlink
    - memset
    - strlcpy
    - socket
    - close
    - bind
    - chmod
    - umask
    - log_warn
    - sock_set_nonblock
    linkageType: ''
    returnType: int
    signature: int control_init(char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen
      Src: /src/frr/ldpd/control.c:76,1
    - Dst: log_warn
      Src: /src/frr/ldpd/control.c:77,1
    - Dst: accept_add
      Src: /src/frr/ldpd/control.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 73
    functionDepth: 9
    functionLinenumber: 73
    functionLinenumberEnd: 82
    functionName: control_listen
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - accept_add
    - log_warn
    - listen
    linkageType: ''
    returnType: int
    signature: int control_listen(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: accept_del
      Src: /src/frr/ldpd/control.c:87,1
    - Dst: close
      Src: /src/frr/ldpd/control.c:88,1
    - Dst: unlink
      Src: /src/frr/ldpd/control.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: control_cleanup
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - unlink
    - close
    - accept_del
    linkageType: ''
    returnType: void
    signature: void control_cleanup(char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/frr/ldpd/control.c:101,1
    - Dst: EVENT_FD
      Src: /src/frr/ldpd/control.c:101,1
    - Dst: accept_pause
      Src: /src/frr/ldpd/control.c:108,1
    - Dst: log_warn
      Src: /src/frr/ldpd/control.c:111,1
    - Dst: sock_set_nonblock
      Src: /src/frr/ldpd/control.c:114,1
    - Dst: calloc
      Src: /src/frr/ldpd/control.c:116,1
    - Dst: log_warn
      Src: /src/frr/ldpd/control.c:117,1
    - Dst: close
      Src: /src/frr/ldpd/control.c:118,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/control.c:122,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/control.c:125,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/ldpd/control.c:130,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 93
    functionDepth: 9
    functionLinenumber: 93
    functionLinenumberEnd: 131
    functionName: control_accept
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - imsg_init
    - accept_pause
    - close
    - accept
    - TAILQ_INSERT_TAIL
    - event_add_read
    - log_warn
    - sock_set_nonblock
    - calloc
    linkageType: ''
    returnType: void
    signature: void control_accept(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/ldpd/control.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: control_connbyfd
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct ctl_conn
    signature: 'struct ctl_conn *

      control_connbyfd(int fd)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/ldpd/control.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pid
    argTypes:
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 157
    functionName: control_connbypid
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct ctl_conn
    signature: 'struct ctl_conn *

      control_connbypid(pid_t pid)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: control_connbyfd
      Src: /src/frr/ldpd/control.c:164,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/control.c:165,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/control.c:169,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/ldpd/control.c:170,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/control.c:172,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/control.c:173,1
    - Dst: close
      Src: /src/frr/ldpd/control.c:174,1
    - Dst: accept_unpause
      Src: /src/frr/ldpd/control.c:175,1
    - Dst: free
      Src: /src/frr/ldpd/control.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 159
    functionDepth: 9
    functionLinenumber: 159
    functionLinenumberEnd: 177
    functionName: control_close
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - msgbuf_clear
    - TAILQ_REMOVE
    - free
    - close
    - accept_unpause
    - EVENT_OFF
    - control_connbyfd
    - log_warnx
    linkageType: ''
    returnType: void
    signature: void control_close(int fd)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/ldpd/control.c:182,1
    - Dst: control_connbyfd
      Src: /src/frr/ldpd/control.c:188,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/control.c:189,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/control.c:195,1
    - Dst: control_close
      Src: /src/frr/ldpd/control.c:197,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/control.c:202,1
    - Dst: control_close
      Src: /src/frr/ldpd/control.c:203,1
    - Dst: memcpy
      Src: /src/frr/ldpd/control.c:222,1
    - Dst: ldpe_iface_ctl
      Src: /src/frr/ldpd/control.c:223,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/control.c:224,1
    - Dst: ldpe_adj_ctl
      Src: /src/frr/ldpd/control.c:229,1
    - Dst: ldpe_adj_detail_ctl
      Src: /src/frr/ldpd/control.c:232,1
    - Dst: ldpe_imsg_compose_lde
      Src: /src/frr/ldpd/control.c:238,1
    - Dst: ldpe_nbr_ctl
      Src: /src/frr/ldpd/control.c:242,1
    - Dst: nbr_clear_ctl
      Src: /src/frr/ldpd/control.c:249,1
    - Dst: ldpe_ldp_sync_ctl
      Src: /src/frr/ldpd/control.c:252,1
    - Dst: log_debug
      Src: /src/frr/ldpd/control.c:258,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/control.c:262,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/control.c:265,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 64
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 180
    functionDepth: 10
    functionLinenumber: 180
    functionLinenumberEnd: 266
    functionName: control_dispatch_imsg
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - ldpe_nbr_ctl
    - ldpe_adj_detail_ctl
    - imsg_free
    - ldpe_iface_ctl
    - ldpe_adj_ctl
    - EVENT_FD
    - ldpe_ldp_sync_ctl
    - imsg_get
    - imsg_event_add
    - imsg_read
    - control_connbyfd
    - control_close
    - imsg_compose_event
    - log_warnx
    - nbr_clear_ctl
    - ldpe_imsg_compose_lde
    - memcpy
    - log_debug
    linkageType: ''
    returnType: void
    signature: void control_dispatch_imsg(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: control_connbypid
      Src: /src/frr/ldpd/control.c:273,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/control.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - imsg
    argTypes:
    - struct imsg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 278
    functionName: control_imsg_relay
    functionSourceFile: /src/frr/ldpd/control.c
    functionUses: 0
    functionsReached:
    - imsg_compose_event
    - control_connbypid
    linkageType: ''
    returnType: int
    signature: int control_imsg_relay(struct imsg *imsg)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: len_fec_tlv
      Src: /src/frr/ldpd/notification.c:31,1
    - Dst: ibuf_open
      Src: /src/frr/ldpd/notification.c:35,1
    - Dst: fatal
      Src: /src/frr/ldpd/notification.c:36,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/notification.c:38,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/notification.c:40,1
    - Dst: gen_status_tlv
      Src: /src/frr/ldpd/notification.c:41,1
    - Dst: gen_pw_status_tlv
      Src: /src/frr/ldpd/notification.c:44,1
    - Dst: gen_fec_tlv
      Src: /src/frr/ldpd/notification.c:46,1
    - Dst: gen_returned_tlvs
      Src: /src/frr/ldpd/notification.c:48,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/notification.c:51,1
    - Dst: log_msg_notification
      Src: /src/frr/ldpd/notification.c:56,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/notification.c:57,1
    - Dst: evbuf_enqueue
      Src: /src/frr/ldpd/notification.c:91,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 2
    argNames:
    - tcp
    - nm
    argTypes:
    - struct tcp_conn*
    - struct notify_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 19
    functionDepth: 6
    functionLinenumber: 19
    functionLinenumberEnd: 92
    functionName: send_notification_full
    functionSourceFile: /src/frr/ldpd/notification.c
    functionUses: 0
    functionsReached:
    - nbr_fsm
    - gen_msg_hdr
    - ibuf_open
    - gen_returned_tlvs
    - log_msg_notification
    - gen_pw_status_tlv
    - gen_ldp_hdr
    - len_fec_tlv
    - evbuf_enqueue
    - gen_status_tlv
    - gen_fec_tlv
    - ibuf_free
    - fatal
    linkageType: ''
    returnType: void
    signature: void send_notification_full(struct tcp_conn *tcp, struct notify_msg
      *nm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/notification.c:101,1
    - Dst: send_notification_full
      Src: /src/frr/ldpd/notification.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - tcp
    - status_code
    - msg_id
    - msg_type
    argTypes:
    - struct tcp_conn*
    - uint32_t
    - uint32_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 95
    functionDepth: 7
    functionLinenumber: 95
    functionLinenumberEnd: 107
    functionName: send_notification
    functionSourceFile: /src/frr/ldpd/notification.c
    functionUses: 7
    functionsReached:
    - send_notification_full
    - memset
    linkageType: ''
    returnType: void
    signature: "void send_notification(struct tcp_conn *tcp, uint32_t status_code,
      uint32_t msg_id,\n    uint16_t msg_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/notification.c:115,1
    - Dst: send_notification_full
      Src: /src/frr/ldpd/notification.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - nbr
    - status_code
    - msg_id
    - msg_type
    - tlv_type
    - tlv_len
    - tlv_data
    argTypes:
    - struct nbr*
    - uint32_t
    - uint32_t
    - uint16_t
    - uint16_t
    - uint16_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 109
    functionDepth: 7
    functionLinenumber: 109
    functionLinenumberEnd: 128
    functionName: send_notification_rtlvs
    functionSourceFile: /src/frr/ldpd/notification.c
    functionUses: 2
    functionsReached:
    - send_notification_full
    - memset
    linkageType: ''
    returnType: void
    signature: "void send_notification_rtlvs(struct nbr *nbr, uint32_t status_code,
      uint32_t msg_id,\n    uint16_t msg_type, uint16_t tlv_type, uint16_t tlv_len,
      char *tlv_data)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/notification.c:138,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/notification.c:143,1
    - Dst: memcpy
      Src: /src/frr/ldpd/notification.c:147,1
    - Dst: ntohs
      Src: /src/frr/ldpd/notification.c:149,1
    - Dst: ntohs
      Src: /src/frr/ldpd/notification.c:150,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/notification.c:151,1
    - Dst: memset
      Src: /src/frr/ldpd/notification.c:158,1
    - Dst: ntohl
      Src: /src/frr/ldpd/notification.c:159,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/notification.c:168,1
    - Dst: memcpy
      Src: /src/frr/ldpd/notification.c:173,1
    - Dst: ntohs
      Src: /src/frr/ldpd/notification.c:174,1
    - Dst: ntohs
      Src: /src/frr/ldpd/notification.c:175,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/notification.c:177,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/notification.c:192,1
    - Dst: ntohl
      Src: /src/frr/ldpd/notification.c:197,1
    - Dst: tlv_decode_fec_elm
      Src: /src/frr/ldpd/notification.c:201,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/notification.c:206,1
    - Dst: ntohs
      Src: /src/frr/ldpd/notification.c:214,1
    - Dst: send_notification_rtlvs
      Src: /src/frr/ldpd/notification.c:216,1
    - Dst: send_notification
      Src: /src/frr/ldpd/notification.c:230,1
    - Dst: send_notification
      Src: /src/frr/ldpd/notification.c:239,1
    - Dst: send_notification
      Src: /src/frr/ldpd/notification.c:246,1
    - Dst: send_notification
      Src: /src/frr/ldpd/notification.c:251,1
    - Dst: log_msg_notification
      Src: /src/frr/ldpd/notification.c:260,1
    - Dst: htonl
      Src: /src/frr/ldpd/notification.c:262,1
    - Dst: nbr_start_idtimer
      Src: /src/frr/ldpd/notification.c:264,1
    - Dst: send_notification
      Src: /src/frr/ldpd/notification.c:275,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/notification.c:280,1
    - Dst: ldpe_imsg_compose_lde
      Src: /src/frr/ldpd/notification.c:290,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 146
    argCount: 3
    argNames:
    - nbr
    - buf
    - len
    argTypes:
    - struct nbr*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 130
    functionDepth: 8
    functionLinenumber: 130
    functionLinenumberEnd: 328
    functionName: recv_notification
    functionSourceFile: /src/frr/ldpd/notification.c
    functionUses: 1
    functionsReached:
    - nbr_start_idtimer
    - nbr_fsm
    - send_notification_rtlvs
    - htonl
    - memset
    - log_msg_notification
    - ntohs
    - tlv_decode_fec_elm
    - send_notification
    - ldpe_imsg_compose_lde
    - session_shutdown
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: int recv_notification(struct nbr *nbr, char *buf, uint16_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/notification.c:336,1
    - Dst: htons
      Src: /src/frr/ldpd/notification.c:337,1
    - Dst: htons
      Src: /src/frr/ldpd/notification.c:338,1
    - Dst: htonl
      Src: /src/frr/ldpd/notification.c:339,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/notification.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - buf
    - status_code
    - msg_id
    - msg_type
    argTypes:
    - struct ibuf*
    - uint32_t
    - uint32_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 348
    functionName: gen_status_tlv
    functionSourceFile: /src/frr/ldpd/notification.c
    functionUses: 2
    functionsReached:
    - htonl
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: "int gen_status_tlv(struct ibuf *buf, uint32_t status_code, uint32_t
      msg_id,\n    uint16_t msg_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ldpd/notification.c:358,1
    - Dst: htons
      Src: /src/frr/ldpd/notification.c:359,1
    - Dst: htons
      Src: /src/frr/ldpd/notification.c:360,1
    - Dst: htons
      Src: /src/frr/ldpd/notification.c:361,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/notification.c:363,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/notification.c:364,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/notification.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - buf
    - type
    - length
    - tlv_data
    argTypes:
    - struct ibuf*
    - uint16_t
    - uint16_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 368
    functionName: gen_returned_tlvs
    functionSourceFile: /src/frr/ldpd/notification.c
    functionUses: 1
    functionsReached:
    - ibuf_add
    - htons
    linkageType: ''
    returnType: int
    signature: "int gen_returned_tlvs(struct ibuf *buf, uint16_t type, uint16_t length,\n
      \   char *tlv_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: debug_msg
      Src: /src/frr/ldpd/notification.c:374,1
    - Dst: status_code_name
      Src: /src/frr/ldpd/notification.c:375,1
    - Dst: debug_msg
      Src: /src/frr/ldpd/notification.c:379,1
    - Dst: status_code_name
      Src: /src/frr/ldpd/notification.c:380,1
    - Dst: debug_msg
      Src: /src/frr/ldpd/notification.c:382,1
    - Dst: log_map
      Src: /src/frr/ldpd/notification.c:382,1
    - Dst: debug_msg
      Src: /src/frr/ldpd/notification.c:384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - out
    - nbr
    - nm
    argTypes:
    - int
    - struct nbr*
    - struct notify_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 386
    functionName: log_msg_notification
    functionSourceFile: /src/frr/ldpd/notification.c
    functionUses: 2
    functionsReached:
    - debug_msg
    - status_code_name
    - log_map
    linkageType: ''
    returnType: void
    signature: void log_msg_notification(int out, struct nbr *nbr, struct notify_msg
      *nm)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_conf.c:85,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_conf.c:87,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_conf.c:92,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - str
    - af
    - addr
    argTypes:
    - char*
    - int*
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 98
    functionName: ldp_get_address
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - memset
    linkageType: ''
    returnType: int
    signature: int ldp_get_address(const char *str, int *af, union ldpd_addr *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:106,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:107,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:111,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:112,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:116,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:120,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:123,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - vty
    - af
    argTypes:
    - struct vty*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 125
    functionName: ldp_af_iface_config_write
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - iface_af_get
    - RB_FOREACH
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ldp_af_iface_config_write(struct vty *vty, int af)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:136,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:137,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_conf.c:137,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:141,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:145,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:149,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:151,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:153,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:158,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:162,1
    - Dst: ldp_addrisset
      Src: /src/frr/ldpd/ldp_vty_conf.c:165,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:166,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_conf.c:167,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:169,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:174,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:176,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:178,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:180,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:185,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:187,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:190,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:192,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:196,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:198,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:200,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:205,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:207,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:210,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:212,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:216,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:219,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:221,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:223,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:224,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_conf.c:225,1
    - Dst: ldp_af_iface_config_write
      Src: /src/frr/ldpd/ldp_vty_conf.c:229,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:231,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:232,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 64
    argCount: 4
    argNames:
    - vty
    - af
    - conf
    - af_conf
    argTypes:
    - struct vty*
    - int
    - struct ldpd_conf*
    - struct ldpd_af_conf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 233
    functionName: ldp_af_config_write
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - af_name
    - vty_out
    - log_addr
    - ldp_af_iface_config_write
    - RB_FOREACH
    - ldp_addrisset
    linkageType: ''
    returnType: void
    signature: "void ldp_af_config_write(struct vty *vty, int af, struct ldpd_conf
      *conf,\n    struct ldpd_af_conf *af_conf)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:243,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:246,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:250,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:254,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:259,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:263,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:267,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:271,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:274,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:278,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:282,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:284,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:286,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:291,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:294,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:298,1
    - Dst: ldp_af_config_write
      Src: /src/frr/ldpd/ldp_vty_conf.c:302,1
    - Dst: ldp_af_config_write
      Src: /src/frr/ldpd/ldp_vty_conf.c:303,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:304,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:305,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:306,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 41
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 309
    functionName: ldp_config_write
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - vty_out
    - ldp_af_config_write
    linkageType: ''
    returnType: int
    signature: int ldp_config_write(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:317,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:318,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:321,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:326,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_conf.c:327,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:330,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:335,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:338,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:341,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:344,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:346,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - vty
    - pw
    argTypes:
    - struct vty*
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 347
    functionName: ldp_l2vpn_pw_config_write
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - log_addr
    linkageType: ''
    returnType: void
    signature: void ldp_l2vpn_pw_config_write(struct vty *vty, struct l2vpn_pw *pw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:356,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:357,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:360,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:363,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:366,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:368,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:371,1
    - Dst: ldp_l2vpn_pw_config_write
      Src: /src/frr/ldpd/ldp_vty_conf.c:372,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:373,1
    - Dst: ldp_l2vpn_pw_config_write
      Src: /src/frr/ldpd/ldp_vty_conf.c:374,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:376,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:377,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 382
    functionName: ldp_l2vpn_config_write
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_l2vpn_pw_config_write
    - RB_FOREACH
    - vty_out
    linkageType: ''
    returnType: int
    signature: int ldp_l2vpn_config_write(struct vty *vty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_vty_conf.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 397
    functionName: ldp_vty_get_af
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - fatalx
    linkageType: ''
    returnType: int
    signature: int ldp_vty_get_af(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/ldp_vty_conf.c:404,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:407,1
    - Dst: l2vpn_if_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:408,1
    - Dst: l2vpn_pw_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - xconf
    - ifname
    argTypes:
    - struct ldpd_conf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 415
    functionName: ldp_iface_is_configured
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - l2vpn_pw_find
    - RB_FOREACH
    - if_lookup_name
    - l2vpn_if_find
    linkageType: ''
    returnType: int
    signature: int ldp_iface_is_configured(struct ldpd_conf *xconf, const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_zebra_regdereg_zebra_info
      Src: /src/frr/ldpd/ldp_vty_conf.c:428,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - negate
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 417
    functionDepth: 6
    functionLinenumber: 417
    functionLinenumberEnd: 433
    functionName: ldp_vty_mpls_ldp
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_zebra_regdereg_zebra_info
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_mpls_ldp(struct vty *vty, const char *negate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_vty_conf.c:444,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_vty_conf.c:447,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:455,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_vty_conf.c:467,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:471,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - vty
    - negate
    - af_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 435
    functionDepth: 4
    functionLinenumber: 435
    functionLinenumberEnd: 474
    functionName: ldp_vty_address_family
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - fatalx
    - strcmp
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_address_family(struct vty *vty, const char *negate, const
      char *af_str)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:505,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:509,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:510,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:531,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:535,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:536,1
    - Dst: VTY_CHECK_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:537,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:539,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:545,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_vty_conf.c:548,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 4
    argNames:
    - vty
    - negate
    - hello_type
    - secs
    argTypes:
    - struct vty*
    - char*
    - enum hello_type
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 476
    functionDepth: 4
    functionLinenumber: 476
    functionLinenumberEnd: 552
    functionName: ldp_vty_disc_holdtime
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - fatalx
    - VTY_CHECK_CONTEXT
    - ldp_af_conf_get
    - VTY_GET_CONTEXT
    - ldp_config_apply
    - iface_af_get
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_disc_holdtime(struct vty *vty, const char *negate,\n    enum
      hello_type hello_type, long secs)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:586,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:590,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:591,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:612,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:616,1
    - Dst: VTY_GET_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:617,1
    - Dst: VTY_CHECK_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:618,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:620,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:626,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_vty_conf.c:629,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 4
    argNames:
    - vty
    - negate
    - hello_type
    - secs
    argTypes:
    - struct vty*
    - char*
    - enum hello_type
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 554
    functionDepth: 4
    functionLinenumber: 554
    functionLinenumberEnd: 633
    functionName: ldp_vty_disc_interval
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - fatalx
    - VTY_CHECK_CONTEXT
    - ldp_af_conf_get
    - VTY_GET_CONTEXT
    - ldp_config_apply
    - iface_af_get
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_disc_interval(struct vty *vty, const char *negate,\n    enum
      hello_type hello_type, long secs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:642,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:643,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:651,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:657,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - negate
    - acl_from_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 635
    functionDepth: 4
    functionLinenumber: 635
    functionLinenumberEnd: 660
    functionName: ldp_vty_targeted_hello_accept
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    - strlcpy
    - ldp_vty_get_af
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_targeted_hello_accept(struct vty *vty, const char *negate,\n
      \   const char *acl_from_str)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_conf.c:668,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:669,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:673,1
    - Dst: nbr_params_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:683,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:684,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:685,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - vty
    - negate
    - lsr_id
    - secs
    argTypes:
    - struct vty*
    - char*
    - struct in_addr
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 662
    functionDepth: 4
    functionLinenumber: 662
    functionLinenumberEnd: 696
    functionName: ldp_vty_nbr_session_holdtime
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - nbr_params_new
    - QOBJ_REG
    - bad_addr_v4
    - RB_INSERT
    - ldp_config_apply
    - nbr_params_find
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_nbr_session_holdtime(struct vty *vty, const char *negate,\n
      \   struct in_addr lsr_id, long secs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:704,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:705,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - negate
    - secs
    argTypes:
    - struct vty*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 698
    functionDepth: 4
    functionLinenumber: 698
    functionLinenumberEnd: 715
    functionName: ldp_vty_af_session_holdtime
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    - ldp_vty_get_af
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_af_session_holdtime(struct vty *vty, const char *negate,
      long secs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:725,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:729,1
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/ldp_vty_conf.c:730,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:736,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:744,1
    - Dst: ldp_iface_is_configured
      Src: /src/frr/ldpd/ldp_vty_conf.c:750,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:751,1
    - Dst: if_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:755,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:756,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:758,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:759,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:761,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:763,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:766,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:772,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:775,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 3
    argNames:
    - vty
    - negate
    - ifname
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 717
    functionDepth: 4
    functionLinenumber: 717
    functionLinenumberEnd: 782
    functionName: ldp_vty_interface
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - vty_out
    - if_new
    - QOBJ_REG
    - RB_INSERT
    - VTY_PUSH_CONTEXT
    - ldp_config_apply
    - ldp_iface_is_configured
    - iface_af_get
    - if_lookup_name
    linkageType: ''
    returnType: int
    signature: int ldp_vty_interface(struct vty *vty, const char *negate, const char
      *ifname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:790,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:791,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_conf.c:794,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_conf.c:797,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_vty_conf.c:798,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:799,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:804,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - negate
    - addr_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 784
    functionDepth: 4
    functionLinenumber: 784
    functionLinenumberEnd: 807
    functionName: ldp_vty_trans_addr
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - vty_out
    - memset
    - ldp_af_conf_get
    - bad_addr
    - inet_pton
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_trans_addr(struct vty *vty, const char *negate, const char
      *addr_str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:816,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_conf.c:818,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_vty_conf.c:819,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:820,1
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/ldp_vty_conf.c:823,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:824,1
    - Dst: tnbr_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:828,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:834,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:835,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:836,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:838,1
    - Dst: tnbr_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:846,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:848,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:849,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:851,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - vty
    - negate
    - addr_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 809
    functionDepth: 4
    functionLinenumber: 809
    functionLinenumberEnd: 854
    functionName: ldp_vty_neighbor_targeted
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - vty_out
    - RB_REMOVE
    - QOBJ_UNREG
    - IN6_IS_SCOPE_EMBED
    - QOBJ_REG
    - free
    - RB_INSERT
    - bad_addr
    - inet_pton
    - ldp_config_apply
    - tnbr_find
    - tnbr_new
    linkageType: ''
    returnType: int
    signature: int ldp_vty_neighbor_targeted(struct vty *vty, const char *negate,
      const char *addr_str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:863,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:864,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:871,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:876,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:882,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - vty
    - negate
    - acl_to_str
    - acl_for_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 856
    functionDepth: 4
    functionLinenumber: 856
    functionLinenumberEnd: 885
    functionName: ldp_vty_label_advertise
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    - strlcpy
    - ldp_vty_get_af
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_label_advertise(struct vty *vty, const char *negate, const
      char *acl_to_str,\n    const char *acl_for_str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:894,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:895,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:903,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:907,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - vty
    - negate
    - host_routes
    - acl_for_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 887
    functionDepth: 4
    functionLinenumber: 887
    functionLinenumberEnd: 910
    functionName: ldp_vty_label_allocate
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    - strlcpy
    - ldp_vty_get_af
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_label_allocate(struct vty *vty, const char *negate, const
      char *host_routes,\n    const char *acl_for_str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:918,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:919,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:927,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - negate
    - acl_for_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 912
    functionDepth: 4
    functionLinenumber: 912
    functionLinenumberEnd: 936
    functionName: ldp_vty_label_expnull
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    - strlcpy
    - ldp_vty_get_af
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_label_expnull(struct vty *vty, const char *negate, const
      char *acl_for_str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:945,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:946,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:953,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:958,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:964,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - vty
    - negate
    - acl_from_str
    - acl_for_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 938
    functionDepth: 4
    functionLinenumber: 938
    functionLinenumberEnd: 967
    functionName: ldp_vty_label_accept
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    - strlcpy
    - ldp_vty_get_af
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_label_accept(struct vty *vty, const char *negate, const
      char *acl_from_str,\n    const char *acl_for_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_conf.c:975,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_conf.c:976,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - negate
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 969
    functionDepth: 4
    functionLinenumber: 969
    functionLinenumberEnd: 986
    functionName: ldp_vty_ttl_security
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    - ldp_vty_get_af
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_ttl_security(struct vty *vty, const char *negate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_conf.c:994,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:995,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1001,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - negate
    - address
    argTypes:
    - struct vty*
    - char*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 988
    functionDepth: 4
    functionLinenumber: 988
    functionLinenumberEnd: 1004
    functionName: ldp_vty_router_id
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - bad_addr_v4
    - vty_out
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_router_id(struct vty *vty, const char *negate, struct in_addr
      address)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1014,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - negate
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1006
    functionDepth: 4
    functionLinenumber: 1006
    functionLinenumberEnd: 1017
    functionName: ldp_vty_ordered_control
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_ordered_control(struct vty *vty, const char *negate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1029,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_vty_conf.c:1032,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - negate
    - secs
    argTypes:
    - struct vty*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1019
    functionDepth: 4
    functionLinenumber: 1019
    functionLinenumberEnd: 1035
    functionName: ldp_vty_wait_for_sync_interval
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - fatalx
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_wait_for_sync_interval(struct vty *vty, const char *negate,\n
      \   long secs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1045,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - negate
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1037
    functionDepth: 4
    functionLinenumber: 1037
    functionLinenumberEnd: 1048
    functionName: ldp_vty_allow_broken_lsp
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_allow_broken_lsp(struct vty *vty, const char *negate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1058,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - negate
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1050
    functionDepth: 4
    functionLinenumber: 1050
    functionLinenumberEnd: 1061
    functionName: ldp_vty_ds_cisco_interop
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_ds_cisco_interop(struct vty *vty, const char * negate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1071,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - negate
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1063
    functionDepth: 4
    functionLinenumber: 1063
    functionLinenumberEnd: 1074
    functionName: ldp_vty_trans_pref_ipv4
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_trans_pref_ipv4(struct vty *vty, const char *negate)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1084,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_conf.c:1088,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1089,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1093,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_conf.c:1099,1
    - Dst: nbr_params_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1103,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1104,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1105,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_vty_conf.c:1107,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:1110,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1113,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_conf.c:1114,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1118,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - vty
    - negate
    - lsr_id
    - password_str
    argTypes:
    - struct vty*
    - char*
    - struct in_addr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1076
    functionDepth: 4
    functionLinenumber: 1076
    functionLinenumberEnd: 1121
    functionName: ldp_vty_neighbor_password
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - strlen
    - vty_out
    - memset
    - nbr_params_new
    - QOBJ_REG
    - strcmp
    - bad_addr_v4
    - strlcpy
    - RB_INSERT
    - ldp_config_apply
    - nbr_params_find
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_neighbor_password(struct vty *vty, const char *negate,
      struct in_addr lsr_id,\n    const char *password_str)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_conf.c:1131,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1132,1
    - Dst: strtol
      Src: /src/frr/ldpd/ldp_vty_conf.c:1137,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1139,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1144,1
    - Dst: nbr_params_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1155,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1156,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1157,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1170,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 4
    argNames:
    - vty
    - negate
    - lsr_id
    - hops_str
    argTypes:
    - struct vty*
    - char*
    - struct in_addr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1123
    functionDepth: 4
    functionLinenumber: 1123
    functionLinenumberEnd: 1173
    functionName: ldp_vty_neighbor_ttl_security
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - nbr_params_new
    - QOBJ_REG
    - bad_addr_v4
    - strtol
    - RB_INSERT
    - ldp_config_apply
    - nbr_params_find
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_neighbor_ttl_security(struct vty *vty, const char *negate,\n
      \   struct in_addr lsr_id, const char *hops_str)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1183,1
    - Dst: l2vpn_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1187,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:1193,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1194,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:1195,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1196,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldp_vty_conf.c:1197,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1198,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1199,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1200,1
    - Dst: l2vpn_del
      Src: /src/frr/ldpd/ldp_vty_conf.c:1201,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1203,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1209,1
    - Dst: l2vpn_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1213,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1215,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1216,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1218,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1220,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - vty
    - negate
    - name_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1175
    functionDepth: 4
    functionLinenumber: 1175
    functionLinenumberEnd: 1223
    functionName: ldp_vty_l2vpn
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - RB_REMOVE
    - QOBJ_UNREG
    - QOBJ_REG
    - RB_INSERT
    - l2vpn_find
    - l2vpn_del
    - ldp_config_apply
    - VTY_PUSH_CONTEXT
    - RB_FOREACH
    - l2vpn_new
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn(struct vty *vty, const char *negate, const char *name_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1228,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_conf.c:1231,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1234,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_conf.c:1237,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - negate
    - ifname
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1225
    functionDepth: 4
    functionLinenumber: 1225
    functionLinenumberEnd: 1243
    functionName: ldp_vty_l2vpn_bridge
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - VTY_DECLVAR_CONTEXT
    - strlcpy
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_bridge(struct vty *vty, const char *negate, const
      char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1248,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - negate
    - mtu
    argTypes:
    - struct vty*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1245
    functionDepth: 4
    functionLinenumber: 1245
    functionLinenumberEnd: 1258
    functionName: ldp_vty_l2vpn_mtu
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    - VTY_DECLVAR_CONTEXT
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_mtu(struct vty *vty, const char *negate, long mtu)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1263,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1267,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_vty_conf.c:1271,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - negate
    - type_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1260
    functionDepth: 4
    functionLinenumber: 1260
    functionLinenumberEnd: 1284
    functionName: ldp_vty_l2vpn_pwtype
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - strcmp
    - vty_out
    - VTY_DECLVAR_CONTEXT
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_pwtype(struct vty *vty, const char *negate, const
      char *type_str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1289,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1293,1
    - Dst: l2vpn_if_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1297,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1303,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1304,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1305,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1307,1
    - Dst: ldp_iface_is_configured
      Src: /src/frr/ldpd/ldp_vty_conf.c:1315,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1316,1
    - Dst: l2vpn_if_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1320,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1321,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1322,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1324,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - vty
    - negate
    - ifname
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1286
    functionDepth: 4
    functionLinenumber: 1286
    functionLinenumberEnd: 1327
    functionName: ldp_vty_l2vpn_interface
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - RB_REMOVE
    - VTY_DECLVAR_CONTEXT
    - QOBJ_UNREG
    - QOBJ_REG
    - free
    - RB_INSERT
    - ldp_config_apply
    - ldp_iface_is_configured
    - l2vpn_if_new
    - l2vpn_if_find
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_interface(struct vty *vty, const char *negate, const
      char *ifname)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1332,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1336,1
    - Dst: l2vpn_pw_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1340,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1346,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1348,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1350,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1351,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1353,1
    - Dst: VTY_PUSH_CONTEXT_SUB
      Src: /src/frr/ldpd/ldp_vty_conf.c:1359,1
    - Dst: ldp_iface_is_configured
      Src: /src/frr/ldpd/ldp_vty_conf.c:1363,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1364,1
    - Dst: l2vpn_pw_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1368,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1370,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1371,1
    - Dst: VTY_PUSH_CONTEXT_SUB
      Src: /src/frr/ldpd/ldp_vty_conf.c:1373,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1375,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - vty
    - negate
    - ifname
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1329
    functionDepth: 4
    functionLinenumber: 1329
    functionLinenumberEnd: 1378
    functionName: ldp_vty_l2vpn_pseudowire
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - l2vpn_pw_find
    - VTY_PUSH_CONTEXT_SUB
    - vty_out
    - RB_REMOVE
    - VTY_DECLVAR_CONTEXT
    - QOBJ_UNREG
    - l2vpn_pw_new
    - QOBJ_REG
    - free
    - RB_INSERT
    - ldp_config_apply
    - ldp_iface_is_configured
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_pseudowire(struct vty *vty, const char *negate, const
      char *ifname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/ldpd/ldp_vty_conf.c:1383,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1389,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - negate
    - preference_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1380
    functionDepth: 4
    functionLinenumber: 1380
    functionLinenumberEnd: 1401
    functionName: ldp_vty_l2vpn_pw_cword
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - VTY_DECLVAR_CONTEXT_SUB
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_pw_cword(struct vty *vty, const char *negate, const
      char *preference_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/ldpd/ldp_vty_conf.c:1406,1
    - Dst: ldp_get_address
      Src: /src/frr/ldpd/ldp_vty_conf.c:1410,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_vty_conf.c:1411,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1412,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_conf.c:1418,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - vty
    - negate
    - addr_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1403
    functionDepth: 4
    functionLinenumber: 1403
    functionLinenumberEnd: 1429
    functionName: ldp_vty_l2vpn_pw_nbr_addr
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - VTY_DECLVAR_CONTEXT_SUB
    - bad_addr
    - ldp_get_address
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_pw_nbr_addr(struct vty *vty, const char *negate,
      const char *addr_str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/ldpd/ldp_vty_conf.c:1434,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_conf.c:1436,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_conf.c:1437,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - negate
    - lsr_id
    argTypes:
    - struct vty*
    - char*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1431
    functionDepth: 4
    functionLinenumber: 1431
    functionLinenumberEnd: 1449
    functionName: ldp_vty_l2vpn_pw_nbr_id
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - bad_addr_v4
    - vty_out
    - VTY_DECLVAR_CONTEXT_SUB
    - ldp_config_apply
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_pw_nbr_id(struct vty *vty, const char *negate, struct
      in_addr lsr_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/ldpd/ldp_vty_conf.c:1454,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1461,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - vty
    - negate
    - pwid
    argTypes:
    - struct vty*
    - char*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1451
    functionDepth: 4
    functionLinenumber: 1451
    functionLinenumberEnd: 1464
    functionName: ldp_vty_l2vpn_pw_pwid
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    - VTY_DECLVAR_CONTEXT_SUB
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_pw_pwid(struct vty *vty, const char *negate, long
      pwid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT_SUB
      Src: /src/frr/ldpd/ldp_vty_conf.c:1469,1
    - Dst: ldp_config_apply
      Src: /src/frr/ldpd/ldp_vty_conf.c:1476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - negate
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1466
    functionDepth: 4
    functionLinenumber: 1466
    functionLinenumberEnd: 1479
    functionName: ldp_vty_l2vpn_pw_pwstatus
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - ldp_config_apply
    - VTY_DECLVAR_CONTEXT_SUB
    linkageType: ''
    returnType: int
    signature: int ldp_vty_l2vpn_pw_pwstatus(struct vty *vty, const char *negate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_iface_is_configured
      Src: /src/frr/ldpd/ldp_vty_conf.c:1487,1
    - Dst: if_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1490,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1491,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conf
    - name
    argTypes:
    - struct ldpd_conf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1481
    functionDepth: 3
    functionLinenumber: 1481
    functionLinenumberEnd: 1494
    functionName: iface_new_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - QOBJ_REG
    - if_new
    - ldp_iface_is_configured
    linkageType: ''
    returnType: struct iface
    signature: 'struct iface *

      iface_new_api(struct ldpd_conf *conf, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1499,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1500,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conf
    - iface
    argTypes:
    - struct ldpd_conf*
    - struct iface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1496
    functionDepth: 1
    functionLinenumber: 1496
    functionLinenumberEnd: 1502
    functionName: iface_del_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - free
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void iface_del_api(struct ldpd_conf *conf, struct iface *iface)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_SCOPE_EMBED
      Src: /src/frr/ldpd/ldp_vty_conf.c:1509,1
    - Dst: tnbr_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1512,1
    - Dst: tnbr_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1515,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1517,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - conf
    - af
    - addr
    argTypes:
    - struct ldpd_conf*
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1504
    functionDepth: 1
    functionLinenumber: 1504
    functionLinenumberEnd: 1520
    functionName: tnbr_new_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - IN6_IS_SCOPE_EMBED
    - QOBJ_REG
    - RB_INSERT
    - tnbr_find
    - tnbr_new
    linkageType: ''
    returnType: struct tnbr
    signature: 'struct tnbr *

      tnbr_new_api(struct ldpd_conf *conf, int af, union ldpd_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1525,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1526,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conf
    - tnbr
    argTypes:
    - struct ldpd_conf*
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1522
    functionDepth: 1
    functionLinenumber: 1522
    functionLinenumberEnd: 1528
    functionName: tnbr_del_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - free
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void tnbr_del_api(struct ldpd_conf *conf, struct tnbr *tnbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1535,1
    - Dst: nbr_params_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1538,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1539,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conf
    - lsr_id
    argTypes:
    - struct ldpd_conf*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1530
    functionDepth: 2
    functionLinenumber: 1530
    functionLinenumberEnd: 1542
    functionName: nbrp_new_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - QOBJ_REG
    - nbr_params_find
    - nbr_params_new
    linkageType: ''
    returnType: struct nbr_params
    signature: 'struct nbr_params *

      nbrp_new_api(struct ldpd_conf *conf, struct in_addr lsr_id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1547,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1548,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conf
    - nbrp
    argTypes:
    - struct ldpd_conf*
    - struct nbr_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1544
    functionDepth: 1
    functionLinenumber: 1544
    functionLinenumberEnd: 1550
    functionName: nbrp_del_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - free
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void nbrp_del_api(struct ldpd_conf *conf, struct nbr_params *nbrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: l2vpn_find
      Src: /src/frr/ldpd/ldp_vty_conf.c:1557,1
    - Dst: l2vpn_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1560,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1562,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - conf
    - name
    argTypes:
    - struct ldpd_conf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1552
    functionDepth: 2
    functionLinenumber: 1552
    functionLinenumberEnd: 1565
    functionName: l2vpn_new_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - QOBJ_REG
    - l2vpn_find
    - l2vpn_new
    linkageType: ''
    returnType: struct l2vpn
    signature: 'struct l2vpn *

      l2vpn_new_api(struct ldpd_conf *conf, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldp_vty_conf.c:1573,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1574,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1576,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1577,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1578,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldp_vty_conf.c:1580,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1581,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1583,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1584,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1585,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldp_vty_conf.c:1587,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1588,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1590,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1591,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1592,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1594,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1595,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - conf
    - l2vpn
    argTypes:
    - struct ldpd_conf*
    - struct l2vpn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1567
    functionDepth: 1
    functionLinenumber: 1567
    functionLinenumberEnd: 1597
    functionName: l2vpn_del_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - RB_REMOVE
    - QOBJ_UNREG
    - free
    - RB_EMPTY
    - RB_ROOT
    linkageType: ''
    returnType: void
    signature: void l2vpn_del_api(struct ldpd_conf *conf, struct l2vpn *l2vpn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_iface_is_configured
      Src: /src/frr/ldpd/ldp_vty_conf.c:1605,1
    - Dst: l2vpn_if_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1608,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1609,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1610,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - conf
    - l2vpn
    - ifname
    argTypes:
    - struct ldpd_conf*
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1599
    functionDepth: 3
    functionLinenumber: 1599
    functionLinenumberEnd: 1612
    functionName: l2vpn_if_new_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - RB_INSERT
    - l2vpn_if_new
    - QOBJ_REG
    - ldp_iface_is_configured
    linkageType: ''
    returnType: struct l2vpn_if
    signature: "struct l2vpn_if *\nl2vpn_if_new_api(struct ldpd_conf *conf, struct
      l2vpn *l2vpn,\n    const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1617,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1618,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - l2vpn
    - lif
    argTypes:
    - struct l2vpn*
    - struct l2vpn_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1614
    functionDepth: 1
    functionLinenumber: 1614
    functionLinenumberEnd: 1620
    functionName: l2vpn_if_del_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - free
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void l2vpn_if_del_api(struct l2vpn *l2vpn, struct l2vpn_if *lif)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_iface_is_configured
      Src: /src/frr/ldpd/ldp_vty_conf.c:1628,1
    - Dst: l2vpn_pw_new
      Src: /src/frr/ldpd/ldp_vty_conf.c:1631,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldp_vty_conf.c:1633,1
    - Dst: QOBJ_REG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - conf
    - l2vpn
    - ifname
    argTypes:
    - struct ldpd_conf*
    - struct l2vpn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1622
    functionDepth: 3
    functionLinenumber: 1622
    functionLinenumberEnd: 1636
    functionName: l2vpn_pw_new_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - l2vpn_pw_new
    - QOBJ_REG
    - RB_INSERT
    - ldp_iface_is_configured
    linkageType: ''
    returnType: struct l2vpn_pw
    signature: "struct l2vpn_pw *\nl2vpn_pw_new_api(struct ldpd_conf *conf, struct
      l2vpn *l2vpn,\n    const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QOBJ_UNREG
      Src: /src/frr/ldpd/ldp_vty_conf.c:1641,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/ldp_vty_conf.c:1642,1
    - Dst: free
      Src: /src/frr/ldpd/ldp_vty_conf.c:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - l2vpn
    - pw
    argTypes:
    - struct l2vpn*
    - struct l2vpn_pw*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1638
    functionDepth: 1
    functionLinenumber: 1638
    functionLinenumberEnd: 1644
    functionName: l2vpn_pw_del_api
    functionSourceFile: /src/frr/ldpd/ldp_vty_conf.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - free
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void l2vpn_pw_del_api(struct l2vpn *l2vpn, struct l2vpn_pw *pw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/frr/ldpd/logmsg.c:27,1
    - Dst: sockaddr_len
      Src: /src/frr/ldpd/logmsg.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vp
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 18
    functionDepth: 2
    functionLinenumber: 18
    functionLinenumberEnd: 32
    functionName: log_sockaddr
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 5
    functionsReached:
    - sockaddr_len
    - getnameinfo
    linkageType: ''
    returnType: char
    signature: 'char *

      log_sockaddr(void *vp)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/logmsg.c:39,1
    - Dst: recoverscope
      Src: /src/frr/ldpd/logmsg.c:46,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/logmsg.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 49
    functionName: log_in6addr
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 2
    functionsReached:
    - recoverscope
    - log_sockaddr
    - memset
    linkageType: ''
    returnType: char
    signature: 'char *

      log_in6addr(const struct in6_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/logmsg.c:56,1
    - Dst: addscope
      Src: /src/frr/ldpd/logmsg.c:63,1
    - Dst: log_sockaddr
      Src: /src/frr/ldpd/logmsg.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - addr
    - ifindex
    argTypes:
    - struct in6_addr*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 66
    functionName: log_in6addr_scope
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 0
    functionsReached:
    - addscope
    - log_sockaddr
    - memset
    linkageType: ''
    returnType: char
    signature: 'char *

      log_in6addr_scope(const struct in6_addr *addr, ifindex_t ifindex)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ldpd/logmsg.c:77,1
    - Dst: log_in6addr
      Src: /src/frr/ldpd/logmsg.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - af
    - addr
    argTypes:
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 88
    functionName: log_addr
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 19
    functionsReached:
    - inet_ntop
    - log_in6addr
    linkageType: ''
    returnType: char
    signature: 'char *

      log_addr(int af, const union ldpd_addr *addr)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:106,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:109,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:113,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:116,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - label
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 121
    functionName: log_label
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      log_label(uint32_t label)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/ldpd/logmsg.c:147,1
    - Dst: snprintfrr
      Src: /src/frr/ldpd/logmsg.c:151,1
    - Dst: snprintfrr
      Src: /src/frr/ldpd/logmsg.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 7
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: log_time
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 0
    functionsReached:
    - snprintfrr
    linkageType: ''
    returnType: char
    signature: 'char *

      log_time(time_t t)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:169,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:173,1
    - Dst: log_addr
      Src: /src/frr/ldpd/logmsg.c:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - src
    argTypes:
    - struct hello_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 162
    functionDepth: 5
    functionLinenumber: 162
    functionLinenumberEnd: 179
    functionName: log_hello_src
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 1
    functionsReached:
    - snprintf
    - log_addr
    linkageType: ''
    returnType: char
    signature: 'char *

      log_hello_src(const struct hello_source *src)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:188,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:192,1
    - Dst: log_addr
      Src: /src/frr/ldpd/logmsg.c:193,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:198,1
    - Dst: pw_type_name
      Src: /src/frr/ldpd/logmsg.c:200,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:204,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:208,1
    - Dst: strlen
      Src: /src/frr/ldpd/logmsg.c:208,1
    - Dst: strlen
      Src: /src/frr/ldpd/logmsg.c:209,1
    - Dst: af_name
      Src: /src/frr/ldpd/logmsg.c:210,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:214,1
    - Dst: strlen
      Src: /src/frr/ldpd/logmsg.c:214,1
    - Dst: strlen
      Src: /src/frr/ldpd/logmsg.c:215,1
    - Dst: pw_type_name
      Src: /src/frr/ldpd/logmsg.c:216,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:220,1
    - Dst: strlen
      Src: /src/frr/ldpd/logmsg.c:220,1
    - Dst: strlen
      Src: /src/frr/ldpd/logmsg.c:221,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 1
    argNames:
    - map
    argTypes:
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 181
    functionDepth: 5
    functionLinenumber: 181
    functionLinenumberEnd: 231
    functionName: log_map
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 2
    functionsReached:
    - strlen
    - af_name
    - pw_type_name
    - snprintf
    - log_addr
    linkageType: ''
    returnType: char
    signature: 'char *

      log_map(const struct map *map)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:242,1
    - Dst: log_addr
      Src: /src/frr/ldpd/logmsg.c:243,1
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:248,1
    - Dst: log_addr
      Src: /src/frr/ldpd/logmsg.c:249,1
    - Dst: snprintfrr
      Src: /src/frr/ldpd/logmsg.c:253,1
    - Dst: pw_type_name
      Src: /src/frr/ldpd/logmsg.c:255,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - fec
    argTypes:
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 233
    functionDepth: 7
    functionLinenumber: 233
    functionLinenumberEnd: 264
    functionName: log_fec
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 8
    functionsReached:
    - pw_type_name
    - snprintfrr
    - snprintf
    - log_addr
    linkageType: ''
    returnType: char
    signature: 'char *

      log_fec(const struct fec *fec)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 282
    functionName: af_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      af_name(int af)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 297
    functionName: socket_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      socket_name(int type)'
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 316
    functionName: nbr_state_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      nbr_state_name(int state)'
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 329
    functionName: if_state_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      if_state_name(int state)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum iface_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 342
    functionName: if_type_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      if_type_name(enum iface_type type)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - msg
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 377
    functionName: msg_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      msg_name(uint16_t msg)'
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 82
    argCount: 1
    argNames:
    - status
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 465
    functionName: status_code_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 1
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      status_code_name(uint32_t status)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - pw_type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 483
    functionName: pw_type_name
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 2
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pw_type_name(uint16_t pw_type)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/logmsg.c:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - status
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 505
    functionName: pw_error_code
    functionSourceFile: /src/frr/ldpd/logmsg.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      pw_error_code(uint8_t status)'
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ldp_rlfa_client*
    - struct ldp_rlfa_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 44
    functionName: ldp_rlfa_client_compare
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ldp_rlfa_client_compare(const struct ldp_rlfa_client *a,\n\t\t\t\t
      \  const struct ldp_rlfa_client *b)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ldpd/rlfa.c:51,1
    - Dst: ntohl
      Src: /src/frr/ldpd/rlfa.c:51,1
    - Dst: ntohl
      Src: /src/frr/ldpd/rlfa.c:53,1
    - Dst: ntohl
      Src: /src/frr/ldpd/rlfa.c:53,1
    - Dst: prefix_cmp
      Src: /src/frr/ldpd/rlfa.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ldp_rlfa_node*
    - struct ldp_rlfa_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: ldp_rlfa_node_compare
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 0
    functionsReached:
    - ntohl
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: "int ldp_rlfa_node_compare(const struct ldp_rlfa_node *a,\n\t\t\t\t
      const struct ldp_rlfa_node *b)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/rlfa.c:65,1
    - Dst: fatal
      Src: /src/frr/ldpd/rlfa.c:66,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/rlfa.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rnode
    - igp
    argTypes:
    - struct ldp_rlfa_node*
    - struct zapi_rlfa_igp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 73
    functionName: rlfa_client_new
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 1
    functionsReached:
    - RB_INSERT
    - fatal
    - calloc
    linkageType: ''
    returnType: struct ldp_rlfa_client
    signature: "struct ldp_rlfa_client *rlfa_client_new(struct ldp_rlfa_node *rnode,\n\t\t\t\t\tstruct
      zapi_rlfa_igp *igp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/rlfa.c:79,1
    - Dst: free
      Src: /src/frr/ldpd/rlfa.c:80,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/rlfa.c:83,1
    - Dst: rlfa_node_del
      Src: /src/frr/ldpd/rlfa.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rclient
    argTypes:
    - struct ldp_rlfa_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: rlfa_client_del
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 1
    functionsReached:
    - RB_EMPTY
    - free
    - RB_REMOVE
    - rlfa_node_del
    linkageType: ''
    returnType: void
    signature: void rlfa_client_del(struct ldp_rlfa_client *rclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/rlfa.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - rnode
    - igp
    argTypes:
    - struct ldp_rlfa_node*
    - struct zapi_rlfa_igp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: rlfa_client_find
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct ldp_rlfa_client
    signature: "struct ldp_rlfa_client *rlfa_client_find(struct ldp_rlfa_node *rnode,\n\t\t\t\t\t
      struct zapi_rlfa_igp *igp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/rlfa.c:101,1
    - Dst: fatal
      Src: /src/frr/ldpd/rlfa.c:102,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/rlfa.c:107,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/rlfa.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - destination
    - pq_address
    argTypes:
    - struct prefix*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 111
    functionName: rlfa_node_new
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 1
    functionsReached:
    - RB_INSERT
    - fatal
    - RB_INIT
    - calloc
    linkageType: ''
    returnType: struct ldp_rlfa_node
    signature: "struct ldp_rlfa_node *rlfa_node_new(const struct prefix *destination,\n\t\t\t\t
      \   struct in_addr pq_address)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/rlfa.c:116,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/rlfa.c:119,1
    - Dst: rlfa_client_del
      Src: /src/frr/ldpd/rlfa.c:120,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/rlfa.c:123,1
    - Dst: free
      Src: /src/frr/ldpd/rlfa.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rnode
    argTypes:
    - struct ldp_rlfa_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 125
    functionName: rlfa_node_del
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 1
    functionsReached:
    - RB_REMOVE
    - free
    - RB_EMPTY
    - RB_ROOT
    - rlfa_client_del
    linkageType: ''
    returnType: void
    signature: void rlfa_node_del(struct ldp_rlfa_node *rnode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/rlfa.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - destination
    - pq_address
    argTypes:
    - struct prefix*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 135
    functionName: rlfa_node_find
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 1
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct ldp_rlfa_node
    signature: "struct ldp_rlfa_node *rlfa_node_find(const struct prefix *destination,\n\t\t\t\t
      \    struct in_addr pq_address)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fec_find
      Src: /src/frr/ldpd/rlfa.c:155,1
    - Dst: LIST_FOREACH
      Src: /src/frr/ldpd/rlfa.c:158,1
    - Dst: lde_imsg_compose_parent
      Src: /src/frr/ldpd/rlfa.c:178,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - rclient
    argTypes:
    - struct ldp_rlfa_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 180
    functionName: lde_rlfa_client_send
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 0
    functionsReached:
    - lde_imsg_compose_parent
    - fec_find
    - LIST_FOREACH
    linkageType: ''
    returnType: void
    signature: void lde_rlfa_client_send(struct ldp_rlfa_client *rclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/rlfa.c:194,1
    - Dst: IPV4_ADDR_SAME
      Src: /src/frr/ldpd/rlfa.c:197,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/rlfa.c:200,1
    - Dst: lde_rlfa_client_send
      Src: /src/frr/ldpd/rlfa.c:201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - fec
    argTypes:
    - struct fec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 182
    functionDepth: 5
    functionLinenumber: 182
    functionLinenumberEnd: 203
    functionName: lde_rlfa_label_update
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 0
    functionsReached:
    - IPV4_ADDR_SAME
    - lde_rlfa_client_send
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void lde_rlfa_label_update(const struct fec *fec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lde_nbr_find_by_addr
      Src: /src/frr/ldpd/rlfa.c:213,1
    - Dst: lde_prefix2fec
      Src: /src/frr/ldpd/rlfa.c:217,1
    - Dst: fec_find
      Src: /src/frr/ldpd/rlfa.c:218,1
    - Dst: lde_rlfa_client_send
      Src: /src/frr/ldpd/rlfa.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - rclient
    argTypes:
    - struct ldp_rlfa_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 224
    functionName: lde_rlfa_check
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 1
    functionsReached:
    - lde_nbr_find_by_addr
    - fec_find
    - lde_rlfa_client_send
    - lde_prefix2fec
    linkageType: ''
    returnType: void
    signature: void lde_rlfa_check(struct ldp_rlfa_client *rclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lde_fec2prefix
      Src: /src/frr/ldpd/rlfa.c:236,1
    - Dst: rlfa_node_find
      Src: /src/frr/ldpd/rlfa.c:237,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/rlfa.c:242,1
    - Dst: lde_rlfa_client_send
      Src: /src/frr/ldpd/rlfa.c:243,1
    - Dst: lde_rlfa_label_update
      Src: /src/frr/ldpd/rlfa.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - fec
    - ln
    - label
    argTypes:
    - struct fec*
    - struct lde_nbr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 230
    functionDepth: 6
    functionLinenumber: 230
    functionLinenumberEnd: 246
    functionName: lde_rlfa_update_clients
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 4
    functionsReached:
    - rlfa_node_find
    - lde_rlfa_label_update
    - lde_rlfa_client_send
    - RB_FOREACH
    - lde_fec2prefix
    linkageType: ''
    returnType: void
    signature: "void lde_rlfa_update_clients(struct fec *fec, struct lde_nbr *ln,\n\t\t\t
      \    uint32_t label)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tnbr_find
      Src: /src/frr/ldpd/rlfa.c:254,1
    - Dst: tnbr_new
      Src: /src/frr/ldpd/rlfa.c:256,1
    - Dst: tnbr_update
      Src: /src/frr/ldpd/rlfa.c:257,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/rlfa.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - rclient
    argTypes:
    - struct ldp_rlfa_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 262
    functionName: ldpe_rlfa_init
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 0
    functionsReached:
    - tnbr_find
    - tnbr_update
    - tnbr_new
    - RB_INSERT
    linkageType: ''
    returnType: void
    signature: void ldpe_rlfa_init(struct ldp_rlfa_client *rclient)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tnbr_find
      Src: /src/frr/ldpd/rlfa.c:270,1
    - Dst: tnbr_check
      Src: /src/frr/ldpd/rlfa.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - rclient
    argTypes:
    - struct ldp_rlfa_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 275
    functionName: ldpe_rlfa_exit
    functionSourceFile: /src/frr/ldpd/rlfa.c
    functionUses: 0
    functionsReached:
    - tnbr_find
    - tnbr_check
    linkageType: ''
    returnType: void
    signature: void ldpe_rlfa_exit(struct ldp_rlfa_client *rclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldpe_shutdown
      Src: /src/frr/ldpd/ldpe.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: sigint
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 0
    functionsReached:
    - ldpe_shutdown
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setproctitle
      Src: /src/frr/ldpd/ldpe.c:97,1
    - Dst: frr_init
      Src: /src/frr/ldpd/ldpe.c:102,1
    - Dst: signal_init
      Src: /src/frr/ldpd/ldpe.c:107,1
    - Dst: array_size
      Src: /src/frr/ldpd/ldpe.c:107,1
    - Dst: calloc
      Src: /src/frr/ldpd/ldpe.c:110,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:111,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldpe.c:112,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpe.c:114,1
    - Dst: memset
      Src: /src/frr/ldpd/ldpe.c:118,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldpe.c:120,1
    - Dst: config_new_empty
      Src: /src/frr/ldpd/ldpe.c:123,1
    - Dst: event_fetch
      Src: /src/frr/ldpd/ldpe.c:126,1
    - Dst: event_call
      Src: /src/frr/ldpd/ldpe.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 93
    functionDepth: 7
    functionLinenumber: 93
    functionLinenumberEnd: 131
    functionName: ldpe
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 24
    functionsReached:
    - fatal
    - memset
    - frr_init
    - imsg_init
    - setproctitle
    - array_size
    - config_new_empty
    - signal_init
    - event_add_read
    - event_fetch
    - event_call
    - calloc
    linkageType: ''
    returnType: void
    signature: void ldpe(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pfkey_init
      Src: /src/frr/ldpd/ldpe.c:138,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpe.c:140,1
    - Dst: zprivs_preinit
      Src: /src/frr/ldpd/ldpe.c:148,1
    - Dst: zprivs_init
      Src: /src/frr/ldpd/ldpe.c:149,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpe.c:152,1
    - Dst: control_init
      Src: /src/frr/ldpd/ldpe.c:153,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:154,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/ldpe.c:155,1
    - Dst: control_listen
      Src: /src/frr/ldpd/ldpe.c:156,1
    - Dst: LIST_INIT
      Src: /src/frr/ldpd/ldpe.c:158,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:159,1
    - Dst: TAILQ_INIT
      Src: /src/frr/ldpd/ldpe.c:160,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldpe.c:161,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:162,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldpe.c:163,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:164,1
    - Dst: calloc
      Src: /src/frr/ldpd/ldpe.c:174,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:175,1
    - Dst: accept_init
      Src: /src/frr/ldpd/ldpe.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 1
    argNames:
    - init
    argTypes:
    - struct ldpd_init*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 133
    functionDepth: 10
    functionLinenumber: 133
    functionLinenumberEnd: 178
    functionName: ldpe_init
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 0
    functionsReached:
    - fatal
    - fatalx
    - LIST_INIT
    - pfkey_init
    - control_listen
    - zprivs_init
    - strlcpy
    - RB_INIT
    - zprivs_preinit
    - inet_pton
    - calloc
    - event_add_read
    - control_init
    - accept_init
    - TAILQ_INIT
    linkageType: ''
    returnType: void
    signature: void ldpe_init(struct ldpd_init *init)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/ldpe.c:188,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:189,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/ldpe.c:192,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:193,1
    - Dst: msgbuf_clear
      Src: /src/frr/ldpd/ldpe.c:195,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:196,1
    - Dst: control_cleanup
      Src: /src/frr/ldpd/ldpe.c:199,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpe.c:203,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:204,1
    - Dst: ldpe_close_sockets
      Src: /src/frr/ldpd/ldpe.c:207,1
    - Dst: ldpe_close_sockets
      Src: /src/frr/ldpd/ldpe.c:208,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/ldpe.c:211,1
    - Dst: LIST_REMOVE
      Src: /src/frr/ldpd/ldpe.c:212,1
    - Dst: assert
      Src: /src/frr/ldpd/ldpe.c:213,1
    - Dst: LIST_FIRST
      Src: /src/frr/ldpd/ldpe.c:213,1
    - Dst: free
      Src: /src/frr/ldpd/ldpe.c:214,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpe.c:216,1
    - Dst: RB_ROOT
      Src: /src/frr/ldpd/ldpe.c:217,1
    - Dst: adj_del
      Src: /src/frr/ldpd/ldpe.c:219,1
    - Dst: config_clear
      Src: /src/frr/ldpd/ldpe.c:222,1
    - Dst: free
      Src: /src/frr/ldpd/ldpe.c:225,1
    - Dst: free
      Src: /src/frr/ldpd/ldpe.c:226,1
    - Dst: free
      Src: /src/frr/ldpd/ldpe.c:227,1
    - Dst: log_info
      Src: /src/frr/ldpd/ldpe.c:229,1
    - Dst: zlog_fini
      Src: /src/frr/ldpd/ldpe.c:231,1
    - Dst: exit
      Src: /src/frr/ldpd/ldpe.c:233,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (if_addr != LIST_FIRST(&global.addr_list))
      pos:
        line_end: 212
        line_start: 212
        source_file: /src/frr/ldpd/ldpe.c
    constantsTouched: []
    func_position:
      end: 234
      start: 180
    functionDepth: 9
    functionLinenumber: 180
    functionLinenumberEnd: 234
    functionName: ldpe_shutdown
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - msgbuf_clear
    - exit
    - config_clear
    - log_info
    - control_cleanup
    - free
    - close
    - adj_del
    - zlog_fini
    - EVENT_OFF
    - ldpe_close_sockets
    - RB_EMPTY
    - RB_ROOT
    - LIST_REMOVE
    - assert
    - LIST_FIRST
    linkageType: ''
    returnType: void
    signature: void ldpe_shutdown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - type
    - pid
    - data
    - datalen
    argTypes:
    - int
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 237
    functionDepth: 3
    functionLinenumber: 237
    functionLinenumberEnd: 243
    functionName: ldpe_imsg_compose_parent
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - imsg_compose_event
    linkageType: ''
    returnType: int
    signature: int ldpe_imsg_compose_parent(int type, pid_t pid, void *data, uint16_t
      datalen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:250,1
    - Dst: imsg_flush
      Src: /src/frr/ldpd/ldpe.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - type
    - pid
    - data
    - datalen
    argTypes:
    - int
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 252
    functionName: ldpe_imsg_compose_parent_sync
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - imsg_flush
    - imsg_compose_event
    linkageType: ''
    returnType: void
    signature: void ldpe_imsg_compose_parent_sync(int type, pid_t pid, void *data,
      uint16_t datalen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - type
    - peerid
    - pid
    - data
    - datalen
    argTypes:
    - int
    - uint32_t
    - pid_t
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 254
    functionDepth: 3
    functionLinenumber: 254
    functionLinenumberEnd: 261
    functionName: ldpe_imsg_compose_lde
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 7
    functionsReached:
    - imsg_compose_event
    linkageType: ''
    returnType: int
    signature: "int ldpe_imsg_compose_lde(int type, uint32_t peerid, pid_t pid, void
      *data,\n    uint16_t datalen)"
  - BBCount: 73
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/ldpe.c:275,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/ldpe.c:298,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:299,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/ldpe.c:304,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:305,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:312,1
    - Dst: if_lookup_name
      Src: /src/frr/ldpd/ldpe.c:315,1
    - Dst: if_update_info
      Src: /src/frr/ldpd/ldpe.c:317,1
    - Dst: ldp_if_update
      Src: /src/frr/ldpd/ldpe.c:318,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:322,1
    - Dst: l2vpn_if_find
      Src: /src/frr/ldpd/ldpe.c:323,1
    - Dst: l2vpn_if_update_info
      Src: /src/frr/ldpd/ldpe.c:325,1
    - Dst: l2vpn_if_update
      Src: /src/frr/ldpd/ldpe.c:326,1
    - Dst: l2vpn_pw_find
      Src: /src/frr/ldpd/ldpe.c:329,1
    - Dst: l2vpn_pw_update_info
      Src: /src/frr/ldpd/ldpe.c:331,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:338,1
    - Dst: if_addr_add
      Src: /src/frr/ldpd/ldpe.c:340,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:344,1
    - Dst: if_addr_del
      Src: /src/frr/ldpd/ldpe.c:346,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpe.c:350,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpe.c:354,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:358,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:359,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldpe.c:360,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpe.c:362,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:369,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:371,1
    - Dst: ldpe_init
      Src: /src/frr/ldpd/ldpe.c:372,1
    - Dst: ldp_agentx_enabled
      Src: /src/frr/ldpd/ldpe.c:375,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:380,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpe.c:383,1
    - Dst: pfkey_remove
      Src: /src/frr/ldpd/ldpe.c:385,1
    - Dst: ldpe_close_sockets
      Src: /src/frr/ldpd/ldpe.c:389,1
    - Dst: if_update_all
      Src: /src/frr/ldpd/ldpe.c:390,1
    - Dst: tnbr_update_all
      Src: /src/frr/ldpd/ldpe.c:391,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldpe.c:396,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldpe.c:396,1
    - Dst: ldpe_imsg_compose_parent
      Src: /src/frr/ldpd/ldpe.c:397,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:401,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:421,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:423,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:425,1
    - Dst: ldpe_setup_sockets
      Src: /src/frr/ldpd/ldpe.c:429,1
    - Dst: if_update_all
      Src: /src/frr/ldpd/ldpe.c:430,1
    - Dst: tnbr_update_all
      Src: /src/frr/ldpd/ldpe.c:431,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:432,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldpe.c:435,1
    - Dst: nbr_params_find
      Src: /src/frr/ldpd/ldpe.c:437,1
    - Dst: pfkey_establish
      Src: /src/frr/ldpd/ldpe.c:440,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:441,1
    - Dst: nbr_session_active_role
      Src: /src/frr/ldpd/ldpe.c:444,1
    - Dst: nbr_establish_connection
      Src: /src/frr/ldpd/ldpe.c:445,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:449,1
    - Dst: ldpe_reset_nbrs
      Src: /src/frr/ldpd/ldpe.c:451,1
    - Dst: if_update_all
      Src: /src/frr/ldpd/ldpe.c:453,1
    - Dst: tnbr_update_all
      Src: /src/frr/ldpd/ldpe.c:454,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:457,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:458,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:459,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:461,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:462,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:463,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:464,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:467,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:468,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:469,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpe.c:471,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:474,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:475,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:476,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpe.c:478,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:481,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:482,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:483,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpe.c:485,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:488,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:489,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:490,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:492,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:493,1
    - Dst: RB_INIT
      Src: /src/frr/ldpd/ldpe.c:494,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpe.c:496,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:499,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:500,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:501,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpe.c:503,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:506,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:507,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:508,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpe.c:510,1
    - Dst: malloc
      Src: /src/frr/ldpd/ldpe.c:513,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:514,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:515,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/ldpe.c:517,1
    - Dst: merge_config
      Src: /src/frr/ldpd/ldpe.c:520,1
    - Dst: ldp_clear_config
      Src: /src/frr/ldpd/ldpe.c:521,1
    - Dst: control_imsg_relay
      Src: /src/frr/ldpd/ldpe.c:526,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpe.c:531,1
    - Dst: memcpy
      Src: /src/frr/ldpd/ldpe.c:534,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpe.c:538,1
    - Dst: ldpe_check_filter_af
      Src: /src/frr/ldpd/ldpe.c:542,1
    - Dst: ldpe_check_filter_af
      Src: /src/frr/ldpd/ldpe.c:543,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpe.c:548,1
    - Dst: ldp_sync_fsm_state_req
      Src: /src/frr/ldpd/ldpe.c:552,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpe.c:557,1
    - Dst: rlfa_node_find
      Src: /src/frr/ldpd/ldpe.c:562,1
    - Dst: rlfa_node_new
      Src: /src/frr/ldpd/ldpe.c:565,1
    - Dst: rlfa_client_find
      Src: /src/frr/ldpd/ldpe.c:567,1
    - Dst: rlfa_client_new
      Src: /src/frr/ldpd/ldpe.c:571,1
    - Dst: ldpe_rlfa_init
      Src: /src/frr/ldpd/ldpe.c:572,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldpe.c:577,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpe.c:582,1
    - Dst: rlfa_client_find
      Src: /src/frr/ldpd/ldpe.c:584,1
    - Dst: ldpe_rlfa_exit
      Src: /src/frr/ldpd/ldpe.c:588,1
    - Dst: rlfa_client_del
      Src: /src/frr/ldpd/ldpe.c:589,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldpe.c:593,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/ldpe.c:596,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/ldpe.c:599,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpe.c:602,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpe.c:603,1
    - Dst: ldpe_shutdown
      Src: /src/frr/ldpd/ldpe.c:604,1
    CyclomaticComplexity: 94
    EdgeCount: 94
    ICount: 270
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 264
    functionDepth: 11
    functionLinenumber: 264
    functionLinenumberEnd: 606
    functionName: ldpe_dispatch_main
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 0
    functionsReached:
    - l2vpn_pw_find
    - l2vpn_if_update
    - if_update_info
    - malloc
    - ldpe_rlfa_init
    - ldp_af_conf_get
    - ldpe_reset_nbrs
    - merge_config
    - imsg_read
    - imsg_get
    - rlfa_client_del
    - ldpe_check_filter_af
    - l2vpn_if_update_info
    - nbr_establish_connection
    - ldp_sync_fsm_state_req
    - if_addr_del
    - fatalx
    - ldpe_init
    - ldp_clear_config
    - RB_INIT
    - if_addr_add
    - RB_INSERT
    - rlfa_node_find
    - nbr_params_find
    - EVENT_ARG
    - ldp_if_update
    - ldpe_imsg_compose_parent
    - rlfa_node_new
    - if_lookup_name
    - ldpe_shutdown
    - l2vpn_if_find
    - pfkey_remove
    - pfkey_establish
    - log_debug
    - ldp_agentx_enabled
    - imsg_event_add
    - rlfa_client_new
    - if_update_all
    - EVENT_OFF
    - ldpe_close_sockets
    - event_add_read
    - l2vpn_pw_update_info
    - tnbr_update_all
    - session_shutdown
    - fatal
    - memcpy
    - imsg_free
    - CHECK_FLAG
    - ldpe_rlfa_exit
    - imsg_init
    - close
    - rlfa_client_find
    - nbr_session_active_role
    - control_imsg_relay
    - RB_FOREACH_SAFE
    - ldpe_setup_sockets
    - log_warnx
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void ldpe_dispatch_main(struct event *thread)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/ldpe.c:611,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/ldpe.c:621,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:622,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/ldpe.c:627,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:628,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:638,1
    - Dst: nbr_find_peerid
      Src: /src/frr/ldpd/ldpe.c:641,1
    - Dst: mapping_list_add
      Src: /src/frr/ldpd/ldpe.c:649,1
    - Dst: mapping_list_add
      Src: /src/frr/ldpd/ldpe.c:652,1
    - Dst: mapping_list_add
      Src: /src/frr/ldpd/ldpe.c:655,1
    - Dst: mapping_list_add
      Src: /src/frr/ldpd/ldpe.c:658,1
    - Dst: nbr_find_peerid
      Src: /src/frr/ldpd/ldpe.c:666,1
    - Dst: send_labelmessage
      Src: /src/frr/ldpd/ldpe.c:674,1
    - Dst: send_labelmessage
      Src: /src/frr/ldpd/ldpe.c:678,1
    - Dst: send_labelmessage
      Src: /src/frr/ldpd/ldpe.c:682,1
    - Dst: send_labelmessage
      Src: /src/frr/ldpd/ldpe.c:686,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldpe.c:693,1
    - Dst: nbr_find_peerid
      Src: /src/frr/ldpd/ldpe.c:696,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldpe.c:698,1
    - Dst: send_notification_full
      Src: /src/frr/ldpd/ldpe.c:704,1
    - Dst: control_imsg_relay
      Src: /src/frr/ldpd/ldpe.c:713,1
    - Dst: nbr_find_peerid
      Src: /src/frr/ldpd/ldpe.c:716,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldpe.c:718,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpe.c:723,1
    - Dst: log_debug
      Src: /src/frr/ldpd/ldpe.c:726,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/ldpe.c:729,1
    - Dst: imsg_event_add
      Src: /src/frr/ldpd/ldpe.c:732,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpe.c:735,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpe.c:736,1
    - Dst: ldpe_shutdown
      Src: /src/frr/ldpd/ldpe.c:737,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 107
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 609
    functionDepth: 10
    functionLinenumber: 609
    functionLinenumberEnd: 739
    functionName: ldpe_dispatch_lde
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 0
    functionsReached:
    - imsg_free
    - fatalx
    - nbr_find_peerid
    - mapping_list_add
    - send_labelmessage
    - imsg_event_add
    - control_imsg_relay
    - EVENT_OFF
    - imsg_read
    - EVENT_ARG
    - imsg_get
    - send_notification_full
    - session_shutdown
    - ldpe_shutdown
    - fatal
    - log_debug
    linkageType: ''
    returnType: void
    signature: void ldpe_dispatch_lde(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/ldpd/ldpe.c:745,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpe.c:747,1
    - Dst: pfkey_read
      Src: /src/frr/ldpd/ldpe.c:750,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 743
    functionDepth: 2
    functionLinenumber: 743
    functionLinenumberEnd: 752
    functionName: ldpe_dispatch_pfkey
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - fatal
    - EVENT_FD
    - pfkey_read
    linkageType: ''
    returnType: void
    signature: void ldpe_dispatch_pfkey(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/ldpe.c:761,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpe.c:765,1
    - Dst: event_add_read
      Src: /src/frr/ldpd/ldpe.c:770,1
    - Dst: accept_add
      Src: /src/frr/ldpd/ldpe.c:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - af
    - disc_socket
    - edisc_socket
    - session_socket
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 755
    functionDepth: 2
    functionLinenumber: 755
    functionLinenumberEnd: 776
    functionName: ldpe_setup_sockets
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - event_add_read
    - accept_add
    - ldp_af_global_get
    linkageType: ''
    returnType: void
    signature: "void ldpe_setup_sockets(int af, int disc_socket, int edisc_socket,\n
      \   int session_socket)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/ldpe.c:783,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpe.c:786,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:788,1
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/ldpe.c:793,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:795,1
    - Dst: accept_del
      Src: /src/frr/ldpd/ldpe.c:801,1
    - Dst: close
      Src: /src/frr/ldpd/ldpe.c:802,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 778
    functionDepth: 2
    functionLinenumber: 778
    functionLinenumberEnd: 805
    functionName: ldpe_close_sockets
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 2
    functionsReached:
    - EVENT_OFF
    - accept_del
    - close
    - ldp_af_global_get
    linkageType: ''
    returnType: void
    signature: void ldpe_close_sockets(int af)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldp_acl_request
      Src: /src/frr/ldpd/ldpe.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - acl_name
    - af
    - addr
    - prefixlen
    argTypes:
    - char*
    - int
    - union ldpd_addr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 807
    functionDepth: 5
    functionLinenumber: 807
    functionLinenumberEnd: 811
    functionName: ldpe_acl_check
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - ldp_acl_request
    linkageType: ''
    returnType: int
    signature: int ldpe_acl_check(char *acl_name, int af, union ldpd_addr *addr, uint8_t
      prefixlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:818,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpe.c:820,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 813
    functionDepth: 2
    functionLinenumber: 813
    functionLinenumberEnd: 822
    functionName: ldpe_reset_nbrs
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 3
    functionsReached:
    - session_shutdown
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void ldpe_reset_nbrs(int af)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:829,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/ldpe.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 824
    functionDepth: 2
    functionLinenumber: 824
    functionLinenumberEnd: 833
    functionName: ldpe_reset_ds_nbrs
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - session_shutdown
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void ldpe_reset_ds_nbrs(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/ldpd/ldpe.c:840,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/ldpe.c:844,1
    - Dst: tnbr_check
      Src: /src/frr/ldpd/ldpe.c:845,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 835
    functionDepth: 1
    functionLinenumber: 835
    functionLinenumberEnd: 847
    functionName: ldpe_remove_dynamic_tnbrs
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH_SAFE
    - UNSET_FLAG
    - tnbr_check
    linkageType: ''
    returnType: void
    signature: void ldpe_remove_dynamic_tnbrs(int af)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:854,1
    - Dst: nbr_pending_idtimer
      Src: /src/frr/ldpd/ldpe.c:855,1
    - Dst: nbr_stop_idtimer
      Src: /src/frr/ldpd/ldpe.c:856,1
    - Dst: nbr_establish_connection
      Src: /src/frr/ldpd/ldpe.c:857,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 849
    functionDepth: 7
    functionLinenumber: 849
    functionLinenumberEnd: 860
    functionName: ldpe_stop_init_backoff
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - nbr_establish_connection
    - nbr_stop_idtimer
    - RB_FOREACH
    - nbr_pending_idtimer
    linkageType: ''
    returnType: void
    signature: void ldpe_stop_init_backoff(int af)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:869,1
    - Dst: iface_af_get
      Src: /src/frr/ldpd/ldpe.c:871,1
    - Dst: if_to_ctl
      Src: /src/frr/ldpd/ldpe.c:875,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:876,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - c
    - af
    - idx
    argTypes:
    - struct ctl_conn*
    - int
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 862
    functionDepth: 4
    functionLinenumber: 862
    functionLinenumberEnd: 880
    functionName: ldpe_iface_af_ctl
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 0
    functionsReached:
    - iface_af_get
    - imsg_compose_event
    - RB_FOREACH
    - if_to_ctl
    linkageType: ''
    returnType: void
    signature: void ldpe_iface_af_ctl(struct ctl_conn *c, int af, ifindex_t idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldpe_iface_af_ctl
      Src: /src/frr/ldpd/ldpe.c:885,1
    - Dst: ldpe_iface_af_ctl
      Src: /src/frr/ldpd/ldpe.c:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - c
    - idx
    argTypes:
    - struct ctl_conn*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 882
    functionDepth: 5
    functionLinenumber: 882
    functionLinenumberEnd: 887
    functionName: ldpe_iface_ctl
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - ldpe_iface_af_ctl
    linkageType: ''
    returnType: void
    signature: void ldpe_iface_ctl(struct ctl_conn *c, ifindex_t idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:895,1
    - Dst: adj_to_ctl
      Src: /src/frr/ldpd/ldpe.c:896,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:897,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct ctl_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 889
    functionDepth: 3
    functionLinenumber: 889
    functionLinenumberEnd: 902
    functionName: ldpe_adj_ctl
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - imsg_compose_event
    - RB_FOREACH
    - adj_to_ctl
    linkageType: ''
    returnType: void
    signature: void ldpe_adj_ctl(struct ctl_conn *c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:914,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:916,1
    - Dst: memset
      Src: /src/frr/ldpd/ldpe.c:917,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldpe.c:924,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpe.c:925,1
    - Dst: RB_EMPTY
      Src: /src/frr/ldpd/ldpe.c:926,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:928,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:931,1
    - Dst: adj_to_ctl
      Src: /src/frr/ldpd/ldpe.c:932,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:933,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:936,1
    - Dst: adj_to_ctl
      Src: /src/frr/ldpd/ldpe.c:937,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:938,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:943,1
    - Dst: memset
      Src: /src/frr/ldpd/ldpe.c:944,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:950,1
    - Dst: adj_to_ctl
      Src: /src/frr/ldpd/ldpe.c:956,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:957,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:961,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct ctl_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 904
    functionDepth: 3
    functionLinenumber: 904
    functionLinenumberEnd: 962
    functionName: ldpe_adj_detail_ctl
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - memset
    - strlcpy
    - adj_to_ctl
    - imsg_compose_event
    - RB_FOREACH
    - RB_EMPTY
    linkageType: ''
    returnType: void
    signature: void ldpe_adj_detail_ctl(struct ctl_conn *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:972,1
    - Dst: nbr_to_ctl
      Src: /src/frr/ldpd/ldpe.c:976,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:977,1
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:980,1
    - Dst: adj_to_ctl
      Src: /src/frr/ldpd/ldpe.c:981,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:982,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:986,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:989,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct ctl_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 964
    functionDepth: 4
    functionLinenumber: 964
    functionLinenumberEnd: 990
    functionName: ldpe_nbr_ctl
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - imsg_compose_event
    - RB_FOREACH
    - adj_to_ctl
    - nbr_to_ctl
    linkageType: ''
    returnType: void
    signature: void ldpe_nbr_ctl(struct ctl_conn *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/ldpe.c:998,1
    - Dst: ldp_sync_to_ctl
      Src: /src/frr/ldpd/ldpe.c:999,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:1000,1
    - Dst: imsg_compose_event
      Src: /src/frr/ldpd/ldpe.c:1003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct ctl_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 992
    functionDepth: 4
    functionLinenumber: 992
    functionLinenumberEnd: 1004
    functionName: ldpe_ldp_sync_ctl
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - imsg_compose_event
    - RB_FOREACH
    - ldp_sync_to_ctl
    linkageType: ''
    returnType: void
    signature: void ldpe_ldp_sync_ctl(struct ctl_conn *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/ldpe.c:1011,1
    - Dst: fatal
      Src: /src/frr/ldpd/ldpe.c:1013,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/ldpd/ldpe.c:1016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mh
    - map
    argTypes:
    - struct mapping_head*
    - struct map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1006
    functionDepth: 0
    functionLinenumber: 1006
    functionLinenumberEnd: 1017
    functionName: mapping_list_add
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 2
    functionsReached:
    - fatal
    - calloc
    - TAILQ_INSERT_TAIL
    linkageType: ''
    returnType: void
    signature: void mapping_list_add(struct mapping_head *mh, struct map *map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FIRST
      Src: /src/frr/ldpd/ldpe.c:1024,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/ldpd/ldpe.c:1025,1
    - Dst: assert
      Src: /src/frr/ldpd/ldpe.c:1026,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/ldpd/ldpe.c:1026,1
    - Dst: free
      Src: /src/frr/ldpd/ldpe.c:1027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mh
    argTypes:
    - struct mapping_head*
    assertStmts:
    - condition: (me != TAILQ_FIRST(mh))
      pos:
        line_end: 1025
        line_start: 1025
        source_file: /src/frr/ldpd/ldpe.c
    constantsTouched: []
    func_position:
      end: 1029
      start: 1019
    functionDepth: 1
    functionLinenumber: 1019
    functionLinenumberEnd: 1029
    functionName: mapping_list_clr
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 3
    functionsReached:
    - assert
    - TAILQ_REMOVE
    - free
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void mapping_list_clr(struct mapping_head *mh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ldpd/ldpe.c:1035,1
    - Dst: ldpe_remove_dynamic_tnbrs
      Src: /src/frr/ldpd/ldpe.c:1036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - af
    - af_conf
    - filter_name
    argTypes:
    - int
    - struct ldpd_af_conf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1037
    functionName: ldpe_check_filter_af
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - ldpe_remove_dynamic_tnbrs
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void ldpe_check_filter_af(int af, struct ldpd_af_conf *af_conf,\n
      \   const char *filter_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/ldpd/ldpe.c:1043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1044
    functionName: ldpe_set_config_change_time
    functionSourceFile: /src/frr/ldpd/ldpe.c
    functionUses: 1
    functionsReached:
    - time
    linkageType: ''
    returnType: void
    signature: void ldpe_set_config_change_time(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:138,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:141,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:142,1
    - Dst: if_state_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:143,1
    - Dst: log_time
      Src: /src/frr/ldpd/ldp_vty_exec.c:144,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 124
    functionDepth: 8
    functionLinenumber: 124
    functionLinenumberEnd: 155
    functionName: show_interface_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - af_name
    - vty_out
    - snprintf
    - log_time
    - if_state_name
    linkageType: ''
    returnType: int
    signature: "int show_interface_msg(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:172,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:173,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:174,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:175,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:176,1
    - Dst: if_state_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:177,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:178,1
    - Dst: log_time
      Src: /src/frr/ldpd/ldp_vty_exec.c:179,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:180,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:182,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:184,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:187,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:188,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:189,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 157
    functionDepth: 8
    functionLinenumber: 157
    functionLinenumberEnd: 198
    functionName: show_interface_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - af_name
    - snprintf
    - log_time
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - if_state_name
    linkageType: ''
    returnType: int
    signature: "int show_interface_msg_json(struct imsg *imsg, struct show_params
      *params,\n    json_object *json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:210,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:212,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:214,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:217,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:219,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:221,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:223,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:227,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 238
    functionName: show_ldp_sync_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int show_ldp_sync_msg(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:252,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:253,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:257,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:259,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:263,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:265,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:267,1
    - Dst: inet_ntop
      Src: /src/frr/ldpd/ldp_vty_exec.c:269,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 281
    functionName: show_ldp_sync_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_int_add
    - inet_ntop
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - json_object_boolean_false_add
    linkageType: ''
    returnType: int
    signature: "int show_ldp_sync_msg_json(struct imsg *imsg, struct show_params *params,\n
      \   json_object *json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:297,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:297,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:300,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:303,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:305,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:306,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:307,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:310,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:313,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 283
    functionDepth: 5
    functionLinenumber: 283
    functionLinenumberEnd: 320
    functionName: show_discovery_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - af_name
    - strlen
    - vty_out
    - log_addr
    linkageType: ''
    returnType: int
    signature: "int show_discovery_msg(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:325,1
    - Dst: snprintfrr
      Src: /src/frr/ldpd/ldp_vty_exec.c:327,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:329,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:330,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:332,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:333,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:334,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:336,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:337,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:338,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:341,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - vty
    - buffer
    - adj
    argTypes:
    - struct vty*
    - char*
    - struct ctl_adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 322
    functionDepth: 7
    functionLinenumber: 322
    functionLinenumberEnd: 345
    functionName: show_discovery_detail_adj
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintfrr
    - snprintf
    - log_addr
    linkageType: ''
    returnType: void
    signature: void show_discovery_detail_adj(struct vty *vty, char *buffer, struct
      ctl_adj *adj)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:373,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:374,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_exec.c:384,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:386,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:387,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:388,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:389,1
    - Dst: show_discovery_detail_adj
      Src: /src/frr/ldpd/ldp_vty_exec.c:400,1
    - Dst: show_discovery_detail_adj
      Src: /src/frr/ldpd/ldp_vty_exec.c:403,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_vty_exec.c:408,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:409,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:410,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:411,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:412,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:413,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:414,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:415,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:416,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:417,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:418,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:419,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:420,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:421,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:422,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 53
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 347
    functionDepth: 8
    functionLinenumber: 347
    functionLinenumberEnd: 429
    functionName: show_discovery_detail_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - strlen
    - vty_out
    - snprintf
    - log_addr
    - CHECK_FLAG
    - ldp_af_conf_get
    - ldp_rtr_id_get
    - show_discovery_detail_adj
    linkageType: ''
    returnType: int
    signature: "int show_discovery_detail_msg(struct vty *vty, struct imsg *imsg,\n
      \   struct show_params *params)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/frr/ldpd/ldp_vty_exec.c:446,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:448,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:449,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:452,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:453,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:454,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:455,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:459,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:460,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:464,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:465,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:466,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:469,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:471,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 431
    functionDepth: 5
    functionLinenumber: 431
    functionLinenumberEnd: 480
    functionName: show_discovery_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - af_name
    - json_object_array_add
    - log_addr
    - json_object_object_get_ex
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: int
    signature: "int show_discovery_msg_json(struct imsg *imsg, struct show_params
      *params,\n    json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/frr/ldpd/ldp_vty_exec.c:488,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:490,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:491,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:494,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:495,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:496,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:496,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:498,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:498,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:500,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:501,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:503,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - json
    - adj
    argTypes:
    - json_object*
    - struct ctl_adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 482
    functionDepth: 5
    functionLinenumber: 482
    functionLinenumberEnd: 506
    functionName: show_discovery_detail_adj_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - json_object_array_add
    - log_addr
    - json_object_object_get_ex
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: void
    signature: void show_discovery_detail_adj_json(json_object *json, struct ctl_adj
      *adj)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/ldp_vty_exec.c:525,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:526,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:527,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:528,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:529,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:530,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:531,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:532,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:533,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:534,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:535,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:536,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:547,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:548,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/ldp_vty_exec.c:558,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:560,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:561,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:562,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:563,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:563,1
    - Dst: show_discovery_detail_adj_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:575,1
    - Dst: show_discovery_detail_adj_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:578,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 52
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 508
    functionDepth: 6
    functionLinenumber: 508
    functionLinenumberEnd: 589
    functionName: show_discovery_detail_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - log_addr
    - CHECK_FLAG
    - ldp_rtr_id_get
    - ldp_af_conf_get
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - show_discovery_detail_adj_json
    linkageType: ''
    returnType: int
    signature: "int show_discovery_detail_msg_json(struct imsg *imsg, struct show_params
      *params,\n    json_object *json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:601,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:603,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:604,1
    - Dst: nbr_state_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:605,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:606,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:607,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:608,1
    - Dst: log_time
      Src: /src/frr/ldpd/ldp_vty_exec.c:608,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 591
    functionDepth: 8
    functionLinenumber: 591
    functionLinenumberEnd: 617
    functionName: show_nbr_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - nbr_state_name
    - af_name
    - strlen
    - vty_out
    - log_addr
    - log_time
    linkageType: ''
    returnType: int
    signature: int show_nbr_msg(struct vty *vty, struct imsg *imsg, struct show_params
      *params)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:622,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:626,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:630,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - vty
    - buffer
    - adj
    argTypes:
    - struct vty*
    - char*
    - struct ctl_adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 619
    functionDepth: 5
    functionLinenumber: 619
    functionLinenumberEnd: 635
    functionName: show_nbr_detail_adj
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - log_addr
    linkageType: ''
    returnType: void
    signature: void show_nbr_detail_adj(struct vty *vty, char *buffer, struct ctl_adj
      *adj)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:653,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:655,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:656,1
    - Dst: ntohs
      Src: /src/frr/ldpd/ldp_vty_exec.c:656,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:657,1
    - Dst: ntohs
      Src: /src/frr/ldpd/ldp_vty_exec.c:657,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:658,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:660,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:662,1
    - Dst: nbr_state_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:663,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:664,1
    - Dst: log_time
      Src: /src/frr/ldpd/ldp_vty_exec.c:664,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:667,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:668,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:670,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:672,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:674,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:676,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:678,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:680,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:682,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:684,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:686,1
    - Dst: show_nbr_capabilities
      Src: /src/frr/ldpd/ldp_vty_exec.c:689,1
    - Dst: show_nbr_detail_adj
      Src: /src/frr/ldpd/ldp_vty_exec.c:696,1
    - Dst: show_nbr_detail_adj
      Src: /src/frr/ldpd/ldp_vty_exec.c:699,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_vty_exec.c:702,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:706,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:708,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:709,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:712,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:713,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:715,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 57
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 637
    functionDepth: 8
    functionLinenumber: 637
    functionLinenumberEnd: 724
    functionName: show_nbr_detail_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - nbr_state_name
    - fatalx
    - vty_out
    - log_addr
    - log_time
    - ntohs
    - show_nbr_capabilities
    - show_nbr_detail_adj
    linkageType: ''
    returnType: int
    signature: "int show_nbr_detail_msg(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/frr/ldpd/ldp_vty_exec.c:738,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:740,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:741,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:744,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:745,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:746,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:747,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:749,1
    - Dst: nbr_state_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:750,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:751,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:752,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:753,1
    - Dst: log_time
      Src: /src/frr/ldpd/ldp_vty_exec.c:754,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:756,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 726
    functionDepth: 8
    functionLinenumber: 726
    functionLinenumberEnd: 765
    functionName: show_nbr_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - af_name
    - nbr_state_name
    - json_object_array_add
    - log_addr
    - log_time
    - json_object_object_get_ex
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: int
    signature: "int show_nbr_msg_json(struct imsg *imsg, struct show_params *params,\n
      \   json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_exec.c:774,1
    - Dst: strlcat
      Src: /src/frr/ldpd/ldp_vty_exec.c:775,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_exec.c:778,1
    - Dst: strlcat
      Src: /src/frr/ldpd/ldp_vty_exec.c:779,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:779,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:784,1
    - Dst: json_object_new_string
      Src: /src/frr/ldpd/ldp_vty_exec.c:784,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - adj
    - adj_list
    argTypes:
    - struct ctl_adj*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 767
    functionDepth: 5
    functionLinenumber: 767
    functionLinenumberEnd: 785
    functionName: show_nbr_detail_adj_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - strlcat
    - json_object_array_add
    - log_addr
    - strlcpy
    - json_object_new_string
    linkageType: ''
    returnType: void
    signature: void show_nbr_detail_adj_json(struct ctl_adj *adj, json_object *adj_list)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:806,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:807,1
    - Dst: inet_ntop
      Src: /src/frr/ldpd/ldp_vty_exec.c:808,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:810,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:811,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:812,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:813,1
    - Dst: ntohs
      Src: /src/frr/ldpd/ldp_vty_exec.c:814,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:815,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:816,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:817,1
    - Dst: ntohs
      Src: /src/frr/ldpd/ldp_vty_exec.c:818,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:819,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:822,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:823,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:825,1
    - Dst: nbr_state_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:826,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:827,1
    - Dst: log_time
      Src: /src/frr/ldpd/ldp_vty_exec.c:828,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:832,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:833,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:834,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:835,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:837,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:838,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:839,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:841,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:842,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:843,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:845,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:846,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:847,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:849,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:850,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:851,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:853,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:854,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:855,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:857,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:858,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:859,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:861,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:862,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:863,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:865,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:866,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:867,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:869,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:870,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:871,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:873,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:875,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:876,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:877,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:878,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:880,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:881,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:882,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:884,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:885,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:886,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:888,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:889,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:890,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:892,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:893,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:894,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:896,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:897,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:898,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:900,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:901,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:902,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:904,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:905,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:906,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:908,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:909,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:910,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:912,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:913,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:914,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:916,1
    - Dst: show_nbr_capabilities_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:919,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:922,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:923,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:934,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:935,1
    - Dst: show_nbr_detail_adj_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:938,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:942,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:943,1
    - Dst: show_nbr_detail_adj_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:946,1
    - Dst: fatalx
      Src: /src/frr/ldpd/ldp_vty_exec.c:949,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 116
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 787
    functionDepth: 8
    functionLinenumber: 787
    functionLinenumberEnd: 961
    functionName: show_nbr_detail_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - nbr_state_name
    - json_object_new_array
    - fatalx
    - json_object_array_add
    - log_addr
    - show_nbr_capabilities_json
    - log_time
    - json_object_int_add
    - ntohs
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - show_nbr_detail_adj_json
    linkageType: ''
    returnType: int
    signature: "int show_nbr_detail_msg_json(struct imsg *imsg, struct show_params
      *params,\n    json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:966,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:970,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:971,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:972,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:973,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:974,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:975,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:976,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - vty
    - nbr
    argTypes:
    - struct vty*
    - struct ctl_nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 963
    functionDepth: 2
    functionLinenumber: 963
    functionLinenumberEnd: 977
    functionName: show_nbr_capabilities
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - vty_out
    linkageType: ''
    returnType: void
    signature: void show_nbr_capabilities(struct vty *vty, struct ctl_nbr *nbr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:991,1
    - Dst: show_nbr_capabilities
      Src: /src/frr/ldpd/ldp_vty_exec.c:993,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:994,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:997,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 979
    functionDepth: 3
    functionLinenumber: 979
    functionLinenumberEnd: 1004
    functionName: show_nbr_capabilities_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - show_nbr_capabilities
    - vty_out
    linkageType: ''
    returnType: int
    signature: int show_nbr_capabilities_msg(struct vty *vty, struct imsg *imsg, struct
      show_params *params)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:1013,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1014,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1017,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1018,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1019,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1020,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1023,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1024,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1025,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1026,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1029,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1030,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1032,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1033,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:1036,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1037,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:1040,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1041,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1042,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1044,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1045,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:1049,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1050,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1051,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1053,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1054,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/ldp_vty_exec.c:1058,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1059,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1060,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1062,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1063,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 2
    argNames:
    - nbr
    - json_nbr
    argTypes:
    - struct ctl_nbr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1065
    functionName: show_nbr_capabilities_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 1
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - json_object_array_add
    - CHECK_FLAG
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void show_nbr_capabilities_json(struct ctl_nbr *nbr, json_object *json_nbr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1082,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1083,1
    - Dst: inet_ntop
      Src: /src/frr/ldpd/ldp_vty_exec.c:1083,1
    - Dst: show_nbr_capabilities_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1085,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1067
    functionDepth: 2
    functionLinenumber: 1067
    functionLinenumberEnd: 1094
    functionName: show_nbr_capabilities_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - inet_ntop
    - json_object_object_add
    - show_nbr_capabilities_json
    linkageType: ''
    returnType: int
    signature: "int show_nbr_capabilities_msg_json(struct imsg *imsg, struct show_params
      *params,\n    json_object *json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1117,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1118,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1120,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:1120,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:1121,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1122,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1123,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1124,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1125,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1129,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1096
    functionDepth: 5
    functionLinenumber: 1096
    functionLinenumberEnd: 1136
    functionName: show_lib_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - af_name
    - strlen
    - vty_out
    - snprintf
    - log_addr
    - log_label
    linkageType: ''
    returnType: int
    signature: int show_lib_msg(struct vty *vty, struct imsg *imsg, struct show_params
      *params)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1156,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1157,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:1163,1
    - Dst: snprintfrr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1164,1
    - Dst: strlen
      Src: /src/frr/ldpd/ldp_vty_exec.c:1170,1
    - Dst: snprintfrr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1171,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1173,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1182,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1183,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1184,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1186,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1187,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1190,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1191,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1193,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1196,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1138
    functionDepth: 7
    functionLinenumber: 1138
    functionLinenumberEnd: 1203
    functionName: show_lib_detail_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - strlen
    - vty_out
    - snprintf
    - log_addr
    - snprintfrr
    - log_label
    linkageType: ''
    returnType: int
    signature: int show_lib_detail_msg(struct vty *vty, struct imsg *imsg, struct
      show_params *params)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/frr/ldpd/ldp_vty_exec.c:1223,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:1225,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1226,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1229,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1230,1
    - Dst: af_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:1231,1
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1232,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1233,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1234,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1235,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1237,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1238,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1239,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1240,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1241,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1205
    functionDepth: 5
    functionLinenumber: 1205
    functionLinenumberEnd: 1252
    functionName: show_lib_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - af_name
    - json_object_array_add
    - snprintf
    - log_addr
    - json_object_object_get_ex
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - log_label
    linkageType: ''
    returnType: int
    signature: "int show_lib_msg_json(struct imsg *imsg, struct show_params *params,\n
      \   json_object *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1270,1
    - Dst: log_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1271,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1273,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1274,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1275,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:1277,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1278,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:1281,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1282,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1285,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1290,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1291,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1293,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1298,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1299,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1301,1
    - Dst: log_label
      Src: /src/frr/ldpd/ldp_vty_exec.c:1302,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1303,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1304,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1254
    functionDepth: 5
    functionLinenumber: 1254
    functionLinenumberEnd: 1313
    functionName: show_lib_detail_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - snprintf
    - log_addr
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - log_label
    linkageType: ''
    returnType: int
    signature: "int show_lib_detail_msg_json(struct imsg *imsg, struct show_params
      *params,\n    json_object *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1325,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1330,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1332,1
    - Dst: pw_type_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:1333,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1334,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1335,1
    - Dst: pw_error_code
      Src: /src/frr/ldpd/ldp_vty_exec.c:1336,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1338,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1342,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1344,1
    - Dst: pw_type_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:1345,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1346,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1348,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1351,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1315
    functionDepth: 2
    functionLinenumber: 1315
    functionLinenumberEnd: 1358
    functionName: show_l2vpn_binding_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - pw_type_name
    - pw_error_code
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int show_l2vpn_binding_msg(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1372,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1373,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1375,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1379,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1381,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1383,1
    - Dst: pw_type_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:1384,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1385,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1387,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1389,1
    - Dst: pw_error_code
      Src: /src/frr/ldpd/ldp_vty_exec.c:1390,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1392,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1397,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1399,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1401,1
    - Dst: pw_type_name
      Src: /src/frr/ldpd/ldp_vty_exec.c:1402,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1403,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1405,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1408,1
    - Dst: snprintfrr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1411,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1360
    functionDepth: 7
    functionLinenumber: 1360
    functionLinenumberEnd: 1422
    functionName: show_l2vpn_binding_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pw_type_name
    - snprintfrr
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - pw_error_code
    linkageType: ''
    returnType: int
    signature: "int show_l2vpn_binding_msg_json(struct imsg *imsg, struct show_params
      *params,\n    json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1433,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - vty
    - imsg
    - params
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1424
    functionDepth: 2
    functionLinenumber: 1424
    functionLinenumberEnd: 1445
    functionName: show_l2vpn_pw_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int show_l2vpn_pw_msg(struct vty *vty, struct imsg *imsg, struct show_params
      *params)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1458,1
    - Dst: json_object_string_addf
      Src: /src/frr/ldpd/ldp_vty_exec.c:1459,1
    - Dst: json_object_int_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1460,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1461,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1463,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1465,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1466,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - imsg
    - params
    - json
    argTypes:
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1447
    functionDepth: 2
    functionLinenumber: 1447
    functionLinenumberEnd: 1475
    functionName: show_l2vpn_pw_msg_json
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: int
    signature: "int show_l2vpn_pw_msg_json(struct imsg *imsg, struct show_params *params,\n
      \   json_object *json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/ldpd/ldp_vty_exec.c:1484,1
    - Dst: log_warn
      Src: /src/frr/ldpd/ldp_vty_exec.c:1485,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:1489,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_exec.c:1491,1
    - Dst: connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:1492,1
    - Dst: log_warn
      Src: /src/frr/ldpd/ldp_vty_exec.c:1493,1
    - Dst: close
      Src: /src/frr/ldpd/ldp_vty_exec.c:1494,1
    - Dst: imsg_init
      Src: /src/frr/ldpd/ldp_vty_exec.c:1498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ibuf
    argTypes:
    - struct imsgbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1477
    functionDepth: 9
    functionLinenumber: 1477
    functionLinenumberEnd: 1501
    functionName: ldp_vty_connect
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - memset
    - connect
    - socket
    - strlcpy
    - imsg_init
    - close
    - log_warn
    linkageType: ''
    returnType: int
    signature: int ldp_vty_connect(struct imsgbuf *ibuf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: show_interface_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1510,1
    - Dst: show_interface_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - vty
    - imsg
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1503
    functionDepth: 9
    functionLinenumber: 1503
    functionLinenumberEnd: 1515
    functionName: ldp_vty_dispatch_iface
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - show_interface_msg
    - show_interface_msg_json
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_iface(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params, json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: show_ldp_sync_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1524,1
    - Dst: show_ldp_sync_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1526,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - vty
    - imsg
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1517
    functionDepth: 3
    functionLinenumber: 1517
    functionLinenumberEnd: 1529
    functionName: ldp_vty_dispatch_ldp_sync
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - show_ldp_sync_msg
    - show_ldp_sync_msg_json
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_ldp_sync(struct vty *vty, struct imsg *imsg,\n
      \   struct show_params *params, json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: show_discovery_detail_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1539,1
    - Dst: show_discovery_detail_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1542,1
    - Dst: show_discovery_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1545,1
    - Dst: show_discovery_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - vty
    - imsg
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1531
    functionDepth: 9
    functionLinenumber: 1531
    functionLinenumberEnd: 1551
    functionName: ldp_vty_dispatch_disc
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - show_discovery_msg_json
    - show_discovery_detail_msg
    - show_discovery_detail_msg_json
    - show_discovery_msg
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_disc(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params, json_object *json)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: show_nbr_capabilities_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1583,1
    - Dst: show_nbr_capabilities_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1586,1
    - Dst: show_nbr_detail_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1589,1
    - Dst: show_nbr_detail_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1591,1
    - Dst: show_nbr_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1594,1
    - Dst: show_nbr_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1596,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 4
    argNames:
    - vty
    - imsg
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1553
    functionDepth: 9
    functionLinenumber: 1553
    functionLinenumberEnd: 1600
    functionName: ldp_vty_dispatch_nbr
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - show_nbr_detail_msg_json
    - show_nbr_detail_msg
    - show_nbr_capabilities_msg
    - show_nbr_capabilities_msg_json
    - show_nbr_msg_json
    - show_nbr_msg
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_nbr(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params, json_object *json)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ldpd/ldp_vty_exec.c:1639,1
    - Dst: prefix_same
      Src: /src/frr/ldpd/ldp_vty_exec.c:1642,1
    - Dst: prefix_match
      Src: /src/frr/ldpd/ldp_vty_exec.c:1646,1
    - Dst: show_lib_detail_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1685,1
    - Dst: show_lib_detail_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1687,1
    - Dst: show_lib_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1690,1
    - Dst: show_lib_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1692,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 72
    argCount: 4
    argNames:
    - vty
    - imsg
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1602
    functionDepth: 8
    functionLinenumber: 1602
    functionLinenumberEnd: 1696
    functionName: ldp_vty_dispatch_lib
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - show_lib_msg_json
    - prefix_match
    - show_lib_detail_msg_json
    - show_lib_msg
    - show_lib_detail_msg
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_lib(struct vty *vty, struct imsg *imsg,\n    struct
      show_params *params, json_object *json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_vty_exec.c:1712,1
    - Dst: show_l2vpn_pw_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1722,1
    - Dst: show_l2vpn_pw_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1724,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 4
    argNames:
    - vty
    - imsg
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1698
    functionDepth: 3
    functionLinenumber: 1698
    functionLinenumberEnd: 1727
    functionName: ldp_vty_dispatch_l2vpn_pw
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - show_l2vpn_pw_msg_json
    - strcmp
    - show_l2vpn_pw_msg
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_l2vpn_pw(struct vty *vty, struct imsg *imsg,\n
      \   struct show_params *params, json_object *json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: show_l2vpn_binding_msg_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1754,1
    - Dst: show_l2vpn_binding_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1756,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 4
    argNames:
    - vty
    - imsg
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1729
    functionDepth: 8
    functionLinenumber: 1729
    functionLinenumberEnd: 1759
    functionName: ldp_vty_dispatch_l2vpn_binding
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - show_l2vpn_binding_msg_json
    - show_l2vpn_binding_msg
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_l2vpn_binding(struct vty *vty, struct imsg *imsg,\n
      \   struct show_params *params, json_object *json)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_dispatch_iface
      Src: /src/frr/ldpd/ldp_vty_exec.c:1767,1
    - Dst: ldp_vty_dispatch_disc
      Src: /src/frr/ldpd/ldp_vty_exec.c:1769,1
    - Dst: ldp_vty_dispatch_nbr
      Src: /src/frr/ldpd/ldp_vty_exec.c:1771,1
    - Dst: ldp_vty_dispatch_lib
      Src: /src/frr/ldpd/ldp_vty_exec.c:1773,1
    - Dst: ldp_vty_dispatch_l2vpn_pw
      Src: /src/frr/ldpd/ldp_vty_exec.c:1775,1
    - Dst: ldp_vty_dispatch_l2vpn_binding
      Src: /src/frr/ldpd/ldp_vty_exec.c:1777,1
    - Dst: ldp_vty_dispatch_ldp_sync
      Src: /src/frr/ldpd/ldp_vty_exec.c:1780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 5
    argNames:
    - vty
    - imsg
    - cmd
    - params
    - json
    argTypes:
    - struct vty*
    - struct imsg*
    - enum show_command
    - struct show_params*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1761
    functionDepth: 10
    functionLinenumber: 1761
    functionLinenumberEnd: 1784
    functionName: ldp_vty_dispatch_msg
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - ldp_vty_dispatch_iface
    - ldp_vty_dispatch_l2vpn_binding
    - ldp_vty_dispatch_lib
    - ldp_vty_dispatch_ldp_sync
    - ldp_vty_dispatch_nbr
    - ldp_vty_dispatch_disc
    - ldp_vty_dispatch_l2vpn_pw
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch_msg(struct vty *vty, struct imsg *imsg, enum
      show_command cmd,\n    struct show_params *params, json_object *json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: msgbuf_write
      Src: /src/frr/ldpd/ldp_vty_exec.c:1795,1
    - Dst: log_warn
      Src: /src/frr/ldpd/ldp_vty_exec.c:1796,1
    - Dst: close
      Src: /src/frr/ldpd/ldp_vty_exec.c:1797,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1802,1
    - Dst: imsg_read
      Src: /src/frr/ldpd/ldp_vty_exec.c:1805,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldp_vty_exec.c:1806,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldp_vty_exec.c:1811,1
    - Dst: imsg_get
      Src: /src/frr/ldpd/ldp_vty_exec.c:1817,1
    - Dst: log_warnx
      Src: /src/frr/ldpd/ldp_vty_exec.c:1818,1
    - Dst: ldp_vty_dispatch_msg
      Src: /src/frr/ldpd/ldp_vty_exec.c:1824,1
    - Dst: imsg_free
      Src: /src/frr/ldpd/ldp_vty_exec.c:1826,1
    - Dst: close
      Src: /src/frr/ldpd/ldp_vty_exec.c:1831,1
    - Dst: vty_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1833,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 4
    argNames:
    - vty
    - ibuf
    - cmd
    - params
    argTypes:
    - struct vty*
    - struct imsgbuf*
    - enum show_command
    - struct show_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1786
    functionDepth: 11
    functionLinenumber: 1786
    functionLinenumberEnd: 1837
    functionName: ldp_vty_dispatch
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - imsg_free
    - log_warnx
    - close
    - imsg_read
    - ldp_vty_dispatch_msg
    - imsg_get
    - msgbuf_write
    - vty_json
    - log_warn
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_dispatch(struct vty *vty, struct imsgbuf *ibuf, enum show_command
      cmd,\n    struct show_params *params)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_vty_exec.c:1845,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_vty_exec.c:1848,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - str
    - af
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1839
    functionDepth: 0
    functionLinenumber: 1839
    functionLinenumberEnd: 1854
    functionName: ldp_vty_get_af
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 12
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int ldp_vty_get_af(const char *str, int *af)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:1865,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_exec.c:1868,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:1871,1
    - Dst: str2prefix
      Src: /src/frr/ldpd/ldp_vty_exec.c:1876,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_exec.c:1880,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_exec.c:1881,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1882,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1889,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:1893,1
    - Dst: ldp_vty_dispatch
      Src: /src/frr/ldpd/ldp_vty_exec.c:1894,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 9
    argNames:
    - vty
    - af_str
    - prefix
    - longer_prefixes
    - neighbor
    - local_label
    - remote_label
    - detail
    - json
    argTypes:
    - struct vty*
    - char*
    - char*
    - int
    - char*
    - unsigned long
    - unsigned long
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1856
    functionDepth: 12
    functionLinenumber: 1856
    functionLinenumberEnd: 1895
    functionName: ldp_vty_show_binding
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - vty_out
    - memset
    - ldp_vty_dispatch
    - bad_addr_v4
    - ldp_vty_connect
    - inet_pton
    - str2prefix
    - imsg_compose
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_show_binding(struct vty *vty, const char *af_str, const
      char *prefix,\n    int longer_prefixes, const char *neighbor, unsigned long
      local_label,\n    unsigned long remote_label, const char *detail, const char
      *json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:1905,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_exec.c:1908,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:1911,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1917,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:1921,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:1924,1
    - Dst: ldp_vty_dispatch
      Src: /src/frr/ldpd/ldp_vty_exec.c:1925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - vty
    - af_str
    - detail
    - json
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1897
    functionDepth: 12
    functionLinenumber: 1897
    functionLinenumberEnd: 1926
    functionName: ldp_vty_show_discovery
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - vty_out
    - memset
    - ldp_vty_dispatch
    - ldp_vty_connect
    - imsg_compose
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_show_discovery(struct vty *vty, const char *af_str, const
      char *detail,\n    const char *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:1936,1
    - Dst: ldp_vty_get_af
      Src: /src/frr/ldpd/ldp_vty_exec.c:1939,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:1942,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1948,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:1952,1
    - Dst: ldp_vty_dispatch
      Src: /src/frr/ldpd/ldp_vty_exec.c:1954,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - vty
    - af_str
    - json
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1955
      start: 1928
    functionDepth: 12
    functionLinenumber: 1928
    functionLinenumberEnd: 1955
    functionName: ldp_vty_show_interface
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - ldp_vty_get_af
    - vty_out
    - memset
    - ldp_vty_dispatch
    - ldp_vty_connect
    - imsg_compose
    linkageType: ''
    returnType: int
    signature: int ldp_vty_show_interface(struct vty *vty, const char *af_str, const
      char *json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1965,1
    - Dst: json_object_new_array
      Src: /src/frr/ldpd/ldp_vty_exec.c:1966,1
    - Dst: json_object_object_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1967,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1970,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1971,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1973,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1975,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1978,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1979,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1981,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1983,1
    - Dst: json_object_new_object
      Src: /src/frr/ldpd/ldp_vty_exec.c:1986,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1987,1
    - Dst: json_object_string_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1989,1
    - Dst: json_object_array_add
      Src: /src/frr/ldpd/ldp_vty_exec.c:1991,1
    - Dst: vty_json
      Src: /src/frr/ldpd/ldp_vty_exec.c:1993,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:1997,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 1957
    functionDepth: 4
    functionLinenumber: 1957
    functionLinenumberEnd: 2004
    functionName: ldp_vty_show_capabilities
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - vty_out
    - json_object_string_add
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: int
    signature: int ldp_vty_show_capabilities(struct vty *vty, const char *json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:2013,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:2016,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_exec.c:2021,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_exec.c:2022,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:2023,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:2031,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:2034,1
    - Dst: ldp_vty_dispatch
      Src: /src/frr/ldpd/ldp_vty_exec.c:2035,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 5
    argNames:
    - vty
    - lsr_id
    - capabilities
    - detail
    - json
    argTypes:
    - struct vty*
    - char*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2006
    functionDepth: 12
    functionLinenumber: 2006
    functionLinenumberEnd: 2036
    functionName: ldp_vty_show_neighbor
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - ldp_vty_dispatch
    - bad_addr_v4
    - ldp_vty_connect
    - inet_pton
    - imsg_compose
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_show_neighbor(struct vty *vty, const char *lsr_id, int
      capabilities,\n    const char *detail, const char *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:2044,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:2047,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:2050,1
    - Dst: ldp_vty_dispatch
      Src: /src/frr/ldpd/ldp_vty_exec.c:2051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2038
    functionDepth: 12
    functionLinenumber: 2038
    functionLinenumberEnd: 2052
    functionName: ldp_vty_show_ldp_sync
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - memset
    - imsg_compose
    - ldp_vty_connect
    - ldp_vty_dispatch
    linkageType: ''
    returnType: int
    signature: int ldp_vty_show_ldp_sync(struct vty *vty, const char *json)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:2061,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:2064,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_exec.c:2067,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_exec.c:2068,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:2069,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:2075,1
    - Dst: ldp_vty_dispatch
      Src: /src/frr/ldpd/ldp_vty_exec.c:2076,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - vty
    - peer
    - local_label
    - remote_label
    - json
    argTypes:
    - struct vty*
    - char*
    - unsigned long
    - unsigned long
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2054
    functionDepth: 12
    functionLinenumber: 2054
    functionLinenumberEnd: 2077
    functionName: ldp_vty_show_atom_binding
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - ldp_vty_dispatch
    - bad_addr_v4
    - ldp_vty_connect
    - inet_pton
    - imsg_compose
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_show_atom_binding(struct vty *vty, const char *peer,\n
      \   unsigned long local_label, unsigned long remote_label, const char *json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:2086,1
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:2089,1
    - Dst: inet_pton
      Src: /src/frr/ldpd/ldp_vty_exec.c:2092,1
    - Dst: bad_addr_v4
      Src: /src/frr/ldpd/ldp_vty_exec.c:2093,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:2094,1
    - Dst: strlcpy
      Src: /src/frr/ldpd/ldp_vty_exec.c:2098,1
    - Dst: atoi
      Src: /src/frr/ldpd/ldp_vty_exec.c:2101,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:2105,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:2107,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:2112,1
    - Dst: ldp_vty_dispatch
      Src: /src/frr/ldpd/ldp_vty_exec.c:2113,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 5
    argNames:
    - vty
    - peer
    - ifname
    - vcid
    - json
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2079
    functionDepth: 12
    functionLinenumber: 2079
    functionLinenumberEnd: 2114
    functionName: ldp_vty_show_atom_vc
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - ldp_vty_dispatch
    - strlcpy
    - bad_addr_v4
    - ldp_vty_connect
    - inet_pton
    - imsg_compose
    - atoi
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_show_atom_vc(struct vty *vty, const char *peer, const
      char *ifname,\n    const char *vcid, const char *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/ldp_vty_exec.c:2122,1
    - Dst: ldp_get_address
      Src: /src/frr/ldpd/ldp_vty_exec.c:2124,1
    - Dst: bad_addr
      Src: /src/frr/ldpd/ldp_vty_exec.c:2125,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_vty_exec.c:2126,1
    - Dst: ldp_vty_connect
      Src: /src/frr/ldpd/ldp_vty_exec.c:2130,1
    - Dst: imsg_compose
      Src: /src/frr/ldpd/ldp_vty_exec.c:2133,1
    - Dst: msgbuf_write
      Src: /src/frr/ldpd/ldp_vty_exec.c:2136,1
    - Dst: log_warn
      Src: /src/frr/ldpd/ldp_vty_exec.c:2137,1
    - Dst: close
      Src: /src/frr/ldpd/ldp_vty_exec.c:2138,1
    - Dst: close
      Src: /src/frr/ldpd/ldp_vty_exec.c:2142,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - vty
    - addr_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2145
      start: 2116
    functionDepth: 10
    functionLinenumber: 2116
    functionLinenumberEnd: 2145
    functionName: ldp_vty_clear_nbr
    functionSourceFile: /src/frr/ldpd/ldp_vty_exec.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - msgbuf_write
    - ldp_vty_connect
    - close
    - bad_addr
    - ldp_get_address
    - imsg_compose
    - log_warn
    linkageType: ''
    returnType: int
    signature: int ldp_vty_clear_nbr(struct vty *vty, const char *addr_str)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_debug.c:35,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:41,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:43,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:46,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:48,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_debug.c:50,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:52,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:54,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_debug.c:55,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:57,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:59,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_debug.c:60,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:62,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:64,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_debug.c:65,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:71,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:72,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:74,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:76,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:80,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:81,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:83,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:85,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_debug.c:88,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:90,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:92,1
    - Dst: strcmp
      Src: /src/frr/ldpd/ldp_debug.c:93,1
    - Dst: DEBUG_OFF
      Src: /src/frr/ldpd/ldp_debug.c:95,1
    - Dst: DEBUG_ON
      Src: /src/frr/ldpd/ldp_debug.c:97,1
    - Dst: main_imsg_compose_both
      Src: /src/frr/ldpd/ldp_debug.c:100,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 5
    argNames:
    - vty
    - negate
    - type_str
    - dir_str
    - all
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 104
    functionName: ldp_vty_debug
    functionSourceFile: /src/frr/ldpd/ldp_debug.c
    functionUses: 0
    functionsReached:
    - main_imsg_compose_both
    - DEBUG_ON
    - strcmp
    - DEBUG_OFF
    linkageType: ''
    returnType: int
    signature: "int ldp_vty_debug(struct vty *vty, const char *negate, const char
      *type_str,\n    const char *dir_str, const char *all)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:109,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:111,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:112,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:113,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:114,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:115,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:116,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:117,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:118,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:119,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:120,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:121,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:122,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:124,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:125,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:126,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:127,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:129,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:130,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:131,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:132,1
    - Dst: LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:133,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:134,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:135,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 138
    functionName: ldp_vty_show_debugging
    functionSourceFile: /src/frr/ldpd/ldp_debug.c
    functionUses: 0
    functionsReached:
    - LDP_DEBUG
    - vty_out
    linkageType: ''
    returnType: int
    signature: int ldp_vty_show_debugging(struct vty *vty)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:145,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:146,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:150,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:151,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:155,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:156,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:160,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:161,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:165,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:166,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:170,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:171,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:173,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:174,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:178,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:179,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:181,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:182,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:186,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:187,1
    - Dst: CONF_LDP_DEBUG
      Src: /src/frr/ldpd/ldp_debug.c:191,1
    - Dst: vty_out
      Src: /src/frr/ldpd/ldp_debug.c:192,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 197
    functionName: ldp_debug_config_write
    functionSourceFile: /src/frr/ldpd/ldp_debug.c
    functionUses: 0
    functionsReached:
    - vty_out
    - CONF_LDP_DEBUG
    linkageType: ''
    returnType: int
    signature: int ldp_debug_config_write(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: debug_msg_send
      Src: /src/frr/ldpd/init.c:27,1
    - Dst: ibuf_open
      Src: /src/frr/ldpd/init.c:31,1
    - Dst: fatal
      Src: /src/frr/ldpd/init.c:32,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:34,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/init.c:34,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:36,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/init.c:36,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:37,1
    - Dst: gen_init_prms_tlv
      Src: /src/frr/ldpd/init.c:37,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:38,1
    - Dst: gen_cap_dynamic_tlv
      Src: /src/frr/ldpd/init.c:38,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:39,1
    - Dst: gen_cap_twcard_tlv
      Src: /src/frr/ldpd/init.c:39,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:40,1
    - Dst: gen_cap_unotif_tlv
      Src: /src/frr/ldpd/init.c:40,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/init.c:42,1
    - Dst: evbuf_enqueue
      Src: /src/frr/ldpd/init.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 20
    functionDepth: 3
    functionLinenumber: 20
    functionLinenumberEnd: 47
    functionName: send_init
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 3
    functionsReached:
    - ibuf_open
    - gen_msg_hdr
    - gen_cap_dynamic_tlv
    - ibuf_free
    - gen_init_prms_tlv
    - gen_cap_twcard_tlv
    - SET_FLAG
    - gen_cap_unotif_tlv
    - gen_ldp_hdr
    - evbuf_enqueue
    - debug_msg_send
    - fatal
    linkageType: ''
    returnType: void
    signature: void send_init(struct nbr *nbr)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: debug_msg_recv
      Src: /src/frr/ldpd/init.c:57,1
    - Dst: memcpy
      Src: /src/frr/ldpd/init.c:59,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:64,1
    - Dst: memcpy
      Src: /src/frr/ldpd/init.c:67,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:68,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:69,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:72,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:73,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:76,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:77,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/init.c:80,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:81,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:82,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:96,1
    - Dst: memcpy
      Src: /src/frr/ldpd/init.c:100,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:101,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:102,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:104,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:117,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:120,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:124,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/init.c:128,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:129,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:132,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:134,1
    - Dst: log_debug
      Src: /src/frr/ldpd/init.c:136,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:141,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/init.c:145,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:146,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:149,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:151,1
    - Dst: log_debug
      Src: /src/frr/ldpd/init.c:153,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:157,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/init.c:161,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:162,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:165,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:167,1
    - Dst: log_debug
      Src: /src/frr/ldpd/init.c:169,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/init.c:173,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:173,1
    - Dst: send_notification_rtlvs
      Src: /src/frr/ldpd/init.c:174,1
    - Dst: MIN
      Src: /src/frr/ldpd/init.c:183,1
    - Dst: nbr_get_keepalive
      Src: /src/frr/ldpd/init.c:183,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:184,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:186,1
    - Dst: MIN
      Src: /src/frr/ldpd/init.c:194,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/init.c:196,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 103
    argCount: 3
    argNames:
    - nbr
    - buf
    - len
    argTypes:
    - struct nbr*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 49
    functionDepth: 9
    functionLinenumber: 49
    functionLinenumberEnd: 199
    functionName: recv_init
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 1
    functionsReached:
    - MIN
    - debug_msg_recv
    - nbr_fsm
    - send_notification_rtlvs
    - CHECK_FLAG
    - ldp_rtr_id_get
    - ntohs
    - nbr_get_keepalive
    - SET_FLAG
    - session_shutdown
    - memcpy
    - log_debug
    linkageType: ''
    returnType: int
    signature: int recv_init(struct nbr *nbr, char *buf, uint16_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/init.c:208,1
    - Dst: ibuf_open
      Src: /src/frr/ldpd/init.c:211,1
    - Dst: fatal
      Src: /src/frr/ldpd/init.c:212,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:214,1
    - Dst: gen_ldp_hdr
      Src: /src/frr/ldpd/init.c:214,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:216,1
    - Dst: gen_msg_hdr
      Src: /src/frr/ldpd/init.c:216,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:220,1
    - Dst: gen_cap_twcard_tlv
      Src: /src/frr/ldpd/init.c:220,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:223,1
    - Dst: gen_cap_unotif_tlv
      Src: /src/frr/ldpd/init.c:223,1
    - Dst: fatalx
      Src: /src/frr/ldpd/init.c:234,1
    - Dst: ibuf_free
      Src: /src/frr/ldpd/init.c:238,1
    - Dst: evbuf_enqueue
      Src: /src/frr/ldpd/init.c:242,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/init.c:243,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - nbr
    - capability
    - enable
    argTypes:
    - struct nbr*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 201
    functionDepth: 9
    functionLinenumber: 201
    functionLinenumberEnd: 245
    functionName: send_capability
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 0
    functionsReached:
    - nbr_fsm
    - fatalx
    - ibuf_open
    - gen_msg_hdr
    - gen_cap_twcard_tlv
    - SET_FLAG
    - gen_cap_unotif_tlv
    - gen_ldp_hdr
    - evbuf_enqueue
    - ibuf_free
    - fatal
    - log_debug
    linkageType: ''
    returnType: void
    signature: void send_capability(struct nbr *nbr, uint16_t capability, int enable)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/init.c:254,1
    - Dst: memcpy
      Src: /src/frr/ldpd/init.c:256,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:268,1
    - Dst: memcpy
      Src: /src/frr/ldpd/init.c:272,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:273,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:274,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:276,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:285,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/init.c:289,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:290,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:293,1
    - Dst: memcpy
      Src: /src/frr/ldpd/init.c:295,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:298,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/init.c:300,1
    - Dst: log_debug
      Src: /src/frr/ldpd/init.c:302,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:307,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/init.c:311,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/init.c:312,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:315,1
    - Dst: memcpy
      Src: /src/frr/ldpd/init.c:317,1
    - Dst: SET_FLAG
      Src: /src/frr/ldpd/init.c:320,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ldpd/init.c:322,1
    - Dst: log_debug
      Src: /src/frr/ldpd/init.c:324,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/init.c:338,1
    - Dst: ntohs
      Src: /src/frr/ldpd/init.c:338,1
    - Dst: send_notification_rtlvs
      Src: /src/frr/ldpd/init.c:339,1
    - Dst: nbr_fsm
      Src: /src/frr/ldpd/init.c:348,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 65
    argCount: 3
    argNames:
    - nbr
    - buf
    - len
    argTypes:
    - struct nbr*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 247
    functionDepth: 9
    functionLinenumber: 247
    functionLinenumberEnd: 351
    functionName: recv_capability
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 1
    functionsReached:
    - nbr_fsm
    - send_notification_rtlvs
    - CHECK_FLAG
    - ntohs
    - SET_FLAG
    - UNSET_FLAG
    - session_shutdown
    - memcpy
    - log_debug
    linkageType: ''
    returnType: int
    signature: int recv_capability(struct nbr *nbr, char *buf, uint16_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/init.c:358,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:359,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:360,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:361,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:362,1
    - Dst: nbr_get_keepalive
      Src: /src/frr/ldpd/init.c:362,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/init.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - nbr
    argTypes:
    - struct ibuf*
    - struct nbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 353
    functionDepth: 3
    functionLinenumber: 353
    functionLinenumberEnd: 370
    functionName: gen_init_prms_tlv
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 1
    functionsReached:
    - nbr_get_keepalive
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_init_prms_tlv(struct ibuf *buf, struct nbr *nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/init.c:377,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:378,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:379,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/init.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - buf
    argTypes:
    - struct ibuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 384
    functionName: gen_cap_dynamic_tlv
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 1
    functionsReached:
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_cap_dynamic_tlv(struct ibuf *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/init.c:391,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:392,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:393,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/init.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - enable
    argTypes:
    - struct ibuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 386
    functionDepth: 2
    functionLinenumber: 386
    functionLinenumberEnd: 398
    functionName: gen_cap_twcard_tlv
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 2
    functionsReached:
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_cap_twcard_tlv(struct ibuf *buf, int enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ldpd/init.c:405,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:406,1
    - Dst: htons
      Src: /src/frr/ldpd/init.c:407,1
    - Dst: ibuf_add
      Src: /src/frr/ldpd/init.c:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - enable
    argTypes:
    - struct ibuf*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 400
    functionDepth: 2
    functionLinenumber: 400
    functionLinenumberEnd: 412
    functionName: gen_cap_unotif_tlv
    functionSourceFile: /src/frr/ldpd/init.c
    functionUses: 2
    functionsReached:
    - ibuf_add
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: int gen_cap_unotif_tlv(struct ibuf *buf, int enable)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: adj_get_af
      Src: /src/frr/ldpd/adjacency.c:35,1
    - Dst: adj_get_af
      Src: /src/frr/ldpd/adjacency.c:35,1
    - Dst: adj_get_af
      Src: /src/frr/ldpd/adjacency.c:37,1
    - Dst: adj_get_af
      Src: /src/frr/ldpd/adjacency.c:37,1
    - Dst: ntohl
      Src: /src/frr/ldpd/adjacency.c:40,1
    - Dst: ntohl
      Src: /src/frr/ldpd/adjacency.c:40,1
    - Dst: ntohl
      Src: /src/frr/ldpd/adjacency.c:42,1
    - Dst: ntohl
      Src: /src/frr/ldpd/adjacency.c:42,1
    - Dst: if_cmp_name_func
      Src: /src/frr/ldpd/adjacency.c:52,1
    - Dst: if_cmp_name_func
      Src: /src/frr/ldpd/adjacency.c:55,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/adjacency.c:58,1
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/adjacency.c:61,1
    - Dst: fatalx
      Src: /src/frr/ldpd/adjacency.c:64,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct adj*
    - struct adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 68
    functionName: adj_compare
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 0
    functionsReached:
    - fatalx
    - ldp_addrcmp
    - if_cmp_name_func
    - adj_get_af
    - ntohl
    linkageType: ''
    returnType: int
    signature: int adj_compare(const struct adj *a, const struct adj *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/adjacency.c:76,1
    - Dst: log_hello_src
      Src: /src/frr/ldpd/adjacency.c:77,1
    - Dst: calloc
      Src: /src/frr/ldpd/adjacency.c:79,1
    - Dst: fatal
      Src: /src/frr/ldpd/adjacency.c:80,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/adjacency.c:87,1
    - Dst: RB_INSERT
      Src: /src/frr/ldpd/adjacency.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - lsr_id
    - source
    - addr
    argTypes:
    - struct in_addr
    - struct hello_source*
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 70
    functionDepth: 9
    functionLinenumber: 70
    functionLinenumberEnd: 99
    functionName: adj_new
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 1
    functionsReached:
    - RB_INSERT
    - calloc
    - log_hello_src
    - fatal
    - log_debug
    linkageType: ''
    returnType: struct adj
    signature: "struct adj *\nadj_new(struct in_addr lsr_id, struct hello_source *source,\n
      \   union ldpd_addr *addr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_debug
      Src: /src/frr/ldpd/adjacency.c:106,1
    - Dst: log_hello_src
      Src: /src/frr/ldpd/adjacency.c:107,1
    - Dst: af_name
      Src: /src/frr/ldpd/adjacency.c:107,1
    - Dst: adj_get_af
      Src: /src/frr/ldpd/adjacency.c:107,1
    - Dst: adj_stop_itimer
      Src: /src/frr/ldpd/adjacency.c:109,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/adjacency.c:111,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/adjacency.c:113,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/adjacency.c:116,1
    - Dst: ldp_sync_fsm_adj_event
      Src: /src/frr/ldpd/adjacency.c:119,1
    - Dst: free
      Src: /src/frr/ldpd/adjacency.c:126,1
    - Dst: nbr_adj_count
      Src: /src/frr/ldpd/adjacency.c:133,1
    - Dst: session_shutdown
      Src: /src/frr/ldpd/adjacency.c:134,1
    - Dst: nbr_del
      Src: /src/frr/ldpd/adjacency.c:135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - adj
    - notif_status
    argTypes:
    - struct adj*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 101
    functionDepth: 9
    functionLinenumber: 101
    functionLinenumberEnd: 137
    functionName: adj_del
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 4
    functionsReached:
    - adj_stop_itimer
    - af_name
    - nbr_del
    - nbr_adj_count
    - RB_REMOVE
    - free
    - adj_get_af
    - ldp_sync_fsm_adj_event
    - session_shutdown
    - log_hello_src
    - log_debug
    linkageType: ''
    returnType: void
    signature: void adj_del(struct adj *adj, uint32_t notif_status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/adjacency.c:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - lsr_id
    - source
    argTypes:
    - struct in_addr
    - struct hello_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 146
    functionName: adj_find
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 6
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct adj
    signature: 'struct adj *

      adj_find(struct in_addr lsr_id, struct hello_source *source)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fatalx
      Src: /src/frr/ldpd/adjacency.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 159
    functionName: adj_get_af
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 4
    functionsReached:
    - fatalx
    linkageType: ''
    returnType: int
    signature: int adj_get_af(const struct adj *adj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/adjacency.c:166,1
    - Dst: log_debug
      Src: /src/frr/ldpd/adjacency.c:170,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/adjacency.c:173,1
    - Dst: tnbr_del
      Src: /src/frr/ldpd/adjacency.c:177,1
    - Dst: adj_del
      Src: /src/frr/ldpd/adjacency.c:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 164
    functionDepth: 10
    functionLinenumber: 164
    functionLinenumberEnd: 183
    functionName: adj_itimer
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 0
    functionsReached:
    - tnbr_del
    - CHECK_FLAG
    - adj_del
    - EVENT_ARG
    - log_debug
    linkageType: ''
    returnType: void
    signature: void adj_itimer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/adjacency.c:188,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/adjacency.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 192
    functionName: adj_start_itimer
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void adj_start_itimer(struct adj *adj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/adjacency.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: adj_stop_itimer
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 2
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void adj_stop_itimer(struct adj *adj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldp_addrcmp
      Src: /src/frr/ldpd/adjacency.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct tnbr*
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: tnbr_compare
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 0
    functionsReached:
    - ldp_addrcmp
    linkageType: ''
    returnType: int
    signature: int tnbr_compare(const struct tnbr *a, const struct tnbr *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/frr/ldpd/adjacency.c:218,1
    - Dst: fatal
      Src: /src/frr/ldpd/adjacency.c:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - af
    - addr
    argTypes:
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 226
    functionName: tnbr_new
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 5
    functionsReached:
    - fatal
    - calloc
    linkageType: ''
    returnType: struct tnbr
    signature: 'struct tnbr *

      tnbr_new(int af, union ldpd_addr *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tnbr_stop
      Src: /src/frr/ldpd/adjacency.c:231,1
    - Dst: RB_REMOVE
      Src: /src/frr/ldpd/adjacency.c:232,1
    - Dst: free
      Src: /src/frr/ldpd/adjacency.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - xconf
    - tnbr
    argTypes:
    - struct ldpd_conf*
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: tnbr_del
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 1
    functionsReached:
    - free
    - tnbr_stop
    - RB_REMOVE
    linkageType: ''
    returnType: void
    signature: void tnbr_del(struct ldpd_conf *xconf, struct tnbr *tnbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FIND
      Src: /src/frr/ldpd/adjacency.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - xconf
    - af
    - addr
    argTypes:
    - struct ldpd_conf*
    - int
    - union ldpd_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: tnbr_find
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 8
    functionsReached:
    - RB_FIND
    linkageType: ''
    returnType: struct tnbr
    signature: 'struct tnbr *

      tnbr_find(struct ldpd_conf *xconf, int af, union ldpd_addr *addr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ldpd/adjacency.c:248,1
    - Dst: tnbr_del
      Src: /src/frr/ldpd/adjacency.c:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - xconf
    - tnbr
    argTypes:
    - struct ldpd_conf*
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 255
    functionName: tnbr_check
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 5
    functionsReached:
    - tnbr_del
    - CHECK_FLAG
    linkageType: ''
    returnType: struct tnbr
    signature: 'struct tnbr *

      tnbr_check(struct ldpd_conf *xconf, struct tnbr *tnbr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_hello
      Src: /src/frr/ldpd/adjacency.c:260,1
    - Dst: tnbr_start_hello_timer
      Src: /src/frr/ldpd/adjacency.c:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tnbr
    argTypes:
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 263
    functionName: tnbr_start
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 0
    functionsReached:
    - tnbr_start_hello_timer
    - send_hello
    linkageType: ''
    returnType: void
    signature: void tnbr_start(struct tnbr *tnbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tnbr_stop_hello_timer
      Src: /src/frr/ldpd/adjacency.c:268,1
    - Dst: adj_del
      Src: /src/frr/ldpd/adjacency.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tnbr
    argTypes:
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 265
    functionDepth: 10
    functionLinenumber: 265
    functionLinenumberEnd: 272
    functionName: tnbr_stop
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 1
    functionsReached:
    - tnbr_stop_hello_timer
    - adj_del
    linkageType: ''
    returnType: void
    signature: void tnbr_stop(struct tnbr *tnbr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ldp_af_global_get
      Src: /src/frr/ldpd/adjacency.c:279,1
    - Dst: ldp_rtr_id_get
      Src: /src/frr/ldpd/adjacency.c:284,1
    - Dst: tnbr_start
      Src: /src/frr/ldpd/adjacency.c:293,1
    - Dst: tnbr_stop
      Src: /src/frr/ldpd/adjacency.c:298,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - tnbr
    argTypes:
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 274
    functionDepth: 11
    functionLinenumber: 274
    functionLinenumberEnd: 300
    functionName: tnbr_update
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 4
    functionsReached:
    - tnbr_start
    - ldp_rtr_id_get
    - tnbr_stop
    - ldp_af_global_get
    linkageType: ''
    returnType: void
    signature: void tnbr_update(struct tnbr *tnbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/ldpd/adjacency.c:308,1
    - Dst: tnbr_update
      Src: /src/frr/ldpd/adjacency.c:310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - af
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 302
    functionDepth: 12
    functionLinenumber: 302
    functionLinenumberEnd: 311
    functionName: tnbr_update_all
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 2
    functionsReached:
    - RB_FOREACH
    - tnbr_update
    linkageType: ''
    returnType: void
    signature: void tnbr_update_all(int af)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/adjacency.c:316,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/adjacency.c:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tnbr
    argTypes:
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 320
    functionName: tnbr_get_hello_holdtime
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 2
    functionsReached:
    - ldp_af_conf_get
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t tnbr_get_hello_holdtime(struct tnbr *tnbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/adjacency.c:325,1
    - Dst: ldp_af_conf_get
      Src: /src/frr/ldpd/adjacency.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tnbr
    argTypes:
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 329
    functionName: tnbr_get_hello_interval
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 0
    functionsReached:
    - ldp_af_conf_get
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t tnbr_get_hello_interval(struct tnbr *tnbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ldpd/adjacency.c:336,1
    - Dst: send_hello
      Src: /src/frr/ldpd/adjacency.c:339,1
    - Dst: tnbr_start_hello_timer
      Src: /src/frr/ldpd/adjacency.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 341
    functionName: tnbr_hello_timer
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 0
    functionsReached:
    - tnbr_start_hello_timer
    - send_hello
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void tnbr_hello_timer(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/adjacency.c:346,1
    - Dst: event_add_timer
      Src: /src/frr/ldpd/adjacency.c:348,1
    - Dst: tnbr_get_hello_interval
      Src: /src/frr/ldpd/adjacency.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tnbr
    argTypes:
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 343
    functionDepth: 3
    functionLinenumber: 343
    functionLinenumberEnd: 350
    functionName: tnbr_start_hello_timer
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    - tnbr_get_hello_interval
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void tnbr_start_hello_timer(struct tnbr *tnbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ldpd/adjacency.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tnbr
    argTypes:
    - struct tnbr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 356
    functionName: tnbr_stop_hello_timer
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 1
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void tnbr_stop_hello_timer(struct tnbr *tnbr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: adj_get_af
      Src: /src/frr/ldpd/adjacency.c:363,1
    - Dst: memcpy
      Src: /src/frr/ldpd/adjacency.c:368,1
    - Dst: event_timer_remain_second
      Src: /src/frr/ldpd/adjacency.c:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - adj
    argTypes:
    - struct adj*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 383
    functionName: adj_to_ctl
    functionSourceFile: /src/frr/ldpd/adjacency.c
    functionUses: 5
    functionsReached:
    - event_timer_remain_second
    - adj_get_af
    - memcpy
    linkageType: ''
    returnType: struct ctl_adj
    signature: 'struct ctl_adj *

      adj_to_ctl(struct adj *adj)'
  - 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: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: CONF_DEBUG_ON
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: CONF_DEBUG_OFF
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: TERM_DEBUG_ON
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: TERM_DEBUG_OFF
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TERM_DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: DEBUG_ON
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_ON(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: DEBUG_OFF
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUG_OFF(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: LDP_DEBUG
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDP_DEBUG(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: CONF_LDP_DEBUG
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONF_LDP_DEBUG(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: debug_hello_recv
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_hello_recv(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: debug_hello_send
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_hello_send(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: debug_err
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_err(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: debug_evt
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_evt(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: debug_labels
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_labels(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: debug_msg_recv
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_msg_recv(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: debug_msg_send
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_msg_send(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - out
    - ','
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: debug_msg
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_msg(out, emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: debug_kalive_recv
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_kalive_recv(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: debug_kalive_send
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_kalive_send(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: debug_zebra_in
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_zebra_in(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: debug_zebra_out
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_zebra_out(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - emsg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 141
    functionName: debug_evt_ldp_sync
    functionSourceFile: /src/frr/ldpd/ldp_debug.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: debug_evt_ldp_sync(emsg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: ROUTEMAP_NAME
    functionSourceFile: /src/frr/ospf6d/ospf6_top.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTEMAP_NAME(R)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: ROUTEMAP
    functionSourceFile: /src/frr/ospf6d/ospf6_top.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTEMAP(R)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 17
    functionName: OSPF6_DEBUG_ABR_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ABR_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: OSPF6_DEBUG_ABR_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ABR_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: OSPF6_ABR_SUMMARY_METRIC
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ABR_SUMMARY_METRIC(E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - E
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: OSPF6_ABR_SUMMARY_METRIC_SET
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ABR_SUMMARY_METRIC_SET(E, C)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - range
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: OSPF6_ABR_RANGE_CLEAR_COST
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ABR_RANGE_CLEAR_COST(range)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - o
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: IS_OSPF6_ABR
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_ABR(o)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: OSPF6_DEBUG_AUTH_TX_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_AUTH_TX_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: OSPF6_DEBUG_AUTH_TX_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_AUTH_TX_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: OSPF6_DEBUG_AUTH_RX_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_AUTH_RX_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: OSPF6_DEBUG_AUTH_RX_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_AUTH_RX_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 38
    functionName: OSPF6_MESSAGE_WRITE_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_network.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_MESSAGE_WRITE_ON(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: ospf6_enable_rtr_hash_key
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf6_enable_rtr_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: ospf6_enable_rtr_hash_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ospf6_enable_rtr_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: ospf6_enable_rtr_hash_alloc
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *ospf6_enable_rtr_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: ospf6_disable_rtr_hash_free
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_disable_rtr_hash_free(void *rtr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: ospf6_enable_rtr_hash_destroy
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void ospf6_enable_rtr_hash_destroy(struct ospf6 *ospf6)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:138,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:140,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:141,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:145,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:147,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:148,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:151,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:153,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:155,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:159,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:162,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:163,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:173,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:180,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:181,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 3
    argNames:
    - lsa
    - interval
    - reason
    argTypes:
    - struct ospf6_lsa*
    - uint32_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 186
    functionName: ospf6_extract_grace_lsa_fields
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - ntohs
    - zlog_debug
    - TLV_HDR_NEXT
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: int
    signature: "int ospf6_extract_grace_lsa_fields(struct ospf6_lsa *lsa,\n\t\t\t\t\t
      \ uint32_t *interval, uint8_t *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:200,1
    - Dst: ospf6_gr_helper_exit
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 203
    functionName: ospf6_handle_grace_timer_expiry
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - ospf6_gr_helper_exit
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf6_handle_grace_timer_expiry(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:220,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:227,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:230,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:231,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:233,1
    - Dst: ospf6_process_grace_lsa
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:261,1
    - Dst: ospf6_extract_grace_lsa_fields
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:271,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:275,1
    - Dst: OSPF6_GR_NOT_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:276,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:280,1
    - Dst: hash_lookup
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:293,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:296,1
    - Dst: OSPF6_GR_NOT_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:301,1
    - Dst: IS_NBR_STATE_FULL
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:308,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:310,1
    - Dst: OSPF6_GR_NOT_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:315,1
    - Dst: OSPF6_GR_IS_PLANNED_RESTART
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:322,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:324,1
    - Dst: OSPF6_GR_NOT_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:329,1
    - Dst: ospf6_check_chg_in_rxmt_list
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:337,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:339,1
    - Dst: OSPF6_GR_NOT_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:344,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:348,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:350,1
    - Dst: OSPF6_GR_NOT_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:355,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:360,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:376,1
    - Dst: OSPF6_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:384,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:385,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:391,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:396,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:414,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:418,1
    - Dst: ospf6_gr_helper_exit
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:442,1
    - Dst: OSPF6_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:453,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:457,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:476,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:488,1
    - Dst: dr_election
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:493,1
    - Dst: OSPF6_ROUTER_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:496,1
    - Dst: OSPF6_NETWORK_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:500,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 1
    argNames:
    - nbr
    argTypes:
    - struct ospf6_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 216
    functionDepth: 4
    functionLinenumber: 216
    functionLinenumberEnd: 501
    functionName: ospf6_check_chg_in_rxmt_list
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 1
    functionsReached:
    - ospf6_lsa_unlock
    - ospf6_process_grace_lsa
    - ALL_LSDB
    - OSPF6_ROUTER_LSA_SCHEDULE
    - ntohs
    - hash_lookup
    - OSPF6_GR_IS_PLANNED_RESTART
    - ospf6_check_chg_in_rxmt_list
    - ospf6_gr_helper_exit
    - dr_election
    - zlog_debug
    - if
    - IS_NBR_STATE_FULL
    - OSPF6_NETWORK_LSA_SCHEDULE
    - ospf6_extract_grace_lsa_fields
    - zlog_err
    - EVENT_OFF
    - event_add_timer
    - OSPF6_GR_NOT_HELPER
    - OSPF6_GR_IS_ACTIVE_HELPER
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: bool
    signature: bool ospf6_check_chg_in_rxmt_list(struct ospf6_neighbor *nbr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_extract_grace_lsa_fields
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:529,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:533,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:538,1
    - Dst: ospf6_gr_helper_exit
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:541,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ospf6
    - lsa
    - restarter
    argTypes:
    - struct ospf6*
    - struct ospf6_lsa*
    - struct ospf6_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 542
    functionName: ospf6_process_maxage_grace_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf6_extract_grace_lsa_fields
    - ospf6_gr_helper_exit
    linkageType: ''
    returnType: void
    signature: "void ospf6_process_maxage_grace_lsa(struct ospf6 *ospf6, struct ospf6_lsa
      *lsa,\n\t\t\t\t    struct ospf6_neighbor *restarter)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:573,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:578,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:579,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:586,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:594,1
    - Dst: ospf6_gr_helper_exit
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:596,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - ospf6
    - lsa
    argTypes:
    - struct ospf6*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 600
    functionName: ospf6_helper_handle_topo_chg
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - IS_AREA_STUB
    - ospf6_gr_helper_exit
    linkageType: ''
    returnType: void
    signature: void ospf6_helper_handle_topo_chg(struct ospf6 *ospf6, struct ospf6_lsa
      *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:632,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:633,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:635,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:644,1
    - Dst: hash_lookup
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:644,1
    - Dst: ospf6_gr_helper_exit
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:650,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ospf6
    - support
    argTypes:
    - struct ospf6*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 615
    functionDepth: 4
    functionLinenumber: 615
    functionLinenumberEnd: 655
    functionName: ospf6_gr_helper_support_set
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - if
    - hash_lookup
    - ALL_LIST_ELEMENTS_RO
    - ospf6_gr_helper_exit
    linkageType: ''
    returnType: void
    signature: void ospf6_gr_helper_support_set(struct ospf6 *ospf6, bool support)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf6
    - enabled
    argTypes:
    - struct ospf6*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 670
    functionDepth: 0
    functionLinenumber: 670
    functionLinenumberEnd: 676
    functionName: ospf6_gr_helper_lsacheck_set
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf6_gr_helper_lsacheck_set(struct ospf6 *ospf6, bool enabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ospf6
    - only_planned
    argTypes:
    - struct ospf6*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 697
    functionName: ospf6_gr_helper_set_supported_onlyPlanned_restart
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ospf6_gr_helper_set_supported_onlyPlanned_restart(struct ospf6
      *ospf6,\n\t\t\t\t\t\t  bool only_planned)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ospf6
    - interval
    argTypes:
    - struct ospf6*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 715
    functionName: ospf6_gr_helper_supported_gracetime_set
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ospf6_gr_helper_supported_gracetime_set(struct ospf6 *ospf6,\n\t\t\t\t\t\t
      \   uint32_t interval)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:725,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 732
    functionName: ospf6_print_vty_helper_dis_rtr_walkcb
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int ospf6_print_vty_helper_dis_rtr_walkcb(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:743,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:745,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:747,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 735
    functionDepth: 1
    functionLinenumber: 735
    functionLinenumberEnd: 751
    functionName: ospf6_print_json_helper_dis_rtr_walkcb
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - inet_ntop
    - json_object_string_add
    - json_object_array_add
    linkageType: ''
    returnType: int
    signature: "int ospf6_print_json_helper_dis_rtr_walkcb(struct hash_bucket *bucket,\n\t\t\t\t\t\t
      \ void *arg)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1235,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1237,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1238,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1242,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1246,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1248,1
    - Dst: TLV_HDR_TOP
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1251,1
    - Dst: TLV_HDR_NEXT
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1252,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1255,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1257,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1258,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1260,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1261,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1265,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1268,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1272,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1274,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1276,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1277,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1279,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1280,1
    - Dst: TLV_SIZE
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1285,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1288,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1293,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1297,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 4
    argNames:
    - vty
    - lsa
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1224
    functionDepth: 2
    functionLinenumber: 1224
    functionLinenumberEnd: 1308
    functionName: ospf6_grace_lsa_show_info
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - TLV_HDR_TOP
    - vty_out
    - json_object_int_add
    - ntohs
    - zlog_debug
    - json_object_string_add
    - TLV_HDR_NEXT
    - ntohl
    - TLV_SIZE
    linkageType: ''
    returnType: int
    signature: "int ospf6_grace_lsa_show_info(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t\t
      \    json_object *json, bool use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1313,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1315,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1316,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1317,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1318,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1319,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1320,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1321,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1322,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1325,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1327,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1310
    functionDepth: 1
    functionLinenumber: 1310
    functionLinenumberEnd: 1329
    functionName: ospf6_gr_helper_config_init
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - install_element
    - ospf6_install_lsa_handler
    linkageType: ''
    returnType: void
    signature: void ospf6_gr_helper_config_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1344,1
    - Dst: hash_create
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1341
    functionDepth: 4
    functionLinenumber: 1341
    functionLinenumberEnd: 1356
    functionName: ospf6_gr_helper_init
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - hash_create
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf6_gr_helper_init(struct ospf6 *ospf6)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1371,1
    - Dst: ospf6_enable_rtr_hash_destroy
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1367
    functionDepth: 3
    functionLinenumber: 1367
    functionLinenumberEnd: 1374
    functionName: ospf6_gr_helper_deinit
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf6_enable_rtr_hash_destroy
    linkageType: ''
    returnType: void
    signature: void ospf6_gr_helper_deinit(struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - backet
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1376
    functionDepth: 2
    functionLinenumber: 1376
    functionLinenumberEnd: 1384
    functionName: ospf6_cfg_write_helper_enable_rtr_walkcb
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int ospf6_cfg_write_helper_enable_rtr_walkcb(struct hash_bucket *backet,\n\t\t\t\t\t\t
      \   void *arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1389,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1392,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1395,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1399,1
    - Dst: OSPF6_HELPER_ENABLE_RTR_COUNT
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1403,1
    - Dst: hash_walk
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - vty
    - ospf6
    argTypes:
    - struct vty*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1386
    functionDepth: 2
    functionLinenumber: 1386
    functionLinenumberEnd: 1409
    functionName: config_write_ospf6_gr_helper
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - hash_walk
    - OSPF6_HELPER_ENABLE_RTR_COUNT
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_gr_helper(struct vty *vty, struct ospf6 *ospf6)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr_helper.c:1414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1411
    functionDepth: 2
    functionLinenumber: 1411
    functionLinenumberEnd: 1416
    functionName: config_write_ospf6_debug_gr_helper
    functionSourceFile: /src/frr/ospf6d/ospf6_gr_helper.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_gr_helper(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: IS_OSPF6_DEBUG_LSA
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_LSA(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: IS_OSPF6_DEBUG_ORIGINATE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_ORIGINATE(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: IS_OSPF6_DEBUG_EXAMIN
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_EXAMIN(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: IS_OSPF6_DEBUG_LSA_TYPE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_LSA_TYPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: IS_OSPF6_DEBUG_ORIGINATE_TYPE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_ORIGINATE_TYPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: IS_OSPF6_DEBUG_EXAMIN_TYPE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_EXAMIN_TYPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: IS_OSPF6_DEBUG_FLOOD_TYPE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_FLOOD_TYPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: OSPF6_LSA_SCOPE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_SCOPE(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: OSPF6_LSA_HEADER_END
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_HEADER_END(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: OSPF6_LSA_SIZE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_SIZE(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: OSPF6_LSA_END
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_END(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: OSPF6_LSA_IS_TYPE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_TYPE(t, L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L1
    - ','
    - L2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: OSPF6_LSA_IS_SAME
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_SAME(L1, L2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - t
    - ','
    - i
    - ','
    - a
    - ','
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: OSPF6_LSA_IS_MATCH
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_MATCH(t, i, a, L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L1
    - ','
    - L2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: OSPF6_LSA_IS_DIFFER
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_DIFFER(L1, L2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: OSPF6_LSA_IS_MAXAGE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_MAXAGE(L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - L1
    - ','
    - L2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: OSPF6_LSA_IS_CHANGED
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_CHANGED(L1, L2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - L
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: OSPF6_LSA_IS_SEQWRAP
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_SEQWRAP(L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: OSPF6_LSA_IS_KNOWN
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LSA_IS_KNOWN(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - debug
    - ','
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 169
    functionName: CONTINUE_IF_ADDRESS_LINKLOCAL
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONTINUE_IF_ADDRESS_LINKLOCAL(debug, addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - debug
    - ','
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 176
    functionName: CONTINUE_IF_ADDRESS_UNSPECIFIED
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONTINUE_IF_ADDRESS_UNSPECIFIED(debug, addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - debug
    - ','
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: CONTINUE_IF_ADDRESS_LOOPBACK
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONTINUE_IF_ADDRESS_LOOPBACK(debug, addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - debug
    - ','
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: CONTINUE_IF_ADDRESS_V4COMPAT
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONTINUE_IF_ADDRESS_V4COMPAT(debug, addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - debug
    - ','
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: CONTINUE_IF_ADDRESS_V4MAPPED
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CONTINUE_IF_ADDRESS_V4MAPPED(debug, addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: CHECK_LSA_TOPO_CHG_ELIGIBLE
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LSA_TOPO_CHG_ELIGIBLE(type)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - o_path
    - r_path
    argTypes:
    - struct ospf6_path*
    - struct ospf6_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: ospf6_ls_origin_same
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ospf6_ls_origin_same(struct ospf6_path *o_path, struct ospf6_path
      *r_path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_abr.c:58,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:60,1
    - Dst: IS_AREA_ENABLED
      Src: /src/frr/ospf6d/ospf6_abr.c:61,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:70,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:71,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:75,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:76,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - o
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 79
    functionName: ospf6_check_and_set_router_abr
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - IS_AREA_ENABLED
    - zlog_debug
    - SET_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: bool
    signature: bool ospf6_check_and_set_router_abr(struct ospf6 *o)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_interface_lookup_by_ifindex
      Src: /src/frr/ospf6d/ospf6_abr.c:86,1
    - Dst: ospf6_route_get_first_nh_index
      Src: /src/frr/ospf6d/ospf6_abr.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - route
    - area
    argTypes:
    - struct ospf6_route*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 92
    functionName: ospf6_abr_nexthops_belong_to_area
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - ospf6_route_get_first_nh_index
    - ospf6_interface_lookup_by_ifindex
    linkageType: ''
    returnType: int
    signature: "int ospf6_abr_nexthops_belong_to_area(struct ospf6_route *route,\n\t\t\t\t\t
      \    struct ospf6_area *area)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_abr.c:99,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_abr.c:102,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_abr.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - summary
    - summary_table
    - old
    argTypes:
    - struct ospf6_route*
    - struct ospf6_route_table*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 104
    functionName: ospf6_abr_delete_route
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - ospf6_route_remove
    - ospf6_lsa_purge
    - OSPF6_LSA_IS_MAXAGE
    linkageType: ''
    returnType: void
    signature: "void ospf6_abr_delete_route(struct ospf6_route *summary,\n\t\t\t\t
      \  struct ospf6_route_table *summary_table,\n\t\t\t\t   struct ospf6_lsa *old)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_abr.c:111,1
    - Dst: OSPF6_ROUTER_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_abr.c:113,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_abr.c:124,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_abr.c:135,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_abr.c:188,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_abr.c:190,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:195,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:202,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:214,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:222,1
    - Dst: ospf6_area_lookup
      Src: /src/frr/ospf6d/ospf6_abr.c:232,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_abr.c:233,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospf6d/ospf6_abr.c:236,1
    - Dst: access_list_apply
      Src: /src/frr/ospf6d/ospf6_abr.c:237,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospf6d/ospf6_abr.c:237,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:241,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospf6d/ospf6_abr.c:248,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospf6d/ospf6_abr.c:249,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospf6d/ospf6_abr.c:249,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:253,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospf6d/ospf6_abr.c:260,1
    - Dst: access_list_apply
      Src: /src/frr/ospf6d/ospf6_abr.c:261,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospf6d/ospf6_abr.c:261,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:264,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospf6d/ospf6_abr.c:271,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospf6d/ospf6_abr.c:272,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospf6d/ospf6_abr.c:272,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:275,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_abr.c:283,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_abr.c:285,1
    - Dst: ospf6_abr_nexthops_belong_to_area
      Src: /src/frr/ospf6d/ospf6_abr.c:292,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:294,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_abr.c:301,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:304,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_abr.c:307,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_abr.c:314,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:317,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_abr.c:320,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_abr.c:324,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_abr.c:329,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:330,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:332,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_abr.c:341,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:342,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:344,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:353,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:359,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:361,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:366,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:369,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:372,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_abr.c:376,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_abr.c:377,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_abr.c:383,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_abr.c:383,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:385,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:388,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:395,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:397,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:417,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_abr.c:420,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:428,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:430,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:432,1
    - Dst: ospf6_area_lookup
      Src: /src/frr/ospf6d/ospf6_abr.c:438,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_abr.c:439,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_abr.c:441,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:443,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:446,1
    - Dst: ospf6_area_lookup
      Src: /src/frr/ospf6d/ospf6_abr.c:460,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_abr.c:461,1
    - Dst: ospf6_route_lookup_bestmatch
      Src: /src/frr/ospf6d/ospf6_abr.c:462,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:469,1
    - Dst: IS_AREA_TRANSIT
      Src: /src/frr/ospf6d/ospf6_abr.c:471,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:473,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:480,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:489,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:491,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:493,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:498,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_abr.c:500,1
    - Dst: ospf6_abr_delete_route
      Src: /src/frr/ospf6d/ospf6_abr.c:501,1
    - Dst: ospf6_route_copy
      Src: /src/frr/ospf6d/ospf6_abr.c:509,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_abr.c:514,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_abr.c:516,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_abr.c:521,1
    - Dst: ospf6_find_inter_prefix_lsa
      Src: /src/frr/ospf6d/ospf6_abr.c:524,1
    - Dst: ospf6_new_ls_id
      Src: /src/frr/ospf6d/ospf6_abr.c:529,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 5
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf6_area*
    assertStmts:
    - condition: (route_area)
      pos:
        line_end: 460
        line_start: 460
        source_file: /src/frr/ospf6d/ospf6_abr.c
    - condition: (route_area)
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/frr/ospf6d/ospf6_abr.c
    - condition: (route_area)
      pos:
        line_end: 438
        line_start: 438
        source_file: /src/frr/ospf6d/ospf6_abr.c
    constantsTouched: []
    func_position:
      end: 535
      start: 106
    functionDepth: 4
    functionLinenumber: 106
    functionLinenumberEnd: 535
    functionName: ospf6_abr_enable_area
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - IS_AREA_TRANSIT
    - ospf6_abr_delete_route
    - htons
    - OSPF6_ROUTER_LSA_SCHEDULE
    - ospf6_route_lookup
    - ospf6_abr_nexthops_belong_to_area
    - IS_OSPF6_DEBUG_ORIGINATE
    - access_list_apply
    - ospf6_find_inter_prefix_lsa
    - ospf6_route_head
    - ospf6_new_ls_id
    - PREFIX_LIST_OUT
    - zlog_debug
    - PREFIX_LIST_IN
    - assert
    - ADV_ROUTER_IN_PREFIX
    - ospf6_area_lookup
    - IMPORT_LIST
    - prefix_list_apply
    - UNSET_FLAG
    - EXPORT_LIST
    - ospf6_route_remove
    - ospf6_route_lookup_bestmatch
    - ospf6_lsa_purge
    - ospf6_route_copy
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_enable_area(struct ospf6_area *area)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_abr.c:621,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_abr.c:622,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_abr.c:623,1
    - Dst: OSPF6_ABR_RANGE_CLEAR_COST
      Src: /src/frr/ospf6d/ospf6_abr.c:624,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_abr.c:625,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_abr.c:626,1
    - Dst: OSPF6_ABR_RANGE_CLEAR_COST
      Src: /src/frr/ospf6d/ospf6_abr.c:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 628
    functionName: ospf6_abr_range_reset_cost
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - ospf6_route_next
    - ALL_LIST_ELEMENTS
    - ospf6_route_head
    - OSPF6_ABR_RANGE_CLEAR_COST
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_range_reset_cost(struct ospf6 *ospf6)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_match_head
      Src: /src/frr/ospf6d/ospf6_abr.c:637,1
    - Dst: ospf6_route_match_next
      Src: /src/frr/ospf6d/ospf6_abr.c:638,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:639,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:643,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:647,1
    - Dst: MAX
      Src: /src/frr/ospf6d/ospf6_abr.c:651,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 13
    argCount: 2
    argNames:
    - range
    - o
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 655
    functionName: ospf6_abr_range_compute_cost
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - ospf6_route_match_head
    - CHECK_FLAG
    - ospf6_route_match_next
    - MAX
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t ospf6_abr_range_compute_cost(struct ospf6_route *range,\n\t\t\t\t\t\t
      \   struct ospf6 *o)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:662,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:663,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:665,1
    - Dst: OSPF6_PATH_COST_IS_CONFIGURED
      Src: /src/frr/ospf6d/ospf6_abr.c:671,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:674,1
    - Dst: OSPF6_PATH_COST_IS_CONFIGURED
      Src: /src/frr/ospf6d/ospf6_abr.c:676,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:679,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:682,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_abr.c:684,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - range
    - cost
    argTypes:
    - struct ospf6_route*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 690
    functionName: ospf6_abr_range_summary_needs_update
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - UNSET_FLAG
    - OSPF6_PATH_COST_IS_CONFIGURED
    - SET_FLAG
    linkageType: ''
    returnType: int
    signature: int ospf6_abr_range_summary_needs_update(struct ospf6_route *range,
      uint32_t cost)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_abr.c:1563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1560
    functionDepth: 2
    functionLinenumber: 1560
    functionLinenumberEnd: 1565
    functionName: config_write_ospf6_debug_abr
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_abr(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_abr.c:1569,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_abr.c:1570,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_abr.c:1571,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_abr.c:1572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1567
    functionDepth: 1
    functionLinenumber: 1567
    functionLinenumberEnd: 1573
    functionName: install_element_ospf6_debug_abr
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_abr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_abr.c:1593,1
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_abr.c:1594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1591
    functionDepth: 1
    functionLinenumber: 1591
    functionLinenumberEnd: 1595
    functionName: ospf6_abr_init
    functionSourceFile: /src/frr/ospf6d/ospf6_abr.c
    functionUses: 0
    functionsReached:
    - ospf6_install_lsa_handler
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: OSPF6_DEBUG_MESSAGE_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_message.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_MESSAGE_ON(type, level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: OSPF6_DEBUG_MESSAGE_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_message.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_MESSAGE_OFF(type, level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 39
    functionName: IS_OSPF6_DEBUG_MESSAGE
    functionSourceFile: /src/frr/ospf6d/ospf6_message.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_MESSAGE(t, e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: IS_OSPF6_DEBUG_MESSAGE_ENABLED
    functionSourceFile: /src/frr/ospf6d/ospf6_message.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_MESSAGE_ENABLED(type, e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - H
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: OSPF6_MESSAGE_END
    functionSourceFile: /src/frr/ospf6d/ospf6_message.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_MESSAGE_END(H)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:46,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:47,1
    - Dst: ospf6_vrf_id_to_name
      Src: /src/frr/ospf6d/ospf6_zebra.c:48,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ospf6d/ospf6_zebra.c:51,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: ospf6_zebra_vrf_register
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_ZEBRA
    - zlog_debug
    - ospf6_vrf_id_to_name
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void ospf6_zebra_vrf_register(struct ospf6 *ospf6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:61,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:62,1
    - Dst: ospf6_vrf_id_to_name
      Src: /src/frr/ospf6d/ospf6_zebra.c:64,1
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/ospf6d/ospf6_zebra.c:69,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 71
    functionName: ospf6_zebra_vrf_deregister
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_send_dereg_requests
    - IS_OSPF6_DEBUG_ZEBRA
    - zlog_debug
    - ospf6_vrf_id_to_name
    linkageType: ''
    returnType: void
    signature: void ospf6_zebra_vrf_deregister(struct ospf6 *ospf6)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zebra_router_id_update_read
      Src: /src/frr/ospf6d/ospf6_zebra.c:79,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:81,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:82,1
    - Dst: ospf6_vrf_id_to_name
      Src: /src/frr/ospf6d/ospf6_zebra.c:83,1
    - Dst: ospf6_lookup_by_vrf_id
      Src: /src/frr/ospf6d/ospf6_zebra.c:86,1
    - Dst: ospf6_router_id_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 95
    functionName: ospf6_router_id_update_zebra
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_router_id_update_read
    - ospf6_router_id_update
    - IS_OSPF6_DEBUG_ZEBRA
    - ospf6_lookup_by_vrf_id
    - ospf6_vrf_id_to_name
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int ospf6_router_id_update_zebra(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_bitmap_check
      Src: /src/frr/ospf6d/ospf6_zebra.c:100,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/ospf6d/ospf6_zebra.c:102,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ospf6d/ospf6_zebra.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - type
    - vrf_id
    argTypes:
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 98
    functionDepth: 5
    functionLinenumber: 98
    functionLinenumberEnd: 107
    functionName: ospf6_zebra_redistribute
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - vrf_bitmap_set
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void ospf6_zebra_redistribute(int type, vrf_id_t vrf_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_bitmap_check
      Src: /src/frr/ospf6d/ospf6_zebra.c:111,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/ospf6d/ospf6_zebra.c:113,1
    - Dst: zebra_redistribute_send
      Src: /src/frr/ospf6d/ospf6_zebra.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - type
    - vrf_id
    argTypes:
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 109
    functionDepth: 5
    functionLinenumber: 109
    functionLinenumberEnd: 117
    functionName: ospf6_zebra_no_redistribute
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - vrf_bitmap_check
    - vrf_bitmap_unset
    - zebra_redistribute_send
    linkageType: ''
    returnType: void
    signature: void ospf6_zebra_no_redistribute(int type, vrf_id_t vrf_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:125,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:126,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:138,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:139,1
    - Dst: zserv_command_string
      Src: /src/frr/ospf6d/ospf6_zebra.c:140,1
    - Dst: zclient_send_rnh
      Src: /src/frr/ospf6d/ospf6_zebra.c:143,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_zebra.c:146,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ospf6
    - unreg
    argTypes:
    - struct ospf6*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 119
    functionDepth: 5
    functionLinenumber: 119
    functionLinenumberEnd: 148
    functionName: ospf6_zebra_import_default_route
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_ZEBRA
    - zserv_command_string
    - zclient_send_rnh
    - zlog_debug
    - flog_err
    linkageType: ''
    returnType: void
    signature: void ospf6_zebra_import_default_route(struct ospf6 *ospf6, bool unreg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lookup_by_vrf_id
      Src: /src/frr/ospf6d/ospf6_zebra.c:156,1
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_zebra.c:157,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/ospf6d/ospf6_zebra.c:160,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_zebra.c:161,1
    - Dst: ospf6_abr_nssa_type_7_defaults
      Src: /src/frr/ospf6d/ospf6_zebra.c:171,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 174
    functionName: ospf6_zebra_import_check_update
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - ospf6_lookup_by_vrf_id
    - IS_OSPF6_ASBR
    - zlog_err
    - ospf6_abr_nssa_type_7_defaults
    - zapi_nexthop_update_decode
    linkageType: ''
    returnType: int
    signature: int ospf6_zebra_import_check_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/ospf6d/ospf6_zebra.c:180,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:185,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:186,1
    - Dst: prefix_family_str
      Src: /src/frr/ospf6d/ospf6_zebra.c:187,1
    - Dst: ospf6_interface_state_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:191,1
    - Dst: ospf6_interface_connected_route_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 176
    functionDepth: 5
    functionLinenumber: 176
    functionLinenumberEnd: 195
    functionName: ospf6_zebra_if_address_update_add
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_interface_address_read
    - IS_OSPF6_DEBUG_ZEBRA
    - prefix_family_str
    - zlog_debug
    - ospf6_interface_state_update
    - ospf6_interface_connected_route_update
    linkageType: ''
    returnType: int
    signature: int ospf6_zebra_if_address_update_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/ospf6d/ospf6_zebra.c:201,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:206,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:207,1
    - Dst: prefix_family_str
      Src: /src/frr/ospf6d/ospf6_zebra.c:208,1
    - Dst: ospf6_interface_connected_route_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:212,1
    - Dst: ospf6_interface_state_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:213,1
    - Dst: connected_free
      Src: /src/frr/ospf6d/ospf6_zebra.c:216,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 197
    functionDepth: 5
    functionLinenumber: 197
    functionLinenumberEnd: 219
    functionName: ospf6_zebra_if_address_update_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_interface_address_read
    - IS_OSPF6_DEBUG_ZEBRA
    - prefix_family_str
    - connected_free
    - zlog_debug
    - ospf6_interface_state_update
    - ospf6_interface_connected_route_update
    linkageType: ''
    returnType: int
    signature: int ospf6_zebra_if_address_update_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_zebra.c:229,1
    - Dst: zclient_capabilities_send
      Src: /src/frr/ospf6d/ospf6_zebra.c:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ospf6
    - command
    - stale_time
    argTypes:
    - struct ospf6*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 221
    functionDepth: 5
    functionLinenumber: 221
    functionLinenumberEnd: 238
    functionName: ospf6_zebra_gr_update
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_capabilities_send
    - memset
    linkageType: ''
    returnType: int
    signature: "int ospf6_zebra_gr_update(struct ospf6 *ospf6, int command,\n\t\t\t\t
      uint32_t stale_time)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:243,1
    - Dst: ospf6_zebra_gr_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf6
    - stale_time
    argTypes:
    - struct ospf6*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 240
    functionDepth: 6
    functionLinenumber: 240
    functionLinenumberEnd: 247
    functionName: ospf6_zebra_gr_enable
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - ospf6_zebra_gr_update
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int ospf6_zebra_gr_enable(struct ospf6 *ospf6, uint32_t stale_time)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:252,1
    - Dst: ospf6_zebra_gr_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 249
    functionDepth: 6
    functionLinenumber: 249
    functionLinenumberEnd: 255
    functionName: ospf6_zebra_gr_disable
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - ospf6_zebra_gr_update
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int ospf6_zebra_gr_disable(struct ospf6 *ospf6)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lookup_by_vrf_id
      Src: /src/frr/ospf6d/ospf6_zebra.c:265,1
    - Dst: zapi_route_decode
      Src: /src/frr/ospf6d/ospf6_zebra.c:270,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:274,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ospf6d/ospf6_zebra.c:277,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:285,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:286,1
    - Dst: zebra_route_string
      Src: /src/frr/ospf6d/ospf6_zebra.c:290,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_zebra.c:293,1
    - Dst: is_default_prefix6
      Src: /src/frr/ospf6d/ospf6_zebra.c:294,1
    - Dst: ospf6_asbr_redistribute_add
      Src: /src/frr/ospf6d/ospf6_zebra.c:298,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_zebra.c:302,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 306
    functionName: ospf6_zebra_read_route
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_ZEBRA
    - IN6_IS_ADDR_LINKLOCAL
    - ospf6_lookup_by_vrf_id
    - CHECK_FLAG
    - zapi_route_decode
    - zlog_debug
    - is_default_prefix6
    - ospf6_asbr_redistribute_remove
    - zebra_route_string
    - memcpy
    - ospf6_asbr_redistribute_add
    linkageType: ''
    returnType: int
    signature: int ospf6_zebra_read_route(ZAPI_CALLBACK_ARGS)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_zebra.c:373,1
    - Dst: OSPF6_PATH_TYPE_NAME
      Src: /src/frr/ospf6d/ospf6_zebra.c:374,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_zebra.c:380,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_zebra.c:387,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:394,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_zebra.c:396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - request
    - api
    argTypes:
    - struct ospf6_route*
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 397
    functionName: ospf6_zebra_append_opaque_attr
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - OSPF6_PATH_TYPE_NAME
    - snprintf
    - inet_ntop
    - SET_FLAG
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_zebra_append_opaque_attr(struct ospf6_route *request,\n\t\t\t\t\t
      \  struct zapi_route *api)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:409,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:410,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:414,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:415,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:422,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:423,1
    - Dst: ospf6_route_is_best
      Src: /src/frr/ospf6d/ospf6_zebra.c:431,1
    - Dst: ospf6_route_is_same
      Src: /src/frr/ospf6d/ospf6_zebra.c:432,1
    - Dst: ospf6_route_num_nexthops
      Src: /src/frr/ospf6d/ospf6_zebra.c:433,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:434,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:435,1
    - Dst: ospf6_route_is_best
      Src: /src/frr/ospf6d/ospf6_zebra.c:442,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:444,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:445,1
    - Dst: ospf6_route_num_nexthops
      Src: /src/frr/ospf6d/ospf6_zebra.c:449,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:452,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:453,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:455,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:456,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_zebra.c:461,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:468,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:469,1
    - Dst: MIN
      Src: /src/frr/ospf6d/ospf6_zebra.c:473,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:475,1
    - Dst: ospf6_route_zebra_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_zebra.c:476,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:480,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:484,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:488,1
    - Dst: ospf6_distance_apply
      Src: /src/frr/ospf6d/ospf6_zebra.c:489,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:493,1
    - Dst: ospf6_zebra_append_opaque_attr
      Src: /src/frr/ospf6d/ospf6_zebra.c:494,1
    - Dst: zclient_route_send
      Src: /src/frr/ospf6d/ospf6_zebra.c:497,1
    - Dst: zclient_route_send
      Src: /src/frr/ospf6d/ospf6_zebra.c:499,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_zebra.c:502,1
    - Dst: safe_strerror
      Src: /src/frr/ospf6d/ospf6_zebra.c:505,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 65
    argCount: 3
    argNames:
    - type
    - request
    - ospf6
    argTypes:
    - int
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 401
    functionDepth: 5
    functionLinenumber: 401
    functionLinenumberEnd: 508
    functionName: ospf6_zebra_route_update
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - MIN
    - memset
    - IS_OSPF6_DEBUG_ZEBRA
    - CHECK_FLAG
    - zclient_route_send
    - zlog_debug
    - SET_FLAG
    - ospf6_distance_apply
    - ospf6_route_num_nexthops
    - ospf6_route_zebra_copy_nexthops
    - ospf6_route_is_best
    - flog_err
    - ospf6_zebra_append_opaque_attr
    - safe_strerror
    - ospf6_route_is_same
    linkageType: ''
    returnType: void
    signature: "void ospf6_zebra_route_update(int type, struct ospf6_route *request,\n\t\t\t\t
      \    struct ospf6 *ospf6)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:516,1
    - Dst: ospf6_zebra_route_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:522,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - request
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 510
    functionDepth: 6
    functionLinenumber: 510
    functionLinenumberEnd: 523
    functionName: ospf6_zebra_route_update_add
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf6_zebra_route_update
    linkageType: ''
    returnType: void
    signature: "void ospf6_zebra_route_update_add(struct ospf6_route *request,\n\t\t\t\t
      \ struct ospf6 *ospf6)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:531,1
    - Dst: ospf6_zebra_route_update
      Src: /src/frr/ospf6d/ospf6_zebra.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - request
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 525
    functionDepth: 6
    functionLinenumber: 525
    functionLinenumberEnd: 538
    functionName: ospf6_zebra_route_update_remove
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ospf6_zebra_route_update
    linkageType: ''
    returnType: void
    signature: "void ospf6_zebra_route_update_remove(struct ospf6_route *request,\n\t\t\t\t
      \    struct ospf6 *ospf6)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:548,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:554,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_zebra.c:555,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/ospf6d/ospf6_zebra.c:560,1
    - Dst: zclient_route_send
      Src: /src/frr/ospf6d/ospf6_zebra.c:562,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:564,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:565,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:567,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:569,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:570,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - request
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 540
    functionDepth: 5
    functionLinenumber: 540
    functionLinenumberEnd: 574
    functionName: ospf6_zebra_add_discard
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - IS_OSPF6_DEBUG_ZEBRA
    - CHECK_FLAG
    - zlog_debug
    - SET_FLAG
    - zclient_route_send
    - zapi_route_set_blackhole
    linkageType: ''
    returnType: void
    signature: void ospf6_zebra_add_discard(struct ospf6_route *request, struct ospf6
      *ospf6)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:585,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:591,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_zebra.c:592,1
    - Dst: zapi_route_set_blackhole
      Src: /src/frr/ospf6d/ospf6_zebra.c:597,1
    - Dst: zclient_route_send
      Src: /src/frr/ospf6d/ospf6_zebra.c:599,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:601,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:602,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_zebra.c:604,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:606,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_zebra.c:607,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - request
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 576
    functionDepth: 5
    functionLinenumber: 576
    functionLinenumberEnd: 611
    functionName: ospf6_zebra_delete_discard
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - IS_OSPF6_DEBUG_ZEBRA
    - CHECK_FLAG
    - zlog_debug
    - UNSET_FLAG
    - zclient_route_send
    - zapi_route_set_blackhole
    linkageType: ''
    returnType: void
    signature: "void ospf6_zebra_delete_discard(struct ospf6_route *request,\n\t\t\t\tstruct
      ospf6 *ospf6)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_zebra.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 616
    functionName: ospf6_distance_new
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ospf6_distance
    signature: struct ospf6_distance *ospf6_distance_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_zebra.c:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - odistance
    argTypes:
    - struct ospf6_distance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 621
    functionName: ospf6_distance_free
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_distance_free(struct ospf6_distance *odistance)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv6
      Src: /src/frr/ospf6d/ospf6_zebra.c:633,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_zebra.c:635,1
    - Dst: atoi
      Src: /src/frr/ospf6d/ospf6_zebra.c:639,1
    - Dst: route_node_get
      Src: /src/frr/ospf6d/ospf6_zebra.c:642,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_zebra.c:645,1
    - Dst: ospf6_distance_new
      Src: /src/frr/ospf6d/ospf6_zebra.c:647,1
    - Dst: free
      Src: /src/frr/ospf6d/ospf6_zebra.c:656,1
    - Dst: strdup
      Src: /src/frr/ospf6d/ospf6_zebra.c:660,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 5
    argNames:
    - vty
    - o
    - distance_str
    - ip_str
    - access_list_str
    argTypes:
    - struct vty*
    - struct ospf6*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 623
    functionDepth: 5
    functionLinenumber: 623
    functionLinenumberEnd: 663
    functionName: ospf6_distance_set
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - vty_out
    - free
    - strdup
    - route_node_get
    - str2prefix_ipv6
    - atoi
    - ospf6_distance_new
    linkageType: ''
    returnType: int
    signature: "int ospf6_distance_set(struct vty *vty, struct ospf6 *o,\n\t\t       const
      char *distance_str, const char *ip_str,\n\t\t       const char *access_list_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix_ipv6
      Src: /src/frr/ospf6d/ospf6_zebra.c:674,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_zebra.c:676,1
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_zebra.c:680,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_zebra.c:682,1
    - Dst: free
      Src: /src/frr/ospf6d/ospf6_zebra.c:689,1
    - Dst: ospf6_distance_free
      Src: /src/frr/ospf6d/ospf6_zebra.c:690,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_zebra.c:693,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_zebra.c:694,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - vty
    - o
    - distance_str
    - ip_str
    - access_list_str
    argTypes:
    - struct vty*
    - struct ospf6*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 665
    functionDepth: 5
    functionLinenumber: 665
    functionLinenumberEnd: 697
    functionName: ospf6_distance_unset
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - vty_out
    - free
    - ospf6_distance_free
    - str2prefix_ipv6
    linkageType: ''
    returnType: int
    signature: "int ospf6_distance_unset(struct vty *vty, struct ospf6 *o,\n\t\t\t
      const char *distance_str, const char *ip_str,\n\t\t\t const char *access_list_str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_zebra.c:704,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_zebra.c:704,1
    - Dst: free
      Src: /src/frr/ospf6d/ospf6_zebra.c:707,1
    - Dst: ospf6_distance_free
      Src: /src/frr/ospf6d/ospf6_zebra.c:708,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_zebra.c:710,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - o
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 699
    functionDepth: 3
    functionLinenumber: 699
    functionLinenumberEnd: 712
    functionName: ospf6_distance_reset
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_top
    - free
    - route_next
    - ospf6_distance_free
    linkageType: ''
    returnType: void
    signature: void ospf6_distance_reset(struct ospf6 *o)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 3
    argNames:
    - p
    - or
    - ospf6
    argTypes:
    - struct prefix_ipv6*
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 740
    functionName: ospf6_distance_apply
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t ospf6_distance_apply(struct prefix_ipv6 *p, struct ospf6_route
      * or,\n\t\t\t     struct ospf6 *ospf6)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_client_sendmsg
      Src: /src/frr/ospf6d/ospf6_zebra.c:748,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/ospf6d/ospf6_zebra.c:750,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_zebra.c:753,1
    - Dst: ospf6_zebra_gr_enable
      Src: /src/frr/ospf6d/ospf6_zebra.c:756,1
    - Dst: ospf6_zebra_init
      Src: /src/frr/ospf6d/ospf6_zebra.c:769,1
    - Dst: zclient_new
      Src: /src/frr/ospf6d/ospf6_zebra.c:772,1
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_zebra.c:773,1
    - Dst: zclient_init
      Src: /src/frr/ospf6d/ospf6_zebra.c:774,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_zebra.c:778,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_zebra.c:783,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_zebra.c:797,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_zebra.c:799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 742
    functionDepth: 7
    functionLinenumber: 742
    functionLinenumberEnd: 806
    functionName: ospf6_zebra_connected
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - strmatch
    - DEFUN
    - zclient_new
    - ospf6_zebra_init
    - ALL_LIST_ELEMENTS_RO
    - bfd_client_sendmsg
    - zclient_send_reg_requests
    - array_size
    - install_element
    - zclient_init
    - ospf6_zebra_gr_enable
    linkageType: ''
    returnType: void
    signature: void ospf6_zebra_connected(struct zclient *zclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:837,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:837,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_zebra.c:838,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:840,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_zebra.c:841,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_zebra.c:842,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_zebra.c:843,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 835
    functionDepth: 2
    functionLinenumber: 835
    functionLinenumberEnd: 846
    functionName: config_write_ospf6_debug_zebra
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_ZEBRA
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_zebra(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_zebra.c:850,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_zebra.c:851,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_zebra.c:852,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_zebra.c:853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 848
    functionDepth: 1
    functionLinenumber: 848
    functionLinenumberEnd: 854
    functionName: install_element_ospf6_debug_zebra
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_zebra(void)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:41,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:44,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:47,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:50,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:59,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:63,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:67,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:71,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:75,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:79,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:90,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:95,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:105,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:108,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct ospf6_route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 114
    functionName: ospf6_route_table_name
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf6_route_table_name(struct ospf6_route_table *table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_route.c:119,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_route.c:122,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_route.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - adv_router
    - id
    - prefix
    argTypes:
    - uint32_t
    - uint32_t
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 124
    functionName: ospf6_linkstate_prefix
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void ospf6_linkstate_prefix(uint32_t adv_router, uint32_t id,\n\t\t\t
      \   struct prefix *prefix)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_route.c:130,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_route.c:131,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:132,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:133,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_route.c:134,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:135,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - prefix
    - buf
    - size
    argTypes:
    - struct prefix*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 138
    functionName: ospf6_linkstate_prefix2str
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - snprintf
    - inet_ntop
    - ntohl
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ospf6_linkstate_prefix2str(struct prefix *prefix, char *buf, int
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_route.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 168
    functionName: ospf6_nexthop_create
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct ospf6_nexthop
    signature: struct ospf6_nexthop *ospf6_nexthop_create(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_route.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct ospf6_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: ospf6_nexthop_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_nexthop_delete(struct ospf6_nexthop *nh)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_route.c:283,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_route.c:288,1
    - Dst: ospf6_route_find_nexthop
      Src: /src/frr/ospf6d/ospf6_route.c:293,1
    - Dst: ospf6_nexthop_create
      Src: /src/frr/ospf6d/ospf6_route.c:294,1
    - Dst: ospf6_nexthop_copy
      Src: /src/frr/ospf6d/ospf6_route.c:295,1
    - Dst: listnode_add
      Src: /src/frr/ospf6d/ospf6_route.c:296,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - nh_list
    - ifindex
    - addr
    argTypes:
    - struct list*
    - int
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 299
    functionName: ospf6_add_nexthop
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_nexthop_create
    - memset
    - listnode_add
    - ospf6_route_find_nexthop
    - ospf6_nexthop_copy
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_add_nexthop(struct list *nh_list, int ifindex,\n\t\t       const
      struct in6_addr *addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_find_nexthop
      Src: /src/frr/ospf6d/ospf6_route.c:312,1
    - Dst: ospf6_nexthop_create
      Src: /src/frr/ospf6d/ospf6_route.c:315,1
    - Dst: ospf6_nexthop_copy
      Src: /src/frr/ospf6d/ospf6_route.c:316,1
    - Dst: listnode_add
      Src: /src/frr/ospf6d/ospf6_route.c:317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 318
    functionName: ospf6_add_route_nexthop_blackhole
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_route_find_nexthop
    - ospf6_nexthop_copy
    - ospf6_nexthop_create
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void ospf6_add_route_nexthop_blackhole(struct ospf6_route *route)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_route.c:330,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_route.c:331,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:332,1
    - Dst: nexthop_type_to_str
      Src: /src/frr/ospf6d/ospf6_route.c:333,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospf6d/ospf6_route.c:335,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_route.c:360,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:361,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 4
    argNames:
    - route
    - nexthops
    - entries
    - vrf_id
    argTypes:
    - struct ospf6_route*
    - struct zapi_nexthop[]
    - int
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 320
    functionDepth: 5
    functionLinenumber: 320
    functionLinenumberEnd: 374
    functionName: ospf6_route_zebra_copy_nexthops
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 1
    functionsReached:
    - ifindex2ifname
    - IS_OSPF6_DEBUG_ZEBRA
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - nexthop_type_to_str
    linkageType: ''
    returnType: void
    signature: "void ospf6_route_zebra_copy_nexthops(struct ospf6_route *route,\n\t\t\t\t
      \    struct zapi_nexthop nexthops[],\n\t\t\t\t     int entries, vrf_id_t vrf_id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listnode_head
      Src: /src/frr/ospf6d/ospf6_route.c:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 387
    functionName: ospf6_route_get_first_nh_index
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 1
    functionsReached:
    - listnode_head
    linkageType: ''
    returnType: int
    signature: int ospf6_route_get_first_nh_index(struct ospf6_route *route)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_route.c:396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ospf6_nexthop*
    - struct ospf6_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 398
    functionName: ospf6_nexthop_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int ospf6_nexthop_cmp(struct ospf6_nexthop *a, struct ospf6_nexthop
      *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ospf6_path*
    - struct ospf6_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 408
    functionName: ospf6_path_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ospf6_path_cmp(struct ospf6_path *a, struct ospf6_path *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospf6d/ospf6_route.c:413,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_route.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - struct ospf6_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 415
    functionName: ospf6_path_free
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_path_free(struct ospf6_path *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospf6d/ospf6_route.c:421,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_route.c:423,1
    - Dst: nh_list::nh_list
      Src: /src/frr/ospf6d/ospf6_route.c:424,1
    - Dst: nh_list::nh_list
      Src: /src/frr/ospf6d/ospf6_route.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct ospf6_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 428
    functionName: ospf6_path_dup
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - list_new
    - nh_list::nh_list
    linkageType: ''
    returnType: struct ospf6_path
    signature: struct ospf6_path *ospf6_path_dup(struct ospf6_path *path)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_route.c:436,1
    - Dst: ospf6_path_dup
      Src: /src/frr/ospf6d/ospf6_route.c:437,1
    - Dst: ospf6_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_route.c:438,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospf6d/ospf6_route.c:439,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_route.c:448,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_route.c:449,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_route.c:452,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:521,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_route.c:541,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_route.c:541,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_route.c:546,1
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_route.c:552,1
    - Dst: struct listnode*::route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:556,1
    - Dst: ospf6_route_lookup_identical
      Src: /src/frr/ospf6d/ospf6_route.c:562,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_route.c:567,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_route.c:569,1
    - Dst: ospf6_route_is_identical
      Src: /src/frr/ospf6d/ospf6_route.c:569,1
    - Dst: ospf6_route_lookup_bestmatch
      Src: /src/frr/ospf6d/ospf6_route.c:576,1
    - Dst: route_node_match
      Src: /src/frr/ospf6d/ospf6_route.c:582,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:585,1
    - Dst: struct listnode*::route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:587,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:597,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:603,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:612,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:612,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_route.c:618,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_route.c:619,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:621,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:622,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:623,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:623,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_route.c:624,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:626,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:628,1
    - Dst: ospf6_route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:630,1
    - Dst: route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:630,1
    - Dst: ospf6_route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:632,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_route.c:635,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:644,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:645,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:646,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:647,1
    - Dst: ospf6_linkstate_prefix2str
      Src: /src/frr/ospf6d/ospf6_route.c:650,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:652,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_route.c:652,1
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_route.c:655,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:657,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:658,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:659,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_route.c:660,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_route.c:661,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:662,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:663,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:663,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_route.c:666,1
    - Dst: route_node_get
      Src: /src/frr/ospf6d/ospf6_route.c:668,1
    - Dst: ospf6_route_is_same
      Src: /src/frr/ospf6d/ospf6_route.c:673,1
    - Dst: ospf6_route_is_same_origin
      Src: /src/frr/ospf6d/ospf6_route.c:677,1
    - Dst: ospf6_route_cmp
      Src: /src/frr/ospf6d/ospf6_route.c:679,1
    - Dst: ospf6_route_is_identical
      Src: /src/frr/ospf6d/ospf6_route.c:690,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:691,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:692,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:694,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:697,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:698,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:699,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_route.c:701,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:702,1
    - Dst: ospf6_route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:703,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:706,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:710,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:711,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:713,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_route.c:715,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_route.c:716,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_route.c:717,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_route.c:718,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:719,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:720,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:721,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:726,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:727,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:728,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:741,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_route.c:744,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:745,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:747,1
    - Dst: ospf6_route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:748,1
    - Dst: route
      Src: /src/frr/ospf6d/ospf6_route.c:753,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:758,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:759,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:761,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/ospf6d/ospf6_route.c:763,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:764,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:765,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:766,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:782,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:784,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:785,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:786,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:787,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:789,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:797,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:800,1
    - Dst: ospf6_route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:802,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:804,1
    - Dst: route
      Src: /src/frr/ospf6d/ospf6_route.c:808,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:812,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:813,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:814,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:816,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:817,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:818,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:820,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:822,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:823,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:826,1
    - Dst: route_lock_node
      Src: /src/frr/ospf6d/ospf6_route.c:831,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_route.c:833,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:840,1
    - Dst: route_lock_node
      Src: /src/frr/ospf6d/ospf6_route.c:849,1
    - Dst: route_prev
      Src: /src/frr/ospf6d/ospf6_route.c:851,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:858,1
    - Dst: ospf6_route_is_same
      Src: /src/frr/ospf6d/ospf6_route.c:861,1
    - Dst: ospf6_route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:868,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:870,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_route.c:877,1
    - Dst: ospf6_linkstate_prefix2str
      Src: /src/frr/ospf6d/ospf6_route.c:885,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:887,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_route.c:887,1
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_route.c:890,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:892,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:893,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:894,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:896,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:897,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:898,1
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_route.c:900,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:901,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:909,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:920,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:921,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_route.c:922,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:927,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:931,1
    - Dst: ospf6_route_table_assert
      Src: /src/frr/ospf6d/ospf6_route.c:933,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:935,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_route.c:941,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:944,1
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_route.c:949,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_route.c:955,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:959,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:960,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:963,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:964,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:965,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:967,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_route.c:968,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:969,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:976,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:980,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_route.c:981,1
    - Dst: ospf6_route_table_name
      Src: /src/frr/ospf6d/ospf6_route.c:982,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_route.c:987,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:989,1
    - Dst: ospf6_route_best_next
      Src: /src/frr/ospf6d/ospf6_route.c:994,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_route.c:999,1
    - Dst: route_lock_node
      Src: /src/frr/ospf6d/ospf6_route.c:1002,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1003,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1005,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_route.c:1008,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:1010,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:1012,1
    - Dst: ospf6_route_match_head
      Src: /src/frr/ospf6d/ospf6_route.c:1016,1
    - Dst: prefix_match
      Src: /src/frr/ospf6d/ospf6_route.c:1025,1
    - Dst: prefix_bit
      Src: /src/frr/ospf6d/ospf6_route.c:1026,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:1062,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1063,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:1232,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:1234,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1236,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1238,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:1239,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:1240,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:1241,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_route.c:1243,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1245,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1253,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1255,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1257,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1261,1
    - Dst: OSPF6_PATH_TYPE_NAME
      Src: /src/frr/ospf6d/ospf6_route.c:1262,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1264,1
    - Dst: OSPF6_PATH_TYPE_NAME
      Src: /src/frr/ospf6d/ospf6_route.c:1265,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1268,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1269,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1272,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_route.c:1274,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1275,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1276,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1279,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_route.c:1280,1
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_route.c:1285,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1287,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1289,1
    - Dst: ospf6_capability_printbuf
      Src: /src/frr/ospf6d/ospf6_route.c:1292,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1294,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1296,1
    - Dst: ospf6_prefix_options_printbuf
      Src: /src/frr/ospf6d/ospf6_route.c:1299,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1302,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1305,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1309,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1311,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1312,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1315,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1317,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1320,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1321,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1324,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1325,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_route.c:1330,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1332,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_route.c:1334,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1337,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_route.c:1339,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1340,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1342,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospf6d/ospf6_route.c:1344,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_route.c:1345,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1348,1
    - Dst: ifindex2ifname
      Src: /src/frr/ospf6d/ospf6_route.c:1349,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_route.c:1352,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_route.c:1354,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1356,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 66
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - struct list*
    - struct list*
    assertStmts:
    - condition: (route->table == NULL)
      pos:
        line_end: 796
        line_start: 796
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (rnode->info)
      pos:
        line_end: 1009
        line_start: 1009
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->prev == NULL)
      pos:
        line_end: 962
        line_start: 962
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->next == NULL)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->table == NULL)
      pos:
        line_end: 825
        line_start: 825
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: "(OSPF6_PATH_TYPE_NONE < rb->path.type\n\t       && rb->path.type
        < OSPF6_PATH_TYPE_MAX)"
      pos:
        line_end: 521
        line_start: 520
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->rnode == NULL)
      pos:
        line_end: 643
        line_start: 643
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->table == table)
      pos:
        line_end: 963
        line_start: 963
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (link_error == 0 && num == table->count)
      pos:
        line_end: 627
        line_start: 627
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (node)
      pos:
        line_end: 900
        line_start: 900
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->table == NULL)
      pos:
        line_end: 740
        line_start: 740
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (current == route)
      pos:
        line_end: 908
        line_start: 908
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->lock == 0)
      pos:
        line_end: 644
        line_start: 644
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (node->info)
      pos:
        line_end: 959
        line_start: 959
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (next && next->rnode == node)
      pos:
        line_end: 781
        line_start: 781
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (route->prev == NULL)
      pos:
        line_end: 646
        line_start: 646
        source_file: /src/frr/ospf6d/ospf6_route.c
    - condition: (node->info == NULL)
      pos:
        line_end: 819
        line_start: 819
        source_file: /src/frr/ospf6d/ospf6_route.c
    constantsTouched: []
    func_position:
      end: 1357
      start: 430
    functionDepth: 5
    functionLinenumber: 430
    functionLinenumberEnd: 1357
    functionName: ospf6_copy_paths
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_route_match_head
    - prefix2str
    - ifindex2ifname
    - ospf6_route_cmp
    - ospf6_route_table_name
    - route_top
    - ospf6_route_lookup
    - flog_err
    - json_object_string_add
    - ospf6_route_best_next
    - ospf6_route_head
    - struct listnode*::route_table_assert
    - route
    - route_node_lookup
    - ospf6_linkstate_prefix2str
    - OSPF6_PATH_TYPE_NAME
    - ospf6_options_printbuf
    - XCALLOC
    - ospf6_copy_nexthops
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - inet_ntop
    - zlog_debug
    - ospf6_route_lock
    - if
    - route_node_match
    - ospf6_route_add
    - ospf6_route_delete
    - struct listnode*::route_unlock_node
    - ntohl
    - ospf6_route_lookup_identical
    - assert
    - ADV_ROUTER_IN_PREFIX
    - route_unlock_node
    - zlog_info
    - ospf6_route_unlock
    - ospf6_prefix_options_printbuf
    - IS_OSPF6_DEBUG_ROUTE
    - listnode_add_sort
    - vty_out
    - ospf6_route_is_same_origin
    - ospf6_lstype_name
    - listcount
    - monotime
    - route_next
    - ospf6_path_dup
    - json_object_int_add
    - prefix_bit
    - UNSET_FLAG
    - ospf6_route_remove
    - ospf6_route_lookup_bestmatch
    - json_object_new_array
    - ospf6_route_table_assert
    - json_object_new_object
    - route_lock_node
    - json_object_array_add
    - route_table_assert
    - CHECK_FLAG
    - route_node_get_lock_count
    - ospf6_route_next
    - SET_FLAG
    - ospf6_route_is_identical
    - list_new
    - route_node_get
    - ospf6_capability_printbuf
    - json_object_object_add
    - ospf6_route_is_same
    - route_prev
    linkageType: ''
    returnType: void
    signature: void ospf6_copy_paths(struct list *dst, struct list *src)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:1373,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1374,1
    - Dst: ospf6_route_is_same
      Src: /src/frr/ospf6d/ospf6_route.c:1375,1
    - Dst: ospf6_num_nexthops
      Src: /src/frr/ospf6d/ospf6_route.c:1379,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:1388,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1390,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1391,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1392,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1394,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1396,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1397,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1398,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1399,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_route.c:1403,1
    - Dst: OSPF6_PATH_TYPE_JSON
      Src: /src/frr/ospf6d/ospf6_route.c:1404,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_route.c:1405,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1407,1
    - Dst: OSPF6_PATH_TYPE_NAME
      Src: /src/frr/ospf6d/ospf6_route.c:1408,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 4
    argNames:
    - vty
    - table
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_route_table*
    - json_object*
    - bool
    assertStmts:
    - condition: (number == table->count)
      pos:
        line_end: 1387
        line_start: 1387
        source_file: /src/frr/ospf6d/ospf6_route.c
    constantsTouched: []
    func_position:
      end: 1410
      start: 1359
    functionDepth: 2
    functionLinenumber: 1359
    functionLinenumberEnd: 1410
    functionName: ospf6_route_show_table_summary
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - vty_out
    - snprintf
    - OSPF6_PATH_TYPE_NAME
    - OSPF6_PATH_TYPE_JSON
    - json_object_int_add
    - ospf6_route_next
    - ospf6_num_nexthops
    - ospf6_route_is_same
    - ospf6_route_head
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_route_show_table_summary(struct vty *vty,\n\t\t\t\t\t   struct
      ospf6_route_table *table,\n\t\t\t\t\t   json_object *json, bool use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_route.c:1420,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_route.c:1425,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:1426,1
    - Dst: ospf6_route_is_prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1427,1
    - Dst: ospf6_route_show_detail
      Src: /src/frr/ospf6d/ospf6_route.c:1429,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1430,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_route.c:1434,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_route.c:1436,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 5
    argNames:
    - vty
    - prefix
    - table
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct prefix*
    - struct ospf6_route_table*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1412
    functionDepth: 1
    functionLinenumber: 1412
    functionLinenumberEnd: 1437
    functionName: ospf6_route_show_table_prefix
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf6_route_lookup
    - ospf6_route_next
    - ospf6_route_show_detail
    - ospf6_route_lock
    - json_object_object_add
    - ospf6_route_is_prefix
    - ospf6_route_unlock
    linkageType: ''
    returnType: void
    signature: "void ospf6_route_show_table_prefix(struct vty *vty,\n\t\t\t\t\t  struct
      prefix *prefix,\n\t\t\t\t\t  struct ospf6_route_table *table,\n\t\t\t\t\t  json_object
      *json, bool use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_lookup_bestmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1447,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_route.c:1452,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:1454,1
    - Dst: ospf6_route_is_prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1455,1
    - Dst: ospf6_route_show_detail
      Src: /src/frr/ospf6d/ospf6_route.c:1457,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1458,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_route.c:1461,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_route.c:1463,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - vty
    - prefix
    - table
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct prefix*
    - struct ospf6_route_table*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1439
    functionDepth: 1
    functionLinenumber: 1439
    functionLinenumberEnd: 1464
    functionName: ospf6_route_show_table_address
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf6_route_unlock
    - ospf6_route_next
    - ospf6_route_show_detail
    - ospf6_route_lock
    - json_object_object_add
    - ospf6_route_is_prefix
    - ospf6_route_lookup_bestmatch
    linkageType: ''
    returnType: void
    signature: "void ospf6_route_show_table_address(struct vty *vty,\n\t\t\t\t\t   struct
      prefix *prefix,\n\t\t\t\t\t   struct ospf6_route_table *table,\n\t\t\t\t\t   json_object
      *json, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_route.c:1474,1
    - Dst: ospf6_route_match_head
      Src: /src/frr/ospf6d/ospf6_route.c:1476,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_route.c:1478,1
    - Dst: ospf6_route_show_detail
      Src: /src/frr/ospf6d/ospf6_route.c:1481,1
    - Dst: ospf6_route_show
      Src: /src/frr/ospf6d/ospf6_route.c:1484,1
    - Dst: ospf6_route_match_next
      Src: /src/frr/ospf6d/ospf6_route.c:1485,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_route.c:1488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 6
    argNames:
    - vty
    - detail
    - prefix
    - table
    - json
    - use_json
    argTypes:
    - struct vty*
    - int
    - struct prefix*
    - struct ospf6_route_table*
    - json_object*
    - bool
    assertStmts:
    - condition: (prefix->family)
      pos:
        line_end: 1473
        line_start: 1473
        source_file: /src/frr/ospf6d/ospf6_route.c
    constantsTouched: []
    func_position:
      end: 1489
      start: 1466
    functionDepth: 1
    functionLinenumber: 1466
    functionLinenumberEnd: 1489
    functionName: ospf6_route_show_table_match
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_route_match_head
    - json_object_new_object
    - ospf6_route_show_detail
    - ospf6_route_match_next
    - json_object_object_add
    - ospf6_route_show
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_route_show_table_match(struct vty *vty, int detail,\n\t\t\t\t\t
      struct prefix *prefix,\n\t\t\t\t\t struct ospf6_route_table *table,\n\t\t\t\t\t
      json_object *json, bool use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:1499,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_route.c:1501,1
    - Dst: ospf6_route_show_detail
      Src: /src/frr/ospf6d/ospf6_route.c:1505,1
    - Dst: ospf6_route_show
      Src: /src/frr/ospf6d/ospf6_route.c:1508,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1511,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_route.c:1514,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 6
    argNames:
    - vty
    - detail
    - type
    - table
    - json
    - use_json
    argTypes:
    - struct vty*
    - int
    - uint8_t
    - struct ospf6_route_table*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1491
    functionDepth: 0
    functionLinenumber: 1491
    functionLinenumberEnd: 1515
    functionName: ospf6_route_show_table_type
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf6_route_next
    - ospf6_route_show_detail
    - json_object_object_add
    - ospf6_route_show
    - ospf6_route_head
    linkageType: ''
    returnType: void
    signature: "void ospf6_route_show_table_type(struct vty *vty, int detail,\n\t\t\t\t\tuint8_t
      type,\n\t\t\t\t\tstruct ospf6_route_table *table,\n\t\t\t\t\tjson_object *json,
      bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:1524,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_route.c:1526,1
    - Dst: ospf6_route_show_detail
      Src: /src/frr/ospf6d/ospf6_route.c:1529,1
    - Dst: ospf6_route_show
      Src: /src/frr/ospf6d/ospf6_route.c:1532,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1533,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_route.c:1536,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - vty
    - detail
    - table
    - json
    - use_json
    argTypes:
    - struct vty*
    - int
    - struct ospf6_route_table*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1517
    functionDepth: 0
    functionLinenumber: 1517
    functionLinenumberEnd: 1537
    functionName: ospf6_route_show_table
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf6_route_next
    - ospf6_route_show_detail
    - json_object_object_add
    - ospf6_route_show
    - ospf6_route_head
    linkageType: ''
    returnType: void
    signature: "void ospf6_route_show_table(struct vty *vty, int detail,\n\t\t\t\t
      \  struct ospf6_route_table *table,\n\t\t\t\t   json_object *json, bool use_json)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_route.c:1554,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_route.c:1557,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1560,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1565,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1570,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1575,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1580,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1585,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1590,1
    - Dst: str2prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1595,1
    - Dst: strchr
      Src: /src/frr/ospf6d/ospf6_route.c:1598,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_route.c:1603,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1606,1
    - Dst: ospf6_route_show_table_summary
      Src: /src/frr/ospf6d/ospf6_route.c:1613,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_route.c:1615,1
    - Dst: ospf6_route_show_table_address
      Src: /src/frr/ospf6d/ospf6_route.c:1623,1
    - Dst: ospf6_route_show_table_prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1626,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_route.c:1630,1
    - Dst: ospf6_route_show_table_match
      Src: /src/frr/ospf6d/ospf6_route.c:1635,1
    - Dst: ospf6_route_show_table_type
      Src: /src/frr/ospf6d/ospf6_route.c:1638,1
    - Dst: ospf6_route_show_table
      Src: /src/frr/ospf6d/ospf6_route.c:1641,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_route.c:1644,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 67
    argCount: 6
    argNames:
    - vty
    - argc_start
    - argc
    - argv
    - table
    - use_json
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    - struct ospf6_route_table*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1539
    functionDepth: 4
    functionLinenumber: 1539
    functionLinenumberEnd: 1646
    functionName: ospf6_route_table_show
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - strmatch
    - ospf6_route_show_table
    - vty_out
    - memset
    - ospf6_route_show_table_address
    - ospf6_route_show_table_match
    - ospf6_route_show_table_summary
    - ospf6_route_show_table_prefix
    - strchr
    - json_object_string_add
    - str2prefix
    - vty_json
    - ospf6_route_show_table_type
    linkageType: ''
    returnType: int
    signature: "int ospf6_route_table_show(struct vty *vty, int argc_start, int argc,\n\t\t\t
      \  struct cmd_token **argv,\n\t\t\t   struct ospf6_route_table *table, bool
      use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1648
    functionDepth: 2
    functionLinenumber: 1648
    functionLinenumberEnd: 1652
    functionName: ospf6_linkstate_show_header
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf6_linkstate_show_header(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_linkstate_prefix_adv_router
      Src: /src/frr/ospf6d/ospf6_route.c:1659,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1660,1
    - Dst: ospf6_linkstate_prefix_id
      Src: /src/frr/ospf6d/ospf6_route.c:1661,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1662,1
    - Dst: ospf6_capability_printbuf
      Src: /src/frr/ospf6d/ospf6_route.c:1664,1
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_route.c:1666,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_route.c:1668,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1669,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - vty
    - route
    argTypes:
    - struct vty*
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1654
    functionDepth: 2
    functionLinenumber: 1654
    functionLinenumberEnd: 1676
    functionName: ospf6_linkstate_show
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_linkstate_prefix_adv_router
    - vty_out
    - ospf6_options_printbuf
    - inet_ntop
    - ospf6_capability_printbuf
    - ntohl
    - ospf6_linkstate_prefix_id
    linkageType: ''
    returnType: void
    signature: void ospf6_linkstate_show(struct vty *vty, struct ospf6_route *route)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_route.c:1685,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_route.c:1689,1
    - Dst: ospf6_route_is_prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1690,1
    - Dst: ospf6_route_show_detail
      Src: /src/frr/ospf6d/ospf6_route.c:1692,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1693,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_route.c:1696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - prefix
    - table
    argTypes:
    - struct vty*
    - struct prefix*
    - struct ospf6_route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1697
      start: 1679
    functionDepth: 1
    functionLinenumber: 1679
    functionLinenumberEnd: 1697
    functionName: ospf6_linkstate_show_table_exact
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_route_lookup
    - ospf6_route_next
    - ospf6_route_show_detail
    - ospf6_route_lock
    - ospf6_route_is_prefix
    - ospf6_route_unlock
    linkageType: ''
    returnType: void
    signature: "void ospf6_linkstate_show_table_exact(struct vty *vty,\n\t\t\t\t\t
      \    struct prefix *prefix,\n\t\t\t\t\t     struct ospf6_route_table *table)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_linkstate_show_header
      Src: /src/frr/ospf6d/ospf6_route.c:1705,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_route.c:1707,1
    - Dst: ospf6_route_show_detail
      Src: /src/frr/ospf6d/ospf6_route.c:1710,1
    - Dst: ospf6_linkstate_show
      Src: /src/frr/ospf6d/ospf6_route.c:1712,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_route.c:1713,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - vty
    - detail
    - table
    argTypes:
    - struct vty*
    - int
    - struct ospf6_route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1699
    functionDepth: 3
    functionLinenumber: 1699
    functionLinenumberEnd: 1715
    functionName: ospf6_linkstate_show_table
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_linkstate_show_header
    - ospf6_route_next
    - ospf6_route_show_detail
    - ospf6_linkstate_show
    - ospf6_route_head
    linkageType: ''
    returnType: void
    signature: "void ospf6_linkstate_show_table(struct vty *vty, int detail,\n\t\t\t\t
      \      struct ospf6_route_table *table)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_route.c:1727,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_route.c:1728,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_route.c:1729,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_route.c:1732,1
    - Dst: str2prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1738,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1743,1
    - Dst: str2prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1748,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1753,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1757,1
    - Dst: ospf6_linkstate_prefix
      Src: /src/frr/ospf6d/ospf6_route.c:1762,1
    - Dst: ospf6_linkstate_show_table_exact
      Src: /src/frr/ospf6d/ospf6_route.c:1766,1
    - Dst: ospf6_linkstate_show_table
      Src: /src/frr/ospf6d/ospf6_route.c:1768,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 5
    argNames:
    - vty
    - idx_ipv4
    - argc
    - argv
    - table
    argTypes:
    - struct vty*
    - int
    - int
    - struct cmd_token**
    - struct ospf6_route_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1717
    functionDepth: 4
    functionLinenumber: 1717
    functionLinenumberEnd: 1771
    functionName: ospf6_linkstate_table_show
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - strmatch
    - vty_out
    - memset
    - str2prefix
    - ospf6_linkstate_show_table_exact
    - ospf6_linkstate_show_table
    - ospf6_linkstate_prefix
    linkageType: ''
    returnType: int
    signature: "int ospf6_linkstate_table_show(struct vty *vty, int idx_ipv4, int
      argc,\n\t\t\t       struct cmd_token **argv,\n\t\t\t       struct ospf6_route_table
      *table)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1774
    functionDepth: 2
    functionLinenumber: 1774
    functionLinenumberEnd: 1778
    functionName: ospf6_brouter_show_header
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf6_brouter_show_header(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_linkstate_prefix_adv_router
      Src: /src/frr/ospf6d/ospf6_route.c:1785,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1786,1
    - Dst: ospf6_capability_printbuf
      Src: /src/frr/ospf6d/ospf6_route.c:1787,1
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_route.c:1789,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_route.c:1790,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1794,1
    - Dst: OSPF6_PATH_TYPE_NAME
      Src: /src/frr/ospf6d/ospf6_route.c:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - route
    argTypes:
    - struct vty*
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1780
    functionDepth: 2
    functionLinenumber: 1780
    functionLinenumberEnd: 1796
    functionName: ospf6_brouter_show
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - ospf6_linkstate_prefix_adv_router
    - vty_out
    - ospf6_options_printbuf
    - OSPF6_PATH_TYPE_NAME
    - inet_ntop
    - ospf6_capability_printbuf
    linkageType: ''
    returnType: void
    signature: void ospf6_brouter_show(struct vty *vty, struct ospf6_route *route)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:1836,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1837,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:1840,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1841,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:1842,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1843,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:1844,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1845,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_route.c:1846,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_route.c:1847,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1834
    functionDepth: 2
    functionLinenumber: 1834
    functionLinenumberEnd: 1850
    functionName: config_write_ospf6_debug_route
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - vty_out
    - IS_OSPF6_DEBUG_ROUTE
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_route(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_route.c:1854,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_route.c:1855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1852
    functionDepth: 1
    functionLinenumber: 1852
    functionLinenumberEnd: 1856
    functionName: install_element_ospf6_debug_route
    functionSourceFile: /src/frr/ospf6d/ospf6_route.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_route(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:73,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:78,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:80,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:82,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:83,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:83,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:84,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:85,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:86,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:86,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:87,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:88,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:89,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:90,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - ospfh
    - length
    argTypes:
    - struct ospf6_header*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 93
    functionName: ospf6_auth_hdr_dump_send
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - htonl
    - zlog_debug
    - memcpy
    - htons
    linkageType: ''
    returnType: void
    signature: void ospf6_auth_hdr_dump_send(struct ospf6_header *ospfh, uint16_t
      length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:102,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:107,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:110,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:115,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:117,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:118,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:118,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:119,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:120,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:121,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:121,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:122,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:123,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:124,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:125,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - ospfh
    - length
    - lls_len
    argTypes:
    - struct ospf6_header*
    - uint16_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 128
    functionName: ospf6_auth_hdr_dump_recv
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_debug
    - ntohl
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_auth_hdr_dump_recv(struct ospf6_header *ospfh, uint16_t
      length,\n\t\t\t      unsigned int lls_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - mes1
    - mes2
    - len
    argTypes:
    - unsigned char*
    - unsigned char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: ospf6_hash_message_xor
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *ospf6_hash_message_xor(unsigned char *mes1,\n\t\t\t\t
      \     unsigned char *mes2,\n\t\t\t\t      uint32_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:156,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:157,1
    - Dst: EVP_md5
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:157,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:158,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:159,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:160,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:162,1
    - Dst: MD5Init
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:163,1
    - Dst: MD5Update
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:164,1
    - Dst: MD5Final
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - mes
    - len
    - digest
    argTypes:
    - unsigned char*
    - uint32_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 167
    functionName: md5_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 11
    functionsReached:
    - EVP_DigestUpdate
    - memset
    - EVP_DigestInit
    - EVP_md5
    - MD5Init
    - MD5Update
    - EVP_DigestFinal
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    - MD5Final
    linkageType: ''
    returnType: void
    signature: "void md5_digest(unsigned char *mes, uint32_t len,\n\t\t       unsigned
      char *digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:180,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:181,1
    - Dst: EVP_sha256
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:181,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:182,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:183,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:184,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:186,1
    - Dst: SHA256_Init
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:187,1
    - Dst: SHA256_Update
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:188,1
    - Dst: SHA256_Final
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - mes
    - len
    - digest
    argTypes:
    - unsigned char*
    - uint32_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 191
    functionName: sha256_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 2
    functionsReached:
    - SHA256_Init
    - EVP_DigestUpdate
    - memset
    - EVP_DigestInit
    - SHA256_Update
    - EVP_DigestFinal
    - EVP_sha256
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    - SHA256_Final
    linkageType: ''
    returnType: void
    signature: "void sha256_digest(unsigned char *mes, uint32_t len,\n\t\t\t  unsigned
      char *digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:200,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:201,1
    - Dst: EVP_sha1
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:201,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:202,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:203,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - mes
    - len
    - digest
    argTypes:
    - unsigned char*
    - uint32_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 205
    functionName: sha1_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - EVP_DigestUpdate
    - EVP_DigestInit
    - EVP_sha1
    - EVP_DigestFinal
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    linkageType: ''
    returnType: void
    signature: "void sha1_digest(unsigned char *mes, uint32_t len,\n\t\t\tunsigned
      char *digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:213,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:214,1
    - Dst: EVP_sha384
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:214,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:215,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:216,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - mes
    - len
    - digest
    argTypes:
    - unsigned char*
    - uint32_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 218
    functionName: sha384_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - EVP_DigestUpdate
    - EVP_DigestInit
    - EVP_DigestFinal
    - EVP_sha384
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    linkageType: ''
    returnType: void
    signature: "void sha384_digest(unsigned char *mes, uint32_t len,\n\t\t\t  unsigned
      char *digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_new
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:226,1
    - Dst: EVP_DigestInit
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:227,1
    - Dst: EVP_sha512
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:227,1
    - Dst: EVP_DigestUpdate
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:228,1
    - Dst: EVP_DigestFinal
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:229,1
    - Dst: EVP_MD_CTX_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - mes
    - len
    - digest
    argTypes:
    - unsigned char*
    - uint32_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 231
    functionName: sha512_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - EVP_DigestUpdate
    - EVP_DigestInit
    - EVP_DigestFinal
    - EVP_MD_CTX_new
    - EVP_MD_CTX_free
    - EVP_sha512
    linkageType: ''
    returnType: void
    signature: "void sha512_digest(unsigned char *mes, uint32_t len,\n\t\t\t  unsigned
      char *digest)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: md5_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:243,1
    - Dst: sha1_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:247,1
    - Dst: sha256_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:251,1
    - Dst: sha384_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:255,1
    - Dst: sha512_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:260,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - key
    - mes
    - len
    - digest
    argTypes:
    - enum keychain_hash_algo
    - unsigned char*
    - uint32_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 234
    functionDepth: 5
    functionLinenumber: 234
    functionLinenumberEnd: 269
    functionName: ospf6_hash_hmac_sha_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - sha512_digest
    - md5_digest
    - sha384_digest
    - sha256_digest
    - sha1_digest
    linkageType: ''
    returnType: void
    signature: "void ospf6_hash_hmac_sha_digest(enum keychain_hash_algo key,\n\t\t\t\t
      \      unsigned char *mes, uint32_t len,\n\t\t\t\t       unsigned char *digest)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:278,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:279,1
    - Dst: keychain_get_hash_len
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:282,1
    - Dst: keychain_lookup
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:285,1
    - Dst: key_lookup_for_send
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:287,1
    - Dst: keychain_get_hash_len
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:291,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:296,1
    - Dst: keychain_get_hash_len
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:299,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 303
    functionName: ospf6_auth_len_get
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - keychain_lookup
    - keychain_get_hash_len
    - key_lookup_for_send
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospf6_auth_len_get(struct ospf6_interface *oi)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:320,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:321,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:324,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:326,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:340,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:343,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:349,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:352,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:365,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:381,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:383,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:389,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:394,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:396,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:400,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:403,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:405,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:409,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:411,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:413,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:415,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:422,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:426,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:427,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:435,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:438,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:439,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 90
    argCount: 5
    argNames:
    - oi
    - pkt_len
    - oh
    - at_len
    - lls_block_len
    argTypes:
    - struct ospf6_interface*
    - unsigned int*
    - struct ospf6_header*
    - unsigned int*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 451
    functionName: ospf6_auth_validate_pkt
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - memset
    - zlog_err
    - ntohs
    - ospf6_neighbor_lookup
    - ospf6_message_type
    - ntohl
    - memcpy
    - OSPF6_OPT_ISSET_EXT
    linkageType: ''
    returnType: int
    signature: "int ospf6_auth_validate_pkt(struct ospf6_interface *oi, unsigned int
      *pkt_len,\n\t\t\t    struct ospf6_header *oh, unsigned int *at_len,\n\t\t\t
      \   unsigned int *lls_block_len)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:467,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:475,1
    - Dst: keychain_lookup
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:476,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:479,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:482,1
    - Dst: key_lookup_for_accept
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:486,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:486,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:489,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:491,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:501,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:504,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:507,1
    - Dst: keychain_get_hash_len
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:516,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:517,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:518,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:521,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:522,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:525,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:527,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:528,1
    - Dst: ospf6_auth_update_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:530,1
    - Dst: CRYPTO_memcmp
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:535,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:537,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 4
    argNames:
    - oh
    - oi
    - src
    - lls_block_len
    argTypes:
    - struct ospf6_header*
    - struct ospf6_interface*
    - struct in6_addr*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 543
    functionName: ospf6_auth_check_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - key_lookup_for_accept
    - keychain_lookup
    - memset
    - CHECK_FLAG
    - ospf6_auth_update_digest
    - zlog_err
    - CRYPTO_memcmp
    - ntohs
    - memcmp
    - ospf6_message_type
    - keychain_get_hash_len
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int ospf6_auth_check_digest(struct ospf6_header *oh, struct ospf6_interface
      *oi,\n\t\t\t    struct in6_addr *src, unsigned int lls_block_len)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:561,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:562,1
    - Dst: keychain_lookup
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:569,1
    - Dst: key_lookup_for_send
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:571,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:580,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:587,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:589,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:595,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:597,1
    - Dst: keychain_get_hash_len
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:601,1
    - Dst: ospf6_auth_seqno_nvm_update
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:611,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:619,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:623,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:626,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:628,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:632,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:633,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:634,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:636,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:637,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:638,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:639,1
    - Dst: ospf6_auth_update_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:641,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:649,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:652,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:658,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 70
    argCount: 5
    argNames:
    - src
    - oi
    - oh
    - auth_len
    - pkt_len
    argTypes:
    - struct in6_addr*
    - struct ospf6_interface*
    - struct ospf6_header*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 661
    functionName: ospf6_auth_digest_send
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - ospf6_auth_seqno_nvm_update
    - keychain_lookup
    - memset
    - htons
    - CHECK_FLAG
    - ospf6_auth_update_digest
    - zlog_err
    - ntohs
    - zlog_warn
    - UNSET_FLAG
    - key_lookup_for_send
    - XFREE
    - htonl
    - ospf6_message_type
    - keychain_get_hash_len
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_auth_digest_send(struct in6_addr *src, struct ospf6_interface
      *oi,\n\t\t\t    struct ospf6_header *oh, uint16_t auth_len,\n\t\t\t    uint32_t
      pkt_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: keychain_get_hash_len
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:669,1
    - Dst: keychain_get_block_size
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:670,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:671,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:672,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:683,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:684,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:685,1
    - Dst: ospf6_hash_hmac_sha_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:687,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:688,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:690,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:692,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:693,1
    - Dst: ospf6_hash_message_xor
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:695,1
    - Dst: ospf6_hash_message_xor
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:696,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:698,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:699,1
    - Dst: ospf6_hash_hmac_sha_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:701,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:704,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:705,1
    - Dst: ospf6_hash_hmac_sha_digest
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:707,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:710,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:711,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 6
    argNames:
    - oi
    - oh
    - ospf6_auth
    - auth_str
    - pkt_len
    - algo
    argTypes:
    - struct ospf6_interface*
    - struct ospf6_header*
    - struct ospf6_auth_hdr*
    - char*
    - uint32_t
    - enum keychain_hash_algo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 663
    functionDepth: 6
    functionLinenumber: 663
    functionLinenumberEnd: 713
    functionName: ospf6_auth_update_digest
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 2
    functionsReached:
    - keychain_get_block_size
    - strlen
    - memset
    - ospf6_hash_hmac_sha_digest
    - ospf6_hash_message_xor
    - XFREE
    - keychain_get_hash_len
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_auth_update_digest(struct ospf6_interface *oi,\n\t\t\t
      \     struct ospf6_header *oh,\n\t\t\t      struct ospf6_auth_hdr *ospf6_auth,
      char *auth_str,\n\t\t\t      uint32_t pkt_len, enum keychain_hash_algo algo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:767,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 764
    functionDepth: 2
    functionLinenumber: 764
    functionLinenumberEnd: 771
    functionName: config_write_ospf6_debug_auth
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_auth(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:775,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:776,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:777,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 779
    functionName: install_element_ospf6_debug_auth
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_auth(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:786,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:795,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 802
    functionName: ospf6_intf_auth_clear
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void ospf6_intf_auth_clear(struct vty *vty, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 854
    functionDepth: 1
    functionLinenumber: 854
    functionLinenumberEnd: 857
    functionName: install_element_ospf6_clear_intf_auth
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_clear_intf_auth(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:864,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 869
    functionName: ospf6_auth_nvm_file_exist
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: enum ospf6_auth_err
    signature: enum ospf6_auth_err ospf6_auth_nvm_file_exist(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:882,1
    - Dst: json_object_from_file
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:887,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:889,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:891,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:893,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:894,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:897,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:899,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:900,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:907,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:909,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:911,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 875
    functionDepth: 1
    functionLinenumber: 875
    functionLinenumberEnd: 912
    functionName: ospf6_auth_seqno_nvm_update
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_to_file_ext
    - json_object_object_get_ex
    - zlog_err
    - json_object_int_add
    - json_object_free
    - json_object_from_file
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void ospf6_auth_seqno_nvm_update(struct ospf6 *ospf6)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:924,1
    - Dst: json_object_from_file
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:929,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:931,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:933,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:935,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:936,1
    - Dst: json_object_object_del
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:939,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:941,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:943,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 944
    functionName: ospf6_auth_seqno_nvm_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_object_del
    - json_object_to_file_ext
    - json_object_object_get_ex
    - zlog_err
    - json_object_free
    - json_object_from_file
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void ospf6_auth_seqno_nvm_delete(struct ospf6 *ospf6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_from_file
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:961,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:963,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:965,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:967,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:968,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:971,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:973,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:974,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:978,1
    - Dst: json_object_get_int
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:980,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:982,1
    - Dst: strerror
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:983,1
    - Dst: json_object_object_del
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:985,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:986,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_auth_trailer.c:988,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 951
    functionDepth: 1
    functionLinenumber: 951
    functionLinenumberEnd: 989
    functionName: ospf6_auth_seqno_nvm_read
    functionSourceFile: /src/frr/ospf6d/ospf6_auth_trailer.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_get_int
    - json_object_object_del
    - strerror
    - json_object_to_file_ext
    - json_object_object_get_ex
    - zlog_err
    - json_object_free
    - json_object_from_file
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void ospf6_auth_seqno_nvm_read(struct ospf6 *ospf6)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 65
    functionName: ospf6_message_type
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ospf6_message_type(int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:97,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:98,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:99,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - oh
    argTypes:
    - struct ospf6_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: ospf6_header_print
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ospf6_header_print(struct ospf6_header *oh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_header_print
      Src: /src/frr/ospf6d/ospf6_message.c:109,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:110,1
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_message.c:115,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:117,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:118,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:120,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:121,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:121,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:122,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:124,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:126,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:130,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:132,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:134,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:134,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - oh
    - action
    argTypes:
    - struct ospf6_header*
    - int
    assertStmts:
    - condition: (oh->type == OSPF6_MESSAGE_TYPE_HELLO)
      pos:
        line_end: 109
        line_start: 109
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 136
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 136
    functionName: ospf6_hello_print
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_options_printbuf
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_header_print
    - ntohs
    - zlog_debug
    - OSPF6_MESSAGE_END
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_hello_print(struct ospf6_header *oh, int action)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_header_print
      Src: /src/frr/ospf6d/ospf6_message.c:144,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:145,1
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_message.c:150,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:152,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:153,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:154,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:155,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:156,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:157,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:158,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:160,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:162,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:168,1
    - Dst: ospf6_lsa_header_print_raw
      Src: /src/frr/ospf6d/ospf6_message.c:170,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:173,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - oh
    - action
    argTypes:
    - struct ospf6_header*
    - int
    assertStmts:
    - condition: (oh->type == OSPF6_MESSAGE_TYPE_DBDESC)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 175
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 175
    functionName: ospf6_dbdesc_print
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_options_printbuf
    - IS_OSPF6_DEBUG_MESSAGE
    - CHECK_FLAG
    - ospf6_header_print
    - ospf6_lsa_header_print_raw
    - ntohs
    - zlog_debug
    - OSPF6_MESSAGE_END
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_dbdesc_print(struct ospf6_header *oh, int action)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_header_print
      Src: /src/frr/ospf6d/ospf6_message.c:181,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:182,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:184,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:186,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:191,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:196,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_message.c:197,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:201,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:201,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - oh
    - action
    argTypes:
    - struct ospf6_header*
    - int
    assertStmts:
    - condition: (oh->type == OSPF6_MESSAGE_TYPE_LSREQ)
      pos:
        line_end: 181
        line_start: 181
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 200
        line_start: 200
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 203
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 203
    functionName: ospf6_lsreq_print
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_lstype_name
    - ospf6_header_print
    - zlog_debug
    - OSPF6_MESSAGE_END
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_lsreq_print(struct ospf6_header *oh, int action)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_header_print
      Src: /src/frr/ospf6d/ospf6_message.c:211,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:212,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:217,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:218,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:220,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:222,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:227,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:228,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:228,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:229,1
    - Dst: ospf6_lsa_header_print_raw
      Src: /src/frr/ospf6d/ospf6_message.c:230,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:234,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:234,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - oh
    - action
    argTypes:
    - struct ospf6_header*
    - int
    assertStmts:
    - condition: (oh->type == OSPF6_MESSAGE_TYPE_LSUPDATE)
      pos:
        line_end: 211
        line_start: 211
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 233
        line_start: 233
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 236
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 236
    functionName: ospf6_lsupdate_print
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_header_print
    - ospf6_lsa_header_print_raw
    - zlog_debug
    - OSPF6_LSA_SIZE
    - OSPF6_MESSAGE_END
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_lsupdate_print(struct ospf6_header *oh, int action)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_header_print
      Src: /src/frr/ospf6d/ospf6_message.c:242,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:243,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:245,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:247,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:252,1
    - Dst: ospf6_lsa_header_print_raw
      Src: /src/frr/ospf6d/ospf6_message.c:254,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:257,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:257,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - oh
    - action
    argTypes:
    - struct ospf6_header*
    - int
    assertStmts:
    - condition: (oh->type == OSPF6_MESSAGE_TYPE_LSACK)
      pos:
        line_end: 242
        line_start: 242
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 256
        line_start: 256
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 259
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 259
    functionName: ospf6_lsack_print
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_lsa_header_print_raw
    - ospf6_header_print
    - OSPF6_MESSAGE_END
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_lsack_print(struct ospf6_header *oh, int action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospf6d/ospf6_message.c:265,1
    - Dst: stream_new
      Src: /src/frr/ospf6d/ospf6_message.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: ospf6_packet_new
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - stream_new
    linkageType: ''
    returnType: struct ospf6_packet
    signature: struct ospf6_packet *ospf6_packet_new(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/ospf6d/ospf6_message.c:274,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_message.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - struct ospf6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 277
    functionName: ospf6_packet_free
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - stream_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_packet_free(struct ospf6_packet *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospf6d/ospf6_message.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 285
    functionName: ospf6_fifo_new
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    linkageType: ''
    returnType: struct ospf6_fifo
    signature: struct ospf6_fifo *ospf6_fifo_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fifo
    - op
    argTypes:
    - struct ospf6_fifo*
    - struct ospf6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 298
    functionName: ospf6_fifo_push
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf6_fifo_push(struct ospf6_fifo *fifo, struct ospf6_packet *op)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fifo
    - op
    argTypes:
    - struct ospf6_fifo*
    - struct ospf6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 312
    functionName: ospf6_fifo_push_head
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void ospf6_fifo_push_head(struct ospf6_fifo *fifo,\n\t\t\t\t struct
      ospf6_packet *op)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf6_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 331
    functionName: ospf6_fifo_pop
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ospf6_packet
    signature: struct ospf6_packet *ospf6_fifo_pop(struct ospf6_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf6_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 337
    functionName: ospf6_fifo_head
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ospf6_packet
    signature: struct ospf6_packet *ospf6_fifo_head(struct ospf6_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf6_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 351
    functionName: ospf6_fifo_flush
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_packet_free
    linkageType: ''
    returnType: void
    signature: void ospf6_fifo_flush(struct ospf6_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_fifo_flush
      Src: /src/frr/ospf6d/ospf6_message.c:356,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_message.c:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fifo
    argTypes:
    - struct ospf6_fifo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 354
    functionDepth: 3
    functionLinenumber: 354
    functionLinenumberEnd: 359
    functionName: ospf6_fifo_free
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fifo_flush
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_fifo_free(struct ospf6_fifo *fifo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_fifo_push
      Src: /src/frr/ospf6d/ospf6_message.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oi
    - op
    argTypes:
    - struct ospf6_interface*
    - struct ospf6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 369
    functionName: ospf6_packet_add
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fifo_push
    linkageType: ''
    returnType: void
    signature: "void ospf6_packet_add(struct ospf6_interface *oi,\n\t\t\t     struct
      ospf6_packet *op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_fifo_push_head
      Src: /src/frr/ospf6d/ospf6_message.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oi
    - op
    argTypes:
    - struct ospf6_interface*
    - struct ospf6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 379
    functionName: ospf6_packet_add_top
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fifo_push_head
    linkageType: ''
    returnType: void
    signature: "void ospf6_packet_add_top(struct ospf6_interface *oi,\n\t\t\t\t struct
      ospf6_packet *op)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_fifo_pop
      Src: /src/frr/ospf6d/ospf6_message.c:385,1
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:388,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 389
    functionName: ospf6_packet_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_packet_free
    - ospf6_fifo_pop
    linkageType: ''
    returnType: void
    signature: void ospf6_packet_delete(struct ospf6_interface *oi)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_message.c:406,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:411,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:412,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:416,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:421,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:422,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:426,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_message.c:431,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_message.c:432,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:433,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_message.c:440,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_message.c:441,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:442,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_message.c:447,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_message.c:450,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:454,1
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:462,1
    - Dst: ospf6_neighbor_create
      Src: /src/frr/ospf6d/ospf6_message.c:464,1
    - Dst: monotime_since
      Src: /src/frr/ospf6d/ospf6_message.c:472,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:476,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_message.c:482,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:485,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:486,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:492,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:500,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:500,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_message.c:531,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:538,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:540,1
    - Dst: OSPF6_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospf6d/ospf6_message.c:542,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:544,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:556,1
    - Dst: OSPF6_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospf6d/ospf6_message.c:560,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:573,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:597,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:599,1
    - Dst: OSPF6_ROUTER_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_message.c:602,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 94
    argCount: 4
    argNames:
    - src
    - dst
    - oi
    - oh
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - struct ospf6_interface*
    - struct ospf6_header*
    assertStmts:
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 499
        line_start: 499
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 603
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 603
    functionName: ospf6_hello_recv
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - assert
    - event_execute
    - monotime
    - OSPF6_ROUTER_LSA_SCHEDULE
    - ntohs
    - OSPF6_GR_IS_ACTIVE_HELPER
    - zlog_warn
    - ospf6_neighbor_lookup
    - monotime_since
    - OSPF6_OPT_ISSET
    - OSPF6_MESSAGE_END
    - zlog_debug
    - htonl
    - event_add_event
    - ospf6_neighbor_create
    - ntohl
    - memcpy
    - OSPF6_OPT_ISSET_EXT
    linkageType: ''
    returnType: void
    signature: "void ospf6_hello_recv(struct in6_addr *src, struct in6_addr *dst,\n\t\t\t
      \    struct ospf6_interface *oi,\n\t\t\t     struct ospf6_header *oh)"
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:615,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:616,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:622,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:623,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:627,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:629,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:630,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:639,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:640,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:641,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:643,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_message.c:646,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:649,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_message.c:656,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:660,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:661,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:666,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:667,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:670,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:675,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:676,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:678,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_message.c:683,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:684,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:686,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:691,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:692,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:694,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:696,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_message.c:704,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:708,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:709,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:714,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:717,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:721,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:727,1
    - Dst: ospf6_lsa_create_headeronly
      Src: /src/frr/ospf6d/ospf6_message.c:732,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:734,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:735,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_message.c:737,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:748,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:749,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:750,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:754,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_message.c:755,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_message.c:756,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:757,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:758,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:760,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:761,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:766,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:769,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:770,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_message.c:771,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_message.c:771,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_message.c:772,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:773,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:774,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_message.c:775,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_message.c:775,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:777,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:778,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:780,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:783,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:783,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:790,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_message.c:793,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:797,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:798,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:801,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_message.c:806,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 121
    argCount: 2
    argNames:
    - oh
    - 'on'
    argTypes:
    - struct ospf6_header*
    - struct ospf6_neighbor*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 720
        line_start: 720
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 782
        line_start: 782
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 807
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 807
    functionName: ospf6_dbdesc_recv_master
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_MESSAGE
    - memcmp
    - ntohs
    - zlog_warn
    - ospf6_lsdb_add
    - OSPF6_LSA_SCOPE
    - ospf6_lsa_compare
    - zlog_debug
    - OSPF6_MESSAGE_END
    - ntohl
    - assert
    - ospf6_lsa_copy
    - event_add_event
    - EVENT_OFF
    - memcpy
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - CHECK_FLAG
    - event_execute
    - ospf6_lsa_delete
    - ospf6_lsdb_lookup
    - ospf6_lsa_create_headeronly
    linkageType: ''
    returnType: void
    signature: "void ospf6_dbdesc_recv_master(struct ospf6_header *oh,\n\t\t\t\t     struct
      ospf6_neighbor *on)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:819,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:820,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:826,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:827,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:831,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:833,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:834,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:844,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:845,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:846,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:847,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:851,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:855,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:858,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_message.c:861,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:864,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_message.c:871,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:875,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:876,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_message.c:878,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:879,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:884,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:885,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:888,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:893,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:894,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:897,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_message.c:902,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:903,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:906,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:911,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:912,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:914,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:916,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_message.c:924,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:928,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:929,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_message.c:931,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:932,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:937,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:940,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:944,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:950,1
    - Dst: ospf6_lsa_create_headeronly
      Src: /src/frr/ospf6d/ospf6_message.c:955,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_message.c:957,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:968,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:969,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:970,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_message.c:974,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_message.c:975,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_message.c:976,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:977,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:978,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:979,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:980,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:985,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_message.c:987,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:988,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:989,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_message.c:990,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_message.c:990,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:992,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:995,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:995,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:998,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:1002,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_message.c:1005,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:1006,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_message.c:1010,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 115
    argCount: 2
    argNames:
    - oh
    - 'on'
    argTypes:
    - struct ospf6_header*
    - struct ospf6_neighbor*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 943
        line_start: 943
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 994
        line_start: 994
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 1011
      start: 809
    functionDepth: 1
    functionLinenumber: 809
    functionLinenumberEnd: 1011
    functionName: ospf6_dbdesc_recv_slave
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_MESSAGE
    - memcmp
    - ntohs
    - zlog_warn
    - ospf6_lsdb_add
    - OSPF6_LSA_SCOPE
    - ospf6_lsa_compare
    - zlog_debug
    - OSPF6_MESSAGE_END
    - ntohl
    - assert
    - ospf6_lsa_copy
    - UNSET_FLAG
    - EVENT_OFF
    - event_add_event
    - memcpy
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - CHECK_FLAG
    - event_execute
    - ospf6_lsa_delete
    - ospf6_lsdb_lookup
    - ospf6_lsa_create_headeronly
    linkageType: ''
    returnType: void
    signature: "void ospf6_dbdesc_recv_slave(struct ospf6_header *oh,\n\t\t\t\t    struct
      ospf6_neighbor *on)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1020,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1022,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1023,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_message.c:1030,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_message.c:1033,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1037,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:1045,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1046,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:1048,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1053,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1054,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:1063,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:1063,1
    - Dst: ospf6_dbdesc_recv_master
      Src: /src/frr/ospf6d/ospf6_message.c:1064,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:1065,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:1065,1
    - Dst: ospf6_dbdesc_recv_slave
      Src: /src/frr/ospf6d/ospf6_message.c:1066,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1068,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1069,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 4
    argNames:
    - src
    - dst
    - oi
    - oh
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - struct ospf6_interface*
    - struct ospf6_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1013
    functionDepth: 2
    functionLinenumber: 1013
    functionLinenumberEnd: 1071
    functionName: ospf6_dbdesc_recv
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_dbdesc_recv_master
    - ntohs
    - zlog_warn
    - zlog_debug
    - ospf6_neighbor_lookup
    - ospf6_dbdesc_recv_slave
    - ntohl
    - OSPF6_OPT_ISSET_EXT
    linkageType: ''
    returnType: void
    signature: "void ospf6_dbdesc_recv(struct in6_addr *src, struct in6_addr *dst,\n\t\t\t
      \     struct ospf6_interface *oi,\n\t\t\t      struct ospf6_header *oh)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1083,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1085,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1086,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1093,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1094,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:1102,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_message.c:1106,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1117,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1118,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1123,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1125,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_message.c:1127,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:1129,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_message.c:1133,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_message.c:1133,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:1136,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:1136,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_message.c:1139,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:1140,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 4
    argNames:
    - src
    - dst
    - oi
    - oh
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - struct ospf6_interface*
    - struct ospf6_header*
    assertStmts:
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 1135
        line_start: 1135
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 1142
      start: 1073
    functionDepth: 1
    functionLinenumber: 1073
    functionLinenumberEnd: 1142
    functionName: ospf6_lsreq_recv
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_copy
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_lstype_name
    - zlog_debug
    - zlog_warn
    - event_add_event
    - OSPF6_MESSAGE_END
    - EVENT_OFF
    - ospf6_lsdb_add
    - OSPF6_LSA_SCOPE
    - ospf6_lsdb_lookup
    - assert
    - ospf6_neighbor_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsreq_recv(struct in6_addr *src, struct in6_addr *dst,\n\t\t\t
      \    struct ospf6_interface *oi,\n\t\t\t     struct ospf6_header *oh)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1158,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1164,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_message.c:1171,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1173,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - current
    - length
    - req_num_pfxs
    argTypes:
    - struct ospf6_prefix*
    - unsigned
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1146
    functionDepth: 1
    functionLinenumber: 1146
    functionLinenumberEnd: 1189
    functionName: ospf6_prefixes_examin
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - OSPF6_PREFIX_SPACE
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf6_prefixes_examin(\n\tstruct ospf6_prefix *current, /*
      start of buffer    */\n\tunsigned length,\n\tconst uint32_t req_num_pfxs /*
      always compared with the actual number\n\t\t\t\t\tof prefixes */\n)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:1210,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1214,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1224,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1236,1
    - Dst: ospf6_prefixes_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1248,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1259,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1286,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:1292,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:1295,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1304,1
    - Dst: ospf6_prefixes_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1311,1
    - Dst: ospf6_prefixes_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1324,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:1329,1
    - Dst: ospf6_prefixes_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1341,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:1347,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1353,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 69
    argCount: 3
    argNames:
    - lsah
    - lsalen
    - headeronly
    argTypes:
    - struct ospf6_lsa_header*
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1196
    functionDepth: 2
    functionLinenumber: 1196
    functionLinenumberEnd: 1362
    functionName: ospf6_lsa_examin
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ospf6_prefixes_examin
    - ntohs
    - zlog_warn
    - zlog_debug
    - ntohl
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf6_lsa_examin(struct ospf6_lsa_header *lsah,\n\t\t\t\t
      const uint16_t lsalen,\n\t\t\t\t const uint8_t headeronly)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1380,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:1386,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1388,1
    - Dst: ospf6_lsa_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1395,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1396,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_message.c:1398,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1410,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_message.c:1412,1
    - Dst: ospf6_lsa_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1416,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1417,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_message.c:1418,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1430,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 4
    argNames:
    - lsah
    - length
    - headeronly
    - declared_num_lsas
    argTypes:
    - struct ospf6_lsa_header*
    - size_t
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1367
    functionDepth: 3
    functionLinenumber: 1367
    functionLinenumberEnd: 1435
    functionName: ospf6_lsaseq_examin
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_examin
    - ospf6_lstype_name
    - zlog_warn
    - OSPF6_LSA_SIZE
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf6_lsaseq_examin(struct ospf6_lsa_header *lsah, /* start
      of buffered data */\n\t\t    size_t length, const uint8_t headeronly,\n\t\t
      \   /* When declared_num_lsas is not 0, compare it to the real\n\t\t       number
      of LSAs\n\t\t       and treat the difference as an error. */\n\t\t    const
      uint32_t declared_num_lsas)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1446,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:1452,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1453,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:1454,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:1455,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1461,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1469,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:1470,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1483,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:1484,1
    - Dst: ospf6_lsaseq_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1490,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1504,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:1505,1
    - Dst: ospf6_lsaseq_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1513,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:1517,1
    - Dst: ospf6_lsaseq_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1522,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1530,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1534,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:1535,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 2
    argNames:
    - oh
    - bytesonwire
    argTypes:
    - struct ospf6_header*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1438
    functionDepth: 4
    functionLinenumber: 1438
    functionLinenumberEnd: 1537
    functionName: ospf6_packet_examin
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ntohs
    - zlog_warn
    - ospf6_lsaseq_examin
    - ospf6_message_type
    - ntohl
    linkageType: ''
    returnType: unsigned
    signature: "unsigned ospf6_packet_examin(struct ospf6_header *oh,\n\t\t\t\t    const
      unsigned bytesonwire)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_packet_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1547,1
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1550,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1555,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1560,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1570,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:1580,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - oi
    - oh
    - bytesonwire
    argTypes:
    - struct ospf6_interface*
    - struct ospf6_header*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1541
    functionDepth: 5
    functionLinenumber: 1541
    functionLinenumberEnd: 1586
    functionName: ospf6_rxpacket_examin
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_packet_examin
    - zlog_warn
    - ospf6_neighbor_lookup
    linkageType: ''
    returnType: int
    signature: "int ospf6_rxpacket_examin(struct ospf6_interface *oi,\n\t\t\t\t struct
      ospf6_header *oh,\n\t\t\t\t const unsigned bytesonwire)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1596,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1598,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1599,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1606,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1607,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:1618,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:1619,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:1619,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:1620,1
    - Dst: ospf6_receive_lsa
      Src: /src/frr/ospf6d/ospf6_message.c:1621,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:1624,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:1624,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 4
    argNames:
    - src
    - dst
    - oi
    - oh
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - struct ospf6_interface*
    - struct ospf6_header*
    assertStmts:
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 1623
        line_start: 1623
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 1625
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1625
    functionName: ospf6_lsupdate_recv
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_MESSAGE
    - zlog_debug
    - OSPF6_LSA_SIZE
    - OSPF6_MESSAGE_END
    - ospf6_receive_lsa
    - assert
    - ospf6_neighbor_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsupdate_recv(struct in6_addr *src, struct in6_addr *dst,\n\t\t\t\tstruct
      ospf6_interface *oi,\n\t\t\t\tstruct ospf6_header *oh)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:1636,1
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1638,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1640,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1641,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1648,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1649,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:1656,1
    - Dst: ospf6_lsa_create_headeronly
      Src: /src/frr/ospf6d/ospf6_message.c:1658,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_message.c:1660,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1671,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1672,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:1673,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1677,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1678,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1682,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1685,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1686,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:1687,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:1692,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1696,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1697,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:1699,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_message.c:1703,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1706,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1707,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:1708,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1712,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1713,1
    - Dst: ospf6_decrement_retrans_count
      Src: /src/frr/ospf6d/ospf6_message.c:1717,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1718,1
    - Dst: ospf6_maxage_remove
      Src: /src/frr/ospf6d/ospf6_message.c:1719,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:1720,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_message.c:1721,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:1724,1
    - Dst: OSPF6_MESSAGE_END
      Src: /src/frr/ospf6d/ospf6_message.c:1724,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 63
    argCount: 4
    argNames:
    - src
    - dst
    - oi
    - oh
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - struct ospf6_interface*
    - struct ospf6_header*
    assertStmts:
    - condition: (oh->type == OSPF6_MESSAGE_TYPE_LSACK)
      pos:
        line_end: 1635
        line_start: 1635
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (p == OSPF6_MESSAGE_END(oh))
      pos:
        line_end: 1723
        line_start: 1723
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 1725
      start: 1627
    functionDepth: 1
    functionLinenumber: 1627
    functionLinenumberEnd: 1725
    functionName: ospf6_lsack_recv
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_decrement_retrans_count
    - IS_OSPF6_DEBUG_MESSAGE
    - OSPF6_LSA_IS_MAXAGE
    - ospf6_lsdb_remove
    - ospf6_lsa_create_headeronly
    - ospf6_lsa_compare
    - ospf6_maxage_remove
    - zlog_debug
    - OSPF6_MESSAGE_END
    - ospf6_lsa_delete
    - OSPF6_LSA_SCOPE
    - ospf6_lsdb_lookup
    - assert
    - ospf6_neighbor_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsack_recv(struct in6_addr *src, struct in6_addr *dst,\n\t\t\t
      \    struct ospf6_interface *oi,\n\t\t\t     struct ospf6_header *oh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:1743,1
    - Dst: XMALLOC
      Src: /src/frr/ospf6d/ospf6_message.c:1745,1
    - Dst: XMALLOC
      Src: /src/frr/ospf6d/ospf6_message.c:1746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - size
    argTypes:
    - unsigned int
    assertStmts:
    - condition: (!recvbuf && !sendbuf)
      pos:
        line_end: 1742
        line_start: 1742
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 1751
      start: 1731
    functionDepth: 1
    functionLinenumber: 1731
    functionLinenumberEnd: 1751
    functionName: ospf6_iobuf_size
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - assert
    linkageType: ''
    returnType: int
    signature: int ospf6_iobuf_size(unsigned int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_message.c:1755,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_message.c:1756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1753
    functionDepth: 0
    functionLinenumber: 1753
    functionLinenumberEnd: 1759
    functionName: ospf6_message_terminate
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_message_terminate(void)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_message.c:1779,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_message.c:1780,1
    - Dst: ospf6_recvmsg
      Src: /src/frr/ospf6d/ospf6_message.c:1788,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_message.c:1793,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_message.c:1798,1
    - Dst: MIN
      Src: /src/frr/ospf6d/ospf6_message.c:1798,1
    - Dst: ospf6_interface_lookup_by_ifindex
      Src: /src/frr/ospf6d/ospf6_message.c:1800,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:1802,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1803,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1805,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:1808,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1809,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1811,1
    - Dst: ospf6_auth_validate_pkt
      Src: /src/frr/ospf6d/ospf6_message.c:1824,1
    - Dst: ospf6_auth_check_digest
      Src: /src/frr/ospf6d/ospf6_message.c:1827,1
    - Dst: zlog_err
      Src: /src/frr/ospf6d/ospf6_message.c:1830,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:1833,1
    - Dst: ospf6_rxpacket_examin
      Src: /src/frr/ospf6d/ospf6_message.c:1842,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:1851,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1852,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:1852,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1854,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:1855,1
    - Dst: ospf6_hello_print
      Src: /src/frr/ospf6d/ospf6_message.c:1859,1
    - Dst: ospf6_dbdesc_print
      Src: /src/frr/ospf6d/ospf6_message.c:1862,1
    - Dst: ospf6_lsreq_print
      Src: /src/frr/ospf6d/ospf6_message.c:1865,1
    - Dst: ospf6_lsupdate_print
      Src: /src/frr/ospf6d/ospf6_message.c:1868,1
    - Dst: ospf6_lsack_print
      Src: /src/frr/ospf6d/ospf6_message.c:1871,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:1874,1
    - Dst: ospf6_auth_hdr_dump_recv
      Src: /src/frr/ospf6d/ospf6_message.c:1878,1
    - Dst: ospf6_hello_recv
      Src: /src/frr/ospf6d/ospf6_message.c:1884,1
    - Dst: ospf6_dbdesc_recv
      Src: /src/frr/ospf6d/ospf6_message.c:1888,1
    - Dst: ospf6_lsreq_recv
      Src: /src/frr/ospf6d/ospf6_message.c:1892,1
    - Dst: ospf6_lsupdate_recv
      Src: /src/frr/ospf6d/ospf6_message.c:1896,1
    - Dst: ospf6_lsack_recv
      Src: /src/frr/ospf6d/ospf6_message.c:1900,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:1904,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 92
    argCount: 2
    argNames:
    - sockfd
    - ospf6
    argTypes:
    - int
    - struct ospf6*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1873
        line_start: 1873
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (0)
      pos:
        line_end: 1903
        line_start: 1903
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 1908
      start: 1766
    functionDepth: 6
    functionLinenumber: 1766
    functionLinenumberEnd: 1908
    functionName: ospf6_read_helper
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_lsupdate_print
    - ospf6_auth_check_digest
    - ospf6_lsreq_print
    - IS_OSPF6_DEBUG_MESSAGE
    - flog_err
    - ospf6_dbdesc_recv
    - MIN
    - memset
    - zlog_debug
    - ospf6_interface_lookup_by_ifindex
    - ospf6_lsack_recv
    - ospf6_message_type
    - assert
    - ospf6_auth_hdr_dump_recv
    - ospf6_dbdesc_print
    - zlog_err
    - ospf6_recvmsg
    - ospf6_hello_print
    - ospf6_auth_validate_pkt
    - ospf6_lsupdate_recv
    - CHECK_FLAG
    - ospf6_lsack_print
    - ospf6_hello_recv
    - ospf6_rxpacket_examin
    - ospf6_lsreq_recv
    linkageType: ''
    returnType: int
    signature: int ospf6_read_helper(int sockfd, struct ospf6 *ospf6)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:1917,1
    - Dst: EVENT_FD
      Src: /src/frr/ospf6d/ospf6_message.c:1918,1
    - Dst: event_add_read
      Src: /src/frr/ospf6d/ospf6_message.c:1920,1
    - Dst: ospf6_read_helper
      Src: /src/frr/ospf6d/ospf6_message.c:1925,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1910
    functionDepth: 7
    functionLinenumber: 1910
    functionLinenumberEnd: 1932
    functionName: ospf6_receive
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - ospf6_read_helper
    - EVENT_FD
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf6_receive(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_message.c:1944,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_message.c:1945,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_message.c:1946,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospf6d/ospf6_message.c:1950,1
    - Dst: in_cksum_with_ph6
      Src: /src/frr/ospf6d/ospf6_message.c:1952,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - oi
    - op
    argTypes:
    - struct ospf6_interface*
    - struct ospf6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1934
    functionDepth: 2
    functionLinenumber: 1934
    functionLinenumberEnd: 1953
    functionName: ospf6_fill_hdr_checksum
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - htonl
    - in_cksum_with_ph6
    - STREAM_DATA
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_fill_hdr_checksum(struct ospf6_interface *oi,\n\t\t\t\t
      \   struct ospf6_packet *op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospf6d/ospf6_message.c:1960,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospf6d/ospf6_message.c:1972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - type
    - oi
    - s
    argTypes:
    - uint8_t
    - struct ospf6_interface*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1955
    functionDepth: 2
    functionLinenumber: 1955
    functionLinenumberEnd: 1973
    functionName: ospf6_make_header
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - stream_forward_endp
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: "void ospf6_make_header(uint8_t type, struct ospf6_interface *oi,\n\t\t\t
      \     struct stream *s)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospf6d/ospf6_message.c:1980,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_message.c:1982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - oi
    - s
    - length
    argTypes:
    - struct ospf6_interface*
    - struct stream*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1975
    functionDepth: 1
    functionLinenumber: 1975
    functionLinenumberEnd: 1983
    functionName: ospf6_fill_header
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    - htons
    linkageType: ''
    returnType: void
    signature: "void ospf6_fill_header(struct ospf6_interface *oi, struct stream *s,\n\t\t\t
      \     uint16_t length)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospf6d/ospf6_message.c:1990,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_message.c:1994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s
    - lsa_num
    argTypes:
    - struct stream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1985
    functionDepth: 1
    functionLinenumber: 1985
    functionLinenumberEnd: 1995
    functionName: ospf6_fill_lsupdate_header
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - htonl
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: void ospf6_fill_lsupdate_header(struct stream *s, uint32_t lsa_num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: keychain_lookup
      Src: /src/frr/ospf6d/ospf6_message.c:2004,1
    - Dst: key_lookup_for_send
      Src: /src/frr/ospf6d/ospf6_message.c:2006,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_message.c:2016,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_message.c:2018,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2021,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2025
      start: 1997
    functionDepth: 1
    functionLinenumber: 1997
    functionLinenumberEnd: 2025
    functionName: ospf6_auth_trailer_copy_keychain_key
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - keychain_lookup
    - SET_FLAG
    - XFREE
    - key_lookup_for_send
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void ospf6_auth_trailer_copy_keychain_key(struct ospf6_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2031,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2034,1
    - Dst: ospf6_auth_trailer_copy_keychain_key
      Src: /src/frr/ospf6d/ospf6_message.c:2035,1
    - Dst: keychain_get_hash_len
      Src: /src/frr/ospf6d/ospf6_message.c:2038,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts:
    - condition: (oi->ifmtu > sizeof(struct ip6_hdr))
      pos:
        line_end: 2030
        line_start: 2030
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 2043
      start: 2027
    functionDepth: 2
    functionLinenumber: 2027
    functionLinenumberEnd: 2043
    functionName: ospf6_packet_max
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_auth_trailer_copy_keychain_key
    - CHECK_FLAG
    - keychain_get_hash_len
    - assert
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospf6_packet_max(struct ospf6_interface *oi)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/ospf6d/ospf6_message.c:2055,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2056,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2057,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2058,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2059,1
    - Dst: stream_putw
      Src: /src/frr/ospf6d/ospf6_message.c:2060,1
    - Dst: stream_putw
      Src: /src/frr/ospf6d/ospf6_message.c:2061,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospf6d/ospf6_message.c:2062,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospf6d/ospf6_message.c:2063,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_message.c:2065,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_message.c:2069,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2070,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2071,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2073,1
    - Dst: stream_put_ipv4
      Src: /src/frr/ospf6d/ospf6_message.c:2078,1
    - Dst: ospf6_write
      Src: /src/frr/ospf6d/ospf6_message.c:2085,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2087,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:2100,1
    - Dst: listhead
      Src: /src/frr/ospf6d/ospf6_message.c:2104,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2105,1
    - Dst: listgetdata
      Src: /src/frr/ospf6d/ospf6_message.c:2106,1
    - Dst: ospf6_fifo_head
      Src: /src/frr/ospf6d/ospf6_message.c:2109,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2110,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2111,1
    - Dst: stream_pnt
      Src: /src/frr/ospf6d/ospf6_message.c:2113,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospf6d/ospf6_message.c:2118,1
    - Dst: ospf6_auth_len_get
      Src: /src/frr/ospf6d/ospf6_message.c:2121,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2124,1
    - Dst: ospf6_auth_digest_send
      Src: /src/frr/ospf6d/ospf6_message.c:2125,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2129,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2132,1
    - Dst: ospf6_sendmsg
      Src: /src/frr/ospf6d/ospf6_message.c:2135,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_message.c:2140,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2143,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2144,1
    - Dst: ospf6_message_type
      Src: /src/frr/ospf6d/ospf6_message.c:2145,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2147,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2148,1
    - Dst: ospf6_hello_print
      Src: /src/frr/ospf6d/ospf6_message.c:2151,1
    - Dst: ospf6_dbdesc_print
      Src: /src/frr/ospf6d/ospf6_message.c:2154,1
    - Dst: ospf6_lsreq_print
      Src: /src/frr/ospf6d/ospf6_message.c:2157,1
    - Dst: ospf6_lsupdate_print
      Src: /src/frr/ospf6d/ospf6_message.c:2160,1
    - Dst: ospf6_lsack_print
      Src: /src/frr/ospf6d/ospf6_message.c:2163,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2166,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2167,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_message.c:2173,1
    - Dst: monotime_since
      Src: /src/frr/ospf6d/ospf6_message.c:2175,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_message.c:2181,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2200,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2201,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2206,1
    - Dst: ospf6_auth_hdr_dump_send
      Src: /src/frr/ospf6d/ospf6_message.c:2208,1
    - Dst: ospf6_packet_delete
      Src: /src/frr/ospf6d/ospf6_message.c:2214,1
    - Dst: list_delete_node
      Src: /src/frr/ospf6d/ospf6_message.c:2218,1
    - Dst: ospf6_fifo_head
      Src: /src/frr/ospf6d/ospf6_message.c:2219,1
    - Dst: listnode_add
      Src: /src/frr/ospf6d/ospf6_message.c:2223,1
    - Dst: list_isempty
      Src: /src/frr/ospf6d/ospf6_message.c:2227,1
    - Dst: listhead
      Src: /src/frr/ospf6d/ospf6_message.c:2228,1
    - Dst: listgetdata
      Src: /src/frr/ospf6d/ospf6_message.c:2229,1
    - Dst: list_isempty
      Src: /src/frr/ospf6d/ospf6_message.c:2234,1
    - Dst: event_add_write
      Src: /src/frr/ospf6d/ospf6_message.c:2235,1
    - Dst: ospf6_hello_send
      Src: /src/frr/ospf6d/ospf6_message.c:2239,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2245,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2252,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2253,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2258,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2260,1
    - Dst: ospf6_make_hello
      Src: /src/frr/ospf6d/ospf6_message.c:2263,1
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:2266,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2271,1
    - Dst: ospf6_fill_hdr_checksum
      Src: /src/frr/ospf6d/ospf6_message.c:2278,1
    - Dst: ospf6_packet_add_top
      Src: /src/frr/ospf6d/ospf6_message.c:2283,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_message.c:2286,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2289,1
    - Dst: ospf6_make_dbdesc
      Src: /src/frr/ospf6d/ospf6_message.c:2292,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2302,1
    - Dst: frr_sequence32_next
      Src: /src/frr/ospf6d/ospf6_message.c:2304,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2308,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2309,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2310,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2311,1
    - Dst: stream_putw
      Src: /src/frr/ospf6d/ospf6_message.c:2312,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2313,1
    - Dst: stream_putc
      Src: /src/frr/ospf6d/ospf6_message.c:2314,1
    - Dst: stream_putl
      Src: /src/frr/ospf6d/ospf6_message.c:2315,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2318,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2319,1
    - Dst: ospf6_lsa_age_update_to_send
      Src: /src/frr/ospf6d/ospf6_message.c:2320,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_message.c:2324,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2326,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2327,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_message.c:2328,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2329,1
    - Dst: stream_put
      Src: /src/frr/ospf6d/ospf6_message.c:2332,1
    - Dst: ospf6_dbdesc_send
      Src: /src/frr/ospf6d/ospf6_message.c:2340,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2346,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2349,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2350,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2357,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_message.c:2358,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2362,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2363,1
    - Dst: ospf6_make_dbdesc
      Src: /src/frr/ospf6d/ospf6_message.c:2365,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2366,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2378,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2380,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2389,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_message.c:2390,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2396,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_message.c:2398,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_message.c:2399,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2400,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2401,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2406,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2407,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2409,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_message.c:2413,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_message.c:2413,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2414,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2422,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2424,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2425,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:2428,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2436,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2438,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2439,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2441,1
    - Dst: stream_putw
      Src: /src/frr/ospf6d/ospf6_message.c:2444,1
    - Dst: stream_putw
      Src: /src/frr/ospf6d/ospf6_message.c:2445,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2445,1
    - Dst: stream_putl
      Src: /src/frr/ospf6d/ospf6_message.c:2446,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:2446,1
    - Dst: stream_putl
      Src: /src/frr/ospf6d/ospf6_message.c:2447,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:2447,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2454,1
    - Dst: ospf6_lsa_lock
      Src: /src/frr/ospf6d/ospf6_message.c:2456,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 73
    argCount: 2
    argNames:
    - oi
    - s
    argTypes:
    - struct ospf6_interface*
    - struct stream*
    assertStmts:
    - condition: (op)
      pos:
        line_end: 2109
        line_start: 2109
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (0)
      pos:
        line_end: 2166
        line_start: 2166
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (0)
      pos:
        line_end: 2200
        line_start: 2200
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (node)
      pos:
        line_end: 2104
        line_start: 2104
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (op->length >= OSPF6_HEADER_SIZE)
      pos:
        line_end: 2110
        line_start: 2110
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 2461
      start: 2045
    functionDepth: 3
    functionLinenumber: 2045
    functionLinenumberEnd: 2461
    functionName: ospf6_make_hello
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 1
    functionsReached:
    - ospf6_lsupdate_print
    - ospf6_lsreq_print
    - ospf6_lsa_lock
    - ospf6_lsa_unlock
    - IS_OSPF6_DEBUG_MESSAGE
    - stream_put
    - ospf6_packet_add
    - listhead
    - ospf6_make_header
    - listnode_add
    - ALL_LSDB
    - ntohs
    - ospf6_dbdesc_send
    - zlog_warn
    - flog_err
    - ospf6_auth_digest_send
    - stream_put_ipv4
    - ospf6_sendmsg
    - ospf6_lsdb_add
    - ospf6_fifo_head
    - stream_putc
    - ospf6_hello_send
    - frr_sequence32_next
    - ospf6_packet_free
    - ospf6_fill_header
    - event_add_write
    - OSPF6_MESSAGE_WRITE_ON
    - ospf6_lsdb_remove
    - zlog_debug
    - EVENT_ARG
    - listgetdata
    - if
    - ospf6_message_type
    - ntohl
    - assert
    - ospf6_lsa_copy
    - ospf6_packet_add_top
    - ospf6_write
    - ospf6_dbdesc_print
    - monotime
    - list_delete_node
    - UNSET_FLAG
    - monotime_since
    - event_add_event
    - ospf6_auth_hdr_dump_send
    - event_add_timer
    - stream_pnt
    - ospf6_hello_print
    - ospf6_lsa_age_update_to_send
    - ospf6_packet_delete
    - IS_AREA_STUB
    - ospf6_make_hello
    - ospf6_packet_max
    - ospf6_fill_hdr_checksum
    - ospf6_auth_len_get
    - ospf6_make_dbdesc
    - IS_AREA_NSSA
    - list_isempty
    - STREAM_DATA
    - ospf6_lsack_print
    - stream_putw
    - CHECK_FLAG
    - ospf6_lsdb_remove_all
    - event_execute
    - ALL_LIST_ELEMENTS
    - ospf6_packet_new
    - stream_putl
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospf6_make_hello(struct ospf6_interface *oi, struct stream
      *s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2389,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_message.c:2390,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2396,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_message.c:2398,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_message.c:2399,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2400,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2401,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2406,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2407,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2409,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_message.c:2413,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_message.c:2413,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2414,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2419,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2422,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_message.c:2424,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2425,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:2428,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2383
    functionDepth: 3
    functionLinenumber: 2383
    functionLinenumberEnd: 2429
    functionName: ospf6_dbdesc_send_newone
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - ospf6_packet_max
    - ospf6_lsa_copy
    - ospf6_lsa_unlock
    - CHECK_FLAG
    - event_execute
    - ospf6_lsdb_remove_all
    - ALL_LSDB
    - ospf6_lsdb_remove
    - ntohs
    - UNSET_FLAG
    - EVENT_ARG
    - ospf6_lsdb_add
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_dbdesc_send_newone(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2436,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2438,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2439,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2441,1
    - Dst: stream_putw
      Src: /src/frr/ospf6d/ospf6_message.c:2444,1
    - Dst: stream_putw
      Src: /src/frr/ospf6d/ospf6_message.c:2445,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2445,1
    - Dst: stream_putl
      Src: /src/frr/ospf6d/ospf6_message.c:2446,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:2446,1
    - Dst: stream_putl
      Src: /src/frr/ospf6d/ospf6_message.c:2447,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_message.c:2447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - 'on'
    - s
    argTypes:
    - struct ospf6_neighbor*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2431
    functionDepth: 3
    functionLinenumber: 2431
    functionLinenumberEnd: 2450
    functionName: ospf6_make_lsreq
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_packet_max
    - ospf6_lsa_unlock
    - stream_putw
    - ALL_LSDB
    - ntohs
    - ntohl
    - stream_putl
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospf6_make_lsreq(struct ospf6_neighbor *on, struct stream
      *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2470,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2473,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2477,1
    - Dst: ospf6_fill_hdr_checksum
      Src: /src/frr/ospf6d/ospf6_message.c:2482,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2483,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2484,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2486,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2487,1
    - Dst: ospf6_lsa_age_update_to_send
      Src: /src/frr/ospf6d/ospf6_message.c:2493,1
    - Dst: stream_put
      Src: /src/frr/ospf6d/ospf6_message.c:2494,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2498,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - 'on'
    - op
    argTypes:
    - struct ospf6_neighbor*
    - struct ospf6_packet**
    assertStmts:
    - condition: (lsa->lock == 2)
      pos:
        line_end: 2497
        line_start: 2497
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 2501
      start: 2463
    functionDepth: 3
    functionLinenumber: 2463
    functionLinenumberEnd: 2501
    functionName: ospf6_make_lsack_neighbor
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fill_header
    - assert
    - ospf6_packet_max
    - ospf6_fill_hdr_checksum
    - stream_put
    - ospf6_packet_add
    - OSPF6_MESSAGE_WRITE_ON
    - ospf6_make_header
    - ospf6_lsdb_remove
    - ALL_LSDB
    - ospf6_lsa_age_update_to_send
    - ospf6_packet_new
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t ospf6_make_lsack_neighbor(struct ospf6_neighbor *on,\n\t\t\t\t\t
      \ struct ospf6_packet **op)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2511,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2516,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2517,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2525,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2530,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2531,1
    - Dst: ospf6_make_lsreq
      Src: /src/frr/ospf6d/ospf6_message.c:2533,1
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:2537,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2542,1
    - Dst: ospf6_fill_hdr_checksum
      Src: /src/frr/ospf6d/ospf6_message.c:2552,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2553,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2555,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_message.c:2559,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2505
    functionDepth: 4
    functionLinenumber: 2505
    functionLinenumberEnd: 2563
    functionName: ospf6_lsreq_send
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_packet_free
    - ospf6_fill_header
    - ospf6_fill_hdr_checksum
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_packet_add
    - OSPF6_MESSAGE_WRITE_ON
    - ospf6_make_header
    - ospf6_make_lsreq
    - zlog_debug
    - EVENT_ARG
    - event_add_timer
    - ospf6_packet_new
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_lsreq_send(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_fill_hdr_checksum
      Src: /src/frr/ospf6d/ospf6_message.c:2588,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2589,1
    - Dst: listnode_add
      Src: /src/frr/ospf6d/ospf6_message.c:2599,1
    - Dst: event_cancel
      Src: /src/frr/ospf6d/ospf6_message.c:2614,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_message.c:2615,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2617,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 3
    argNames:
    - 'on'
    - oi
    - op
    argTypes:
    - struct ospf6_neighbor*
    - struct ospf6_interface*
    - struct ospf6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2619
      start: 2565
    functionDepth: 5
    functionLinenumber: 2565
    functionLinenumberEnd: 2619
    functionName: ospf6_send_lsupdate
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fill_hdr_checksum
    - ospf6_packet_add
    - event_cancel
    - event_execute
    - OSPF6_MESSAGE_WRITE_ON
    - listnode_add
    linkageType: ''
    returnType: void
    signature: "void ospf6_send_lsupdate(struct ospf6_neighbor *on,\n\t\t\t\tstruct
      ospf6_interface *oi,\n\t\t\t\tstruct ospf6_packet *op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_forward_endp
      Src: /src/frr/ospf6d/ospf6_message.c:2628,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2630,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2631,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2632,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2633,1
    - Dst: ospf6_fill_lsupdate_header
      Src: /src/frr/ospf6d/ospf6_message.c:2636,1
    - Dst: ospf6_send_lsupdate
      Src: /src/frr/ospf6d/ospf6_message.c:2637,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2640,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2643,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospf6d/ospf6_message.c:2645,1
    - Dst: ospf6_lsa_age_update_to_send
      Src: /src/frr/ospf6d/ospf6_message.c:2647,1
    - Dst: stream_put
      Src: /src/frr/ospf6d/ospf6_message.c:2648,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2648,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2650,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2651,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2652,1
    - Dst: ospf6_make_ls_retrans_list
      Src: /src/frr/ospf6d/ospf6_message.c:2657,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2667,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2668,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2669,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2670,1
    - Dst: ospf6_fill_lsupdate_header
      Src: /src/frr/ospf6d/ospf6_message.c:2673,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2680,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2681,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2684,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2687,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospf6d/ospf6_message.c:2689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - 'on'
    - op
    - lsa_cnt
    argTypes:
    - struct ospf6_neighbor*
    - struct ospf6_packet**
    - int*
    assertStmts:
    - condition: (lsa->lock == 2)
      pos:
        line_end: 2650
        line_start: 2650
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 2690
      start: 2621
    functionDepth: 6
    functionLinenumber: 2621
    functionLinenumberEnd: 2690
    functionName: ospf6_make_lsupdate_list
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fill_header
    - assert
    - ospf6_packet_max
    - ospf6_packet_new
    - ospf6_make_ls_retrans_list
    - stream_put
    - stream_forward_endp
    - ospf6_packet_add
    - OSPF6_MESSAGE_WRITE_ON
    - ospf6_make_header
    - ospf6_lsdb_remove
    - ALL_LSDB
    - OSPF6_LSA_SIZE
    - ospf6_fill_lsupdate_header
    - ospf6_lsa_age_update_to_send
    - ospf6_send_lsupdate
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t ospf6_make_lsupdate_list(struct ospf6_neighbor *on,\n\t\t\t\t\t
      struct ospf6_packet **op, int *lsa_cnt)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2706,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2708,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2709,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2712,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2714,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2720,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2721,1
    - Dst: ospf6_make_lsupdate_list
      Src: /src/frr/ospf6d/ospf6_message.c:2722,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2725,1
    - Dst: ospf6_fill_lsupdate_header
      Src: /src/frr/ospf6d/ospf6_message.c:2726,1
    - Dst: ospf6_send_lsupdate
      Src: /src/frr/ospf6d/ospf6_message.c:2728,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2731,1
    - Dst: stream_reset
      Src: /src/frr/ospf6d/ospf6_message.c:2735,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2739,1
    - Dst: ospf6_make_ls_retrans_list
      Src: /src/frr/ospf6d/ospf6_message.c:2741,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2743,1
    - Dst: ospf6_fill_lsupdate_header
      Src: /src/frr/ospf6d/ospf6_message.c:2744,1
    - Dst: ospf6_fill_hdr_checksum
      Src: /src/frr/ospf6d/ospf6_message.c:2750,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2751,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2752,1
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:2754,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2757,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_message.c:2760,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2764
      start: 2699
    functionDepth: 7
    functionLinenumber: 2699
    functionLinenumberEnd: 2764
    functionName: ospf6_lsupdate_send_neighbor
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fill_header
    - ospf6_packet_free
    - ospf6_make_ls_retrans_list
    - ospf6_fill_hdr_checksum
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_send_lsupdate
    - ospf6_packet_add
    - OSPF6_MESSAGE_WRITE_ON
    - ospf6_make_header
    - zlog_debug
    - ospf6_fill_lsupdate_header
    - EVENT_ARG
    - event_add_timer
    - stream_reset
    - ospf6_make_lsupdate_list
    - ospf6_packet_new
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_lsupdate_send_neighbor(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2772,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2773,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospf6d/ospf6_message.c:2776,1
    - Dst: ospf6_lsa_age_update_to_send
      Src: /src/frr/ospf6d/ospf6_message.c:2777,1
    - Dst: stream_put
      Src: /src/frr/ospf6d/ospf6_message.c:2778,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2778,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2780,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2781,1
    - Dst: ospf6_fill_lsupdate_header
      Src: /src/frr/ospf6d/ospf6_message.c:2782,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2786,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2787,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_message.c:2788,1
    - Dst: ospf6_send_lsupdate
      Src: /src/frr/ospf6d/ospf6_message.c:2790,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - 'on'
    - lsa
    argTypes:
    - struct ospf6_neighbor*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2793
      start: 2766
    functionDepth: 6
    functionLinenumber: 2766
    functionLinenumberEnd: 2793
    functionName: ospf6_lsupdate_send_neighbor_now
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_fill_header
    - stream_put
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_send_lsupdate
    - stream_forward_endp
    - ospf6_make_header
    - ntohs
    - OSPF6_LSA_SIZE
    - ospf6_fill_lsupdate_header
    - zlog_debug
    - ospf6_lsa_age_update_to_send
    - ospf6_packet_new
    linkageType: ''
    returnType: int
    signature: "int ospf6_lsupdate_send_neighbor_now(struct ospf6_neighbor *on,\n\t\t\t\t
      \    struct ospf6_lsa *lsa)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_forward_endp
      Src: /src/frr/ospf6d/ospf6_message.c:2803,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_message.c:2805,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2806,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2807,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2808,1
    - Dst: ospf6_fill_lsupdate_header
      Src: /src/frr/ospf6d/ospf6_message.c:2811,1
    - Dst: ospf6_send_lsupdate
      Src: /src/frr/ospf6d/ospf6_message.c:2812,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2815,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2818,1
    - Dst: stream_forward_endp
      Src: /src/frr/ospf6d/ospf6_message.c:2820,1
    - Dst: ospf6_lsa_age_update_to_send
      Src: /src/frr/ospf6d/ospf6_message.c:2823,1
    - Dst: stream_put
      Src: /src/frr/ospf6d/ospf6_message.c:2824,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2824,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_message.c:2826,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2828,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2829,1
    - Dst: ospf6_lsupdate_send_interface
      Src: /src/frr/ospf6d/ospf6_message.c:2834,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2841,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2844,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2846,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2857,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2858,1
    - Dst: ospf6_make_lsupdate_interface
      Src: /src/frr/ospf6d/ospf6_message.c:2859,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2862,1
    - Dst: ospf6_fill_lsupdate_header
      Src: /src/frr/ospf6d/ospf6_message.c:2863,1
    - Dst: ospf6_send_lsupdate
      Src: /src/frr/ospf6d/ospf6_message.c:2865,1
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:2867,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2870,1
    - Dst: ospf6_lsack_send_neighbor
      Src: /src/frr/ospf6d/ospf6_message.c:2875,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2881,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2884,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2885,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2895,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2896,1
    - Dst: ospf6_make_lsack_neighbor
      Src: /src/frr/ospf6d/ospf6_message.c:2898,1
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:2901,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2906,1
    - Dst: ospf6_fill_hdr_checksum
      Src: /src/frr/ospf6d/ospf6_message.c:2911,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2912,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2913,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2916,1
    - Dst: ospf6_make_lsack_interface
      Src: /src/frr/ospf6d/ospf6_message.c:2920,1
    - Dst: ospf6_packet_max
      Src: /src/frr/ospf6d/ospf6_message.c:2929,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_message.c:2932,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2933,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2936,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_message.c:2938,1
    - Dst: ospf6_lsa_age_update_to_send
      Src: /src/frr/ospf6d/ospf6_message.c:2941,1
    - Dst: stream_put
      Src: /src/frr/ospf6d/ospf6_message.c:2942,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_message.c:2945,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_message.c:2946,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - oi
    - op
    - lsa_cnt
    argTypes:
    - struct ospf6_interface*
    - struct ospf6_packet**
    - int*
    assertStmts:
    - condition: (lsa->lock == 2)
      pos:
        line_end: 2944
        line_start: 2944
        source_file: /src/frr/ospf6d/ospf6_message.c
    - condition: (lsa->lock == 2)
      pos:
        line_end: 2827
        line_start: 2827
        source_file: /src/frr/ospf6d/ospf6_message.c
    constantsTouched: []
    func_position:
      end: 2949
      start: 2795
    functionDepth: 6
    functionLinenumber: 2795
    functionLinenumberEnd: 2949
    functionName: ospf6_make_lsupdate_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 1
    functionsReached:
    - stream_put
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_lsa_unlock
    - ospf6_packet_add
    - ospf6_make_header
    - ALL_LSDB
    - OSPF6_LSA_SIZE
    - ospf6_make_lsack_interface
    - ospf6_fill_header
    - ospf6_packet_free
    - OSPF6_MESSAGE_WRITE_ON
    - ospf6_lsdb_remove
    - zlog_debug
    - ospf6_make_lsack_neighbor
    - EVENT_ARG
    - assert
    - ospf6_send_lsupdate
    - stream_forward_endp
    - ospf6_lsack_send_neighbor
    - EVENT_OFF
    - ospf6_lsa_age_update_to_send
    - ospf6_lsupdate_send_interface
    - ospf6_packet_max
    - ospf6_fill_hdr_checksum
    - ospf6_fill_lsupdate_header
    - ospf6_make_lsupdate_interface
    - ospf6_packet_new
    - event_add_event
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t ospf6_make_lsupdate_interface(struct ospf6_interface *oi,\n\t\t\t\t\t
      \     struct ospf6_packet **op,\n\t\t\t\t\t      int *lsa_cnt)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_message.c:2957,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:2960,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_message.c:2961,1
    - Dst: ospf6_packet_new
      Src: /src/frr/ospf6d/ospf6_message.c:2972,1
    - Dst: ospf6_make_header
      Src: /src/frr/ospf6d/ospf6_message.c:2973,1
    - Dst: ospf6_make_lsack_interface
      Src: /src/frr/ospf6d/ospf6_message.c:2975,1
    - Dst: ospf6_packet_free
      Src: /src/frr/ospf6d/ospf6_message.c:2978,1
    - Dst: ospf6_fill_header
      Src: /src/frr/ospf6d/ospf6_message.c:2982,1
    - Dst: ospf6_fill_hdr_checksum
      Src: /src/frr/ospf6d/ospf6_message.c:2993,1
    - Dst: ospf6_packet_add
      Src: /src/frr/ospf6d/ospf6_message.c:2994,1
    - Dst: OSPF6_MESSAGE_WRITE_ON
      Src: /src/frr/ospf6d/ospf6_message.c:2995,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_message.c:2998,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2951
    functionDepth: 3
    functionLinenumber: 2951
    functionLinenumberEnd: 3000
    functionName: ospf6_lsack_send_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - ospf6_make_lsack_interface
    - ospf6_packet_free
    - ospf6_fill_header
    - ospf6_fill_hdr_checksum
    - IS_OSPF6_DEBUG_MESSAGE
    - ospf6_packet_add
    - OSPF6_MESSAGE_WRITE_ON
    - ospf6_make_header
    - zlog_debug
    - EVENT_ARG
    - ospf6_packet_new
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_lsack_send_interface(struct event *thread)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3130,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3132,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3137,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3139,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3144,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3149,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3152,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3157,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3160,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:3165,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:3166,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3167,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:3168,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3169,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE
      Src: /src/frr/ospf6d/ospf6_message.c:3170,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3171,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3174,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3175,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3176,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3180,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3181,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3183,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3184,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3187,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3188,1
    - Dst: IS_OSPF6_DEBUG_MESSAGE_ENABLED
      Src: /src/frr/ospf6d/ospf6_message.c:3190,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_message.c:3191,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 54
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3196
      start: 3122
    functionDepth: 2
    functionLinenumber: 3122
    functionLinenumberEnd: 3196
    functionName: config_write_ospf6_debug_message
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - vty_out
    - IS_OSPF6_DEBUG_MESSAGE
    - IS_OSPF6_DEBUG_MESSAGE_ENABLED
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_message(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_message.c:3200,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_message.c:3201,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_message.c:3202,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_message.c:3203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3204
      start: 3198
    functionDepth: 1
    functionLinenumber: 3198
    functionLinenumberEnd: 3204
    functionName: install_element_ospf6_debug_message
    functionSourceFile: /src/frr/ospf6d/ospf6_message.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_message(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_area.c:46,1
    - Dst: strtoul
      Src: /src/frr/ospf6d/ospf6_area.c:46,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_area.c:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - str
    - area_id
    - area_id_fmt
    argTypes:
    - char*
    - uint32_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 54
    functionName: str2area_id
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - htonl
    - inet_pton
    - strtoul
    linkageType: ''
    returnType: int
    signature: int str2area_id(const char *str, uint32_t *area_id, int *area_id_fmt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_area.c:59,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_area.c:59,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_area.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buf
    - len
    - area_id
    - area_id_fmt
    argTypes:
    - char*
    - int
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: area_id2str
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 3
    functionsReached:
    - inet_ntop
    - ntohl
    - snprintf
    linkageType: ''
    returnType: void
    signature: void area_id2str(char *buf, int len, uint32_t area_id, int area_id_fmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_area.c:68,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_area.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - va
    - vb
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: ospf6_area_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: int
    signature: int ospf6_area_cmp(void *va, void *vb)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_area.c:74,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN_TYPE
      Src: /src/frr/ospf6d/ospf6_area.c:78,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_area.c:79,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_area.c:80,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_area.c:81,1
    - Dst: ospf6_spf_schedule
      Src: /src/frr/ospf6d/ospf6_area.c:83,1
    - Dst: OSPF6_PROCESS
      Src: /src/frr/ospf6d/ospf6_area.c:84,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_area.c:84,1
    - Dst: ospf6_lsadd_to_spf_reason
      Src: /src/frr/ospf6d/ospf6_area.c:85,1
    - Dst: ospf6_intra_prefix_lsa_add
      Src: /src/frr/ospf6d/ospf6_area.c:89,1
    - Dst: ospf6_abr_examin_summary
      Src: /src/frr/ospf6d/ospf6_area.c:94,1
    - Dst: ospf6_asbr_lsa_add
      Src: /src/frr/ospf6d/ospf6_area.c:99,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 105
    functionName: ospf6_area_lsdb_hook_add
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_abr_examin_summary
    - ospf6_asbr_lsa_add
    - ospf6_spf_schedule
    - ntohs
    - zlog_debug
    - ospf6_lsadd_to_spf_reason
    - IS_OSPF6_DEBUG_EXAMIN_TYPE
    - OSPF6_AREA
    - OSPF6_PROCESS
    - ospf6_intra_prefix_lsa_add
    linkageType: ''
    returnType: void
    signature: void ospf6_area_lsdb_hook_add(struct ospf6_lsa *lsa)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_area.c:109,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN_TYPE
      Src: /src/frr/ospf6d/ospf6_area.c:112,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_area.c:113,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_area.c:114,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_area.c:115,1
    - Dst: ospf6_spf_schedule
      Src: /src/frr/ospf6d/ospf6_area.c:117,1
    - Dst: OSPF6_PROCESS
      Src: /src/frr/ospf6d/ospf6_area.c:118,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_area.c:118,1
    - Dst: ospf6_lsremove_to_spf_reason
      Src: /src/frr/ospf6d/ospf6_area.c:119,1
    - Dst: ospf6_intra_prefix_lsa_remove
      Src: /src/frr/ospf6d/ospf6_area.c:123,1
    - Dst: ospf6_abr_examin_summary
      Src: /src/frr/ospf6d/ospf6_area.c:128,1
    - Dst: ospf6_asbr_lsa_remove
      Src: /src/frr/ospf6d/ospf6_area.c:132,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 137
    functionName: ospf6_area_lsdb_hook_remove
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_asbr_lsa_remove
    - ospf6_abr_examin_summary
    - ospf6_lsremove_to_spf_reason
    - ospf6_spf_schedule
    - ntohs
    - zlog_debug
    - IS_OSPF6_DEBUG_EXAMIN_TYPE
    - OSPF6_AREA
    - OSPF6_PROCESS
    - ospf6_intra_prefix_lsa_remove
    linkageType: ''
    returnType: void
    signature: void ospf6_area_lsdb_hook_remove(struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_copy
      Src: /src/frr/ospf6d/ospf6_area.c:145,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_area.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 147
    functionName: ospf6_area_route_hook_add
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_route_add
    - ospf6_route_copy
    linkageType: ''
    returnType: void
    signature: void ospf6_area_route_hook_add(struct ospf6_route *route)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_lookup_identical
      Src: /src/frr/ospf6d/ospf6_area.c:155,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_area.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - route
    argTypes:
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 158
    functionName: ospf6_area_route_hook_remove
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_route_remove
    - ospf6_route_lookup_identical
    linkageType: ''
    returnType: void
    signature: void ospf6_area_route_hook_remove(struct ospf6_route *route)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_area.c:163,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_area.c:164,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_area.c:165,1
    - Dst: OSPF6_OPT_CLEAR
      Src: /src/frr/ospf6d/ospf6_area.c:166,1
    - Dst: ospf6_asbr_remove_externals_from_area
      Src: /src/frr/ospf6d/ospf6_area.c:167,1
    - Dst: IS_AREA_ENABLED
      Src: /src/frr/ospf6d/ospf6_area.c:168,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_area.c:169,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_area.c:170,1
    - Dst: OSPF6_OPT_SET
      Src: /src/frr/ospf6d/ospf6_area.c:171,1
    - Dst: ospf6_asbr_send_externals_to_area
      Src: /src/frr/ospf6d/ospf6_area.c:172,1
    - Dst: OSPF6_ROUTER_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_area.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 176
    functionName: ospf6_area_stub_update
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - IS_AREA_STUB
    - ospf6_asbr_send_externals_to_area
    - IS_AREA_ENABLED
    - OSPF6_OPT_SET
    - OSPF6_ROUTER_LSA_SCHEDULE
    - IS_OSPF6_DEBUG_ORIGINATE
    - zlog_debug
    - OSPF6_OPT_CLEAR
    - ospf6_asbr_remove_externals_from_area
    linkageType: ''
    returnType: void
    signature: void ospf6_area_stub_update(struct ospf6_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_area.c:180,1
    - Dst: ospf6_area_nssa_unset
      Src: /src/frr/ospf6d/ospf6_area.c:182,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:184,1
    - Dst: ospf6_area_stub_update
      Src: /src/frr/ospf6d/ospf6_area.c:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ospf6
    - area
    argTypes:
    - struct ospf6*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: ospf6_area_stub_set
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - IS_AREA_STUB
    - ospf6_area_nssa_unset
    - SET_FLAG
    - ospf6_area_stub_update
    linkageType: ''
    returnType: int
    signature: int ospf6_area_stub_set(struct ospf6 *ospf6, struct ospf6_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_area.c:193,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:194,1
    - Dst: ospf6_area_stub_update
      Src: /src/frr/ospf6d/ospf6_area.c:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ospf6
    - area
    argTypes:
    - struct ospf6*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: ospf6_area_stub_unset
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - IS_AREA_STUB
    - UNSET_FLAG
    - ospf6_area_stub_update
    linkageType: ''
    returnType: void
    signature: void ospf6_area_stub_unset(struct ospf6 *ospf6, struct ospf6_area *area)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_abr_range_reset_cost
      Src: /src/frr/ospf6d/ospf6_area.c:205,1
    - Dst: ospf6_abr_prefix_resummarize
      Src: /src/frr/ospf6d/ospf6_area.c:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ospf6
    - area
    argTypes:
    - struct ospf6*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 209
    functionName: ospf6_area_no_summary_set
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_abr_prefix_resummarize
    - ospf6_abr_range_reset_cost
    linkageType: ''
    returnType: void
    signature: "void ospf6_area_no_summary_set(struct ospf6 *ospf6,\n\t\t\t\t      struct
      ospf6_area *area)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_abr_range_reset_cost
      Src: /src/frr/ospf6d/ospf6_area.c:217,1
    - Dst: ospf6_abr_prefix_resummarize
      Src: /src/frr/ospf6d/ospf6_area.c:218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ospf6
    - area
    argTypes:
    - struct ospf6*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 221
    functionName: ospf6_area_no_summary_unset
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_abr_prefix_resummarize
    - ospf6_abr_range_reset_cost
    linkageType: ''
    returnType: void
    signature: "void ospf6_area_no_summary_unset(struct ospf6 *ospf6,\n\t\t\t\t\tstruct
      ospf6_area *area)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_zebra_import_default_route
      Src: /src/frr/ospf6d/ospf6_area.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - ospf6
    - area
    - metric
    - metric_type
    argTypes:
    - struct ospf6*
    - struct ospf6_area*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 223
    functionDepth: 6
    functionLinenumber: 223
    functionLinenumberEnd: 237
    functionName: ospf6_nssa_default_originate_set
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_zebra_import_default_route
    linkageType: ''
    returnType: void
    signature: "void ospf6_nssa_default_originate_set(struct ospf6 *ospf6,\n\t\t\t\t\t
      \    struct ospf6_area *area,\n\t\t\t\t\t     int metric, int metric_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_zebra_import_default_route
      Src: /src/frr/ospf6d/ospf6_area.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ospf6
    - area
    argTypes:
    - struct ospf6*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 239
    functionDepth: 6
    functionLinenumber: 239
    functionLinenumberEnd: 251
    functionName: ospf6_nssa_default_originate_unset
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_zebra_import_default_route
    linkageType: ''
    returnType: void
    signature: "void ospf6_nssa_default_originate_unset(struct ospf6 *ospf6,\n\t\t\t\t\t
      \      struct ospf6_area *area)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_area.c:264,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_area.c:268,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_area.c:268,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_area.c:272,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_area.c:277,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_area.c:279,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_area.c:282,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_area.c:283,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_area.c:285,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_area.c:287,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_area.c:292,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_area.c:294,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_area.c:296,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_area.c:298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:303,1
    - Dst: OSPF6_OPT_CLEAR
      Src: /src/frr/ospf6d/ospf6_area.c:304,1
    - Dst: OSPF6_OPT_CLEAR
      Src: /src/frr/ospf6d/ospf6_area.c:305,1
    - Dst: OSPF6_OPT_SET
      Src: /src/frr/ospf6d/ospf6_area.c:307,1
    - Dst: OSPF6_OPT_SET
      Src: /src/frr/ospf6d/ospf6_area.c:308,1
    - Dst: OSPF6_OPT_SET
      Src: /src/frr/ospf6d/ospf6_area.c:311,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:313,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:314,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospf6d/ospf6_area.c:317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 49
    argCount: 3
    argNames:
    - area_id
    - o
    - df
    argTypes:
    - uint32_t
    - struct ospf6*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 324
    functionName: ospf6_area_create
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - snprintf
    - XCALLOC
    - OSPF6_ROUTE_TABLE_CREATE
    - listnode_add_sort
    - CHECK_FLAG
    - OSPF6_OPT_SET
    - inet_ntop
    - SET_FLAG
    - list_new
    - OSPF6_OPT_CLEAR
    - ospf6_lsdb_create
    - ntohl
    linkageType: ''
    returnType: struct ospf6_area
    signature: struct ospf6_area *ospf6_area_create(uint32_t area_id, struct ospf6
      *o, int df)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_area.c:336,1
    - Dst: monotime_since
      Src: /src/frr/ospf6d/ospf6_area.c:469,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_area.c:471,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_area.c:475,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_area.c:479,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_area.c:481,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospf6d/ospf6_area.c:486,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_area.c:489,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_area.c:493,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_area.c:493,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:494,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:497,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_area.c:499,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:501,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_area.c:502,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:505,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:508,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_area.c:509,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:510,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:511,1
    - Dst: monotime_since
      Src: /src/frr/ospf6d/ospf6_area.c:514,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:516,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:521,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:526,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_area.c:530,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_area.c:564,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_area.c:565,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:574,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_area.c:576,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_area.c:577,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:578,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_area.c:579,1
    - Dst: strtoul
      Src: /src/frr/ospf6d/ospf6_area.c:580,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_area.c:586,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_area.c:589,1
    - Dst: ospf6_abr_prefix_resummarize
      Src: /src/frr/ospf6d/ospf6_area.c:591,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_area.c:597,1
    - Dst: OSPF6_CMD_AREA_GET
      Src: /src/frr/ospf6d/ospf6_area.c:620,1
    - Dst: str2prefix
      Src: /src/frr/ospf6d/ospf6_area.c:622,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:624,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:628,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:630,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_area.c:635,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:637,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_area.c:640,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_area.c:641,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_area.c:642,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_area.c:645,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_area.c:647,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 1
    argNames:
    - oa
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 326
    functionDepth: 3
    functionLinenumber: 326
    functionLinenumberEnd: 650
    functionName: ospf6_area_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ospf6_route_lookup
    - ospf6_abr_prefix_resummarize
    - json_object_boolean_false_add
    - ospf6_route_head
    - strmatch
    - ALL_LIST_ELEMENTS_RO
    - ospf6_route_create
    - str2prefix
    - if
    - OSPF6_CMD_AREA_GET
    - ospf6_route_add
    - DEFUN
    - vty_out
    - ospf6_abr_originate_summary
    - json_object_int_add
    - ospf6_check_and_set_router_abr
    - UNSET_FLAG
    - monotime_since
    - ospf6_route_remove
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - strtoul
    - ospf6_route_next
    - SET_FLAG
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void ospf6_area_delete(struct ospf6_area *oa)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_area.c:658,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_area.c:659,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_area.c:660,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:661,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:664,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:666,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:672,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:675,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_area.c:677,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:679,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:682,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_area.c:684,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:685,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:687,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:690,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:695,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:698,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:699,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_area.c:701,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_area.c:702,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:703,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_area.c:706,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:708,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:712,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:715,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospf6d/ospf6_area.c:717,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:718,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospf6d/ospf6_area.c:719,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospf6d/ospf6_area.c:720,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:721,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospf6d/ospf6_area.c:722,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:723,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:724,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:725,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:726,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:727,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:728,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 2
    argNames:
    - vty
    - ospf6
    argTypes:
    - struct vty*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 652
    functionDepth: 2
    functionLinenumber: 652
    functionLinenumberEnd: 729
    functionName: ospf6_area_config_write
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - vty_out
    - EXPORT_NAME
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - ospf6_route_next
    - IMPORT_NAME
    - PREFIX_NAME_IN
    - ospf6_route_head
    - PREFIX_NAME_OUT
    linkageType: ''
    returnType: void
    signature: void ospf6_area_config_write(struct vty *vty, struct ospf6 *ospf6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_area.c:826,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_area.c:829,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_area.c:829,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:830,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_area.c:831,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:831,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospf6d/ospf6_area.c:832,1
    - Dst: access_list_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:832,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:833,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:837,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_area.c:838,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:838,1
    - Dst: EXPORT_LIST
      Src: /src/frr/ospf6d/ospf6_area.c:839,1
    - Dst: access_list_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:839,1
    - Dst: EXPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:840,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_area.c:845,1
    - Dst: ospf6_schedule_abr_task
      Src: /src/frr/ospf6d/ospf6_area.c:846,1
    - Dst: ospf6_plist_update
      Src: /src/frr/ospf6d/ospf6_area.c:850,1
    - Dst: prefix_list_afi
      Src: /src/frr/ospf6d/ospf6_area.c:858,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_area.c:861,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_area.c:864,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_area.c:864,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospf6d/ospf6_area.c:865,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_area.c:866,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospf6d/ospf6_area.c:866,1
    - Dst: PREFIX_LIST_IN
      Src: /src/frr/ospf6d/ospf6_area.c:867,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:867,1
    - Dst: PREFIX_NAME_IN
      Src: /src/frr/ospf6d/ospf6_area.c:868,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospf6d/ospf6_area.c:871,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_area.c:872,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospf6d/ospf6_area.c:872,1
    - Dst: PREFIX_LIST_OUT
      Src: /src/frr/ospf6d/ospf6_area.c:873,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:873,1
    - Dst: PREFIX_NAME_OUT
      Src: /src/frr/ospf6d/ospf6_area.c:874,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_area.c:879,1
    - Dst: ospf6_schedule_abr_task
      Src: /src/frr/ospf6d/ospf6_area.c:880,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_area.c:884,1
    - Dst: OSPF6_CMD_AREA_GET
      Src: /src/frr/ospf6d/ospf6_area.c:900,1
    - Dst: access_list_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:902,1
    - Dst: IMPORT_LIST
      Src: /src/frr/ospf6d/ospf6_area.c:904,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:906,1
    - Dst: free
      Src: /src/frr/ospf6d/ospf6_area.c:907,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:907,1
    - Dst: IMPORT_NAME
      Src: /src/frr/ospf6d/ospf6_area.c:909,1
    - Dst: strdup
      Src: /src/frr/ospf6d/ospf6_area.c:909,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_area.c:910,1
    - Dst: ospf6_schedule_abr_task
      Src: /src/frr/ospf6d/ospf6_area.c:911,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 1
    argNames:
    - access
    argTypes:
    - struct access_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 820
    functionDepth: 3
    functionLinenumber: 820
    functionLinenumberEnd: 914
    functionName: ospf6_filter_update
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - EXPORT_NAME
    - IMPORT_NAME
    - strdup
    - PREFIX_NAME_IN
    - prefix_list_afi
    - prefix_list_lookup
    - PREFIX_LIST_OUT
    - ALL_LIST_ELEMENTS_RO
    - ospf6_schedule_abr_task
    - PREFIX_LIST_IN
    - OSPF6_CMD_AREA_GET
    - for
    - DEFUN
    - IMPORT_LIST
    - ospf6_plist_update
    - free
    - ospf6_check_and_set_router_abr
    - EXPORT_LIST
    - PREFIX_NAME_OUT
    - strcmp
    - access_list_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_filter_update(struct access_list *access)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_area.c:1021,1
    - Dst: ospf6_linkstate_prefix
      Src: /src/frr/ospf6d/ospf6_area.c:1022,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_area.c:1022,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_area.c:1023,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_area.c:1025,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_area.c:1026,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:1028,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_area.c:1031,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_area.c:1034,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_area.c:1035,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_area.c:1037,1
    - Dst: ospf6_spf_display_subtree
      Src: /src/frr/ospf6d/ospf6_area.c:1043,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_area.c:1046,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_area.c:1048,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_area.c:1053,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - vty
    - ospf6
    - uj
    argTypes:
    - struct vty*
    - struct ospf6*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1008
    functionDepth: 4
    functionLinenumber: 1008
    functionLinenumberEnd: 1056
    functionName: ipv6_ospf6_spf_tree_common
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - ALL_LIST_ELEMENTS_RO
    - ospf6_route_lookup
    - json_object_free
    - json_object_string_add
    - json_object_object_add
    - htonl
    - ospf6_linkstate_prefix
    - vty_json
    - ospf6_spf_display_subtree
    linkageType: ''
    returnType: int
    signature: "int ipv6_ospf6_spf_tree_common(struct vty *vty, struct ospf6 *ospf6,\n\t\t\t\t
      \     bool uj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1427,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1428,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1429,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1431,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1432,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1433,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1434,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1435,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1436,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1439,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1440,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1441,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1442,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1444,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1445,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1448,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_area.c:1449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1425
    functionDepth: 1
    functionLinenumber: 1425
    functionLinenumberEnd: 1450
    functionName: ospf6_area_init
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf6_area_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_area.c:1458,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_area.c:1459,1
    - Dst: listnode_lookup
      Src: /src/frr/ospf6d/ospf6_area.c:1460,1
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_area.c:1461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1452
    functionDepth: 0
    functionLinenumber: 1452
    functionLinenumberEnd: 1463
    functionName: ospf6_area_interface_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_area.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - ALL_LIST_ELEMENTS
    - listnode_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_area_interface_delete(struct ospf6_interface *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 12
    functionName: OSPF6_DEBUG_FLOODING_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_FLOODING_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: OSPF6_DEBUG_FLOODING_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_FLOODING_OFF()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_gr.c:50,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr.c:51,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_gr.c:55,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:62,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:63,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_gr.c:64,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:67,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:68,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:74,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_gr.c:75,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_gr.c:78,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:80,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_gr.c:83,1
    - Dst: memmove
      Src: /src/frr/ospf6d/ospf6_gr.c:93,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:103,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_gr.c:107,1
    - Dst: ospf6_sendmsg
      Src: /src/frr/ospf6d/ospf6_gr.c:112,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_gr.c:115,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_gr.c:119,1
    - Dst: ospf6_lsa_originate_interface
      Src: /src/frr/ospf6d/ospf6_gr.c:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 2
    argNames:
    - oi
    - reason
    argTypes:
    - struct ospf6_interface*
    - enum ospf6_gr_restart_reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 124
    functionName: ospf6_gr_lsa_originate
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_checksum
    - ospf6_sendmsg
    - ospf6_lsa_create
    - memset
    - htons
    - ospf6_new_ls_seqnum
    - ospf6_lsa_originate_interface
    - memmove
    - IS_OSPF6_DEBUG_ORIGINATE
    - zlog_debug
    - flog_err
    - htonl
    linkageType: ''
    returnType: int
    signature: "int ospf6_gr_lsa_originate(struct ospf6_interface *oi,\n\t\t\t\t  enum
      ospf6_gr_restart_reason reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:132,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr.c:137,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr.c:138,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_gr.c:142,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:142,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_gr.c:143,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_gr.c:143,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_gr.c:144,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_gr.c:148,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_gr.c:155,1
    - Dst: ospf6_gr_restart_exit
      Src: /src/frr/ospf6d/ospf6_gr.c:161,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr.c:168,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_gr.c:172,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_gr.c:173,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_gr.c:174,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:176,1
    - Dst: OSPF6_ROUTER_LSA_EXECUTE
      Src: /src/frr/ospf6d/ospf6_gr.c:184,1
    - Dst: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
      Src: /src/frr/ospf6d/ospf6_gr.c:190,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:192,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_gr.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 199
    functionName: ospf6_gr_flush_grace_lsas
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 0
    functionsReached:
    - htonl
    - ospf6_gr_restart_exit
    - htons
    - OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - zlog_warn
    - EVENT_OFF
    - XSTRDUP
    - XFREE
    - if
    - for
    - OSPF6_ROUTER_LSA_EXECUTE
    - ospf6_lsdb_lookup
    - ospf6_lsa_purge
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_gr_flush_grace_lsas(struct ospf6 *ospf6)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/ospf6d/ospf6_gr.c:251,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr.c:253,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_gr.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ospf6
    - reason
    - timestamp
    argTypes:
    - struct ospf6*
    - enum ospf6_gr_restart_reason
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 259
    functionName: ospf6_gr_restart_enter
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_debug
    - time
    linkageType: ''
    returnType: void
    signature: "void ospf6_gr_restart_enter(struct ospf6 *ospf6,\n\t\t\t    enum ospf6_gr_restart_reason
      reason,\n\t\t\t    time_t timestamp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr.c:274,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_gr.c:275,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr.c:286,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr.c:293,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_gr.c:297,1
    - Dst: RTR_LSA_ADJ_FOUND
      Src: /src/frr/ospf6d/ospf6_gr.c:298,1
    - Dst: ospf6_gr_check_router_lsa_consistency
      Src: /src/frr/ospf6d/ospf6_gr.c:309,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr.c:323,1
    - Dst: ospf6_router_lsa_contains_adj
      Src: /src/frr/ospf6d/ospf6_gr.c:333,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - area
    - adv_router
    - neighbor_router_id
    argTypes:
    - struct ospf6_area*
    - in_addr_t
    - in_addr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 339
    functionName: ospf6_router_lsa_contains_adj
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 1
    functionsReached:
    - ospf6_lsa_unlock
    - RTR_LSA_ADJ_FOUND
    - ntohs
    - ALL_LSDB_TYPED_ADVRTR
    - ospf6_gr_check_router_lsa_consistency
    - if
    - ospf6_router_lsa_contains_adj
    linkageType: ''
    returnType: int
    signature: "int ospf6_router_lsa_contains_adj(struct ospf6_area *area,\n\t\t\t\t\t
      in_addr_t adv_router,\n\t\t\t\t\t in_addr_t neighbor_router_id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr.c:365,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_gr.c:366,1
    - Dst: ospf6_gr_check_router_lsa_consistency
      Src: /src/frr/ospf6d/ospf6_gr.c:367,1
    - Dst: snprintfrr
      Src: /src/frr/ospf6d/ospf6_gr.c:370,1
    - Dst: ospf6_gr_restart_exit
      Src: /src/frr/ospf6d/ospf6_gr.c:373,1
    - Dst: ospf6_area_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_gr.c:385,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr.c:386,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr.c:388,1
    - Dst: ospf6_gr_check_adjs_lsa_transit
      Src: /src/frr/ospf6d/ospf6_gr.c:396,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr.c:421,1
    - Dst: ospf6_gr_check_adj_id
      Src: /src/frr/ospf6d/ospf6_gr.c:435,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - ospf6
    - area
    argTypes:
    - struct ospf6*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 359
    functionDepth: 7
    functionLinenumber: 359
    functionLinenumberEnd: 438
    functionName: ospf6_gr_check_lsdb_consistency
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 0
    functionsReached:
    - ospf6_gr_restart_exit
    - snprintfrr
    - ntohs
    - zlog_debug
    - ALL_LSDB_TYPED
    - ospf6_gr_check_router_lsa_consistency
    - ospf6_gr_check_adjs_lsa_transit
    - ospf6_gr_check_adj_id
    - if
    - ospf6_area_neighbor_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_gr_check_lsdb_consistency(struct ospf6 *ospf6,\n\t\t\t\t
      \    struct ospf6_area *area)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr.c:467,1
    - Dst: ospf6_gr_check_adj_id
      Src: /src/frr/ospf6d/ospf6_gr.c:476,1
    - Dst: ospf6_gr_check_adjs_lsa_transit
      Src: /src/frr/ospf6d/ospf6_gr.c:481,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - area
    - lsa
    argTypes:
    - struct ospf6_area*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 492
    functionName: ospf6_gr_check_adjs_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 0
    functionsReached:
    - ntohs
    - ospf6_gr_check_adjs_lsa_transit
    - ospf6_gr_check_adj_id
    linkageType: ''
    returnType: bool
    signature: "bool ospf6_gr_check_adjs_lsa(struct ospf6_area *area,\n\t\t\t\t    struct
      ospf6_lsa *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:505,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_gr.c:511,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_gr.c:513,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr.c:516,1
    - Dst: ospf6_gr_check_adjs_lsa
      Src: /src/frr/ospf6d/ospf6_gr.c:516,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_gr.c:517,1
    - Dst: return
      Src: /src/frr/ospf6d/ospf6_gr.c:518,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_gr.c:531,1
    - Dst: ospf6_gr_restart_exit
      Src: /src/frr/ospf6d/ospf6_gr.c:533,1
    - Dst: ospf6_gr_iface_send_grace_lsa
      Src: /src/frr/ospf6d/ospf6_gr.c:537,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_gr.c:539,1
    - Dst: ospf6_gr_lsa_originate
      Src: /src/frr/ospf6d/ospf6_gr.c:541,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_gr.c:544,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_gr.c:547,1
    - Dst: ospf6_gr_nvm_update
      Src: /src/frr/ospf6d/ospf6_gr.c:555,1
    - Dst: json_object_from_file
      Src: /src/frr/ospf6d/ospf6_gr.c:564,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:566,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_gr.c:568,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:570,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_gr.c:571,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_gr.c:574,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:576,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_gr.c:577,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_gr.c:581,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_gr.c:591,1
    - Dst: time
      Src: /src/frr/ospf6d/ospf6_gr.c:592,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/ospf6d/ospf6_gr.c:594,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_gr.c:596,1
    - Dst: ospf6_gr_nvm_delete
      Src: /src/frr/ospf6d/ospf6_gr.c:603,1
    - Dst: json_object_from_file
      Src: /src/frr/ospf6d/ospf6_gr.c:611,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:613,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_gr.c:615,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:617,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_gr.c:618,1
    - Dst: json_object_object_del
      Src: /src/frr/ospf6d/ospf6_gr.c:621,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/ospf6d/ospf6_gr.c:623,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_gr.c:625,1
    - Dst: ospf6_gr_nvm_read
      Src: /src/frr/ospf6d/ospf6_gr.c:632,1
    - Dst: json_object_from_file
      Src: /src/frr/ospf6d/ospf6_gr.c:644,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:646,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_gr.c:648,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:650,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_gr.c:651,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_gr.c:654,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_gr.c:656,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_gr.c:657,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_gr.c:661,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/ospf6d/ospf6_gr.c:663,1
    - Dst: time
      Src: /src/frr/ospf6d/ospf6_gr.c:668,1
    - Dst: json_object_get_int
      Src: /src/frr/ospf6d/ospf6_gr.c:669,1
    - Dst: ospf6_gr_restart_exit
      Src: /src/frr/ospf6d/ospf6_gr.c:671,1
    - Dst: ospf6_gr_restart_enter
      Src: /src/frr/ospf6d/ospf6_gr.c:674,1
    - Dst: json_object_get_int
      Src: /src/frr/ospf6d/ospf6_gr.c:683,1
    - Dst: ospf6_gr_restart_enter
      Src: /src/frr/ospf6d/ospf6_gr.c:685,1
    - Dst: time
      Src: /src/frr/ospf6d/ospf6_gr.c:686,1
    - Dst: json_object_object_del
      Src: /src/frr/ospf6d/ospf6_gr.c:690,1
    - Dst: json_object_to_file_ext
      Src: /src/frr/ospf6d/ospf6_gr.c:692,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_gr.c:694,1
    - Dst: ospf6_gr_unplanned_start_interface
      Src: /src/frr/ospf6d/ospf6_gr.c:697,1
    - Dst: if_is_operative
      Src: /src/frr/ospf6d/ospf6_gr.c:703,1
    - Dst: if_is_loopback
      Src: /src/frr/ospf6d/ospf6_gr.c:703,1
    - Dst: ospf6_gr_lsa_originate
      Src: /src/frr/ospf6d/ospf6_gr.c:707,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_gr.c:711,1
    - Dst: ospf6_gr_prepare
      Src: /src/frr/ospf6d/ospf6_gr.c:716,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:722,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr.c:730,1
    - Dst: ospf6_vrf_id_to_name
      Src: /src/frr/ospf6d/ospf6_gr.c:733,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:736,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_gr.c:737,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_gr.c:737,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr.c:738,1
    - Dst: ospf6_gr_lsa_originate
      Src: /src/frr/ospf6d/ospf6_gr.c:740,1
    - Dst: ospf6_gr_nvm_update
      Src: /src/frr/ospf6d/ospf6_gr.c:745,1
    - Dst: ospf6_gr_check_adjs
      Src: /src/frr/ospf6d/ospf6_gr.c:763,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_gr.c:767,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_gr.c:768,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 771
    functionName: ospf6_gr_check_adjs
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 1
    functionsReached:
    - ospf6_lsa_unlock
    - ospf6_gr_restart_exit
    - json_object_object_del
    - ospf6_gr_iface_send_grace_lsa
    - ospf6_vrf_id_to_name
    - ntohs
    - ospf6_gr_unplanned_start_interface
    - ospf6_gr_prepare
    - ospf6_gr_nvm_delete
    - ALL_LIST_ELEMENTS_RO
    - return
    - ospf6_gr_nvm_update
    - json_object_to_file_ext
    - if_is_loopback
    - zlog_debug
    - EVENT_ARG
    - if
    - ospf6_gr_lsa_originate
    - for
    - ospf6_gr_check_adjs_lsa
    - json_object_int_add
    - json_object_free
    - ALL_LSDB_TYPED_ADVRTR
    - event_add_timer
    - ospf6_gr_restart_enter
    - ospf6_gr_check_adjs
    - json_object_new_object
    - ospf6_gr_nvm_read
    - json_object_get_int
    - json_object_object_get_ex
    - json_object_from_file
    - json_object_object_add
    - if_is_operative
    - time
    - event_add_event
    linkageType: ''
    returnType: bool
    signature: bool ospf6_gr_check_adjs(struct ospf6 *ospf6)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr.c:782,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_gr.c:784,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - ospf6
    argTypes:
    - struct vty*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 776
    functionDepth: 2
    functionLinenumber: 776
    functionLinenumberEnd: 788
    functionName: config_write_ospf6_gr
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_gr(struct vty *vty, struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register
      Src: /src/frr/ospf6d/ospf6_gr.c:852,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr.c:854,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr.c:855,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_gr.c:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 857
    functionName: ospf6_gr_init
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.c
    functionUses: 0
    functionsReached:
    - install_element
    - hook_register
    linkageType: ''
    returnType: void
    signature: void ospf6_gr_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - lsdb
    - ','
    - type
    - ','
    - adv_router
    - ','
    - lsa
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 51
    functionName: ALL_LSDB_TYPED_ADVRTR
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LSDB_TYPED_ADVRTR(lsdb, type, adv_router, lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - lsdb
    - ','
    - type
    - ','
    - lsa
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: ALL_LSDB_TYPED
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LSDB_TYPED(lsdb, type, lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - lsdb
    - ','
    - lsa
    - ','
    - lsanext
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: ALL_LSDB
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALL_LSDB(lsdb, lsa, lsanext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_interface.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: ospf6_interface_neighbor_count
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: int
    signature: int ospf6_interface_neighbor_count(struct ospf6_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/ospf6d/ospf6_interface.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ifindex
    - vrf_id
    argTypes:
    - ifindex_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: ospf6_interface_lookup_by_ifindex
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 2
    functionsReached:
    - if_lookup_by_index
    linkageType: ''
    returnType: struct ospf6_interface
    signature: "struct ospf6_interface *ospf6_interface_lookup_by_ifindex(ifindex_t
      ifindex,\n\t\t\t\t\t\t\t  vrf_id_t vrf_id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_interface.c:95,1
    - Dst: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT
      Src: /src/frr/ospf6d/ospf6_interface.c:98,1
    - Dst: ospf6_spf_schedule
      Src: /src/frr/ospf6d/ospf6_interface.c:100,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - lsa
    - reason
    argTypes:
    - struct ospf6_lsa*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 106
    functionName: ospf6_interface_lsdb_hook
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - ntohs
    - OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT
    - ospf6_spf_schedule
    linkageType: ''
    returnType: void
    signature: "void ospf6_interface_lsdb_hook(struct ospf6_lsa *lsa,\n\t\t\t\t      unsigned
      int reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_interface_lsdb_hook
      Src: /src/frr/ospf6d/ospf6_interface.c:110,1
    - Dst: ospf6_lsadd_to_spf_reason
      Src: /src/frr/ospf6d/ospf6_interface.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: ospf6_interface_lsdb_hook_add
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - ospf6_interface_lsdb_hook
    - ospf6_lsadd_to_spf_reason
    linkageType: ''
    returnType: void
    signature: void ospf6_interface_lsdb_hook_add(struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_interface_lsdb_hook
      Src: /src/frr/ospf6d/ospf6_interface.c:115,1
    - Dst: ospf6_lsremove_to_spf_reason
      Src: /src/frr/ospf6d/ospf6_interface.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: ospf6_interface_lsdb_hook_remove
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - ospf6_interface_lsdb_hook
    - ospf6_lsremove_to_spf_reason
    linkageType: ''
    returnType: void
    signature: void ospf6_interface_lsdb_hook_remove(struct ospf6_lsa *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_pointopoint
      Src: /src/frr/ospf6d/ospf6_interface.c:120,1
    - Dst: if_is_loopback
      Src: /src/frr/ospf6d/ospf6_interface.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: ospf6_default_iftype
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - if_is_pointopoint
    - if_is_loopback
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ospf6_default_iftype(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_interface.c:149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 158
    functionName: ospf6_interface_get_cost
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ospf6_interface_get_cost(struct ospf6_interface *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_interface_connected_route_update
      Src: /src/frr/ospf6d/ospf6_interface.c:163,1
    - Dst: OSPF6_LINK_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_interface.c:167,1
    - Dst: OSPF6_ROUTER_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_interface.c:168,1
    - Dst: OSPF6_NETWORK_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_interface.c:169,1
    - Dst: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT
      Src: /src/frr/ospf6d/ospf6_interface.c:170,1
    - Dst: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
      Src: /src/frr/ospf6d/ospf6_interface.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 173
    functionName: ospf6_interface_force_recalculate_cost
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - OSPF6_NETWORK_LSA_SCHEDULE
    - OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
    - OSPF6_ROUTER_LSA_SCHEDULE
    - ospf6_interface_connected_route_update
    - OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT
    - OSPF6_LINK_LSA_SCHEDULE
    linkageType: ''
    returnType: void
    signature: void ospf6_interface_force_recalculate_cost(struct ospf6_interface
      *oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_interface_get_cost
      Src: /src/frr/ospf6d/ospf6_interface.c:179,1
    - Dst: ospf6_interface_force_recalculate_cost
      Src: /src/frr/ospf6d/ospf6_interface.c:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - oi
    argTypes:
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 185
    functionName: ospf6_interface_recalculate_cost
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - ospf6_interface_get_cost
    - ospf6_interface_force_recalculate_cost
    linkageType: ''
    returnType: void
    signature: void ospf6_interface_recalculate_cost(struct ospf6_interface *oi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_interface.c:193,1
    - Dst: ospf6_fifo_new
      Src: /src/frr/ospf6d/ospf6_interface.c:195,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_interface.c:198,1
    - Dst: ospf6_default_iftype
      Src: /src/frr/ospf6d/ospf6_interface.c:209,1
    - Dst: ospf6_iobuf_size
      Src: /src/frr/ospf6d/ospf6_interface.c:217,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_interface.c:220,1
    - Dst: QOBJ_REG
      Src: /src/frr/ospf6d/ospf6_interface.c:226,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_interface.c:228,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_interface.c:229,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_interface.c:230,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_interface.c:233,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_interface.c:236,1
    - Dst: ospf6_interface_get_cost
      Src: /src/frr/ospf6d/ospf6_interface.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 249
    functionName: ospf6_interface_create
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - ospf6_interface_get_cost
    - XCALLOC
    - OSPF6_ROUTE_TABLE_CREATE
    - QOBJ_REG
    - ospf6_default_iftype
    - ospf6_iobuf_size
    - ospf6_fifo_new
    - list_new
    - zlog_debug
    - ospf6_lsdb_create
    linkageType: ''
    returnType: struct ospf6_interface
    signature: struct ospf6_interface *ospf6_interface_create(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - iftype
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 972
    functionName: ospf6_iftype_str
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ospf6_iftype_str(uint8_t iftype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:2899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2900
      start: 2897
    functionDepth: 1
    functionLinenumber: 2897
    functionLinenumberEnd: 2900
    functionName: install_element_ospf6_clear_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_clear_interface(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_interface.c:2930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2932
      start: 2927
    functionDepth: 2
    functionLinenumber: 2927
    functionLinenumberEnd: 2932
    functionName: config_write_ospf6_debug_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_interface(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:2936,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:2937,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:2938,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:2939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2940
      start: 2934
    functionDepth: 1
    functionLinenumber: 2934
    functionLinenumberEnd: 2940
    functionName: install_element_ospf6_debug_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_interface(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_interface.c:2944,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_interface.c:2945,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_interface.c:2947,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_interface.c:2948,1
    - Dst: keychain_get_algo_name_by_id
      Src: /src/frr/ospf6d/ospf6_interface.c:2951,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - at_data
    argTypes:
    - struct vty*
    - struct ospf6_auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2942
    functionDepth: 2
    functionLinenumber: 2942
    functionLinenumberEnd: 2953
    functionName: ospf6_auth_write_config
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - keychain_get_algo_name_by_id
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf6_auth_write_config(struct vty *vty, struct ospf6_auth_data
      *at_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:3125,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:3127,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:3129,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_interface.c:3130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3132
      start: 3122
    functionDepth: 1
    functionLinenumber: 3122
    functionLinenumberEnd: 3132
    functionName: ospf6_interface_auth_trailer_cmd_init
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf6_interface_auth_trailer_cmd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add
      Src: /src/frr/ospf6d/ospf6_top.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: ospf6_add
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void ospf6_add(struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_top.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: ospf6_del
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: void ospf6_del(struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospf6d/ospf6_top.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: ospf6_vrf_id_to_name
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 4
    functionsReached:
    - vrf_lookup_by_id
    linkageType: ''
    returnType: char
    signature: char *ospf6_vrf_id_to_name(vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf6
    - vrf
    argTypes:
    - struct ospf6*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: ospf6_vrf_link
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf6_vrf_link(struct ospf6 *ospf6, struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ospf6
    - vrf
    argTypes:
    - struct ospf6*
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 92
    functionName: ospf6_vrf_unlink
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf6_vrf_unlink(struct ospf6 *ospf6, struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospf6d/ospf6_top.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: ospf6_lookup_by_vrf_id
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 3
    functionsReached:
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct ospf6
    signature: struct ospf6 *ospf6_lookup_by_vrf_id(vrf_id_t vrf_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_top.c:109,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_top.c:111,1
    - Dst: IS_OSPF6_DEBUG_ZEBRA
      Src: /src/frr/ospf6d/ospf6_top.c:138,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_top.c:139,1
    - Dst: vrf_bitmap_set
      Src: /src/frr/ospf6d/ospf6_top.c:143,1
    - Dst: vrf_bitmap_unset
      Src: /src/frr/ospf6d/ospf6_top.c:146,1
    - Dst: event_add_read
      Src: /src/frr/ospf6d/ospf6_top.c:210,1
    - Dst: ospf6_router_id_update
      Src: /src/frr/ospf6d/ospf6_top.c:213,1
    - Dst: ospf6_vrf_init
      Src: /src/frr/ospf6d/ospf6_top.c:220,1
    - Dst: vrf_init
      Src: /src/frr/ospf6d/ospf6_top.c:222,1
    - Dst: vrf_cmd_init
      Src: /src/frr/ospf6d/ospf6_top.c:225,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_top.c:230,1
    - Dst: ospf6_asbr_lsa_add
      Src: /src/frr/ospf6d/ospf6_top.c:232,1
    - Dst: ospf6_top_lsdb_hook_remove
      Src: /src/frr/ospf6d/ospf6_top.c:240,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_top.c:242,1
    - Dst: ospf6_asbr_lsa_remove
      Src: /src/frr/ospf6d/ospf6_top.c:244,1
    - Dst: ospf6_top_route_hook_add
      Src: /src/frr/ospf6d/ospf6_top.c:252,1
    - Dst: table::scope
      Src: /src/frr/ospf6d/ospf6_top.c:258,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_top.c:263,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_top.c:265,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_top.c:271,1
    - Dst: ospf6_zebra_route_update_add
      Src: /src/frr/ospf6d/ospf6_top.c:272,1
    - Dst: ospf6_top_route_hook_remove
      Src: /src/frr/ospf6d/ospf6_top.c:275,1
    - Dst: table::scope
      Src: /src/frr/ospf6d/ospf6_top.c:281,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_top.c:286,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_top.c:288,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_top.c:295,1
    - Dst: ospf6_zebra_route_update_remove
      Src: /src/frr/ospf6d/ospf6_top.c:296,1
    - Dst: ospf6_top_brouter_hook_add
      Src: /src/frr/ospf6d/ospf6_top.c:299,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_top.c:303,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_top.c:308,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_top.c:309,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_top.c:311,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_top.c:314,1
    - Dst: ospf6_asbr_lsentry_add
      Src: /src/frr/ospf6d/ospf6_top.c:318,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_top.c:319,1
    - Dst: table::scope
      Src: /src/frr/ospf6d/ospf6_top.c:324,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_top.c:326,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_top.c:331,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_top.c:332,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_top.c:334,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_top.c:337,1
    - Dst: ospf6_abr_examin_brouter
      Src: /src/frr/ospf6d/ospf6_top.c:340,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_top.c:340,1
    - Dst: ospf6_asbr_lsentry_remove
      Src: /src/frr/ospf6d/ospf6_top.c:342,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_top.c:343,1
    - Dst: ospf6_create
      Src: /src/frr/ospf6d/ospf6_top.c:346,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_top.c:351,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/ospf6d/ospf6_top.c:353,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_top.c:360,1
    - Dst: ospf6_vrf_link
      Src: /src/frr/ospf6d/ospf6_top.c:362,1
    - Dst: ospf6_zebra_vrf_register
      Src: /src/frr/ospf6d/ospf6_top.c:364,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_top.c:367,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_top.c:368,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_top.c:370,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_top.c:371,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_top.c:385,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_top.c:390,1
    - Dst: OSPF6_ROUTE_TABLE_CREATE
      Src: /src/frr/ospf6d/ospf6_top.c:395,1
    - Dst: route_table_init
      Src: /src/frr/ospf6d/ospf6_top.c:414,1
    - Dst: route_table_init
      Src: /src/frr/ospf6d/ospf6_top.c:416,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_top.c:424,1
    - Dst: ospf6_gr_helper_init
      Src: /src/frr/ospf6d/ospf6_top.c:426,1
    - Dst: QOBJ_REG
      Src: /src/frr/ospf6d/ospf6_top.c:427,1
    - Dst: ospf6_serv_sock
      Src: /src/frr/ospf6d/ospf6_top.c:430,1
    - Dst: ospf6_auth_nvm_file_exist
      Src: /src/frr/ospf6d/ospf6_top.c:434,1
    - Dst: ospf6_auth_seqno_nvm_read
      Src: /src/frr/ospf6d/ospf6_top.c:435,1
    - Dst: ospf6_auth_seqno_nvm_update
      Src: /src/frr/ospf6d/ospf6_top.c:437,1
    - Dst: ospf6_auth_seqno_nvm_update
      Src: /src/frr/ospf6d/ospf6_top.c:440,1
    - Dst: ospf6_instance_create
      Src: /src/frr/ospf6d/ospf6_top.c:446,1
    - Dst: ospf6_create
      Src: /src/frr/ospf6d/ospf6_top.c:452,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_top.c:454,1
    - Dst: ospf6_router_id_update
      Src: /src/frr/ospf6d/ospf6_top.c:456,1
    - Dst: ospf6_add
      Src: /src/frr/ospf6d/ospf6_top.c:457,1
    - Dst: ospf6_gr_nvm_read
      Src: /src/frr/ospf6d/ospf6_top.c:463,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospf6d/ospf6_top.c:466,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ospf6d/ospf6_top.c:467,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_top.c:468,1
    - Dst: ospf6_interface_start
      Src: /src/frr/ospf6d/ospf6_top.c:469,1
    - Dst: ospf6_delete
      Src: /src/frr/ospf6d/ospf6_top.c:481,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/ospf6d/ospf6_top.c:489,1
    - Dst: ospf6_gr_helper_deinit
      Src: /src/frr/ospf6d/ospf6_top.c:491,1
    - Dst: ospf6_flush_self_originated_lsas_now
      Src: /src/frr/ospf6d/ospf6_top.c:493,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_top.c:494,1
    - Dst: ospf6_disable
      Src: /src/frr/ospf6d/ospf6_top.c:495,1
    - Dst: ospf6_del
      Src: /src/frr/ospf6d/ospf6_top.c:496,1
    - Dst: ospf6_zebra_vrf_deregister
      Src: /src/frr/ospf6d/ospf6_top.c:498,1
    - Dst: ospf6_serv_close
      Src: /src/frr/ospf6d/ospf6_top.c:500,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_top.c:502,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospf6d/ospf6_top.c:521,1
    - Dst: ospf6_vrf_unlink
      Src: /src/frr/ospf6d/ospf6_top.c:523,1
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_top.c:526,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_top.c:526,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_top.c:527,1
    - Dst: ospf6_asbr_summary_config_delete
      Src: /src/frr/ospf6d/ospf6_top.c:529,1
    - Dst: ospf6_external_aggregator_free
      Src: /src/frr/ospf6d/ospf6_top.c:530,1
    - Dst: route_table_finish
      Src: /src/frr/ospf6d/ospf6_top.c:532,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_top.c:534,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_top.c:535,1
    - Dst: ospf6_disable
      Src: /src/frr/ospf6d/ospf6_top.c:538,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_top.c:668,1
    - Dst: argv_find
      Src: /src/frr/ospf6d/ospf6_top.c:668,1
    - Dst: ospf6_lookup_by_vrf_name
      Src: /src/frr/ospf6d/ospf6_top.c:672,1
    - Dst: ospf6_instance_create
      Src: /src/frr/ospf6d/ospf6_top.c:674,1
    - Dst: VTY_PUSH_CONTEXT
      Src: /src/frr/ospf6d/ospf6_top.c:677,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_top.c:683,1
    - Dst: argv_find
      Src: /src/frr/ospf6d/ospf6_top.c:690,1
    - Dst: ospf6_lookup_by_vrf_name
      Src: /src/frr/ospf6d/ospf6_top.c:694,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:696,1
    - Dst: ospf6_gr_nvm_delete
      Src: /src/frr/ospf6d/ospf6_top.c:699,1
    - Dst: ospf6_delete
      Src: /src/frr/ospf6d/ospf6_top.c:701,1
    - Dst: VTY_PUSH_CONTEXT_NULL
      Src: /src/frr/ospf6d/ospf6_top.c:706,1
    - Dst: ospf6_db_clear
      Src: /src/frr/ospf6d/ospf6_top.c:711,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospf6d/ospf6_top.c:715,1
    - Dst: if_is_operative
      Src: /src/frr/ospf6d/ospf6_top.c:720,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:722,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:723,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:724,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:725,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_top.c:729,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:730,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:731,1
    - Dst: ospf6_spf_table_finish
      Src: /src/frr/ospf6d/ospf6_top.c:733,1
    - Dst: ospf6_route_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:734,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:737,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:738,1
    - Dst: ospf6_route_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:739,1
    - Dst: ospf6_route_remove_all
      Src: /src/frr/ospf6d/ospf6_top.c:740,1
    - Dst: ospf6_process_reset
      Src: /src/frr/ospf6d/ospf6_top.c:743,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/ospf6d/ospf6_top.c:746,1
    - Dst: ospf6_unset_all_aggr_flag
      Src: /src/frr/ospf6d/ospf6_top.c:748,1
    - Dst: ospf6_flush_self_originated_lsas_now
      Src: /src/frr/ospf6d/ospf6_top.c:749,1
    - Dst: ospf6_db_clear
      Src: /src/frr/ospf6d/ospf6_top.c:751,1
    - Dst: ospf6_asbr_redistribute_reset
      Src: /src/frr/ospf6d/ospf6_top.c:753,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/ospf6d/ospf6_top.c:754,1
    - Dst: ospf6_interface_clear
      Src: /src/frr/ospf6d/ospf6_top.c:755,1
    - Dst: DEFPY
      Src: /src/frr/ospf6d/ospf6_top.c:758,1
    - Dst: ospf6_lookup_by_vrf_name
      Src: /src/frr/ospf6d/ospf6_top.c:773,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:775,1
    - Dst: ospf6_router_id_update
      Src: /src/frr/ospf6d/ospf6_top.c:777,1
    - Dst: ospf6_process_reset
      Src: /src/frr/ospf6d/ospf6_top.c:778,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_top.c:785,1
    - Dst: argv_find
      Src: /src/frr/ospf6d/ospf6_top.c:798,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_top.c:801,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:803,1
    - Dst: ospf6_router_id_update
      Src: /src/frr/ospf6d/ospf6_top.c:809,1
    - Dst: ospf6_process_reset
      Src: /src/frr/ospf6d/ospf6_top.c:810,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:812,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 104
    functionDepth: 7
    functionLinenumber: 104
    functionLinenumberEnd: 816
    functionName: ospf6_lookup_by_vrf_name
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 1
    functionsReached:
    - ospf6_interface_clear
    - ospf6_db_clear
    - route_top
    - vrf_lookup_by_name
    - ntohs
    - ospf6_vrf_init
    - ospf6_instance_create
    - XCALLOC
    - ospf6_gr_nvm_delete
    - QOBJ_REG
    - ospf6_add
    - if
    - ospf6_asbr_summary_config_delete
    - route_table_finish
    - vrf_init
    - listcount
    - ospf6_vrf_link
    - inet_pton
    - ospf6_asbr_lsentry_remove
    - ospf6_gr_helper_deinit
    - event_add_read
    - ospf6_zebra_route_update_add
    - argv_find
    - ospf6_auth_nvm_file_exist
    - route_table_init
    - list_new
    - ALL_LIST_ELEMENTS
    - ospf6_del
    - ospf6_lookup_by_vrf_name
    - ospf6_asbr_lsa_add
    - ospf6_top_lsdb_hook_remove
    - DEFPY
    - ospf6_asbr_lsa_remove
    - ospf6_create
    - inet_ntop
    - ospf6_zebra_vrf_deregister
    - DEFUN
    - ospf6_abr_originate_summary
    - ospf6_flush_self_originated_lsas_now
    - monotime
    - ospf6_auth_seqno_nvm_read
    - ospf6_auth_seqno_nvm_update
    - strcmp
    - VTY_PUSH_CONTEXT_NULL
    - ospf6_lsdb_create
    - if_is_operative
    - ospf6_vrf_unlink
    - ospf6_asbr_lsentry_add
    - ospf6_serv_sock
    - ospf6_top_brouter_hook_add
    - ospf6_external_aggregator_free
    - ospf6_serv_close
    - ospf6_top_route_hook_remove
    - FOR_ALL_INTERFACES
    - ospf6_route_remove_all
    - zlog_debug
    - vrf_bitmap_set
    - vrf_lookup_by_id
    - vty_out
    - ospf6_router_id_update
    - ospf6_zebra_vrf_register
    - OSPF6_ROUTE_TABLE_CREATE
    - ospf6_delete
    - route_next
    - ospf6_top_route_hook_add
    - XFREE
    - ospf6_interface_start
    - QOBJ_UNREG
    - IS_OSPF6_DEBUG_ZEBRA
    - vrf_bitmap_unset
    - SET_FLAG
    - ospf6_process_reset
    - ospf6_unset_all_aggr_flag
    - ospf6_asbr_redistribute_reset
    - ospf6_abr_examin_brouter
    - ospf6_zebra_route_update_remove
    - ospf6_spf_table_finish
    - table::scope
    - ADV_ROUTER_IN_PREFIX
    - vrf_cmd_init
    - XSTRDUP
    - ospf6_gr_helper_init
    - ospf6_gr_nvm_read
    - IS_OSPF6_DEBUG_EXAMIN
    - ospf6_disable
    - ospf6_lsdb_remove_all
    - VTY_PUSH_CONTEXT
    linkageType: ''
    returnType: struct ospf6
    signature: struct ospf6 *ospf6_lookup_by_vrf_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_top.c:894,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_top.c:895,1
    - Dst: ospf6_zebra_route_update_add
      Src: /src/frr/ospf6d/ospf6_top.c:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 890
    functionDepth: 7
    functionLinenumber: 890
    functionLinenumberEnd: 897
    functionName: ospf6_reinstall_routes
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - ospf6_route_next
    - ospf6_zebra_route_update_add
    - ospf6_route_head
    linkageType: ''
    returnType: void
    signature: void ospf6_reinstall_routes(struct ospf6 *ospf6)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_top.c:1314,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_top.c:1317,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1318,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_top.c:1321,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_top.c:1322,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_top.c:1323,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1324,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1328,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1332,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1334,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1335,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1337,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1340,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1341,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_top.c:1347,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_top.c:1348,1
    - Dst: ospf6_spf_reason_string
      Src: /src/frr/ospf6d/ospf6_top.c:1349,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospf6d/ospf6_top.c:1351,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1352,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1354,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1357,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1361,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospf6d/ospf6_top.c:1365,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_top.c:1367,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/ospf6d/ospf6_top.c:1370,1
    - Dst: monotime_until
      Src: /src/frr/ospf6d/ospf6_top.c:1372,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1374,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/ospf6d/ospf6_top.c:1377,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_top.c:1379,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_top.c:1380,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1383,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1386,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_top.c:1387,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1389,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1391,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_top.c:1393,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_top.c:1394,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1401,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_top.c:1403,1
    - Dst: ospf6_area_show
      Src: /src/frr/ospf6d/ospf6_top.c:1404,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_top.c:1406,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1408,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/ospf6d/ospf6_top.c:1409,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_top.c:1414,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1415,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_top.c:1419,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_top.c:1420,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_top.c:1421,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1422,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1426,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1429,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1430,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1435,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_top.c:1446,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_top.c:1447,1
    - Dst: ospf6_spf_reason_string
      Src: /src/frr/ospf6d/ospf6_top.c:1448,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1450,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1452,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1456,1
    - Dst: threadtimer_string
      Src: /src/frr/ospf6d/ospf6_top.c:1458,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1459,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_top.c:1460,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_top.c:1463,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1464,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1467,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1471,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_top.c:1472,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1474,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1475,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_top.c:1478,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_top.c:1479,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1481,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1484,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1488,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_top.c:1490,1
    - Dst: ospf6_area_show
      Src: /src/frr/ospf6d/ospf6_top.c:1491,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_top.c:1495,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_top.c:1509,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_top.c:1510,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_top.c:1511,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_top.c:1514,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_top.c:1526,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1538,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospf6d/ospf6_top.c:1539,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_top.c:1541,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1544,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_top.c:1546,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_top.c:1552,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1553,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_top.c:1555,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1558,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 101
    argCount: 4
    argNames:
    - vty
    - o
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1302
    functionDepth: 4
    functionLinenumber: 1302
    functionLinenumberEnd: 1563
    functionName: ospf6_show
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - ospf6_area_show
    - json_object_string_add
    - json_object_to_json_string_ext
    - json_object_string_addf
    - json_object_boolean_false_add
    - json_object_boolean_add
    - ALL_LIST_ELEMENTS_RO
    - inet_ntop
    - ospf6_spf_reason_string
    - if
    - event_is_scheduled
    - DEFUN
    - vty_out
    - listcount
    - timerstring
    - monotime
    - json_object_int_add
    - timersub
    - threadtimer_string
    - monotime_until
    - json_object_new_object
    - CHECK_FLAG
    - json_object_boolean_true_add
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void ospf6_show(struct vty *vty, struct ospf6 *o, json_object *json,\n\t\t
      \      bool use_json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1951,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:1956,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_top.c:1958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1962
      start: 1944
    functionDepth: 2
    functionLinenumber: 1944
    functionLinenumberEnd: 1962
    functionName: ospf6_print_vty_external_routes_walkcb
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - OSPF6_EXTERNAL_RT_COUNT
    - vty_out
    linkageType: ''
    returnType: int
    signature: int ospf6_print_vty_external_routes_walkcb(struct hash_bucket *bucket,
      void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_top.c:1973,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_top.c:1975,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1977,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_top.c:1981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1964
    functionDepth: 4
    functionLinenumber: 1964
    functionLinenumberEnd: 1985
    functionName: ospf6_print_json_external_routes_walkcb
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - OSPF6_EXTERNAL_RT_COUNT
    - prefix2str
    - json_object_string_add
    - snprintf
    linkageType: ''
    returnType: int
    signature: int ospf6_print_json_external_routes_walkcb(struct hash_bucket *bucket,
      void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1993,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:1996,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:1998,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2001,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2003,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - ospf6
    - json
    argTypes:
    - struct vty*
    - struct ospf6*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1987
    functionDepth: 2
    functionLinenumber: 1987
    functionLinenumberEnd: 2005
    functionName: ospf6_show_vrf_name
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - json_object_string_add
    - vty_out
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void ospf6_show_vrf_name(struct vty *vty, struct ospf6 *ospf6,\n\t\t
      \   json_object *json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_show_vrf_name
      Src: /src/frr/ospf6d/ospf6_top.c:2017,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2018,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2020,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_top.c:2022,1
    - Dst: ospf6_show_vrf_name
      Src: /src/frr/ospf6d/ospf6_top.c:2024,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:2026,1
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_top.c:2031,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_top.c:2031,1
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_top.c:2039,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_top.c:2043,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_top.c:2045,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:2049,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_top.c:2052,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:2057,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:2062,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:2065,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_top.c:2066,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_top.c:2068,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:2069,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_top.c:2071,1
    - Dst: hash_walk
      Src: /src/frr/ospf6d/ospf6_top.c:2073,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2079,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2082,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2083,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2084,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2088,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2090,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_top.c:2091,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_top.c:2093,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2094,1
    - Dst: hash_walk
      Src: /src/frr/ospf6d/ospf6_top.c:2096,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2099,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_top.c:2102,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_top.c:2107,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 5
    argNames:
    - vty
    - ospf6
    - json
    - uj
    - detail
    argTypes:
    - struct vty*
    - struct ospf6*
    - json_object*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2007
    functionDepth: 4
    functionLinenumber: 2007
    functionLinenumberEnd: 2111
    functionName: ospf6_show_summary_address
    functionSourceFile: /src/frr/ospf6d/ospf6_top.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - vty_out
    - route_top
    - OSPF6_EXTERNAL_RT_COUNT
    - json_object_int_add
    - route_next
    - json_object_string_add
    - json_object_object_add
    - hash_walk
    - ospf6_show_vrf_name
    linkageType: ''
    returnType: int
    signature: "int ospf6_show_summary_address(struct vty *vty, struct ospf6 *ospf6,\n\t\t\tjson_object
      *json,\n\t\t\tbool uj, const char *detail)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/ospf6d/ospf6_network.c:30,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_network.c:33,1
    - Dst: safe_strerror
      Src: /src/frr/ospf6d/ospf6_network.c:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ospf6_sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 35
    functionName: ospf6_reset_mcastloop
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: void
    signature: void ospf6_reset_mcastloop(int ospf6_sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv6_pktinfo
      Src: /src/frr/ospf6d/ospf6_network.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ospf6_sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: ospf6_set_pktinfo
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 0
    functionsReached:
    - setsockopt_ipv6_pktinfo
    linkageType: ''
    returnType: void
    signature: void ospf6_set_pktinfo(int ospf6_sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv6_tclass
      Src: /src/frr/ospf6d/ospf6_network.c:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ospf6_sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: ospf6_set_transport_class
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 0
    functionsReached:
    - setsockopt_ipv6_tclass
    linkageType: ''
    returnType: void
    signature: void ospf6_set_transport_class(int ospf6_sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/ospf6d/ospf6_network.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ospf6_sock
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: ospf6_serv_close
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 1
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ospf6_serv_close(int *ospf6_sock)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/ospf6d/ospf6_network.c:71,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_network.c:74,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/ospf6d/ospf6_network.c:81,1
    - Dst: ospf6_set_reuseaddr
      Src: /src/frr/ospf6d/ospf6_network.c:83,1
    - Dst: ospf6_reset_mcastloop
      Src: /src/frr/ospf6d/ospf6_network.c:85,1
    - Dst: ospf6_set_pktinfo
      Src: /src/frr/ospf6d/ospf6_network.c:86,1
    - Dst: ospf6_set_transport_class
      Src: /src/frr/ospf6d/ospf6_network.c:87,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_network.c:91,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_network.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 95
    functionName: ospf6_serv_sock
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 1
    functionsReached:
    - ospf6_reset_mcastloop
    - sockopt_reuseaddr
    - vrf_socket
    - ospf6_set_transport_class
    - zlog_warn
    - inet_pton
    - ospf6_set_reuseaddr
    - ospf6_set_pktinfo
    linkageType: ''
    returnType: int
    signature: int ospf6_serv_sock(struct ospf6 *ospf6)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/ospf6d/ospf6_network.c:71,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_network.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: (&ospf6d_privs)
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - vrf_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&ospf6d_privs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_network.c:107,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_network.c:109,1
    - Dst: setsockopt
      Src: /src/frr/ospf6d/ospf6_network.c:111,1
    - Dst: flog_err_sys
      Src: /src/frr/ospf6d/ospf6_network.c:113,1
    - Dst: safe_strerror
      Src: /src/frr/ospf6d/ospf6_network.c:116,1
    - Dst: setsockopt_so_sendbuf
      Src: /src/frr/ospf6d/ospf6_network.c:120,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/ospf6d/ospf6_network.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - ifindex
    - group
    - option
    - sockfd
    argTypes:
    - ifindex_t
    - struct in6_addr*
    - int
    - int
    assertStmts:
    - condition: (ifindex)
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/frr/ospf6d/ospf6_network.c
    constantsTouched: []
    func_position:
      end: 124
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 124
    functionName: ospf6_sso
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 0
    functionsReached:
    - assert
    - setsockopt_so_sendbuf
    - safe_strerror
    - setsockopt_so_recvbuf
    - flog_err_sys
    - setsockopt
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ospf6_sso(ifindex_t ifindex, struct in6_addr *group, int option,
      int sockfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iov
    argTypes:
    - struct iovec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 132
    functionName: iov_count
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int iov_count(struct iovec *iov)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - iov
    argTypes:
    - struct iovec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 141
    functionName: iov_totallen
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int iov_totallen(struct iovec *iov)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/ospf6d/ospf6_network.c:151,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_network.c:156,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_network.c:158,1
    - Dst: CMSG_DATA
      Src: /src/frr/ospf6d/ospf6_network.c:160,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_network.c:161,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_network.c:166,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_network.c:168,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_network.c:175,1
    - Dst: CMSG_LEN
      Src: /src/frr/ospf6d/ospf6_network.c:181,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_network.c:185,1
    - Dst: iov_count
      Src: /src/frr/ospf6d/ospf6_network.c:187,1
    - Dst: sendmsg
      Src: /src/frr/ospf6d/ospf6_network.c:193,1
    - Dst: iov_totallen
      Src: /src/frr/ospf6d/ospf6_network.c:194,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_network.c:195,1
    - Dst: safe_strerror
      Src: /src/frr/ospf6d/ospf6_network.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 5
    argNames:
    - src
    - dst
    - ifindex
    - message
    - ospf6_sock
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - ifindex_t
    - struct iovec*
    - int
    assertStmts:
    - condition: (dst)
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/frr/ospf6d/ospf6_network.c
    constantsTouched: []
    func_position:
      end: 200
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 200
    functionName: ospf6_sendmsg
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 2
    functionsReached:
    - iov_count
    - memset
    - iov_totallen
    - zlog_warn
    - safe_strerror
    - sendmsg
    - CMSG_SPACE
    - CMSG_DATA
    - memcpy
    - CMSG_LEN
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,\n\t\t
      \ ifindex_t ifindex, struct iovec *message, int ospf6_sock)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/ospf6d/ospf6_network.c:208,1
    - Dst: CMSG_DATA
      Src: /src/frr/ospf6d/ospf6_network.c:213,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_network.c:214,1
    - Dst: CMSG_LEN
      Src: /src/frr/ospf6d/ospf6_network.c:219,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_network.c:223,1
    - Dst: iov_count
      Src: /src/frr/ospf6d/ospf6_network.c:225,1
    - Dst: recvmsg
      Src: /src/frr/ospf6d/ospf6_network.c:231,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_network.c:234,1
    - Dst: safe_strerror
      Src: /src/frr/ospf6d/ospf6_network.c:235,1
    - Dst: iov_totallen
      Src: /src/frr/ospf6d/ospf6_network.c:237,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_network.c:238,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_network.c:241,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_network.c:242,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_network.c:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 5
    argNames:
    - src
    - dst
    - ifindex
    - message
    - ospf6_sock
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - ifindex_t*
    - struct iovec*
    - int
    assertStmts:
    - condition: (src)
      pos:
        line_end: 240
        line_start: 240
        source_file: /src/frr/ospf6d/ospf6_network.c
    constantsTouched: []
    func_position:
      end: 251
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 251
    functionName: ospf6_recvmsg
    functionSourceFile: /src/frr/ospf6d/ospf6_network.c
    functionUses: 1
    functionsReached:
    - assert
    - iov_count
    - memset
    - iov_totallen
    - zlog_warn
    - safe_strerror
    - CMSG_SPACE
    - CMSG_DATA
    - memcpy
    - CMSG_LEN
    - recvmsg
    linkageType: ''
    returnType: int
    signature: "int ospf6_recvmsg(struct in6_addr *src, struct in6_addr *dst,\n\t\t
      \ ifindex_t *ifindex, struct iovec *message, int ospf6_sock)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_lsa.c:46,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_lsa.c:48,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_lsa.c:51,1
    - Dst: OSPF6_PROCESS
      Src: /src/frr/ospf6d/ospf6_lsa.c:54,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:57,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 61
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 61
    functionName: ospf6_get_by_lsdb
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - OSPF6_INTERFACE
    - OSPF6_AREA
    - OSPF6_PROCESS
    - OSPF6_LSA_SCOPE
    - assert
    linkageType: ''
    returnType: struct ospf6
    signature: struct ospf6 *ospf6_get_by_lsdb(struct ospf6_lsa *lsa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:69,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:72,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:74,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:77,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:79,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:81,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 87
    functionName: ospf6_unknown_lsa_show
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ntohs
    - json_object_string_add
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int ospf6_unknown_lsa_show(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t\t
      \ json_object *json_obj, bool use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assertf
      Src: /src/frr/ospf6d/ospf6_lsa.c:103,1
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_lsa.c:103,1
    - Dst: assertf
      Src: /src/frr/ospf6d/ospf6_lsa.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - handler
    argTypes:
    - struct ospf6_lsa_handler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: ospf6_install_lsa_handler
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 2
    functionsReached:
    - assertf
    - array_size
    linkageType: ''
    returnType: void
    signature: void ospf6_install_lsa_handler(struct ospf6_lsa_handler *handler)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:113,1
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_lsa.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 122
    functionName: ospf6_get_lsa_handler
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ntohs
    - array_size
    linkageType: ''
    returnType: struct ospf6_lsa_handler
    signature: struct ospf6_lsa_handler *ospf6_get_lsa_handler(uint16_t type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_get_lsa_handler
      Src: /src/frr/ospf6d/ospf6_lsa.c:129,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_lsa.c:133,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 135
    functionName: ospf6_lstype_name
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 4
    functionsReached:
    - ospf6_get_lsa_handler
    - ntohs
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf6_lstype_name(uint16_t type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_get_lsa_handler
      Src: /src/frr/ospf6d/ospf6_lsa.c:142,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_lsa.c:146,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 148
    functionName: ospf6_lstype_short_name
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ospf6_get_lsa_handler
    - ntohs
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf6_lstype_short_name(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_get_lsa_handler
      Src: /src/frr/ospf6d/ospf6_lsa.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 155
    functionName: ospf6_lstype_debug
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ospf6_get_lsa_handler
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ospf6_lstype_debug(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_lsa.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ospf6
    - type
    - instance
    argTypes:
    - struct ospf6*
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 165
    functionName: metric_type
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 5
    functionsReached:
    - ospf6_redist_lookup
    linkageType: ''
    returnType: int
    signature: int metric_type(struct ospf6 *ospf6, int type, uint8_t instance)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_lsa.c:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ospf6
    - type
    - instance
    argTypes:
    - struct ospf6*
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 183
    functionName: metric_value
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 5
    functionsReached:
    - ospf6_redist_lookup
    linkageType: ''
    returnType: int
    signature: int metric_value(struct ospf6 *ospf6, int type, uint8_t instance)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:190,1
    - Dst: OSPF6_LSA_IS_SAME
      Src: /src/frr/ospf6d/ospf6_lsa.c:190,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:194,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:195,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:196,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:197,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:199,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:200,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:204,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:204,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:207,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_lsa.c:208,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - lsa1
    - lsa2
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_lsa*
    assertStmts:
    - condition: (OSPF6_LSA_IS_SAME(lsa1, lsa2))
      pos:
        line_end: 189
        line_start: 189
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 209
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 209
    functionName: ospf6_lsa_is_differ
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_IS_SAME
    - ospf6_lsa_age_current
    - memcmp
    - ntohs
    - assert
    linkageType: ''
    returnType: int
    signature: int ospf6_lsa_is_differ(struct ospf6_lsa *lsa1, struct ospf6_lsa *lsa2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_lsa.c:215,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_lsa.c:215,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:217,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:217,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:221,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:222,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_lsa.c:223,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:228,1
    - Dst: OSPF6_LSA_SIZE
      Src: /src/frr/ospf6d/ospf6_lsa.c:231,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_lsa.c:237,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_lsa.c:237,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_lsa.c:238,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - lsa1
    - lsa2
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 239
    functionName: ospf6_lsa_is_changed
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - OSPF6_LSA_IS_MAXAGE
    - CHECK_FLAG
    - memcmp
    - ntohs
    - zlog_warn
    - OSPF6_LSA_SIZE
    linkageType: ''
    returnType: int
    signature: int ospf6_lsa_is_changed(struct ospf6_lsa *lsa1, struct ospf6_lsa *lsa2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:247,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_lsa.c:249,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (lsa && lsa->header)
      pos:
        line_end: 246
        line_start: 246
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 255
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 255
    functionName: ospf6_lsa_age_set
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ntohs
    - monotime
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_age_set(struct ospf6_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:265,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:266,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_lsa.c:269,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:271,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:275,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (lsa)
      pos:
        line_end: 264
        line_start: 264
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (lsa->header)
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 286
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 286
    functionName: ospf6_lsa_age_current
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 1
    functionsReached:
    - ntohs
    - monotime
    - assert
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ospf6_lsa_age_current(struct ospf6_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:293,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lsa
    - transdelay
    argTypes:
    - struct ospf6_lsa*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 297
    functionName: ospf6_lsa_age_update_to_send
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 5
    functionsReached:
    - ospf6_lsa_age_current
    - htons
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_age_update_to_send(struct ospf6_lsa *lsa, uint32_t transdelay)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_LSA_TYPE
      Src: /src/frr/ospf6d/ospf6_lsa.c:302,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsa.c:303,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_lsa.c:305,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_lsa.c:306,1
    - Dst: ospf6_flood_clear
      Src: /src/frr/ospf6d/ospf6_lsa.c:333,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:335,1
    - Dst: event_execute
      Src: /src/frr/ospf6d/ospf6_lsa.c:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 337
    functionName: ospf6_lsa_premature_aging
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ospf6_flood_clear
    - IS_OSPF6_DEBUG_LSA_TYPE
    - htons
    - event_execute
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_premature_aging(struct ospf6_lsa *lsa)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:347,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:348,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:349,1
    - Dst: OSPF6_LSA_IS_SAME
      Src: /src/frr/ospf6d/ospf6_lsa.c:349,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:351,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:352,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:361,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:362,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:369,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:370,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_lsa*
    assertStmts:
    - condition: (a && a->header)
      pos:
        line_end: 346
        line_start: 346
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (b && b->header)
      pos:
        line_end: 347
        line_start: 347
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (OSPF6_LSA_IS_SAME(a, b))
      pos:
        line_end: 348
        line_start: 348
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 386
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 386
    functionName: ospf6_lsa_compare
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 3
    functionsReached:
    - OSPF6_LSA_IS_SAME
    - ospf6_lsa_age_current
    - ntohs
    - ntohl
    - assert
    linkageType: ''
    returnType: int
    signature: int ospf6_lsa_compare(struct ospf6_lsa *a, struct ospf6_lsa *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:391,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:392,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_lsa.c:394,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - lsa
    - buf
    - size
    argTypes:
    - struct ospf6_lsa*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 388
    functionDepth: 3
    functionLinenumber: 388
    functionLinenumberEnd: 397
    functionName: ospf6_lsa_printbuf
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ospf6_lstype_name
    - inet_ntop
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *ospf6_lsa_printbuf(struct ospf6_lsa *lsa, char *buf, int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:402,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:403,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsa.c:404,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:404,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsa.c:406,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:407,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:407,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:408,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - header
    argTypes:
    - struct ospf6_lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 399
    functionDepth: 3
    functionLinenumber: 399
    functionLinenumberEnd: 409
    functionName: ospf6_lsa_header_print_raw
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 3
    functionsReached:
    - ospf6_lstype_name
    - ntohs
    - inet_ntop
    - zlog_debug
    - ntohl
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_header_print_raw(struct ospf6_lsa_header *header)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:413,1
    - Dst: ospf6_lsa_header_print_raw
      Src: /src/frr/ospf6d/ospf6_lsa.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 415
    functionName: ospf6_lsa_header_print
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_age_current
    - ospf6_lsa_header_print_raw
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_header_print(struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 421
    functionName: ospf6_lsa_show_summary_header
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_show_summary_header(struct vty *vty)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:433,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:434,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:436,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:437,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:440,1
    - Dst: ospf6_get_lsa_handler
      Src: /src/frr/ospf6d/ospf6_lsa.c:441,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_lsa.c:444,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:452,1
    - Dst: ospf6_lstype_short_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:454,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:455,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:456,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:458,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:459,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:460,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:462,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:463,1
    - Dst: struct ospf6_lsa_handler*::lh_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_lsa.c:465,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:467,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:469,1
    - Dst: ospf6_lstype_short_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:470,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:471,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:472,1
    - Dst: struct ospf6_lsa_handler*::lh_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_lsa.c:473,1
    - Dst: struct ospf6_lsa_handler*::lh_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_lsa.c:481,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:484,1
    - Dst: ospf6_lstype_short_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:486,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:488,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:489,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:491,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:492,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:493,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:495,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:497,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:499,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_lsa.c:500,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:502,1
    - Dst: ospf6_lstype_short_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:503,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:506,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:507,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_lsa.c:513,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:517,1
    - Dst: ospf6_lstype_short_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:519,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:520,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:521,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:523,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:524,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:525,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:527,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:528,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:530,1
    - Dst: ospf6_lstype_short_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:531,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:532,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:533,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 59
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_array
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts:
    - condition: (lsa)
      pos:
        line_end: 432
        line_start: 432
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (lsa->header)
      pos:
        line_end: 433
        line_start: 433
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 536
      start: 423
    functionDepth: 3
    functionLinenumber: 423
    functionLinenumberEnd: 536
    functionName: ospf6_lsa_show_summary
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf6_get_lsa_handler
    - json_object_array_add
    - vty_out
    - ospf6_lstype_short_name
    - ospf6_lsa_age_current
    - struct ospf6_lsa_handler*::lh_get_prefix_str
    - json_object_int_add
    - ntohs
    - inet_ntop
    - json_object_free
    - json_object_string_add
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsa_show_summary(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t
      \   json_object *json_array, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:551,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_lsa.c:554,1
    - Dst: XMALLOC
      Src: /src/frr/ospf6d/ospf6_lsa.c:557,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:559,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:560,1
    - Dst: frrstr_hex
      Src: /src/frr/ospf6d/ospf6_lsa.c:563,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:565,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:566,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:567,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:568,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_lsa.c:570,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:572,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:576,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:578,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_lsa.c:580,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:581,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:584,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_array
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 538
    functionDepth: 2
    functionLinenumber: 538
    functionLinenumberEnd: 588
    functionName: ospf6_lsa_show_dump
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - frrstr_hex
    - json_object_array_add
    - vty_out
    - snprintf
    - XMALLOC
    - ntohs
    - inet_ntop
    - json_object_string_add
    - XFREE
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsa_show_dump(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t
      json_object *json_array, bool use_json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:596,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:598,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:599,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_lsa.c:603,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:604,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:605,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:606,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:607,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:608,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:609,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:611,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:612,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:613,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:614,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:615,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:616,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:617,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:618,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:619,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:622,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:624,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:625,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:625,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:626,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:627,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:628,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:629,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:630,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:631,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:632,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:633,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:634,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:635,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:636,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:637,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:639,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_array
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts:
    - condition: (lsa && lsa->header)
      pos:
        line_end: 595
        line_start: 595
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 642
      start: 590
    functionDepth: 3
    functionLinenumber: 590
    functionLinenumberEnd: 642
    functionName: ospf6_lsa_show_internal
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_array_add
    - vty_out
    - ospf6_lsa_age_current
    - ospf6_lstype_name
    - json_object_int_add
    - ntohs
    - inet_ntop
    - json_object_string_add
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsa_show_internal(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t
      \    json_object *json_array, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:653,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:655,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_lsa.c:656,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_lsa.c:659,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_lsa.c:660,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_lsa.c:661,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_lsa.c:663,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:664,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:665,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:666,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:667,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:668,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:669,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:671,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:672,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:673,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:674,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:675,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:676,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:677,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:679,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:679,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:680,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:681,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:682,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:683,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsa.c:684,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:685,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:686,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:687,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:688,1
    - Dst: ospf6_get_lsa_handler
      Src: /src/frr/ospf6d/ospf6_lsa.c:691,1
    - Dst: struct ospf6_lsa_handler*::lh_show
      Src: /src/frr/ospf6d/ospf6_lsa.c:694,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:696,1
    - Dst: lh_show
      Src: /src/frr/ospf6d/ospf6_lsa.c:697,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_lsa.c:701,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:703,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_array
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts:
    - condition: (lsa && lsa->header)
      pos:
        line_end: 652
        line_start: 652
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (unknown_handler.lh_show != NULL)
      pos:
        line_end: 695
        line_start: 695
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 704
      start: 644
    functionDepth: 3
    functionLinenumber: 644
    functionLinenumberEnd: 704
    functionName: ospf6_lsa_show
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ospf6_get_lsa_handler
    - vty_out
    - json_object_array_add
    - ospf6_lsa_age_current
    - ospf6_lstype_name
    - lh_show
    - timerstring
    - monotime
    - json_object_int_add
    - timersub
    - inet_ntop
    - ntohs
    - struct ospf6_lsa_handler*::lh_show
    - json_object_string_add
    - ntohl
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsa_show(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t
      \   json_object *json_array, bool use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_lsa.c:710,1
    - Dst: XMALLOC
      Src: /src/frr/ospf6d/ospf6_lsa.c:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lsa_length
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 714
    functionName: ospf6_lsa_alloc
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - XMALLOC
    - XCALLOC
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: struct ospf6_lsa *ospf6_lsa_alloc(size_t lsa_length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:723,1
    - Dst: ospf6_lsa_alloc
      Src: /src/frr/ospf6d/ospf6_lsa.c:725,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_lsa.c:728,1
    - Dst: ospf6_lsa_printbuf
      Src: /src/frr/ospf6d/ospf6_lsa.c:731,1
    - Dst: ospf6_lsa_age_set
      Src: /src/frr/ospf6d/ospf6_lsa.c:734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - header
    argTypes:
    - struct ospf6_lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 717
    functionDepth: 4
    functionLinenumber: 717
    functionLinenumberEnd: 737
    functionName: ospf6_lsa_create
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 1
    functionsReached:
    - ospf6_lsa_printbuf
    - ospf6_lsa_age_set
    - ntohs
    - ospf6_lsa_alloc
    - memcpy
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: struct ospf6_lsa *ospf6_lsa_create(struct ospf6_lsa_header *header)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_alloc
      Src: /src/frr/ospf6d/ospf6_lsa.c:743,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_lsa.c:745,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:747,1
    - Dst: ospf6_lsa_printbuf
      Src: /src/frr/ospf6d/ospf6_lsa.c:750,1
    - Dst: ospf6_lsa_age_set
      Src: /src/frr/ospf6d/ospf6_lsa.c:753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - header
    argTypes:
    - struct ospf6_lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 739
    functionDepth: 4
    functionLinenumber: 739
    functionLinenumberEnd: 756
    functionName: ospf6_lsa_create_headeronly
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 3
    functionsReached:
    - ospf6_lsa_printbuf
    - ospf6_lsa_age_set
    - ospf6_lsa_alloc
    - SET_FLAG
    - memcpy
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: struct ospf6_lsa *ospf6_lsa_create_headeronly(struct ospf6_lsa_header
      *header)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:760,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_lsa.c:763,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_lsa.c:764,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_lsa.c:767,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_lsa.c:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (lsa->lock == 0)
      pos:
        line_end: 759
        line_start: 759
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 769
      start: 758
    functionDepth: 1
    functionLinenumber: 758
    functionLinenumberEnd: 769
    functionName: ospf6_lsa_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 3
    functionsReached:
    - XFREE
    - EVENT_OFF
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_delete(struct ospf6_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_lsa.c:775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:776,1
    - Dst: ospf6_lsa_create_headeronly
      Src: /src/frr/ospf6d/ospf6_lsa.c:777,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_lsa.c:779,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (copy->lock == 0)
      pos:
        line_end: 779
        line_start: 779
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 790
      start: 771
    functionDepth: 5
    functionLinenumber: 771
    functionLinenumberEnd: 790
    functionName: ospf6_lsa_copy
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 5
    functionsReached:
    - ospf6_lsa_create
    - ospf6_lsa_age_current
    - CHECK_FLAG
    - assert
    - ospf6_lsa_create_headeronly
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: struct ospf6_lsa *ospf6_lsa_copy(struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 797
    functionName: ospf6_lsa_lock
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: struct ospf6_lsa *ospf6_lsa_lock(struct ospf6_lsa *lsa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:803,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_lsa.c:809,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (lsa->lock > 0)
      pos:
        line_end: 802
        line_start: 802
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 811
      start: 800
    functionDepth: 2
    functionLinenumber: 800
    functionLinenumberEnd: 811
    functionName: ospf6_lsa_unlock
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 7
    functionsReached:
    - ospf6_lsa_delete
    - assert
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: struct ospf6_lsa *ospf6_lsa_unlock(struct ospf6_lsa *lsa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_lsa.c:820,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:822,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:823,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_lsa.c:823,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:824,1
    - Dst: IS_OSPF6_DEBUG_LSA_TYPE
      Src: /src/frr/ospf6d/ospf6_lsa.c:828,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsa.c:829,1
    - Dst: ospf6_lsa_header_print
      Src: /src/frr/ospf6d/ospf6_lsa.c:830,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:833,1
    - Dst: ospf6_get_by_lsdb
      Src: /src/frr/ospf6d/ospf6_lsa.c:835,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:836,1
    - Dst: ospf6_install_lsa
      Src: /src/frr/ospf6d/ospf6_lsa.c:839,1
    - Dst: ospf6_flood
      Src: /src/frr/ospf6d/ospf6_lsa.c:842,1
    - Dst: ospf6_maxage_remove
      Src: /src/frr/ospf6d/ospf6_lsa.c:845,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (!lsa->refresh)
      pos:
        line_end: 823
        line_start: 823
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (lsa && lsa->header)
      pos:
        line_end: 821
        line_start: 821
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (OSPF6_LSA_IS_MAXAGE(lsa))
      pos:
        line_end: 822
        line_start: 822
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    - condition: (ospf6)
      pos:
        line_end: 835
        line_start: 835
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 846
      start: 815
    functionDepth: 5
    functionLinenumber: 815
    functionLinenumberEnd: 846
    functionName: ospf6_lsa_expire
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_LSA_TYPE
    - ospf6_lsa_header_print
    - OSPF6_LSA_IS_MAXAGE
    - ospf6_get_by_lsdb
    - CHECK_FLAG
    - ospf6_maxage_remove
    - zlog_debug
    - ospf6_flood
    - EVENT_ARG
    - ospf6_install_lsa
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_expire(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_lsa.c:853,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsa.c:854,1
    - Dst: ospf6_get_scoped_lsdb_self
      Src: /src/frr/ospf6d/ospf6_lsa.c:858,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_lsa.c:859,1
    - Dst: IS_OSPF6_DEBUG_LSA_TYPE
      Src: /src/frr/ospf6d/ospf6_lsa.c:862,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsa.c:863,1
    - Dst: ospf6_lsa_premature_aging
      Src: /src/frr/ospf6d/ospf6_lsa.c:865,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:870,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_lsa.c:872,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_lsa.c:874,1
    - Dst: ospf6_lsa_create::ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_lsa.c:876,1
    - Dst: IS_OSPF6_DEBUG_LSA_TYPE
      Src: /src/frr/ospf6d/ospf6_lsa.c:884,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_lsa.c:884,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsa.c:885,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (old && old->header)
      pos:
        line_end: 853
        line_start: 853
        source_file: /src/frr/ospf6d/ospf6_lsa.c
    constantsTouched: []
    func_position:
      end: 891
      start: 848
    functionDepth: 5
    functionLinenumber: 848
    functionLinenumberEnd: 891
    functionName: ospf6_lsa_refresh
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_checksum
    - IS_OSPF6_DEBUG_LSA_TYPE
    - ospf6_lsa_premature_aging
    - htons
    - ospf6_new_ls_seqnum
    - header::header
    - zlog_debug
    - EVENT_ARG
    - ospf6_get_scoped_lsdb_self
    - ospf6_lsa_create::ospf6_lsa_create
    - ospf6_lsdb_lookup
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_refresh(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_lsa.c:904,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6_lsa.c:905,1
    - Dst: while
      Src: /src/frr/ospf6d/ospf6_lsa.c:907,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:909,1
    - Dst: ospf6_flood
      Src: /src/frr/ospf6d/ospf6_lsa.c:911,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_lsa.c:913,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_lsa.c:916,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6_lsa.c:917,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:921,1
    - Dst: ospf6_flood
      Src: /src/frr/ospf6d/ospf6_lsa.c:923,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_lsa.c:925,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:930,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_lsa.c:932,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsa.c:934,1
    - Dst: ospf6_flood
      Src: /src/frr/ospf6d/ospf6_lsa.c:935,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_lsa.c:943,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:950,1
    - Dst: fletcher_checksum
      Src: /src/frr/ospf6d/ospf6_lsa.c:956,1
    - Dst: ospf6_lsa_checksum_valid
      Src: /src/frr/ospf6d/ospf6_lsa.c:959,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsa.c:966,1
    - Dst: fletcher_checksum
      Src: /src/frr/ospf6d/ospf6_lsa.c:968,1
    - Dst: ospf6_lsa_init
      Src: /src/frr/ospf6d/ospf6_lsa.c:972,1
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_lsa.c:974,1
    - Dst: ospf6_lsa_terminate
      Src: /src/frr/ospf6d/ospf6_lsa.c:977,1
    - Dst: ospf6_lsa_handler_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:981,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_lsa.c:985,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_lsa.c:987,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_lsa.c:989,1
    - Dst: MIN
      Src: /src/frr/ospf6d/ospf6_lsa.c:993,1
    - Dst: islower
      Src: /src/frr/ospf6d/ospf6_lsa.c:994,1
    - Dst: tolower
      Src: /src/frr/ospf6d/ospf6_lsa.c:995,1
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_lsa.c:1008,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1013,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1015,1
    - Dst: DEFPY
      Src: /src/frr/ospf6d/ospf6_lsa.c:1019,1
    - Dst: ospf6_lsa_debug_set_all
      Src: /src/frr/ospf6d/ospf6_lsa.c:1028,1
    - Dst: DEFPY
      Src: /src/frr/ospf6d/ospf6_lsa.c:1032,1
    - Dst: ospf6_get_lsa_handler
      Src: /src/frr/ospf6d/ospf6_lsa.c:1044,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1049,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1051,1
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_lsa.c:1080,1
    - Dst: strncmp
      Src: /src/frr/ospf6d/ospf6_lsa.c:1084,1
    - Dst: ospf6_lsa_handler_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:1084,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_lsa.c:1085,1
    - Dst: strcasecmp
      Src: /src/frr/ospf6d/ospf6_lsa.c:1088,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_lsa.c:1097,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_lsa.c:1099,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_lsa.c:1101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 893
    functionDepth: 2
    functionLinenumber: 893
    functionLinenumberEnd: 1103
    functionName: ospf6_flush_self_originated_lsas_now
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 1
    functionsReached:
    - ospf6_get_lsa_handler
    - strlen
    - fletcher_checksum
    - htons
    - ospf6_lsa_init
    - ntohs
    - strncmp
    - while
    - ospf6_install_lsa_handler
    - DEFPY
    - ospf6_lsdb_next
    - MIN
    - strmatch
    - snprintf
    - ALL_LIST_ELEMENTS_RO
    - array_size
    - ospf6_flood
    - islower
    - tolower
    - ospf6_lsa_checksum
    - ospf6_lsdb_head
    - ospf6_lsa_checksum_valid
    - ALL_LSDB_TYPED_ADVRTR
    - UNSET_FLAG
    - strcasecmp
    - ospf6_lsa_handler_name
    - strcmp
    - SET_FLAG
    - ospf6_lsa_terminate
    - ALL_LIST_ELEMENTS
    - ospf6_lsa_debug_set_all
    linkageType: ''
    returnType: void
    signature: void ospf6_flush_self_originated_lsas_now(struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1165,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1166,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1167,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1168,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1169,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1170,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1172,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_lsa.c:1173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1163
    functionDepth: 1
    functionLinenumber: 1163
    functionLinenumberEnd: 1174
    functionName: install_element_ospf6_debug_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_lsa(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_lsa.c:1182,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1186,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:1194,1
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_lsa.c:1198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1202,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:1203,1
    - Dst: ospf6_lsa_handler_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:1204,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1205,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:1206,1
    - Dst: ospf6_lsa_handler_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:1207,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1208,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:1209,1
    - Dst: ospf6_lsa_handler_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:1210,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1211,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:1212,1
    - Dst: ospf6_lsa_handler_name
      Src: /src/frr/ospf6d/ospf6_lsa.c:1213,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_lsa.c:1214,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_lsa.c:1215,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1176
    functionDepth: 2
    functionLinenumber: 1176
    functionLinenumberEnd: 1219
    functionName: config_write_ospf6_debug_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_lsa.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - array_size
    - vty_out
    - ospf6_lsa_handler_name
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_lsa(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: OSPF6_DEBUG_ZEBRA_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ZEBRA_ON(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: OSPF6_DEBUG_ZEBRA_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ZEBRA_OFF(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: IS_OSPF6_DEBUG_ZEBRA
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_ZEBRA(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - vrf_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: ospf6_zebra_is_redistribute
    functionSourceFile: /src/frr/ospf6d/ospf6_zebra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_zebra_is_redistribute(type, vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: OSPF6_DEBUG_NSSA_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_NSSA_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: OSPF6_DEBUG_NSSA_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_NSSA_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: CHECK_LSA_TYPE_1_TO_5_OR_7
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LSA_TYPE_1_TO_5_OR_7(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: OSPF6_OPT_SET
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_OPT_SET(x, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: OSPF6_OPT_ISSET
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_OPT_ISSET(x, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: OSPF6_OPT_CLEAR
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_OPT_CLEAR(x, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: OSPF6_OPT_SET_EXT
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_OPT_SET_EXT(x, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: OSPF6_OPT_ISSET_EXT
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_OPT_ISSET_EXT(x, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: OSPF6_OPT_CLEAR_EXT
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_OPT_CLEAR_EXT(x, opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: OSPF6_OPT_CLEAR_ALL
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_OPT_CLEAR_ALL(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: OSPF6_PREFIX_BODY
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PREFIX_BODY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: OSPF6_PREFIX_SPACE
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PREFIX_SPACE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: OSPF6_PREFIX_SIZE
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PREFIX_SIZE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: OSPF6_PREFIX_NEXT
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PREFIX_NEXT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: OSPF6_DEBUG_INTERFACE_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_INTERFACE_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: OSPF6_DEBUG_INTERFACE_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_interface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_INTERFACE_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: OSPF6_PROCESS
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PROCESS(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: OSPF6_AREA
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_AREA(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: OSPF6_INTERFACE
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_INTERFACE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: OSPF6_NEIGHBOR
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_NEIGHBOR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tv
    - ','
    - buf
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 62
    functionName: timerstring
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timerstring(tv, buf, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - now
    - ','
    - t
    - ','
    - buf
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 73
    functionName: threadtimer_string
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: threadtimer_string(now, t, buf, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - uj
    - ','
    - all_vrf
    - ','
    - ospf6
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: OSPF6_CMD_CHECK_VRF
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_CMD_CHECK_VRF(uj, all_vrf, ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - O
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: IS_OSPF6_ASBR
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_ASBR(O)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - argv
    - ','
    - argc
    - ','
    - idx_vrf
    - ','
    - vrf_name
    - ','
    - all_vrf
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 99
    functionName: OSPF6_FIND_VRF_ARGS
    functionSourceFile: /src/frr/ospf6d/ospf6d.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_FIND_VRF_ARGS(argv, argc, idx_vrf, vrf_name, all_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: OSPF6_DEBUG_ROUTE_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ROUTE_ON(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 27
    functionName: OSPF6_DEBUG_ROUTE_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ROUTE_OFF(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: IS_OSPF6_DEBUG_ROUTE
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_ROUTE(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct ospf6_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: ospf6_nexthop_is_set
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ospf6_nexthop_is_set(const struct ospf6_nexthop *nh)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/frr/ospf6d/ospf6_route.h:72,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - nha
    - nhb
    argTypes:
    - struct ospf6_nexthop*
    - struct ospf6_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 78
    functionName: ospf6_nexthop_is_same
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached:
    - IN6_ARE_ADDR_EQUAL
    linkageType: ''
    returnType: bool
    signature: "bool ospf6_nexthop_is_same(const struct ospf6_nexthop *nha,\n\t\t\t\t\t
      const struct ospf6_nexthop *nhb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_route.h:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nh
    argTypes:
    - struct ospf6_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: ospf6_nexthop_clear
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void ospf6_nexthop_clear(struct ospf6_nexthop *nh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_route.h:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nha
    - nhb
    argTypes:
    - struct ospf6_nexthop*
    - struct ospf6_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: ospf6_nexthop_copy
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 2
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_nexthop_copy(struct ospf6_nexthop *nha,\n\t\t\t\t      const
      struct ospf6_nexthop *nhb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: OSPF6_PATH_COST_IS_CONFIGURED
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PATH_COST_IS_CONFIGURED(path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 252
    functionName: OSPF6_ROUTE_TABLE_CREATE
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ROUTE_TABLE_CREATE(s, t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: OSPF6_DEST_TYPE_NAME
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEST_TYPE_NAME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: OSPF6_DEST_TYPE_SUBSTR
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEST_TYPE_SUBSTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 267
    functionName: OSPF6_PATH_TYPE_NAME
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PATH_TYPE_NAME(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: OSPF6_PATH_TYPE_SUBSTR
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PATH_TYPE_SUBSTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 273
    functionName: OSPF6_PATH_TYPE_JSON
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_PATH_TYPE_JSON(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: ospf6_route_is_prefix
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_is_prefix(p, r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ra
    - ','
    - rb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 280
    functionName: ospf6_route_is_same
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_is_same(ra, rb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ra
    - ','
    - rb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 285
    functionName: ospf6_route_is_same_origin
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_is_same_origin(ra, rb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ra
    - ','
    - rb
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 293
    functionName: ospf6_route_is_identical
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_is_identical(ra, rb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 295
    functionName: ospf6_route_is_best
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_is_best(r)
  - 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: ospf6_linkstate_prefix_adv_router
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_linkstate_prefix_adv_router(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: ospf6_linkstate_prefix_id
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_linkstate_prefix_id(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 300
    functionName: ADV_ROUTER_IN_PREFIX
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADV_ROUTER_IN_PREFIX(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dst
    - ','
    - src
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 327
    functionName: ospf6_route_copy_nexthops
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_copy_nexthops(dst, src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dst
    - ','
    - src
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 328
    functionName: ospf6_route_merge_nexthops
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_merge_nexthops(dst, src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - route
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 329
    functionName: ospf6_route_num_nexthops
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_num_nexthops(route)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - route
    - ','
    - ifindex
    - ','
    - addr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 331
    functionName: ospf6_route_add_nexthop
    functionSourceFile: /src/frr/ospf6d/ospf6_route.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ospf6_route_add_nexthop(route, ifindex, addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_neighbor.c:62,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_neighbor.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - va
    - vb
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 63
    functionName: ospf6_neighbor_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: int
    signature: int ospf6_neighbor_cmp(void *va, void *vb)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:71,1
    - Dst: return
      Src: /src/frr/ospf6d/ospf6_neighbor.c:75,1
    - Dst: ospf6_area_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_neighbor.c:78,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:85,1
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_neighbor.c:86,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_neighbor.c:87,1
    - Dst: ospf6_neighbor_clear_ls_lists
      Src: /src/frr/ospf6d/ospf6_neighbor.c:94,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_neighbor.c:99,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_neighbor.c:101,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_neighbor.c:104,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:105,1
    - Dst: ospf6_decrement_retrans_count
      Src: /src/frr/ospf6d/ospf6_neighbor.c:106,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_neighbor.c:107,1
    - Dst: ospf6_neighbor_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:112,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_neighbor.c:119,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:120,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_neighbor.c:121,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_neighbor.c:126,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:129,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:130,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:131,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:133,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:134,1
    - Dst: ospf6_lsdb_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:135,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospf6d/ospf6_neighbor.c:144,1
    - Dst: ospf6_bfd_info_nbr_create
      Src: /src/frr/ospf6d/ospf6_neighbor.c:146,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_neighbor.c:154,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_neighbor.c:155,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_neighbor.c:156,1
    - Dst: ospf6_lsdb_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:158,1
    - Dst: ospf6_lsdb_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:159,1
    - Dst: ospf6_lsdb_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:160,1
    - Dst: ospf6_lsdb_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:162,1
    - Dst: ospf6_lsdb_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:163,1
    - Dst: ospf6_lsdb_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:164,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:166,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:168,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:170,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:171,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:172,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:173,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:174,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:175,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:176,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:178,1
    - Dst: bfd_sess_free
      Src: /src/frr/ospf6d/ospf6_neighbor.c:180,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_neighbor.c:181,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:184,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_neighbor.c:196,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:199,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:200,1
    - Dst: ospf6_neighbor_event_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:205,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:209,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:211,1
    - Dst: zlog_notice
      Src: /src/frr/ospf6d/ospf6_neighbor.c:215,1
    - Dst: vrf_id_to_name
      Src: /src/frr/ospf6d/ospf6_neighbor.c:218,1
    - Dst: ospf6_neighbor_event_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:221,1
    - Dst: OSPF6_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospf6d/ospf6_neighbor.c:225,1
    - Dst: OSPF6_ROUTER_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_neighbor.c:226,1
    - Dst: OSPF6_NETWORK_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_neighbor.c:228,1
    - Dst: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT
      Src: /src/frr/ospf6d/ospf6_neighbor.c:229,1
    - Dst: OSPF6_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospf6d/ospf6_neighbor.c:236,1
    - Dst: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:237,1
    - Dst: OSPF6_AS_EXTERN_LSA_SCHEDULE
      Src: /src/frr/ospf6d/ospf6_neighbor.c:243,1
    - Dst: ospf6_maxage_remove
      Src: /src/frr/ospf6d/ospf6_neighbor.c:255,1
    - Dst: hook_call
      Src: /src/frr/ospf6d/ospf6_neighbor.c:257,1
    - Dst: ospf6_bfd_trigger_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:258,1
    - Dst: need_adjacency
      Src: /src/frr/ospf6d/ospf6_neighbor.c:262,1
    - Dst: hello_received
      Src: /src/frr/ospf6d/ospf6_neighbor.c:276,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:280,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:281,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:283,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:284,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:287,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_neighbor.c:288,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:292,1
    - Dst: twoway_received
      Src: /src/frr/ospf6d/ospf6_neighbor.c:296,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:300,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:301,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:306,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:307,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:309,1
    - Dst: need_adjacency
      Src: /src/frr/ospf6d/ospf6_neighbor.c:311,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:312,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:317,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:319,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:320,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:321,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:323,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:324,1
    - Dst: negotiation_done
      Src: /src/frr/ospf6d/ospf6_neighbor.c:328,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:333,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:334,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:339,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:340,1
    - Dst: ospf6_neighbor_clear_ls_lists
      Src: /src/frr/ospf6d/ospf6_neighbor.c:343,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:346,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_neighbor.c:347,1
    - Dst: ospf6_increment_retrans_count
      Src: /src/frr/ospf6d/ospf6_neighbor.c:348,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:349,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_neighbor.c:349,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:351,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_neighbor.c:351,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:355,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_neighbor.c:356,1
    - Dst: ospf6_increment_retrans_count
      Src: /src/frr/ospf6d/ospf6_neighbor.c:357,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:358,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_neighbor.c:358,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:360,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_neighbor.c:360,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:364,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_neighbor.c:365,1
    - Dst: ospf6_increment_retrans_count
      Src: /src/frr/ospf6d/ospf6_neighbor.c:366,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:367,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_neighbor.c:367,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:369,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_neighbor.c:369,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:372,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:373,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 38
    argCount: 2
    argNames:
    - router_id
    - oi
    argTypes:
    - uint32_t
    - struct ospf6_interface*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 333
        line_start: 333
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    - condition: (on)
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    - condition: (on)
      pos:
        line_end: 300
        line_start: 300
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 375
      start: 65
    functionDepth: 6
    functionLinenumber: 65
    functionLinenumberEnd: 375
    functionName: ospf6_neighbor_lookup
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 8
    functionsReached:
    - ospf6_lsa_unlock
    - OSPF6_ROUTER_LSA_SCHEDULE
    - ALL_LSDB
    - ospf6_lsdb_add
    - ospf6_increment_retrans_count
    - ospf6_decrement_retrans_count
    - OSPF6_LSA_IS_MAXAGE
    - ospf6_maxage_remove
    - ospf6_bfd_info_nbr_create
    - OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
    - snprintf
    - XCALLOC
    - hook_call
    - twoway_received
    - ALL_LIST_ELEMENTS_RO
    - return
    - OSPF6_AS_EXTERN_LSA_SCHEDULE
    - ospf6_lsdb_remove
    - hello_received
    - ospf6_lsdb_delete
    - ospf6_neighbor_clear_ls_lists
    - inet_ntop
    - ospf6_neighbor_state_change
    - zlog_debug
    - EVENT_ARG
    - if
    - ospf6_area_neighbor_lookup
    - assert
    - ospf6_bfd_trigger_event
    - ospf6_lsa_copy
    - OSPF6_NETWORK_LSA_SCHEDULE
    - listnode_add_sort
    - negotiation_done
    - monotime
    - EVENT_OFF
    - UNSET_FLAG
    - XFREE
    - event_add_timer
    - OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT
    - bfd_sess_free
    - ospf6_neighbor_lookup
    - IS_OSPF6_DEBUG_NEIGHBOR
    - vrf_id_to_name
    - ospf6_neighbor_event_string
    - CHECK_FLAG
    - ospf6_lsdb_remove_all
    - OSPF6_GR_IS_ACTIVE_HELPER
    - need_adjacency
    - SET_FLAG
    - ospf6_neighbor_create
    - ospf6_lsdb_create
    - zlog_notice
    - event_add_event
    linkageType: ''
    returnType: struct ospf6_neighbor
    signature: "struct ospf6_neighbor *ospf6_neighbor_lookup(uint32_t router_id,\n\t\t\t\t\t
      \    struct ospf6_interface *oi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:379,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:381,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_neighbor.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 380
        line_start: 380
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: ospf6_neighbor_last_dbdesc_release
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - memset
    - assert
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf6_neighbor_last_dbdesc_release(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:389,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:390,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:395,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:396,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:398,1
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_neighbor.c:399,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:402,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:403,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_neighbor.c:404,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:410,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:413,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:416,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 389
        line_start: 389
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 419
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 419
    functionName: exchange_done
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_NEIGHBOR
    - CHECK_FLAG
    - ospf6_lsdb_remove_all
    - ospf6_neighbor_state_change
    - zlog_debug
    - EVENT_OFF
    - EVENT_ARG
    - event_add_timer
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void exchange_done(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:432,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:435,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - 'on'
    argTypes:
    - struct ospf6_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 440
    functionName: ospf6_check_nbr_loading
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_check_nbr_loading(struct ospf6_neighbor *on)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:446,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:447,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:452,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:453,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:455,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on->request_list->count == 0)
      pos:
        line_end: 454
        line_start: 454
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    - condition: (on)
      pos:
        line_end: 446
        line_start: 446
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 459
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 459
    functionName: loading_done
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_NEIGHBOR
    - ospf6_neighbor_state_change
    - zlog_debug
    - EVENT_ARG
    - assert
    linkageType: ''
    returnType: void
    signature: void loading_done(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:465,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:466,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:468,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:469,1
    - Dst: need_adjacency
      Src: /src/frr/ospf6d/ospf6_neighbor.c:471,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:472,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:474,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:475,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:476,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:478,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:479,1
    - Dst: need_adjacency
      Src: /src/frr/ospf6d/ospf6_neighbor.c:482,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:483,1
    - Dst: ospf6_neighbor_clear_ls_lists
      Src: /src/frr/ospf6d/ospf6_neighbor.c:485,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 465
        line_start: 465
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 487
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 487
    functionName: adj_ok
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_NEIGHBOR
    - ospf6_neighbor_clear_ls_lists
    - ospf6_neighbor_state_change
    - zlog_debug
    - need_adjacency
    - SET_FLAG
    - EVENT_OFF
    - EVENT_ARG
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void adj_ok(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:493,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:494,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:499,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:500,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:502,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:504,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:505,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:506,1
    - Dst: ospf6_neighbor_clear_ls_lists
      Src: /src/frr/ospf6d/ospf6_neighbor.c:508,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:510,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 493
        line_start: 493
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 515
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 515
    functionName: seqnumber_mismatch
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_NEIGHBOR
    - ospf6_neighbor_clear_ls_lists
    - ospf6_neighbor_state_change
    - zlog_debug
    - SET_FLAG
    - EVENT_OFF
    - EVENT_ARG
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void seqnumber_mismatch(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:521,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:522,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:527,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:528,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:530,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:532,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:533,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:534,1
    - Dst: ospf6_neighbor_clear_ls_lists
      Src: /src/frr/ospf6d/ospf6_neighbor.c:536,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:538,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 521
        line_start: 521
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 543
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 543
    functionName: bad_lsreq
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_NEIGHBOR
    - ospf6_neighbor_clear_ls_lists
    - ospf6_neighbor_state_change
    - zlog_debug
    - SET_FLAG
    - EVENT_OFF
    - EVENT_ARG
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void bad_lsreq(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:549,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:550,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:555,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:556,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:558,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:560,1
    - Dst: ospf6_neighbor_clear_ls_lists
      Src: /src/frr/ospf6d/ospf6_neighbor.c:562,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:564,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:565,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:566,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:567,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:568,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 549
        line_start: 549
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 570
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 570
    functionName: oneway_received
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_NEIGHBOR
    - ospf6_neighbor_clear_ls_lists
    - ospf6_neighbor_state_change
    - zlog_debug
    - EVENT_OFF
    - EVENT_ARG
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void oneway_received(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:576,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_neighbor.c:577,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:579,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:580,1
    - Dst: OSPF6_GR_IS_ACTIVE_HELPER
      Src: /src/frr/ospf6d/ospf6_neighbor.c:585,1
    - Dst: ospf6_neighbor_state_change
      Src: /src/frr/ospf6d/ospf6_neighbor.c:589,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_neighbor.c:592,1
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:594,1
    - Dst: ospf6_neighbor_delete
      Src: /src/frr/ospf6d/ospf6_neighbor.c:595,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_neighbor.c:599,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_neighbor.c:603,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (on)
      pos:
        line_end: 576
        line_start: 576
        source_file: /src/frr/ospf6d/ospf6_neighbor.c
    constantsTouched: []
    func_position:
      end: 607
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 607
    functionName: inactivity_timer
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - ospf6_neighbor_delete
    - event_add_timer
    - IS_OSPF6_DEBUG_NEIGHBOR
    - OSPF6_GR_IS_ACTIVE_HELPER
    - zlog_debug
    - ospf6_neighbor_state_change
    - EVENT_ARG
    - listnode_delete
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void inactivity_timer(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:624,1
    - Dst: monotime_until
      Src: /src/frr/ospf6d/ospf6_neighbor.c:633,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_neighbor.c:640,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_neighbor.c:644,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_neighbor.c:647,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_neighbor.c:649,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_neighbor.c:651,1
    - Dst: monotime_since
      Src: /src/frr/ospf6d/ospf6_neighbor.c:655,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:656,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_neighbor.c:664,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:666,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:667,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:668,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:669,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:671,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:672,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:673,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:675,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:679,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:681,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 4
    argNames:
    - vty
    - 'on'
    - json_array
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_neighbor*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 612
    functionDepth: 3
    functionLinenumber: 612
    functionLinenumberEnd: 686
    functionName: ospf6_neighbor_show
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_array_add
    - snprintf
    - vty_out
    - timerstring
    - json_object_int_add
    - inet_ntop
    - monotime_since
    - json_object_string_add
    - monotime_until
    linkageType: ''
    returnType: void
    signature: "void ospf6_neighbor_show(struct vty *vty, struct ospf6_neighbor *on,\n\t\t\t\tjson_object
      *json_array, bool use_json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:704,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:705,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:706,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_neighbor.c:708,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:709,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:710,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_neighbor.c:713,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:714,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:715,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:717,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:718,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:719,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:720,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:722,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:726,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - vty
    - 'on'
    - json_array
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_neighbor*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 688
    functionDepth: 2
    functionLinenumber: 688
    functionLinenumberEnd: 732
    functionName: ospf6_neighbor_show_drchoice
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_array_add
    - vty_out
    - timerstring
    - monotime
    - timersub
    - inet_ntop
    - json_object_string_add
    linkageType: ''
    returnType: void
    signature: "void ospf6_neighbor_show_drchoice(struct vty *vty,\n\t\t\t\t\t struct
      ospf6_neighbor *on,\n\t\t\t\t\t json_object *json_array, bool use_json)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:746,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:748,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_neighbor.c:749,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_neighbor.c:751,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:752,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:753,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_neighbor.c:756,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:757,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:759,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:761,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:763,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:765,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:767,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:769,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:771,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:773,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_neighbor.c:775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:776,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:779,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:782,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:785,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:788,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_neighbor.c:789,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:791,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:792,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:794,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:795,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:796,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:797,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:800,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:801,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:803,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:804,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:805,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:806,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:809,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:810,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:812,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:813,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:814,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:815,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:819,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:820,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:821,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:822,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:823,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:825,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:827,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:829,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:831,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:832,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:833,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:834,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:835,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:838,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:839,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:840,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:841,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:842,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:844,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:846,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:848,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:850,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:851,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:852,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:853,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:854,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:858,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:859,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:860,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:862,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:863,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:865,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:867,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:869,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:871,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:872,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:873,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:874,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:875,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:878,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:879,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:880,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:881,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:882,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:884,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:886,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:888,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:890,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:891,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:892,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_neighbor.c:893,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:894,1
    - Dst: bfd_sess_show
      Src: /src/frr/ospf6d/ospf6_neighbor.c:897,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:900,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:902,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:905,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:908,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:911,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:914,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:917,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:920,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:923,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:926,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:929,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:933,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:936,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:939,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:940,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:943,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:945,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:947,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:949,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:950,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:953,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_neighbor.c:956,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_neighbor.c:959,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:961,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:963,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:964,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:966,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:968,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:969,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:971,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:973,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:974,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:976,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:977,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:978,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:979,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:980,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:983,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:985,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:986,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:988,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:989,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:990,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:991,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:992,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:995,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:997,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:998,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1000,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1001,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1002,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1004,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1005,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1008,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1010,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1011,1
    - Dst: timerclear
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1013,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1014,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1015,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1016,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1017,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1020,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1022,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1023,1
    - Dst: bfd_sess_show
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1025,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1028,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1029,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1031,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1038,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1046,1
    - Dst: ospf6_neighbor_show_detail_common
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1050,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1071,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1072,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1075,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1079,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1084,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1085,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1086,1
    - Dst: else
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1089,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1094,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1095,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1097,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1098,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1102,1
    - Dst: use_json
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1116,1
    - Dst: OSPF6_FIND_VRF_ARGS
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1120,1
    - Dst: argv_find
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1122,1
    - Dst: argv_find
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1124,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1127,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1128,1
    - Dst: ospf6_neighbor_show_detail_common
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1129,1
    - Dst: OSPF6_CMD_CHECK_VRF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1136,1
    - Dst: ospf6_neighbor_show_common
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1141,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1157,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1159,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1160,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1165,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1166,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1167,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1173,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1178,1
    - Dst: use_json
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1191,1
    - Dst: OSPF6_FIND_VRF_ARGS
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1193,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1197,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1198,1
    - Dst: ospf6_neighbor_show_common
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1199,1
    - Dst: OSPF6_CMD_CHECK_VRF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1207,1
    - Dst: ospf6_neighbor_init
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1212,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1214,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1215,1
    - Dst: strncmp
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1231,1
    - Dst: strncmp
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1233,1
    - Dst: strncmp
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1257,1
    - Dst: strncmp
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1259,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1269,1
    - Dst: OSPF6_DEBUG_ABR_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1278,1
    - Dst: OSPF6_DEBUG_ASBR_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1279,1
    - Dst: OSPF6_DEBUG_BROUTER_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1280,1
    - Dst: OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1281,1
    - Dst: OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1282,1
    - Dst: OSPF6_DEBUG_FLOODING_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1283,1
    - Dst: OSPF6_DEBUG_INTERFACE_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1284,1
    - Dst: ospf6_lsa_debug_set_all
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1286,1
    - Dst: OSPF6_DEBUG_MESSAGE_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1289,1
    - Dst: OSPF6_DEBUG_NEIGHBOR_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1293,1
    - Dst: OSPF6_DEBUG_ROUTE_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1295,1
    - Dst: OSPF6_DEBUG_ROUTE_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1296,1
    - Dst: OSPF6_DEBUG_ROUTE_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1297,1
    - Dst: OSPF6_DEBUG_ROUTE_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1298,1
    - Dst: OSPF6_DEBUG_SPF_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1299,1
    - Dst: OSPF6_DEBUG_SPF_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1300,1
    - Dst: OSPF6_DEBUG_SPF_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1301,1
    - Dst: OSPF6_DEBUG_ZEBRA_OFF
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1302,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1309,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1309,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1310,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1311,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1312,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1313,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1314,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1320,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1321,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1322,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1323,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1324,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1325,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 89
    argCount: 4
    argNames:
    - vty
    - 'on'
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_neighbor*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 734
    functionDepth: 4
    functionLinenumber: 734
    functionLinenumberEnd: 1326
    functionName: ospf6_neighbor_show_detail
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - use_json
    - OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_OFF
    - ALL_LSDB
    - ospf6_neighbor_init
    - OSPF6_DEBUG_NEIGHBOR_OFF
    - OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_OFF
    - strncmp
    - json_object_string_add
    - OSPF6_FIND_VRF_ARGS
    - timerclear
    - install_element
    - snprintf
    - OSPF6_DEBUG_ABR_OFF
    - ALL_LIST_ELEMENTS_RO
    - inet_ntop
    - OSPF6_DEBUG_ASBR_OFF
    - if
    - event_is_scheduled
    - ntohl
    - ospf6_neighbor_show_common
    - DEFUN
    - OSPF6_DEBUG_SPF_OFF
    - vty_out
    - bfd_sess_show
    - timerstring
    - monotime
    - OSPF6_DEBUG_FLOODING_OFF
    - OSPF6_DEBUG_ROUTE_OFF
    - json_object_int_add
    - timersub
    - json_object_free
    - inet_pton
    - json_object_new_string
    - OSPF6_DEBUG_INTERFACE_OFF
    - OSPF6_CMD_CHECK_VRF
    - ospf6_lsa_debug_set_all
    - OSPF6_DEBUG_ZEBRA_OFF
    - argv_find
    - json_object_new_object
    - json_object_new_array
    - IS_OSPF6_DEBUG_NEIGHBOR
    - json_object_array_add
    - CHECK_FLAG
    - strcmp
    - OSPF6_DEBUG_MESSAGE_OFF
    - else
    - json_object_object_add
    - ospf6_neighbor_show_detail_common
    - vty_json
    - OSPF6_DEBUG_BROUTER_OFF
    linkageType: ''
    returnType: void
    signature: "void ospf6_neighbor_show_detail(struct vty *vty,\n\t\t\t\t       struct
      ospf6_neighbor *on,\n\t\t\t\t       json_object *json, bool use_json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1309,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1309,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1310,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1311,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1312,1
    - Dst: IS_OSPF6_DEBUG_NEIGHBOR
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1313,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1307
    functionDepth: 2
    functionLinenumber: 1307
    functionLinenumberEnd: 1316
    functionName: config_write_ospf6_debug_neighbor
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_NEIGHBOR
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_neighbor(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1320,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1321,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1322,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1323,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1324,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_neighbor.c:1325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1318
    functionDepth: 1
    functionLinenumber: 1318
    functionLinenumberEnd: 1326
    functionName: install_element_ospf6_debug_neighbor
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_neighbor(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: EXPORT_NAME
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPORT_NAME(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: EXPORT_LIST
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPORT_LIST(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: IMPORT_NAME
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMPORT_NAME(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: IMPORT_LIST
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMPORT_LIST(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: PREFIX_NAME_IN
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_NAME_IN(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: PREFIX_LIST_IN
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_IN(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: PREFIX_NAME_OUT
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_NAME_OUT(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: PREFIX_LIST_OUT
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFIX_LIST_OUT(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: IS_AREA_ENABLED
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_AREA_ENABLED(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: IS_AREA_ACTIVE
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_AREA_ACTIVE(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: IS_AREA_TRANSIT
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_AREA_TRANSIT(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: IS_AREA_STUB
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_AREA_STUB(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: IS_AREA_NSSA
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_AREA_NSSA(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - str
    - ','
    - oa
    - ','
    - ospf6
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 137
    functionName: OSPF6_CMD_AREA_GET
    functionSourceFile: /src/frr/ospf6d/ospf6_area.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_CMD_AREA_GET(str, oa, ospf6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_lock_node
      Src: /src/frr/ospf6d/ospf6d.c:48,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6d.c:51,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6d.c:53,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6d.c:57,1
    - Dst: route_lock_node
      Src: /src/frr/ospf6d/ospf6d.c:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 62
    functionName: route_prev
    functionSourceFile: /src/frr/ospf6d/ospf6d.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_lock_node
    - route_next
    linkageType: ''
    returnType: struct route_node
    signature: struct route_node *route_prev(struct route_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_write_ospf6_debug_message
      Src: /src/frr/ospf6d/ospf6d.c:74,1
    - Dst: config_write_ospf6_debug_lsa
      Src: /src/frr/ospf6d/ospf6d.c:75,1
    - Dst: config_write_ospf6_debug_zebra
      Src: /src/frr/ospf6d/ospf6d.c:76,1
    - Dst: config_write_ospf6_debug_interface
      Src: /src/frr/ospf6d/ospf6d.c:77,1
    - Dst: config_write_ospf6_debug_neighbor
      Src: /src/frr/ospf6d/ospf6d.c:78,1
    - Dst: config_write_ospf6_debug_spf
      Src: /src/frr/ospf6d/ospf6d.c:79,1
    - Dst: config_write_ospf6_debug_route
      Src: /src/frr/ospf6d/ospf6d.c:80,1
    - Dst: config_write_ospf6_debug_brouter
      Src: /src/frr/ospf6d/ospf6d.c:81,1
    - Dst: config_write_ospf6_debug_asbr
      Src: /src/frr/ospf6d/ospf6d.c:82,1
    - Dst: config_write_ospf6_debug_abr
      Src: /src/frr/ospf6d/ospf6d.c:83,1
    - Dst: config_write_ospf6_debug_flood
      Src: /src/frr/ospf6d/ospf6d.c:84,1
    - Dst: config_write_ospf6_debug_nssa
      Src: /src/frr/ospf6d/ospf6d.c:85,1
    - Dst: config_write_ospf6_debug_gr_helper
      Src: /src/frr/ospf6d/ospf6d.c:86,1
    - Dst: config_write_ospf6_debug_auth
      Src: /src/frr/ospf6d/ospf6d.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 90
    functionName: config_write_ospf6_debug
    functionSourceFile: /src/frr/ospf6d/ospf6d.c
    functionUses: 0
    functionsReached:
    - config_write_ospf6_debug_nssa
    - config_write_ospf6_debug_interface
    - config_write_ospf6_debug_gr_helper
    - config_write_ospf6_debug_auth
    - config_write_ospf6_debug_abr
    - config_write_ospf6_debug_flood
    - config_write_ospf6_debug_lsa
    - config_write_ospf6_debug_zebra
    - config_write_ospf6_debug_route
    - config_write_ospf6_debug_brouter
    - config_write_ospf6_debug_neighbor
    - config_write_ospf6_debug_spf
    - config_write_ospf6_debug_message
    - config_write_ospf6_debug_asbr
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug(struct vty *vty)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:119,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:121,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - idx_level
    - argc
    - argv
    argTypes:
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 128
    functionName: parse_show_level
    functionSourceFile: /src/frr/ospf6d/ospf6d.c
    functionUses: 0
    functionsReached:
    - strmatch
    linkageType: ''
    returnType: int
    signature: int parse_show_level(int idx_level, int argc, struct cmd_token **argv)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:135,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:136,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:137,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:138,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:139,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:140,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:141,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:142,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:143,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:144,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:145,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:146,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:147,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:148,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6d.c:149,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6d.c:150,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - idx_lsa
    - argc
    - argv
    argTypes:
    - int
    - int
    - struct cmd_token**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 154
    functionName: parse_type_spec
    functionSourceFile: /src/frr/ospf6d/ospf6d.c
    functionUses: 0
    functionsReached:
    - strmatch
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t parse_type_spec(int idx_lsa, int argc, struct cmd_token **argv)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6d.c:183,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6d.c:186,1
    - Dst: ospf6_lsa_show
      Src: /src/frr/ospf6d/ospf6d.c:189,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6d.c:195,1
    - Dst: ospf6_lsa_show_summary_header
      Src: /src/frr/ospf6d/ospf6d.c:200,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6d.c:202,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6d.c:209,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6d.c:213,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 38
    argCount: 8
    argNames:
    - vty
    - level
    - type
    - id
    - adv_router
    - lsdb
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - enum ospf_lsdb_show_level
    - uint16_t*
    - uint32_t*
    - uint32_t*
    - struct ospf6_lsdb*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 156
    functionDepth: 4
    functionLinenumber: 156
    functionLinenumberEnd: 214
    functionName: ospf6_lsdb_show
    functionSourceFile: /src/frr/ospf6d/ospf6d.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - ospf6_lsa_show
    - ospf6_lsdb_head
    - json_object_object_add
    - ospf6_lsa_show_summary_header
    - ospf6_lsdb_lookup
    - ospf6_lsdb_next
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsdb_show(struct vty *vty, enum ospf_lsdb_show_level level,\n\t\t
      \    uint16_t *type, uint32_t *id, uint32_t *adv_router,\n\t\t     struct ospf6_lsdb
      *lsdb, json_object *json_obj,\n\t\t     bool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6d.c:231,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6d.c:232,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6d.c:234,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6d.c:236,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6d.c:237,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6d.c:239,1
    - Dst: ospf6_lsdb_show
      Src: /src/frr/ospf6d/ospf6d.c:240,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6d.c:243,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6d.c:246,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6d.c:250,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6d.c:251,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6d.c:252,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6d.c:254,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6d.c:255,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6d.c:257,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6d.c:260,1
    - Dst: ospf6_lsdb_show
      Src: /src/frr/ospf6d/ospf6d.c:262,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6d.c:265,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 7
    argNames:
    - vty
    - level
    - type
    - id
    - adv_router
    - uj
    - ospf6
    argTypes:
    - struct vty*
    - enum ospf_lsdb_show_level
    - uint16_t*
    - uint32_t*
    - uint32_t*
    - bool
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 216
    functionDepth: 5
    functionLinenumber: 216
    functionLinenumberEnd: 267
    functionName: ospf6_lsdb_show_wrapper
    functionSourceFile: /src/frr/ospf6d/ospf6d.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - vty_out
    - json_object_array_add
    - ALL_LIST_ELEMENTS_RO
    - json_object_string_add
    - json_object_object_add
    - ospf6_lsdb_show
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsdb_show_wrapper(struct vty *vty,\n\t\t\t\t    enum ospf_lsdb_show_level
      level,\n\t\t\t\t    uint16_t *type, uint32_t *id,\n\t\t\t\t    uint32_t *adv_router,
      bool uj,\n\t\t\t\t    struct ospf6 *ospf6)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6d.c:304,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6d.c:305,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6d.c:308,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6d.c:310,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6d.c:312,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6d.c:313,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6d.c:316,1
    - Dst: ospf6_lsdb_show
      Src: /src/frr/ospf6d/ospf6d.c:318,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6d.c:321,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6d.c:324,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6d.c:329,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6d.c:330,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6d.c:332,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6d.c:333,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6d.c:335,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6d.c:339,1
    - Dst: ospf6_lsdb_show
      Src: /src/frr/ospf6d/ospf6d.c:342,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6d.c:347,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6d.c:352,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6d.c:358,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6d.c:360,1
    - Dst: ospf6_lsdb_show
      Src: /src/frr/ospf6d/ospf6d.c:362,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6d.c:365,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6d.c:366,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6d.c:372,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 7
    argNames:
    - vty
    - level
    - type
    - id
    - adv_router
    - uj
    - ospf6
    argTypes:
    - struct vty*
    - enum ospf_lsdb_show_level
    - uint16_t*
    - uint32_t*
    - uint32_t*
    - bool
    - struct ospf6*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 371
        line_start: 371
        source_file: /src/frr/ospf6d/ospf6d.c
    constantsTouched: []
    func_position:
      end: 374
      start: 289
    functionDepth: 5
    functionLinenumber: 289
    functionLinenumberEnd: 374
    functionName: ospf6_lsdb_type_show_wrapper
    functionSourceFile: /src/frr/ospf6d/ospf6d.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - vty_out
    - json_object_array_add
    - ALL_LIST_ELEMENTS_RO
    - json_object_string_add
    - json_object_object_add
    - OSPF6_LSA_SCOPE
    - assert
    - ospf6_lsdb_show
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsdb_type_show_wrapper(struct vty *vty,\n\t\t\t\t\t enum
      ospf_lsdb_show_level level,\n\t\t\t\t\t uint16_t *type, uint32_t *id,\n\t\t\t\t\t
      uint32_t *adv_router, bool uj,\n\t\t\t\t\t struct ospf6 *ospf6)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: OSPF6_DEBUG_BROUTER_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_BROUTER_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: OSPF6_DEBUG_BROUTER_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_BROUTER_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - router_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 29
    functionName: OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ON(router_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 35
    functionName: OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - router_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID(router_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - area_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ON(area_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - area_id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID(area_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: ROUTER_LSDESC_IS_TYPE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTER_LSDESC_IS_TYPE(t, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: ROUTER_LSDESC_GET_METRIC
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTER_LSDESC_GET_METRIC(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: ROUTER_LSDESC_GET_IFID
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTER_LSDESC_GET_IFID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: ROUTER_LSDESC_GET_NBR_IFID
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTER_LSDESC_GET_NBR_IFID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: ROUTER_LSDESC_GET_NBR_ROUTERID
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUTER_LSDESC_GET_NBR_ROUTERID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: NETWORK_LSDESC_GET_NBR_ROUTERID
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NETWORK_LSDESC_GET_NBR_ROUTERID(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 145
    functionName: OSPF6_ROUTER_LSA_SCHEDULE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ROUTER_LSA_SCHEDULE(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 151
    functionName: OSPF6_NETWORK_LSA_SCHEDULE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_NETWORK_LSA_SCHEDULE(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: OSPF6_LINK_LSA_SCHEDULE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LINK_LSA_SCHEDULE(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_INTRA_PREFIX_LSA_SCHEDULE_TRANSIT(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 179
    functionName: OSPF6_AS_EXTERN_LSA_SCHEDULE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_AS_EXTERN_LSA_SCHEDULE(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 186
    functionName: OSPF6_ROUTER_LSA_EXECUTE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ROUTER_LSA_EXECUTE(oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 192
    functionName: OSPF6_NETWORK_LSA_EXECUTE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_NETWORK_LSA_EXECUTE(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 199
    functionName: OSPF6_LINK_LSA_EXECUTE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_LINK_LSA_EXECUTE(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: OSPF6_INTRA_PREFIX_LSA_EXECUTE_TRANSIT
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_INTRA_PREFIX_LSA_EXECUTE_TRANSIT(oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - oi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: OSPF6_AS_EXTERN_LSA_EXECUTE
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_AS_EXTERN_LSA_EXECUTE(oi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_spf.c:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - rt
    - v
    argTypes:
    - struct ospf6_route*
    - struct ospf6_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: ospf6_spf_copy_nexthops_to_route
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - ospf6_copy_nexthops
    linkageType: ''
    returnType: void
    signature: "void ospf6_spf_copy_nexthops_to_route(struct ospf6_route *rt,\n\t\t\t\t\t
      \    struct ospf6_vertex *v)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_merge_nexthops
      Src: /src/frr/ospf6d/ospf6_spf.c:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - rt
    - v
    argTypes:
    - struct ospf6_route*
    - struct ospf6_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: ospf6_spf_merge_nexthops_to_route
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - ospf6_merge_nexthops
    linkageType: ''
    returnType: void
    signature: "void ospf6_spf_merge_nexthops_to_route(struct ospf6_route *rt,\n\t\t\t\t\t
      \     struct ospf6_vertex *v)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/ospf6d/ospf6_spf.c:58,1
    - Dst: listgetdata
      Src: /src/frr/ospf6d/ospf6_spf.c:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct ospf6_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 66
    functionName: ospf6_spf_get_ifindex_from_nh
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - listgetdata
    - listhead
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf6_spf_get_ifindex_from_nh(struct ospf6_vertex *v)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - va
    - vb
    argTypes:
    - struct ospf6_vertex*
    - struct ospf6_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: ospf6_vertex_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ospf6_vertex_cmp(const struct ospf6_vertex *va,\n\t\tconst struct
      ospf6_vertex *vb)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:87,1
    - Dst: ospf6_linkstate_prefix_adv_router
      Src: /src/frr/ospf6d/ospf6_spf.c:87,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:88,1
    - Dst: ospf6_linkstate_prefix_adv_router
      Src: /src/frr/ospf6d/ospf6_spf.c:88,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:92,1
    - Dst: ospf6_linkstate_prefix_id
      Src: /src/frr/ospf6d/ospf6_spf.c:92,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:93,1
    - Dst: ospf6_linkstate_prefix_id
      Src: /src/frr/ospf6d/ospf6_spf.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 95
    functionName: ospf6_vertex_id_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - ospf6_linkstate_prefix_adv_router
    - ntohl
    - ospf6_linkstate_prefix_id
    linkageType: ''
    returnType: int
    signature: int ospf6_vertex_id_cmp(void *a, void *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XMALLOC
      Src: /src/frr/ospf6d/ospf6_spf.c:101,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:104,1
    - Dst: ospf6_linkstate_prefix
      Src: /src/frr/ospf6d/ospf6_spf.c:107,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_spf.c:107,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:109,1
    - Dst: ospf6_linkstate_prefix
      Src: /src/frr/ospf6d/ospf6_spf.c:112,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:115,1
    - Dst: ospf6_linkstate_prefix2str
      Src: /src/frr/ospf6d/ospf6_spf.c:118,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:120,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:121,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:123,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:126,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:133,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:134,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:135,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:136,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_spf.c:138,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_spf.c:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 114
        line_start: 114
        source_file: /src/frr/ospf6d/ospf6_spf.c
    constantsTouched: []
    func_position:
      end: 147
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 147
    functionName: ospf6_vertex_create
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - ospf6_linkstate_prefix2str
    - XMALLOC
    - IS_OSPF6_DEBUG_SPF
    - ntohs
    - zlog_debug
    - list_new
    - htonl
    - ospf6_linkstate_prefix
    - assert
    linkageType: ''
    returnType: struct ospf6_vertex
    signature: struct ospf6_vertex *ospf6_vertex_create(struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/ospf6d/ospf6_spf.c:151,1
    - Dst: list_delete
      Src: /src/frr/ospf6d/ospf6_spf.c:152,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_spf.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct ospf6_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 154
    functionName: ospf6_vertex_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_vertex_delete(struct ospf6_vertex *v)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:163,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:164,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_spf.c:165,1
    - Dst: NETWORK_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:166,1
    - Dst: ROUTER_LSDESC_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:168,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:169,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_spf.c:170,1
    - Dst: ROUTER_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:171,1
    - Dst: ROUTER_LSDESC_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:172,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:173,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_spf.c:174,1
    - Dst: ROUTER_LSDESC_GET_NBR_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:174,1
    - Dst: ROUTER_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:175,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:179,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_spf.c:180,1
    - Dst: ospf6_create_single_router_lsa
      Src: /src/frr/ospf6d/ospf6_spf.c:182,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:184,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_spf.c:186,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_spf.c:187,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:189,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:190,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:192,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_spf.c:193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - lsdesc
    - v
    argTypes:
    - caddr_t
    - struct ospf6_vertex*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 198
    functionName: ospf6_lsdesc_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - VERTEX_IS_TYPE
    - ROUTER_LSDESC_GET_NBR_IFID
    - ospf6_create_single_router_lsa
    - htons
    - ospf6_lstype_name
    - ROUTER_LSDESC_GET_NBR_ROUTERID
    - IS_OSPF6_DEBUG_SPF
    - ntohs
    - inet_ntop
    - zlog_debug
    - NETWORK_LSDESC_GET_NBR_ROUTERID
    - htonl
    - ospf6_lsdb_lookup
    - ROUTER_LSDESC_IS_TYPE
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: "struct ospf6_lsa *ospf6_lsdesc_lsa(caddr_t lsdesc,\n\t\t\t\t\t  struct
      ospf6_vertex *v)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:206,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:209,1
    - Dst: OSPF6_LSA_END
      Src: /src/frr/ospf6d/ospf6_spf.c:210,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:211,1
    - Dst: OSPF6_LSA_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:211,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:212,1
    - Dst: OSPF6_LSA_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:214,1
    - Dst: NETWORK_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:215,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:218,1
    - Dst: ROUTER_LSDESC_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:219,1
    - Dst: ROUTER_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:220,1
    - Dst: ROUTER_LSDESC_GET_NBR_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:222,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:223,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:226,1
    - Dst: OSPF6_LSA_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:226,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:227,1
    - Dst: ROUTER_LSDESC_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:229,1
    - Dst: ROUTER_LSDESC_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:230,1
    - Dst: ROUTER_LSDESC_GET_NBR_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:233,1
    - Dst: ROUTER_LSDESC_GET_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:234,1
    - Dst: ROUTER_LSDESC_GET_NBR_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:235,1
    - Dst: ROUTER_LSDESC_GET_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:236,1
    - Dst: ROUTER_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:238,1
    - Dst: ROUTER_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:240,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:247,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:248,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 25
    argCount: 3
    argNames:
    - lsa
    - lsdesc
    - v
    argTypes:
    - struct ospf6_lsa*
    - caddr_t
    - struct ospf6_vertex*
    assertStmts:
    - condition: "(!(OSPF6_LSA_IS_TYPE(NETWORK, lsa)\n\t\t\t && VERTEX_IS_TYPE(NETWORK,
        v)))"
      pos:
        line_end: 211
        line_start: 210
        source_file: /src/frr/ospf6d/ospf6_spf.c
    - condition: "(OSPF6_LSA_IS_TYPE(ROUTER, lsa)\n\t\t\t       && VERTEX_IS_TYPE(ROUTER,
        v))"
      pos:
        line_end: 226
        line_start: 225
        source_file: /src/frr/ospf6d/ospf6_spf.c
    constantsTouched: []
    func_position:
      end: 252
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 252
    functionName: ospf6_lsdesc_backlink
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_IS_TYPE
    - VERTEX_IS_TYPE
    - OSPF6_LSA_HEADER_END
    - ROUTER_LSDESC_GET_NBR_IFID
    - OSPF6_LSA_END
    - ROUTER_LSDESC_GET_NBR_ROUTERID
    - IS_OSPF6_DEBUG_SPF
    - ROUTER_LSDESC_GET_IFID
    - zlog_debug
    - NETWORK_LSDESC_GET_NBR_ROUTERID
    - ROUTER_LSDESC_IS_TYPE
    - ntohl
    - assert
    linkageType: ''
    returnType: char
    signature: "char *ospf6_lsdesc_backlink(struct ospf6_lsa *lsa, caddr_t lsdesc,\n\t\t\t\t
      \  struct ospf6_vertex *v)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:266,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:266,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:267,1
    - Dst: ospf6_spf_get_ifindex_from_nh
      Src: /src/frr/ospf6d/ospf6_spf.c:267,1
    - Dst: ROUTER_LSDESC_GET_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:268,1
    - Dst: flog_err
      Src: /src/frr/ospf6d/ospf6_spf.c:270,1
    - Dst: ospf6_interface_lookup_by_ifindex
      Src: /src/frr/ospf6d/ospf6_spf.c:275,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_spf.c:277,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:281,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:282,1
    - Dst: NETWORK_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:283,1
    - Dst: ROUTER_LSDESC_GET_NBR_ROUTERID
      Src: /src/frr/ospf6d/ospf6_spf.c:284,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_spf.c:287,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:288,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_spf.c:289,1
    - Dst: ROUTER_LSDESC_GET_NBR_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:289,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:293,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_spf.c:295,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:295,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_spf.c:296,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:298,1
    - Dst: ospf6_add_nexthop
      Src: /src/frr/ospf6d/ospf6_spf.c:301,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:306,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:307,1
    - Dst: ospf6_spf_install
      Src: /src/frr/ospf6d/ospf6_spf.c:310,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:316,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:317,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_spf.c:320,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:322,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:323,1
    - Dst: ospf6_vertex_delete
      Src: /src/frr/ospf6d/ospf6_spf.c:326,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:329,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:330,1
    - Dst: ospf6_merge_parents_nh_to_child
      Src: /src/frr/ospf6d/ospf6_spf.c:337,1
    - Dst: ospf6_spf_merge_nexthops_to_route
      Src: /src/frr/ospf6d/ospf6_spf.c:338,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:341,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:343,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:345,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:346,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:349,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:350,1
    - Dst: ospf6_vertex_delete
      Src: /src/frr/ospf6d/ospf6_spf.c:355,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:366,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_spf.c:368,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_spf.c:369,1
    - Dst: ospf6_spf_copy_nexthops_to_route
      Src: /src/frr/ospf6d/ospf6_spf.c:383,1
    - Dst: ospf6_merge_parents_nh_to_child
      Src: /src/frr/ospf6d/ospf6_spf.c:404,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospf6d/ospf6_spf.c:407,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_spf.c:410,1
    - Dst: ospf6_spf_table_finish
      Src: /src/frr/ospf6d/ospf6_spf.c:414,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_spf.c:419,1
    - Dst: ospf6_vertex_delete
      Src: /src/frr/ospf6d/ospf6_spf.c:421,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_spf.c:422,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 4
    argNames:
    - w
    - v
    - lsdesc
    - ospf6
    argTypes:
    - struct ospf6_vertex*
    - struct ospf6_vertex*
    - caddr_t
    - struct ospf6*
    assertStmts:
    - condition: (VERTEX_IS_TYPE(ROUTER, w))
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/frr/ospf6d/ospf6_spf.c
    - condition: (prev->hops <= v->hops)
      pos:
        line_end: 340
        line_start: 340
        source_file: /src/frr/ospf6d/ospf6_spf.c
    - condition: (route == NULL)
      pos:
        line_end: 365
        line_start: 365
        source_file: /src/frr/ospf6d/ospf6_spf.c
    constantsTouched: []
    func_position:
      end: 424
      start: 254
    functionDepth: 5
    functionLinenumber: 254
    functionLinenumberEnd: 424
    functionName: ospf6_nexthop_calc
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - ROUTER_LSDESC_GET_NBR_IFID
    - htons
    - ospf6_merge_parents_nh_to_child
    - ospf6_route_lookup
    - flog_err
    - zlog_warn
    - htonl
    - ROUTER_LSDESC_GET_NBR_ROUTERID
    - VERTEX_IS_TYPE
    - ospf6_vertex_delete
    - ospf6_route_create
    - inet_ntop
    - zlog_debug
    - ospf6_spf_table_finish
    - ospf6_interface_lookup_by_ifindex
    - if
    - ospf6_route_add
    - ntohl
    - assert
    - listnode_add_sort
    - ospf6_spf_merge_nexthops_to_route
    - ospf6_spf_get_ifindex_from_nh
    - ROUTER_LSDESC_GET_IFID
    - ALL_LSDB_TYPED_ADVRTR
    - ospf6_spf_install
    - ospf6_add_nexthop
    - ospf6_route_remove
    - memcpy
    - IS_OSPF6_DEBUG_SPF
    - ospf6_route_next
    - ospf6_spf_copy_nexthops_to_route
    - NETWORK_LSDESC_GET_NBR_ROUTERID
    linkageType: ''
    returnType: void
    signature: "void ospf6_nexthop_calc(struct ospf6_vertex *w, struct ospf6_vertex
      *v,\n\t\t\t       caddr_t lsdesc, struct ospf6 *ospf6)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/ospf6d/ospf6_spf.c:452,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_spf.c:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - reason
    - buf
    - size
    argTypes:
    - uint32_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 459
    functionName: ospf6_spf_reason_string
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 1
    functionsReached:
    - array_size
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ospf6_spf_reason_string(uint32_t reason, char *buf, int size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_spf_table_finish
      Src: /src/frr/ospf6d/ospf6_spf.c:474,1
    - Dst: ospf6_create_single_router_lsa
      Src: /src/frr/ospf6d/ospf6_spf.c:478,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_spf.c:480,1
    - Dst: vertex_pqueue_init
      Src: /src/frr/ospf6d/ospf6_spf.c:485,1
    - Dst: ospf6_vertex_create
      Src: /src/frr/ospf6d/ospf6_spf.c:487,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_spf.c:492,1
    - Dst: vertex_pqueue_add
      Src: /src/frr/ospf6d/ospf6_spf.c:495,1
    - Dst: vertex_pqueue_pop
      Src: /src/frr/ospf6d/ospf6_spf.c:498,1
    - Dst: ospf6_spf_install
      Src: /src/frr/ospf6d/ospf6_spf.c:501,1
    - Dst: OSPF6_LSA_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:505,1
    - Dst: ospf6_router_is_stub_router
      Src: /src/frr/ospf6d/ospf6_spf.c:506,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:510,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:513,1
    - Dst: OSPF6_LSA_END
      Src: /src/frr/ospf6d/ospf6_spf.c:514,1
    - Dst: ospf6_lsdesc_lsa
      Src: /src/frr/ospf6d/ospf6_spf.c:516,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_spf.c:520,1
    - Dst: ospf6_lsdesc_backlink
      Src: /src/frr/ospf6d/ospf6_spf.c:523,1
    - Dst: ospf6_vertex_create
      Src: /src/frr/ospf6d/ospf6_spf.c:526,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:529,1
    - Dst: ROUTER_LSDESC_GET_METRIC
      Src: /src/frr/ospf6d/ospf6_spf.c:531,1
    - Dst: VERTEX_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_spf.c:534,1
    - Dst: ospf6_add_nexthop
      Src: /src/frr/ospf6d/ospf6_spf.c:543,1
    - Dst: ROUTER_LSDESC_GET_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:545,1
    - Dst: ospf6_nexthop_calc
      Src: /src/frr/ospf6d/ospf6_spf.c:547,1
    - Dst: ospf6_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_spf.c:549,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:553,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:554,1
    - Dst: vertex_pqueue_add
      Src: /src/frr/ospf6d/ospf6_spf.c:557,1
    - Dst: ospf6_remove_temp_router_lsa
      Src: /src/frr/ospf6d/ospf6_spf.c:563,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 51
    argCount: 3
    argNames:
    - router_id
    - result_table
    - oa
    argTypes:
    - uint32_t
    - struct ospf6_route_table*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 463
    functionDepth: 6
    functionLinenumber: 463
    functionLinenumberEnd: 566
    functionName: ospf6_spf_calculation
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_IS_TYPE
    - OSPF6_LSA_HEADER_END
    - ospf6_remove_temp_router_lsa
    - zlog_warn
    - ospf6_lsdesc_lsa
    - vertex_pqueue_add
    - VERTEX_IS_TYPE
    - OSPF6_LSA_IS_MAXAGE
    - ospf6_copy_nexthops
    - zlog_debug
    - vertex_pqueue_pop
    - ospf6_spf_table_finish
    - ospf6_lsdesc_backlink
    - vertex_pqueue_init
    - ospf6_vertex_create
    - ospf6_create_single_router_lsa
    - ROUTER_LSDESC_GET_METRIC
    - ROUTER_LSDESC_GET_IFID
    - ospf6_nexthop_calc
    - inet_pton
    - ospf6_spf_install
    - ospf6_add_nexthop
    - OSPF6_LSA_END
    - IS_OSPF6_DEBUG_SPF
    - ospf6_router_is_stub_router
    linkageType: ''
    returnType: void
    signature: "void ospf6_spf_calculation(uint32_t router_id,\n\t\t\t   struct ospf6_route_table
      *result_table,\n\t\t\t   struct ospf6_area *oa)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_spf.c:577,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_spf.c:578,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_spf.c:578,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_spf.c:579,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_spf.c:580,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_spf.c:580,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_spf.c:582,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_spf.c:583,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_spf.c:585,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_spf.c:585,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:589,1
    - Dst: ospf6_spf_calculation_thread
      Src: /src/frr/ospf6d/ospf6_spf.c:592,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_spf.c:601,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_spf.c:604,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_spf.c:607,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_spf.c:607,1
    - Dst: ospf6_abr_range_reset_cost
      Src: /src/frr/ospf6d/ospf6_spf.c:608,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_spf.c:610,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_spf.c:610,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_spf.c:615,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:616,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:617,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:618,1
    - Dst: ospf6_spf_log_database
      Src: /src/frr/ospf6d/ospf6_spf.c:619,1
    - Dst: ospf6_spf_calculation
      Src: /src/frr/ospf6d/ospf6_spf.c:621,1
    - Dst: ospf6_intra_route_calculation
      Src: /src/frr/ospf6d/ospf6_spf.c:622,1
    - Dst: ospf6_intra_brouter_calculation
      Src: /src/frr/ospf6d/ospf6_spf.c:623,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_spf.c:629,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:630,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:631,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:633,1
    - Dst: ospf6_spf_log_database
      Src: /src/frr/ospf6d/ospf6_spf.c:634,1
    - Dst: ospf6_spf_calculation
      Src: /src/frr/ospf6d/ospf6_spf.c:636,1
    - Dst: ospf6_intra_route_calculation
      Src: /src/frr/ospf6d/ospf6_spf.c:639,1
    - Dst: ospf6_intra_brouter_calculation
      Src: /src/frr/ospf6d/ospf6_spf.c:640,1
    - Dst: ospf6_ase_calculate_timer_add
      Src: /src/frr/ospf6d/ospf6_spf.c:645,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_spf.c:647,1
    - Dst: ospf6_abr_defaults_to_stub
      Src: /src/frr/ospf6d/ospf6_spf.c:648,1
    - Dst: ospf6_abr_nssa_type_7_defaults
      Src: /src/frr/ospf6d/ospf6_spf.c:649,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_spf.c:652,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_spf.c:653,1
    - Dst: ospf6_spf_reason_string
      Src: /src/frr/ospf6d/ospf6_spf.c:657,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:659,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:659,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:660,1
    - Dst: ospf6_reset_spf_reason
      Src: /src/frr/ospf6d/ospf6_spf.c:666,1
    - Dst: ospf6_spf_schedule
      Src: /src/frr/ospf6d/ospf6_spf.c:671,1
    - Dst: ospf6_set_spf_reason
      Src: /src/frr/ospf6d/ospf6_spf.c:679,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:681,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:681,1
    - Dst: ospf6_spf_reason_string
      Src: /src/frr/ospf6d/ospf6_spf.c:683,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:684,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_spf.c:689,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:690,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:690,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:691,1
    - Dst: monotime_since
      Src: /src/frr/ospf6d/ospf6_spf.c:697,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:723,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:723,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:724,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_spf.c:726,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospf6d/ospf6_spf.c:727,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 1
    argNames:
    - oa
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 568
    functionDepth: 7
    functionLinenumber: 568
    functionLinenumberEnd: 729
    functionName: ospf6_spf_log_database
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 1
    functionsReached:
    - strlen
    - ospf6_intra_route_calculation
    - ospf6_spf_calculation_thread
    - ospf6_spf_schedule
    - ospf6_intra_brouter_calculation
    - ospf6_spf_calculation
    - snprintf
    - ospf6_reset_spf_reason
    - ALL_LIST_ELEMENTS_RO
    - ospf6_abr_defaults_to_stub
    - event_add_timer_msec
    - ospf6_spf_reason_string
    - zlog_debug
    - EVENT_ARG
    - if
    - event_is_scheduled
    - for
    - ospf6_spf_log_database
    - monotime
    - ospf6_abr_range_reset_cost
    - ospf6_abr_nssa_type_7_defaults
    - timersub
    - ospf6_set_spf_reason
    - ospf6_check_and_set_router_abr
    - EVENT_OFF
    - monotime_since
    - IS_OSPF6_DEBUG_SPF
    - ospf6_ase_calculate_timer_add
    linkageType: ''
    returnType: void
    signature: void ospf6_spf_log_database(struct ospf6_area *oa)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_spf.c:744,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_spf.c:745,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_spf.c:748,1
    - Dst: strlen
      Src: /src/frr/ospf6d/ospf6_spf.c:751,1
    - Dst: malloc
      Src: /src/frr/ospf6d/ospf6_spf.c:752,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_spf.c:754,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_spf.c:757,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_spf.c:759,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_spf.c:760,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_spf.c:762,1
    - Dst: ospf6_spf_display_subtree
      Src: /src/frr/ospf6d/ospf6_spf.c:766,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_spf.c:770,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_spf.c:774,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_spf.c:775,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_spf.c:776,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_spf.c:777,1
    - Dst: json_object_free
      Src: /src/frr/ospf6d/ospf6_spf.c:780,1
    - Dst: free
      Src: /src/frr/ospf6d/ospf6_spf.c:782,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 6
    argNames:
    - vty
    - prefix
    - rest
    - v
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - char*
    - int
    - struct ospf6_vertex*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 783
    functionName: ospf6_spf_display_subtree
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 2
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - strlen
    - vty_out
    - snprintf
    - malloc
    - listcount
    - free
    - json_object_int_add
    - json_object_free
    - json_object_object_add
    - ALL_LIST_ELEMENTS
    - ospf6_spf_display_subtree
    linkageType: ''
    returnType: void
    signature: "void ospf6_spf_display_subtree(struct vty *vty, const char *prefix,
      int rest,\n\t\t\t       struct ospf6_vertex *v, json_object *json_obj,\n\t\t\t
      \      bool use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ospf6d/ospf6_spf.c:881,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - delay
    - hold
    - max
    argTypes:
    - struct vty*
    - unsigned int
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 888
    functionName: ospf6_timers_spf_set
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - VTY_DECLVAR_CONTEXT
    linkageType: ''
    returnType: int
    signature: "int ospf6_timers_spf_set(struct vty *vty, unsigned int delay,\n\t\t\t\tunsigned
      int hold, unsigned int max)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:931,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_spf.c:932,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:933,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_spf.c:934,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:935,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_spf.c:936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 929
    functionDepth: 2
    functionLinenumber: 929
    functionLinenumberEnd: 938
    functionName: config_write_ospf6_debug_spf
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 1
    functionsReached:
    - vty_out
    - IS_OSPF6_DEBUG_SPF
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_spf(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_spf.c:946,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - ospf6
    argTypes:
    - struct vty*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 940
    functionDepth: 2
    functionLinenumber: 940
    functionLinenumberEnd: 949
    functionName: ospf6_spf_config_write
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf6_spf_config_write(struct vty *vty, struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:953,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:954,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:955,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:956,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:957,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:958,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:959,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:960,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:961,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:962,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:963,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 951
    functionDepth: 1
    functionLinenumber: 951
    functionLinenumberEnd: 965
    functionName: install_element_ospf6_debug_spf
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_spf(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:969,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_spf.c:970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 971
    functionName: ospf6_spf_init
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void ospf6_spf_init(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:995,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_spf.c:998,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_spf.c:998,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_spf.c:1003,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6_spf.c:1006,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_spf.c:1009,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_spf.c:1010,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1014,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_spf.c:1016,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1018,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1019,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1025,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1026,1
    - Dst: ospf6_lsa_alloc
      Src: /src/frr/ospf6d/ospf6_spf.c:1031,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6_spf.c:1037,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:1043,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_spf.c:1044,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_spf.c:1047,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1047,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:1050,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1051,1
    - Dst: ospf6_lsa_printbuf
      Src: /src/frr/ospf6d/ospf6_spf.c:1056,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_spf.c:1058,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_spf.c:1060,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_spf.c:1061,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1065,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:1066,1
    - Dst: ROUTER_LSDESC_GET_IFID
      Src: /src/frr/ospf6d/ospf6_spf.c:1067,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_spf.c:1068,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1069,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1072,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_spf.c:1077,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:1077,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1078,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1079,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_spf.c:1082,1
    - Dst: ospf6_lsa_age_set
      Src: /src/frr/ospf6d/ospf6_spf.c:1086,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_spf.c:1089,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1091,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1092,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_spf.c:1093,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1094,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1094,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 65
    argCount: 3
    argNames:
    - area
    - lsdb
    - adv_router
    argTypes:
    - struct ospf6_area*
    - struct ospf6_lsdb*
    - uint32_t
    assertStmts:
    - condition: (rtr_lsa)
      pos:
        line_end: 1042
        line_start: 1042
        source_file: /src/frr/ospf6d/ospf6_spf.c
    constantsTouched: []
    func_position:
      end: 1098
      start: 977
    functionDepth: 4
    functionLinenumber: 977
    functionLinenumberEnd: 1098
    functionName: ospf6_create_single_router_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 2
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - htons
    - ospf6_lsa_age_set
    - ntohs
    - ospf6_lsdb_add
    - htonl
    - ospf6_lsdb_next
    - ospf6_lsa_printbuf
    - OSPF6_LSA_IS_MAXAGE
    - inet_ntop
    - zlog_debug
    - ntohl
    - assert
    - ospf6_lsdb_head
    - ROUTER_LSDESC_GET_IFID
    - memcpy
    - IS_OSPF6_DEBUG_SPF
    - ospf6_lsa_alloc
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: "struct ospf6_lsa *ospf6_create_single_router_lsa(struct ospf6_area
      *area,\n\t\t\t\t\t\t struct ospf6_lsdb *lsdb,\n\t\t\t\t\t\t uint32_t adv_router)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_spf.c:1104,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1105,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1106,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_spf.c:1110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1100
    functionDepth: 1
    functionLinenumber: 1100
    functionLinenumberEnd: 1112
    functionName: ospf6_remove_temp_router_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - ospf6_lsdb_remove
    - IS_OSPF6_DEBUG_SPF
    - ALL_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf6_remove_temp_router_lsa(struct ospf6_area *area)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_spf.c:1123,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1125,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1126,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1128,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1129,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1130,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1133,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1134,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1135,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_spf.c:1140,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_spf.c:1144,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1146,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_spf.c:1152,1
    - Dst: ospf6_asbr_lsa_add
      Src: /src/frr/ospf6d/ospf6_spf.c:1153,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_spf.c:1158,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1160,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1161,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1166,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1167,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1168,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1169,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1172,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_spf.c:1173,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1174,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1175,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1177,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1178,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.c:1184,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_spf.c:1190,1
    - Dst: ospf6_asbr_lsa_add
      Src: /src/frr/ospf6d/ospf6_spf.c:1191,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_spf.c:1196,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1198,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1199,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1204,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1205,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1206,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1207,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1210,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1211,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1212,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_spf.c:1214,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1215,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_spf.c:1216,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1218,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1219,1
    - Dst: ospf6_abr_check_translate_nssa
      Src: /src/frr/ospf6d/ospf6_spf.c:1224,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 79
    argCount: 3
    argNames:
    - ospf6
    - lsa
    - area
    argTypes:
    - struct ospf6*
    - struct ospf6_lsa*
    - struct ospf6_area*
    assertStmts:
    - condition: (lsa)
      pos:
        line_end: 1122
        line_start: 1122
        source_file: /src/frr/ospf6d/ospf6_spf.c
    constantsTouched: []
    func_position:
      end: 1228
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1228
    functionName: ospf6_ase_calculate_route
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - OSPF6_LSA_IS_MAXAGE
    - CHECK_FLAG
    - ospf6_asbr_lsa_add
    - IS_OSPF6_DEBUG_SPF
    - ospf6_route_lookup
    - ospf6_abr_check_translate_nssa
    - ntohs
    - zlog_debug
    - UNSET_FLAG
    - ospf6_prefix_in6_addr
    - ospf6_route_remove
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf6_ase_calculate_route(struct ospf6 *ospf6, struct ospf6_lsa
      *lsa,\n\t\t\t      struct ospf6_area *area)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_spf.c:1238,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:1241,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_spf.c:1242,1
    - Dst: ospf6_ase_calculate_route
      Src: /src/frr/ospf6d/ospf6_spf.c:1243,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_spf.c:1246,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_spf.c:1247,1
    - Dst: IS_OSPF6_DEBUG_SPF
      Src: /src/frr/ospf6d/ospf6_spf.c:1248,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_spf.c:1249,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_spf.c:1252,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_spf.c:1253,1
    - Dst: ospf6_ase_calculate_route
      Src: /src/frr/ospf6d/ospf6_spf.c:1254,1
    - Dst: ospf6_zebra_gr_disable
      Src: /src/frr/ospf6d/ospf6_spf.c:1264,1
    - Dst: ospf6_zebra_gr_enable
      Src: /src/frr/ospf6d/ospf6_spf.c:1265,1
    - Dst: ospf6_ase_calculate_timer_add
      Src: /src/frr/ospf6d/ospf6_spf.c:1270,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_spf.c:1275,1
    - Dst: ospf6_merge_parents_nh_to_child
      Src: /src/frr/ospf6d/ospf6_spf.c:1279,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_spf.c:1287,1
    - Dst: ospf6_route_merge_nexthops
      Src: /src/frr/ospf6d/ospf6_spf.c:1289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1230
    functionDepth: 7
    functionLinenumber: 1230
    functionLinenumberEnd: 1294
    functionName: ospf6_ase_calculate_timer
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.c
    functionUses: 0
    functionsReached:
    - ospf6_zebra_gr_disable
    - htons
    - ospf6_merge_parents_nh_to_child
    - IS_OSPF6_DEBUG_SPF
    - ospf6_ase_calculate_timer_add
    - ospf6_route_lookup
    - ospf6_route_merge_nexthops
    - zlog_debug
    - ALL_LSDB_TYPED
    - EVENT_ARG
    - if
    - ALL_LIST_ELEMENTS
    - ospf6_zebra_gr_enable
    - ospf6_ase_calculate_route
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void ospf6_ase_calculate_timer(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_proto.c:17,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_proto.c:18,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_proto.c:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - in6
    - prefix_buf
    - p
    argTypes:
    - struct in6_addr*
    - void*
    - struct ospf6_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: ospf6_prefix_in6_addr
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.c
    functionUses: 1
    functionsReached:
    - memcpy
    - memset
    - OSPF6_PREFIX_SPACE
    linkageType: ''
    returnType: void
    signature: "void ospf6_prefix_in6_addr(struct in6_addr *in6, const void *prefix_buf,\n\t\t\t
      \  const struct ospf6_prefix *p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_proto.c:33,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_proto.c:42,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - struct ospf6_prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 44
    functionName: ospf6_prefix_apply_mask
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - OSPF6_PREFIX_SPACE
    linkageType: ''
    returnType: void
    signature: void ospf6_prefix_apply_mask(struct ospf6_prefix *op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_proto.c:50,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_proto.c:51,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_proto.c:52,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_proto.c:53,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_proto.c:54,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_proto.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - prefix_options
    - buf
    - size
    argTypes:
    - uint8_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 56
    functionName: ospf6_prefix_options_printbuf
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ospf6_prefix_options_printbuf(uint8_t prefix_options, char *buf,
      int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_proto.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - capability
    - buf
    - size
    argTypes:
    - char
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: ospf6_capability_printbuf
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.c
    functionUses: 3
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void ospf6_capability_printbuf(char capability, char *buf, int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_proto.c:71,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_proto.c:72,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_proto.c:73,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_proto.c:74,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_proto.c:75,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_proto.c:76,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_proto.c:77,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_proto.c:78,1
    - Dst: OSPF6_OPT_ISSET_EXT
      Src: /src/frr/ospf6d/ospf6_proto.c:79,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_proto.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - options
    - buf
    - size
    argTypes:
    - uint8_t*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 82
    functionName: ospf6_options_printbuf
    functionSourceFile: /src/frr/ospf6d/ospf6_proto.c
    functionUses: 5
    functionsReached:
    - OSPF6_OPT_ISSET_EXT
    - snprintf
    - OSPF6_OPT_ISSET
    linkageType: ''
    returnType: void
    signature: void ospf6_options_printbuf(uint8_t *options, char *buf, int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: OSPF6_DEBUG_GR_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_GR_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: OSPF6_DEBUG_GR_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_GR_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - gran
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: ROUNDUP
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(val, gran)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - val
    - ','
    - gran
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: ROUNDUP
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUNDUP(val, gran)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: TLV_BODY_SIZE
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_BODY_SIZE(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: TLV_SIZE
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 52
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_SIZE(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsah
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: TLV_HDR_TOP
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_HDR_TOP(lsah)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tlvh
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: TLV_HDR_NEXT
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TLV_HDR_NEXT(tlvh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ospf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: OSPF6_HELPER_ENABLE_RTR_COUNT
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_HELPER_ENABLE_RTR_COUNT(ospf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - reason
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: OSPF6_GR_IS_PLANNED_RESTART
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_GR_IS_PLANNED_RESTART(reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - N
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: OSPF6_GR_IS_ACTIVE_HELPER
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_GR_IS_ACTIVE_HELPER(N)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lsa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 134
    functionName: IS_GRACE_LSA
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_GRACE_LSA(lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nbr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: IS_NBR_STATE_FULL
    functionSourceFile: /src/frr/ospf6d/ospf6_gr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NBR_STATE_FULL(nbr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: OSPF6_DEBUG_SPF_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_SPF_ON(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: OSPF6_DEBUG_SPF_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_SPF_OFF(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: IS_OSPF6_DEBUG_SPF
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_SPF(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - t
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: VERTEX_IS_TYPE
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VERTEX_IS_TYPE(t, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ospf
    - reason
    argTypes:
    - struct ospf6*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: ospf6_set_spf_reason
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf6_set_spf_reason(struct ospf6 *ospf, unsigned int reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ospf
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: ospf6_reset_spf_reason
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf6_reset_spf_reason(struct ospf6 *ospf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.h:97,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 111
    functionName: ospf6_lsadd_to_spf_reason
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 2
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf6_lsadd_to_spf_reason(struct ospf6_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_spf.h:117,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 131
    functionName: ospf6_lsremove_to_spf_reason
    functionSourceFile: /src/frr/ospf6d/ospf6_spf.h
    functionUses: 2
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf6_lsremove_to_spf_reason(struct ospf6_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:36,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_flood.c:38,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_flood.c:41,1
    - Dst: OSPF6_PROCESS
      Src: /src/frr/ospf6d/ospf6_flood.c:44,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:47,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 51
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 51
    functionName: ospf6_get_scoped_lsdb
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - OSPF6_INTERFACE
    - OSPF6_AREA
    - OSPF6_PROCESS
    - OSPF6_LSA_SCOPE
    - assert
    linkageType: ''
    returnType: struct ospf6_lsdb
    signature: struct ospf6_lsdb *ospf6_get_scoped_lsdb(struct ospf6_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:56,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_flood.c:58,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_flood.c:61,1
    - Dst: OSPF6_PROCESS
      Src: /src/frr/ospf6d/ospf6_flood.c:64,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:67,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 71
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 71
    functionName: ospf6_get_scoped_lsdb_self
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 1
    functionsReached:
    - OSPF6_INTERFACE
    - OSPF6_AREA
    - OSPF6_PROCESS
    - OSPF6_LSA_SCOPE
    - assert
    linkageType: ''
    returnType: struct ospf6_lsdb
    signature: struct ospf6_lsdb *ospf6_get_scoped_lsdb_self(struct ospf6_lsa *lsa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ORIGINATE_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:79,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:80,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_flood.c:84,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:89,1
    - Dst: OSPF6_LSA_IS_DIFFER
      Src: /src/frr/ospf6d/ospf6_flood.c:94,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:96,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:97,1
    - Dst: ospf6_lsa_delete
      Src: /src/frr/ospf6d/ospf6_flood.c:98,1
    - Dst: ospf6_get_scoped_lsdb_self
      Src: /src/frr/ospf6d/ospf6_flood.c:103,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:104,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:104,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_flood.c:106,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_flood.c:107,1
    - Dst: IS_OSPF6_DEBUG_LSA_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:110,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:111,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:112,1
    - Dst: ospf6_lsa_header_print
      Src: /src/frr/ospf6d/ospf6_flood.c:113,1
    - Dst: ospf6_install_lsa
      Src: /src/frr/ospf6d/ospf6_flood.c:116,1
    - Dst: ospf6_flood
      Src: /src/frr/ospf6d/ospf6_flood.c:117,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - ospf6
    - lsa
    argTypes:
    - struct ospf6*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 73
    functionDepth: 6
    functionLinenumber: 73
    functionLinenumberEnd: 118
    functionName: ospf6_lsa_originate
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_DEBUG_LSA_TYPE
    - ospf6_lsa_header_print
    - ospf6_lsa_copy
    - ospf6_lsdb_add
    - IS_OSPF6_DEBUG_ORIGINATE_TYPE
    - OSPF6_LSA_IS_DIFFER
    - zlog_debug
    - EVENT_OFF
    - ospf6_flood
    - ospf6_lsa_delete
    - ospf6_get_scoped_lsdb_self
    - ospf6_install_lsa
    - ospf6_lsdb_lookup
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_originate(struct ospf6 *ospf6, struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_originate
      Src: /src/frr/ospf6d/ospf6_flood.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lsa
    - process
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 120
    functionDepth: 7
    functionLinenumber: 120
    functionLinenumberEnd: 124
    functionName: ospf6_lsa_originate_process
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_originate
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_originate_process(struct ospf6_lsa *lsa, struct ospf6
      *process)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_originate
      Src: /src/frr/ospf6d/ospf6_flood.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lsa
    - oa
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 7
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: ospf6_lsa_originate_area
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_originate
    linkageType: ''
    returnType: void
    signature: void ospf6_lsa_originate_area(struct ospf6_lsa *lsa, struct ospf6_area
      *oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_originate
      Src: /src/frr/ospf6d/ospf6_flood.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lsa
    - oi
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 7
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: ospf6_lsa_originate_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 1
    functionsReached:
    - ospf6_lsa_originate
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsa_originate_interface(struct ospf6_lsa *lsa,\n\t\t\t\t
      \  struct ospf6_interface *oi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_flood.c:145,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_flood.c:148,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:149,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_flood.c:149,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_flood.c:151,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:153,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_flood.c:154,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_flood.c:156,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_flood.c:161,1
    - Dst: ospf6_get_scoped_lsdb_self
      Src: /src/frr/ospf6d/ospf6_flood.c:167,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:168,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_flood.c:171,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_flood.c:172,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_flood.c:173,1
    - Dst: ospf6_lsa_premature_aging
      Src: /src/frr/ospf6d/ospf6_flood.c:176,1
    - Dst: ospf6_lsa_purge_multi_ls_id
      Src: /src/frr/ospf6d/ospf6_flood.c:183,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_flood.c:191,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:193,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_flood.c:193,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_flood.c:196,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:197,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_flood.c:197,1
    - Dst: ospf6_increment_retrans_count
      Src: /src/frr/ospf6d/ospf6_flood.c:202,1
    - Dst: ospf6_decrement_retrans_count
      Src: /src/frr/ospf6d/ospf6_flood.c:209,1
    - Dst: ospf6_get_scoped_lsdb
      Src: /src/frr/ospf6d/ospf6_flood.c:219,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:223,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:227,1
    - Dst: ospf6_install_lsa
      Src: /src/frr/ospf6d/ospf6_flood.c:232,1
    - Dst: ospf6_get_by_lsdb
      Src: /src/frr/ospf6d/ospf6_flood.c:239,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:240,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:244,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:247,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:249,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_flood.c:253,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_flood.c:254,1
    - Dst: ospf6_flood_clear
      Src: /src/frr/ospf6d/ospf6_flood.c:255,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_flood.c:258,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_flood.c:259,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_flood.c:260,1
    - Dst: OSPF6_LSA_IS_SEQWRAP
      Src: /src/frr/ospf6d/ospf6_flood.c:267,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:268,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_flood.c:269,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:270,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:271,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_flood.c:272,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:273,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_flood.c:283,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_flood.c:284,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_flood.c:285,1
    - Dst: IS_OSPF6_DEBUG_LSA_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:288,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:289,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:290,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:291,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_flood.c:292,1
    - Dst: CHECK_LSA_TOPO_CHG_ELIGIBLE
      Src: /src/frr/ospf6d/ospf6_flood.c:298,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:299,1
    - Dst: OSPF6_LSA_IS_CHANGED
      Src: /src/frr/ospf6d/ospf6_flood.c:302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 2
    argNames:
    - ospf6
    - lsa
    argTypes:
    - struct ospf6*
    - struct ospf6_lsa*
    assertStmts:
    - condition: (orig->retrans_count >= 0)
      pos:
        line_end: 226
        line_start: 226
        source_file: /src/frr/ospf6d/ospf6_flood.c
    - condition: (ospf6)
      pos:
        line_end: 239
        line_start: 239
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 304
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 304
    functionName: ospf6_external_lsa_purge
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_premature_aging
    - htons
    - ntohs
    - OSPF6_LSA_IS_CHANGED
    - htonl
    - ospf6_increment_retrans_count
    - ospf6_install_lsa
    - ospf6_decrement_retrans_count
    - ospf6_get_scoped_lsdb
    - IS_OSPF6_DEBUG_LSA_TYPE
    - OSPF6_LSA_IS_MAXAGE
    - ospf6_get_by_lsdb
    - ALL_LIST_ELEMENTS_RO
    - ospf6_lsdb_remove
    - zlog_debug
    - if
    - ospf6_get_scoped_lsdb_self
    - ntohl
    - assert
    - ospf6_flood_clear
    - ospf6_lsa_checksum
    - OSPF6_LSA_IS_SEQWRAP
    - monotime
    - EVENT_OFF
    - event_add_timer
    - ospf6_lsa_purge
    - CHECK_LSA_TOPO_CHG_ELIGIBLE
    - IS_OSPF6_DEBUG_EXAMIN_TYPE
    - CHECK_FLAG
    - SET_FLAG
    - ospf6_lsa_purge_multi_ls_id
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_external_lsa_purge(struct ospf6 *ospf6, struct ospf6_lsa
      *lsa)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_FLOOD_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:340,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:342,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_flood.c:347,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:349,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:354,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:362,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:364,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:369,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_flood.c:375,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:377,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_flood.c:385,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:387,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:391,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_flood.c:392,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_flood.c:396,1
    - Dst: ospf6_check_nbr_loading
      Src: /src/frr/ospf6d/ospf6_flood.c:398,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_flood.c:404,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:406,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_flood.c:409,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_flood.c:413,1
    - Dst: ospf6_check_nbr_loading
      Src: /src/frr/ospf6d/ospf6_flood.c:415,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:425,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:431,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:433,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:436,1
    - Dst: ospf6_lsupdate_send_neighbor_now
      Src: /src/frr/ospf6d/ospf6_flood.c:437,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:442,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:448,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:456,1
    - Dst: ospf6_get_scoped_lsdb
      Src: /src/frr/ospf6d/ospf6_flood.c:465,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:466,1
    - Dst: ospf6_increment_retrans_count
      Src: /src/frr/ospf6d/ospf6_flood.c:470,1
    - Dst: ospf6_increment_retrans_count
      Src: /src/frr/ospf6d/ospf6_flood.c:472,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:474,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:474,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_flood.c:476,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:500,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:510,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:514,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:519,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:522,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:522,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_flood.c:523,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_flood.c:527,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_flood.c:528,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_flood.c:529,1
    - Dst: ospf6_flood_area
      Src: /src/frr/ospf6d/ospf6_flood.c:535,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_flood.c:541,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_flood.c:541,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:542,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_flood.c:543,1
    - Dst: ospf6_flood_interface
      Src: /src/frr/ospf6d/ospf6_flood.c:546,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_flood.c:556,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_flood.c:556,1
    - Dst: OSPF6_LSA_IS_KNOWN
      Src: /src/frr/ospf6d/ospf6_flood.c:561,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:562,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_flood.c:563,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:566,1
    - Dst: continue
      Src: /src/frr/ospf6d/ospf6_flood.c:567,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:570,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_flood.c:571,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:573,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_flood.c:574,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:577,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_flood.c:578,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_flood.c:578,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:582,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_flood.c:583,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_flood.c:583,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 107
    argCount: 3
    argNames:
    - from
    - lsa
    - oi
    argTypes:
    - struct ospf6_neighbor*
    - struct ospf6_lsa*
    - struct ospf6_interface*
    assertStmts:
    - condition: (req->lock >= 2)
      pos:
        line_end: 390
        line_start: 390
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 588
      start: 330
    functionDepth: 7
    functionLinenumber: 330
    functionLinenumberEnd: 588
    functionName: ospf6_flood_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 1
    functionsReached:
    - ospf6_lsa_unlock
    - ospf6_lsupdate_send_neighbor_now
    - OSPF6_LSA_IS_KNOWN
    - ntohs
    - continue
    - ospf6_lsdb_add
    - ospf6_increment_retrans_count
    - OSPF6_LSA_SCOPE
    - ospf6_flood_interface
    - ospf6_get_scoped_lsdb
    - OSPF6_LSA_IS_MAXAGE
    - ospf6_lsdb_remove
    - ospf6_lsa_compare
    - zlog_debug
    - for
    - assert
    - ospf6_lsa_copy
    - EVENT_OFF
    - OSPF6_INTERFACE
    - event_add_timer
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - ospf6_check_nbr_loading
    - IS_OSPF6_DEBUG_FLOOD_TYPE
    - CHECK_FLAG
    - OSPF6_AREA
    - SET_FLAG
    - ospf6_flood_area
    - ALL_LIST_ELEMENTS
    - ospf6_lsdb_lookup
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void ospf6_flood_interface(struct ospf6_neighbor *from, struct ospf6_lsa
      *lsa,\n\t\t\t   struct ospf6_interface *oi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_get_by_lsdb
      Src: /src/frr/ospf6d/ospf6_flood.c:594,1
    - Dst: ospf6_flood_process
      Src: /src/frr/ospf6d/ospf6_flood.c:598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - from
    - lsa
    argTypes:
    - struct ospf6_neighbor*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 590
    functionDepth: 2
    functionLinenumber: 590
    functionLinenumberEnd: 599
    functionName: ospf6_flood
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 3
    functionsReached:
    - ospf6_get_by_lsdb
    - ospf6_flood_process
    linkageType: ''
    returnType: void
    signature: void ospf6_flood(struct ospf6_neighbor *from, struct ospf6_lsa *lsa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_flood.c:608,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:609,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_flood.c:612,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_flood.c:612,1
    - Dst: IS_OSPF6_DEBUG_FLOOD_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:614,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:615,1
    - Dst: ospf6_decrement_retrans_count
      Src: /src/frr/ospf6d/ospf6_flood.c:617,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_flood.c:618,1
    - Dst: ospf6_flood_clear_area
      Src: /src/frr/ospf6d/ospf6_flood.c:623,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_flood.c:628,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_flood.c:628,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:629,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_flood.c:630,1
    - Dst: ospf6_flood_clear_interface
      Src: /src/frr/ospf6d/ospf6_flood.c:633,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_flood.c:643,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_flood.c:643,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:644,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_flood.c:645,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_flood.c:647,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:647,1
    - Dst: OSPF6_INTERFACE
      Src: /src/frr/ospf6d/ospf6_flood.c:648,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:651,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_flood.c:652,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_flood.c:652,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:655,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_flood.c:656,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 4
    argCount: 2
    argNames:
    - lsa
    - oi
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 601
    functionDepth: 4
    functionLinenumber: 601
    functionLinenumberEnd: 660
    functionName: ospf6_flood_clear_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 1
    functionsReached:
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - IS_OSPF6_DEBUG_FLOOD_TYPE
    - OSPF6_LSA_SCOPE
    - ospf6_lsdb_remove
    - ospf6_lsa_compare
    - ospf6_flood_clear_interface
    - OSPF6_AREA
    - zlog_debug
    - ntohs
    - ospf6_flood_clear_area
    - OSPF6_INTERFACE
    - if
    - ALL_LIST_ELEMENTS
    - for
    - ospf6_decrement_retrans_count
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_flood_clear_interface(struct ospf6_lsa *lsa,\n\t\t\t\t\tstruct
      ospf6_interface *oi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_get_by_lsdb
      Src: /src/frr/ospf6d/ospf6_flood.c:667,1
    - Dst: ospf6_flood_clear_process
      Src: /src/frr/ospf6d/ospf6_flood.c:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 671
    functionName: ospf6_flood_clear
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 2
    functionsReached:
    - ospf6_get_by_lsdb
    - ospf6_flood_clear_process
    linkageType: ''
    returnType: void
    signature: void ospf6_flood_clear(struct ospf6_lsa *lsa)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_FLOOD_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:683,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:686,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:696,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:699,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:699,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_flood.c:700,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:704,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:713,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:714,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:717,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:720,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:720,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_flood.c:721,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:725,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:734,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:735,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:737,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:738,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:738,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_flood.c:739,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 36
    argCount: 3
    argNames:
    - lsa
    - ismore_recent
    - from
    argTypes:
    - struct ospf6_lsa*
    - int
    - struct ospf6_neighbor*
    assertStmts:
    - condition: (from && from->ospf6_if)
      pos:
        line_end: 685
        line_start: 685
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 749
      start: 675
    functionDepth: 6
    functionLinenumber: 675
    functionLinenumberEnd: 749
    functionName: ospf6_acknowledge_lsa_bdrouter
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_copy
    - IS_OSPF6_DEBUG_FLOOD_TYPE
    - CHECK_FLAG
    - zlog_debug
    - event_add_event
    - ospf6_lsdb_add
    - assert
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void ospf6_acknowledge_lsa_bdrouter(struct ospf6_lsa *lsa,\n\t\t\t\t\t
      \  int ismore_recent,\n\t\t\t\t\t   struct ospf6_neighbor *from)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_FLOOD_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:759,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:762,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:767,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:769,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:777,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:780,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:780,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_flood.c:781,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:788,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:789,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:791,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:799,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:800,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:802,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_flood.c:804,1
    - Dst: ospf6_lsa_copy
      Src: /src/frr/ospf6d/ospf6_flood.c:804,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_flood.c:805,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - lsa
    - ismore_recent
    - from
    argTypes:
    - struct ospf6_lsa*
    - int
    - struct ospf6_neighbor*
    assertStmts:
    - condition: (from && from->ospf6_if)
      pos:
        line_end: 761
        line_start: 761
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 815
      start: 751
    functionDepth: 6
    functionLinenumber: 751
    functionLinenumberEnd: 815
    functionName: ospf6_acknowledge_lsa_allother
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_copy
    - IS_OSPF6_DEBUG_FLOOD_TYPE
    - CHECK_FLAG
    - zlog_debug
    - event_add_event
    - ospf6_lsdb_add
    - assert
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void ospf6_acknowledge_lsa_allother(struct ospf6_lsa *lsa,\n\t\t\t\t\t
      \  int ismore_recent,\n\t\t\t\t\t   struct ospf6_neighbor *from)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:822,1
    - Dst: ospf6_acknowledge_lsa_bdrouter
      Src: /src/frr/ospf6d/ospf6_flood.c:826,1
    - Dst: ospf6_acknowledge_lsa_allother
      Src: /src/frr/ospf6d/ospf6_flood.c:828,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - lsa
    - ismore_recent
    - from
    argTypes:
    - struct ospf6_lsa*
    - int
    - struct ospf6_neighbor*
    assertStmts:
    - condition: (from && from->ospf6_if)
      pos:
        line_end: 821
        line_start: 821
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 829
      start: 817
    functionDepth: 7
    functionLinenumber: 817
    functionLinenumberEnd: 829
    functionName: ospf6_acknowledge_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - ospf6_acknowledge_lsa_bdrouter
    - ospf6_acknowledge_lsa_allother
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_acknowledge_lsa(struct ospf6_lsa *lsa, int ismore_recent,\n\t\t\t\t
      \ struct ospf6_neighbor *from)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_flood.c:845,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:848,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_flood.c:854,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_flood.c:855,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_flood.c:856,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_flood.c:861,1
    - Dst: ospf6_lsa_check_min_arrival
      Src: /src/frr/ospf6d/ospf6_flood.c:866,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_flood.c:873,1
    - Dst: IS_OSPF6_DEBUG_FLOOD_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:878,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:879,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - lsa
    - from
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 835
    functionDepth: 1
    functionLinenumber: 835
    functionLinenumberEnd: 886
    functionName: ospf6_is_maxage_lsa_drop
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_IS_MAXAGE
    - IS_OSPF6_DEBUG_FLOOD_TYPE
    - ALL_LIST_ELEMENTS_RO
    - timersub
    - ospf6_lsa_check_min_arrival
    - zlog_debug
    - if
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: int
    signature: "int ospf6_is_maxage_lsa_drop(struct ospf6_lsa *lsa,\n\t\t\t\t    struct
      ospf6_neighbor *from)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:897,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_flood.c:900,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:901,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:902,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_flood.c:904,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_flood.c:906,1
    - Dst: ospf6_lsa_create::ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_flood.c:912,1
    - Dst: IS_OSPF6_DEBUG_FLOOD_TYPE
      Src: /src/frr/ospf6d/ospf6_flood.c:915,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:915,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:917,1
    - Dst: ospf6_lsa_checksum_valid
      Src: /src/frr/ospf6d/ospf6_flood.c:922,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:922,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:924,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_flood.c:927,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:927,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_flood.c:928,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:928,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_flood.c:935,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:936,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:936,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:938,1
    - Dst: OSPF6_LSA_SCOPE
      Src: /src/frr/ospf6d/ospf6_flood.c:948,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:948,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:960,1
    - Dst: ospf6_is_maxage_lsa_drop
      Src: /src/frr/ospf6d/ospf6_flood.c:967,1
    - Dst: from::from
      Src: /src/frr/ospf6d/ospf6_flood.c:967,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:970,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_flood.c:976,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_flood.c:986,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:986,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:986,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:987,1
    - Dst: lsdb::lsdb
      Src: /src/frr/ospf6d/ospf6_flood.c:987,1
    - Dst: ospf6_lsa_compare
      Src: /src/frr/ospf6d/ospf6_flood.c:989,1
    - Dst: old::old
      Src: /src/frr/ospf6d/ospf6_flood.c:989,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_flood.c:990,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:990,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_flood.c:990,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:992,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_flood.c:993,1
    - Dst: ospf6_lsa_check_min_arrival
      Src: /src/frr/ospf6d/ospf6_flood.c:1006,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_flood.c:1012,1
    - Dst: received::received
      Src: /src/frr/ospf6d/ospf6_flood.c:1012,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:1015,1
    - Dst: ospf6_flood_clear
      Src: /src/frr/ospf6d/ospf6_flood.c:1020,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:1022,1
    - Dst: ospf6_get_by_lsdb
      Src: /src/frr/ospf6d/ospf6_flood.c:1029,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_flood.c:1031,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_flood.c:1035,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:1036,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:1039,1
    - Dst: ospf6_process_maxage_grace_lsa
      Src: /src/frr/ospf6d/ospf6_flood.c:1041,1
    - Dst: from::from
      Src: /src/frr/ospf6d/ospf6_flood.c:1042,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_flood.c:1044,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:1045,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:1053,1
    - Dst: header::header
      Src: /src/frr/ospf6d/ospf6_flood.c:1056,1
    - Dst: ospf6_process_grace_lsa
      Src: /src/frr/ospf6d/ospf6_flood.c:1058,1
    - Dst: from::from
      Src: /src/frr/ospf6d/ospf6_flood.c:1058,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_flood.c:1061,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 85
    argCount: 2
    argNames:
    - from
    - lsa_header
    argTypes:
    - struct ospf6_neighbor*
    - struct ospf6_lsa_header*
    assertStmts:
    - condition: (ospf6)
      pos:
        line_end: 1030
        line_start: 1030
        source_file: /src/frr/ospf6d/ospf6_flood.c
    - condition: (from)
      pos:
        line_end: 896
        line_start: 896
        source_file: /src/frr/ospf6d/ospf6_flood.c
    constantsTouched: []
    func_position:
      end: 1067
      start: 889
    functionDepth: 5
    functionLinenumber: 889
    functionLinenumberEnd: 1067
    functionName: ospf6_receive_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 1
    functionsReached:
    - ospf6_process_maxage_grace_lsa
    - ospf6_process_grace_lsa
    - ntohs
    - OSPF6_LSA_SCOPE
    - received::received
    - ospf6_get_by_lsdb
    - old::old
    - ospf6_lsa_compare
    - zlog_debug
    - if
    - from::from
    - ospf6_lsa_create::ospf6_lsa_create
    - ntohl
    - header::header
    - assert
    - ospf6_flood_clear
    - ospf6_lstype_name
    - ospf6_lsa_checksum_valid
    - monotime
    - ospf6_lsa_check_min_arrival
    - event_add_event
    - IS_AREA_STUB
    - ospf6_is_maxage_lsa_drop
    - IS_OSPF6_DEBUG_FLOOD_TYPE
    - SET_FLAG
    - IS_OSPF6_DEBUG_EXAMIN_TYPE
    - ospf6_lsdb_lookup
    - lsdb::lsdb
    linkageType: ''
    returnType: void
    signature: "void ospf6_receive_lsa(struct ospf6_neighbor *from,\n\t\t       struct
      ospf6_lsa_header *lsa_header)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_flood.c:1271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1268
    functionDepth: 2
    functionLinenumber: 1268
    functionLinenumberEnd: 1273
    functionName: config_write_ospf6_debug_flood
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_flood(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_flood.c:1277,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_flood.c:1278,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_flood.c:1279,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_flood.c:1280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1281
    functionName: install_element_ospf6_debug_flood
    functionSourceFile: /src/frr/ospf6d/ospf6_flood.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_flood(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_addresses
      Src: /src/frr/ospf6d/ospf6_bfd.c:56,1
    - Dst: memcmp
      Src: /src/frr/ospf6d/ospf6_bfd.c:57,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/ospf6d/ospf6_bfd.c:58,1
    - Dst: bfd_sess_install
      Src: /src/frr/ospf6d/ospf6_bfd.c:62,1
    - Dst: bfd_sess_uninstall
      Src: /src/frr/ospf6d/ospf6_bfd.c:65,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - 'on'
    - old_state
    - state
    argTypes:
    - struct ospf6_neighbor*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 66
    functionName: ospf6_bfd_trigger_event
    functionSourceFile: /src/frr/ospf6d/ospf6_bfd.c
    functionUses: 1
    functionsReached:
    - bfd_sess_install
    - bfd_sess_addresses
    - memcmp
    - bfd_sess_uninstall
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: "void ospf6_bfd_trigger_event(struct ospf6_neighbor *on, int old_state,\n\t\t\t
      \    int state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_bfd.c:80,1
    - Dst: bfd_sess_free
      Src: /src/frr/ospf6d/ospf6_bfd.c:83,1
    - Dst: ospf6_bfd_info_nbr_create
      Src: /src/frr/ospf6d/ospf6_bfd.c:88,1
    - Dst: bfd_sess_install
      Src: /src/frr/ospf6d/ospf6_bfd.c:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - oi
    - install
    argTypes:
    - struct ospf6_interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 99
    functionName: ospf6_bfd_reg_dereg_all_nbr
    functionSourceFile: /src/frr/ospf6d/ospf6_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_sess_install
    - ALL_LIST_ELEMENTS_RO
    - ospf6_bfd_info_nbr_create
    - bfd_sess_free
    linkageType: ''
    returnType: void
    signature: "void ospf6_bfd_reg_dereg_all_nbr(struct ospf6_interface *oi,\n\t\t\t\t\tbool
      install)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_bfd.c:108,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_bfd.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - bsp
    - bss
    - arg
    argTypes:
    - struct bfd_session_params*
    - struct bfd_session_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 111
    functionName: ospf6_bfd_callback
    functionSourceFile: /src/frr/ospf6d/ospf6_bfd.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void ospf6_bfd_callback(struct bfd_session_params *bsp,\n\t\t\t       const
      struct bfd_session_status *bss, void *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_new
      Src: /src/frr/ospf6d/ospf6_bfd.c:123,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/ospf6d/ospf6_bfd.c:125,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/ospf6d/ospf6_bfd.c:128,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/ospf6d/ospf6_bfd.c:130,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/ospf6d/ospf6_bfd.c:131,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/ospf6d/ospf6_bfd.c:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - oi
    - 'on'
    argTypes:
    - struct ospf6_interface*
    - struct ospf6_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 133
    functionName: ospf6_bfd_info_nbr_create
    functionSourceFile: /src/frr/ospf6d/ospf6_bfd.c
    functionUses: 2
    functionsReached:
    - bfd_sess_set_profile
    - bfd_sess_new
    - bfd_sess_set_timers
    - bfd_sess_set_interface
    - bfd_sess_set_vrf
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: "void ospf6_bfd_info_nbr_create(struct ospf6_interface *oi,\n\t\t\t
      \      struct ospf6_neighbor *on)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_bfd.c:147,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_bfd.c:152,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_bfd.c:155,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - oi
    argTypes:
    - struct vty*
    - struct ospf6_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 157
    functionName: ospf6_bfd_write_config
    functionSourceFile: /src/frr/ospf6d/ospf6_bfd.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf6_bfd_write_config(struct vty *vty, struct ospf6_interface
      *oi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_init
      Src: /src/frr/ospf6d/ospf6_bfd.c:283,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_bfd.c:286,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_bfd.c:287,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_bfd.c:288,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_bfd.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: ospf6_bfd_init
    functionSourceFile: /src/frr/ospf6d/ospf6_bfd.c
    functionUses: 0
    functionsReached:
    - install_element
    - bfd_protocol_integration_init
    linkageType: ''
    returnType: void
    signature: void ospf6_bfd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_lsdb.c:31,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_lsdb.c:32,1
    - Dst: route_table_init
      Src: /src/frr/ospf6d/ospf6_lsdb.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 37
    functionName: ospf6_lsdb_create
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.c
    functionUses: 4
    functionsReached:
    - route_table_init
    - memset
    - XCALLOC
    linkageType: ''
    returnType: struct ospf6_lsdb
    signature: struct ospf6_lsdb *ospf6_lsdb_create(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsdb_remove_all
      Src: /src/frr/ospf6d/ospf6_lsdb.c:42,1
    - Dst: route_table_finish
      Src: /src/frr/ospf6d/ospf6_lsdb.c:43,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_lsdb.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf6_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: ospf6_lsdb_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.c
    functionUses: 1
    functionsReached:
    - route_table_finish
    - ospf6_lsdb_remove_all
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_lsdb_delete(struct ospf6_lsdb *lsdb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:51,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_lsdb.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - key
    - value
    - len
    argTypes:
    - struct prefix_ipv6*
    - void*
    - int
    assertStmts:
    - condition: (key->prefixlen % 8 == 0)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/frr/ospf6d/ospf6_lsdb.c
    constantsTouched: []
    func_position:
      end: 56
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 56
    functionName: ospf6_lsdb_set_key
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.c
    functionUses: 0
    functionsReached:
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_lsdb_set_key(struct prefix_ipv6 *key, const void *value,\n\t\t\t
      \      int len)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_lsdb.c:63,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_lsdb.c:66,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsdb.c:69,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_lsdb.c:71,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsdb.c:72,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsdb.c:73,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:75,1
    - Dst: ospf6_lsdb_count_assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:77,1
    - Dst: _lsdb_count_assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:77,1
    - Dst: ospf6_lsdb_count_assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:79,1
    - Dst: ospf6_lsdb_stats_update
      Src: /src/frr/ospf6d/ospf6_lsdb.c:82,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_lsdb.c:85,1
    - Dst: ospf6_lsdb_add
      Src: /src/frr/ospf6d/ospf6_lsdb.c:92,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_lsdb.c:98,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:99,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:100,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:102,1
    - Dst: route_node_get
      Src: /src/frr/ospf6d/ospf6_lsdb.c:104,1
    - Dst: ospf6_lsa_lock
      Src: /src/frr/ospf6d/ospf6_lsdb.c:108,1
    - Dst: ospf6_lsdb_stats_update
      Src: /src/frr/ospf6d/ospf6_lsdb.c:112,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_lsdb.c:114,1
    - Dst: OSPF6_LSA_IS_CHANGED
      Src: /src/frr/ospf6d/ospf6_lsdb.c:124,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_lsdb.c:125,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_lsdb.c:130,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_lsdb.c:141,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_lsdb.c:142,1
    - Dst: ospf6_lsdb_count_assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:145,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_lsdb.c:148,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_lsdb.c:153,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:154,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:155,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:157,1
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_lsdb.c:159,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:160,1
    - Dst: ospf6_lsdb_stats_update
      Src: /src/frr/ospf6d/ospf6_lsdb.c:164,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_lsdb.c:169,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_lsdb.c:170,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_lsdb.c:171,1
    - Dst: ospf6_lsdb_count_assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:173,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_lsdb.c:176,1
    - Dst: prefix_ipv6
      Src: /src/frr/ospf6d/ospf6_lsdb.c:181,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_lsdb.c:186,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:187,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:188,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:189,1
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_lsdb.c:191,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_lsdb.c:195,1
    - Dst: ospf6_find_external_lsa
      Src: /src/frr/ospf6d/ospf6_lsdb.c:199,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_lsdb.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsdb.c:208,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_lsdb.c:214,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_lsdb.c:216,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_lsdb.c:216,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_lsdb.c:217,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_lsdb.c:228,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_lsdb.c:233,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_lsdb.c:237,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_lsdb.c:239,1
    - Dst: prefix_same
      Src: /src/frr/ospf6d/ospf6_lsdb.c:239,1
    - Dst: ospf6_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_lsdb.c:240,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_lsdb.c:255,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_lsdb.c:258,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:259,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:260,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:261,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_lsdb.c:263,1
    - Dst: route_table_get_next
      Src: /src/frr/ospf6d/ospf6_lsdb.c:265,1
    - Dst: while
      Src: /src/frr/ospf6d/ospf6_lsdb.c:268,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_lsdb.c:269,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_lsdb.c:274,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6_lsdb.c:281,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:292,1
    - Dst: ospf6_lsdb_set_key
      Src: /src/frr/ospf6d/ospf6_lsdb.c:294,1
    - Dst: route_table_get_next
      Src: /src/frr/ospf6d/ospf6_lsdb.c:297,1
    - Dst: prefix_match
      Src: /src/frr/ospf6d/ospf6_lsdb.c:298,1
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_lsdb.c:306,1
    - Dst: route_next_until
      Src: /src/frr/ospf6d/ospf6_lsdb.c:311,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_lsdb.c:316,1
    - Dst: ospf6_lsa_lock
      Src: /src/frr/ospf6d/ospf6_lsdb.c:321,1
    - Dst: route_next_until
      Src: /src/frr/ospf6d/ospf6_lsdb.c:334,1
    - Dst: ospf6_lsa_lock
      Src: /src/frr/ospf6d/ospf6_lsdb.c:339,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_lsdb.c:344,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 53
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf6_lsdb*
    assertStmts:
    - condition: (num == lsdb->count)
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/frr/ospf6d/ospf6_lsdb.c
    - condition: (node && node->info == lsa)
      pos:
        line_end: 159
        line_start: 159
        source_file: /src/frr/ospf6d/ospf6_lsdb.c
    - condition: (info)
      pos:
        line_end: 213
        line_start: 213
        source_file: /src/frr/ospf6d/ospf6_lsdb.c
    constantsTouched: []
    func_position:
      end: 346
      start: 59
    functionDepth: 5
    functionLinenumber: 59
    functionLinenumberEnd: 346
    functionName: _lsdb_count_assert
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.c
    functionUses: 1
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - ospf6_lsa_lock
    - ospf6_lsa_unlock
    - htons
    - route_top
    - ospf6_lsdb_stats_update
    - ospf6_route_lookup
    - ALL_LSDB
    - ospf6_lsdb_count_assert
    - ntohs
    - OSPF6_LSA_IS_CHANGED
    - while
    - ospf6_lsdb_add
    - htonl
    - route_node_lookup
    - memset
    - OSPF6_LSA_IS_MAXAGE
    - prefix_match
    - ospf6_lsdb_remove
    - zlog_debug
    - if
    - assert
    - route_unlock_node
    - route_table_get_next
    - prefix_same
    - ospf6_lsdb_head
    - route_next
    - ospf6_find_external_lsa
    - ALL_LSDB_TYPED_ADVRTR
    - ospf6_prefix_in6_addr
    - _lsdb_count_assert
    - ospf6_lsdb_set_key
    - route_node_get
    - prefix_ipv6
    - route_next_until
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: void _lsdb_count_assert(struct ospf6_lsdb *lsdb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_lsdb.c:355,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_lsdb.c:356,1
    - Dst: id
      Src: /src/frr/ospf6d/ospf6_lsdb.c:422,1
    - Dst: ospf6_lsdb_lsa_unlock
      Src: /src/frr/ospf6d/ospf6_lsdb.c:426,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_lsdb.c:432,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_lsdb.c:444,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_lsdb.c:448,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_lsdb.c:450,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lsdb
    argTypes:
    - struct ospf6_lsdb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 451
    functionName: ospf6_lsdb_remove_all
    functionSourceFile: /src/frr/ospf6d/ospf6_lsdb.c
    functionUses: 6
    functionsReached:
    - id
    - ospf6_lsdb_remove
    - ALL_LSDB
    - htonl
    - ospf6_lsdb_lsa_unlock
    - ntohl
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_lsdb_remove_all(struct ospf6_lsdb *lsdb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: ZROUTE_NAME
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZROUTE_NAME(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_as_external_lsa_originate
      Src: /src/frr/ospf6d/ospf6_asbr.c:68,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:70,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_asbr.c:71,1
    - Dst: ospf6_nssa_lsa_originate
      Src: /src/frr/ospf6d/ospf6_asbr.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - route
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 76
    functionName: ospf6_originate_type5_type7_lsas
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_nssa_lsa_originate
    - IS_AREA_NSSA
    - ALL_LIST_ELEMENTS_RO
    - ospf6_as_external_lsa_originate
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: "struct ospf6_lsa *ospf6_originate_type5_type7_lsas(\n\t\t\t\t\t\tstruct
      ospf6_route *route,\n\t\t\t\t\t\tstruct ospf6 *ospf6)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:92,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_asbr.c:97,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:98,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:102,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:113,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:115,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:118,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:119,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:121,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:125,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:127,1
    - Dst: OSPF6_ASBR_METRIC_SET
      Src: /src/frr/ospf6d/ospf6_asbr.c:130,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:139,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:142,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_asbr.c:143,1
    - Dst: ospf6_prefix_apply_mask
      Src: /src/frr/ospf6d/ospf6_asbr.c:144,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_asbr.c:145,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:148,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:149,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:154,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:155,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:157,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:163,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_asbr.c:167,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:169,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_asbr.c:172,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_asbr.c:175,1
    - Dst: ospf6_lsa_originate_process
      Src: /src/frr/ospf6d/ospf6_asbr.c:178,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 2
    argNames:
    - route
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 79
    functionDepth: 8
    functionLinenumber: 79
    functionLinenumberEnd: 181
    functionName: ospf6_as_external_lsa_originate
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - ospf6_lsa_checksum
    - IN6_IS_ADDR_UNSPECIFIED
    - ospf6_lsa_create
    - htonl
    - memset
    - htons
    - CHECK_FLAG
    - ospf6_new_ls_seqnum
    - ospf6_lsa_originate_process
    - zlog_debug
    - UNSET_FLAG
    - SET_FLAG
    - IS_OSPF6_DEBUG_ORIGINATE
    - OSPF6_ASBR_METRIC_SET
    - OSPF6_PREFIX_SPACE
    - ospf6_prefix_apply_mask
    - memcpy
    linkageType: ''
    returnType: struct ospf6_lsa
    signature: "struct ospf6_lsa *ospf6_as_external_lsa_originate(struct ospf6_route
      *route,\n\t\t\t\t\t    struct ospf6 *ospf6)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_asbr.c:189,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_asbr.c:193,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_asbr.c:193,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:196,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_asbr.c:198,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:201,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_asbr.c:204,1
    - Dst: ospf6_flood_interface
      Src: /src/frr/ospf6d/ospf6_asbr.c:206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 183
    functionDepth: 8
    functionLinenumber: 183
    functionLinenumberEnd: 208
    functionName: ospf6_orig_as_external_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - ospf6_flood_interface
    - htons
    - zlog_debug
    - ALL_LSDB_TYPED_ADVRTR
    - EVENT_ARG
    - ntohl
    linkageType: ''
    returnType: void
    signature: void ospf6_orig_as_external_lsa(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:219,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:222,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_asbr.c:226,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:227,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:230,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_asbr.c:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 233
    functionName: ospf6_as_external_lsa_get_tag
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - CHECK_FLAG
    - OSPF6_PREFIX_SPACE
    - ntohl
    - memcpy
    linkageType: ''
    returnType: route_tag_t
    signature: route_tag_t ospf6_as_external_lsa_get_tag(struct ospf6_lsa *lsa)
  - BBCount: 154
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_is_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:259,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:267,1
    - Dst: ospf6_ls_origin_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:273,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:281,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:282,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:291,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:292,1
    - Dst: ospf6_nexthop_is_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:294,1
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:296,1
    - Dst: ospf6_nexthop_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:298,1
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:302,1
    - Dst: ospf6_path_free
      Src: /src/frr/ospf6d/ospf6_asbr.c:303,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:311,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:312,1
    - Dst: ospf6_merge_nexthops
      Src: /src/frr/ospf6d/ospf6_asbr.c:314,1
    - Dst: listgetdata
      Src: /src/frr/ospf6d/ospf6_asbr.c:333,1
    - Dst: listhead
      Src: /src/frr/ospf6d/ospf6_asbr.c:333,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:343,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:344,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:352,1
    - Dst: ospf6_route_is_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:368,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:377,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:378,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:389,1
    - Dst: ospf6_ls_origin_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:392,1
    - Dst: ospf6_path_dup
      Src: /src/frr/ospf6d/ospf6_asbr.c:401,1
    - Dst: ospf6_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_asbr.c:404,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospf6d/ospf6_asbr.c:408,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:410,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:411,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:414,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:415,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:418,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:421,1
    - Dst: ospf6_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_asbr.c:422,1
    - Dst: list_delete_all_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:429,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:431,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:435,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:438,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:439,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:440,1
    - Dst: ospf6_route_merge_nexthops
      Src: /src/frr/ospf6d/ospf6_asbr.c:446,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:450,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:451,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:455,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:458,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:468,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:476,1
    - Dst: ospf6_ase_forward_address_check
      Src: /src/frr/ospf6d/ospf6_asbr.c:481,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:491,1
    - Dst: if_is_operative
      Src: /src/frr/ospf6d/ospf6_asbr.c:492,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:497,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:498,1
    - Dst: ospf6_asbr_lsa_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:508,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:520,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:523,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:526,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:526,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:527,1
    - Dst: ospf6_get_by_lsdb
      Src: /src/frr/ospf6d/ospf6_asbr.c:529,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:532,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:533,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:537,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:538,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:539,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:543,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:545,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:546,1
    - Dst: ospf6_linkstate_prefix
      Src: /src/frr/ospf6d/ospf6_asbr.c:550,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:550,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:551,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:553,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:554,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:558,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:560,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:561,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:573,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:576,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:577,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:599,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:601,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:602,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:605,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:611,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_asbr.c:613,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:614,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:617,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:620,1
    - Dst: ospf6_ase_forward_address_check
      Src: /src/frr/ospf6d/ospf6_asbr.c:621,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:623,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:624,1
    - Dst: ospf6_route_lookup_bestmatch
      Src: /src/frr/ospf6d/ospf6_asbr.c:631,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:634,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:635,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_asbr.c:643,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_asbr.c:647,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:655,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:657,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:661,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:666,1
    - Dst: ospf6_as_external_lsa_get_tag
      Src: /src/frr/ospf6d/ospf6_asbr.c:670,1
    - Dst: ospf6_route_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_asbr.c:672,1
    - Dst: ospf6_path_dup
      Src: /src/frr/ospf6d/ospf6_asbr.c:674,1
    - Dst: ospf6_copy_nexthops
      Src: /src/frr/ospf6d/ospf6_asbr.c:675,1
    - Dst: listnode_add_sort
      Src: /src/frr/ospf6d/ospf6_asbr.c:676,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:679,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:680,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:686,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:689,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:691,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:693,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:694,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:697,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:700,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:708,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:709,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:712,1
    - Dst: ospf6_asbr_update_route_ecmp_path
      Src: /src/frr/ospf6d/ospf6_asbr.c:713,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:728,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:731,1
    - Dst: ospf6_get_by_lsdb
      Src: /src/frr/ospf6d/ospf6_asbr.c:734,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:735,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:739,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:744,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_asbr.c:747,1
    - Dst: listnode_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:750,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:755,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:761,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_asbr.c:765,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_asbr.c:769,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:778,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:783,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:788,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:793,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_asbr.c:796,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:799,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:801,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:805,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:806,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:811,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_asbr.c:816,1
    - Dst: ospf6_route_is_prefix
      Src: /src/frr/ospf6d/ospf6_asbr.c:817,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:818,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:827,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:838,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:849,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_asbr.c:854,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:856,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:867,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:870,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_asbr.c:876,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:876,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:878,1
    - Dst: ospf6_nexthop_is_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:881,1
    - Dst: ospf6_nexthop_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:886,1
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:890,1
    - Dst: ospf6_path_free
      Src: /src/frr/ospf6d/ospf6_asbr.c:891,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:901,1
    - Dst: ospf6_merge_nexthops
      Src: /src/frr/ospf6d/ospf6_asbr.c:903,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:908,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:915,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:916,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:921,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:933,1
    - Dst: listgetdata
      Src: /src/frr/ospf6d/ospf6_asbr.c:940,1
    - Dst: listhead
      Src: /src/frr/ospf6d/ospf6_asbr.c:941,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:951,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:954,1
    - Dst: ospf6_route_is_same_origin
      Src: /src/frr/ospf6d/ospf6_asbr.c:966,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:972,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:987,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_asbr.c:994,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:997,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:999,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_asbr.c:1002,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:1004,1
    - Dst: ospf6_asbr_lsentry_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1007,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1013,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1015,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_asbr.c:1015,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_asbr.c:1017,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:1021,1
    - Dst: ospf6_linkstate_prefix_adv_router
      Src: /src/frr/ospf6d/ospf6_asbr.c:1022,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1023,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_asbr.c:1024,1
    - Dst: ospf6_asbr_lsa_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1025,1
    - Dst: ospf6_asbr_lsentry_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1029,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:1036,1
    - Dst: ospf6_linkstate_prefix_adv_router
      Src: /src/frr/ospf6d/ospf6_asbr.c:1037,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1038,1
    - Dst: ospf6_asbr_lsa_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1039,1
    - Dst: ospf6_asbr_routemap_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1044,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1047,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospf6d/ospf6_asbr.c:1048,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1048,1
    - Dst: free
      Src: /src/frr/ospf6d/ospf6_asbr.c:1049,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1049,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1052,1
    - Dst: strdup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1052,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1053,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ospf6d/ospf6_asbr.c:1053,1
    - Dst: route_map_counter_increment
      Src: /src/frr/ospf6d/ospf6_asbr.c:1054,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1054,1
    - Dst: ospf6_asbr_routemap_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1057,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1059,1
    - Dst: free
      Src: /src/frr/ospf6d/ospf6_asbr.c:1060,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1060,1
    - Dst: route_map_counter_decrement
      Src: /src/frr/ospf6d/ospf6_asbr.c:1062,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1062,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1064,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1065,1
    - Dst: ospf6_asbr_routemap_update_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:1068,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1070,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1075,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1080,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1083,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ospf6d/ospf6_asbr.c:1085,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1085,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1087,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1089,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1091,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1092,1
    - Dst: ospf6_zebra_no_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1094,1
    - Dst: ospf6_zebra_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1095,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1105,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_asbr.c:1107,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1111,1
    - Dst: event_add_timer_msec
      Src: /src/frr/ospf6d/ospf6_asbr.c:1113,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1127,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1129,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1130,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1132,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ospf6d/ospf6_asbr.c:1133,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1133,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:1136,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1136,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1138,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1140,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1144,1
    - Dst: route_map_counter_increment
      Src: /src/frr/ospf6d/ospf6_asbr.c:1147,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1147,1
    - Dst: ospf6_asbr_distribute_list_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1148,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1158,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1162,1
    - Dst: ospf6_asbr_redistribute_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1164,1
    - Dst: ospf6_asbr_routemap_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1165,1
    - Dst: ospf6_asbr_redistribute_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1166,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1181,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1183,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1184,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:1185,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1185,1
    - Dst: ospf6_asbr_distribute_list_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1186,1
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1193,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:1207,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1219,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:1220,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_asbr.c:1224,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_asbr.c:1226,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1230,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1231,1
    - Dst: listnode_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1233,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:1244,1
    - Dst: list_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:1245,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:1247,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1254,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_asbr.c:1259,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:1261,1
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1262,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_asbr.c:1263,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1267,1
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1269,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_asbr.c:1270,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1274,1
    - Dst: ospf6_spf_schedule
      Src: /src/frr/ospf6d/ospf6_asbr.c:1278,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1281,1
    - Dst: ospf6_zebra_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1287,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1290,1
    - Dst: ospf6_zebra_no_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1299,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:1301,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:1302,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1307,1
    - Dst: ospf6_asbr_routemap_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1311,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1313,1
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_asbr.c:1321,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:1322,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1324,1
    - Dst: ospf6_flood_area
      Src: /src/frr/ospf6d/ospf6_asbr.c:1327,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1342,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_asbr.c:1343,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_asbr.c:1343,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:1347,1
    - Dst: while
      Src: /src/frr/ospf6d/ospf6_asbr.c:1348,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:1349,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:1350,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:1351,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1352,1
    - Dst: ospf6_external_aggr_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:1358,1
    - Dst: route_node_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:1362,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1368,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:1374,1
    - Dst: ospf6_asbr_redistribute_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1379,1
    - Dst: ospf6_zebra_is_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1398,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1401,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1402,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1405,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1408,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1411,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1412,1
    - Dst: ospf6_asbr_routemap_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1413,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1414,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_asbr.c:1415,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1417,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1423,1
    - Dst: route_map_apply
      Src: /src/frr/ospf6d/ospf6_asbr.c:1429,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1429,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1432,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1433,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1434,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1440,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1444,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1450,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1454,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1456,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1457,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1464,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1465,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1472,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1473,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ospf6d/ospf6_asbr.c:1474,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1475,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1478,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:1480,1
    - Dst: ospf6_handle_external_lsa_origination
      Src: /src/frr/ospf6d/ospf6_asbr.c:1481,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1483,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_asbr.c:1489,1
    - Dst: prefix_copy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1491,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_asbr.c:1493,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1498,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1502,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1506,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1507,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1508,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1515,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1516,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1522,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1523,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ospf6d/ospf6_asbr.c:1524,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1525,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1528,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1530,1
    - Dst: ospf6_handle_external_lsa_origination
      Src: /src/frr/ospf6d/ospf6_asbr.c:1531,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1533,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1542,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:1542,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:1543,1
    - Dst: ospf6_external_lsa_purge
      Src: /src/frr/ospf6d/ospf6_asbr.c:1547,1
    - Dst: hash_get
      Src: /src/frr/ospf6d/ospf6_asbr.c:1555,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1565,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1569,1
    - Dst: ospf6_asbr_external_lsa_remove_by_id
      Src: /src/frr/ospf6d/ospf6_asbr.c:1573,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1577,1
    - Dst: ospf6_zebra_route_update_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1581,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:1583,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:1585,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1591,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1600,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1604,1
    - Dst: hash_release
      Src: /src/frr/ospf6d/ospf6_asbr.c:1606,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1612,1
    - Dst: ospf6_asbr_summary_remove_lsa_and_route
      Src: /src/frr/ospf6d/ospf6_asbr.c:1613,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1622,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1625,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:1630,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1634,1
    - Dst: ospf6_asbr_external_lsa_remove_by_id
      Src: /src/frr/ospf6d/ospf6_asbr.c:1642,1
    - Dst: ospf6_unlink_route_from_aggr
      Src: /src/frr/ospf6d/ospf6_asbr.c:1644,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1647,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1650,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:1651,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1653,1
    - Dst: DEFPY
      Src: /src/frr/ospf6d/ospf6_asbr.c:1656,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1673,1
    - Dst: proto_redistnum
      Src: /src/frr/ospf6d/ospf6_asbr.c:1675,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1684,1
    - Dst: ospf6_redist_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1686,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1691,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1692,1
    - Dst: strmatch
      Src: /src/frr/ospf6d/ospf6_asbr.c:1693,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1693,1
    - Dst: ospf6_asbr_redistribute_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1696,1
    - Dst: ospf6_asbr_routemap_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1702,1
    - Dst: ospf6_asbr_routemap_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1704,1
    - Dst: ospf6_asbr_redistribute_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1705,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_asbr.c:1710,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1728,1
    - Dst: proto_redistnum
      Src: /src/frr/ospf6d/ospf6_asbr.c:1730,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1734,1
    - Dst: ospf6_asbr_redistribute_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1738,1
    - Dst: ospf6_redist_del
      Src: /src/frr/ospf6d/ospf6_asbr.c:1739,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1750,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1756,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1756,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1758,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1760,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1761,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1762,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1762,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1763,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1782,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:1783,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:1784,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1791,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1795,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_asbr.c:1803,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1804,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1805,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1806,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1808,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1810,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1813,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1815,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1817,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1818,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1820,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1822,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1824,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1825,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1826,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1830,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1831,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1835,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1838,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1839,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1841,1
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospf6d/ospf6_asbr.c:1859,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1861,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1866,1
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospf6d/ospf6_asbr.c:1875,1
    - Dst: ospf6_asbr_redistribute_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1880,1
    - Dst: DEFPY
      Src: /src/frr/ospf6d/ospf6_asbr.c:1888,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1905,1
    - Dst: ospf6_redist_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1909,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1921,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1922,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:1923,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1923,1
    - Dst: ospf6_asbr_routemap_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1938,1
    - Dst: ospf6_asbr_routemap_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1940,1
    - Dst: ospf6_redistribute_default_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1942,1
    - Dst: DEFPY
      Src: /src/frr/ospf6d/ospf6_asbr.c:1946,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1962,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1964,1
    - Dst: ospf6_asbr_routemap_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1968,1
    - Dst: ospf6_redist_del
      Src: /src/frr/ospf6d/ospf6_asbr.c:1969,1
    - Dst: ospf6_redistribute_default_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1971,1
    - Dst: prefix_list_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1984,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospf6d/ospf6_asbr.c:1988,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1995,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2000,1
    - Dst: if_lookup_by_name
      Src: /src/frr/ospf6d/ospf6_asbr.c:2024,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2036,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2042,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:2083,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:2093,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:2093,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2095,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2100,1
    - Dst: atoi
      Src: /src/frr/ospf6d/ospf6_asbr.c:2118,1
    - Dst: strtoul
      Src: /src/frr/ospf6d/ospf6_asbr.c:2126,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2129,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2134,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_asbr.c:2153,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:2154,1
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_asbr.c:2164,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2166,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2171,1
    - Dst: DEFUN_YANG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2201,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/ospf6d/ospf6_asbr.c:2214,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2215,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/ospf6d/ospf6_asbr.c:2217,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/ospf6d/ospf6_asbr.c:2218,1
    - Dst: DEFUN_YANG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2222,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/ospf6d/ospf6_asbr.c:2233,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/ospf6d/ospf6_asbr.c:2234,1
    - Dst: DEFUN_YANG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2238,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/ospf6d/ospf6_asbr.c:2249,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2250,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/ospf6d/ospf6_asbr.c:2252,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/ospf6d/ospf6_asbr.c:2254,1
    - Dst: DEFUN_YANG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2258,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/ospf6d/ospf6_asbr.c:2268,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/ospf6d/ospf6_asbr.c:2269,1
    - Dst: route_map_init
      Src: /src/frr/ospf6d/ospf6_asbr.c:2274,1
    - Dst: route_map_add_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2276,1
    - Dst: route_map_delete_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2277,1
    - Dst: route_map_event_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2278,1
    - Dst: route_map_set_metric_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2280,1
    - Dst: route_map_no_set_metric_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2281,1
    - Dst: route_map_set_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2283,1
    - Dst: route_map_no_set_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2284,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2286,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2287,1
    - Dst: route_map_match_ipv6_address_prefix_list_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2289,1
    - Dst: route_map_no_match_ipv6_address_prefix_list_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2290,1
    - Dst: route_map_match_interface_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2292,1
    - Dst: route_map_no_match_interface_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2293,1
    - Dst: route_map_install_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:2295,1
    - Dst: route_map_install_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:2297,1
    - Dst: route_map_install_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:2298,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2300,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2301,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2302,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2303,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2306,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2307,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2310,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2311,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:2326,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_asbr.c:2330,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2338,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_asbr.c:2343,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2345,1
    - Dst: strlcat
      Src: /src/frr/ospf6d/ospf6_asbr.c:2347,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:2360,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:2361,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2365,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2368,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2370,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2374,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2375,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:2376,1
    - Dst: ospf6_prefix_options_printbuf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2377,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2379,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2380,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:2382,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2383,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2384,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2390,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2391,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2392,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2394,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2398,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2400,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2401,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2402,1
    - Dst: ospf6_as_external_lsa_get_tag
      Src: /src/frr/ospf6d/ospf6_asbr.c:2403,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2405,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2406,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:2407,1
    - Dst: ospf6_prefix_options_printbuf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2409,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2411,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2413,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:2414,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2416,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2421,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2422,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2428,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2429,1
    - Dst: ospf6_as_external_lsa_get_tag
      Src: /src/frr/ospf6d/ospf6_asbr.c:2430,1
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2448,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_asbr.c:2449,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_asbr.c:2450,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:2451,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_asbr.c:2452,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2455,1
    - Dst: ospf6_route_get_first_nh_index
      Src: /src/frr/ospf6d/ospf6_asbr.c:2456,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_asbr.c:2459,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2460,1
    - Dst: zebra_route_char
      Src: /src/frr/ospf6d/ospf6_asbr.c:2461,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2462,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2463,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2464,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2465,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2467,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2472,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2474,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2477,1
    - Dst: zebra_route_char
      Src: /src/frr/ospf6d/ospf6_asbr.c:2478,1
    - Dst: DEFUN
      Src: /src/frr/ospf6d/ospf6_asbr.c:2486,1
    - Dst: use_json
      Src: /src/frr/ospf6d/ospf6_asbr.c:2495,1
    - Dst: OSPF6_FIND_VRF_ARGS
      Src: /src/frr/ospf6d/ospf6_asbr.c:2504,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_asbr.c:2507,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_asbr.c:2508,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_asbr.c:2509,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:2512,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:2516,1
    - Dst: ospf6_redistribute_show_config
      Src: /src/frr/ospf6d/ospf6_asbr.c:2517,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_asbr.c:2520,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:2520,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:2521,1
    - Dst: ospf6_asbr_external_route_show
      Src: /src/frr/ospf6d/ospf6_asbr.c:2522,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2527,1
    - Dst: vty_json
      Src: /src/frr/ospf6d/ospf6_asbr.c:2529,1
    - Dst: OSPF6_CMD_CHECK_VRF
      Src: /src/frr/ospf6d/ospf6_asbr.c:2537,1
    CyclomaticComplexity: 244
    EdgeCount: 244
    ICount: 774
    argCount: 3
    argNames:
    - old
    - route
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6_route*
    - struct ospf6*
    assertStmts:
    - condition: (lsa->header)
      pos:
        line_end: 2359
        line_start: 2359
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    - condition: (info)
      pos:
        line_end: 1629
        line_start: 1629
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    - condition: (lsa->lock > 1)
      pos:
        line_end: 1348
        line_start: 1348
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    constantsTouched: []
    func_position:
      end: 2540
      start: 235
    functionDepth: 7
    functionLinenumber: 235
    functionLinenumberEnd: 2540
    functionName: ospf6_asbr_update_route_ecmp_path
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - route_map_event_hook
    - listhead
    - ospf6_route_lookup
    - ospf6_asbr_routemap_set
    - ntohs
    - OSPF6_FIND_VRF_ARGS
    - ospf6_asbr_redistribute_set
    - route_map_set_metric_hook
    - strlcat
    - json_object_boolean_add
    - route_map_install_set
    - memset
    - XCALLOC
    - snprintf
    - route_map_init
    - ospf6_route_create
    - ospf6_asbr_routemap_update
    - listgetdata
    - if
    - for
    - ospf6_nexthop_delete
    - route_map_set_tag_hook
    - route_unlock_node
    - listcount
    - ospf6_path_dup
    - inet_pton
    - ospf6_asbr_lsentry_remove
    - ospf6_as_external_lsa_get_prefix_str
    - ospf6_prefix_in6_addr
    - OSPF6_CMD_CHECK_VRF
    - ospf6_route_lookup_bestmatch
    - memcpy
    - json_object_new_object
    - route_map_counter_decrement
    - OSPF6_EXTERNAL_RT_COUNT
    - ospf6_route_add_nexthop
    - ospf6_flood_area
    - list_new
    - route_map_apply
    - ALL_LIST_ELEMENTS
    - ospf6_lsdb_lookup
    - route_map_match_ipv6_address_prefix_list_hook
    - use_json
    - htons
    - ospf6_merge_nexthops
    - ospf6_asbr_lsa_add
    - ospf6_redistribute_show_config
    - ROUTEMAP
    - metric_value
    - ospf6_asbr_routemap_update_timer
    - ospf6_asbr_external_route_show
    - DEFPY
    - ospf6_as_external_lsa_get_tag
    - ospf6_asbr_lsa_remove
    - ospf6_get_by_lsdb
    - event_add_timer_msec
    - inet_ntop
    - route_node_match
    - DEFUN
    - ospf6_prefix_options_printbuf
    - listnode_add_sort
    - ospf6_redist_add
    - ospf6_route_get_first_nh_index
    - ospf6_zebra_is_redistribute
    - prefix_list_apply
    - listnode_head
    - ospf6_route_remove
    - atoi
    - nb_cli_apply_changes
    - ZROUTE_NAME
    - route_map_no_set_tag_hook
    - route_map_install_match
    - IS_AREA_NSSA
    - json_object_new_array
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - ospf6_route_next
    - json_object_object_add
    - ospf6_linkstate_prefix
    - if_is_operative
    - vty_json
    - OSPF6_LSA_HEADER_END
    - ospf6_asbr_lsentry_add
    - ALL_LSDB
    - metric_type
    - ospf6_redist_lookup
    - json_object_string_add
    - while
    - install_element
    - route_map_match_interface_hook
    - ospf6_route_head
    - ospf6_external_lsa_purge
    - strmatch
    - route_map_no_match_ipv6_address_prefix_list_hook
    - prefix_list_lookup
    - VTY_DECLVAR_CONTEXT
    - OSPF6_LSA_IS_MAXAGE
    - ospf6_copy_nexthops
    - ospf6_zebra_no_redistribute
    - ospf6_lsdb_remove
    - ospf6_asbr_update_route_ecmp_path
    - proto_redistnum
    - zlog_debug
    - ospf6_route_delete
    - ospf6_route_add
    - assert
    - zlog_info
    - ospf6_linkstate_prefix_adv_router
    - vty_out
    - ospf6_route_is_same_origin
    - route_map_delete_hook
    - IS_OSPF6_ASBR
    - route_map_no_match_tag_hook
    - nb_cli_enqueue_change
    - json_object_int_add
    - ospf6_check_and_set_router_abr
    - ALL_LSDB_TYPED_ADVRTR
    - ospf6_redistribute_default_set
    - XFREE
    - ospf6_asbr_status_update
    - hash_release
    - ospf6_route_is_prefix
    - IS_AREA_STUB
    - strtoul
    - json_object_array_add
    - ospf6_ls_origin_same
    - route_map_lookup_by_name
    - SET_FLAG
    - ospf6_asbr_external_lsa_remove_by_id
    - ospf6_route_merge_nexthops
    - OSPF6_PREFIX_SPACE
    - IPV6_ADDR_SAME
    - route_map_add_hook
    - prefix2str
    - list_delete
    - route_map_match_tag_hook
    - ospf6_external_aggr_match
    - listnode_add
    - ospf6_spf_schedule
    - strdup
    - route_map_counter_increment
    - zlog_warn
    - ospf6_asbr_routemap_unset
    - htonl
    - ospf6_lsdb_next
    - ospf6_handle_external_lsa_origination
    - IN6_IS_ADDR_UNSPECIFIED
    - zclient_redistribute_default
    - ALL_LIST_ELEMENTS_RO
    - zebra_route_char
    - ospf6_zebra_route_update_remove
    - list_delete_all_node
    - ospf6_route_lock
    - ospf6_asbr_redistribute_remove
    - EVENT_ARG
    - event_is_scheduled
    - ospf6_ase_forward_address_check
    - ospf6_asbr_distribute_list_update
    - ospf6_route_unlock
    - ROUTEMAP_NAME
    - prefix_copy
    - ADV_ROUTER_IN_PREFIX
    - hash_get
    - ospf6_unlink_route_from_aggr
    - ntohl
    - route_map_no_match_interface_hook
    - ospf6_nexthop_is_same
    - ospf6_redist_del
    - ospf6_lsdb_head
    - free
    - ospf6_asbr_redistribute_unset
    - ospf6_zebra_redistribute
    - UNSET_FLAG
    - listnode_delete
    - OSPF6_ASBR_METRIC
    - DEFUN_YANG
    - XSTRDUP
    - route_map_no_set_metric_hook
    - if_lookup_by_name
    - IS_OSPF6_DEBUG_EXAMIN
    - CHECK_FLAG
    - ospf6_asbr_summary_remove_lsa_and_route
    - ospf6_route_copy_nexthops
    - ospf6_path_free
    - ospf6_route_is_same
    - ospf6_asbr_redistribute_add
    linkageType: ''
    returnType: void
    signature: "void ospf6_asbr_update_route_ecmp_path(struct ospf6_route *old,\n\t\t\t\t
      \      struct ospf6_route *route,\n\t\t\t\t       struct ospf6 *ospf6)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1127,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1129,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1130,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1132,1
    - Dst: route_map_lookup_by_name
      Src: /src/frr/ospf6d/ospf6_asbr.c:1133,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1133,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:1136,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1136,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1138,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1140,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1144,1
    - Dst: route_map_counter_increment
      Src: /src/frr/ospf6d/ospf6_asbr.c:1147,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1147,1
    - Dst: ospf6_asbr_distribute_list_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1148,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1158,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1162,1
    - Dst: ospf6_asbr_redistribute_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1164,1
    - Dst: ospf6_asbr_routemap_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1165,1
    - Dst: ospf6_asbr_redistribute_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:1166,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - mapname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1117
    functionDepth: 2
    functionLinenumber: 1117
    functionLinenumberEnd: 1170
    functionName: ospf6_asbr_routemap_update
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - strcmp
    - ospf6_asbr_routemap_set
    - ROUTEMAP
    - ospf6_redist_lookup
    - route_map_lookup_by_name
    - zlog_debug
    - route_map_counter_increment
    - ospf6_asbr_redistribute_unset
    - ospf6_asbr_redistribute_set
    - ALL_LIST_ELEMENTS
    - ospf6_asbr_distribute_list_update
    - ROUTEMAP_NAME
    - ZROUTE_NAME
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_routemap_update(const char *mapname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1181,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1183,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1184,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:1185,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1185,1
    - Dst: ospf6_asbr_distribute_list_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1172
    functionDepth: 1
    functionLinenumber: 1172
    functionLinenumberEnd: 1189
    functionName: ospf6_asbr_routemap_event
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ospf6_redist_lookup
    - ALL_LIST_ELEMENTS
    - ospf6_asbr_distribute_list_update
    - ROUTEMAP_NAME
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_routemap_event(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - o
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1191
    functionDepth: 1
    functionLinenumber: 1191
    functionLinenumberEnd: 1194
    functionName: ospf6_asbr_is_asbr
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - IS_OSPF6_ASBR
    linkageType: ''
    returnType: int
    signature: int ospf6_asbr_is_asbr(struct ospf6 *o)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_asbr.c:1207,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1219,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:1220,1
    - Dst: list_new
      Src: /src/frr/ospf6d/ospf6_asbr.c:1224,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_asbr.c:1226,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1230,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1231,1
    - Dst: listnode_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1233,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:1244,1
    - Dst: list_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:1245,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:1247,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1254,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_asbr.c:1259,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_asbr.c:1261,1
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1262,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_asbr.c:1263,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1267,1
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_asbr.c:1269,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_asbr.c:1270,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1274,1
    - Dst: ospf6_spf_schedule
      Src: /src/frr/ospf6d/ospf6_asbr.c:1278,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ospf6
    - type
    - instance
    argTypes:
    - struct ospf6*
    - int
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1196
    functionDepth: 2
    functionLinenumber: 1196
    functionLinenumberEnd: 1283
    functionName: ospf6_redist_lookup
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 6
    functionsReached:
    - zlog_info
    - list_delete
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - IS_OSPF6_ASBR
    - ROUTEMAP
    - listnode_add
    - ospf6_spf_schedule
    - ospf6_redist_lookup
    - SET_FLAG
    - UNSET_FLAG
    - list_new
    - XFREE
    - ospf6_asbr_status_update
    - if
    - ALL_LIST_ELEMENTS
    - ROUTEMAP_NAME
    linkageType: ''
    returnType: struct ospf6_redist
    signature: "struct ospf6_redist *ospf6_redist_lookup(struct ospf6 *ospf6, int
      type,\n\t\t\t\t\t unsigned short instance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_zebra_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1287,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ospf6
    - type
    argTypes:
    - struct ospf6*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1285
    functionDepth: 6
    functionLinenumber: 1285
    functionLinenumberEnd: 1291
    functionName: ospf6_asbr_redistribute_set
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 2
    functionsReached:
    - ospf6_zebra_redistribute
    - ospf6_asbr_status_update
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_redistribute_set(struct ospf6 *ospf6, int type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_zebra_no_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1299,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:1301,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:1302,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1307,1
    - Dst: ospf6_asbr_routemap_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1311,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1313,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ospf6
    - red
    - type
    argTypes:
    - struct ospf6*
    - struct ospf6_redist*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1293
    functionDepth: 6
    functionLinenumber: 1293
    functionLinenumberEnd: 1314
    functionName: ospf6_asbr_redistribute_unset
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 2
    functionsReached:
    - ospf6_zebra_no_redistribute
    - ospf6_route_next
    - ospf6_asbr_routemap_unset
    - ospf6_asbr_redistribute_remove
    - ospf6_asbr_status_update
    - ospf6_route_head
    linkageType: ''
    returnType: void
    signature: "void ospf6_asbr_redistribute_unset(struct ospf6 *ospf6,\n\t\t\t\t\t
      \ struct ospf6_redist *red, int type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LSDB
      Src: /src/frr/ospf6d/ospf6_asbr.c:1321,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:1322,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1324,1
    - Dst: ospf6_flood_area
      Src: /src/frr/ospf6d/ospf6_asbr.c:1327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - oa
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1329
    functionName: ospf6_asbr_send_externals_to_area
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - ntohs
    - zlog_debug
    - ospf6_flood_area
    - ALL_LSDB
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_send_externals_to_area(struct ospf6_area *oa)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_asbr.c:1342,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_asbr.c:1343,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_asbr.c:1343,1
    - Dst: ospf6_lsdb_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:1347,1
    - Dst: while
      Src: /src/frr/ospf6d/ospf6_asbr.c:1348,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:1349,1
    - Dst: ospf6_lsdb_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:1350,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:1351,1
    - Dst: ospf6_lsdb_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1352,1
    - Dst: ospf6_external_aggr_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:1358,1
    - Dst: route_node_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:1362,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1368,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:1374,1
    - Dst: ospf6_asbr_redistribute_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1379,1
    - Dst: ospf6_zebra_is_redistribute
      Src: /src/frr/ospf6d/ospf6_asbr.c:1398,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1401,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1402,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1405,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1408,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1411,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1412,1
    - Dst: ospf6_asbr_routemap_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1413,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1414,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_asbr.c:1415,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1417,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1423,1
    - Dst: route_map_apply
      Src: /src/frr/ospf6d/ospf6_asbr.c:1429,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1429,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1432,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1433,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1434,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1440,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1444,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1450,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1454,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1456,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1457,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1464,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1465,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1472,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1473,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ospf6d/ospf6_asbr.c:1474,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1475,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1478,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:1480,1
    - Dst: ospf6_handle_external_lsa_origination
      Src: /src/frr/ospf6d/ospf6_asbr.c:1481,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1483,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_asbr.c:1489,1
    - Dst: prefix_copy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1491,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_asbr.c:1493,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1498,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1502,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1506,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1507,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1508,1
    - Dst: metric_type
      Src: /src/frr/ospf6d/ospf6_asbr.c:1515,1
    - Dst: metric_value
      Src: /src/frr/ospf6d/ospf6_asbr.c:1516,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1522,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:1523,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/ospf6d/ospf6_asbr.c:1524,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:1525,1
    - Dst: ospf6_route_add_nexthop
      Src: /src/frr/ospf6d/ospf6_asbr.c:1528,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1530,1
    - Dst: ospf6_handle_external_lsa_origination
      Src: /src/frr/ospf6d/ospf6_asbr.c:1531,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1533,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 92
    argCount: 1
    argNames:
    - oa
    argTypes:
    - struct ospf6_area*
    assertStmts:
    - condition: (lsa->lock > 1)
      pos:
        line_end: 1348
        line_start: 1348
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    constantsTouched: []
    func_position:
      end: 1535
      start: 1333
    functionDepth: 3
    functionLinenumber: 1333
    functionLinenumberEnd: 1535
    functionName: ospf6_asbr_remove_externals_from_area
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - ROUTEMAP
    - ospf6_route_lookup
    - metric_type
    - ntohs
    - zlog_warn
    - metric_value
    - while
    - htonl
    - ospf6_lsdb_next
    - ospf6_handle_external_lsa_origination
    - IN6_IS_ADDR_UNSPECIFIED
    - memset
    - XCALLOC
    - ospf6_lsdb_remove
    - ospf6_route_create
    - zlog_debug
    - ospf6_asbr_routemap_update
    - ospf6_asbr_redistribute_remove
    - route_node_match
    - prefix_copy
    - ospf6_route_add
    - ROUTEMAP_NAME
    - assert
    - route_unlock_node
    - ospf6_lsdb_head
    - ospf6_zebra_is_redistribute
    - ospf6_asbr_status_update
    - ZROUTE_NAME
    - memcpy
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - IN6_IS_ADDR_LINKLOCAL
    - ospf6_route_add_nexthop
    - route_map_apply
    - ALL_LIST_ELEMENTS
    - ospf6_external_aggr_match
    - ospf6_asbr_redistribute_add
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_remove_externals_from_area(struct ospf6_area *oa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1542,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:1542,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:1543,1
    - Dst: ospf6_external_lsa_purge
      Src: /src/frr/ospf6d/ospf6_asbr.c:1547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ospf6
    - id
    argTypes:
    - struct ospf6*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1537
    functionDepth: 3
    functionLinenumber: 1537
    functionLinenumberEnd: 1549
    functionName: ospf6_asbr_external_lsa_remove_by_id
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - htonl
    - ospf6_external_lsa_purge
    - ospf6_lsdb_lookup
    - htons
    linkageType: ''
    returnType: void
    signature: "void ospf6_asbr_external_lsa_remove_by_id(struct ospf6 *ospf6,\n\t\t\t\t\t
      uint32_t id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/ospf6d/ospf6_asbr.c:1555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - aggr
    - rt
    argTypes:
    - struct ospf6_external_aggr_rt*
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1551
    functionDepth: 3
    functionLinenumber: 1551
    functionLinenumberEnd: 1557
    functionName: ospf6_link_route_to_aggr
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: void
    signature: "void ospf6_link_route_to_aggr(struct ospf6_external_aggr_rt *aggr,\n\t\t\tstruct
      ospf6_route *rt)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1565,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1569,1
    - Dst: ospf6_asbr_external_lsa_remove_by_id
      Src: /src/frr/ospf6d/ospf6_asbr.c:1573,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1577,1
    - Dst: ospf6_zebra_route_update_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1581,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:1583,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:1585,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:1591,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ospf6
    - aggr
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1559
    functionDepth: 7
    functionLinenumber: 1559
    functionLinenumberEnd: 1592
    functionName: ospf6_asbr_summary_remove_lsa_and_route
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - zlog_debug
    - ospf6_zebra_route_update_remove
    - ospf6_asbr_external_lsa_remove_by_id
    - UNSET_FLAG
    - XFREE
    - ospf6_route_delete
    linkageType: ''
    returnType: void
    signature: "void ospf6_asbr_summary_remove_lsa_and_route(struct ospf6 *ospf6,\n\t\t\t\t\tstruct
      ospf6_external_aggr_rt *aggr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1600,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1604,1
    - Dst: hash_release
      Src: /src/frr/ospf6d/ospf6_asbr.c:1606,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:1612,1
    - Dst: ospf6_asbr_summary_remove_lsa_and_route
      Src: /src/frr/ospf6d/ospf6_asbr.c:1613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ospf6
    - aggr
    - rt
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1594
    functionDepth: 8
    functionLinenumber: 1594
    functionLinenumberEnd: 1614
    functionName: ospf6_unlink_route_from_aggr
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - hash_release
    - zlog_debug
    - OSPF6_EXTERNAL_RT_COUNT
    - ospf6_asbr_summary_remove_lsa_and_route
    linkageType: ''
    returnType: void
    signature: "void ospf6_unlink_route_from_aggr(struct ospf6 *ospf6,\n\t\t\t     struct
      ospf6_external_aggr_rt *aggr,\n\t\t\t     struct ospf6_route *rt)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1622,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1625,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:1630,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1634,1
    - Dst: ospf6_asbr_external_lsa_remove_by_id
      Src: /src/frr/ospf6d/ospf6_asbr.c:1642,1
    - Dst: ospf6_unlink_route_from_aggr
      Src: /src/frr/ospf6d/ospf6_asbr.c:1644,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:1647,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1650,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:1651,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:1653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - type
    - ifindex
    - prefix
    - ospf6
    argTypes:
    - int
    - ifindex_t
    - struct prefix*
    - struct ospf6*
    assertStmts:
    - condition: (info)
      pos:
        line_end: 1629
        line_start: 1629
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    constantsTouched: []
    func_position:
      end: 1654
      start: 1616
    functionDepth: 9
    functionLinenumber: 1616
    functionLinenumberEnd: 1654
    functionName: ospf6_asbr_redistribute_remove
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 4
    functionsReached:
    - ospf6_route_lookup
    - zlog_debug
    - ospf6_asbr_external_lsa_remove_by_id
    - XFREE
    - ospf6_asbr_status_update
    - ospf6_unlink_route_from_aggr
    - ospf6_route_remove
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_asbr_redistribute_remove(int type, ifindex_t ifindex,\n\t\t\t\t
      \   struct prefix *prefix, struct ospf6 *ospf6)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1750,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1756,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1756,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1758,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1760,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1761,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1762,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1762,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1763,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - vty
    - ospf6
    argTypes:
    - struct vty*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1767
      start: 1744
    functionDepth: 3
    functionLinenumber: 1744
    functionLinenumberEnd: 1767
    functionName: ospf6_redistribute_config_write
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_redist_lookup
    - ROUTEMAP_NAME
    - vty_out
    - ZROUTE_NAME
    linkageType: ''
    returnType: int
    signature: int ospf6_redistribute_config_write(struct vty *vty, struct ospf6 *ospf6)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:1782,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:1783,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:1784,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1791,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1795,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_asbr.c:1803,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1804,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1805,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1806,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1808,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1810,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1813,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1815,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1817,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1818,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1820,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1822,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1824,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1825,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1826,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1830,1
    - Dst: ZROUTE_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:1831,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1835,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1838,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1839,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:1841,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 5
    argNames:
    - vty
    - ospf6
    - json_array
    - json
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6*
    - json_object*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1842
      start: 1769
    functionDepth: 3
    functionLinenumber: 1769
    functionLinenumberEnd: 1842
    functionName: ospf6_redistribute_show_config
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - vty_out
    - memset
    - json_object_array_add
    - ROUTEMAP
    - json_object_int_add
    - ospf6_route_next
    - ospf6_redist_lookup
    - json_object_string_add
    - json_object_object_add
    - ROUTEMAP_NAME
    - ospf6_route_head
    - ZROUTE_NAME
    linkageType: ''
    returnType: void
    signature: "void ospf6_redistribute_show_config(struct vty *vty, struct ospf6
      *ospf6,\n\t\t\t\t\t   json_object *json_array,\n\t\t\t\t\t   json_object *json,
      bool use_json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospf6d/ospf6_asbr.c:1859,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1861,1
    - Dst: ospf6_asbr_redistribute_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:1866,1
    - Dst: zclient_redistribute_default
      Src: /src/frr/ospf6d/ospf6_asbr.c:1875,1
    - Dst: ospf6_asbr_redistribute_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:1880,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - ospf6
    - originate
    argTypes:
    - struct ospf6*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1885
      start: 1844
    functionDepth: 10
    functionLinenumber: 1844
    functionLinenumberEnd: 1885
    functionName: ospf6_redistribute_default_set
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - zclient_redistribute_default
    - ospf6_asbr_redistribute_remove
    - ospf6_asbr_redistribute_add
    linkageType: ''
    returnType: void
    signature: void ospf6_redistribute_default_set(struct ospf6 *ospf6, int originate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:1984,1
    - Dst: prefix_list_apply
      Src: /src/frr/ospf6d/ospf6_asbr.c:1988,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1976
    functionDepth: 3
    functionLinenumber: 1976
    functionLinenumberEnd: 1990
    functionName: ospf6_routemap_rule_match_address_prefixlist
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - prefix_list_lookup
    - prefix_list_apply
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t ospf6_routemap_rule_match_address_prefixlist(void
      *rule,\n\t\t\t\t\t     const struct prefix *prefix,\n\n\t\t\t\t\t     void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:1995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1992
    functionDepth: 1
    functionLinenumber: 1992
    functionLinenumberEnd: 1996
    functionName: ospf6_routemap_rule_match_address_prefixlist_compile
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: 'void *

      ospf6_routemap_rule_match_address_prefixlist_compile(const char *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2001
      start: 1998
    functionDepth: 0
    functionLinenumber: 1998
    functionLinenumberEnd: 2001
    functionName: ospf6_routemap_rule_match_address_prefixlist_free
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_routemap_rule_match_address_prefixlist_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_name
      Src: /src/frr/ospf6d/ospf6_asbr.c:2024,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 2014
    functionDepth: 3
    functionLinenumber: 2014
    functionLinenumberEnd: 2030
    functionName: ospf6_routemap_rule_match_interface
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t ospf6_routemap_rule_match_interface(void
      *rule, const struct prefix *prefix,\n\t\t\t\t    void *object)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2037
      start: 2034
    functionDepth: 1
    functionLinenumber: 2034
    functionLinenumberEnd: 2037
    functionName: ospf6_routemap_rule_match_interface_compile
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *ospf6_routemap_rule_match_interface_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 2040
    functionDepth: 0
    functionLinenumber: 2040
    functionLinenumberEnd: 2043
    functionName: ospf6_routemap_rule_match_interface_free
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_routemap_rule_match_interface_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2055
    functionDepth: 0
    functionLinenumber: 2055
    functionLinenumberEnd: 2066
    functionName: ospf6_routemap_rule_match_tag
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t ospf6_routemap_rule_match_tag(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:2083,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2076
    functionDepth: 0
    functionLinenumber: 2076
    functionLinenumberEnd: 2089
    functionName: ospf6_routemap_rule_set_metric_type
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t ospf6_routemap_rule_set_metric_type(void
      *rule, const struct prefix *prefix,\n\t\t\t\t    void *object)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:2093,1
    - Dst: strcmp
      Src: /src/frr/ospf6d/ospf6_asbr.c:2093,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2095,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2096
      start: 2091
    functionDepth: 1
    functionLinenumber: 2091
    functionLinenumberEnd: 2096
    functionName: ospf6_routemap_rule_set_metric_type_compile
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - strcmp
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *ospf6_routemap_rule_set_metric_type_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2098
    functionDepth: 0
    functionLinenumber: 2098
    functionLinenumberEnd: 2101
    functionName: ospf6_routemap_rule_set_metric_type_free
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_routemap_rule_set_metric_type_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/frr/ospf6d/ospf6_asbr.c:2118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2120
      start: 2111
    functionDepth: 0
    functionLinenumber: 2111
    functionLinenumberEnd: 2120
    functionName: ospf6_routemap_rule_set_metric
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - atoi
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t ospf6_routemap_rule_set_metric(void *rule,
      const struct prefix *prefix,\n\t\t\t       void *object)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/ospf6d/ospf6_asbr.c:2126,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2122
    functionDepth: 1
    functionLinenumber: 2122
    functionLinenumberEnd: 2130
    functionName: ospf6_routemap_rule_set_metric_compile
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - strtoul
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *ospf6_routemap_rule_set_metric_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2132
    functionDepth: 0
    functionLinenumber: 2132
    functionLinenumberEnd: 2135
    functionName: ospf6_routemap_rule_set_metric_free
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_routemap_rule_set_metric_free(void *rule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_asbr.c:2153,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_asbr.c:2154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rule
    - prefix
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2145
    functionDepth: 0
    functionLinenumber: 2145
    functionLinenumberEnd: 2159
    functionName: ospf6_routemap_rule_set_forwarding
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - memset
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: "enum route_map_cmd_result_t ospf6_routemap_rule_set_forwarding(void
      *rule, const struct prefix *prefix,\n\t\t\t\t   void *object)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/ospf6d/ospf6_asbr.c:2164,1
    - Dst: XSTRDUP
      Src: /src/frr/ospf6d/ospf6_asbr.c:2166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2161
    functionDepth: 1
    functionLinenumber: 2161
    functionLinenumberEnd: 2167
    functionName: ospf6_routemap_rule_set_forwarding_compile
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void *ospf6_routemap_rule_set_forwarding_compile(const char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rule
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2169
    functionDepth: 0
    functionLinenumber: 2169
    functionLinenumberEnd: 2172
    functionName: ospf6_routemap_rule_set_forwarding_free
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_routemap_rule_set_forwarding_free(void *rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rule
    - p
    - object
    argTypes:
    - void*
    - struct prefix*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2191
      start: 2182
    functionDepth: 0
    functionLinenumber: 2182
    functionLinenumberEnd: 2191
    functionName: ospf6_routemap_rule_set_tag
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum route_map_cmd_result_t
    signature: enum route_map_cmd_result_t ospf6_routemap_rule_set_tag(void *rule,
      const struct prefix *p, void *object)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/ospf6d/ospf6_asbr.c:2274,1
    - Dst: route_map_add_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2276,1
    - Dst: route_map_delete_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2277,1
    - Dst: route_map_event_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2278,1
    - Dst: route_map_set_metric_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2280,1
    - Dst: route_map_no_set_metric_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2281,1
    - Dst: route_map_set_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2283,1
    - Dst: route_map_no_set_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2284,1
    - Dst: route_map_match_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2286,1
    - Dst: route_map_no_match_tag_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2287,1
    - Dst: route_map_match_ipv6_address_prefix_list_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2289,1
    - Dst: route_map_no_match_ipv6_address_prefix_list_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2290,1
    - Dst: route_map_match_interface_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2292,1
    - Dst: route_map_no_match_interface_hook
      Src: /src/frr/ospf6d/ospf6_asbr.c:2293,1
    - Dst: route_map_install_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:2295,1
    - Dst: route_map_install_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:2297,1
    - Dst: route_map_install_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:2298,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2300,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2301,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2302,1
    - Dst: route_map_install_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2303,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2306,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2307,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2310,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2272
    functionDepth: 1
    functionLinenumber: 2272
    functionLinenumberEnd: 2312
    functionName: ospf6_routemap_init
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - route_map_event_hook
    - route_map_set_tag_hook
    - route_map_no_set_metric_hook
    - route_map_no_match_ipv6_address_prefix_list_hook
    - route_map_match_tag_hook
    - route_map_match_ipv6_address_prefix_list_hook
    - route_map_init
    - route_map_no_match_interface_hook
    - route_map_install_match
    - route_map_delete_hook
    - route_map_install_set
    - route_map_no_match_tag_hook
    - install_element
    - route_map_add_hook
    - route_map_set_metric_hook
    - route_map_no_set_tag_hook
    - route_map_match_interface_hook
    linkageType: ''
    returnType: void
    signature: void ospf6_routemap_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:2326,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_asbr.c:2330,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2338,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_asbr.c:2343,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2345,1
    - Dst: strlcat
      Src: /src/frr/ospf6d/ospf6_asbr.c:2347,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - lsa
    - buf
    - buflen
    - pos
    argTypes:
    - struct ospf6_lsa*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 2316
    functionDepth: 2
    functionLinenumber: 2316
    functionLinenumberEnd: 2352
    functionName: ospf6_as_external_lsa_get_prefix_str
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - strlcat
    - OSPF6_LSA_HEADER_END
    - snprintf
    - inet_ntop
    - OSPF6_PREFIX_SPACE
    - ospf6_prefix_in6_addr
    linkageType: ''
    returnType: char
    signature: "char *ospf6_as_external_lsa_get_prefix_str(struct ospf6_lsa *lsa,\n\t\t\t\t\t\t
      \ char *buf, int buflen,\n\t\t\t\t\t\t  int pos)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:2360,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:2361,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2365,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2366,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2368,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2370,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2374,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2375,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:2376,1
    - Dst: ospf6_prefix_options_printbuf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2377,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2379,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2380,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:2382,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2383,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2384,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2388,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2390,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2391,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2392,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2394,1
    - Dst: json_object_boolean_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2398,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2400,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2401,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2402,1
    - Dst: ospf6_as_external_lsa_get_tag
      Src: /src/frr/ospf6d/ospf6_asbr.c:2403,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2405,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2406,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:2407,1
    - Dst: ospf6_prefix_options_printbuf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2409,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2411,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2413,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_asbr.c:2414,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2416,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2417,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2421,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2422,1
    - Dst: ospf6_as_external_lsa_get_prefix_str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2423,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2428,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2429,1
    - Dst: ospf6_as_external_lsa_get_tag
      Src: /src/frr/ospf6d/ospf6_asbr.c:2430,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts:
    - condition: (lsa->header)
      pos:
        line_end: 2359
        line_start: 2359
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    constantsTouched: []
    func_position:
      end: 2435
      start: 2354
    functionDepth: 3
    functionLinenumber: 2354
    functionLinenumberEnd: 2435
    functionName: ospf6_as_external_lsa_show
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - ospf6_prefix_options_printbuf
    - json_object_boolean_add
    - vty_out
    - snprintf
    - CHECK_FLAG
    - json_object_int_add
    - ntohs
    - json_object_string_add
    - ospf6_as_external_lsa_get_prefix_str
    - OSPF6_ASBR_METRIC
    - ospf6_as_external_lsa_get_tag
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf6_as_external_lsa_show(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t\t
      \     json_object *json_obj, bool use_json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_asbr.c:2448,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_asbr.c:2449,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_asbr.c:2450,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/ospf6d/ospf6_asbr.c:2451,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_asbr.c:2452,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2455,1
    - Dst: ospf6_route_get_first_nh_index
      Src: /src/frr/ospf6d/ospf6_asbr.c:2456,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_asbr.c:2459,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_asbr.c:2460,1
    - Dst: zebra_route_char
      Src: /src/frr/ospf6d/ospf6_asbr.c:2461,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2462,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2463,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2464,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2465,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2467,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2472,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2474,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2477,1
    - Dst: zebra_route_char
      Src: /src/frr/ospf6d/ospf6_asbr.c:2478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 4
    argNames:
    - vty
    - route
    - json_array
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_route*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2484
      start: 2437
    functionDepth: 4
    functionLinenumber: 2437
    functionLinenumberEnd: 2484
    functionName: ospf6_asbr_external_route_show
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - prefix2str
    - IN6_IS_ADDR_UNSPECIFIED
    - json_object_array_add
    - snprintf
    - vty_out
    - ospf6_route_get_first_nh_index
    - zebra_route_char
    - json_object_int_add
    - inet_ntop
    - json_object_string_add
    - ntohl
    linkageType: ''
    returnType: void
    signature: "void ospf6_asbr_external_route_show(struct vty *vty,\n\t\t\t\t\t   struct
      ospf6_route *route,\n\t\t\t\t\t   json_object *json_array,\n\t\t\t\t\t   bool
      use_json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_routemap_init
      Src: /src/frr/ospf6d/ospf6_asbr.c:2560,1
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_asbr.c:2562,1
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_asbr.c:2563,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2565,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2567,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2568,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2570,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2558
    functionDepth: 2
    functionLinenumber: 2558
    functionLinenumberEnd: 2572
    functionName: ospf6_asbr_init
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - install_element
    - ospf6_install_lsa_handler
    - ospf6_routemap_init
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:2580,1
    - Dst: ospf6_asbr_redistribute_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:2585,1
    - Dst: ospf6_redist_del
      Src: /src/frr/ospf6d/ospf6_asbr.c:2586,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:2588,1
    - Dst: ospf6_asbr_routemap_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:2590,1
    - Dst: ospf6_redist_del
      Src: /src/frr/ospf6d/ospf6_asbr.c:2591,1
    - Dst: ospf6_redistribute_default_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2592,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2594
      start: 2574
    functionDepth: 11
    functionLinenumber: 2574
    functionLinenumberEnd: 2594
    functionName: ospf6_asbr_redistribute_disable
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_redist_del
    - ospf6_redist_lookup
    - ospf6_asbr_redistribute_unset
    - ospf6_redistribute_default_set
    - ospf6_asbr_routemap_unset
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_redistribute_disable(struct ospf6 *ospf6)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:2606,1
    - Dst: ospf6_redistribute_default_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2611,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:2615,1
    - Dst: strlcpy
      Src: /src/frr/ospf6d/ospf6_asbr.c:2616,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:2616,1
    - Dst: ospf6_asbr_redistribute_unset
      Src: /src/frr/ospf6d/ospf6_asbr.c:2618,1
    - Dst: ospf6_asbr_routemap_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2620,1
    - Dst: ospf6_asbr_redistribute_set
      Src: /src/frr/ospf6d/ospf6_asbr.c:2621,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2623
      start: 2596
    functionDepth: 11
    functionLinenumber: 2596
    functionLinenumberEnd: 2623
    functionName: ospf6_asbr_redistribute_reset
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - ospf6_asbr_routemap_set
    - ospf6_redist_lookup
    - ospf6_asbr_redistribute_unset
    - ospf6_redistribute_default_set
    - ospf6_asbr_redistribute_set
    - ROUTEMAP_NAME
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_redistribute_reset(struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_finish
      Src: /src/frr/ospf6d/ospf6_asbr.c:2628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2629
      start: 2625
    functionDepth: 4
    functionLinenumber: 2625
    functionLinenumberEnd: 2629
    functionName: ospf6_asbr_terminate
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - route_map_finish
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_terminate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2661
      start: 2656
    functionDepth: 2
    functionLinenumber: 2656
    functionLinenumberEnd: 2661
    functionName: config_write_ospf6_debug_asbr
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_asbr(struct vty *vty)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2667,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2669,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:2671,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2673,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2678,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2681,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:2683,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2684,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_asbr.c:2684,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_asbr.c:2686,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - vty
    - o
    argTypes:
    - struct vty*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 2663
    functionDepth: 3
    functionLinenumber: 2663
    functionLinenumberEnd: 2687
    functionName: ospf6_default_originate_write
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_redist_lookup
    - ROUTEMAP_NAME
    - vty_out
    linkageType: ''
    returnType: void
    signature: void ospf6_default_originate_write(struct vty *vty, struct ospf6 *o)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_default_originate_write
      Src: /src/frr/ospf6d/ospf6_asbr.c:2696,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - vty
    - o
    argTypes:
    - struct vty*
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2699
      start: 2689
    functionDepth: 4
    functionLinenumber: 2689
    functionLinenumberEnd: 2699
    functionName: ospf6_distribute_config_write
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_default_originate_write
    linkageType: ''
    returnType: int
    signature: int ospf6_distribute_config_write(struct vty *vty, struct ospf6 *o)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2703,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2704,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2705,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_asbr.c:2706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2701
    functionDepth: 1
    functionLinenumber: 2701
    functionLinenumberEnd: 2707
    functionName: install_element_ospf6_debug_asbr
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_asbr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:2727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ospf6
    - aggr
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2710
    functionDepth: 0
    functionLinenumber: 2710
    functionLinenumberEnd: 2728
    functionName: ospf6_fill_aggr_route_details
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: "void ospf6_fill_aggr_route_details(struct ospf6 *ospf6,\n\t\t\t\t
      \  struct ospf6_external_aggr_rt *aggr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_asbr.c:2743,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2746,1
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_asbr.c:2748,1
    - Dst: ospf6_fill_aggr_route_details
      Src: /src/frr/ospf6d/ospf6_asbr.c:2755,1
    - Dst: ospf6_add_route_nexthop_blackhole
      Src: /src/frr/ospf6d/ospf6_asbr.c:2758,1
    - Dst: ospf6_zebra_route_update_remove
      Src: /src/frr/ospf6d/ospf6_asbr.c:2762,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:2765,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:2767,1
    - Dst: ospf6_zebra_route_update_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:2770,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - ospf6
    - aggr
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2771
      start: 2730
    functionDepth: 7
    functionLinenumber: 2730
    functionLinenumberEnd: 2771
    functionName: ospf6_summary_add_aggr_route_and_blackhole
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - ospf6_fill_aggr_route_details
    - ospf6_route_delete
    - ospf6_route_create
    - SET_FLAG
    - ospf6_zebra_route_update_remove
    - ospf6_zebra_route_update_add
    - XFREE
    - ospf6_add_route_nexthop_blackhole
    linkageType: ''
    returnType: void
    signature: "void ospf6_summary_add_aggr_route_and_blackhole(struct ospf6 *ospf6,\n\t\t\t\t\t
      \  struct ospf6_external_aggr_rt *aggr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2780,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2786,1
    - Dst: ospf6_summary_add_aggr_route_and_blackhole
      Src: /src/frr/ospf6d/ospf6_asbr.c:2790,1
    - Dst: ospf6_originate_type5_type7_lsas
      Src: /src/frr/ospf6d/ospf6_asbr.c:2793,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2796,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2798,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ospf6
    - aggr
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2800
      start: 2773
    functionDepth: 8
    functionLinenumber: 2773
    functionLinenumberEnd: 2800
    functionName: ospf6_originate_new_aggr_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_summary_add_aggr_route_and_blackhole
    - zlog_debug
    - ospf6_originate_type5_type7_lsas
    - SET_FLAG
    linkageType: ''
    returnType: void
    signature: "void ospf6_originate_new_aggr_lsa(struct ospf6 *ospf6,\n\t\t\t\t\t
      struct ospf6_external_aggr_rt *aggr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2807,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2809,1
    - Dst: ospf6_asbr_summary_remove_lsa_and_route
      Src: /src/frr/ospf6d/ospf6_asbr.c:2811,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:2819,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2821,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2826,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2828,1
    - Dst: ospf6_originate_new_aggr_lsa
      Src: /src/frr/ospf6d/ospf6_asbr.c:2831,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ospf6
    - aggr
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2802
    functionDepth: 9
    functionLinenumber: 2802
    functionLinenumberEnd: 2835
    functionName: ospf6_aggr_handle_advertise_change
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - OSPF6_EXTERNAL_RT_COUNT
    - ospf6_originate_new_aggr_lsa
    - ospf6_asbr_summary_remove_lsa_and_route
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void ospf6_aggr_handle_advertise_change(struct ospf6 *ospf6,\n\t\tstruct
      ospf6_external_aggr_rt *aggr)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2852,1
    - Dst: ospf6_unlink_route_from_aggr
      Src: /src/frr/ospf6d/ospf6_asbr.c:2862,1
    - Dst: ospf6_link_route_to_aggr
      Src: /src/frr/ospf6d/ospf6_asbr.c:2867,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:2871,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:2873,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:2873,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:2874,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:2877,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:2877,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:2878,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2881,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2886,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2893,1
    - Dst: ospf6_external_lsa_purge
      Src: /src/frr/ospf6d/ospf6_asbr.c:2895,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2902,1
    - Dst: ospf6_asbr_summary_remove_lsa_and_route
      Src: /src/frr/ospf6d/ospf6_asbr.c:2904,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2907,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2910,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2918,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_asbr.c:2920,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:2925,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:2929,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:2931,1
    - Dst: ospf6_as_external_lsa_get_tag
      Src: /src/frr/ospf6d/ospf6_asbr.c:2932,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2933,1
    - Dst: ospf6_fill_aggr_route_details
      Src: /src/frr/ospf6d/ospf6_asbr.c:2937,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2947,1
    - Dst: ospf6_originate_type5_type7_lsas
      Src: /src/frr/ospf6d/ospf6_asbr.c:2955,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2958,1
    - Dst: prefix_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:2969,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:2971,1
    - Dst: ospf6_summary_add_aggr_route_and_blackhole
      Src: /src/frr/ospf6d/ospf6_asbr.c:2979,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:2981,1
    - Dst: ospf6_originate_new_aggr_lsa
      Src: /src/frr/ospf6d/ospf6_asbr.c:2986,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 67
    argCount: 3
    argNames:
    - ospf6
    - aggr
    - rt
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    - struct ospf6_route*
    assertStmts:
    - condition: (aggr_lsa)
      pos:
        line_end: 2924
        line_start: 2924
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    - condition: (info)
      pos:
        line_end: 2870
        line_start: 2870
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    constantsTouched: []
    func_position:
      end: 2987
      start: 2837
    functionDepth: 9
    functionLinenumber: 2837
    functionLinenumberEnd: 2987
    functionName: ospf6_originate_summary_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - htons
    - ospf6_originate_type5_type7_lsas
    - zlog_warn
    - htonl
    - ospf6_link_route_to_aggr
    - ospf6_as_external_lsa_get_tag
    - ospf6_external_lsa_purge
    - ospf6_fill_aggr_route_details
    - ospf6_summary_add_aggr_route_and_blackhole
    - zlog_debug
    - ospf6_unlink_route_from_aggr
    - assert
    - prefix_same
    - ospf6_originate_new_aggr_lsa
    - UNSET_FLAG
    - OSPF6_ASBR_METRIC
    - CHECK_FLAG
    - ospf6_asbr_summary_remove_lsa_and_route
    - SET_FLAG
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_originate_summary_lsa(struct ospf6 *ospf6,\n\t\t\t    struct
      ospf6_external_aggr_rt *aggr,\n\t\t\t    struct ospf6_route *rt)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_asbr.c:3001,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3002,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:3007,1
    - Dst: ospf6_external_aggr_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:3009,1
    - Dst: ospf6_originate_summary_lsa
      Src: /src/frr/ospf6d/ospf6_asbr.c:3012,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3018,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:3018,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:3019,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3023,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_asbr.c:3025,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_asbr.c:3026,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:3033,1
    - Dst: ospf6_originate_type5_type7_lsas
      Src: /src/frr/ospf6d/ospf6_asbr.c:3035,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts:
    - condition: (ospf6)
      pos:
        line_end: 3006
        line_start: 3006
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    constantsTouched: []
    func_position:
      end: 3036
      start: 2989
    functionDepth: 10
    functionLinenumber: 2989
    functionLinenumberEnd: 3036
    functionName: ospf6_aggr_handle_external_info
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - htonl
    - htons
    - ospf6_originate_type5_type7_lsas
    - IS_OSPF6_DEBUG_ORIGINATE
    - zlog_debug
    - EVENT_OFF
    - ospf6_originate_summary_lsa
    - ospf6_external_aggr_match
    - ospf6_lsdb_lookup
    - assert
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_aggr_handle_external_info(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3044,1
    - Dst: ospf6_asbr_summary_remove_lsa_and_route
      Src: /src/frr/ospf6d/ospf6_asbr.c:3048,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:3051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ospf6
    - rn
    argTypes:
    - struct ospf6*
    - struct route_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3052
      start: 3038
    functionDepth: 8
    functionLinenumber: 3038
    functionLinenumberEnd: 3052
    functionName: ospf6_asbr_summary_config_delete
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - zlog_debug
    - ospf6_asbr_summary_remove_lsa_and_route
    linkageType: ''
    returnType: void
    signature: "void ospf6_asbr_summary_config_delete(struct ospf6 *ospf6,\n\t\t\t\t
      \     struct route_node *rn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3065,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:3066,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:3067,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_asbr.c:3070,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_asbr.c:3079,1
    - Dst: OSPF6_ASBR_METRIC
      Src: /src/frr/ospf6d/ospf6_asbr.c:3080,1
    - Dst: ospf6_as_external_lsa_get_tag
      Src: /src/frr/ospf6d/ospf6_asbr.c:3081,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3082,1
    - Dst: ospf6_fill_aggr_route_details
      Src: /src/frr/ospf6d/ospf6_asbr.c:3086,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3098,1
    - Dst: ospf6_originate_type5_type7_lsas
      Src: /src/frr/ospf6d/ospf6_asbr.c:3107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ospf6
    - aggr
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3113
      start: 3054
    functionDepth: 2
    functionLinenumber: 3054
    functionLinenumberEnd: 3113
    functionName: ospf6_handle_external_aggr_modify
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - htons
    - CHECK_FLAG
    - ospf6_fill_aggr_route_details
    - ospf6_originate_type5_type7_lsas
    - zlog_warn
    - zlog_debug
    - htonl
    - OSPF6_ASBR_METRIC
    - ospf6_as_external_lsa_get_tag
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: int
    signature: "int ospf6_handle_external_aggr_modify(struct ospf6 *ospf6,\n\t\t\t\t
      \ struct ospf6_external_aggr_rt *aggr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3121,1
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_asbr.c:3123,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:3123,1
    - Dst: ospf6_asbr_summary_config_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:3133,1
    - Dst: hash_clean_and_free
      Src: /src/frr/ospf6d/ospf6_asbr.c:3135,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:3138,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3145,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3147,1
    - Dst: ospf6_handle_external_aggr_modify
      Src: /src/frr/ospf6d/ospf6_asbr.c:3150,1
    - Dst: ospf6_aggr_handle_advertise_change
      Src: /src/frr/ospf6d/ospf6_asbr.c:3159,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3162
      start: 3115
    functionDepth: 10
    functionLinenumber: 3115
    functionLinenumberEnd: 3162
    functionName: ospf6_handle_external_aggr_update
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_asbr_summary_config_delete
    - hash_clean_and_free
    - CHECK_FLAG
    - route_top
    - ospf6_handle_external_aggr_modify
    - route_next
    - zlog_debug
    - XFREE
    - ospf6_aggr_handle_advertise_change
    linkageType: ''
    returnType: void
    signature: void ospf6_handle_external_aggr_update(struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3171
      start: 3164
    functionDepth: 0
    functionLinenumber: 3164
    functionLinenumberEnd: 3171
    functionName: ospf6_aggr_unlink_external_info
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ospf6_aggr_unlink_external_info(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/ospf6d/ospf6_asbr.c:3175,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3179,1
    - Dst: XFREE
      Src: /src/frr/ospf6d/ospf6_asbr.c:3183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - aggr
    argTypes:
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3184
      start: 3173
    functionDepth: 2
    functionLinenumber: 3173
    functionLinenumberEnd: 3184
    functionName: ospf6_external_aggregator_free
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    - zlog_debug
    - XFREE
    linkageType: ''
    returnType: void
    signature: void ospf6_external_aggregator_free(struct ospf6_external_aggr_rt *aggr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_asbr.c:3196,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:3196,1
    - Dst: ospf6_asbr_summary_config_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:3206,1
    - Dst: ospf6_external_aggregator_free
      Src: /src/frr/ospf6d/ospf6_asbr.c:3207,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3209
      start: 3186
    functionDepth: 9
    functionLinenumber: 3186
    functionLinenumberEnd: 3209
    functionName: ospf6_delete_all_marked_aggregators
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_asbr_summary_config_delete
    - ospf6_external_aggregator_free
    - route_top
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf6_delete_all_marked_aggregators(struct ospf6 *ospf6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_find_external_lsa
      Src: /src/frr/ospf6d/ospf6_asbr.c:3225,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_asbr.c:3228,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_asbr.c:3229,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3233,1
    - Dst: ospf6_originate_type5_type7_lsas
      Src: /src/frr/ospf6d/ospf6_asbr.c:3237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ospf6
    - rt
    argTypes:
    - struct ospf6*
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3239
      start: 3211
    functionDepth: 2
    functionLinenumber: 3211
    functionLinenumberEnd: 3239
    functionName: ospf6_handle_exnl_rt_after_aggr_del
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_originate_type5_type7_lsas
    - zlog_debug
    - EVENT_OFF
    - ospf6_find_external_lsa
    - event_add_event
    linkageType: ''
    returnType: void
    signature: "void ospf6_handle_exnl_rt_after_aggr_del(struct ospf6 *ospf6,\n\t\t\t\t\t
      \      struct ospf6_route *rt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:3253,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3255,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_asbr.c:3263,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3265,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_asbr.c:3265,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:3266,1
    - Dst: ospf6_external_lsa_purge
      Src: /src/frr/ospf6d/ospf6_asbr.c:3275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ospf6
    - aggr
    - rt
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    - struct ospf6_route*
    assertStmts:
    - condition: (info)
      pos:
        line_end: 3262
        line_start: 3262
        source_file: /src/frr/ospf6d/ospf6_asbr.c
    constantsTouched: []
    func_position:
      end: 3281
      start: 3241
    functionDepth: 3
    functionLinenumber: 3241
    functionLinenumberEnd: 3281
    functionName: ospf6_handle_aggregated_exnl_rt
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - prefix_same
    - htons
    - ospf6_external_lsa_purge
    - zlog_debug
    - htonl
    - ospf6_lsdb_lookup
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_handle_aggregated_exnl_rt(struct ospf6 *ospf6,\n\t\t\t\t\t
      \  struct ospf6_external_aggr_rt *aggr,\n\t\t\t\t\t   struct ospf6_route *rt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_delete_all_marked_aggregators
      Src: /src/frr/ospf6d/ospf6_asbr.c:3293,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_asbr.c:3295,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:3296,1
    - Dst: is_default_prefix
      Src: /src/frr/ospf6d/ospf6_asbr.c:3301,1
    - Dst: ospf6_external_aggr_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:3304,1
    - Dst: ospf6_originate_summary_lsa
      Src: /src/frr/ospf6d/ospf6_asbr.c:3316,1
    - Dst: ospf6_handle_aggregated_exnl_rt
      Src: /src/frr/ospf6d/ospf6_asbr.c:3321,1
    - Dst: ospf6_handle_exnl_rt_after_aggr_del
      Src: /src/frr/ospf6d/ospf6_asbr.c:3329,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3332
      start: 3283
    functionDepth: 10
    functionLinenumber: 3283
    functionLinenumberEnd: 3332
    functionName: ospf6_handle_external_aggr_add
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - is_default_prefix
    - ospf6_handle_aggregated_exnl_rt
    - ospf6_delete_all_marked_aggregators
    - ospf6_route_next
    - ospf6_originate_summary_lsa
    - ospf6_external_aggr_match
    - ospf6_route_head
    - ospf6_handle_exnl_rt_after_aggr_del
    linkageType: ''
    returnType: void
    signature: void ospf6_handle_external_aggr_add(struct ospf6 *ospf6)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3336,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3342,1
    - Dst: ospf6_handle_external_aggr_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:3348,1
    - Dst: ospf6_handle_external_aggr_update
      Src: /src/frr/ospf6d/ospf6_asbr.c:3352,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3357
      start: 3334
    functionDepth: 11
    functionLinenumber: 3334
    functionLinenumberEnd: 3357
    functionName: ospf6_asbr_summary_process
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_handle_external_aggr_update
    - ospf6_handle_external_aggr_add
    - zlog_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_summary_process(struct event *thread)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_asbr.c:3366,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3370,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3377,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_asbr.c:3379,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3384,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:3388,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - ospf6
    - aggr
    - operation
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    - ospf6_aggr_action_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3390
      start: 3359
    functionDepth: 1
    functionLinenumber: 3359
    functionLinenumberEnd: 3390
    functionName: ospf6_start_asbr_summary_delay_timer
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - event_is_scheduled
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: "void ospf6_start_asbr_summary_delay_timer(struct ospf6 *ospf6,\n\t\t\tstruct
      ospf6_external_aggr_rt *aggr,\n\t\t\tospf6_aggr_action_t operation)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3398,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:3404,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3406,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3409,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:3411,1
    - Dst: ospf6_start_asbr_summary_delay_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:3414,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ospf6
    - p
    argTypes:
    - struct ospf6*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3418
      start: 3392
    functionDepth: 5
    functionLinenumber: 3392
    functionLinenumberEnd: 3418
    functionName: ospf6_asbr_external_rt_advertise
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    - ospf6_start_asbr_summary_delay_timer
    - CHECK_FLAG
    - OSPF6_EXTERNAL_RT_COUNT
    - UNSET_FLAG
    linkageType: ''
    returnType: int
    signature: "int ospf6_asbr_external_rt_advertise(struct ospf6 *ospf6,\n\t\t\t\tstruct
      prefix *p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ospf6
    - interval
    argTypes:
    - struct ospf6*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3425
      start: 3420
    functionDepth: 0
    functionLinenumber: 3420
    functionLinenumberEnd: 3425
    functionName: ospf6_external_aggr_delay_timer_set
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ospf6_external_aggr_delay_timer_set(struct ospf6 *ospf6, uint16_t
      interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_hash_key
      Src: /src/frr/ospf6d/ospf6_asbr.c:3432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3427
    functionDepth: 2
    functionLinenumber: 3427
    functionLinenumberEnd: 3434
    functionName: ospf6_external_rt_hash_key
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ospf6_external_rt_hash_key(const void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prefix_same
      Src: /src/frr/ospf6d/ospf6_asbr.c:3441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3442
      start: 3436
    functionDepth: 2
    functionLinenumber: 3436
    functionLinenumberEnd: 3442
    functionName: ospf6_external_rt_hash_cmp
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - prefix_same
    linkageType: ''
    returnType: bool
    signature: bool ospf6_external_rt_hash_cmp(const void *d1, const void *d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/ospf6d/ospf6_asbr.c:3449,1
    - Dst: prefix_copy
      Src: /src/frr/ospf6d/ospf6_asbr.c:3452,1
    - Dst: hash_create
      Src: /src/frr/ospf6d/ospf6_asbr.c:3455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3459
      start: 3444
    functionDepth: 4
    functionLinenumber: 3444
    functionLinenumberEnd: 3459
    functionName: ospf6_external_aggr_new
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - hash_create
    - prefix_copy
    - XCALLOC
    linkageType: ''
    returnType: struct ospf6_external_aggr_rt
    signature: 'struct ospf6_external_aggr_rt *

      ospf6_external_aggr_new(struct prefix *p)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3467,1
    - Dst: route_node_get
      Src: /src/frr/ospf6d/ospf6_asbr.c:3471,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:3473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ospf6
    - aggr
    argTypes:
    - struct ospf6*
    - struct ospf6_external_aggr_rt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3476
      start: 3461
    functionDepth: 5
    functionLinenumber: 3461
    functionLinenumberEnd: 3476
    functionName: ospf6_external_aggr_add
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - zlog_debug
    - route_node_get
    linkageType: ''
    returnType: void
    signature: "void ospf6_external_aggr_add(struct ospf6 *ospf6,\n\t\tstruct ospf6_external_aggr_rt
      *aggr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_external_aggr_config_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3484,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3486,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3490,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:3495,1
    - Dst: ospf6_start_asbr_summary_delay_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:3498,1
    - Dst: ospf6_external_aggr_new
      Src: /src/frr/ospf6d/ospf6_asbr.c:3501,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3506,1
    - Dst: ospf6_external_aggr_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:3507,1
    - Dst: ospf6_start_asbr_summary_delay_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:3508,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ospf6
    - p
    argTypes:
    - struct ospf6*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3513
      start: 3478
    functionDepth: 6
    functionLinenumber: 3478
    functionLinenumberEnd: 3513
    functionName: ospf6_asbr_external_rt_no_advertise
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_start_asbr_summary_delay_timer
    - CHECK_FLAG
    - OSPF6_EXTERNAL_RT_COUNT
    - SET_FLAG
    - ospf6_external_aggr_config_lookup
    - ospf6_external_aggr_add
    - ospf6_external_aggr_new
    linkageType: ''
    returnType: int
    signature: "int ospf6_asbr_external_rt_no_advertise(struct ospf6 *ospf6,\n\t\t\t\tstruct
      prefix *p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3520,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:3522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ospf6
    - p
    argTypes:
    - struct ospf6*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3527
      start: 3515
    functionDepth: 5
    functionLinenumber: 3515
    functionLinenumberEnd: 3527
    functionName: ospf6_external_aggr_config_lookup
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    linkageType: ''
    returnType: struct ospf6_external_aggr_rt
    signature: 'struct ospf6_external_aggr_rt *

      ospf6_external_aggr_config_lookup(struct ospf6 *ospf6, struct prefix *p)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_external_aggr_config_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3535,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3538,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3540,1
    - Dst: ospf6_start_asbr_summary_delay_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:3551,1
    - Dst: ospf6_external_aggr_new
      Src: /src/frr/ospf6d/ospf6_asbr.c:3554,1
    - Dst: ospf6_external_aggr_add
      Src: /src/frr/ospf6d/ospf6_asbr.c:3562,1
    - Dst: ospf6_start_asbr_summary_delay_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:3563,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - ospf6
    - p
    - tag
    - metric
    - mtype
    argTypes:
    - struct ospf6*
    - struct prefix*
    - route_tag_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3568
      start: 3530
    functionDepth: 6
    functionLinenumber: 3530
    functionLinenumberEnd: 3568
    functionName: ospf6_external_aggr_config_set
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_start_asbr_summary_delay_timer
    - CHECK_FLAG
    - UNSET_FLAG
    - ospf6_external_aggr_config_lookup
    - ospf6_external_aggr_add
    - ospf6_external_aggr_new
    linkageType: ''
    returnType: int
    signature: "int ospf6_external_aggr_config_set(struct ospf6 *ospf6, struct prefix
      *p,\n\t\t\t\t      route_tag_t tag, int metric, int mtype)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/ospf6d/ospf6_asbr.c:3576,1
    - Dst: route_unlock_node
      Src: /src/frr/ospf6d/ospf6_asbr.c:3582,1
    - Dst: OSPF6_EXTERNAL_RT_COUNT
      Src: /src/frr/ospf6d/ospf6_asbr.c:3584,1
    - Dst: ospf6_asbr_summary_config_delete
      Src: /src/frr/ospf6d/ospf6_asbr.c:3585,1
    - Dst: ospf6_external_aggregator_free
      Src: /src/frr/ospf6d/ospf6_asbr.c:3586,1
    - Dst: ospf6_start_asbr_summary_delay_timer
      Src: /src/frr/ospf6d/ospf6_asbr.c:3590,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ospf6
    - p
    argTypes:
    - struct ospf6*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3594
      start: 3570
    functionDepth: 9
    functionLinenumber: 3570
    functionLinenumberEnd: 3594
    functionName: ospf6_external_aggr_config_unset
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 0
    functionsReached:
    - ospf6_asbr_summary_config_delete
    - route_unlock_node
    - route_node_lookup
    - ospf6_start_asbr_summary_delay_timer
    - OSPF6_EXTERNAL_RT_COUNT
    - ospf6_external_aggregator_free
    linkageType: ''
    returnType: int
    signature: "int ospf6_external_aggr_config_unset(struct ospf6 *ospf6,\n\t\t\t\t\tstruct
      prefix *p)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_default_prefix
      Src: /src/frr/ospf6d/ospf6_asbr.c:3605,1
    - Dst: ospf6_external_aggr_match
      Src: /src/frr/ospf6d/ospf6_asbr.c:3606,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3612,1
    - Dst: ospf6_originate_summary_lsa
      Src: /src/frr/ospf6d/ospf6_asbr.c:3616,1
    - Dst: ospf6_handle_aggregated_exnl_rt
      Src: /src/frr/ospf6d/ospf6_asbr.c:3626,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:3642,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_asbr.c:3645,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3648,1
    - Dst: ospf6_originate_type5_type7_lsas
      Src: /src/frr/ospf6d/ospf6_asbr.c:3652,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - ospf6
    - rt
    - p
    argTypes:
    - struct ospf6*
    - struct ospf6_route*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3654
      start: 3596
    functionDepth: 10
    functionLinenumber: 3596
    functionLinenumberEnd: 3654
    functionName: ospf6_handle_external_lsa_origination
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 2
    functionsReached:
    - is_default_prefix
    - htonl
    - ospf6_handle_aggregated_exnl_rt
    - ospf6_originate_type5_type7_lsas
    - zlog_debug
    - ospf6_originate_summary_lsa
    - ospf6_external_aggr_match
    linkageType: ''
    returnType: void
    signature: "void ospf6_handle_external_lsa_origination(struct ospf6 *ospf6,\n\t\t\t\t\t
      \      struct ospf6_route *rt,\n\t\t\t\t\t       struct prefix *p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_asbr.c:3662,1
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_asbr.c:3669,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_asbr.c:3669,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_asbr.c:3675,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3677
      start: 3656
    functionDepth: 3
    functionLinenumber: 3656
    functionLinenumberEnd: 3677
    functionName: ospf6_unset_all_aggr_flag
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - route_top
    - UNSET_FLAG
    - route_next
    linkageType: ''
    returnType: void
    signature: void ospf6_unset_all_aggr_flag(struct ospf6 *ospf6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: OSPF6_DEBUG_NEIGHBOR_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_NEIGHBOR_ON(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: OSPF6_DEBUG_NEIGHBOR_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_NEIGHBOR_OFF(level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - level
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: IS_OSPF6_DEBUG_NEIGHBOR
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_OSPF6_DEBUG_NEIGHBOR(level)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - event
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 176
    functionName: ospf6_neighbor_event_string
    functionSourceFile: /src/frr/ospf6d/ospf6_neighbor.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *ospf6_neighbor_event_string(int event)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: OSPF6_DEBUG_ASBR_ON
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ASBR_ON()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: OSPF6_DEBUG_ASBR_OFF
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_DEBUG_ASBR_OFF()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - aggr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: OSPF6_EXTERNAL_RT_COUNT
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_EXTERNAL_RT_COUNT(aggr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - E
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: OSPF6_ASBR_METRIC
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ASBR_METRIC(E)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - E
    - ','
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: OSPF6_ASBR_METRIC_SET
    functionSourceFile: /src/frr/ospf6d/ospf6_asbr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OSPF6_ASBR_METRIC_SET(E, C)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/ospf6d/ospf6_main.c:182,1
    - Dst: frr_opt_add
      Src: /src/frr/ospf6d/ospf6_main.c:183,1
    - Dst: frr_getopt
      Src: /src/frr/ospf6d/ospf6_main.c:187,1
    - Dst: frr_help_exit
      Src: /src/frr/ospf6d/ospf6_main.c:196,1
    - Dst: geteuid
      Src: /src/frr/ospf6d/ospf6_main.c:200,1
    - Dst: perror
      Src: /src/frr/ospf6d/ospf6_main.c:202,1
    - Dst: exit
      Src: /src/frr/ospf6d/ospf6_main.c:203,1
    - Dst: ospf6_master_init
      Src: /src/frr/ospf6d/ospf6_main.c:207,1
    - Dst: frr_init
      Src: /src/frr/ospf6d/ospf6_main.c:207,1
    - Dst: keychain_init
      Src: /src/frr/ospf6d/ospf6_main.c:212,1
    - Dst: ospf6_vrf_init
      Src: /src/frr/ospf6d/ospf6_main.c:213,1
    - Dst: access_list_init
      Src: /src/frr/ospf6d/ospf6_main.c:214,1
    - Dst: prefix_list_init
      Src: /src/frr/ospf6d/ospf6_main.c:215,1
    - Dst: ospf6_init
      Src: /src/frr/ospf6d/ospf6_main.c:218,1
    - Dst: frr_config_fork
      Src: /src/frr/ospf6d/ospf6_main.c:220,1
    - Dst: frr_run
      Src: /src/frr/ospf6d/ospf6_main.c:221,1
    - Dst: ospf6_exit
      Src: /src/frr/ospf6d/ospf6_main.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char*[]
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 178
    functionDepth: 7
    functionLinenumber: 178
    functionLinenumberEnd: 225
    functionName: main
    functionSourceFile: /src/frr/ospf6d/ospf6_main.c
    functionUses: 24
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - exit
    - prefix_list_init
    - geteuid
    - perror
    - ospf6_exit
    - frr_getopt
    - frr_init
    - frr_config_fork
    - access_list_init
    - ospf6_master_init
    - frr_run
    - ospf6_vrf_init
    - ospf6_init
    - keychain_init
    - frr_opt_add
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[], char *envp[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:33,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:34,1
    - Dst: generic_set_add
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 19
    functionDepth: 6
    functionLinenumber: 19
    functionLinenumberEnd: 50
    functionName: lib_route_map_entry_set_action_rmap_set_action_metric_type_modify
    functionSourceFile: /src/frr/ospf6d/ospf6_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_metric_type_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: lib_route_map_entry_set_action_rmap_set_action_metric_type_destroy
    functionSourceFile: /src/frr/ospf6d/ospf6_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_metric_type_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:85,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:86,1
    - Dst: generic_set_add
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 71
    functionDepth: 6
    functionLinenumber: 71
    functionLinenumberEnd: 103
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv6_address_modify
    functionSourceFile: /src/frr/ospf6d/ospf6_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - generic_set_add
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv6_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lib_route_map_entry_set_destroy
      Src: /src/frr/ospf6d/ospf6_routemap_nb_config.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 118
    functionName: lib_route_map_entry_set_action_rmap_set_action_ipv6_address_destroy
    functionSourceFile: /src/frr/ospf6d/ospf6_routemap_nb_config.c
    functionUses: 0
    functionsReached:
    - lib_route_map_entry_set_destroy
    linkageType: ''
    returnType: int
    signature: "int lib_route_map_entry_set_action_rmap_set_action_ipv6_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:59,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:68,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:71,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - lsa
    - buf
    - buflen
    - pos
    argTypes:
    - struct ospf6_lsa*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 81
    functionName: ospf6_router_lsa_get_nbr_id
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ntohs
    - inet_ntop
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *ospf6_router_lsa_get_nbr_id(struct ospf6_lsa *lsa, char *buf,\n\t\t\t\t\t
      int buflen, int pos)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_capability_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:97,1
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:98,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:100,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:101,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_intra.c:102,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:104,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:107,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:114,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:116,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:118,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:120,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:122,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_intra.c:126,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:127,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_intra.c:128,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:129,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospf6d/ospf6_intra.c:130,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospf6d/ospf6_intra.c:133,1
    - Dst: json_object_string_addf
      Src: /src/frr/ospf6d/ospf6_intra.c:136,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_intra.c:139,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:141,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:142,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:143,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:144,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:146,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:147,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:150,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:151,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_intra.c:156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 159
    functionName: ospf6_router_lsa_show
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - vty_out
    - ospf6_options_printbuf
    - snprintf
    - json_object_array_add
    - json_object_int_add
    - ntohs
    - inet_ntop
    - ospf6_capability_printbuf
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: int
    signature: "int ospf6_router_lsa_show(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t\t
      json_object *json_obj, bool use_json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_OPT_CLEAR_ALL
      Src: /src/frr/ospf6d/ospf6_intra.c:164,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:165,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_intra.c:167,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:168,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:170,1
    - Dst: IS_AREA_STUB
      Src: /src/frr/ospf6d/ospf6_intra.c:172,1
    - Dst: ospf6_asbr_is_asbr
      Src: /src/frr/ospf6d/ospf6_intra.c:172,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:173,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:175,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_intra.c:181,1
    - Dst: ospf6_asbr_is_asbr
      Src: /src/frr/ospf6d/ospf6_intra.c:182,1
    - Dst: IS_OSPF6_ABR
      Src: /src/frr/ospf6d/ospf6_intra.c:182,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:184,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:186,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:189,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:190,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - oa
    - router_lsa
    argTypes:
    - struct ospf6_area*
    - struct ospf6_router_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 191
    functionName: ospf6_router_lsa_options_set
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - IS_AREA_STUB
    - IS_AREA_NSSA
    - ospf6_asbr_is_asbr
    - ospf6_check_and_set_router_abr
    - UNSET_FLAG
    - SET_FLAG
    - OSPF6_OPT_CLEAR_ALL
    - IS_OSPF6_ABR
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_router_lsa_options_set(struct ospf6_area *oa,\n\t\t\t\t\t
      struct ospf6_router_lsa *router_lsa)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OSPF6_LSA_IS_TYPE
      Src: /src/frr/ospf6d/ospf6_intra.c:197,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_intra.c:202,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_intra.c:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 210
    functionName: ospf6_router_is_stub_router
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 1
    functionsReached:
    - OSPF6_LSA_IS_TYPE
    - OSPF6_OPT_ISSET
    linkageType: ''
    returnType: int
    signature: int ospf6_router_is_stub_router(struct ospf6_lsa *lsa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_intra.c:231,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:235,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:240,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:241,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:243,1
    - Dst: ospf6_router_lsa_options_set
      Src: /src/frr/ospf6d/ospf6_intra.c:249,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_intra.c:256,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:264,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_intra.c:268,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_intra.c:273,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_intra.c:280,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:287,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:288,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_intra.c:290,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:294,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_intra.c:297,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_intra.c:300,1
    - Dst: ospf6_lsa_originate_area
      Src: /src/frr/ospf6d/ospf6_intra.c:303,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:306,1
    - Dst: ospf6_router_lsa_options_set
      Src: /src/frr/ospf6d/ospf6_intra.c:313,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:325,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:330,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:332,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:334,1
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:348,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:355,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:356,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:359,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:363,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 212
    functionDepth: 8
    functionLinenumber: 212
    functionLinenumberEnd: 377
    functionName: ospf6_router_lsa_originate
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_checksum
    - ospf6_lsa_create
    - htonl
    - memset
    - htons
    - ALL_LIST_ELEMENTS_RO
    - ospf6_new_ls_seqnum
    - ospf6_lsa_originate_area
    - IS_OSPF6_DEBUG_ORIGINATE
    - zlog_debug
    - zlog_warn
    - EVENT_ARG
    - if
    - ALL_LIST_ELEMENTS
    - ospf6_router_lsa_options_set
    - ospf6_neighbor_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_router_lsa_originate(struct event *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:440,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - lsa
    - buf
    - buflen
    - pos
    argTypes:
    - struct ospf6_lsa*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 454
    functionName: ospf6_network_lsa_get_ar_id
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ntohs
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: "char *ospf6_network_lsa_get_ar_id(struct ospf6_lsa *lsa, char *buf,\n\t\t\t\t\t
      int buflen, int pos)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:469,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:471,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:473,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:476,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_intra.c:478,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:484,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_intra.c:486,1
    - Dst: json_object_new_string
      Src: /src/frr/ospf6d/ospf6_intra.c:487,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:489,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_intra.c:492,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 495
    functionName: ospf6_network_lsa_show
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - vty_out
    - ospf6_options_printbuf
    - json_object_array_add
    - ntohs
    - inet_ntop
    - json_object_string_add
    - json_object_new_string
    - json_object_object_add
    linkageType: ''
    returnType: int
    signature: "int ospf6_network_lsa_show(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t\t
      \ json_object *json_obj, bool use_json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_intra.c:513,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_intra.c:518,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:522,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:527,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:527,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:528,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:534,1
    - Dst: ospf6_spf_schedule
      Src: /src/frr/ospf6d/ospf6_intra.c:540,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:547,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:548,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:554,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_intra.c:558,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:559,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:560,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_intra.c:561,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:562,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:567,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:575,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_intra.c:576,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:594,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:605,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:606,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_intra.c:609,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:611,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_intra.c:617,1
    - Dst: ospf6_lsa_originate_area
      Src: /src/frr/ospf6d/ospf6_intra.c:620,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (oi->area)
      pos:
        line_end: 517
        line_start: 517
        source_file: /src/frr/ospf6d/ospf6_intra.c
    constantsTouched: []
    func_position:
      end: 621
      start: 497
    functionDepth: 8
    functionLinenumber: 497
    functionLinenumberEnd: 621
    functionName: ospf6_network_lsa_originate
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_create
    - memset
    - htons
    - ALL_LIST_ELEMENTS_RO
    - ospf6_new_ls_seqnum
    - ospf6_lsa_originate_area
    - ospf6_spf_schedule
    - ospf6_lsa_purge
    - zlog_debug
    - IS_OSPF6_DEBUG_ORIGINATE
    - ALL_LSDB_TYPED
    - EVENT_ARG
    - htonl
    - if
    - ospf6_lsdb_lookup
    - assert
    linkageType: ''
    returnType: void
    signature: void ospf6_network_lsa_originate(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:643,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_intra.c:648,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:653,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:659,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:664,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:667,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:668,1
    - Dst: OSPF6_PREFIX_BODY
      Src: /src/frr/ospf6d/ospf6_intra.c:668,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_intra.c:669,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:671,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 4
    argNames:
    - lsa
    - buf
    - buflen
    - pos
    argTypes:
    - struct ospf6_lsa*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 677
    functionName: ospf6_link_lsa_get_prefix_str
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - OSPF6_PREFIX_SIZE
    - memset
    - ntohs
    - inet_ntop
    - OSPF6_PREFIX_SPACE
    - ntohl
    - OSPF6_PREFIX_BODY
    - memcpy
    linkageType: ''
    returnType: char
    signature: "char *ospf6_link_lsa_get_prefix_str(struct ospf6_lsa *lsa, char *buf,\n\t\t\t\t\t
      \  int buflen, int pos)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:695,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:696,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_intra.c:697,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_intra.c:700,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_intra.c:701,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:702,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:703,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_intra.c:704,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:706,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:708,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:709,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:713,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:715,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:718,1
    - Dst: ospf6_prefix_options_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:721,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_intra.c:724,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:725,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:727,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:729,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:730,1
    - Dst: OSPF6_PREFIX_BODY
      Src: /src/frr/ospf6d/ospf6_intra.c:730,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_intra.c:731,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:732,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:734,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:736,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_intra.c:738,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:740,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_intra.c:744,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 679
    functionDepth: 2
    functionLinenumber: 679
    functionLinenumberEnd: 747
    functionName: ospf6_link_lsa_show
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - OSPF6_PREFIX_SIZE
    - ospf6_prefix_options_printbuf
    - vty_out
    - ospf6_options_printbuf
    - memset
    - snprintf
    - json_object_array_add
    - json_object_int_add
    - ntohs
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    - OSPF6_PREFIX_SPACE
    - ntohl
    - OSPF6_PREFIX_BODY
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int ospf6_link_lsa_show(struct vty *vty, struct ospf6_lsa *lsa,\n\t\t\t
      \      json_object *json_obj, bool use_json)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_intra.c:761,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_intra.c:763,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:767,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:774,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:774,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:778,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:780,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:784,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:785,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:790,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:791,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:795,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:800,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:807,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:808,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:810,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_intra.c:816,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:817,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:820,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:821,1
    - Dst: OSPF6_PREFIX_BODY
      Src: /src/frr/ospf6d/ospf6_intra.c:821,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_intra.c:822,1
    - Dst: OSPF6_PREFIX_NEXT
      Src: /src/frr/ospf6d/ospf6_intra.c:823,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:828,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:829,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_intra.c:832,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:834,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_intra.c:837,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_intra.c:840,1
    - Dst: ospf6_lsa_originate_interface
      Src: /src/frr/ospf6d/ospf6_intra.c:843,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (oi->area)
      pos:
        line_end: 762
        line_start: 762
        source_file: /src/frr/ospf6d/ospf6_intra.c
    constantsTouched: []
    func_position:
      end: 844
      start: 749
    functionDepth: 8
    functionLinenumber: 749
    functionLinenumberEnd: 844
    functionName: ospf6_link_lsa_originate
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - htons
    - OSPF6_PREFIX_NEXT
    - IS_OSPF6_DEBUG_ORIGINATE
    - htonl
    - ospf6_route_head
    - OSPF6_PREFIX_BODY
    - ospf6_lsa_create
    - memset
    - zlog_debug
    - EVENT_ARG
    - assert
    - ospf6_lsa_checksum
    - ospf6_lsa_purge
    - memcpy
    - CHECK_FLAG
    - ospf6_new_ls_seqnum
    - ospf6_lsa_originate_interface
    - ospf6_route_next
    - OSPF6_PREFIX_SPACE
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_link_lsa_originate(struct event *thread)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:867,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:873,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:879,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:884,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:887,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:888,1
    - Dst: OSPF6_PREFIX_BODY
      Src: /src/frr/ospf6d/ospf6_intra.c:888,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_intra.c:889,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:891,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:892,1
    - Dst: strlcat
      Src: /src/frr/ospf6d/ospf6_intra.c:894,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 4
    argNames:
    - lsa
    - buf
    - buflen
    - pos
    argTypes:
    - struct ospf6_lsa*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 900
    functionName: ospf6_intra_prefix_lsa_get_prefix_str
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - strlcat
    - OSPF6_PREFIX_SIZE
    - memset
    - snprintf
    - ntohs
    - inet_ntop
    - OSPF6_PREFIX_SPACE
    - OSPF6_PREFIX_BODY
    - memcpy
    linkageType: ''
    returnType: char
    signature: "char *ospf6_intra_prefix_lsa_get_prefix_str(struct ospf6_lsa *lsa,\n\t\t\t\t\t\t
      \  char *buf, int buflen,\n\t\t\t\t\t\t   int pos)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:920,1
    - Dst: json_object_new_array
      Src: /src/frr/ospf6d/ospf6_intra.c:923,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_intra.c:924,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:926,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:928,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:929,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:932,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_intra.c:934,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:935,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:936,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:938,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_intra.c:939,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:944,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:946,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:949,1
    - Dst: ospf6_prefix_options_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:952,1
    - Dst: json_object_new_object
      Src: /src/frr/ospf6d/ospf6_intra.c:955,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:956,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:958,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:960,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:961,1
    - Dst: OSPF6_PREFIX_BODY
      Src: /src/frr/ospf6d/ospf6_intra.c:961,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_intra.c:962,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:963,1
    - Dst: snprintf
      Src: /src/frr/ospf6d/ospf6_intra.c:965,1
    - Dst: json_object_string_add
      Src: /src/frr/ospf6d/ospf6_intra.c:967,1
    - Dst: json_object_int_add
      Src: /src/frr/ospf6d/ospf6_intra.c:969,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:970,1
    - Dst: json_object_array_add
      Src: /src/frr/ospf6d/ospf6_intra.c:971,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:973,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:975,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:976,1
    - Dst: json_object_object_add
      Src: /src/frr/ospf6d/ospf6_intra.c:980,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 4
    argNames:
    - vty
    - lsa
    - json_obj
    - use_json
    argTypes:
    - struct vty*
    - struct ospf6_lsa*
    - json_object*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 983
    functionName: ospf6_intra_prefix_lsa_show
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_new_object
    - OSPF6_PREFIX_SIZE
    - ospf6_prefix_options_printbuf
    - vty_out
    - memset
    - snprintf
    - json_object_array_add
    - ospf6_lstype_name
    - json_object_int_add
    - ntohs
    - inet_ntop
    - json_object_string_add
    - json_object_object_add
    - OSPF6_PREFIX_SPACE
    - OSPF6_PREFIX_BODY
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int ospf6_intra_prefix_lsa_show(struct vty *vty, struct ospf6_lsa
      *lsa,\n\t\t\t\t       json_object *json_obj, bool use_json)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_intra.c:1004,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1008,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1014,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1014,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1014,1
    - Dst: IS_AREA_ENABLED
      Src: /src/frr/ospf6d/ospf6_intra.c:1017,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:1019,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1021,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1022,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1023,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:1026,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1027,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1028,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1029,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1036,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1037,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:1042,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1049,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1050,1
    - Dst: ospf6_route_table_create
      Src: /src/frr/ospf6d/ospf6_intra.c:1053,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:1055,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1057,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1058,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:1065,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_intra.c:1069,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1072,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1073,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1078,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1079,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_intra.c:1082,1
    - Dst: ospf6_route_best_next
      Src: /src/frr/ospf6d/ospf6_intra.c:1083,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1084,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1085,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_intra.c:1086,1
    - Dst: ospf6_route_copy
      Src: /src/frr/ospf6d/ospf6_intra.c:1086,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:1094,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1096,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1097,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1098,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1102,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1103,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1104,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 1107
    functionName: ospf6_intra_prefix_lsa_originate_stub
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ospf6_route_table_create
    - ospf6_route_best_next
    - memset
    - htons
    - ALL_LIST_ELEMENTS_RO
    - IS_AREA_ENABLED
    - ospf6_route_head
    - ospf6_route_add
    - ospf6_route_copy
    - zlog_debug
    - IS_OSPF6_DEBUG_ORIGINATE
    - EVENT_ARG
    - htonl
    - if
    - ospf6_lsdb_lookup
    - ospf6_lsa_purge
    linkageType: ''
    returnType: void
    signature: void ospf6_intra_prefix_lsa_originate_stub(struct event *thread)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_intra.c:1240,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_intra.c:1242,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1246,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1252,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1252,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1253,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:1256,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:1258,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1262,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1263,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:1268,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:1275,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:1276,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1280,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1281,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:1283,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:1288,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_intra.c:1292,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1293,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1294,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_intra.c:1296,1
    - Dst: ospf6_route_table_create
      Src: /src/frr/ospf6d/ospf6_intra.c:1301,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:1303,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_intra.c:1304,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_intra.c:1305,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1308,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1309,1
    - Dst: ospf6_neighbor_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1312,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1314,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1315,1
    - Dst: ntohl
      Src: /src/frr/ospf6d/ospf6_intra.c:1325,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:1327,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:1329,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:1332,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_intra.c:1335,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:1340,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_intra.c:1342,1
    - Dst: OSPF6_PREFIX_BODY
      Src: /src/frr/ospf6d/ospf6_intra.c:1342,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_intra.c:1343,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1355,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1356,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_intra.c:1358,1
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_intra.c:1361,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1362,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts:
    - condition: (oi->area)
      pos:
        line_end: 1241
        line_start: 1241
        source_file: /src/frr/ospf6d/ospf6_intra.c
    constantsTouched: []
    func_position:
      end: 1363
      start: 1220
    functionDepth: 7
    functionLinenumber: 1220
    functionLinenumberEnd: 1363
    functionName: ospf6_intra_prefix_lsa_originate_transit
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - OSPF6_PREFIX_SIZE
    - htons
    - ntohs
    - IS_OSPF6_DEBUG_ORIGINATE
    - htonl
    - OSPF6_PREFIX_BODY
    - memset
    - OSPF6_LSA_IS_MAXAGE
    - ALL_LIST_ELEMENTS_RO
    - ospf6_route_create
    - zlog_debug
    - ALL_LSDB_TYPED
    - EVENT_ARG
    - if
    - ospf6_route_add
    - ntohl
    - assert
    - ospf6_lsa_purge
    - ospf6_route_table_create
    - ospf6_neighbor_lookup
    - memcpy
    - CHECK_FLAG
    - OSPF6_PREFIX_SPACE
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_intra_prefix_lsa_originate_transit(struct event *thread)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:1418,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_intra.c:1420,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_intra.c:1422,1
    - Dst: ospf6_route_is_prefix
      Src: /src/frr/ospf6d/ospf6_intra.c:1423,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:1425,1
    - Dst: ospf6_route_is_same_origin
      Src: /src/frr/ospf6d/ospf6_intra.c:1435,1
    - Dst: listgetdata
      Src: /src/frr/ospf6d/ospf6_intra.c:1436,1
    - Dst: listhead
      Src: /src/frr/ospf6d/ospf6_intra.c:1437,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_intra.c:1443,1
    - Dst: listgetdata
      Src: /src/frr/ospf6d/ospf6_intra.c:1448,1
    - Dst: listhead
      Src: /src/frr/ospf6d/ospf6_intra.c:1449,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 2
    argNames:
    - oa_route
    - ospf6
    argTypes:
    - struct ospf6_route*
    - struct ospf6*
    assertStmts:
    - condition: (g_route)
      pos:
        line_end: 1419
        line_start: 1419
        source_file: /src/frr/ospf6d/ospf6_intra.c
    constantsTouched: []
    func_position:
      end: 1453
      start: 1411
    functionDepth: 1
    functionLinenumber: 1411
    functionLinenumberEnd: 1453
    functionName: ospf6_intra_prefix_update_route_origin
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ospf6_route_is_same_origin
    - listhead
    - ospf6_route_lookup
    - ospf6_route_next
    - ospf6_route_lock
    - listgetdata
    - ospf6_route_is_prefix
    - ospf6_route_unlock
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf6_intra_prefix_update_route_origin(struct ospf6_route *oa_route,\n\t\t\t\t\t\t
      \  struct ospf6 *ospf6)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_is_same
      Src: /src/frr/ospf6d/ospf6_intra.c:1480,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_intra.c:1488,1
    - Dst: ospf6_ls_origin_same
      Src: /src/frr/ospf6d/ospf6_intra.c:1494,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:1501,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1502,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:1511,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_intra.c:1512,1
    - Dst: ospf6_nexthop_is_same
      Src: /src/frr/ospf6d/ospf6_intra.c:1514,1
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_intra.c:1516,1
    - Dst: ospf6_nexthop_delete
      Src: /src/frr/ospf6d/ospf6_intra.c:1518,1
    - Dst: listnode_delete
      Src: /src/frr/ospf6d/ospf6_intra.c:1523,1
    - Dst: ospf6_path_free
      Src: /src/frr/ospf6d/ospf6_intra.c:1524,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_intra.c:1531,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_intra.c:1533,1
    - Dst: ospf6_merge_nexthops
      Src: /src/frr/ospf6d/ospf6_intra.c:1535,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 18
    argCount: 3
    argNames:
    - oa
    - old
    - route
    argTypes:
    - struct ospf6_area*
    - struct ospf6_route*
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1556
    functionName: ospf6_intra_prefix_route_ecmp_path
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ospf6_nexthop_is_same
    - ospf6_ls_origin_same
    - ospf6_merge_nexthops
    - IS_OSPF6_DEBUG_EXAMIN
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - zlog_debug
    - ospf6_nexthop_delete
    - ospf6_path_free
    - listnode_delete
    - ALL_LIST_ELEMENTS
    - ospf6_route_is_same
    linkageType: ''
    returnType: void
    signature: "void ospf6_intra_prefix_route_ecmp_path(struct ospf6_area *oa,\n\t\t\t\t\tstruct
      ospf6_route *old,\n\t\t\t\t\tstruct ospf6_route *route)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_intra.c:1890,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_intra.c:1896,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:1896,1
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_intra.c:1897,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1898,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_intra.c:1901,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_intra.c:1907,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_intra.c:1908,1
    - Dst: ospf6_nexthop_is_same
      Src: /src/frr/ospf6d/ospf6_intra.c:1910,1
    - Dst: ospf6_nexthop_delete
      Src: /src/frr/ospf6d/ospf6_intra.c:1913,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 3
    argNames:
    - lsa
    - oa
    - route
    argTypes:
    - struct ospf6_lsa*
    - struct ospf6_area*
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1874
    functionDepth: 4
    functionLinenumber: 1874
    functionLinenumberEnd: 1914
    functionName: ospf6_intra_prefix_lsa_remove_update_route
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - ospf6_nexthop_is_same
    - IS_OSPF6_DEBUG_EXAMIN
    - listcount
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - if
    - ALL_LIST_ELEMENTS
    - ospf6_nexthop_delete
    linkageType: ''
    returnType: void
    signature: "void ospf6_intra_prefix_lsa_remove_update_route(struct ospf6_lsa *lsa,\n\t\t\t\t\t\t
      \ struct ospf6_area *oa,\n\t\t\t\t\t\t  struct ospf6_route *route)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:1975,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:1976,1
    - Dst: OSPF6_AREA
      Src: /src/frr/ospf6d/ospf6_intra.c:1978,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_intra.c:1981,1
    - Dst: ntohs
      Src: /src/frr/ospf6d/ospf6_intra.c:1984,1
    - Dst: OSPF6_LSA_END
      Src: /src/frr/ospf6d/ospf6_intra.c:1987,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:1988,1
    - Dst: OSPF6_PREFIX_SIZE
      Src: /src/frr/ospf6d/ospf6_intra.c:1992,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_intra.c:1996,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_intra.c:1999,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:2001,1
    - Dst: ospf6_route_lock
      Src: /src/frr/ospf6d/ospf6_intra.c:2005,1
    - Dst: ospf6_route_is_prefix
      Src: /src/frr/ospf6d/ospf6_intra.c:2006,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:2008,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_intra.c:2019,1
    - Dst: ospf6_intra_prefix_lsa_remove_update_route
      Src: /src/frr/ospf6d/ospf6_intra.c:2020,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:2030,1
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_intra.c:2031,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2033,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_intra.c:2037,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_intra.c:2038,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_intra.c:2040,1
    - Dst: ospf6_route_unlock
      Src: /src/frr/ospf6d/ospf6_intra.c:2044,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:2047,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2048,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 47
    argCount: 1
    argNames:
    - lsa
    argTypes:
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 1964
    functionDepth: 5
    functionLinenumber: 1964
    functionLinenumberEnd: 2049
    functionName: ospf6_intra_prefix_lsa_remove
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 1
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - OSPF6_PREFIX_SIZE
    - prefix2str
    - memset
    - OSPF6_LSA_END
    - IS_OSPF6_DEBUG_EXAMIN
    - listcount
    - ospf6_intra_prefix_lsa_remove_update_route
    - ospf6_route_lookup
    - ntohs
    - ospf6_route_next
    - zlog_debug
    - ospf6_route_lock
    - ospf6_prefix_in6_addr
    - OSPF6_AREA
    - ospf6_route_is_prefix
    - ospf6_route_remove
    - ospf6_route_unlock
    linkageType: ''
    returnType: void
    signature: void ospf6_intra_prefix_lsa_remove(struct ospf6_lsa *lsa)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:2060,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2061,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_intra.c:2068,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:2069,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_intra.c:2072,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_intra.c:2073,1
    - Dst: ospf6_intra_prefix_lsa_add
      Src: /src/frr/ospf6d/ospf6_intra.c:2074,1
    - Dst: for
      Src: /src/frr/ospf6d/ospf6_intra.c:2079,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_intra.c:2079,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:2080,1
    - Dst: prefix2str
      Src: /src/frr/ospf6d/ospf6_intra.c:2081,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2082,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:2086,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2087,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2088,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2089,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2090,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2093,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_intra.c:2094,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2095,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2096,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:2102,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2103,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_intra.c:2105,1
    - Dst: IS_OSPF6_DEBUG_EXAMIN
      Src: /src/frr/ospf6d/ospf6_intra.c:2110,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2111,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - oa
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2113
      start: 2051
    functionDepth: 4
    functionLinenumber: 2051
    functionLinenumberEnd: 2113
    functionName: ospf6_intra_route_calculation
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - ospf6_abr_originate_summary
    - htons
    - IS_OSPF6_DEBUG_EXAMIN
    - CHECK_FLAG
    - ospf6_route_next
    - zlog_debug
    - ALL_LSDB_TYPED
    - UNSET_FLAG
    - for
    - ospf6_intra_prefix_lsa_add
    - ospf6_route_head
    - ospf6_route_remove
    linkageType: ''
    returnType: void
    signature: void ospf6_intra_route_calculation(struct ospf6_area *oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_intra.c:2126,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2127,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2128,1
    - Dst: ospf6_linkstate_prefix2str
      Src: /src/frr/ospf6d/ospf6_intra.c:2130,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_intra.c:2133,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_intra.c:2134,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_intra.c:2135,1
    - Dst: monotime
      Src: /src/frr/ospf6d/ospf6_intra.c:2137,1
    - Dst: timersub
      Src: /src/frr/ospf6d/ospf6_intra.c:2138,1
    - Dst: timerstring
      Src: /src/frr/ospf6d/ospf6_intra.c:2139,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2141,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2142,1
    - Dst: ospf6_options_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:2145,1
    - Dst: ospf6_capability_printbuf
      Src: /src/frr/ospf6d/ospf6_intra.c:2146,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2149,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2150,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2153,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2155,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2156,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2157,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2158,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2159,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2160,1
    - Dst: OSPF6_PATH_TYPE_NAME
      Src: /src/frr/ospf6d/ospf6_intra.c:2161,1
    - Dst: ospf6_lstype_name
      Src: /src/frr/ospf6d/ospf6_intra.c:2162,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2163,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2166,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_intra.c:2166,1
    - Dst: listcount
      Src: /src/frr/ospf6d/ospf6_intra.c:2167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - brouter
    argTypes:
    - struct ospf6_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2168
      start: 2115
    functionDepth: 3
    functionLinenumber: 2115
    functionLinenumberEnd: 2168
    functionName: ospf6_brouter_debug_print
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - ospf6_linkstate_prefix2str
    - OSPF6_PATH_TYPE_NAME
    - ospf6_options_printbuf
    - ospf6_lstype_name
    - CHECK_FLAG
    - timerstring
    - monotime
    - listcount
    - timersub
    - inet_ntop
    - ospf6_capability_printbuf
    - ADV_ROUTER_IN_PREFIX
    linkageType: ''
    returnType: void
    signature: void ospf6_brouter_debug_print(struct ospf6_route *brouter)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2178,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_intra.c:2179,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2180,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_intra.c:2189,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:2190,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_intra.c:2191,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2192,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2198,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2200,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_intra.c:2201,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2202,1
    - Dst: ospf6_brouter_debug_print
      Src: /src/frr/ospf6d/ospf6_intra.c:2204,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_intra.c:2208,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:2209,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_intra.c:2210,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2211,1
    - Dst: ospf6_linkstate_prefix_id
      Src: /src/frr/ospf6d/ospf6_intra.c:2217,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:2217,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2220,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2221,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_intra.c:2225,1
    - Dst: OSPF6_OPT_ISSET
      Src: /src/frr/ospf6d/ospf6_intra.c:2226,1
    - Dst: ospf6_route_copy
      Src: /src/frr/ospf6d/ospf6_intra.c:2229,1
    - Dst: ospf6_route_add
      Src: /src/frr/ospf6d/ospf6_intra.c:2232,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2234,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_intra.c:2235,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2236,1
    - Dst: ospf6_brouter_debug_print
      Src: /src/frr/ospf6d/ospf6_intra.c:2238,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_intra.c:2245,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_intra.c:2256,1
    - Dst: ospf6_brouter_debug_print
      Src: /src/frr/ospf6d/ospf6_intra.c:2257,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:2258,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_intra.c:2261,1
    - Dst: ADV_ROUTER_IN_PREFIX
      Src: /src/frr/ospf6d/ospf6_intra.c:2264,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2265,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2271,1
    - Dst: ospf6_linkstate_prefix
      Src: /src/frr/ospf6d/ospf6_intra.c:2282,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_intra.c:2283,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_intra.c:2285,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2287,1
    - Dst: ospf6_brouter_debug_print
      Src: /src/frr/ospf6d/ospf6_intra.c:2292,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2294,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2299,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2300,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2301,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2304,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2306,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2308,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2310,1
    - Dst: ospf6_route_remove
      Src: /src/frr/ospf6d/ospf6_intra.c:2318,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2320,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2321,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2323,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2325,1
    - Dst: zlog_info
      Src: /src/frr/ospf6d/ospf6_intra.c:2327,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2334,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2336,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2338,1
    - Dst: ospf6_abr_originate_summary
      Src: /src/frr/ospf6d/ospf6_intra.c:2342,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2346,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_intra.c:2347,1
    - Dst: IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID
      Src: /src/frr/ospf6d/ospf6_intra.c:2353,1
    - Dst: IS_OSPF6_DEBUG_ROUTE
      Src: /src/frr/ospf6d/ospf6_intra.c:2354,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_intra.c:2355,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 94
    argCount: 1
    argNames:
    - oa
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 2170
    functionDepth: 4
    functionLinenumber: 2170
    functionLinenumberEnd: 2357
    functionName: ospf6_intra_brouter_calculation
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 1
    functionsReached:
    - ospf6_route_lookup
    - htonl
    - ospf6_route_head
    - ospf6_brouter_debug_print
    - inet_ntop
    - zlog_debug
    - ospf6_route_add
    - OSPF6_OPT_ISSET
    - ADV_ROUTER_IN_PREFIX
    - IS_OSPF6_DEBUG_BROUTER_SPECIFIC_AREA_ID
    - zlog_info
    - IS_OSPF6_DEBUG_ROUTE
    - ospf6_abr_originate_summary
    - UNSET_FLAG
    - ospf6_route_remove
    - ospf6_route_copy
    - ospf6_linkstate_prefix_id
    - IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID
    - CHECK_FLAG
    - ospf6_route_next
    - SET_FLAG
    - ospf6_linkstate_prefix
    linkageType: ''
    returnType: void
    signature: void ospf6_intra_brouter_calculation(struct ospf6_area *oa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_intra.c:2393,1
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_intra.c:2394,1
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_intra.c:2395,1
    - Dst: ospf6_install_lsa_handler
      Src: /src/frr/ospf6d/ospf6_intra.c:2396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2397
      start: 2391
    functionDepth: 2
    functionLinenumber: 2391
    functionLinenumberEnd: 2397
    functionName: ospf6_intra_init
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - ospf6_install_lsa_handler
    linkageType: ''
    returnType: void
    signature: void ospf6_intra_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:2492,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2494,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:2496,1
    - Dst: inet_ntop
      Src: /src/frr/ospf6d/ospf6_intra.c:2499,1
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_intra.c:2501,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2488
    functionDepth: 2
    functionLinenumber: 2488
    functionLinenumberEnd: 2504
    functionName: config_write_ospf6_debug_brouter
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 1
    functionsReached:
    - inet_ntop
    - vty_out
    linkageType: ''
    returnType: int
    signature: int config_write_ospf6_debug_brouter(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2508,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2509,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2510,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2511,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2512,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2513,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2514,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2515,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2516,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2517,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2518,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_intra.c:2519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2520
      start: 2506
    functionDepth: 1
    functionLinenumber: 2506
    functionLinenumberEnd: 2520
    functionName: install_element_ospf6_debug_brouter
    functionSourceFile: /src/frr/ospf6d/ospf6_intra.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_brouter(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:51,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_nssa.c:54,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_nssa.c:61,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:61,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_nssa.c:65,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:65,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:67,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospf6d/ospf6_nssa.c:74,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:80,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:86,1
    - Dst: IPV4_ADDR_CMP
      Src: /src/frr/ospf6d/ospf6_nssa.c:88,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:90,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:94,1
    - Dst: ospf6_flush_translated_lsa
      Src: /src/frr/ospf6d/ospf6_nssa.c:101,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:109,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:111,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_nssa.c:112,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:113,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:113,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:116,1
    - Dst: ospf6_lsa_premature_aging
      Src: /src/frr/ospf6d/ospf6_nssa.c:117,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:120,1
    - Dst: ospf6_abr_nssa_check_status
      Src: /src/frr/ospf6d/ospf6_nssa.c:124,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:133,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_nssa.c:136,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:139,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:141,1
    - Dst: ospf6_flush_translated_lsa
      Src: /src/frr/ospf6d/ospf6_nssa.c:144,1
    - Dst: ospf6_abr_nssa_am_elected
      Src: /src/frr/ospf6d/ospf6_nssa.c:152,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:156,1
    - Dst: ospf6_flush_translated_lsa
      Src: /src/frr/ospf6d/ospf6_nssa.c:162,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:164,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_nssa.c:178,1
    - Dst: ospf6_asbr_status_update
      Src: /src/frr/ospf6d/ospf6_nssa.c:182,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 1
    argNames:
    - oa
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 187
    functionName: ospf6_abr_nssa_am_elected
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 1
    functionsReached:
    - ospf6_abr_nssa_check_status
    - IS_AREA_NSSA
    - ospf6_flush_translated_lsa
    - ospf6_lsa_premature_aging
    - htons
    - CHECK_FLAG
    - zlog_debug
    - ALL_LSDB_TYPED
    - ALL_LSDB_TYPED_ADVRTR
    - ospf6_asbr_status_update
    - if
    - IPV4_ADDR_CMP
    - ospf6_abr_nssa_am_elected
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: int
    signature: int ospf6_abr_nssa_am_elected(struct ospf6_area *oa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:198,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_nssa.c:200,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:202,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:205,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_nssa.c:206,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:209,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:212,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:215,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_nssa.c:216,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:219,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:222,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:227,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 228
    functionName: ospf6_abr_unapprove_summaries
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - htons
    - zlog_debug
    - ALL_LSDB_TYPED_ADVRTR
    - SET_FLAG
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_unapprove_summaries(struct ospf6 *ospf6)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:238,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_nssa.c:241,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_nssa.c:242,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_nssa.c:243,1
    - Dst: ospf6_abr_originate_summary_to_area
      Src: /src/frr/ospf6d/ospf6_nssa.c:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 245
    functionName: ospf6_asbr_prefix_readvertise
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - ospf6_abr_originate_summary_to_area
    - ospf6_route_next
    - zlog_debug
    - ALL_LIST_ELEMENTS
    - ospf6_route_head
    linkageType: ''
    returnType: void
    signature: void ospf6_asbr_prefix_readvertise(struct ospf6 *ospf6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:259,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_nssa.c:261,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:263,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_nssa.c:267,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_nssa.c:268,1
    - Dst: ospf6_abr_range_update
      Src: /src/frr/ospf6d/ospf6_nssa.c:269,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:273,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 274
    functionName: ospf6_abr_announce_aggregates
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - ospf6_route_next
    - zlog_debug
    - ospf6_route_head
    - ospf6_abr_range_update
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_announce_aggregates(struct ospf6 *ospf6)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:285,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_nssa.c:287,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:289,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:293,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_nssa.c:294,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:296,1
    - Dst: ospf6_lsa_premature_aging
      Src: /src/frr/ospf6d/ospf6_nssa.c:297,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:301,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_nssa.c:302,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 307
    functionName: ospf6_abr_remove_unapproved_summaries
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - ospf6_lsa_premature_aging
    - htons
    - CHECK_FLAG
    - zlog_debug
    - ALL_LSDB_TYPED_ADVRTR
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_remove_unapproved_summaries(struct ospf6 *ospf6)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:320,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:324,1
    - Dst: ospf6_abr_unapprove_summaries
      Src: /src/frr/ospf6d/ospf6_nssa.c:329,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:332,1
    - Dst: ospf6_abr_range_reset_cost
      Src: /src/frr/ospf6d/ospf6_nssa.c:334,1
    - Dst: IS_OSPF6_ABR
      Src: /src/frr/ospf6d/ospf6_nssa.c:336,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:338,1
    - Dst: ospf6_abr_prefix_resummarize
      Src: /src/frr/ospf6d/ospf6_nssa.c:339,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:342,1
    - Dst: ospf6_asbr_prefix_readvertise
      Src: /src/frr/ospf6d/ospf6_nssa.c:343,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:346,1
    - Dst: ospf6_abr_announce_aggregates
      Src: /src/frr/ospf6d/ospf6_nssa.c:347,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:350,1
    - Dst: ospf6_abr_defaults_to_stub
      Src: /src/frr/ospf6d/ospf6_nssa.c:351,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:354,1
    - Dst: ospf6_abr_nssa_type_7_defaults
      Src: /src/frr/ospf6d/ospf6_nssa.c:356,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:360,1
    - Dst: ospf6_abr_remove_unapproved_summaries
      Src: /src/frr/ospf6d/ospf6_nssa.c:361,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:364,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 365
    functionName: ospf6_abr_task
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - ospf6_abr_unapprove_summaries
    - ospf6_asbr_prefix_readvertise
    - ospf6_abr_defaults_to_stub
    - ospf6_abr_range_reset_cost
    - ospf6_abr_nssa_type_7_defaults
    - ospf6_abr_prefix_resummarize
    - ospf6_abr_announce_aggregates
    - zlog_debug
    - IS_OSPF6_ABR
    - ospf6_abr_remove_unapproved_summaries
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_task(struct ospf6 *ospf6)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:375,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:377,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_nssa.c:378,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:379,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:380,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_nssa.c:381,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:382,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:389,1
    - Dst: ospf6_lsa_translated_nssa_new
      Src: /src/frr/ospf6d/ospf6_nssa.c:393,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:409,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:413,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_nssa.c:419,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_nssa.c:423,1
    - Dst: ospf6_route_lookup_bestmatch
      Src: /src/frr/ospf6d/ospf6_nssa.c:426,1
    - Dst: prefix_same
      Src: /src/frr/ospf6d/ospf6_nssa.c:427,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:428,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:430,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_nssa.c:438,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:451,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:454,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_nssa.c:454,1
    - Dst: ospf6_prefix_apply_mask
      Src: /src/frr/ospf6d/ospf6_nssa.c:455,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_nssa.c:456,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_nssa.c:459,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:462,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:463,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:469,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:470,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_nssa.c:472,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:473,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:479,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_nssa.c:480,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_nssa.c:484,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:486,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_nssa.c:490,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_nssa.c:493,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:495,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:496,1
    - Dst: ospf6_lsa_originate_process
      Src: /src/frr/ospf6d/ospf6_nssa.c:499,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:502,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 59
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 369
    functionDepth: 8
    functionLinenumber: 369
    functionLinenumberEnd: 505
    functionName: ospf6_abr_unapprove_translates
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - htons
    - htonl
    - ospf6_lsa_create
    - memset
    - ospf6_lsa_originate_process
    - zlog_debug
    - ALL_LSDB_TYPED
    - ospf6_prefix_apply_mask
    - if
    - ospf6_lsa_checksum
    - prefix_same
    - ospf6_lsa_translated_nssa_new
    - UNSET_FLAG
    - ospf6_prefix_in6_addr
    - ospf6_route_lookup_bestmatch
    - memcpy
    - CHECK_FLAG
    - ospf6_new_ls_seqnum
    - SET_FLAG
    - OSPF6_PREFIX_SPACE
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_unapprove_translates(struct ospf6 *ospf6)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:515,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/ospf6d/ospf6_nssa.c:520,1
    - Dst: ospf6_flood_clear_area
      Src: /src/frr/ospf6d/ospf6_nssa.c:521,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_nssa.c:523,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:524,1
    - Dst: assert
      Src: /src/frr/ospf6d/ospf6_nssa.c:540,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_nssa.c:543,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:549,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_nssa.c:553,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_nssa.c:557,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:560,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:562,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:563,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:569,1
    - Dst: ospf6_ls_retransmit_delete_nbr_as
      Src: /src/frr/ospf6d/ospf6_nssa.c:571,1
    - Dst: ospf6_lsa_premature_aging
      Src: /src/frr/ospf6d/ospf6_nssa.c:574,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:577,1
    - Dst: ospf6_lsa_age_current
      Src: /src/frr/ospf6d/ospf6_nssa.c:584,1
    - Dst: ospf6_lsa_translated_nssa_new::ospf6_lsa_translated_nssa_new
      Src: /src/frr/ospf6d/ospf6_nssa.c:585,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:588,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:596,1
    - Dst: ospf6_abr_translate_nssa::ospf6_abr_translate_nssa
      Src: /src/frr/ospf6d/ospf6_nssa.c:598,1
    - Dst: OSPF6_LSA_HEADER_END
      Src: /src/frr/ospf6d/ospf6_nssa.c:621,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:624,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:627,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:634,1
    - Dst: ospf6_prefix_in6_addr
      Src: /src/frr/ospf6d/ospf6_nssa.c:640,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:642,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:644,1
    - Dst: ospf6_route_lookup_bestmatch
      Src: /src/frr/ospf6d/ospf6_nssa.c:651,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:652,1
    - Dst: prefix_same
      Src: /src/frr/ospf6d/ospf6_nssa.c:653,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:658,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:661,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:663,1
    - Dst: ospf6_route_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:676,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:678,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:678,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_nssa.c:683,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ospf6
    - lsa
    argTypes:
    - struct ospf6*
    - struct ospf6_lsa*
    assertStmts:
    - condition: (type7)
      pos:
        line_end: 539
        line_start: 539
        source_file: /src/frr/ospf6d/ospf6_nssa.c
    constantsTouched: []
    func_position:
      end: 687
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 687
    functionName: ospf6_ls_retransmit_delete_nbr_as
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 1
    functionsReached:
    - OSPF6_LSA_HEADER_END
    - ospf6_lsa_premature_aging
    - htons
    - ospf6_ls_retransmit_delete_nbr_as
    - ospf6_route_lookup
    - ospf6_lsa_translated_nssa_new::ospf6_lsa_translated_nssa_new
    - ospf6_flood_clear_area
    - ospf6_abr_translate_nssa::ospf6_abr_translate_nssa
    - OSPF6_LSA_IS_MAXAGE
    - zlog_debug
    - if
    - assert
    - prefix_same
    - ospf6_prefix_in6_addr
    - ospf6_route_lookup_bestmatch
    - ospf6_lsa_age_current
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_ls_retransmit_delete_nbr_as(struct ospf6 *ospf6,\n\t\t\t\t\t
      \     struct ospf6_lsa *lsa)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:727,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_nssa.c:729,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_nssa.c:730,1
    - Dst: if
      Src: /src/frr/ospf6d/ospf6_nssa.c:734,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:735,1
    - Dst: continue
      Src: /src/frr/ospf6d/ospf6_nssa.c:738,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:742,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:745,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_nssa.c:746,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:747,1
    - Dst: ospf6_abr_translate_nssa
      Src: /src/frr/ospf6d/ospf6_nssa.c:750,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:755,1
    - Dst: ospf6_abr_send_nssa_aggregates
      Src: /src/frr/ospf6d/ospf6_nssa.c:758,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:765,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_nssa.c:767,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:772,1
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_nssa.c:775,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_nssa.c:776,1
    - Dst: ospf6_abr_range_update
      Src: /src/frr/ospf6d/ospf6_nssa.c:777,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:781,1
    - Dst: ospf6_abr_remove_unapproved_translates
      Src: /src/frr/ospf6d/ospf6_nssa.c:784,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:792,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:794,1
    - Dst: ALL_LSDB_TYPED
      Src: /src/frr/ospf6d/ospf6_nssa.c:795,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:796,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:797,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:798,1
    - Dst: ospf6_lsa_premature_aging
      Src: /src/frr/ospf6d/ospf6_nssa.c:802,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:807,1
    - Dst: ospf6_abr_nssa_type_7_default_create
      Src: /src/frr/ospf6d/ospf6_nssa.c:810,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:818,1
    - Dst: ospf6_route_create
      Src: /src/frr/ospf6d/ospf6_nssa.c:821,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_nssa.c:825,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:828,1
    - Dst: ospf6_nssa_lsa_originate
      Src: /src/frr/ospf6d/ospf6_nssa.c:849,1
    - Dst: ospf6_route_delete
      Src: /src/frr/ospf6d/ospf6_nssa.c:850,1
    - Dst: ospf6_abr_nssa_type_7_default_delete
      Src: /src/frr/ospf6d/ospf6_nssa.c:853,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:858,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:858,1
    - Dst: OSPF6_LSA_IS_MAXAGE
      Src: /src/frr/ospf6d/ospf6_nssa.c:860,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:862,1
    - Dst: ospf6_lsa_purge
      Src: /src/frr/ospf6d/ospf6_nssa.c:866,1
    - Dst: ospf6_abr_nssa_type_7_defaults
      Src: /src/frr/ospf6d/ospf6_nssa.c:871,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/ospf6d/ospf6_nssa.c:876,1
    - Dst: IS_AREA_NSSA
      Src: /src/frr/ospf6d/ospf6_nssa.c:877,1
    - Dst: IS_OSPF6_ABR
      Src: /src/frr/ospf6d/ospf6_nssa.c:878,1
    - Dst: IS_OSPF6_ASBR
      Src: /src/frr/ospf6d/ospf6_nssa.c:879,1
    - Dst: ospf6_abr_nssa_type_7_default_create
      Src: /src/frr/ospf6d/ospf6_nssa.c:881,1
    - Dst: ospf6_abr_nssa_type_7_default_delete
      Src: /src/frr/ospf6d/ospf6_nssa.c:883,1
    - Dst: ospf6_abr_nssa_task
      Src: /src/frr/ospf6d/ospf6_nssa.c:887,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:890,1
    - Dst: IS_OSPF6_ABR
      Src: /src/frr/ospf6d/ospf6_nssa.c:892,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:894,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:900,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:906,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:910,1
    - Dst: ospf6_abr_unapprove_translates
      Src: /src/frr/ospf6d/ospf6_nssa.c:912,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:916,1
    - Dst: ospf6_abr_send_nssa_aggregates
      Src: /src/frr/ospf6d/ospf6_nssa.c:917,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:924,1
    - Dst: ospf6_abr_process_nssa_translates
      Src: /src/frr/ospf6d/ospf6_nssa.c:925,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:929,1
    - Dst: ospf6_abr_remove_unapproved_translates
      Src: /src/frr/ospf6d/ospf6_nssa.c:930,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:933,1
    - Dst: ospf6_redistribute_check
      Src: /src/frr/ospf6d/ospf6_nssa.c:936,1
    - Dst: ospf6_zebra_is_redistribute
      Src: /src/frr/ospf6d/ospf6_nssa.c:943,1
    - Dst: ospf6_redist_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:948,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_nssa.c:953,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_nssa.c:954,1
    - Dst: ospf6_asbr_routemap_update
      Src: /src/frr/ospf6d/ospf6_nssa.c:955,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_nssa.c:956,1
    - Dst: zlog_warn
      Src: /src/frr/ospf6d/ospf6_nssa.c:957,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_nssa.c:959,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_nssa.c:965,1
    - Dst: route_map_apply
      Src: /src/frr/ospf6d/ospf6_nssa.c:966,1
    - Dst: ROUTEMAP
      Src: /src/frr/ospf6d/ospf6_nssa.c:966,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:969,1
    - Dst: ROUTEMAP_NAME
      Src: /src/frr/ospf6d/ospf6_nssa.c:970,1
    - Dst: ospf6_abr_task_timer
      Src: /src/frr/ospf6d/ospf6_nssa.c:979,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospf6d/ospf6_nssa.c:981,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:984,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_nssa.c:986,1
    - Dst: ospf6_abr_nssa_check_status
      Src: /src/frr/ospf6d/ospf6_nssa.c:987,1
    - Dst: ospf6_abr_task
      Src: /src/frr/ospf6d/ospf6_nssa.c:988,1
    - Dst: ospf6_abr_nssa_task
      Src: /src/frr/ospf6d/ospf6_nssa.c:990,1
    - Dst: ospf6_schedule_abr_task
      Src: /src/frr/ospf6d/ospf6_nssa.c:993,1
    - Dst: event_is_scheduled
      Src: /src/frr/ospf6d/ospf6_nssa.c:995,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:997,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:1002,1
    - Dst: event_add_timer
      Src: /src/frr/ospf6d/ospf6_nssa.c:1004,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:1016,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1019,1
    - Dst: ALL_LSDB_TYPED_ADVRTR
      Src: /src/frr/ospf6d/ospf6_nssa.c:1020,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1021,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1022,1
    - Dst: ospf6_flood
      Src: /src/frr/ospf6d/ospf6_nssa.c:1023,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_nssa.c:1026,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:1027,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1028,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1032,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1033,1
    - Dst: ospf6_flood
      Src: /src/frr/ospf6d/ospf6_nssa.c:1035,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 1
    argNames:
    - ospf6
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 713
    functionDepth: 9
    functionLinenumber: 713
    functionLinenumberEnd: 1036
    functionName: ospf6_abr_process_nssa_translates
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 1
    functionsReached:
    - ospf6_abr_task_timer
    - ospf6_lsa_premature_aging
    - ospf6_abr_task
    - htons
    - ospf6_nssa_lsa_originate
    - ROUTEMAP
    - ospf6_redist_lookup
    - zlog_warn
    - continue
    - ospf6_route_head
    - ospf6_abr_nssa_type_7_default_delete
    - ospf6_abr_nssa_check_status
    - memset
    - OSPF6_LSA_IS_MAXAGE
    - ALL_LIST_ELEMENTS_RO
    - ospf6_abr_nssa_type_7_default_create
    - ospf6_route_create
    - zlog_debug
    - ALL_LSDB_TYPED
    - ospf6_abr_send_nssa_aggregates
    - ospf6_asbr_routemap_update
    - ospf6_schedule_abr_task
    - EVENT_ARG
    - if
    - ospf6_abr_process_nssa_translates
    - ospf6_route_delete
    - event_is_scheduled
    - ROUTEMAP_NAME
    - ospf6_flood
    - ospf6_abr_remove_unapproved_translates
    - IS_OSPF6_ASBR
    - ospf6_zebra_is_redistribute
    - ospf6_abr_unapprove_translates
    - ospf6_abr_nssa_type_7_defaults
    - ospf6_check_and_set_router_abr
    - ALL_LSDB_TYPED_ADVRTR
    - event_add_timer
    - ospf6_lsa_purge
    - ospf6_abr_range_update
    - IS_AREA_NSSA
    - ospf6_redistribute_check
    - CHECK_FLAG
    - ospf6_abr_nssa_task
    - ospf6_route_next
    - SET_FLAG
    - route_map_apply
    - ospf6_abr_translate_nssa
    - IS_OSPF6_ABR
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: void ospf6_abr_process_nssa_translates(struct ospf6 *ospf6)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_nssa.c:1050,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_nssa.c:1052,1
    - Dst: ospf6_nssa_lsa_originate
      Src: /src/frr/ospf6d/ospf6_nssa.c:1057,1
    - Dst: route_top
      Src: /src/frr/ospf6d/ospf6_nssa.c:1063,1
    - Dst: route_next
      Src: /src/frr/ospf6d/ospf6_nssa.c:1064,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1070,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:1073,1
    - Dst: ospf6_nssa_lsa_originate
      Src: /src/frr/ospf6d/ospf6_nssa.c:1077,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 1
    argNames:
    - area
    argTypes:
    - struct ospf6_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1041
    functionDepth: 3
    functionLinenumber: 1041
    functionLinenumberEnd: 1080
    functionName: ospf6_check_and_originate_type7_lsa
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - ospf6_nssa_lsa_originate
    - CHECK_FLAG
    - route_top
    - route_next
    - ospf6_route_next
    - zlog_debug
    - ospf6_route_head
    linkageType: ''
    returnType: void
    signature: void ospf6_check_and_originate_type7_lsa(struct ospf6_area *area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ospf6_route_head
      Src: /src/frr/ospf6d/ospf6_nssa.c:1086,1
    - Dst: ospf6_route_next
      Src: /src/frr/ospf6d/ospf6_nssa.c:1087,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:1088,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1088,1
    - Dst: EVENT_OFF
      Src: /src/frr/ospf6d/ospf6_nssa.c:1092,1
    - Dst: event_add_event
      Src: /src/frr/ospf6d/ospf6_nssa.c:1093,1
    - Dst: ospf6_as_external_lsa_originate
      Src: /src/frr/ospf6d/ospf6_nssa.c:1096,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - o
    argTypes:
    - struct ospf6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1082
    functionDepth: 9
    functionLinenumber: 1082
    functionLinenumberEnd: 1099
    functionName: ospf6_ase_lsa_refresh
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - ospf6_as_external_lsa_originate
    - htons
    - ospf6_route_head
    - ospf6_route_next
    - EVENT_OFF
    - ospf6_lsdb_lookup
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void ospf6_ase_lsa_refresh(struct ospf6 *o)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IS_OSPF6_DEBUG_ORIGINATE
      Src: /src/frr/ospf6d/ospf6_nssa.c:1241,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:1242,1
    - Dst: memset
      Src: /src/frr/ospf6d/ospf6_nssa.c:1245,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1256,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1258,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1262,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1264,1
    - Dst: OSPF6_ASBR_METRIC_SET
      Src: /src/frr/ospf6d/ospf6_nssa.c:1267,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1280,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:1283,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_nssa.c:1284,1
    - Dst: ospf6_prefix_apply_mask
      Src: /src/frr/ospf6d/ospf6_nssa.c:1285,1
    - Dst: OSPF6_PREFIX_SPACE
      Src: /src/frr/ospf6d/ospf6_nssa.c:1286,1
    - Dst: ospf6_get_nssa_fwd_addr
      Src: /src/frr/ospf6d/ospf6_nssa.c:1289,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:1291,1
    - Dst: SET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1293,1
    - Dst: UNSET_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1295,1
    - Dst: CHECK_FLAG
      Src: /src/frr/ospf6d/ospf6_nssa.c:1299,1
    - Dst: htonl
      Src: /src/frr/ospf6d/ospf6_nssa.c:1300,1
    - Dst: memcpy
      Src: /src/frr/ospf6d/ospf6_nssa.c:1302,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1308,1
    - Dst: ospf6_new_ls_seqnum
      Src: /src/frr/ospf6d/ospf6_nssa.c:1312,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1314,1
    - Dst: ospf6_lsa_checksum
      Src: /src/frr/ospf6d/ospf6_nssa.c:1317,1
    - Dst: ospf6_lsa_create
      Src: /src/frr/ospf6d/ospf6_nssa.c:1319,1
    - Dst: ospf6_lsa_originate_area
      Src: /src/frr/ospf6d/ospf6_nssa.c:1322,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 3
    argNames:
    - route
    - area
    - p_bit
    argTypes:
    - struct ospf6_route*
    - struct ospf6_area*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1229
    functionDepth: 8
    functionLinenumber: 1229
    functionLinenumberEnd: 1323
    functionName: ospf6_nssa_lsa_originate
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 3
    functionsReached:
    - ospf6_lsa_checksum
    - ospf6_lsa_create
    - ospf6_get_nssa_fwd_addr
    - htonl
    - memset
    - htons
    - CHECK_FLAG
    - ospf6_new_ls_seqnum
    - ospf6_lsa_originate_area
    - SET_FLAG
    - IS_OSPF6_DEBUG_ORIGINATE
    - UNSET_FLAG
    - zlog_debug
    - OSPF6_ASBR_METRIC_SET
    - OSPF6_PREFIX_SPACE
    - ospf6_prefix_apply_mask
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf6_nssa_lsa_originate(struct ospf6_route *route,\n\t\t\t      struct
      ospf6_area *area, bool p_bit)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:1332,1
    - Dst: ospf6_check_and_set_router_abr
      Src: /src/frr/ospf6d/ospf6_nssa.c:1334,1
    - Dst: ospf6_lsdb_lookup
      Src: /src/frr/ospf6d/ospf6_nssa.c:1337,1
    - Dst: htons
      Src: /src/frr/ospf6d/ospf6_nssa.c:1337,1
    - Dst: zlog_debug
      Src: /src/frr/ospf6d/ospf6_nssa.c:1342,1
    - Dst: ospf6_lsa_translated_nssa_new
      Src: /src/frr/ospf6d/ospf6_nssa.c:1343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - area
    - lsa
    argTypes:
    - struct ospf6_area*
    - struct ospf6_lsa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1325
    functionDepth: 2
    functionLinenumber: 1325
    functionLinenumberEnd: 1345
    functionName: ospf6_abr_check_translate_nssa
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 1
    functionsReached:
    - htons
    - ospf6_lsa_translated_nssa_new
    - zlog_debug
    - ospf6_check_and_set_router_abr
    - ospf6_lsdb_lookup
    linkageType: ''
    returnType: void
    signature: "void ospf6_abr_check_translate_nssa(struct ospf6_area *area,\n\t\t\t\t
      \   struct ospf6_lsa *lsa)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/ospf6d/ospf6_nssa.c:1471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1468
    functionDepth: 2
    functionLinenumber: 1468
    functionLinenumberEnd: 1472
    functionName: config_write_ospf6_debug_nssa
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void config_write_ospf6_debug_nssa(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_nssa.c:1476,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_nssa.c:1477,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_nssa.c:1479,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_nssa.c:1480,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_nssa.c:1481,1
    - Dst: install_element
      Src: /src/frr/ospf6d/ospf6_nssa.c:1482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1474
    functionDepth: 1
    functionLinenumber: 1474
    functionLinenumberEnd: 1483
    functionName: install_element_ospf6_debug_nssa
    functionSourceFile: /src/frr/ospf6d/ospf6_nssa.c
    functionUses: 0
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void install_element_ospf6_debug_nssa(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/pbrd/pbr_debug.c:33,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/pbrd/pbr_debug.c:34,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pbrd/pbr_debug.c:37,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/pbrd/pbr_debug.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 40
    functionName: pbr_debug_set_all
    functionSourceFile: /src/frr/pbrd/pbr_debug.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - array_size
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: void
    signature: void pbr_debug_set_all(uint32_t flags, bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/pbrd/pbr_debug.c:49,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pbrd/pbr_debug.c:50,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_debug.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - config
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: pbr_debug_config_write_helper
    functionSourceFile: /src/frr/pbrd/pbr_debug.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - array_size
    - vty_out
    linkageType: ''
    returnType: int
    signature: int pbr_debug_config_write_helper(struct vty *vty, bool config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_debug_config_write_helper
      Src: /src/frr/pbrd/pbr_debug.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: pbr_debug_config_write
    functionSourceFile: /src/frr/pbrd/pbr_debug.c
    functionUses: 0
    functionsReached:
    - pbr_debug_config_write_helper
    linkageType: ''
    returnType: int
    signature: int pbr_debug_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_init
      Src: /src/frr/pbrd/pbr_debug.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: pbr_debug_init
    functionSourceFile: /src/frr/pbrd/pbr_debug.c
    functionUses: 0
    functionsReached:
    - debug_init
    linkageType: ''
    returnType: void
    signature: void pbr_debug_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pbrd/pbr_zebra.c:40,1
    - Dst: assert
      Src: /src/frr/pbrd/pbr_zebra.c:41,1
    - Dst: XCALLOC
      Src: /src/frr/pbrd/pbr_zebra.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/frr/pbrd/pbr_zebra.c
    - condition: (!ifp->info)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/frr/pbrd/pbr_zebra.c
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: pbr_if_new
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - assert
    - XCALLOC
    linkageType: ''
    returnType: struct pbr_interface
    signature: struct pbr_interface *pbr_if_new(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_zebra.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: pbr_if_del
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pbr_if_del(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:57,1
    - Dst: pbr_if_new
      Src: /src/frr/pbrd/pbr_zebra.c:60,1
    - Dst: pbr_nht_interface_update
      Src: /src/frr/pbrd/pbr_zebra.c:62,1
    - Dst: pbr_nht_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_zebra.c:64,1
    - Dst: pbr_map_policy_interface_update
      Src: /src/frr/pbrd/pbr_zebra.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: pbr_ifp_create
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - pbr_nht_interface_update
    - pbr_if_new
    - pbr_nht_nexthop_interface_update
    - DEBUGD
    - pbr_map_policy_interface_update
    linkageType: ''
    returnType: int
    signature: int pbr_ifp_create(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:73,1
    - Dst: pbr_map_policy_interface_update
      Src: /src/frr/pbrd/pbr_zebra.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: pbr_ifp_destroy
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_map_policy_interface_update
    linkageType: ''
    returnType: int
    signature: int pbr_ifp_destroy(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/pbrd/pbr_zebra.c:85,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:87,1
    - Dst: prefix2str
      Src: /src/frr/pbrd/pbr_zebra.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 80
    functionDepth: 5
    functionLinenumber: 80
    functionLinenumberEnd: 92
    functionName: interface_address_add
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 5
    functionsReached:
    - DEBUGD
    - prefix2str
    - zebra_interface_address_read
    linkageType: ''
    returnType: int
    signature: int interface_address_add(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/pbrd/pbr_zebra.c:98,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:103,1
    - Dst: connected_free
      Src: /src/frr/pbrd/pbr_zebra.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 94
    functionDepth: 5
    functionLinenumber: 94
    functionLinenumberEnd: 108
    functionName: interface_address_delete
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 4
    functionsReached:
    - DEBUGD
    - zebra_interface_address_read
    - connected_free
    linkageType: ''
    returnType: int
    signature: int interface_address_delete(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:112,1
    - Dst: pbr_nht_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_zebra.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: pbr_ifp_up
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_nht_nexthop_interface_update
    linkageType: ''
    returnType: int
    signature: int pbr_ifp_up(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:121,1
    - Dst: pbr_nht_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_zebra.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: pbr_ifp_down
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_nht_nexthop_interface_update
    linkageType: ''
    returnType: int
    signature: int pbr_ifp_down(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_vrf_update_read
      Src: /src/frr/pbrd/pbr_zebra.c:133,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:137,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:143,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/pbrd/pbr_zebra.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 149
    functionName: interface_vrf_update
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 3
    functionsReached:
    - zebra_interface_vrf_update_read
    - DEBUGD
    - if_update_to_new_vrf
    linkageType: ''
    returnType: int
    signature: int interface_vrf_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zapi_route_notify_decode
      Src: /src/frr/pbrd/pbr_zebra.c:157,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:163,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:168,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:173,1
    - Dst: pbr_nht_route_installed_for_table
      Src: /src/frr/pbrd/pbr_zebra.c:176,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:179,1
    - Dst: pbr_nht_route_removed_for_table
      Src: /src/frr/pbrd/pbr_zebra.c:182,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:185,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 192
    functionName: route_notify_owner
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 3
    functionsReached:
    - DEBUGD
    - pbr_nht_route_removed_for_table
    - zapi_route_notify_decode
    - pbr_nht_route_installed_for_table
    linkageType: ''
    returnType: int
    signature: int route_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zapi_rule_notify_decode
      Src: /src/frr/pbrd/pbr_zebra.c:203,1
    - Dst: pbrms_lookup_unique
      Src: /src/frr/pbrd/pbr_zebra.c:208,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:210,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:233,1
    - Dst: zapi_rule_notify_owner2str
      Src: /src/frr/pbrd/pbr_zebra.c:234,1
    - Dst: pbr_map_final_interface_deletion
      Src: /src/frr/pbrd/pbr_zebra.c:236,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 239
    functionName: rule_notify_owner
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbrms_lookup_unique
    - zapi_rule_notify_decode
    - pbr_map_final_interface_deletion
    - zapi_rule_notify_owner2str
    linkageType: ''
    returnType: int
    signature: int rule_notify_owner(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:243,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/pbrd/pbr_zebra.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: zebra_connected
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:256,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/pbrd/pbr_zebra.c:259,1
    - Dst: switch
      Src: /src/frr/pbrd/pbr_zebra.c:264,1
    - Dst: memcpy
      Src: /src/frr/pbrd/pbr_zebra.c:276,1
    - Dst: memcpy
      Src: /src/frr/pbrd/pbr_zebra.c:281,1
    - Dst: zclient_route_send
      Src: /src/frr/pbrd/pbr_zebra.c:292,1
    - Dst: route_add
      Src: /src/frr/pbrd/pbr_zebra.c:299,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:304,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_zebra.c:306,1
    - Dst: SET_FLAG
      Src: /src/frr/pbrd/pbr_zebra.c:315,1
    - Dst: SET_FLAG
      Src: /src/frr/pbrd/pbr_zebra.c:316,1
    - Dst: SET_FLAG
      Src: /src/frr/pbrd/pbr_zebra.c:317,1
    - Dst: route_add_helper
      Src: /src/frr/pbrd/pbr_zebra.c:320,1
    - Dst: route_add_helper
      Src: /src/frr/pbrd/pbr_zebra.c:321,1
    - Dst: route_add_helper
      Src: /src/frr/pbrd/pbr_zebra.c:324,1
    - Dst: route_add_helper
      Src: /src/frr/pbrd/pbr_zebra.c:327,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:330,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:335,1
    - Dst: route_delete
      Src: /src/frr/pbrd/pbr_zebra.c:345,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:349,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_zebra.c:351,1
    - Dst: SET_FLAG
      Src: /src/frr/pbrd/pbr_zebra.c:357,1
    - Dst: zclient_route_send
      Src: /src/frr/pbrd/pbr_zebra.c:362,1
    - Dst: zclient_route_send
      Src: /src/frr/pbrd/pbr_zebra.c:366,1
    - Dst: zclient_route_send
      Src: /src/frr/pbrd/pbr_zebra.c:370,1
    - Dst: zclient_route_send
      Src: /src/frr/pbrd/pbr_zebra.c:372,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:375,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:380,1
    - Dst: pbr_zebra_nexthop_update
      Src: /src/frr/pbrd/pbr_zebra.c:386,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/pbrd/pbr_zebra.c:392,1
    - Dst: zlog_err
      Src: /src/frr/pbrd/pbr_zebra.c:393,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pbrd/pbr_zebra.c:397,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:399,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:403,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - api
    - nhg
    - install_afi
    argTypes:
    - struct zapi_route*
    - struct nexthop_group
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 247
    functionDepth: 5
    functionLinenumber: 247
    functionLinenumberEnd: 413
    functionName: route_add_helper
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 1
    functionsReached:
    - switch
    - route_add_helper
    - DEBUG_MODE_CHECK
    - memset
    - pbr_zebra_nexthop_update
    - ALL_NEXTHOPS
    - DEBUGD
    - route_add
    - zlog_err
    - SET_FLAG
    - zapi_nexthop_update_decode
    - zclient_route_send
    - route_delete
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void route_add_helper(struct zapi_route *api, struct nexthop_group
      nhg,\n\t\t\t     uint8_t install_afi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/pbrd/pbr_zebra.c:435,1
    - Dst: array_size
      Src: /src/frr/pbrd/pbr_zebra.c:436,1
    - Dst: zclient_init
      Src: /src/frr/pbrd/pbr_zebra.c:438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 440
    functionName: pbr_zebra_init
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_init
    - array_size
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void pbr_zebra_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pbrd/pbr_zebra.c:450,1
    - Dst: memcpy
      Src: /src/frr/pbrd/pbr_zebra.c:464,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pbrd/pbr_zebra.c:466,1
    - Dst: zclient_send_rnh
      Src: /src/frr/pbrd/pbr_zebra.c:475,1
    - Dst: zlog_warn
      Src: /src/frr/pbrd/pbr_zebra.c:478,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - nhop
    - reg
    argTypes:
    - struct nexthop*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 442
    functionDepth: 5
    functionLinenumber: 442
    functionLinenumberEnd: 480
    functionName: pbr_send_rnh
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - zclient_send_rnh
    - zlog_warn
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pbr_send_rnh(struct nexthop *nhop, bool reg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pbrd/pbr_zebra.c:489,1
    - Dst: stream_putc
      Src: /src/frr/pbrd/pbr_zebra.c:494,1
    - Dst: stream_putc
      Src: /src/frr/pbrd/pbr_zebra.c:495,1
    - Dst: stream_put
      Src: /src/frr/pbrd/pbr_zebra.c:496,1
    - Dst: prefix_blen
      Src: /src/frr/pbrd/pbr_zebra.c:496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - s
    - p
    - family
    argTypes:
    - struct stream*
    - struct prefix*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 482
    functionDepth: 2
    functionLinenumber: 482
    functionLinenumberEnd: 497
    functionName: pbr_encode_pbr_map_sequence_prefix
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - stream_put
    - prefix_blen
    - stream_putc
    - memset
    linkageType: ''
    returnType: void
    signature: "void pbr_encode_pbr_map_sequence_prefix(struct stream *s,\n\t\t\t\t\t
      \      struct prefix *p,\n\t\t\t\t\t       unsigned char  family)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pbr_vrf_lookup_by_name
      Src: /src/frr/pbrd/pbr_zebra.c:509,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:512,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - s
    - pbrms
    - ifp
    argTypes:
    - struct stream*
    - struct pbr_map_sequence*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 499
    functionDepth: 2
    functionLinenumber: 499
    functionLinenumberEnd: 517
    functionName: pbr_encode_pbr_map_sequence_vrf
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_vrf_lookup_by_name
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void pbr_encode_pbr_map_sequence_vrf(struct stream *s,\n\t\t\t\tconst
      struct pbr_map_sequence *pbrms,\n\t\t\t\tconst struct interface *ifp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:529,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:530,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:531,1
    - Dst: stream_putc
      Src: /src/frr/pbrd/pbr_zebra.c:532,1
    - Dst: pbr_encode_pbr_map_sequence_prefix
      Src: /src/frr/pbrd/pbr_zebra.c:533,1
    - Dst: stream_putw
      Src: /src/frr/pbrd/pbr_zebra.c:534,1
    - Dst: pbr_encode_pbr_map_sequence_prefix
      Src: /src/frr/pbrd/pbr_zebra.c:535,1
    - Dst: stream_putw
      Src: /src/frr/pbrd/pbr_zebra.c:536,1
    - Dst: stream_putc
      Src: /src/frr/pbrd/pbr_zebra.c:537,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:538,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:540,1
    - Dst: stream_putw
      Src: /src/frr/pbrd/pbr_zebra.c:542,1
    - Dst: stream_putw
      Src: /src/frr/pbrd/pbr_zebra.c:543,1
    - Dst: stream_putw
      Src: /src/frr/pbrd/pbr_zebra.c:544,1
    - Dst: pbr_encode_pbr_map_sequence_vrf
      Src: /src/frr/pbrd/pbr_zebra.c:547,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:549,1
    - Dst: pbr_nht_get_table
      Src: /src/frr/pbrd/pbr_zebra.c:549,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:551,1
    - Dst: pbr_nht_get_table
      Src: /src/frr/pbrd/pbr_zebra.c:551,1
    - Dst: stream_put
      Src: /src/frr/pbrd/pbr_zebra.c:557,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - s
    - pbrms
    - ifp
    argTypes:
    - struct stream*
    - struct pbr_map_sequence*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 560
    functionName: pbr_encode_pbr_map_sequence
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - stream_put
    - pbr_encode_pbr_map_sequence_vrf
    - stream_putw
    - pbr_encode_pbr_map_sequence_prefix
    - pbr_nht_get_table
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: bool
    signature: "bool pbr_encode_pbr_map_sequence(struct stream *s,\n\t\t\t\t\tstruct
      pbr_map_sequence *pbrms,\n\t\t\t\t\tstruct interface *ifp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:571,1
    - Dst: stream_reset
      Src: /src/frr/pbrd/pbr_zebra.c:588,1
    - Dst: zclient_create_header
      Src: /src/frr/pbrd/pbr_zebra.c:590,1
    - Dst: stream_putl
      Src: /src/frr/pbrd/pbr_zebra.c:597,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:599,1
    - Dst: pbr_encode_pbr_map_sequence
      Src: /src/frr/pbrd/pbr_zebra.c:603,1
    - Dst: stream_putw_at
      Src: /src/frr/pbrd/pbr_zebra.c:604,1
    - Dst: stream_get_endp
      Src: /src/frr/pbrd/pbr_zebra.c:604,1
    - Dst: zclient_send_message
      Src: /src/frr/pbrd/pbr_zebra.c:605,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_zebra.c:607,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - pbrms
    - pmi
    - install
    - changed
    argTypes:
    - struct pbr_map_sequence*
    - struct pbr_map_interface*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 562
    functionDepth: 4
    functionLinenumber: 562
    functionLinenumberEnd: 612
    functionName: pbr_send_pbr_map
    functionSourceFile: /src/frr/pbrd/pbr_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - DEBUGD
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - pbr_encode_pbr_map_sequence
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: bool
    signature: "bool pbr_send_pbr_map(struct pbr_map_sequence *pbrms,\n\t\t      struct
      pbr_map_interface *pmi, bool install, bool changed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pbrd/pbr_nht.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: pbr_nhrc_hash_alloc
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *pbr_nhrc_hash_alloc(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_same
      Src: /src/frr/pbrd/pbr_nht.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 6
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: pbr_nhrc_hash_equal
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - nexthop_same
    linkageType: ''
    returnType: bool
    signature: bool pbr_nhrc_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/pbrd/pbr_nht.c:81,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:82,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:88,1
    - Dst: pbr_send_rnh
      Src: /src/frr/pbrd/pbr_nht.c:90,1
    - Dst: nexthop::nexthop
      Src: /src/frr/pbrd/pbr_nht.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 75
    functionDepth: 6
    functionLinenumber: 75
    functionLinenumberEnd: 94
    functionName: pbr_nh_alloc
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - XCALLOC::XCALLOC
    - pbr_send_rnh
    - DEBUGD
    - nexthop::nexthop
    - hash_get
    linkageType: ''
    returnType: void
    signature: void *pbr_nh_alloc(void *p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:100,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:105,1
    - Dst: pbr_send_rnh
      Src: /src/frr/pbrd/pbr_nht.c:107,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:110,1
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_nht.c:111,1
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_nht.c:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - pnhc
    argTypes:
    - struct pbr_nexthop_cache**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 96
    functionDepth: 6
    functionLinenumber: 96
    functionLinenumberEnd: 115
    functionName: pbr_nh_delete
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_send_rnh
    - DEBUGD
    - hash_lookup
    - XFREE
    - hash_release
    linkageType: ''
    returnType: void
    signature: void pbr_nh_delete(struct pbr_nexthop_cache **pnhc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nh_delete
      Src: /src/frr/pbrd/pbr_nht.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - p
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 7
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: pbr_nh_delete_iterate
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_nh_delete
    linkageType: ''
    returnType: void
    signature: void pbr_nh_delete_iterate(struct hash_bucket *b, void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_hash
      Src: /src/frr/pbrd/pbr_nht.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: pbr_nh_hash_key
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - nexthop_hash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbr_nh_hash_key(const void *arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/pbrd/pbr_nht.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 167
    functionName: pbr_nh_hash_equal
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool pbr_nh_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:171,1
    - Dst: hash_free
      Src: /src/frr/pbrd/pbr_nht.c:172,1
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_nht.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct pbr_nexthop_group_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 174
    functionName: pbr_nhgc_delete
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - hash_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pbr_nhgc_delete(struct pbr_nexthop_group_cache *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/pbrd/pbr_nht.c:182,1
    - Dst: strlcpy
      Src: /src/frr/pbrd/pbr_nht.c:184,1
    - Dst: name::name
      Src: /src/frr/pbrd/pbr_nht.c:184,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:187,1
    - Dst: name::name
      Src: /src/frr/pbrd/pbr_nht.c:188,1
    - Dst: table_id::table_id
      Src: /src/frr/pbrd/pbr_nht.c:188,1
    - Dst: hash_create_size
      Src: /src/frr/pbrd/pbr_nht.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 176
    functionDepth: 3
    functionLinenumber: 176
    functionLinenumberEnd: 193
    functionName: pbr_nhgc_alloc
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    - XCALLOC::XCALLOC
    - table_id::table_id
    - DEBUGD
    - strlcpy
    - name::name
    linkageType: ''
    returnType: void
    signature: void *pbr_nhgc_alloc(void *p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nhgc_find
      Src: /src/frr/pbrd/pbr_nht.c:201,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:204,1
    - Dst: pbr_nht_add_group
      Src: /src/frr/pbrd/pbr_nht.c:209,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:214,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 217
    functionName: pbr_nhgroup_add_cb
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_nht_add_group
    - DEBUGD
    - nhgc_find
    - pbr_map_check_nh_group_change
    linkageType: ''
    returnType: void
    signature: void pbr_nhgroup_add_cb(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - nhgc
    argTypes:
    - struct nexthop_group_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 221
    functionName: pbr_nhgroup_modify_cb
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbr_nhgroup_modify_cb(const struct nexthop_group_cmd *nhgc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pbrd/pbr_nht.c:233,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:234,1
    - Dst: pbr_nht_has_unallocated_table
      Src: /src/frr/pbrd/pbr_nht.c:238,1
    - Dst: zlog_warn
      Src: /src/frr/pbrd/pbr_nht.c:239,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:246,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:251,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pbrd/pbr_nht.c:256,1
    - Dst: nexthop2str
      Src: /src/frr/pbrd/pbr_nht.c:257,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:258,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:262,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:263,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pbrd/pbr_nht.c:267,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pbrd/pbr_nht.c:270,1
    - Dst: pbr_nht_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_nht.c:272,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - nhgc
    - nhop
    argTypes:
    - struct nexthop_group_cmd*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 223
    functionDepth: 4
    functionLinenumber: 223
    functionLinenumberEnd: 274
    functionName: pbr_nhgroup_add_nexthop_cb
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - DEBUG_MODE_CHECK
    - pbr_nht_nexthop_interface_update
    - pbr_nht_install_nexthop_group
    - DEBUGD
    - strlcpy
    - IN6_IS_ADDR_LINKLOCAL
    - pbr_nht_has_unallocated_table
    - hash_lookup
    - zlog_warn
    - pbr_map_check_nh_group_change
    - hash_get
    - nexthop2str
    linkageType: ''
    returnType: void
    signature: "void pbr_nhgroup_add_nexthop_cb(const struct nexthop_group_cmd *nhgc,\n\t\t\t\tconst
      struct nexthop *nhop)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pbrd/pbr_nht.c:287,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:288,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:299,1
    - Dst: pbr_nh_delete
      Src: /src/frr/pbrd/pbr_nht.c:302,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/pbrd/pbr_nht.c:304,1
    - Dst: nexthop2str
      Src: /src/frr/pbrd/pbr_nht.c:305,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:306,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:311,1
    - Dst: pbr_nht_uninstall_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:313,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - nhgc
    - nhop
    argTypes:
    - struct nexthop_group_cmd*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 276
    functionDepth: 7
    functionLinenumber: 276
    functionLinenumberEnd: 316
    functionName: pbr_nhgroup_del_nexthop_cb
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - pbr_nht_install_nexthop_group
    - DEBUGD
    - strlcpy
    - hash_lookup
    - pbr_nh_delete
    - pbr_nht_uninstall_nexthop_group
    - pbr_map_check_nh_group_change
    - hash_release
    - nexthop2str
    linkageType: ''
    returnType: void
    signature: "void pbr_nhgroup_del_nexthop_cb(const struct nexthop_group_cmd *nhgc,\n\t\t\t\tconst
      struct nexthop *nhop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:320,1
    - Dst: pbr_nht_delete_group
      Src: /src/frr/pbrd/pbr_nht.c:323,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 326
    functionName: pbr_nhgroup_delete_cb
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_map_check_nh_group_change
    - DEBUGD
    - pbr_nht_delete_group
    linkageType: ''
    returnType: void
    signature: void pbr_nhgroup_delete_cb(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:333,1
    - Dst: pbr_map_schedule_policy_from_nhg
      Src: /src/frr/pbrd/pbr_nht.c:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - pnhgc
    - table_id
    - installed
    argTypes:
    - struct pbr_nexthop_group_cache*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 341
    functionName: pbr_nht_find_nhg_from_table_update
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_map_schedule_policy_from_nhg
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_find_nhg_from_table_update(struct pbr_nexthop_group_cache
      *pnhgc,\n\t\t\t\t   uint32_t table_id, bool installed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_find_nhg_from_table_update
      Src: /src/frr/pbrd/pbr_nht.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 351
    functionName: pbr_nht_find_nhg_from_table_install
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_nht_find_nhg_from_table_update
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_find_nhg_from_table_install(struct hash_bucket *b,\n\t\t\t\t\t\tvoid
      *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 357
    functionName: pbr_nht_route_installed_for_table
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_route_installed_for_table(uint32_t table_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_find_nhg_from_table_update
      Src: /src/frr/pbrd/pbr_nht.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 367
    functionName: pbr_nht_find_nhg_from_table_remove
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_nht_find_nhg_from_table_update
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_find_nhg_from_table_remove(struct hash_bucket *b,\n\t\t\t\t\t
      \      void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table_id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 373
    functionName: pbr_nht_route_removed_for_table
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_route_removed_for_table(uint32_t table_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/pbrd/pbr_nht.c:409,1
    - Dst: switch
      Src: /src/frr/pbrd/pbr_nht.c:412,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:436,1
    - Dst: afi2str
      Src: /src/frr/pbrd/pbr_nht.c:438,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:440,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:448,1
    - Dst: pbr_nht_which_afi
      Src: /src/frr/pbrd/pbr_nht.c:454,1
    - Dst: route_add
      Src: /src/frr/pbrd/pbr_nht.c:456,1
    - Dst: pbr_nht_uninstall_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:460,1
    - Dst: pbr_nht_which_afi
      Src: /src/frr/pbrd/pbr_nht.c:466,1
    - Dst: route_delete
      Src: /src/frr/pbrd/pbr_nht.c:470,1
    - Dst: pbr_nht_change_group
      Src: /src/frr/pbrd/pbr_nht.c:473,1
    - Dst: nhgc_find
      Src: /src/frr/pbrd/pbr_nht.c:480,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:484,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:485,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:486,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:489,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/pbrd/pbr_nht.c:495,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:500,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:502,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:506,1
    - Dst: pbr_nht_nexthop_make_name
      Src: /src/frr/pbrd/pbr_nht.c:509,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - nhg
    - nh_type
    argTypes:
    - struct nexthop_group
    - enum nexthop_types_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 386
    functionDepth: 4
    functionLinenumber: 386
    functionLinenumberEnd: 514
    functionName: pbr_nht_which_afi
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - switch
    - nhgc_find
    - pbr_nht_install_nexthop_group
    - memset
    - ALL_NEXTHOPS
    - DEBUGD
    - route_add
    - snprintf
    - afi2str
    - hash_lookup
    - hash_get
    - pbr_nht_nexthop_make_name
    - pbr_nht_uninstall_nexthop_group
    - pbr_nht_change_group
    - pbr_nht_which_afi
    - route_delete
    linkageType: ''
    returnType: afi_t
    signature: "afi_t pbr_nht_which_afi(struct nexthop_group nhg,\n\t\t\t       enum
      nexthop_types_t nh_type)"
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - pbrms
    - nhgc
    argTypes:
    - struct pbr_map_sequence*
    - struct nexthop_group_cmd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 541
    functionName: pbr_nht_set_seq_nhg_data
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_set_seq_nhg_data(struct pbr_map_sequence *pbrms,\n\t\t\t
      \     const struct nexthop_group_cmd *nhgc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/pbrd/pbr_nht.c:551,1
    - Dst: nhgc_find
      Src: /src/frr/pbrd/pbr_nht.c:553,1
    - Dst: pbr_nht_set_seq_nhg_data
      Src: /src/frr/pbrd/pbr_nht.c:557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - pbrms
    - name
    argTypes:
    - struct pbr_map_sequence*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 558
    functionName: pbr_nht_set_seq_nhg
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - nhgc_find
    - pbr_nht_set_seq_nhg_data
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void pbr_nht_set_seq_nhg(struct pbr_map_sequence *pbrms, const char
      *name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nexthop_group_new
      Src: /src/frr/pbrd/pbr_nht.c:570,1
    - Dst: XSTRDUP
      Src: /src/frr/pbrd/pbr_nht.c:571,1
    - Dst: pbr_nht_nexthop_make_name
      Src: /src/frr/pbrd/pbr_nht.c:573,1
    - Dst: nexthop_new
      Src: /src/frr/pbrd/pbr_nht.c:576,1
    - Dst: memcpy
      Src: /src/frr/pbrd/pbr_nht.c:577,1
    - Dst: nexthop_group_add_sorted
      Src: /src/frr/pbrd/pbr_nht.c:579,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:581,1
    - Dst: pbr_nht_nexthop_make_name
      Src: /src/frr/pbrd/pbr_nht.c:582,1
    - Dst: pbr_nht_has_unallocated_table
      Src: /src/frr/pbrd/pbr_nht.c:585,1
    - Dst: zlog_warn
      Src: /src/frr/pbrd/pbr_nht.c:586,1
    - Dst: XSTRDUP
      Src: /src/frr/pbrd/pbr_nht.c:593,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:595,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:598,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/pbrd/pbr_nht.c:601,1
    - Dst: strlcpy
      Src: /src/frr/pbrd/pbr_nht.c:604,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pbrd/pbr_nht.c:610,1
    - Dst: strlcpy
      Src: /src/frr/pbrd/pbr_nht.c:613,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:616,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - pbrms
    - nhop
    argTypes:
    - struct pbr_map_sequence*
    - struct nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 560
    functionDepth: 7
    functionLinenumber: 560
    functionLinenumberEnd: 617
    functionName: pbr_nht_add_individual_nexthop
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - nexthop_group_new
    - memset
    - pbr_nht_install_nexthop_group
    - strlcpy
    - nexthop_group_add_sorted
    - nexthop_new
    - pbr_nht_has_unallocated_table
    - zlog_warn
    - XSTRDUP
    - hash_get
    - vrf_lookup_by_id
    - pbr_nht_nexthop_make_name
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_add_individual_nexthop(struct pbr_map_sequence *pbrms,\n\t\t\t\t
      \   const struct nexthop *nhop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:628,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:629,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:630,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:635,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:637,1
    - Dst: pbr_nh_delete
      Src: /src/frr/pbrd/pbr_nht.c:638,1
    - Dst: pbr_nht_uninstall_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:639,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:641,1
    - Dst: pbr_nhgc_delete
      Src: /src/frr/pbrd/pbr_nht.c:642,1
    - Dst: nexthop_group_delete
      Src: /src/frr/pbrd/pbr_nht.c:644,1
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_nht.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - pbrms
    argTypes:
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 619
    functionDepth: 7
    functionLinenumber: 619
    functionLinenumberEnd: 646
    functionName: pbr_nht_release_individual_nexthop
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - snprintf
    - memset
    - pbr_nhgc_delete
    - nexthop_group_delete
    - hash_lookup
    - pbr_nh_delete
    - XFREE
    - pbr_nht_uninstall_nexthop_group
    - hash_release
    linkageType: ''
    returnType: void
    signature: void pbr_nht_release_individual_nexthop(struct pbr_map_sequence *pbrms)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_map_delete_nexthops
      Src: /src/frr/pbrd/pbr_nht.c:650,1
    - Dst: pbr_nht_release_individual_nexthop
      Src: /src/frr/pbrd/pbr_nht.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pbrms
    argTypes:
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 648
    functionDepth: 8
    functionLinenumber: 648
    functionLinenumberEnd: 653
    functionName: pbr_nht_delete_individual_nexthop
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_map_delete_nexthops
    - pbr_nht_release_individual_nexthop
    linkageType: ''
    returnType: void
    signature: void pbr_nht_delete_individual_nexthop(struct pbr_map_sequence *pbrms)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_has_unallocated_table
      Src: /src/frr/pbrd/pbr_nht.c:662,1
    - Dst: zlog_warn
      Src: /src/frr/pbrd/pbr_nht.c:663,1
    - Dst: nhgc_find
      Src: /src/frr/pbrd/pbr_nht.c:669,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:672,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:677,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:678,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:679,1
    - Dst: ALL_NEXTHOPS
      Src: /src/frr/pbrd/pbr_nht.c:681,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:686,1
    - Dst: if
      Src: /src/frr/pbrd/pbr_nht.c:687,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:688,1
    - Dst: pbr_nht_delete_group
      Src: /src/frr/pbrd/pbr_nht.c:696,1
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_nht.c:704,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_nht.c:705,1
    - Dst: strmatch
      Src: /src/frr/pbrd/pbr_nht.c:707,1
    - Dst: strlcpy
      Src: /src/frr/pbrd/pbr_nht.c:716,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:717,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:727,1
    - Dst: pbr_nht_update_next_unallocated_table_id
      Src: /src/frr/pbrd/pbr_nht.c:728,1
    - Dst: pbr_nhgc_delete
      Src: /src/frr/pbrd/pbr_nht.c:730,1
    - Dst: pbr_nht_nexthop_valid
      Src: /src/frr/pbrd/pbr_nht.c:733,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:735,1
    - Dst: pbr_nht_nexthop_group_valid
      Src: /src/frr/pbrd/pbr_nht.c:739,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:744,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:746,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:747,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:750,1
    - Dst: pbr_nht_individual_nexthop_gw_update
      Src: /src/frr/pbrd/pbr_nht.c:771,1
    - Dst: if_is_up
      Src: /src/frr/pbrd/pbr_nht.c:795,1
    - Dst: memcmp
      Src: /src/frr/pbrd/pbr_nht.c:809,1
    - Dst: if_is_up
      Src: /src/frr/pbrd/pbr_nht.c:862,1
    - Dst: assert
      Src: /src/frr/pbrd/pbr_nht.c:879,1
    - Dst: pbr_nht_individual_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_nht.c:883,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pbrd/pbr_nht.c:886,1
    - Dst: pbr_nht_individual_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_nht.c:887,1
    - Dst: pbr_nht_individual_nexthop_gw_update
      Src: /src/frr/pbrd/pbr_nht.c:894,1
    - Dst: pbr_nht_individual_nexthop_update
      Src: /src/frr/pbrd/pbr_nht.c:911,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:913,1
    - Dst: copy_nexthops
      Src: /src/frr/pbrd/pbr_nht.c:927,1
    - Dst: _nexthop_add
      Src: /src/frr/pbrd/pbr_nht.c:929,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:936,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:951,1
    - Dst: pbr_nexthop_group_cache_to_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:962,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:965,1
    - Dst: pbr_nht_uninstall_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:967,1
    - Dst: nexthops_free
      Src: /src/frr/pbrd/pbr_nht.c:970,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:973,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:978,1
    - Dst: strncmp
      Src: /src/frr/pbrd/pbr_nht.c:1012,1
    - Dst: pbr_vrf_name
      Src: /src/frr/pbrd/pbr_nht.c:1012,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1017,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1020,1
    - Dst: hash_walk
      Src: /src/frr/pbrd/pbr_nht.c:1029,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1032,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1035,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1036,1
    - Dst: pbr_send_rnh
      Src: /src/frr/pbrd/pbr_nht.c:1039,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1064,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1065,1
    - Dst: hash_walk
      Src: /src/frr/pbrd/pbr_nht.c:1071,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1079,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1081,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1083,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1086,1
    - Dst: pbr_map_check_vrf_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:1088,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1095,1
    - Dst: strncmp
      Src: /src/frr/pbrd/pbr_nht.c:1107,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1122,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1124,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1131,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1134,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1136,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1138,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1142,1
    - Dst: pbr_map_check_interface_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:1144,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1151,1
    - Dst: pbr_nht_individual_nexthop_update
      Src: /src/frr/pbrd/pbr_nht.c:1164,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:1166,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1185,1
    - Dst: pbr_nexthop_group_cache_to_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:1193,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:1196,1
    - Dst: pbr_nht_uninstall_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:1198,1
    - Dst: nexthops_free
      Src: /src/frr/pbrd/pbr_nht.c:1200,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:1203,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1208,1
    - Dst: jhash
      Src: /src/frr/pbrd/pbr_nht.c:1234,1
    - Dst: strlen
      Src: /src/frr/pbrd/pbr_nht.c:1234,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_nht.c:1244,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1259,1
    - Dst: pbr_nht_find_next_unallocated_table_id
      Src: /src/frr/pbrd/pbr_nht.c:1274,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1287,1
    - Dst: pbr_nht_update_next_unallocated_table_id
      Src: /src/frr/pbrd/pbr_nht.c:1290,1
    - Dst: pbr_nht_update_next_unallocated_table_id
      Src: /src/frr/pbrd/pbr_nht.c:1302,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1309,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1328,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1338,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:1339,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1340,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:1343,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1357,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:1358,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1360,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1373,1
    - Dst: nexthop_group_write_nexthop
      Src: /src/frr/pbrd/pbr_nht.c:1374,1
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_nht.c:1383,1
    - Dst: nexthop_group_json_nexthop
      Src: /src/frr/pbrd/pbr_nht.c:1384,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_nht.c:1385,1
    - Dst: json_object_array_add
      Src: /src/frr/pbrd/pbr_nht.c:1387,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_nht.c:1402,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1406,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1409,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_nht.c:1418,1
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_nht.c:1422,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_nht.c:1427,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_nht.c:1428,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_nht.c:1429,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_nht.c:1430,1
    - Dst: json_object_new_array
      Src: /src/frr/pbrd/pbr_nht.c:1432,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1435,1
    - Dst: json_object_object_add
      Src: /src/frr/pbrd/pbr_nht.c:1436,1
    - Dst: json_object_array_add
      Src: /src/frr/pbrd/pbr_nht.c:1439,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1449,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1459,1
    - Dst: hash_create_size
      Src: /src/frr/pbrd/pbr_nht.c:1464,1
    - Dst: hash_create_size
      Src: /src/frr/pbrd/pbr_nht.c:1467,1
    - Dst: hash_create_size
      Src: /src/frr/pbrd/pbr_nht.c:1469,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 288
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts:
    - condition: (pnhi->nhr || pnhi->ifp)
      pos:
        line_end: 878
        line_start: 878
        source_file: /src/frr/pbrd/pbr_nht.c
    constantsTouched: []
    func_position:
      end: 1480
      start: 655
    functionDepth: 6
    functionLinenumber: 655
    functionLinenumberEnd: 1480
    functionName: pbr_nht_add_group
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - strlen
    - pbr_nht_individual_nexthop_update
    - pbr_map_check_interface_nh_group_change
    - pbr_nht_install_nexthop_group
    - nexthop_group_json_nexthop
    - pbr_nhgc_delete
    - memcmp
    - pbr_nht_nexthop_group_valid
    - hash_lookup
    - zlog_warn
    - strncmp
    - pbr_vrf_id
    - json_object_string_add
    - pbr_map_check_vrf_nh_group_change
    - hash_walk
    - strmatch
    - json_object_boolean_add
    - nhgc_find
    - _nexthop_add
    - snprintf
    - memset
    - ALL_NEXTHOPS
    - ALL_LIST_ELEMENTS_RO
    - pbr_nht_update_next_unallocated_table_id
    - pbr_nht_delete_group
    - pbr_vrf_name
    - pbr_nht_has_unallocated_table
    - pbr_nht_find_next_unallocated_table_id
    - copy_nexthops
    - jhash
    - if
    - hash_iterate
    - pbr_map_check_nh_group_change
    - hash_get
    - if_is_up
    - assert
    - pbr_nht_nexthop_valid
    - pbr_nht_individual_nexthop_interface_update
    - vty_out
    - nexthop_group_write_nexthop
    - strlcpy
    - json_object_int_add
    - pbr_nht_uninstall_nexthop_group
    - hash_release
    - json_object_new_object
    - json_object_new_array
    - hash_create_size
    - pbr_send_rnh
    - json_object_array_add
    - DEBUGD
    - IN6_IS_ADDR_LINKLOCAL
    - strcmp
    - json_object_object_add
    - pbr_nht_individual_nexthop_gw_update
    - pbr_nexthop_group_cache_to_nexthop_group
    - RB_FOREACH
    - nexthops_free
    linkageType: ''
    returnType: struct pbr_nexthop_group_cache
    signature: struct pbr_nexthop_group_cache *pbr_nht_add_group(const char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pbrd/pbr_nht.c:879,1
    - Dst: pbr_nht_individual_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_nht.c:883,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pbrd/pbr_nht.c:886,1
    - Dst: pbr_nht_individual_nexthop_interface_update
      Src: /src/frr/pbrd/pbr_nht.c:887,1
    - Dst: pbr_nht_individual_nexthop_gw_update
      Src: /src/frr/pbrd/pbr_nht.c:894,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - pnhc
    - pnhi
    argTypes:
    - struct pbr_nexthop_cache*
    - struct pbr_nht_individual*
    assertStmts:
    - condition: (pnhi->nhr || pnhi->ifp)
      pos:
        line_end: 878
        line_start: 878
        source_file: /src/frr/pbrd/pbr_nht.c
    constantsTouched: []
    func_position:
      end: 900
      start: 876
    functionDepth: 1
    functionLinenumber: 876
    functionLinenumberEnd: 900
    functionName: pbr_nht_individual_nexthop_update
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - IN6_IS_ADDR_LINKLOCAL
    - pbr_nht_individual_nexthop_gw_update
    - pbr_nht_individual_nexthop_interface_update
    - assert
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_individual_nexthop_update(struct pbr_nexthop_cache *pnhc,\n\t\t\t\t\t
      \     struct pbr_nht_individual *pnhi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_individual_nexthop_update
      Src: /src/frr/pbrd/pbr_nht.c:911,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:913,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 902
    functionDepth: 2
    functionLinenumber: 902
    functionLinenumberEnd: 918
    functionName: pbr_nht_individual_nexthop_update_lookup
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_nht_individual_nexthop_update
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_individual_nexthop_update_lookup(struct hash_bucket *b,\n\t\t\t\t\t\t
      \    void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copy_nexthops
      Src: /src/frr/pbrd/pbr_nht.c:927,1
    - Dst: _nexthop_add
      Src: /src/frr/pbrd/pbr_nht.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 920
    functionDepth: 3
    functionLinenumber: 920
    functionLinenumberEnd: 930
    functionName: pbr_nexthop_group_cache_iterate_to_group
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - _nexthop_add
    - copy_nexthops
    linkageType: ''
    returnType: void
    signature: "void pbr_nexthop_group_cache_iterate_to_group(struct hash_bucket *b,\n\t\t\t\t\t\t
      \    void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - nhg
    - pnhgc
    argTypes:
    - struct nexthop_group*
    - struct pbr_nexthop_group_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 937
    functionName: pbr_nexthop_group_cache_to_nexthop_group
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: "void pbr_nexthop_group_cache_to_nexthop_group(struct nexthop_group
      *nhg,\n\t\t\t\t\t struct pbr_nexthop_group_cache *pnhgc)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:951,1
    - Dst: pbr_nexthop_group_cache_to_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:962,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:965,1
    - Dst: pbr_nht_uninstall_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:967,1
    - Dst: nexthops_free
      Src: /src/frr/pbrd/pbr_nht.c:970,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:973,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 939
    functionDepth: 3
    functionLinenumber: 939
    functionLinenumberEnd: 974
    functionName: pbr_nht_nexthop_update_lookup
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_map_check_nh_group_change
    - pbr_nht_install_nexthop_group
    - pbr_nexthop_group_cache_to_nexthop_group
    - pbr_nht_uninstall_nexthop_group
    - hash_iterate
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: void pbr_nht_nexthop_update_lookup(struct hash_bucket *b, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:978,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nhr
    argTypes:
    - struct zapi_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 976
    functionDepth: 1
    functionLinenumber: 976
    functionLinenumberEnd: 979
    functionName: pbr_nht_nexthop_update
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_nexthop_update(struct zapi_route *nhr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 987
    functionDepth: 0
    functionLinenumber: 987
    functionLinenumberEnd: 998
    functionName: pbr_nht_nhrc_vrf_change
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pbr_nht_nhrc_vrf_change(struct hash_bucket *b, void *data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/pbrd/pbr_nht.c:1012,1
    - Dst: pbr_vrf_name
      Src: /src/frr/pbrd/pbr_nht.c:1012,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1017,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1020,1
    - Dst: hash_walk
      Src: /src/frr/pbrd/pbr_nht.c:1029,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1032,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1035,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1036,1
    - Dst: pbr_send_rnh
      Src: /src/frr/pbrd/pbr_nht.c:1039,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1000
    functionDepth: 6
    functionLinenumber: 1000
    functionLinenumberEnd: 1049
    functionName: pbr_nht_individual_nexthop_vrf_handle
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_send_rnh
    - memset
    - pbr_vrf_name
    - strncmp
    - pbr_vrf_id
    - hash_walk
    - hash_release
    - hash_get
    linkageType: ''
    returnType: int
    signature: "int pbr_nht_individual_nexthop_vrf_handle(struct hash_bucket *b,\n\t\t\t\t\t\t
      void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1056
    functionName: pbr_nht_clear_looked_at
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbr_nht_clear_looked_at(struct hash_bucket *b, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1064,1
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1065,1
    - Dst: hash_walk
      Src: /src/frr/pbrd/pbr_nht.c:1071,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1079,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1081,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1083,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_nht.c:1086,1
    - Dst: pbr_map_check_vrf_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:1088,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1058
    functionDepth: 3
    functionLinenumber: 1058
    functionLinenumberEnd: 1091
    functionName: pbr_nht_nexthop_vrf_handle
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - memset
    - pbr_vrf_id
    - hash_walk
    - pbr_map_check_vrf_nh_group_change
    - hash_iterate
    - hash_release
    - hash_get
    linkageType: ''
    returnType: void
    signature: void pbr_nht_nexthop_vrf_handle(struct hash_bucket *b, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pbr_vrf
    argTypes:
    - struct pbr_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1096
    functionName: pbr_nht_vrf_update
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_vrf_update(struct pbr_vrf *pbr_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/pbrd/pbr_nht.c:1107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1098
    functionDepth: 0
    functionLinenumber: 1098
    functionLinenumberEnd: 1111
    functionName: pbr_nht_individual_nexthop_interface_handle
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_individual_nexthop_interface_handle(struct hash_bucket
      *b,\n\t\t\t\t\t\t\tvoid *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1122,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1124,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1131,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1134,1
    - Dst: hash_release
      Src: /src/frr/pbrd/pbr_nht.c:1136,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1138,1
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1142,1
    - Dst: pbr_map_check_interface_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:1144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1113
    functionDepth: 4
    functionLinenumber: 1113
    functionLinenumberEnd: 1147
    functionName: pbr_nht_nexthop_interface_handle
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_map_check_interface_nh_group_change
    - memset
    - hash_lookup
    - hash_iterate
    - hash_release
    - hash_get
    linkageType: ''
    returnType: void
    signature: void pbr_nht_nexthop_interface_handle(struct hash_bucket *b, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1149
    functionDepth: 1
    functionLinenumber: 1149
    functionLinenumberEnd: 1152
    functionName: pbr_nht_interface_update
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_interface_update(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_individual_nexthop_update
      Src: /src/frr/pbrd/pbr_nht.c:1164,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:1166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1154
    functionDepth: 2
    functionLinenumber: 1154
    functionLinenumberEnd: 1171
    functionName: pbr_nht_individual_nexthop_interface_update_lookup
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_nht_individual_nexthop_update
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_individual_nexthop_interface_update_lookup(struct hash_bucket
      *b,\n\t\t\t\t\t\t   void *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1185,1
    - Dst: pbr_nexthop_group_cache_to_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:1193,1
    - Dst: pbr_nht_install_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:1196,1
    - Dst: pbr_nht_uninstall_nexthop_group
      Src: /src/frr/pbrd/pbr_nht.c:1198,1
    - Dst: nexthops_free
      Src: /src/frr/pbrd/pbr_nht.c:1200,1
    - Dst: pbr_map_check_nh_group_change
      Src: /src/frr/pbrd/pbr_nht.c:1203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1173
    functionDepth: 3
    functionLinenumber: 1173
    functionLinenumberEnd: 1204
    functionName: pbr_nht_nexthop_interface_update_lookup
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_map_check_nh_group_change
    - pbr_nht_install_nexthop_group
    - pbr_nexthop_group_cache_to_nexthop_group
    - pbr_nht_uninstall_nexthop_group
    - hash_iterate
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: "void pbr_nht_nexthop_interface_update_lookup(struct hash_bucket *b,\n\t\t\t\t\t\t
      \   void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1206
    functionDepth: 1
    functionLinenumber: 1206
    functionLinenumberEnd: 1210
    functionName: pbr_nht_nexthop_interface_update
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 4
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_nexthop_interface_update(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1212
    functionDepth: 0
    functionLinenumber: 1212
    functionLinenumberEnd: 1220
    functionName: pbr_nhg_allocated_id_hash_equal
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pbr_nhg_allocated_id_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1222
    functionDepth: 0
    functionLinenumber: 1222
    functionLinenumberEnd: 1228
    functionName: pbr_nhg_allocated_id_hash_key
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbr_nhg_allocated_id_hash_key(const void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/pbrd/pbr_nht.c:1234,1
    - Dst: strlen
      Src: /src/frr/pbrd/pbr_nht.c:1234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1230
    functionDepth: 2
    functionLinenumber: 1230
    functionLinenumberEnd: 1235
    functionName: pbr_nhg_hash_key
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - strlen
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbr_nhg_hash_key(const void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_nht.c:1244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1237
    functionDepth: 0
    functionLinenumber: 1237
    functionLinenumberEnd: 1245
    functionName: pbr_nhg_hash_equal
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool pbr_nhg_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1259,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1247
    functionDepth: 4
    functionLinenumber: 1247
    functionLinenumberEnd: 1264
    functionName: pbr_nht_find_next_unallocated_table_id
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbr_nht_find_next_unallocated_table_id(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1266
    functionDepth: 0
    functionLinenumber: 1266
    functionLinenumberEnd: 1269
    functionName: pbr_nht_has_unallocated_table
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pbr_nht_has_unallocated_table(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_find_next_unallocated_table_id
      Src: /src/frr/pbrd/pbr_nht.c:1274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1271
    functionDepth: 5
    functionLinenumber: 1271
    functionLinenumberEnd: 1275
    functionName: pbr_nht_update_next_unallocated_table_id
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - pbr_nht_find_next_unallocated_table_id
    linkageType: ''
    returnType: void
    signature: void pbr_nht_update_next_unallocated_table_id(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/pbrd/pbr_nht.c:1287,1
    - Dst: pbr_nht_update_next_unallocated_table_id
      Src: /src/frr/pbrd/pbr_nht.c:1290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - nhgc
    argTypes:
    - struct pbr_nexthop_group_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1277
    functionDepth: 6
    functionLinenumber: 1277
    functionLinenumberEnd: 1294
    functionName: pbr_nht_reserve_next_table_id
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_nht_update_next_unallocated_table_id
    - hash_get
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbr_nht_reserve_next_table_id(struct pbr_nexthop_group_cache
      *nhgc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_update_next_unallocated_table_id
      Src: /src/frr/pbrd/pbr_nht.c:1302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - low
    - high
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1296
    functionDepth: 6
    functionLinenumber: 1296
    functionLinenumberEnd: 1303
    functionName: pbr_nht_set_tableid_range
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - pbr_nht_update_next_unallocated_table_id
    linkageType: ''
    returnType: void
    signature: void pbr_nht_set_tableid_range(uint32_t low, uint32_t high)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1305
    functionDepth: 2
    functionLinenumber: 1305
    functionLinenumberEnd: 1312
    functionName: pbr_nht_write_table_range
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pbr_nht_write_table_range(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - seqno
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1314
    functionDepth: 0
    functionLinenumber: 1314
    functionLinenumberEnd: 1317
    functionName: pbr_nht_get_next_rule
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbr_nht_get_next_rule(uint32_t seqno)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - low
    - high
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1318
    functionDepth: 0
    functionLinenumber: 1318
    functionLinenumberEnd: 1322
    functionName: pbr_nht_set_rule_range
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbr_nht_set_rule_range(uint32_t low, uint32_t high)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1324
    functionDepth: 2
    functionLinenumber: 1324
    functionLinenumberEnd: 1331
    functionName: pbr_nht_write_rule_range
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pbr_nht_write_rule_range(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1338,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:1339,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1340,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_nht.c:1343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1333
    functionDepth: 4
    functionLinenumber: 1333
    functionLinenumberEnd: 1350
    functionName: pbr_nht_get_table
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 1
    functionsReached:
    - snprintf
    - hash_lookup
    - DEBUGD
    - memset
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pbr_nht_get_table(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pbrd/pbr_nht.c:1357,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_nht.c:1358,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_nht.c:1360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1352
    functionDepth: 4
    functionLinenumber: 1352
    functionLinenumberEnd: 1366
    functionName: pbr_nht_get_installed
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - snprintf
    - hash_lookup
    - memset
    linkageType: ''
    returnType: bool
    signature: bool pbr_nht_get_installed(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1373,1
    - Dst: nexthop_group_write_nexthop
      Src: /src/frr/pbrd/pbr_nht.c:1374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1368
    functionDepth: 4
    functionLinenumber: 1368
    functionLinenumberEnd: 1375
    functionName: pbr_nht_show_nhg_nexthops
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - vty_out
    - nexthop_group_write_nexthop
    linkageType: ''
    returnType: void
    signature: void pbr_nht_show_nhg_nexthops(struct hash_bucket *b, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_nht.c:1383,1
    - Dst: nexthop_group_json_nexthop
      Src: /src/frr/pbrd/pbr_nht.c:1384,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_nht.c:1385,1
    - Dst: json_object_array_add
      Src: /src/frr/pbrd/pbr_nht.c:1387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1377
    functionDepth: 3
    functionLinenumber: 1377
    functionLinenumberEnd: 1388
    functionName: pbr_nht_json_nhg_nexthops
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - nexthop_group_json_nexthop
    - json_object_array_add
    - json_object_boolean_add
    linkageType: ''
    returnType: void
    signature: void pbr_nht_json_nhg_nexthops(struct hash_bucket *b, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_nht.c:1402,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_nht.c:1406,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1396
    functionDepth: 2
    functionLinenumber: 1396
    functionLinenumberEnd: 1410
    functionName: pbr_nht_show_nhg
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - strcmp
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pbr_nht_show_nhg(struct hash_bucket *b, void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_nht.c:1418,1
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_nht.c:1422,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_nht.c:1427,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_nht.c:1428,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_nht.c:1429,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_nht.c:1430,1
    - Dst: json_object_new_array
      Src: /src/frr/pbrd/pbr_nht.c:1432,1
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1435,1
    - Dst: json_object_object_add
      Src: /src/frr/pbrd/pbr_nht.c:1436,1
    - Dst: json_object_array_add
      Src: /src/frr/pbrd/pbr_nht.c:1439,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - b
    - data
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1412
    functionDepth: 1
    functionLinenumber: 1412
    functionLinenumberEnd: 1440
    functionName: pbr_nht_json_nhg
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - json_object_new_array
    - json_object_array_add
    - strcmp
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_json_nhg(struct hash_bucket *b, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vty
    - name
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1450
    functionName: pbr_nht_show_nexthop_group
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_show_nexthop_group(struct vty *vty, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/pbrd/pbr_nht.c:1459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - j
    - name
    argTypes:
    - json_object*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1452
    functionDepth: 1
    functionLinenumber: 1452
    functionLinenumberEnd: 1460
    functionName: pbr_nht_json_nexthop_group
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void pbr_nht_json_nexthop_group(json_object *j, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create_size
      Src: /src/frr/pbrd/pbr_nht.c:1464,1
    - Dst: hash_create_size
      Src: /src/frr/pbrd/pbr_nht.c:1467,1
    - Dst: hash_create_size
      Src: /src/frr/pbrd/pbr_nht.c:1469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1462
    functionDepth: 3
    functionLinenumber: 1462
    functionLinenumberEnd: 1480
    functionName: pbr_nht_init
    functionSourceFile: /src/frr/pbrd/pbr_nht.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    linkageType: ''
    returnType: void
    signature: void pbr_nht_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_map.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pbrmap1
    - pbrmap2
    argTypes:
    - struct pbr_map*
    - struct pbr_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: pbr_map_compare
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int pbr_map_compare(const struct pbr_map *pbrmap1,\n\t\t\t\t  const
      struct pbr_map *pbrmap2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pbrms1
    - pbrms2
    argTypes:
    - struct pbr_map_sequence*
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 59
    functionName: pbr_map_sequence_compare
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int pbr_map_sequence_compare(const struct pbr_map_sequence *pbrms1,\n\t\t\t\t
      \   const struct pbr_map_sequence *pbrms2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_map.c:63,1
    - Dst: QOBJ_UNREG
      Src: /src/frr/pbrd/pbr_map.c:65,1
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_map.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pbrms
    argTypes:
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 67
    functionName: pbr_map_sequence_delete
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 0
    functionsReached:
    - QOBJ_UNREG
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pbr_map_sequence_delete(struct pbr_map_sequence *pbrms)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_map.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pmi1
    - pmi2
    argTypes:
    - struct pbr_map_interface*
    - struct pbr_map_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: pbr_map_interface_compare
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int pbr_map_interface_compare(const struct pbr_map_interface *pmi1,\n\t\t\t\t
      \    const struct pbr_map_interface *pmi2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_map.c:81,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pbrd/pbr_map.c:82,1
    - Dst: pbr_map_policy_delete
      Src: /src/frr/pbrd/pbr_map.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - pmi
    argTypes:
    - struct pbr_map_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 89
    functionName: pbr_map_interface_list_delete
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - RB_FOREACH
    - pbr_map_policy_delete
    linkageType: ''
    returnType: void
    signature: void pbr_map_interface_list_delete(struct pbr_map_interface *pmi)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pbrms
    - pmi
    argTypes:
    - struct pbr_map_sequence*
    - struct pbr_map_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 102
    functionName: pbrms_is_installed
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pbrms_is_installed(const struct pbr_map_sequence *pbrms,\n\t\t\t
      \      const struct pbr_map_interface *pmi)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:114,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:115,1
    - Dst: pbrms_is_installed
      Src: /src/frr/pbrd/pbr_map.c:116,1
    - Dst: array_size
      Src: /src/frr/pbrd/pbr_map.c:181,1
    - Dst: snprintf
      Src: /src/frr/pbrd/pbr_map.c:183,1
    - Dst: pbr_map_final_interface_deletion
      Src: /src/frr/pbrd/pbr_map.c:190,1
    - Dst: pbr_map_interface_is_installed
      Src: /src/frr/pbrd/pbr_map.c:193,1
    - Dst: listnode_delete
      Src: /src/frr/pbrd/pbr_map.c:194,1
    - Dst: bf_release_index
      Src: /src/frr/pbrd/pbr_map.c:197,1
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_map.c:198,1
    - Dst: pbr_map_interface_delete
      Src: /src/frr/pbrd/pbr_map.c:202,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:208,1
    - Dst: pbr_map_policy_delete
      Src: /src/frr/pbrd/pbr_map.c:214,1
    - Dst: pbr_map_add_interface
      Src: /src/frr/pbrd/pbr_map.c:217,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:222,1
    - Dst: XCALLOC
      Src: /src/frr/pbrd/pbr_map.c:227,1
    - Dst: listnode_add_sort
      Src: /src/frr/pbrd/pbr_map.c:230,1
    - Dst: bf_assign_index
      Src: /src/frr/pbrd/pbr_map.c:232,1
    - Dst: pbr_map_check_valid
      Src: /src/frr/pbrd/pbr_map.c:233,1
    - Dst: pbr_map_install
      Src: /src/frr/pbrd/pbr_map.c:235,1
    - Dst: pbr_map_policy_interface_update_common
      Src: /src/frr/pbrd/pbr_map.c:239,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:244,1
    - Dst: pbrm_find
      Src: /src/frr/pbrd/pbr_map.c:251,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:254,1
    - Dst: pbr_map_policy_interface_update
      Src: /src/frr/pbrd/pbr_map.c:262,1
    - Dst: for
      Src: /src/frr/pbrd/pbr_map.c:280,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:280,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:281,1
    - Dst: pbr_map_interface_is_valid
      Src: /src/frr/pbrd/pbr_map.c:282,1
    - Dst: pbr_send_pbr_map
      Src: /src/frr/pbrd/pbr_map.c:283,1
    - Dst: pbrms_vrf_update
      Src: /src/frr/pbrd/pbr_map.c:286,1
    - Dst: pbr_vrf_name
      Src: /src/frr/pbrd/pbr_map.c:289,1
    - Dst: strncmp
      Src: /src/frr/pbrd/pbr_map.c:292,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:294,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_map.c:295,1
    - Dst: pbr_map_check
      Src: /src/frr/pbrd/pbr_map.c:297,1
    - Dst: pbr_map_vrf_update
      Src: /src/frr/pbrd/pbr_map.c:302,1
    - Dst: pbr_vrf_is_enabled
      Src: /src/frr/pbrd/pbr_map.c:311,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:313,1
    - Dst: pbr_vrf_name
      Src: /src/frr/pbrd/pbr_map.c:314,1
    - Dst: pbr_vrf_id
      Src: /src/frr/pbrd/pbr_map.c:314,1
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_map.c:317,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:318,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:319,1
    - Dst: pbrms_vrf_update
      Src: /src/frr/pbrd/pbr_map.c:320,1
    - Dst: pbr_map_write_interfaces
      Src: /src/frr/pbrd/pbr_map.c:324,1
    - Dst: strncmp
      Src: /src/frr/pbrd/pbr_map.c:329,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_map.c:330,1
    - Dst: pbrm_find
      Src: /src/frr/pbrd/pbr_map.c:333,1
    - Dst: RB_FIND
      Src: /src/frr/pbrd/pbr_map.c:339,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 5
    argCount: 2
    argNames:
    - pbrm
    - check_pmi
    argTypes:
    - struct pbr_map*
    - struct pbr_map_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 105
    functionDepth: 5
    functionLinenumber: 105
    functionLinenumberEnd: 340
    functionName: pbr_map_interface_is_installed
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 1
    functionsReached:
    - pbr_map_vrf_update
    - RB_FIND
    - pbr_map_final_interface_deletion
    - pbr_map_interface_is_valid
    - pbr_map_check
    - strncmp
    - pbr_vrf_id
    - pbr_vrf_is_enabled
    - pbr_map_install
    - pbr_map_policy_interface_update_common
    - snprintf
    - XCALLOC
    - ALL_LIST_ELEMENTS_RO
    - pbr_vrf_name
    - pbr_map_interface_is_installed
    - array_size
    - pbr_map_policy_interface_update
    - pbrm_find
    - for
    - bf_release_index
    - vty_out
    - listnode_add_sort
    - pbr_map_policy_delete
    - pbrms_is_installed
    - XFREE
    - listnode_delete
    - bf_assign_index
    - pbr_send_pbr_map
    - pbr_map_interface_delete
    - DEBUGD
    - pbrms_vrf_update
    - pbr_map_add_interface
    - pbr_map_check_valid
    - RB_FOREACH
    - pbr_map_write_interfaces
    linkageType: ''
    returnType: bool
    signature: "bool pbr_map_interface_is_installed(const struct pbr_map *pbrm,\n\t\t\t
      \      const struct pbr_map_interface *check_pmi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:636,1
    - Dst: pbr_map_sequence_check_valid
      Src: /src/frr/pbrd/pbr_map.c:638,1
    - Dst: if
      Src: /src/frr/pbrd/pbr_map.c:643,1
    - Dst: pbr_map_check_valid
      Src: /src/frr/pbrd/pbr_map.c:655,1
    - Dst: pbrm_find
      Src: /src/frr/pbrd/pbr_map.c:659,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:661,1
    - Dst: pbr_map_check_valid_internal
      Src: /src/frr/pbrd/pbr_map.c:667,1
    - Dst: pbr_map_schedule_policy_from_nhg
      Src: /src/frr/pbrd/pbr_map.c:671,1
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_map.c:677,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:678,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:679,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:680,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_map.c:685,1
    - Dst: pbr_map_check
      Src: /src/frr/pbrd/pbr_map.c:688,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_map.c:692,1
    - Dst: pbr_map_check
      Src: /src/frr/pbrd/pbr_map.c:696,1
    - Dst: pbr_map_policy_install
      Src: /src/frr/pbrd/pbr_map.c:702,1
    - Dst: pbrm_find
      Src: /src/frr/pbrd/pbr_map.c:710,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:714,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:715,1
    - Dst: if
      Src: /src/frr/pbrd/pbr_map.c:719,1
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_map.c:721,1
    - Dst: for
      Src: /src/frr/pbrd/pbr_map.c:723,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:723,1
    - Dst: pbr_map_interface_is_valid
      Src: /src/frr/pbrd/pbr_map.c:724,1
    - Dst: pbr_send_pbr_map
      Src: /src/frr/pbrd/pbr_map.c:725,1
    - Dst: pbr_map_policy_delete
      Src: /src/frr/pbrd/pbr_map.c:731,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_map.c:738,1
    - Dst: if
      Src: /src/frr/pbrd/pbr_map.c:739,1
    - Dst: pbr_send_pbr_map
      Src: /src/frr/pbrd/pbr_map.c:739,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - pbrm
    argTypes:
    - struct pbr_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 630
    functionDepth: 5
    functionLinenumber: 630
    functionLinenumberEnd: 752
    functionName: pbr_map_check_valid_internal
    functionSourceFile: /src/frr/pbrd/pbr_map.c
    functionUses: 1
    functionsReached:
    - pbr_map_schedule_policy_from_nhg
    - pbr_send_pbr_map
    - DEBUGD
    - ALL_LIST_ELEMENTS_RO
    - pbrm_find
    - pbr_map_check_valid_internal
    - strcmp
    - RB_FOREACH
    - pbr_map_check
    - pbr_map_interface_is_valid
    - pbr_map_policy_delete
    - pbr_map_policy_install
    - if
    - pbr_map_check_valid
    - for
    - pbr_map_sequence_check_valid
    linkageType: ''
    returnType: bool
    signature: bool pbr_map_check_valid_internal(struct pbr_map *pbrm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pbr_vrf
    argTypes:
    - struct pbr_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 17
    functionName: pbr_vrf_name
    functionSourceFile: /src/frr/pbrd/pbr_vrf.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pbr_vrf_name(const struct pbr_vrf *pbr_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pbr_vrf
    argTypes:
    - struct pbr_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 22
    functionName: pbr_vrf_id
    functionSourceFile: /src/frr/pbrd/pbr_vrf.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: vrf_id_t
    signature: vrf_id_t pbr_vrf_id(const struct pbr_vrf *pbr_vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pbr_map_delete_vrf
      Src: /src/frr/pbrd/pbr_vty.c:396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - pbrms
    argTypes:
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 401
    functionName: pbrms_clear_set_vrf_config
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - pbr_map_delete_vrf
    linkageType: ''
    returnType: void
    signature: void pbrms_clear_set_vrf_config(struct pbr_map_sequence *pbrms)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pbr_map_delete_nexthops
      Src: /src/frr/pbrd/pbr_vty.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - pbrms
    argTypes:
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: pbrms_clear_set_nhg_config
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - pbr_map_delete_nexthops
    linkageType: ''
    returnType: void
    signature: void pbrms_clear_set_nhg_config(struct pbr_map_sequence *pbrms)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_delete_individual_nexthop
      Src: /src/frr/pbrd/pbr_vty.c:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - pbrms
    argTypes:
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 409
    functionDepth: 9
    functionLinenumber: 409
    functionLinenumberEnd: 413
    functionName: pbrms_clear_set_nexthop_config
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - pbr_nht_delete_individual_nexthop
    linkageType: ''
    returnType: void
    signature: void pbrms_clear_set_nexthop_config(struct pbr_map_sequence *pbrms)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbrms_clear_set_vrf_config
      Src: /src/frr/pbrd/pbr_vty.c:417,1
    - Dst: pbrms_clear_set_nhg_config
      Src: /src/frr/pbrd/pbr_vty.c:418,1
    - Dst: pbrms_clear_set_nexthop_config
      Src: /src/frr/pbrd/pbr_vty.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pbrms
    argTypes:
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 415
    functionDepth: 10
    functionLinenumber: 415
    functionLinenumberEnd: 422
    functionName: pbrms_clear_set_config
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - pbrms_clear_set_nhg_config
    - pbrms_clear_set_nexthop_config
    - pbrms_clear_set_vrf_config
    linkageType: ''
    returnType: void
    signature: void pbrms_clear_set_config(struct pbr_map_sequence *pbrms)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pbrd/pbr_vty.c:850,1
    - Dst: strlcpy
      Src: /src/frr/pbrd/pbr_vty.c:851,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_vty.c:853,1
    - Dst: assert
      Src: /src/frr/pbrd/pbr_vty.c:854,1
    - Dst: hash_lookup
      Src: /src/frr/pbrd/pbr_vty.c:857,1
    - Dst: nexthop_group_write_nexthop_simple
      Src: /src/frr/pbrd/pbr_vty.c:859,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:863,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:865,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - pbrms
    argTypes:
    - struct vty*
    - struct pbr_map_sequence*
    assertStmts:
    - condition: (pnhgc)
      pos:
        line_end: 853
        line_start: 853
        source_file: /src/frr/pbrd/pbr_vty.c
    constantsTouched: []
    func_position:
      end: 866
      start: 841
    functionDepth: 4
    functionLinenumber: 841
    functionLinenumberEnd: 866
    functionName: pbrms_nexthop_group_write_individual_nexthop
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - nexthop_group_write_nexthop_simple
    - strlcpy
    - hash_lookup
    - assert
    linkageType: ''
    returnType: void
    signature: "void pbrms_nexthop_group_write_individual_nexthop(\n\tstruct vty *vty,
      const struct pbr_map_sequence *pbrms)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pbr_map_reason_string
      Src: /src/frr/pbrd/pbr_vty.c:874,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:876,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:879,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:883,1
    - Dst: getprotobynumber
      Src: /src/frr/pbrd/pbr_vty.c:890,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:891,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:895,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:897,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:899,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:901,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:903,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:906,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:909,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:912,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:916,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:918,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:920,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:924,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:927,1
    - Dst: pbr_nht_get_installed
      Src: /src/frr/pbrd/pbr_vty.c:930,1
    - Dst: pbr_nht_get_table
      Src: /src/frr/pbrd/pbr_vty.c:931,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:933,1
    - Dst: pbr_nht_get_installed
      Src: /src/frr/pbrd/pbr_vty.c:934,1
    - Dst: pbr_nht_get_table
      Src: /src/frr/pbrd/pbr_vty.c:936,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:939,1
    - Dst: pbrms_nexthop_group_write_individual_nexthop
      Src: /src/frr/pbrd/pbr_vty.c:940,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:942,1
    - Dst: pbr_nht_get_installed
      Src: /src/frr/pbrd/pbr_vty.c:945,1
    - Dst: pbr_nht_get_table
      Src: /src/frr/pbrd/pbr_vty.c:946,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:948,1
    - Dst: pbr_nht_get_installed
      Src: /src/frr/pbrd/pbr_vty.c:949,1
    - Dst: pbr_nht_get_table
      Src: /src/frr/pbrd/pbr_vty.c:952,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:955,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:957,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:959,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 54
    argCount: 3
    argNames:
    - vty
    - pbrms
    - detail
    argTypes:
    - struct vty*
    - struct pbr_map_sequence*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 868
    functionDepth: 5
    functionLinenumber: 868
    functionLinenumberEnd: 961
    functionName: vty_show_pbrms
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - pbrms_nexthop_group_write_individual_nexthop
    - pbr_map_reason_string
    - pbr_nht_get_installed
    - getprotobynumber
    - pbr_nht_get_table
    linkageType: ''
    returnType: void
    signature: "void vty_show_pbrms(struct vty *vty,\n\t\t\t   const struct pbr_map_sequence
      *pbrms, bool detail)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_vty.c:971,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:973,1
    - Dst: pbr_map_reason_string
      Src: /src/frr/pbrd/pbr_vty.c:976,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:978,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:979,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_vty.c:980,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_vty.c:981,1
    - Dst: pbr_nht_get_installed
      Src: /src/frr/pbrd/pbr_vty.c:982,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_vty.c:983,1
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_vty.c:987,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:989,1
    - Dst: pbr_nht_get_table
      Src: /src/frr/pbrd/pbr_vty.c:990,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_vty.c:991,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_vty.c:992,1
    - Dst: pbr_nht_get_installed
      Src: /src/frr/pbrd/pbr_vty.c:993,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:994,1
    - Dst: json_object_object_add
      Src: /src/frr/pbrd/pbr_vty.c:997,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_vty.c:1001,1
    - Dst: json_object_string_addf
      Src: /src/frr/pbrd/pbr_vty.c:1004,1
    - Dst: json_object_string_addf
      Src: /src/frr/pbrd/pbr_vty.c:1006,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:1008,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:1010,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:1013,1
    - Dst: json_object_array_add
      Src: /src/frr/pbrd/pbr_vty.c:1016,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - j
    - vty
    - pbrms
    argTypes:
    - json_object*
    - struct vty*
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 963
    functionDepth: 5
    functionLinenumber: 963
    functionLinenumberEnd: 1017
    functionName: vty_json_pbrms
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - json_object_string_addf
    - json_object_array_add
    - pbr_map_reason_string
    - json_object_int_add
    - pbr_nht_get_installed
    - json_object_string_add
    - json_object_object_add
    - pbr_nht_get_table
    linkageType: ''
    returnType: void
    signature: "void vty_json_pbrms(json_object *j, struct vty *vty,\n\t\t\t   const
      struct pbr_map_sequence *pbrms)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1025,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_vty.c:1028,1
    - Dst: vty_show_pbrms
      Src: /src/frr/pbrd/pbr_vty.c:1029,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_vty.c:1039,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_vty.c:1040,1
    - Dst: json_object_new_array
      Src: /src/frr/pbrd/pbr_vty.c:1042,1
    - Dst: for
      Src: /src/frr/pbrd/pbr_vty.c:1044,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_vty.c:1044,1
    - Dst: vty_json_pbrms
      Src: /src/frr/pbrd/pbr_vty.c:1045,1
    - Dst: json_object_object_add
      Src: /src/frr/pbrd/pbr_vty.c:1047,1
    - Dst: DEFPY
      Src: /src/frr/pbrd/pbr_vty.c:1050,1
    - Dst: json_object_new_array
      Src: /src/frr/pbrd/pbr_vty.c:1064,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_vty.c:1068,1
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_vty.c:1072,1
    - Dst: json_object_array_add
      Src: /src/frr/pbrd/pbr_vty.c:1077,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - pbrm
    - detail
    argTypes:
    - struct vty*
    - struct pbr_map*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1019
    functionDepth: 6
    functionLinenumber: 1019
    functionLinenumberEnd: 1079
    functionName: vty_show_pbr_map
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - json_object_boolean_add
    - json_object_new_object
    - vty_out
    - json_object_array_add
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - vty_show_pbrms
    - json_object_string_add
    - json_object_object_add
    - for
    - DEFPY
    - vty_json_pbrms
    linkageType: ''
    returnType: void
    signature: "void vty_show_pbr_map(struct vty *vty, const struct pbr_map *pbrm,\n\t\t\t
      \    bool detail)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pbrd/pbr_vty.c:1138,1
    - Dst: json_object_free
      Src: /src/frr/pbrd/pbr_vty.c:1141,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_vty.c:1145,1
    - Dst: json_object_free
      Src: /src/frr/pbrd/pbr_vty.c:1146,1
    - Dst: strcmp
      Src: /src/frr/pbrd/pbr_vty.c:1152,1
    - Dst: json_object_free
      Src: /src/frr/pbrd/pbr_vty.c:1153,1
    - Dst: pbrm_find
      Src: /src/frr/pbrd/pbr_vty.c:1157,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_vty.c:1160,1
    - Dst: json_object_int_add
      Src: /src/frr/pbrd/pbr_vty.c:1162,1
    - Dst: json_object_string_add
      Src: /src/frr/pbrd/pbr_vty.c:1164,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pbrd/pbr_vty.c:1166,1
    - Dst: json_object_array_add
      Src: /src/frr/pbrd/pbr_vty.c:1169,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1173,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1176,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1177,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1133
    functionDepth: 2
    functionLinenumber: 1133
    functionLinenumberEnd: 1178
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 38
    functionsReached:
    - json_object_new_object
    - json_object_boolean_add
    - json_object_array_add
    - vty_out
    - strcmp
    - json_object_int_add
    - json_object_free
    - json_object_string_add
    - pbrm_find
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES(vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_vty.c:1249,1
    - Dst: if_vty_config_start
      Src: /src/frr/pbrd/pbr_vty.c:1251,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1254,1
    - Dst: pbr_map_write_interfaces
      Src: /src/frr/pbrd/pbr_vty.c:1256,1
    - Dst: if_vty_config_end
      Src: /src/frr/pbrd/pbr_vty.c:1258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1244
    functionDepth: 3
    functionLinenumber: 1244
    functionLinenumberEnd: 1263
    functionName: pbr_interface_config_write
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - vty_out
    - if_vty_config_start
    - RB_FOREACH
    - pbr_map_write_interfaces
    linkageType: ''
    returnType: int
    signature: int pbr_interface_config_write(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_vty_config_start
      Src: /src/frr/pbrd/pbr_vty.c:1251,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1254,1
    - Dst: pbr_map_write_interfaces
      Src: /src/frr/pbrd/pbr_vty.c:1256,1
    - Dst: if_vty_config_end
      Src: /src/frr/pbrd/pbr_vty.c:1258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1250
    functionDepth: 3
    functionLinenumber: 1250
    functionLinenumberEnd: 1259
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 38
    functionsReached:
    - if_vty_config_end
    - pbr_map_write_interfaces
    - vty_out
    - if_vty_config_start
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1279,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1282,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1285,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1288,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1290,1
    - Dst: getprotobynumber
      Src: /src/frr/pbrd/pbr_vty.c:1295,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1296,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1300,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1304,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1308,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1312,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1315,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1318,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1321,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1324,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1327,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1330,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1333,1
    - Dst: pbrms_nexthop_group_write_individual_nexthop
      Src: /src/frr/pbrd/pbr_vty.c:1334,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1337,1
    - Dst: vty_out
      Src: /src/frr/pbrd/pbr_vty.c:1338,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 3
    argNames:
    - vty
    - pbrm
    - pbrms
    argTypes:
    - struct vty*
    - struct pbr_map*
    - struct pbr_map_sequence*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1275
    functionDepth: 5
    functionLinenumber: 1275
    functionLinenumberEnd: 1340
    functionName: pbr_vty_map_config_write_sequence
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - getprotobynumber
    - pbrms_nexthop_group_write_individual_nexthop
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int pbr_vty_map_config_write_sequence(struct vty *vty,\n\t\t\t\t\t
      \    struct pbr_map *pbrm,\n\t\t\t\t\t     struct pbr_map_sequence *pbrms)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbr_nht_write_table_range
      Src: /src/frr/pbrd/pbr_vty.c:1346,1
    - Dst: pbr_nht_write_rule_range
      Src: /src/frr/pbrd/pbr_vty.c:1347,1
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_vty.c:1349,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pbrd/pbr_vty.c:1353,1
    - Dst: pbr_vty_map_config_write_sequence
      Src: /src/frr/pbrd/pbr_vty.c:1354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1342
    functionDepth: 6
    functionLinenumber: 1342
    functionLinenumberEnd: 1358
    functionName: pbr_vty_map_config_write
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - pbr_vty_map_config_write_sequence
    - ALL_LIST_ELEMENTS_RO
    - pbr_nht_write_rule_range
    - RB_FOREACH
    - pbr_nht_write_table_range
    linkageType: ''
    returnType: int
    signature: int pbr_vty_map_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_vty.c:1364,1
    - Dst: vector_set
      Src: /src/frr/pbrd/pbr_vty.c:1365,1
    - Dst: XSTRDUP
      Src: /src/frr/pbrd/pbr_vty.c:1365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1360
    functionDepth: 3
    functionLinenumber: 1360
    functionLinenumberEnd: 1366
    functionName: pbr_map_completer
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - vector_set
    - RB_FOREACH
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void pbr_map_completer(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmd_variable_handler_register
      Src: /src/frr/pbrd/pbr_vty.c:1381,1
    - Dst: vrf_cmd_init
      Src: /src/frr/pbrd/pbr_vty.c:1383,1
    - Dst: if_cmd_init
      Src: /src/frr/pbrd/pbr_vty.c:1385,1
    - Dst: install_node
      Src: /src/frr/pbrd/pbr_vty.c:1387,1
    - Dst: install_node
      Src: /src/frr/pbrd/pbr_vty.c:1390,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1391,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1392,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1393,1
    - Dst: install_default
      Src: /src/frr/pbrd/pbr_vty.c:1395,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1397,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1398,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1399,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1400,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1401,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1402,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1403,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1404,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1405,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1406,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1407,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1408,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1409,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1410,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1411,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1412,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1413,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1414,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1415,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1416,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1417,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1418,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1419,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1420,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1421,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1422,1
    - Dst: install_element
      Src: /src/frr/pbrd/pbr_vty.c:1423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1379
    functionDepth: 6
    functionLinenumber: 1379
    functionLinenumberEnd: 1424
    functionName: pbr_vty_init
    functionSourceFile: /src/frr/pbrd/pbr_vty.c
    functionUses: 0
    functionsReached:
    - install_node
    - vrf_cmd_init
    - if_cmd_init
    - install_default
    - install_element
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void pbr_vty_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/pbrd/pbr_main.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: sighup
    functionSourceFile: /src/frr/pbrd/pbr_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/pbrd/pbr_main.c:70,1
    - Dst: pbr_vrf_terminate
      Src: /src/frr/pbrd/pbr_main.c:72,1
    - Dst: frr_fini
      Src: /src/frr/pbrd/pbr_main.c:74,1
    - Dst: exit
      Src: /src/frr/pbrd/pbr_main.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 5
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: sigint
    functionSourceFile: /src/frr/pbrd/pbr_main.c
    functionUses: 0
    functionsReached:
    - exit
    - zlog_notice
    - frr_fini
    - pbr_vrf_terminate
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/pbrd/pbr_main.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: sigusr1
    functionSourceFile: /src/frr/pbrd/pbr_main.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/pbrd/pbr_main.c:127,1
    - Dst: frr_opt_add
      Src: /src/frr/pbrd/pbr_main.c:128,1
    - Dst: frr_getopt
      Src: /src/frr/pbrd/pbr_main.c:133,1
    - Dst: frr_help_exit
      Src: /src/frr/pbrd/pbr_main.c:142,1
    - Dst: frr_init
      Src: /src/frr/pbrd/pbr_main.c:146,1
    - Dst: pbr_debug_init
      Src: /src/frr/pbrd/pbr_main.c:148,1
    - Dst: nexthop_group_init
      Src: /src/frr/pbrd/pbr_main.c:150,1
    - Dst: access_list_init
      Src: /src/frr/pbrd/pbr_main.c:158,1
    - Dst: pbr_nht_init
      Src: /src/frr/pbrd/pbr_main.c:159,1
    - Dst: pbr_map_init
      Src: /src/frr/pbrd/pbr_main.c:160,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/pbrd/pbr_main.c:161,1
    - Dst: pbr_zebra_init
      Src: /src/frr/pbrd/pbr_main.c:163,1
    - Dst: pbr_vrf_init
      Src: /src/frr/pbrd/pbr_main.c:164,1
    - Dst: pbr_vty_init
      Src: /src/frr/pbrd/pbr_main.c:165,1
    - Dst: frr_config_fork
      Src: /src/frr/pbrd/pbr_main.c:167,1
    - Dst: frr_run
      Src: /src/frr/pbrd/pbr_main.c:168,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 125
    functionDepth: 7
    functionLinenumber: 125
    functionLinenumberEnd: 172
    functionName: main
    functionSourceFile: /src/frr/pbrd/pbr_main.c
    functionUses: 24
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - pbr_map_init
    - if_zapi_callbacks
    - frr_getopt
    - frr_init
    - nexthop_group_init
    - frr_config_fork
    - pbr_vty_init
    - pbr_debug_init
    - access_list_init
    - pbr_nht_init
    - frr_run
    - pbr_zebra_init
    - frr_opt_add
    - pbr_vrf_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pbrd/pbr_vrf.c:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 27
    functionName: pbr_vrf_alloc
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct pbr_vrf
    signature: struct pbr_vrf *pbr_vrf_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pbrd/pbr_vrf.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pbr_vrf
    argTypes:
    - struct pbr_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: pbr_vrf_free
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pbr_vrf_free(struct pbr_vrf *pbr_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_vrf.c:38,1
    - Dst: pbr_vrf_alloc
      Src: /src/frr/pbrd/pbr_vrf.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 45
    functionName: pbr_vrf_new
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 0
    functionsReached:
    - pbr_vrf_alloc
    - DEBUGD
    linkageType: ''
    returnType: int
    signature: int pbr_vrf_new(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_vrf.c:49,1
    - Dst: pbr_nht_vrf_update
      Src: /src/frr/pbrd/pbr_vrf.c:51,1
    - Dst: pbr_map_vrf_update
      Src: /src/frr/pbrd/pbr_vrf.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: pbr_vrf_enable
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 0
    functionsReached:
    - pbr_nht_vrf_update
    - DEBUGD
    - pbr_map_vrf_update
    linkageType: ''
    returnType: int
    signature: int pbr_vrf_enable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_vrf.c:59,1
    - Dst: pbr_map_vrf_update
      Src: /src/frr/pbrd/pbr_vrf.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: pbr_vrf_disable
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - pbr_map_vrf_update
    linkageType: ''
    returnType: int
    signature: int pbr_vrf_disable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/pbrd/pbr_vrf.c:68,1
    - Dst: assert
      Src: /src/frr/pbrd/pbr_vrf.c:74,1
    - Dst: vrf_is_enabled
      Src: /src/frr/pbrd/pbr_vrf.c:74,1
    - Dst: pbr_vrf_free
      Src: /src/frr/pbrd/pbr_vrf.c:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts:
    - condition: (!vrf_is_enabled(vrf))
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/frr/pbrd/pbr_vrf.c
    constantsTouched: []
    func_position:
      end: 80
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 80
    functionName: pbr_vrf_delete
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 0
    functionsReached:
    - vrf_is_enabled
    - DEBUGD
    - pbr_vrf_free
    - assert
    linkageType: ''
    returnType: int
    signature: int pbr_vrf_delete(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pbrd/pbr_vrf.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 94
    functionName: pbr_vrf_lookup_by_name
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 1
    functionsReached:
    - vrf_lookup_by_name
    linkageType: ''
    returnType: struct pbr_vrf
    signature: struct pbr_vrf *pbr_vrf_lookup_by_name(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_enabled
      Src: /src/frr/pbrd/pbr_vrf.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pbr_vrf
    argTypes:
    - struct pbr_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: pbr_vrf_is_enabled
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 1
    functionsReached:
    - vrf_is_enabled
    linkageType: ''
    returnType: bool
    signature: bool pbr_vrf_is_enabled(const struct pbr_vrf *pbr_vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/pbrd/pbr_vrf.c:103,1
    - Dst: pbr_vrf_is_enabled
      Src: /src/frr/pbrd/pbr_vrf.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pbr_vrf
    argTypes:
    - struct pbr_vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 110
    functionName: pbr_vrf_is_valid
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 0
    functionsReached:
    - pbr_vrf_is_enabled
    - vrf_is_backend_netns
    linkageType: ''
    returnType: bool
    signature: bool pbr_vrf_is_valid(const struct pbr_vrf *pbr_vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/pbrd/pbr_vrf.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: pbr_vrf_init
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 1
    functionsReached:
    - vrf_init
    linkageType: ''
    returnType: void
    signature: void pbr_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pbrd/pbr_vrf.c:122,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pbrd/pbr_vrf.c:123,1
    - Dst: pbr_if_del
      Src: /src/frr/pbrd/pbr_vrf.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 126
    functionName: pbr_vrf_terminate
    functionSourceFile: /src/frr/pbrd/pbr_vrf.c
    functionUses: 1
    functionsReached:
    - FOR_ALL_INTERFACES
    - pbr_if_del
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void pbr_vrf_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/vrrpd/vrrp_main.c:61,1
    - Dst: vty_read_config
      Src: /src/frr/vrrpd/vrrp_main.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: sighup
    functionSourceFile: /src/frr/vrrpd/vrrp_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vty_read_config
    linkageType: ''
    returnType: void
    signature: void sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/vrrpd/vrrp_main.c:69,1
    - Dst: vrrp_fini
      Src: /src/frr/vrrpd/vrrp_main.c:71,1
    - Dst: frr_fini
      Src: /src/frr/vrrpd/vrrp_main.c:73,1
    - Dst: exit
      Src: /src/frr/vrrpd/vrrp_main.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 5
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: sigint
    functionSourceFile: /src/frr/vrrpd/vrrp_main.c
    functionUses: 0
    functionsReached:
    - vrrp_fini
    - exit
    - zlog_notice
    - frr_fini
    linkageType: ''
    returnType: void
    signature: void sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/vrrpd/vrrp_main.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: sigusr1
    functionSourceFile: /src/frr/vrrpd/vrrp_main.c
    functionUses: 1
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/vrrpd/vrrp_main.c:129,1
    - Dst: frr_init
      Src: /src/frr/vrrpd/vrrp_main.c:131,1
    - Dst: access_list_init
      Src: /src/frr/vrrpd/vrrp_main.c:133,1
    - Dst: vrrp_debug_init
      Src: /src/frr/vrrpd/vrrp_main.c:134,1
    - Dst: vrrp_zebra_init
      Src: /src/frr/vrrpd/vrrp_main.c:135,1
    - Dst: vrrp_vty_init
      Src: /src/frr/vrrpd/vrrp_main.c:136,1
    - Dst: vrrp_init
      Src: /src/frr/vrrpd/vrrp_main.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 125
    functionDepth: 5
    functionLinenumber: 125
    functionLinenumberEnd: 141
    functionName: FuzzingInit
    functionSourceFile: /src/frr/vrrpd/vrrp_main.c
    functionUses: 6
    functionsReached:
    - frr_preinit
    - vrrp_zebra_init
    - frr_init
    - access_list_init
    - vrrp_vty_init
    - vrrp_init
    - vrrp_debug_init
    linkageType: ''
    returnType: bool
    signature: bool FuzzingInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_get_by_name
      Src: /src/frr/vrrpd/vrrp_main.c:148,1
    - Dst: str2prefix
      Src: /src/frr/vrrpd/vrrp_main.c:150,1
    - Dst: connected_add_by_prefix
      Src: /src/frr/vrrpd/vrrp_main.c:151,1
    - Dst: vrrp_vrouter_create
      Src: /src/frr/vrrpd/vrrp_main.c:153,1
    - Dst: vrrp_debug_set
      Src: /src/frr/vrrpd/vrrp_main.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 160
    functionName: FuzzingCreateVr
    functionSourceFile: /src/frr/vrrpd/vrrp_main.c
    functionUses: 0
    functionsReached:
    - if_get_by_name
    - vrrp_debug_set
    - connected_add_by_prefix
    - vrrp_vrouter_create
    - str2prefix
    linkageType: ''
    returnType: struct vrrp_vrouter
    signature: struct vrrp_vrouter *FuzzingCreateVr(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FuzzingInit
      Src: /src/frr/vrrpd/vrrp_main.c:168,1
    - Dst: FuzzingCreateVr
      Src: /src/frr/vrrpd/vrrp_main.c:170,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_main.c:188,1
    - Dst: MIN
      Src: /src/frr/vrrpd/vrrp_main.c:188,1
    - Dst: inet_pton
      Src: /src/frr/vrrpd/vrrp_main.c:190,1
    - Dst: vrrp_read
      Src: /src/frr/vrrpd/vrrp_main.c:194,1
    - Dst: zclient_read_fuzz
      Src: /src/frr/vrrpd/vrrp_main.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 165
    functionDepth: 4
    functionLinenumber: 165
    functionLinenumberEnd: 200
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/frr/vrrpd/vrrp_main.c
    functionUses: 3
    functionsReached:
    - MIN
    - zclient_read_fuzz
    - FuzzingInit
    - FuzzingCreateVr
    - inet_pton
    - vrrp_read
    - memcpy
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(uint8_t *data, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FuzzingInit
      Src: /src/frr/vrrpd/vrrp_main.c:208,1
    - Dst: __AFL_INIT
      Src: /src/frr/vrrpd/vrrp_main.c:212,1
    - Dst: frrfuzz_read_input
      Src: /src/frr/vrrpd/vrrp_main.c:216,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/frr/vrrpd/vrrp_main.c:221,1
    - Dst: frr_preinit
      Src: /src/frr/vrrpd/vrrp_main.c:223,1
    - Dst: frr_opt_add
      Src: /src/frr/vrrpd/vrrp_main.c:224,1
    - Dst: frr_getopt
      Src: /src/frr/vrrpd/vrrp_main.c:229,1
    - Dst: frr_help_exit
      Src: /src/frr/vrrpd/vrrp_main.c:238,1
    - Dst: frr_init
      Src: /src/frr/vrrpd/vrrp_main.c:242,1
    - Dst: access_list_init
      Src: /src/frr/vrrpd/vrrp_main.c:244,1
    - Dst: vrrp_debug_init
      Src: /src/frr/vrrpd/vrrp_main.c:245,1
    - Dst: vrrp_zebra_init
      Src: /src/frr/vrrpd/vrrp_main.c:246,1
    - Dst: vrrp_vty_init
      Src: /src/frr/vrrpd/vrrp_main.c:247,1
    - Dst: vrrp_init
      Src: /src/frr/vrrpd/vrrp_main.c:248,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_main.c:250,1
    - Dst: frr_config_fork
      Src: /src/frr/vrrpd/vrrp_main.c:254,1
    - Dst: frr_run
      Src: /src/frr/vrrpd/vrrp_main.c:255,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 205
    functionDepth: 6
    functionLinenumber: 205
    functionLinenumberEnd: 259
    functionName: main
    functionSourceFile: /src/frr/vrrpd/vrrp_main.c
    functionUses: 24
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - vrrp_zebra_init
    - snprintf
    - FuzzingInit
    - frr_getopt
    - frr_init
    - frr_config_fork
    - access_list_init
    - frrfuzz_read_input
    - vrrp_vty_init
    - vrrp_init
    - frr_run
    - vrrp_debug_init
    - frr_opt_add
    - __AFL_INIT
    - LLVMFuzzerTestOneInput
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _f
    - ','
    - _ver
    - ','
    - _naddr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: VRRP_PKT_SIZE
    functionSourceFile: /src/frr/vrrpd/vrrp_packet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VRRP_PKT_SIZE(_f, _ver, _naddr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/vrrpd/vrrp_packet.c:74,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_packet.c:75,1
    - Dst: in_cksum_with_ph6
      Src: /src/frr/vrrpd/vrrp_packet.c:77,1
    - Dst: inet_pton
      Src: /src/frr/vrrpd/vrrp_packet.c:83,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_packet.c:85,1
    - Dst: in_cksum_with_ph4
      Src: /src/frr/vrrpd/vrrp_packet.c:86,1
    - Dst: in_cksum
      Src: /src/frr/vrrpd/vrrp_packet.c:88,1
    - Dst: in_cksum
      Src: /src/frr/vrrpd/vrrp_packet.c:90,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp_packet.c:92,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 4
    argNames:
    - pkt
    - pktsize
    - src
    - ipv4_ph
    argTypes:
    - struct vrrp_pkt*
    - size_t
    - struct ipaddr*
    - bool
    assertStmts:
    - condition: (!"Invalid VRRP protocol version")
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/frr/vrrpd/vrrp_packet.c
    constantsTouched: []
    func_position:
      end: 98
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 98
    functionName: vrrp_pkt_checksum
    functionSourceFile: /src/frr/vrrpd/vrrp_packet.c
    functionUses: 0
    functionsReached:
    - in_cksum_with_ph4
    - htons
    - in_cksum
    - in_cksum_with_ph6
    - inet_pton
    - assert
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t vrrp_pkt_checksum(struct vrrp_pkt *pkt, size_t pktsize,\n\t\t\t\t
      \ struct ipaddr *src, bool ipv4_ph)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp_packet.c:108,1
    - Dst: IS_IPADDR_V6
      Src: /src/frr/vrrpd/vrrp_packet.c:111,1
    - Dst: IPADDRSZ
      Src: /src/frr/vrrpd/vrrp_packet.c:112,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp_packet.c:115,1
    - Dst: VRRP_PKT_SIZE
      Src: /src/frr/vrrpd/vrrp_packet.c:117,1
    - Dst: XCALLOC
      Src: /src/frr/vrrpd/vrrp_packet.c:119,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_packet.c:127,1
    - Dst: MAX
      Src: /src/frr/vrrpd/vrrp_packet.c:130,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_packet.c:136,1
    - Dst: vrrp_pkt_checksum
      Src: /src/frr/vrrpd/vrrp_packet.c:140,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 9
    argNames:
    - pkt
    - src
    - version
    - vrid
    - prio
    - max_adver_int
    - numip
    - ips
    - ipv4_ph
    argTypes:
    - struct vrrp_pkt**
    - struct ipaddr*
    - uint8_t
    - uint8_t
    - uint8_t
    - uint16_t
    - uint8_t
    - struct ipaddr**
    - bool
    assertStmts:
    - condition: (version >= 2 && version <= 3)
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/frr/vrrpd/vrrp_packet.c
    - condition: (!(version == 2 && v6))
      pos:
        line_end: 114
        line_start: 114
        source_file: /src/frr/vrrpd/vrrp_packet.c
    constantsTouched: []
    func_position:
      end: 143
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 143
    functionName: vrrp_pkt_adver_build
    functionSourceFile: /src/frr/vrrpd/vrrp_packet.c
    functionUses: 0
    functionsReached:
    - IS_IPADDR_V6
    - vrrp_pkt_checksum
    - XCALLOC
    - VRRP_PKT_SIZE
    - htons
    - IPADDRSZ
    - memcpy
    - MAX
    - assert
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t vrrp_pkt_adver_build(struct vrrp_pkt **pkt, struct ipaddr
      *src,\n\t\t\t     uint8_t version, uint8_t vrid, uint8_t prio,\n\t\t\t     uint16_t
      max_adver_int, uint8_t numip,\n\t\t\t     struct ipaddr **ips, bool ipv4_ph)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/vrrpd/vrrp_packet.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - struct vrrp_pkt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: vrrp_pkt_free
    functionSourceFile: /src/frr/vrrpd/vrrp_packet.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vrrp_pkt_free(struct vrrp_pkt *pkt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_packet.c:160,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_packet.c:161,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_packet.c:162,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_packet.c:165,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_packet.c:166,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_packet.c:167,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_packet.c:168,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_packet.c:169,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_packet.c:170,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_packet.c:171,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_packet.c:172,1
    - Dst: ntohs
      Src: /src/frr/vrrpd/vrrp_packet.c:173,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_packet.c:174,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_packet.c:175,1
    - Dst: ntohs
      Src: /src/frr/vrrpd/vrrp_packet.c:175,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_packet.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - buf
    - buflen
    - pkt
    argTypes:
    - char*
    - size_t
    - struct vrrp_pkt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 179
    functionName: vrrp_pkt_adver_dump
    functionSourceFile: /src/frr/vrrpd/vrrp_packet.c
    functionUses: 0
    functionsReached:
    - strlcat
    - ntohs
    - snprintf
    linkageType: ''
    returnType: size_t
    signature: size_t vrrp_pkt_adver_dump(char *buf, size_t buflen, struct vrrp_pkt
      *pkt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:206,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:213,1
    - Dst: ntohs
      Src: /src/frr/vrrpd/vrrp_packet.c:214,1
    - Dst: ntohs
      Src: /src/frr/vrrpd/vrrp_packet.c:216,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:219,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:227,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/vrrpd/vrrp_packet.c:237,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/vrrpd/vrrp_packet.c:237,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:243,1
    - Dst: CMSG_DATA
      Src: /src/frr/vrrpd/vrrp_packet.c:245,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:247,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_packet.c:258,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp_packet.c:261,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:269,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:272,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:279,1
    - Dst: vrrp_pkt_checksum
      Src: /src/frr/vrrpd/vrrp_packet.c:282,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:285,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:290,1
    - Dst: VRRP_PKT_SIZE
      Src: /src/frr/vrrpd/vrrp_packet.c:294,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:296,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:301,1
    - Dst: VRRP_PKT_VCHECK
      Src: /src/frr/vrrpd/vrrp_packet.c:310,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp_packet.c:310,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 9
    argNames:
    - family
    - version
    - ipv4_ph
    - m
    - read
    - src
    - pkt
    - errmsg
    - errmsg_len
    argTypes:
    - int
    - int
    - bool
    - struct msghdr*
    - size_t
    - struct ipaddr*
    - struct vrrp_pkt**
    - char*
    - size_t
    assertStmts:
    - condition: (!"Unknown address family")
      pos:
        line_end: 260
        line_start: 260
        source_file: /src/frr/vrrpd/vrrp_packet.c
    constantsTouched: []
    func_position:
      end: 317
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 317
    functionName: vrrp_pkt_parse_datagram
    functionSourceFile: /src/frr/vrrpd/vrrp_packet.c
    functionUses: 0
    functionsReached:
    - assert
    - CMSG_NXTHDR
    - vrrp_pkt_checksum
    - VRRP_PKT_SIZE
    - CMSG_FIRSTHDR
    - ntohs
    - inet_ntop
    - CMSG_DATA
    - VRRP_PKT_VCHECK
    - memcpy
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t vrrp_pkt_parse_datagram(int family, int version, bool ipv4_ph,\n\t\t\t\tstruct
      msghdr *m, size_t read,\n\t\t\t\tstruct ipaddr *src, struct vrrp_pkt **pkt,\n\t\t\t\tchar
      *errmsg, size_t errmsg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - cond
    - ','
    - _f
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 202
    functionName: VRRP_PKT_VCHECK
    functionSourceFile: /src/frr/vrrpd/vrrp_packet.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VRRP_PKT_VCHECK(cond, _f, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_ndisc.c:62,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_ndisc.c:87,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_ndisc.c:93,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_ndisc.c:94,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_ndisc.c:98,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_ndisc.c:102,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_ndisc.c:112,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_ndisc.c:117,1
    - Dst: htonl
      Src: /src/frr/vrrpd/vrrp_ndisc.c:126,1
    - Dst: in_cksum_with_ph6
      Src: /src/frr/vrrpd/vrrp_ndisc.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 4
    argNames:
    - ifp
    - ip
    - buf
    - bufsiz
    argTypes:
    - struct interface*
    - struct ipaddr*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 134
    functionName: vrrp_ndisc_una_build
    functionSourceFile: /src/frr/vrrpd/vrrp_ndisc.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - in_cksum_with_ph6
    - htonl
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int vrrp_ndisc_una_build(struct interface *ifp, struct ipaddr *ip,\n\t\t\t\tuint8_t
      *buf, size_t bufsiz)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp_ndisc.c:138,1
    - Dst: vrrp_ndisc_una_build
      Src: /src/frr/vrrpd/vrrp_ndisc.c:144,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_ndisc.c:153,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_ndisc.c:155,1
    - Dst: ipaddr2str
      Src: /src/frr/vrrpd/vrrp_ndisc.c:161,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_ndisc.c:163,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp_ndisc.c:166,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/vrrpd/vrrp_ndisc.c:168,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/vrrpd/vrrp_ndisc.c:169,1
    - Dst: zlog_hexdump
      Src: /src/frr/vrrpd/vrrp_ndisc.c:170,1
    - Dst: sendto
      Src: /src/frr/vrrpd/vrrp_ndisc.c:172,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp_ndisc.c:179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - r
    - ip
    argTypes:
    - struct vrrp_router*
    - struct ipaddr*
    assertStmts:
    - condition: (r->family == AF_INET6)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/frr/vrrpd/vrrp_ndisc.c
    constantsTouched: []
    func_position:
      end: 186
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 186
    functionName: vrrp_ndisc_una_send
    functionSourceFile: /src/frr/vrrpd/vrrp_ndisc.c
    functionUses: 0
    functionsReached:
    - assert
    - DEBUG_MODE_CHECK
    - memset
    - DEBUGD
    - vrrp_ndisc_una_build
    - family2str
    - sendto
    - ipaddr2str
    - zlog_hexdump
    - memcpy
    linkageType: ''
    returnType: int
    signature: int vrrp_ndisc_una_send(struct vrrp_router *r, struct ipaddr *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp_ndisc.c:190,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_ndisc.c:195,1
    - Dst: vrrp_ndisc_una_send
      Src: /src/frr/vrrpd/vrrp_ndisc.c:196,1
    - Dst: vrrp_ndisc_init
      Src: /src/frr/vrrpd/vrrp_ndisc.c:201,1
    - Dst: frr_with_privs
      Src: /src/frr/vrrpd/vrrp_ndisc.c:203,1
    - Dst: socket
      Src: /src/frr/vrrpd/vrrp_ndisc.c:204,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_ndisc.c:204,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp_ndisc.c:207,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_ndisc.c:208,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_ndisc.c:210,1
    - Dst: zlog_err
      Src: /src/frr/vrrpd/vrrp_ndisc.c:213,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_ndisc.c:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts:
    - condition: (r->family == AF_INET6)
      pos:
        line_end: 189
        line_start: 189
        source_file: /src/frr/vrrpd/vrrp_ndisc.c
    constantsTouched: []
    func_position:
      end: 225
      start: 188
    functionDepth: 4
    functionLinenumber: 188
    functionLinenumberEnd: 225
    functionName: vrrp_ndisc_una_send_all
    functionSourceFile: /src/frr/vrrpd/vrrp_ndisc.c
    functionUses: 0
    functionsReached:
    - vrrp_ndisc_una_send
    - htons
    - DEBUGD
    - ALL_LIST_ELEMENTS_RO
    - socket
    - zlog_err
    - vrrp_ndisc_init
    - frr_with_privs
    - if
    - assert
    linkageType: ''
    returnType: int
    signature: int vrrp_ndisc_una_send_all(struct vrrp_router *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 230
    functionName: vrrp_ndisc_is_init
    functionSourceFile: /src/frr/vrrpd/vrrp_ndisc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool vrrp_ndisc_is_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:65,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:66,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:68,1
    - Dst: yang_dnode_is_default
      Src: /src/frr/vrrpd/vrrp_vty.c:69,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:70,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: cli_show_vrrp
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_is_default
    linkageType: ''
    returnType: void
    signature: void cli_show_vrrp(struct vty *vty, const struct lyd_node *dnode, bool
      show_defaults)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:94,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/vrrpd/vrrp_vty.c:95,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 98
    functionName: cli_show_shutdown
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_shutdown(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:136,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:137,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: cli_show_priority
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_priority(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:182,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/vrrpd/vrrp_vty.c:183,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 187
    functionName: cli_show_advertisement_interval
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: void
    signature: "void cli_show_advertisement_interval(struct vty *vty, const struct
      lyd_node *dnode,\n\t\t\t\t     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:211,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:212,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 215
    functionName: cli_show_ip
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: void cli_show_ip(struct vty *vty, const struct lyd_node *dnode, bool
      show_defaults)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:239,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:240,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: cli_show_ipv6
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: void cli_show_ipv6(struct vty *vty, const struct lyd_node *dnode, bool
      show_defaults)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:265,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/vrrpd/vrrp_vty.c:266,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 269
    functionName: cli_show_preempt
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_preempt(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \     bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/vrrpd/vrrp_vty.c:293,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/vrrpd/vrrp_vty.c:294,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 298
    functionName: cli_show_checksum_with_ipv4_pseudoheader
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void cli_show_checksum_with_ipv4_pseudoheader(struct vty *vty,\n\t\t\t\t\t
      \     const struct lyd_node *dnode,\n\t\t\t\t\t      bool show_defaults)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/vrrpd/vrrp_vty.c:379,1
    - Dst: json_object_new_object
      Src: /src/frr/vrrpd/vrrp_vty.c:380,1
    - Dst: json_object_new_object
      Src: /src/frr/vrrpd/vrrp_vty.c:381,1
    - Dst: json_object_new_array
      Src: /src/frr/vrrpd/vrrp_vty.c:382,1
    - Dst: json_object_new_object
      Src: /src/frr/vrrpd/vrrp_vty.c:383,1
    - Dst: json_object_new_object
      Src: /src/frr/vrrpd/vrrp_vty.c:384,1
    - Dst: json_object_new_array
      Src: /src/frr/vrrpd/vrrp_vty.c:385,1
    - Dst: prefix_mac2str
      Src: /src/frr/vrrpd/vrrp_vty.c:387,1
    - Dst: prefix_mac2str
      Src: /src/frr/vrrpd/vrrp_vty.c:388,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:390,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:391,1
    - Dst: json_object_boolean_add
      Src: /src/frr/vrrpd/vrrp_vty.c:392,1
    - Dst: json_object_boolean_add
      Src: /src/frr/vrrpd/vrrp_vty.c:393,1
    - Dst: json_object_boolean_add
      Src: /src/frr/vrrpd/vrrp_vty.c:394,1
    - Dst: json_object_boolean_add
      Src: /src/frr/vrrpd/vrrp_vty.c:395,1
    - Dst: json_object_boolean_add
      Src: /src/frr/vrrpd/vrrp_vty.c:396,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:398,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:399,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:402,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:404,1
    - Dst: ipaddr2str
      Src: /src/frr/vrrpd/vrrp_vty.c:405,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:406,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:407,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:408,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:409,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:411,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:412,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:415,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:416,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:417,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:418,1
    - Dst: json_object_object_add
      Src: /src/frr/vrrpd/vrrp_vty.c:419,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_vty.c:422,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp_vty.c:423,1
    - Dst: json_object_array_add
      Src: /src/frr/vrrpd/vrrp_vty.c:425,1
    - Dst: json_object_new_string
      Src: /src/frr/vrrpd/vrrp_vty.c:426,1
    - Dst: json_object_object_add
      Src: /src/frr/vrrpd/vrrp_vty.c:429,1
    - Dst: json_object_object_add
      Src: /src/frr/vrrpd/vrrp_vty.c:430,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:433,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:435,1
    - Dst: ipaddr2str
      Src: /src/frr/vrrpd/vrrp_vty.c:436,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp_vty.c:437,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_vty.c:438,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:439,1
    - Dst: json_object_string_add
      Src: /src/frr/vrrpd/vrrp_vty.c:440,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:441,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:442,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:444,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:445,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:448,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:449,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:450,1
    - Dst: json_object_int_add
      Src: /src/frr/vrrpd/vrrp_vty.c:452,1
    - Dst: json_object_object_add
      Src: /src/frr/vrrpd/vrrp_vty.c:453,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_vty.c:456,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp_vty.c:457,1
    - Dst: json_object_array_add
      Src: /src/frr/vrrpd/vrrp_vty.c:459,1
    - Dst: json_object_new_string
      Src: /src/frr/vrrpd/vrrp_vty.c:460,1
    - Dst: json_object_object_add
      Src: /src/frr/vrrpd/vrrp_vty.c:463,1
    - Dst: json_object_object_add
      Src: /src/frr/vrrpd/vrrp_vty.c:464,1
    - Dst: vrrp_show
      Src: /src/frr/vrrpd/vrrp_vty.c:478,1
    - Dst: ttable_new
      Src: /src/frr/vrrpd/vrrp_vty.c:490,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:492,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:493,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:494,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:496,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:497,1
    - Dst: prefix_mac2str
      Src: /src/frr/vrrpd/vrrp_vty.c:498,1
    - Dst: prefix_mac2str
      Src: /src/frr/vrrpd/vrrp_vty.c:499,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:500,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:502,1
    - Dst: ipaddr2str
      Src: /src/frr/vrrpd/vrrp_vty.c:504,1
    - Dst: ipaddr2str
      Src: /src/frr/vrrpd/vrrp_vty.c:505,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp_vty.c:506,1
    - Dst: strlcat
      Src: /src/frr/vrrpd/vrrp_vty.c:507,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:508,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:509,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:510,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:511,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:512,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:513,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:514,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:515,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:517,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:519,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:521,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:523,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:525,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:527,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:530,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:533,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:535,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:537,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:539,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:541,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:543,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:545,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:547,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:549,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:551,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:553,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:555,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:557,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_vty.c:561,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_vty.c:564,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp_vty.c:565,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:567,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:571,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_vty.c:574,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp_vty.c:575,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:577,1
    - Dst: ttable_dump
      Src: /src/frr/vrrpd/vrrp_vty.c:581,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:583,1
    - Dst: XFREE
      Src: /src/frr/vrrpd/vrrp_vty.c:584,1
    - Dst: ttable_del
      Src: /src/frr/vrrpd/vrrp_vty.c:585,1
    - Dst: vrrp_instance_display_sort_cmp
      Src: /src/frr/vrrpd/vrrp_vty.c:593,1
    - Dst: strcmp
      Src: /src/frr/vrrpd/vrrp_vty.c:599,1
    - Dst: DEFPY_YANG
      Src: /src/frr/vrrpd/vrrp_vty.c:607,1
    - Dst: hash_to_list
      Src: /src/frr/vrrpd/vrrp_vty.c:619,1
    - Dst: json_object_new_array
      Src: /src/frr/vrrpd/vrrp_vty.c:620,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_vty.c:624,1
    - Dst: strmatch
      Src: /src/frr/vrrpd/vrrp_vty.c:625,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp_vty.c:627,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp_vty.c:630,1
    - Dst: vrrp_show
      Src: /src/frr/vrrpd/vrrp_vty.c:631,1
    - Dst: json_object_array_add
      Src: /src/frr/vrrpd/vrrp_vty.c:633,1
    - Dst: vrrp_build_json
      Src: /src/frr/vrrpd/vrrp_vty.c:633,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:637,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/vrrpd/vrrp_vty.c:638,1
    - Dst: json_object_free
      Src: /src/frr/vrrpd/vrrp_vty.c:641,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp_vty.c:643,1
    - Dst: DEFPY_YANG
      Src: /src/frr/vrrpd/vrrp_vty.c:648,1
    - Dst: hash_to_list
      Src: /src/frr/vrrpd/vrrp_vty.c:660,1
    - Dst: ttable_new
      Src: /src/frr/vrrpd/vrrp_vty.c:664,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:666,1
    - Dst: ttable_rowseps
      Src: /src/frr/vrrpd/vrrp_vty.c:668,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_vty.c:670,1
    - Dst: strmatch
      Src: /src/frr/vrrpd/vrrp_vty.c:671,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp_vty.c:673,1
    - Dst: ttable_add_row
      Src: /src/frr/vrrpd/vrrp_vty.c:676,1
    - Dst: ttable_dump
      Src: /src/frr/vrrpd/vrrp_vty.c:686,1
    - Dst: XFREE
      Src: /src/frr/vrrpd/vrrp_vty.c:689,1
    - Dst: ttable_del
      Src: /src/frr/vrrpd/vrrp_vty.c:690,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp_vty.c:692,1
    - Dst: DEFPY_YANG
      Src: /src/frr/vrrpd/vrrp_vty.c:698,1
    - Dst: strmatch
      Src: /src/frr/vrrpd/vrrp_vty.c:713,1
    - Dst: vrrp_debug_set
      Src: /src/frr/vrrpd/vrrp_vty.c:714,1
    - Dst: vrrp_debug_set
      Src: /src/frr/vrrpd/vrrp_vty.c:717,1
    - Dst: DEFUN_NOSH
      Src: /src/frr/vrrpd/vrrp_vty.c:723,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_vty.c:730,1
    - Dst: vrrp_debug_status_write
      Src: /src/frr/vrrpd/vrrp_vty.c:732,1
    - Dst: cmd_show_lib_debugs
      Src: /src/frr/vrrpd/vrrp_vty.c:734,1
    - Dst: install_node
      Src: /src/frr/vrrpd/vrrp_vty.c:757,1
    - Dst: install_node
      Src: /src/frr/vrrpd/vrrp_vty.c:758,1
    - Dst: vrf_cmd_init
      Src: /src/frr/vrrpd/vrrp_vty.c:759,1
    - Dst: if_cmd_init_default
      Src: /src/frr/vrrpd/vrrp_vty.c:760,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:762,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:763,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:764,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:765,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:766,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:767,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:768,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:769,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:770,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:771,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:772,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:773,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:774,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:775,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:776,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:777,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:778,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 74
    argCount: 1
    argNames:
    - vr
    argTypes:
    - struct vrrp_vrouter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 368
    functionDepth: 5
    functionLinenumber: 368
    functionLinenumberEnd: 780
    functionName: vrrp_build_json
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 1
    functionsReached:
    - strlen
    - ttable_del
    - list_delete
    - vrrp_instance_display_sort_cmp
    - if_cmd_init_default
    - ttable_dump
    - DEFUN_NOSH
    - json_object_string_add
    - DEFPY_YANG
    - json_object_to_json_string_ext
    - install_element
    - strlcat
    - json_object_boolean_add
    - strmatch
    - vrrp_debug_set
    - memset
    - ALL_LIST_ELEMENTS_RO
    - vrrp_build_json
    - inet_ntop
    - cmd_show_lib_debugs
    - if
    - ttable_add_row
    - vty_out
    - json_object_int_add
    - json_object_free
    - vrrp_show
    - json_object_new_string
    - hash_to_list
    - XFREE
    - vrf_cmd_init
    - vrrp_debug_status_write
    - ttable_new
    - json_object_new_object
    - json_object_new_array
    - install_node
    - json_object_array_add
    - prefix_mac2str
    - strcmp
    - ttable_rowseps
    - json_object_object_add
    - ipaddr2str
    linkageType: ''
    returnType: struct json_object
    signature: struct json_object *vrrp_build_json(struct vrrp_vrouter *vr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_node
      Src: /src/frr/vrrpd/vrrp_vty.c:757,1
    - Dst: install_node
      Src: /src/frr/vrrpd/vrrp_vty.c:758,1
    - Dst: vrf_cmd_init
      Src: /src/frr/vrrpd/vrrp_vty.c:759,1
    - Dst: if_cmd_init_default
      Src: /src/frr/vrrpd/vrrp_vty.c:760,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:762,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:763,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:764,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:765,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:766,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:767,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:768,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:769,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:770,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:771,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:772,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:773,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:774,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:775,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:776,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:777,1
    - Dst: install_element
      Src: /src/frr/vrrpd/vrrp_vty.c:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 755
    functionDepth: 5
    functionLinenumber: 755
    functionLinenumberEnd: 780
    functionName: vrrp_vty_init
    functionSourceFile: /src/frr/vrrpd/vrrp_vty.c
    functionUses: 2
    functionsReached:
    - install_element
    - vrf_cmd_init
    - if_cmd_init_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void vrrp_vty_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/vrrpd/vrrp_debug.c:56,1
    - Dst: DEBUG_FLAGS_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:57,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/vrrpd/vrrp_debug.c:60,1
    - Dst: DEBUG_CLEAR
      Src: /src/frr/vrrpd/vrrp_debug.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - flags
    - set
    argTypes:
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 63
    functionName: vrrp_debug_set_all
    functionSourceFile: /src/frr/vrrpd/vrrp_debug.c
    functionUses: 0
    functionsReached:
    - DEBUG_FLAGS_SET
    - DEBUG_CLEAR
    - array_size
    - DEBUG_MODE_CHECK
    linkageType: ''
    returnType: void
    signature: void vrrp_debug_set_all(uint32_t flags, bool set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/vrrpd/vrrp_debug.c:72,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/vrrpd/vrrp_debug.c:73,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp_debug.c:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - config
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 77
    functionName: vrrp_debug_config_write_helper
    functionSourceFile: /src/frr/vrrpd/vrrp_debug.c
    functionUses: 0
    functionsReached:
    - DEBUG_MODE_CHECK
    - array_size
    - vty_out
    linkageType: ''
    returnType: int
    signature: int vrrp_debug_config_write_helper(struct vty *vty, bool config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_debug_config_write_helper
      Src: /src/frr/vrrpd/vrrp_debug.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 3
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: vrrp_config_write_debug
    functionSourceFile: /src/frr/vrrpd/vrrp_debug.c
    functionUses: 0
    functionsReached:
    - vrrp_debug_config_write_helper
    linkageType: ''
    returnType: int
    signature: int vrrp_config_write_debug(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_debug_config_write_helper
      Src: /src/frr/vrrpd/vrrp_debug.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: vrrp_debug_status_write
    functionSourceFile: /src/frr/vrrpd/vrrp_debug.c
    functionUses: 1
    functionsReached:
    - vrrp_debug_config_write_helper
    linkageType: ''
    returnType: int
    signature: int vrrp_debug_status_write(struct vty *vty)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DEBUG_NODE2MODE
      Src: /src/frr/vrrpd/vrrp_debug.c:93,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:96,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:98,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:100,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:102,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:104,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:106,1
    - Dst: DEBUG_MODE_SET
      Src: /src/frr/vrrpd/vrrp_debug.c:108,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 11
    argNames:
    - ifp
    - vrid
    - vtynode
    - onoff
    - proto
    - autoconf
    - pkt
    - sock
    - ndisc
    - arp
    - zebra
    argTypes:
    - struct interface*
    - uint8_t
    - int
    - bool
    - bool
    - bool
    - bool
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 109
    functionName: vrrp_debug_set
    functionSourceFile: /src/frr/vrrpd/vrrp_debug.c
    functionUses: 2
    functionsReached:
    - DEBUG_NODE2MODE
    - DEBUG_MODE_SET
    linkageType: ''
    returnType: void
    signature: "void vrrp_debug_set(struct interface *ifp, uint8_t vrid, int vtynode,\n\t\t
      \   bool onoff, bool proto, bool autoconf, bool pkt, bool sock,\n\t\t    bool
      ndisc, bool arp, bool zebra)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: debug_init
      Src: /src/frr/vrrpd/vrrp_debug.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: vrrp_debug_init
    functionSourceFile: /src/frr/vrrpd/vrrp_debug.c
    functionUses: 2
    functionsReached:
    - debug_init
    linkageType: ''
    returnType: void
    signature: void vrrp_debug_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_zebra.c:30,1
    - Dst: if_is_operative
      Src: /src/frr/vrrpd/vrrp_zebra.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ifp
    - func
    argTypes:
    - struct interface*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 37
    functionName: vrrp_zebra_debug_if_state
    functionSourceFile: /src/frr/vrrpd/vrrp_zebra.c
    functionUses: 0
    functionsReached:
    - DEBUGD
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void vrrp_zebra_debug_if_state(struct interface *ifp, const char *func)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/vrrpd/vrrp_northbound.c:30,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/vrrpd/vrrp_northbound.c:31,1
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:35,1
    - Dst: vrrp_lookup
      Src: /src/frr/vrrpd/vrrp_northbound.c:37,1
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_northbound.c:39,1
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:54,1
    - Dst: vrrp_vrouter_create
      Src: /src/frr/vrrpd/vrrp_northbound.c:55,1
    - Dst: nb_running_set_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 23
    functionDepth: 6
    functionLinenumber: 23
    functionLinenumberEnd: 59
    functionName: lib_interface_vrrp_vrrp_group_create
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - snprintf
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - vrrp_vrouter_create
    - yang_dnode_get_enum
    - vrrp_lookup
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:69,1
    - Dst: vrrp_vrouter_destroy
      Src: /src/frr/vrrpd/vrrp_northbound.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: lib_interface_vrrp_vrrp_group_destroy
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_vrouter_destroy
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_to_list
      Src: /src/frr/vrrpd/vrrp_northbound.c:78,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_northbound.c:89,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp_northbound.c:102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 104
    functionName: lib_interface_vrrp_vrrp_group_get_next
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - hash_to_list
    - list_delete
    linkageType: ''
    returnType: void
    signature: 'void *

      lib_interface_vrrp_vrrp_group_get_next(struct nb_cb_get_next_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp_northbound.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 116
    functionName: lib_interface_vrrp_vrrp_group_get_keys
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_get_keys(struct nb_cb_get_keys_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/frr/vrrpd/vrrp_northbound.c:121,1
    - Dst: vrrp_lookup
      Src: /src/frr/vrrpd/vrrp_northbound.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: lib_interface_vrrp_vrrp_group_lookup_entry
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - strtoul
    - vrrp_lookup
    linkageType: ''
    returnType: void
    signature: 'void *

      lib_interface_vrrp_vrrp_group_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:139,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp_northbound.c:140,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp_northbound.c:141,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/vrrpd/vrrp_northbound.c:142,1
    - Dst: vrrp_check_start
      Src: /src/frr/vrrpd/vrrp_northbound.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 6
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: lib_interface_vrrp_vrrp_group_version_modify
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_event
    - vrrp_check_start
    - yang_dnode_get_enum
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_version_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:159,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/vrrpd/vrrp_northbound.c:160,1
    - Dst: vrrp_add_ip
      Src: /src/frr/vrrpd/vrrp_northbound.c:162,1
    - Dst: vrrp_del_ip
      Src: /src/frr/vrrpd/vrrp_northbound.c:164,1
    - Dst: vrrp_check_start
      Src: /src/frr/vrrpd/vrrp_northbound.c:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnode
    - add
    argTypes:
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 153
    functionDepth: 6
    functionLinenumber: 153
    functionLinenumberEnd: 167
    functionName: vrrp_yang_add_del_virtual_address
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_del_ip
    - yang_dnode_get_ip
    - vrrp_add_ip
    - nb_running_get_entry
    - vrrp_check_start
    linkageType: ''
    returnType: void
    signature: "void vrrp_yang_add_del_virtual_address(const struct lyd_node *dnode,\n\t\t\t\t\t
      \     bool add)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_yang_add_del_virtual_address
      Src: /src/frr/vrrpd/vrrp_northbound.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 173
    functionDepth: 7
    functionLinenumber: 173
    functionLinenumberEnd: 182
    functionName: lib_interface_vrrp_vrrp_group_v4_virtual_address_create
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_yang_add_del_virtual_address
    linkageType: ''
    returnType: int
    signature: "int lib_interface_vrrp_vrrp_group_v4_virtual_address_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_yang_add_del_virtual_address
      Src: /src/frr/vrrpd/vrrp_northbound.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 184
    functionDepth: 7
    functionLinenumber: 184
    functionLinenumberEnd: 193
    functionName: lib_interface_vrrp_vrrp_group_v4_virtual_address_destroy
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_yang_add_del_virtual_address
    linkageType: ''
    returnType: int
    signature: "int lib_interface_vrrp_vrrp_group_v4_virtual_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/vrrpd/vrrp_northbound.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 206
    functionName: lib_interface_vrrp_vrrp_group_v4_current_priority_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_current_priority_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_string
      Src: /src/frr/vrrpd/vrrp_northbound.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 212
    functionDepth: 3
    functionLinenumber: 212
    functionLinenumberEnd: 224
    functionName: lib_interface_vrrp_vrrp_group_v4_vrrp_interface_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_vrrp_interface_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_is_zero
      Src: /src/frr/vrrpd/vrrp_northbound.c:237,1
    - Dst: yang_data_new_ip
      Src: /src/frr/vrrpd/vrrp_northbound.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 241
    functionName: lib_interface_vrrp_vrrp_group_v4_source_address_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - ipaddr_is_zero
    - yang_data_new_ip
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_source_address_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/vrrpd/vrrp_northbound.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 4
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: lib_interface_vrrp_vrrp_group_v4_state_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_interface_vrrp_vrrp_group_v4_state_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/vrrpd/vrrp_northbound.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 258
    functionDepth: 3
    functionLinenumber: 258
    functionLinenumberEnd: 265
    functionName: lib_interface_vrrp_vrrp_group_v4_master_advertisement_interval_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_master_advertisement_interval_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/vrrpd/vrrp_northbound.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 276
    functionName: lib_interface_vrrp_vrrp_group_v4_skew_time_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_interface_vrrp_vrrp_group_v4_skew_time_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/vrrpd/vrrp_northbound.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 282
    functionDepth: 3
    functionLinenumber: 282
    functionLinenumberEnd: 289
    functionName: lib_interface_vrrp_vrrp_group_v4_counter_state_transition_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_counter_state_transition_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/vrrpd/vrrp_northbound.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 302
    functionName: lib_interface_vrrp_vrrp_group_v4_counter_tx_advertisement_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_counter_tx_advertisement_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/vrrpd/vrrp_northbound.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 308
    functionDepth: 3
    functionLinenumber: 308
    functionLinenumberEnd: 315
    functionName: lib_interface_vrrp_vrrp_group_v4_counter_tx_gratuitous_arp_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_counter_tx_gratuitous_arp_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/vrrpd/vrrp_northbound.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 328
    functionName: lib_interface_vrrp_vrrp_group_v4_counter_rx_advertisement_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v4_counter_rx_advertisement_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_yang_add_del_virtual_address
      Src: /src/frr/vrrpd/vrrp_northbound.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 334
    functionDepth: 7
    functionLinenumber: 334
    functionLinenumberEnd: 343
    functionName: lib_interface_vrrp_vrrp_group_v6_virtual_address_create
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_yang_add_del_virtual_address
    linkageType: ''
    returnType: int
    signature: "int lib_interface_vrrp_vrrp_group_v6_virtual_address_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_yang_add_del_virtual_address
      Src: /src/frr/vrrpd/vrrp_northbound.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 345
    functionDepth: 7
    functionLinenumber: 345
    functionLinenumberEnd: 354
    functionName: lib_interface_vrrp_vrrp_group_v6_virtual_address_destroy
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_yang_add_del_virtual_address
    linkageType: ''
    returnType: int
    signature: "int lib_interface_vrrp_vrrp_group_v6_virtual_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint8
      Src: /src/frr/vrrpd/vrrp_northbound.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 3
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: lib_interface_vrrp_vrrp_group_v6_current_priority_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_current_priority_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_string
      Src: /src/frr/vrrpd/vrrp_northbound.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 373
    functionDepth: 3
    functionLinenumber: 373
    functionLinenumberEnd: 384
    functionName: lib_interface_vrrp_vrrp_group_v6_vrrp_interface_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_string
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_vrrp_interface_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipaddr_is_zero
      Src: /src/frr/vrrpd/vrrp_northbound.c:397,1
    - Dst: yang_data_new_ip
      Src: /src/frr/vrrpd/vrrp_northbound.c:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 401
    functionName: lib_interface_vrrp_vrrp_group_v6_source_address_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - ipaddr_is_zero
    - yang_data_new_ip
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_source_address_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/vrrpd/vrrp_northbound.c:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 412
    functionName: lib_interface_vrrp_vrrp_group_v6_state_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_interface_vrrp_vrrp_group_v6_state_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/vrrpd/vrrp_northbound.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 425
    functionName: lib_interface_vrrp_vrrp_group_v6_master_advertisement_interval_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_master_advertisement_interval_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint16
      Src: /src/frr/vrrpd/vrrp_northbound.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 430
    functionDepth: 3
    functionLinenumber: 430
    functionLinenumberEnd: 436
    functionName: lib_interface_vrrp_vrrp_group_v6_skew_time_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint16
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *lib_interface_vrrp_vrrp_group_v6_skew_time_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/vrrpd/vrrp_northbound.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 442
    functionDepth: 3
    functionLinenumber: 442
    functionLinenumberEnd: 449
    functionName: lib_interface_vrrp_vrrp_group_v6_counter_state_transition_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_counter_state_transition_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/vrrpd/vrrp_northbound.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 462
    functionName: lib_interface_vrrp_vrrp_group_v6_counter_tx_advertisement_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_counter_tx_advertisement_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 474
    functionName: lib_interface_vrrp_vrrp_group_v6_counter_tx_neighbor_advertisement_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_counter_tx_neighbor_advertisement_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 486
    functionName: lib_interface_vrrp_vrrp_group_v6_counter_rx_advertisement_get_elem
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nlib_interface_vrrp_vrrp_group_v6_counter_rx_advertisement_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:500,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/vrrpd/vrrp_northbound.c:501,1
    - Dst: vrrp_set_priority
      Src: /src/frr/vrrpd/vrrp_northbound.c:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 491
    functionDepth: 6
    functionLinenumber: 491
    functionLinenumberEnd: 505
    functionName: lib_interface_vrrp_vrrp_group_priority_modify
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - vrrp_set_priority
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_priority_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:519,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/vrrpd/vrrp_northbound.c:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 510
    functionDepth: 6
    functionLinenumber: 510
    functionLinenumberEnd: 524
    functionName: lib_interface_vrrp_vrrp_group_preempt_modify
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_preempt_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:538,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/vrrpd/vrrp_northbound.c:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 529
    functionDepth: 6
    functionLinenumber: 529
    functionLinenumberEnd: 543
    functionName: lib_interface_vrrp_vrrp_group_accept_mode_modify
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_accept_mode_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:558,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/vrrpd/vrrp_northbound.c:559,1
    - Dst: vrrp_set_advertisement_interval
      Src: /src/frr/vrrpd/vrrp_northbound.c:560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 549
    functionDepth: 6
    functionLinenumber: 549
    functionLinenumberEnd: 563
    functionName: lib_interface_vrrp_vrrp_group_advertisement_interval_modify
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - vrrp_set_advertisement_interval
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_vrrp_vrrp_group_advertisement_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:577,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/vrrpd/vrrp_northbound.c:578,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp_northbound.c:583,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp_northbound.c:584,1
    - Dst: vrrp_check_start
      Src: /src/frr/vrrpd/vrrp_northbound.c:586,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 568
    functionDepth: 6
    functionLinenumber: 568
    functionLinenumberEnd: 590
    functionName: lib_interface_vrrp_vrrp_group_shutdown_modify
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vrrp_event
    - vrrp_check_start
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_vrrp_vrrp_group_shutdown_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/vrrpd/vrrp_northbound.c:605,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/vrrpd/vrrp_northbound.c:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 596
    functionDepth: 6
    functionLinenumber: 596
    functionLinenumberEnd: 610
    functionName: lib_interface_vrrp_vrrp_group_checksum_with_ipv4_pseudoheader_modify
    functionSourceFile: /src/frr/vrrpd/vrrp_northbound.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_vrrp_vrrp_group_checksum_with_ipv4_pseudoheader_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - mac
    - v6
    - vrid
    argTypes:
    - struct ethaddr*
    - bool
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 78
    functionName: vrrp_mac_set
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vrrp_mac_set(struct ethaddr *mac, bool v6, uint8_t vrid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: vrrp_recalculate_timers
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vrrp_recalculate_timers(struct vrrp_router *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IS_IPADDR_V4
      Src: /src/frr/vrrpd/vrrp.c:139,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/vrrpd/vrrp.c:140,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp.c:141,1
    - Dst: connected_lookup_prefix_exact
      Src: /src/frr/vrrpd/vrrp.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ifp
    - addr
    argTypes:
    - struct interface*
    - struct ipaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 145
    functionName: vrrp_is_owner
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - IS_IPADDR_V4
    - memcpy
    - connected_lookup_prefix_exact
    linkageType: ''
    returnType: bool
    signature: bool vrrp_is_owner(struct interface *ifp, struct ipaddr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_mac_set
      Src: /src/frr/vrrpd/vrrp.c:161,1
    - Dst: vrrp_mac_set
      Src: /src/frr/vrrpd/vrrp.c:162,1
    - Dst: memcmp
      Src: /src/frr/vrrpd/vrrp.c:164,1
    - Dst: memcmp
      Src: /src/frr/vrrpd/vrrp.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 166
    functionName: vrrp_ifp_has_vrrp_mac
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_mac_set
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool vrrp_ifp_has_vrrp_mac(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_ifp_has_vrrp_mac
      Src: /src/frr/vrrpd/vrrp.c:192,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:194,1
    - Dst: vrrp_ifp_has_vrrp_mac
      Src: /src/frr/vrrpd/vrrp.c:198,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:199,1
    - Dst: if_lookup_by_index
      Src: /src/frr/vrrpd/vrrp.c:206,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:209,1
    - Dst: vrrp_lookup
      Src: /src/frr/vrrpd/vrrp.c:218,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 1
    argNames:
    - mvl_ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 187
    functionDepth: 4
    functionLinenumber: 187
    functionLinenumberEnd: 219
    functionName: vrrp_lookup_by_if_mvl
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_ifp_has_vrrp_mac
    - DEBUGD
    - if_lookup_by_index
    - vrrp_lookup
    linkageType: ''
    returnType: struct vrrp_vrouter
    signature: struct vrrp_vrouter *vrrp_lookup_by_if_mvl(struct interface *mvl_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_to_list
      Src: /src/frr/vrrpd/vrrp.c:232,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/vrrpd/vrrp.c:236,1
    - Dst: list_delete_node
      Src: /src/frr/vrrpd/vrrp.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 241
    functionName: vrrp_lookup_by_if
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - list_delete_node
    - ALL_LIST_ELEMENTS
    - hash_to_list
    linkageType: ''
    returnType: struct list
    signature: struct list *vrrp_lookup_by_if(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_lookup_by_if_mvl
      Src: /src/frr/vrrpd/vrrp.c:270,1
    - Dst: list_new
      Src: /src/frr/vrrpd/vrrp.c:271,1
    - Dst: vrrp_lookup_by_if
      Src: /src/frr/vrrpd/vrrp.c:271,1
    - Dst: listnode_add
      Src: /src/frr/vrrpd/vrrp.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 265
    functionDepth: 5
    functionLinenumber: 265
    functionLinenumberEnd: 277
    functionName: vrrp_lookup_by_if_any
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_lookup_by_if_mvl
    - list_new
    - listnode_add
    - vrrp_lookup_by_if
    linkageType: ''
    returnType: struct list
    signature: struct list *vrrp_lookup_by_if_any(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/vrrpd/vrrp.c:299,1
    - Dst: connected_count_by_family
      Src: /src/frr/vrrpd/vrrp.c:303,1
    - Dst: CHECK_FLAG
      Src: /src/frr/vrrpd/vrrp.c:310,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp.c:318,1
    - Dst: zlog_warn
      Src: /src/frr/vrrpd/vrrp.c:320,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:322,1
    - Dst: if_is_operative
      Src: /src/frr/vrrpd/vrrp.c:338,1
    - Dst: CHECK_FLAG
      Src: /src/frr/vrrpd/vrrp.c:346,1
    - Dst: connected_get_linklocal
      Src: /src/frr/vrrpd/vrrp.c:349,1
    - Dst: connected_count_by_family
      Src: /src/frr/vrrpd/vrrp.c:353,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp.c:363,1
    - Dst: zlog_warn
      Src: /src/frr/vrrpd/vrrp.c:365,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:367,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 46
    argCount: 1
    argNames:
    - vr
    argTypes:
    - struct vrrp_vrouter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 368
    functionName: vrrp_check_start
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 3
    functionsReached:
    - connected_get_linklocal
    - CHECK_FLAG
    - family2str
    - connected_count_by_family
    - vrrp_event
    - zlog_warn
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void vrrp_check_start(struct vrrp_vrouter *vr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - vr
    - priority
    argTypes:
    - struct vrrp_vrouter*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 375
    functionName: vrrp_set_priority
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void vrrp_set_priority(struct vrrp_vrouter *vr, uint8_t priority)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_recalculate_timers
      Src: /src/frr/vrrpd/vrrp.c:384,1
    - Dst: vrrp_recalculate_timers
      Src: /src/frr/vrrpd/vrrp.c:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - vr
    - advertisement_interval
    argTypes:
    - struct vrrp_vrouter*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 386
    functionName: vrrp_set_advertisement_interval
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - vrrp_recalculate_timers
    linkageType: ''
    returnType: void
    signature: "void vrrp_set_advertisement_interval(struct vrrp_vrouter *vr,\n\t\t\t\t
      \    uint16_t advertisement_interval)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:394,1
    - Dst: ipaddr_cmp
      Src: /src/frr/vrrpd/vrrp.c:395,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp.c:406,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp.c:407,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:409,1
    - Dst: vrrp_has_ip
      Src: /src/frr/vrrpd/vrrp.c:409,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:412,1
    - Dst: vrrp_is_owner
      Src: /src/frr/vrrpd/vrrp.c:412,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp.c:415,1
    - Dst: zlog_err
      Src: /src/frr/vrrpd/vrrp.c:416,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:419,1
    - Dst: XCALLOC
      Src: /src/frr/vrrpd/vrrp.c:423,1
    - Dst: listnode_add
      Src: /src/frr/vrrpd/vrrp.c:426,1
    - Dst: switch
      Src: /src/frr/vrrpd/vrrp.c:429,1
    - Dst: vrrp_garp_send
      Src: /src/frr/vrrpd/vrrp.c:431,1
    - Dst: ipaddr_v4::ipaddr_v4
      Src: /src/frr/vrrpd/vrrp.c:431,1
    - Dst: vrrp_ndisc_una_send
      Src: /src/frr/vrrpd/vrrp.c:434,1
    - Dst: vrrp_add_ipv4::vrrp_add_ipv4
      Src: /src/frr/vrrpd/vrrp.c:434,1
    - Dst: vrrp_add_ip
      Src: /src/frr/vrrpd/vrrp.c:448,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp.c:453,1
    - Dst: vrrp_add_ip
      Src: /src/frr/vrrpd/vrrp.c:459,1
    - Dst: IS_IPADDR_V4
      Src: /src/frr/vrrpd/vrrp.c:468,1
    - Dst: vrrp_has_ip
      Src: /src/frr/vrrpd/vrrp.c:470,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/vrrpd/vrrp.c:473,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:474,1
    - Dst: ipaddr_cmp
      Src: /src/frr/vrrpd/vrrp.c:474,1
    - Dst: list_delete_node
      Src: /src/frr/vrrpd/vrrp.c:475,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp.c:484,1
    - Dst: vrrp_del_ip
      Src: /src/frr/vrrpd/vrrp.c:495,1
    - Dst: vrrp_del_ip
      Src: /src/frr/vrrpd/vrrp.c:504,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:547,1
    - Dst: prefix_mac2str
      Src: /src/frr/vrrpd/vrrp.c:560,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp.c:562,1
    - Dst: zlog_warn
      Src: /src/frr/vrrpd/vrrp.c:565,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:567,1
    - Dst: zlog_warn
      Src: /src/frr/vrrpd/vrrp.c:569,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:571,1
    - Dst: zlog_info
      Src: /src/frr/vrrpd/vrrp.c:573,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:575,1
    - Dst: vrrp_router_create
      Src: /src/frr/vrrpd/vrrp.c:582,1
    - Dst: XCALLOC
      Src: /src/frr/vrrpd/vrrp.c:586,1
    - Dst: list_new
      Src: /src/frr/vrrpd/vrrp.c:592,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - vr
    - ip
    argTypes:
    - struct vrrp_vrouter*
    - struct ipaddr*
    assertStmts:
    - condition: (vr->version != 2)
      pos:
        line_end: 452
        line_start: 452
        source_file: /src/frr/vrrpd/vrrp.c
    - condition: (r->family == af)
      pos:
        line_end: 405
        line_start: 405
        source_file: /src/frr/vrrpd/vrrp.c
    - condition: (!!selection == !!candidates)
      pos:
        line_end: 561
        line_start: 561
        source_file: /src/frr/vrrpd/vrrp.c
    - condition: (!(r->vr->version == 2 && ip->ipa_type == IPADDR_V6))
      pos:
        line_end: 406
        line_start: 406
        source_file: /src/frr/vrrpd/vrrp.c
    constantsTouched: []
    func_position:
      end: 601
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 601
    functionName: vrrp_has_ip
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - switch
    - listnode_add
    - zlog_warn
    - vrrp_is_owner
    - vrrp_has_ip
    - XCALLOC
    - ipaddr_v4::ipaddr_v4
    - ALL_LIST_ELEMENTS_RO
    - inet_ntop
    - vrrp_garp_send
    - if
    - assert
    - vrrp_add_ipv4::vrrp_add_ipv4
    - vrrp_del_ip
    - zlog_info
    - family2str
    - zlog_err
    - list_delete_node
    - vrrp_event
    - ipaddr_cmp
    - vrrp_ndisc_una_send
    - vrrp_add_ip
    - prefix_mac2str
    - vrrp_router_create
    - list_new
    - ALL_LIST_ELEMENTS
    - IS_IPADDR_V4
    linkageType: ''
    returnType: bool
    signature: bool vrrp_has_ip(struct vrrp_vrouter *vr, struct ipaddr *ip)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp.c:606,1
    - Dst: close
      Src: /src/frr/vrrpd/vrrp.c:609,1
    - Dst: close
      Src: /src/frr/vrrpd/vrrp.c:611,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp.c:614,1
    - Dst: XFREE
      Src: /src/frr/vrrpd/vrrp.c:615,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 616
    functionName: vrrp_router_destroy
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_event
    - list_delete
    - close
    - XFREE
    linkageType: ''
    returnType: void
    signature: void vrrp_router_destroy(struct vrrp_router *r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_lookup
      Src: /src/frr/vrrpd/vrrp.c:621,1
    - Dst: XCALLOC
      Src: /src/frr/vrrpd/vrrp.c:629,1
    - Dst: vrrp_router_create
      Src: /src/frr/vrrpd/vrrp.c:641,1
    - Dst: vrrp_router_create
      Src: /src/frr/vrrpd/vrrp.c:642,1
    - Dst: vrrp_set_advertisement_interval
      Src: /src/frr/vrrpd/vrrp.c:644,1
    - Dst: hash_get
      Src: /src/frr/vrrpd/vrrp.c:646,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - ifp
    - vrid
    - version
    argTypes:
    - struct interface*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 618
    functionDepth: 3
    functionLinenumber: 618
    functionLinenumberEnd: 649
    functionName: vrrp_vrouter_create
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 2
    functionsReached:
    - XCALLOC
    - vrrp_set_advertisement_interval
    - vrrp_router_create
    - hash_get
    - vrrp_lookup
    linkageType: ''
    returnType: struct vrrp_vrouter
    signature: "struct vrrp_vrouter *vrrp_vrouter_create(struct interface *ifp, uint8_t
      vrid,\n\t\t\t\t\t uint8_t version)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_router_destroy
      Src: /src/frr/vrrpd/vrrp.c:653,1
    - Dst: vrrp_router_destroy
      Src: /src/frr/vrrpd/vrrp.c:654,1
    - Dst: hash_release
      Src: /src/frr/vrrpd/vrrp.c:655,1
    - Dst: XFREE
      Src: /src/frr/vrrpd/vrrp.c:656,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vr
    argTypes:
    - struct vrrp_vrouter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 657
    functionName: vrrp_vrouter_destroy
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - hash_release
    - XFREE
    - vrrp_router_destroy
    linkageType: ''
    returnType: void
    signature: void vrrp_vrouter_destroy(struct vrrp_vrouter *vr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/vrrpd/vrrp.c:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ifp
    - vrid
    argTypes:
    - struct interface*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 659
    functionDepth: 4
    functionLinenumber: 659
    functionLinenumberEnd: 670
    functionName: vrrp_lookup
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 4
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct vrrp_vrouter
    signature: struct vrrp_vrouter *vrrp_lookup(const struct interface *ifp, uint8_t
      vrid)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:706,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/vrrpd/vrrp.c:709,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:718,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp.c:724,1
    - Dst: switch
      Src: /src/frr/vrrpd/vrrp.c:726,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/vrrpd/vrrp.c:744,1
    - Dst: bind
      Src: /src/frr/vrrpd/vrrp.c:745,1
    - Dst: zlog_err
      Src: /src/frr/vrrpd/vrrp.c:746,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:749,1
    - Dst: safe_strerror
      Src: /src/frr/vrrpd/vrrp.c:750,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:753,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:756,1
    - Dst: vrrp_send_advertisement
      Src: /src/frr/vrrpd/vrrp.c:769,1
    - Dst: sockunion
      Src: /src/frr/vrrpd/vrrp.c:774,1
    - Dst: vrrp_bind_to_primary_connected
      Src: /src/frr/vrrpd/vrrp.c:777,1
    - Dst: list_to_array
      Src: /src/frr/vrrpd/vrrp.c:780,1
    - Dst: vrrp_pkt_adver_build
      Src: /src/frr/vrrpd/vrrp.c:782,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/vrrpd/vrrp.c:787,1
    - Dst: zlog_hexdump
      Src: /src/frr/vrrpd/vrrp.c:788,1
    - Dst: str2sockunion
      Src: /src/frr/vrrpd/vrrp.c:792,1
    - Dst: sendto
      Src: /src/frr/vrrpd/vrrp.c:794,1
    - Dst: sockunion_sizeof
      Src: /src/frr/vrrpd/vrrp.c:795,1
    - Dst: vrrp_pkt_free
      Src: /src/frr/vrrpd/vrrp.c:797,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:802,1
    - Dst: safe_strerror
      Src: /src/frr/vrrpd/vrrp.c:803,1
    - Dst: vrrp_recv_advertisement
      Src: /src/frr/vrrpd/vrrp.c:836,1
    - Dst: ipaddr2str
      Src: /src/frr/vrrpd/vrrp.c:842,1
    - Dst: ipaddr2str
      Src: /src/frr/vrrpd/vrrp.c:843,1
    - Dst: vrrp_pkt_adver_dump
      Src: /src/frr/vrrpd/vrrp.c:847,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:848,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:851,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:855,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:858,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:864,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:867,1
    - Dst: MAX
      Src: /src/frr/vrrpd/vrrp.c:873,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:875,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:878,1
    - Dst: MAX
      Src: /src/frr/vrrpd/vrrp.c:880,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:887,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:890,1
    - Dst: ipaddr_cmp
      Src: /src/frr/vrrpd/vrrp.c:899,1
    - Dst: vrrp_send_advertisement
      Src: /src/frr/vrrpd/vrrp.c:902,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:903,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:904,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:914,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:916,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp.c:919,1
    - Dst: vrrp_recalculate_timers
      Src: /src/frr/vrrpd/vrrp.c:921,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:922,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:923,1
    - Dst: vrrp_change_state
      Src: /src/frr/vrrpd/vrrp.c:927,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:930,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:933,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:939,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:940,1
    - Dst: ntohs
      Src: /src/frr/vrrpd/vrrp.c:947,1
    - Dst: vrrp_recalculate_timers
      Src: /src/frr/vrrpd/vrrp.c:949,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:950,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:951,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:958,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:961,1
    - Dst: zlog_err
      Src: /src/frr/vrrpd/vrrp.c:966,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:968,1
    - Dst: EVENT_ARG
      Src: /src/frr/vrrpd/vrrp.c:984,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/vrrpd/vrrp.c:1010,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp.c:1014,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/vrrpd/vrrp.c:1023,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1024,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1027,1
    - Dst: zlog_hexdump
      Src: /src/frr/vrrpd/vrrp.c:1028,1
    - Dst: vrrp_pkt_parse_datagram
      Src: /src/frr/vrrpd/vrrp.c:1031,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1037,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1040,1
    - Dst: vrrp_recv_advertisement
      Src: /src/frr/vrrpd/vrrp.c:1042,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp.c:1047,1
    - Dst: event_add_read
      Src: /src/frr/vrrpd/vrrp.c:1050,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 101
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 693
    functionDepth: 4
    functionLinenumber: 693
    functionLinenumberEnd: 1052
    functionName: vrrp_bind_to_primary_connected
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - switch
    - sockopt_reuseaddr
    - htons
    - vrrp_pkt_adver_dump
    - ntohs
    - sendto
    - vrrp_pkt_adver_build
    - list_to_array
    - sockunion_sizeof
    - vrrp_change_state
    - vrrp_bind_to_primary_connected
    - memset
    - ALL_LIST_ELEMENTS_RO
    - event_add_timer_msec
    - ERRNO_IO_RETRY
    - safe_strerror
    - EVENT_ARG
    - vrrp_recv_advertisement
    - vrrp_pkt_parse_datagram
    - vrrp_send_advertisement
    - vrrp_recalculate_timers
    - family2str
    - zlog_err
    - vrrp_event
    - vrrp_pkt_free
    - EVENT_OFF
    - event_add_read
    - zlog_hexdump
    - MAX
    - ipaddr_cmp
    - DEBUG_MODE_CHECK
    - str2sockunion
    - IN6_IS_ADDR_LINKLOCAL
    - DEBUGD
    - sockunion
    - bind
    - ipaddr2str
    linkageType: ''
    returnType: int
    signature: int vrrp_bind_to_primary_connected(struct vrrp_router *r)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/vrrpd/vrrp.c:1087,1
    - Dst: vrf_socket
      Src: /src/frr/vrrpd/vrrp.c:1089,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1098,1
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1109,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp.c:1111,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1118,1
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1129,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1135,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/vrrpd/vrrp.c:1139,1
    - Dst: setsockopt_ipv4_multicast_loop
      Src: /src/frr/vrrpd/vrrp.c:1142,1
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1146,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp.c:1148,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1153,1
    - Dst: safe_strerror
      Src: /src/frr/vrrpd/vrrp.c:1154,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1158,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1161,1
    - Dst: htonl
      Src: /src/frr/vrrpd/vrrp.c:1167,1
    - Dst: bind
      Src: /src/frr/vrrpd/vrrp.c:1168,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1172,1
    - Dst: safe_strerror
      Src: /src/frr/vrrpd/vrrp.c:1173,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1177,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1180,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp.c:1183,1
    - Dst: listhead
      Src: /src/frr/vrrpd/vrrp.c:1183,1
    - Dst: listhead
      Src: /src/frr/vrrpd/vrrp.c:1184,1
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/vrrpd/vrrp.c:1187,1
    - Dst: htonl
      Src: /src/frr/vrrpd/vrrp.c:1188,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1193,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1197,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1200,1
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1206,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1212,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1217,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1220,1
    - Dst: vrrp_bind_to_primary_connected
      Src: /src/frr/vrrpd/vrrp.c:1223,1
    - Dst: setsockopt_ipv6_multicast_hops
      Src: /src/frr/vrrpd/vrrp.c:1230,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1235,1
    - Dst: setsockopt_ipv6_tclass
      Src: /src/frr/vrrpd/vrrp.c:1239,1
    - Dst: setsockopt_ipv6_hoplimit
      Src: /src/frr/vrrpd/vrrp.c:1242,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1246,1
    - Dst: setsockopt_ipv6_multicast_loop
      Src: /src/frr/vrrpd/vrrp.c:1252,1
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1256,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp.c:1258,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1263,1
    - Dst: safe_strerror
      Src: /src/frr/vrrpd/vrrp.c:1264,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1268,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1271,1
    - Dst: inet_pton
      Src: /src/frr/vrrpd/vrrp.c:1277,1
    - Dst: bind
      Src: /src/frr/vrrpd/vrrp.c:1278,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1282,1
    - Dst: safe_strerror
      Src: /src/frr/vrrpd/vrrp.c:1283,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1287,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1290,1
    - Dst: inet_pton
      Src: /src/frr/vrrpd/vrrp.c:1295,1
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1298,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1303,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1307,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1310,1
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1313,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1319,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1324,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1327,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1335,1
    - Dst: close
      Src: /src/frr/vrrpd/vrrp.c:1337,1
    - Dst: close
      Src: /src/frr/vrrpd/vrrp.c:1341,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 136
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts:
    - condition: (listhead(r->vr->ifp->connected))
      pos:
        line_end: 1182
        line_start: 1182
        source_file: /src/frr/vrrpd/vrrp.c
    constantsTouched: []
    func_position:
      end: 1348
      start: 1081
    functionDepth: 5
    functionLinenumber: 1081
    functionLinenumberEnd: 1348
    functionName: vrrp_socket
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - strlen
    - listhead
    - htonl
    - setsockopt_ipv4_multicast
    - vrrp_bind_to_primary_connected
    - vrf_socket
    - setsockopt_ipv4_multicast_loop
    - setsockopt_ipv4_tos
    - safe_strerror
    - setsockopt
    - assert
    - family2str
    - setsockopt_ipv6_multicast_loop
    - inet_pton
    - setsockopt_ipv6_tclass
    - DEBUGD
    - close
    - bind
    - setsockopt_ipv6_multicast_hops
    - setsockopt_ipv6_hoplimit
    linkageType: ''
    returnType: int
    signature: int vrrp_socket(struct vrrp_router *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/vrrpd/vrrp.c:1087,1
    - Dst: vrf_socket
      Src: /src/frr/vrrpd/vrrp.c:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1086
    functionDepth: 3
    functionLinenumber: 1086
    functionLinenumberEnd: 1091
    functionName: (&vrrp_privs)
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrf_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&vrrp_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1109,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp.c:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1112
    functionName: (&vrrp_privs)
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - strlen
    - setsockopt
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&vrrp_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1146,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp.c:1148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1145
    functionDepth: 0
    functionLinenumber: 1145
    functionLinenumberEnd: 1149
    functionName: (&vrrp_privs)
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - strlen
    - setsockopt
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&vrrp_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/vrrpd/vrrp.c:1256,1
    - Dst: strlen
      Src: /src/frr/vrrpd/vrrp.c:1258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1255
    functionDepth: 0
    functionLinenumber: 1255
    functionLinenumberEnd: 1259
    functionName: (&vrrp_privs)
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - strlen
    - setsockopt
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&vrrp_privs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_zebra_radv_set
      Src: /src/frr/vrrpd/vrrp.c:1365,1
    - Dst: vrrp_zclient_send_interface_protodown
      Src: /src/frr/vrrpd/vrrp.c:1368,1
    - Dst: if_is_operative
      Src: /src/frr/vrrpd/vrrp.c:1374,1
    - Dst: vrrp_send_advertisement
      Src: /src/frr/vrrpd/vrrp.c:1375,1
    - Dst: vrrp_garp_send_all
      Src: /src/frr/vrrpd/vrrp.c:1378,1
    - Dst: vrrp_ndisc_una_send_all
      Src: /src/frr/vrrpd/vrrp.c:1380,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1382,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1385,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1389,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1392,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1395,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1361
    functionDepth: 5
    functionLinenumber: 1361
    functionLinenumberEnd: 1402
    functionName: vrrp_change_state_master
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_send_advertisement
    - DEBUGD
    - family2str
    - vrrp_ndisc_una_send_all
    - vrrp_zebra_radv_set
    - vrrp_zclient_send_interface_protodown
    - vrrp_garp_send_all
    - if_is_operative
    linkageType: ''
    returnType: void
    signature: void vrrp_change_state_master(struct vrrp_router *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_zebra_radv_set
      Src: /src/frr/vrrpd/vrrp.c:1414,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:1417,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp.c:1422,1
    - Dst: vrrp_zclient_send_interface_protodown
      Src: /src/frr/vrrpd/vrrp.c:1424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1410
    functionDepth: 1
    functionLinenumber: 1410
    functionLinenumberEnd: 1425
    functionName: vrrp_change_state_backup
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - vrrp_zebra_radv_set
    - vrrp_zclient_send_interface_protodown
    - memset
    linkageType: ''
    returnType: void
    signature: void vrrp_change_state_backup(struct vrrp_router *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_recalculate_timers
      Src: /src/frr/vrrpd/vrrp.c:1439,1
    - Dst: vrrp_zebra_radv_set
      Src: /src/frr/vrrpd/vrrp.c:1447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1448
      start: 1436
    functionDepth: 1
    functionLinenumber: 1436
    functionLinenumberEnd: 1448
    functionName: vrrp_change_state_initialize
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_recalculate_timers
    - vrrp_zebra_radv_set
    linkageType: ''
    returnType: void
    signature: void vrrp_change_state_initialize(struct vrrp_router *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hook_call
      Src: /src/frr/vrrpd/vrrp.c:1473,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - r
    - to
    argTypes:
    - struct vrrp_router*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1466
    functionDepth: 1
    functionLinenumber: 1466
    functionLinenumberEnd: 1480
    functionName: vrrp_change_state
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - family2str
    - hook_call
    linkageType: ''
    returnType: void
    signature: void vrrp_change_state(struct vrrp_router *r, int to)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/vrrpd/vrrp.c:1487,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1489,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1492,1
    - Dst: vrrp_send_advertisement
      Src: /src/frr/vrrpd/vrrp.c:1496,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:1499,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1485
    functionDepth: 1
    functionLinenumber: 1485
    functionLinenumberEnd: 1508
    functionName: vrrp_adver_timer_expire
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_send_advertisement
    - DEBUGD
    - family2str
    - event_add_timer_msec
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void vrrp_adver_timer_expire(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/vrrpd/vrrp.c:1515,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1519,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:1521,1
    - Dst: vrrp_change_state
      Src: /src/frr/vrrpd/vrrp.c:1524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1513
    functionDepth: 2
    functionLinenumber: 1513
    functionLinenumberEnd: 1525
    functionName: vrrp_master_down_timer_expire
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - vrrp_change_state
    - family2str
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void vrrp_master_down_timer_expire(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_attach_interface
      Src: /src/frr/vrrpd/vrrp.c:1551,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1554,1
    - Dst: vrrp_garp_is_init
      Src: /src/frr/vrrpd/vrrp.c:1559,1
    - Dst: vrrp_garp_init
      Src: /src/frr/vrrpd/vrrp.c:1560,1
    - Dst: vrrp_ndisc_is_init
      Src: /src/frr/vrrpd/vrrp.c:1561,1
    - Dst: vrrp_ndisc_init
      Src: /src/frr/vrrpd/vrrp.c:1562,1
    - Dst: vrrp_socket
      Src: /src/frr/vrrpd/vrrp.c:1566,1
    - Dst: event_add_read
      Src: /src/frr/vrrpd/vrrp.c:1573,1
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp.c:1576,1
    - Dst: listhead
      Src: /src/frr/vrrpd/vrrp.c:1576,1
    - Dst: listhead
      Src: /src/frr/vrrpd/vrrp.c:1577,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp.c:1580,1
    - Dst: vrrp_is_owner
      Src: /src/frr/vrrpd/vrrp.c:1583,1
    - Dst: vrrp_recalculate_timers
      Src: /src/frr/vrrpd/vrrp.c:1585,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1590,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:1595,1
    - Dst: vrrp_change_state
      Src: /src/frr/vrrpd/vrrp.c:1598,1
    - Dst: vrrp_recalculate_timers
      Src: /src/frr/vrrpd/vrrp.c:1601,1
    - Dst: event_add_timer_msec
      Src: /src/frr/vrrpd/vrrp.c:1602,1
    - Dst: vrrp_change_state
      Src: /src/frr/vrrpd/vrrp.c:1605,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts:
    - condition: (listhead(r->addrs))
      pos:
        line_end: 1575
        line_start: 1575
        source_file: /src/frr/vrrpd/vrrp.c
    constantsTouched: []
    func_position:
      end: 1611
      start: 1544
    functionDepth: 6
    functionLinenumber: 1544
    functionLinenumberEnd: 1611
    functionName: vrrp_startup
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - assert
    - vrrp_garp_init
    - vrrp_recalculate_timers
    - event_add_read
    - listhead
    - family2str
    - vrrp_socket
    - event_add_timer_msec
    - vrrp_ndisc_init
    - inet_ntop
    - vrrp_is_owner
    - vrrp_garp_is_init
    - vrrp_change_state
    - vrrp_ndisc_is_init
    - vrrp_attach_interface
    linkageType: ''
    returnType: int
    signature: int vrrp_startup(struct vrrp_router *r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_send_advertisement
      Src: /src/frr/vrrpd/vrrp.c:1628,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1634,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1637,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:1644,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:1645,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:1646,1
    - Dst: EVENT_OFF
      Src: /src/frr/vrrpd/vrrp.c:1647,1
    - Dst: vrrp_zclient_send_interface_protodown
      Src: /src/frr/vrrpd/vrrp.c:1651,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp.c:1654,1
    - Dst: close
      Src: /src/frr/vrrpd/vrrp.c:1657,1
    - Dst: close
      Src: /src/frr/vrrpd/vrrp.c:1661,1
    - Dst: vrrp_change_state
      Src: /src/frr/vrrpd/vrrp.c:1665,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1619
    functionDepth: 2
    functionLinenumber: 1619
    functionLinenumberEnd: 1670
    functionName: vrrp_shutdown
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - vrrp_send_advertisement
    - memset
    - DEBUGD
    - family2str
    - close
    - EVENT_OFF
    - vrrp_zclient_send_interface_protodown
    - vrrp_change_state
    linkageType: ''
    returnType: int
    signature: int vrrp_shutdown(struct vrrp_router *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - r
    - event
    argTypes:
    - struct vrrp_router*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1690
    functionDepth: 1
    functionLinenumber: 1690
    functionLinenumberEnd: 1695
    functionName: vrrp_event
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 6
    functionsReached:
    - family2str
    linkageType: ''
    returnType: int
    signature: int vrrp_event(struct vrrp_router *r, int event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1716,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1719,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:1720,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/vrrpd/vrrp.c:1722,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:1723,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1724,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1727,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:1728,1
    - Dst: vrrp_add_ipv4
      Src: /src/frr/vrrpd/vrrp.c:1729,1
    - Dst: vrrp_add_ipv6
      Src: /src/frr/vrrpd/vrrp.c:1731,1
    - Dst: vrrp_check_start
      Src: /src/frr/vrrpd/vrrp.c:1735,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1738,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1741,1
    - Dst: vrrp_event
      Src: /src/frr/vrrpd/vrrp.c:1742,1
    - Dst: vrrp_autoconfig_autocreate
      Src: /src/frr/vrrpd/vrrp.c:1747,1
    - Dst: if_lookup_by_index
      Src: /src/frr/vrrpd/vrrp.c:1752,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1760,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1763,1
    - Dst: vrrp_vrouter_create
      Src: /src/frr/vrrpd/vrrp.c:1765,1
    - Dst: zlog_warn
      Src: /src/frr/vrrpd/vrrp.c:1768,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:1770,1
    - Dst: vrrp_zclient_send_interface_protodown
      Src: /src/frr/vrrpd/vrrp.c:1782,1
    - Dst: vrrp_zclient_send_interface_protodown
      Src: /src/frr/vrrpd/vrrp.c:1784,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:1787,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:1788,1
    - Dst: vrrp_autoconfig_if_add
      Src: /src/frr/vrrpd/vrrp.c:1807,1
    - Dst: vrrp_ifp_has_vrrp_mac
      Src: /src/frr/vrrpd/vrrp.c:1815,1
    - Dst: vrrp_lookup_by_if_mvl
      Src: /src/frr/vrrpd/vrrp.c:1818,1
    - Dst: vrrp_autoconfig_autocreate
      Src: /src/frr/vrrpd/vrrp.c:1821,1
    - Dst: vrrp_attach_interface
      Src: /src/frr/vrrpd/vrrp.c:1834,1
    - Dst: vrrp_zclient_send_interface_protodown
      Src: /src/frr/vrrpd/vrrp.c:1837,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:1843,1
    - Dst: vrrp_attach_interface
      Src: /src/frr/vrrpd/vrrp.c:1847,1
    - Dst: vrrp_zclient_send_interface_protodown
      Src: /src/frr/vrrpd/vrrp.c:1850,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:1856,1
    - Dst: vrrp_autoconfig_if_del
      Src: /src/frr/vrrpd/vrrp.c:1880,1
    - Dst: vrrp_lookup_by_if_any
      Src: /src/frr/vrrpd/vrrp.c:1889,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:1891,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:1892,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:1894,1
    - Dst: vrrp_vrouter_destroy
      Src: /src/frr/vrrpd/vrrp.c:1898,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp.c:1901,1
    - Dst: vrrp_autoconfig_if_up
      Src: /src/frr/vrrpd/vrrp.c:1919,1
    - Dst: vrrp_lookup_by_if_mvl
      Src: /src/frr/vrrpd/vrrp.c:1924,1
    - Dst: vrrp_autoconfig_if_add
      Src: /src/frr/vrrpd/vrrp.c:1930,1
    - Dst: vrrp_autoconfig_if_down
      Src: /src/frr/vrrpd/vrrp.c:1952,1
    - Dst: vrrp_autoconfig_if_address_add
      Src: /src/frr/vrrpd/vrrp.c:1975,1
    - Dst: vrrp_lookup_by_if_mvl
      Src: /src/frr/vrrpd/vrrp.c:1980,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:1984,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:1986,1
    - Dst: vrrp_autoconfig_if_address_del
      Src: /src/frr/vrrpd/vrrp.c:2007,1
    - Dst: vrrp_lookup_by_if_mvl
      Src: /src/frr/vrrpd/vrrp.c:2012,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:2016,1
    - Dst: vrrp_autoconfig_autoaddrupdate
      Src: /src/frr/vrrpd/vrrp.c:2018,1
    - Dst: vrrp_autoconfig
      Src: /src/frr/vrrpd/vrrp.c:2024,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:2026,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 1707
    functionDepth: 6
    functionLinenumber: 1707
    functionLinenumberEnd: 2046
    functionName: vrrp_autoconfig_autoaddrupdate
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - list_delete
    - zlog_warn
    - vrrp_add_ipv4
    - vrrp_autoconfig
    - if_lookup_by_index
    - ALL_LIST_ELEMENTS_RO
    - vrrp_autoconfig_if_up
    - vrrp_add_ipv6
    - if
    - vrrp_autoconfig_if_add
    - vrrp_ifp_has_vrrp_mac
    - family2str
    - vrrp_lookup_by_if_any
    - vrrp_autoconfig_if_down
    - vrrp_autoconfig_if_address_add
    - vrrp_event
    - vrrp_vrouter_create
    - vrrp_autoconfig_autoaddrupdate
    - vrrp_zclient_send_interface_protodown
    - vrrp_lookup_by_if_mvl
    - vrrp_autoconfig_if_del
    - DEBUGD
    - IN6_IS_ADDR_LINKLOCAL
    - vrrp_autoconfig_autocreate
    - vrrp_vrouter_destroy
    - vrrp_check_start
    - vrrp_autoconfig_if_address_del
    - vrrp_attach_interface
    linkageType: ''
    returnType: void
    signature: void vrrp_autoconfig_autoaddrupdate(struct vrrp_router *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_to_list
      Src: /src/frr/vrrpd/vrrp.c:2052,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:2057,1
    - Dst: vrrp_vrouter_destroy
      Src: /src/frr/vrrpd/vrrp.c:2059,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp.c:2061,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:2076,1
    - Dst: vrrp_lookup_by_if_mvl
      Src: /src/frr/vrrpd/vrrp.c:2081,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:2083,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:2084,1
    - Dst: vrrp_attach_interface
      Src: /src/frr/vrrpd/vrrp.c:2090,1
    - Dst: vrrp_attach_interface
      Src: /src/frr/vrrpd/vrrp.c:2092,1
    - Dst: vrrp_if_up
      Src: /src/frr/vrrpd/vrrp.c:2096,1
    - Dst: vrrp_bind_pending
      Src: /src/frr/vrrpd/vrrp.c:2102,1
    - Dst: vrrp_lookup_by_if_any
      Src: /src/frr/vrrpd/vrrp.c:2104,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:2106,1
    - Dst: vrrp_check_start
      Src: /src/frr/vrrpd/vrrp.c:2107,1
    - Dst: if_is_operative
      Src: /src/frr/vrrpd/vrrp.c:2109,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp.c:2123,1
    - Dst: vrrp_send_advertisement
      Src: /src/frr/vrrpd/vrrp.c:2124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 2048
    functionDepth: 6
    functionLinenumber: 2048
    functionLinenumberEnd: 2126
    functionName: vrrp_autoconfig_off
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - list_delete
    - vrrp_send_advertisement
    - vrrp_bind_pending
    - DEBUGD
    - ALL_LIST_ELEMENTS_RO
    - vrrp_vrouter_destroy
    - vrrp_if_up
    - vrrp_lookup_by_if_any
    - family2str
    - vrrp_check_start
    - hash_to_list
    - if
    - vrrp_lookup_by_if_mvl
    - if_is_operative
    - vrrp_attach_interface
    linkageType: ''
    returnType: void
    signature: void vrrp_autoconfig_off(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrrp_bind_pending
      Src: /src/frr/vrrpd/vrrp.c:2170,1
    - Dst: vrrp_lookup_by_if_any
      Src: /src/frr/vrrpd/vrrp.c:2172,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:2174,1
    - Dst: vrrp_check_start
      Src: /src/frr/vrrpd/vrrp.c:2175,1
    - Dst: if
      Src: /src/frr/vrrpd/vrrp.c:2177,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp.c:2179,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp.c:2185,1
    - Dst: vrrp_autoconfig_if_down
      Src: /src/frr/vrrpd/vrrp.c:2187,1
    - Dst: vrrp_if_add
      Src: /src/frr/vrrpd/vrrp.c:2190,1
    - Dst: vrrp_bind_pending
      Src: /src/frr/vrrpd/vrrp.c:2192,1
    - Dst: CHECK_FLAG
      Src: /src/frr/vrrpd/vrrp.c:2195,1
    - Dst: vrrp_if_up
      Src: /src/frr/vrrpd/vrrp.c:2196,1
    - Dst: vrrp_autoconfig_if_add
      Src: /src/frr/vrrpd/vrrp.c:2198,1
    - Dst: vrrp_if_del
      Src: /src/frr/vrrpd/vrrp.c:2201,1
    - Dst: vrrp_if_down
      Src: /src/frr/vrrpd/vrrp.c:2206,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp.c:2339,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp.c:2342,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp.c:2347,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp.c:2351,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp.c:2357,1
    - Dst: vty_out
      Src: /src/frr/vrrpd/vrrp.c:2361,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 19
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2365
      start: 2164
    functionDepth: 6
    functionLinenumber: 2164
    functionLinenumberEnd: 2365
    functionName: vrrp_if_down
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - vrrp_if_down
    - list_delete
    - vrrp_autoconfig_if_add
    - vty_out
    - vrrp_if_add
    - DEBUGD
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - vrrp_if_up
    - vrrp_lookup_by_if_any
    - vrrp_autoconfig_if_down
    - vrrp_check_start
    - if
    - vrrp_if_del
    - vrrp_bind_pending
    linkageType: ''
    returnType: void
    signature: void vrrp_if_down(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/vrrpd/vrrp.c:2372,1
    - Dst: string_hash_make
      Src: /src/frr/vrrpd/vrrp.c:2374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2375
      start: 2367
    functionDepth: 1
    functionLinenumber: 2367
    functionLinenumberEnd: 2375
    functionName: vrrp_hash_key
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    - snprintf
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int vrrp_hash_key(const void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2388
      start: 2377
    functionDepth: 0
    functionLinenumber: 2377
    functionLinenumberEnd: 2388
    functionName: vrrp_hash_cmp
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool vrrp_hash_cmp(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_get_default_uint8
      Src: /src/frr/vrrpd/vrrp.c:2393,1
    - Dst: yang_get_default_uint8
      Src: /src/frr/vrrpd/vrrp.c:2394,1
    - Dst: yang_get_default_uint16
      Src: /src/frr/vrrpd/vrrp.c:2395,1
    - Dst: yang_get_default_bool
      Src: /src/frr/vrrpd/vrrp.c:2397,1
    - Dst: yang_get_default_bool
      Src: /src/frr/vrrpd/vrrp.c:2399,1
    - Dst: yang_get_default_bool
      Src: /src/frr/vrrpd/vrrp.c:2400,1
    - Dst: hash_create
      Src: /src/frr/vrrpd/vrrp.c:2405,1
    - Dst: vrf_init
      Src: /src/frr/vrrpd/vrrp.c:2407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2408
      start: 2390
    functionDepth: 5
    functionLinenumber: 2390
    functionLinenumberEnd: 2408
    functionName: vrrp_init
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 2
    functionsReached:
    - yang_get_default_uint8
    - hash_create
    - vrf_init
    - yang_get_default_uint16
    - yang_get_default_bool
    linkageType: ''
    returnType: void
    signature: void vrrp_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_to_list
      Src: /src/frr/vrrpd/vrrp.c:2413,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp.c:2418,1
    - Dst: vrrp_vrouter_destroy
      Src: /src/frr/vrrpd/vrrp.c:2419,1
    - Dst: list_delete
      Src: /src/frr/vrrpd/vrrp.c:2421,1
    - Dst: hash_clean_and_free
      Src: /src/frr/vrrpd/vrrp.c:2423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2424
      start: 2410
    functionDepth: 3
    functionLinenumber: 2410
    functionLinenumberEnd: 2424
    functionName: vrrp_fini
    functionSourceFile: /src/frr/vrrpd/vrrp.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    - list_delete
    - ALL_LIST_ELEMENTS_RO
    - vrrp_vrouter_destroy
    - hash_to_list
    linkageType: ''
    returnType: void
    signature: void vrrp_fini(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_arp.c:47,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_arp.c:52,1
    - Dst: sendto
      Src: /src/frr/vrrpd/vrrp_arp.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ifp
    - buf
    - pack_len
    argTypes:
    - struct interface*
    - uint8_t*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 59
    functionName: vrrp_send_garp
    functionSourceFile: /src/frr/vrrpd/vrrp_arp.c
    functionUses: 0
    functionsReached:
    - sendto
    - memset
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t vrrp_send_garp(struct interface *ifp, uint8_t *buf,\n\t\t\t
      \     ssize_t pack_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_arp.c:73,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_arp.c:74,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_arp.c:75,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_arp.c:80,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_arp.c:81,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_arp.c:84,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_arp.c:87,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_arp.c:90,1
    - Dst: memset
      Src: /src/frr/vrrpd/vrrp_arp.c:93,1
    - Dst: memcpy
      Src: /src/frr/vrrpd/vrrp_arp.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 3
    argNames:
    - buf
    - ifp
    - v4
    argTypes:
    - uint8_t*
    - struct interface*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 100
    functionName: vrrp_build_garp
    functionSourceFile: /src/frr/vrrpd/vrrp_arp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    - htons
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t vrrp_build_garp(uint8_t *buf, struct interface *ifp,\n\t\t\t
      \      struct in_addr *v4)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp_arp.c:115,1
    - Dst: vrrp_build_garp
      Src: /src/frr/vrrpd/vrrp_arp.c:120,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp_arp.c:126,1
    - Dst: inet_ntop
      Src: /src/frr/vrrpd/vrrp_arp.c:131,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_arp.c:133,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp_arp.c:136,1
    - Dst: DEBUG_MODE_CHECK
      Src: /src/frr/vrrpd/vrrp_arp.c:137,1
    - Dst: zlog_hexdump
      Src: /src/frr/vrrpd/vrrp_arp.c:138,1
    - Dst: vrrp_send_garp
      Src: /src/frr/vrrpd/vrrp_arp.c:140,1
    - Dst: zlog_warn
      Src: /src/frr/vrrpd/vrrp_arp.c:143,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp_arp.c:145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - r
    - v4
    argTypes:
    - struct vrrp_router*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 148
    functionName: vrrp_garp_send
    functionSourceFile: /src/frr/vrrpd/vrrp_arp.c
    functionUses: 1
    functionsReached:
    - DEBUG_MODE_CHECK
    - DEBUGD
    - vrrp_send_garp
    - family2str
    - inet_ntop
    - zlog_warn
    - zlog_hexdump
    - vrrp_build_garp
    linkageType: ''
    returnType: void
    signature: void vrrp_garp_send(struct vrrp_router *r, struct in_addr *v4)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/vrrpd/vrrp_arp.c:152,1
    - Dst: family2str
      Src: /src/frr/vrrpd/vrrp_arp.c:161,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vrrpd/vrrp_arp.c:168,1
    - Dst: vrrp_garp_send
      Src: /src/frr/vrrpd/vrrp_arp.c:169,1
    - Dst: frr_with_privs
      Src: /src/frr/vrrpd/vrrp_arp.c:178,1
    - Dst: socket
      Src: /src/frr/vrrpd/vrrp_arp.c:179,1
    - Dst: htons
      Src: /src/frr/vrrpd/vrrp_arp.c:180,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_arp.c:184,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_arp.c:186,1
    - Dst: zlog_err
      Src: /src/frr/vrrpd/vrrp_arp.c:189,1
    - Dst: vrrp_garp_fini
      Src: /src/frr/vrrpd/vrrp_arp.c:194,1
    - Dst: close
      Src: /src/frr/vrrpd/vrrp_arp.c:196,1
    - Dst: DEBUGD
      Src: /src/frr/vrrpd/vrrp_arp.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct vrrp_router*
    assertStmts:
    - condition: (r->family == AF_INET)
      pos:
        line_end: 151
        line_start: 151
        source_file: /src/frr/vrrpd/vrrp_arp.c
    constantsTouched: []
    func_position:
      end: 206
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 206
    functionName: vrrp_garp_send_all
    functionSourceFile: /src/frr/vrrpd/vrrp_arp.c
    functionUses: 1
    functionsReached:
    - htons
    - DEBUGD
    - ALL_LIST_ELEMENTS_RO
    - socket
    - family2str
    - zlog_err
    - close
    - vrrp_garp_send
    - frr_with_privs
    - vrrp_garp_fini
    - assert
    linkageType: ''
    returnType: void
    signature: void vrrp_garp_send_all(struct vrrp_router *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: PIM_ADDR_FUNCNAME
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_ADDR_FUNCNAME(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: PIM_ADDR_FUNCNAME
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_ADDR_FUNCNAME(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/pimd/pim_addr.h:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: pim_addr_is_any
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool pim_addr_is_any(pim_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/pimd/pim_addr.h:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: pim_addr_cmp
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int pim_addr_cmp(pim_addr a, pim_addr b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_addr.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - out
    - in
    argTypes:
    - union pimprefixptr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: pim_addr_to_prefix
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pim_addr_to_prefix(union pimprefixptr out, pim_addr in)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_addr.h:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - in
    argTypes:
    - union pimprefixconstptr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 111
    functionName: pim_addr_from_prefix
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: pim_addr
    signature: pim_addr pim_addr_from_prefix(union pimprefixconstptr in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PIM_ADDR_FUNCNAME
      Src: /src/frr/pimd/pim_addr.h:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: pim_addr_scope
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - PIM_ADDR_FUNCNAME
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t pim_addr_scope(const pim_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PIM_ADDR_FUNCNAME
      Src: /src/frr/pimd/pim_addr.h:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pim_addr_nofwd
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - PIM_ADDR_FUNCNAME
    linkageType: ''
    returnType: bool
    signature: bool pim_addr_nofwd(const pim_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PIM_ADDR_FUNCNAME
      Src: /src/frr/pimd/pim_addr.h:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: pim_addr_ssm
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - PIM_ADDR_FUNCNAME
    linkageType: ''
    returnType: bool
    signature: bool pim_addr_ssm(const pim_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/pimd/pim_addr.h:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - pim_sgaddr
    - pim_sgaddr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: pim_sgaddr_cmp
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int pim_sgaddr_cmp(const pim_sgaddr a, const pim_sgaddr b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash2
      Src: /src/frr/pimd/pim_addr.h:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - initval
    argTypes:
    - pim_sgaddr
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: pim_sgaddr_hash
    functionSourceFile: /src/frr/pimd/pim_addr.h
    functionUses: 0
    functionsReached:
    - jhash2
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pim_sgaddr_hash(const pim_sgaddr a, uint32_t initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED_UPDATED
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED_UPDATED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: PIM_UPSTREAM_FLAG_TEST_FHR
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_FHR(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_IGMP
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_IGMP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_PIM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_PIM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_STREAM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_MSDP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: PIM_UPSTREAM_FLAG_TEST_SEND_SG_RPT_PRUNE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SEND_SG_RPT_PRUNE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_LHR
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_LHR(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 97
    functionName: PIM_UPSTREAM_FLAG_TEST_DISABLE_KAT_EXPIRY
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_DISABLE_KAT_EXPIRY(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: PIM_UPSTREAM_FLAG_TEST_STATIC_IIF
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_STATIC_IIF(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: PIM_UPSTREAM_FLAG_TEST_ALLOW_IIF_IN_OIL
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_ALLOW_IIF_IN_OIL(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: PIM_UPSTREAM_FLAG_TEST_NO_PIMREG_DATA
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_NO_PIMREG_DATA(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: PIM_UPSTREAM_FLAG_TEST_FORCE_PIMREG
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_FORCE_PIMREG(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_ORIG
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_ORIG(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_TERM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_TERM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_MLAG_PEER(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: PIM_UPSTREAM_FLAG_TEST_USE_RPT
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_USE_RPT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED_UPDATED
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED_UPDATED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: PIM_UPSTREAM_FLAG_SET_FHR
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_FHR(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: PIM_UPSTREAM_FLAG_SET_SRC_IGMP
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SRC_IGMP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: PIM_UPSTREAM_FLAG_SET_SRC_PIM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SRC_PIM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: PIM_UPSTREAM_FLAG_SET_SRC_STREAM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SRC_STREAM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: PIM_UPSTREAM_FLAG_SET_SRC_MSDP
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SRC_MSDP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: PIM_UPSTREAM_FLAG_SET_SEND_SG_RPT_PRUNE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SEND_SG_RPT_PRUNE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: PIM_UPSTREAM_FLAG_SET_SRC_LHR
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SRC_LHR(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: PIM_UPSTREAM_FLAG_SET_DISABLE_KAT_EXPIRY
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_DISABLE_KAT_EXPIRY(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 135
    functionName: PIM_UPSTREAM_FLAG_SET_STATIC_IIF
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_STATIC_IIF(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: PIM_UPSTREAM_FLAG_SET_ALLOW_IIF_IN_OIL
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_ALLOW_IIF_IN_OIL(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: PIM_UPSTREAM_FLAG_SET_NO_PIMREG_DATA
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_NO_PIMREG_DATA(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: PIM_UPSTREAM_FLAG_SET_FORCE_PIMREG
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_FORCE_PIMREG(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_ORIG
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_ORIG(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_TERM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_TERM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: PIM_UPSTREAM_FLAG_SET_MLAG_VXLAN
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_MLAG_VXLAN(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: PIM_UPSTREAM_FLAG_SET_MLAG_PEER
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_MLAG_PEER(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: PIM_UPSTREAM_FLAG_SET_USE_RPT
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_USE_RPT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: PIM_UPSTREAM_FLAG_SET_MLAG_INTERFACE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_SET_MLAG_INTERFACE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED_UPDATED
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED_UPDATED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: PIM_UPSTREAM_FLAG_UNSET_FHR
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_FHR(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_IGMP
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_IGMP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_PIM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_PIM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_MSDP
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_MSDP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: PIM_UPSTREAM_FLAG_UNSET_SEND_SG_RPT_PRUNE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SEND_SG_RPT_PRUNE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_LHR
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_LHR(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: PIM_UPSTREAM_FLAG_UNSET_DISABLE_KAT_EXPIRY
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_DISABLE_KAT_EXPIRY(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 180
    functionName: PIM_UPSTREAM_FLAG_UNSET_STATIC_IIF
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_STATIC_IIF(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 182
    functionName: PIM_UPSTREAM_FLAG_UNSET_ALLOW_IIF_IN_OIL
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_ALLOW_IIF_IN_OIL(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 184
    functionName: PIM_UPSTREAM_FLAG_UNSET_NO_PIMREG_DATA
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_NO_PIMREG_DATA(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: PIM_UPSTREAM_FLAG_UNSET_FORCE_PIMREG
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_FORCE_PIMREG(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 188
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_VXLAN_ORIG
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_VXLAN_ORIG(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_VXLAN_TERM
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_VXLAN_TERM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 192
    functionName: PIM_UPSTREAM_FLAG_UNSET_MLAG_VXLAN
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_MLAG_VXLAN(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 194
    functionName: PIM_UPSTREAM_FLAG_UNSET_MLAG_NON_DF
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_MLAG_NON_DF(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 196
    functionName: PIM_UPSTREAM_FLAG_UNSET_MLAG_PEER
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_MLAG_PEER(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 198
    functionName: PIM_UPSTREAM_FLAG_UNSET_SRC_NOCACHE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_SRC_NOCACHE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: PIM_UPSTREAM_FLAG_UNSET_USE_RPT
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_USE_RPT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: PIM_UPSTREAM_FLAG_UNSET_MLAG_INTERFACE
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_UPSTREAM_FLAG_UNSET_MLAG_INTERFACE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 316
    functionName: pim_upstream_is_kat_running
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pim_upstream_is_kat_running(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 325
    functionName: pim_up_mlag_is_local
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pim_up_mlag_is_local(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pim
    - ','
    - sg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 376
    functionName: SwitchToSptDesiredOnRp
    functionSourceFile: /src/frr/pimd/pim_upstream.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SwitchToSptDesiredOnRp(pim, sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pim_static.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s_route
    argTypes:
    - struct static_route*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: pim_static_route_free
    functionSourceFile: /src/frr/pimd/pim_static.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_static_route_free(struct static_route *s_route)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_static.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: static_route_alloc
    functionSourceFile: /src/frr/pimd/pim_static.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct static_route
    signature: struct static_route *static_route_alloc(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_route_alloc
      Src: /src/frr/pimd/pim_static.c:38,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_static.c:45,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_static.c:46,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_static.c:47,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_static.c:48,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_static.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - iif
    - oif
    - group
    - source
    argTypes:
    - ifindex_t
    - ifindex_t
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: static_route_new
    functionSourceFile: /src/frr/pimd/pim_static.c
    functionUses: 0
    functionsReached:
    - oil_mcastgrp
    - oil_parent
    - oil_origin
    - oil_if_set
    - pim_time_monotonic_sec
    - static_route_alloc
    linkageType: ''
    returnType: struct static_route
    signature: "struct static_route *static_route_new(ifindex_t iif, ifindex_t oif,\n\t\t\t\t\t
      \    pim_addr group,\n\t\t\t\t\t     pim_addr source)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pimd.c:65,1
    - Dst: pim_rp_prefix_list_update
      Src: /src/frr/pimd/pimd.c:70,1
    - Dst: pim_ssm_prefix_list_update
      Src: /src/frr/pimd/pimd.c:71,1
    - Dst: pim_upstream_spt_prefix_list_update
      Src: /src/frr/pimd/pimd.c:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - plist
    argTypes:
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 74
    functionName: pim_prefix_list_update
    functionSourceFile: /src/frr/pimd/pimd.c
    functionUses: 0
    functionsReached:
    - pim_rp_prefix_list_update
    - pim_ssm_prefix_list_update
    - RB_FOREACH
    - pim_upstream_spt_prefix_list_update
    linkageType: ''
    returnType: void
    signature: void pim_prefix_list_update(struct prefix_list *plist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_route_map_terminate
      Src: /src/frr/pimd/pimd.c:78,1
    - Dst: zclient_lookup_free
      Src: /src/frr/pimd/pimd.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: pim_free
    functionSourceFile: /src/frr/pimd/pimd.c
    functionUses: 0
    functionsReached:
    - zclient_lookup_free
    - pim_route_map_terminate
    linkageType: ''
    returnType: void
    signature: void pim_free(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pimd.c:85,1
    - Dst: frr_init_fast
      Src: /src/frr/pimd/pimd.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 83
    functionDepth: 4
    functionLinenumber: 83
    functionLinenumberEnd: 113
    functionName: pim_router_init
    functionSourceFile: /src/frr/pimd/pimd.c
    functionUses: 0
    functionsReached:
    - frr_init_fast
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void pim_router_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pimd.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: pim_router_terminate
    functionSourceFile: /src/frr/pimd/pimd.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_router_terminate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pimd/pimd.c:122,1
    - Dst: flog_err
      Src: /src/frr/pimd/pimd.c:124,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pimd.c:128,1
    - Dst: assert
      Src: /src/frr/pimd/pimd.c:129,1
    - Dst: pim_cmd_init
      Src: /src/frr/pimd/pimd.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (0)
      pos:
        line_end: 128
        line_start: 128
        source_file: /src/frr/pimd/pimd.c
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: pim_init
    functionSourceFile: /src/frr/pimd/pimd.c
    functionUses: 0
    functionsReached:
    - flog_err
    - inet_pton
    - safe_strerror
    - pim_cmd_init
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_protocol_integration_set_shutdown
      Src: /src/frr/pimd/pimd.c:140,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/pimd/pimd.c:143,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/pimd/pimd.c:144,1
    - Dst: prefix_list_reset
      Src: /src/frr/pimd/pimd.c:145,1
    - Dst: pim_vxlan_terminate
      Src: /src/frr/pimd/pimd.c:147,1
    - Dst: pim_vrf_terminate
      Src: /src/frr/pimd/pimd.c:148,1
    - Dst: pim_zebra_zclient_get
      Src: /src/frr/pimd/pimd.c:150,1
    - Dst: zclient_stop
      Src: /src/frr/pimd/pimd.c:152,1
    - Dst: zclient_free
      Src: /src/frr/pimd/pimd.c:153,1
    - Dst: pim_free
      Src: /src/frr/pimd/pimd.c:156,1
    - Dst: pim_mlag_terminate
      Src: /src/frr/pimd/pimd.c:157,1
    - Dst: pim_router_terminate
      Src: /src/frr/pimd/pimd.c:158,1
    - Dst: frr_fini
      Src: /src/frr/pimd/pimd.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 136
    functionDepth: 5
    functionLinenumber: 136
    functionLinenumberEnd: 161
    functionName: pim_terminate
    functionSourceFile: /src/frr/pimd/pimd.c
    functionUses: 0
    functionsReached:
    - prefix_list_delete_hook
    - pim_mlag_terminate
    - zclient_stop
    - pim_router_terminate
    - prefix_list_reset
    - prefix_list_add_hook
    - pim_vrf_terminate
    - pim_zebra_zclient_get
    - frr_fini
    - bfd_protocol_integration_set_shutdown
    - pim_free
    - zclient_free
    - pim_vxlan_terminate
    linkageType: ''
    returnType: void
    signature: void pim_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: PIM_MSDP_PEER_READ_ON
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MSDP_PEER_READ_ON(mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: PIM_MSDP_PEER_WRITE_ON
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MSDP_PEER_WRITE_ON(mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: PIM_MSDP_PEER_READ_OFF
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MSDP_PEER_READ_OFF(mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: PIM_MSDP_PEER_WRITE_OFF
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MSDP_PEER_WRITE_OFF(mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim
    - master
    argTypes:
    - struct pim_instance*
    - struct event_loop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 313
    functionName: pim_msdp_init
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_init(struct pim_instance *pim,\n\t\t\t\t struct event_loop
      *master)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 317
    functionName: pim_msdp_exit
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_msdp_exit(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 321
    functionName: pim_msdp_i_am_rp_changed
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_msdp_i_am_rp_changed(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim
    - xg_up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 326
    functionName: pim_msdp_up_join_state_changed
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_up_join_state_changed(struct pim_instance *pim,\n\t\t\t\t\t\t
      \ struct pim_upstream *xg_up)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 330
    functionName: pim_msdp_up_del
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_msdp_up_del(struct pim_instance *pim, pim_sgaddr *sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 334
    functionName: pim_msdp_sa_local_update
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_local_update(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 339
    functionName: pim_msdp_sa_local_del
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_sa_local_del(struct pim_instance *pim,\n\t\t\t\t\t pim_sgaddr
      *sg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - pim
    - vty
    - spaces
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 345
    functionName: pim_msdp_config_write
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int pim_msdp_config_write(struct pim_instance *pim,\n\t\t\t\t\tstruct
      vty *vty, const char *spaces)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - pim
    - spaces
    argTypes:
    - struct vty*
    - struct pim_instance*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 352
    functionName: pim_msdp_peer_config_write
    functionSourceFile: /src/frr/pimd/pim_msdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pim_msdp_peer_config_write(struct vty *vty,\n\t\t\t\t\t      struct
      pim_instance *pim,\n\t\t\t\t\t      const char *spaces)"
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum pim_msg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 60
    functionName: pim_pim_msgtype2str
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pim_pim_msgtype2str(enum pim_msg_type type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:68,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_pim.c:73,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:77,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_pim.c:82,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:85,1
    - Dst: close
      Src: /src/frr/pimd/pim_pim.c:92,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_pim.c:93,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_pim.c:96,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 101
    functionName: sock_close
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 1
    functionsReached:
    - close
    - zlog_debug
    - EVENT_OFF
    - safe_strerror
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void sock_close(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/pimd/pim_pim.c:105,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_pim.c:109,1
    - Dst: pim_hello_send
      Src: /src/frr/pimd/pim_pim.c:122,1
    - Dst: pim_neighbor_delete_all
      Src: /src/frr/pimd/pim_pim.c:124,1
    - Dst: sock_close
      Src: /src/frr/pimd/pim_pim.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ifp
    - delete_message
    argTypes:
    - struct interface*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 127
    functionName: pim_sock_delete
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - sock_close
    - flog_err
    - pim_neighbor_delete_all
    - pim_hello_send
    linkageType: ''
    returnType: void
    signature: void pim_sock_delete(struct interface *ifp, const char *delete_message)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_pim.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - type
    - addr
    argTypes:
    - enum pim_msg_type
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 139
    functionName: pim_pkt_dst_addr_ok
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: bool
    signature: bool pim_pkt_dst_addr_ok(enum pim_msg_type type, pim_addr addr)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:160,1
    - Dst: pim_sgaddr_from_iphdr
      Src: /src/frr/pimd/pim_pim.c:180,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_pim.c:188,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:207,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:216,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:232,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_pim.c:238,1
    - Dst: in_cksumv
      Src: /src/frr/pimd/pim_pim.c:242,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_pim.c:246,1
    - Dst: in_cksumv
      Src: /src/frr/pimd/pim_pim.c:250,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:253,1
    - Dst: in_cksumv
      Src: /src/frr/pimd/pim_pim.c:263,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:266,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:276,1
    - Dst: pim_pim_msgtype2str
      Src: /src/frr/pimd/pim_pim.c:278,1
    - Dst: pim_pkt_dump
      Src: /src/frr/pimd/pim_pim.c:281,1
    - Dst: pim_pkt_dst_addr_ok
      Src: /src/frr/pimd/pim_pim.c:284,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_pim.c:285,1
    - Dst: pim_pim_msgtype2str
      Src: /src/frr/pimd/pim_pim.c:287,1
    - Dst: pim_hello_recv
      Src: /src/frr/pimd/pim_pim.c:294,1
    - Dst: pim_register_recv
      Src: /src/frr/pimd/pim_pim.c:298,1
    - Dst: pim_register_stop_recv
      Src: /src/frr/pimd/pim_pim.c:303,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_pim.c:307,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:310,1
    - Dst: pim_neighbor_timer_reset
      Src: /src/frr/pimd/pim_pim.c:316,1
    - Dst: pim_joinprune_recv
      Src: /src/frr/pimd/pim_pim.c:317,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_pim.c:322,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:325,1
    - Dst: pim_neighbor_timer_reset
      Src: /src/frr/pimd/pim_pim.c:331,1
    - Dst: pim_assert_recv
      Src: /src/frr/pimd/pim_pim.c:332,1
    - Dst: pim_bsm_process
      Src: /src/frr/pimd/pim_pim.c:337,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:342,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 109
    argCount: 4
    argNames:
    - ifp
    - buf
    - len
    - sg
    argTypes:
    - struct interface*
    - uint8_t*
    - size_t
    - pim_sgaddr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 348
    functionName: pim_pim_packet
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - in_cksumv
    - pim_neighbor_find
    - pim_pkt_dst_addr_ok
    - pim_register_stop_recv
    - pim_pim_msgtype2str
    - pim_pkt_dump
    - pim_hello_recv
    - zlog_debug
    - zlog_warn
    - pim_joinprune_recv
    - pim_assert_recv
    - pim_bsm_process
    - htonl
    - pim_neighbor_timer_reset
    - pim_sgaddr_from_iphdr
    - pim_register_recv
    linkageType: ''
    returnType: int
    signature: "int pim_pim_packet(struct interface *ifp, uint8_t *buf, size_t len,\n\t\t
      \  pim_sgaddr sg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_pim.c:368,1
    - Dst: EVENT_FD
      Src: /src/frr/pimd/pim_pim.c:369,1
    - Dst: pim_socket_recvfromto
      Src: /src/frr/pimd/pim_pim.c:376,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:385,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_pim.c:386,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_pim.c:396,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:399,1
    - Dst: pim_pim_packet
      Src: /src/frr/pimd/pim_pim.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:416,1
    - Dst: pim_sock_read_on
      Src: /src/frr/pimd/pim_pim.c:429,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 352
    functionDepth: 4
    functionLinenumber: 352
    functionLinenumberEnd: 434
    functionName: pim_sock_read
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - pim_pim_packet
    - pim_sock_read_on
    - EVENT_FD
    - pim_socket_recvfromto
    - zlog_debug
    - safe_strerror
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_sock_read(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:440,1
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:441,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:446,1
    - Dst: event_add_read
      Src: /src/frr/pimd/pim_pim.c:449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 439
        line_start: 439
        source_file: /src/frr/pimd/pim_pim.c
    - condition: (ifp->info)
      pos:
        line_end: 440
        line_start: 440
        source_file: /src/frr/pimd/pim_pim.c
    constantsTouched: []
    func_position:
      end: 451
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 451
    functionName: pim_sock_read_on
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 1
    functionsReached:
    - event_add_read
    - zlog_debug
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_sock_read_on(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_socket_mcast
      Src: /src/frr/pimd/pim_pim.c:458,1
    - Dst: pim_socket_join
      Src: /src/frr/pimd/pim_pim.c:463,1
    - Dst: close
      Src: /src/frr/pimd/pim_pim.c:465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 470
    functionName: pim_sock_open
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - pim_socket_mcast
    - pim_socket_join
    - close
    linkageType: ''
    returnType: int
    signature: int pim_sock_open(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:476,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_pim.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 475
        line_start: 475
        source_file: /src/frr/pimd/pim_pim.c
    constantsTouched: []
    func_position:
      end: 506
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 506
    functionName: pim_ifstat_reset
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - pim_time_monotonic_sec
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_ifstat_reset(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:512,1
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:513,1
    - Dst: pim_find_primary_addr
      Src: /src/frr/pimd/pim_pim.c:517,1
    - Dst: pim_ifstat_reset
      Src: /src/frr/pimd/pim_pim.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 511
        line_start: 511
        source_file: /src/frr/pimd/pim_pim.c
    - condition: (ifp->info)
      pos:
        line_end: 512
        line_start: 512
        source_file: /src/frr/pimd/pim_pim.c
    constantsTouched: []
    func_position:
      end: 551
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 551
    functionName: pim_sock_reset
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - pim_ifstat_reset
    - pim_find_primary_addr
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_sock_reset(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/frr/pimd/pim_pim.c:562,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_pim.c:570,1
    - Dst: htons
      Src: /src/frr/pimd/pim_pim.c:573,1
    - Dst: htons
      Src: /src/frr/pimd/pim_pim.c:574,1
    - Dst: pim_msg_send_frame
      Src: /src/frr/pimd/pim_pim.c:576,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_pim.c:585,1
    - Dst: htons
      Src: /src/frr/pimd/pim_pim.c:586,1
    - Dst: htons
      Src: /src/frr/pimd/pim_pim.c:587,1
    - Dst: pim_msg_send_frame
      Src: /src/frr/pimd/pim_pim.c:588,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_pim.c:592,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - fd
    - buf
    - len
    - dst
    - salen
    - ifname
    argTypes:
    - int
    - char*
    - size_t
    - struct sockaddr*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 596
    functionName: pim_msg_send_frame
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 1
    functionsReached:
    - htons
    - ntohs
    - zlog_warn
    - sendto
    - pim_msg_send_frame
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_msg_send_frame(int fd, char *buf, size_t len,\n\t\t\t      struct
      sockaddr *dst, size_t salen,\n\t\t\t      const char *ifname)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/pimd/pim_pim.c:607,1
    - Dst: CMSG_SPACE
      Src: /src/frr/pimd/pim_pim.c:628,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/pimd/pim_pim.c:631,1
    - Dst: CMSG_LEN
      Src: /src/frr/pimd/pim_pim.c:634,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim_pim.c:636,1
    - Dst: sendmsg
      Src: /src/frr/pimd/pim_pim.c:640,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_pim.c:642,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_pim.c:645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 5
    argNames:
    - src
    - dst
    - ifindex
    - message
    - fd
    argTypes:
    - pim_addr
    - pim_addr
    - ifindex_t
    - struct iovec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 648
    functionName: pim_msg_send_frame
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 1
    functionsReached:
    - CMSG_FIRSTHDR
    - flog_err
    - safe_strerror
    - sendmsg
    - CMSG_SPACE
    - CMSG_DATA
    - CMSG_LEN
    linkageType: ''
    returnType: int
    signature: "int pim_msg_send_frame(pim_addr src, pim_addr dst, ifindex_t ifindex,\n\t\t\t
      \     struct iovec *message, int fd)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:661,1
    - Dst: memset
      Src: /src/frr/pimd/pim_pim.c:672,1
    - Dst: htons
      Src: /src/frr/pimd/pim_pim.c:709,1
    - Dst: htons
      Src: /src/frr/pimd/pim_pim.c:717,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_pim.c:724,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:727,1
    - Dst: pim_pkt_dump
      Src: /src/frr/pimd/pim_pim.c:732,1
    - Dst: pim_msg_send_frame
      Src: /src/frr/pimd/pim_pim.c:735,1
    - Dst: pim_msg_send_frame
      Src: /src/frr/pimd/pim_pim.c:745,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 6
    argNames:
    - fd
    - src
    - dst
    - pim_msg
    - pim_msg_size
    - ifp
    argTypes:
    - int
    - pim_addr
    - pim_addr
    - uint8_t*
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 749
    functionName: pim_msg_send
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - pim_pkt_dump
    - zlog_debug
    - pim_msg_send_frame
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_msg_send(int fd, pim_addr src, pim_addr dst, uint8_t *pim_msg,\n\t\t
      int pim_msg_size, struct interface *ifp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:761,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_pim.c:768,1
    - Dst: pim_hello_build_tlv
      Src: /src/frr/pimd/pim_pim.c:770,1
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:783,1
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:784,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_pim.c:786,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_pim.c:790,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:794,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ifp
    - holdtime
    argTypes:
    - struct interface*
    - uint16_t
    assertStmts:
    - condition: (pim_msg_size >= PIM_PIM_MIN_LEN)
      pos:
        line_end: 782
        line_start: 782
        source_file: /src/frr/pimd/pim_pim.c
    - condition: (pim_msg_size <= PIM_PIM_BUFSIZE_WRITE)
      pos:
        line_end: 783
        line_start: 783
        source_file: /src/frr/pimd/pim_pim.c
    constantsTouched: []
    func_position:
      end: 802
      start: 751
    functionDepth: 3
    functionLinenumber: 751
    functionLinenumberEnd: 802
    functionName: hello_send
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 9
    functionsReached:
    - pim_msg_send
    - pim_msg_build_header
    - listcount
    - zlog_debug
    - pim_hello_build_tlv
    - assert
    linkageType: ''
    returnType: int
    signature: int hello_send(struct interface *ifp, uint16_t holdtime)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_pim.c:808,1
    - Dst: hello_send
      Src: /src/frr/pimd/pim_pim.c:811,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_pim.c:815,1
    - Dst: PIM_IF_FLAG_SET_HELLO_SENT
      Src: /src/frr/pimd/pim_pim.c:823,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ifp
    - holdtime
    argTypes:
    - struct interface*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 804
    functionDepth: 4
    functionLinenumber: 804
    functionLinenumberEnd: 827
    functionName: pim_hello_send
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 1
    functionsReached:
    - if_is_loopback
    - PIM_IF_FLAG_SET_HELLO_SENT
    - hello_send
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int pim_hello_send(struct interface *ifp, uint16_t holdtime)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:836,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_pim.c:839,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_pim.c:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 842
    functionName: hello_resched
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void hello_resched(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_pim.c:852,1
    - Dst: hello_resched
      Src: /src/frr/pimd/pim_pim.c:858,1
    - Dst: pim_hello_send
      Src: /src/frr/pimd/pim_pim.c:863,1
    - Dst: PIM_IF_DEFAULT_HOLDTIME
      Src: /src/frr/pimd/pim_pim.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 847
    functionDepth: 5
    functionLinenumber: 847
    functionLinenumberEnd: 864
    functionName: on_pim_hello_send
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - pim_hello_send
    - hello_resched
    - PIM_IF_DEFAULT_HOLDTIME
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void on_pim_hello_send(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hello_resched
      Src: /src/frr/pimd/pim_pim.c:884,1
    - Dst: pim_hello_send
      Src: /src/frr/pimd/pim_pim.c:889,1
    - Dst: PIM_IF_DEFAULT_HOLDTIME
      Src: /src/frr/pimd/pim_pim.c:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 875
    functionDepth: 5
    functionLinenumber: 875
    functionLinenumberEnd: 890
    functionName: pim_hello_restart_now
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - PIM_IF_DEFAULT_HOLDTIME
    - hello_resched
    - pim_hello_send
    linkageType: ''
    returnType: void
    signature: void pim_hello_restart_now(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_pim.c:912,1
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_pim.c:933,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_pim.c:941,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:948,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_pim.c:952,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 901
    functionDepth: 1
    functionLinenumber: 901
    functionLinenumberEnd: 954
    functionName: pim_hello_restart_triggered
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - pim_time_timer_remain_msec
    - if_is_loopback
    - event_add_timer_msec
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_hello_restart_triggered(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_pim.c:962,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:966,1
    - Dst: pim_sock_open
      Src: /src/frr/pimd/pim_pim.c:972,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_pim.c:975,1
    - Dst: pim_socket_ip_hdr
      Src: /src/frr/pimd/pim_pim.c:980,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_pim.c:983,1
    - Dst: frr_weak_random
      Src: /src/frr/pimd/pim_pim.c:996,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim_pim.c:998,1
    - Dst: pim_sock_read_on
      Src: /src/frr/pimd/pim_pim.c:1004,1
    - Dst: pim_hello_restart_triggered
      Src: /src/frr/pimd/pim_pim.c:1009,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 961
        line_start: 961
        source_file: /src/frr/pimd/pim_pim.c
    constantsTouched: []
    func_position:
      end: 1012
      start: 956
    functionDepth: 2
    functionLinenumber: 956
    functionLinenumberEnd: 1012
    functionName: pim_sock_add
    functionSourceFile: /src/frr/pimd/pim_pim.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - pim_sock_read_on
    - frr_weak_random
    - pim_hello_restart_triggered
    - zlog_debug
    - pim_time_monotonic_sec
    - pim_socket_ip_hdr
    - pim_sock_open
    - assert
    linkageType: ''
    returnType: int
    signature: int pim_sock_add(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_register.c:41,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:43,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_register.c:48,1
    - Dst: pim_vxlan_update_sg_reg_state
      Src: /src/frr/pimd/pim_register.c:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 52
    functionName: pim_register_join
    functionSourceFile: /src/frr/pimd/pim_register.c
    functionUses: 0
    functionsReached:
    - pim_is_grp_ssm
    - zlog_debug
    - pim_vxlan_update_sg_reg_state
    - pim_channel_add_oif
    linkageType: ''
    returnType: void
    signature: void pim_register_join(struct pim_upstream *up)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:64,1
    - Dst: memset
      Src: /src/frr/pimd/pim_register.c:68,1
    - Dst: pim_encode_addr_group
      Src: /src/frr/pimd/pim_register.c:71,1
    - Dst: pim_encode_addr_ucast
      Src: /src/frr/pimd/pim_register.c:75,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_register.c:78,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:85,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_register.c:88,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:91,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - ifp
    - sg
    - src
    - originator
    argTypes:
    - struct interface*
    - pim_sgaddr*
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 54
    functionDepth: 3
    functionLinenumber: 54
    functionLinenumberEnd: 99
    functionName: pim_register_stop_send
    functionSourceFile: /src/frr/pimd/pim_register.c
    functionUses: 0
    functionsReached:
    - pim_msg_send
    - memset
    - pim_msg_build_header
    - pim_encode_addr_group
    - zlog_debug
    - pim_encode_addr_ucast
    linkageType: ''
    returnType: void
    signature: "void pim_register_stop_send(struct interface *ifp, pim_sgaddr *sg,
      pim_addr src,\n\t\t\t    pim_addr originator)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_register.c:110,1
    - Dst: pim_upstream_start_register_stop_timer
      Src: /src/frr/pimd/pim_register.c:112,1
    - Dst: pim_vxlan_update_sg_reg_state
      Src: /src/frr/pimd/pim_register.c:113,1
    - Dst: pim_upstream_start_register_stop_timer
      Src: /src/frr/pimd/pim_register.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 120
    functionName: pim_reg_stop_upstream
    functionSourceFile: /src/frr/pimd/pim_register.c
    functionUses: 0
    functionsReached:
    - pim_channel_del_oif
    - pim_vxlan_update_sg_reg_state
    - pim_upstream_start_register_stop_timer
    linkageType: ''
    returnType: void
    signature: "void pim_reg_stop_upstream(struct pim_instance *pim,\n\t\t\t\t  struct
      pim_upstream *up)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:137,1
    - Dst: memset
      Src: /src/frr/pimd/pim_register.c:145,1
    - Dst: pim_parse_addr_group
      Src: /src/frr/pimd/pim_register.c:146,1
    - Dst: pim_parse_addr_ucast
      Src: /src/frr/pimd/pim_register.c:149,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_register.c:152,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:158,1
    - Dst: RP
      Src: /src/frr/pimd/pim_register.c:160,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_register.c:166,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_register.c:167,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_register.c:180,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_register.c:187,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:189,1
    - Dst: pim_reg_stop_upstream
      Src: /src/frr/pimd/pim_register.c:192,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:196,1
    - Dst: pim_reg_stop_upstream
      Src: /src/frr/pimd/pim_register.c:197,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_register.c:208,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_register.c:209,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:211,1
    - Dst: pim_reg_stop_upstream
      Src: /src/frr/pimd/pim_register.c:213,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 3
    argNames:
    - ifp
    - buf
    - buf_size
    argTypes:
    - struct interface*
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 219
    functionName: pim_register_stop_recv
    functionSourceFile: /src/frr/pimd/pim_register.c
    functionUses: 1
    functionsReached:
    - memset
    - frr_each
    - pim_addr_is_any
    - pim_upstream_find
    - ALL_LIST_ELEMENTS_RO
    - zlog_err
    - pim_addr_cmp
    - zlog_debug
    - pim_reg_stop_upstream
    - pim_parse_addr_ucast
    - pim_parse_addr_group
    - RP
    linkageType: ''
    returnType: int
    signature: int pim_register_stop_recv(struct interface *ifp, uint8_t *buf, int
      buf_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_register.c:232,1
    - Dst: is_ipv6_global_unicast
      Src: /src/frr/pimd/pim_register.c:234,1
    - Dst: if
      Src: /src/frr/pimd/pim_register.c:278,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:280,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:287,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:294,1
    - Dst: memset
      Src: /src/frr/pimd/pim_register.c:299,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_register.c:304,1
    - Dst: pim_register_get_unicast_v6_addr
      Src: /src/frr/pimd/pim_register.c:311,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_register.c:313,1
    - Dst: pim_ifstat_reg_send
      Src: /src/frr/pimd/pim_register.c:318,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_register.c:320,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:323,1
    - Dst: pim_null_register_send
      Src: /src/frr/pimd/pim_register.c:332,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:342,1
    - Dst: RP
      Src: /src/frr/pimd/pim_register.c:348,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:351,1
    - Dst: memset
      Src: /src/frr/pimd/pim_register.c:357,1
    - Dst: htons
      Src: /src/frr/pimd/pim_register.c:363,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_ORIG
      Src: /src/frr/pimd/pim_register.c:367,1
    - Dst: pim_vxlan_get_register_src
      Src: /src/frr/pimd/pim_register.c:368,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:370,1
    - Dst: pim_register_send
      Src: /src/frr/pimd/pim_register.c:376,1
    - Dst: pim_null_register_send
      Src: /src/frr/pimd/pim_register.c:380,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:393,1
    - Dst: RP
      Src: /src/frr/pimd/pim_register.c:399,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:402,1
    - Dst: memset
      Src: /src/frr/pimd/pim_register.c:408,1
    - Dst: memset
      Src: /src/frr/pimd/pim_register.c:416,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_register.c:417,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_register.c:427,1
    - Dst: in_cksum_with_ph6
      Src: /src/frr/pimd/pim_register.c:430,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_register.c:432,1
    - Dst: pim_register_send
      Src: /src/frr/pimd/pim_register.c:436,1
    - Dst: pim_register_recv
      Src: /src/frr/pimd/pim_register.c:486,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:501,1
    - Dst: PIM_MSG_REGISTER_BIT_RESERVED_LEN
      Src: /src/frr/pimd/pim_register.c:507,1
    - Dst: if_address_is_local
      Src: /src/frr/pimd/pim_register.c:515,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:517,1
    - Dst: memset
      Src: /src/frr/pimd/pim_register.c:551,1
    - Dst: pim_sgaddr_from_iphdr
      Src: /src/frr/pimd/pim_register.c:552,1
    - Dst: if
      Src: /src/frr/pimd/pim_register.c:562,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_register.c:576,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_register.c:583,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_register.c:587,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - p_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 592
    functionName: pim_register_get_unicast_v6_addr
    functionSourceFile: /src/frr/pimd/pim_register.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS
    - pim_register_send
    - pim_msg_build_header
    - htons
    - if_address_is_local
    - htonl
    - pim_register_recv
    - pim_msg_send
    - memset
    - zlog_debug
    - if
    - pim_ifstat_reg_send
    - pim_register_get_unicast_v6_addr
    - memcpy
    - pim_sgaddr_from_iphdr
    - is_ipv6_global_unicast
    - PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_ORIG
    - in_cksum_with_ph6
    - pim_vxlan_get_register_src
    - PIM_MSG_REGISTER_BIT_RESERVED_LEN
    - pim_null_register_send
    - RP
    linkageType: ''
    returnType: struct in6_addr
    signature: struct in6_addr pim_register_get_unicast_v6_addr(struct pim_interface
      *p_ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim_register.c:751,1
    - Dst: pim_upstream_could_register
      Src: /src/frr/pimd/pim_register.c:755,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_register.c:757,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_register.c:759,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 763
    functionName: pim_reg_del_on_couldreg_fail
    functionSourceFile: /src/frr/pimd/pim_register.c
    functionUses: 0
    functionsReached:
    - pim_upstream_could_register
    - EVENT_OFF
    - pim_channel_del_oif
    - frr_each
    linkageType: ''
    returnType: void
    signature: void pim_reg_del_on_couldreg_fail(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pimd/pim_msg.c:51,1
    - Dst: in_cksumv
      Src: /src/frr/pimd/pim_msg.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 6
    argNames:
    - src
    - dst
    - pim_msg
    - pim_msg_size
    - pim_msg_type
    - no_fwd
    argTypes:
    - pim_addr
    - pim_addr
    - uint8_t*
    - size_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 74
    functionName: pim_msg_build_header
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 3
    functionsReached:
    - htonl
    - in_cksumv
    linkageType: ''
    returnType: void
    signature: "void pim_msg_build_header(pim_addr src, pim_addr dst, uint8_t *pim_msg,\n\t\t\t
      \ size_t pim_msg_size, uint8_t pim_msg_type,\n\t\t\t  bool no_fwd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_msg.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - addr
    argTypes:
    - uint8_t*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: pim_msg_addr_encode_ipv4_ucast
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *pim_msg_addr_encode_ipv4_ucast(uint8_t *buf, struct in_addr
      addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_msg.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - addr
    argTypes:
    - uint8_t*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 94
    functionName: pim_msg_addr_encode_ipv4_group
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *pim_msg_addr_encode_ipv4_group(uint8_t *buf, struct in_addr
      addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_msg.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - buf
    - addr
    - bits
    argTypes:
    - uint8_t*
    - struct in_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: pim_msg_addr_encode_ipv4_source
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *pim_msg_addr_encode_ipv4_source(uint8_t *buf, struct in_addr
      addr,\n\t\t\t\t\t uint8_t bits)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_msg.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - buf
    - addr
    - bits
    argTypes:
    - uint8_t*
    - struct in6_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 121
    functionName: pim_msg_addr_encode_ipv6_source
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *pim_msg_addr_encode_ipv6_source(uint8_t *buf, struct in6_addr
      addr,\n\t\t\t\t\t uint8_t bits)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_msg.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - buf
    - addr
    argTypes:
    - uint8_t*
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 133
    functionName: pim_msg_addr_encode_ipv6_ucast
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *pim_msg_addr_encode_ipv6_ucast(uint8_t *buf, struct in6_addr
      addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_msg.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - addr
    argTypes:
    - uint8_t*
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 147
    functionName: pim_msg_addr_encode_ipv6_group
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *pim_msg_addr_encode_ipv6_group(uint8_t *buf, struct in6_addr
      addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - what
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: pim_msg_addr_encode
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pim_msg_addr_encode(what)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - what
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: pim_msg_addr_encode
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pim_msg_addr_encode(what)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msg_addr_encode
      Src: /src/frr/pimd/pim_msg.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - addr
    argTypes:
    - uint8_t*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: pim_msg_addr_encode_ucast
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - pim_msg_addr_encode
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *pim_msg_addr_encode_ucast(uint8_t *buf, pim_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msg_addr_encode
      Src: /src/frr/pimd/pim_msg.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - addr
    argTypes:
    - uint8_t*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: pim_msg_addr_encode_group
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - pim_msg_addr_encode
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *pim_msg_addr_encode_group(uint8_t *buf, pim_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msg_addr_encode
      Src: /src/frr/pimd/pim_msg.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - addr
    - bits
    argTypes:
    - uint8_t*
    - pim_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: pim_msg_addr_encode_source
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - pim_msg_addr_encode
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t *pim_msg_addr_encode_source(uint8_t *buf, pim_addr addr, uint8_t
      bits)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: listgetdata
      Src: /src/frr/pimd/pim_msg.c:187,1
    - Dst: listhead
      Src: /src/frr/pimd/pim_msg.c:187,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_msg.c:188,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msg.c:194,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msg.c:198,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_msg.c:199,1
    - Dst: pim_rpf_is_same
      Src: /src/frr/pimd/pim_msg.c:208,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SEND_SG_RPT_PRUNE
      Src: /src/frr/pimd/pim_msg.c:211,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msg.c:214,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msg.c:219,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SEND_SG_RPT_PRUNE
      Src: /src/frr/pimd/pim_msg.c:229,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msg.c:232,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msg.c:236,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - sources
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 240
    functionName: pim_msg_get_jp_group_size
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_USE_RPT
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - listhead
    - pim_rpf_is_same
    - zlog_debug
    - listgetdata
    - PIM_UPSTREAM_FLAG_SET_SEND_SG_RPT_PRUNE
    linkageType: ''
    returnType: size_t
    signature: size_t pim_msg_get_jp_group_size(struct list *sources)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_SET_SEND_SG_RPT_PRUNE
      Src: /src/frr/pimd/pim_msg.c:229,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msg.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 235
    functionName: if
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 363
    functionsReached:
    - zlog_debug
    - PIM_UPSTREAM_FLAG_SET_SEND_SG_RPT_PRUNE
    linkageType: ''
    returnType: else
    signature: else if (pim_upstream_empty_inherited_olist(child))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_msg.c:254,1
    - Dst: pim_msg_addr_encode_group
      Src: /src/frr/pimd/pim_msg.c:255,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_msg.c:257,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_msg.c:264,1
    - Dst: pim_rp_g
      Src: /src/frr/pimd/pim_msg.c:266,1
    - Dst: pim_msg_addr_encode_source
      Src: /src/frr/pimd/pim_msg.c:278,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_msg.c:286,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SEND_SG_RPT_PRUNE
      Src: /src/frr/pimd/pim_msg.c:287,1
    - Dst: pim_msg_addr_encode_source
      Src: /src/frr/pimd/pim_msg.c:289,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SEND_SG_RPT_PRUNE
      Src: /src/frr/pimd/pim_msg.c:295,1
    - Dst: htons
      Src: /src/frr/pimd/pim_msg.c:302,1
    - Dst: htons
      Src: /src/frr/pimd/pim_msg.c:303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - grp
    - sgs
    - size
    argTypes:
    - struct pim_jp_groups*
    - struct pim_jp_agg_group*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 306
    functionName: pim_msg_build_jp_groups
    functionSourceFile: /src/frr/pimd/pim_msg.c
    functionUses: 0
    functionsReached:
    - pim_msg_addr_encode_group
    - PIM_UPSTREAM_FLAG_UNSET_SEND_SG_RPT_PRUNE
    - memset
    - htons
    - pim_addr_is_any
    - pim_rp_g
    - pim_msg_addr_encode_source
    - PIM_UPSTREAM_FLAG_TEST_SEND_SG_RPT_PRUNE
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: size_t
    signature: "size_t pim_msg_build_jp_groups(struct pim_jp_groups *grp,\n\t\t\t
      \      struct pim_jp_agg_group *sgs, size_t size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/pimd/mtracebis_netlink.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rth
    argTypes:
    - struct rtnl_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: rtnl_close
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void rtnl_close(struct rtnl_handle *rth)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:47,1
    - Dst: socket
      Src: /src/frr/pimd/mtracebis_netlink.c:49,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:51,1
    - Dst: setsockopt
      Src: /src/frr/pimd/mtracebis_netlink.c:55,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:57,1
    - Dst: setsockopt
      Src: /src/frr/pimd/mtracebis_netlink.c:61,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:63,1
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:67,1
    - Dst: bind
      Src: /src/frr/pimd/mtracebis_netlink.c:71,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:73,1
    - Dst: getsockname
      Src: /src/frr/pimd/mtracebis_netlink.c:77,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:79,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:83,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:87,1
    - Dst: getpid
      Src: /src/frr/pimd/mtracebis_netlink.c:91,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - rth
    - subscriptions
    - protocol
    argTypes:
    - struct rtnl_handle*
    - unsigned
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 93
    functionName: rtnl_open_byproto
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - perror
    - memset
    - getpid
    - socket
    - fprintf
    - bind
    - getsockname
    - setsockopt
    linkageType: ''
    returnType: int
    signature: "int rtnl_open_byproto(struct rtnl_handle *rth, unsigned subscriptions,\n\t\t
      \     int protocol)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rtnl_open_byproto
      Src: /src/frr/pimd/mtracebis_netlink.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rth
    - subscriptions
    argTypes:
    - struct rtnl_handle*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: rtnl_open
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - rtnl_open_byproto
    linkageType: ''
    returnType: int
    signature: int rtnl_open(struct rtnl_handle *rth, unsigned subscriptions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:107,1
    - Dst: send
      Src: /src/frr/pimd/mtracebis_netlink.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - rth
    - family
    - type
    argTypes:
    - struct rtnl_handle*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 116
    functionName: rtnl_wilddump_request
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - send
    - memset
    linkageType: ''
    returnType: int
    signature: int rtnl_wilddump_request(struct rtnl_handle *rth, int family, int
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/frr/pimd/mtracebis_netlink.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rth
    - buf
    - len
    argTypes:
    - struct rtnl_handle*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: rtnl_send
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - send
    linkageType: ''
    returnType: int
    signature: int rtnl_send(struct rtnl_handle *rth, const char *buf, int len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/frr/pimd/mtracebis_netlink.c:129,1
    - Dst: recv
      Src: /src/frr/pimd/mtracebis_netlink.c:134,1
    - Dst: NLMSG_OK
      Src: /src/frr/pimd/mtracebis_netlink.c:141,1
    - Dst: NLMSG_NEXT
      Src: /src/frr/pimd/mtracebis_netlink.c:142,1
    - Dst: NLMSG_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:144,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/pimd/mtracebis_netlink.c:146,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:147,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - rth
    - buf
    - len
    argTypes:
    - struct rtnl_handle*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 155
    functionName: rtnl_send_check
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_NEXT
    - NLMSG_DATA
    - fprintf
    - NLMSG_OK
    - recv
    - send
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int rtnl_send_check(struct rtnl_handle *rth, const char *buf, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:170,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/pimd/mtracebis_netlink.c:173,1
    - Dst: sendmsg
      Src: /src/frr/pimd/mtracebis_netlink.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - rth
    - type
    - req
    - len
    argTypes:
    - struct rtnl_handle*
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 180
    functionName: rtnl_dump_request
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_LENGTH
    - sendmsg
    - memset
    linkageType: ''
    returnType: int
    signature: int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req,
      int len)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: recvmsg
      Src: /src/frr/pimd/mtracebis_netlink.c:205,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:210,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis_netlink.c:211,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:216,1
    - Dst: NLMSG_OK
      Src: /src/frr/pimd/mtracebis_netlink.c:224,1
    - Dst: struct rtnl_dump_filter_arg*::junk
      Src: /src/frr/pimd/mtracebis_netlink.c:231,1
    - Dst: NLMSG_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:245,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/pimd/mtracebis_netlink.c:248,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:250,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:254,1
    - Dst: struct rtnl_dump_filter_arg*::filter
      Src: /src/frr/pimd/mtracebis_netlink.c:258,1
    - Dst: NLMSG_NEXT
      Src: /src/frr/pimd/mtracebis_netlink.c:263,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:271,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:275,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis_netlink.c:276,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 58
    argCount: 2
    argNames:
    - rth
    - arg
    argTypes:
    - struct rtnl_handle*
    - struct rtnl_dump_filter_arg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 279
    functionName: rtnl_dump_filter_l
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - exit
    - NLMSG_NEXT
    - perror
    - strerror
    - NLMSG_DATA
    - fprintf
    - struct rtnl_dump_filter_arg*::junk
    - struct rtnl_dump_filter_arg*::filter
    - NLMSG_OK
    - NLMSG_LENGTH
    - recvmsg
    linkageType: ''
    returnType: int
    signature: "int rtnl_dump_filter_l(struct rtnl_handle *rth,\n\t\t       const
      struct rtnl_dump_filter_arg *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rtnl_dump_filter_l
      Src: /src/frr/pimd/mtracebis_netlink.c:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rth
    - filter
    - arg1
    - junk
    - arg2
    argTypes:
    - struct rtnl_handle*
    - rtnl_filter_t
    - void*
    - rtnl_filter_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 289
    functionName: rtnl_dump_filter
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - rtnl_dump_filter_l
    linkageType: ''
    returnType: int
    signature: "int rtnl_dump_filter(struct rtnl_handle *rth, rtnl_filter_t filter,
      void *arg1,\n\t\t     rtnl_filter_t junk, void *arg2)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:308,1
    - Dst: sendmsg
      Src: /src/frr/pimd/mtracebis_netlink.c:318,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:321,1
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:325,1
    - Dst: recvmsg
      Src: /src/frr/pimd/mtracebis_netlink.c:331,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:336,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis_netlink.c:337,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:341,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:345,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis_netlink.c:347,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:357,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:360,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis_netlink.c:362,1
    - Dst: junk
      Src: /src/frr/pimd/mtracebis_netlink.c:369,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:374,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:376,1
    - Dst: NLMSG_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:382,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:384,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis_netlink.c:389,1
    - Dst: perror
      Src: /src/frr/pimd/mtracebis_netlink.c:393,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis_netlink.c:398,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:402,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:404,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:405,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:408,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:412,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis_netlink.c:413,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 82
    argCount: 7
    argNames:
    - rtnl
    - n
    - peer
    - groups
    - answer
    - junk
    - jarg
    argTypes:
    - struct rtnl_handle*
    - struct nlmsghdr*
    - pid_t
    - unsigned
    - struct nlmsghdr*
    - rtnl_filter_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 416
    functionName: rtnl_talk
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - memset
    - strerror
    - NLMSG_DATA
    - fprintf
    - sendmsg
    - memcpy
    - junk
    - NLMSG_ALIGN
    - recvmsg
    linkageType: ''
    returnType: int
    signature: "int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t
      peer,\n\t      unsigned groups, struct nlmsghdr *answer, rtnl_filter_t junk,\n\t
      \     void *jarg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:435,1
    - Dst: recvmsg
      Src: /src/frr/pimd/mtracebis_netlink.c:442,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:447,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis_netlink.c:448,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:454,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:458,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis_netlink.c:460,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:469,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:472,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis_netlink.c:474,1
    - Dst: handler
      Src: /src/frr/pimd/mtracebis_netlink.c:477,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:481,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:482,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:485,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:489,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis_netlink.c:490,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 3
    argNames:
    - rtnl
    - handler
    - jarg
    argTypes:
    - struct rtnl_handle*
    - rtnl_filter_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 493
    functionName: rtnl_listen
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - exit
    - memset
    - strerror
    - fprintf
    - handler
    - NLMSG_ALIGN
    - recvmsg
    linkageType: ''
    returnType: int
    signature: int rtnl_listen(struct rtnl_handle *rtnl, rtnl_filter_t handler, void
      *jarg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:501,1
    - Dst: fread
      Src: /src/frr/pimd/mtracebis_netlink.c:511,1
    - Dst: ferror
      Src: /src/frr/pimd/mtracebis_netlink.c:517,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:518,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:521,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:529,1
    - Dst: ftell
      Src: /src/frr/pimd/mtracebis_netlink.c:530,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:534,1
    - Dst: fread
      Src: /src/frr/pimd/mtracebis_netlink.c:535,1
    - Dst: NLMSG_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:535,1
    - Dst: ferror
      Src: /src/frr/pimd/mtracebis_netlink.c:538,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:539,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:542,1
    - Dst: handler
      Src: /src/frr/pimd/mtracebis_netlink.c:547,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - rtnl
    - handler
    - jarg
    argTypes:
    - FILE*
    - rtnl_filter_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 551
    functionName: rtnl_from_file
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - memset
    - ftell
    - fread
    - NLMSG_DATA
    - fprintf
    - ferror
    - handler
    - NLMSG_ALIGN
    linkageType: ''
    returnType: int
    signature: int rtnl_from_file(FILE *rtnl, rtnl_filter_t handler, void *jarg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RTA_LENGTH
      Src: /src/frr/pimd/mtracebis_netlink.c:555,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:557,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:558,1
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:563,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis_netlink.c:566,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:566,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - n
    - maxlen
    - type
    - data
    argTypes:
    - struct nlmsghdr*
    - int
    - int
    - __u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 569
    functionName: addattr32
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - fprintf
    - RTA_DATA
    - NLMSG_ALIGN
    - memcpy
    - RTA_LENGTH
    linkageType: ''
    returnType: int
    signature: int addattr32(struct nlmsghdr *n, int maxlen, int type, __u32 data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RTA_LENGTH
      Src: /src/frr/pimd/mtracebis_netlink.c:574,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:577,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:577,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:578,1
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:583,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis_netlink.c:588,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:588,1
    - Dst: assert
      Src: /src/frr/pimd/mtracebis_netlink.c:590,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:592,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - n
    - maxlen
    - type
    - data
    - alen
    argTypes:
    - struct nlmsghdr*
    - int
    - int
    - void*
    - int
    assertStmts:
    - condition: (alen == 0)
      pos:
        line_end: 589
        line_start: 589
        source_file: /src/frr/pimd/mtracebis_netlink.c
    constantsTouched: []
    func_position:
      end: 594
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 594
    functionName: addattr_l
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - assert
    - RTA_ALIGN
    - fprintf
    - RTA_DATA
    - NLMSG_ALIGN
    - memcpy
    - RTA_LENGTH
    linkageType: ''
    returnType: int
    signature: "int addattr_l(struct nlmsghdr *n, int maxlen, int type, const void
      *data,\n\t      int alen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:598,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:598,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:599,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis_netlink.c:605,1
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:605,1
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:606,1
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:606,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:606,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:607,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - n
    - maxlen
    - data
    - len
    argTypes:
    - struct nlmsghdr*
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 609
    functionName: addraw_l
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - memset
    - fprintf
    - NLMSG_ALIGN
    - memcpy
    linkageType: ''
    returnType: int
    signature: int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:613,1
    - Dst: addattr_l
      Src: /src/frr/pimd/mtracebis_netlink.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - n
    - maxlen
    - type
    argTypes:
    - struct nlmsghdr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 617
    functionName: addattr_nest
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - addattr_l
    linkageType: ''
    returnType: struct rtattr
    signature: struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - n
    - nest
    argTypes:
    - struct nlmsghdr*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 623
    functionName: addattr_nest_end
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    linkageType: ''
    returnType: int
    signature: int addattr_nest_end(struct nlmsghdr *n, struct rtattr *nest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:628,1
    - Dst: addattr_l
      Src: /src/frr/pimd/mtracebis_netlink.c:630,1
    - Dst: addattr_nest
      Src: /src/frr/pimd/mtracebis_netlink.c:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - n
    - maxlen
    - type
    - data
    - len
    argTypes:
    - struct nlmsghdr*
    - int
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 625
    functionDepth: 3
    functionLinenumber: 625
    functionLinenumberEnd: 633
    functionName: addattr_nest_compat
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - addattr_nest
    - addattr_l
    linkageType: ''
    returnType: struct rtattr
    signature: "struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen,
      int type,\n\t\t\t\t   const void *data, int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:637,1
    - Dst: NLMSG_TAIL
      Src: /src/frr/pimd/mtracebis_netlink.c:639,1
    - Dst: addattr_nest_end
      Src: /src/frr/pimd/mtracebis_netlink.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - n
    - start
    argTypes:
    - struct nlmsghdr*
    - struct rtattr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 642
    functionName: addattr_nest_compat_end
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - NLMSG_TAIL
    - NLMSG_ALIGN
    - addattr_nest_end
    linkageType: ''
    returnType: int
    signature: int addattr_nest_compat_end(struct nlmsghdr *n, struct rtattr *start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RTA_LENGTH
      Src: /src/frr/pimd/mtracebis_netlink.c:646,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:649,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:650,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:655,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis_netlink.c:658,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:658,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - rta
    - maxlen
    - type
    - data
    argTypes:
    - struct rtattr*
    - int
    - int
    - __u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 661
    functionName: rta_addattr32
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_ALIGN
    - fprintf
    - RTA_DATA
    - NLMSG_ALIGN
    - memcpy
    - RTA_LENGTH
    linkageType: ''
    returnType: int
    signature: int rta_addattr32(struct rtattr *rta, int maxlen, int type, __u32 data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RTA_LENGTH
      Src: /src/frr/pimd/mtracebis_netlink.c:667,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:669,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:669,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:670,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:675,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis_netlink.c:678,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:678,1
    - Dst: NLMSG_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:679,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:679,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - rta
    - maxlen
    - type
    - data
    - alen
    argTypes:
    - struct rtattr*
    - int
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 681
    functionName: rta_addattr_l
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_ALIGN
    - fprintf
    - RTA_DATA
    - NLMSG_ALIGN
    - memcpy
    - RTA_LENGTH
    linkageType: ''
    returnType: int
    signature: "int rta_addattr_l(struct rtattr *rta, int maxlen, int type, const
      void *data,\n\t\t  int alen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:685,1
    - Dst: RTA_OK
      Src: /src/frr/pimd/mtracebis_netlink.c:686,1
    - Dst: RTA_NEXT
      Src: /src/frr/pimd/mtracebis_netlink.c:689,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:692,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - tb
    - max
    - rta
    - len
    argTypes:
    - struct rtattr*[]
    - int
    - struct rtattr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 695
    functionName: parse_rtattr
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 13
    functionsReached:
    - RTA_NEXT
    - fprintf
    - memset
    - RTA_OK
    linkageType: ''
    returnType: int
    signature: int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta,
      int len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:702,1
    - Dst: RTA_OK
      Src: /src/frr/pimd/mtracebis_netlink.c:703,1
    - Dst: RTA_NEXT
      Src: /src/frr/pimd/mtracebis_netlink.c:706,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_netlink.c:709,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - tb
    - max
    - rta
    - len
    argTypes:
    - struct rtattr*[]
    - int
    - struct rtattr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 712
    functionName: parse_rtattr_byindex
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - fprintf
    - memset
    - RTA_OK
    linkageType: ''
    returnType: int
    signature: "int parse_rtattr_byindex(struct rtattr *tb[], int max, struct rtattr
      *rta,\n\t\t\t int len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RTA_PAYLOAD
      Src: /src/frr/pimd/mtracebis_netlink.c:717,1
    - Dst: RTA_PAYLOAD
      Src: /src/frr/pimd/mtracebis_netlink.c:719,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:719,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_netlink.c:720,1
    - Dst: RTA_ALIGN
      Src: /src/frr/pimd/mtracebis_netlink.c:721,1
    - Dst: parse_rtattr_nested
      Src: /src/frr/pimd/mtracebis_netlink.c:722,1
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_netlink.c:724,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - tb
    - max
    - rta
    - len
    argTypes:
    - struct rtattr*[]
    - int
    - struct rtattr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 726
    functionName: __parse_rtattr_nested_compat
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.c
    functionUses: 0
    functionsReached:
    - memset
    - RTA_ALIGN
    - parse_rtattr_nested
    - RTA_DATA
    - RTA_PAYLOAD
    linkageType: ''
    returnType: int
    signature: "int __parse_rtattr_nested_compat(struct rtattr *tb[], int max,\n\t\t\t\t
      struct rtattr *rta, int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: usage
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 14
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: version
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 14
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void version(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gethostbyaddr
      Src: /src/frr/pimd/mtracebis.c:55,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:57,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:59,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:60,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/mtracebis.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 61
    functionName: print_host
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - gethostbyaddr
    - inet_ntop
    - printf
    linkageType: ''
    returnType: void
    signature: void print_host(struct in_addr addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: print_line_no
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_line_no(int i)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/mtracebis.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - proto
    argTypes:
    - enum mtrace_rtg_proto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 101
    functionName: rtg_proto_str
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *rtg_proto_str(enum mtrace_rtg_proto proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:105,1
    - Dst: rtg_proto_str
      Src: /src/frr/pimd/mtracebis.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtg_proto
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: print_rtg_proto
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - rtg_proto_str
    - printf
    linkageType: ''
    returnType: void
    signature: void print_rtg_proto(uint32_t rtg_proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fwd_ttl
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: print_fwd_ttl
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_fwd_ttl(uint32_t fwd_ttl)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/mtracebis.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 37
    argCount: 1
    argNames:
    - code
    argTypes:
    - enum mtrace_fwd_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 154
    functionName: fwd_code_str
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *fwd_code_str(enum mtrace_fwd_code code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:158,1
    - Dst: fwd_code_str
      Src: /src/frr/pimd/mtracebis.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fwd_code
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: print_fwd_code
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - fwd_code_str
    - printf
    linkageType: ''
    returnType: void
    signature: void print_fwd_code(uint32_t fwd_code)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: print_host
      Src: /src/frr/pimd/mtracebis.c:163,1
    - Dst: print_rtg_proto
      Src: /src/frr/pimd/mtracebis.c:165,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:166,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:168,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:172,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:175,1
    - Dst: print_fwd_ttl
      Src: /src/frr/pimd/mtracebis.c:179,1
    - Dst: print_fwd_code
      Src: /src/frr/pimd/mtracebis.c:181,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:183,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - rsp
    argTypes:
    - struct igmp_mtrace_rsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 184
    functionName: print_rsp
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - print_host
    - print_fwd_ttl
    - print_rtg_proto
    - printf
    - print_fwd_code
    linkageType: ''
    returnType: void
    signature: void print_rsp(struct igmp_mtrace_rsp *rsp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_line_no
      Src: /src/frr/pimd/mtracebis.c:188,1
    - Dst: print_host
      Src: /src/frr/pimd/mtracebis.c:189,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mtrace
    argTypes:
    - struct igmp_mtrace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 191
    functionName: print_dest
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - print_line_no
    - print_host
    - printf
    linkageType: ''
    returnType: void
    signature: void print_dest(struct igmp_mtrace *mtrace)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - mtrace
    - hops
    - msec
    argTypes:
    - struct igmp_mtrace*
    - int
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 202
    functionName: print_summary
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_summary(struct igmp_mtrace *mtrace, int hops, long msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_dest
      Src: /src/frr/pimd/mtracebis.c:208,1
    - Dst: print_line_no
      Src: /src/frr/pimd/mtracebis.c:211,1
    - Dst: print_rsp
      Src: /src/frr/pimd/mtracebis.c:212,1
    - Dst: print_summary
      Src: /src/frr/pimd/mtracebis.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - mtrace
    - hops
    - msec
    argTypes:
    - struct igmp_mtrace*
    - int
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 215
    functionName: print_responses
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - print_line_no
    - print_summary
    - print_dest
    - print_rsp
    linkageType: ''
    returnType: void
    signature: void print_responses(struct igmp_mtrace *mtrace, int hops, long msec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis.c:224,1
    - Dst: sendto
      Src: /src/frr/pimd/mtracebis.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - fd
    - to_addr
    - mtrace
    argTypes:
    - int
    - struct in_addr
    - struct igmp_mtrace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 235
    functionName: send_query
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 1
    functionsReached:
    - sendto
    - memset
    linkageType: ''
    returnType: int
    signature: "int send_query(int fd, struct in_addr to_addr,\n\t\t      struct igmp_mtrace
      *mtrace)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:243,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/mtracebis.c:244,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/mtracebis.c:245,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/mtracebis.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtrace
    argTypes:
    - struct igmp_mtrace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 247
    functionName: print_query
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - printf
    linkageType: ''
    returnType: void
    signature: void print_query(struct igmp_mtrace *mtrace)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: recvfrom
      Src: /src/frr/pimd/mtracebis.c:261,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:264,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis.c:264,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:269,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:276,1
    - Dst: in_cksum
      Src: /src/frr/pimd/mtracebis.c:283,1
    - Dst: ntohs
      Src: /src/frr/pimd/mtracebis.c:292,1
    - Dst: in_cksum
      Src: /src/frr/pimd/mtracebis.c:302,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:303,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:315,1
    - Dst: memcpy
      Src: /src/frr/pimd/mtracebis.c:323,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 3
    argNames:
    - fd
    - hops
    - mtracer
    argTypes:
    - int
    - int*
    - struct igmp_mtrace*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 326
    functionName: recv_response
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - in_cksum
    - strerror
    - ntohs
    - fprintf
    - recvfrom
    - memcpy
    linkageType: ''
    returnType: int
    signature: int recv_response(int fd, int *hops, struct igmp_mtrace *mtracer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/frr/pimd/mtracebis.c:336,1
    - Dst: FD_SET
      Src: /src/frr/pimd/mtracebis.c:337,1
    - Dst: memset
      Src: /src/frr/pimd/mtracebis.c:339,1
    - Dst: select
      Src: /src/frr/pimd/mtracebis.c:345,1
    - Dst: recv_response
      Src: /src/frr/pimd/mtracebis.c:350,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - fd
    - hops
    - mtrace
    - ret_msec
    argTypes:
    - int
    - int*
    - struct igmp_mtrace*
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 356
    functionName: wait_for_response
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached:
    - FD_SET
    - FD_ZERO
    - memset
    - recv_response
    - select
    linkageType: ''
    returnType: int
    signature: "int wait_for_response(int fd, int *hops, struct igmp_mtrace *mtrace,\n\t\t\t
      \    long *ret_msec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mtrace
    - hops
    argTypes:
    - struct igmp_mtrace*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 361
    functionName: check_end
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool check_end(struct igmp_mtrace *mtrace, int hops)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: inet_addr
      Src: /src/frr/pimd/mtracebis.c:388,1
    - Dst: getuid
      Src: /src/frr/pimd/mtracebis.c:390,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:393,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:394,1
    - Dst: usage
      Src: /src/frr/pimd/mtracebis.c:403,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:404,1
    - Dst: getopt_long
      Src: /src/frr/pimd/mtracebis.c:414,1
    - Dst: usage
      Src: /src/frr/pimd/mtracebis.c:421,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:422,1
    - Dst: version
      Src: /src/frr/pimd/mtracebis.c:424,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:425,1
    - Dst: usage
      Src: /src/frr/pimd/mtracebis.c:427,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:428,1
    - Dst: inet_pton
      Src: /src/frr/pimd/mtracebis.c:431,1
    - Dst: usage
      Src: /src/frr/pimd/mtracebis.c:432,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:433,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:435,1
    - Dst: inet_pton
      Src: /src/frr/pimd/mtracebis.c:442,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/mtracebis.c:444,1
    - Dst: ntohl
      Src: /src/frr/pimd/mtracebis.c:444,1
    - Dst: usage
      Src: /src/frr/pimd/mtracebis.c:449,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:450,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:452,1
    - Dst: routeget
      Src: /src/frr/pimd/mtracebis.c:455,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:457,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:459,1
    - Dst: if_indextoname
      Src: /src/frr/pimd/mtracebis.c:462,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:463,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis.c:464,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:465,1
    - Dst: memset
      Src: /src/frr/pimd/mtracebis.c:469,1
    - Dst: time
      Src: /src/frr/pimd/mtracebis.c:480,1
    - Dst: in_cksum
      Src: /src/frr/pimd/mtracebis.c:482,1
    - Dst: socket
      Src: /src/frr/pimd/mtracebis.c:484,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:487,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis.c:488,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:489,1
    - Dst: setsockopt
      Src: /src/frr/pimd/mtracebis.c:492,1
    - Dst: strlen
      Src: /src/frr/pimd/mtracebis.c:493,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:496,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis.c:497,1
    - Dst: print_query
      Src: /src/frr/pimd/mtracebis.c:502,1
    - Dst: send_query
      Src: /src/frr/pimd/mtracebis.c:503,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:504,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis.c:505,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:509,1
    - Dst: wait_for_response
      Src: /src/frr/pimd/mtracebis.c:511,1
    - Dst: print_responses
      Src: /src/frr/pimd/mtracebis.c:513,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:518,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis.c:519,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:523,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:524,1
    - Dst: print_dest
      Src: /src/frr/pimd/mtracebis.c:525,1
    - Dst: print_line_no
      Src: /src/frr/pimd/mtracebis.c:527,1
    - Dst: in_cksum
      Src: /src/frr/pimd/mtracebis.c:532,1
    - Dst: send_query
      Src: /src/frr/pimd/mtracebis.c:533,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis.c:534,1
    - Dst: strerror
      Src: /src/frr/pimd/mtracebis.c:535,1
    - Dst: wait_for_response
      Src: /src/frr/pimd/mtracebis.c:539,1
    - Dst: check_end
      Src: /src/frr/pimd/mtracebis.c:541,1
    - Dst: print_rsp
      Src: /src/frr/pimd/mtracebis.c:542,1
    - Dst: print_summary
      Src: /src/frr/pimd/mtracebis.c:543,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:548,1
    - Dst: print_rsp
      Src: /src/frr/pimd/mtracebis.c:552,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:555,1
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:558,1
    - Dst: close
      Src: /src/frr/pimd/mtracebis.c:562,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:563,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 145
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 564
    functionName: main
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 24
    functionsReached:
    - send_query
    - strlen
    - version
    - routeget
    - in_cksum
    - IPV4_CLASS_DE
    - getuid
    - print_line_no
    - exit
    - if_indextoname
    - memset
    - socket
    - print_summary
    - fprintf
    - getopt_long
    - printf
    - wait_for_response
    - setsockopt
    - ntohl
    - check_end
    - print_responses
    - inet_addr
    - inet_pton
    - print_dest
    - strerror
    - usage
    - close
    - print_rsp
    - print_query
    - time
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *const argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/pimd/mtracebis.c:573,1
    - Dst: exit
      Src: /src/frr/pimd/mtracebis.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 575
    functionName: main
    functionSourceFile: /src/frr/pimd/mtracebis.c
    functionUses: 24
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_nht.c:45,1
    - Dst: zclient_send_rnh
      Src: /src/frr/pimd/pim_nht.c:46,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_nht.c:49,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - pim
    - zclient
    - pnc
    - command
    argTypes:
    - struct pim_instance*
    - struct zclient*
    - struct pim_nexthop_cache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 59
    functionName: pim_sendmsg_zebra_rnh
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - zclient_send_rnh
    - pim_addr_to_prefix
    - zlog_debug
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: "void pim_sendmsg_zebra_rnh(struct pim_instance *pim, struct zclient
      *zclient,\n\t\t\t   struct pim_nexthop_cache *pnc, int command)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_nht.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pim
    - rpf
    argTypes:
    - struct pim_instance*
    - struct pim_rpf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 71
    functionName: pim_nexthop_cache_find
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct pim_nexthop_cache
    signature: "struct pim_nexthop_cache *pim_nexthop_cache_find(struct pim_instance
      *pim,\n\t\t\t\t\t\t struct pim_rpf *rpf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_nht.c:79,1
    - Dst: hash_get
      Src: /src/frr/pimd/pim_nht.c:83,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_nht.c:85,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_nht.c:88,1
    - Dst: hash_create_size
      Src: /src/frr/pimd/pim_nht.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - pim
    - rpf_addr
    argTypes:
    - struct pim_instance*
    - struct pim_rpf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 73
    functionDepth: 7
    functionLinenumber: 73
    functionLinenumberEnd: 94
    functionName: pim_nexthop_cache_add
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    - XCALLOC
    - snprintfrr
    - list_new
    - hash_get
    linkageType: ''
    returnType: struct pim_nexthop_cache
    signature: "struct pim_nexthop_cache *pim_nexthop_cache_add(struct pim_instance
      *pim,\n\t\t\t\t\t\t       struct pim_rpf *rpf_addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_zebra_zclient_get
      Src: /src/frr/pimd/pim_nht.c:103,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:104,1
    - Dst: pim_nexthop_cache_find
      Src: /src/frr/pimd/pim_nht.c:107,1
    - Dst: pim_nexthop_cache_add
      Src: /src/frr/pimd/pim_nht.c:109,1
    - Dst: pim_sendmsg_zebra_rnh
      Src: /src/frr/pimd/pim_nht.c:110,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - pim
    - addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 96
    functionDepth: 8
    functionLinenumber: 96
    functionLinenumberEnd: 119
    functionName: pim_nht_get
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - memset
    - pim_nexthop_cache_find
    - pim_nexthop_cache_add
    - pim_zebra_zclient_get
    - zlog_debug
    - pim_sendmsg_zebra_rnh
    linkageType: ''
    returnType: struct pim_nexthop_cache
    signature: "struct pim_nexthop_cache *pim_nht_get(struct pim_instance *pim,\n\t\t\t\t\t
      \    pim_addr addr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pim_nht_get
      Src: /src/frr/pimd/pim_nht.c:131,1
    - Dst: assertf
      Src: /src/frr/pimd/pim_nht.c:133,1
    - Dst: listnode_lookup
      Src: /src/frr/pimd/pim_nht.c:136,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_nht.c:138,1
    - Dst: hash_get
      Src: /src/frr/pimd/pim_nht.c:142,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_nht.c:144,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_nht.c:146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 5
    argNames:
    - pim
    - addr
    - up
    - rp
    - out_pnc
    argTypes:
    - struct pim_instance*
    - pim_addr
    - struct pim_upstream*
    - struct rp_info*
    - struct pim_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 124
    functionDepth: 9
    functionLinenumber: 124
    functionLinenumberEnd: 151
    functionName: pim_find_or_track_nexthop
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - listnode_add_sort
    - CHECK_FLAG
    - listnode_lookup
    - assertf
    - pim_nht_get
    - hash_get
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_find_or_track_nexthop(struct pim_instance *pim, pim_addr addr,\n\t\t\t
      \     struct pim_upstream *up, struct rp_info *rp,\n\t\t\t      struct pim_nexthop_cache
      *out_pnc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_nht_get
      Src: /src/frr/pimd/pim_nht.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 9
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: pim_nht_bsr_add
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - pim_nht_get
    linkageType: ''
    returnType: void
    signature: void pim_nht_bsr_add(struct pim_instance *pim, pim_addr addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:166,1
    - Dst: pim_zebra_zclient_get
      Src: /src/frr/pimd/pim_nht.c:174,1
    - Dst: pim_sendmsg_zebra_rnh
      Src: /src/frr/pimd/pim_nht.c:176,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_nht.c:179,1
    - Dst: hash_free
      Src: /src/frr/pimd/pim_nht.c:180,1
    - Dst: hash_release
      Src: /src/frr/pimd/pim_nht.c:182,1
    - Dst: nexthops_free
      Src: /src/frr/pimd/pim_nht.c:184,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nht.c:185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - pim
    - pnc
    argTypes:
    - struct pim_instance*
    - struct pim_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 162
    functionDepth: 6
    functionLinenumber: 162
    functionLinenumberEnd: 187
    functionName: pim_nht_drop_maybe
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - list_delete
    - hash_free
    - pim_zebra_zclient_get
    - zlog_debug
    - XFREE
    - hash_release
    - pim_sendmsg_zebra_rnh
    - nexthops_free
    linkageType: ''
    returnType: void
    signature: "void pim_nht_drop_maybe(struct pim_instance *pim,\n\t\t\t       struct
      pim_nexthop_cache *pnc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_nht.c:198,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_nht.c:200,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_nht.c:209,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_nht.c:213,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_nht.c:216,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_nht.c:217,1
    - Dst: hash_release
      Src: /src/frr/pimd/pim_nht.c:219,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_nht.c:221,1
    - Dst: hash_release
      Src: /src/frr/pimd/pim_nht.c:225,1
    - Dst: pim_nht_drop_maybe
      Src: /src/frr/pimd/pim_nht.c:227,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - pim
    - addr
    - up
    - rp
    argTypes:
    - struct pim_instance*
    - pim_addr
    - struct pim_upstream*
    - struct rp_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 189
    functionDepth: 7
    functionLinenumber: 189
    functionLinenumberEnd: 228
    functionName: pim_delete_tracked_nexthop
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - frr_each
    - pim_addr_is_any
    - pim_nht_drop_maybe
    - pim_addr_to_prefix
    - pim_rp_find_match_group
    - hash_lookup
    - zlog_warn
    - listnode_delete
    - hash_release
    linkageType: ''
    returnType: void
    signature: "void pim_delete_tracked_nexthop(struct pim_instance *pim, pim_addr
      addr,\n\t\t\t\tstruct pim_upstream *up, struct rp_info *rp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_nht.c:240,1
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_nht.c:245,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_nht.c:248,1
    - Dst: assertf
      Src: /src/frr/pimd/pim_nht.c:253,1
    - Dst: pim_nht_drop_maybe
      Src: /src/frr/pimd/pim_nht.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - pim
    - addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 230
    functionDepth: 7
    functionLinenumber: 230
    functionLinenumberEnd: 257
    functionName: pim_nht_bsr_del
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - pim_nht_drop_maybe
    - pim_addr_is_any
    - assertf
    - hash_lookup
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void pim_nht_bsr_del(struct pim_instance *pim, pim_addr addr)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_nht.c:270,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_nht.c:271,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:287,1
    - Dst: zclient_lookup_nexthop
      Src: /src/frr/pimd/pim_nht.c:288,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_nht.c:301,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_nht.c:307,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_nht.c:307,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_nht.c:310,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_nht.c:319,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_nht.c:367,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_nht.c:371,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_nht.c:371,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_nht.c:376,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 60
    argCount: 4
    argNames:
    - pim
    - bsr_addr
    - src_ifp
    - src_ip
    argTypes:
    - struct pim_instance*
    - pim_addr
    - struct interface*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 384
    functionName: pim_nht_bsr_rpf_check
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - zclient_lookup_nexthop
    - pim_neighbor_find
    - if_lookup_by_index
    - memset
    - CHECK_FLAG
    - if_is_loopback
    - hash_lookup
    linkageType: ''
    returnType: bool
    signature: "bool pim_nht_bsr_rpf_check(struct pim_instance *pim, pim_addr bsr_addr,\n\t\t\t
      \  struct interface *src_ifp, pim_addr src_ip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - rp_info
    argTypes:
    - struct rp_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 394
    functionName: pim_rp_nexthop_del
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_rp_nexthop_del(struct rp_info *rp_info)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_nht.c:404,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_nht.c:405,1
    - Dst: if
      Src: /src/frr/pimd/pim_nht.c:409,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_nht.c:409,1
    - Dst: pim_rp_nexthop_del
      Src: /src/frr/pimd/pim_nht.c:412,1
    - Dst: pim_update_upstream_nh_helper
      Src: /src/frr/pimd/pim_nht.c:417,1
    - Dst: pim_rpf_update
      Src: /src/frr/pimd/pim_nht.c:426,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_nht.c:433,1
    - Dst: pim_zebra_upstream_rpf_changed
      Src: /src/frr/pimd/pim_nht.c:437,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:441,1
    - Dst: pim_update_upstream_nh
      Src: /src/frr/pimd/pim_nht.c:455,1
    - Dst: hash_walk
      Src: /src/frr/pimd/pim_nht.c:458,1
    - Dst: pim_zebra_update_all_interfaces
      Src: /src/frr/pimd/pim_nht.c:460,1
    - Dst: pim_upstream_nh_if_update_helper
      Src: /src/frr/pimd/pim_nht.c:465,1
    - Dst: ifindex_t
      Src: /src/frr/pimd/pim_nht.c:473,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_nht.c:477,1
    - Dst: pim_update_upstream_nh
      Src: /src/frr/pimd/pim_nht.c:481,1
    - Dst: pim_upstream_nh_if_update
      Src: /src/frr/pimd/pim_nht.c:489,1
    - Dst: hash_walk
      Src: /src/frr/pimd/pim_nht.c:496,1
    - Dst: pim_compute_ecmp_hash
      Src: /src/frr/pimd/pim_nht.c:499,1
    - Dst: prefix_hash_key
      Src: /src/frr/pimd/pim_nht.c:506,1
    - Dst: prefix_hash_key
      Src: /src/frr/pimd/pim_nht.c:508,1
    - Dst: pim_ecmp_nexthop_search
      Src: /src/frr/pimd/pim_nht.c:512,1
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_nht.c:531,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:533,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:534,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_nht.c:539,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_nht.c:560,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_nht.c:562,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_nht.c:566,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:568,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:580,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_nht.c:599,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_nht.c:606,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_nht.c:607,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_nht.c:622,1
    - Dst: pim_compute_ecmp_hash
      Src: /src/frr/pimd/pim_nht.c:623,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:633,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:647,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_nht.c:657,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_nht.c:659,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:661,1
    - Dst: pim_time_monotonic_usec
      Src: /src/frr/pimd/pim_nht.c:682,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:686,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 93
    argCount: 2
    argNames:
    - pim
    - pnc
    argTypes:
    - struct pim_instance*
    - struct pim_nexthop_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 397
    functionDepth: 4
    functionLinenumber: 397
    functionLinenumberEnd: 699
    functionName: pim_update_rp_nh
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - prefix_hash_key
    - pim_zebra_update_all_interfaces
    - pim_time_monotonic_usec
    - pim_upstream_mroute_iif_update
    - hash_walk
    - pim_zebra_upstream_rpf_changed
    - pim_if_connected_to_source
    - pim_rpf_update
    - pim_addr_from_prefix
    - if_lookup_by_index
    - pim_neighbor_find
    - memset
    - pim_addr_is_any
    - pim_upstream_nh_if_update
    - ALL_LIST_ELEMENTS_RO
    - pim_upstream_nh_if_update_helper
    - if_is_loopback
    - ifindex_t
    - zlog_debug
    - pim_ecmp_nexthop_lookup
    - if
    - pim_update_upstream_nh
    - pim_rpf_addr_is_inaddr_any
    - pim_update_upstream_nh_helper
    - pim_compute_ecmp_hash
    - pim_ecmp_nexthop_search
    - pim_addr_to_prefix
    - pim_rp_nexthop_del
    linkageType: ''
    returnType: void
    signature: "void pim_update_rp_nh(struct pim_instance *pim,\n\t\t\t     struct
      pim_nexthop_cache *pnc)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/pimd/pim_nht.c:712,1
    - Dst: zapi_nexthop_update_decode
      Src: /src/frr/pimd/pim_nht.c:721,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_nht.c:722,1
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_nht.c:727,1
    - Dst: pim_nexthop_cache_find
      Src: /src/frr/pimd/pim_nht.c:728,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:731,1
    - Dst: pim_time_monotonic_usec
      Src: /src/frr/pimd/pim_nht.c:737,1
    - Dst: nexthop_from_zapi_nexthop
      Src: /src/frr/pimd/pim_nht.c:743,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_nht.c:768,1
    - Dst: pim_neighbor_find_if
      Src: /src/frr/pimd/pim_nht.c:777,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_nht.c:800,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:805,1
    - Dst: nexthop2str
      Src: /src/frr/pimd/pim_nht.c:809,1
    - Dst: nexthop_free
      Src: /src/frr/pimd/pim_nht.c:812,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:822,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:841,1
    - Dst: nexthop2str
      Src: /src/frr/pimd/pim_nht.c:846,1
    - Dst: nexthops_free
      Src: /src/frr/pimd/pim_nht.c:863,1
    - Dst: nexthops_free
      Src: /src/frr/pimd/pim_nht.c:873,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_nht.c:876,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:879,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_nht.c:883,1
    - Dst: pim_rpf_set_refresh_time
      Src: /src/frr/pimd/pim_nht.c:885,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_nht.c:887,1
    - Dst: pim_update_rp_nh
      Src: /src/frr/pimd/pim_nht.c:888,1
    - Dst: pim_update_upstream_nh
      Src: /src/frr/pimd/pim_nht.c:890,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 703
    functionDepth: 5
    functionLinenumber: 703
    functionLinenumberEnd: 893
    functionName: pim_parse_nexthop_update
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - pim_addr_from_prefix
    - if_lookup_by_index
    - nexthop_free
    - pim_rpf_set_refresh_time
    - pim_nexthop_cache_find
    - nexthops_free
    - pim_neighbor_find_if
    - listcount
    - zlog_err
    - pim_update_rp_nh
    - zlog_debug
    - pim_time_monotonic_usec
    - SET_FLAG
    - zapi_nexthop_update_decode
    - vrf_lookup_by_id
    - pim_update_upstream_nh
    - nexthop_from_zapi_nexthop
    - nexthop2str
    linkageType: ''
    returnType: int
    signature: int pim_parse_nexthop_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:913,1
    - Dst: pim_nexthop_cache_find
      Src: /src/frr/pimd/pim_nht.c:919,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_nht.c:921,1
    - Dst: pim_ecmp_nexthop_search
      Src: /src/frr/pimd/pim_nht.c:922,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:926,1
    - Dst: zclient_lookup_nexthop
      Src: /src/frr/pimd/pim_nht.c:929,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_nht.c:933,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:939,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:940,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_nht.c:947,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_nht.c:950,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_nht.c:953,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_nht.c:969,1
    - Dst: pim_compute_ecmp_hash
      Src: /src/frr/pimd/pim_nht.c:970,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:973,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:984,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:998,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_nht.c:1007,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:1010,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_nht.c:1012,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:1016,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:1029,1
    - Dst: pim_time_monotonic_usec
      Src: /src/frr/pimd/pim_nht.c:1044,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 88
    argCount: 5
    argNames:
    - pim
    - nexthop
    - src
    - grp
    - neighbor_needed
    argTypes:
    - struct pim_instance*
    - struct pim_nexthop*
    - pim_addr
    - struct prefix*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 895
    functionDepth: 5
    functionLinenumber: 895
    functionLinenumberEnd: 1055
    functionName: pim_ecmp_nexthop_lookup
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 1
    functionsReached:
    - zclient_lookup_nexthop
    - pim_neighbor_find
    - if_lookup_by_index
    - memset
    - pim_nexthop_cache_find
    - CHECK_FLAG
    - pim_addr_to_prefix
    - if_is_loopback
    - pim_compute_ecmp_hash
    - zlog_debug
    - zlog_warn
    - pim_ecmp_nexthop_search
    - pim_time_monotonic_usec
    - pim_if_connected_to_source
    linkageType: ''
    returnType: int
    signature: "int pim_ecmp_nexthop_lookup(struct pim_instance *pim,\n\t\t\t    struct
      pim_nexthop *nexthop, pim_addr src,\n\t\t\t    struct prefix *grp, int neighbor_needed)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_nht.c:1064,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_nht.c:1065,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:1067,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:1075,1
    - Dst: ifindex2ifname
      Src: /src/frr/pimd/pim_nht.c:1078,1
    - Dst: pim_if_find_vifindex_by_ifindex
      Src: /src/frr/pimd/pim_nht.c:1081,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nht.c:1085,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - pim
    - src
    - grp
    argTypes:
    - struct pim_instance*
    - pim_addr
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1057
    functionDepth: 6
    functionLinenumber: 1057
    functionLinenumberEnd: 1093
    functionName: pim_ecmp_fib_lookup_if_vif_index
    functionSourceFile: /src/frr/pimd/pim_nht.c
    functionUses: 0
    functionsReached:
    - ifindex2ifname
    - memset
    - zlog_debug
    - pim_ecmp_nexthop_lookup
    - pim_if_find_vifindex_by_ifindex
    linkageType: ''
    returnType: int
    signature: "int pim_ecmp_fib_lookup_if_vif_index(struct pim_instance *pim, pim_addr
      src,\n\t\t\t\t     struct prefix *grp)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:37,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:41,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:45,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:49,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:53,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:58,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:62,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:68,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:72,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:77,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:82,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:86,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:90,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:94,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:100,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:104,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:109,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:114,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:119,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:124,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:129,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:134,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:139,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:144,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:149,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:154,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:159,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:164,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 114
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 169
    functionName: pim_debug_config_write
    functionSourceFile: /src/frr/pimd/pim_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: int pim_debug_config_write(struct vty *vty)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_vty.c:178,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_vty.c:180,1
    - Dst: pim_msdp_peer_config_write
      Src: /src/frr/pimd/pim_vty.c:182,1
    - Dst: pim_msdp_config_write
      Src: /src/frr/pimd/pim_vty.c:183,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:186,1
    - Dst: pim_rp_config_write
      Src: /src/frr/pimd/pim_vty.c:190,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:195,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:200,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:206,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:212,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:217,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:222,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:227,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:233,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:237,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:243,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:246,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:252,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:255,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_vty.c:265,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:266,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:275,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:279,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:280,1
    - Dst: gm_config_write
      Src: /src/frr/pimd/pim_vty.c:287,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:292,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:298,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:305,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:312,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:320,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:328,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_vty.c:337,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_vty.c:338,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:339,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:342,1
    - Dst: gm_config_write
      Src: /src/frr/pimd/pim_vty.c:351,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:356,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:361,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:366,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:370,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:376,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:382,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_vty.c:389,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_vty.c:390,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:391,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:394,1
    - Dst: pim_config_write
      Src: /src/frr/pimd/pim_vty.c:404,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:410,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:416,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:423,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:425,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:426,1
    - Dst: gm_config_write
      Src: /src/frr/pimd/pim_vty.c:430,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_vty.c:433,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:434,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:440,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:444,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:450,1
    - Dst: pim_static_write_mroute
      Src: /src/frr/pimd/pim_vty.c:454,1
    - Dst: pim_bsm_write_config
      Src: /src/frr/pimd/pim_vty.c:455,1
    - Dst: pim_bfd_write_config
      Src: /src/frr/pimd/pim_vty.c:457,1
    - Dst: pim_interface_config_write
      Src: /src/frr/pimd/pim_vty.c:463,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_vty.c:470,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_vty.c:475,1
    - Dst: pim_vxlan_is_term_dev_cfg
      Src: /src/frr/pimd/pim_vty.c:480,1
    - Dst: if_vty_config_start
      Src: /src/frr/pimd/pim_vty.c:484,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_vty.c:489,1
    - Dst: pim_config_write
      Src: /src/frr/pimd/pim_vty.c:494,1
    - Dst: if_vty_config_end
      Src: /src/frr/pimd/pim_vty.c:496,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 63
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 503
    functionName: pim_global_config_write_worker
    functionSourceFile: /src/frr/pimd/pim_vty.c
    functionUses: 0
    functionsReached:
    - if_vty_config_end
    - pim_config_write
    - vty_out
    - snprintf
    - pim_bsm_write_config
    - pim_addr_is_any
    - if_vty_config_start
    - ALL_LIST_ELEMENTS_RO
    - pim_static_write_mroute
    - pim_msdp_peer_config_write
    - RB_FOREACH
    - gm_config_write
    - FOR_ALL_INTERFACES
    - pim_interface_config_write
    - pim_vxlan_is_term_dev_cfg
    - pim_msdp_config_write
    - pim_bfd_write_config
    - pim_rp_config_write
    linkageType: ''
    returnType: int
    signature: int pim_global_config_write_worker(struct pim_instance *pim, struct
      vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - options
    - ','
    - option_mask
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: PIM_OPTION_SET
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_OPTION_SET(options, option_mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - options
    - ','
    - option_mask
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: PIM_OPTION_UNSET
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_OPTION_UNSET(options, option_mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - options
    - ','
    - option_mask
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: PIM_OPTION_IS_SET
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_OPTION_IS_SET(options, option_mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: PIM_TLV_GET_UINT16
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_UINT16(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: PIM_TLV_GET_UINT32
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_UINT32(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: PIM_TLV_GET_TYPE
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_TYPE(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: PIM_TLV_GET_LENGTH
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_LENGTH(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: PIM_TLV_GET_HOLDTIME
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_HOLDTIME(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: PIM_TLV_GET_PROPAGATION_DELAY
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_PROPAGATION_DELAY(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: PIM_TLV_GET_OVERRIDE_INTERVAL
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_OVERRIDE_INTERVAL(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: PIM_TLV_GET_CAN_DISABLE_JOIN_SUPPRESSION
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_CAN_DISABLE_JOIN_SUPPRESSION(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: PIM_TLV_GET_DR_PRIORITY
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_DR_PRIORITY(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - buf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: PIM_TLV_GET_GENERATION_ID
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_GET_GENERATION_ID(buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - option_len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: PIM_TLV_OPTION_SIZE
    functionSourceFile: /src/frr/pimd/pim_tlv.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_TLV_OPTION_SIZE(option_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: oil_origin
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: pim_addr
    signature: pim_addr *oil_origin(struct channel_oil *c_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: oil_mcastgrp
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: pim_addr
    signature: pim_addr *oil_mcastgrp(struct channel_oil *c_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: oil_parent
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: vifi_t
    signature: vifi_t *oil_parent(struct channel_oil *c_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c_oil
    - ifi
    argTypes:
    - struct channel_oil*
    - vifi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: oil_if_has
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool oil_if_has(struct channel_oil *c_oil, vifi_t ifi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - c_oil
    - ifi
    - set
    argTypes:
    - struct channel_oil*
    - vifi_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: oil_if_set
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void oil_if_set(struct channel_oil *c_oil, vifi_t ifi, uint8_t set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/pimd/pim_oil.h:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oil1
    - oil2
    argTypes:
    - struct mfcctl*
    - struct mfcctl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: oil_if_cmp
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int oil_if_cmp(struct mfcctl *oil1, struct mfcctl *oil2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: oil_origin
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: pim_addr
    signature: pim_addr *oil_origin(struct channel_oil *c_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: oil_mcastgrp
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: pim_addr
    signature: pim_addr *oil_mcastgrp(struct channel_oil *c_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: oil_parent
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: mifi_t
    signature: mifi_t *oil_parent(struct channel_oil *c_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IF_ISSET
      Src: /src/frr/pimd/pim_oil.h:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c_oil
    - ifi
    argTypes:
    - struct channel_oil*
    - mifi_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: oil_if_has
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 0
    functionsReached:
    - IF_ISSET
    linkageType: ''
    returnType: bool
    signature: bool oil_if_has(struct channel_oil *c_oil, mifi_t ifi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IF_SET
      Src: /src/frr/pimd/pim_oil.h:160,1
    - Dst: IF_CLR
      Src: /src/frr/pimd/pim_oil.h:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - c_oil
    - ifi
    - set
    argTypes:
    - struct channel_oil*
    - mifi_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: oil_if_set
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 1
    functionsReached:
    - IF_SET
    - IF_CLR
    linkageType: ''
    returnType: void
    signature: "void oil_if_set(struct channel_oil *c_oil, mifi_t ifi,\n\t\t\t      uint8_t
      set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/pimd/pim_oil.h:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - oil1
    - oil2
    argTypes:
    - struct mf6cctl*
    - struct mf6cctl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 169
    functionName: oil_if_cmp
    functionSourceFile: /src/frr/pimd/pim_oil.h
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int oil_if_cmp(struct mf6cctl *oil1, struct mf6cctl *oil2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - entry_cnt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: PIM_MSDP_SA_Y_SIZE
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MSDP_SA_Y_SIZE(entry_cnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - entry_cnt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: PIM_MSDP_SA_ENTRY_CNT2SIZE
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MSDP_SA_ENTRY_CNT2SIZE(entry_cnt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: GM_UPDATE_SG_STATE
    functionSourceFile: /src/frr/pimd/pim6_mld.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GM_UPDATE_SG_STATE(sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum gm_sg_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: gm_sg_state_want_join
    functionSourceFile: /src/frr/pimd/pim6_mld.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool gm_sg_state_want_join(enum gm_sg_state state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: gm_packet_sg2state
    functionSourceFile: /src/frr/pimd/pim6_mld.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gm_packet_sg2state(sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 364
    functionName: gm_ifp_update
    functionSourceFile: /src/frr/pimd/pim6_mld.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gm_ifp_update(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 368
    functionName: gm_ifp_teardown
    functionSourceFile: /src/frr/pimd/pim6_mld.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gm_ifp_teardown(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_main.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: pim6_sighup
    functionSourceFile: /src/frr/pimd/pim6_main.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void pim6_sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim6_main.c:60,1
    - Dst: pim6_terminate
      Src: /src/frr/pimd/pim6_main.c:61,1
    - Dst: exit
      Src: /src/frr/pimd/pim6_main.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: pim6_sigint
    functionSourceFile: /src/frr/pimd/pim6_main.c
    functionUses: 0
    functionsReached:
    - pim6_terminate
    - exit
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void pim6_sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim6_main.c:67,1
    - Dst: pim6_terminate
      Src: /src/frr/pimd/pim6_main.c:68,1
    - Dst: exit
      Src: /src/frr/pimd/pim6_main.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: pim6_sigterm
    functionSourceFile: /src/frr/pimd/pim6_main.c
    functionUses: 0
    functionsReached:
    - pim6_terminate
    - exit
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void pim6_sigterm(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/pimd/pim6_main.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: pim6_sigusr1
    functionSourceFile: /src/frr/pimd/pim6_main.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void pim6_sigusr1(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/pimd/pim6_main.c:128,1
    - Dst: frr_opt_add
      Src: /src/frr/pimd/pim6_main.c:129,1
    - Dst: frr_getopt
      Src: /src/frr/pimd/pim6_main.c:135,1
    - Dst: frr_help_exit
      Src: /src/frr/pimd/pim6_main.c:144,1
    - Dst: pim_router_init
      Src: /src/frr/pimd/pim6_main.c:148,1
    - Dst: access_list_init
      Src: /src/frr/pimd/pim6_main.c:150,1
    - Dst: prefix_list_init
      Src: /src/frr/pimd/pim6_main.c:151,1
    - Dst: pim_error_init
      Src: /src/frr/pimd/pim6_main.c:156,1
    - Dst: pim_vrf_init
      Src: /src/frr/pimd/pim6_main.c:157,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/pimd/pim6_main.c:159,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/pimd/pim6_main.c:160,1
    - Dst: pim_route_map_init
      Src: /src/frr/pimd/pim6_main.c:162,1
    - Dst: pim_init
      Src: /src/frr/pimd/pim6_main.c:164,1
    - Dst: pim_iface_init
      Src: /src/frr/pimd/pim6_main.c:168,1
    - Dst: gm_cli_init
      Src: /src/frr/pimd/pim6_main.c:170,1
    - Dst: pim_zebra_init
      Src: /src/frr/pimd/pim6_main.c:172,1
    - Dst: pim_bfd_init
      Src: /src/frr/pimd/pim6_main.c:174,1
    - Dst: pim_mlag_init
      Src: /src/frr/pimd/pim6_main.c:175,1
    - Dst: hook_register
      Src: /src/frr/pimd/pim6_main.c:178,1
    - Dst: routing_control_plane_protocols_register_vrf_dependency
      Src: /src/frr/pimd/pim6_main.c:181,1
    - Dst: frr_config_fork
      Src: /src/frr/pimd/pim6_main.c:183,1
    - Dst: frr_run
      Src: /src/frr/pimd/pim6_main.c:184,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 122
    functionDepth: 7
    functionLinenumber: 122
    functionLinenumberEnd: 188
    functionName: main
    functionSourceFile: /src/frr/pimd/pim6_main.c
    functionUses: 24
    functionsReached:
    - frr_getopt
    - prefix_list_add_hook
    - gm_cli_init
    - pim_init
    - pim_router_init
    - hook_register
    - pim_bfd_init
    - access_list_init
    - pim_mlag_init
    - prefix_list_delete_hook
    - frr_help_exit
    - pim_zebra_init
    - prefix_list_init
    - frr_config_fork
    - pim_route_map_init
    - pim_error_init
    - frr_opt_add
    - frr_preinit
    - pim_iface_init
    - pim_vrf_init
    - frr_run
    - routing_control_plane_protocols_register_vrf_dependency
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_vrf_terminate
      Src: /src/frr/pimd/pim6_main.c:192,1
    - Dst: pim_router_terminate
      Src: /src/frr/pimd/pim6_main.c:193,1
    - Dst: prefix_list_reset
      Src: /src/frr/pimd/pim6_main.c:195,1
    - Dst: access_list_reset
      Src: /src/frr/pimd/pim6_main.c:196,1
    - Dst: frr_fini
      Src: /src/frr/pimd/pim6_main.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 5
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: pim6_terminate
    functionSourceFile: /src/frr/pimd/pim6_main.c
    functionUses: 2
    functionsReached:
    - access_list_reset
    - prefix_list_reset
    - pim_vrf_terminate
    - frr_fini
    - pim_router_terminate
    linkageType: ''
    returnType: void
    signature: void pim6_terminate(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_cmd_common.c:65,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:67,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 72
    functionName: pim_cli_get_vrf_name
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: char
    signature: char *pim_cli_get_vrf_name(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:78,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:80,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:82,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - jpi_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 7
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: pim_process_join_prune_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pim_process_join_prune_cmd(struct vty *vty, const char *jpi_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:91,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:93,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:95,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 7
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: pim_process_no_join_prune_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pim_process_no_join_prune_cmd(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:106,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:110,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:113,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:116,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:119,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pimd/pim_cmd_common.c:122,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:123,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:125,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 100
    functionDepth: 7
    functionLinenumber: 100
    functionLinenumberEnd: 129
    functionName: pim_process_spt_switchover_infinity_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    - yang_dnode_exists
    linkageType: ''
    returnType: int
    signature: int pim_process_spt_switchover_infinity_cmd(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:138,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:142,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:145,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:148,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:151,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:154,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:156,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - plist
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 131
    functionDepth: 7
    functionLinenumber: 131
    functionLinenumberEnd: 160
    functionName: pim_process_spt_switchover_prefixlist_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: "int pim_process_spt_switchover_prefixlist_cmd(struct vty *vty,\n\t\t\t\t\t
      \     const char *plist)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:168,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:172,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:175,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:178,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:181,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:184,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:185,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 162
    functionDepth: 7
    functionLinenumber: 162
    functionLinenumberEnd: 189
    functionName: pim_process_no_spt_switchover_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: int pim_process_no_spt_switchover_cmd(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:195,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:197,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:199,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - packet
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 191
    functionDepth: 7
    functionLinenumber: 191
    functionLinenumberEnd: 202
    functionName: pim_process_pim_packet_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pim_process_pim_packet_cmd(struct vty *vty, const char *packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:208,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:210,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:212,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 204
    functionDepth: 7
    functionLinenumber: 204
    functionLinenumberEnd: 215
    functionName: pim_process_no_pim_packet_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pim_process_no_pim_packet_cmd(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:222,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:226,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:228,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:230,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - kat
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 217
    functionDepth: 7
    functionLinenumber: 217
    functionLinenumberEnd: 234
    functionName: pim_process_keepalivetimer_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: int pim_process_keepalivetimer_cmd(struct vty *vty, const char *kat)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:241,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:245,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:247,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:249,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 236
    functionDepth: 7
    functionLinenumber: 236
    functionLinenumberEnd: 252
    functionName: pim_process_no_keepalivetimer_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: int pim_process_no_keepalivetimer_cmd(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:259,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:263,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:266,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:269,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - rpkat
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 254
    functionDepth: 7
    functionLinenumber: 254
    functionLinenumberEnd: 273
    functionName: pim_process_rp_kat_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: int pim_process_rp_kat_cmd(struct vty *vty, const char *rpkat)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:283,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:285,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_cmd_common.c:289,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:294,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:296,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:300,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:303,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:306,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 275
    functionDepth: 7
    functionLinenumber: 275
    functionLinenumberEnd: 310
    functionName: pim_process_no_rp_kat_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - yang_dnode_get_uint16
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: int pim_process_no_rp_kat_cmd(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:316,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:318,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:320,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - rst
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 7
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: pim_process_register_suppress_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pim_process_register_suppress_cmd(struct vty *vty, const char *rst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:329,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:331,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:333,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 325
    functionDepth: 7
    functionLinenumber: 325
    functionLinenumberEnd: 336
    functionName: pim_process_no_register_suppress_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    - snprintf
    linkageType: ''
    returnType: int
    signature: int pim_process_no_register_suppress_cmd(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:340,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 338
    functionDepth: 7
    functionLinenumber: 338
    functionLinenumberEnd: 344
    functionName: pim_process_ip_pim_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_ip_pim_cmd(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:349,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:352,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - enable
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 346
    functionDepth: 7
    functionLinenumber: 346
    functionLinenumberEnd: 357
    functionName: pim_process_ip_pim_passive_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_ip_pim_passive_cmd(struct vty *vty, bool enable)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:365,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:370,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd_common.c:375,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:380,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:381,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd_common.c:383,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:384,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:386,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:388,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 359
    functionDepth: 7
    functionLinenumber: 359
    functionLinenumberEnd: 394
    functionName: pim_process_no_ip_pim_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    - snprintf
    - nb_cli_enqueue_change
    - yang_dnode_getf
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: int pim_process_no_ip_pim_cmd(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:398,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - drpriority_str
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 396
    functionDepth: 7
    functionLinenumber: 396
    functionLinenumberEnd: 403
    functionName: pim_process_ip_pim_drprio_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_ip_pim_drprio_cmd(struct vty *vty, const char *drpriority_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:407,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 405
    functionDepth: 7
    functionLinenumber: 405
    functionLinenumberEnd: 411
    functionName: pim_process_no_ip_pim_drprio_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_no_ip_pim_drprio_cmd(struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd_common.c:418,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:423,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd_common.c:426,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:427,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:431,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:434,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:437,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - hello_str
    - hold_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 413
    functionDepth: 7
    functionLinenumber: 413
    functionLinenumberEnd: 439
    functionName: pim_process_ip_pim_hello_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - yang_dnode_getf
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: "int pim_process_ip_pim_hello_cmd(struct vty *vty, const char *hello_str,\n\t\t\t\t
      const char *hold_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:443,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:444,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 441
    functionDepth: 7
    functionLinenumber: 441
    functionLinenumberEnd: 448
    functionName: pim_process_no_ip_pim_hello_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_no_ip_pim_hello_cmd(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:453,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:456,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:459,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - 'no'
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 450
    functionDepth: 7
    functionLinenumber: 450
    functionLinenumberEnd: 465
    functionName: pim_process_ip_pim_activeactive_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_ip_pim_activeactive_cmd(struct vty *vty, const char
      *no)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:469,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - oil
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 467
    functionDepth: 7
    functionLinenumber: 467
    functionLinenumberEnd: 474
    functionName: pim_process_ip_pim_boundary_oil_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_ip_pim_boundary_oil_cmd(struct vty *vty, const char
      *oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:478,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 476
    functionDepth: 7
    functionLinenumber: 476
    functionLinenumberEnd: 483
    functionName: pim_process_no_ip_pim_boundary_oil_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: int pim_process_no_ip_pim_boundary_oil_cmd(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:488,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd_common.c:493,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:494,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - vty
    - interface
    - group_str
    - source_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 485
    functionDepth: 7
    functionLinenumber: 485
    functionLinenumberEnd: 502
    functionName: pim_process_ip_mroute_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: "int pim_process_ip_mroute_cmd(struct vty *vty, const char *interface,\n\t\t\t
      \     const char *group_str, const char *source_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:507,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd_common.c:512,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:513,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - vty
    - interface
    - group_str
    - source_str
    argTypes:
    - struct vty*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 504
    functionDepth: 7
    functionLinenumber: 504
    functionLinenumberEnd: 521
    functionName: pim_process_no_ip_mroute_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - nb_cli_apply_changes
    - nb_cli_enqueue_change
    linkageType: ''
    returnType: int
    signature: "int pim_process_no_ip_mroute_cmd(struct vty *vty, const char *interface,\n\t\t\t\t
      const char *group_str, const char *source_str)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix
      Src: /src/frr/pimd/pim_cmd_common.c:532,1
    - Dst: prefix_copy
      Src: /src/frr/pimd/pim_cmd_common.c:536,1
    - Dst: apply_mask
      Src: /src/frr/pimd/pim_cmd_common.c:537,1
    - Dst: prefix_same
      Src: /src/frr/pimd/pim_cmd_common.c:538,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:539,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:546,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd_common.c:550,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:552,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:556,1
    - Dst: pim_addr_is_multicast
      Src: /src/frr/pimd/pim_cmd_common.c:556,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:557,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pimd/pim_cmd_common.c:562,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:563,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:568,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:572,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:575,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:577,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:579,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - vty
    - rp_str
    - group_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 523
    functionDepth: 7
    functionLinenumber: 523
    functionLinenumberEnd: 580
    functionName: pim_process_rp_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - prefix_same
    - vty_out
    - apply_mask
    - snprintf
    - pim_addr_is_any
    - IN6_IS_ADDR_LINKLOCAL
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - pim_addr_is_multicast
    - inet_pton
    - str2prefix
    - prefix_copy
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: "int pim_process_rp_cmd(struct vty *vty, const char *rp_str,\n\t\t
      \      const char *group_str)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:592,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:596,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:599,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:603,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:608,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:612,1
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_cmd_common.c:617,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:619,1
    - Dst: yang_is_last_list_dnode
      Src: /src/frr/pimd/pim_cmd_common.c:623,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:624,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:626,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:629,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - vty
    - rp_str
    - group_str
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 582
    functionDepth: 7
    functionLinenumber: 582
    functionLinenumberEnd: 630
    functionName: pim_process_no_rp_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_is_last_list_dnode
    - snprintf
    - yang_dnode_get
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: "int pim_process_no_rp_cmd(struct vty *vty, const char *rp_str,\n\t\t\t
      \ const char *group_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:638,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:642,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:645,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:647,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - rp_str
    - prefix_list
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 632
    functionDepth: 7
    functionLinenumber: 632
    functionLinenumberEnd: 650
    functionName: pim_process_rp_plist_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - snprintf
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: "int pim_process_rp_plist_cmd(struct vty *vty, const char *rp_str,\n\t\t\t
      \    const char *prefix_list)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:661,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:665,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:668,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:670,1
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_cmd_common.c:672,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:674,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:678,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:679,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:680,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:684,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:686,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - vty
    - rp_str
    - prefix_list
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 652
    functionDepth: 7
    functionLinenumber: 652
    functionLinenumberEnd: 687
    functionName: pim_process_no_rp_plist_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcat
    - vty_out
    - snprintf
    - yang_dnode_get
    - strcmp
    - nb_cli_enqueue_change
    - pim_cli_get_vrf_name
    - yang_dnode_get_string
    - nb_cli_apply_changes
    linkageType: ''
    returnType: int
    signature: "int pim_process_no_rp_plist_cmd(struct vty *vty, const char *rp_str,\n\t\t\t\tconst
      char *prefix_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:691,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_cmd_common.c:692,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:693,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_cmd_common.c:694,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - item
    - match
    argTypes:
    - pim_sgaddr
    - pim_sgaddr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 695
    functionName: pim_sgaddr_match
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - pim_addr_cmp
    linkageType: ''
    returnType: bool
    signature: bool pim_sgaddr_match(pim_sgaddr item, pim_sgaddr match)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:702,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:703,1
    - Dst: if_is_up
      Src: /src/frr/pimd/pim_cmd_common.c:703,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:704,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:706,1
    - Dst: if_is_multicast
      Src: /src/frr/pimd/pim_cmd_common.c:708,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:709,1
    - Dst: if_is_broadcast
      Src: /src/frr/pimd/pim_cmd_common.c:711,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:712,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:715,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:718,1
    - Dst: PIM_IF_IS_DELETED
      Src: /src/frr/pimd/pim_cmd_common.c:720,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:721,1
    - Dst: pim_if_lan_delay_enabled
      Src: /src/frr/pimd/pim_cmd_common.c:723,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:724,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - json
    - ifp
    argTypes:
    - struct json_object*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 725
    functionName: json_object_pim_ifp_add
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - if_is_broadcast
    - json_object_int_add
    - PIM_IF_IS_DELETED
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_string_addf
    - pim_if_lan_delay_enabled
    - if_is_multicast
    - if_is_up
    linkageType: ''
    returnType: void
    signature: void json_object_pim_ifp_add(struct json_object *json, struct interface
      *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:729,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:730,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:731,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:733,1
    - Dst: if_is_broadcast
      Src: /src/frr/pimd/pim_cmd_common.c:734,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:735,1
    - Dst: PIM_IF_IS_DELETED
      Src: /src/frr/pimd/pim_cmd_common.c:736,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:737,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:738,1
    - Dst: if_is_multicast
      Src: /src/frr/pimd/pim_cmd_common.c:739,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:740,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:742,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 744
    functionName: pim_print_ifp_flags
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - PIM_IF_IS_DELETED
    - if_is_broadcast
    - vty_out
    - if_is_multicast
    linkageType: ''
    returnType: void
    signature: void pim_print_ifp_flags(struct vty *vty, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:748,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:750,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:751,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:753,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:755,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:757,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:758,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:760,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:761,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:763,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:764,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:766,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:768,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:770,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:771,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:773,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:775,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:777,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:778,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:780,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:782,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:784,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:785,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:787,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:788,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:790,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:791,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:793,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:794,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:796,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:797,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:799,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:800,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:802,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:803,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_cmd_common.c:805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 2
    argNames:
    - json
    - up
    argTypes:
    - json_object*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 806
    functionName: json_object_pim_upstream_add
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_boolean_add
    - CHECK_FLAG
    linkageType: ''
    returnType: void
    signature: void json_object_pim_upstream_add(json_object *json, struct pim_upstream
      *up)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:814,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:817,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - join_state
    - state_str
    - state_str_len
    argTypes:
    - enum pim_upstream_state
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 823
    functionName: pim_upstream_state2brief_str
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: char
    signature: "char *\npim_upstream_state2brief_str(enum pim_upstream_state join_state,\n\t\t\t
      \    char *state_str, size_t state_str_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:831,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:834,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:838,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - reg_state
    - state_str
    - state_str_len
    argTypes:
    - enum pim_reg_state
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 842
    functionName: pim_reg_state2brief_str
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - strlcpy
    linkageType: ''
    returnType: char
    signature: "char *pim_reg_state2brief_str(enum pim_reg_state reg_state,\n\t\t\t\t\t
      \  char *state_str,\n\t\t\t\t\t   size_t state_str_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_uptime_begin
      Src: /src/frr/pimd/pim_cmd_common.c:849,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:853,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:855,1
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_cmd_common.c:857,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:858,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:860,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:862,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:864,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:866,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:869,1
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_cmd_common.c:878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - pim
    - now
    - json
    argTypes:
    - struct vty*
    - struct pim_instance*
    - time_t
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 844
    functionDepth: 2
    functionLinenumber: 844
    functionLinenumberEnd: 884
    functionName: pim_show_rpf_refresh_stats
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_time_timer_remain_msec
    - vty_out
    - pim_time_uptime_begin
    - json_object_int_add
    - json_object_string_add
    linkageType: ''
    returnType: void
    signature: "void pim_show_rpf_refresh_stats(struct vty *vty, struct pim_instance
      *pim,\n\t\t\t\ttime_t now, json_object *json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:889,1
    - Dst: pim_show_rpf_refresh_stats
      Src: /src/frr/pimd/pim_cmd_common.c:895,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:898,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:901,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:902,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:907,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:910,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:923,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:925,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:928,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:931,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:932,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:936,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:937,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:938,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:939,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:941,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:943,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:946,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:949,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:952,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:955,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:966,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:967,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:968,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:969,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 3
    argNames:
    - pim
    - vty
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 886
    functionDepth: 7
    functionLinenumber: 886
    functionLinenumberEnd: 971
    functionName: pim_show_rpf
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ttable_del
    - ttable_add_row
    - vty_out
    - frr_each
    - pim_show_rpf_refresh_stats
    - ttable_restyle
    - snprintfrr
    - json_object_object_get_ex
    - json_object_int_add
    - ttable_dump
    - json_object_string_add
    - json_object_object_add
    - pim_time_monotonic_sec
    - json_object_string_addf
    - XFREE
    - ttable_new
    linkageType: ''
    returnType: void
    signature: void pim_show_rpf(struct pim_instance *pim, struct vty *vty, json_object
      *json)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:980,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:981,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:984,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:986,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:1002,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd_common.c:1007,1
    - Dst: for
      Src: /src/frr/pimd/pim_cmd_common.c:1010,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:1010,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1012,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:1018,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1019,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:1020,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:1021,1
    - Dst: pim_show_state
      Src: /src/frr/pimd/pim_cmd_common.c:1024,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:1041,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1044,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1047,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:1051,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1052,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:1055,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:1059,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_cmd_common.c:1071,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:1072,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:1072,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1077,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:1078,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1079,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:1080,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_cmd_common.c:1081,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_cmd_common.c:1081,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:1084,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:1086,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:1089,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:1090,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:1093,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1100,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1103,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1104,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1111,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1115,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1116,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1123,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1127,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1128,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1130,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd_common.c:1132,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1134,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1136,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1138,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1141,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1143,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1145,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1147,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1154,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:1155,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:1156,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_cmd_common.c:1166,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_cmd_common.c:1170,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:1171,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:1176,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:1179,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1183,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1184,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1186,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1188,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1191,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1194,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1197,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:1201,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1226,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1228,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:1231,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:1232,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1238,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1241,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd_common.c:1250,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1251,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1258,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:1260,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1261,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:1262,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:1263,1
    - Dst: pim_show_statistics
      Src: /src/frr/pimd/pim_cmd_common.c:1271,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1278,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1279,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1280,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1281,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1284,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1285,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1287,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1289,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1293,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:1296,1
    - Dst: struct interface*::info
      Src: /src/frr/pimd/pim_cmd_common.c:1297,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:1299,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1306,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1307,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1308,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1311,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1313,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1323,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1325,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1328,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1331,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1333,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 973
    functionDepth: 7
    functionLinenumber: 973
    functionLinenumberEnd: 1334
    functionName: pim_show_neighbors_secondary
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - ttable_del
    - frr_each
    - ttable_dump
    - json_object_string_add
    - oil_if_has
    - json_object_boolean_add
    - snprintf
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - ttable_restyle
    - oil_parent
    - pim_show_statistics
    - FOR_ALL_INTERFACES
    - pim_show_state
    - pim_time_monotonic_sec
    - if
    - for
    - ttable_add_row
    - pim_if_find_by_vif_index
    - PIM_UPSTREAM_FLAG_TEST_USE_RPT
    - vty_out
    - oil_mcastgrp
    - strlcpy
    - json_object_int_add
    - XFREE
    - ttable_new
    - json_object_new_object
    - pim_time_uptime
    - struct interface*::info
    - strcmp
    - snprintfrr
    - json_object_object_get_ex
    - oil_origin
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void pim_show_neighbors_secondary(struct pim_instance *pim, struct
      vty *vty)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:1350,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:1354,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1355,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:1360,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:1363,1
    - Dst: pim_sgaddr_match
      Src: /src/frr/pimd/pim_cmd_common.c:1371,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:1374,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:1376,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_cmd_common.c:1386,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:1390,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:1395,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:1397,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:1399,1
    - Dst: pim_upstream_state2brief_str
      Src: /src/frr/pimd/pim_cmd_common.c:1402,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:1408,1
    - Dst: pim_reg_state2brief_str
      Src: /src/frr/pimd/pim_cmd_common.c:1409,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:1411,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1418,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1420,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1423,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1426,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1427,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1431,1
    - Dst: json_object_pim_upstream_add
      Src: /src/frr/pimd/pim_cmd_common.c:1432,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1433,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:1447,1
    - Dst: RP
      Src: /src/frr/pimd/pim_cmd_common.c:1450,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1451,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1454,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1458,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1459,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1460,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1461,1
    - Dst: pim_upstream_state2str
      Src: /src/frr/pimd/pim_cmd_common.c:1463,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1464,1
    - Dst: pim_reg_state2str
      Src: /src/frr/pimd/pim_cmd_common.c:1466,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1468,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1469,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1471,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1473,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1475,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1477,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1479,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1480,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1482,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:1493,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1494,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:1495,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:1496,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 67
    argCount: 4
    argNames:
    - pim
    - vty
    - sg
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - pim_sgaddr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1340
    functionDepth: 7
    functionLinenumber: 1340
    functionLinenumberEnd: 1498
    functionName: pim_show_upstream
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - ttable_del
    - frr_each
    - ttable_dump
    - json_object_string_add
    - json_object_string_addf
    - strlcat
    - pim_neighbor_find
    - snprintf
    - pim_addr_is_any
    - ttable_restyle
    - json_object_pim_upstream_add
    - pim_upstream_state2str
    - pim_time_monotonic_sec
    - ttable_add_row
    - pim_reg_state2brief_str
    - vty_out
    - pim_reg_state2str
    - json_object_int_add
    - XFREE
    - pim_upstream_state2brief_str
    - ttable_new
    - json_object_new_object
    - pim_time_uptime
    - pim_time_timer_to_hhmmss
    - snprintfrr
    - json_object_object_get_ex
    - json_object_object_add
    - pim_sgaddr_match
    - RP
    linkageType: ''
    returnType: void
    signature: "void pim_show_upstream(struct pim_instance *pim, struct vty *vty,\n\t\t
      \      pim_sgaddr *sg, json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1513,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1514,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1516,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1519,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1520,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1523,1
    - Dst: json_object_pim_upstream_add
      Src: /src/frr/pimd/pim_cmd_common.c:1524,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1525,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1526,1
    - Dst: pim_upstream_evaluate_join_desired
      Src: /src/frr/pimd/pim_cmd_common.c:1528,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:1529,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1532,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1535,1
    - Dst: pim_upstream_evaluate_join_desired
      Src: /src/frr/pimd/pim_cmd_common.c:1536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 6
    argNames:
    - pim
    - vty
    - up
    - json
    - uj
    - tt
    argTypes:
    - struct pim_instance*
    - struct vty*
    - struct pim_upstream*
    - json_object*
    - bool
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1500
    functionDepth: 7
    functionLinenumber: 1500
    functionLinenumberEnd: 1540
    functionName: pim_show_join_desired_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_object_get_ex
    - snprintfrr
    - pim_upstream_evaluate_join_desired
    - json_object_boolean_true_add
    - json_object_pim_upstream_add
    - json_object_string_add
    - json_object_object_add
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void pim_show_join_desired_helper(struct pim_instance *pim,\n\t\t\t\t\t
      struct vty *vty,\n\t\t\t\t\t struct pim_upstream *up,\n\t\t\t\t\t json_object
      *json, bool uj,\n\t\t\t\t\t struct ttable *tt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1551,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:1554,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1555,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:1558,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:1561,1
    - Dst: pim_show_join_desired_helper
      Src: /src/frr/pimd/pim_cmd_common.c:1563,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:1567,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:1570,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1571,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:1572,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:1573,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1542
    functionDepth: 8
    functionLinenumber: 1542
    functionLinenumberEnd: 1575
    functionName: pim_show_join_desired
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_show_join_desired_helper
    - ttable_del
    - vty_out
    - frr_each
    - ttable_new
    - ttable_restyle
    - ttable_dump
    - XFREE
    - vty_json
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: void pim_show_join_desired(struct pim_instance *pim, struct vty *vty,
      bool uj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1587,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:1590,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1591,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:1595,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:1598,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1613,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1615,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1617,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1620,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1621,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1625,1
    - Dst: json_object_pim_upstream_add
      Src: /src/frr/pimd/pim_cmd_common.c:1626,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1627,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1628,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1629,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1631,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1634,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1636,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1638,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:1646,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:1649,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1650,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:1651,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:1652,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1577
    functionDepth: 7
    functionLinenumber: 1577
    functionLinenumberEnd: 1654
    functionName: pim_show_upstream_rpf
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ttable_del
    - vty_out
    - frr_each
    - ttable_new
    - ttable_restyle
    - snprintfrr
    - json_object_object_get_ex
    - ttable_dump
    - json_object_pim_upstream_add
    - json_object_string_add
    - json_object_object_add
    - XFREE
    - json_object_string_addf
    - vty_json
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: void pim_show_upstream_rpf(struct pim_instance *pim, struct vty *vty,
      bool uj)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_uptime_begin
      Src: /src/frr/pimd/pim_cmd_common.c:1670,1
    - Dst: pim_time_timer_to_mmss
      Src: /src/frr/pimd/pim_cmd_common.c:1671,1
    - Dst: pim_time_timer_to_mmss
      Src: /src/frr/pimd/pim_cmd_common.c:1673,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1679,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1683,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd_common.c:1684,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1685,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1689,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1690,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1692,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1694,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1695,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1696,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1697,1
    - Dst: pim_ifchannel_ifjoin_name
      Src: /src/frr/pimd/pim_cmd_common.c:1699,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_cmd_common.c:1700,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1701,1
    - Dst: PIM_IF_FLAG_TEST_PROTO_PIM
      Src: /src/frr/pimd/pim_cmd_common.c:1702,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1703,1
    - Dst: PIM_IF_FLAG_TEST_PROTO_IGMP
      Src: /src/frr/pimd/pim_cmd_common.c:1704,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:1705,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:1706,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1708,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1710,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1711,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1713,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1716,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1719,1
    - Dst: pim_ifchannel_ifjoin_name
      Src: /src/frr/pimd/pim_cmd_common.c:1722,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 5
    argNames:
    - pim_ifp
    - ch
    - json
    - now
    - tt
    argTypes:
    - struct pim_interface*
    - struct pim_ifchannel*
    - json_object*
    - time_t
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1656
    functionDepth: 7
    functionLinenumber: 1656
    functionLinenumberEnd: 1725
    functionName: pim_show_join_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - PIM_IF_FLAG_TEST_PROTO_PIM
    - json_object_object_addf
    - PIM_IF_FLAG_TEST_PROTO_IGMP
    - pim_time_uptime_begin
    - pim_time_timer_to_mmss
    - json_object_pim_ifp_add
    - json_object_object_get_ex
    - snprintfrr
    - PIM_IF_FLAG_TEST_S_G_RPT
    - json_object_int_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - ttable_add_row
    - pim_ifchannel_ifjoin_name
    linkageType: ''
    returnType: void
    signature: "void pim_show_join_helper(struct pim_interface *pim_ifp,\n\t\t\t\t
      struct pim_ifchannel *ch, json_object *json,\n\t\t\t\t time_t now, struct ttable
      *tt)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:1735,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1738,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1744,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:1748,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:1749,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1757,1
    - Dst: pim_show_join
      Src: /src/frr/pimd/pim_cmd_common.c:1759,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:1762,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 5
    argNames:
    - vrf
    - vty
    - s_or_g
    - g
    - json
    argTypes:
    - char*
    - struct vty*
    - pim_addr
    - pim_addr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1727
    functionDepth: 4
    functionLinenumber: 1727
    functionLinenumberEnd: 1765
    functionName: pim_show_join_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_show_join
    - vty_out
    - pim_addr_is_any
    - vrf_lookup_by_name
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_join_cmd_helper(const char *vrf, struct vty *vty, pim_addr
      s_or_g,\n\t\t\t     pim_addr g, const char *json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1775,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:1777,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1779,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1781,1
    - Dst: pim_show_join
      Src: /src/frr/pimd/pim_cmd_common.c:1782,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1785,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:1789,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1792
      start: 1767
    functionDepth: 4
    functionLinenumber: 1767
    functionLinenumberEnd: 1792
    functionName: pim_show_join_vrf_all_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_show_join
    - vty_out
    - json_object_object_add
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_join_vrf_all_cmd_helper(struct vty *vty, const char *json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:1804,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:1808,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1809,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:1814,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:1817,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:1822,1
    - Dst: pim_sgaddr_match
      Src: /src/frr/pimd/pim_cmd_common.c:1823,1
    - Dst: pim_show_join_helper
      Src: /src/frr/pimd/pim_cmd_common.c:1826,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:1831,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1832,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:1833,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:1834,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - pim
    - vty
    - sg
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - pim_sgaddr*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1794
    functionDepth: 8
    functionLinenumber: 1794
    functionLinenumberEnd: 1836
    functionName: pim_show_join
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 2
    functionsReached:
    - ttable_del
    - ttable_add_row
    - vty_out
    - ttable_restyle
    - FOR_ALL_INTERFACES
    - ttable_dump
    - pim_time_monotonic_sec
    - XFREE
    - pim_sgaddr_match
    - RB_FOREACH
    - pim_show_join_helper
    - ttable_new
    linkageType: ''
    returnType: void
    signature: "void pim_show_join(struct pim_instance *pim, struct vty *vty, pim_sgaddr
      *sg,\n\t\t   json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ifp
    - neigh
    - up
    - is_join
    - tt
    argTypes:
    - struct interface*
    - struct pim_neighbor*
    - struct pim_upstream*
    - int
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1838
    functionDepth: 3
    functionLinenumber: 1838
    functionLinenumberEnd: 1846
    functionName: pim_show_jp_agg_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void pim_show_jp_agg_helper(struct interface *ifp,\n\t\t\t\t   struct
      pim_neighbor *neigh,\n\t\t\t\t   struct pim_upstream *up, int is_join,\n\t\t\t\t
      \  struct ttable *tt)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:1853,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1856,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1862,1
    - Dst: pim_show_jp_agg_list
      Src: /src/frr/pimd/pim_cmd_common.c:1866,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - vrf
    - vty
    argTypes:
    - char*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1848
    functionDepth: 2
    functionLinenumber: 1848
    functionLinenumberEnd: 1869
    functionName: pim_show_jp_agg_list_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vrf_lookup_by_name
    - pim_show_jp_agg_list
    linkageType: ''
    returnType: int
    signature: int pim_show_jp_agg_list_cmd_helper(const char *vrf, struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:1885,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1886,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:1889,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:1891,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:1896,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:1898,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:1900,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:1911,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:1912,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:1913,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:1914,1
    - Dst: pim_show_membership_cmd_helper
      Src: /src/frr/pimd/pim_cmd_common.c:1917,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:1921,1
    - Dst: pim_show_membership
      Src: /src/frr/pimd/pim_cmd_common.c:1926,1
    - Dst: pim_show_membership_helper
      Src: /src/frr/pimd/pim_cmd_common.c:1931,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:1939,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1941,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd_common.c:1942,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:1943,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1946,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1947,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1948,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:1949,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:1953,1
    - Dst: pim_show_membership
      Src: /src/frr/pimd/pim_cmd_common.c:1956,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:1967,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:1969,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:1974,1
    - Dst: pim_show_membership_helper
      Src: /src/frr/pimd/pim_cmd_common.c:1975,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:1980,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:1983,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:1984,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:1987,1
    - Dst: json_object_object_foreach
      Src: /src/frr/pimd/pim_cmd_common.c:2011,1
    - Dst: json_object_object_foreach
      Src: /src/frr/pimd/pim_cmd_common.c:2018,1
    - Dst: json_object_get_type
      Src: /src/frr/pimd/pim_cmd_common.c:2021,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2029,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2032,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2035,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2038,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2042,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2045,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2050
      start: 1871
    functionDepth: 4
    functionLinenumber: 1871
    functionLinenumberEnd: 2050
    functionName: pim_show_jp_agg_list
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 1
    functionsReached:
    - ttable_del
    - json_object_object_foreach
    - json_object_pim_ifp_add
    - pim_show_membership_cmd_helper
    - vrf_lookup_by_name
    - ttable_dump
    - json_object_string_add
    - json_object_string_addf
    - pim_show_membership
    - pim_show_membership_helper
    - ALL_LIST_ELEMENTS_RO
    - ttable_restyle
    - FOR_ALL_INTERFACES
    - ttable_add_row
    - vty_out
    - XFREE
    - json_object_get_type
    - json_object_get_string
    - ttable_new
    - json_object_new_object
    - json_object_object_addf
    - json_object_object_get_ex
    - json_object_object_add
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: void
    signature: void pim_show_jp_agg_list(struct pim_instance *pim, struct vty *vty)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:2073,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2074,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2077,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2078,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2081,1
    - Dst: json_object_pim_upstream_add
      Src: /src/frr/pimd/pim_cmd_common.c:2082,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2083,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2085,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2087,1
    - Dst: pim_macro_ch_lost_assert
      Src: /src/frr/pimd/pim_cmd_common.c:2090,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2091,1
    - Dst: pim_macro_chisin_joins
      Src: /src/frr/pimd/pim_cmd_common.c:2093,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2094,1
    - Dst: pim_macro_chisin_pim_include
      Src: /src/frr/pimd/pim_cmd_common.c:2096,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2097,1
    - Dst: pim_upstream_evaluate_join_desired
      Src: /src/frr/pimd/pim_cmd_common.c:2099,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2100,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2103,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2107,1
    - Dst: pim_macro_ch_lost_assert
      Src: /src/frr/pimd/pim_cmd_common.c:2109,1
    - Dst: pim_macro_chisin_joins
      Src: /src/frr/pimd/pim_cmd_common.c:2110,1
    - Dst: pim_macro_chisin_pim_include
      Src: /src/frr/pimd/pim_cmd_common.c:2111,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED
      Src: /src/frr/pimd/pim_cmd_common.c:2112,1
    - Dst: pim_upstream_evaluate_join_desired
      Src: /src/frr/pimd/pim_cmd_common.c:2115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 6
    argNames:
    - pim
    - pim_ifp
    - ch
    - json
    - uj
    - tt
    argTypes:
    - struct pim_instance*
    - struct pim_interface*
    - struct pim_ifchannel*
    - json_object*
    - bool
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2119
      start: 2061
    functionDepth: 7
    functionLinenumber: 2061
    functionLinenumberEnd: 2119
    functionName: pim_show_channel_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_object_addf
    - PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED
    - pim_macro_chisin_pim_include
    - json_object_object_get_ex
    - snprintfrr
    - pim_macro_chisin_joins
    - pim_upstream_evaluate_join_desired
    - json_object_boolean_true_add
    - json_object_pim_upstream_add
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - pim_macro_ch_lost_assert
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void pim_show_channel_helper(struct pim_instance *pim,\n\t\t\t\t    struct
      pim_interface *pim_ifp,\n\t\t\t\t    struct pim_ifchannel *ch, json_object *json,\n\t\t\t\t
      \   bool uj, struct ttable *tt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2131,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:2134,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2135,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:2140,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:2144,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:2149,1
    - Dst: pim_show_channel_helper
      Src: /src/frr/pimd/pim_cmd_common.c:2151,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:2156,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:2159,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2160,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:2161,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:2162,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2121
    functionDepth: 8
    functionLinenumber: 2121
    functionLinenumberEnd: 2164
    functionName: pim_show_channel
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - ttable_del
    - vty_out
    - ttable_new
    - ttable_restyle
    - FOR_ALL_INTERFACES
    - ttable_dump
    - pim_show_channel_helper
    - XFREE
    - RB_FOREACH
    - ttable_add_row
    - vty_json
    linkageType: ''
    returnType: void
    signature: void pim_show_channel(struct pim_instance *pim, struct vty *vty, bool
      uj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:2170,1
    - Dst: pim_show_channel
      Src: /src/frr/pimd/pim_cmd_common.c:2175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2166
    functionDepth: 9
    functionLinenumber: 2166
    functionLinenumberEnd: 2178
    functionName: pim_show_channel_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_show_channel
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int pim_show_channel_cmd_helper(const char *vrf, struct vty *vty, bool
      uj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:2186,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2192,1
    - Dst: pim_show_interfaces_single
      Src: /src/frr/pimd/pim_cmd_common.c:2195,1
    - Dst: pim_show_interfaces
      Src: /src/frr/pimd/pim_cmd_common.c:2198,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:2201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - vrf
    - vty
    - uj
    - mlag
    - interface
    argTypes:
    - char*
    - struct vty*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2204
      start: 2180
    functionDepth: 4
    functionLinenumber: 2180
    functionLinenumberEnd: 2204
    functionName: pim_show_interface_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_show_interfaces
    - vrf_lookup_by_name
    - pim_show_interfaces_single
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_interface_cmd_helper(const char *vrf, struct vty *vty,
      bool uj,\n\t\t\t\t  bool mlag, const char *interface)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2214,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:2216,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2218,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2220,1
    - Dst: pim_show_interfaces_single
      Src: /src/frr/pimd/pim_cmd_common.c:2223,1
    - Dst: pim_show_interfaces
      Src: /src/frr/pimd/pim_cmd_common.c:2226,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2229,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:2232,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - vty
    - uj
    - mlag
    - interface
    argTypes:
    - struct vty*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2235
      start: 2206
    functionDepth: 4
    functionLinenumber: 2206
    functionLinenumberEnd: 2235
    functionName: pim_show_interface_vrf_all_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - pim_show_interfaces
    - json_object_object_add
    - pim_show_interfaces_single
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_interface_vrf_all_cmd_helper(struct vty *vty, bool uj,
      bool mlag,\n\t\t\t\t\t  const char *interface)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2254,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:2257,1
    - Dst: pim_if_ifchannel_count
      Src: /src/frr/pimd/pim_cmd_common.c:2267,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:2270,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2275,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd_common.c:2276,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2277,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2278,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2279,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2280,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_cmd_common.c:2283,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2285,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2288,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:2294,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2295,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:2300,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2307,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2308,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2310,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2311,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2313,1
    - Dst: json_object_get_int
      Src: /src/frr/pimd/pim_cmd_common.c:2315,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2317,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2322,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2324,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2327,1
    - Dst: json_object_get_int
      Src: /src/frr/pimd/pim_cmd_common.c:2329,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2331,1
    - Dst: json_object_get_int
      Src: /src/frr/pimd/pim_cmd_common.c:2333,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2335,1
    - Dst: json_object_free
      Src: /src/frr/pimd/pim_cmd_common.c:2339,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:2342,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2343,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:2344,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:2346,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 58
    argCount: 4
    argNames:
    - pim
    - vty
    - mlag
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2348
      start: 2237
    functionDepth: 3
    functionLinenumber: 2237
    functionLinenumberEnd: 2348
    functionName: pim_show_interfaces
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 2
    functionsReached:
    - ttable_del
    - frr_each
    - json_object_pim_ifp_add
    - ttable_dump
    - json_object_string_addf
    - ttable_restyle
    - FOR_ALL_INTERFACES
    - ttable_add_row
    - vty_out
    - pim_addr_cmp
    - json_object_int_add
    - json_object_free
    - pim_if_ifchannel_count
    - XFREE
    - json_object_get_string
    - ttable_new
    - json_object_new_object
    - json_object_get_int
    - json_object_object_get_ex
    - json_object_boolean_true_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void pim_show_interfaces(struct pim_instance *pim, struct vty *vty,
      bool mlag,\n\t\t\t json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2307,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2308,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2310,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2311,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2313,1
    - Dst: json_object_get_int
      Src: /src/frr/pimd/pim_cmd_common.c:2315,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2317,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2322,1
    - Dst: json_object_get_string
      Src: /src/frr/pimd/pim_cmd_common.c:2324,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2327,1
    - Dst: json_object_get_int
      Src: /src/frr/pimd/pim_cmd_common.c:2329,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2331,1
    - Dst: json_object_get_int
      Src: /src/frr/pimd/pim_cmd_common.c:2333,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2302
    functionDepth: 3
    functionLinenumber: 2302
    functionLinenumberEnd: 2338
    functionName: json_object_object_foreach
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 1
    functionsReached:
    - json_object_get_string
    - json_object_get_int
    - json_object_object_get_ex
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: void json_object_object_foreach(json, key, val)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:2382,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:2384,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:2393,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:2393,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:2398,1
    - Dst: pim_time_uptime_begin
      Src: /src/frr/pimd/pim_cmd_common.c:2400,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:2402,1
    - Dst: pim_time_mmss
      Src: /src/frr/pimd/pim_cmd_common.c:2404,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:2406,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2410,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd_common.c:2411,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:2413,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2414,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd_common.c:2421,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:2422,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd_common.c:2425,1
    - Dst: json_object_new_stringf
      Src: /src/frr/pimd/pim_cmd_common.c:2427,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2431,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2437,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2442,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:2444,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2448,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:2449,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:2453,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:2455,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2459,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2462,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2465,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2469,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2475,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2479,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2480,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2482,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2483,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2485,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:2489,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2498,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:2502,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:2504,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2511,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2515,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2516,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2521,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2522,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2524,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2526,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2528,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2533,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2538,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2540,1
    - Dst: PIM_IF_DEFAULT_HOLDTIME
      Src: /src/frr/pimd/pim_cmd_common.c:2541,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2542,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2544,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2546,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2548,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2550,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2552,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2554,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2557,1
    - Dst: pim_if_effective_propagation_delay_msec
      Src: /src/frr/pimd/pim_cmd_common.c:2559,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2560,1
    - Dst: pim_if_effective_override_interval_msec
      Src: /src/frr/pimd/pim_cmd_common.c:2562,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2563,1
    - Dst: pim_if_jp_override_interval_msec
      Src: /src/frr/pimd/pim_cmd_common.c:2565,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2567,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2570,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2573,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:2576,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2580,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:2583,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2585,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2588,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2589,1
    - Dst: if_is_up
      Src: /src/frr/pimd/pim_cmd_common.c:2590,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:2591,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2592,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2596,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:2598,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2601,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2604,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2608,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2612,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:2617,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2622,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:2626,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:2628,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:2630,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2632,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2638,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2639,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2642,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2643,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2644,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2645,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2648,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2649,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2651,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2653,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2654,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:2658,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:2662,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2671,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2673,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:2678,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2680,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2686,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2687,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2690,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2691,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2692,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2694,1
    - Dst: PIM_IF_DEFAULT_HOLDTIME
      Src: /src/frr/pimd/pim_cmd_common.c:2695,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2696,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2697,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2698,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2700,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2702,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2704,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2706,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2708,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2709,1
    - Dst: pim_print_ifp_flags
      Src: /src/frr/pimd/pim_cmd_common.c:2711,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2713,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2714,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2715,1
    - Dst: pim_if_lan_delay_enabled
      Src: /src/frr/pimd/pim_cmd_common.c:2716,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2717,1
    - Dst: pim_if_effective_propagation_delay_msec
      Src: /src/frr/pimd/pim_cmd_common.c:2718,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2719,1
    - Dst: pim_if_effective_override_interval_msec
      Src: /src/frr/pimd/pim_cmd_common.c:2720,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2721,1
    - Dst: pim_if_jp_override_interval_msec
      Src: /src/frr/pimd/pim_cmd_common.c:2722,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2723,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2724,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2726,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2727,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2728,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2730,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2732,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2734,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2736,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2737,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2739,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2740,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2741,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2743,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2745,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2746,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 152
    argCount: 5
    argNames:
    - pim
    - vty
    - ifname
    - mlag
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2748
      start: 2350
    functionDepth: 7
    functionLinenumber: 2350
    functionLinenumberEnd: 2748
    functionName: pim_show_interfaces_single
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 2
    functionsReached:
    - frr_each
    - json_object_pim_ifp_add
    - json_object_string_add
    - json_object_string_addf
    - pim_if_effective_propagation_delay_msec
    - pim_time_uptime_begin
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - pim_time_mmss
    - FOR_ALL_INTERFACES
    - pim_time_monotonic_sec
    - if_is_up
    - pim_print_ifp_flags
    - vty_out
    - PIM_IF_DEFAULT_HOLDTIME
    - pim_if_effective_override_interval_msec
    - json_object_int_add
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - json_object_new_stringf
    - pim_time_uptime
    - pim_time_timer_to_hhmmss
    - strcmp
    - snprintfrr
    - json_object_object_get_ex
    - json_object_boolean_true_add
    - json_object_object_add
    - pim_if_jp_override_interval_msec
    - pim_if_lan_delay_enabled
    linkageType: ''
    returnType: void
    signature: "void pim_show_interfaces_single(struct pim_instance *pim, struct vty
      *vty,\n\t\t\t\tconst char *ifname, bool mlag,\n\t\t\t\tjson_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2764,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2765,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:2766,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2769
      start: 2754
    functionDepth: 4
    functionLinenumber: 2754
    functionLinenumberEnd: 2769
    functionName: ip_pim_ssm_show_group_range
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_json
    - json_object_string_add
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void ip_pim_ssm_show_group_range(struct pim_instance *pim, struct
      vty *vty,\n\t\t\t\t bool uj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:2794,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2795,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:2798,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_cmd_common.c:2803,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2806,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:2809,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:2814,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2815,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:2816,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:2817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2820
      start: 2781
    functionDepth: 4
    functionLinenumber: 2781
    functionLinenumberEnd: 2820
    functionName: pim_print_vty_pnc_cache_walkcb
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - ttable_del
    - vty_out
    - ttable_new
    - ttable_restyle
    - ttable_dump
    - XFREE
    - ttable_add_row
    linkageType: ''
    returnType: int
    signature: int pim_print_vty_pnc_cache_walkcb(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_cmd_common.c:2838,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:2839,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:2841,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2843,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2844,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2846,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd_common.c:2848,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:2849,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2851,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:2852,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2855,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:2858,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd_common.c:2861,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - backet
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2864
      start: 2822
    functionDepth: 7
    functionLinenumber: 2822
    functionLinenumberEnd: 2864
    functionName: pim_print_json_pnc_cache_walkcb
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - if_lookup_by_index
    - json_object_object_addf
    - json_object_array_add
    - json_object_object_get_ex
    - snprintfrr
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    linkageType: ''
    returnType: int
    signature: "int pim_print_json_pnc_cache_walkcb(struct hash_bucket *backet,\n\t\t\t\t\t
      \  void *arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:2876,1
    - Dst: pim_is_group_224_4
      Src: /src/frr/pimd/pim_cmd_common.c:2882,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2883,1
    - Dst: pim_is_group_224_4
      Src: /src/frr/pimd/pim_cmd_common.c:2888,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2889,1
    - Dst: pim_rp_set_upstream_addr
      Src: /src/frr/pimd/pim_cmd_common.c:2895,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_cmd_common.c:2898,1
    - Dst: memset
      Src: /src/frr/pimd/pim_cmd_common.c:2899,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_cmd_common.c:2902,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2905,1
    - Dst: pim_addr_dump
      Src: /src/frr/pimd/pim_cmd_common.c:2910,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2912,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - vrf
    - vty
    - source
    - group
    argTypes:
    - char*
    - struct vty*
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2916
      start: 2866
    functionDepth: 6
    functionLinenumber: 2866
    functionLinenumberEnd: 2916
    functionName: pim_show_nexthop_lookup_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    - memset
    - pim_addr_to_prefix
    - pim_addr_dump
    - vrf_lookup_by_name
    - pim_rp_set_upstream_addr
    - pim_ecmp_nexthop_lookup
    - pim_is_group_224_4
    linkageType: ''
    returnType: int
    signature: "int pim_show_nexthop_lookup_cmd_helper(const char *vrf, struct vty
      *vty,\n\t\t\t\t       pim_addr source, pim_addr group)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:2922,1
    - Dst: pim_show_nexthop
      Src: /src/frr/pimd/pim_cmd_common.c:2927,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2930
      start: 2918
    functionDepth: 2
    functionLinenumber: 2918
    functionLinenumberEnd: 2930
    functionName: pim_show_nexthop_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vrf_lookup_by_name
    - pim_show_nexthop
    linkageType: ''
    returnType: int
    signature: int pim_show_nexthop_cmd_helper(const char *vrf, struct vty *vty, bool
      uj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2942,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2944,1
    - Dst: hash_walk
      Src: /src/frr/pimd/pim_cmd_common.c:2949,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:2951,1
    - Dst: hash_walk
      Src: /src/frr/pimd/pim_cmd_common.c:2953,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2954
      start: 2932
    functionDepth: 4
    functionLinenumber: 2932
    functionLinenumberEnd: 2954
    functionName: pim_show_nexthop
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - hash_walk
    - vty_out
    - vty_json
    linkageType: ''
    returnType: void
    signature: void pim_show_nexthop(struct pim_instance *pim, struct vty *vty, bool
      uj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:2962,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2968,1
    - Dst: pim_show_neighbors_single
      Src: /src/frr/pimd/pim_cmd_common.c:2971,1
    - Dst: pim_show_neighbors
      Src: /src/frr/pimd/pim_cmd_common.c:2973,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:2976,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - vrf
    - vty
    - json
    - interface
    argTypes:
    - char*
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2979
      start: 2956
    functionDepth: 4
    functionLinenumber: 2956
    functionLinenumberEnd: 2979
    functionName: pim_show_neighbors_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_show_neighbors
    - pim_show_neighbors_single
    - vrf_lookup_by_name
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_neighbors_cmd_helper(const char *vrf, struct vty *vty,\n\t\t\t\t
      \ const char *json, const char *interface)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2989,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:2990,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:2992,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:2994,1
    - Dst: pim_show_neighbors_single
      Src: /src/frr/pimd/pim_cmd_common.c:2997,1
    - Dst: pim_show_neighbors
      Src: /src/frr/pimd/pim_cmd_common.c:3000,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3003,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:3006,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - vty
    - json
    - interface
    argTypes:
    - struct vty*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3009
      start: 2981
    functionDepth: 4
    functionLinenumber: 2981
    functionLinenumberEnd: 3009
    functionName: pim_show_neighbors_vrf_all_cmd_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_show_neighbors
    - vty_out
    - pim_show_neighbors_single
    - json_object_object_add
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_neighbors_vrf_all_cmd_helper(struct vty *vty, const char
      *json,\n\t\t\t\t\t  const char *interface)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:3033,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:3035,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:3044,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:3046,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd_common.c:3054,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:3054,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:3055,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:3056,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:3060,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:3062,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_cmd_common.c:3072,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_cmd_common.c:3076,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_cmd_common.c:3080,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_cmd_common.c:3084,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_cmd_common.c:3088,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_cmd_common.c:3092,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:3101,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3105,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd_common.c:3106,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3107,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3111,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3112,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3114,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3116,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3118,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3120,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3122,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3126,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3131,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3136,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3141,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3146,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3151,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3154,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3158,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3159,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3160,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3163,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3166,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3169,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3172,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3175,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3178,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3181,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3184,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3187,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3190,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3193,1
    - Dst: bfd_sess_show
      Src: /src/frr/pimd/pim_cmd_common.c:3196,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3198,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3204,1
    - Dst: pim_show_neighbors
      Src: /src/frr/pimd/pim_cmd_common.c:3207,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:3223,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:3227,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:3228,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:3231,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:3234,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3244,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:3246,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:3248,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:3250,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd_common.c:3252,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3256,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3257,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3259,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3261,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3263,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3265,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3267,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3269,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:3273,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3281,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:3287,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3288,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:3289,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:3290,1
    - Dst: gm_process_query_max_response_time_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3294,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd_common.c:3299,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3304,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd_common.c:3306,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3307,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3311,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3313,1
    - Dst: gm_process_no_query_max_response_time_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3317,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3319,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3321,1
    - Dst: gm_process_last_member_query_count_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3325,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd_common.c:3330,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3334,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd_common.c:3336,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3337,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3341,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3343,1
    - Dst: gm_process_no_last_member_query_count_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3347,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3349,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3351,1
    - Dst: gm_process_last_member_query_interval_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3355,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd_common.c:3360,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3364,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd_common.c:3366,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3367,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3371,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3373,1
    - Dst: gm_process_no_last_member_query_interval_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3377,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3379,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3381,1
    - Dst: pim_process_ssmpingd_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3385,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd_common.c:3391,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd_common.c:3395,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:3398,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3401,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3403,1
    - Dst: pim_process_bsm_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3406,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd_common.c:3410,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3414,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd_common.c:3417,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3418,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3422,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3424,1
    - Dst: pim_process_no_bsm_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3428,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3430,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3432,1
    - Dst: pim_process_unicast_bsm_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3436,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd_common.c:3440,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3444,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd_common.c:3447,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3448,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3452,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3454,1
    - Dst: pim_process_no_unicast_bsm_cmd
      Src: /src/frr/pimd/pim_cmd_common.c:3458,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd_common.c:3460,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd_common.c:3462,1
    - Dst: show_scan_oil_stats
      Src: /src/frr/pimd/pim_cmd_common.c:3466,1
    - Dst: pim_time_uptime_begin
      Src: /src/frr/pimd/pim_cmd_common.c:3473,1
    - Dst: pim_time_uptime_begin
      Src: /src/frr/pimd/pim_cmd_common.c:3475,1
    - Dst: pim_time_uptime_begin
      Src: /src/frr/pimd/pim_cmd_common.c:3477,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3480,1
    - Dst: show_multicast_interfaces
      Src: /src/frr/pimd/pim_cmd_common.c:3489,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3497,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:3501,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:3502,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:3507,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:3510,1
    - Dst: memset
      Src: /src/frr/pimd/pim_cmd_common.c:3523,1
    - Dst: ioctl
      Src: /src/frr/pimd/pim_cmd_common.c:3526,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_cmd_common.c:3527,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_cmd_common.c:3531,1
    - Dst: ioctl
      Src: /src/frr/pimd/pim_cmd_common.c:3535,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_cmd_common.c:3536,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_cmd_common.c:3540,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3545,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3546,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3547,1
    - Dst: if_is_up
      Src: /src/frr/pimd/pim_cmd_common.c:3548,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:3549,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3551,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3552,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3554,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3556,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3558,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3560,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3562,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:3564,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:3575,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:3577,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:3578,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 4
    argNames:
    - pim
    - vty
    - neighbor
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3580
      start: 3011
    functionDepth: 7
    functionLinenumber: 3011
    functionLinenumberEnd: 3580
    functionName: pim_show_neighbors_single
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 2
    functionsReached:
    - pim_show_neighbors
    - yang_dnode_get_bool
    - ttable_del
    - gm_process_no_last_member_query_interval_cmd
    - json_object_pim_ifp_add
    - ttable_dump
    - pim_process_no_bsm_cmd
    - zlog_warn
    - json_object_string_add
    - show_multicast_interfaces
    - json_object_string_addf
    - strlcat
    - snprintf
    - memset
    - pim_time_uptime_begin
    - ALL_LIST_ELEMENTS_RO
    - ttable_restyle
    - pim_cli_get_vrf_name
    - FOR_ALL_INTERFACES
    - yang_dnode_getf
    - safe_strerror
    - pim_time_monotonic_sec
    - if
    - pim_process_no_unicast_bsm_cmd
    - gm_process_query_max_response_time_cmd
    - gm_process_last_member_query_interval_cmd
    - if_is_up
    - ttable_add_row
    - PIM_OPTION_IS_SET
    - vty_out
    - bfd_sess_show
    - nb_cli_enqueue_change
    - ioctl
    - json_object_int_add
    - gm_process_last_member_query_count_cmd
    - XFREE
    - pim_process_bsm_cmd
    - nb_cli_apply_changes
    - ttable_new
    - pim_process_ssmpingd_cmd
    - json_object_new_object
    - show_scan_oil_stats
    - pim_time_uptime
    - gm_process_no_query_max_response_time_cmd
    - pim_time_timer_to_hhmmss
    - strcmp
    - snprintfrr
    - json_object_object_get_ex
    - json_object_boolean_true_add
    - json_object_object_add
    - gm_process_no_last_member_query_count_cmd
    - pim_process_unicast_bsm_cmd
    linkageType: ''
    returnType: void
    signature: "void pim_show_neighbors_single(struct pim_instance *pim, struct vty
      *vty,\n\t\t\t       const char *neighbor, json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:3585,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3591,1
    - Dst: mlag_role2str
      Src: /src/frr/pimd/pim_cmd_common.c:3592,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3593,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3595,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3596,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3597,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:3599,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3601,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3603,1
    - Dst: pim_zebra_zclient_update
      Src: /src/frr/pimd/pim_cmd_common.c:3605,1
    - Dst: pim_zlookup_show_ip_multicast
      Src: /src/frr/pimd/pim_cmd_common.c:3606,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3608,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3609,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3611,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3612,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3613,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3614,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3615,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3618,1
    - Dst: pim_show_rpf_refresh_stats
      Src: /src/frr/pimd/pim_cmd_common.c:3620,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3622,1
    - Dst: show_scan_oil_stats
      Src: /src/frr/pimd/pim_cmd_common.c:3624,1
    - Dst: show_multicast_interfaces
      Src: /src/frr/pimd/pim_cmd_common.c:3626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3627
      start: 3582
    functionDepth: 3
    functionLinenumber: 3582
    functionLinenumberEnd: 3627
    functionName: pim_cmd_show_ip_multicast_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - show_scan_oil_stats
    - vty_out
    - pim_time_uptime
    - pim_show_rpf_refresh_stats
    - pim_zlookup_show_ip_multicast
    - mlag_role2str
    - show_multicast_interfaces
    - pim_time_monotonic_sec
    - pim_zebra_zclient_update
    linkageType: ''
    returnType: void
    signature: void pim_cmd_show_ip_multicast_helper(struct pim_instance *pim, struct
      vty *vty)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3655,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3656,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:3657,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:3661,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:3662,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:3666,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:3669,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:3672,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:3678,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_cmd_common.c:3679,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:3679,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:3681,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_cmd_common.c:3682,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:3682,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:3685,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:3686,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:3687,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:3688,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3690,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_IGMP
      Src: /src/frr/pimd/pim_cmd_common.c:3695,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:3696,1
    - Dst: pim_upstream_is_sg_rpt
      Src: /src/frr/pimd/pim_cmd_common.c:3697,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:3698,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_cmd_common.c:3699,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:3700,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:3702,1
    - Dst: pim_channel_oil_empty
      Src: /src/frr/pimd/pim_cmd_common.c:3704,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd_common.c:3705,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_cmd_common.c:3707,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_cmd_common.c:3707,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3710,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3712,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:3715,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:3721,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3724,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3725,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:3732,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3736,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3737,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3744,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3745,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3746,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3748,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3750,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3752,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3754,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3755,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_cmd_common.c:3765,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_cmd_common.c:3773,1
    - Dst: pim_mroute_allow_iif_in_oil
      Src: /src/frr/pimd/pim_cmd_common.c:3774,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_cmd_common.c:3777,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3781,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3784,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3788,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3789,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3791,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3796,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3802,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3805,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3811,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3816,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3820,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3823,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_cmd_common.c:3824,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3825,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3828,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3830,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3831,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3833,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3836,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3837,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3840,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3846,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3852,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3854,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3860,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3865,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:3868,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:3885,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:3886,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:3886,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:3893,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd_common.c:3896,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:3899,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:3900,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_cmd_common.c:3901,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3905,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3907,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:3912,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3915,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3916,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:3923,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3927,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3928,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3932,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3935,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_cmd_common.c:3948,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:3949,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3956,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:3959,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3963,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3964,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3966,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd_common.c:3968,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3970,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3973,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_cmd_common.c:3975,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3976,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3979,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:3981,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:3982,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:3985,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3986,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:3989,1
    - Dst: oif_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:3996,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:4014,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:4016,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:4017,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 135
    argCount: 5
    argNames:
    - pim
    - vty
    - sg
    - fill
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - pim_sgaddr*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4018
      start: 3629
    functionDepth: 7
    functionLinenumber: 3629
    functionLinenumberEnd: 4018
    functionName: show_mroute
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - ttable_del
    - frr_each
    - ttable_dump
    - json_object_string_add
    - oil_if_has
    - strlcat
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - ttable_restyle
    - oil_parent
    - oif_uptime
    - pim_channel_oil_empty
    - pim_time_monotonic_sec
    - pim_upstream_is_sg_rpt
    - if
    - ttable_add_row
    - pim_if_find_by_vif_index
    - vty_out
    - pim_mroute_allow_iif_in_oil
    - oil_mcastgrp
    - strlcpy
    - pim_addr_cmp
    - json_object_int_add
    - XFREE
    - PIM_UPSTREAM_FLAG_TEST_SRC_IGMP
    - ttable_new
    - json_object_new_object
    - pim_time_uptime
    - snprintfrr
    - json_object_object_get_ex
    - oil_origin
    - json_object_boolean_true_add
    - json_object_object_add
    - PIM_UPSTREAM_FLAG_TEST_FHR
    linkageType: ''
    returnType: void
    signature: "void show_mroute(struct pim_instance *pim, struct vty *vty, pim_sgaddr
      *sg,\n\t\t bool fill, json_object *json)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_mroute_update_counters
      Src: /src/frr/pimd/pim_cmd_common.c:4031,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:4037,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:4038,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd_common.c:4039,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:4040,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:4042,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4045,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4046,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4049,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4050,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4051,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4053,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4054,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4055,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:4058,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:4059,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_cmd_common.c:4059,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - c_oil
    - json
    - tt
    argTypes:
    - struct channel_oil*
    - json_object*
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4065
      start: 4021
    functionDepth: 7
    functionLinenumber: 4021
    functionLinenumberEnd: 4065
    functionName: show_mroute_count_per_channel_oil
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - oil_mcastgrp
    - pim_mroute_update_counters
    - json_object_object_get_ex
    - snprintfrr
    - json_object_int_add
    - oil_origin
    - json_object_object_add
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void show_mroute_count_per_channel_oil(struct channel_oil *c_oil,\n\t\t\t\t\t
      \     json_object *json,\n\t\t\t\t\t      struct ttable *tt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4077,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:4080,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:4081,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:4085,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:4089,1
    - Dst: show_mroute_count_per_channel_oil
      Src: /src/frr/pimd/pim_cmd_common.c:4090,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:4092,1
    - Dst: show_mroute_count_per_channel_oil
      Src: /src/frr/pimd/pim_cmd_common.c:4093,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd_common.c:4096,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:4097,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4098,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:4099,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:4100,1
    - Dst: show_mroute_summary
      Src: /src/frr/pimd/pim_cmd_common.c:4104,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4118,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:4120,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4122,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:4122,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4127,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:4127,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:4134,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4136,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:4136,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4141,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_cmd_common.c:4141,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4149,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4151,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4153,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4154,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4160,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4161,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4163,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4165,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4169,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4170,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4172,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4173,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4176,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:4178,1
    - Dst: clear_ip_mroute_count_command
      Src: /src/frr/pimd/pim_cmd_common.c:4185,1
    - Dst: pim_cmd_lookup
      Src: /src/frr/pimd/pim_cmd_common.c:4190,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:4197,1
    - Dst: pim_mroute_update_counters
      Src: /src/frr/pimd/pim_cmd_common.c:4201,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd_common.c:4207,1
    - Dst: pim_mroute_update_counters
      Src: /src/frr/pimd/pim_cmd_common.c:4211,1
    - Dst: pim_cmd_lookup
      Src: /src/frr/pimd/pim_cmd_common.c:4220,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4225,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/pimd/pim_cmd_common.c:4227,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4230,1
    - Dst: clear_mroute
      Src: /src/frr/pimd/pim_cmd_common.c:4235,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:4241,1
    - Dst: RB_EMPTY
      Src: /src/frr/pimd/pim_cmd_common.c:4249,1
    - Dst: RB_ROOT
      Src: /src/frr/pimd/pim_cmd_common.c:4250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - pim
    - vty
    - json
    argTypes:
    - struct pim_instance*
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4253
      start: 4067
    functionDepth: 8
    functionLinenumber: 4067
    functionLinenumberEnd: 4253
    functionName: show_mroute_count
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - ttable_del
    - frr_each
    - clear_mroute
    - vrf_lookup_by_name
    - ttable_dump
    - RB_EMPTY
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - ttable_restyle
    - FOR_ALL_INTERFACES
    - vrf_lookup_by_id
    - if
    - show_mroute_count_per_channel_oil
    - RB_ROOT
    - ttable_add_row
    - vty_out
    - json_object_int_add
    - show_mroute_summary
    - XFREE
    - ttable_new
    - json_object_new_object
    - clear_ip_mroute_count_command
    - pim_mroute_update_counters
    - oil_origin
    - json_object_object_add
    - pim_cmd_lookup
    linkageType: ''
    returnType: void
    signature: "void show_mroute_count(struct pim_instance *pim, struct vty *vty,\n\t\t
      \      json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:4288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4298
      start: 4279
    functionDepth: 0
    functionLinenumber: 4279
    functionLinenumberEnd: 4298
    functionName: clear_pim_statistics
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    linkageType: ''
    returnType: void
    signature: void clear_pim_statistics(struct pim_instance *pim)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_cmd_lookup
      Src: /src/frr/pimd/pim_cmd_common.c:4305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - vrf
    - vty
    argTypes:
    - char*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4338
      start: 4300
    functionDepth: 0
    functionLinenumber: 4300
    functionLinenumberEnd: 4338
    functionName: clear_pim_interface_traffic
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_cmd_lookup
    linkageType: ''
    returnType: int
    signature: int clear_pim_interface_traffic(const char *vrf, struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4335
      start: 4310
    functionDepth: 0
    functionLinenumber: 4310
    functionLinenumberEnd: 4335
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (v, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4350
      start: 4340
    functionDepth: 0
    functionLinenumber: 4340
    functionLinenumberEnd: 4350
    functionName: pim_debug_pim_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pim_debug_pim_cmd(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4365
      start: 4352
    functionDepth: 0
    functionLinenumber: 4352
    functionLinenumberEnd: 4365
    functionName: pim_no_debug_pim_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pim_no_debug_pim_cmd(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4372,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4375,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4378,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - hello
    - joins
    - registers
    - vty
    argTypes:
    - char*
    - char*
    - char*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4384
      start: 4367
    functionDepth: 2
    functionLinenumber: 4367
    functionLinenumberEnd: 4384
    functionName: pim_debug_pim_packets_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int pim_debug_pim_packets_cmd(const char *hello, const char *joins,\n\t\t\t
      \     const char *registers, struct vty *vty)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4391,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4394,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4397,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4400,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - hello
    - joins
    - registers
    - vty
    argTypes:
    - char*
    - char*
    - char*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4404
      start: 4386
    functionDepth: 2
    functionLinenumber: 4386
    functionLinenumberEnd: 4404
    functionName: pim_no_debug_pim_packets_cmd
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: int
    signature: "int pim_no_debug_pim_packets_cmd(const char *hello, const char *joins,\n\t\t\t\t
      const char *registers, struct vty *vty)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4412,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4420,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4425,1
    - Dst: pim_show_rpf
      Src: /src/frr/pimd/pim_cmd_common.c:4427,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4430,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vrf
    - vty
    - json
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4433
      start: 4406
    functionDepth: 8
    functionLinenumber: 4406
    functionLinenumberEnd: 4433
    functionName: pim_show_rpf_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - vrf_lookup_by_name
    - vty_json
    - pim_show_rpf
    linkageType: ''
    returnType: int
    signature: int pim_show_rpf_helper(const char *vrf, struct vty *vty, bool json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4442,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4444,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4446,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4448,1
    - Dst: pim_show_rpf
      Src: /src/frr/pimd/pim_cmd_common.c:4449,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4451,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4458
      start: 4435
    functionDepth: 8
    functionLinenumber: 4435
    functionLinenumberEnd: 4458
    functionName: pim_show_rpf_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_json
    - vty_out
    - json_object_object_add
    - RB_FOREACH
    - pim_show_rpf
    linkageType: ''
    returnType: int
    signature: int pim_show_rpf_vrf_all_helper(struct vty *vty, bool json)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4468,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4476,1
    - Dst: prefix_new
      Src: /src/frr/pimd/pim_cmd_common.c:4481,1
    - Dst: prefix_copy
      Src: /src/frr/pimd/pim_cmd_common.c:4482,1
    - Dst: apply_mask
      Src: /src/frr/pimd/pim_cmd_common.c:4483,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4487,1
    - Dst: pim_rp_show_information
      Src: /src/frr/pimd/pim_cmd_common.c:4489,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4492,1
    - Dst: prefix_free
      Src: /src/frr/pimd/pim_cmd_common.c:4494,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - vrf
    - vty
    - group_str
    - group
    - json
    argTypes:
    - char*
    - struct vty*
    - char*
    - struct prefix*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4497
      start: 4460
    functionDepth: 4
    functionLinenumber: 4460
    functionLinenumberEnd: 4497
    functionName: pim_show_rp_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix_free
    - apply_mask
    - vty_out
    - prefix_new
    - pim_rp_show_information
    - vrf_lookup_by_name
    - prefix_copy
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_rp_helper(const char *vrf, struct vty *vty, const char
      *group_str,\n\t\t       const struct prefix *group, bool json)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: prefix_new
      Src: /src/frr/pimd/pim_cmd_common.c:4508,1
    - Dst: prefix_copy
      Src: /src/frr/pimd/pim_cmd_common.c:4509,1
    - Dst: apply_mask
      Src: /src/frr/pimd/pim_cmd_common.c:4510,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4514,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4516,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4518,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4520,1
    - Dst: pim_rp_show_information
      Src: /src/frr/pimd/pim_cmd_common.c:4521,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4523,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4527,1
    - Dst: prefix_free
      Src: /src/frr/pimd/pim_cmd_common.c:4529,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - vty
    - group_str
    - group
    - json
    argTypes:
    - struct vty*
    - char*
    - struct prefix*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4532
      start: 4499
    functionDepth: 4
    functionLinenumber: 4499
    functionLinenumberEnd: 4532
    functionName: pim_show_rp_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix_free
    - apply_mask
    - vty_out
    - prefix_new
    - pim_rp_show_information
    - json_object_object_add
    - prefix_copy
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_rp_vrf_all_helper(struct vty *vty, const char *group_str,\n\t\t\t
      \      const struct prefix *group, bool json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4539,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4547,1
    - Dst: pim_show_neighbors_secondary
      Src: /src/frr/pimd/pim_cmd_common.c:4551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - vrf
    - vty
    argTypes:
    - char*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4554
      start: 4534
    functionDepth: 8
    functionLinenumber: 4534
    functionLinenumberEnd: 4554
    functionName: pim_show_secondary_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vrf_lookup_by_name
    - pim_show_neighbors_secondary
    linkageType: ''
    returnType: int
    signature: int pim_show_secondary_helper(const char *vrf, struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4562,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4570,1
    - Dst: pim_show_statistics
      Src: /src/frr/pimd/pim_cmd_common.c:4575,1
    - Dst: pim_show_statistics
      Src: /src/frr/pimd/pim_cmd_common.c:4577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - vrf
    - vty
    - word
    - uj
    argTypes:
    - char*
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4580
      start: 4556
    functionDepth: 2
    functionLinenumber: 4556
    functionLinenumberEnd: 4580
    functionName: pim_show_statistics_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_show_statistics
    - vty_out
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int pim_show_statistics_helper(const char *vrf, struct vty *vty,\n\t\t\t
      \      const char *word, bool uj)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4590,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4593,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4599,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4604,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4606,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4607,1
    - Dst: pim_show_upstream
      Src: /src/frr/pimd/pim_cmd_common.c:4614,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4617,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 5
    argNames:
    - vrf
    - vty
    - s_or_g
    - g
    - json
    argTypes:
    - char*
    - struct vty*
    - pim_addr
    - pim_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4620
      start: 4582
    functionDepth: 8
    functionLinenumber: 4582
    functionLinenumberEnd: 4620
    functionName: pim_show_upstream_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - pim_show_upstream
    - pim_addr_is_any
    - vrf_lookup_by_name
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_upstream_helper(const char *vrf, struct vty *vty, pim_addr
      s_or_g,\n\t\t\t     pim_addr g, bool json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4630,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4632,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4634,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4636,1
    - Dst: pim_show_upstream
      Src: /src/frr/pimd/pim_cmd_common.c:4637,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4639,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4644,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4647
      start: 4622
    functionDepth: 8
    functionLinenumber: 4622
    functionLinenumberEnd: 4647
    functionName: pim_show_upstream_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - pim_show_upstream
    - json_object_object_add
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_upstream_vrf_all_helper(struct vty *vty, bool json)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4655,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4663,1
    - Dst: pim_show_join_desired
      Src: /src/frr/pimd/pim_cmd_common.c:4667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4670
      start: 4649
    functionDepth: 9
    functionLinenumber: 4649
    functionLinenumberEnd: 4670
    functionName: pim_show_upstream_join_desired_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_show_join_desired
    - vty_out
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int pim_show_upstream_join_desired_helper(const char *vrf, struct
      vty *vty,\n\t\t\t\t\t  bool uj)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4677,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4685,1
    - Dst: pim_show_upstream_rpf
      Src: /src/frr/pimd/pim_cmd_common.c:4689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4692
      start: 4672
    functionDepth: 8
    functionLinenumber: 4672
    functionLinenumberEnd: 4692
    functionName: pim_show_upstream_rpf_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vrf_lookup_by_name
    - pim_show_upstream_rpf
    linkageType: ''
    returnType: int
    signature: int pim_show_upstream_rpf_helper(const char *vrf, struct vty *vty,
      bool uj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4701,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4709,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4714,1
    - Dst: pim_show_state
      Src: /src/frr/pimd/pim_cmd_common.c:4716,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4719,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - vrf
    - vty
    - s_or_g_str
    - g_str
    - json
    argTypes:
    - char*
    - struct vty*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4722
      start: 4694
    functionDepth: 4
    functionLinenumber: 4694
    functionLinenumberEnd: 4722
    functionName: pim_show_state_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - vrf_lookup_by_name
    - pim_show_state
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_state_helper(const char *vrf, struct vty *vty,\n\t\t\t
      \ const char *s_or_g_str, const char *g_str, bool json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4732,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4734,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4736,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4738,1
    - Dst: pim_show_state
      Src: /src/frr/pimd/pim_cmd_common.c:4739,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4741,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4745,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - vty
    - s_or_g_str
    - g_str
    - json
    argTypes:
    - struct vty*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4748
      start: 4724
    functionDepth: 4
    functionLinenumber: 4724
    functionLinenumberEnd: 4748
    functionName: pim_show_state_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_object_add
    - pim_show_state
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_state_vrf_all_helper(struct vty *vty, const char *s_or_g_str,\n\t\t\t\t
      \ const char *g_str, bool json)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4755,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4763,1
    - Dst: pim_cmd_show_ip_multicast_helper
      Src: /src/frr/pimd/pim_cmd_common.c:4767,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - vrf
    - vty
    argTypes:
    - char*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4770
      start: 4750
    functionDepth: 4
    functionLinenumber: 4750
    functionLinenumberEnd: 4770
    functionName: pim_show_multicast_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_cmd_show_ip_multicast_helper
    - vty_out
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int pim_show_multicast_helper(const char *vrf, struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4776,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4777,1
    - Dst: pim_cmd_show_ip_multicast_helper
      Src: /src/frr/pimd/pim_cmd_common.c:4778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4782
      start: 4772
    functionDepth: 4
    functionLinenumber: 4772
    functionLinenumberEnd: 4782
    functionName: pim_show_multicast_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_cmd_show_ip_multicast_helper
    - RB_FOREACH
    - vty_out
    linkageType: ''
    returnType: int
    signature: int pim_show_multicast_vrf_all_helper(struct vty *vty)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4790,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4798,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4803,1
    - Dst: show_multicast_interfaces
      Src: /src/frr/pimd/pim_cmd_common.c:4805,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vrf
    - vty
    - json
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4811
      start: 4784
    functionDepth: 4
    functionLinenumber: 4784
    functionLinenumberEnd: 4811
    functionName: pim_show_multicast_count_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - vrf_lookup_by_name
    - show_multicast_interfaces
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_multicast_count_helper(const char *vrf, struct vty *vty,
      bool json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4820,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4822,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4824,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4826,1
    - Dst: show_multicast_interfaces
      Src: /src/frr/pimd/pim_cmd_common.c:4828,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4830,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4834,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4837
      start: 4813
    functionDepth: 4
    functionLinenumber: 4813
    functionLinenumberEnd: 4837
    functionName: pim_show_multicast_count_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_object_add
    - show_multicast_interfaces
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_multicast_count_vrf_all_helper(struct vty *vty, bool json)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4847,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4855,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4860,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4862,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:4863,1
    - Dst: show_mroute
      Src: /src/frr/pimd/pim_cmd_common.c:4870,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4873,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 6
    argNames:
    - vrf
    - vty
    - s_or_g
    - g
    - fill
    - json
    argTypes:
    - char*
    - struct vty*
    - pim_addr
    - pim_addr
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4876
      start: 4839
    functionDepth: 8
    functionLinenumber: 4839
    functionLinenumberEnd: 4876
    functionName: pim_show_mroute_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - pim_addr_is_any
    - vrf_lookup_by_name
    - show_mroute
    - vty_json
    linkageType: ''
    returnType: int
    signature: "int pim_show_mroute_helper(const char *vrf, struct vty *vty, pim_addr
      s_or_g,\n\t\t\t   pim_addr g, bool fill, bool json)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4886,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4888,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4890,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4892,1
    - Dst: show_mroute
      Src: /src/frr/pimd/pim_cmd_common.c:4893,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4895,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4899,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - vty
    - fill
    - json
    argTypes:
    - struct vty*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4902
      start: 4878
    functionDepth: 8
    functionLinenumber: 4878
    functionLinenumberEnd: 4902
    functionName: pim_show_mroute_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - show_mroute
    - json_object_object_add
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_mroute_vrf_all_helper(struct vty *vty, bool fill, bool
      json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4910,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4918,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4923,1
    - Dst: show_mroute_count
      Src: /src/frr/pimd/pim_cmd_common.c:4925,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4928,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vrf
    - vty
    - json
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4931
      start: 4904
    functionDepth: 9
    functionLinenumber: 4904
    functionLinenumberEnd: 4931
    functionName: pim_show_mroute_count_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - vrf_lookup_by_name
    - show_mroute_count
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_mroute_count_helper(const char *vrf, struct vty *vty,
      bool json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4940,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4942,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4944,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4946,1
    - Dst: show_mroute_count
      Src: /src/frr/pimd/pim_cmd_common.c:4948,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:4951,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4955,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4958
      start: 4933
    functionDepth: 9
    functionLinenumber: 4933
    functionLinenumberEnd: 4958
    functionName: pim_show_mroute_count_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_object_add
    - show_mroute_count
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_mroute_count_vrf_all_helper(struct vty *vty, bool json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:4966,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:4974,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4979,1
    - Dst: show_mroute_summary
      Src: /src/frr/pimd/pim_cmd_common.c:4981,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:4984,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - vrf
    - vty
    - json
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4987
      start: 4960
    functionDepth: 4
    functionLinenumber: 4960
    functionLinenumberEnd: 4987
    functionName: pim_show_mroute_summary_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - vrf_lookup_by_name
    - show_mroute_summary
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_mroute_summary_helper(const char *vrf, struct vty *vty,
      bool json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:4996,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd_common.c:4998,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5000,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5002,1
    - Dst: show_mroute_summary
      Src: /src/frr/pimd/pim_cmd_common.c:5004,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:5007,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:5012,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - vty
    - json
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5015
      start: 4989
    functionDepth: 4
    functionLinenumber: 4989
    functionLinenumberEnd: 5015
    functionName: pim_show_mroute_summary_vrf_all_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - show_mroute_summary
    - json_object_object_add
    - RB_FOREACH
    - vty_json
    linkageType: ''
    returnType: int
    signature: int pim_show_mroute_summary_vrf_all_helper(struct vty *vty, bool json)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5026,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5028,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5029,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5033,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5036,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:5040,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5047,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd_common.c:5048,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5049,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5051,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5053,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5055,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5057,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5059,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5061,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5063,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5065,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5067,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5069,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5071,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5073,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5075,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:5077,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5079,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:5099,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5100
      start: 5017
    functionDepth: 4
    functionLinenumber: 5017
    functionLinenumberEnd: 5100
    functionName: pim_show_interface_traffic
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_pim_ifp_add
    - json_object_int_add
    - FOR_ALL_INTERFACES
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void pim_show_interface_traffic(struct pim_instance *pim, struct vty
      *vty,\n\t\t\t\tbool uj)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5113,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5115,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5116,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5120,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5123,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:5127,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd_common.c:5128,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5138,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd_common.c:5139,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5140,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5142,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5144,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5146,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5148,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5150,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5152,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5154,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5156,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5158,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5160,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5162,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5164,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5166,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:5169,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5171,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:5191,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5193,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 4
    argNames:
    - pim
    - vty
    - ifname
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5194
      start: 5102
    functionDepth: 4
    functionLinenumber: 5102
    functionLinenumberEnd: 5194
    functionName: pim_show_interface_traffic_single
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - json_object_pim_ifp_add
    - strcmp
    - json_object_int_add
    - FOR_ALL_INTERFACES
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void pim_show_interface_traffic_single(struct pim_instance *pim,\n\t\t\t\t
      \      struct vty *vty, const char *ifname,\n\t\t\t\t       bool uj)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:5202,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5210,1
    - Dst: pim_show_interface_traffic_single
      Src: /src/frr/pimd/pim_cmd_common.c:5215,1
    - Dst: pim_show_interface_traffic
      Src: /src/frr/pimd/pim_cmd_common.c:5217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - vrf
    - if_name
    - vty
    - uj
    argTypes:
    - char*
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5220
      start: 5196
    functionDepth: 5
    functionLinenumber: 5196
    functionLinenumberEnd: 5220
    functionName: pim_show_interface_traffic_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_show_interface_traffic_single
    - pim_show_interface_traffic
    - vty_out
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int pim_show_interface_traffic_helper(const char *vrf, const char
      *if_name,\n\t\t\t\t      struct vty *vty, bool uj)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd_common.c:5226,1
    - Dst: pim_neighbor_delete_all
      Src: /src/frr/pimd/pim_cmd_common.c:5228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5230
      start: 5222
    functionDepth: 1
    functionLinenumber: 5222
    functionLinenumberEnd: 5230
    functionName: clear_pim_interfaces
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - pim_neighbor_delete_all
    linkageType: ''
    returnType: void
    signature: void clear_pim_interfaces(struct pim_instance *pim)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd_common.c:5240,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:5241,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:5243,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd_common.c:5248,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:5249,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd_common.c:5251,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:5257,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:5260,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:5263,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd_common.c:5266,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5271,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5272,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5274,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5276,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:5278,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:5279,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd_common.c:5280,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5284,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5285,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5287,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5289,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5292,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:5296,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5297
      start: 5232
    functionDepth: 4
    functionLinenumber: 5232
    functionLinenumberEnd: 5297
    functionName: pim_show_bsr
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - pim_addr_is_any
    - pim_time_uptime
    - strlcpy
    - json_object_int_add
    - json_object_string_add
    - pim_time_monotonic_sec
    - json_object_string_addf
    - vty_json
    linkageType: ''
    returnType: void
    signature: void pim_show_bsr(struct pim_instance *pim, struct vty *vty, bool uj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:5304,1
    - Dst: pim_get_pim_instance
      Src: /src/frr/pimd/pim_cmd_common.c:5309,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5312,1
    - Dst: pim_show_bsr
      Src: /src/frr/pimd/pim_cmd_common.c:5316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5319
      start: 5299
    functionDepth: 5
    functionLinenumber: 5299
    functionLinenumberEnd: 5319
    functionName: pim_show_bsr_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - vty_out
    - pim_show_bsr
    - pim_get_pim_instance
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int pim_show_bsr_helper(const char *vrf, struct vty *vty, bool uj)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5334,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5335,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5338,1
    - Dst: route_top
      Src: /src/frr/pimd/pim_cmd_common.c:5341,1
    - Dst: route_next
      Src: /src/frr/pimd/pim_cmd_common.c:5342,1
    - Dst: prefix2str
      Src: /src/frr/pimd/pim_cmd_common.c:5350,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:5353,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5355,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:5356,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5360,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5361,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:5363,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:5364,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:5367,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:5369,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:5373,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5375,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5376,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5379,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5381,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5383,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5385,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:5390,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:5400,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5401,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:5402,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:5403,1
    - Dst: bsm_rpinfos_count
      Src: /src/frr/pimd/pim_cmd_common.c:5406,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5407,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5410,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5413,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5414,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_cmd_common.c:5418,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:5419,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_cmd_common.c:5424,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:5428,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5430,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5431,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5434,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5436,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5438,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5440,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_cmd_common.c:5444,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim_cmd_common.c:5454,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5455,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_cmd_common.c:5456,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim_cmd_common.c:5457,1
    - Dst: bsm_rpinfos_count
      Src: /src/frr/pimd/pim_cmd_common.c:5459,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5460,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5463,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:5467,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 86
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5468
      start: 5322
    functionDepth: 4
    functionLinenumber: 5322
    functionLinenumberEnd: 5468
    functionName: pim_show_group_rp_mappings_info
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - prefix2str
    - ttable_del
    - frr_each
    - route_top
    - ttable_dump
    - json_object_string_addf
    - ttable_restyle
    - ttable_add_row
    - vty_out
    - route_next
    - json_object_int_add
    - XFREE
    - ttable_new
    - json_object_new_object
    - json_object_object_addf
    - json_object_object_get_ex
    - json_object_object_add
    - bsm_rpinfos_count
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void pim_show_group_rp_mappings_info(struct pim_instance *pim,\n\t\t\t\t\t
      \   struct vty *vty, bool uj)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:5476,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5484,1
    - Dst: pim_show_group_rp_mappings_info
      Src: /src/frr/pimd/pim_cmd_common.c:5488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5491
      start: 5470
    functionDepth: 5
    functionLinenumber: 5470
    functionLinenumberEnd: 5491
    functionName: pim_show_group_rp_mappings_info_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_show_group_rp_mappings_info
    - vty_out
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: "int pim_show_group_rp_mappings_info_helper(const char *vrf, struct
      vty *vty,\n\t\t\t\t\t   bool uj)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bsm_frags_count
      Src: /src/frr/pimd/pim_cmd_common.c:5503,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5506,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5507,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5509,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5510,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5511,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd_common.c:5514,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_cmd_common.c:5535,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5542,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5544,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5546,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5548,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_cmd_common.c:5549,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5551,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5552,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5553,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5555,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_cmd_common.c:5557,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5560,1
    - Dst: prefix2str
      Src: /src/frr/pimd/pim_cmd_common.c:5578,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd_common.c:5584,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5587,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5588,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5591,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd_common.c:5594,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5598,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5599,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5600,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5601,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5611,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_cmd_common.c:5619,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd_common.c:5626,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5627,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5630,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_cmd_common.c:5632,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd_common.c:5633,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_cmd_common.c:5636,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5640,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_cmd_common.c:5642,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5646,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd_common.c:5653,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 83
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5654
      start: 5494
    functionDepth: 4
    functionLinenumber: 5494
    functionLinenumberEnd: 5654
    functionName: pim_show_bsm_db
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - prefix2str
    - json_object_object_addf
    - vty_out
    - frr_each
    - json_object_object_get_ex
    - json_object_int_add
    - ntohs
    - json_object_object_add
    - json_object_string_addf
    - bsm_frags_count
    - vty_json
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pim_show_bsm_db(struct pim_instance *pim, struct vty *vty, bool
      uj)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd_common.c:5661,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd_common.c:5669,1
    - Dst: pim_show_bsm_db
      Src: /src/frr/pimd/pim_cmd_common.c:5673,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - char*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5676
      start: 5656
    functionDepth: 5
    functionLinenumber: 5656
    functionLinenumberEnd: 5676
    functionName: pim_show_bsm_db_helper
    functionSourceFile: /src/frr/pimd/pim_cmd_common.c
    functionUses: 0
    functionsReached:
    - pim_show_bsm_db
    - vty_out
    - vrf_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int pim_show_bsm_db_helper(const char *vrf, struct vty *vty, bool uj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_int.c:18,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_int.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 23
    functionName: pim_read_uint32_host
    functionSourceFile: /src/frr/pimd/pim_int.c
    functionUses: 0
    functionsReached:
    - ntohl
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pim_read_uint32_host(const uint8_t *buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pimd/pim_int.c:28,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_int.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - val_host
    argTypes:
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: pim_write_uint32
    functionSourceFile: /src/frr/pimd/pim_int.c
    functionUses: 0
    functionsReached:
    - htonl
    - memcpy
    linkageType: ''
    returnType: void
    signature: void pim_write_uint32(uint8_t *buf, uint32_t val_host)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:53,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:56,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:59,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:72,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:75,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:79,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:88,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:90,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:93,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:102,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:104,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:107,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/pimd/pim_mroute.c:111,1
    - Dst: set_nonblocking
      Src: /src/frr/pimd/pim_mroute.c:113,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:114,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:116,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:125,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:128,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:130,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:134,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 2
    argNames:
    - pim
    - enable
    argTypes:
    - struct pim_instance*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 140
    functionName: pim_mroute_set
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - safe_strerror
    - setsockopt_so_recvbuf
    - set_nonblocking
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int pim_mroute_set(struct pim_instance *pim, int enable)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:53,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:56,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 62
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:72,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:75,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 82
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - setsockopt
    - safe_strerror
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_mroute.c:153,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:160,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_mroute.c:169,1
    - Dst: RP
      Src: /src/frr/pimd/pim_mroute.c:179,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:182,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_mroute.c:186,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:188,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_mroute.c:198,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:200,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_mroute.c:206,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:211,1
    - Dst: pim_upstream_find_or_add
      Src: /src/frr/pimd/pim_mroute.c:225,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_mroute.c:227,1
    - Dst: pim_upstream_find_or_add
      Src: /src/frr/pimd/pim_mroute.c:232,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:235,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:246,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SRC_STREAM
      Src: /src/frr/pimd/pim_mroute.c:250,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_mroute.c:251,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:256,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_mroute.c:257,1
    - Dst: pim_register_join
      Src: /src/frr/pimd/pim_mroute.c:259,1
    - Dst: pim_upstream_inherited_olist_decide
      Src: /src/frr/pimd/pim_mroute.c:261,1
    - Dst: pim_upstream_mroute_update
      Src: /src/frr/pimd/pim_mroute.c:267,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 3
    argNames:
    - fd
    - ifp
    - msg
    argTypes:
    - int
    - struct interface*
    - kernmsg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 269
    functionName: pim_mroute_msg_nocache
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - pim_is_grp_ssm
    - pim_upstream_inherited_olist_decide
    - RP
    - memset
    - PIM_I_am_DR
    - pim_upstream_mroute_update
    - pim_register_join
    - oil_parent
    - pim_upstream_find_or_add
    - pim_upstream_keep_alive_timer_start
    - PIM_UPSTREAM_FLAG_SET_SRC_STREAM
    - zlog_debug
    - zlog_warn
    - pim_if_connected_to_source
    - pim_upstream_mroute_iif_update
    - pim_upstream_mroute_add
    - pim_rpf_addr_is_inaddr_any
    linkageType: ''
    returnType: int
    signature: int pim_mroute_msg_nocache(int fd, struct interface *ifp, const kernmsg
      *msg)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_mroute.c:284,1
    - Dst: IPV_SRC
      Src: /src/frr/pimd/pim_mroute.c:285,1
    - Dst: IPV_DST
      Src: /src/frr/pimd/pim_mroute.c:286,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_mroute.c:288,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_mroute.c:293,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
      Src: /src/frr/pimd/pim_mroute.c:295,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_mroute.c:296,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:301,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_mroute.c:306,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_mroute.c:308,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_mroute.c:309,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:312,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:317,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:326,1
    - Dst: RP
      Src: /src/frr/pimd/pim_mroute.c:333,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_mroute.c:335,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_mroute.c:336,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:338,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_mroute.c:347,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:349,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_mroute.c:355,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:357,1
    - Dst: pim_register_send
      Src: /src/frr/pimd/pim_mroute.c:363,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 4
    argNames:
    - fd
    - ifp
    - buf
    - len
    argTypes:
    - int
    - struct interface*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 368
    functionName: pim_mroute_msg_wholepkt
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - pim_is_grp_ssm
    - pim_upstream_update_join_desired
    - pim_upstream_inherited_olist
    - memset
    - pim_upstream_add
    - PIM_I_am_DR
    - PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
    - pim_upstream_find
    - pim_register_send
    - pim_rpf_addr_is_inaddr_any
    - zlog_debug
    - pim_upstream_keep_alive_timer_start
    - IPV_SRC
    - RP
    - PIM_UPSTREAM_FLAG_TEST_FHR
    - IPV_DST
    linkageType: ''
    returnType: int
    signature: "int pim_mroute_msg_wholepkt(int fd, struct interface *ifp, const char
      *buf,\n\t\t\t    size_t len)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_mroute.c:376,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:393,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:402,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_mroute.c:408,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:412,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_mroute.c:417,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:420,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:443,1
    - Dst: PIM_IF_FLAG_TEST_COULD_ASSERT
      Src: /src/frr/pimd/pim_mroute.c:450,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:452,1
    - Dst: assert_action_a1
      Src: /src/frr/pimd/pim_mroute.c:459,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:461,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 3
    argNames:
    - fd
    - ifp
    - msg
    argTypes:
    - int
    - struct interface*
    - kernmsg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 469
    functionName: pim_mroute_msg_wrongvif
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - pim_ifchannel_find
    - PIM_IF_FLAG_TEST_COULD_ASSERT
    - memset
    - assert_action_a1
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int pim_mroute_msg_wrongvif(int fd, struct interface *ifp, const kernmsg
      *msg)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_mroute.c:484,1
    - Dst: IPV_SRC
      Src: /src/frr/pimd/pim_mroute.c:485,1
    - Dst: IPV_DST
      Src: /src/frr/pimd/pim_mroute.c:486,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_mroute.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:491,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_mroute.c:512,1
    - Dst: RP
      Src: /src/frr/pimd/pim_mroute.c:516,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_mroute.c:529,1
    - Dst: memset
      Src: /src/frr/pimd/pim_mroute.c:535,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_mroute.c:540,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_mroute.c:550,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_mroute.c:551,1
    - Dst: pim_register_stop_send
      Src: /src/frr/pimd/pim_mroute.c:553,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_mroute.c:559,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_mroute.c:561,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_mroute.c:564,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_mroute.c:565,1
    - Dst: pim_register_stop_send
      Src: /src/frr/pimd/pim_mroute.c:568,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_mroute.c:591,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_mroute.c:596,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_mroute.c:598,1
    - Dst: pim_mroute_msg_wholepkt
      Src: /src/frr/pimd/pim_mroute.c:599,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_mroute.c:605,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_mroute.c:606,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:611,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SRC_STREAM
      Src: /src/frr/pimd/pim_mroute.c:616,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_mroute.c:617,1
    - Dst: pim_register_join
      Src: /src/frr/pimd/pim_mroute.c:620,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_mroute.c:621,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_mroute.c:623,1
    - Dst: pim_mroute_msg_wholepkt
      Src: /src/frr/pimd/pim_mroute.c:626,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_mroute.c:628,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_mroute.c:632,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 73
    argCount: 4
    argNames:
    - fd
    - ifp
    - buf
    - len
    argTypes:
    - int
    - struct interface*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 471
    functionDepth: 4
    functionLinenumber: 471
    functionLinenumberEnd: 636
    functionName: pim_mroute_msg_wrvifwhole
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - pim_upstream_add
    - pim_upstream_find
    - pim_register_join
    - pim_upstream_mroute_add
    - IPV_SRC
    - pim_if_connected_to_source
    - IPV_DST
    - pim_upstream_inherited_olist
    - memset
    - pim_addr_is_any
    - zlog_debug
    - pim_upstream_keep_alive_timer_start
    - pim_jp_agg_single_upstream_send
    - PIM_UPSTREAM_FLAG_SET_SRC_STREAM
    - I_am_RP
    - pim_ifchannel_find
    - pim_nexthop_lookup
    - pim_mroute_msg_wholepkt
    - pim_register_stop_send
    - RP
    - PIM_UPSTREAM_FLAG_TEST_FHR
    linkageType: ''
    returnType: int
    signature: "int pim_mroute_msg_wrvifwhole(int fd, struct interface *ifp, const
      char *buf,\n\t\t\t      size_t len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_mroute.c:655,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_mroute.c:660,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_mroute.c:662,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:664,1
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_mroute.c:674,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:677,1
    - Dst: pim_igmp_packet
      Src: /src/frr/pimd/pim_mroute.c:683,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:685,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - pim
    - buf
    - buf_size
    - ifindex
    argTypes:
    - struct pim_instance*
    - char*
    - size_t
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 639
    functionDepth: 4
    functionLinenumber: 639
    functionLinenumberEnd: 690
    functionName: process_igmp_packet
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - pim_addr_is_any
    - pim_igmp_packet
    - zlog_debug
    - pim_igmp_sock_lookup_ifaddr
    - pim_if_connected_to_source
    linkageType: ''
    returnType: int
    signature: "int process_igmp_packet(struct pim_instance *pim, const char *buf,\n\t\t\t
      \      size_t buf_size, ifindex_t ifindex)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_mroute.c:778,1
    - Dst: pim_socket_recvfromto
      Src: /src/frr/pimd/pim_mroute.c:781,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:790,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:793,1
    - Dst: pim_mroute_msg
      Src: /src/frr/pimd/pim_mroute.c:797,1
    - Dst: mroute_read_on
      Src: /src/frr/pimd/pim_mroute.c:805,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 808
    functionName: mroute_read
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - mroute_read_on
    - pim_socket_recvfromto
    - pim_mroute_msg
    - zlog_warn
    - safe_strerror
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void mroute_read(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/pimd/pim_mroute.c:812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 810
    functionDepth: 1
    functionLinenumber: 810
    functionLinenumberEnd: 814
    functionName: mroute_read_on
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 1
    functionsReached:
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void mroute_read_on(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_mroute.c:818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 819
    functionName: mroute_read_off
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void mroute_read_off(struct pim_instance *pim)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_mroute.c:829,1
    - Dst: socket
      Src: /src/frr/pimd/pim_mroute.c:831,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:834,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:836,1
    - Dst: ICMP6_FILTER_SETBLOCKALL
      Src: /src/frr/pimd/pim_mroute.c:856,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:857,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_mroute.c:860,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:870,1
    - Dst: strlen
      Src: /src/frr/pimd/pim_mroute.c:871,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:872,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:873,1
    - Dst: close
      Src: /src/frr/pimd/pim_mroute.c:874,1
    - Dst: pim_mroute_set
      Src: /src/frr/pimd/pim_mroute.c:883,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:884,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:886,1
    - Dst: close
      Src: /src/frr/pimd/pim_mroute.c:887,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_mroute.c:892,1
    - Dst: mroute_read_on
      Src: /src/frr/pimd/pim_mroute.c:894,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 821
    functionDepth: 3
    functionLinenumber: 821
    functionLinenumberEnd: 898
    functionName: pim_mroute_socket_enable
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - strlen
    - mroute_read_on
    - pim_mroute_set
    - socket
    - zlog_err
    - close
    - zlog_warn
    - safe_strerror
    - pim_time_monotonic_sec
    - setsockopt
    - ICMP6_FILTER_SETBLOCKALL
    linkageType: ''
    returnType: int
    signature: int pim_mroute_socket_enable(struct pim_instance *pim)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_mroute.c:829,1
    - Dst: socket
      Src: /src/frr/pimd/pim_mroute.c:831,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:834,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:836,1
    - Dst: ICMP6_FILTER_SETBLOCKALL
      Src: /src/frr/pimd/pim_mroute.c:856,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:857,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_mroute.c:860,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:870,1
    - Dst: strlen
      Src: /src/frr/pimd/pim_mroute.c:871,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:872,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:873,1
    - Dst: close
      Src: /src/frr/pimd/pim_mroute.c:874,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 879
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - strlen
    - socket
    - zlog_err
    - close
    - zlog_warn
    - safe_strerror
    - setsockopt
    - ICMP6_FILTER_SETBLOCKALL
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_mroute_set
      Src: /src/frr/pimd/pim_mroute.c:902,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:903,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:905,1
    - Dst: close
      Src: /src/frr/pimd/pim_mroute.c:909,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:910,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:911,1
    - Dst: mroute_read_off
      Src: /src/frr/pimd/pim_mroute.c:915,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 900
    functionDepth: 3
    functionLinenumber: 900
    functionLinenumberEnd: 919
    functionName: pim_mroute_socket_disable
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - pim_mroute_set
    - close
    - mroute_read_off
    - zlog_warn
    - safe_strerror
    linkageType: ''
    returnType: int
    signature: int pim_mroute_socket_disable(struct pim_instance *pim)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:934,1
    - Dst: memset
      Src: /src/frr/pimd/pim_mroute.c:938,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:945,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_mroute.c:950,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_mroute.c:962,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:969,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:976,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:979,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - ifp
    - ifaddr
    - flags
    argTypes:
    - struct interface*
    - pim_addr
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 984
    functionName: pim_mroute_add_vif
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - memset
    - zlog_debug
    - zlog_warn
    - safe_strerror
    - setsockopt
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_mroute_add_vif(struct interface *ifp, pim_addr ifaddr,\n\t\t
      \      unsigned char flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:993,1
    - Dst: memset
      Src: /src/frr/pimd/pim_mroute.c:997,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:1000,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:1003,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1011
    functionName: pim_mroute_del_vif
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - memset
    - zlog_debug
    - safe_strerror
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int pim_mroute_del_vif(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_ALLOW_IIF_IN_OIL
      Src: /src/frr/pimd/pim_mroute.c:1034,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_mroute.c:1037,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_mroute.c:1044,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - c_oil
    - oif_index
    argTypes:
    - struct channel_oil*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1026
    functionDepth: 1
    functionLinenumber: 1026
    functionLinenumberEnd: 1051
    functionName: pim_mroute_allow_iif_in_oil
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 1
    functionsReached:
    - PIM_I_am_DR
    - PIM_UPSTREAM_FLAG_TEST_ALLOW_IIF_IN_OIL
    - pim_if_find_by_vif_index
    linkageType: ''
    returnType: bool
    signature: "bool pim_mroute_allow_iif_in_oil(struct channel_oil *c_oil,\n\t\tint
      oif_index)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_mroute.c:1058,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_mroute.c:1058,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_mroute.c:1059,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_mroute.c:1059,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1060,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1060,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1063,1
    - Dst: pim_mroute_allow_iif_in_oil
      Src: /src/frr/pimd/pim_mroute.c:1064,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_mroute.c:1065,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_mroute.c:1070,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_mroute.c:1072,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_mroute.c:1072,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - out
    - in
    argTypes:
    - struct channel_oil*
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1053
    functionDepth: 2
    functionLinenumber: 1053
    functionLinenumberEnd: 1074
    functionName: pim_mroute_copy
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - pim_mroute_allow_iif_in_oil
    - oil_mcastgrp
    - oil_parent
    - oil_origin
    - oil_if_set
    - oil_if_has
    linkageType: ''
    returnType: void
    signature: "void pim_mroute_copy(struct channel_oil *out,\n\t\t\t\t   struct channel_oil
      *in)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_mroute.c:1085,1
    - Dst: pim_mroute_copy
      Src: /src/frr/pimd/pim_mroute.c:1091,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_mroute.c:1097,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_mroute.c:1097,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_mroute.c:1098,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1098,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_mroute.c:1108,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_mroute.c:1108,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1109,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1110,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:1113,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_mroute.c:1117,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_mroute.c:1117,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1118,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1119,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1119,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_mroute.c:1120,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_mroute.c:1125,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_mroute.c:1128,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:1134,1
    - Dst: pim_channel_oil_dump
      Src: /src/frr/pimd/pim_mroute.c:1136,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_mroute.c:1141,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - c_oil
    - name
    argTypes:
    - struct channel_oil*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1079
    functionDepth: 3
    functionLinenumber: 1079
    functionLinenumberEnd: 1145
    functionName: pim_mroute_add
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - pim_channel_oil_dump
    - pim_addr_is_any
    - oil_parent
    - oil_origin
    - oil_if_set
    - zlog_warn
    - safe_strerror
    - pim_time_monotonic_sec
    - zlog_debug
    - setsockopt
    - pim_mroute_copy
    linkageType: ''
    returnType: int
    signature: int pim_mroute_add(struct channel_oil *c_oil, const char *name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_mroute.c:1156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - c_oil
    - name
    argTypes:
    - struct channel_oil*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1147
    functionDepth: 1
    functionLinenumber: 1147
    functionLinenumberEnd: 1169
    functionName: pim_upstream_get_mroute_iif
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_USE_RPT
    linkageType: ''
    returnType: int
    signature: "int pim_upstream_get_mroute_iif(struct channel_oil *c_oil,\n\t\tconst
      char *name)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_mroute.c:1176,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mroute.c:1179,1
    - Dst: pim_channel_oil_dump
      Src: /src/frr/pimd/pim_mroute.c:1182,1
    - Dst: pim_mroute_del
      Src: /src/frr/pimd/pim_mroute.c:1190,1
    - Dst: pim_mroute_add
      Src: /src/frr/pimd/pim_mroute.c:1195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - c_oil
    - name
    argTypes:
    - struct channel_oil*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1171
    functionDepth: 4
    functionLinenumber: 1171
    functionLinenumberEnd: 1196
    functionName: pim_upstream_mroute_update
    functionSourceFile: /src/frr/pimd/pim_mroute.c
    functionUses: 1
    functionsReached:
    - pim_mroute_add
    - pim_channel_oil_dump
    - oil_parent
    - pim_mroute_del
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: "int pim_upstream_mroute_update(struct channel_oil *c_oil,\n\t\tconst
      char *name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ch
    - ','
    - ch_oil
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 33
    functionName: PIM_MLAG_ADD_OIF_TO_OIL
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MLAG_ADD_OIF_TO_OIL(ch, ch_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ch
    - ','
    - ch_oil
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 43
    functionName: PIM_MLAG_DEL_OIF_TO_OIL
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_MLAG_DEL_OIF_TO_OIL(ch, ch_oil)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:60,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_mlag.c:63,1
    - Dst: if
      Src: /src/frr/pimd/pim_mlag.c:65,1
    - Dst: PIM_I_am_DualActive
      Src: /src/frr/pimd/pim_mlag.c:65,1
    - Dst: if
      Src: /src/frr/pimd/pim_mlag.c:68,1
    - Dst: PIM_MLAG_ADD_OIF_TO_OIL
      Src: /src/frr/pimd/pim_mlag.c:69,1
    - Dst: PIM_MLAG_DEL_OIF_TO_OIL
      Src: /src/frr/pimd/pim_mlag.c:71,1
    - Dst: pim_mlag_inherit_mlag_flags
      Src: /src/frr/pimd/pim_mlag.c:75,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:86,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_mlag.c:90,1
    - Dst: PIM_I_am_DualActive
      Src: /src/frr/pimd/pim_mlag.c:92,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_mlag.c:95,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:97,1
    - Dst: PIM_MLAG_ADD_OIF_TO_OIL
      Src: /src/frr/pimd/pim_mlag.c:105,1
    - Dst: PIM_MLAG_DEL_OIF_TO_OIL
      Src: /src/frr/pimd/pim_mlag.c:107,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_mlag.c:114,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_mlag.c:118,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:123,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:130,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_MLAG_NON_DF
      Src: /src/frr/pimd/pim_mlag.c:134,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF
      Src: /src/frr/pimd/pim_mlag.c:136,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_mlag.c:143,1
    - Dst: pim_mlag_inherit_mlag_flags
      Src: /src/frr/pimd/pim_mlag.c:144,1
    - Dst: pim_mlag_calculate_df_for_ifchannels
      Src: /src/frr/pimd/pim_mlag.c:145,1
    - Dst: pim_vxlan_get_term_ifp
      Src: /src/frr/pimd/pim_mlag.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - up
    - is_df
    argTypes:
    - struct pim_upstream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 159
    functionName: pim_mlag_calculate_df_for_ifchannels
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 1
    functionsReached:
    - pim_vxlan_get_term_ifp
    - pim_mlag_calculate_df_for_ifchannels
    - ALL_LIST_ELEMENTS_RO
    - PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF
    - pim_mlag_inherit_mlag_flags
    - pim_mlag_up_df_role_update
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - PIM_UPSTREAM_FLAG_UNSET_MLAG_NON_DF
    - zlog_debug
    - PIM_MLAG_ADD_OIF_TO_OIL
    - PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
    - PIM_I_am_DualActive
    - if
    - ALL_LIST_ELEMENTS
    - PIM_MLAG_DEL_OIF_TO_OIL
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_calculate_df_for_ifchannels(struct pim_upstream *up,\n\t\t\t\t\t\t
      bool is_df)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_mlag.c:180,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_mlag.c:187,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_mlag.c:195,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_mlag.c:203,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
      Src: /src/frr/pimd/pim_mlag.c:212,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_mlag.c:213,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_mlag.c:220,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_mlag.c:223,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_mlag.c:226,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 230
    functionName: pim_mlag_up_df_role_elect
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_up_mlag_local_cost
    - pim_mlag_up_df_role_update
    - PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
    - pim_up_mlag_is_local
    linkageType: ''
    returnType: bool
    signature: "bool pim_mlag_up_df_role_elect(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_mlag.c:246,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_mlag.c:247,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_mlag.c:248,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:251,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_mlag.c:257,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:260,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_mlag.c:267,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
      Src: /src/frr/pimd/pim_mlag.c:272,1
    - Dst: pim_upstream_ref
      Src: /src/frr/pimd/pim_mlag.c:273,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_PEER
      Src: /src/frr/pimd/pim_mlag.c:276,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_mlag.c:277,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:282,1
    - Dst: pim_mlag_up_df_role_elect
      Src: /src/frr/pimd/pim_mlag.c:289,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct mlag_mroute_add*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 290
    functionName: pim_mlag_up_peer_add
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_upstream_ref
    - PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
    - memset
    - pim_upstream_add
    - pim_upstream_find
    - PIM_UPSTREAM_FLAG_SET_MLAG_PEER
    - vrf_lookup_by_name
    - zlog_debug
    - htonl
    - pim_mlag_up_df_role_elect
    linkageType: ''
    returnType: void
    signature: void pim_mlag_up_peer_add(struct mlag_mroute_add *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
      Src: /src/frr/pimd/pim_mlag.c:301,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_MLAG_PEER
      Src: /src/frr/pimd/pim_mlag.c:304,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_mlag.c:305,1
    - Dst: pim_mlag_up_df_role_elect
      Src: /src/frr/pimd/pim_mlag.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 310
    functionName: pim_mlag_up_peer_deref
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_UNSET_MLAG_PEER
    - PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
    - pim_upstream_del
    - pim_mlag_up_df_role_elect
    linkageType: ''
    returnType: struct pim_upstream
    signature: "struct pim_upstream *pim_mlag_up_peer_deref(struct pim_instance *pim,\n\t\t\t\t\t\t
      \  struct pim_upstream *up)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_mlag.c:319,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_mlag.c:320,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_mlag.c:321,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:324,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_mlag.c:326,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:329,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_mlag.c:336,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:339,1
    - Dst: pim_mlag_up_peer_deref
      Src: /src/frr/pimd/pim_mlag.c:345,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct mlag_mroute_del*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 346
    functionName: pim_mlag_up_peer_del
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - memset
    - pim_mlag_up_peer_deref
    - pim_upstream_find
    - vrf_lookup_by_name
    - zlog_debug
    - htonl
    linkageType: ''
    returnType: void
    signature: void pim_mlag_up_peer_del(struct mlag_mroute_del *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/pimd/pim_mlag.c:353,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_mlag.c:372,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_mlag.c:374,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
      Src: /src/frr/pimd/pim_mlag.c:375,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_mlag.c:377,1
    - Dst: listnode_head
      Src: /src/frr/pimd/pim_mlag.c:386,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_mlag.c:387,1
    - Dst: pim_mlag_up_peer_deref
      Src: /src/frr/pimd/pim_mlag.c:389,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_mlag.c:395,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_mlag.c:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 351
    functionDepth: 3
    functionLinenumber: 351
    functionLinenumberEnd: 400
    functionName: pim_mlag_up_peer_del_all
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
    - list_delete
    - pim_mlag_up_peer_deref
    - frr_each
    - pim_upstream_del
    - listnode_add
    - list_new
    - listnode_head
    - listnode_delete
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void pim_mlag_up_peer_del_all(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/pimd/pim_mlag.c:414,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:419,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:424,1
    - Dst: stream_put
      Src: /src/frr/pimd/pim_mlag.c:425,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:426,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:426,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:427,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:427,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:429,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_mlag.c:429,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:431,1
    - Dst: stream_putc
      Src: /src/frr/pimd/pim_mlag.c:433,1
    - Dst: stream_putc
      Src: /src/frr/pimd/pim_mlag.c:434,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_mlag.c:434,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:435,1
    - Dst: stream_put
      Src: /src/frr/pimd/pim_mlag.c:437,1
    - Dst: stream_fifo_push_safe
      Src: /src/frr/pimd/pim_mlag.c:439,1
    - Dst: pim_mlag_signal_zpthread
      Src: /src/frr/pimd/pim_mlag.c:440,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 405
    functionDepth: 3
    functionLinenumber: 405
    functionLinenumberEnd: 441
    functionName: pim_mlag_up_local_add_send
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - stream_new
    - stream_put
    - stream_fifo_push_safe
    - pim_mlag_signal_zpthread
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - zlog_debug
    - pim_up_mlag_local_cost
    - ntohl
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_up_local_add_send(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/pimd/pim_mlag.c:452,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:457,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:462,1
    - Dst: stream_put
      Src: /src/frr/pimd/pim_mlag.c:463,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:464,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:464,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:465,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:465,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:467,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_mlag.c:468,1
    - Dst: stream_put
      Src: /src/frr/pimd/pim_mlag.c:470,1
    - Dst: stream_fifo_push_safe
      Src: /src/frr/pimd/pim_mlag.c:473,1
    - Dst: pim_mlag_signal_zpthread
      Src: /src/frr/pimd/pim_mlag.c:474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 443
    functionDepth: 3
    functionLinenumber: 443
    functionLinenumberEnd: 475
    functionName: pim_mlag_up_local_del_send
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - stream_new
    - stream_put
    - stream_fifo_push_safe
    - pim_mlag_signal_zpthread
    - zlog_debug
    - ntohl
    - stream_putl
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_up_local_del_send(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_mlag_up_df_role_elect
      Src: /src/frr/pimd/pim_mlag.c:482,1
    - Dst: pim_mlag_up_local_add_send
      Src: /src/frr/pimd/pim_mlag.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 479
    functionDepth: 4
    functionLinenumber: 479
    functionLinenumberEnd: 485
    functionName: pim_mlag_up_local_add
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_mlag_up_local_add_send
    - pim_mlag_up_df_role_elect
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_up_local_add(struct pim_instance *pim,\n\t\tstruct pim_upstream
      *up)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_mlag_up_df_role_elect
      Src: /src/frr/pimd/pim_mlag.c:491,1
    - Dst: pim_mlag_up_local_del_send
      Src: /src/frr/pimd/pim_mlag.c:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 488
    functionDepth: 4
    functionLinenumber: 488
    functionLinenumberEnd: 493
    functionName: pim_mlag_up_local_del
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_mlag_up_local_del_send
    - pim_mlag_up_df_role_elect
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_up_local_del(struct pim_instance *pim,\n\t\tstruct pim_upstream
      *up)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_mlag.c:504,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_mlag.c:506,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_mlag.c:507,1
    - Dst: pim_mlag_up_local_add_send
      Src: /src/frr/pimd/pim_mlag.c:508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 498
    functionDepth: 4
    functionLinenumber: 498
    functionLinenumberEnd: 511
    functionName: pim_mlag_up_local_replay
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - pim_up_mlag_is_local
    - pim_mlag_up_local_add_send
    - frr_each
    linkageType: ''
    returnType: void
    signature: void pim_mlag_up_local_replay(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:523,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_mlag.c:525,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_mlag.c:527,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_mlag.c:528,1
    - Dst: pim_mlag_up_df_role_elect
      Src: /src/frr/pimd/pim_mlag.c:531,1
    - Dst: pim_mlag_up_local_add_send
      Src: /src/frr/pimd/pim_mlag.c:533,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - mlagd_send
    - reason_code
    argTypes:
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 516
    functionDepth: 4
    functionLinenumber: 516
    functionLinenumberEnd: 536
    functionName: pim_mlag_up_local_reeval
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_mlag_up_local_add_send
    - frr_each
    - zlog_debug
    - pim_up_mlag_is_local
    - RB_FOREACH
    - pim_mlag_up_df_role_elect
    linkageType: ''
    returnType: void
    signature: void pim_mlag_up_local_reeval(bool mlagd_send, const char *reason_code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_mlag_update
      Src: /src/frr/pimd/pim_mlag.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 549
    functionName: pim_mlag_vxlan_state_update
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_mlag_update
    linkageType: ''
    returnType: void
    signature: void pim_mlag_vxlan_state_update(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:565,1
    - Dst: mlag_role2str
      Src: /src/frr/pimd/pim_mlag.c:567,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:573,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_mlag.c:586,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_mlag.c:592,1
    - Dst: pim_mlag_vxlan_state_update
      Src: /src/frr/pimd/pim_mlag.c:621,1
    - Dst: pim_mlag_up_local_reeval
      Src: /src/frr/pimd/pim_mlag.c:623,1
    - Dst: pim_mlag_up_local_replay
      Src: /src/frr/pimd/pim_mlag.c:625,1
    - Dst: pim_mlag_vxlan_state_update
      Src: /src/frr/pimd/pim_mlag.c:630,1
    - Dst: pim_mlag_up_local_reeval
      Src: /src/frr/pimd/pim_mlag.c:637,1
    - Dst: pim_mlag_up_local_reeval
      Src: /src/frr/pimd/pim_mlag.c:644,1
    - Dst: pim_mlag_up_local_reeval
      Src: /src/frr/pimd/pim_mlag.c:648,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct mlag_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 556
    functionDepth: 5
    functionLinenumber: 556
    functionLinenumberEnd: 650
    functionName: pim_mlag_process_mlagd_state_change
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_mlag_up_local_reeval
    - if_lookup_by_name
    - pim_mlag_vxlan_state_update
    - strlcpy
    - mlag_role2str
    - zlog_debug
    - pim_mlag_up_local_replay
    linkageType: ''
    returnType: void
    signature: void pim_mlag_process_mlagd_state_change(struct mlag_status msg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:655,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:661,1
    - Dst: pim_mlag_up_local_reeval
      Src: /src/frr/pimd/pim_mlag.c:675,1
    - Dst: pim_mlag_up_local_reeval
      Src: /src/frr/pimd/pim_mlag.c:683,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct mlag_frr_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 652
    functionDepth: 5
    functionLinenumber: 652
    functionLinenumberEnd: 687
    functionName: pim_mlag_process_peer_frr_state_change
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_mlag_up_local_reeval
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_mlag_process_peer_frr_state_change(struct mlag_frr_status
      msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:697,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_mlag.c:703,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_mlag.c:704,1
    - Dst: pim_mlag_vxlan_state_update
      Src: /src/frr/pimd/pim_mlag.c:707,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_mlag.c:711,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_mlag.c:713,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:716,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct mlag_vxlan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 689
    functionDepth: 2
    functionLinenumber: 689
    functionLinenumberEnd: 719
    functionName: pim_mlag_process_vxlan_update
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - htonl
    - inet_ntop
    - zlog_debug
    - pim_mlag_vxlan_state_update
    linkageType: ''
    returnType: void
    signature: void pim_mlag_process_vxlan_update(struct mlag_vxlan *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:726,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:727,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:729,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:733,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:741,1
    - Dst: pim_mlag_up_peer_add
      Src: /src/frr/pimd/pim_mlag.c:748,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct mlag_mroute_add
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 721
    functionDepth: 3
    functionLinenumber: 721
    functionLinenumberEnd: 749
    functionName: pim_mlag_process_mroute_add
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ntohl
    - pim_mlag_up_peer_add
    linkageType: ''
    returnType: void
    signature: void pim_mlag_process_mroute_add(struct mlag_mroute_add msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:756,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_mlag.c:757,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:758,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:762,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:768,1
    - Dst: pim_mlag_up_peer_del
      Src: /src/frr/pimd/pim_mlag.c:775,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct mlag_mroute_del
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 751
    functionDepth: 4
    functionLinenumber: 751
    functionLinenumberEnd: 776
    functionName: pim_mlag_process_mroute_del
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - ntohl
    - pim_mlag_up_peer_del
    linkageType: ''
    returnType: void
    signature: void pim_mlag_process_mroute_del(struct mlag_mroute_del msg)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: mlag_lib_decode_mlag_hdr
      Src: /src/frr/pimd/pim_mlag.c:787,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:792,1
    - Dst: mlag_lib_msgid_to_str
      Src: /src/frr/pimd/pim_mlag.c:794,1
    - Dst: mlag_lib_decode_mlag_status
      Src: /src/frr/pimd/pim_mlag.c:802,1
    - Dst: pim_mlag_process_mlagd_state_change
      Src: /src/frr/pimd/pim_mlag.c:805,1
    - Dst: mlag_lib_decode_frr_status
      Src: /src/frr/pimd/pim_mlag.c:810,1
    - Dst: pim_mlag_process_peer_frr_state_change
      Src: /src/frr/pimd/pim_mlag.c:813,1
    - Dst: mlag_lib_decode_vxlan_update
      Src: /src/frr/pimd/pim_mlag.c:818,1
    - Dst: pim_mlag_process_vxlan_update
      Src: /src/frr/pimd/pim_mlag.c:821,1
    - Dst: mlag_lib_decode_mroute_add
      Src: /src/frr/pimd/pim_mlag.c:826,1
    - Dst: pim_mlag_process_mroute_add
      Src: /src/frr/pimd/pim_mlag.c:829,1
    - Dst: mlag_lib_decode_mroute_del
      Src: /src/frr/pimd/pim_mlag.c:834,1
    - Dst: pim_mlag_process_mroute_del
      Src: /src/frr/pimd/pim_mlag.c:837,1
    - Dst: mlag_lib_decode_mroute_add
      Src: /src/frr/pimd/pim_mlag.c:844,1
    - Dst: pim_mlag_process_mroute_add
      Src: /src/frr/pimd/pim_mlag.c:847,1
    - Dst: mlag_lib_decode_mroute_del
      Src: /src/frr/pimd/pim_mlag.c:855,1
    - Dst: pim_mlag_process_mroute_del
      Src: /src/frr/pimd/pim_mlag.c:858,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 68
    argCount: 4
    argNames:
    - cmd
    - zclient
    - zapi_length
    - vrf_id
    argTypes:
    - int
    - struct zclient*
    - uint16_t
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 778
    functionDepth: 6
    functionLinenumber: 778
    functionLinenumberEnd: 869
    functionName: pim_zebra_mlag_handle_msg
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - mlag_lib_decode_mlag_hdr
    - mlag_lib_decode_frr_status
    - mlag_lib_decode_mlag_status
    - pim_mlag_process_vxlan_update
    - mlag_lib_decode_mroute_add
    - zlog_debug
    - pim_mlag_process_mroute_del
    - pim_mlag_process_mroute_add
    - pim_mlag_process_peer_frr_state_change
    - pim_mlag_process_mlagd_state_change
    - mlag_lib_decode_vxlan_update
    - mlag_lib_msgid_to_str
    - mlag_lib_decode_mroute_del
    linkageType: ''
    returnType: int
    signature: "int pim_zebra_mlag_handle_msg(int cmd, struct zclient *zclient,\n\t\t\t
      \     uint16_t zapi_length, vrf_id_t vrf_id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:876,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 873
    functionDepth: 1
    functionLinenumber: 873
    functionLinenumberEnd: 885
    functionName: pim_zebra_mlag_process_up
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int pim_zebra_mlag_process_up(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_mlag.c:896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 898
    functionName: pim_mlag_param_reset
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void pim_mlag_param_reset(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:903,1
    - Dst: pim_mlag_param_reset
      Src: /src/frr/pimd/pim_mlag.c:913,1
    - Dst: pim_mlag_up_local_reeval
      Src: /src/frr/pimd/pim_mlag.c:915,1
    - Dst: pim_mlag_up_peer_del_all
      Src: /src/frr/pimd/pim_mlag.c:917,1
    - Dst: pim_mlag_vxlan_state_update
      Src: /src/frr/pimd/pim_mlag.c:919,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 900
    functionDepth: 5
    functionLinenumber: 900
    functionLinenumberEnd: 921
    functionName: pim_zebra_mlag_process_down
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_mlag_param_reset
    - pim_mlag_up_local_reeval
    - pim_mlag_vxlan_state_update
    - pim_mlag_up_peer_del_all
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int pim_zebra_mlag_process_down(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:930,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:931,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:932,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:933,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:934,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:935,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:936,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:937,1
    - Dst: SET_FLAG
      Src: /src/frr/pimd/pim_mlag.c:938,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:941,1
    - Dst: zclient_send_mlag_register
      Src: /src/frr/pimd/pim_mlag.c:944,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 923
    functionDepth: 5
    functionLinenumber: 923
    functionLinenumberEnd: 945
    functionName: pim_mlag_register_handler
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - SET_FLAG
    - zlog_debug
    - zclient_send_mlag_register
    linkageType: ''
    returnType: void
    signature: void pim_mlag_register_handler(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/pimd/pim_mlag.c:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 956
    functionName: pim_mlag_register
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void pim_mlag_register(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:964,1
    - Dst: zclient_send_mlag_deregister
      Src: /src/frr/pimd/pim_mlag.c:967,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 958
    functionDepth: 6
    functionLinenumber: 958
    functionLinenumberEnd: 968
    functionName: pim_mlag_deregister_handler
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - zclient_send_mlag_deregister
    linkageType: ''
    returnType: void
    signature: void pim_mlag_deregister_handler(struct event *thread)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_do_mlag_reg
      Src: /src/frr/pimd/pim_mlag.c:973,1
    - Dst: event_add_event
      Src: /src/frr/pimd/pim_mlag.c:982,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 984
    functionName: pim_mlag_deregister
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_do_mlag_reg
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void pim_mlag_deregister(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:992,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:1001,1
    - Dst: pim_mlag_register
      Src: /src/frr/pimd/pim_mlag.c:1011,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1013
    functionName: pim_if_configure_mlag_dualactive
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_mlag_register
    linkageType: ''
    returnType: void
    signature: void pim_if_configure_mlag_dualactive(struct pim_interface *pim_ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:1021,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_mlag.c:1029,1
    - Dst: pim_mlag_deregister
      Src: /src/frr/pimd/pim_mlag.c:1039,1
    - Dst: pim_mlag_param_reset
      Src: /src/frr/pimd/pim_mlag.c:1040,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1015
    functionDepth: 2
    functionLinenumber: 1015
    functionLinenumberEnd: 1042
    functionName: pim_if_unconfigure_mlag_dualactive
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - pim_mlag_param_reset
    - zlog_debug
    - pim_mlag_deregister
    linkageType: ''
    returnType: void
    signature: void pim_if_unconfigure_mlag_dualactive(struct pim_interface *pim_ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1051
    functionName: pim_instance_mlag_init
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_instance_mlag_init(struct pim_instance *pim)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_mlag.c:1061,1
    - Dst: pim_if_unconfigure_mlag_dualactive
      Src: /src/frr/pimd/pim_mlag.c:1067,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1070
    functionName: pim_instance_mlag_terminate
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - pim_if_unconfigure_mlag_dualactive
    linkageType: ''
    returnType: void
    signature: void pim_instance_mlag_terminate(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/pimd/pim_mlag.c:1074,1
    - Dst: stream_fifo_free
      Src: /src/frr/pimd/pim_mlag.c:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1072
    functionDepth: 4
    functionLinenumber: 1072
    functionLinenumberEnd: 1078
    functionName: pim_mlag_terminate
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 1
    functionsReached:
    - stream_free
    - stream_fifo_free
    linkageType: ''
    returnType: void
    signature: void pim_mlag_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_mlag_param_reset
      Src: /src/frr/pimd/pim_mlag.c:1082,1
    - Dst: stream_fifo_new
      Src: /src/frr/pimd/pim_mlag.c:1085,1
    - Dst: stream_new
      Src: /src/frr/pimd/pim_mlag.c:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1088
    functionName: pim_mlag_init
    functionSourceFile: /src/frr/pimd/pim_mlag.c
    functionUses: 1
    functionsReached:
    - pim_mlag_param_reset
    - stream_new
    - stream_fifo_new
    linkageType: ''
    returnType: void
    signature: void pim_mlag_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - qrv
    - ','
    - qqi
    - ','
    - qri_dsec
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: PIM_IGMP_GMI_MSEC
    functionSourceFile: /src/frr/pimd/pim_igmpv3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IGMP_GMI_MSEC(qrv,qqi,qri_dsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - qrv
    - ','
    - qqi
    - ','
    - qri_dsec
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: PIM_IGMP_OQPI_MSEC
    functionSourceFile: /src/frr/pimd/pim_igmpv3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IGMP_OQPI_MSEC(qrv,qqi,qri_dsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - qi
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: PIM_IGMP_SQI
    functionSourceFile: /src/frr/pimd/pim_igmpv3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IGMP_SQI(qi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - lmqi_dsec
    - ','
    - lmqc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: PIM_IGMP_LMQT_MSEC
    functionSourceFile: /src/frr/pimd/pim_igmpv3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IGMP_LMQT_MSEC(lmqi_dsec, lmqc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - qrv
    - ','
    - qqi
    - ','
    - qri_dsec
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: PIM_IGMP_OHPI_DSEC
    functionSourceFile: /src/frr/pimd/pim_igmpv3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IGMP_OHPI_DSEC(qrv,qqi,qri_dsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: igmp_group_reset_gmi
    functionSourceFile: /src/frr/pimd/pim_igmpv3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void igmp_group_reset_gmi(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - group
    - source
    argTypes:
    - struct gm_group*
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: igmp_source_reset_gmi
    functionSourceFile: /src/frr/pimd/pim_igmpv3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void igmp_source_reset_gmi(struct gm_group *group,\n\t\t\t\t\t struct
      gm_source *source)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_bfd.c:39,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_bfd.c:44,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_bfd.c:47,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 49
    functionName: pim_bfd_write_config
    functionSourceFile: /src/frr/pimd/pim_bfd.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pim_bfd_write_config(struct vty *vty, struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bfd.c:57,1
    - Dst: bfd_get_status_str
      Src: /src/frr/pimd/pim_bfd.c:58,1
    - Dst: bfd_get_status_str
      Src: /src/frr/pimd/pim_bfd.c:59,1
    - Dst: pim_neighbor_delete
      Src: /src/frr/pimd/pim_bfd.c:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - bsp
    - bss
    - arg
    argTypes:
    - struct bfd_session_params*
    - struct bfd_session_status*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 65
    functionName: pim_neighbor_bfd_cb
    functionSourceFile: /src/frr/pimd/pim_bfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_neighbor_delete
    - bfd_get_status_str
    linkageType: ''
    returnType: void
    signature: "void pim_neighbor_bfd_cb(struct bfd_session_params *bsp,\n\t\t\t\tconst
      struct bfd_session_status *bss, void *arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bfd_sess_new
      Src: /src/frr/pimd/pim_bfd.c:78,1
    - Dst: bfd_sess_set_timers
      Src: /src/frr/pimd/pim_bfd.c:80,1
    - Dst: bfd_sess_set_ipv4_addrs
      Src: /src/frr/pimd/pim_bfd.c:84,1
    - Dst: bfd_sess_set_ipv6_addrs
      Src: /src/frr/pimd/pim_bfd.c:86,1
    - Dst: bfd_sess_set_interface
      Src: /src/frr/pimd/pim_bfd.c:88,1
    - Dst: bfd_sess_set_vrf
      Src: /src/frr/pimd/pim_bfd.c:89,1
    - Dst: bfd_sess_set_profile
      Src: /src/frr/pimd/pim_bfd.c:90,1
    - Dst: bfd_sess_install
      Src: /src/frr/pimd/pim_bfd.c:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - pim_ifp
    - neigh
    argTypes:
    - struct pim_interface*
    - struct pim_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 70
    functionDepth: 3
    functionLinenumber: 70
    functionLinenumberEnd: 92
    functionName: pim_bfd_info_nbr_create
    functionSourceFile: /src/frr/pimd/pim_bfd.c
    functionUses: 0
    functionsReached:
    - bfd_sess_set_profile
    - bfd_sess_new
    - bfd_sess_install
    - bfd_sess_set_ipv4_addrs
    - bfd_sess_set_timers
    - bfd_sess_set_interface
    - bfd_sess_set_vrf
    - bfd_sess_set_ipv6_addrs
    linkageType: ''
    returnType: void
    signature: "void pim_bfd_info_nbr_create(struct pim_interface *pim_ifp,\n\t\t\t
      \    struct pim_neighbor *neigh)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_bfd.c:110,1
    - Dst: pim_bfd_info_nbr_create
      Src: /src/frr/pimd/pim_bfd.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 100
    functionDepth: 4
    functionLinenumber: 100
    functionLinenumberEnd: 121
    functionName: pim_bfd_reg_dereg_all_nbr
    functionSourceFile: /src/frr/pimd/pim_bfd.c
    functionUses: 0
    functionsReached:
    - pim_bfd_info_nbr_create
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: void pim_bfd_reg_dereg_all_nbr(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_join.h:39,1
    - Dst: htons
      Src: /src/frr/pimd/pim_igmp_join.h:43,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp_join.h:44,1
    - Dst: htons
      Src: /src/frr/pimd/pim_igmp_join.h:48,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp_join.h:49,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp_join.h:53,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_igmp_join.h:54,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_igmp_join.h:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - fd
    - ifindex
    - group_addr
    - source_addr
    argTypes:
    - int
    - ifindex_t
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 59
    functionName: pim_gm_join_source
    functionSourceFile: /src/frr/pimd/pim_igmp_join.h
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - pim_addr_is_any
    - setsockopt
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_gm_join_source(int fd, ifindex_t ifindex,\n\t\t\t\t     pim_addr
      group_addr, pim_addr source_addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_join.h:68,1
    - Dst: htons
      Src: /src/frr/pimd/pim_igmp_join.h:72,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp_join.h:73,1
    - Dst: htons
      Src: /src/frr/pimd/pim_igmp_join.h:77,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp_join.h:78,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp_join.h:82,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_igmp_join.h:83,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_igmp_join.h:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - fd
    - ifindex
    - group_addr
    - source_addr
    argTypes:
    - int
    - ifindex_t
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 88
    functionName: pim_gm_join_source
    functionSourceFile: /src/frr/pimd/pim_igmp_join.h
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - pim_addr_is_any
    - setsockopt
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_gm_join_source(int fd, ifindex_t ifindex,\n\t\t\t\t     pim_addr
      group_addr, pim_addr source_addr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/frr/pimd/mtracebis_routeget.c:26,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/pimd/mtracebis_routeget.c:30,1
    - Dst: fprintf
      Src: /src/frr/pimd/mtracebis_routeget.c:32,1
    - Dst: parse_rtattr
      Src: /src/frr/pimd/mtracebis_routeget.c:36,1
    - Dst: RTM_RTA
      Src: /src/frr/pimd/mtracebis_routeget.c:36,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_routeget.c:38,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_routeget.c:40,1
    - Dst: RTA_DATA
      Src: /src/frr/pimd/mtracebis_routeget.c:42,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - n
    - src
    - gw
    argTypes:
    - struct nlmsghdr*
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 24
    functionDepth: 2
    functionLinenumber: 24
    functionLinenumberEnd: 44
    functionName: find_dst
    functionSourceFile: /src/frr/pimd/mtracebis_routeget.c
    functionUses: 0
    functionsReached:
    - RTM_RTA
    - NLMSG_DATA
    - fprintf
    - RTA_DATA
    - parse_rtattr
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int find_dst(struct nlmsghdr *n, struct in_addr *src, struct in_addr
      *gw)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/mtracebis_routeget.c:56,1
    - Dst: NLMSG_LENGTH
      Src: /src/frr/pimd/mtracebis_routeget.c:58,1
    - Dst: addattr_l
      Src: /src/frr/pimd/mtracebis_routeget.c:70,1
    - Dst: rtnl_open
      Src: /src/frr/pimd/mtracebis_routeget.c:73,1
    - Dst: rtnl_talk
      Src: /src/frr/pimd/mtracebis_routeget.c:78,1
    - Dst: find_dst
      Src: /src/frr/pimd/mtracebis_routeget.c:83,1
    - Dst: rtnl_close
      Src: /src/frr/pimd/mtracebis_routeget.c:85,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - dst
    - src
    - gw
    argTypes:
    - struct in_addr
    - struct in_addr*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 46
    functionDepth: 3
    functionLinenumber: 46
    functionLinenumberEnd: 87
    functionName: routeget
    functionSourceFile: /src/frr/pimd/mtracebis_routeget.c
    functionUses: 1
    functionsReached:
    - memset
    - rtnl_talk
    - rtnl_close
    - addattr_l
    - find_dst
    - rtnl_open
    - NLMSG_LENGTH
    linkageType: ''
    returnType: int
    signature: int routeget(struct in_addr dst, struct in_addr *src, struct in_addr
      *gw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_bsm.c:49,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_bsm.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 53
    functionName: pim_bsm_write_config
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pim_bsm_write_config(struct vty *vty, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_bsm.c:57,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_bsm.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bsrp_info
    argTypes:
    - struct bsm_rpinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: pim_bsm_rpinfo_free
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_bsm_rpinfo_free(struct bsm_rpinfo *bsrp_info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsm_rpinfos_pop
      Src: /src/frr/pimd/pim_bsm.c:65,1
    - Dst: pim_bsm_rpinfo_free
      Src: /src/frr/pimd/pim_bsm.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - head
    argTypes:
    - struct bsm_rpinfos_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 67
    functionName: pim_bsm_rpinfos_free
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_bsm_rpinfo_free
    - bsm_rpinfos_pop
    linkageType: ''
    returnType: void
    signature: void pim_bsm_rpinfos_free(struct bsm_rpinfos_head *head)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_bsm_rpinfos_free
      Src: /src/frr/pimd/pim_bsm.c:71,1
    - Dst: pim_bsm_rpinfos_free
      Src: /src/frr/pimd/pim_bsm.c:72,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_bsm.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bsgrp_node
    argTypes:
    - struct bsgrp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: pim_free_bsgrp_data
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_bsm_rpinfos_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_free_bsgrp_data(struct bsgrp_node *bsgrp_node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/pimd/pim_bsm.c:80,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:83,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - rt
    - grp
    argTypes:
    - struct route_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 76
    functionDepth: 5
    functionLinenumber: 76
    functionLinenumberEnd: 86
    functionName: pim_free_bsgrp_node
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - route_node_lookup
    linkageType: ''
    returnType: void
    signature: void pim_free_bsgrp_node(struct route_table *rt, struct prefix *grp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pim_bsm.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bsfrag
    argTypes:
    - struct bsm_frag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: pim_bsm_frag_free
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_bsm_frag_free(struct bsm_frag *bsfrag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bsm_frags_pop
      Src: /src/frr/pimd/pim_bsm.c:97,1
    - Dst: pim_bsm_frag_free
      Src: /src/frr/pimd/pim_bsm.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - scope
    argTypes:
    - struct bsm_scope*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: pim_bsm_frags_free
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - bsm_frags_pop
    - pim_bsm_frag_free
    linkageType: ''
    returnType: void
    signature: void pim_bsm_frags_free(struct bsm_scope *scope)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_bsm.c:119,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct bsm_rpinfo*
    - struct bsm_rpinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 120
    functionName: pim_bsm_rpinfo_cmp
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int pim_bsm_rpinfo_cmp(const struct bsm_rpinfo *node1,\n\t\t       const
      struct bsm_rpinfo *node2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: route_node_get
      Src: /src/frr/pimd/pim_bsm.c:128,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_bsm.c:130,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_bsm.c:133,1
    - Dst: bsm_rpinfos_init
      Src: /src/frr/pimd/pim_bsm.c:136,1
    - Dst: bsm_rpinfos_init
      Src: /src/frr/pimd/pim_bsm.c:137,1
    - Dst: prefix_copy
      Src: /src/frr/pimd/pim_bsm.c:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - rt
    - grp
    argTypes:
    - struct route_table*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 122
    functionDepth: 5
    functionLinenumber: 122
    functionLinenumberEnd: 141
    functionName: pim_bsm_new_bsgrp_node
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - zlog_warn
    - route_node_get
    - bsm_rpinfos_init
    - prefix_copy
    linkageType: ''
    returnType: struct bsgrp_node
    signature: "struct bsgrp_node *pim_bsm_new_bsgrp_node(struct route_table *rt,\n\t\t\t\t\t\t
      struct prefix *grp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_bsm.c:150,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_bsm.c:151,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:154,1
    - Dst: pim_nht_bsr_del
      Src: /src/frr/pimd/pim_bsm.c:157,1
    - Dst: pim_bsm_frags_free
      Src: /src/frr/pimd/pim_bsm.c:165,1
    - Dst: route_top
      Src: /src/frr/pimd/pim_bsm.c:167,1
    - Dst: route_next
      Src: /src/frr/pimd/pim_bsm.c:167,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:172,1
    - Dst: bsm_rpinfos_first
      Src: /src/frr/pimd/pim_bsm.c:176,1
    - Dst: pim_g2rp_timer_restart
      Src: /src/frr/pimd/pim_bsm.c:178,1
    - Dst: pim_bsm_rpinfos_free
      Src: /src/frr/pimd/pim_bsm.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 143
    functionDepth: 8
    functionLinenumber: 143
    functionLinenumberEnd: 184
    functionName: pim_on_bs_timer
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_g2rp_timer_restart
    - route_top
    - route_next
    - bsm_rpinfos_first
    - zlog_debug
    - EVENT_OFF
    - pim_bsm_rpinfos_free
    - pim_nht_bsr_del
    - EVENT_ARG
    - pim_bsm_frags_free
    linkageType: ''
    returnType: void
    signature: void pim_on_bs_timer(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:189,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_bsm.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - scope
    argTypes:
    - struct bsm_scope*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 192
    functionName: pim_bs_timer_stop
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_bs_timer_stop(struct bsm_scope *scope)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:198,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_bsm.c:201,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:203,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_bsm.c:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - scope
    - bs_timeout
    argTypes:
    - struct bsm_scope*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 208
    functionName: pim_bs_timer_start
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_bs_timer_start(struct bsm_scope *scope, int bs_timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_bs_timer_start
      Src: /src/frr/pimd/pim_bsm.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - scope
    - bs_timeout
    argTypes:
    - struct bsm_scope*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: pim_bs_timer_restart
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_bs_timer_start
    linkageType: ''
    returnType: void
    signature: void pim_bs_timer_restart(struct bsm_scope *scope, int bs_timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_bsm.c:217,1
    - Dst: route_table_init
      Src: /src/frr/pimd/pim_bsm.c:220,1
    - Dst: bsm_frags_init
      Src: /src/frr/pimd/pim_bsm.c:224,1
    - Dst: pim_bs_timer_start
      Src: /src/frr/pimd/pim_bsm.c:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 226
    functionName: pim_bsm_proc_init
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - route_table_init
    - bsm_frags_init
    - pim_bs_timer_start
    - memset
    linkageType: ''
    returnType: void
    signature: void pim_bsm_proc_init(struct pim_instance *pim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_bs_timer_stop
      Src: /src/frr/pimd/pim_bsm.c:233,1
    - Dst: pim_bsm_frags_free
      Src: /src/frr/pimd/pim_bsm.c:234,1
    - Dst: route_top
      Src: /src/frr/pimd/pim_bsm.c:236,1
    - Dst: route_next
      Src: /src/frr/pimd/pim_bsm.c:237,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:241,1
    - Dst: route_table_finish
      Src: /src/frr/pimd/pim_bsm.c:244,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 245
    functionName: pim_bsm_proc_free
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_free_bsgrp_data
    - route_table_finish
    - route_top
    - pim_bs_timer_stop
    - route_next
    - pim_bsm_frags_free
    linkageType: ''
    returnType: void
    signature: void pim_bsm_proc_free(struct pim_instance *pim)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 257
    functionName: is_hold_time_elapsed
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_hold_time_elapsed(void *data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_bsm.c:270,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_bsm.c:271,1
    - Dst: frr_each_safe
      Src: /src/frr/pimd/pim_bsm.c:279,1
    - Dst: is_hold_time_elapsed
      Src: /src/frr/pimd/pim_bsm.c:282,1
    - Dst: bsm_rpinfos_del
      Src: /src/frr/pimd/pim_bsm.c:283,1
    - Dst: pim_bsm_rpinfo_free
      Src: /src/frr/pimd/pim_bsm.c:284,1
    - Dst: bsm_rpinfos_first
      Src: /src/frr/pimd/pim_bsm.c:289,1
    - Dst: route_node_lookup
      Src: /src/frr/pimd/pim_bsm.c:291,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_bsm.c:294,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:301,1
    - Dst: pim_g2rp_timer_start
      Src: /src/frr/pimd/pim_bsm.c:308,1
    - Dst: pim_rp_change
      Src: /src/frr/pimd/pim_bsm.c:310,1
    - Dst: pim_rp_del
      Src: /src/frr/pimd/pim_bsm.c:313,1
    - Dst: bsm_rpinfos_count
      Src: /src/frr/pimd/pim_bsm.c:318,1
    - Dst: bsm_rpinfos_count
      Src: /src/frr/pimd/pim_bsm.c:319,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:320,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:322,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 259
    functionDepth: 6
    functionLinenumber: 259
    functionLinenumberEnd: 324
    functionName: pim_on_g2rp_timer
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_free_bsgrp_data
    - route_unlock_node
    - route_node_lookup
    - pim_g2rp_timer_start
    - pim_rp_del
    - pim_bsm_rpinfo_free
    - is_hold_time_elapsed
    - pim_rp_change
    - bsm_rpinfos_count
    - bsm_rpinfos_first
    - zlog_warn
    - EVENT_OFF
    - bsm_rpinfos_del
    - frr_each_safe
    - pim_free_bsgrp_node
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_on_g2rp_timer(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:330,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_bsm.c:333,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:335,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_bsm.c:340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - bsrp
    - hold_time
    argTypes:
    - struct bsm_rpinfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 342
    functionName: pim_g2rp_timer_start
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_g2rp_timer_start(struct bsm_rpinfo *bsrp, int hold_time)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_g2rp_timer_start
      Src: /src/frr/pimd/pim_bsm.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bsrp
    - hold_time
    argTypes:
    - struct bsm_rpinfo*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 348
    functionName: pim_g2rp_timer_restart
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 1
    functionsReached:
    - pim_g2rp_timer_start
    linkageType: ''
    returnType: void
    signature: "void pim_g2rp_timer_restart(struct bsm_rpinfo *bsrp,\n\t\t\t\t\t  int
      hold_time)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:356,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_bsm.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - bsrp
    argTypes:
    - struct bsm_rpinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 361
    functionName: pim_g2rp_timer_stop
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_g2rp_timer_stop(struct bsm_rpinfo *bsrp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 373
    functionName: is_hold_time_zero
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_hold_time_zero(void *data)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: bsm_rpinfos_first
      Src: /src/frr/pimd/pim_bsm.c:387,1
    - Dst: frr_each_safe
      Src: /src/frr/pimd/pim_bsm.c:390,1
    - Dst: is_hold_time_zero
      Src: /src/frr/pimd/pim_bsm.c:391,1
    - Dst: bsm_rpinfos_del
      Src: /src/frr/pimd/pim_bsm.c:392,1
    - Dst: pim_bsm_rpinfo_free
      Src: /src/frr/pimd/pim_bsm.c:393,1
    - Dst: bsm_rpinfos_first
      Src: /src/frr/pimd/pim_bsm.c:397,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_bsm.c:399,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_bsm.c:402,1
    - Dst: route_node_lookup
      Src: /src/frr/pimd/pim_bsm.c:403,1
    - Dst: pim_g2rp_timer_start
      Src: /src/frr/pimd/pim_bsm.c:406,1
    - Dst: prefix_same
      Src: /src/frr/pimd/pim_bsm.c:412,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_bsm.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:415,1
    - Dst: pim_rp_new
      Src: /src/frr/pimd/pim_bsm.c:417,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:423,1
    - Dst: pim_rp_new
      Src: /src/frr/pimd/pim_bsm.c:425,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:433,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:435,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:441,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_bsm.c:444,1
    - Dst: pim_rp_change
      Src: /src/frr/pimd/pim_bsm.c:445,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:452,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:456,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:458,1
    - Dst: pim_rp_del
      Src: /src/frr/pimd/pim_bsm.c:464,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:466,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:469,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:472,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:479,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:485,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:488,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:490,1
    - Dst: bsm_rpinfos_swap_all
      Src: /src/frr/pimd/pim_bsm.c:504,1
    - Dst: pim_g2rp_timer_stop
      Src: /src/frr/pimd/pim_bsm.c:508,1
    - Dst: pim_bsm_rpinfos_free
      Src: /src/frr/pimd/pim_bsm.c:509,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 74
    argCount: 1
    argNames:
    - bsgrp_node
    argTypes:
    - struct bsgrp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 375
    functionDepth: 6
    functionLinenumber: 375
    functionLinenumberEnd: 510
    functionName: pim_instate_pend_list
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - bsm_rpinfos_swap_all
    - pim_rp_new
    - pim_rp_find_match_group
    - bsm_rpinfos_first
    - pim_free_bsgrp_node
    - bsm_rpinfos_del
    - frr_each_safe
    - pim_g2rp_timer_stop
    - is_hold_time_zero
    - route_node_lookup
    - pim_get_all_mcast_group
    - zlog_debug
    - pim_bsm_rpinfos_free
    - pim_rpf_addr_is_inaddr_any
    - route_unlock_node
    - pim_g2rp_timer_start
    - prefix_same
    - pim_rp_del
    - pim_bsm_rpinfo_free
    - pim_rp_change
    - pim_addr_cmp
    - pim_free_bsgrp_data
    linkageType: ''
    returnType: void
    signature: void pim_instate_pend_list(struct bsgrp_node *bsgrp_node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_bsm.c:515,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_bsm.c:522,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - pim
    - bsr
    - bsr_prio
    argTypes:
    - struct pim_instance*
    - pim_addr
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 528
    functionName: is_preferred_bsr
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: bool
    signature: "bool is_preferred_bsr(struct pim_instance *pim, pim_addr bsr,\n\t\t\t
      \    uint32_t bsr_prio)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_bsm.c:533,1
    - Dst: pim_nht_bsr_del
      Src: /src/frr/pimd/pim_bsm.c:534,1
    - Dst: pim_nht_bsr_add
      Src: /src/frr/pimd/pim_bsm.c:535,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_bsm.c:539,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_bsm.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - pim
    - bsr
    - bsr_prio
    argTypes:
    - struct pim_instance*
    - pim_addr
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 530
    functionDepth: 10
    functionLinenumber: 530
    functionLinenumberEnd: 544
    functionName: pim_bsm_update
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_time_monotonic_sec
    - pim_nht_bsr_add
    - pim_nht_bsr_del
    - pim_addr_cmp
    linkageType: ''
    returnType: void
    signature: "void pim_bsm_update(struct pim_instance *pim, pim_addr bsr,\n\t\t\t
      \  uint32_t bsr_prio)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pim_nht_bsr_del
      Src: /src/frr/pimd/pim_bsm.c:558,1
    - Dst: pim_bsm_frags_free
      Src: /src/frr/pimd/pim_bsm.c:568,1
    - Dst: pim_bs_timer_stop
      Src: /src/frr/pimd/pim_bsm.c:570,1
    - Dst: route_top
      Src: /src/frr/pimd/pim_bsm.c:572,1
    - Dst: route_next
      Src: /src/frr/pimd/pim_bsm.c:573,1
    - Dst: route_node_lookup
      Src: /src/frr/pimd/pim_bsm.c:578,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:581,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:583,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:590,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:592,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:600,1
    - Dst: pim_delete_tracked_nexthop
      Src: /src/frr/pimd/pim_bsm.c:604,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_bsm.c:606,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_bsm.c:609,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_bsm.c:616,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:620,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:621,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_bsm.c:622,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:625,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:626,1
    - Dst: pim_rp_refresh_group_to_rp_mapping
      Src: /src/frr/pimd/pim_bsm.c:628,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_bsm.c:631,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_bsm.c:635,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_bsm.c:641,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_bsm.c:642,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_bsm.c:645,1
    - Dst: pim_upstream_rpf_clear
      Src: /src/frr/pimd/pim_bsm.c:646,1
    - Dst: pim_rp_set_upstream_addr
      Src: /src/frr/pimd/pim_bsm.c:647,1
    - Dst: pim_upstream_update
      Src: /src/frr/pimd/pim_bsm.c:651,1
    - Dst: pim_zebra_update_all_interfaces
      Src: /src/frr/pimd/pim_bsm.c:657,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 64
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 546
    functionDepth: 8
    functionLinenumber: 546
    functionLinenumberEnd: 658
    functionName: pim_bsm_clear
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - frr_each
    - pim_zebra_update_all_interfaces
    - pim_rp_find_match_group
    - route_top
    - pim_free_bsgrp_node
    - pim_bsm_frags_free
    - route_node_lookup
    - pim_get_all_mcast_group
    - pim_addr_is_any
    - pim_bs_timer_stop
    - zlog_debug
    - pim_rpf_addr_is_inaddr_any
    - route_unlock_node
    - pim_delete_tracked_nexthop
    - route_next
    - pim_nht_bsr_del
    - XFREE
    - listnode_delete
    - pim_rp_refresh_group_to_rp_mapping
    - pim_upstream_update
    - pim_free_bsgrp_data
    - pim_addr_to_prefix
    - pim_upstream_rpf_clear
    - pim_rp_set_upstream_addr
    linkageType: ''
    returnType: void
    signature: void pim_bsm_clear(struct pim_instance *pim)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:669,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:676,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_bsm.c:681,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_bsm.c:683,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - buf
    - len
    - ifp
    - dst_addr
    argTypes:
    - uint8_t*
    - int
    - struct interface*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 660
    functionDepth: 3
    functionLinenumber: 660
    functionLinenumberEnd: 693
    functionName: pim_bsm_send_intf
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_msg_send
    - zlog_warn
    linkageType: ''
    returnType: bool
    signature: "bool pim_bsm_send_intf(uint8_t *buf, int len, struct interface *ifp,\n\t\t\t
      \     pim_addr dst_addr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_bsm.c:715,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:719,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_bsm.c:725,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:734,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:767,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:802,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_bsm.c:817,1
    - Dst: pim_bsm_send_intf
      Src: /src/frr/pimd/pim_bsm.c:821,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:839,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_bsm.c:855,1
    - Dst: pim_bsm_send_intf
      Src: /src/frr/pimd/pim_bsm.c:858,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_bsm.c:861,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 65
    argCount: 6
    argNames:
    - buf
    - len
    - ifp
    - pim_mtu
    - dst_addr
    - no_fwd
    argTypes:
    - uint8_t*
    - uint32_t
    - struct interface*
    - uint32_t
    - pim_addr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 695
    functionDepth: 4
    functionLinenumber: 695
    functionLinenumberEnd: 863
    functionName: pim_bsm_frag_send
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_msg_build_header
    - XCALLOC
    - zlog_warn
    - zlog_debug
    - pim_bsm_send_intf
    - XFREE
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool pim_bsm_frag_send(uint8_t *buf, uint32_t len, struct interface
      *ifp,\n\t\t\t      uint32_t pim_mtu, pim_addr dst_addr, bool no_fwd)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_bsm.c:879,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_bsm.c:891,1
    - Dst: pim_hello_require
      Src: /src/frr/pimd/pim_bsm.c:894,1
    - Dst: pim_bsm_frag_send
      Src: /src/frr/pimd/pim_bsm.c:897,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:900,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_bsm.c:903,1
    - Dst: pim_bsm_send_intf
      Src: /src/frr/pimd/pim_bsm.c:906,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:908,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - pim
    - buf
    - len
    - sz
    argTypes:
    - struct pim_instance*
    - uint8_t*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 865
    functionDepth: 5
    functionLinenumber: 865
    functionLinenumberEnd: 914
    functionName: pim_bsm_fwd_whole_sz
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_bsm_frag_send
    - pim_msg_build_header
    - listcount
    - FOR_ALL_INTERFACES
    - zlog_debug
    - pim_bsm_send_intf
    - pim_hello_require
    linkageType: ''
    returnType: void
    signature: "void pim_bsm_fwd_whole_sz(struct pim_instance *pim, uint8_t *buf,\n\t\t\t\t
      uint32_t len, int sz)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:927,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_bsm.c:933,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:935,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:942,1
    - Dst: bsm_frags_count
      Src: /src/frr/pimd/pim_bsm.c:949,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:951,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:959,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:964,1
    - Dst: pim_hello_require
      Src: /src/frr/pimd/pim_bsm.c:968,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_bsm.c:970,1
    - Dst: pim_bsm_frag_send
      Src: /src/frr/pimd/pim_bsm.c:972,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:976,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_bsm.c:982,1
    - Dst: pim_bsm_send_intf
      Src: /src/frr/pimd/pim_bsm.c:985,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:989,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 2
    argNames:
    - neigh
    - ifp
    argTypes:
    - struct pim_neighbor*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 916
    functionDepth: 5
    functionLinenumber: 916
    functionLinenumberEnd: 996
    functionName: pim_bsm_new_nbr_fwd
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_bsm_frag_send
    - frr_each
    - pim_msg_build_header
    - pim_addr_cmp
    - zlog_debug
    - pim_bsm_send_intf
    - bsm_frags_count
    - pim_hello_require
    linkageType: ''
    returnType: bool
    signature: bool pim_bsm_new_nbr_fwd(struct pim_neighbor *neigh, struct interface
      *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/pimd/pim_bsm.c:1004,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1007,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_bsm.c:1012,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - scope
    - grp
    argTypes:
    - struct bsm_scope*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 998
    functionDepth: 5
    functionLinenumber: 998
    functionLinenumberEnd: 1015
    functionName: pim_bsm_get_bsgrp_node
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - route_unlock_node
    - zlog_debug
    - route_node_lookup
    linkageType: ''
    returnType: struct bsgrp_node
    signature: "struct bsgrp_node *pim_bsm_get_bsgrp_node(struct bsm_scope *scope,\n\t\t\t\t\t
      \ struct prefix *grp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/pimd/pim_bsm.c:1036,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_bsm.c:1048,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - group
    - rp
    - hashmasklen
    argTypes:
    - struct prefix
    - pim_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1017
    functionDepth: 0
    functionLinenumber: 1017
    functionLinenumberEnd: 1057
    functionName: hash_calc_on_grp_rp
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t hash_calc_on_grp_rp(struct prefix group, pim_addr rp,\n\t\t\t\t
      \   uint8_t hashmasklen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_bsm.c:1067,1
    - Dst: hash_calc_on_grp_rp
      Src: /src/frr/pimd/pim_bsm.c:1078,1
    - Dst: bsm_rpinfos_add
      Src: /src/frr/pimd/pim_bsm.c:1080,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1082,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1089,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_bsm.c:1091,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - pim
    - grpnode
    - rp
    argTypes:
    - struct pim_instance*
    - struct bsgrp_node*
    - struct bsmmsg_rpinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1093
    functionName: pim_install_bsm_grp_rp
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - zlog_debug
    - bsm_rpinfos_add
    - XFREE
    - hash_calc_on_grp_rp
    linkageType: ''
    returnType: bool
    signature: "bool pim_install_bsm_grp_rp(struct pim_instance *pim,\n\t\t\t\t   struct
      bsgrp_node *grpnode,\n\t\t\t\t   struct bsmmsg_rpinfo *rp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1106,1
    - Dst: pim_bsm_rpinfos_free
      Src: /src/frr/pimd/pim_bsm.c:1109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - sz
    - bsgrp
    - bsm_frag_tag
    - total_rp_count
    argTypes:
    - struct bsm_scope*
    - struct bsgrp_node*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1095
    functionDepth: 3
    functionLinenumber: 1095
    functionLinenumberEnd: 1116
    functionName: pim_update_pending_rp_cnt
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_bsm_rpinfos_free
    linkageType: ''
    returnType: void
    signature: "void pim_update_pending_rp_cnt(struct bsm_scope *sz,\n\t\t\t\t      struct
      bsgrp_node *bsgrp,\n\t\t\t\t      uint16_t bsm_frag_tag,\n\t\t\t\t      uint32_t
      total_rp_count)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1134,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:1140,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1144,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1155,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_bsm.c:1161,1
    - Dst: pim_bsm_get_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:1165,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1175,1
    - Dst: bsm_rpinfos_first
      Src: /src/frr/pimd/pim_bsm.c:1179,1
    - Dst: pim_rp_del
      Src: /src/frr/pimd/pim_bsm.c:1181,1
    - Dst: pim_free_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:1184,1
    - Dst: pim_free_bsgrp_data
      Src: /src/frr/pimd/pim_bsm.c:1185,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1191,1
    - Dst: pim_bsm_new_bsgrp_node
      Src: /src/frr/pimd/pim_bsm.c:1195,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1199,1
    - Dst: pim_update_pending_rp_cnt
      Src: /src/frr/pimd/pim_bsm.c:1208,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1217,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:1224,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_bsm.c:1225,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1233,1
    - Dst: pim_install_bsm_grp_rp
      Src: /src/frr/pimd/pim_bsm.c:1240,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1248,1
    - Dst: pim_instate_pend_list
      Src: /src/frr/pimd/pim_bsm.c:1252,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 72
    argCount: 4
    argNames:
    - scope
    - buf
    - buflen
    - bsm_frag_tag
    argTypes:
    - struct bsm_scope*
    - uint8_t*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1119
    functionDepth: 7
    functionLinenumber: 1119
    functionLinenumberEnd: 1256
    functionName: pim_bsm_parse_install_g2rp
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 0
    functionsReached:
    - pim_free_bsgrp_data
    - pim_install_bsm_grp_rp
    - pim_bsm_new_bsgrp_node
    - pim_rp_del
    - pim_addr_to_prefix
    - pim_bsm_get_bsgrp_node
    - pim_instate_pend_list
    - ntohs
    - bsm_rpinfos_first
    - zlog_debug
    - pim_free_bsgrp_node
    - pim_update_pending_rp_cnt
    - memcpy
    linkageType: ''
    returnType: bool
    signature: "bool pim_bsm_parse_install_g2rp(struct bsm_scope *scope, uint8_t *buf,\n\t\t\t\t
      \      int buflen, uint16_t bsm_frag_tag)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1275,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1282,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_bsm.c:1294,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1303,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_bsm.c:1311,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_bsm.c:1318,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:1320,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1332,1
    - Dst: is_preferred_bsr
      Src: /src/frr/pimd/pim_bsm.c:1342,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1344,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1357,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_bsm.c:1370,1
    - Dst: pim_nht_bsr_rpf_check
      Src: /src/frr/pimd/pim_bsm.c:1376,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1378,1
    - Dst: if_address_is_local
      Src: /src/frr/pimd/pim_bsm.c:1384,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1390,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1400,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1408,1
    - Dst: pim_bsm_parse_install_g2rp
      Src: /src/frr/pimd/pim_bsm.c:1411,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1417,1
    - Dst: pim_bs_timer_restart
      Src: /src/frr/pimd/pim_bsm.c:1423,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_bsm.c:1429,1
    - Dst: pim_bsm_frags_free
      Src: /src/frr/pimd/pim_bsm.c:1434,1
    - Dst: pim_bsm_update
      Src: /src/frr/pimd/pim_bsm.c:1439,1
    - Dst: pim_bsm_fwd_whole_sz
      Src: /src/frr/pimd/pim_bsm.c:1442,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_bsm.c:1443,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_bsm.c:1447,1
    - Dst: bsm_frags_add_tail
      Src: /src/frr/pimd/pim_bsm.c:1448,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 116
    argCount: 5
    argNames:
    - ifp
    - sg
    - buf
    - buf_size
    - no_fwd
    argTypes:
    - struct interface*
    - pim_sgaddr*
    - uint8_t*
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1258
    functionDepth: 11
    functionLinenumber: 1258
    functionLinenumberEnd: 1453
    functionName: pim_bsm_process
    functionSourceFile: /src/frr/pimd/pim_bsm.c
    functionUses: 1
    functionsReached:
    - bsm_frags_add_tail
    - pim_bsm_parse_install_g2rp
    - pim_nht_bsr_rpf_check
    - pim_bsm_update
    - XCALLOC
    - pim_bs_timer_restart
    - pim_addr_cmp
    - ntohs
    - pim_bsm_fwd_whole_sz
    - zlog_debug
    - zlog_warn
    - if_address_is_local
    - pim_bsm_frags_free
    - memcpy
    - is_preferred_bsr
    linkageType: ''
    returnType: int
    signature: "int pim_bsm_process(struct interface *ifp, pim_sgaddr *sg, uint8_t
      *buf,\n\t\t    uint32_t buf_size, bool no_fwd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - funcname
    - ','
    - argtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: pim6_msdp_err
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pim6_msdp_err(funcname, argtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - funcname
    - ','
    - argtype
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: pim6_msdp_err
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: pim6_msdp_err(funcname, argtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:53,1
    - Dst: pim_ifchannel_membership_clear
      Src: /src/frr/pimd/pim_nb_config.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/frr/pimd/pim_nb_config.c
    constantsTouched: []
    func_position:
      end: 60
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 60
    functionName: pim_if_membership_clear
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_ifchannel_membership_clear
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_if_membership_clear(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:83,1
    - Dst: pim_ifchannel_membership_clear
      Src: /src/frr/pimd/pim_nb_config.c:100,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_nb_config.c:109,1
    - Dst: for
      Src: /src/frr/pimd/pim_nb_config.c:114,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_nb_config.c:114,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_nb_config.c:117,1
    - Dst: memset
      Src: /src/frr/pimd/pim_nb_config.c:120,1
    - Dst: pim_ifchannel_local_membership_add
      Src: /src/frr/pimd/pim_nb_config.c:123,1
    - Dst: gm_sgs_first
      Src: /src/frr/pimd/pim_nb_config.c:130,1
    - Dst: frr_each_from
      Src: /src/frr/pimd/pim_nb_config.c:132,1
    - Dst: in6_multicast_nofwd
      Src: /src/frr/pimd/pim_nb_config.c:133,1
    - Dst: pim_ifchannel_local_membership_add
      Src: /src/frr/pimd/pim_nb_config.c:134,1
    - Dst: pim_ifchannel_delete_on_noinfo
      Src: /src/frr/pimd/pim_nb_config.c:144,1
    - Dst: pim_cmd_interface_add
      Src: /src/frr/pimd/pim_nb_config.c:147,1
    - Dst: pim_if_new
      Src: /src/frr/pimd/pim_nb_config.c:152,1
    - Dst: pim_if_addr_add_all
      Src: /src/frr/pimd/pim_nb_config.c:156,1
    - Dst: pim_upstream_nh_if_update
      Src: /src/frr/pimd/pim_nb_config.c:157,1
    - Dst: pim_if_membership_refresh
      Src: /src/frr/pimd/pim_nb_config.c:158,1
    - Dst: pim_if_create_pimreg
      Src: /src/frr/pimd/pim_nb_config.c:160,1
    - Dst: pim_cmd_interface_delete
      Src: /src/frr/pimd/pim_nb_config.c:164,1
    - Dst: pim_if_membership_clear
      Src: /src/frr/pimd/pim_nb_config.c:173,1
    - Dst: pim_sock_delete
      Src: /src/frr/pimd/pim_nb_config.c:179,1
    - Dst: pim_upstream_nh_if_update
      Src: /src/frr/pimd/pim_nb_config.c:180,1
    - Dst: pim_if_addr_del_all
      Src: /src/frr/pimd/pim_nb_config.c:183,1
    - Dst: pim_if_delete
      Src: /src/frr/pimd/pim_nb_config.c:184,1
    - Dst: interface_pim_use_src_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:190,1
    - Dst: pim_update_source_set
      Src: /src/frr/pimd/pim_nb_config.c:196,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:203,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:209,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:213,1
    - Dst: pim_cmd_spt_switchover
      Src: /src/frr/pimd/pim_nb_config.c:219,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:227,1
    - Dst: pim_upstream_add_lhr_star_pimreg
      Src: /src/frr/pimd/pim_nb_config.c:229,1
    - Dst: pim_upstream_remove_lhr_star_pimreg
      Src: /src/frr/pimd/pim_nb_config.c:232,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:234,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_nb_config.c:237,1
    - Dst: pim_ssm_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:244,1
    - Dst: pim_ssm_range_set
      Src: /src/frr/pimd/pim_nb_config.c:247,1
    - Dst: NB_OK
      Src: /src/frr/pimd/pim_nb_config.c:251,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:255,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:259,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:263,1
    - Dst: pim_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:270,1
    - Dst: pim_rp_new
      Src: /src/frr/pimd/pim_nb_config.c:276,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_nb_config.c:279,1
    - Dst: NB_ERR_INCONSISTENCY
      Src: /src/frr/pimd/pim_nb_config.c:281,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:285,1
    - Dst: NB_ERR_INCONSISTENCY
      Src: /src/frr/pimd/pim_nb_config.c:287,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:291,1
    - Dst: NB_ERR_INCONSISTENCY
      Src: /src/frr/pimd/pim_nb_config.c:293,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:297,1
    - Dst: pim_no_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:305,1
    - Dst: prefix2str
      Src: /src/frr/pimd/pim_nb_config.c:312,1
    - Dst: pim_rp_del
      Src: /src/frr/pimd/pim_nb_config.c:314,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:317,1
    - Dst: NB_ERR_INCONSISTENCY
      Src: /src/frr/pimd/pim_nb_config.c:319,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_nb_config.c:323,1
    - Dst: NB_ERR_INCONSISTENCY
      Src: /src/frr/pimd/pim_nb_config.c:325,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:329,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:337,1
    - Dst: yang_dnode_get_path
      Src: /src/frr/pimd/pim_nb_config.c:343,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_nb_config.c:345,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_nb_config.c:348,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:353,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:355,1
    - Dst: pim_cmd_gm_start
      Src: /src/frr/pimd/pim_nb_config.c:361,1
    - Dst: pim_if_new
      Src: /src/frr/pimd/pim_nb_config.c:369,1
    - Dst: pim_if_create_pimreg
      Src: /src/frr/pimd/pim_nb_config.c:377,1
    - Dst: pim_if_addr_add_all
      Src: /src/frr/pimd/pim_nb_config.c:383,1
    - Dst: pim_if_membership_refresh
      Src: /src/frr/pimd/pim_nb_config.c:384,1
    - Dst: igmp_sock_query_interval_reconfig
      Src: /src/frr/pimd/pim_nb_config.c:396,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:401,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:402,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:403,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nb_config.c:409,1
    - Dst: igmp_startup_mode_on
      Src: /src/frr/pimd/pim_nb_config.c:418,1
    - Dst: igmp_sock_query_reschedule
      Src: /src/frr/pimd/pim_nb_config.c:421,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:428,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:429,1
    - Dst: pim_igmp_general_query_off
      Src: /src/frr/pimd/pim_nb_config.c:431,1
    - Dst: pim_igmp_general_query_on
      Src: /src/frr/pimd/pim_nb_config.c:432,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:434,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:435,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:439,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:440,1
    - Dst: pim_igmp_other_querier_timer_off
      Src: /src/frr/pimd/pim_nb_config.c:442,1
    - Dst: pim_igmp_other_querier_timer_on
      Src: /src/frr/pimd/pim_nb_config.c:443,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:445,1
    - Dst: assert
      Src: /src/frr/pimd/pim_nb_config.c:446,1
    - Dst: change_query_interval
      Src: /src/frr/pimd/pim_nb_config.c:452,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_nb_config.c:460,1
    - Dst: igmp_sock_query_interval_reconfig
      Src: /src/frr/pimd/pim_nb_config.c:461,1
    - Dst: igmp_sock_query_reschedule
      Src: /src/frr/pimd/pim_nb_config.c:462,1
    - Dst: change_query_max_response_time
      Src: /src/frr/pimd/pim_nb_config.c:467,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_nb_config.c:486,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_nb_config.c:495,1
    - Dst: igmp_sock_query_reschedule
      Src: /src/frr/pimd/pim_nb_config.c:497,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_nb_config.c:501,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_nb_config.c:510,1
    - Dst: igmp_source_reset_gmi
      Src: /src/frr/pimd/pim_nb_config.c:517,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (igmp)
      pos:
        line_end: 400
        line_start: 400
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (igmp->t_other_querier_timer)
      pos:
        line_end: 445
        line_start: 445
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (igmp->interface->info)
      pos:
        line_end: 402
        line_start: 402
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (!igmp->t_other_querier_timer)
      pos:
        line_end: 434
        line_start: 434
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (!igmp->t_igmp_query_timer)
      pos:
        line_end: 444
        line_start: 444
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (igmp->interface)
      pos:
        line_end: 401
        line_start: 401
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (igmp->t_other_querier_timer)
      pos:
        line_end: 439
        line_start: 439
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (pim_ifp)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (igmp->t_igmp_query_timer)
      pos:
        line_end: 427
        line_start: 427
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (!igmp->t_other_querier_timer)
      pos:
        line_end: 428
        line_start: 428
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (igmp->t_igmp_query_timer)
      pos:
        line_end: 433
        line_start: 433
        source_file: /src/frr/pimd/pim_nb_config.c
    - condition: (!igmp->t_igmp_query_timer)
      pos:
        line_end: 438
        line_start: 438
        source_file: /src/frr/pimd/pim_nb_config.c
    constantsTouched: []
    func_position:
      end: 521
      start: 71
    functionDepth: 7
    functionLinenumber: 71
    functionLinenumberEnd: 521
    functionName: pim_if_membership_refresh
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 1
    functionsReached:
    - yang_dnode_get_bool
    - prefix2str
    - pim_rp_new
    - gm_ifp_update
    - pim_ssm_range_set
    - pim_cmd_gm_start
    - pim_rp_cmd_worker
    - pim_update_source_set
    - yang_dnode_get_path
    - igmp_sock_query_reschedule
    - pim_cmd_interface_delete
    - gm_sgs_first
    - interface_pim_use_src_cmd_worker
    - NB_OK
    - pim_if_membership_clear
    - igmp_sock_query_interval_reconfig
    - pim_ssm_cmd_worker
    - NB_ERR_INCONSISTENCY
    - memset
    - pim_if_addr_add_all
    - snprintf
    - pim_upstream_nh_if_update
    - ALL_LIST_ELEMENTS_RO
    - IGMP_SOURCE_TEST_FORWARDING
    - in6_multicast_nofwd
    - pim_if_delete
    - pim_igmp_general_query_on
    - pim_igmp_general_query_off
    - yang_dnode_getf
    - zlog_debug
    - pim_sock_delete
    - for
    - change_query_max_response_time
    - assert
    - pim_no_rp_cmd_worker
    - pim_if_create_pimreg
    - pim_cmd_spt_switchover
    - pim_upstream_remove_lhr_star_pimreg
    - igmp_startup_mode_on
    - pim_rp_del
    - pim_igmp_other_querier_timer_off
    - change_query_interval
    - pim_if_membership_refresh
    - pim_if_new
    - XFREE
    - pim_igmp_other_querier_timer_on
    - XSTRDUP
    - pim_if_addr_del_all
    - is_pim_interface
    - pim_ifchannel_delete_on_noinfo
    - igmp_source_reset_gmi
    - pim_cmd_interface_add
    - pim_ifchannel_local_membership_add
    - snprintfrr
    - pim_ifchannel_membership_clear
    - pim_upstream_add_lhr_star_pimreg
    - frr_each_from
    linkageType: ''
    returnType: void
    signature: void pim_if_membership_refresh(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:528,1
    - Dst: strmatch
      Src: /src/frr/pimd/pim_nb_config.c:529,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 523
    functionDepth: 2
    functionLinenumber: 523
    functionLinenumberEnd: 535
    functionName: routing_control_plane_protocols_name_validate
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_name_validate(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 551
    functionName: pim_address_family_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pim_address_family_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 564
    functionName: pim_address_family_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pim_address_family_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/pimd/pim_nb_config.c:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 569
    functionDepth: 2
    functionLinenumber: 569
    functionLinenumberEnd: 583
    functionName: pim_address_family_packets_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    linkageType: ''
    returnType: int
    signature: int pim_address_family_packets_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:597,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 588
    functionDepth: 2
    functionLinenumber: 588
    functionLinenumberEnd: 602
    functionName: pim_address_family_join_prune_interval_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: int
    signature: "int pim_address_family_join_prune_interval_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:613,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:623,1
    - Dst: pim_update_suppress_timers
      Src: /src/frr/pimd/pim_nb_config.c:635,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:636,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 607
    functionDepth: 2
    functionLinenumber: 607
    functionLinenumberEnd: 641
    functionName: pim_address_family_register_suppress_time_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - pim_update_suppress_timers
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int pim_address_family_register_suppress_time_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:658,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:660,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 646
    functionDepth: 6
    functionLinenumber: 646
    functionLinenumberEnd: 664
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:681,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:684,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 669
    functionDepth: 6
    functionLinenumber: 669
    functionLinenumberEnd: 688
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:705,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:707,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 693
    functionDepth: 6
    functionLinenumber: 693
    functionLinenumberEnd: 712
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:729,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:731,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 717
    functionDepth: 6
    functionLinenumber: 717
    functionLinenumberEnd: 737
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 754
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 768
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:785,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:787,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 773
    functionDepth: 6
    functionLinenumber: 773
    functionLinenumberEnd: 792
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 794
    functionDepth: 0
    functionLinenumber: 794
    functionLinenumberEnd: 806
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:820,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pimd/pim_nb_config.c:822,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pimd/pim_nb_config.c:826,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:828,1
    - Dst: pim_cmd_spt_switchover
      Src: /src/frr/pimd/pim_nb_config.c:831,1
    - Dst: pim_cmd_spt_switchover
      Src: /src/frr/pimd/pim_nb_config.c:835,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 812
    functionDepth: 6
    functionLinenumber: 812
    functionLinenumberEnd: 837
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_apply_finish
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_cmd_spt_switchover
    - nb_running_get_entry
    - yang_dnode_get_string
    - yang_dnode_get_enum
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 854
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_action_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_action_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 871
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 885
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:904,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:906,1
    - Dst: pim_ssm_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:907,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 890
    functionDepth: 6
    functionLinenumber: 890
    functionLinenumberEnd: 917
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_ssm_cmd_worker
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:932,1
    - Dst: pim_ssm_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:934,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 919
    functionDepth: 6
    functionLinenumber: 919
    functionLinenumberEnd: 944
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_ssm_cmd_worker
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:963,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:965,1
    - Dst: pim_ssmpingd_start
      Src: /src/frr/pimd/pim_nb_config.c:967,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:969,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 949
    functionDepth: 6
    functionLinenumber: 949
    functionLinenumberEnd: 978
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_dnode_get_pimaddr
    - nb_running_get_entry
    - pim_ssmpingd_start
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:994,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:996,1
    - Dst: pim_ssmpingd_stop
      Src: /src/frr/pimd/pim_nb_config.c:998,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:1000,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 980
    functionDepth: 6
    functionLinenumber: 980
    functionLinenumberEnd: 1011
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - snprintf
    - yang_dnode_get_pimaddr
    - nb_running_get_entry
    - pim_ssmpingd_stop
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1028,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:1030,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1017
    functionDepth: 6
    functionLinenumber: 1017
    functionLinenumberEnd: 1035
    functionName: pim_msdp_hold_time_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int pim_msdp_hold_time_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1052,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:1054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1041
    functionDepth: 6
    functionLinenumber: 1041
    functionLinenumberEnd: 1059
    functionName: pim_msdp_keep_alive_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int pim_msdp_keep_alive_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1076,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:1079,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1065
    functionDepth: 6
    functionLinenumber: 1065
    functionLinenumberEnd: 1084
    functionName: pim_msdp_connection_retry_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int pim_msdp_connection_retry_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1115,1
    - Dst: pim_msdp_mg_new
      Src: /src/frr/pimd/pim_nb_config.c:1116,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:1116,1
    - Dst: nb_running_set_entry
      Src: /src/frr/pimd/pim_nb_config.c:1118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1104
    functionDepth: 6
    functionLinenumber: 1104
    functionLinenumberEnd: 1123
    functionName: pim_msdp_mesh_group_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_msdp_mg_new
    - nb_running_set_entry
    - yang_dnode_get_string
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int pim_msdp_mesh_group_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/pimd/pim_nb_config.c:1136,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1137,1
    - Dst: pim_msdp_mg_free
      Src: /src/frr/pimd/pim_nb_config.c:1138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1125
    functionDepth: 6
    functionLinenumber: 1125
    functionLinenumberEnd: 1143
    functionName: pim_msdp_mesh_group_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_unset_entry
    - nb_running_get_entry
    - pim_msdp_mg_free
    linkageType: ''
    returnType: int
    signature: int pim_msdp_mesh_group_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1162,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:1164,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1165,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pimd/pim_nb_config.c:1166,1
    - Dst: pim_msdp_mg_src_add
      Src: /src/frr/pimd/pim_nb_config.c:1168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1149
    functionDepth: 6
    functionLinenumber: 1149
    functionLinenumberEnd: 1172
    functionName: pim_msdp_mesh_group_source_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ip
    - yang_dnode_get_parent
    - nb_running_get_entry
    - pim_msdp_mg_src_add
    linkageType: ''
    returnType: int
    signature: int pim_msdp_mesh_group_source_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1187,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:1189,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1190,1
    - Dst: pim_msdp_mg_src_add
      Src: /src/frr/pimd/pim_nb_config.c:1193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1174
    functionDepth: 6
    functionLinenumber: 1174
    functionLinenumberEnd: 1197
    functionName: pim_msdp_mesh_group_source_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - nb_running_get_entry
    - pim_msdp_mg_src_add
    linkageType: ''
    returnType: int
    signature: int pim_msdp_mesh_group_source_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1218,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:1220,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1221,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pimd/pim_nb_config.c:1222,1
    - Dst: pim_msdp_mg_mbr_add
      Src: /src/frr/pimd/pim_nb_config.c:1224,1
    - Dst: nb_running_set_entry
      Src: /src/frr/pimd/pim_nb_config.c:1225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1204
    functionDepth: 6
    functionLinenumber: 1204
    functionLinenumberEnd: 1230
    functionName: pim_msdp_mesh_group_members_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_get_ip
    - yang_dnode_get_parent
    - nb_running_get_entry
    - pim_msdp_mg_mbr_add
    linkageType: ''
    returnType: int
    signature: int pim_msdp_mesh_group_members_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1244,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:1246,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1247,1
    - Dst: pim_msdp_mg_mbr_del
      Src: /src/frr/pimd/pim_nb_config.c:1248,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/pimd/pim_nb_config.c:1249,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1232
    functionDepth: 6
    functionLinenumber: 1232
    functionLinenumberEnd: 1254
    functionName: pim_msdp_mesh_group_members_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_parent
    - nb_running_unset_entry
    - nb_running_get_entry
    - pim_msdp_mg_mbr_del
    linkageType: ''
    returnType: int
    signature: int pim_msdp_mesh_group_members_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1274,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pimd/pim_nb_config.c:1276,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pimd/pim_nb_config.c:1277,1
    - Dst: pim_msdp_peer_add
      Src: /src/frr/pimd/pim_nb_config.c:1278,1
    - Dst: nb_running_set_entry
      Src: /src/frr/pimd/pim_nb_config.c:1280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1259
    functionDepth: 6
    functionLinenumber: 1259
    functionLinenumberEnd: 1285
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ip
    - pim_msdp_peer_add
    - nb_running_set_entry
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/pimd/pim_nb_config.c:1298,1
    - Dst: pim_msdp_peer_del
      Src: /src/frr/pimd/pim_nb_config.c:1299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1287
    functionDepth: 1
    functionLinenumber: 1287
    functionLinenumberEnd: 1304
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_del
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1321,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pimd/pim_nb_config.c:1322,1
    - Dst: pim_msdp_peer_change_source
      Src: /src/frr/pimd/pim_nb_config.c:1323,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1309
    functionDepth: 6
    functionLinenumber: 1309
    functionLinenumberEnd: 1328
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_source_ip_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ip
    - nb_running_get_entry
    - pim_msdp_peer_change_source
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_source_ip_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1334
    functionDepth: 0
    functionLinenumber: 1334
    functionLinenumberEnd: 1346
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_mlag_update
      Src: /src/frr/pimd/pim_nb_config.c:1360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1348
    functionDepth: 1
    functionLinenumber: 1348
    functionLinenumberEnd: 1366
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_mlag_update
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:1381,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_nb_config.c:1382,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:1384,1
    - Dst: yang_dnode_get_enum
      Src: /src/frr/pimd/pim_nb_config.c:1388,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:1389,1
    - Dst: yang_dnode_get_ip
      Src: /src/frr/pimd/pim_nb_config.c:1390,1
    - Dst: pim_vxlan_mlag_update
      Src: /src/frr/pimd/pim_nb_config.c:1392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1372
    functionDepth: 3
    functionLinenumber: 1372
    functionLinenumberEnd: 1394
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_apply_finish
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - if_lookup_by_name
    - snprintf
    - yang_dnode_get_ip
    - yang_dnode_get_string
    - pim_vxlan_mlag_update
    - yang_dnode_get_enum
    linkageType: ''
    returnType: void
    signature: "void routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1412
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1414
    functionDepth: 0
    functionLinenumber: 1414
    functionLinenumberEnd: 1426
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1431
    functionDepth: 0
    functionLinenumber: 1431
    functionLinenumberEnd: 1443
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1445
    functionDepth: 0
    functionLinenumber: 1445
    functionLinenumberEnd: 1457
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1462
    functionDepth: 0
    functionLinenumber: 1462
    functionLinenumberEnd: 1474
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_my_role_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_my_role_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1479
    functionDepth: 0
    functionLinenumber: 1479
    functionLinenumberEnd: 1491
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peer_state_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peer_state_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1509,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:1511,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:1513,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_nb_config.c:1514,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1496
    functionDepth: 6
    functionLinenumber: 1496
    functionLinenumberEnd: 1520
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1534,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:1537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1522
    functionDepth: 6
    functionLinenumber: 1522
    functionLinenumberEnd: 1542
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1547
    functionDepth: 0
    functionLinenumber: 1547
    functionLinenumberEnd: 1558
    functionName: lib_interface_pim_address_family_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_interface_pim_address_family_create(struct nb_cb_create_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1571,1
    - Dst: pim_cmd_interface_delete
      Src: /src/frr/pimd/pim_nb_config.c:1576,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:1577,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1560
    functionDepth: 6
    functionLinenumber: 1560
    functionLinenumberEnd: 1585
    functionName: lib_interface_pim_address_family_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_cmd_interface_delete
    - nb_running_get_entry
    - snprintf
    linkageType: ''
    returnType: int
    signature: int lib_interface_pim_address_family_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:1599,1
    - Dst: yang_get_list_elements_count
      Src: /src/frr/pimd/pim_nb_config.c:1601,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:1605,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1615,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:1617,1
    - Dst: pim_cmd_interface_add
      Src: /src/frr/pimd/pim_nb_config.c:1618,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:1619,1
    - Dst: pim_cmd_interface_delete
      Src: /src/frr/pimd/pim_nb_config.c:1629,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:1630,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1590
    functionDepth: 6
    functionLinenumber: 1590
    functionLinenumberEnd: 1639
    functionName: lib_interface_pim_address_family_pim_enable_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - snprintf
    - yang_dnode_get_parent
    - yang_get_list_elements_count
    - pim_cmd_interface_add
    - nb_running_get_entry
    - pim_cmd_interface_delete
    linkageType: ''
    returnType: int
    signature: int lib_interface_pim_address_family_pim_enable_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1657,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:1660,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1645
    functionDepth: 6
    functionLinenumber: 1645
    functionLinenumberEnd: 1665
    functionName: lib_interface_pim_address_family_pim_passive_enable_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_pim_passive_enable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1682,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/pimd/pim_nb_config.c:1685,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1691
      start: 1670
    functionDepth: 6
    functionLinenumber: 1670
    functionLinenumberEnd: 1691
    functionName: lib_interface_pim_address_family_hello_interval_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_hello_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1708,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:1711,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1696
    functionDepth: 6
    functionLinenumber: 1696
    functionLinenumberEnd: 1717
    functionName: lib_interface_pim_address_family_hello_holdtime_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_hello_holdtime_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1731,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1719
    functionDepth: 6
    functionLinenumber: 1719
    functionLinenumberEnd: 1738
    functionName: lib_interface_pim_address_family_hello_holdtime_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_hello_holdtime_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1754,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1742
    functionDepth: 6
    functionLinenumber: 1742
    functionLinenumberEnd: 1761
    functionName: lib_interface_pim_address_family_bfd_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_pim_address_family_bfd_create(struct nb_cb_create_args
      *args)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:1772,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:1773,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:1774,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1783,1
    - Dst: pim_bfd_reg_dereg_all_nbr
      Src: /src/frr/pimd/pim_nb_config.c:1786,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1763
    functionDepth: 6
    functionLinenumber: 1763
    functionLinenumberEnd: 1791
    functionName: lib_interface_pim_address_family_bfd_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - is_pim_interface
    - snprintf
    - yang_dnode_get_parent
    - nb_running_get_entry
    - pim_bfd_reg_dereg_all_nbr
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_bfd_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1802,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nb_config.c:1806,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/pimd/pim_nb_config.c:1811,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:1813,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:1815,1
    - Dst: pim_bfd_reg_dereg_all_nbr
      Src: /src/frr/pimd/pim_nb_config.c:1817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_apply_finish_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1818
      start: 1796
    functionDepth: 6
    functionLinenumber: 1796
    functionLinenumberEnd: 1818
    functionName: lib_interface_pim_address_family_bfd_apply_finish
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - nb_running_get_entry
    - zlog_debug
    - pim_bfd_reg_dereg_all_nbr
    - yang_dnode_get_uint16
    linkageType: ''
    returnType: void
    signature: "void lib_interface_pim_address_family_bfd_apply_finish(\n\tstruct
      nb_cb_apply_finish_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1835
      start: 1823
    functionDepth: 0
    functionLinenumber: 1823
    functionLinenumberEnd: 1835
    functionName: lib_interface_pim_address_family_bfd_min_rx_interval_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_bfd_min_rx_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1840
    functionDepth: 0
    functionLinenumber: 1840
    functionLinenumberEnd: 1852
    functionName: lib_interface_pim_address_family_bfd_min_tx_interval_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_bfd_min_tx_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1857
    functionDepth: 0
    functionLinenumber: 1857
    functionLinenumberEnd: 1869
    functionName: lib_interface_pim_address_family_bfd_detect_mult_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_bfd_detect_mult_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1887,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:1889,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_nb_config.c:1890,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:1891,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1896
      start: 1874
    functionDepth: 6
    functionLinenumber: 1874
    functionLinenumberEnd: 1896
    functionName: lib_interface_pim_address_family_bfd_profile_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - XSTRDUP
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_bfd_profile_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1911,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:1913,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1898
    functionDepth: 6
    functionLinenumber: 1898
    functionLinenumberEnd: 1918
    functionName: lib_interface_pim_address_family_bfd_profile_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_bfd_profile_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1934,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:1936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1923
    functionDepth: 6
    functionLinenumber: 1923
    functionLinenumberEnd: 1942
    functionName: lib_interface_pim_address_family_bsm_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int lib_interface_pim_address_family_bsm_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1959,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:1962,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1947
    functionDepth: 6
    functionLinenumber: 1947
    functionLinenumberEnd: 1968
    functionName: lib_interface_pim_address_family_unicast_bsm_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_unicast_bsm_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:1985,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:1987,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nb_config.c:1989,1
    - Dst: pim_if_configure_mlag_dualactive
      Src: /src/frr/pimd/pim_nb_config.c:1992,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_nb_config.c:1995,1
    - Dst: pim_if_unconfigure_mlag_dualactive
      Src: /src/frr/pimd/pim_nb_config.c:1998,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 1973
    functionDepth: 6
    functionLinenumber: 1973
    functionLinenumberEnd: 2006
    functionName: lib_interface_pim_address_family_active_active_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - nb_running_get_entry
    - pim_if_unconfigure_mlag_dualactive
    - zlog_debug
    - pim_if_configure_mlag_dualactive
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_active_active_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2021,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2022,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2023,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2032,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/pimd/pim_nb_config.c:2035,1
    - Dst: pim_if_dr_election
      Src: /src/frr/pimd/pim_nb_config.c:2039,1
    - Dst: pim_hello_restart_now
      Src: /src/frr/pimd/pim_nb_config.c:2040,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2011
    functionDepth: 6
    functionLinenumber: 2011
    functionLinenumberEnd: 2046
    functionName: lib_interface_pim_address_family_dr_priority_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - is_pim_interface
    - snprintf
    - yang_dnode_get_parent
    - pim_hello_restart_now
    - nb_running_get_entry
    - pim_if_dr_election
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_dr_priority_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2061,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2062,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2063,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2072,1
    - Dst: yang_dnode_get_ipv4
      Src: /src/frr/pimd/pim_nb_config.c:2074,1
    - Dst: yang_dnode_get_ipv6
      Src: /src/frr/pimd/pim_nb_config.c:2076,1
    - Dst: interface_pim_use_src_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2079,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2090
      start: 2051
    functionDepth: 6
    functionLinenumber: 2051
    functionLinenumberEnd: 2090
    functionName: lib_interface_pim_address_family_use_source_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_ipv6
    - is_pim_interface
    - snprintf
    - yang_dnode_get_parent
    - nb_running_get_entry
    - yang_dnode_get_ipv4
    - interface_pim_use_src_cmd_worker
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_use_source_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2101,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2102,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2103,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2112,1
    - Dst: interface_pim_use_src_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2092
    functionDepth: 6
    functionLinenumber: 2092
    functionLinenumberEnd: 2125
    functionName: lib_interface_pim_address_family_use_source_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - is_pim_interface
    - snprintf
    - yang_dnode_get_parent
    - nb_running_get_entry
    - interface_pim_use_src_cmd_worker
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_use_source_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2140,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2141,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2142,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2151,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2153,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:2156,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_nb_config.c:2159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2165
      start: 2130
    functionDepth: 6
    functionLinenumber: 2130
    functionLinenumberEnd: 2165
    functionName: lib_interface_pim_address_family_multicast_boundary_oil_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - is_pim_interface
    - snprintf
    - yang_dnode_get_parent
    - nb_running_get_entry
    - yang_dnode_get_string
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_multicast_boundary_oil_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2176,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2177,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2178,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2187,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_nb_config.c:2190,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2167
    functionDepth: 6
    functionLinenumber: 2167
    functionLinenumberEnd: 2195
    functionName: lib_interface_pim_address_family_multicast_boundary_oil_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - is_pim_interface
    - snprintf
    - yang_dnode_get_parent
    - nb_running_get_entry
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_multicast_boundary_oil_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2212
      start: 2200
    functionDepth: 0
    functionLinenumber: 2200
    functionLinenumberEnd: 2212
    functionName: lib_interface_pim_address_family_mroute_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_mroute_create(\n\tstruct nb_cb_create_args
      *args)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2228,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2229,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2230,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2239,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2243,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_nb_config.c:2244,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2247,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2253,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2254,1
    - Dst: pim_static_del
      Src: /src/frr/pimd/pim_nb_config.c:2256,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2257,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2266
      start: 2214
    functionDepth: 6
    functionLinenumber: 2214
    functionLinenumberEnd: 2266
    functionName: lib_interface_pim_address_family_mroute_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - is_pim_interface
    - snprintf
    - pim_static_del
    - yang_dnode_get_parent
    - nb_running_get_entry
    - yang_dnode_get_string
    - yang_dnode_get_pimaddr
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_mroute_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2285,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2286,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2287,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2293,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2301,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_nb_config.c:2302,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_nb_config.c:2305,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2316,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2320,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_nb_config.c:2321,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2323,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2329,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2330,1
    - Dst: pim_static_add
      Src: /src/frr/pimd/pim_nb_config.c:2332,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2333,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2271
    functionDepth: 6
    functionLinenumber: 2271
    functionLinenumberEnd: 2342
    functionName: lib_interface_pim_address_family_mroute_oif_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - is_pim_interface
    - snprintf
    - yang_dnode_get_parent
    - strlcpy
    - nb_running_get_entry
    - yang_dnode_get_string
    - yang_dnode_get_pimaddr
    - pim_static_add
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_mroute_oif_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2344
    functionDepth: 0
    functionLinenumber: 2344
    functionLinenumberEnd: 2356
    functionName: lib_interface_pim_address_family_mroute_oif_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int lib_interface_pim_address_family_mroute_oif_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2373
      start: 2361
    functionDepth: 0
    functionLinenumber: 2361
    functionLinenumberEnd: 2373
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2391,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2393,1
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_nb_config.c:2395,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/pimd/pim_nb_config.c:2396,1
    - Dst: apply_mask
      Src: /src/frr/pimd/pim_nb_config.c:2398,1
    - Dst: pim_no_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2399,1
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_nb_config.c:2404,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2405,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_nb_config.c:2407,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_nb_config.c:2408,1
    - Dst: pim_no_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2414,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2425
      start: 2375
    functionDepth: 6
    functionLinenumber: 2375
    functionLinenumberEnd: 2425
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask
    - pim_get_all_mcast_group
    - yang_dnode_get
    - nb_running_get_entry
    - flog_err
    - yang_dnode_get_string
    - yang_dnode_get_pimaddr
    - yang_dnode_get_prefix
    - pim_no_rp_cmd_worker
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2444,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2446,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/pimd/pim_nb_config.c:2447,1
    - Dst: apply_mask
      Src: /src/frr/pimd/pim_nb_config.c:2448,1
    - Dst: pim_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2454
      start: 2430
    functionDepth: 6
    functionLinenumber: 2430
    functionLinenumberEnd: 2454
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask
    - pim_rp_cmd_worker
    - nb_running_get_entry
    - yang_dnode_get_pimaddr
    - yang_dnode_get_prefix
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2470,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2472,1
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/pimd/pim_nb_config.c:2473,1
    - Dst: apply_mask
      Src: /src/frr/pimd/pim_nb_config.c:2474,1
    - Dst: pim_no_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2476,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2456
    functionDepth: 6
    functionLinenumber: 2456
    functionLinenumberEnd: 2481
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - apply_mask
    - nb_running_get_entry
    - yang_dnode_get_pimaddr
    - yang_dnode_get_prefix
    - pim_no_rp_cmd_worker
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2501,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2503,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2504,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_nb_config.c:2505,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_nb_config.c:2506,1
    - Dst: pim_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2486
    functionDepth: 6
    functionLinenumber: 2486
    functionLinenumberEnd: 2515
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_get_all_mcast_group
    - pim_rp_cmd_worker
    - nb_running_get_entry
    - flog_err
    - yang_dnode_get_string
    - yang_dnode_get_pimaddr
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2532,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2534,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2535,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_nb_config.c:2536,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_nb_config.c:2537,1
    - Dst: pim_no_rp_cmd_worker
      Src: /src/frr/pimd/pim_nb_config.c:2541,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2517
    functionDepth: 6
    functionLinenumber: 2517
    functionLinenumberEnd: 2547
    functionName: routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_get_all_mcast_group
    - nb_running_get_entry
    - flog_err
    - yang_dnode_get_string
    - yang_dnode_get_pimaddr
    - pim_no_rp_cmd_worker
    linkageType: ''
    returnType: int
    signature: "int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2552
    functionDepth: 0
    functionLinenumber: 2552
    functionLinenumberEnd: 2563
    functionName: lib_interface_gmp_address_family_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lib_interface_gmp_address_family_create(struct nb_cb_create_args
      *args)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2576,1
    - Dst: pim_if_membership_clear
      Src: /src/frr/pimd/pim_nb_config.c:2584,1
    - Dst: pim_if_addr_del_all_igmp
      Src: /src/frr/pimd/pim_nb_config.c:2586,1
    - Dst: pim_if_delete
      Src: /src/frr/pimd/pim_nb_config.c:2589,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2565
    functionDepth: 6
    functionLinenumber: 2565
    functionLinenumberEnd: 2593
    functionName: lib_interface_gmp_address_family_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_if_delete
    - pim_if_addr_del_all_igmp
    - nb_running_get_entry
    - pim_if_membership_clear
    linkageType: ''
    returnType: int
    signature: int lib_interface_gmp_address_family_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2610,1
    - Dst: yang_get_list_elements_count
      Src: /src/frr/pimd/pim_nb_config.c:2612,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2615,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2616,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2627,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_nb_config.c:2628,1
    - Dst: pim_cmd_gm_start
      Src: /src/frr/pimd/pim_nb_config.c:2631,1
    - Dst: pim_if_membership_clear
      Src: /src/frr/pimd/pim_nb_config.c:2641,1
    - Dst: pim_if_addr_del_all_igmp
      Src: /src/frr/pimd/pim_nb_config.c:2644,1
    - Dst: gm_ifp_teardown
      Src: /src/frr/pimd/pim_nb_config.c:2646,1
    - Dst: pim_if_delete
      Src: /src/frr/pimd/pim_nb_config.c:2650,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2598
    functionDepth: 6
    functionLinenumber: 2598
    functionLinenumberEnd: 2654
    functionName: lib_interface_gmp_address_family_enable_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - pim_if_addr_del_all_igmp
    - snprintf
    - yang_dnode_get_parent
    - yang_get_list_elements_count
    - pim_cmd_gm_start
    - pim_if_delete
    - nb_running_get_entry
    - yang_dnode_get_string
    - pim_if_membership_clear
    - gm_ifp_teardown
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_enable_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2672,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/pimd/pim_nb_config.c:2678,1
    - Dst: pim_if_membership_refresh
      Src: /src/frr/pimd/pim_nb_config.c:2686,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2692
      start: 2659
    functionDepth: 8
    functionLinenumber: 2659
    functionLinenumberEnd: 2692
    functionName: lib_interface_gmp_address_family_igmp_version_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - pim_if_membership_refresh
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_igmp_version_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2706,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2713
      start: 2694
    functionDepth: 6
    functionLinenumber: 2694
    functionLinenumberEnd: 2713
    functionName: lib_interface_gmp_address_family_igmp_version_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_igmp_version_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2730,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/pimd/pim_nb_config.c:2735,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_nb_config.c:2736,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2741
      start: 2718
    functionDepth: 6
    functionLinenumber: 2718
    functionLinenumberEnd: 2741
    functionName: lib_interface_gmp_address_family_mld_version_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - gm_ifp_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_mld_version_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2755,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_nb_config.c:2761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2766
      start: 2743
    functionDepth: 6
    functionLinenumber: 2743
    functionLinenumberEnd: 2766
    functionName: lib_interface_gmp_address_family_mld_version_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - gm_ifp_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_mld_version_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2784,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:2785,1
    - Dst: change_query_interval
      Src: /src/frr/pimd/pim_nb_config.c:2786,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2797,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:2802,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_nb_config.c:2804,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2808
      start: 2771
    functionDepth: 6
    functionLinenumber: 2771
    functionLinenumberEnd: 2808
    functionName: lib_interface_gmp_address_family_query_interval_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - change_query_interval
    - yang_dnode_get_uint16
    - gm_ifp_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_query_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2825,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:2827,1
    - Dst: change_query_max_response_time
      Src: /src/frr/pimd/pim_nb_config.c:2828,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2833
      start: 2813
    functionDepth: 6
    functionLinenumber: 2813
    functionLinenumberEnd: 2833
    functionName: lib_interface_gmp_address_family_query_max_response_time_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - change_query_max_response_time
    - yang_dnode_get_uint16
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_query_max_response_time_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2851,1
    - Dst: yang_dnode_get_uint16
      Src: /src/frr/pimd/pim_nb_config.c:2854,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_nb_config.c:2858,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2865
      start: 2838
    functionDepth: 6
    functionLinenumber: 2838
    functionLinenumberEnd: 2865
    functionName: lib_interface_gmp_address_family_last_member_query_interval_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint16
    - gm_ifp_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_last_member_query_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2883,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/pimd/pim_nb_config.c:2886,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_nb_config.c:2889,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2895
      start: 2870
    functionDepth: 6
    functionLinenumber: 2870
    functionLinenumberEnd: 2895
    functionName: lib_interface_gmp_address_family_robustness_variable_modify
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_uint8
    - gm_ifp_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_robustness_variable_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_parent
      Src: /src/frr/pimd/pim_nb_config.c:2912,1
    - Dst: is_pim_interface
      Src: /src/frr/pimd/pim_nb_config.c:2913,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_nb_config.c:2914,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2915,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2921,1
    - Dst: pim_is_group_224_0_0_0_24
      Src: /src/frr/pimd/pim_nb_config.c:2924,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2925,1
    - Dst: ipv6_mcast_reserved
      Src: /src/frr/pimd/pim_nb_config.c:2931,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2932,1
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2943,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2944,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2946,1
    - Dst: pim_if_gm_join_add
      Src: /src/frr/pimd/pim_nb_config.c:2948,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2950,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2956
      start: 2900
    functionDepth: 6
    functionLinenumber: 2900
    functionLinenumberEnd: 2956
    functionName: lib_interface_gmp_address_family_static_group_create
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - ipv6_mcast_reserved
    - is_pim_interface
    - pim_if_gm_join_add
    - snprintf
    - yang_dnode_get_parent
    - nb_running_get_entry
    - pim_is_group_224_0_0_0_24
    - yang_dnode_get_string
    - yang_dnode_get_pimaddr
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_static_group_create(\n\tstruct
      nb_cb_create_args *args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/pimd/pim_nb_config.c:2972,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2973,1
    - Dst: yang_dnode_get_pimaddr
      Src: /src/frr/pimd/pim_nb_config.c:2975,1
    - Dst: pim_if_gm_join_del
      Src: /src/frr/pimd/pim_nb_config.c:2977,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_nb_config.c:2980,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2992
      start: 2958
    functionDepth: 6
    functionLinenumber: 2958
    functionLinenumberEnd: 2992
    functionName: lib_interface_gmp_address_family_static_group_destroy
    functionSourceFile: /src/frr/pimd/pim_nb_config.c
    functionUses: 0
    functionsReached:
    - pim_if_gm_join_del
    - yang_dnode_get_pimaddr
    - nb_running_get_entry
    - snprintf
    linkageType: ''
    returnType: int
    signature: "int lib_interface_gmp_address_family_static_group_destroy(\n\tstruct
      nb_cb_destroy_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_usec
      Src: /src/frr/pimd/pim_rpf.c:34,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: pim_rpf_set_refresh_time
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 1
    functionsReached:
    - pim_time_monotonic_usec
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_rpf_set_refresh_time(struct pim_instance *pim)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rpf.c:59,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rpf.c:63,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:66,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:76,1
    - Dst: memset
      Src: /src/frr/pimd/pim_rpf.c:82,1
    - Dst: zclient_lookup_nexthop
      Src: /src/frr/pimd/pim_rpf.c:85,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:89,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_rpf.c:98,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:101,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:112,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_rpf.c:118,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_rpf.c:119,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:122,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_rpf.c:124,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:134,1
    - Dst: pim_time_monotonic_usec
      Src: /src/frr/pimd/pim_rpf.c:148,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 4
    argNames:
    - pim
    - nexthop
    - addr
    - neighbor_needed
    argTypes:
    - struct pim_instance*
    - struct pim_nexthop*
    - pim_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 41
    functionDepth: 4
    functionLinenumber: 41
    functionLinenumberEnd: 153
    functionName: pim_nexthop_lookup
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 1
    functionsReached:
    - zclient_lookup_nexthop
    - pim_neighbor_find
    - if_lookup_by_index
    - memset
    - pim_addr_is_any
    - if_is_loopback
    - pim_addr_cmp
    - zlog_debug
    - pim_time_monotonic_usec
    - pim_if_connected_to_source
    linkageType: ''
    returnType: bool
    signature: "bool pim_nexthop_lookup(struct pim_instance *pim, struct pim_nexthop
      *nexthop,\n\t\t\tpim_addr addr, int neighbor_needed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rpf.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - nh1
    - nh2
    argTypes:
    - struct pim_nexthop*
    - struct pim_nexthop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 162
    functionName: nexthop_mismatch
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int nexthop_mismatch(const struct pim_nexthop *nh1,\n\t\t\t    const
      struct pim_nexthop *nh2)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_rpf.c:170,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:172,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:181,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_rpf.c:186,1
    - Dst: pim_mlag_up_local_add
      Src: /src/frr/pimd/pim_rpf.c:187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - pim
    - up
    - old_cost
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 188
    functionName: pim_rpf_cost_change
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 0
    functionsReached:
    - pim_up_mlag_local_cost
    - zlog_debug
    - pim_up_mlag_is_local
    - pim_mlag_up_local_add
    linkageType: ''
    returnType: void
    signature: "void pim_rpf_cost_change(struct pim_instance *pim,\n\t\tstruct pim_upstream
      *up, uint32_t old_cost)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_STATIC_IIF
      Src: /src/frr/pimd/pim_rpf.c:201,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rpf.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:205,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_rpf.c:212,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rpf.c:219,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rpf.c:221,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_rpf.c:221,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_rpf.c:222,1
    - Dst: pim_find_or_track_nexthop
      Src: /src/frr/pimd/pim_rpf.c:224,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_rpf.c:225,1
    - Dst: pim_upstream_rpf_clear
      Src: /src/frr/pimd/pim_rpf.c:228,1
    - Dst: pim_rpf_cost_change
      Src: /src/frr/pimd/pim_rpf.c:229,1
    - Dst: pim_rpf_find_rpf_addr
      Src: /src/frr/pimd/pim_rpf.c:233,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rpf.c:235,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:237,1
    - Dst: nexthop_mismatch
      Src: /src/frr/pimd/pim_rpf.c:243,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:246,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_rpf.c:254,1
    - Dst: pim_upstream_update_could_assert
      Src: /src/frr/pimd/pim_rpf.c:255,1
    - Dst: pim_upstream_update_my_assert_metric
      Src: /src/frr/pimd/pim_rpf.c:256,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:263,1
    - Dst: pim_upstream_rpf_interface_changed
      Src: /src/frr/pimd/pim_rpf.c:271,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rpf.c:276,1
    - Dst: pim_rpf_cost_change
      Src: /src/frr/pimd/pim_rpf.c:278,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rpf.c:283,1
    - Dst: pim_rpf_cost_change
      Src: /src/frr/pimd/pim_rpf.c:288,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 4
    argNames:
    - pim
    - up
    - old
    - caller
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - struct pim_rpf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 190
    functionDepth: 10
    functionLinenumber: 190
    functionLinenumberEnd: 291
    functionName: pim_rpf_update
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 1
    functionsReached:
    - pim_upstream_update_join_desired
    - pim_find_or_track_nexthop
    - pim_upstream_rpf_interface_changed
    - pim_addr_is_any
    - zlog_debug
    - pim_ecmp_nexthop_lookup
    - pim_rpf_addr_is_inaddr_any
    - pim_upstream_update_could_assert
    - pim_addr_cmp
    - I_am_RP
    - pim_up_mlag_local_cost
    - pim_rpf_find_rpf_addr
    - pim_addr_to_prefix
    - pim_upstream_update_my_assert_metric
    - pim_upstream_rpf_clear
    - nexthop_mismatch
    - PIM_UPSTREAM_FLAG_TEST_STATIC_IIF
    - PIM_UPSTREAM_FLAG_TEST_FHR
    - pim_rpf_cost_change
    linkageType: ''
    returnType: enum pim_rpf_result
    signature: "enum pim_rpf_result pim_rpf_update(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up, struct pim_rpf *old,\n\t\tconst char *caller)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_switch
      Src: /src/frr/pimd/pim_rpf.c:303,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_rpf.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 313
    functionName: pim_upstream_rpf_clear
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 2
    functionsReached:
    - pim_upstream_switch
    - pim_upstream_mroute_iif_update
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_rpf_clear(struct pim_instance *pim,\n\t\t\t    struct
      pim_upstream *up)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_rpf.c:337,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_rpf.c:343,1
    - Dst: pim_if_find_neighbor
      Src: /src/frr/pimd/pim_rpf.c:352,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 360
    functionName: pim_rpf_find_rpf_addr
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 1
    functionsReached:
    - pim_ifchannel_find
    - zlog_warn
    - pim_if_find_neighbor
    linkageType: ''
    returnType: pim_addr
    signature: pim_addr pim_rpf_find_rpf_addr(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rpf.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rpf
    argTypes:
    - struct pim_rpf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 365
    functionName: pim_rpf_addr_is_inaddr_any
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 6
    functionsReached:
    - pim_addr_is_any
    linkageType: ''
    returnType: int
    signature: int pim_rpf_addr_is_inaddr_any(struct pim_rpf *rpf)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rpf1
    - rpf2
    argTypes:
    - struct pim_rpf*
    - struct pim_rpf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: pim_rpf_is_same
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pim_rpf_is_same(struct pim_rpf *rpf1, struct pim_rpf *rpf2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/pimd/pim_rpf.c:380,1
    - Dst: jhash2
      Src: /src/frr/pimd/pim_rpf.c:382,1
    - Dst: array_size
      Src: /src/frr/pimd/pim_rpf.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 385
    functionName: pim_rpf_hash_key
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    - jhash2
    - array_size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int pim_rpf_hash_key(const void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rpf.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 395
    functionName: pim_rpf_equal
    functionSourceFile: /src/frr/pimd/pim_rpf.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: bool
    signature: bool pim_rpf_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_ref_add
      Src: /src/frr/pimd/pim_errors.c:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: pim_error_init
    functionSourceFile: /src/frr/pimd/pim_errors.c
    functionUses: 1
    functionsReached:
    - log_ref_add
    linkageType: ''
    returnType: void
    signature: void pim_error_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: pim_if_init
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_if_init(struct pim_instance *pim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_iface.c:61,1
    - Dst: pim_if_delete
      Src: /src/frr/pimd/pim_iface.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 70
    functionName: pim_if_terminate
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - pim_if_delete
    linkageType: ''
    returnType: void
    signature: void pim_if_terminate(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pim_iface.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sec_addr
    argTypes:
    - struct pim_secondary_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: pim_sec_addr_free
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_sec_addr_free(struct pim_secondary_addr *sec_addr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/pimd/pim_iface.c:90,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_iface.c:91,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_iface.c:94,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_iface.c:95,1
    - Dst: memcmp
      Src: /src/frr/pimd/pim_iface.c:98,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 103
    functionName: pim_sec_addr_comp
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - ntohl
    - memcmp
    linkageType: ''
    returnType: int
    signature: int pim_sec_addr_comp(const void *p1, const void *p2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:110,1
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:111,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_iface.c:113,1
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:139,1
    - Dst: pim_igmp_if_init
      Src: /src/frr/pimd/pim_iface.c:152,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_iface.c:155,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_iface.c:158,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_iface.c:163,1
    - Dst: RB_INIT
      Src: /src/frr/pimd/pim_iface.c:170,1
    - Dst: pim_sock_reset
      Src: /src/frr/pimd/pim_iface.c:174,1
    - Dst: pim_if_add_vif
      Src: /src/frr/pimd/pim_iface.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 5
    argNames:
    - ifp
    - gm
    - pim
    - ispimreg
    - is_vxlan_term
    argTypes:
    - struct interface*
    - bool
    - bool
    - bool
    - bool
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 109
        line_start: 109
        source_file: /src/frr/pimd/pim_iface.c
    - condition: "(pim_ifp->gm_query_max_response_time_dsec <\n\t       pim_ifp->gm_default_query_interval)"
      pos:
        line_end: 139
        line_start: 138
        source_file: /src/frr/pimd/pim_iface.c
    - condition: (!ifp->info)
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 180
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 180
    functionName: pim_if_new
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - XCALLOC
    - RB_INIT
    - list_new
    - pim_sock_reset
    - pim_igmp_if_init
    - pim_if_add_vif
    - assert
    linkageType: ''
    returnType: struct pim_interface
    signature: "struct pim_interface *pim_if_new(struct interface *ifp, bool gm, bool
      pim,\n\t\t\t\t bool ispimreg, bool is_vxlan_term)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:186,1
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:188,1
    - Dst: pim_if_gm_join_del_all
      Src: /src/frr/pimd/pim_iface.c:192,1
    - Dst: pim_ifchannel_delete_all
      Src: /src/frr/pimd/pim_iface.c:195,1
    - Dst: igmp_sock_delete_all
      Src: /src/frr/pimd/pim_iface.c:197,1
    - Dst: pim_sock_delete
      Src: /src/frr/pimd/pim_iface.c:200,1
    - Dst: pim_if_del_vif
      Src: /src/frr/pimd/pim_iface.c:202,1
    - Dst: pim_igmp_if_fini
      Src: /src/frr/pimd/pim_iface.c:204,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_iface.c:206,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_iface.c:207,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_iface.c:208,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_iface.c:211,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_iface.c:213,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_iface.c:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 185
        line_start: 185
        source_file: /src/frr/pimd/pim_iface.c
    - condition: (pim_ifp)
      pos:
        line_end: 187
        line_start: 187
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 217
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 217
    functionName: pim_if_delete
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 4
    functionsReached:
    - assert
    - pim_if_del_vif
    - list_delete
    - igmp_sock_delete_all
    - pim_igmp_if_fini
    - XFREE
    - pim_sock_delete
    - pim_ifchannel_delete_all
    - pim_if_gm_join_del_all
    linkageType: ''
    returnType: void
    signature: void pim_if_delete(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:225,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:227,1
    - Dst: pim_ifchannel_update_could_assert
      Src: /src/frr/pimd/pim_iface.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 230
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 230
    functionName: pim_if_update_could_assert
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_ifchannel_update_could_assert
    - RB_FOREACH
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_if_update_could_assert(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:238,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:240,1
    - Dst: pim_ifchannel_update_my_assert_metric
      Src: /src/frr/pimd/pim_iface.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 237
        line_start: 237
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 243
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 243
    functionName: pim_if_update_my_assert_metric
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - RB_FOREACH
    - pim_ifchannel_update_my_assert_metric
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_if_update_my_assert_metric(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:250,1
    - Dst: pim_if_dr_election
      Src: /src/frr/pimd/pim_iface.c:252,1
    - Dst: pim_if_update_join_desired
      Src: /src/frr/pimd/pim_iface.c:254,1
    - Dst: pim_if_update_could_assert
      Src: /src/frr/pimd/pim_iface.c:255,1
    - Dst: pim_if_update_my_assert_metric
      Src: /src/frr/pimd/pim_iface.c:256,1
    - Dst: pim_if_update_assert_tracking_desired
      Src: /src/frr/pimd/pim_iface.c:257,1
    - Dst: PIM_IF_FLAG_UNSET_HELLO_SENT
      Src: /src/frr/pimd/pim_iface.c:277,1
    - Dst: pim_hello_restart_now
      Src: /src/frr/pimd/pim_iface.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 249
        line_start: 249
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 281
      start: 245
    functionDepth: 6
    functionLinenumber: 245
    functionLinenumberEnd: 281
    functionName: pim_addr_change
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_if_update_join_desired
    - pim_hello_restart_now
    - pim_if_update_assert_tracking_desired
    - PIM_IF_FLAG_UNSET_HELLO_SENT
    - pim_if_dr_election
    - pim_if_update_could_assert
    - pim_if_update_my_assert_metric
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_addr_change(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_find_primary_addr
      Src: /src/frr/pimd/pim_iface.c:294,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_iface.c:296,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:299,1
    - Dst: pim_hello_send
      Src: /src/frr/pimd/pim_iface.c:306,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ifp
    - force_prim_as_any
    - caller
    argTypes:
    - struct interface*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 283
    functionDepth: 5
    functionLinenumber: 283
    functionLinenumberEnd: 312
    functionName: detect_primary_address_change
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_find_primary_addr
    - pim_addr_cmp
    - pim_hello_send
    linkageType: ''
    returnType: int
    signature: "int detect_primary_address_change(struct interface *ifp,\n\t\t\t\t\t
      int force_prim_as_any,\n\t\t\t\t\t const char *caller)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_iface.c:320,1
    - Dst: prefix_cmp
      Src: /src/frr/pimd/pim_iface.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim_ifp
    - addr
    argTypes:
    - struct pim_interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 324
    functionName: pim_sec_addr_find
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - prefix_cmp
    linkageType: ''
    returnType: struct pim_secondary_addr
    signature: 'struct pim_secondary_addr *

      pim_sec_addr_find(struct pim_interface *pim_ifp, struct prefix *addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_iface.c:332,1
    - Dst: pim_sec_addr_free
      Src: /src/frr/pimd/pim_iface.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim_ifp
    - sec_addr
    argTypes:
    - struct pim_interface*
    - struct pim_secondary_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 334
    functionName: pim_sec_addr_del
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - pim_sec_addr_free
    linkageType: ''
    returnType: void
    signature: "void pim_sec_addr_del(struct pim_interface *pim_ifp,\n\t\t\t     struct
      pim_secondary_addr *sec_addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_sec_addr_find
      Src: /src/frr/pimd/pim_iface.c:341,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_iface.c:347,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_iface.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - pim_ifp
    - addr
    argTypes:
    - struct pim_interface*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 354
    functionName: pim_sec_addr_add
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_sec_addr_find
    - listnode_add_sort
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int pim_sec_addr_add(struct pim_interface *pim_ifp, struct prefix *addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/pimd/pim_iface.c:360,1
    - Dst: list_delete_all_node
      Src: /src/frr/pimd/pim_iface.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 367
    functionName: pim_sec_addr_del_all
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - list_isempty
    - list_delete_all_node
    linkageType: ''
    returnType: int
    signature: int pim_sec_addr_del_all(struct pim_interface *pim_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_iface.c:378,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_iface.c:382,1
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_iface.c:383,1
    - Dst: if
      Src: /src/frr/pimd/pim_iface.c:388,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_iface.c:388,1
    - Dst: pim_sec_addr_add
      Src: /src/frr/pimd/pim_iface.c:394,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_iface.c:400,1
    - Dst: pim_sec_addr_del
      Src: /src/frr/pimd/pim_iface.c:403,1
    - Dst: detect_secondary_address_change
      Src: /src/frr/pimd/pim_iface.c:411,1
    - Dst: pim_sec_addr_del_all
      Src: /src/frr/pimd/pim_iface.c:421,1
    - Dst: pim_sec_addr_update
      Src: /src/frr/pimd/pim_iface.c:424,1
    - Dst: detect_address_change
      Src: /src/frr/pimd/pim_iface.c:430,1
    - Dst: detect_primary_address_change
      Src: /src/frr/pimd/pim_iface.c:440,1
    - Dst: detect_secondary_address_change
      Src: /src/frr/pimd/pim_iface.c:444,1
    - Dst: pim_addr_change
      Src: /src/frr/pimd/pim_iface.c:454,1
    - Dst: pim_update_source_set
      Src: /src/frr/pimd/pim_iface.c:461,1
    - Dst: PIM_IFACE_NOT_FOUND
      Src: /src/frr/pimd/pim_iface.c:466,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_iface.c:469,1
    - Dst: detect_address_change
      Src: /src/frr/pimd/pim_iface.c:474,1
    - Dst: pim_if_addr_add
      Src: /src/frr/pimd/pim_iface.c:479,1
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:485,1
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:488,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:493,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:497,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_iface.c:499,1
    - Dst: if
      Src: /src/frr/pimd/pim_iface.c:503,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pimd/pim_iface.c:503,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/pimd/pim_iface.c:504,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/pimd/pim_iface.c:505,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim_iface.c:507,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim_iface.c:511,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:516,1
    - Dst: detect_address_change
      Src: /src/frr/pimd/pim_iface.c:523,1
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_iface.c:535,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (ifc)
      pos:
        line_end: 484
        line_start: 484
        source_file: /src/frr/pimd/pim_iface.c
    - condition: (ifp)
      pos:
        line_end: 487
        line_start: 487
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 542
      start: 369
    functionDepth: 7
    functionLinenumber: 369
    functionLinenumberEnd: 542
    functionName: pim_sec_addr_update
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_sec_addr_update
    - pim_update_source_set
    - pim_addr_from_prefix
    - IN6_IS_ADDR_UNSPECIFIED
    - detect_secondary_address_change
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - if
    - PIM_IFACE_NOT_FOUND
    - pim_addr_change
    - pim_sec_addr_del
    - assert
    - pim_sec_addr_add
    - pim_igmp_sock_lookup_ifaddr
    - pim_addr_cmp
    - detect_primary_address_change
    - IPV6_ADDR_CMP
    - detect_address_change
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - pim_sec_addr_del_all
    - IN6_IS_ADDR_LOOPBACK
    - ALL_LIST_ELEMENTS
    - if_is_operative
    - pim_if_addr_add
    linkageType: ''
    returnType: int
    signature: int pim_sec_addr_update(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_iface.c:665,1
    - Dst: igmp_sock_delete
      Src: /src/frr/pimd/pim_iface.c:668,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 671
    functionName: pim_if_addr_del_igmp
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - igmp_sock_delete
    - pim_igmp_sock_lookup_ifaddr
    linkageType: ''
    returnType: void
    signature: void pim_if_addr_del_igmp(struct connected *ifc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_iface.c:687,1
    - Dst: pim_sock_delete
      Src: /src/frr/pimd/pim_iface.c:701,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 673
    functionDepth: 2
    functionLinenumber: 673
    functionLinenumberEnd: 703
    functionName: pim_if_addr_del_pim
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - pim_sock_delete
    linkageType: ''
    returnType: void
    signature: void pim_if_addr_del_pim(struct connected *ifc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:709,1
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:711,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:714,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_iface.c:716,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim_iface.c:724,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim_iface.c:725,1
    - Dst: memset
      Src: /src/frr/pimd/pim_iface.c:729,1
    - Dst: memset
      Src: /src/frr/pimd/pim_iface.c:730,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_iface.c:732,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pimd/pim_iface.c:733,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/frr/pimd/pim_iface.c:734,1
    - Dst: if
      Src: /src/frr/pimd/pim_iface.c:737,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim_iface.c:737,1
    - Dst: if
      Src: /src/frr/pimd/pim_iface.c:740,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim_iface.c:740,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:750,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_iface.c:755,1
    - Dst: detect_address_change
      Src: /src/frr/pimd/pim_iface.c:759,1
    - Dst: pim_if_addr_del_igmp
      Src: /src/frr/pimd/pim_iface.c:761,1
    - Dst: pim_if_addr_del_pim
      Src: /src/frr/pimd/pim_iface.c:762,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - ifc
    - force_prim_as_any
    argTypes:
    - struct connected*
    - int
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 710
        line_start: 710
        source_file: /src/frr/pimd/pim_iface.c
    - condition: (ifc)
      pos:
        line_end: 708
        line_start: 708
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 763
      start: 705
    functionDepth: 3
    functionLinenumber: 705
    functionLinenumberEnd: 763
    functionName: pim_if_addr_del
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - detect_address_change
    - gm_ifp_update
    - memset
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - ALL_LIST_ELEMENTS_RO
    - pim_if_addr_del_igmp
    - pim_if_addr_del_pim
    - zlog_debug
    - IN6_IS_ADDR_LOOPBACK
    - if
    - IPV6_ADDR_CMP
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_if_addr_del(struct connected *ifc, int force_prim_as_any)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_iface.c:780,1
    - Dst: if
      Src: /src/frr/pimd/pim_iface.c:783,1
    - Dst: pim_if_addr_add
      Src: /src/frr/pimd/pim_iface.c:787,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_iface.c:790,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_iface.c:791,1
    - Dst: pim_sock_add
      Src: /src/frr/pimd/pim_iface.c:792,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:795,1
    - Dst: pim_vxlan_is_term_dev_cfg
      Src: /src/frr/pimd/pim_iface.c:803,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 765
    functionDepth: 3
    functionLinenumber: 765
    functionLinenumberEnd: 805
    functionName: pim_if_addr_add_all
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_addr_is_any
    - if_is_loopback
    - zlog_warn
    - if
    - ALL_LIST_ELEMENTS
    - pim_sock_add
    - pim_vxlan_is_term_dev_cfg
    - pim_if_addr_add
    linkageType: ''
    returnType: void
    signature: void pim_if_addr_add_all(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_iface.c:828,1
    - Dst: if
      Src: /src/frr/pimd/pim_iface.c:831,1
    - Dst: pim_if_addr_del
      Src: /src/frr/pimd/pim_iface.c:834,1
    - Dst: pim_rp_setup
      Src: /src/frr/pimd/pim_iface.c:837,1
    - Dst: pim_i_am_rp_re_evaluate
      Src: /src/frr/pimd/pim_iface.c:838,1
    - Dst: pim_if_addr_del_all_igmp
      Src: /src/frr/pimd/pim_iface.c:841,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_iface.c:851,1
    - Dst: pim_if_addr_del_igmp
      Src: /src/frr/pimd/pim_iface.c:857,1
    - Dst: pim_find_primary_addr
      Src: /src/frr/pimd/pim_iface.c:861,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_iface.c:867,1
    - Dst: if
      Src: /src/frr/pimd/pim_iface.c:871,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_iface.c:871,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_iface.c:876,1
    - Dst: pim_addr
      Src: /src/frr/pimd/pim_iface.c:877,1
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_iface.c:882,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pimd/pim_iface.c:883,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_iface.c:885,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_iface.c:894,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_iface.c:906,1
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_iface.c:912,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_iface.c:926,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_iface.c:928,1
    - Dst: pim_find_primary_addr
      Src: /src/frr/pimd/pim_iface.c:932,1
    - Dst: pim_iface_next_vif_index
      Src: /src/frr/pimd/pim_iface.c:938,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 813
    functionDepth: 4
    functionLinenumber: 813
    functionLinenumberEnd: 956
    functionName: pim_if_addr_del_all
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_addr_from_prefix
    - pim_find_primary_addr
    - pim_if_addr_del_all_igmp
    - if_lookup_by_name
    - pim_iface_next_vif_index
    - pim_addr_is_any
    - IN6_IS_ADDR_LINKLOCAL
    - ALL_LIST_ELEMENTS_RO
    - CHECK_FLAG
    - pim_if_addr_del_igmp
    - pim_addr_cmp
    - pim_rp_setup
    - pim_i_am_rp_re_evaluate
    - pim_addr
    - pim_if_addr_del
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void pim_if_addr_del_all(struct interface *ifp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:969,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:972,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:979,1
    - Dst: strncmp
      Src: /src/frr/pimd/pim_iface.c:983,1
    - Dst: strncmp
      Src: /src/frr/pimd/pim_iface.c:984,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:985,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_iface.c:993,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:994,1
    - Dst: pim_iface_next_vif_index
      Src: /src/frr/pimd/pim_iface.c:1001,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:1004,1
    - Dst: pim_mroute_add_vif
      Src: /src/frr/pimd/pim_iface.c:1017,1
    - Dst: gm_ifp_update
      Src: /src/frr/pimd/pim_iface.c:1025,1
    - Dst: pim_vxlan_add_vif
      Src: /src/frr/pimd/pim_iface.c:1028,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - ifp
    - ispimreg
    - is_vxlan_term
    argTypes:
    - struct interface*
    - bool
    - bool
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 968
        line_start: 968
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 1030
      start: 963
    functionDepth: 2
    functionLinenumber: 963
    functionLinenumberEnd: 1030
    functionName: pim_if_add_vif
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - gm_ifp_update
    - pim_iface_next_vif_index
    - pim_addr_is_any
    - pim_mroute_add_vif
    - pim_vxlan_add_vif
    - zlog_warn
    - strncmp
    - assert
    linkageType: ''
    returnType: int
    signature: int pim_if_add_vif(struct interface *ifp, bool ispimreg, bool is_vxlan_term)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:1037,1
    - Dst: pim_vxlan_del_vif
      Src: /src/frr/pimd/pim_iface.c:1044,1
    - Dst: gm_ifp_teardown
      Src: /src/frr/pimd/pim_iface.c:1046,1
    - Dst: pim_mroute_del_vif
      Src: /src/frr/pimd/pim_iface.c:1048,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1032
    functionDepth: 2
    functionLinenumber: 1032
    functionLinenumberEnd: 1057
    functionName: pim_if_del_vif
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - pim_vxlan_del_vif
    - pim_mroute_del_vif
    - gm_ifp_teardown
    linkageType: ''
    returnType: int
    signature: int pim_if_del_vif(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_iface.c:1065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - pim
    - vif_index
    argTypes:
    - struct pim_instance*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1060
    functionDepth: 0
    functionLinenumber: 1060
    functionLinenumberEnd: 1076
    functionName: pim_if_find_by_vif_index
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 3
    functionsReached:
    - FOR_ALL_INTERFACES
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *pim_if_find_by_vif_index(struct pim_instance *pim,\n\t\t\t\t\t
      \  ifindex_t vif_index)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_iface.c:1086,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pim
    - ifindex
    argTypes:
    - struct pim_instance*
    - ifindex_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1081
    functionDepth: 4
    functionLinenumber: 1081
    functionLinenumberEnd: 1092
    functionName: pim_if_find_vifindex_by_ifindex
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - if_lookup_by_index
    linkageType: ''
    returnType: int
    signature: int pim_if_find_vifindex_by_ifindex(struct pim_instance *pim, ifindex_t
      ifindex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:1099,1
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:1100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 1098
        line_start: 1098
        source_file: /src/frr/pimd/pim_iface.c
    - condition: (pim_ifp->pim_number_of_nonlandelay_neighbors >= 0)
      pos:
        line_end: 1099
        line_start: 1099
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 1103
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1103
    functionName: pim_if_lan_delay_enabled
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int pim_if_lan_delay_enabled(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_lan_delay_enabled
      Src: /src/frr/pimd/pim_iface.c:1107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1105
    functionDepth: 2
    functionLinenumber: 1105
    functionLinenumberEnd: 1114
    functionName: pim_if_effective_propagation_delay_msec
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_if_lan_delay_enabled
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pim_if_effective_propagation_delay_msec(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_lan_delay_enabled
      Src: /src/frr/pimd/pim_iface.c:1118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1116
    functionDepth: 2
    functionLinenumber: 1116
    functionLinenumberEnd: 1125
    functionName: pim_if_effective_override_interval_msec
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_if_lan_delay_enabled
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pim_if_effective_override_interval_msec(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_effective_override_interval_msec
      Src: /src/frr/pimd/pim_iface.c:1133,1
    - Dst: frr_weak_random
      Src: /src/frr/pimd/pim_iface.c:1136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1127
    functionDepth: 3
    functionLinenumber: 1127
    functionLinenumberEnd: 1139
    functionName: pim_if_t_override_msec
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_if_effective_override_interval_msec
    - frr_weak_random
    linkageType: ''
    returnType: int
    signature: int pim_if_t_override_msec(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_effective_propagation_delay_msec
      Src: /src/frr/pimd/pim_iface.c:1143,1
    - Dst: pim_if_effective_override_interval_msec
      Src: /src/frr/pimd/pim_iface.c:1144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1141
    functionDepth: 3
    functionLinenumber: 1141
    functionLinenumberEnd: 1145
    functionName: pim_if_jp_override_interval_msec
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_if_effective_override_interval_msec
    - pim_if_effective_propagation_delay_msec
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pim_if_jp_override_interval_msec(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:1163,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:1167,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_iface.c:1172,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_iface.c:1174,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_iface.c:1178,1
    - Dst: pim_neighbor_find_secondary
      Src: /src/frr/pimd/pim_iface.c:1182,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:1187,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ifp
    - addr
    argTypes:
    - struct interface*
    - pim_addr
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 1162
        line_start: 1162
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 1192
      start: 1156
    functionDepth: 1
    functionLinenumber: 1156
    functionLinenumberEnd: 1192
    functionName: pim_if_find_neighbor
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - pim_addr_to_prefix
    - pim_addr_cmp
    - zlog_warn
    - zlog_debug
    - pim_neighbor_find_secondary
    - assert
    linkageType: ''
    returnType: struct pim_neighbor
    signature: struct pim_neighbor *pim_if_find_neighbor(struct interface *ifp, pim_addr
      addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:1201,1
    - Dst: frr_weak_random
      Src: /src/frr/pimd/pim_iface.c:1208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 1200
        line_start: 1200
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 1212
      start: 1194
    functionDepth: 1
    functionLinenumber: 1194
    functionLinenumberEnd: 1212
    functionName: pim_if_t_suppressed_msec
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    - assert
    linkageType: ''
    returnType: long
    signature: long pim_if_t_suppressed_msec(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pim_iface.c:1216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ij
    argTypes:
    - struct gm_join*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1214
    functionDepth: 0
    functionLinenumber: 1214
    functionLinenumberEnd: 1217
    functionName: gm_join_free
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void gm_join_free(struct gm_join *ij)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_iface.c:1422,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:1424,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_iface.c:1429,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_iface.c:1432,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ifp
    - neigh_addr
    argTypes:
    - struct interface*
    - pim_addr
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 1421
        line_start: 1421
        source_file: /src/frr/pimd/pim_iface.c
    constantsTouched: []
    func_position:
      end: 1434
      start: 1416
    functionDepth: 1
    functionLinenumber: 1416
    functionLinenumberEnd: 1434
    functionName: pim_if_assert_on_neighbor_down
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - assert_action_a5
    - pim_addr_cmp
    - RB_FOREACH
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_if_assert_on_neighbor_down(struct interface *ifp, pim_addr
      neigh_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:1441,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED_UPDATED
      Src: /src/frr/pimd/pim_iface.c:1442,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:1447,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED_UPDATED
      Src: /src/frr/pimd/pim_iface.c:1450,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_iface.c:1454,1
    - Dst: PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED_UPDATED
      Src: /src/frr/pimd/pim_iface.c:1455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1436
    functionDepth: 1
    functionLinenumber: 1436
    functionLinenumberEnd: 1457
    functionName: pim_if_update_join_desired
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_upstream_update_join_desired
    - PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED_UPDATED
    - PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED_UPDATED
    - RB_FOREACH
    - PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED_UPDATED
    linkageType: ''
    returnType: void
    signature: void pim_if_update_join_desired(struct pim_interface *pim_ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:1468,1
    - Dst: pim_ifchannel_update_assert_tracking_desired
      Src: /src/frr/pimd/pim_iface.c:1469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1459
    functionDepth: 1
    functionLinenumber: 1459
    functionLinenumberEnd: 1471
    functionName: pim_if_update_assert_tracking_desired
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - pim_ifchannel_update_assert_tracking_desired
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void pim_if_update_assert_tracking_desired(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_iface.c:1484,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_iface.c:1486,1
    - Dst: if_get_by_name
      Src: /src/frr/pimd/pim_iface.c:1489,1
    - Dst: pim_if_new
      Src: /src/frr/pimd/pim_iface.c:1494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1505
      start: 1478
    functionDepth: 4
    functionLinenumber: 1478
    functionLinenumberEnd: 1505
    functionName: pim_if_create_pimreg
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - if_get_by_name
    - pim_if_new
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pim_if_create_pimreg(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:1546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1551
    functionName: pim_if_ifchannel_count
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    linkageType: ''
    returnType: int
    signature: int pim_if_ifchannel_count(struct pim_interface *pim_ifp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:1561,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:1565,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:1568,1
    - Dst: pim_if_addr_add_all
      Src: /src/frr/pimd/pim_iface.c:1579,1
    - Dst: pim_if_create_pimreg
      Src: /src/frr/pimd/pim_iface.c:1589,1
    - Dst: pim_if_is_vrf_device
      Src: /src/frr/pimd/pim_iface.c:1599,1
    - Dst: pim_if_new
      Src: /src/frr/pimd/pim_iface.c:1603,1
    - Dst: pim_sock_add
      Src: /src/frr/pimd/pim_iface.c:1608,1
    - Dst: strncmp
      Src: /src/frr/pimd/pim_iface.c:1611,1
    - Dst: pim_vxlan_add_term_dev
      Src: /src/frr/pimd/pim_iface.c:1614,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_iface.c:1616,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1555
    functionDepth: 5
    functionLinenumber: 1555
    functionLinenumberEnd: 1623
    functionName: pim_ifp_create
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_if_create_pimreg
    - pim_if_is_vrf_device
    - pim_if_addr_add_all
    - pim_vxlan_add_term_dev
    - zlog_debug
    - strncmp
    - pim_if_new
    - zlog_warn
    - pim_sock_add
    - if_is_operative
    linkageType: ''
    returnType: int
    signature: int pim_ifp_create(struct interface *ifp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:1635,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:1639,1
    - Dst: pim_if_addr_add_all
      Src: /src/frr/pimd/pim_iface.c:1657,1
    - Dst: sscanf
      Src: /src/frr/pimd/pim_iface.c:1663,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_iface.c:1665,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_iface.c:1668,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:1672,1
    - Dst: pim_zebra_interface_set_master
      Src: /src/frr/pimd/pim_iface.c:1677,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1628
    functionDepth: 4
    functionLinenumber: 1628
    functionLinenumberEnd: 1682
    functionName: pim_ifp_up
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_name
    - pim_if_addr_add_all
    - RB_FOREACH
    - zlog_debug
    - if_is_operative
    - pim_zebra_interface_set_master
    - sscanf
    linkageType: ''
    returnType: int
    signature: int pim_ifp_up(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:1690,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:1694,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:1697,1
    - Dst: pim_ifchannel_delete_all
      Src: /src/frr/pimd/pim_iface.c:1698,1
    - Dst: pim_if_addr_del_all
      Src: /src/frr/pimd/pim_iface.c:1703,1
    - Dst: pim_sock_delete
      Src: /src/frr/pimd/pim_iface.c:1711,1
    - Dst: pim_if_del_vif
      Src: /src/frr/pimd/pim_iface.c:1716,1
    - Dst: pim_ifstat_reset
      Src: /src/frr/pimd/pim_iface.c:1717,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1687
    functionDepth: 5
    functionLinenumber: 1687
    functionLinenumberEnd: 1721
    functionName: pim_ifp_down
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_if_del_vif
    - pim_if_addr_del_all
    - pim_ifstat_reset
    - zlog_debug
    - pim_sock_delete
    - if_is_operative
    - pim_ifchannel_delete_all
    linkageType: ''
    returnType: int
    signature: int pim_ifp_down(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_iface.c:1728,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:1732,1
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim_iface.c:1735,1
    - Dst: pim_if_addr_del_all
      Src: /src/frr/pimd/pim_iface.c:1736,1
    - Dst: pim_vxlan_del_term_dev
      Src: /src/frr/pimd/pim_iface.c:1743,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1725
    functionDepth: 5
    functionLinenumber: 1725
    functionLinenumberEnd: 1747
    functionName: pim_ifp_destroy
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - if_is_operative
    - pim_if_addr_del_all
    - pim_vxlan_del_term_dev
    linkageType: ''
    returnType: int
    signature: int pim_ifp_destroy(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1749
    functionDepth: 0
    functionLinenumber: 1749
    functionLinenumberEnd: 1752
    functionName: pim_if_new_hook
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pim_if_new_hook(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_delete
      Src: /src/frr/pimd/pim_iface.c:1757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1754
    functionDepth: 3
    functionLinenumber: 1754
    functionLinenumberEnd: 1760
    functionName: pim_if_delete_hook
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 0
    functionsReached:
    - pim_if_delete
    linkageType: ''
    returnType: int
    signature: int pim_if_delete_hook(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hook_register_prio
      Src: /src/frr/pimd/pim_iface.c:1764,1
    - Dst: hook_register_prio
      Src: /src/frr/pimd/pim_iface.c:1765,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/pimd/pim_iface.c:1767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1762
    functionDepth: 1
    functionLinenumber: 1762
    functionLinenumberEnd: 1769
    functionName: pim_iface_init
    functionSourceFile: /src/frr/pimd/pim_iface.c
    functionUses: 1
    functionsReached:
    - hook_register_prio
    - if_zapi_callbacks
    linkageType: ''
    returnType: void
    signature: void pim_iface_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/pimd/pim_signals.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 26
    functionName: pim_sighup
    functionSourceFile: /src/frr/pimd/pim_signals.c
    functionUses: 0
    functionsReached:
    - zlog_info
    linkageType: ''
    returnType: void
    signature: void pim_sighup(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_signals.c:30,1
    - Dst: pim_terminate
      Src: /src/frr/pimd/pim_signals.c:31,1
    - Dst: exit
      Src: /src/frr/pimd/pim_signals.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 6
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: pim_sigint
    functionSourceFile: /src/frr/pimd/pim_signals.c
    functionUses: 0
    functionsReached:
    - pim_terminate
    - zlog_notice
    - exit
    linkageType: ''
    returnType: void
    signature: void pim_sigint(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_signals.c:37,1
    - Dst: pim_terminate
      Src: /src/frr/pimd/pim_signals.c:38,1
    - Dst: exit
      Src: /src/frr/pimd/pim_signals.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 6
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: pim_sigterm
    functionSourceFile: /src/frr/pimd/pim_signals.c
    functionUses: 0
    functionsReached:
    - pim_terminate
    - zlog_notice
    - exit
    linkageType: ''
    returnType: void
    signature: void pim_sigterm(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/pimd/pim_signals.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: pim_sigusr1
    functionSourceFile: /src/frr/pimd/pim_signals.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void pim_sigusr1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sa
    - timer_str
    argTypes:
    - struct pim_msdp_sa*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: pim_msdp_sa_timer_expiry_log
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_sa_timer_expiry_log(struct pim_msdp_sa *sa,\n\t\t\t\t\t
      const char *timer_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp.c:59,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:62,1
    - Dst: pim_msdp_sa_adv_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:65,1
    - Dst: pim_msdp_pkt_sa_tx
      Src: /src/frr/pimd/pim_msdp.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 67
    functionName: pim_msdp_sa_adv_timer_cb
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_pkt_sa_tx
    - zlog_debug
    - pim_msdp_sa_adv_timer_setup
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_adv_timer_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_msdp.c:71,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_msdp.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pim
    - start
    argTypes:
    - struct pim_instance*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: pim_msdp_sa_adv_timer_setup
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_adv_timer_setup(struct pim_instance *pim, bool start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp.c:84,1
    - Dst: pim_msdp_sa_timer_expiry_log
      Src: /src/frr/pimd/pim_msdp.c:87,1
    - Dst: pim_msdp_sa_deref
      Src: /src/frr/pimd/pim_msdp.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 91
    functionName: pim_msdp_sa_state_timer_cb
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_timer_expiry_log
    - pim_msdp_sa_deref
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_state_timer_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_msdp.c:95,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_msdp.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sa
    - start
    argTypes:
    - struct pim_msdp_sa*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: pim_msdp_sa_state_timer_setup
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_state_timer_setup(struct pim_msdp_sa *sa, bool start)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
      Src: /src/frr/pimd/pim_msdp.c:111,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_MSDP
      Src: /src/frr/pimd/pim_msdp.c:112,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_msdp.c:114,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_msdp.c:119,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - sa
    argTypes:
    - struct pim_msdp_sa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 126
    functionName: pim_msdp_sa_upstream_del
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_upstream_update_join_desired
    - pim_upstream_del
    - zlog_debug
    - PIM_UPSTREAM_FLAG_UNSET_SRC_MSDP
    - PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_upstream_del(struct pim_msdp_sa *sa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_msdp.c:136,1
    - Dst: memset
      Src: /src/frr/pimd/pim_msdp.c:144,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_msdp.c:147,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - sa
    - xg_up
    argTypes:
    - struct pim_msdp_sa*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 158
    functionName: pim_msdp_sa_upstream_add_ok
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - I_am_RP
    - pim_upstream_find
    - memset
    linkageType: ''
    returnType: bool
    signature: "bool pim_msdp_sa_upstream_add_ok(struct pim_msdp_sa *sa,\n\t\t\t\t\tstruct
      pim_upstream *xg_up)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_upstream_add_ok
      Src: /src/frr/pimd/pim_msdp.c:174,1
    - Dst: pim_msdp_sa_upstream_del
      Src: /src/frr/pimd/pim_msdp.c:175,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_msdp.c:184,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
      Src: /src/frr/pimd/pim_msdp.c:185,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:189,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_msdp.c:197,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_msdp.c:203,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:208,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:212,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - sa
    - xg_up
    - ctx
    argTypes:
    - struct pim_msdp_sa*
    - struct pim_upstream*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 216
    functionName: pim_msdp_sa_upstream_update
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_upstream_inherited_olist
    - pim_upstream_add
    - pim_msdp_sa_upstream_add_ok
    - pim_msdp_sa_upstream_del
    - pim_upstream_find
    - zlog_debug
    - PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_sa_upstream_update(struct pim_msdp_sa *sa,\n\t\t\t\t\tstruct
      pim_upstream *xg_up,\n\t\t\t\t\tconst char *ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_state_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:221,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_msdp.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - sa
    argTypes:
    - struct pim_msdp_sa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 224
    functionName: pim_msdp_sa_free
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - XFREE
    - pim_msdp_sa_state_timer_setup
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_free(struct pim_msdp_sa *sa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_msdp.c:231,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_msdp.c:235,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_msdp.c:237,1
    - Dst: hash_get
      Src: /src/frr/pimd/pim_msdp.c:240,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_msdp.c:241,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - pim
    - sg
    - rp
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 226
    functionDepth: 7
    functionLinenumber: 226
    functionLinenumberEnd: 248
    functionName: pim_msdp_sa_new
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - listnode_add_sort
    - XCALLOC
    - snprintfrr
    - zlog_debug
    - pim_time_monotonic_sec
    - hash_get
    linkageType: ''
    returnType: struct pim_msdp_sa
    signature: "struct pim_msdp_sa *pim_msdp_sa_new(struct pim_instance *pim,\n\t\t\t\t\t
      \  pim_sgaddr *sg, struct in_addr rp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_msdp.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 250
    functionDepth: 4
    functionLinenumber: 250
    functionLinenumberEnd: 257
    functionName: pim_msdp_sa_find
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct pim_msdp_sa
    signature: "struct pim_msdp_sa *pim_msdp_sa_find(struct pim_instance *pim,\n\t\t\t\t\t
      \   pim_sgaddr *sg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_find
      Src: /src/frr/pimd/pim_msdp.c:264,1
    - Dst: pim_msdp_sa_new
      Src: /src/frr/pimd/pim_msdp.c:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - pim
    - sg
    - rp
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 8
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: pim_msdp_sa_add
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_new
    - pim_msdp_sa_find
    linkageType: ''
    returnType: struct pim_msdp_sa
    signature: "struct pim_msdp_sa *pim_msdp_sa_add(struct pim_instance *pim,\n\t\t\t\t\t
      \  pim_sgaddr *sg, struct in_addr rp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_upstream_del
      Src: /src/frr/pimd/pim_msdp.c:276,1
    - Dst: pim_msdp_sa_state_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:279,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_msdp.c:282,1
    - Dst: hash_release
      Src: /src/frr/pimd/pim_msdp.c:283,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:286,1
    - Dst: pim_msdp_sa_free
      Src: /src/frr/pimd/pim_msdp.c:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - sa
    argTypes:
    - struct pim_msdp_sa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 291
    functionName: pim_msdp_sa_del
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_upstream_del
    - zlog_debug
    - pim_msdp_sa_free
    - listnode_delete
    - hash_release
    - pim_msdp_sa_state_timer_setup
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_del(struct pim_msdp_sa *sa)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_find
      Src: /src/frr/pimd/pim_msdp.c:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - sa
    - mp
    - rp
    argTypes:
    - struct pim_msdp_sa*
    - struct pim_msdp_peer*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 319
    functionName: pim_msdp_sa_peer_ip_set
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_find
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_sa_peer_ip_set(struct pim_msdp_sa *sa,\n\t\t\t\t    struct
      pim_msdp_peer *mp, struct in_addr rp)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:337,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:350,1
    - Dst: pim_msdp_sa_state_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:353,1
    - Dst: pim_msdp_sa_peer_ip_set
      Src: /src/frr/pimd/pim_msdp.c:355,1
    - Dst: pim_msdp_sa_upstream_update
      Src: /src/frr/pimd/pim_msdp.c:365,1
    - Dst: pim_msdp_sa_del
      Src: /src/frr/pimd/pim_msdp.c:369,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - sa
    - flags
    argTypes:
    - struct pim_msdp_sa*
    - enum pim_msdp_sa_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 329
    functionDepth: 4
    functionLinenumber: 329
    functionLinenumberEnd: 371
    functionName: pim_msdp_sa_deref
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 1
    functionsReached:
    - pim_msdp_sa_upstream_update
    - pim_msdp_sa_peer_ip_set
    - zlog_debug
    - pim_msdp_sa_del
    - pim_msdp_sa_state_timer_setup
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_sa_deref(struct pim_msdp_sa *sa,\n\t\t\t      enum pim_msdp_sa_flags
      flags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_add
      Src: /src/frr/pimd/pim_msdp.c:378,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:388,1
    - Dst: pim_msdp_sa_peer_ip_set
      Src: /src/frr/pimd/pim_msdp.c:392,1
    - Dst: pim_msdp_sa_state_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:394,1
    - Dst: pim_msdp_sa_upstream_update
      Src: /src/frr/pimd/pim_msdp.c:399,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:405,1
    - Dst: pim_msdp_pkt_sa_tx_one
      Src: /src/frr/pimd/pim_msdp.c:410,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - pim
    - mp
    - sg
    - rp
    argTypes:
    - struct pim_instance*
    - struct pim_msdp_peer*
    - pim_sgaddr*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 373
    functionDepth: 9
    functionLinenumber: 373
    functionLinenumberEnd: 414
    functionName: pim_msdp_sa_ref
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_upstream_update
    - pim_msdp_sa_add
    - pim_msdp_sa_peer_ip_set
    - zlog_debug
    - pim_msdp_pkt_sa_tx_one
    - pim_msdp_sa_state_timer_setup
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_sa_ref(struct pim_instance *pim, struct pim_msdp_peer
      *mp,\n\t\t     pim_sgaddr *sg, struct in_addr rp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_is_kat_running
      Src: /src/frr/pimd/pim_msdp.c:436,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_msdp.c:440,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_msdp.c:448,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 453
    functionName: pim_msdp_sa_local_add_ok
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_upstream_is_kat_running
    - PIM_UPSTREAM_FLAG_TEST_FHR
    - I_am_RP
    linkageType: ''
    returnType: bool
    signature: bool pim_msdp_sa_local_add_ok(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_ref
      Src: /src/frr/pimd/pim_msdp.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 455
    functionDepth: 10
    functionLinenumber: 455
    functionLinenumberEnd: 460
    functionName: pim_msdp_sa_local_add
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_ref
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_local_add(struct pim_instance *pim, pim_sgaddr *sg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_find
      Src: /src/frr/pimd/pim_msdp.c:466,1
    - Dst: pim_msdp_sa_deref
      Src: /src/frr/pimd/pim_msdp.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 462
    functionDepth: 5
    functionLinenumber: 462
    functionLinenumberEnd: 470
    functionName: pim_msdp_sa_local_del
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_find
    - pim_msdp_sa_deref
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_local_del(struct pim_instance *pim, pim_sgaddr *sg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_find
      Src: /src/frr/pimd/pim_msdp.c:479,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:482,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:489,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_msdp.c:507,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:518,1
    - Dst: pim_msdp_sa_deref
      Src: /src/frr/pimd/pim_msdp.c:523,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 474
    functionDepth: 5
    functionLinenumber: 474
    functionLinenumberEnd: 525
    functionName: pim_msdp_sa_local_del_on_up_del
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - flog_err
    - pim_msdp_sa_find
    - pim_msdp_sa_deref
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_sa_local_del_on_up_del(struct pim_instance *pim,\n\t\t\t\t\t
      \   pim_sgaddr *sg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sa_local_add_ok
      Src: /src/frr/pimd/pim_msdp.c:540,1
    - Dst: pim_msdp_sa_local_add
      Src: /src/frr/pimd/pim_msdp.c:541,1
    - Dst: pim_msdp_sa_local_del
      Src: /src/frr/pimd/pim_msdp.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 536
    functionDepth: 11
    functionLinenumber: 536
    functionLinenumberEnd: 545
    functionName: pim_msdp_sa_local_update
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_local_add_ok
    - pim_msdp_sa_local_del
    - pim_msdp_sa_local_add
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_local_update(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim_msdp.c:551,1
    - Dst: pim_msdp_sa_local_update
      Src: /src/frr/pimd/pim_msdp.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 553
    functionName: pim_msdp_sa_local_setup
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_local_update
    - frr_each
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sa_local_setup(struct pim_instance *pim)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:569,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp.c:573,1
    - Dst: pim_msdp_sa_local_setup
      Src: /src/frr/pimd/pim_msdp.c:580,1
    - Dst: for
      Src: /src/frr/pimd/pim_msdp.c:582,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_msdp.c:582,1
    - Dst: pim_msdp_sa_deref
      Src: /src/frr/pimd/pim_msdp.c:591,1
    - Dst: pim_msdp_sa_upstream_update
      Src: /src/frr/pimd/pim_msdp.c:595,1
    - Dst: pim_msdp_up_join_state_changed
      Src: /src/frr/pimd/pim_msdp.c:604,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:611,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_msdp.c:615,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_msdp.c:615,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp.c:621,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_msdp.c:622,1
    - Dst: pim_msdp_sa_upstream_update
      Src: /src/frr/pimd/pim_msdp.c:625,1
    - Dst: pim_msdp_up_xg_del
      Src: /src/frr/pimd/pim_msdp.c:629,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:635,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_msdp.c:639,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_msdp.c:639,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp.c:645,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_msdp.c:646,1
    - Dst: pim_msdp_sa_upstream_update
      Src: /src/frr/pimd/pim_msdp.c:649,1
    - Dst: pim_msdp_up_del
      Src: /src/frr/pimd/pim_msdp.c:653,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:656,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_msdp.c:658,1
    - Dst: pim_msdp_up_xg_del
      Src: /src/frr/pimd/pim_msdp.c:659,1
    - Dst: pim_msdp_sa_local_del_on_up_del
      Src: /src/frr/pimd/pim_msdp.c:661,1
    - Dst: pim_msdp_sa_hash_key_make
      Src: /src/frr/pimd/pim_msdp.c:666,1
    - Dst: pim_sgaddr_hash
      Src: /src/frr/pimd/pim_msdp.c:670,1
    - Dst: pim_msdp_sa_hash_eq
      Src: /src/frr/pimd/pim_msdp.c:673,1
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim_msdp.c:678,1
    - Dst: pim_msdp_sa_comp
      Src: /src/frr/pimd/pim_msdp.c:681,1
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim_msdp.c:686,1
    - Dst: pim_msdp_peer_rpf_check
      Src: /src/frr/pimd/pim_msdp.c:691,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_msdp.c:700,1
    - Dst: pim_msdp_state_dump
      Src: /src/frr/pimd/pim_msdp.c:709,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:717,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:720,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:723,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:726,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:729,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 557
    functionDepth: 6
    functionLinenumber: 557
    functionLinenumberEnd: 730
    functionName: pim_msdp_i_am_rp_changed
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_sa_upstream_update
    - pim_msdp_sa_hash_key_make
    - pim_msdp_sa_deref
    - pim_msdp_sa_local_del_on_up_del
    - snprintf
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - for
    - pim_msdp_sa_comp
    - pim_msdp_up_join_state_changed
    - pim_msdp_state_dump
    - pim_addr_cmp
    - pim_sgaddr_cmp
    - pim_sgaddr_hash
    - pim_msdp_peer_rpf_check
    - pim_msdp_up_xg_del
    - pim_nexthop_lookup
    - pim_msdp_sa_local_setup
    - pim_msdp_up_del
    - ALL_LIST_ELEMENTS
    - pim_msdp_sa_hash_eq
    linkageType: ''
    returnType: void
    signature: void pim_msdp_i_am_rp_changed(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_state_dump
      Src: /src/frr/pimd/pim_msdp.c:738,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 740
    functionName: pim_msdp_peer_state_chg_log
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_msdp_state_dump
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_state_chg_log(struct pim_msdp_peer *mp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_state_chg_log
      Src: /src/frr/pimd/pim_msdp.c:749,1
    - Dst: pim_msdp_peer_cr_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 745
    functionDepth: 2
    functionLinenumber: 745
    functionLinenumberEnd: 753
    functionName: pim_msdp_peer_connect
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_state_chg_log
    - pim_msdp_peer_cr_timer_setup
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_connect(struct pim_msdp_peer *mp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_state_chg_log
      Src: /src/frr/pimd/pim_msdp.c:760,1
    - Dst: pim_msdp_sock_listen
      Src: /src/frr/pimd/pim_msdp.c:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 756
    functionDepth: 2
    functionLinenumber: 756
    functionLinenumberEnd: 769
    functionName: pim_msdp_peer_listen
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_state_chg_log
    - pim_msdp_sock_listen
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_listen(struct pim_msdp_peer *mp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_msdp.c:780,1
    - Dst: pim_msdp_peer_state_chg_log
      Src: /src/frr/pimd/pim_msdp.c:783,1
    - Dst: pim_msdp_peer_cr_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:787,1
    - Dst: pim_msdp_pkt_ka_tx
      Src: /src/frr/pimd/pim_msdp.c:790,1
    - Dst: pim_msdp_peer_ka_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:791,1
    - Dst: pim_msdp_peer_hold_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:792,1
    - Dst: pim_msdp_pkt_sa_tx_to_one_peer
      Src: /src/frr/pimd/pim_msdp.c:794,1
    - Dst: PIM_MSDP_PEER_WRITE_ON
      Src: /src/frr/pimd/pim_msdp.c:796,1
    - Dst: PIM_MSDP_PEER_READ_ON
      Src: /src/frr/pimd/pim_msdp.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 773
    functionDepth: 2
    functionLinenumber: 773
    functionLinenumberEnd: 798
    functionName: pim_msdp_peer_established
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_state_chg_log
    - pim_msdp_peer_ka_timer_setup
    - pim_msdp_peer_cr_timer_setup
    - pim_msdp_peer_hold_timer_setup
    - PIM_MSDP_PEER_WRITE_ON
    - pim_msdp_pkt_ka_tx
    - pim_msdp_pkt_sa_tx_to_one_peer
    - pim_time_monotonic_sec
    - PIM_MSDP_PEER_READ_ON
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_established(struct pim_msdp_peer *mp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_state_chg_log
      Src: /src/frr/pimd/pim_msdp.c:809,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:814,1
    - Dst: PIM_MSDP_PEER_READ_OFF
      Src: /src/frr/pimd/pim_msdp.c:818,1
    - Dst: PIM_MSDP_PEER_WRITE_OFF
      Src: /src/frr/pimd/pim_msdp.c:819,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_msdp.c:824,1
    - Dst: stream_fifo_clean
      Src: /src/frr/pimd/pim_msdp.c:826,1
    - Dst: pim_msdp_peer_ka_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:829,1
    - Dst: pim_msdp_peer_cr_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:830,1
    - Dst: pim_msdp_peer_hold_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:831,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp.c:835,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - mp
    - chg_state
    argTypes:
    - struct pim_msdp_peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 801
    functionDepth: 2
    functionLinenumber: 801
    functionLinenumberEnd: 838
    functionName: pim_msdp_peer_stop_tcp_conn
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_state_chg_log
    - pim_msdp_peer_ka_timer_setup
    - PIM_MSDP_PEER_READ_OFF
    - stream_fifo_clean
    - pim_msdp_peer_cr_timer_setup
    - pim_msdp_peer_hold_timer_setup
    - close
    - zlog_debug
    - stream_reset
    - PIM_MSDP_PEER_WRITE_OFF
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_stop_tcp_conn(struct pim_msdp_peer *mp, bool chg_state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:844,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:845,1
    - Dst: pim_msdp_peer_stop_tcp_conn
      Src: /src/frr/pimd/pim_msdp.c:849,1
    - Dst: PIM_MSDP_PEER_IS_LISTENER
      Src: /src/frr/pimd/pim_msdp.c:850,1
    - Dst: pim_msdp_peer_listen
      Src: /src/frr/pimd/pim_msdp.c:851,1
    - Dst: pim_msdp_peer_connect
      Src: /src/frr/pimd/pim_msdp.c:853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - mp
    - rc_str
    argTypes:
    - struct pim_msdp_peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 841
    functionDepth: 3
    functionLinenumber: 841
    functionLinenumberEnd: 855
    functionName: pim_msdp_peer_reset_tcp_conn
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - PIM_MSDP_PEER_IS_LISTENER
    - snprintf
    - pim_msdp_peer_stop_tcp_conn
    - zlog_debug
    - pim_msdp_peer_listen
    - pim_msdp_peer_connect
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_reset_tcp_conn(struct pim_msdp_peer *mp, const char
      *rc_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mp
    - timer_str
    argTypes:
    - struct pim_msdp_peer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 857
    functionDepth: 1
    functionLinenumber: 857
    functionLinenumberEnd: 861
    functionName: pim_msdp_peer_timer_expiry_log
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_peer_timer_expiry_log(struct pim_msdp_peer *mp,\n\t\t\t\t\t
      \  const char *timer_str)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp.c:868,1
    - Dst: pim_msdp_peer_timer_expiry_log
      Src: /src/frr/pimd/pim_msdp.c:871,1
    - Dst: pim_msdp_peer_state_chg_log
      Src: /src/frr/pimd/pim_msdp.c:879,1
    - Dst: pim_msdp_peer_reset_tcp_conn
      Src: /src/frr/pimd/pim_msdp.c:881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 864
    functionDepth: 4
    functionLinenumber: 864
    functionLinenumberEnd: 882
    functionName: pim_msdp_peer_hold_timer_cb
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_state_chg_log
    - pim_msdp_peer_reset_tcp_conn
    - pim_msdp_peer_timer_expiry_log
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_hold_timer_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_msdp.c:887,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_msdp.c:889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mp
    - start
    argTypes:
    - struct pim_msdp_peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 892
    functionName: pim_msdp_peer_hold_timer_setup
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_hold_timer_setup(struct pim_msdp_peer *mp, bool
      start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp.c:900,1
    - Dst: pim_msdp_peer_timer_expiry_log
      Src: /src/frr/pimd/pim_msdp.c:903,1
    - Dst: pim_msdp_pkt_ka_tx
      Src: /src/frr/pimd/pim_msdp.c:906,1
    - Dst: pim_msdp_peer_ka_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:907,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 896
    functionDepth: 2
    functionLinenumber: 896
    functionLinenumberEnd: 908
    functionName: pim_msdp_peer_ka_timer_cb
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_ka_timer_setup
    - pim_msdp_pkt_ka_tx
    - pim_msdp_peer_timer_expiry_log
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_ka_timer_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_msdp.c:912,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_msdp.c:914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mp
    - start
    argTypes:
    - struct pim_msdp_peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 910
    functionDepth: 1
    functionLinenumber: 910
    functionLinenumberEnd: 917
    functionName: pim_msdp_peer_ka_timer_setup
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 3
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_ka_timer_setup(struct pim_msdp_peer *mp, bool start)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_sock_connect
      Src: /src/frr/pimd/pim_msdp.c:923,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:926,1
    - Dst: pim_msdp_peer_cr_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:934,1
    - Dst: pim_msdp_peer_established
      Src: /src/frr/pimd/pim_msdp.c:939,1
    - Dst: PIM_MSDP_PEER_WRITE_ON
      Src: /src/frr/pimd/pim_msdp.c:945,1
    - Dst: PIM_MSDP_PEER_READ_ON
      Src: /src/frr/pimd/pim_msdp.c:946,1
    - Dst: pim_msdp_peer_cr_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:950,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 919
    functionDepth: 3
    functionLinenumber: 919
    functionLinenumberEnd: 953
    functionName: pim_msdp_peer_active_connect
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_cr_timer_setup
    - PIM_MSDP_PEER_WRITE_ON
    - zlog_debug
    - pim_msdp_peer_established
    - PIM_MSDP_PEER_READ_ON
    - pim_msdp_sock_connect
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_active_connect(struct pim_msdp_peer *mp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp.c:960,1
    - Dst: pim_msdp_peer_timer_expiry_log
      Src: /src/frr/pimd/pim_msdp.c:963,1
    - Dst: PIM_MSDP_PEER_IS_LISTENER
      Src: /src/frr/pimd/pim_msdp.c:966,1
    - Dst: pim_msdp_peer_active_connect
      Src: /src/frr/pimd/pim_msdp.c:970,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 956
    functionDepth: 4
    functionLinenumber: 956
    functionLinenumberEnd: 971
    functionName: pim_msdp_peer_cr_timer_cb
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_active_connect
    - pim_msdp_peer_timer_expiry_log
    - PIM_MSDP_PEER_IS_LISTENER
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_cr_timer_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_msdp.c:975,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_msdp.c:977,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - mp
    - start
    argTypes:
    - struct pim_msdp_peer*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 981
    functionName: pim_msdp_peer_cr_timer_setup
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 4
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_cr_timer_setup(struct pim_msdp_peer *mp, bool start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_hold_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 984
    functionDepth: 2
    functionLinenumber: 984
    functionLinenumberEnd: 989
    functionName: pim_msdp_peer_pkt_rxed
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_hold_timer_setup
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_pkt_rxed(struct pim_msdp_peer *mp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_ka_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:996,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:998,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 993
    functionDepth: 2
    functionLinenumber: 993
    functionLinenumberEnd: 1002
    functionName: pim_msdp_peer_pkt_txed
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_ka_timer_setup
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_pkt_txed(struct pim_msdp_peer *mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockunion_init
      Src: /src/frr/pimd/pim_msdp.c:1006,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - su
    - addr
    argTypes:
    - union sockunion*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1004
    functionDepth: 1
    functionLinenumber: 1004
    functionLinenumberEnd: 1012
    functionName: pim_msdp_addr2su
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - sockunion_init
    linkageType: ''
    returnType: void
    signature: void pim_msdp_addr2su(union sockunion *su, struct in_addr addr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_enable
      Src: /src/frr/pimd/pim_msdp.c:1022,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_msdp.c:1024,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_msdp.c:1028,1
    - Dst: pim_msdp_addr2su
      Src: /src/frr/pimd/pim_msdp.c:1029,1
    - Dst: pim_msdp_addr2su
      Src: /src/frr/pimd/pim_msdp.c:1033,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_msdp.c:1036,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_msdp.c:1040,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1042,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1042,1
    - Dst: stream_new
      Src: /src/frr/pimd/pim_msdp.c:1047,1
    - Dst: stream_fifo_new
      Src: /src/frr/pimd/pim_msdp.c:1048,1
    - Dst: hash_get
      Src: /src/frr/pimd/pim_msdp.c:1051,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_msdp.c:1052,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1055,1
    - Dst: pim_msdp_peer_state_chg_log
      Src: /src/frr/pimd/pim_msdp.c:1057,1
    - Dst: PIM_MSDP_PEER_IS_LISTENER
      Src: /src/frr/pimd/pim_msdp.c:1061,1
    - Dst: pim_msdp_peer_listen
      Src: /src/frr/pimd/pim_msdp.c:1062,1
    - Dst: pim_msdp_peer_connect
      Src: /src/frr/pimd/pim_msdp.c:1064,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 4
    argNames:
    - pim
    - peer
    - local
    - mesh_group_name
    argTypes:
    - struct pim_instance*
    - struct in_addr*
    - struct in_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1015
    functionDepth: 3
    functionLinenumber: 1015
    functionLinenumberEnd: 1067
    functionName: pim_msdp_peer_add
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 1
    functionsReached:
    - pim_msdp_peer_state_chg_log
    - pim_msdp_enable
    - stream_new
    - PIM_MSDP_PEER_IS_LISTENER
    - listnode_add_sort
    - XCALLOC
    - pim_msdp_addr2su
    - stream_fifo_new
    - strlcpy
    - zlog_debug
    - hash_get
    - pim_msdp_peer_listen
    - pim_msdp_peer_connect
    - pim_inet4_dump
    - ntohl
    - XSTRDUP
    linkageType: ''
    returnType: struct pim_msdp_peer
    signature: "struct pim_msdp_peer *pim_msdp_peer_add(struct pim_instance *pim,\n\t\t\t\t\tconst
      struct in_addr *peer,\n\t\t\t\t\tconst struct in_addr *local,\n\t\t\t\t\tconst
      char *mesh_group_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_msdp.c:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - peer_addr
    argTypes:
    - struct pim_instance*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1069
    functionDepth: 4
    functionLinenumber: 1069
    functionLinenumberEnd: 1076
    functionName: pim_msdp_peer_find
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 1
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct pim_msdp_peer
    signature: "struct pim_msdp_peer *pim_msdp_peer_find(struct pim_instance *pim,\n\t\t\t\t\t
      struct in_addr peer_addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_stop_tcp_conn
      Src: /src/frr/pimd/pim_msdp.c:1085,1
    - Dst: stream_free
      Src: /src/frr/pimd/pim_msdp.c:1088,1
    - Dst: stream_fifo_free
      Src: /src/frr/pimd/pim_msdp.c:1092,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_msdp.c:1095,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_msdp.c:1098,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1079
    functionDepth: 4
    functionLinenumber: 1079
    functionLinenumberEnd: 1099
    functionName: pim_msdp_peer_free
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - XFREE
    - stream_free
    - stream_fifo_free
    - pim_msdp_peer_stop_tcp_conn
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_free(struct pim_msdp_peer *mp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_stop_tcp_conn
      Src: /src/frr/pimd/pim_msdp.c:1108,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_msdp.c:1111,1
    - Dst: hash_release
      Src: /src/frr/pimd/pim_msdp.c:1112,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1115,1
    - Dst: pim_msdp_peer_free
      Src: /src/frr/pimd/pim_msdp.c:1119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1102
    functionDepth: 5
    functionLinenumber: 1102
    functionLinenumberEnd: 1121
    functionName: pim_msdp_peer_del
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 1
    functionsReached:
    - pim_msdp_peer_stop_tcp_conn
    - pim_msdp_peer_free
    - zlog_debug
    - listnode_delete
    - hash_release
    linkageType: ''
    returnType: void
    signature: void pim_msdp_peer_del(struct pim_msdp_peer **mp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_stop_tcp_conn
      Src: /src/frr/pimd/pim_msdp.c:1126,1
    - Dst: PIM_MSDP_PEER_IS_LISTENER
      Src: /src/frr/pimd/pim_msdp.c:1130,1
    - Dst: pim_msdp_peer_listen
      Src: /src/frr/pimd/pim_msdp.c:1131,1
    - Dst: pim_msdp_peer_connect
      Src: /src/frr/pimd/pim_msdp.c:1133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mp
    - addr
    argTypes:
    - struct pim_msdp_peer*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1123
    functionDepth: 3
    functionLinenumber: 1123
    functionLinenumberEnd: 1134
    functionName: pim_msdp_peer_change_source
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 1
    functionsReached:
    - pim_msdp_peer_listen
    - pim_msdp_peer_connect
    - PIM_MSDP_PEER_IS_LISTENER
    - pim_msdp_peer_stop_tcp_conn
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_peer_change_source(struct pim_msdp_peer *mp,\n\t\t\t\t
      const struct in_addr *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/pimd/pim_msdp.c:1140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1137
    functionDepth: 3
    functionLinenumber: 1137
    functionLinenumberEnd: 1141
    functionName: pim_msdp_peer_hash_key_make
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int pim_msdp_peer_hash_key_make(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1143
    functionDepth: 0
    functionLinenumber: 1143
    functionLinenumberEnd: 1149
    functionName: pim_msdp_peer_hash_eq
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pim_msdp_peer_hash_eq(const void *p1, const void *p2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1156,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1156,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1159,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - p1
    - p2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1151
    functionDepth: 0
    functionLinenumber: 1151
    functionLinenumberEnd: 1163
    functionName: pim_msdp_peer_comp
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: int
    signature: int pim_msdp_peer_comp(const void *p1, const void *p2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_msdp.c:1175,1
    - Dst: pim_msdp_mg_mbr_del
      Src: /src/frr/pimd/pim_msdp.c:1176,1
    - Dst: if
      Src: /src/frr/pimd/pim_msdp.c:1178,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1179,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_msdp.c:1183,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_msdp.c:1186,1
    - Dst: SLIST_REMOVE
      Src: /src/frr/pimd/pim_msdp.c:1188,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_msdp.c:1189,1
    - Dst: pim_msdp_mg_new
      Src: /src/frr/pimd/pim_msdp.c:1192,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_msdp.c:1197,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_msdp.c:1199,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_msdp.c:1200,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1205,1
    - Dst: SLIST_INSERT_HEAD
      Src: /src/frr/pimd/pim_msdp.c:1208,1
    - Dst: pim_msdp_mg_mbr_comp
      Src: /src/frr/pimd/pim_msdp.c:1213,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1218,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1218,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1221,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_msdp.c:1221,1
    - Dst: pim_msdp_mg_mbr_free
      Src: /src/frr/pimd/pim_msdp.c:1227,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_msdp.c:1229,1
    - Dst: pim_msdp_mg_mbr_del
      Src: /src/frr/pimd/pim_msdp.c:1232,1
    - Dst: pim_msdp_peer_del
      Src: /src/frr/pimd/pim_msdp.c:1236,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_msdp.c:1239,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_msdp.c:1242,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1243,1
    - Dst: pim_msdp_mg_mbr_free
      Src: /src/frr/pimd/pim_msdp.c:1246,1
    - Dst: pim_msdp_src_del
      Src: /src/frr/pimd/pim_msdp.c:1252,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp.c:1258,1
    - Dst: pim_msdp_peer_del
      Src: /src/frr/pimd/pim_msdp.c:1260,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1263,1
    - Dst: pim_msdp_config_write
      Src: /src/frr/pimd/pim_msdp.c:1269,1
    - Dst: SLIST_EMPTY
      Src: /src/frr/pimd/pim_msdp.c:1278,1
    - Dst: SLIST_FOREACH
      Src: /src/frr/pimd/pim_msdp.c:1281,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_msdp.c:1283,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_msdp.c:1285,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp.c:1290,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_msdp.c:1291,1
    - Dst: pim_msdp_peer_config_write
      Src: /src/frr/pimd/pim_msdp.c:1300,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp.c:1307,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_msdp.c:1312,1
    - Dst: pim_msdp_enable
      Src: /src/frr/pimd/pim_msdp.c:1322,1
    - Dst: stream_new
      Src: /src/frr/pimd/pim_msdp.c:1329,1
    - Dst: pim_msdp_sa_adv_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:1330,1
    - Dst: pim_msdp_sa_local_setup
      Src: /src/frr/pimd/pim_msdp.c:1332,1
    - Dst: pim_msdp_init
      Src: /src/frr/pimd/pim_msdp.c:1336,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:1341,1
    - Dst: hash_create
      Src: /src/frr/pimd/pim_msdp.c:1343,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_msdp.c:1345,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp.c:1349,1
    - Dst: hash_create
      Src: /src/frr/pimd/pim_msdp.c:1351,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_msdp.c:1353,1
    - Dst: pim_msdp_exit
      Src: /src/frr/pimd/pim_msdp.c:1359,1
    - Dst: pim_msdp_sa_adv_timer_setup
      Src: /src/frr/pimd/pim_msdp.c:1363,1
    - Dst: SLIST_FIRST
      Src: /src/frr/pimd/pim_msdp.c:1366,1
    - Dst: pim_msdp_mg_free
      Src: /src/frr/pimd/pim_msdp.c:1367,1
    - Dst: hash_clean_and_free
      Src: /src/frr/pimd/pim_msdp.c:1369,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_msdp.c:1372,1
    - Dst: hash_clean_and_free
      Src: /src/frr/pimd/pim_msdp.c:1375,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_msdp.c:1378,1
    - Dst: stream_free
      Src: /src/frr/pimd/pim_msdp.c:1382,1
    - Dst: pim_msdp_mg_src_add
      Src: /src/frr/pimd/pim_msdp.c:1386,1
    - Dst: pim_msdp_src_del
      Src: /src/frr/pimd/pim_msdp.c:1393,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1401,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp.c:1407,1
    - Dst: pim_msdp_peer_add
      Src: /src/frr/pimd/pim_msdp.c:1408,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1412,1
    - Dst: pim_msdp_mg_mbr_add
      Src: /src/frr/pimd/pim_msdp.c:1416,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_msdp.c:1422,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_msdp.c:1424,1
    - Dst: pim_msdp_peer_add
      Src: /src/frr/pimd/pim_msdp.c:1428,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp.c:1432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - mgp
    argTypes:
    - struct pim_instance*
    - struct pim_msdp_mg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1166
    functionDepth: 6
    functionLinenumber: 1166
    functionLinenumberEnd: 1438
    functionName: pim_msdp_mg_free
    functionSourceFile: /src/frr/pimd/pim_msdp.c
    functionUses: 2
    functionsReached:
    - list_delete
    - hash_create
    - SLIST_FIRST
    - pim_msdp_exit
    - pim_msdp_sa_adv_timer_setup
    - pim_msdp_mg_free
    - SLIST_INSERT_HEAD
    - snprintf
    - XCALLOC
    - SLIST_FOREACH
    - pim_msdp_mg_new
    - ALL_LIST_ELEMENTS_RO
    - pim_msdp_init
    - pim_msdp_src_del
    - pim_msdp_mg_mbr_add
    - zlog_debug
    - if
    - pim_msdp_config_write
    - ntohl
    - pim_msdp_mg_mbr_del
    - hash_clean_and_free
    - stream_free
    - pim_msdp_enable
    - vty_out
    - listnode_add_sort
    - pim_msdp_mg_mbr_free
    - pim_msdp_peer_config_write
    - XFREE
    - SLIST_REMOVE
    - listnode_delete
    - XSTRDUP
    - pim_msdp_mg_src_add
    - stream_new
    - SLIST_EMPTY
    - pim_msdp_mg_mbr_comp
    - pim_msdp_peer_add
    - pim_msdp_sa_local_setup
    - list_new
    - pim_msdp_peer_del
    - ALL_LIST_ELEMENTS
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: void pim_msdp_mg_free(struct pim_instance *pim, struct pim_msdp_mg
      **mgp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/pimd/pim_rp.c:48,1
    - Dst: hash_clean_and_free
      Src: /src/frr/pimd/pim_rp.c:50,1
    - Dst: nexthops_free
      Src: /src/frr/pimd/pim_rp.c:52,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 55
    functionName: pim_rp_list_hash_clean
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - list_delete
    - nexthops_free
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_rp_list_hash_clean(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:59,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rp_info
    argTypes:
    - struct rp_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: pim_rp_info_free
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_rp_info_free(struct rp_info *rp_info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:73,1
    - Dst: prefix_cmp
      Src: /src/frr/pimd/pim_rp.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 85
    functionName: pim_rp_list_cmp
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    - prefix_cmp
    linkageType: ''
    returnType: int
    signature: int pim_rp_list_cmp(void *v1, void *v2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/pimd/pim_rp.c:92,1
    - Dst: route_table_init
      Src: /src/frr/pimd/pim_rp.c:96,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_rp.c:98,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_rp.c:100,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_rp.c:101,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_rp.c:103,1
    - Dst: route_table_finish
      Src: /src/frr/pimd/pim_rp.c:104,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:105,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_rp.c:110,1
    - Dst: route_node_get
      Src: /src/frr/pimd/pim_rp.c:112,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:115,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/pimd/pim_rp.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 87
    functionDepth: 5
    functionLinenumber: 87
    functionLinenumberEnd: 118
    functionName: pim_rp_init
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - list_delete
    - pim_get_all_mcast_group
    - route_table_finish
    - XCALLOC
    - listnode_add
    - route_node_get_lock_count
    - route_table_init
    - flog_err
    - route_node_get
    - list_new
    - zlog_debug
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_rp_init(struct pim_instance *pim)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: route_table_finish
      Src: /src/frr/pimd/pim_rp.c:123,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_rp.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: pim_rp_free
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - list_delete
    - route_table_finish
    linkageType: ''
    returnType: void
    signature: void pim_rp_free(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:139,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:140,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_rp.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - pim
    - rp
    - plist
    argTypes:
    - struct pim_instance*
    - pim_addr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: pim_rp_find_prefix_list
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - pim_addr_cmp
    linkageType: ''
    returnType: struct rp_info
    signature: "struct rp_info *pim_rp_find_prefix_list(struct pim_instance *pim,\n\t\t\t\t\t
      \      pim_addr rp, const char *plist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:157,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_rp.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - pim
    - plist
    argTypes:
    - struct pim_instance*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: pim_rp_prefix_list_used
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    linkageType: ''
    returnType: int
    signature: int pim_rp_prefix_list_used(struct pim_instance *pim, const char *plist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:176,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:177,1
    - Dst: prefix_same
      Src: /src/frr/pimd/pim_rp.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - pim
    - rp
    - group
    argTypes:
    - struct pim_instance*
    - pim_addr
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 183
    functionName: pim_rp_find_exact
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - prefix_same
    - pim_addr_cmp
    linkageType: ''
    returnType: struct rp_info
    signature: "struct rp_info *pim_rp_find_exact(struct pim_instance *pim, pim_addr
      rp,\n\t\t\t\t\t const struct prefix *group)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:220,1
    - Dst: prefix_list_lookup
      Src: /src/frr/pimd/pim_rp.c:222,1
    - Dst: prefix_list_apply_ext
      Src: /src/frr/pimd/pim_rp.c:224,1
    - Dst: route_node_match
      Src: /src/frr/pimd/pim_rp.c:241,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_rp.c:243,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:253,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:257,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_rp.c:261,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 2
    argNames:
    - pim
    - group
    argTypes:
    - struct pim_instance*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 208
    functionDepth: 3
    functionLinenumber: 208
    functionLinenumberEnd: 289
    functionName: pim_rp_find_match_group
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 3
    functionsReached:
    - route_unlock_node
    - prefix_list_lookup
    - ALL_LIST_ELEMENTS_RO
    - prefix_list_apply_ext
    - flog_err
    - zlog_debug
    - route_node_match
    linkageType: ''
    returnType: struct rp_info
    signature: "struct rp_info *pim_rp_find_match_group(struct pim_instance *pim,\n\t\t\t\t\t
      \      const struct prefix *group)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_i_am_rp_changed
      Src: /src/frr/pimd/pim_rp.c:300,1
    - Dst: pim_upstream_reeval_use_rpt
      Src: /src/frr/pimd/pim_rp.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: pim_rp_refresh_group_to_rp_mapping
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 1
    functionsReached:
    - pim_upstream_reeval_use_rpt
    - pim_msdp_i_am_rp_changed
    linkageType: ''
    returnType: void
    signature: void pim_rp_refresh_group_to_rp_mapping(struct pim_instance *pim)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:311,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_rp.c:313,1
    - Dst: prefix_list_name
      Src: /src/frr/pimd/pim_rp.c:313,1
    - Dst: pim_rp_refresh_group_to_rp_mapping
      Src: /src/frr/pimd/pim_rp.c:320,1
    - Dst: pim_rp_check_interface_addrs
      Src: /src/frr/pimd/pim_rp.c:323,1
    - Dst: pim_addr
      Src: /src/frr/pimd/pim_rp.c:328,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:330,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:337,1
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_rp.c:338,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:341,1
    - Dst: pim_rp_check_interfaces
      Src: /src/frr/pimd/pim_rp.c:348,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_rp.c:354,1
    - Dst: pim_rp_check_interface_addrs
      Src: /src/frr/pimd/pim_rp.c:360,1
    - Dst: pim_upstream_update
      Src: /src/frr/pimd/pim_rp.c:366,1
    - Dst: pim_rp_set_upstream_addr
      Src: /src/frr/pimd/pim_rp.c:374,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:378,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:381,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:389,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:392,1
    - Dst: pim_delete_tracked_nexthop
      Src: /src/frr/pimd/pim_rp.c:395,1
    - Dst: pim_rpf_update
      Src: /src/frr/pimd/pim_rp.c:403,1
    - Dst: pim_mroute_del
      Src: /src/frr/pimd/pim_rp.c:405,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_rp.c:409,1
    - Dst: pim_zebra_upstream_rpf_changed
      Src: /src/frr/pimd/pim_rp.c:414,1
    - Dst: pim_rp_new
      Src: /src/frr/pimd/pim_rp.c:418,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_rp.c:436,1
    - Dst: prefix_copy
      Src: /src/frr/pimd/pim_rp.c:439,1
    - Dst: pim_rp_find_prefix_list
      Src: /src/frr/pimd/pim_rp.c:446,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:447,1
    - Dst: pim_rp_prefix_list_used
      Src: /src/frr/pimd/pim_rp.c:454,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:455,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_rp.c:462,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:464,1
    - Dst: pim_rp_del_config
      Src: /src/frr/pimd/pim_rp.c:467,1
    - Dst: pim_rp_del_config
      Src: /src/frr/pimd/pim_rp.c:470,1
    - Dst: prefix2str
      Src: /src/frr/pimd/pim_rp.c:472,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_rp.c:478,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_rp.c:481,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:482,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:485,1
    - Dst: prefix_match
      Src: /src/frr/pimd/pim_rp.c:490,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:491,1
    - Dst: PIM_GROUP_BAD_ADDRESS
      Src: /src/frr/pimd/pim_rp.c:492,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_rp.c:498,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:501,1
    - Dst: pim_rp_del_config
      Src: /src/frr/pimd/pim_rp.c:503,1
    - Dst: prefix_same
      Src: /src/frr/pimd/pim_rp.c:511,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:512,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:515,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:520,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_rp.c:524,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:528,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:529,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rp.c:533,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:534,1
    - Dst: pim_upstream_update
      Src: /src/frr/pimd/pim_rp.c:537,1
    - Dst: pim_zebra_update_all_interfaces
      Src: /src/frr/pimd/pim_rp.c:543,1
    - Dst: pim_rp_check_interfaces
      Src: /src/frr/pimd/pim_rp.c:545,1
    - Dst: pim_rp_refresh_group_to_rp_mapping
      Src: /src/frr/pimd/pim_rp.c:546,1
    - Dst: pim_find_or_track_nexthop
      Src: /src/frr/pimd/pim_rp.c:547,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_rp.c:550,1
    - Dst: pim_rp_find_exact
      Src: /src/frr/pimd/pim_rp.c:560,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:572,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:576,1
    - Dst: prefix_same
      Src: /src/frr/pimd/pim_rp.c:586,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:591,1
    - Dst: pim_rp_change
      Src: /src/frr/pimd/pim_rp.c:595,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:599,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 37
    argCount: 2
    argNames:
    - pim
    - plist
    argTypes:
    - struct pim_instance*
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 304
    functionDepth: 11
    functionLinenumber: 304
    functionLinenumberEnd: 604
    functionName: pim_rp_prefix_list_update
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 1
    functionsReached:
    - prefix2str
    - pim_rp_new
    - frr_each
    - pim_zebra_update_all_interfaces
    - pim_rp_find_prefix_list
    - pim_rp_find_match_group
    - pim_find_or_track_nexthop
    - pim_rp_del_config
    - pim_rp_find_exact
    - pim_upstream_mroute_iif_update
    - pim_addr
    - pim_zebra_upstream_rpf_changed
    - pim_rpf_update
    - pim_addr_from_prefix
    - prefix_list_name
    - pim_get_all_mcast_group
    - XCALLOC
    - pim_addr_is_any
    - prefix_match
    - ALL_LIST_ELEMENTS_RO
    - pim_mroute_del
    - FOR_ALL_INTERFACES
    - zlog_debug
    - pim_ecmp_nexthop_lookup
    - prefix_copy
    - pim_rpf_addr_is_inaddr_any
    - prefix_same
    - pim_delete_tracked_nexthop
    - pim_rp_change
    - pim_addr_cmp
    - XFREE
    - pim_rp_refresh_group_to_rp_mapping
    - pim_upstream_update
    - XSTRDUP
    - PIM_GROUP_BAD_ADDRESS
    - pim_addr_to_prefix
    - strcmp
    - pim_rp_check_interface_addrs
    - pim_rp_check_interfaces
    - pim_rp_set_upstream_addr
    - ALL_LIST_ELEMENTS
    - pim_rp_prefix_list_used
    linkageType: ''
    returnType: void
    signature: "void pim_rp_prefix_list_update(struct pim_instance *pim,\n\t\t\t       struct
      prefix_list *plist)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_rp.c:659,1
    - Dst: str2prefix
      Src: /src/frr/pimd/pim_rp.c:661,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:665,1
    - Dst: pim_rp_del
      Src: /src/frr/pimd/pim_rp.c:671,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - pim
    - rp_addr
    - group_range
    - plist
    argTypes:
    - struct pim_instance*
    - pim_addr
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 652
    functionDepth: 3
    functionLinenumber: 652
    functionLinenumberEnd: 672
    functionName: pim_rp_del_config
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - pim_get_all_mcast_group
    - str2prefix
    - pim_rp_del
    linkageType: ''
    returnType: void
    signature: "void pim_rp_del_config(struct pim_instance *pim, pim_addr rp_addr,\n\t\t
      \      const char *group_range, const char *plist)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: pim_rp_find_prefix_list
      Src: /src/frr/pimd/pim_rp.c:690,1
    - Dst: pim_rp_find_exact
      Src: /src/frr/pimd/pim_rp.c:692,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:698,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:703,1
    - Dst: pim_bsm_get_bsgrp_node
      Src: /src/frr/pimd/pim_rp.c:711,1
    - Dst: bsm_rpinfos_first
      Src: /src/frr/pimd/pim_rp.c:714,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:717,1
    - Dst: pim_rp_change
      Src: /src/frr/pimd/pim_rp.c:721,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:726,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:735,1
    - Dst: pim_delete_tracked_nexthop
      Src: /src/frr/pimd/pim_rp.c:737,1
    - Dst: pim_get_all_mcast_group
      Src: /src/frr/pimd/pim_rp.c:739,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:742,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_rp.c:745,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:752,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:753,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rp.c:756,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:757,1
    - Dst: pim_upstream_rpf_clear
      Src: /src/frr/pimd/pim_rp.c:759,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_rp.c:769,1
    - Dst: route_node_get
      Src: /src/frr/pimd/pim_rp.c:772,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_rp.c:775,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:780,1
    - Dst: route_node_get_lock_count
      Src: /src/frr/pimd/pim_rp.c:783,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_rp.c:786,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_rp.c:787,1
    - Dst: pim_rp_refresh_group_to_rp_mapping
      Src: /src/frr/pimd/pim_rp.c:791,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_rp.c:793,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:800,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:801,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rp.c:804,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:805,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:811,1
    - Dst: pim_upstream_rpf_clear
      Src: /src/frr/pimd/pim_rp.c:812,1
    - Dst: pim_rp_set_upstream_addr
      Src: /src/frr/pimd/pim_rp.c:813,1
    - Dst: pim_upstream_update
      Src: /src/frr/pimd/pim_rp.c:820,1
    - Dst: pim_zebra_update_all_interfaces
      Src: /src/frr/pimd/pim_rp.c:827,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_rp.c:829,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 83
    argCount: 5
    argNames:
    - pim
    - rp_addr
    - group
    - plist
    - rp_src_flag
    argTypes:
    - struct pim_instance*
    - pim_addr
    - struct prefix
    - char*
    - enum rp_source
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 674
    functionDepth: 8
    functionLinenumber: 674
    functionLinenumberEnd: 831
    functionName: pim_rp_del
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 5
    functionsReached:
    - frr_each
    - pim_zebra_update_all_interfaces
    - pim_rp_find_prefix_list
    - pim_bsm_get_bsgrp_node
    - pim_rp_find_match_group
    - bsm_rpinfos_first
    - flog_err
    - pim_rp_find_exact
    - pim_get_all_mcast_group
    - pim_addr_is_any
    - zlog_debug
    - pim_rpf_addr_is_inaddr_any
    - route_unlock_node
    - pim_delete_tracked_nexthop
    - pim_rp_change
    - pim_addr_cmp
    - XFREE
    - listnode_delete
    - pim_rp_refresh_group_to_rp_mapping
    - pim_upstream_update
    - pim_addr_to_prefix
    - pim_upstream_rpf_clear
    - route_node_get_lock_count
    - pim_rp_set_upstream_addr
    - route_node_get
    linkageType: ''
    returnType: int
    signature: "int pim_rp_del(struct pim_instance *pim, pim_addr rp_addr, struct
      prefix group,\n\t       const char *plist, enum rp_source rp_src_flag)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: route_node_lookup
      Src: /src/frr/pimd/pim_rp.c:844,1
    - Dst: pim_rp_new
      Src: /src/frr/pimd/pim_rp.c:846,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_rp.c:853,1
    - Dst: pim_rp_new
      Src: /src/frr/pimd/pim_rp.c:854,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:859,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_rp.c:862,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:869,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:872,1
    - Dst: pim_delete_tracked_nexthop
      Src: /src/frr/pimd/pim_rp.c:874,1
    - Dst: pim_rp_nexthop_del
      Src: /src/frr/pimd/pim_rp.c:877,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_rp.c:878,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_rp.c:885,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_rp.c:887,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:888,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rp.c:892,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:893,1
    - Dst: pim_upstream_update
      Src: /src/frr/pimd/pim_rp.c:896,1
    - Dst: pim_zebra_update_all_interfaces
      Src: /src/frr/pimd/pim_rp.c:903,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:908,1
    - Dst: pim_find_or_track_nexthop
      Src: /src/frr/pimd/pim_rp.c:911,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_rp.c:912,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_rp.c:914,1
    - Dst: pim_rp_check_interfaces
      Src: /src/frr/pimd/pim_rp.c:918,1
    - Dst: route_unlock_node
      Src: /src/frr/pimd/pim_rp.c:920,1
    - Dst: pim_rp_refresh_group_to_rp_mapping
      Src: /src/frr/pimd/pim_rp.c:922,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 56
    argCount: 4
    argNames:
    - pim
    - new_rp_addr
    - group
    - rp_src_flag
    argTypes:
    - struct pim_instance*
    - pim_addr
    - struct prefix
    - enum rp_source
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 833
    functionDepth: 10
    functionLinenumber: 833
    functionLinenumberEnd: 925
    functionName: pim_rp_change
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 4
    functionsReached:
    - pim_rp_new
    - frr_each
    - pim_zebra_update_all_interfaces
    - pim_rp_find_match_group
    - pim_find_or_track_nexthop
    - route_node_lookup
    - pim_addr_is_any
    - zlog_debug
    - pim_ecmp_nexthop_lookup
    - route_unlock_node
    - listnode_add_sort
    - pim_delete_tracked_nexthop
    - pim_addr_cmp
    - listnode_delete
    - pim_rp_refresh_group_to_rp_mapping
    - pim_upstream_update
    - pim_addr_to_prefix
    - pim_rp_nexthop_del
    - pim_rp_check_interfaces
    linkageType: ''
    returnType: int
    signature: "int pim_rp_change(struct pim_instance *pim, pim_addr new_rp_addr,\n\t\t
      \ struct prefix group, enum rp_source rp_src_flag)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:933,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:934,1
    - Dst: pim_find_or_track_nexthop
      Src: /src/frr/pimd/pim_rp.c:939,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_rp.c:940,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:943,1
    - Dst: pim_rp_nexthop_del
      Src: /src/frr/pimd/pim_rp.c:945,1
    - Dst: pim_rp_check_on_if_add
      Src: /src/frr/pimd/pim_rp.c:954,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:964,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:965,1
    - Dst: pim_rp_check_interface_addrs
      Src: /src/frr/pimd/pim_rp.c:975,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:979,1
    - Dst: pim_msdp_i_am_rp_changed
      Src: /src/frr/pimd/pim_rp.c:985,1
    - Dst: pim_upstream_reeval_use_rpt
      Src: /src/frr/pimd/pim_rp.c:986,1
    - Dst: pim_i_am_rp_re_evaluate
      Src: /src/frr/pimd/pim_rp.c:993,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:1003,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:1004,1
    - Dst: pim_rp_check_interfaces
      Src: /src/frr/pimd/pim_rp.c:1008,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:1014,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:1018,1
    - Dst: pim_msdp_i_am_rp_changed
      Src: /src/frr/pimd/pim_rp.c:1027,1
    - Dst: pim_upstream_reeval_use_rpt
      Src: /src/frr/pimd/pim_rp.c:1028,1
    - Dst: pim_rp_i_am_rp
      Src: /src/frr/pimd/pim_rp.c:1038,1
    - Dst: memset
      Src: /src/frr/pimd/pim_rp.c:1043,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rp.c:1044,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:1045,1
    - Dst: pim_rp_g
      Src: /src/frr/pimd/pim_rp.c:1057,1
    - Dst: memset
      Src: /src/frr/pimd/pim_rp.c:1062,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rp.c:1063,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:1065,1
    - Dst: pim_addr
      Src: /src/frr/pimd/pim_rp.c:1068,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:1070,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:1072,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:1081,1
    - Dst: pim_find_or_track_nexthop
      Src: /src/frr/pimd/pim_rp.c:1084,1
    - Dst: pim_rpf_set_refresh_time
      Src: /src/frr/pimd/pim_rp.c:1085,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_rp.c:1086,1
    - Dst: pim_rp_set_upstream_addr
      Src: /src/frr/pimd/pim_rp.c:1103,1
    - Dst: memset
      Src: /src/frr/pimd/pim_rp.c:1109,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_rp.c:1111,1
    - Dst: pim_rp_find_match_group
      Src: /src/frr/pimd/pim_rp.c:1113,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:1115,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:1116,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:1118,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:1124,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:1140,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:1141,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 927
    functionDepth: 10
    functionLinenumber: 927
    functionLinenumberEnd: 1157
    functionName: pim_rp_setup
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 1
    functionsReached:
    - pim_rp_find_match_group
    - pim_rp_check_on_if_add
    - pim_find_or_track_nexthop
    - pim_i_am_rp_re_evaluate
    - pim_addr
    - memset
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - pim_ecmp_nexthop_lookup
    - pim_msdp_i_am_rp_changed
    - pim_rpf_addr_is_inaddr_any
    - pim_rp_i_am_rp
    - pim_upstream_reeval_use_rpt
    - pim_rpf_set_refresh_time
    - pim_addr_to_prefix
    - pim_rp_g
    - pim_rp_check_interface_addrs
    - pim_rp_nexthop_del
    - pim_rp_check_interfaces
    - pim_rp_set_upstream_addr
    linkageType: ''
    returnType: void
    signature: void pim_rp_setup(struct pim_instance *pim)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ttable_new
      Src: /src/frr/pimd/pim_rp.c:1178,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_rp.c:1179,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim_rp.c:1184,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:1187,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:1188,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_rp.c:1197,1
    - Dst: prefix_match
      Src: /src/frr/pimd/pim_rp.c:1199,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_rp.c:1203,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_rp.c:1205,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_rp.c:1207,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_rp.c:1214,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim_rp.c:1216,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_rp.c:1223,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_rp.c:1225,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_rp.c:1226,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_rp.c:1229,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_rp.c:1234,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_rp.c:1238,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/pimd/pim_rp.c:1240,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_rp.c:1244,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_rp.c:1247,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_rp.c:1250,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_rp.c:1251,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_rp.c:1254,1
    - Dst: prefix2str
      Src: /src/frr/pimd/pim_rp.c:1256,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim_rp.c:1257,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 4
    argNames:
    - pim
    - range
    - vty
    - json
    argTypes:
    - struct pim_instance*
    - struct prefix*
    - struct vty*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1162
    functionDepth: 4
    functionLinenumber: 1162
    functionLinenumberEnd: 1272
    functionName: pim_rp_show_information
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 2
    functionsReached:
    - json_object_new_array
    - pim_is_grp_ssm
    - json_object_object_addf
    - json_object_new_object
    - prefix2str
    - json_object_array_add
    - prefix_match
    - ttable_new
    - ALL_LIST_ELEMENTS_RO
    - strlcpy
    - ttable_restyle
    - pim_addr_cmp
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_string_addf
    - json_object_boolean_false_add
    - pim_rpf_addr_is_inaddr_any
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void pim_rp_show_information(struct pim_instance *pim, struct prefix
      *range,\n\t\t\t     struct vty *vty, json_object *json)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_rp.c:1295,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_rp.c:1296,1
    - Dst: memset
      Src: /src/frr/pimd/pim_rp.c:1300,1
    - Dst: pim_find_or_track_nexthop
      Src: /src/frr/pimd/pim_rp.c:1301,1
    - Dst: if
      Src: /src/frr/pimd/pim_rp.c:1306,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:1306,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_rp.c:1309,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_rp.c:1313,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_rp.c:1325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim
    - nbr
    argTypes:
    - struct pim_instance*
    - struct pim_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1287
    functionDepth: 10
    functionLinenumber: 1287
    functionLinenumberEnd: 1331
    functionName: pim_resolve_rp_nh
    functionSourceFile: /src/frr/pimd/pim_rp.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - memset
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - pim_find_or_track_nexthop
    - zlog_debug
    - if
    - pim_rpf_addr_is_inaddr_any
    linkageType: ''
    returnType: void
    signature: void pim_resolve_rp_nh(struct pim_instance *pim, struct pim_neighbor
      *nbr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/pimd/pim6_mld_protocol.h:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - wire
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: mld_max_resp_decode
    functionSourceFile: /src/frr/pimd/pim6_mld_protocol.h
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int mld_max_resp_decode(uint16_t wire)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_clz
      Src: /src/frr/pimd/pim6_mld_protocol.h:105,1
    - Dst: htons
      Src: /src/frr/pimd/pim6_mld_protocol.h:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 110
    functionName: mld_max_resp_encode
    functionSourceFile: /src/frr/pimd/pim6_mld_protocol.h
    functionUses: 0
    functionsReached:
    - __builtin_clz
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t mld_max_resp_encode(uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: log_ifp
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_ifp(msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: log_pkt_src
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_pkt_src(msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sg
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: log_sg
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_sg(sg, msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - pim_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: in6_multicast_scope
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t in6_multicast_scope(const pim_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: in6_multicast_scope
      Src: /src/frr/pimd/pim6_mld.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - pim_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: in6_multicast_nofwd
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 1
    functionsReached:
    - in6_multicast_scope
    linkageType: ''
    returnType: bool
    signature: bool in6_multicast_nofwd(const pim_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:116,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:117,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct gm_packet_sg*
    - struct gm_packet_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 119
    functionName: gm_packet_sg_cmp
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_CMP
    - gm_packet_sg2state
    linkageType: ''
    returnType: int
    signature: "int gm_packet_sg_cmp(const struct gm_packet_sg *a,\n\t\t\t    const
      struct gm_packet_sg *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gm_packet_sg_subs_find
      Src: /src/frr/pimd/pim6_mld.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sg
    - sense
    - sub
    argTypes:
    - struct gm_sg*
    - enum gm_sub_sense
    - struct gm_subscriber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 143
    functionName: gm_packet_sg_find
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_subs_find
    linkageType: ''
    returnType: struct gm_packet_sg
    signature: "struct gm_packet_sg *gm_packet_sg_find(struct gm_sg *sg,\n\t\t\t\t\t
      \     enum gm_sub_sense sense,\n\t\t\t\t\t      struct gm_subscriber *sub)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct gm_grp_pending*
    - struct gm_grp_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 153
    functionName: gm_grp_pending_cmp
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_CMP
    linkageType: ''
    returnType: int
    signature: "int gm_grp_pending_cmp(const struct gm_grp_pending *a,\n\t\t\t      const
      struct gm_grp_pending *b)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: numcmp
      Src: /src/frr/pimd/pim6_mld.c:166,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct gm_gsq_pending*
    - struct gm_gsq_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 169
    functionName: gm_gsq_pending_cmp
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_CMP
    - numcmp
    linkageType: ''
    returnType: int
    signature: "int gm_gsq_pending_cmp(const struct gm_gsq_pending *a,\n\t\t\t      const
      struct gm_gsq_pending *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/pimd/pim6_mld.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct gm_gsq_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 176
    functionName: gm_gsq_pending_hash
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t gm_gsq_pending_hash(const struct gm_gsq_pending *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim6_mld.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct gm_sg*
    - struct gm_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: gm_sg_cmp
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - pim_sgaddr_cmp
    linkageType: ''
    returnType: int
    signature: int gm_sg_cmp(const struct gm_sg *a, const struct gm_sg *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gm_sgs_find
      Src: /src/frr/pimd/pim6_mld.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - gm_ifp
    - grp
    - src
    argTypes:
    - struct gm_if*
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 198
    functionName: gm_sg_find
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_sgs_find
    linkageType: ''
    returnType: struct gm_sg
    signature: "struct gm_sg *gm_sg_find(struct gm_if *gm_ifp, pim_addr grp,\n\t\t\t\tpim_addr
      src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim6_mld.c:205,1
    - Dst: gm_sgs_add
      Src: /src/frr/pimd/pim6_mld.c:209,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:212,1
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:215,1
    - Dst: gm_packet_sg_subs_init
      Src: /src/frr/pimd/pim6_mld.c:216,1
    - Dst: gm_packet_sg_subs_init
      Src: /src/frr/pimd/pim6_mld.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - gm_ifp
    - grp
    - src
    argTypes:
    - struct gm_if*
    - pim_addr
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 220
    functionName: gm_sg_make
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - monotime
    - gm_sgs_add
    - XFREE
    - gm_packet_sg_subs_init
    linkageType: ''
    returnType: struct gm_sg
    signature: "struct gm_sg *gm_sg_make(struct gm_if *gm_ifp, pim_addr grp,\n\t\t\t\tpim_addr
      src)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct gm_subscriber*
    - struct gm_subscriber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 242
    functionName: gm_subscriber_cmp
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - IPV6_ADDR_CMP
    linkageType: ''
    returnType: int
    signature: "int gm_subscriber_cmp(const struct gm_subscriber *a,\n\t\t\t     const
      struct gm_subscriber *b)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash
      Src: /src/frr/pimd/pim6_mld.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct gm_subscriber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: gm_subscriber_hash
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - jhash
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t gm_subscriber_hash(const struct gm_subscriber *a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gm_subscribers_find
      Src: /src/frr/pimd/pim6_mld.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - gm_ifp
    - addr
    argTypes:
    - struct gm_if*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 262
    functionName: gm_subscriber_findref
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_subscribers_find
    linkageType: ''
    returnType: struct gm_subscriber
    signature: "struct gm_subscriber *gm_subscriber_findref(struct gm_if *gm_ifp,\n\t\t\t\t\t\t
      \  pim_addr addr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gm_subscribers_find
      Src: /src/frr/pimd/pim6_mld.c:270,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim6_mld.c:273,1
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:277,1
    - Dst: gm_packets_init
      Src: /src/frr/pimd/pim6_mld.c:278,1
    - Dst: gm_subscribers_add
      Src: /src/frr/pimd/pim6_mld.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - gm_ifp
    - addr
    argTypes:
    - struct gm_if*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 283
    functionName: gm_subscriber_get
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - monotime
    - gm_packets_init
    - gm_subscribers_add
    - gm_subscribers_find
    linkageType: ''
    returnType: struct gm_subscriber
    signature: "struct gm_subscriber *gm_subscriber_get(struct gm_if *gm_ifp,\n\t\t\t\t\t
      \      pim_addr addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gm_subscribers_del
      Src: /src/frr/pimd/pim6_mld.c:300,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - subp
    argTypes:
    - struct gm_subscriber**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 302
    functionName: gm_subscriber_drop
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_subscribers_del
    - XFREE
    linkageType: ''
    returnType: void
    signature: void gm_subscriber_drop(struct gm_subscriber **subp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldiv
      Src: /src/frr/pimd/pim6_mld.c:320,1
    - Dst: timeradd
      Src: /src/frr/pimd/pim6_mld.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - timers
    argTypes:
    - struct gm_query_timers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 325
    functionName: gm_expiry_calc
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - ldiv
    - timeradd
    linkageType: ''
    returnType: void
    signature: void gm_expiry_calc(struct gm_query_timers *timers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:330,1
    - Dst: gm_packet_sg_subs_fini
      Src: /src/frr/pimd/pim6_mld.c:331,1
    - Dst: gm_packet_sg_subs_fini
      Src: /src/frr/pimd/pim6_mld.c:332,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - sg
    argTypes:
    - struct gm_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 334
    functionName: gm_sg_free
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_subs_fini
    - EVENT_OFF
    - XFREE
    linkageType: ''
    returnType: void
    signature: void gm_sg_free(struct gm_sg *sg)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:362,1
    - Dst: gm_sg_find
      Src: /src/frr/pimd/pim6_mld.c:363,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:365,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:367,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:369,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:374,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:376,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:377,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:384,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:391,1
    - Dst: log_sg
      Src: /src/frr/pimd/pim6_mld.c:391,1
    - Dst: gm_expiry_calc
      Src: /src/frr/pimd/pim6_mld.c:403,1
    - Dst: gm_sg_timer_start
      Src: /src/frr/pimd/pim6_mld.c:404,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:406,1
    - Dst: gm_trigger_specific
      Src: /src/frr/pimd/pim6_mld.c:409,1
    - Dst: in6_multicast_nofwd
      Src: /src/frr/pimd/pim6_mld.c:415,1
    - Dst: gm_sg_state_want_join
      Src: /src/frr/pimd/pim6_mld.c:418,1
    - Dst: tib_sg_gm_join
      Src: /src/frr/pimd/pim6_mld.c:422,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:425,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:429,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:429,1
    - Dst: tib_sg_gm_prune
      Src: /src/frr/pimd/pim6_mld.c:433,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:445,1
    - Dst: assertf
      Src: /src/frr/pimd/pim6_mld.c:447,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:448,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:449,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:453,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:454,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:457,1
    - Dst: log_sg
      Src: /src/frr/pimd/pim6_mld.c:457,1
    - Dst: gm_sgs_del
      Src: /src/frr/pimd/pim6_mld.c:459,1
    - Dst: gm_sg_free
      Src: /src/frr/pimd/pim6_mld.c:460,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 61
    argCount: 2
    argNames:
    - sg
    - has_expired
    argTypes:
    - struct gm_sg*
    - bool
    assertStmts:
    - condition: (sg->state != GM_SG_PRUNE)
      pos:
        line_end: 364
        line_start: 364
        source_file: /src/frr/pimd/pim6_mld.c
    - condition: (!sg->t_sg_expire)
      pos:
        line_end: 368
        line_start: 368
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 462
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 462
    functionName: gm_sg_update
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_sg_find
    - assertf
    - log_ifp
    - zlog_warn
    - log_sg
    - pim_addr_is_any
    - in6_multicast_nofwd
    - gm_sg_free
    - zlog_debug
    - gm_packet_sg_subs_count
    - assert
    - zlog_info
    - gm_expiry_calc
    - EVENT_OFF
    - gm_sgs_del
    - gm_sg_timer_start
    - gm_sg_state_want_join
    - tib_sg_gm_join
    - gm_trigger_specific
    - tib_sg_gm_prune
    linkageType: ''
    returnType: void
    signature: void gm_sg_update(struct gm_sg *sg, bool has_expired)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gm_packet_expires_del
      Src: /src/frr/pimd/pim6_mld.c:474,1
    - Dst: gm_packets_del
      Src: /src/frr/pimd/pim6_mld.c:475,1
    - Dst: gm_subscriber_drop
      Src: /src/frr/pimd/pim6_mld.c:476,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - struct gm_packet_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 478
    functionName: gm_packet_free
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packets_del
    - gm_packet_expires_del
    - gm_subscriber_drop
    - XFREE
    linkageType: ''
    returnType: void
    signature: void gm_packet_free(struct gm_packet_state *pkt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - pkt
    - sg
    - is_excl
    - is_src
    argTypes:
    - struct gm_packet_state*
    - struct gm_sg*
    - bool
    - bool
    assertStmts:
    - condition: (pkt->n_active < pkt->n_sg)
      pos:
        line_end: 485
        line_start: 485
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 496
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 496
    functionName: gm_packet_sg_setup
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct gm_packet_sg
    signature: "struct gm_packet_sg *gm_packet_sg_setup(struct gm_packet_state *pkt,\n\t\t\t\t\t
      \      struct gm_sg *sg, bool is_excl,\n\t\t\t\t\t       bool is_src)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:503,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:505,1
    - Dst: gm_packet_sg_subs_del
      Src: /src/frr/pimd/pim6_mld.c:516,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:520,1
    - Dst: gm_packet_sg_subs_del
      Src: /src/frr/pimd/pim6_mld.c:524,1
    - Dst: gm_packet_sg_subs_del
      Src: /src/frr/pimd/pim6_mld.c:526,1
    - Dst: gm_packet_free
      Src: /src/frr/pimd/pim6_mld.c:531,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - item
    argTypes:
    - struct gm_packet_sg*
    assertStmts:
    - condition: (item->sg)
      pos:
        line_end: 502
        line_start: 502
        source_file: /src/frr/pimd/pim6_mld.c
    - condition: (pkt->n_active > 0)
      pos:
        line_end: 519
        line_start: 519
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 535
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 535
    functionName: gm_packet_sg_drop
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_subs_del
    - gm_packet_free
    - assert
    - gm_packet_sg2state
    linkageType: ''
    returnType: bool
    signature: bool gm_packet_sg_drop(struct gm_packet_sg *item)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:547,1
    - Dst: log_sg
      Src: /src/frr/pimd/pim6_mld.c:547,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:549,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:551,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - pkt
    - trace
    argTypes:
    - struct gm_packet_state*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 537
    functionDepth: 3
    functionLinenumber: 537
    functionLinenumberEnd: 555
    functionName: gm_packet_drop
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_drop
    - zlog_debug
    - log_sg
    - gm_sg_update
    linkageType: ''
    returnType: void
    signature: void gm_packet_drop(struct gm_packet_state *pkt, bool trace)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gm_sg_find
      Src: /src/frr/pimd/pim6_mld.c:567,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:571,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:575,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:576,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 6
    argNames:
    - gm_ifp
    - subscriber
    - grp
    - srcs
    - n_src
    - sense
    argTypes:
    - struct gm_if*
    - struct gm_subscriber*
    - pim_addr
    - pim_addr*
    - size_t
    - enum gm_sub_sense
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 557
    functionDepth: 3
    functionLinenumber: 557
    functionLinenumberEnd: 578
    functionName: gm_packet_sg_remove_sources
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_drop
    - gm_packet_sg_find
    - gm_sg_find
    - gm_sg_update
    linkageType: ''
    returnType: void
    signature: "void gm_packet_sg_remove_sources(struct gm_if *gm_ifp,\n\t\t\t\t\tstruct
      gm_subscriber *subscriber,\n\t\t\t\t\tpim_addr grp, pim_addr *srcs,\n\t\t\t\t\tsize_t
      n_src, enum gm_sub_sense sense)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:583,1
    - Dst: log_sg
      Src: /src/frr/pimd/pim6_mld.c:583,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - sg
    argTypes:
    - struct gm_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 586
    functionName: gm_sg_expiry_cancel
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - log_sg
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void gm_sg_expiry_cancel(struct gm_sg *sg)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: gm_sg_find
      Src: /src/frr/pimd/pim6_mld.c:610,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:612,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:614,1
    - Dst: gm_sg_make
      Src: /src/frr/pimd/pim6_mld.c:622,1
    - Dst: gm_packet_sg_setup
      Src: /src/frr/pimd/pim6_mld.c:624,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:647,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:648,1
    - Dst: gm_packet_sg_remove_sources
      Src: /src/frr/pimd/pim6_mld.c:656,1
    - Dst: gm_packet_sg_remove_sources
      Src: /src/frr/pimd/pim6_mld.c:677,1
    - Dst: gm_sg_find
      Src: /src/frr/pimd/pim6_mld.c:686,1
    - Dst: gm_sg_make
      Src: /src/frr/pimd/pim6_mld.c:688,1
    - Dst: gm_packet_sg_setup
      Src: /src/frr/pimd/pim6_mld.c:691,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 3
    argNames:
    - pkt
    - rechdr
    - n_src
    argTypes:
    - struct gm_packet_state*
    - struct mld_v2_rec_hdr*
    - size_t
    assertStmts:
    - condition: (old_grp == NULL || old_grp->is_excl)
      pos:
        line_end: 613
        line_start: 613
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 693
      start: 597
    functionDepth: 4
    functionLinenumber: 597
    functionLinenumberEnd: 693
    functionName: gm_handle_v2_pass1
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_find
    - gm_sg_update
    - gm_packet_sg_setup
    - gm_packet_sg_drop
    - gm_sg_find
    - gm_packet_sg_remove_sources
    - gm_sg_make
    - assert
    linkageType: ''
    returnType: void
    signature: "void gm_handle_v2_pass1(struct gm_packet_state *pkt,\n\t\t\t       struct
      mld_v2_rec_hdr *rechdr, size_t n_src)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:706,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:706,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:708,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:710,1
    - Dst: gm_packet_sg_subs_add
      Src: /src/frr/pimd/pim6_mld.c:713,1
    - Dst: gm_sg_expiry_cancel
      Src: /src/frr/pimd/pim6_mld.c:716,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - pkt
    - i
    argTypes:
    - struct gm_packet_state*
    - size_t
    assertStmts:
    - condition: (!gm_packet_sg_find(sg, GM_SUB_NEG, pkt->subscriber))
      pos:
        line_end: 705
        line_start: 705
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 718
      start: 699
    functionDepth: 3
    functionLinenumber: 699
    functionLinenumberEnd: 718
    functionName: gm_handle_v2_pass2_incl
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_find
    - gm_packet_sg_subs_add
    - gm_sg_update
    - gm_sg_expiry_cancel
    - gm_packet_sg_drop
    - assert
    linkageType: ''
    returnType: void
    signature: void gm_handle_v2_pass2_incl(struct gm_packet_state *pkt, size_t i)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:727,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:733,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:736,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:742,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:745,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:762,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:763,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:766,1
    - Dst: gm_packet_sg_subs_add
      Src: /src/frr/pimd/pim6_mld.c:769,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:770,1
    - Dst: gm_sg_expiry_cancel
      Src: /src/frr/pimd/pim6_mld.c:774,1
    - Dst: gm_packet_sg_subs_add
      Src: /src/frr/pimd/pim6_mld.c:780,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:787,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:794,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 2
    argNames:
    - pkt
    - offs
    argTypes:
    - struct gm_packet_state*
    - size_t
    assertStmts:
    - condition: (!item_dup)
      pos:
        line_end: 769
        line_start: 769
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 795
      start: 720
    functionDepth: 3
    functionLinenumber: 720
    functionLinenumberEnd: 795
    functionName: gm_handle_v2_pass2_excl
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_find
    - gm_packet_sg_subs_add
    - gm_sg_update
    - gm_packet_sg_drop
    - gm_sg_expiry_cancel
    - assert
    linkageType: ''
    returnType: void
    signature: void gm_handle_v2_pass2_excl(struct gm_packet_state *pkt, size_t offs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:814,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:814,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim6_mld.c:824,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:829,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:829,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim6_mld.c:842,1
    - Dst: gm_subscriber_findref
      Src: /src/frr/pimd/pim6_mld.c:846,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:854,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:854,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim6_mld.c:864,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:868,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:868,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/pimd/pim6_mld.c:873,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:874,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:875,1
    - Dst: gm_handle_v2_pass1
      Src: /src/frr/pimd/pim6_mld.c:885,1
    - Dst: gm_subscriber_drop
      Src: /src/frr/pimd/pim6_mld.c:889,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:890,1
    - Dst: XREALLOC
      Src: /src/frr/pimd/pim6_mld.c:894,1
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:899,1
    - Dst: gm_subscriber_get
      Src: /src/frr/pimd/pim6_mld.c:901,1
    - Dst: gm_packets_add_tail
      Src: /src/frr/pimd/pim6_mld.c:902,1
    - Dst: gm_packet_expires_add_tail
      Src: /src/frr/pimd/pim6_mld.c:903,1
    - Dst: gm_handle_v2_pass2_incl
      Src: /src/frr/pimd/pim6_mld.c:907,1
    - Dst: gm_handle_v2_pass2_excl
      Src: /src/frr/pimd/pim6_mld.c:909,1
    - Dst: gm_packet_free
      Src: /src/frr/pimd/pim6_mld.c:914,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 68
    argCount: 4
    argNames:
    - gm_ifp
    - pkt_src
    - data
    - len
    argTypes:
    - struct gm_if*
    - struct sockaddr_in6*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 804
    functionDepth: 5
    functionLinenumber: 804
    functionLinenumberEnd: 915
    functionName: gm_handle_v2_report
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_expires_add_tail
    - gm_subscriber_get
    - XCALLOC
    - gm_handle_v2_pass1
    - gm_packets_add_tail
    - gm_subscriber_findref
    - monotime
    - gm_packet_free
    - gm_handle_v2_pass2_incl
    - ntohs
    - gm_handle_v2_pass2_excl
    - zlog_warn
    - zlog_debug
    - XFREE
    - gm_subscriber_drop
    - IN6_IS_ADDR_MULTICAST
    - XREALLOC
    - log_pkt_src
    linkageType: ''
    returnType: void
    signature: "void gm_handle_v2_report(struct gm_if *gm_ifp,\n\t\t\t\tconst struct
      sockaddr_in6 *pkt_src, char *data,\n\t\t\t\tsize_t len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:929,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:929,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim6_mld.c:940,1
    - Dst: gm_subscriber_findref
      Src: /src/frr/pimd/pim6_mld.c:944,1
    - Dst: gm_sg_find
      Src: /src/frr/pimd/pim6_mld.c:948,1
    - Dst: gm_sg_make
      Src: /src/frr/pimd/pim6_mld.c:950,1
    - Dst: gm_packet_sg_setup
      Src: /src/frr/pimd/pim6_mld.c:952,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:962,1
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:966,1
    - Dst: gm_subscriber_get
      Src: /src/frr/pimd/pim6_mld.c:968,1
    - Dst: gm_packets_add_tail
      Src: /src/frr/pimd/pim6_mld.c:969,1
    - Dst: gm_packet_expires_add_tail
      Src: /src/frr/pimd/pim6_mld.c:970,1
    - Dst: gm_handle_v2_pass2_excl
      Src: /src/frr/pimd/pim6_mld.c:979,1
    - Dst: gm_packet_free
      Src: /src/frr/pimd/pim6_mld.c:982,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - gm_ifp
    - pkt_src
    - data
    - len
    argTypes:
    - struct gm_if*
    - struct sockaddr_in6*
    - char*
    - size_t
    assertStmts:
    - condition: (pkt->n_active == 1)
      pos:
        line_end: 961
        line_start: 961
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 983
      start: 917
    functionDepth: 4
    functionLinenumber: 917
    functionLinenumberEnd: 983
    functionName: gm_handle_v1_report
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_expires_add_tail
    - gm_subscriber_get
    - gm_packet_sg_setup
    - XCALLOC
    - gm_sg_find
    - gm_subscriber_findref
    - monotime
    - gm_packet_free
    - gm_handle_v2_pass2_excl
    - gm_sg_make
    - zlog_debug
    - gm_packets_add_tail
    - assert
    - log_pkt_src
    linkageType: ''
    returnType: void
    signature: "void gm_handle_v1_report(struct gm_if *gm_ifp,\n\t\t\t\tconst struct
      sockaddr_in6 *pkt_src, char *data,\n\t\t\t\tsize_t len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:996,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:996,1
    - Dst: gm_subscriber_findref
      Src: /src/frr/pimd/pim6_mld.c:1006,1
    - Dst: gm_sg_find
      Src: /src/frr/pimd/pim6_mld.c:1012,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:1014,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:1016,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:1017,1
    - Dst: gm_subscriber_drop
      Src: /src/frr/pimd/pim6_mld.c:1027,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - gm_ifp
    - pkt_src
    - data
    - len
    argTypes:
    - struct gm_if*
    - struct sockaddr_in6*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 985
    functionDepth: 3
    functionLinenumber: 985
    functionLinenumberEnd: 1028
    functionName: gm_handle_v1_leave
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_sg_find
    - gm_sg_update
    - gm_packet_sg_drop
    - gm_sg_find
    - gm_subscriber_findref
    - zlog_debug
    - gm_subscriber_drop
    - log_pkt_src
    linkageType: ''
    returnType: void
    signature: "void gm_handle_v1_leave(struct gm_if *gm_ifp,\n\t\t\t       const
      struct sockaddr_in6 *pkt_src, char *data,\n\t\t\t       size_t len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1045,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:1048,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1048,1
    - Dst: monotime_until
      Src: /src/frr/pimd/pim6_mld.c:1055,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1058,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1059,1
    - Dst: event_add_timer_tv
      Src: /src/frr/pimd/pim6_mld.c:1062,1
    - Dst: gm_packet_expires_first
      Src: /src/frr/pimd/pim6_mld.c:1067,1
    - Dst: timercmp
      Src: /src/frr/pimd/pim6_mld.c:1068,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1072,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1072,1
    - Dst: gm_packet_drop
      Src: /src/frr/pimd/pim6_mld.c:1073,1
    - Dst: memmove
      Src: /src/frr/pimd/pim6_mld.c:1077,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1082,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1082,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1043
    functionDepth: 4
    functionLinenumber: 1043
    functionLinenumberEnd: 1083
    functionName: gm_t_expire
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - event_add_timer_tv
    - gm_packet_drop
    - log_ifp
    - timercmp
    - memmove
    - zlog_debug
    - gm_packet_expires_first
    - EVENT_ARG
    - monotime_until
    linkageType: ''
    returnType: void
    signature: void gm_t_expire(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:1094,1
    - Dst: timeradd
      Src: /src/frr/pimd/pim6_mld.c:1095,1
    - Dst: timercmp
      Src: /src/frr/pimd/pim6_mld.c:1100,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1111,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1112,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1117,1
    - Dst: array_size
      Src: /src/frr/pimd/pim6_mld.c:1121,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1130,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1131,1
    - Dst: event_add_timer_tv
      Src: /src/frr/pimd/pim6_mld.c:1133,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1136,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1136,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - gm_ifp
    - timers
    argTypes:
    - struct gm_if*
    - struct gm_query_timers*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1088
    functionDepth: 2
    functionLinenumber: 1088
    functionLinenumberEnd: 1138
    functionName: gm_handle_q_general
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - event_add_timer_tv
    - monotime
    - log_ifp
    - timercmp
    - zlog_debug
    - EVENT_OFF
    - array_size
    - timeradd
    linkageType: ''
    returnType: void
    signature: "void gm_handle_q_general(struct gm_if *gm_ifp,\n\t\t\t\tstruct gm_query_timers
      *timers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1142,1
    - Dst: assertf
      Src: /src/frr/pimd/pim6_mld.c:1146,1
    - Dst: frr_each_safe
      Src: /src/frr/pimd/pim6_mld.c:1150,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:1154,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:1159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1140
    functionDepth: 3
    functionLinenumber: 1140
    functionLinenumberEnd: 1160
    functionName: gm_t_sg_expire
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_sg_update
    - gm_packet_sg_drop
    - assertf
    - frr_each_safe
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void gm_t_sg_expire(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim6_mld.c:1171,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:1172,1
    - Dst: timercmp
      Src: /src/frr/pimd/pim6_mld.c:1175,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:1184,1
    - Dst: timeradd
      Src: /src/frr/pimd/pim6_mld.c:1194,1
    - Dst: timercmp
      Src: /src/frr/pimd/pim6_mld.c:1196,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - gm_ifp
    - sg
    - ref
    argTypes:
    - struct gm_if*
    - struct gm_sg*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1162
    functionDepth: 1
    functionLinenumber: 1162
    functionLinenumberEnd: 1200
    functionName: gm_sg_check_recent
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - timercmp
    - timeradd
    - gm_packet_sg2state
    - frr_each
    linkageType: ''
    returnType: bool
    signature: "bool gm_sg_check_recent(struct gm_if *gm_ifp, struct gm_sg *sg,\n\t\t\t
      \      struct timeval ref)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:1212,1
    - Dst: gm_sg_check_recent
      Src: /src/frr/pimd/pim6_mld.c:1213,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1217,1
    - Dst: log_sg
      Src: /src/frr/pimd/pim6_mld.c:1217,1
    - Dst: event_timer_remain
      Src: /src/frr/pimd/pim6_mld.c:1222,1
    - Dst: timercmp
      Src: /src/frr/pimd/pim6_mld.c:1223,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1226,1
    - Dst: event_add_timer_tv
      Src: /src/frr/pimd/pim6_mld.c:1229,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - gm_ifp
    - sg
    - expire_wait
    argTypes:
    - struct gm_if*
    - struct gm_sg*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1202
    functionDepth: 2
    functionLinenumber: 1202
    functionLinenumberEnd: 1231
    functionName: gm_sg_timer_start
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 1
    functionsReached:
    - event_add_timer_tv
    - event_timer_remain
    - monotime
    - timercmp
    - zlog_debug
    - EVENT_OFF
    - gm_sg_check_recent
    - log_sg
    linkageType: ''
    returnType: void
    signature: "void gm_sg_timer_start(struct gm_if *gm_ifp, struct gm_sg *sg,\n\t\t\t
      \     struct timeval expire_wait)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gm_sg_find
      Src: /src/frr/pimd/pim6_mld.c:1241,1
    - Dst: GM_UPDATE_SG_STATE
      Src: /src/frr/pimd/pim6_mld.c:1242,1
    - Dst: gm_sg_timer_start
      Src: /src/frr/pimd/pim6_mld.c:1243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - gm_ifp
    - timers
    - grp
    - srcs
    - n_src
    argTypes:
    - struct gm_if*
    - struct gm_query_timers*
    - pim_addr
    - pim_addr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1233
    functionDepth: 3
    functionLinenumber: 1233
    functionLinenumberEnd: 1245
    functionName: gm_handle_q_groupsrc
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - GM_UPDATE_SG_STATE
    - gm_sg_timer_start
    - gm_sg_find
    linkageType: ''
    returnType: void
    signature: "void gm_handle_q_groupsrc(struct gm_if *gm_ifp,\n\t\t\t\t struct gm_query_timers
      *timers, pim_addr grp,\n\t\t\t\t const pim_addr *srcs, size_t n_src)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1255,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1260,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1260,1
    - Dst: gm_sgs_find_gteq
      Src: /src/frr/pimd/pim6_mld.c:1267,1
    - Dst: frr_each_from
      Src: /src/frr/pimd/pim6_mld.c:1269,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim6_mld.c:1272,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1274,1
    - Dst: gm_sg_check_recent
      Src: /src/frr/pimd/pim6_mld.c:1277,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1284,1
    - Dst: frr_each_safe
      Src: /src/frr/pimd/pim6_mld.c:1286,1
    - Dst: gm_packet_sg_drop
      Src: /src/frr/pimd/pim6_mld.c:1288,1
    - Dst: gm_sg_update
      Src: /src/frr/pimd/pim6_mld.c:1290,1
    - Dst: gm_grp_pends_del
      Src: /src/frr/pimd/pim6_mld.c:1293,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:1294,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1247
    functionDepth: 3
    functionLinenumber: 1247
    functionLinenumberEnd: 1295
    functionName: gm_t_grp_expire
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_sg_update
    - pim_addr_is_any
    - gm_packet_sg_drop
    - gm_sgs_find_gteq
    - log_ifp
    - pim_addr_cmp
    - gm_grp_pends_del
    - zlog_debug
    - EVENT_OFF
    - gm_sg_check_recent
    - frr_each_safe
    - XFREE
    - EVENT_ARG
    - frr_each_from
    linkageType: ''
    returnType: void
    signature: void gm_t_grp_expire(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gm_sgs_find_gteq
      Src: /src/frr/pimd/pim6_mld.c:1306,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim6_mld.c:1308,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1312,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1315,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1315,1
    - Dst: GM_UPDATE_SG_STATE
      Src: /src/frr/pimd/pim6_mld.c:1317,1
    - Dst: gm_sg_timer_start
      Src: /src/frr/pimd/pim6_mld.c:1318,1
    - Dst: gm_sgs_next
      Src: /src/frr/pimd/pim6_mld.c:1320,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim6_mld.c:1321,1
    - Dst: gm_grp_pends_find
      Src: /src/frr/pimd/pim6_mld.c:1327,1
    - Dst: event_timer_remain
      Src: /src/frr/pimd/pim6_mld.c:1332,1
    - Dst: timercmp
      Src: /src/frr/pimd/pim6_mld.c:1333,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1336,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim6_mld.c:1338,1
    - Dst: gm_grp_pends_add
      Src: /src/frr/pimd/pim6_mld.c:1341,1
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:1344,1
    - Dst: event_add_timer_tv
      Src: /src/frr/pimd/pim6_mld.c:1345,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1349,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1349,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - gm_ifp
    - timers
    - grp
    argTypes:
    - struct gm_if*
    - struct gm_query_timers*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1297
    functionDepth: 3
    functionLinenumber: 1297
    functionLinenumberEnd: 1351
    functionName: gm_handle_q_group
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_sg_timer_start
    - event_add_timer_tv
    - event_timer_remain
    - XCALLOC
    - pim_addr_is_any
    - monotime
    - gm_sgs_find_gteq
    - log_ifp
    - pim_addr_cmp
    - timercmp
    - GM_UPDATE_SG_STATE
    - zlog_debug
    - EVENT_OFF
    - gm_grp_pends_add
    - gm_grp_pends_find
    - gm_sgs_next
    linkageType: ''
    returnType: void
    signature: "void gm_handle_q_group(struct gm_if *gm_ifp,\n\t\t\t      struct gm_query_timers
      *timers, pim_addr grp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1357,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1359,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/pimd/pim6_mld.c:1361,1
    - Dst: event_execute
      Src: /src/frr/pimd/pim6_mld.c:1366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - gm_ifp
    argTypes:
    - struct gm_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1353
    functionDepth: 1
    functionLinenumber: 1353
    functionLinenumberEnd: 1367
    functionName: gm_bump_querier
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - EVENT_OFF
    - IPV6_ADDR_SAME
    - event_execute
    linkageType: ''
    returnType: void
    signature: void gm_bump_querier(struct gm_if *gm_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1371,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:1374,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1374,1
    - Dst: event_execute
      Src: /src/frr/pimd/pim6_mld.c:1379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1369
    functionDepth: 1
    functionLinenumber: 1369
    functionLinenumberEnd: 1380
    functionName: gm_t_other_querier
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - event_execute
    - log_ifp
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void gm_t_other_querier(struct event *t)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1393,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1393,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1399,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/pimd/pim6_mld.c:1401,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1402,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1402,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim6_mld.c:1410,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1413,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1413,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1420,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1420,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/pimd/pim6_mld.c:1431,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1432,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1433,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1434,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/pimd/pim6_mld.c:1441,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1443,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1444,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:1451,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1453,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1454,1
    - Dst: mld_max_resp_decode
      Src: /src/frr/pimd/pim6_mld.c:1466,1
    - Dst: igmp_msg_decode8to16
      Src: /src/frr/pimd/pim6_mld.c:1467,1
    - Dst: gm_expiry_calc
      Src: /src/frr/pimd/pim6_mld.c:1471,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1474,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1475,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:1479,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1482,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1483,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim6_mld.c:1486,1
    - Dst: gm_handle_q_general
      Src: /src/frr/pimd/pim6_mld.c:1492,1
    - Dst: gm_handle_q_group
      Src: /src/frr/pimd/pim6_mld.c:1495,1
    - Dst: gm_handle_q_general
      Src: /src/frr/pimd/pim6_mld.c:1508,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim6_mld.c:1510,1
    - Dst: gm_handle_q_group
      Src: /src/frr/pimd/pim6_mld.c:1511,1
    - Dst: assume
      Src: /src/frr/pimd/pim6_mld.c:1519,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim6_mld.c:1519,1
    - Dst: gm_handle_q_groupsrc
      Src: /src/frr/pimd/pim6_mld.c:1523,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim6_mld.c:1524,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 87
    argCount: 5
    argNames:
    - gm_ifp
    - pkt_src
    - pkt_dst
    - data
    - len
    argTypes:
    - struct gm_if*
    - struct sockaddr_in6*
    - pim_addr*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1382
    functionDepth: 4
    functionLinenumber: 1382
    functionLinenumberEnd: 1527
    functionName: gm_handle_query
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_handle_q_groupsrc
    - mld_max_resp_decode
    - pim_addr_is_any
    - igmp_msg_decode8to16
    - gm_expiry_calc
    - gm_handle_q_group
    - log_ifp
    - gm_handle_q_general
    - ntohs
    - event_add_timer_msec
    - zlog_warn
    - zlog_debug
    - EVENT_OFF
    - assume
    - IPV6_ADDR_SAME
    - IPV6_ADDR_CMP
    - IN6_IS_ADDR_MULTICAST
    - log_pkt_src
    linkageType: ''
    returnType: void
    signature: "void gm_handle_query(struct gm_if *gm_ifp,\n\t\t\t    const struct
      sockaddr_in6 *pkt_src,\n\t\t\t    pim_addr *pkt_dst, char *data, size_t len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pimd/pim6_mld.c:1538,1
    - Dst: in_cksum_with_ph6
      Src: /src/frr/pimd/pim6_mld.c:1544,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1547,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1548,1
    - Dst: gm_handle_query
      Src: /src/frr/pimd/pim6_mld.c:1560,1
    - Dst: gm_handle_v1_report
      Src: /src/frr/pimd/pim6_mld.c:1563,1
    - Dst: gm_handle_v1_leave
      Src: /src/frr/pimd/pim6_mld.c:1566,1
    - Dst: gm_handle_v2_report
      Src: /src/frr/pimd/pim6_mld.c:1569,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - gm_ifp
    - pkt_src
    - pkt_dst
    - data
    - pktlen
    argTypes:
    - struct gm_if*
    - struct sockaddr_in6*
    - pim_addr*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1529
    functionDepth: 6
    functionLinenumber: 1529
    functionLinenumberEnd: 1572
    functionName: gm_rx_process
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - htons
    - gm_handle_query
    - gm_handle_v1_report
    - in_cksum_with_ph6
    - zlog_warn
    - gm_handle_v2_report
    - gm_handle_v1_leave
    - log_pkt_src
    linkageType: ''
    returnType: void
    signature: "void gm_rx_process(struct gm_if *gm_ifp,\n\t\t\t  const struct sockaddr_in6
      *pkt_src, pim_addr *pkt_dst,\n\t\t\t  void *data, size_t pktlen)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 3
    argNames:
    - hopopts
    - hopopt_len
    - alert_type
    argTypes:
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1608
    functionName: ip6_check_hopopts_ra
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool ip6_check_hopopts_ra(uint8_t *hopopts, size_t hopopt_len,\n\t\t\t\t
      uint16_t alert_type)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1612,1
    - Dst: CMSG_SPACE
      Src: /src/frr/pimd/pim6_mld.c:1614,1
    - Dst: CMSG_SPACE
      Src: /src/frr/pimd/pim6_mld.c:1615,1
    - Dst: CMSG_SPACE
      Src: /src/frr/pimd/pim6_mld.c:1616,1
    - Dst: event_add_read
      Src: /src/frr/pimd/pim6_mld.c:1631,1
    - Dst: array_size
      Src: /src/frr/pimd/pim6_mld.c:1642,1
    - Dst: recvmsg
      Src: /src/frr/pimd/pim6_mld.c:1645,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:1647,1
    - Dst: XMALLOC
      Src: /src/frr/pimd/pim6_mld.c:1653,1
    - Dst: recvmsg
      Src: /src/frr/pimd/pim6_mld.c:1656,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:1658,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim6_mld.c:1665,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/pimd/pim6_mld.c:1675,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/pimd/pim6_mld.c:1675,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim6_mld.c:1681,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim6_mld.c:1684,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim6_mld.c:1688,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:1694,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1694,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:1701,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1701,1
    - Dst: ip6_check_hopopts_ra
      Src: /src/frr/pimd/pim6_mld.c:1707,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:1708,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1708,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/frr/pimd/pim6_mld.c:1714,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/pimd/pim6_mld.c:1720,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1721,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1721,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1728,1
    - Dst: log_pkt_src
      Src: /src/frr/pimd/pim6_mld.c:1728,1
    - Dst: gm_rx_process
      Src: /src/frr/pimd/pim6_mld.c:1733,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:1738,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 90
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1610
    functionDepth: 7
    functionLinenumber: 1610
    functionLinenumberEnd: 1739
    functionName: gm_t_recv
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - CMSG_FIRSTHDR
    - log_ifp
    - zlog_warn
    - ip6_check_hopopts_ra
    - recvmsg
    - IN6_IS_ADDR_UNSPECIFIED
    - if_lookup_by_index
    - array_size
    - EVENT_ARG
    - zlog_err
    - CMSG_SPACE
    - CMSG_DATA
    - event_add_read
    - XFREE
    - CMSG_NXTHDR
    - IN6_IS_ADDR_LINKLOCAL
    - XMALLOC
    - gm_rx_process
    - log_pkt_src
    linkageType: ''
    returnType: void
    signature: void gm_t_recv(struct event *t)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/pimd/pim6_mld.c:1765,1
    - Dst: CMSG_SPACE
      Src: /src/frr/pimd/pim6_mld.c:1769,1
    - Dst: CMSG_SPACE
      Src: /src/frr/pimd/pim6_mld.c:1770,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim6_mld.c:1781,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1785,1
    - Dst: mld_max_resp_encode
      Src: /src/frr/pimd/pim6_mld.c:1791,1
    - Dst: igmp_msg_encode16to8
      Src: /src/frr/pimd/pim6_mld.c:1796,1
    - Dst: htons
      Src: /src/frr/pimd/pim6_mld.c:1797,1
    - Dst: in_cksumv
      Src: /src/frr/pimd/pim6_mld.c:1818,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1821,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1822,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/pimd/pim6_mld.c:1832,1
    - Dst: CMSG_LEN
      Src: /src/frr/pimd/pim6_mld.c:1835,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim6_mld.c:1836,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/pimd/pim6_mld.c:1846,1
    - Dst: CMSG_LEN
      Src: /src/frr/pimd/pim6_mld.c:1849,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim6_mld.c:1850,1
    - Dst: sendmsg
      Src: /src/frr/pimd/pim6_mld.c:1859,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim6_mld.c:1863,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:1863,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1867,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1872,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 81
    argCount: 5
    argNames:
    - gm_ifp
    - grp
    - srcs
    - n_srcs
    - s_bit
    argTypes:
    - struct gm_if*
    - pim_addr
    - pim_addr*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1880
      start: 1741
    functionDepth: 2
    functionLinenumber: 1741
    functionLinenumberEnd: 1880
    functionName: gm_send_query
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - in_cksumv
    - CMSG_NXTHDR
    - igmp_msg_encode16to8
    - htons
    - pim_addr_is_any
    - if_is_loopback
    - CMSG_FIRSTHDR
    - log_ifp
    - zlog_debug
    - zlog_warn
    - mld_max_resp_encode
    - sendmsg
    - CMSG_SPACE
    - CMSG_DATA
    - CMSG_LEN
    linkageType: ''
    returnType: void
    signature: "void gm_send_query(struct gm_if *gm_ifp, pim_addr grp,\n\t\t\t  const
      pim_addr *srcs, size_t n_srcs, bool s_bit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sendmsg
      Src: /src/frr/pimd/pim6_mld.c:1859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1860
      start: 1858
    functionDepth: 0
    functionLinenumber: 1858
    functionLinenumberEnd: 1860
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - sendmsg
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1884,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim6_mld.c:1892,1
    - Dst: gm_send_query
      Src: /src/frr/pimd/pim6_mld.c:1895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1896
      start: 1882
    functionDepth: 3
    functionLinenumber: 1882
    functionLinenumberEnd: 1896
    functionName: gm_t_query
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - gm_send_query
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void gm_t_query(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1900,1
    - Dst: gm_trigger_specific
      Src: /src/frr/pimd/pim6_mld.c:1902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1898
    functionDepth: 1
    functionLinenumber: 1898
    functionLinenumberEnd: 1903
    functionName: gm_t_sg_query
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_trigger_specific
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void gm_t_sg_query(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gm_send_query
      Src: /src/frr/pimd/pim6_mld.c:1912,1
    - Dst: gm_gsq_pends_del
      Src: /src/frr/pimd/pim6_mld.c:1915,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:1916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pend_gsq
    argTypes:
    - struct gm_gsq_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1908
    functionDepth: 3
    functionLinenumber: 1908
    functionLinenumberEnd: 1917
    functionName: gm_send_specific
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - XFREE
    - gm_gsq_pends_del
    - gm_send_query
    linkageType: ''
    returnType: void
    signature: void gm_send_specific(struct gm_gsq_pending *pend_gsq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim6_mld.c:1921,1
    - Dst: gm_send_specific
      Src: /src/frr/pimd/pim6_mld.c:1923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1919
    functionDepth: 4
    functionLinenumber: 1919
    functionLinenumberEnd: 1924
    functionName: gm_t_gsq_pend
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_send_specific
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void gm_t_gsq_pend(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim6_mld.c:1934,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/pimd/pim6_mld.c:1938,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:1944,1
    - Dst: log_sg
      Src: /src/frr/pimd/pim6_mld.c:1944,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:1946,1
    - Dst: gm_send_query
      Src: /src/frr/pimd/pim6_mld.c:1947,1
    - Dst: gm_gsq_pends_find
      Src: /src/frr/pimd/pim6_mld.c:1954,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim6_mld.c:1956,1
    - Dst: gm_gsq_pends_add
      Src: /src/frr/pimd/pim6_mld.c:1960,1
    - Dst: event_add_timer_tv
      Src: /src/frr/pimd/pim6_mld.c:1962,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:1966,1
    - Dst: array_size
      Src: /src/frr/pimd/pim6_mld.c:1966,1
    - Dst: array_size
      Src: /src/frr/pimd/pim6_mld.c:1971,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:1972,1
    - Dst: gm_send_specific
      Src: /src/frr/pimd/pim6_mld.c:1973,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - sg
    argTypes:
    - struct gm_sg*
    assertStmts:
    - condition: (pend_gsq->n_src < array_size(pend_gsq->srcs))
      pos:
        line_end: 1965
        line_start: 1965
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 1976
      start: 1926
    functionDepth: 4
    functionLinenumber: 1926
    functionLinenumberEnd: 1976
    functionName: gm_trigger_specific
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 2
    functionsReached:
    - event_add_timer_tv
    - XCALLOC
    - pim_addr_is_any
    - gm_gsq_pends_find
    - event_add_timer_msec
    - zlog_debug
    - EVENT_OFF
    - array_size
    - gm_send_specific
    - gm_gsq_pends_add
    - IPV6_ADDR_SAME
    - log_sg
    - assert
    - gm_send_query
    linkageType: ''
    returnType: void
    signature: void gm_trigger_specific(struct gm_sg *sg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ICMP6_FILTER_SETBLOCKALL
      Src: /src/frr/pimd/pim6_mld.c:1987,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/frr/pimd/pim6_mld.c:1988,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/frr/pimd/pim6_mld.c:1989,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/frr/pimd/pim6_mld.c:1990,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/frr/pimd/pim6_mld.c:1991,1
    - Dst: vrf_socket
      Src: /src/frr/pimd/pim6_mld.c:1994,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:1997,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2002,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2005,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2009,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2012,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2016,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2019,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2023,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2026,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2030,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2033,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2038,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2041,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2061,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:2064,1
    - Dst: event_add_read
      Src: /src/frr/pimd/pim6_mld.c:2069,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2071
      start: 1978
    functionDepth: 3
    functionLinenumber: 1978
    functionLinenumberEnd: 2071
    functionName: gm_vrf_socket_incref
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vrf_socket
    - zlog_err
    - setsockopt
    - event_add_read
    - ICMP6_FILTER_SETBLOCKALL
    - ICMP6_FILTER_SETPASS
    linkageType: ''
    returnType: void
    signature: void gm_vrf_socket_incref(struct pim_instance *pim)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vrf_socket
      Src: /src/frr/pimd/pim6_mld.c:1994,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:1997,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2002,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2005,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2009,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2012,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2016,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2019,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2023,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2026,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2030,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2033,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2038,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2041,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2061,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:2064,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 1993
    functionDepth: 3
    functionLinenumber: 1993
    functionLinenumberEnd: 2067
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - setsockopt
    - zlog_err
    - vrf_socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2078,1
    - Dst: close
      Src: /src/frr/pimd/pim6_mld.c:2079,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2073
    functionDepth: 1
    functionLinenumber: 2073
    functionLinenumberEnd: 2081
    functionName: gm_vrf_socket_decref
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - close
    linkageType: ''
    returnType: void
    signature: void gm_vrf_socket_decref(struct pim_instance *pim)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:2088,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:2089,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:2090,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:2091,1
    - Dst: gm_vrf_socket_incref
      Src: /src/frr/pimd/pim6_mld.c:2093,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim6_mld.c:2095,1
    - Dst: monotime
      Src: /src/frr/pimd/pim6_mld.c:2099,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:2101,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:2101,1
    - Dst: gm_sgs_init
      Src: /src/frr/pimd/pim6_mld.c:2118,1
    - Dst: gm_subscribers_init
      Src: /src/frr/pimd/pim6_mld.c:2119,1
    - Dst: gm_packet_expires_init
      Src: /src/frr/pimd/pim6_mld.c:2120,1
    - Dst: gm_grp_pends_init
      Src: /src/frr/pimd/pim6_mld.c:2121,1
    - Dst: gm_gsq_pends_init
      Src: /src/frr/pimd/pim6_mld.c:2122,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2131,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 2087
        line_start: 2087
        source_file: /src/frr/pimd/pim6_mld.c
    - condition: (pim_ifp->mroute_vif_index >= 0)
      pos:
        line_end: 2089
        line_start: 2089
        source_file: /src/frr/pimd/pim6_mld.c
    - condition: (!pim_ifp->mld)
      pos:
        line_end: 2090
        line_start: 2090
        source_file: /src/frr/pimd/pim6_mld.c
    - condition: (pim_ifp->pim)
      pos:
        line_end: 2088
        line_start: 2088
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 2137
      start: 2083
    functionDepth: 4
    functionLinenumber: 2083
    functionLinenumberEnd: 2137
    functionName: gm_start
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 2
    functionsReached:
    - zlog_info
    - XCALLOC
    - gm_grp_pends_init
    - monotime
    - log_ifp
    - gm_sgs_init
    - zlog_err
    - gm_packet_expires_init
    - gm_gsq_pends_init
    - setsockopt
    - gm_subscribers_init
    - gm_vrf_socket_incref
    - assert
    linkageType: ''
    returnType: void
    signature: void gm_start(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2131,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2136
      start: 2124
    functionDepth: 1
    functionLinenumber: 2124
    functionLinenumberEnd: 2136
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - zlog_err
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gm_packet_expires_first
      Src: /src/frr/pimd/pim6_mld.c:2147,1
    - Dst: gm_packet_drop
      Src: /src/frr/pimd/pim6_mld.c:2148,1
    - Dst: gm_grp_pends_pop
      Src: /src/frr/pimd/pim6_mld.c:2150,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2151,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:2152,1
    - Dst: gm_gsq_pends_pop
      Src: /src/frr/pimd/pim6_mld.c:2155,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2156,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:2157,1
    - Dst: gm_sgs_pop
      Src: /src/frr/pimd/pim6_mld.c:2160,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2161,1
    - Dst: assertf
      Src: /src/frr/pimd/pim6_mld.c:2162,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:2162,1
    - Dst: assertf
      Src: /src/frr/pimd/pim6_mld.c:2164,1
    - Dst: gm_packet_sg_subs_count
      Src: /src/frr/pimd/pim6_mld.c:2164,1
    - Dst: gm_sg_free
      Src: /src/frr/pimd/pim6_mld.c:2167,1
    - Dst: gm_subscribers_pop
      Src: /src/frr/pimd/pim6_mld.c:2169,1
    - Dst: assertf
      Src: /src/frr/pimd/pim6_mld.c:2170,1
    - Dst: gm_packets_count
      Src: /src/frr/pimd/pim6_mld.c:2170,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:2172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - gm_ifp
    argTypes:
    - struct gm_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2139
    functionDepth: 4
    functionLinenumber: 2139
    functionLinenumberEnd: 2174
    functionName: gm_group_delete
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_grp_pends_pop
    - gm_packet_drop
    - gm_gsq_pends_pop
    - assertf
    - gm_sg_free
    - gm_sgs_pop
    - gm_subscribers_pop
    - EVENT_OFF
    - gm_packet_expires_first
    - XFREE
    - gm_packet_sg_subs_count
    - gm_packets_count
    linkageType: ''
    returnType: void
    signature: void gm_group_delete(struct gm_if *gm_ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:2187,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:2187,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2189,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2190,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2191,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2200,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2203,1
    - Dst: gm_vrf_socket_decref
      Src: /src/frr/pimd/pim6_mld.c:2208,1
    - Dst: gm_group_delete
      Src: /src/frr/pimd/pim6_mld.c:2210,1
    - Dst: gm_grp_pends_fini
      Src: /src/frr/pimd/pim6_mld.c:2212,1
    - Dst: gm_packet_expires_fini
      Src: /src/frr/pimd/pim6_mld.c:2213,1
    - Dst: gm_subscribers_fini
      Src: /src/frr/pimd/pim6_mld.c:2214,1
    - Dst: gm_sgs_fini
      Src: /src/frr/pimd/pim6_mld.c:2215,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:2217,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2219
      start: 2176
    functionDepth: 5
    functionLinenumber: 2176
    functionLinenumberEnd: 2219
    functionName: gm_ifp_teardown
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 2
    functionsReached:
    - gm_subscribers_fini
    - gm_group_delete
    - gm_packet_expires_fini
    - zlog_err
    - log_ifp
    - gm_grp_pends_fini
    - zlog_debug
    - EVENT_OFF
    - XFREE
    - gm_sgs_fini
    - gm_vrf_socket_decref
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void gm_ifp_teardown(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim6_mld.c:2200,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim6_mld.c:2203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2206
      start: 2193
    functionDepth: 1
    functionLinenumber: 2193
    functionLinenumberEnd: 2206
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - zlog_err
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:2228,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:2229,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim6_mld.c:2234,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:2236,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:2238,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:2238,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:2244,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:2244,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:2246,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim6_mld.c:2247,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim6_mld.c:2248,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:2248,1
    - Dst: event_execute
      Src: /src/frr/pimd/pim6_mld.c:2255,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2256
      start: 2221
    functionDepth: 1
    functionLinenumber: 2221
    functionLinenumberEnd: 2256
    functionName: gm_update_ll
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - pim_addr_is_any
    - event_execute
    - log_ifp
    - EVENT_OFF
    - IPV6_ADDR_CMP
    linkageType: ''
    returnType: void
    signature: void gm_update_ll(struct interface *ifp)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: if_is_operative
      Src: /src/frr/pimd/pim6_mld.c:2266,1
    - Dst: gm_ifp_teardown
      Src: /src/frr/pimd/pim6_mld.c:2268,1
    - Dst: gm_start
      Src: /src/frr/pimd/pim6_mld.c:2280,1
    - Dst: assume
      Src: /src/frr/pimd/pim6_mld.c:2281,1
    - Dst: IPV6_ADDR_CMP
      Src: /src/frr/pimd/pim6_mld.c:2285,1
    - Dst: gm_update_ll
      Src: /src/frr/pimd/pim6_mld.c:2286,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim6_mld.c:2325,1
    - Dst: log_ifp
      Src: /src/frr/pimd/pim6_mld.c:2325,1
    - Dst: gm_bump_querier
      Src: /src/frr/pimd/pim6_mld.c:2327,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2329
      start: 2258
    functionDepth: 5
    functionLinenumber: 2258
    functionLinenumberEnd: 2329
    functionName: gm_ifp_update
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 8
    functionsReached:
    - log_ifp
    - zlog_debug
    - gm_start
    - assume
    - gm_update_ll
    - gm_bump_querier
    - IPV6_ADDR_CMP
    - if_is_operative
    - gm_ifp_teardown
    linkageType: ''
    returnType: void
    signature: void gm_ifp_update(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/pimd/pim6_mld.c:2345,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim6_mld.c:2346,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim6_mld.c:2348,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - vrf_str
    - err
    argTypes:
    - struct vty*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2339
    functionDepth: 2
    functionLinenumber: 2339
    functionLinenumberEnd: 2355
    functionName: gm_cmd_vrf_lookup
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - strcmp
    - vty_out
    - vrf_lookup_by_name
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct vrf
    signature: "struct vrf *gm_cmd_vrf_lookup(struct vty *vty, const char *vrf_str,\n\t\t\t\t
      \    int *err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2365,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2371,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/pimd/pim6_mld.c:2375,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2377,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2378,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2379,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2380,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2382,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2383,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2385,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2386,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2388,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2389,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2391,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2396,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2399,1
    - Dst: gm_grp_pends_count
      Src: /src/frr/pimd/pim6_mld.c:2400,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2401,1
    - Dst: gm_gsq_pends_count
      Src: /src/frr/pimd/pim6_mld.c:2402,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2403,1
    - Dst: gm_sgs_count
      Src: /src/frr/pimd/pim6_mld.c:2404,1
    - Dst: gm_subscribers_count
      Src: /src/frr/pimd/pim6_mld.c:2405,1
    - Dst: gm_packet_expires_count
      Src: /src/frr/pimd/pim6_mld.c:2406,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 2
    argNames:
    - vty
    - ifp
    argTypes:
    - struct vty*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2408
      start: 2357
    functionDepth: 2
    functionLinenumber: 2357
    functionLinenumberEnd: 2408
    functionName: gm_show_if_one_detail
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_packet_expires_count
    - gm_subscribers_count
    - vty_out
    - gm_sgs_count
    - gm_grp_pends_count
    - IPV6_ADDR_SAME
    - gm_gsq_pends_count
    linkageType: ''
    returnType: void
    signature: void gm_show_if_one_detail(struct vty *vty, struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assume
      Src: /src/frr/pimd/pim6_mld.c:2417,1
    - Dst: IPV6_ADDR_SAME
      Src: /src/frr/pimd/pim6_mld.c:2419,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim6_mld.c:2422,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2423,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim6_mld.c:2425,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2426,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2428,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim6_mld.c:2430,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2431,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2434,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2437,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2440,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2442,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2444,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2446,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2448,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim6_mld.c:2451,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - vty
    - ifp
    - js_if
    - tt
    argTypes:
    - struct vty*
    - struct interface*
    - json_object*
    - struct ttable*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2457
      start: 2410
    functionDepth: 3
    functionLinenumber: 2410
    functionLinenumberEnd: 2457
    functionName: gm_show_if_one
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - json_object_boolean_add
    - json_object_int_add
    - json_object_string_add
    - assume
    - json_object_string_addf
    - IPV6_ADDR_SAME
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void gm_show_if_one(struct vty *vty, struct interface *ifp,\n\t\t\t
      \  json_object *js_if, struct ttable *tt)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2469,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2470,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim6_mld.c:2475,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim6_mld.c:2476,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim6_mld.c:2481,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim6_mld.c:2487,1
    - Dst: gm_show_if_one_detail
      Src: /src/frr/pimd/pim6_mld.c:2490,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2500,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:2513,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2514,1
    - Dst: gm_show_if_one
      Src: /src/frr/pimd/pim6_mld.c:2517,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim6_mld.c:2522,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2523,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:2524,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim6_mld.c:2525,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 5
    argNames:
    - vty
    - vrf
    - ifname
    - detail
    - js
    argTypes:
    - struct vty*
    - struct vrf*
    - char*
    - bool
    - json_object*
    assertStmts:
    - condition: (js_if)
      pos:
        line_end: 2512
        line_start: 2512
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 2527
      start: 2459
    functionDepth: 4
    functionLinenumber: 2459
    functionLinenumberEnd: 2527
    functionName: gm_show_if_vrf
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - assert
    - ttable_del
    - vty_out
    - ttable_new
    - strcmp
    - ttable_restyle
    - ttable_dump
    - gm_show_if_one_detail
    - json_object_object_add
    - gm_show_if_one
    - XFREE
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: "void gm_show_if_vrf(struct vty *vty, struct vrf *vrf, const char *ifname,\n\t\t\t
      \  bool detail, json_object *js)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pimd/pim6_mld.c:2487,1
    - Dst: gm_show_if_one_detail
      Src: /src/frr/pimd/pim6_mld.c:2490,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2500,1
    - Dst: assert
      Src: /src/frr/pimd/pim6_mld.c:2513,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2514,1
    - Dst: gm_show_if_one
      Src: /src/frr/pimd/pim6_mld.c:2517,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (js_if)
      pos:
        line_end: 2512
        line_start: 2512
        source_file: /src/frr/pimd/pim6_mld.c
    constantsTouched: []
    func_position:
      end: 2518
      start: 2484
    functionDepth: 4
    functionLinenumber: 2484
    functionLinenumberEnd: 2518
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 57
    functionsReached:
    - json_object_new_object
    - strcmp
    - gm_show_if_one_detail
    - json_object_object_add
    - gm_show_if_one
    - assert
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gm_show_if_vrf
      Src: /src/frr/pimd/pim6_mld.c:2533,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim6_mld.c:2535,1
    - Dst: gm_show_if_vrf
      Src: /src/frr/pimd/pim6_mld.c:2536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - vty
    - vrf
    - ifname
    - detail
    - js
    argTypes:
    - struct vty*
    - struct vrf*
    - char*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2537
      start: 2529
    functionDepth: 5
    functionLinenumber: 2529
    functionLinenumberEnd: 2537
    functionName: gm_show_if
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - gm_show_if_vrf
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: "void gm_show_if(struct vty *vty, struct vrf *vrf, const char *ifname,\n\t\t
      \      bool detail, json_object *js)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/pimd/pim6_mld.c:2602,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2604,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - vty
    - gm_ifp
    - js_if
    argTypes:
    - struct vty*
    - struct gm_if*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2609
      start: 2565
    functionDepth: 2
    functionLinenumber: 2565
    functionLinenumberEnd: 2609
    functionName: gm_show_stats_one
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - array_size
    - vty_out
    - json_object_int_add
    linkageType: ''
    returnType: void
    signature: "void gm_show_stats_one(struct vty *vty, struct gm_if *gm_ifp,\n\t\t\t
      \     json_object *js_if)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2618,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2619,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim6_mld.c:2627,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2638,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2639,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2641,1
    - Dst: gm_show_stats_one
      Src: /src/frr/pimd/pim6_mld.c:2643,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2645,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 4
    argNames:
    - vty
    - vrf
    - ifname
    - js
    argTypes:
    - struct vty*
    - struct vrf*
    - char*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2611
    functionDepth: 3
    functionLinenumber: 2611
    functionLinenumberEnd: 2647
    functionName: gm_show_stats_vrf
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - strcmp
    - gm_show_stats_one
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void gm_show_stats_vrf(struct vty *vty, struct vrf *vrf,\n\t\t\t      const
      char *ifname, json_object *js)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pimd/pim6_mld.c:2627,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2638,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2639,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2641,1
    - Dst: gm_show_stats_one
      Src: /src/frr/pimd/pim6_mld.c:2643,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2645,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2646
      start: 2622
    functionDepth: 3
    functionLinenumber: 2622
    functionLinenumberEnd: 2646
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 57
    functionsReached:
    - json_object_new_object
    - vty_out
    - strcmp
    - gm_show_stats_one
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim6_mld.c:2693,1
    - Dst: gm_sgs_find_gteq
      Src: /src/frr/pimd/pim6_mld.c:2694,1
    - Dst: gm_sgs_first
      Src: /src/frr/pimd/pim6_mld.c:2696,1
    - Dst: gm_subscribers_find
      Src: /src/frr/pimd/pim6_mld.c:2699,1
    - Dst: frr_each_from
      Src: /src/frr/pimd/pim6_mld.c:2702,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim6_mld.c:2709,1
    - Dst: prefix_match
      Src: /src/frr/pimd/pim6_mld.c:2710,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim6_mld.c:2717,1
    - Dst: prefix_match
      Src: /src/frr/pimd/pim6_mld.c:2718,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:2725,1
    - Dst: gm_packet_sg_find
      Src: /src/frr/pimd/pim6_mld.c:2733,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:2735,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2742,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim6_mld.c:2754,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:2755,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2759,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim6_mld.c:2763,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:2764,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2768,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim6_mld.c:2777,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2778,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim6_mld.c:2779,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2784,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim6_mld.c:2785,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim6_mld.c:2788,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2789,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2791,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2794,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2803,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2804,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim6_mld.c:2805,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:2806,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2812,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim6_mld.c:2813,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2815,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2819,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2820,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim6_mld.c:2821,1
    - Dst: gm_packet_sg2state
      Src: /src/frr/pimd/pim6_mld.c:2822,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2828,1
    - Dst: json_object_object_addf
      Src: /src/frr/pimd/pim6_mld.c:2829,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2831,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 85
    argCount: 6
    argNames:
    - vty
    - gm_ifp
    - groups
    - sources
    - detail
    - js_if
    argTypes:
    - struct vty*
    - struct gm_if*
    - struct prefix_ipv6*
    - struct prefix_ipv6*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2680
    functionDepth: 2
    functionLinenumber: 2680
    functionLinenumberEnd: 2835
    functionName: gm_show_joins_one
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_addr_from_prefix
    - json_object_object_addf
    - gm_packet_sg_find
    - vty_out
    - prefix_match
    - frr_each
    - pim_addr_to_prefix
    - gm_sgs_find_gteq
    - gm_packet_sg2state
    - pim_addr_cmp
    - json_object_string_add
    - json_object_object_add
    - json_object_string_addf
    - gm_sgs_first
    - frr_each_from
    - gm_subscribers_find
    linkageType: ''
    returnType: void
    signature: "void gm_show_joins_one(struct vty *vty, struct gm_if *gm_ifp,\n\t\t\t
      \     const struct prefix_ipv6 *groups,\n\t\t\t      const struct prefix_ipv6
      *sources, bool detail,\n\t\t\t      json_object *js_if)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2847,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim6_mld.c:2848,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2849,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim6_mld.c:2857,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2868,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2869,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2873,1
    - Dst: gm_show_joins_one
      Src: /src/frr/pimd/pim6_mld.c:2875,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 7
    argNames:
    - vty
    - vrf
    - ifname
    - groups
    - sources
    - detail
    - js
    argTypes:
    - struct vty*
    - struct vrf*
    - char*
    - struct prefix_ipv6*
    - struct prefix_ipv6*
    - bool
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2877
      start: 2837
    functionDepth: 3
    functionLinenumber: 2837
    functionLinenumberEnd: 2877
    functionName: gm_show_joins_vrf
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - gm_show_joins_one
    - vty_out
    - strcmp
    - json_object_string_add
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: "void gm_show_joins_vrf(struct vty *vty, struct vrf *vrf,\n\t\t\t      const
      char *ifname,\n\t\t\t      const struct prefix_ipv6 *groups,\n\t\t\t      const
      struct prefix_ipv6 *sources, bool detail,\n\t\t\t      json_object *js)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pimd/pim6_mld.c:2857,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2868,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2869,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2873,1
    - Dst: gm_show_joins_one
      Src: /src/frr/pimd/pim6_mld.c:2875,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2876
      start: 2852
    functionDepth: 3
    functionLinenumber: 2852
    functionLinenumberEnd: 2876
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 57
    functionsReached:
    - json_object_new_object
    - gm_show_joins_one
    - vty_out
    - strcmp
    - json_object_object_add
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2932,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2933,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2934,1
    - Dst: ttable_new
      Src: /src/frr/pimd/pim6_mld.c:2938,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim6_mld.c:2939,1
    - Dst: ttable_restyle
      Src: /src/frr/pimd/pim6_mld.c:2942,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2944,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:2945,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim6_mld.c:2965,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim6_mld.c:2968,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2972,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim6_mld.c:2973,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2975,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim6_mld.c:2977,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2978,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2983,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2984,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2988,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2990,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim6_mld.c:2992,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim6_mld.c:2994,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim6_mld.c:3003,1
    - Dst: ttable_dump
      Src: /src/frr/pimd/pim6_mld.c:3006,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim6_mld.c:3007,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim6_mld.c:3008,1
    - Dst: ttable_del
      Src: /src/frr/pimd/pim6_mld.c:3009,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 3
    argNames:
    - vty
    - vrf
    - uj
    argTypes:
    - struct vty*
    - struct vrf*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3011
      start: 2920
    functionDepth: 4
    functionLinenumber: 2920
    functionLinenumberEnd: 3011
    functionName: gm_show_groups
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - ttable_del
    - vty_out
    - json_object_array_add
    - frr_each
    - ttable_new
    - json_object_pim_ifp_add
    - ttable_restyle
    - json_object_object_get_ex
    - json_object_int_add
    - ttable_dump
    - json_object_object_add
    - XFREE
    - json_object_string_addf
    - vty_json
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: void gm_show_groups(struct vty *vty, struct vrf *vrf, bool uj)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim6_mld.c:2965,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim6_mld.c:2968,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2972,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim6_mld.c:2973,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2975,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim6_mld.c:2977,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim6_mld.c:2978,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim6_mld.c:2983,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2984,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim6_mld.c:2988,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim6_mld.c:2990,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim6_mld.c:2992,1
    - Dst: ttable_add_row
      Src: /src/frr/pimd/pim6_mld.c:2994,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2951
    functionDepth: 3
    functionLinenumber: 2951
    functionLinenumberEnd: 3000
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 57
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - frr_each
    - json_object_pim_ifp_add
    - json_object_object_get_ex
    - json_object_int_add
    - json_object_object_add
    - json_object_string_addf
    - ttable_add_row
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/pimd/pim6_mld.c:3210,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_mld.c:3211,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_mld.c:3212,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_mld.c:3213,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_mld.c:3215,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_mld.c:3216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3217
      start: 3208
    functionDepth: 1
    functionLinenumber: 3208
    functionLinenumberEnd: 3217
    functionName: gm_cli_init
    functionSourceFile: /src/frr/pimd/pim6_mld.c
    functionUses: 1
    functionsReached:
    - install_element
    linkageType: ''
    returnType: void
    signature: void gm_cli_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_TLV_OPTION_SIZE
      Src: /src/frr/pimd/pim_tlv.c:33,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:36,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:38,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - buf
    - buf_pastend
    - option_type
    - option_value
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 44
    functionName: pim_tlv_append_uint16
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - PIM_TLV_OPTION_SIZE
    - htons
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *pim_tlv_append_uint16(uint8_t *buf, const uint8_t *buf_pastend,\n\t\t\t
      \      uint16_t option_type, uint16_t option_value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_TLV_OPTION_SIZE
      Src: /src/frr/pimd/pim_tlv.c:52,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:55,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:57,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:59,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - buf
    - buf_pastend
    - option_type
    - option_value1
    - option_value2
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 65
    functionName: pim_tlv_append_2uint16
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - PIM_TLV_OPTION_SIZE
    - htons
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *pim_tlv_append_2uint16(uint8_t *buf, const uint8_t *buf_pastend,\n\t\t\t\tuint16_t
      option_type, uint16_t option_value1,\n\t\t\t\tuint16_t option_value2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_TLV_OPTION_SIZE
      Src: /src/frr/pimd/pim_tlv.c:72,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:75,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:77,1
    - Dst: pim_write_uint32
      Src: /src/frr/pimd/pim_tlv.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - buf
    - buf_pastend
    - option_type
    - option_value
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: pim_tlv_append_uint32
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - pim_write_uint32
    - PIM_TLV_OPTION_SIZE
    - htons
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *pim_tlv_append_uint32(uint8_t *buf, const uint8_t *buf_pastend,\n\t\t\t
      \      uint16_t option_type, uint32_t option_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - addr
    argTypes:
    - uint8_t*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: pim_encode_addr_ucast
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pim_encode_addr_ucast(uint8_t *buf, pim_addr addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:139,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - buf
    - p
    argTypes:
    - uint8_t*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 151
    functionName: pim_encode_addr_ucast_prefix
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pim_encode_addr_ucast_prefix(uint8_t *buf, struct prefix *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - buf
    - afi
    - bidir
    - scope
    - group
    argTypes:
    - uint8_t*
    - afi_t
    - int
    - int
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 215
    functionName: pim_encode_addr_group
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_encode_addr_group(uint8_t *buf, afi_t afi, int bidir, int
      scope,\n\t\t\t  pim_addr group)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: listhead
      Src: /src/frr/pimd/pim_tlv.c:228,1
    - Dst: listnextnode
      Src: /src/frr/pimd/pim_tlv.c:242,1
    - Dst: listgetdata
      Src: /src/frr/pimd/pim_tlv.c:243,1
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_tlv.c:247,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_tlv.c:248,1
    - Dst: pim_encode_addr_ucast_prefix
      Src: /src/frr/pimd/pim_tlv.c:259,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tlv.c:265,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:278,1
    - Dst: htons
      Src: /src/frr/pimd/pim_tlv.c:279,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - buf
    - buf_pastend
    - ifp
    - family
    argTypes:
    - uint8_t*
    - uint8_t*
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 282
    functionName: pim_tlv_append_addrlist_ucast
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - listnextnode
    - pim_addr_from_prefix
    - pim_encode_addr_ucast_prefix
    - htons
    - listhead
    - pim_addr_cmp
    - zlog_debug
    - listgetdata
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *pim_tlv_append_addrlist_ucast(uint8_t *buf, const uint8_t
      *buf_pastend,\n\t\t\t\t       struct interface *ifp, int family)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - correct_len
    - option_len
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 297
    functionName: check_tlv_length
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: "int check_tlv_length(const char *label, const char *tlv_name,\n\t\t\t
      \   const char *ifname, pim_addr src_addr,\n\t\t\t    int correct_len, int option_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_tlv.c:306,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:307,1
    - Dst: old::old
      Src: /src/frr/pimd/pim_tlv.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 8
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - options
    - opt_mask
    - new
    - old
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - pim_hello_options
    - pim_hello_options
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: check_tlv_redefinition_uint16
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - PIM_OPTION_IS_SET
    - old::old
    linkageType: ''
    returnType: void
    signature: "void check_tlv_redefinition_uint16(const char *label,\n\t\t\t\t\t
      \ const char *tlv_name,\n\t\t\t\t\t  const char *ifname, pim_addr src_addr,\n\t\t\t\t\t
      \ pim_hello_options options,\n\t\t\t\t\t  pim_hello_options opt_mask,\n\t\t\t\t\t
      \ uint16_t new, uint16_t old)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_tlv.c:319,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:320,1
    - Dst: old::old
      Src: /src/frr/pimd/pim_tlv.c:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 8
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - options
    - opt_mask
    - new
    - old
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - pim_hello_options
    - pim_hello_options
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: check_tlv_redefinition_uint32
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - PIM_OPTION_IS_SET
    - old::old
    linkageType: ''
    returnType: void
    signature: "void check_tlv_redefinition_uint32(const char *label,\n\t\t\t\t\t
      \ const char *tlv_name,\n\t\t\t\t\t  const char *ifname, pim_addr src_addr,\n\t\t\t\t\t
      \ pim_hello_options options,\n\t\t\t\t\t  pim_hello_options opt_mask,\n\t\t\t\t\t
      \ uint32_t new, uint32_t old)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_tlv.c:330,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:331,1
    - Dst: old::old
      Src: /src/frr/pimd/pim_tlv.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 8
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - options
    - opt_mask
    - new
    - old
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - pim_hello_options
    - pim_hello_options
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 334
    functionName: check_tlv_redefinition_uint32_hex
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - PIM_OPTION_IS_SET
    - old::old
    linkageType: ''
    returnType: void
    signature: "void check_tlv_redefinition_uint32_hex(\n\tconst char *label, const
      char *tlv_name, const char *ifname,\n\tpim_addr src_addr, pim_hello_options
      options,\n\tpim_hello_options opt_mask, uint32_t new, uint32_t old)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_length
      Src: /src/frr/pimd/pim_tlv.c:343,1
    - Dst: check_tlv_redefinition_uint16
      Src: /src/frr/pimd/pim_tlv.c:348,1
    - Dst: PIM_TLV_GET_HOLDTIME
      Src: /src/frr/pimd/pim_tlv.c:350,1
    - Dst: PIM_OPTION_SET
      Src: /src/frr/pimd/pim_tlv.c:353,1
    - Dst: PIM_TLV_GET_HOLDTIME
      Src: /src/frr/pimd/pim_tlv.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - ifname
    - src_addr
    - hello_options
    - hello_option_holdtime
    - option_len
    - tlv_curr
    argTypes:
    - char*
    - pim_addr
    - pim_hello_options*
    - uint16_t*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 358
    functionName: pim_tlv_parse_holdtime
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - check_tlv_redefinition_uint16
    - check_tlv_length
    - PIM_OPTION_SET
    - PIM_TLV_GET_HOLDTIME
    linkageType: ''
    returnType: int
    signature: "int pim_tlv_parse_holdtime(const char *ifname, pim_addr src_addr,\n\t\t\t
      \  pim_hello_options *hello_options,\n\t\t\t   uint16_t *hello_option_holdtime,
      uint16_t option_len,\n\t\t\t   const uint8_t *tlv_curr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_length
      Src: /src/frr/pimd/pim_tlv.c:366,1
    - Dst: check_tlv_redefinition_uint16
      Src: /src/frr/pimd/pim_tlv.c:371,1
    - Dst: PIM_TLV_GET_PROPAGATION_DELAY
      Src: /src/frr/pimd/pim_tlv.c:374,1
    - Dst: PIM_OPTION_SET
      Src: /src/frr/pimd/pim_tlv.c:377,1
    - Dst: PIM_TLV_GET_PROPAGATION_DELAY
      Src: /src/frr/pimd/pim_tlv.c:380,1
    - Dst: PIM_TLV_GET_CAN_DISABLE_JOIN_SUPPRESSION
      Src: /src/frr/pimd/pim_tlv.c:381,1
    - Dst: PIM_OPTION_SET
      Src: /src/frr/pimd/pim_tlv.c:382,1
    - Dst: PIM_OPTION_UNSET
      Src: /src/frr/pimd/pim_tlv.c:385,1
    - Dst: PIM_TLV_GET_OVERRIDE_INTERVAL
      Src: /src/frr/pimd/pim_tlv.c:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 7
    argNames:
    - ifname
    - src_addr
    - hello_options
    - hello_option_propagation_delay
    - hello_option_override_interval
    - option_len
    - tlv_curr
    argTypes:
    - char*
    - pim_addr
    - pim_hello_options*
    - uint16_t*
    - uint16_t*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 394
    functionName: pim_tlv_parse_lan_prune_delay
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - check_tlv_length
    - PIM_OPTION_SET
    - PIM_OPTION_UNSET
    - PIM_TLV_GET_CAN_DISABLE_JOIN_SUPPRESSION
    - check_tlv_redefinition_uint16
    - PIM_TLV_GET_OVERRIDE_INTERVAL
    - PIM_TLV_GET_PROPAGATION_DELAY
    linkageType: ''
    returnType: int
    signature: "int pim_tlv_parse_lan_prune_delay(const char *ifname, pim_addr src_addr,\n\t\t\t\t
      \ pim_hello_options *hello_options,\n\t\t\t\t  uint16_t *hello_option_propagation_delay,\n\t\t\t\t
      \ uint16_t *hello_option_override_interval,\n\t\t\t\t  uint16_t option_len,
      const uint8_t *tlv_curr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_length
      Src: /src/frr/pimd/pim_tlv.c:403,1
    - Dst: check_tlv_redefinition_uint32
      Src: /src/frr/pimd/pim_tlv.c:408,1
    - Dst: PIM_TLV_GET_DR_PRIORITY
      Src: /src/frr/pimd/pim_tlv.c:410,1
    - Dst: PIM_OPTION_SET
      Src: /src/frr/pimd/pim_tlv.c:413,1
    - Dst: PIM_TLV_GET_DR_PRIORITY
      Src: /src/frr/pimd/pim_tlv.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - ifname
    - src_addr
    - hello_options
    - hello_option_dr_priority
    - option_len
    - tlv_curr
    argTypes:
    - char*
    - pim_addr
    - pim_hello_options*
    - uint32_t*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 418
    functionName: pim_tlv_parse_dr_priority
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - check_tlv_redefinition_uint32
    - check_tlv_length
    - PIM_TLV_GET_DR_PRIORITY
    - PIM_OPTION_SET
    linkageType: ''
    returnType: int
    signature: "int pim_tlv_parse_dr_priority(const char *ifname, pim_addr src_addr,\n\t\t\t
      \     pim_hello_options *hello_options,\n\t\t\t      uint32_t *hello_option_dr_priority,\n\t\t\t
      \     uint16_t option_len, const uint8_t *tlv_curr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_tlv_length
      Src: /src/frr/pimd/pim_tlv.c:427,1
    - Dst: check_tlv_redefinition_uint32_hex
      Src: /src/frr/pimd/pim_tlv.c:432,1
    - Dst: PIM_TLV_GET_GENERATION_ID
      Src: /src/frr/pimd/pim_tlv.c:435,1
    - Dst: PIM_OPTION_SET
      Src: /src/frr/pimd/pim_tlv.c:438,1
    - Dst: PIM_TLV_GET_GENERATION_ID
      Src: /src/frr/pimd/pim_tlv.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - ifname
    - src_addr
    - hello_options
    - hello_option_generation_id
    - option_len
    - tlv_curr
    argTypes:
    - char*
    - pim_addr
    - pim_hello_options*
    - uint32_t*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 420
    functionDepth: 2
    functionLinenumber: 420
    functionLinenumberEnd: 443
    functionName: pim_tlv_parse_generation_id
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - check_tlv_redefinition_uint32_hex
    - check_tlv_length
    - PIM_OPTION_SET
    - PIM_TLV_GET_GENERATION_ID
    linkageType: ''
    returnType: int
    signature: "int pim_tlv_parse_generation_id(const char *ifname, pim_addr src_addr,\n\t\t\t\tpim_hello_options
      *hello_options,\n\t\t\t\tuint32_t *hello_option_generation_id,\n\t\t\t\tuint16_t
      option_len, const uint8_t *tlv_curr)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:455,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:468,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:476,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:485,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:492,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:501,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:506,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 3
    argNames:
    - p
    - buf
    - buf_size
    argTypes:
    - struct prefix*
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 513
    functionName: pim_parse_addr_ucast_prefix
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_parse_addr_ucast_prefix(struct prefix *p, const uint8_t *buf,\n\t\t\t\tint
      buf_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_parse_addr_ucast_prefix
      Src: /src/frr/pimd/pim_tlv.c:521,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:530,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - out
    - buf
    - buf_size
    - wrong_af
    argTypes:
    - pim_addr*
    - uint8_t*
    - int
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 515
    functionDepth: 2
    functionLinenumber: 515
    functionLinenumberEnd: 532
    functionName: pim_parse_addr_ucast
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 1
    functionsReached:
    - pim_parse_addr_ucast_prefix
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_parse_addr_ucast(pim_addr *out, const uint8_t *buf, int buf_size,\n\t\t\t
      bool *wrong_af)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:545,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:560,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:566,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:573,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:579,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - sg
    - buf
    - buf_size
    argTypes:
    - pim_sgaddr*
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 583
    functionName: pim_parse_addr_group
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pim_parse_addr_group(pim_sgaddr *sg, const uint8_t *buf, int buf_size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:597,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:612,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:621,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tlv.c:627,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:640,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:649,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 4
    argNames:
    - sg
    - flags
    - buf
    - buf_size
    argTypes:
    - pim_sgaddr*
    - uint8_t*
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 656
    functionName: pim_parse_addr_source
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_parse_addr_source(pim_sgaddr *sg, uint8_t *flags, const uint8_t
      *buf,\n\t\t\t  int buf_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hello_option_addr_list
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 665
    functionName: FREE_ADDR_LIST
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE_ADDR_LIST(hello_option_addr_list)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_tlv.c:674,1
    - Dst: pim_parse_addr_ucast_prefix
      Src: /src/frr/pimd/pim_tlv.c:689,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:691,1
    - Dst: FREE_ADDR_LIST
      Src: /src/frr/pimd/pim_tlv.c:694,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_tlv.c:706,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tlv.c:708,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_tlv.c:712,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tlv.c:720,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_tlv.c:724,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_tlv.c:735,1
    - Dst: prefix_cmp
      Src: /src/frr/pimd/pim_tlv.c:736,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tlv.c:737,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_tlv.c:747,1
    - Dst: prefix_new
      Src: /src/frr/pimd/pim_tlv.c:756,1
    - Dst: prefix_copy
      Src: /src/frr/pimd/pim_tlv.c:757,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_tlv.c:758,1
    - Dst: PIM_OPTION_SET
      Src: /src/frr/pimd/pim_tlv.c:766,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 6
    argNames:
    - ifname
    - src_addr
    - hello_options
    - hello_option_addr_list
    - option_len
    - tlv_curr
    argTypes:
    - char*
    - pim_addr
    - pim_hello_options*
    - struct list**
    - uint16_t
    - uint8_t*
    assertStmts:
    - condition: (hello_option_addr_list)
      pos:
        line_end: 673
        line_start: 673
        source_file: /src/frr/pimd/pim_tlv.c
    constantsTouched: []
    func_position:
      end: 769
      start: 666
    functionDepth: 2
    functionLinenumber: 666
    functionLinenumberEnd: 769
    functionName: pim_tlv_parse_addr_list
    functionSourceFile: /src/frr/pimd/pim_tlv.c
    functionUses: 0
    functionsReached:
    - PIM_OPTION_SET
    - prefix_cmp
    - prefix_new
    - listcount
    - pim_parse_addr_ucast_prefix
    - pim_addr_to_prefix
    - listnode_add
    - prefix_copy
    - zlog_warn
    - zlog_debug
    - list_new
    - FREE_ADDR_LIST
    - pim_inet4_dump
    - assert
    linkageType: ''
    returnType: int
    signature: "int pim_tlv_parse_addr_list(const char *ifname, pim_addr src_addr,\n\t\t\t
      \   pim_hello_options *hello_options,\n\t\t\t    struct list **hello_option_addr_list,\n\t\t\t
      \   uint16_t option_len, const uint8_t *tlv_curr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_ssmpingd.c:37,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_ssmpingd.c:39,1
    - Dst: assert
      Src: /src/frr/pimd/pim_ssmpingd.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts:
    - condition: (!pim->ssmpingd_list)
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/frr/pimd/pim_ssmpingd.c
    - condition: (result > 0)
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/frr/pimd/pim_ssmpingd.c
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: pim_ssmpingd_init
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_ssmpingd_init(struct pim_instance *pim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/pimd/pim_ssmpingd.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: pim_ssmpingd_destroy
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - list_delete
    linkageType: ''
    returnType: void
    signature: void pim_ssmpingd_destroy(struct pim_instance *pim)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_ssmpingd.c:60,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_ssmpingd.c:61,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_ssmpingd.c:69,1
    - Dst: if
      Src: /src/frr/pimd/pim_ssmpingd.c:79,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_ssmpingd.c:79,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:80,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:82,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_ssmpingd.c:87,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:88,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:90,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_ssmpingd.c:93,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:97,1
    - Dst: setsockopt_ipv4_multicast_loop
      Src: /src/frr/pimd/pim_ssmpingd.c:101,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:102,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:104,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:105,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_ssmpingd.c:109,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:111,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:113,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:114,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_ssmpingd.c:118,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:120,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:122,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:123,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - pim
    - source_addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 128
    functionName: ssmpingd_find
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - setsockopt_ipv4_multicast_loop
    - pim_addr_cmp
    - close
    - zlog_warn
    - safe_strerror
    - flog_err
    - XFREE
    - if
    - setsockopt
    linkageType: ''
    returnType: struct ssmpingd_sock
    signature: "struct ssmpingd_sock *ssmpingd_find(struct pim_instance *pim,\n\t\t\t\t\t
      \  pim_addr source_addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv6_pktinfo
      Src: /src/frr/pimd/pim_ssmpingd.c:132,1
    - Dst: setsockopt_ipv6_multicast_hops
      Src: /src/frr/pimd/pim_ssmpingd.c:133,1
    - Dst: setsockopt_ipv6_multicast_loop
      Src: /src/frr/pimd/pim_ssmpingd.c:135,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:136,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:138,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:139,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_ssmpingd.c:143,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:145,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:147,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - fd
    - addr
    - mttl
    argTypes:
    - int
    - pim_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 152
    functionName: ssmpingd_setsockopt
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - setsockopt_ipv6_multicast_loop
    - close
    - zlog_warn
    - safe_strerror
    - setsockopt_ipv6_pktinfo
    - setsockopt_ipv6_multicast_hops
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int ssmpingd_setsockopt(int fd, pim_addr addr, int mttl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_ssmpingd.c:163,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_ssmpingd.c:165,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:167,1
    - Dst: pim_socket_getsockname
      Src: /src/frr/pimd/pim_ssmpingd.c:171,1
    - Dst: bind
      Src: /src/frr/pimd/pim_ssmpingd.c:173,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:174,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:177,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:178,1
    - Dst: set_nonblocking
      Src: /src/frr/pimd/pim_ssmpingd.c:182,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/pimd/pim_ssmpingd.c:183,1
    - Dst: ssmpingd_setsockopt
      Src: /src/frr/pimd/pim_ssmpingd.c:185,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:187,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - addr
    - port
    - mttl
    argTypes:
    - pim_addr
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 193
    functionName: ssmpingd_socket
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - sockopt_reuseaddr
    - ssmpingd_setsockopt
    - socket
    - close
    - zlog_warn
    - safe_strerror
    - bind
    - set_nonblocking
    - flog_err_sys
    - pim_socket_getsockname
    linkageType: ''
    returnType: int
    signature: int ssmpingd_socket(pim_addr addr, int port, int mttl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_ssmpingd.c:197,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ssmpingd.c:199,1
    - Dst: close
      Src: /src/frr/pimd/pim_ssmpingd.c:201,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:202,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:205,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_ssmpingd.c:209,1
    - Dst: ssmpingd_free
      Src: /src/frr/pimd/pim_ssmpingd.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ss
    argTypes:
    - struct ssmpingd_sock*
    assertStmts:
    - condition: (ss)
      pos:
        line_end: 196
        line_start: 196
        source_file: /src/frr/pimd/pim_ssmpingd.c
    constantsTouched: []
    func_position:
      end: 211
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 211
    functionName: ssmpingd_delete
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - close
    - zlog_warn
    - EVENT_OFF
    - safe_strerror
    - listnode_delete
    - ssmpingd_free
    - assert
    linkageType: ''
    returnType: void
    signature: void ssmpingd_delete(struct ssmpingd_sock *ss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/frr/pimd/pim_ssmpingd.c:219,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:223,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:226,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ss
    - buf
    - len
    - to
    argTypes:
    - struct ssmpingd_sock*
    - uint8_t*
    - int
    - struct sockaddr_storage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 233
    functionName: ssmpingd_sendto
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - safe_strerror
    - sendto
    linkageType: ''
    returnType: void
    signature: "void ssmpingd_sendto(struct ssmpingd_sock *ss, const uint8_t *buf,\n\t\t\t
      \   int len, struct sockaddr_storage to)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_socket_recvfromto
      Src: /src/frr/pimd/pim_ssmpingd.c:248,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:252,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_ssmpingd.c:255,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_ssmpingd.c:259,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:262,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ssmpingd.c:271,1
    - Dst: ssmpingd_sendto
      Src: /src/frr/pimd/pim_ssmpingd.c:280,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_ssmpingd.c:283,1
    - Dst: ssmpingd_sendto
      Src: /src/frr/pimd/pim_ssmpingd.c:284,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - ss
    argTypes:
    - struct ssmpingd_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 235
    functionDepth: 4
    functionLinenumber: 235
    functionLinenumberEnd: 287
    functionName: ssmpingd_read_msg
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - if_lookup_by_index
    - ssmpingd_sendto
    - pim_socket_recvfromto
    - zlog_warn
    - safe_strerror
    - zlog_debug
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ssmpingd_read_msg(struct ssmpingd_sock *ss)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_ssmpingd.c:293,1
    - Dst: ssmpingd_read_msg
      Src: /src/frr/pimd/pim_ssmpingd.c:295,1
    - Dst: ssmpingd_read_on
      Src: /src/frr/pimd/pim_ssmpingd.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 289
    functionDepth: 5
    functionLinenumber: 289
    functionLinenumberEnd: 299
    functionName: ssmpingd_sock_read
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - ssmpingd_read_msg
    - ssmpingd_read_on
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void ssmpingd_sock_read(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/pimd/pim_ssmpingd.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ss
    argTypes:
    - struct ssmpingd_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: ssmpingd_read_on
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 1
    functionsReached:
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void ssmpingd_read_on(struct ssmpingd_sock *ss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/pimd/pim_ssmpingd.c:314,1
    - Dst: ssmpingd_socket
      Src: /src/frr/pimd/pim_ssmpingd.c:319,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:321,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_ssmpingd.c:326,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_ssmpingd.c:332,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_ssmpingd.c:335,1
    - Dst: ssmpingd_read_on
      Src: /src/frr/pimd/pim_ssmpingd.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - pim
    - source_addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 307
    functionDepth: 4
    functionLinenumber: 307
    functionLinenumberEnd: 340
    functionName: ssmpingd_new
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 0
    functionsReached:
    - ssmpingd_socket
    - XCALLOC
    - listnode_add
    - ssmpingd_read_on
    - zlog_warn
    - list_new
    - pim_time_monotonic_sec
    linkageType: ''
    returnType: struct ssmpingd_sock
    signature: "struct ssmpingd_sock *ssmpingd_new(struct pim_instance *pim,\n\t\t\t\t\t
      \ pim_addr source_addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssmpingd_find
      Src: /src/frr/pimd/pim_ssmpingd.c:346,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim_ssmpingd.c:352,1
    - Dst: ssmpingd_new
      Src: /src/frr/pimd/pim_ssmpingd.c:355,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - pim
    - source_addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 342
    functionDepth: 5
    functionLinenumber: 342
    functionLinenumberEnd: 363
    functionName: pim_ssmpingd_start
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 1
    functionsReached:
    - ssmpingd_new
    - zlog_info
    - ssmpingd_find
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int pim_ssmpingd_start(struct pim_instance *pim, pim_addr source_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssmpingd_find
      Src: /src/frr/pimd/pim_ssmpingd.c:369,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ssmpingd.c:371,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim_ssmpingd.c:376,1
    - Dst: ssmpingd_delete
      Src: /src/frr/pimd/pim_ssmpingd.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pim
    - source_addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 365
    functionDepth: 3
    functionLinenumber: 365
    functionLinenumberEnd: 382
    functionName: pim_ssmpingd_stop
    functionSourceFile: /src/frr/pimd/pim_ssmpingd.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - ssmpingd_delete
    - ssmpingd_find
    - zlog_info
    linkageType: ''
    returnType: int
    signature: int pim_ssmpingd_stop(struct pim_instance *pim, pim_addr source_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:32,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:33,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_oil.c:34,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_oil.c:34,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_oil.c:35,1
    - Dst: strlen
      Src: /src/frr/pimd/pim_oil.c:38,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:40,1
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_oil.c:41,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_oil.c:42,1
    - Dst: strlen
      Src: /src/frr/pimd/pim_oil.c:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - c_oil
    - buf
    - size
    argTypes:
    - struct channel_oil*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 25
    functionDepth: 7
    functionLinenumber: 25
    functionLinenumberEnd: 49
    functionName: pim_channel_oil_dump
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 2
    functionsReached:
    - strlen
    - pim_if_find_by_vif_index
    - snprintf
    - oil_mcastgrp
    - oil_parent
    - snprintfrr
    - oil_origin
    - oil_if_has
    linkageType: ''
    returnType: char
    signature: char *pim_channel_oil_dump(struct channel_oil *c_oil, char *buf, size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_oil.c:58,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:58,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:58,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_oil.c:61,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:61,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - cc1
    - cc2
    argTypes:
    - struct channel_oil*
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 65
    functionName: pim_channel_oil_compare
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - oil_mcastgrp
    - oil_origin
    - pim_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int pim_channel_oil_compare(const struct channel_oil *cc1,\n\t\t\t
      \   const struct channel_oil *cc2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_pim_oil_init
      Src: /src/frr/pimd/pim_oil.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: pim_oil_init
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 1
    functionsReached:
    - rb_pim_oil_init
    linkageType: ''
    returnType: void
    signature: void pim_oil_init(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_pim_oil_pop
      Src: /src/frr/pimd/pim_oil.c:76,1
    - Dst: pim_channel_oil_free
      Src: /src/frr/pimd/pim_oil.c:77,1
    - Dst: rb_pim_oil_fini
      Src: /src/frr/pimd/pim_oil.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: pim_oil_terminate
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - rb_pim_oil_pop
    - pim_channel_oil_free
    - rb_pim_oil_fini
    linkageType: ''
    returnType: void
    signature: void pim_oil_terminate(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pim_oil.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: pim_channel_oil_free
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 1
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_channel_oil_free(struct channel_oil *c_oil)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:93,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:94,1
    - Dst: rb_pim_oil_find
      Src: /src/frr/pimd/pim_oil.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: pim_find_channel_oil
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - oil_mcastgrp
    - oil_origin
    - rb_pim_oil_find
    linkageType: ''
    returnType: struct channel_oil
    signature: "struct channel_oil *pim_find_channel_oil(struct pim_instance *pim,\n\t\t\t\t\t
      pim_sgaddr *sg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_find_channel_oil
      Src: /src/frr/pimd/pim_oil.c:106,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_oil.c:112,1
    - Dst: pim_channel_update_mute
      Src: /src/frr/pimd/pim_oil.c:118,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_oil.c:124,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:127,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_oil.c:133,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:135,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:136,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_oil.c:138,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_oil.c:141,1
    - Dst: rb_pim_oil_add
      Src: /src/frr/pimd/pim_oil.c:144,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:147,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - pim
    - sg
    - name
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 150
    functionName: pim_channel_oil_add
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - pim_channel_update_mute
    - XCALLOC
    - oil_mcastgrp
    - pim_upstream_find
    - pim_find_channel_oil
    - oil_parent
    - zlog_debug
    - oil_origin
    - rb_pim_oil_add
    - pim_upstream_mroute_iif_update
    linkageType: ''
    returnType: struct channel_oil
    signature: "struct channel_oil *pim_channel_oil_add(struct pim_instance *pim,\n\t\t\t\t\tpim_sgaddr
      *sg, const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each_safe
      Src: /src/frr/pimd/pim_oil.c:161,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
      Src: /src/frr/pimd/pim_oil.c:164,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_oil.c:167,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_oil.c:170,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_NOCACHE
      Src: /src/frr/pimd/pim_oil.c:171,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM
      Src: /src/frr/pimd/pim_oil.c:172,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_oil.c:173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 175
    functionName: pim_clear_nocache_state
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM
    - pim_upstream_del
    - PIM_UPSTREAM_FLAG_UNSET_SRC_NOCACHE
    - oil_parent
    - PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
    - EVENT_OFF
    - frr_each_safe
    linkageType: ''
    returnType: void
    signature: void pim_clear_nocache_state(struct pim_interface *pim_ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:181,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:182,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:184,1
    - Dst: rb_pim_oil_del
      Src: /src/frr/pimd/pim_oil.c:197,1
    - Dst: pim_channel_oil_free
      Src: /src/frr/pimd/pim_oil.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - c_oil
    - name
    argTypes:
    - struct channel_oil*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 204
    functionName: pim_channel_oil_del
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - pim_channel_oil_free
    - rb_pim_oil_del
    - oil_mcastgrp
    - oil_origin
    - zlog_debug
    linkageType: ''
    returnType: struct channel_oil
    signature: "struct channel_oil *pim_channel_oil_del(struct channel_oil *c_oil,\n\t\t\t\t\tconst
      char *name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_oil_del
      Src: /src/frr/pimd/pim_oil.c:212,1
    - Dst: pim_channel_update_mute
      Src: /src/frr/pimd/pim_oil.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 219
    functionName: pim_channel_oil_upstream_deref
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - pim_channel_update_mute
    - pim_channel_oil_del
    linkageType: ''
    returnType: void
    signature: void pim_channel_oil_upstream_deref(struct channel_oil *c_oil)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_oil.c:226,1
    - Dst: assert
      Src: /src/frr/pimd/pim_oil.c:227,1
    - Dst: assertf
      Src: /src/frr/pimd/pim_oil.c:231,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:241,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:247,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:248,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:249,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:259,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:263,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:264,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:265,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_oil.c:270,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_oil.c:274,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:276,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:280,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:281,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:289,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:291,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:292,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_oil.c:294,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 4
    argNames:
    - channel_oil
    - oif
    - proto_mask
    - caller
    argTypes:
    - struct channel_oil*
    - struct interface*
    - uint32_t
    - char*
    assertStmts:
    - condition: (oif)
      pos:
        line_end: 226
        line_start: 226
        source_file: /src/frr/pimd/pim_oil.c
    - condition: (channel_oil)
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/frr/pimd/pim_oil.c
    constantsTouched: []
    func_position:
      end: 299
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 299
    functionName: pim_channel_del_oif
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 2
    functionsReached:
    - oil_mcastgrp
    - assertf
    - oil_parent
    - zlog_debug
    - oil_origin
    - oil_if_set
    - oil_if_has
    - pim_upstream_mroute_add
    - assert
    linkageType: ''
    returnType: int
    signature: "int pim_channel_del_oif(struct channel_oil *channel_oil, struct interface
      *oif,\n\t\t\tuint32_t proto_mask, const char *caller)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_oil.c:306,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_oil.c:312,1
    - Dst: pim_upstream_empty_inherited_olist
      Src: /src/frr/pimd/pim_oil.c:313,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_oil.c:314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 3
    argNames:
    - c_oil
    - oif
    - caller
    argTypes:
    - struct channel_oil*
    - struct interface*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 315
    functionName: pim_channel_del_inherited_oif
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - pim_channel_del_oif
    - pim_upstream_empty_inherited_olist
    - pim_upstream_update_join_desired
    linkageType: ''
    returnType: void
    signature: "void pim_channel_del_inherited_oif(struct channel_oil *c_oil,\n\t\tstruct
      interface *oif, const char *caller)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_NO_PIMREG_DATA
      Src: /src/frr/pimd/pim_oil.c:333,1
    - Dst: pim_vxlan_get_term_ifp
      Src: /src/frr/pimd/pim_oil.c:339,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_ORIG
      Src: /src/frr/pimd/pim_oil.c:351,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_oil.c:352,1
    - Dst: pim_vxlan_is_local_sip
      Src: /src/frr/pimd/pim_oil.c:353,1
    - Dst: PIM_I_am_DualActive
      Src: /src/frr/pimd/pim_oil.c:359,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_oil.c:361,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_oil.c:362,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_oil.c:368,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_oil.c:369,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 2
    argNames:
    - c_oil
    - pim_ifp
    argTypes:
    - struct channel_oil*
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 374
    functionName: pim_channel_eval_oif_mute
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_get_term_ifp
    - PIM_UPSTREAM_FLAG_TEST_SRC_VXLAN_ORIG
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - PIM_UPSTREAM_FLAG_TEST_NO_PIMREG_DATA
    - PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
    - PIM_I_am_DualActive
    - pim_vxlan_is_local_sip
    linkageType: ''
    returnType: bool
    signature: "bool pim_channel_eval_oif_mute(struct channel_oil *c_oil,\n\t\tstruct
      pim_interface *pim_ifp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:383,1
    - Dst: pim_channel_eval_oif_mute
      Src: /src/frr/pimd/pim_oil.c:388,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_oil.c:399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - c_oil
    - pim_ifp
    argTypes:
    - struct channel_oil*
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 376
    functionDepth: 2
    functionLinenumber: 376
    functionLinenumberEnd: 400
    functionName: pim_channel_update_oif_mute
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 0
    functionsReached:
    - pim_upstream_mroute_add
    - pim_channel_eval_oif_mute
    - oil_if_has
    linkageType: ''
    returnType: void
    signature: "void pim_channel_update_oif_mute(struct channel_oil *c_oil,\n\t\tstruct
      pim_interface *pim_ifp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_update_oif_mute
      Src: /src/frr/pimd/pim_oil.c:413,1
    - Dst: pim_vxlan_get_term_ifp
      Src: /src/frr/pimd/pim_oil.c:415,1
    - Dst: pim_channel_update_oif_mute
      Src: /src/frr/pimd/pim_oil.c:417,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 405
    functionDepth: 3
    functionLinenumber: 405
    functionLinenumberEnd: 418
    functionName: pim_channel_update_mute
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 2
    functionsReached:
    - pim_vxlan_get_term_ifp
    - pim_channel_update_oif_mute
    linkageType: ''
    returnType: void
    signature: void pim_channel_update_mute(struct channel_oil *c_oil)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_oil.c:431,1
    - Dst: assertf
      Src: /src/frr/pimd/pim_oil.c:437,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:447,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:451,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:452,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:453,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:471,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_oil.c:472,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:476,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:477,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:478,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:482,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:484,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:485,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:494,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:498,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:502,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:503,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_oil.c:508,1
    - Dst: pim_channel_eval_oif_mute
      Src: /src/frr/pimd/pim_oil.c:515,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_oil.c:525,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_oil.c:526,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:528,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:532,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:533,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_oil.c:536,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_oil.c:543,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_oil.c:548,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_oil.c:550,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_oil.c:551,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 4
    argNames:
    - channel_oil
    - oif
    - proto_mask
    - caller
    argTypes:
    - struct channel_oil*
    - struct interface*
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 420
    functionDepth: 2
    functionLinenumber: 420
    functionLinenumberEnd: 557
    functionName: pim_channel_add_oif
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 1
    functionsReached:
    - pim_channel_eval_oif_mute
    - oil_mcastgrp
    - assertf
    - oil_parent
    - zlog_warn
    - oil_origin
    - zlog_debug
    - oil_if_set
    - pim_time_monotonic_sec
    - oil_if_has
    - pim_upstream_mroute_add
    linkageType: ''
    returnType: int
    signature: "int pim_channel_add_oif(struct channel_oil *channel_oil, struct interface
      *oif,\n\t\t\tuint32_t proto_mask, const char *caller)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_oil.c:570,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_oil.c:571,1
    - Dst: oil_if_set
      Src: /src/frr/pimd/pim_oil.c:573,1
    - Dst: oil_if_cmp
      Src: /src/frr/pimd/pim_oil.c:575,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 576
    functionName: pim_channel_oil_empty
    functionSourceFile: /src/frr/pimd/pim_oil.c
    functionUses: 1
    functionsReached:
    - oil_if_set
    - oil_if_cmp
    - oil_if_has
    linkageType: ''
    returnType: int
    signature: int pim_channel_oil_empty(struct channel_oil *c_oil)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - label
    - ifp
    - src
    argTypes:
    - char*
    - struct interface*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: on_trace
    functionSourceFile: /src/frr/pimd/pim_join.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void on_trace(const char *label, struct interface *ifp, pim_addr src)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:47,1
    - Dst: assert
      Src: /src/frr/pimd/pim_join.c:54,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_join.c:62,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_join.c:68,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:70,1
    - Dst: RP
      Src: /src/frr/pimd/pim_join.c:77,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:81,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_join.c:90,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:91,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_join.c:97,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:98,1
    - Dst: pim_ifchannel_join_add
      Src: /src/frr/pimd/pim_join.c:108,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 6
    argNames:
    - ifp
    - neigh
    - holdtime
    - upstream
    - sg
    - source_flags
    argTypes:
    - struct interface*
    - struct pim_neighbor*
    - uint16_t
    - pim_addr
    - pim_sgaddr*
    - uint8_t
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/frr/pimd/pim_join.c
    constantsTouched: []
    func_position:
      end: 110
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 110
    functionName: recv_join
    functionSourceFile: /src/frr/pimd/pim_join.c
    functionUses: 0
    functionsReached:
    - pim_is_grp_ssm
    - pim_ifchannel_join_add
    - CHECK_FLAG
    - pim_addr_cmp
    - zlog_debug
    - zlog_warn
    - RP
    - assert
    linkageType: ''
    returnType: void
    signature: "void recv_join(struct interface *ifp, struct pim_neighbor *neigh,\n\t\t
      \     uint16_t holdtime, pim_addr upstream, pim_sgaddr *sg,\n\t\t      uint8_t
      source_flags)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:119,1
    - Dst: assert
      Src: /src/frr/pimd/pim_join.c:126,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_join.c:130,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_join.c:136,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:138,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:151,1
    - Dst: pim_ifchannel_prune
      Src: /src/frr/pimd/pim_join.c:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - ifp
    - neigh
    - holdtime
    - upstream
    - sg
    - source_flags
    argTypes:
    - struct interface*
    - struct pim_neighbor*
    - uint16_t
    - pim_addr
    - pim_sgaddr*
    - uint8_t
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/frr/pimd/pim_join.c
    constantsTouched: []
    func_position:
      end: 158
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 158
    functionName: recv_prune
    functionSourceFile: /src/frr/pimd/pim_join.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_ifchannel_prune
    - CHECK_FLAG
    - assert
    linkageType: ''
    returnType: void
    signature: "void recv_prune(struct interface *ifp, struct pim_neighbor *neigh,\n\t\t
      \      uint16_t holdtime, pim_addr upstream, pim_sgaddr *sg,\n\t\t       uint8_t
      source_flags)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:446,1
    - Dst: on_trace
      Src: /src/frr/pimd/pim_join.c:451,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:454,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_join.c:459,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:461,1
    - Dst: pim_hello_require
      Src: /src/frr/pimd/pim_join.c:477,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_join.c:479,1
    - Dst: memset
      Src: /src/frr/pimd/pim_join.c:483,1
    - Dst: pim_msg_addr_encode_ucast
      Src: /src/frr/pimd/pim_join.c:485,1
    - Dst: htons
      Src: /src/frr/pimd/pim_join.c:488,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:503,1
    - Dst: pim_msg_get_jp_group_size
      Src: /src/frr/pimd/pim_join.c:508,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_join.c:510,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_join.c:514,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:519,1
    - Dst: memset
      Src: /src/frr/pimd/pim_join.c:526,1
    - Dst: pim_msg_addr_encode_ucast
      Src: /src/frr/pimd/pim_join.c:528,1
    - Dst: htons
      Src: /src/frr/pimd/pim_join.c:531,1
    - Dst: pim_msg_build_jp_groups
      Src: /src/frr/pimd/pim_join.c:554,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_join.c:557,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_join.c:558,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_join.c:562,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_join.c:565,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_join.c:565,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_join.c:570,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_join.c:574,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:579,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_join.c:592,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_join.c:595,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_join.c:598,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 81
    argCount: 2
    argNames:
    - rpf
    - groups
    argTypes:
    - struct pim_rpf*
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 429
    functionDepth: 3
    functionLinenumber: 429
    functionLinenumberEnd: 604
    functionName: pim_joinprune_send
    functionSourceFile: /src/frr/pimd/pim_join.c
    functionUses: 0
    functionsReached:
    - pim_msg_send
    - memset
    - htons
    - pim_addr_is_any
    - pim_msg_build_header
    - pim_msg_get_jp_group_size
    - ntohs
    - zlog_warn
    - zlog_debug
    - pim_msg_build_jp_groups
    - pim_msg_addr_encode_ucast
    - ALL_LIST_ELEMENTS
    - pim_hello_require
    - on_trace
    linkageType: ''
    returnType: int
    signature: int pim_joinprune_send(struct pim_rpf *rpf, struct list *groups)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:40,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:41,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmp.c:41,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmp.c:43,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:45,1
    - Dst: igmp_source_forward_start
      Src: /src/frr/pimd/pim_igmp.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pim
    - group
    argTypes:
    - struct pim_instance*
    - struct gm_group*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (listcount(group->group_source_list) < 1)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 50
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 50
    functionName: igmp_anysource_forward_start
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_source_forward_start
    - igmp_get_source_by_addr
    - listcount
    - zlog_warn
    - assert
    linkageType: ''
    returnType: void
    signature: "void igmp_anysource_forward_start(struct pim_instance *pim,\n\t\t\t\t
      \ struct gm_group *group)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: igmp_find_source_by_addr
      Src: /src/frr/pimd/pim_igmp.c:57,1
    - Dst: igmp_source_forward_stop
      Src: /src/frr/pimd/pim_igmp.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: igmp_anysource_forward_stop
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_find_source_by_addr
    - igmp_source_forward_stop
    linkageType: ''
    returnType: void
    signature: void igmp_anysource_forward_stop(struct gm_group *group)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp.c:69,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_igmp.c:74,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp.c:75,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:78,1
    - Dst: igmp_source_forward_stop
      Src: /src/frr/pimd/pim_igmp.c:81,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:86,1
    - Dst: igmp_source_forward_stop
      Src: /src/frr/pimd/pim_igmp.c:89,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp.c:93,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:95,1
    - Dst: igmp_source_forward_start
      Src: /src/frr/pimd/pim_igmp.c:98,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - pim
    - source
    - is_grp_ssm
    argTypes:
    - struct pim_instance*
    - struct gm_source*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 101
    functionName: igmp_source_forward_reevaluate_one
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_source_forward_start
    - memset
    - pim_addr_is_any
    - IGMP_SOURCE_TEST_FORWARDING
    - zlog_debug
    - igmp_source_forward_stop
    linkageType: ''
    returnType: void
    signature: "void igmp_source_forward_reevaluate_one(struct pim_instance *pim,\n\t\t\t\t\t
      \      struct gm_source *source,\n\t\t\t\t\t       int is_grp_ssm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_igmp.c:107,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp.c:117,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_igmp.c:131,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp.c:132,1
    - Dst: igmp_group_delete
      Src: /src/frr/pimd/pim_igmp.c:133,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmp.c:136,1
    - Dst: igmp_source_forward_reevaluate_one
      Src: /src/frr/pimd/pim_igmp.c:139,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pimd/pim_igmp.c:145,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_igmp.c:147,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp.c:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 151
    functionName: igmp_source_forward_reevaluate_all
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - pim_is_grp_ssm
    - igmp_source_forward_reevaluate_one
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - FOR_ALL_INTERFACES
    - RB_FOREACH_SAFE
    - if
    - ALL_LIST_ELEMENTS
    - igmp_group_delete
    linkageType: ''
    returnType: void
    signature: void igmp_source_forward_reevaluate_all(struct pim_instance *pim)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp.c:161,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:166,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_igmp.c:168,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_igmp.c:175,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp.c:176,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:177,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_igmp.c:185,1
    - Dst: tib_sg_gm_join
      Src: /src/frr/pimd/pim_igmp.c:191,1
    - Dst: IGMP_SOURCE_DO_FORWARDING
      Src: /src/frr/pimd/pim_igmp.c:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - pim
    - source
    argTypes:
    - struct pim_instance*
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 194
    functionName: igmp_source_forward_start
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 2
    functionsReached:
    - pim_is_grp_ssm
    - memset
    - pim_addr_is_any
    - IGMP_SOURCE_DO_FORWARDING
    - IGMP_SOURCE_TEST_FORWARDING
    - zlog_debug
    - zlog_warn
    - tib_sg_gm_join
    linkageType: ''
    returnType: void
    signature: "void igmp_source_forward_start(struct pim_instance *pim,\n\t\t\t       struct
      gm_source *source)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp.c:206,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:211,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_igmp.c:213,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_igmp.c:218,1
    - Dst: tib_sg_gm_prune
      Src: /src/frr/pimd/pim_igmp.c:225,1
    - Dst: IGMP_SOURCE_DONT_FORWARDING
      Src: /src/frr/pimd/pim_igmp.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 228
    functionName: igmp_source_forward_stop
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 2
    functionsReached:
    - memset
    - IGMP_SOURCE_TEST_FORWARDING
    - zlog_debug
    - tib_sg_gm_prune
    - IGMP_SOURCE_DONT_FORWARDING
    linkageType: ''
    returnType: void
    signature: void igmp_source_forward_stop(struct gm_source *source)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pim_socket_mcast
      Src: /src/frr/pimd/pim_igmp.c:240,1
    - Dst: inet_aton
      Src: /src/frr/pimd/pim_igmp.c:245,1
    - Dst: pim_socket_join
      Src: /src/frr/pimd/pim_igmp.c:246,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:249,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp.c:252,1
    - Dst: inet_aton
      Src: /src/frr/pimd/pim_igmp.c:260,1
    - Dst: pim_socket_join
      Src: /src/frr/pimd/pim_igmp.c:261,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:264,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp.c:267,1
    - Dst: inet_aton
      Src: /src/frr/pimd/pim_igmp.c:270,1
    - Dst: pim_socket_join
      Src: /src/frr/pimd/pim_igmp.c:271,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:276,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp.c:279,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_igmp.c:283,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp.c:287,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - ifaddr
    - ifp
    argTypes:
    - struct in_addr
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 292
    functionName: igmp_sock_open
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - pim_socket_mcast
    - pim_socket_join
    - inet_aton
    - close
    - zlog_warn
    - safe_strerror
    - flog_err_sys
    linkageType: ''
    returnType: int
    signature: int igmp_sock_open(struct in_addr ifaddr, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/pimd/pim_igmp.c:299,1
    - Dst: array_get
      Src: /src/frr/pimd/pim_igmp.c:302,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - igmp_sock_array
    argTypes:
    - array_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 308
    functionName: igmp_sock_dump
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - array_get
    - zlog_debug
    - array_size
    linkageType: ''
    returnType: void
    signature: void igmp_sock_dump(array_t *igmp_sock_array)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: igmp_sock_dump
      Src: /src/frr/pimd/pim_igmp.c:318,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmp.c:321,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_igmp.c:332,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:334,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp.c:336,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:338,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:340,1
    - Dst: pim_igmp_general_query
      Src: /src/frr/pimd/pim_igmp.c:352,1
    - Dst: pim_igmp_other_querier_timer_on
      Src: /src/frr/pimd/pim_igmp.c:355,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:360,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:361,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:362,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:374,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:376,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_igmp.c:380,1
    - Dst: pim_igmp_general_query_off
      Src: /src/frr/pimd/pim_igmp.c:386,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:393,1
    - Dst: PIM_IGMP_OQPI_MSEC
      Src: /src/frr/pimd/pim_igmp.c:409,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:415,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:417,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_igmp.c:423,1
    - Dst: pim_igmp_other_querier_timer_off
      Src: /src/frr/pimd/pim_igmp.c:428,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:430,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:435,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:437,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_igmp.c:442,1
    - Dst: igmp_validate_checksum
      Src: /src/frr/pimd/pim_igmp.c:445,1
    - Dst: IGMP_GET_INT16
      Src: /src/frr/pimd/pim_igmp.c:450,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp.c:454,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp.c:456,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp.c:457,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:458,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp.c:459,1
    - Dst: igmp_recv_query
      Src: /src/frr/pimd/pim_igmp.c:466,1
    - Dst: group_addr
      Src: /src/frr/pimd/pim_igmp.c:473,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp.c:478,1
    - Dst: igmp_validate_checksum
      Src: /src/frr/pimd/pim_igmp.c:483,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:484,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_igmp.c:490,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:492,1
    - Dst: if_address_is_local
      Src: /src/frr/pimd/pim_igmp.c:497,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:499,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:537,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:546,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:548,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp.c:560,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp.c:560,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmp.c:578,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:584,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:592,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:594,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp.c:597,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp.c:598,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp.c:607,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp.c:607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - igmp_sock_list
    - ifaddr
    argTypes:
    - struct list*
    - struct in_addr
    assertStmts:
    - condition: (igmp->interface)
      pos:
        line_end: 360
        line_start: 360
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (igmp->interface->info)
      pos:
        line_end: 361
        line_start: 361
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!igmp->t_igmp_query_timer)
      pos:
        line_end: 392
        line_start: 392
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!igmp->t_igmp_query_timer)
      pos:
        line_end: 333
        line_start: 333
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (igmp)
      pos:
        line_end: 359
        line_start: 359
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (igmp)
      pos:
        line_end: 429
        line_start: 429
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 610
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 610
    functionName: pim_igmp_sock_lookup_ifaddr
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 3
    functionsReached:
    - pim_igmp_general_query
    - in_cksum
    - ntohs
    - zlog_warn
    - if_address_is_local
    - pim_if_connected_to_source
    - memset
    - ALL_LIST_ELEMENTS_RO
    - igmp_validate_checksum
    - pim_igmp_general_query_off
    - event_add_timer_msec
    - zlog_debug
    - igmp_recv_query
    - EVENT_ARG
    - if
    - group_addr
    - PIM_IGMP_OQPI_MSEC
    - ntohl
    - assert
    - pim_igmp_other_querier_timer_off
    - IGMP_GET_INT16
    - EVENT_OFF
    - pim_igmp_other_querier_timer_on
    - memcpy
    - igmp_sock_dump
    - pim_inet4_dump
    linkageType: ''
    returnType: struct gm_sock
    signature: "struct gm_sock *pim_igmp_sock_lookup_ifaddr(struct list *igmp_sock_list,\n\t\t\t\t\t
      \   struct in_addr ifaddr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:626,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - label
    - ifp
    - from
    argTypes:
    - char*
    - struct interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 629
    functionName: on_trace
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: "void on_trace(const char *label, struct interface *ifp,\n\t\t     struct
      in_addr from)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmp.c:639,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:645,1
    - Dst: igmp_validate_checksum
      Src: /src/frr/pimd/pim_igmp.c:651,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:652,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:662,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp.c:665,1
    - Dst: pim_is_group_filtered
      Src: /src/frr/pimd/pim_igmp.c:667,1
    - Dst: igmp_add_group_by_addr
      Src: /src/frr/pimd/pim_igmp.c:671,1
    - Dst: pim_time_monotonic_dsec
      Src: /src/frr/pimd/pim_igmp.c:676,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - igmp
    - from
    - from_str
    - igmp_msg
    - igmp_msg_len
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 679
    functionName: igmp_v1_recv_report
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_add_group_by_addr
    - pim_is_group_filtered
    - igmp_validate_checksum
    - pim_time_monotonic_dsec
    - zlog_warn
    - on_trace
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int igmp_v1_recv_report(struct gm_sock *igmp, struct in_addr from,\n\t\t\t
      \      const char *from_str, char *igmp_msg,\n\t\t\t       int igmp_msg_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:689,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:698,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:709,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:717,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - ip_hdr
    - len
    - hlen
    argTypes:
    - struct ip*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 681
    functionDepth: 1
    functionLinenumber: 681
    functionLinenumberEnd: 725
    functionName: pim_igmp_verify_header
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    linkageType: ''
    returnType: bool
    signature: bool pim_igmp_verify_header(struct ip *ip_hdr, size_t len, size_t *hlen)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pim_igmp_verify_header
      Src: /src/frr/pimd/pim_igmp.c:737,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:744,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:745,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:748,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:773,1
    - Dst: igmp_recv_query
      Src: /src/frr/pimd/pim_igmp.c:777,1
    - Dst: igmp_v3_recv_report
      Src: /src/frr/pimd/pim_igmp.c:783,1
    - Dst: igmp_v2_recv_report
      Src: /src/frr/pimd/pim_igmp.c:787,1
    - Dst: igmp_v1_recv_report
      Src: /src/frr/pimd/pim_igmp.c:791,1
    - Dst: igmp_v2_recv_leave
      Src: /src/frr/pimd/pim_igmp.c:795,1
    - Dst: igmp_mtrace_recv_response
      Src: /src/frr/pimd/pim_igmp.c:799,1
    - Dst: igmp_mtrace_recv_qry_req
      Src: /src/frr/pimd/pim_igmp.c:803,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:808,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 3
    argNames:
    - igmp
    - buf
    - len
    argTypes:
    - struct gm_sock*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 814
    functionName: pim_igmp_packet
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - pim_igmp_verify_header
    - igmp_v2_recv_report
    - igmp_mtrace_recv_response
    - igmp_recv_query
    - zlog_debug
    - zlog_warn
    - igmp_v2_recv_leave
    - pim_inet4_dump
    - igmp_v1_recv_report
    - igmp_mtrace_recv_qry_req
    - igmp_v3_recv_report
    linkageType: ''
    returnType: int
    signature: int pim_igmp_packet(struct gm_sock *igmp, char *buf, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:826,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:828,1
    - Dst: PIM_IGMP_SQI
      Src: /src/frr/pimd/pim_igmp.c:851,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:861,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:863,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_igmp.c:868,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts:
    - condition: (!igmp->t_other_querier_timer)
      pos:
        line_end: 825
        line_start: 825
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (pim_ifp)
      pos:
        line_end: 827
        line_start: 827
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 870
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 870
    functionName: pim_igmp_general_query_on
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - PIM_IGMP_SQI
    - zlog_debug
    - event_add_timer
    - pim_inet4_dump
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_igmp_general_query_on(struct gm_sock *igmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:874,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:879,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:881,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_igmp.c:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts:
    - condition: (igmp)
      pos:
        line_end: 873
        line_start: 873
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 887
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 887
    functionName: pim_igmp_general_query_off
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    - EVENT_OFF
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_igmp_general_query_off(struct gm_sock *igmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_igmp.c:898,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:900,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:901,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp.c:922,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:928,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:930,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:931,1
    - Dst: igmp_send_query
      Src: /src/frr/pimd/pim_igmp.c:935,1
    - Dst: pim_igmp_general_query_on
      Src: /src/frr/pimd/pim_igmp.c:940,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (igmp->interface)
      pos:
        line_end: 899
        line_start: 899
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (igmp->interface->info)
      pos:
        line_end: 900
        line_start: 900
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 941
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 941
    functionName: pim_igmp_general_query
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - pim_igmp_general_query_on
    - zlog_debug
    - EVENT_ARG
    - htonl
    - igmp_send_query
    - pim_inet4_dump
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_igmp_general_query(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_igmp_other_querier_timer_off
      Src: /src/frr/pimd/pim_igmp.c:945,1
    - Dst: pim_igmp_general_query_off
      Src: /src/frr/pimd/pim_igmp.c:946,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:950,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_igmp.c:956,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp.c:958,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_igmp.c:959,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp.c:963,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:967,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 971
    functionName: sock_close
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 2
    functionsReached:
    - pim_igmp_other_querier_timer_off
    - close
    - pim_igmp_general_query_off
    - zlog_debug
    - EVENT_OFF
    - flog_err
    - safe_strerror
    linkageType: ''
    returnType: void
    signature: void sock_close(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 992
    functionName: igmp_startup_mode_on
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void igmp_startup_mode_on(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/pimd/pim_igmp.c:996,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_igmp.c:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 994
    functionDepth: 0
    functionLinenumber: 994
    functionLinenumberEnd: 999
    functionName: igmp_group_free
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void igmp_group_free(struct gm_group *group)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmp.c:1003,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:1007,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/pimd/pim_igmp.c:1010,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1001
    functionDepth: 1
    functionLinenumber: 1001
    functionLinenumberEnd: 1015
    functionName: igmp_group_count_incr
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - listcount
    - VRF_LOGNAME
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void igmp_group_count_incr(struct pim_interface *pim_ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:1020,1
    - Dst: VRF_LOGNAME
      Src: /src/frr/pimd/pim_igmp.c:1021,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1026
    functionName: igmp_group_count_decr
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - VRF_LOGNAME
    linkageType: ''
    returnType: void
    signature: void igmp_group_count_decr(struct pim_interface *pim_ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:1037,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1039,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp.c:1043,1
    - Dst: igmp_source_delete
      Src: /src/frr/pimd/pim_igmp.c:1045,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_igmp.c:1048,1
    - Dst: group_timer_off
      Src: /src/frr/pimd/pim_igmp.c:1050,1
    - Dst: igmp_group_count_decr
      Src: /src/frr/pimd/pim_igmp.c:1051,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_igmp.c:1052,1
    - Dst: hash_release
      Src: /src/frr/pimd/pim_igmp.c:1053,1
    - Dst: igmp_group_free
      Src: /src/frr/pimd/pim_igmp.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1028
    functionDepth: 2
    functionLinenumber: 1028
    functionLinenumberEnd: 1056
    functionName: igmp_group_delete
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - igmp_group_count_decr
    - hash_release
    - zlog_debug
    - EVENT_OFF
    - igmp_source_delete
    - igmp_group_free
    - listnode_delete
    - ALL_LIST_ELEMENTS
    - pim_inet4_dump
    - group_timer_off
    linkageType: ''
    returnType: void
    signature: void igmp_group_delete(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1060,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1061,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmp.c:1061,1
    - Dst: igmp_group_delete
      Src: /src/frr/pimd/pim_igmp.c:1063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts:
    - condition: (!group->group_filtermode_isexcl)
      pos:
        line_end: 1059
        line_start: 1059
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!listcount(group->group_source_list))
      pos:
        line_end: 1060
        line_start: 1060
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 1064
      start: 1058
    functionDepth: 3
    functionLinenumber: 1058
    functionLinenumberEnd: 1064
    functionName: igmp_group_delete_empty_include
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_group_delete
    - listcount
    - assert
    linkageType: ''
    returnType: void
    signature: void igmp_group_delete_empty_include(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1068,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1069,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1070,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_igmp.c:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts:
    - condition: (!igmp->t_igmp_read)
      pos:
        line_end: 1067
        line_start: 1067
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!igmp->t_igmp_query_timer)
      pos:
        line_end: 1068
        line_start: 1068
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!igmp->t_other_querier_timer)
      pos:
        line_end: 1069
        line_start: 1069
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 1073
      start: 1066
    functionDepth: 1
    functionLinenumber: 1066
    functionLinenumberEnd: 1073
    functionName: igmp_sock_free
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: void igmp_sock_free(struct gm_sock *igmp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sock_close
      Src: /src/frr/pimd/pim_igmp.c:1079,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_igmp.c:1083,1
    - Dst: igmp_sock_free
      Src: /src/frr/pimd/pim_igmp.c:1085,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmp.c:1087,1
    - Dst: pim_igmp_if_reset
      Src: /src/frr/pimd/pim_igmp.c:1088,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1075
    functionDepth: 2
    functionLinenumber: 1075
    functionLinenumberEnd: 1089
    functionName: igmp_sock_delete
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - igmp_sock_free
    - listcount
    - pim_igmp_if_reset
    - sock_close
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: void igmp_sock_delete(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp.c:1099,1
    - Dst: igmp_sock_delete
      Src: /src/frr/pimd/pim_igmp.c:1101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1091
    functionDepth: 3
    functionLinenumber: 1091
    functionLinenumberEnd: 1103
    functionName: igmp_sock_delete_all
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - igmp_sock_delete
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void igmp_sock_delete_all(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/pimd/pim_igmp.c:1109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1105
    functionDepth: 3
    functionLinenumber: 1105
    functionLinenumberEnd: 1110
    functionName: igmp_group_hash_key
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int igmp_group_hash_key(const void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1112
    functionDepth: 0
    functionLinenumber: 1112
    functionLinenumberEnd: 1121
    functionName: igmp_group_hash_equal
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool igmp_group_hash_equal(const void *arg1, const void *arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/pimd/pim_igmp.c:1127,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_igmp.c:1130,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_igmp.c:1133,1
    - Dst: hash_create
      Src: /src/frr/pimd/pim_igmp.c:1134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - pim_ifp
    - ifp
    argTypes:
    - struct pim_interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1123
    functionDepth: 4
    functionLinenumber: 1123
    functionLinenumberEnd: 1136
    functionName: pim_igmp_if_init
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - hash_create
    - list_new
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pim_igmp_if_init(struct pim_interface *pim_ifp, struct interface
      *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp.c:1143,1
    - Dst: igmp_group_delete
      Src: /src/frr/pimd/pim_igmp.c:1145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1138
    functionDepth: 3
    functionLinenumber: 1138
    functionLinenumberEnd: 1147
    functionName: pim_igmp_if_reset
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS
    - igmp_group_delete
    linkageType: ''
    returnType: void
    signature: void pim_igmp_if_reset(struct pim_interface *pim_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_igmp_if_reset
      Src: /src/frr/pimd/pim_igmp.c:1151,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1153,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1154,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmp.c:1154,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_igmp.c:1156,1
    - Dst: hash_free
      Src: /src/frr/pimd/pim_igmp.c:1157,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_igmp.c:1159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts:
    - condition: (pim_ifp->gm_group_list)
      pos:
        line_end: 1152
        line_start: 1152
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!listcount(pim_ifp->gm_group_list))
      pos:
        line_end: 1153
        line_start: 1153
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 1160
      start: 1149
    functionDepth: 4
    functionLinenumber: 1149
    functionLinenumberEnd: 1160
    functionName: pim_igmp_if_fini
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - list_delete
    - listcount
    - hash_free
    - pim_igmp_if_reset
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_igmp_if_fini(struct pim_interface *pim_ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1171,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_igmp.c:1176,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_igmp.c:1187,1
    - Dst: igmp_stats_init
      Src: /src/frr/pimd/pim_igmp.c:1189,1
    - Dst: igmp_startup_mode_on
      Src: /src/frr/pimd/pim_igmp.c:1203,1
    - Dst: pim_igmp_general_query_on
      Src: /src/frr/pimd/pim_igmp.c:1204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 4
    argNames:
    - fd
    - ifaddr
    - ifp
    - mtrace_only
    argTypes:
    - int
    - struct in_addr
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1162
    functionDepth: 1
    functionLinenumber: 1162
    functionLinenumberEnd: 1207
    functionName: igmp_sock_new
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_startup_mode_on
    - XCALLOC
    - igmp_stats_init
    - pim_igmp_general_query_on
    - zlog_debug
    - pim_time_monotonic_sec
    linkageType: ''
    returnType: struct gm_sock
    signature: "struct gm_sock *igmp_sock_new(int fd, struct in_addr ifaddr,\n\t\t\t\t
      \    struct interface *ifp, int mtrace_only)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_igmp.c:1214,1
    - Dst: pim_socket_recvfromto
      Src: /src/frr/pimd/pim_igmp.c:1223,1
    - Dst: igmp_read_on
      Src: /src/frr/pimd/pim_igmp.c:1236,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1237
    functionName: pim_igmp_read
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_read_on
    - pim_socket_recvfromto
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void pim_igmp_read(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1243,1
    - Dst: event_add_read
      Src: /src/frr/pimd/pim_igmp.c:1246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1239
    functionDepth: 1
    functionLinenumber: 1239
    functionLinenumberEnd: 1248
    functionName: igmp_read_on
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - event_add_read
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void igmp_read_on(struct gm_sock *igmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: igmp_sock_open
      Src: /src/frr/pimd/pim_igmp.c:1259,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:1261,1
    - Dst: bind
      Src: /src/frr/pimd/pim_igmp.c:1272,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:1273,1
    - Dst: strerror
      Src: /src/frr/pimd/pim_igmp.c:1274,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp.c:1275,1
    - Dst: igmp_sock_new
      Src: /src/frr/pimd/pim_igmp.c:1280,1
    - Dst: igmp_read_on
      Src: /src/frr/pimd/pim_igmp.c:1282,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_igmp.c:1284,1
    - Dst: igmp_sock_dump
      Src: /src/frr/pimd/pim_igmp.c:1287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - igmp_sock_list
    - ifaddr
    - ifp
    - mtrace_only
    argTypes:
    - struct list*
    - struct in_addr
    - struct interface*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1250
    functionDepth: 2
    functionLinenumber: 1250
    functionLinenumberEnd: 1291
    functionName: pim_igmp_sock_add
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_sock_dump
    - strerror
    - close
    - listnode_add
    - zlog_warn
    - bind
    - igmp_read_on
    - igmp_sock_new
    - igmp_sock_open
    linkageType: ''
    returnType: struct gm_sock
    signature: "struct gm_sock *pim_igmp_sock_add(struct list *igmp_sock_list,\n\t\t\t\t
      \ struct in_addr ifaddr, struct interface *ifp,\n\t\t\t\t  bool mtrace_only)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_igmp.c:1311,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:1315,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1317,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1321,1
    - Dst: igmp_anysource_forward_stop
      Src: /src/frr/pimd/pim_igmp.c:1326,1
    - Dst: igmp_source_delete_expired
      Src: /src/frr/pimd/pim_igmp.c:1328,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1330,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmp.c:1338,1
    - Dst: igmp_group_delete_empty_include
      Src: /src/frr/pimd/pim_igmp.c:1339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 1320
        line_start: 1320
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!group->group_filtermode_isexcl)
      pos:
        line_end: 1329
        line_start: 1329
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 1341
      start: 1307
    functionDepth: 4
    functionLinenumber: 1307
    functionLinenumberEnd: 1341
    functionName: igmp_group_timer
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - igmp_source_delete_expired
    - igmp_group_delete_empty_include
    - listcount
    - igmp_anysource_forward_stop
    - zlog_debug
    - EVENT_ARG
    - pim_inet4_dump
    - assert
    linkageType: ''
    returnType: void
    signature: void igmp_group_timer(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:1350,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1352,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_igmp.c:1355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1343
    functionDepth: 1
    functionLinenumber: 1343
    functionLinenumberEnd: 1356
    functionName: group_timer_off
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void group_timer_off(struct gm_group *group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: group_timer_off
      Src: /src/frr/pimd/pim_igmp.c:1361,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:1365,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1367,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1380,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_igmp.c:1382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - group
    - interval_msec
    - ifname
    argTypes:
    - struct gm_group*
    - long
    - char*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 1379
        line_start: 1379
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 1384
      start: 1358
    functionDepth: 2
    functionLinenumber: 1358
    functionLinenumberEnd: 1384
    functionName: igmp_group_timer_on
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - zlog_debug
    - pim_inet4_dump
    - assert
    - group_timer_off
    linkageType: ''
    returnType: void
    signature: "void igmp_group_timer_on(struct gm_group *group, long interval_msec,\n\t\t\t
      const char *ifname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_igmp.c:1394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - igmp
    - group_addr
    argTypes:
    - struct gm_sock*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1386
    functionDepth: 4
    functionLinenumber: 1386
    functionLinenumberEnd: 1395
    functionName: find_group_by_addr
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct gm_group
    signature: "struct gm_group *find_group_by_addr(struct gm_sock *igmp,\n\t\t\t\t
      \   struct in_addr group_addr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_igmp.c:1403,1
    - Dst: pim_is_group_224_4
      Src: /src/frr/pimd/pim_igmp.c:1408,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmp.c:1409,1
    - Dst: pim_is_group_224_0_0_0_24
      Src: /src/frr/pimd/pim_igmp.c:1414,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1416,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_igmp.c:1434,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_igmp.c:1436,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_igmp.c:1446,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_igmp.c:1452,1
    - Dst: hash_get
      Src: /src/frr/pimd/pim_igmp.c:1453,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp.c:1457,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1459,1
    - Dst: igmp_group_count_incr
      Src: /src/frr/pimd/pim_igmp.c:1464,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1473,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmp.c:1474,1
    - Dst: igmp_anysource_forward_stop
      Src: /src/frr/pimd/pim_igmp.c:1477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 2
    argNames:
    - igmp
    - group_addr
    argTypes:
    - struct gm_sock*
    - struct in_addr
    assertStmts:
    - condition: (!group->group_filtermode_isexcl)
      pos:
        line_end: 1472
        line_start: 1472
        source_file: /src/frr/pimd/pim_igmp.c
    - condition: (!group->t_group_timer)
      pos:
        line_end: 1473
        line_start: 1473
        source_file: /src/frr/pimd/pim_igmp.c
    constantsTouched: []
    func_position:
      end: 1480
      start: 1397
    functionDepth: 5
    functionLinenumber: 1397
    functionLinenumberEnd: 1480
    functionName: igmp_add_group_by_addr
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - igmp_group_count_incr
    - XCALLOC
    - pim_inet4_dump
    - igmp_anysource_forward_stop
    - listnode_add
    - zlog_warn
    - zlog_debug
    - pim_is_group_224_0_0_0_24
    - list_new
    - pim_time_monotonic_sec
    - find_group_by_addr
    - pim_is_group_224_4
    - hash_get
    - assert
    linkageType: ''
    returnType: struct gm_group
    signature: "struct gm_group *igmp_add_group_by_addr(struct gm_sock *igmp,\n\t\t\t\t\tstruct
      in_addr group_addr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp.c:1488,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp.c:1489,1
    - Dst: igmp_v3_send_query
      Src: /src/frr/pimd/pim_igmp.c:1495,1
    - Dst: igmp_v2_send_query
      Src: /src/frr/pimd/pim_igmp.c:1502,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 10
    argNames:
    - igmp_version
    - group
    - query_buf
    - query_buf_size
    - num_sources
    - dst_addr
    - group_addr
    - query_max_response_time_dsec
    - s_flag
    - igmp
    argTypes:
    - int
    - struct gm_group*
    - char*
    - int
    - int
    - struct in_addr
    - struct in_addr
    - int
    - uint8_t
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1482
    functionDepth: 1
    functionLinenumber: 1482
    functionLinenumberEnd: 1506
    functionName: igmp_send_query
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 1
    functionsReached:
    - pim_addr_is_any
    - ntohl
    - igmp_v2_send_query
    - igmp_v3_send_query
    linkageType: ''
    returnType: void
    signature: "void igmp_send_query(int igmp_version, struct gm_group *group, char
      *query_buf,\n\t\t     int query_buf_size, int num_sources,\n\t\t     struct
      in_addr dst_addr, struct in_addr group_addr,\n\t\t     int query_max_response_time_dsec,
      uint8_t s_flag,\n\t\t     struct gm_sock *igmp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp.c:1525,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp.c:1529,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmp.c:1531,1
    - Dst: igmp_send_query
      Src: /src/frr/pimd/pim_igmp.c:1535,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ifp
    - igmp_ver
    argTypes:
    - struct interface*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1508
    functionDepth: 2
    functionLinenumber: 1508
    functionLinenumberEnd: 1541
    functionName: igmp_send_query_on_intf
    functionSourceFile: /src/frr/pimd/pim_igmp.c
    functionUses: 0
    functionsReached:
    - htonl
    - zlog_debug
    - igmp_send_query
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: void igmp_send_query_on_intf(struct interface *ifp, int igmp_ver)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zpthread.c:54,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_zpthread.c:56,1
    - Dst: stream_putw
      Src: /src/frr/pimd/pim_zpthread.c:61,1
    - Dst: stream_putw
      Src: /src/frr/pimd/pim_zpthread.c:62,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zpthread.c:65,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 1
    argNames:
    - msg_type
    argTypes:
    - enum mlag_msg_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 67
    functionName: pim_mlag_zebra_fill_header
    functionSourceFile: /src/frr/pimd/pim_zpthread.c
    functionUses: 0
    functionsReached:
    - stream_reset
    - zlog_debug
    - stream_putw
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void pim_mlag_zebra_fill_header(enum mlag_msg_type msg_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/pimd/pim_zpthread.c:78,1
    - Dst: stream_putw_at
      Src: /src/frr/pimd/pim_zpthread.c:80,1
    - Dst: stream_putw_at
      Src: /src/frr/pimd/pim_zpthread.c:83,1
    - Dst: stream_putw_at
      Src: /src/frr/pimd/pim_zpthread.c:85,1
    - Dst: stream_putw_at
      Src: /src/frr/pimd/pim_zpthread.c:88,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zpthread.c:90,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zpthread.c:93,1
    - Dst: zclient_send_mlag_data
      Src: /src/frr/pimd/pim_zpthread.c:99,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zpthread.c:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 103
    functionName: pim_mlag_zebra_flush_buffer
    functionSourceFile: /src/frr/pimd/pim_zpthread.c
    functionUses: 0
    functionsReached:
    - stream_putw_at
    - flog_err
    - STREAM_GETL
    - zclient_send_mlag_data
    - stream_reset
    linkageType: ''
    returnType: void
    signature: void pim_mlag_zebra_flush_buffer(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_mlag_zebra_flush_buffer
      Src: /src/frr/pimd/pim_zpthread.c:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - curr_msg_type
    - prev_msg_type
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 112
    functionDepth: 6
    functionLinenumber: 112
    functionLinenumberEnd: 130
    functionName: pim_mlag_zebra_check_for_buffer_flush
    functionSourceFile: /src/frr/pimd/pim_zpthread.c
    functionUses: 0
    functionsReached:
    - pim_mlag_zebra_flush_buffer
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_zebra_check_for_buffer_flush(uint32_t curr_msg_type,\n\t\t\t\t\t\t
      \ uint32_t prev_msg_type)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_count_safe
      Src: /src/frr/pimd/pim_zpthread.c:144,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zpthread.c:147,1
    - Dst: stream_fifo_count_safe
      Src: /src/frr/pimd/pim_zpthread.c:155,1
    - Dst: stream_fifo_pop_safe
      Src: /src/frr/pimd/pim_zpthread.c:158,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zpthread.c:160,1
    - Dst: STREAM_GETL
      Src: /src/frr/pimd/pim_zpthread.c:164,1
    - Dst: pim_mlag_zebra_flush_buffer
      Src: /src/frr/pimd/pim_zpthread.c:171,1
    - Dst: pim_mlag_zebra_check_for_buffer_flush
      Src: /src/frr/pimd/pim_zpthread.c:173,1
    - Dst: pim_mlag_zebra_fill_header
      Src: /src/frr/pimd/pim_zpthread.c:180,1
    - Dst: stream_put
      Src: /src/frr/pimd/pim_zpthread.c:185,1
    - Dst: stream_free
      Src: /src/frr/pimd/pim_zpthread.c:188,1
    - Dst: pim_mlag_zebra_flush_buffer
      Src: /src/frr/pimd/pim_zpthread.c:199,1
    - Dst: pim_mlag_signal_zpthread
      Src: /src/frr/pimd/pim_zpthread.c:202,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - event
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 136
    functionDepth: 7
    functionLinenumber: 136
    functionLinenumberEnd: 203
    functionName: pim_mlag_zthread_handler
    functionSourceFile: /src/frr/pimd/pim_zpthread.c
    functionUses: 0
    functionsReached:
    - stream_free
    - pim_mlag_zebra_fill_header
    - stream_put
    - pim_mlag_signal_zpthread
    - stream_fifo_count_safe
    - stream_fifo_pop_safe
    - zlog_debug
    - STREAM_GETL
    - pim_mlag_zebra_flush_buffer
    - pim_mlag_zebra_check_for_buffer_flush
    linkageType: ''
    returnType: void
    signature: void pim_mlag_zthread_handler(struct event *event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zpthread.c:210,1
    - Dst: event_add_event
      Src: /src/frr/pimd/pim_zpthread.c:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 216
    functionName: pim_mlag_signal_zpthread
    functionSourceFile: /src/frr/pimd/pim_zpthread.c
    functionUses: 3
    functionsReached:
    - zlog_debug
    - event_add_event
    linkageType: ''
    returnType: int
    signature: int pim_mlag_signal_zpthread(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_zlookup.c:40,1
    - Dst: zclient_socket_connect
      Src: /src/frr/pimd/pim_zlookup.c:46,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:48,1
    - Dst: zclient_send_hello
      Src: /src/frr/pimd/pim_zlookup.c:54,1
    - Dst: close
      Src: /src/frr/pimd/pim_zlookup.c:55,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:56,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_zlookup.c:57,1
    - Dst: zclient_lookup_sched
      Src: /src/frr/pimd/pim_zlookup.c:64,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_zlookup.c:68,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 36
    functionDepth: 5
    functionLinenumber: 36
    functionLinenumberEnd: 70
    functionName: zclient_lookup_connect
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - close
    - zlog_warn
    - safe_strerror
    - EVENT_ARG
    - event_add_timer
    - zclient_lookup_sched
    - zclient_socket_connect
    - zclient_send_hello
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_connect(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_zlookup.c:75,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_zlookup.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - zlookup
    - delay
    argTypes:
    - struct zclient*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: zclient_lookup_sched
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 1
    functionsReached:
    - event_add_timer
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_sched(struct zclient *zlookup, int delay)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_event
      Src: /src/frr/pimd/pim_zlookup.c:85,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_zlookup.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zlookup
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 90
    functionName: zclient_lookup_sched_now
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - zlog_notice
    - event_add_event
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_sched_now(struct zclient *zlookup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_lookup_sched_now
      Src: /src/frr/pimd/pim_zlookup.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zlookup
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 100
    functionName: zclient_lookup_reconnect
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - zclient_lookup_sched_now
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_reconnect(struct zclient *zlookup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/pimd/pim_zlookup.c:105,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:106,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_zlookup.c:107,1
    - Dst: zclient_lookup_reconnect
      Src: /src/frr/pimd/pim_zlookup.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - zlookup
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: zclient_lookup_failed
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - zlog_warn
    - safe_strerror
    - zclient_lookup_reconnect
    - close
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_failed(struct zclient *zlookup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_zlookup.c:117,1
    - Dst: zclient_stop
      Src: /src/frr/pimd/pim_zlookup.c:118,1
    - Dst: zclient_free
      Src: /src/frr/pimd/pim_zlookup.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: zclient_lookup_free
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 1
    functionsReached:
    - zclient_free
    - EVENT_OFF
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_free(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/pimd/pim_zlookup.c:128,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zlookup.c:130,1
    - Dst: zclient_lookup_sched_now
      Src: /src/frr/pimd/pim_zlookup.c:139,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_zlookup.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 142
    functionName: zclient_lookup_new
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - flog_err
    - zclient_lookup_sched_now
    - zlog_notice
    - zclient_new
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_new(void)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:163,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zlookup.c:169,1
    - Dst: zclient_read_header
      Src: /src/frr/pimd/pim_zlookup.c:170,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zlookup.c:173,1
    - Dst: zclient_lookup_failed
      Src: /src/frr/pimd/pim_zlookup.c:175,1
    - Dst: zapi_error_decode
      Src: /src/frr/pimd/pim_zlookup.c:182,1
    - Dst: stream_get_ipaddr
      Src: /src/frr/pimd/pim_zlookup.c:188,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_zlookup.c:191,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:192,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_zlookup.c:197,1
    - Dst: stream_getl
      Src: /src/frr/pimd/pim_zlookup.c:198,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_zlookup.c:199,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:203,1
    - Dst: stream_getl
      Src: /src/frr/pimd/pim_zlookup.c:215,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_zlookup.c:216,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:218,1
    - Dst: stream_getl
      Src: /src/frr/pimd/pim_zlookup.c:229,1
    - Dst: stream_get_ipv4
      Src: /src/frr/pimd/pim_zlookup.c:241,1
    - Dst: stream_getl
      Src: /src/frr/pimd/pim_zlookup.c:242,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:248,1
    - Dst: stream_get
      Src: /src/frr/pimd/pim_zlookup.c:255,1
    - Dst: stream_getl
      Src: /src/frr/pimd/pim_zlookup.c:256,1
    - Dst: if_lookup_by_index
      Src: /src/frr/pimd/pim_zlookup.c:269,1
    - Dst: pim_neighbor_find_by_secondary
      Src: /src/frr/pimd/pim_zlookup.c:285,1
    - Dst: pim_neighbor_find_if
      Src: /src/frr/pimd/pim_zlookup.c:287,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:300,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 82
    argCount: 5
    argNames:
    - pim
    - zlookup
    - nexthop_tab
    - tab_size
    - addr
    argTypes:
    - struct pim_instance*
    - struct zclient*
    - struct pim_zlookup_nexthop[]
    - int
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 144
    functionDepth: 4
    functionLinenumber: 144
    functionLinenumberEnd: 308
    functionName: zclient_read_nexthop
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - stream_get_ipaddr
    - if_lookup_by_index
    - stream_get_ipv4
    - zclient_read_header
    - zclient_lookup_failed
    - zapi_error_decode
    - pim_neighbor_find_if
    - pim_addr_cmp
    - zlog_debug
    - flog_err
    - zlog_warn
    - stream_getl
    - stream_get
    - pim_neighbor_find_by_secondary
    - stream_reset
    - stream_getc
    linkageType: ''
    returnType: int
    signature: "int zclient_read_nexthop(struct pim_instance *pim,\n\t\t\t\tstruct
      zclient *zlookup,\n\t\t\t\tstruct pim_zlookup_nexthop nexthop_tab[],\n\t\t\t\tconst
      int tab_size, pim_addr addr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:319,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zlookup.c:324,1
    - Dst: zclient_lookup_failed
      Src: /src/frr/pimd/pim_zlookup.c:327,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_zlookup.c:332,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zlookup.c:342,1
    - Dst: zclient_create_header
      Src: /src/frr/pimd/pim_zlookup.c:343,1
    - Dst: stream_put_ipaddr
      Src: /src/frr/pimd/pim_zlookup.c:344,1
    - Dst: stream_putw_at
      Src: /src/frr/pimd/pim_zlookup.c:345,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_zlookup.c:345,1
    - Dst: writen
      Src: /src/frr/pimd/pim_zlookup.c:347,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_zlookup.c:347,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zlookup.c:349,1
    - Dst: zclient_lookup_failed
      Src: /src/frr/pimd/pim_zlookup.c:353,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_zlookup.c:357,1
    - Dst: zclient_lookup_failed
      Src: /src/frr/pimd/pim_zlookup.c:360,1
    - Dst: zclient_read_nexthop
      Src: /src/frr/pimd/pim_zlookup.c:364,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 4
    argNames:
    - pim
    - nexthop_tab
    - tab_size
    - addr
    argTypes:
    - struct pim_instance*
    - struct pim_zlookup_nexthop[]
    - int
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 310
    functionDepth: 5
    functionLinenumber: 310
    functionLinenumberEnd: 365
    functionName: zclient_lookup_nexthop_once
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - zclient_read_nexthop
    - zclient_create_header
    - zclient_lookup_failed
    - stream_get_endp
    - stream_putw_at
    - writen
    - zlog_debug
    - flog_err
    - stream_reset
    - flog_err_sys
    - zlog_notice
    - stream_put_ipaddr
    linkageType: ''
    returnType: int
    signature: "int zclient_lookup_nexthop_once(struct pim_instance *pim,\n\t\t\t\t
      \      struct pim_zlookup_nexthop nexthop_tab[],\n\t\t\t\t       const int tab_size,
      pim_addr addr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_zlookup.c:369,1
    - Dst: pim_get_pim_instance
      Src: /src/frr/pimd/pim_zlookup.c:370,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:376,1
    - Dst: zclient_lookup_nexthop_once
      Src: /src/frr/pimd/pim_zlookup.c:380,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_zlookup.c:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 367
    functionDepth: 6
    functionLinenumber: 367
    functionLinenumberEnd: 383
    functionName: zclient_lookup_read_pipe
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - zclient_lookup_nexthop_once
    - zlog_debug
    - pim_get_pim_instance
    - EVENT_ARG
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void zclient_lookup_read_pipe(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zclient_lookup_nexthop_once
      Src: /src/frr/pimd/pim_zlookup.c:401,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:405,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:438,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:460,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_zlookup.c:473,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 5
    argNames:
    - pim
    - nexthop_tab
    - tab_size
    - addr
    - max_lookup
    argTypes:
    - struct pim_instance*
    - struct pim_zlookup_nexthop[]
    - int
    - pim_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 385
    functionDepth: 6
    functionLinenumber: 385
    functionLinenumberEnd: 478
    functionName: zclient_lookup_nexthop
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 3
    functionsReached:
    - zlog_debug
    - zclient_lookup_nexthop_once
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: "int zclient_lookup_nexthop(struct pim_instance *pim,\n\t\t\t   struct
      pim_zlookup_nexthop nexthop_tab[],\n\t\t\t   const int tab_size, pim_addr addr,\n\t\t\t
      \  int max_lookup)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_zlookup.c:482,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_zlookup.c:484,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_zlookup.c:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 488
    functionName: pim_zlookup_show_ip_multicast
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pim_zlookup_show_ip_multicast(struct vty *vty)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_find_by_vif_index
      Src: /src/frr/pimd/pim_zlookup.c:500,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_zlookup.c:500,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_zlookup.c:503,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_zlookup.c:504,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zlookup.c:505,1
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_zlookup.c:507,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zlookup.c:513,1
    - Dst: zclient_create_header
      Src: /src/frr/pimd/pim_zlookup.c:514,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_zlookup.c:516,1
    - Dst: stream_write
      Src: /src/frr/pimd/pim_zlookup.c:517,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_zlookup.c:517,1
    - Dst: stream_write
      Src: /src/frr/pimd/pim_zlookup.c:518,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_zlookup.c:518,1
    - Dst: stream_putl
      Src: /src/frr/pimd/pim_zlookup.c:519,1
    - Dst: stream_putw_at
      Src: /src/frr/pimd/pim_zlookup.c:520,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_zlookup.c:520,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_zlookup.c:522,1
    - Dst: writen
      Src: /src/frr/pimd/pim_zlookup.c:523,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zlookup.c:525,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zlookup.c:541,1
    - Dst: zclient_read_header
      Src: /src/frr/pimd/pim_zlookup.c:542,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zlookup.c:545,1
    - Dst: zclient_lookup_failed
      Src: /src/frr/pimd/pim_zlookup.c:547,1
    - Dst: stream_get
      Src: /src/frr/pimd/pim_zlookup.c:552,1
    - Dst: stream_get
      Src: /src/frr/pimd/pim_zlookup.c:553,1
    - Dst: oil_origin
      Src: /src/frr/pimd/pim_zlookup.c:555,1
    - Dst: oil_mcastgrp
      Src: /src/frr/pimd/pim_zlookup.c:556,1
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim_zlookup.c:557,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_zlookup.c:559,1
    - Dst: zclient_lookup_failed
      Src: /src/frr/pimd/pim_zlookup.c:563,1
    - Dst: stream_get
      Src: /src/frr/pimd/pim_zlookup.c:567,1
    - Dst: stream_getl
      Src: /src/frr/pimd/pim_zlookup.c:569,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 45
    argCount: 1
    argNames:
    - c_oil
    argTypes:
    - struct channel_oil*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 490
    functionDepth: 4
    functionLinenumber: 490
    functionLinenumberEnd: 574
    functionName: pim_zlookup_sg_statistics
    functionSourceFile: /src/frr/pimd/pim_zlookup.c
    functionUses: 0
    functionsReached:
    - pim_if_find_by_vif_index
    - zclient_create_header
    - oil_mcastgrp
    - zclient_read_header
    - zclient_lookup_failed
    - oil_parent
    - stream_get_endp
    - stream_putw_at
    - stream_write
    - writen
    - oil_origin
    - zlog_debug
    - flog_err
    - stream_get
    - pim_sgaddr_cmp
    - stream_getl
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int pim_zlookup_sg_statistics(struct channel_oil *c_oil)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/pimd/pim_time.c:23,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_time.c:25,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_time.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 31
    functionName: gettime_monotonic
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 0
    functionsReached:
    - flog_err_sys
    - safe_strerror
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int gettime_monotonic(struct timeval *tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettime_monotonic
      Src: /src/frr/pimd/pim_time.c:41,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_time.c:42,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_time.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: pim_time_monotonic_sec
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 21
    functionsReached:
    - gettime_monotonic
    - flog_err_sys
    - safe_strerror
    linkageType: ''
    returnType: int64_t
    signature: int64_t pim_time_monotonic_sec(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettime_monotonic
      Src: /src/frr/pimd/pim_time.c:60,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_time.c:61,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_time.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 71
    functionName: pim_time_monotonic_dsec
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 1
    functionsReached:
    - gettime_monotonic
    - flog_err_sys
    - safe_strerror
    linkageType: ''
    returnType: int64_t
    signature: int64_t pim_time_monotonic_dsec(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettime_monotonic
      Src: /src/frr/pimd/pim_time.c:78,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_time.c:79,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_time.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 89
    functionName: pim_time_monotonic_usec
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 5
    functionsReached:
    - gettime_monotonic
    - flog_err_sys
    - safe_strerror
    linkageType: ''
    returnType: int64_t
    signature: int64_t pim_time_monotonic_usec(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_time.c:96,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_time.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - buf_size
    - sec
    argTypes:
    - char*
    - int
    - long
    assertStmts:
    - condition: (buf_size >= 5)
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/frr/pimd/pim_time.c
    constantsTouched: []
    func_position:
      end: 104
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 104
    functionName: pim_time_mmss
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 1
    functionsReached:
    - snprintf
    - assert
    linkageType: ''
    returnType: int
    signature: int pim_time_mmss(char *buf, int buf_size, long sec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_time.c:112,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_time.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - buf
    - buf_size
    - sec
    argTypes:
    - char*
    - int
    - long
    assertStmts:
    - condition: (buf_size >= 8)
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/frr/pimd/pim_time.c
    constantsTouched: []
    func_position:
      end: 122
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 122
    functionName: pim_time_hhmmss
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 0
    functionsReached:
    - snprintf
    - assert
    linkageType: ''
    returnType: int
    signature: int pim_time_hhmmss(char *buf, int buf_size, long sec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_mmss
      Src: /src/frr/pimd/pim_time.c:127,1
    - Dst: event_timer_remain_second
      Src: /src/frr/pimd/pim_time.c:128,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_time.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - buf_size
    - t_timer
    argTypes:
    - char*
    - int
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 132
    functionName: pim_time_timer_to_mmss
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 1
    functionsReached:
    - event_timer_remain_second
    - pim_time_mmss
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pim_time_timer_to_mmss(char *buf, int buf_size, struct event *t_timer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_hhmmss
      Src: /src/frr/pimd/pim_time.c:137,1
    - Dst: event_timer_remain_second
      Src: /src/frr/pimd/pim_time.c:138,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_time.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buf
    - buf_size
    - t_timer
    argTypes:
    - char*
    - int
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 134
    functionDepth: 3
    functionLinenumber: 134
    functionLinenumberEnd: 142
    functionName: pim_time_timer_to_hhmmss
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 3
    functionsReached:
    - event_timer_remain_second
    - pim_time_hhmmss
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pim_time_timer_to_hhmmss(char *buf, int buf_size, struct event
      *t_timer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_time.c:146,1
    - Dst: pim_time_hhmmss
      Src: /src/frr/pimd/pim_time.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buf
    - buf_size
    - uptime_sec
    argTypes:
    - char*
    - int
    - int64_t
    assertStmts:
    - condition: (buf_size >= 8)
      pos:
        line_end: 145
        line_start: 145
        source_file: /src/frr/pimd/pim_time.c
    constantsTouched: []
    func_position:
      end: 149
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 149
    functionName: pim_time_uptime
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 7
    functionsReached:
    - pim_time_hhmmss
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_time_uptime(char *buf, int buf_size, int64_t uptime_sec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_time.c:154,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_time.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - buf
    - buf_size
    - now
    - begin
    argTypes:
    - char*
    - int
    - int64_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: pim_time_uptime_begin
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 4
    functionsReached:
    - pim_time_uptime
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pim_time_uptime_begin(char *buf, int buf_size, int64_t now, int64_t
      begin)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_timer_remain_msec
      Src: /src/frr/pimd/pim_time.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t_timer
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 164
    functionName: pim_time_timer_remain_msec
    functionSourceFile: /src/frr/pimd/pim_time.c
    functionUses: 2
    functionsReached:
    - event_timer_remain_msec
    linkageType: ''
    returnType: long
    signature: long pim_time_timer_remain_msec(struct event *t_timer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: PIM_FORCE_BOOLEAN
    functionSourceFile: /src/frr/pimd/pimd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_FORCE_BOOLEAN(expr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/frr/pimd/pim_msdp_socket.c:35,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:36,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:38,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_msdp_socket.c:43,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:45,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 50
    functionName: pim_msdp_update_sock_send_buffer_size
    functionSourceFile: /src/frr/pimd/pim_msdp_socket.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - flog_err_sys
    - safe_strerror
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void pim_msdp_update_sock_send_buffer_size(int fd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp_socket.c:56,1
    - Dst: sockunion_init
      Src: /src/frr/pimd/pim_msdp_socket.c:61,1
    - Dst: EVENT_FD
      Src: /src/frr/pimd/pim_msdp_socket.c:64,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_msdp_socket.c:66,1
    - Dst: event_add_read
      Src: /src/frr/pimd/pim_msdp_socket.c:71,1
    - Dst: sockunion_accept
      Src: /src/frr/pimd/pim_msdp_socket.c:75,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:77,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:78,1
    - Dst: pim_msdp_peer_find
      Src: /src/frr/pimd/pim_msdp_socket.c:83,1
    - Dst: PIM_MSDP_PEER_IS_LISTENER
      Src: /src/frr/pimd/pim_msdp_socket.c:84,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_msdp_socket.c:87,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp_socket.c:90,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_socket.c:95,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_msdp_socket.c:103,1
    - Dst: pim_msdp_peer_stop_tcp_conn
      Src: /src/frr/pimd/pim_msdp_socket.c:107,1
    - Dst: set_nonblocking
      Src: /src/frr/pimd/pim_msdp_socket.c:110,1
    - Dst: pim_msdp_update_sock_send_buffer_size
      Src: /src/frr/pimd/pim_msdp_socket.c:111,1
    - Dst: pim_msdp_peer_established
      Src: /src/frr/pimd/pim_msdp_socket.c:112,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 53
    functionDepth: 5
    functionLinenumber: 53
    functionLinenumberEnd: 113
    functionName: pim_msdp_sock_accept
    functionSourceFile: /src/frr/pimd/pim_msdp_socket.c
    functionUses: 0
    functionsReached:
    - pim_msdp_peer_find
    - EVENT_FD
    - PIM_MSDP_PEER_IS_LISTENER
    - pim_msdp_peer_stop_tcp_conn
    - pim_msdp_update_sock_send_buffer_size
    - close
    - sockunion_init
    - flog_err
    - safe_strerror
    - zlog_debug
    - set_nonblocking
    - EVENT_ARG
    - event_add_read
    - sockunion_accept
    - flog_err_sys
    - pim_msdp_peer_established
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void pim_msdp_sock_accept(struct event *thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_msdp_socket.c:129,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:131,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:131,1
    - Dst: memset
      Src: /src/frr/pimd/pim_msdp_socket.c:135,1
    - Dst: htons
      Src: /src/frr/pimd/pim_msdp_socket.c:137,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/pimd/pim_msdp_socket.c:143,1
    - Dst: sockopt_reuseport
      Src: /src/frr/pimd/pim_msdp_socket.c:144,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_msdp_socket.c:148,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_msdp_socket.c:150,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp_socket.c:153,1
    - Dst: pim_socket_bind
      Src: /src/frr/pimd/pim_msdp_socket.c:156,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:157,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:159,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp_socket.c:160,1
    - Dst: bind
      Src: /src/frr/pimd/pim_msdp_socket.c:167,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:171,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_msdp_socket.c:173,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:173,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp_socket.c:174,1
    - Dst: listen
      Src: /src/frr/pimd/pim_msdp_socket.c:178,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:180,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:181,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp_socket.c:182,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/pimd/pim_msdp_socket.c:187,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_msdp_socket.c:188,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:189,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_msdp_socket.c:194,1
    - Dst: event_add_read
      Src: /src/frr/pimd/pim_msdp_socket.c:195,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 49
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 200
    functionName: pim_msdp_sock_listen
    functionSourceFile: /src/frr/pimd/pim_msdp_socket.c
    functionUses: 1
    functionsReached:
    - if_lookup_by_name
    - memset
    - htons
    - sockopt_reuseaddr
    - socket
    - sockopt_reuseport
    - close
    - ntohs
    - flog_err
    - safe_strerror
    - setsockopt_ipv4_tos
    - bind
    - listen
    - zlog_warn
    - event_add_read
    - flog_err_sys
    - pim_socket_bind
    - memcpy
    linkageType: ''
    returnType: int
    signature: int pim_msdp_sock_listen(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/frr/pimd/pim_msdp_socket.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_msdp_socket.c
    functionUses: 0
    functionsReached:
    - bind
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_socket.c:208,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_msdp_socket.c:216,1
    - Dst: pim_msdp_peer_stop_tcp_conn
      Src: /src/frr/pimd/pim_msdp_socket.c:220,1
    - Dst: sockunion_socket
      Src: /src/frr/pimd/pim_msdp_socket.c:224,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:226,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:228,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_msdp_socket.c:233,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_msdp_socket.c:236,1
    - Dst: pim_socket_bind
      Src: /src/frr/pimd/pim_msdp_socket.c:241,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:242,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:244,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp_socket.c:245,1
    - Dst: set_nonblocking
      Src: /src/frr/pimd/pim_msdp_socket.c:251,1
    - Dst: pim_msdp_update_sock_send_buffer_size
      Src: /src/frr/pimd/pim_msdp_socket.c:254,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/pimd/pim_msdp_socket.c:255,1
    - Dst: sockopt_reuseport
      Src: /src/frr/pimd/pim_msdp_socket.c:256,1
    - Dst: sockunion_bind
      Src: /src/frr/pimd/pim_msdp_socket.c:259,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_socket.c:261,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:263,1
    - Dst: close
      Src: /src/frr/pimd/pim_msdp_socket.c:264,1
    - Dst: setsockopt_ipv4_tos
      Src: /src/frr/pimd/pim_msdp_socket.c:270,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_msdp_socket.c:271,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_msdp_socket.c:272,1
    - Dst: sockunion_connect
      Src: /src/frr/pimd/pim_msdp_socket.c:276,1
    - Dst: htons
      Src: /src/frr/pimd/pim_msdp_socket.c:277,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 203
    functionDepth: 3
    functionLinenumber: 203
    functionLinenumberEnd: 278
    functionName: pim_msdp_sock_connect
    functionSourceFile: /src/frr/pimd/pim_msdp_socket.c
    functionUses: 1
    functionsReached:
    - sockopt_reuseaddr
    - htons
    - pim_msdp_update_sock_send_buffer_size
    - flog_err
    - zlog_warn
    - set_nonblocking
    - pim_socket_bind
    - zlog_debug
    - safe_strerror
    - setsockopt_ipv4_tos
    - flog_err_sys
    - sockopt_reuseport
    - if_lookup_by_name
    - sockunion_socket
    - pim_msdp_peer_stop_tcp_conn
    - close
    - sockunion_connect
    - sockunion_bind
    - zlog_notice
    linkageType: ''
    returnType: int
    signature: int pim_msdp_sock_connect(struct pim_msdp_peer *mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zebra_router_id_update_read
      Src: /src/frr/pimd/pim_zebra.c:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: pim_router_id_update_zebra
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_router_id_update_read
    linkageType: ''
    returnType: int
    signature: int pim_router_id_update_zebra(ZAPI_CALLBACK_ARGS)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_vrf_update_read
      Src: /src/frr/pimd/pim_zebra.c:61,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zebra.c:67,1
    - Dst: pim_get_pim_instance
      Src: /src/frr/pimd/pim_zebra.c:70,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/pimd/pim_zebra.c:74,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 85
    functionName: pim_zebra_interface_vrf_update
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - zebra_interface_vrf_update_read
    - zlog_debug
    - pim_get_pim_instance
    - if_update_to_new_vrf
    linkageType: ''
    returnType: int
    signature: int pim_zebra_interface_vrf_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_zebra.c:383,1
    - Dst: zclient_create_header
      Src: /src/frr/pimd/pim_zebra.c:385,1
    - Dst: stream_putw_at
      Src: /src/frr/pimd/pim_zebra.c:386,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_zebra.c:386,1
    - Dst: zclient_send_message
      Src: /src/frr/pimd/pim_zebra.c:388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 373
    functionDepth: 4
    functionLinenumber: 373
    functionLinenumberEnd: 389
    functionName: pim_zebra_vxlan_replay
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    linkageType: ''
    returnType: void
    signature: void pim_zebra_vxlan_replay(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_zebra.c:395,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_zebra.c:398,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_zebra.c:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 391
    functionDepth: 3
    functionLinenumber: 391
    functionLinenumberEnd: 400
    functionName: pim_scan_oil
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - pim_upstream_mroute_iif_update
    - pim_time_monotonic_sec
    - frr_each
    linkageType: ''
    returnType: void
    signature: void pim_scan_oil(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_zebra.c:404,1
    - Dst: pim_scan_oil
      Src: /src/frr/pimd/pim_zebra.c:407,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_zebra.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 402
    functionDepth: 4
    functionLinenumber: 402
    functionLinenumberEnd: 414
    functionName: on_rpf_cache_refresh
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - pim_time_monotonic_sec
    - pim_scan_oil
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void on_rpf_cache_refresh(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_rpf_set_refresh_time
      Src: /src/frr/pimd/pim_zebra.c:420,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zebra.c:430,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_zebra.c:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 437
    functionName: sched_rpf_cache_refresh
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - zlog_debug
    - pim_rpf_set_refresh_time
    linkageType: ''
    returnType: void
    signature: void sched_rpf_cache_refresh(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_client_sendmsg
      Src: /src/frr/pimd/pim_zebra.c:443,1
    - Dst: zclient_send_reg_requests
      Src: /src/frr/pimd/pim_zebra.c:446,1
    - Dst: pim_zebra_vxlan_replay
      Src: /src/frr/pimd/pim_zebra.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - zclient
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 439
    functionDepth: 5
    functionLinenumber: 439
    functionLinenumberEnd: 452
    functionName: pim_zebra_connected
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - bfd_client_sendmsg
    - pim_zebra_vxlan_replay
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void pim_zebra_connected(struct zclient *zclient)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cap
    argTypes:
    - struct zclient_capabilities*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 458
    functionName: pim_zebra_capabilities
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_zebra_capabilities(struct zclient_capabilities *cap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_new
      Src: /src/frr/pimd/pim_zebra.c:481,1
    - Dst: array_size
      Src: /src/frr/pimd/pim_zebra.c:482,1
    - Dst: zclient_init
      Src: /src/frr/pimd/pim_zebra.c:487,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_zebra.c:489,1
    - Dst: zclient_lookup_new
      Src: /src/frr/pimd/pim_zebra.c:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 478
    functionDepth: 4
    functionLinenumber: 478
    functionLinenumberEnd: 493
    functionName: pim_zebra_init
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_new
    - array_size
    - zclient_lookup_new
    - zclient_init
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void pim_zebra_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zebra.c:501,1
    - Dst: PIM_IF_FLAG_TEST_PROTO_IGMP
      Src: /src/frr/pimd/pim_zebra.c:504,1
    - Dst: PIM_IF_FLAG_TEST_PROTO_PIM
      Src: /src/frr/pimd/pim_zebra.c:507,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_zebra.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 495
    functionDepth: 3
    functionLinenumber: 495
    functionLinenumberEnd: 512
    functionName: pim_forward_start
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - PIM_IF_FLAG_TEST_PROTO_IGMP
    - pim_channel_add_oif
    - PIM_IF_FLAG_TEST_PROTO_PIM
    linkageType: ''
    returnType: void
    signature: void pim_forward_start(struct pim_ifchannel *ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_zebra.c:519,1
    - Dst: pim_upstream_evaluate_join_desired_interface
      Src: /src/frr/pimd/pim_zebra.c:528,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_zebra.c:529,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_zebra.c:532,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 514
    functionDepth: 3
    functionLinenumber: 514
    functionLinenumberEnd: 534
    functionName: pim_forward_stop
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 0
    functionsReached:
    - pim_upstream_evaluate_join_desired_interface
    - pim_channel_del_oif
    - zlog_debug
    - pim_channel_add_oif
    linkageType: ''
    returnType: void
    signature: void pim_forward_stop(struct pim_ifchannel *ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_zebra.c:538,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_zebra.c:541,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_zebra.c:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 536
    functionDepth: 2
    functionLinenumber: 536
    functionLinenumberEnd: 545
    functionName: pim_zebra_zclient_update
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pim_zebra_zclient_update(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 553
    functionName: pim_zebra_zclient_get
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct zclient
    signature: struct zclient *pim_zebra_zclient_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_interface_set_master
      Src: /src/frr/pimd/pim_zebra.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vrf
    - ifp
    argTypes:
    - struct interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 555
    functionDepth: 5
    functionLinenumber: 555
    functionLinenumberEnd: 559
    functionName: pim_zebra_interface_set_master
    functionSourceFile: /src/frr/pimd/pim_zebra.c
    functionUses: 1
    functionsReached:
    - zclient_interface_set_master
    linkageType: ''
    returnType: void
    signature: "void pim_zebra_interface_set_master(struct interface *vrf,\n\t\t\t\t
      \   struct interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - P
    - ','
    - G
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: I_am_RP
    functionSourceFile: /src/frr/pimd/pim_rp.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: I_am_RP(P, G)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - P
    - ','
    - G
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: RP
    functionSourceFile: /src/frr/pimd/pim_rp.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RP(P, G)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:74,1
    - Dst: vrf_lookup_by_name
      Src: /src/frr/pimd/pim_cmd.c:75,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/pimd/pim_cmd.c:77,1
    - Dst: vty_json_empty
      Src: /src/frr/pimd/pim_cmd.c:81,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - vty
    - argv
    - argc
    - idx
    - uj
    argTypes:
    - struct vty*
    - struct cmd_token*[]
    - int
    - int*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 88
    functionName: pim_cmd_lookup_vrf
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vrf_lookup_by_name
    - vty_json_empty
    - vrf_lookup_by_id
    - argv_find
    linkageType: ''
    returnType: struct vrf
    signature: "struct vrf *pim_cmd_lookup_vrf(struct vty *vty, struct cmd_token *argv[],\n\t\t\t\t
      \     const int argc, int *idx, bool uj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:102,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:105,1
    - Dst: pim_time_timer_to_mmss
      Src: /src/frr/pimd/pim_cmd.c:106,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:108,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:110,1
    - Dst: pim_ifchannel_ifassert_name
      Src: /src/frr/pimd/pim_cmd.c:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - vty
    - pim_ifp
    - ch
    - now
    argTypes:
    - struct vty*
    - struct pim_interface*
    - struct pim_ifchannel*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 113
    functionName: pim_show_assert_helper
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - vty_out
    - pim_time_uptime
    - pim_time_timer_to_mmss
    - inet_ntop
    - pim_inet4_dump
    - pim_ifchannel_ifassert_name
    linkageType: ''
    returnType: void
    signature: "void pim_show_assert_helper(struct vty *vty,\n\t\t\t\t   struct pim_interface
      *pim_ifp,\n\t\t\t\t   struct pim_ifchannel *ch, time_t now)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:122,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:124,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:127,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:132,1
    - Dst: pim_show_assert_helper
      Src: /src/frr/pimd/pim_cmd.c:136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 115
    functionDepth: 5
    functionLinenumber: 115
    functionLinenumberEnd: 139
    functionName: pim_show_assert
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - vty_out
    - FOR_ALL_INTERFACES
    - pim_show_assert_helper
    - pim_time_monotonic_sec
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void pim_show_assert(struct pim_instance *pim, struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:150,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:152,1
    - Dst: PIM_IF_FLAG_TEST_COULD_ASSERT
      Src: /src/frr/pimd/pim_cmd.c:154,1
    - Dst: pim_macro_ch_could_assert_eval
      Src: /src/frr/pimd/pim_cmd.c:155,1
    - Dst: PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED
      Src: /src/frr/pimd/pim_cmd.c:156,1
    - Dst: pim_macro_assert_tracking_desired_eval
      Src: /src/frr/pimd/pim_cmd.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - vty
    - pim_ifp
    - ch
    argTypes:
    - struct vty*
    - struct pim_interface*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 159
    functionName: pim_show_assert_internal_helper
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - PIM_IF_FLAG_TEST_COULD_ASSERT
    - PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED
    - vty_out
    - inet_ntop
    - pim_macro_assert_tracking_desired_eval
    - pim_macro_ch_could_assert_eval
    linkageType: ''
    returnType: void
    signature: "void pim_show_assert_internal_helper(struct vty *vty,\n\t\t\t\t\t
      \   struct pim_interface *pim_ifp,\n\t\t\t\t\t    struct pim_ifchannel *ch)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:167,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:173,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:175,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:180,1
    - Dst: pim_show_assert_internal_helper
      Src: /src/frr/pimd/pim_cmd.c:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 184
    functionName: pim_show_assert_internal
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - RB_FOREACH
    - pim_show_assert_internal_helper
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pim_show_assert_internal(struct pim_instance *pim, struct vty
      *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_macro_spt_assert_metric
      Src: /src/frr/pimd/pim_cmd.c:197,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:200,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:202,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - vty
    - pim_ifp
    - ch
    argTypes:
    - struct vty*
    - struct pim_interface*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 207
    functionName: pim_show_assert_metric_helper
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - pim_inet4_dump
    - vty_out
    - pim_macro_spt_assert_metric
    linkageType: ''
    returnType: void
    signature: "void pim_show_assert_metric_helper(struct vty *vty,\n\t\t\t\t\t  struct
      pim_interface *pim_ifp,\n\t\t\t\t\t  struct pim_ifchannel *ch)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:215,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:218,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:223,1
    - Dst: pim_show_assert_metric_helper
      Src: /src/frr/pimd/pim_cmd.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 209
    functionDepth: 3
    functionLinenumber: 209
    functionLinenumberEnd: 227
    functionName: pim_show_assert_metric
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - pim_show_assert_metric_helper
    - RB_FOREACH
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pim_show_assert_metric(struct pim_instance *pim, struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:244,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:247,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:249,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:253,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:255,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:257,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:259,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - vty
    - pim_ifp
    - ch
    argTypes:
    - struct vty*
    - struct pim_interface*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 262
    functionName: pim_show_assert_winner_metric_helper
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - pim_inet4_dump
    - vty_out
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void pim_show_assert_winner_metric_helper(struct vty *vty,\n\t\t\t\t\t\t
      struct pim_interface *pim_ifp,\n\t\t\t\t\t\t struct pim_ifchannel *ch)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:271,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:274,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:279,1
    - Dst: pim_show_assert_winner_metric_helper
      Src: /src/frr/pimd/pim_cmd.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 264
    functionDepth: 3
    functionLinenumber: 264
    functionLinenumberEnd: 283
    functionName: pim_show_assert_winner_metric
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - RB_FOREACH
    - vty_out
    - pim_show_assert_winner_metric_helper
    linkageType: ''
    returnType: void
    signature: "void pim_show_assert_winner_metric(struct pim_instance *pim,\n\t\t\t\t\t
      \ struct vty *vty)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:294,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:297,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:299,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:302,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:312,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:317,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:319,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:323,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:324,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd.c:325,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:326,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:328,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:331,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:332,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:334,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd.c:338,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:342,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:346,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:350,1
    - Dst: if_is_up
      Src: /src/frr/pimd/pim_cmd.c:353,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:357,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:397,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:399,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:401,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:407,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:407,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:410,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:413,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:415,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:418,1
    - Dst: PIM_IGMP_GMI_MSEC
      Src: /src/frr/pimd/pim_cmd.c:422,1
    - Dst: PIM_IGMP_SQI
      Src: /src/frr/pimd/pim_cmd.c:427,1
    - Dst: PIM_IGMP_OQPI_MSEC
      Src: /src/frr/pimd/pim_cmd.c:429,1
    - Dst: PIM_IGMP_LMQT_MSEC
      Src: /src/frr/pimd/pim_cmd.c:434,1
    - Dst: PIM_IGMP_OHPI_DSEC
      Src: /src/frr/pimd/pim_cmd.c:439,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:449,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:450,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd.c:451,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:452,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:454,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd.c:458,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:461,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:463,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:466,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:469,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:471,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:475,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:478,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:481,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:485,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:489,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:492,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:496,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:499,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:503,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:506,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:507,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:511,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:512,1
    - Dst: if_is_up
      Src: /src/frr/pimd/pim_cmd.c:513,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:517,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:519,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:520,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:522,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:523,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:525,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:526,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:527,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:530,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:534,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:536,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:538,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:540,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:542,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:544,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:545,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:547,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:548,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:549,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:552,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:555,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:558,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:561,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:564,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:567,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:570,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:573,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:576,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:577,1
    - Dst: pim_print_ifp_flags
      Src: /src/frr/pimd/pim_cmd.c:579,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:585,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:587,1
    - Dst: igmp_show_interface_join
      Src: /src/frr/pimd/pim_cmd.c:590,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:600,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:603,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:604,1
    - Dst: vrf_id_to_name
      Src: /src/frr/pimd/pim_cmd.c:605,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:607,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:611,1
    - Dst: pim_find_primary_addr
      Src: /src/frr/pimd/pim_cmd.c:626,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:627,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:630,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:636,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:638,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:640,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:644,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:648,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:649,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:651,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:653,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:654,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:659,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:660,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:662,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:664,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:666,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:668,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:670,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:672,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:682,1
    - Dst: igmp_show_statistics
      Src: /src/frr/pimd/pim_cmd.c:685,1
    - Dst: igmp_stats_init
      Src: /src/frr/pimd/pim_cmd.c:693,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:696,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:698,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:710,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_cmd.c:719,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:724,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:726,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd.c:728,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:735,1
    - Dst: igmp_stats_add
      Src: /src/frr/pimd/pim_cmd.c:737,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:743,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:745,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:750,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:752,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:754,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:755,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:756,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:757,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:758,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:759,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:760,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:761,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:763,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:765,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:767,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:769,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:771,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:773,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:775,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:777,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:779,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:781,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:783,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:785,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:787,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:788,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:790,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:792,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:794,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:796,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:798,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:800,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:802,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:804,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:806,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:808,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:810,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:812,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:814,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:816,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:818,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:820,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:822,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:824,1
    - Dst: igmp_source_json_helper
      Src: /src/frr/pimd/pim_cmd.c:829,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:835,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:839,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:840,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd.c:841,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_cmd.c:842,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:843,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:844,1
    - Dst: igmp_group_print
      Src: /src/frr/pimd/pim_cmd.c:847,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:858,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:860,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:861,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:864,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:866,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd.c:869,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:870,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:871,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:874,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:878,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:880,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:884,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:886,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:892,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:893,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_cmd.c:896,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:898,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:900,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:901,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:908,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:912,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:915,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:922,1
    - Dst: pim_time_timer_to_mmss
      Src: /src/frr/pimd/pim_cmd.c:925,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:928,1
    - Dst: igmp_source_json_helper
      Src: /src/frr/pimd/pim_cmd.c:932,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:943,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:947,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:950,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:964,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_cmd.c:972,1
    - Dst: igmp_show_groups_interface_single
      Src: /src/frr/pimd/pim_cmd.c:978,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:989,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:992,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:995,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:996,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:999,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1000,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1005,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1008,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_cmd.c:1012,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1015,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1022,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:1030,1
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_cmd.c:1031,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_cmd.c:1035,1
    - Dst: igmp_group_print
      Src: /src/frr/pimd/pim_cmd.c:1037,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1045,1
    - Dst: igmp_group_print
      Src: /src/frr/pimd/pim_cmd.c:1046,1
    - Dst: vty_json_no_pretty
      Src: /src/frr/pimd/pim_cmd.c:1051,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1053,1
    - Dst: igmp_show_groups
      Src: /src/frr/pimd/pim_cmd.c:1057,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:1064,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1067,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1070,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1071,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1074,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1075,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1079,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1082,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:1087,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:1099,1
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_cmd.c:1100,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_cmd.c:1104,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 285
    functionDepth: 5
    functionLinenumber: 285
    functionLinenumberEnd: 1112
    functionName: igmp_show_interfaces
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - json_object_pim_ifp_add
    - PIM_IGMP_GMI_MSEC
    - igmp_stats_init
    - json_object_string_add
    - json_object_string_addf
    - find_group_by_addr
    - json_object_boolean_add
    - PIM_IGMP_SQI
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - IGMP_SOURCE_TEST_FORWARDING
    - igmp_stats_add
    - vty_json_no_pretty
    - FOR_ALL_INTERFACES
    - inet_ntop
    - igmp_show_statistics
    - pim_time_monotonic_sec
    - if
    - PIM_IGMP_OQPI_MSEC
    - if_is_up
    - pim_print_ifp_flags
    - igmp_show_groups
    - vty_out
    - listcount
    - pim_inet4_dump
    - pim_time_timer_to_mmss
    - json_object_int_add
    - inet_pton
    - PIM_IGMP_OHPI_DSEC
    - json_object_new_object
    - json_object_new_array
    - pim_find_primary_addr
    - if_lookup_by_name
    - json_object_array_add
    - pim_time_uptime
    - vrf_id_to_name
    - pim_time_timer_to_hhmmss
    - strcmp
    - igmp_show_groups_interface_single
    - PIM_IGMP_LMQT_MSEC
    - json_object_object_get_ex
    - json_object_boolean_true_add
    - json_object_object_add
    - igmp_show_interface_join
    - pim_igmp_sock_lookup_ifaddr
    - vty_json
    - igmp_source_json_helper
    - igmp_group_print
    linkageType: ''
    returnType: void
    signature: "void igmp_show_interfaces(struct pim_instance *pim, struct vty *vty,\n\t\t\t\t
      bool uj)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:397,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:399,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:401,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:407,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:407,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:410,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:413,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:415,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:418,1
    - Dst: PIM_IGMP_GMI_MSEC
      Src: /src/frr/pimd/pim_cmd.c:422,1
    - Dst: PIM_IGMP_SQI
      Src: /src/frr/pimd/pim_cmd.c:427,1
    - Dst: PIM_IGMP_OQPI_MSEC
      Src: /src/frr/pimd/pim_cmd.c:429,1
    - Dst: PIM_IGMP_LMQT_MSEC
      Src: /src/frr/pimd/pim_cmd.c:434,1
    - Dst: PIM_IGMP_OHPI_DSEC
      Src: /src/frr/pimd/pim_cmd.c:439,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:449,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:450,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd.c:451,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:452,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:454,1
    - Dst: json_object_string_addf
      Src: /src/frr/pimd/pim_cmd.c:458,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:461,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:463,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:466,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:469,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:471,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:475,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:478,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:481,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:485,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:489,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:492,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:496,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:499,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:503,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:506,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:507,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:511,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:512,1
    - Dst: if_is_up
      Src: /src/frr/pimd/pim_cmd.c:513,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:517,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:519,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:520,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:522,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:523,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:525,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:526,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:527,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:530,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:534,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:536,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:538,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:540,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:542,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:544,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:545,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:547,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:548,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:549,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:552,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:555,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:558,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:561,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:564,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:567,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:570,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:573,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:576,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:577,1
    - Dst: pim_print_ifp_flags
      Src: /src/frr/pimd/pim_cmd.c:579,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:585,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:587,1
    - Dst: igmp_show_interface_join
      Src: /src/frr/pimd/pim_cmd.c:590,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:600,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:603,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:604,1
    - Dst: vrf_id_to_name
      Src: /src/frr/pimd/pim_cmd.c:605,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:607,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:611,1
    - Dst: pim_find_primary_addr
      Src: /src/frr/pimd/pim_cmd.c:626,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:627,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:630,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:636,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:638,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:640,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:644,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:648,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:649,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:651,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:653,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:654,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:659,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:660,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:662,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:664,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:666,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:668,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:670,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:672,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:682,1
    - Dst: igmp_show_statistics
      Src: /src/frr/pimd/pim_cmd.c:685,1
    - Dst: igmp_stats_init
      Src: /src/frr/pimd/pim_cmd.c:693,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:696,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:698,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:710,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_cmd.c:719,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:724,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:726,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_cmd.c:728,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:735,1
    - Dst: igmp_stats_add
      Src: /src/frr/pimd/pim_cmd.c:737,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:743,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:745,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:750,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:752,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:754,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:755,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:756,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:757,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:758,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:759,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:760,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:761,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:763,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:765,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:767,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:769,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:771,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:773,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:775,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:777,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:779,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:781,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:783,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:785,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:787,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:788,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:790,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:792,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:794,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:796,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:798,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:800,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:802,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:804,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:806,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:808,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:810,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:812,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:814,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:816,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:818,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:820,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:822,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:824,1
    - Dst: igmp_source_json_helper
      Src: /src/frr/pimd/pim_cmd.c:829,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:835,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:839,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:840,1
    - Dst: json_object_boolean_add
      Src: /src/frr/pimd/pim_cmd.c:841,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_cmd.c:842,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:843,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:844,1
    - Dst: igmp_group_print
      Src: /src/frr/pimd/pim_cmd.c:847,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:858,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:860,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:861,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:864,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:866,1
    - Dst: json_object_pim_ifp_add
      Src: /src/frr/pimd/pim_cmd.c:869,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:870,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:871,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:874,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:878,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:880,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:884,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:886,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:892,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:893,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_cmd.c:896,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:898,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:900,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:901,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:908,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:912,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:915,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:922,1
    - Dst: pim_time_timer_to_mmss
      Src: /src/frr/pimd/pim_cmd.c:925,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:928,1
    - Dst: igmp_source_json_helper
      Src: /src/frr/pimd/pim_cmd.c:932,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:943,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:947,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:950,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:964,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_cmd.c:972,1
    - Dst: igmp_show_groups_interface_single
      Src: /src/frr/pimd/pim_cmd.c:978,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:989,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:992,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:995,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:996,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:999,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1000,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1005,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1008,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_cmd.c:1012,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1015,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1022,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:1030,1
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_cmd.c:1031,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_cmd.c:1035,1
    - Dst: igmp_group_print
      Src: /src/frr/pimd/pim_cmd.c:1037,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1045,1
    - Dst: igmp_group_print
      Src: /src/frr/pimd/pim_cmd.c:1046,1
    - Dst: vty_json_no_pretty
      Src: /src/frr/pimd/pim_cmd.c:1051,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1053,1
    - Dst: igmp_show_groups
      Src: /src/frr/pimd/pim_cmd.c:1057,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:1064,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1067,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1070,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1071,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1074,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1075,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1079,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1082,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:1087,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:1099,1
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_cmd.c:1100,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_cmd.c:1104,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 4
    argNames:
    - pim
    - vty
    - ifname
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 372
    functionDepth: 5
    functionLinenumber: 372
    functionLinenumberEnd: 1111
    functionName: igmp_show_interfaces_single
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - PIM_IGMP_GMI_MSEC
    - json_object_pim_ifp_add
    - igmp_stats_init
    - json_object_string_add
    - json_object_string_addf
    - find_group_by_addr
    - json_object_boolean_add
    - PIM_IGMP_SQI
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - IGMP_SOURCE_TEST_FORWARDING
    - igmp_stats_add
    - vty_json_no_pretty
    - FOR_ALL_INTERFACES
    - igmp_show_statistics
    - pim_time_monotonic_sec
    - if
    - PIM_IGMP_OQPI_MSEC
    - if_is_up
    - pim_print_ifp_flags
    - igmp_show_groups
    - vty_out
    - listcount
    - pim_inet4_dump
    - pim_time_timer_to_mmss
    - json_object_int_add
    - inet_pton
    - PIM_IGMP_OHPI_DSEC
    - json_object_new_object
    - json_object_new_array
    - pim_find_primary_addr
    - if_lookup_by_name
    - json_object_array_add
    - pim_time_uptime
    - vrf_id_to_name
    - pim_time_timer_to_hhmmss
    - strcmp
    - igmp_show_groups_interface_single
    - PIM_IGMP_LMQT_MSEC
    - json_object_object_get_ex
    - json_object_boolean_true_add
    - json_object_object_add
    - igmp_show_interface_join
    - pim_igmp_sock_lookup_ifaddr
    - vty_json
    - igmp_source_json_helper
    - igmp_group_print
    linkageType: ''
    returnType: void
    signature: "void igmp_show_interfaces_single(struct pim_instance *pim,\n\t\t\t\t\tstruct
      vty *vty, const char *ifname,\n\t\t\t\t\tbool uj)"
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1134,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:1138,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1147,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:1155,1
    - Dst: pim_time_timer_to_mmss
      Src: /src/frr/pimd/pim_cmd.c:1157,1
    - Dst: for
      Src: /src/frr/pimd/pim_cmd.c:1164,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1164,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1171,1
    - Dst: igmp_sources_print
      Src: /src/frr/pimd/pim_cmd.c:1180,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:1191,1
    - Dst: pim_time_timer_to_mmss
      Src: /src/frr/pimd/pim_cmd.c:1193,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:1194,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:1197,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1199,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:1202,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:1203,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:1206,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1208,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:1211,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:1212,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:1214,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:1217,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:1221,1
    - Dst: igmp_source_json_helper
      Src: /src/frr/pimd/pim_cmd.c:1223,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1226,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_cmd.c:1228,1
    - Dst: igmp_show_sources_interface_single
      Src: /src/frr/pimd/pim_cmd.c:1234,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:1245,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1248,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1252,1
    - Dst: if_lookup_by_name
      Src: /src/frr/pimd/pim_cmd.c:1256,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1259,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1266,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:1278,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1281,1
    - Dst: pim_igmp_sock_lookup_ifaddr
      Src: /src/frr/pimd/pim_cmd.c:1285,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1289,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_cmd.c:1293,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1296,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:1299,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1303,1
    - Dst: igmp_sources_print
      Src: /src/frr/pimd/pim_cmd.c:1304,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1310,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:1316,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1320,1
    - Dst: igmp_sources_print
      Src: /src/frr/pimd/pim_cmd.c:1322,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1329,1
    - Dst: igmp_show_sources
      Src: /src/frr/pimd/pim_cmd.c:1332,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:1339,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1342,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1346,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:1351,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1360,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:1366,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1370,1
    - Dst: igmp_sources_print
      Src: /src/frr/pimd/pim_cmd.c:1372,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1378,1
    - Dst: igmp_show_source_retransmission
      Src: /src/frr/pimd/pim_cmd.c:1381,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1386,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:1390,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1399,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:1405,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:1409,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:1413,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1416,1
    - Dst: clear_igmp_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1425,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:1429,1
    - Dst: pim_if_addr_del_all_igmp
      Src: /src/frr/pimd/pim_cmd.c:1430,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_cmd.c:1432,1
    - Dst: pim_if_addr_add_all
      Src: /src/frr/pimd/pim_cmd.c:1433,1
    - Dst: clear_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1436,1
    - Dst: clear_igmp_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1438,1
    - Dst: clear_pim_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1439,1
    - Dst: PIM_GET_PIM_INTERFACE
      Src: /src/frr/pimd/pim_cmd.c:1442,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1445,1
    - Dst: pim_cli_legacy_mesh_group_behavior
      Src: /src/frr/pimd/pim_cmd.c:1457,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:1465,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:1470,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pimd/pim_cmd.c:1474,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:1478,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:1479,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pimd/pim_cmd.c:1480,1
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_cmd.c:1482,1
    - Dst: yang_is_last_list_dnode
      Src: /src/frr/pimd/pim_cmd.c:1484,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:1489,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:1490,1
    - Dst: yang_dnode_exists
      Src: /src/frr/pimd/pim_cmd.c:1491,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:1495,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1498,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1507,1
    - Dst: clear_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1512,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1517,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1527,1
    - Dst: clear_igmp_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1532,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1537,1
    - Dst: pim_cmd_lookup
      Src: /src/frr/pimd/pim_cmd.c:1546,1
    - Dst: clear_pim_statistics
      Src: /src/frr/pimd/pim_cmd.c:1551,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1556,1
    - Dst: pim_cmd_lookup
      Src: /src/frr/pimd/pim_cmd.c:1564,1
    - Dst: clear_mroute
      Src: /src/frr/pimd/pim_cmd.c:1569,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1574,1
    - Dst: pim_cmd_lookup
      Src: /src/frr/pimd/pim_cmd.c:1583,1
    - Dst: clear_pim_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1588,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1593,1
    - Dst: clear_pim_interface_traffic
      Src: /src/frr/pimd/pim_cmd.c:1603,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1606,1
    - Dst: pim_cmd_lookup
      Src: /src/frr/pimd/pim_cmd.c:1615,1
    - Dst: pim_scan_oil
      Src: /src/frr/pimd/pim_cmd.c:1620,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1625,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1635,1
    - Dst: pim_bsm_clear
      Src: /src/frr/pimd/pim_cmd.c:1640,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1645,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:1658,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1659,1
    - Dst: CMD_WARNING
      Src: /src/frr/pimd/pim_cmd.c:1662,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:1664,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:1665,1
    - Dst: igmp_show_interfaces_single
      Src: /src/frr/pimd/pim_cmd.c:1666,1
    - Dst: igmp_show_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1668,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1673,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:1686,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1691,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:1692,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1695,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1696,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1699,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:1700,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:1701,1
    - Dst: igmp_show_interfaces_single
      Src: /src/frr/pimd/pim_cmd.c:1702,1
    - Dst: igmp_show_interfaces
      Src: /src/frr/pimd/pim_cmd.c:1705,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1708,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1713,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:1724,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1725,1
    - Dst: igmp_show_interface_join
      Src: /src/frr/pimd/pim_cmd.c:1730,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1735,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:1745,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1750,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:1751,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1754,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1755,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1758,1
    - Dst: igmp_show_interface_join
      Src: /src/frr/pimd/pim_cmd.c:1759,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1762,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1767,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1781,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1795,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1812,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:1813,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1816,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1817,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1820,1
    - Dst: igmp_show_groups
      Src: /src/frr/pimd/pim_cmd.c:1821,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1824,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1829,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1840,1
    - Dst: igmp_show_group_retransmission
      Src: /src/frr/pimd/pim_cmd.c:1845,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:1850,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1863,1
    - Dst: igmp_show_sources_interface_single
      Src: /src/frr/pimd/pim_cmd.c:1869,1
    - Dst: igmp_show_sources
      Src: /src/frr/pimd/pim_cmd.c:1872,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1877,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1888,1
    - Dst: igmp_show_source_retransmission
      Src: /src/frr/pimd/pim_cmd.c:1893,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1898,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:1911,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:1912,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:1917,1
    - Dst: igmp_show_statistics
      Src: /src/frr/pimd/pim_cmd.c:1918,1
    - Dst: igmp_show_statistics
      Src: /src/frr/pimd/pim_cmd.c:1920,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:1925,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:1935,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1943,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:1945,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:1947,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:1949,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:1950,1
    - Dst: mlag_role2str
      Src: /src/frr/pimd/pim_cmd.c:1951,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:1953,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:1955,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:1956,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:1958,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:1959,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:1962,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1963,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1965,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1967,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1969,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1971,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1973,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1975,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1977,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1979,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1981,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:1983,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:1985,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:1987,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1991,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1994,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:1997,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2000,1
    - Dst: mlag_role2str
      Src: /src/frr/pimd/pim_cmd.c:2001,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:2002,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2004,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_cmd.c:2005,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2007,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2008,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2009,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2013,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2014,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2017,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2020,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2022,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2024,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2030,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2040,1
    - Dst: pim_show_assert
      Src: /src/frr/pimd/pim_cmd.c:2045,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2050,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2060,1
    - Dst: pim_show_assert_internal
      Src: /src/frr/pimd/pim_cmd.c:2065,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2070,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2080,1
    - Dst: pim_show_assert_metric
      Src: /src/frr/pimd/pim_cmd.c:2085,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2090,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2100,1
    - Dst: pim_show_assert_winner_metric
      Src: /src/frr/pimd/pim_cmd.c:2105,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2110,1
    - Dst: pim_show_interface_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2123,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2127,1
    - Dst: pim_show_interface_vrf_all_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2140,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2144,1
    - Dst: pim_show_join_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2156,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2159,1
    - Dst: pim_show_join_vrf_all_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2169,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2172,1
    - Dst: pim_show_jp_agg_list_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2181,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2184,1
    - Dst: pim_show_membership_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2194,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:2209,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2211,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2212,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2216,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2217,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2218,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:2220,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2221,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2222,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2223,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2225,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2226,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2228,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2229,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2230,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2232,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2233,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2234,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2235,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2236,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/pimd/pim_cmd.c:2237,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:2239,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2240,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2245,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2246,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2248,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2250,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2252,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2255,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2256,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2257,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2273,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2275,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd.c:2278,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2281,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2284,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2285,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2291,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2292,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2295,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2296,1
    - Dst: pim_show_mlag_up_entry_detail
      Src: /src/frr/pimd/pim_cmd.c:2299,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:2304,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2316,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2318,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd.c:2322,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2325,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2332,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2334,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:2337,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2339,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2340,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2344,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2345,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2346,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2347,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:2349,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2350,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2352,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2353,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2357,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2358,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2361,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2363,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2364,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2365,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2366,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2367,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/pimd/pim_cmd.c:2368,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:2370,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2371,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2376,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2377,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2379,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2381,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2382,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2385,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2386,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2387,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:2392,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2398,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2399,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2405,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:2419,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2420,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2423,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:2430,1
    - Dst: pim_show_mlag_help_string
      Src: /src/frr/pimd/pim_cmd.c:2436,1
    - Dst: pim_show_mlag_up_detail
      Src: /src/frr/pimd/pim_cmd.c:2439,1
    - Dst: pim_show_mlag_up_vrf
      Src: /src/frr/pimd/pim_cmd.c:2441,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2447,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:2454,1
    - Dst: pim_show_mlag_help_string
      Src: /src/frr/pimd/pim_cmd.c:2456,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:2457,1
    - Dst: pim_show_mlag_up_vrf
      Src: /src/frr/pimd/pim_cmd.c:2458,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2464,1
    - Dst: pim_show_neighbors_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2476,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2479,1
    - Dst: pim_show_neighbors_vrf_all_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2491,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2494,1
    - Dst: pim_show_secondary_helper
      Src: /src/frr/pimd/pim_cmd.c:2503,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2506,1
    - Dst: pim_show_state_helper
      Src: /src/frr/pimd/pim_cmd.c:2518,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2521,1
    - Dst: pim_show_state_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2533,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2536,1
    - Dst: pim_show_upstream_helper
      Src: /src/frr/pimd/pim_cmd.c:2548,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2551,1
    - Dst: pim_show_upstream_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2561,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2564,1
    - Dst: pim_show_channel_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2574,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2577,1
    - Dst: pim_show_upstream_join_desired_helper
      Src: /src/frr/pimd/pim_cmd.c:2587,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2590,1
    - Dst: pim_show_upstream_rpf_helper
      Src: /src/frr/pimd/pim_cmd.c:2600,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2603,1
    - Dst: pim_show_rp_helper
      Src: /src/frr/pimd/pim_cmd.c:2614,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2618,1
    - Dst: pim_show_rp_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2629,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2633,1
    - Dst: pim_show_rpf_helper
      Src: /src/frr/pimd/pim_cmd.c:2643,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2646,1
    - Dst: pim_show_rpf_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2656,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2659,1
    - Dst: pim_show_nexthop_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2669,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2672,1
    - Dst: pim_show_nexthop_lookup_cmd_helper
      Src: /src/frr/pimd/pim_cmd.c:2683,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2686,1
    - Dst: pim_show_interface_traffic_helper
      Src: /src/frr/pimd/pim_cmd.c:2698,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2701,1
    - Dst: pim_show_bsm_db_helper
      Src: /src/frr/pimd/pim_cmd.c:2711,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2714,1
    - Dst: pim_show_group_rp_mappings_info_helper
      Src: /src/frr/pimd/pim_cmd.c:2724,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2727,1
    - Dst: pim_show_statistics_helper
      Src: /src/frr/pimd/pim_cmd.c:2739,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2742,1
    - Dst: pim_show_multicast_helper
      Src: /src/frr/pimd/pim_cmd.c:2750,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2753,1
    - Dst: pim_show_multicast_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2761,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2764,1
    - Dst: pim_show_multicast_count_helper
      Src: /src/frr/pimd/pim_cmd.c:2774,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2777,1
    - Dst: pim_show_multicast_count_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2787,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2790,1
    - Dst: pim_show_mroute_helper
      Src: /src/frr/pimd/pim_cmd.c:2802,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2805,1
    - Dst: pim_show_mroute_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2815,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2818,1
    - Dst: clear_ip_mroute_count_command
      Src: /src/frr/pimd/pim_cmd.c:2827,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2830,1
    - Dst: pim_show_mroute_count_helper
      Src: /src/frr/pimd/pim_cmd.c:2840,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2843,1
    - Dst: pim_show_mroute_count_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2853,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2856,1
    - Dst: pim_show_mroute_summary_helper
      Src: /src/frr/pimd/pim_cmd.c:2866,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:2869,1
    - Dst: pim_show_mroute_summary_vrf_all_helper
      Src: /src/frr/pimd/pim_cmd.c:2879,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2882,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2892,1
    - Dst: memset
      Src: /src/frr/pimd/pim_cmd.c:2901,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:2902,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:2904,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2906,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_cmd.c:2907,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_cmd.c:2911,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2912,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2918,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2921,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2935,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:2941,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:2943,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:2950,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:2953,1
    - Dst: pim_socket_getsockname
      Src: /src/frr/pimd/pim_cmd.c:2953,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2955,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:2960,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:2962,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2965,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_cmd.c:2966,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2971,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2980,1
    - Dst: show_ssmpingd
      Src: /src/frr/pimd/pim_cmd.c:2985,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2989,1
    - Dst: pim_process_spt_switchover_infinity_cmd
      Src: /src/frr/pimd/pim_cmd.c:2997,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3000,1
    - Dst: pim_process_spt_switchover_prefixlist_cmd
      Src: /src/frr/pimd/pim_cmd.c:3010,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3013,1
    - Dst: pim_process_no_spt_switchover_cmd
      Src: /src/frr/pimd/pim_cmd.c:3022,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3025,1
    - Dst: pim_process_no_spt_switchover_cmd
      Src: /src/frr/pimd/pim_cmd.c:3036,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3039,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3051,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3055,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3058,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3062,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3065,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3068,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3071,1
    - Dst: pim_process_join_prune_cmd
      Src: /src/frr/pimd/pim_cmd.c:3079,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3082,1
    - Dst: pim_process_no_join_prune_cmd
      Src: /src/frr/pimd/pim_cmd.c:3091,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3094,1
    - Dst: pim_process_register_suppress_cmd
      Src: /src/frr/pimd/pim_cmd.c:3102,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3105,1
    - Dst: pim_process_no_register_suppress_cmd
      Src: /src/frr/pimd/pim_cmd.c:3114,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3117,1
    - Dst: pim_process_rp_kat_cmd
      Src: /src/frr/pimd/pim_cmd.c:3126,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3129,1
    - Dst: pim_process_no_rp_kat_cmd
      Src: /src/frr/pimd/pim_cmd.c:3139,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3142,1
    - Dst: pim_process_keepalivetimer_cmd
      Src: /src/frr/pimd/pim_cmd.c:3150,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3153,1
    - Dst: pim_process_no_keepalivetimer_cmd
      Src: /src/frr/pimd/pim_cmd.c:3162,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3165,1
    - Dst: pim_process_pim_packet_cmd
      Src: /src/frr/pimd/pim_cmd.c:3173,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3176,1
    - Dst: pim_process_no_pim_packet_cmd
      Src: /src/frr/pimd/pim_cmd.c:3185,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3188,1
    - Dst: PIM_DECLVAR_CONTEXT_VRF
      Src: /src/frr/pimd/pim_cmd.c:3196,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3202,1
    - Dst: PIM_DECLVAR_CONTEXT_VRF
      Src: /src/frr/pimd/pim_cmd.c:3211,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3217,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3227,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3231,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3234,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3237,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3240,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3243,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3254,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3258,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3261,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3264,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3267,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3270,1
    - Dst: pim_process_rp_cmd
      Src: /src/frr/pimd/pim_cmd.c:3281,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3284,1
    - Dst: pim_process_rp_plist_cmd
      Src: /src/frr/pimd/pim_cmd.c:3294,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3297,1
    - Dst: pim_process_no_rp_cmd
      Src: /src/frr/pimd/pim_cmd.c:3309,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3312,1
    - Dst: pim_process_no_rp_plist_cmd
      Src: /src/frr/pimd/pim_cmd.c:3323,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3326,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3338,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3342,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3344,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3346,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3348,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3351,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3363,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3367,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3370,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3372,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3374,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3377,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3392,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3396,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3399,1
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_cmd.c:3400,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3404,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_cmd.c:3410,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:3412,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3413,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3416,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3419,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3424,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:3435,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:3436,1
    - Dst: ip_pim_ssm_show_group_range
      Src: /src/frr/pimd/pim_cmd.c:3441,1
    - Dst: ip_pim_ssm_show_group_type
      Src: /src/frr/pimd/pim_cmd.c:3446,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:3454,1
    - Dst: pim_is_group_224_4
      Src: /src/frr/pimd/pim_cmd.c:3458,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_cmd.c:3460,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:3467,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:3468,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:3469,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3471,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3474,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:3486,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:3487,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:3492,1
    - Dst: ip_pim_ssm_show_group_type
      Src: /src/frr/pimd/pim_cmd.c:3493,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3498,1
    - Dst: pim_show_bsr_helper
      Src: /src/frr/pimd/pim_cmd.c:3508,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3511,1
    - Dst: pim_process_ssmpingd_cmd
      Src: /src/frr/pimd/pim_cmd.c:3521,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3524,1
    - Dst: pim_process_ssmpingd_cmd
      Src: /src/frr/pimd/pim_cmd.c:3535,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3538,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3548,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3552,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3554,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3556,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3557,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3560,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3571,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3575,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3577,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3579,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3581,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3584,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3596,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3600,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3602,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3603,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3606,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3609,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3610,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3612,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3615,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3627,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3631,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3634,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3637,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3639,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3642,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3648,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3650,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3654,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3665,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3670,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd.c:3675,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3679,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3680,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd.c:3682,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3683,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3685,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3687,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3691,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3695,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:3712,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3713,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3720,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3723,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3725,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3728,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:3746,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3747,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3754,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3757,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3759,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3762,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd.c:3773,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3777,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd.c:3780,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3781,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3785,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3788,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3792,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3801,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3803,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3807,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3815,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3817,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3820,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3824,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3833,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3835,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3839,1
    - Dst: gm_process_query_max_response_time_cmd
      Src: /src/frr/pimd/pim_cmd.c:3847,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3850,1
    - Dst: gm_process_no_query_max_response_time_cmd
      Src: /src/frr/pimd/pim_cmd.c:3859,1
    - Dst: DEFUN_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:3862,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd.c:3873,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3877,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd.c:3880,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3881,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3885,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3888,1
    - Dst: DEFUN_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:3892,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3901,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3904,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3908,1
    - Dst: gm_process_last_member_query_count_cmd
      Src: /src/frr/pimd/pim_cmd.c:3916,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3919,1
    - Dst: gm_process_no_last_member_query_count_cmd
      Src: /src/frr/pimd/pim_cmd.c:3928,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3931,1
    - Dst: gm_process_last_member_query_interval_cmd
      Src: /src/frr/pimd/pim_cmd.c:3939,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3942,1
    - Dst: gm_process_no_last_member_query_interval_cmd
      Src: /src/frr/pimd/pim_cmd.c:3951,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3954,1
    - Dst: pim_process_ip_pim_drprio_cmd
      Src: /src/frr/pimd/pim_cmd.c:3964,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3967,1
    - Dst: pim_process_no_ip_pim_drprio_cmd
      Src: /src/frr/pimd/pim_cmd.c:3976,1
    - Dst: DEFPY_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:3979,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/pimd/pim_cmd.c:3989,1
    - Dst: atoi
      Src: /src/frr/pimd/pim_cmd.c:4003,1
    - Dst: igmp_send_query_on_intf
      Src: /src/frr/pimd/pim_cmd.c:4005,1
    CyclomaticComplexity: 74
    EdgeCount: 74
    ICount: 416
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4008
      start: 1129
    functionDepth: 10
    functionLinenumber: 1129
    functionLinenumberEnd: 4008
    functionName: igmp_show_group_retransmission
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - pim_process_no_join_prune_cmd
    - pim_show_mlag_up_vrf
    - clear_mroute
    - igmp_show_group_retransmission
    - ntohs
    - pim_show_multicast_count_vrf_all_helper
    - json_object_boolean_false_add
    - pim_show_mroute_summary_vrf_all_helper
    - strlcat
    - snprintf
    - pim_show_multicast_count_helper
    - memset
    - pim_process_no_pim_packet_cmd
    - if
    - for
    - gm_process_query_max_response_time_cmd
    - pim_if_addr_del_all_igmp
    - pim_process_no_rp_plist_cmd
    - DEFPY_HIDDEN
    - inet_pton
    - gm_process_last_member_query_count_cmd
    - yang_dnode_exists
    - argv_find
    - pim_process_ssmpingd_cmd
    - json_object_new_object
    - snprintfrr
    - pim_scan_oil
    - pim_show_group_rp_mappings_info_helper
    - pim_show_join_vrf_all_cmd_helper
    - pim_show_rp_vrf_all_helper
    - pim_inet4_dump
    - pim_show_state_vrf_all_helper
    - igmp_sources_print
    - yang_dnode_get_bool
    - pim_process_pim_packet_cmd
    - pim_show_assert_winner_metric
    - clear_pim_interface_traffic
    - use_json
    - CMD_WARNING
    - pim_show_mlag_up_entry_detail
    - pim_show_neighbors_vrf_all_cmd_helper
    - pim_cmd_lookup_vrf
    - pim_show_multicast_helper
    - pim_show_bsm_db_helper
    - find_group_by_addr
    - DEFPY
    - ip_pim_ssm_show_group_type
    - pim_show_interface_vrf_all_cmd_helper
    - pim_show_join_cmd_helper
    - pim_is_grp_ssm
    - pim_process_ip_pim_drprio_cmd
    - pim_show_rpf_vrf_all_helper
    - pim_show_mlag_up_detail
    - pim_if_addr_add_all
    - IGMP_SOURCE_TEST_FORWARDING
    - clear_pim_statistics
    - igmp_show_interfaces_single
    - inet_ntop
    - yang_dnode_getf
    - pim_process_no_rp_kat_cmd
    - pim_show_mroute_vrf_all_helper
    - DEFUN
    - pim_bsm_clear
    - igmp_show_groups
    - show_ssmpingd
    - yang_dnode_get
    - pim_up_mlag_local_cost
    - pim_show_rp_helper
    - pim_process_no_spt_switchover_cmd
    - nb_cli_apply_changes
    - atoi
    - pim_process_rp_cmd
    - json_object_new_array
    - pim_show_upstream_rpf_helper
    - pim_time_uptime
    - pim_nexthop_lookup
    - strcmp
    - clear_interfaces
    - pim_show_state_helper
    - pim_show_interface_traffic_helper
    - pim_show_assert
    - pim_show_mlag_help_string
    - igmp_send_query_on_intf
    - json_object_object_add
    - pim_igmp_sock_lookup_ifaddr
    - RB_FOREACH
    - vty_json
    - pim_show_bsr_helper
    - pim_cmd_lookup
    - pim_process_rp_plist_cmd
    - gm_process_no_last_member_query_interval_cmd
    - clear_pim_interfaces
    - pim_show_membership_cmd_helper
    - json_object_string_add
    - igmp_show_interfaces
    - pim_show_upstream_helper
    - pim_show_mroute_count_vrf_all_helper
    - pim_cli_legacy_mesh_group_behavior
    - VTY_DECLVAR_CONTEXT
    - pim_process_no_ip_pim_drprio_cmd
    - FOR_ALL_INTERFACES
    - igmp_show_statistics
    - pim_time_monotonic_sec
    - pim_is_group_224_4
    - pim_process_register_suppress_cmd
    - PIM_DECLVAR_CONTEXT_VRF
    - vty_out
    - strlcpy
    - pim_process_no_keepalivetimer_cmd
    - nb_cli_enqueue_change
    - json_object_int_add
    - pim_show_mroute_helper
    - clear_igmp_interfaces
    - pim_show_assert_internal
    - pim_show_multicast_vrf_all_helper
    - pim_process_keepalivetimer_cmd
    - pim_show_upstream_join_desired_helper
    - json_object_array_add
    - gm_process_no_query_max_response_time_cmd
    - pim_show_neighbors_cmd_helper
    - json_object_object_get_ex
    - json_object_boolean_true_add
    - pim_show_channel_cmd_helper
    - pim_up_mlag_is_local
    - igmp_show_interface_join
    - pim_show_rpf_helper
    - gm_process_no_last_member_query_count_cmd
    - PIM_GET_PIM_INTERFACE
    - pim_show_statistics_helper
    - frr_each
    - pim_show_upstream_vrf_all_helper
    - pim_show_mroute_count_helper
    - pim_process_spt_switchover_prefixlist_cmd
    - yang_dnode_get_string
    - pim_up_mlag_peer_cost
    - yang_is_last_list_dnode
    - pim_show_jp_agg_list_cmd_helper
    - ALL_LIST_ELEMENTS_RO
    - pim_process_rp_kat_cmd
    - pim_cli_get_vrf_name
    - igmp_show_sources_interface_single
    - igmp_show_sources
    - safe_strerror
    - pim_process_join_prune_cmd
    - ip_pim_ssm_show_group_range
    - pim_socket_getsockname
    - pim_process_no_rp_cmd
    - gm_process_last_member_query_interval_cmd
    - pim_process_spt_switchover_infinity_cmd
    - igmp_show_source_retransmission
    - pim_show_assert_metric
    - pim_time_timer_to_mmss
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - mlag_role2str
    - json_object_new_string
    - pim_show_nexthop_cmd_helper
    - pim_show_nexthop_lookup_cmd_helper
    - clear_ip_mroute_count_command
    - if_lookup_by_name
    - pim_process_no_register_suppress_cmd
    - pim_show_mroute_summary_helper
    - pim_show_secondary_helper
    - DEFUN_HIDDEN
    - pim_show_interface_cmd_helper
    - igmp_source_json_helper
    linkageType: ''
    returnType: void
    signature: "void igmp_show_group_retransmission(struct pim_instance *pim,\n\t\t\t\t\t
      \  struct vty *vty)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:2209,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2211,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2212,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2216,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2217,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2218,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:2220,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2221,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2222,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2223,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2225,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2226,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2228,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2229,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2230,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2232,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2233,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2234,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2235,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2236,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/pimd/pim_cmd.c:2237,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:2239,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2240,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2245,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2246,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2248,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2250,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2252,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2255,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2256,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2257,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 6
    argNames:
    - vrf
    - vty
    - up
    - src_str
    - grp_str
    - json
    argTypes:
    - struct vrf*
    - struct vty*
    - struct pim_upstream*
    - char*
    - char*
    - json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2260
      start: 2197
    functionDepth: 2
    functionLinenumber: 2197
    functionLinenumberEnd: 2260
    functionName: pim_show_mlag_up_entry_detail
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_new_array
    - strlcat
    - json_object_array_add
    - vty_out
    - json_object_boolean_false_add
    - json_object_object_get_ex
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - pim_up_mlag_is_local
    - json_object_new_string
    - pim_up_mlag_local_cost
    - pim_up_mlag_peer_cost
    linkageType: ''
    returnType: void
    signature: "void pim_show_mlag_up_entry_detail(struct vrf *vrf,\n\t\t\t\t\t  struct
      vty *vty,\n\t\t\t\t\t  struct pim_upstream *up,\n\t\t\t\t\t  char *src_str,
      char *grp_str,\n\t\t\t\t\t  json_object *json)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2273,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2275,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd.c:2278,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2281,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2284,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2285,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2291,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2292,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2295,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:2296,1
    - Dst: pim_show_mlag_up_entry_detail
      Src: /src/frr/pimd/pim_cmd.c:2299,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:2304,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 5
    argNames:
    - vrf
    - vty
    - src_or_group
    - group
    - uj
    argTypes:
    - struct vrf*
    - struct vty*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2305
      start: 2262
    functionDepth: 7
    functionLinenumber: 2262
    functionLinenumberEnd: 2305
    functionName: pim_show_mlag_up_detail
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - pim_show_mlag_up_entry_detail
    - vty_out
    - frr_each
    - strcmp
    - snprintfrr
    - pim_up_mlag_is_local
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void pim_show_mlag_up_detail(struct vrf *vrf,\n\t\t\t\t    struct
      vty *vty, const char *src_or_group,\n\t\t\t\t    const char *group, bool uj)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2316,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2318,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_cmd.c:2322,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2325,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2332,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:2334,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:2337,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2339,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2340,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:2344,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2345,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2346,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:2347,1
    - Dst: json_object_new_array
      Src: /src/frr/pimd/pim_cmd.c:2349,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2350,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2352,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2353,1
    - Dst: json_object_array_add
      Src: /src/frr/pimd/pim_cmd.c:2357,1
    - Dst: json_object_new_string
      Src: /src/frr/pimd/pim_cmd.c:2358,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2361,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2363,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2364,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:2365,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2366,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2367,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/pimd/pim_cmd.c:2368,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:2370,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:2371,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_cmd.c:2376,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2377,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2379,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:2381,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2382,1
    - Dst: pim_up_mlag_local_cost
      Src: /src/frr/pimd/pim_cmd.c:2385,1
    - Dst: pim_up_mlag_peer_cost
      Src: /src/frr/pimd/pim_cmd.c:2386,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_cmd.c:2387,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:2392,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 3
    argNames:
    - vrf
    - vty
    - uj
    argTypes:
    - struct vrf*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2393
      start: 2307
    functionDepth: 7
    functionLinenumber: 2307
    functionLinenumberEnd: 2393
    functionName: pim_show_mlag_up_vrf
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - frr_each
    - json_object_string_add
    - json_object_boolean_false_add
    - pim_up_mlag_peer_cost
    - strlcat
    - vty_out
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - json_object_int_add
    - json_object_new_string
    - pim_up_mlag_local_cost
    - json_object_new_object
    - json_object_new_array
    - json_object_array_add
    - snprintfrr
    - json_object_object_get_ex
    - json_object_boolean_true_add
    - pim_up_mlag_is_local
    - json_object_object_add
    - vty_json
    linkageType: ''
    returnType: void
    signature: void pim_show_mlag_up_vrf(struct vrf *vrf, struct vty *vty, bool uj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2398,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - vty
    - uj
    argTypes:
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2402
      start: 2395
    functionDepth: 2
    functionLinenumber: 2395
    functionLinenumberEnd: 2402
    functionName: pim_show_mlag_help_string
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: void pim_show_mlag_help_string(struct vty *vty, bool uj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2935,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:2941,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:2943,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:2950,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:2953,1
    - Dst: pim_socket_getsockname
      Src: /src/frr/pimd/pim_cmd.c:2953,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2955,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:2960,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:2962,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:2965,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_cmd.c:2966,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2971,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:2980,1
    - Dst: show_ssmpingd
      Src: /src/frr/pimd/pim_cmd.c:2985,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:2989,1
    - Dst: pim_process_spt_switchover_infinity_cmd
      Src: /src/frr/pimd/pim_cmd.c:2997,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3000,1
    - Dst: pim_process_spt_switchover_prefixlist_cmd
      Src: /src/frr/pimd/pim_cmd.c:3010,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3013,1
    - Dst: pim_process_no_spt_switchover_cmd
      Src: /src/frr/pimd/pim_cmd.c:3022,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3025,1
    - Dst: pim_process_no_spt_switchover_cmd
      Src: /src/frr/pimd/pim_cmd.c:3036,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3039,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3051,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3055,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3058,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3062,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3065,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3068,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3071,1
    - Dst: pim_process_join_prune_cmd
      Src: /src/frr/pimd/pim_cmd.c:3079,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3082,1
    - Dst: pim_process_no_join_prune_cmd
      Src: /src/frr/pimd/pim_cmd.c:3091,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3094,1
    - Dst: pim_process_register_suppress_cmd
      Src: /src/frr/pimd/pim_cmd.c:3102,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3105,1
    - Dst: pim_process_no_register_suppress_cmd
      Src: /src/frr/pimd/pim_cmd.c:3114,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3117,1
    - Dst: pim_process_rp_kat_cmd
      Src: /src/frr/pimd/pim_cmd.c:3126,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3129,1
    - Dst: pim_process_no_rp_kat_cmd
      Src: /src/frr/pimd/pim_cmd.c:3139,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3142,1
    - Dst: pim_process_keepalivetimer_cmd
      Src: /src/frr/pimd/pim_cmd.c:3150,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3153,1
    - Dst: pim_process_no_keepalivetimer_cmd
      Src: /src/frr/pimd/pim_cmd.c:3162,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3165,1
    - Dst: pim_process_pim_packet_cmd
      Src: /src/frr/pimd/pim_cmd.c:3173,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3176,1
    - Dst: pim_process_no_pim_packet_cmd
      Src: /src/frr/pimd/pim_cmd.c:3185,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3188,1
    - Dst: PIM_DECLVAR_CONTEXT_VRF
      Src: /src/frr/pimd/pim_cmd.c:3196,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3202,1
    - Dst: PIM_DECLVAR_CONTEXT_VRF
      Src: /src/frr/pimd/pim_cmd.c:3211,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3217,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3227,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3231,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3234,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3237,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3240,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3243,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3254,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3258,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3261,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3264,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3267,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3270,1
    - Dst: pim_process_rp_cmd
      Src: /src/frr/pimd/pim_cmd.c:3281,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3284,1
    - Dst: pim_process_rp_plist_cmd
      Src: /src/frr/pimd/pim_cmd.c:3294,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3297,1
    - Dst: pim_process_no_rp_cmd
      Src: /src/frr/pimd/pim_cmd.c:3309,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3312,1
    - Dst: pim_process_no_rp_plist_cmd
      Src: /src/frr/pimd/pim_cmd.c:3323,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3326,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3338,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3342,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3344,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3346,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3348,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3351,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3363,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3367,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3370,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3372,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3374,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3377,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3392,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3396,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3399,1
    - Dst: yang_dnode_get
      Src: /src/frr/pimd/pim_cmd.c:3400,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3404,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/pimd/pim_cmd.c:3410,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:3412,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3413,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3416,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3419,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3424,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:3435,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:3436,1
    - Dst: ip_pim_ssm_show_group_range
      Src: /src/frr/pimd/pim_cmd.c:3441,1
    - Dst: ip_pim_ssm_show_group_type
      Src: /src/frr/pimd/pim_cmd.c:3446,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:3454,1
    - Dst: pim_is_group_224_4
      Src: /src/frr/pimd/pim_cmd.c:3458,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_cmd.c:3460,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:3467,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:3468,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:3469,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3471,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3474,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:3486,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:3487,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:3492,1
    - Dst: ip_pim_ssm_show_group_type
      Src: /src/frr/pimd/pim_cmd.c:3493,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3498,1
    - Dst: pim_show_bsr_helper
      Src: /src/frr/pimd/pim_cmd.c:3508,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3511,1
    - Dst: pim_process_ssmpingd_cmd
      Src: /src/frr/pimd/pim_cmd.c:3521,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3524,1
    - Dst: pim_process_ssmpingd_cmd
      Src: /src/frr/pimd/pim_cmd.c:3535,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3538,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3548,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3552,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3554,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3556,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3557,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3560,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3571,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3575,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3577,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3579,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3581,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3584,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3596,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3600,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3602,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3603,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3606,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3609,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3610,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3612,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3615,1
    - Dst: pim_cli_get_vrf_name
      Src: /src/frr/pimd/pim_cmd.c:3627,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3631,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:3634,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3637,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3639,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3642,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3648,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3650,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3654,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3665,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3670,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd.c:3675,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3679,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3680,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd.c:3682,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3683,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3685,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3687,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3691,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3695,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:3712,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3713,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3720,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3723,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3725,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3728,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:3746,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:3747,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:3754,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3757,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3759,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3762,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd.c:3773,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3777,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd.c:3780,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3781,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3785,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3788,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3792,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3801,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3803,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3807,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3815,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3817,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3820,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3824,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3833,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3835,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3839,1
    - Dst: gm_process_query_max_response_time_cmd
      Src: /src/frr/pimd/pim_cmd.c:3847,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3850,1
    - Dst: gm_process_no_query_max_response_time_cmd
      Src: /src/frr/pimd/pim_cmd.c:3859,1
    - Dst: DEFUN_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:3862,1
    - Dst: yang_dnode_getf
      Src: /src/frr/pimd/pim_cmd.c:3873,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3877,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/pimd/pim_cmd.c:3880,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3881,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3885,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3888,1
    - Dst: DEFUN_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:3892,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:3901,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:3904,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3908,1
    - Dst: gm_process_last_member_query_count_cmd
      Src: /src/frr/pimd/pim_cmd.c:3916,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3919,1
    - Dst: gm_process_no_last_member_query_count_cmd
      Src: /src/frr/pimd/pim_cmd.c:3928,1
    - Dst: DEFPY
      Src: /src/frr/pimd/pim_cmd.c:3931,1
    - Dst: gm_process_last_member_query_interval_cmd
      Src: /src/frr/pimd/pim_cmd.c:3939,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3942,1
    - Dst: gm_process_no_last_member_query_interval_cmd
      Src: /src/frr/pimd/pim_cmd.c:3951,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3954,1
    - Dst: pim_process_ip_pim_drprio_cmd
      Src: /src/frr/pimd/pim_cmd.c:3964,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:3967,1
    - Dst: pim_process_no_ip_pim_drprio_cmd
      Src: /src/frr/pimd/pim_cmd.c:3976,1
    - Dst: DEFPY_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:3979,1
    - Dst: VTY_DECLVAR_CONTEXT
      Src: /src/frr/pimd/pim_cmd.c:3989,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - pim
    - vty
    argTypes:
    - struct pim_instance*
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3997
      start: 2929
    functionDepth: 8
    functionLinenumber: 2929
    functionLinenumberEnd: 3997
    functionName: show_ssmpingd
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 2
    functionsReached:
    - yang_dnode_get_bool
    - pim_process_no_join_prune_cmd
    - pim_process_pim_packet_cmd
    - pim_process_rp_plist_cmd
    - use_json
    - gm_process_no_last_member_query_interval_cmd
    - pim_cmd_lookup_vrf
    - ntohs
    - pim_process_spt_switchover_prefixlist_cmd
    - yang_dnode_get_string
    - json_object_string_add
    - DEFPY
    - ip_pim_ssm_show_group_type
    - strlcat
    - pim_is_grp_ssm
    - pim_process_ip_pim_drprio_cmd
    - snprintf
    - VTY_DECLVAR_CONTEXT
    - ALL_LIST_ELEMENTS_RO
    - pim_process_rp_kat_cmd
    - pim_cli_get_vrf_name
    - pim_process_no_ip_pim_drprio_cmd
    - yang_dnode_getf
    - pim_process_no_rp_kat_cmd
    - pim_process_join_prune_cmd
    - pim_time_monotonic_sec
    - pim_process_no_pim_packet_cmd
    - if
    - pim_is_group_224_4
    - ip_pim_ssm_show_group_range
    - pim_socket_getsockname
    - pim_process_register_suppress_cmd
    - pim_process_no_rp_cmd
    - gm_process_query_max_response_time_cmd
    - gm_process_last_member_query_interval_cmd
    - DEFUN
    - pim_process_spt_switchover_infinity_cmd
    - PIM_DECLVAR_CONTEXT_VRF
    - vty_out
    - show_ssmpingd
    - pim_process_no_rp_plist_cmd
    - yang_dnode_get
    - pim_process_no_keepalivetimer_cmd
    - DEFPY_HIDDEN
    - nb_cli_enqueue_change
    - inet_pton
    - pim_process_keepalivetimer_cmd
    - gm_process_last_member_query_count_cmd
    - pim_process_no_spt_switchover_cmd
    - nb_cli_apply_changes
    - argv_find
    - pim_process_rp_cmd
    - json_object_new_object
    - pim_process_ssmpingd_cmd
    - pim_process_no_register_suppress_cmd
    - pim_time_uptime
    - gm_process_no_query_max_response_time_cmd
    - strcmp
    - DEFUN_HIDDEN
    - pim_inet4_dump
    - gm_process_no_last_member_query_count_cmd
    - pim_show_bsr_helper
    - vty_json
    linkageType: ''
    returnType: void
    signature: void show_ssmpingd(struct pim_instance *pim, struct vty *vty)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5325,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5330,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5331,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5333,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5335,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5336,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5337,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:5340,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5341,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:5342,1
    - Dst: pim_msdp_state_dump
      Src: /src/frr/pimd/pim_cmd.c:5347,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5349,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5350,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5351,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5353,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5354,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5357,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5359,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5364,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:5367,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:5377,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:5380,1
    - Dst: SLIST_EMPTY
      Src: /src/frr/pimd/pim_cmd.c:5389,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5391,1
    - Dst: CMD_SUCCESS
      Src: /src/frr/pimd/pim_cmd.c:5393,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5397,1
    - Dst: SLIST_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:5399,1
    - Dst: ip_msdp_show_mesh_group
      Src: /src/frr/pimd/pim_cmd.c:5400,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5403,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:5408,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:5418,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5425,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:5427,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5429,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5430,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5432,1
    - Dst: SLIST_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:5435,1
    - Dst: ip_msdp_show_mesh_group
      Src: /src/frr/pimd/pim_cmd.c:5436,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5440,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - vty
    - mg
    - json
    argTypes:
    - struct vty*
    - struct pim_msdp_mg*
    - struct json_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5444
      start: 5312
    functionDepth: 6
    functionLinenumber: 5312
    functionLinenumberEnd: 5444
    functionName: ip_msdp_show_mesh_group
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - DEFUN
    - use_json
    - vty_out
    - SLIST_EMPTY
    - pim_msdp_state_dump
    - SLIST_FOREACH
    - pim_cmd_lookup_vrf
    - ALL_LIST_ELEMENTS_RO
    - CMD_SUCCESS
    - RB_FOREACH
    - ip_msdp_show_mesh_group
    - json_object_string_add
    - json_object_object_add
    - if
    - pim_inet4_dump
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void ip_msdp_show_mesh_group(struct vty *vty, struct pim_msdp_mg *mg,\n\t\t\t\t
      \   struct json_object *json)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5461,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5463,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:5467,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:5469,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:5470,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5473,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5475,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5476,1
    - Dst: pim_msdp_state_dump
      Src: /src/frr/pimd/pim_cmd.c:5478,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5480,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5481,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5482,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5483,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5484,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5485,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5486,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5488,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5494,1
    - Dst: ip_msdp_show_peers_detail
      Src: /src/frr/pimd/pim_cmd.c:5497,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5514,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:5517,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5518,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:5519,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:5519,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:5523,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:5524,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5527,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5529,1
    - Dst: pim_msdp_state_dump
      Src: /src/frr/pimd/pim_cmd.c:5531,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:5532,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:5534,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:5536,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5540,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5541,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5542,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5544,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5547,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5548,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5549,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5551,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5553,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5555,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5557,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5559,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5561,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5562,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5563,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5564,1
    - Dst: json_object_int_add
      Src: /src/frr/pimd/pim_cmd.c:5565,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5566,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5568,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5569,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5571,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5573,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5574,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5576,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5577,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5578,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5579,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5581,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5583,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5585,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5587,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5588,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5590,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5592,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5594,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5599,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:5602,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:5614,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:5616,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:5623,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:5625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5634
      start: 5446
    functionDepth: 6
    functionLinenumber: 5446
    functionLinenumberEnd: 5634
    functionName: ip_msdp_show_peers
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - ip_msdp_show_peers_detail
    - use_json
    - pim_cmd_lookup_vrf
    - json_object_string_add
    - ALL_LIST_ELEMENTS_RO
    - pim_time_monotonic_sec
    - DEFUN
    - vty_out
    - pim_msdp_state_dump
    - strlcpy
    - json_object_int_add
    - argv_find
    - json_object_new_object
    - pim_time_uptime
    - pim_time_timer_to_hhmmss
    - strcmp
    - json_object_object_add
    - pim_inet4_dump
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void ip_msdp_show_peers(struct pim_instance *pim, struct vty *vty,\n\t\t\t
      \      bool uj)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5690,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5692,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:5696,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:5697,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:5698,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:5699,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5700,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5702,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5704,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5707,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5708,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5711,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5713,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5719,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5721,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:5724,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5727,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5728,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5732,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5733,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5734,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5735,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5736,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5737,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5738,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5739,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5741,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5748,1
    - Dst: ip_msdp_show_sa_entry_detail
      Src: /src/frr/pimd/pim_cmd.c:5751,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_cmd.c:5766,1
    - Dst: pim_time_uptime
      Src: /src/frr/pimd/pim_cmd.c:5767,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5769,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_cmd.c:5770,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5772,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5774,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5777,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5778,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5779,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5782,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_cmd.c:5784,1
    - Dst: pim_time_timer_to_hhmmss
      Src: /src/frr/pimd/pim_cmd.c:5786,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:5789,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5792,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5793,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5796,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5797,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5798,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5799,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5800,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5801,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5802,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:5803,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:5804,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5806,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5807,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5808,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5809,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5810,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5811,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5812,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5813,1
    - Dst: ip_msdp_show_sa_detail
      Src: /src/frr/pimd/pim_cmd.c:5817,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5825,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:5828,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5832,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5833,1
    - Dst: ip_msdp_show_sa_entry_detail
      Src: /src/frr/pimd/pim_cmd.c:5835,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5840,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:5843,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:5854,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:5856,1
    - Dst: ip_msdp_show_sa_detail
      Src: /src/frr/pimd/pim_cmd.c:5861,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:5866,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:5877,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:5883,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5886,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5887,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5890,1
    - Dst: ip_msdp_show_sa_detail
      Src: /src/frr/pimd/pim_cmd.c:5891,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:5894,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5897
      start: 5676
    functionDepth: 7
    functionLinenumber: 5676
    functionLinenumberEnd: 5897
    functionName: ip_msdp_show_sa
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - use_json
    - pim_cmd_lookup_vrf
    - json_object_string_add
    - ip_msdp_show_sa_detail
    - ALL_LIST_ELEMENTS_RO
    - ip_msdp_show_sa_entry_detail
    - RB_FOREACH
    - pim_time_monotonic_sec
    - if
    - DEFUN
    - vty_out
    - strlcpy
    - json_object_new_object
    - pim_time_uptime
    - pim_time_timer_to_hhmmss
    - snprintfrr
    - json_object_object_get_ex
    - json_object_object_add
    - pim_inet4_dump
    - vty_json
    linkageType: ''
    returnType: void
    signature: void ip_msdp_show_sa(struct pim_instance *pim, struct vty *vty, bool
      uj)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5907,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:5910,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5914,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5915,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:5917,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:5917,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:5917,1
    - Dst: ip_msdp_show_sa_entry_detail
      Src: /src/frr/pimd/pim_cmd.c:5918,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5924,1
    - Dst: ip_msdp_show_sa_sg
      Src: /src/frr/pimd/pim_cmd.c:5927,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:5935,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:5938,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5942,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:5943,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:5945,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:5945,1
    - Dst: ip_msdp_show_sa_entry_detail
      Src: /src/frr/pimd/pim_cmd.c:5946,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:5952,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:5955,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:5967,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:5971,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:5976,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:5978,1
    - Dst: ip_msdp_show_sa_sg
      Src: /src/frr/pimd/pim_cmd.c:5983,1
    - Dst: ip_msdp_show_sa_addr
      Src: /src/frr/pimd/pim_cmd.c:5985,1
    - Dst: ip_msdp_show_sa
      Src: /src/frr/pimd/pim_cmd.c:5987,1
    - Dst: DEFUN
      Src: /src/frr/pimd/pim_cmd.c:5992,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:6004,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:6009,1
    - Dst: argv_find
      Src: /src/frr/pimd/pim_cmd.c:6011,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6016,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_cmd.c:6017,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:6018,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:6019,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6020,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6021,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6024,1
    - Dst: ip_msdp_show_sa_sg
      Src: /src/frr/pimd/pim_cmd.c:6027,1
    - Dst: ip_msdp_show_sa_addr
      Src: /src/frr/pimd/pim_cmd.c:6029,1
    - Dst: ip_msdp_show_sa
      Src: /src/frr/pimd/pim_cmd.c:6031,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 4
    argNames:
    - pim
    - vty
    - addr
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6037
      start: 5899
    functionDepth: 8
    functionLinenumber: 5899
    functionLinenumberEnd: 6037
    functionName: ip_msdp_show_sa_addr
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - DEFUN
    - ip_msdp_show_sa
    - use_json
    - vty_out
    - pim_cmd_lookup_vrf
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    - ip_msdp_show_sa_entry_detail
    - snprintfrr
    - RB_FOREACH
    - ip_msdp_show_sa_addr
    - if
    - ip_msdp_show_sa_sg
    - vty_json
    - argv_find
    linkageType: ''
    returnType: void
    signature: "void ip_msdp_show_sa_addr(struct pim_instance *pim, struct vty *vty,\n\t\t\t\t
      const char *addr, bool uj)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_cmd.c:6057,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_cmd.c:6062,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_cmd.c:6063,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:6070,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_cmd.c:6072,1
    - Dst: json_object_object_get_ex
      Src: /src/frr/pimd/pim_cmd.c:6075,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:6078,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:6079,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:6083,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6084,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6085,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6086,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6087,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:6089,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/pimd/pim_cmd.c:6091,1
    - Dst: json_object_object_add
      Src: /src/frr/pimd/pim_cmd.c:6092,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6094,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - vxlan_sg
    - cwd
    argTypes:
    - struct pim_vxlan_sg*
    - struct pim_sg_cache_walk_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6098
      start: 6047
    functionDepth: 7
    functionLinenumber: 6047
    functionLinenumberEnd: 6098
    functionName: pim_show_vxlan_sg_entry
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - pim_vxlan_is_orig_mroute
    - vty_out
    - json_object_object_get_ex
    - pim_addr_cmp
    - snprintfrr
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_object_add
    - json_object_boolean_false_add
    linkageType: ''
    returnType: void
    signature: "void pim_show_vxlan_sg_entry(struct pim_vxlan_sg *vxlan_sg,\n\t\t\t\t
      \   struct pim_sg_cache_walk_data *cwd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_show_vxlan_sg_entry
      Src: /src/frr/pimd/pim_cmd.c:6102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6104
      start: 6100
    functionDepth: 8
    functionLinenumber: 6100
    functionLinenumberEnd: 6104
    functionName: pim_show_vxlan_sg_hash_entry
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - pim_show_vxlan_sg_entry
    linkageType: ''
    returnType: void
    signature: void pim_show_vxlan_sg_hash_entry(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:6113,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6115,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6116,1
    - Dst: memset
      Src: /src/frr/pimd/pim_cmd.c:6120,1
    - Dst: hash_iterate
      Src: /src/frr/pimd/pim_cmd.c:6123,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:6126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6127
      start: 6106
    functionDepth: 4
    functionLinenumber: 6106
    functionLinenumberEnd: 6127
    functionName: pim_show_vxlan_sg
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - memset
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void pim_show_vxlan_sg(struct pim_instance *pim,\n\t\t\t      struct
      vty *vty, bool uj)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_cmd.c:6137,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:6138,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6140,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_cmd.c:6141,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:6146,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6148,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6149,1
    - Dst: hash_iterate
      Src: /src/frr/pimd/pim_cmd.c:6156,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:6159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - pim
    - vty
    - addr_str
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6160
      start: 6129
    functionDepth: 4
    functionLinenumber: 6129
    functionLinenumberEnd: 6160
    functionName: pim_show_vxlan_sg_match_addr
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - memset
    - inet_pton
    - safe_strerror
    - hash_iterate
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void pim_show_vxlan_sg_match_addr(struct pim_instance *pim,\n\t\t\t\t\t
      struct vty *vty, char *addr_str,\n\t\t\t\t\t bool uj)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:6174,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6176,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_cmd.c:6177,1
    - Dst: inet_pton
      Src: /src/frr/pimd/pim_cmd.c:6180,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6182,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_cmd.c:6183,1
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:6188,1
    - Dst: pim_vxlan_sg_find
      Src: /src/frr/pimd/pim_cmd.c:6190,1
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_cmd.c:6195,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6203,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6204,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6205,1
    - Dst: json_object_string_add
      Src: /src/frr/pimd/pim_cmd.c:6206,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/pimd/pim_cmd.c:6208,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/pimd/pim_cmd.c:6210,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6213,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6214,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6215,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6216,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:6222,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 5
    argNames:
    - pim
    - vty
    - src_str
    - grp_str
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - char*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6223
      start: 6162
    functionDepth: 4
    functionLinenumber: 6162
    functionLinenumberEnd: 6223
    functionName: pim_show_vxlan_sg_one
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - vty_out
    - pim_vxlan_is_orig_mroute
    - json_object_boolean_true_add
    - inet_pton
    - safe_strerror
    - json_object_string_add
    - json_object_boolean_false_add
    - pim_vxlan_sg_find
    - vty_json
    linkageType: ''
    returnType: void
    signature: "void pim_show_vxlan_sg_one(struct pim_instance *pim,\n\t\t\t\t  struct
      vty *vty, char *src_str, char *grp_str,\n\t\t\t\t  bool uj)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/pimd/pim_cmd.c:6270,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6272,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6273,1
    - Dst: memset
      Src: /src/frr/pimd/pim_cmd.c:6277,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_cmd.c:6280,1
    - Dst: pim_show_vxlan_sg_entry
      Src: /src/frr/pimd/pim_cmd.c:6281,1
    - Dst: if
      Src: /src/frr/pimd/pim_cmd.c:6283,1
    - Dst: vty_json
      Src: /src/frr/pimd/pim_cmd.c:6284,1
    - Dst: DEFUN_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:6287,1
    - Dst: use_json
      Src: /src/frr/pimd/pim_cmd.c:6297,1
    - Dst: pim_cmd_lookup_vrf
      Src: /src/frr/pimd/pim_cmd.c:6301,1
    - Dst: pim_show_vxlan_sg_work
      Src: /src/frr/pimd/pim_cmd.c:6306,1
    - Dst: DEFUN_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:6311,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:6321,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:6323,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:6325,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:6328,1
    - Dst: DEFUN_HIDDEN
      Src: /src/frr/pimd/pim_cmd.c:6331,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:6356,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:6360,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:6363,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:6366,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:6370,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:6371,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:6374,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:6375,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6379,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:6383,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:6386,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:6390,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:6391,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_cmd.c:6394,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:6395,1
    - Dst: vty_out
      Src: /src/frr/pimd/pim_cmd.c:6399,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_cmd.c:6403,1
    - Dst: strlcat
      Src: /src/frr/pimd/pim_cmd.c:6406,1
    - Dst: nb_cli_enqueue_change
      Src: /src/frr/pimd/pim_cmd.c:6410,1
    - Dst: nb_cli_apply_changes
      Src: /src/frr/pimd/pim_cmd.c:6413,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 3
    argNames:
    - pim
    - vty
    - uj
    argTypes:
    - struct pim_instance*
    - struct vty*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6414
      start: 6261
    functionDepth: 8
    functionLinenumber: 6261
    functionLinenumberEnd: 6414
    functionName: pim_show_vxlan_sg_work
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - strlcat
    - use_json
    - vty_out
    - memset
    - snprintf
    - pim_cmd_lookup_vrf
    - ALL_LIST_ELEMENTS_RO
    - pim_show_vxlan_sg_entry
    - pim_show_vxlan_sg_work
    - DEFUN_HIDDEN
    - nb_cli_enqueue_change
    - strcmp
    - if
    - vty_json
    - nb_cli_apply_changes
    linkageType: ''
    returnType: void
    signature: "void pim_show_vxlan_sg_work(struct pim_instance *pim,\n\t\t\t\t   struct
      vty *vty, bool uj)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmd_init
      Src: /src/frr/pimd/pim_cmd.c:6418,1
    - Dst: install_node
      Src: /src/frr/pimd/pim_cmd.c:6420,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6422,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6424,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6425,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6426,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6427,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6428,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6429,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6430,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6431,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6432,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6433,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6434,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6435,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6436,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6437,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6438,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6439,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6440,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6441,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6442,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6443,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6444,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6445,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6446,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6448,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6449,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6450,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6451,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6452,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6453,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6454,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6455,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6456,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6457,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6458,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6459,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6460,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6461,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6462,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6463,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6464,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6465,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6466,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6467,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6468,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6469,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6470,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6471,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6472,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6473,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6474,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6475,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6476,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6477,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6478,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6479,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6480,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6481,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6482,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6483,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6484,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6485,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6486,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6487,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6488,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6490,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6491,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6492,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6493,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6494,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6495,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6496,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6497,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6499,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6501,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6503,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6505,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6507,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6509,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6511,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6513,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6515,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6516,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6517,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6518,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6519,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6520,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6521,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6522,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6523,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6524,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6525,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6526,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6527,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6528,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6531,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6532,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6534,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6535,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6536,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6537,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6538,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6539,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6540,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6541,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6542,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6543,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6544,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6545,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6546,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6547,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6548,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6549,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6550,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6551,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6552,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6553,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6554,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6555,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6556,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6557,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6558,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6559,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6560,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6561,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6562,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6563,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6564,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6565,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6566,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6567,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6568,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6569,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6570,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6571,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6572,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6573,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6574,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6575,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6576,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6577,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6578,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6579,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6580,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6581,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6582,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6583,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6584,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6585,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6586,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6587,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6588,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6589,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6591,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6592,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6593,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6594,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6595,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6596,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6597,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6598,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6599,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6601,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6603,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6604,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6605,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6606,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6607,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6608,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6609,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6610,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6611,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6612,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6613,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6614,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6615,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6616,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6617,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6618,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6619,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6620,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6621,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6622,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6623,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6624,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6625,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6626,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6627,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6628,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6629,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6630,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6631,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6632,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6633,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6634,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6635,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6636,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6637,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6638,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6639,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6640,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6641,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6642,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6643,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6644,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6645,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6646,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6648,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6649,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6650,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6651,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6652,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6653,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6654,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6655,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6656,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6657,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6658,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6659,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6660,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6661,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6662,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6663,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6664,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6665,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6666,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6667,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6668,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6669,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6670,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6671,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6672,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6673,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6674,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6675,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6676,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6677,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6678,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6679,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6680,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6681,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6682,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6683,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6684,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6685,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6686,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6687,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6688,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6689,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6690,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6691,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6693,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6694,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6695,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6696,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6697,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6698,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6699,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6700,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6701,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6702,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6703,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6704,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6705,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6706,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6707,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6708,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6709,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6710,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6711,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6712,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6713,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6714,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6715,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6716,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6717,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6718,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6719,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6720,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6722,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6723,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6724,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6725,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6727,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6728,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6729,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6730,1
    - Dst: install_element
      Src: /src/frr/pimd/pim_cmd.c:6732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 291
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6734
      start: 6416
    functionDepth: 5
    functionLinenumber: 6416
    functionLinenumberEnd: 6734
    functionName: pim_cmd_init
    functionSourceFile: /src/frr/pimd/pim_cmd.c
    functionUses: 1
    functionsReached:
    - install_element
    - if_cmd_init
    - install_node
    linkageType: ''
    returnType: void
    signature: void pim_cmd_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_sock.c:46,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:50,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_sock.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - protocol
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 56
    functionName: pim_socket_raw
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - socket
    - safe_strerror
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int pim_socket_raw(int protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_sock.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:64,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_sock.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 69
    functionName: pim_socket_ip_hdr
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 1
    functionsReached:
    - setsockopt
    - zlog_err
    linkageType: ''
    returnType: void
    signature: void pim_socket_ip_hdr(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:64,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_sock.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - zlog_err
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:81,1
    - Dst: strlen
      Src: /src/frr/pimd/pim_sock.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ifp
    argTypes:
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: pim_socket_bind
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 2
    functionsReached:
    - strlen
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int pim_socket_bind(int fd, struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:81,1
    - Dst: strlen
      Src: /src/frr/pimd/pim_sock.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - strlen
    - setsockopt
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:96,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:97,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:100,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:101,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_sock.c:104,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:107,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:120,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:121,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:124,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:129,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:130,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:132,1
    - Dst: setsockopt_ipv4_multicast_if
      Src: /src/frr/pimd/pim_sock.c:136,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:137,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:140,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - protocol
    - fd
    - ifp
    argTypes:
    - int
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 145
    functionName: pim_setsockopt
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - setsockopt_ipv4_multicast_if
    - close
    - zlog_warn
    - flog_err
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int pim_setsockopt(int protocol, int fd, struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv6_pktinfo
      Src: /src/frr/pimd/pim_sock.c:152,1
    - Dst: setsockopt_ipv6_multicast_hops
      Src: /src/frr/pimd/pim_sock.c:153,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:156,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:158,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - protocol
    - fd
    - ifp
    argTypes:
    - int
    - int
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 166
    functionName: pim_setsockopt
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - close
    - zlog_warn
    - setsockopt_ipv6_pktinfo
    - setsockopt_ipv6_multicast_hops
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int pim_setsockopt(int protocol, int fd, struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_sock.c:175,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:179,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_sock.c:180,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/pimd/pim_sock.c:184,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:185,1
    - Dst: fcntl
      Src: /src/frr/pimd/pim_sock.c:189,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:191,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_sock.c:193,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:194,1
    - Dst: fcntl
      Src: /src/frr/pimd/pim_sock.c:198,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:199,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_sock.c:201,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 207
    functionName: pim_reg_sock
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - sockopt_reuseaddr
    - socket
    - close
    - zlog_warn
    - safe_strerror
    - fcntl
    linkageType: ''
    returnType: int
    signature: int pim_reg_sock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/pim_sock.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 176
    functionName: (&pimd_privs)
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - socket
    linkageType: ''
    returnType: frr_with_privs
    signature: frr_with_privs (&pimd_privs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pim_socket_raw
      Src: /src/frr/pimd/pim_sock.c:215,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:217,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_sock.c:218,1
    - Dst: pim_socket_bind
      Src: /src/frr/pimd/pim_sock.c:225,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:227,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:228,1
    - Dst: set_nonblocking
      Src: /src/frr/pimd/pim_sock.c:233,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/pimd/pim_sock.c:234,1
    - Dst: setsockopt_so_recvbuf
      Src: /src/frr/pimd/pim_sock.c:235,1
    - Dst: pim_setsockopt
      Src: /src/frr/pimd/pim_sock.c:237,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:239,1
    - Dst: setsockopt_multicast_loop
      Src: /src/frr/pimd/pim_sock.c:245,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:246,1
    - Dst: close
      Src: /src/frr/pimd/pim_sock.c:249,1
    - Dst: setsockopt_iptos
      Src: /src/frr/pimd/pim_sock.c:254,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:255,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - protocol
    - ifaddr
    - ifp
    - loop
    argTypes:
    - int
    - pim_addr
    - struct interface*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 258
    functionName: pim_socket_mcast
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 2
    functionsReached:
    - pim_socket_raw
    - sockopt_reuseaddr
    - pim_setsockopt
    - setsockopt_multicast_loop
    - close
    - zlog_warn
    - safe_strerror
    - setsockopt_so_recvbuf
    - set_nonblocking
    - setsockopt_iptos
    - pim_socket_bind
    linkageType: ''
    returnType: int
    signature: "int pim_socket_mcast(int protocol, pim_addr ifaddr, struct interface
      *ifp,\n\t\t     uint8_t loop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt_ipv4_multicast
      Src: /src/frr/pimd/pim_sock.c:266,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_sock.c:271,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_sock.c:273,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_sock.c:279,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_sock.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - fd
    - group
    - ifaddr
    - ifindex
    - pim_ifp
    argTypes:
    - int
    - pim_addr
    - pim_addr
    - ifindex_t
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 292
    functionName: pim_socket_join
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 2
    functionsReached:
    - setsockopt_ipv4_multicast
    - flog_err
    - zlog_debug
    - setsockopt
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int pim_socket_join(int fd, pim_addr group, pim_addr ifaddr, ifindex_t
      ifindex,\n\t\t    struct pim_interface *pim_ifp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/pimd/pim_sock.c:301,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/pimd/pim_sock.c:302,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim_sock.c:308,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim_sock.c:321,1
    - Dst: CMSG_IFINDEX
      Src: /src/frr/pimd/pim_sock.c:333,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 19
    argCount: 3
    argNames:
    - mh
    - dst
    - ifindex
    argTypes:
    - struct msghdr*
    - struct sockaddr_storage*
    - ifindex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 336
    functionName: cmsg_getdstaddr
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - CMSG_IFINDEX
    - CMSG_NXTHDR
    - CMSG_FIRSTHDR
    - CMSG_DATA
    linkageType: ''
    returnType: void
    signature: "void cmsg_getdstaddr(struct msghdr *mh, struct sockaddr_storage *dst,\n\t\t\t
      \   ifindex_t *ifindex)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/pimd/pim_sock.c:344,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/pimd/pim_sock.c:345,1
    - Dst: CMSG_DATA
      Src: /src/frr/pimd/pim_sock.c:350,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - mh
    - dst
    - ifindex
    argTypes:
    - struct msghdr*
    - struct sockaddr_storage*
    - ifindex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 359
    functionName: cmsg_getdstaddr
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 0
    functionsReached:
    - CMSG_NXTHDR
    - CMSG_FIRSTHDR
    - CMSG_DATA
    linkageType: ''
    returnType: void
    signature: "void cmsg_getdstaddr(struct msghdr *mh, struct sockaddr_storage *dst,\n\t\t\t
      \   ifindex_t *ifindex)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_socket_getsockname
      Src: /src/frr/pimd/pim_sock.c:379,1
    - Dst: memset
      Src: /src/frr/pimd/pim_sock.c:385,1
    - Dst: recvmsg
      Src: /src/frr/pimd/pim_sock.c:396,1
    - Dst: cmsg_getdstaddr
      Src: /src/frr/pimd/pim_sock.c:403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 8
    argNames:
    - fd
    - buf
    - len
    - from
    - fromlen
    - to
    - tolen
    - ifindex
    argTypes:
    - int
    - uint8_t*
    - size_t
    - struct sockaddr_storage*
    - socklen_t*
    - struct sockaddr_storage*
    - socklen_t*
    - ifindex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 406
    functionName: pim_socket_recvfromto
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 4
    functionsReached:
    - cmsg_getdstaddr
    - recvmsg
    - pim_socket_getsockname
    - memset
    linkageType: ''
    returnType: int
    signature: "int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len,\n\t\t\t
      \ struct sockaddr_storage *from, socklen_t *fromlen,\n\t\t\t  struct sockaddr_storage
      *to, socklen_t *tolen,\n\t\t\t  ifindex_t *ifindex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getsockname
      Src: /src/frr/pimd/pim_sock.c:410,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_sock.c:412,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_sock.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - name
    - namelen
    argTypes:
    - int
    - struct sockaddr*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 420
    functionName: pim_socket_getsockname
    functionSourceFile: /src/frr/pimd/pim_sock.c
    functionUses: 4
    functionsReached:
    - zlog_warn
    - safe_strerror
    - getsockname
    linkageType: ''
    returnType: int
    signature: int pim_socket_getsockname(int fd, struct sockaddr *name, socklen_t
      *namelen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_configure_backend
      Src: /src/frr/pimd/pim_main.c:102,1
    - Dst: frr_preinit
      Src: /src/frr/pimd/pim_main.c:106,1
    - Dst: pim_router_init
      Src: /src/frr/pimd/pim_main.c:107,1
    - Dst: pim_error_init
      Src: /src/frr/pimd/pim_main.c:112,1
    - Dst: pim_vrf_init
      Src: /src/frr/pimd/pim_main.c:113,1
    - Dst: access_list_init
      Src: /src/frr/pimd/pim_main.c:114,1
    - Dst: prefix_list_init
      Src: /src/frr/pimd/pim_main.c:115,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/pimd/pim_main.c:116,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/pimd/pim_main.c:117,1
    - Dst: pim_route_map_init
      Src: /src/frr/pimd/pim_main.c:119,1
    - Dst: pim_init
      Src: /src/frr/pimd/pim_main.c:120,1
    - Dst: if_zapi_callbacks
      Src: /src/frr/pimd/pim_main.c:125,1
    - Dst: pim_zebra_init
      Src: /src/frr/pimd/pim_main.c:127,1
    - Dst: pim_bfd_init
      Src: /src/frr/pimd/pim_main.c:128,1
    - Dst: pim_mlag_init
      Src: /src/frr/pimd/pim_main.c:129,1
    - Dst: str2prefix
      Src: /src/frr/pimd/pim_main.c:135,1
    - Dst: if_get_by_name
      Src: /src/frr/pimd/pim_main.c:138,1
    - Dst: if_set_index
      Src: /src/frr/pimd/pim_main.c:139,1
    - Dst: connected_add_by_prefix
      Src: /src/frr/pimd/pim_main.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 100
    functionDepth: 7
    functionLinenumber: 100
    functionLinenumberEnd: 144
    functionName: FuzzingInit
    functionSourceFile: /src/frr/pimd/pim_main.c
    functionUses: 8
    functionsReached:
    - if_get_by_name
    - prefix_list_add_hook
    - connected_add_by_prefix
    - pim_init
    - pim_router_init
    - pim_bfd_init
    - access_list_init
    - pim_mlag_init
    - str2prefix
    - prefix_list_delete_hook
    - pim_zebra_init
    - prefix_list_init
    - pim_route_map_init
    - pim_error_init
    - frr_preinit
    - if_set_index
    - if_zapi_callbacks
    - vrf_configure_backend
    - pim_vrf_init
    linkageType: ''
    returnType: bool
    signature: bool FuzzingInit(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/pimd/pim_main.c:149,1
    - Dst: pim_if_new
      Src: /src/frr/pimd/pim_main.c:150,1
    - Dst: pim_igmp_sock_add
      Src: /src/frr/pimd/pim_main.c:151,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/pimd/pim_main.c:153,1
    - Dst: pim_if_create_pimreg
      Src: /src/frr/pimd/pim_main.c:154,1
    - Dst: pim_neighbor_add
      Src: /src/frr/pimd/pim_main.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 146
    functionDepth: 5
    functionLinenumber: 146
    functionLinenumberEnd: 159
    functionName: FuzzingCreatePimInstance
    functionSourceFile: /src/frr/pimd/pim_main.c
    functionUses: 0
    functionsReached:
    - pim_if_create_pimreg
    - pim_igmp_sock_add
    - pim_neighbor_add
    - fprintf
    - pim_if_new
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct pim_instance
    signature: struct pim_instance *FuzzingCreatePimInstance(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FuzzingInit
      Src: /src/frr/pimd/pim_main.c:168,1
    - Dst: FuzzingCreatePimInstance
      Src: /src/frr/pimd/pim_main.c:170,1
    - Dst: malloc
      Src: /src/frr/pimd/pim_main.c:182,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_main.c:183,1
    - Dst: pim_mroute_msg
      Src: /src/frr/pimd/pim_main.c:186,1
    - Dst: memset
      Src: /src/frr/pimd/pim_main.c:192,1
    - Dst: memset
      Src: /src/frr/pimd/pim_main.c:193,1
    - Dst: inet_aton
      Src: /src/frr/pimd/pim_main.c:195,1
    - Dst: inet_aton
      Src: /src/frr/pimd/pim_main.c:196,1
    - Dst: pim_pim_packet
      Src: /src/frr/pimd/pim_main.c:201,1
    - Dst: free
      Src: /src/frr/pimd/pim_main.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 165
    functionDepth: 6
    functionLinenumber: 165
    functionLinenumberEnd: 208
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/frr/pimd/pim_main.c
    functionUses: 4
    functionsReached:
    - FuzzingCreatePimInstance
    - pim_pim_packet
    - memset
    - FuzzingInit
    - malloc
    - inet_aton
    - free
    - pim_mroute_msg
    - memcpy
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_preinit
      Src: /src/frr/pimd/pim_main.c:214,1
    - Dst: FuzzingInit
      Src: /src/frr/pimd/pim_main.c:217,1
    - Dst: FuzzingCreatePimInstance
      Src: /src/frr/pimd/pim_main.c:219,1
    - Dst: __AFL_INIT
      Src: /src/frr/pimd/pim_main.c:222,1
    - Dst: frrfuzz_read_input
      Src: /src/frr/pimd/pim_main.c:226,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/frr/pimd/pim_main.c:228,1
    - Dst: frr_opt_add
      Src: /src/frr/pimd/pim_main.c:233,1
    - Dst: frr_getopt
      Src: /src/frr/pimd/pim_main.c:239,1
    - Dst: frr_help_exit
      Src: /src/frr/pimd/pim_main.c:248,1
    - Dst: pim_router_init
      Src: /src/frr/pimd/pim_main.c:253,1
    - Dst: pim_error_init
      Src: /src/frr/pimd/pim_main.c:258,1
    - Dst: pim_vrf_init
      Src: /src/frr/pimd/pim_main.c:259,1
    - Dst: access_list_init
      Src: /src/frr/pimd/pim_main.c:260,1
    - Dst: prefix_list_init
      Src: /src/frr/pimd/pim_main.c:261,1
    - Dst: prefix_list_add_hook
      Src: /src/frr/pimd/pim_main.c:262,1
    - Dst: prefix_list_delete_hook
      Src: /src/frr/pimd/pim_main.c:263,1
    - Dst: pim_route_map_init
      Src: /src/frr/pimd/pim_main.c:265,1
    - Dst: pim_init
      Src: /src/frr/pimd/pim_main.c:266,1
    - Dst: pim_iface_init
      Src: /src/frr/pimd/pim_main.c:271,1
    - Dst: pim_zebra_init
      Src: /src/frr/pimd/pim_main.c:272,1
    - Dst: pim_bfd_init
      Src: /src/frr/pimd/pim_main.c:273,1
    - Dst: pim_mlag_init
      Src: /src/frr/pimd/pim_main.c:274,1
    - Dst: hook_register
      Src: /src/frr/pimd/pim_main.c:276,1
    - Dst: routing_control_plane_protocols_register_vrf_dependency
      Src: /src/frr/pimd/pim_main.c:279,1
    - Dst: frr_config_fork
      Src: /src/frr/pimd/pim_main.c:281,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_main.c:284,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_main.c:295,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_main.c:298,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_main.c:304,1
    - Dst: frr_run
      Src: /src/frr/pimd/pim_main.c:308,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 3
    argNames:
    - argc
    - argv
    - envp
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 212
    functionDepth: 7
    functionLinenumber: 212
    functionLinenumberEnd: 312
    functionName: main
    functionSourceFile: /src/frr/pimd/pim_main.c
    functionUses: 26
    functionsReached:
    - FuzzingInit
    - frr_getopt
    - prefix_list_add_hook
    - zlog_notice
    - frrfuzz_read_input
    - pim_init
    - pim_router_init
    - __AFL_INIT
    - hook_register
    - pim_bfd_init
    - access_list_init
    - pim_mlag_init
    - prefix_list_delete_hook
    - frr_help_exit
    - pim_zebra_init
    - prefix_list_init
    - frr_config_fork
    - pim_route_map_init
    - pim_error_init
    - frr_opt_add
    - frr_preinit
    - pim_iface_init
    - FuzzingCreatePimInstance
    - pim_vrf_init
    - frr_run
    - routing_control_plane_protocols_register_vrf_dependency
    - LLVMFuzzerTestOneInput
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **envp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/pimd/pim_addr.c:27,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_addr.c:29,1
    - Dst: bputch
      Src: /src/frr/pimd/pim_addr.c:30,1
    - Dst: bprintfrr
      Src: /src/frr/pimd/pim_addr.c:33,1
    - Dst: bprintfrr
      Src: /src/frr/pimd/pim_addr.c:35,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 15
    functionDepth: 7
    functionLinenumber: 15
    functionLinenumberEnd: 37
    functionName: printfrr_pimaddr
    functionSourceFile: /src/frr/pimd/pim_addr.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - bprintfrr
    - bputch
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_pimaddr(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t\tconst
      void *vptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bputs
      Src: /src/frr/pimd/pim_addr.c:46,1
    - Dst: bprintfrr
      Src: /src/frr/pimd/pim_addr.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - ea
    - vptr
    argTypes:
    - struct fbuf*
    - struct printfrr_eargs*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 7
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: printfrr_sgaddr
    functionSourceFile: /src/frr/pimd/pim_addr.c
    functionUses: 0
    functionsReached:
    - bprintfrr
    - bputs
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t printfrr_sgaddr(struct fbuf *buf, struct printfrr_eargs *ea,\n\t\t\t
      \      const void *vptr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_register_reevaluate
      Src: /src/frr/pimd/pim_ssm.c:40,1
    - Dst: igmp_source_forward_reevaluate_all
      Src: /src/frr/pimd/pim_ssm.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 21
    functionDepth: 3
    functionLinenumber: 21
    functionLinenumberEnd: 43
    functionName: pim_ssm_range_reevaluate
    functionSourceFile: /src/frr/pimd/pim_ssm.c
    functionUses: 0
    functionsReached:
    - pim_upstream_register_reevaluate
    - igmp_source_forward_reevaluate_all
    linkageType: ''
    returnType: void
    signature: void pim_ssm_range_reevaluate(struct pim_instance *pim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pimd/pim_ssm.c:51,1
    - Dst: prefix_list_name
      Src: /src/frr/pimd/pim_ssm.c:51,1
    - Dst: pim_ssm_range_reevaluate
      Src: /src/frr/pimd/pim_ssm.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - pim
    - plist
    argTypes:
    - struct pim_instance*
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 4
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: pim_ssm_prefix_list_update
    functionSourceFile: /src/frr/pimd/pim_ssm.c
    functionUses: 1
    functionsReached:
    - pim_ssm_range_reevaluate
    - strcmp
    - prefix_list_name
    linkageType: ''
    returnType: void
    signature: "void pim_ssm_prefix_list_update(struct pim_instance *pim,\n\t\t\t\tstruct
      prefix_list *plist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_from_prefix
      Src: /src/frr/pimd/pim_ssm.c:61,1
    - Dst: pim_addr_ssm
      Src: /src/frr/pimd/pim_ssm.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: pim_is_grp_standard_ssm
    functionSourceFile: /src/frr/pimd/pim_ssm.c
    functionUses: 0
    functionsReached:
    - pim_addr_from_prefix
    - pim_addr_ssm
    linkageType: ''
    returnType: int
    signature: int pim_is_grp_standard_ssm(struct prefix *group)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_ssm.c:72,1
    - Dst: pim_is_grp_standard_ssm
      Src: /src/frr/pimd/pim_ssm.c:76,1
    - Dst: prefix_list_lookup
      Src: /src/frr/pimd/pim_ssm.c:79,1
    - Dst: prefix_list_apply_ext
      Src: /src/frr/pimd/pim_ssm.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pim
    - group_addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 85
    functionName: pim_is_grp_ssm
    functionSourceFile: /src/frr/pimd/pim_ssm.c
    functionUses: 9
    functionsReached:
    - prefix_list_apply_ext
    - pim_addr_to_prefix
    - prefix_list_lookup
    - pim_is_grp_standard_ssm
    linkageType: ''
    returnType: int
    signature: int pim_is_grp_ssm(struct pim_instance *pim, pim_addr group_addr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/pimd/pim_ssm.c:99,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_ssm.c:101,1
    - Dst: XSTRDUP
      Src: /src/frr/pimd/pim_ssm.c:103,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_ssm.c:108,1
    - Dst: pim_ssm_range_reevaluate
      Src: /src/frr/pimd/pim_ssm.c:113,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - pim
    - vrf_id
    - plist_name
    argTypes:
    - struct pim_instance*
    - vrf_id_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 116
    functionName: pim_ssm_range_set
    functionSourceFile: /src/frr/pimd/pim_ssm.c
    functionUses: 1
    functionsReached:
    - pim_ssm_range_reevaluate
    - strcmp
    - XSTRDUP
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int pim_ssm_range_set(struct pim_instance *pim, vrf_id_t vrf_id,\n\t\t
      \     const char *plist_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_ssm.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: pim_ssm_init
    functionSourceFile: /src/frr/pimd/pim_ssm.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: void
    signature: void *pim_ssm_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/pimd/pim_ssm.c:132,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_ssm.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ssm
    argTypes:
    - struct pim_ssm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 135
    functionName: pim_ssm_terminate
    functionSourceFile: /src/frr/pimd/pim_ssm.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_ssm_terminate(struct pim_ssm *ssm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: PIM_IF_FLAG_TEST_COULD_ASSERT
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_TEST_COULD_ASSERT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: PIM_IF_FLAG_SET_COULD_ASSERT
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_SET_COULD_ASSERT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: PIM_IF_FLAG_UNSET_COULD_ASSERT
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_UNSET_COULD_ASSERT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: PIM_IF_FLAG_SET_ASSERT_TRACKING_DESIRED
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_SET_ASSERT_TRACKING_DESIRED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: PIM_IF_FLAG_UNSET_ASSERT_TRACKING_DESIRED
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_UNSET_ASSERT_TRACKING_DESIRED(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: PIM_IF_FLAG_TEST_S_G_RPT
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_TEST_S_G_RPT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: PIM_IF_FLAG_SET_S_G_RPT
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_SET_S_G_RPT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: PIM_IF_FLAG_UNSET_S_G_RPT
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_UNSET_S_G_RPT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: PIM_IF_FLAG_TEST_PROTO_PIM
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_TEST_PROTO_PIM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: PIM_IF_FLAG_SET_PROTO_PIM
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_SET_PROTO_PIM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: PIM_IF_FLAG_UNSET_PROTO_PIM
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_UNSET_PROTO_PIM(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 74
    functionName: PIM_IF_FLAG_TEST_PROTO_IGMP
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_TEST_PROTO_IGMP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: PIM_IF_FLAG_SET_PROTO_IGMP
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_SET_PROTO_IGMP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: PIM_IF_FLAG_UNSET_PROTO_IGMP
    functionSourceFile: /src/frr/pimd/pim_ifchannel.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_UNSET_PROTO_IGMP(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_cmd_init
      Src: /src/frr/pimd/pim6_cmd.c:1738,1
    - Dst: install_node
      Src: /src/frr/pimd/pim6_cmd.c:1740,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1742,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1743,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1744,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1745,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1746,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1747,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1748,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1749,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1750,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1751,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1752,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1753,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1754,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1755,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1756,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1757,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1758,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1759,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1760,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1761,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1762,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1763,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1764,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1765,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1766,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1767,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1769,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1771,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1772,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1774,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1775,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1776,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1777,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1778,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1779,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1780,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1781,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1782,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1783,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1784,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1785,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1786,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1787,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1788,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1789,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1790,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1791,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1792,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1793,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1794,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1795,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1796,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1797,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1799,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1800,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1801,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1802,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1803,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1805,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1807,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1809,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1811,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1813,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1816,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1817,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1818,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1819,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1820,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1821,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1822,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1823,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1824,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1825,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1826,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1827,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1828,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1829,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1830,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1831,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1832,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1833,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1834,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1835,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1836,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1837,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1838,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1839,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1840,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1841,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1842,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1843,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1844,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1845,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1846,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1847,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1848,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1849,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1850,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1851,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1852,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1853,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1854,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1855,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1856,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1857,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1858,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1859,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1861,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1863,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1864,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1865,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1866,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1867,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1868,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1869,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1870,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1871,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1872,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1873,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1874,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1875,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1876,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1877,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1878,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1879,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1880,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1882,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1883,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1884,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1885,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1886,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1887,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1888,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1889,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1890,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1891,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1892,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1893,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1894,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1895,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1896,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1897,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1898,1
    - Dst: install_element
      Src: /src/frr/pimd/pim6_cmd.c:1899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 147
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1736
    functionDepth: 5
    functionLinenumber: 1736
    functionLinenumberEnd: 1900
    functionName: pim_cmd_init
    functionSourceFile: /src/frr/pimd/pim6_cmd.c
    functionUses: 1
    functionsReached:
    - install_element
    - if_cmd_init
    - install_node
    linkageType: ''
    returnType: void
    signature: void pim_cmd_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - output
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: IGMP_GET_INT16
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_GET_INT16(ptr, output)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim_ifp
    - ifp
    argTypes:
    - struct pim_interface*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: pim_igmp_if_init
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_igmp_if_init(struct pim_interface *pim_ifp,\n\t\t\t\t    struct
      interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: pim_igmp_if_fini
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_igmp_if_fini(struct pim_interface *pim_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: pim_igmp_general_query_on
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_igmp_general_query_on(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: pim_igmp_general_query_off
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_igmp_general_query_off(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: pim_igmp_other_querier_timer_on
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_igmp_other_querier_timer_on(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: pim_igmp_other_querier_timer_off
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_igmp_other_querier_timer_off(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: IGMP_SOURCE_TEST_FORWARDING
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_TEST_FORWARDING(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: IGMP_SOURCE_TEST_DELETE
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_TEST_DELETE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: IGMP_SOURCE_TEST_SEND
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_TEST_SEND(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: IGMP_SOURCE_DO_FORWARDING
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_DO_FORWARDING(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: IGMP_SOURCE_DO_DELETE
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_DO_DELETE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: IGMP_SOURCE_DO_SEND
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_DO_SEND(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 142
    functionName: IGMP_SOURCE_DONT_FORWARDING
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_DONT_FORWARDING(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 143
    functionName: IGMP_SOURCE_DONT_DELETE
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_DONT_DELETE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: IGMP_SOURCE_DONT_SEND
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IGMP_SOURCE_DONT_SEND(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - igmp
    argTypes:
    - struct gm_sock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: igmp_startup_mode_on
    functionSourceFile: /src/frr/pimd/pim_igmp.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void igmp_startup_mode_on(struct gm_sock *igmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_notify_dependencies
      Src: /src/frr/pimd/pim_routemap.c:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 16
    functionDepth: 2
    functionLinenumber: 16
    functionLinenumberEnd: 19
    functionName: pim_route_map_add
    functionSourceFile: /src/frr/pimd/pim_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void pim_route_map_add(const char *rmap_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_notify_dependencies
      Src: /src/frr/pimd/pim_routemap.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: pim_route_map_delete
    functionSourceFile: /src/frr/pimd/pim_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void pim_route_map_delete(const char *rmap_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_notify_dependencies
      Src: /src/frr/pimd/pim_routemap.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rmap_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: pim_route_map_event
    functionSourceFile: /src/frr/pimd/pim_routemap.c
    functionUses: 0
    functionsReached:
    - route_map_notify_dependencies
    linkageType: ''
    returnType: void
    signature: void pim_route_map_event(const char *rmap_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_init
      Src: /src/frr/pimd/pim_routemap.c:33,1
    - Dst: route_map_add_hook
      Src: /src/frr/pimd/pim_routemap.c:35,1
    - Dst: route_map_delete_hook
      Src: /src/frr/pimd/pim_routemap.c:36,1
    - Dst: route_map_event_hook
      Src: /src/frr/pimd/pim_routemap.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 38
    functionName: pim_route_map_init
    functionSourceFile: /src/frr/pimd/pim_routemap.c
    functionUses: 3
    functionsReached:
    - route_map_event_hook
    - route_map_delete_hook
    - route_map_init
    - route_map_add_hook
    linkageType: ''
    returnType: void
    signature: void pim_route_map_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: route_map_finish
      Src: /src/frr/pimd/pim_routemap.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: pim_route_map_terminate
    functionSourceFile: /src/frr/pimd/pim_routemap.c
    functionUses: 1
    functionsReached:
    - route_map_finish
    linkageType: ''
    returnType: void
    signature: void pim_route_map_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: pim_mlag_terminate
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_mlag_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: pim_instance_mlag_init
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_instance_mlag_init(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: pim_instance_mlag_terminate
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_instance_mlag_terminate(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pim_if_configure_mlag_dualactive
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_if_configure_mlag_dualactive(\n\t\t\t\t\t\tstruct pim_interface
      *pim_ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - pim_ifp
    argTypes:
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: pim_if_unconfigure_mlag_dualactive
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_if_unconfigure_mlag_dualactive(\n\t\t\t\t\t\tstruct pim_interface
      *pim_ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: pim_mlag_register
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pim_mlag_register(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim
    - upstream
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: pim_mlag_up_local_add
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_up_local_add(struct pim_instance *pim,\n\t\t\t\t\t struct
      pim_upstream *upstream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pim
    - upstream
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: pim_mlag_up_local_del
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_mlag_up_local_del(struct pim_instance *pim,\n\t\t\t\t\t struct
      pim_upstream *upstream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - pim
    - up
    - is_df
    - reason
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: pim_mlag_up_df_role_update
    functionSourceFile: /src/frr/pimd/pim_mlag.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pim_mlag_up_df_role_update(struct pim_instance *pim,\n\t\t\t\t\t
      \     struct pim_upstream *up,\n\t\t\t\t\t      bool is_df, const char *reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_vxlan.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: pim_vxlan_is_orig_mroute
    functionSourceFile: /src/frr/pimd/pim_vxlan.h
    functionUses: 2
    functionsReached:
    - pim_addr_is_any
    linkageType: ''
    returnType: bool
    signature: bool pim_vxlan_is_orig_mroute(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_vxlan.h:104,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_vxlan.h:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: pim_vxlan_is_local_sip
    functionSourceFile: /src/frr/pimd/pim_vxlan.h
    functionUses: 1
    functionsReached:
    - pim_addr_is_any
    - if_is_loopback
    linkageType: ''
    returnType: bool
    signature: bool pim_vxlan_is_local_sip(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pim
    - ifp
    argTypes:
    - struct pim_instance*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: pim_vxlan_is_term_dev_cfg
    functionSourceFile: /src/frr/pimd/pim_vxlan.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pim_vxlan_is_term_dev_cfg(struct pim_instance *pim,\n\t\t\tstruct
      interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: PIM_IF_IS_DELETED
    functionSourceFile: /src/frr/pimd/pim_iface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_IS_DELETED(ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pim_ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: PIM_I_am_DR
    functionSourceFile: /src/frr/pimd/pim_iface.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_I_am_DR(pim_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pim_ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: PIM_I_am_DualActive
    functionSourceFile: /src/frr/pimd/pim_iface.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_I_am_DualActive(pim_ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: PIM_IF_FLAG_TEST_HELLO_SENT
    functionSourceFile: /src/frr/pimd/pim_iface.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_TEST_HELLO_SENT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: PIM_IF_FLAG_SET_HELLO_SENT
    functionSourceFile: /src/frr/pimd/pim_iface.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_SET_HELLO_SENT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: PIM_IF_FLAG_UNSET_HELLO_SENT
    functionSourceFile: /src/frr/pimd/pim_iface.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_FLAG_UNSET_HELLO_SENT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - pim_ifp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 186
    functionName: PIM_IF_DEFAULT_HOLDTIME
    functionSourceFile: /src/frr/pimd/pim_iface.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_IF_DEFAULT_HOLDTIME(pim_ifp)
  - BBCount: 81
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmp_mtrace.c:35,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp_mtrace.c:38,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp_mtrace.c:41,1
    - Dst: CHECK_FLAG
      Src: /src/frr/pimd/pim_igmp_mtrace.c:41,1
    - Dst: mtrace_fwd_info_weak
      Src: /src/frr/pimd/pim_igmp_mtrace.c:49,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:60,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_igmp_mtrace.c:62,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:64,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:69,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:72,1
    - Dst: mtrace_primary_address
      Src: /src/frr/pimd/pim_igmp_mtrace.c:82,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:84,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:85,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:101,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_igmp_mtrace.c:105,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_igmp_mtrace.c:109,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:117,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:124,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:127,1
    - Dst: mtrace_primary_address
      Src: /src/frr/pimd/pim_igmp_mtrace.c:136,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:138,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_igmp_mtrace.c:143,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:167,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:168,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:169,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:185,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:187,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:201,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:214,1
    - Dst: mtrace_rsp_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:220,1
    - Dst: gettimeofday
      Src: /src/frr/pimd/pim_igmp_mtrace.c:230,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:232,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp_mtrace.c:233,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:254,1
    - Dst: mtrace_primary_address
      Src: /src/frr/pimd/pim_igmp_mtrace.c:263,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:264,1
    - Dst: pim_socket_raw
      Src: /src/frr/pimd/pim_igmp_mtrace.c:268,1
    - Dst: pim_socket_bind
      Src: /src/frr/pimd/pim_igmp_mtrace.c:273,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:280,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:280,1
    - Dst: IPV4_MC_LINKLOCAL
      Src: /src/frr/pimd/pim_igmp_mtrace.c:281,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:281,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_igmp_mtrace.c:289,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:294,1
    - Dst: sendto
      Src: /src/frr/pimd/pim_igmp_mtrace.c:300,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp_mtrace.c:307,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp_mtrace.c:308,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:312,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp_mtrace.c:316,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:319,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp_mtrace.c:329,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:349,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:356,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_igmp_mtrace.c:357,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:359,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:369,1
    - Dst: pim_socket_raw
      Src: /src/frr/pimd/pim_igmp_mtrace.c:371,1
    - Dst: pim_socket_ip_hdr
      Src: /src/frr/pimd/pim_igmp_mtrace.c:376,1
    - Dst: pim_socket_bind
      Src: /src/frr/pimd/pim_igmp_mtrace.c:378,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp_mtrace.c:381,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:385,1
    - Dst: sendto
      Src: /src/frr/pimd/pim_igmp_mtrace.c:390,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp_mtrace.c:390,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp_mtrace.c:393,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:397,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp_mtrace.c:399,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:404,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp_mtrace.c:405,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:421,1
    - Dst: pim_find_channel_oil
      Src: /src/frr/pimd/pim_igmp_mtrace.c:424,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:428,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp_mtrace.c:430,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp_mtrace.c:439,1
    - Dst: pim_macro_chisin_oiflist
      Src: /src/frr/pimd/pim_igmp_mtrace.c:440,1
    - Dst: mtrace_un_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:443,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp_mtrace.c:445,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp_mtrace.c:455,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:455,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:455,1
    - Dst: mtrace_mc_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:456,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp_mtrace.c:491,1
    - Dst: pim_macro_chisin_oiflist
      Src: /src/frr/pimd/pim_igmp_mtrace.c:492,1
    - Dst: mtrace_send_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:495,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:506,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:514,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:516,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:516,1
    - Dst: pim_rp_i_am_rp
      Src: /src/frr/pimd/pim_igmp_mtrace.c:519,1
    - Dst: mtrace_send_mc_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:520,1
    - Dst: pim_rp_g
      Src: /src/frr/pimd/pim_igmp_mtrace.c:523,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:529,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:535,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:537,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_igmp_mtrace.c:539,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:541,1
    - Dst: mtrace_send_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:548,1
    - Dst: igmp_mtrace_recv_qry_req
      Src: /src/frr/pimd/pim_igmp_mtrace.c:552,1
    - Dst: if_address_is_local
      Src: /src/frr/pimd/pim_igmp_mtrace.c:584,1
    - Dst: mtrace_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:586,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:590,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:603,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:607,1
    - Dst: mtrace_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:617,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:625,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_igmp_mtrace.c:628,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:629,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:629,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:631,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:638,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:642,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:657,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:662,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:669,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:669,1
    - Dst: IPV4_MC_LINKLOCAL
      Src: /src/frr/pimd/pim_igmp_mtrace.c:670,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:670,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:672,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:686,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp_mtrace.c:696,1
    - Dst: mtrace_rsp_init
      Src: /src/frr/pimd/pim_igmp_mtrace.c:705,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:711,1
    - Dst: query_arrival_time
      Src: /src/frr/pimd/pim_igmp_mtrace.c:711,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:713,1
    - Dst: mtrace_fwd_info
      Src: /src/frr/pimd/pim_igmp_mtrace.c:719,1
    - Dst: mtrace_fwd_info_weak
      Src: /src/frr/pimd/pim_igmp_mtrace.c:721,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:726,1
    - Dst: mtrace_rsp_set_fwd_code
      Src: /src/frr/pimd/pim_igmp_mtrace.c:727,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:729,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:740,1
    - Dst: mtrace_rsp_set_fwd_code
      Src: /src/frr/pimd/pim_igmp_mtrace.c:741,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:743,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_igmp_mtrace.c:746,1
    - Dst: inet_aton
      Src: /src/frr/pimd/pim_igmp_mtrace.c:755,1
    - Dst: pim_rp_i_am_rp
      Src: /src/frr/pimd/pim_igmp_mtrace.c:760,1
    - Dst: mtrace_rsp_set_fwd_code
      Src: /src/frr/pimd/pim_igmp_mtrace.c:761,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:764,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:772,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:776,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:780,1
    - Dst: mtrace_send_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:783,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:806,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:819,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:823,1
    - Dst: mtrace_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:835,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:840,1
    - Dst: mtrace_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:847,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 339
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 21
    functionDepth: 5
    functionLinenumber: 21
    functionLinenumberEnd: 848
    functionName: mtrace_primary_address
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - IPV4_MC_LINKLOCAL
    - in_cksum
    - pim_upstream_find
    - IPV4_CLASS_DE
    - mtrace_send_packet
    - ntohs
    - mtrace_primary_address
    - pim_macro_chisin_oiflist
    - sendto
    - gettimeofday
    - pim_socket_ip_hdr
    - if_address_is_local
    - htonl
    - pim_if_connected_to_source
    - pim_socket_bind
    - memset
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - pim_find_channel_oil
    - mtrace_fwd_info
    - zlog_debug
    - safe_strerror
    - mtrace_send_response
    - mtrace_mc_forward_packet
    - if
    - setsockopt
    - ntohl
    - pim_rp_i_am_rp
    - mtrace_rsp_set_fwd_code
    - mtrace_forward_packet
    - pim_socket_raw
    - mtrace_rsp_debug
    - mtrace_rsp_init
    - query_arrival_time
    - memcpy
    - mtrace_send_mc_response
    - pim_nexthop_lookup
    - inet_aton
    - mtrace_fwd_info_weak
    - CHECK_FLAG
    - pim_rp_g
    - close
    - mtrace_debug
    - mtrace_un_forward_packet
    - ALL_LIST_ELEMENTS
    - pim_inet4_dump
    - igmp_mtrace_recv_qry_req
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr mtrace_primary_address(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - mtrace_rspp
    - fwd_code
    argTypes:
    - struct igmp_mtrace_rsp*
    - enum mtrace_fwd_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 159
    functionName: mtrace_rsp_set_fwd_code
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mtrace_rsp_set_fwd_code(struct igmp_mtrace_rsp *mtrace_rspp,\n\t\t\t\t
      \   enum mtrace_fwd_code fwd_code)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:167,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:168,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - mtrace_rspp
    argTypes:
    - struct igmp_mtrace_rsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 176
    functionName: mtrace_rsp_init
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: void mtrace_rsp_init(struct igmp_mtrace_rsp *mtrace_rspp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:185,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - qry_id
    - rsp
    - mrspp
    argTypes:
    - uint32_t
    - int
    - struct igmp_mtrace_rsp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: mtrace_rsp_debug
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - ntohl
    linkageType: ''
    returnType: void
    signature: "void mtrace_rsp_debug(uint32_t qry_id, int rsp,\n\t\t\t     struct
      igmp_mtrace_rsp *mrspp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:201,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:214,1
    - Dst: mtrace_rsp_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:220,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - pim_ifp
    - mtracep
    - mtrace_len
    argTypes:
    - struct pim_interface*
    - struct igmp_mtrace*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 222
    functionName: mtrace_debug
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - ntohl
    - mtrace_rsp_debug
    linkageType: ''
    returnType: void
    signature: "void mtrace_debug(struct pim_interface *pim_ifp,\n\t\t\t struct igmp_mtrace
      *mtracep, int mtrace_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/pimd/pim_igmp_mtrace.c:230,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:232,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp_mtrace.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 240
    functionName: query_arrival_time
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - safe_strerror
    - gettimeofday
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t query_arrival_time(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:254,1
    - Dst: mtrace_primary_address
      Src: /src/frr/pimd/pim_igmp_mtrace.c:263,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:264,1
    - Dst: pim_socket_raw
      Src: /src/frr/pimd/pim_igmp_mtrace.c:268,1
    - Dst: pim_socket_bind
      Src: /src/frr/pimd/pim_igmp_mtrace.c:273,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:280,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:280,1
    - Dst: IPV4_MC_LINKLOCAL
      Src: /src/frr/pimd/pim_igmp_mtrace.c:281,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:281,1
    - Dst: setsockopt
      Src: /src/frr/pimd/pim_igmp_mtrace.c:289,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:294,1
    - Dst: sendto
      Src: /src/frr/pimd/pim_igmp_mtrace.c:300,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp_mtrace.c:307,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmp_mtrace.c:308,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:312,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp_mtrace.c:316,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:319,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp_mtrace.c:329,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 5
    argNames:
    - ifp
    - mtracep
    - mtrace_buf_len
    - dst_addr
    - group_addr
    argTypes:
    - struct interface*
    - struct igmp_mtrace*
    - size_t
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 242
    functionDepth: 6
    functionLinenumber: 242
    functionLinenumberEnd: 331
    functionName: mtrace_send_packet
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - pim_socket_raw
    - IPV4_MC_LINKLOCAL
    - memset
    - IPV4_CLASS_DE
    - pim_inet4_dump
    - close
    - mtrace_primary_address
    - zlog_debug
    - safe_strerror
    - sendto
    - setsockopt
    - ntohl
    - pim_socket_bind
    linkageType: ''
    returnType: int
    signature: "int mtrace_send_packet(struct interface *ifp,\n\t\t\t      struct
      igmp_mtrace *mtracep,\n\t\t\t      size_t mtrace_buf_len, struct in_addr dst_addr,\n\t\t\t
      \     struct in_addr group_addr)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:349,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:356,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_igmp_mtrace.c:357,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:359,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:369,1
    - Dst: pim_socket_raw
      Src: /src/frr/pimd/pim_igmp_mtrace.c:371,1
    - Dst: pim_socket_ip_hdr
      Src: /src/frr/pimd/pim_igmp_mtrace.c:376,1
    - Dst: pim_socket_bind
      Src: /src/frr/pimd/pim_igmp_mtrace.c:378,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp_mtrace.c:381,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:385,1
    - Dst: sendto
      Src: /src/frr/pimd/pim_igmp_mtrace.c:390,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp_mtrace.c:390,1
    - Dst: close
      Src: /src/frr/pimd/pim_igmp_mtrace.c:393,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:397,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmp_mtrace.c:399,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:404,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp_mtrace.c:405,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 3
    argNames:
    - pim
    - ip_hdr
    - interface
    argTypes:
    - struct pim_instance*
    - struct ip*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 333
    functionDepth: 5
    functionLinenumber: 333
    functionLinenumberEnd: 410
    functionName: mtrace_un_forward_packet
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - pim_socket_raw
    - memset
    - in_cksum
    - pim_nexthop_lookup
    - close
    - ntohs
    - zlog_debug
    - safe_strerror
    - sendto
    - pim_socket_ip_hdr
    - pim_socket_bind
    linkageType: ''
    returnType: int
    signature: "int mtrace_un_forward_packet(struct pim_instance *pim, struct ip *ip_hdr,\n\t\t\t\t
      \   struct interface *interface)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:421,1
    - Dst: pim_find_channel_oil
      Src: /src/frr/pimd/pim_igmp_mtrace.c:424,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:428,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmp_mtrace.c:430,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp_mtrace.c:439,1
    - Dst: pim_macro_chisin_oiflist
      Src: /src/frr/pimd/pim_igmp_mtrace.c:440,1
    - Dst: mtrace_un_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:443,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp_mtrace.c:445,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmp_mtrace.c:455,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:455,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:455,1
    - Dst: mtrace_mc_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:456,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmp_mtrace.c:491,1
    - Dst: pim_macro_chisin_oiflist
      Src: /src/frr/pimd/pim_igmp_mtrace.c:492,1
    - Dst: mtrace_send_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:495,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:506,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:514,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:516,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:516,1
    - Dst: pim_rp_i_am_rp
      Src: /src/frr/pimd/pim_igmp_mtrace.c:519,1
    - Dst: mtrace_send_mc_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:520,1
    - Dst: pim_rp_g
      Src: /src/frr/pimd/pim_igmp_mtrace.c:523,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:529,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:535,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_mtrace.c:537,1
    - Dst: pim_nexthop_lookup
      Src: /src/frr/pimd/pim_igmp_mtrace.c:539,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:541,1
    - Dst: mtrace_send_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:548,1
    - Dst: igmp_mtrace_recv_qry_req
      Src: /src/frr/pimd/pim_igmp_mtrace.c:552,1
    - Dst: if_address_is_local
      Src: /src/frr/pimd/pim_igmp_mtrace.c:584,1
    - Dst: mtrace_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:586,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:590,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:603,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:607,1
    - Dst: mtrace_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:617,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:625,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_igmp_mtrace.c:628,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:629,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:629,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:631,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:638,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:642,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:657,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:662,1
    - Dst: IPV4_CLASS_DE
      Src: /src/frr/pimd/pim_igmp_mtrace.c:669,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:669,1
    - Dst: IPV4_MC_LINKLOCAL
      Src: /src/frr/pimd/pim_igmp_mtrace.c:670,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:670,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:672,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:686,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmp_mtrace.c:696,1
    - Dst: mtrace_rsp_init
      Src: /src/frr/pimd/pim_igmp_mtrace.c:705,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:711,1
    - Dst: query_arrival_time
      Src: /src/frr/pimd/pim_igmp_mtrace.c:711,1
    - Dst: htonl
      Src: /src/frr/pimd/pim_igmp_mtrace.c:713,1
    - Dst: mtrace_fwd_info
      Src: /src/frr/pimd/pim_igmp_mtrace.c:719,1
    - Dst: mtrace_fwd_info_weak
      Src: /src/frr/pimd/pim_igmp_mtrace.c:721,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:726,1
    - Dst: mtrace_rsp_set_fwd_code
      Src: /src/frr/pimd/pim_igmp_mtrace.c:727,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:729,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:740,1
    - Dst: mtrace_rsp_set_fwd_code
      Src: /src/frr/pimd/pim_igmp_mtrace.c:741,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:743,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_igmp_mtrace.c:746,1
    - Dst: inet_aton
      Src: /src/frr/pimd/pim_igmp_mtrace.c:755,1
    - Dst: pim_rp_i_am_rp
      Src: /src/frr/pimd/pim_igmp_mtrace.c:760,1
    - Dst: mtrace_rsp_set_fwd_code
      Src: /src/frr/pimd/pim_igmp_mtrace.c:761,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:764,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:772,1
    - Dst: mtrace_send_response
      Src: /src/frr/pimd/pim_igmp_mtrace.c:776,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:780,1
    - Dst: mtrace_send_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:783,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 126
    argCount: 2
    argNames:
    - pim
    - ip_hdr
    argTypes:
    - struct pim_instance*
    - struct ip*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 412
    functionDepth: 7
    functionLinenumber: 412
    functionLinenumberEnd: 785
    functionName: mtrace_mc_forward_packet
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 2
    functionsReached:
    - IPV4_MC_LINKLOCAL
    - in_cksum
    - IPV4_CLASS_DE
    - mtrace_send_packet
    - ntohs
    - pim_macro_chisin_oiflist
    - if_address_is_local
    - htonl
    - pim_if_connected_to_source
    - memset
    - pim_find_channel_oil
    - mtrace_fwd_info
    - zlog_debug
    - mtrace_send_response
    - mtrace_mc_forward_packet
    - if
    - mtrace_rsp_set_fwd_code
    - ntohl
    - pim_rp_i_am_rp
    - mtrace_forward_packet
    - mtrace_rsp_init
    - query_arrival_time
    - memcpy
    - mtrace_send_mc_response
    - pim_nexthop_lookup
    - inet_aton
    - pim_rp_g
    - mtrace_fwd_info_weak
    - mtrace_debug
    - mtrace_un_forward_packet
    - ALL_LIST_ELEMENTS
    - igmp_mtrace_recv_qry_req
    linkageType: ''
    returnType: int
    signature: int mtrace_mc_forward_packet(struct pim_instance *pim, struct ip *ip_hdr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:806,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmp_mtrace.c:819,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:823,1
    - Dst: mtrace_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:835,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmp_mtrace.c:840,1
    - Dst: mtrace_forward_packet
      Src: /src/frr/pimd/pim_igmp_mtrace.c:847,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 6
    argNames:
    - igmp
    - ip_hdr
    - from
    - from_str
    - igmp_msg
    - igmp_msg_len
    argTypes:
    - struct gm_sock*
    - struct ip*
    - struct in_addr
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 788
    functionDepth: 3
    functionLinenumber: 788
    functionLinenumberEnd: 848
    functionName: igmp_mtrace_recv_response
    functionSourceFile: /src/frr/pimd/pim_igmp_mtrace.c
    functionUses: 1
    functionsReached:
    - in_cksum
    - zlog_debug
    - mtrace_forward_packet
    - mtrace_debug
    linkageType: ''
    returnType: int
    signature: "int igmp_mtrace_recv_response(struct gm_sock *igmp, struct ip *ip_hdr,\n\t\t\t
      \     struct in_addr from, const char *from_str,\n\t\t\t      char *igmp_msg,
      int igmp_msg_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv2.c:26,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - label
    - ifp
    - from
    argTypes:
    - char*
    - struct interface*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 29
    functionName: on_trace
    functionSourceFile: /src/frr/pimd/pim_igmpv2.c
    functionUses: 2
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: "void on_trace(const char *label, struct interface *ifp,\n\t\t     struct
      in_addr from)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv2.c:47,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmpv2.c:53,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmpv2.c:55,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv2.c:61,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv2.c:62,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:64,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmpv2.c:68,1
    - Dst: sendto
      Src: /src/frr/pimd/pim_igmpv2.c:73,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv2.c:78,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv2.c:79,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv2.c:82,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmpv2.c:85,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv2.c:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 7
    argNames:
    - group
    - fd
    - ifname
    - query_buf
    - dst_addr
    - group_addr
    - query_max_response_time_dsec
    argTypes:
    - struct gm_group*
    - int
    - char*
    - char*
    - struct in_addr
    - struct in_addr
    - int
    assertStmts:
    - condition: (max_resp_code > 0)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/frr/pimd/pim_igmpv2.c
    constantsTouched: []
    func_position:
      end: 93
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 93
    functionName: igmp_v2_send_query
    functionSourceFile: /src/frr/pimd/pim_igmpv2.c
    functionUses: 1
    functionsReached:
    - assert
    - memset
    - in_cksum
    - zlog_debug
    - zlog_warn
    - sendto
    - safe_strerror
    - pim_inet4_dump
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void igmp_v2_send_query(struct gm_group *group, int fd, const char
      *ifname,\n\t\t\tchar *query_buf, struct in_addr dst_addr,\n\t\t\tstruct in_addr
      group_addr,\n\t\t\tint query_max_response_time_dsec)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv2.c:103,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:112,1
    - Dst: igmp_validate_checksum
      Src: /src/frr/pimd/pim_igmpv2.c:118,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv2.c:119,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmpv2.c:128,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv2.c:131,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:133,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_igmpv2.c:144,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:146,1
    - Dst: igmpv3_report_isex
      Src: /src/frr/pimd/pim_igmpv2.c:167,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - igmp
    - from
    - from_str
    - igmp_msg
    - igmp_msg_len
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 170
    functionName: igmp_v2_recv_report
    functionSourceFile: /src/frr/pimd/pim_igmpv2.c
    functionUses: 1
    functionsReached:
    - pim_is_grp_ssm
    - igmpv3_report_isex
    - pim_inet4_dump
    - igmp_validate_checksum
    - zlog_warn
    - zlog_debug
    - on_trace
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int igmp_v2_recv_report(struct gm_sock *igmp, struct in_addr from,\n\t\t\tconst
      char *from_str, char *igmp_msg, int igmp_msg_len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv2.c:180,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:187,1
    - Dst: igmp_validate_checksum
      Src: /src/frr/pimd/pim_igmpv2.c:193,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv2.c:194,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmpv2.c:201,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv2.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:206,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmpv2.c:225,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv2.c:228,1
    - Dst: igmpv3_report_toin
      Src: /src/frr/pimd/pim_igmpv2.c:249,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 5
    argNames:
    - igmp
    - ip_hdr
    - from_str
    - igmp_msg
    - igmp_msg_len
    argTypes:
    - struct gm_sock*
    - struct ip*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 252
    functionName: igmp_v2_recv_leave
    functionSourceFile: /src/frr/pimd/pim_igmpv2.c
    functionUses: 1
    functionsReached:
    - pim_inet4_dump
    - igmp_validate_checksum
    - zlog_warn
    - zlog_debug
    - igmpv3_report_toin
    - on_trace
    - ntohl
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int igmp_v2_recv_leave(struct gm_sock *igmp, struct ip *ip_hdr,\n\t\t
      \      const char *from_str, char *igmp_msg, int igmp_msg_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_exit
      Src: /src/frr/pimd/pim_instance.c:29,1
    - Dst: pim_ssm_terminate
      Src: /src/frr/pimd/pim_instance.c:32,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_instance.c:37,1
    - Dst: pim_instance_mlag_terminate
      Src: /src/frr/pimd/pim_instance.c:39,1
    - Dst: pim_upstream_terminate
      Src: /src/frr/pimd/pim_instance.c:41,1
    - Dst: pim_rp_free
      Src: /src/frr/pimd/pim_instance.c:43,1
    - Dst: pim_bsm_proc_free
      Src: /src/frr/pimd/pim_instance.c:45,1
    - Dst: hash_clean_and_free
      Src: /src/frr/pimd/pim_instance.c:48,1
    - Dst: pim_if_terminate
      Src: /src/frr/pimd/pim_instance.c:50,1
    - Dst: pim_oil_terminate
      Src: /src/frr/pimd/pim_instance.c:52,1
    - Dst: pim_msdp_exit
      Src: /src/frr/pimd/pim_instance.c:54,1
    - Dst: close
      Src: /src/frr/pimd/pim_instance.c:56,1
    - Dst: pim_mroute_socket_disable
      Src: /src/frr/pimd/pim_instance.c:58,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_instance.c:60,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_instance.c:61,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_instance.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 27
    functionDepth: 5
    functionLinenumber: 27
    functionLinenumberEnd: 65
    functionName: pim_instance_terminate
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 0
    functionsReached:
    - hash_clean_and_free
    - list_delete
    - pim_bsm_proc_free
    - pim_if_terminate
    - pim_instance_mlag_terminate
    - close
    - pim_rp_free
    - pim_mroute_socket_disable
    - pim_ssm_terminate
    - pim_msdp_exit
    - pim_upstream_terminate
    - pim_vxlan_exit
    - XFREE
    - pim_oil_terminate
    linkageType: ''
    returnType: void
    signature: void pim_instance_terminate(struct pim_instance *pim)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_instance.c:72,1
    - Dst: pim_if_init
      Src: /src/frr/pimd/pim_instance.c:74,1
    - Dst: pim_msdp_init
      Src: /src/frr/pimd/pim_instance.c:88,1
    - Dst: pim_vxlan_init
      Src: /src/frr/pimd/pim_instance.c:89,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_instance.c:91,1
    - Dst: hash_create_size
      Src: /src/frr/pimd/pim_instance.c:92,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_instance.c:96,1
    - Dst: pim_ssm_init
      Src: /src/frr/pimd/pim_instance.c:98,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_instance.c:100,1
    - Dst: pim_rp_init
      Src: /src/frr/pimd/pim_instance.c:107,1
    - Dst: pim_bsm_proc_init
      Src: /src/frr/pimd/pim_instance.c:109,1
    - Dst: pim_oil_init
      Src: /src/frr/pimd/pim_instance.c:111,1
    - Dst: pim_upstream_init
      Src: /src/frr/pimd/pim_instance.c:113,1
    - Dst: pim_instance_mlag_init
      Src: /src/frr/pimd/pim_instance.c:115,1
    - Dst: pim_reg_sock
      Src: /src/frr/pimd/pim_instance.c:120,1
    - Dst: assert
      Src: /src/frr/pimd/pim_instance.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 121
        line_start: 121
        source_file: /src/frr/pimd/pim_instance.c
    constantsTouched: []
    func_position:
      end: 131
      start: 67
    functionDepth: 6
    functionLinenumber: 67
    functionLinenumberEnd: 131
    functionName: pim_instance_init
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 0
    functionsReached:
    - hash_create_size
    - pim_ssm_init
    - pim_oil_init
    - snprintf
    - XCALLOC
    - pim_msdp_init
    - pim_if_init
    - pim_reg_sock
    - pim_vxlan_init
    - zlog_debug
    - list_new
    - pim_bsm_proc_init
    - pim_upstream_init
    - pim_rp_init
    - pim_instance_mlag_init
    - assert
    linkageType: ''
    returnType: struct pim_instance
    signature: struct pim_instance *pim_instance_init(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_id
      Src: /src/frr/pimd/pim_instance.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: pim_get_pim_instance
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 3
    functionsReached:
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct pim_instance
    signature: struct pim_instance *pim_get_pim_instance(vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_instance_init
      Src: /src/frr/pimd/pim_instance.c:145,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_instance.c:147,1
    - Dst: pim_ssmpingd_init
      Src: /src/frr/pimd/pim_instance.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 143
    functionDepth: 7
    functionLinenumber: 143
    functionLinenumberEnd: 153
    functionName: pim_vrf_new
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 0
    functionsReached:
    - pim_ssmpingd_init
    - zlog_debug
    - pim_instance_init
    linkageType: ''
    returnType: int
    signature: int pim_vrf_new(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_instance.c:162,1
    - Dst: pim_ssmpingd_destroy
      Src: /src/frr/pimd/pim_instance.c:164,1
    - Dst: pim_instance_terminate
      Src: /src/frr/pimd/pim_instance.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 155
    functionDepth: 6
    functionLinenumber: 155
    functionLinenumberEnd: 170
    functionName: pim_vrf_delete
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_ssmpingd_destroy
    - pim_instance_terminate
    linkageType: ''
    returnType: int
    signature: int pim_vrf_delete(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_instance.c:181,1
    - Dst: pim_if_create_pimreg
      Src: /src/frr/pimd/pim_instance.c:187,1
    - Dst: pim_mroute_socket_enable
      Src: /src/frr/pimd/pim_instance.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 176
    functionDepth: 5
    functionLinenumber: 176
    functionLinenumberEnd: 194
    functionName: pim_vrf_enable
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_if_create_pimreg
    - pim_mroute_socket_enable
    linkageType: ''
    returnType: int
    signature: int pim_vrf_enable(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_create_pimreg
      Src: /src/frr/pimd/pim_instance.c:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 5
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: FOR_ALL_INTERFACES
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 65
    functionsReached:
    - pim_if_create_pimreg
    linkageType: ''
    returnType: void
    signature: void FOR_ALL_INTERFACES (vrf, ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: pim_vrf_disable
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pim_vrf_disable(struct vrf *vrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_instance.c:207,1
    - Dst: vty_frame
      Src: /src/frr/pimd/pim_instance.c:214,1
    - Dst: pim_global_config_write_worker
      Src: /src/frr/pimd/pim_instance.c:216,1
    - Dst: vty_endframe
      Src: /src/frr/pimd/pim_instance.c:219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 223
    functionName: pim_vrf_config_write
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 0
    functionsReached:
    - vty_frame
    - RB_FOREACH
    - pim_global_config_write_worker
    - vty_endframe
    linkageType: ''
    returnType: int
    signature: int pim_vrf_config_write(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/pimd/pim_instance.c:227,1
    - Dst: vrf_cmd_init
      Src: /src/frr/pimd/pim_instance.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 231
    functionName: pim_vrf_init
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 3
    functionsReached:
    - vrf_init
    - vrf_cmd_init
    linkageType: ''
    returnType: void
    signature: void pim_vrf_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_instance.c:237,1
    - Dst: pim_ssmpingd_destroy
      Src: /src/frr/pimd/pim_instance.c:244,1
    - Dst: pim_instance_terminate
      Src: /src/frr/pimd/pim_instance.c:245,1
    - Dst: vrf_terminate
      Src: /src/frr/pimd/pim_instance.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 233
    functionDepth: 6
    functionLinenumber: 233
    functionLinenumberEnd: 251
    functionName: pim_vrf_terminate
    functionSourceFile: /src/frr/pimd/pim_instance.c
    functionUses: 2
    functionsReached:
    - pim_instance_terminate
    - RB_FOREACH
    - pim_ssmpingd_destroy
    - vrf_terminate
    linkageType: ''
    returnType: void
    signature: void pim_vrf_terminate(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 41
    functionName: downstream_jpstate_isjoined
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int downstream_jpstate_isjoined(const struct pim_ifchannel *ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: local_receiver_include
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int local_receiver_include(const struct pim_ifchannel *ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: downstream_jpstate_isjoined
      Src: /src/frr/pimd/pim_macro.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: pim_macro_chisin_joins
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 1
    functionsReached:
    - downstream_jpstate_isjoined
    linkageType: ''
    returnType: int
    signature: int pim_macro_chisin_joins(const struct pim_ifchannel *ch)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_macro.c:104,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_macro.c:114,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_macro.c:119,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_macro.c:123,1
    - Dst: pim_macro_spt_assert_metric
      Src: /src/frr/pimd/pim_macro.c:126,1
    - Dst: pim_assert_metric_better
      Src: /src/frr/pimd/pim_macro.c:129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 131
    functionName: pim_macro_ch_lost_assert
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 1
    functionsReached:
    - pim_assert_metric_better
    - pim_addr_is_any
    - pim_addr_cmp
    - zlog_warn
    - pim_macro_spt_assert_metric
    linkageType: ''
    returnType: int
    signature: int pim_macro_ch_lost_assert(const struct pim_ifchannel *ch)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_macro.c:151,1
    - Dst: local_receiver_include
      Src: /src/frr/pimd/pim_macro.c:157,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_macro.c:161,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_macro.c:172,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_macro.c:178,1
    - Dst: pim_macro_ch_lost_assert
      Src: /src/frr/pimd/pim_macro.c:180,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 181
    functionName: pim_macro_chisin_pim_include
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 1
    functionsReached:
    - PIM_I_am_DR
    - pim_addr_cmp
    - local_receiver_include
    - zlog_warn
    - PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
    - pim_macro_ch_lost_assert
    linkageType: ''
    returnType: int
    signature: int pim_macro_chisin_pim_include(const struct pim_ifchannel *ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_macro_chisin_joins
      Src: /src/frr/pimd/pim_macro.c:185,1
    - Dst: pim_macro_chisin_pim_include
      Src: /src/frr/pimd/pim_macro.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: pim_macro_chisin_joins_or_include
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 0
    functionsReached:
    - pim_macro_chisin_pim_include
    - pim_macro_chisin_joins
    linkageType: ''
    returnType: int
    signature: int pim_macro_chisin_joins_or_include(const struct pim_ifchannel *ch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_macro.c:224,1
    - Dst: pim_macro_chisin_joins_or_include
      Src: /src/frr/pimd/pim_macro.c:237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 218
    functionDepth: 4
    functionLinenumber: 218
    functionLinenumberEnd: 238
    functionName: pim_macro_ch_could_assert_eval
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - pim_macro_chisin_joins_or_include
    linkageType: ''
    returnType: int
    signature: int pim_macro_ch_could_assert_eval(const struct pim_ifchannel *ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rpf
    - ifaddr
    argTypes:
    - struct pim_rpf*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 262
    functionName: pim_macro_spt_assert_metric
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct pim_assert_metric
    signature: "struct pim_assert_metric pim_macro_spt_assert_metric(const struct
      pim_rpf *rpf,\n\t\t\t\t\t\t     pim_addr ifaddr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PIM_IF_FLAG_TEST_COULD_ASSERT
      Src: /src/frr/pimd/pim_macro.c:289,1
    - Dst: pim_macro_spt_assert_metric
      Src: /src/frr/pimd/pim_macro.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 296
    functionName: pim_macro_ch_my_assert_metric_eval
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 0
    functionsReached:
    - PIM_IF_FLAG_TEST_COULD_ASSERT
    - pim_macro_spt_assert_metric
    linkageType: ''
    returnType: struct pim_assert_metric
    signature: struct pim_assert_metric pim_macro_ch_my_assert_metric_eval(const struct
      pim_ifchannel *ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_macro_ch_lost_assert
      Src: /src/frr/pimd/pim_macro.c:308,1
    - Dst: pim_macro_chisin_joins_or_include
      Src: /src/frr/pimd/pim_macro.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 312
    functionName: pim_macro_chisin_inherited_olist
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 0
    functionsReached:
    - pim_macro_ch_lost_assert
    - pim_macro_chisin_joins_or_include
    linkageType: ''
    returnType: int
    signature: int pim_macro_chisin_inherited_olist(const struct pim_ifchannel *ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_macro_chisin_inherited_olist
      Src: /src/frr/pimd/pim_macro.c:354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 343
    functionDepth: 5
    functionLinenumber: 343
    functionLinenumberEnd: 355
    functionName: pim_macro_chisin_oiflist
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 2
    functionsReached:
    - pim_macro_chisin_inherited_olist
    linkageType: ''
    returnType: int
    signature: int pim_macro_chisin_oiflist(const struct pim_ifchannel *ch)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_macro.c:381,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_macro.c:387,1
    - Dst: pim_macro_chisin_joins
      Src: /src/frr/pimd/pim_macro.c:393,1
    - Dst: local_receiver_include
      Src: /src/frr/pimd/pim_macro.c:397,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_macro.c:399,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_macro.c:403,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED
      Src: /src/frr/pimd/pim_macro.c:411,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 416
    functionName: pim_macro_assert_tracking_desired_eval
    functionSourceFile: /src/frr/pimd/pim_macro.c
    functionUses: 1
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED
    - PIM_I_am_DR
    - pim_addr_cmp
    - local_receiver_include
    - pim_macro_chisin_joins
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int pim_macro_assert_tracking_desired_eval(const struct pim_ifchannel
      *ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - tb
    - ','
    - max
    - ','
    - rta
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: parse_rtattr_nested
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: parse_rtattr_nested(tb, max, rta)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - tb
    - ','
    - max
    - ','
    - rta
    - ','
    - data
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: parse_rtattr_nested_compat
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: parse_rtattr_nested_compat(tb, max, rta, data, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - nmsg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: NLMSG_TAIL
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NLMSG_TAIL(nmsg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: IFA_RTA
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: IFA_PAYLOAD
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFA_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: IFLA_RTA
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFLA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: IFLA_PAYLOAD
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFLA_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: NDA_RTA
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NDA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: NDA_PAYLOAD
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NDA_PAYLOAD(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: NDTA_RTA
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NDTA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 128
    functionName: NDTA_PAYLOAD
    functionSourceFile: /src/frr/pimd/mtracebis_netlink.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NDTA_PAYLOAD(n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim_ifchannel.c:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ch1
    - ch2
    argTypes:
    - struct pim_ifchannel*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: pim_ifchannel_compare
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_sgaddr_cmp
    linkageType: ''
    returnType: int
    signature: "int pim_ifchannel_compare(const struct pim_ifchannel *ch1,\n\t\t\t
      \ const struct pim_ifchannel *ch2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/pimd/pim_ifchannel.c:68,1
    - Dst: listnode_head
      Src: /src/frr/pimd/pim_ifchannel.c:69,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_ifchannel.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: pim_ifchannel_remove_children
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - listnode_delete
    - list_isempty
    - listnode_head
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_remove_children(struct pim_ifchannel *ch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:86,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:86,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:89,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:89,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_ifchannel.c:92,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:93,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_ifchannel.c:94,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_ifchannel.c:96,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 99
    functionName: pim_ifchannel_find_new_children
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - RB_FOREACH
    - listnode_add_sort
    - pim_addr_cmp
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_find_new_children(struct pim_ifchannel *ch)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:109,1
    - Dst: PIM_I_am_DualActive
      Src: /src/frr/pimd/pim_ifchannel.c:112,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:114,1
    - Dst: pim_mlag_up_local_del
      Src: /src/frr/pimd/pim_ifchannel.c:119,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_ifchannel.c:120,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:138,1
    - Dst: pim_upstream_evaluate_join_desired_interface
      Src: /src/frr/pimd/pim_ifchannel.c:139,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_ifchannel.c:141,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_ifchannel.c:146,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_ifchannel.c:156,1
    - Dst: pim_channel_del_inherited_oif
      Src: /src/frr/pimd/pim_ifchannel.c:158,1
    - Dst: pim_ifchannel_remove_children
      Src: /src/frr/pimd/pim_ifchannel.c:170,1
    - Dst: if
      Src: /src/frr/pimd/pim_ifchannel.c:172,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_ifchannel.c:173,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_ifchannel.c:175,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_ifchannel.c:184,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:188,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:196,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:197,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:198,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_ifchannel.c:201,1
    - Dst: RB_REMOVE
      Src: /src/frr/pimd/pim_ifchannel.c:205,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:208,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_ifchannel.c:211,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:214,1
    - Dst: pim_ifchannel_delete_all
      Src: /src/frr/pimd/pim_ifchannel.c:217,1
    - Dst: RB_EMPTY
      Src: /src/frr/pimd/pim_ifchannel.c:226,1
    - Dst: RB_ROOT
      Src: /src/frr/pimd/pim_ifchannel.c:227,1
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:229,1
    - Dst: pim_ifchannel_delete
      Src: /src/frr/pimd/pim_ifchannel.c:230,1
    - Dst: delete_on_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:234,1
    - Dst: pim_ifchannel_delete
      Src: /src/frr/pimd/pim_ifchannel.c:239,1
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:242,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:250,1
    - Dst: pim_ifchannel_ifjoin_name
      Src: /src/frr/pimd/pim_ifchannel.c:253,1
    - Dst: pim_ifchannel_ifjoin_name
      Src: /src/frr/pimd/pim_ifchannel.c:254,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:259,1
    - Dst: pim_ifchannel_ifjoin_name
      Src: /src/frr/pimd/pim_ifchannel.c:262,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:269,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_ifchannel.c:276,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:282,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_ifchannel.c:297,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_ifchannel.c:305,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:308,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_ifchannel.c:317,1
    - Dst: pim_upstream_eval_inherit_if
      Src: /src/frr/pimd/pim_ifchannel.c:320,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_ifchannel.c:322,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:327,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 101
    functionDepth: 3
    functionLinenumber: 101
    functionLinenumberEnd: 332
    functionName: pim_ifchannel_delete
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 1
    functionsReached:
    - list_delete
    - pim_upstream_update_join_desired
    - delete_on_noinfo
    - oil_if_has
    - RB_EMPTY
    - pim_upstream_eval_inherit_if
    - PIM_UPSTREAM_FLAG_UNSET_MLAG_INTERFACE
    - pim_addr_is_any
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - PIM_I_am_DualActive
    - if
    - RB_ROOT
    - pim_upstream_del
    - pim_ifchannel_ifjoin_name
    - pim_channel_add_oif
    - EVENT_OFF
    - XFREE
    - listnode_delete
    - pim_ifchannel_delete
    - pim_channel_del_oif
    - pim_ifchannel_find
    - pim_mlag_up_local_del
    - RB_REMOVE
    - pim_channel_del_inherited_oif
    - pim_ifchannel_ifjoin_switch
    - pim_upstream_evaluate_join_desired_interface
    - pim_ifchannel_delete_all
    - pim_ifchannel_remove_children
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_delete(struct pim_ifchannel *ch)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:361,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:368,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:373,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:378,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:383,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - ifjoin_state
    - flags
    argTypes:
    - enum pim_ifjoin_state
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 390
    functionName: pim_ifchannel_ifjoin_name
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 2
    functionsReached:
    - PIM_IF_FLAG_TEST_S_G_RPT
    linkageType: ''
    returnType: char
    signature: "char *pim_ifchannel_ifjoin_name(enum pim_ifjoin_state ifjoin_state,\n\t\t\t\t
      \     int flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ifassert_state
    argTypes:
    - enum pim_ifassert_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 404
    functionName: pim_ifchannel_ifassert_name
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *pim_ifchannel_ifassert_name(enum pim_ifassert_state ifassert_state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:414,1
    - Dst: pim_ifassert_winner_set
      Src: /src/frr/pimd/pim_ifchannel.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 418
    functionName: reset_ifassert_state
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    - pim_ifassert_winner_set
    linkageType: ''
    returnType: void
    signature: void reset_ifassert_state(struct pim_ifchannel *ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ifchannel.c:429,1
    - Dst: RB_FIND
      Src: /src/frr/pimd/pim_ifchannel.c:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ifp
    - sg
    argTypes:
    - struct interface*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 439
    functionName: pim_ifchannel_find
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 4
    functionsReached:
    - RB_FIND
    - zlog_warn
    linkageType: ''
    returnType: struct pim_ifchannel
    signature: struct pim_ifchannel *pim_ifchannel_find(struct interface *ifp, pim_sgaddr
      *sg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:450,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:459,1
    - Dst: pim_ifchannel_update_could_assert
      Src: /src/frr/pimd/pim_ifchannel.c:460,1
    - Dst: pim_ifchannel_update_assert_tracking_desired
      Src: /src/frr/pimd/pim_ifchannel.c:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ch
    - membership
    argTypes:
    - struct pim_ifchannel*
    - enum pim_ifmembership
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 462
    functionName: ifmembership_set
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_ifchannel_update_could_assert
    - pim_ifchannel_update_assert_tracking_desired
    - zlog_debug
    - pim_upstream_update_join_desired
    linkageType: ''
    returnType: void
    signature: "void ifmembership_set(struct pim_ifchannel *ch,\n\t\t\t     enum pim_ifmembership
      membership)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_ifchannel.c:471,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_ifchannel.c:473,1
    - Dst: ifmembership_set
      Src: /src/frr/pimd/pim_ifchannel.c:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 470
        line_start: 470
        source_file: /src/frr/pimd/pim_ifchannel.c
    constantsTouched: []
    func_position:
      end: 475
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 475
    functionName: pim_ifchannel_membership_clear
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 2
    functionsReached:
    - RB_FOREACH
    - ifmembership_set
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_membership_clear(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_ifchannel.c:483,1
    - Dst: RB_FOREACH_SAFE
      Src: /src/frr/pimd/pim_ifchannel.c:485,1
    - Dst: delete_on_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 482
        line_start: 482
        source_file: /src/frr/pimd/pim_ifchannel.c
    constantsTouched: []
    func_position:
      end: 487
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 487
    functionName: pim_ifchannel_delete_on_noinfo
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH_SAFE
    - delete_on_noinfo
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_delete_on_noinfo(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:501,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:502,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_ifchannel.c:504,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_ifchannel.c:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 495
    functionDepth: 2
    functionLinenumber: 495
    functionLinenumberEnd: 512
    functionName: pim_ifchannel_find_parent
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - pim_ifchannel_find
    - listnode_add
    linkageType: ''
    returnType: struct pim_ifchannel
    signature: struct pim_ifchannel *pim_ifchannel_find_parent(struct pim_ifchannel
      *ch)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_ifchannel.c:521,1
    - Dst: PIM_IF_FLAG_SET_PROTO_PIM
      Src: /src/frr/pimd/pim_ifchannel.c:524,1
    - Dst: PIM_IF_FLAG_SET_PROTO_IGMP
      Src: /src/frr/pimd/pim_ifchannel.c:527,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_ifchannel.c:536,1
    - Dst: PIM_IF_FLAG_SET_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:541,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_ifchannel.c:545,1
    - Dst: pim_ifchannel_find_parent
      Src: /src/frr/pimd/pim_ifchannel.c:546,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:547,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_ifchannel.c:548,1
    - Dst: pim_ifchannel_find_new_children
      Src: /src/frr/pimd/pim_ifchannel.c:554,1
    - Dst: RB_INSERT
      Src: /src/frr/pimd/pim_ifchannel.c:562,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_ifchannel.c:564,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_ifchannel.c:568,1
    - Dst: pim_macro_ch_my_assert_metric_eval
      Src: /src/frr/pimd/pim_ifchannel.c:570,1
    - Dst: pim_macro_ch_my_assert_metric_eval
      Src: /src/frr/pimd/pim_ifchannel.c:571,1
    - Dst: reset_ifassert_state
      Src: /src/frr/pimd/pim_ifchannel.c:578,1
    - Dst: pim_macro_ch_could_assert_eval
      Src: /src/frr/pimd/pim_ifchannel.c:579,1
    - Dst: PIM_IF_FLAG_SET_COULD_ASSERT
      Src: /src/frr/pimd/pim_ifchannel.c:580,1
    - Dst: PIM_IF_FLAG_UNSET_COULD_ASSERT
      Src: /src/frr/pimd/pim_ifchannel.c:582,1
    - Dst: pim_macro_assert_tracking_desired_eval
      Src: /src/frr/pimd/pim_ifchannel.c:584,1
    - Dst: PIM_IF_FLAG_SET_ASSERT_TRACKING_DESIRED
      Src: /src/frr/pimd/pim_ifchannel.c:585,1
    - Dst: PIM_IF_FLAG_UNSET_ASSERT_TRACKING_DESIRED
      Src: /src/frr/pimd/pim_ifchannel.c:587,1
    - Dst: PIM_I_am_DualActive
      Src: /src/frr/pimd/pim_ifchannel.c:592,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_ifchannel.c:596,1
    - Dst: pim_mlag_up_local_add
      Src: /src/frr/pimd/pim_ifchannel.c:597,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:600,1
    - Dst: PIM_IF_FLAG_SET_PROTO_PIM
      Src: /src/frr/pimd/pim_ifchannel.c:607,1
    - Dst: PIM_IF_FLAG_SET_PROTO_IGMP
      Src: /src/frr/pimd/pim_ifchannel.c:610,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:613,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 4
    argNames:
    - ifp
    - sg
    - source_flags
    - up_flags
    argTypes:
    - struct interface*
    - pim_sgaddr*
    - uint8_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 514
    functionDepth: 7
    functionLinenumber: 514
    functionLinenumberEnd: 617
    functionName: pim_ifchannel_add
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_upstream_add
    - PIM_IF_FLAG_UNSET_COULD_ASSERT
    - XCALLOC
    - pim_addr_is_any
    - RB_INSERT
    - pim_ifchannel_find_new_children
    - pim_mlag_up_local_add
    - zlog_debug
    - PIM_IF_FLAG_SET_PROTO_PIM
    - PIM_I_am_DualActive
    - PIM_UPSTREAM_FLAG_SET_MLAG_INTERFACE
    - pim_ifchannel_find_parent
    - pim_macro_assert_tracking_desired_eval
    - listnode_add_sort
    - pim_macro_ch_my_assert_metric_eval
    - PIM_IF_FLAG_SET_PROTO_IGMP
    - pim_macro_ch_could_assert_eval
    - pim_ifchannel_find
    - PIM_IF_FLAG_SET_S_G_RPT
    - reset_ifassert_state
    - snprintfrr
    - PIM_IF_FLAG_SET_COULD_ASSERT
    - list_new
    - PIM_IF_FLAG_SET_ASSERT_TRACKING_DESIRED
    - PIM_IF_FLAG_UNSET_ASSERT_TRACKING_DESIRED
    linkageType: ''
    returnType: struct pim_ifchannel
    signature: "struct pim_ifchannel *pim_ifchannel_add(struct interface *ifp, pim_sgaddr
      *sg,\n\t\t\t\t\tuint8_t source_flags, int up_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:621,1
    - Dst: pim_forward_stop
      Src: /src/frr/pimd/pim_ifchannel.c:622,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_PIM
      Src: /src/frr/pimd/pim_ifchannel.c:624,1
    - Dst: PIM_IF_FLAG_UNSET_PROTO_PIM
      Src: /src/frr/pimd/pim_ifchannel.c:626,1
    - Dst: delete_on_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 619
    functionDepth: 4
    functionLinenumber: 619
    functionLinenumberEnd: 629
    functionName: ifjoin_to_noinfo
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - PIM_IF_FLAG_UNSET_PROTO_PIM
    - pim_forward_stop
    - PIM_UPSTREAM_FLAG_UNSET_SRC_PIM
    - delete_on_noinfo
    - pim_ifchannel_ifjoin_switch
    linkageType: ''
    returnType: void
    signature: void ifjoin_to_noinfo(struct pim_ifchannel *ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_ifchannel.c:635,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:638,1
    - Dst: ifjoin_to_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 631
    functionDepth: 5
    functionLinenumber: 631
    functionLinenumberEnd: 643
    functionName: on_ifjoin_expiry_timer
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - ifjoin_to_noinfo
    - zlog_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void on_ifjoin_expiry_timer(struct event *t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_ifchannel.c:652,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:655,1
    - Dst: pim_ifchannel_ifjoin_name
      Src: /src/frr/pimd/pim_ifchannel.c:657,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:662,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_ifchannel.c:665,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_ifchannel.c:672,1
    - Dst: ifjoin_to_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:676,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:685,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_ifchannel.c:688,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_ifchannel.c:698,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_ifchannel.c:701,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_ifchannel.c:704,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 645
    functionDepth: 5
    functionLinenumber: 645
    functionLinenumberEnd: 710
    functionName: on_ifjoin_prune_pending_timer
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_channel_del_oif
    - pim_upstream_update_join_desired
    - listcount
    - pim_jp_agg_single_upstream_send
    - PIM_IF_FLAG_TEST_S_G_RPT
    - ifjoin_to_noinfo
    - zlog_debug
    - EVENT_ARG
    - pim_upstream_mroute_add
    - pim_ifchannel_ifjoin_name
    linkageType: ''
    returnType: void
    signature: void on_ifjoin_prune_pending_timer(struct event *t)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_ifchannel.c:721,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_ifchannel.c:729,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ifchannel.c:731,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_ifchannel.c:739,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ifchannel.c:740,1
    - Dst: pim_upstream_join_suppress
      Src: /src/frr/pimd/pim_ifchannel.c:750,1
    - Dst: pim_upstream_join_timer_decrease_to_t_override
      Src: /src/frr/pimd/pim_ifchannel.c:759,1
    - Dst: pim_upstream_join_timer_decrease_to_t_override
      Src: /src/frr/pimd/pim_ifchannel.c:765,1
    - Dst: pim_upstream_join_timer_decrease_to_t_override
      Src: /src/frr/pimd/pim_ifchannel.c:771,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 6
    argNames:
    - is_join
    - recv_ifp
    - upstream
    - sg
    - source_flags
    - holdtime
    argTypes:
    - int
    - struct interface*
    - pim_addr
    - pim_sgaddr*
    - uint8_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 712
    functionDepth: 2
    functionLinenumber: 712
    functionLinenumberEnd: 772
    functionName: check_recv_upstream
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_upstream_find
    - pim_addr_cmp
    - pim_upstream_join_timer_decrease_to_t_override
    - zlog_warn
    - pim_upstream_join_suppress
    - pim_rpf_addr_is_inaddr_any
    linkageType: ''
    returnType: void
    signature: "void check_recv_upstream(int is_join, struct interface *recv_ifp,\n\t\t\t\tpim_addr
      upstream, pim_sgaddr *sg,\n\t\t\t\tuint8_t source_flags, int holdtime)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_ifchannel.c:782,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_ifchannel.c:784,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ifchannel.c:790,1
    - Dst: check_recv_upstream
      Src: /src/frr/pimd/pim_ifchannel.c:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - is_join
    - recv_ifp
    - upstream
    - sg
    - source_flags
    - holdtime
    argTypes:
    - int
    - struct interface*
    - pim_addr
    - pim_sgaddr*
    - uint8_t
    - uint16_t
    assertStmts:
    - condition: (recv_pim_ifp)
      pos:
        line_end: 781
        line_start: 781
        source_file: /src/frr/pimd/pim_ifchannel.c
    constantsTouched: []
    func_position:
      end: 803
      start: 774
    functionDepth: 3
    functionLinenumber: 774
    functionLinenumberEnd: 803
    functionName: nonlocal_upstream
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    - zlog_warn
    - check_recv_upstream
    - assert
    linkageType: ''
    returnType: int
    signature: "int nonlocal_upstream(int is_join, struct interface *recv_ifp,\n\t\t\t
      \    pim_addr upstream, pim_sgaddr *sg,\n\t\t\t     uint8_t source_flags, uint16_t
      holdtime)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:808,1
    - Dst: PIM_IF_FLAG_UNSET_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:809,1
    - Dst: pim_upstream_evaluate_join_desired_interface
      Src: /src/frr/pimd/pim_ifchannel.c:813,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_ifchannel.c:816,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ch
    - pim_ifp
    argTypes:
    - struct pim_ifchannel*
    - struct pim_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 805
    functionDepth: 3
    functionLinenumber: 805
    functionLinenumberEnd: 823
    functionName: pim_ifchannel_ifjoin_handler
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - pim_upstream_update_join_desired
    - pim_channel_add_oif
    - pim_ifchannel_ifjoin_switch
    - pim_upstream_evaluate_join_desired_interface
    - PIM_IF_FLAG_UNSET_S_G_RPT
    linkageType: ''
    returnType: void
    signature: "void pim_ifchannel_ifjoin_handler(struct pim_ifchannel *ch,\n\t\tstruct
      pim_interface *pim_ifp)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: nonlocal_upstream
      Src: /src/frr/pimd/pim_ifchannel.c:833,1
    - Dst: pim_ifchannel_add
      Src: /src/frr/pimd/pim_ifchannel.c:838,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_ifchannel.c:858,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_ifchannel.c:861,1
    - Dst: assert
      Src: /src/frr/pimd/pim_ifchannel.c:865,1
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:869,1
    - Dst: pim_macro_chisin_oiflist
      Src: /src/frr/pimd/pim_ifchannel.c:870,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_ifchannel.c:871,1
    - Dst: pim_forward_start
      Src: /src/frr/pimd/pim_ifchannel.c:873,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
      Src: /src/frr/pimd/pim_ifchannel.c:879,1
    - Dst: pim_upstream_ref
      Src: /src/frr/pimd/pim_ifchannel.c:883,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_ifchannel.c:886,1
    - Dst: assert
      Src: /src/frr/pimd/pim_ifchannel.c:891,1
    - Dst: event_timer_remain_second
      Src: /src/frr/pimd/pim_ifchannel.c:899,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:923,1
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:927,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:929,1
    - Dst: delete_on_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:930,1
    - Dst: pim_ifchannel_ifjoin_handler
      Src: /src/frr/pimd/pim_ifchannel.c:933,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:946,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:950,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:958,1
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:959,1
    - Dst: pim_ifchannel_ifjoin_handler
      Src: /src/frr/pimd/pim_ifchannel.c:964,1
    - Dst: event_timer_remain_second
      Src: /src/frr/pimd/pim_ifchannel.c:967,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:973,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_ifchannel.c:983,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 6
    argNames:
    - ifp
    - neigh_addr
    - upstream
    - sg
    - source_flags
    - holdtime
    argTypes:
    - struct interface*
    - pim_addr
    - pim_addr
    - pim_sgaddr*
    - uint8_t
    - uint16_t
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 864
        line_start: 864
        source_file: /src/frr/pimd/pim_ifchannel.c
    - condition: (!ch->t_ifjoin_prune_pending_timer)
      pos:
        line_end: 890
        line_start: 890
        source_file: /src/frr/pimd/pim_ifchannel.c
    constantsTouched: []
    func_position:
      end: 986
      start: 826
    functionDepth: 8
    functionLinenumber: 826
    functionLinenumberEnd: 986
    functionName: pim_ifchannel_join_add
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 1
    functionsReached:
    - pim_upstream_ref
    - pim_forward_start
    - pim_upstream_inherited_olist
    - assert_action_a5
    - PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
    - pim_addr_is_any
    - nonlocal_upstream
    - pim_upstream_keep_alive_timer_start
    - pim_macro_chisin_oiflist
    - event_timer_remain_second
    - zlog_warn
    - EVENT_OFF
    - delete_on_noinfo
    - pim_ifchannel_ifjoin_switch
    - pim_ifchannel_ifjoin_handler
    - pim_ifchannel_add
    - assert
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void pim_ifchannel_join_add(struct interface *ifp, pim_addr neigh_addr,\n\t\t\t
      \   pim_addr upstream, pim_sgaddr *sg,\n\t\t\t    uint8_t source_flags, uint16_t
      holdtime)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: nonlocal_upstream
      Src: /src/frr/pimd/pim_ifchannel.c:996,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_ifchannel.c:1001,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1004,1
    - Dst: pim_ifchannel_add
      Src: /src/frr/pimd/pim_ifchannel.c:1010,1
    - Dst: PIM_IF_FLAG_SET_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:1019,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_ifchannel.c:1022,1
    - Dst: pim_if_jp_override_interval_msec
      Src: /src/frr/pimd/pim_ifchannel.c:1024,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1033,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1034,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_ifchannel.c:1035,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_ifchannel.c:1039,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:1042,1
    - Dst: pim_ifchannel_ifjoin_switch
      Src: /src/frr/pimd/pim_ifchannel.c:1059,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_ifchannel.c:1062,1
    - Dst: pim_if_jp_override_interval_msec
      Src: /src/frr/pimd/pim_ifchannel.c:1064,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1071,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_ifchannel.c:1072,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1079,1
    - Dst: event_timer_remain_second
      Src: /src/frr/pimd/pim_ifchannel.c:1090,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1095,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_ifchannel.c:1098,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1106,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_ifchannel.c:1107,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1115,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_ifchannel.c:1116,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 5
    argNames:
    - ifp
    - upstream
    - sg
    - source_flags
    - holdtime
    argTypes:
    - struct interface*
    - pim_addr
    - pim_sgaddr*
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 988
    functionDepth: 8
    functionLinenumber: 988
    functionLinenumberEnd: 1122
    functionName: pim_ifchannel_prune
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 1
    functionsReached:
    - pim_ifchannel_find
    - pim_upstream_update_join_desired
    - PIM_IF_FLAG_SET_S_G_RPT
    - listcount
    - nonlocal_upstream
    - event_add_timer_msec
    - event_timer_remain_second
    - zlog_debug
    - EVENT_OFF
    - pim_ifchannel_ifjoin_switch
    - pim_if_jp_override_interval_msec
    - pim_ifchannel_add
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: "void pim_ifchannel_prune(struct interface *ifp, pim_addr upstream,\n\t\t\t
      pim_sgaddr *sg, uint8_t source_flags,\n\t\t\t uint16_t holdtime)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1136,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1143,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:1151,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_ifchannel.c:1152,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1154,1
    - Dst: pim_ifchannel_add
      Src: /src/frr/pimd/pim_ifchannel.c:1165,1
    - Dst: ifmembership_set
      Src: /src/frr/pimd/pim_ifchannel.c:1167,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:1169,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_ifchannel.c:1170,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_ifchannel.c:1176,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1178,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1185,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_ifchannel.c:1192,1
    - Dst: pim_upstream_evaluate_join_desired_interface
      Src: /src/frr/pimd/pim_ifchannel.c:1193,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_ifchannel.c:1195,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:1198,1
    - Dst: prefix_list_lookup
      Src: /src/frr/pimd/pim_ifchannel.c:1204,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_ifchannel.c:1208,1
    - Dst: prefix_list_apply_ext
      Src: /src/frr/pimd/pim_ifchannel.c:1209,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_ifchannel.c:1212,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_ifchannel.c:1219,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 3
    argNames:
    - ifp
    - sg
    - is_vxlan
    argTypes:
    - struct interface*
    - pim_sgaddr*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1124
    functionDepth: 8
    functionLinenumber: 1124
    functionLinenumberEnd: 1224
    functionName: pim_ifchannel_local_membership_add
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 1
    functionsReached:
    - pim_is_grp_ssm
    - pim_ifchannel_find
    - pim_upstream_update_join_desired
    - prefix_list_lookup
    - pim_addr_is_any
    - pim_upstream_find
    - ALL_LIST_ELEMENTS_RO
    - pim_addr_to_prefix
    - pim_channel_add_oif
    - prefix_list_apply_ext
    - zlog_debug
    - ifmembership_set
    - pim_ifchannel_add
    - pim_upstream_evaluate_join_desired_interface
    linkageType: ''
    returnType: int
    signature: "int pim_ifchannel_local_membership_add(struct interface *ifp, pim_sgaddr
      *sg,\n\t\t\t\t       bool is_vxlan)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_ifchannel.c:1238,1
    - Dst: ifmembership_set
      Src: /src/frr/pimd/pim_ifchannel.c:1241,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_ifchannel.c:1243,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_ifchannel.c:1244,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_ifchannel.c:1250,1
    - Dst: if
      Src: /src/frr/pimd/pim_ifchannel.c:1257,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1258,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_ifchannel.c:1262,1
    - Dst: if
      Src: /src/frr/pimd/pim_ifchannel.c:1269,1
    - Dst: pim_upstream_evaluate_join_desired_interface
      Src: /src/frr/pimd/pim_ifchannel.c:1269,1
    - Dst: oil_if_has
      Src: /src/frr/pimd/pim_ifchannel.c:1272,1
    - Dst: pim_channel_del_inherited_oif
      Src: /src/frr/pimd/pim_ifchannel.c:1273,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_IGMP
      Src: /src/frr/pimd/pim_ifchannel.c:1284,1
    - Dst: PIM_IF_FLAG_UNSET_PROTO_IGMP
      Src: /src/frr/pimd/pim_ifchannel.c:1286,1
    - Dst: delete_on_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:1288,1
    - Dst: pim_ifchannel_update_could_assert
      Src: /src/frr/pimd/pim_ifchannel.c:1291,1
    - Dst: PIM_FORCE_BOOLEAN
      Src: /src/frr/pimd/pim_ifchannel.c:1294,1
    - Dst: PIM_IF_FLAG_TEST_COULD_ASSERT
      Src: /src/frr/pimd/pim_ifchannel.c:1294,1
    - Dst: PIM_FORCE_BOOLEAN
      Src: /src/frr/pimd/pim_ifchannel.c:1296,1
    - Dst: pim_macro_ch_could_assert_eval
      Src: /src/frr/pimd/pim_ifchannel.c:1296,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1302,1
    - Dst: PIM_IF_FLAG_SET_COULD_ASSERT
      Src: /src/frr/pimd/pim_ifchannel.c:1309,1
    - Dst: PIM_IF_FLAG_UNSET_COULD_ASSERT
      Src: /src/frr/pimd/pim_ifchannel.c:1312,1
    - Dst: assert_action_a4
      Src: /src/frr/pimd/pim_ifchannel.c:1315,1
    - Dst: pim_ifchannel_update_my_assert_metric
      Src: /src/frr/pimd/pim_ifchannel.c:1319,1
    - Dst: pim_ifchannel_update_my_assert_metric
      Src: /src/frr/pimd/pim_ifchannel.c:1330,1
    - Dst: pim_macro_ch_my_assert_metric_eval
      Src: /src/frr/pimd/pim_ifchannel.c:1333,1
    - Dst: pim_assert_metric_match
      Src: /src/frr/pimd/pim_ifchannel.c:1335,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1339,1
    - Dst: pim_assert_metric_better
      Src: /src/frr/pimd/pim_ifchannel.c:1352,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - ifp
    - sg
    argTypes:
    - struct interface*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1356
      start: 1226
    functionDepth: 5
    functionLinenumber: 1226
    functionLinenumberEnd: 1356
    functionName: pim_ifchannel_local_membership_del
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - PIM_IF_FLAG_TEST_COULD_ASSERT
    - pim_upstream_find
    - ifmembership_set
    - delete_on_noinfo
    - pim_ifchannel_update_my_assert_metric
    - oil_if_has
    - PIM_IF_FLAG_UNSET_COULD_ASSERT
    - pim_addr_is_any
    - pim_ifchannel_update_could_assert
    - zlog_debug
    - PIM_IF_FLAG_UNSET_PROTO_IGMP
    - PIM_UPSTREAM_FLAG_UNSET_SRC_IGMP
    - if
    - assert_action_a4
    - pim_macro_ch_my_assert_metric_eval
    - PIM_FORCE_BOOLEAN
    - pim_macro_ch_could_assert_eval
    - pim_assert_metric_better
    - pim_ifchannel_find
    - pim_channel_del_inherited_oif
    - pim_assert_metric_match
    - PIM_IF_FLAG_SET_COULD_ASSERT
    - pim_upstream_evaluate_join_desired_interface
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_local_membership_del(struct interface *ifp, pim_sgaddr
      *sg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PIM_FORCE_BOOLEAN
      Src: /src/frr/pimd/pim_ifchannel.c:1360,1
    - Dst: PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED
      Src: /src/frr/pimd/pim_ifchannel.c:1361,1
    - Dst: PIM_FORCE_BOOLEAN
      Src: /src/frr/pimd/pim_ifchannel.c:1363,1
    - Dst: pim_macro_assert_tracking_desired_eval
      Src: /src/frr/pimd/pim_ifchannel.c:1363,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1369,1
    - Dst: PIM_IF_FLAG_SET_ASSERT_TRACKING_DESIRED
      Src: /src/frr/pimd/pim_ifchannel.c:1376,1
    - Dst: PIM_IF_FLAG_UNSET_ASSERT_TRACKING_DESIRED
      Src: /src/frr/pimd/pim_ifchannel.c:1379,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_ifchannel.c:1382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1358
    functionDepth: 3
    functionLinenumber: 1358
    functionLinenumberEnd: 1385
    functionName: pim_ifchannel_update_assert_tracking_desired
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 2
    functionsReached:
    - PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED
    - assert_action_a5
    - zlog_debug
    - PIM_FORCE_BOOLEAN
    - PIM_IF_FLAG_SET_ASSERT_TRACKING_DESIRED
    - pim_macro_assert_tracking_desired_eval
    - PIM_IF_FLAG_UNSET_ASSERT_TRACKING_DESIRED
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_update_assert_tracking_desired(struct pim_ifchannel
      *ch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_ifchannel.c:1399,1
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_ifchannel.c:1409,1
    - Dst: pim_forward_start
      Src: /src/frr/pimd/pim_ifchannel.c:1415,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - new_ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1419
      start: 1393
    functionDepth: 4
    functionLinenumber: 1393
    functionLinenumberEnd: 1419
    functionName: pim_ifchannel_scan_forward_start
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - pim_forward_start
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void pim_ifchannel_scan_forward_start(struct interface *new_ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_ifchannel.c:1439,1
    - Dst: pim_ifchannel_ifjoin_name
      Src: /src/frr/pimd/pim_ifchannel.c:1441,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_ifchannel.c:1446,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:1447,1
    - Dst: switch
      Src: /src/frr/pimd/pim_ifchannel.c:1450,1
    - Dst: case
      Src: /src/frr/pimd/pim_ifchannel.c:1454,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_ifchannel.c:1470,1
    - Dst: PIM_IF_FLAG_UNSET_S_G_RPT
      Src: /src/frr/pimd/pim_ifchannel.c:1472,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_ifchannel.c:1475,1
    - Dst: pim_upstream_empty_inherited_olist
      Src: /src/frr/pimd/pim_ifchannel.c:1476,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_ifchannel.c:1478,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_ifchannel.c:1482,1
    - Dst: delete_on_noinfo
      Src: /src/frr/pimd/pim_ifchannel.c:1487,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - ch
    - eom
    - join
    argTypes:
    - struct pim_ifchannel*
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1428
    functionDepth: 3
    functionLinenumber: 1428
    functionLinenumberEnd: 1489
    functionName: pim_ifchannel_set_star_g_join_state
    functionSourceFile: /src/frr/pimd/pim_ifchannel.c
    functionUses: 0
    functionsReached:
    - case
    - switch
    - pim_upstream_empty_inherited_olist
    - pim_upstream_update_join_desired
    - pim_channel_add_oif
    - PIM_IF_FLAG_TEST_S_G_RPT
    - I_am_RP
    - zlog_debug
    - EVENT_OFF
    - delete_on_noinfo
    - ALL_LIST_ELEMENTS
    - PIM_IF_FLAG_UNSET_S_G_RPT
    - pim_ifchannel_ifjoin_name
    linkageType: ''
    returnType: void
    signature: "void pim_ifchannel_set_star_g_join_state(struct pim_ifchannel *ch,
      int eom,\n\t\t\t\t\t uint8_t join)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct igmp_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: igmp_stats_init
    functionSourceFile: /src/frr/pimd/pim_igmp_stats.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void igmp_stats_init(struct igmp_stats *stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct igmp_stats*
    - struct igmp_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: igmp_stats_add
    functionSourceFile: /src/frr/pimd/pim_igmp_stats.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void igmp_stats_add(struct igmp_stats *a, struct igmp_stats *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_str.c:22,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_str.c:23,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_str.c:24,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_str.c:26,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - onfail
    - p
    - buf
    - buf_size
    argTypes:
    - char*
    - struct prefix*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 30
    functionName: pim_addr_dump
    functionSourceFile: /src/frr/pimd/pim_str.c
    functionUses: 1
    functionsReached:
    - inet_ntop
    - zlog_warn
    - safe_strerror
    - snprintf
    linkageType: ''
    returnType: void
    signature: "void pim_addr_dump(const char *onfail, struct prefix *p, char *buf,\n\t\t
      \  int buf_size)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:27,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - label
    - ifp
    - src
    argTypes:
    - char*
    - struct interface*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: on_trace
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 4
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void on_trace(const char *label, struct interface *ifp, pim_addr src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 6
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - isset
    - value
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 38
    functionName: tlv_trace_bool
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void tlv_trace_bool(const char *label, const char *tlv_name,\n\t\t\t
      \  const char *ifname, pim_addr src_addr, int isset,\n\t\t\t   int value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 6
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - isset
    - value
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: tlv_trace_uint16
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void tlv_trace_uint16(const char *label, const char *tlv_name,\n\t\t\t
      \    const char *ifname, pim_addr src_addr, int isset,\n\t\t\t     uint16_t
      value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 6
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - isset
    - value
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: tlv_trace_uint32
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void tlv_trace_uint32(const char *label, const char *tlv_name,\n\t\t\t
      \    const char *ifname, pim_addr src_addr, int isset,\n\t\t\t     uint32_t
      value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 6
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - isset
    - value
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: tlv_trace_uint32_hex
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void tlv_trace_uint32_hex(const char *label, const char *tlv_name,\n\t\t\t\t
      const char *ifname, pim_addr src_addr,\n\t\t\t\t int isset, uint32_t value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:75,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_hello.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 6
    argNames:
    - label
    - tlv_name
    - ifname
    - src_addr
    - isset
    - addr_list
    argTypes:
    - char*
    - char*
    - char*
    - pim_addr
    - int
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: tlv_trace_list
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - listcount
    linkageType: ''
    returnType: void
    signature: "void tlv_trace_list(const char *label, const char *tlv_name,\n\t\t\t
      \  const char *ifname, pim_addr src_addr, int isset,\n\t\t\t   struct list *addr_list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - code
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 92
    functionName: FREE_ADDR_LIST_THEN_RETURN
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE_ADDR_LIST_THEN_RETURN(code)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_hello.c:110,1
    - Dst: assert
      Src: /src/frr/pimd/pim_hello.c:113,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:117,1
    - Dst: assert
      Src: /src/frr/pimd/pim_hello.c:128,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:139,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:143,1
    - Dst: PIM_TLV_GET_TYPE
      Src: /src/frr/pimd/pim_hello.c:146,1
    - Dst: PIM_TLV_GET_LENGTH
      Src: /src/frr/pimd/pim_hello.c:148,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:153,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:158,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:162,1
    - Dst: pim_tlv_parse_holdtime
      Src: /src/frr/pimd/pim_hello.c:169,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:173,1
    - Dst: pim_tlv_parse_lan_prune_delay
      Src: /src/frr/pimd/pim_hello.c:177,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:182,1
    - Dst: pim_tlv_parse_dr_priority
      Src: /src/frr/pimd/pim_hello.c:186,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:190,1
    - Dst: pim_tlv_parse_generation_id
      Src: /src/frr/pimd/pim_hello.c:194,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:198,1
    - Dst: pim_tlv_parse_addr_list
      Src: /src/frr/pimd/pim_hello.c:202,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:211,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:218,1
    - Dst: tlv_trace_uint16
      Src: /src/frr/pimd/pim_hello.c:232,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:233,1
    - Dst: tlv_trace_uint16
      Src: /src/frr/pimd/pim_hello.c:236,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:238,1
    - Dst: tlv_trace_uint16
      Src: /src/frr/pimd/pim_hello.c:241,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:243,1
    - Dst: tlv_trace_bool
      Src: /src/frr/pimd/pim_hello.c:246,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:249,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:251,1
    - Dst: tlv_trace_uint32
      Src: /src/frr/pimd/pim_hello.c:254,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:255,1
    - Dst: tlv_trace_uint32_hex
      Src: /src/frr/pimd/pim_hello.c:258,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:260,1
    - Dst: tlv_trace_list
      Src: /src/frr/pimd/pim_hello.c:263,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:264,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:269,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:271,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_hello.c:280,1
    - Dst: pim_neighbor_add
      Src: /src/frr/pimd/pim_hello.c:284,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_hello.c:292,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:295,1
    - Dst: pim_bsm_new_nbr_fwd
      Src: /src/frr/pimd/pim_hello.c:298,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:300,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:313,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_hello.c:315,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:321,1
    - Dst: pim_upstream_rpf_genid_changed
      Src: /src/frr/pimd/pim_hello.c:327,1
    - Dst: pim_neighbor_delete
      Src: /src/frr/pimd/pim_hello.c:330,1
    - Dst: pim_neighbor_add
      Src: /src/frr/pimd/pim_hello.c:331,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:341,1
    - Dst: FREE_ADDR_LIST_THEN_RETURN
      Src: /src/frr/pimd/pim_hello.c:344,1
    - Dst: pim_bsm_new_nbr_fwd
      Src: /src/frr/pimd/pim_hello.c:347,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:349,1
    - Dst: pim_neighbor_update
      Src: /src/frr/pimd/pim_hello.c:364,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 115
    argCount: 4
    argNames:
    - ifp
    - src_addr
    - tlv_buf
    - tlv_buf_size
    argTypes:
    - struct interface*
    - pim_addr
    - uint8_t*
    - int
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/frr/pimd/pim_hello.c
    - condition: (tlv_buf_size >= 0)
      pos:
        line_end: 127
        line_start: 127
        source_file: /src/frr/pimd/pim_hello.c
    constantsTouched: []
    func_position:
      end: 368
      start: 93
    functionDepth: 6
    functionLinenumber: 93
    functionLinenumberEnd: 368
    functionName: pim_hello_recv
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - pim_bsm_new_nbr_fwd
    - pim_tlv_parse_dr_priority
    - PIM_TLV_GET_LENGTH
    - pim_neighbor_find
    - pim_tlv_parse_generation_id
    - zlog_debug
    - tlv_trace_uint16
    - PIM_TLV_GET_TYPE
    - FREE_ADDR_LIST_THEN_RETURN
    - assert
    - pim_upstream_rpf_genid_changed
    - PIM_OPTION_IS_SET
    - tlv_trace_list
    - pim_neighbor_add
    - pim_neighbor_delete
    - tlv_trace_bool
    - pim_tlv_parse_holdtime
    - on_trace
    - pim_tlv_parse_lan_prune_delay
    - tlv_trace_uint32
    - pim_neighbor_update
    - pim_tlv_parse_addr_list
    - tlv_trace_uint32_hex
    linkageType: ''
    returnType: int
    signature: "int pim_hello_recv(struct interface *ifp, pim_addr src_addr, uint8_t
      *tlv_buf,\n\t\t   int tlv_buf_size)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pim_tlv_append_uint16
      Src: /src/frr/pimd/pim_hello.c:389,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:393,1
    - Dst: pim_tlv_append_2uint16
      Src: /src/frr/pimd/pim_hello.c:401,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:406,1
    - Dst: pim_tlv_append_uint32
      Src: /src/frr/pimd/pim_hello.c:418,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:422,1
    - Dst: pim_tlv_append_uint32
      Src: /src/frr/pimd/pim_hello.c:430,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:435,1
    - Dst: pim_tlv_append_addrlist_ucast
      Src: /src/frr/pimd/pim_hello.c:444,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:448,1
    - Dst: pim_tlv_append_addrlist_ucast
      Src: /src/frr/pimd/pim_hello.c:456,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_hello.c:460,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 52
    argCount: 9
    argNames:
    - ifp
    - tlv_buf
    - tlv_buf_size
    - holdtime
    - dr_priority
    - generation_id
    - propagation_delay
    - override_interval
    - can_disable_join_suppression
    argTypes:
    - struct interface*
    - uint8_t*
    - int
    - uint16_t
    - uint32_t
    - uint32_t
    - uint16_t
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 471
    functionName: pim_hello_build_tlv
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 1
    functionsReached:
    - pim_tlv_append_uint32
    - pim_tlv_append_2uint16
    - pim_tlv_append_addrlist_ucast
    - zlog_debug
    - pim_tlv_append_uint16
    linkageType: ''
    returnType: int
    signature: "int pim_hello_build_tlv(struct interface *ifp, uint8_t *tlv_buf,\n\t\t\tint
      tlv_buf_size, uint16_t holdtime,\n\t\t\tuint32_t dr_priority, uint32_t generation_id,\n\t\t\tuint16_t
      propagation_delay, uint16_t override_interval,\n\t\t\tint can_disable_join_suppression)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_hello.c:486,1
    - Dst: assert
      Src: /src/frr/pimd/pim_hello.c:490,1
    - Dst: PIM_IF_FLAG_TEST_HELLO_SENT
      Src: /src/frr/pimd/pim_hello.c:492,1
    - Dst: pim_hello_restart_now
      Src: /src/frr/pimd/pim_hello.c:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (ifp)
      pos:
        line_end: 485
        line_start: 485
        source_file: /src/frr/pimd/pim_hello.c
    - condition: (pim_ifp)
      pos:
        line_end: 489
        line_start: 489
        source_file: /src/frr/pimd/pim_hello.c
    constantsTouched: []
    func_position:
      end: 496
      start: 482
    functionDepth: 6
    functionLinenumber: 482
    functionLinenumberEnd: 496
    functionName: pim_hello_require
    functionSourceFile: /src/frr/pimd/pim_hello.c
    functionUses: 3
    functionsReached:
    - PIM_IF_FLAG_TEST_HELLO_SENT
    - assert
    - pim_hello_restart_now
    linkageType: ''
    returnType: void
    signature: void pim_hello_require(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:40,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:41,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - label
    - ifp
    - from
    - group_addr
    - num_sources
    - sources
    argTypes:
    - char*
    - struct interface*
    - struct in_addr
    - struct in_addr
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 47
    functionName: on_trace
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 5
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: "void on_trace(const char *label, struct interface *ifp,\n\t\t     struct
      in_addr from, struct in_addr group_addr,\n\t\t     int num_sources, struct in_addr
      *sources)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:57,1
    - Dst: MAX
      Src: /src/frr/pimd/pim_igmpv3.c:58,1
    - Dst: MAX
      Src: /src/frr/pimd/pim_igmpv3.c:59,1
    - Dst: PIM_IGMP_GMI_MSEC
      Src: /src/frr/pimd/pim_igmpv3.c:61,1
    - Dst: igmp_group_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:65,1
    - Dst: igmp_gmi_msec
      Src: /src/frr/pimd/pim_igmpv3.c:86,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmpv3.c:88,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:90,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:92,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:105,1
    - Dst: igmp_group_timer_on
      Src: /src/frr/pimd/pim_igmpv3.c:107,1
    - Dst: igmp_source_timer
      Src: /src/frr/pimd/pim_igmpv3.c:110,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_igmpv3.c:115,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:122,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:124,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 104
        line_start: 104
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 156
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 156
    functionName: igmp_gmi_msec
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - igmp_group_timer_on
    - ALL_LIST_ELEMENTS_RO
    - PIM_IGMP_GMI_MSEC
    - igmp_group_reset_gmi
    - igmp_source_timer
    - zlog_debug
    - EVENT_ARG
    - if
    - pim_inet4_dump
    - MAX
    - igmp_gmi_msec
    - assert
    linkageType: ''
    returnType: long
    signature: long igmp_gmi_msec(struct gm_group *group)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:181,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:183,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:185,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_igmpv3.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - group
    - source
    argTypes:
    - struct gm_group*
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 191
    functionName: source_timer_off
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void source_timer_off(struct gm_group *group, struct gm_source *source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: source_timer_off
      Src: /src/frr/pimd/pim_igmpv3.c:196,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:202,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:206,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_igmpv3.c:212,1
    - Dst: igmp_source_forward_start
      Src: /src/frr/pimd/pim_igmpv3.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - group
    - source
    - interval_msec
    argTypes:
    - struct gm_group*
    - struct gm_source*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 221
    functionName: igmp_source_timer_on
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - igmp_source_forward_start
    - event_add_timer_msec
    - source_timer_off
    - zlog_debug
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: "void igmp_source_timer_on(struct gm_group *group,\n\t\t\t\t struct
      gm_source *source, long interval_msec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: igmp_gmi_msec
      Src: /src/frr/pimd/pim_igmpv3.c:230,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:236,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:238,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:241,1
    - Dst: igmp_source_timer_on
      Src: /src/frr/pimd/pim_igmpv3.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - group
    - source
    argTypes:
    - struct gm_group*
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 223
    functionDepth: 4
    functionLinenumber: 223
    functionLinenumberEnd: 249
    functionName: igmp_source_reset_gmi
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    - igmp_gmi_msec
    - igmp_source_timer_on
    linkageType: ''
    returnType: void
    signature: void igmp_source_reset_gmi(struct gm_group *group, struct gm_source
      *source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:256,1
    - Dst: IGMP_SOURCE_DO_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 259
    functionName: source_mark_delete_flag
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - IGMP_SOURCE_DO_DELETE
    linkageType: ''
    returnType: void
    signature: void source_mark_delete_flag(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:266,1
    - Dst: IGMP_SOURCE_DO_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: source_mark_send_flag
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - IGMP_SOURCE_DO_SEND
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: void source_mark_send_flag(struct gm_group *group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:277,1
    - Dst: IGMP_SOURCE_DO_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:280,1
    - Dst: IGMP_SOURCE_DONT_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 288
    functionName: source_mark_send_flag_by_timer
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - IGMP_SOURCE_DONT_SEND
    - IGMP_SOURCE_DO_SEND
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: int
    signature: int source_mark_send_flag_by_timer(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:295,1
    - Dst: IGMP_SOURCE_DONT_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - source_list
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: source_clear_send_flag
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - IGMP_SOURCE_DONT_SEND
    - ALL_LIST_ELEMENTS_RO
    linkageType: ''
    returnType: void
    signature: void source_clear_send_flag(struct list *source_list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:307,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmpv3.c:309,1
    - Dst: igmp_anysource_forward_start
      Src: /src/frr/pimd/pim_igmpv3.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 306
        line_start: 306
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 312
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 312
    functionName: group_exclude_fwd_anysrc_ifempty
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - listcount
    - igmp_anysource_forward_start
    - assert
    linkageType: ''
    returnType: void
    signature: void group_exclude_fwd_anysrc_ifempty(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:318,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_igmpv3.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct gm_source*
    assertStmts:
    - condition: (!source->t_source_timer)
      pos:
        line_end: 317
        line_start: 317
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 321
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 321
    functionName: igmp_source_free
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - XFREE
    - assert
    linkageType: ''
    returnType: void
    signature: void igmp_source_free(struct gm_source *source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_oil_del
      Src: /src/frr/pimd/pim_igmpv3.c:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 329
    functionName: source_channel_oil_detach
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - pim_channel_oil_del
    linkageType: ''
    returnType: void
    signature: void source_channel_oil_detach(struct gm_source *source)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:345,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:347,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:349,1
    - Dst: source_timer_off
      Src: /src/frr/pimd/pim_igmpv3.c:357,1
    - Dst: igmp_source_forward_stop
      Src: /src/frr/pimd/pim_igmpv3.c:358,1
    - Dst: IGMP_SOURCE_TEST_FORWARDING
      Src: /src/frr/pimd/pim_igmpv3.c:361,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:364,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:366,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:368,1
    - Dst: source_channel_oil_detach
      Src: /src/frr/pimd/pim_igmpv3.c:375,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_igmpv3.c:382,1
    - Dst: igmp_source_free
      Src: /src/frr/pimd/pim_igmpv3.c:385,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmpv3.c:390,1
    - Dst: group_exclude_fwd_anysrc_ifempty
      Src: /src/frr/pimd/pim_igmpv3.c:392,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 335
    functionDepth: 3
    functionLinenumber: 335
    functionLinenumberEnd: 394
    functionName: igmp_source_delete
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - igmp_source_free
    - IGMP_SOURCE_TEST_FORWARDING
    - listcount
    - source_channel_oil_detach
    - zlog_debug
    - source_timer_off
    - zlog_warn
    - group_exclude_fwd_anysrc_ifempty
    - listnode_delete
    - pim_inet4_dump
    - igmp_source_forward_stop
    linkageType: ''
    returnType: void
    signature: void igmp_source_delete(struct gm_source *source)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmpv3.c:402,1
    - Dst: IGMP_SOURCE_TEST_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:403,1
    - Dst: igmp_source_delete
      Src: /src/frr/pimd/pim_igmpv3.c:404,1
    - Dst: igmp_source_delete_expired
      Src: /src/frr/pimd/pim_igmpv3.c:407,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_igmpv3.c:413,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmpv3.c:414,1
    - Dst: igmp_source_delete
      Src: /src/frr/pimd/pim_igmpv3.c:415,1
    - Dst: igmp_find_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:418,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:424,1
    - Dst: if
      Src: /src/frr/pimd/pim_igmpv3.c:425,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:431,1
    - Dst: igmp_find_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:439,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:446,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:448,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:450,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_igmpv3.c:455,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_igmpv3.c:463,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_igmpv3.c:468,1
    - Dst: igmp_anysource_forward_stop
      Src: /src/frr/pimd/pim_igmpv3.c:471,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:492,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmpv3.c:497,1
    - Dst: igmp_source_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:502,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - source_list
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 396
    functionDepth: 5
    functionLinenumber: 396
    functionLinenumberEnd: 503
    functionName: source_delete_by_flag
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - igmp_source_delete_expired
    - XCALLOC
    - igmp_source_reset_gmi
    - igmp_get_source_by_addr
    - ALL_LIST_ELEMENTS_RO
    - listcount
    - igmp_anysource_forward_stop
    - listnode_add
    - igmp_find_source_by_addr
    - IGMP_SOURCE_TEST_DELETE
    - zlog_debug
    - igmp_source_delete
    - pim_time_monotonic_sec
    - find_group_by_addr
    - if
    - ALL_LIST_ELEMENTS
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: void source_delete_by_flag(struct list *source_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv3.c:546,1
    - Dst: allow
      Src: /src/frr/pimd/pim_igmpv3.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - igmp
    - from
    - group_addr
    - num_sources
    - sources
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - struct in_addr
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 550
    functionName: igmpv3_report_isin
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - on_trace
    - allow
    linkageType: ''
    returnType: void
    signature: "void igmpv3_report_isin(struct gm_sock *igmp, struct in_addr from,\n\t\t\tstruct
      in_addr group_addr, int num_sources,\n\t\t\tstruct in_addr *sources)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:559,1
    - Dst: source_mark_delete_flag
      Src: /src/frr/pimd/pim_igmpv3.c:562,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:572,1
    - Dst: IGMP_SOURCE_DONT_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:578,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:582,1
    - Dst: igmp_source_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:583,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:585,1
    - Dst: igmp_find_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:598,1
    - Dst: IGMP_SOURCE_DONT_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:600,1
    - Dst: igmp_source_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:601,1
    - Dst: source_delete_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:606,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 558
        line_start: 558
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (!source->t_source_timer)
      pos:
        line_end: 581
        line_start: 581
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (source->t_source_timer)
      pos:
        line_end: 584
        line_start: 584
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 607
      start: 552
    functionDepth: 6
    functionLinenumber: 552
    functionLinenumberEnd: 607
    functionName: isex_excl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - source_mark_delete_flag
    - source_delete_by_flag
    - igmp_source_reset_gmi
    - igmp_get_source_by_addr
    - IGMP_SOURCE_DONT_DELETE
    - igmp_find_source_by_addr
    - assert
    linkageType: ''
    returnType: void
    signature: "void isex_excl(struct gm_group *group, int num_sources,\n\t\t      struct
      in_addr *sources)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:615,1
    - Dst: source_mark_delete_flag
      Src: /src/frr/pimd/pim_igmpv3.c:618,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:629,1
    - Dst: IGMP_SOURCE_DONT_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:635,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:640,1
    - Dst: source_delete_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:647,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:651,1
    - Dst: group_exclude_fwd_anysrc_ifempty
      Src: /src/frr/pimd/pim_igmpv3.c:653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts:
    - condition: (!group->group_filtermode_isexcl)
      pos:
        line_end: 614
        line_start: 614
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (!source->t_source_timer)
      pos:
        line_end: 639
        line_start: 639
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 650
        line_start: 650
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 654
      start: 609
    functionDepth: 6
    functionLinenumber: 609
    functionLinenumberEnd: 654
    functionName: isex_incl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - source_mark_delete_flag
    - source_delete_by_flag
    - igmp_get_source_by_addr
    - IGMP_SOURCE_DONT_DELETE
    - group_exclude_fwd_anysrc_ifempty
    - assert
    linkageType: ''
    returnType: void
    signature: "void isex_incl(struct gm_group *group, int num_sources,\n\t\t      struct
      in_addr *sources)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv3.c:663,1
    - Dst: pim_is_group_filtered
      Src: /src/frr/pimd/pim_igmpv3.c:665,1
    - Dst: igmp_add_group_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:669,1
    - Dst: isex_excl
      Src: /src/frr/pimd/pim_igmpv3.c:681,1
    - Dst: isex_incl
      Src: /src/frr/pimd/pim_igmpv3.c:684,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:685,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:688,1
    - Dst: igmp_group_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:690,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 6
    argNames:
    - igmp
    - from
    - group_addr
    - num_sources
    - sources
    - from_igmp_v2_report
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - struct in_addr
    - int
    - struct in_addr*
    - int
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 684
        line_start: 684
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 687
        line_start: 687
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 691
      start: 656
    functionDepth: 7
    functionLinenumber: 656
    functionLinenumberEnd: 691
    functionName: igmpv3_report_isex
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - isex_incl
    - isex_excl
    - igmp_add_group_by_addr
    - pim_is_group_filtered
    - igmp_group_reset_gmi
    - on_trace
    - assert
    linkageType: ''
    returnType: void
    signature: "void igmpv3_report_isex(struct gm_sock *igmp, struct in_addr from,\n\t\t\tstruct
      in_addr group_addr, int num_sources,\n\t\t\tstruct in_addr *sources, int from_igmp_v2_report)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: listcount
      Src: /src/frr/pimd/pim_igmpv3.c:696,1
    - Dst: source_mark_send_flag
      Src: /src/frr/pimd/pim_igmpv3.c:700,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:711,1
    - Dst: IGMP_SOURCE_DONT_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:717,1
    - Dst: igmp_source_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:722,1
    - Dst: source_query_send_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:727,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 693
    functionDepth: 2
    functionLinenumber: 693
    functionLinenumberEnd: 729
    functionName: toin_incl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - source_mark_send_flag
    - igmp_source_reset_gmi
    - source_query_send_by_flag
    - igmp_get_source_by_addr
    - listcount
    - IGMP_SOURCE_DONT_SEND
    linkageType: ''
    returnType: void
    signature: "void toin_incl(struct gm_group *group, int num_sources,\n\t\t      struct
      in_addr *sources)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: source_mark_send_flag_by_timer
      Src: /src/frr/pimd/pim_igmpv3.c:738,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:749,1
    - Dst: IGMP_SOURCE_DONT_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:756,1
    - Dst: igmp_source_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:761,1
    - Dst: source_query_send_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:766,1
    - Dst: group_query_send
      Src: /src/frr/pimd/pim_igmpv3.c:770,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 771
    functionName: toin_excl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - igmp_source_reset_gmi
    - source_query_send_by_flag
    - igmp_get_source_by_addr
    - group_query_send
    - source_mark_send_flag_by_timer
    - IGMP_SOURCE_DONT_SEND
    linkageType: ''
    returnType: void
    signature: "void toin_excl(struct gm_group *group, int num_sources,\n\t\t      struct
      in_addr *sources)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv3.c:780,1
    - Dst: igmp_add_group_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:790,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:795,1
    - Dst: toin_excl
      Src: /src/frr/pimd/pim_igmpv3.c:802,1
    - Dst: toin_incl
      Src: /src/frr/pimd/pim_igmpv3.c:805,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - igmp
    - from
    - group_addr
    - num_sources
    - sources
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - struct in_addr
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 773
    functionDepth: 6
    functionLinenumber: 773
    functionLinenumberEnd: 807
    functionName: igmpv3_report_toin
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - igmp_add_group_by_addr
    - find_group_by_addr
    - on_trace
    - toin_excl
    - toin_incl
    linkageType: ''
    returnType: void
    signature: "void igmpv3_report_toin(struct gm_sock *igmp, struct in_addr from,\n\t\t\tstruct
      in_addr group_addr, int num_sources,\n\t\t\tstruct in_addr *sources)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:815,1
    - Dst: source_mark_delete_flag
      Src: /src/frr/pimd/pim_igmpv3.c:818,1
    - Dst: source_clear_send_flag
      Src: /src/frr/pimd/pim_igmpv3.c:821,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:832,1
    - Dst: IGMP_SOURCE_DONT_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:835,1
    - Dst: IGMP_SOURCE_DO_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:837,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:840,1
    - Dst: source_delete_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:849,1
    - Dst: source_query_send_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:853,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:856,1
    - Dst: group_exclude_fwd_anysrc_ifempty
      Src: /src/frr/pimd/pim_igmpv3.c:858,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts:
    - condition: (!group->group_filtermode_isexcl)
      pos:
        line_end: 814
        line_start: 814
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (!source->t_source_timer)
      pos:
        line_end: 839
        line_start: 839
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 855
        line_start: 855
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 859
      start: 809
    functionDepth: 6
    functionLinenumber: 809
    functionLinenumberEnd: 859
    functionName: toex_incl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - source_mark_delete_flag
    - source_delete_by_flag
    - source_query_send_by_flag
    - igmp_get_source_by_addr
    - IGMP_SOURCE_DONT_DELETE
    - IGMP_SOURCE_DO_SEND
    - group_exclude_fwd_anysrc_ifempty
    - source_clear_send_flag
    - assert
    linkageType: ''
    returnType: void
    signature: "void toex_incl(struct gm_group *group, int num_sources,\n\t\t      struct
      in_addr *sources)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: source_mark_delete_flag
      Src: /src/frr/pimd/pim_igmpv3.c:868,1
    - Dst: source_clear_send_flag
      Src: /src/frr/pimd/pim_igmpv3.c:871,1
    - Dst: igmp_find_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:877,1
    - Dst: IGMP_SOURCE_DONT_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:879,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:891,1
    - Dst: IGMP_SOURCE_DONT_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:898,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:904,1
    - Dst: igmp_group_timer_remain_msec
      Src: /src/frr/pimd/pim_igmpv3.c:905,1
    - Dst: igmp_source_timer_on
      Src: /src/frr/pimd/pim_igmpv3.c:906,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:908,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:911,1
    - Dst: IGMP_SOURCE_TEST_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:911,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:915,1
    - Dst: IGMP_SOURCE_TEST_DELETE
      Src: /src/frr/pimd/pim_igmpv3.c:915,1
    - Dst: IGMP_SOURCE_DO_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:919,1
    - Dst: source_delete_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:930,1
    - Dst: source_query_send_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:934,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts:
    - condition: (!source->t_source_timer)
      pos:
        line_end: 903
        line_start: 903
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (source->t_source_timer)
      pos:
        line_end: 907
        line_start: 907
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (!IGMP_SOURCE_TEST_DELETE(source->source_flags))
      pos:
        line_end: 914
        line_start: 914
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (!IGMP_SOURCE_TEST_DELETE(source->source_flags))
      pos:
        line_end: 910
        line_start: 910
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 936
      start: 861
    functionDepth: 6
    functionLinenumber: 861
    functionLinenumberEnd: 936
    functionName: toex_excl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - source_mark_delete_flag
    - source_delete_by_flag
    - igmp_source_timer_on
    - source_query_send_by_flag
    - igmp_get_source_by_addr
    - IGMP_SOURCE_DONT_DELETE
    - igmp_group_timer_remain_msec
    - igmp_find_source_by_addr
    - IGMP_SOURCE_TEST_DELETE
    - IGMP_SOURCE_DO_SEND
    - source_clear_send_flag
    - assert
    linkageType: ''
    returnType: void
    signature: "void toex_excl(struct gm_group *group, int num_sources,\n\t\t      struct
      in_addr *sources)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv3.c:945,1
    - Dst: igmp_add_group_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:948,1
    - Dst: toex_excl
      Src: /src/frr/pimd/pim_igmpv3.c:955,1
    - Dst: toex_incl
      Src: /src/frr/pimd/pim_igmpv3.c:958,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:959,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:961,1
    - Dst: igmp_group_reset_gmi
      Src: /src/frr/pimd/pim_igmpv3.c:964,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - igmp
    - from
    - group_addr
    - num_sources
    - sources
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - struct in_addr
    - int
    - struct in_addr*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 958
        line_start: 958
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 960
        line_start: 960
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 965
      start: 938
    functionDepth: 7
    functionLinenumber: 938
    functionLinenumberEnd: 965
    functionName: igmpv3_report_toex
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - igmp_add_group_by_addr
    - toex_incl
    - igmp_group_reset_gmi
    - on_trace
    - toex_excl
    - assert
    linkageType: ''
    returnType: void
    signature: "void igmpv3_report_toex(struct gm_sock *igmp, struct in_addr from,\n\t\t\tstruct
      in_addr group_addr, int num_sources,\n\t\t\tstruct in_addr *sources)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv3.c:971,1
    - Dst: allow
      Src: /src/frr/pimd/pim_igmpv3.c:974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - igmp
    - from
    - group_addr
    - num_sources
    - sources
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - struct in_addr
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 967
    functionDepth: 0
    functionLinenumber: 967
    functionLinenumberEnd: 975
    functionName: igmpv3_report_allow
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - on_trace
    - allow
    linkageType: ''
    returnType: void
    signature: "void igmpv3_report_allow(struct gm_sock *igmp, struct in_addr from,\n\t\t\t
      struct in_addr group_addr, int num_sources,\n\t\t\t struct in_addr *sources)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:986,1
    - Dst: igmp_send_query
      Src: /src/frr/pimd/pim_igmpv3.c:987,1
    - Dst: igmp_send_query_group
      Src: /src/frr/pimd/pim_igmpv3.c:1052,1
    - Dst: igmp_source_timer_remain_msec
      Src: /src/frr/pimd/pim_igmpv3.c:1107,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1125,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1127,1
    - Dst: igmp_send_query_group
      Src: /src/frr/pimd/pim_igmpv3.c:1167,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1185,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1187,1
    - Dst: igmp_send_query_group
      Src: /src/frr/pimd/pim_igmpv3.c:1203,1
    - Dst: igmp_group_retransmit
      Src: /src/frr/pimd/pim_igmpv3.c:1212,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_igmpv3.c:1218,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1222,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1224,1
    - Dst: group_retransmit_group
      Src: /src/frr/pimd/pim_igmpv3.c:1232,1
    - Dst: group_retransmit_sources
      Src: /src/frr/pimd/pim_igmpv3.c:1252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - group
    - query_buf
    - query_buf_size
    - num_sources
    - s_flag
    argTypes:
    - struct gm_group*
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 977
    functionDepth: 2
    functionLinenumber: 977
    functionLinenumberEnd: 1261
    functionName: igmp_send_query_group
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - igmp_source_timer_remain_msec
    - ALL_LIST_ELEMENTS_RO
    - group_retransmit_sources
    - igmp_send_query_group
    - zlog_debug
    - zlog_warn
    - group_retransmit_group
    - EVENT_ARG
    - igmp_send_query
    - pim_inet4_dump
    - igmp_group_retransmit
    linkageType: ''
    returnType: void
    signature: "void igmp_send_query_group(struct gm_group *group, char *query_buf,\n\t\t\t\t
      \ size_t query_buf_size, int num_sources,\n\t\t\t\t  int s_flag)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1285,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1287,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_igmpv3.c:1293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1269
    functionDepth: 1
    functionLinenumber: 1269
    functionLinenumberEnd: 1295
    functionName: group_retransmit_timer_on
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - zlog_debug
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: void group_retransmit_timer_on(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_igmpv3.c:1299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1297
    functionDepth: 3
    functionLinenumber: 1297
    functionLinenumberEnd: 1300
    functionName: igmp_group_timer_remain_msec
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - pim_time_timer_remain_msec
    linkageType: ''
    returnType: long
    signature: long igmp_group_timer_remain_msec(struct gm_group *group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_igmpv3.c:1304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1302
    functionDepth: 3
    functionLinenumber: 1302
    functionLinenumberEnd: 1305
    functionName: igmp_source_timer_remain_msec
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - pim_time_timer_remain_msec
    linkageType: ''
    returnType: long
    signature: long igmp_source_timer_remain_msec(struct gm_source *source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: igmp_group_timer_lower_to_lmqt
      Src: /src/frr/pimd/pim_igmpv3.c:1319,1
    - Dst: group_retransmit_group
      Src: /src/frr/pimd/pim_igmpv3.c:1326,1
    - Dst: group_retransmit_timer_on
      Src: /src/frr/pimd/pim_igmpv3.c:1329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1310
    functionDepth: 2
    functionLinenumber: 1310
    functionLinenumberEnd: 1330
    functionName: group_query_send
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - igmp_group_timer_lower_to_lmqt
    - group_retransmit_timer_on
    - group_retransmit_group
    linkageType: ''
    returnType: void
    signature: void group_query_send(struct gm_group *group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:1345,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_igmpv3.c:1364,1
    - Dst: IGMP_SOURCE_TEST_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:1365,1
    - Dst: igmp_source_timer_remain_msec
      Src: /src/frr/pimd/pim_igmpv3.c:1367,1
    - Dst: igmp_source_timer_lower_to_lmqt
      Src: /src/frr/pimd/pim_igmpv3.c:1369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - group
    - num_sources_tosend
    argTypes:
    - struct gm_group*
    - int
    assertStmts:
    - condition: (num_sources_tosend > 0)
      pos:
        line_end: 1344
        line_start: 1344
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 1372
      start: 1335
    functionDepth: 4
    functionLinenumber: 1335
    functionLinenumberEnd: 1372
    functionName: source_query_send_by_flag
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 4
    functionsReached:
    - igmp_source_timer_remain_msec
    - ALL_LIST_ELEMENTS_RO
    - igmp_source_timer_lower_to_lmqt
    - IGMP_SOURCE_TEST_SEND
    - assert
    linkageType: ''
    returnType: void
    signature: "void source_query_send_by_flag(struct gm_group *group,\n\t\t\t\t      int
      num_sources_tosend)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: source_clear_send_flag
      Src: /src/frr/pimd/pim_igmpv3.c:1388,1
    - Dst: igmp_get_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:1399,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:1408,1
    - Dst: igmp_group_timer_remain_msec
      Src: /src/frr/pimd/pim_igmpv3.c:1409,1
    - Dst: igmp_source_timer_on
      Src: /src/frr/pimd/pim_igmpv3.c:1410,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:1412,1
    - Dst: IGMP_SOURCE_DO_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:1418,1
    - Dst: source_query_send_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:1425,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts:
    - condition: (!source->t_source_timer)
      pos:
        line_end: 1407
        line_start: 1407
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: (source->t_source_timer)
      pos:
        line_end: 1411
        line_start: 1411
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 1427
      start: 1381
    functionDepth: 5
    functionLinenumber: 1381
    functionLinenumberEnd: 1427
    functionName: block_excl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - assert
    - source_query_send_by_flag
    - igmp_get_source_by_addr
    - igmp_group_timer_remain_msec
    - IGMP_SOURCE_DO_SEND
    - source_clear_send_flag
    - igmp_source_timer_on
    linkageType: ''
    returnType: void
    signature: "void block_excl(struct gm_group *group, int num_sources,\n\t\t       struct
      in_addr *sources)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: source_clear_send_flag
      Src: /src/frr/pimd/pim_igmpv3.c:1436,1
    - Dst: igmp_find_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:1446,1
    - Dst: IGMP_SOURCE_DO_SEND
      Src: /src/frr/pimd/pim_igmpv3.c:1449,1
    - Dst: source_query_send_by_flag
      Src: /src/frr/pimd/pim_igmpv3.c:1456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - group
    - num_sources
    - sources
    argTypes:
    - struct gm_group*
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1429
    functionDepth: 5
    functionLinenumber: 1429
    functionLinenumberEnd: 1458
    functionName: block_incl
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - igmp_find_source_by_addr
    - source_clear_send_flag
    - IGMP_SOURCE_DO_SEND
    - source_query_send_by_flag
    linkageType: ''
    returnType: void
    signature: "void block_incl(struct gm_group *group, int num_sources,\n\t\t       struct
      in_addr *sources)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_igmpv3.c:1467,1
    - Dst: igmp_add_group_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:1470,1
    - Dst: block_excl
      Src: /src/frr/pimd/pim_igmpv3.c:1477,1
    - Dst: block_incl
      Src: /src/frr/pimd/pim_igmpv3.c:1480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - igmp
    - from
    - group_addr
    - num_sources
    - sources
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - struct in_addr
    - int
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1460
    functionDepth: 6
    functionLinenumber: 1460
    functionLinenumberEnd: 1482
    functionName: igmpv3_report_block
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - block_incl
    - on_trace
    - block_excl
    - igmp_add_group_by_addr
    linkageType: ''
    returnType: void
    signature: "void igmpv3_report_block(struct gm_sock *igmp, struct in_addr from,\n\t\t\t
      struct in_addr group_addr, int num_sources,\n\t\t\t struct in_addr *sources)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PIM_IGMP_LMQT_MSEC
      Src: /src/frr/pimd/pim_igmpv3.c:1510,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1515,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1517,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:1523,1
    - Dst: igmp_group_timer_on
      Src: /src/frr/pimd/pim_igmpv3.c:1525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct gm_group*
    assertStmts:
    - condition: (group->group_filtermode_isexcl)
      pos:
        line_end: 1522
        line_start: 1522
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 1526
      start: 1484
    functionDepth: 3
    functionLinenumber: 1484
    functionLinenumberEnd: 1526
    functionName: igmp_group_timer_lower_to_lmqt
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - PIM_IGMP_LMQT_MSEC
    - zlog_debug
    - pim_inet4_dump
    - igmp_group_timer_on
    - assert
    linkageType: ''
    returnType: void
    signature: void igmp_group_timer_lower_to_lmqt(struct gm_group *group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_IGMP_LMQT_MSEC
      Src: /src/frr/pimd/pim_igmpv3.c:1545,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1551,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1553,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1555,1
    - Dst: igmp_source_timer_on
      Src: /src/frr/pimd/pim_igmpv3.c:1561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct gm_source*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1528
    functionDepth: 3
    functionLinenumber: 1528
    functionLinenumberEnd: 1562
    functionName: igmp_source_timer_lower_to_lmqt
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - zlog_debug
    - pim_inet4_dump
    - PIM_IGMP_LMQT_MSEC
    - igmp_source_timer_on
    linkageType: ''
    returnType: void
    signature: void igmp_source_timer_lower_to_lmqt(struct gm_source *source)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:1579,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_igmpv3.c:1583,1
    - Dst: PIM_FORCE_BOOLEAN
      Src: /src/frr/pimd/pim_igmpv3.c:1590,1
    - Dst: assert
      Src: /src/frr/pimd/pim_igmpv3.c:1591,1
    - Dst: igmp_msg_encode16to8
      Src: /src/frr/pimd/pim_igmpv3.c:1593,1
    - Dst: igmp_msg_encode16to8
      Src: /src/frr/pimd/pim_igmpv3.c:1594,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmpv3.c:1612,1
    - Dst: htons
      Src: /src/frr/pimd/pim_igmpv3.c:1617,1
    - Dst: in_cksum
      Src: /src/frr/pimd/pim_igmpv3.c:1619,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1625,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1626,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1628,1
    - Dst: memset
      Src: /src/frr/pimd/pim_igmpv3.c:1635,1
    - Dst: sendto
      Src: /src/frr/pimd/pim_igmpv3.c:1640,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1645,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1646,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1649,1
    - Dst: safe_strerror
      Src: /src/frr/pimd/pim_igmpv3.c:1652,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1654,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1677,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1679,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1681,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 12
    argNames:
    - group
    - fd
    - ifname
    - query_buf
    - query_buf_size
    - num_sources
    - dst_addr
    - group_addr
    - query_max_response_time_dsec
    - s_flag
    - querier_robustness_variable
    - querier_query_interval
    argTypes:
    - struct gm_group*
    - int
    - char*
    - char*
    - int
    - int
    - struct in_addr
    - struct in_addr
    - int
    - uint8_t
    - uint8_t
    - uint16_t
    assertStmts:
    - condition: (num_sources >= 0)
      pos:
        line_end: 1578
        line_start: 1578
        source_file: /src/frr/pimd/pim_igmpv3.c
    - condition: ((s_flag == 0) || (s_flag == 1))
      pos:
        line_end: 1590
        line_start: 1590
        source_file: /src/frr/pimd/pim_igmpv3.c
    constantsTouched: []
    func_position:
      end: 1687
      start: 1564
    functionDepth: 2
    functionLinenumber: 1564
    functionLinenumberEnd: 1687
    functionName: igmp_v3_send_query
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - assert
    - igmp_msg_encode16to8
    - memset
    - htons
    - in_cksum
    - flog_err
    - zlog_debug
    - sendto
    - zlog_warn
    - PIM_FORCE_BOOLEAN
    - safe_strerror
    - pim_inet4_dump
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void igmp_v3_send_query(struct gm_group *group, int fd, const char
      *ifname,\n\t\t\tchar *query_buf, int query_buf_size, int num_sources,\n\t\t\tstruct
      in_addr dst_addr, struct in_addr group_addr,\n\t\t\tint query_max_response_time_dsec,
      uint8_t s_flag,\n\t\t\tuint8_t querier_robustness_variable,\n\t\t\tuint16_t
      querier_query_interval)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmpv3.c:1700,1
    - Dst: igmp_msg_decode8to16
      Src: /src/frr/pimd/pim_igmpv3.c:1731,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1737,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1739,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1764,1
    - Dst: find_group_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:1772,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmpv3.c:1774,1
    - Dst: igmp_group_timer_lower_to_lmqt
      Src: /src/frr/pimd/pim_igmpv3.c:1789,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmpv3.c:1803,1
    - Dst: igmp_find_source_by_addr
      Src: /src/frr/pimd/pim_igmpv3.c:1805,1
    - Dst: igmp_source_timer_lower_to_lmqt
      Src: /src/frr/pimd/pim_igmpv3.c:1808,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_igmpv3.c:1815,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1817,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 3
    argNames:
    - igmp
    - from_str
    - igmp_msg
    argTypes:
    - struct gm_sock*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1823
      start: 1689
    functionDepth: 5
    functionLinenumber: 1689
    functionLinenumberEnd: 1823
    functionName: igmp_v3_recv_query
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - igmp_msg_decode8to16
    - ntohs
    - igmp_find_source_by_addr
    - zlog_debug
    - zlog_warn
    - igmp_group_timer_lower_to_lmqt
    - igmp_source_timer_lower_to_lmqt
    - find_group_by_addr
    - pim_inet4_dump
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void igmp_v3_recv_query(struct gm_sock *igmp, const char *from_str,\n\t\t\tchar
      *igmp_msg)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pim_is_group_filtered
      Src: /src/frr/pimd/pim_igmpv3.c:1834,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1836,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_igmpv3.c:1849,1
    - Dst: pim_is_group_224_0_0_0_24
      Src: /src/frr/pimd/pim_igmpv3.c:1851,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1853,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_igmpv3.c:1867,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1872,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - ifp
    - from_str
    - grp
    - rec_type
    argTypes:
    - struct interface*
    - char*
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1825
    functionDepth: 4
    functionLinenumber: 1825
    functionLinenumberEnd: 1881
    functionName: igmp_pkt_grp_addr_ok
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 0
    functionsReached:
    - pim_is_grp_ssm
    - pim_is_group_filtered
    - zlog_debug
    - pim_is_group_224_0_0_0_24
    - ntohl
    linkageType: ''
    returnType: bool
    signature: "bool igmp_pkt_grp_addr_ok(struct interface *ifp, const char *from_str,\n\t\t\t\t
      struct in_addr grp, int rec_type)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1897,1
    - Dst: igmp_validate_checksum
      Src: /src/frr/pimd/pim_igmpv3.c:1904,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1905,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1917,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmpv3.c:1923,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1926,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1933,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1952,1
    - Dst: ntohs
      Src: /src/frr/pimd/pim_igmpv3.c:1961,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_igmpv3.c:1965,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1970,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:1984,1
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_igmpv3.c:1993,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_igmpv3.c:1995,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_igmpv3.c:1998,1
    - Dst: igmp_pkt_grp_addr_ok
      Src: /src/frr/pimd/pim_igmpv3.c:2006,1
    - Dst: igmpv3_report_isin
      Src: /src/frr/pimd/pim_igmpv3.c:2009,1
    - Dst: igmpv3_report_isex
      Src: /src/frr/pimd/pim_igmpv3.c:2014,1
    - Dst: igmpv3_report_toin
      Src: /src/frr/pimd/pim_igmpv3.c:2019,1
    - Dst: igmpv3_report_toex
      Src: /src/frr/pimd/pim_igmpv3.c:2024,1
    - Dst: igmpv3_report_allow
      Src: /src/frr/pimd/pim_igmpv3.c:2029,1
    - Dst: igmpv3_report_block
      Src: /src/frr/pimd/pim_igmpv3.c:2034,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_igmpv3.c:2039,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 75
    argCount: 5
    argNames:
    - igmp
    - from
    - from_str
    - igmp_msg
    - igmp_msg_len
    argTypes:
    - struct gm_sock*
    - struct in_addr
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2050
      start: 1883
    functionDepth: 8
    functionLinenumber: 1883
    functionLinenumberEnd: 2050
    functionName: igmp_v3_recv_report
    functionSourceFile: /src/frr/pimd/pim_igmpv3.c
    functionUses: 1
    functionsReached:
    - igmpv3_report_block
    - igmpv3_report_toex
    - snprintf
    - igmp_pkt_grp_addr_ok
    - igmpv3_report_isex
    - igmp_validate_checksum
    - ntohs
    - inet_ntop
    - zlog_warn
    - zlog_debug
    - igmpv3_report_isin
    - igmpv3_report_toin
    - igmpv3_report_allow
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int igmp_v3_recv_report(struct gm_sock *igmp, struct in_addr from,\n\t\t\tconst
      char *from_str, char *igmp_msg, int igmp_msg_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip_hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: IPV_SRC
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV_SRC(ip_hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip_hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    functionName: IPV_DST
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV_DST(ip_hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip_hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    functionName: IPV_LEN
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV_LEN(ip_hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip_hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 161
    functionName: IPV_SRC
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV_SRC(ip_hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip_hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: IPV_DST
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV_DST(ip_hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ip_hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: IPV_LEN
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IPV_LEN(ip_hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - iphdr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 192
    functionName: pim_sgaddr_from_iphdr
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: pim_sgaddr
    signature: pim_sgaddr pim_sgaddr_from_iphdr(const void *iphdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - iphdr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 203
    functionName: pim_sgaddr_from_iphdr
    functionSourceFile: /src/frr/pimd/pim_msg.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: pim_sgaddr
    signature: pim_sgaddr pim_sgaddr_from_iphdr(const void *iphdr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:29,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:32,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:35,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:38,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:41,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:44,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:47,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_msdp_packet.c:50,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - type
    - buf
    - buf_size
    argTypes:
    - enum pim_msdp_tlv
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 53
    functionName: pim_msdp_pkt_type_dump
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: "char *pim_msdp_pkt_type_dump(enum pim_msdp_tlv type, char *buf,\n\t\t\t\t
      \   int buf_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_get3
      Src: /src/frr/pimd/pim_msdp_packet.c:60,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_msdp_packet.c:62,1
    - Dst: memset
      Src: /src/frr/pimd/pim_msdp_packet.c:64,1
    - Dst: stream_get_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:65,1
    - Dst: stream_get_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:66,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: pim_msdp_pkt_sa_dump_one
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - stream_get_ipv4
    - stream_get3
    - zlog_debug
    - stream_getc
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_sa_dump_one(struct stream *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_READABLE
      Src: /src/frr/pimd/pim_msdp_packet.c:79,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_msdp_packet.c:80,1
    - Dst: STREAM_READABLE
      Src: /src/frr/pimd/pim_msdp_packet.c:81,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_msdp_packet.c:85,1
    - Dst: stream_get_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:86,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_msdp_packet.c:90,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:91,1
    - Dst: STREAM_READABLE
      Src: /src/frr/pimd/pim_msdp_packet.c:95,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_msdp_packet.c:96,1
    - Dst: STREAM_READABLE
      Src: /src/frr/pimd/pim_msdp_packet.c:97,1
    - Dst: pim_msdp_pkt_sa_dump_one
      Src: /src/frr/pimd/pim_msdp_packet.c:103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 71
    functionDepth: 3
    functionLinenumber: 71
    functionLinenumberEnd: 105
    functionName: pim_msdp_pkt_sa_dump
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - pim_msdp_pkt_sa_dump_one
    - STREAM_READABLE
    - stream_get_ipv4
    - zlog_err
    - zlog_debug
    - stream_getc
    - pim_inet4_dump
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_sa_dump(struct stream *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_pkt_type_dump
      Src: /src/frr/pimd/pim_msdp_packet.c:112,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:114,1
    - Dst: zlog_err
      Src: /src/frr/pimd/pim_msdp_packet.c:122,1
    - Dst: pim_msdp_pkt_sa_dump
      Src: /src/frr/pimd/pim_msdp_packet.c:128,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - mp
    - type
    - len
    - rx
    - s
    argTypes:
    - struct pim_msdp_peer*
    - int
    - int
    - bool
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 107
    functionDepth: 4
    functionLinenumber: 107
    functionLinenumberEnd: 132
    functionName: pim_msdp_pkt_dump
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_msdp_pkt_type_dump
    - pim_msdp_pkt_sa_dump
    - zlog_err
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_pkt_dump(struct pim_msdp_peer *mp, int type, int len,\n\t\t\t
      \     bool rx, struct stream *s)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_peer_reset_tcp_conn
      Src: /src/frr/pimd/pim_msdp_packet.c:145,1
    - Dst: PIM_MSDP_PEER_READ_OFF
      Src: /src/frr/pimd/pim_msdp_packet.c:149,1
    - Dst: PIM_MSDP_PEER_WRITE_OFF
      Src: /src/frr/pimd/pim_msdp_packet.c:150,1
    - Dst: getsockopt
      Src: /src/frr/pimd/pim_msdp_packet.c:154,1
    - Dst: flog_err_sys
      Src: /src/frr/pimd/pim_msdp_packet.c:158,1
    - Dst: pim_msdp_peer_reset_tcp_conn
      Src: /src/frr/pimd/pim_msdp_packet.c:160,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:166,1
    - Dst: pim_msdp_peer_established
      Src: /src/frr/pimd/pim_msdp_packet.c:170,1
    - Dst: pim_msdp_peer_reset_tcp_conn
      Src: /src/frr/pimd/pim_msdp_packet.c:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 135
    functionDepth: 4
    functionLinenumber: 135
    functionLinenumberEnd: 174
    functionName: pim_msdp_connect_check
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - PIM_MSDP_PEER_READ_OFF
    - pim_msdp_peer_reset_tcp_conn
    - getsockopt
    - zlog_debug
    - pim_msdp_peer_established
    - flog_err_sys
    - PIM_MSDP_PEER_WRITE_OFF
    linkageType: ''
    returnType: void
    signature: void pim_msdp_connect_check(struct pim_msdp_peer *mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_free
      Src: /src/frr/pimd/pim_msdp_packet.c:178,1
    - Dst: stream_fifo_pop
      Src: /src/frr/pimd/pim_msdp_packet.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: pim_msdp_pkt_delete
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_free
    - stream_fifo_pop
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_delete(struct pim_msdp_peer *mp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_push
      Src: /src/frr/pimd/pim_msdp_packet.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mp
    - s
    argTypes:
    - struct pim_msdp_peer*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 184
    functionName: pim_msdp_pkt_add
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_fifo_push
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_add(struct pim_msdp_peer *mp, struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_fifo_head
      Src: /src/frr/pimd/pim_msdp_packet.c:188,1
    - Dst: PIM_MSDP_PEER_WRITE_ON
      Src: /src/frr/pimd/pim_msdp_packet.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 191
    functionName: pim_msdp_write_proceed_actions
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_fifo_head
    - PIM_MSDP_PEER_WRITE_ON
    linkageType: ''
    returnType: void
    signature: void pim_msdp_write_proceed_actions(struct pim_msdp_peer *mp)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp_packet.c:203,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:207,1
    - Dst: pim_msdp_connect_check
      Src: /src/frr/pimd/pim_msdp_packet.c:215,1
    - Dst: stream_fifo_head
      Src: /src/frr/pimd/pim_msdp_packet.c:219,1
    - Dst: pim_msdp_write_proceed_actions
      Src: /src/frr/pimd/pim_msdp_packet.c:221,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_msdp_packet.c:230,1
    - Dst: stream_get_getp
      Src: /src/frr/pimd/pim_msdp_packet.c:230,1
    - Dst: write
      Src: /src/frr/pimd/pim_msdp_packet.c:233,1
    - Dst: stream_pnt
      Src: /src/frr/pimd/pim_msdp_packet.c:233,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/pimd/pim_msdp_packet.c:236,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:238,1
    - Dst: pim_msdp_peer_reset_tcp_conn
      Src: /src/frr/pimd/pim_msdp_packet.c:245,1
    - Dst: stream_forward_getp
      Src: /src/frr/pimd/pim_msdp_packet.c:251,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:253,1
    - Dst: stream_set_getp
      Src: /src/frr/pimd/pim_msdp_packet.c:261,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_msdp_packet.c:262,1
    - Dst: stream_getw
      Src: /src/frr/pimd/pim_msdp_packet.c:263,1
    - Dst: pim_msdp_pkt_dump
      Src: /src/frr/pimd/pim_msdp_packet.c:279,1
    - Dst: pim_msdp_pkt_delete
      Src: /src/frr/pimd/pim_msdp_packet.c:283,1
    - Dst: stream_fifo_head
      Src: /src/frr/pimd/pim_msdp_packet.c:291,1
    - Dst: pim_msdp_write_proceed_actions
      Src: /src/frr/pimd/pim_msdp_packet.c:292,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:295,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 68
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 193
    functionDepth: 5
    functionLinenumber: 193
    functionLinenumberEnd: 298
    functionName: pim_msdp_write
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - EVENT_ARG
    - stream_set_getp
    - write
    - pim_msdp_peer_reset_tcp_conn
    - stream_forward_getp
    - pim_msdp_write_proceed_actions
    - stream_get_endp
    - stream_getw
    - stream_fifo_head
    - zlog_debug
    - ERRNO_IO_RETRY
    - pim_msdp_pkt_delete
    - pim_msdp_connect_check
    - stream_getc
    - stream_pnt
    - stream_get_getp
    - pim_msdp_pkt_dump
    linkageType: ''
    returnType: void
    signature: void pim_msdp_write(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_pkt_add
      Src: /src/frr/pimd/pim_msdp_packet.c:303,1
    - Dst: PIM_MSDP_PEER_WRITE_ON
      Src: /src/frr/pimd/pim_msdp_packet.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mp
    - s
    argTypes:
    - struct pim_msdp_peer*
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 300
    functionDepth: 3
    functionLinenumber: 300
    functionLinenumberEnd: 306
    functionName: pim_msdp_pkt_send
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - pim_msdp_pkt_add
    - PIM_MSDP_PEER_WRITE_ON
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_send(struct pim_msdp_peer *mp, struct stream *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stream_new
      Src: /src/frr/pimd/pim_msdp_packet.c:316,1
    - Dst: stream_putc
      Src: /src/frr/pimd/pim_msdp_packet.c:317,1
    - Dst: stream_putw
      Src: /src/frr/pimd/pim_msdp_packet.c:318,1
    - Dst: pim_msdp_pkt_send
      Src: /src/frr/pimd/pim_msdp_packet.c:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 308
    functionDepth: 4
    functionLinenumber: 308
    functionLinenumberEnd: 321
    functionName: pim_msdp_pkt_ka_tx
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 2
    functionsReached:
    - stream_putw
    - stream_new
    - stream_putc
    - pim_msdp_pkt_send
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_ka_tx(struct pim_msdp_peer *mp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stream_dup
      Src: /src/frr/pimd/pim_msdp_packet.c:332,1
    - Dst: pim_msdp_pkt_send
      Src: /src/frr/pimd/pim_msdp_packet.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - pim
    - mp
    argTypes:
    - struct pim_instance*
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 323
    functionDepth: 4
    functionLinenumber: 323
    functionLinenumberEnd: 337
    functionName: pim_msdp_pkt_sa_push_to_one_peer
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_dup
    - pim_msdp_pkt_send
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_pkt_sa_push_to_one_peer(struct pim_instance *pim,\n\t\t\t\t\t
      \    struct pim_msdp_peer *mp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_pkt_sa_push_to_one_peer
      Src: /src/frr/pimd/pim_msdp_packet.c:346,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp_packet.c:348,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:350,1
    - Dst: pim_msdp_pkt_sa_push_to_one_peer
      Src: /src/frr/pimd/pim_msdp_packet.c:353,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pim
    - mp
    argTypes:
    - struct pim_instance*
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 340
    functionDepth: 5
    functionLinenumber: 340
    functionLinenumberEnd: 356
    functionName: pim_msdp_pkt_sa_push
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - zlog_debug
    - pim_msdp_pkt_sa_push_to_one_peer
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_pkt_sa_push(struct pim_instance *pim,\n\t\t\t\t struct
      pim_msdp_peer *mp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_msdp_packet.c:363,1
    - Dst: stream_putc
      Src: /src/frr/pimd/pim_msdp_packet.c:368,1
    - Dst: stream_putw
      Src: /src/frr/pimd/pim_msdp_packet.c:369,1
    - Dst: PIM_MSDP_SA_ENTRY_CNT2SIZE
      Src: /src/frr/pimd/pim_msdp_packet.c:370,1
    - Dst: stream_putc
      Src: /src/frr/pimd/pim_msdp_packet.c:371,1
    - Dst: stream_put_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - pim
    - local_cnt
    - rp
    argTypes:
    - struct pim_instance*
    - int
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 375
    functionName: pim_msdp_pkt_sa_fill_hdr
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_putw
    - PIM_MSDP_SA_ENTRY_CNT2SIZE
    - stream_put_ipv4
    - stream_reset
    - stream_putc
    linkageType: ''
    returnType: int
    signature: "int pim_msdp_pkt_sa_fill_hdr(struct pim_instance *pim, int local_cnt,\n\t\t\t\t
      \   struct in_addr rp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_put3
      Src: /src/frr/pimd/pim_msdp_packet.c:379,1
    - Dst: stream_putc
      Src: /src/frr/pimd/pim_msdp_packet.c:380,1
    - Dst: stream_put_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:381,1
    - Dst: stream_put_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - sa
    argTypes:
    - struct pim_msdp_sa*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: pim_msdp_pkt_sa_fill_one
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_put_ipv4
    - stream_putc
    - stream_put3
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_sa_fill_one(struct pim_msdp_sa *sa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:395,1
    - Dst: pim_msdp_pkt_sa_fill_hdr
      Src: /src/frr/pimd/pim_msdp_packet.c:398,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp_packet.c:401,1
    - Dst: pim_msdp_pkt_sa_fill_one
      Src: /src/frr/pimd/pim_msdp_packet.c:410,1
    - Dst: pim_msdp_pkt_sa_push
      Src: /src/frr/pimd/pim_msdp_packet.c:413,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:417,1
    - Dst: pim_msdp_pkt_sa_fill_hdr
      Src: /src/frr/pimd/pim_msdp_packet.c:420,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - pim
    - mp
    argTypes:
    - struct pim_instance*
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 385
    functionDepth: 6
    functionLinenumber: 385
    functionLinenumberEnd: 423
    functionName: pim_msdp_pkt_sa_gen
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - pim_msdp_pkt_sa_push
    - ALL_LIST_ELEMENTS_RO
    - pim_msdp_pkt_sa_fill_one
    - pim_msdp_pkt_sa_fill_hdr
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void pim_msdp_pkt_sa_gen(struct pim_instance *pim,\n\t\t\t\tstruct
      pim_msdp_peer *mp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp_packet.c:438,1
    - Dst: pim_msdp_peer_pkt_txed
      Src: /src/frr/pimd/pim_msdp_packet.c:441,1
    - Dst: pim_msdp_pkt_sa_tx
      Src: /src/frr/pimd/pim_msdp_packet.c:446,1
    - Dst: pim_msdp_pkt_sa_gen
      Src: /src/frr/pimd/pim_msdp_packet.c:448,1
    - Dst: pim_msdp_pkt_sa_tx_done
      Src: /src/frr/pimd/pim_msdp_packet.c:449,1
    - Dst: pim_msdp_pkt_sa_tx_one
      Src: /src/frr/pimd/pim_msdp_packet.c:452,1
    - Dst: pim_msdp_pkt_sa_fill_hdr
      Src: /src/frr/pimd/pim_msdp_packet.c:454,1
    - Dst: pim_msdp_pkt_sa_fill_one
      Src: /src/frr/pimd/pim_msdp_packet.c:455,1
    - Dst: pim_msdp_pkt_sa_push
      Src: /src/frr/pimd/pim_msdp_packet.c:456,1
    - Dst: pim_msdp_pkt_sa_tx_done
      Src: /src/frr/pimd/pim_msdp_packet.c:457,1
    - Dst: pim_msdp_pkt_sa_tx_to_one_peer
      Src: /src/frr/pimd/pim_msdp_packet.c:461,1
    - Dst: pim_msdp_pkt_sa_gen
      Src: /src/frr/pimd/pim_msdp_packet.c:463,1
    - Dst: pim_msdp_pkt_sa_tx_done
      Src: /src/frr/pimd/pim_msdp_packet.c:464,1
    - Dst: pim_msdp_pkt_sa_tx_one_to_one_peer
      Src: /src/frr/pimd/pim_msdp_packet.c:467,1
    - Dst: pim_msdp_pkt_sa_fill_hdr
      Src: /src/frr/pimd/pim_msdp_packet.c:473,1
    - Dst: pim_msdp_pkt_sa_fill_one
      Src: /src/frr/pimd/pim_msdp_packet.c:478,1
    - Dst: pim_msdp_pkt_sa_push
      Src: /src/frr/pimd/pim_msdp_packet.c:481,1
    - Dst: pim_msdp_pkt_sa_tx_done
      Src: /src/frr/pimd/pim_msdp_packet.c:482,1
    - Dst: pim_msdp_pkt_rxed_with_fatal_error
      Src: /src/frr/pimd/pim_msdp_packet.c:485,1
    - Dst: pim_msdp_peer_reset_tcp_conn
      Src: /src/frr/pimd/pim_msdp_packet.c:487,1
    - Dst: pim_msdp_pkt_ka_rx
      Src: /src/frr/pimd/pim_msdp_packet.c:490,1
    - Dst: pim_msdp_pkt_rxed_with_fatal_error
      Src: /src/frr/pimd/pim_msdp_packet.c:494,1
    - Dst: pim_msdp_peer_pkt_rxed
      Src: /src/frr/pimd/pim_msdp_packet.c:497,1
    - Dst: pim_msdp_pkt_sa_rx_one
      Src: /src/frr/pimd/pim_msdp_packet.c:500,1
    - Dst: stream_get3
      Src: /src/frr/pimd/pim_msdp_packet.c:508,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_msdp_packet.c:509,1
    - Dst: memset
      Src: /src/frr/pimd/pim_msdp_packet.c:511,1
    - Dst: stream_get_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:512,1
    - Dst: stream_get_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:513,1
    - Dst: flog_err
      Src: /src/frr/pimd/pim_msdp_packet.c:517,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:523,1
    - Dst: pim_msdp_sa_ref
      Src: /src/frr/pimd/pim_msdp_packet.c:525,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_msdp_packet.c:531,1
    - Dst: pim_msdp_peer_rpf_check
      Src: /src/frr/pimd/pim_msdp_packet.c:533,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_msdp_packet.c:537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 431
    functionDepth: 10
    functionLinenumber: 431
    functionLinenumberEnd: 541
    functionName: pim_msdp_pkt_sa_tx_done
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 1
    functionsReached:
    - pim_msdp_pkt_ka_rx
    - pim_msdp_pkt_sa_tx
    - pim_msdp_pkt_sa_fill_one
    - pim_msdp_pkt_sa_tx_to_one_peer
    - flog_err
    - stream_getc
    - memset
    - stream_get_ipv4
    - ALL_LIST_ELEMENTS_RO
    - pim_msdp_pkt_sa_gen
    - pim_msdp_pkt_sa_fill_hdr
    - zlog_debug
    - pim_msdp_peer_pkt_rxed
    - pim_msdp_pkt_sa_tx_one_to_one_peer
    - pim_msdp_pkt_sa_push
    - pim_msdp_pkt_sa_rx_one
    - pim_msdp_pkt_rxed_with_fatal_error
    - pim_msdp_peer_rpf_check
    - pim_msdp_peer_pkt_txed
    - pim_msdp_peer_reset_tcp_conn
    - strcmp
    - stream_get3
    - pim_msdp_sa_ref
    - pim_msdp_pkt_sa_tx_one
    - pim_msdp_pkt_sa_tx_done
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_sa_tx_done(struct pim_instance *pim)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pim_msdp_pkt_rxed_with_fatal_error
      Src: /src/frr/pimd/pim_msdp_packet.c:553,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_msdp_packet.c:557,1
    - Dst: PIM_MSDP_SA_ENTRY_CNT2SIZE
      Src: /src/frr/pimd/pim_msdp_packet.c:562,1
    - Dst: pim_msdp_pkt_rxed_with_fatal_error
      Src: /src/frr/pimd/pim_msdp_packet.c:563,1
    - Dst: stream_get_ipv4
      Src: /src/frr/pimd/pim_msdp_packet.c:566,1
    - Dst: pim_inet4_dump
      Src: /src/frr/pimd/pim_msdp_packet.c:570,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:571,1
    - Dst: pim_msdp_peer_pkt_rxed
      Src: /src/frr/pimd/pim_msdp_packet.c:574,1
    - Dst: pim_msdp_peer_rpf_check
      Src: /src/frr/pimd/pim_msdp_packet.c:576,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:580,1
    - Dst: pim_msdp_pkt_sa_rx_one
      Src: /src/frr/pimd/pim_msdp_packet.c:587,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - mp
    - len
    argTypes:
    - struct pim_msdp_peer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 544
    functionDepth: 3
    functionLinenumber: 544
    functionLinenumberEnd: 589
    functionName: pim_msdp_pkt_sa_rx
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - pim_msdp_pkt_sa_rx_one
    - stream_get_ipv4
    - zlog_debug
    - pim_msdp_pkt_rxed_with_fatal_error
    - PIM_MSDP_SA_ENTRY_CNT2SIZE
    - pim_msdp_peer_pkt_rxed
    - stream_getc
    - pim_inet4_dump
    - pim_msdp_peer_rpf_check
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_sa_rx(struct pim_msdp_peer *mp, int len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: stream_getc_from
      Src: /src/frr/pimd/pim_msdp_packet.c:597,1
    - Dst: stream_getw_from
      Src: /src/frr/pimd/pim_msdp_packet.c:598,1
    - Dst: pim_msdp_pkt_rxed_with_fatal_error
      Src: /src/frr/pimd/pim_msdp_packet.c:600,1
    - Dst: pim_msdp_pkt_dump
      Src: /src/frr/pimd/pim_msdp_packet.c:610,1
    - Dst: pim_msdp_pkt_ka_rx
      Src: /src/frr/pimd/pim_msdp_packet.c:615,1
    - Dst: pim_msdp_pkt_sa_rx
      Src: /src/frr/pimd/pim_msdp_packet.c:619,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 591
    functionDepth: 5
    functionLinenumber: 591
    functionLinenumberEnd: 629
    functionName: pim_msdp_pkt_rx
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_getw_from
    - pim_msdp_pkt_ka_rx
    - pim_msdp_pkt_sa_rx
    - pim_msdp_pkt_rxed_with_fatal_error
    - stream_getc_from
    - pim_msdp_pkt_dump
    linkageType: ''
    returnType: void
    signature: void pim_msdp_pkt_rx(struct pim_msdp_peer *mp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_msdp_packet.c:639,1
    - Dst: stream_read_try
      Src: /src/frr/pimd/pim_msdp_packet.c:646,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_msdp_packet.c:647,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:650,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:655,1
    - Dst: pim_msdp_pkt_rxed_with_fatal_error
      Src: /src/frr/pimd/pim_msdp_packet.c:662,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:668,1
    - Dst: pim_msdp_peer_reset_tcp_conn
      Src: /src/frr/pimd/pim_msdp_packet.c:671,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_msdp_packet.c:676,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:678,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - mp
    argTypes:
    - struct pim_msdp_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 632
    functionDepth: 4
    functionLinenumber: 632
    functionLinenumberEnd: 687
    functionName: pim_msdp_read_packet
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_read_try
    - pim_msdp_peer_reset_tcp_conn
    - stream_get_endp
    - zlog_debug
    - pim_msdp_pkt_rxed_with_fatal_error
    linkageType: ''
    returnType: int
    signature: int pim_msdp_read_packet(struct pim_msdp_peer *mp)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_msdp_packet.c:695,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:699,1
    - Dst: pim_msdp_connect_check
      Src: /src/frr/pimd/pim_msdp_packet.c:708,1
    - Dst: PIM_MSDP_PEER_READ_ON
      Src: /src/frr/pimd/pim_msdp_packet.c:712,1
    - Dst: stream_get_endp
      Src: /src/frr/pimd/pim_msdp_packet.c:718,1
    - Dst: pim_msdp_read_packet
      Src: /src/frr/pimd/pim_msdp_packet.c:720,1
    - Dst: stream_getc
      Src: /src/frr/pimd/pim_msdp_packet.c:725,1
    - Dst: stream_getw
      Src: /src/frr/pimd/pim_msdp_packet.c:726,1
    - Dst: pim_msdp_pkt_rxed_with_fatal_error
      Src: /src/frr/pimd/pim_msdp_packet.c:728,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_msdp_packet.c:747,1
    - Dst: stream_resize_inplace
      Src: /src/frr/pimd/pim_msdp_packet.c:751,1
    - Dst: pim_msdp_read_packet
      Src: /src/frr/pimd/pim_msdp_packet.c:759,1
    - Dst: pim_msdp_pkt_rx
      Src: /src/frr/pimd/pim_msdp_packet.c:763,1
    - Dst: stream_reset
      Src: /src/frr/pimd/pim_msdp_packet.c:767,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 689
    functionDepth: 6
    functionLinenumber: 689
    functionLinenumberEnd: 768
    functionName: pim_msdp_read
    functionSourceFile: /src/frr/pimd/pim_msdp_packet.c
    functionUses: 0
    functionsReached:
    - stream_resize_inplace
    - EVENT_ARG
    - PIM_MSDP_PEER_READ_ON
    - pim_msdp_read_packet
    - stream_get_endp
    - stream_getw
    - zlog_debug
    - pim_msdp_pkt_rxed_with_fatal_error
    - pim_msdp_connect_check
    - pim_msdp_pkt_rx
    - stream_getc
    - stream_reset
    linkageType: ''
    returnType: void
    signature: void pim_msdp_read(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - vrfptr
    - ','
    - pimptr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: PIM_DECLVAR_CONTEXT_VRF
    functionSourceFile: /src/frr/pimd/pim_cmd_common.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PIM_DECLVAR_CONTEXT_VRF(vrfptr, pimptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_assert.c:39,1
    - Dst: pim_assert_metric_match
      Src: /src/frr/pimd/pim_assert.c:40,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:47,1
    - Dst: pim_ifchannel_ifassert_name
      Src: /src/frr/pimd/pim_assert.c:50,1
    - Dst: pim_ifchannel_ifassert_name
      Src: /src/frr/pimd/pim_assert.c:51,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:56,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_assert.c:65,1
    - Dst: pim_rpf_update
      Src: /src/frr/pimd/pim_assert.c:71,1
    - Dst: pim_zebra_upstream_rpf_changed
      Src: /src/frr/pimd/pim_assert.c:76,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_assert.c:81,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_assert.c:84,1
    - Dst: pim_ifchannel_update_could_assert
      Src: /src/frr/pimd/pim_assert.c:85,1
    - Dst: pim_ifchannel_update_assert_tracking_desired
      Src: /src/frr/pimd/pim_assert.c:86,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - ch
    - new_state
    - winner
    - winner_metric
    argTypes:
    - struct pim_ifchannel*
    - enum pim_ifassert_state
    - pim_addr
    - struct pim_assert_metric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 34
    functionDepth: 11
    functionLinenumber: 34
    functionLinenumberEnd: 88
    functionName: pim_ifassert_winner_set
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 1
    functionsReached:
    - pim_upstream_mroute_iif_update
    - pim_upstream_update_join_desired
    - pim_ifchannel_update_could_assert
    - pim_assert_metric_match
    - pim_addr_cmp
    - zlog_debug
    - pim_time_monotonic_sec
    - pim_rpf_update
    - pim_ifchannel_update_assert_tracking_desired
    - pim_zebra_upstream_rpf_changed
    - pim_ifchannel_ifassert_name
    linkageType: ''
    returnType: void
    signature: "void pim_ifassert_winner_set(struct pim_ifchannel *ch,\n\t\t\t     enum
      pim_ifassert_state new_state, pim_addr winner,\n\t\t\t     struct pim_assert_metric
      winner_metric)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - label
    - ifp
    - src
    argTypes:
    - char*
    - struct interface*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: on_trace
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 11
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void on_trace(const char *label, struct interface *ifp, pim_addr src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_assert_metric_better
      Src: /src/frr/pimd/pim_assert.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ch
    - recv_metric
    argTypes:
    - struct pim_ifchannel*
    - struct pim_assert_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: preferred_assert
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_assert_metric_better
    linkageType: ''
    returnType: int
    signature: "int preferred_assert(const struct pim_ifchannel *ch,\n\t\t\t    const
      struct pim_assert_metric *recv_metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_assert_metric_better
      Src: /src/frr/pimd/pim_assert.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_metric
    - recv_metric
    argTypes:
    - struct pim_assert_metric*
    - struct pim_assert_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: acceptable_assert
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_assert_metric_better
    linkageType: ''
    returnType: int
    signature: "int acceptable_assert(const struct pim_assert_metric *my_metric,\n\t\t\t
      \    const struct pim_assert_metric *recv_metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_assert_metric_better
      Src: /src/frr/pimd/pim_assert.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - my_metric
    - recv_metric
    argTypes:
    - struct pim_assert_metric*
    - struct pim_assert_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: inferior_assert
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_assert_metric_better
    linkageType: ''
    returnType: int
    signature: "int inferior_assert(const struct pim_assert_metric *my_metric,\n\t\t\t
      \  const struct pim_assert_metric *recv_metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - recv_metric
    argTypes:
    - struct pim_assert_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: cancel_assert
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cancel_assert(const struct pim_assert_metric *recv_metric)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PIM_IF_FLAG_TEST_COULD_ASSERT
      Src: /src/frr/pimd/pim_assert.c:124,1
    - Dst: assert_action_a1
      Src: /src/frr/pimd/pim_assert.c:125,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - caller
    - ch
    argTypes:
    - char*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 133
    functionName: if_could_assert_do_a1
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - PIM_IF_FLAG_TEST_COULD_ASSERT
    - assert_action_a1
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void if_could_assert_do_a1(const char *caller, struct pim_ifchannel
      *ch)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_assert.c:142,1
    - Dst: pim_ifchannel_add
      Src: /src/frr/pimd/pim_assert.c:145,1
    - Dst: if_could_assert_do_a1
      Src: /src/frr/pimd/pim_assert.c:151,1
    - Dst: inferior_assert
      Src: /src/frr/pimd/pim_assert.c:154,1
    - Dst: if_could_assert_do_a1
      Src: /src/frr/pimd/pim_assert.c:156,1
    - Dst: acceptable_assert
      Src: /src/frr/pimd/pim_assert.c:157,1
    - Dst: PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED
      Src: /src/frr/pimd/pim_assert.c:159,1
    - Dst: assert_action_a6
      Src: /src/frr/pimd/pim_assert.c:161,1
    - Dst: preferred_assert
      Src: /src/frr/pimd/pim_assert.c:167,1
    - Dst: assert_action_a2
      Src: /src/frr/pimd/pim_assert.c:168,1
    - Dst: inferior_assert
      Src: /src/frr/pimd/pim_assert.c:170,1
    - Dst: assert_action_a3
      Src: /src/frr/pimd/pim_assert.c:172,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_assert.c:177,1
    - Dst: cancel_assert
      Src: /src/frr/pimd/pim_assert.c:181,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_assert.c:182,1
    - Dst: inferior_assert
      Src: /src/frr/pimd/pim_assert.c:184,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_assert.c:186,1
    - Dst: acceptable_assert
      Src: /src/frr/pimd/pim_assert.c:187,1
    - Dst: assert_action_a2
      Src: /src/frr/pimd/pim_assert.c:191,1
    - Dst: preferred_assert
      Src: /src/frr/pimd/pim_assert.c:196,1
    - Dst: assert_action_a2
      Src: /src/frr/pimd/pim_assert.c:197,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:201,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 4
    argNames:
    - ifp
    - source_addr
    - group_addr
    - recv_metric
    argTypes:
    - struct interface*
    - pim_addr
    - pim_addr
    - struct pim_assert_metric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 135
    functionDepth: 8
    functionLinenumber: 135
    functionLinenumberEnd: 209
    functionName: dispatch_assert
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - PIM_IF_FLAG_TEST_ASSERT_TRACKING_DESIRED
    - assert_action_a2
    - memset
    - cancel_assert
    - assert_action_a5
    - acceptable_assert
    - preferred_assert
    - assert_action_a6
    - inferior_assert
    - assert_action_a3
    - pim_addr_cmp
    - zlog_warn
    - pim_ifchannel_add
    - if_could_assert_do_a1
    linkageType: ''
    returnType: int
    signature: "int dispatch_assert(struct interface *ifp, pim_addr source_addr,\n\t\t\t
      \  pim_addr group_addr,\n\t\t\t   struct pim_assert_metric recv_metric)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: on_trace
      Src: /src/frr/pimd/pim_assert.c:223,1
    - Dst: memset
      Src: /src/frr/pimd/pim_assert.c:231,1
    - Dst: pim_parse_addr_group
      Src: /src/frr/pimd/pim_assert.c:232,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:234,1
    - Dst: pim_parse_addr_ucast
      Src: /src/frr/pimd/pim_assert.c:245,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:248,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:257,1
    - Dst: pim_read_uint32_host
      Src: /src/frr/pimd/pim_assert.c:267,1
    - Dst: pim_read_uint32_host
      Src: /src/frr/pimd/pim_assert.c:279,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:282,1
    - Dst: PIM_FORCE_BOOLEAN
      Src: /src/frr/pimd/pim_assert.c:287,1
    - Dst: assert
      Src: /src/frr/pimd/pim_assert.c:292,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:296,1
    - Dst: dispatch_assert
      Src: /src/frr/pimd/pim_assert.c:304,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 5
    argNames:
    - ifp
    - neigh
    - src_addr
    - buf
    - buf_size
    argTypes:
    - struct interface*
    - struct pim_neighbor*
    - pim_addr
    - uint8_t*
    - int
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 291
        line_start: 291
        source_file: /src/frr/pimd/pim_assert.c
    constantsTouched: []
    func_position:
      end: 305
      start: 211
    functionDepth: 9
    functionLinenumber: 211
    functionLinenumberEnd: 305
    functionName: pim_assert_recv
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 1
    functionsReached:
    - dispatch_assert
    - pim_read_uint32_host
    - memset
    - zlog_warn
    - zlog_debug
    - PIM_FORCE_BOOLEAN
    - pim_parse_addr_ucast
    - pim_parse_addr_group
    - on_trace
    - assert
    linkageType: ''
    returnType: int
    signature: "int pim_assert_recv(struct interface *ifp, struct pim_neighbor *neigh,\n\t\t
      \   pim_addr src_addr, uint8_t *buf, int buf_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_assert.c:336,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct pim_assert_metric*
    - struct pim_assert_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 337
    functionName: pim_assert_metric_better
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 5
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int pim_assert_metric_better(const struct pim_assert_metric *m1,\n\t\t\t
      \    const struct pim_assert_metric *m2)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_assert.c:349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct pim_assert_metric*
    - struct pim_assert_metric*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 350
    functionName: pim_assert_metric_match
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 2
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: int
    signature: "int pim_assert_metric_match(const struct pim_assert_metric *m1,\n\t\t\t
      \   const struct pim_assert_metric *m2)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_msg_addr_encode_group
      Src: /src/frr/pimd/pim_assert.c:368,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:370,1
    - Dst: pim_msg_addr_encode_ucast
      Src: /src/frr/pimd/pim_assert.c:378,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:380,1
    - Dst: pim_write_uint32
      Src: /src/frr/pimd/pim_assert.c:387,1
    - Dst: pim_write_uint32
      Src: /src/frr/pimd/pim_assert.c:393,1
    - Dst: pim_msg_build_header
      Src: /src/frr/pimd/pim_assert.c:400,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 8
    argNames:
    - pim_msg
    - buf_size
    - ifp
    - group_addr
    - source_addr
    - metric_preference
    - route_metric
    - rpt_bit_flag
    argTypes:
    - uint8_t*
    - int
    - struct interface*
    - pim_addr
    - pim_addr
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 352
    functionDepth: 3
    functionLinenumber: 352
    functionLinenumberEnd: 405
    functionName: pim_assert_build_msg
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_msg_addr_encode_group
    - pim_write_uint32
    - pim_msg_build_header
    - zlog_warn
    - pim_msg_addr_encode_ucast
    linkageType: ''
    returnType: int
    signature: "int pim_assert_build_msg(uint8_t *pim_msg, int buf_size, struct interface
      *ifp,\n\t\t\t pim_addr group_addr, pim_addr source_addr,\n\t\t\t uint32_t metric_preference,
      uint32_t route_metric,\n\t\t\t uint32_t rpt_bit_flag)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:418,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:425,1
    - Dst: pim_assert_build_msg
      Src: /src/frr/pimd/pim_assert.c:432,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:436,1
    - Dst: pim_hello_require
      Src: /src/frr/pimd/pim_assert.c:451,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:454,1
    - Dst: PIM_FORCE_BOOLEAN
      Src: /src/frr/pimd/pim_assert.c:457,1
    - Dst: pim_msg_send
      Src: /src/frr/pimd/pim_assert.c:462,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:465,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - ch
    - metric
    argTypes:
    - struct pim_ifchannel*
    - struct pim_assert_metric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 407
    functionDepth: 7
    functionLinenumber: 407
    functionLinenumberEnd: 471
    functionName: pim_assert_do
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_msg_send
    - pim_assert_build_msg
    - zlog_warn
    - zlog_debug
    - PIM_FORCE_BOOLEAN
    - pim_hello_require
    linkageType: ''
    returnType: int
    signature: "int pim_assert_do(struct pim_ifchannel *ch,\n\t\t\t struct pim_assert_metric
      metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_assert_do
      Src: /src/frr/pimd/pim_assert.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 473
    functionDepth: 8
    functionLinenumber: 473
    functionLinenumberEnd: 476
    functionName: pim_assert_send
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_assert_do
    linkageType: ''
    returnType: int
    signature: int pim_assert_send(struct pim_ifchannel *ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_assert_do
      Src: /src/frr/pimd/pim_assert.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 484
    functionDepth: 8
    functionLinenumber: 484
    functionLinenumberEnd: 494
    functionName: pim_assert_cancel
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_assert_do
    linkageType: ''
    returnType: int
    signature: int pim_assert_cancel(struct pim_ifchannel *ch)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_assert.c:501,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:506,1
    - Dst: assert_action_a3
      Src: /src/frr/pimd/pim_assert.c:514,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_assert.c:517,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:521,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 527
    functionName: on_assert_timer
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - assert_action_a5
    - assert_action_a3
    - zlog_warn
    - zlog_debug
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void on_assert_timer(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:533,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_assert.c:538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 539
    functionName: assert_timer_off
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void assert_timer_off(struct pim_ifchannel *ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert_timer_off
      Src: /src/frr/pimd/pim_assert.c:543,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_assert.c:546,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_assert.c:550,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ch
    - interval
    argTypes:
    - struct pim_ifchannel*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 552
    functionName: pim_assert_timer_set
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - zlog_debug
    - assert_timer_off
    linkageType: ''
    returnType: void
    signature: void pim_assert_timer_set(struct pim_ifchannel *ch, int interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_assert_timer_set
      Src: /src/frr/pimd/pim_assert.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 554
    functionDepth: 3
    functionLinenumber: 554
    functionLinenumberEnd: 558
    functionName: pim_assert_timer_reset
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 0
    functionsReached:
    - pim_assert_timer_set
    linkageType: ''
    returnType: void
    signature: void pim_assert_timer_reset(struct pim_ifchannel *ch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:577,1
    - Dst: pim_ifassert_winner_set
      Src: /src/frr/pimd/pim_assert.c:583,1
    - Dst: pim_macro_spt_assert_metric
      Src: /src/frr/pimd/pim_assert.c:585,1
    - Dst: assert_action_a3
      Src: /src/frr/pimd/pim_assert.c:588,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:589,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:597,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 570
    functionDepth: 12
    functionLinenumber: 570
    functionLinenumberEnd: 603
    functionName: assert_action_a1
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 2
    functionsReached:
    - zlog_warn
    - assert_action_a3
    - pim_ifassert_winner_set
    - pim_macro_spt_assert_metric
    linkageType: ''
    returnType: int
    signature: int assert_action_a1(struct pim_ifchannel *ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_ifassert_winner_set
      Src: /src/frr/pimd/pim_assert.c:617,1
    - Dst: pim_assert_timer_set
      Src: /src/frr/pimd/pim_assert.c:620,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:624,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ch
    - winner_metric
    argTypes:
    - struct pim_ifchannel*
    - struct pim_assert_metric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 614
    functionDepth: 12
    functionLinenumber: 614
    functionLinenumberEnd: 628
    functionName: assert_action_a2
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - pim_assert_timer_set
    - pim_ifassert_winner_set
    linkageType: ''
    returnType: void
    signature: "void assert_action_a2(struct pim_ifchannel *ch,\n\t\t\t     struct
      pim_assert_metric winner_metric)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:642,1
    - Dst: pim_assert_timer_reset
      Src: /src/frr/pimd/pim_assert.c:648,1
    - Dst: pim_assert_send
      Src: /src/frr/pimd/pim_assert.c:650,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 638
    functionDepth: 9
    functionLinenumber: 638
    functionLinenumberEnd: 657
    functionName: assert_action_a3
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 3
    functionsReached:
    - pim_assert_timer_reset
    - zlog_warn
    - pim_assert_send
    linkageType: ''
    returnType: int
    signature: int assert_action_a3(struct pim_ifchannel *ch)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_assert_cancel
      Src: /src/frr/pimd/pim_assert.c:671,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:672,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_assert.c:677,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:681,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 669
    functionDepth: 9
    functionLinenumber: 669
    functionLinenumberEnd: 685
    functionName: assert_action_a4
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 1
    functionsReached:
    - assert_action_a5
    - zlog_warn
    - pim_assert_cancel
    linkageType: ''
    returnType: void
    signature: void assert_action_a4(struct pim_ifchannel *ch)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reset_ifassert_state
      Src: /src/frr/pimd/pim_assert.c:697,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:700,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ch
    argTypes:
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 695
    functionDepth: 2
    functionLinenumber: 695
    functionLinenumberEnd: 704
    functionName: assert_action_a5
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 6
    functionsReached:
    - zlog_warn
    - reset_ifassert_state
    linkageType: ''
    returnType: void
    signature: void assert_action_a5(struct pim_ifchannel *ch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert_action_a2
      Src: /src/frr/pimd/pim_assert.c:720,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_assert.c:732,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ch
    - winner_metric
    argTypes:
    - struct pim_ifchannel*
    - struct pim_assert_metric
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 717
    functionDepth: 13
    functionLinenumber: 717
    functionLinenumberEnd: 736
    functionName: assert_action_a6
    functionSourceFile: /src/frr/pimd/pim_assert.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - assert_action_a2
    linkageType: ''
    returnType: void
    signature: "void assert_action_a6(struct pim_ifchannel *ch,\n\t\t\t     struct
      pim_assert_metric winner_metric)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/pimd/pim_igmp_stats.c:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stats
    argTypes:
    - struct igmp_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 16
    functionName: igmp_stats_init
    functionSourceFile: /src/frr/pimd/pim_igmp_stats.c
    functionUses: 3
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void igmp_stats_init(struct igmp_stats *stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct igmp_stats*
    - struct igmp_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 43
    functionName: igmp_stats_add
    functionSourceFile: /src/frr/pimd/pim_igmp_stats.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void igmp_stats_add(struct igmp_stats *a, struct igmp_stats *b)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: list_isempty
      Src: /src/frr/pimd/pim_upstream.c:62,1
    - Dst: listnode_head
      Src: /src/frr/pimd/pim_upstream.c:63,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_upstream.c:64,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_LHR
      Src: /src/frr/pimd/pim_upstream.c:65,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_LHR
      Src: /src/frr/pimd/pim_upstream.c:66,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_upstream.c:67,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_upstream.c:71,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_upstream.c:72,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_upstream.c:77,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 78
    functionName: pim_upstream_remove_children
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_SRC_LHR
    - pim_upstream_mroute_iif_update
    - PIM_UPSTREAM_FLAG_UNSET_SRC_LHR
    - PIM_UPSTREAM_FLAG_TEST_USE_RPT
    - list_delete
    - list_isempty
    - pim_upstream_del
    - listnode_head
    - listnode_delete
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_remove_children(struct pim_instance *pim,\n\t\t\t\t\t
      struct pim_upstream *up)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:90,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:90,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:93,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:93,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_upstream.c:96,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:97,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_upstream.c:98,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_upstream.c:100,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_upstream.c:101,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_upstream.c:102,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 107
    functionName: pim_upstream_find_new_children
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_USE_RPT
    - listnode_add_sort
    - frr_each
    - pim_addr_is_any
    - pim_addr_cmp
    - pim_upstream_mroute_iif_update
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_find_new_children(struct pim_instance *pim,\n\t\t\t\t\t
      \  struct pim_upstream *up)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:121,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:122,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_upstream.c:124,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_upstream.c:127,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_upstream.c:132,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_upstream.c:133,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_upstream.c:134,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF
      Src: /src/frr/pimd/pim_upstream.c:135,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_MLAG_NON_DF
      Src: /src/frr/pimd/pim_upstream.c:137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - pim
    - child
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 145
    functionName: pim_upstream_find_parent
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_addr_is_any
    - pim_upstream_find
    - PIM_UPSTREAM_FLAG_UNSET_MLAG_NON_DF
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - listnode_add
    - PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
    - PIM_UPSTREAM_FLAG_SET_MLAG_INTERFACE
    - PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF
    linkageType: ''
    returnType: struct pim_upstream
    signature: "struct pim_upstream *pim_upstream_find_parent(struct pim_instance
      *pim,\n\t\t\t\t\t\t     struct pim_upstream *child)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_oil_upstream_deref
      Src: /src/frr/pimd/pim_upstream.c:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 165
    functionName: upstream_channel_oil_detach
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_channel_oil_upstream_deref
    linkageType: ''
    returnType: void
    signature: void upstream_channel_oil_detach(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:169,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:170,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:171,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 173
    functionName: pim_upstream_timers_stop
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_upstream_timers_stop(struct pim_upstream *up)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:183,1
    - Dst: assert
      Src: /src/frr/pimd/pim_upstream.c:189,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:197,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_upstream.c:200,1
    - Dst: pim_mlag_up_local_del
      Src: /src/frr/pimd/pim_upstream.c:201,1
    - Dst: pim_upstream_timers_stop
      Src: /src/frr/pimd/pim_upstream.c:203,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_upstream.c:206,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:208,1
    - Dst: join_timer_stop
      Src: /src/frr/pimd/pim_upstream.c:216,1
    - Dst: pim_jp_agg_upstream_verification
      Src: /src/frr/pimd/pim_upstream.c:217,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:220,1
    - Dst: wheel_remove_item
      Src: /src/frr/pimd/pim_upstream.c:222,1
    - Dst: pim_mroute_del
      Src: /src/frr/pimd/pim_upstream.c:226,1
    - Dst: upstream_channel_oil_detach
      Src: /src/frr/pimd/pim_upstream.c:227,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_upstream.c:229,1
    - Dst: pim_ifchannel_delete
      Src: /src/frr/pimd/pim_upstream.c:230,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_upstream.c:231,1
    - Dst: pim_upstream_remove_children
      Src: /src/frr/pimd/pim_upstream.c:233,1
    - Dst: if
      Src: /src/frr/pimd/pim_upstream.c:234,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_upstream.c:235,1
    - Dst: if
      Src: /src/frr/pimd/pim_upstream.c:237,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_upstream.c:238,1
    - Dst: rb_pim_upstream_del
      Src: /src/frr/pimd/pim_upstream.c:241,1
    - Dst: pim_msdp_up_del
      Src: /src/frr/pimd/pim_upstream.c:244,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:253,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:256,1
    - Dst: pim_delete_tracked_nexthop
      Src: /src/frr/pimd/pim_upstream.c:259,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_upstream.c:262,1
    - Dst: pim_upstream_send_join
      Src: /src/frr/pimd/pim_upstream.c:267,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:271,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:277,1
    - Dst: pim_upstream_state2str
      Src: /src/frr/pimd/pim_upstream.c:279,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_upstream.c:281,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:282,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_upstream.c:289,1
    - Dst: on_join_timer
      Src: /src/frr/pimd/pim_upstream.c:292,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_upstream.c:296,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:300,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_upstream.c:308,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_upstream.c:316,1
    - Dst: join_timer_start
      Src: /src/frr/pimd/pim_upstream.c:319,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - pim
    - up
    - name
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - char*
    assertStmts:
    - condition: (up->ref_count > 0)
      pos:
        line_end: 188
        line_start: 188
        source_file: /src/frr/pimd/pim_upstream.c
    constantsTouched: []
    func_position:
      end: 320
      start: 175
    functionDepth: 8
    functionLinenumber: 175
    functionLinenumberEnd: 320
    functionName: pim_upstream_del
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 7
    functionsReached:
    - list_delete
    - pim_upstream_remove_children
    - on_join_timer
    - join_timer_start
    - rb_pim_upstream_del
    - wheel_remove_item
    - pim_addr_is_any
    - if_is_loopback
    - pim_mroute_del
    - zlog_debug
    - pim_upstream_state2str
    - EVENT_ARG
    - if
    - upstream_channel_oil_detach
    - pim_jp_agg_upstream_verification
    - join_timer_stop
    - assert
    - pim_rpf_addr_is_inaddr_any
    - pim_delete_tracked_nexthop
    - pim_jp_agg_single_upstream_send
    - pim_upstream_send_join
    - pim_upstream_timers_stop
    - XFREE
    - listnode_delete
    - pim_ifchannel_delete
    - pim_mlag_up_local_del
    - pim_up_mlag_is_local
    - pim_msdp_up_del
    - ALL_LIST_ELEMENTS
    - PIM_UPSTREAM_FLAG_TEST_FHR
    linkageType: ''
    returnType: struct pim_upstream
    signature: "struct pim_upstream *pim_upstream_del(struct pim_instance *pim,\n\t\t\t\t
      \     struct pim_upstream *up, const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:326,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_upstream.c:329,1
    - Dst: pim_jp_agg_remove_group
      Src: /src/frr/pimd/pim_upstream.c:333,1
    - Dst: pim_jp_agg_upstream_verification
      Src: /src/frr/pimd/pim_upstream.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 336
    functionName: join_timer_stop
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_neighbor_find
    - EVENT_OFF
    - pim_jp_agg_upstream_verification
    - pim_jp_agg_remove_group
    linkageType: ''
    returnType: void
    signature: void join_timer_stop(struct pim_upstream *up)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_upstream.c:343,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:347,1
    - Dst: pim_jp_agg_add_group
      Src: /src/frr/pimd/pim_upstream.c:354,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:356,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_upstream.c:357,1
    - Dst: pim_jp_agg_upstream_verification
      Src: /src/frr/pimd/pim_upstream.c:360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 361
    functionName: join_timer_start
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_neighbor_find
    - pim_jp_agg_add_group
    - zlog_debug
    - EVENT_OFF
    - event_add_timer
    - pim_jp_agg_upstream_verification
    linkageType: ''
    returnType: void
    signature: void join_timer_start(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: join_timer_start
      Src: /src/frr/pimd/pim_upstream.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - up
    - old
    argTypes:
    - struct pim_upstream*
    - struct pim_rpf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 375
    functionName: pim_upstream_join_timer_restart
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - join_timer_start
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_join_timer_restart(struct pim_upstream *up,\n\t\t\t\t
      \    struct pim_rpf *old)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:381,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:385,1
    - Dst: event_add_timer_msec
      Src: /src/frr/pimd/pim_upstream.c:386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - up
    - interval_msec
    argTypes:
    - struct pim_upstream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 388
    functionName: pim_upstream_join_timer_restart_msec
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - event_add_timer_msec
    - zlog_debug
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_join_timer_restart_msec(struct pim_upstream *up,\n\t\t\t\t\t\t
      int interval_msec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RB_FOREACH
      Src: /src/frr/pimd/pim_upstream.c:401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - suppress_time
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 410
    functionName: pim_update_suppress_timers
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - RB_FOREACH
    linkageType: ''
    returnType: void
    signature: void pim_update_suppress_timers(uint32_t suppress_time)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:421,1
    - Dst: MIN
      Src: /src/frr/pimd/pim_upstream.c:427,1
    - Dst: pim_if_t_suppressed_msec
      Src: /src/frr/pimd/pim_upstream.c:427,1
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_upstream.c:432,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_upstream.c:435,1
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_upstream.c:440,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:445,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:452,1
    - Dst: pim_jp_agg_remove_group
      Src: /src/frr/pimd/pim_upstream.c:459,1
    - Dst: pim_upstream_join_timer_restart_msec
      Src: /src/frr/pimd/pim_upstream.c:461,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - up
    - rpf
    - holdtime
    argTypes:
    - struct pim_upstream*
    - pim_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 412
    functionDepth: 3
    functionLinenumber: 412
    functionLinenumberEnd: 463
    functionName: pim_upstream_join_suppress
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - MIN
    - pim_neighbor_find
    - pim_time_timer_remain_msec
    - pim_upstream_join_timer_restart_msec
    - pim_if_t_suppressed_msec
    - zlog_debug
    - pim_jp_agg_remove_group
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_join_suppress(struct pim_upstream *up, pim_addr
      rpf,\n\t\t\t\tint holdtime)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:473,1
    - Dst: pim_if_t_override_msec
      Src: /src/frr/pimd/pim_upstream.c:479,1
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_upstream.c:483,1
    - Dst: pim_neighbor_find
      Src: /src/frr/pimd/pim_upstream.c:488,1
    - Dst: pim_time_timer_remain_msec
      Src: /src/frr/pimd/pim_upstream.c:493,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:500,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:507,1
    - Dst: pim_upstream_join_timer_restart_msec
      Src: /src/frr/pimd/pim_upstream.c:512,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - debug_label
    - up
    argTypes:
    - char*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 465
    functionDepth: 4
    functionLinenumber: 465
    functionLinenumberEnd: 514
    functionName: pim_upstream_join_timer_decrease_to_t_override
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_time_timer_remain_msec
    - pim_neighbor_find
    - pim_upstream_join_timer_restart_msec
    - zlog_debug
    - pim_if_t_override_msec
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_join_timer_decrease_to_t_override(const char *debug_label,\n\t\t\t\t\t\t
      \   struct pim_upstream *up)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_upstream.c:523,1
    - Dst: pim_macro_chisin_oiflist
      Src: /src/frr/pimd/pim_upstream.c:524,1
    - Dst: pim_forward_start
      Src: /src/frr/pimd/pim_upstream.c:525,1
    - Dst: forward_off
      Src: /src/frr/pimd/pim_upstream.c:530,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_upstream.c:537,1
    - Dst: pim_forward_stop
      Src: /src/frr/pimd/pim_upstream.c:539,1
    - Dst: pim_upstream_could_register
      Src: /src/frr/pimd/pim_upstream.c:544,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FORCE_PIMREG
      Src: /src/frr/pimd/pim_upstream.c:552,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:559,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_upstream.c:563,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_upstream.c:564,1
    - Dst: pim_upstream_register_reevaluate
      Src: /src/frr/pimd/pim_upstream.c:573,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_upstream.c:577,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_upstream.c:582,1
    - Dst: pim_upstream_is_kat_running
      Src: /src/frr/pimd/pim_upstream.c:583,1
    - Dst: pim_is_grp_ssm
      Src: /src/frr/pimd/pim_upstream.c:586,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:590,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_upstream.c:594,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:604,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_upstream.c:607,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:628,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:634,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_upstream.c:637,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_upstream.c:648,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_upstream.c:649,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_upstream.c:655,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_upstream.c:662,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:665,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_upstream.c:670,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 516
    functionDepth: 6
    functionLinenumber: 516
    functionLinenumberEnd: 672
    functionName: forward_on
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_forward_start
    - frr_each
    - pim_macro_chisin_oiflist
    - pim_upstream_mroute_add
    - pim_if_connected_to_source
    - pim_upstream_is_kat_running
    - pim_upstream_could_register
    - pim_is_grp_ssm
    - PIM_I_am_DR
    - pim_addr_is_any
    - zlog_debug
    - PIM_UPSTREAM_FLAG_TEST_FORCE_PIMREG
    - pim_upstream_register_reevaluate
    - PIM_UPSTREAM_FLAG_TEST_USE_RPT
    - pim_channel_add_oif
    - I_am_RP
    - pim_upstream_update_use_rpt
    - pim_channel_del_oif
    - pim_forward_stop
    - forward_off
    - ALL_LIST_ELEMENTS
    - PIM_UPSTREAM_FLAG_TEST_FHR
    linkageType: ''
    returnType: void
    signature: void forward_on(struct pim_upstream *up)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim_upstream.c:681,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:682,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 687
    functionName: pim_upstream_reeval_use_rpt
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 2
    functionsReached:
    - pim_addr_is_any
    - pim_upstream_update_use_rpt
    - frr_each
    linkageType: ''
    returnType: void
    signature: void pim_upstream_reeval_use_rpt(struct pim_instance *pim)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:694,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:696,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:703,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:709,1
    - Dst: pim_upstream_state2str
      Src: /src/frr/pimd/pim_upstream.c:711,1
    - Dst: pim_upstream_state2str
      Src: /src/frr/pimd/pim_upstream.c:712,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_upstream.c:717,1
    - Dst: pim_upstream_update_assert_tracking_desired
      Src: /src/frr/pimd/pim_upstream.c:719,1
    - Dst: pim_upstream_inherited_olist_decide
      Src: /src/frr/pimd/pim_upstream.c:722,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_upstream.c:724,1
    - Dst: pim_msdp_up_join_state_changed
      Src: /src/frr/pimd/pim_upstream.c:726,1
    - Dst: pim_upstream_could_register
      Src: /src/frr/pimd/pim_upstream.c:727,1
    - Dst: PIM_UPSTREAM_FLAG_SET_FHR
      Src: /src/frr/pimd/pim_upstream.c:728,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
      Src: /src/frr/pimd/pim_upstream.c:730,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_upstream.c:732,1
    - Dst: pim_register_join
      Src: /src/frr/pimd/pim_upstream.c:734,1
    - Dst: pim_upstream_send_join
      Src: /src/frr/pimd/pim_upstream.c:737,1
    - Dst: join_timer_start
      Src: /src/frr/pimd/pim_upstream.c:738,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:742,1
    - Dst: forward_off
      Src: /src/frr/pimd/pim_upstream.c:748,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:753,1
    - Dst: pim_msdp_up_join_state_changed
      Src: /src/frr/pimd/pim_upstream.c:757,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_upstream.c:761,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:762,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_USE_RPT
      Src: /src/frr/pimd/pim_upstream.c:764,1
    - Dst: pim_upstream_is_sg_rpt
      Src: /src/frr/pimd/pim_upstream.c:778,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_upstream.c:779,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_upstream.c:782,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:786,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_upstream.c:794,1
    - Dst: join_timer_stop
      Src: /src/frr/pimd/pim_upstream.c:798,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 58
    argCount: 3
    argNames:
    - pim
    - up
    - new_state
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - enum pim_upstream_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 800
    functionName: pim_upstream_switch
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_register_join
    - join_timer_start
    - pim_upstream_could_register
    - pim_addr_is_any
    - zlog_debug
    - pim_upstream_state2str
    - pim_time_monotonic_sec
    - pim_upstream_is_sg_rpt
    - pim_upstream_keep_alive_timer_start
    - PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
    - join_timer_stop
    - pim_msdp_up_join_state_changed
    - pim_upstream_inherited_olist_decide
    - PIM_UPSTREAM_FLAG_SET_FHR
    - PIM_UPSTREAM_FLAG_TEST_USE_RPT
    - pim_jp_agg_single_upstream_send
    - pim_upstream_send_join
    - I_am_RP
    - pim_upstream_update_use_rpt
    - forward_off
    - pim_upstream_update_assert_tracking_desired
    - PIM_UPSTREAM_FLAG_TEST_FHR
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_switch(struct pim_instance *pim, struct pim_upstream
      *up,\n\t\t\t enum pim_upstream_state new_state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim_upstream.c:805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - up1
    - up2
    argTypes:
    - struct pim_upstream*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 806
    functionName: pim_upstream_compare
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_sgaddr_cmp
    linkageType: ''
    returnType: int
    signature: "int pim_upstream_compare(const struct pim_upstream *up1,\n\t\t\t const
      struct pim_upstream *up2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - up
    - incoming
    argTypes:
    - struct pim_upstream*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 808
    functionDepth: 0
    functionLinenumber: 808
    functionLinenumberEnd: 819
    functionName: pim_upstream_fill_static_iif
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_fill_static_iif(struct pim_upstream *up,\n\t\t\t\tstruct
      interface *incoming)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_upstream.c:831,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_upstream.c:835,1
    - Dst: rb_pim_upstream_add
      Src: /src/frr/pimd/pim_upstream.c:839,1
    - Dst: pim_rp_set_upstream_addr
      Src: /src/frr/pimd/pim_upstream.c:843,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:846,1
    - Dst: pim_upstream_find_parent
      Src: /src/frr/pimd/pim_upstream.c:850,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:851,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_upstream.c:852,1
    - Dst: pim_upstream_find_new_children
      Src: /src/frr/pimd/pim_upstream.c:858,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_upstream.c:867,1
    - Dst: pim_channel_oil_add
      Src: /src/frr/pimd/pim_upstream.c:868,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_upstream.c:878,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:881,1
    - Dst: wheel_add_item
      Src: /src/frr/pimd/pim_upstream.c:882,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
      Src: /src/frr/pimd/pim_upstream.c:888,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_upstream.c:889,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF
      Src: /src/frr/pimd/pim_upstream.c:890,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:892,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_STATIC_IIF
      Src: /src/frr/pimd/pim_upstream.c:898,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
      Src: /src/frr/pimd/pim_upstream.c:899,1
    - Dst: pim_upstream_fill_static_iif
      Src: /src/frr/pimd/pim_upstream.c:900,1
    - Dst: assert
      Src: /src/frr/pimd/pim_upstream.c:902,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:903,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_upstream.c:905,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
      Src: /src/frr/pimd/pim_upstream.c:907,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_upstream.c:908,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:910,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:911,1
    - Dst: pim_rpf_update
      Src: /src/frr/pimd/pim_upstream.c:913,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:916,1
    - Dst: pim_upstream_empty_inherited_olist
      Src: /src/frr/pimd/pim_upstream.c:929,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_upstream.c:930,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_upstream.c:931,1
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_upstream.c:940,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_upstream.c:941,1
    - Dst: pim_mlag_up_local_add
      Src: /src/frr/pimd/pim_upstream.c:942,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:945,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 71
    argCount: 5
    argNames:
    - pim
    - sg
    - incoming
    - flags
    - ch
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    - struct interface*
    - int
    - struct pim_ifchannel*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 901
        line_start: 901
        source_file: /src/frr/pimd/pim_upstream.c
    constantsTouched: []
    func_position:
      end: 952
      start: 821
    functionDepth: 11
    functionLinenumber: 821
    functionLinenumberEnd: 952
    functionName: pim_upstream_new
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_upstream_find_parent
    - pim_upstream_fill_static_iif
    - pim_upstream_mroute_iif_update
    - pim_rpf_update
    - pim_upstream_empty_inherited_olist
    - XCALLOC
    - pim_addr_is_any
    - PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
    - PIM_IF_FLAG_TEST_S_G_RPT
    - pim_mlag_up_local_add
    - zlog_debug
    - pim_time_monotonic_sec
    - pim_upstream_keep_alive_timer_start
    - PIM_UPSTREAM_FLAG_SET_MLAG_NON_DF
    - pim_upstream_find_new_children
    - assert
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
    - PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
    - rb_pim_upstream_add
    - wheel_add_item
    - pim_upstream_update_use_rpt
    - snprintfrr
    - pim_rp_set_upstream_addr
    - list_new
    - pim_up_mlag_is_local
    - PIM_UPSTREAM_FLAG_TEST_STATIC_IIF
    - pim_channel_oil_add
    linkageType: ''
    returnType: struct pim_upstream
    signature: "struct pim_upstream *pim_upstream_new(struct pim_instance *pim,\n\t\t\t\t\t
      \    pim_sgaddr *sg,\n\t\t\t\t\t     struct interface *incoming,\n\t\t\t\t\t
      \    int flags,\n\t\t\t\t\t     struct pim_ifchannel *ch)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_up_mlag_is_local
      Src: /src/frr/pimd/pim_upstream.c:956,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 969
    functionName: pim_up_mlag_local_cost
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 7
    functionsReached:
    - pim_up_mlag_is_local
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pim_up_mlag_local_cost(struct pim_upstream *up)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 977
    functionName: pim_up_mlag_peer_cost
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pim_up_mlag_peer_cost(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rb_pim_upstream_find
      Src: /src/frr/pimd/pim_upstream.c:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - pim
    - sg
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 987
    functionName: pim_upstream_find
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 14
    functionsReached:
    - rb_pim_upstream_find
    linkageType: ''
    returnType: struct pim_upstream
    signature: struct pim_upstream *pim_upstream_find(struct pim_instance *pim, pim_sgaddr
      *sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_upstream.c:995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - sg
    - incoming
    - flags
    - name
    argTypes:
    - pim_sgaddr*
    - struct interface*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 997
    functionName: pim_upstream_find_or_add
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_upstream_add
    linkageType: ''
    returnType: struct pim_upstream
    signature: "struct pim_upstream *pim_upstream_find_or_add(pim_sgaddr *sg,\n\t\t\t\t\t
      \     struct interface *incoming,\n\t\t\t\t\t      int flags, const char *name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
      Src: /src/frr/pimd/pim_upstream.c:1004,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
      Src: /src/frr/pimd/pim_upstream.c:1005,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_VXLAN
      Src: /src/frr/pimd/pim_upstream.c:1006,1
    - Dst: pim_mlag_up_local_add
      Src: /src/frr/pimd/pim_upstream.c:1007,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_upstream.c:1013,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_upstream.c:1014,1
    - Dst: PIM_UPSTREAM_FLAG_SET_FHR
      Src: /src/frr/pimd/pim_upstream.c:1015,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:1016,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
      Src: /src/frr/pimd/pim_upstream.c:1022,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
      Src: /src/frr/pimd/pim_upstream.c:1023,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SRC_MSDP
      Src: /src/frr/pimd/pim_upstream.c:1024,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_upstream.c:1025,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1031,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - up
    - flags
    - name
    argTypes:
    - struct pim_upstream*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1033
    functionName: pim_upstream_ref
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 2
    functionsReached:
    - PIM_UPSTREAM_FLAG_SET_FHR
    - PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
    - PIM_UPSTREAM_FLAG_SET_SRC_MSDP
    - pim_upstream_update_join_desired
    - PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
    - PIM_UPSTREAM_FLAG_SET_MLAG_VXLAN
    - pim_mlag_up_local_add
    - zlog_debug
    - pim_upstream_update_use_rpt
    - PIM_UPSTREAM_FLAG_TEST_FHR
    linkageType: ''
    returnType: void
    signature: void pim_upstream_ref(struct pim_upstream *up, int flags, const char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_upstream.c:1043,1
    - Dst: pim_upstream_ref
      Src: /src/frr/pimd/pim_upstream.c:1045,1
    - Dst: pim_upstream_new
      Src: /src/frr/pimd/pim_upstream.c:1048,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - pim
    - sg
    - incoming
    - flags
    - name
    - ch
    argTypes:
    - struct pim_instance*
    - pim_sgaddr*
    - struct interface*
    - int
    - char*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1035
    functionDepth: 12
    functionLinenumber: 1035
    functionLinenumberEnd: 1062
    functionName: pim_upstream_add
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 11
    functionsReached:
    - pim_upstream_ref
    - pim_upstream_find
    - pim_upstream_new
    - zlog_debug
    linkageType: ''
    returnType: struct pim_upstream
    signature: "struct pim_upstream *pim_upstream_add(struct pim_instance *pim, pim_sgaddr
      *sg,\n\t\t\t\t      struct interface *incoming, int flags,\n\t\t\t\t      const
      char *name,\n\t\t\t\t      struct pim_ifchannel *ch)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_upstream.c:1079,1
    - Dst: pim_macro_ch_lost_assert
      Src: /src/frr/pimd/pim_upstream.c:1086,1
    - Dst: pim_macro_chisin_joins_or_include
      Src: /src/frr/pimd/pim_upstream.c:1087,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - up
    - ch
    - starch
    argTypes:
    - struct pim_upstream*
    - struct pim_ifchannel*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1071
    functionDepth: 4
    functionLinenumber: 1071
    functionLinenumberEnd: 1092
    functionName: pim_upstream_eval_inherit_if
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_macro_ch_lost_assert
    - pim_macro_chisin_joins_or_include
    - PIM_IF_FLAG_TEST_S_G_RPT
    linkageType: ''
    returnType: int
    signature: "int pim_upstream_eval_inherit_if(struct pim_upstream *up,\n\t\t\t\t\t\t
      struct pim_ifchannel *ch,\n\t\t\t\t\t\t struct pim_ifchannel *starch)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_upstream.c:1103,1
    - Dst: pim_macro_ch_lost_assert
      Src: /src/frr/pimd/pim_upstream.c:1106,1
    - Dst: pim_macro_chisin_joins_or_include
      Src: /src/frr/pimd/pim_upstream.c:1107,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_upstream.c:1120,1
    - Dst: pim_macro_ch_lost_assert
      Src: /src/frr/pimd/pim_upstream.c:1124,1
    - Dst: pim_macro_chisin_joins_or_include
      Src: /src/frr/pimd/pim_upstream.c:1125,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - up
    - ch
    - starch
    argTypes:
    - struct pim_upstream*
    - struct pim_ifchannel*
    - struct pim_ifchannel*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1098
    functionDepth: 4
    functionLinenumber: 1098
    functionLinenumberEnd: 1130
    functionName: pim_upstream_evaluate_join_desired_interface
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 5
    functionsReached:
    - pim_macro_ch_lost_assert
    - pim_macro_chisin_joins_or_include
    - PIM_IF_FLAG_TEST_S_G_RPT
    linkageType: ''
    returnType: int
    signature: "int pim_upstream_evaluate_join_desired_interface(struct pim_upstream
      *up,\n\t\t\t\t\t\t struct pim_ifchannel *ch,\n\t\t\t\t\t\t struct pim_ifchannel
      *starch)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_upstream.c:1141,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_upstream.c:1145,1
    - Dst: pim_upstream_evaluate_join_desired_interface
      Src: /src/frr/pimd/pim_upstream.c:1152,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1135
    functionDepth: 5
    functionLinenumber: 1135
    functionLinenumberEnd: 1159
    functionName: pim_upstream_empty_immediate_olist
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - FOR_ALL_INTERFACES
    - pim_ifchannel_find
    - pim_upstream_evaluate_join_desired_interface
    linkageType: ''
    returnType: bool
    signature: "bool pim_upstream_empty_immediate_olist(struct pim_instance *pim,\n\t\t\t\t
      \      struct pim_upstream *up)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
      Src: /src/frr/pimd/pim_upstream.c:1164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1162
    functionDepth: 1
    functionLinenumber: 1162
    functionLinenumberEnd: 1165
    functionName: pim_upstream_is_msdp_peer_sa
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_SRC_MSDP
    linkageType: ''
    returnType: bool
    signature: bool pim_upstream_is_msdp_peer_sa(struct pim_upstream *up)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_empty_immediate_olist
      Src: /src/frr/pimd/pim_upstream.c:1187,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:1190,1
    - Dst: pim_upstream_empty_inherited_olist
      Src: /src/frr/pimd/pim_upstream.c:1196,1
    - Dst: pim_upstream_is_kat_running
      Src: /src/frr/pimd/pim_upstream.c:1198,1
    - Dst: pim_upstream_is_msdp_peer_sa
      Src: /src/frr/pimd/pim_upstream.c:1199,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1181
    functionDepth: 6
    functionLinenumber: 1181
    functionLinenumberEnd: 1203
    functionName: pim_upstream_evaluate_join_desired
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 2
    functionsReached:
    - pim_upstream_is_kat_running
    - pim_upstream_empty_immediate_olist
    - pim_upstream_empty_inherited_olist
    - pim_addr_is_any
    - pim_upstream_is_msdp_peer_sa
    linkageType: ''
    returnType: bool
    signature: "bool pim_upstream_evaluate_join_desired(struct pim_instance *pim,\n\t\t\t\t
      \      struct pim_upstream *up)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED
      Src: /src/frr/pimd/pim_upstream.c:1214,1
    - Dst: pim_upstream_evaluate_join_desired
      Src: /src/frr/pimd/pim_upstream.c:1216,1
    - Dst: PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED
      Src: /src/frr/pimd/pim_upstream.c:1218,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED
      Src: /src/frr/pimd/pim_upstream.c:1220,1
    - Dst: pim_upstream_switch
      Src: /src/frr/pimd/pim_upstream.c:1224,1
    - Dst: pim_upstream_switch
      Src: /src/frr/pimd/pim_upstream.c:1230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1208
    functionDepth: 7
    functionLinenumber: 1208
    functionLinenumberEnd: 1233
    functionName: pim_upstream_update_join_desired
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 14
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_DR_JOIN_DESIRED
    - PIM_UPSTREAM_FLAG_SET_DR_JOIN_DESIRED
    - pim_upstream_evaluate_join_desired
    - pim_upstream_switch
    - PIM_UPSTREAM_FLAG_UNSET_DR_JOIN_DESIRED
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_update_join_desired(struct pim_instance *pim,\n\t\t\t\t
      \     struct pim_upstream *up)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim_upstream.c:1252,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1258,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_upstream.c:1270,1
    - Dst: pim_upstream_join_timer_decrease_to_t_override
      Src: /src/frr/pimd/pim_upstream.c:1273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - pim
    - neigh_addr
    argTypes:
    - struct pim_instance*
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1244
    functionDepth: 5
    functionLinenumber: 1244
    functionLinenumberEnd: 1276
    functionName: pim_upstream_rpf_genid_changed
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_upstream_join_timer_decrease_to_t_override
    - zlog_debug
    - pim_addr_cmp
    - frr_each
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_rpf_genid_changed(struct pim_instance *pim,\n\t\t\t\t
      \   pim_addr neigh_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_upstream.c:1287,1
    - Dst: assert_action_a5
      Src: /src/frr/pimd/pim_upstream.c:1297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - up
    - old_rpf_ifp
    argTypes:
    - struct pim_upstream*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1279
    functionDepth: 3
    functionLinenumber: 1279
    functionLinenumberEnd: 1299
    functionName: pim_upstream_rpf_interface_changed
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - assert_action_a5
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_rpf_interface_changed(struct pim_upstream *up,\n\t\t\t\t\tstruct
      interface *old_rpf_ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_upstream.c:1312,1
    - Dst: pim_ifchannel_update_could_assert
      Src: /src/frr/pimd/pim_upstream.c:1313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1305
    functionDepth: 0
    functionLinenumber: 1305
    functionLinenumberEnd: 1315
    functionName: pim_upstream_update_could_assert
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_ifchannel_update_could_assert
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void pim_upstream_update_could_assert(struct pim_upstream *up)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_upstream.c:1324,1
    - Dst: pim_ifchannel_update_my_assert_metric
      Src: /src/frr/pimd/pim_upstream.c:1325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1317
    functionDepth: 0
    functionLinenumber: 1317
    functionLinenumberEnd: 1328
    functionName: pim_upstream_update_my_assert_metric
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS
    - pim_ifchannel_update_my_assert_metric
    linkageType: ''
    returnType: void
    signature: void pim_upstream_update_my_assert_metric(struct pim_upstream *up)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_upstream.c:1338,1
    - Dst: if
      Src: /src/frr/pimd/pim_upstream.c:1342,1
    - Dst: pim_ifchannel_update_assert_tracking_desired
      Src: /src/frr/pimd/pim_upstream.c:1345,1
    - Dst: pim_upstream_fhr_kat_expiry
      Src: /src/frr/pimd/pim_upstream.c:1353,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_FHR
      Src: /src/frr/pimd/pim_upstream.c:1356,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1360,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:1364,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_upstream.c:1366,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_FHR
      Src: /src/frr/pimd/pim_upstream.c:1370,1
    - Dst: pim_upstream_fhr_kat_start
      Src: /src/frr/pimd/pim_upstream.c:1376,1
    - Dst: pim_upstream_could_register
      Src: /src/frr/pimd/pim_upstream.c:1378,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1380,1
    - Dst: PIM_UPSTREAM_FLAG_SET_FHR
      Src: /src/frr/pimd/pim_upstream.c:1384,1
    - Dst: pim_register_join
      Src: /src/frr/pimd/pim_upstream.c:1386,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_upstream.c:1387,1
    - Dst: pim_upstream_keep_alive_timer_proc
      Src: /src/frr/pimd/pim_upstream.c:1397,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_DISABLE_KAT_EXPIRY
      Src: /src/frr/pimd/pim_upstream.c:1404,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_upstream.c:1408,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_upstream.c:1412,1
    - Dst: pim_msdp_sa_local_del
      Src: /src/frr/pimd/pim_upstream.c:1421,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_upstream.c:1424,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
      Src: /src/frr/pimd/pim_upstream.c:1427,1
    - Dst: pim_upstream_fhr_kat_expiry
      Src: /src/frr/pimd/pim_upstream.c:1428,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1430,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM
      Src: /src/frr/pimd/pim_upstream.c:1433,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_upstream.c:1436,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
      Src: /src/frr/pimd/pim_upstream.c:1439,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_NOCACHE
      Src: /src/frr/pimd/pim_upstream.c:1440,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_upstream.c:1442,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_LHR
      Src: /src/frr/pimd/pim_upstream.c:1450,1
    - Dst: PIM_UPSTREAM_FLAG_UNSET_SRC_LHR
      Src: /src/frr/pimd/pim_upstream.c:1453,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_upstream.c:1454,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_upstream.c:1457,1
    - Dst: pim_upstream_keep_alive_timer
      Src: /src/frr/pimd/pim_upstream.c:1464,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_upstream.c:1468,1
    - Dst: pim_upstream_sg_running_proc
      Src: /src/frr/pimd/pim_upstream.c:1471,1
    - Dst: pim_upstream_keep_alive_timer_proc
      Src: /src/frr/pimd/pim_upstream.c:1475,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_upstream.c:1478,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
      Src: /src/frr/pimd/pim_upstream.c:1480,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1482,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:1485,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_upstream.c:1486,1
    - Dst: pim_msdp_sa_local_update
      Src: /src/frr/pimd/pim_upstream.c:1491,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_upstream.c:1493,1
    - Dst: pim_upstream_msdp_reg_timer
      Src: /src/frr/pimd/pim_upstream.c:1497,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_upstream.c:1499,1
    - Dst: pim_msdp_sa_local_del
      Src: /src/frr/pimd/pim_upstream.c:1503,1
    - Dst: pim_upstream_msdp_reg_timer_start
      Src: /src/frr/pimd/pim_upstream.c:1506,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:1508,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_upstream.c:1509,1
    - Dst: pim_msdp_sa_local_update
      Src: /src/frr/pimd/pim_upstream.c:1512,1
    - Dst: pim_upstream_switch_to_spt_desired_on_rp
      Src: /src/frr/pimd/pim_upstream.c:1543,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_upstream.c:1546,1
    - Dst: pim_upstream_is_sg_rpt
      Src: /src/frr/pimd/pim_upstream.c:1552,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_upstream.c:1557,1
    - Dst: PIM_IF_FLAG_TEST_S_G_RPT
      Src: /src/frr/pimd/pim_upstream.c:1558,1
    - Dst: pim_upstream_set_sptbit
      Src: /src/frr/pimd/pim_upstream.c:1580,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1588,1
    - Dst: pim_upstream_evaluate_join_desired
      Src: /src/frr/pimd/pim_upstream.c:1596,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1598,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_upstream.c:1604,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1607,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1620,1
    - Dst: pim_jp_agg_single_upstream_send
      Src: /src/frr/pimd/pim_upstream.c:1625,1
    - Dst: pim_upstream_is_sg_rpt
      Src: /src/frr/pimd/pim_upstream.c:1630,1
    - Dst: pim_upstream_empty_inherited_olist
      Src: /src/frr/pimd/pim_upstream.c:1631,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1633,1
    - Dst: pim_rpf_is_same
      Src: /src/frr/pimd/pim_upstream.c:1641,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1643,1
    - Dst: pim_upstream_state2str
      Src: /src/frr/pimd/pim_upstream.c:1652,1
    - Dst: pim_reg_state2str
      Src: /src/frr/pimd/pim_upstream.c:1663,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_upstream.c:1671,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_upstream.c:1674,1
    - Dst: strlcpy
      Src: /src/frr/pimd/pim_upstream.c:1677,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1330
    functionDepth: 9
    functionLinenumber: 1330
    functionLinenumberEnd: 1679
    functionName: pim_upstream_update_assert_tracking_desired
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_SRC_LHR
    - pim_upstream_set_sptbit
    - pim_upstream_update_join_desired
    - PIM_UPSTREAM_FLAG_UNSET_SRC_LHR
    - pim_upstream_msdp_reg_timer_start
    - pim_register_join
    - pim_msdp_sa_local_del
    - pim_upstream_switch_to_spt_desired_on_rp
    - pim_ifchannel_update_assert_tracking_desired
    - pim_upstream_keep_alive_timer_proc
    - pim_if_connected_to_source
    - pim_upstream_could_register
    - pim_upstream_empty_inherited_olist
    - pim_upstream_fhr_kat_expiry
    - pim_upstream_sg_running_proc
    - pim_upstream_keep_alive_timer
    - ALL_LIST_ELEMENTS_RO
    - PIM_UPSTREAM_FLAG_TEST_DISABLE_KAT_EXPIRY
    - PIM_UPSTREAM_FLAG_UNSET_SRC_NOCACHE
    - PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE
    - PIM_IF_FLAG_TEST_S_G_RPT
    - zlog_debug
    - pim_upstream_state2str
    - pim_upstream_is_sg_rpt
    - EVENT_ARG
    - pim_upstream_keep_alive_timer_start
    - if
    - PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
    - PIM_UPSTREAM_FLAG_SET_FHR
    - pim_upstream_fhr_kat_start
    - pim_reg_state2str
    - pim_upstream_del
    - pim_jp_agg_single_upstream_send
    - strlcpy
    - pim_upstream_evaluate_join_desired
    - I_am_RP
    - pim_rpf_is_same
    - EVENT_OFF
    - pim_msdp_sa_local_update
    - event_add_timer
    - pim_upstream_update_use_rpt
    - PIM_UPSTREAM_FLAG_UNSET_FHR
    - PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM
    - pim_channel_del_oif
    - pim_upstream_msdp_reg_timer
    - ALL_LIST_ELEMENTS
    - PIM_UPSTREAM_FLAG_TEST_FHR
    linkageType: ''
    returnType: void
    signature: void pim_upstream_update_assert_tracking_desired(struct pim_upstream
      *up)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_upstream.c:1688,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1693,1
    - Dst: pim_reg_state2str
      Src: /src/frr/pimd/pim_upstream.c:1695,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_upstream.c:1702,1
    - Dst: pim_vxlan_update_sg_reg_state
      Src: /src/frr/pimd/pim_upstream.c:1705,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1713,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1722,1
    - Dst: pim_upstream_start_register_stop_timer
      Src: /src/frr/pimd/pim_upstream.c:1729,1
    - Dst: I_am_RP
      Src: /src/frr/pimd/pim_upstream.c:1733,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1735,1
    - Dst: pim_null_register_send
      Src: /src/frr/pimd/pim_upstream.c:1740,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1683
    functionDepth: 3
    functionLinenumber: 1683
    functionLinenumberEnd: 1745
    functionName: pim_upstream_register_stop_timer
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_reg_state2str
    - pim_channel_add_oif
    - I_am_RP
    - pim_upstream_start_register_stop_timer
    - zlog_debug
    - EVENT_ARG
    - pim_null_register_send
    - pim_vxlan_update_sg_reg_state
    linkageType: ''
    returnType: void
    signature: void pim_upstream_register_stop_timer(struct event *t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_upstream.c:1752,1
    - Dst: frr_weak_random
      Src: /src/frr/pimd/pim_upstream.c:1757,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1767,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_upstream.c:1771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - up
    - null_register
    argTypes:
    - struct pim_upstream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1747
    functionDepth: 1
    functionLinenumber: 1747
    functionLinenumberEnd: 1773
    functionName: pim_upstream_start_register_stop_timer
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    - zlog_debug
    - EVENT_OFF
    - frr_weak_random
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_start_register_stop_timer(struct pim_upstream *up,\n\t\t\t\t\t
      \   int null_register)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1785,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_upstream.c:1788,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_upstream.c:1793,1
    - Dst: pim_ifchannel_find
      Src: /src/frr/pimd/pim_upstream.c:1796,1
    - Dst: PIM_I_am_DualActive
      Src: /src/frr/pimd/pim_upstream.c:1804,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
      Src: /src/frr/pimd/pim_upstream.c:1805,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_upstream.c:1806,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
      Src: /src/frr/pimd/pim_upstream.c:1807,1
    - Dst: pim_upstream_evaluate_join_desired_interface
      Src: /src/frr/pimd/pim_upstream.c:1809,1
    - Dst: PIM_IF_FLAG_TEST_PROTO_IGMP
      Src: /src/frr/pimd/pim_upstream.c:1816,1
    - Dst: PIM_IF_FLAG_TEST_PROTO_PIM
      Src: /src/frr/pimd/pim_upstream.c:1818,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_upstream.c:1824,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 31
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1775
    functionDepth: 5
    functionLinenumber: 1775
    functionLinenumberEnd: 1831
    functionName: pim_upstream_inherited_olist_decide
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 2
    functionsReached:
    - pim_ifchannel_find
    - PIM_UPSTREAM_FLAG_TEST_MLAG_PEER
    - PIM_IF_FLAG_TEST_PROTO_IGMP
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - pim_channel_add_oif
    - FOR_ALL_INTERFACES
    - zlog_debug
    - PIM_UPSTREAM_FLAG_TEST_MLAG_INTERFACE
    - PIM_I_am_DualActive
    - pim_upstream_evaluate_join_desired_interface
    - PIM_IF_FLAG_TEST_PROTO_PIM
    linkageType: ''
    returnType: int
    signature: "int pim_upstream_inherited_olist_decide(struct pim_instance *pim,\n\t\t\t\t\tstruct
      pim_upstream *up)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_inherited_olist_decide
      Src: /src/frr/pimd/pim_upstream.c:1852,1
    - Dst: pim_upstream_update_join_desired
      Src: /src/frr/pimd/pim_upstream.c:1860,1
    - Dst: forward_on
      Src: /src/frr/pimd/pim_upstream.c:1863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pim
    - up
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1849
    functionDepth: 8
    functionLinenumber: 1849
    functionLinenumberEnd: 1866
    functionName: pim_upstream_inherited_olist
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 4
    functionsReached:
    - pim_upstream_inherited_olist_decide
    - pim_upstream_update_join_desired
    - forward_on
    linkageType: ''
    returnType: int
    signature: "int pim_upstream_inherited_olist(struct pim_instance *pim,\n\t\t\t\t
      struct pim_upstream *up)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_oil_empty
      Src: /src/frr/pimd/pim_upstream.c:1870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1871
      start: 1868
    functionDepth: 2
    functionLinenumber: 1868
    functionLinenumberEnd: 1871
    functionName: pim_upstream_empty_inherited_olist
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 5
    functionsReached:
    - pim_channel_oil_empty
    linkageType: ''
    returnType: int
    signature: int pim_upstream_empty_inherited_olist(struct pim_upstream *up)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim_upstream.c:1888,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:1889,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1891,1
    - Dst: pim_rpf_addr_is_inaddr_any
      Src: /src/frr/pimd/pim_upstream.c:1897,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:1899,1
    - Dst: pim_rpf_update
      Src: /src/frr/pimd/pim_upstream.c:1904,1
    - Dst: pim_zebra_upstream_rpf_changed
      Src: /src/frr/pimd/pim_upstream.c:1908,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_upstream.c:1910,1
    - Dst: pim_zebra_update_all_interfaces
      Src: /src/frr/pimd/pim_upstream.c:1914,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1879
    functionDepth: 11
    functionLinenumber: 1879
    functionLinenumberEnd: 1915
    functionName: pim_upstream_find_new_rpf
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - frr_each
    - pim_addr_is_any
    - pim_zebra_update_all_interfaces
    - zlog_debug
    - pim_upstream_mroute_iif_update
    - pim_zebra_upstream_rpf_changed
    - pim_rpf_addr_is_inaddr_any
    - pim_rpf_update
    linkageType: ''
    returnType: void
    signature: void pim_upstream_find_new_rpf(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_sgaddr_hash
      Src: /src/frr/pimd/pim_upstream.c:1921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1917
    functionDepth: 3
    functionLinenumber: 1917
    functionLinenumberEnd: 1922
    functionName: pim_upstream_hash_key
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_sgaddr_hash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int pim_upstream_hash_key(const void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rb_pim_upstream_first
      Src: /src/frr/pimd/pim_upstream.c:1928,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_upstream.c:1929,1
    - Dst: pim_upstream_timers_stop
      Src: /src/frr/pimd/pim_upstream.c:1930,1
    - Dst: rb_pim_upstream_fini
      Src: /src/frr/pimd/pim_upstream.c:1933,1
    - Dst: wheel_delete
      Src: /src/frr/pimd/pim_upstream.c:1936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1924
    functionDepth: 9
    functionLinenumber: 1924
    functionLinenumberEnd: 1938
    functionName: pim_upstream_terminate
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - wheel_delete
    - rb_pim_upstream_first
    - pim_upstream_del
    - pim_upstream_timers_stop
    - rb_pim_upstream_fini
    linkageType: ''
    returnType: void
    signature: void pim_upstream_terminate(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim_upstream.c:1945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1940
    functionDepth: 1
    functionLinenumber: 1940
    functionLinenumberEnd: 1946
    functionName: pim_upstream_equal
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_sgaddr_cmp
    linkageType: ''
    returnType: bool
    signature: bool pim_upstream_equal(const void *arg1, const void *arg2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: oil_parent
      Src: /src/frr/pimd/pim_upstream.c:1977,1
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_upstream.c:1980,1
    - Dst: pim_upstream_empty_inherited_olist
      Src: /src/frr/pimd/pim_upstream.c:1986,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1962
    functionDepth: 3
    functionLinenumber: 1962
    functionLinenumberEnd: 1991
    functionName: pim_upstream_kat_start_ok
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_upstream_empty_inherited_olist
    - oil_parent
    - pim_if_connected_to_source
    linkageType: ''
    returnType: bool
    signature: bool pim_upstream_kat_start_ok(struct pim_upstream *up)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pim_mroute_update_counters
      Src: /src/frr/pimd/pim_upstream.c:2001,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:2007,1
    - Dst: pim_upstream_kat_start_ok
      Src: /src/frr/pimd/pim_upstream.c:2017,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
      Src: /src/frr/pimd/pim_upstream.c:2020,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:2022,1
    - Dst: pim_upstream_ref
      Src: /src/frr/pimd/pim_upstream.c:2026,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SRC_STREAM
      Src: /src/frr/pimd/pim_upstream.c:2028,1
    - Dst: pim_upstream_fhr_kat_start
      Src: /src/frr/pimd/pim_upstream.c:2029,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_upstream.c:2031,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_LHR
      Src: /src/frr/pimd/pim_upstream.c:2033,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_upstream.c:2034,1
    - Dst: pim_upstream_set_sptbit
      Src: /src/frr/pimd/pim_upstream.c:2040,1
    - Dst: pim_upstream_update_could_assert
      Src: /src/frr/pimd/pim_upstream.c:2041,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 1
    argNames:
    - up
    argTypes:
    - struct pim_upstream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2045
      start: 1993
    functionDepth: 4
    functionLinenumber: 1993
    functionLinenumberEnd: 2045
    functionName: pim_upstream_sg_running_proc
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - PIM_UPSTREAM_FLAG_TEST_SRC_LHR
    - pim_upstream_ref
    - pim_upstream_set_sptbit
    - pim_upstream_fhr_kat_start
    - pim_upstream_kat_start_ok
    - pim_mroute_update_counters
    - PIM_UPSTREAM_FLAG_SET_SRC_STREAM
    - zlog_debug
    - pim_upstream_keep_alive_timer_start
    - PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
    - pim_upstream_update_could_assert
    linkageType: ''
    returnType: bool
    signature: bool pim_upstream_sg_running_proc(struct pim_upstream *up)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:2059,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_upstream.c:2074,1
    - Dst: pim_upstream_inherited_olist_decide
      Src: /src/frr/pimd/pim_upstream.c:2077,1
    - Dst: pim_upstream_sg_running_proc
      Src: /src/frr/pimd/pim_upstream.c:2081,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2051
    functionDepth: 6
    functionLinenumber: 2051
    functionLinenumberEnd: 2082
    functionName: pim_upstream_sg_running
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 0
    functionsReached:
    - pim_upstream_inherited_olist_decide
    - zlog_debug
    - pim_upstream_sg_running_proc
    linkageType: ''
    returnType: void
    signature: void pim_upstream_sg_running(void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_each
      Src: /src/frr/pimd/pim_upstream.c:2088,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:2089,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
      Src: /src/frr/pimd/pim_upstream.c:2092,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_upstream.c:2095,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2098
      start: 2084
    functionDepth: 3
    functionLinenumber: 2084
    functionLinenumberEnd: 2098
    functionName: pim_upstream_add_lhr_star_pimreg
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_addr_is_any
    - PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
    - pim_channel_add_oif
    - frr_each
    linkageType: ''
    returnType: void
    signature: void pim_upstream_add_lhr_star_pimreg(struct pim_instance *pim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_name
      Src: /src/frr/pimd/pim_upstream.c:2103,1
    - Dst: strcmp
      Src: /src/frr/pimd/pim_upstream.c:2105,1
    - Dst: pim_upstream_remove_lhr_star_pimreg
      Src: /src/frr/pimd/pim_upstream.c:2106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - pim
    - pl
    argTypes:
    - struct pim_instance*
    - struct prefix_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2108
      start: 2100
    functionDepth: 1
    functionLinenumber: 2100
    functionLinenumberEnd: 2108
    functionName: pim_upstream_spt_prefix_list_update
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 1
    functionsReached:
    - pim_upstream_remove_lhr_star_pimreg
    - prefix_list_name
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_spt_prefix_list_update(struct pim_instance *pim,\n\t\t\t\t\t
      struct prefix_list *pl)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: prefix_list_lookup
      Src: /src/frr/pimd/pim_upstream.c:2130,1
    - Dst: frr_each
      Src: /src/frr/pimd/pim_upstream.c:2132,1
    - Dst: pim_addr_is_any
      Src: /src/frr/pimd/pim_upstream.c:2133,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
      Src: /src/frr/pimd/pim_upstream.c:2136,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_upstream.c:2140,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_upstream.c:2144,1
    - Dst: prefix_list_apply_ext
      Src: /src/frr/pimd/pim_upstream.c:2145,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_upstream.c:2147,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_upstream.c:2150,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - pim
    - nlist
    argTypes:
    - struct pim_instance*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 2122
    functionDepth: 3
    functionLinenumber: 2122
    functionLinenumberEnd: 2153
    functionName: pim_upstream_remove_lhr_star_pimreg
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 2
    functionsReached:
    - pim_channel_del_oif
    - prefix_list_lookup
    - frr_each
    - pim_addr_is_any
    - PIM_UPSTREAM_FLAG_TEST_CAN_BE_LHR
    - pim_addr_to_prefix
    - pim_channel_add_oif
    - prefix_list_apply_ext
    linkageType: ''
    returnType: void
    signature: "void pim_upstream_remove_lhr_star_pimreg(struct pim_instance *pim,\n\t\t\t\t\t
      const char *nlist)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_upstream.c:2159,1
    - Dst: wheel_init
      Src: /src/frr/pimd/pim_upstream.c:2161,1
    - Dst: rb_pim_upstream_init
      Src: /src/frr/pimd/pim_upstream.c:2164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2165
      start: 2155
    functionDepth: 0
    functionLinenumber: 2155
    functionLinenumberEnd: 2165
    functionName: pim_upstream_init
    functionSourceFile: /src/frr/pimd/pim_upstream.c
    functionUses: 2
    functionsReached:
    - rb_pim_upstream_init
    - wheel_init
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pim_upstream_init(struct pim_instance *pim)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 57
    functionName: igmp_msg_encode16to8
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t igmp_msg_encode16to8(uint16_t value)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - code
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 83
    functionName: igmp_msg_decode8to16
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t igmp_msg_decode8to16(uint8_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_util.c:87,1
    - Dst: zlog_hexdump
      Src: /src/frr/pimd/pim_util.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - label
    - buf
    - size
    argTypes:
    - char*
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: pim_pkt_dump
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 2
    functionsReached:
    - zlog_hexdump
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_pkt_dump(const char *label, const uint8_t *buf, int size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix
      Src: /src/frr/pimd/pim_util.c:98,1
    - Dst: prefix_match
      Src: /src/frr/pimd/pim_util.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - group_addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 108
    functionName: pim_is_group_224_0_0_0_24
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 3
    functionsReached:
    - str2prefix
    - prefix_match
    linkageType: ''
    returnType: int
    signature: int pim_is_group_224_0_0_0_24(struct in_addr group_addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix
      Src: /src/frr/pimd/pim_util.c:117,1
    - Dst: prefix_match
      Src: /src/frr/pimd/pim_util.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - group_addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 127
    functionName: pim_is_group_224_4
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 4
    functionsReached:
    - str2prefix
    - prefix_match
    linkageType: ''
    returnType: int
    signature: int pim_is_group_224_4(struct in_addr group_addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_util.c:137,1
    - Dst: prefix_list_lookup
      Src: /src/frr/pimd/pim_util.c:139,1
    - Dst: prefix_list_apply_ext
      Src: /src/frr/pimd/pim_util.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - pim_ifp
    - grp
    argTypes:
    - struct pim_interface*
    - pim_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 143
    functionName: pim_is_group_filtered
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 3
    functionsReached:
    - prefix_list_apply_ext
    - pim_addr_to_prefix
    - prefix_list_lookup
    linkageType: ''
    returnType: bool
    signature: bool pim_is_group_filtered(struct pim_interface *pim_ifp, pim_addr
      *grp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: str2prefix
      Src: /src/frr/pimd/pim_util.c:150,1
    - Dst: str2prefix
      Src: /src/frr/pimd/pim_util.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 157
    functionName: pim_get_all_mcast_group
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 9
    functionsReached:
    - str2prefix
    linkageType: ''
    returnType: int
    signature: int pim_get_all_mcast_group(struct prefix *prefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IN_MULTICAST
      Src: /src/frr/pimd/pim_util.c:162,1
    - Dst: ntohl
      Src: /src/frr/pimd/pim_util.c:162,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/frr/pimd/pim_util.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - addr
    argTypes:
    - pim_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 169
    functionName: pim_addr_is_multicast
    functionSourceFile: /src/frr/pimd/pim_util.c
    functionUses: 1
    functionsReached:
    - IN_MULTICAST
    - IN6_IS_ADDR_MULTICAST
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool pim_addr_is_multicast(pim_addr addr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:61,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:71,1
    - Dst: pim_null_register_send
      Src: /src/frr/pimd/pim_vxlan.c:80,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:88,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:96,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 99
    functionName: pim_vxlan_do_reg_work
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_null_register_send
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_do_reg_work(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/pimd/pim_vxlan.c:111,1
    - Dst: pim_vxlan_work_timer_setup
      Src: /src/frr/pimd/pim_vxlan.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 113
    functionName: pim_vxlan_init_work
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_work_timer_setup
    - list_new
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_init_work(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:119,1
    - Dst: pim_vxlan_init_work
      Src: /src/frr/pimd/pim_vxlan.c:124,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:131,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_vxlan.c:133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 135
    functionName: pim_vxlan_add_work
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_vxlan_init_work
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_add_work(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:143,1
    - Dst: list_delete_node
      Src: /src/frr/pimd/pim_vxlan.c:149,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: pim_vxlan_del_work
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - list_delete_node
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_del_work(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_sg_find
      Src: /src/frr/pimd/pim_vxlan.c:158,1
    - Dst: pim_vxlan_add_work
      Src: /src/frr/pimd/pim_vxlan.c:167,1
    - Dst: pim_vxlan_del_work
      Src: /src/frr/pimd/pim_vxlan.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - pim
    - up
    - reg_join
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 170
    functionName: pim_vxlan_update_sg_reg_state
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 3
    functionsReached:
    - pim_vxlan_del_work
    - pim_vxlan_sg_find
    - pim_vxlan_add_work
    linkageType: ''
    returnType: void
    signature: "void pim_vxlan_update_sg_reg_state(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up, bool reg_join)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_do_reg_work
      Src: /src/frr/pimd/pim_vxlan.c:174,1
    - Dst: pim_vxlan_work_timer_setup
      Src: /src/frr/pimd/pim_vxlan.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: pim_vxlan_work_timer_cb
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_work_timer_setup
    - pim_vxlan_do_reg_work
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_work_timer_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_vxlan.c:181,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_vxlan.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - start
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 185
    functionName: pim_vxlan_work_timer_setup
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 2
    functionsReached:
    - event_add_timer
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_work_timer_setup(bool start)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:208,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
      Src: /src/frr/pimd/pim_vxlan.c:227,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_vxlan.c:228,1
    - Dst: pim_upstream_keep_alive_timer_proc
      Src: /src/frr/pimd/pim_vxlan.c:229,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_vxlan.c:235,1
    - Dst: pim_rpf_update
      Src: /src/frr/pimd/pim_vxlan.c:243,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:246,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 200
    functionDepth: 11
    functionLinenumber: 200
    functionLinenumberEnd: 252
    functionName: pim_vxlan_orig_mr_up_del
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_upstream_del
    - zlog_debug
    - EVENT_OFF
    - PIM_UPSTREAM_FLAG_TEST_SRC_STREAM
    - pim_upstream_keep_alive_timer_proc
    - pim_rpf_update
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_up_del(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_upstream_fill_static_iif
      Src: /src/frr/pimd/pim_vxlan.c:257,1
    - Dst: pim_upstream_mroute_iif_update
      Src: /src/frr/pimd/pim_vxlan.c:258,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 265
    functionName: pim_vxlan_orig_mr_up_iif_update
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_upstream_fill_static_iif
    - pim_upstream_mroute_iif_update
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_up_iif_update(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:299,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_ORIG
      Src: /src/frr/pimd/pim_vxlan.c:303,1
    - Dst: PIM_UPSTREAM_FLAG_SET_STATIC_IIF
      Src: /src/frr/pimd/pim_vxlan.c:305,1
    - Dst: PIM_UPSTREAM_FLAG_SET_FHR
      Src: /src/frr/pimd/pim_vxlan.c:311,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SRC_STREAM
      Src: /src/frr/pimd/pim_vxlan.c:312,1
    - Dst: PIM_UPSTREAM_FLAG_SET_FORCE_PIMREG
      Src: /src/frr/pimd/pim_vxlan.c:316,1
    - Dst: PIM_UPSTREAM_FLAG_SET_DISABLE_KAT_EXPIRY
      Src: /src/frr/pimd/pim_vxlan.c:320,1
    - Dst: PIM_UPSTREAM_FLAG_SET_NO_PIMREG_DATA
      Src: /src/frr/pimd/pim_vxlan.c:325,1
    - Dst: PIM_UPSTREAM_FLAG_SET_ALLOW_IIF_IN_OIL
      Src: /src/frr/pimd/pim_vxlan.c:330,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_vxlan.c:333,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_STATIC_IIF
      Src: /src/frr/pimd/pim_vxlan.c:339,1
    - Dst: pim_delete_tracked_nexthop
      Src: /src/frr/pimd/pim_vxlan.c:340,1
    - Dst: pim_upstream_update_use_rpt
      Src: /src/frr/pimd/pim_vxlan.c:344,1
    - Dst: pim_upstream_ref
      Src: /src/frr/pimd/pim_vxlan.c:345,1
    - Dst: pim_vxlan_get_term_ifp
      Src: /src/frr/pimd/pim_vxlan.c:347,1
    - Dst: pim_channel_update_oif_mute
      Src: /src/frr/pimd/pim_vxlan.c:350,1
    - Dst: pim_vxlan_orig_mr_up_iif_update
      Src: /src/frr/pimd/pim_vxlan.c:352,1
    - Dst: pim_channel_update_oif_mute
      Src: /src/frr/pimd/pim_vxlan.c:355,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_vxlan.c:358,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:365,1
    - Dst: pim_upstream_keep_alive_timer_start
      Src: /src/frr/pimd/pim_vxlan.c:370,1
    - Dst: pim_register_join
      Src: /src/frr/pimd/pim_vxlan.c:376,1
    - Dst: pim_null_register_send
      Src: /src/frr/pimd/pim_vxlan.c:377,1
    - Dst: pim_null_register_send
      Src: /src/frr/pimd/pim_vxlan.c:385,1
    - Dst: pim_vxlan_update_sg_reg_state
      Src: /src/frr/pimd/pim_vxlan.c:386,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_vxlan.c:395,1
    - Dst: pim_upstream_mroute_add
      Src: /src/frr/pimd/pim_vxlan.c:397,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 286
    functionDepth: 13
    functionLinenumber: 286
    functionLinenumberEnd: 398
    functionName: pim_vxlan_orig_mr_up_add
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_orig_mr_up_iif_update
    - pim_upstream_add
    - pim_upstream_find
    - pim_register_join
    - PIM_UPSTREAM_FLAG_SET_DISABLE_KAT_EXPIRY
    - PIM_UPSTREAM_FLAG_SET_ALLOW_IIF_IN_OIL
    - PIM_UPSTREAM_FLAG_SET_NO_PIMREG_DATA
    - pim_upstream_mroute_add
    - pim_upstream_ref
    - pim_vxlan_get_term_ifp
    - pim_upstream_inherited_olist
    - PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_ORIG
    - zlog_debug
    - pim_upstream_keep_alive_timer_start
    - PIM_UPSTREAM_FLAG_SET_FHR
    - pim_delete_tracked_nexthop
    - PIM_UPSTREAM_FLAG_SET_SRC_STREAM
    - PIM_UPSTREAM_FLAG_SET_STATIC_IIF
    - pim_upstream_update_use_rpt
    - pim_vxlan_update_sg_reg_state
    - pim_channel_update_oif_mute
    - PIM_UPSTREAM_FLAG_SET_FORCE_PIMREG
    - pim_null_register_send
    - PIM_UPSTREAM_FLAG_TEST_STATIC_IIF
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_up_add(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:406,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_vxlan.c:410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 400
    functionDepth: 3
    functionLinenumber: 400
    functionLinenumberEnd: 413
    functionName: pim_vxlan_orig_mr_oif_add
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_channel_add_oif
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_oif_add(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:426,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_vxlan.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 432
    functionName: pim_vxlan_orig_mr_oif_del
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_channel_del_oif
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_oif_del(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 439
    functionName: pim_vxlan_orig_mr_oif_get
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *pim_vxlan_orig_mr_oif_get(\n\t\tstruct pim_instance
      *pim)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 451
    functionName: pim_vxlan_orig_mr_iif_get
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct interface
    signature: "struct interface *pim_vxlan_orig_mr_iif_get(\n\t\tstruct pim_instance
      *pim)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_orig_mr_iif_get
      Src: /src/frr/pimd/pim_vxlan.c:457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 466
    functionName: pim_vxlan_orig_mr_add_is_ok
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_orig_mr_iif_get
    linkageType: ''
    returnType: bool
    signature: bool pim_vxlan_orig_mr_add_is_ok(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_orig_mr_up_add
      Src: /src/frr/pimd/pim_vxlan.c:470,1
    - Dst: pim_vxlan_orig_mr_oif_get
      Src: /src/frr/pimd/pim_vxlan.c:472,1
    - Dst: pim_vxlan_orig_mr_oif_add
      Src: /src/frr/pimd/pim_vxlan.c:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 468
    functionDepth: 14
    functionLinenumber: 468
    functionLinenumberEnd: 474
    functionName: pim_vxlan_orig_mr_install
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_orig_mr_oif_add
    - pim_vxlan_orig_mr_up_add
    - pim_vxlan_orig_mr_oif_get
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_install(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_orig_mr_add_is_ok
      Src: /src/frr/pimd/pim_vxlan.c:478,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:482,1
    - Dst: pim_vxlan_orig_mr_install
      Src: /src/frr/pimd/pim_vxlan.c:484,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 476
    functionDepth: 15
    functionLinenumber: 476
    functionLinenumberEnd: 485
    functionName: pim_vxlan_orig_mr_add
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_orig_mr_install
    - zlog_debug
    - pim_vxlan_orig_mr_add_is_ok
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_add(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:490,1
    - Dst: pim_vxlan_orig_mr_oif_del
      Src: /src/frr/pimd/pim_vxlan.c:492,1
    - Dst: pim_vxlan_orig_mr_up_del
      Src: /src/frr/pimd/pim_vxlan.c:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 487
    functionDepth: 12
    functionLinenumber: 487
    functionLinenumberEnd: 494
    functionName: pim_vxlan_orig_mr_del
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_orig_mr_oif_del
    - zlog_debug
    - pim_vxlan_orig_mr_up_del
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_del(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_vxlan.c:502,1
    - Dst: pim_vxlan_orig_mr_iif_get
      Src: /src/frr/pimd/pim_vxlan.c:505,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:507,1
    - Dst: pim_vxlan_orig_mr_add_is_ok
      Src: /src/frr/pimd/pim_vxlan.c:512,1
    - Dst: pim_vxlan_orig_mr_up_iif_update
      Src: /src/frr/pimd/pim_vxlan.c:515,1
    - Dst: pim_vxlan_orig_mr_install
      Src: /src/frr/pimd/pim_vxlan.c:518,1
    - Dst: pim_vxlan_orig_mr_del
      Src: /src/frr/pimd/pim_vxlan.c:521,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 496
    functionDepth: 15
    functionLinenumber: 496
    functionLinenumberEnd: 523
    functionName: pim_vxlan_orig_mr_iif_update
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_is_orig_mroute
    - pim_vxlan_orig_mr_up_iif_update
    - pim_vxlan_orig_mr_add_is_ok
    - pim_vxlan_orig_mr_install
    - pim_vxlan_orig_mr_del
    - zlog_debug
    - pim_vxlan_orig_mr_iif_get
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_orig_mr_iif_update(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 540
    functionName: pim_vxlan_get_term_ifp
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct pim_interface
    signature: struct pim_interface *pim_vxlan_get_term_ifp(struct pim_instance *pim)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:548,1
    - Dst: pim_ifchannel_local_membership_add
      Src: /src/frr/pimd/pim_vxlan.c:551,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_vxlan.c:560,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_vxlan.c:562,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 542
    functionDepth: 9
    functionLinenumber: 542
    functionLinenumberEnd: 565
    functionName: pim_vxlan_term_mr_oif_add
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_ifchannel_local_membership_add
    - pim_upstream_inherited_olist
    - zlog_warn
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_term_mr_oif_add(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:573,1
    - Dst: pim_ifchannel_local_membership_del
      Src: /src/frr/pimd/pim_vxlan.c:577,1
    - Dst: pim_upstream_inherited_olist
      Src: /src/frr/pimd/pim_vxlan.c:583,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - vxlan_sg
    argTypes:
    - struct pim_vxlan_sg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 567
    functionDepth: 9
    functionLinenumber: 567
    functionLinenumberEnd: 584
    functionName: pim_vxlan_term_mr_oif_del
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - pim_upstream_inherited_olist
    - pim_ifchannel_local_membership_del
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_term_mr_oif_del(struct pim_vxlan_sg *vxlan_sg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
      Src: /src/frr/pimd/pim_vxlan.c:592,1
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
      Src: /src/frr/pimd/pim_vxlan.c:593,1
    - Dst: pim_mlag_up_df_role_update
      Src: /src/frr/pimd/pim_vxlan.c:596,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - pim
    - up
    - inherit
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 597
    functionName: pim_vxlan_update_sg_entry_mlag
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_mlag_up_df_role_update
    - PIM_UPSTREAM_FLAG_TEST_MLAG_NON_DF
    - PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
    linkageType: ''
    returnType: void
    signature: "void pim_vxlan_update_sg_entry_mlag(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up, bool inherit)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_vxlan.c:610,1
    - Dst: pim_vxlan_update_sg_entry_mlag
      Src: /src/frr/pimd/pim_vxlan.c:612,1
    - Dst: if
      Src: /src/frr/pimd/pim_vxlan.c:622,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:628,1
    - Dst: PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_TERM
      Src: /src/frr/pimd/pim_vxlan.c:631,1
    - Dst: PIM_UPSTREAM_FLAG_SET_MLAG_VXLAN
      Src: /src/frr/pimd/pim_vxlan.c:633,1
    - Dst: pim_upstream_add
      Src: /src/frr/pimd/pim_vxlan.c:635,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_vxlan.c:640,1
    - Dst: pim_vxlan_inherit_mlag_flags
      Src: /src/frr/pimd/pim_vxlan.c:646,1
    - Dst: pim_vxlan_term_mr_up_del
      Src: /src/frr/pimd/pim_vxlan.c:649,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:657,1
    - Dst: pim_vxlan_inherit_mlag_flags
      Src: /src/frr/pimd/pim_vxlan.c:662,1
    - Dst: pim_mlag_up_local_del
      Src: /src/frr/pimd/pim_vxlan.c:667,1
    - Dst: pim_upstream_del
      Src: /src/frr/pimd/pim_vxlan.c:668,1
    - Dst: pim_vxlan_term_mr_add
      Src: /src/frr/pimd/pim_vxlan.c:672,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:675,1
    - Dst: pim_vxlan_term_mr_up_add
      Src: /src/frr/pimd/pim_vxlan.c:682,1
    - Dst: pim_vxlan_term_mr_oif_add
      Src: /src/frr/pimd/pim_vxlan.c:684,1
    - Dst: pim_vxlan_term_mr_del
      Src: /src/frr/pimd/pim_vxlan.c:687,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:690,1
    - Dst: pim_vxlan_term_mr_oif_del
      Src: /src/frr/pimd/pim_vxlan.c:693,1
    - Dst: pim_vxlan_term_mr_up_del
      Src: /src/frr/pimd/pim_vxlan.c:695,1
    - Dst: pim_vxlan_sg_hash_key_make
      Src: /src/frr/pimd/pim_vxlan.c:699,1
    - Dst: pim_sgaddr_hash
      Src: /src/frr/pimd/pim_vxlan.c:703,1
    - Dst: pim_vxlan_sg_hash_eq
      Src: /src/frr/pimd/pim_vxlan.c:706,1
    - Dst: pim_sgaddr_cmp
      Src: /src/frr/pimd/pim_vxlan.c:711,1
    - Dst: pim_vxlan_sg_new
      Src: /src/frr/pimd/pim_vxlan.c:714,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_vxlan.c:719,1
    - Dst: snprintfrr
      Src: /src/frr/pimd/pim_vxlan.c:723,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:726,1
    - Dst: hash_get
      Src: /src/frr/pimd/pim_vxlan.c:728,1
    - Dst: pim_mlag_register
      Src: /src/frr/pimd/pim_vxlan.c:735,1
    - Dst: pim_vxlan_sg_find
      Src: /src/frr/pimd/pim_vxlan.c:741,1
    - Dst: hash_lookup
      Src: /src/frr/pimd/pim_vxlan.c:746,1
    - Dst: pim_vxlan_sg_add
      Src: /src/frr/pimd/pim_vxlan.c:749,1
    - Dst: pim_vxlan_sg_find
      Src: /src/frr/pimd/pim_vxlan.c:753,1
    - Dst: pim_vxlan_sg_new
      Src: /src/frr/pimd/pim_vxlan.c:757,1
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_vxlan.c:759,1
    - Dst: pim_vxlan_orig_mr_add
      Src: /src/frr/pimd/pim_vxlan.c:760,1
    - Dst: pim_vxlan_term_mr_add
      Src: /src/frr/pimd/pim_vxlan.c:762,1
    - Dst: pim_vxlan_sg_del_item
      Src: /src/frr/pimd/pim_vxlan.c:767,1
    - Dst: pim_vxlan_del_work
      Src: /src/frr/pimd/pim_vxlan.c:771,1
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_vxlan.c:773,1
    - Dst: pim_vxlan_orig_mr_del
      Src: /src/frr/pimd/pim_vxlan.c:774,1
    - Dst: pim_vxlan_term_mr_del
      Src: /src/frr/pimd/pim_vxlan.c:776,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:779,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_vxlan.c:781,1
    - Dst: pim_vxlan_sg_del
      Src: /src/frr/pimd/pim_vxlan.c:784,1
    - Dst: pim_vxlan_sg_find
      Src: /src/frr/pimd/pim_vxlan.c:788,1
    - Dst: hash_release
      Src: /src/frr/pimd/pim_vxlan.c:792,1
    - Dst: pim_vxlan_sg_del_item
      Src: /src/frr/pimd/pim_vxlan.c:793,1
    - Dst: pim_vxlan_do_mlag_reg
      Src: /src/frr/pimd/pim_vxlan.c:797,1
    - Dst: return
      Src: /src/frr/pimd/pim_vxlan.c:799,1
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_vxlan.c:813,1
    - Dst: pim_vxlan_orig_mr_oif_add
      Src: /src/frr/pimd/pim_vxlan.c:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - pim
    - up
    - inherit
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 604
    functionDepth: 16
    functionLinenumber: 604
    functionLinenumberEnd: 823
    functionName: pim_vxlan_inherit_mlag_flags
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 1
    functionsReached:
    - pim_upstream_add
    - pim_vxlan_sg_del_item
    - pim_vxlan_orig_mr_del
    - hash_lookup
    - zlog_warn
    - pim_vxlan_sg_hash_key_make
    - pim_vxlan_term_mr_up_del
    - pim_vxlan_del_work
    - pim_vxlan_sg_find
    - pim_vxlan_sg_add
    - pim_vxlan_orig_mr_oif_add
    - pim_vxlan_update_sg_entry_mlag
    - pim_vxlan_sg_new
    - XCALLOC
    - pim_vxlan_inherit_mlag_flags
    - ALL_LIST_ELEMENTS_RO
    - return
    - zlog_debug
    - pim_vxlan_do_mlag_reg
    - if
    - pim_vxlan_orig_mr_add
    - hash_get
    - pim_vxlan_is_orig_mroute
    - pim_vxlan_term_mr_oif_add
    - pim_upstream_del
    - pim_sgaddr_cmp
    - PIM_UPSTREAM_FLAG_SET_SRC_VXLAN_TERM
    - XFREE
    - pim_sgaddr_hash
    - hash_release
    - pim_vxlan_term_mr_add
    - pim_vxlan_sg_hash_eq
    - pim_vxlan_term_mr_up_add
    - pim_mlag_up_local_del
    - pim_mlag_register
    - snprintfrr
    - pim_vxlan_sg_del
    - pim_vxlan_term_mr_del
    - PIM_UPSTREAM_FLAG_SET_MLAG_VXLAN
    - pim_vxlan_term_mr_oif_del
    linkageType: ''
    returnType: void
    signature: "void pim_vxlan_inherit_mlag_flags(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up, bool inherit)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - pim
    - up
    - src_p
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 840
    functionName: pim_vxlan_get_register_src
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool pim_vxlan_get_register_src(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up, struct in_addr *src_p)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/pimd/pim_vxlan.c:851,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:853,1
    - Dst: pim_get_pim_instance
      Src: /src/frr/pimd/pim_vxlan.c:864,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:868,1
    - Dst: pim_vxlan_set_peerlink_rif
      Src: /src/frr/pimd/pim_vxlan.c:889,1
    - Dst: pim_vxlan_set_peerlink_rif
      Src: /src/frr/pimd/pim_vxlan.c:891,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 5
    argNames:
    - enable
    - peer_state
    - role
    - peerlink_rif
    - reg_addr
    argTypes:
    - bool
    - bool
    - uint32_t
    - struct interface*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 842
    functionDepth: 3
    functionLinenumber: 842
    functionLinenumberEnd: 892
    functionName: pim_vxlan_mlag_update
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 3
    functionsReached:
    - inet_ntop
    - zlog_debug
    - pim_vxlan_set_peerlink_rif
    - pim_get_pim_instance
    linkageType: ''
    returnType: void
    signature: "void pim_vxlan_mlag_update(bool enable, bool peer_state, uint32_t
      role,\n\t\t\t\tstruct interface *peerlink_rif,\n\t\t\t\tstruct in_addr *reg_addr)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:905,1
    - Dst: pim_vxlan_orig_mr_iif_get
      Src: /src/frr/pimd/pim_vxlan.c:909,1
    - Dst: pim_vxlan_orig_mr_iif_get
      Src: /src/frr/pimd/pim_vxlan.c:911,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:916,1
    - Dst: hash_iterate
      Src: /src/frr/pimd/pim_vxlan.c:924,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - pim
    - ifp
    argTypes:
    - struct pim_instance*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 926
    functionName: pim_vxlan_set_default_iif
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    - zlog_debug
    - pim_vxlan_orig_mr_iif_get
    linkageType: ''
    returnType: void
    signature: "void pim_vxlan_set_default_iif(struct pim_instance *pim,\n\t\t\t\tstruct
      interface *ifp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
      Src: /src/frr/pimd/pim_vxlan.c:932,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:941,1
    - Dst: pim_mlag_up_local_add
      Src: /src/frr/pimd/pim_vxlan.c:947,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - pim
    - up
    - old_peerlink_rif
    argTypes:
    - struct pim_instance*
    - struct pim_upstream*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 949
    functionName: pim_vxlan_up_cost_update
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_mlag_up_local_add
    - zlog_debug
    - PIM_UPSTREAM_FLAG_TEST_MLAG_VXLAN
    linkageType: ''
    returnType: void
    signature: "void pim_vxlan_up_cost_update(struct pim_instance *pim,\n\t\tstruct
      pim_upstream *up,\n\t\tstruct interface *old_peerlink_rif)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_vxlan.c:959,1
    - Dst: pim_vxlan_up_cost_update
      Src: /src/frr/pimd/pim_vxlan.c:967,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_vxlan.c:970,1
    - Dst: pim_vxlan_up_cost_update
      Src: /src/frr/pimd/pim_vxlan.c:972,1
    - Dst: pim_vxlan_orig_mr_iif_get
      Src: /src/frr/pimd/pim_vxlan.c:1000,1
    - Dst: pim_vxlan_orig_mr_oif_get
      Src: /src/frr/pimd/pim_vxlan.c:1001,1
    - Dst: pim_vxlan_orig_mr_iif_get
      Src: /src/frr/pimd/pim_vxlan.c:1004,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:1007,1
    - Dst: hash_iterate
      Src: /src/frr/pimd/pim_vxlan.c:1015,1
    - Dst: pim_vxlan_orig_mr_oif_get
      Src: /src/frr/pimd/pim_vxlan.c:1020,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:1023,1
    - Dst: hash_iterate
      Src: /src/frr/pimd/pim_vxlan.c:1027,1
    - Dst: pim_vxlan_term_mr_oif_update
      Src: /src/frr/pimd/pim_vxlan.c:1033,1
    - Dst: pim_vxlan_is_orig_mroute
      Src: /src/frr/pimd/pim_vxlan.c:1038,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:1045,1
    - Dst: pim_vxlan_term_mr_del
      Src: /src/frr/pimd/pim_vxlan.c:1050,1
    - Dst: pim_vxlan_term_mr_add
      Src: /src/frr/pimd/pim_vxlan.c:1052,1
    - Dst: pim_vxlan_term_oif_update
      Src: /src/frr/pimd/pim_vxlan.c:1055,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:1062,1
    - Dst: hash_iterate
      Src: /src/frr/pimd/pim_vxlan.c:1068,1
    - Dst: pim_vxlan_add_vif
      Src: /src/frr/pimd/pim_vxlan.c:1072,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_vxlan.c:1080,1
    - Dst: pim_vxlan_set_default_iif
      Src: /src/frr/pimd/pim_vxlan.c:1081,1
    - Dst: pim_vxlan_set_peerlink_rif
      Src: /src/frr/pimd/pim_vxlan.c:1085,1
    - Dst: pim_vxlan_term_oif_update
      Src: /src/frr/pimd/pim_vxlan.c:1088,1
    - Dst: pim_vxlan_del_vif
      Src: /src/frr/pimd/pim_vxlan.c:1091,1
    - Dst: pim_vxlan_set_default_iif
      Src: /src/frr/pimd/pim_vxlan.c:1100,1
    - Dst: pim_vxlan_set_peerlink_rif
      Src: /src/frr/pimd/pim_vxlan.c:1103,1
    - Dst: pim_vxlan_term_oif_update
      Src: /src/frr/pimd/pim_vxlan.c:1106,1
    - Dst: pim_vxlan_add_term_dev
      Src: /src/frr/pimd/pim_vxlan.c:1110,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:1119,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - bucket
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 951
    functionDepth: 2
    functionLinenumber: 951
    functionLinenumberEnd: 1133
    functionName: pim_vxlan_term_mr_cost_update
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 0
    functionsReached:
    - pim_vxlan_term_mr_add
    - pim_vxlan_is_orig_mroute
    - ALL_LIST_ELEMENTS_RO
    - if_is_loopback
    - pim_vxlan_set_default_iif
    - pim_vxlan_set_peerlink_rif
    - pim_vxlan_term_mr_oif_update
    - pim_vxlan_term_mr_del
    - pim_vxlan_add_term_dev
    - pim_vxlan_add_vif
    - zlog_debug
    - pim_vxlan_del_vif
    - pim_vxlan_orig_mr_iif_get
    - hash_iterate
    - pim_vxlan_term_oif_update
    - pim_vxlan_orig_mr_oif_get
    - pim_vxlan_up_cost_update
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_term_mr_cost_update(struct hash_bucket *bucket, void
      *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_vxlan.c:1150,1
    - Dst: pim_if_delete
      Src: /src/frr/pimd/pim_vxlan.c:1159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1144
    functionDepth: 3
    functionLinenumber: 1144
    functionLinenumberEnd: 1161
    functionName: pim_vxlan_del_term_dev
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 1
    functionsReached:
    - pim_if_delete
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_del_term_dev(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/pimd/pim_vxlan.c:1167,1
    - Dst: hash_create
      Src: /src/frr/pimd/pim_vxlan.c:1169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1163
    functionDepth: 4
    functionLinenumber: 1163
    functionLinenumberEnd: 1171
    functionName: pim_vxlan_init
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_create
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_init(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_clean_and_free
      Src: /src/frr/pimd/pim_vxlan.c:1175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pim
    argTypes:
    - struct pim_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1173
    functionDepth: 2
    functionLinenumber: 1173
    functionLinenumberEnd: 1177
    functionName: pim_vxlan_exit
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 1
    functionsReached:
    - hash_clean_and_free
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_exit(struct pim_instance *pim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_vxlan_work_timer_setup
      Src: /src/frr/pimd/pim_vxlan.c:1181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1179
    functionDepth: 2
    functionLinenumber: 1179
    functionLinenumberEnd: 1182
    functionName: pim_vxlan_terminate
    functionSourceFile: /src/frr/pimd/pim_vxlan.c
    functionUses: 1
    functionsReached:
    - pim_vxlan_work_timer_setup
    linkageType: ''
    returnType: void
    signature: void pim_vxlan_terminate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_delete
      Src: /src/frr/pimd/pim_jp_agg.c:23,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_jp_agg.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - jag
    argTypes:
    - struct pim_jp_agg_group*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 26
    functionName: pim_jp_agg_group_list_free
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 0
    functionsReached:
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_jp_agg_group_list_free(struct pim_jp_agg_group *jag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: join_timer_start
      Src: /src/frr/pimd/pim_jp_agg.c:40,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_jp_agg.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - js
    argTypes:
    - struct pim_jp_sources*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 42
    functionName: pim_jp_agg_src_free
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 0
    functionsReached:
    - join_timer_start
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pim_jp_agg_src_free(struct pim_jp_sources *js)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_jp_agg.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: pim_jp_agg_group_list_cmp
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: int
    signature: int pim_jp_agg_group_list_cmp(void *arg1, void *arg2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_jp_agg.c:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 66
    functionName: pim_jp_agg_src_cmp
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 0
    functionsReached:
    - pim_addr_cmp
    linkageType: ''
    returnType: int
    signature: int pim_jp_agg_src_cmp(void *arg1, void *arg2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_jp_agg.c:81,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_jp_agg.c:82,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_jp_agg.c:83,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_jp_agg.c:85,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_jp_agg.c:87,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_jp_agg.c:88,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_jp_agg.c:89,1
    - Dst: pim_jp_agg_get_interface_upstream_switch_list
      Src: /src/frr/pimd/pim_jp_agg.c:94,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_jp_agg.c:110,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_jp_agg.c:112,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_jp_agg.c:117,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_jp_agg.c:120,1
    - Dst: listnode_add_sort
      Src: /src/frr/pimd/pim_jp_agg.c:121,1
    - Dst: pim_jp_agg_remove_group
      Src: /src/frr/pimd/pim_jp_agg.c:127,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_jp_agg.c:135,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_jp_agg.c:142,1
    - Dst: if
      Src: /src/frr/pimd/pim_jp_agg.c:148,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_jp_agg.c:149,1
    - Dst: if
      Src: /src/frr/pimd/pim_jp_agg.c:154,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_jp_agg.c:156,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_jp_agg.c:157,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_jp_agg.c:161,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_jp_agg.c:162,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_jp_agg.c:163,1
    - Dst: pim_jp_agg_is_in_list
      Src: /src/frr/pimd/pim_jp_agg.c:167,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_jp_agg.c:174,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_jp_agg.c:181,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - group
    argTypes:
    - struct list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 187
    functionName: pim_jp_agg_clear_group
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 0
    functionsReached:
    - pim_jp_agg_get_interface_upstream_switch_list
    - list_delete
    - listnode_add_sort
    - XCALLOC
    - pim_addr_cmp
    - pim_jp_agg_is_in_list
    - zlog_debug
    - list_new
    - pim_jp_agg_remove_group
    - XFREE
    - listnode_delete
    - ALL_LIST_ELEMENTS
    - if
    linkageType: ''
    returnType: void
    signature: void pim_jp_agg_clear_group(struct list *group)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_jp_agg.c:211,1
    - Dst: FOR_ALL_INTERFACES
      Src: /src/frr/pimd/pim_jp_agg.c:219,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_jp_agg.c:228,1
    - Dst: assert
      Src: /src/frr/pimd/pim_jp_agg.c:230,1
    - Dst: pim_jp_agg_is_in_list
      Src: /src/frr/pimd/pim_jp_agg.c:230,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - up
    - ignore
    argTypes:
    - struct pim_upstream*
    - bool
    assertStmts:
    - condition: "(!pim_jp_agg_is_in_list(\n\t\t\t\t\tneigh->upstream_jp_agg, up))"
      pos:
        line_end: 230
        line_start: 229
        source_file: /src/frr/pimd/pim_jp_agg.c
    constantsTouched: []
    func_position:
      end: 238
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 238
    functionName: pim_jp_agg_upstream_verification
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 3
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - pim_jp_agg_is_in_list
    - FOR_ALL_INTERFACES
    - zlog_debug
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_jp_agg_upstream_verification(struct pim_upstream *up, bool
      ignore)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_jp_agg.c:247,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_jp_agg.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - group
    - up
    - is_join
    - nbr
    argTypes:
    - struct list*
    - struct pim_upstream*
    - bool
    - struct pim_neighbor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: pim_jp_agg_add_group
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS
    - pim_addr_cmp
    linkageType: ''
    returnType: void
    signature: "void pim_jp_agg_add_group(struct list *group, struct pim_upstream
      *up,\n\t\t\t  bool is_join, struct pim_neighbor *nbr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pim_if_connected_to_source
      Src: /src/frr/pimd/pim_jp_agg.c:332,1
    - Dst: if_is_loopback
      Src: /src/frr/pimd/pim_jp_agg.c:334,1
    - Dst: memset
      Src: /src/frr/pimd/pim_jp_agg.c:337,1
    - Dst: memset
      Src: /src/frr/pimd/pim_jp_agg.c:338,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_jp_agg.c:341,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_jp_agg.c:342,1
    - Dst: pim_joinprune_send
      Src: /src/frr/pimd/pim_jp_agg.c:348,1
    - Dst: list_delete_all_node
      Src: /src/frr/pimd/pim_jp_agg.c:350,1
    - Dst: list_delete_all_node
      Src: /src/frr/pimd/pim_jp_agg.c:351,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - rpf
    - up
    - is_join
    argTypes:
    - struct pim_rpf*
    - struct pim_upstream*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 323
    functionDepth: 4
    functionLinenumber: 323
    functionLinenumberEnd: 352
    functionName: pim_jp_agg_single_upstream_send
    functionSourceFile: /src/frr/pimd/pim_jp_agg.c
    functionUses: 5
    functionsReached:
    - memset
    - if_is_loopback
    - pim_joinprune_send
    - listnode_add
    - list_delete_all_node
    - pim_if_connected_to_source
    linkageType: ''
    returnType: void
    signature: "void pim_jp_agg_single_upstream_send(struct pim_rpf *rpf,\n\t\t\t\t
      \    struct pim_upstream *up, bool is_join)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_nameindex
      Src: /src/frr/pimd/test_igmpv3_join.c:33,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:36,1
    - Dst: strerror
      Src: /src/frr/pimd/test_igmpv3_join.c:38,1
    - Dst: strcmp
      Src: /src/frr/pimd/test_igmpv3_join.c:44,1
    - Dst: if_freenameindex
      Src: /src/frr/pimd/test_igmpv3_join.c:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 53
    functionName: iface_solve_index
    functionSourceFile: /src/frr/pimd/test_igmpv3_join.c
    functionUses: 0
    functionsReached:
    - if_nameindex
    - strerror
    - strcmp
    - fprintf
    - if_freenameindex
    linkageType: ''
    returnType: int
    signature: int iface_solve_index(const char *ifname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/pimd/test_igmpv3_join.c:68,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:70,1
    - Dst: strerror
      Src: /src/frr/pimd/test_igmpv3_join.c:72,1
    - Dst: exit
      Src: /src/frr/pimd/test_igmpv3_join.c:73,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:77,1
    - Dst: exit
      Src: /src/frr/pimd/test_igmpv3_join.c:81,1
    - Dst: iface_solve_index
      Src: /src/frr/pimd/test_igmpv3_join.c:88,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:90,1
    - Dst: exit
      Src: /src/frr/pimd/test_igmpv3_join.c:92,1
    - Dst: inet_pton
      Src: /src/frr/pimd/test_igmpv3_join.c:95,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:97,1
    - Dst: exit
      Src: /src/frr/pimd/test_igmpv3_join.c:99,1
    - Dst: inet_pton
      Src: /src/frr/pimd/test_igmpv3_join.c:102,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:104,1
    - Dst: exit
      Src: /src/frr/pimd/test_igmpv3_join.c:106,1
    - Dst: pim_gm_join_source
      Src: /src/frr/pimd/test_igmpv3_join.c:109,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:111,1
    - Dst: strerror
      Src: /src/frr/pimd/test_igmpv3_join.c:114,1
    - Dst: exit
      Src: /src/frr/pimd/test_igmpv3_join.c:115,1
    - Dst: printf
      Src: /src/frr/pimd/test_igmpv3_join.c:118,1
    - Dst: printf
      Src: /src/frr/pimd/test_igmpv3_join.c:121,1
    - Dst: getchar
      Src: /src/frr/pimd/test_igmpv3_join.c:123,1
    - Dst: fprintf
      Src: /src/frr/pimd/test_igmpv3_join.c:124,1
    - Dst: close
      Src: /src/frr/pimd/test_igmpv3_join.c:126,1
    - Dst: printf
      Src: /src/frr/pimd/test_igmpv3_join.c:128,1
    - Dst: exit
      Src: /src/frr/pimd/test_igmpv3_join.c:131,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 132
    functionName: main
    functionSourceFile: /src/frr/pimd/test_igmpv3_join.c
    functionUses: 26
    functionsReached:
    - exit
    - strerror
    - socket
    - iface_solve_index
    - pim_gm_join_source
    - close
    - fprintf
    - inet_pton
    - printf
    - getchar
    linkageType: ''
    returnType: int
    signature: int main(int argc, const char *argv[])
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pim_rp_set_upstream_addr
      Src: /src/frr/pimd/pim_tib.c:28,1
    - Dst: pim_channel_oil_add
      Src: /src/frr/pimd/pim_tib.c:30,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_tib.c:33,1
    - Dst: pim_upstream_find
      Src: /src/frr/pimd/pim_tib.c:35,1
    - Dst: memcpy
      Src: /src/frr/pimd/pim_tib.c:37,1
    - Dst: pim_ecmp_nexthop_lookup
      Src: /src/frr/pimd/pim_tib.c:39,1
    - Dst: pim_if_find_vifindex_by_ifindex
      Src: /src/frr/pimd/pim_tib.c:42,1
    - Dst: pim_ecmp_fib_lookup_if_vif_index
      Src: /src/frr/pimd/pim_tib.c:46,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tib.c:49,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tib.c:54,1
    - Dst: pim_channel_oil_add
      Src: /src/frr/pimd/pim_tib.c:58,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_tib.c:67,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tib.c:70,1
    - Dst: pim_channel_oil_add
      Src: /src/frr/pimd/pim_tib.c:78,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - pim
    - sg
    - oif
    argTypes:
    - struct pim_instance*
    - pim_sgaddr
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 18
    functionDepth: 7
    functionLinenumber: 18
    functionLinenumberEnd: 79
    functionName: tib_sg_oil_setup
    functionSourceFile: /src/frr/pimd/pim_tib.c
    functionUses: 0
    functionsReached:
    - pim_ecmp_fib_lookup_if_vif_index
    - PIM_I_am_DR
    - pim_addr_to_prefix
    - pim_upstream_find
    - pim_rp_set_upstream_addr
    - zlog_debug
    - pim_ecmp_nexthop_lookup
    - pim_if_find_vifindex_by_ifindex
    - memcpy
    - pim_channel_oil_add
    linkageType: ''
    returnType: struct channel_oil
    signature: 'struct channel_oil *

      tib_sg_oil_setup(struct pim_instance *pim, pim_sgaddr sg, struct interface *oif)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tib.c:88,1
    - Dst: tib_sg_oil_setup
      Src: /src/frr/pimd/pim_tib.c:94,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_tib.c:98,1
    - Dst: PIM_I_am_DualActive
      Src: /src/frr/pimd/pim_tib.c:98,1
    - Dst: pim_channel_add_oif
      Src: /src/frr/pimd/pim_tib.c:101,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tib.c:105,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tib.c:111,1
    - Dst: pim_ifchannel_local_membership_add
      Src: /src/frr/pimd/pim_tib.c:121,1
    - Dst: zlog_warn
      Src: /src/frr/pimd/pim_tib.c:123,1
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_tib.c:127,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 4
    argNames:
    - pim
    - sg
    - oif
    - oilp
    argTypes:
    - struct pim_instance*
    - pim_sgaddr
    - struct interface*
    - struct channel_oil**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 81
    functionDepth: 9
    functionLinenumber: 81
    functionLinenumberEnd: 133
    functionName: tib_sg_gm_join
    functionSourceFile: /src/frr/pimd/pim_tib.c
    functionUses: 2
    functionsReached:
    - pim_channel_del_oif
    - PIM_I_am_DR
    - pim_ifchannel_local_membership_add
    - tib_sg_oil_setup
    - pim_channel_add_oif
    - zlog_debug
    - zlog_warn
    - PIM_I_am_DualActive
    linkageType: ''
    returnType: bool
    signature: "bool tib_sg_gm_join(struct pim_instance *pim, pim_sgaddr sg,\n\t\t
      \   struct interface *oif, struct channel_oil **oilp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pim_channel_del_oif
      Src: /src/frr/pimd/pim_tib.c:151,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_tib.c:155,1
    - Dst: pim_ifchannel_local_membership_del
      Src: /src/frr/pimd/pim_tib.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - pim
    - sg
    - oif
    - oilp
    argTypes:
    - struct pim_instance*
    - pim_sgaddr
    - struct interface*
    - struct channel_oil**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 135
    functionDepth: 6
    functionLinenumber: 135
    functionLinenumberEnd: 166
    functionName: tib_sg_gm_prune
    functionSourceFile: /src/frr/pimd/pim_tib.c
    functionUses: 2
    functionsReached:
    - pim_channel_del_oif
    - zlog_debug
    - pim_ifchannel_local_membership_del
    linkageType: ''
    returnType: void
    signature: "void tib_sg_gm_prune(struct pim_instance *pim, pim_sgaddr sg,\n\t\t
      \    struct interface *oif, struct channel_oil **oilp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:41,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:46,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:49,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_neighbor.c:50,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:73,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim_neighbor.c:75,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_neighbor.c:81,1
    - Dst: pim_if_dr_election
      Src: /src/frr/pimd/pim_neighbor.c:96,1
    - Dst: dr_election_by_addr
      Src: /src/frr/pimd/pim_neighbor.c:106,1
    - Dst: dr_election_by_pri
      Src: /src/frr/pimd/pim_neighbor.c:108,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_neighbor.c:112,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:115,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_neighbor.c:121,1
    - Dst: pim_if_update_join_desired
      Src: /src/frr/pimd/pim_neighbor.c:123,1
    - Dst: pim_if_update_could_assert
      Src: /src/frr/pimd/pim_neighbor.c:124,1
    - Dst: pim_if_update_assert_tracking_desired
      Src: /src/frr/pimd/pim_neighbor.c:125,1
    - Dst: PIM_I_am_DR
      Src: /src/frr/pimd/pim_neighbor.c:127,1
    - Dst: pim_clear_nocache_state
      Src: /src/frr/pimd/pim_neighbor.c:129,1
    - Dst: pim_reg_del_on_couldreg_fail
      Src: /src/frr/pimd/pim_neighbor.c:132,1
    - Dst: update_dr_priority
      Src: /src/frr/pimd/pim_neighbor.c:143,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_neighbor.c:152,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_neighbor.c:155,1
    - Dst: pim_if_dr_election
      Src: /src/frr/pimd/pim_neighbor.c:188,1
    - Dst: on_neighbor_timer
      Src: /src/frr/pimd/pim_neighbor.c:193,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_neighbor.c:199,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:204,1
    - Dst: snprintf
      Src: /src/frr/pimd/pim_neighbor.c:208,1
    - Dst: pim_neighbor_delete
      Src: /src/frr/pimd/pim_neighbor.c:209,1
    - Dst: pim_if_dr_election
      Src: /src/frr/pimd/pim_neighbor.c:218,1
    - Dst: pim_neighbor_timer_reset
      Src: /src/frr/pimd/pim_neighbor.c:221,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_neighbor.c:225,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:235,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_neighbor.c:239,1
    - Dst: on_neighbor_jp_timer
      Src: /src/frr/pimd/pim_neighbor.c:243,1
    - Dst: EVENT_ARG
      Src: /src/frr/pimd/pim_neighbor.c:245,1
    - Dst: pim_rpf
      Src: /src/frr/pimd/pim_neighbor.c:246,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:249,1
    - Dst: pim_joinprune_send
      Src: /src/frr/pimd/pim_neighbor.c:256,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_neighbor.c:258,1
    - Dst: pim_neighbor_start_jp_timer
      Src: /src/frr/pimd/pim_neighbor.c:262,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_neighbor.c:264,1
    - Dst: event_add_timer
      Src: /src/frr/pimd/pim_neighbor.c:265,1
    - Dst: pim_neighbor_new
      Src: /src/frr/pimd/pim_neighbor.c:270,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:279,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:281,1
    - Dst: XCALLOC
      Src: /src/frr/pimd/pim_neighbor.c:283,1
    - Dst: pim_time_monotonic_sec
      Src: /src/frr/pimd/pim_neighbor.c:285,1
    - Dst: list_new
      Src: /src/frr/pimd/pim_neighbor.c:296,1
    - Dst: pim_neighbor_start_jp_timer
      Src: /src/frr/pimd/pim_neighbor.c:300,1
    - Dst: pim_neighbor_timer_reset
      Src: /src/frr/pimd/pim_neighbor.c:302,1
    - Dst: PIM_IF_FLAG_UNSET_HELLO_SENT
      Src: /src/frr/pimd/pim_neighbor.c:310,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:313,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_neighbor.c:316,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_neighbor.c:330,1
    - Dst: struct pim_interface*::pim_number_of_nonlandelay_neighbors
      Src: /src/frr/pimd/pim_neighbor.c:333,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_neighbor.c:336,1
    - Dst: pim_bfd_info_nbr_create
      Src: /src/frr/pimd/pim_neighbor.c:343,1
    - Dst: delete_prefix_list
      Src: /src/frr/pimd/pim_neighbor.c:348,1
    - Dst: listcount
      Src: /src/frr/pimd/pim_neighbor.c:356,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:359,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:360,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_neighbor.c:369,1
    - Dst: pim_neighbor_free
      Src: /src/frr/pimd/pim_neighbor.c:373,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:375,1
    - Dst: delete_prefix_list
      Src: /src/frr/pimd/pim_neighbor.c:377,1
    - Dst: list_delete
      Src: /src/frr/pimd/pim_neighbor.c:379,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_neighbor.c:380,1
    - Dst: bfd_sess_free
      Src: /src/frr/pimd/pim_neighbor.c:382,1
    - Dst: XFREE
      Src: /src/frr/pimd/pim_neighbor.c:384,1
    - Dst: pim_neighbor_find_by_secondary
      Src: /src/frr/pimd/pim_neighbor.c:387,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:400,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:401,1
    - Dst: prefix_same
      Src: /src/frr/pimd/pim_neighbor.c:402,1
    - Dst: if
      Src: /src/frr/pimd/pim_neighbor.c:417,1
    - Dst: if
      Src: /src/frr/pimd/pim_neighbor.c:421,1
    - Dst: for
      Src: /src/frr/pimd/pim_neighbor.c:424,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:424,1
    - Dst: pim_addr_cmp
      Src: /src/frr/pimd/pim_neighbor.c:425,1
    - Dst: pim_addr_to_prefix
      Src: /src/frr/pimd/pim_neighbor.c:433,1
    - Dst: pim_neighbor_find_by_secondary
      Src: /src/frr/pimd/pim_neighbor.c:434,1
    - Dst: if
      Src: /src/frr/pimd/pim_neighbor.c:449,1
    - Dst: listnode_head
      Src: /src/frr/pimd/pim_neighbor.c:452,1
    - Dst: pim_neighbor_add
      Src: /src/frr/pimd/pim_neighbor.c:456,1
    - Dst: pim_neighbor_new
      Src: /src/frr/pimd/pim_neighbor.c:465,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:473,1
    - Dst: listnode_add
      Src: /src/frr/pimd/pim_neighbor.c:475,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:478,1
    - Dst: pim_if_dr_election
      Src: /src/frr/pimd/pim_neighbor.c:486,1
    - Dst: pim_upstream_find_new_rpf
      Src: /src/frr/pimd/pim_neighbor.c:508,1
    - Dst: pim_resolve_rp_nh
      Src: /src/frr/pimd/pim_neighbor.c:516,1
    - Dst: pim_rp_setup
      Src: /src/frr/pimd/pim_neighbor.c:518,1
    - Dst: sched_rpf_cache_refresh
      Src: /src/frr/pimd/pim_neighbor.c:520,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: (ifp)
      pos:
        line_end: 278
        line_start: 278
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: (!neigh->t_expire_timer)
      pos:
        line_end: 374
        line_start: 374
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: (pim_ifp)
      pos:
        line_end: 472
        line_start: 472
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: (pim_ifp)
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/frr/pimd/pim_neighbor.c
    constantsTouched: []
    func_position:
      end: 522
      start: 34
    functionDepth: 12
    functionLinenumber: 34
    functionLinenumberEnd: 522
    functionName: dr_election_by_addr
    functionSourceFile: /src/frr/pimd/pim_neighbor.c
    functionUses: 1
    functionsReached:
    - pim_clear_nocache_state
    - pim_neighbor_new
    - list_delete
    - pim_if_update_assert_tracking_desired
    - listnode_add
    - dr_election_by_pri
    - pim_neighbor_find_by_secondary
    - pim_if_dr_election
    - pim_resolve_rp_nh
    - dr_election_by_addr
    - pim_reg_del_on_couldreg_fail
    - on_neighbor_jp_timer
    - snprintf
    - XCALLOC
    - PIM_I_am_DR
    - ALL_LIST_ELEMENTS_RO
    - pim_neighbor_free
    - zlog_debug
    - pim_time_monotonic_sec
    - EVENT_ARG
    - delete_prefix_list
    - if
    - for
    - assert
    - pim_upstream_find_new_rpf
    - on_neighbor_timer
    - zlog_info
    - PIM_OPTION_IS_SET
    - pim_neighbor_delete
    - prefix_same
    - pim_neighbor_add
    - pim_if_update_join_desired
    - listcount
    - pim_joinprune_send
    - pim_addr_cmp
    - PIM_IF_FLAG_UNSET_HELLO_SENT
    - pim_bfd_info_nbr_create
    - EVENT_OFF
    - XFREE
    - listnode_head
    - event_add_timer
    - pim_neighbor_timer_reset
    - pim_neighbor_start_jp_timer
    - bfd_sess_free
    - pim_addr_to_prefix
    - sched_rpf_cache_refresh
    - struct pim_interface*::pim_number_of_nonlandelay_neighbors
    - pim_rp_setup
    - update_dr_priority
    - list_new
    - pim_rpf
    - pim_if_update_could_assert
    - zlog_notice
    linkageType: ''
    returnType: void
    signature: void dr_election_by_addr(struct interface *ifp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:533,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:537,1
    - Dst: if
      Src: /src/frr/pimd/pim_neighbor.c:541,1
    - Dst: find_neighbors_next_highest_override_interval_msec
      Src: /src/frr/pimd/pim_neighbor.c:548,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:557,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:561,1
    - Dst: pim_neighbor_delete
      Src: /src/frr/pimd/pim_neighbor.c:573,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:579,1
    - Dst: zlog_notice
      Src: /src/frr/pimd/pim_neighbor.c:581,1
    - Dst: EVENT_OFF
      Src: /src/frr/pimd/pim_neighbor.c:584,1
    - Dst: pim_if_assert_on_neighbor_down
      Src: /src/frr/pimd/pim_neighbor.c:586,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_neighbor.c:588,1
    - Dst: MAX
      Src: /src/frr/pimd/pim_neighbor.c:592,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_neighbor.c:596,1
    - Dst: MAX
      Src: /src/frr/pimd/pim_neighbor.c:601,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:606,1
    - Dst: pim_if_lan_delay_enabled
      Src: /src/frr/pimd/pim_neighbor.c:609,1
    - Dst: find_neighbors_next_highest_propagation_delay_msec
      Src: /src/frr/pimd/pim_neighbor.c:616,1
    - Dst: find_neighbors_next_highest_override_interval_msec
      Src: /src/frr/pimd/pim_neighbor.c:625,1
    - Dst: zlog_debug
      Src: /src/frr/pimd/pim_neighbor.c:631,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_neighbor.c:635,1
    - Dst: pim_neighbor_free
      Src: /src/frr/pimd/pim_neighbor.c:637,1
    - Dst: sched_rpf_cache_refresh
      Src: /src/frr/pimd/pim_neighbor.c:639,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ifp
    - highest_neigh
    argTypes:
    - struct interface*
    - struct pim_neighbor*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 532
        line_start: 532
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: (pim_ifp)
      pos:
        line_end: 578
        line_start: 578
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: "(neigh->override_interval_msec\n\t       <= pim_ifp->pim_neighbors_highest_override_interval_msec)"
      pos:
        line_end: 606
        line_start: 605
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: (pim_ifp)
      pos:
        line_end: 556
        line_start: 556
        source_file: /src/frr/pimd/pim_neighbor.c
    constantsTouched: []
    func_position:
      end: 640
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 640
    functionName: find_neighbors_next_highest_propagation_delay_msec
    functionSourceFile: /src/frr/pimd/pim_neighbor.c
    functionUses: 1
    functionsReached:
    - pim_neighbor_delete
    - PIM_OPTION_IS_SET
    - find_neighbors_next_highest_propagation_delay_msec
    - listnode_delete
    - ALL_LIST_ELEMENTS_RO
    - pim_neighbor_free
    - sched_rpf_cache_refresh
    - pim_if_assert_on_neighbor_down
    - MAX
    - zlog_debug
    - EVENT_OFF
    - if
    - pim_if_lan_delay_enabled
    - zlog_notice
    - find_neighbors_next_highest_override_interval_msec
    - assert
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t find_neighbors_next_highest_propagation_delay_msec(\n\tstruct
      interface *ifp, struct pim_neighbor *highest_neigh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:650,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/pimd/pim_neighbor.c:652,1
    - Dst: pim_neighbor_delete
      Src: /src/frr/pimd/pim_neighbor.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ifp
    - delete_message
    argTypes:
    - struct interface*
    - char*
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 649
        line_start: 649
        source_file: /src/frr/pimd/pim_neighbor.c
    constantsTouched: []
    func_position:
      end: 656
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 656
    functionName: pim_neighbor_delete_all
    functionSourceFile: /src/frr/pimd/pim_neighbor.c
    functionUses: 2
    functionsReached:
    - ALL_LIST_ELEMENTS
    - pim_neighbor_delete
    - assert
    linkageType: ''
    returnType: void
    signature: void pim_neighbor_delete_all(struct interface *ifp, const char *delete_message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:667,1
    - Dst: prefix_same
      Src: /src/frr/pimd/pim_neighbor.c:668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - neigh
    - addr
    argTypes:
    - struct pim_neighbor*
    - struct prefix*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 673
    functionName: pim_neighbor_find_secondary
    functionSourceFile: /src/frr/pimd/pim_neighbor.c
    functionUses: 1
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - prefix_same
    linkageType: ''
    returnType: struct prefix
    signature: "struct prefix *pim_neighbor_find_secondary(struct pim_neighbor *neigh,\n\t\t\t\t\t
      \  struct prefix *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:694,1
    - Dst: assert
      Src: /src/frr/pimd/pim_neighbor.c:696,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:701,1
    - Dst: if
      Src: /src/frr/pimd/pim_neighbor.c:705,1
    - Dst: for
      Src: /src/frr/pimd/pim_neighbor.c:710,1
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/pimd/pim_neighbor.c:710,1
    - Dst: pim_neighbor_find_secondary
      Src: /src/frr/pimd/pim_neighbor.c:713,1
    - Dst: zlog_info
      Src: /src/frr/pimd/pim_neighbor.c:716,1
    - Dst: listnode_delete
      Src: /src/frr/pimd/pim_neighbor.c:721,1
    - Dst: prefix_free
      Src: /src/frr/pimd/pim_neighbor.c:722,1
    - Dst: pim_neighbor_update
      Src: /src/frr/pimd/pim_neighbor.c:731,1
    - Dst: PIM_OPTION_IS_SET
      Src: /src/frr/pimd/pim_neighbor.c:739,1
    - Dst: pim_neighbor_timer_reset::pim_neighbor_timer_reset
      Src: /src/frr/pimd/pim_neighbor.c:736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ifp
    - addr_list
    - neigh_addr
    argTypes:
    - struct interface*
    - struct list*
    - pim_addr
    assertStmts:
    - condition: (pim_ifp)
      pos:
        line_end: 693
        line_start: 693
        source_file: /src/frr/pimd/pim_neighbor.c
    - condition: (addr_list)
      pos:
        line_end: 695
        line_start: 695
        source_file: /src/frr/pimd/pim_neighbor.c
    constantsTouched: []
    func_position:
      end: 744
      start: 686
    functionDepth: 3
    functionLinenumber: 686
    functionLinenumberEnd: 744
    functionName: delete_from_neigh_addr
    functionSourceFile: /src/frr/pimd/pim_neighbor.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - prefix_free
    - PIM_OPTION_IS_SET
    - listnode_delete
    - pim_neighbor_update
    - ALL_LIST_ELEMENTS_RO
    - pim_neighbor_timer_reset::pim_neighbor_timer_reset
    - if
    - for
    - pim_neighbor_find_secondary
    - assert
    linkageType: ''
    returnType: void
    signature: "void delete_from_neigh_addr(struct interface *ifp,\n\t\t\t\t   struct
      list *addr_list, pim_addr neigh_addr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rl_callback_handler_remove
      Src: /src/frr/vtysh/vtysh_main.c:75,1
    - Dst: using_history
      Src: /src/frr/vtysh/vtysh_main.c:86,1
    - Dst: previous_history
      Src: /src/frr/vtysh/vtysh_main.c:87,1
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh_main.c:88,1
    - Dst: add_history
      Src: /src/frr/vtysh/vtysh_main.c:89,1
    - Dst: append_history
      Src: /src/frr/vtysh/vtysh_main.c:90,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh_main.c:94,1
    - Dst: rl_callback_handler_install
      Src: /src/frr/vtysh/vtysh_main.c:97,1
    - Dst: vtysh_prompt
      Src: /src/frr/vtysh/vtysh_main.c:97,1
    - Dst: free
      Src: /src/frr/vtysh/vtysh_main.c:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - line_read
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 100
    functionName: vtysh_rl_callback
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - vtysh_execute
    - vtysh_prompt
    - rl_callback_handler_install
    - strcmp
    - free
    - previous_history
    - rl_callback_handler_remove
    - using_history
    - add_history
    - append_history
    linkageType: ''
    returnType: void
    signature: void vtysh_rl_callback(char *line_read)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rl_callback_handler_remove
      Src: /src/frr/vtysh/vtysh_main.c:105,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh_main.c:108,1
    - Dst: rl_callback_handler_install
      Src: /src/frr/vtysh/vtysh_main.c:111,1
    - Dst: vtysh_prompt
      Src: /src/frr/vtysh/vtysh_main.c:111,1
    - Dst: rl_initialize
      Src: /src/frr/vtysh/vtysh_main.c:114,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh_main.c:115,1
    - Dst: rl_forced_update_display
      Src: /src/frr/vtysh/vtysh_main.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 117
    functionName: sigtstp
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - rl_forced_update_display
    - vtysh_execute
    - vtysh_prompt
    - rl_callback_handler_install
    - rl_callback_handler_remove
    - printf
    - rl_initialize
    linkageType: ''
    returnType: void
    signature: void sigtstp(int sig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rl_initialize
      Src: /src/frr/vtysh/vtysh_main.c:124,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh_main.c:125,1
    - Dst: rl_forced_update_display
      Src: /src/frr/vtysh/vtysh_main.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: sigint
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - rl_forced_update_display
    - printf
    - rl_initialize
    linkageType: ''
    returnType: void
    signature: void sigint(int sig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/frr/vtysh/vtysh_main.c:138,1
    - Dst: sigaction
      Src: /src/frr/vtysh/vtysh_main.c:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - signo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 145
    functionName: vtysh_signal_set
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - sigemptyset
    - sigaction
    linkageType: ''
    returnType: void
    signature: void vtysh_signal_set(int signo, void (*func)(int))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_signal_set
      Src: /src/frr/vtysh/vtysh_main.c:150,1
    - Dst: vtysh_signal_set
      Src: /src/frr/vtysh/vtysh_main.c:151,1
    - Dst: vtysh_signal_set
      Src: /src/frr/vtysh/vtysh_main.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 153
    functionName: vtysh_signal_init
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - vtysh_signal_set
    linkageType: ''
    returnType: void
    signature: void vtysh_signal_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:159,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh_main.c:162,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 190
    functionName: usage
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 15
    functionsReached:
    - fprintf
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void usage(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add_read
      Src: /src/frr/vtysh/vtysh_main.c:224,1
    - Dst: rl_callback_read_char
      Src: /src/frr/vtysh/vtysh_main.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 222
    functionDepth: 1
    functionLinenumber: 222
    functionLinenumberEnd: 227
    functionName: vtysh_rl_read
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - rl_callback_read_char
    linkageType: ''
    returnType: void
    signature: void vtysh_rl_read(struct event *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_master_create
      Src: /src/frr/vtysh/vtysh_main.c:234,1
    - Dst: rl_callback_handler_install
      Src: /src/frr/vtysh/vtysh_main.c:236,1
    - Dst: vtysh_prompt
      Src: /src/frr/vtysh/vtysh_main.c:236,1
    - Dst: event_add_read
      Src: /src/frr/vtysh/vtysh_main.c:237,1
    - Dst: event_fetch
      Src: /src/frr/vtysh/vtysh_main.c:240,1
    - Dst: event_call
      Src: /src/frr/vtysh/vtysh_main.c:241,1
    - Dst: rl_callback_handler_remove
      Src: /src/frr/vtysh/vtysh_main.c:244,1
    - Dst: event_master_free
      Src: /src/frr/vtysh/vtysh_main.c:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 230
    functionDepth: 7
    functionLinenumber: 230
    functionLinenumberEnd: 247
    functionName: vtysh_rl_run
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - vtysh_prompt
    - rl_callback_handler_install
    - rl_callback_handler_remove
    - event_master_create
    - event_master_free
    - event_add_read
    - event_fetch
    - event_call
    linkageType: ''
    returnType: void
    signature: void vtysh_rl_run(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/frr/vtysh/vtysh_main.c:251,1
    - Dst: getenv
      Src: /src/frr/vtysh/vtysh_main.c:253,1
    - Dst: localtime_r
      Src: /src/frr/vtysh/vtysh_main.c:256,1
    - Dst: strftime
      Src: /src/frr/vtysh/vtysh_main.c:260,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 263
    functionName: log_it
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - localtime_r
    - strftime
    - fprintf
    - time
    - getenv
    linkageType: ''
    returnType: void
    signature: void log_it(const char *line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/frr/vtysh/vtysh_main.c:271,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:273,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh_main.c:274,1
    - Dst: flock
      Src: /src/frr/vtysh/vtysh_main.c:278,1
    - Dst: usleep
      Src: /src/frr/vtysh/vtysh_main.c:280,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - flock_file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 287
    functionName: vtysh_flock_config
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - open
    - flock
    - fprintf
    - safe_strerror
    - usleep
    linkageType: ''
    returnType: void
    signature: void vtysh_flock_config(const char *flock_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flock
      Src: /src/frr/vtysh/vtysh_main.c:291,1
    - Dst: close
      Src: /src/frr/vtysh/vtysh_main.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: vtysh_unflock_config
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - flock
    - close
    linkageType: ''
    returnType: void
    signature: void vtysh_unflock_config(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seteuid
      Src: /src/frr/vtysh/vtysh_main.c:297,1
    - Dst: perror
      Src: /src/frr/vtysh/vtysh_main.c:298,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:299,1
    - Dst: setegid
      Src: /src/frr/vtysh/vtysh_main.c:301,1
    - Dst: perror
      Src: /src/frr/vtysh/vtysh_main.c:302,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:303,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 305
    functionName: suid_on
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - seteuid
    - setegid
    - perror
    - exit
    linkageType: ''
    returnType: void
    signature: void suid_on(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seteuid
      Src: /src/frr/vtysh/vtysh_main.c:309,1
    - Dst: perror
      Src: /src/frr/vtysh/vtysh_main.c:310,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:311,1
    - Dst: setegid
      Src: /src/frr/vtysh/vtysh_main.c:313,1
    - Dst: perror
      Src: /src/frr/vtysh/vtysh_main.c:314,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:315,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 317
    functionName: suid_off
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 0
    functionsReached:
    - seteuid
    - setegid
    - perror
    - exit
    linkageType: ''
    returnType: void
    signature: void suid_off(void)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/frr/vtysh/vtysh_main.c:346,1
    - Dst: geteuid
      Src: /src/frr/vtysh/vtysh_main.c:349,1
    - Dst: getegid
      Src: /src/frr/vtysh/vtysh_main.c:350,1
    - Dst: getuid
      Src: /src/frr/vtysh/vtysh_main.c:351,1
    - Dst: getgid
      Src: /src/frr/vtysh/vtysh_main.c:352,1
    - Dst: suid_off
      Src: /src/frr/vtysh/vtysh_main.c:353,1
    - Dst: strrchr
      Src: /src/frr/vtysh/vtysh_main.c:358,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh_main.c:360,1
    - Dst: frr_init_vtydir
      Src: /src/frr/vtysh/vtysh_main.c:362,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh_main.c:363,1
    - Dst: getopt_long
      Src: /src/frr/vtysh/vtysh_main.c:367,1
    - Dst: XMALLOC
      Src: /src/frr/vtysh/vtysh_main.c:382,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh_main.c:393,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_main.c:397,1
    - Dst: strchr
      Src: /src/frr/vtysh/vtysh_main.c:403,1
    - Dst: strchr
      Src: /src/frr/vtysh/vtysh_main.c:403,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:404,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:406,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_main.c:409,1
    - Dst: usage
      Src: /src/frr/vtysh/vtysh_main.c:439,1
    - Dst: usage
      Src: /src/frr/vtysh/vtysh_main.c:445,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:460,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:465,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_main.c:469,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_main.c:471,1
    - Dst: strlcat
      Src: /src/frr/vtysh/vtysh_main.c:475,1
    - Dst: strlcat
      Src: /src/frr/vtysh/vtysh_main.c:476,1
    - Dst: setlinebuf
      Src: /src/frr/vtysh/vtysh_main.c:480,1
    - Dst: vtysh_signal_init
      Src: /src/frr/vtysh/vtysh_main.c:483,1
    - Dst: vtysh_init_vty
      Src: /src/frr/vtysh/vtysh_main.c:486,1
    - Dst: vtysh_init_cmd
      Src: /src/frr/vtysh/vtysh_main.c:487,1
    - Dst: vtysh_user_init
      Src: /src/frr/vtysh/vtysh_main.c:488,1
    - Dst: vtysh_config_init
      Src: /src/frr/vtysh/vtysh_main.c:489,1
    - Dst: vty_init_vtysh
      Src: /src/frr/vtysh/vtysh_main.c:491,1
    - Dst: suid_on
      Src: /src/frr/vtysh/vtysh_main.c:496,1
    - Dst: vtysh_apply_config
      Src: /src/frr/vtysh/vtysh_main.c:497,1
    - Dst: suid_off
      Src: /src/frr/vtysh/vtysh_main.c:498,1
    - Dst: log_ref_init
      Src: /src/frr/vtysh/vtysh_main.c:501,1
    - Dst: lib_error_init
      Src: /src/frr/vtysh/vtysh_main.c:502,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:506,1
    - Dst: vtysh_mark_file
      Src: /src/frr/vtysh/vtysh_main.c:510,1
    - Dst: vtysh_apply_config
      Src: /src/frr/vtysh/vtysh_main.c:516,1
    - Dst: vtysh_apply_config
      Src: /src/frr/vtysh/vtysh_main.c:518,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:521,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh_main.c:526,1
    - Dst: strchr
      Src: /src/frr/vtysh/vtysh_main.c:531,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh_main.c:536,1
    - Dst: vtysh_prompt
      Src: /src/frr/vtysh/vtysh_main.c:536,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_main.c:539,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:544,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_main.c:549,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:551,1
    - Dst: freopen
      Src: /src/frr/vtysh/vtysh_main.c:556,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:557,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:559,1
    - Dst: suid_on
      Src: /src/frr/vtysh/vtysh_main.c:564,1
    - Dst: vtysh_auth
      Src: /src/frr/vtysh/vtysh_main.c:567,1
    - Dst: vtysh_connect_all
      Src: /src/frr/vtysh/vtysh_main.c:570,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:571,1
    - Dst: geteuid
      Src: /src/frr/vtysh/vtysh_main.c:572,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:573,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:576,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:578,1
    - Dst: suid_off
      Src: /src/frr/vtysh/vtysh_main.c:582,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:586,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:589,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:591,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh_main.c:593,1
    - Dst: vtysh_write_config_integrated
      Src: /src/frr/vtysh/vtysh_main.c:594,1
    - Dst: vtysh_flock_config
      Src: /src/frr/vtysh/vtysh_main.c:601,1
    - Dst: vtysh_apply_config
      Src: /src/frr/vtysh/vtysh_main.c:602,1
    - Dst: vtysh_unflock_config
      Src: /src/frr/vtysh/vtysh_main.c:603,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:608,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh_main.c:619,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh_main.c:621,1
    - Dst: vtysh_get_home
      Src: /src/frr/vtysh/vtysh_main.c:623,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_main.c:625,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_main.c:629,1
    - Dst: read_history
      Src: /src/frr/vtysh/vtysh_main.c:630,1
    - Dst: open
      Src: /src/frr/vtysh/vtysh_main.c:633,1
    - Dst: close
      Src: /src/frr/vtysh/vtysh_main.c:636,1
    - Dst: read_history
      Src: /src/frr/vtysh/vtysh_main.c:638,1
    - Dst: getenv
      Src: /src/frr/vtysh/vtysh_main.c:642,1
    - Dst: getenv
      Src: /src/frr/vtysh/vtysh_main.c:643,1
    - Dst: fopen
      Src: /src/frr/vtysh/vtysh_main.c:645,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_main.c:647,1
    - Dst: strerror
      Src: /src/frr/vtysh/vtysh_main.c:648,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:649,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh_main.c:657,1
    - Dst: strchr
      Src: /src/frr/vtysh/vtysh_main.c:664,1
    - Dst: add_history
      Src: /src/frr/vtysh/vtysh_main.c:667,1
    - Dst: append_history
      Src: /src/frr/vtysh/vtysh_main.c:668,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh_main.c:671,1
    - Dst: vtysh_prompt
      Src: /src/frr/vtysh/vtysh_main.c:671,1
    - Dst: log_it
      Src: /src/frr/vtysh/vtysh_main.c:675,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_main.c:677,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:682,1
    - Dst: add_history
      Src: /src/frr/vtysh/vtysh_main.c:687,1
    - Dst: append_history
      Src: /src/frr/vtysh/vtysh_main.c:688,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh_main.c:691,1
    - Dst: vtysh_prompt
      Src: /src/frr/vtysh/vtysh_main.c:691,1
    - Dst: log_it
      Src: /src/frr/vtysh/vtysh_main.c:694,1
    - Dst: vtysh_execute_command_questionmark
      Src: /src/frr/vtysh/vtysh_main.c:702,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_main.c:705,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:710,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_main.c:716,1
    - Dst: history_truncate_file
      Src: /src/frr/vtysh/vtysh_main.c:720,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:721,1
    - Dst: vtysh_readline_init
      Src: /src/frr/vtysh/vtysh_main.c:724,1
    - Dst: vty_hello
      Src: /src/frr/vtysh/vtysh_main.c:726,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh_main.c:730,1
    - Dst: vtysh_rl_run
      Src: /src/frr/vtysh/vtysh_main.c:735,1
    - Dst: vtysh_uninit
      Src: /src/frr/vtysh/vtysh_main.c:737,1
    - Dst: history_truncate_file
      Src: /src/frr/vtysh/vtysh_main.c:739,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh_main.c:740,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_main.c:743,1
    CyclomaticComplexity: 90
    EdgeCount: 90
    ICount: 266
    argCount: 3
    argNames:
    - argc
    - argv
    - env
    argTypes:
    - int
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 320
    functionDepth: 8
    functionLinenumber: 320
    functionLinenumberEnd: 744
    functionName: main
    functionSourceFile: /src/frr/vtysh/vtysh_main.c
    functionUses: 26
    functionsReached:
    - vtysh_mark_file
    - strlen
    - geteuid
    - open
    - vtysh_flock_config
    - vtysh_readline_init
    - vtysh_prompt
    - suid_off
    - log_it
    - vty_init_vtysh
    - strchr
    - vtysh_signal_init
    - vtysh_init_vty
    - getuid
    - lib_error_init
    - add_history
    - strlcat
    - exit
    - vtysh_config_init
    - snprintf
    - vtysh_execute
    - fprintf
    - getopt_long
    - vtysh_user_init
    - printf
    - getenv
    - vty_hello
    - strlcpy
    - vtysh_auth
    - vtysh_uninit
    - setlinebuf
    - freopen
    - XFREE
    - vtysh_connect_all
    - frr_init_vtydir
    - fopen
    - vtysh_rl_run
    - vtysh_get_home
    - strerror
    - vtysh_apply_config
    - vtysh_execute_no_pager
    - XMALLOC
    - vtysh_unflock_config
    - usage
    - read_history
    - strrchr
    - close
    - vtysh_execute_command_questionmark
    - history_truncate_file
    - vtysh_init_cmd
    - getegid
    - log_ref_init
    - vtysh_write_config_integrated
    - getgid
    - append_history
    - suid_on
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv, char **env)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: popen
      Src: /src/frr/vtysh/vtysh.c:66,1
    - Dst: perror
      Src: /src/frr/vtysh/vtysh.c:69,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh.c:70,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 76
    functionName: vty_open_pager
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - popen
    - perror
    - exit
    linkageType: ''
    returnType: FILE
    signature: FILE *vty_open_pager(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/frr/vtysh/vtysh.c:83,1
    - Dst: pclose
      Src: /src/frr/vtysh/vtysh.c:84,1
    - Dst: perror
      Src: /src/frr/vtysh/vtysh.c:85,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh.c:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 93
    functionName: vty_close_pager
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - exit
    - fflush
    - perror
    - pclose
    linkageType: ''
    returnType: int
    signature: int vty_close_pager(struct vty *vty)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/frr/vtysh/vtysh.c:99,1
    - Dst: strdup
      Src: /src/frr/vtysh/vtysh.c:102,1
    - Dst: strdup
      Src: /src/frr/vtysh/vtysh.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fallback
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: vtysh_pager_envdef
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strdup
    - getenv
    linkageType: ''
    returnType: void
    signature: void vtysh_pager_envdef(bool fallback)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:143,1
    - Dst: strmatch
      Src: /src/frr/vtysh/vtysh.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 151
    functionName: vtysh_client_lookup
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strmatch
    - array_size
    linkageType: ''
    returnType: int
    signature: int vtysh_client_lookup(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:162,1
    - Dst: close
      Src: /src/frr/vtysh/vtysh.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - vclient
    argTypes:
    - struct vtysh_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 169
    functionName: vclient_close
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vty_out
    - close
    linkageType: ''
    returnType: void
    signature: void vclient_close(struct vtysh_client *vclient)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/frr/vtysh/vtysh.c:181,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:186,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/vtysh/vtysh.c:190,1
    - Dst: CMSG_LEN
      Src: /src/frr/vtysh/vtysh.c:195,1
    - Dst: memset
      Src: /src/frr/vtysh/vtysh.c:196,1
    - Dst: CMSG_DATA
      Src: /src/frr/vtysh/vtysh.c:196,1
    - Dst: recvmsg
      Src: /src/frr/vtysh/vtysh.c:199,1
    - Dst: CMSG_LEN
      Src: /src/frr/vtysh/vtysh.c:204,1
    - Dst: memcpy
      Src: /src/frr/vtysh/vtysh.c:207,1
    - Dst: CMSG_DATA
      Src: /src/frr/vtysh/vtysh.c:207,1
    - Dst: close
      Src: /src/frr/vtysh/vtysh.c:212,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - vclient
    - buf
    - bufsz
    - pass_fd
    argTypes:
    - struct vtysh_client*
    - char*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 216
    functionName: vtysh_client_receive
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - memset
    - CMSG_FIRSTHDR
    - close
    - array_size
    - CMSG_SPACE
    - CMSG_DATA
    - memcpy
    - CMSG_LEN
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t vtysh_client_receive(struct vtysh_client *vclient, char *buf,\n\t\t\t\t
      \   size_t bufsz, int *pass_fd)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_reconnect
      Src: /src/frr/vtysh/vtysh.c:253,1
    - Dst: write
      Src: /src/frr/vtysh/vtysh.c:261,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:261,1
    - Dst: vclient_close
      Src: /src/frr/vtysh/vtysh.c:264,1
    - Dst: vtysh_reconnect
      Src: /src/frr/vtysh/vtysh.c:265,1
    - Dst: write
      Src: /src/frr/vtysh/vtysh.c:269,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:269,1
    - Dst: vtysh_client_receive
      Src: /src/frr/vtysh/vtysh.c:278,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:286,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:288,1
    - Dst: memmem
      Src: /src/frr/vtysh/vtysh.c:306,1
    - Dst: memchr
      Src: /src/frr/vtysh/vtysh.c:318,1
    - Dst: XMALLOC::XMALLOC
      Src: /src/frr/vtysh/vtysh.c:340,1
    - Dst: XREALLOC::XREALLOC
      Src: /src/frr/vtysh/vtysh.c:343,1
    - Dst: assert
      Src: /src/frr/vtysh/vtysh.c:349,1
    - Dst: assert
      Src: /src/frr/vtysh/vtysh.c:358,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:361,1
    - Dst: callback
      Src: /src/frr/vtysh/vtysh.c:363,1
    - Dst: memmove
      Src: /src/frr/vtysh/vtysh.c:366,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:375,1
    - Dst: memmove
      Src: /src/frr/vtysh/vtysh.c:376,1
    - Dst: assert
      Src: /src/frr/vtysh/vtysh.c:388,1
    - Dst: assert
      Src: /src/frr/vtysh/vtysh.c:394,1
    - Dst: memcmp
      Src: /src/frr/vtysh/vtysh.c:394,1
    - Dst: vclient_close
      Src: /src/frr/vtysh/vtysh.c:403,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:407,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 94
    argCount: 4
    argNames:
    - vclient
    - line
    - cbarg
    - pass_fd
    argTypes:
    - struct vtysh_client*
    - char*
    - void*
    - int*
    assertStmts:
    - condition: (end == NULL)
      pos:
        line_end: 348
        line_start: 348
        source_file: /src/frr/vtysh/vtysh.c
    - condition: "(((buf == bufvalid)\n\t\t\t\t|| (bufvalid - buf <= 4 && buf[0] ==
        0x00)))"
      pos:
        line_end: 388
        line_start: 387
        source_file: /src/frr/vtysh/vtysh.c
    - condition: (eol && eol <= bufvalid)
      pos:
        line_end: 357
        line_start: 357
        source_file: /src/frr/vtysh/vtysh.c
    - condition: (!memcmp(buf, terminator, 3))
      pos:
        line_end: 393
        line_start: 393
        source_file: /src/frr/vtysh/vtysh.c
    constantsTouched: []
    func_position:
      end: 409
      start: 240
    functionDepth: 3
    functionLinenumber: 240
    functionLinenumberEnd: 409
    functionName: vtysh_client_run
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strlen
    - vty_out
    - memchr
    - vtysh_client_receive
    - XMALLOC::XMALLOC
    - XREALLOC::XREALLOC
    - callback
    - memcmp
    - memmem
    - memmove
    - vtysh_reconnect
    - safe_strerror
    - XFREE
    - vclient_close
    - write
    - assert
    linkageType: ''
    returnType: int
    signature: "int vtysh_client_run(struct vtysh_client *vclient, const char *line,\n\t\t\t
      \   void (*callback)(void *, const char *), void *cbarg,\n\t\t\t    int *pass_fd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_client_run
      Src: /src/frr/vtysh/vtysh.c:421,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:435,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - head_client
    - line
    - continue_on_err
    - cbarg
    argTypes:
    - struct vtysh_client*
    - char*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 441
    functionName: vtysh_client_run_all
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vty_out
    - vtysh_client_run
    linkageType: ''
    returnType: int
    signature: "int vtysh_client_run_all(struct vtysh_client *head_client,\n\t\t\t\tconst
      char *line, int continue_on_err,\n\t\t\t\tvoid (*callback)(void *, const char
      *),\n\t\t\t\tvoid *cbarg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_client_run_all
      Src: /src/frr/vtysh/vtysh.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - head_client
    - line
    argTypes:
    - struct vtysh_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 455
    functionDepth: 5
    functionLinenumber: 455
    functionLinenumberEnd: 459
    functionName: vtysh_client_execute
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vtysh_client_run_all
    linkageType: ''
    returnType: int
    signature: "int vtysh_client_execute(struct vtysh_client *head_client,\n\t\t\t\tconst
      char *line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_client_lookup
      Src: /src/frr/vtysh/vtysh.c:467,1
    - Dst: vtysh_client_execute
      Src: /src/frr/vtysh/vtysh.c:469,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - name
    - line
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 462
    functionDepth: 6
    functionLinenumber: 462
    functionLinenumberEnd: 476
    functionName: vtysh_client_execute_name
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vtysh_client_execute
    - vty_out
    - vtysh_client_lookup
    linkageType: ''
    returnType: int
    signature: int vtysh_client_execute_name(const char *name, const char *line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_client_run_all
      Src: /src/frr/vtysh/vtysh.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - head_client
    - line
    argTypes:
    - struct vtysh_client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 488
    functionDepth: 5
    functionLinenumber: 488
    functionLinenumberEnd: 503
    functionName: vtysh_client_config
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vtysh_client_run_all
    linkageType: ''
    returnType: void
    signature: void vtysh_client_config(struct vtysh_client *head_client, char *line)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: cmd_make_strvec
      Src: /src/frr/vtysh/vtysh.c:516,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh.c:521,1
    - Dst: frr_timestamp
      Src: /src/frr/vtysh/vtysh.c:524,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:525,1
    - Dst: cmd_execute
      Src: /src/frr/vtysh/vtysh.c:528,1
    - Dst: node_parent
      Src: /src/frr/vtysh/vtysh.c:540,1
    - Dst: cmd_execute
      Src: /src/frr/vtysh/vtysh.c:541,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh.c:554,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:564,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:571,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:574,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:577,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:580,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh.c:588,1
    - Dst: vty_open_pager
      Src: /src/frr/vtysh/vtysh.c:589,1
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh.c:591,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:592,1
    - Dst: vtysh_client_execute
      Src: /src/frr/vtysh/vtysh.c:593,1
    - Dst: cmd_make_strvec
      Src: /src/frr/vtysh/vtysh.c:601,1
    - Dst: vty_close_pager
      Src: /src/frr/vtysh/vtysh.c:606,1
    - Dst: cmd_execute_command
      Src: /src/frr/vtysh/vtysh.c:610,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:611,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:622,1
    - Dst: vtysh_reconnect
      Src: /src/frr/vtysh/vtysh.c:629,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:639,1
    - Dst: vtysh_client_execute
      Src: /src/frr/vtysh/vtysh.c:646,1
    - Dst: vty_close_pager
      Src: /src/frr/vtysh/vtysh.c:660,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 98
    argCount: 2
    argNames:
    - line
    - pager
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 506
    functionDepth: 6
    functionLinenumber: 506
    functionLinenumberEnd: 663
    functionName: vtysh_execute_func
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vty_out
    - cmd_make_strvec
    - vtysh_execute
    - cmd_free_strvec
    - strcmp
    - vty_close_pager
    - vtysh_reconnect
    - strncmp
    - fprintf
    - array_size
    - vty_open_pager
    - vtysh_client_execute
    - cmd_execute
    - cmd_execute_command
    - frr_timestamp
    - node_parent
    linkageType: ''
    returnType: int
    signature: int vtysh_execute_func(const char *line, int pager)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_execute_func
      Src: /src/frr/vtysh/vtysh.c:667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 665
    functionDepth: 7
    functionLinenumber: 665
    functionLinenumberEnd: 668
    functionName: vtysh_execute_no_pager
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - vtysh_execute_func
    linkageType: ''
    returnType: int
    signature: int vtysh_execute_no_pager(const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_execute_func
      Src: /src/frr/vtysh/vtysh.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 670
    functionDepth: 7
    functionLinenumber: 670
    functionLinenumberEnd: 673
    functionName: vtysh_execute
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 4
    functionsReached:
    - vtysh_execute_func
    linkageType: ''
    returnType: int
    signature: int vtysh_execute(const char *line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:680,1
    - Dst: isspace
      Src: /src/frr/vtysh/vtysh.c:686,1
    - Dst: isspace
      Src: /src/frr/vtysh/vtysh.c:690,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 694
    functionName: trim
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strlen
    - isspace
    linkageType: ''
    returnType: char
    signature: char *trim(char *s)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh.c:709,1
    - Dst: fopen
      Src: /src/frr/vtysh/vtysh.c:712,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:715,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:716,1
    - Dst: vty_new
      Src: /src/frr/vtysh/vtysh.c:720,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh.c:725,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh.c:726,1
    - Dst: XCALLOC
      Src: /src/frr/vtysh/vtysh.c:727,1
    - Dst: fgets
      Src: /src/frr/vtysh/vtysh.c:729,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh.c:732,1
    - Dst: trim
      Src: /src/frr/vtysh/vtysh.c:733,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:736,1
    - Dst: cmd_make_strvec
      Src: /src/frr/vtysh/vtysh.c:741,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:744,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:752,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh.c:753,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:754,1
    - Dst: cmd_execute_command_strict
      Src: /src/frr/vtysh/vtysh.c:759,1
    - Dst: node_parent
      Src: /src/frr/vtysh/vtysh.c:770,1
    - Dst: cmd_execute_command_strict
      Src: /src/frr/vtysh/vtysh.c:771,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:783,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:794,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:799,1
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh.c:801,1
    - Dst: vty_close
      Src: /src/frr/vtysh/vtysh.c:802,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:803,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:806,1
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh.c:808,1
    - Dst: vty_close
      Src: /src/frr/vtysh/vtysh.c:809,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:810,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:813,1
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh.c:815,1
    - Dst: vty_close
      Src: /src/frr/vtysh/vtysh.c:816,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:817,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:820,1
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh.c:822,1
    - Dst: vty_close
      Src: /src/frr/vtysh/vtysh.c:823,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:824,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:827,1
    - Dst: strmatch
      Src: /src/frr/vtysh/vtysh.c:828,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:829,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:834,1
    - Dst: strmatch
      Src: /src/frr/vtysh/vtysh.c:835,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:836,1
    - Dst: vtysh_client_execute
      Src: /src/frr/vtysh/vtysh.c:837,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:848,1
    - Dst: vty_close
      Src: /src/frr/vtysh/vtysh.c:849,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:850,1
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh.c:853,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 99
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 696
    functionDepth: 8
    functionLinenumber: 696
    functionLinenumberEnd: 856
    functionName: vtysh_mark_file
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - strlen
    - cmd_free_strvec
    - cmd_execute_command_strict
    - vty_new
    - strncmp
    - vtysh_client_execute
    - strmatch
    - XCALLOC
    - fclose
    - fprintf
    - safe_strerror
    - vty_close
    - vty_out
    - strlcpy
    - trim
    - XFREE
    - fgets
    - fopen
    - cmd_make_strvec
    - vtysh_execute_no_pager
    - node_parent
    linkageType: ''
    returnType: int
    signature: int vtysh_mark_file(const char *filename)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/vtysh/vtysh.c:866,1
    - Dst: fgets
      Src: /src/frr/vtysh/vtysh.c:869,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh.c:872,1
    - Dst: trim
      Src: /src/frr/vtysh/vtysh.c:873,1
    - Dst: strmatch
      Src: /src/frr/vtysh/vtysh.c:880,1
    - Dst: strmatch
      Src: /src/frr/vtysh/vtysh.c:883,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:885,1
    - Dst: command_config_read_one_line
      Src: /src/frr/vtysh/vtysh.c:890,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:896,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:902,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:908,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:913,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:922,1
    - Dst: vtysh_client_execute
      Src: /src/frr/vtysh/vtysh.c:924,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:937,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:956,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 2
    argNames:
    - vty
    - fp
    argTypes:
    - struct vty*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 859
    functionDepth: 6
    functionLinenumber: 859
    functionLinenumberEnd: 959
    functionName: vtysh_config_from_file
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strmatch
    - XCALLOC
    - strlcpy
    - trim
    - fprintf
    - array_size
    - vtysh_client_execute
    - XFREE
    - command_config_read_one_line
    - fgets
    linkageType: ''
    returnType: int
    signature: int vtysh_config_from_file(struct vty *vty, FILE *fp)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: cmd_make_strvec
      Src: /src/frr/vtysh/vtysh.c:975,1
    - Dst: vector_init
      Src: /src/frr/vtysh/vtysh.c:979,1
    - Dst: vector_set
      Src: /src/frr/vtysh/vtysh.c:980,1
    - Dst: isspace
      Src: /src/frr/vtysh/vtysh.c:981,1
    - Dst: vector_set
      Src: /src/frr/vtysh/vtysh.c:982,1
    - Dst: cmd_describe_command
      Src: /src/frr/vtysh/vtysh.c:984,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:989,1
    - Dst: vector_free
      Src: /src/frr/vtysh/vtysh.c:990,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:991,1
    - Dst: rl_on_new_line
      Src: /src/frr/vtysh/vtysh.c:992,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:995,1
    - Dst: vector_free
      Src: /src/frr/vtysh/vtysh.c:997,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:998,1
    - Dst: rl_on_new_line
      Src: /src/frr/vtysh/vtysh.c:999,1
    - Dst: vector_active
      Src: /src/frr/vtysh/vtysh.c:1005,1
    - Dst: vector_slot
      Src: /src/frr/vtysh/vtysh.c:1006,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:1010,1
    - Dst: vector_active
      Src: /src/frr/vtysh/vtysh.c:1016,1
    - Dst: vector_slot
      Src: /src/frr/vtysh/vtysh.c:1017,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:1019,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:1021,1
    - Dst: IS_VARYING_TOKEN
      Src: /src/frr/vtysh/vtysh.c:1024,1
    - Dst: vector_slot
      Src: /src/frr/vtysh/vtysh.c:1025,1
    - Dst: vector_active
      Src: /src/frr/vtysh/vtysh.c:1026,1
    - Dst: vector_init
      Src: /src/frr/vtysh/vtysh.c:1028,1
    - Dst: cmd_variable_complete
      Src: /src/frr/vtysh/vtysh.c:1029,1
    - Dst: vector_active
      Src: /src/frr/vtysh/vtysh.c:1031,1
    - Dst: rl_get_screen_size
      Src: /src/frr/vtysh/vtysh.c:1033,1
    - Dst: cmd_variable_comp2str
      Src: /src/frr/vtysh/vtysh.c:1035,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:1037,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:1038,1
    - Dst: vector_free
      Src: /src/frr/vtysh/vtysh.c:1041,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:1045,1
    - Dst: vector_free
      Src: /src/frr/vtysh/vtysh.c:1046,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 2
    argNames:
    - input
    - input_len
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 965
    functionDepth: 4
    functionLinenumber: 965
    functionLinenumberEnd: 1049
    functionName: vtysh_process_questionmark
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vector_free
    - strlen
    - IS_VARYING_TOKEN
    - cmd_make_strvec
    - vty_out
    - cmd_free_strvec
    - vector_active
    - vector_slot
    - cmd_variable_comp2str
    - vector_set
    - isspace
    - cmd_describe_command
    - rl_get_screen_size
    - XFREE
    - vector_init
    - rl_on_new_line
    - cmd_variable_complete
    linkageType: ''
    returnType: int
    signature: int vtysh_process_questionmark(const char *input, int input_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:1060,1
    - Dst: vtysh_process_questionmark
      Src: /src/frr/vtysh/vtysh.c:1062,1
    - Dst: rl_on_new_line
      Src: /src/frr/vtysh/vtysh.c:1063,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1056
    functionDepth: 5
    functionLinenumber: 1056
    functionLinenumberEnd: 1066
    functionName: vtysh_rl_describe
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - rl_on_new_line
    - vtysh_process_questionmark
    - vty_out
    linkageType: ''
    returnType: int
    signature: int vtysh_rl_describe(int a, int b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_process_questionmark
      Src: /src/frr/vtysh/vtysh.c:1102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1074
    functionDepth: 5
    functionLinenumber: 1074
    functionLinenumberEnd: 1103
    functionName: vtysh_execute_command_questionmark
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - vtysh_process_questionmark
    linkageType: ''
    returnType: int
    signature: int vtysh_execute_command_questionmark(char *input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cmd_make_strvec
      Src: /src/frr/vtysh/vtysh.c:1123,1
    - Dst: isspace
      Src: /src/frr/vtysh/vtysh.c:1128,1
    - Dst: vector_set
      Src: /src/frr/vtysh/vtysh.c:1129,1
    - Dst: cmd_complete_command
      Src: /src/frr/vtysh/vtysh.c:1131,1
    - Dst: cmd_free_strvec
      Src: /src/frr/vtysh/vtysh.c:1132,1
    - Dst: XCOUNTFREE
      Src: /src/frr/vtysh/vtysh.c:1136,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:1140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1110
    functionDepth: 4
    functionLinenumber: 1110
    functionLinenumberEnd: 1143
    functionName: command_generator
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - cmd_complete_command
    - cmd_make_strvec
    - cmd_free_strvec
    - vector_set
    - isspace
    - XFREE
    - XCOUNTFREE
    linkageType: ''
    returnType: char
    signature: char *command_generator(const char *text, int state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rl_completion_matches
      Src: /src/frr/vtysh/vtysh.c:1149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1145
    functionDepth: 0
    functionLinenumber: 1145
    functionLinenumberEnd: 1159
    functionName: new_completion
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - rl_completion_matches
    linkageType: ''
    returnType: char
    signature: char **new_completion(const char *text, int start, int end)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1645
      start: 1633
    functionDepth: 0
    functionLinenumber: 1633
    functionLinenumberEnd: 1645
    functionName: vtysh_end
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int vtysh_end(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vector_lookup
      Src: /src/frr/vtysh/vtysh.c:2347,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh.c:2350,1
    - Dst: struct cmd_node*::node_exit
      Src: /src/frr/vtysh/vtysh.c:2352,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh.c:2358,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh.c:2362,1
    - Dst: vtysh_execute
      Src: /src/frr/vtysh/vtysh.c:2364,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2345
    functionDepth: 8
    functionLinenumber: 2345
    functionLinenumberEnd: 2368
    functionName: vtysh_exit
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vector_lookup
    - exit
    - vtysh_execute
    - struct cmd_node*::node_exit
    linkageType: ''
    returnType: int
    signature: int vtysh_exit(struct vty *vty)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frrstr_join
      Src: /src/frr/vtysh/vtysh.c:2804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - vty
    - argv
    - argc
    argTypes:
    - struct vty*
    - struct cmd_token**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2805
      start: 2791
    functionDepth: 1
    functionLinenumber: 2791
    functionLinenumberEnd: 2805
    functionName: do_prepend
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - frrstr_join
    linkageType: ''
    returnType: char
    signature: char *do_prepend(struct vty *vty, struct cmd_token **argv, int argc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: do_prepend
      Src: /src/frr/vtysh/vtysh.c:2821,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:2823,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:2825,1
    - Dst: vtysh_client_execute
      Src: /src/frr/vtysh/vtysh.c:2826,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:2827,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:2830,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - vty
    - argv
    - argc
    - headline
    argTypes:
    - struct vty*
    - struct cmd_token**
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2833
      start: 2816
    functionDepth: 6
    functionLinenumber: 2816
    functionLinenumberEnd: 2833
    functionName: show_per_daemon
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vty_out
    - do_prepend
    - array_size
    - vtysh_client_execute
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int show_per_daemon(struct vty *vty, struct cmd_token **argv, int
      argc,\n\t\t\t   const char *headline)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_prepend
      Src: /src/frr/vtysh/vtysh.c:2840,1
    - Dst: vtysh_client_execute_name
      Src: /src/frr/vtysh/vtysh.c:2842,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:2844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - vty
    - argv
    - argc
    - name
    argTypes:
    - struct vty*
    - struct cmd_token**
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2847
      start: 2836
    functionDepth: 7
    functionLinenumber: 2836
    functionLinenumberEnd: 2847
    functionName: show_one_daemon
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - do_prepend
    - vtysh_client_execute_name
    - XFREE
    linkageType: ''
    returnType: int
    signature: "int show_one_daemon(struct vty *vty, struct cmd_token **argv, int
      argc,\n\t\t\t   const char *name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:3353,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:3353,1
    - Dst: malloc
      Src: /src/frr/vtysh/vtysh.c:3354,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh.c:3355,1
    - Dst: strlcat
      Src: /src/frr/vtysh/vtysh.c:3356,1
    - Dst: unlink
      Src: /src/frr/vtysh/vtysh.c:3359,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:3360,1
    - Dst: strerror
      Src: /src/frr/vtysh/vtysh.c:3361,1
    - Dst: rename
      Src: /src/frr/vtysh/vtysh.c:3362,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:3363,1
    - Dst: strerror
      Src: /src/frr/vtysh/vtysh.c:3364,1
    - Dst: free
      Src: /src/frr/vtysh/vtysh.c:3365,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - fbackup
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3366
      start: 3349
    functionDepth: 2
    functionLinenumber: 3349
    functionLinenumberEnd: 3366
    functionName: backup_config_file
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strlcat
    - rename
    - strlen
    - unlink
    - vty_out
    - malloc
    - strerror
    - strlcpy
    - free
    linkageType: ''
    returnType: void
    signature: void backup_config_file(const char *fbackup)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:3385,1
    - Dst: backup_config_file
      Src: /src/frr/vtysh/vtysh.c:3387,1
    - Dst: fopen
      Src: /src/frr/vtysh/vtysh.c:3388,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh.c:3390,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3392,1
    - Dst: fileno
      Src: /src/frr/vtysh/vtysh.c:3395,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:3397,1
    - Dst: vtysh_client_config
      Src: /src/frr/vtysh/vtysh.c:3398,1
    - Dst: vtysh_config_write
      Src: /src/frr/vtysh/vtysh.c:3400,1
    - Dst: vtysh_config_dump
      Src: /src/frr/vtysh/vtysh.c:3403,1
    - Dst: fchmod
      Src: /src/frr/vtysh/vtysh.c:3406,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3407,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3408,1
    - Dst: getpwnam
      Src: /src/frr/vtysh/vtysh.c:3413,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3417,1
    - Dst: getgrnam
      Src: /src/frr/vtysh/vtysh.c:3422,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3426,1
    - Dst: fstat
      Src: /src/frr/vtysh/vtysh.c:3432,1
    - Dst: fchown
      Src: /src/frr/vtysh/vtysh.c:3438,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3439,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3440,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3444,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3445,1
    - Dst: fflush
      Src: /src/frr/vtysh/vtysh.c:3449,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3450,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3451,1
    - Dst: fsync
      Src: /src/frr/vtysh/vtysh.c:3455,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3456,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3457,1
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh.c:3461,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3463,1
    - Dst: printf
      Src: /src/frr/vtysh/vtysh.c:3467,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3469
      start: 3368
    functionDepth: 6
    functionLinenumber: 3368
    functionLinenumberEnd: 3469
    functionName: vtysh_write_config_integrated
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - fopen
    - vtysh_config_write
    - fchmod
    - vtysh_config_dump
    - vty_out
    - fstat
    - getgrnam
    - fchown
    - fileno
    - vtysh_client_config
    - fsync
    - fclose
    - backup_config_file
    - safe_strerror
    - array_size
    - fflush
    - printf
    - getpwnam
    linkageType: ''
    returnType: int
    signature: int vtysh_write_config_integrated(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/frr/vtysh/vtysh.c:3501,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3510
      start: 3495
    functionDepth: 0
    functionLinenumber: 3495
    functionLinenumberEnd: 3510
    functionName: want_config_integrated
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: bool
    signature: bool want_config_integrated(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:3719,1
    - Dst: localtime_r
      Src: /src/frr/vtysh/vtysh.c:3724,1
    - Dst: strftime
      Src: /src/frr/vtysh/vtysh.c:3725,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:3728,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:3730,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:3736,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:3752,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:3759,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - vclient
    - hdr
    - text
    argTypes:
    - struct vtysh_client*
    - struct zlog_live_hdr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3761
      start: 3710
    functionDepth: 1
    functionLinenumber: 3710
    functionLinenumberEnd: 3761
    functionName: vtysh_log_print
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strlen
    - localtime_r
    - strftime
    - fprintf
    - array_size
    linkageType: ''
    returnType: void
    signature: "void vtysh_log_print(struct vtysh_client *vclient,\n\t\t\t    struct
      zlog_live_hdr *hdr, const char *text)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/vtysh/vtysh.c:3765,1
    - Dst: event_add_read
      Src: /src/frr/vtysh/vtysh.c:3773,1
    - Dst: recv
      Src: /src/frr/vtysh/vtysh.c:3776,1
    - Dst: ERRNO_IO_RETRY
      Src: /src/frr/vtysh/vtysh.c:3778,1
    - Dst: rl_clear_visible_line
      Src: /src/frr/vtysh/vtysh.c:3783,1
    - Dst: puts
      Src: /src/frr/vtysh/vtysh.c:3785,1
    - Dst: fflush
      Src: /src/frr/vtysh/vtysh.c:3787,1
    - Dst: snprintfrr
      Src: /src/frr/vtysh/vtysh.c:3796,1
    - Dst: snprintfrr
      Src: /src/frr/vtysh/vtysh.c:3799,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:3802,1
    - Dst: EVENT_OFF
      Src: /src/frr/vtysh/vtysh.c:3804,1
    - Dst: close
      Src: /src/frr/vtysh/vtysh.c:3805,1
    - Dst: clock_gettime
      Src: /src/frr/vtysh/vtysh.c:3808,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:3820,1
    - Dst: vtysh_log_print
      Src: /src/frr/vtysh/vtysh.c:3827,1
    - Dst: rl_forced_update_display
      Src: /src/frr/vtysh/vtysh.c:3830,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3833
      start: 3763
    functionDepth: 7
    functionLinenumber: 3763
    functionLinenumberEnd: 3833
    functionName: vtysh_log_read
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strlen
    - vtysh_log_print
    - rl_forced_update_display
    - snprintfrr
    - rl_clear_visible_line
    - close
    - clock_gettime
    - ERRNO_IO_RETRY
    - fprintf
    - EVENT_OFF
    - fflush
    - EVENT_ARG
    - event_add_read
    - recv
    - puts
    linkageType: ''
    returnType: void
    signature: void vtysh_log_read(struct event *thread)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/frr/vtysh/vtysh.c:3951,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:3955,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3955,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh.c:3956,1
    - Dst: execlp
      Src: /src/frr/vtysh/vtysh.c:3961,1
    - Dst: execlp
      Src: /src/frr/vtysh/vtysh.c:3964,1
    - Dst: execlp
      Src: /src/frr/vtysh/vtysh.c:3967,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:3973,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:3974,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh.c:3975,1
    - Dst: wait4
      Src: /src/frr/vtysh/vtysh.c:3979,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - command
    - argc
    - arg1
    - arg2
    argTypes:
    - char*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3982
      start: 3944
    functionDepth: 1
    functionLinenumber: 3944
    functionLinenumberEnd: 3982
    functionName: execute_command
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 4
    functionsReached:
    - exit
    - execlp
    - wait4
    - fprintf
    - safe_strerror
    - fork
    linkageType: ''
    returnType: void
    signature: "void execute_command(const char *command, int argc, const char *arg1,\n\t\t\t
      \   const char *arg2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _install_element
      Src: /src/frr/vtysh/vtysh.c:4194,1
    - Dst: _install_element
      Src: /src/frr/vtysh/vtysh.c:4195,1
    - Dst: _install_element
      Src: /src/frr/vtysh/vtysh.c:4196,1
    - Dst: _install_element
      Src: /src/frr/vtysh/vtysh.c:4197,1
    - Dst: _install_element
      Src: /src/frr/vtysh/vtysh.c:4198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - enum node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4199
      start: 4192
    functionDepth: 5
    functionLinenumber: 4192
    functionLinenumberEnd: 4199
    functionName: vtysh_install_default
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - _install_element
    linkageType: ''
    returnType: void
    signature: void vtysh_install_default(enum node_type node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh.c:4211,1
    - Dst: stat
      Src: /src/frr/vtysh/vtysh.c:4216,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4218,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:4219,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh.c:4220,1
    - Dst: S_ISSOCK
      Src: /src/frr/vtysh/vtysh.c:4224,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4225,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh.c:4227,1
    - Dst: socket
      Src: /src/frr/vtysh/vtysh.c:4231,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4234,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:4235,1
    - Dst: memset
      Src: /src/frr/vtysh/vtysh.c:4240,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh.c:4242,1
    - Dst: SUN_LEN
      Src: /src/frr/vtysh/vtysh.c:4244,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:4246,1
    - Dst: connect
      Src: /src/frr/vtysh/vtysh.c:4249,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4252,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh.c:4253,1
    - Dst: close
      Src: /src/frr/vtysh/vtysh.c:4255,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - vclient
    argTypes:
    - struct vtysh_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4261
      start: 4202
    functionDepth: 1
    functionLinenumber: 4202
    functionLinenumberEnd: 4261
    functionName: vtysh_connect
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - exit
    - strlen
    - snprintf
    - memset
    - connect
    - socket
    - strlcpy
    - close
    - SUN_LEN
    - fprintf
    - safe_strerror
    - S_ISSOCK
    - stat
    linkageType: ''
    returnType: int
    signature: int vtysh_connect(struct vtysh_client *vclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4267,1
    - Dst: vtysh_connect
      Src: /src/frr/vtysh/vtysh.c:4268,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4270,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4273,1
    - Dst: vtysh_client_execute
      Src: /src/frr/vtysh/vtysh.c:4274,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh.c:4276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - vclient
    argTypes:
    - struct vtysh_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4277
      start: 4263
    functionDepth: 8
    functionLinenumber: 4263
    functionLinenumberEnd: 4277
    functionName: vtysh_reconnect
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 2
    functionsReached:
    - vtysh_connect
    - fprintf
    - vtysh_execute_no_pager
    - vtysh_client_execute
    linkageType: ''
    returnType: int
    signature: int vtysh_reconnect(struct vtysh_client *vclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:4284,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh.c:4285,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh.c:4288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - str
    - suffix
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4289
      start: 4280
    functionDepth: 0
    functionLinenumber: 4280
    functionLinenumberEnd: 4289
    functionName: ends_with
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncmp
    linkageType: ''
    returnType: int
    signature: int ends_with(const char *str, const char *suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh.c:4299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - head_client
    - client
    argTypes:
    - struct vtysh_client*
    - struct vtysh_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4307
      start: 4291
    functionDepth: 0
    functionLinenumber: 4291
    functionLinenumberEnd: 4307
    functionName: vtysh_client_sorted_insert
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void vtysh_client_sorted_insert(struct vtysh_client *head_client,\n\t\t\t\t
      \      struct vtysh_client *client)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/frr/vtysh/vtysh.c:4322,1
    - Dst: readdir
      Src: /src/frr/vtysh/vtysh.c:4324,1
    - Dst: frrstr_startswith
      Src: /src/frr/vtysh/vtysh.c:4325,1
    - Dst: ends_with
      Src: /src/frr/vtysh/vtysh.c:4326,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4328,1
    - Dst: malloc
      Src: /src/frr/vtysh/vtysh.c:4333,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh.c:4338,1
    - Dst: vtysh_client_sorted_insert
      Src: /src/frr/vtysh/vtysh.c:4341,1
    - Dst: closedir
      Src: /src/frr/vtysh/vtysh.c:4345,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - head_client
    argTypes:
    - struct vtysh_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4347
      start: 4311
    functionDepth: 1
    functionLinenumber: 4311
    functionLinenumberEnd: 4347
    functionName: vtysh_update_all_instances
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - snprintf
    - frrstr_startswith
    - malloc
    - vtysh_client_sorted_insert
    - readdir
    - fprintf
    - closedir
    - opendir
    - ends_with
    linkageType: ''
    returnType: void
    signature: void vtysh_update_all_instances(struct vtysh_client *head_client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vtysh_update_all_instances
      Src: /src/frr/vtysh/vtysh.c:4354,1
    - Dst: vtysh_connect
      Src: /src/frr/vtysh/vtysh.c:4358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - head_client
    argTypes:
    - struct vtysh_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4364
      start: 4349
    functionDepth: 2
    functionLinenumber: 4349
    functionLinenumberEnd: 4364
    functionName: vtysh_connect_all_instances
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vtysh_connect
    - vtysh_update_all_instances
    linkageType: ''
    returnType: int
    signature: int vtysh_connect_all_instances(struct vtysh_client *head_client)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:4372,1
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh.c:4374,1
    - Dst: vtysh_connect
      Src: /src/frr/vtysh/vtysh.c:4376,1
    - Dst: vtysh_connect_all_instances
      Src: /src/frr/vtysh/vtysh.c:4379,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh.c:4383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - daemon_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4386
      start: 4366
    functionDepth: 3
    functionLinenumber: 4366
    functionLinenumberEnd: 4386
    functionName: vtysh_connect_all
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - vtysh_connect
    - strcmp
    - fprintf
    - array_size
    - vtysh_connect_all_instances
    linkageType: ''
    returnType: int
    signature: int vtysh_connect_all(const char *daemon_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ignore
    - invoking_key
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4393
      start: 4389
    functionDepth: 0
    functionLinenumber: 4389
    functionLinenumberEnd: 4393
    functionName: vtysh_completion_entry_function
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char *vtysh_completion_entry_function(const char *ignore,\n\t\t\t\t\t
      \    int invoking_key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XSTRDUP
      Src: /src/frr/vtysh/vtysh.c:4399,1
    - Dst: rl_initialize
      Src: /src/frr/vtysh/vtysh.c:4401,1
    - Dst: rl_parse_and_bind
      Src: /src/frr/vtysh/vtysh.c:4402,1
    - Dst: rl_bind_key
      Src: /src/frr/vtysh/vtysh.c:4403,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh.c:4407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4408
      start: 4395
    functionDepth: 1
    functionLinenumber: 4395
    functionLinenumberEnd: 4408
    functionName: vtysh_readline_init
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - rl_bind_key
    - rl_parse_and_bind
    - XSTRDUP
    - XFREE
    - rl_initialize
    linkageType: ''
    returnType: void
    signature: void vtysh_readline_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh.c:4417,1
    - Dst: cmd_prompt
      Src: /src/frr/vtysh/vtysh.c:4417,1
    - Dst: cmd_hostname_get
      Src: /src/frr/vtysh/vtysh.c:4417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4420
      start: 4410
    functionDepth: 2
    functionLinenumber: 4410
    functionLinenumberEnd: 4420
    functionName: vtysh_prompt
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 4
    functionsReached:
    - cmd_hostname_get
    - snprintf
    - cmd_prompt
    linkageType: ''
    returnType: char
    signature: char *vtysh_prompt(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/vtysh/vtysh.c:4426,1
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh.c:4427,1
    - Dst: vector_slot
      Src: /src/frr/vtysh/vtysh.c:4427,1
    - Dst: vector_set
      Src: /src/frr/vtysh/vtysh.c:4429,1
    - Dst: XSTRDUP
      Src: /src/frr/vtysh/vtysh.c:4429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - arg
    - line
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4430
      start: 4422
    functionDepth: 3
    functionLinenumber: 4422
    functionLinenumberEnd: 4430
    functionName: vtysh_ac_line
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vector_active
    - strcmp
    - vector_slot
    - vector_set
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void vtysh_ac_line(void *arg, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh.c:4437,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:4442,1
    - Dst: vtysh_client_run_all
      Src: /src/frr/vtysh/vtysh.c:4443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4446
      start: 4432
    functionDepth: 5
    functionLinenumber: 4432
    functionLinenumberEnd: 4446
    functionName: vtysh_autocomplete
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 0
    functionsReached:
    - vtysh_client_run_all
    - array_size
    - snprintf
    linkageType: ''
    returnType: void
    signature: void vtysh_autocomplete(vector comps, struct cmd_token *token)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh.c:4458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4459
      start: 4455
    functionDepth: 0
    functionLinenumber: 4455
    functionLinenumberEnd: 4459
    functionName: vtysh_uninit
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void vtysh_uninit(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cmd_defer_tree
      Src: /src/frr/vtysh/vtysh.c:4465,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh.c:4467,1
    - Dst: isatty
      Src: /src/frr/vtysh/vtysh.c:4472,1
    - Dst: fstat
      Src: /src/frr/vtysh/vtysh.c:4474,1
    - Dst: fstat
      Src: /src/frr/vtysh/vtysh.c:4474,1
    - Dst: vty_new
      Src: /src/frr/vtysh/vtysh.c:4479,1
    - Dst: vtysh_pager_envdef
      Src: /src/frr/vtysh/vtysh.c:4485,1
    - Dst: cmd_init
      Src: /src/frr/vtysh/vtysh.c:4488,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/vtysh/vtysh.c:4489,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4493,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4494,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4495,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4496,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4497,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4499,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4500,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4502,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4504,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4505,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4506,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4507,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4509,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4510,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4512,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4514,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4515,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4516,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4517,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4519,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4520,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4521,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4522,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4523,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4524,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4526,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4527,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4528,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4529,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4530,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4531,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4533,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4534,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4535,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4536,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4537,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4538,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4540,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4541,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4542,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4543,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4544,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4545,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4547,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4548,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4549,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4550,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4551,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4552,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4554,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4555,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4556,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4557,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4558,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4559,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4561,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4562,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4563,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4564,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4565,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4566,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4568,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4569,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4570,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4571,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4572,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4573,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4576,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4577,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4578,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4579,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4580,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4581,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4583,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4584,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4585,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4586,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4587,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4588,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4590,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4591,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4592,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4593,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4594,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4595,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4597,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4598,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4599,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4600,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4601,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4602,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4605,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4606,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4607,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4608,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4609,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4610,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4612,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4613,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4614,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4615,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4616,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4617,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4619,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4620,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4621,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4622,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4623,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4625,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4626,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4627,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4628,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4629,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4631,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4632,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4633,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4634,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4635,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4639,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4641,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4642,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4643,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4644,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4648,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4650,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4651,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4652,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4653,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4658,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4659,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4660,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4661,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4662,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4667,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4668,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4669,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4670,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4671,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4676,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4677,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4678,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4679,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4680,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4682,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4683,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4684,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4685,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4686,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4687,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4689,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4690,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4691,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4692,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4693,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4694,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4696,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4697,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4698,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4699,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4700,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4702,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4703,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4704,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4705,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4706,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4708,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4709,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4710,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4711,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4712,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4714,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4715,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4716,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4717,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4718,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4723,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4724,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4725,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4726,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4727,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4732,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4733,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4734,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4735,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4736,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4741,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4742,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4743,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4744,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4745,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4747,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4748,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4749,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4750,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4751,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4756,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4757,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4758,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4759,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4760,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4765,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4766,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4767,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4768,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4769,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4770,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4775,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4776,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4777,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4778,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4779,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4781,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4782,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4783,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4784,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4785,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4787,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4788,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4789,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4790,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4791,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4794,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4795,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4796,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4797,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4798,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4801,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4802,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4803,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4804,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4806,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4807,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4808,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4809,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4810,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4811,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4812,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4813,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4816,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4817,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4818,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4819,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4821,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4822,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4823,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4824,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4826,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4827,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4828,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4829,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4831,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4832,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4833,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4834,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4835,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4836,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4837,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4838,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4840,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4841,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4842,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4843,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4845,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4846,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4847,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4848,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4853,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4854,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4855,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4856,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4857,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4858,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4860,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4861,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4862,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4863,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4864,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4865,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4868,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4869,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4870,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4871,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4872,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4873,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4876,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4878,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4879,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4880,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4881,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4882,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4884,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4885,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4886,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4887,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4888,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4889,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4891,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4892,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4893,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4894,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4895,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4897,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4898,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4899,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4900,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4901,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4902,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4904,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4905,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4907,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4908,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4909,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4910,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4911,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4913,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4914,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4915,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4916,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4917,1
    - Dst: vector_active
      Src: /src/frr/vtysh/vtysh.c:4921,1
    - Dst: vector_slot
      Src: /src/frr/vtysh/vtysh.c:4922,1
    - Dst: vtysh_install_default
      Src: /src/frr/vtysh/vtysh.c:4925,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4931,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4932,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4933,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4936,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4937,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4938,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4939,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4942,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4943,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4946,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4947,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4948,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4949,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4950,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4952,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4953,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4954,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4955,1
    - Dst: install_node
      Src: /src/frr/vtysh/vtysh.c:4957,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4958,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4959,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4961,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4962,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4963,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4966,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4968,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4969,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4972,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4974,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4975,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4977,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4978,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4979,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4980,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4981,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4983,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4984,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4986,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4987,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4988,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4989,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4990,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4991,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4992,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4993,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4995,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4996,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:4997,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5000,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5001,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5002,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5006,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5007,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5008,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5009,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5010,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5011,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5012,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5013,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5014,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5017,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5018,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5019,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5020,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5021,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5022,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5025,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5026,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5027,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5028,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5029,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5030,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5031,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5032,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5035,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5037,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5038,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5040,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5041,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5043,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5044,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5045,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh.c:5046,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 425
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5047
      start: 4461
    functionDepth: 7
    functionLinenumber: 4461
    functionLinenumberEnd: 5047
    functionName: vtysh_init_vty
    functionSourceFile: /src/frr/vtysh/vtysh.c
    functionUses: 1
    functionsReached:
    - install_node
    - fstat
    - isatty
    - cmd_init
    - vector_active
    - vector_slot
    - cmd_defer_tree
    - vtysh_install_default
    - vty_new
    - array_size
    - vtysh_pager_envdef
    - install_element
    - cmd_variable_handler_register
    linkageType: ''
    returnType: void
    signature: void vtysh_init_vty(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pam_start
      Src: /src/frr/vtysh/vtysh_user.c:49,1
    - Dst: pam_authenticate
      Src: /src/frr/vtysh/vtysh_user.c:53,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_user.c:56,1
    - Dst: pam_strerror
      Src: /src/frr/vtysh/vtysh_user.c:57,1
    - Dst: pam_acct_mgmt
      Src: /src/frr/vtysh/vtysh_user.c:59,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_user.c:61,1
    - Dst: pam_strerror
      Src: /src/frr/vtysh/vtysh_user.c:62,1
    - Dst: pam_end
      Src: /src/frr/vtysh/vtysh_user.c:65,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_user.c:68,1
    - Dst: pam_strerror
      Src: /src/frr/vtysh/vtysh_user.c:70,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_user.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - user
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 75
    functionName: vtysh_pam
    functionSourceFile: /src/frr/vtysh/vtysh_user.c
    functionUses: 0
    functionsReached:
    - exit
    - fprintf
    - pam_acct_mgmt
    - pam_end
    - pam_start
    - pam_authenticate
    - pam_strerror
    linkageType: ''
    returnType: int
    signature: int vtysh_pam(const char *user)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/vtysh/vtysh_user.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: user_new
    functionSourceFile: /src/frr/vtysh/vtysh_user.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct vtysh_user
    signature: struct vtysh_user *user_new(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/vtysh/vtysh_user.c:95,1
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh_user.c:96,1
    - Dst: user_config_write
      Src: /src/frr/vtysh/vtysh_user.c:102,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/vtysh/vtysh_user.c:108,1
    - Dst: if
      Src: /src/frr/vtysh/vtysh_user.c:109,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_user.c:110,1
    - Dst: config_add_line
      Src: /src/frr/vtysh/vtysh_user.c:112,1
    - Dst: user_get
      Src: /src/frr/vtysh/vtysh_user.c:117,1
    - Dst: user_new
      Src: /src/frr/vtysh/vtysh_user.c:124,1
    - Dst: strdup
      Src: /src/frr/vtysh/vtysh_user.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 129
    functionName: user_lookup
    functionSourceFile: /src/frr/vtysh/vtysh_user.c
    functionUses: 0
    functionsReached:
    - config_add_line
    - user_new
    - snprintf
    - strcmp
    - user_config_write
    - strdup
    - user_get
    - if
    - ALL_LIST_ELEMENTS
    linkageType: ''
    returnType: struct vtysh_user
    signature: struct vtysh_user *user_lookup(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getpwuid
      Src: /src/frr/vtysh/vtysh_user.c:182,1
    - Dst: geteuid
      Src: /src/frr/vtysh/vtysh_user.c:182,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_user.c:183,1
    - Dst: geteuid
      Src: /src/frr/vtysh/vtysh_user.c:184,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_user.c:185,1
    - Dst: user_lookup
      Src: /src/frr/vtysh/vtysh_user.c:188,1
    - Dst: vtysh_pam
      Src: /src/frr/vtysh/vtysh_user.c:193,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_user.c:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 198
    functionName: vtysh_auth
    functionSourceFile: /src/frr/vtysh/vtysh_user.c
    functionUses: 1
    functionsReached:
    - exit
    - geteuid
    - fprintf
    - user_lookup
    - getpwuid
    - vtysh_pam
    linkageType: ''
    returnType: int
    signature: int vtysh_auth(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/frr/vtysh/vtysh_user.c:205,1
    - Dst: getpwuid
      Src: /src/frr/vtysh/vtysh_user.c:209,1
    - Dst: getuid
      Src: /src/frr/vtysh/vtysh_user.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 212
    functionName: vtysh_get_home
    functionSourceFile: /src/frr/vtysh/vtysh_user.c
    functionUses: 1
    functionsReached:
    - getuid
    - getpwuid
    - getenv
    linkageType: ''
    returnType: char
    signature: char *vtysh_get_home(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/vtysh/vtysh_user.c:216,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh_user.c:217,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh_user.c:218,1
    - Dst: install_element
      Src: /src/frr/vtysh/vtysh_user.c:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 220
    functionName: vtysh_user_init
    functionSourceFile: /src/frr/vtysh/vtysh_user.c
    functionUses: 1
    functionsReached:
    - install_element
    - list_new
    linkageType: ''
    returnType: void
    signature: void vtysh_user_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh_config.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: line_cmp
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int line_cmp(char *c1, char *c2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_config.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: line_del
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void line_del(char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/vtysh/vtysh_config.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: config_new
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 8
    functionsReached:
    - XCALLOC
    linkageType: ''
    returnType: struct config
    signature: struct config *config_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector_free
      Src: /src/frr/vtysh/vtysh_config.c:69,1
    - Dst: list_delete
      Src: /src/frr/vtysh/vtysh_config.c:70,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_config.c:72,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_config.c:73,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_config.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: config_del
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - vector_free
    - list_delete
    - XFREE
    linkageType: ''
    returnType: void
    signature: void config_del(struct config *config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh_config.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - struct config*
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: config_cmp
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int config_cmp(const struct config *c1, const struct config *c2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_hash_make
      Src: /src/frr/vtysh/vtysh_config.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: config_hash
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - string_hash_make
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t config_hash(const struct config *c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector_lookup_ensure
      Src: /src/frr/vtysh/vtysh_config.c:108,1
    - Dst: XMALLOC
      Src: /src/frr/vtysh/vtysh_config.c:111,1
    - Dst: config_master_init
      Src: /src/frr/vtysh/vtysh_config.c:113,1
    - Dst: config_master_hash_init
      Src: /src/frr/vtysh/vtysh_config.c:114,1
    - Dst: vector_set_index
      Src: /src/frr/vtysh/vtysh_config.c:115,1
    - Dst: config_master_hash_find
      Src: /src/frr/vtysh/vtysh_config.c:119,1
    - Dst: config_new
      Src: /src/frr/vtysh/vtysh_config.c:122,1
    - Dst: list_new
      Src: /src/frr/vtysh/vtysh_config.c:123,1
    - Dst: XSTRDUP
      Src: /src/frr/vtysh/vtysh_config.c:126,1
    - Dst: vector_init
      Src: /src/frr/vtysh/vtysh_config.c:129,1
    - Dst: config_master_add_tail
      Src: /src/frr/vtysh/vtysh_config.c:130,1
    - Dst: config_master_hash_add
      Src: /src/frr/vtysh/vtysh_config.c:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - vec
    - index
    - line
    argTypes:
    - vector
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 134
    functionName: config_get_vec
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - vector_lookup_ensure
    - config_master_add_tail
    - config_master_hash_add
    - config_master_init
    - config_new
    - XMALLOC
    - vector_set_index
    - list_new
    - config_master_hash_init
    - vector_init
    - config_master_hash_find
    - XSTRDUP
    linkageType: ''
    returnType: struct config
    signature: struct config *config_get_vec(vector vec, int index, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_get_vec
      Src: /src/frr/vtysh/vtysh_config.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - index
    - line
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 4
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: config_get
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 2
    functionsReached:
    - config_get_vec
    linkageType: ''
    returnType: struct config
    signature: struct config *config_get(int index, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_get_vec
      Src: /src/frr/vtysh/vtysh_config.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - parent
    - index
    - line
    argTypes:
    - struct config*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 150
    functionName: config_get_nested
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - config_get_vec
    linkageType: ''
    returnType: struct config
    signature: "struct config *config_get_nested(struct config *parent, int index,\n\t\t\t\t\tconst
      char *line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add
      Src: /src/frr/vtysh/vtysh_config.c:154,1
    - Dst: XSTRDUP
      Src: /src/frr/vtysh/vtysh_config.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - config
    - line
    argTypes:
    - struct list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: config_add_line
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 1
    functionsReached:
    - XSTRDUP
    - listnode_add
    linkageType: ''
    returnType: void
    signature: void config_add_line(struct list *config, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/vtysh/vtysh_config.c:162,1
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh_config.c:163,1
    - Dst: listnode_add_sort
      Src: /src/frr/vtysh/vtysh_config.c:166,1
    - Dst: XSTRDUP
      Src: /src/frr/vtysh/vtysh_config.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - config
    - line
    argTypes:
    - struct list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 167
    functionName: config_add_line_uniq
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS
    - strcmp
    - XSTRDUP
    - listnode_add_sort
    linkageType: ''
    returnType: void
    signature: void config_add_line_uniq(struct list *config, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALL_LIST_ELEMENTS_RO
      Src: /src/frr/vtysh/vtysh_config.c:239,1
    - Dst: strcmp
      Src: /src/frr/vtysh/vtysh_config.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - config
    - line
    argTypes:
    - struct list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 242
    functionName: config_add_line_uniq_end
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - ALL_LIST_ELEMENTS_RO
    - strcmp
    linkageType: ''
    returnType: void
    signature: void config_add_line_uniq_end(struct list *config, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listnode_add_head
      Src: /src/frr/vtysh/vtysh_config.c:252,1
    - Dst: XSTRDUP
      Src: /src/frr/vtysh/vtysh_config.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - config
    - line
    argTypes:
    - struct list*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: config_add_line_head
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - XSTRDUP
    - listnode_add_head
    linkageType: ''
    returnType: void
    signature: void config_add_line_head(struct list *config, const char *line)
  - BBCount: 71
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:279,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:279,1
    - Dst: config_get_nested
      Src: /src/frr/vtysh/vtysh_config.c:280,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:283,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:283,1
    - Dst: config_add_line_uniq_end
      Src: /src/frr/vtysh/vtysh_config.c:285,1
    - Dst: config_add_line_uniq
      Src: /src/frr/vtysh/vtysh_config.c:289,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:292,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:293,1
    - Dst: config_add_line
      Src: /src/frr/vtysh/vtysh_config.c:295,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:297,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:298,1
    - Dst: config_add_line_uniq_end
      Src: /src/frr/vtysh/vtysh_config.c:300,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:301,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:302,1
    - Dst: config_add_line_uniq_end
      Src: /src/frr/vtysh/vtysh_config.c:304,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:306,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:307,1
    - Dst: config_add_line
      Src: /src/frr/vtysh/vtysh_config.c:309,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:311,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:311,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:312,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:313,1
    - Dst: config_add_line
      Src: /src/frr/vtysh/vtysh_config.c:314,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:315,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:316,1
    - Dst: config_add_line_uniq_end
      Src: /src/frr/vtysh/vtysh_config.c:317,1
    - Dst: config_add_line_uniq
      Src: /src/frr/vtysh/vtysh_config.c:321,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:323,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:324,1
    - Dst: config_add_line_head
      Src: /src/frr/vtysh/vtysh_config.c:325,1
    - Dst: config_add_line_uniq_end
      Src: /src/frr/vtysh/vtysh_config.c:328,1
    - Dst: config_add_line
      Src: /src/frr/vtysh/vtysh_config.c:331,1
    - Dst: config_add_line
      Src: /src/frr/vtysh/vtysh_config.c:333,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:336,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:336,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_config.c:339,1
    - Dst: XSTRDUP
      Src: /src/frr/vtysh/vtysh_config.c:342,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:344,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:344,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:345,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:346,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:346,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:347,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:348,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:348,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:349,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:350,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:350,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:352,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:353,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:353,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:354,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:355,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:355,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:356,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:357,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:357,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:359,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:360,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:360,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:362,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:363,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:363,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:365,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:366,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:366,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:368,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:369,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:369,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:371,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:372,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:372,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:373,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:374,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:374,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:375,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:376,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:376,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:377,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:378,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:378,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:380,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:381,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:381,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:383,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:384,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:385,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:386,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:387,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:387,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:388,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:389,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:389,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:391,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:392,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:392,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:393,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:394,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:394,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:396,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:397,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:398,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:400,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:401,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:402,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:404,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:405,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:406,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:408,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:409,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:410,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:412,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:413,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:414,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:416,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:417,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:418,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:420,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:421,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:423,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:424,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:426,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:427,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:428,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:429,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:430,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:430,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:431,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:432,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:432,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:433,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:434,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:434,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:435,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:436,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:436,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:437,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:438,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:439,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:441,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:442,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:444,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:445,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:445,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:446,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:447,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:448,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:450,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:451,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:452,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:454,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:455,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:456,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:457,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:458,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:458,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:459,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:460,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:460,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:461,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:462,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:464,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:465,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:465,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:467,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:468,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:468,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:470,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:471,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:471,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:472,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:473,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:473,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:474,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:475,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:475,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:476,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:477,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:478,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:480,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:481,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:481,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:482,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:483,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:483,1
    - Dst: config_get
      Src: /src/frr/vtysh/vtysh_config.c:484,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:486,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:486,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:487,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:487,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:488,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:488,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:490,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:491,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:492,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:492,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:493,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:493,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:494,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:494,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:495,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:496,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:497,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:498,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:499,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:499,1
    - Dst: strncmp
      Src: /src/frr/vtysh/vtysh_config.c:500,1
    - Dst: strlen
      Src: /src/frr/vtysh/vtysh_config.c:501,1
    - Dst: config_add_line_uniq
      Src: /src/frr/vtysh/vtysh_config.c:502,1
    - Dst: config_add_line
      Src: /src/frr/vtysh/vtysh_config.c:504,1
    CyclomaticComplexity: 89
    EdgeCount: 89
    ICount: 163
    argCount: 2
    argNames:
    - arg
    - line
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 255
    functionDepth: 5
    functionLinenumber: 255
    functionLinenumberEnd: 509
    functionName: vtysh_config_parse_line
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached:
    - config_add_line
    - strlen
    - config_get
    - config_add_line_uniq_end
    - strncmp
    - config_get_nested
    - config_add_line_uniq
    - config_add_line_head
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void vtysh_config_parse_line(void *arg, const char *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - I
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 523
    functionName: NO_DELIMITER
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NO_DELIMITER(I)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vector_active
      Src: /src/frr/vtysh/vtysh_config.c:532,1
    - Dst: vector_slot
      Src: /src/frr/vtysh/vtysh_config.c:533,1
    - Dst: config_master_pop
      Src: /src/frr/vtysh/vtysh_config.c:534,1
    - Dst: config_master_hash_del
      Src: /src/frr/vtysh/vtysh_config.c:536,1
    - Dst: listcount
      Src: /src/frr/vtysh/vtysh_config.c:547,1
    - Dst: listnode_head
      Src: /src/frr/vtysh/vtysh_config.c:548,1
    - Dst: strmatch
      Src: /src/frr/vtysh/vtysh_config.c:549,1
    - Dst: config_del
      Src: /src/frr/vtysh/vtysh_config.c:550,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh_config.c:554,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/vtysh/vtysh_config.c:556,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh_config.c:558,1
    - Dst: configvec_dump
      Src: /src/frr/vtysh/vtysh_config.c:560,1
    - Dst: if
      Src: /src/frr/vtysh/vtysh_config.c:562,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh_config.c:563,1
    - Dst: NO_DELIMITER
      Src: /src/frr/vtysh/vtysh_config.c:565,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh_config.c:566,1
    - Dst: config_del
      Src: /src/frr/vtysh/vtysh_config.c:568,1
    - Dst: config_master_fini
      Src: /src/frr/vtysh/vtysh_config.c:570,1
    - Dst: config_master_hash_fini
      Src: /src/frr/vtysh/vtysh_config.c:571,1
    - Dst: XFREE
      Src: /src/frr/vtysh/vtysh_config.c:572,1
    - Dst: vector_slot
      Src: /src/frr/vtysh/vtysh_config.c:573,1
    - Dst: NO_DELIMITER
      Src: /src/frr/vtysh/vtysh_config.c:574,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh_config.c:575,1
    - Dst: vtysh_config_dump
      Src: /src/frr/vtysh/vtysh_config.c:579,1
    - Dst: ALL_LIST_ELEMENTS
      Src: /src/frr/vtysh/vtysh_config.c:584,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh_config.c:585,1
    - Dst: list_delete_all_node
      Src: /src/frr/vtysh/vtysh_config.c:587,1
    - Dst: vty_out
      Src: /src/frr/vtysh/vtysh_config.c:589,1
    - Dst: configvec_dump
      Src: /src/frr/vtysh/vtysh_config.c:591,1
    - Dst: vty_new
      Src: /src/frr/vtysh/vtysh_config.c:600,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_config.c:605,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_config.c:606,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_config.c:610,1
    - Dst: vtysh_config_from_file
      Src: /src/frr/vtysh/vtysh_config.c:613,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_config.c:616,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_config.c:618,1
    - Dst: vtysh_execute_no_pager
      Src: /src/frr/vtysh/vtysh_config.c:620,1
    - Dst: vty_close
      Src: /src/frr/vtysh/vtysh_config.c:622,1
    - Dst: vtysh_read_config
      Src: /src/frr/vtysh/vtysh_config.c:630,1
    - Dst: fopen
      Src: /src/frr/vtysh/vtysh_config.c:636,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_config.c:638,1
    - Dst: safe_strerror
      Src: /src/frr/vtysh/vtysh_config.c:640,1
    - Dst: vtysh_read_file
      Src: /src/frr/vtysh/vtysh_config.c:647,1
    - Dst: fclose
      Src: /src/frr/vtysh/vtysh_config.c:648,1
    - Dst: vtysh_apply_config
      Src: /src/frr/vtysh/vtysh_config.c:655,1
    - Dst: getpid
      Src: /src/frr/vtysh/vtysh_config.c:662,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh_config.c:669,1
    - Dst: strlcpy
      Src: /src/frr/vtysh/vtysh_config.c:671,1
    - Dst: fork
      Src: /src/frr/vtysh/vtysh_config.c:674,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_config.c:685,1
    - Dst: wait
      Src: /src/frr/vtysh/vtysh_config.c:687,1
    - Dst: WEXITSTATUS
      Src: /src/frr/vtysh/vtysh_config.c:688,1
    - Dst: WEXITSTATUS
      Src: /src/frr/vtysh/vtysh_config.c:689,1
    - Dst: array_size
      Src: /src/frr/vtysh/vtysh_config.c:703,1
    - Dst: close
      Src: /src/frr/vtysh/vtysh_config.c:713,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_config.c:724,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_config.c:728,1
    - Dst: getpid
      Src: /src/frr/vtysh/vtysh_config.c:728,1
    - Dst: vtysh_read_config
      Src: /src/frr/vtysh/vtysh_config.c:732,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_config.c:736,1
    - Dst: getpid
      Src: /src/frr/vtysh/vtysh_config.c:738,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_config.c:740,1
    - Dst: fprintf
      Src: /src/frr/vtysh/vtysh_config.c:744,1
    - Dst: getpid
      Src: /src/frr/vtysh/vtysh_config.c:744,1
    - Dst: exit
      Src: /src/frr/vtysh/vtysh_config.c:745,1
    - Dst: cmd_hostname_get
      Src: /src/frr/vtysh/vtysh_config.c:760,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_config.c:762,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:763,1
    - Dst: cmd_domainname_get
      Src: /src/frr/vtysh/vtysh_config.c:766,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_config.c:768,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:769,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:773,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:776,1
    - Dst: user_config_write
      Src: /src/frr/vtysh/vtysh_config.c:779,1
    - Dst: list_new
      Src: /src/frr/vtysh/vtysh_config.c:784,1
    - Dst: vector_init
      Src: /src/frr/vtysh/vtysh_config.c:786,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 71
    argCount: 2
    argNames:
    - vec
    - nested
    argTypes:
    - vector
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 524
    functionDepth: 8
    functionLinenumber: 524
    functionLinenumberEnd: 787
    functionName: configvec_dump
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 1
    functionsReached:
    - cmd_hostname_get
    - vtysh_read_config
    - config_del
    - vtysh_config_dump
    - vtysh_config_parse_line
    - vector_slot
    - user_config_write
    - vty_new
    - config_master_fini
    - config_master_hash_fini
    - vtysh_read_file
    - cmd_domainname_get
    - wait
    - strmatch
    - exit
    - snprintf
    - fclose
    - fprintf
    - WEXITSTATUS
    - list_delete_all_node
    - safe_strerror
    - array_size
    - if
    - vty_close
    - NO_DELIMITER
    - vty_out
    - listcount
    - vector_active
    - strlcpy
    - configvec_dump
    - XFREE
    - listnode_head
    - config_master_pop
    - vector_init
    - vtysh_config_from_file
    - fopen
    - getpid
    - vtysh_execute_no_pager
    - vtysh_apply_config
    - close
    - list_new
    - config_master_hash_del
    - ALL_LIST_ELEMENTS
    - fork
    linkageType: ''
    returnType: void
    signature: void configvec_dump(vector vec, bool nested)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cmd_hostname_get
      Src: /src/frr/vtysh/vtysh_config.c:760,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_config.c:762,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:763,1
    - Dst: cmd_domainname_get
      Src: /src/frr/vtysh/vtysh_config.c:766,1
    - Dst: snprintf
      Src: /src/frr/vtysh/vtysh_config.c:768,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:769,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:773,1
    - Dst: vtysh_config_parse_line
      Src: /src/frr/vtysh/vtysh_config.c:776,1
    - Dst: user_config_write
      Src: /src/frr/vtysh/vtysh_config.c:779,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 755
    functionDepth: 6
    functionLinenumber: 755
    functionLinenumberEnd: 780
    functionName: vtysh_config_write
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 1
    functionsReached:
    - cmd_hostname_get
    - vtysh_config_parse_line
    - snprintf
    - user_config_write
    - cmd_domainname_get
    linkageType: ''
    returnType: void
    signature: void vtysh_config_write(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_new
      Src: /src/frr/vtysh/vtysh_config.c:784,1
    - Dst: vector_init
      Src: /src/frr/vtysh/vtysh_config.c:786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 787
    functionName: vtysh_config_init
    functionSourceFile: /src/frr/vtysh/vtysh_config.c
    functionUses: 1
    functionsReached:
    - vector_init
    - list_new
    linkageType: ''
    returnType: void
    signature: void vtysh_config_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfclient/ospfclient.c:78,1
    - Dst: inet_aton
      Src: /src/frr/ospfclient/ospfclient.c:80,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:82,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:86,1
    - Dst: ospf_apiclient_lsa_delete
      Src: /src/frr/ospfclient/ospfclient.c:87,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:88,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:89,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:90,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 93
    functionName: lsa_delete
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 12
    functionsReached:
    - ospf_apiclient_lsa_delete
    - inet_aton
    - printf
    - EVENT_ARG
    - atoi
    linkageType: ''
    returnType: void
    signature: void lsa_delete(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/ospfclient/ospfclient.c:109,1
    - Dst: inet_aton
      Src: /src/frr/ospfclient/ospfclient.c:111,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:113,1
    - Dst: inet_aton
      Src: /src/frr/ospfclient/ospfclient.c:117,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:119,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:122,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:123,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:124,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:128,1
    - Dst: ospf_apiclient_lsa_originate
      Src: /src/frr/ospfclient/ospfclient.c:129,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 136
    functionName: lsa_inject
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 0
    functionsReached:
    - ospf_apiclient_lsa_originate
    - inet_aton
    - printf
    - EVENT_ARG
    - atoi
    linkageType: ''
    returnType: void
    signature: void lsa_inject(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:147,1
    - Dst: EVENT_ARG
      Src: /src/frr/ospfclient/ospfclient.c:149,1
    - Dst: EVENT_FD
      Src: /src/frr/ospfclient/ospfclient.c:150,1
    - Dst: ospf_apiclient_handle_async
      Src: /src/frr/ospfclient/ospfclient.c:153,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:155,1
    - Dst: exit
      Src: /src/frr/ospfclient/ospfclient.c:156,1
    - Dst: event_add_read
      Src: /src/frr/ospfclient/ospfclient.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 161
    functionName: lsa_read
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 0
    functionsReached:
    - exit
    - EVENT_FD
    - ospf_apiclient_handle_async
    - printf
    - EVENT_ARG
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void lsa_read(struct event *thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:172,1
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:173,1
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:174,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:175,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfclient/ospfclient.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ifaddr
    - area_id
    - is_self_originated
    - lsa
    argTypes:
    - struct in_addr
    - struct in_addr
    - uint8_t
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 191
    functionName: lsa_update_callback
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_header_dump
    - printf
    - printfrr
    linkageType: ''
    returnType: void
    signature: "void lsa_update_callback(struct in_addr ifaddr, struct in_addr area_id,\n\t\t\t\tuint8_t
      is_self_originated,\n\t\t\t\tstruct lsa_header *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:197,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:198,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:199,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:200,1
    - Dst: ospf_lsa_header_dump
      Src: /src/frr/ospfclient/ospfclient.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ifaddr
    - area_id
    - is_self_originated
    - lsa
    argTypes:
    - struct in_addr
    - struct in_addr
    - uint8_t
    - struct lsa_header*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: lsa_delete_callback
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 0
    functionsReached:
    - ospf_lsa_header_dump
    - printf
    linkageType: ''
    returnType: void
    signature: "void lsa_delete_callback(struct in_addr ifaddr, struct in_addr area_id,\n\t\t\t\tuint8_t
      is_self_originated,\n\t\t\t\tstruct lsa_header *lsa)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:208,1
    - Dst: event_add_timer
      Src: /src/frr/ospfclient/ospfclient.c:212,1
    - Dst: event_add_timer
      Src: /src/frr/ospfclient/ospfclient.c:215,1
    - Dst: event_add_timer
      Src: /src/frr/ospfclient/ospfclient.c:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - lsa_type
    - opaque_type
    - addr
    argTypes:
    - uint8_t
    - uint8_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 219
    functionName: ready_callback
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 0
    functionsReached:
    - event_add_timer
    - printfrr
    linkageType: ''
    returnType: void
    signature: "void ready_callback(uint8_t lsa_type, uint8_t opaque_type,\n\t\t\t
      \  struct in_addr addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:223,1
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ifaddr
    - area_id
    argTypes:
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 225
    functionName: new_if_callback
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 2
    functionsReached:
    - printfrr
    linkageType: ''
    returnType: void
    signature: void new_if_callback(struct in_addr ifaddr, struct in_addr area_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ifaddr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 230
    functionName: del_if_callback
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 2
    functionsReached:
    - printfrr
    linkageType: ''
    returnType: void
    signature: void del_if_callback(struct in_addr ifaddr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:235,1
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:236,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:237,1
    - Dst: lookup_msg
      Src: /src/frr/ospfclient/ospfclient.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ifaddr
    - area_id
    - state
    argTypes:
    - struct in_addr
    - struct in_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 239
    functionName: ism_change_callback
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 2
    functionsReached:
    - lookup_msg
    - printf
    - printfrr
    linkageType: ''
    returnType: void
    signature: "void ism_change_callback(struct in_addr ifaddr, struct in_addr area_id,\n\t\t\t\tuint8_t
      state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:244,1
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:245,1
    - Dst: printfrr
      Src: /src/frr/ospfclient/ospfclient.c:246,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:247,1
    - Dst: lookup_msg
      Src: /src/frr/ospfclient/ospfclient.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ifaddr
    - nbraddr
    - router_id
    - state
    argTypes:
    - struct in_addr
    - struct in_addr
    - struct in_addr
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 249
    functionName: nsm_change_callback
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 2
    functionsReached:
    - lookup_msg
    - printf
    - printfrr
    linkageType: ''
    returnType: void
    signature: "void nsm_change_callback(struct in_addr ifaddr, struct in_addr nbraddr,\n\t\t\t\tstruct
      in_addr router_id, uint8_t state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:259,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:260,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:261,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:262,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:263,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:264,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:265,1
    - Dst: exit
      Src: /src/frr/ospfclient/ospfclient.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 268
    functionName: usage
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 16
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: int
    signature: int usage(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/frr/ospfclient/ospfclient.c:290,1
    - Dst: zprivs_preinit
      Src: /src/frr/ospfclient/ospfclient.c:294,1
    - Dst: zprivs_init
      Src: /src/frr/ospfclient/ospfclient.c:295,1
    - Dst: event_master_create
      Src: /src/frr/ospfclient/ospfclient.c:296,1
    - Dst: ospf_apiclient_connect
      Src: /src/frr/ospfclient/ospfclient.c:299,1
    - Dst: printf
      Src: /src/frr/ospfclient/ospfclient.c:301,1
    - Dst: exit
      Src: /src/frr/ospfclient/ospfclient.c:302,1
    - Dst: ospf_apiclient_register_callback
      Src: /src/frr/ospfclient/ospfclient.c:306,1
    - Dst: ospf_apiclient_register_opaque_type
      Src: /src/frr/ospfclient/ospfclient.c:312,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:312,1
    - Dst: atoi
      Src: /src/frr/ospfclient/ospfclient.c:313,1
    - Dst: ospf_apiclient_sync_lsdb
      Src: /src/frr/ospfclient/ospfclient.c:316,1
    - Dst: event_add_read
      Src: /src/frr/ospfclient/ospfclient.c:319,1
    - Dst: event_fetch
      Src: /src/frr/ospfclient/ospfclient.c:323,1
    - Dst: event_call
      Src: /src/frr/ospfclient/ospfclient.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 270
    functionDepth: 7
    functionLinenumber: 270
    functionLinenumberEnd: 329
    functionName: main
    functionSourceFile: /src/frr/ospfclient/ospfclient.c
    functionUses: 26
    functionsReached:
    - ospf_apiclient_register_callback
    - exit
    - ospf_apiclient_connect
    - zprivs_init
    - ospf_apiclient_register_opaque_type
    - event_master_create
    - usage
    - ospf_apiclient_sync_lsdb
    - zprivs_preinit
    - printf
    - event_add_read
    - event_fetch
    - event_call
    - atoi
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getservbyname
      Src: /src/frr/ospfclient/ospf_apiclient.c:69,1
    - Dst: ntohs
      Src: /src/frr/ospfclient/ospf_apiclient.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: ospf_apiclient_getport
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - ntohs
    - getservbyname
    linkageType: ''
    returnType: unsigned short
    signature: unsigned short ospf_apiclient_getport(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/frr/ospfclient/ospf_apiclient.c:99,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:101,1
    - Dst: memset
      Src: /src/frr/ospfclient/ospf_apiclient.c:108,1
    - Dst: htonl
      Src: /src/frr/ospfclient/ospf_apiclient.c:110,1
    - Dst: htons
      Src: /src/frr/ospfclient/ospf_apiclient.c:111,1
    - Dst: setsockopt
      Src: /src/frr/ospfclient/ospf_apiclient.c:118,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:121,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:123,1
    - Dst: setsockopt
      Src: /src/frr/ospfclient/ospf_apiclient.c:128,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:131,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:133,1
    - Dst: bind
      Src: /src/frr/ospfclient/ospf_apiclient.c:139,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:141,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:143,1
    - Dst: listen
      Src: /src/frr/ospfclient/ospf_apiclient.c:148,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:150,1
    - Dst: safe_strerror
      Src: /src/frr/ospfclient/ospf_apiclient.c:151,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:152,1
    - Dst: gethostbyname
      Src: /src/frr/ospfclient/ospf_apiclient.c:158,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:160,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:162,1
    - Dst: socket
      Src: /src/frr/ospfclient/ospf_apiclient.c:166,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:168,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:169,1
    - Dst: setsockopt
      Src: /src/frr/ospfclient/ospf_apiclient.c:176,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:179,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:181,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:182,1
    - Dst: setsockopt
      Src: /src/frr/ospfclient/ospf_apiclient.c:187,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:190,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:192,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:193,1
    - Dst: memset
      Src: /src/frr/ospfclient/ospf_apiclient.c:203,1
    - Dst: htons
      Src: /src/frr/ospfclient/ospf_apiclient.c:205,1
    - Dst: bind
      Src: /src/frr/ospfclient/ospf_apiclient.c:210,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:212,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:214,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:215,1
    - Dst: memcpy
      Src: /src/frr/ospfclient/ospf_apiclient.c:220,1
    - Dst: htons
      Src: /src/frr/ospfclient/ospf_apiclient.c:222,1
    - Dst: ospf_apiclient_getport
      Src: /src/frr/ospfclient/ospf_apiclient.c:222,1
    - Dst: connect
      Src: /src/frr/ospfclient/ospf_apiclient.c:228,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:231,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:233,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:234,1
    - Dst: memset
      Src: /src/frr/ospfclient/ospf_apiclient.c:240,1
    - Dst: accept
      Src: /src/frr/ospfclient/ospf_apiclient.c:242,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:245,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:247,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:248,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:249,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:255,1
    - Dst: XCALLOC::XCALLOC
      Src: /src/frr/ospfclient/ospf_apiclient.c:258,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 99
    argCount: 2
    argNames:
    - host
    - syncport
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 265
    functionName: ospf_apiclient_connect
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 1
    functionsReached:
    - XCALLOC::XCALLOC
    - memset
    - htons
    - connect
    - socket
    - close
    - accept
    - fprintf
    - safe_strerror
    - bind
    - listen
    - ospf_apiclient_getport
    - htonl
    - memcpy
    - setsockopt
    - gethostbyname
    linkageType: ''
    returnType: struct ospf_apiclient
    signature: struct ospf_apiclient *ospf_apiclient_connect(char *host, int syncport)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:271,1
    - Dst: close
      Src: /src/frr/ospfclient/ospf_apiclient.c:275,1
    - Dst: XFREE
      Src: /src/frr/ospfclient/ospf_apiclient.c:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - oclient
    argTypes:
    - struct ospf_apiclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 281
    functionName: ospf_apiclient_close
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - XFREE
    - close
    linkageType: ''
    returnType: int
    signature: int ospf_apiclient_close(struct ospf_apiclient *oclient)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/frr/ospfclient/ospf_apiclient.c:299,1
    - Dst: msg_write
      Src: /src/frr/ospfclient/ospf_apiclient.c:302,1
    - Dst: msg_free
      Src: /src/frr/ospfclient/ospf_apiclient.c:303,1
    - Dst: msg_read
      Src: /src/frr/ospfclient/ospf_apiclient.c:310,1
    - Dst: assert
      Src: /src/frr/ospfclient/ospf_apiclient.c:314,1
    - Dst: assert
      Src: /src/frr/ospfclient/ospf_apiclient.c:315,1
    - Dst: ntohl
      Src: /src/frr/ospfclient/ospf_apiclient.c:315,1
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:317,1
    - Dst: msg_free
      Src: /src/frr/ospfclient/ospf_apiclient.c:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts:
    - condition: (msg->hdr.msgtype == MSG_REPLY)
      pos:
        line_end: 313
        line_start: 313
        source_file: /src/frr/ospfclient/ospf_apiclient.c
    - condition: (ntohl(msg->hdr.msgseq) == reqseq)
      pos:
        line_end: 314
        line_start: 314
        source_file: /src/frr/ospfclient/ospf_apiclient.c
    constantsTouched: []
    func_position:
      end: 322
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 322
    functionName: ospf_apiclient_send_request
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - msg_free
    - STREAM_DATA
    - msg_write
    - msg_read
    - ntohl
    - assert
    linkageType: ''
    returnType: int
    signature: "int ospf_apiclient_send_request(struct ospf_apiclient *oclient,\n\t\t\t\t
      \      struct msg *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 343
    functionName: ospf_apiclient_get_seqnr
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ospf_apiclient_get_seqnr(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new_msg_register_opaque_type
      Src: /src/frr/ospfclient/ospf_apiclient.c:360,1
    - Dst: ospf_apiclient_get_seqnr
      Src: /src/frr/ospfclient/ospf_apiclient.c:360,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:363,1
    - Dst: ospf_apiclient_send_request
      Src: /src/frr/ospfclient/ospf_apiclient.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - cl
    - ltype
    - otype
    argTypes:
    - struct ospf_apiclient*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 353
    functionDepth: 4
    functionLinenumber: 353
    functionLinenumberEnd: 369
    functionName: ospf_apiclient_register_opaque_type
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 1
    functionsReached:
    - new_msg_register_opaque_type
    - ospf_apiclient_get_seqnr
    - fprintf
    - ospf_apiclient_send_request
    linkageType: ''
    returnType: int
    signature: "int ospf_apiclient_register_opaque_type(struct ospf_apiclient *cl,\n\t\t\t\t\tuint8_t
      ltype, uint8_t otype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: new_msg_register_event
      Src: /src/frr/ospfclient/ospf_apiclient.c:386,1
    - Dst: ospf_apiclient_get_seqnr
      Src: /src/frr/ospfclient/ospf_apiclient.c:386,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:388,1
    - Dst: ospf_apiclient_send_request
      Src: /src/frr/ospfclient/ospf_apiclient.c:391,1
    - Dst: new_msg_sync_lsdb
      Src: /src/frr/ospfclient/ospf_apiclient.c:396,1
    - Dst: ospf_apiclient_get_seqnr
      Src: /src/frr/ospfclient/ospf_apiclient.c:396,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:398,1
    - Dst: ospf_apiclient_send_request
      Src: /src/frr/ospfclient/ospf_apiclient.c:401,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - oclient
    argTypes:
    - struct ospf_apiclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 376
    functionDepth: 4
    functionLinenumber: 376
    functionLinenumberEnd: 405
    functionName: ospf_apiclient_sync_lsdb
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 1
    functionsReached:
    - ospf_apiclient_get_seqnr
    - ospf_apiclient_send_request
    - fprintf
    - new_msg_register_event
    - new_msg_sync_lsdb
    linkageType: ''
    returnType: int
    signature: int ospf_apiclient_sync_lsdb(struct ospf_apiclient *oclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:425,1
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfclient/ospf_apiclient.c:431,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:432,1
    - Dst: SET_OPAQUE_LSID
      Src: /src/frr/ospfclient/ospf_apiclient.c:443,1
    - Dst: htonl
      Src: /src/frr/ospfclient/ospf_apiclient.c:444,1
    - Dst: htons
      Src: /src/frr/ospfclient/ospf_apiclient.c:448,1
    - Dst: memcpy
      Src: /src/frr/ospfclient/ospf_apiclient.c:450,1
    - Dst: new_msg_originate_request
      Src: /src/frr/ospfclient/ospf_apiclient.c:453,1
    - Dst: ospf_apiclient_get_seqnr
      Src: /src/frr/ospfclient/ospf_apiclient.c:453,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:456,1
    - Dst: ospf_apiclient_send_request
      Src: /src/frr/ospfclient/ospf_apiclient.c:460,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 8
    argNames:
    - oclient
    - ifaddr
    - area_id
    - lsa_type
    - opaque_type
    - opaque_id
    - opaquedata
    - opaquelen
    argTypes:
    - struct ospf_apiclient*
    - struct in_addr
    - struct in_addr
    - uint8_t
    - uint8_t
    - uint32_t
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 462
    functionName: ospf_apiclient_lsa_originate
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 1
    functionsReached:
    - SET_OPAQUE_LSID
    - ospf_apiclient_get_seqnr
    - htons
    - new_msg_originate_request
    - ospf_apiclient_send_request
    - fprintf
    - htonl
    - IS_OPAQUE_LSA
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int ospf_apiclient_lsa_originate(struct ospf_apiclient *oclient,\n\t\t\t\t
      struct in_addr ifaddr, struct in_addr area_id,\n\t\t\t\t uint8_t lsa_type, uint8_t
      opaque_type,\n\t\t\t\t uint32_t opaque_id, void *opaquedata,\n\t\t\t\t int opaquelen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IS_OPAQUE_LSA
      Src: /src/frr/ospfclient/ospf_apiclient.c:473,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:474,1
    - Dst: new_msg_delete_request
      Src: /src/frr/ospfclient/ospf_apiclient.c:481,1
    - Dst: ospf_apiclient_get_seqnr
      Src: /src/frr/ospfclient/ospf_apiclient.c:481,1
    - Dst: ospf_apiclient_send_request
      Src: /src/frr/ospfclient/ospf_apiclient.c:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - oclient
    - addr
    - lsa_type
    - opaque_type
    - opaque_id
    - flags
    argTypes:
    - struct ospf_apiclient*
    - struct in_addr
    - uint8_t
    - uint8_t
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 464
    functionDepth: 4
    functionLinenumber: 464
    functionLinenumberEnd: 486
    functionName: ospf_apiclient_lsa_delete
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 1
    functionsReached:
    - ospf_apiclient_get_seqnr
    - new_msg_delete_request
    - ospf_apiclient_send_request
    - fprintf
    - IS_OPAQUE_LSA
    linkageType: ''
    returnType: int
    signature: "int ospf_apiclient_lsa_delete(struct ospf_apiclient *oclient,\n\t\t\t
      \     struct in_addr addr, uint8_t lsa_type,\n\t\t\t      uint8_t opaque_type,
      uint32_t opaque_id,\n\t\t\t      uint8_t flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:497,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 503
    functionName: ospf_apiclient_handle_ready
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_handle_ready(struct ospf_apiclient *oclient,\n\t\t\t\t\tstruct
      msg *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 515
    functionName: ospf_apiclient_handle_new_if
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_handle_new_if(struct ospf_apiclient *oclient,\n\t\t\t\t\t
      struct msg *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 517
    functionDepth: 1
    functionLinenumber: 517
    functionLinenumberEnd: 527
    functionName: ospf_apiclient_handle_del_if
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_handle_del_if(struct ospf_apiclient *oclient,\n\t\t\t\t\t
      struct msg *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 539
    functionName: ospf_apiclient_handle_ism_change
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_handle_ism_change(struct ospf_apiclient *oclient,\n\t\t\t\t\t
      \    struct msg *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 552
    functionName: ospf_apiclient_handle_nsm_change
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - STREAM_DATA
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_handle_nsm_change(struct ospf_apiclient *oclient,\n\t\t\t\t\t
      \    struct msg *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:562,1
    - Dst: ntohs
      Src: /src/frr/ospfclient/ospf_apiclient.c:565,1
    - Dst: flog_warn
      Src: /src/frr/ospfclient/ospf_apiclient.c:567,1
    - Dst: XMALLOC
      Src: /src/frr/ospfclient/ospf_apiclient.c:574,1
    - Dst: memcpy
      Src: /src/frr/ospfclient/ospf_apiclient.c:576,1
    - Dst: XFREE
      Src: /src/frr/ospfclient/ospf_apiclient.c:586,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 587
    functionName: ospf_apiclient_handle_lsa_update
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - STREAM_DATA
    - XMALLOC
    - ntohs
    - XFREE
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_handle_lsa_update(struct ospf_apiclient *oclient,\n\t\t\t\t\t
      \    struct msg *msg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_DATA
      Src: /src/frr/ospfclient/ospf_apiclient.c:597,1
    - Dst: ntohs
      Src: /src/frr/ospfclient/ospf_apiclient.c:600,1
    - Dst: flog_warn
      Src: /src/frr/ospfclient/ospf_apiclient.c:602,1
    - Dst: XMALLOC
      Src: /src/frr/ospfclient/ospf_apiclient.c:609,1
    - Dst: memcpy
      Src: /src/frr/ospfclient/ospf_apiclient.c:611,1
    - Dst: XFREE
      Src: /src/frr/ospfclient/ospf_apiclient.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 622
    functionName: ospf_apiclient_handle_lsa_delete
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - flog_warn
    - STREAM_DATA
    - XMALLOC
    - ntohs
    - XFREE
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_handle_lsa_delete(struct ospf_apiclient *oclient,\n\t\t\t\t\t
      \    struct msg *msg)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ospf_apiclient_handle_ready
      Src: /src/frr/ospfclient/ospf_apiclient.c:630,1
    - Dst: ospf_apiclient_handle_new_if
      Src: /src/frr/ospfclient/ospf_apiclient.c:633,1
    - Dst: ospf_apiclient_handle_del_if
      Src: /src/frr/ospfclient/ospf_apiclient.c:636,1
    - Dst: ospf_apiclient_handle_ism_change
      Src: /src/frr/ospfclient/ospf_apiclient.c:639,1
    - Dst: ospf_apiclient_handle_nsm_change
      Src: /src/frr/ospfclient/ospf_apiclient.c:642,1
    - Dst: ospf_apiclient_handle_lsa_update
      Src: /src/frr/ospfclient/ospf_apiclient.c:645,1
    - Dst: ospf_apiclient_handle_lsa_delete
      Src: /src/frr/ospfclient/ospf_apiclient.c:648,1
    - Dst: fprintf
      Src: /src/frr/ospfclient/ospf_apiclient.c:651,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - oclient
    - msg
    argTypes:
    - struct ospf_apiclient*
    - struct msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 624
    functionDepth: 2
    functionLinenumber: 624
    functionLinenumberEnd: 656
    functionName: ospf_apiclient_msghandle
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 0
    functionsReached:
    - ospf_apiclient_handle_nsm_change
    - ospf_apiclient_handle_ready
    - ospf_apiclient_handle_ism_change
    - fprintf
    - ospf_apiclient_handle_del_if
    - ospf_apiclient_handle_new_if
    - ospf_apiclient_handle_lsa_update
    - ospf_apiclient_handle_lsa_delete
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_msghandle(struct ospf_apiclient *oclient,\n\t\t\t\t
      \    struct msg *msg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/frr/ospfclient/ospf_apiclient.c:678,1
    - Dst: assert
      Src: /src/frr/ospfclient/ospf_apiclient.c:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - oclient
    argTypes:
    - struct ospf_apiclient*
    assertStmts:
    - condition: (oclient)
      pos:
        line_end: 677
        line_start: 677
        source_file: /src/frr/ospfclient/ospf_apiclient.c
    - condition: (update_notify)
      pos:
        line_end: 678
        line_start: 678
        source_file: /src/frr/ospfclient/ospf_apiclient.c
    constantsTouched: []
    func_position:
      end: 689
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 689
    functionName: ospf_apiclient_register_callback
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: "void ospf_apiclient_register_callback(\n\tstruct ospf_apiclient *oclient,\n\tvoid
      (*ready_notify)(uint8_t lsa_type, uint8_t opaque_type,\n\t\t\t     struct in_addr
      addr),\n\tvoid (*new_if)(struct in_addr ifaddr, struct in_addr area_id),\n\tvoid
      (*del_if)(struct in_addr ifaddr),\n\tvoid (*ism_change)(struct in_addr ifaddr,
      struct in_addr area_id,\n\t\t\t   uint8_t status),\n\tvoid (*nsm_change)(struct
      in_addr ifaddr, struct in_addr nbraddr,\n\t\t\t   struct in_addr router_id,
      uint8_t status),\n\tvoid (*update_notify)(struct in_addr ifaddr, struct in_addr
      area_id,\n\t\t\t      uint8_t self_origin, struct lsa_header *lsa),\n\tvoid
      (*delete_notify)(struct in_addr ifaddr, struct in_addr area_id,\n\t\t\t      uint8_t
      self_origin, struct lsa_header *lsa))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: msg_read
      Src: /src/frr/ospfclient/ospf_apiclient.c:701,1
    - Dst: ospf_apiclient_msghandle
      Src: /src/frr/ospfclient/ospf_apiclient.c:709,1
    - Dst: msg_free
      Src: /src/frr/ospfclient/ospf_apiclient.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - oclient
    argTypes:
    - struct ospf_apiclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 696
    functionDepth: 3
    functionLinenumber: 696
    functionLinenumberEnd: 715
    functionName: ospf_apiclient_handle_async
    functionSourceFile: /src/frr/ospfclient/ospf_apiclient.c
    functionUses: 1
    functionsReached:
    - msg_free
    - msg_read
    - ospf_apiclient_msghandle
    linkageType: ''
    returnType: int
    signature: int ospf_apiclient_handle_async(struct ospf_apiclient *oclient)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtosa
      Src: /src/frr/bfdd/bfdd_nb_config.c:27,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:27,1
    - Dst: memset
      Src: /src/frr/bfdd/bfdd_nb_config.c:30,1
    - Dst: yang_dnode_exists
      Src: /src/frr/bfdd/bfdd_nb_config.c:31,1
    - Dst: strtosa
      Src: /src/frr/bfdd/bfdd_nb_config.c:32,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:32,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:34,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:37,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd_nb_config.c:38,1
    - Dst: gen_bfd_key
      Src: /src/frr/bfdd/bfdd_nb_config.c:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - mhop
    - dnode
    - bk
    argTypes:
    - bool
    - struct lyd_node*
    - struct bfd_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 20
    functionDepth: 2
    functionLinenumber: 20
    functionLinenumberEnd: 44
    functionName: bfd_session_get_key
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - memset
    - strtosa
    - strcmp
    - yang_dnode_get_string
    - gen_bfd_key
    - yang_dnode_exists
    linkageType: ''
    returnType: void
    signature: "void bfd_session_get_key(bool mhop, const struct lyd_node *dnode,\n\t\t\t\tstruct
      bfd_key *bk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:56,1
    - Dst: strmatch
      Src: /src/frr/bfdd/bfdd_nb_config.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dnode
    - arg
    argTypes:
    - struct lyd_node*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: session_iter_cb
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - strmatch
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int session_iter_cb(const struct lyd_node *dnode, void *arg)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_prefix
      Src: /src/frr/bfdd/bfdd_nb_config.c:79,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bfdd/bfdd_nb_config.c:86,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_nb_config.c:87,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:100,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bfdd/bfdd_nb_config.c:102,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd_nb_config.c:103,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_nb_config.c:104,1
    - Dst: yang_dnode_get_parent
      Src: /src/frr/bfdd/bfdd_nb_config.c:113,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:115,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:116,1
    - Dst: yang_dnode_iterate
      Src: /src/frr/bfdd/bfdd_nb_config.c:118,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_nb_config.c:123,1
    - Dst: bfd_session_get_key
      Src: /src/frr/bfdd/bfdd_nb_config.c:131,1
    - Dst: bfd_key_lookup
      Src: /src/frr/bfdd/bfdd_nb_config.c:132,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfdd_nb_config.c:137,1
    - Dst: bfd_session_new
      Src: /src/frr/bfdd/bfdd_nb_config.c:144,1
    - Dst: bfd_session_get_key
      Src: /src/frr/bfdd/bfdd_nb_config.c:147,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfdd_nb_config.c:151,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfdd_nb_config.c:153,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfdd_nb_config.c:155,1
    - Dst: bs_registrate
      Src: /src/frr/bfdd/bfdd_nb_config.c:164,1
    - Dst: nb_running_set_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:167,1
    - Dst: bfd_session_free
      Src: /src/frr/bfdd/bfdd_nb_config.c:173,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 2
    argNames:
    - args
    - mhop
    argTypes:
    - struct nb_cb_create_args*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 178
    functionName: bfd_session_create
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - yang_dnode_iterate
    - snprintf
    - bs_registrate
    - IN6_IS_ADDR_LINKLOCAL
    - yang_dnode_get_parent
    - strcmp
    - bfd_session_new
    - bfd_session_get_key
    - SET_FLAG
    - yang_dnode_get_string
    - bfd_key_lookup
    - yang_dnode_get_prefix
    - bfd_session_free
    linkageType: ''
    returnType: int
    signature: int bfd_session_create(struct nb_cb_create_args *args, bool mhop)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_get_key
      Src: /src/frr/bfdd/bfdd_nb_config.c:188,1
    - Dst: bfd_key_lookup
      Src: /src/frr/bfdd/bfdd_nb_config.c:189,1
    - Dst: nb_running_unset_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:198,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_nb_config.c:200,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfdd_nb_config.c:203,1
    - Dst: bfd_session_free
      Src: /src/frr/bfdd/bfdd_nb_config.c:209,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - event
    - dnode
    - mhop
    argTypes:
    - enum nb_event
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 218
    functionName: bfd_session_destroy
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - bfd_session_get_key
    - UNSET_FLAG
    - nb_running_unset_entry
    - bfd_key_lookup
    - bfd_session_free
    linkageType: ''
    returnType: int
    signature: "int bfd_session_destroy(enum nb_event event,\n\t\t\t       const struct
      lyd_node *dnode, bool mhop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_set_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 223
    functionDepth: 4
    functionLinenumber: 223
    functionLinenumberEnd: 235
    functionName: bfdd_bfd_create
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_create(struct nb_cb_create_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:253,1
    - Dst: bfd_sessions_remove_manual
      Src: /src/frr/bfdd/bfdd_nb_config.c:255,1
    - Dst: bfd_profiles_remove
      Src: /src/frr/bfdd/bfdd_nb_config.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 265
    functionName: bfdd_bfd_destroy
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profiles_remove
    - nb_running_unset_entry
    - bfd_sessions_remove_manual
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:278,1
    - Dst: bfd_profile_new
      Src: /src/frr/bfdd/bfdd_nb_config.c:279,1
    - Dst: nb_running_set_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 270
    functionDepth: 4
    functionLinenumber: 270
    functionLinenumberEnd: 283
    functionName: bfdd_bfd_profile_create
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - nb_running_set_entry
    - bfd_profile_new
    - yang_dnode_get_string
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_profile_create(struct nb_cb_create_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_unset_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:292,1
    - Dst: bfd_profile_free
      Src: /src/frr/bfdd/bfdd_nb_config.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 296
    functionName: bfdd_bfd_profile_destroy
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_free
    - nb_running_unset_entry
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_profile_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:308,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/bfdd/bfdd_nb_config.c:309,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 301
    functionDepth: 6
    functionLinenumber: 301
    functionLinenumberEnd: 313
    functionName: bfdd_bfd_profile_detection_multiplier_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_update
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_profile_detection_multiplier_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:332,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:333,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:334,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 318
    functionDepth: 6
    functionLinenumber: 318
    functionLinenumberEnd: 343
    functionName: bfdd_bfd_profile_desired_transmission_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_update
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_profile_desired_transmission_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:362,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:363,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:364,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 348
    functionDepth: 6
    functionLinenumber: 348
    functionLinenumberEnd: 373
    functionName: bfdd_bfd_profile_required_receive_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_update
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_profile_required_receive_interval_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:385,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_nb_config.c:386,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 378
    functionDepth: 6
    functionLinenumber: 378
    functionLinenumberEnd: 390
    functionName: bfdd_bfd_profile_administrative_down_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - bfd_profile_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_profile_administrative_down_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:402,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_nb_config.c:403,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 395
    functionDepth: 6
    functionLinenumber: 395
    functionLinenumberEnd: 407
    functionName: bfdd_bfd_profile_passive_mode_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - bfd_profile_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_profile_passive_mode_modify(struct nb_cb_modify_args *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:419,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/bfdd/bfdd_nb_config.c:420,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 412
    functionDepth: 6
    functionLinenumber: 412
    functionLinenumberEnd: 424
    functionName: bfdd_bfd_profile_minimum_ttl_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_update
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_profile_minimum_ttl_modify(struct nb_cb_modify_args *args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_nb_config.c:437,1
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:438,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 429
    functionDepth: 6
    functionLinenumber: 429
    functionLinenumberEnd: 446
    functionName: bfdd_bfd_profile_echo_mode_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - bfd_profile_update
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_profile_echo_mode_modify(struct nb_cb_modify_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:465,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:466,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:467,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 451
    functionDepth: 6
    functionLinenumber: 451
    functionLinenumberEnd: 476
    functionName: bfdd_bfd_profile_desired_echo_transmission_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_update
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_profile_desired_echo_transmission_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:495,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:496,1
    - Dst: bfd_profile_update
      Src: /src/frr/bfdd/bfdd_nb_config.c:497,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 481
    functionDepth: 6
    functionLinenumber: 481
    functionLinenumberEnd: 506
    functionName: bfdd_bfd_profile_required_echo_receive_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_update
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_profile_required_echo_receive_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_create
      Src: /src/frr/bfdd/bfdd_nb_config.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 511
    functionDepth: 5
    functionLinenumber: 511
    functionLinenumberEnd: 514
    functionName: bfdd_bfd_sessions_single_hop_create
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_create
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_sessions_single_hop_create(struct nb_cb_create_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_destroy
      Src: /src/frr/bfdd/bfdd_nb_config.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 516
    functionDepth: 4
    functionLinenumber: 516
    functionLinenumberEnd: 519
    functionName: bfdd_bfd_sessions_single_hop_destroy
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_destroy
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_sessions_single_hop_destroy(struct nb_cb_destroy_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 528
    functionName: bfdd_bfd_sessions_single_hop_source_addr_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_source_addr_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 534
    functionName: bfdd_bfd_sessions_single_hop_source_addr_destroy
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_source_addr_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:546,1
    - Dst: bfd_profile_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:547,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_nb_config.c:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 539
    functionDepth: 6
    functionLinenumber: 539
    functionLinenumberEnd: 550
    functionName: bfdd_bfd_sessions_single_hop_profile_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - nb_running_get_entry
    - bfd_profile_apply
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_sessions_single_hop_profile_modify(struct nb_cb_modify_args
      *args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:560,1
    - Dst: bfd_profile_remove
      Src: /src/frr/bfdd/bfdd_nb_config.c:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 552
    functionDepth: 6
    functionLinenumber: 552
    functionLinenumberEnd: 564
    functionName: bfdd_bfd_sessions_single_hop_profile_destroy
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_profile_remove
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_profile_destroy(\n\tstruct nb_cb_destroy_args
      *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/bfdd/bfdd_nb_config.c:572,1
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:584,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 569
    functionDepth: 6
    functionLinenumber: 569
    functionLinenumberEnd: 595
    functionName: bfdd_bfd_sessions_single_hop_detection_multiplier_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_apply
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_detection_multiplier_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:614,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:616,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:617,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 600
    functionDepth: 6
    functionLinenumber: 600
    functionLinenumberEnd: 626
    functionName: bfdd_bfd_sessions_single_hop_desired_transmission_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_apply
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_desired_transmission_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:645,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:647,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:648,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 631
    functionDepth: 6
    functionLinenumber: 631
    functionLinenumberEnd: 657
    functionName: bfdd_bfd_sessions_single_hop_required_receive_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_apply
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_required_receive_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_nb_config.c:665,1
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:680,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:682,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 662
    functionDepth: 6
    functionLinenumber: 662
    functionLinenumberEnd: 685
    functionName: bfdd_bfd_sessions_single_hop_administrative_down_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - bfd_session_apply
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_administrative_down_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_nb_config.c:708,1
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:710,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:712,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 690
    functionDepth: 6
    functionLinenumber: 690
    functionLinenumberEnd: 715
    functionName: bfdd_bfd_sessions_single_hop_passive_mode_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - bfd_session_apply
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_passive_mode_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_nb_config.c:723,1
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:738,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:740,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 720
    functionDepth: 6
    functionLinenumber: 720
    functionLinenumberEnd: 743
    functionName: bfdd_bfd_sessions_single_hop_echo_mode_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - bfd_session_apply
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_echo_mode_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:763,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:765,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:766,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 749
    functionDepth: 6
    functionLinenumber: 749
    functionLinenumberEnd: 775
    functionName: bfdd_bfd_sessions_single_hop_desired_echo_transmission_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_apply
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_desired_echo_transmission_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:795,1
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_nb_config.c:797,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:798,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 781
    functionDepth: 6
    functionLinenumber: 781
    functionLinenumberEnd: 807
    functionName: bfdd_bfd_sessions_single_hop_required_echo_receive_interval_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_apply
    - nb_running_get_entry
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_single_hop_required_echo_receive_interval_modify(\n\tstruct
      nb_cb_modify_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_create
      Src: /src/frr/bfdd/bfdd_nb_config.c:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_create_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 812
    functionDepth: 5
    functionLinenumber: 812
    functionLinenumberEnd: 815
    functionName: bfdd_bfd_sessions_multi_hop_create
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_create
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_sessions_multi_hop_create(struct nb_cb_create_args *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_destroy
      Src: /src/frr/bfdd/bfdd_nb_config.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_destroy_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 817
    functionDepth: 4
    functionLinenumber: 817
    functionLinenumberEnd: 820
    functionName: bfdd_bfd_sessions_multi_hop_destroy
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_destroy
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_sessions_multi_hop_destroy(struct nb_cb_destroy_args *args)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nb_running_get_entry
      Src: /src/frr/bfdd/bfdd_nb_config.c:842,1
    - Dst: yang_dnode_get_uint8
      Src: /src/frr/bfdd/bfdd_nb_config.c:843,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfdd_nb_config.c:844,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_modify_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 825
    functionDepth: 6
    functionLinenumber: 825
    functionLinenumberEnd: 847
    functionName: bfdd_bfd_sessions_multi_hop_minimum_ttl_modify
    functionSourceFile: /src/frr/bfdd/bfdd_nb_config.c
    functionUses: 0
    functionsReached:
    - bfd_session_apply
    - yang_dnode_get_uint8
    - nb_running_get_entry
    linkageType: ''
    returnType: int
    signature: "int bfdd_bfd_sessions_multi_hop_minimum_ttl_modify(\n\tstruct nb_cb_modify_args
      *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - diag
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: BFD_GETVER
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_GETVER(diag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - diag
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: BFD_SETVER
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_SETVER(diag, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - flags
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: BFD_SETDEMANDBIT
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_SETDEMANDBIT(flags, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - flags
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: BFD_SETPBIT
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_SETPBIT(flags, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: BFD_GETPBIT
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_GETPBIT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - flags
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 122
    functionName: BFD_SETFBIT
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_SETFBIT(flags, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: BFD_GETFBIT
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_GETFBIT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - flags
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: BFD_SETSTATE
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_SETSTATE(flags, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 129
    functionName: BFD_GETSTATE
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_GETSTATE(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - flags
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: BFD_SETCBIT
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_SETCBIT(flags, val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: BFD_GETCBIT
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BFD_GETCBIT(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - msg
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: zlog_fatal
    functionSourceFile: /src/frr/bfdd/bfd.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zlog_fatal(msg, ...)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:80,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:81,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:83,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bfdd/bfd_packet.c:84,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:89,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:90,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:91,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:97,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:99,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:102,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:103,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:104,1
    - Dst: sendto
      Src: /src/frr/bfdd/bfd_packet.c:114,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:117,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:118,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:123,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:124,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - bs
    - port
    - data
    - datalen
    argTypes:
    - struct bfd_session*
    - uint16_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 128
    functionName: _ptm_bfd_send
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - strerror
    - zlog_debug
    - sendto
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int _ptm_bfd_send(struct bfd_session *bs, uint16_t *port, const void
      *data,\n\t\t  size_t datalen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:158,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:159,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:160,1
    - Dst: in_cksum_with_ph6
      Src: /src/frr/bfdd/bfd_packet.c:162,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:166,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:167,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:169,1
    - Dst: in_cksum_with_ph4
      Src: /src/frr/bfdd/bfd_packet.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - pkt
    - pktsize
    - ip
    - family
    argTypes:
    - struct udphdr*
    - size_t
    - struct in6_addr*
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 174
    functionName: bfd_pkt_checksum
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - in_cksum_with_ph4
    - in_cksum_with_ph6
    - memcpy
    - htons
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t bfd_pkt_checksum(struct udphdr *pkt, size_t pktsize,\n\t\t\t\t
      struct in6_addr *ip, sa_family_t family)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: bfd_vrf_look_by_session
      Src: /src/frr/bfdd/bfd_packet.c:190,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:201,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:203,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:204,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:206,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:210,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:211,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:216,1
    - Dst: frr_weak_random
      Src: /src/frr/bfdd/bfd_packet.c:224,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:227,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:229,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:236,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:237,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:248,1
    - Dst: monotime
      Src: /src/frr/bfdd/bfd_packet.c:251,1
    - Dst: htobe64
      Src: /src/frr/bfdd/bfd_packet.c:252,1
    - Dst: htobe64
      Src: /src/frr/bfdd/bfd_packet.c:253,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:257,1
    - Dst: bfd_pkt_checksum
      Src: /src/frr/bfdd/bfd_packet.c:258,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:262,1
    - Dst: in_cksum
      Src: /src/frr/bfdd/bfd_packet.c:263,1
    - Dst: bp_udp_send_fp
      Src: /src/frr/bfdd/bfd_packet.c:265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 43
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 269
    functionName: ptm_bfd_echo_fp_snd
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - frr_weak_random
    - memset
    - htons
    - htobe64
    - in_cksum
    - CHECK_FLAG
    - bfd_vrf_look_by_session
    - monotime
    - bfd_pkt_checksum
    - bp_udp_send_fp
    - SET_FLAG
    - htonl
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_echo_fp_snd(struct bfd_session *bfd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bfd_vrf_look_by_session
      Src: /src/frr/bfdd/bfd_packet.c:280,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:284,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:285,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:287,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:290,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:292,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:296,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:298,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bfdd/bfd_packet.c:299,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:302,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:311,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:313,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:314,1
    - Dst: bp_udp_send
      Src: /src/frr/bfdd/bfd_packet.c:322,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 328
    functionName: ptm_bfd_echo_snd
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - IN6_IS_ADDR_LINKLOCAL
    - CHECK_FLAG
    - bfd_vrf_look_by_session
    - SET_FLAG
    - htonl
    - bp_udp_send
    - memcpy
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_echo_snd(struct bfd_session *bfd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bp_bfd_echo_in
      Src: /src/frr/bfdd/bfd_packet.c:338,1
    - Dst: bfd_id_lookup
      Src: /src/frr/bfdd/bfd_packet.c:342,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:345,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:350,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:352,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfd_packet.c:353,1
    - Dst: bfd_echo_recvtimer_update
      Src: /src/frr/bfdd/bfd_packet.c:374,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - bvrf
    - s
    argTypes:
    - struct bfd_vrf_global*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 377
    functionName: ptm_bfd_process_echo_pkt
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - bfd_echo_recvtimer_update
    - bs_to_string
    - CHECK_FLAG
    - bfd_id_lookup
    - zlog_debug
    - bp_bfd_echo_in
    linkageType: ''
    returnType: int
    signature: int ptm_bfd_process_echo_pkt(struct bfd_vrf_global *bvrf, int s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BFD_SETVER
      Src: /src/frr/bfdd/bfd_packet.c:385,1
    - Dst: BFD_SETSTATE
      Src: /src/frr/bfdd/bfd_packet.c:387,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:389,1
    - Dst: BFD_SETCBIT
      Src: /src/frr/bfdd/bfd_packet.c:390,1
    - Dst: BFD_SETDEMANDBIT
      Src: /src/frr/bfdd/bfd_packet.c:392,1
    - Dst: BFD_SETFBIT
      Src: /src/frr/bfdd/bfd_packet.c:399,1
    - Dst: BFD_SETPBIT
      Src: /src/frr/bfdd/bfd_packet.c:401,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:405,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:406,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:409,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:411,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:420,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:422,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:424,1
    - Dst: _ptm_bfd_send
      Src: /src/frr/bfdd/bfd_packet.c:426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - bfd
    - fbit
    argTypes:
    - struct bfd_session*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 430
    functionName: ptm_bfd_snd
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - _ptm_bfd_send
    - BFD_SETCBIT
    - htonl
    - BFD_SETFBIT
    - CHECK_FLAG
    - BFD_SETDEMANDBIT
    - BFD_SETSTATE
    - BFD_SETVER
    - BFD_SETPBIT
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_snd(struct bfd_session *bfd, int fbit)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:453,1
    - Dst: recvmsg
      Src: /src/frr/bfdd/bfd_packet.c:459,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd_packet.c:462,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:463,1
    - Dst: in_cksum
      Src: /src/frr/bfdd/bfd_packet.c:473,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:476,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:485,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:490,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:492,1
    - Dst: bfd_pkt_checksum
      Src: /src/frr/bfdd/bfd_packet.c:501,1
    - Dst: ntohs
      Src: /src/frr/bfdd/bfd_packet.c:501,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:505,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 7
    argNames:
    - sd
    - msgbuf
    - msgbuflen
    - ttl
    - ifindex
    - local
    - peer
    argTypes:
    - int
    - uint8_t*
    - size_t
    - uint8_t*
    - ifindex_t*
    - struct sockaddr_any*
    - struct sockaddr_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 436
    functionDepth: 3
    functionLinenumber: 436
    functionLinenumberEnd: 511
    functionName: bfd_recv_ipv4_fp
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - in_cksum
    - strerror
    - zlog_err
    - bfd_pkt_checksum
    - ntohs
    - zlog_debug
    - memcpy
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t bfd_recv_ipv4_fp(int sd, uint8_t *msgbuf, size_t msgbuflen,\n\t\t\t
      uint8_t *ttl, ifindex_t *ifindex,\n\t\t\t struct sockaddr_any *local, struct
      sockaddr_any *peer)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:529,1
    - Dst: recvmsg
      Src: /src/frr/bfdd/bfd_packet.c:537,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd_packet.c:540,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:540,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/bfdd/bfd_packet.c:549,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/bfdd/bfd_packet.c:550,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:559,1
    - Dst: CMSG_DATA
      Src: /src/frr/bfdd/bfd_packet.c:559,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:562,1
    - Dst: CMSG_DATA
      Src: /src/frr/bfdd/bfd_packet.c:572,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:589,1
    - Dst: CMSG_DATA
      Src: /src/frr/bfdd/bfd_packet.c:589,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:596,1
    - Dst: CMSG_DATA
      Src: /src/frr/bfdd/bfd_packet.c:596,1
    - Dst: getsockopt_ifindex
      Src: /src/frr/bfdd/bfd_packet.c:619,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 7
    argNames:
    - sd
    - msgbuf
    - msgbuflen
    - ttl
    - ifindex
    - local
    - peer
    argTypes:
    - int
    - uint8_t*
    - size_t
    - uint8_t*
    - ifindex_t*
    - struct sockaddr_any*
    - struct sockaddr_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 514
    functionDepth: 3
    functionLinenumber: 514
    functionLinenumberEnd: 622
    functionName: bfd_recv_ipv4
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - CMSG_NXTHDR
    - getsockopt_ifindex
    - memset
    - strerror
    - CMSG_FIRSTHDR
    - zlog_err
    - zlog_debug
    - CMSG_DATA
    - memcpy
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t bfd_recv_ipv4(int sd, uint8_t *msgbuf, size_t msgbuflen, uint8_t
      *ttl,\n\t\t      ifindex_t *ifindex, struct sockaddr_any *local,\n\t\t      struct
      sockaddr_any *peer)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:641,1
    - Dst: recvmsg
      Src: /src/frr/bfdd/bfd_packet.c:649,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd_packet.c:652,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:652,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/bfdd/bfd_packet.c:661,1
    - Dst: CMSG_NXTHDR
      Src: /src/frr/bfdd/bfd_packet.c:662,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:667,1
    - Dst: CMSG_DATA
      Src: /src/frr/bfdd/bfd_packet.c:667,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:670,1
    - Dst: CMSG_DATA
      Src: /src/frr/bfdd/bfd_packet.c:677,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bfdd/bfd_packet.c:688,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bfdd/bfd_packet.c:691,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 7
    argNames:
    - sd
    - msgbuf
    - msgbuflen
    - ttl
    - ifindex
    - local
    - peer
    argTypes:
    - int
    - uint8_t*
    - size_t
    - uint8_t*
    - ifindex_t*
    - struct sockaddr_any*
    - struct sockaddr_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 699
    functionName: bfd_recv_ipv6
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - CMSG_NXTHDR
    - memset
    - strerror
    - IN6_IS_ADDR_LINKLOCAL
    - CMSG_FIRSTHDR
    - zlog_err
    - zlog_debug
    - CMSG_DATA
    - memcpy
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t bfd_recv_ipv6(int sd, uint8_t *msgbuf, size_t msgbuflen, uint8_t
      *ttl,\n\t\t      ifindex_t *ifindex, struct sockaddr_any *local,\n\t\t      struct
      sockaddr_any *peer)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd_packet.c:704,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd_packet.c:705,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd_packet.c:708,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd_packet.c:709,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd_packet.c:712,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd_packet.c:713,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd_packet.c:716,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd_packet.c:717,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd_packet.c:720,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd_packet.c:721,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd_packet.c:724,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd_packet.c:725,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - bvrf
    - sd
    argTypes:
    - struct bfd_vrf_global*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 728
    functionName: bfd_sd_reschedule
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void bfd_sd_reschedule(struct bfd_vrf_global *bvrf, int sd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd_packet.c:743,1
    - Dst: satostr
      Src: /src/frr/bfdd/bfd_packet.c:743,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd_packet.c:748,1
    - Dst: satostr
      Src: /src/frr/bfdd/bfd_packet.c:749,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd_packet.c:754,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd_packet.c:759,1
    - Dst: va_start
      Src: /src/frr/bfdd/bfd_packet.c:763,1
    - Dst: vsnprintf
      Src: /src/frr/bfdd/bfd_packet.c:764,1
    - Dst: va_end
      Src: /src/frr/bfdd/bfd_packet.c:765,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:767,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 6
    argNames:
    - mhop
    - peer
    - local
    - ifindex
    - vrfid
    - fmt
    argTypes:
    - bool
    - struct sockaddr_any*
    - struct sockaddr_any*
    - ifindex_t
    - vrf_id_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 731
    functionDepth: 1
    functionLinenumber: 731
    functionLinenumberEnd: 769
    functionName: cp_debug
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - satostr
    - snprintf
    - vsnprintf
    - va_start
    - va_end
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: "void cp_debug(bool mhop, struct sockaddr_any *peer,\n\t\t     struct
      sockaddr_any *local, ifindex_t ifindex,\n\t\t     vrf_id_t vrfid, const char
      *fmt, ...)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:774,1
    - Dst: ntohs
      Src: /src/frr/bfdd/bfd_packet.c:777,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - bfd
    - cp
    argTypes:
    - struct bfd_session*
    - struct bfd_pkt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 800
    functionName: bfd_check_auth
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - ntohs
    - CHECK_FLAG
    linkageType: ''
    returnType: bool
    signature: "bool bfd_check_auth(const struct bfd_session *bfd,\n\t\t\t   const
      struct bfd_pkt *cp)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/bfdd/bfd_packet.c:804,1
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/bfd_packet.c:815,1
    - Dst: bfd_sd_reschedule
      Src: /src/frr/bfdd/bfd_packet.c:818,1
    - Dst: ptm_bfd_process_echo_pkt
      Src: /src/frr/bfdd/bfd_packet.c:822,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:827,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:828,1
    - Dst: bfd_recv_ipv4
      Src: /src/frr/bfdd/bfd_packet.c:834,1
    - Dst: bfd_recv_ipv6
      Src: /src/frr/bfdd/bfd_packet.c:838,1
    - Dst: if_lookup_by_index
      Src: /src/frr/bfdd/bfd_packet.c:852,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:859,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:866,1
    - Dst: BFD_GETVER
      Src: /src/frr/bfdd/bfd_packet.c:879,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:880,1
    - Dst: BFD_GETVER
      Src: /src/frr/bfdd/bfd_packet.c:881,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:886,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:892,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:897,1
    - Dst: ptm_bfd_sess_find
      Src: /src/frr/bfdd/bfd_packet.c:903,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:905,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:913,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:921,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:933,1
    - Dst: bfd_peer_mac_set
      Src: /src/frr/bfdd/bfd_packet.c:944,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd_packet.c:959,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:960,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd_packet.c:962,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd_packet.c:964,1
    - Dst: bfd_check_auth
      Src: /src/frr/bfdd/bfd_packet.c:967,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:968,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd_packet.c:977,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd_packet.c:978,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd_packet.c:980,1
    - Dst: BFD_GETCBIT
      Src: /src/frr/bfdd/bfd_packet.c:983,1
    - Dst: bs_state_handler
      Src: /src/frr/bfdd/bfd_packet.c:989,1
    - Dst: BFD_GETSTATE
      Src: /src/frr/bfdd/bfd_packet.c:989,1
    - Dst: BFD_GETFBIT
      Src: /src/frr/bfdd/bfd_packet.c:992,1
    - Dst: bs_final_handler
      Src: /src/frr/bfdd/bfd_packet.c:997,1
    - Dst: bfd_recvtimer_update
      Src: /src/frr/bfdd/bfd_packet.c:1016,1
    - Dst: bs_echo_timer_handler
      Src: /src/frr/bfdd/bfd_packet.c:1019,1
    - Dst: BFD_GETPBIT
      Src: /src/frr/bfdd/bfd_packet.c:1027,1
    - Dst: bs_final_handler
      Src: /src/frr/bfdd/bfd_packet.c:1029,1
    - Dst: ptm_bfd_snd
      Src: /src/frr/bfdd/bfd_packet.c:1032,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 104
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 802
    functionDepth: 4
    functionLinenumber: 802
    functionLinenumberEnd: 1034
    functionName: bfd_recv_cb
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - bfd_peer_mac_set
    - BFD_GETVER
    - BFD_GETFBIT
    - bfd_check_auth
    - ptm_bfd_process_echo_pkt
    - if_lookup_by_index
    - memset
    - bfd_recv_ipv6
    - BFD_GETPBIT
    - ptm_bfd_snd
    - EVENT_ARG
    - ntohl
    - bs_echo_timer_handler
    - bs_state_handler
    - bs_final_handler
    - BFD_GETCBIT
    - bfd_recv_ipv4
    - EVENT_FD
    - ptm_bfd_sess_find
    - bfd_recvtimer_update
    - bfd_sd_reschedule
    - cp_debug
    - BFD_GETSTATE
    linkageType: ''
    returnType: void
    signature: void bfd_recv_cb(struct event *t)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bfd_recv_ipv4_fp
      Src: /src/frr/bfdd/bfd_packet.c:1056,1
    - Dst: bfd_recv_ipv4
      Src: /src/frr/bfdd/bfd_packet.c:1067,1
    - Dst: bfd_recv_ipv6
      Src: /src/frr/bfdd/bfd_packet.c:1072,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:1079,1
    - Dst: bp_udp_send
      Src: /src/frr/bfdd/bfd_packet.c:1086,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd_packet.c:1095,1
    - Dst: cp_debug
      Src: /src/frr/bfdd/bfd_packet.c:1097,1
    - Dst: be64toh
      Src: /src/frr/bfdd/bfd_packet.c:1107,1
    - Dst: be64toh
      Src: /src/frr/bfdd/bfd_packet.c:1108,1
    - Dst: monotime_since
      Src: /src/frr/bfdd/bfd_packet.c:1109,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 5
    argNames:
    - bvrf
    - sd
    - ttl
    - my_discr
    - my_rtt
    argTypes:
    - struct bfd_vrf_global*
    - int
    - uint8_t*
    - uint32_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1043
    functionDepth: 4
    functionLinenumber: 1043
    functionLinenumberEnd: 1114
    functionName: bp_bfd_echo_in
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 1
    functionsReached:
    - be64toh
    - bfd_recv_ipv4
    - bfd_recv_ipv6
    - cp_debug
    - monotime_since
    - bfd_recv_ipv4_fp
    - bp_udp_send
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int bp_bfd_echo_in(struct bfd_vrf_global *bvrf, int sd, uint8_t *ttl,\n\t\t
      \  uint32_t *my_discr, uint64_t *my_rtt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:1132,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:1133,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1139,1
    - Dst: sendmsg
      Src: /src/frr/bfdd/bfd_packet.c:1146,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:1150,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1151,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:1155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - sd
    - data
    - datalen
    - bfd
    argTypes:
    - int
    - uint8_t*
    - size_t
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1161
    functionName: bp_udp_send_fp
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 1
    functionsReached:
    - memset
    - htons
    - strerror
    - zlog_debug
    - sendmsg
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bp_udp_send_fp(int sd, uint8_t *data, size_t datalen,\n\t\t   struct
      bfd_session *bfd)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1179,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1180,1
    - Dst: CMSG_LEN
      Src: /src/frr/bfdd/bfd_packet.c:1190,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/frr/bfdd/bfd_packet.c:1193,1
    - Dst: CMSG_LEN
      Src: /src/frr/bfdd/bfd_packet.c:1194,1
    - Dst: bp_set_ttl
      Src: /src/frr/bfdd/bfd_packet.c:1207,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:1210,1
    - Dst: CMSG_DATA
      Src: /src/frr/bfdd/bfd_packet.c:1210,1
    - Dst: sendmsg
      Src: /src/frr/bfdd/bfd_packet.c:1214,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:1217,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1218,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd_packet.c:1222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 6
    argNames:
    - sd
    - ttl
    - data
    - datalen
    - to
    - tolen
    argTypes:
    - int
    - uint8_t
    - uint8_t*
    - size_t
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1228
    functionName: bp_udp_send
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 2
    functionsReached:
    - bp_set_ttl
    - memset
    - strerror
    - CMSG_FIRSTHDR
    - zlog_debug
    - sendmsg
    - CMSG_DATA
    - CMSG_LEN
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int bp_udp_send(int sd, uint8_t ttl, uint8_t *data, size_t datalen,\n\t\tstruct
      sockaddr *to, socklen_t tolen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1243,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1244,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sd
    - value
    argTypes:
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1239
    functionDepth: 1
    functionLinenumber: 1239
    functionLinenumberEnd: 1250
    functionName: bp_set_ttl
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 1
    functionsReached:
    - strerror
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int bp_set_ttl(int sd, uint8_t value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1256,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1257,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sd
    - value
    argTypes:
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1263
    functionName: bp_set_tos
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - strerror
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int bp_set_tos(int sd, uint8_t value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1269,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1270,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - sd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1265
    functionDepth: 1
    functionLinenumber: 1265
    functionLinenumberEnd: 1275
    functionName: bp_set_reuse_addr
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - strerror
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool bp_set_reuse_addr(int sd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1281,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1282,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - sd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1277
    functionDepth: 1
    functionLinenumber: 1277
    functionLinenumberEnd: 1287
    functionName: bp_set_reuse_port
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - strerror
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool bp_set_reuse_port(int sd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bp_set_reuse_addr
      Src: /src/frr/bfdd/bfd_packet.c:1294,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1295,1
    - Dst: bp_set_reuse_port
      Src: /src/frr/bfdd/bfd_packet.c:1297,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1298,1
    - Dst: bp_set_ttl
      Src: /src/frr/bfdd/bfd_packet.c:1300,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1301,1
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1303,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1305,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1306,1
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1312,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1314,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1315,1
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1321,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1322,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1323,1
    - Dst: setsockopt_ifindex
      Src: /src/frr/bfdd/bfd_packet.c:1326,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1327,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - sd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1290
    functionDepth: 3
    functionLinenumber: 1290
    functionLinenumberEnd: 1330
    functionName: bp_set_ipopts
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - bp_set_ttl
    - strerror
    - bp_set_reuse_addr
    - zlog_fatal
    - setsockopt
    - bp_set_reuse_port
    - setsockopt_ifindex
    linkageType: ''
    returnType: void
    signature: void bp_set_ipopts(int sd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1336,1
    - Dst: htonl
      Src: /src/frr/bfdd/bfd_packet.c:1338,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:1339,1
    - Dst: bind
      Src: /src/frr/bfdd/bfd_packet.c:1340,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1341,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - sd
    - port
    argTypes:
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1332
    functionDepth: 1
    functionLinenumber: 1332
    functionLinenumberEnd: 1342
    functionName: bp_bind_ip
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - strerror
    - zlog_fatal
    - bind
    - htonl
    linkageType: ''
    returnType: void
    signature: void bp_bind_ip(int sd, uint16_t port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1348,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1349,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1353,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1353,1
    - Dst: bp_set_ipopts
      Src: /src/frr/bfdd/bfd_packet.c:1355,1
    - Dst: bp_bind_ip
      Src: /src/frr/bfdd/bfd_packet.c:1356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1344
    functionDepth: 4
    functionLinenumber: 1344
    functionLinenumberEnd: 1358
    functionName: bp_udp_shop
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - vrf_socket
    - strerror
    - frr_with_privs
    - zlog_fatal
    - bp_set_ipopts
    - bp_bind_ip
    linkageType: ''
    returnType: int
    signature: int bp_udp_shop(const struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1364,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1365,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1369,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1369,1
    - Dst: bp_set_ipopts
      Src: /src/frr/bfdd/bfd_packet.c:1371,1
    - Dst: bp_bind_ip
      Src: /src/frr/bfdd/bfd_packet.c:1372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1360
    functionDepth: 4
    functionLinenumber: 1360
    functionLinenumberEnd: 1375
    functionName: bp_udp_mhop
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - vrf_socket
    - strerror
    - frr_with_privs
    - zlog_fatal
    - bp_set_ipopts
    - bp_bind_ip
    linkageType: ''
    returnType: int
    signature: int bp_udp_mhop(const struct vrf *vrf)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/bfdd/bfd_packet.c:1386,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:1387,1
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1391,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1392,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd_packet.c:1396,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1397,1
    - Dst: bp_set_ttl
      Src: /src/frr/bfdd/bfd_packet.c:1402,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1403,1
    - Dst: bp_set_tos
      Src: /src/frr/bfdd/bfd_packet.c:1408,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1409,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1414,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:1419,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd_packet.c:1425,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1426,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1427,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:1432,1
    - Dst: bind
      Src: /src/frr/bfdd/bfd_packet.c:1433,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1377
    functionDepth: 3
    functionLinenumber: 1377
    functionLinenumberEnd: 1436
    functionName: bp_peer_socket
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - bp_set_ttl
    - memset
    - vrf_socket
    - htons
    - strerror
    - CHECK_FLAG
    - zlog_err
    - close
    - frr_with_privs
    - bp_set_tos
    - bind
    - memcpy
    linkageType: ''
    returnType: int
    signature: int bp_peer_socket(const struct bfd_session *bs)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/bfdd/bfd_packet.c:1452,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:1453,1
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1457,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1458,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd_packet.c:1462,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1463,1
    - Dst: bp_set_ttlv6
      Src: /src/frr/bfdd/bfd_packet.c:1468,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1469,1
    - Dst: bp_set_tosv6
      Src: /src/frr/bfdd/bfd_packet.c:1474,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1475,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1480,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:1485,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/frr/bfdd/bfd_packet.c:1486,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd_packet.c:1493,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1494,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1495,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:1500,1
    - Dst: bind
      Src: /src/frr/bfdd/bfd_packet.c:1501,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1443
    functionDepth: 3
    functionLinenumber: 1443
    functionLinenumberEnd: 1504
    functionName: bp_peer_socketv6
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - bp_set_tosv6
    - memset
    - vrf_socket
    - htons
    - strerror
    - CHECK_FLAG
    - bp_set_ttlv6
    - IN6_IS_ADDR_LINKLOCAL
    - zlog_err
    - close
    - frr_with_privs
    - bind
    - memcpy
    linkageType: ''
    returnType: int
    signature: int bp_peer_socketv6(const struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1510,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1512,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sd
    - value
    argTypes:
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1506
    functionDepth: 1
    functionLinenumber: 1506
    functionLinenumberEnd: 1518
    functionName: bp_set_ttlv6
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 1
    functionsReached:
    - strerror
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int bp_set_ttlv6(int sd, uint8_t value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1524,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1526,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - sd
    - value
    argTypes:
    - int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1520
    functionDepth: 1
    functionLinenumber: 1520
    functionLinenumberEnd: 1532
    functionName: bp_set_tosv6
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 1
    functionsReached:
    - strerror
    - zlog_warn
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int bp_set_tosv6(int sd, uint8_t value)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bp_set_reuse_addr
      Src: /src/frr/bfdd/bfd_packet.c:1539,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1540,1
    - Dst: bp_set_reuse_port
      Src: /src/frr/bfdd/bfd_packet.c:1542,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1543,1
    - Dst: bp_set_ttlv6
      Src: /src/frr/bfdd/bfd_packet.c:1545,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1546,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1548,1
    - Dst: setsockopt_ipv6_hoplimit
      Src: /src/frr/bfdd/bfd_packet.c:1550,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1551,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1552,1
    - Dst: setsockopt_ipv6_pktinfo
      Src: /src/frr/bfdd/bfd_packet.c:1554,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1555,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1556,1
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1558,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1561,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1562,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - sd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1534
    functionDepth: 2
    functionLinenumber: 1534
    functionLinenumberEnd: 1563
    functionName: bp_set_ipv6opts
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - bp_set_ttlv6
    - strerror
    - bp_set_reuse_addr
    - zlog_fatal
    - setsockopt
    - setsockopt_ipv6_pktinfo
    - setsockopt_ipv6_hoplimit
    - bp_set_reuse_port
    linkageType: ''
    returnType: void
    signature: void bp_set_ipv6opts(int sd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1569,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:1572,1
    - Dst: bind
      Src: /src/frr/bfdd/bfd_packet.c:1576,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1577,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - sd
    - port
    argTypes:
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 1565
    functionDepth: 1
    functionLinenumber: 1565
    functionLinenumberEnd: 1578
    functionName: bp_bind_ipv6
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - htons
    - strerror
    - zlog_fatal
    - bind
    linkageType: ''
    returnType: void
    signature: void bp_bind_ipv6(int sd, uint16_t port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1584,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1585,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1590,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1590,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1592,1
    - Dst: bp_set_ipv6opts
      Src: /src/frr/bfdd/bfd_packet.c:1597,1
    - Dst: bp_bind_ipv6
      Src: /src/frr/bfdd/bfd_packet.c:1598,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1580
    functionDepth: 3
    functionLinenumber: 1580
    functionLinenumberEnd: 1601
    functionName: bp_udp6_shop
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - bp_bind_ipv6
    - vrf_socket
    - bp_set_ipv6opts
    - strerror
    - frr_with_privs
    - zlog_fatal
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int bp_udp6_shop(const struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1607,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1608,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1613,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1613,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1615,1
    - Dst: bp_set_ipv6opts
      Src: /src/frr/bfdd/bfd_packet.c:1620,1
    - Dst: bp_bind_ipv6
      Src: /src/frr/bfdd/bfd_packet.c:1621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1603
    functionDepth: 3
    functionLinenumber: 1603
    functionLinenumberEnd: 1624
    functionName: bp_udp6_mhop
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - bp_bind_ipv6
    - vrf_socket
    - bp_set_ipv6opts
    - strerror
    - frr_with_privs
    - zlog_fatal
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int bp_udp6_mhop(const struct vrf *vrf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1643,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1644,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1649,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1649,1
    - Dst: setsockopt
      Src: /src/frr/bfdd/bfd_packet.c:1657,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1659,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1660,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1661,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1665,1
    - Dst: htons
      Src: /src/frr/bfdd/bfd_packet.c:1667,1
    - Dst: bind
      Src: /src/frr/bfdd/bfd_packet.c:1669,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1670,1
    - Dst: safe_strerror
      Src: /src/frr/bfdd/bfd_packet.c:1671,1
    - Dst: close
      Src: /src/frr/bfdd/bfd_packet.c:1672,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1639
    functionDepth: 3
    functionLinenumber: 1639
    functionLinenumberEnd: 1677
    functionName: bp_echo_socket
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - memset
    - vrf_socket
    - htons
    - strerror
    - close
    - frr_with_privs
    - zlog_fatal
    - zlog_warn
    - bind
    - safe_strerror
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int bp_echo_socket(const struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1683,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1684,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1687,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1687,1
    - Dst: bp_set_ipopts
      Src: /src/frr/bfdd/bfd_packet.c:1689,1
    - Dst: bp_bind_ip
      Src: /src/frr/bfdd/bfd_packet.c:1690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1693
      start: 1679
    functionDepth: 4
    functionLinenumber: 1679
    functionLinenumberEnd: 1693
    functionName: bp_echo_socket
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - vrf_socket
    - strerror
    - frr_with_privs
    - zlog_fatal
    - bp_set_ipopts
    - bp_bind_ip
    linkageType: ''
    returnType: int
    signature: int bp_echo_socket(const struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: frr_with_privs
      Src: /src/frr/bfdd/bfd_packet.c:1700,1
    - Dst: vrf_socket
      Src: /src/frr/bfdd/bfd_packet.c:1701,1
    - Dst: zlog_fatal
      Src: /src/frr/bfdd/bfd_packet.c:1705,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1706,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1708,1
    - Dst: bp_set_ipv6opts
      Src: /src/frr/bfdd/bfd_packet.c:1713,1
    - Dst: bp_bind_ipv6
      Src: /src/frr/bfdd/bfd_packet.c:1714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1696
    functionDepth: 3
    functionLinenumber: 1696
    functionLinenumberEnd: 1717
    functionName: bp_echov6_socket
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 0
    functionsReached:
    - bp_bind_ipv6
    - vrf_socket
    - bp_set_ipv6opts
    - strerror
    - frr_with_privs
    - zlog_fatal
    - zlog_warn
    linkageType: ''
    returnType: int
    signature: int bp_echov6_socket(const struct vrf *vrf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:1728,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1738,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:1740,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd_packet.c:1742,1
    - Dst: ioctl
      Src: /src/frr/bfdd/bfd_packet.c:1744,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfd_packet.c:1745,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfd_packet.c:1747,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:1748,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd_packet.c:1749,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd_packet.c:1752,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd_packet.c:1754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - sd
    - bfd
    - peer
    - ifp
    argTypes:
    - int
    - struct bfd_session*
    - struct sockaddr_any*
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1723
    functionDepth: 1
    functionLinenumber: 1723
    functionLinenumberEnd: 1757
    functionName: bfd_peer_mac_set
    functionSourceFile: /src/frr/bfdd/bfd_packet.c
    functionUses: 1
    functionsReached:
    - memset
    - strerror
    - CHECK_FLAG
    - strlcpy
    - ioctl
    - zlog_warn
    - UNSET_FLAG
    - SET_FLAG
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void bfd_peer_mac_set(int sd, struct bfd_session *bfd,\n\t\t      struct
      sockaddr_any *peer, struct interface *ifp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/frr/bfdd/bfdd_cli.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: bfd_cli_is_single_hop
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool bfd_cli_is_single_hop(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/frr/bfdd/bfdd_cli.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: bfd_cli_is_profile
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: bool
    signature: bool bfd_cli_is_profile(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: bfd_cli_show_header
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_header(struct vty *vty,\n\t\t\t const struct lyd_node
      *dnode\n\t\t\t __attribute__((__unused__)),\n\t\t\t bool show_defaults __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:89,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: bfd_cli_show_header_end
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_header_end(struct vty *vty, const struct lyd_node
      *dnode\n\t\t\t     __attribute__((__unused__)))"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:222,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:224,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:225,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:228,1
    - Dst: yang_dnode_exists
      Src: /src/frr/bfdd/bfdd_cli.c:230,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:231,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:232,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd_cli.c:234,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:235,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:239,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd_cli.c:240,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:241,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - vty
    - dnode
    - show_defaults
    - mhop
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 245
    functionName: _bfd_cli_show_peer
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - yang_dnode_exists
    - vty_out
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void _bfd_cli_show_peer(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \      bool show_defaults __attribute__((__unused__)),\n\t\t\t       bool mhop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_cli_show_peer
      Src: /src/frr/bfdd/bfdd_cli.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 247
    functionDepth: 3
    functionLinenumber: 247
    functionLinenumberEnd: 251
    functionName: bfd_cli_show_single_hop_peer
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - _bfd_cli_show_peer
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_single_hop_peer(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t  bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_cli_show_peer
      Src: /src/frr/bfdd/bfdd_cli.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 257
    functionName: bfd_cli_show_multi_hop_peer
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - _bfd_cli_show_peer
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_multi_hop_peer(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:262,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - vty
    - dnode
    argTypes:
    - struct vty*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 264
    functionName: bfd_cli_show_peer_end
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_peer_end(struct vty *vty, const struct lyd_node
      *dnode\n\t\t\t   __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:280,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_cli.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 282
    functionName: bfd_cli_show_shutdown
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_shutdown(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t   bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:298,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_cli.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 300
    functionName: bfd_cli_show_passive
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_passive(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:336,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: bfd_cli_show_minimum_ttl
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_minimum_ttl(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:353,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 355
    functionName: bfd_cli_show_mult
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_mult(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_cli.c:375,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 378
    functionName: bfd_cli_show_rx
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_rx(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_cli.c:398,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: bfd_cli_show_tx
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_tx(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \    bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:433,1
    - Dst: yang_dnode_get_bool
      Src: /src/frr/bfdd/bfdd_cli.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 430
    functionDepth: 2
    functionLinenumber: 430
    functionLinenumberEnd: 435
    functionName: bfd_cli_show_echo
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_bool
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_echo(struct vty *vty, const struct lyd_node *dnode,\n\t\t
      \      bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_cli.c:483,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 486
    functionName: bfd_cli_show_desired_echo_transmission_interval
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_desired_echo_transmission_interval(\n\tstruct vty
      *vty, const struct lyd_node *dnode, bool show_defaults)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_dnode_get_uint32
      Src: /src/frr/bfdd/bfdd_cli.c:518,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:521,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 514
    functionDepth: 2
    functionLinenumber: 514
    functionLinenumberEnd: 524
    functionName: bfd_cli_show_required_echo_receive_interval
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vty_out
    - yang_dnode_get_uint32
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_required_echo_receive_interval(struct vty *vty,\n\t\t\t\t\t\t
      const struct lyd_node *dnode,\n\t\t\t\t\t\t bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:570,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 567
    functionDepth: 2
    functionLinenumber: 567
    functionLinenumberEnd: 571
    functionName: bfd_cli_show_profile
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_show_profile(struct vty *vty, const struct lyd_node *dnode,\n\t\t\t
      \ bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_cli.c:651,1
    - Dst: yang_dnode_get_string
      Src: /src/frr/bfdd/bfdd_cli.c:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - vty
    - dnode
    - show_defaults
    argTypes:
    - struct vty*
    - struct lyd_node*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 648
    functionDepth: 2
    functionLinenumber: 648
    functionLinenumberEnd: 652
    functionName: bfd_cli_peer_profile_show
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get_string
    - vty_out
    linkageType: ''
    returnType: void
    signature: "void bfd_cli_peer_profile_show(struct vty *vty, const struct lyd_node
      *dnode,\n\t\t\t       bool show_defaults)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/bfdd_cli.c:666,1
    - Dst: vector_set
      Src: /src/frr/bfdd/bfdd_cli.c:667,1
    - Dst: XSTRDUP
      Src: /src/frr/bfdd/bfdd_cli.c:667,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - comps
    - token
    argTypes:
    - vector
    - struct cmd_token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 661
    functionDepth: 3
    functionLinenumber: 661
    functionLinenumberEnd: 669
    functionName: bfd_profile_var
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - vector_set
    - XSTRDUP
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfd_profile_var(vector comps, struct cmd_token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:679,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:680,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:682,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:683,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:685,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:686,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:687,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:688,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:689,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:690,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:691,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:692,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:693,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:694,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:695,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:696,1
    - Dst: cmd_variable_handler_register
      Src: /src/frr/bfdd/bfdd_cli.c:699,1
    - Dst: install_node
      Src: /src/frr/bfdd/bfdd_cli.c:701,1
    - Dst: install_default
      Src: /src/frr/bfdd/bfdd_cli.c:702,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:704,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:705,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:707,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:708,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:709,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:710,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:711,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:712,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:713,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:714,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:715,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:716,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_cli.c:717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 676
    functionDepth: 6
    functionLinenumber: 676
    functionLinenumberEnd: 718
    functionName: bfdd_cli_init
    functionSourceFile: /src/frr/bfdd/bfdd_cli.c
    functionUses: 0
    functionsReached:
    - install_element
    - cmd_variable_handler_register
    - install_default
    - install_node
    linkageType: ''
    returnType: void
    signature: void bfdd_cli_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_next
      Src: /src/frr/bfdd/bfdd_nb_state.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: bfdd_bfd_sessions_single_hop_get_next
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - bfd_session_next
    linkageType: ''
    returnType: void
    signature: 'void *

      bfdd_bfd_sessions_single_hop_get_next(struct nb_cb_get_next_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_nb_state.c:31,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_nb_state.c:34,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_nb_state.c:35,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_nb_state.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 40
    functionName: bfdd_bfd_sessions_single_hop_get_keys
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - strlcpy
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_sessions_single_hop_get_keys(struct nb_cb_get_keys_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtosa
      Src: /src/frr/bfdd/bfdd_nb_state.c:51,1
    - Dst: memset
      Src: /src/frr/bfdd/bfdd_nb_state.c:52,1
    - Dst: gen_bfd_key
      Src: /src/frr/bfdd/bfdd_nb_state.c:53,1
    - Dst: bfd_key_lookup
      Src: /src/frr/bfdd/bfdd_nb_state.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 56
    functionName: bfdd_bfd_sessions_single_hop_lookup_entry
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - strtosa
    - gen_bfd_key
    - memset
    - bfd_key_lookup
    linkageType: ''
    returnType: void
    signature: 'void *

      bfdd_bfd_sessions_single_hop_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/bfdd/bfdd_nb_state.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: bfdd_bfd_sessions_single_hop_stats_local_discriminator_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_local_discriminator_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/bfdd/bfdd_nb_state.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 79
    functionName: bfdd_bfd_sessions_single_hop_stats_local_state_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_local_state_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/bfdd/bfdd_nb_state.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: bfdd_bfd_sessions_single_hop_stats_local_diagnostic_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_local_diagnostic_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_int8
      Src: /src/frr/bfdd/bfdd_nb_state.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 3
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: bfdd_bfd_sessions_single_hop_stats_local_multiplier_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_int8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_local_multiplier_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/bfdd/bfdd_nb_state.c:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 116
    functionName: bfdd_bfd_sessions_single_hop_stats_remote_discriminator_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_remote_discriminator_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/bfdd/bfdd_nb_state.c:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: bfdd_bfd_sessions_single_hop_stats_remote_state_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_remote_state_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_enum
      Src: /src/frr/bfdd/bfdd_nb_state.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 4
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: bfdd_bfd_sessions_single_hop_stats_remote_diagnostic_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_remote_diagnostic_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_int8
      Src: /src/frr/bfdd/bfdd_nb_state.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 149
    functionName: bfdd_bfd_sessions_single_hop_stats_remote_multiplier_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_int8
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_remote_multiplier_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/bfdd/bfdd_nb_state.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 155
    functionDepth: 3
    functionLinenumber: 155
    functionLinenumberEnd: 163
    functionName: bfdd_bfd_sessions_single_hop_stats_negotiated_transmission_interval_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_negotiated_transmission_interval_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/bfdd/bfdd_nb_state.c:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 177
    functionName: bfdd_bfd_sessions_single_hop_stats_negotiated_receive_interval_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_negotiated_receive_interval_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_nb_state.c:197,1
    - Dst: yang_data_new_enum
      Src: /src/frr/bfdd/bfdd_nb_state.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 203
    functionName: bfdd_bfd_sessions_single_hop_stats_detection_mode_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_enum
    - CHECK_FLAG
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_detection_mode_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 217
    functionName: bfdd_bfd_sessions_single_hop_stats_last_down_time_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_last_down_time_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 231
    functionName: bfdd_bfd_sessions_single_hop_stats_last_up_time_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_last_up_time_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint64
      Src: /src/frr/bfdd/bfdd_nb_state.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 3
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: bfdd_bfd_sessions_single_hop_stats_session_down_count_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint64
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_session_down_count_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint64
      Src: /src/frr/bfdd/bfdd_nb_state.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 248
    functionDepth: 3
    functionLinenumber: 248
    functionLinenumberEnd: 254
    functionName: bfdd_bfd_sessions_single_hop_stats_session_up_count_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint64
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *bfdd_bfd_sessions_single_hop_stats_session_up_count_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint64
      Src: /src/frr/bfdd/bfdd_nb_state.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 3
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: bfdd_bfd_sessions_single_hop_stats_control_packet_input_count_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint64
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_control_packet_input_count_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint64
      Src: /src/frr/bfdd/bfdd_nb_state.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 273
    functionDepth: 3
    functionLinenumber: 273
    functionLinenumberEnd: 280
    functionName: bfdd_bfd_sessions_single_hop_stats_control_packet_output_count_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint64
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_control_packet_output_count_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint32
      Src: /src/frr/bfdd/bfdd_nb_state.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 294
    functionName: bfdd_bfd_sessions_single_hop_stats_negotiated_echo_transmission_interval_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint32
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_negotiated_echo_transmission_interval_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint64
      Src: /src/frr/bfdd/bfdd_nb_state.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 306
    functionName: bfdd_bfd_sessions_single_hop_stats_echo_packet_input_count_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint64
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_echo_packet_input_count_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yang_data_new_uint64
      Src: /src/frr/bfdd/bfdd_nb_state.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_elem_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 311
    functionDepth: 3
    functionLinenumber: 311
    functionLinenumberEnd: 318
    functionName: bfdd_bfd_sessions_single_hop_stats_echo_packet_output_count_get_elem
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - yang_data_new_uint64
    linkageType: ''
    returnType: struct yang_data
    signature: "struct yang_data *\nbfdd_bfd_sessions_single_hop_stats_echo_packet_output_count_get_elem(\n\tstruct
      nb_cb_get_elem_args *args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_next
      Src: /src/frr/bfdd/bfdd_nb_state.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_next_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 327
    functionName: bfdd_bfd_sessions_multi_hop_get_next
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - bfd_session_next
    linkageType: ''
    returnType: void
    signature: 'void *

      bfdd_bfd_sessions_multi_hop_get_next(struct nb_cb_get_next_args *args)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_nb_state.c:334,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_nb_state.c:335,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_nb_state.c:338,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_nb_state.c:339,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_nb_state.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_get_keys_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 344
    functionName: bfdd_bfd_sessions_multi_hop_get_keys
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - strlcpy
    linkageType: ''
    returnType: int
    signature: int bfdd_bfd_sessions_multi_hop_get_keys(struct nb_cb_get_keys_args
      *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strtosa
      Src: /src/frr/bfdd/bfdd_nb_state.c:355,1
    - Dst: strtosa
      Src: /src/frr/bfdd/bfdd_nb_state.c:356,1
    - Dst: gen_bfd_key
      Src: /src/frr/bfdd/bfdd_nb_state.c:357,1
    - Dst: bfd_key_lookup
      Src: /src/frr/bfdd/bfdd_nb_state.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - args
    argTypes:
    - struct nb_cb_lookup_entry_args*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 360
    functionName: bfdd_bfd_sessions_multi_hop_lookup_entry
    functionSourceFile: /src/frr/bfdd/bfdd_nb_state.c
    functionUses: 0
    functionsReached:
    - strtosa
    - gen_bfd_key
    - bfd_key_lookup
    linkageType: ''
    returnType: void
    signature: 'void *

      bfdd_bfd_sessions_multi_hop_lookup_entry(struct nb_cb_lookup_entry_args *args)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/bfd.c:61,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfd.c:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 69
    functionName: bfd_profile_lookup
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - strcmp
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct bfd_profile
    signature: struct bfd_profile *bfd_profile_lookup(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - bp
    argTypes:
    - struct bfd_profile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 82
    functionName: bfd_profile_set_default
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bfd_profile_set_default(struct bfd_profile *bp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_profile_lookup
      Src: /src/frr/bfdd/bfd.c:89,1
    - Dst: XCALLOC
      Src: /src/frr/bfdd/bfd.c:93,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:94,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bfdd/bfd.c:95,1
    - Dst: bfd_profile_set_default
      Src: /src/frr/bfdd/bfd.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 101
    functionName: bfd_profile_new
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - bfd_profile_set_default
    - XCALLOC
    - strlcpy
    - TAILQ_INSERT_TAIL
    - bfd_profile_lookup
    linkageType: ''
    returnType: struct bfd_profile
    signature: struct bfd_profile *bfd_profile_new(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_profile_detach
      Src: /src/frr/bfdd/bfd.c:107,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/bfd.c:110,1
    - Dst: XFREE
      Src: /src/frr/bfdd/bfd.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bp
    argTypes:
    - struct bfd_profile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 113
    functionName: bfd_profile_free
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - XFREE
    - bfd_profile_detach
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: void bfd_profile_free(struct bfd_profile *bp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bfdd/bfd.c:122,1
    - Dst: XFREE
      Src: /src/frr/bfdd/bfd.c:123,1
    - Dst: XSTRDUP
      Src: /src/frr/bfdd/bfd.c:125,1
    - Dst: XSTRDUP
      Src: /src/frr/bfdd/bfd.c:128,1
    - Dst: bfd_profile_lookup
      Src: /src/frr/bfdd/bfd.c:131,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfd.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - profname
    - bs
    argTypes:
    - char*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 138
    functionName: bfd_profile_apply
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - strcmp
    - bfd_session_apply
    - bfd_profile_lookup
    - XFREE
    - XSTRDUP
    linkageType: ''
    returnType: void
    signature: void bfd_profile_apply(const char *profname, struct bfd_session *bs)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:167,1
    - Dst: bfd_set_echo
      Src: /src/frr/bfdd/bfd.c:183,1
    - Dst: bfd_set_echo
      Src: /src/frr/bfdd/bfd.c:185,1
    - Dst: bfd_set_passive_mode
      Src: /src/frr/bfdd/bfd.c:196,1
    - Dst: bfd_set_passive_mode
      Src: /src/frr/bfdd/bfd.c:198,1
    - Dst: bfd_set_shutdown
      Src: /src/frr/bfdd/bfd.c:202,1
    - Dst: bfd_set_shutdown
      Src: /src/frr/bfdd/bfd.c:204,1
    - Dst: bfd_set_polling
      Src: /src/frr/bfdd/bfd.c:210,1
    - Dst: bfd_dplane_update_session
      Src: /src/frr/bfdd/bfd.c:213,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 214
    functionName: bfd_session_apply
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 10
    functionsReached:
    - bfd_set_polling
    - bfd_set_shutdown
    - bfd_set_passive_mode
    - CHECK_FLAG
    - bfd_set_echo
    - bfd_dplane_update_session
    linkageType: ''
    returnType: void
    signature: void bfd_session_apply(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bfdd/bfd.c:219,1
    - Dst: bfd_session_apply
      Src: /src/frr/bfdd/bfd.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 223
    functionName: bfd_profile_remove
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - bfd_session_apply
    - XFREE
    linkageType: ''
    returnType: void
    signature: void bfd_profile_remove(struct bfd_session *bs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd.c:229,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:234,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:236,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:241,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:243,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:250,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:252,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:254,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 6
    argNames:
    - key
    - peer
    - local
    - mhop
    - ifname
    - vrfname
    argTypes:
    - struct bfd_key*
    - struct sockaddr_any*
    - struct sockaddr_any*
    - bool
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 255
    functionName: gen_bfd_key
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 3
    functionsReached:
    - memcpy
    - strlcpy
    - memset
    linkageType: ''
    returnType: void
    signature: "void gen_bfd_key(struct bfd_key *key, struct sockaddr_any *peer,\n\t\t
      struct sockaddr_any *local, bool mhop, const char *ifname,\n\t\t const char
      *vrfname)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pl_find
      Src: /src/frr/bfdd/bfd.c:265,1
    - Dst: gen_bfd_key
      Src: /src/frr/bfdd/bfd.c:273,1
    - Dst: bfd_key_lookup
      Src: /src/frr/bfdd/bfd.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - bpc
    argTypes:
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 277
    functionName: bs_peer_find
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - gen_bfd_key
    - pl_find
    - bfd_key_lookup
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *bs_peer_find(struct bfd_peer_cfg *bpc)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: vrf_lookup_by_name
      Src: /src/frr/bfdd/bfd.c:300,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd.c:302,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bfdd/bfd.c:308,1
    - Dst: assert
      Src: /src/frr/bfdd/bfd.c:311,1
    - Dst: if_lookup_by_name
      Src: /src/frr/bfdd/bfd.c:314,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd.c:316,1
    - Dst: bfd_dplane_add_session
      Src: /src/frr/bfdd/bfd.c:330,1
    - Dst: control_notify_config
      Src: /src/frr/bfdd/bfd.c:331,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:338,1
    - Dst: close
      Src: /src/frr/bfdd/bfd.c:340,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:349,1
    - Dst: bp_peer_socket
      Src: /src/frr/bfdd/bfd.c:350,1
    - Dst: bp_peer_socketv6
      Src: /src/frr/bfdd/bfd.c:354,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:366,1
    - Dst: bfd_recvtimer_update
      Src: /src/frr/bfdd/bfd.c:367,1
    - Dst: ptm_bfd_start_xmt_timer
      Src: /src/frr/bfdd/bfd.c:368,1
    - Dst: bfd_rtt_init
      Src: /src/frr/bfdd/bfd.c:372,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts:
    - condition: (vrf)
      pos:
        line_end: 310
        line_start: 310
        source_file: /src/frr/bfdd/bfd.c
    constantsTouched: []
    func_position:
      end: 375
      start: 285
    functionDepth: 4
    functionLinenumber: 285
    functionLinenumberEnd: 375
    functionName: bfd_session_enable
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - control_notify_config
    - bp_peer_socket
    - if_lookup_by_name
    - bfd_recvtimer_update
    - ptm_bfd_start_xmt_timer
    - bfd_rtt_init
    - CHECK_FLAG
    - vrf_lookup_by_name
    - zlog_err
    - close
    - zlog_debug
    - vrf_lookup_by_id
    - bfd_dplane_add_session
    - bp_peer_socketv6
    - assert
    linkageType: ''
    returnType: int
    signature: int bfd_session_enable(struct bfd_session *bs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/bfdd/bfd.c:391,1
    - Dst: bfd_recvtimer_delete
      Src: /src/frr/bfdd/bfd.c:396,1
    - Dst: bfd_xmttimer_delete
      Src: /src/frr/bfdd/bfd.c:397,1
    - Dst: ptm_bfd_echo_stop
      Src: /src/frr/bfdd/bfd.c:398,1
    - Dst: ptm_bfd_sess_dn
      Src: /src/frr/bfdd/bfd.c:401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 402
    functionName: bfd_session_disable
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_recvtimer_delete
    - ptm_bfd_sess_dn
    - close
    - bfd_xmttimer_delete
    - ptm_bfd_echo_stop
    linkageType: ''
    returnType: void
    signature: void bfd_session_disable(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/bfdd/bfd.c:413,1
    - Dst: frr_weak_random
      Src: /src/frr/bfdd/bfd.c:414,1
    - Dst: bfd_id_lookup
      Src: /src/frr/bfdd/bfd.c:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 418
    functionName: ptm_bfd_gen_ID
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_id_lookup
    - frr_weak_random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ptm_bfd_gen_ID(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: frr_weak_random
      Src: /src/frr/bfdd/bfd.c:435,1
    - Dst: bfd_echo_xmttimer_update
      Src: /src/frr/bfdd/bfd.c:439,1
    - Dst: bfd_xmttimer_update
      Src: /src/frr/bfdd/bfd.c:441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - bfd
    - is_echo
    argTypes:
    - struct bfd_session*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 442
    functionName: ptm_bfd_start_xmt_timer
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - frr_weak_random
    - bfd_echo_xmttimer_update
    - bfd_xmttimer_update
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_start_xmt_timer(struct bfd_session *bfd, bool is_echo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:450,1
    - Dst: ptm_bfd_echo_fp_snd
      Src: /src/frr/bfdd/bfd.c:452,1
    - Dst: ptm_bfd_echo_snd
      Src: /src/frr/bfdd/bfd.c:454,1
    - Dst: ptm_bfd_start_xmt_timer
      Src: /src/frr/bfdd/bfd.c:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 444
    functionDepth: 4
    functionLinenumber: 444
    functionLinenumberEnd: 461
    functionName: ptm_bfd_echo_xmt_TO
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_echo_fp_snd
    - CHECK_FLAG
    - ptm_bfd_start_xmt_timer
    - ptm_bfd_echo_snd
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_echo_xmt_TO(struct bfd_session *bfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ptm_bfd_snd
      Src: /src/frr/bfdd/bfd.c:466,1
    - Dst: ptm_bfd_start_xmt_timer
      Src: /src/frr/bfdd/bfd.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - bfd
    - fbit
    argTypes:
    - struct bfd_session*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 463
    functionDepth: 3
    functionLinenumber: 463
    functionLinenumberEnd: 470
    functionName: ptm_bfd_xmt_TO
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_snd
    - ptm_bfd_start_xmt_timer
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_xmt_TO(struct bfd_session *bfd, int fbit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd.c:476,1
    - Dst: bfd_echo_xmttimer_delete
      Src: /src/frr/bfdd/bfd.c:478,1
    - Dst: bfd_echo_recvtimer_delete
      Src: /src/frr/bfdd/bfd.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 480
    functionName: ptm_bfd_echo_stop
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - UNSET_FLAG
    - bfd_echo_xmttimer_delete
    - bfd_echo_recvtimer_delete
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_echo_stop(struct bfd_session *bfd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_echo_recvtimer_update
      Src: /src/frr/bfdd/bfd.c:486,1
    - Dst: ptm_bfd_echo_xmt_TO
      Src: /src/frr/bfdd/bfd.c:487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 482
    functionDepth: 5
    functionLinenumber: 482
    functionLinenumberEnd: 489
    functionName: ptm_bfd_echo_start
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_echo_recvtimer_update
    - ptm_bfd_echo_xmt_TO
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_echo_start(struct bfd_session *bfd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bfdd/bfd.c:497,1
    - Dst: bfd_set_polling
      Src: /src/frr/bfdd/bfd.c:500,1
    - Dst: ptm_bfd_snd
      Src: /src/frr/bfdd/bfd.c:503,1
    - Dst: control_notify
      Src: /src/frr/bfdd/bfd.c:505,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:510,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfd.c:511,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 514
    functionName: ptm_bfd_sess_up
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_set_polling
    - bs_to_string
    - control_notify
    - monotime
    - ptm_bfd_snd
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_sess_up(struct bfd_session *bfd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: monotime
      Src: /src/frr/bfdd/bfd.c:525,1
    - Dst: ptm_bfd_snd
      Src: /src/frr/bfdd/bfd.c:534,1
    - Dst: bs_set_slow_timers
      Src: /src/frr/bfdd/bfd.c:537,1
    - Dst: control_notify
      Src: /src/frr/bfdd/bfd.c:541,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:544,1
    - Dst: ptm_bfd_echo_stop
      Src: /src/frr/bfdd/bfd.c:545,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:548,1
    - Dst: bfd_recvtimer_delete
      Src: /src/frr/bfdd/bfd.c:549,1
    - Dst: bfd_xmttimer_delete
      Src: /src/frr/bfdd/bfd.c:550,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:556,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfd.c:557,1
    - Dst: get_diag_str
      Src: /src/frr/bfdd/bfd.c:559,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd.c:563,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd.c:564,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd.c:566,1
    - Dst: bfd_rtt_init
      Src: /src/frr/bfdd/bfd.c:569,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - bfd
    - diag
    argTypes:
    - struct bfd_session*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 516
    functionDepth: 3
    functionLinenumber: 516
    functionLinenumberEnd: 570
    functionName: ptm_bfd_sess_dn
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - bfd_recvtimer_delete
    - memset
    - bfd_rtt_init
    - bs_to_string
    - bs_set_slow_timers
    - CHECK_FLAG
    - monotime
    - control_notify
    - ptm_bfd_snd
    - zlog_debug
    - get_diag_str
    - UNSET_FLAG
    - bfd_xmttimer_delete
    - ptm_bfd_echo_stop
    linkageType: ''
    returnType: void
    signature: void ptm_bfd_sess_dn(struct bfd_session *bfd, uint8_t diag)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bfd_id_lookup
      Src: /src/frr/bfdd/bfd.c:577,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:583,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - sa
    - ldisc
    argTypes:
    - struct sockaddr_any*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 595
    functionName: bfd_find_disc
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_id_lookup
    - memcmp
    linkageType: ''
    returnType: struct bfd_session
    signature: "struct bfd_session *bfd_find_disc(struct sockaddr_any *sa,\n\t\t\t\t\t
      uint32_t ldisc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_find_disc
      Src: /src/frr/bfdd/bfd.c:609,1
    - Dst: ntohl
      Src: /src/frr/bfdd/bfd.c:609,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bfdd/bfd.c:612,1
    - Dst: gen_bfd_key
      Src: /src/frr/bfdd/bfd.c:614,1
    - Dst: bfd_key_lookup
      Src: /src/frr/bfdd/bfd.c:618,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - cp
    - peer
    - local
    - ifp
    - vrfid
    - is_mhop
    argTypes:
    - struct bfd_pkt*
    - struct sockaddr_any*
    - struct sockaddr_any*
    - struct interface*
    - vrf_id_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 619
    functionName: ptm_bfd_sess_find
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - bfd_find_disc
    - vrf_lookup_by_id
    - bfd_key_lookup
    - gen_bfd_key
    - ntohl
    linkageType: ''
    returnType: struct bfd_session
    signature: "struct bfd_session *ptm_bfd_sess_find(struct bfd_pkt *cp,\n\t\t\t\t
      \     struct sockaddr_any *peer,\n\t\t\t\t      struct sockaddr_any *local,\n\t\t\t\t
      \     struct interface *ifp,\n\t\t\t\t      vrf_id_t vrfid,\n\t\t\t\t      bool
      is_mhop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/bfd.c:623,1
    - Dst: ptm_bfd_xmt_TO
      Src: /src/frr/bfdd/bfd.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 621
    functionDepth: 4
    functionLinenumber: 621
    functionLinenumberEnd: 626
    functionName: bfd_xmt_cb
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_xmt_TO
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bfd_xmt_cb(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/bfd.c:630,1
    - Dst: ptm_bfd_echo_xmt_TO
      Src: /src/frr/bfdd/bfd.c:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 628
    functionDepth: 5
    functionLinenumber: 628
    functionLinenumberEnd: 634
    functionName: bfd_echo_xmt_cb
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_echo_xmt_TO
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bfd_echo_xmt_cb(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/bfd.c:639,1
    - Dst: ptm_bfd_sess_dn
      Src: /src/frr/bfdd/bfd.c:644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 637
    functionDepth: 4
    functionLinenumber: 637
    functionLinenumberEnd: 647
    functionName: bfd_recvtimer_cb
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_sess_dn
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bfd_recvtimer_cb(struct event *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/bfd.c:652,1
    - Dst: ptm_bfd_sess_dn
      Src: /src/frr/bfdd/bfd.c:657,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 650
    functionDepth: 4
    functionLinenumber: 650
    functionLinenumberEnd: 660
    functionName: bfd_echo_recvtimer_cb
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_sess_dn
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bfd_echo_recvtimer_cb(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bfdd/bfd.c:666,1
    - Dst: bfd_profile_set_default
      Src: /src/frr/bfdd/bfd.c:669,1
    - Dst: bs_set_slow_timers
      Src: /src/frr/bfdd/bfd.c:680,1
    - Dst: monotime
      Src: /src/frr/bfdd/bfd.c:687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 662
    functionDepth: 2
    functionLinenumber: 662
    functionLinenumberEnd: 691
    functionName: bfd_session_new
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - bs_set_slow_timers
    - bfd_profile_set_default
    - monotime
    - XCALLOC
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *bfd_session_new(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pl_find
      Src: /src/frr/bfdd/bfd.c:700,1
    - Dst: pl_new
      Src: /src/frr/bfdd/bfd.c:705,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfd.c:716,1
    - Dst: pl_find
      Src: /src/frr/bfdd/bfd.c:718,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:721,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - bs
    - nlabel
    argTypes:
    - struct bfd_session*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 723
    functionName: bfd_session_update_label
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - strcmp
    - pl_find
    - pl_new
    linkageType: ''
    returnType: int
    signature: int bfd_session_update_label(struct bfd_session *bs, const char *nlabel)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_update_label
      Src: /src/frr/bfdd/bfd.c:754,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd.c:757,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd.c:759,1
    - Dst: bfd_set_echo
      Src: /src/frr/bfdd/bfd.c:767,1
    - Dst: bfd_set_passive_mode
      Src: /src/frr/bfdd/bfd.c:774,1
    - Dst: bfd_set_shutdown
      Src: /src/frr/bfdd/bfd.c:775,1
    - Dst: bfd_profile_apply
      Src: /src/frr/bfdd/bfd.c:784,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 2
    argNames:
    - bs
    - bpc
    argTypes:
    - struct bfd_session*
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 725
    functionDepth: 2
    functionLinenumber: 725
    functionLinenumberEnd: 785
    functionName: _bfd_session_update
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 3
    functionsReached:
    - bfd_set_shutdown
    - bfd_set_passive_mode
    - bfd_set_echo
    - SET_FLAG
    - UNSET_FLAG
    - bfd_session_update_label
    - bfd_profile_apply
    linkageType: ''
    returnType: void
    signature: "void _bfd_session_update(struct bfd_session *bs,\n\t\t\t\tstruct bfd_peer_cfg
      *bpc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_session_update
      Src: /src/frr/bfdd/bfd.c:793,1
    - Dst: control_notify_config
      Src: /src/frr/bfdd/bfd.c:795,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bs
    - bpc
    argTypes:
    - struct bfd_session*
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 787
    functionDepth: 3
    functionLinenumber: 787
    functionLinenumberEnd: 798
    functionName: bfd_session_update
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 4
    functionsReached:
    - control_notify_config
    - _bfd_session_update
    linkageType: ''
    returnType: int
    signature: int bfd_session_update(struct bfd_session *bs, struct bfd_peer_cfg
      *bpc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_disable
      Src: /src/frr/bfdd/bfd.c:804,1
    - Dst: bfd_dplane_delete_session
      Src: /src/frr/bfdd/bfd.c:807,1
    - Dst: bfd_key_delete
      Src: /src/frr/bfdd/bfd.c:809,1
    - Dst: bfd_id_delete
      Src: /src/frr/bfdd/bfd.c:810,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/bfd.c:813,1
    - Dst: bs_observer_del
      Src: /src/frr/bfdd/bfd.c:820,1
    - Dst: pl_free
      Src: /src/frr/bfdd/bfd.c:822,1
    - Dst: XFREE
      Src: /src/frr/bfdd/bfd.c:824,1
    - Dst: XFREE
      Src: /src/frr/bfdd/bfd.c:825,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 800
    functionDepth: 2
    functionLinenumber: 800
    functionLinenumberEnd: 826
    functionName: bfd_session_free
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached:
    - bs_observer_del
    - bfd_dplane_delete_session
    - bfd_id_delete
    - XFREE
    - bfd_session_disable
    - bfd_key_delete
    - pl_free
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfd_session_free(struct bfd_session *bs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bs_peer_find
      Src: /src/frr/bfdd/bfd.c:833,1
    - Dst: bfd_session_update
      Src: /src/frr/bfdd/bfd.c:836,1
    - Dst: bfd_session_new
      Src: /src/frr/bfdd/bfd.c:843,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:850,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:854,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:857,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd.c:862,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:867,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:869,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:874,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:876,1
    - Dst: assert
      Src: /src/frr/bfdd/bfd.c:881,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd.c:886,1
    - Dst: bs_registrate
      Src: /src/frr/bfdd/bfd.c:890,1
    - Dst: _bfd_session_update
      Src: /src/frr/bfdd/bfd.c:894,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - bpc
    argTypes:
    - struct bfd_peer_cfg*
    assertStmts:
    - condition: (1)
      pos:
        line_end: 880
        line_start: 880
        source_file: /src/frr/bfdd/bfd.c
    constantsTouched: []
    func_position:
      end: 897
      start: 828
    functionDepth: 4
    functionLinenumber: 828
    functionLinenumberEnd: 897
    functionName: ptm_bfd_sess_new
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - assert
    - bfd_session_update
    - bs_registrate
    - strlcpy
    - bfd_session_new
    - SET_FLAG
    - _bfd_session_update
    - bs_peer_find
    - memcpy
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *ptm_bfd_sess_new(struct bfd_peer_cfg *bpc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bfd_key_insert
      Src: /src/frr/bfdd/bfd.c:902,1
    - Dst: ptm_bfd_gen_ID
      Src: /src/frr/bfdd/bfd.c:903,1
    - Dst: bfd_id_insert
      Src: /src/frr/bfdd/bfd.c:904,1
    - Dst: bfd_session_enable
      Src: /src/frr/bfdd/bfd.c:907,1
    - Dst: bfd_session_free
      Src: /src/frr/bfdd/bfd.c:909,1
    - Dst: bs_observer_add
      Src: /src/frr/bfdd/bfd.c:915,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:918,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfd.c:918,1
    - Dst: control_notify_config
      Src: /src/frr/bfdd/bfd.c:920,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 899
    functionDepth: 5
    functionLinenumber: 899
    functionLinenumberEnd: 923
    functionName: bs_registrate
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached:
    - control_notify_config
    - bfd_id_insert
    - bfd_session_enable
    - ptm_bfd_gen_ID
    - bs_to_string
    - bs_observer_add
    - zlog_debug
    - bfd_session_free
    - bfd_key_insert
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *bs_registrate(struct bfd_session *bfd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bs_peer_find
      Src: /src/frr/bfdd/bfd.c:930,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfd.c:936,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:942,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfd.c:942,1
    - Dst: control_notify_config
      Src: /src/frr/bfdd/bfd.c:944,1
    - Dst: bfd_session_free
      Src: /src/frr/bfdd/bfd.c:946,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - bpc
    argTypes:
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 925
    functionDepth: 3
    functionLinenumber: 925
    functionLinenumberEnd: 949
    functionName: ptm_bfd_sess_del
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - control_notify_config
    - bs_to_string
    - zlog_err
    - zlog_debug
    - bs_peer_find
    - bfd_session_free
    linkageType: ''
    returnType: int
    signature: int ptm_bfd_sess_del(struct bfd_peer_cfg *bpc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 963
    functionName: bfd_set_polling
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bfd_set_polling(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - bs
    - nstate
    argTypes:
    - struct bfd_session*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 970
    functionDepth: 0
    functionLinenumber: 970
    functionLinenumberEnd: 978
    functionName: bs_admin_down_handler
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void bs_admin_down_handler(struct bfd_session *bs\n\t\t\t\t  __attribute__((__unused__)),\n\t\t\t\t
      \ int nstate __attribute__((__unused__)))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1008,1
    - Dst: ptm_bfd_xmt_TO
      Src: /src/frr/bfdd/bfd.c:1009,1
    - Dst: ptm_bfd_sess_up
      Src: /src/frr/bfdd/bfd.c:1018,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1023,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - bs
    - nstate
    argTypes:
    - struct bfd_session*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 980
    functionDepth: 4
    functionLinenumber: 980
    functionLinenumberEnd: 1027
    functionName: bs_down_handler
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - CHECK_FLAG
    - ptm_bfd_xmt_TO
    - ptm_bfd_sess_up
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void bs_down_handler(struct bfd_session *bs, int nstate)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ptm_bfd_sess_dn
      Src: /src/frr/bfdd/bfd.c:1037,1
    - Dst: ptm_bfd_sess_up
      Src: /src/frr/bfdd/bfd.c:1047,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1052,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - bs
    - nstate
    argTypes:
    - struct bfd_session*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1029
    functionDepth: 4
    functionLinenumber: 1029
    functionLinenumberEnd: 1056
    functionName: bs_init_handler
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_sess_dn
    - ptm_bfd_sess_up
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void bs_init_handler(struct bfd_session *bs, int nstate)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ptm_bfd_sess_dn
      Src: /src/frr/bfdd/bfd.c:1064,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1074,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - bs
    - nstate
    argTypes:
    - struct bfd_session*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1058
    functionDepth: 4
    functionLinenumber: 1058
    functionLinenumberEnd: 1078
    functionName: bs_up_handler
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_sess_dn
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void bs_up_handler(struct bfd_session *bs, int nstate)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bs_admin_down_handler
      Src: /src/frr/bfdd/bfd.c:1084,1
    - Dst: bs_down_handler
      Src: /src/frr/bfdd/bfd.c:1087,1
    - Dst: bs_init_handler
      Src: /src/frr/bfdd/bfd.c:1090,1
    - Dst: bs_up_handler
      Src: /src/frr/bfdd/bfd.c:1093,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1098,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfd.c:1099,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - bs
    - nstate
    argTypes:
    - struct bfd_session*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1080
    functionDepth: 5
    functionLinenumber: 1080
    functionLinenumberEnd: 1102
    functionName: bs_state_handler
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - bs_admin_down_handler
    - bs_to_string
    - zlog_debug
    - bs_down_handler
    - bs_up_handler
    - bs_init_handler
    linkageType: ''
    returnType: void
    signature: void bs_state_handler(struct bfd_session *bs, int nstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1120,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1121,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1127,1
    - Dst: ptm_bfd_echo_stop
      Src: /src/frr/bfdd/bfd.c:1128,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1146,1
    - Dst: ptm_bfd_echo_start
      Src: /src/frr/bfdd/bfd.c:1148,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1107
    functionDepth: 6
    functionLinenumber: 1107
    functionLinenumberEnd: 1149
    functionName: bs_echo_timer_handler
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - CHECK_FLAG
    - ptm_bfd_echo_stop
    - ptm_bfd_echo_start
    linkageType: ''
    returnType: void
    signature: void bs_echo_timer_handler(struct bfd_session *bs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: control_notify_config
      Src: /src/frr/bfdd/bfd.c:1171,1
    - Dst: ptm_bfd_start_xmt_timer
      Src: /src/frr/bfdd/bfd.c:1191,1
    - Dst: control_notify_config
      Src: /src/frr/bfdd/bfd.c:1194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1157
    functionDepth: 2
    functionLinenumber: 1157
    functionLinenumberEnd: 1195
    functionName: bs_final_handler
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - control_notify_config
    - ptm_bfd_start_xmt_timer
    linkageType: ''
    returnType: void
    signature: void bs_final_handler(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1197
    functionDepth: 0
    functionLinenumber: 1197
    functionLinenumberEnd: 1212
    functionName: bs_set_slow_timers
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bs_set_slow_timers(struct bfd_session *bs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1218,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd.c:1221,1
    - Dst: bs_echo_timer_handler
      Src: /src/frr/bfdd/bfd.c:1225,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1228,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd.c:1231,1
    - Dst: ptm_bfd_echo_stop
      Src: /src/frr/bfdd/bfd.c:1235,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - bs
    - echo
    argTypes:
    - struct bfd_session*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1214
    functionDepth: 7
    functionLinenumber: 1214
    functionLinenumberEnd: 1237
    functionName: bfd_set_echo
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - bs_echo_timer_handler
    - UNSET_FLAG
    - SET_FLAG
    - ptm_bfd_echo_stop
    linkageType: ''
    returnType: void
    signature: void bfd_set_echo(struct bfd_session *bs, bool echo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1251,1
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd.c:1258,1
    - Dst: bfd_dplane_update_session
      Src: /src/frr/bfdd/bfd.c:1263,1
    - Dst: control_notify
      Src: /src/frr/bfdd/bfd.c:1264,1
    - Dst: bfd_recvtimer_delete
      Src: /src/frr/bfdd/bfd.c:1269,1
    - Dst: bfd_echo_recvtimer_delete
      Src: /src/frr/bfdd/bfd.c:1270,1
    - Dst: bfd_xmttimer_delete
      Src: /src/frr/bfdd/bfd.c:1271,1
    - Dst: bfd_echo_xmttimer_delete
      Src: /src/frr/bfdd/bfd.c:1272,1
    - Dst: control_notify
      Src: /src/frr/bfdd/bfd.c:1276,1
    - Dst: ptm_bfd_snd
      Src: /src/frr/bfdd/bfd.c:1280,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd.c:1286,1
    - Dst: bfd_dplane_update_session
      Src: /src/frr/bfdd/bfd.c:1291,1
    - Dst: control_notify
      Src: /src/frr/bfdd/bfd.c:1292,1
    - Dst: control_notify
      Src: /src/frr/bfdd/bfd.c:1298,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1301,1
    - Dst: bfd_recvtimer_delete
      Src: /src/frr/bfdd/bfd.c:1302,1
    - Dst: bfd_xmttimer_delete
      Src: /src/frr/bfdd/bfd.c:1303,1
    - Dst: bfd_recvtimer_update
      Src: /src/frr/bfdd/bfd.c:1305,1
    - Dst: bfd_xmttimer_update
      Src: /src/frr/bfdd/bfd.c:1306,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 2
    argNames:
    - bs
    - shutdown
    argTypes:
    - struct bfd_session*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1239
    functionDepth: 3
    functionLinenumber: 1239
    functionLinenumberEnd: 1309
    functionName: bfd_set_shutdown
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached:
    - bfd_xmttimer_update
    - bfd_recvtimer_delete
    - bfd_recvtimer_update
    - CHECK_FLAG
    - control_notify
    - ptm_bfd_snd
    - bfd_echo_recvtimer_delete
    - bfd_dplane_update_session
    - SET_FLAG
    - bfd_echo_xmttimer_delete
    - UNSET_FLAG
    - bfd_xmttimer_delete
    linkageType: ''
    returnType: void
    signature: void bfd_set_shutdown(struct bfd_session *bs, bool shutdown)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SET_FLAG
      Src: /src/frr/bfdd/bfd.c:1314,1
    - Dst: bfd_recvtimer_delete
      Src: /src/frr/bfdd/bfd.c:1321,1
    - Dst: bfd_xmttimer_delete
      Src: /src/frr/bfdd/bfd.c:1322,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd.c:1324,1
    - Dst: bfd_xmttimer_update
      Src: /src/frr/bfdd/bfd.c:1331,1
    - Dst: bfd_recvtimer_update
      Src: /src/frr/bfdd/bfd.c:1332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - bs
    - passive
    argTypes:
    - struct bfd_session*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1311
    functionDepth: 1
    functionLinenumber: 1311
    functionLinenumberEnd: 1334
    functionName: bfd_set_passive_mode
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached:
    - bfd_xmttimer_update
    - bfd_recvtimer_delete
    - bfd_recvtimer_update
    - SET_FLAG
    - UNSET_FLAG
    - bfd_xmttimer_delete
    linkageType: ''
    returnType: void
    signature: void bfd_set_passive_mode(struct bfd_session *bs, bool passive)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - diag
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1339
    functionDepth: 0
    functionLinenumber: 1339
    functionLinenumberEnd: 1346
    functionName: get_diag_str
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_diag_str(int diag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfd.c:1361,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfd.c:1365,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:1370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - sa
    argTypes:
    - struct sockaddr_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1348
    functionDepth: 1
    functionLinenumber: 1348
    functionLinenumberEnd: 1375
    functionName: satostr
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - inet_ntop
    - strlcpy
    linkageType: ''
    returnType: char
    signature: char *satostr(const struct sockaddr_any *sa)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - diag
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1377
    functionDepth: 0
    functionLinenumber: 1377
    functionLinenumberEnd: 1401
    functionName: diag2str
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *diag2str(uint8_t diag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd.c:1405,1
    - Dst: inet_pton
      Src: /src/frr/bfdd/bfd.c:1407,1
    - Dst: inet_pton
      Src: /src/frr/bfdd/bfd.c:1415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - addr
    - sa
    argTypes:
    - char*
    - struct sockaddr_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1403
    functionDepth: 0
    functionLinenumber: 1403
    functionLinenumberEnd: 1424
    functionName: strtosa
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 3
    functionsReached:
    - inet_pton
    - memset
    linkageType: ''
    returnType: int
    signature: int strtosa(const char *addr, struct sockaddr_any *sa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintfrr
      Src: /src/frr/bfdd/bfd.c:1440,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/bfd.c:1448,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/bfd.c:1456,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/bfd.c:1464,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/bfd.c:1472,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/bfd.c:1477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 3
    argNames:
    - time
    - buf
    - buflen
    argTypes:
    - uint64_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1426
    functionDepth: 7
    functionLinenumber: 1426
    functionLinenumberEnd: 1478
    functionName: integer2timestr
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - snprintfrr
    linkageType: ''
    returnType: void
    signature: void integer2timestr(uint64_t time, char *buf, size_t buflen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1485,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd.c:1487,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd.c:1488,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfd.c:1489,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd.c:1491,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfd.c:1492,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd.c:1495,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfd.c:1498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1504
    functionName: bs_to_string
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 6
    functionsReached:
    - inet_ntop
    - CHECK_FLAG
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *bs_to_string(const struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bfdd/bfd.c:1510,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:1513,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bfdd/bfd.c:1516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1506
    functionDepth: 0
    functionLinenumber: 1506
    functionLinenumberEnd: 1519
    functionName: bs_observer_add
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - TAILQ_INSERT_TAIL
    - memcpy
    - XCALLOC
    linkageType: ''
    returnType: int
    signature: int bs_observer_add(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/bfd.c:1523,1
    - Dst: XFREE
      Src: /src/frr/bfdd/bfd.c:1524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bso
    argTypes:
    - struct bfd_session_observer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1521
    functionDepth: 0
    functionLinenumber: 1521
    functionLinenumberEnd: 1525
    functionName: bs_observer_del
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - XFREE
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: void bs_observer_del(struct bfd_session_observer *bso)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd.c:1529,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:1537,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:1540,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:1542,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:1549,1
    - Dst: memcpy
      Src: /src/frr/bfdd/bfd.c:1553,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:1560,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfd.c:1566,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - bs
    - bpc
    argTypes:
    - struct bfd_session*
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1569
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1569
    functionName: bs_to_bpc
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlcpy
    - memset
    - memcmp
    linkageType: ''
    returnType: void
    signature: void bs_to_bpc(struct bfd_session *bs, struct bfd_peer_cfg *bpc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: jhash_1word
      Src: /src/frr/bfdd/bfd.c:1589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1585
    functionDepth: 3
    functionLinenumber: 1585
    functionLinenumberEnd: 1590
    functionName: bfd_id_hash_do
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - jhash_1word
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bfd_id_hash_do(const void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1592
    functionDepth: 0
    functionLinenumber: 1592
    functionLinenumberEnd: 1597
    functionName: bfd_id_hash_cmp
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bfd_id_hash_cmp(const void *n1, const void *n2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfd.c:1610,1
    - Dst: memset
      Src: /src/frr/bfdd/bfd.c:1611,1
    - Dst: jhash
      Src: /src/frr/bfdd/bfd.c:1613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1600
    functionDepth: 2
    functionLinenumber: 1600
    functionLinenumberEnd: 1614
    functionName: bfd_key_hash_do
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - memset
    - jhash
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int bfd_key_hash_do(const void *p)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:1624,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:1626,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:1635,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:1636,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:1637,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfd.c:1646,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 2
    argNames:
    - n1
    - n2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1616
    functionDepth: 0
    functionLinenumber: 1616
    functionLinenumberEnd: 1651
    functionName: bfd_key_hash_cmp
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool bfd_key_hash_cmp(const void *n1, const void *n2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bfdd/bfd.c:1665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1666
      start: 1659
    functionDepth: 4
    functionLinenumber: 1659
    functionLinenumberEnd: 1666
    functionName: bfd_id_lookup
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 3
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *bfd_id_lookup(uint32_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_lookup
      Src: /src/frr/bfdd/bfd.c:1674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct bfd_key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1675
      start: 1668
    functionDepth: 4
    functionLinenumber: 1668
    functionLinenumberEnd: 1675
    functionName: bfd_key_lookup
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 6
    functionsReached:
    - hash_lookup
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *bfd_key_lookup(struct bfd_key key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bfdd/bfd.c:1693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1687
    functionDepth: 2
    functionLinenumber: 1687
    functionLinenumberEnd: 1694
    functionName: bfd_id_delete
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - hash_release
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *bfd_id_delete(uint32_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_release
      Src: /src/frr/bfdd/bfd.c:1702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct bfd_key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1696
    functionDepth: 2
    functionLinenumber: 1696
    functionLinenumberEnd: 1703
    functionName: bfd_key_delete
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - hash_release
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *bfd_key_delete(struct bfd_key key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bfdd/bfd.c:1708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hif
    - arg
    argTypes:
    - hash_iter_func
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1706
    functionDepth: 1
    functionLinenumber: 1706
    functionLinenumberEnd: 1709
    functionName: bfd_id_iterate
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void bfd_id_iterate(hash_iter_func hif, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bfdd/bfd.c:1713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hif
    - arg
    argTypes:
    - hash_iter_func
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1711
    functionDepth: 1
    functionLinenumber: 1711
    functionLinenumberEnd: 1714
    functionName: bfd_key_iterate
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void bfd_key_iterate(hash_iter_func hif, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bfdd/bfd.c:1724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1722
    functionDepth: 3
    functionLinenumber: 1722
    functionLinenumberEnd: 1725
    functionName: bfd_id_insert
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: bool
    signature: bool bfd_id_insert(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_get
      Src: /src/frr/bfdd/bfd.c:1729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1727
    functionDepth: 3
    functionLinenumber: 1727
    functionLinenumberEnd: 1730
    functionName: bfd_key_insert
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - hash_get
    linkageType: ''
    returnType: bool
    signature: bool bfd_key_insert(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_create
      Src: /src/frr/bfdd/bfd.c:1734,1
    - Dst: hash_create
      Src: /src/frr/bfdd/bfd.c:1736,1
    - Dst: TAILQ_INIT
      Src: /src/frr/bfdd/bfd.c:1738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1732
    functionDepth: 4
    functionLinenumber: 1732
    functionLinenumberEnd: 1739
    functionName: bfd_initialize
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - hash_create
    - TAILQ_INIT
    linkageType: ''
    returnType: void
    signature: void bfd_initialize(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_free
      Src: /src/frr/bfdd/bfd.c:1746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1741
    functionDepth: 3
    functionLinenumber: 1741
    functionLinenumberEnd: 1747
    functionName: _bfd_free
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_session_free
    linkageType: ''
    returnType: void
    signature: "void _bfd_free(struct hash_bucket *hb,\n\t\t      void *arg __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/bfd.c:1760,1
    - Dst: assert
      Src: /src/frr/bfdd/bfd.c:1761,1
    - Dst: hash_free
      Src: /src/frr/bfdd/bfd.c:1764,1
    - Dst: hash_free
      Src: /src/frr/bfdd/bfd.c:1765,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/bfd.c:1768,1
    - Dst: bfd_profile_free
      Src: /src/frr/bfdd/bfd.c:1769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (bfd_key_hash->count == 0)
      pos:
        line_end: 1760
        line_start: 1760
        source_file: /src/frr/bfdd/bfd.c
    constantsTouched: []
    func_position:
      end: 1770
      start: 1749
    functionDepth: 2
    functionLinenumber: 1749
    functionLinenumberEnd: 1770
    functionName: bfd_shutdown
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - assert
    - bfd_profile_free
    - bfd_id_iterate
    - hash_free
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void bfd_shutdown(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1778
    functionDepth: 0
    functionLinenumber: 1778
    functionLinenumberEnd: 1806
    functionName: _bfd_session_next
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _bfd_session_next(struct hash_bucket *hb, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_walk
      Src: /src/frr/bfdd/bfd.c:1821,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - bs
    - mhop
    argTypes:
    - struct bfd_session*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1813
    functionDepth: 1
    functionLinenumber: 1813
    functionLinenumberEnd: 1826
    functionName: bfd_session_next
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached:
    - hash_walk
    linkageType: ''
    returnType: struct bfd_session
    signature: "struct bfd_session *bfd_session_next(const struct bfd_session *bs,\n\t\t\t\t\t
      \  bool mhop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfd.c:1834,1
    - Dst: UNSET_FLAG
      Src: /src/frr/bfdd/bfd.c:1838,1
    - Dst: bfd_session_free
      Src: /src/frr/bfdd/bfd.c:1844,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1828
    functionDepth: 3
    functionLinenumber: 1828
    functionLinenumberEnd: 1845
    functionName: _bfd_session_remove_manual
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_session_free
    - CHECK_FLAG
    - UNSET_FLAG
    linkageType: ''
    returnType: void
    signature: "void _bfd_session_remove_manual(struct hash_bucket *hb,\n\t\t\t\t
      \      void *arg __attribute__((__unused__)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bfdd/bfd.c:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1852
    functionDepth: 1
    functionLinenumber: 1852
    functionLinenumberEnd: 1855
    functionName: bfd_sessions_remove_manual
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void bfd_sessions_remove_manual(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/bfd.c:1861,1
    - Dst: bfd_profile_free
      Src: /src/frr/bfdd/bfd.c:1862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1857
    functionDepth: 2
    functionLinenumber: 1857
    functionLinenumberEnd: 1863
    functionName: bfd_profiles_remove
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - bfd_profile_free
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void bfd_profiles_remove(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bfdd/bfd.c:1874,1
    - Dst: bfd_profile_apply
      Src: /src/frr/bfdd/bfd.c:1877,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1878
      start: 1868
    functionDepth: 2
    functionLinenumber: 1868
    functionLinenumberEnd: 1878
    functionName: _bfd_profile_update
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - strcmp
    - bfd_profile_apply
    linkageType: ''
    returnType: void
    signature: void _bfd_profile_update(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bfdd/bfd.c:1882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bp
    argTypes:
    - struct bfd_profile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1880
    functionDepth: 1
    functionLinenumber: 1880
    functionLinenumberEnd: 1883
    functionName: bfd_profile_update
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 9
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void bfd_profile_update(struct bfd_profile *bp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bfdd/bfd.c:1891,1
    - Dst: bfd_profile_remove
      Src: /src/frr/bfdd/bfd.c:1894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1885
    functionDepth: 3
    functionLinenumber: 1885
    functionLinenumberEnd: 1895
    functionName: _bfd_profile_detach
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfd_profile_remove
    - strcmp
    linkageType: ''
    returnType: void
    signature: void _bfd_profile_detach(struct hash_bucket *hb, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_iterate
      Src: /src/frr/bfdd/bfd.c:1899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bp
    argTypes:
    - struct bfd_profile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1897
    functionDepth: 1
    functionLinenumber: 1897
    functionLinenumberEnd: 1900
    functionName: bfd_profile_detach
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 1
    functionsReached:
    - hash_iterate
    linkageType: ''
    returnType: void
    signature: void bfd_profile_detach(struct bfd_profile *bp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1908,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1905
    functionDepth: 1
    functionLinenumber: 1905
    functionLinenumberEnd: 1911
    functionName: bfd_vrf_new
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int bfd_vrf_new(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1919
      start: 1913
    functionDepth: 1
    functionLinenumber: 1913
    functionLinenumberEnd: 1919
    functionName: bfd_vrf_delete
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int bfd_vrf_delete(struct vrf *vrf)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bfdd/bfd.c:1927,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1944,1
    - Dst: bp_udp_shop
      Src: /src/frr/bfdd/bfd.c:1947,1
    - Dst: bp_udp_mhop
      Src: /src/frr/bfdd/bfd.c:1949,1
    - Dst: bp_udp6_shop
      Src: /src/frr/bfdd/bfd.c:1951,1
    - Dst: bp_udp6_mhop
      Src: /src/frr/bfdd/bfd.c:1953,1
    - Dst: bp_echo_socket
      Src: /src/frr/bfdd/bfd.c:1955,1
    - Dst: bp_echov6_socket
      Src: /src/frr/bfdd/bfd.c:1957,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd.c:1960,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd.c:1963,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd.c:1966,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd.c:1969,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd.c:1972,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfd.c:1975,1
    - Dst: bfdd_zclient_register
      Src: /src/frr/bfdd/bfd.c:1979,1
    - Dst: bfdd_sessions_enable_vrf
      Src: /src/frr/bfdd/bfd.c:1980,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 46
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1921
    functionDepth: 5
    functionLinenumber: 1921
    functionLinenumberEnd: 1983
    functionName: bfd_vrf_enable
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - XCALLOC
    - bp_udp6_shop
    - event_add_read
    - bp_echo_socket
    - bfdd_sessions_enable_vrf
    - zlog_debug
    - bp_udp_mhop
    - bp_udp6_mhop
    - bp_udp_shop
    - bfdd_zclient_register
    - bp_echov6_socket
    linkageType: ''
    returnType: int
    signature: int bfd_vrf_enable(struct vrf *vrf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bfdd_sessions_disable_vrf
      Src: /src/frr/bfdd/bfd.c:1994,1
    - Dst: bfdd_zclient_unregister
      Src: /src/frr/bfdd/bfd.c:1995,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfd.c:1999,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd.c:2002,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd.c:2003,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd.c:2004,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd.c:2005,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd.c:2006,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/bfd.c:2007,1
    - Dst: socket_close
      Src: /src/frr/bfdd/bfd.c:2010,1
    - Dst: socket_close
      Src: /src/frr/bfdd/bfd.c:2011,1
    - Dst: socket_close
      Src: /src/frr/bfdd/bfd.c:2012,1
    - Dst: socket_close
      Src: /src/frr/bfdd/bfd.c:2014,1
    - Dst: socket_close
      Src: /src/frr/bfdd/bfd.c:2016,1
    - Dst: socket_close
      Src: /src/frr/bfdd/bfd.c:2017,1
    - Dst: socket_close
      Src: /src/frr/bfdd/bfd.c:2019,1
    - Dst: XFREE
      Src: /src/frr/bfdd/bfd.c:2022,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 1985
    functionDepth: 1
    functionLinenumber: 1985
    functionLinenumberEnd: 2026
    functionName: bfd_vrf_disable
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - bfdd_zclient_unregister
    - bfdd_sessions_disable_vrf
    - zlog_debug
    - EVENT_OFF
    - socket_close
    - XFREE
    linkageType: ''
    returnType: int
    signature: int bfd_vrf_disable(struct vrf *vrf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_init
      Src: /src/frr/bfdd/bfd.c:2030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 2028
    functionDepth: 4
    functionLinenumber: 2028
    functionLinenumberEnd: 2031
    functionName: bfd_vrf_init
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - vrf_init
    linkageType: ''
    returnType: void
    signature: void bfd_vrf_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vrf_terminate
      Src: /src/frr/bfdd/bfd.c:2035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2033
    functionDepth: 4
    functionLinenumber: 2033
    functionLinenumberEnd: 2036
    functionName: bfd_vrf_terminate
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached:
    - vrf_terminate
    linkageType: ''
    returnType: void
    signature: void bfd_vrf_terminate(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: vrf_is_backend_netns
      Src: /src/frr/bfdd/bfd.c:2042,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bfdd/bfd.c:2043,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2038
    functionDepth: 2
    functionLinenumber: 2038
    functionLinenumberEnd: 2053
    functionName: bfd_vrf_look_by_session
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached:
    - vrf_is_backend_netns
    - vrf_lookup_by_id
    linkageType: ''
    returnType: struct bfd_vrf_global
    signature: struct bfd_vrf_global *bfd_vrf_look_by_session(struct bfd_session *bfd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2055
    functionDepth: 0
    functionLinenumber: 2055
    functionLinenumberEnd: 2058
    functionName: bfd_get_session_count
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long bfd_get_session_count(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bfd
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2069
      start: 2060
    functionDepth: 0
    functionLinenumber: 2060
    functionLinenumberEnd: 2069
    functionName: bfd_rtt_init
    functionSourceFile: /src/frr/bfdd/bfd.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bfd_rtt_init(struct bfd_session *bfd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:70,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_vty.c:71,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:74,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:75,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfdd_vty.c:77,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:78,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_vty.c:79,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:83,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:85,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:86,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:89,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - vty
    - bs
    argTypes:
    - struct vty*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 90
    functionName: _display_peer_header
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - CHECK_FLAG
    - vty_out
    - memcmp
    linkageType: ''
    returnType: void
    signature: void _display_peer_header(struct vty *vty, struct bfd_session *bs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: _display_peer_header
      Src: /src/frr/bfdd/bfdd_vty.c:100,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:102,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:103,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:104,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:105,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:107,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:108,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:109,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:111,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:114,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:117,1
    - Dst: monotime
      Src: /src/frr/bfdd/bfdd_vty.c:119,1
    - Dst: integer2timestr
      Src: /src/frr/bfdd/bfdd_vty.c:120,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:121,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:124,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:127,1
    - Dst: monotime
      Src: /src/frr/bfdd/bfdd_vty.c:129,1
    - Dst: integer2timestr
      Src: /src/frr/bfdd/bfdd_vty.c:130,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:131,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:135,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:139,1
    - Dst: diag2str
      Src: /src/frr/bfdd/bfdd_vty.c:139,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:140,1
    - Dst: diag2str
      Src: /src/frr/bfdd/bfdd_vty.c:140,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:141,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:142,1
    - Dst: _display_rtt
      Src: /src/frr/bfdd/bfdd_vty.c:143,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:144,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:146,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:147,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:149,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:151,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:154,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:157,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:158,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:159,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:162,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:164,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:165,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:167,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:169,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:172,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:175,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:177,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 56
    argCount: 2
    argNames:
    - vty
    - bs
    argTypes:
    - struct vty*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 92
    functionDepth: 8
    functionLinenumber: 92
    functionLinenumberEnd: 178
    functionName: _display_peer
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - integer2timestr
    - CHECK_FLAG
    - monotime
    - _display_rtt
    - _display_peer_header
    - diag2str
    linkageType: ''
    returnType: void
    signature: void _display_peer(struct vty *vty, struct bfd_session *bs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bfdd/bfdd_vty.c:182,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bfdd/bfdd_vty.c:186,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bfdd/bfdd_vty.c:188,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:190,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_vty.c:191,1
    - Dst: memcmp
      Src: /src/frr/bfdd/bfdd_vty.c:193,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:194,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_vty.c:195,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:199,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:201,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 207
    functionName: _peer_json_header
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_object
    - memcmp
    - inet_ntop
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_boolean_false_add
    linkageType: ''
    returnType: struct json_object
    signature: struct json_object *_peer_json_header(struct bfd_session *bs)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _peer_json_header
      Src: /src/frr/bfdd/bfdd_vty.c:211,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:216,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:217,1
    - Dst: json_object_boolean_add
      Src: /src/frr/bfdd/bfdd_vty.c:218,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:219,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:220,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:221,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:225,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:228,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:229,1
    - Dst: monotime
      Src: /src/frr/bfdd/bfdd_vty.c:230,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:233,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:236,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:237,1
    - Dst: monotime
      Src: /src/frr/bfdd/bfdd_vty.c:238,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:242,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:246,1
    - Dst: diag2str
      Src: /src/frr/bfdd/bfdd_vty.c:246,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/bfdd_vty.c:247,1
    - Dst: diag2str
      Src: /src/frr/bfdd/bfdd_vty.c:248,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:250,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:252,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:254,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/bfdd_vty.c:256,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:257,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:260,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:262,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:264,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:266,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:268,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:270,1
    - Dst: _display_rtt
      Src: /src/frr/bfdd/bfdd_vty.c:273,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:274,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:275,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:276,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 279
    functionName: __display_peer_json
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - json_object_boolean_add
    - CHECK_FLAG
    - monotime
    - json_object_int_add
    - _peer_json_header
    - _display_rtt
    - json_object_string_add
    - diag2str
    linkageType: ''
    returnType: struct json_object
    signature: struct json_object *__display_peer_json(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __display_peer_json
      Src: /src/frr/bfdd/bfdd_vty.c:283,1
    - Dst: vty_json
      Src: /src/frr/bfdd/bfdd_vty.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - bs
    argTypes:
    - struct vty*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 281
    functionDepth: 4
    functionLinenumber: 281
    functionLinenumberEnd: 286
    functionName: _display_peer_json
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 1
    functionsReached:
    - __display_peer_json
    - vty_json
    linkageType: ''
    returnType: void
    signature: void _display_peer_json(struct vty *vty, struct bfd_session *bs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bfdd/bfdd_vty.c:306,1
    - Dst: _display_peer
      Src: /src/frr/bfdd/bfdd_vty.c:309,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 294
    functionDepth: 9
    functionLinenumber: 294
    functionLinenumberEnd: 310
    functionName: _display_peer_iter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - _display_peer
    linkageType: ''
    returnType: void
    signature: void _display_peer_iter(struct hash_bucket *hb, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bfdd/bfdd_vty.c:324,1
    - Dst: __display_peer_json
      Src: /src/frr/bfdd/bfdd_vty.c:328,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfdd_vty.c:330,1
    - Dst: json_object_array_add
      Src: /src/frr/bfdd/bfdd_vty.c:334,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 335
    functionName: _display_peer_json_iter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - __display_peer_json
    - zlog_warn
    - json_object_array_add
    linkageType: ''
    returnType: void
    signature: void _display_peer_json_iter(struct hash_bucket *hb, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:346,1
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/bfdd_vty.c:347,1
    - Dst: json_object_new_array
      Src: /src/frr/bfdd/bfdd_vty.c:351,1
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/bfdd_vty.c:353,1
    - Dst: vty_json
      Src: /src/frr/bfdd/bfdd_vty.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - vrfname
    - use_json
    argTypes:
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 337
    functionDepth: 4
    functionLinenumber: 337
    functionLinenumberEnd: 356
    functionName: _display_all_peers
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - vty_json
    - vty_out
    - bfd_id_iterate
    linkageType: ''
    returnType: void
    signature: void _display_all_peers(struct vty *vty, char *vrfname, bool use_json)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _display_peer_header
      Src: /src/frr/bfdd/bfdd_vty.c:360,1
    - Dst: bfd_dplane_update_session_counters
      Src: /src/frr/bfdd/bfdd_vty.c:363,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfdd_vty.c:364,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfdd_vty.c:365,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:367,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:369,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:371,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:373,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:375,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:377,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:379,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - vty
    - bs
    argTypes:
    - struct vty*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 382
    functionName: _display_peer_counter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - bfd_dplane_update_session_counters
    - vty_out
    - bs_to_string
    - zlog_debug
    - _display_peer_header
    linkageType: ''
    returnType: void
    signature: void _display_peer_counter(struct vty *vty, struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _peer_json_header
      Src: /src/frr/bfdd/bfdd_vty.c:386,1
    - Dst: bfd_dplane_update_session_counters
      Src: /src/frr/bfdd/bfdd_vty.c:389,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/bfdd_vty.c:390,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/bfdd_vty.c:391,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:393,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:394,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:395,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:396,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:397,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:398,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/bfdd_vty.c:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 402
    functionName: __display_peer_counters_json
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - bfd_dplane_update_session_counters
    - bs_to_string
    - json_object_int_add
    - _peer_json_header
    - zlog_debug
    linkageType: ''
    returnType: struct json_object
    signature: struct json_object *__display_peer_counters_json(struct bfd_session
      *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __display_peer_counters_json
      Src: /src/frr/bfdd/bfdd_vty.c:406,1
    - Dst: vty_json
      Src: /src/frr/bfdd/bfdd_vty.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - vty
    - bs
    argTypes:
    - struct vty*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 404
    functionDepth: 4
    functionLinenumber: 404
    functionLinenumberEnd: 409
    functionName: _display_peer_counters_json
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 1
    functionsReached:
    - vty_json
    - __display_peer_counters_json
    linkageType: ''
    returnType: void
    signature: void _display_peer_counters_json(struct vty *vty, struct bfd_session
      *bs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bfdd/bfdd_vty.c:423,1
    - Dst: _display_peer_counter
      Src: /src/frr/bfdd/bfdd_vty.c:427,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 411
    functionDepth: 4
    functionLinenumber: 411
    functionLinenumberEnd: 428
    functionName: _display_peer_counter_iter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - _display_peer_counter
    linkageType: ''
    returnType: void
    signature: void _display_peer_counter_iter(struct hash_bucket *hb, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bfdd/bfdd_vty.c:442,1
    - Dst: __display_peer_counters_json
      Src: /src/frr/bfdd/bfdd_vty.c:446,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/bfdd_vty.c:448,1
    - Dst: json_object_array_add
      Src: /src/frr/bfdd/bfdd_vty.c:452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 430
    functionDepth: 3
    functionLinenumber: 430
    functionLinenumberEnd: 453
    functionName: _display_peer_counter_json_iter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - zlog_warn
    - json_object_array_add
    - __display_peer_counters_json
    linkageType: ''
    returnType: void
    signature: void _display_peer_counter_json_iter(struct hash_bucket *hb, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:463,1
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/bfdd_vty.c:464,1
    - Dst: json_object_new_array
      Src: /src/frr/bfdd/bfdd_vty.c:468,1
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/bfdd_vty.c:470,1
    - Dst: vty_json
      Src: /src/frr/bfdd/bfdd_vty.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - vty
    - vrfname
    - use_json
    argTypes:
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 455
    functionDepth: 4
    functionLinenumber: 455
    functionLinenumberEnd: 473
    functionName: _display_peers_counter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - vty_json
    - vty_out
    - bfd_id_iterate
    linkageType: ''
    returnType: void
    signature: void _display_peers_counter(struct vty *vty, char *vrfname, bool use_json)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 483
    functionName: _clear_peer_counter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _clear_peer_counter(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:489,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_vty.c:490,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:491,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/bfdd_vty.c:492,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:493,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - vty
    - bs
    argTypes:
    - struct vty*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 495
    functionName: _display_peer_brief
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - vty_out
    linkageType: ''
    returnType: void
    signature: void _display_peer_brief(struct vty *vty, struct bfd_session *bs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strmatch
      Src: /src/frr/bfdd/bfdd_vty.c:509,1
    - Dst: _display_peer_brief
      Src: /src/frr/bfdd/bfdd_vty.c:513,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 497
    functionDepth: 3
    functionLinenumber: 497
    functionLinenumberEnd: 514
    functionName: _display_peer_brief_iter
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - strmatch
    - _display_peer_brief
    linkageType: ''
    returnType: void
    signature: void _display_peer_brief_iter(struct hash_bucket *hb, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:526,1
    - Dst: bfd_get_session_count
      Src: /src/frr/bfdd/bfdd_vty.c:526,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:527,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:528,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:529,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:530,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:532,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:533,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:534,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:535,1
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/bfdd_vty.c:537,1
    - Dst: json_object_new_array
      Src: /src/frr/bfdd/bfdd_vty.c:541,1
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/bfdd_vty.c:544,1
    - Dst: vty_json
      Src: /src/frr/bfdd/bfdd_vty.c:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - vty
    - vrfname
    - use_json
    argTypes:
    - struct vty*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 516
    functionDepth: 4
    functionLinenumber: 516
    functionLinenumberEnd: 547
    functionName: _display_peers_brief
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - json_object_new_array
    - vty_out
    - bfd_id_iterate
    - bfd_get_session_count
    - vty_json
    linkageType: ''
    returnType: void
    signature: void _display_peers_brief(struct vty *vty, const char *vrfname, bool
      use_json)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pl_find
      Src: /src/frr/bfdd/bfdd_vty.c:565,1
    - Dst: strtosa
      Src: /src/frr/bfdd/bfdd_vty.c:569,1
    - Dst: strtosa
      Src: /src/frr/bfdd/bfdd_vty.c:571,1
    - Dst: argv_find
      Src: /src/frr/bfdd/bfdd_vty.c:577,1
    - Dst: bfd_configure_peer
      Src: /src/frr/bfdd/bfdd_vty.c:579,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:582,1
    - Dst: bs_peer_find
      Src: /src/frr/bfdd/bfdd_vty.c:587,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:589,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:595,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:598,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:600,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:602,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:603,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 8
    argNames:
    - vty
    - argc
    - argv
    - label
    - peer_str
    - local_str
    - ifname
    - vrfname
    argTypes:
    - struct vty*
    - int
    - struct cmd_token**
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 549
    functionDepth: 3
    functionLinenumber: 549
    functionLinenumberEnd: 609
    functionName: _find_peer_or_error
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - vty_out
    - pl_find
    - strtosa
    - bs_peer_find
    - bfd_configure_peer
    - argv_find
    linkageType: ''
    returnType: struct bfd_session
    signature: "struct bfd_session *\n_find_peer_or_error(struct vty *vty, int argc,
      struct cmd_token **argv,\n\t\t    const char *label, const char *peer_str,\n\t\t
      \   const char *local_str, const char *ifname,\n\t\t    const char *vrfname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - min
    - avg
    - max
    - bs
    argTypes:
    - uint32_t*
    - uint32_t*
    - uint32_t*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 635
    functionName: _display_rtt
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void _display_rtt(uint32_t *min, uint32_t *avg, uint32_t *max,\n\t\t
      \ struct bfd_session *bs)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/bfdd_vty.c:867,1
    - Dst: monotime
      Src: /src/frr/bfdd/bfdd_vty.c:876,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_vty.c:884,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_vty.c:891,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_vty.c:899,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_vty.c:906,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_vty.c:920,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_vty.c:922,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_vty.c:930,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd_vty.c:932,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd_vty.c:937,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 8
    argNames:
    - bpc
    - mhop
    - peer
    - local
    - ifname
    - vrfname
    - ebuf
    - ebuflen
    argTypes:
    - struct bfd_peer_cfg*
    - bool
    - struct sockaddr_any*
    - struct sockaddr_any*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 861
    functionDepth: 2
    functionLinenumber: 861
    functionLinenumberEnd: 941
    functionName: bfd_configure_peer
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 1
    functionsReached:
    - snprintf
    - strlcpy
    - monotime
    - memset
    linkageType: ''
    returnType: int
    signature: "int bfd_configure_peer(struct bfd_peer_cfg *bpc, bool mhop,\n\t\t\t
      \     const struct sockaddr_any *peer,\n\t\t\t      const struct sockaddr_any
      *local,\n\t\t\t      const char *ifname, const char *vrfname,\n\t\t\t      char
      *ebuf, size_t ebuflen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:987,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:992,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:997,1
    - Dst: vty_out
      Src: /src/frr/bfdd/bfdd_vty.c:1002,1
    - Dst: yang_dnode_get
      Src: /src/frr/bfdd/bfdd_vty.c:1006,1
    - Dst: nb_cli_show_dnode_cmds
      Src: /src/frr/bfdd/bfdd_vty.c:1008,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 981
    functionDepth: 2
    functionLinenumber: 981
    functionLinenumberEnd: 1013
    functionName: bfdd_write_config
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - yang_dnode_get
    - vty_out
    - nb_cli_show_dnode_cmds
    linkageType: ''
    returnType: int
    signature: int bfdd_write_config(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1017,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1018,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1019,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1020,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1021,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1022,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1023,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1024,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1026,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1027,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1028,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1029,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1031,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1032,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1033,1
    - Dst: install_element
      Src: /src/frr/bfdd/bfdd_vty.c:1034,1
    - Dst: install_node
      Src: /src/frr/bfdd/bfdd_vty.c:1037,1
    - Dst: install_default
      Src: /src/frr/bfdd/bfdd_vty.c:1038,1
    - Dst: install_node
      Src: /src/frr/bfdd/bfdd_vty.c:1041,1
    - Dst: install_default
      Src: /src/frr/bfdd/bfdd_vty.c:1042,1
    - Dst: bfdd_cli_init
      Src: /src/frr/bfdd/bfdd_vty.c:1044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1015
    functionDepth: 7
    functionLinenumber: 1015
    functionLinenumberEnd: 1045
    functionName: bfdd_vty_init
    functionSourceFile: /src/frr/bfdd/bfdd_vty.c
    functionUses: 0
    functionsReached:
    - install_element
    - install_default
    - install_node
    - bfdd_cli_init
    linkageType: ''
    returnType: void
    signature: void bfdd_vty_init(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - bmt
    argTypes:
    - enum bfddp_message_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 126
    functionName: bfd_dplane_messagetype2str
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *bfd_dplane_messagetype2str(enum bfddp_message_type bmt)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:138,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:139,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:140,1
    - Dst: bfd_dplane_messagetype2str
      Src: /src/frr/bfdd/dplane.c:141,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:146,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:147,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:148,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:153,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/dplane.c:155,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/dplane.c:159,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:165,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:167,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:169,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:171,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:173,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:175,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:177,1
    - Dst: strlen
      Src: /src/frr/bfdd/dplane.c:180,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:184,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:189,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:195,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:197,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:199,1
    - Dst: strlcat
      Src: /src/frr/bfdd/dplane.c:201,1
    - Dst: strlen
      Src: /src/frr/bfdd/dplane.c:204,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:208,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:211,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:211,1
    - Dst: diag2str
      Src: /src/frr/bfdd/dplane.c:213,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:215,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:216,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:217,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:221,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:221,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:225,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:234,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:235,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:236,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:238,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:240,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:242,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:243,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:244,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:245,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct bfddp_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 128
    functionDepth: 7
    functionLinenumber: 128
    functionLinenumberEnd: 249
    functionName: bfd_dplane_debug_message
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - strlcat
    - strlen
    - be64toh
    - snprintfrr
    - bfd_dplane_messagetype2str
    - ntohs
    - zlog_debug
    - diag2str
    - ntohl
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_debug_message(const struct bfddp_message *msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bdc
    argTypes:
    - struct bfd_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 267
    functionName: bfd_dplane_next_id
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t bfd_dplane_next_id(struct bfd_dplane_ctx *bdc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_READABLE
      Src: /src/frr/bfdd/dplane.c:274,1
    - Dst: stream_flush
      Src: /src/frr/bfdd/dplane.c:276,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:283,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:284,1
    - Dst: bfd_dplane_ctx_free
      Src: /src/frr/bfdd/dplane.c:285,1
    - Dst: zlog_info
      Src: /src/frr/bfdd/dplane.c:290,1
    - Dst: bfd_dplane_ctx_free
      Src: /src/frr/bfdd/dplane.c:292,1
    - Dst: stream_forward_getp
      Src: /src/frr/bfdd/dplane.c:303,1
    - Dst: stream_pulldown
      Src: /src/frr/bfdd/dplane.c:307,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:310,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - bdc
    argTypes:
    - struct bfd_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 269
    functionDepth: 3
    functionLinenumber: 269
    functionLinenumberEnd: 313
    functionName: bfd_dplane_flush
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - STREAM_READABLE
    - stream_forward_getp
    - strerror
    - bfd_dplane_ctx_free
    - stream_flush
    - zlog_warn
    - EVENT_OFF
    - stream_pulldown
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t bfd_dplane_flush(struct bfd_dplane_ctx *bdc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/dplane.c:317,1
    - Dst: bfd_dplane_client_connecting
      Src: /src/frr/bfdd/dplane.c:320,1
    - Dst: bfd_dplane_flush
      Src: /src/frr/bfdd/dplane.c:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 4
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: bfd_dplane_write
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - bfd_dplane_flush
    - bfd_dplane_client_connecting
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_write(struct event *t)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: bfd_id_lookup
      Src: /src/frr/bfdd/dplane.c:335,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:335,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:338,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:343,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:349,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:352,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:353,1
    - Dst: ntohl
      Src: /src/frr/bfdd/dplane.c:354,1
    - Dst: control_notify
      Src: /src/frr/bfdd/dplane.c:357,1
    - Dst: monotime
      Src: /src/frr/bfdd/dplane.c:370,1
    - Dst: monotime
      Src: /src/frr/bfdd/dplane.c:374,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:382,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:388,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/dplane.c:389,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - bdc
    - state
    argTypes:
    - struct bfd_dplane_ctx*
    - struct bfddp_state_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 326
    functionDepth: 5
    functionLinenumber: 326
    functionLinenumberEnd: 391
    functionName: bfd_dplane_session_state_change
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - bs_to_string
    - control_notify
    - monotime
    - bfd_id_lookup
    - zlog_debug
    - zlog_warn
    - ntohl
    linkageType: ''
    returnType: void
    signature: "void bfd_dplane_session_state_change(struct bfd_dplane_ctx *bdc,\n\t\t\t\tconst
      struct bfddp_state_change *state)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/bfdd/dplane.c:412,1
    - Dst: bfd_dplane_debug_message
      Src: /src/frr/bfdd/dplane.c:418,1
    - Dst: stream_write
      Src: /src/frr/bfdd/dplane.c:421,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bfdd/dplane.c:426,1
    - Dst: event_add_write
      Src: /src/frr/bfdd/dplane.c:432,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - bdc
    - buf
    - buflen
    argTypes:
    - struct bfd_dplane_ctx*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 402
    functionDepth: 8
    functionLinenumber: 402
    functionLinenumberEnd: 436
    functionName: bfd_dplane_enqueue
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - bfd_dplane_debug_message
    - event_add_write
    - STREAM_READABLE
    - STREAM_WRITEABLE
    - stream_write
    linkageType: ''
    returnType: int
    signature: "int bfd_dplane_enqueue(struct bfd_dplane_ctx *bdc, const void *buf,\n\t\t\t
      \     size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/frr/bfdd/dplane.c:445,1
    - Dst: htons
      Src: /src/frr/bfdd/dplane.c:449,1
    - Dst: htons
      Src: /src/frr/bfdd/dplane.c:450,1
    - Dst: htobe64
      Src: /src/frr/bfdd/dplane.c:455,1
    - Dst: bfd_dplane_enqueue
      Src: /src/frr/bfdd/dplane.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - bdc
    - bm
    argTypes:
    - struct bfd_dplane_ctx*
    - struct bfddp_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 438
    functionDepth: 9
    functionLinenumber: 438
    functionLinenumberEnd: 459
    functionName: bfd_dplane_echo_request_handle
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - bfd_dplane_enqueue
    - htobe64
    - gettimeofday
    - htons
    linkageType: ''
    returnType: void
    signature: "void bfd_dplane_echo_request_handle(struct bfd_dplane_ctx *bdc,\n\t\t\t\t\t
      \  const struct bfddp_message *bm)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:467,1
    - Dst: bfd_dplane_echo_request_handle
      Src: /src/frr/bfdd/dplane.c:470,1
    - Dst: bfd_dplane_session_state_change
      Src: /src/frr/bfdd/dplane.c:473,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:491,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - msg
    - arg
    argTypes:
    - struct bfddp_message*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 461
    functionDepth: 10
    functionLinenumber: 461
    functionLinenumberEnd: 494
    functionName: bfd_dplane_handle_message
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - ntohs
    - bfd_dplane_echo_request_handle
    - zlog_debug
    - bfd_dplane_session_state_change
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_handle_message(struct bfddp_message *msg, void *arg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: stream_read_try
      Src: /src/frr/bfdd/dplane.c:523,1
    - Dst: STREAM_WRITEABLE
      Src: /src/frr/bfdd/dplane.c:524,1
    - Dst: zlog_info
      Src: /src/frr/bfdd/dplane.c:527,1
    - Dst: bfd_dplane_ctx_free
      Src: /src/frr/bfdd/dplane.c:529,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:533,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:533,1
    - Dst: bfd_dplane_ctx_free
      Src: /src/frr/bfdd/dplane.c:534,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bfdd/dplane.c:545,1
    - Dst: stream_pnt
      Src: /src/frr/bfdd/dplane.c:551,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:553,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/dplane.c:564,1
    - Dst: bfd_dplane_debug_message
      Src: /src/frr/bfdd/dplane.c:570,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:576,1
    - Dst: cb
      Src: /src/frr/bfdd/dplane.c:577,1
    - Dst: bfd_dplane_handle_message
      Src: /src/frr/bfdd/dplane.c:579,1
    - Dst: stream_forward_getp
      Src: /src/frr/bfdd/dplane.c:583,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:583,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:586,1
    - Dst: stream_pulldown
      Src: /src/frr/bfdd/dplane.c:590,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:595,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 4
    argNames:
    - bdc
    - id
    - cb
    - arg
    argTypes:
    - struct bfd_dplane_ctx*
    - uint16_t
    - bfd_dplane_expect_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 507
    functionDepth: 11
    functionLinenumber: 507
    functionLinenumberEnd: 600
    functionName: bfd_dplane_expect
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - stream_read_try
    - zlog_info
    - bfd_dplane_debug_message
    - STREAM_READABLE
    - stream_forward_getp
    - strerror
    - STREAM_WRITEABLE
    - bfd_dplane_ctx_free
    - zlog_err
    - ntohs
    - bfd_dplane_handle_message
    - zlog_warn
    - cb
    - stream_pnt
    - stream_pulldown
    linkageType: ''
    returnType: int
    signature: "int bfd_dplane_expect(struct bfd_dplane_ctx *bdc, uint16_t id,\n\t\t\t
      \    bfd_dplane_expect_cb cb, void *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/dplane.c:604,1
    - Dst: bfd_dplane_expect
      Src: /src/frr/bfdd/dplane.c:607,1
    - Dst: stream_pulldown
      Src: /src/frr/bfdd/dplane.c:611,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/dplane.c:612,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 602
    functionDepth: 12
    functionLinenumber: 602
    functionLinenumberEnd: 613
    functionName: bfd_dplane_read
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - bfd_dplane_expect
    - stream_pulldown
    - EVENT_ARG
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_read(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_disable
      Src: /src/frr/bfdd/dplane.c:624,1
    - Dst: _bfd_dplane_add_session
      Src: /src/frr/bfdd/dplane.c:627,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 615
    functionDepth: 2
    functionLinenumber: 615
    functionLinenumberEnd: 628
    functionName: _bfd_session_register_dplane
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - bfd_session_disable
    - _bfd_dplane_add_session
    linkageType: ''
    returnType: void
    signature: void _bfd_session_register_dplane(struct hash_bucket *hb, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bfdd/dplane.c:634,1
    - Dst: stream_new
      Src: /src/frr/bfdd/dplane.c:637,1
    - Dst: stream_new
      Src: /src/frr/bfdd/dplane.c:638,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/dplane.c:644,1
    - Dst: bfd_key_iterate
      Src: /src/frr/bfdd/dplane.c:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 650
    functionName: bfd_dplane_ctx_new
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - bfd_key_iterate
    - stream_new
    - XCALLOC
    linkageType: ''
    returnType: struct bfd_dplane_ctx
    signature: struct bfd_dplane_ctx *bfd_dplane_ctx_new(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_session_enable
      Src: /src/frr/bfdd/dplane.c:663,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 652
    functionDepth: 5
    functionLinenumber: 652
    functionLinenumberEnd: 664
    functionName: _bfd_session_unregister_dplane
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - bfd_session_enable
    linkageType: ''
    returnType: void
    signature: void _bfd_session_unregister_dplane(struct hash_bucket *hb, void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:669,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:675,1
    - Dst: socket_close
      Src: /src/frr/bfdd/dplane.c:682,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:683,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:684,1
    - Dst: event_add_timer
      Src: /src/frr/bfdd/dplane.c:685,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/dplane.c:692,1
    - Dst: bfd_key_iterate
      Src: /src/frr/bfdd/dplane.c:696,1
    - Dst: socket_close
      Src: /src/frr/bfdd/dplane.c:699,1
    - Dst: stream_free
      Src: /src/frr/bfdd/dplane.c:700,1
    - Dst: stream_free
      Src: /src/frr/bfdd/dplane.c:701,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:702,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:703,1
    - Dst: XFREE
      Src: /src/frr/bfdd/dplane.c:704,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - bdc
    argTypes:
    - struct bfd_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 666
    functionDepth: 2
    functionLinenumber: 666
    functionLinenumberEnd: 705
    functionName: bfd_dplane_ctx_free
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 2
    functionsReached:
    - stream_free
    - TAILQ_REMOVE
    - zlog_debug
    - EVENT_OFF
    - socket_close
    - XFREE
    - bfd_key_iterate
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_ctx_free(struct bfd_dplane_ctx *bdc)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:714,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:715,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:723,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/dplane.c:724,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:744,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:745,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:746,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:747,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:748,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:749,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - bs
    - msg
    argTypes:
    - struct bfd_session*
    - struct bfddp_message*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 707
    functionDepth: 1
    functionLinenumber: 707
    functionLinenumberEnd: 750
    functionName: _bfd_dplane_session_fill
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - ntohs
    - strlcpy
    - htonl
    linkageType: ''
    returnType: void
    signature: "void _bfd_dplane_session_fill(const struct bfd_session *bs,\n\t\t\t\t
      \    struct bfddp_message *msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_dplane_update_session
      Src: /src/frr/bfdd/dplane.c:766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - bdc
    - bs
    argTypes:
    - struct bfd_dplane_ctx*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 771
    functionName: _bfd_dplane_add_session
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 1
    functionsReached:
    - bfd_dplane_update_session
    linkageType: ''
    returnType: int
    signature: "int _bfd_dplane_add_session(struct bfd_dplane_ctx *bdc,\n\t\t\t\t
      \  struct bfd_session *bs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:779,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:781,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:783,1
    - Dst: be64toh
      Src: /src/frr/bfdd/dplane.c:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - arg
    argTypes:
    - struct bfddp_message*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 786
    functionName: _bfd_dplane_update_session_counters
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - be64toh
    linkageType: ''
    returnType: void
    signature: "void _bfd_dplane_update_session_counters(struct bfddp_message *msg,\n\t\t\t\t\t\tvoid
      *arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/frr/bfdd/dplane.c:802,1
    - Dst: htons
      Src: /src/frr/bfdd/dplane.c:803,1
    - Dst: htons
      Src: /src/frr/bfdd/dplane.c:804,1
    - Dst: bfd_dplane_next_id
      Src: /src/frr/bfdd/dplane.c:804,1
    - Dst: htonl
      Src: /src/frr/bfdd/dplane.c:807,1
    - Dst: bfd_dplane_enqueue
      Src: /src/frr/bfdd/dplane.c:810,1
    - Dst: bfd_dplane_flush
      Src: /src/frr/bfdd/dplane.c:814,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 795
    functionDepth: 9
    functionLinenumber: 795
    functionLinenumberEnd: 817
    functionName: bfd_dplane_request_counters
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - htons
    - bfd_dplane_enqueue
    - bfd_dplane_flush
    - bfd_dplane_next_id
    - ntohs
    - htonl
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t bfd_dplane_request_counters(const struct bfd_session *bs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/dplane.c:824,1
    - Dst: accept
      Src: /src/frr/bfdd/dplane.c:829,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:831,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:831,1
    - Dst: bfd_dplane_ctx_new
      Src: /src/frr/bfdd/dplane.c:836,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bfdd/dplane.c:837,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:840,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/dplane.c:843,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 822
    functionDepth: 3
    functionLinenumber: 822
    functionLinenumberEnd: 845
    functionName: bfd_dplane_accept
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - strerror
    - accept
    - bfd_dplane_ctx_new
    - TAILQ_INSERT_TAIL
    - zlog_warn
    - zlog_debug
    - EVENT_ARG
    - event_add_read
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_accept(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/bfdd/dplane.c:855,1
    - Dst: stream_reset
      Src: /src/frr/bfdd/dplane.c:856,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/dplane.c:859,1
    - Dst: bfd_key_iterate
      Src: /src/frr/bfdd/dplane.c:862,1
    - Dst: bfd_key_iterate
      Src: /src/frr/bfdd/dplane.c:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bdc
    argTypes:
    - struct bfd_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 850
    functionDepth: 2
    functionLinenumber: 850
    functionLinenumberEnd: 864
    functionName: _bfd_dplane_client_bootstrap
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - event_add_read
    - stream_reset
    - bfd_key_iterate
    linkageType: ''
    returnType: void
    signature: void _bfd_dplane_client_bootstrap(struct bfd_dplane_ctx *bdc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/frr/bfdd/dplane.c:873,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:879,1
    - Dst: _bfd_dplane_client_bootstrap
      Src: /src/frr/bfdd/dplane.c:882,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:895,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:896,1
    - Dst: bfd_dplane_ctx_free
      Src: /src/frr/bfdd/dplane.c:897,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - bdc
    argTypes:
    - struct bfd_dplane_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 866
    functionDepth: 3
    functionLinenumber: 866
    functionLinenumberEnd: 900
    functionName: bfd_dplane_client_connecting
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 1
    functionsReached:
    - _bfd_dplane_client_bootstrap
    - getsockopt
    - strerror
    - bfd_dplane_ctx_free
    - zlog_debug
    - zlog_warn
    linkageType: ''
    returnType: bool
    signature: bool bfd_dplane_client_connecting(struct bfd_dplane_ctx *bdc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/dplane.c:904,1
    - Dst: socket
      Src: /src/frr/bfdd/dplane.c:909,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:911,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:912,1
    - Dst: set_nonblocking
      Src: /src/frr/bfdd/dplane.c:917,1
    - Dst: setsockopt
      Src: /src/frr/bfdd/dplane.c:922,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:923,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:923,1
    - Dst: connect
      Src: /src/frr/bfdd/dplane.c:926,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:928,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:929,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:936,1
    - Dst: event_add_write
      Src: /src/frr/bfdd/dplane.c:941,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:945,1
    - Dst: _bfd_dplane_client_bootstrap
      Src: /src/frr/bfdd/dplane.c:948,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:952,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:953,1
    - Dst: socket_close
      Src: /src/frr/bfdd/dplane.c:954,1
    - Dst: event_add_timer
      Src: /src/frr/bfdd/dplane.c:955,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 902
    functionDepth: 3
    functionLinenumber: 902
    functionLinenumberEnd: 957
    functionName: bfd_dplane_client_connect
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - _bfd_dplane_client_bootstrap
    - connect
    - strerror
    - socket
    - zlog_warn
    - zlog_debug
    - EVENT_OFF
    - socket_close
    - EVENT_ARG
    - set_nonblocking
    - setsockopt
    - event_add_timer
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_client_connect(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_dplane_ctx_new
      Src: /src/frr/bfdd/dplane.c:964,1
    - Dst: memcpy
      Src: /src/frr/bfdd/dplane.c:966,1
    - Dst: memcpy
      Src: /src/frr/bfdd/dplane.c:969,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:971,1
    - Dst: event_add_timer
      Src: /src/frr/bfdd/dplane.c:977,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bfdd/dplane.c:981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - sa
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 959
    functionDepth: 3
    functionLinenumber: 959
    functionLinenumberEnd: 982
    functionName: bfd_dplane_client_init
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - TAILQ_INSERT_TAIL
    - bfd_dplane_ctx_new
    - zlog_warn
    - event_add_timer
    - memcpy
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_client_init(const struct sockaddr *sa, socklen_t salen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:993,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/dplane.c:996,1
    - Dst: bfd_dplane_ctx_free
      Src: /src/frr/bfdd/dplane.c:997,1
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/dplane.c:1000,1
    - Dst: close
      Src: /src/frr/bfdd/dplane.c:1001,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 988
    functionDepth: 3
    functionLinenumber: 988
    functionLinenumberEnd: 1004
    functionName: bfd_dplane_finish_late
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - bfd_dplane_ctx_free
    - close
    - zlog_debug
    - EVENT_OFF
    - TAILQ_FIRST
    linkageType: ''
    returnType: int
    signature: int bfd_dplane_finish_late(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bfdd/dplane.c:1013,1
    - Dst: TAILQ_INIT
      Src: /src/frr/bfdd/dplane.c:1016,1
    - Dst: hook_register
      Src: /src/frr/bfdd/dplane.c:1022,1
    - Dst: bfd_dplane_client_init
      Src: /src/frr/bfdd/dplane.c:1026,1
    - Dst: socket
      Src: /src/frr/bfdd/dplane.c:1037,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:1039,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:1040,1
    - Dst: sockopt_reuseaddr
      Src: /src/frr/bfdd/dplane.c:1044,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:1045,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:1046,1
    - Dst: close
      Src: /src/frr/bfdd/dplane.c:1047,1
    - Dst: unlink
      Src: /src/frr/bfdd/dplane.c:1053,1
    - Dst: bind
      Src: /src/frr/bfdd/dplane.c:1055,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:1056,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:1057,1
    - Dst: close
      Src: /src/frr/bfdd/dplane.c:1058,1
    - Dst: listen
      Src: /src/frr/bfdd/dplane.c:1062,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/dplane.c:1063,1
    - Dst: strerror
      Src: /src/frr/bfdd/dplane.c:1064,1
    - Dst: close
      Src: /src/frr/bfdd/dplane.c:1065,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/dplane.c:1070,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - sa
    - salen
    - client
    argTypes:
    - struct sockaddr*
    - socklen_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1009
    functionDepth: 4
    functionLinenumber: 1009
    functionLinenumberEnd: 1072
    functionName: bfd_dplane_init
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - unlink
    - hook_register
    - sockopt_reuseaddr
    - strerror
    - socket
    - close
    - bfd_dplane_client_init
    - zlog_warn
    - bind
    - listen
    - event_add_read
    - TAILQ_INIT
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_init(const struct sockaddr *sa, socklen_t salen, bool
      client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/dplane.c:1079,1
    - Dst: _bfd_dplane_add_session
      Src: /src/frr/bfdd/dplane.c:1080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1074
    functionDepth: 2
    functionLinenumber: 1074
    functionLinenumberEnd: 1085
    functionName: bfd_dplane_add_session
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 3
    functionsReached:
    - _bfd_dplane_add_session
    - TAILQ_FOREACH
    linkageType: ''
    returnType: int
    signature: int bfd_dplane_add_session(struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_dplane_session_fill
      Src: /src/frr/bfdd/dplane.c:1094,1
    - Dst: bfd_dplane_enqueue
      Src: /src/frr/bfdd/dplane.c:1097,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:1097,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1087
    functionDepth: 9
    functionLinenumber: 1087
    functionLinenumberEnd: 1098
    functionName: bfd_dplane_update_session
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 3
    functionsReached:
    - ntohs
    - bfd_dplane_enqueue
    - _bfd_dplane_session_fill
    linkageType: ''
    returnType: int
    signature: int bfd_dplane_update_session(const struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _bfd_dplane_session_fill
      Src: /src/frr/bfdd/dplane.c:1110,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:1113,1
    - Dst: bfd_dplane_enqueue
      Src: /src/frr/bfdd/dplane.c:1116,1
    - Dst: ntohs
      Src: /src/frr/bfdd/dplane.c:1116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1100
    functionDepth: 9
    functionLinenumber: 1100
    functionLinenumberEnd: 1122
    functionName: bfd_dplane_delete_session
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 1
    functionsReached:
    - ntohs
    - bfd_dplane_enqueue
    - _bfd_dplane_session_fill
    linkageType: ''
    returnType: int
    signature: int bfd_dplane_delete_session(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vty_out
      Src: /src/frr/bfdd/dplane.c:1134,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/dplane.c:1135,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1136,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1137,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1138,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1139,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1140,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bfdd/dplane.c:1140,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1142,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1143,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1144,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1145,1
    - Dst: SHOW_COUNTER
      Src: /src/frr/bfdd/dplane.c:1146,1
    - Dst: STREAM_READABLE
      Src: /src/frr/bfdd/dplane.c:1147,1
    - Dst: vty_out
      Src: /src/frr/bfdd/dplane.c:1148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - vty
    argTypes:
    - struct vty*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1127
    functionDepth: 2
    functionLinenumber: 1127
    functionLinenumberEnd: 1151
    functionName: bfd_dplane_show_counters
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 0
    functionsReached:
    - SHOW_COUNTER
    - vty_out
    - STREAM_READABLE
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfd_dplane_show_counters(struct vty *vty)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - label
    - ','
    - counter
    - ','
    - formatter
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1131
    functionDepth: 0
    functionLinenumber: 1131
    functionLinenumberEnd: 1133
    functionName: SHOW_COUNTER
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHOW_COUNTER(label, counter, formatter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bfd_dplane_request_counters
      Src: /src/frr/bfdd/dplane.c:1163,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/dplane.c:1165,1
    - Dst: bfd_dplane_expect
      Src: /src/frr/bfdd/dplane.c:1171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1153
    functionDepth: 12
    functionLinenumber: 1153
    functionLinenumberEnd: 1176
    functionName: bfd_dplane_update_session_counters
    functionSourceFile: /src/frr/bfdd/dplane.c
    functionUses: 2
    functionsReached:
    - bfd_dplane_request_counters
    - zlog_debug
    - bfd_dplane_expect
    linkageType: ''
    returnType: int
    signature: int bfd_dplane_update_session_counters(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 23
    functionName: tv_normalize
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tv_normalize(struct timeval *tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_recvtimer_delete
      Src: /src/frr/bfdd/event.c:30,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/event.c:33,1
    - Dst: tv_normalize
      Src: /src/frr/bfdd/event.c:37,1
    - Dst: event_add_timer_tv
      Src: /src/frr/bfdd/event.c:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 41
    functionName: bfd_recvtimer_update
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 4
    functionsReached:
    - CHECK_FLAG
    - tv_normalize
    - event_add_timer_tv
    - bfd_recvtimer_delete
    linkageType: ''
    returnType: void
    signature: void bfd_recvtimer_update(struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_echo_recvtimer_delete
      Src: /src/frr/bfdd/event.c:48,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/event.c:51,1
    - Dst: tv_normalize
      Src: /src/frr/bfdd/event.c:55,1
    - Dst: event_add_timer_tv
      Src: /src/frr/bfdd/event.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: bfd_echo_recvtimer_update
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - tv_normalize
    - event_add_timer_tv
    - bfd_echo_recvtimer_delete
    linkageType: ''
    returnType: void
    signature: void bfd_echo_recvtimer_update(struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_xmttimer_delete
      Src: /src/frr/bfdd/event.c:66,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/event.c:69,1
    - Dst: tv_normalize
      Src: /src/frr/bfdd/event.c:73,1
    - Dst: event_add_timer_tv
      Src: /src/frr/bfdd/event.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bs
    - jitter
    argTypes:
    - struct bfd_session*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 76
    functionName: bfd_xmttimer_update
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 3
    functionsReached:
    - bfd_xmttimer_delete
    - CHECK_FLAG
    - tv_normalize
    - event_add_timer_tv
    linkageType: ''
    returnType: void
    signature: void bfd_xmttimer_update(struct bfd_session *bs, uint64_t jitter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bfd_echo_xmttimer_delete
      Src: /src/frr/bfdd/event.c:83,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/event.c:86,1
    - Dst: tv_normalize
      Src: /src/frr/bfdd/event.c:90,1
    - Dst: event_add_timer_tv
      Src: /src/frr/bfdd/event.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - bs
    - jitter
    argTypes:
    - struct bfd_session*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 94
    functionName: bfd_echo_xmttimer_update
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 1
    functionsReached:
    - event_add_timer_tv
    - CHECK_FLAG
    - tv_normalize
    - bfd_echo_xmttimer_delete
    linkageType: ''
    returnType: void
    signature: void bfd_echo_xmttimer_update(struct bfd_session *bs, uint64_t jitter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/event.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: bfd_recvtimer_delete
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 5
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void bfd_recvtimer_delete(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/event.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: bfd_echo_recvtimer_delete
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 3
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void bfd_echo_recvtimer_delete(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/event.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: bfd_xmttimer_delete
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 5
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void bfd_xmttimer_delete(struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_OFF
      Src: /src/frr/bfdd/event.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: bfd_echo_xmttimer_delete
    functionSourceFile: /src/frr/bfdd/event.c
    functionUses: 3
    functionsReached:
    - EVENT_OFF
    linkageType: ''
    returnType: void
    signature: void bfd_echo_xmttimer_delete(struct bfd_session *bs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/frr/bfdd/control.c:74,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:76,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:76,1
    - Dst: fcntl
      Src: /src/frr/bfdd/control.c:81,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:82,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 87
    functionName: sock_set_nonblock
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 8
    functionsReached:
    - strerror
    - zlog_warn
    - fcntl
    linkageType: ''
    returnType: int
    signature: int sock_set_nonblock(int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlcpy
      Src: /src/frr/bfdd/control.c:99,1
    - Dst: unlink
      Src: /src/frr/bfdd/control.c:102,1
    - Dst: socket
      Src: /src/frr/bfdd/control.c:104,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/control.c:106,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:106,1
    - Dst: umask
      Src: /src/frr/bfdd/control.c:110,1
    - Dst: bind
      Src: /src/frr/bfdd/control.c:111,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/control.c:112,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:112,1
    - Dst: close
      Src: /src/frr/bfdd/control.c:113,1
    - Dst: umask
      Src: /src/frr/bfdd/control.c:116,1
    - Dst: listen
      Src: /src/frr/bfdd/control.c:118,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/control.c:119,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:119,1
    - Dst: close
      Src: /src/frr/bfdd/control.c:120,1
    - Dst: sock_set_nonblock
      Src: /src/frr/bfdd/control.c:124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 129
    functionName: control_init
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - unlink
    - strerror
    - strlcpy
    - socket
    - zlog_err
    - close
    - bind
    - listen
    - umask
    - sock_set_nonblock
    linkageType: ''
    returnType: int
    signature: int control_init(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/bfdd/control.c:135,1
    - Dst: socket_close
      Src: /src/frr/bfdd/control.c:137,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bfdd/control.c:139,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/control.c:140,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 5
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: control_shutdown
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - event_cancel
    - socket_close
    - TAILQ_EMPTY
    - control_free
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void control_shutdown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_FD
      Src: /src/frr/bfdd/control.c:147,1
    - Dst: accept
      Src: /src/frr/bfdd/control.c:149,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:151,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:151,1
    - Dst: control_new
      Src: /src/frr/bfdd/control.c:155,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/control.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 158
    functionName: control_accept
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - EVENT_FD
    - strerror
    - accept
    - zlog_warn
    - event_add_read
    - control_new
    linkageType: ''
    returnType: void
    signature: void control_accept(struct event *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bfdd/control.c:168,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/control.c:174,1
    - Dst: TAILQ_INIT
      Src: /src/frr/bfdd/control.c:176,1
    - Dst: TAILQ_INIT
      Src: /src/frr/bfdd/control.c:177,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bfdd/control.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - sd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 181
    functionName: control_new
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - event_add_read
    - TAILQ_INSERT_TAIL
    - TAILQ_INIT
    - XCALLOC
    linkageType: ''
    returnType: struct bfd_control_socket
    signature: struct bfd_control_socket *control_new(int sd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_cancel
      Src: /src/frr/bfdd/control.c:188,1
    - Dst: event_cancel
      Src: /src/frr/bfdd/control.c:189,1
    - Dst: close
      Src: /src/frr/bfdd/control.c:191,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/control.c:193,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bfdd/control.c:196,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/control.c:197,1
    - Dst: control_queue_free
      Src: /src/frr/bfdd/control.c:198,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bfdd/control.c:202,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/control.c:203,1
    - Dst: control_notifypeer_free
      Src: /src/frr/bfdd/control.c:204,1
    - Dst: control_reset_buf
      Src: /src/frr/bfdd/control.c:207,1
    - Dst: XFREE
      Src: /src/frr/bfdd/control.c:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - bcs
    argTypes:
    - struct bfd_control_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 183
    functionDepth: 5
    functionLinenumber: 183
    functionLinenumberEnd: 209
    functionName: control_free
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - control_notifypeer_free
    - control_reset_buf
    - TAILQ_REMOVE
    - control_queue_free
    - event_cancel
    - close
    - XFREE
    - TAILQ_EMPTY
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void control_free(struct bfd_control_socket *bcs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: control_notifypeer_find
      Src: /src/frr/bfdd/control.c:216,1
    - Dst: XCALLOC
      Src: /src/frr/bfdd/control.c:220,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bfdd/control.c:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - bcs
    - bs
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 227
    functionName: control_notifypeer_new
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - TAILQ_INSERT_TAIL
    - control_notifypeer_find
    - XCALLOC
    linkageType: ''
    returnType: struct bfd_notify_peer
    signature: "struct bfd_notify_peer *control_notifypeer_new(struct bfd_control_socket
      *bcs,\n\t\t\t\t\t       struct bfd_session *bs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/control.c:232,1
    - Dst: XFREE
      Src: /src/frr/bfdd/control.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bcs
    - bnp
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_notify_peer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: control_notifypeer_free
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - XFREE
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: "void control_notifypeer_free(struct bfd_control_socket *bcs,\n\t\t\t\t
      \   struct bfd_notify_peer *bnp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/control.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bcs
    - bs
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: control_notifypeer_find
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct bfd_notify_peer
    signature: "struct bfd_notify_peer *control_notifypeer_find(struct bfd_control_socket
      *bcs,\n\t\t\t\t\t\tstruct bfd_session *bs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bfdd/control.c:254,1
    - Dst: control_reset_buf
      Src: /src/frr/bfdd/control.c:256,1
    - Dst: TAILQ_INSERT_TAIL
      Src: /src/frr/bfdd/control.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - bcs
    argTypes:
    - struct bfd_control_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 260
    functionName: control_queue_new
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - TAILQ_INSERT_TAIL
    - control_reset_buf
    - XCALLOC
    linkageType: ''
    returnType: struct bfd_control_queue
    signature: struct bfd_control_queue *control_queue_new(struct bfd_control_socket
      *bcs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: control_reset_buf
      Src: /src/frr/bfdd/control.c:265,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/control.c:266,1
    - Dst: XFREE
      Src: /src/frr/bfdd/control.c:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bcs
    - bcq
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 268
    functionName: control_queue_free
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - XFREE
    - control_reset_buf
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: "void control_queue_free(struct bfd_control_socket *bcs,\n\t\t\t       struct
      bfd_control_queue *bcq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bfdd/control.c:275,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/control.c:278,1
    - Dst: control_queue_free
      Src: /src/frr/bfdd/control.c:279,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bfdd/control.c:282,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/control.c:285,1
    - Dst: event_add_write
      Src: /src/frr/bfdd/control.c:289,1
    - Dst: event_cancel
      Src: /src/frr/bfdd/control.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - bcs
    argTypes:
    - struct bfd_control_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 270
    functionDepth: 5
    functionLinenumber: 270
    functionLinenumberEnd: 298
    functionName: control_queue_dequeue
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - control_queue_free
    - event_cancel
    - TAILQ_EMPTY
    - TAILQ_FIRST
    linkageType: ''
    returnType: int
    signature: int control_queue_dequeue(struct bfd_control_socket *bcs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: control_queue_new
      Src: /src/frr/bfdd/control.c:306,1
    - Dst: ntohl
      Src: /src/frr/bfdd/control.c:309,1
    - Dst: event_add_write
      Src: /src/frr/bfdd/control.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - bcs
    - bcm
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 323
    functionName: control_queue_enqueue
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - ntohl
    - control_queue_new
    - event_add_write
    linkageType: ''
    returnType: int
    signature: "int control_queue_enqueue(struct bfd_control_socket *bcs,\n\t\t\t\t
      struct bfd_control_msg *bcm)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: control_queue_enqueue
      Src: /src/frr/bfdd/control.c:332,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/control.c:339,1
    - Dst: TAILQ_LAST
      Src: /src/frr/bfdd/control.c:353,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/control.c:354,1
    - Dst: TAILQ_INSERT_AFTER
      Src: /src/frr/bfdd/control.c:360,1
    - Dst: TAILQ_INSERT_HEAD
      Src: /src/frr/bfdd/control.c:366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - bcs
    - bcm
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 325
    functionDepth: 3
    functionLinenumber: 325
    functionLinenumberEnd: 372
    functionName: control_queue_enqueue_first
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - control_queue_enqueue
    - TAILQ_REMOVE
    - TAILQ_INSERT_HEAD
    - TAILQ_INSERT_AFTER
    - TAILQ_LAST
    - TAILQ_FIRST
    linkageType: ''
    returnType: int
    signature: "int control_queue_enqueue_first(struct bfd_control_socket *bcs,\n\t\t\t\t
      \      struct bfd_control_msg *bcm)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XFREE
      Src: /src/frr/bfdd/control.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - bcb
    argTypes:
    - struct bfd_control_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 380
    functionName: control_reset_buf
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 3
    functionsReached:
    - XFREE
    linkageType: ''
    returnType: void
    signature: void control_reset_buf(struct bfd_control_buffer *bcb)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/control.c:384,1
    - Dst: read
      Src: /src/frr/bfdd/control.c:402,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:404,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:411,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:411,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:412,1
    - Dst: ntohl
      Src: /src/frr/bfdd/control.c:417,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/control.c:419,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:421,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/control.c:428,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:430,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/control.c:435,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:437,1
    - Dst: XMALLOC
      Src: /src/frr/bfdd/control.c:447,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:450,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:452,1
    - Dst: memcpy
      Src: /src/frr/bfdd/control.c:456,1
    - Dst: read
      Src: /src/frr/bfdd/control.c:463,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:465,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:472,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:472,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:473,1
    - Dst: control_handle_request_add
      Src: /src/frr/bfdd/control.c:485,1
    - Dst: control_handle_request_del
      Src: /src/frr/bfdd/control.c:488,1
    - Dst: control_handle_notify
      Src: /src/frr/bfdd/control.c:491,1
    - Dst: control_handle_notify_add
      Src: /src/frr/bfdd/control.c:494,1
    - Dst: control_handle_notify_del
      Src: /src/frr/bfdd/control.c:497,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/control.c:501,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:503,1
    - Dst: control_reset_buf
      Src: /src/frr/bfdd/control.c:510,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/control.c:514,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 93
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 382
    functionDepth: 6
    functionLinenumber: 382
    functionLinenumberEnd: 515
    functionName: control_read
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - control_handle_request_add
    - read
    - control_response
    - control_reset_buf
    - strerror
    - ntohl
    - control_handle_notify
    - XMALLOC
    - control_handle_notify_add
    - zlog_warn
    - zlog_debug
    - control_handle_request_del
    - control_handle_notify_del
    - EVENT_ARG
    - event_add_read
    - control_free
    - memcpy
    linkageType: ''
    returnType: void
    signature: void control_read(struct event *t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVENT_ARG
      Src: /src/frr/bfdd/control.c:519,1
    - Dst: write
      Src: /src/frr/bfdd/control.c:524,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:526,1
    - Dst: event_add_write
      Src: /src/frr/bfdd/control.c:532,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:537,1
    - Dst: strerror
      Src: /src/frr/bfdd/control.c:537,1
    - Dst: control_free
      Src: /src/frr/bfdd/control.c:538,1
    - Dst: event_add_write
      Src: /src/frr/bfdd/control.c:546,1
    - Dst: control_queue_dequeue
      Src: /src/frr/bfdd/control.c:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 517
    functionDepth: 6
    functionLinenumber: 517
    functionLinenumberEnd: 552
    functionName: control_write
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - event_add_write
    - strerror
    - control_queue_dequeue
    - zlog_warn
    - EVENT_ARG
    - control_free
    - write
    linkageType: ''
    returnType: void
    signature: void control_write(struct event *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_request_add
      Src: /src/frr/bfdd/control.c:563,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:564,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:566,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bcs
    - bcm
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 568
    functionName: control_handle_request_add
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - config_request_add
    - control_response
    linkageType: ''
    returnType: void
    signature: "void control_handle_request_add(struct bfd_control_socket *bcs,\n\t\t\t\t
      \      struct bfd_control_msg *bcm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_request_del
      Src: /src/frr/bfdd/control.c:575,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:576,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:578,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - bcs
    - bcm
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 580
    functionName: control_handle_request_del
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - control_response
    - config_request_del
    linkageType: ''
    returnType: void
    signature: "void control_handle_request_del(struct bfd_control_socket *bcs,\n\t\t\t\t
      \      struct bfd_control_msg *bcm)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pl_find
      Src: /src/frr/bfdd/control.c:587,1
    - Dst: bs_peer_find
      Src: /src/frr/bfdd/control.c:592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - bpc
    argTypes:
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 593
    functionName: _notify_find_peer
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - bs_peer_find
    - pl_find
    linkageType: ''
    returnType: struct bfd_session
    signature: struct bfd_session *_notify_find_peer(struct bfd_peer_cfg *bpc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _control_notify_config
      Src: /src/frr/bfdd/control.c:602,1
    - Dst: _control_notify
      Src: /src/frr/bfdd/control.c:606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - hb
    - arg
    argTypes:
    - struct hash_bucket*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 607
    functionName: _control_handle_notify
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - _control_notify
    - _control_notify_config
    linkageType: ''
    returnType: void
    signature: void _control_handle_notify(struct hash_bucket *hb, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/frr/bfdd/control.c:612,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:614,1
    - Dst: bfd_id_iterate
      Src: /src/frr/bfdd/control.c:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - bcs
    - bcm
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 609
    functionDepth: 2
    functionLinenumber: 609
    functionLinenumberEnd: 622
    functionName: control_handle_notify
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - control_response
    - memcpy
    - bfd_id_iterate
    linkageType: ''
    returnType: void
    signature: "void control_handle_notify(struct bfd_control_socket *bcs,\n\t\t\t\t
      \ struct bfd_control_msg *bcm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _notify_find_peer
      Src: /src/frr/bfdd/control.c:627,1
    - Dst: control_notifypeer_new
      Src: /src/frr/bfdd/control.c:632,1
    - Dst: _control_notify
      Src: /src/frr/bfdd/control.c:635,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bpc
    - arg
    argTypes:
    - struct bfd_peer_cfg*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 624
    functionDepth: 4
    functionLinenumber: 624
    functionLinenumberEnd: 638
    functionName: notify_add_cb
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - _notify_find_peer
    - control_notifypeer_new
    - _control_notify
    linkageType: ''
    returnType: int
    signature: int notify_add_cb(struct bfd_peer_cfg *bpc, void *arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _notify_find_peer
      Src: /src/frr/bfdd/control.c:643,1
    - Dst: control_notifypeer_find
      Src: /src/frr/bfdd/control.c:649,1
    - Dst: control_notifypeer_free
      Src: /src/frr/bfdd/control.c:651,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - bpc
    - arg
    argTypes:
    - struct bfd_peer_cfg*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 640
    functionDepth: 4
    functionLinenumber: 640
    functionLinenumberEnd: 654
    functionName: notify_del_cb
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 0
    functionsReached:
    - _notify_find_peer
    - control_notifypeer_free
    - control_notifypeer_find
    linkageType: ''
    returnType: int
    signature: int notify_del_cb(struct bfd_peer_cfg *bpc, void *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_notify_request
      Src: /src/frr/bfdd/control.c:661,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:662,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bcs
    - bcm
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 668
    functionName: control_handle_notify_add
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - control_response
    - config_notify_request
    linkageType: ''
    returnType: void
    signature: "void control_handle_notify_add(struct bfd_control_socket *bcs,\n\t\t\t\t
      \     struct bfd_control_msg *bcm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_notify_request
      Src: /src/frr/bfdd/control.c:675,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:676,1
    - Dst: control_response
      Src: /src/frr/bfdd/control.c:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - bcs
    - bcm
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_control_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 682
    functionName: control_handle_notify_del
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - control_response
    - config_notify_request
    linkageType: ''
    returnType: void
    signature: "void control_handle_notify_del(struct bfd_control_socket *bcs,\n\t\t\t\t
      \     struct bfd_control_msg *bcm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_response
      Src: /src/frr/bfdd/control.c:696,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:698,1
    - Dst: strlen
      Src: /src/frr/bfdd/control.c:704,1
    - Dst: XMALLOC
      Src: /src/frr/bfdd/control.c:705,1
    - Dst: htonl
      Src: /src/frr/bfdd/control.c:708,1
    - Dst: memcpy
      Src: /src/frr/bfdd/control.c:712,1
    - Dst: XFREE
      Src: /src/frr/bfdd/control.c:713,1
    - Dst: control_queue_enqueue_first
      Src: /src/frr/bfdd/control.c:715,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - bcs
    - id
    - status
    - error
    argTypes:
    - struct bfd_control_socket*
    - uint16_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 688
    functionDepth: 4
    functionLinenumber: 688
    functionLinenumberEnd: 716
    functionName: control_response
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 6
    functionsReached:
    - strlen
    - config_response
    - XMALLOC
    - zlog_warn
    - control_queue_enqueue_first
    - XFREE
    - htonl
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void control_response(struct bfd_control_socket *bcs, uint16_t id,\n\t\t\t
      \    const char *status, const char *error)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_notify
      Src: /src/frr/bfdd/control.c:726,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:728,1
    - Dst: strlen
      Src: /src/frr/bfdd/control.c:734,1
    - Dst: XMALLOC
      Src: /src/frr/bfdd/control.c:735,1
    - Dst: htonl
      Src: /src/frr/bfdd/control.c:738,1
    - Dst: htons
      Src: /src/frr/bfdd/control.c:741,1
    - Dst: memcpy
      Src: /src/frr/bfdd/control.c:742,1
    - Dst: XFREE
      Src: /src/frr/bfdd/control.c:743,1
    - Dst: control_queue_enqueue
      Src: /src/frr/bfdd/control.c:745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - bcs
    - bs
    argTypes:
    - struct bfd_control_socket*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 718
    functionDepth: 3
    functionLinenumber: 718
    functionLinenumberEnd: 746
    functionName: _control_notify
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 2
    functionsReached:
    - control_queue_enqueue
    - strlen
    - htons
    - config_notify
    - XMALLOC
    - zlog_warn
    - XFREE
    - htonl
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void _control_notify(struct bfd_control_socket *bcs,\n\t\t\t    struct
      bfd_session *bs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ptm_bfd_notify
      Src: /src/frr/bfdd/control.c:754,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/control.c:760,1
    - Dst: control_notifypeer_find
      Src: /src/frr/bfdd/control.c:766,1
    - Dst: _control_notify
      Src: /src/frr/bfdd/control.c:775,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - bs
    - notify_state
    argTypes:
    - struct bfd_session*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 748
    functionDepth: 4
    functionLinenumber: 748
    functionLinenumberEnd: 779
    functionName: control_notify
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 7
    functionsReached:
    - _control_notify
    - ptm_bfd_notify
    - control_notifypeer_find
    - TAILQ_FOREACH
    linkageType: ''
    returnType: int
    signature: int control_notify(struct bfd_session *bs, uint8_t notify_state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_notify_config
      Src: /src/frr/bfdd/control.c:789,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/control.c:791,1
    - Dst: strlen
      Src: /src/frr/bfdd/control.c:797,1
    - Dst: XMALLOC
      Src: /src/frr/bfdd/control.c:798,1
    - Dst: htonl
      Src: /src/frr/bfdd/control.c:801,1
    - Dst: htons
      Src: /src/frr/bfdd/control.c:804,1
    - Dst: memcpy
      Src: /src/frr/bfdd/control.c:805,1
    - Dst: XFREE
      Src: /src/frr/bfdd/control.c:806,1
    - Dst: control_queue_enqueue
      Src: /src/frr/bfdd/control.c:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - bcs
    - op
    - bs
    argTypes:
    - struct bfd_control_socket*
    - char*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 781
    functionDepth: 3
    functionLinenumber: 781
    functionLinenumberEnd: 809
    functionName: _control_notify_config
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 1
    functionsReached:
    - control_queue_enqueue
    - strlen
    - htons
    - XMALLOC
    - zlog_warn
    - XFREE
    - htonl
    - memcpy
    - config_notify_config
    linkageType: ''
    returnType: void
    signature: "void _control_notify_config(struct bfd_control_socket *bcs,\n\t\t\t\t
      \  const char *op, struct bfd_session *bs)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/frr/bfdd/control.c:817,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/control.c:818,1
    - Dst: control_notifypeer_find
      Src: /src/frr/bfdd/control.c:819,1
    - Dst: control_notifypeer_free
      Src: /src/frr/bfdd/control.c:821,1
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/control.c:829,1
    - Dst: _control_notify_config
      Src: /src/frr/bfdd/control.c:837,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - op
    - bs
    argTypes:
    - char*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 811
    functionDepth: 4
    functionLinenumber: 811
    functionLinenumberEnd: 841
    functionName: control_notify_config
    functionSourceFile: /src/frr/bfdd/control.c
    functionUses: 7
    functionsReached:
    - control_notifypeer_free
    - _control_notify_config
    - strcmp
    - control_notifypeer_find
    - TAILQ_FOREACH
    linkageType: ''
    returnType: int
    signature: int control_notify_config(const char *op, struct bfd_session *bs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ptm_bfd_sess_new
      Src: /src/frr/bfdd/config.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bpc
    - arg
    argTypes:
    - struct bfd_peer_cfg*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: config_add
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 0
    functionsReached:
    - ptm_bfd_sess_new
    linkageType: ''
    returnType: int
    signature: "int config_add(struct bfd_peer_cfg *bpc,\n\t\t      void *arg __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ptm_bfd_sess_del
      Src: /src/frr/bfdd/config.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - bpc
    - arg
    argTypes:
    - struct bfd_peer_cfg*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: config_del
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - ptm_bfd_sess_del
    linkageType: ''
    returnType: int
    signature: "int config_del(struct bfd_peer_cfg *bpc,\n\t\t      void *arg __attribute__((unused)))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_iter_peek_name
      Src: /src/frr/bfdd/config.c:71,1
    - Dst: json_object_iter_peek_value
      Src: /src/frr/bfdd/config.c:72,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:74,1
    - Dst: parse_list
      Src: /src/frr/bfdd/config.c:75,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:76,1
    - Dst: parse_list
      Src: /src/frr/bfdd/config.c:77,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:78,1
    - Dst: parse_list
      Src: /src/frr/bfdd/config.c:79,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:81,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/config.c:82,1
    - Dst: json_object_put
      Src: /src/frr/bfdd/config.c:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - jo
    - h
    - arg
    argTypes:
    - struct json_object*
    - bpc_handle
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 95
    functionName: parse_config_json
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 0
    functionsReached:
    - parse_list
    - json_object_iter_peek_value
    - json_object_put
    - strcmp
    - json_object_iter_peek_name
    - zlog_warn
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int parse_config_json(struct json_object *jo, bpc_handle h, void *arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_object_iter_peek_name
      Src: /src/frr/bfdd/config.c:71,1
    - Dst: json_object_iter_peek_value
      Src: /src/frr/bfdd/config.c:72,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:74,1
    - Dst: parse_list
      Src: /src/frr/bfdd/config.c:75,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:76,1
    - Dst: parse_list
      Src: /src/frr/bfdd/config.c:77,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:78,1
    - Dst: parse_list
      Src: /src/frr/bfdd/config.c:79,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:81,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/config.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 86
    functionName: JSON_FOREACH
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 0
    functionsReached:
    - parse_list
    - json_object_iter_peek_value
    - strcmp
    - json_object_iter_peek_name
    - zlog_warn
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: void JSON_FOREACH (jo, joi, join)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_object_from_file
      Src: /src/frr/bfdd/config.c:101,1
    - Dst: parse_config_json
      Src: /src/frr/bfdd/config.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 106
    functionName: parse_config
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 0
    functionsReached:
    - parse_config_json
    - json_object_from_file
    linkageType: ''
    returnType: int
    signature: int parse_config(const char *fname)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_array_length
      Src: /src/frr/bfdd/config.c:116,1
    - Dst: json_object_array_get_idx
      Src: /src/frr/bfdd/config.c:118,1
    - Dst: memset
      Src: /src/frr/bfdd/config.c:121,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:130,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:134,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:138,1
    - Dst: parse_peer_label_config
      Src: /src/frr/bfdd/config.c:139,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/config.c:147,1
    - Dst: parse_peer_config
      Src: /src/frr/bfdd/config.c:152,1
    - Dst: h
      Src: /src/frr/bfdd/config.c:155,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 4
    argNames:
    - jo
    - plt
    - h
    - arg
    argTypes:
    - struct json_object*
    - enum peer_list_type
    - bpc_handle
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 159
    functionName: parse_list
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 2
    functionsReached:
    - parse_peer_label_config
    - json_object_array_length
    - memset
    - zlog_err
    - zlog_debug
    - h
    - parse_peer_config
    - json_object_array_get_idx
    linkageType: ''
    returnType: int
    signature: "int parse_list(struct json_object *jo, enum peer_list_type plt,\n\t\t
      \     bpc_handle h, void *arg)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:169,1
    - Dst: json_object_iter_peek_name
      Src: /src/frr/bfdd/config.c:172,1
    - Dst: json_object_iter_peek_value
      Src: /src/frr/bfdd/config.c:173,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:175,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:176,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:177,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:179,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:180,1
    - Dst: strtosa
      Src: /src/frr/bfdd/config.c:181,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:183,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:188,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:189,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:190,1
    - Dst: strtosa
      Src: /src/frr/bfdd/config.c:191,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:194,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:199,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:200,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:202,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/config.c:203,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:206,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:211,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:213,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:215,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/config.c:216,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:219,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:223,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:225,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:227,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:229,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:231,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:232,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:234,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:236,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:237,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:239,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:241,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:242,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:244,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:246,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:247,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:249,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:251,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:252,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:253,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:255,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:256,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:257,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:259,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:260,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:261,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:263,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:265,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/config.c:266,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:269,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:273,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:276,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/config.c:277,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:284,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 101
    argCount: 2
    argNames:
    - jo
    - bpc
    argTypes:
    - struct json_object*
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 290
    functionName: parse_peer_config
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - json_object_iter_peek_value
    - strtosa
    - strlcpy
    - strcmp
    - json_object_iter_peek_name
    - json_object_get_int64
    - zlog_debug
    - zlog_warn
    - json_object_get_boolean
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: int parse_peer_config(struct json_object *jo, struct bfd_peer_cfg *bpc)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: json_object_iter_peek_name
      Src: /src/frr/bfdd/config.c:172,1
    - Dst: json_object_iter_peek_value
      Src: /src/frr/bfdd/config.c:173,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:175,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:176,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:177,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:179,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:180,1
    - Dst: strtosa
      Src: /src/frr/bfdd/config.c:181,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:183,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:188,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:189,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:190,1
    - Dst: strtosa
      Src: /src/frr/bfdd/config.c:191,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:194,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:199,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:200,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:202,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/config.c:203,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:206,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:211,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:213,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:215,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/config.c:216,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:219,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:223,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:225,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:227,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:229,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:231,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:232,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:234,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:236,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:237,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:239,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:241,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:242,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:244,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:246,1
    - Dst: json_object_get_int64
      Src: /src/frr/bfdd/config.c:247,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:249,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:251,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:252,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:253,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:255,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:256,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:257,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:259,1
    - Dst: json_object_get_boolean
      Src: /src/frr/bfdd/config.c:260,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:261,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:263,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:265,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/config.c:266,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:269,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:273,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:276,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/config.c:277,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 281
    functionName: JSON_FOREACH
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 0
    functionsReached:
    - json_object_iter_peek_value
    - strtosa
    - strlcpy
    - strcmp
    - json_object_iter_peek_name
    - json_object_get_int64
    - zlog_debug
    - zlog_warn
    - json_object_get_boolean
    - json_object_get_string
    linkageType: ''
    returnType: void
    signature: void JSON_FOREACH (jo, joi, join)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json_object_object_get_ex
      Src: /src/frr/bfdd/config.c:300,1
    - Dst: json_object_get_string
      Src: /src/frr/bfdd/config.c:303,1
    - Dst: pl_find
      Src: /src/frr/bfdd/config.c:305,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/config.c:309,1
    - Dst: bs_to_bpc
      Src: /src/frr/bfdd/config.c:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - jo
    - bpc
    argTypes:
    - struct json_object*
    - struct bfd_peer_cfg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 315
    functionName: parse_peer_label_config
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - pl_find
    - json_object_object_get_ex
    - bs_to_bpc
    - zlog_debug
    - json_object_get_string
    linkageType: ''
    returnType: int
    signature: "int parse_peer_label_config(struct json_object *jo,\n\t\t\t\t   struct
      bfd_peer_cfg *bpc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_tokener_parse
      Src: /src/frr/bfdd/config.c:325,1
    - Dst: parse_config_json
      Src: /src/frr/bfdd/config.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - jsonstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 330
    functionName: config_request_add
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - parse_config_json
    - json_tokener_parse
    linkageType: ''
    returnType: int
    signature: int config_request_add(const char *jsonstr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_tokener_parse
      Src: /src/frr/bfdd/config.c:336,1
    - Dst: parse_config_json
      Src: /src/frr/bfdd/config.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - jsonstr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 341
    functionName: config_request_del
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - parse_config_json
    - json_tokener_parse
    linkageType: ''
    returnType: int
    signature: int config_request_del(const char *jsonstr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bfdd/config.c:348,1
    - Dst: json_object_new_string
      Src: /src/frr/bfdd/config.c:353,1
    - Dst: json_object_put
      Src: /src/frr/bfdd/config.c:355,1
    - Dst: json_object_object_add
      Src: /src/frr/bfdd/config.c:359,1
    - Dst: json_object_new_string
      Src: /src/frr/bfdd/config.c:363,1
    - Dst: json_object_put
      Src: /src/frr/bfdd/config.c:365,1
    - Dst: json_object_object_add
      Src: /src/frr/bfdd/config.c:369,1
    - Dst: XSTRDUP
      Src: /src/frr/bfdd/config.c:373,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/bfdd/config.c:375,1
    - Dst: json_object_put
      Src: /src/frr/bfdd/config.c:376,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - status
    - error
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 379
    functionName: config_response
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_put
    - json_object_new_string
    - json_object_object_add
    - json_object_to_json_string_ext
    - XSTRDUP
    linkageType: ''
    returnType: char
    signature: char *config_response(const char *status, const char *error)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bfdd/config.c:387,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:391,1
    - Dst: json_object_add_peer
      Src: /src/frr/bfdd/config.c:393,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:396,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:397,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:401,1
    - Dst: monotime
      Src: /src/frr/bfdd/config.c:403,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:404,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:407,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:410,1
    - Dst: monotime
      Src: /src/frr/bfdd/config.c:412,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:413,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:417,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:421,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:425,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:426,1
    - Dst: XSTRDUP
      Src: /src/frr/bfdd/config.c:429,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/bfdd/config.c:431,1
    - Dst: json_object_put
      Src: /src/frr/bfdd/config.c:432,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - bs
    argTypes:
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 435
    functionName: config_notify
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_add_peer
    - json_object_put
    - monotime
    - json_object_int_add
    - json_object_string_add
    - json_object_to_json_string_ext
    - XSTRDUP
    linkageType: ''
    returnType: char
    signature: char *config_notify(struct bfd_session *bs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: json_object_new_object
      Src: /src/frr/bfdd/config.c:442,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:446,1
    - Dst: json_object_add_peer
      Src: /src/frr/bfdd/config.c:448,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:451,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:454,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:455,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:457,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:459,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:461,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:464,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:466,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:468,1
    - Dst: json_object_int_add
      Src: /src/frr/bfdd/config.c:470,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/config.c:473,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bfdd/config.c:474,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bfdd/config.c:476,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/config.c:478,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bfdd/config.c:479,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bfdd/config.c:481,1
    - Dst: XSTRDUP
      Src: /src/frr/bfdd/config.c:485,1
    - Dst: json_object_to_json_string_ext
      Src: /src/frr/bfdd/config.c:487,1
    - Dst: json_object_put
      Src: /src/frr/bfdd/config.c:488,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - op
    - bs
    argTypes:
    - char*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 491
    functionName: config_notify_config
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - json_object_new_object
    - json_object_add_peer
    - json_object_put
    - CHECK_FLAG
    - strcmp
    - json_object_int_add
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_to_json_string_ext
    - json_object_boolean_false_add
    - XSTRDUP
    linkageType: ''
    returnType: char
    signature: char *config_notify_config(const char *op, struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_tokener_parse
      Src: /src/frr/bfdd/config.c:498,1
    - Dst: parse_config_json
      Src: /src/frr/bfdd/config.c:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - bcs
    - jsonstr
    - bh
    argTypes:
    - struct bfd_control_socket*
    - char*
    - bpc_handle
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 503
    functionName: config_notify_request
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 2
    functionsReached:
    - parse_config_json
    - json_tokener_parse
    linkageType: ''
    returnType: int
    signature: "int config_notify_request(struct bfd_control_socket *bcs, const char
      *jsonstr,\n\t\t\t  bpc_handle bh)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/config.c:510,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bfdd/config.c:511,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bfdd/config.c:513,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/config.c:515,1
    - Dst: json_object_boolean_true_add
      Src: /src/frr/bfdd/config.c:516,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:517,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/config.c:518,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:520,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/config.c:521,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:524,1
    - Dst: json_object_boolean_false_add
      Src: /src/frr/bfdd/config.c:526,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:527,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/config.c:528,1
    - Dst: memcmp
      Src: /src/frr/bfdd/config.c:530,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:531,1
    - Dst: inet_ntop
      Src: /src/frr/bfdd/config.c:533,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:536,1
    - Dst: json_object_string_add
      Src: /src/frr/bfdd/config.c:541,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - jo
    - bs
    argTypes:
    - struct json_object*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 544
    functionName: json_object_add_peer
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 2
    functionsReached:
    - CHECK_FLAG
    - memcmp
    - inet_ntop
    - json_object_boolean_true_add
    - json_object_string_add
    - json_object_boolean_false_add
    linkageType: ''
    returnType: int
    signature: int json_object_add_peer(struct json_object *jo, struct bfd_session
      *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/config.c:554,1
    - Dst: strcmp
      Src: /src/frr/bfdd/config.c:555,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - label
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 562
    functionName: pl_find
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 5
    functionsReached:
    - strcmp
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct peer_label
    signature: struct peer_label *pl_find(const char *label)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XCALLOC
      Src: /src/frr/bfdd/config.c:568,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/config.c:570,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/config.c:572,1
    - Dst: TAILQ_INSERT_HEAD
      Src: /src/frr/bfdd/config.c:577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - label
    - bs
    argTypes:
    - char*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 580
    functionName: pl_new
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - zlog_warn
    - strlcpy
    - TAILQ_INSERT_HEAD
    - XCALLOC
    linkageType: ''
    returnType: struct peer_label
    signature: struct peer_label *pl_new(const char *label, struct bfd_session *bs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/config.c:590,1
    - Dst: XFREE
      Src: /src/frr/bfdd/config.c:591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pl
    argTypes:
    - struct peer_label*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 592
    functionName: pl_free
    functionSourceFile: /src/frr/bfdd/config.c
    functionUses: 1
    functionsReached:
    - XFREE
    - TAILQ_REMOVE
    linkageType: ''
    returnType: void
    signature: void pl_free(struct peer_label *pl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/frr/bfdd/bfdd.c:48,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/bfdd.c:49,1
    - Dst: strerror
      Src: /src/frr/bfdd/bfdd.c:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 53
    functionName: socket_close
    functionSourceFile: /src/frr/bfdd/bfdd.c
    functionUses: 4
    functionsReached:
    - zlog_err
    - strerror
    - close
    linkageType: ''
    returnType: void
    signature: void socket_close(int *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_rotate
      Src: /src/frr/bfdd/bfdd.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: sigusr1_handler
    functionSourceFile: /src/frr/bfdd/bfdd.c
    functionUses: 0
    functionsReached:
    - zlog_rotate
    linkageType: ''
    returnType: void
    signature: void sigusr1_handler(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: frr_early_fini
      Src: /src/frr/bfdd/bfdd.c:65,1
    - Dst: bfdd_zclient_stop
      Src: /src/frr/bfdd/bfdd.c:68,1
    - Dst: control_shutdown
      Src: /src/frr/bfdd/bfdd.c:71,1
    - Dst: bfd_shutdown
      Src: /src/frr/bfdd/bfdd.c:74,1
    - Dst: bfd_vrf_terminate
      Src: /src/frr/bfdd/bfdd.c:76,1
    - Dst: frr_fini
      Src: /src/frr/bfdd/bfdd.c:79,1
    - Dst: exit
      Src: /src/frr/bfdd/bfdd.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 60
    functionDepth: 6
    functionLinenumber: 60
    functionLinenumberEnd: 82
    functionName: sigterm_handler
    functionSourceFile: /src/frr/bfdd/bfdd.c
    functionUses: 0
    functionsReached:
    - exit
    - bfd_shutdown
    - bfdd_zclient_stop
    - bfd_vrf_terminate
    - control_shutdown
    - frr_fini
    - frr_early_fini
    linkageType: ''
    returnType: void
    signature: void sigterm_handler(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zlog_info
      Src: /src/frr/bfdd/bfdd.c:86,1
    - Dst: vty_read_config
      Src: /src/frr/bfdd/bfdd.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: sighup_handler
    functionSourceFile: /src/frr/bfdd/bfdd.c
    functionUses: 0
    functionsReached:
    - zlog_info
    - vty_read_config
    linkageType: ''
    returnType: void
    signature: void sighup_handler(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/frr/bfdd/bfdd.c:167,1
    - Dst: fprintf
      Src: /src/frr/bfdd/bfdd.c:170,1
    - Dst: exit
      Src: /src/frr/bfdd/bfdd.c:172,1
    - Dst: fprintf
      Src: /src/frr/bfdd/bfdd.c:176,1
    - Dst: exit
      Src: /src/frr/bfdd/bfdd.c:178,1
    - Dst: fprintf
      Src: /src/frr/bfdd/bfdd.c:182,1
    - Dst: exit
      Src: /src/frr/bfdd/bfdd.c:184,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 188
    functionName: parse_port
    functionSourceFile: /src/frr/bfdd/bfdd.c
    functionUses: 0
    functionsReached:
    - fprintf
    - strtol
    - exit
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t parse_port(const char *str)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/frr/bfdd/bfdd.c:206,1
    - Dst: fprintf
      Src: /src/frr/bfdd/bfdd.c:208,1
    - Dst: exit
      Src: /src/frr/bfdd/bfdd.c:209,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd.c:217,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd.c:220,1
    - Dst: memset
      Src: /src/frr/bfdd/bfdd.c:223,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:226,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:226,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:227,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd.c:232,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:233,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:233,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:234,1
    - Dst: strchr
      Src: /src/frr/bfdd/bfdd.c:241,1
    - Dst: htons
      Src: /src/frr/bfdd/bfdd.c:243,1
    - Dst: htons
      Src: /src/frr/bfdd/bfdd.c:246,1
    - Dst: parse_port
      Src: /src/frr/bfdd/bfdd.c:246,1
    - Dst: inet_pton
      Src: /src/frr/bfdd/bfdd.c:249,1
    - Dst: errx
      Src: /src/frr/bfdd/bfdd.c:250,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:252,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:252,1
    - Dst: strcmp
      Src: /src/frr/bfdd/bfdd.c:253,1
    - Dst: errx
      Src: /src/frr/bfdd/bfdd.c:262,1
    - Dst: strrchr
      Src: /src/frr/bfdd/bfdd.c:265,1
    - Dst: errx
      Src: /src/frr/bfdd/bfdd.c:267,1
    - Dst: memmove
      Src: /src/frr/bfdd/bfdd.c:272,1
    - Dst: strrchr
      Src: /src/frr/bfdd/bfdd.c:277,1
    - Dst: htons
      Src: /src/frr/bfdd/bfdd.c:279,1
    - Dst: htons
      Src: /src/frr/bfdd/bfdd.c:282,1
    - Dst: parse_port
      Src: /src/frr/bfdd/bfdd.c:282,1
    - Dst: inet_pton
      Src: /src/frr/bfdd/bfdd.c:285,1
    - Dst: errx
      Src: /src/frr/bfdd/bfdd.c:286,1
    - Dst: fprintf
      Src: /src/frr/bfdd/bfdd.c:289,1
    - Dst: exit
      Src: /src/frr/bfdd/bfdd.c:291,1
    - Dst: bfd_dplane_init
      Src: /src/frr/bfdd/bfdd.c:295,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 190
    functionDepth: 5
    functionLinenumber: 190
    functionLinenumberEnd: 296
    functionName: distributed_bfd_init
    functionSourceFile: /src/frr/bfdd/bfdd.c
    functionUses: 0
    functionsReached:
    - exit
    - parse_port
    - memset
    - htons
    - strlcpy
    - strcmp
    - errx
    - memmove
    - strrchr
    - fprintf
    - strchr
    - inet_pton
    - bfd_dplane_init
    linkageType: ''
    returnType: void
    signature: void distributed_bfd_init(const char *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: bg_init
      Src: /src/frr/bfdd/bfdd.c:329,1
    - Dst: frr_preinit
      Src: /src/frr/bfdd/bfdd.c:331,1
    - Dst: frr_opt_add
      Src: /src/frr/bfdd/bfdd.c:332,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd.c:336,1
    - Dst: frr_getopt
      Src: /src/frr/bfdd/bfdd.c:339,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd.c:345,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/bfdd.c:349,1
    - Dst: frr_help_exit
      Src: /src/frr/bfdd/bfdd.c:354,1
    - Dst: snprintf
      Src: /src/frr/bfdd/bfdd.c:359,1
    - Dst: frr_init
      Src: /src/frr/bfdd/bfdd.c:363,1
    - Dst: control_init
      Src: /src/frr/bfdd/bfdd.c:366,1
    - Dst: bfd_initialize
      Src: /src/frr/bfdd/bfdd.c:369,1
    - Dst: bfd_vrf_init
      Src: /src/frr/bfdd/bfdd.c:371,1
    - Dst: access_list_init
      Src: /src/frr/bfdd/bfdd.c:373,1
    - Dst: bfdd_zclient_init
      Src: /src/frr/bfdd/bfdd.c:376,1
    - Dst: event_add_read
      Src: /src/frr/bfdd/bfdd.c:378,1
    - Dst: bfdd_vty_init
      Src: /src/frr/bfdd/bfdd.c:382,1
    - Dst: frr_config_fork
      Src: /src/frr/bfdd/bfdd.c:385,1
    - Dst: distributed_bfd_init
      Src: /src/frr/bfdd/bfdd.c:389,1
    - Dst: frr_run
      Src: /src/frr/bfdd/bfdd.c:391,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 320
    functionDepth: 8
    functionLinenumber: 320
    functionLinenumberEnd: 395
    functionName: main
    functionSourceFile: /src/frr/bfdd/bfdd.c
    functionUses: 26
    functionsReached:
    - frr_preinit
    - frr_help_exit
    - bfd_initialize
    - distributed_bfd_init
    - bg_init
    - snprintf
    - frr_getopt
    - frr_init
    - strlcpy
    - bfdd_zclient_init
    - frr_config_fork
    - access_list_init
    - bfdd_vty_init
    - frr_run
    - event_add_read
    - control_init
    - frr_opt_add
    - bfd_vrf_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:85,1
    - Dst: satostr
      Src: /src/frr/bfdd/ptm_adapter.c:85,1
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:87,1
    - Dst: satostr
      Src: /src/frr/bfdd/ptm_adapter.c:88,1
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:91,1
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:95,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/ptm_adapter.c:98,1
    - Dst: snprintfrr
      Src: /src/frr/bfdd/ptm_adapter.c:102,1
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:106,1
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:109,1
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:112,1
    - Dst: snprintf
      Src: /src/frr/bfdd/ptm_adapter.c:116,1
    - Dst: va_start
      Src: /src/frr/bfdd/ptm_adapter.c:119,1
    - Dst: vsnprintf
      Src: /src/frr/bfdd/ptm_adapter.c:120,1
    - Dst: va_end
      Src: /src/frr/bfdd/ptm_adapter.c:121,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:123,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - bpc
    - fmt
    argTypes:
    - struct bfd_peer_cfg*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 71
    functionDepth: 7
    functionLinenumber: 71
    functionLinenumberEnd: 127
    functionName: debug_printbpc
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - satostr
    - snprintf
    - vsnprintf
    - snprintfrr
    - va_start
    - va_end
    - zlog_debug
    linkageType: ''
    returnType: void
    signature: void debug_printbpc(const struct bfd_peer_cfg *bpc, const char *fmt,
      ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:132,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/ptm_adapter.c:132,1
    - Dst: ptm_bfd_snd
      Src: /src/frr/bfdd/ptm_adapter.c:137,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/ptm_adapter.c:146,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/ptm_adapter.c:147,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/ptm_adapter.c:149,1
    - Dst: control_notify_config
      Src: /src/frr/bfdd/ptm_adapter.c:151,1
    - Dst: bfd_session_free
      Src: /src/frr/bfdd/ptm_adapter.c:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - bs
    - diag
    argTypes:
    - struct bfd_session*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 129
    functionDepth: 5
    functionLinenumber: 129
    functionLinenumberEnd: 155
    functionName: _ptm_bfd_session_del
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - control_notify_config
    - bs_to_string
    - CHECK_FLAG
    - zlog_err
    - ptm_bfd_snd
    - zlog_debug
    - bfd_session_free
    linkageType: ''
    returnType: void
    signature: void _ptm_bfd_session_del(struct bfd_session *bs, uint8_t diag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stream_putc
      Src: /src/frr/bfdd/ptm_adapter.c:159,1
    - Dst: stream_put
      Src: /src/frr/bfdd/ptm_adapter.c:163,1
    - Dst: stream_putc
      Src: /src/frr/bfdd/ptm_adapter.c:164,1
    - Dst: stream_put
      Src: /src/frr/bfdd/ptm_adapter.c:168,1
    - Dst: stream_putc
      Src: /src/frr/bfdd/ptm_adapter.c:169,1
    - Dst: assert
      Src: /src/frr/bfdd/ptm_adapter.c:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - msg
    - family
    - addr
    argTypes:
    - struct stream*
    - int
    - void*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/frr/bfdd/ptm_adapter.c
    constantsTouched: []
    func_position:
      end: 178
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 178
    functionName: _ptm_msg_address
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - stream_put
    - stream_putc
    - assert
    linkageType: ''
    returnType: int
    signature: int _ptm_msg_address(struct stream *msg, int family, const void *addr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stream_reset
      Src: /src/frr/bfdd/ptm_adapter.c:210,1
    - Dst: zclient_create_header
      Src: /src/frr/bfdd/ptm_adapter.c:214,1
    - Dst: zclient_create_header
      Src: /src/frr/bfdd/ptm_adapter.c:216,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:219,1
    - Dst: CHECK_FLAG
      Src: /src/frr/bfdd/ptm_adapter.c:222,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:223,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:225,1
    - Dst: _ptm_msg_address
      Src: /src/frr/bfdd/ptm_adapter.c:228,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:233,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:237,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:242,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:246,1
    - Dst: _ptm_msg_address
      Src: /src/frr/bfdd/ptm_adapter.c:251,1
    - Dst: stream_putc
      Src: /src/frr/bfdd/ptm_adapter.c:253,1
    - Dst: stream_putw_at
      Src: /src/frr/bfdd/ptm_adapter.c:256,1
    - Dst: stream_get_endp
      Src: /src/frr/bfdd/ptm_adapter.c:256,1
    - Dst: zclient_send_message
      Src: /src/frr/bfdd/ptm_adapter.c:258,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - bs
    - notify_state
    argTypes:
    - struct bfd_session*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 180
    functionDepth: 4
    functionLinenumber: 180
    functionLinenumberEnd: 259
    functionName: ptm_bfd_notify
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - _ptm_msg_address
    - zclient_create_header
    - CHECK_FLAG
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putc
    - stream_putl
    linkageType: ''
    returnType: int
    signature: int ptm_bfd_notify(struct bfd_session *bs, uint8_t notify_state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETW
      Src: /src/frr/bfdd/ptm_adapter.c:265,1
    - Dst: STREAM_GET
      Src: /src/frr/bfdd/ptm_adapter.c:270,1
    - Dst: STREAM_GET
      Src: /src/frr/bfdd/ptm_adapter.c:279,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/ptm_adapter.c:287,1
    - Dst: memset
      Src: /src/frr/bfdd/ptm_adapter.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - msg
    - sa
    argTypes:
    - struct stream*
    - struct sockaddr_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 293
    functionName: _ptm_msg_read_address
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - memset
    - STREAM_GETW
    - zlog_warn
    - STREAM_GET
    linkageType: ''
    returnType: void
    signature: void _ptm_msg_read_address(struct stream *msg, struct sockaddr_any
      *sa)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/frr/bfdd/ptm_adapter.c:359,1
    - Dst: STREAM_GETL
      Src: /src/frr/bfdd/ptm_adapter.c:363,1
    - Dst: pc_new
      Src: /src/frr/bfdd/ptm_adapter.c:365,1
    - Dst: _ptm_msg_read_address
      Src: /src/frr/bfdd/ptm_adapter.c:368,1
    - Dst: STREAM_GETL
      Src: /src/frr/bfdd/ptm_adapter.c:374,1
    - Dst: STREAM_GETL
      Src: /src/frr/bfdd/ptm_adapter.c:378,1
    - Dst: STREAM_GETC
      Src: /src/frr/bfdd/ptm_adapter.c:382,1
    - Dst: STREAM_GETC
      Src: /src/frr/bfdd/ptm_adapter.c:387,1
    - Dst: _ptm_msg_read_address
      Src: /src/frr/bfdd/ptm_adapter.c:390,1
    - Dst: STREAM_GETC
      Src: /src/frr/bfdd/ptm_adapter.c:393,1
    - Dst: STREAM_GETC
      Src: /src/frr/bfdd/ptm_adapter.c:406,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/ptm_adapter.c:408,1
    - Dst: STREAM_GET
      Src: /src/frr/bfdd/ptm_adapter.c:414,1
    - Dst: vrf_lookup_by_id
      Src: /src/frr/bfdd/ptm_adapter.c:421,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/ptm_adapter.c:424,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/ptm_adapter.c:426,1
    - Dst: strlcpy
      Src: /src/frr/bfdd/ptm_adapter.c:432,1
    - Dst: STREAM_GETC
      Src: /src/frr/bfdd/ptm_adapter.c:436,1
    - Dst: STREAM_GETC
      Src: /src/frr/bfdd/ptm_adapter.c:439,1
    - Dst: STREAM_GET
      Src: /src/frr/bfdd/ptm_adapter.c:442,1
    - Dst: zlog_warn
      Src: /src/frr/bfdd/ptm_adapter.c:450,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 61
    argCount: 5
    argNames:
    - msg
    - command
    - vrf_id
    - bpc
    - pc
    argTypes:
    - struct stream*
    - int
    - vrf_id_t
    - struct bfd_peer_cfg*
    - struct ptm_client**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 458
    functionName: _ptm_msg_read
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - pc_new
    - memset
    - strlcpy
    - _ptm_msg_read_address
    - zlog_err
    - zlog_warn
    - STREAM_GETC
    - STREAM_GETL
    - STREAM_GET
    - vrf_lookup_by_id
    linkageType: ''
    returnType: int
    signature: "int _ptm_msg_read(struct stream *msg, int command, vrf_id_t vrf_id,\n\t\t\t
      struct bfd_peer_cfg *bpc, struct ptm_client **pc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _ptm_msg_read
      Src: /src/frr/bfdd/ptm_adapter.c:467,1
    - Dst: debug_printbpc
      Src: /src/frr/bfdd/ptm_adapter.c:470,1
    - Dst: bs_peer_find
      Src: /src/frr/bfdd/ptm_adapter.c:473,1
    - Dst: ptm_bfd_sess_new
      Src: /src/frr/bfdd/ptm_adapter.c:475,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:478,1
    - Dst: bfd_profile_apply
      Src: /src/frr/bfdd/ptm_adapter.c:494,1
    - Dst: pcn_new
      Src: /src/frr/bfdd/ptm_adapter.c:498,1
    - Dst: ptm_bfd_notify
      Src: /src/frr/bfdd/ptm_adapter.c:500,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - msg
    - vrf_id
    argTypes:
    - struct stream*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 460
    functionDepth: 8
    functionLinenumber: 460
    functionLinenumberEnd: 501
    functionName: bfdd_dest_register
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - _ptm_msg_read
    - zlog_debug
    - bs_peer_find
    - pcn_new
    - ptm_bfd_notify
    - debug_printbpc
    - ptm_bfd_sess_new
    - bfd_profile_apply
    linkageType: ''
    returnType: void
    signature: void bfdd_dest_register(struct stream *msg, vrf_id_t vrf_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _ptm_msg_read
      Src: /src/frr/bfdd/ptm_adapter.c:511,1
    - Dst: debug_printbpc
      Src: /src/frr/bfdd/ptm_adapter.c:514,1
    - Dst: bs_peer_find
      Src: /src/frr/bfdd/ptm_adapter.c:517,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:520,1
    - Dst: pcn_lookup
      Src: /src/frr/bfdd/ptm_adapter.c:525,1
    - Dst: pcn_free
      Src: /src/frr/bfdd/ptm_adapter.c:527,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:532,1
    - Dst: _ptm_bfd_session_del
      Src: /src/frr/bfdd/ptm_adapter.c:539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - msg
    - vrf_id
    argTypes:
    - struct stream*
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 503
    functionDepth: 8
    functionLinenumber: 503
    functionLinenumberEnd: 540
    functionName: bfdd_dest_deregister
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - _ptm_msg_read
    - pcn_free
    - _ptm_bfd_session_del
    - zlog_debug
    - pcn_lookup
    - bs_peer_find
    - debug_printbpc
    linkageType: ''
    returnType: void
    signature: void bfdd_dest_deregister(struct stream *msg, vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/bfdd/ptm_adapter.c:551,1
    - Dst: pc_new
      Src: /src/frr/bfdd/ptm_adapter.c:553,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/ptm_adapter.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 559
    functionName: bfdd_client_register
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - pc_new
    - STREAM_GETL
    - zlog_err
    linkageType: ''
    returnType: void
    signature: void bfdd_client_register(struct stream *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/bfdd/ptm_adapter.c:571,1
    - Dst: pc_lookup
      Src: /src/frr/bfdd/ptm_adapter.c:573,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:576,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:582,1
    - Dst: pc_free
      Src: /src/frr/bfdd/ptm_adapter.c:584,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/ptm_adapter.c:589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 565
    functionDepth: 1
    functionLinenumber: 565
    functionLinenumberEnd: 590
    functionName: bfdd_client_deregister
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - pc_lookup
    - pc_free
    - zlog_err
    - zlog_debug
    - STREAM_GETL
    linkageType: ''
    returnType: void
    signature: void bfdd_client_deregister(struct stream *msg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STREAM_GETL
      Src: /src/frr/bfdd/ptm_adapter.c:597,1
    - Dst: bfdd_dest_register
      Src: /src/frr/bfdd/ptm_adapter.c:602,1
    - Dst: bfdd_dest_deregister
      Src: /src/frr/bfdd/ptm_adapter.c:605,1
    - Dst: bfdd_client_register
      Src: /src/frr/bfdd/ptm_adapter.c:608,1
    - Dst: bfdd_client_deregister
      Src: /src/frr/bfdd/ptm_adapter.c:611,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:616,1
    - Dst: zlog_err
      Src: /src/frr/bfdd/ptm_adapter.c:623,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 592
    functionDepth: 9
    functionLinenumber: 592
    functionLinenumberEnd: 625
    functionName: bfdd_replay
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - bfdd_dest_register
    - bfdd_client_deregister
    - bfdd_client_register
    - zlog_err
    - zlog_debug
    - STREAM_GETL
    - bfdd_dest_deregister
    linkageType: ''
    returnType: int
    signature: int bfdd_replay(ZAPI_CALLBACK_ARGS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pc_free_all
      Src: /src/frr/bfdd/ptm_adapter.c:632,1
    - Dst: stream_reset
      Src: /src/frr/bfdd/ptm_adapter.c:638,1
    - Dst: zclient_create_header
      Src: /src/frr/bfdd/ptm_adapter.c:639,1
    - Dst: stream_putl
      Src: /src/frr/bfdd/ptm_adapter.c:640,1
    - Dst: stream_putw_at
      Src: /src/frr/bfdd/ptm_adapter.c:641,1
    - Dst: stream_get_endp
      Src: /src/frr/bfdd/ptm_adapter.c:641,1
    - Dst: zclient_create_header
      Src: /src/frr/bfdd/ptm_adapter.c:644,1
    - Dst: zclient_send_message
      Src: /src/frr/bfdd/ptm_adapter.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - zc
    argTypes:
    - struct zclient*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 627
    functionDepth: 4
    functionLinenumber: 627
    functionLinenumberEnd: 648
    functionName: bfdd_zebra_connected
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - zclient_create_header
    - pc_free_all
    - zclient_send_message
    - stream_get_endp
    - stream_putw_at
    - stream_reset
    - stream_putl
    linkageType: ''
    returnType: void
    signature: void bfdd_zebra_connected(struct zclient *zc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/ptm_adapter.c:658,1
    - Dst: strcmp
      Src: /src/frr/bfdd/ptm_adapter.c:662,1
    - Dst: vrf_is_backend_netns
      Src: /src/frr/bfdd/ptm_adapter.c:666,1
    - Dst: strcmp
      Src: /src/frr/bfdd/ptm_adapter.c:666,1
    - Dst: strcmp
      Src: /src/frr/bfdd/ptm_adapter.c:669,1
    - Dst: bfd_session_enable
      Src: /src/frr/bfdd/ptm_adapter.c:678,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 650
    functionDepth: 5
    functionLinenumber: 650
    functionLinenumberEnd: 680
    functionName: bfdd_sessions_enable_interface
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - vrf_is_backend_netns
    - strcmp
    - bfd_session_enable
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfdd_sessions_enable_interface(struct interface *ifp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/ptm_adapter.c:687,1
    - Dst: bfd_session_disable
      Src: /src/frr/bfdd/ptm_adapter.c:699,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 682
    functionDepth: 2
    functionLinenumber: 682
    functionLinenumberEnd: 702
    functionName: bfdd_sessions_disable_interface
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - bfd_session_disable
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfdd_sessions_disable_interface(struct interface *ifp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/ptm_adapter.c:710,1
    - Dst: strcmp
      Src: /src/frr/bfdd/ptm_adapter.c:715,1
    - Dst: bfd_session_enable
      Src: /src/frr/bfdd/ptm_adapter.c:725,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 704
    functionDepth: 5
    functionLinenumber: 704
    functionLinenumberEnd: 727
    functionName: bfdd_sessions_enable_vrf
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - strcmp
    - bfd_session_enable
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfdd_sessions_enable_vrf(struct vrf *vrf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/ptm_adapter.c:734,1
    - Dst: strcmp
      Src: /src/frr/bfdd/ptm_adapter.c:737,1
    - Dst: bfd_session_disable
      Src: /src/frr/bfdd/ptm_adapter.c:743,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - vrf
    argTypes:
    - struct vrf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 746
    functionName: bfdd_sessions_disable_vrf
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - bfd_session_disable
    - strcmp
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfdd_sessions_disable_vrf(struct vrf *vrf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:751,1
    - Dst: bfdd_sessions_disable_interface
      Src: /src/frr/bfdd/ptm_adapter.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 748
    functionDepth: 3
    functionLinenumber: 748
    functionLinenumberEnd: 757
    functionName: bfd_ifp_destroy
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - bfdd_sessions_disable_interface
    - zlog_debug
    linkageType: ''
    returnType: int
    signature: int bfd_ifp_destroy(struct interface *ifp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_vrf_update_read
      Src: /src/frr/bfdd/ptm_adapter.c:764,1
    - Dst: if_update_to_new_vrf
      Src: /src/frr/bfdd/ptm_adapter.c:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 759
    functionDepth: 4
    functionLinenumber: 759
    functionLinenumberEnd: 771
    functionName: bfdd_interface_vrf_update
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - zebra_interface_vrf_update_read
    - if_update_to_new_vrf
    linkageType: ''
    returnType: int
    signature: int bfdd_interface_vrf_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/ptm_adapter.c:779,1
    - Dst: prefix_cmp
      Src: /src/frr/bfdd/ptm_adapter.c:788,1
    - Dst: bfd_session_enable
      Src: /src/frr/bfdd/ptm_adapter.c:792,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ifc
    argTypes:
    - struct connected*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 773
    functionDepth: 5
    functionLinenumber: 773
    functionLinenumberEnd: 794
    functionName: bfdd_sessions_enable_address
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - prefix_cmp
    - bfd_session_enable
    - TAILQ_FOREACH
    linkageType: ''
    returnType: void
    signature: void bfdd_sessions_enable_address(struct connected *ifc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zebra_interface_address_read
      Src: /src/frr/bfdd/ptm_adapter.c:800,1
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:805,1
    - Dst: bfdd_sessions_enable_address
      Src: /src/frr/bfdd/ptm_adapter.c:811,1
    - Dst: connected_free
      Src: /src/frr/bfdd/ptm_adapter.c:813,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 796
    functionDepth: 6
    functionLinenumber: 796
    functionLinenumberEnd: 816
    functionName: bfdd_interface_address_update
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - bfdd_sessions_enable_address
    - zlog_debug
    - zebra_interface_address_read
    - connected_free
    linkageType: ''
    returnType: int
    signature: int bfdd_interface_address_update(ZAPI_CALLBACK_ARGS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:821,1
    - Dst: bfdd_sessions_enable_interface
      Src: /src/frr/bfdd/ptm_adapter.c:823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ifp
    argTypes:
    - struct interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 818
    functionDepth: 6
    functionLinenumber: 818
    functionLinenumberEnd: 826
    functionName: bfd_ifp_create
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 0
    functionsReached:
    - zlog_debug
    - bfdd_sessions_enable_interface
    linkageType: ''
    returnType: int
    signature: int bfd_ifp_create(struct interface *ifp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_zapi_callbacks
      Src: /src/frr/bfdd/ptm_adapter.c:846,1
    - Dst: zclient_new
      Src: /src/frr/bfdd/ptm_adapter.c:847,1
    - Dst: array_size
      Src: /src/frr/bfdd/ptm_adapter.c:848,1
    - Dst: assert
      Src: /src/frr/bfdd/ptm_adapter.c:849,1
    - Dst: zclient_init
      Src: /src/frr/bfdd/ptm_adapter.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bfdd_priv
    argTypes:
    - struct zebra_privs_t*
    assertStmts:
    - condition: (zclient != NULL)
      pos:
        line_end: 848
        line_start: 848
        source_file: /src/frr/bfdd/ptm_adapter.c
    constantsTouched: []
    func_position:
      end: 854
      start: 844
    functionDepth: 3
    functionLinenumber: 844
    functionLinenumberEnd: 854
    functionName: bfdd_zclient_init
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - if_zapi_callbacks
    - zclient_new
    - array_size
    - zclient_init
    - assert
    linkageType: ''
    returnType: void
    signature: void bfdd_zclient_init(struct zebra_privs_t *bfdd_priv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_reg_requests
      Src: /src/frr/bfdd/ptm_adapter.c:860,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 861
    functionName: bfdd_zclient_register
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - zclient_send_reg_requests
    linkageType: ''
    returnType: void
    signature: void bfdd_zclient_register(vrf_id_t vrf_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zclient_send_dereg_requests
      Src: /src/frr/bfdd/ptm_adapter.c:867,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - vrf_id
    argTypes:
    - vrf_id_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 863
    functionDepth: 0
    functionLinenumber: 863
    functionLinenumberEnd: 868
    functionName: bfdd_zclient_unregister
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - zclient_send_dereg_requests
    linkageType: ''
    returnType: void
    signature: void bfdd_zclient_unregister(vrf_id_t vrf_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: zclient_stop
      Src: /src/frr/bfdd/ptm_adapter.c:872,1
    - Dst: pc_free_all
      Src: /src/frr/bfdd/ptm_adapter.c:875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 876
    functionName: bfdd_zclient_stop
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - pc_free_all
    - zclient_stop
    linkageType: ''
    returnType: void
    signature: void bfdd_zclient_stop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/ptm_adapter.c:886,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - pid
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 894
    functionName: pc_lookup
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct ptm_client
    signature: struct ptm_client *pc_lookup(uint32_t pid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pc_lookup
      Src: /src/frr/bfdd/ptm_adapter.c:901,1
    - Dst: XCALLOC
      Src: /src/frr/bfdd/ptm_adapter.c:906,1
    - Dst: TAILQ_INSERT_HEAD
      Src: /src/frr/bfdd/ptm_adapter.c:909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - pid
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 896
    functionDepth: 1
    functionLinenumber: 896
    functionLinenumberEnd: 911
    functionName: pc_new
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 2
    functionsReached:
    - pc_lookup
    - TAILQ_INSERT_HEAD
    - XCALLOC
    linkageType: ''
    returnType: struct ptm_client
    signature: struct ptm_client *pc_new(uint32_t pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/ptm_adapter.c:917,1
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bfdd/ptm_adapter.c:919,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/ptm_adapter.c:920,1
    - Dst: pcn_free
      Src: /src/frr/bfdd/ptm_adapter.c:921,1
    - Dst: XFREE
      Src: /src/frr/bfdd/ptm_adapter.c:924,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - pc
    argTypes:
    - struct ptm_client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 925
    functionName: pc_free
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - TAILQ_REMOVE
    - XFREE
    - TAILQ_EMPTY
    - pcn_free
    - TAILQ_FIRST
    linkageType: ''
    returnType: void
    signature: void pc_free(struct ptm_client *pc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_EMPTY
      Src: /src/frr/bfdd/ptm_adapter.c:931,1
    - Dst: TAILQ_FIRST
      Src: /src/frr/bfdd/ptm_adapter.c:932,1
    - Dst: pc_free
      Src: /src/frr/bfdd/ptm_adapter.c:933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 927
    functionDepth: 2
    functionLinenumber: 927
    functionLinenumberEnd: 935
    functionName: pc_free_all
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 2
    functionsReached:
    - TAILQ_EMPTY
    - TAILQ_FIRST
    - pc_free
    linkageType: ''
    returnType: void
    signature: void pc_free_all(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcn_lookup
      Src: /src/frr/bfdd/ptm_adapter.c:943,1
    - Dst: XCALLOC
      Src: /src/frr/bfdd/ptm_adapter.c:948,1
    - Dst: TAILQ_INSERT_HEAD
      Src: /src/frr/bfdd/ptm_adapter.c:950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - pc
    - bs
    argTypes:
    - struct ptm_client*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 956
    functionName: pcn_new
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 1
    functionsReached:
    - pcn_lookup
    - TAILQ_INSERT_HEAD
    - XCALLOC
    linkageType: ''
    returnType: struct ptm_client_notification
    signature: "struct ptm_client_notification *pcn_new(struct ptm_client *pc,\n\t\t\t\t\t
      \      struct bfd_session *bs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TAILQ_FOREACH
      Src: /src/frr/bfdd/ptm_adapter.c:963,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - pc
    - bs
    argTypes:
    - struct ptm_client*
    - struct bfd_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 971
    functionName: pcn_lookup
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 2
    functionsReached:
    - TAILQ_FOREACH
    linkageType: ''
    returnType: struct ptm_client_notification
    signature: "struct ptm_client_notification *pcn_lookup(struct ptm_client *pc,\n\t\t\t\t\t\t
      \ struct bfd_session *bs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zlog_debug
      Src: /src/frr/bfdd/ptm_adapter.c:985,1
    - Dst: bs_to_string
      Src: /src/frr/bfdd/ptm_adapter.c:986,1
    - Dst: _ptm_bfd_session_del
      Src: /src/frr/bfdd/ptm_adapter.c:989,1
    - Dst: TAILQ_REMOVE
      Src: /src/frr/bfdd/ptm_adapter.c:994,1
    - Dst: XFREE
      Src: /src/frr/bfdd/ptm_adapter.c:996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - pcn
    argTypes:
    - struct ptm_client_notification*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 973
    functionDepth: 6
    functionLinenumber: 973
    functionLinenumberEnd: 997
    functionName: pcn_free
    functionSourceFile: /src/frr/bfdd/ptm_adapter.c
    functionUses: 2
    functionsReached:
    - TAILQ_REMOVE
    - bs_to_string
    - _ptm_bfd_session_del
    - zlog_debug
    - XFREE
    linkageType: ''
    returnType: void
    signature: void pcn_free(struct ptm_client_notification *pcn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_DATA_NODE
      Src: /src/libyang/tests/plugins/simple.c:34,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/tests/plugins/simple.c:35,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/tests/plugins/simple.c:35,1
    - Dst: ly_stmt2str
      Src: /src/libyang/tests/plugins/simple.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - p_ext
    - c_ext
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ext_instance*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 42
    functionName: hint_compile
    functionSourceFile: /src/libyang/tests/plugins/simple.c
    functionUses: 0
    functionsReached:
    - lysc_ctx_get_path
    - LY_STMT_IS_DATA_NODE
    - ly_stmt2str
    - lyplg_ext_log
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR hint_compile(struct lysc_ctx *cctx, const struct lysp_ext_instance
      *p_ext, struct lysc_ext_instance *c_ext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_DATA_NODE
      Src: /src/libyang/tests/plugins/validate.c:29,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/tests/plugins/validate.c:30,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/tests/plugins/validate.c:30,1
    - Dst: ly_stmt2str
      Src: /src/libyang/tests/plugins/validate.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - cctx
    - p_ext
    - c_ext
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ext_instance*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 37
    functionName: compile
    functionSourceFile: /src/libyang/tests/plugins/validate.c
    functionUses: 2
    functionsReached:
    - lysc_ctx_get_path
    - LY_STMT_IS_DATA_NODE
    - ly_stmt2str
    - lyplg_ext_log
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR compile(struct lysc_ctx *cctx, const struct lysp_ext_instance
      *p_ext, struct lysc_ext_instance *c_ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_ext_log
      Src: /src/libyang/tests/plugins/validate.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ext
    - node
    argTypes:
    - struct lysc_ext_instance*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: validate
    functionSourceFile: /src/libyang/tests/plugins/validate.c
    functionUses: 29
    functionsReached:
    - lyplg_ext_log
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR validate(struct lysc_ext_instance *ext, struct lyd_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_log_options
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:57,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:61,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:63,1
    - Dst: exit
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:64,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:67,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:68,1
    - Dst: malloc
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:70,1
    - Dst: memcpy
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:74,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:77,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:78,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:79,1
    - Dst: free
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 84
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/libyang/tests/fuzz/lyd_parse_mem_xml.c
    functionUses: 5
    functionsReached:
    - exit
    - lyd_free_all
    - ly_ctx_destroy
    - malloc
    - free
    - lys_parse_mem
    - fprintf
    - lyd_parse_data_mem
    - ly_log_options
    - memcpy
    - ly_ctx_new
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(uint8_t const *buf, size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_log_options
      Src: /src/libyang/tests/fuzz/buf_add_char.c:22,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/fuzz/buf_add_char.c:26,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/buf_add_char.c:28,1
    - Dst: malloc
      Src: /src/libyang/tests/fuzz/buf_add_char.c:32,1
    - Dst: malloc
      Src: /src/libyang/tests/fuzz/buf_add_char.c:37,1
    - Dst: memcpy
      Src: /src/libyang/tests/fuzz/buf_add_char.c:43,1
    - Dst: buf_add_char
      Src: /src/libyang/tests/fuzz/buf_add_char.c:45,1
    - Dst: free
      Src: /src/libyang/tests/fuzz/buf_add_char.c:47,1
    - Dst: free
      Src: /src/libyang/tests/fuzz/buf_add_char.c:48,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/fuzz/buf_add_char.c:49,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 52
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/libyang/tests/fuzz/buf_add_char.c
    functionUses: 5
    functionsReached:
    - ly_ctx_destroy
    - malloc
    - free
    - buf_add_char
    - fprintf
    - ly_log_options
    - memcpy
    - ly_ctx_new
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(uint8_t const *buf, size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_log_options
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:20,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:24,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:26,1
    - Dst: malloc
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:30,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:32,1
    - Dst: memcpy
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:35,1
    - Dst: calloc
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:38,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:40,1
    - Dst: yang_parse_module
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:45,1
    - Dst: free
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:47,1
    - Dst: free
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:48,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/fuzz/yang_parse_module.c:49,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 51
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/libyang/tests/fuzz/yang_parse_module.c
    functionUses: 5
    functionsReached:
    - ly_ctx_destroy
    - malloc
    - free
    - fprintf
    - yang_parse_module
    - calloc
    - ly_log_options
    - memcpy
    - ly_ctx_new
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(uint8_t const *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __AFL_LOOP
      Src: /src/libyang/tests/fuzz/main.c:14,1
    - Dst: fread
      Src: /src/libyang/tests/fuzz/main.c:17,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/libyang/tests/fuzz/main.c:22,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 27
    functionName: main
    functionSourceFile: /src/libyang/tests/fuzz/main.c
    functionUses: 26
    functionsReached:
    - __AFL_LOOP
    - fread
    - LLVMFuzzerTestOneInput
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fread
      Src: /src/libyang/tests/fuzz/main.c:34,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/libyang/tests/fuzz/main.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 42
    functionName: main
    functionSourceFile: /src/libyang/tests/fuzz/main.c
    functionUses: 26
    functionsReached:
    - fread
    - LLVMFuzzerTestOneInput
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_log_options
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:57,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:61,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:63,1
    - Dst: exit
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:64,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:67,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:68,1
    - Dst: malloc
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:70,1
    - Dst: memcpy
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:74,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:77,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:78,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:79,1
    - Dst: free
      Src: /src/libyang/tests/fuzz/lyd_parse_mem_json.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 84
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/libyang/tests/fuzz/lyd_parse_mem_json.c
    functionUses: 7
    functionsReached:
    - exit
    - lyd_free_all
    - ly_ctx_destroy
    - malloc
    - free
    - lys_parse_mem
    - fprintf
    - lyd_parse_data_mem
    - ly_log_options
    - memcpy
    - ly_ctx_new
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(uint8_t const *buf, size_t len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:21,1
    - Dst: opendir
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:25,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:27,1
    - Dst: readdir
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:31,1
    - Dst: stat
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:32,1
    - Dst: S_ISREG
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:33,1
    - Dst: fork
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:37,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:39,1
    - Dst: open
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:42,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:44,1
    - Dst: dup2
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:48,1
    - Dst: execl
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:49,1
    - Dst: waitpid
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:53,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:55,1
    - Dst: WIFEXITED
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:59,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:60,1
    - Dst: printf
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:64,1
    - Dst: closedir
      Src: /src/libyang/tests/fuzz/fuzz_regression_test.c:67,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 70
    functionName: main
    functionSourceFile: /src/libyang/tests/fuzz/fuzz_regression_test.c
    functionUses: 26
    functionsReached:
    - open
    - S_ISREG
    - readdir
    - fprintf
    - waitpid
    - execl
    - closedir
    - WIFEXITED
    - printf
    - dup2
    - opendir
    - fork
    - stat
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_log_options
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:15,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:19,1
    - Dst: fprintf
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:21,1
    - Dst: exit
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:22,1
    - Dst: malloc
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:25,1
    - Dst: memcpy
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:30,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:33,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:34,1
    - Dst: free
      Src: /src/libyang/tests/fuzz/lys_parse_mem.c:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 7
    functionDepth: 1
    functionLinenumber: 7
    functionLinenumberEnd: 37
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/libyang/tests/fuzz/lys_parse_mem.c
    functionUses: 7
    functionsReached:
    - exit
    - ly_ctx_destroy
    - malloc
    - free
    - lys_parse_mem
    - fprintf
    - ly_log_options
    - memcpy
    - ly_ctx_new
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(uint8_t const *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - INPUT
    - ','
    - INPUT_FORMAT
    - ','
    - PARSE_OPTIONS
    - ','
    - VALIDATE_OPTIONS
    - ','
    - OUT_STATUS
    - ','
    - OUT_NODE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: CHECK_PARSE_LYD_PARAM
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD_PARAM(INPUT, INPUT_FORMAT, PARSE_OPTIONS, VALIDATE_OPTIONS,
      OUT_STATUS, OUT_NODE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NODE
    - ','
    - TEXT
    - ','
    - FORMAT
    - ','
    - PARAM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 155
    functionName: CHECK_LYD_STRING_PARAM
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_STRING_PARAM(NODE, TEXT, FORMAT, PARAM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NODE_1
    - ','
    - NODE_2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: CHECK_LYD
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD(NODE_1, NODE_2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - STRING
    - ','
    - TEXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: CHECK_STRING
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_STRING(STRING, TEXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - POINTER
    - ','
    - FLAG
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 198
    functionName: CHECK_POINTER
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_POINTER(POINTER, FLAG)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ARRAY
    - ','
    - SIZE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: CHECK_ARRAY
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_ARRAY(ARRAY, SIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - TYPE
    - ','
    - EXTS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 225
    functionName: CHECK_LYSC_TYPE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_TYPE(NODE, TYPE, EXTS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NODE
    - ','
    - TYPE
    - ','
    - EXTS
    - ','
    - RANGE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: CHECK_LYSC_TYPE_NUM
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_TYPE_NUM(NODE, TYPE, EXTS, RANGE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NODE
    - ','
    - EXTS
    - ','
    - LENGTH
    - ','
    - PATTERNS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: CHECK_LYSC_TYPE_STR
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_TYPE_STR(NODE, EXTS, LENGTH, PATTERNS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - EXTS
    - ','
    - BITS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 257
    functionName: CHECK_LYSC_TYPE_BITS
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_TYPE_BITS(NODE, EXTS, BITS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NODE
    - ','
    - POSITION
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - NAME
    - ','
    - REF
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 267
    functionName: CHECK_LYSC_TYPE_BITENUM_ITEM
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_TYPE_BITENUM_ITEM(NODE, POSITION, DSC, EXTS, FLAGS, NAME,
      REF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EAPPTAG
    - ','
    - EMSG
    - ','
    - EXTS
    - ','
    - PARTS
    - ','
    - REF
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 284
    functionName: CHECK_LYSC_RANGE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_RANGE(NODE, DSC, EAPPTAG, EMSG, EXTS, PARTS, REF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EAPPTAG
    - ','
    - EMSG
    - ','
    - EXPR
    - ','
    - EXTS
    - ','
    - INVERTED
    - ','
    - REF
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 305
    functionName: CHECK_LYSC_PATTERN
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_PATTERN(NODE, DSC, EAPPTAG, EMSG, EXPR, EXTS, INVERTED,
      REF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - NODE
    - ','
    - DATA
    - ','
    - EXTS
    - ','
    - GROUPINGS
    - ','
    - MUSTS
    - ','
    - NODETYPE
    - ','
    - PARENT
    - ','
    - TYPEDEFS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 326
    functionName: CHECK_LYSP_ACTION_INOUT
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_ACTION_INOUT(NODE, DATA, EXTS, GROUPINGS, MUSTS, NODETYPE,
      PARENT, TYPEDEFS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 47
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - GROUPINGS
    - ','
    - IFFEATURES
    - ','
    - INPUT_DATA
    - ','
    - INPUT_EXTS
    - ','
    - INPUT_GROUPINGS
    - ','
    - INPUT_MUSTS
    - ','
    - INPUT_PARENT
    - ','
    - INPUT_TYPEDEFS
    - ','
    - NAME
    - ','
    - NODETYPE
    - ','
    - OUTPUT_DATA
    - ','
    - OUTPUT_EXTS
    - ','
    - OUTPUT_GROUPINGS
    - ','
    - OUTPUT_MUSTS
    - ','
    - OUTPUT_PARENT
    - ','
    - OUTPUT_TYPEDEFS
    - ','
    - PARENT
    - ','
    - REF
    - ','
    - TYPEDEFS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 366
    functionName: CHECK_LYSP_ACTION
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "CHECK_LYSP_ACTION(NODE, DSC, EXTS, FLAGS, GROUPINGS, IFFEATURES, \\\n
      \           INPUT_DATA, INPUT_EXTS, INPUT_GROUPINGS, INPUT_MUSTS, \\\n            INPUT_PARENT,
      INPUT_TYPEDEFS, \\\n            NAME, NODETYPE, \\\n            OUTPUT_DATA,
      OUTPUT_EXTS, OUTPUT_GROUPINGS, OUTPUT_MUSTS, \\\n            OUTPUT_PARENT,
      OUTPUT_TYPEDEFS, \\\n            PARENT, REF, TYPEDEFS)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - NODE
    - ','
    - COND
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - REF
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 385
    functionName: CHECK_LYSP_WHEN
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_WHEN(NODE, COND, DSC, EXTS, REF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NODE
    - ','
    - ARG_STR
    - ','
    - DSC
    - ','
    - EAPPTAG
    - ','
    - EMSG
    - ','
    - EXTS
    - ','
    - REF
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 406
    functionName: CHECK_LYSP_RESTR
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_RESTR(NODE, ARG_STR, DSC, EAPPTAG, EMSG, EXTS, REF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - NAME
    - ','
    - PREFIX
    - ','
    - REF
    - ','
    - REV
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 421
    functionName: CHECK_LYSP_IMPORT
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_IMPORT(NODE, DSC, EXTS, NAME, PREFIX, REF, REV)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - NODE
    - ','
    - ARGNAME
    - ','
    - COMPILED
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - NAME
    - ','
    - REF
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 447
    functionName: CHECK_LYSP_EXT
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_EXT(NODE, ARGNAME, COMPILED, DSC, EXTS, FLAGS, NAME, REF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NODE
    - ','
    - ARGUMENT
    - ','
    - CHILD
    - ','
    - PARENT_STMT
    - ','
    - PARENT_STMT_INDEX
    - ','
    - NAME
    - ','
    - FORMAT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 461
    functionName: CHECK_LYSP_EXT_INSTANCE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_EXT_INSTANCE(NODE, ARGUMENT, CHILD, PARENT_STMT, PARENT_STMT_INDEX,
      NAME, FORMAT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NODE
    - ','
    - ARG
    - ','
    - CHILD
    - ','
    - FLAGS
    - ','
    - KW
    - ','
    - NEXT
    - ','
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 486
    functionName: CHECK_LYSP_STMT
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_STMT(NODE, ARG, CHILD, FLAGS, KW, NEXT, STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - IFFEATURES
    - ','
    - NAME
    - ','
    - REF
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 506
    functionName: CHECK_LYSP_TYPE_ENUM
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_TYPE_ENUM(NODE, DSC, EXTS, FLAGS, IFFEATURES, NAME, REF,
      VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 33
    argNames:
    - (
    - NODE
    - ','
    - BASES
    - ','
    - BITS
    - ','
    - COMPILED
    - ','
    - ENUMS
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - FRACTIONS_DIGITS
    - ','
    - LENGTH
    - ','
    - NAME
    - ','
    - PATH
    - ','
    - PATTERNS
    - ','
    - PMOD
    - ','
    - RANGE
    - ','
    - REQUIRE_INSTANCE
    - ','
    - TYPES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 544
    functionName: CHECK_LYSP_TYPE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "CHECK_LYSP_TYPE(NODE, BASES, BITS, COMPILED, ENUMS, EXTS, FLAGS, FRACTIONS_DIGITS,
      \\\n            LENGTH, NAME, PATH, PATTERNS, PMOD, RANGE, REQUIRE_INSTANCE,
      TYPES)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 23
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - IFFEATURES
    - ','
    - NAME
    - ','
    - NEXT
    - ','
    - NODETYPE
    - ','
    - PARENT
    - ','
    - REF
    - ','
    - WHEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 573
    functionName: CHECK_LYSP_NODE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSP_NODE(NODE, DSC, EXTS, FLAGS, IFFEATURES, NAME, NEXT, NODETYPE,
      PARENT, REF, WHEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 27
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - IFFEATURES
    - ','
    - NAME
    - ','
    - NEXT
    - ','
    - PARENT
    - ','
    - REF
    - ','
    - WHEN
    - ','
    - MUSTS
    - ','
    - UNITS
    - ','
    - DFLT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 596
    functionName: CHECK_LYSP_NODE_LEAF
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "CHECK_LYSP_NODE_LEAF(NODE, DSC, EXTS, FLAGS, IFFEATURES, NAME, NEXT,
      \\\n            PARENT, REF, WHEN, MUSTS, UNITS, DFLT)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 25
    argNames:
    - (
    - NODE
    - ','
    - DATA
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - MODULE
    - ','
    - MUSTS
    - ','
    - NAME
    - ','
    - PARENT
    - ','
    - PRIV
    - ','
    - REF
    - ','
    - WHEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 626
    functionName: CHECK_LYSC_NOTIF
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_NOTIF(NODE, DATA, DSC, EXTS, FLAGS, MODULE, MUSTS, NAME,
      PARENT, PRIV, REF, WHEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NODE
    - ','
    - DATA
    - ','
    - MUST
    - ','
    - NODETYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 634
    functionDepth: 0
    functionLinenumber: 634
    functionLinenumberEnd: 639
    functionName: CHECK_LYSC_ACTION_INOUT
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_ACTION_INOUT(NODE, DATA, MUST, NODETYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 35
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - INPUT_DATA
    - ','
    - INPUT_MUST
    - ','
    - INPUT_EXTS
    - ','
    - MODULE
    - ','
    - NAME
    - ','
    - NODETYPE
    - ','
    - OUTPUT_DATA
    - ','
    - OUTPUT_MUST
    - ','
    - OUTPUT_EXTS
    - ','
    - PARENT
    - ','
    - PRIV
    - ','
    - REF
    - ','
    - WHEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 660
    functionDepth: 0
    functionLinenumber: 660
    functionLinenumberEnd: 677
    functionName: CHECK_LYSC_ACTION
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "CHECK_LYSC_ACTION(NODE, DSC, EXTS, FLAGS, INPUT_DATA, INPUT_MUST,
      INPUT_EXTS, MODULE, NAME, NODETYPE, \\\n            OUTPUT_DATA, OUTPUT_MUST,
      OUTPUT_EXTS, PARENT, PRIV, REF, WHEN)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 25
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - MODULE
    - ','
    - NAME
    - ','
    - NEXT
    - ','
    - NODETYPE
    - ','
    - PARENT
    - ','
    - PRIV
    - ','
    - REF
    - ','
    - WHEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 710
    functionName: CHECK_LYSC_NODE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYSC_NODE(NODE, DSC, EXTS, FLAGS, MODULE, NAME, NEXT, NODETYPE,
      PARENT, PRIV, REF, WHEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 37
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - MODULE
    - ','
    - NAME
    - ','
    - NEXT
    - ','
    - PARENT
    - ','
    - PRIV
    - ','
    - REF
    - ','
    - ACTIONS
    - ','
    - CHILD
    - ','
    - MAX
    - ','
    - MIN
    - ','
    - MUSTS
    - ','
    - NOTIFS
    - ','
    - UNIQUES
    - ','
    - WHEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 743
    functionName: CHECK_LYSC_NODE_LIST
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "CHECK_LYSC_NODE_LIST(NODE, DSC, EXTS, FLAGS, MODULE, NAME, NEXT, \\\n
      \           PARENT, PRIV, REF, ACTIONS, CHILD, MAX, MIN, MUSTS, NOTIFS, UNIQUES,
      WHEN)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 29
    argNames:
    - (
    - NODE
    - ','
    - DSC
    - ','
    - EXTS
    - ','
    - FLAGS
    - ','
    - MODULE
    - ','
    - NAME
    - ','
    - NEXT
    - ','
    - PARENT
    - ','
    - PRIV
    - ','
    - REF
    - ','
    - WHEN
    - ','
    - MUSTS
    - ','
    - UNITS
    - ','
    - DFLT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 768
    functionName: CHECK_LYSC_NODE_LEAF
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "CHECK_LYSC_NODE_LEAF(NODE, DSC, EXTS, FLAGS, MODULE, NAME, NEXT, \\\n
      \           PARENT, PRIV, REF, WHEN, MUSTS, UNITS, DFLT)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - NODE
    - ','
    - ANNOTATION
    - ','
    - NAME
    - ','
    - NEXT
    - ','
    - PARENT
    - ','
    - TYPE_VAL
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 779
    functionDepth: 0
    functionLinenumber: 779
    functionLinenumberEnd: 786
    functionName: CHECK_LYD_META
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_META(NODE, ANNOTATION, NAME, NEXT, PARENT, TYPE_VAL, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - NODE
    - ','
    - FLAGS
    - ','
    - META
    - ','
    - NEXT
    - ','
    - PARENT
    - ','
    - SCHEMA
    - ','
    - VALUE_TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 797
    functionDepth: 0
    functionLinenumber: 797
    functionLinenumberEnd: 806
    functionName: CHECK_LYD_NODE_TERM
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_NODE_TERM(NODE, FLAGS, META, NEXT, PARENT, SCHEMA, VALUE_TYPE,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - NODE
    - ','
    - FLAGS
    - ','
    - META
    - ','
    - PARENT
    - ','
    - VALUE_TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 823
    functionName: CHECK_LYD_NODE_ANY
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_NODE_ANY(NODE, FLAGS, META, PARENT, VALUE_TYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 21
    argNames:
    - (
    - NODE
    - ','
    - ATTR
    - ','
    - CHILD
    - ','
    - FORMAT
    - ','
    - NAME
    - ','
    - NEXT
    - ','
    - PARENT
    - ','
    - PREFIX
    - ','
    - VAL_PREFS
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 834
    functionDepth: 0
    functionLinenumber: 834
    functionLinenumberEnd: 847
    functionName: CHECK_LYD_NODE_OPAQ
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_NODE_OPAQ(NODE, ATTR, CHILD, FORMAT, NAME, NEXT, PARENT,
      PREFIX, VAL_PREFS, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 19
    argNames:
    - (
    - NODE
    - ','
    - CHILD
    - ','
    - CHILD_HT
    - ','
    - META
    - ','
    - FLAGS
    - ','
    - NEXT
    - ','
    - PARENT
    - ','
    - PRIV
    - ','
    - SCHEMA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 871
    functionName: CHECK_LYD_NODE_INNER
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_NODE_INNER(NODE, CHILD, CHILD_HT, META, FLAGS, NEXT, PARENT,
      PRIV, SCHEMA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - TYPE_VAL
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 883
    functionName: CHECK_LYD_VALUE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE(NODE, TYPE_VAL, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 899
    functionName: CHECK_LYD_VALUE_EMPTY
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_EMPTY(NODE, CANNONICAL_VAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - TYPE_VAL
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 919
    functionName: CHECK_LYD_VALUE_UNION
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_UNION(NODE, CANNONICAL_VAL, TYPE_VAL, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 942
    functionName: CHECK_LYD_VALUE_BITS
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_BITS(NODE, CANNONICAL_VAL, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 962
    functionName: CHECK_LYD_VALUE_INST
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_INST(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 970
    functionDepth: 0
    functionLinenumber: 970
    functionLinenumberEnd: 976
    functionName: CHECK_LYD_VALUE_ENUM
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_ENUM(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 990
    functionName: CHECK_LYD_VALUE_INT8
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_INT8(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 998
    functionDepth: 0
    functionLinenumber: 998
    functionLinenumberEnd: 1004
    functionName: CHECK_LYD_VALUE_INT16
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_INT16(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1018
    functionName: CHECK_LYD_VALUE_UINT8
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_UINT8(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1032
    functionName: CHECK_LYD_VALUE_UINT32
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_UINT32(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1044
    functionName: CHECK_LYD_VALUE_STRING
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_STRING(NODE, CANNONICAL_VAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1057
    functionName: CHECK_LYD_VALUE_LEAFREF
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_LEAFREF(NODE, CANNONICAL_VAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1071
    functionName: CHECK_LYD_VALUE_DEC64
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_DEC64(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - ','
    - SIZE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1080
    functionDepth: 0
    functionLinenumber: 1080
    functionLinenumberEnd: 1091
    functionName: CHECK_LYD_VALUE_BINARY
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_BINARY(NODE, CANNONICAL_VAL, VALUE, SIZE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1105
    functionName: CHECK_LYD_VALUE_BOOL
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_BOOL(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODE
    - ','
    - CANNONICAL_VAL
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1113
    functionDepth: 0
    functionLinenumber: 1113
    functionLinenumberEnd: 1119
    functionName: CHECK_LYD_VALUE_IDENT
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_VALUE_IDENT(NODE, CANNONICAL_VAL, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - DATA
    - ','
    - FORMAT
    - ','
    - FEATURES
    - ','
    - RET_VAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1127
    functionDepth: 0
    functionLinenumber: 1127
    functionLinenumberEnd: 1137
    functionName: UTEST_INVALID_MODULE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTEST_INVALID_MODULE(DATA, FORMAT, FEATURES, RET_VAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - DATA
    - ','
    - FORMAT
    - ','
    - FEATURES
    - ','
    - MOD
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1144
    functionDepth: 0
    functionLinenumber: 1144
    functionLinenumberEnd: 1149
    functionName: UTEST_ADD_MODULE
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTEST_ADD_MODULE(DATA, FORMAT, FEATURES, MOD)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ERR
    - ','
    - MSG
    - ','
    - PATH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1166
    functionName: _CHECK_LOG_CTX
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CHECK_LOG_CTX(ERR, MSG, PATH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MSG
    - ','
    - PATH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1172
    functionName: _CHECK_LOG_CTX1
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CHECK_LOG_CTX1(MSG, PATH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MSG1
    - ','
    - PATH1
    - ','
    - MSG2
    - ','
    - PATH2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1176
    functionDepth: 0
    functionLinenumber: 1176
    functionLinenumberEnd: 1179
    functionName: _CHECK_LOG_CTX2
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CHECK_LOG_CTX2(MSG1, PATH1, MSG2, PATH2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - MSG1
    - ','
    - PATH1
    - ','
    - MSG2
    - ','
    - PATH2
    - ','
    - MSG3
    - ','
    - PATH3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1183
    functionDepth: 0
    functionLinenumber: 1183
    functionLinenumberEnd: 1186
    functionName: _CHECK_LOG_CTX3
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CHECK_LOG_CTX3(MSG1, PATH1, MSG2, PATH2, MSG3, PATH3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - MSG1
    - ','
    - PATH1
    - ','
    - MSG2
    - ','
    - PATH2
    - ','
    - MSG3
    - ','
    - PATH3
    - ','
    - MSG4
    - ','
    - PATH4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1190
    functionDepth: 0
    functionLinenumber: 1190
    functionLinenumberEnd: 1193
    functionName: _CHECK_LOG_CTX4
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CHECK_LOG_CTX4(MSG1, PATH1, MSG2, PATH2, MSG3, PATH3, MSG4, PATH4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 21
    argNames:
    - (
    - MSG1
    - ','
    - PATH1
    - ','
    - MSG2
    - ','
    - PATH2
    - ','
    - MSG3
    - ','
    - PATH3
    - ','
    - MSG4
    - ','
    - PATH4
    - ','
    - MSG5
    - ','
    - PATH5
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1197
    functionDepth: 0
    functionLinenumber: 1197
    functionLinenumberEnd: 1200
    functionName: _CHECK_LOG_CTX5
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CHECK_LOG_CTX5(MSG1, PATH1, MSG2, PATH2, MSG3, PATH3, MSG4, PATH4,
      MSG5, PATH5)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 25
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - _6
    - ','
    - _7
    - ','
    - _8
    - ','
    - _9
    - ','
    - _10
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1204
    functionDepth: 0
    functionLinenumber: 1204
    functionLinenumberEnd: 1205
    functionName: _GET_CHECK_LOG_MACRO
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _GET_CHECK_LOG_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, NAME,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1216
    functionDepth: 0
    functionLinenumber: 1216
    functionLinenumberEnd: 1220
    functionName: CHECK_LOG_CTX
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LOG_CTX(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MSG
    - ','
    - PATH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1236
    functionDepth: 0
    functionLinenumber: 1236
    functionLinenumberEnd: 1240
    functionName: CHECK_LOG
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LOG(MSG, PATH)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tests/utests/utests.h:1263,1
    - Dst: free
      Src: /src/libyang/tests/utests/utests.h:1265,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/utests.h:1266,1
    - Dst: free
      Src: /src/libyang/tests/utests/utests.h:1267,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/utests.h:1268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - level
    - msg
    - path
    argTypes:
    - LY_LOG_LEVEL
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1257
    functionDepth: 0
    functionLinenumber: 1257
    functionLinenumberEnd: 1270
    functionName: _utest_logger
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached:
    - strdup
    - free
    - printf
    linkageType: ''
    returnType: void
    signature: void _utest_logger(LY_LOG_LEVEL level, const char *msg, const char
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_log_clb
      Src: /src/libyang/tests/utests/utests.h:1281,1
    - Dst: ly_log_options
      Src: /src/libyang/tests/utests/utests.h:1282,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/utests.h:1284,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/utests.h:1285,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/utests.h:1289,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/utests.h:1289,1
    - Dst: getenv
      Src: /src/libyang/tests/utests/utests.h:1295,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/utests.h:1297,1
    - Dst: setenv
      Src: /src/libyang/tests/utests/utests.h:1301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1304
    functionName: utest_setup
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached:
    - setenv
    - ly_set_log_clb
    - getenv
    - strdup
    - assert_int_equal
    - ly_log_options
    - assert_non_null
    - calloc
    - ly_ctx_new
    linkageType: ''
    returnType: int
    signature: int utest_setup(void **state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/utests.h:1323,1
    - Dst: setenv
      Src: /src/libyang/tests/utests/utests.h:1327,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/utests.h:1331,1
    - Dst: free
      Src: /src/libyang/tests/utests/utests.h:1332,1
    - Dst: free
      Src: /src/libyang/tests/utests/utests.h:1333,1
    - Dst: free
      Src: /src/libyang/tests/utests/utests.h:1334,1
    - Dst: free
      Src: /src/libyang/tests/utests/utests.h:1335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1339
    functionName: utest_teardown
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached:
    - free
    - setenv
    - ly_in_free
    - ly_ctx_destroy
    linkageType: ''
    returnType: int
    signature: int utest_teardown(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - FUNC
    - ','
    - SETUP
    - ','
    - TEARDOWN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1354
    functionName: _UTEST_SETUP_TEARDOWN
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _UTEST_SETUP_TEARDOWN(FUNC, SETUP, TEARDOWN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - FUNC
    - ','
    - SETUP
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1358
    functionDepth: 0
    functionLinenumber: 1358
    functionLinenumberEnd: 1360
    functionName: _UTEST_SETUP
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _UTEST_SETUP(FUNC, SETUP)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - FUNC
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1364
    functionDepth: 0
    functionLinenumber: 1364
    functionLinenumberEnd: 1366
    functionName: _UTEST
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _UTEST(FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1370
    functionDepth: 0
    functionLinenumber: 1370
    functionLinenumberEnd: 1371
    functionName: _GET_UTEST_MACRO
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _GET_UTEST_MACRO(_1, _2, _3, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1380
    functionDepth: 0
    functionLinenumber: 1380
    functionLinenumberEnd: 1382
    functionName: UTEST
    functionSourceFile: /src/libyang/tests/utests/utests.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UTEST(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:81,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:85,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:88,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 98
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 36
    functionsReached:
    - LOG_LOCINIT
    - calloc
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:103,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:104,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: teardown
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 21
    functionsReached:
    - lys_module_free
    - LOG_LOCBACK
    - free
    linkageType: ''
    returnType: int
    signature: int teardown(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - PREFIX
    - ','
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - ','
    - FUNC
    - ','
    - RESULT
    - ','
    - LINE
    - ','
    - CLEANUP
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: TEST_DUP_GENERIC
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP_GENERIC(PREFIX, MEMBER, VALUE1, VALUE2, FUNC, RESULT, LINE,
      CLEANUP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:130,1
    - Dst: buf_add_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:130,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:131,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:132,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:133,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:134,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:134,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:135,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:141,1
    - Dst: buf_store_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:141,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:143,1
    - Dst: buf_store_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:143,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:145,1
    - Dst: buf_store_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:145,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:149,1
    - Dst: buf_store_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:149,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:151,1
    - Dst: buf_store_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:157,1
    - Dst: buf_store_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:157,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:158,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:159,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:161,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:162,1
    - Dst: buf_store_char
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:162,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:163,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:164,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:165,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:166,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:170,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:170,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:171,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:172,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:172,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:173,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:175,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:176,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:177,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:179,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:179,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:180,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:181,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:182,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:184,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:184,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 186
    functionName: test_helpers
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_false
    - assert_int_not_equal
    - assert_null
    - free
    - buf_add_char
    - lysp_check_identifierchar
    - assert_string_equal
    - assert_int_equal
    - strncmp
    - buf_store_char
    linkageType: ''
    returnType: void
    signature: void test_helpers(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - INPUT_TEXT
    - ','
    - CTX
    - ','
    - ARG_TYPE
    - ','
    - EXPECT_WORD
    - ','
    - EXPECT_LEN
    - ','
    - EXPECT_CURRENT
    - ','
    - EXPECT_LINE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: TEST_GET_ARGUMENT_SUCCESS
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_GET_ARGUMENT_SUCCESS(INPUT_TEXT, CTX, ARG_TYPE, EXPECT_WORD, EXPECT_LEN,
      EXPECT_CURRENT, EXPECT_LINE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:206,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:208,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:210,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:212,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:213,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:217,1
    - Dst: skip_comment
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:217,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:218,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:222,1
    - Dst: skip_comment
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:222,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:223,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 225
    functionName: test_comments
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - assert_true
    - free
    - assert_ptr_equal
    - assert_int_equal
    - TEST_GET_ARGUMENT_SUCCESS
    - skip_comment
    linkageType: ''
    returnType: void
    signature: void test_comments(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:235,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:235,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:236,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:239,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:239,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:240,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:244,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:244,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:245,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:247,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:251,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:251,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:252,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:255,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:255,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:256,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:259,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:259,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:260,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:263,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:263,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:264,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:267,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:267,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:268,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:271,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:272,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:275,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:277,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:279,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:281,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:282,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:288,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:289,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:293,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:294,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:295,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:299,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:300,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:301,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:304,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:305,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:306,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:308,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:310,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:311,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:316,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:316,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:317,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:319,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:320,1
    - Dst: TEST_GET_ARGUMENT_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:322,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:323,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:328,1
    - Dst: get_argument
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:328,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 64
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 330
    functionName: test_arg
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - get_argument
    - assert_null
    - free
    - assert_ptr_equal
    - assert_int_equal
    - TEST_GET_ARGUMENT_SUCCESS
    linkageType: ''
    returnType: void
    signature: void test_arg(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - INPUT_TEXT
    - ','
    - CTX
    - ','
    - ACTION
    - ','
    - EXPECT_WORD
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 338
    functionName: TEST_STMS_SUCCESS
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_STMS_SUCCESS(INPUT_TEXT, CTX, ACTION, EXPECT_WORD)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:348,1
    - Dst: get_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:348,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:349,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:350,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:351,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:352,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:355,1
    - Dst: get_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:355,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:356,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:357,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:358,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:359,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:360,1
    - Dst: get_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:360,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:361,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:362,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:363,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:364,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:367,1
    - Dst: get_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:367,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:368,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:371,1
    - Dst: get_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:371,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:372,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:375,1
    - Dst: get_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:375,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:376,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:378,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:380,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:381,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:382,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:383,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:384,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:385,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:386,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:387,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:388,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:389,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:390,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:391,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:392,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:393,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:394,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:395,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:396,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:397,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:398,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:399,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:400,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:401,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:402,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:403,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:404,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:405,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:406,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:407,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:408,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:409,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:410,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:411,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:412,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:413,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:414,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:415,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:416,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:417,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:418,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:419,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:420,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:421,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:422,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:423,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:424,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:425,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:426,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:427,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:428,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:429,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:430,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:431,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:432,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:433,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:434,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:435,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:436,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:437,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:438,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:439,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:440,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:441,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:442,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:443,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:444,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:445,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:446,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:447,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:448,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:449,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:450,1
    - Dst: TEST_STMS_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:451,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:452,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:456,1
    - Dst: get_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:456,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:457,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:458,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 106
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 460
    functionName: test_stmts
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - TEST_STMS_SUCCESS
    - get_keyword
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_stmts(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - INPUT_TEXT
    - ','
    - CTX
    - ','
    - TYPE
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 472
    functionName: TEST_MINMAX_SUCCESS
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_MINMAX_SUCCESS(INPUT_TEXT, CTX, TYPE, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:483,1
    - Dst: parse_minelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:483,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:484,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:488,1
    - Dst: parse_minelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:488,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:489,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:494,1
    - Dst: parse_minelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:494,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:495,1
    - Dst: TEST_MINMAX_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:498,1
    - Dst: TEST_MINMAX_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:501,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:502,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:503,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:508,1
    - Dst: parse_minelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:508,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:509,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:512,1
    - Dst: parse_maxelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:512,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:513,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:517,1
    - Dst: parse_maxelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:517,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:518,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:523,1
    - Dst: parse_maxelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:523,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:524,1
    - Dst: TEST_MINMAX_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:527,1
    - Dst: TEST_MINMAX_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:530,1
    - Dst: TEST_MINMAX_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:533,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:534,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:535,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:540,1
    - Dst: parse_maxelements
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:540,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:541,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 542
    functionName: test_minmax
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - FREE_ARRAY
    - assert_int_equal
    - TEST_MINMAX_SUCCESS
    - parse_minelements
    - parse_maxelements
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_minmax(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:549,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:550,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lys_yang_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 558
    functionName: mod_renew
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - lys_module_free
    - calloc
    linkageType: ''
    returnType: struct lysp_module
    signature: 'struct lysp_module *

      mod_renew(struct lys_yang_parser_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:565,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:566,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:567,1
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lys_yang_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 573
    functionName: submod_renew
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - lys_module_free
    - lydict_insert
    - calloc
    linkageType: ''
    returnType: struct lysp_submodule
    signature: 'struct lysp_submodule *

      submod_renew(struct lys_yang_parser_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - UNUSED(mod_name)
    - UNUSED(mod_rev)
    - UNUSED(submod_name)
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 584
    functionName: test_imp_clb
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev),
      const char *UNUSED(submod_name),\n        const char *UNUSED(sub_rev), void
      *user_data, LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:595,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:599,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:599,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:600,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:601,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:603,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:605,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:605,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:606,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:607,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:608,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:611,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:611,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:612,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:613,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:635,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:636,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:637,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:638,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:639,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:640,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:644,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:644,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:645,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:646,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:649,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:651,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:653,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:654,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:656,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:658,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:659,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:661,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:663,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:664,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:666,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:667,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:669,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:670,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:672,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:673,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:675,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:676,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:678,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:679,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:681,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:682,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:683,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:687,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:687,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:688,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:689,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:692,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:692,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:693,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:695,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:696,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:699,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:699,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:700,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:703,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:705,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:705,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:706,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:708,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:710,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:710,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:711,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:713,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:714,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:715,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:718,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:720,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:722,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:724,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:725,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:727,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:728,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:730,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:731,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:733,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:734,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:736,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:737,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:739,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:740,1
    - Dst: TEST_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:742,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:745,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:745,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:746,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:747,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:749,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:749,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:750,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:751,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:753,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:753,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:754,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:755,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:757,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:757,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:758,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:759,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:762,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:764,1
    - Dst: yang_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:764,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:765,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:766,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:767,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:770,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:772,1
    - Dst: yang_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:772,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:773,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:774,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:775,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:778,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:780,1
    - Dst: yang_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:780,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:781,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:782,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:783,1
    - Dst: TEST_GENERIC
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:786,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:787,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:788,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:789,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:793,1
    - Dst: parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:793,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:794,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:797,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:801,1
    - Dst: parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:801,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:802,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:803,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:805,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:808,1
    - Dst: parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:808,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:809,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:810,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:817,1
    - Dst: parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:817,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:818,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:819,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:823,1
    - Dst: parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:823,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:824,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:825,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:827,1
    - Dst: parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:827,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:828,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:829,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:832,1
    - Dst: yang_parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:832,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:833,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:834,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:837,1
    - Dst: yang_parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:837,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:838,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:839,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 147
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 846
    functionName: test_module
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - yang_parse_submodule
    - LOG_LOCBACK
    - ly_ctx_set_module_imp_clb
    - TEST_NODE
    - parse_submodule
    - yang_parser_ctx_free
    - mod_renew
    - TEST_DUP
    - submod_renew
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - yang_parse_module
    - lys_module_free
    - parse_module
    - TEST_GENERIC
    - calloc
    linkageType: ''
    returnType: void
    signature: void test_module(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - NODETYPE
    - ','
    - INPUT
    - ','
    - NAME
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 624
    functionName: TEST_NODE
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_NODE(NODETYPE, INPUT, NAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - INPUT
    - ','
    - TARGET
    - ','
    - TEST
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 630
    functionName: TEST_GENERIC
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_GENERIC(INPUT, TARGET, TEST)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - ','
    - LINE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2, LINE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:858,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:859,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:863,1
    - Dst: parse_deviation
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:863,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:864,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:865,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:866,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:871,1
    - Dst: parse_deviation
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:871,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:872,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:873,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:878,1
    - Dst: parse_deviation
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:878,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:879,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 848
    functionDepth: 1
    functionLinenumber: 848
    functionLinenumberEnd: 883
    functionName: test_deviation
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - parse_deviation
    - TEST_DUP
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_deviation(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 854
    functionDepth: 0
    functionLinenumber: 854
    functionLinenumberEnd: 857
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT_TEXT
    - ','
    - REMAIN_TEXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 891
    functionName: TEST_DEVIATE_SUCCESS
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DEVIATE_SUCCESS(INPUT_TEXT, REMAIN_TEXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:902,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:905,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:907,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:908,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:909,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:912,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:914,1
    - Dst: TEST_DEVIATE_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:917,1
    - Dst: TEST_DEVIATE_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:918,1
    - Dst: TEST_DEVIATE_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:919,1
    - Dst: TEST_DEVIATE_SUCCESS
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:920,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:929,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:930,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:931,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:932,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:933,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:934,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:935,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:936,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:937,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:938,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:939,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:940,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:941,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:942,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:943,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:944,1
    - Dst: TEST_NOT_SUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:945,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:948,1
    - Dst: parse_deviate
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:948,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:949,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 953
    functionName: test_deviate
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - TEST_DUP
    - parse_deviate
    - assert_int_equal
    - TEST_DEVIATE_SUCCESS
    - TEST_NOT_SUP
    linkageType: ''
    returnType: void
    signature: void test_deviate(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 901
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(TYPE, MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - DEV
    - ','
    - STMT
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 928
    functionName: TEST_NOT_SUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_NOT_SUP(DEV, STMT, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:969,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:970,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:971,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:972,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:973,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:974,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:980,1
    - Dst: parse_container
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:980,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:981,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:982,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:983,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:984,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:985,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:986,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:987,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:988,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:989,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:990,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:994,1
    - Dst: parse_container
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:994,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:995,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:996,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:998,1
    - Dst: parse_container
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:998,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:999,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1000,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1004,1
    - Dst: parse_container
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1004,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1005,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 1008
    functionName: test_container
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lysp_node_free
    - TEST_DUP
    - parse_container
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - ly_set_erase
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_container(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 968
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1022,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1023,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1024,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1025,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1026,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1027,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1028,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1029,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1030,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1036,1
    - Dst: parse_leaf
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1036,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1037,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1038,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1039,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1040,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1041,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1042,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1046,1
    - Dst: parse_leaf
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1046,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1047,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1048,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1049,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1053,1
    - Dst: parse_leaf
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1053,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1054,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1055,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1058,1
    - Dst: parse_leaf
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1058,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1059,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1061
    functionName: test_leaf
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - parse_leaf
    - lysp_node_free
    - TEST_DUP
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_leaf(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1016
    functionDepth: 0
    functionLinenumber: 1016
    functionLinenumberEnd: 1021
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1077,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1078,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1079,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1080,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1081,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1082,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1083,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1084,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1085,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1086,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1093,1
    - Dst: parse_leaflist
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1093,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1094,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1095,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1096,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1096,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1097,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1098,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1099,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1101,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1102,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1104,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1105,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1109,1
    - Dst: parse_leaflist
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1109,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1110,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1111,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1114,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1115,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1119,1
    - Dst: parse_leaflist
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1119,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1120,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1121,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1125,1
    - Dst: parse_leaflist
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1125,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1126,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1128
    functionName: test_leaflist
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - parse_leaflist
    - lysp_node_free
    - LY_ARRAY_COUNT
    - TEST_DUP
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_leaflist(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1071
    functionDepth: 0
    functionLinenumber: 1071
    functionLinenumberEnd: 1076
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1144,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1145,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1146,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1147,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1148,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1149,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1150,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1151,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1152,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1159,1
    - Dst: parse_list
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1159,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1160,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1162,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1163,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1164,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1164,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1165,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1166,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1167,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1168,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1169,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1170,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1171,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1176,1
    - Dst: parse_list
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1176,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1177,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1130
    functionDepth: 1
    functionLinenumber: 1130
    functionLinenumberEnd: 1179
    functionName: test_list
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - parse_list
    - lysp_node_free
    - LY_ARRAY_COUNT
    - TEST_DUP
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - ly_set_erase
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1138
    functionDepth: 0
    functionLinenumber: 1138
    functionLinenumberEnd: 1143
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1195,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1196,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1197,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1198,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1199,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1200,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1201,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1207,1
    - Dst: parse_choice
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1207,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1208,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1209,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1213,1
    - Dst: parse_choice
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1213,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1214,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1215,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1181
    functionDepth: 1
    functionLinenumber: 1181
    functionLinenumberEnd: 1217
    functionName: test_choice
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - lysp_node_free
    - TEST_DUP
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - parse_choice
    linkageType: ''
    returnType: void
    signature: void test_choice(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1189
    functionDepth: 0
    functionLinenumber: 1189
    functionLinenumberEnd: 1194
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1233,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1234,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1235,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1236,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1242,1
    - Dst: parse_case
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1242,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1243,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1248,1
    - Dst: parse_case
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1248,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1249,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1219
    functionDepth: 1
    functionLinenumber: 1219
    functionLinenumberEnd: 1251
    functionName: test_case
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - parse_case
    - lysp_node_free
    - TEST_DUP
    - CHECK_LYSP_NODE
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_case(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1227
    functionDepth: 0
    functionLinenumber: 1227
    functionLinenumberEnd: 1232
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1271,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1272,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1273,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1274,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1275,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1276,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1281,1
    - Dst: parse_any
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1281,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1284,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1285,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - state
    - kw
    argTypes:
    - void**
    - enum ly_stmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1287
    functionName: test_any
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - lysp_node_free
    - TEST_DUP
    - CHECK_LYSP_NODE
    - assert_int_equal
    - parse_any
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_any(void **state, enum ly_stmt kw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1265
    functionDepth: 0
    functionLinenumber: 1265
    functionLinenumberEnd: 1270
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_any
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1289
    functionDepth: 2
    functionLinenumber: 1289
    functionLinenumberEnd: 1293
    functionName: test_anydata
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - test_any
    linkageType: ''
    returnType: void
    signature: void test_anydata(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_any
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1295
    functionDepth: 2
    functionLinenumber: 1295
    functionLinenumberEnd: 1299
    functionName: test_anyxml
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - test_any
    linkageType: ''
    returnType: void
    signature: void test_anyxml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1315,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1316,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1317,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1323,1
    - Dst: parse_grouping
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1323,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1324,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1325,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1326,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1327,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1328,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1329,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1330,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1331,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1332,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1333,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1338,1
    - Dst: parse_grouping
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1338,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1339,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1344,1
    - Dst: parse_grouping
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1344,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1345,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1301
    functionDepth: 1
    functionLinenumber: 1301
    functionLinenumberEnd: 1348
    functionName: test_grouping
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - lysp_node_free
    - TEST_DUP
    - assert_string_equal
    - assert_int_equal
    - ly_set_erase
    - assert_non_null
    - parse_grouping
    linkageType: ''
    returnType: void
    signature: void test_grouping(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1309
    functionDepth: 0
    functionLinenumber: 1309
    functionLinenumberEnd: 1314
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1365,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1366,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1367,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1368,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1369,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1374,1
    - Dst: parse_container
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1374,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1380,1
    - Dst: parse_action
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1380,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1381,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1382,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1383,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1384,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1385,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1386,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1387,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1388,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1389,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1390,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1392,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1393,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1394,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1395,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1396,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1397,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1399,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1400,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1401,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1402,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1403,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1404,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1406,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1407,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1411,1
    - Dst: parse_action
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1411,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1412,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1413,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1416
    functionName: test_action
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lysp_node_free
    - TEST_DUP
    - parse_container
    - assert_string_equal
    - assert_int_equal
    - ly_set_erase
    - assert_non_null
    - parse_action
    linkageType: ''
    returnType: void
    signature: void test_action(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1359
    functionDepth: 0
    functionLinenumber: 1359
    functionLinenumberEnd: 1364
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1433,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1434,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1435,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1440,1
    - Dst: parse_container
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1440,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1443,1
    - Dst: parse_notif
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1443,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1444,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1445,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1446,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1447,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1448,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1449,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1450,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1451,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1452,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1453,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1454,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1455,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1457,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1458,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1462,1
    - Dst: parse_notif
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1462,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1463,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1464,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1418
    functionDepth: 1
    functionLinenumber: 1418
    functionLinenumberEnd: 1467
    functionName: test_notification
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lysp_node_free
    - TEST_DUP
    - parse_container
    - assert_string_equal
    - assert_int_equal
    - parse_notif
    - ly_set_erase
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_notification(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1427
    functionDepth: 0
    functionLinenumber: 1427
    functionLinenumberEnd: 1432
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1483,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1484,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1485,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1486,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1491,1
    - Dst: parse_uses
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1491,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1492,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1493,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1494,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1469
    functionDepth: 1
    functionLinenumber: 1469
    functionLinenumberEnd: 1496
    functionName: test_uses
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - lysp_node_free
    - TEST_DUP
    - parse_uses
    - CHECK_LYSP_NODE
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_uses(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1477
    functionDepth: 0
    functionLinenumber: 1477
    functionLinenumberEnd: 1482
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1512,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1513,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1514,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1515,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1521,1
    - Dst: parse_augment
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1521,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1522,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1523,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1524,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1525,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1526,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1527,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1528,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1529,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1530,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1531,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1498
    functionDepth: 1
    functionLinenumber: 1498
    functionLinenumberEnd: 1533
    functionName: test_augment
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - TEST_DUP
    - assert_string_equal
    - assert_int_equal
    - parse_augment
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_augment(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1506
    functionDepth: 0
    functionLinenumber: 1506
    functionLinenumberEnd: 1511
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1549,1
    - Dst: TEST_DUP
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1550,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1555,1
    - Dst: parse_when
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1555,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1556,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1557,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1558,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1559,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1560,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1561,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1565,1
    - Dst: parse_when
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1565,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1566,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1567,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1568,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1535
    functionDepth: 1
    functionLinenumber: 1535
    functionLinenumberEnd: 1570
    functionName: test_when
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - TEST_DUP
    - assert_non_null
    - assert_string_equal
    - assert_int_equal
    - FREE_MEMBER
    - parse_when
    linkageType: ''
    returnType: void
    signature: void test_when(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1543
    functionDepth: 0
    functionLinenumber: 1543
    functionLinenumberEnd: 1548
    functionName: TEST_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DUP(MEMBER, VALUE1, VALUE2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1579,1
    - Dst: parse_type_enum_value_pos
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1579,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1580,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1584,1
    - Dst: parse_type_enum_value_pos
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1584,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1572
    functionDepth: 1
    functionLinenumber: 1572
    functionLinenumberEnd: 1586
    functionName: test_value
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_int_equal
    - parse_type_enum_value_pos
    linkageType: ''
    returnType: void
    signature: void test_value(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1592,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1593,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1594,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1595,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1596,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1597,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1598,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1599,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1600,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1601,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1602,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1603,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1604,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1605,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1606,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1607,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1608,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1609,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1610,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1611,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1612,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1613,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1614,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/schema/test_parser_yang.c:1617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1618
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yang.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD
    - ','
    - LINE_LENGTH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: TEST_LOCAL_PRINT
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_LOCAL_PRINT(MOD, LINE_LENGTH)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:50,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:79,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:103,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:103,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:103,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:104,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:106,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:127,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:128,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:129,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:129,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:129,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:130,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 134
    functionName: base_sections
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void base_sections(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:163,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:164,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:165,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:165,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:165,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:166,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:168,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:170,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:171,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:172,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:172,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:172,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:173,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 177
    functionName: node_status
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_status(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:202,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:203,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:204,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:204,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:204,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:205,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:207,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:209,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:210,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:211,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:211,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:211,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:212,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 216
    functionName: node_config_flags
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_config_flags(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:255,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:256,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:257,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:257,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:257,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:258,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:260,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:262,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:263,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:264,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:264,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:264,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:265,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 269
    functionName: node_rpcs_flags
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_rpcs_flags(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:325,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:326,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:327,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:327,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:327,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:328,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:342,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:344,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:345,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:346,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:346,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:346,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:347,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 351
    functionName: node_grouping_flags
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_grouping_flags(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:373,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:374,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:375,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:375,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:375,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:376,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:378,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:380,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:381,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:382,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:382,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:382,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:383,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 353
    functionDepth: 1
    functionLinenumber: 353
    functionLinenumberEnd: 387
    functionName: notif_inside_container
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void notif_inside_container(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:406,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:407,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:408,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:408,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:408,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:409,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:411,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:413,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:414,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:415,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:415,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:415,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:416,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 420
    functionName: node_choice
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_choice(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:442,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:443,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:444,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:444,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:444,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:445,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:447,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:449,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:450,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:451,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:451,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:451,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:452,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 456
    functionName: node_case
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_case(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:508,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:509,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:510,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:510,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:510,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:511,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:513,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:515,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:516,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:517,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:517,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:517,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:518,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 522
    functionName: optional_opts
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void optional_opts(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:545,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:546,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:547,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:547,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:547,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:548,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:550,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:552,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:553,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:554,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:554,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:554,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:555,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 559
    functionName: presence_container
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void presence_container(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:600,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:601,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:602,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:602,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:602,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:603,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:605,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:607,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:608,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:609,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:609,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:609,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:610,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 614
    functionName: node_keys
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_keys(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:641,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:642,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:643,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:643,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:643,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:644,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:646,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:648,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:649,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:650,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:650,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:650,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:651,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 655
    functionName: node_type_target
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_type_target(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:684,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:685,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:686,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:686,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:686,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:687,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:689,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:691,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:692,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:693,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:693,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:693,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:694,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:695,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 698
    functionName: node_type_leafref
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_type_leafref(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:725,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:726,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:727,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:727,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:727,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:728,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:730,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:732,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:733,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:734,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:734,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:734,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:735,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 739
    functionName: node_iffeatures
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void node_iffeatures(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:783,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:784,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:785,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:785,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:785,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:786,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:788,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:790,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:791,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:792,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:792,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:792,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:793,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 797
    functionName: indent_wrapper
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void indent_wrapper(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:842,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:843,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:844,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:844,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:844,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:845,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:847,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:849,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:850,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:851,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:851,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:851,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:852,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:853,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:855,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:867,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:868,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:869,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:869,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:869,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:870,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:872,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:874,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:875,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:876,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:876,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:876,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:877,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:878,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:880,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:894,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:895,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:896,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:896,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:896,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:897,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:899,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:901,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:902,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:903,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:903,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:903,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:904,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:905,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:907,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:923,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:924,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:925,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:925,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:925,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:926,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:928,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:930,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:931,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:932,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:932,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:932,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:933,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:934,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:936,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:953,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:954,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:955,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:955,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:955,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:956,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:958,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:960,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:961,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:962,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:962,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:962,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:963,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 63
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 967
    functionName: line_length_twiddling
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void line_length_twiddling(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:996,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:997,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:998,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:998,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:998,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:999,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1001,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1003,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1004,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1005,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1005,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1005,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1006,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 969
    functionDepth: 1
    functionLinenumber: 969
    functionLinenumberEnd: 1010
    functionName: break_before_leafref
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void break_before_leafref(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1045,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1046,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1047,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1047,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1047,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1048,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1050,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1052,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1053,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1054,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1054,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1054,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1055,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1012
    functionDepth: 1
    functionLinenumber: 1012
    functionLinenumberEnd: 1059
    functionName: break_before_leafref_and_iffeature
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void break_before_leafref_and_iffeature(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1106,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1107,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1108,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1108,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1108,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1109,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1111,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1113,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1115,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1115,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1115,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1116,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1061
    functionDepth: 1
    functionLinenumber: 1061
    functionLinenumberEnd: 1120
    functionName: basic_unified_indent_before_type
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void basic_unified_indent_before_type(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1169,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1170,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1171,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1171,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1171,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1172,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1174,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1176,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1178,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1178,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1178,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1179,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1180,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1182,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1196,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1197,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1198,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1198,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1198,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1199,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1201,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1203,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1204,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1205,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1205,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1205,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1206,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1207,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1209,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1227,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1228,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1229,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1229,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1229,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1230,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1232,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1234,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1236,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1236,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1236,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1237,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1122
    functionDepth: 1
    functionLinenumber: 1122
    functionLinenumberEnd: 1241
    functionName: twiddling_unified_indent_before_type
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void twiddling_unified_indent_before_type(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1266,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1267,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1268,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1268,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1268,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1269,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1271,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1273,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1274,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1275,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1275,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1275,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1276,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1243
    functionDepth: 1
    functionLinenumber: 1243
    functionLinenumberEnd: 1280
    functionName: inheritance_of_config_flag
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void inheritance_of_config_flag(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1330,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1331,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1332,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1332,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1332,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1333,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1335,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1337,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1338,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1339,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1339,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1339,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1340,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1282
    functionDepth: 1
    functionLinenumber: 1282
    functionLinenumberEnd: 1344
    functionName: inheritance_of_status_flag
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void inheritance_of_status_flag(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1381,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1382,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1383,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1383,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1383,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1384,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1386,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1398,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1399,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1400,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1400,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1400,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1401,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1346
    functionDepth: 1
    functionLinenumber: 1346
    functionLinenumberEnd: 1405
    functionName: key_leaf_is_always_mandatory_true
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void key_leaf_is_always_mandatory_true(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1463,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1464,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1465,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1465,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1465,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1466,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1468,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1470,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1471,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1472,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1472,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1472,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1473,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1407
    functionDepth: 1
    functionLinenumber: 1407
    functionLinenumberEnd: 1477
    functionName: transition_between_rpc_and_notif
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    linkageType: ''
    returnType: void
    signature: void transition_between_rpc_and_notif(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1495,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1504,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1505,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1506,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1506,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1506,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1507,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1479
    functionDepth: 1
    functionLinenumber: 1479
    functionLinenumberEnd: 1511
    functionName: local_augment
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    linkageType: ''
    returnType: void
    signature: void local_augment(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1540,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1550,1
    - Dst: lys_find_path
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1552,1
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1553,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1554,1
    - Dst: lys_print_node
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1554,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1555,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1555,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1555,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1556,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1558,1
    - Dst: lys_find_path
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1568,1
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1569,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1570,1
    - Dst: lys_print_node
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1570,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1571,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1571,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1571,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1572,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1574,1
    - Dst: lys_find_path
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1582,1
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1583,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1584,1
    - Dst: lys_print_node
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1584,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1585,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1585,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1585,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1586,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1513
    functionDepth: 1
    functionLinenumber: 1513
    functionLinenumberEnd: 1591
    functionName: print_compiled_node
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - CHECK_POINTER
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - lys_find_path
    - ly_ctx_unset_options
    - assert_string_equal
    - assert_int_equal
    - ly_out_reset
    - lys_print_node
    linkageType: ''
    returnType: void
    signature: void print_compiled_node(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - UNUSED(mod_name)
    - UNUSED(mod_rev)
    - UNUSED(submod_name)
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1593
    functionDepth: 0
    functionLinenumber: 1593
    functionLinenumberEnd: 1602
    functionName: local_imp_clb
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR local_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev),
      const char *UNUSED(submod_name),\n        const char *UNUSED(sub_rev), void
      *user_data, LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1637,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1638,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1639,1
    - Dst: lys_print_submodule
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1639,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1640,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1640,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1640,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1604
    functionDepth: 1
    functionLinenumber: 1604
    functionLinenumberEnd: 1644
    functionName: print_parsed_submodule
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_ctx_set_module_imp_clb
    - UTEST_ADD_MODULE
    - ly_out_printed
    - assert_string_equal
    - assert_int_equal
    - lys_print_submodule
    linkageType: ''
    returnType: void
    signature: void print_parsed_submodule(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1651,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1651,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1652,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1652,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1747,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1748,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1749,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1749,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1749,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1750,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1752,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1780,1
    - Dst: TEST_LOCAL_PRINT
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1781,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1782,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1782,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1782,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1783,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1646
    functionDepth: 1
    functionLinenumber: 1646
    functionLinenumberEnd: 1787
    functionName: yang_data
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - strlen
    - UTEST_ADD_MODULE
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - ly_out_printed
    - ly_ctx_unset_options
    - TEST_LOCAL_PRINT
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void yang_data(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1793,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1794,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1795,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1796,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1797,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1798,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1799,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1800,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1801,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1802,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1803,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1804,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1805,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1806,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1807,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1808,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1809,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1810,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1811,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1812,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1813,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1814,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1815,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1816,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1817,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1818,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1819,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1820,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/schema/test_printer_tree.c:1823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1789
    functionDepth: 1
    functionLinenumber: 1789
    functionLinenumberEnd: 1824
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_tree.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_STMT_DUP
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:30,1
    - Dst: TEST_STMT_DUP
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:31,1
    - Dst: TEST_STMT_DUP
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:32,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:35,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:38,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:39,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:39,1
    - Dst: TEST_STMT_SUBSTM_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:42,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:48,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:56,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:56,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:57,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:58,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:59,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:60,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:61,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:62,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:70,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:71,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:71,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:72,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:75,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:82,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:83,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:86,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:87,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:88,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:89,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:90,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:90,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:91,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:93,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:93,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:94,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:95,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:96,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:97,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:97,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:98,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:99,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:100,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:100,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:101,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:104,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:104,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:105,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:107,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:109,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:110,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:112,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:113,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:114,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:118,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:120,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:123,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 139
    functionName: test_identity
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_stmts.c
    functionUses: 0
    functionsReached:
    - TEST_STMT_DUP
    - TEST_STMT_SUBSTM_ERR
    - ly_ctx_set_module_imp_clb
    - LY_ARRAY_COUNT
    - TEST_SCHEMA_OK
    - assert_true
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    - TEST_SCHEMA_ERR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_identity(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_STMT_DUP
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:151,1
    - Dst: TEST_STMT_DUP
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:152,1
    - Dst: TEST_STMT_DUP
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:153,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:156,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:159,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:160,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:160,1
    - Dst: TEST_STMT_SUBSTM_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:163,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:176,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:176,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:177,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:178,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:179,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:180,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:181,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:187,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:188,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:188,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:189,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:192,1
    - Dst: TEST_SCHEMA_OK
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:199,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:206,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:207,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:207,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:210,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:211,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:215,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:217,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:219,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:221,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:223,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:225,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:227,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:229,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:232,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:233,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:235,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:237,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:239,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:241,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:243,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:245,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:247,1
    - Dst: TEST_SCHEMA_ERR
      Src: /src/libyang/tests/utests/schema/test_schema_stmts.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 259
    functionName: test_feature
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_stmts.c
    functionUses: 0
    functionsReached:
    - TEST_STMT_DUP
    - TEST_STMT_SUBSTM_ERR
    - assert_false
    - ly_ctx_set_module_imp_clb
    - LY_ARRAY_COUNT
    - TEST_SCHEMA_OK
    - assert_true
    - assert_string_equal
    - assert_int_equal
    - LY_ARRAY_FOR
    - TEST_SCHEMA_ERR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_feature(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - MOD_PREFIX
    - ','
    - MOD_NS
    - ','
    - CONTENT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: TEST_YANG_MODULE_10
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_YANG_MODULE_10(MOD_NAME, MOD_PREFIX, MOD_NS, CONTENT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - MOD_PREFIX
    - ','
    - MOD_NS
    - ','
    - CONTENT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: TEST_YANG_MODULE_11
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_YANG_MODULE_11(MOD_NAME, MOD_PREFIX, MOD_NS, CONTENT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - MOD_PREFIX
    - ','
    - MOD_NS
    - ','
    - CONTENT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: TEST_YIN_MODULE_10
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_YIN_MODULE_10(MOD_NAME, MOD_PREFIX, MOD_NS, CONTENT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - MOD_PREFIX
    - ','
    - MOD_NS
    - ','
    - CONTENT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: TEST_YIN_MODULE_11
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_YIN_MODULE_11(MOD_NAME, MOD_PREFIX, MOD_NS, CONTENT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - RFC7950
    - ','
    - YIN
    - ','
    - MOD_NAME
    - ','
    - CONTENT
    - ','
    - STR
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: TEST_SCHEMA_STR
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SCHEMA_STR(RFC7950, YIN, MOD_NAME, CONTENT, STR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - RFC7950
    - ','
    - YIN
    - ','
    - MOD_NAME
    - ','
    - CONTENT
    - ','
    - RESULT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: TEST_SCHEMA_OK
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SCHEMA_OK(RFC7950, YIN, MOD_NAME, CONTENT, RESULT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - RFC7950
    - ','
    - YIN
    - ','
    - MOD_NAME
    - ','
    - CONTENT
    - ','
    - ERRMSG
    - ','
    - ERRPATH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: TEST_SCHEMA_ERR
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SCHEMA_ERR(RFC7950, YIN, MOD_NAME, CONTENT, ERRMSG, ERRPATH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - RFC7950
    - ','
    - YIN
    - ','
    - STMT
    - ','
    - MEMBER
    - ','
    - VALUE1
    - ','
    - VALUE2
    - ','
    - LINE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: TEST_STMT_DUP
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_STMT_DUP(RFC7950, YIN, STMT, MEMBER, VALUE1, VALUE2, LINE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - RFC7950
    - ','
    - STMT
    - ','
    - SUBSTMT
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: TEST_STMT_SUBSTM_ERR
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_STMT_SUBSTM_ERR(RFC7950, STMT, SUBSTMT, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:72,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:73,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:73,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:74,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:74,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:75,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:76,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:78,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:78,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:79,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:80,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:82,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:82,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:83,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:83,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:84,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:85,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:87,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:87,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:88,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:89,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:92,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:93,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:96,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:97,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:97,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:98,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:98,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:99,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:102,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:102,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:103,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:104,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:106,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:106,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:107,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:107,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:108,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:109,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:111,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:111,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:112,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 114
    functionName: test_extension_argument
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_extensions.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_module_imp_clb
    - ly_ctx_destroy
    - lys_print_mem
    - free
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    - ly_ctx_get_module
    - ly_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_extension_argument(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:174,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:175,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:176,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:176,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:177,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:180,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:180,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:181,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:182,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:184,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:185,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:185,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:186,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:187,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:189,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:189,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:190,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:191,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:194,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:195,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:199,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:199,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:200,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:200,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:201,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:202,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:204,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:204,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:205,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:206,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:208,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:209,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:209,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:210,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:213,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:213,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:214,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:215,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:219,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:219,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:220,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:234,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:234,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:249,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:249,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:250,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:266,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:266,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:267,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:284,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:284,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_extensions.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 288
    functionName: test_extension_argument_element
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_extensions.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_ctx_set_module_imp_clb
    - ly_ctx_destroy
    - lys_print_mem
    - free
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    - ly_ctx_get_module
    - ly_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_extension_argument_element(void **state)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - UNUSED(mod_name)
    - UNUSED(mod_rev)
    - UNUSED(submod_name)
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 36
    functionName: test_imp_clb
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev),
      const char *UNUSED(submod_name),\n        const char *UNUSED(sub_rev), void
      *user_data, LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:62,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:63,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:64,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:65,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:66,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:67,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:70,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:71,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:74,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_schema.c:75,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/schema/test_schema.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 79
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:30,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 36
    functionsReached:
    - ly_ctx_set_options
    - assert_int_equal
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - model_data
    - UNUSED(user_data)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: test_imp_free_data
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void test_imp_free_data(void *model_data, void *UNUSED(user_data))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:48,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:50,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:50,1
    - Dst: strndup
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:51,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 7
    argNames:
    - mod_name
    - UNUSED(mod_rev)
    - UNUSED(submod_name)
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 65
    functionName: test_imp_clb
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - strlen
    - strdup
    - strchr
    - strncmp
    - strndup
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR test_imp_clb(const char *mod_name, const char *UNUSED(mod_rev),
      const char *UNUSED(submod_name),\n        const char *UNUSED(sub_rev), void
      *user_data, LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:79,1
    - Dst: lys_compile
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:79,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:80,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:81,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:81,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:82,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:82,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:83,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:83,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:84,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:85,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:86,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:87,1
    - Dst: lys_compile
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:87,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:88,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:88,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:89,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:90,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:92,1
    - Dst: lys_compile
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:93,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:93,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:94,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:95,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:96,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:97,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:98,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:101,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:101,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:104,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:104,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:106,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:107,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:108,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:108,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:109,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:113,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:114,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:114,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:115,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:116,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:117,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:121,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:121,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:122,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:122,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:123,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:124,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 126
    functionName: test_module
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_create_module
    - CHECK_LOG_CTX
    - ly_in_free
    - lys_compile
    - lys_compile_unres_glob
    - assert_null
    - LY_ARRAY_COUNT
    - ly_in_new_memory
    - assert_ptr_equal
    - lys_compile_unres_glob_erase
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_module(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:139,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:139,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:140,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:148,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:148,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:149,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:157,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:157,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:158,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:171,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:171,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:172,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:180,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:180,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:188,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:188,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:189,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:196,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:196,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 201
    functionName: test_name_collisions
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_name_collisions(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:209,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:209,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:210,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:212,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:213,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:214,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:215,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:217,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:217,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:218,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:219,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:220,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:221,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:222,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:223,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:224,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:225,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:226,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 228
    functionName: test_node_container
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_true
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_node_container(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:240,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:240,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:247,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:248,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:249,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:250,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:251,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:251,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:252,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:254,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:255,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:256,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:258,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:259,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:260,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:261,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:262,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:266,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:266,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:267,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:268,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:269,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:270,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:273,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:273,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:276,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:277,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:278,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:279,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:280,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:280,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:281,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:281,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:282,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:283,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:283,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:284,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:285,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:286,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:287,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:288,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:289,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:289,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:290,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:290,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:291,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:292,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:295,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:295,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:297,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:298,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:299,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:301,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:301,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:304,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:304,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:308,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:308,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:311,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:312,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:313,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:316,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:316,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:320,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:320,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:323,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:323,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:325,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:326,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:327,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:328,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:328,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:329,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:329,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:331,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:333,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:333,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 65
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 337
    functionName: test_node_leaflist
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - realtype::plugin::print
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_node_leaflist(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:352,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:352,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:353,1
    - Dst: lys_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:353,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:354,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:356,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:357,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:358,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:359,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:360,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:361,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:362,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:363,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:364,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:365,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:367,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:368,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:369,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:370,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:372,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:372,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:378,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:379,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:380,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:381,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:382,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:383,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:384,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:384,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:385,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:385,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:386,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:387,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:388,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:389,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:390,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:390,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:391,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:392,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:393,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:394,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:396,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:396,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:399,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:400,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:401,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:402,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:403,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:406,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:406,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:409,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:410,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:411,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:412,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:413,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:414,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:415,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:416,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:417,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:418,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:419,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:420,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:421,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:422,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:425,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:425,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:426,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:428,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:428,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:430,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:432,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:432,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:434,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:436,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:436,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:438,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:440,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:440,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:442,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:444,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:444,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:446,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:448,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:448,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:450,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:452,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:452,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:454,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:456,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:456,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:458,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:460,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:460,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:462,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:464,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:464,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:466,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:468,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:468,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:470,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:472,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:472,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 88
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 475
    functionName: test_node_list
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_false
    - assert_null
    - LY_ARRAY_COUNT
    - assert_true
    - lys_parse
    - ly_in_new_memory
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_node_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:484,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:484,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:488,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:489,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:490,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:490,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:491,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:493,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:494,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:495,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:496,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:497,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:498,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:499,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:500,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:502,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:503,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:504,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:505,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:506,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:507,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:508,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:509,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:511,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:511,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:513,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:514,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:514,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:516,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:517,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:517,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:519,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:520,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:520,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:522,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:524,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:524,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:526,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:527,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:527,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:529,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:530,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:530,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 534
    functionName: test_node_choice
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - LY_ARRAY_COUNT
    - assert_ptr_equal
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_node_choice(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:542,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:542,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:545,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:546,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:547,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:549,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:549,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:552,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:553,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:554,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:557,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:557,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 536
    functionDepth: 1
    functionLinenumber: 536
    functionLinenumberEnd: 559
    functionName: test_node_anydata
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_node_anydata(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:567,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:567,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:570,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:571,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:572,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:573,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:574,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:576,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:576,1
    - Dst: lysc_node_actions
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:580,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:581,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:582,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:583,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:584,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:585,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:586,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:587,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:587,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:590,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:590,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:592,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:594,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:594,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:596,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:597,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:597,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:598,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:599,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:599,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:600,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:601,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:602,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:602,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:603,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:605,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:605,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:607,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:609,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:609,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:611,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:613,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:613,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 616
    functionName: test_action
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lysc_node_actions
    - CHECK_LOG_CTX
    - ly_ctx_set_module_imp_clb
    - assert_null
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_action(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:624,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:624,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:627,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:628,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:629,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:630,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:631,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:632,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:633,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:634,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:636,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:637,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:638,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:639,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:641,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:641,1
    - Dst: lysc_node_notifs
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:643,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:644,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:645,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:646,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:647,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:648,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:649,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:650,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:651,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:653,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:654,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:655,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:656,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:657,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:657,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:660,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:660,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:662,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:664,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:664,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:665,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:666,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:666,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:667,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:668,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:668,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:669,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:670,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:671,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:671,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:672,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:674,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:674,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:676,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:678,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:678,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:680,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:682,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:682,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 49
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 685
    functionName: test_notification
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_ctx_set_module_imp_clb
    - assert_null
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - lysc_node_notifs
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_notification(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:699,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:699,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:701,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:702,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:703,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:704,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:705,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:705,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:706,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:707,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:708,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:709,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:712,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:712,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:714,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:715,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:716,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:717,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:718,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:718,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:719,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:720,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:721,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:722,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:724,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:724,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:726,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:727,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:728,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:729,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:730,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:730,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:731,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:731,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:732,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:733,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:733,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:734,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:734,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:736,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:736,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:738,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:739,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:740,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:741,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:742,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:742,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:743,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:743,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:743,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:744,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:745,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:745,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:746,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:746,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:748,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:748,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:750,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:751,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:752,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:753,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:754,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:754,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:755,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:756,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:757,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:758,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:760,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:760,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:762,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:763,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:764,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:765,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:766,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:766,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:767,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:768,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:769,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:770,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:772,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:772,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:774,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:775,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:776,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:777,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:778,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:778,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:779,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:780,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:781,1
    - Dst: UINT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:781,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:782,1
    - Dst: UINT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:782,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:784,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:784,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:786,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:787,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:788,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:789,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:790,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:790,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:791,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:792,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:793,1
    - Dst: UINT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:793,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:794,1
    - Dst: UINT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:794,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:796,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:796,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:799,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:800,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:801,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:802,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:803,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:804,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:804,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:806,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:806,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:810,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:811,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:812,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:813,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:814,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:815,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:816,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:817,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:817,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:818,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 109
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 820
    functionName: test_type_range
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - INT64_C
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - UINT64_C
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_range(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:828,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:828,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:830,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:831,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:832,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:833,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:834,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:835,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:835,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:836,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:837,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:839,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:839,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:841,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:842,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:843,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:844,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:844,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:845,1
    - Dst: UINT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:845,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:846,1
    - Dst: UINT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:846,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:848,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:848,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:850,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:851,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:852,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:853,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:853,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:854,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:855,1
    - Dst: UINT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:855,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:857,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:857,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:859,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:860,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:861,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:862,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:862,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:863,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:864,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:866,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:866,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:868,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:869,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:870,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:871,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:871,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:872,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:873,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:875,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:875,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:877,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:878,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:879,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:880,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:880,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:881,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:882,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:883,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:884,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:886,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:886,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:888,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:889,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:890,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:891,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:891,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:892,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:893,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:894,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:895,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:897,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:897,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:900,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:901,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:902,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:903,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:903,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:904,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:905,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:907,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:907,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:910,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:911,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:912,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:913,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:913,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:914,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:915,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:917,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:917,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:920,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:921,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:922,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:923,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:923,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:924,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:925,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:926,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:927,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:929,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:929,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:932,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:933,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:934,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:935,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:936,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:936,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:937,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:938,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:940,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:941,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:942,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:943,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:944,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:944,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:945,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:946,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:950,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:950,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:953,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:954,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:955,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:956,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:957,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:958,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:958,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:959,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:960,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:962,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:962,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:965,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:966,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:967,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:968,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:969,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:970,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:970,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:971,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:972,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:976,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:976,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:977,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:978,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:978,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:979,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:980,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:980,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:981,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:982,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:982,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:983,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:984,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:984,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:985,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:986,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:986,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:987,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:988,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:988,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:989,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:990,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:990,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:991,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:992,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:992,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:993,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:994,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:994,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:995,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:996,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:996,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:997,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:998,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:998,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:999,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1001,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1001,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1003,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1004,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1004,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1006,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1007,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1007,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1009,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1010,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1010,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1012,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1013,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1013,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1015,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1016,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1016,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1018,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1019,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1019,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1021,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1023,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1023,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1024,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 166
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 1025
    functionName: test_type_length
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - UINT64_C
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_length(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1033,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1033,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1037,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1038,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1039,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1039,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1040,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1041,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1042,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1043,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1044,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1045,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1046,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1047,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1051,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1051,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1054,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1055,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1056,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1057,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1058,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1058,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1059,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1060,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1061,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1062,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1064,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1064,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1067,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1068,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1069,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1070,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1071,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1071,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1072,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1073,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1076,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1076,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1079,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1080,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1081,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1081,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1086
    functionName: test_type_pattern
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - assert_null
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_pattern(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1094,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1094,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1098,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1099,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1101,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1101,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1103,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1104,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1105,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1106,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1107,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1108,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1109,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1110,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1111,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1113,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1113,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1118,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1119,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1120,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1121,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1121,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1122,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1123,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1124,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1125,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1130,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1130,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1133,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1134,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1135,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1136,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1136,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1137,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1138,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1139,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1140,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1141,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1142,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1143,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1148,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1148,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1152,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1153,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1154,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1154,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1155,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1156,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1157,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1158,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1161,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1161,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1163,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1164,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1164,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1166,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1167,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1167,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1170,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1170,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1172,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1173,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1173,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1176,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1176,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1179,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1179,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1182,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1182,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1186,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1186,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1187,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1189,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1189,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1191,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1193,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1193,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1195,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1196,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1196,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1200,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1200,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1202,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1204,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1204,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1206,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1208,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1208,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 82
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1211
    functionName: test_type_enum
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_enum(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1221,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1221,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1226,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1227,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1228,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1228,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1229,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1230,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1231,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1232,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1233,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1234,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1236,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1237,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1238,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1240,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1240,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1245,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1246,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1247,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1247,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1248,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1249,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1250,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1251,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1252,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1257,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1257,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1259,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1262,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1262,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1264,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1265,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1265,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1267,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1268,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1268,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1270,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1271,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1271,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1273,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1274,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1274,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1276,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1278,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1278,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1279,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1281,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1281,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1283,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1285,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1285,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1287,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1288,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1288,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1289,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1291,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1291,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1292,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1294,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1294,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1296,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1299,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1299,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 55
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1213
    functionDepth: 1
    functionLinenumber: 1213
    functionLinenumberEnd: 1303
    functionName: test_type_bits
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_bits(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1311,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1311,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1314,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1315,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1316,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1317,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1319,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1319,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1320,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1320,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1320,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1321,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1323,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1323,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1326,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1327,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1328,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1329,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1330,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1331,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1331,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1332,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1333,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1334,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1335,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1336,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1337,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1339,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1339,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1342,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1343,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1344,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1345,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1346,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1346,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1347,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1348,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1351,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1351,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1352,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1353,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1353,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1354,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1355,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1355,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1356,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1358,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1358,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1359,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1361,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1361,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1362,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1364,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1364,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1366,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1368,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1368,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1370,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1372,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1372,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1374,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1376,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1376,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1378,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1380,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1380,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1382,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1383,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1383,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 56
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1305
    functionDepth: 1
    functionLinenumber: 1305
    functionLinenumberEnd: 1386
    functionName: test_type_dec64
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - INT64_C
    - lys_parse_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_dec64(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1394,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1394,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1398,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1399,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1400,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1403,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1404,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1405,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1408,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1409,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1410,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1413,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1413,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1414,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1416,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1416,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1388
    functionDepth: 1
    functionLinenumber: 1388
    functionLinenumberEnd: 1418
    functionName: test_type_instanceid
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_instanceid(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1426,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1426,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1430,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1431,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1432,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1433,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1433,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1434,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1437,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1438,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1439,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1440,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1440,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1441,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1442,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1444,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1444,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1447,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1448,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1449,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1450,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1450,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1451,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1452,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1455,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1455,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1456,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1458,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1458,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1460,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1462,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1462,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1464,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1466,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1466,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1468,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1470,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1470,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1472,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1474,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1474,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1475,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1477,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1477,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1420
    functionDepth: 1
    functionLinenumber: 1420
    functionLinenumberEnd: 1479
    functionName: test_type_identityref
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_identityref(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1491,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1491,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1491,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1494,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1494,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1494,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1497,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1497,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1497,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1500,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1500,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1500,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1503,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1503,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1503,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1507,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1507,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1507,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1509,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1512,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1512,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1512,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1514,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1515,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1516,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1517,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1518,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1519,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1522,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1522,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1526,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1527,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1528,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1529,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1529,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1530,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1531,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1532,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1534,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1535,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1536,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1537,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1537,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1538,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1539,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1540,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1542,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1542,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1546,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1547,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1548,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1549,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1550,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1550,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1551,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1552,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1553,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1556,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1556,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1560,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1561,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1562,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1563,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1564,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1564,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1565,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1566,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1567,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1569,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1570,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1571,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1572,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1573,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1573,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1574,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1577,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1577,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1580,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1581,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1582,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1583,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1584,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1584,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1585,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1586,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1587,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1602,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1602,1
    - Dst: lysc_node_child_p
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1607,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1608,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1609,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1610,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1611,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1613,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1613,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1614,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1615,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1617,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1617,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1622,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1623,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1624,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1625,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1626,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1626,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1627,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1628,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1631,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1631,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1633,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1635,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1635,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1638,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1639,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1640,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1641,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1642,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1642,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1643,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1644,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1645,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1647,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1648,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1648,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1652,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1653,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1654,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1655,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1656,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1656,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1657,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1658,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1659,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1662,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1662,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1666,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1667,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1668,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1669,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1670,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1671,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1672,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1673,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1674,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1677,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1677,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1679,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1680,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1680,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1682,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1683,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1683,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1685,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1686,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1686,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1689,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1690,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1690,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1692,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1693,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1693,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1695,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1696,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1696,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1698,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1699,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1699,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1701,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1702,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1702,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1704,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1705,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1705,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1707,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1709,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1709,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1711,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1712,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1712,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1714,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1716,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1716,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1721,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1723,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1723,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1728,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1730,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1730,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1735,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1737,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1737,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1742,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1744,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1744,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1749,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1751,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1751,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1756,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1758,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1758,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1763,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1765,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1765,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1770,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1772,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1772,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1777,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1779,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1779,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1784,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1786,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1786,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1791,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1793,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1793,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1798,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1800,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1800,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1805,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1807,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1807,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1812,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1814,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1814,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1819,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1821,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1821,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1823,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1825,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1825,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1828,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1831,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1831,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1836,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 188
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1837
      start: 1481
    functionDepth: 1
    functionLinenumber: 1481
    functionLinenumberEnd: 1837
    functionName: test_type_leafref
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - CHECK_LOG_CTX
    - strlen
    - lyxp_expr_free
    - ly_ctx_set_module_imp_clb
    - LY_ARRAY_COUNT
    - lysc_node_child_p
    - ly_ctx_get_module_implemented
    - assert_ptr_equal
    - ly_path_parse
    - lys_parse_mem
    - assert_int_equal
    - assert_string_equal
    - assert_ptr_not_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_leafref(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1844,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1844,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1846,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1848,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1848,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1839
    functionDepth: 1
    functionLinenumber: 1839
    functionLinenumberEnd: 1851
    functionName: test_type_empty
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_type_empty(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1859,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1859,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1863,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1864,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1865,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1866,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1867,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1867,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1868,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1869,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1871,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1871,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1875,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1876,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1877,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1878,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1879,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1879,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1880,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1881,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1882,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1884,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1884,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1890,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1891,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1892,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1893,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1894,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1894,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1895,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1896,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1897,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1898,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1899,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1902,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1902,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1904,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1906,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1906,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1907,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1909,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1909,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1911,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1913,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1913,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1915,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1917,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1917,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1919,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1920,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1920,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1922,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1923
      start: 1853
    functionDepth: 1
    functionLinenumber: 1853
    functionLinenumberEnd: 1923
    functionName: test_type_union
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_union(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1934,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1934,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1937,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1938,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1939,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1940,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1941,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1941,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1942,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1943,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1944,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1945,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1947,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1947,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1950,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1951,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1952,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1953,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1954,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1954,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1955,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1956,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1958,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1958,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1961,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1962,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1963,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1965,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1965,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1966,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1967,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1969,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1969,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1973,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1974,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1975,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1977,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1977,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1978,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1979,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1981,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1982,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1983,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1985,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1985,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1986,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1987,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1989,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1989,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1992,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1993,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1994,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1996,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1996,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1997,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:1998,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2001,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2001,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2004,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2005,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2006,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 62
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2008
      start: 1925
    functionDepth: 1
    functionLinenumber: 1925
    functionLinenumberEnd: 2008
    functionName: test_type_dflt
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - assert_null
    - LY_ARRAY_COUNT
    - struct lysc_node_leaf*::dflt::realtype::plugin::print
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_type_dflt(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2014,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2014,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2016,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2018,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2018,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2020,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2022,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2022,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2024,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2026,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2026,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 2010
    functionDepth: 1
    functionLinenumber: 2010
    functionLinenumberEnd: 2030
    functionName: test_status
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_status(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2037,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2037,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2039,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2043,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2043,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2046,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2049,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2049,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2051,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2053,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2053,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2032
    functionDepth: 1
    functionLinenumber: 2032
    functionLinenumberEnd: 2056
    functionName: test_grouping
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_grouping(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2068,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2070,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2070,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2073,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2074,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2075,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2076,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2077,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2078,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2079,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2080,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2081,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2082,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2083,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2084,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2086,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2087,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2087,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2088,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2091,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2092,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2093,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2093,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2094,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2095,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2096,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2097,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2098,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2101,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2103,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2104,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2105,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2108,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2108,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2111,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2112,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2114,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2115,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2116,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2117,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2119,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2119,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2121,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2122,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2122,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2123,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2124,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2124,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2125,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2127,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2127,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2129,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2131,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2132,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2133,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2134,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2135,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2136,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2138,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2138,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2140,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2142,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2143,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2144,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2145,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2146,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2147,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2150,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2150,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2154,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2154,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2156,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2158,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2160,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2161,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2162,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2163,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2166,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2167,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2168,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2172,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2172,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2175,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2177,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2179,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2180,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2180,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2184,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2184,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2185,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2187,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2187,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2191,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2193,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2193,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2194,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2196,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2196,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2200,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2200,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2202,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2204,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2204,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2206,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2207,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2207,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2209,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2211,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2211,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2214,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2216,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2216,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2219,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2221,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2221,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2224,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2226,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2226,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 112
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2230
      start: 2058
    functionDepth: 1
    functionLinenumber: 2058
    functionLinenumberEnd: 2230
    functionName: test_uses
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_ctx_set_module_imp_clb
    - assert_null
    - LY_ARRAY_COUNT
    - assert_true
    - assert_ptr_equal
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - lysc_node_child
    - assert_non_null
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_uses(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2250,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2250,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2251,1
    - Dst: lys_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2251,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2261,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2262,1
    - Dst: lys_parse
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2262,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2263,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2265,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2266,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2267,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2268,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2269,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2270,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2271,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2271,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2272,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2273,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2274,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2275,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2276,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2277,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2277,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2278,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2278,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2279,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2280,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2280,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2281,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2282,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2283,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2284,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2285,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2286,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2287,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2288,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2289,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2290,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2291,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2292,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2293,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2293,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2294,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2295,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2296,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2296,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2297,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2298,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2299,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2300,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2301,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2302,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2303,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2304,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2304,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2305,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2306,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2307,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2308,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2309,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2310,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2311,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2314,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2314,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2316,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2317,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2318,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2319,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2320,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2320,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2324,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2324,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2326,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2328,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2328,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2330,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2332,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2332,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2334,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2336,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2336,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2338,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2340,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2340,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2342,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2345,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2345,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2347,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2350,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2350,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2352,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2354,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2354,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2356,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2359,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2359,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2361,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2364,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2364,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2366,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2368,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2368,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2370,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2372,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2372,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2374,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2376,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2376,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2378,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2380,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2380,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 91
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2232
    functionDepth: 1
    functionLinenumber: 2232
    functionLinenumberEnd: 2384
    functionName: test_refine
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_false
    - LY_ARRAY_COUNT
    - realtype::plugin::print
    - assert_true
    - lys_parse
    - ly_in_new_memory
    - struct lysc_node_leaf*::dflt::realtype::plugin::print
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - ly_in_memory
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_refine(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2396,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2398,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2398,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2400,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2402,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2402,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2404,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2404,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2405,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2405,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2406,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2406,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2407,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2407,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2408,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2409,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2410,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2410,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2411,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2412,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2413,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2414,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2414,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2415,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2416,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2417,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2418,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2419,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2421,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2421,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2424,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2425,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2426,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2428,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2429,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2430,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2431,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2433,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2434,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2435,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2436,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2437,1
    - Dst: lysc_node_when
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2437,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2438,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2439,1
    - Dst: lysc_node_when
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2439,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2441,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2442,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2443,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2444,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2445,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2447,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2447,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2450,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2450,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2451,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2453,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2455,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2455,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2457,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2458,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2459,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2460,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2461,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2462,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2464,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2465,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2465,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2470,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2471,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2472,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2473,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2474,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2474,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2475,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2476,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2477,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2478,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2479,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2480,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2481,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2482,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2484,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2484,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2487,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2487,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2488,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2489,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2490,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2491,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2492,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2493,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2494,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2495,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2497,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2497,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2500,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2501,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2502,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2503,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2505,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2507,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2507,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2510,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2510,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2515,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2516,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2518,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2518,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2520,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2522,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2522,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2524,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2526,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2526,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2528,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2530,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2530,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2532,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2534,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2534,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2536,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2538,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2538,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2540,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2542,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2542,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2544,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2546,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2546,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2548,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2550,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2550,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 106
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2386
    functionDepth: 1
    functionLinenumber: 2386
    functionLinenumberEnd: 2554
    functionName: test_augment
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_ctx_set_module_imp_clb
    - assert_null
    - assert_true
    - ly_ctx_get_module_implemented
    - lysc_node_when
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - lysc_node_child
    - assert_non_null
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_augment(void **state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2567,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2573,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2573,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2583,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2583,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2584,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2585,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2586,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2586,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2587,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2588,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2589,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2590,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2591,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2592,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2593,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2594,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2595,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2596,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2597,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2598,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2599,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2601,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2601,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2606,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2607,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2608,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2609,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2610,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2611,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2612,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2613,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2614,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2616,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2616,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2621,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2622,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2623,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2623,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2624,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2625,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2626,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2627,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2627,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2628,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2629,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2630,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2631,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2633,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2639,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2639,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2644,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2644,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2645,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2646,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2647,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2648,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2649,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2650,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2651,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2652,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2652,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2653,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2653,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2654,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2655,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2656,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2656,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2657,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2658,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2659,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2660,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2660,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2661,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2661,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2662,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2664,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2664,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2670,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2670,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2671,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2672,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2673,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2674,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2675,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2676,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2677,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2678,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2678,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2679,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2680,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2681,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2681,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2682,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2682,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2683,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2684,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2684,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2685,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2686,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2686,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2687,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2688,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2689,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2690,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2690,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2691,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2692,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2694,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2694,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2695,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2695,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2696,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2697,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2697,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2698,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2698,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2699,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2700,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2700,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2701,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2703,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2703,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2706,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2706,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2707,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2708,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2709,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2710,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2711,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2712,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2713,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2714,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2714,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2715,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2717,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2721,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2721,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2726,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2726,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2727,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2728,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2729,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2729,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2730,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2730,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2731,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2732,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2733,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2733,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2734,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2735,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2736,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2737,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2739,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2739,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2743,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2744,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2745,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2746,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2747,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2748,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2749,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2749,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2750,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2751,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2752,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2753,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2754,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2756,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2756,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2760,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2761,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2762,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2763,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2764,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2765,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2766,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2766,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2767,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2768,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2770,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2770,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2775,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2776,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2777,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2778,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2778,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2779,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2780,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2781,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2782,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2782,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2784,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2784,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2789,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2790,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2791,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2792,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2793,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2794,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2795,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2796,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2798,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2798,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2807,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2808,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2809,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2810,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2811,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2812,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2813,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2814,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2815,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2816,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2817,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2818,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2819,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2820,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2821,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2822,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2824,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2824,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2828,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2829,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2830,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2831,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2831,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2832,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2833,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2834,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2835,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2836,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2837,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2837,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2838,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2838,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2839,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2840,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2843,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2843,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2846,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2846,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2849,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2850,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2851,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2851,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2852,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2853,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2854,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2854,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2855,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2856,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2857,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2858,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2860,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2860,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2865,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2866,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2867,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2868,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2869,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2870,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2872,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2872,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2876,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2877,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2878,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2879,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::print
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2879,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2880,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2882,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2885,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2887,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2887,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2891,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2891,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2892,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2893,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2894,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2895,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2897,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2897,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2900,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2904,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2904,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2907,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2907,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2911,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2912,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2913,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2915,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2919,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2919,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2925,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2925,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2926,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2926,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2927,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2928,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2931,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2931,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2933,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2942,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2942,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2945,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2945,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2947,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2948,1
    - Dst: lysc_node_child
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2948,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2949,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2950,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2952,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2952,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2954,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2956,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2956,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2959,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2961,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2961,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2963,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2965,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2965,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2967,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2968,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2968,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2970,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2972,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2972,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2974,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2975,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2975,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2977,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2978,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2978,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2980,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2983,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2983,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2985,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2986,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2986,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2988,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2991,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2991,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2993,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2994,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2994,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2996,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2997,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2997,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:2999,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3000,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3000,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3002,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3003,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3003,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3005,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3007,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3007,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3009,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3010,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3010,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3012,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3014,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3014,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3016,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3018,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3018,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3020,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3021,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3021,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3024,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3025,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3025,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3027,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3030,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3030,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3032,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3034,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3034,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3036,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3037,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3037,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3039,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3040,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3040,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3042,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3043,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3043,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3045,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3047,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3047,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3049,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3050,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3050,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3052,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3054,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3054,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3056,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3057,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3057,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3059,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3060,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3060,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3062,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3064,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3064,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3066,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3068,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3068,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3070,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3071,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3071,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3073,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3074,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3074,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3076,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3077,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3077,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3079,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3081,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3081,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3083,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3085,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3085,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3087,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3089,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3089,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3091,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3094,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3094,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3096,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3098,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3098,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3102,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3102,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3104,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3106,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3106,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3108,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3110,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3110,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3113,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3113,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3115,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3116,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3116,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3118,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3119,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3119,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3121,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3122,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3122,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3124,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3125,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3125,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3127,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3128,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3128,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3130,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3131,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3131,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3133,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3135,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3135,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3137,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3138,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3138,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3140,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3143,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3143,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3145,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3147,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3147,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3149,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3151,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3151,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3153,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3156,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3156,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3158,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3158,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 364
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3161
      start: 2556
    functionDepth: 1
    functionLinenumber: 2556
    functionLinenumberEnd: 3161
    functionName: test_deviation
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_false
    - ly_ctx_set_module_imp_clb
    - assert_null
    - LY_ARRAY_COUNT
    - realtype::plugin::print
    - assert_true
    - free
    - ly_ctx_get_module_implemented
    - struct lysc_node_leaf*::dflt::realtype::plugin::print
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - lysc_node_child
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_deviation(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3166,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3166,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3192,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3194,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3194,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3220,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3222,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3222,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3232,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3234,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3234,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3248,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3250,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3250,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3263,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3265,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3265,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3280,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3282,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3316
      start: 3163
    functionDepth: 1
    functionLinenumber: 3163
    functionLinenumberEnd: 3316
    functionName: test_when
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_when(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3322,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3323,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3324,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3325,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3326,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3327,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3328,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3329,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3330,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3331,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3332,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3333,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3334,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3335,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3336,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3337,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3338,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3339,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3340,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3341,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3342,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3343,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3344,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3345,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3346,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3347,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3348,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3349,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/schema/test_tree_schema_compile.c:3352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3353
      start: 3318
    functionDepth: 1
    functionLinenumber: 3318
    functionLinenumberEnd: 3353
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/schema/test_tree_schema_compile.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:517,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:517,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:519,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:520,1
    - Dst: lys_print_module
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:520,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:521,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:521,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:521,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:522,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 525
    functionName: test_module
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yin.c
    functionUses: 0
    functionsReached:
    - lys_print_module
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - assert_string_equal
    - assert_int_equal
    - ly_out_free
    - ly_out_new_memory
    linkageType: ''
    returnType: void
    signature: void test_module(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - UNUSED(mod_name)
    - UNUSED(mod_rev)
    - UNUSED(submod_name)
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 536
    functionName: test_imp_clb
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev),
      const char *UNUSED(submod_name),\n        const char *UNUSED(sub_rev), void
      *user_data, LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:579,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:579,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:581,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:583,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:584,1
    - Dst: lys_print_submodule
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:584,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:585,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:585,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:585,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:586,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 589
    functionName: test_submodule
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_ctx_set_module_imp_clb
    - UTEST_ADD_MODULE
    - ly_out_printed
    - assert_string_equal
    - assert_int_equal
    - ly_out_free
    - lys_print_submodule
    - ly_out_new_memory
    linkageType: ''
    returnType: void
    signature: void test_submodule(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:595,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:596,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/schema/test_printer_yin.c:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 600
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yin.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:32,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:32,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:43,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:43,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:44,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:46,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:46,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:47,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:48,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:48,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:49,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:50,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:50,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:51,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:52,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:52,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:53,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:54,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:54,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:55,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:56,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:56,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:57,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:58,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:58,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:59,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:61,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:61,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:62,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:63,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:63,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:64,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:65,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:65,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:66,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:67,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:67,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:69,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:69,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:70,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:71,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:71,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:72,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:73,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:73,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:74,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:75,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:75,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:76,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:77,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:77,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:78,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:79,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:79,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:80,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:81,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:81,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:82,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:83,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:83,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:84,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:85,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:85,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:86,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:87,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:87,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:89,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:89,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:90,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:91,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:91,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:94,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:94,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:95,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:96,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:96,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:97,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:99,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:99,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:100,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:102,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:102,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:103,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:104,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:104,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:105,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:106,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:106,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:107,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:109,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:109,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:110,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:112,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:112,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:113,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:114,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:116,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:116,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:117,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:117,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:118,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:119,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:119,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:121,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:121,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:122,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:122,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:123,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:124,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:124,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:126,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:126,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:127,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:127,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:128,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:129,1
    - Dst: lys_getnext
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:129,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 79
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 131
    functionName: test_getnext
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_common.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lys_getnext
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_getnext(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:136,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:136,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:137,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:138,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:138,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:139,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:140,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:140,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:141,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:142,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:142,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:143,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:144,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:144,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:145,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:146,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:146,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:147,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:148,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:148,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:149,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:150,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:150,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:152,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:152,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:153,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:155,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:155,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:156,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:156,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:157,1
    - Dst: lysp_check_date
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 158
    functionName: test_date
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_common.c
    functionUses: 0
    functionsReached:
    - assert_int_equal
    - lysp_check_date
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_date(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_sort_revisions
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:166,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:167,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:170,1
    - Dst: strcpy
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:171,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:172,1
    - Dst: strcpy
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:173,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:175,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:175,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:176,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:177,1
    - Dst: lysp_sort_revisions
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:179,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:180,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:181,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 184
    functionName: test_revisions
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_common.c
    functionUses: 0
    functionsReached:
    - lysp_sort_revisions
    - strcpy
    - LY_ARRAY_COUNT
    - assert_string_equal
    - assert_int_equal
    - LY_ARRAY_FREE
    - LY_ARRAY_NEW_RET
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_revisions(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:192,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:192,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:193,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:195,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:195,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:196,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:198,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:198,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:199,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:201,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:201,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:202,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:204,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:204,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:205,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:207,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:207,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:210,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:210,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:213,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:213,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:214,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:216,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:216,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:217,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:219,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:219,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:220,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:222,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:222,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:223,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:225,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:225,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:226,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:228,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:228,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:229,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:231,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:231,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:232,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:234,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:234,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:237,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:237,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:238,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:240,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:240,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:241,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:243,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:243,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:246,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:246,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:247,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:254,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:254,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:257,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:257,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:258,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:261,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:261,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:262,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:265,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:265,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:266,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:269,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:269,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:270,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:272,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:274,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:274,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:275,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:277,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:279,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:279,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:280,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:282,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:284,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:284,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 84
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 286
    functionName: test_typedef
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_common.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - assert_int_equal
    - ly_ctx_set_module_imp_clb
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_typedef(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:311,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:311,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:332,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:332,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:333,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:353,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:353,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:354,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:375,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:375,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:376,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:397,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:397,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:398,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:416,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:416,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:417,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:440,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:440,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:441,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:461,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:461,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:462,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:483,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:483,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:484,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:504,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:504,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:505,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:526,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:526,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:527,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:547,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:547,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:548,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:578,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:578,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:579,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:609,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:609,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:610,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:639,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:639,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 46
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 641
    functionName: test_accessible_tree
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_common.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_accessible_tree(void **state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:657,1
    - Dst: strcmp
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:658,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 7
    argNames:
    - mod_name
    - UNUSED(mod_rev)
    - submod_name
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 666
    functionName: module_clb
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_common.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR module_clb(const char *mod_name, const char *UNUSED(mod_rev),
      const char *submod_name,\n        const char *UNUSED(sub_rev), void *user_data,
      LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:681,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:682,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:683,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:684,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:684,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:685,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:696,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:697,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:698,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:699,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:715,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:716,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:717,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:718,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:718,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:719,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_schema_common.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 723
    functionName: test_includes
    functionSourceFile: /src/libyang/tests/utests/schema/test_schema_common.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_false
    - ly_ctx_set_module_imp_clb
    - assert_null
    - LY_ARRAY_COUNT
    - assert_true
    - ly_ctx_load_module
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_includes(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:65,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:65,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:67,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:68,1
    - Dst: lys_print_module
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:68,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:69,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:69,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:69,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:70,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:71,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:72,1
    - Dst: lys_print_module
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:72,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:73,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:73,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:73,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:74,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:75,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:107,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:108,1
    - Dst: lys_print_module
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:108,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:109,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:109,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:109,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:110,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:111,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:112,1
    - Dst: lys_print_module
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:113,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:113,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:113,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:114,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:115,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:138,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:139,1
    - Dst: lys_print_module
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:139,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:140,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:140,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:140,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:141,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:142,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:143,1
    - Dst: lys_print_module
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:143,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:144,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:144,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:144,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:145,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 148
    functionName: test_module
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yang.c
    functionUses: 0
    functionsReached:
    - lys_print_module
    - strlen
    - UTEST_ADD_MODULE
    - ly_out_printed
    - assert_string_equal
    - assert_int_equal
    - ly_out_reset
    - ly_out_free
    - ly_out_new_memory
    linkageType: ''
    returnType: void
    signature: void test_module(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - UNUSED(mod_name)
    - UNUSED(mod_rev)
    - UNUSED(submod_name)
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 159
    functionName: test_imp_clb
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev),
      const char *UNUSED(submod_name),\n        const char *UNUSED(sub_rev), void
      *user_data, LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:193,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:193,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:195,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:196,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:197,1
    - Dst: lys_print_submodule
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:197,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:198,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:198,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:198,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:199,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 203
    functionName: test_submodule
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yang.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_ctx_set_module_imp_clb
    - UTEST_ADD_MODULE
    - ly_out_printed
    - assert_string_equal
    - assert_int_equal
    - ly_out_free
    - lys_print_submodule
    - ly_out_new_memory
    linkageType: ''
    returnType: void
    signature: void test_submodule(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:209,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:210,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/schema/test_printer_yang.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 214
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/schema/test_printer_yang.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - NODE
    - ','
    - INSUBSTMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: TEST_1_CHECK_LYSP_EXT_INSTANCE
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_1_CHECK_LYSP_EXT_INSTANCE(NODE, INSUBSTMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:134,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:138,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 146
    functionName: setup_ctx
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: int
    signature: int setup_ctx(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_ctx
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 36
    functionsReached:
    - setup_ctx
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:161,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:162,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: teardown_ctx
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - lys_module_free
    - lyxml_ctx_free
    - free
    linkageType: ''
    returnType: int
    signature: int teardown_ctx(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: teardown_ctx
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 177
    functionName: teardown
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 21
    functionsReached:
    - teardown_ctx
    linkageType: ''
    returnType: int
    signature: int teardown(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:192,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:193,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:197,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:197,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:197,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:198,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:198,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:199,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:199,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:200,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:200,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:200,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:201,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:201,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:201,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:202,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:202,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:202,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:203,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:203,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:203,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:204,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:204,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:204,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:205,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:205,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:205,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:206,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:206,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:206,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:207,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:207,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:207,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:208,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:208,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:209,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:209,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:209,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:210,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:210,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:210,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:211,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:211,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:212,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:212,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:212,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:213,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:213,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:213,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:214,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:214,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:214,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:215,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:215,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:215,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:216,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:216,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:216,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:217,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:217,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:217,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:218,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:218,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:218,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:219,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:219,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:219,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:220,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:220,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:220,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:221,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:221,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:221,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:222,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:222,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:222,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:223,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:223,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:223,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:224,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:224,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:224,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:225,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:225,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:226,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:226,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:226,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:227,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:227,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:227,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:228,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:228,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:228,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:229,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:229,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:229,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:230,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:230,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:230,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:231,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:231,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:231,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:232,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:232,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:232,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:233,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:233,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:233,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:234,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:234,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:234,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:235,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:235,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:236,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:236,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:236,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:237,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:237,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:237,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:238,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:238,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:238,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:239,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:239,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:239,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:240,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:240,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:240,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:241,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:241,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:241,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:242,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:242,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:242,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:243,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:243,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:243,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:244,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:244,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:245,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:245,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:245,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:246,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:246,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:246,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:247,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:247,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:247,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:248,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:248,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:248,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:249,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:249,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:249,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:250,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:250,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:250,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:251,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:251,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:251,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:252,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:252,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:252,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:253,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:253,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:254,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:254,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:254,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:255,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:255,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:255,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:256,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:256,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:256,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:257,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:257,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:257,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:258,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:258,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:258,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:259,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:259,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:259,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:260,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:260,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:260,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:261,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:261,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:261,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:262,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:262,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:262,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:263,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:263,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:263,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:264,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:264,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:264,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:265,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:265,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:265,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:266,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:266,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 75
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 267
    functionName: test_yin_match_keyword
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - yin_match_keyword
    - ly_in_new_memory
    - assert_int_equal
    - lyxml_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_yin_match_keyword(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:272,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:272,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:273,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:273,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:274,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:274,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:275,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:275,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:276,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:276,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:277,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:277,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:278,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:278,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:279,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:279,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:280,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:280,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:281,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:281,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:282,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:282,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:283,1
    - Dst: yin_match_argument_name
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 284
    functionName: test_yin_match_argument_name
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_int_equal
    - yin_match_argument_name
    linkageType: ''
    returnType: void
    signature: void test_yin_match_argument_name(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:295,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:298,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:299,1
    - Dst: yin_parse_element_generic
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:301,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:302,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:303,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:306,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:309,1
    - Dst: lysp_ext_instance_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:310,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:314,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:315,1
    - Dst: yin_parse_element_generic
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:317,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:319,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:321,1
    - Dst: lysp_ext_instance_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 323
    functionName: test_yin_parse_element_generic
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - yin_parse_element_generic
    - memset
    - lysp_ext_instance_free
    - CHECK_LYSP_STMT
    - ly_in_new_memory
    - assert_int_equal
    - lyxml_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_yin_parse_element_generic(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:335,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:336,1
    - Dst: yin_parse_extension_instance
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:338,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:339,1
    - Dst: CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:340,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:342,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:345,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:348,1
    - Dst: lysp_ext_instance_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:349,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:350,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:355,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:356,1
    - Dst: yin_parse_extension_instance
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:358,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:359,1
    - Dst: CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:360,1
    - Dst: lysp_ext_instance_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:361,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:362,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:376,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:377,1
    - Dst: yin_parse_extension_instance
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:379,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:380,1
    - Dst: CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:382,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:387,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:391,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:395,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:399,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:404,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:408,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:413,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:418,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:423,1
    - Dst: CHECK_LYSP_STMT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:427,1
    - Dst: lysp_ext_instance_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:429,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:430,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:448,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:449,1
    - Dst: yin_parse_extension_instance
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:451,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:452,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:453,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:454,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:455,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:456,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:457,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:458,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:459,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:460,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:461,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:462,1
    - Dst: lysp_ext_instance_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:463,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 96
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 467
    functionName: test_yin_parse_extension_instance
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - yin_parse_extension_instance
    - assert_null
    - lysp_ext_instance_free
    - CHECK_LYSP_STMT
    - ly_in_new_memory
    - assert_string_equal
    - assert_int_equal
    - LY_ARRAY_FREE
    - lyxml_ctx_new
    - CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_yin_parse_extension_instance(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:516,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:517,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:518,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:519,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:520,1
    - Dst: yin_parse_content
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:542,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:543,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:545,1
    - Dst: CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:549,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:550,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:551,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:552,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:553,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:554,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:555,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:556,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:557,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:558,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:559,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:560,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:561,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:562,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:563,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:564,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:565,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:567,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:568,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:569,1
    - Dst: lysp_ext_instance_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:571,1
    - Dst: lysp_when_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:572,1
    - Dst: lysp_ext_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:573,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:574,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:575,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:576,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:577,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:578,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:579,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:580,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:581,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:582,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:583,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:584,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:585,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:586,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:587,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:588,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:589,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:590,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:591,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:604,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:605,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:606,1
    - Dst: yin_parse_content
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:608,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:609,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:610,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:611,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:612,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:624,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:625,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:626,1
    - Dst: yin_parse_content
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:628,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:629,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:630,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:631,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:638,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:639,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:640,1
    - Dst: yin_parse_content
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:642,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:643,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 77
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 645
    functionName: test_yin_parse_content
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSP_TYPE_ENUM
    - CHECK_LOG_CTX
    - lysp_ext_instance_free
    - assert_true
    - free
    - ly_in_new_memory
    - lysp_ext_free
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - yin_parse_content
    - CHECK_LYSP_RESTR
    - lysp_when_free
    - LY_ARRAY_FREE
    - lyxml_ctx_new
    - CHECK_LYSP_EXT_INSTANCE
    - lyxml_ctx_next
    linkageType: ''
    returnType: void
    signature: void test_yin_parse_content(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:653,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:654,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:660,1
    - Dst: yin_validate_value
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:660,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:661,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:665,1
    - Dst: yin_validate_value
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:665,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:669,1
    - Dst: yin_validate_value
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:669,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:670,1
    - Dst: yin_validate_value
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:670,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:674,1
    - Dst: yin_validate_value
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 647
    functionDepth: 1
    functionLinenumber: 647
    functionLinenumberEnd: 675
    functionName: test_validate_value
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_new_memory
    - assert_int_equal
    - lyxml_ctx_new
    - yin_validate_value
    linkageType: ''
    returnType: void
    signature: void test_validate_value(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:758,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:759,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:764,1
    - Dst: yin_parse_content
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:766,1
    - Dst: yin_match_keyword
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:766,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:769,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 5
    argNames:
    - state
    - data
    - dest
    - text
    - exts
    argTypes:
    - void**
    - char*
    - void*
    - char**
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 774
    functionName: test_element_helper
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - yin_match_keyword
    - ly_in_free
    - ly_in_new_memory
    - yin_parse_content
    - lyxml_ctx_new
    - lyxml_ctx_free
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR test_element_helper(void **state, const char *data, void *dest,
      const char **text, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:794,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:794,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:797,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:798,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:799,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:800,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:801,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:806,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:806,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:807,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:808,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 778
    functionDepth: 2
    functionLinenumber: 778
    functionLinenumberEnd: 810
    functionName: test_enum_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSP_TYPE_ENUM
    - memset
    - test_element_helper
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void test_enum_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:828,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:828,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:831,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:832,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:833,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:834,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:835,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:840,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:840,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:841,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:842,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 844
    functionName: test_bit_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSP_TYPE_ENUM
    - memset
    - test_element_helper
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void test_bit_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:857,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:857,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:858,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:859,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:861,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:862,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:863,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:871,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:871,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:872,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:873,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:874,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:875,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:883,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:883,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:884,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:885,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:886,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:888,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:895,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:895,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:896,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:897,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:898,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:900,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:907,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:907,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:908,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:909,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:911,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:918,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:918,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:919,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:925,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:925,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:926,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:927,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 931
    functionName: test_meta_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - lydict_remove
    - assert_int_equal
    - assert_string_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_meta_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:950,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:950,1
    - Dst: CHECK_LYSP_IMPORT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:951,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:953,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:954,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:963,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:963,1
    - Dst: CHECK_LYSP_IMPORT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:964,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:966,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:971,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:971,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:972,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:973,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:982,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:982,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:983,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:984,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:995,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:995,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:996,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 999
    functionName: test_import_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - CHECK_LYSP_IMPORT
    - test_element_helper
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_import_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1010,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1010,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1011,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1014,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1014,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1015,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1018,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1018,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1019,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1020,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1021,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1026,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1026,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1001
    functionDepth: 2
    functionLinenumber: 1001
    functionLinenumberEnd: 1029
    functionName: test_status_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_status_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1047,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1047,1
    - Dst: CHECK_LYSP_EXT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1048,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1049,1
    - Dst: lysp_ext_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1050,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1051,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1056,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1056,1
    - Dst: CHECK_LYSP_EXT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1057,1
    - Dst: lysp_ext_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1058,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1031
    functionDepth: 2
    functionLinenumber: 1031
    functionLinenumberEnd: 1061
    functionName: test_ext_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSP_EXT
    - test_element_helper
    - lysp_ext_free
    - assert_int_equal
    - LY_ARRAY_FREE
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_ext_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1071,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1071,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1072,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1075,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1075,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1076,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1077,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1078,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1081,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1081,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1082,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1083,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1063
    functionDepth: 2
    functionLinenumber: 1063
    functionLinenumberEnd: 1085
    functionName: test_yin_element_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_yin_element_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1096,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1096,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1097,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1100,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1100,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1101,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1102,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1107,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1107,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1087
    functionDepth: 2
    functionLinenumber: 1087
    functionLinenumberEnd: 1110
    functionName: test_yangversion_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_yangversion_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1121,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1121,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1122,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1126,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1126,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1127,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1128,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1129,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1132,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1132,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1112
    functionDepth: 2
    functionLinenumber: 1112
    functionLinenumberEnd: 1135
    functionName: test_mandatory_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_mandatory_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1153,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1153,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1154,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1155,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1156,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1157,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1168,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1168,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1169,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1170,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1137
    functionDepth: 2
    functionLinenumber: 1137
    functionLinenumberEnd: 1172
    functionName: test_argument_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_argument_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1188,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1188,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1189,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1190,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1191,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1193,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1194,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1202,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1202,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1203,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1204,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1205,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1206,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1208,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1174
    functionDepth: 2
    functionLinenumber: 1174
    functionLinenumberEnd: 1210
    functionName: test_base_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - LY_ARRAY_FREE
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_base_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1219,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1224,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1224,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1225,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1226,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1227,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1229,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1232,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1232,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1212
    functionDepth: 2
    functionLinenumber: 1212
    functionLinenumberEnd: 1234
    functionName: test_belongsto_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_insert
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_belongsto_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1244,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1244,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1245,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1246,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1247,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1252,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1252,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1257,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1257,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1236
    functionDepth: 2
    functionLinenumber: 1236
    functionLinenumberEnd: 1260
    functionName: test_config_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_config_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1270,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1270,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1271,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1272,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1273,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1275,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1279,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1279,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1281
    functionName: test_default_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_default_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1291,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1291,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1292,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1293,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1294,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1296,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1300,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1300,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1283
    functionDepth: 2
    functionLinenumber: 1283
    functionLinenumberEnd: 1302
    functionName: test_err_app_tag_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_err_app_tag_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1312,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1312,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1313,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1314,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1315,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1317,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1320,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1320,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1324,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1324,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1304
    functionDepth: 2
    functionLinenumber: 1304
    functionLinenumberEnd: 1326
    functionName: test_err_msg_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_err_msg_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1336,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1336,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1337,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1338,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1339,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1344,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1344,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1345,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1348,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1348,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1349,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1352,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1352,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1353,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1356,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1356,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1357,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1360,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1360,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1328
    functionDepth: 2
    functionLinenumber: 1328
    functionLinenumberEnd: 1362
    functionName: test_fracdigits_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_fracdigits_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1372,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1372,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1373,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1374,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1375,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1377,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1378,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1382,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1382,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1383,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1386
      start: 1364
    functionDepth: 2
    functionLinenumber: 1364
    functionLinenumberEnd: 1386
    functionName: test_iffeature_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - LY_ARRAY_FREE
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_iffeature_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1404,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1404,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1405,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1407,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1408,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1409,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1410,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1417,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1417,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1418,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1420,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1421,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1422,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1425,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1425,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1426,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1427,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1388
    functionDepth: 2
    functionLinenumber: 1388
    functionLinenumberEnd: 1429
    functionName: test_length_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - memset
    - test_element_helper
    - assert_true
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void test_length_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1438,1
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1438,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1440,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1440,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1441,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1442,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1443,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1445,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1447,1
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1447,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1449,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1449,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1450,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1431
    functionDepth: 2
    functionLinenumber: 1431
    functionLinenumberEnd: 1453
    functionName: test_modifier_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_insert
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_modifier_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1463,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1463,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1464,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1465,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1466,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1468,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1471,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1471,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1455
    functionDepth: 2
    functionLinenumber: 1455
    functionLinenumberEnd: 1473
    functionName: test_namespace_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_namespace_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1492,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1492,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1493,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1494,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1496,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1497,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1498,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1502,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1502,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1503,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1504,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1475
    functionDepth: 2
    functionLinenumber: 1475
    functionLinenumberEnd: 1506
    functionName: test_pattern_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - memset
    - test_element_helper
    - assert_true
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void test_pattern_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1516,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1516,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1517,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1518,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1519,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1520,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1523,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1523,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1524,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1525,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1528,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1528,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1529,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1530,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1533,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1533,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1534,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1535,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1539,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1539,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1540,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1541,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1542,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1543,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1546,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1546,1
    - Dst: CHECK_LYSP_TYPE_ENUM
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1547,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1548,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1552,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1552,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1553,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1556,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1556,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1557,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1560,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1560,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1561,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1565,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1565,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1566,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1569,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1569,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1570,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1573,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1573,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1574,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1577,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1577,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1508
    functionDepth: 2
    functionLinenumber: 1508
    functionLinenumberEnd: 1579
    functionName: test_value_position_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSP_TYPE_ENUM
    - CHECK_LOG_CTX
    - memset
    - test_element_helper
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_value_position_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1589,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1589,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1590,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1591,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1592,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1594,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1597,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1597,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1598,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1581
    functionDepth: 2
    functionLinenumber: 1581
    functionLinenumberEnd: 1600
    functionName: test_prefix_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_prefix_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1618,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1618,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1619,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1621,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1622,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1623,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1624,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1628,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1628,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1629,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1631,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1602
    functionDepth: 2
    functionLinenumber: 1602
    functionLinenumberEnd: 1633
    functionName: test_range_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - memset
    - test_element_helper
    - assert_true
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void test_range_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1642,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1642,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1643,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1644,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1645,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1646,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1647,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1650,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1650,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1651,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1652,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1653,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1656,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1656,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1657,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1635
    functionDepth: 2
    functionLinenumber: 1635
    functionLinenumberEnd: 1660
    functionName: test_reqinstance_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - memset
    - test_element_helper
    - assert_true
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void test_reqinstance_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1670,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1670,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1671,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1672,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1673,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1676,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1676,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1677,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1680,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1680,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1662
    functionDepth: 2
    functionLinenumber: 1662
    functionLinenumberEnd: 1682
    functionName: test_revision_date_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_revision_date_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1692,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1692,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1693,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1694,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1695,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1696,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1697,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1701,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1701,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1702,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1703,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1684
    functionDepth: 2
    functionLinenumber: 1684
    functionLinenumberEnd: 1706
    functionName: test_unique_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - LY_ARRAY_FREE
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_unique_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1716,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1716,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1717,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1718,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1719,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1720,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1724,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1724,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1725,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1708
    functionDepth: 2
    functionLinenumber: 1708
    functionLinenumberEnd: 1728
    functionName: test_units_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_units_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1743,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1743,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1744,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1745,1
    - Dst: lysp_when_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1746,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1747,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1751,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1751,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1752,1
    - Dst: lysp_when_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1753,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1730
    functionDepth: 2
    functionLinenumber: 1730
    functionLinenumberEnd: 1756
    functionName: test_when_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - CHECK_LYSP_WHEN
    - free
    - assert_int_equal
    - lysp_when_free
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_when_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1765,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1765,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1766,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1767,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1770,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1770,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1771,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1772,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1775,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1775,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1776,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1777,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1758
    functionDepth: 2
    functionLinenumber: 1758
    functionLinenumberEnd: 1778
    functionName: test_yin_text_value_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - assert_int_equal
    - lydict_remove
    - assert_string_equal
    linkageType: ''
    returnType: void
    signature: void test_yin_text_value_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1802,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1802,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1803,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1804,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1805,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1806,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1807,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1808,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1810,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1811,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1813,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1815,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1816,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1817,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1818,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1819,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1820,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1821,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1822,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1823,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1824,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1825,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1826,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1827,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1828,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1829,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1833,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1833,1
    - Dst: lysp_type_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1834,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1835,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1836
      start: 1780
    functionDepth: 2
    functionLinenumber: 1780
    functionLinenumberEnd: 1836
    functionName: test_type_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - memset
    - test_element_helper
    - assert_true
    - assert_string_equal
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void test_type_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1847,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1847,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1848,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1849,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1850,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1851,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1854,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1854,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1855,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1856,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1857,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1858,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1861,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1861,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1862,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1863,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1864,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1865,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1868,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1868,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1869,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1870,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1873,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1873,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1874,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1877,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1877,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1878,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1881,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1881,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1882,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1885,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1885,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1838
    functionDepth: 2
    functionLinenumber: 1838
    functionLinenumberEnd: 1887
    functionName: test_max_elems_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - CHECK_LYSP_NODE
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_max_elems_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1898,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1898,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1899,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1900,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1901,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1902,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1905,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1905,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1906,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1907,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1908,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1909,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1912,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1912,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1913,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1914,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1915,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1916,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1919,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1919,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1920,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1923,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1923,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1924,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1927,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1927,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1928,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1931,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1931,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1889
    functionDepth: 2
    functionLinenumber: 1889
    functionLinenumberEnd: 1933
    functionName: test_min_elems_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_min_elems_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1943,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1943,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1944,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1945,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1946,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1949,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1949,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1950,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1953,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1953,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1935
    functionDepth: 2
    functionLinenumber: 1935
    functionLinenumberEnd: 1956
    functionName: test_ordby_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_ordby_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1981,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1981,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1984,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1986,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1987,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1988,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:1989,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2006,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2006,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2009,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2011,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2012,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2013,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2014,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2020,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2020,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2022,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2023,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 1958
    functionDepth: 2
    functionLinenumber: 1958
    functionLinenumberEnd: 2026
    functionName: test_any_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_any_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2054,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2054,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2057,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2059,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2060,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2061,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2062,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2063,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2064,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2065,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2066,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2071,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2071,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2073,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2074,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2028
    functionDepth: 2
    functionLinenumber: 2028
    functionLinenumberEnd: 2077
    functionName: test_leaf_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_leaf_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2106,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2106,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2109,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2111,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2112,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2113,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2115,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2116,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2117,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2118,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2119,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2120,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2139,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2139,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2142,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2144,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2145,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2146,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2147,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2148,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2149,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2150,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2170,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2170,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2173,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2175,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2176,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2179,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2180,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2181,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2182,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2190,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2190,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2192,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2193,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2194,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2205,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2205,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2206,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2207,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2217,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2217,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2218,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2219,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2226,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2226,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2227,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2230
      start: 2079
    functionDepth: 2
    functionLinenumber: 2079
    functionLinenumberEnd: 2230
    functionName: test_leaf_list_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_leaf_list_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2240,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2240,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2241,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2242,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2243,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2247,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2247,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2248,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2249,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2252,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2252,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2254
      start: 2232
    functionDepth: 2
    functionLinenumber: 2232
    functionLinenumberEnd: 2254
    functionName: test_presence_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_presence_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2264,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2264,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2265,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2266,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2267,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2268,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2271,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2271,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2272,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2273,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2276,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2276,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2278
      start: 2256
    functionDepth: 2
    functionLinenumber: 2256
    functionLinenumberEnd: 2278
    functionName: test_key_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - lydict_remove
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_key_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2298,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2298,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2299,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2300,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2301,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2302,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2303,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2304,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2305,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2306,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2307,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2315,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2315,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2316,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2317,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2320
      start: 2280
    functionDepth: 2
    functionLinenumber: 2280
    functionLinenumberEnd: 2320
    functionName: test_typedef_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_typedef_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2344,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2344,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2345,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2346,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2347,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2348,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2349,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2350,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2351,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2352,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2353,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2354,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2355,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2356,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2357,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2362,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2362,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2363,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2366
      start: 2322
    functionDepth: 2
    functionLinenumber: 2322
    functionLinenumberEnd: 2366
    functionName: test_refine_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - test_element_helper
    - assert_true
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_refine_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2389,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2389,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2391,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2393,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2394,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2395,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2396,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2397,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2398,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2403,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2403,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2404,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2407
      start: 2368
    functionDepth: 2
    functionLinenumber: 2368
    functionLinenumberEnd: 2407
    functionName: test_uses_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_uses_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2423,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2423,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2424,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2425,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2426,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2427,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2428,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2433,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2433,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2434,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2435,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2440,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2440,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2441,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2442,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2444
      start: 2409
    functionDepth: 2
    functionLinenumber: 2409
    functionLinenumberEnd: 2444
    functionName: test_revision_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_revision_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2463,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2463,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2464,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2465,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2466,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2467,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2468,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2469,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2474,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2474,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2475,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2476,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2487,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2487,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2488,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2490,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2500,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2500,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2501,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2505
      start: 2446
    functionDepth: 2
    functionLinenumber: 2446
    functionLinenumberEnd: 2505
    functionName: test_include_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_include_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2544,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2544,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2546,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2547,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2548,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2549,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2550,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2551,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2552,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2553,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2554,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2555,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2556,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2557,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2558,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2559,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2560,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2561,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2562,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2565,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2567,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2568,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2569,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2570,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2571,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2572,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2573,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2574,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2575,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2576,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2577,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2578,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2579,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2580,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2585,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2585,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2587,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2591
      start: 2507
    functionDepth: 2
    functionLinenumber: 2507
    functionLinenumberEnd: 2591
    functionName: test_list_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: void test_list_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2622,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2622,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2623,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2624,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2625,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2626,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2627,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2628,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2629,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2630,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2631,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2632,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2633,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2634,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2635,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2636,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2637,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2638,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2639,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2640,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2641,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2642,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2643,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2644,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2645,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2646,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2647,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2648,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2649,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2650,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2651,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2656,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2656,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2657,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2660
      start: 2593
    functionDepth: 2
    functionLinenumber: 2593
    functionLinenumberEnd: 2660
    functionName: test_notification_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - test_element_helper
    - assert_true
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_notification_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2690,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2690,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2691,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2692,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2693,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2694,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2695,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2696,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2697,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2698,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2699,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2700,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2701,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2702,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2703,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2704,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2705,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2706,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2707,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2708,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2709,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2710,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2711,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2712,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2713,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2718,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2718,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2719,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2722
      start: 2662
    functionDepth: 2
    functionLinenumber: 2662
    functionLinenumberEnd: 2722
    functionName: test_grouping_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - test_element_helper
    - assert_true
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_grouping_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2759,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2759,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2763,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2765,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2766,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2768,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2769,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2770,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2771,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2772,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2773,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2774,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2775,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2776,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2777,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2778,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2779,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2780,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2781,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2782,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2783,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2784,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2785,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2786,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2787,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2788,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2789,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2790,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2791,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2792,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2793,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2798,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2798,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2800,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2804
      start: 2724
    functionDepth: 2
    functionLinenumber: 2724
    functionLinenumberEnd: 2804
    functionName: test_container_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: void test_container_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2834,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2834,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2838,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2840,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2841,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2842,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2843,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2844,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2845,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2846,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2847,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2848,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2849,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2850,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2851,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2852,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2853,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2854,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2855,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2856,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2857,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2858,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2859,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2860,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2865,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2865,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2867,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2871
      start: 2806
    functionDepth: 2
    functionLinenumber: 2806
    functionLinenumberEnd: 2871
    functionName: test_case_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_case_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2904,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2904,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2908,1
    - Dst: CHECK_LYSP_WHEN
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2910,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2911,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2912,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2913,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2914,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2915,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2916,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2917,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2918,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2919,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2920,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2921,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2922,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2923,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2924,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2925,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2926,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2927,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2928,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2929,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2930,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2935,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2935,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2937,1
    - Dst: CHECK_LYSP_NODE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2938,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2942
      start: 2873
    functionDepth: 2
    functionLinenumber: 2873
    functionLinenumberEnd: 2942
    functionName: test_choice_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - test_element_helper
    - CHECK_LYSP_WHEN
    - CHECK_LYSP_NODE
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_choice_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2969,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2969,1
    - Dst: CHECK_LYSP_ACTION_INOUT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2970,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2971,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2972,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2973,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2974,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2975,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2976,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2977,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2978,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2979,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2980,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2981,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2982,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2983,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2984,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2985,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2986,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2987,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2988,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2989,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2990,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2991,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2992,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:2993,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3013,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3013,1
    - Dst: CHECK_LYSP_ACTION_INOUT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3014,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3015,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3016,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3017,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3018,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3019,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3020,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3021,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3022,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3023,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3024,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3025,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3026,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3027,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3028,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3029,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3030,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3031,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3032,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3033,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3034,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3035,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3036,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3037,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3041,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3041,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3042,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3043,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3046,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3046,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3047,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3048,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3052,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3052,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3053,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3054,1
    - Dst: memset
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 68
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3056
      start: 2944
    functionDepth: 2
    functionLinenumber: 2944
    functionLinenumberEnd: 3056
    functionName: test_inout_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - lysp_node_free
    - memset
    - test_element_helper
    - assert_string_equal
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - CHECK_LYSP_ACTION_INOUT
    linkageType: ''
    returnType: void
    signature: void test_inout_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3083,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3083,1
    - Dst: CHECK_LYSP_ACTION
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3086,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3094,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3095,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3096,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3097,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3098,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3099,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3117,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3117,1
    - Dst: CHECK_LYSP_ACTION
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3119,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3127,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3128,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3129,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3130,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3131,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3132,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3133,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3138,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3138,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3139,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3142
      start: 3058
    functionDepth: 2
    functionLinenumber: 3058
    functionLinenumberEnd: 3142
    functionName: test_action_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSP_ACTION
    - lysp_node_free
    - test_element_helper
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_action_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3173,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3173,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3174,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3176,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3177,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3178,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3179,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3180,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3181,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3182,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3183,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3185,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3186,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3187,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3188,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3189,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3190,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3191,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3192,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3193,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3194,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3195,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3196,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3197,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3199,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3200,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3201,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3202,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3203,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3204,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3208,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3208,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3209,1
    - Dst: lysp_node_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3212
      start: 3144
    functionDepth: 2
    functionLinenumber: 3144
    functionLinenumberEnd: 3212
    functionName: test_augment_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - assert_null
    - lysp_node_free
    - test_element_helper
    - assert_true
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_augment_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3225,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3226,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3227,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3228,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3232,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3232,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3233,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3234,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3239,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3239,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3240,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3241,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3242,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3246,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3246,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3247,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3248,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3249,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3258,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3258,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3259,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3260,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3261,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3262,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3278,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3278,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3280,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3281,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3282,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3283,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3284,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3285,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3286,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3287,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3288,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3289,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3290,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3291,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3306,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3306,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3308,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3309,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3310,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3311,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3312,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3313,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3314,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3315,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3316,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3317,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3330,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3330,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3332,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3333,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3334,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3335,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3336,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3337,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3338,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3339,1
    - Dst: free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3345,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3345,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3346,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3351,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3351,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3352,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3357,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3357,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3358,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3363,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3363,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3364,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3373,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3373,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 95
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3375
      start: 3214
    functionDepth: 2
    functionLinenumber: 3214
    functionLinenumberEnd: 3375
    functionName: test_deviate_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - test_element_helper
    - assert_true
    - free
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lysp_deviate_free
    linkageType: ''
    returnType: void
    signature: void test_deviate_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3389,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3389,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3390,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3391,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3392,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3404,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3404,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3405,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3406,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3407,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3408,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3409,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3410,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3415,1
    - Dst: test_element_helper
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3415,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3416,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3419
      start: 3377
    functionDepth: 2
    functionLinenumber: 3377
    functionLinenumberEnd: 3419
    functionName: test_deviation_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - test_element_helper
    - FREE_ARRAY
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    linkageType: ''
    returnType: void
    signature: void test_deviation_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3426,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3427,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lys_yin_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3421
    functionDepth: 1
    functionLinenumber: 3421
    functionLinenumberEnd: 3433
    functionName: mod_renew
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 1
    functionsReached:
    - lys_module_free
    - calloc
    linkageType: ''
    returnType: struct lysp_module
    signature: 'struct lysp_module *

      mod_renew(struct lys_yin_parser_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3439,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3474,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3474,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3475,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3475,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3477,1
    - Dst: yin_parse_mod
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3477,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3478,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3479,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3480,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3481,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3482,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3483,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3484,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3485,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3486,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3487,1
    - Dst: CHECK_LYSP_IMPORT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3488,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3490,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3491,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3492,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3493,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3494,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3495,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3496,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3497,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3498,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3499,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3500,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3501,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3502,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3503,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3504,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3505,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3506,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3507,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3508,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3509,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3510,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3511,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3512,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3513,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3514,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3515,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3516,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3517,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3520,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3521,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3522,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3528,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3528,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3529,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3529,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3530,1
    - Dst: yin_parse_mod
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3530,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3531,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3534,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3535,1
    - Dst: mod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3536,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3543,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3543,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3544,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3544,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3545,1
    - Dst: yin_parse_mod
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3545,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3547
      start: 3435
    functionDepth: 1
    functionLinenumber: 3435
    functionLinenumberEnd: 3547
    functionName: test_module_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_null
    - CHECK_LYSP_IMPORT
    - mod_renew
    - yin_parse_mod
    - ly_in_new_memory
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lyxml_ctx_new
    - lyxml_ctx_free
    linkageType: ''
    returnType: void
    signature: void test_module_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3554,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3555,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3556,1
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - belongs_to
    argTypes:
    - struct lys_yin_parser_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3562
      start: 3549
    functionDepth: 1
    functionLinenumber: 3549
    functionLinenumberEnd: 3562
    functionName: submod_renew
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 1
    functionsReached:
    - lys_module_free
    - lydict_insert
    - calloc
    linkageType: ''
    returnType: struct lysp_submodule
    signature: 'struct lysp_submodule *

      submod_renew(struct lys_yin_parser_ctx *ctx, const char *belongs_to)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3568,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3604,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3604,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3605,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3605,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3607,1
    - Dst: yin_parse_submod
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3607,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3608,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3609,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3610,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3611,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3612,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3613,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3614,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3615,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3616,1
    - Dst: CHECK_LYSP_IMPORT
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3617,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3619,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3620,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3621,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3622,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3623,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3624,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3625,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3626,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3627,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3628,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3629,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3630,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3631,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3632,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3633,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3634,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3635,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3636,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3637,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3638,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3639,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3640,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3641,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3642,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3643,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3644,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3645,1
    - Dst: TEST_1_CHECK_LYSP_EXT_INSTANCE
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3646,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3649,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3650,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3651,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3656,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3656,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3657,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3657,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3658,1
    - Dst: yin_parse_submod
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3658,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3659,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3660,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3663,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3664,1
    - Dst: submod_renew
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3665,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3671,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3671,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3672,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3672,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3673,1
    - Dst: yin_parse_submod
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3673,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3675
      start: 3564
    functionDepth: 1
    functionLinenumber: 3564
    functionLinenumberEnd: 3675
    functionName: test_submodule_elem
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - yin_parse_submod
    - assert_null
    - CHECK_LYSP_IMPORT
    - submod_renew
    - ly_in_new_memory
    - assert_string_equal
    - assert_int_equal
    - TEST_1_CHECK_LYSP_EXT_INSTANCE
    - lyxml_ctx_new
    - lyxml_ctx_free
    linkageType: ''
    returnType: void
    signature: void test_submodule_elem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3686,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3709,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3709,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3710,1
    - Dst: yin_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3710,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3711,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3712,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3713,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3714,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3715,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3716,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3720,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3750,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3750,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3751,1
    - Dst: yin_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3751,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3752,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3753,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3754,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3755,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3759,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3766,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3766,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3767,1
    - Dst: yin_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3767,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3768,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3769,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3770,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3771,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3775,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3779,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3779,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3780,1
    - Dst: yin_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3780,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3781,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3782,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3783,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3784,1
    - Dst: calloc
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3786,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3794,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3794,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3795,1
    - Dst: yin_parse_module
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3795,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3796,1
    - Dst: lys_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3797,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3798,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 56
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3802
      start: 3677
    functionDepth: 1
    functionLinenumber: 3677
    functionLinenumberEnd: 3802
    functionName: test_yin_parse_module
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_null
    - yin_parser_ctx_free
    - ly_in_new_memory
    - lys_compile_unres_glob_erase
    - assert_string_equal
    - assert_int_equal
    - lys_module_free
    - yin_parse_module
    - calloc
    linkageType: ''
    returnType: void
    signature: void test_yin_parse_module(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3812,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3838,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3838,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3839,1
    - Dst: yin_parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3839,1
    - Dst: lysp_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3840,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3841,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3842,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3853,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3853,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3854,1
    - Dst: yin_parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3854,1
    - Dst: lysp_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3855,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3856,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3857,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3864,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3864,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3865,1
    - Dst: yin_parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3865,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3866,1
    - Dst: lysp_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3867,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3868,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3869,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3886,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3886,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3887,1
    - Dst: yin_parse_submodule
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3887,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3888,1
    - Dst: lysp_module_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3889,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3890,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3894
      start: 3804
    functionDepth: 1
    functionLinenumber: 3804
    functionLinenumberEnd: 3894
    functionName: test_yin_parse_submodule
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - yin_parser_ctx_free
    - ly_in_new_memory
    - assert_int_equal
    - lydict_insert
    - lysp_module_free
    - yin_parse_submodule
    linkageType: ''
    returnType: void
    signature: void test_yin_parse_submodule(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3901,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3902,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3903,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3904,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3905,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3907,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3908,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3909,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3910,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3911,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3912,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3913,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3914,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3915,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3916,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3917,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3918,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3919,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3920,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3921,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3922,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3923,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3924,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3925,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3926,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3927,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3928,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3929,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3930,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3931,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3932,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3933,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3934,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3935,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3936,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3937,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3938,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3939,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3940,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3941,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3942,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3943,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3944,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3945,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3946,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3947,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3948,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3949,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3950,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3951,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3952,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3953,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3954,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3955,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3956,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3957,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3958,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3959,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3960,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3961,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3962,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3963,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3964,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3965,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3967,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3968,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/schema/test_parser_yin.c:3971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3972
      start: 3896
    functionDepth: 1
    functionLinenumber: 3896
    functionLinenumberEnd: 3972
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/schema/test_parser_yin.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_unit_test_setup_teardown
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT
    - ','
    - MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: LYD_TREE_CREATE
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_TREE_CREATE(INPUT, MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 40
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: TEST_SUCCESS_XML
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_XML(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 68
    functionName: TEST_SUCCESS_JSON
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_JSON(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: TEST_ERROR_XML
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_XML(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 84
    functionName: TEST_ERROR_JSON
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_JSON(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:94,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:95,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:96,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:98,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:99,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:101,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:104,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:105,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:107,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:108,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:109,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:112,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:113,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:114,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:116,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:117,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:119,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:120,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:123,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:124,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:125,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:127,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:128,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:130,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:131,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:132,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:133,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:134,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:136,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:137,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:138,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:141,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:142,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:143,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:145,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:146,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:148,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:149,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:150,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:152,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:153,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:154,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:157,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:158,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:159,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:161,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:162,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:164,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:165,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:166,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:167,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:168,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:170,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:172,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:173,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:174,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:177,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:178,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:179,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:181,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:182,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:185,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:186,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:188,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:189,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:190,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:193,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:194,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:195,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:197,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:198,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:200,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:201,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:202,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:204,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:205,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:206,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:209,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:210,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:211,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:213,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:214,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:216,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:217,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:218,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:220,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:221,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:222,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:225,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:226,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:227,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:231,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:232,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:233,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:237,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:238,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:239,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:243,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:244,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:245,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:251,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:256,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:257,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:259,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:260,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:262,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:263,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:264,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:265,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:266,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:267,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:268,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:270,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:271,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:274,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:279,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:280,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:282,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:283,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:285,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:286,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:287,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:289,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:290,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:291,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:294,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:299,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:300,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:302,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:303,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:305,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:306,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:307,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:309,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:310,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:311,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:314,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:319,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:320,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:322,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:323,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:325,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:326,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:327,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:329,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:330,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:331,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:334,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:341,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:342,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:344,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:345,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:347,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:348,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:349,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:350,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:351,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:352,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:353,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:355,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:356,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:357,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:360,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:363,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:364,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:368,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:371,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:372,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:376,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:379,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:380,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:384,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:387,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:388,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:392,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:395,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:396,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:402,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:407,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:408,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:410,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:411,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:412,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:414,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:415,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:416,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:417,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:418,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:420,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:421,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:422,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:425,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:427,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:428,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:430,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:431,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:432,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:434,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:435,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:436,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:437,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:438,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:440,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:441,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:442,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:445,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:450,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:451,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:455,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:460,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:461,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:465,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:470,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:471,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:475,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:478,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:479,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:483,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:488,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:489,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:491,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:492,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:493,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:495,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:496,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:499,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:504,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:505,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:507,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:508,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:509,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:511,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:512,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:515,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:520,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:521,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:523,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:524,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:525,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:527,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:528,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:529,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:530,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:531,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:533,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:534,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:535,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:538,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:543,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:544,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:548,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:553,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:554,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:558,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:563,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:564,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:568,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:573,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:574,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:576,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:577,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:578,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:580,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:581,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:584,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:589,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:590,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:592,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:593,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:594,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:596,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:597,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:600,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:605,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:606,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:608,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:609,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:610,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:612,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:613,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:616,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:621,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:622,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:626,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:631,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:632,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:636,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:641,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 351
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 644
    functionName: test_schema_yang
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_NUM
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - CHECK_LYSP_NODE_LEAF
    - UTEST_ADD_MODULE
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - CHECK_LYSP_TYPE
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - CHECK_LYSC_RANGE
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yang(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:656,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:657,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:658,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:660,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:661,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:664,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:665,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:668,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:672,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:673,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:675,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:676,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:678,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:679,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:680,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:682,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:683,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:684,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:687,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:691,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:692,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:694,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:695,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:697,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:698,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:699,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:700,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:701,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:703,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:704,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:705,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:708,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:712,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:713,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:715,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:716,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:718,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:719,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:720,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:721,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:722,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:723,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:724,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:726,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:727,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:728,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:731,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:735,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:736,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:740,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:744,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:745,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:749,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:753,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:754,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:758,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:763,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:764,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:766,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:767,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:769,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:770,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:771,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:772,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:773,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:775,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:776,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:779,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:785,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:786,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:788,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:789,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:791,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:792,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:793,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:794,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:795,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:797,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:798,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:799,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:802,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:809,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:810,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:814,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:821,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:822,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:826,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:831,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:832,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:834,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:835,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:836,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/int8.c:838,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:839,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:840,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:841,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:842,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:844,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:845,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/int8.c:846,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:849,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:854,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:855,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:859,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:864,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:865,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:869,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:878,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:879,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:883,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:888,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:889,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:891,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:892,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:893,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:895,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:896,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:899,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:904,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:905,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:907,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:908,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:909,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:911,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:912,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:915,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:920,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:921,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:925,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:930,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:931,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:935,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:940,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:941,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:945,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:950,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:951,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:953,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:954,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:955,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:957,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:958,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:961,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:966,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:967,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:969,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/int8.c:970,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:971,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/int8.c:973,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/int8.c:974,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:977,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:982,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:983,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:987,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:992,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 186
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 995
    functionName: test_schema_yin
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_NUM
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - CHECK_LYSP_NODE_LEAF
    - UTEST_ADD_MODULE
    - CHECK_LYD_VALUE
    - CHECK_LYSP_TYPE
    - assert_int_equal
    - CHECK_LYSP_RESTR
    - CHECK_LYSC_RANGE
    - MODULE_CREATE_YIN
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1005,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:1008,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1020,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:1021,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1022,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/int8.c:1022,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1023,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/int8.c:1024,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1027,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:1037,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1048,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:1049,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1050,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/int8.c:1050,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1051,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/int8.c:1052,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1055,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:1058,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1067,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:1068,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1069,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/int8.c:1069,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1070,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/int8.c:1071,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1074,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/int8.c:1078,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1083,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:1084,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1085,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/int8.c:1085,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1086,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/int8.c:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 997
    functionDepth: 1
    functionLinenumber: 997
    functionLinenumberEnd: 1088
    functionName: test_schema_print
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lys_print_mem
    - free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - MODULE_CREATE_YIN
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_schema_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1101,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1102,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1104,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1105,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1106,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1107,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1108,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1109,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1110,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1112,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1113,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1115,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1116,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1118,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1119,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1121,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1122,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1125,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1126,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1127,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1128,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1129,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1130,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1131,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1132,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1134,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/int8.c:1135,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1136,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1137,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1139,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1140,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1142,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1143,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/int8.c:1145,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1146,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1152,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1157,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1159,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/int8.c:1161,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/int8.c:1163,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1165,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1168,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1170,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/int8.c:1172,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/int8.c:1174,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1177
    functionName: test_data_xml
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - CHECK_LYD_NODE_TERM
    - lyd_free_all
    - UTEST_ADD_MODULE
    - TEST_ERROR_XML
    - CHECK_LYSC_NODE
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - TEST_SUCCESS_XML
    linkageType: ''
    returnType: void
    signature: void test_data_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1190,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1191,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1193,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1194,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1195,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1196,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1197,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1198,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1199,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1201,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1202,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1204,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1205,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1207,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1208,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1210,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1211,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1214,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1215,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1216,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1217,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1218,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1219,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1220,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1221,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1223,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1224,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1225,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1226,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1227,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1229,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1230,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1232,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1233,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/int8.c:1235,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1236,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1242,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1247,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1249,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/int8.c:1251,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/int8.c:1253,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1255,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1258,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1260,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/int8.c:1262,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/int8.c:1264,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 54
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1179
    functionDepth: 1
    functionLinenumber: 1179
    functionLinenumberEnd: 1268
    functionName: test_data_json
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - CHECK_LYD_NODE_TERM
    - lyd_free_all
    - UTEST_ADD_MODULE
    - TEST_ERROR_JSON
    - CHECK_LYSC_NODE
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - TEST_SUCCESS_JSON
    linkageType: ''
    returnType: void
    signature: void test_data_json(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1275,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1276,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/types/int8.c:1288,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/types/int8.c:1289,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1290,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/types/int8.c:1290,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:1291,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1292,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1293,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/int8.c:1293,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/types/int8.c:1294,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1295,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1296,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1297,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/types/int8.c:1304,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/types/int8.c:1306,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1307,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/int8.c:1307,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1310,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1311,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1312,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1321,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/int8.c:1322,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1334,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1338,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/types/int8.c:1339,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/types/int8.c:1340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1341,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/types/int8.c:1341,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/int8.c:1342,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1343,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1344,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/int8.c:1344,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/types/int8.c:1345,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1346,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1348,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1350
    functionName: test_diff
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_diff_apply_all
    - LYD_TREE_CREATE
    - CHECK_LYD
    - MODULE_CREATE_YANG
    - lyd_diff_siblings
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_diff(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1355,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1358,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/types/int8.c:1363,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1367,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/int8.c:1371,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/int8.c:1373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1352
    functionDepth: 1
    functionLinenumber: 1352
    functionLinenumberEnd: 1374
    functionName: test_print
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - MODULE_CREATE_YANG
    - CHECK_LYD_STRING_PARAM
    linkageType: ''
    returnType: void
    signature: void test_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/int8.c:1383,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1391,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1392,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1396,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1403,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1403,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1403,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1405,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1406,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1407,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1410,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1410,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1410,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1412,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1413,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1414,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1417,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1417,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1419,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1420,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1421,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1422,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1425,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1425,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1427,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1428,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1429,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1430,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1433,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1433,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1435,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1436,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1437,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1438,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1441,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1441,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1443,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1444,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1445,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1446,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1449,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1449,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1451,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1452,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1453,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1454,1
    - Dst: malloc
      Src: /src/libyang/tests/utests/types/int8.c:1461,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1461,1
    - Dst: memcpy
      Src: /src/libyang/tests/utests/types/int8.c:1463,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1463,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1464,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1464,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1467,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1468,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1469,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1475,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1475,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1477,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1484,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1484,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1486,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/int8.c:1487,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1491,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1493,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/int8.c:1494,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1498,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1498,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1500,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/int8.c:1501,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1505,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1505,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1507,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/int8.c:1508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 78
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1376
    functionDepth: 1
    functionLinenumber: 1376
    functionLinenumberEnd: 1509
    functionName: test_plugin_store
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - malloc
    - struct lyplg_type*::free
    - ly_err_free
    - assert_ptr_equal
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - struct lyplg_type*::store
    - lyplg_find
    - memcpy
    linkageType: ''
    returnType: void
    signature: void test_plugin_store(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/int8.c:1517,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1529,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1534,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1539,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1539,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1541,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1547,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1547,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1548,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1548,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1549,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1549,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1550,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1550,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1551,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1551,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1552,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1552,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/int8.c:1559,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1559,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1561,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1562,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1562,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1563,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1563,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1564,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/int8.c:1571,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1571,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1573,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1574,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1574,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1575,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1575,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1576,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/int8.c:1583,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1583,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1585,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1586,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1586,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1587,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/int8.c:1587,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1588,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1511
    functionDepth: 2
    functionLinenumber: 1511
    functionLinenumberEnd: 1594
    functionName: test_plugin_compare
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - MODULE_CREATE_YANG
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::compare
    - struct lysc_type*::plugin::store
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_compare(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/int8.c:1602,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1610,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1611,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1616,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1616,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1618,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1624,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/int8.c:1624,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1625,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/int8.c:1625,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1626,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/int8.c:1626,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1627,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/int8.c:1627,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1628,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/int8.c:1628,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/int8.c:1629,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/int8.c:1629,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1632,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1596
    functionDepth: 1
    functionLinenumber: 1596
    functionLinenumberEnd: 1634
    functionName: test_plugin_print
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::print
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/int8.c:1642,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1650,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1651,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/int8.c:1654,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/int8.c:1659,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/int8.c:1664,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/int8.c:1664,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1666,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1672,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/int8.c:1672,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1673,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1674,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1675,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1677,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/int8.c:1677,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1678,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1679,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1680,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1682,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/int8.c:1682,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1683,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1684,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1685,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1687,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/int8.c:1687,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1688,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1689,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1690,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1692,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/int8.c:1692,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1693,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1694,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1695,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1697,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/int8.c:1697,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/int8.c:1698,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/int8.c:1699,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1700,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/int8.c:1703,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/int8.c:1703,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/int8.c:1706,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1636
    functionDepth: 1
    functionLinenumber: 1636
    functionLinenumberEnd: 1708
    functionName: test_plugin_dup
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - assert_ptr_equal
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::duplicate
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_dup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1714,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1715,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1716,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1717,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1718,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1719,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1720,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1722,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1723,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1724,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/int8.c:1725,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/types/int8.c:1728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1710
    functionDepth: 1
    functionLinenumber: 1710
    functionLinenumberEnd: 1729
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/types/int8.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 29
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/types/binary.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/binary.c:38,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/binary.c:44,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/binary.c:45,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/binary.c:49,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:54,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:54,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:54,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:56,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:56,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:57,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:58,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:60,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:60,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:60,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:62,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:62,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:63,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:64,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:69,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:69,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:69,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:71,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:71,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:72,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:73,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:75,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:75,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:75,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:77,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:77,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:78,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:79,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:84,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:84,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:84,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:86,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:86,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:87,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:88,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:90,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:90,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:90,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:92,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:92,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:93,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:94,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:100,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:100,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:100,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:102,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:103,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:104,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:106,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:106,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/binary.c:108,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/binary.c:109,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/binary.c:110,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:117,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:117,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:119,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/binary.c:120,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/binary.c:121,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/binary.c:125,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/binary.c:125,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/binary.c:127,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/binary.c:128,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/binary.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 58
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 130
    functionName: test_plugin_store
    functionSourceFile: /src/libyang/tests/utests/types/binary.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - ly_err_free
    - assert_ptr_equal
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - struct lyplg_type*::store
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_store(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/binary.c:136,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/types/binary.c:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/types/binary.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 32
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/types/inet_types.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/types/inet_types.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODE_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: TEST_SUCCESS_XML
    functionSourceFile: /src/libyang/tests/utests/types/inet_types.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_XML(MOD_NAME, NODE_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/inet_types.c:59,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/inet_types.c:67,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:70,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:71,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:72,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:75,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:78,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:79,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:82,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:85,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:86,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:87,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:90,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:91,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:94,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:95,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:96,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/inet_types.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 98
    functionName: test_data_xml
    functionSourceFile: /src/libyang/tests/utests/types/inet_types.c
    functionUses: 0
    functionsReached:
    - MODULE_CREATE_YANG
    - TEST_SUCCESS_XML
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: void
    signature: void test_data_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/inet_types.c:104,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/types/inet_types.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/types/inet_types.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: TEST_SUCCESS_XML
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_XML(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: TEST_SUCCESS_JSON
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_JSON(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: TEST_ERROR_XML
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_XML(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: TEST_ERROR_JSON
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_JSON(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:92,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:93,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:94,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:96,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/string.c:97,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:99,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:100,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:103,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:106,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:107,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:109,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:110,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:113,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/types/string.c:114,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:116,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:117,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:118,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:121,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:124,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:125,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:127,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:128,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:130,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:131,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:132,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:133,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:134,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:136,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:137,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:138,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:141,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:144,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:145,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:147,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:148,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:150,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:152,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:153,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:154,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:155,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:156,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:158,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:159,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:160,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:163,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:168,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:169,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:171,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:172,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:174,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:176,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:178,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:180,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:181,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:182,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:185,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:186,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:187,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:190,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:191,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:192,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:195,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:196,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:197,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:200,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:205,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:206,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:212,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:215,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:216,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:218,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:219,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:221,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:223,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:224,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:225,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:227,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:231,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:232,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:234,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:235,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:237,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:239,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:241,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:242,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:243,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:244,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:246,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:253,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:254,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:256,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:257,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:259,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:261,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:263,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:265,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:266,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:267,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:272,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:275,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:276,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:279,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:288,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:289,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:291,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:292,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:294,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:296,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:297,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:298,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:299,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:300,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:302,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:303,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:306,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:313,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:314,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:316,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:317,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:319,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:322,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:323,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:325,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:326,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 165
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 329
    functionName: test_schema_yang
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_NUM
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - CHECK_LYSP_NODE_LEAF
    - CHECK_LYSC_TYPE_STR
    - UTEST_ADD_MODULE
    - assert_true
    - MODULE_CREATE_YANG
    - CHECK_LYSP_TYPE
    - assert_int_equal
    - CHECK_LYSC_PATTERN
    - CHECK_LYSP_RESTR
    - CHECK_LYSC_RANGE
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yang(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:342,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:343,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:344,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:346,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/types/string.c:347,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:349,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:350,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:353,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:356,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:357,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:359,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:360,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:362,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:363,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/types/string.c:364,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:366,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:367,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:368,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:371,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:374,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:375,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:377,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:378,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:380,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:381,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:382,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:383,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:384,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:386,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:387,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:388,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:391,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:394,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:395,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:397,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:398,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:400,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:401,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:402,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:403,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:404,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:405,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:406,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:408,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:409,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:410,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:413,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:420,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:421,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:423,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:424,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:426,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:427,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:428,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:429,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:430,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:432,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:433,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:434,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:437,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:439,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:440,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:443,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:446,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:447,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:450,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:453,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:454,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:457,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:461,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:462,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:468,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:471,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:472,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:474,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:475,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:477,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:479,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:480,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:481,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:483,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:487,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:488,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:490,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:491,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:493,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:495,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:497,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:498,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:499,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:500,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:502,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:509,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:510,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:512,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:513,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:515,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:517,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:519,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:521,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:522,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/types/string.c:523,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:528,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:532,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:533,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:539,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:548,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:549,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:551,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:552,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/types/string.c:554,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:556,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:557,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:558,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:559,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:560,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:562,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:563,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:565,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:572,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:573,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:575,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/types/string.c:576,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/types/string.c:577,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:578,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:579,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:580,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:581,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/string.c:583,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/string.c:584,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:586,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:594,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:596,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:604,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:606,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/string.c:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 169
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 614
    functionName: test_schema_yin
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_NUM
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - CHECK_LYSP_NODE_LEAF
    - CHECK_LYSC_TYPE_STR
    - UTEST_ADD_MODULE
    - assert_true
    - CHECK_LYSP_TYPE
    - assert_int_equal
    - CHECK_LYSC_PATTERN
    - CHECK_LYSP_RESTR
    - CHECK_LYSC_RANGE
    - MODULE_CREATE_YIN
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:624,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:630,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:642,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:643,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:644,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/string.c:644,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/string.c:645,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/string.c:646,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:649,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/string.c:660,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:672,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:673,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:674,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/string.c:674,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/string.c:675,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/string.c:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 677
    functionName: test_schema_print
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lys_print_mem
    - free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - MODULE_CREATE_YIN
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_schema_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:689,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:690,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:692,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:694,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:695,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:697,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:698,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:699,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:700,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:701,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:702,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:704,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:705,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:706,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:707,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:708,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:718,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:719,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:721,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:722,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:723,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:724,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:727,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:732,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:734,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:735,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:736,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:737,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:740,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:741,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:743,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:744,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:748,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:753,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:755,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/string.c:757,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/string.c:759,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:761,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:764,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:766,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/string.c:768,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/string.c:770,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:772,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:775,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:776,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:777,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:778,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:781,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:785,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/string.c:786,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:787,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:788,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:790,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:791,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:795,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:798,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:799,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:800,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/string.c:802,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 805
    functionName: test_data_xml
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - CHECK_LYD_NODE_TERM
    - lyd_free_all
    - UTEST_ADD_MODULE
    - TEST_ERROR_XML
    - CHECK_LYSC_NODE
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - TEST_SUCCESS_XML
    linkageType: ''
    returnType: void
    signature: void test_data_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:817,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:818,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:819,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:821,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:823,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:824,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:826,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:827,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:828,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:829,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:830,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:831,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:833,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:834,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:835,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:836,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:839,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:840,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:843,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:844,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:846,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:847,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:849,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:850,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:852,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:853,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:856,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:861,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:863,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:864,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:865,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:868,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:869,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:871,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:872,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:876,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:881,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:883,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/string.c:885,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/string.c:887,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:889,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:892,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:894,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/string.c:896,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/string.c:898,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:900,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:903,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:907,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/string.c:908,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:909,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:910,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:912,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:913,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:917,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:920,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:921,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:922,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/string.c:924,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 66
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 927
    functionName: test_data_json
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - CHECK_LYD_NODE_TERM
    - lyd_free_all
    - UTEST_ADD_MODULE
    - TEST_ERROR_JSON
    - CHECK_LYSC_NODE
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - TEST_SUCCESS_JSON
    linkageType: ''
    returnType: void
    signature: void test_data_json(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:935,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:936,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:947,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:948,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:949,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/types/string.c:949,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:950,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/string.c:951,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:952,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/string.c:952,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/types/string.c:953,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:954,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:955,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:956,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:964,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:966,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:967,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/string.c:967,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/string.c:970,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:971,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:972,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:979,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/string.c:980,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:990,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:994,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:995,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:996,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:997,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/types/string.c:997,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/string.c:998,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/string.c:999,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1000,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/string.c:1000,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/types/string.c:1001,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:1002,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:1004,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 1006
    functionName: test_diff
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_diff_apply_all
    - CHECK_LYD
    - MODULE_CREATE_YANG
    - lyd_diff_siblings
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_diff(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:1014,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:1015,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/string.c:1020,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/string.c:1025,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/string.c:1030,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/string.c:1032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1033
    functionName: test_print
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - UTEST_ADD_MODULE
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    linkageType: ''
    returnType: void
    signature: void test_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/string.c:1044,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:1051,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:1053,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/string.c:1057,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1061,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1061,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1061,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1063,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1064,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1065,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1068,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1068,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1068,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1070,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1071,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1072,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1075,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1075,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1075,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1077,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1078,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1079,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1082,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1082,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1084,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1085,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1086,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1089,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1089,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1089,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1091,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1092,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1093,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1100,1
    - Dst: malloc
      Src: /src/libyang/tests/utests/types/string.c:1101,1
    - Dst: memcpy
      Src: /src/libyang/tests/utests/types/string.c:1102,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1104,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1107,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1108,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1109,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1116,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1116,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1118,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/string.c:1119,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1125,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1125,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1127,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/string.c:1128,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1132,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1132,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1134,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/string.c:1135,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1139,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1139,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1141,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/string.c:1142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1144
    functionName: test_plugin_store
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - malloc
    - struct lyplg_type*::free
    - ly_err_free
    - assert_ptr_equal
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - struct lyplg_type*::store
    - lyplg_find
    - memcpy
    linkageType: ''
    returnType: void
    signature: void test_plugin_store(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/string.c:1152,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:1163,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:1168,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1175,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1181,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1182,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1182,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1183,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1183,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1184,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1185,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1185,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1186,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1186,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/string.c:1191,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1191,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1193,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1194,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1194,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1195,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1195,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1196,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/string.c:1201,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1201,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1203,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1204,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1204,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1205,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1205,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1206,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/string.c:1211,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1213,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1214,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1214,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1215,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/string.c:1215,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1216,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1220,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1222
    functionName: test_plugin_compare
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - MODULE_CREATE_YANG
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::compare
    - struct lysc_type*::plugin::store
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_compare(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/string.c:1230,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:1235,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:1237,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1244,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1246,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/string.c:1252,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/string.c:1252,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/string.c:1253,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/string.c:1253,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/string.c:1254,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/string.c:1254,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/string.c:1255,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/string.c:1255,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1260
    functionName: test_plugin_print
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::print
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/string.c:1269,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:1275,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:1276,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/string.c:1279,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/string.c:1284,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/string.c:1291,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/string.c:1291,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1293,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1299,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/string.c:1299,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1300,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1301,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1302,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1304,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/string.c:1304,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1305,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1306,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1307,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1309,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/string.c:1309,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1310,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1311,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1314,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/string.c:1314,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/string.c:1315,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/string.c:1316,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1317,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/string.c:1320,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/string.c:1320,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/string.c:1323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1262
    functionDepth: 1
    functionLinenumber: 1262
    functionLinenumberEnd: 1325
    functionName: test_plugin_dup
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - assert_ptr_equal
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::duplicate
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_dup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1331,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1332,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1333,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1334,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1335,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1336,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1337,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1339,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1340,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1341,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/string.c:1342,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/types/string.c:1345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1327
    functionDepth: 1
    functionLinenumber: 1327
    functionLinenumberEnd: 1346
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/types/string.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: TEST_SUCCESS_XML
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_XML(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: TEST_SUCCESS_JSON
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_JSON(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: TEST_ERROR_XML
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_XML(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: TEST_ERROR_JSON
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_JSON(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:90,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:92,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:93,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:95,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:97,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:98,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:99,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:100,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:101,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:102,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:104,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:105,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:107,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:109,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:110,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:112,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:114,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:115,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:116,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:117,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:118,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:120,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:121,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:124,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:127,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:128,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:130,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:132,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:133,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:134,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:135,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:136,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:138,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:139,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:141,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:145,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:146,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:148,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:150,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:151,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:152,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:154,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:155,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:161,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:165,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:166,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:170,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:174,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:175,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:179,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:182,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:183,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:187,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:190,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:191,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:194,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:197,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:198,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:202,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:205,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:206,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:209,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:212,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:213,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:217,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:220,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:221,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:224,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:227,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:228,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:231,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:232,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:233,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:237,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:240,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:241,1
    - Dst: lys_feature_value
      Src: /src/libyang/tests/utests/types/bits.c:241,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:242,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:244,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:246,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:247,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:248,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:249,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:251,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:252,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:255,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:260,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:261,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:263,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:265,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:266,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:267,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:268,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:269,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:271,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 114
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 273
    functionName: test_schema_yang
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - CHECK_LYSP_NODE_LEAF
    - CHECK_LYSC_TYPE_BITENUM_ITEM
    - UTEST_ADD_MODULE
    - MODULE_CREATE_YANG
    - CHECK_LYSC_TYPE_BITS
    - CHECK_LYSP_TYPE
    - assert_int_equal
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    - lys_feature_value
    linkageType: ''
    returnType: void
    signature: void test_schema_yang(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:284,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:291,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:292,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:294,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:296,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:297,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:298,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:299,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:300,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:301,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:303,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:304,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:306,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:311,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:312,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:314,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:316,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:317,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:318,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:319,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:320,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:322,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:323,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:326,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:333,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:334,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:336,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:338,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:339,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:340,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:341,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:342,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:344,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:345,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:347,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:356,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:357,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:359,1
    - Dst: CHECK_LYSC_TYPE_BITS
      Src: /src/libyang/tests/utests/types/bits.c:361,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:362,1
    - Dst: CHECK_LYSC_TYPE_BITENUM_ITEM
      Src: /src/libyang/tests/utests/types/bits.c:363,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/types/bits.c:365,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/types/bits.c:366,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:372,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:381,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:382,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:386,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:398,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:399,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:403,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:408,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:409,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:413,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:418,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:419,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:422,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:427,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:428,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:431,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:436,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:437,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:440,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:445,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:446,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:449,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:454,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:455,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:459,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:464,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 83
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 467
    functionName: test_schema_yin
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - CHECK_LYSP_NODE_LEAF
    - CHECK_LYSC_TYPE_BITENUM_ITEM
    - UTEST_ADD_MODULE
    - CHECK_LYSC_TYPE_BITS
    - CHECK_LYSP_TYPE
    - MODULE_CREATE_YIN
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:477,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:483,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:505,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:506,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:507,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/bits.c:507,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:508,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/bits.c:509,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:512,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/types/bits.c:535,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:557,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:558,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:559,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/types/bits.c:559,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:560,1
    - Dst: free
      Src: /src/libyang/tests/utests/types/bits.c:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 562
    functionName: test_schema_print
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lys_print_mem
    - free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - MODULE_CREATE_YIN
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_schema_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:573,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:577,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/bits.c:579,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/bits.c:580,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/bits.c:581,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/bits.c:582,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/bits.c:583,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/bits.c:585,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/bits.c:586,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/bits.c:588,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:589,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/bits.c:591,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:592,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/bits.c:594,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:595,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:600,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/types/bits.c:601,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/types/bits.c:602,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 605
    functionName: test_data_xml
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - CHECK_LYD_NODE_TERM
    - lyd_free_all
    - UTEST_ADD_MODULE
    - TEST_ERROR_XML
    - CHECK_LYSC_NODE
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - TEST_SUCCESS_XML
    linkageType: ''
    returnType: void
    signature: void test_data_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:615,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:619,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/bits.c:621,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/bits.c:622,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/bits.c:623,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/bits.c:624,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/bits.c:625,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/bits.c:627,1
    - Dst: TEST_SUCCESS_JSON
      Src: /src/libyang/tests/utests/types/bits.c:628,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/bits.c:630,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:631,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/bits.c:633,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:634,1
    - Dst: TEST_ERROR_JSON
      Src: /src/libyang/tests/utests/types/bits.c:636,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/bits.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 639
    functionName: test_data_json
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - TEST_ERROR_JSON
    - MODULE_CREATE_YANG
    - TEST_SUCCESS_JSON
    linkageType: ''
    returnType: void
    signature: void test_data_json(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:652,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:654,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:661,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:662,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:663,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/types/bits.c:663,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/types/bits.c:664,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:665,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:666,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/bits.c:666,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/types/bits.c:667,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:668,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:669,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:670,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:676,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:678,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:679,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/bits.c:679,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:682,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:683,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:684,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:690,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:692,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:693,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/types/bits.c:693,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:696,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:697,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 700
    functionName: test_diff
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_diff_apply_all
    - CHECK_LYD
    - MODULE_CREATE_YANG
    - lyd_diff_siblings
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_diff(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:710,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:712,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:716,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:719,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:722,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:724,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:728,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:731,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:734,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:736,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:740,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:743,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/bits.c:746,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/types/bits.c:748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 702
    functionDepth: 1
    functionLinenumber: 702
    functionLinenumberEnd: 749
    functionName: test_print
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - UTEST_ADD_MODULE
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    linkageType: ''
    returnType: void
    signature: void test_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/bits.c:758,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:766,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:768,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:772,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:777,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:777,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:777,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:779,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:780,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:781,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:784,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:784,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:784,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:786,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:787,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:788,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:791,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:791,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:791,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:793,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:794,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:795,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:798,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:798,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:800,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:801,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:802,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:803,1
    - Dst: malloc
      Src: /src/libyang/tests/utests/types/bits.c:810,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:810,1
    - Dst: memcpy
      Src: /src/libyang/tests/utests/types/bits.c:811,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:811,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:812,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:812,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:815,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:816,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:817,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:823,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:823,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:825,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/bits.c:826,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:833,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:833,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:835,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/bits.c:836,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:840,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:840,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:842,1
    - Dst: ly_err_free
      Src: /src/libyang/tests/utests/types/bits.c:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 844
    functionName: test_plugin_store
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - malloc
    - struct lyplg_type*::free
    - ly_err_free
    - assert_ptr_equal
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - struct lyplg_type*::store
    - lyplg_find
    - memcpy
    linkageType: ''
    returnType: void
    signature: void test_plugin_store(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/bits.c:852,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:864,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:870,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:875,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:875,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:877,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:883,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:883,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:884,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:884,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:885,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:885,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:886,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:886,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:887,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:887,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:888,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:888,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:889,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:889,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/bits.c:896,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:896,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:898,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:899,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:899,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:900,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:900,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:901,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/bits.c:908,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:908,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:910,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:911,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:911,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:912,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:912,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:913,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/tests/utests/types/bits.c:920,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:920,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:922,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:923,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:923,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:924,1
    - Dst: struct lyplg_type*::compare
      Src: /src/libyang/tests/utests/types/bits.c:924,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:925,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:929,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 931
    functionName: test_plugin_compare
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - MODULE_CREATE_YANG
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::compare
    - struct lysc_type*::plugin::store
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_compare(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/bits.c:939,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:947,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:950,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:955,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:955,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:957,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:963,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/bits.c:963,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:964,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/bits.c:964,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:965,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/bits.c:965,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:966,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/bits.c:966,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:967,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/bits.c:967,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/types/bits.c:968,1
    - Dst: struct lyplg_type*::print
      Src: /src/libyang/tests/utests/types/bits.c:968,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:971,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 973
    functionName: test_plugin_print
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::print
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/types/bits.c:981,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/bits.c:989,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/bits.c:992,1
    - Dst: struct lyplg_type*::store
      Src: /src/libyang/tests/utests/types/bits.c:997,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/types/bits.c:997,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:999,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:1005,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/bits.c:1005,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:1006,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:1007,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:1008,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:1010,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/bits.c:1010,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:1011,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:1012,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:1013,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:1015,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/bits.c:1015,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:1016,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:1017,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:1018,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:1020,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/bits.c:1020,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:1021,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:1022,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:1023,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:1025,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/bits.c:1025,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:1026,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:1027,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:1028,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:1030,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/bits.c:1030,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/types/bits.c:1031,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/types/bits.c:1032,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:1033,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/types/bits.c:1036,1
    - Dst: struct lyplg_type*::duplicate
      Src: /src/libyang/tests/utests/types/bits.c:1036,1
    - Dst: struct lyplg_type*::free
      Src: /src/libyang/tests/utests/types/bits.c:1039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 1041
    functionName: test_plugin_dup
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 0
    functionsReached:
    - strlen
    - UTEST_ADD_MODULE
    - struct lyplg_type*::free
    - assert_ptr_equal
    - CHECK_LYD_VALUE
    - MODULE_CREATE_YANG
    - assert_int_equal
    - struct lyplg_type*::store
    - struct lyplg_type*::duplicate
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_plugin_dup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1047,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1048,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1049,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1050,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1051,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1052,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1053,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1055,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1056,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1057,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/bits.c:1058,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/types/bits.c:1061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1062
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/types/bits.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 33
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/types/yang_types.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 44
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/types/yang_types.c
    functionUses: 32
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODE_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: TEST_SUCCESS_XML
    functionSourceFile: /src/libyang/tests/utests/types/yang_types.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_XML(MOD_NAME, NODE_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODE_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: TEST_ERROR_XML
    functionSourceFile: /src/libyang/tests/utests/types/yang_types.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_XML(MOD_NAME, NODE_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/yang_types.c:68,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/yang_types.c:71,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:74,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:75,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:76,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:79,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:80,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:83,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:85,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/yang_types.c:86,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:91,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:92,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:96,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:98,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/yang_types.c:99,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/types/yang_types.c:100,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/types/yang_types.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 105
    functionName: test_data_xml
    functionSourceFile: /src/libyang/tests/utests/types/yang_types.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - TEST_ERROR_XML
    - MODULE_CREATE_YANG
    - TEST_SUCCESS_XML
    linkageType: ''
    returnType: void
    signature: void test_data_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/types/yang_types.c:110,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/types/yang_types.c:114,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/yang_types.c:118,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/yang_types.c:122,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/yang_types.c:126,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/types/yang_types.c:128,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/types/yang_types.c:132,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/yang_types.c:136,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/types/yang_types.c:140,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/types/yang_types.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 143
    functionName: test_print
    functionSourceFile: /src/libyang/tests/utests/types/yang_types.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lyd_free_tree
    - MODULE_CREATE_YANG
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    linkageType: ''
    returnType: void
    signature: void test_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/yang_types.c:149,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/types/yang_types.c:150,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/types/yang_types.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 154
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/types/yang_types.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT
    - ','
    - MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: LYD_TREE_CREATE
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_TREE_CREATE(INPUT, MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 39
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:56,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:63,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:65,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:68,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:70,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:72,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:74,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:82,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:84,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:87,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:89,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:91,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:96,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:98,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:101,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:103,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:106,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:113,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:115,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:118,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:120,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:122,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:129,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:131,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:134,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:136,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:138,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:140,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:149,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:151,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:154,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:156,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:158,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:160,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:163,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:171,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:172,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:175,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:183,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:184,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:187,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:195,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:196,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:199,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:207,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:208,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:211,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:218,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:219,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:222,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:228,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:230,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:233,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:235,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:237,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:239,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:247,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:249,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:252,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:254,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:256,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:258,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:266,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:268,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:271,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:273,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:275,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:277,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:285,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:286,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:289,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:297,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:298,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:301,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:309,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:311,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:314,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:316,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:318,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:320,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:326,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:328,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:331,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:333,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:335,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:337,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:347,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:349,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:352,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:354,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 138
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 358
    functionName: test_schema_yang
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 0
    functionsReached:
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - CHECK_LYSC_NODE_LIST
    - CHECK_LYSC_NODE
    - MODULE_CREATE_YANG
    linkageType: ''
    returnType: void
    signature: void test_schema_yang(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:368,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:375,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:377,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:380,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:382,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:384,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:386,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:392,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:393,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:396,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:406,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:408,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:411,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:413,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:415,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:423,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:425,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:428,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:430,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:433,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:443,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:445,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:448,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:450,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:452,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:460,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:462,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:465,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:467,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:469,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:471,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:481,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:483,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:486,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:488,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:490,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:492,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:495,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:502,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:503,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:506,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:515,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:516,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:519,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:528,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:529,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:532,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:541,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:542,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:545,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:553,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:554,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:557,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:564,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:566,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:569,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:571,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:573,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:575,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:584,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:586,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:589,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:591,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:593,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:595,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:604,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:606,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:609,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:611,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:613,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:615,1
    - Dst: UTEST_INVALID_MODULE
      Src: /src/libyang/tests/utests/node/list.c:624,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:625,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:628,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:637,1
    - Dst: CHECK_LYSC_NODE_LIST
      Src: /src/libyang/tests/utests/node/list.c:639,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:642,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:644,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/node/list.c:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 118
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 648
    functionName: test_schema_yin
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 0
    functionsReached:
    - UTEST_INVALID_MODULE
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - CHECK_LYSC_NODE_LIST
    - CHECK_LYSC_NODE
    - MODULE_CREATE_YIN
    linkageType: ''
    returnType: void
    signature: void test_schema_yin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:658,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:668,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:685,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/node/list.c:686,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:687,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/node/list.c:687,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:688,1
    - Dst: free
      Src: /src/libyang/tests/utests/node/list.c:689,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:692,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/node/list.c:708,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:725,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/node/list.c:726,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:727,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/node/list.c:727,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:728,1
    - Dst: free
      Src: /src/libyang/tests/utests/node/list.c:729,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:732,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:739,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/node/list.c:740,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:741,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/node/list.c:741,1
    - Dst: free
      Src: /src/libyang/tests/utests/node/list.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 743
    functionName: test_schema_print
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lys_print_mem
    - free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - MODULE_CREATE_YIN
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_schema_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:753,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:760,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:775,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:777,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:779,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:780,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:782,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:783,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:785,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:786,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:789,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:791,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:792,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:794,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:795,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:797,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:798,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:799,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:814,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:816,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:818,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:819,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:821,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:822,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:824,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:825,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:828,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:830,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:831,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:833,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:834,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:836,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:837,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:838,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:852,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:853,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:854,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:869,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:870,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:871,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:875,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:881,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:894,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:896,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:898,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:899,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:901,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:902,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:904,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:905,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:908,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:910,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:911,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:913,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:914,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:916,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:917,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:918,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:932,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:933,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:934,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:938,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:947,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:964,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:966,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:968,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:969,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:971,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:972,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:974,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:975,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:978,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:980,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:981,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:983,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:984,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:986,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:987,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:990,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:992,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:993,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:995,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:996,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:998,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:999,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1000,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1028,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1030,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1032,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1034,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1036,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1038,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1039,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1053,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1054,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:1055,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1089,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1090,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:1091,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:1095,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:1105,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1110,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1112,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 158
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 745
    functionDepth: 1
    functionLinenumber: 745
    functionLinenumberEnd: 1114
    functionName: test_xml
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 0
    functionsReached:
    - CHECK_LYD_NODE_TERM
    - CHECK_LOG_CTX
    - CHECK_LYD_NODE_INNER
    - lyd_free_all
    - assert_null
    - UTEST_ADD_MODULE
    - MODULE_CREATE_YANG
    - assert_string_equal
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:1124,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:1131,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1140,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1142,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1144,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1145,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1147,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1148,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1150,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1151,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1154,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1156,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1157,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1159,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1160,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1162,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1163,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1164,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1174,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1176,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1178,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1179,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1181,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1182,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1184,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1185,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1188,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1190,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1191,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1193,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1194,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1196,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1197,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1198,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1205,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1206,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:1207,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1215,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1216,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:1217,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:1221,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:1227,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1233,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1235,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1237,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1238,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1240,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1241,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1243,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1244,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1247,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1249,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1250,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1252,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1253,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1255,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1256,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1257,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1265,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1266,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:1267,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:1271,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:1280,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1288,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1290,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1292,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1293,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1295,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1296,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1298,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1299,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1302,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1304,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1305,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1307,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1308,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1310,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1311,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1314,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1316,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1317,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1319,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1320,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/node/list.c:1322,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/node/list.c:1323,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1324,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1334,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1336,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1338,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1340,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1342,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1344,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1345,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1353,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1354,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:1355,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1367,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1368,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/node/list.c:1369,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:1372,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:1382,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1390,1
    - Dst: CHECK_LYD_NODE_INNER
      Src: /src/libyang/tests/utests/node/list.c:1392,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 158
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1116
    functionDepth: 1
    functionLinenumber: 1116
    functionLinenumberEnd: 1394
    functionName: test_json
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 0
    functionsReached:
    - CHECK_LYD_NODE_TERM
    - CHECK_LOG_CTX
    - CHECK_LYD_NODE_INNER
    - lyd_free_all
    - assert_null
    - UTEST_ADD_MODULE
    - MODULE_CREATE_YANG
    - assert_string_equal
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_json(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:1406,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:1413,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1442,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1443,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1444,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/node/list.c:1444,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/node/list.c:1445,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1446,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1447,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/node/list.c:1447,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/node/list.c:1448,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1449,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1450,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1451,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1478,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1479,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1480,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/node/list.c:1480,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/node/list.c:1481,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1482,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1483,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/node/list.c:1483,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/node/list.c:1484,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1485,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1486,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1487,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1520,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1521,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1522,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/node/list.c:1522,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/node/list.c:1523,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1524,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1525,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/node/list.c:1525,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/node/list.c:1526,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1527,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1528,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1529,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1556,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1557,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1558,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/node/list.c:1558,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/node/list.c:1559,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/node/list.c:1560,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/node/list.c:1560,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/node/list.c:1561,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1562,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1563,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1565
    functionName: test_diff
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - assert_null
    - UTEST_ADD_MODULE
    - lyd_diff_apply_all
    - CHECK_LYD
    - MODULE_CREATE_YANG
    - lyd_diff_siblings
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_diff(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/node/list.c:1574,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/node/list.c:1581,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/node/list.c:1595,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1605,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/node/list.c:1612,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/node/list.c:1614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1567
    functionDepth: 1
    functionLinenumber: 1567
    functionLinenumberEnd: 1615
    functionName: test_print
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - MODULE_CREATE_YANG
    - CHECK_LYD_STRING_PARAM
    linkageType: ''
    returnType: void
    signature: void test_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/node/list.c:1621,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/node/list.c:1622,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/node/list.c:1623,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/node/list.c:1625,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/node/list.c:1626,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/node/list.c:1627,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/node/list.c:1628,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/node/list.c:1631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1632
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/node/list.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:35,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:35,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:36,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:36,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_inout.c:37,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:37,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:39,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:39,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:40,1
    - Dst: ly_in_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:40,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:41,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:41,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:42,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:42,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:43,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:43,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 45
    functionName: test_input_mem
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - assert_null
    - ly_in_type
    - ly_in_new_memory
    - assert_ptr_equal
    - assert_int_equal
    - ly_in_memory
    linkageType: ''
    returnType: void
    signature: void test_input_mem(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:54,1
    - Dst: ly_in_new_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:54,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:55,1
    - Dst: ly_in_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:55,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:57,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:57,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:58,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:58,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:60,1
    - Dst: ly_in_new_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:60,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:62,1
    - Dst: ly_in_new_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:62,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:63,1
    - Dst: ly_in_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:63,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:64,1
    - Dst: ly_in_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:64,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:65,1
    - Dst: ly_in_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:65,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:66,1
    - Dst: ly_in_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:66,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:67,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:69,1
    - Dst: fstat
      Src: /src/libyang/tests/utests/basic/test_inout.c:69,1
    - Dst: close
      Src: /src/libyang/tests/utests/basic/test_inout.c:70,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:73,1
    - Dst: fstat
      Src: /src/libyang/tests/utests/basic/test_inout.c:73,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 75
    functionName: test_input_fd
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - open
    - assert_int_not_equal
    - fstat
    - ly_in_type
    - ly_in_new_fd
    - assert_ptr_equal
    - close
    - assert_int_equal
    - ly_in_fd
    linkageType: ''
    returnType: void
    signature: void test_input_fd(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:83,1
    - Dst: ly_in_new_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:83,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_inout.c:84,1
    - Dst: ly_in_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:84,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:86,1
    - Dst: fopen
      Src: /src/libyang/tests/utests/basic/test_inout.c:86,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:87,1
    - Dst: fopen
      Src: /src/libyang/tests/utests/basic/test_inout.c:87,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:89,1
    - Dst: ly_in_new_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:89,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:91,1
    - Dst: ly_in_new_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:91,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:92,1
    - Dst: ly_in_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:92,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:93,1
    - Dst: ly_in_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:93,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:94,1
    - Dst: ly_in_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:94,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:95,1
    - Dst: ly_in_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:95,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:96,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:98,1
    - Dst: fileno
      Src: /src/libyang/tests/utests/basic/test_inout.c:98,1
    - Dst: fclose
      Src: /src/libyang/tests/utests/basic/test_inout.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 101
    functionName: test_input_file
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - fopen
    - ly_in_free
    - assert_int_not_equal
    - assert_null
    - ly_in_new_file
    - ly_in_type
    - assert_ptr_equal
    - fileno
    - fclose
    - assert_int_equal
    - ly_in_file
    linkageType: ''
    returnType: void
    signature: void test_input_file(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:109,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:109,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:110,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:110,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:111,1
    - Dst: ly_in_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:111,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:113,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:114,1
    - Dst: ly_in_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:114,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:115,1
    - Dst: ly_in_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:115,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:116,1
    - Dst: ly_in_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:116,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 118
    functionName: test_input_filepath
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - ly_in_new_filepath
    - ly_in_type
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    - ly_in_filepath
    linkageType: ''
    returnType: void
    signature: void test_input_filepath(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:127,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:127,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:128,1
    - Dst: ly_out_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:128,1
    - Dst: ly_write
      Src: /src/libyang/tests/utests/basic/test_inout.c:129,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:130,1
    - Dst: ly_out_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:130,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:131,1
    - Dst: ly_out_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:131,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:132,1
    - Dst: ly_out_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:132,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_inout.c:132,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:133,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:135,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:135,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_inout.c:135,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:136,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:140,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/basic/test_inout.c:140,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:141,1
    - Dst: ly_print
      Src: /src/libyang/tests/utests/basic/test_inout.c:141,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:142,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:142,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:143,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:144,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/basic/test_inout.c:144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:145,1
    - Dst: ly_write
      Src: /src/libyang/tests/utests/basic/test_inout.c:145,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:146,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:146,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:147,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 149
    functionName: test_output_mem
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - ly_out_memory
    - strlen
    - ly_print
    - ly_out_printed
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    - ly_out_reset
    - ly_out_free
    - ly_out_type
    - ly_write
    - ly_out_new_memory
    linkageType: ''
    returnType: void
    signature: void test_output_mem(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:159,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:159,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:160,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:163,1
    - Dst: ly_out_new_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:163,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:164,1
    - Dst: ly_out_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:164,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:165,1
    - Dst: ly_out_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:165,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:166,1
    - Dst: ly_out_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:166,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:167,1
    - Dst: ly_out_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:167,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:168,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:169,1
    - Dst: close
      Src: /src/libyang/tests/utests/basic/test_inout.c:169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:170,1
    - Dst: ly_out_new_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:170,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:171,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:174,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:174,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:175,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:177,1
    - Dst: ftruncate
      Src: /src/libyang/tests/utests/basic/test_inout.c:177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:179,1
    - Dst: ly_out_new_fd
      Src: /src/libyang/tests/utests/basic/test_inout.c:179,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:180,1
    - Dst: ly_print
      Src: /src/libyang/tests/utests/basic/test_inout.c:180,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:181,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:181,1
    - Dst: ly_print_flush
      Src: /src/libyang/tests/utests/basic/test_inout.c:182,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:183,1
    - Dst: read
      Src: /src/libyang/tests/utests/basic/test_inout.c:183,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:185,1
    - Dst: lseek
      Src: /src/libyang/tests/utests/basic/test_inout.c:185,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:186,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/basic/test_inout.c:186,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:188,1
    - Dst: ly_write
      Src: /src/libyang/tests/utests/basic/test_inout.c:188,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:189,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:189,1
    - Dst: ly_print_flush
      Src: /src/libyang/tests/utests/basic/test_inout.c:190,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:191,1
    - Dst: read
      Src: /src/libyang/tests/utests/basic/test_inout.c:191,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:192,1
    - Dst: close
      Src: /src/libyang/tests/utests/basic/test_inout.c:194,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 196
    functionName: test_output_fd
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - read
    - open
    - assert_int_not_equal
    - ly_print
    - ly_out_printed
    - ly_out_fd
    - assert_ptr_equal
    - close
    - lseek
    - ly_out_new_fd
    - assert_int_equal
    - assert_string_equal
    - ly_out_reset
    - ly_out_free
    - ly_print_flush
    - ly_out_type
    - ftruncate
    - ly_write
    linkageType: ''
    returnType: void
    signature: void test_output_fd(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:206,1
    - Dst: fopen
      Src: /src/libyang/tests/utests/basic/test_inout.c:206,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:207,1
    - Dst: fopen
      Src: /src/libyang/tests/utests/basic/test_inout.c:207,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:210,1
    - Dst: ly_out_new_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:210,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:211,1
    - Dst: ly_out_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:211,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:212,1
    - Dst: ly_out_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:212,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:213,1
    - Dst: ly_out_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:213,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:214,1
    - Dst: ly_out_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:214,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:215,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:216,1
    - Dst: fclose
      Src: /src/libyang/tests/utests/basic/test_inout.c:216,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:217,1
    - Dst: ly_out_new_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:217,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:218,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:221,1
    - Dst: fopen
      Src: /src/libyang/tests/utests/basic/test_inout.c:221,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:222,1
    - Dst: fopen
      Src: /src/libyang/tests/utests/basic/test_inout.c:222,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:224,1
    - Dst: ly_out_new_file
      Src: /src/libyang/tests/utests/basic/test_inout.c:224,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:225,1
    - Dst: ly_print
      Src: /src/libyang/tests/utests/basic/test_inout.c:225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:226,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:226,1
    - Dst: ly_print_flush
      Src: /src/libyang/tests/utests/basic/test_inout.c:227,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_inout.c:228,1
    - Dst: fgets
      Src: /src/libyang/tests/utests/basic/test_inout.c:228,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:229,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:230,1
    - Dst: fseek
      Src: /src/libyang/tests/utests/basic/test_inout.c:230,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:231,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/basic/test_inout.c:231,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:233,1
    - Dst: ly_write
      Src: /src/libyang/tests/utests/basic/test_inout.c:233,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:234,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:234,1
    - Dst: ly_print_flush
      Src: /src/libyang/tests/utests/basic/test_inout.c:235,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_inout.c:236,1
    - Dst: fgets
      Src: /src/libyang/tests/utests/basic/test_inout.c:236,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:237,1
    - Dst: fclose
      Src: /src/libyang/tests/utests/basic/test_inout.c:239,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 241
    functionName: test_output_file
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - ly_out_new_file
    - fopen
    - ly_print
    - assert_int_not_equal
    - ly_write
    - ly_out_printed
    - assert_ptr_equal
    - fclose
    - assert_string_equal
    - assert_int_equal
    - ly_out_file
    - ly_out_reset
    - ly_out_free
    - ly_print_flush
    - ly_out_type
    - fgets
    - assert_non_null
    - fseek
    linkageType: ''
    returnType: void
    signature: void test_output_file(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:253,1
    - Dst: ly_out_new_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:254,1
    - Dst: ly_out_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:254,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:255,1
    - Dst: ly_out_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:255,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:256,1
    - Dst: ly_out_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:256,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:257,1
    - Dst: ly_out_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:257,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:258,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:259,1
    - Dst: ly_out_new_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:259,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:260,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:263,1
    - Dst: fopen
      Src: /src/libyang/tests/utests/basic/test_inout.c:263,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:265,1
    - Dst: ly_out_new_filepath
      Src: /src/libyang/tests/utests/basic/test_inout.c:265,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:266,1
    - Dst: ly_print
      Src: /src/libyang/tests/utests/basic/test_inout.c:266,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:267,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:267,1
    - Dst: ly_print_flush
      Src: /src/libyang/tests/utests/basic/test_inout.c:268,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_inout.c:269,1
    - Dst: fgets
      Src: /src/libyang/tests/utests/basic/test_inout.c:269,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:270,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:271,1
    - Dst: fseek
      Src: /src/libyang/tests/utests/basic/test_inout.c:271,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:272,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/basic/test_inout.c:272,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:274,1
    - Dst: ly_write
      Src: /src/libyang/tests/utests/basic/test_inout.c:274,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:275,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:275,1
    - Dst: ly_print_flush
      Src: /src/libyang/tests/utests/basic/test_inout.c:276,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_inout.c:277,1
    - Dst: fgets
      Src: /src/libyang/tests/utests/basic/test_inout.c:277,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:278,1
    - Dst: fclose
      Src: /src/libyang/tests/utests/basic/test_inout.c:280,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 282
    functionName: test_output_filepath
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - fopen
    - ly_print
    - assert_int_not_equal
    - ly_write
    - ly_out_new_filepath
    - ly_out_printed
    - assert_ptr_equal
    - fclose
    - assert_string_equal
    - assert_int_equal
    - ly_out_reset
    - ly_out_filepath
    - ly_out_free
    - ly_print_flush
    - ly_out_type
    - fgets
    - assert_non_null
    - fseek
    linkageType: ''
    returnType: void
    signature: void test_output_filepath(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:292,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:292,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:293,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:293,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:296,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/tests/utests/basic/test_inout.c:296,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:297,1
    - Dst: ly_out_type
      Src: /src/libyang/tests/utests/basic/test_inout.c:297,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:298,1
    - Dst: ly_out_clb_arg
      Src: /src/libyang/tests/utests/basic/test_inout.c:298,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:299,1
    - Dst: ly_out_clb_arg
      Src: /src/libyang/tests/utests/basic/test_inout.c:299,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:300,1
    - Dst: ly_out_clb_arg
      Src: /src/libyang/tests/utests/basic/test_inout.c:300,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:301,1
    - Dst: ly_out_clb
      Src: /src/libyang/tests/utests/basic/test_inout.c:301,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:302,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:303,1
    - Dst: close
      Src: /src/libyang/tests/utests/basic/test_inout.c:303,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:304,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/tests/utests/basic/test_inout.c:304,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:305,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:308,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:308,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:309,1
    - Dst: open
      Src: /src/libyang/tests/utests/basic/test_inout.c:309,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:311,1
    - Dst: ftruncate
      Src: /src/libyang/tests/utests/basic/test_inout.c:311,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:313,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/tests/utests/basic/test_inout.c:313,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:314,1
    - Dst: ly_print
      Src: /src/libyang/tests/utests/basic/test_inout.c:314,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:315,1
    - Dst: ly_out_printed
      Src: /src/libyang/tests/utests/basic/test_inout.c:315,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:316,1
    - Dst: read
      Src: /src/libyang/tests/utests/basic/test_inout.c:316,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_inout.c:317,1
    - Dst: close
      Src: /src/libyang/tests/utests/basic/test_inout.c:319,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/basic/test_inout.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 321
    functionName: test_output_clb
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 0
    functionsReached:
    - ly_out_clb
    - ly_out_new_clb
    - open
    - assert_int_not_equal
    - ly_print
    - read
    - ly_out_printed
    - assert_ptr_equal
    - close
    - assert_string_equal
    - assert_int_equal
    - ly_out_free
    - ly_out_type
    - ftruncate
    - ly_out_clb_arg
    linkageType: ''
    returnType: void
    signature: void test_output_clb(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:327,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:328,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:329,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:330,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:331,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:332,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:333,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:334,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_inout.c:335,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_inout.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 339
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_inout.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:37,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:37,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:38,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:38,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:39,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:40,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:41,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:45,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:45,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:46,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:46,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:47,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:48,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:53,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:53,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:54,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:54,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:55,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:56,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:60,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:60,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:61,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:61,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:62,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:63,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:67,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:67,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:68,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:68,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:69,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:70,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:74,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:74,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:75,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:75,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:76,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:77,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:78,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:78,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:79,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:81,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:81,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:82,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:83,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:83,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:85,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:85,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:86,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:88,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:88,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:89,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:90,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:91,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:95,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:95,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:96,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:96,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:97,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:98,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:98,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:99,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:102,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:103,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:104,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:104,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:105,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:107,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:107,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:108,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:109,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:110,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:110,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:112,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:115,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:115,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:116,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:117,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:119,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:119,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:120,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:121,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:122,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:126,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:126,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:127,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:127,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:128,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:129,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:129,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:130,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:131,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:133,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:133,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:134,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:136,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:136,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:137,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:139,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:139,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:140,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:141,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:142,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:146,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:146,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:147,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:147,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:148,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:149,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:149,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:150,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:152,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:154,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:154,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:155,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:157,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:157,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:158,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:159,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:162,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:162,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:163,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:164,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:165,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:169,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:170,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:170,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:171,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:172,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:172,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:173,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:173,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:175,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:176,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:178,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:179,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:181,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:182,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:183,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:188,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:188,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:189,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:189,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:190,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:191,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:191,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:192,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:192,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:193,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:194,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:196,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:196,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:197,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:199,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:199,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:200,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:201,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:202,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:206,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:206,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:207,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:207,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:208,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:209,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:209,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:210,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:211,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:212,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:216,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:216,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:217,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:217,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:218,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:218,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:219,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:219,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:221,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:221,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:222,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:224,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:224,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:227,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:227,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:228,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:229,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:230,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:234,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:234,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:235,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:235,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:236,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:237,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:240,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:240,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:241,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:241,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:242,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:242,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:243,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:244,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:245,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:249,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:249,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:250,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:250,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:251,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:252,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:252,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:255,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:255,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:256,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:257,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:257,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:259,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:259,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:260,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:261,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:261,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:262,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:264,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:264,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:265,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:266,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:266,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:268,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:268,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:269,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:271,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:271,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:272,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:274,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:274,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:275,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:276,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:277,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:281,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:281,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:282,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:282,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:283,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:284,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:284,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:285,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:287,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:287,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:288,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:289,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:289,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:291,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:291,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:292,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:293,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 199
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 295
    functionName: test_element
    functionSourceFile: /src/libyang/tests/utests/basic/test_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_null
    - assert_true
    - ly_in_new_memory
    - assert_int_equal
    - strncmp
    - lyxml_ctx_new
    - lyxml_ctx_free
    - lyxml_ctx_next
    linkageType: ''
    returnType: void
    signature: void test_element(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:307,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:307,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:308,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:308,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:309,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:310,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:313,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:313,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:314,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:314,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:315,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:316,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:319,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:319,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:320,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:320,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:321,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:322,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:326,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:326,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:327,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:327,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:328,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:329,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:329,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:330,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:331,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:331,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:332,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:334,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:334,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:335,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:336,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:336,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:337,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:338,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:339,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:344,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:344,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:345,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:345,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:346,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:347,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:349,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:350,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:351,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 353
    functionName: test_attribute
    functionSourceFile: /src/libyang/tests/utests/basic/test_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_null
    - assert_true
    - ly_in_new_memory
    - assert_string_equal
    - assert_int_equal
    - strncmp
    - lyxml_ctx_new
    - lyxml_ctx_free
    - lyxml_ctx_next
    linkageType: ''
    returnType: void
    signature: void test_attribute(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:364,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:364,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:365,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:365,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:366,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:367,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:367,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:368,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:370,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:370,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:371,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:372,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:372,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:373,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:374,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:375,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:378,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:378,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:380,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:382,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:382,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:383,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:384,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:384,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:385,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:386,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:387,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:390,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:390,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:392,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:394,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:394,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:395,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:396,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:396,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:397,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:398,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:399,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:402,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:402,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:404,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:406,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:406,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:407,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:408,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:410,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:410,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:412,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:414,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:414,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:415,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:416,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:418,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:422,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:422,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:423,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:423,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:424,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:426,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:426,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:427,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:428,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:428,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:429,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:430,1
    - Dst: free
      Src: /src/libyang/tests/utests/basic/test_xml.c:431,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:432,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:435,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:435,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:437,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:439,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:439,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:440,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_xml.c:441,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_xml.c:441,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:442,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:443,1
    - Dst: free
      Src: /src/libyang/tests/utests/basic/test_xml.c:444,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:445,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:448,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:448,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:450,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:452,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:452,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:453,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:454,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:456,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:456,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:458,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:460,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:460,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:461,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:462,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:464,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:464,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:466,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:468,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:468,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:469,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:470,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:472,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:472,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:474,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:476,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:476,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:477,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:478,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:480,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:480,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:482,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:484,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:484,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:485,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:486,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:488,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:488,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:490,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:492,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:492,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:493,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:494,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:496,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:496,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/tests/utests/basic/test_xml.c:498,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:500,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:500,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_xml.c:501,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:502,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 120
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 505
    functionName: test_text
    functionSourceFile: /src/libyang/tests/utests/basic/test_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_true
    - free
    - ly_in_new_memory
    - assert_int_equal
    - strncmp
    - lyxml_ctx_new
    - lyxml_ctx_free
    - LOG_LOCINIT
    - lyxml_ctx_next
    linkageType: ''
    returnType: void
    signature: void test_text(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:517,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:517,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:518,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:518,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:521,1
    - Dst: lyxml_ns_add
      Src: /src/libyang/tests/utests/basic/test_xml.c:521,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_xml.c:521,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:522,1
    - Dst: lyxml_ns_add
      Src: /src/libyang/tests/utests/basic/test_xml.c:522,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_xml.c:522,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:526,1
    - Dst: lyxml_ns_add
      Src: /src/libyang/tests/utests/basic/test_xml.c:526,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_xml.c:526,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:527,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:528,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/tests/utests/basic/test_xml.c:530,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:531,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:532,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:533,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/tests/utests/basic/test_xml.c:535,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:536,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:537,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:538,1
    - Dst: lyxml_ns_rm
      Src: /src/libyang/tests/utests/basic/test_xml.c:542,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:543,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/tests/utests/basic/test_xml.c:545,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:546,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:547,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:548,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:551,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:551,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:552,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:552,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:553,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:555,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/tests/utests/basic/test_xml.c:555,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xml.c:556,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/tests/utests/basic/test_xml.c:556,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:558,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 560
    functionName: test_ns
    functionSourceFile: /src/libyang/tests/utests/basic/test_xml.c
    functionUses: 0
    functionsReached:
    - lyxml_ns_rm
    - ly_in_free
    - assert_int_not_equal
    - assert_null
    - lyxml_ctx_free
    - ly_in_new_memory
    - strdup
    - assert_string_equal
    - assert_int_equal
    - lyxml_ns_get
    - lyxml_ns_add
    - lyxml_ctx_new
    - assert_non_null
    - lyxml_ctx_next
    linkageType: ''
    returnType: void
    signature: void test_ns(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:571,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:571,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:572,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:572,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:575,1
    - Dst: lyxml_ns_add
      Src: /src/libyang/tests/utests/basic/test_xml.c:575,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_xml.c:575,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:576,1
    - Dst: lyxml_ns_rm
      Src: /src/libyang/tests/utests/basic/test_xml.c:582,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:583,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:586,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:586,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:587,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:587,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:588,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:590,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 592
    functionName: test_ns2
    functionSourceFile: /src/libyang/tests/utests/basic/test_xml.c
    functionUses: 0
    functionsReached:
    - lyxml_ns_rm
    - ly_in_free
    - ly_in_new_memory
    - strdup
    - assert_int_equal
    - lyxml_ns_add
    - lyxml_ctx_new
    - lyxml_ctx_free
    - lyxml_ctx_next
    linkageType: ''
    returnType: void
    signature: void test_ns2(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:601,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_xml.c:601,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:602,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/tests/utests/basic/test_xml.c:602,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:603,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:604,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:606,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:606,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:607,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:608,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:610,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:610,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:611,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:612,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:614,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:614,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:615,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:616,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:618,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:618,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:619,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:620,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:622,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:622,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:623,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:624,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:626,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:626,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:627,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:628,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:630,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:630,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:631,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:632,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:634,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:634,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:635,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:636,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:638,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:638,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:639,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:640,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:642,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/tests/utests/basic/test_xml.c:642,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:643,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xml.c:644,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:646,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_xml.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 594
    functionDepth: 1
    functionLinenumber: 594
    functionLinenumberEnd: 648
    functionName: test_simple_xml
    functionSourceFile: /src/libyang/tests/utests/basic/test_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - ly_in_new_memory
    - assert_string_equal
    - assert_int_equal
    - lyxml_ctx_new
    - lyxml_ctx_free
    - lyxml_ctx_next
    linkageType: ''
    returnType: void
    signature: void test_simple_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xml.c:654,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xml.c:655,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xml.c:656,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xml.c:657,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xml.c:658,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xml.c:659,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_xml.c:662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 663
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_xml.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:27,1
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:27,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:28,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:30,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:30,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:31,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:32,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:32,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 34
    functionName: test_invalid_arguments
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lydict_insert_zc
    - assert_int_equal
    - lydict_insert
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_invalid_arguments(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:42,1
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:42,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:43,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:45,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:45,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:46,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:46,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:47,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:49,1
    - Dst: lydict_insert
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:49,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:50,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:51,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:54,1
    - Dst: lydict_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:55,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:58,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:60,1
    - Dst: free
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 66
    functionName: test_dict_hit
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 0
    functionsReached:
    - ly_ctx_destroy
    - free
    - assert_ptr_equal
    - lydict_insert_zc
    - strdup
    - lydict_remove
    - assert_int_equal
    - lydict_insert
    - assert_non_null
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_dict_hit(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - val1
    - val2
    - mod
    - cb_data
    argTypes:
    - void*
    - void*
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: ht_equal_clb
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ht_equal_clb(void *val1, void *val2, uint8_t mod, void *cb_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:88,1
    - Dst: lyht_new
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:88,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:91,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:91,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:92,1
    - Dst: lyht_insert
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:93,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:93,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:94,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:94,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:95,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:95,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:96,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:96,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:97,1
    - Dst: lyht_free
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 100
    functionName: test_ht_basic
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 0
    functionsReached:
    - lyht_insert
    - lyht_remove
    - assert_int_equal
    - lyht_find
    - assert_non_null
    - CHECK_LOG
    - lyht_free
    - lyht_new
    linkageType: ''
    returnType: void
    signature: void test_ht_basic(void **state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:109,1
    - Dst: lyht_new
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:109,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:110,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:114,1
    - Dst: lyht_insert
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:117,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:123,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:124,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:125,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:128,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:129,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:136,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:136,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:137,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:142,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:142,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:148,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:148,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:152,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:152,1
    - Dst: lyht_free
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 157
    functionName: test_ht_resize
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 0
    functionsReached:
    - lyht_insert
    - lyht_remove
    - assert_int_equal
    - lyht_find
    - assert_non_null
    - lyht_get_rec
    - CHECK_LOG
    - lyht_free
    - lyht_new
    linkageType: ''
    returnType: void
    signature: void test_ht_resize(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:168,1
    - Dst: lyht_new
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:168,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:171,1
    - Dst: lyht_insert
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:171,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:176,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:177,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:179,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:180,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:181,1
    - Dst: GET_REC_INT
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:181,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:185,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:186,1
    - Dst: GET_REC_INT
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:186,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:189,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:190,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:194,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:194,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:196,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:197,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:200,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:200,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:204,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:205,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:207,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:209,1
    - Dst: GET_REC_INT
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:209,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:212,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:213,1
    - Dst: GET_REC_INT
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:213,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:216,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:217,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:220,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:221,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:225,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:227,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:227,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:229,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:229,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:231,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:231,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:234,1
    - Dst: lyht_find
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:234,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:238,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:238,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:240,1
    - Dst: lyht_remove
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:240,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:245,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:248,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:249,1
    - Dst: lyht_get_rec
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:252,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:253,1
    - Dst: lyht_free
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:256,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 77
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 257
    functionName: test_ht_collisions
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 0
    functionsReached:
    - lyht_insert
    - GET_REC_INT
    - lyht_remove
    - assert_int_equal
    - lyht_find
    - assert_non_null
    - lyht_get_rec
    - lyht_free
    - lyht_new
    linkageType: ''
    returnType: void
    signature: void test_ht_collisions(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rec
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 163
    functionName: GET_REC_INT
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_REC_INT(rec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:263,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:264,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:265,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:266,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:267,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_hash_table.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 271
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_hash_table.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_xpath.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/basic/test_xpath.c
    functionUses: 36
    functionsReached:
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:156,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_xpath.c:156,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xpath.c:157,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:160,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:161,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:164,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/basic/test_xpath.c:165,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:166,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:167,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/basic/test_xpath.c:167,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:172,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:172,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:173,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:176,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/basic/test_xpath.c:177,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:178,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:179,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/basic/test_xpath.c:179,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:181,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_xpath.c:182,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:184,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:187,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:187,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:188,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:190,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:193,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:193,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:194,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:197,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:198,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/basic/test_xpath.c:198,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:200,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:203,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:203,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:204,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:206,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:209,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:209,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:210,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:212,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_xpath.c:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 215
    functionName: test_hash
    functionSourceFile: /src/libyang/tests/utests/basic/test_xpath.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - lyd_free_all
    - assert_null
    - ly_set_free
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_string_equal
    - lyd_child
    - lyd_get_value
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_hash(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_xpath.c:267,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:269,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_xpath.c:269,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xpath.c:270,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:273,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:273,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:274,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:276,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:279,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:279,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:280,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:282,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:285,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:285,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:286,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:288,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:291,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:291,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:292,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:294,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:297,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:297,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:298,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:300,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_xpath.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 303
    functionName: test_toplevel
    functionSourceFile: /src/libyang/tests/utests/basic/test_xpath.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - lyd_free_all
    - UTEST_ADD_MODULE
    - ly_set_free
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_toplevel(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/tests/utests/basic/test_xpath.c:311,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xpath.c:312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:315,1
    - Dst: lys_find_xpath_atoms
      Src: /src/libyang/tests/utests/basic/test_xpath.c:315,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:316,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:321,1
    - Dst: lys_find_xpath_atoms
      Src: /src/libyang/tests/utests/basic/test_xpath.c:321,1
    - Dst: assert_in_range
      Src: /src/libyang/tests/utests/basic/test_xpath.c:322,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:324,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:326,1
    - Dst: lys_find_xpath_atoms
      Src: /src/libyang/tests/utests/basic/test_xpath.c:326,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:327,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 330
    functionName: test_atomize
    functionSourceFile: /src/libyang/tests/utests/basic/test_xpath.c
    functionUses: 0
    functionsReached:
    - ly_set_free
    - ly_ctx_get_module_latest
    - lys_find_xpath_atoms
    - assert_int_equal
    - assert_in_range
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_atomize(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:340,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_xpath.c:340,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xpath.c:341,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:343,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:343,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:344,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:345,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_xpath.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 350
    functionName: test_canonize
    functionSourceFile: /src/libyang/tests/utests/basic/test_xpath.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - lyd_free_all
    - ly_set_free
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_canonize(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:360,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_xpath.c:360,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_xpath.c:361,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:363,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:363,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:364,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:365,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:367,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_xpath.c:367,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_xpath.c:368,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_xpath.c:369,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_xpath.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 372
    functionName: test_derived_from
    functionSourceFile: /src/libyang/tests/utests/basic/test_xpath.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - lyd_free_all
    - ly_set_free
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_derived_from(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xpath.c:378,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xpath.c:379,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xpath.c:380,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xpath.c:381,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_xpath.c:382,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_xpath.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 386
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_xpath.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:38,1
    - Dst: lyplg_add
      Src: /src/libyang/tests/utests/basic/test_plugins.c:38,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_plugins.c:41,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_plugins.c:44,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:49,1
    - Dst: lyplg_add
      Src: /src/libyang/tests/utests/basic/test_plugins.c:49,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_plugins.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 56
    functionName: test_add_invalid
    functionSourceFile: /src/libyang/tests/utests/basic/test_plugins.c
    functionUses: 0
    functionsReached:
    - assert_int_equal
    - CHECK_LOG
    - lyplg_add
    linkageType: ''
    returnType: void
    signature: void test_add_invalid(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:66,1
    - Dst: lyplg_add
      Src: /src/libyang/tests/utests/basic/test_plugins.c:66,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_plugins.c:68,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:71,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_plugins.c:73,1
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/basic/test_plugins.c:73,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:74,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:75,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:77,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/basic/test_plugins.c:77,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_plugins.c:78,1
    - Dst: lyplg_find
      Src: /src/libyang/tests/utests/basic/test_plugins.c:78,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:79,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:80,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:83,1
    - Dst: lyplg_add
      Src: /src/libyang/tests/utests/basic/test_plugins.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 84
    functionName: test_add_simple
    functionSourceFile: /src/libyang/tests/utests/basic/test_plugins.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - LY_ARRAY_COUNT
    - lyplg_add
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    - lyplg_find
    linkageType: ''
    returnType: void
    signature: void test_add_simple(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:112,1
    - Dst: lyplg_add
      Src: /src/libyang/tests/utests/basic/test_plugins.c:112,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_plugins.c:114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:118,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_plugins.c:118,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_plugins.c:119,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_plugins.c:120,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:124,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_plugins.c:124,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_plugins.c:125,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_plugins.c:126,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:130,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_plugins.c:130,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_plugins.c:131,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_plugins.c:132,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:136,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_plugins.c:136,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_plugins.c:137,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_plugins.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 139
    functionName: test_validation
    functionSourceFile: /src/libyang/tests/utests/basic/test_plugins.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyplg_add
    - lyd_parse_data_mem
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_validation(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_plugins.c:159,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:161,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/basic/test_plugins.c:161,1
    - Dst: free
      Src: /src/libyang/tests/utests/basic/test_plugins.c:162,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_plugins.c:164,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/basic/test_plugins.c:164,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_plugins.c:165,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_plugins.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 168
    functionName: test_not_implemented
    functionSourceFile: /src/libyang/tests/utests/basic/test_plugins.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - free
    - lys_print_mem
    - lyd_parse_data_mem
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_not_implemented(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_plugins.c:174,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_plugins.c:175,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_plugins.c:176,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_plugins.c:177,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_plugins.c:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 181
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_plugins.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:31,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:31,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:32,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:33,1
    - Dst: ly_ctx_get_searchdirs
      Src: /src/libyang/tests/utests/basic/test_context.c:33,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:34,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:35,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:35,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:36,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:39,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:39,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:40,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:42,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:42,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:43,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:45,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:45,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:46,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:50,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:50,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:53,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:53,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:54,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:55,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:58,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:58,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:59,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:60,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:63,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:63,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:64,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:64,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:65,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:65,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:66,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:66,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:67,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:67,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:68,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:68,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:69,1
    - Dst: ly_ctx_get_searchdirs
      Src: /src/libyang/tests/utests/basic/test_context.c:72,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:73,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:74,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:75,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:76,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:77,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:78,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:82,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:82,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:83,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:85,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:85,1
    - Dst: assert_string_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:86,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:87,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:89,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:89,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:90,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:92,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:93,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:95,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:95,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:96,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:99,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:99,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:105,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:105,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:106,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:107,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:107,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:108,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:109,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 111
    functionName: test_searchdirs
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_ctx_unset_searchdir
    - assert_null
    - ly_ctx_destroy
    - ly_ctx_set_searchdir
    - assert_string_equal
    - assert_int_equal
    - assert_string_not_equal
    - assert_non_null
    - ly_ctx_get_searchdirs
    - CHECK_LOG
    - ly_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_searchdirs(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:117,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:119,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:119,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:122,1
    - Dst: ly_ctx_get_options
      Src: /src/libyang/tests/utests/basic/test_context.c:122,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:123,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:125,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:125,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:126,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:127,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/basic/test_context.c:127,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:128,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:131,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:131,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:132,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:133,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:133,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:134,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:138,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:139,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/basic/test_context.c:139,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:140,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:143,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:144,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/basic/test_context.c:144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:145,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:148,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:149,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/basic/test_context.c:149,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:150,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:153,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:154,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/basic/test_context.c:154,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:155,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:158,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:159,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/basic/test_context.c:159,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:162,1
    - Dst: ly_ctx_get_options
      Src: /src/libyang/tests/utests/basic/test_context.c:162,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:166,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:166,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:167,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:170,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:170,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:171,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:174,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:174,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:175,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:178,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:178,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:179,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:182,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:182,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:183,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:185,1
    - Dst: ly_ctx_get_options
      Src: /src/libyang/tests/utests/basic/test_context.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 186
    functionName: test_options
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - CHECK_LOG_CTX
    - ly_ctx_destroy
    - assert_int_not_equal
    - ly_ctx_unset_options
    - ly_ctx_new
    - assert_int_equal
    - CHECK_LOG
    - ly_ctx_get_options
    linkageType: ''
    returnType: void
    signature: void test_options(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 7
    argNames:
    - UNUSED(mod_name)
    - UNUSED(mod_rev)
    - UNUSED(submod_name)
    - UNUSED(sub_rev)
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 197
    functionName: test_imp_clb
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR test_imp_clb(const char *UNUSED(mod_name), const char *UNUSED(mod_rev),
      const char *UNUSED(submod_name),\n        const char *UNUSED(sub_rev), void
      *user_data, LYS_INFORMAT *format,\n        const char **module_data, void (**free_module_data)(void
      *model_data, void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:211,1
    - Dst: ly_ctx_get_change_count
      Src: /src/libyang/tests/utests/basic/test_context.c:211,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:212,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:214,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:214,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:215,1
    - Dst: ly_ctx_get_change_count
      Src: /src/libyang/tests/utests/basic/test_context.c:215,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:217,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:217,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:218,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:218,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:219,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:220,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:221,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:224,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:225,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:226,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:227,1
    - Dst: ly_ctx_get_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:227,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:228,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:230,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:231,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:232,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:236,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:236,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:237,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:237,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:238,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:239,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:240,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:242,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:242,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:243,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:243,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:244,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/tests/utests/basic/test_context.c:244,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:245,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:246,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:247,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:247,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:248,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:248,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:249,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:250,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:251,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:254,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:254,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:255,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:255,1
    - Dst: lys_compile_unres_glob_revert
      Src: /src/libyang/tests/utests/basic/test_context.c:256,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:257,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:258,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:259,1
    - Dst: ly_ctx_reset_latests
      Src: /src/libyang/tests/utests/basic/test_context.c:263,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:264,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:265,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:265,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:266,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:266,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:267,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:268,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:269,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:272,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:272,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:273,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:273,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:274,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:276,1
    - Dst: lys_compile
      Src: /src/libyang/tests/utests/basic/test_context.c:276,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:277,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/tests/utests/basic/test_context.c:277,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:278,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:279,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:280,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:285,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:285,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:287,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:288,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:288,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:290,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:291,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:292,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:295,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:295,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:296,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:297,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:297,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:298,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/tests/utests/basic/test_context.c:298,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:299,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:300,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:301,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:302,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 73
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 304
    functionName: test_models
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - lys_create_module
    - CHECK_LOG_CTX
    - ly_in_free
    - ly_ctx_destroy
    - ly_ctx_set_module_imp_clb
    - lys_compile
    - lys_compile_unres_glob_revert
    - assert_string_equal
    - assert_int_equal
    - ly_ctx_get_change_count
    - CHECK_LOG
    - assert_ptr_equal
    - lys_compile_unres_glob
    - ly_ctx_get_module_imp_clb
    - ly_ctx_reset_latests
    - ly_ctx_new
    - assert_null
    - ly_in_new_memory
    - lys_compile_unres_glob_erase
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_models(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:316,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:316,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:317,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:318,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/basic/test_context.c:318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:320,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:322,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/basic/test_context.c:322,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:325,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:326,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:327,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:328,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:329,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:330,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:330,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:331,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:335,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:335,1
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_context.c:336,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:337,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/basic/test_context.c:337,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:339,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:341,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/basic/test_context.c:341,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:344,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:345,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:346,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:347,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:348,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 349
    functionName: test_imports
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_module_imp_clb
    - ly_ctx_destroy
    - assert_null
    - assert_ptr_equal
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_ptr_not_equal
    - assert_non_null
    - ly_ctx_get_module
    - ly_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_imports(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:364,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:364,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:365,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:365,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:366,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:366,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:369,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:369,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:370,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:371,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:371,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:372,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:373,1
    - Dst: ly_ctx_get_module_ns
      Src: /src/libyang/tests/utests/basic/test_context.c:373,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_context.c:374,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:375,1
    - Dst: ly_ctx_get_module_ns
      Src: /src/libyang/tests/utests/basic/test_context.c:375,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:376,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:377,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:377,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:380,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:380,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:381,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:382,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:383,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:384,1
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/tests/utests/basic/test_context.c:385,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:386,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:387,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:387,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:388,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:388,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:389,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:389,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:390,1
    - Dst: ly_ctx_get_module_ns
      Src: /src/libyang/tests/utests/basic/test_context.c:390,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:393,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:393,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:394,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/tests/utests/basic/test_context.c:394,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:395,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:397,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:397,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:398,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:399,1
    - Dst: ly_in_reset
      Src: /src/libyang/tests/utests/basic/test_context.c:400,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:402,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:402,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:404,1
    - Dst: ly_in_reset
      Src: /src/libyang/tests/utests/basic/test_context.c:405,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:406,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:406,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:407,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:408,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:409,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/tests/utests/basic/test_context.c:410,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:411,1
    - Dst: ly_ctx_get_module_latest_ns
      Src: /src/libyang/tests/utests/basic/test_context.c:412,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:413,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:415,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:415,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:416,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:417,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:417,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:418,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/tests/utests/basic/test_context.c:418,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:421,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:422,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_context.c:422,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:423,1
    - Dst: lys_create_module
      Src: /src/libyang/tests/utests/basic/test_context.c:423,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_context.c:424,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/tests/utests/basic/test_context.c:425,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/tests/utests/basic/test_context.c:427,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:428,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:430,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:433,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:434,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_context.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 59
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 436
    functionName: test_get_models
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lys_create_module
    - ly_in_free
    - ly_ctx_get_module_implemented_ns
    - assert_string_equal
    - assert_int_equal
    - ly_ctx_get_module
    - CHECK_LOG
    - assert_ptr_equal
    - ly_ctx_get_module_latest_ns
    - lys_compile_unres_glob
    - ly_in_reset
    - ly_ctx_get_module_implemented
    - ly_ctx_get_module_ns
    - assert_null
    - ly_ctx_get_module_latest
    - ly_in_new_memory
    - ly_ctx_get_module_iter
    - lys_compile_unres_glob_erase
    - assert_ptr_not_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_get_models(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:655,1
    - Dst: ly_ctx_new_ylpath
      Src: /src/libyang/tests/utests/basic/test_context.c:655,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:656,1
    - Dst: ly_ctx_new_ylpath
      Src: /src/libyang/tests/utests/basic/test_context.c:656,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:657,1
    - Dst: ly_ctx_new_ylpath
      Src: /src/libyang/tests/utests/basic/test_context.c:657,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:660,1
    - Dst: ly_ctx_new_ylmem
      Src: /src/libyang/tests/utests/basic/test_context.c:660,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:661,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:661,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_context.c:662,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:662,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:663,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:666,1
    - Dst: ly_ctx_new_ylmem
      Src: /src/libyang/tests/utests/basic/test_context.c:666,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:667,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:667,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:668,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:668,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:669,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:669,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:670,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:670,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:671,1
    - Dst: lys_feature_value
      Src: /src/libyang/tests/utests/basic/test_context.c:671,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:671,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:672,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:675,1
    - Dst: ly_ctx_new_ylmem
      Src: /src/libyang/tests/utests/basic/test_context.c:675,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:676,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:676,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:677,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:677,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:678,1
    - Dst: lys_feature_value
      Src: /src/libyang/tests/utests/basic/test_context.c:678,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:678,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:679,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:682,1
    - Dst: ly_ctx_new_ylmem
      Src: /src/libyang/tests/utests/basic/test_context.c:682,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:685,1
    - Dst: ly_ctx_new_ylmem
      Src: /src/libyang/tests/utests/basic/test_context.c:685,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:688,1
    - Dst: ly_ctx_new_ylmem
      Src: /src/libyang/tests/utests/basic/test_context.c:688,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:689,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:689,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 691
    functionName: test_ylmem
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - ly_ctx_destroy
    - assert_null
    - ly_ctx_new_ylmem
    - assert_int_equal
    - ly_ctx_new_ylpath
    - assert_non_null
    - ly_ctx_get_module
    - lys_feature_value
    linkageType: ''
    returnType: void
    signature: void test_ylmem(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/basic/test_context.c:700,1
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/basic/test_context.c:702,1
    - Dst: CHECK_STRING
      Src: /src/libyang/tests/utests/basic/test_context.c:703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - node
    - data
    - UNUSED(dfs_continue)
    argTypes:
    - struct lysc_node*
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 693
    functionDepth: 1
    functionLinenumber: 693
    functionLinenumberEnd: 707
    functionName: check_node_priv_parsed_is_set
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - CHECK_STRING
    - CHECK_POINTER
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR check_node_priv_parsed_is_set(struct lysc_node *node, void *data,
      ly_bool *UNUSED(dfs_continue))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/basic/test_context.c:712,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - node
    - UNUSED(data)
    - UNUSED(dfs_continue)
    argTypes:
    - struct lysc_node*
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 709
    functionDepth: 1
    functionLinenumber: 709
    functionLinenumberEnd: 714
    functionName: check_node_priv_parsed_not_set
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - CHECK_POINTER
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR check_node_priv_parsed_not_set(struct lysc_node *node, void
      *UNUSED(data), ly_bool *UNUSED(dfs_continue))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/tests/utests/basic/test_context.c:730,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:733,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/tests/utests/basic/test_context.c:733,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ext
    argTypes:
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 737
    functionName: check_ext_instance_priv_parsed_is_set
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - assert_int_equal
    - LY_STMT_IS_NODE
    - lysc_tree_dfs_full
    linkageType: ''
    returnType: void
    signature: void check_ext_instance_priv_parsed_is_set(struct lysc_ext_instance
      *ext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/tests/utests/basic/test_context.c:730,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:733,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/tests/utests/basic/test_context.c:733,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 736
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 1
    functionsReached:
    - assert_int_equal
    - LY_STMT_IS_NODE
    - lysc_tree_dfs_full
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(ext, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/tests/utests/basic/test_context.c:730,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:733,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/tests/utests/basic/test_context.c:733,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 735
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 1
    functionsReached:
    - assert_int_equal
    - LY_STMT_IS_NODE
    - lysc_tree_dfs_full
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(substmts, v)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/tests/utests/basic/test_context.c:749,1
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/basic/test_context.c:752,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ext
    argTypes:
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 757
    functionName: check_ext_instance_priv_parsed_not_set
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - CHECK_POINTER
    - LY_STMT_IS_NODE
    linkageType: ''
    returnType: void
    signature: void check_ext_instance_priv_parsed_not_set(struct lysc_ext_instance
      *ext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/tests/utests/basic/test_context.c:749,1
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/basic/test_context.c:752,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 756
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 1
    functionsReached:
    - CHECK_POINTER
    - LY_STMT_IS_NODE
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(ext, u)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/tests/utests/basic/test_context.c:749,1
    - Dst: CHECK_POINTER
      Src: /src/libyang/tests/utests/basic/test_context.c:752,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 748
    functionDepth: 1
    functionLinenumber: 748
    functionLinenumberEnd: 755
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 1
    functionsReached:
    - CHECK_POINTER
    - LY_STMT_IS_NODE
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(substmts, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:874,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:877,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:877,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:878,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/basic/test_context.c:878,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:879,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/basic/test_context.c:879,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_context.c:880,1
    - Dst: print_message
      Src: /src/libyang/tests/utests/basic/test_context.c:882,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:883,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:885,1
    - Dst: lysc_module_dfs_full
      Src: /src/libyang/tests/utests/basic/test_context.c:885,1
    - Dst: check_ext_instance_priv_parsed_is_set
      Src: /src/libyang/tests/utests/basic/test_context.c:886,1
    - Dst: print_message
      Src: /src/libyang/tests/utests/basic/test_context.c:888,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:889,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tests/utests/basic/test_context.c:889,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:890,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:892,1
    - Dst: lysc_module_dfs_full
      Src: /src/libyang/tests/utests/basic/test_context.c:892,1
    - Dst: check_ext_instance_priv_parsed_not_set
      Src: /src/libyang/tests/utests/basic/test_context.c:893,1
    - Dst: print_message
      Src: /src/libyang/tests/utests/basic/test_context.c:895,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:896,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tests/utests/basic/test_context.c:896,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tests/utests/basic/test_context.c:897,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:899,1
    - Dst: lysc_module_dfs_full
      Src: /src/libyang/tests/utests/basic/test_context.c:899,1
    - Dst: check_ext_instance_priv_parsed_is_set
      Src: /src/libyang/tests/utests/basic/test_context.c:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 762
    functionDepth: 2
    functionLinenumber: 762
    functionLinenumberEnd: 901
    functionName: test_set_priv_parsed
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - check_ext_instance_priv_parsed_not_set
    - ly_ctx_destroy
    - lysc_module_dfs_full
    - UTEST_ADD_MODULE
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - ly_ctx_unset_options
    - check_ext_instance_priv_parsed_is_set
    - assert_int_equal
    - assert_non_null
    - ly_ctx_get_module
    - print_message
    - ly_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_set_priv_parsed(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/basic/test_context.c:950,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:953,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/utests/basic/test_context.c:953,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_context.c:954,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_context.c:955,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_context.c:956,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:957,1
    - Dst: lys_set_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:957,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/tests/utests/basic/test_context.c:961,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/basic/test_context.c:962,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/basic/test_context.c:963,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_context.c:966,1
    - Dst: ly_ctx_compile
      Src: /src/libyang/tests/utests/basic/test_context.c:966,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:969,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:970,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:971,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:972,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:973,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:974,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:977,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:978,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:979,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:980,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/basic/test_context.c:981,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_context.c:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 983
    functionName: test_explicit_compile
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 0
    functionsReached:
    - assert_false
    - ly_ctx_destroy
    - UTEST_ADD_MODULE
    - ly_ctx_compile
    - ly_ctx_get_module_iter
    - ly_ctx_get_module_implemented
    - assert_int_equal
    - assert_non_null
    - lys_set_implemented
    - ly_ctx_new
    linkageType: ''
    returnType: void
    signature: void test_explicit_compile(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:989,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:990,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:991,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:992,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:993,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:994,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:995,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_context.c:996,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_context.c:999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 1000
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_context.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:30,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:30,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:32,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:32,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:36,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:36,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:38,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:38,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:43,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:43,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:45,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:45,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:51,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:51,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:53,1
    - Dst: ly_getutf8
      Src: /src/libyang/tests/utests/basic/test_common.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 54
    functionName: test_utf8
    functionSourceFile: /src/libyang/tests/utests/basic/test_common.c
    functionUses: 0
    functionsReached:
    - assert_int_equal
    - ly_getutf8
    linkageType: ''
    returnType: void
    signature: void test_utf8(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:63,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:63,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:63,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:64,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:68,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:68,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:68,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:69,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:73,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:73,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:73,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:74,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:78,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:78,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:79,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:83,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:83,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:83,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:85,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:85,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:85,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:89,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:89,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:89,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:93,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:93,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:93,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:96,1
    - Dst: ly_parse_int
      Src: /src/libyang/tests/utests/basic/test_common.c:96,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 97
    functionName: test_parse_int
    functionSourceFile: /src/libyang/tests/utests/basic/test_common.c
    functionUses: 0
    functionsReached:
    - assert_int_equal
    - ly_parse_int
    - strlen
    linkageType: ''
    returnType: void
    signature: void test_parse_int(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:106,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:106,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:106,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:107,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:111,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:111,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:111,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:115,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:115,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:116,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:120,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:120,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:120,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:122,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:122,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:122,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:126,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:126,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:126,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:130,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:130,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:130,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:133,1
    - Dst: ly_parse_uint
      Src: /src/libyang/tests/utests/basic/test_common.c:133,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 134
    functionName: test_parse_uint
    functionSourceFile: /src/libyang/tests/utests/basic/test_common.c
    functionUses: 0
    functionsReached:
    - assert_int_equal
    - strlen
    - ly_parse_uint
    linkageType: ''
    returnType: void
    signature: void test_parse_uint(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:144,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/tests/utests/basic/test_common.c:144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:147,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/tests/utests/basic/test_common.c:147,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:148,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:149,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_common.c:150,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:152,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_common.c:152,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:153,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:156,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/tests/utests/basic/test_common.c:156,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_common.c:157,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:158,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:159,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_common.c:159,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_common.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:161,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:162,1
    - Dst: strncmp
      Src: /src/libyang/tests/utests/basic/test_common.c:162,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 164
    functionName: test_parse_nodeid
    functionSourceFile: /src/libyang/tests/utests/basic/test_common.c
    functionUses: 0
    functionsReached:
    - ly_parse_nodeid
    - assert_null
    - assert_string_equal
    - assert_int_equal
    - strncmp
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_parse_nodeid(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:174,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:174,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:174,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:175,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:176,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:177,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:179,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:180,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:184,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:184,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:184,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:185,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:186,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:187,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:188,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:189,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:190,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:191,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:194,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:194,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:194,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:195,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:196,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:197,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:199,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:200,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:201,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:204,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:204,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:204,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:205,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:206,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:207,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:209,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:210,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:216,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:216,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:216,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:217,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:219,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:219,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:219,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:220,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:224,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:224,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:224,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:227,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:227,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:227,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:228,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:230,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:230,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:230,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:231,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:234,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:234,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:234,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:238,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:238,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:238,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:239,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:242,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:242,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:242,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:243,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:246,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:246,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:246,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:247,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:250,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:250,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:250,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:251,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:253,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:253,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:253,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:254,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:258,1
    - Dst: ly_parse_instance_predicate
      Src: /src/libyang/tests/utests/basic/test_common.c:258,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/basic/test_common.c:258,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 73
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 260
    functionName: test_parse_instance_predicate
    functionSourceFile: /src/libyang/tests/utests/basic/test_common.c
    functionUses: 0
    functionsReached:
    - strlen
    - assert_null
    - assert_string_equal
    - assert_int_equal
    - ly_parse_instance_predicate
    linkageType: ''
    returnType: void
    signature: void test_parse_instance_predicate(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:269,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:269,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:270,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:271,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:271,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:272,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:276,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:276,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:277,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:278,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:279,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:283,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:283,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:284,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:285,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:286,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:290,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:290,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:291,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:292,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:293,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:297,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:297,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:298,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:299,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:300,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:304,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:304,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:305,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:306,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:307,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:311,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:311,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:312,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:313,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:314,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:315,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:315,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:316,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:317,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:322,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:322,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:323,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:324,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:325,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:326,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:326,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:327,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:328,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:329,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:333,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:333,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:334,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:335,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:336,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:337,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:337,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:338,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:339,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:344,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:344,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:345,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:346,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:347,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:348,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:348,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:349,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:350,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:351,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:355,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:355,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:356,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:357,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:358,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:359,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:359,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:360,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:361,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:362,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:363,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:363,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:364,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:365,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:366,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:370,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:370,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:371,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:372,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:373,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:374,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:374,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:375,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:376,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:377,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:378,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:378,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:379,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:380,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:381,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:385,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:385,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:386,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:387,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:388,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:389,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:389,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:390,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:391,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:392,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:393,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:393,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:394,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:395,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:396,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:397,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/tests/utests/basic/test_common.c:397,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:398,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_common.c:399,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_common.c:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 109
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 401
    functionName: test_value_prefix_next
    functionSourceFile: /src/libyang/tests/utests/basic/test_common.c
    functionUses: 0
    functionsReached:
    - assert_string_equal
    - assert_int_equal
    - ly_value_prefix_next
    - assert_null
    linkageType: ''
    returnType: void
    signature: void test_value_prefix_next(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_common.c:407,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_common.c:408,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_common.c:409,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_common.c:410,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_common.c:411,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_common.c:412,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_common.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 416
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_common.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:31,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:31,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:32,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:32,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:33,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:33,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:34,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:37,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:37,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:38,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:38,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:39,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:39,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:40,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:44,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:44,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:45,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:45,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:46,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:46,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:47,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:47,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:48,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:48,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:49,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:52,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:52,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:53,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:53,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:54,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:54,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:55,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:55,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:56,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:56,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:57,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:60,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:60,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:61,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:61,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:62,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:62,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:63,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:63,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:64,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:64,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:65,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_json.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 68
    functionName: test_general
    functionSourceFile: /src/libyang/tests/utests/basic/test_json.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyjson_ctx_new
    - lyjson_ctx_free
    - lyjson_ctx_status
    - ly_in_new_memory
    - lyjson_ctx_next
    - assert_int_equal
    - ly_in_memory
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_general(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:79,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:79,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:80,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:80,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:81,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:81,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:82,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:83,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:84,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:85,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:89,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:89,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:90,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:90,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:91,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:91,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:93,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:94,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:95,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:99,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:99,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:100,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:101,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:101,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:104,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:105,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:109,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:109,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:110,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:110,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:111,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:111,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:114,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:115,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:118,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:118,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:119,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:119,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:120,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:120,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:121,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:122,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:123,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:124,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:127,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:127,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:128,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:128,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:129,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:129,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:130,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:131,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:132,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:133,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:136,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:136,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:137,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:137,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:141,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:141,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:142,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:142,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:143,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:143,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:145,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:146,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:147,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:150,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:150,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:151,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:151,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:152,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:152,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:153,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:154,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:155,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:156,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:160,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:161,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:161,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:162,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:162,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:163,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:164,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:165,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:166,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:169,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:170,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:170,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:171,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:171,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:172,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:173,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:174,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:175,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:178,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:179,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:179,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:180,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:180,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:181,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:182,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:183,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:184,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:188,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:188,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:189,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:189,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:190,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:190,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:191,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:192,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:193,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:194,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:197,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:197,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:198,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:199,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:199,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:200,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:201,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:202,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:203,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:207,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:207,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:208,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:209,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:209,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:210,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:211,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:212,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:213,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:216,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:216,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:217,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:217,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:218,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:218,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:219,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:220,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:221,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:222,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:225,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:226,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:226,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:227,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:227,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:228,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:229,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:230,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:231,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:235,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:236,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:236,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:237,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:240,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:240,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:241,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:241,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:242,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:245,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:245,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:246,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:246,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:247,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:250,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:250,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:251,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:251,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:252,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:255,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:255,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:256,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:256,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:257,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:260,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:260,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:261,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:261,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:262,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:265,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:265,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:266,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:266,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:267,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:270,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:270,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:271,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:271,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:272,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_json.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 165
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 275
    functionName: test_number
    functionSourceFile: /src/libyang/tests/utests/basic/test_json.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - lyjson_ctx_new
    - lyjson_ctx_status
    - ly_in_new_memory
    - lyjson_ctx_free
    - assert_string_equal
    - assert_int_equal
    - ly_in_memory
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_number(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:286,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:286,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:291,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:291,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:292,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:292,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:293,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:294,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:295,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:296,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:300,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:300,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:301,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:301,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:302,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:302,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:303,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:304,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:305,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:306,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:312,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:313,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:313,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:314,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:314,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:315,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:316,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:317,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:318,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:322,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:322,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:323,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:323,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:324,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:327,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:327,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:328,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:328,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:329,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:334,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:334,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:335,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:335,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:336,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:340,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:340,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:341,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:341,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:342,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:346,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:346,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:347,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:347,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:348,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_json.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 352
    functionName: test_string
    functionSourceFile: /src/libyang/tests/utests/basic/test_json.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - lyjson_ctx_new
    - lyjson_ctx_status
    - assert_ptr_equal
    - ly_in_new_memory
    - lyjson_ctx_free
    - assert_string_equal
    - assert_int_equal
    - ly_in_memory
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_string(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:363,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:363,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:364,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:364,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:365,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:365,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:366,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:366,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:367,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:367,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:368,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:372,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:372,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:373,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:373,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:374,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:374,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:375,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:376,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:377,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:378,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:379,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:379,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:380,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:380,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:381,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:382,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:383,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:384,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:385,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:385,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:386,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:386,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:387,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:387,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:388,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:388,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:389,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:393,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:393,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:394,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:394,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:395,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:395,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:396,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:397,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:398,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:399,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:400,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:400,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:401,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:401,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:402,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:403,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:403,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:404,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:404,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:405,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:406,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:407,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:408,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:409,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:409,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:410,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:410,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:411,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:412,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:412,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:413,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:413,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:414,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:414,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:415,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:415,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:416,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:420,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:420,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:421,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:421,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:422,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:422,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:423,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:424,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:425,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:426,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:427,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:427,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:428,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:428,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:429,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:430,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:431,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:432,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:433,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:433,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:434,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:434,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:435,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:436,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:437,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:438,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:439,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:439,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:440,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:440,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:441,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:442,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:442,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:443,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:443,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:444,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:444,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:445,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:445,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:446,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:450,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:450,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:451,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:451,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:452,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_json.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 85
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 455
    functionName: test_object
    functionSourceFile: /src/libyang/tests/utests/basic/test_json.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - lyjson_ctx_new
    - lyjson_ctx_status
    - ly_in_new_memory
    - lyjson_ctx_free
    - lyjson_ctx_next
    - assert_ptr_equal
    - assert_int_equal
    - assert_string_equal
    - ly_in_memory
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_object(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:466,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:466,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:467,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:467,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:468,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:468,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:469,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:469,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:470,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:470,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:471,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:475,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:475,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:476,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:476,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:477,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:477,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_json.c:478,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:479,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:480,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:481,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:482,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:482,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:483,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:483,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:484,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:485,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:485,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:486,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:486,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:487,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:487,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:488,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:488,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:489,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:493,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:493,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:494,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:494,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:495,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:495,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_json.c:496,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:497,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:498,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:499,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:500,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:500,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:501,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:501,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:502,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:503,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:504,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:505,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:506,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:506,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:507,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:507,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:508,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:509,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:509,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:510,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:510,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:511,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:512,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:512,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:513,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:513,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:514,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:515,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:516,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:517,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:518,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:518,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:519,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:519,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:520,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:520,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:521,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/tests/utests/basic/test_json.c:521,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:522,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_json.c:526,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/basic/test_json.c:526,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:527,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/tests/utests/basic/test_json.c:527,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_json.c:528,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/tests/utests/basic/test_json.c:528,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/basic/test_json.c:529,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/tests/utests/basic/test_json.c:530,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/basic/test_json.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 62
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 533
    functionName: test_array
    functionSourceFile: /src/libyang/tests/utests/basic/test_json.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - assert_null
    - lyjson_ctx_new
    - lyjson_ctx_status
    - ly_in_new_memory
    - lyjson_ctx_free
    - lyjson_ctx_next
    - assert_string_equal
    - assert_int_equal
    - ly_in_memory
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_array(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_json.c:539,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_json.c:540,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_json.c:541,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_json.c:542,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_json.c:543,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_json.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 547
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_json.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:90,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:91,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:95,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:96,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 7
    argNames:
    - mod_name
    - mod_rev
    - submod_name
    - sub_rev
    - user_data
    - format
    - module_data
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - void*
    - LYS_INFORMAT*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 103
    functionName: test_imp_clb
    functionSourceFile: /src/libyang/tests/utests/basic/test_yanglib.c
    functionUses: 0
    functionsReached:
    - assert_string_equal
    - assert_null
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR test_imp_clb(const char *mod_name, const char *mod_rev, const
      char *submod_name, const char *sub_rev, void *user_data,\n        LYS_INFORMAT
      *format, const char **module_data, void (**free_module_data)(void *model_data,
      void *user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_module_imp_clb
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:113,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:114,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:115,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:117,1
    - Dst: ly_ctx_get_yanglib_data
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:117,1
    - Dst: ly_ctx_get_change_count
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:117,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:118,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:119,1
    - Dst: ly_ctx_get_yanglib_data
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:119,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:120,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:121,1
    - Dst: ly_ctx_get_yanglib_data
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:121,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:122,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:123,1
    - Dst: ly_ctx_get_yanglib_data
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:123,1
    - Dst: ly_ctx_get_change_count
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:123,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:126,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:128,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:130,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:131,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 134
    functionName: test_yanglib
    functionSourceFile: /src/libyang/tests/utests/basic/test_yanglib.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - ly_ctx_set_module_imp_clb
    - lyd_free_all
    - UTEST_ADD_MODULE
    - ly_set_free
    - assert_int_equal
    - ly_ctx_get_change_count
    - ly_ctx_get_yanglib_data
    linkageType: ''
    returnType: void
    signature: void test_yanglib(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:140,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_yanglib.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 144
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_yanglib.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:33,1
    - Dst: ly_set_new
      Src: /src/libyang/tests/utests/basic/test_set.c:33,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_set.c:34,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:35,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:36,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/basic/test_set.c:37,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_set.c:40,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_set.c:41,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:43,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:43,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:44,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:45,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_set.c:46,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_set.c:47,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:50,1
    - Dst: ly_set_contains
      Src: /src/libyang/tests/utests/basic/test_set.c:50,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:51,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:52,1
    - Dst: ly_set_contains
      Src: /src/libyang/tests/utests/basic/test_set.c:52,1
    - Dst: ly_set_clean
      Src: /src/libyang/tests/utests/basic/test_set.c:57,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:58,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:59,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:60,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/basic/test_set.c:63,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:64,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:65,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:66,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_set.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 70
    functionName: test_basics
    functionSourceFile: /src/libyang/tests/utests/basic/test_set.c
    functionUses: 0
    functionsReached:
    - ly_set_contains
    - assert_null
    - assert_int_not_equal
    - ly_set_new
    - ly_set_free
    - assert_ptr_equal
    - strdup
    - assert_int_equal
    - ly_set_add
    - ly_set_erase
    - assert_non_null
    - ly_set_clean
    linkageType: ''
    returnType: void
    signature: void test_basics(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/tests/utests/basic/test_set.c:77,1
    - Dst: ly_set_clean
      Src: /src/libyang/tests/utests/basic/test_set.c:79,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:80,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/basic/test_set.c:82,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:83,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_set.c:85,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:86,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:88,1
    - Dst: ly_set_dup
      Src: /src/libyang/tests/utests/basic/test_set.c:88,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:89,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:91,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:91,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:94,1
    - Dst: ly_set_merge
      Src: /src/libyang/tests/utests/basic/test_set.c:94,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:95,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:96,1
    - Dst: ly_set_merge
      Src: /src/libyang/tests/utests/basic/test_set.c:96,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:98,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/tests/utests/basic/test_set.c:98,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:99,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:100,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/tests/utests/basic/test_set.c:100,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:101,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:103,1
    - Dst: ly_set_rm
      Src: /src/libyang/tests/utests/basic/test_set.c:103,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:104,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:105,1
    - Dst: ly_set_rm
      Src: /src/libyang/tests/utests/basic/test_set.c:105,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:106,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:107,1
    - Dst: ly_set_rm
      Src: /src/libyang/tests/utests/basic/test_set.c:107,1
    - Dst: CHECK_LOG
      Src: /src/libyang/tests/utests/basic/test_set.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 109
    functionName: test_inval
    functionSourceFile: /src/libyang/tests/utests/basic/test_set.c
    functionUses: 0
    functionsReached:
    - ly_set_rm
    - memset
    - ly_set_dup
    - ly_set_free
    - ly_set_merge
    - ly_set_clean
    - assert_int_equal
    - ly_set_rm_index
    - ly_set_add
    - ly_set_erase
    - CHECK_LOG
    linkageType: ''
    returnType: void
    signature: void test_inval(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:118,1
    - Dst: ly_set_new
      Src: /src/libyang/tests/utests/basic/test_set.c:118,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_set.c:119,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_set.c:122,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/basic/test_set.c:123,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:124,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:124,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:125,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:128,1
    - Dst: ly_set_dup
      Src: /src/libyang/tests/utests/basic/test_set.c:128,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:131,1
    - Dst: count::count
      Src: /src/libyang/tests/utests/basic/test_set.c:131,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:132,1
    - Dst: objs::objs
      Src: /src/libyang/tests/utests/basic/test_set.c:132,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:137,1
    - Dst: ly_set_dup
      Src: /src/libyang/tests/utests/basic/test_set.c:137,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:140,1
    - Dst: count::count
      Src: /src/libyang/tests/utests/basic/test_set.c:140,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:141,1
    - Dst: objs::objs
      Src: /src/libyang/tests/utests/basic/test_set.c:141,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:142,1
    - Dst: objs::objs
      Src: /src/libyang/tests/utests/basic/test_set.c:142,1
    - Dst: ly_set_free
      Src: /src/libyang/tests/utests/basic/test_set.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 147
    functionName: test_duplication
    functionSourceFile: /src/libyang/tests/utests/basic/test_set.c
    functionUses: 0
    functionsReached:
    - ly_set_dup
    - objs::objs
    - ly_set_new
    - ly_set_free
    - assert_ptr_equal
    - strdup
    - assert_string_equal
    - assert_int_equal
    - ly_set_add
    - assert_ptr_not_equal
    - assert_non_null
    - count::count
    linkageType: ''
    returnType: void
    signature: void test_duplication(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/tests/utests/basic/test_set.c:156,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:159,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:159,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:160,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:163,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:163,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:164,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:165,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:166,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:166,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:167,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:168,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:173,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:173,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:174,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/basic/test_set.c:176,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/basic/test_set.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 180
    functionName: test_add
    functionSourceFile: /src/libyang/tests/utests/basic/test_set.c
    functionUses: 0
    functionsReached:
    - memset
    - assert_true
    - assert_int_equal
    - ly_set_add
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: void test_add(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/tests/utests/basic/test_set.c:188,1
    - Dst: memset
      Src: /src/libyang/tests/utests/basic/test_set.c:189,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_set.c:191,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_set.c:192,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:196,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:196,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:199,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:199,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:200,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:200,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:204,1
    - Dst: ly_set_merge
      Src: /src/libyang/tests/utests/basic/test_set.c:204,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:205,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:206,1
    - Dst: ly_set_clean
      Src: /src/libyang/tests/utests/basic/test_set.c:209,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:210,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:210,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_set.c:210,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:214,1
    - Dst: ly_set_merge
      Src: /src/libyang/tests/utests/basic/test_set.c:214,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:215,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:216,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:217,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/basic/test_set.c:220,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/basic/test_set.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 222
    functionName: test_merge
    functionSourceFile: /src/libyang/tests/utests/basic/test_set.c
    functionUses: 0
    functionsReached:
    - memset
    - assert_ptr_equal
    - strdup
    - ly_set_merge
    - assert_int_equal
    - assert_string_equal
    - ly_set_add
    - assert_ptr_not_equal
    - ly_set_erase
    - ly_set_clean
    linkageType: ''
    returnType: void
    signature: void test_merge(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/tests/utests/basic/test_set.c:230,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:233,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:233,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:234,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:234,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_set.c:234,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:235,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:235,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:239,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/tests/utests/basic/test_set.c:239,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:240,1
    - Dst: assert_string_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:241,1
    - Dst: assert_string_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:242,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:244,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/tests/utests/basic/test_set.c:244,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:245,1
    - Dst: assert_string_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:246,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:248,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/tests/utests/basic/test_set.c:248,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:249,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:252,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:252,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:253,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:253,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:254,1
    - Dst: ly_set_add
      Src: /src/libyang/tests/utests/basic/test_set.c:254,1
    - Dst: strdup
      Src: /src/libyang/tests/utests/basic/test_set.c:254,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:258,1
    - Dst: ly_set_rm
      Src: /src/libyang/tests/utests/basic/test_set.c:258,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:259,1
    - Dst: assert_string_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:260,1
    - Dst: assert_string_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:261,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:263,1
    - Dst: ly_set_rm
      Src: /src/libyang/tests/utests/basic/test_set.c:263,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:264,1
    - Dst: assert_string_not_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:265,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:267,1
    - Dst: ly_set_rm
      Src: /src/libyang/tests/utests/basic/test_set.c:267,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/basic/test_set.c:268,1
    - Dst: ly_set_erase
      Src: /src/libyang/tests/utests/basic/test_set.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 1
    argNames:
    - UNUSED(state)
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 272
    functionName: test_rm
    functionSourceFile: /src/libyang/tests/utests/basic/test_set.c
    functionUses: 0
    functionsReached:
    - ly_set_rm
    - memset
    - strdup
    - assert_int_equal
    - assert_string_not_equal
    - ly_set_add
    - ly_set_rm_index
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: void test_rm(void **UNUSED(state))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_set.c:278,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_set.c:279,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_set.c:280,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_set.c:281,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_set.c:282,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/basic/test_set.c:283,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/basic/test_set.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 287
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/basic/test_set.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: TEST_SUCCESS_XML
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_XML(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: TEST_SUCCESS_JSON
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_JSON(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: TEST_ERROR_XML
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_XML(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: TEST_ERROR_JSON
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_JSON(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:90,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:95,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:96,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:98,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:99,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:101,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:103,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:104,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_range.c:105,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:108,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:114,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:115,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:117,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:118,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:120,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:122,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:123,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:126,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:132,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:133,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:135,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:136,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:138,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:140,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:141,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:144,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:155,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:156,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:158,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:159,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:161,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:163,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:164,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_range.c:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 167
    functionName: test_schema_yang
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_NUM
    - CHECK_LYSP_NODE_LEAF
    - UTEST_ADD_MODULE
    - MODULE_CREATE_YANG
    - CHECK_LYSP_TYPE
    - CHECK_LYSP_RESTR
    - CHECK_LYSC_RANGE
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yang(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_range.c:178,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:191,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:192,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:194,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:195,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:197,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:199,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:200,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_range.c:201,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_range.c:204,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:219,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:220,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:222,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:223,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:225,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:227,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:228,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_range.c:231,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:248,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:249,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:251,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:252,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:254,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:256,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:257,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_range.c:260,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:285,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:286,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:288,1
    - Dst: CHECK_LYSC_TYPE_NUM
      Src: /src/libyang/tests/utests/restriction/test_range.c:289,1
    - Dst: CHECK_LYSC_RANGE
      Src: /src/libyang/tests/utests/restriction/test_range.c:291,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_range.c:293,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_range.c:294,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_range.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 297
    functionName: test_schema_yin
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_NUM
    - CHECK_LYSP_NODE_LEAF
    - UTEST_ADD_MODULE
    - CHECK_LYSP_TYPE
    - CHECK_LYSP_RESTR
    - CHECK_LYSC_RANGE
    - MODULE_CREATE_YIN
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:307,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_range.c:313,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:328,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:329,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/restriction/test_range.c:330,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/restriction/test_range.c:330,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/restriction/test_range.c:331,1
    - Dst: free
      Src: /src/libyang/tests/utests/restriction/test_range.c:332,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:335,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_range.c:348,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:363,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_range.c:364,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/restriction/test_range.c:365,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/restriction/test_range.c:365,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/restriction/test_range.c:366,1
    - Dst: free
      Src: /src/libyang/tests/utests/restriction/test_range.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 368
    functionName: test_schema_print
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lys_print_mem
    - free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - MODULE_CREATE_YIN
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_schema_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:376,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:381,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:384,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:386,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_range.c:387,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:389,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_range.c:390,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:392,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_range.c:393,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_range.c:397,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_range.c:402,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:405,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:407,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_range.c:408,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:410,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_range.c:411,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_range.c:413,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_range.c:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 417
    functionName: test_data_xml
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - TEST_ERROR_XML
    - MODULE_CREATE_YANG
    - TEST_SUCCESS_XML
    linkageType: ''
    returnType: void
    signature: void test_data_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_range.c:423,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_range.c:424,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_range.c:425,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_range.c:426,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/restriction/test_range.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 430
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/restriction/test_range.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: MODULE_CREATE_YIN
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YIN(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - NODES
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: MODULE_CREATE_YANG
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MODULE_CREATE_YANG(MOD_NAME, NODES)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: TEST_SUCCESS_XML
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_XML(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - ','
    - TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: TEST_SUCCESS_JSON
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_SUCCESS_JSON(MOD_NAME, DATA, TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 72
    functionName: TEST_ERROR_XML
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_XML(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MOD_NAME
    - ','
    - DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: TEST_ERROR_JSON
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_ERROR_JSON(MOD_NAME, DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:91,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:96,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:97,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:99,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:100,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:102,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:105,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:106,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:107,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:111,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:117,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:118,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:120,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:121,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:123,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:126,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:127,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:130,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:136,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:137,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:139,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:140,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:142,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:145,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:147,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:148,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:149,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:152,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:162,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:163,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:165,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:166,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:168,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:171,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:174,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:175,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 178
    functionName: test_schema_yang
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_STR
    - CHECK_LYSP_NODE_LEAF
    - UTEST_ADD_MODULE
    - MODULE_CREATE_YANG
    - CHECK_LYSP_TYPE
    - CHECK_LYSC_PATTERN
    - CHECK_LYSP_RESTR
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yang(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:190,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:196,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:197,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:199,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:200,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:202,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:205,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:206,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:207,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:211,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:218,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:219,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:221,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:222,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:224,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:227,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:228,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:231,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:239,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:240,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:242,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:243,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:245,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:248,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:250,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:251,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:252,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:255,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:268,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:269,1
    - Dst: CHECK_LYSC_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:271,1
    - Dst: CHECK_LYSC_TYPE_STR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:272,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:274,1
    - Dst: CHECK_LYSC_PATTERN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:277,1
    - Dst: CHECK_LYSP_NODE_LEAF
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:280,1
    - Dst: CHECK_LYSP_TYPE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:281,1
    - Dst: CHECK_LYSP_RESTR
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 284
    functionName: test_schema_yin
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 0
    functionsReached:
    - CHECK_LYSC_TYPE_STR
    - CHECK_LYSP_NODE_LEAF
    - UTEST_ADD_MODULE
    - CHECK_LYSP_TYPE
    - CHECK_LYSC_PATTERN
    - CHECK_LYSP_RESTR
    - MODULE_CREATE_YIN
    - assert_non_null
    - CHECK_LYSC_NODE_LEAF
    linkageType: ''
    returnType: void
    signature: void test_schema_yin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:294,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:300,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:315,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:316,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:317,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:317,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:318,1
    - Dst: free
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:319,1
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:322,1
    - Dst: MODULE_CREATE_YIN
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:335,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:350,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:351,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:352,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:352,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:353,1
    - Dst: free
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 355
    functionName: test_schema_print
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lys_print_mem
    - free
    - MODULE_CREATE_YANG
    - assert_string_equal
    - assert_int_equal
    - MODULE_CREATE_YIN
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_schema_print(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MODULE_CREATE_YANG
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:363,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:373,1
    - Dst: TEST_SUCCESS_XML
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:376,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:378,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:379,1
    - Dst: TEST_ERROR_XML
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:381,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 385
    functionName: test_data_xml
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - TEST_ERROR_XML
    - MODULE_CREATE_YANG
    - TEST_SUCCESS_XML
    linkageType: ''
    returnType: void
    signature: void test_data_xml(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:391,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:392,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:393,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:394,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/restriction/test_pattern.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 398
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/restriction/test_pattern.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:40,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:41,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:41,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:43,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:44,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:45,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:52,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:52,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:53,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:59,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:59,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:60,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:66,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:66,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:67,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:73,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:73,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:74,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:80,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:80,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:81,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:87,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:87,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 90
    functionName: test_yang
    functionSourceFile: /src/libyang/tests/utests/extensions/test_metadata.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_yang(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:114,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:114,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:116,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:117,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:118,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:127,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:127,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:128,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:137,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:137,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:138,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:149,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:149,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:150,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:161,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:161,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:162,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:172,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:172,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:173,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:184,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:184,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 187
    functionName: test_yin
    functionSourceFile: /src/libyang/tests/utests/extensions/test_metadata.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - LY_ARRAY_COUNT
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_yin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:193,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:194,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/extensions/test_metadata.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 198
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/extensions/test_metadata.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:24,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:24,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:25,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 28
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/extensions/test_yangdata.c
    functionUses: 36
    functionsReached:
    - assert_int_equal
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_non_null
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:65,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:65,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:66,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:67,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:67,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:68,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:68,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:69,1
    - Dst: free
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:70,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:99,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:99,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:100,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:101,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:101,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:102,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:102,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:103,1
    - Dst: free
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:104,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:118,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:118,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:119,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:120,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:123,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:123,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:124,1
    - Dst: free
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:125,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:154,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:154,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:155,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:156,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:156,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:157,1
    - Dst: lys_print_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:157,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:158,1
    - Dst: free
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 160
    functionName: test_schema
    functionSourceFile: /src/libyang/tests/utests/extensions/test_yangdata.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - LY_ARRAY_COUNT
    - lys_print_mem
    - free
    - lys_parse_mem
    - assert_string_equal
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_schema(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:169,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:169,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:170,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:176,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:176,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:185,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:185,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:186,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:194,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:194,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:195,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:203,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:203,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:204,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:212,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:212,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:213,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:220,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:220,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:221,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:229,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:229,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 234
    functionName: test_schema_invalid
    functionSourceFile: /src/libyang/tests/utests/extensions/test_yangdata.c
    functionUses: 0
    functionsReached:
    - lys_parse_mem
    - CHECK_LOG_CTX
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_schema_invalid(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:248,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:248,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:249,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:251,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:251,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:252,1
    - Dst: lyd_parse_ext_data
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:252,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:253,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:254,1
    - Dst: ly_in_memory
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:256,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:257,1
    - Dst: lyd_parse_ext_data
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:257,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:258,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 261
    functionName: test_data
    functionSourceFile: /src/libyang/tests/utests/extensions/test_yangdata.c
    functionUses: 0
    functionsReached:
    - lyd_parse_ext_data
    - lyd_free_all
    - ly_in_new_memory
    - lys_parse_mem
    - assert_int_equal
    - ly_in_memory
    - CHECK_LYD_STRING_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_data(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:267,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:268,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:269,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/extensions/test_yangdata.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/extensions/test_yangdata.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:24,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:24,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:25,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 28
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/extensions/test_nacm.c
    functionUses: 36
    functionsReached:
    - assert_int_equal
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_non_null
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:44,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:44,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:45,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:46,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:47,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:48,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:48,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:49,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:49,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:50,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:51,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:52,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:58,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:58,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:59,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:67,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:67,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 71
    functionName: test_deny_all
    functionSourceFile: /src/libyang/tests/utests/extensions/test_nacm.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - assert_null
    - LY_ARRAY_COUNT
    - assert_ptr_equal
    - lys_parse_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_deny_all(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:87,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:87,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:88,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:89,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:90,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:91,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:91,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:92,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:92,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:93,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:94,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:100,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:100,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:101,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:109,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:109,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 113
    functionName: test_deny_write
    functionSourceFile: /src/libyang/tests/utests/extensions/test_nacm.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - LY_ARRAY_COUNT
    - assert_ptr_equal
    - lys_parse_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_deny_write(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:119,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:120,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/extensions/test_nacm.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/extensions/test_nacm.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:47,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:48,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_parser_json.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 51
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 36
    functionsReached:
    - assert_int_equal
    - ly_ctx_set_searchdir
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - INPUT
    - ','
    - PARSE_OPTION
    - ','
    - VALIDATE_OPTION
    - ','
    - TREE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: CHECK_PARSE_LYD
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD(INPUT, PARSE_OPTION, VALIDATE_OPTION, TREE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - INPUT
    - ','
    - PARSE_OPTION
    - ','
    - VALIDATE_OPTION
    - ','
    - MODEL
    - ','
    - RET_VAL
    - ','
    - ERR_MESSAGE
    - ','
    - ERR_PATH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: PARSER_CHECK_ERROR
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARSER_CHECK_ERROR(INPUT, PARSE_OPTION, VALIDATE_OPTION, MODEL, RET_VAL,
      ERR_MESSAGE, ERR_PATH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - IN_MODEL
    - ','
    - PRINT_OPTION
    - ','
    - TEXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: CHECK_LYD_STRING
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_STRING(IN_MODEL, PRINT_OPTION, TEXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:71,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_parser_json.c:71,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:74,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:75,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:77,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:79,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:83,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_parser_json.c:84,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:86,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:87,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:91,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:92,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:94,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:97,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/data/test_parser_json.c:98,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:100,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:101,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:105,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:106,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:108,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:111,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_parser_json.c:112,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:119,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:123,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:124,1
    - Dst: CHECK_LYD_META
      Src: /src/libyang/tests/utests/data/test_parser_json.c:125,1
    - Dst: CHECK_LYD_META
      Src: /src/libyang/tests/utests/data/test_parser_json.c:126,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:127,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:129,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:131,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:133,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:137,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 143
    functionName: test_leaf
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - assert_false
    - lyd_free_all
    - assert_null
    - CHECK_LYD_META
    - CHECK_LYD_STRING
    - assert_true
    - ly_ctx_load_module
    - CHECK_LYSC_NODE
    - CHECK_LYD_VALUE
    - PARSER_CHECK_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_leaf(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:153,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:154,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:156,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:159,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:161,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:162,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:165,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:167,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:168,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:172,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:173,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:175,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:178,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:179,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:181,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:182,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:185,1
    - Dst: CHECK_LYD_META
      Src: /src/libyang/tests/utests/data/test_parser_json.c:186,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:187,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:189,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:190,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:195,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:196,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:198,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:201,1
    - Dst: CHECK_LYD_META
      Src: /src/libyang/tests/utests/data/test_parser_json.c:202,1
    - Dst: CHECK_LYD_META
      Src: /src/libyang/tests/utests/data/test_parser_json.c:203,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:205,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:206,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:209,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:210,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:212,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:213,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:216,1
    - Dst: CHECK_LYD_META
      Src: /src/libyang/tests/utests/data/test_parser_json.c:217,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:218,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:220,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:222,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:225,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:228,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 55
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 233
    functionName: test_leaflist
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - assert_null
    - CHECK_LYD_META
    - CHECK_LYD_STRING
    - CHECK_LYSC_NODE
    - CHECK_LYD_VALUE
    - PARSER_CHECK_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_leaflist(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:242,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:243,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:245,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:247,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 249
    functionName: test_anydata
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - CHECK_LYD_STRING
    - CHECK_LYSC_NODE
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_anydata(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:261,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:262,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:265,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:266,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:269,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:270,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:273,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:276,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:279,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:283,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:287,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:288,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:291,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:292,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:293,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:294,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:295,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:296,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:297,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:298,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_parser_json.c:299,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:301,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:303,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:306,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:307,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:310,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:311,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:313,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:314,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:316,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:317,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_parser_json.c:319,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:321,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:323,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:326,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:327,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:329,1
    - Dst: CHECK_LYD_META
      Src: /src/libyang/tests/utests/data/test_parser_json.c:331,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:332,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:334,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 49
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 336
    functionName: test_list
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - CHECK_LOG_CTX
    - lyd_free_all
    - assert_int_not_equal
    - CHECK_LYD_META
    - assert_null
    - CHECK_LYD_STRING
    - LY_LIST_FOR
    - CHECK_LYSC_NODE
    - PARSER_CHECK_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:345,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:346,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_parser_json.c:349,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:351,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:352,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:355,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:356,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:358,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/data/test_parser_json.c:361,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:363,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 365
    functionName: test_container
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - assert_false
    - lyd_free_all
    - CHECK_LYD_STRING
    - assert_true
    - CHECK_LYSC_NODE
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_container(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:375,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:379,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_json.c:380,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:381,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:382,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:386,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:390,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_json.c:391,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:392,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:393,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:397,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:401,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_json.c:402,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:403,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:404,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:407,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_json.c:408,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:409,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:410,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_json.c:413,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_json.c:414,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:415,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:416,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_json.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 421
    functionName: test_opaq
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - CHECK_LYD_STRING
    - CHECK_LYD_NODE_OPAQ
    - PARSER_CHECK_ERROR
    linkageType: ''
    returnType: void
    signature: void test_opaq(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:435,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_parser_json.c:435,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:442,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_json.c:442,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:443,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_json.c:443,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_json.c:444,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:446,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_json.c:448,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_json.c:453,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_json.c:456,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:457,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:461,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_json.c:463,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_json.c:465,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_json.c:468,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:470,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 475
    functionName: test_rpc
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_ctx_load_module
    - ly_in_new_memory
    - CHECK_LYSC_NODE
    - CHECK_LYD_NODE_OPAQ
    - assert_int_equal
    - lyd_parse_op
    - lyd_child
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_rpc(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:485,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_json.c:485,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:486,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_json.c:486,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_json.c:487,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:489,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_json.c:490,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:494,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 499
    functionName: test_action
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - assert_int_equal
    - lyd_parse_op
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_action(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:509,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_json.c:509,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:510,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_json.c:510,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_json.c:511,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:513,1
    - Dst: CHECK_LYSC_NOTIF
      Src: /src/libyang/tests/utests/data/test_parser_json.c:514,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:516,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:518,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:519,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:522,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_json.c:522,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:523,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_json.c:523,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_json.c:524,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:526,1
    - Dst: CHECK_LYSC_NOTIF
      Src: /src/libyang/tests/utests/data/test_parser_json.c:527,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:529,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:530,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:532,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 537
    functionName: test_notification
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - CHECK_LYSC_NODE
    - assert_ptr_equal
    - assert_int_equal
    - lyd_parse_op
    - CHECK_LYSC_NOTIF
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_notification(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:548,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_json.c:548,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_json.c:549,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_json.c:549,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_json.c:550,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_json.c:552,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_json.c:553,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_json.c:556,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:557,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_json.c:559,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:562,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_json.c:562,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_json.c:563,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_json.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 568
    functionName: test_reply
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - CHECK_LYSC_NODE
    - assert_int_equal
    - lyd_parse_op
    - lyd_child
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_reply(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:574,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:575,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:576,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:577,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:578,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:579,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:580,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:581,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:582,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_json.c:583,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_parser_json.c:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 587
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_json.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:92,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:93,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 97
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 36
    functionsReached:
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - INPUT
    - ','
    - PARSE_OPTION
    - ','
    - VALIDATE_OPTION
    - ','
    - TREE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: CHECK_PARSE_LYD
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD(INPUT, PARSE_OPTION, VALIDATE_OPTION, TREE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - IN_MODEL
    - ','
    - PRINT_OPTION
    - ','
    - TEXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: CHECK_LYD_STRING
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_STRING(IN_MODEL, PRINT_OPTION, TEXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:115,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:116,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 119
    functionName: test_leaf
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - CHECK_LYD_STRING
    - lyd_free_all
    linkageType: ''
    returnType: void
    signature: void test_leaf(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:128,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:131,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:132,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:135,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:136,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:137,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:147,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:148,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:151,1
    - Dst: CHECK_LYD_NODE_ANY
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:152,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:155,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:157,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:168,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:169,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:176,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:177,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:178,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:185,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:186,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:187,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:192,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:193,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:194,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:201,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:202,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 204
    functionName: test_anydata
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - assert_null
    - CHECK_LYD_NODE_ANY
    - CHECK_LYD_STRING
    - CHECK_LYSC_NODE
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_anydata(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:216,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:216,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:217,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:217,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:221,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:222,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:225,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:230,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:235,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:236,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:240,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:241,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:242,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:243,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:244,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:245,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:257,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:258,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:259,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:260,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:261,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 263
    functionName: test_defaults
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_defaults(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:281,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:281,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:286,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:286,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:287,1
    - Dst: lyd_print_tree
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:287,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:288,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:288,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:289,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:290,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:291,1
    - Dst: lyd_trees_new
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:291,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:292,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:292,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:293,1
    - Dst: lyd_print_tree
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:293,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:294,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:294,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:295,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:296,1
    - Dst: lyd_trees_free
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:297,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:298,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:299,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:305,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:305,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:306,1
    - Dst: lyd_print_tree
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:306,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:307,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:307,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:308,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:309,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:310,1
    - Dst: lyd_trees_new
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:310,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:311,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:311,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:312,1
    - Dst: lyd_print_tree
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:312,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:313,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:313,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:314,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:315,1
    - Dst: lyd_trees_free
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:316,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:317,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:318,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:329,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:329,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:330,1
    - Dst: lyd_print_tree
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:330,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:331,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:331,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:332,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:333,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:334,1
    - Dst: lyd_trees_new
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:334,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:335,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:335,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:336,1
    - Dst: lyd_print_tree
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:336,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:337,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:337,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:338,1
    - Dst: ly_out_reset
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:339,1
    - Dst: lyd_trees_free
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:340,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:341,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:342,1
    - Dst: ly_out_free
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 56
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 346
    functionName: test_rpc
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 0
    functionsReached:
    - strlen
    - lyd_free_all
    - assert_true
    - lyd_trees_free
    - assert_string_equal
    - assert_int_equal
    - ly_out_reset
    - lyd_print_tree
    - ly_out_free
    - assert_non_null
    - lyd_trees_new
    - ly_out_new_memory
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_rpc(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:354,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:355,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:356,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_printer_xml.c:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 360
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_printer_xml.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT
    - ','
    - MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 21
    functionName: LYD_TREE_CREATE
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_TREE_CREATE(INPUT, MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MODEL
    - ','
    - TEXT
    - ','
    - PARAMS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: LYD_TREE_CHECK_CHAR
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_TREE_CHECK_CHAR(MODEL, TEXT, PARAMS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_merge.c:178,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_merge.c:182,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:183,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:183,1
    - Dst: LYD_TREE_CHECK_CHAR
      Src: /src/libyang/tests/utests/data/test_merge.c:186,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 189
    functionName: test_batch
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - LYD_TREE_CHECK_CHAR
    - lyd_free_all
    - lyd_merge_siblings
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_batch(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:209,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:211,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:212,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:215,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:215,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:216,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:216,1
    - Dst: LYD_TREE_CHECK_CHAR
      Src: /src/libyang/tests/utests/data/test_merge.c:219,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:221,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 223
    functionName: test_leaf
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - LYD_TREE_CHECK_CHAR
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - lyd_merge_siblings
    - LYD_TREE_CREATE
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_leaf(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:248,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:250,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:251,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:254,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:254,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:255,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:255,1
    - Dst: LYD_TREE_CHECK_CHAR
      Src: /src/libyang/tests/utests/data/test_merge.c:258,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:261,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 263
    functionName: test_container
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - LYD_TREE_CHECK_CHAR
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - lyd_merge_siblings
    - LYD_TREE_CREATE
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_container(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:315,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:317,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:321,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:322,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:322,1
    - Dst: LYD_TREE_CHECK_CHAR
      Src: /src/libyang/tests/utests/data/test_merge.c:325,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:327,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 265
    functionDepth: 1
    functionLinenumber: 265
    functionLinenumberEnd: 329
    functionName: test_list
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - LYD_TREE_CHECK_CHAR
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - lyd_merge_siblings
    - LYD_TREE_CREATE
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:390,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:392,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:393,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:396,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:396,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:397,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:397,1
    - Dst: LYD_TREE_CHECK_CHAR
      Src: /src/libyang/tests/utests/data/test_merge.c:400,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:402,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 404
    functionName: test_list2
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - LYD_TREE_CHECK_CHAR
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - lyd_merge_siblings
    - LYD_TREE_CREATE
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_list2(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:445,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:447,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:448,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:451,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:451,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:452,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:452,1
    - Dst: LYD_TREE_CHECK_CHAR
      Src: /src/libyang/tests/utests/data/test_merge.c:455,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:457,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 459
    functionName: test_case
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - LYD_TREE_CHECK_CHAR
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - lyd_merge_siblings
    - LYD_TREE_CREATE
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_case(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:484,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:486,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_merge.c:486,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:487,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:487,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:489,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_merge.c:489,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:490,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_merge.c:490,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:491,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:491,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:493,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:493,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:497,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_merge.c:497,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_merge.c:498,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_merge.c:498,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:500,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 502
    functionName: test_dflt
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - assert_true
    - lyd_merge_siblings
    - assert_string_equal
    - assert_int_equal
    - lyd_new_path
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void test_dflt(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:527,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:529,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_merge.c:529,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:530,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:530,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:532,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_merge.c:532,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:533,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_merge.c:533,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:534,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_merge.c:534,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:536,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:536,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/data/test_merge.c:539,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_merge.c:539,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:541,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 543
    functionName: test_dflt2
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - assert_false
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - lyd_merge_siblings
    - assert_int_equal
    - lyd_new_path
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void test_dflt2(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_merge.c:565,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:567,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_merge.c:568,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_merge.c:570,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tests/utests/data/test_merge.c:570,1
    - Dst: LYD_TREE_CHECK_CHAR
      Src: /src/libyang/tests/utests/data/test_merge.c:572,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:574,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_merge.c:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 576
    functionName: test_leafrefs
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 0
    functionsReached:
    - LYD_TREE_CHECK_CHAR
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_merge_siblings
    - LYD_TREE_CREATE
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_leafrefs(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:582,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:583,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:584,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:585,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:586,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:587,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:588,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:589,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_merge.c:590,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_merge.c:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 594
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_merge.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_new.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:95,1
    - Dst: lyd_new_list
      Src: /src/libyang/tests/utests/data/test_new.c:95,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:96,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:98,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:98,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:99,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:101,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:101,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:104,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:104,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:105,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:107,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:107,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:108,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:110,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:110,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:111,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:113,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:113,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:116,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:116,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:117,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:119,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:119,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:120,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:123,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_new.c:123,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:124,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:126,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_new.c:126,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:127,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:129,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_new.c:129,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:130,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:133,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_new.c:133,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:134,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:137,1
    - Dst: lyd_new_inner
      Src: /src/libyang/tests/utests/data/test_new.c:137,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:138,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:140,1
    - Dst: lyd_new_inner
      Src: /src/libyang/tests/utests/data/test_new.c:140,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:141,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:143,1
    - Dst: lyd_new_inner
      Src: /src/libyang/tests/utests/data/test_new.c:143,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:147,1
    - Dst: lyd_new_any
      Src: /src/libyang/tests/utests/data/test_new.c:147,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:148,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:151,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:151,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:152,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:154,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:154,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:155,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:157,1
    - Dst: lyd_new_list2
      Src: /src/libyang/tests/utests/data/test_new.c:157,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:158,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:160,1
    - Dst: lyd_new_list
      Src: /src/libyang/tests/utests/data/test_new.c:160,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:161,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:164,1
    - Dst: lyd_new_inner
      Src: /src/libyang/tests/utests/data/test_new.c:164,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:165,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_new.c:165,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:166,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:167,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_new.c:167,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:168,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 170
    functionName: test_top_level
    functionSourceFile: /src/libyang/tests/utests/data/test_new.c
    functionUses: 0
    functionsReached:
    - lyd_new_term
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - lyd_free_tree
    - lyd_new_list
    - lyd_new_list2
    - assert_int_equal
    - lyd_new_inner
    - lyd_new_any
    linkageType: ''
    returnType: void
    signature: void test_top_level(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_new.c:178,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:180,1
    - Dst: lyd_new_opaq
      Src: /src/libyang/tests/utests/data/test_new.c:180,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_new.c:181,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:183,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:184,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:185,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:187,1
    - Dst: lyd_new_opaq
      Src: /src/libyang/tests/utests/data/test_new.c:187,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_new.c:188,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:190,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:191,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:192,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_new.c:193,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 196
    functionName: test_opaq
    functionSourceFile: /src/libyang/tests/utests/data/test_new.c
    functionUses: 0
    functionsReached:
    - assert_null
    - UTEST_ADD_MODULE
    - lyd_free_tree
    - lyd_new_opaq
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_opaq(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_new.c:206,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:209,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:210,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:211,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:212,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:213,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:214,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:215,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:215,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:218,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:219,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_new.c:220,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:221,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:222,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:222,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:225,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:226,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_new.c:227,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:228,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:229,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:229,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:231,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:234,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:235,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:236,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:238,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:239,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:240,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_new.c:241,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:243,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:245,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:246,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_new.c:247,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:249,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:250,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:251,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_new.c:252,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:254,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:257,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:258,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:259,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:260,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:261,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:261,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:263,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:264,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:266,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:267,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:269,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:270,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:271,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:273,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:274,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:275,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:277,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:278,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:279,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:281,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:282,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:283,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:285,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:286,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:287,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_new.c:289,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:290,1
    - Dst: free
      Src: /src/libyang/tests/utests/data/test_new.c:311,1
    - Dst: lyd_free_siblings
      Src: /src/libyang/tests/utests/data/test_new.c:312,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:315,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:316,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:317,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:318,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:319,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:319,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:321,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:322,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:324,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:325,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:327,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:328,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:329,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:331,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:332,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:333,1
    - Dst: lyd_new_path2
      Src: /src/libyang/tests/utests/data/test_new.c:335,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:336,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_new.c:338,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:339,1
    - Dst: free
      Src: /src/libyang/tests/utests/data/test_new.c:343,1
    - Dst: lyd_free_siblings
      Src: /src/libyang/tests/utests/data/test_new.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 85
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 345
    functionName: test_path
    functionSourceFile: /src/libyang/tests/utests/data/test_new.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_print_mem
    - assert_null
    - lyd_new_path2
    - UTEST_ADD_MODULE
    - lyd_free_tree
    - free
    - assert_ptr_equal
    - assert_string_equal
    - assert_int_equal
    - lyd_get_value
    - assert_non_null
    - lyd_free_siblings
    linkageType: ''
    returnType: void
    signature: void test_path(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:357,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_new.c:357,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:358,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_new.c:358,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_new.c:360,1
    - Dst: lyd_new_ext_path
      Src: /src/libyang/tests/utests/data/test_new.c:363,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:364,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:365,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:366,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_new.c:367,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_new.c:367,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:368,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:369,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:369,1
    - Dst: lyd_new_ext_path
      Src: /src/libyang/tests/utests/data/test_new.c:372,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:373,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:374,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:375,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:375,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_new.c:378,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_new.c:379,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:380,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_new.c:381,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_new.c:381,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_new.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 384
    functionName: test_path_ext
    functionSourceFile: /src/libyang/tests/utests/data/test_new.c
    functionUses: 0
    functionsReached:
    - UTEST_ADD_MODULE
    - lyd_free_tree
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - lyd_new_ext_path
    - assert_int_equal
    - assert_string_equal
    - lyd_new_path
    - lyd_child
    - lyd_get_value
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_path_ext(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_new.c:390,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_new.c:391,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_new.c:392,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_new.c:393,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_new.c:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 397
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_new.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT
    - ','
    - MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: LYD_TREE_CREATE
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_TREE_CREATE(INPUT, MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:57,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:59,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:60,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:62,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_validation.c:63,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:64,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:65,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:67,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_validation.c:68,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_validation.c:68,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:69,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_validation.c:69,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_validation.c:70,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:71,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 73
    functionName: test_when
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - CHECK_LYSC_NODE
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void test_when(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:105,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:107,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:108,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:110,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:111,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:113,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_validation.c:114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:115,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:116,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:118,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_validation.c:119,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_validation.c:119,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:120,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_validation.c:120,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 122
    functionName: test_mandatory_when
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - CHECK_LYSC_NODE
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void test_mandatory_when(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:154,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:156,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:157,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:159,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:160,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:162,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:163,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:165,1
    - Dst: lyd_free_siblings
      Src: /src/libyang/tests/utests/data/test_validation.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 167
    functionName: test_mandatory
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - CHECK_PARSE_LYD_PARAM
    - lyd_free_siblings
    linkageType: ''
    returnType: void
    signature: void test_mandatory(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:202,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:204,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:207,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:209,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:212,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:214,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:217,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:219,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 229
    functionName: test_minmax
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_minmax(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:286,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:288,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:295,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:297,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:305,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:307,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:315,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:319,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:351,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:353,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:382,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:384,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 415
    functionName: test_unique
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_unique(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:422,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:425,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:480,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:482,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:538,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:541,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:576,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:579,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 624
    functionName: test_unique_nested
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_unique_nested(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:680,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:682,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:684,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:686,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:690,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:692,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:696,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:698,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:700,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:703,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:705,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:707,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:714,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:716,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:719,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:722,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:727,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:729,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 734
    functionName: test_dup
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - CHECK_PARSE_LYD_PARAM
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: void
    signature: void test_dup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:817,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:819,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_validation.c:819,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_validation.c:820,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_validation.c:820,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:824,1
    - Dst: lyd_validate_module
      Src: /src/libyang/tests/utests/data/test_validation.c:824,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_validation.c:825,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_validation.c:826,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:829,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:847,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:863,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:866,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_validation.c:866,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:867,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/tests/utests/data/test_validation.c:867,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:868,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_validation.c:868,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:871,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:887,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:892,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:895,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_validation.c:895,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:896,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/tests/utests/data/test_validation.c:896,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:897,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_validation.c:897,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:898,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/tests/utests/data/test_validation.c:898,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:899,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_validation.c:899,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:902,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:917,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:922,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:925,1
    - Dst: lyd_new_inner
      Src: /src/libyang/tests/utests/data/test_validation.c:925,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:926,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/tests/utests/data/test_validation.c:926,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:927,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_validation.c:927,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:930,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_validation.c:944,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:947,1
    - Dst: lyd_new_inner
      Src: /src/libyang/tests/utests/data/test_validation.c:947,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:948,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/tests/utests/data/test_validation.c:948,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:949,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_validation.c:949,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:952,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_validation.c:966,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:969,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_validation.c:969,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:970,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_validation.c:970,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:971,1
    - Dst: lyd_new_term
      Src: /src/libyang/tests/utests/data/test_validation.c:971,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:972,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_validation.c:972,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:975,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:987,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:997,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:998,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1001,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1003,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 46
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 1022
    functionName: test_defaults
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - lyd_new_term
    - lyd_free_all
    - assert_null
    - UTEST_ADD_MODULE
    - lyd_validate_module
    - lyd_validate_all
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - lyd_insert_sibling
    - lyd_new_inner
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_defaults(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:1045,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1052,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:1053,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1056,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1057,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tests/utests/data/test_validation.c:1057,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:1058,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1061
    functionName: test_state
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_validate_all
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_state(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:1084,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1086,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:1090,1
    - Dst: LYD_TREE_CREATE
      Src: /src/libyang/tests/utests/data/test_validation.c:1093,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:1097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1098
    functionName: test_must
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - LYD_TREE_CREATE
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_must(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:1157,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1159,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_validation.c:1159,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1168,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1168,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_validation.c:1169,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1172,1
    - Dst: lyd_validate_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1172,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:1173,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_validation.c:1175,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1177,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1184,1
    - Dst: lyd_validate_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1184,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:1185,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:1188,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1189,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1196,1
    - Dst: lyd_validate_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1196,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_validation.c:1198,1
    - Dst: lyd_free_siblings
      Src: /src/libyang/tests/utests/data/test_validation.c:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1151
    functionDepth: 1
    functionLinenumber: 1151
    functionLinenumberEnd: 1200
    functionName: test_action
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_free_tree
    - ly_in_new_memory
    - assert_int_equal
    - lyd_parse_op
    - CHECK_PARSE_LYD_PARAM
    - lyd_validate_op
    - assert_non_null
    - lyd_free_siblings
    linkageType: ''
    returnType: void
    signature: void test_action(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_validation.c:1208,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1210,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_validation.c:1210,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1219,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1219,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_validation.c:1220,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_validation.c:1221,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1224,1
    - Dst: lyd_validate_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1224,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:1225,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1228,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1235,1
    - Dst: lyd_validate_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1235,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_validation.c:1236,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:1238,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_validation.c:1239,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_validation.c:1246,1
    - Dst: lyd_validate_op
      Src: /src/libyang/tests/utests/data/test_validation.c:1246,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/utests/data/test_validation.c:1248,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_validation.c:1249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1202
    functionDepth: 1
    functionLinenumber: 1202
    functionLinenumberEnd: 1250
    functionName: test_reply
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 0
    functionsReached:
    - CHECK_LOG_CTX
    - ly_in_free
    - lyd_free_all
    - UTEST_ADD_MODULE
    - lyd_free_tree
    - ly_in_new_memory
    - assert_int_equal
    - lyd_parse_op
    - CHECK_PARSE_LYD_PARAM
    - lyd_validate_op
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_reply(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1256,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1257,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1258,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1259,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1260,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1261,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1262,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1263,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1264,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1265,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1266,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_validation.c:1267,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_validation.c:1270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1271
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_validation.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_types.c:77,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_types.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 81
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 36
    functionsReached:
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT
    - ','
    - MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: CHECK_PARSE_LYD
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD(INPUT, MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - INPUT
    - ','
    - SCHEMA_NAME
    - ','
    - SCHEMA_NEXT
    - ','
    - VALUE_TYPE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: TEST_PATTERN_1
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_PATTERN_1(INPUT, SCHEMA_NAME, SCHEMA_NEXT, VALUE_TYPE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - TYPE
    - ','
    - VALUE
    - ','
    - ERROR_MSG
    - ','
    - LINE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: TEST_TYPE_ERROR
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_TYPE_ERROR(TYPE, VALUE, ERROR_MSG, LINE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - VALUE
    - ','
    - EXPECTED
    - ','
    - FORMAT
    - ','
    - PREFIX_DATA
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: TEST_PRINTED_VALUE
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_PRINTED_VALUE(VALUE, EXPECTED, FORMAT, PREFIX_DATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:150,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:151,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:153,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:154,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:158,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:162,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:166,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:168,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:170,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 173
    functionName: test_int
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 1
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - TEST_TYPE_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_int(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:181,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:182,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:184,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:185,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:188,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:190,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:194,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:196,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:197,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:198,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 200
    functionName: test_uint
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - CHECK_LOG_CTX
    - lyd_free_all
    - TEST_TYPE_ERROR
    - CHECK_PARSE_LYD_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_uint(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:208,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:209,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:211,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:212,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:214,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:215,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:217,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:218,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:220,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:221,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:223,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/data/test_types.c:223,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/data/test_types.c:223,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:224,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:226,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:227,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:229,1
    - Dst: INT64_C
      Src: /src/libyang/tests/utests/data/test_types.c:229,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:230,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:233,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:234,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:237,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:238,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:239,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:240,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:241,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 243
    functionName: test_dec64
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - CHECK_LOG_CTX
    - lyd_free_all
    - INT64_C
    - TEST_TYPE_ERROR
    - CHECK_PARSE_LYD_PARAM
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_dec64(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:253,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:254,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:256,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:257,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:260,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:261,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:263,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:264,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:266,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:270,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:271,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:273,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:274,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:277,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:279,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:281,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:285,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:287,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 292
    functionName: test_string
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - TEST_TYPE_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_string(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:303,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:304,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:306,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:307,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:309,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:310,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:312,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:313,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:316,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:319,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:322,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 326
    functionName: test_bits
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - TEST_TYPE_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_bits(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:336,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:337,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:339,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:340,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:343,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:346,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:347,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 351
    functionName: test_enums
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - TEST_TYPE_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_enums(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:360,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:361,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:363,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:364,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:365,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:366,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:368,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:369,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:370,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:373,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:374,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:376,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:377,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:379,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:380,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:382,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:383,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:385,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:386,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:388,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:389,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:392,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:395,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:397,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:401,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 405
    functionName: test_binary
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - TEST_TYPE_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_binary(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:415,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:416,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:418,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:419,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:421,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:422,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:424,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:425,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:427,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:428,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:430,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:431,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:434,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 437
    functionName: test_boolean
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - TEST_TYPE_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_boolean(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:445,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:446,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:448,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:449,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:451,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:452,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:454,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:455,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:457,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:458,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:460,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:461,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:464,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 467
    functionName: test_empty
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - TEST_TYPE_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_empty(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:477,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/data/test_types.c:477,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:478,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/data/test_types.c:478,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:481,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:482,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:484,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:486,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:487,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:489,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:490,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:492,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:494,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:495,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:498,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:501,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:503,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:506,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:508,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:511,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 515
    functionName: test_identityref
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - CHECK_LOG_CTX
    - lyd_free_all
    - ly_ctx_get_module_implemented
    - TEST_TYPE_ERROR
    - CHECK_PARSE_LYD_PARAM
    - assert_non_null
    - TEST_PRINTED_VALUE
    linkageType: ''
    returnType: void
    signature: void test_identityref(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - prefix
    - prefix_len
    - private
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 526
    functionName: test_instanceid_getprefix
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      test_instanceid_getprefix(const struct ly_ctx *ctx, const char *prefix, size_t
      prefix_len, void * private)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:536,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/data/test_types.c:536,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:539,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:544,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:546,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:547,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:548,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:550,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:555,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:557,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:557,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:558,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:559,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:560,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:562,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:567,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:569,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:570,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:576,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:580,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:582,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:582,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:583,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:584,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:586,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:586,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_types.c:587,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:588,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:589,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:590,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:594,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:598,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:600,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:600,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:601,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:602,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:603,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:609,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:613,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:615,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:615,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:616,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:617,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:618,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:623,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:627,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:629,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:629,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:630,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:631,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:632,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:637,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:641,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:643,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:643,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:644,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:645,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:646,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:651,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:655,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:657,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:657,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:658,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:659,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:660,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:666,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:670,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:672,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/tests/utests/data/test_types.c:672,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:673,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:674,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:675,1
    - Dst: lyd_target
      Src: /src/libyang/tests/utests/data/test_types.c:675,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_types.c:676,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_types.c:676,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_types.c:677,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_types.c:677,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:678,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:684,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:685,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:688,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:689,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:692,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:693,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:696,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:697,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:700,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:701,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:703,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:707,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:708,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:712,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:713,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:717,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:718,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:721,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:722,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:725,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:726,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:730,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:731,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:735,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:736,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:740,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:741,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:744,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:745,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:749,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:750,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:753,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:754,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:757,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:758,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:762,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:763,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:768,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:769,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:773,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:774,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:778,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:779,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:784,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:785,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:790,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:791,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:796,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:797,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:802,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:803,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:808,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:809,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:817,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:820,1
    - Dst: lyd_value_validate
      Src: /src/libyang/tests/utests/data/test_types.c:820,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_types.c:820,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:822,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:825,1
    - Dst: lyd_value_validate
      Src: /src/libyang/tests/utests/data/test_types.c:825,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_types.c:825,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:827,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:830,1
    - Dst: lyd_value_validate
      Src: /src/libyang/tests/utests/data/test_types.c:830,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_types.c:830,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:832,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:834,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:838,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 187
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 840
    functionName: test_instanceid
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - CHECK_LOG_CTX
    - strlen
    - lyd_free_all
    - assert_null
    - lyd_target
    - LY_ARRAY_COUNT
    - lyd_value_validate
    - ly_ctx_get_module_implemented
    - CHECK_LYSC_NODE
    - TEST_TYPE_ERROR
    - assert_string_equal
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - lyd_get_value
    - assert_non_null
    - TEST_PRINTED_VALUE
    linkageType: ''
    returnType: void
    signature: void test_instanceid(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_types.c:860,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:866,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:868,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/data/test_types.c:870,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:871,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:876,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:878,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/data/test_types.c:880,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:881,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:885,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:886,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_types.c:887,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_types.c:887,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:888,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/data/test_types.c:889,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:890,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:895,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:896,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_types.c:897,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_types.c:897,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:898,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/data/test_types.c:899,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:900,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:906,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:907,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_types.c:908,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_types.c:908,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_types.c:909,1
    - Dst: CHECK_LYD_NODE_TERM
      Src: /src/libyang/tests/utests/data/test_types.c:910,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:911,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:915,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:916,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:923,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:924,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:931,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:932,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:937,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:938,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:944,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:945,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_types.c:951,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_types.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 55
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 955
    functionName: test_leafref
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - CHECK_LYD_NODE_TERM
    - CHECK_LOG_CTX
    - lyd_free_all
    - UTEST_ADD_MODULE
    - CHECK_LYSC_NODE
    - lyd_child
    - CHECK_PARSE_LYD_PARAM
    linkageType: ''
    returnType: void
    signature: void test_leafref(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_types.c:965,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/data/test_types.c:965,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:981,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:983,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:985,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:986,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:987,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:990,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:992,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:994,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:995,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:996,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:999,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:1001,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:1003,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:1004,1
    - Dst: TEST_PRINTED_VALUE
      Src: /src/libyang/tests/utests/data/test_types.c:1005,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:1006,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:1009,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:1011,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:1013,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:1014,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:1018,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:1022,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:1025,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:1026,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_types.c:1030,1
    - Dst: TEST_PATTERN_1
      Src: /src/libyang/tests/utests/data/test_types.c:1032,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_types.c:1034,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_types.c:1035,1
    - Dst: TEST_TYPE_ERROR
      Src: /src/libyang/tests/utests/data/test_types.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 49
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 1039
    functionName: test_union
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - TEST_PATTERN_1
    - lyd_free_all
    - ly_ctx_get_module_implemented
    - TEST_TYPE_ERROR
    - assert_int_equal
    - assert_non_null
    - TEST_PRINTED_VALUE
    linkageType: ''
    returnType: void
    signature: void test_union(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1045,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1046,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1047,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1050,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1052,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1053,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1054,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1055,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1056,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_types.c:1057,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_types.c:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1041
    functionDepth: 1
    functionLinenumber: 1041
    functionLinenumberEnd: 1061
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_types.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT
    - ','
    - MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: CHECK_PARSE_LYD
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD(INPUT, MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - IN_MODEL
    - ','
    - TEXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: CHECK_LYD_STRING
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_STRING(IN_MODEL, TEXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - INPUT_1
    - ','
    - INPUT_2
    - ','
    - OUT_MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: CHECK_PARSE_LYD_DIFF
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD_DIFF(INPUT_1, INPUT_2, OUT_MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - XML_1
    - ','
    - XML_2
    - ','
    - XML_3
    - ','
    - DIFF_1
    - ','
    - DIFF_2
    - ','
    - MERGE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: TEST_DIFF_3
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_DIFF_3(XML_1, XML_2, XML_3, DIFF_1, DIFF_2, MERGE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_diff.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 283
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 36
    functionsReached:
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:293,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:297,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/data/test_diff.c:297,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_diff.c:297,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:298,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/data/test_diff.c:298,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:300,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 302
    functionName: test_invalid
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - lyd_diff_siblings
    - assert_int_equal
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void test_invalid(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:323,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_diff.c:323,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_diff.c:324,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_diff.c:324,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:326,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:327,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:331,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/data/test_diff.c:331,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_diff.c:332,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:333,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/data/test_diff.c:333,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:334,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:336,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:337,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 339
    functionName: test_same
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - assert_null
    - lyd_diff_apply_all
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - CHECK_LYD
    - lyd_diff_siblings
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_same(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:358,1
    - Dst: CHECK_PARSE_LYD_DIFF
      Src: /src/libyang/tests/utests/data/test_diff.c:362,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_diff.c:363,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:372,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/data/test_diff.c:372,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:373,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:375,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:376,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 378
    functionName: test_empty1
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - lyd_diff_apply_all
    - CHECK_PARSE_LYD_DIFF
    - CHECK_LYD_STRING
    - CHECK_LYD
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_empty1(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:394,1
    - Dst: CHECK_PARSE_LYD_DIFF
      Src: /src/libyang/tests/utests/data/test_diff.c:398,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_diff.c:399,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:409,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/data/test_diff.c:409,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:410,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:412,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 414
    functionName: test_empty2
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - lyd_diff_apply_all
    - CHECK_PARSE_LYD_DIFF
    - CHECK_LYD_STRING
    - assert_ptr_equal
    - assert_int_equal
    linkageType: ''
    returnType: void
    signature: void test_empty2(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:424,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:428,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/data/test_diff.c:428,1
    - Dst: assert_null
      Src: /src/libyang/tests/utests/data/test_diff.c:429,1
    - Dst: CHECK_PARSE_LYD_DIFF
      Src: /src/libyang/tests/utests/data/test_diff.c:433,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_diff.c:433,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_diff.c:434,1
    - Dst: CHECK_PARSE_LYD_DIFF
      Src: /src/libyang/tests/utests/data/test_diff.c:441,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_diff.c:441,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_diff.c:442,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:447,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:448,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 450
    functionName: test_empty_nested
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - assert_null
    - CHECK_PARSE_LYD_DIFF
    - CHECK_LYD_STRING
    - lyd_diff_siblings
    - assert_int_equal
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void test_empty_nested(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 504
    functionName: test_leaf
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_leaf(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 580
    functionName: test_list
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 629
    functionName: test_userord_llist
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_userord_llist(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 675
    functionName: test_userord_llist2
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_userord_llist2(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:717,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 718
    functionName: test_userord_mix
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_userord_mix(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 804
    functionName: test_userord_list
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_userord_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 930
    functionName: test_keyless_list
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_keyless_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TEST_DIFF_3
      Src: /src/libyang/tests/utests/data/test_diff.c:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 977
    functionName: test_state_llist
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - TEST_DIFF_3
    linkageType: ''
    returnType: void
    signature: void test_state_llist(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/data/test_diff.c:994,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_diff.c:995,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:999,1
    - Dst: lyd_validate_module
      Src: /src/libyang/tests/utests/data/test_diff.c:999,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:1000,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_diff.c:1005,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_diff.c:1006,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:1011,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/data/test_diff.c:1011,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_diff.c:1012,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_diff.c:1023,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:1024,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1024,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:1025,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:1030,1
    - Dst: lyd_diff_siblings
      Src: /src/libyang/tests/utests/data/test_diff.c:1030,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_diff.c:1031,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_diff.c:1032,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:1038,1
    - Dst: lyd_diff_apply_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1038,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/data/test_diff.c:1039,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_diff.c:1042,1
    - Dst: lyd_diff_merge_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1042,1
    - Dst: CHECK_LYD_STRING_PARAM
      Src: /src/libyang/tests/utests/data/test_diff.c:1053,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1055,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1056,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1057,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1058,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_diff.c:1059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1060
    functionName: test_wd
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - lyd_diff_apply_all
    - lyd_validate_module
    - CHECK_LYD_STRING
    - ly_ctx_get_module_implemented
    - CHECK_LYD
    - lyd_diff_siblings
    - assert_int_equal
    - lyd_diff_merge_all
    - CHECK_PARSE_LYD_PARAM
    - CHECK_LYD_STRING_PARAM
    - assert_ptr_not_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_wd(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1066,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1067,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1068,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1069,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1070,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1071,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1072,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1073,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1074,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1075,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1076,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1077,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1078,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_diff.c:1079,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_diff.c:1082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1062
    functionDepth: 1
    functionLinenumber: 1062
    functionLinenumberEnd: 1083
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_diff.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:59,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:60,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 64
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 36
    functionsReached:
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - INPUT
    - ','
    - PARSE_OPTION
    - ','
    - VALIDATE_OPTION
    - ','
    - TREE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: CHECK_PARSE_LYD
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD(INPUT, PARSE_OPTION, VALIDATE_OPTION, TREE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - INPUT
    - ','
    - PARSE_OPTION
    - ','
    - OUT_NODE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: CHECK_PARSE_LYD_PARAM_CTX
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD_PARAM_CTX(CTX, INPUT, PARSE_OPTION, OUT_NODE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - MODULE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 79
    functionName: RECREATE_CTX_WITH_MODULE
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RECREATE_CTX_WITH_MODULE(CTX, MODULE)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:87,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:87,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:91,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:92,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:93,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:93,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:94,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:94,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:95,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:95,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:96,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:97,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:101,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:102,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:103,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:103,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:104,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:104,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:105,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:106,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:110,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:111,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:112,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:112,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:113,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:113,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:114,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:114,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:115,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:115,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:116,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:117,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:121,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:122,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:123,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:123,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:124,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:124,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:125,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:126,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:130,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:131,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:132,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:132,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:133,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:133,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:134,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:135,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:139,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:140,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:141,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:141,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:142,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:144,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:145,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:145,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:146,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 56
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 148
    functionName: test_compare
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_compare_single
    - assert_int_equal
    - lyd_free_all
    - CHECK_PARSE_LYD
    linkageType: ''
    returnType: void
    signature: void test_compare(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:164,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:167,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:168,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:169,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:169,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:170,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:171,1
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:179,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:182,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:183,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:184,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:184,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:185,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:186,1
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:194,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:197,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:198,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:199,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:199,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:200,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:201,1
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:208,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:211,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:212,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:213,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:213,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:214,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:215,1
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:223,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:226,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:227,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:228,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:228,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_tree_data.c:228,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_tree_data.c:228,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_tree_data.c:228,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_tree_data.c:228,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:229,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:230,1
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:237,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:240,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:241,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:242,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:242,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:243,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:244,1
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:251,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:254,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:255,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:256,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:256,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:257,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:258,1
    - Dst: RECREATE_CTX_WITH_MODULE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:265,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:268,1
    - Dst: CHECK_PARSE_LYD_PARAM_CTX
      Src: /src/libyang/tests/utests/data/test_tree_data.c:269,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:270,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:270,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:271,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:272,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/utests/data/test_tree_data.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 75
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 277
    functionName: test_compare_diff_ctx
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD_PARAM_CTX
    - lyd_free_all
    - ly_ctx_destroy
    - assert_int_equal
    - RECREATE_CTX_WITH_MODULE
    - lyd_child
    - lyd_compare_single
    linkageType: ''
    returnType: void
    signature: void test_compare_diff_ctx(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:287,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:288,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:288,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:289,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:289,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:290,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:291,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:295,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:296,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:296,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:297,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:298,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:299,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:299,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:300,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:301,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:305,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:306,1
    - Dst: lyd_dup_siblings
      Src: /src/libyang/tests/utests/data/test_tree_data.c:306,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:307,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:307,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:308,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:309,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:309,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:310,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:311,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:312,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:312,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:313,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:315,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:315,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:316,1
    - Dst: CHECK_PARSE_LYD_PARAM
      Src: /src/libyang/tests/utests/data/test_tree_data.c:318,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:319,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:319,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:320,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:321,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:324,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:325,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:325,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:326,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:326,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:327,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:328,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:331,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:332,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:332,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:336,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:337,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:337,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:339,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:340,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:343,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:344,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:344,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:347,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:348,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:348,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:349,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:350,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:353,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:354,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:354,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:355,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:355,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:357,1
    - Dst: lyd_compare_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:357,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:358,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:359,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:363,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:364,1
    - Dst: lyd_dup_single
      Src: /src/libyang/tests/utests/data/test_tree_data.c:364,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 66
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 367
    functionName: test_dup
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - lyd_dup_siblings
    - CHECK_LYSC_NODE
    - assert_int_equal
    - CHECK_PARSE_LYD_PARAM
    - lyd_compare_single
    - lyd_dup_single
    linkageType: ''
    returnType: void
    signature: void test_dup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_tree_data.c:390,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:391,1
    - Dst: ly_path_parse
      Src: /src/libyang/tests/utests/data/test_tree_data.c:391,1
    - Dst: strlen
      Src: /src/libyang/tests/utests/data/test_tree_data.c:391,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:393,1
    - Dst: ly_path_compile
      Src: /src/libyang/tests/utests/data/test_tree_data.c:393,1
    - Dst: lyd_target
      Src: /src/libyang/tests/utests/data/test_tree_data.c:395,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_tree_data.c:399,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:400,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_tree_data.c:400,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:401,1
    - Dst: lyd_get_value
      Src: /src/libyang/tests/utests/data/test_tree_data.c:401,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:403,1
    - Dst: ly_path_free
      Src: /src/libyang/tests/utests/data/test_tree_data.c:404,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/tests/utests/data/test_tree_data.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 406
    functionName: test_target
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - strlen
    - lyxp_expr_free
    - lyd_free_all
    - lyd_target
    - CHECK_LYSC_NODE
    - ly_path_compile
    - ly_path_parse
    - assert_string_equal
    - assert_int_equal
    - ly_path_free
    - lyd_get_value
    linkageType: ''
    returnType: void
    signature: void test_target(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:418,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_tree_data.c:418,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:419,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:419,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:420,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:420,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:421,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:421,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:422,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:422,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:423,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:428,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_tree_data.c:428,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:429,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:429,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:430,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:430,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:431,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:431,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:432,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:440,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_tree_data.c:440,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:441,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:442,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:442,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:443,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:443,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:444,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:444,1
    - Dst: assert_string_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:445,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:446,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:446,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:447,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:447,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:448,1
    - Dst: lyd_list_pos
      Src: /src/libyang/tests/utests/data/test_tree_data.c:448,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 450
    functionName: test_list_pos
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_string_equal
    - lyd_list_pos
    linkageType: ''
    returnType: void
    signature: void test_list_pos(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:462,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_tree_data.c:462,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:463,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/tests/utests/data/test_tree_data.c:463,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:464,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/tests/utests/data/test_tree_data.c:464,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:465,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/tests/utests/data/test_tree_data.c:465,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:467,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:468,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/tests/utests/data/test_tree_data.c:468,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:469,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/tests/utests/data/test_tree_data.c:469,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:470,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/tests/utests/data/test_tree_data.c:470,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 472
    functionName: test_first_sibling
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - assert_ptr_equal
    - lyd_parse_data_mem
    - assert_int_equal
    - lyd_first_sibling
    linkageType: ''
    returnType: void
    signature: void test_first_sibling(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/tests/utests/data/test_tree_data.c:480,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_tree_data.c:481,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:483,1
    - Dst: lyd_new_inner
      Src: /src/libyang/tests/utests/data/test_tree_data.c:483,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:484,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_tree_data.c:484,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:485,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_tree_data.c:485,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:486,1
    - Dst: lyd_new_path
      Src: /src/libyang/tests/utests/data/test_tree_data.c:486,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:488,1
    - Dst: lyd_find_path
      Src: /src/libyang/tests/utests/data/test_tree_data.c:488,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:489,1
    - Dst: lyd_find_path
      Src: /src/libyang/tests/utests/data/test_tree_data.c:489,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_tree_data.c:490,1
    - Dst: lyd_find_path
      Src: /src/libyang/tests/utests/data/test_tree_data.c:490,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_tree_data.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 492
    functionName: test_find_path
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - lyd_find_path
    - ly_ctx_get_module_implemented
    - assert_int_equal
    - lyd_new_path
    - lyd_new_inner
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_find_path(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_tree_data.c:498,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_tree_data.c:499,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_tree_data.c:500,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_tree_data.c:501,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_tree_data.c:502,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_tree_data.c:503,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_tree_data.c:504,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_tree_data.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 508
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_tree_data.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INPUT
    - ','
    - MODEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 22
    functionName: CHECK_PARSE_LYD
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD(INPUT, MODEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MODEL
    - ','
    - TEXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: CHECK_LYD_STRING
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_STRING(MODEL, TEXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:30,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 33
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 36
    functionsReached:
    - assert_int_equal
    - ly_ctx_set_searchdir
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:79,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:79,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:80,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:80,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_lyb.c:82,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:84,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:84,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:86,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:86,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:87,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/data/test_lyb.c:90,1
    - Dst: free
      Src: /src/libyang/tests/utests/data/test_lyb.c:93,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_lyb.c:94,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_lyb.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 96
    functionName: test_ietf_interfaces
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_print_mem
    - lyd_free_all
    - free
    - ly_ctx_load_module
    - CHECK_LYD
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_ietf_interfaces(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_lyb.c:131,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:132,1
    - Dst: lys_set_implemented
      Src: /src/libyang/tests/utests/data/test_lyb.c:132,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/tests/utests/data/test_lyb.c:132,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_lyb.c:134,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:136,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:136,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:138,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:138,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:139,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/data/test_lyb.c:142,1
    - Dst: free
      Src: /src/libyang/tests/utests/data/test_lyb.c:145,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_lyb.c:146,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_lyb.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 148
    functionName: test_origin
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_print_mem
    - lyd_free_all
    - UTEST_ADD_MODULE
    - free
    - ly_ctx_get_module_latest
    - CHECK_LYD
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_non_null
    - lys_set_implemented
    linkageType: ''
    returnType: void
    signature: void test_origin(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_lyb.c:344,1
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_lyb.c:345,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_lyb.c:347,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:349,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:349,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:351,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:351,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:352,1
    - Dst: CHECK_LYD
      Src: /src/libyang/tests/utests/data/test_lyb.c:355,1
    - Dst: free
      Src: /src/libyang/tests/utests/data/test_lyb.c:358,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_lyb.c:359,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_lyb.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 361
    functionName: test_statements
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_print_mem
    - lyd_free_all
    - UTEST_ADD_MODULE
    - free
    - CHECK_LYD
    - lyd_parse_data_mem
    - assert_int_equal
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_statements(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:371,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:372,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:372,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:374,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:375,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:377,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:378,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:380,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:381,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 384
    functionName: test_types
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_types(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:392,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:393,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:393,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:395,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:396,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:398,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:399,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:401,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:402,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 405
    functionName: test_annotations
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_annotations(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:413,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:414,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:414,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:416,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:417,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:419,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:420,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:422,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:423,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 426
    functionName: test_similar_annot_names
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_similar_annot_names(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:434,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:435,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:435,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:437,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:438,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:440,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:441,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:443,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:444,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 447
    functionName: test_many_child_annot
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_many_child_annot(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:455,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:456,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:456,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:458,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:459,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:461,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:462,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:464,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:465,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 468
    functionName: test_union
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_union(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:476,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:477,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:477,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:479,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:480,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:482,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:483,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:485,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:486,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 489
    functionName: test_union2
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_union2(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:497,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:498,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:498,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:500,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:501,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:503,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:504,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:506,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:507,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 510
    functionName: test_collisions
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_collisions(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:528,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:528,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:530,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:531,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:534,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:535,1
    - Dst: lyd_free_withsiblings
      Src: /src/libyang/tests/utests/data/test_lyb.c:537,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:541,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:542,1
    - Dst: lyd_new
      Src: /src/libyang/tests/utests/data/test_lyb.c:544,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:545,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:547,1
    - Dst: lyd_new_anydata
      Src: /src/libyang/tests/utests/data/test_lyb.c:547,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:550,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:551,1
    - Dst: lyd_validate
      Src: /src/libyang/tests/utests/data/test_lyb.c:553,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:554,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:556,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:557,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:559,1
    - Dst: free
      Src: /src/libyang/tests/utests/data/test_lyb.c:562,1
    - Dst: lyd_lyb_data_length
      Src: /src/libyang/tests/utests/data/test_lyb.c:563,1
    - Dst: malloc
      Src: /src/libyang/tests/utests/data/test_lyb.c:564,1
    - Dst: memcpy
      Src: /src/libyang/tests/utests/data/test_lyb.c:565,1
    - Dst: lyd_free_withsiblings
      Src: /src/libyang/tests/utests/data/test_lyb.c:567,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:568,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:569,1
    - Dst: lyd_free_withsiblings
      Src: /src/libyang/tests/utests/data/test_lyb.c:572,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:573,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:574,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 577
    functionName: test_anydata
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - memcpy
    - lyd_new
    - malloc
    - lyd_lyb_data_length
    - free
    - ly_ctx_load_module
    - lyd_validate
    - lys_parse_mem
    - assert_int_equal
    - check_data_tree
    - lyd_new_anydata
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_free_withsiblings
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_anydata(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:586,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:587,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:588,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:589,1
    - Dst: lys_features_enable
      Src: /src/libyang/tests/utests/data/test_lyb.c:589,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:591,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:592,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:594,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:595,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:597,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:598,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 579
    functionDepth: 1
    functionLinenumber: 579
    functionLinenumberEnd: 601
    functionName: test_submodule_feature
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - lys_features_enable
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_submodule_feature(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:609,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:610,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:610,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:611,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:611,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:612,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:612,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:614,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:615,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:617,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:618,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:620,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:621,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 624
    functionName: test_coliding_augments
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_coliding_augments(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_lyb.c:632,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_lyb.c:633,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_lyb.c:633,1
    - Dst: lyd_parse_path
      Src: /src/libyang/tests/utests/data/test_lyb.c:635,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:636,1
    - Dst: lyd_print_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:638,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:639,1
    - Dst: lyd_parse_mem
      Src: /src/libyang/tests/utests/data/test_lyb.c:641,1
    - Dst: assert_ptr_not_equal
      Src: /src/libyang/tests/utests/data/test_lyb.c:642,1
    - Dst: check_data_tree
      Src: /src/libyang/tests/utests/data/test_lyb.c:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 645
    functionName: test_leafrefs
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_print_mem
    - lyd_parse_path
    - ly_ctx_set_searchdir
    - ly_ctx_load_module
    - assert_int_equal
    - check_data_tree
    - assert_ptr_not_equal
    - assert_non_null
    - lyd_parse_mem
    linkageType: ''
    returnType: void
    signature: void test_leafrefs(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_lyb.c:653,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_lyb.c:654,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_lyb.c:655,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:657,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:658,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:659,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:660,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:661,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:662,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:663,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:664,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:665,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:666,1
    - Dst: cmocka_unit_test_setup_teardown
      Src: /src/libyang/tests/utests/data/test_lyb.c:667,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_lyb.c:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 649
    functionDepth: 1
    functionLinenumber: 649
    functionLinenumberEnd: 672
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_lyb.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_unit_test_setup_teardown
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST_ADD_MODULE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:52,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:53,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 56
    functionName: setup
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 36
    functionsReached:
    - assert_int_equal
    - ly_ctx_set_searchdir
    - UTEST_ADD_MODULE
    linkageType: ''
    returnType: int
    signature: int setup(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - INPUT
    - ','
    - PARSE_OPTION
    - ','
    - VALIDATE_OPTION
    - ','
    - TREE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: CHECK_PARSE_LYD
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_PARSE_LYD(INPUT, PARSE_OPTION, VALIDATE_OPTION, TREE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - INPUT
    - ','
    - PARSE_OPTION
    - ','
    - VALIDATE_OPTION
    - ','
    - MODEL
    - ','
    - RET_VAL
    - ','
    - ERR_MESSAGE
    - ','
    - ERR_PATH
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: PARSER_CHECK_ERROR
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARSER_CHECK_ERROR(INPUT, PARSE_OPTION, VALIDATE_OPTION, MODEL, RET_VAL,
      ERR_MESSAGE, ERR_PATH)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - IN_MODEL
    - ','
    - PRINT_OPTION
    - ','
    - TEXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: CHECK_LYD_STRING
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LYD_STRING(IN_MODEL, PRINT_OPTION, TEXT)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:76,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:76,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:78,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:79,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:81,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:83,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:86,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:87,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:89,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:93,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:94,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:96,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:99,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:100,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:102,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:107,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:108,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:110,1
    - Dst: CHECK_LYD_VALUE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:113,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:114,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 117
    functionName: test_leaf
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - assert_false
    - lyd_free_all
    - assert_true
    - ly_ctx_load_module
    - CHECK_LYSC_NODE
    - CHECK_LYD_VALUE
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_leaf(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:131,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:132,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:134,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:144,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 147
    functionName: test_anydata
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - lyd_free_all
    - CHECK_LYD_STRING
    - CHECK_LYSC_NODE
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_anydata(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:159,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:160,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:163,1
    - Dst: assert_int_not_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:164,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:166,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:169,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:172,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:175,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:179,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:183,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:184,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:187,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:188,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:189,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:190,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:191,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:192,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:193,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:194,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:195,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:196,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:199,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:200,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:202,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:203,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:204,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:205,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:206,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:207,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:208,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:209,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 213
    functionName: test_list
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - CHECK_LOG_CTX
    - lyd_free_all
    - assert_int_not_equal
    - LY_LIST_FOR
    - CHECK_LYSC_NODE
    - PARSER_CHECK_ERROR
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_list(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:221,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:222,1
    - Dst: assert_true
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:224,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:225,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:227,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:228,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:230,1
    - Dst: assert_false
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:233,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 235
    functionName: test_container
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - assert_false
    - lyd_free_all
    - assert_true
    - CHECK_LYSC_NODE
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_container(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:245,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:249,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:250,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:251,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:252,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:260,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:264,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:265,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:266,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:267,1
    - Dst: PARSER_CHECK_ERROR
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:275,1
    - Dst: CHECK_PARSE_LYD
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:279,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:280,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:281,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:282,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:285,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:285,1
    - Dst: CHECK_LOG_CTX
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 292
    functionName: test_opaq
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - CHECK_PARSE_LYD
    - CHECK_LOG_CTX
    - lyd_free_all
    - CHECK_LYD_STRING
    - CHECK_LYD_NODE_OPAQ
    - assert_int_equal
    - PARSER_CHECK_ERROR
    - lyd_parse_data_mem
    linkageType: ''
    returnType: void
    signature: void test_opaq(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:306,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:306,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:323,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:323,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:324,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:324,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:325,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:327,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:329,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:333,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:336,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:339,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:341,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:344,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:347,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:349,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:352,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:354,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 375
    functionName: test_rpc
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_ctx_load_module
    - ly_in_new_memory
    - CHECK_LYSC_NODE
    - CHECK_LYD_NODE_OPAQ
    - assert_int_equal
    - lyd_parse_op
    - lyd_child
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_rpc(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:389,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:389,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:390,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:390,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:391,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:393,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:394,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:398,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 409
    functionName: test_action
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - assert_int_equal
    - lyd_parse_op
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_action(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:423,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:423,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:424,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:424,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:425,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:427,1
    - Dst: CHECK_LYSC_NOTIF
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:428,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:430,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:432,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:433,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:437,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:437,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:438,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:438,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:439,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:441,1
    - Dst: CHECK_LYSC_NOTIF
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:442,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:444,1
    - Dst: assert_ptr_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:445,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:447,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 452
    functionName: test_notification
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - CHECK_LYSC_NODE
    - assert_ptr_equal
    - assert_int_equal
    - lyd_parse_op
    - CHECK_LYSC_NOTIF
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_notification(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:467,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:467,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:468,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:468,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:469,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:471,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:473,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:476,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:477,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:479,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:482,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:482,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 487
    functionName: test_reply
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - CHECK_LYSC_NODE
    - assert_int_equal
    - lyd_parse_op
    - lyd_child
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_reply(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:501,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:501,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:520,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:520,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:521,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:521,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:522,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:524,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:527,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:529,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:532,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:535,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:537,1
    - Dst: CHECK_LYSC_NODE
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:540,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:543,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:545,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:548,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:550,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:552,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:569,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 574
    functionName: test_netconf_rpc
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_ctx_load_module
    - ly_in_new_memory
    - CHECK_LYSC_NODE
    - CHECK_LYD_NODE_OPAQ
    - assert_int_equal
    - lyd_parse_op
    - lyd_child
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_netconf_rpc(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:592,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:592,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:593,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:593,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:594,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:596,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:597,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:597,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:599,1
    - Dst: CHECK_LYSC_ACTION
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:600,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:604,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:608,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:613,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 618
    functionName: test_netconf_action
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - CHECK_LYD_NODE_OPAQ
    - assert_int_equal
    - lyd_parse_op
    - lyd_child
    - CHECK_LYSC_ACTION
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_netconf_action(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:633,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:633,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:634,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:634,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:635,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:646,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:646,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:647,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:647,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:648,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:650,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:651,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:651,1
    - Dst: assert_non_null
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:654,1
    - Dst: CHECK_LYSC_NOTIF
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:655,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:657,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:661,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:666,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:667,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:673,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:673,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:674,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:674,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:675,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:677,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:679,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:682,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:689,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:689,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:690,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:690,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:691,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:693,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:694,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:694,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:696,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:698,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:712,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:712,1
    - Dst: assert_int_equal
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:713,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:713,1
    - Dst: ly_in_free
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:714,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:716,1
    - Dst: CHECK_LYD_NODE_OPAQ
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:717,1
    - Dst: lyd_child
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:717,1
    - Dst: CHECK_LYD_STRING
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:719,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:721,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 1
    argNames:
    - state
    argTypes:
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 727
    functionName: test_netconf_reply_or_notification
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - lyd_free_all
    - CHECK_LYD_STRING
    - ly_in_new_memory
    - CHECK_LYD_NODE_OPAQ
    - assert_int_equal
    - lyd_parse_op
    - lyd_child
    - CHECK_LYSC_NOTIF
    - assert_non_null
    linkageType: ''
    returnType: void
    signature: void test_netconf_reply_or_notification(void **state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:733,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:734,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:735,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:736,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:737,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:738,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:739,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:740,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:741,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:742,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:743,1
    - Dst: UTEST
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:744,1
    - Dst: cmocka_run_group_tests
      Src: /src/libyang/tests/utests/data/test_parser_xml.c:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 748
    functionName: main
    functionSourceFile: /src/libyang/tests/utests/data/test_parser_xml.c
    functionUses: 26
    functionsReached:
    - UTEST
    - cmocka_run_group_tests
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_new
      Src: /src/libyang/tests/style/cpp_compat.c:35,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/tests/style/cpp_compat.c:38,1
    - Dst: ly_ctx_get_yanglib_data
      Src: /src/libyang/tests/style/cpp_compat.c:42,1
    - Dst: ly_ctx_get_change_count
      Src: /src/libyang/tests/style/cpp_compat.c:42,1
    - Dst: lyd_new_opaq
      Src: /src/libyang/tests/style/cpp_compat.c:45,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/tests/style/cpp_compat.c:50,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/tests/style/cpp_compat.c:51,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/tests/style/cpp_compat.c:53,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/tests/style/cpp_compat.c:56,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/tests/style/cpp_compat.c:57,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/tests/style/cpp_compat.c:58,1
    - Dst: LY_ARRAY_DECREMENT_FREE
      Src: /src/libyang/tests/style/cpp_compat.c:60,1
    - Dst: LY_ARRAY_DECREMENT_FREE
      Src: /src/libyang/tests/style/cpp_compat.c:61,1
    - Dst: LY_LIST_NEW_GOTO
      Src: /src/libyang/tests/style/cpp_compat.c:63,1
    - Dst: LY_LIST_NEW_GOTO
      Src: /src/libyang/tests/style/cpp_compat.c:64,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/tests/style/cpp_compat.c:71,1
    - Dst: LYD_LIST_FOR_INST
      Src: /src/libyang/tests/style/cpp_compat.c:73,1
    - Dst: LYD_LIST_FOR_INST_SAFE
      Src: /src/libyang/tests/style/cpp_compat.c:74,1
    - Dst: LYD_CTX
      Src: /src/libyang/tests/style/cpp_compat.c:75,1
    - Dst: LYD_NAME
      Src: /src/libyang/tests/style/cpp_compat.c:76,1
    - Dst: LYSC_TREE_DFS_BEGIN
      Src: /src/libyang/tests/style/cpp_compat.c:79,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/tests/style/cpp_compat.c:80,1
    - Dst: LYSP_MODULE_NAME
      Src: /src/libyang/tests/style/cpp_compat.c:82,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/tests/style/cpp_compat.c:83,1
    - Dst: lysc_is_key
      Src: /src/libyang/tests/style/cpp_compat.c:84,1
    - Dst: lysc_is_np_cont
      Src: /src/libyang/tests/style/cpp_compat.c:85,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/tests/style/cpp_compat.c:86,1
    - Dst: free
      Src: /src/libyang/tests/style/cpp_compat.c:89,1
    - Dst: free
      Src: /src/libyang/tests/style/cpp_compat.c:90,1
    - Dst: lyd_free_tree
      Src: /src/libyang/tests/style/cpp_compat.c:91,1
    - Dst: lyd_free_all
      Src: /src/libyang/tests/style/cpp_compat.c:92,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tests/style/cpp_compat.c:93,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 95
    functionName: main
    functionSourceFile: /src/libyang/tests/style/cpp_compat.c
    functionUses: 26
    functionsReached:
    - LYD_LIST_FOR_INST_SAFE
    - ly_ctx_destroy
    - LYD_TREE_DFS_END
    - LY_ARRAY_FREE
    - ly_ctx_get_change_count
    - LY_LIST_NEW_GOTO
    - ly_ctx_get_yanglib_data
    - lysc_is_userordered
    - lyd_free_all
    - lysc_is_key
    - LY_ARRAY_NEW_GOTO
    - LY_ARRAY_DECREMENT_FREE
    - LYSC_TREE_DFS_END
    - lysc_is_dup_inst_list
    - LYSC_TREE_DFS_BEGIN
    - LY_ARRAY_INCREMENT
    - LYD_NAME
    - lyd_free_tree
    - free
    - lyd_new_opaq
    - LYSP_MODULE_NAME
    - LYD_CTX
    - ly_ctx_new
    - LYD_LIST_FOR_INST
    - ly_ctx_get_module_latest
    - lysc_is_np_cont
    - LY_ARRAY_CREATE_GOTO
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/tests/style/cpp_compat.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(sa, int, item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/tests/style/cpp_compat.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(sa, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/tests/style/cpp_compat.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(tl, tl_item)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/tests/style/cpp_compat.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR_SAFE(tl, tl_next, tl_item)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/tests/style/cpp_compat.c:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/tests/style/cpp_compat.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(data, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:33,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:34,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:35,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:36,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:37,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:38,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:39,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:54,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 60
    functionName: help
    functionSourceFile: /src/libyang/tools/re/main.c
    functionUses: 3
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void help(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: version
    functionSourceFile: /src/libyang/tools/re/main.c
    functionUses: 15
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void version(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - level
    - msg
    - path
    argTypes:
    - LY_LOG_LEVEL
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: pattern_error
    functionSourceFile: /src/libyang/tools/re/main.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void pattern_error(LY_LOG_LEVEL level, const char *msg, const char
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/libyang/tools/re/main.c:94,1
    - Dst: realloc
      Src: /src/libyang/tools/re/main.c:95,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:97,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:98,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:99,1
    - Dst: strdup
      Src: /src/libyang/tools/re/main.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - patterns
    - inverts
    - counter
    - pattern
    argTypes:
    - char***
    - int**
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 108
    functionName: add_pattern
    functionSourceFile: /src/libyang/tools/re/main.c
    functionUses: 0
    functionsReached:
    - strdup
    - fprintf
    - realloc
    - free
    linkageType: ''
    returnType: int
    signature: int add_pattern(char ***patterns, int **inverts, int *counter, char
      *pattern)
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/libyang/tools/re/main.c:134,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:137,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:142,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:143,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:146,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:147,1
    - Dst: fopen
      Src: /src/libyang/tools/re/main.c:150,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:152,1
    - Dst: strerror
      Src: /src/libyang/tools/re/main.c:152,1
    - Dst: getline
      Src: /src/libyang/tools/re/main.c:156,1
    - Dst: add_pattern
      Src: /src/libyang/tools/re/main.c:171,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:183,1
    - Dst: malloc
      Src: /src/libyang/tools/re/main.c:185,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:191,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:192,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:199,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:200,1
    - Dst: add_pattern
      Src: /src/libyang/tools/re/main.c:203,1
    - Dst: version
      Src: /src/libyang/tools/re/main.c:208,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:215,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:217,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:219,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:232,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:233,1
    - Dst: help
      Src: /src/libyang/tools/re/main.c:236,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:237,1
    - Dst: asprintf
      Src: /src/libyang/tools/re/main.c:244,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:245,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:249,1
    - Dst: asprintf
      Src: /src/libyang/tools/re/main.c:253,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:254,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:258,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tools/re/main.c:262,1
    - Dst: ly_set_log_clb
      Src: /src/libyang/tools/re/main.c:266,1
    - Dst: lys_parse_mem
      Src: /src/libyang/tools/re/main.c:267,1
    - Dst: lyd_value_validate
      Src: /src/libyang/tools/re/main.c:272,1
    - Dst: strlen
      Src: /src/libyang/tools/re/main.c:272,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:276,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:277,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:279,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:281,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:283,1
    - Dst: fprintf
      Src: /src/libyang/tools/re/main.c:285,1
    - Dst: ly_errmsg
      Src: /src/libyang/tools/re/main.c:285,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tools/re/main.c:297,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:299,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:301,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:302,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:303,1
    - Dst: fclose
      Src: /src/libyang/tools/re/main.c:305,1
    - Dst: free
      Src: /src/libyang/tools/re/main.c:306,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 180
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 310
    functionName: main
    functionSourceFile: /src/libyang/tools/re/main.c
    functionUses: 26
    functionsReached:
    - add_pattern
    - strlen
    - version
    - ly_ctx_destroy
    - malloc
    - asprintf
    - getline
    - ly_set_log_clb
    - fclose
    - fprintf
    - getopt_long
    - free
    - lys_parse_mem
    - help
    - ly_ctx_new
    - fopen
    - strerror
    - lyd_value_validate
    - ly_errmsg
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_data.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 101
    functionName: cmd_data_help
    functionSourceFile: /src/libyang/tools/lint/cmd_data.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_data_help(void)
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd_data.c:137,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd_data.c:141,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:144,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:146,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:148,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:150,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:153,1
    - Dst: cmd_data_help
      Src: /src/libyang/tools/lint/cmd_data.c:154,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:159,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:161,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:163,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:166,1
    - Dst: cmd_data_help
      Src: /src/libyang/tools/lint/cmd_data.c:167,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:172,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:174,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:176,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:179,1
    - Dst: cmd_data_help
      Src: /src/libyang/tools/lint/cmd_data.c:180,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:186,1
    - Dst: ly_out_new_filepath
      Src: /src/libyang/tools/lint/cmd_data.c:189,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:190,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/cmd_data.c:190,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:200,1
    - Dst: get_input
      Src: /src/libyang/tools/lint/cmd_data.c:203,1
    - Dst: fill_cmdline_file
      Src: /src/libyang/tools/lint/cmd_data.c:206,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:221,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:225,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:228,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:230,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:230,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:232,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:234,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:234,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:236,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:236,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:238,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:238,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_data.c:240,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:243,1
    - Dst: cmd_data_help
      Src: /src/libyang/tools/lint/cmd_data.c:244,1
    - Dst: ly_set_add
      Src: /src/libyang/tools/lint/cmd_data.c:252,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:253,1
    - Dst: cmd_data_help
      Src: /src/libyang/tools/lint/cmd_data.c:259,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:262,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:268,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:285,1
    - Dst: cmd_data_help
      Src: /src/libyang/tools/lint/cmd_data.c:286,1
    - Dst: YLMSG_W
      Src: /src/libyang/tools/lint/cmd_data.c:291,1
    - Dst: free_cmdline_file
      Src: /src/libyang/tools/lint/cmd_data.c:292,1
    - Dst: get_input
      Src: /src/libyang/tools/lint/cmd_data.c:300,1
    - Dst: fill_cmdline_file
      Src: /src/libyang/tools/lint/cmd_data.c:304,1
    - Dst: ly_in_free
      Src: /src/libyang/tools/lint/cmd_data.c:305,1
    - Dst: ly_out_new_file
      Src: /src/libyang/tools/lint/cmd_data.c:312,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_data.c:313,1
    - Dst: process_data
      Src: /src/libyang/tools/lint/cmd_data.c:319,1
    - Dst: ly_out_free
      Src: /src/libyang/tools/lint/cmd_data.c:326,1
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/cmd_data.c:327,1
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/cmd_data.c:328,1
    - Dst: free_cmdline_file
      Src: /src/libyang/tools/lint/cmd_data.c:329,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd_data.c:330,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 202
    argCount: 2
    argNames:
    - ctx
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 331
    functionName: cmd_data
    functionSourceFile: /src/libyang/tools/lint/cmd_data.c
    functionUses: 0
    functionsReached:
    - free_cmdline_file
    - ly_out_new_file
    - ly_in_free
    - cmd_data_help
    - strerror
    - ly_out_new_filepath
    - process_data
    - YLMSG_W
    - fill_cmdline_file
    - parse_cmdline
    - free_cmdline
    - getopt_long
    - get_input
    - ly_set_add
    - ly_out_free
    - ly_set_erase
    - strcasecmp
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_data(struct ly_ctx **ctx, const char *cmdline)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:43,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/completion.c:43,1
    - Dst: realloc
      Src: /src/libyang/tools/lint/completion.c:45,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/completion.c:47,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/completion.c:47,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/completion.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - hint
    - matches
    - match_count
    argTypes:
    - char*
    - char***
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 54
    functionName: get_cmd_completion
    functionSourceFile: /src/libyang/tools/lint/completion.c
    functionUses: 0
    functionsReached:
    - strlen
    - strerror
    - strdup
    - strncmp
    - realloc
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void get_cmd_completion(const char *hint, char ***matches, unsigned
      int *match_count)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/libyang/tools/lint/completion.c:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - hint
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 80
    functionName: last_is_opt
    functionSourceFile: /src/libyang/tools/lint/completion.c
    functionUses: 0
    functionsReached:
    - strrchr
    linkageType: ''
    returnType: int
    signature: int last_is_opt(const char *hint)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/tools/lint/completion.c:93,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:94,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/completion.c:94,1
    - Dst: realloc
      Src: /src/libyang/tools/lint/completion.c:96,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/completion.c:98,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/completion.c:98,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/completion.c:102,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/tools/lint/completion.c:105,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:106,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/completion.c:106,1
    - Dst: realloc
      Src: /src/libyang/tools/lint/completion.c:108,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/completion.c:110,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/completion.c:110,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/completion.c:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - hint
    - matches
    - match_count
    argTypes:
    - char*
    - char***
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 118
    functionName: get_model_completion
    functionSourceFile: /src/libyang/tools/lint/completion.c
    functionUses: 0
    functionsReached:
    - strlen
    - strerror
    - ly_ctx_get_module_iter
    - strdup
    - LY_ARRAY_FOR
    - strncmp
    - realloc
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void get_model_completion(const char *hint, char ***matches, unsigned
      int *match_count)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:126,1
    - Dst: linenoisePathCompletion
      Src: /src/libyang/tools/lint/completion.c:127,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:128,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:128,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:129,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:129,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:130,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:130,1
    - Dst: last_is_opt
      Src: /src/libyang/tools/lint/completion.c:130,1
    - Dst: linenoisePathCompletion
      Src: /src/libyang/tools/lint/completion.c:131,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:132,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/completion.c:132,1
    - Dst: last_is_opt
      Src: /src/libyang/tools/lint/completion.c:132,1
    - Dst: get_model_completion
      Src: /src/libyang/tools/lint/completion.c:133,1
    - Dst: strchr
      Src: /src/libyang/tools/lint/completion.c:134,1
    - Dst: get_cmd_completion
      Src: /src/libyang/tools/lint/completion.c:135,1
    - Dst: linenoiseAddCompletion
      Src: /src/libyang/tools/lint/completion.c:139,1
    - Dst: free
      Src: /src/libyang/tools/lint/completion.c:140,1
    - Dst: free
      Src: /src/libyang/tools/lint/completion.c:142,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 18
    argCount: 3
    argNames:
    - buf
    - hint
    - lc
    argTypes:
    - char*
    - char*
    - linenoiseCompletions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 143
    functionName: complete_cmd
    functionSourceFile: /src/libyang/tools/lint/completion.c
    functionUses: 0
    functionsReached:
    - get_model_completion
    - free
    - linenoiseAddCompletion
    - strncmp
    - strchr
    - get_cmd_completion
    - linenoisePathCompletion
    - last_is_opt
    linkageType: ''
    returnType: void
    signature: void complete_cmd(const char *buf, const char *hint, linenoiseCompletions
      *lc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/main_ni.c:95,1
    - Dst: ly_in_free
      Src: /src/libyang/tools/lint/main_ni.c:96,1
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/main_ni.c:99,1
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/main_ni.c:100,1
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/main_ni.c:103,1
    - Dst: ly_out_free
      Src: /src/libyang/tools/lint/main_ni.c:105,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tools/lint/main_ni.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 107
    functionName: erase_context
    functionSourceFile: /src/libyang/tools/lint/main_ni.c
    functionUses: 0
    functionsReached:
    - ly_set_erase
    - ly_in_free
    - ly_ctx_destroy
    - ly_out_free
    linkageType: ''
    returnType: void
    signature: void erase_context(struct context *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/main_ni.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: version
    functionSourceFile: /src/libyang/tools/lint/main_ni.c
    functionUses: 16
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void version(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/main_ni.c:119,1
    - Dst: printf
      Src: /src/libyang/tools/lint/main_ni.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - shortout
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 238
    functionName: help
    functionSourceFile: /src/libyang/tools/lint/main_ni.c
    functionUses: 5
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void help(int shortout)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/libyang/tools/lint/main_ni.c:260,1
    - Dst: fprintf
      Src: /src/libyang/tools/lint/main_ni.c:262,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - level
    - msg
    - path
    argTypes:
    - LY_LOG_LEVEL
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 264
    functionName: libyang_verbclb
    functionSourceFile: /src/libyang/tools/lint/main_ni.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void libyang_verbclb(LY_LOG_LEVEL level, const char *msg, const char
      *path)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: get_input
      Src: /src/libyang/tools/lint/main_ni.c:273,1
    - Dst: get_input
      Src: /src/libyang/tools/lint/main_ni.c:283,1
    - Dst: parse_schema_path
      Src: /src/libyang/tools/lint/main_ni.c:295,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tools/lint/main_ni.c:300,1
    - Dst: get_features
      Src: /src/libyang/tools/lint/main_ni.c:305,1
    - Dst: free
      Src: /src/libyang/tools/lint/main_ni.c:308,1
    - Dst: free
      Src: /src/libyang/tools/lint/main_ni.c:309,1
    - Dst: lys_parse
      Src: /src/libyang/tools/lint/main_ni.c:311,1
    - Dst: ly_ctx_unset_searchdir_last
      Src: /src/libyang/tools/lint/main_ni.c:312,1
    - Dst: ly_in_free
      Src: /src/libyang/tools/lint/main_ni.c:313,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/main_ni.c:316,1
    - Dst: ly_set_add
      Src: /src/libyang/tools/lint/main_ni.c:322,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/main_ni.c:323,1
    - Dst: fill_cmdline_file
      Src: /src/libyang/tools/lint/main_ni.c:328,1
    - Dst: ly_in_free
      Src: /src/libyang/tools/lint/main_ni.c:333,1
    - Dst: ly_in_free
      Src: /src/libyang/tools/lint/main_ni.c:341,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 3
    argNames:
    - argc
    - argv
    - c
    argTypes:
    - int
    - char*[]
    - struct context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 343
    functionName: fill_context_inputs
    functionSourceFile: /src/libyang/tools/lint/main_ni.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - free
    - ly_ctx_set_searchdir
    - lys_parse
    - ly_ctx_unset_searchdir_last
    - fill_cmdline_file
    - get_input
    - ly_set_add
    - parse_schema_path
    - get_features
    - YLMSG_E
    linkageType: ''
    returnType: int
    signature: int fill_context_inputs(int argc, char *argv[], struct context *c)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_log_clb
      Src: /src/libyang/tools/lint/main_ni.c:709,1
    - Dst: fill_context
      Src: /src/libyang/tools/lint/main_ni.c:711,1
    - Dst: print_list
      Src: /src/libyang/tools/lint/main_ni.c:723,1
    - Dst: lys_print_node
      Src: /src/libyang/tools/lint/main_ni.c:727,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/main_ni.c:729,1
    - Dst: lys_print_module
      Src: /src/libyang/tools/lint/main_ni.c:734,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/main_ni.c:737,1
    - Dst: process_data
      Src: /src/libyang/tools/lint/main_ni.c:746,1
    - Dst: erase_context
      Src: /src/libyang/tools/lint/main_ni.c:756,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 702
    functionDepth: 2
    functionLinenumber: 702
    functionLinenumberEnd: 759
    functionName: main_ni
    functionSourceFile: /src/libyang/tools/lint/main_ni.c
    functionUses: 0
    functionsReached:
    - lys_print_module
    - fill_context
    - erase_context
    - print_list
    - process_data
    - lys_print_node
    - ly_set_log_clb
    - YLMSG_E
    linkageType: ''
    returnType: int
    signature: int main_ni(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: cmd_debug_help
    functionSourceFile: /src/libyang/tools/lint/cmd.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_debug_help(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd.c:53,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd.c:57,1
    - Dst: cmd_debug_help
      Src: /src/libyang/tools/lint/cmd.c:60,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd.c:63,1
    - Dst: cmd_debug_help
      Src: /src/libyang/tools/lint/cmd.c:69,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd.c:74,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd.c:76,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd.c:79,1
    - Dst: ly_log_dbg_groups
      Src: /src/libyang/tools/lint/cmd.c:84,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd.c:87,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 2
    argNames:
    - UNUSED(ctx)
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 88
    functionName: cmd_debug
    functionSourceFile: /src/libyang/tools/lint/cmd.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - free_cmdline
    - parse_cmdline
    - getopt_long
    - cmd_debug_help
    - ly_log_dbg_groups
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_debug(struct ly_ctx **UNUSED(ctx), const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: cmd_verb_help
    functionSourceFile: /src/libyang/tools/lint/cmd.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_verb_help(void)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd.c:109,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd.c:113,1
    - Dst: cmd_verb_help
      Src: /src/libyang/tools/lint/cmd.c:116,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd.c:119,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd.c:125,1
    - Dst: cmd_verb_help
      Src: /src/libyang/tools/lint/cmd.c:126,1
    - Dst: ly_log_level
      Src: /src/libyang/tools/lint/cmd.c:130,1
    - Dst: ly_log_level
      Src: /src/libyang/tools/lint/cmd.c:131,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:132,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:134,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:136,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:138,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:140,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd.c:145,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/cmd.c:145,1
    - Dst: ly_log_level
      Src: /src/libyang/tools/lint/cmd.c:146,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd.c:147,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/cmd.c:147,1
    - Dst: ly_log_level
      Src: /src/libyang/tools/lint/cmd.c:148,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd.c:149,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/cmd.c:149,1
    - Dst: ly_log_level
      Src: /src/libyang/tools/lint/cmd.c:150,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd.c:151,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/cmd.c:151,1
    - Dst: ly_log_level
      Src: /src/libyang/tools/lint/cmd.c:152,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd.c:154,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd.c:159,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 2
    argNames:
    - UNUSED(ctx)
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 160
    functionName: cmd_verb
    functionSourceFile: /src/libyang/tools/lint/cmd.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - cmd_verb_help
    - strcmp
    - free_cmdline
    - parse_cmdline
    - getopt_long
    - printf
    - ly_log_level
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_verb(struct ly_ctx **UNUSED(ctx), const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - UNUSED(ctx)
    - UNUSED(cmdline)
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 167
    functionName: cmd_quit
    functionSourceFile: /src/libyang/tools/lint/cmd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cmd_quit(struct ly_ctx **UNUSED(ctx), const char *UNUSED(cmdline))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 173
    functionName: cmd_help_help
    functionSourceFile: /src/libyang/tools/lint/cmd.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_help_help(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd.c:186,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd.c:190,1
    - Dst: cmd_help_help
      Src: /src/libyang/tools/lint/cmd.c:193,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd.c:196,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:203,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:206,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/cmd.c:216,1
    - Dst: help_func
      Src: /src/libyang/tools/lint/cmd.c:219,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:221,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd.c:228,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd.c:235,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 2
    argNames:
    - UNUSED(ctx)
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 236
    functionName: cmd_help
    functionSourceFile: /src/libyang/tools/lint/cmd.c
    functionUses: 0
    functionsReached:
    - strcmp
    - help_func
    - parse_cmdline
    - free_cmdline
    - getopt_long
    - printf
    - cmd_help_help
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_help(struct ly_ctx **UNUSED(ctx), const char *cmdline)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/tools/lint/common.c:36,1
    - Dst: assert
      Src: /src/libyang/tools/lint/common.c:37,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/common.c:40,1
    - Dst: strrchr
      Src: /src/libyang/tools/lint/common.c:41,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/common.c:44,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/common.c:47,1
    - Dst: strchr
      Src: /src/libyang/tools/lint/common.c:50,1
    - Dst: strrchr
      Src: /src/libyang/tools/lint/common.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - path
    - dir
    - module
    argTypes:
    - char*
    - char**
    - char**
    assertStmts:
    - condition: (dir)
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/libyang/tools/lint/common.c
    - condition: (module)
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/libyang/tools/lint/common.c
    constantsTouched: []
    func_position:
      end: 59
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 59
    functionName: parse_schema_path
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 1
    functionsReached:
    - strdup
    - strchr
    - strrchr
    - assert
    linkageType: ''
    returnType: int
    signature: int parse_schema_path(const char *path, char **dir, char **module)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/libyang/tools/lint/common.c:67,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:68,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/common.c:68,1
    - Dst: S_ISREG
      Src: /src/libyang/tools/lint/common.c:71,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:72,1
    - Dst: get_format
      Src: /src/libyang/tools/lint/common.c:78,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/tools/lint/common.c:83,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:84,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 4
    argNames:
    - filepath
    - format_schema
    - format_data
    - in
    argTypes:
    - char*
    - LYS_INFORMAT*
    - LYD_FORMAT*
    - struct ly_in**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 89
    functionName: get_input
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 2
    functionsReached:
    - S_ISREG
    - strerror
    - ly_in_new_filepath
    - get_format
    - YLMSG_E
    - stat
    linkageType: ''
    returnType: int
    signature: int get_input(const char *filepath, LYS_INFORMAT *format_schema, LYD_FORMAT
      *format_data, struct ly_in **in)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:97,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:100,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:102,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - flist
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 106
    functionName: free_features
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_features(void *flist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/tools/lint/common.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - fset
    - module
    - features
    argTypes:
    - struct ly_set*
    - char*
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 125
    functionName: get_features
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void get_features(struct ly_set *fset, const char *module, const char
      ***features)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/tools/lint/common.c:133,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:135,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/common.c:135,1
    - Dst: ly_set_add
      Src: /src/libyang/tools/lint/common.c:138,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:139,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/common.c:139,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:140,1
    - Dst: strchr
      Src: /src/libyang/tools/lint/common.c:145,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:147,1
    - Dst: strndup
      Src: /src/libyang/tools/lint/common.c:150,1
    - Dst: strchr
      Src: /src/libyang/tools/lint/common.c:156,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/common.c:159,1
    - Dst: realloc
      Src: /src/libyang/tools/lint/common.c:164,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:166,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/common.c:166,1
    - Dst: strndup
      Src: /src/libyang/tools/lint/common.c:172,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 2
    argNames:
    - fstring
    - fset
    argTypes:
    - char*
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 177
    functionName: parse_features
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 0
    functionsReached:
    - strlen
    - strerror
    - free
    - strchr
    - ly_set_add
    - strndup
    - realloc
    - YLMSG_E
    - calloc
    linkageType: ''
    returnType: int
    signature: int parse_features(const char *fstring, struct ly_set *fset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/tools/lint/common.c:184,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:186,1
    - Dst: ly_set_add
      Src: /src/libyang/tools/lint/common.c:189,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:190,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - set
    - in
    - path
    - format
    argTypes:
    - struct ly_set*
    - struct ly_in*
    - char*
    - LYD_FORMAT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 199
    functionName: fill_cmdline_file
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 2
    functionsReached:
    - malloc
    - ly_set_add
    - free
    - YLMSG_E
    linkageType: ''
    returnType: struct cmdline_file
    signature: 'struct cmdline_file *

      fill_cmdline_file(struct ly_set *set, struct ly_in *in, const char *path, LYD_FORMAT
      format)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_free
      Src: /src/libyang/tools/lint/common.c:207,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - cmdline_file
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 210
    functionName: free_cmdline_file
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 1
    functionsReached:
    - ly_in_free
    - free
    linkageType: ''
    returnType: void
    signature: void free_cmdline_file(void *cmdline_file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:216,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 219
    functionName: free_cmdline
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_cmdline(char *argv[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/tools/lint/common.c:229,1
    - Dst: assert
      Src: /src/libyang/tools/lint/common.c:230,1
    - Dst: assert
      Src: /src/libyang/tools/lint/common.c:231,1
    - Dst: malloc
      Src: /src/libyang/tools/lint/common.c:236,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/common.c:237,1
    - Dst: strtok
      Src: /src/libyang/tools/lint/common.c:240,1
    - Dst: strtok
      Src: /src/libyang/tools/lint/common.c:243,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/common.c:247,1
    - Dst: realloc
      Src: /src/libyang/tools/lint/common.c:266,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:268,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/common.c:268,1
    - Dst: free
      Src: /src/libyang/tools/lint/common.c:269,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 3
    argNames:
    - cmdline
    - argc_p
    - argv_p
    argTypes:
    - char*
    - int*
    - char**[]
    assertStmts:
    - condition: (cmdline)
      pos:
        line_end: 228
        line_start: 228
        source_file: /src/libyang/tools/lint/common.c
    - condition: (argc_p)
      pos:
        line_end: 229
        line_start: 229
        source_file: /src/libyang/tools/lint/common.c
    - condition: (argv_p)
      pos:
        line_end: 230
        line_start: 230
        source_file: /src/libyang/tools/lint/common.c
    constantsTouched: []
    func_position:
      end: 297
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 297
    functionName: parse_cmdline
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 4
    functionsReached:
    - strlen
    - malloc
    - strtok
    - strerror
    - free
    - strdup
    - realloc
    - YLMSG_E
    - assert
    linkageType: ''
    returnType: int
    signature: int parse_cmdline(const char *cmdline, int *argc_p, char **argv_p[])
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/libyang/tools/lint/common.c:307,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/common.c:309,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/common.c:312,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/common.c:315,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/common.c:318,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/common.c:321,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:325,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:329,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:335,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:341,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 3
    argNames:
    - filename
    - schema
    - data
    argTypes:
    - char*
    - LYS_INFORMAT*
    - LYD_FORMAT*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 348
    functionName: get_format
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 1
    functionsReached:
    - strrchr
    - strcmp
    - YLMSG_E
    linkageType: ''
    returnType: int
    signature: int get_format(const char *filename, LYS_INFORMAT *schema, LYD_FORMAT
      *data)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_yanglib_data
      Src: /src/libyang/tools/lint/common.c:358,1
    - Dst: ly_ctx_get_change_count
      Src: /src/libyang/tools/lint/common.c:358,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:359,1
    - Dst: lyd_print_all
      Src: /src/libyang/tools/lint/common.c:363,1
    - Dst: lyd_free_all
      Src: /src/libyang/tools/lint/common.c:364,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:369,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/tools/lint/common.c:370,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:375,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:377,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:381,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:383,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:389,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/tools/lint/common.c:390,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:391,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:393,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:396,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:400,1
    - Dst: ly_print
      Src: /src/libyang/tools/lint/common.c:404,1
    - Dst: ly_print_flush
      Src: /src/libyang/tools/lint/common.c:407,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - out
    - ctx
    - outformat
    argTypes:
    - struct ly_out*
    - struct ly_ctx*
    - LYD_FORMAT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 409
    functionName: print_list
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 1
    functionsReached:
    - lyd_free_all
    - ly_print
    - lyd_print_all
    - ly_ctx_get_module_iter
    - LY_ARRAY_FOR
    - ly_ctx_get_change_count
    - ly_print_flush
    - YLMSG_E
    - ly_ctx_get_yanglib_data
    linkageType: ''
    returnType: int
    signature: int print_list(struct ly_out *out, struct ly_ctx *ctx, LYD_FORMAT outformat)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_xpath
      Src: /src/libyang/tools/lint/common.c:416,1
    - Dst: printf
      Src: /src/libyang/tools/lint/common.c:421,1
    - Dst: printf
      Src: /src/libyang/tools/lint/common.c:423,1
    - Dst: printf
      Src: /src/libyang/tools/lint/common.c:427,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/tools/lint/common.c:427,1
    - Dst: printf
      Src: /src/libyang/tools/lint/common.c:429,1
    - Dst: lyd_get_value
      Src: /src/libyang/tools/lint/common.c:429,1
    - Dst: printf
      Src: /src/libyang/tools/lint/common.c:431,1
    - Dst: lysc_is_key
      Src: /src/libyang/tools/lint/common.c:432,1
    - Dst: printf
      Src: /src/libyang/tools/lint/common.c:433,1
    - Dst: lyd_get_value
      Src: /src/libyang/tools/lint/common.c:434,1
    - Dst: printf
      Src: /src/libyang/tools/lint/common.c:436,1
    - Dst: ly_set_free
      Src: /src/libyang/tools/lint/common.c:441,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - tree
    - xpath
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 443
    functionName: evaluate_xpath
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - lys_nodetype2str
    - lysc_is_key
    - ly_set_free
    - printf
    - lyd_get_value
    linkageType: ''
    returnType: int
    signature: int evaluate_xpath(const struct lyd_node *tree, const char *xpath)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parse_data
      Src: /src/libyang/tools/lint/common.c:456,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:458,1
    - Dst: lyd_parse_data
      Src: /src/libyang/tools/lint/common.c:467,1
    - Dst: lyd_parse_op
      Src: /src/libyang/tools/lint/common.c:472,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:475,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:480,1
    - Dst: lyd_merge_siblings
      Src: /src/libyang/tools/lint/common.c:489,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:491,1
    - Dst: lyd_print_all
      Src: /src/libyang/tools/lint/common.c:497,1
    - Dst: lyd_validate_op
      Src: /src/libyang/tools/lint/common.c:500,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:502,1
    - Dst: lyd_free_all
      Src: /src/libyang/tools/lint/common.c:507,1
    - Dst: lyd_validate_all
      Src: /src/libyang/tools/lint/common.c:513,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/common.c:515,1
    - Dst: lyd_print_all
      Src: /src/libyang/tools/lint/common.c:521,1
    - Dst: evaluate_xpath
      Src: /src/libyang/tools/lint/common.c:525,1
    - Dst: lyd_free_all
      Src: /src/libyang/tools/lint/common.c:533,1
    - Dst: lyd_free_all
      Src: /src/libyang/tools/lint/common.c:534,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 78
    argCount: 11
    argNames:
    - ctx
    - data_type
    - merge
    - format
    - out
    - options_parse
    - options_validate
    - options_print
    - operational_f
    - inputs
    - xpaths
    argTypes:
    - struct ly_ctx*
    - enum lyd_type
    - uint8_t
    - LYD_FORMAT
    - struct ly_out*
    - uint32_t
    - uint32_t
    - uint32_t
    - struct cmdline_file*
    - struct ly_set*
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 537
    functionName: process_data
    functionSourceFile: /src/libyang/tools/lint/common.c
    functionUses: 2
    functionsReached:
    - lyd_free_all
    - lyd_validate_all
    - lyd_merge_siblings
    - lyd_print_all
    - lyd_parse_data
    - evaluate_xpath
    - lyd_parse_op
    - lyd_validate_op
    - YLMSG_E
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR process_data(struct ly_ctx *ctx, enum lyd_type data_type, uint8_t
      merge, LYD_FORMAT format, struct ly_out *out,\n        uint32_t options_parse,
      uint32_t options_validate, uint32_t options_print,\n        struct cmdline_file
      *operational_f, struct ly_set *inputs, struct ly_set *xpaths)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: main_ni
      Src: /src/libyang/tools/lint/main.c:45,1
    - Dst: linenoiseSetCompletionCallback
      Src: /src/libyang/tools/lint/main.c:49,1
    - Dst: load_config
      Src: /src/libyang/tools/lint/main.c:50,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tools/lint/main.c:52,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/main.c:53,1
    - Dst: linenoise
      Src: /src/libyang/tools/lint/main.c:61,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/main.c:66,1
    - Dst: free
      Src: /src/libyang/tools/lint/main.c:71,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/main.c:80,1
    - Dst: func
      Src: /src/libyang/tools/lint/main.c:84,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/main.c:91,1
    - Dst: linenoiseHistoryAdd
      Src: /src/libyang/tools/lint/main.c:94,1
    - Dst: free
      Src: /src/libyang/tools/lint/main.c:95,1
    - Dst: store_config
      Src: /src/libyang/tools/lint/main.c:98,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tools/lint/main.c:99,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 102
    functionName: main
    functionSourceFile: /src/libyang/tools/lint/main.c
    functionUses: 26
    functionsReached:
    - linenoiseSetCompletionCallback
    - ly_ctx_destroy
    - load_config
    - linenoise
    - func
    - store_config
    - free
    - linenoiseHistoryAdd
    - strdup
    - strncmp
    - main_ni
    - YLMSG_E
    - ly_ctx_new
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getpwuid
      Src: /src/libyang/tools/lint/configuration.c:39,1
    - Dst: getuid
      Src: /src/libyang/tools/lint/configuration.c:39,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:40,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/configuration.c:40,1
    - Dst: malloc
      Src: /src/libyang/tools/lint/configuration.c:45,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/configuration.c:45,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/configuration.c:45,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:47,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/configuration.c:47,1
    - Dst: sprintf
      Src: /src/libyang/tools/lint/configuration.c:50,1
    - Dst: access
      Src: /src/libyang/tools/lint/configuration.c:52,1
    - Dst: YLMSG_W
      Src: /src/libyang/tools/lint/configuration.c:56,1
    - Dst: mkdir
      Src: /src/libyang/tools/lint/configuration.c:57,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:58,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/configuration.c:58,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:59,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:63,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/configuration.c:63,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:64,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 70
    functionName: get_yanglint_dir
    functionSourceFile: /src/libyang/tools/lint/configuration.c
    functionUses: 0
    functionsReached:
    - strlen
    - malloc
    - strerror
    - mkdir
    - free
    - YLMSG_W
    - sprintf
    - getuid
    - access
    - getpwuid
    - YLMSG_E
    linkageType: ''
    returnType: char
    signature: 'char *

      get_yanglint_dir(void)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_yanglint_dir
      Src: /src/libyang/tools/lint/configuration.c:77,1
    - Dst: malloc
      Src: /src/libyang/tools/lint/configuration.c:81,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/configuration.c:81,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:83,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/configuration.c:83,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:84,1
    - Dst: sprintf
      Src: /src/libyang/tools/lint/configuration.c:88,1
    - Dst: access
      Src: /src/libyang/tools/lint/configuration.c:89,1
    - Dst: YLMSG_W
      Src: /src/libyang/tools/lint/configuration.c:90,1
    - Dst: linenoiseHistoryLoad
      Src: /src/libyang/tools/lint/configuration.c:91,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:92,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:95,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:96,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 97
    functionName: load_config
    functionSourceFile: /src/libyang/tools/lint/configuration.c
    functionUses: 1
    functionsReached:
    - strlen
    - malloc
    - strerror
    - free
    - linenoiseHistoryLoad
    - YLMSG_W
    - sprintf
    - get_yanglint_dir
    - access
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void load_config(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_yanglint_dir
      Src: /src/libyang/tools/lint/configuration.c:104,1
    - Dst: malloc
      Src: /src/libyang/tools/lint/configuration.c:108,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/configuration.c:108,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:110,1
    - Dst: strerror
      Src: /src/libyang/tools/lint/configuration.c:110,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:111,1
    - Dst: sprintf
      Src: /src/libyang/tools/lint/configuration.c:115,1
    - Dst: linenoiseHistorySave
      Src: /src/libyang/tools/lint/configuration.c:116,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/configuration.c:117,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:120,1
    - Dst: free
      Src: /src/libyang/tools/lint/configuration.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 122
    functionName: store_config
    functionSourceFile: /src/libyang/tools/lint/configuration.c
    functionUses: 1
    functionsReached:
    - strlen
    - malloc
    - strerror
    - free
    - sprintf
    - get_yanglint_dir
    - linenoiseHistorySave
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void store_config(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_print.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 54
    functionName: cmd_print_help
    functionSourceFile: /src/libyang/tools/lint/cmd_print.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_print_help(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_submodule
      Src: /src/libyang/tools/lint/cmd_print.c:63,1
    - Dst: ly_ctx_get_submodule_latest
      Src: /src/libyang/tools/lint/cmd_print.c:64,1
    - Dst: lys_print_submodule
      Src: /src/libyang/tools/lint/cmd_print.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - out
    - ctx
    - name
    - revision
    - format
    - line_length
    - options
    argTypes:
    - struct ly_out*
    - struct ly_ctx**
    - char*
    - char*
    - LYS_OUTFORMAT
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 71
    functionName: cmd_print_submodule
    functionSourceFile: /src/libyang/tools/lint/cmd_print.c
    functionUses: 0
    functionsReached:
    - lys_print_submodule
    - ly_ctx_get_submodule_latest
    - ly_ctx_get_submodule
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR cmd_print_submodule(struct ly_out *out, struct ly_ctx **ctx,
      char *name, char *revision, LYS_OUTFORMAT format, size_t line_length, uint32_t
      options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module
      Src: /src/libyang/tools/lint/cmd_print.c:80,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/tools/lint/cmd_print.c:81,1
    - Dst: lys_print_module
      Src: /src/libyang/tools/lint/cmd_print.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - out
    - ctx
    - name
    - revision
    - format
    - line_length
    - options
    argTypes:
    - struct ly_out*
    - struct ly_ctx**
    - char*
    - char*
    - LYS_OUTFORMAT
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 88
    functionName: cmd_print_module
    functionSourceFile: /src/libyang/tools/lint/cmd_print.c
    functionUses: 0
    functionsReached:
    - lys_print_module
    - ly_ctx_get_module
    - ly_ctx_get_module_latest
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR cmd_print_module(struct ly_out *out, struct ly_ctx **ctx, char
      *name, char *revision, LYS_OUTFORMAT format, size_t line_length, uint32_t options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/libyang/tools/lint/cmd_print.c:100,1
    - Dst: cmd_print_module
      Src: /src/libyang/tools/lint/cmd_print.c:106,1
    - Dst: cmd_print_submodule
      Src: /src/libyang/tools/lint/cmd_print.c:110,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:119,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:121,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:126,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:128,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 7
    argNames:
    - argc
    - argv
    - out
    - ctx
    - format
    - line_length
    - options
    argTypes:
    - int
    - char**
    - struct ly_out*
    - struct ly_ctx**
    - LYS_OUTFORMAT
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 133
    functionName: cmd_print_modules
    functionSourceFile: /src/libyang/tools/lint/cmd_print.c
    functionUses: 0
    functionsReached:
    - strchr
    - cmd_print_module
    - cmd_print_submodule
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_print_modules(int argc, char **argv, struct ly_out *out, struct
      ly_ctx **ctx, LYS_OUTFORMAT format, size_t line_length, uint32_t options)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd_print.c:157,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd_print.c:161,1
    - Dst: ly_out_filepath
      Src: /src/libyang/tools/lint/cmd_print.c:165,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:166,1
    - Dst: ly_out_new_filepath
      Src: /src/libyang/tools/lint/cmd_print.c:170,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:171,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_print.c:178,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_print.c:180,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_print.c:182,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_print.c:184,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:187,1
    - Dst: cmd_print_help
      Src: /src/libyang/tools/lint/cmd_print.c:188,1
    - Dst: atoi
      Src: /src/libyang/tools/lint/cmd_print.c:194,1
    - Dst: cmd_print_help
      Src: /src/libyang/tools/lint/cmd_print.c:206,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:209,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:216,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:221,1
    - Dst: ly_out_new_file
      Src: /src/libyang/tools/lint/cmd_print.c:226,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:227,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tools/lint/cmd_print.c:235,1
    - Dst: lys_find_path
      Src: /src/libyang/tools/lint/cmd_print.c:240,1
    - Dst: lys_find_path
      Src: /src/libyang/tools/lint/cmd_print.c:242,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:245,1
    - Dst: lys_print_node
      Src: /src/libyang/tools/lint/cmd_print.c:249,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_print.c:250,1
    - Dst: cmd_print_modules
      Src: /src/libyang/tools/lint/cmd_print.c:254,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd_print.c:259,1
    - Dst: ly_out_free
      Src: /src/libyang/tools/lint/cmd_print.c:260,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 105
    argCount: 2
    argNames:
    - ctx
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 261
    functionName: cmd_print
    functionSourceFile: /src/libyang/tools/lint/cmd_print.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - ly_out_new_file
    - strcasecmp
    - ly_out_new_filepath
    - lys_find_path
    - cmd_print_modules
    - free_cmdline
    - parse_cmdline
    - ly_out_filepath
    - getopt_long
    - lys_print_node
    - ly_out_free
    - atoi
    - YLMSG_E
    - cmd_print_help
    linkageType: ''
    returnType: void
    signature: void cmd_print(struct ly_ctx **ctx, const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MSG
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: YLMSG_E
    functionSourceFile: /src/libyang/tools/lint/common.h
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: YLMSG_E(MSG, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - MSG
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: YLMSG_W
    functionSourceFile: /src/libyang/tools/lint/common.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: YLMSG_W(MSG, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_searchpath.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 37
    functionName: cmd_searchpath_help
    functionSourceFile: /src/libyang/tools/lint/cmd_searchpath.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_searchpath_help(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd_searchpath.c:52,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd_searchpath.c:56,1
    - Dst: ly_ctx_unset_searchdir
      Src: /src/libyang/tools/lint/cmd_searchpath.c:59,1
    - Dst: cmd_searchpath_help
      Src: /src/libyang/tools/lint/cmd_searchpath.c:63,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_searchpath.c:66,1
    - Dst: ly_ctx_get_searchdirs
      Src: /src/libyang/tools/lint/cmd_searchpath.c:73,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_searchpath.c:75,1
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_searchpath.c:77,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tools/lint/cmd_searchpath.c:83,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd_searchpath.c:89,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 90
    functionName: cmd_searchpath
    functionSourceFile: /src/libyang/tools/lint/cmd_searchpath.c
    functionUses: 0
    functionsReached:
    - ly_ctx_unset_searchdir
    - cmd_searchpath_help
    - ly_ctx_set_searchdir
    - free_cmdline
    - parse_cmdline
    - getopt_long
    - printf
    - ly_ctx_get_searchdirs
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_searchpath(struct ly_ctx **ctx, const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_load.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 43
    functionName: cmd_load_help
    functionSourceFile: /src/libyang/tools/lint/cmd_load.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_load_help(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd_load.c:60,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd_load.c:64,1
    - Dst: parse_features
      Src: /src/libyang/tools/lint/cmd_load.c:67,1
    - Dst: cmd_load_help
      Src: /src/libyang/tools/lint/cmd_load.c:73,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_load.c:86,1
    - Dst: cmd_add_help
      Src: /src/libyang/tools/lint/cmd_load.c:93,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tools/lint/cmd_load.c:98,1
    - Dst: strchr
      Src: /src/libyang/tools/lint/cmd_load.c:107,1
    - Dst: get_features
      Src: /src/libyang/tools/lint/cmd_load.c:114,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/tools/lint/cmd_load.c:117,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tools/lint/cmd_load.c:125,1
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/cmd_load.c:127,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd_load.c:128,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 2
    argNames:
    - ctx
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 129
    functionName: cmd_load
    functionSourceFile: /src/libyang/tools/lint/cmd_load.c
    functionUses: 0
    functionsReached:
    - ly_ctx_set_options
    - cmd_add_help
    - cmd_load_help
    - ly_ctx_load_module
    - ly_ctx_unset_options
    - strchr
    - parse_cmdline
    - free_cmdline
    - parse_features
    - getopt_long
    - ly_set_erase
    - get_features
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_load(struct ly_ctx **ctx, const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_clear.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 42
    functionName: cmd_clear_help
    functionSourceFile: /src/libyang/tools/lint/cmd_clear.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_clear_help(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd_clear.c:58,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd_clear.c:62,1
    - Dst: cmd_clear_help
      Src: /src/libyang/tools/lint/cmd_clear.c:68,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_clear.c:71,1
    - Dst: ly_ctx_new
      Src: /src/libyang/tools/lint/cmd_clear.c:76,1
    - Dst: YLMSG_W
      Src: /src/libyang/tools/lint/cmd_clear.c:77,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/tools/lint/cmd_clear.c:81,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd_clear.c:85,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 86
    functionName: cmd_clear
    functionSourceFile: /src/libyang/tools/lint/cmd_clear.c
    functionUses: 0
    functionsReached:
    - ly_ctx_destroy
    - cmd_clear_help
    - YLMSG_W
    - free_cmdline
    - parse_cmdline
    - getopt_long
    - YLMSG_E
    - ly_ctx_new
    linkageType: ''
    returnType: void
    signature: void cmd_clear(struct ly_ctx **ctx, const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_list.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 38
    functionName: cmd_list_help
    functionSourceFile: /src/libyang/tools/lint/cmd_list.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_list_help(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd_list.c:54,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd_list.c:58,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_list.c:61,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/cmd_list.c:63,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_list.c:66,1
    - Dst: cmd_list_help
      Src: /src/libyang/tools/lint/cmd_list.c:67,1
    - Dst: cmd_list_help
      Src: /src/libyang/tools/lint/cmd_list.c:72,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_list.c:75,1
    - Dst: ly_out_new_file
      Src: /src/libyang/tools/lint/cmd_list.c:80,1
    - Dst: print_list
      Src: /src/libyang/tools/lint/cmd_list.c:81,1
    - Dst: ly_out_free
      Src: /src/libyang/tools/lint/cmd_list.c:82,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_list.c:84,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd_list.c:88,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 89
    functionName: cmd_list
    functionSourceFile: /src/libyang/tools/lint/cmd_list.c
    functionUses: 0
    functionsReached:
    - ly_out_new_file
    - print_list
    - cmd_list_help
    - free_cmdline
    - parse_cmdline
    - getopt_long
    - ly_out_free
    - strcasecmp
    - YLMSG_E
    linkageType: ''
    returnType: void
    signature: void cmd_list(struct ly_ctx **ctx, const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/cmd_add.c:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 47
    functionName: cmd_add_help
    functionSourceFile: /src/libyang/tools/lint/cmd_add.c
    functionUses: 1
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void cmd_add_help(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: parse_cmdline
      Src: /src/libyang/tools/lint/cmd_add.c:65,1
    - Dst: getopt_long
      Src: /src/libyang/tools/lint/cmd_add.c:69,1
    - Dst: YLMSG_W
      Src: /src/libyang/tools/lint/cmd_add.c:73,1
    - Dst: parse_features
      Src: /src/libyang/tools/lint/cmd_add.c:84,1
    - Dst: cmd_add_help
      Src: /src/libyang/tools/lint/cmd_add.c:90,1
    - Dst: YLMSG_E
      Src: /src/libyang/tools/lint/cmd_add.c:103,1
    - Dst: cmd_add_help
      Src: /src/libyang/tools/lint/cmd_add.c:110,1
    - Dst: ly_ctx_set_options
      Src: /src/libyang/tools/lint/cmd_add.c:115,1
    - Dst: parse_schema_path
      Src: /src/libyang/tools/lint/cmd_add.c:126,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/tools/lint/cmd_add.c:131,1
    - Dst: dirname
      Src: /src/libyang/tools/lint/cmd_add.c:131,1
    - Dst: get_features
      Src: /src/libyang/tools/lint/cmd_add.c:136,1
    - Dst: free
      Src: /src/libyang/tools/lint/cmd_add.c:139,1
    - Dst: free
      Src: /src/libyang/tools/lint/cmd_add.c:140,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/tools/lint/cmd_add.c:143,1
    - Dst: lys_parse
      Src: /src/libyang/tools/lint/cmd_add.c:149,1
    - Dst: ly_in_free
      Src: /src/libyang/tools/lint/cmd_add.c:150,1
    - Dst: ly_ctx_unset_searchdir_last
      Src: /src/libyang/tools/lint/cmd_add.c:151,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/tools/lint/cmd_add.c:161,1
    - Dst: ly_set_erase
      Src: /src/libyang/tools/lint/cmd_add.c:163,1
    - Dst: free_cmdline
      Src: /src/libyang/tools/lint/cmd_add.c:164,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 81
    argCount: 2
    argNames:
    - ctx
    - cmdline
    argTypes:
    - struct ly_ctx**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 165
    functionName: cmd_add
    functionSourceFile: /src/libyang/tools/lint/cmd_add.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - ly_set_erase
    - get_features
    - YLMSG_E
    - cmd_add_help
    - lys_parse
    - ly_ctx_unset_options
    - YLMSG_W
    - getopt_long
    - ly_ctx_set_options
    - ly_in_new_filepath
    - ly_ctx_set_searchdir
    - free
    - ly_ctx_unset_searchdir_last
    - free_cmdline
    - parse_cmdline
    - parse_features
    - dirname
    - parse_schema_path
    linkageType: ''
    returnType: void
    signature: void cmd_add(struct ly_ctx **ctx, const char *cmdline)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 182
    functionName: lndebug
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lndebug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ml
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 191
    functionName: linenoiseSetMultiLine
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void linenoiseSetMultiLine(int ml)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:196,1
    - Dst: strcasecmp
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 203
    functionName: isUnsupportedTerm
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    - getenv
    linkageType: ''
    returnType: int
    signature: int isUnsupportedTerm(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:209,1
    - Dst: atexit
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:211,1
    - Dst: tcgetattr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:214,1
    - Dst: tcsetattr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:232,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 239
    functionName: linenoiseEnableRawMode
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - isatty
    - tcsetattr
    - tcgetattr
    - atexit
    linkageType: ''
    returnType: int
    signature: int linenoiseEnableRawMode(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tcsetattr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: linenoiseDisableRawMode
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - tcsetattr
    linkageType: ''
    returnType: void
    signature: void linenoiseDisableRawMode(int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:256,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:260,1
    - Dst: sscanf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:268,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 2
    argNames:
    - ifd
    - ofd
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 270
    functionName: getCursorPosition
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - read
    - write
    - sscanf
    linkageType: ''
    returnType: int
    signature: int getCursorPosition(int ifd, int ofd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ioctl
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:277,1
    - Dst: getCursorPosition
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:282,1
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:286,1
    - Dst: getCursorPosition
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:287,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:293,1
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:294,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:294,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - ifd
    - ofd
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 305
    functionName: getColumns
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - strlen
    - getCursorPosition
    - snprintf
    - ioctl
    - write
    linkageType: ''
    returnType: int
    signature: int getColumns(int ifd, int ofd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 312
    functionName: linenoiseClearScreen
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: void
    signature: void linenoiseClearScreen(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:317,1
    - Dst: fflush
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: linenoiseBeep
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - fprintf
    - fflush
    linkageType: ''
    returnType: void
    signature: void linenoiseBeep(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:327,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - lc
    argTypes:
    - linenoiseCompletions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 330
    functionName: freeCompletions
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void freeCompletions(linenoiseCompletions *lc)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:345,1
    - Dst: completionCallback
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:352,1
    - Dst: linenoiseBeep
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:354,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:359,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:361,1
    - Dst: strrchr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:370,1
    - Dst: strrchr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:371,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:376,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:377,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:379,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:381,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:383,1
    - Dst: freeCompletions
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:387,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:392,1
    - Dst: freeCompletions
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:394,1
    - Dst: freeCompletions
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:400,1
    - Dst: ioctl
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:405,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:408,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:410,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:411,1
    - Dst: freeCompletions
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:435,1
    - Dst: linenoiseDisableRawMode
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:441,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:442,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:444,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:447,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:449,1
    - Dst: linenoiseEnableRawMode
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:452,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:453,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:456,1
    - Dst: freeCompletions
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:458,1
    - Dst: freeCompletions
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:464,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 90
    argCount: 1
    argNames:
    - ls
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 466
    functionName: completeLine
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - strlen
    - read
    - snprintf
    - completionCallback
    - free
    - freeCompletions
    - linenoiseBeep
    - strrchr
    - strdup
    - ioctl
    - linenoiseRefreshLine
    - linenoiseDisableRawMode
    - printf
    - linenoiseEnableRawMode
    linkageType: ''
    returnType: char
    signature: char completeLine(struct linenoiseState *ls)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - linenoiseCompletionCallback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 471
    functionName: linenoiseSetCompletionCallback
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void linenoiseSetCompletionCallback(linenoiseCompletionCallback *fn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:487,1
    - Dst: malloc
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:491,1
    - Dst: strcpy
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:492,1
    - Dst: malloc
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:496,1
    - Dst: sprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:498,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:500,1
    - Dst: opendir
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:502,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:504,1
    - Dst: readdir
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:508,1
    - Dst: strncmp
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:513,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:513,1
    - Dst: strcpy
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:515,1
    - Dst: stat
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:516,1
    - Dst: strcpy
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:521,1
    - Dst: S_ISDIR
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:522,1
    - Dst: strcat
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:523,1
    - Dst: linenoiseAddCompletion
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:526,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:530,1
    - Dst: closedir
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:531,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 3
    argNames:
    - buf
    - hint
    - lc
    argTypes:
    - char*
    - char*
    - linenoiseCompletions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 532
    functionName: linenoisePathCompletion
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 1
    functionsReached:
    - strlen
    - strcpy
    - malloc
    - readdir
    - free
    - linenoiseAddCompletion
    - strrchr
    - sprintf
    - strncmp
    - strcat
    - closedir
    - S_ISDIR
    - opendir
    - stat
    linkageType: ''
    returnType: void
    signature: void linenoisePathCompletion(const char *buf, const char *hint, linenoiseCompletions
      *lc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:539,1
    - Dst: malloc
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:542,1
    - Dst: memcpy
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:544,1
    - Dst: realloc
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:545,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - lc
    - str
    argTypes:
    - linenoiseCompletions*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 552
    functionName: linenoiseAddCompletion
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 2
    functionsReached:
    - strlen
    - malloc
    - free
    - realloc
    - memcpy
    linkageType: ''
    returnType: void
    signature: void linenoiseAddCompletion(linenoiseCompletions *lc, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ab
    argTypes:
    - struct abuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 568
    functionName: abInit
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void abInit(struct abuf *ab)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:571,1
    - Dst: memcpy
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:574,1
    - Dst: ab::ab
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:574,1
    - Dst: ab::ab
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ab
    - s
    - len
    argTypes:
    - struct abuf*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 577
    functionName: abAppend
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - ab::ab
    - realloc
    - memcpy
    linkageType: ''
    returnType: void
    signature: void abAppend(struct abuf *ab, const char *s, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ab
    argTypes:
    - struct abuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 581
    functionName: abFree
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void abFree(struct abuf *ab)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:589,1
    - Dst: abInit
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:605,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:607,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:608,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:608,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:610,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:610,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:611,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:613,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:614,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:614,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:616,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:617,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:617,1
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:618,1
    - Dst: abFree
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 620
    functionName: refreshSingleLine
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - abFree
    - strlen
    - snprintf
    - abAppend
    - abInit
    - write
    linkageType: ''
    returnType: void
    signature: void refreshSingleLine(struct linenoiseState *l)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:628,1
    - Dst: abInit
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:642,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:644,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:645,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:646,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:646,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:651,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:652,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:653,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:653,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:657,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:658,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:659,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:659,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:662,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:662,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:663,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:671,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:672,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:673,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:674,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:674,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:681,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:685,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:686,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:687,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:687,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:692,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:694,1
    - Dst: snprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:696,1
    - Dst: abAppend
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:697,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:697,1
    - Dst: lndebug
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:699,1
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:702,1
    - Dst: abFree
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:703,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 704
    functionName: refreshMultiLine
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - abFree
    - strlen
    - snprintf
    - lndebug
    - abAppend
    - abInit
    - write
    linkageType: ''
    returnType: void
    signature: void refreshMultiLine(struct linenoiseState *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: refreshMultiLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:710,1
    - Dst: refreshSingleLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:712,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 708
    functionDepth: 2
    functionLinenumber: 708
    functionLinenumberEnd: 713
    functionName: linenoiseRefreshLine
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 1
    functionsReached:
    - refreshSingleLine
    - refreshMultiLine
    linkageType: ''
    returnType: void
    signature: void linenoiseRefreshLine(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:728,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:730,1
    - Dst: memmove
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:733,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:738,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - l
    - c
    argTypes:
    - struct linenoiseState*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 718
    functionDepth: 3
    functionLinenumber: 718
    functionLinenumberEnd: 742
    functionName: linenoiseEditInsert
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    - write
    - memmove
    linkageType: ''
    returnType: int
    signature: int linenoiseEditInsert(struct linenoiseState *l, char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 745
    functionDepth: 3
    functionLinenumber: 745
    functionLinenumberEnd: 750
    functionName: linenoiseEditMoveLeft
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    linkageType: ''
    returnType: void
    signature: void linenoiseEditMoveLeft(struct linenoiseState *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:756,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 753
    functionDepth: 3
    functionLinenumber: 753
    functionLinenumberEnd: 758
    functionName: linenoiseEditMoveRight
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    linkageType: ''
    returnType: void
    signature: void linenoiseEditMoveRight(struct linenoiseState *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:764,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 761
    functionDepth: 3
    functionLinenumber: 761
    functionLinenumberEnd: 766
    functionName: linenoiseEditMoveHome
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    linkageType: ''
    returnType: void
    signature: void linenoiseEditMoveHome(struct linenoiseState *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 769
    functionDepth: 3
    functionLinenumber: 769
    functionLinenumberEnd: 774
    functionName: linenoiseEditMoveEnd
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    linkageType: ''
    returnType: void
    signature: void linenoiseEditMoveEnd(struct linenoiseState *l)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:784,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:785,1
    - Dst: strncpy
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:795,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:797,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - l
    - dir
    argTypes:
    - struct linenoiseState*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 780
    functionDepth: 3
    functionLinenumber: 780
    functionLinenumberEnd: 800
    functionName: linenoiseEditHistoryNext
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - strlen
    - free
    - strdup
    - linenoiseRefreshLine
    - strncpy
    linkageType: ''
    returnType: void
    signature: void linenoiseEditHistoryNext(struct linenoiseState *l, int dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:806,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:809,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 804
    functionDepth: 3
    functionLinenumber: 804
    functionLinenumberEnd: 811
    functionName: linenoiseEditDelete
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    - memmove
    linkageType: ''
    returnType: void
    signature: void linenoiseEditDelete(struct linenoiseState *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:816,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:820,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 814
    functionDepth: 3
    functionLinenumber: 814
    functionLinenumberEnd: 822
    functionName: linenoiseEditBackspace
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    - memmove
    linkageType: ''
    returnType: void
    signature: void linenoiseEditBackspace(struct linenoiseState *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:835,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:837,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct linenoiseState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 838
    functionName: linenoiseEditDeletePrevWord
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseRefreshLine
    - memmove
    linkageType: ''
    returnType: void
    signature: void linenoiseEditDeletePrevWord(struct linenoiseState *l)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:857,1
    - Dst: getColumns
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:860,1
    - Dst: linenoiseHistoryAdd
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:870,1
    - Dst: write
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:872,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:878,1
    - Dst: completeLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:885,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:895,1
    - Dst: linenoiseEditMoveEnd
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:896,1
    - Dst: linenoiseEditBackspace
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:903,1
    - Dst: linenoiseEditDelete
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:908,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:911,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:921,1
    - Dst: linenoiseEditMoveLeft
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:925,1
    - Dst: linenoiseEditMoveRight
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:928,1
    - Dst: linenoiseEditHistoryNext
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:931,1
    - Dst: linenoiseEditHistoryNext
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:934,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:940,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:941,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:947,1
    - Dst: linenoiseEditDelete
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:951,1
    - Dst: linenoiseEditHistoryNext
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:958,1
    - Dst: linenoiseEditHistoryNext
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:961,1
    - Dst: linenoiseEditMoveRight
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:964,1
    - Dst: linenoiseEditMoveLeft
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:967,1
    - Dst: linenoiseEditMoveHome
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:970,1
    - Dst: linenoiseEditMoveEnd
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:973,1
    - Dst: linenoiseEditMoveHome
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:983,1
    - Dst: linenoiseEditMoveEnd
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:986,1
    - Dst: linenoiseEditInsert
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:992,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:997,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1002,1
    - Dst: linenoiseEditMoveHome
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1005,1
    - Dst: linenoiseEditMoveEnd
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1008,1
    - Dst: linenoiseClearScreen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1011,1
    - Dst: linenoiseRefreshLine
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1012,1
    - Dst: linenoiseEditDeletePrevWord
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1015,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 152
    argCount: 5
    argNames:
    - stdin_fd
    - stdout_fd
    - buf
    - buflen
    - prompt
    argTypes:
    - int
    - int
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 848
    functionDepth: 4
    functionLinenumber: 848
    functionLinenumberEnd: 1020
    functionName: linenoiseEdit
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseEditDelete
    - strlen
    - read
    - linenoiseEditHistoryNext
    - linenoiseEditMoveEnd
    - linenoiseEditBackspace
    - linenoiseEditMoveHome
    - linenoiseEditDeletePrevWord
    - free
    - linenoiseClearScreen
    - linenoiseHistoryAdd
    - linenoiseEditMoveLeft
    - getColumns
    - linenoiseRefreshLine
    - linenoiseEditMoveRight
    - linenoiseEditInsert
    - write
    - completeLine
    linkageType: ''
    returnType: int
    signature: int linenoiseEdit(int stdin_fd, int stdout_fd, char *buf, size_t buflen,
      const char *prompt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1028,1
    - Dst: linenoiseEnableRawMode
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1030,1
    - Dst: memset
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1031,1
    - Dst: read
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1036,1
    - Dst: memmove
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1038,1
    - Dst: memcmp
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1040,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1042,1
    - Dst: isprint
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1043,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1044,1
    - Dst: fflush
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1045,1
    - Dst: linenoiseDisableRawMode
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1047,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1025
    functionDepth: 1
    functionLinenumber: 1025
    functionLinenumberEnd: 1048
    functionName: linenoisePrintKeyCodes
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - read
    - isprint
    - memset
    - memcmp
    - memmove
    - linenoiseDisableRawMode
    - fflush
    - linenoiseEnableRawMode
    - printf
    linkageType: ''
    returnType: void
    signature: void linenoisePrintKeyCodes(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1059,1
    - Dst: fgets
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1061,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1062,1
    - Dst: linenoiseEnableRawMode
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1069,1
    - Dst: linenoiseEdit
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1070,1
    - Dst: linenoiseDisableRawMode
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1071,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1072,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - buf
    - buflen
    - prompt
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1052
    functionDepth: 5
    functionLinenumber: 1052
    functionLinenumberEnd: 1075
    functionName: linenoiseRaw
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - strlen
    - isatty
    - linenoiseDisableRawMode
    - linenoiseEnableRawMode
    - printf
    - fgets
    - linenoiseEdit
    linkageType: ''
    returnType: int
    signature: int linenoiseRaw(char *buf, size_t buflen, const char *prompt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isUnsupportedTerm
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1086,1
    - Dst: printf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1089,1
    - Dst: fflush
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1090,1
    - Dst: fgets
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1091,1
    - Dst: strlen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1092,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1097,1
    - Dst: linenoiseRaw
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1099,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1101,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - prompt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1082
    functionDepth: 6
    functionLinenumber: 1082
    functionLinenumberEnd: 1103
    functionName: linenoise
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 1
    functionsReached:
    - strlen
    - linenoiseRaw
    - isUnsupportedTerm
    - strdup
    - fflush
    - printf
    - fgets
    linkageType: ''
    returnType: char
    signature: char *linenoise(const char *prompt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1114,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1117
    functionName: freeHistory
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void freeHistory(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: linenoiseDisableRawMode
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1121,1
    - Dst: freeHistory
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1120
    functionDepth: 1
    functionLinenumber: 1120
    functionLinenumberEnd: 1123
    functionName: linenoiseAtExit
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - linenoiseDisableRawMode
    - freeHistory
    linkageType: ''
    returnType: void
    signature: void linenoiseAtExit(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1139,1
    - Dst: memset
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1141,1
    - Dst: strcmp
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1145,1
    - Dst: strdup
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1149,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1152,1
    - Dst: memmove
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1153,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1159
    functionName: linenoiseHistoryAdd
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 2
    functionsReached:
    - memset
    - malloc
    - strcmp
    - free
    - memmove
    - strdup
    linkageType: ''
    returnType: int
    signature: int linenoiseHistoryAdd(const char *line)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: malloc::malloc
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1172,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1179,1
    - Dst: free
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1184,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - len
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1165
    functionDepth: 0
    functionLinenumber: 1165
    functionLinenumberEnd: 1191
    functionName: linenoiseHistorySetMaxLen
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 0
    functionsReached:
    - free
    - malloc::malloc
    linkageType: ''
    returnType: int
    signature: int linenoiseHistorySetMaxLen(int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1196,1
    - Dst: fprintf
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1201,1
    - Dst: fclose
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1195
    functionDepth: 0
    functionLinenumber: 1195
    functionLinenumberEnd: 1204
    functionName: linenoiseHistorySave
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 1
    functionsReached:
    - fopen
    - fprintf
    - fclose
    linkageType: ''
    returnType: int
    signature: int linenoiseHistorySave(const char *filename)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1212,1
    - Dst: fgets
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1217,1
    - Dst: strchr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1220,1
    - Dst: strchr
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1221,1
    - Dst: linenoiseHistoryAdd
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1223,1
    - Dst: fclose
      Src: /src/libyang/tools/lint/linenoise/linenoise.c:1225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - filename
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1227
    functionName: linenoiseHistoryLoad
    functionSourceFile: /src/libyang/tools/lint/linenoise/linenoise.c
    functionUses: 1
    functionsReached:
    - fopen
    - linenoiseHistoryAdd
    - fclose
    - strchr
    - fgets
    linkageType: ''
    returnType: int
    signature: int linenoiseHistoryLoad(const char *filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fdopen
      Src: /src/libyang/compat/compat.c:34,1
    - Dst: dup
      Src: /src/libyang/compat/compat.c:34,1
    - Dst: vfprintf
      Src: /src/libyang/compat/compat.c:36,1
    - Dst: fclose
      Src: /src/libyang/compat/compat.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - format
    - ap
    argTypes:
    - int
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 40
    functionName: vdprintf
    functionSourceFile: /src/libyang/compat/compat.c
    functionUses: 0
    functionsReached:
    - fclose
    - vfprintf
    - fdopen
    - dup
    linkageType: ''
    returnType: int
    signature: int vdprintf(int fd, const char *format, va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/libyang/compat/compat.c:51,1
    - Dst: vasprintf
      Src: /src/libyang/compat/compat.c:52,1
    - Dst: va_end
      Src: /src/libyang/compat/compat.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - strp
    - fmt
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 55
    functionName: asprintf
    functionSourceFile: /src/libyang/compat/compat.c
    functionUses: 6
    functionsReached:
    - va_start
    - va_end
    - vasprintf
    linkageType: ''
    returnType: int
    signature: int asprintf(char **strp, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_copy
      Src: /src/libyang/compat/compat.c:65,1
    - Dst: vsnprintf
      Src: /src/libyang/compat/compat.c:66,1
    - Dst: va_end
      Src: /src/libyang/compat/compat.c:68,1
    - Dst: malloc
      Src: /src/libyang/compat/compat.c:70,1
    - Dst: vsnprintf
      Src: /src/libyang/compat/compat.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - strp
    - fmt
    - ap
    argTypes:
    - char**
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 75
    functionName: vasprintf
    functionSourceFile: /src/libyang/compat/compat.c
    functionUses: 2
    functionsReached:
    - va_copy
    - vsnprintf
    - malloc
    - va_end
    linkageType: ''
    returnType: int
    signature: int vasprintf(char **strp, const char *fmt, va_list ap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/compat/compat.c:89,1
    - Dst: memcpy
      Src: /src/libyang/compat/compat.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - s
    - n
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 96
    functionName: strndup
    functionSourceFile: /src/libyang/compat/compat.c
    functionUses: 4
    functionsReached:
    - malloc
    - memcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      strndup(const char *s, size_t n)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/compat/compat.c:108,1
    - Dst: strncmp
      Src: /src/libyang/compat/compat.c:118,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - s
    - find
    - slen
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 122
    functionName: strnstr
    functionSourceFile: /src/libyang/compat/compat.c
    functionUses: 0
    functionsReached:
    - strlen
    - strncmp
    linkageType: ''
    returnType: char
    signature: 'char *

      strnstr(const char *s, const char *find, size_t slen)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ferror
      Src: /src/libyang/compat/compat.c:139,1
    - Dst: feof
      Src: /src/libyang/compat/compat.c:139,1
    - Dst: fgets
      Src: /src/libyang/compat/compat.c:143,1
    - Dst: strchr
      Src: /src/libyang/compat/compat.c:147,1
    - Dst: strlen
      Src: /src/libyang/compat/compat.c:152,1
    - Dst: realloc
      Src: /src/libyang/compat/compat.c:155,1
    - Dst: strcpy
      Src: /src/libyang/compat/compat.c:163,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - lineptr
    - n
    - stream
    argTypes:
    - char**
    - size_t*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 165
    functionName: getline
    functionSourceFile: /src/libyang/compat/compat.c
    functionUses: 1
    functionsReached:
    - strlen
    - strcpy
    - ferror
    - feof
    - strchr
    - fgets
    - realloc
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t getline(char **lineptr, size_t *n, FILE *stream)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getcwd
      Src: /src/libyang/compat/compat.c:176,1
    - Dst: strdup
      Src: /src/libyang/compat/compat.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 184
    functionName: get_current_dir_name
    functionSourceFile: /src/libyang/compat/compat.c
    functionUses: 0
    functionsReached:
    - strdup
    - getcwd
    linkageType: ''
    returnType: char
    signature: 'char *

      get_current_dir_name(void)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/src/tree_data.c:73,1
    - Dst: LOGVAL_ERRITEM
      Src: /src/libyang/src/tree_data.c:84,1
    - Dst: ly_err_free
      Src: /src/libyang/src/tree_data.c:85,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:87,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 11
    argNames:
    - ctx
    - val
    - type
    - value
    - value_len
    - dynamic
    - format
    - prefix_data
    - hints
    - ctx_node
    - incomplete
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lysc_type*
    - void*
    - size_t
    - ly_bool*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 93
    functionName: lyd_value_store
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    - LOGVAL_ERRITEM
    - ly_err_free
    - struct lysc_type*::plugin::store
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_value_store(const struct ly_ctx *ctx, struct lyd_value
      *val, const struct lysc_type *type, const void *value,\n        size_t value_len,
      ly_bool *dynamic, LY_VALUE_FORMAT format, void *prefix_data, uint32_t hints,\n
      \       const struct lysc_node *ctx_node, ly_bool *incomplete)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:102,1
    - Dst: struct lysc_type*::plugin::validate
      Src: /src/libyang/src/tree_data.c:104,1
    - Dst: LOGVAL_ERRITEM
      Src: /src/libyang/src/tree_data.c:107,1
    - Dst: ly_err_free
      Src: /src/libyang/src/tree_data.c:108,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:110,1
    - Dst: struct lysc_type*::plugin::print
      Src: /src/libyang/src/tree_data.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - ctx
    - type
    - val
    - ctx_node
    - tree
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - struct lyd_value*
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (type->plugin->validate)
      pos:
        line_end: 101
        line_start: 101
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 117
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 117
    functionName: lyd_value_validate_incomplete
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - struct lysc_type*::plugin::validate
    - struct lysc_type*::plugin::print
    - ly_err_free
    - LOGVAL
    - LOGVAL_ERRITEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_value_validate_incomplete(const struct ly_ctx *ctx, const
      struct lysc_type *type, struct lyd_value *val,\n        const struct lyd_node
      *ctx_node, const struct lyd_node *tree)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:128,1
    - Dst: LOGARG
      Src: /src/libyang/src/tree_data.c:131,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/src/tree_data.c:136,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:145,1
    - Dst: LOGVAL_ERRITEM
      Src: /src/libyang/src/tree_data.c:146,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:147,1
    - Dst: ly_err_free
      Src: /src/libyang/src/tree_data.c:149,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/tree_data.c:153,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 6
    argNames:
    - ctx
    - node
    - value
    - value_len
    - format
    - prefix_data
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - size_t
    - LY_VALUE_FORMAT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 156
    functionName: lys_value_validate
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - LOGARG
    - struct lysc_type*::plugin::free
    - LY_CHECK_ARG_RET
    - ly_err_free
    - LOGVAL_ERRITEM
    - LOG_LOCSET
    - struct lysc_type*::plugin::store
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_value_validate(const struct ly_ctx *ctx, const struct lysc_node
      *node, const char *value, size_t value_len,\n        LY_VALUE_FORMAT format,
      void *prefix_data)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:168,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/src/tree_data.c:177,1
    - Dst: struct lysc_type*::plugin::validate
      Src: /src/libyang/src/tree_data.c:185,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:192,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:194,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:196,1
    - Dst: LOGVAL_ERRITEM
      Src: /src/libyang/src/tree_data.c:198,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:200,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:202,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:204,1
    - Dst: ly_err_free
      Src: /src/libyang/src/tree_data.c:207,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:222,1
    - Dst: struct lyd_value::realtype::plugin::print
      Src: /src/libyang/src/tree_data.c:222,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/tree_data.c:228,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 7
    argNames:
    - ctx
    - schema
    - value
    - value_len
    - ctx_node
    - realtype
    - canonical
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - size_t
    - struct lyd_node*
    - struct lysc_type**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 231
    functionName: lyd_value_validate
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - struct lysc_type*::plugin::validate
    - LOG_LOCBACK
    - struct lysc_type*::plugin::free
    - LY_CHECK_ARG_RET
    - ly_err_free
    - LOGVAL_ERRITEM
    - lydict_insert
    - LOG_LOCSET
    - struct lysc_type*::plugin::store
    - struct lyd_value::realtype::plugin::print
    linkageType: ''
    returnType: API
    signature: "API lyd_value_validate(const struct ly_ctx *ctx, const struct lysc_node
      *schema, const char *value, size_t value_len,\n        const struct lyd_node
      *ctx_node, const struct lysc_type **realtype, const char **canonical)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:241,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:247,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/tree_data.c:248,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:249,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:250,1
    - Dst: struct lysc_type*::plugin::compare
      Src: /src/libyang/src/tree_data.c:253,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/tree_data.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - node
    - value
    - value_len
    argTypes:
    - struct lyd_node_term*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 257
    functionName: lyd_value_compare
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - struct lysc_type*::plugin::compare
    - LOG_LOCBACK
    - struct lysc_type*::plugin::free
    - LY_CHECK_ARG_RET
    - lyd_value_store
    - LY_CHECK_RET
    - LOG_LOCSET
    linkageType: ''
    returnType: API
    signature: API lyd_value_compare(const struct lyd_node_term *node, const char
      *value, size_t value_len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:267,1
    - Dst: struct lysc_node_leaf*::type::plugin::compare
      Src: /src/libyang/src/tree_data.c:277,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_data.c:286,1
    - Dst: struct lysc_node_leaflist*::type::plugin::compare
      Src: /src/libyang/src/tree_data.c:288,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts:
    - condition: (node->schema->nodetype & LYD_NODE_TERM)
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 295
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 295
    functionName: lyd_is_default
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - LY_ARRAY_FOR
    - struct lysc_node_leaf*::type::plugin::compare
    - struct lysc_node_leaflist*::type::plugin::compare
    - assert
    linkageType: ''
    returnType: API
    signature: API lyd_is_default(const struct lyd_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:303,1
    - Dst: isspace
      Src: /src/libyang/src/tree_data.c:306,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_data.c:309,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_data.c:312,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_data.c:315,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 2
    argNames:
    - in
    - format
    argTypes:
    - struct ly_in*
    - LYD_FORMAT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 321
    functionName: lyd_parse_get_format
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - isspace
    - strncmp
    linkageType: ''
    returnType: LYD_FORMAT
    signature: LYD_FORMAT lyd_parse_get_format(const struct ly_in *in, LYD_FORMAT
      format)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:347,1
    - Dst: lyd_parse_get_format
      Src: /src/libyang/src/tree_data.c:349,1
    - Dst: lyd_parse_xml
      Src: /src/libyang/src/tree_data.c:360,1
    - Dst: lyd_parse_json
      Src: /src/libyang/src/tree_data.c:363,1
    - Dst: lyd_parse_lyb
      Src: /src/libyang/src/tree_data.c:366,1
    - Dst: LOGARG
      Src: /src/libyang/src/tree_data.c:369,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:373,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:377,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/tree_data.c:378,1
    - Dst: lyd_validate
      Src: /src/libyang/src/tree_data.c:384,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:386,1
    - Dst: struct lyd_ctx*::free
      Src: /src/libyang/src/tree_data.c:396,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:402,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/tree_data.c:406,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_data.c:410,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 9
    argNames:
    - ctx
    - ext
    - parent
    - first_p
    - in
    - format
    - parse_opts
    - val_opts
    - op
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    - struct lyd_node*
    - struct lyd_node**
    - struct ly_in*
    - LYD_FORMAT
    - uint32_t
    - uint32_t
    - struct lyd_node**
    assertStmts:
    - condition: (ctx && (parent || first_p))
      pos:
        line_end: 346
        line_start: 346
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 412
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 412
    functionName: lyd_parse
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_parse_lyb
    - lyd_parent
    - LOGARG
    - struct lyd_ctx*::free
    - lyd_free_all
    - lyd_free_tree
    - lyd_parse_json
    - lyd_validate
    - lyd_parse_xml
    - LY_CHECK_GOTO
    - lyd_parse_get_format
    - ly_set_erase
    - assert
    - lyd_first_sibling
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parse(const struct ly_ctx *ctx, const struct lysc_ext_instance
      *ext, struct lyd_node *parent, struct lyd_node **first_p,\n        struct ly_in
      *in, LYD_FORMAT format, uint32_t parse_opts, uint32_t val_opts, struct lyd_node
      **op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:420,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:421,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:422,1
    - Dst: lyd_parse
      Src: /src/libyang/src/tree_data.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - ext
    - parent
    - in
    - format
    - parse_options
    - validate_options
    - tree
    argTypes:
    - struct lysc_ext_instance*
    - struct lyd_node*
    - struct ly_in*
    - LYD_FORMAT
    - uint32_t
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 425
    functionName: lyd_parse_ext_data
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - lyd_parse
    linkageType: ''
    returnType: API
    signature: "API lyd_parse_ext_data(const struct lysc_ext_instance *ext, struct
      lyd_node *parent, struct ly_in *in, LYD_FORMAT format,\n        uint32_t parse_options,
      uint32_t validate_options, struct lyd_node **tree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:431,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:432,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:433,1
    - Dst: lyd_parse
      Src: /src/libyang/src/tree_data.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - ctx
    - parent
    - in
    - format
    - parse_options
    - validate_options
    - tree
    argTypes:
    - struct ly_ctx*
    - struct lyd_node*
    - struct ly_in*
    - LYD_FORMAT
    - uint32_t
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 436
    functionName: lyd_parse_data
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - lyd_parse
    linkageType: ''
    returnType: API
    signature: "API lyd_parse_data(const struct ly_ctx *ctx, struct lyd_node *parent,
      struct ly_in *in, LYD_FORMAT format,\n        uint32_t parse_options, uint32_t
      validate_options, struct lyd_node **tree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:445,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/src/tree_data.c:445,1
    - Dst: lyd_parse_data
      Src: /src/libyang/src/tree_data.c:446,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_data.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - ctx
    - data
    - format
    - parse_options
    - validate_options
    - tree
    argTypes:
    - struct ly_ctx*
    - char*
    - LYD_FORMAT
    - uint32_t
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 438
    functionDepth: 3
    functionLinenumber: 438
    functionLinenumberEnd: 450
    functionName: lyd_parse_data_mem
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 16
    functionsReached:
    - LY_CHECK_RET
    - ly_in_free
    - lyd_parse_data
    - ly_in_new_memory
    linkageType: ''
    returnType: API
    signature: "API lyd_parse_data_mem(const struct ly_ctx *ctx, const char *data,
      LYD_FORMAT format, uint32_t parse_options,\n        uint32_t validate_options,
      struct lyd_node **tree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:459,1
    - Dst: ly_in_new_fd
      Src: /src/libyang/src/tree_data.c:459,1
    - Dst: lyd_parse_data
      Src: /src/libyang/src/tree_data.c:460,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_data.c:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - ctx
    - fd
    - format
    - parse_options
    - validate_options
    - tree
    argTypes:
    - struct ly_ctx*
    - int
    - LYD_FORMAT
    - uint32_t
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 452
    functionDepth: 3
    functionLinenumber: 452
    functionLinenumberEnd: 464
    functionName: lyd_parse_data_fd
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_in_free
    - ly_in_new_fd
    - lyd_parse_data
    linkageType: ''
    returnType: API
    signature: "API lyd_parse_data_fd(const struct ly_ctx *ctx, int fd, LYD_FORMAT
      format, uint32_t parse_options, uint32_t validate_options,\n        struct lyd_node
      **tree)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:473,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/src/tree_data.c:473,1
    - Dst: lyd_parse_data
      Src: /src/libyang/src/tree_data.c:474,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_data.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - ctx
    - path
    - format
    - parse_options
    - validate_options
    - tree
    argTypes:
    - struct ly_ctx*
    - char*
    - LYD_FORMAT
    - uint32_t
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 478
    functionName: lyd_parse_data_path
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_RET
    - ly_in_new_filepath
    - ly_in_free
    - lyd_parse_data
    linkageType: ''
    returnType: API
    signature: "API lyd_parse_data_path(const struct ly_ctx *ctx, const char *path,
      LYD_FORMAT format, uint32_t parse_options,\n        uint32_t validate_options,
      struct lyd_node **tree)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:531,1
    - Dst: lyd_parse_get_format
      Src: /src/libyang/src/tree_data.c:540,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:547,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:549,1
    - Dst: lyd_parse_xml
      Src: /src/libyang/src/tree_data.c:558,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_data.c:564,1
    - Dst: lyd_parse_json
      Src: /src/libyang/src/tree_data.c:569,1
    - Dst: lyd_parse_lyb
      Src: /src/libyang/src/tree_data.c:572,1
    - Dst: LOGARG
      Src: /src/libyang/src/tree_data.c:575,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:579,1
    - Dst: struct lyd_ctx*::free
      Src: /src/libyang/src/tree_data.c:596,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:602,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/tree_data.c:606,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_data.c:615,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 75
    argCount: 8
    argNames:
    - ctx
    - ext
    - parent
    - in
    - format
    - data_type
    - tree
    - op
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    - struct lyd_node*
    - struct ly_in*
    - LYD_FORMAT
    - enum lyd_type
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 617
    functionName: lyd_parse_op_
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_parse_lyb
    - lyd_free_all
    - LOGARG
    - struct lyd_ctx*::free
    - lyd_free_tree
    - LY_CHECK_ARG_RET
    - lyd_parse_json
    - lyd_parse_xml
    - LY_CHECK_GOTO
    - lyd_parse_get_format
    - ly_set_erase
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parse_op_(const struct ly_ctx *ctx, const struct lysc_ext_instance
      *ext, struct lyd_node *parent,\n        struct ly_in *in, LYD_FORMAT format,
      enum lyd_type data_type, struct lyd_node **tree, struct lyd_node **op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:623,1
    - Dst: lyd_parse_op_
      Src: /src/libyang/src/tree_data.c:625,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 7
    argNames:
    - ctx
    - parent
    - in
    - format
    - data_type
    - tree
    - op
    argTypes:
    - struct ly_ctx*
    - struct lyd_node*
    - struct ly_in*
    - LYD_FORMAT
    - enum lyd_type
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 626
    functionName: lyd_parse_op
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 14
    functionsReached:
    - LY_CHECK_ARG_RET
    - lyd_parse_op_
    linkageType: ''
    returnType: API
    signature: "API lyd_parse_op(const struct ly_ctx *ctx, struct lyd_node *parent,
      struct ly_in *in, LYD_FORMAT format,\n        enum lyd_type data_type, struct
      lyd_node **tree, struct lyd_node **op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:634,1
    - Dst: lyd_parse_op_
      Src: /src/libyang/src/tree_data.c:636,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 7
    argNames:
    - ext
    - parent
    - in
    - format
    - data_type
    - tree
    - op
    argTypes:
    - struct lysc_ext_instance*
    - struct lyd_node*
    - struct ly_in*
    - LYD_FORMAT
    - enum lyd_type
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 637
    functionName: lyd_parse_ext_op
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - lyd_parse_op_
    linkageType: ''
    returnType: API
    signature: "API lyd_parse_ext_op(const struct lysc_ext_instance *ext, struct lyd_node
      *parent, struct ly_in *in, LYD_FORMAT format,\n        enum lyd_type data_type,
      struct lyd_node **tree, struct lyd_node **op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:646,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:648,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:649,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:649,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:655,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/tree_data.c:656,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:658,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:659,1
    - Dst: free
      Src: /src/libyang/src/tree_data.c:659,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 9
    argNames:
    - schema
    - value
    - value_len
    - dynamic
    - format
    - prefix_data
    - hints
    - incomplete
    - node
    argTypes:
    - struct lysc_node*
    - char*
    - size_t
    - ly_bool*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - ly_bool*
    - struct lyd_node**
    assertStmts:
    - condition: (schema->nodetype & LYD_NODE_TERM)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 664
      start: 639
    functionDepth: 2
    functionLinenumber: 639
    functionLinenumberEnd: 664
    functionName: lyd_create_term
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    - LOG_LOCBACK
    - LY_CHECK_ERR_RET
    - lyd_value_store
    - free
    - lyd_hash
    - LOG_LOCSET
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_create_term(const struct lysc_node *schema, const char
      *value, size_t value_len, ly_bool *dynamic,\n        LY_VALUE_FORMAT format,
      void *prefix_data, uint32_t hints, ly_bool *incomplete, struct lyd_node **node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:673,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:674,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:676,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:677,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:677,1
    - Dst: struct lysc_type*::plugin::duplicate
      Src: /src/libyang/src/tree_data.c:684,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:686,1
    - Dst: free
      Src: /src/libyang/src/tree_data.c:687,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - schema
    - val
    - node
    argTypes:
    - struct lysc_node*
    - struct lyd_value*
    - struct lyd_node**
    assertStmts:
    - condition: (schema->nodetype & LYD_NODE_TERM)
      pos:
        line_end: 672
        line_start: 672
        source_file: /src/libyang/src/tree_data.c
    - condition: (val && val->realtype)
      pos:
        line_end: 673
        line_start: 673
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 694
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 694
    functionName: lyd_create_term2
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    - struct lysc_type*::plugin::duplicate
    - LY_CHECK_ERR_RET
    - LOGERR
    - free
    - lyd_hash
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_create_term2(const struct lysc_node *schema, const struct
      lyd_value *val, struct lyd_node **node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:701,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:703,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:704,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:704,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:715,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - schema
    - node
    argTypes:
    - struct lysc_node*
    - struct lyd_node**
    assertStmts:
    - condition: (schema->nodetype & LYD_NODE_INNER)
      pos:
        line_end: 700
        line_start: 700
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 720
      start: 696
    functionDepth: 1
    functionLinenumber: 696
    functionLinenumberEnd: 720
    functionName: lyd_create_inner
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    - LY_CHECK_ERR_RET
    - lyd_hash
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_create_inner(const struct lysc_node *schema, struct lyd_node
      **node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:729,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:732,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:732,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:734,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:738,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/tree_data.c:738,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:739,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:743,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:750,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:751,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - schema
    - predicates
    - node
    argTypes:
    - struct lysc_node*
    - struct ly_path_predicate*
    - struct lyd_node**
    assertStmts:
    - condition: ((schema->nodetype == LYS_LIST) && !(schema->flags & LYS_KEYLESS))
      pos:
        line_end: 728
        line_start: 728
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 753
      start: 722
    functionDepth: 2
    functionLinenumber: 722
    functionLinenumberEnd: 753
    functionName: lyd_create_list
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - lyd_free_tree
    - lyd_create_term2
    - lyd_hash
    - LOG_LOCSET
    - lyd_create_inner
    - LY_CHECK_GOTO
    - lyd_insert_node
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_create_list(const struct lysc_node *schema, const struct
      ly_path_predicate *predicates, struct lyd_node **node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:738,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/tree_data.c:738,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 737
    functionDepth: 2
    functionLinenumber: 737
    functionLinenumberEnd: 740
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 4
    functionsReached:
    - lyd_insert_node
    - lyd_create_term2
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(predicates, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:764,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:767,1
    - Dst: ly_path_parse_predicate
      Src: /src/libyang/src/tree_data.c:767,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:771,1
    - Dst: ly_path_compile_predicate
      Src: /src/libyang/src/tree_data.c:771,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:775,1
    - Dst: lyd_create_list
      Src: /src/libyang/src/tree_data.c:775,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:778,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_data.c:779,1
    - Dst: ly_path_predicates_free
      Src: /src/libyang/src/tree_data.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 4
    argNames:
    - schema
    - keys
    - keys_len
    - node
    argTypes:
    - struct lysc_node*
    - char*
    - size_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 755
    functionDepth: 3
    functionLinenumber: 755
    functionLinenumberEnd: 782
    functionName: lyd_create_list2
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyxp_expr_free
    - LOG_LOCBACK
    - ly_path_predicates_free
    - ly_path_parse_predicate
    - lyd_create_list
    - LOG_LOCSET
    - LY_CHECK_GOTO
    - ly_path_compile_predicate
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_create_list2(const struct lysc_node *schema, const char
      *keys, size_t keys_len, struct lyd_node **node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:792,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:794,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:795,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:795,1
    - Dst: lyd_any_copy_value
      Src: /src/libyang/src/tree_data.c:808,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:809,1
    - Dst: free
      Src: /src/libyang/src/tree_data.c:809,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:811,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 5
    argNames:
    - schema
    - value
    - value_type
    - use_value
    - node
    argTypes:
    - struct lysc_node*
    - void*
    - LYD_ANYDATA_VALUETYPE
    - ly_bool
    - struct lyd_node**
    assertStmts:
    - condition: (schema->nodetype & LYD_NODE_ANY)
      pos:
        line_end: 791
        line_start: 791
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 815
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 815
    functionName: lyd_create_any
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    - LY_CHECK_ERR_RET
    - free
    - lyd_hash
    - lyd_any_copy_value
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_create_any(const struct lysc_node *schema, const void *value,
      LYD_ANYDATA_VALUETYPE value_type, ly_bool use_value,\n        struct lyd_node
      **node)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:825,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:831,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:832,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:832,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:835,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:835,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:838,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:838,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:841,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:841,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:844,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/tree_data.c:844,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:847,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:847,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:857,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_data.c:858,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 14
    argNames:
    - ctx
    - name
    - name_len
    - prefix
    - pref_len
    - module_key
    - module_key_len
    - value
    - value_len
    - dynamic
    - format
    - val_prefix_data
    - hints
    - node
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - ly_bool*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lyd_node**
    assertStmts:
    - condition: (ctx && name && name_len && format)
      pos:
        line_end: 824
        line_start: 824
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 863
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 863
    functionName: lyd_create_opaq
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    - LY_CHECK_ERR_GOTO
    - ly_free_prefix_data
    - lyd_free_tree
    - lydict_insert_zc
    - lydict_insert
    - LY_CHECK_GOTO
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_create_opaq(const struct ly_ctx *ctx, const char *name,
      size_t name_len, const char *prefix, size_t pref_len,\n        const char *module_key,
      size_t module_key_len, const char *value, size_t value_len, ly_bool *dynamic,\n
      \       LY_VALUE_FORMAT format, void *val_prefix_data, uint32_t hints, struct
      lyd_node **node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:873,1
    - Dst: lys_find_child
      Src: /src/libyang/src/tree_data.c:879,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:881,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:881,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:883,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:883,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:885,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - parent
    - module
    - name
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 865
    functionDepth: 2
    functionLinenumber: 865
    functionLinenumberEnd: 892
    functionName: lyd_new_inner
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_ERR_RET
    - LOGERR
    - LY_CHECK_ARG_RET
    - lys_find_child
    - LY_CHECK_RET
    - lyd_create_inner
    - lyd_insert_node
    linkageType: ''
    returnType: API
    signature: "API lyd_new_inner(struct lyd_node *parent, const struct lys_module
      *module, const char *name, ly_bool output,\n        struct lyd_node **node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:901,1
    - Dst: lysc_ext_find_node
      Src: /src/libyang/src/tree_data.c:903,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:906,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:909,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:914,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:914,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - ext
    - name
    - node
    argTypes:
    - struct lysc_ext_instance*
    - char*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 894
    functionDepth: 2
    functionLinenumber: 894
    functionLinenumberEnd: 919
    functionName: lyd_new_ext_inner
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lysc_ext_find_node
    - LY_CHECK_ARG_RET
    - LOGERR
    - LY_CHECK_RET
    - lyd_create_inner
    linkageType: ''
    returnType: API
    signature: API lyd_new_ext_inner(const struct lysc_ext_instance *ext, const char
      *name, struct lyd_node **node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:932,1
    - Dst: lys_find_child
      Src: /src/libyang/src/tree_data.c:938,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:939,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:939,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:942,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:942,1
    - Dst: va_start
      Src: /src/libyang/src/tree_data.c:944,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_data.c:947,1
    - Dst: va_arg
      Src: /src/libyang/src/tree_data.c:948,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/tree_data.c:950,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:950,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:952,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:953,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:957,1
    - Dst: va_end
      Src: /src/libyang/src/tree_data.c:961,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:963,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 5
    argNames:
    - parent
    - module
    - name
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 921
    functionDepth: 3
    functionLinenumber: 921
    functionLinenumberEnd: 969
    functionName: lyd_new_list
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - strlen
    - va_arg
    - LY_CHECK_ERR_RET
    - lyd_create_term
    - lyd_free_tree
    - LOGERR
    - LY_CHECK_ARG_RET
    - lys_find_child
    - LY_CHECK_RET
    - va_start
    - va_end
    - lyd_create_inner
    - lysc_node_child
    - LY_CHECK_GOTO
    - lyd_insert_node
    linkageType: ''
    returnType: API
    signature: "API lyd_new_list(struct lyd_node *parent, const struct lys_module
      *module, const char *name, ly_bool output,\n        struct lyd_node **node,
      ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:981,1
    - Dst: lysc_ext_find_node
      Src: /src/libyang/src/tree_data.c:983,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:986,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:989,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:994,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:994,1
    - Dst: va_start
      Src: /src/libyang/src/tree_data.c:996,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_data.c:999,1
    - Dst: va_arg
      Src: /src/libyang/src/tree_data.c:1000,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/tree_data.c:1002,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1002,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1004,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1005,1
    - Dst: va_end
      Src: /src/libyang/src/tree_data.c:1009,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:1011,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - ext
    - name
    - node
    argTypes:
    - struct lysc_ext_instance*
    - char*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 971
    functionDepth: 3
    functionLinenumber: 971
    functionLinenumberEnd: 1016
    functionName: lyd_new_ext_list
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - va_arg
    - lysc_ext_find_node
    - lyd_create_term
    - lyd_free_tree
    - LY_CHECK_ARG_RET
    - LOGERR
    - LY_CHECK_RET
    - va_start
    - va_end
    - lyd_create_inner
    - lysc_node_child
    - LY_CHECK_GOTO
    - lyd_insert_node
    linkageType: ''
    returnType: API
    signature: API lyd_new_ext_list(const struct lysc_ext_instance *ext, const char
      *name, struct lyd_node **node, ...)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1026,1
    - Dst: lys_find_child
      Src: /src/libyang/src/tree_data.c:1036,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:1037,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1037,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1041,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:1041,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1044,1
    - Dst: lyd_create_list2
      Src: /src/libyang/src/tree_data.c:1044,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1044,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1047,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 6
    argNames:
    - parent
    - module
    - name
    - keys
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - char*
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1018
    functionDepth: 4
    functionLinenumber: 1018
    functionLinenumberEnd: 1054
    functionName: lyd_new_list2
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - LOGERR
    - LY_CHECK_ARG_RET
    - lys_find_child
    - LY_CHECK_RET
    - lyd_create_inner
    - lyd_insert_node
    - lyd_create_list2
    linkageType: ''
    returnType: API
    signature: "API lyd_new_list2(struct lyd_node *parent, const struct lys_module
      *module, const char *name, const char *keys,\n        ly_bool output, struct
      lyd_node **node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1077,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1079,1
    - Dst: lys_find_child
      Src: /src/libyang/src/tree_data.c:1085,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:1086,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1086,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/tree_data.c:1088,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1089,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1091,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 8
    argNames:
    - parent
    - module
    - name
    - value
    - value_len
    - format
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - void*
    - size_t
    - LY_VALUE_FORMAT
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1070
    functionDepth: 3
    functionLinenumber: 1070
    functionLinenumberEnd: 1098
    functionName: _lyd_new_term
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - lyd_create_term
    - LOGERR
    - lys_find_child
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - lyd_insert_node
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR _lyd_new_term(struct lyd_node *parent, const struct lys_module
      *module, const char *name, const void *value,\n        size_t value_len, LY_VALUE_FORMAT
      format, ly_bool output, struct lyd_node **node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _lyd_new_term
      Src: /src/libyang/src/tree_data.c:1104,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - parent
    - module
    - name
    - val_str
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - char*
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1100
    functionDepth: 4
    functionLinenumber: 1100
    functionLinenumberEnd: 1105
    functionName: lyd_new_term
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 3
    functionsReached:
    - strlen
    - _lyd_new_term
    linkageType: ''
    returnType: API
    signature: "API lyd_new_term(struct lyd_node *parent, const struct lys_module
      *module, const char *name, const char *val_str,\n        ly_bool output, struct
      lyd_node **node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _lyd_new_term
      Src: /src/libyang/src/tree_data.c:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - parent
    - module
    - name
    - value
    - value_len
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - void*
    - size_t
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1107
    functionDepth: 4
    functionLinenumber: 1107
    functionLinenumberEnd: 1112
    functionName: lyd_new_term_bin
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - _lyd_new_term
    linkageType: ''
    returnType: API
    signature: "API lyd_new_term_bin(struct lyd_node *parent, const struct lys_module
      *module, const char *name, const void *value,\n        size_t value_len, ly_bool
      output, struct lyd_node **node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _lyd_new_term
      Src: /src/libyang/src/tree_data.c:1118,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - parent
    - module
    - name
    - val_str
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - char*
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1114
    functionDepth: 4
    functionLinenumber: 1114
    functionLinenumberEnd: 1119
    functionName: lyd_new_term_canon
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - _lyd_new_term
    linkageType: ''
    returnType: API
    signature: "API lyd_new_term_canon(struct lyd_node *parent, const struct lys_module
      *module, const char *name, const char *val_str,\n        ly_bool output, struct
      lyd_node **node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1129,1
    - Dst: lysc_ext_find_node
      Src: /src/libyang/src/tree_data.c:1131,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1134,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1137,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/tree_data.c:1141,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1141,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - ext
    - name
    - val_str
    - node
    argTypes:
    - struct lysc_ext_instance*
    - char*
    - char*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1121
    functionDepth: 3
    functionLinenumber: 1121
    functionLinenumberEnd: 1147
    functionName: lyd_new_ext_term
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysc_ext_find_node
    - lyd_create_term
    - LY_CHECK_ARG_RET
    - LOGERR
    - LY_CHECK_RET
    linkageType: ''
    returnType: API
    signature: API lyd_new_ext_term(const struct lysc_ext_instance *ext, const char
      *name, const char *val_str, struct lyd_node **node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1157,1
    - Dst: lys_find_child
      Src: /src/libyang/src/tree_data.c:1163,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:1164,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1164,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1166,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/tree_data.c:1166,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1168,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 8
    argNames:
    - parent
    - module
    - name
    - value
    - use_value
    - value_type
    - output
    - node
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - void*
    - ly_bool
    - LYD_ANYDATA_VALUETYPE
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1149
    functionDepth: 2
    functionLinenumber: 1149
    functionLinenumberEnd: 1175
    functionName: lyd_new_any
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_RET
    - LOGERR
    - LY_CHECK_ARG_RET
    - lys_find_child
    - lyd_create_any
    - LY_CHECK_RET
    - lyd_insert_node
    linkageType: ''
    returnType: API
    signature: "API lyd_new_any(struct lyd_node *parent, const struct lys_module *module,
      const char *name, const void *value,\n        ly_bool use_value, LYD_ANYDATA_VALUETYPE
      value_type, ly_bool output, struct lyd_node **node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1185,1
    - Dst: lysc_ext_find_node
      Src: /src/libyang/src/tree_data.c:1187,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1190,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1193,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1197,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/tree_data.c:1197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 6
    argNames:
    - ext
    - name
    - value
    - use_value
    - value_type
    - node
    argTypes:
    - struct lysc_ext_instance*
    - char*
    - void*
    - ly_bool
    - LYD_ANYDATA_VALUETYPE
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1177
    functionDepth: 2
    functionLinenumber: 1177
    functionLinenumberEnd: 1202
    functionName: lyd_new_ext_any
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lysc_ext_find_node
    - LY_CHECK_ARG_RET
    - LOGERR
    - lyd_create_any
    - LY_CHECK_RET
    linkageType: ''
    returnType: API
    signature: "API lyd_new_ext_any(const struct lysc_ext_instance *ext, const char
      *name, const void *value, ly_bool use_value,\n        LYD_ANYDATA_VALUETYPE
      value_type, struct lyd_node **node)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1211,1
    - Dst: strchr
      Src: /src/libyang/src/tree_data.c:1211,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1213,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1217,1
    - Dst: LYD_NAME
      Src: /src/libyang/src/tree_data.c:1217,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/tree_data.c:1226,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1227,1
    - Dst: ly_ctx_get_module_implemented2
      Src: /src/libyang/src/tree_data.c:1233,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:1234,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1234,1
    - Dst: lyd_create_meta
      Src: /src/libyang/src/tree_data.c:1242,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1242,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 7
    argNames:
    - ctx
    - parent
    - module
    - name
    - val_str
    - clear_dflt
    - meta
    argTypes:
    - struct ly_ctx*
    - struct lyd_node*
    - struct lys_module*
    - char*
    - char*
    - ly_bool
    - struct lyd_meta**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1244
    functionName: lyd_new_meta
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_parse_nodeid
    - LY_CHECK_ERR_RET
    - LOGERR
    - LY_CHECK_ARG_RET
    - lyd_create_meta
    - ly_ctx_get_module_implemented2
    - strchr
    - LYD_CTX
    - LYD_NAME
    linkageType: ''
    returnType: API
    signature: "API lyd_new_meta(const struct ly_ctx *ctx, struct lyd_node *parent,
      const struct lys_module *module, const char *name,\n        const char *val_str,
      ly_bool clear_dflt, struct lyd_meta **meta)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1252,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1255,1
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/src/tree_data.c:1264,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1266,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/tree_data.c:1271,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1273,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/tree_data.c:1278,1
    - Dst: lyd_create_meta
      Src: /src/libyang/src/tree_data.c:1281,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1281,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1281,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 5
    argNames:
    - ctx
    - parent
    - clear_dflt
    - attr
    - meta
    argTypes:
    - struct ly_ctx*
    - struct lyd_node*
    - ly_bool
    - struct lyd_attr*
    - struct lyd_meta**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1246
    functionDepth: 1
    functionLinenumber: 1246
    functionLinenumberEnd: 1283
    functionName: lyd_new_meta2
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - LOGINT_RET
    - ly_ctx_get_module_implemented_ns
    - LY_CHECK_ARG_RET
    - LOGERR
    - lyd_create_meta
    - ly_ctx_get_module_implemented
    linkageType: ''
    returnType: API
    signature: "API lyd_new_meta2(const struct ly_ctx *ctx, struct lyd_node *parent,
      ly_bool clear_dflt, const struct lyd_attr *attr,\n        struct lyd_meta **meta)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1291,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:1291,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1294,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1300,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/tree_data.c:1300,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1300,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1300,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1301,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1301,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1303,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 7
    argNames:
    - parent
    - ctx
    - name
    - value
    - prefix
    - module_name
    - node
    argTypes:
    - struct lyd_node*
    - struct ly_ctx*
    - char*
    - char*
    - char*
    - char*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1285
    functionDepth: 2
    functionLinenumber: 1285
    functionLinenumberEnd: 1310
    functionName: lyd_new_opaq
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - strlen
    - LY_CHECK_ARG_RET
    - strcmp
    - LY_CHECK_RET
    - lyd_create_opaq
    - lyd_insert_node
    - LYD_CTX
    linkageType: ''
    returnType: API
    signature: "API lyd_new_opaq(struct lyd_node *parent, const struct ly_ctx *ctx,
      const char *name, const char *value,\n        const char *prefix, const char
      *module_name, struct lyd_node **node)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1318,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1321,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1327,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/tree_data.c:1327,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1327,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1327,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1328,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1328,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1330,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 7
    argNames:
    - parent
    - ctx
    - name
    - value
    - prefix
    - module_ns
    - node
    argTypes:
    - struct lyd_node*
    - struct ly_ctx*
    - char*
    - char*
    - char*
    - char*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1312
    functionDepth: 2
    functionLinenumber: 1312
    functionLinenumberEnd: 1337
    functionName: lyd_new_opaq2
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - lyd_create_opaq
    - lyd_insert_node
    - LYD_CTX
    linkageType: ''
    returnType: API
    signature: "API lyd_new_opaq2(struct lyd_node *parent, const struct ly_ctx *ctx,
      const char *name, const char *value,\n        const char *prefix, const char
      *module_ns, struct lyd_node **node)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1348,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1350,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/tree_data.c:1354,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1355,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1361,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1372,1
    - Dst: lyd_create_attr
      Src: /src/libyang/src/tree_data.c:1372,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1373,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 5
    argNames:
    - parent
    - module_name
    - name
    - value
    - attr
    argTypes:
    - struct lyd_node*
    - char*
    - char*
    - char*
    - struct lyd_attr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1339
    functionDepth: 1
    functionLinenumber: 1339
    functionLinenumberEnd: 1379
    functionName: lyd_new_attr
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_parse_nodeid
    - LOGERR
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - LYD_CTX
    - lyd_create_attr
    linkageType: ''
    returnType: API
    signature: "API lyd_new_attr(struct lyd_node *parent, const char *module_name,
      const char *name, const char *value,\n        struct lyd_attr **attr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1390,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1392,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/tree_data.c:1396,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:1397,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1406,1
    - Dst: lyd_create_attr
      Src: /src/libyang/src/tree_data.c:1406,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1407,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - parent
    - module_ns
    - name
    - value
    - attr
    argTypes:
    - struct lyd_node*
    - char*
    - char*
    - char*
    - struct lyd_attr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1413
    functionName: lyd_new_attr2
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_parse_nodeid
    - LOGERR
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - LYD_CTX
    - lyd_create_attr
    linkageType: ''
    returnType: API
    signature: "API lyd_new_attr2(struct lyd_node *parent, const char *module_ns,
      const char *name, const char *value,\n        struct lyd_attr **attr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1440,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:1446,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/tree_data.c:1447,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1447,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:1448,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1449,1
    - Dst: struct lysc_type*::plugin::compare
      Src: /src/libyang/src/tree_data.c:1452,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/tree_data.c:1454,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1454,1
    - Dst: memset
      Src: /src/libyang/src/tree_data.c:1456,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:1464,1
    - Dst: lyd_unlink_hash
      Src: /src/libyang/src/tree_data.c:1480,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:1481,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1482,1
    - Dst: lyd_insert_hash
      Src: /src/libyang/src/tree_data.c:1482,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1485,1
    - Dst: lyd_unlink_hash
      Src: /src/libyang/src/tree_data.c:1486,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:1486,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:1487,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:1487,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1488,1
    - Dst: lyd_insert_hash
      Src: /src/libyang/src/tree_data.c:1488,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:1488,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/tree_data.c:1505,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1505,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 4
    argNames:
    - term
    - value
    - value_len
    - format
    argTypes:
    - struct lyd_node*
    - void*
    - size_t
    - LY_VALUE_FORMAT
    assertStmts:
    - condition: (term->parent->schema->nodetype == LYS_LIST)
      pos:
        line_end: 1484
        line_start: 1484
        source_file: /src/libyang/src/tree_data.c
    - condition: (term && term->schema && (term->schema->nodetype & LYD_NODE_TERM))
      pos:
        line_end: 1439
        line_start: 1439
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 1508
      start: 1430
    functionDepth: 2
    functionLinenumber: 1430
    functionLinenumberEnd: 1508
    functionName: _lyd_change_term
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - struct lysc_type*::plugin::compare
    - LOG_LOCBACK
    - lyd_parent
    - struct lysc_type*::plugin::free
    - memset
    - lyd_value_store
    - lyd_hash
    - LOG_LOCSET
    - lyd_unlink_hash
    - LY_CHECK_GOTO
    - lyd_insert_hash
    - LYD_CTX
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR _lyd_change_term(struct lyd_node *term, const void *value, size_t
      value_len, LY_VALUE_FORMAT format)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1513,1
    - Dst: _lyd_change_term
      Src: /src/libyang/src/tree_data.c:1515,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - term
    - val_str
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1516
      start: 1510
    functionDepth: 3
    functionLinenumber: 1510
    functionLinenumberEnd: 1516
    functionName: lyd_change_term
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - _lyd_change_term
    - LY_CHECK_ARG_RET
    - strlen
    linkageType: ''
    returnType: API
    signature: API lyd_change_term(struct lyd_node *term, const char *val_str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1521,1
    - Dst: _lyd_change_term
      Src: /src/libyang/src/tree_data.c:1523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - term
    - value
    - value_len
    argTypes:
    - struct lyd_node*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1518
    functionDepth: 3
    functionLinenumber: 1518
    functionLinenumberEnd: 1524
    functionName: lyd_change_term_bin
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - _lyd_change_term
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API lyd_change_term_bin(struct lyd_node *term, const void *value, size_t
      value_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1529,1
    - Dst: _lyd_change_term
      Src: /src/libyang/src/tree_data.c:1531,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - term
    - val_str
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1526
    functionDepth: 3
    functionLinenumber: 1526
    functionLinenumberEnd: 1532
    functionName: lyd_change_term_canon
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - _lyd_change_term
    - LY_CHECK_ARG_RET
    - strlen
    linkageType: ''
    returnType: API
    signature: API lyd_change_term_canon(struct lyd_node *term, const char *val_str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1542,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1549,1
    - Dst: lyd_create_meta
      Src: /src/libyang/src/tree_data.c:1549,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1549,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1550,1
    - Dst: lyd_compare_meta
      Src: /src/libyang/src/tree_data.c:1553,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/tree_data.c:1570,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - meta
    - val_str
    argTypes:
    - struct lyd_meta*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1572
    functionName: lyd_change_meta
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ARG_RET
    - lyd_create_meta
    - LY_CHECK_GOTO
    - lyd_compare_meta
    - lyd_free_meta_single
    linkageType: ''
    returnType: API
    signature: API lyd_change_meta(struct lyd_meta *meta, const char *val_str)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/tree_data.c:1604,1
    - Dst: _lyd_change_term
      Src: /src/libyang/src/tree_data.c:1612,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1628,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/tree_data.c:1628,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:1631,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:1645,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data.c:1648,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1648,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 7
    argNames:
    - node
    - value
    - value_len
    - value_type
    - format
    - new_parent
    - new_node
    argTypes:
    - struct lyd_node*
    - void*
    - size_t
    - LYD_ANYDATA_VALUETYPE
    - LY_VALUE_FORMAT
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1586
    functionDepth: 3
    functionLinenumber: 1586
    functionLinenumberEnd: 1654
    functionName: lyd_new_path_update
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - _lyd_change_term
    - lyd_free_tree
    - LOGINT
    - lyd_create_any
    - lysc_is_dup_inst_list
    - LY_CHECK_RET
    - lyd_compare_single
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_new_path_update(struct lyd_node *node, const void *value,
      size_t value_len, LYD_ANYDATA_VALUETYPE value_type,\n        LY_VALUE_FORMAT
      format, struct lyd_node **new_parent, struct lyd_node **new_node)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1666,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/tree_data.c:1672,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:1678,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:1679,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/tree_data.c:1680,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:1681,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1685,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:1686,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:1687,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/tree_data.c:1688,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:1689,1
    - Dst: lyd_value_validate
      Src: /src/libyang/src/tree_data.c:1695,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_data.c:1700,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1702,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/tree_data.c:1702,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1712,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/tree_data.c:1713,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 6
    argNames:
    - path
    - str_path
    - value
    - value_len
    - format
    - options
    argTypes:
    - struct ly_path*
    - char*
    - char*
    - size_t
    - LY_VALUE_FORMAT
    - uint32_t
    assertStmts:
    - condition: (path)
      pos:
        line_end: 1665
        line_start: 1665
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 1718
      start: 1656
    functionDepth: 2
    functionLinenumber: 1656
    functionLinenumberEnd: 1718
    functionName: lyd_new_path_check_find_lypath
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - lys_nodetype2str
    - LY_ARRAY_COUNT
    - LY_ARRAY_DECREMENT
    - lyd_value_validate
    - lyd_value_store
    - lysc_is_dup_inst_list
    - LY_CHECK_RET
    - LOGVAL
    - LOG_LOCSET
    - LY_ARRAY_NEW_RET
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_new_path_check_find_lypath(struct ly_path *path, const
      char *str_path, const char *value, size_t value_len,\n        LY_VALUE_FORMAT
      format, uint32_t options)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/tree_data.c:1672,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:1678,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:1679,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/tree_data.c:1680,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:1681,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1685,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:1686,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:1687,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/tree_data.c:1688,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:1689,1
    - Dst: lyd_value_validate
      Src: /src/libyang/src/tree_data.c:1695,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_data.c:1700,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:1702,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/tree_data.c:1702,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1669
    functionDepth: 2
    functionLinenumber: 1669
    functionLinenumberEnd: 1708
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 4
    functionsReached:
    - LOG_LOCBACK
    - lys_nodetype2str
    - LY_ARRAY_COUNT
    - lyd_value_validate
    - lyd_value_store
    - lysc_is_dup_inst_list
    - LY_CHECK_RET
    - LOGVAL
    - LOG_LOCSET
    - LY_ARRAY_NEW_RET
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(path, u)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1762,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1763,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1764,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:1767,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1770,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1781,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/tree_data.c:1781,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1781,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1785,1
    - Dst: ly_path_compile
      Src: /src/libyang/src/tree_data.c:1785,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1790,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1791,1
    - Dst: lyd_new_path_check_find_lypath
      Src: /src/libyang/src/tree_data.c:1791,1
    - Dst: ly_path_eval_partial
      Src: /src/libyang/src/tree_data.c:1795,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1797,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:1800,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:1801,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:1802,1
    - Dst: lyd_new_path_update
      Src: /src/libyang/src/tree_data.c:1808,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:1816,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1826,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/tree_data.c:1827,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1831,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/tree_data.c:1837,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1839,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:1839,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1842,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/tree_data.c:1842,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1842,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1843,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1847,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1848,1
    - Dst: lyd_create_list
      Src: /src/libyang/src/tree_data.c:1848,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1855,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:1855,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/tree_data.c:1861,1
    - Dst: lyd_value_validate
      Src: /src/libyang/src/tree_data.c:1863,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1867,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/tree_data.c:1867,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1867,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1868,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1881,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/tree_data.c:1881,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1883,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/tree_data.c:1883,1
    - Dst: lysc_is_key
      Src: /src/libyang/src/tree_data.c:1888,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1890,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:1891,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:1892,1
    - Dst: lyd_value_validate
      Src: /src/libyang/src/tree_data.c:1898,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1901,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/tree_data.c:1901,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1901,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:1902,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1909,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/tree_data.c:1909,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:1914,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/tree_data.c:1914,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data.c:1917,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1924,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:1927,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_data.c:1939,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data.c:1941,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/tree_data.c:1942,1
    - Dst: ly_path_free
      Src: /src/libyang/src/tree_data.c:1945,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:1955,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 155
    argCount: 10
    argNames:
    - parent
    - ctx
    - ext
    - path
    - value
    - value_len
    - value_type
    - options
    - new_parent
    - new_node
    argTypes:
    - struct lyd_node*
    - struct ly_ctx*
    - struct lysc_ext_instance*
    - char*
    - void*
    - size_t
    - LYD_ANYDATA_VALUETYPE
    - uint32_t
    - struct lyd_node**
    - struct lyd_node**
    assertStmts:
    - condition: (!(options & LYD_NEW_PATH_BIN_VALUE) || !(options & LYD_NEW_PATH_CANON_VALUE))
      pos:
        line_end: 1763
        line_start: 1763
        source_file: /src/libyang/src/tree_data.c
    - condition: (cur_parent)
      pos:
        line_end: 1889
        line_start: 1889
        source_file: /src/libyang/src/tree_data.c
    - condition: (node && (node->schema == schema))
      pos:
        line_end: 1891
        line_start: 1891
        source_file: /src/libyang/src/tree_data.c
    - condition: (path && ((path[0] == '/') || parent))
      pos:
        line_end: 1762
        line_start: 1762
        source_file: /src/libyang/src/tree_data.c
    - condition: (p[path_idx].pred_type == LY_PATH_PREDTYPE_LIST)
      pos:
        line_end: 1846
        line_start: 1846
        source_file: /src/libyang/src/tree_data.c
    - condition: (parent || ctx)
      pos:
        line_end: 1761
        line_start: 1761
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 1958
      start: 1748
    functionDepth: 4
    functionLinenumber: 1748
    functionLinenumberEnd: 1958
    functionName: lyd_new_path_
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_path_compile
    - LY_CHECK_GOTO
    - lysc_is_key
    - LY_ARRAY_COUNT
    - lyd_create_any
    - lyd_create_list
    - ly_path_parse
    - lysc_is_dup_inst_list
    - lyd_create_opaq
    - lyd_create_term2
    - ly_path_free
    - lyd_insert_node
    - LY_ARRAY_INCREMENT
    - lyd_new_path_check_find_lypath
    - assert
    - lyxp_expr_free
    - LOG_LOCBACK
    - lyd_create_term
    - ly_path_eval_partial
    - lyd_free_tree
    - lyd_new_path_update
    - LOGVAL
    - lysc_data_parent
    - LYD_CTX
    - lyd_value_validate
    - LOGINT
    - LOG_LOCSET
    - lyd_create_inner
    - lyd_child
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_new_path_(struct lyd_node *parent, const struct ly_ctx
      *ctx, const struct lysc_ext_instance *ext, const char *path,\n        const
      void *value, size_t value_len, LYD_ANYDATA_VALUETYPE value_type, uint32_t options,\n
      \       struct lyd_node **new_parent, struct lyd_node **new_node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1964,1
    - Dst: lyd_new_path_
      Src: /src/libyang/src/tree_data.c:1967,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 6
    argNames:
    - parent
    - ctx
    - path
    - value
    - options
    - node
    argTypes:
    - struct lyd_node*
    - struct ly_ctx*
    - char*
    - char*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1960
    functionDepth: 5
    functionLinenumber: 1960
    functionLinenumberEnd: 1968
    functionName: lyd_new_path
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 8
    functionsReached:
    - LY_CHECK_ARG_RET
    - lyd_new_path_
    linkageType: ''
    returnType: API
    signature: "API lyd_new_path(struct lyd_node *parent, const struct ly_ctx *ctx,
      const char *path, const char *value, uint32_t options,\n        struct lyd_node
      **node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1975,1
    - Dst: lyd_new_path_
      Src: /src/libyang/src/tree_data.c:1977,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 9
    argNames:
    - parent
    - ctx
    - path
    - value
    - value_len
    - value_type
    - options
    - new_parent
    - new_node
    argTypes:
    - struct lyd_node*
    - struct ly_ctx*
    - char*
    - void*
    - size_t
    - LYD_ANYDATA_VALUETYPE
    - uint32_t
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1970
    functionDepth: 5
    functionLinenumber: 1970
    functionLinenumberEnd: 1978
    functionName: lyd_new_path2
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ARG_RET
    - lyd_new_path_
    linkageType: ''
    returnType: API
    signature: "API lyd_new_path2(struct lyd_node *parent, const struct ly_ctx *ctx,
      const char *path, const void *value,\n        size_t value_len, LYD_ANYDATA_VALUETYPE
      value_type, uint32_t options, struct lyd_node **new_parent,\n        struct
      lyd_node **new_node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:1986,1
    - Dst: lyd_new_path_
      Src: /src/libyang/src/tree_data.c:1988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 6
    argNames:
    - parent
    - ext
    - path
    - value
    - options
    - node
    argTypes:
    - struct lyd_node*
    - struct lysc_ext_instance*
    - char*
    - void*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1980
    functionDepth: 5
    functionLinenumber: 1980
    functionLinenumberEnd: 1989
    functionName: lyd_new_ext_path
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - lyd_new_path_
    linkageType: ''
    returnType: API
    signature: "API lyd_new_ext_path(struct lyd_node *parent, const struct lysc_ext_instance
      *ext, const char *path, const void *value,\n        uint32_t options, struct
      lyd_node **node)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2003,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data.c:2014,1
    - Dst: lys_getnext_data
      Src: /src/libyang/src/tree_data.c:2023,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2026,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/tree_data.c:2026,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2030,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2031,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/tree_data.c:2031,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/tree_data.c:2036,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2038,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/tree_data.c:2038,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2039,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:2040,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2042,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2044,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:2044,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2048,1
    - Dst: lysc_node_ext_tovalidate
      Src: /src/libyang/src/tree_data.c:2048,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2052,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/tree_data.c:2052,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2056,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/tree_data.c:2056,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/tree_data.c:2056,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/tree_data.c:2062,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/tree_data.c:2064,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2068,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:2068,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2073,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:2074,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2076,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2078,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:2078,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2082,1
    - Dst: lysc_node_ext_tovalidate
      Src: /src/libyang/src/tree_data.c:2082,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2086,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/tree_data.c:2086,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/tree_data.c:2092,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/tree_data.c:2096,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2100,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:2100,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2105,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:2106,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2108,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2110,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:2110,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2114,1
    - Dst: lysc_node_ext_tovalidate
      Src: /src/libyang/src/tree_data.c:2114,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2118,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/tree_data.c:2118,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 99
    argCount: 9
    argNames:
    - parent
    - first
    - sparent
    - mod
    - node_when
    - node_exts
    - node_types
    - impl_opts
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node**
    - struct lysc_node*
    - struct lys_module*
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - uint32_t
    - struct lyd_node**
    assertStmts:
    - condition: (first && (parent || sparent || mod))
      pos:
        line_end: 2002
        line_start: 2002
        source_file: /src/libyang/src/tree_data.c
    - condition: (node->schema->parent->nodetype == LYS_CASE)
      pos:
        line_end: 2029
        line_start: 2029
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2130
      start: 1991
    functionDepth: 2
    functionLinenumber: 1991
    functionLinenumberEnd: 2130
    functionName: lyd_new_implicit_r
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - lysc_has_when
    - lys_getnext_data
    - lyd_new_implicit_r
    - lys_getnext
    - lysc_node_ext_tovalidate
    - LY_CHECK_RET
    - lyd_find_sibling_val
    - lyd_val_diff_add
    - lyd_node_child_p
    - lyd_create_term2
    - lyd_create_inner
    - ly_set_add
    - lyd_insert_node
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_new_implicit_r(struct lyd_node *parent, struct lyd_node
      **first, const struct lysc_node *sparent,\n        const struct lys_module *mod,
      struct ly_set *node_when, struct ly_set *node_exts, struct ly_set *node_types,\n
      \       uint32_t impl_opts, struct lyd_node **diff)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lyd_create_term2
      Src: /src/libyang/src/tree_data.c:2096,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2100,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:2100,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2105,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:2106,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data.c:2108,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2110,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:2110,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2114,1
    - Dst: lysc_node_ext_tovalidate
      Src: /src/libyang/src/tree_data.c:2114,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2118,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/tree_data.c:2118,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2120
      start: 2095
    functionDepth: 2
    functionLinenumber: 2095
    functionLinenumberEnd: 2120
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 4
    functionsReached:
    - lysc_has_when
    - lyd_create_term2
    - LY_CHECK_RET
    - lysc_node_ext_tovalidate
    - lyd_val_diff_add
    - ly_set_add
    - lyd_insert_node
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(dflts, u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:2139,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2148,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/tree_data.c:2148,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/tree_data.c:2148,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/tree_data.c:2152,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2156,1
    - Dst: lyd_validate_unres
      Src: /src/libyang/src/tree_data.c:2156,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_data.c:2159,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_data.c:2160,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/tree_data.c:2162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - tree
    - implicit_options
    - diff
    argTypes:
    - struct lyd_node*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2132
    functionDepth: 3
    functionLinenumber: 2132
    functionLinenumberEnd: 2166
    functionName: lyd_new_implicit_tree
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - lyd_free_all
    - lyd_new_implicit_r
    - LY_CHECK_ARG_RET
    - LYD_TREE_DFS_END
    - lyd_validate_unres
    - lyd_node_child_p
    - LY_CHECK_GOTO
    - ly_set_erase
    linkageType: ''
    returnType: API
    signature: API lyd_new_implicit_tree(struct lyd_node *tree, uint32_t implicit_options,
      struct lyd_node **diff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2148,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/tree_data.c:2148,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/tree_data.c:2148,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/tree_data.c:2152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2153
      start: 2144
    functionDepth: 3
    functionLinenumber: 2144
    functionLinenumberEnd: 2153
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - lyd_node_child_p
    - LYD_TREE_DFS_END
    - lyd_new_implicit_r
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(tree, node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:2176,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:2181,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/tree_data.c:2185,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2190,1
    - Dst: lyd_new_implicit_module
      Src: /src/libyang/src/tree_data.c:2190,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/tree_data.c:2193,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/tree_data.c:2201,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 4
    argNames:
    - tree
    - ctx
    - implicit_options
    - diff
    argTypes:
    - struct lyd_node**
    - struct ly_ctx*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2168
    functionDepth: 1
    functionLinenumber: 2168
    functionLinenumberEnd: 2205
    functionName: lyd_new_implicit_all
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_free_all
    - LY_CHECK_ARG_RET
    - ly_ctx_get_module_iter
    - LY_CHECK_GOTO
    - lyd_insert_sibling
    - lyd_new_implicit_module
    - LYD_CTX
    linkageType: ''
    returnType: API
    signature: API lyd_new_implicit_all(struct lyd_node **tree, const struct ly_ctx
      *ctx, uint32_t implicit_options, struct lyd_node **diff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:2214,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2220,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/tree_data.c:2220,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2223,1
    - Dst: lyd_validate_unres
      Src: /src/libyang/src/tree_data.c:2223,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data.c:2226,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2229,1
    - Dst: lyd_new_implicit_tree
      Src: /src/libyang/src/tree_data.c:2229,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/tree_data.c:2233,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_data.c:2241,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_data.c:2242,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/tree_data.c:2244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - tree
    - module
    - implicit_options
    - diff
    argTypes:
    - struct lyd_node**
    - struct lys_module*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2207
    functionDepth: 4
    functionLinenumber: 2207
    functionLinenumberEnd: 2248
    functionName: lyd_new_implicit_module
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - lyd_free_all
    - lyd_new_implicit_r
    - LY_CHECK_ARG_RET
    - lyd_validate_unres
    - lyd_new_implicit_tree
    - LY_LIST_FOR
    - LY_CHECK_GOTO
    - lyd_insert_sibling
    - ly_set_erase
    linkageType: ''
    returnType: API
    signature: API lyd_new_implicit_module(struct lyd_node **tree, const struct lys_module
      *module, uint32_t implicit_options, struct lyd_node **diff)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2258,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data.c:2273,1
    - Dst: lyd_find_sibling_schema
      Src: /src/libyang/src/tree_data.c:2277,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data.c:2281,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:2286,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:2289,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2289,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2289,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:2296,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data.c:2297,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2301,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2301,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data.c:2320,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2321,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 49
    argCount: 2
    argNames:
    - first_sibling
    - new_node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (new_node)
      pos:
        line_end: 2257
        line_start: 2257
        source_file: /src/libyang/src/tree_data.c
    - condition: (schema)
      pos:
        line_end: 2320
        line_start: 2320
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2332
      start: 2250
    functionDepth: 1
    functionLinenumber: 2250
    functionLinenumberEnd: 2332
    functionName: lyd_insert_get_next_anchor
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_find_sibling_schema
    - lyd_owner_module
    - lys_getnext
    - strcmp
    - lysc_data_parent
    - assert
    linkageType: ''
    returnType: struct lyd_node
    signature: 'struct lyd_node *

      lyd_insert_get_next_anchor(const struct lyd_node *first_sibling, const struct
      lyd_node *new_node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:2289,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2289,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2292
      start: 2288
    functionDepth: 1
    functionLinenumber: 2288
    functionLinenumberEnd: 2292
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 12
    functionsReached:
    - lyd_owner_module
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(match, match)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2301,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data.c:2301,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data.c:2320,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2321,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (schema)
      pos:
        line_end: 2320
        line_start: 2320
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2328
      start: 2300
    functionDepth: 1
    functionLinenumber: 2300
    functionLinenumberEnd: 2328
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 12
    functionsReached:
    - lyd_owner_module
    - assert
    - lys_getnext
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(match, match)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2347,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - sibling
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (!node->next && (node->prev == node))
      pos:
        line_end: 2346
        line_start: 2346
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2372
      start: 2342
    functionDepth: 1
    functionLinenumber: 2342
    functionLinenumberEnd: 2372
    functionName: lyd_insert_after_node
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void lyd_insert_after_node(struct lyd_node *sibling, struct lyd_node
      *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2387,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - sibling
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (!node->next && (node->prev == node))
      pos:
        line_end: 2386
        line_start: 2386
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2408
      start: 2382
    functionDepth: 1
    functionLinenumber: 2382
    functionLinenumberEnd: 2408
    functionName: lyd_insert_before_node
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void lyd_insert_before_node(struct lyd_node *sibling, struct lyd_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2423,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:2423,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2424,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - parent
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (parent && !lyd_child(parent) && !node->next && (node->prev == node))
      pos:
        line_end: 2422
        line_start: 2422
        source_file: /src/libyang/src/tree_data.c
    - condition: (!parent->schema || (parent->schema->nodetype & LYD_NODE_INNER))
      pos:
        line_end: 2423
        line_start: 2423
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2437
      start: 2418
    functionDepth: 1
    functionLinenumber: 2418
    functionLinenumberEnd: 2437
    functionName: lyd_insert_only_child
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void lyd_insert_only_child(struct lyd_node *parent, struct lyd_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2452,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:2453,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data.c:2454,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct lyd_node*
    assertStmts:
    - condition: (list->schema->nodetype == LYS_LIST)
      pos:
        line_end: 2451
        line_start: 2451
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2465
      start: 2446
    functionDepth: 1
    functionLinenumber: 2446
    functionLinenumberEnd: 2465
    functionName: lyd_insert_has_keys
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lys_getnext
    - assert
    - lyd_child
    linkageType: ''
    returnType: int
    signature: int lyd_insert_has_keys(const struct lyd_node *list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2473,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2474,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:2478,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:2482,1
    - Dst: lyd_insert_get_next_anchor
      Src: /src/libyang/src/tree_data.c:2485,1
    - Dst: lyd_insert_before_node
      Src: /src/libyang/src/tree_data.c:2487,1
    - Dst: lyd_insert_after_node
      Src: /src/libyang/src/tree_data.c:2493,1
    - Dst: lyd_insert_only_child
      Src: /src/libyang/src/tree_data.c:2495,1
    - Dst: lyd_insert_hash
      Src: /src/libyang/src/tree_data.c:2501,1
    - Dst: lyd_insert_has_keys
      Src: /src/libyang/src/tree_data.c:2504,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:2505,1
    - Dst: lyd_insert_hash
      Src: /src/libyang/src/tree_data.c:2508,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 27
    argCount: 3
    argNames:
    - parent
    - first_sibling_p
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node**
    - struct lyd_node*
    assertStmts:
    - condition: ((parent || first_sibling_p) && node && (node->hash || !node->schema))
      pos:
        line_end: 2472
        line_start: 2472
        source_file: /src/libyang/src/tree_data.c
    - condition: "(!parent || !parent->schema ||\n            (parent->schema->nodetype
        & (LYS_CONTAINER | LYS_LIST | LYS_RPC | LYS_ACTION | LYS_NOTIF)))"
      pos:
        line_end: 2474
        line_start: 2473
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2510
      start: 2467
    functionDepth: 2
    functionLinenumber: 2467
    functionLinenumberEnd: 2510
    functionName: lyd_insert_node
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 13
    functionsReached:
    - lyd_insert_get_next_anchor
    - lyd_parent
    - lyd_insert_after_node
    - lyd_insert_before_node
    - lyd_insert_has_keys
    - lyd_hash
    - lyd_child
    - lyd_insert_hash
    - lyd_insert_only_child
    - assert
    linkageType: ''
    returnType: void
    signature: void lyd_insert_node(struct lyd_node *parent, struct lyd_node **first_sibling_p,
      struct lyd_node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2526,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2527,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2528,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:2536,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:2540,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:2545,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:2552,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - parent
    - sibling
    - schema
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    - struct lysc_node*
    assertStmts:
    - condition: (!parent || !(parent->nodetype & (LYS_CASE | LYS_CHOICE)))
      pos:
        line_end: 2525
        line_start: 2525
        source_file: /src/libyang/src/tree_data.c
    - condition: (!sibling || !(sibling->nodetype & (LYS_CASE | LYS_CHOICE)))
      pos:
        line_end: 2526
        line_start: 2526
        source_file: /src/libyang/src/tree_data.c
    - condition: (!schema || !(schema->nodetype & (LYS_CASE | LYS_CHOICE)))
      pos:
        line_end: 2527
        line_start: 2527
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2558
      start: 2521
    functionDepth: 1
    functionLinenumber: 2521
    functionLinenumberEnd: 2558
    functionName: lyd_insert_check_schema
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lysc_data_parent
    - LOGERR
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_insert_check_schema(const struct lysc_node *parent, const
      struct lysc_node *sibling, const struct lysc_node *schema)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:2565,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2567,1
    - Dst: lyd_insert_check_schema
      Src: /src/libyang/src/tree_data.c:2567,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:2570,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data.c:2575,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data.c:2580,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:2581,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - parent
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2560
    functionDepth: 3
    functionLinenumber: 2560
    functionLinenumberEnd: 2585
    functionName: lyd_insert_child
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_unlink_tree
    - LY_CHECK_ARG_RET
    - LOGERR
    - LY_CHECK_RET
    - lyd_insert_node
    - lyd_insert_check_schema
    linkageType: ''
    returnType: API
    signature: API lyd_insert_child(struct lyd_node *parent, struct lyd_node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:2592,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2595,1
    - Dst: lyd_insert_check_schema
      Src: /src/libyang/src/tree_data.c:2595,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data.c:2604,1
    - Dst: lysc_is_key
      Src: /src/libyang/src/tree_data.c:2608,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:2609,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:2609,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data.c:2614,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:2615,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - sibling
    - node
    - first
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2628
      start: 2587
    functionDepth: 3
    functionLinenumber: 2587
    functionLinenumberEnd: 2628
    functionName: lyd_insert_sibling
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 3
    functionsReached:
    - lyd_unlink_tree
    - lysc_is_key
    - LY_CHECK_ARG_RET
    - LOGERR
    - LY_CHECK_RET
    - lyd_insert_node
    - LYD_CTX
    - lyd_insert_check_schema
    linkageType: ''
    returnType: API
    signature: API lyd_insert_sibling(struct lyd_node *sibling, struct lyd_node *node,
      struct lyd_node **first)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:2633,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2635,1
    - Dst: lyd_insert_check_schema
      Src: /src/libyang/src/tree_data.c:2635,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:2638,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:2638,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data.c:2642,1
    - Dst: lyd_insert_before_node
      Src: /src/libyang/src/tree_data.c:2643,1
    - Dst: lyd_insert_hash
      Src: /src/libyang/src/tree_data.c:2644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - sibling
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2647
      start: 2630
    functionDepth: 2
    functionLinenumber: 2630
    functionLinenumberEnd: 2647
    functionName: lyd_insert_before
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_unlink_tree
    - LY_CHECK_ARG_RET
    - LOGERR
    - lyd_insert_before_node
    - LY_CHECK_RET
    - lyd_insert_hash
    - LYD_CTX
    - lyd_insert_check_schema
    linkageType: ''
    returnType: API
    signature: API lyd_insert_before(struct lyd_node *sibling, struct lyd_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:2652,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:2654,1
    - Dst: lyd_insert_check_schema
      Src: /src/libyang/src/tree_data.c:2654,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:2657,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:2657,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data.c:2661,1
    - Dst: lyd_insert_after_node
      Src: /src/libyang/src/tree_data.c:2662,1
    - Dst: lyd_insert_hash
      Src: /src/libyang/src/tree_data.c:2663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - sibling
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2666
      start: 2649
    functionDepth: 2
    functionLinenumber: 2649
    functionLinenumberEnd: 2666
    functionName: lyd_insert_after
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_unlink_tree
    - lyd_insert_after_node
    - LY_CHECK_ARG_RET
    - LOGERR
    - LY_CHECK_RET
    - lyd_insert_hash
    - LYD_CTX
    - lyd_insert_check_schema
    linkageType: ''
    returnType: API
    signature: API lyd_insert_after(struct lyd_node *sibling, struct lyd_node *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lyd_unlink_hash
      Src: /src/libyang/src/tree_data.c:2678,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data.c:2710,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2725
      start: 2668
    functionDepth: 1
    functionLinenumber: 2668
    functionLinenumberEnd: 2725
    functionName: lyd_unlink_tree
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 4
    functionsReached:
    - LY_LIST_FOR
    - lyd_unlink_hash
    linkageType: ''
    returnType: API
    signature: API lyd_unlink_tree(struct lyd_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2732,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:2753,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - parent
    - meta
    - clear_dflt
    argTypes:
    - struct lyd_node*
    - struct lyd_meta*
    - ly_bool
    assertStmts:
    - condition: (parent)
      pos:
        line_end: 2731
        line_start: 2731
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2755
      start: 2727
    functionDepth: 1
    functionLinenumber: 2727
    functionLinenumberEnd: 2755
    functionName: lyd_insert_meta
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - assert
    linkageType: ''
    returnType: void
    signature: void lyd_insert_meta(struct lyd_node *parent, struct lyd_meta *meta,
      ly_bool clear_dflt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2767,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/tree_data.c:2769,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_data.c:2771,1
    - Dst: lyplg_find
      Src: /src/libyang/src/tree_data.c:2772,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/tree_data.c:2773,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data.c:2781,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:2787,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:2788,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:2788,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/tree_data.c:2791,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:2793,1
    - Dst: free
      Src: /src/libyang/src/tree_data.c:2793,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:2794,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:2795,1
    - Dst: free
      Src: /src/libyang/src/tree_data.c:2795,1
    - Dst: lyd_insert_meta
      Src: /src/libyang/src/tree_data.c:2799,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/tree_data.c:2810,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 13
    argNames:
    - parent
    - meta
    - mod
    - name
    - name_len
    - value
    - value_len
    - dynamic
    - format
    - prefix_data
    - hints
    - clear_dflt
    - incomplete
    argTypes:
    - struct lyd_node*
    - struct lyd_meta**
    - struct lys_module*
    - char*
    - size_t
    - char*
    - size_t
    - ly_bool*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - ly_bool
    - ly_bool*
    assertStmts:
    - condition: ((parent || meta) && mod)
      pos:
        line_end: 2766
        line_start: 2766
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2812
      start: 2757
    functionDepth: 2
    functionLinenumber: 2757
    functionLinenumberEnd: 2812
    functionName: lyd_create_meta
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ly_strncmp
    - LOG_LOCBACK
    - lyd_value_store
    - free
    - lyd_insert_meta
    - LY_ARRAY_FOR
    - LOGVAL
    - calloc
    - lydict_insert
    - LOG_LOCSET
    - lyplg_find
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_create_meta(struct lyd_node *parent, struct lyd_meta **meta,
      const struct lys_module *mod, const char *name,\n        size_t name_len, const
      char *value, size_t value_len, ly_bool *dynamic, LY_VALUE_FORMAT format,\n        void
      *prefix_data, uint32_t hints, ly_bool clear_dflt, ly_bool *incomplete)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2820,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - parent
    - attr
    argTypes:
    - struct lyd_node*
    - struct lyd_attr*
    assertStmts:
    - condition: (parent && !parent->schema)
      pos:
        line_end: 2819
        line_start: 2819
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2838
      start: 2814
    functionDepth: 1
    functionLinenumber: 2814
    functionLinenumberEnd: 2838
    functionName: lyd_insert_attr
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void lyd_insert_attr(struct lyd_node *parent, struct lyd_attr *attr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2848,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2849,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:2855,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:2856,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:2856,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_data.c:2856,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2858,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:2858,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2860,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:2860,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2863,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:2863,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/tree_data.c:2867,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2868,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:2871,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:2871,1
    - Dst: lyd_insert_attr
      Src: /src/libyang/src/tree_data.c:2879,1
    - Dst: lyd_free_attr_single
      Src: /src/libyang/src/tree_data.c:2887,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 15
    argNames:
    - parent
    - attr
    - ctx
    - name
    - name_len
    - prefix
    - prefix_len
    - module_key
    - module_key_len
    - value
    - value_len
    - dynamic
    - format
    - val_prefix_data
    - hints
    argTypes:
    - struct lyd_node*
    - struct lyd_attr**
    - struct ly_ctx*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - ly_bool*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    assertStmts:
    - condition: (ctx && (parent || attr) && (!parent || !parent->schema))
      pos:
        line_end: 2847
        line_start: 2847
        source_file: /src/libyang/src/tree_data.c
    - condition: (name && name_len && format)
      pos:
        line_end: 2848
        line_start: 2848
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2892
      start: 2840
    functionDepth: 2
    functionLinenumber: 2840
    functionLinenumberEnd: 2892
    functionName: lyd_create_attr
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - assert
    - ly_free_prefix_data
    - LY_CHECK_ERR_RET
    - lyd_free_attr_single
    - lydict_insert_zc
    - lyd_insert_attr
    - lydict_insert
    - LY_CHECK_GOTO
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_create_attr(struct lyd_node *parent, struct lyd_attr **attr,
      const struct ly_ctx *ctx, const char *name, size_t name_len,\n        const
      char *prefix, size_t prefix_len, const char *module_key, size_t module_key_len,
      const char *value,\n        size_t value_len, ly_bool *dynamic, LY_VALUE_FORMAT
      format, void *val_prefix_data, uint32_t hints)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_path_eval
      Src: /src/libyang/src/tree_data.c:2899,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - path
    - tree
    argTypes:
    - struct ly_path*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2904
      start: 2894
    functionDepth: 1
    functionLinenumber: 2894
    functionLinenumberEnd: 2904
    functionName: lyd_target
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - ly_path_eval
    linkageType: ''
    returnType: API
    signature: 'API *

      lyd_target(const struct ly_path *path, const struct lyd_node *tree)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2922,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:2928,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:2932,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:2940,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 2
    argNames:
    - schema1
    - schema2
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    assertStmts:
    - condition: (schema1->module->ctx != schema2->module->ctx)
      pos:
        line_end: 2921
        line_start: 2921
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2946
      start: 2913
    functionDepth: 1
    functionLinenumber: 2913
    functionLinenumberEnd: 2946
    functionName: lyd_compare_schema_equal
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strcmp
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyd_compare_schema_equal(const struct lysc_node *schema1, const
      struct lysc_node *schema2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:2962,1
    - Dst: lyd_compare_schema_equal
      Src: /src/libyang/src/tree_data.c:2967,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (node1 && node2)
      pos:
        line_end: 2961
        line_start: 2961
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 2977
      start: 2957
    functionDepth: 2
    functionLinenumber: 2957
    functionLinenumberEnd: 2977
    functionName: lyd_compare_schema_parents_equal
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_compare_schema_equal
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyd_compare_schema_parents_equal(const struct lyd_node *node1,
      const struct lyd_node *node2)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3005,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3005,1
    - Dst: lyd_compare_schema_equal
      Src: /src/libyang/src/tree_data.c:3012,1
    - Dst: lyd_compare_schema_parents_equal
      Src: /src/libyang/src/tree_data.c:3016,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:3031,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:3032,1
    - Dst: lyxml_value_compare
      Src: /src/libyang/src/tree_data.c:3037,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3037,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3037,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:3044,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data.c:3050,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3050,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3073,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3073,1
    - Dst: struct lyd_node_term*::value::realtype::plugin::compare
      Src: /src/libyang/src/tree_data.c:3074,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:3078,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/tree_data.c:3078,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/tree_data.c:3078,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:3089,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:3090,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:3110,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:3111,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_data.c:3115,1
    - Dst: lyd_compare_single_
      Src: /src/libyang/src/tree_data.c:3118,1
    - Dst: lyd_compare_single_
      Src: /src/libyang/src/tree_data.c:3134,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3159,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3160,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:3161,1
    - Dst: lyd_lyb_data_length
      Src: /src/libyang/src/tree_data.c:3166,1
    - Dst: lyd_lyb_data_length
      Src: /src/libyang/src/tree_data.c:3167,1
    - Dst: memcmp
      Src: /src/libyang/src/tree_data.c:3168,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data.c:3176,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3176,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 155
    argCount: 4
    argNames:
    - node1
    - node2
    - options
    - parental_schemas_checked
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint32_t
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3178
      start: 2987
    functionDepth: 3
    functionLinenumber: 2987
    functionLinenumberEnd: 3178
    functionName: lyd_compare_single_
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - struct lyd_node_term*::value::realtype::plugin::compare
    - strlen
    - lyxml_value_compare
    - lyd_compare_schema_equal
    - lyd_lyb_data_length
    - strcmp
    - LOGINT
    - lyd_compare_single_
    - memcmp
    - lyd_compare_schema_parents_equal
    - lyd_child
    - lysc_node_child
    - lyd_get_value
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_compare_single_(const struct lyd_node *node1, const struct
      lyd_node *node2,\n        uint32_t options, ly_bool parental_schemas_checked)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_compare_single_
      Src: /src/libyang/src/tree_data.c:3183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - node1
    - node2
    - options
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3184
      start: 3180
    functionDepth: 4
    functionLinenumber: 3180
    functionLinenumberEnd: 3184
    functionName: lyd_compare_single
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 4
    functionsReached:
    - lyd_compare_single_
    linkageType: ''
    returnType: API
    signature: API lyd_compare_single(const struct lyd_node *node1, const struct lyd_node
      *node2, uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3190,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:3190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - node1
    - node2
    - options
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3197
      start: 3186
    functionDepth: 5
    functionLinenumber: 3186
    functionLinenumberEnd: 3197
    functionName: lyd_compare_siblings
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyd_compare_single
    linkageType: ''
    returnType: API
    signature: API lyd_compare_siblings(const struct lyd_node *node1, const struct
      lyd_node *node2, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_meta*::value::realtype::plugin::compare
      Src: /src/libyang/src/tree_data.c:3214,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - meta1
    - meta2
    argTypes:
    - struct lyd_meta*
    - struct lyd_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3215
      start: 3199
    functionDepth: 2
    functionLinenumber: 3199
    functionLinenumberEnd: 3215
    functionName: lyd_compare_meta
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - struct lyd_meta*::value::realtype::plugin::compare
    linkageType: ''
    returnType: API
    signature: API lyd_compare_meta(const struct lyd_meta *meta1, const struct lyd_meta
      *meta2)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3238,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:3241,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:3249,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:3253,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:3257,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data.c:3260,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3260,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:3265,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:3265,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3265,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data.c:3277,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3278,1
    - Dst: lyd_dup_meta_single
      Src: /src/libyang/src/tree_data.c:3278,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data.c:3290,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3291,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3291,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3294,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:3294,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3294,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3297,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:3297,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3297,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3299,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:3299,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3299,1
    - Dst: ly_dup_prefix_data
      Src: /src/libyang/src/tree_data.c:3301,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3301,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3302,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3304,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:3304,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3304,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:3311,1
    - Dst: struct lyd_node_term*::value::realtype::plugin::duplicate
      Src: /src/libyang/src/tree_data.c:3311,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3311,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:3312,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3312,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data.c:3319,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3320,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3320,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_data.c:3325,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3336,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3336,1
    - Dst: lyd_hash
      Src: /src/libyang/src/tree_data.c:3340,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3344,1
    - Dst: lyd_any_copy_value
      Src: /src/libyang/src/tree_data.c:3344,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:3348,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:3356,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 100
    argCount: 5
    argNames:
    - node
    - parent
    - first
    - options
    - dup_p
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node**
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3358
      start: 3229
    functionDepth: 3
    functionLinenumber: 3229
    functionLinenumberEnd: 3358
    functionName: lyd_dup_r
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LOGERR
    - lydict_insert
    - lyd_hash
    - LY_CHECK_GOTO
    - calloc
    - lyd_dup_meta_single
    - LY_CHECK_ERR_GOTO
    - struct lyd_node_term*::value::realtype::plugin::duplicate
    - lyd_dup_r
    - lysc_node_child
    - lyd_insert_node
    - lyd_any_copy_value
    - lyd_free_tree
    - LY_CHECK_ARG_RET
    - ly_dup_prefix_data
    - LY_LIST_FOR
    - LYD_CTX
    - LOGMEM
    - LOGINT
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_dup_r(const struct lyd_node *node, struct lyd_node *parent,
      struct lyd_node **first, uint32_t options,\n        struct lyd_node **dup_p)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3377,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3377,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:3402,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3402,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 4
    argNames:
    - node
    - parent
    - dup_parent
    - local_parent
    argTypes:
    - struct lyd_node*
    - struct lyd_node_inner*
    - struct lyd_node**
    - struct lyd_node_inner**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3408
      start: 3360
    functionDepth: 4
    functionLinenumber: 3360
    functionLinenumberEnd: 3408
    functionName: lyd_dup_get_local_parent
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyd_dup_r
    - LOGERR
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_dup_get_local_parent(const struct lyd_node *node, const
      struct lyd_node_inner *parent, struct lyd_node **dup_parent,\n        struct
      lyd_node_inner **local_parent)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3419,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3422,1
    - Dst: lyd_dup_get_local_parent
      Src: /src/libyang/src/tree_data.c:3422,1
    - Dst: lysc_is_key
      Src: /src/libyang/src/tree_data.c:3428,1
    - Dst: lyd_find_sibling_schema
      Src: /src/libyang/src/tree_data.c:3431,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:3432,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data.c:3432,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3432,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:3434,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3436,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3437,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3441,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3442,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:3456,1
    - Dst: lyd_free_siblings
      Src: /src/libyang/src/tree_data.c:3458,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 5
    argNames:
    - node
    - parent
    - options
    - nosiblings
    - dup
    argTypes:
    - struct lyd_node*
    - struct lyd_node_inner*
    - uint32_t
    - ly_bool
    - struct lyd_node**
    assertStmts:
    - condition: (!(options & LYD_DUP_WITH_PARENTS))
      pos:
        line_end: 3433
        line_start: 3433
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 3461
      start: 3410
    functionDepth: 5
    functionLinenumber: 3410
    functionLinenumberEnd: 3461
    functionName: lyd_dup
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_find_sibling_schema
    - LY_CHECK_ERR_GOTO
    - lysc_is_key
    - lyd_free_tree
    - LY_CHECK_ARG_RET
    - LOGINT
    - lyd_dup_get_local_parent
    - lyd_dup_r
    - LY_CHECK_GOTO
    - LYD_CTX
    - lyd_free_siblings
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_dup(const struct lyd_node *node, struct lyd_node_inner *parent,
      uint32_t options, ly_bool nosiblings, struct lyd_node **dup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysc_is_key
      Src: /src/libyang/src/tree_data.c:3428,1
    - Dst: lyd_find_sibling_schema
      Src: /src/libyang/src/tree_data.c:3431,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:3432,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data.c:3432,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3432,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:3434,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3436,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3437,1
    - Dst: lyd_dup_r
      Src: /src/libyang/src/tree_data.c:3441,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3442,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!(options & LYD_DUP_WITH_PARENTS))
      pos:
        line_end: 3433
        line_start: 3433
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 3447
      start: 3427
    functionDepth: 4
    functionLinenumber: 3427
    functionLinenumberEnd: 3447
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 14
    functionsReached:
    - lyd_find_sibling_schema
    - LY_CHECK_ERR_GOTO
    - lysc_is_key
    - LOGINT
    - lyd_dup_r
    - LY_CHECK_GOTO
    - LYD_CTX
    - assert
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(node, orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_dup
      Src: /src/libyang/src/tree_data.c:3466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - node
    - parent
    - options
    - dup
    argTypes:
    - struct lyd_node*
    - struct lyd_node_inner*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3467
      start: 3463
    functionDepth: 6
    functionLinenumber: 3463
    functionLinenumberEnd: 3467
    functionName: lyd_dup_single
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - lyd_dup
    linkageType: ''
    returnType: API
    signature: API lyd_dup_single(const struct lyd_node *node, struct lyd_node_inner
      *parent, uint32_t options, struct lyd_node **dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_dup
      Src: /src/libyang/src/tree_data.c:3472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - node
    - parent
    - options
    - dup
    argTypes:
    - struct lyd_node*
    - struct lyd_node_inner*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3473
      start: 3469
    functionDepth: 6
    functionLinenumber: 3469
    functionLinenumberEnd: 3473
    functionName: lyd_dup_siblings
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - lyd_dup
    linkageType: ''
    returnType: API
    signature: API lyd_dup_siblings(const struct lyd_node *node, struct lyd_node_inner
      *parent, uint32_t options, struct lyd_node **dup)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3481,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data.c:3484,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:3485,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:3485,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3485,1
    - Dst: struct lyd_meta*::value::realtype::plugin::duplicate
      Src: /src/libyang/src/tree_data.c:3487,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3487,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:3488,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:3488,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3488,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:3489,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data.c:3489,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3489,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/tree_data.c:3502,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - meta
    - node
    - dup
    argTypes:
    - struct lyd_meta*
    - struct lyd_node*
    - struct lyd_meta**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3507
      start: 3475
    functionDepth: 1
    functionLinenumber: 3475
    functionLinenumberEnd: 3507
    functionName: lyd_dup_meta_single
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - LY_CHECK_ERR_RET
    - struct lyd_meta*::value::realtype::plugin::duplicate
    - LY_CHECK_ARG_RET
    - LOGERR
    - lydict_insert
    - LY_CHECK_GOTO
    - LYD_CTX
    - lyd_free_meta_single
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: API
    signature: API lyd_dup_meta_single(const struct lyd_meta *meta, struct lyd_node
      *node, struct lyd_meta **dup)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/tree_data.c:3530,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/tree_data.c:3533,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:3538,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:3540,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/tree_data.c:3545,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3545,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3546,1
    - Dst: struct lysc_type*::plugin::duplicate
      Src: /src/libyang/src/tree_data.c:3546,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3546,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:3552,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3554,1
    - Dst: lyd_any_copy_value
      Src: /src/libyang/src/tree_data.c:3554,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3562,1
    - Dst: lyd_merge_sibling_r
      Src: /src/libyang/src/tree_data.c:3562,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/tree_data.c:3562,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data.c:3569,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3573,1
    - Dst: lyd_dup_single
      Src: /src/libyang/src/tree_data.c:3573,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/tree_data.c:3579,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/tree_data.c:3582,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - first_trg
    - parent_trg
    - sibling_src_p
    - options
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lyd_node**
    - uint16_t
    assertStmts:
    - condition: (!(sibling_src->flags & LYD_DEFAULT) || !(match_trg->flags & LYD_DEFAULT))
      pos:
        line_end: 3539
        line_start: 3539
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 3586
      start: 3518
    functionDepth: 7
    functionLinenumber: 3518
    functionLinenumberEnd: 3586
    functionName: lyd_merge_sibling_r
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - struct lysc_type*::plugin::duplicate
    - lyd_unlink_tree
    - lyd_merge_sibling_r
    - struct lysc_type*::plugin::free
    - LYD_TREE_DFS_END
    - lyd_find_sibling_val
    - LY_CHECK_RET
    - lyd_node_child_p
    - lyd_insert_node
    - lyd_compare_single
    - lyd_find_sibling_first
    - LYD_CTX
    - lyd_any_copy_value
    - lyd_dup_single
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_merge_sibling_r(struct lyd_node **first_trg, struct lyd_node
      *parent_trg, const struct lyd_node **sibling_src_p,\n        uint16_t options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3562,1
    - Dst: lyd_merge_sibling_r
      Src: /src/libyang/src/tree_data.c:3562,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/tree_data.c:3562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3563
      start: 3561
    functionDepth: 8
    functionLinenumber: 3561
    functionLinenumberEnd: 3563
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyd_node_child_p
    - lyd_merge_sibling_r
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR_SAFE(lyd_child_no_keys(sibling_src), tmp, child_src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/tree_data.c:3579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3580
      start: 3577
    functionDepth: 1
    functionLinenumber: 3577
    functionLinenumberEnd: 3580
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(dup_src, elem)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3594,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:3601,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:3601,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:3602,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:3602,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3608,1
    - Dst: lyd_merge_sibling_r
      Src: /src/libyang/src/tree_data.c:3608,1
    - Dst: lyd_free_siblings
      Src: /src/libyang/src/tree_data.c:3621,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 4
    argNames:
    - target
    - source
    - options
    - nosiblings
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - uint16_t
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3625
      start: 3588
    functionDepth: 8
    functionLinenumber: 3588
    functionLinenumberEnd: 3625
    functionName: lyd_merge
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_merge_sibling_r
    - LY_CHECK_ARG_RET
    - LOGERR
    - LY_CHECK_RET
    - lysc_data_parent
    - LYD_CTX
    - lyd_free_siblings
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_merge(struct lyd_node **target, const struct lyd_node *source,
      uint16_t options, ly_bool nosiblings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3608,1
    - Dst: lyd_merge_sibling_r
      Src: /src/libyang/src/tree_data.c:3608,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3617
      start: 3606
    functionDepth: 8
    functionLinenumber: 3606
    functionLinenumberEnd: 3617
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyd_merge_sibling_r
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR_SAFE(source, tmp, sibling_src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_merge
      Src: /src/libyang/src/tree_data.c:3630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - target
    - source
    - options
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3631
      start: 3627
    functionDepth: 9
    functionLinenumber: 3627
    functionLinenumberEnd: 3631
    functionName: lyd_merge_tree
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - lyd_merge
    linkageType: ''
    returnType: API
    signature: API lyd_merge_tree(struct lyd_node **target, const struct lyd_node
      *source, uint16_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_merge
      Src: /src/libyang/src/tree_data.c:3636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - target
    - source
    - options
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3637
      start: 3633
    functionDepth: 9
    functionLinenumber: 3633
    functionLinenumberEnd: 3637
    functionName: lyd_merge_siblings
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 13
    functionsReached:
    - lyd_merge
    linkageType: ''
    returnType: API
    signature: API lyd_merge_siblings(struct lyd_node **target, const struct lyd_node
      *source, uint16_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_realloc
      Src: /src/libyang/src/tree_data.c:3650,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - buffer
    - buflen
    - reqlen
    - is_static
    argTypes:
    - char**
    - size_t*
    - size_t
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3639
    functionDepth: 1
    functionLinenumber: 3639
    functionLinenumberEnd: 3659
    functionName: lyd_path_str_enlarge
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - ly_realloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_path_str_enlarge(char **buffer, size_t *buflen, size_t reqlen,
      ly_bool is_static)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data.c:3669,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/tree_data.c:3670,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3671,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3671,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3672,1
    - Dst: lyd_path_str_enlarge
      Src: /src/libyang/src/tree_data.c:3672,1
    - Dst: strchr
      Src: /src/libyang/src/tree_data.c:3675,1
    - Dst: sprintf
      Src: /src/libyang/src/tree_data.c:3678,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - node
    - buffer
    - buflen
    - bufused
    - is_static
    argTypes:
    - struct lyd_node*
    - char**
    - size_t*
    - size_t*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3682
      start: 3661
    functionDepth: 2
    functionLinenumber: 3661
    functionLinenumberEnd: 3682
    functionName: lyd_path_list_predicate
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_RET
    - sprintf
    - strchr
    - lyd_child
    - lyd_get_value
    - lyd_path_str_enlarge
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_path_list_predicate(const struct lyd_node *node, char **buffer,
      size_t *buflen, size_t *bufused, ly_bool is_static)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_get_value
      Src: /src/libyang/src/tree_data.c:3701,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3702,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:3703,1
    - Dst: lyd_path_str_enlarge
      Src: /src/libyang/src/tree_data.c:3703,1
    - Dst: strchr
      Src: /src/libyang/src/tree_data.c:3706,1
    - Dst: sprintf
      Src: /src/libyang/src/tree_data.c:3709,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - node
    - buffer
    - buflen
    - bufused
    - is_static
    argTypes:
    - struct lyd_node*
    - char**
    - size_t*
    - size_t*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3712
      start: 3694
    functionDepth: 2
    functionLinenumber: 3694
    functionLinenumberEnd: 3712
    functionName: lyd_path_leaflist_predicate
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_RET
    - sprintf
    - strchr
    - lyd_get_value
    - lyd_path_str_enlarge
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_path_leaflist_predicate(const struct lyd_node *node, char
      **buffer, size_t *buflen, size_t *bufused, ly_bool is_static)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/tree_data.c:3744,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3748,1
    - Dst: lyd_path_str_enlarge
      Src: /src/libyang/src/tree_data.c:3749,1
    - Dst: sprintf
      Src: /src/libyang/src/tree_data.c:3754,1
    - Dst: free
      Src: /src/libyang/src/tree_data.c:3757,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - node
    - buffer
    - buflen
    - bufused
    - is_static
    argTypes:
    - struct lyd_node*
    - char**
    - size_t*
    - size_t*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3759
      start: 3724
    functionDepth: 2
    functionLinenumber: 3724
    functionLinenumberEnd: 3759
    functionName: lyd_path_position_predicate
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - strlen
    - free
    - asprintf
    - sprintf
    - lyd_path_str_enlarge
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_path_position_predicate(const struct lyd_node *node, char
      **buffer, size_t *buflen, size_t *bufused, ly_bool is_static)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3771,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3773,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:3783,1
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data.c:3790,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3799,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3799,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:3800,1
    - Dst: lyd_path_str_enlarge
      Src: /src/libyang/src/tree_data.c:3801,1
    - Dst: sprintf
      Src: /src/libyang/src/tree_data.c:3807,1
    - Dst: lyd_path_position_predicate
      Src: /src/libyang/src/tree_data.c:3816,1
    - Dst: lyd_path_list_predicate
      Src: /src/libyang/src/tree_data.c:3819,1
    - Dst: lyd_path_leaflist_predicate
      Src: /src/libyang/src/tree_data.c:3825,1
    - Dst: lyd_path_position_predicate
      Src: /src/libyang/src/tree_data.c:3828,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 60
    argCount: 4
    argNames:
    - node
    - pathtype
    - buffer
    - buflen
    argTypes:
    - struct lyd_node*
    - LYD_PATH_TYPE
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3846
      start: 3761
    functionDepth: 3
    functionLinenumber: 3761
    functionLinenumberEnd: 3846
    functionName: lyd_path
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 9
    functionsReached:
    - strlen
    - lyd_parent
    - lyd_path_position_predicate
    - lyd_path_leaflist_predicate
    - LY_CHECK_ARG_RET
    - sprintf
    - lyd_path_list_predicate
    - lyd_path_str_enlarge
    linkageType: ''
    returnType: API
    signature: 'API *

      lyd_path(const struct lyd_node *node, LYD_PATH_TYPE pathtype, char *buffer,
      size_t buflen)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3857,1
    - Dst: strchr
      Src: /src/libyang/src/tree_data.c:3857,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/tree_data.c:3867,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:3868,1
    - Dst: strndup
      Src: /src/libyang/src/tree_data.c:3874,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/tree_data.c:3875,1
    - Dst: free
      Src: /src/libyang/src/tree_data.c:3876,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data.c:3877,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_data.c:3877,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:3882,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - first
    - module
    - name
    argTypes:
    - struct lyd_meta*
    - struct lys_module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3889
      start: 3848
    functionDepth: 1
    functionLinenumber: 3848
    functionLinenumberEnd: 3889
    functionName: lyd_find_meta
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - ly_parse_nodeid
    - LY_CHECK_ERR_RET
    - LOGERR
    - LY_CHECK_ARG_RET
    - free
    - ly_ctx_get_module_latest
    - strcmp
    - strchr
    - strndup
    linkageType: ''
    returnType: API
    signature: 'API *

      lyd_find_meta(const struct lyd_meta *first, const struct lys_module *module,
      const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:3882,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3886
      start: 3881
    functionDepth: 0
    functionLinenumber: 3881
    functionLinenumberEnd: 3886
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 14
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(first, first)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:3898,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:3901,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:3901,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/tree_data.c:3910,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:3914,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/tree_data.c:3916,1
    - Dst: LYD_LIST_FOR_INST
      Src: /src/libyang/src/tree_data.c:3919,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:3920,1
    - Dst: lyht_find
      Src: /src/libyang/src/tree_data.c:3932,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:3942,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 3
    argNames:
    - siblings
    - target
    - match
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node**
    assertStmts:
    - condition: (target->hash)
      pos:
        line_end: 3913
        line_start: 3913
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 3959
      start: 3891
    functionDepth: 5
    functionLinenumber: 3891
    functionLinenumberEnd: 3959
    functionName: lyd_find_sibling_first
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - LYD_LIST_FOR_INST
    - lysc_is_dup_inst_list
    - lyd_compare_single
    - lysc_data_parent
    - lyht_find
    - assert
    - lyd_first_sibling
    linkageType: ''
    returnType: API
    signature: API lyd_find_sibling_first(const struct lyd_node *siblings, const struct
      lyd_node *target, struct lyd_node **match)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - UNUSED
    - UNUSED(cb_data)
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3983
      start: 3968
    functionDepth: 0
    functionLinenumber: 3968
    functionLinenumberEnd: 3983
    functionName: lyd_hash_table_schema_val_equal
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyd_hash_table_schema_val_equal(void *val1_p, void *val2_p,
      ly_bool UNUSED(mod), void *UNUSED(cb_data))
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:4004,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data.c:4009,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:4009,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data.c:4010,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:4010,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data.c:4011,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/tree_data.c:4014,1
    - Dst: lyht_find
      Src: /src/libyang/src/tree_data.c:4017,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/tree_data.c:4025,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 3
    argNames:
    - siblings
    - schema
    - match
    argTypes:
    - struct lyd_node*
    - struct lysc_node*
    - struct lyd_node**
    assertStmts:
    - condition: (siblings && schema)
      pos:
        line_end: 4003
        line_start: 4003
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 4056
      start: 3996
    functionDepth: 1
    functionLinenumber: 3996
    functionLinenumberEnd: 4056
    functionName: lyd_find_sibling_schema
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 3
    functionsReached:
    - assert
    - strlen
    - dict_hash_multi
    - lyht_find
    - lyht_set_cb
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_find_sibling_schema(const struct lyd_node *siblings, const
      struct lysc_node *schema, struct lyd_node **match)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:4065,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:4067,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:4067,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:4076,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/tree_data.c:4083,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:4084,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:4087,1
    - Dst: lyd_create_list2
      Src: /src/libyang/src/tree_data.c:4087,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/tree_data.c:4091,1
    - Dst: lyd_find_sibling_schema
      Src: /src/libyang/src/tree_data.c:4094,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/tree_data.c:4097,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 5
    argNames:
    - siblings
    - schema
    - key_or_value
    - val_len
    - match
    argTypes:
    - struct lyd_node*
    - struct lysc_node*
    - char*
    - size_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4099
      start: 4058
    functionDepth: 6
    functionLinenumber: 4058
    functionLinenumberEnd: 4099
    functionName: lyd_find_sibling_val
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached:
    - lyd_find_sibling_schema
    - strlen
    - lyd_create_term
    - lyd_free_tree
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - lysc_data_parent
    - lyd_find_sibling_first
    - lyd_create_list2
    linkageType: ''
    returnType: API
    signature: "API lyd_find_sibling_val(const struct lyd_node *siblings, const struct
      lysc_node *schema, const char *key_or_value,\n        size_t val_len, struct
      lyd_node **match)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:4107,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/tree_data.c:4107,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data.c:4109,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_data.c:4109,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:4111,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/tree_data.c:4111,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/tree_data.c:4117,1
    - Dst: assert
      Src: /src/libyang/src/tree_data.c:4121,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/tree_data.c:4124,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:4127,1
    - Dst: lyht_find
      Src: /src/libyang/src/tree_data.c:4132,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:4140,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:4140,1
    - Dst: lyht_find_next
      Src: /src/libyang/src/tree_data.c:4145,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:4155,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:4156,1
    - Dst: ly_set_free
      Src: /src/libyang/src/tree_data.c:4167,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 3
    argNames:
    - siblings
    - target
    - set
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct ly_set**
    assertStmts:
    - condition: (target->hash)
      pos:
        line_end: 4120
        line_start: 4120
        source_file: /src/libyang/src/tree_data.c
    constantsTouched: []
    func_position:
      end: 4170
      start: 4101
    functionDepth: 6
    functionLinenumber: 4101
    functionLinenumberEnd: 4170
    functionName: lyd_find_sibling_dup_inst_set
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_set_new
    - lyht_find_next
    - ly_set_free
    - lysc_is_dup_inst_list
    - LY_CHECK_RET
    - ly_set_add
    - lyd_compare_single
    - lyht_find
    - lysc_data_parent
    - lyd_find_sibling_first
    - assert
    - lyd_first_sibling
    linkageType: ''
    returnType: API
    signature: API lyd_find_sibling_dup_inst_set(const struct lyd_node *siblings,
      const struct lyd_node *target, struct ly_set **set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data.c:4155,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:4156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4158
      start: 4154
    functionDepth: 5
    functionLinenumber: 4154
    functionLinenumberEnd: 4158
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 14
    functionsReached:
    - lyd_compare_single
    - ly_set_add
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(siblings, siblings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:4175,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data.c:4178,1
    - Dst: LYD_NAME
      Src: /src/libyang/src/tree_data.c:4178,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - first
    - name
    - match
    argTypes:
    - struct lyd_node*
    - char*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4187
      start: 4172
    functionDepth: 1
    functionLinenumber: 4172
    functionLinenumberEnd: 4187
    functionName: lyd_find_sibling_opaq_next
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - strcmp
    - LYD_NAME
    linkageType: ''
    returnType: API
    signature: API lyd_find_sibling_opaq_next(const struct lyd_node *first, const
      char *name, struct lyd_node **match)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:4197,1
    - Dst: memset
      Src: /src/libyang/src/tree_data.c:4200,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/tree_data.c:4203,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4203,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:4204,1
    - Dst: lyxp_eval
      Src: /src/libyang/src/tree_data.c:4207,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4207,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:4208,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_data.c:4211,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:4212,1
    - Dst: malloc
      Src: /src/libyang/src/tree_data.c:4217,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data.c:4218,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data.c:4218,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4218,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data.c:4223,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:4224,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/tree_data.c:4230,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_data.c:4231,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4231,1
    - Dst: ly_set_free
      Src: /src/libyang/src/tree_data.c:4233,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - ctx_node
    - xpath
    - set
    argTypes:
    - struct lyd_node*
    - char*
    - struct ly_set**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4237
      start: 4189
    functionDepth: 1
    functionLinenumber: 4189
    functionLinenumberEnd: 4237
    functionName: lyd_find_xpath
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 10
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyxp_expr_free
    - memset
    - malloc
    - LY_CHECK_ARG_RET
    - ly_set_new
    - ly_set_free
    - LOGMEM
    - ly_set_add
    - LY_CHECK_GOTO
    - lyxp_expr_parse
    - LYD_CTX
    - lyxp_set_free_content
    - lyxp_eval
    linkageType: ''
    returnType: API
    signature: API lyd_find_xpath(const struct lyd_node *ctx_node, const char *xpath,
      struct ly_set **set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data.c:4246,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/tree_data.c:4249,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4249,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data.c:4249,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:4251,1
    - Dst: ly_path_compile
      Src: /src/libyang/src/tree_data.c:4254,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4254,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data.c:4256,1
    - Dst: ly_path_eval_partial
      Src: /src/libyang/src/tree_data.c:4259,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_data.c:4262,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4262,1
    - Dst: ly_path_free
      Src: /src/libyang/src/tree_data.c:4263,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.c:4263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - ctx_node
    - path
    - output
    - match
    argTypes:
    - struct lyd_node*
    - char*
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4265
      start: 4239
    functionDepth: 1
    functionLinenumber: 4239
    functionLinenumberEnd: 4265
    functionName: lyd_find_path
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 1
    functionsReached:
    - strlen
    - lyxp_expr_free
    - ly_path_free
    - ly_path_eval_partial
    - LY_CHECK_ARG_RET
    - ly_path_compile
    - ly_path_parse
    - LY_CHECK_GOTO
    - LYD_CTX
    linkageType: ''
    returnType: API
    signature: API lyd_find_path(const struct lyd_node *ctx_node, const char *path,
      ly_bool output, struct lyd_node **match)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - instance
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4287
      start: 4267
    functionDepth: 0
    functionLinenumber: 4267
    functionLinenumberEnd: 4287
    functionName: lyd_list_pos
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lyd_list_pos(const struct lyd_node *instance)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4306
      start: 4289
    functionDepth: 0
    functionLinenumber: 4289
    functionLinenumberEnd: 4306
    functionName: lyd_first_sibling
    functionSourceFile: /src/libyang/src/tree_data.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lyd_first_sibling(const struct lyd_node *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - c
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: move_input
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: move_input(c, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: ign_xmlws
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ign_xmlws(c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_skip
      Src: /src/libyang/src/xml.c:83,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:90,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 4
    argNames:
    - xmlctx
    - delim
    - delim_len
    - sectname
    argTypes:
    - struct lyxml_ctx*
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 92
    functionName: skip_section
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    - ly_in_skip
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR skip_section(struct lyxml_ctx *xmlctx, const char *delim, size_t
      delim_len, const char *sectname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:118,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/xml.c:118,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:119,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:121,1
    - Dst: is_xmlqnamestartchar
      Src: /src/libyang/src/xml.c:121,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:122,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/xml.c:128,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/xml.c:130,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:131,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:131,1
    - Dst: is_xmlqnamechar
      Src: /src/libyang/src/xml.c:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - xmlctx
    - start
    - end
    argTypes:
    - struct lyxml_ctx*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 137
    functionName: lyxml_parse_identifier
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - ly_in_skip
    - LY_CHECK_ERR_RET
    - is_xmlqnamestartchar
    - ly_getutf8
    - LOGVAL
    - is_xmlqnamechar
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_parse_identifier(struct lyxml_ctx *xmlctx, const char
      **start, const char **end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/xml.c:162,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:163,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xml.c:163,1
    - Dst: strndup
      Src: /src/libyang/src/xml.c:172,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:173,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xml.c:173,1
    - Dst: free
      Src: /src/libyang/src/xml.c:173,1
    - Dst: free
      Src: /src/libyang/src/xml.c:173,1
    - Dst: ly_set_add
      Src: /src/libyang/src/xml.c:178,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:179,1
    - Dst: free
      Src: /src/libyang/src/xml.c:179,1
    - Dst: free
      Src: /src/libyang/src/xml.c:179,1
    - Dst: free
      Src: /src/libyang/src/xml.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - xmlctx
    - prefix
    - prefix_len
    - uri
    argTypes:
    - struct lyxml_ctx*
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 182
    functionName: lyxml_ns_add
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ERR_RET
    - malloc
    - free
    - ly_set_add
    - strndup
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_ns_add(struct lyxml_ctx *xmlctx, const char *prefix, size_t
      prefix_len, char *uri)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/xml.c:198,1
    - Dst: free
      Src: /src/libyang/src/xml.c:199,1
    - Dst: free
      Src: /src/libyang/src/xml.c:200,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/xml.c:206,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - xmlctx
    argTypes:
    - struct lyxml_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 208
    functionName: lyxml_ns_rm
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 2
    functionsReached:
    - ly_set_erase
    - free
    linkageType: ''
    returnType: void
    signature: void lyxml_ns_rm(struct lyxml_ctx *xmlctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_strncmp
      Src: /src/libyang/src/xml.c:218,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - ns_set
    - prefix
    - prefix_len
    argTypes:
    - struct ly_set*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 228
    functionName: lyxml_ns_get
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 1
    functionsReached:
    - ly_strncmp
    linkageType: ''
    returnType: struct lyxml_ns
    signature: 'struct lyxml_ns *

      lyxml_ns_get(const struct ly_set *ns_set, const char *prefix, size_t prefix_len)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:245,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:250,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:255,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/xml.c:255,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:259,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:262,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:264,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:266,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:269,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:270,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:270,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:272,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:272,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:275,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:276,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:276,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:278,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:281,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:284,1
    - Dst: skip_section
      Src: /src/libyang/src/xml.c:284,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:286,1
    - Dst: skip_section
      Src: /src/libyang/src/xml.c:286,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 1
    argNames:
    - xmlctx
    argTypes:
    - struct lyxml_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 294
    functionName: lyxml_skip_until_end_or_after_otag
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - ign_xmlws
    - move_input
    - LY_CHECK_RET
    - LY_VCODE_INSTREXP_len
    - LOGVAL
    - strncmp
    - ly_strlen_const
    - skip_section
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_skip_until_end_or_after_otag(struct lyxml_ctx *xmlctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:314,1
    - Dst: lyxml_parse_identifier
      Src: /src/libyang/src/xml.c:314,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:320,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:321,1
    - Dst: lyxml_parse_identifier
      Src: /src/libyang/src/xml.c:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - xmlctx
    - prefix
    - prefix_len
    - name
    - name_len
    argTypes:
    - struct lyxml_ctx*
    - char**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 306
    functionDepth: 2
    functionLinenumber: 306
    functionLinenumberEnd: 327
    functionName: lyxml_parse_qname
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxml_parse_identifier
    - move_input
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_parse_qname(struct lyxml_ctx *xmlctx, const char **prefix,
      size_t *prefix_len, const char **name, size_t *name_len)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xml.c:357,1
    - Dst: malloc
      Src: /src/libyang/src/xml.c:371,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:372,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xml.c:372,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xml.c:380,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:381,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xml.c:381,1
    - Dst: memcpy
      Src: /src/libyang/src/xml.c:387,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:396,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:396,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:398,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:399,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:399,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:401,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:402,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:402,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:404,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:405,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:405,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:407,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:408,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:408,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/xml.c:410,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:412,1
    - Dst: isdigit
      Src: /src/libyang/src/xml.c:421,1
    - Dst: isdigit
      Src: /src/libyang/src/xml.c:422,1
    - Dst: isxdigit
      Src: /src/libyang/src/xml.c:425,1
    - Dst: isxdigit
      Src: /src/libyang/src/xml.c:426,1
    - Dst: isdigit
      Src: /src/libyang/src/xml.c:427,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:437,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xml.c:442,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:443,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/xml.c:444,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xml.c:447,1
    - Dst: ly_pututf8
      Src: /src/libyang/src/xml.c:447,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:448,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xml.c:458,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:459,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xml.c:459,1
    - Dst: memcpy
      Src: /src/libyang/src/xml.c:461,1
    - Dst: is_xmlws
      Src: /src/libyang/src/xml.c:470,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/xml.c:477,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xml.c:482,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/xml.c:482,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:483,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:489,1
    - Dst: free
      Src: /src/libyang/src/xml.c:492,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 125
    argCount: 6
    argNames:
    - xmlctx
    - endchar
    - value
    - length
    - ws_only
    - dynamic
    argTypes:
    - struct lyxml_ctx*
    - char
    - char**
    - size_t*
    - ly_bool*
    - ly_bool*
    assertStmts:
    - condition: (xmlctx)
      pos:
        line_end: 356
        line_start: 356
        source_file: /src/libyang/src/xml.c
    constantsTouched: []
    func_position:
      end: 511
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 511
    functionName: lyxml_parse_value
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - isxdigit
    - isdigit
    - LY_CHECK_ERR_GOTO
    - LY_CHECK_ERR_RET
    - memcpy
    - malloc
    - ly_getutf8
    - ly_pututf8
    - free
    - LY_VCODE_INSTREXP_len
    - strncmp
    - LOGVAL
    - ly_strlen_const
    - LY_IN_NEW_LINE
    - ly_realloc
    - is_xmlws
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_parse_value(struct lyxml_ctx *xmlctx, char endchar, char
      **value, size_t *length, ly_bool *ws_only, ly_bool *dynamic)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:532,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:539,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:539,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:540,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/xml.c:547,1
    - Dst: lyxml_ns_rm
      Src: /src/libyang/src/xml.c:550,1
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:553,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:557,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:562,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/xml.c:562,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/xml.c:568,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 6
    argNames:
    - xmlctx
    - prefix
    - prefix_len
    - name
    - name_len
    - empty
    argTypes:
    - struct lyxml_ctx*
    - char*
    - size_t
    - char*
    - size_t
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 524
    functionDepth: 2
    functionLinenumber: 524
    functionLinenumberEnd: 571
    functionName: lyxml_close_element
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - lyxml_ns_rm
    - ign_xmlws
    - ly_in_skip
    - move_input
    - LY_VCODE_INSTREXP_len
    - LOGVAL
    - strncmp
    - ly_set_rm_index
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyxml_close_element(struct lyxml_ctx *xmlctx, const char *prefix,
      size_t prefix_len, const char *name, size_t name_len,\n        ly_bool empty)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/xml.c:595,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:596,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xml.c:596,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:601,1
    - Dst: ly_set_add
      Src: /src/libyang/src/xml.c:601,1
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:604,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/xml.c:609,1
    - Dst: is_xmlqnamestartchar
      Src: /src/libyang/src/xml.c:610,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:616,1
    - Dst: lyxml_parse_qname
      Src: /src/libyang/src/xml.c:616,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:619,1
    - Dst: lyxml_next_attr_content
      Src: /src/libyang/src/xml.c:619,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/xml.c:622,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/xml.c:622,1
    - Dst: lyxml_ns_add
      Src: /src/libyang/src/xml.c:623,1
    - Dst: strndup
      Src: /src/libyang/src/xml.c:624,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:626,1
    - Dst: free
      Src: /src/libyang/src/xml.c:632,1
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:636,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 5
    argNames:
    - xmlctx
    - prefix
    - prefix_len
    - name
    - name_len
    argTypes:
    - struct lyxml_ctx*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 583
    functionDepth: 3
    functionLinenumber: 583
    functionLinenumberEnd: 649
    functionName: lyxml_open_element
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - ign_xmlws
    - ly_strncmp
    - LY_CHECK_ERR_RET
    - malloc
    - is_xmlqnamestartchar
    - ly_getutf8
    - free
    - lyxml_parse_qname
    - LY_CHECK_RET
    - ly_set_add
    - lyxml_next_attr_content
    - LY_CHECK_GOTO
    - lyxml_ns_add
    - strndup
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_open_element(struct lyxml_ctx *xmlctx, const char *prefix,
      size_t prefix_len, const char *name, size_t name_len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:667,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:671,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:674,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/xml.c:674,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:678,1
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:681,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:685,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:688,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/xml.c:688,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:695,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:698,1
    - Dst: lyxml_parse_value
      Src: /src/libyang/src/xml.c:698,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/xml.c:701,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 5
    argNames:
    - xmlctx
    - value
    - value_len
    - ws_only
    - dynamic
    argTypes:
    - struct lyxml_ctx*
    - char**
    - size_t*
    - ly_bool*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 661
    functionDepth: 2
    functionLinenumber: 661
    functionLinenumberEnd: 704
    functionName: lyxml_next_attr_content
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 1
    functionsReached:
    - ign_xmlws
    - ly_in_skip
    - lyxml_parse_value
    - move_input
    - LY_CHECK_RET
    - LY_VCODE_INSTREXP_len
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_next_attr_content(struct lyxml_ctx *xmlctx, const char
      **value, size_t *value_len, ly_bool *ws_only, ly_bool *dynamic)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:726,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:732,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/xml.c:734,1
    - Dst: is_xmlqnamestartchar
      Src: /src/libyang/src/xml.c:734,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:735,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/xml.c:735,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:741,1
    - Dst: lyxml_parse_qname
      Src: /src/libyang/src/xml.c:741,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/xml.c:743,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/xml.c:743,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:749,1
    - Dst: lyxml_next_attr_content
      Src: /src/libyang/src/xml.c:749,1
    - Dst: free
      Src: /src/libyang/src/xml.c:751,1
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:755,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 5
    argNames:
    - xmlctx
    - prefix
    - prefix_len
    - name
    - name_len
    argTypes:
    - struct lyxml_ctx*
    - char**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 716
    functionDepth: 3
    functionLinenumber: 716
    functionLinenumberEnd: 759
    functionName: lyxml_next_attribute
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - ign_xmlws
    - ly_strncmp
    - is_xmlqnamestartchar
    - ly_getutf8
    - free
    - lyxml_parse_qname
    - LY_CHECK_RET
    - LY_VCODE_INSTREXP_len
    - LOGVAL
    - lyxml_next_attr_content
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_next_attribute(struct lyxml_ctx *xmlctx, const char **prefix,
      size_t *prefix_len, const char **name, size_t *name_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:777,1
    - Dst: lyxml_skip_until_end_or_after_otag
      Src: /src/libyang/src/xml.c:777,1
    - Dst: move_input
      Src: /src/libyang/src/xml.c:786,1
    - Dst: ign_xmlws
      Src: /src/libyang/src/xml.c:793,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:796,1
    - Dst: lyxml_parse_qname
      Src: /src/libyang/src/xml.c:796,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 6
    argNames:
    - xmlctx
    - prefix
    - prefix_len
    - name
    - name_len
    - closing
    argTypes:
    - struct lyxml_ctx*
    - char**
    - size_t*
    - char**
    - size_t*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 772
    functionDepth: 3
    functionLinenumber: 772
    functionLinenumberEnd: 799
    functionName: lyxml_next_element
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - ign_xmlws
    - lyxml_parse_qname
    - move_input
    - LY_CHECK_RET
    - lyxml_skip_until_end_or_after_otag
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyxml_next_element(struct lyxml_ctx *xmlctx, const char **prefix,
      size_t *prefix_len, const char **name, size_t *name_len,\n        ly_bool *closing)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/xml.c:809,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xml.c:810,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xml.c:810,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/src/xml.c:814,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:817,1
    - Dst: lyxml_next_element
      Src: /src/libyang/src/xml.c:817,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:824,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:829,1
    - Dst: lyxml_open_element
      Src: /src/libyang/src/xml.c:829,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/src/xml.c:837,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - in
    - xmlctx_p
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - struct lyxml_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 801
    functionDepth: 4
    functionLinenumber: 801
    functionLinenumberEnd: 842
    functionName: lyxml_ctx_new
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 14
    functionsReached:
    - lyxml_next_element
    - LY_CHECK_ERR_RET
    - lyxml_open_element
    - LOGVAL
    - LY_CHECK_GOTO
    - LOG_LOCINIT
    - lyxml_ctx_free
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_ctx_new(const struct ly_ctx *ctx, struct ly_in *in, struct
      lyxml_ctx **xmlctx_p)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/xml.c:853,1
    - Dst: assert
      Src: /src/libyang/src/xml.c:864,1
    - Dst: lyxml_close_element
      Src: /src/libyang/src/xml.c:868,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:869,1
    - Dst: lyxml_next_element
      Src: /src/libyang/src/xml.c:880,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:881,1
    - Dst: lyxml_close_element
      Src: /src/libyang/src/xml.c:888,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:889,1
    - Dst: lyxml_open_element
      Src: /src/libyang/src/xml.c:895,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:896,1
    - Dst: lyxml_next_attribute
      Src: /src/libyang/src/xml.c:909,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:910,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/xml.c:914,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xml.c:916,1
    - Dst: lyxml_parse_value
      Src: /src/libyang/src/xml.c:922,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:924,1
    - Dst: free
      Src: /src/libyang/src/xml.c:929,1
    - Dst: lyxml_next_attr_content
      Src: /src/libyang/src/xml.c:957,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:958,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 79
    argCount: 1
    argNames:
    - xmlctx
    argTypes:
    - struct lyxml_ctx*
    assertStmts:
    - condition: (xmlctx->elements.count)
      pos:
        line_end: 863
        line_start: 863
        source_file: /src/libyang/src/xml.c
    constantsTouched: []
    func_position:
      end: 976
      start: 844
    functionDepth: 4
    functionLinenumber: 844
    functionLinenumberEnd: 976
    functionName: lyxml_ctx_next
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 8
    functionsReached:
    - assert
    - lyxml_next_element
    - lyxml_next_attribute
    - ly_in_skip
    - lyxml_open_element
    - lyxml_parse_value
    - free
    - LOGVAL
    - lyxml_next_attr_content
    - LY_CHECK_GOTO
    - lyxml_close_element
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_ctx_next(struct lyxml_ctx *xmlctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lyxml_next_element
      Src: /src/libyang/src/xml.c:997,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:998,1
    - Dst: lyxml_next_attribute
      Src: /src/libyang/src/xml.c:1011,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xml.c:1012,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 2
    argNames:
    - xmlctx
    - next
    argTypes:
    - struct lyxml_ctx*
    - enum LYXML_PARSER_STATUS*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 978
    functionDepth: 4
    functionLinenumber: 978
    functionLinenumberEnd: 1031
    functionName: lyxml_ctx_peek
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - lyxml_next_element
    - lyxml_next_attribute
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_ctx_peek(struct lyxml_ctx *xmlctx, enum LYXML_PARSER_STATUS
      *next)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/xml.c:1042,1
    - Dst: free
      Src: /src/libyang/src/xml.c:1045,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/xml.c:1047,1
    - Dst: free
      Src: /src/libyang/src/xml.c:1050,1
    - Dst: free
      Src: /src/libyang/src/xml.c:1051,1
    - Dst: free
      Src: /src/libyang/src/xml.c:1052,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/xml.c:1054,1
    - Dst: free
      Src: /src/libyang/src/xml.c:1055,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - xmlctx
    argTypes:
    - struct lyxml_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1056
    functionName: lyxml_ctx_free
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 11
    functionsReached:
    - ly_set_erase
    - LOG_LOCBACK
    - free
    linkageType: ''
    returnType: void
    signature: void lyxml_ctx_free(struct lyxml_ctx *xmlctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/xml.c:1070,1
    - Dst: ly_print_
      Src: /src/libyang/src/xml.c:1073,1
    - Dst: ly_print_
      Src: /src/libyang/src/xml.c:1077,1
    - Dst: ly_print_
      Src: /src/libyang/src/xml.c:1081,1
    - Dst: ly_write_
      Src: /src/libyang/src/xml.c:1086,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xml.c:1089,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - out
    - text
    - attribute
    argTypes:
    - struct ly_out*
    - char*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1058
    functionDepth: 1
    functionLinenumber: 1058
    functionLinenumberEnd: 1093
    functionName: lyxml_dump_text
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_print_
    - ly_write_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxml_dump_text(struct ly_out *out, const char *text, ly_bool
      attribute)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ly_value_prefix_next
      Src: /src/libyang/src/xml.c:1121,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/src/xml.c:1124,1
    - Dst: strncmp
      Src: /src/libyang/src/xml.c:1138,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/xml.c:1148,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/xml.c:1151,1
    - Dst: strcmp
      Src: /src/libyang/src/xml.c:1167,1
    - Dst: strcmp
      Src: /src/libyang/src/xml.c:1177,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 70
    argCount: 6
    argNames:
    - ctx1
    - value1
    - val_prefix_data1
    - ctx2
    - value2
    - val_prefix_data2
    argTypes:
    - struct ly_ctx*
    - char*
    - void*
    - struct ly_ctx*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1190
    functionName: lyxml_value_compare
    functionSourceFile: /src/libyang/src/xml.c
    functionUses: 1
    functionsReached:
    - ly_resolve_prefix
    - strncmp
    - strcmp
    - ly_value_prefix_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyxml_value_compare(const struct ly_ctx *ctx1, const char *value1,
      void *val_prefix_data1,\n        const struct ly_ctx *ctx2, const char *value2,
      void *val_prefix_data2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - BUF
    - ','
    - TARGET
    - ','
    - WORD
    - ','
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: INSERT_WORD_RET
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSERT_WORD_RET(CTX, BUF, TARGET, WORD, LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - COUNT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: MOVE_INPUT
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MOVE_INPUT(CTX, COUNT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - CTX
    - ','
    - KW
    - ','
    - WORD
    - ','
    - WORD_LEN
    - ','
    - ERR
    - ','
    - SUC_CMD
    - ','
    - ERR_CMD
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 88
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: YANG_READ_SUBSTMT_FOR(CTX, KW, WORD, WORD_LEN, ERR, SUC_CMD, ERR_CMD)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_realloc
      Src: /src/libyang/src/parser_yang.c:117,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:118,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:118,1
    - Dst: ly_in_read
      Src: /src/libyang/src/parser_yang.c:121,1
    - Dst: ly_in_read
      Src: /src/libyang/src/parser_yang.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 6
    argNames:
    - ctx
    - in
    - len
    - buf
    - buf_len
    - buf_used
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - size_t
    - char**
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 129
    functionName: buf_add_char
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 2
    functionsReached:
    - LOGMEM
    - ly_realloc
    - ly_in_read
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR buf_add_char(struct ly_ctx *ctx, struct ly_in *in, size_t len,
      char **buf, size_t *buf_len, size_t *buf_used)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yang.c:157,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:160,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/parser_yang.c:160,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:161,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:165,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:174,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/src/parser_yang.c:174,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:177,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/src/parser_yang.c:177,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:181,1
    - Dst: lysp_check_stringchar
      Src: /src/libyang/src/parser_yang.c:181,1
    - Dst: buf_add_char
      Src: /src/libyang/src/parser_yang.c:187,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:187,1
    - Dst: malloc
      Src: /src/libyang/src/parser_yang.c:196,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:197,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:197,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:197,1
    - Dst: memcpy
      Src: /src/libyang/src/parser_yang.c:199,1
    - Dst: buf_add_char
      Src: /src/libyang/src/parser_yang.c:203,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:203,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_yang.c:216,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 8
    argNames:
    - ctx
    - arg
    - word_p
    - word_len
    - word_b
    - buf_len
    - need_buf
    - prefix
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum yang_arg
    - char**
    - size_t*
    - char**
    - size_t*
    - ly_bool
    - uint8_t*
    assertStmts:
    - condition: (!need_buf || (need_buf && word_b))
      pos:
        line_end: 156
        line_start: 156
        source_file: /src/libyang/src/parser_yang.c
    constantsTouched: []
    func_position:
      end: 220
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 220
    functionName: buf_store_char
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - ly_in_skip
    - LY_CHECK_ERR_RET
    - malloc
    - ly_getutf8
    - lysp_check_identifierchar
    - buf_add_char
    - LY_CHECK_RET
    - LOGMEM
    - LY_IN_NEW_LINE
    - LOGVAL_PARSER
    - lysp_check_stringchar
    - memcpy
    - PARSER_CTX
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR buf_store_char(struct lys_yang_parser_ctx *ctx, enum yang_arg
      arg, char **word_p, size_t *word_len,\n        char **word_b, size_t *buf_len,
      ly_bool need_buf, uint8_t *prefix)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:245,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:252,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:260,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/parser_yang.c:266,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:266,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:278,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 2
    argNames:
    - ctx
    - comment
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 288
    functionName: skip_comment
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - LOGVAL_PARSER
    - LY_IN_NEW_LINE
    - LOGINT_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR skip_comment(struct lys_yang_parser_ctx *ctx, uint8_t comment)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yang.c:328,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:331,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:340,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:344,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:344,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:353,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:376,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:379,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:379,1
    - Dst: assert
      Src: /src/libyang/src/parser_yang.c:385,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:392,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:392,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:399,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:399,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:407,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:424,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:424,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:435,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:435,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:457,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:463,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:463,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:477,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:480,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:483,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:493,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:499,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:502,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:505,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:519,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:522,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:532,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 166
    argCount: 6
    argNames:
    - ctx
    - arg
    - word_p
    - word_b
    - word_len
    - buf_len
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum yang_arg
    - char**
    - char**
    - size_t*
    - size_t*
    assertStmts:
    - condition: (need_buf)
      pos:
        line_end: 384
        line_start: 384
        source_file: /src/libyang/src/parser_yang.c
    - condition: (ctx->in->current[0] == '\'')
      pos:
        line_end: 327
        line_start: 327
        source_file: /src/libyang/src/parser_yang.c
    constantsTouched: []
    func_position:
      end: 543
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 543
    functionName: read_qstring
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - buf_store_char
    - LY_IN_NEW_LINE
    - MOVE_INPUT
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR read_qstring(struct lys_yang_parser_ctx *ctx, enum yang_arg
      arg, char **word_p, char **word_b,\n        size_t *word_len, size_t *buf_len)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:579,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:587,1
    - Dst: read_qstring
      Src: /src/libyang/src/parser_yang.c:587,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:592,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:593,1
    - Dst: skip_comment
      Src: /src/libyang/src/parser_yang.c:593,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:596,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:597,1
    - Dst: skip_comment
      Src: /src/libyang/src/parser_yang.c:597,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:600,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:600,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:608,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:622,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:626,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:633,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:634,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:646,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:651,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:656,1
    - Dst: buf_store_char
      Src: /src/libyang/src/parser_yang.c:656,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:662,1
    - Dst: ly_realloc
      Src: /src/libyang/src/parser_yang.c:669,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:670,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:670,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:670,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:678,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 102
    argCount: 6
    argNames:
    - ctx
    - arg
    - flags
    - word_p
    - word_b
    - word_len
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum yang_arg
    - uint16_t*
    - char**
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 558
    functionDepth: 4
    functionLinenumber: 558
    functionLinenumberEnd: 681
    functionName: get_argument
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_RET
    - read_qstring
    - free
    - LOGMEM
    - LOGVAL_PARSER
    - buf_store_char
    - LY_IN_NEW_LINE
    - MOVE_INPUT
    - LY_CHECK_GOTO
    - PARSER_CTX
    - ly_realloc
    - skip_comment
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR get_argument(struct lys_yang_parser_ctx *ctx, enum yang_arg
      arg, uint16_t *flags, char **word_p,\n        char **word_b, size_t *word_len)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:711,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:712,1
    - Dst: skip_comment
      Src: /src/libyang/src/parser_yang.c:712,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:715,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:716,1
    - Dst: skip_comment
      Src: /src/libyang/src/parser_yang.c:716,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:719,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:725,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_yang.c:747,1
    - Dst: lysp_match_kw
      Src: /src/libyang/src/parser_yang.c:752,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:763,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:766,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:778,1
    - Dst: MOVE_INPUT
      Src: /src/libyang/src/parser_yang.c:787,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:788,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:802,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/parser_yang.c:802,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:803,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:806,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/src/parser_yang.c:806,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:810,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:816,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 100
    argCount: 4
    argNames:
    - ctx
    - kw
    - word_p
    - word_len
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 693
    functionDepth: 2
    functionLinenumber: 693
    functionLinenumberEnd: 830
    functionName: get_keyword
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - ly_in_skip
    - LY_CHECK_ERR_RET
    - ly_getutf8
    - lysp_match_kw
    - lysp_check_identifierchar
    - LY_CHECK_RET
    - LY_IN_NEW_LINE
    - LOGVAL_PARSER
    - MOVE_INPUT
    - skip_comment
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR get_keyword(struct lys_yang_parser_ctx *ctx, enum ly_stmt *kw,
      char **word_p, size_t *word_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:852,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:853,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:853,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:864,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yang.c:864,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:864,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:867,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:867,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:869,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:877,1
    - Dst: parse_ext_substmt
      Src: /src/libyang/src/parser_yang.c:877,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 5
    argNames:
    - ctx
    - kw
    - word
    - word_len
    - child
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - char*
    - size_t
    - struct lysp_stmt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 843
    functionDepth: 5
    functionLinenumber: 843
    functionLinenumberEnd: 880
    functionName: parse_ext_substmt
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - get_argument
    - LY_CHECK_ERR_RET
    - INSERT_WORD_RET
    - parse_ext_substmt
    - LY_CHECK_RET
    - lydict_insert
    - PARSER_CTX
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_ext_substmt(struct lys_yang_parser_ctx *ctx, enum ly_stmt
      kw, char *word, size_t word_len,\n        struct lysp_stmt **child)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:877,1
    - Dst: parse_ext_substmt
      Src: /src/libyang/src/parser_yang.c:877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 876
    functionDepth: 6
    functionLinenumber: 876
    functionLinenumberEnd: 878
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - parse_ext_substmt
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, child_kw, word, word_len, ret, return
      LY_SUCCESS, return ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:904,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:904,1
    - Dst: ly_strnchr
      Src: /src/libyang/src/parser_yang.c:906,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:907,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:912,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yang.c:912,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:912,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:915,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:915,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:917,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:928,1
    - Dst: parse_ext_substmt
      Src: /src/libyang/src/parser_yang.c:928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 6
    argNames:
    - ctx
    - ext_name
    - ext_name_len
    - insubstmt
    - insubstmt_index
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - char*
    - size_t
    - enum ly_stmt
    - LY_ARRAY_COUNT_TYPE
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 894
    functionDepth: 6
    functionLinenumber: 894
    functionLinenumberEnd: 931
    functionName: parse_ext
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - INSERT_WORD_RET
    - parse_ext_substmt
    - ly_strnchr
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - lydict_insert
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_ext(struct lys_yang_parser_ctx *ctx, const char *ext_name,
      size_t ext_name_len, enum ly_stmt insubstmt,\n        LY_ARRAY_COUNT_TYPE insubstmt_index,
      struct lysp_ext_instance **exts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:928,1
    - Dst: parse_ext_substmt
      Src: /src/libyang/src/parser_yang.c:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 927
    functionDepth: 6
    functionLinenumber: 927
    functionLinenumberEnd: 929
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - parse_ext_substmt
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:956,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:956,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:961,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:961,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:964,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:969,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:969,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:972,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:972,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:972,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 6
    argNames:
    - ctx
    - substmt
    - substmt_index
    - value
    - arg
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - uint32_t
    - char**
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 946
    functionDepth: 7
    functionLinenumber: 946
    functionLinenumberEnd: 977
    functionName: parse_text_field
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_text_field(struct lys_yang_parser_ctx *ctx, enum ly_stmt
      substmt, uint32_t substmt_index,\n        const char **value, enum yang_arg
      arg, struct lysp_ext_instance **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:969,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:969,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:972,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:972,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:972,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 966
    functionDepth: 7
    functionLinenumber: 966
    functionLinenumberEnd: 975
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:997,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1002,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1002,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1004,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1006,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1006,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1009,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1010,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1013,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1018,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1018,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1021,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1021,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - version
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint8_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 988
    functionDepth: 7
    functionLinenumber: 988
    functionLinenumberEnd: 1026
    functionName: parse_yangversion
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - free
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_yangversion(struct lys_yang_parser_ctx *ctx, uint8_t *version,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1018,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1018,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1021,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1021,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1015
    functionDepth: 7
    functionLinenumber: 1015
    functionLinenumberEnd: 1024
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1046,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1051,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1051,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/parser_yang.c:1052,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1053,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1055,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1058,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1063,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1063,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1066,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1066,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1069,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1069,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1073,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1077,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - prefix
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - char**
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1037
    functionDepth: 8
    functionLinenumber: 1037
    functionLinenumberEnd: 1081
    functionName: parse_belongsto
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - ly_strncmp
    - parse_ext
    - parse_text_field
    - free
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_belongsto(struct lys_yang_parser_ctx *ctx, const char
      **prefix, struct lysp_ext_instance **exts)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1063,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1063,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1066,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1066,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1069,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1069,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1060
    functionDepth: 8
    functionLinenumber: 1060
    functionLinenumberEnd: 1072
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1101,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1106,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1106,1
    - Dst: lysp_check_date
      Src: /src/libyang/src/parser_yang.c:1109,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1110,1
    - Dst: strncpy
      Src: /src/libyang/src/parser_yang.c:1115,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1116,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1121,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1121,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1124,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - rev
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - char*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1092
    functionDepth: 7
    functionLinenumber: 1092
    functionLinenumberEnd: 1129
    functionName: parse_revisiondate
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - lysp_check_date
    - free
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - strncpy
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_revisiondate(struct lys_yang_parser_ctx *ctx, char *rev,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1121,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1121,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1124,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1118
    functionDepth: 7
    functionLinenumber: 1118
    functionLinenumberEnd: 1127
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1149,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1149,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1152,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1152,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1154,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yang.c:1158,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/parser_yang.c:1158,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1158,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1159,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1166,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1167,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1167,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1170,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1171,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1171,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1174,1
    - Dst: parse_revisiondate
      Src: /src/libyang/src/parser_yang.c:1174,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1177,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1177,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1180,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1180,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - module_name
    - includes
    argTypes:
    - struct lys_yang_parser_ctx*
    - char*
    - struct lysp_include**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1140
    functionDepth: 8
    functionLinenumber: 1140
    functionLinenumberEnd: 1185
    functionName: parse_include
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - parse_text_field
    - strcmp
    - ly_ctx_get_module_latest
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_revisiondate
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_include(struct lys_yang_parser_ctx *ctx, const char *module_name,
      struct lysp_include **includes)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1166,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1167,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1167,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1170,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1171,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1171,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1174,1
    - Dst: parse_revisiondate
      Src: /src/libyang/src/parser_yang.c:1174,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1177,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1177,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1180,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1163
    functionDepth: 8
    functionLinenumber: 1163
    functionLinenumberEnd: 1183
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_revisiondate
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1205,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1205,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1208,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1208,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1209,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1214,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1214,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1215,1
    - Dst: lysp_check_prefix
      Src: /src/libyang/src/parser_yang.c:1215,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1218,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1219,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1219,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1222,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1223,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1223,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1226,1
    - Dst: parse_revisiondate
      Src: /src/libyang/src/parser_yang.c:1226,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1229,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1229,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1232,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1232,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1236,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:1239,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1239,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 3
    argNames:
    - ctx
    - module_prefix
    - imports
    argTypes:
    - struct lys_yang_parser_ctx*
    - char*
    - struct lysp_import**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1196
    functionDepth: 8
    functionLinenumber: 1196
    functionLinenumberEnd: 1242
    functionName: parse_import
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - LY_CHECK_ERR_RET
    - parse_text_field
    - lysp_check_prefix
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_revisiondate
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_import(struct lys_yang_parser_ctx *ctx, const char *module_prefix,
      struct lysp_import **imports)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1214,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1214,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1215,1
    - Dst: lysp_check_prefix
      Src: /src/libyang/src/parser_yang.c:1215,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1218,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1219,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1219,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1222,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1223,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1223,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1226,1
    - Dst: parse_revisiondate
      Src: /src/libyang/src/parser_yang.c:1226,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1229,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1229,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1232,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1232,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1211
    functionDepth: 8
    functionLinenumber: 1211
    functionLinenumberEnd: 1235
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - lysp_check_prefix
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_revisiondate
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1261,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1261,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1264,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1264,1
    - Dst: lysp_check_date
      Src: /src/libyang/src/parser_yang.c:1267,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1268,1
    - Dst: strncpy
      Src: /src/libyang/src/parser_yang.c:1272,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1273,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1278,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1278,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1281,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1281,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1284,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1284,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1287,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1287,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - revs
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_revision**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1252
    functionDepth: 8
    functionLinenumber: 1252
    functionLinenumberEnd: 1292
    functionName: parse_revision
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - lysp_check_date
    - parse_text_field
    - free
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - strncpy
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_revision(struct lys_yang_parser_ctx *ctx, struct lysp_revision
      **revs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1278,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1278,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1281,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1281,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1284,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1284,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1287,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1287,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1275
    functionDepth: 8
    functionLinenumber: 1275
    functionLinenumberEnd: 1290
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1316,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1316,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1319,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1319,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1321,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1325,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1325,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_yang.c:1325,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1328,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1328,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - ctx
    - substmt
    - texts
    - arg
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - char***
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1305
    functionDepth: 7
    functionLinenumber: 1305
    functionLinenumberEnd: 1333
    functionName: parse_text_fields
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - LY_ARRAY_COUNT
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_text_fields(struct lys_yang_parser_ctx *ctx, enum ly_stmt
      substmt, const char ***texts, enum yang_arg arg,\n        struct lysp_ext_instance
      **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1325,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1325,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_yang.c:1325,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1328,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1328,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1322
    functionDepth: 7
    functionLinenumber: 1322
    functionLinenumberEnd: 1331
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - LY_ARRAY_COUNT
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1357,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1357,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1360,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1360,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1362,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1367,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1367,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_yang.c:1367,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1370,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1370,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 5
    argNames:
    - ctx
    - substmt
    - qnames
    - arg
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - struct lysp_qname**
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1346
    functionDepth: 7
    functionLinenumber: 1346
    functionLinenumberEnd: 1375
    functionName: parse_qnames
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - LY_ARRAY_COUNT
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_qnames(struct lys_yang_parser_ctx *ctx, enum ly_stmt
      substmt, struct lysp_qname **qnames,\n        enum yang_arg arg, struct lysp_ext_instance
      **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1367,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1367,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_yang.c:1367,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1370,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1370,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1364
    functionDepth: 7
    functionLinenumber: 1364
    functionLinenumberEnd: 1373
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - LY_ARRAY_COUNT
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1395,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1400,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1400,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1402,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1402,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1404,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1404,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1407,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1408,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1411,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1416,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1416,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1419,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1419,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1386
    functionDepth: 7
    functionLinenumber: 1386
    functionLinenumberEnd: 1424
    functionName: parse_config
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - free
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_config(struct lys_yang_parser_ctx *ctx, uint16_t *flags,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1416,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1416,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1419,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1413
    functionDepth: 7
    functionLinenumber: 1413
    functionLinenumberEnd: 1422
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1444,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1449,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1449,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1451,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1451,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1453,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1453,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1456,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1457,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1460,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1465,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1465,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1468,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1468,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1435
    functionDepth: 7
    functionLinenumber: 1435
    functionLinenumberEnd: 1473
    functionName: parse_mandatory
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - free
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_mandatory(struct lys_yang_parser_ctx *ctx, uint16_t *flags,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1465,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1465,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1468,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1462
    functionDepth: 7
    functionLinenumber: 1462
    functionLinenumberEnd: 1471
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1493,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1493,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yang.c:1495,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1495,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1496,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1501,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1501,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1504,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1504,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1507,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1507,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1510,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1510,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1513,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1513,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1516,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1516,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1516,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - restr_kw
    - restr
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - struct lysp_restr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1521
      start: 1484
    functionDepth: 8
    functionLinenumber: 1484
    functionLinenumberEnd: 1521
    functionName: parse_restr
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - CHECK_NONEMPTY
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_restr(struct lys_yang_parser_ctx *ctx, enum ly_stmt restr_kw,
      struct lysp_restr *restr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1501,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1501,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1504,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1504,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1507,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1507,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1510,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1510,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1513,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1513,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1516,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1516,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1516,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1498
    functionDepth: 8
    functionLinenumber: 1498
    functionLinenumberEnd: 1519
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1537,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1537,1
    - Dst: parse_restr
      Src: /src/libyang/src/parser_yang.c:1538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - restr_kw
    - restrs
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - struct lysp_restr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1532
    functionDepth: 9
    functionLinenumber: 1532
    functionLinenumberEnd: 1539
    functionName: parse_restrs
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    - parse_restr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_restrs(struct lys_yang_parser_ctx *ctx, enum ly_stmt restr_kw,
      struct lysp_restr **restrs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1559,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1564,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1564,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1566,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1566,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1568,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1568,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1570,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1570,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1573,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1574,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1577,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1582,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1582,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1585,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1585,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1550
    functionDepth: 7
    functionLinenumber: 1550
    functionLinenumberEnd: 1590
    functionName: parse_status
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - free
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_status(struct lys_yang_parser_ctx *ctx, uint16_t *flags,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1582,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1582,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1585,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1585,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1579
    functionDepth: 7
    functionLinenumber: 1579
    functionLinenumberEnd: 1588
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1610,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:1614,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:1615,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:1615,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1615,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1619,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1619,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yang.c:1620,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1621,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1626,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1626,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1629,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1629,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1632,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1632,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1635,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1635,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - when_p
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_when**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1600
    functionDepth: 8
    functionLinenumber: 1600
    functionLinenumberEnd: 1640
    functionName: parse_when
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - get_argument
    - parse_ext
    - LY_CHECK_ERR_RET
    - INSERT_WORD_RET
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - PARSER_CTX
    - CHECK_NONEMPTY
    - ly_stmt2str
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_when(struct lys_yang_parser_ctx *ctx, struct lysp_when
      **when_p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1626,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1626,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1629,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1629,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1632,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1632,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1635,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1635,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1623
    functionDepth: 8
    functionLinenumber: 1623
    functionLinenumberEnd: 1638
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1661,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1661,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1667,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1667,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1668,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1674,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:1674,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1677,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1677,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1680,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:1680,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1683,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:1683,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1686,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:1686,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1689,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1689,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1692,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:1692,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1695,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:1695,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1698,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1698,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1701,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1701,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1701,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 4
    argNames:
    - ctx
    - any_kw
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1651
    functionDepth: 10
    functionLinenumber: 1651
    functionLinenumberEnd: 1706
    functionName: parse_any
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - get_argument
    - parse_status
    - parse_ext
    - INSERT_WORD_RET
    - parse_mandatory
    - parse_text_field
    - parse_restrs
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_when
    - ly_stmt2str
    - LY_LIST_NEW_RET
    - parse_config
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_any(struct lys_yang_parser_ctx *ctx, enum ly_stmt any_kw,
      struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1674,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:1674,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1677,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1677,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1680,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:1680,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1683,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:1683,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1686,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:1686,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1689,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1689,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1692,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:1692,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1695,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:1695,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1698,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1698,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1701,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1701,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1701,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1671
    functionDepth: 10
    functionLinenumber: 1671
    functionLinenumberEnd: 1704
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_ext
    - parse_mandatory
    - parse_text_field
    - parse_restrs
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_when
    - parse_config
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1731,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1731,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1737,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1737,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1739,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1740,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1740,1
    - Dst: strtol
      Src: /src/libyang/src/parser_yang.c:1746,1
    - Dst: INT64_C
      Src: /src/libyang/src/parser_yang.c:1747,1
    - Dst: INT64_C
      Src: /src/libyang/src/parser_yang.c:1747,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1748,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1748,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yang.c:1752,1
    - Dst: UINT64_C
      Src: /src/libyang/src/parser_yang.c:1753,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1754,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1754,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1760,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1760,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1764,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1764,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1772,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1777,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1777,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1780,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1780,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1780,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1787,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 58
    argCount: 5
    argNames:
    - ctx
    - val_kw
    - value
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - int64_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1719
    functionDepth: 7
    functionLinenumber: 1719
    functionLinenumberEnd: 1789
    functionName: parse_type_enum_value_pos
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - get_argument
    - strtoul
    - parse_ext
    - INT64_C
    - free
    - strtol
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - UINT64_C
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_type_enum_value_pos(struct lys_yang_parser_ctx *ctx,
      enum ly_stmt val_kw, int64_t *value, uint16_t *flags,\n        struct lysp_ext_instance
      **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1777,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1777,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1780,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1780,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1780,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1774
    functionDepth: 7
    functionLinenumber: 1774
    functionLinenumberEnd: 1783
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:1809,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:1809,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1812,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1812,1
    - Dst: lysp_check_enum_name
      Src: /src/libyang/src/parser_yang.c:1814,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:1815,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1815,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:1818,1
    - Dst: CHECK_UNIQUENESS
      Src: /src/libyang/src/parser_yang.c:1819,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1819,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1824,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1824,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1827,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1827,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1828,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:1828,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1831,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1831,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1834,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:1834,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:1837,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1837,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1837,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1838,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1839,1
    - Dst: parse_type_enum_value_pos
      Src: /src/libyang/src/parser_yang.c:1839,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:1842,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1842,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1842,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1843,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1844,1
    - Dst: parse_type_enum_value_pos
      Src: /src/libyang/src/parser_yang.c:1844,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1847,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1847,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1850,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1850,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1850,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - enum_kw
    - enums
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - struct lysp_type_enum**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1800
    functionDepth: 8
    functionLinenumber: 1800
    functionLinenumberEnd: 1855
    functionName: parse_type_enum
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_status
    - parse_ext
    - LY_CHECK_ERR_RET
    - INSERT_WORD_RET
    - parse_text_field
    - parse_type_enum_value_pos
    - free
    - PARSER_CHECK_STMTVER2_RET
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - PARSER_CTX
    - ly_stmt2str
    - CHECK_UNIQUENESS
    - LY_ARRAY_NEW_RET
    - lysp_check_enum_name
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_type_enum(struct lys_yang_parser_ctx *ctx, enum ly_stmt
      enum_kw, struct lysp_type_enum **enums)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1824,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1824,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:1827,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1827,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1828,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:1828,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1831,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:1831,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1834,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:1834,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:1837,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1837,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1837,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1838,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1839,1
    - Dst: parse_type_enum_value_pos
      Src: /src/libyang/src/parser_yang.c:1839,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:1842,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1842,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1842,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1843,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1844,1
    - Dst: parse_type_enum_value_pos
      Src: /src/libyang/src/parser_yang.c:1844,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1847,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1847,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1850,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1850,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1850,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1821
    functionDepth: 8
    functionLinenumber: 1821
    functionLinenumberEnd: 1853
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_ext
    - LY_CHECK_ERR_RET
    - parse_text_field
    - parse_type_enum_value_pos
    - parse_qnames
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1876,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1881,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1881,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_yang.c:1883,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1884,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1885,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yang.c:1890,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1893,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1894,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1898,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1899,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1903,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1908,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1908,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1911,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1911,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - fracdig
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint8_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1866
    functionDepth: 7
    functionLinenumber: 1866
    functionLinenumberEnd: 1916
    functionName: parse_type_fracdigits
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - isdigit
    - get_argument
    - strtoul
    - parse_ext
    - free
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_type_fracdigits(struct lys_yang_parser_ctx *ctx, uint8_t
      *fracdig, struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1908,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1908,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1911,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1905
    functionDepth: 7
    functionLinenumber: 1905
    functionLinenumberEnd: 1914
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1938,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1944,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1944,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1946,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1946,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1948,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1948,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1949,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1950,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1953,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1958,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1958,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1961,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1961,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - reqinst
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint8_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1966
      start: 1928
    functionDepth: 7
    functionLinenumber: 1928
    functionLinenumberEnd: 1966
    functionName: parse_type_reqinstance
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - free
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_type_reqinstance(struct lys_yang_parser_ctx *ctx, uint8_t
      *reqinst, uint16_t *flags,\n        struct lysp_ext_instance **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1958,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:1958,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1961,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:1961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1955
    functionDepth: 7
    functionLinenumber: 1955
    functionLinenumberEnd: 1964
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1986,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:1991,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:1991,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:1993,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:1993,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:1994,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1995,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:1998,1
    - Dst: malloc
      Src: /src/libyang/src/parser_yang.c:2001,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yang.c:2001,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2002,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:2002,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2002,1
    - Dst: strcpy
      Src: /src/libyang/src/parser_yang.c:2003,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yang.c:2004,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2004,1
    - Dst: assert
      Src: /src/libyang/src/parser_yang.c:2006,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2008,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_yang.c:2008,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2008,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2013,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2013,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2016,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2016,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - pat
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - char**
    - struct lysp_ext_instance**
    assertStmts:
    - condition: (buf[0] == LYSP_RESTR_PATTERN_ACK)
      pos:
        line_end: 2005
        line_start: 2005
        source_file: /src/libyang/src/parser_yang.c
    constantsTouched: []
    func_position:
      end: 2021
      start: 1977
    functionDepth: 7
    functionLinenumber: 1977
    functionLinenumberEnd: 2021
    functionName: parse_type_pattern_modifier
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - strlen
    - parse_ext
    - LY_CHECK_ERR_RET
    - strcpy
    - malloc
    - free
    - lydict_insert_zc
    - LY_CHECK_RET
    - lydict_remove
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - PARSER_CTX
    - ly_stmt2str
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_type_pattern_modifier(struct lys_yang_parser_ctx *ctx,
      const char **pat, struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2013,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2013,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2016,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2016,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2019
      start: 2010
    functionDepth: 7
    functionLinenumber: 2010
    functionLinenumberEnd: 2019
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2040,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2040,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2043,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2043,1
    - Dst: ly_realloc
      Src: /src/libyang/src/parser_yang.c:2047,1
    - Dst: malloc
      Src: /src/libyang/src/parser_yang.c:2050,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2052,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:2052,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2052,1
    - Dst: memmove
      Src: /src/libyang/src/parser_yang.c:2053,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2056,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_yang.c:2056,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2056,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2062,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2062,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2065,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2065,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2068,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2068,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2071,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2071,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2074,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2075,1
    - Dst: parse_type_pattern_modifier
      Src: /src/libyang/src/parser_yang.c:2075,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2078,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2078,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2081,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2081,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - patterns
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_restr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2086
      start: 2031
    functionDepth: 8
    functionLinenumber: 2031
    functionLinenumberEnd: 2086
    functionName: parse_type_pattern
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - LY_CHECK_ERR_RET
    - malloc
    - parse_text_field
    - PARSER_CHECK_STMTVER2_RET
    - memmove
    - LY_CHECK_RET
    - LOGMEM
    - lydict_insert_zc
    - LOGVAL_PARSER
    - ly_stmt2str
    - ly_realloc
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    - parse_type_pattern_modifier
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_type_pattern(struct lys_yang_parser_ctx *ctx, struct lysp_restr
      **patterns)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2062,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2062,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2065,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2065,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2068,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2068,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2071,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2071,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2074,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2075,1
    - Dst: parse_type_pattern_modifier
      Src: /src/libyang/src/parser_yang.c:2075,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2078,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2078,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2081,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2081,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2059
    functionDepth: 8
    functionLinenumber: 2059
    functionLinenumberEnd: 2084
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_type_pattern_modifier
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2107,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2112,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2112,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2113,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2121,1
    - Dst: parse_text_fields
      Src: /src/libyang/src/parser_yang.c:2121,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2125,1
    - Dst: parse_type_enum
      Src: /src/libyang/src/parser_yang.c:2125,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2129,1
    - Dst: parse_type_enum
      Src: /src/libyang/src/parser_yang.c:2129,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2133,1
    - Dst: parse_type_fracdigits
      Src: /src/libyang/src/parser_yang.c:2133,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2138,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2138,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:2141,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2142,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:2142,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2142,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2144,1
    - Dst: parse_restr
      Src: /src/libyang/src/parser_yang.c:2144,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2149,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2149,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2158,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2158,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yang.c:2159,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2159,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/parser_yang.c:2160,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2160,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yang.c:2163,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2163,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2164,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2168,1
    - Dst: parse_type_pattern
      Src: /src/libyang/src/parser_yang.c:2168,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2173,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2173,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:2176,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2177,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:2177,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2177,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2179,1
    - Dst: parse_restr
      Src: /src/libyang/src/parser_yang.c:2179,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2183,1
    - Dst: parse_type_reqinstance
      Src: /src/libyang/src/parser_yang.c:2183,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2187,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2187,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2188,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2188,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2192,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2192,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2195,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2195,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 77
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2200
      start: 2096
    functionDepth: 9
    functionLinenumber: 2096
    functionLinenumberEnd: 2200
    functionName: parse_type
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 2
    functionsReached:
    - INSERT_WORD_RET
    - LY_CHECK_ERR_RET
    - parse_type_reqinstance
    - LY_CHECK_RET
    - LY_ARRAY_NEW_RET
    - parse_restr
    - calloc
    - get_argument
    - parse_text_field
    - ly_path_parse
    - lydict_remove
    - parse_text_fields
    - ly_stmt2str
    - parse_type_enum
    - parse_type_fracdigits
    - parse_type_pattern
    - parse_ext
    - LOGVAL_PARSER
    - PARSER_CTX
    - LOGMEM
    - parse_type
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_type(struct lys_yang_parser_ctx *ctx, struct lysp_type
      *type)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2121,1
    - Dst: parse_text_fields
      Src: /src/libyang/src/parser_yang.c:2121,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2125,1
    - Dst: parse_type_enum
      Src: /src/libyang/src/parser_yang.c:2125,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2129,1
    - Dst: parse_type_enum
      Src: /src/libyang/src/parser_yang.c:2129,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2133,1
    - Dst: parse_type_fracdigits
      Src: /src/libyang/src/parser_yang.c:2133,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2138,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2138,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:2141,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2142,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:2142,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2142,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2144,1
    - Dst: parse_restr
      Src: /src/libyang/src/parser_yang.c:2144,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2149,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2149,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2158,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2158,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yang.c:2159,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2159,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/parser_yang.c:2160,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2160,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yang.c:2163,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2163,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2164,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2168,1
    - Dst: parse_type_pattern
      Src: /src/libyang/src/parser_yang.c:2168,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2173,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2173,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:2176,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:2177,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:2177,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2177,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2179,1
    - Dst: parse_restr
      Src: /src/libyang/src/parser_yang.c:2179,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2183,1
    - Dst: parse_type_reqinstance
      Src: /src/libyang/src/parser_yang.c:2183,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2187,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2187,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2188,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2188,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2192,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2192,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2195,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2195,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 68
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2198
      start: 2118
    functionDepth: 10
    functionLinenumber: 2118
    functionLinenumberEnd: 2198
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - parse_type_reqinstance
    - LY_CHECK_RET
    - LY_ARRAY_NEW_RET
    - parse_restr
    - calloc
    - parse_text_field
    - ly_path_parse
    - lydict_remove
    - parse_text_fields
    - ly_stmt2str
    - parse_type_enum
    - parse_type_fracdigits
    - parse_type_pattern
    - parse_ext
    - LOGVAL_PARSER
    - PARSER_CTX
    - LOGMEM
    - parse_type
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2220,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2220,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2225,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2225,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2226,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2232,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:2232,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2235,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2235,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2239,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2239,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2242,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2242,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2245,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:2245,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2248,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2248,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2251,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2251,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2254,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2254,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2257,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2257,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2260,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2260,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2263,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:2263,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2266,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2266,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2269,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2269,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2273,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2277,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 3
    argNames:
    - ctx
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2282
      start: 2210
    functionDepth: 10
    functionLinenumber: 2210
    functionLinenumberEnd: 2282
    functionName: parse_leaf
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - get_argument
    - parse_status
    - parse_type
    - INSERT_WORD_RET
    - parse_ext
    - parse_mandatory
    - parse_text_field
    - parse_restrs
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_when
    - ly_stmt2str
    - LY_LIST_NEW_RET
    - parse_config
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_leaf(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node **siblings)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2232,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:2232,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2235,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2235,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2239,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2239,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2242,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2242,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2245,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:2245,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2248,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2248,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2251,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2251,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2254,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2254,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2257,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2257,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2260,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2260,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2263,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:2263,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2266,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2266,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2269,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2269,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2272
      start: 2229
    functionDepth: 10
    functionLinenumber: 2229
    functionLinenumberEnd: 2272
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_type
    - parse_ext
    - parse_mandatory
    - parse_text_field
    - parse_restrs
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_when
    - parse_config
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2304,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2310,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2310,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_yang.c:2312,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2313,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2314,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/parser_yang.c:2318,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yang.c:2320,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2323,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2324,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2328,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2329,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2338,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2343,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2343,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2346,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2346,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 4
    argNames:
    - ctx
    - max
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint32_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2294
    functionDepth: 7
    functionLinenumber: 2294
    functionLinenumberEnd: 2351
    functionName: parse_maxelements
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - isdigit
    - get_argument
    - ly_strncmp
    - strtoul
    - parse_ext
    - free
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_maxelements(struct lys_yang_parser_ctx *ctx, uint32_t
      *max, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2343,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2343,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2346,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2340
    functionDepth: 7
    functionLinenumber: 2340
    functionLinenumberEnd: 2349
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2373,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2379,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2379,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_yang.c:2381,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2382,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2383,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yang.c:2388,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2391,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2392,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2396,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2397,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2401,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2406,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2406,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2409,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2409,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - min
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint32_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2363
    functionDepth: 7
    functionLinenumber: 2363
    functionLinenumberEnd: 2414
    functionName: parse_minelements
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - isdigit
    - get_argument
    - strtoul
    - parse_ext
    - free
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_minelements(struct lys_yang_parser_ctx *ctx, uint32_t
      *min, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2406,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2406,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2409,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2412
      start: 2403
    functionDepth: 7
    functionLinenumber: 2403
    functionLinenumberEnd: 2412
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2434,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2439,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2439,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:2441,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:2441,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:2443,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:2443,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2446,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2447,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:2450,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2455,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2455,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2458,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2458,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2425
    functionDepth: 7
    functionLinenumber: 2425
    functionLinenumberEnd: 2463
    functionName: parse_orderedby
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - free
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_orderedby(struct lys_yang_parser_ctx *ctx, uint16_t *flags,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2455,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2455,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2458,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2461
      start: 2452
    functionDepth: 7
    functionLinenumber: 2452
    functionLinenumberEnd: 2461
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2483,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2483,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2488,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2488,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2489,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2495,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:2495,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2498,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2499,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2499,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2502,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2502,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2505,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2505,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2508,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:2508,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2511,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:2511,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2514,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2514,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2517,1
    - Dst: parse_orderedby
      Src: /src/libyang/src/parser_yang.c:2517,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2520,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2520,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2523,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2523,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2526,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2526,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2529,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2529,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2532,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:2532,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2535,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2535,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2538,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2538,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2542,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2546,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 63
    argCount: 3
    argNames:
    - ctx
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2473
    functionDepth: 10
    functionLinenumber: 2473
    functionLinenumberEnd: 2551
    functionName: parse_leaflist
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - INSERT_WORD_RET
    - LY_CHECK_RET
    - parse_minelements
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_qnames
    - ly_stmt2str
    - parse_config
    - parse_ext
    - parse_restrs
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - PARSER_CTX
    - parse_orderedby
    - parse_type
    - parse_maxelements
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_leaflist(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node **siblings)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2495,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:2495,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2498,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2499,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2499,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2502,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2502,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2505,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2505,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2508,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:2508,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2511,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:2511,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2514,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2514,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2517,1
    - Dst: parse_orderedby
      Src: /src/libyang/src/parser_yang.c:2517,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2520,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2520,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2523,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2523,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2526,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2526,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2529,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2529,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2532,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:2532,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2535,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2535,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2538,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2538,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2541
      start: 2492
    functionDepth: 10
    functionLinenumber: 2492
    functionLinenumberEnd: 2541
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_type
    - parse_ext
    - parse_text_field
    - parse_restrs
    - parse_qnames
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_minelements
    - ly_stmt2str
    - parse_maxelements
    - parse_when
    - parse_config
    - parse_orderedby
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2570,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2570,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2573,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2573,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yang.c:2574,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2575,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2580,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:2580,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2583,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2583,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2586,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2586,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2589,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2590,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2590,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2593,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:2593,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2596,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:2596,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2599,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2599,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2602,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:2602,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2605,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2605,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2608,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2608,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2611,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2611,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2614,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2614,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 2
    argNames:
    - ctx
    - refines
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_refine**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2619
      start: 2561
    functionDepth: 10
    functionLinenumber: 2561
    functionLinenumberEnd: 2619
    functionName: parse_refine
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - parse_mandatory
    - parse_text_field
    - parse_restrs
    - parse_qnames
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - CHECK_NONEMPTY
    - parse_minelements
    - ly_stmt2str
    - parse_maxelements
    - LY_ARRAY_NEW_RET
    - parse_config
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_refine(struct lys_yang_parser_ctx *ctx, struct lysp_refine
      **refines)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2580,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:2580,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2583,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2583,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2586,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2586,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2589,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2590,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2590,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2593,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:2593,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2596,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:2596,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2599,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2599,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2602,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:2602,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2605,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2605,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2608,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2608,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2611,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2611,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2614,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2614,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2617
      start: 2577
    functionDepth: 10
    functionLinenumber: 2577
    functionLinenumberEnd: 2617
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_mandatory
    - parse_text_field
    - parse_restrs
    - PARSER_CHECK_STMTVER2_RET
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_minelements
    - ly_stmt2str
    - parse_maxelements
    - parse_config
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2638,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2638,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2641,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2641,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2642,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2648,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2648,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2652,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2652,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2655,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2655,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2658,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2658,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2661,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2661,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2664,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2664,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2667,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2667,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2670,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2670,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2674,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2678,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2684,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_yang.c:2684,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 3
    argNames:
    - ctx
    - parent
    - typedefs
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_tpdf**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2688
      start: 2629
    functionDepth: 10
    functionLinenumber: 2629
    functionLinenumberEnd: 2688
    functionName: parse_typedef
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_status
    - parse_type
    - INSERT_WORD_RET
    - parse_ext
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_set_add
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_typedef(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_tpdf **typedefs)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2648,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2648,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2652,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2652,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2655,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2655,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2658,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2658,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2661,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:2661,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2664,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2664,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2667,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2667,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2670,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2670,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2673
      start: 2645
    functionDepth: 10
    functionLinenumber: 2645
    functionLinenumberEnd: 2673
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_type
    - parse_ext
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2710,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2710,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2715,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yang.c:2715,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2715,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2723,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2723,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2726,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:2726,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2729,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:2729,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2732,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:2732,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2735,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:2735,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2738,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:2738,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2741,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:2741,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2744,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:2744,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2747,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:2747,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2750,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2750,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2751,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2751,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2754,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:2754,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2757,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2757,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2760,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2760,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2760,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2764,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2768,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2768,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 4
    argNames:
    - ctx
    - inout_kw
    - parent
    - inout_p
    argTypes:
    - struct lys_yang_parser_ctx*
    - enum ly_stmt
    - struct lysp_node*
    - struct lysp_node_action_inout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2773
      start: 2699
    functionDepth: 11
    functionLinenumber: 2699
    functionLinenumberEnd: 2773
    functionName: parse_inout
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_list
    - parse_leaf
    - parse_leaflist
    - parse_ext
    - parse_uses
    - parse_typedef
    - parse_container
    - PARSER_CHECK_STMTVER2_RET
    - parse_restrs
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - lydict_insert
    - parse_any
    - ly_stmt2str
    - parse_choice
    - PARSER_CTX
    - parse_grouping
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR parse_inout(struct lys_yang_parser_ctx *ctx, enum ly_stmt inout_kw,
      struct lysp_node *parent,\n        struct lysp_node_action_inout *inout_p)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2723,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2723,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2726,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:2726,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2729,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:2729,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2732,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:2732,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2735,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:2735,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2738,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:2738,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2741,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:2741,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2744,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:2744,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2747,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:2747,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2750,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2750,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2751,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2751,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2754,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:2754,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2757,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2757,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2760,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2760,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2760,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2763
      start: 2720
    functionDepth: 11
    functionLinenumber: 2720
    functionLinenumberEnd: 2763
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_list
    - parse_leaf
    - parse_leaflist
    - parse_ext
    - parse_uses
    - parse_typedef
    - parse_container
    - PARSER_CHECK_STMTVER2_RET
    - parse_restrs
    - LY_CHECK_RET
    - parse_any
    - LOGVAL_PARSER
    - parse_choice
    - ly_stmt2str
    - parse_grouping
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2792,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2792,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2795,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2795,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2796,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2803,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2803,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2806,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2806,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2809,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2809,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2812,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2812,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2816,1
    - Dst: parse_inout
      Src: /src/libyang/src/parser_yang.c:2816,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2819,1
    - Dst: parse_inout
      Src: /src/libyang/src/parser_yang.c:2819,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2823,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:2823,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2826,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:2826,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2829,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2829,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2832,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2832,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2836,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2843,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yang.c:2843,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2843,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2848,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yang.c:2848,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2848,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 3
    argNames:
    - ctx
    - parent
    - actions
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node_action**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2852
      start: 2783
    functionDepth: 12
    functionLinenumber: 2783
    functionLinenumberEnd: 2852
    functionName: parse_action
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - get_argument
    - parse_status
    - parse_ext
    - INSERT_WORD_RET
    - parse_text_field
    - parse_typedef
    - parse_qnames
    - LY_CHECK_RET
    - parse_inout
    - LOGVAL_PARSER
    - lydict_insert
    - ly_stmt2str
    - LY_LIST_NEW_RET
    - PARSER_CTX
    - parse_grouping
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_action(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node_action **actions)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2803,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2803,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2806,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2806,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2809,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2809,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2812,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2812,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2816,1
    - Dst: parse_inout
      Src: /src/libyang/src/parser_yang.c:2816,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2819,1
    - Dst: parse_inout
      Src: /src/libyang/src/parser_yang.c:2819,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2823,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:2823,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2826,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:2826,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2829,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2829,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2832,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2832,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2835
      start: 2800
    functionDepth: 12
    functionLinenumber: 2800
    functionLinenumberEnd: 2835
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_ext
    - parse_text_field
    - parse_typedef
    - parse_qnames
    - LY_CHECK_RET
    - parse_inout
    - LOGVAL_PARSER
    - ly_stmt2str
    - parse_grouping
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2871,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2871,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2874,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2874,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2875,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2882,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2882,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2885,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2885,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2888,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2888,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2891,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2891,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2895,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2898,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:2898,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2901,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:2901,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2904,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:2904,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2907,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:2907,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2910,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:2910,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2913,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:2913,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2916,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:2916,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2920,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2921,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2921,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2924,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:2924,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2927,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:2927,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2930,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2930,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2933,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2933,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 61
    argCount: 3
    argNames:
    - ctx
    - parent
    - notifs
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node_notif**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2939
      start: 2862
    functionDepth: 11
    functionLinenumber: 2862
    functionLinenumberEnd: 2939
    functionName: parse_notif
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - INSERT_WORD_RET
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_any
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_restrs
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - PARSER_CTX
    - parse_grouping
    - parse_leaf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_notif(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node_notif **notifs)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2882,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2882,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2885,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:2885,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2888,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2888,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2891,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2891,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2895,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2898,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:2898,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2901,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:2901,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2904,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:2904,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2907,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:2907,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2910,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:2910,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2913,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:2913,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2916,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:2916,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2920,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2921,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:2921,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2924,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:2924,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2927,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:2927,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2930,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:2930,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:2933,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:2933,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 54
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2936
      start: 2879
    functionDepth: 11
    functionLinenumber: 2879
    functionLinenumberEnd: 2936
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_list
    - parse_status
    - parse_leaf
    - parse_leaflist
    - parse_ext
    - parse_text_field
    - parse_uses
    - parse_typedef
    - parse_container
    - PARSER_CHECK_STMTVER2_RET
    - parse_qnames
    - LY_CHECK_RET
    - parse_restrs
    - parse_any
    - LOGVAL_PARSER
    - parse_choice
    - ly_stmt2str
    - parse_grouping
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:2958,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:2958,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2961,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:2961,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:2962,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2969,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2969,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2972,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2972,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2975,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2975,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2979,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2982,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:2982,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2985,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:2985,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2988,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:2988,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2991,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:2991,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2994,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:2994,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2997,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:2997,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3000,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3000,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3004,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:3004,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3007,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3008,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3008,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3011,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:3011,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3014,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3015,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3015,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3018,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3018,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3021,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3021,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 3
    argNames:
    - ctx
    - parent
    - groupings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node_grp**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3027
      start: 2949
    functionDepth: 13
    functionLinenumber: 2949
    functionLinenumberEnd: 3027
    functionName: parse_grouping
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 8
    functionsReached:
    - INSERT_WORD_RET
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_choice
    - ly_stmt2str
    - parse_list
    - parse_leaflist
    - parse_ext
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_action
    - PARSER_CTX
    - parse_grouping
    - parse_leaf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_grouping(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node_grp **groupings)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2969,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2969,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2972,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:2972,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2975,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:2975,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:2979,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2982,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:2982,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2985,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:2985,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2988,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:2988,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2991,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:2991,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2994,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:2994,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:2997,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:2997,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3000,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3000,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3004,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:3004,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3007,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3008,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3008,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3011,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:3011,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3014,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3015,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3015,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3018,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3018,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3021,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3021,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3024
      start: 2966
    functionDepth: 14
    functionLinenumber: 2966
    functionLinenumberEnd: 3024
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_list
    - parse_status
    - parse_leaf
    - parse_leaflist
    - parse_ext
    - parse_text_field
    - parse_uses
    - parse_typedef
    - parse_container
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - LOGVAL_PARSER
    - parse_choice
    - ly_stmt2str
    - parse_action
    - parse_grouping
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3046,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3046,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3049,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3049,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yang.c:3050,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3051,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3058,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3058,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3061,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3061,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3064,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3064,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3067,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3067,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3070,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3070,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3074,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3077,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3077,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3080,1
    - Dst: parse_case
      Src: /src/libyang/src/parser_yang.c:3080,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3083,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3083,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3086,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3086,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3089,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3089,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3092,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3092,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3095,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3095,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3098,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3098,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3102,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3103,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3103,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3106,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3107,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3107,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3110,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3110,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3113,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3113,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 66
    argCount: 3
    argNames:
    - ctx
    - parent
    - augments
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node_augment**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3119
      start: 3037
    functionDepth: 13
    functionLinenumber: 3037
    functionLinenumberEnd: 3119
    functionName: parse_augment
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - parse_case
    - INSERT_WORD_RET
    - parse_uses
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_list
    - parse_leaflist
    - parse_ext
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - CHECK_NONEMPTY
    - parse_when
    - PARSER_CTX
    - parse_action
    - parse_leaf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_augment(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node_augment **augments)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3058,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3058,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3061,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3061,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3064,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3064,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3067,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3067,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3070,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3070,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3074,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3077,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3077,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3080,1
    - Dst: parse_case
      Src: /src/libyang/src/parser_yang.c:3080,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3083,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3083,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3086,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3086,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3089,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3089,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3092,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3092,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3095,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3095,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3098,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3098,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3102,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3103,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3103,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3106,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3107,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3107,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3110,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3110,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3113,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3113,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3116
      start: 3055
    functionDepth: 13
    functionLinenumber: 3055
    functionLinenumberEnd: 3116
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_case
    - parse_uses
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_list
    - parse_leaflist
    - parse_ext
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - parse_action
    - parse_leaf
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3139,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3139,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3144,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3144,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3145,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3151,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3151,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3154,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3154,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3157,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3157,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3160,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3160,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3163,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3163,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3167,1
    - Dst: parse_refine
      Src: /src/libyang/src/parser_yang.c:3167,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3170,1
    - Dst: parse_augment
      Src: /src/libyang/src/parser_yang.c:3170,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3173,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3173,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3176,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3176,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3182
      start: 3129
    functionDepth: 14
    functionLinenumber: 3129
    functionLinenumberEnd: 3182
    functionName: parse_uses
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 9
    functionsReached:
    - parse_refine
    - get_argument
    - parse_status
    - parse_ext
    - INSERT_WORD_RET
    - parse_text_field
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_augment
    - parse_when
    - ly_stmt2str
    - LY_LIST_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_uses(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node **siblings)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3151,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3151,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3154,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3154,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3157,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3157,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3160,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3160,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3163,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3163,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3167,1
    - Dst: parse_refine
      Src: /src/libyang/src/parser_yang.c:3167,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3170,1
    - Dst: parse_augment
      Src: /src/libyang/src/parser_yang.c:3170,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3173,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3173,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3176,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3176,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3179
      start: 3148
    functionDepth: 14
    functionLinenumber: 3148
    functionLinenumberEnd: 3179
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_refine
    - parse_status
    - parse_ext
    - parse_text_field
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_augment
    - ly_stmt2str
    - parse_when
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3202,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3202,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3207,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3207,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3208,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3214,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3214,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3217,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3217,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3220,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3220,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3223,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3223,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3226,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3226,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3230,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3233,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3233,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3236,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3236,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3239,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3239,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3242,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3242,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3245,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3245,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3248,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3248,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3251,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3251,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3254,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3254,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3257,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3257,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 3
    argNames:
    - ctx
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3262
      start: 3192
    functionDepth: 15
    functionLinenumber: 3192
    functionLinenumberEnd: 3262
    functionName: parse_case
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 3
    functionsReached:
    - INSERT_WORD_RET
    - parse_uses
    - parse_container
    - LY_CHECK_RET
    - parse_any
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_list
    - parse_leaflist
    - parse_ext
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - PARSER_CTX
    - parse_leaf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_case(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node **siblings)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3214,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3214,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3217,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3217,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3220,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3220,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3223,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3223,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3226,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3226,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3230,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3233,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3233,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3236,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3236,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3239,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3239,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3242,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3242,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3245,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3245,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3248,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3248,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3251,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3251,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3254,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3254,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3257,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3257,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3260
      start: 3211
    functionDepth: 15
    functionLinenumber: 3211
    functionLinenumberEnd: 3260
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_list
    - parse_status
    - parse_leaf
    - parse_leaflist
    - parse_ext
    - parse_text_field
    - parse_uses
    - parse_container
    - parse_qnames
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - parse_any
    - LOGVAL_PARSER
    - parse_choice
    - ly_stmt2str
    - parse_when
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3282,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3282,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3287,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3287,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3288,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3294,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3294,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3297,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3297,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3300,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3300,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3303,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:3303,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3306,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3306,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3309,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3309,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3312,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3312,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3315,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3315,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3321,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3324,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3324,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3327,1
    - Dst: parse_case
      Src: /src/libyang/src/parser_yang.c:3327,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3330,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3331,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3331,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3334,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3334,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3337,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3337,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3340,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3340,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3343,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3343,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3346,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3346,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3349,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3349,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 65
    argCount: 3
    argNames:
    - ctx
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3354
      start: 3272
    functionDepth: 16
    functionLinenumber: 3272
    functionLinenumberEnd: 3354
    functionName: parse_choice
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 12
    functionsReached:
    - parse_case
    - INSERT_WORD_RET
    - parse_mandatory
    - parse_container
    - LY_CHECK_RET
    - parse_any
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_config
    - parse_list
    - parse_leaflist
    - parse_ext
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - PARSER_CTX
    - parse_leaf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_choice(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node **siblings)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3294,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3294,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3297,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3297,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3300,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3300,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3303,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:3303,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3306,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3306,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3309,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3309,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3312,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3312,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3315,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3315,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3321,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3324,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3324,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3327,1
    - Dst: parse_case
      Src: /src/libyang/src/parser_yang.c:3327,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3330,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3331,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3331,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3334,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3334,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3337,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3337,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3340,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3340,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3343,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3343,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3346,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3346,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3349,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3349,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3352
      start: 3291
    functionDepth: 17
    functionLinenumber: 3291
    functionLinenumberEnd: 3352
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_list
    - parse_status
    - parse_case
    - parse_leaf
    - parse_leaflist
    - parse_ext
    - parse_mandatory
    - parse_text_field
    - parse_container
    - parse_qnames
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - parse_any
    - LOGVAL_PARSER
    - parse_choice
    - ly_stmt2str
    - parse_when
    - parse_config
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3374,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3374,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3379,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3379,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3380,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3386,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3386,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3389,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3389,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3392,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3392,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3395,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3395,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3398,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3398,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3401,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3401,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3404,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3404,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3408,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3411,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3411,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3414,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3414,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3417,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3417,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3420,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3420,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3423,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3423,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3426,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3426,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3429,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3429,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3433,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:3433,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3436,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:3436,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3439,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3440,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3440,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3443,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:3443,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3446,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3447,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3447,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3450,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3450,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3453,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3453,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 77
    argCount: 3
    argNames:
    - ctx
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3459
      start: 3364
    functionDepth: 17
    functionLinenumber: 3364
    functionLinenumberEnd: 3459
    functionName: parse_container
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 16
    functionsReached:
    - INSERT_WORD_RET
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_config
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_restrs
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - PARSER_CTX
    - parse_action
    - parse_grouping
    - parse_leaf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_container(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node **siblings)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3386,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3386,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3389,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3389,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3392,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3392,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3395,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3395,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3398,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3398,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3401,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3401,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3404,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3404,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3408,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3411,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3411,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3414,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3414,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3417,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3417,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3420,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3420,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3423,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3423,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3426,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3426,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3429,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3429,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3433,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:3433,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3436,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:3436,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3439,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3440,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3440,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3443,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:3443,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3446,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3447,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3447,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3450,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3450,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3453,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3453,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 70
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3456
      start: 3383
    functionDepth: 18
    functionLinenumber: 3383
    functionLinenumberEnd: 3456
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_config
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_restrs
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - parse_action
    - parse_grouping
    - parse_leaf
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3479,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3479,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3484,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3484,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3485,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3491,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3491,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3494,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3494,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3497,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3497,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3500,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3500,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3503,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3503,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3506,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3506,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3509,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3509,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3512,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:3512,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3515,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:3515,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3518,1
    - Dst: parse_orderedby
      Src: /src/libyang/src/parser_yang.c:3518,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3521,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3521,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3525,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3528,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3528,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3531,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3531,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3534,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3534,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3537,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3537,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3540,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3540,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3543,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3543,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3546,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3546,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3550,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:3550,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3553,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:3553,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3556,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3557,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3557,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3560,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:3560,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3563,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3564,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3564,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3567,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3567,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3570,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3570,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 89
    argCount: 3
    argNames:
    - ctx
    - parent
    - siblings
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3576
      start: 3469
    functionDepth: 18
    functionLinenumber: 3469
    functionLinenumberEnd: 3576
    functionName: parse_list
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 18
    functionsReached:
    - INSERT_WORD_RET
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_minelements
    - LY_LIST_NEW_RET
    - get_argument
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_config
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_restrs
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - PARSER_CTX
    - parse_orderedby
    - parse_action
    - parse_grouping
    - parse_leaf
    - parse_maxelements
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_list(struct lys_yang_parser_ctx *ctx, struct lysp_node
      *parent, struct lysp_node **siblings)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3491,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3491,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3494,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3494,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3497,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3497,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3500,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3500,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3503,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3503,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3506,1
    - Dst: parse_when
      Src: /src/libyang/src/parser_yang.c:3506,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3509,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3509,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3512,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:3512,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3515,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:3515,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3518,1
    - Dst: parse_orderedby
      Src: /src/libyang/src/parser_yang.c:3518,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3521,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3521,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3525,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3528,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:3528,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3531,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:3531,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3534,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:3534,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3537,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:3537,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3540,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:3540,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3543,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:3543,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3546,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:3546,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3550,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:3550,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3553,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:3553,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3556,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3557,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:3557,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3560,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:3560,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:3563,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3564,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:3564,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3567,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3567,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3570,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3570,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 82
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3573
      start: 3488
    functionDepth: 18
    functionLinenumber: 3488
    functionLinenumberEnd: 3573
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_minelements
    - parse_status
    - parse_text_field
    - parse_qnames
    - parse_choice
    - ly_stmt2str
    - parse_config
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_restrs
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_when
    - parse_action
    - parse_orderedby
    - parse_grouping
    - parse_leaf
    - parse_maxelements
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3596,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3601,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3601,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:3603,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:3603,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:3605,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:3605,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3608,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:3609,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:3612,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3617,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3617,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3618,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3621,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3621,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3626
      start: 3587
    functionDepth: 7
    functionLinenumber: 3587
    functionLinenumberEnd: 3626
    functionName: parse_yinelement
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_ext
    - free
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_yinelement(struct lys_yang_parser_ctx *ctx, uint16_t *flags,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3617,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3617,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3618,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3621,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3624
      start: 3614
    functionDepth: 7
    functionLinenumber: 3614
    functionLinenumberEnd: 3624
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_ext
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3647,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3652,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3652,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3653,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3658,1
    - Dst: parse_yinelement
      Src: /src/libyang/src/parser_yang.c:3658,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3661,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3661,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3664,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3664,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - ctx
    - argument
    - flags
    - exts
    argTypes:
    - struct lys_yang_parser_ctx*
    - char**
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3669
      start: 3638
    functionDepth: 8
    functionLinenumber: 3638
    functionLinenumberEnd: 3669
    functionName: parse_argument
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_yinelement
    - parse_ext
    - INSERT_WORD_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_argument(struct lys_yang_parser_ctx *ctx, const char **argument,
      uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3658,1
    - Dst: parse_yinelement
      Src: /src/libyang/src/parser_yang.c:3658,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3661,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3661,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3664,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3664,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3667
      start: 3655
    functionDepth: 8
    functionLinenumber: 3655
    functionLinenumberEnd: 3667
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_yinelement
    - parse_ext
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3688,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3688,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3691,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3691,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3692,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3697,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3697,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3700,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3700,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3703,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3703,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3706,1
    - Dst: parse_argument
      Src: /src/libyang/src/parser_yang.c:3706,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3709,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3709,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3712,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3712,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - extensions
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_ext**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3717
      start: 3679
    functionDepth: 9
    functionLinenumber: 3679
    functionLinenumberEnd: 3717
    functionName: parse_extension
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_status
    - parse_ext
    - INSERT_WORD_RET
    - parse_argument
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_extension(struct lys_yang_parser_ctx *ctx, struct lysp_ext
      **extensions)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3697,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3697,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3700,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3700,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3703,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:3703,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3706,1
    - Dst: parse_argument
      Src: /src/libyang/src/parser_yang.c:3706,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3709,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3709,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3712,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3712,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3715
      start: 3694
    functionDepth: 9
    functionLinenumber: 3694
    functionLinenumberEnd: 3715
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_ext
    - parse_argument
    - parse_text_field
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3745,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3745,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:3747,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:3747,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:3749,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:3749,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:3751,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:3751,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_yang.c:3753,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:3753,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3756,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:3757,1
    - Dst: free
      Src: /src/libyang/src/parser_yang.c:3760,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:3765,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:3766,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:3766,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3766,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:3769,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:3770,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:3770,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3770,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:3781,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:3782,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:3782,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3782,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:3790,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:3791,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:3791,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3791,1
    - Dst: assert
      Src: /src/libyang/src/parser_yang.c:3799,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/parser_yang.c:3800,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3800,1
    - Dst: LY_LIST_INSERT
      Src: /src/libyang/src/parser_yang.c:3805,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3813,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3813,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3813,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3816,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3816,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3823,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3823,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3823,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3826,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3826,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3830,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3830,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3838,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3838,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3838,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3841,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:3841,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3849,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3849,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3849,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3852,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:3852,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3860,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3860,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3860,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3863,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:3863,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3871,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3871,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3871,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3874,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:3874,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3883,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3883,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3883,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3887,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3887,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:3890,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:3891,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:3891,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3891,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3892,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:3892,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3900,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3900,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3900,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3903,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3903,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3910,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3910,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3910,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3913,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3913,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3918,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3918,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3921,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3921,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 178
    argCount: 2
    argNames:
    - ctx
    - deviates
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_deviate**
    assertStmts:
    - condition: (0)
      pos:
        line_end: 3798
        line_start: 3798
        source_file: /src/libyang/src/parser_yang.c
    constantsTouched: []
    func_position:
      end: 3926
      start: 3727
    functionDepth: 10
    functionLinenumber: 3727
    functionLinenumberEnd: 3926
    functionName: parse_deviate
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_RET
    - parse_mandatory
    - LY_CHECK_RET
    - strncmp
    - parse_minelements
    - ly_devmod2str
    - calloc
    - get_argument
    - parse_text_field
    - parse_qnames
    - ly_stmt2str
    - parse_config
    - assert
    - parse_ext
    - free
    - parse_restrs
    - LOGVAL_PARSER
    - ly_strlen_const
    - PARSER_CTX
    - LOGMEM
    - LOGINT_RET
    - LY_LIST_INSERT
    - parse_type
    - parse_maxelements
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_deviate(struct lys_yang_parser_ctx *ctx, struct lysp_deviate
      **deviates)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3813,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3813,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3813,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3816,1
    - Dst: parse_config
      Src: /src/libyang/src/parser_yang.c:3816,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3823,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3823,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3823,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3826,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3826,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3830,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3830,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3838,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3838,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3838,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3841,1
    - Dst: parse_mandatory
      Src: /src/libyang/src/parser_yang.c:3841,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3849,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3849,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3849,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3852,1
    - Dst: parse_maxelements
      Src: /src/libyang/src/parser_yang.c:3852,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3860,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3860,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3860,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3863,1
    - Dst: parse_minelements
      Src: /src/libyang/src/parser_yang.c:3863,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3871,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3871,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3871,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3874,1
    - Dst: parse_restrs
      Src: /src/libyang/src/parser_yang.c:3874,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3883,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3883,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3883,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3887,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3887,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:3890,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:3891,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:3891,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3891,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3892,1
    - Dst: parse_type
      Src: /src/libyang/src/parser_yang.c:3892,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3900,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3900,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3900,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3903,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:3903,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3910,1
    - Dst: ly_devmod2str
      Src: /src/libyang/src/parser_yang.c:3910,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3910,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3913,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3913,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3918,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3918,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3921,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3921,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 117
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3924
      start: 3807
    functionDepth: 10
    functionLinenumber: 3807
    functionLinenumberEnd: 3924
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_type
    - LY_CHECK_ERR_RET
    - parse_ext
    - parse_mandatory
    - parse_text_field
    - parse_restrs
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - PARSER_CTX
    - parse_minelements
    - ly_stmt2str
    - ly_devmod2str
    - parse_maxelements
    - parse_config
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3945,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3945,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3948,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:3948,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yang.c:3949,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:3950,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3955,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3955,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3958,1
    - Dst: parse_deviate
      Src: /src/libyang/src/parser_yang.c:3958,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3961,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3961,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3964,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3964,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3967,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3967,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3971,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3975,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - deviations
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_deviation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3980
      start: 3936
    functionDepth: 11
    functionLinenumber: 3936
    functionLinenumberEnd: 3980
    functionName: parse_deviation
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - get_argument
    - parse_ext
    - INSERT_WORD_RET
    - parse_text_field
    - LY_CHECK_RET
    - parse_deviate
    - LOGVAL_PARSER
    - CHECK_NONEMPTY
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_deviation(struct lys_yang_parser_ctx *ctx, struct lysp_deviation
      **deviations)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3955,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3955,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3958,1
    - Dst: parse_deviate
      Src: /src/libyang/src/parser_yang.c:3958,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3961,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:3961,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:3964,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:3964,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:3967,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:3967,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3970
      start: 3952
    functionDepth: 11
    functionLinenumber: 3952
    functionLinenumberEnd: 3970
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_ext
    - parse_text_field
    - LY_CHECK_RET
    - parse_deviate
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:3999,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:3999,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4002,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:4002,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:4003,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4008,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4008,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4011,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:4011,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4014,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4014,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4017,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:4017,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4020,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4020,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4023,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4023,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - features
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_feature**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4028
      start: 3990
    functionDepth: 8
    functionLinenumber: 3990
    functionLinenumberEnd: 4028
    functionName: parse_feature
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_status
    - parse_ext
    - INSERT_WORD_RET
    - parse_text_field
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_feature(struct lys_yang_parser_ctx *ctx, struct lysp_feature
      **features)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4008,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4008,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4011,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:4011,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4014,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4014,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4017,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:4017,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4020,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4020,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4023,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4023,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4026
      start: 4005
    functionDepth: 8
    functionLinenumber: 4005
    functionLinenumberEnd: 4026
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_ext
    - parse_text_field
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yang.c:4047,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:4047,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4050,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:4050,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:4051,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4056,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4056,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:4059,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4060,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:4060,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4063,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4063,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4066,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:4066,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4070,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4073,1
    - Dst: parse_text_fields
      Src: /src/libyang/src/parser_yang.c:4073,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4076,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4076,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4079,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4079,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - identities
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_ident**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4084
      start: 4038
    functionDepth: 8
    functionLinenumber: 4038
    functionLinenumberEnd: 4084
    functionName: parse_identity
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - get_argument
    - parse_status
    - parse_ext
    - INSERT_WORD_RET
    - parse_text_field
    - PARSER_CHECK_STMTVER2_RET
    - parse_qnames
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_text_fields
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_identity(struct lys_yang_parser_ctx *ctx, struct lysp_ident
      **identities)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4056,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4056,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:4059,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4060,1
    - Dst: parse_qnames
      Src: /src/libyang/src/parser_yang.c:4060,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4063,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4063,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4066,1
    - Dst: parse_status
      Src: /src/libyang/src/parser_yang.c:4066,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4070,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4073,1
    - Dst: parse_text_fields
      Src: /src/libyang/src/parser_yang.c:4073,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4076,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4076,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4079,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4079,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 2
    argNames:
    - LY_SUCCESS
    - ret
    argTypes:
    - return
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4082
      start: 4053
    functionDepth: 8
    functionLinenumber: 4053
    functionLinenumberEnd: 4082
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_status
    - parse_ext
    - parse_text_field
    - parse_qnames
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - parse_text_fields
    - ly_stmt2str
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, return LY_SUCCESS,
      return ret)
  - BBCount: 62
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4107,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:4107,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:4108,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4119,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4122,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4127,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4134,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4139,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4172,1
    - Dst: parse_yangversion
      Src: /src/libyang/src/parser_yang.c:4172,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4175,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4175,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4178,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4178,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4183,1
    - Dst: parse_include
      Src: /src/libyang/src/parser_yang.c:4183,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4186,1
    - Dst: parse_import
      Src: /src/libyang/src/parser_yang.c:4186,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4191,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4191,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4194,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4194,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4197,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4197,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4200,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4200,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4205,1
    - Dst: parse_revision
      Src: /src/libyang/src/parser_yang.c:4205,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:4210,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4213,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:4213,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4216,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:4216,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4219,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:4219,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4222,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:4222,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4225,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:4225,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4228,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:4228,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4231,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:4231,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4235,1
    - Dst: parse_augment
      Src: /src/libyang/src/parser_yang.c:4235,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4238,1
    - Dst: parse_deviation
      Src: /src/libyang/src/parser_yang.c:4238,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4241,1
    - Dst: parse_extension
      Src: /src/libyang/src/parser_yang.c:4241,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4244,1
    - Dst: parse_feature
      Src: /src/libyang/src/parser_yang.c:4244,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4247,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:4247,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4250,1
    - Dst: parse_identity
      Src: /src/libyang/src/parser_yang.c:4250,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4253,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:4253,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4256,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:4256,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4259,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:4259,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4262,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4262,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4266,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4266,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4270,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4275,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4278,1
    - Dst: ly_ctx_get_submodule_latest
      Src: /src/libyang/src/parser_yang.c:4284,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:4284,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4286,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 155
    argCount: 2
    argNames:
    - ctx
    - mod
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4291
      start: 4094
    functionDepth: 18
    functionLinenumber: 4094
    functionLinenumberEnd: 4291
    functionName: parse_module
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 3
    functionsReached:
    - ly_ctx_get_submodule_latest
    - INSERT_WORD_RET
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_identity
    - get_argument
    - parse_text_field
    - parse_augment
    - parse_choice
    - parse_yangversion
    - ly_stmt2str
    - parse_include
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_deviation
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_extension
    - parse_import
    - parse_action
    - PARSER_CTX
    - parse_grouping
    - parse_feature
    - parse_leaf
    - parse_revision
    - CHECK_ORDER
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_module(struct lys_yang_parser_ctx *ctx, struct lysp_module
      *mod)
  - BBCount: 59
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4119,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4122,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4127,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4134,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4139,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4172,1
    - Dst: parse_yangversion
      Src: /src/libyang/src/parser_yang.c:4172,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4175,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4175,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4178,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4178,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4183,1
    - Dst: parse_include
      Src: /src/libyang/src/parser_yang.c:4183,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4186,1
    - Dst: parse_import
      Src: /src/libyang/src/parser_yang.c:4186,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4191,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4191,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4194,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4194,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4197,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4197,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4200,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4200,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4205,1
    - Dst: parse_revision
      Src: /src/libyang/src/parser_yang.c:4205,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:4210,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4213,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:4213,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4216,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:4216,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4219,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:4219,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4222,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:4222,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4225,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:4225,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4228,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:4228,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4231,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:4231,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4235,1
    - Dst: parse_augment
      Src: /src/libyang/src/parser_yang.c:4235,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4238,1
    - Dst: parse_deviation
      Src: /src/libyang/src/parser_yang.c:4238,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4241,1
    - Dst: parse_extension
      Src: /src/libyang/src/parser_yang.c:4241,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4244,1
    - Dst: parse_feature
      Src: /src/libyang/src/parser_yang.c:4244,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4247,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:4247,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4250,1
    - Dst: parse_identity
      Src: /src/libyang/src/parser_yang.c:4250,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4253,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:4253,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4256,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:4256,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4259,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:4259,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4262,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4262,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4266,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4266,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 134
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4269
      start: 4110
    functionDepth: 18
    functionLinenumber: 4110
    functionLinenumberEnd: 4269
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_identity
    - parse_text_field
    - parse_augment
    - parse_choice
    - parse_yangversion
    - ly_stmt2str
    - parse_include
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_deviation
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - parse_extension
    - parse_import
    - parse_action
    - parse_grouping
    - parse_feature
    - parse_leaf
    - parse_revision
    - CHECK_ORDER
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - SECTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4114
      start: 4112
    functionDepth: 0
    functionLinenumber: 4112
    functionLinenumberEnd: 4114
    functionName: CHECK_ORDER
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_ORDER(SECTION)
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4314,1
    - Dst: get_argument
      Src: /src/libyang/src/parser_yang.c:4314,1
    - Dst: INSERT_WORD_RET
      Src: /src/libyang/src/parser_yang.c:4315,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4325,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4328,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4333,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4340,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4345,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4378,1
    - Dst: parse_yangversion
      Src: /src/libyang/src/parser_yang.c:4378,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4381,1
    - Dst: parse_belongsto
      Src: /src/libyang/src/parser_yang.c:4381,1
    - Dst: LOGWRN
      Src: /src/libyang/src/parser_yang.c:4387,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:4387,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4390,1
    - Dst: parse_include
      Src: /src/libyang/src/parser_yang.c:4390,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4393,1
    - Dst: parse_import
      Src: /src/libyang/src/parser_yang.c:4393,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4398,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4398,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4401,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4401,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4404,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4404,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4407,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4407,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4412,1
    - Dst: parse_revision
      Src: /src/libyang/src/parser_yang.c:4412,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:4417,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4420,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:4420,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4423,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:4423,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4426,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:4426,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4429,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:4429,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4432,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:4432,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4435,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:4435,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4438,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:4438,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4442,1
    - Dst: parse_augment
      Src: /src/libyang/src/parser_yang.c:4442,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4445,1
    - Dst: parse_deviation
      Src: /src/libyang/src/parser_yang.c:4445,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4448,1
    - Dst: parse_extension
      Src: /src/libyang/src/parser_yang.c:4448,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4451,1
    - Dst: parse_feature
      Src: /src/libyang/src/parser_yang.c:4451,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4454,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:4454,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4457,1
    - Dst: parse_identity
      Src: /src/libyang/src/parser_yang.c:4457,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4460,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:4460,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4463,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:4463,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4466,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:4466,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4469,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4469,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4473,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4473,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4477,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4482,1
    - Dst: ly_ctx_get_submodule_latest
      Src: /src/libyang/src/parser_yang.c:4488,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:4488,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yang.c:4490,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4491,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 150
    argCount: 2
    argNames:
    - ctx
    - submod
    argTypes:
    - struct lys_yang_parser_ctx*
    - struct lysp_submodule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4496
      start: 4301
    functionDepth: 18
    functionLinenumber: 4301
    functionLinenumberEnd: 4496
    functionName: parse_submodule
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 2
    functionsReached:
    - ly_ctx_get_submodule_latest
    - INSERT_WORD_RET
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_identity
    - get_argument
    - parse_text_field
    - parse_augment
    - parse_choice
    - parse_yangversion
    - ly_stmt2str
    - parse_include
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_deviation
    - PARSER_CHECK_STMTVER2_RET
    - parse_belongsto
    - LOGVAL_PARSER
    - parse_extension
    - parse_import
    - PARSER_CTX
    - parse_action
    - parse_grouping
    - parse_feature
    - parse_leaf
    - strcmp
    - parse_revision
    - LOGWRN
    - CHECK_ORDER
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR parse_submodule(struct lys_yang_parser_ctx *ctx, struct lysp_submodule
      *submod)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4325,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4328,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4333,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4340,1
    - Dst: CHECK_ORDER
      Src: /src/libyang/src/parser_yang.c:4345,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4378,1
    - Dst: parse_yangversion
      Src: /src/libyang/src/parser_yang.c:4378,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4381,1
    - Dst: parse_belongsto
      Src: /src/libyang/src/parser_yang.c:4381,1
    - Dst: LOGWRN
      Src: /src/libyang/src/parser_yang.c:4387,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yang.c:4387,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4390,1
    - Dst: parse_include
      Src: /src/libyang/src/parser_yang.c:4390,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4393,1
    - Dst: parse_import
      Src: /src/libyang/src/parser_yang.c:4393,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4398,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4398,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4401,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4401,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4404,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4404,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4407,1
    - Dst: parse_text_field
      Src: /src/libyang/src/parser_yang.c:4407,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4412,1
    - Dst: parse_revision
      Src: /src/libyang/src/parser_yang.c:4412,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_yang.c:4417,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4420,1
    - Dst: parse_any
      Src: /src/libyang/src/parser_yang.c:4420,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4423,1
    - Dst: parse_choice
      Src: /src/libyang/src/parser_yang.c:4423,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4426,1
    - Dst: parse_container
      Src: /src/libyang/src/parser_yang.c:4426,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4429,1
    - Dst: parse_leaf
      Src: /src/libyang/src/parser_yang.c:4429,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4432,1
    - Dst: parse_leaflist
      Src: /src/libyang/src/parser_yang.c:4432,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4435,1
    - Dst: parse_list
      Src: /src/libyang/src/parser_yang.c:4435,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4438,1
    - Dst: parse_uses
      Src: /src/libyang/src/parser_yang.c:4438,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4442,1
    - Dst: parse_augment
      Src: /src/libyang/src/parser_yang.c:4442,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4445,1
    - Dst: parse_deviation
      Src: /src/libyang/src/parser_yang.c:4445,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4448,1
    - Dst: parse_extension
      Src: /src/libyang/src/parser_yang.c:4448,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4451,1
    - Dst: parse_feature
      Src: /src/libyang/src/parser_yang.c:4451,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4454,1
    - Dst: parse_grouping
      Src: /src/libyang/src/parser_yang.c:4454,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4457,1
    - Dst: parse_identity
      Src: /src/libyang/src/parser_yang.c:4457,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4460,1
    - Dst: parse_notif
      Src: /src/libyang/src/parser_yang.c:4460,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4463,1
    - Dst: parse_action
      Src: /src/libyang/src/parser_yang.c:4463,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4466,1
    - Dst: parse_typedef
      Src: /src/libyang/src/parser_yang.c:4466,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4469,1
    - Dst: parse_ext
      Src: /src/libyang/src/parser_yang.c:4469,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4473,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4473,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 133
    argCount: 2
    argNames:
    - checks
    - ret
    argTypes:
    - goto
    - return
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4476
      start: 4317
    functionDepth: 18
    functionLinenumber: 4317
    functionLinenumberEnd: 4476
    functionName: YANG_READ_SUBSTMT_FOR
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - parse_uses
    - parse_typedef
    - parse_container
    - LY_CHECK_RET
    - parse_notif
    - parse_any
    - parse_identity
    - parse_text_field
    - parse_augment
    - parse_choice
    - parse_yangversion
    - ly_stmt2str
    - parse_include
    - parse_list
    - parse_leaflist
    - parse_ext
    - parse_deviation
    - PARSER_CHECK_STMTVER2_RET
    - parse_belongsto
    - LOGVAL_PARSER
    - parse_extension
    - parse_import
    - PARSER_CTX
    - parse_action
    - parse_grouping
    - parse_feature
    - parse_leaf
    - parse_revision
    - LOGWRN
    - CHECK_ORDER
    linkageType: ''
    returnType: void
    signature: void YANG_READ_SUBSTMT_FOR(ctx, kw, word, word_len, ret, goto checks,
      return ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - SECTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4321
      start: 4319
    functionDepth: 0
    functionLinenumber: 4319
    functionLinenumberEnd: 4321
    functionName: CHECK_ORDER
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_ORDER(SECTION)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:4510,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_yang.c:4512,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4513,1
    - Dst: skip_comment
      Src: /src/libyang/src/parser_yang.c:4513,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yang.c:4514,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_yang.c:4516,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yang.c:4517,1
    - Dst: skip_comment
      Src: /src/libyang/src/parser_yang.c:4517,1
    - Dst: isspace
      Src: /src/libyang/src/parser_yang.c:4518,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yang.c:4521,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_yang.c:4523,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lys_yang_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4530
      start: 4505
    functionDepth: 2
    functionLinenumber: 4505
    functionLinenumberEnd: 4530
    functionName: skip_redundant_chars
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 0
    functionsReached:
    - ly_in_skip
    - LY_CHECK_RET
    - strncmp
    - LY_IN_NEW_LINE
    - isspace
    - skip_comment
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR skip_redundant_chars(struct lys_yang_parser_ctx *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:4543,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:4544,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:4544,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:4549,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yang.c:4550,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:4550,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/src/parser_yang.c:4555,1
    - Dst: memcpy
      Src: /src/libyang/src/parser_yang.c:4558,1
    - Dst: memcpy
      Src: /src/libyang/src/parser_yang.c:4559,1
    - Dst: skip_redundant_chars
      Src: /src/libyang/src/parser_yang.c:4562,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4563,1
    - Dst: get_keyword
      Src: /src/libyang/src/parser_yang.c:4566,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4567,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_yang.c:4570,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4574,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4574,1
    - Dst: parse_submodule
      Src: /src/libyang/src/parser_yang.c:4580,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4581,1
    - Dst: skip_redundant_chars
      Src: /src/libyang/src/parser_yang.c:4584,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4585,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4587,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yang.c:4587,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_yang.c:4596,1
    - Dst: lysp_module_free
      Src: /src/libyang/src/parser_yang.c:4598,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/src/parser_yang.c:4599,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 51
    argCount: 5
    argNames:
    - context
    - ly_ctx
    - main_ctx
    - in
    - submod
    argTypes:
    - struct lys_yang_parser_ctx**
    - struct ly_ctx*
    - struct lys_parser_ctx*
    - struct ly_in*
    - struct lysp_submodule**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4604
      start: 4532
    functionDepth: 19
    functionLinenumber: 4532
    functionLinenumberEnd: 4604
    functionName: yang_parse_submodule
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 1
    functionsReached:
    - skip_redundant_chars
    - LY_CHECK_ERR_GOTO
    - strlen
    - get_keyword
    - LOG_LOCBACK
    - LY_CHECK_ERR_RET
    - parse_submodule
    - yang_parser_ctx_free
    - LOGERR
    - LOGVAL_PARSER
    - lysp_module_free
    - ly_stmt2str
    - LY_CHECK_GOTO
    - LOG_LOCINIT
    - memcpy
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yang_parse_submodule(struct lys_yang_parser_ctx **context,
      struct ly_ctx *ly_ctx, struct lys_parser_ctx *main_ctx,\n        struct ly_in
      *in, struct lysp_submodule **submod)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:4616,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yang.c:4617,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:4617,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yang.c:4622,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yang.c:4623,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yang.c:4623,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/src/parser_yang.c:4628,1
    - Dst: skip_redundant_chars
      Src: /src/libyang/src/parser_yang.c:4631,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4632,1
    - Dst: get_keyword
      Src: /src/libyang/src/parser_yang.c:4635,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4636,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_yang.c:4639,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4643,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yang.c:4643,1
    - Dst: parse_module
      Src: /src/libyang/src/parser_yang.c:4649,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4650,1
    - Dst: skip_redundant_chars
      Src: /src/libyang/src/parser_yang.c:4653,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yang.c:4654,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yang.c:4656,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yang.c:4656,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_yang.c:4665,1
    - Dst: lysp_module_free
      Src: /src/libyang/src/parser_yang.c:4667,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/src/parser_yang.c:4668,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 4
    argNames:
    - context
    - in
    - mod
    - unres
    argTypes:
    - struct lys_yang_parser_ctx**
    - struct ly_in*
    - struct lys_module*
    - struct lys_glob_unres*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4673
      start: 4606
    functionDepth: 19
    functionLinenumber: 4606
    functionLinenumberEnd: 4673
    functionName: yang_parse_module
    functionSourceFile: /src/libyang/src/parser_yang.c
    functionUses: 2
    functionsReached:
    - skip_redundant_chars
    - LY_CHECK_ERR_GOTO
    - strlen
    - get_keyword
    - LOG_LOCBACK
    - LY_CHECK_ERR_RET
    - yang_parser_ctx_free
    - LOGERR
    - LOGVAL_PARSER
    - lysp_module_free
    - ly_stmt2str
    - LY_CHECK_GOTO
    - LOG_LOCINIT
    - parse_module
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yang_parse_module(struct lys_yang_parser_ctx **context, struct
      ly_in *in, struct lys_module *mod, struct lys_glob_unres *unres)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_json.c:71,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (node1 || node2)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/libyang/src/printer_json.c
    constantsTouched: []
    func_position:
      end: 88
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 88
    functionName: matching_node
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int matching_node(const struct lyd_node *node1, const struct lyd_node
      *node2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:100,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:101,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_json.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 105
    functionName: json_print_array_open
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_print_
    - ly_set_add
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_array_open(struct jsonpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: matching_node
      Src: /src/libyang/src/printer_json.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 123
    functionName: is_open_array
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - matching_node
    linkageType: ''
    returnType: int
    signature: int is_open_array(struct jsonpr_ctx *ctx, const struct lyd_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/printer_json.c:134,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct jsonpr_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: json_print_array_close
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - ly_set_rm_index
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void json_print_array_close(struct jsonpr_ctx *ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/src/printer_json.c:158,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_json.c:165,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_json.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 170
    functionName: node_prefix
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - LYD_CTX
    - LOGINT
    - ly_ctx_get_module_implemented_ns
    linkageType: ''
    returnType: char
    signature: 'char *

      node_prefix(const struct lyd_node *node)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_json.c:185,1
    - Dst: node_prefix
      Src: /src/libyang/src/printer_json.c:198,1
    - Dst: node_prefix
      Src: /src/libyang/src/printer_json.c:199,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - node1
    - node2
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (node1 || node2)
      pos:
        line_end: 184
        line_start: 184
        source_file: /src/libyang/src/printer_json.c
    constantsTouched: []
    func_position:
      end: 206
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 206
    functionName: json_nscmp
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - assert
    - node_prefix
    linkageType: ''
    returnType: int
    signature: int json_nscmp(const struct lyd_node *node1, const struct lyd_node
      *node2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_write_
      Src: /src/libyang/src/printer_json.c:224,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:229,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:233,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:236,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_json.c:239,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_json.c:244,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - out
    - text
    argTypes:
    - struct ly_out*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 247
    functionName: json_print_string
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - ly_write_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_string(struct ly_out *out, const char *text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_nscmp
      Src: /src/libyang/src/printer_json.c:261,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:263,1
    - Dst: node_prefix
      Src: /src/libyang/src/printer_json.c:264,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - node
    - is_attr
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 271
    functionName: json_print_member
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - json_nscmp
    - ly_print_
    - node_prefix
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_member(struct jsonpr_ctx *ctx, const struct lyd_node
      *node, ly_bool is_attr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/src/printer_json.c:300,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/printer_json.c:307,1
    - Dst: node_prefix
      Src: /src/libyang/src/printer_json.c:316,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:317,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:319,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - parent
    - format
    - name
    - is_attr
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    - LY_VALUE_FORMAT
    - struct ly_opaq_name*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 323
    functionName: json_print_member2
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - LOGINT_RET
    - ly_ctx_get_module_implemented_ns
    - node_prefix
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR json_print_member2(struct jsonpr_ctx *ctx, const struct lyd_node
      *parent, LY_VALUE_FORMAT format,\n        const struct ly_opaq_name *name, ly_bool
      is_attr)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::realtype::plugin::print
      Src: /src/libyang/src/printer_json.c:336,1
    - Dst: json_print_string
      Src: /src/libyang/src/printer_json.c:350,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:360,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:364,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/printer_json.c:369,1
    - Dst: free
      Src: /src/libyang/src/printer_json.c:373,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - val
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 332
    functionDepth: 2
    functionLinenumber: 332
    functionLinenumberEnd: 377
    functionName: json_print_value
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - LOGINT_RET
    - ly_print_
    - free
    - json_print_string
    - struct lyd_value*::realtype::plugin::print
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_value(struct jsonpr_ctx *ctx, const struct lyd_value
      *val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:393,1
    - Dst: json_print_member2
      Src: /src/libyang/src/printer_json.c:399,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:402,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:404,1
    - Dst: json_print_string
      Src: /src/libyang/src/printer_json.c:406,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - node
    - wdmod
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node_opaq*
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 412
    functionName: json_print_attribute
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - json_print_member2
    - ly_print_
    - json_print_string
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_attribute(struct jsonpr_ctx *ctx, const struct lyd_node_opaq
      *node, const struct lys_module *wdmod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:428,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:434,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:435,1
    - Dst: json_print_value
      Src: /src/libyang/src/printer_json.c:435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - node
    - wdmod
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 440
    functionName: json_print_metadata
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_print_
    - json_print_value
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_metadata(struct jsonpr_ctx *ctx, const struct lyd_node
      *node, const struct lys_module *wdmod)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/printer_json.c:458,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_json.c:458,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:463,1
    - Dst: json_print_member2
      Src: /src/libyang/src/printer_json.c:463,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:465,1
    - Dst: json_print_member
      Src: /src/libyang/src/printer_json.c:465,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:467,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:469,1
    - Dst: json_print_metadata
      Src: /src/libyang/src/printer_json.c:469,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:471,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:475,1
    - Dst: json_print_member2
      Src: /src/libyang/src/printer_json.c:475,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:477,1
    - Dst: json_print_member2
      Src: /src/libyang/src/printer_json.c:477,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:480,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:482,1
    - Dst: json_print_attribute
      Src: /src/libyang/src/printer_json.c:482,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:484,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - node
    - inner
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 450
    functionDepth: 4
    functionLinenumber: 450
    functionLinenumberEnd: 489
    functionName: json_print_attributes
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - ly_ctx_get_module_implemented
    - LY_CHECK_RET
    - json_print_attribute
    - json_print_metadata
    - json_print_member2
    - json_print_member
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_attributes(struct jsonpr_ctx *ctx, const struct lyd_node
      *node, ly_bool inner)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:501,1
    - Dst: json_print_member
      Src: /src/libyang/src/printer_json.c:501,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:502,1
    - Dst: json_print_value
      Src: /src/libyang/src/printer_json.c:502,1
    - Dst: json_print_attributes
      Src: /src/libyang/src/printer_json.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 498
    functionDepth: 5
    functionLinenumber: 498
    functionLinenumberEnd: 509
    functionName: json_print_leaf
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - json_print_member
    - json_print_value
    - json_print_attributes
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_leaf(struct jsonpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ly_log_options
      Src: /src/libyang/src/printer_json.c:534,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/src/printer_json.c:537,1
    - Dst: free
      Src: /src/libyang/src/printer_json.c:539,1
    - Dst: ly_log_options
      Src: /src/libyang/src/printer_json.c:545,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_json.c:554,1
    - Dst: json_print_node
      Src: /src/libyang/src/printer_json.c:555,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_json.c:556,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:566,1
    - Dst: LOGWRN
      Src: /src/libyang/src/printer_json.c:572,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - any
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 518
    functionDepth: 4
    functionLinenumber: 518
    functionLinenumberEnd: 577
    functionName: json_print_anydata
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - ly_print_
    - free
    - LY_LIST_FOR
    - lyd_parse_data_mem
    - ly_log_options
    - LOGWRN
    - json_print_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_anydata(struct jsonpr_ctx *ctx, struct lyd_node_any
      *any)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ly_should_print
      Src: /src/libyang/src/printer_json.c:594,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:605,1
    - Dst: is_open_array
      Src: /src/libyang/src/printer_json.c:605,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:608,1
    - Dst: is_open_array
      Src: /src/libyang/src/printer_json.c:608,1
    - Dst: json_print_attributes
      Src: /src/libyang/src/printer_json.c:613,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:618,1
    - Dst: json_print_node
      Src: /src/libyang/src/printer_json.c:618,1
    - Dst: json_print_anydata
      Src: /src/libyang/src/printer_json.c:622,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:627,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:629,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 587
    functionDepth: 5
    functionLinenumber: 587
    functionLinenumberEnd: 634
    functionName: json_print_inner
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - json_print_attributes
    - json_print_anydata
    - LY_CHECK_RET
    - ly_should_print
    - is_open_array
    - json_print_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_inner(struct jsonpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_should_print
      Src: /src/libyang/src/printer_json.c:594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 593
    functionDepth: 1
    functionLinenumber: 593
    functionLinenumberEnd: 597
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 15
    functionsReached:
    - ly_should_print
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(node), child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:618,1
    - Dst: json_print_node
      Src: /src/libyang/src/printer_json.c:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 619
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 15
    functionsReached:
    - LY_CHECK_RET
    - json_print_node
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(node), child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:646,1
    - Dst: json_print_member
      Src: /src/libyang/src/printer_json.c:646,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:647,1
    - Dst: json_print_inner
      Src: /src/libyang/src/printer_json.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 643
    functionDepth: 6
    functionLinenumber: 643
    functionLinenumberEnd: 650
    functionName: json_print_container
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - json_print_member
    - json_print_inner
    linkageType: ''
    returnType: int
    signature: int json_print_container(struct jsonpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_open_array
      Src: /src/libyang/src/printer_json.c:666,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:667,1
    - Dst: json_print_member
      Src: /src/libyang/src/printer_json.c:667,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:668,1
    - Dst: json_print_array_open
      Src: /src/libyang/src/printer_json.c:668,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:670,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:673,1
    - Dst: lyd_child
      Src: /src/libyang/src/printer_json.c:677,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:679,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:683,1
    - Dst: json_print_inner
      Src: /src/libyang/src/printer_json.c:683,1
    - Dst: assert
      Src: /src/libyang/src/printer_json.c:686,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:687,1
    - Dst: json_print_value
      Src: /src/libyang/src/printer_json.c:687,1
    - Dst: is_open_array
      Src: /src/libyang/src/printer_json.c:694,1
    - Dst: json_print_array_close
      Src: /src/libyang/src/printer_json.c:695,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    assertStmts:
    - condition: (node->schema->nodetype == LYS_LEAFLIST)
      pos:
        line_end: 685
        line_start: 685
        source_file: /src/libyang/src/printer_json.c
    constantsTouched: []
    func_position:
      end: 699
      start: 663
    functionDepth: 6
    functionLinenumber: 663
    functionLinenumberEnd: 699
    functionName: json_print_leaf_list
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - assert
    - json_print_array_close
    - json_print_inner
    - json_print_array_open
    - ly_print_
    - LY_CHECK_RET
    - lyd_child
    - json_print_member
    - json_print_value
    - is_open_array
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_leaf_list(struct jsonpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: matching_node
      Src: /src/libyang/src/printer_json.c:718,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:723,1
    - Dst: json_print_member
      Src: /src/libyang/src/printer_json.c:723,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:724,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:729,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:731,1
    - Dst: json_print_metadata
      Src: /src/libyang/src/printer_json.c:731,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:733,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:735,1
    - Dst: matching_node
      Src: /src/libyang/src/printer_json.c:738,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:743,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct jsonpr_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 708
    functionDepth: 4
    functionLinenumber: 708
    functionLinenumberEnd: 747
    functionName: json_print_metadata_leaflist
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - matching_node
    - ly_print_
    - LY_CHECK_RET
    - json_print_metadata
    - json_print_member
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_metadata_leaflist(struct jsonpr_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:729,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:731,1
    - Dst: json_print_metadata
      Src: /src/libyang/src/printer_json.c:731,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:733,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:735,1
    - Dst: matching_node
      Src: /src/libyang/src/printer_json.c:738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 726
    functionDepth: 4
    functionLinenumber: 726
    functionLinenumberEnd: 741
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 15
    functionsReached:
    - LY_CHECK_RET
    - matching_node
    - ly_print_
    - json_print_metadata
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(node, iter)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: matching_node
      Src: /src/libyang/src/printer_json.c:762,1
    - Dst: matching_node
      Src: /src/libyang/src/printer_json.c:765,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:771,1
    - Dst: json_print_member2
      Src: /src/libyang/src/printer_json.c:771,1
    - Dst: lyd_parent
      Src: /src/libyang/src/printer_json.c:771,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:774,1
    - Dst: json_print_array_open
      Src: /src/libyang/src/printer_json.c:774,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:779,1
    - Dst: json_print_inner
      Src: /src/libyang/src/printer_json.c:779,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:783,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:785,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:788,1
    - Dst: json_print_attributes
      Src: /src/libyang/src/printer_json.c:793,1
    - Dst: json_print_array_close
      Src: /src/libyang/src/printer_json.c:797,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node_opaq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 756
    functionDepth: 6
    functionLinenumber: 756
    functionLinenumberEnd: 803
    functionName: json_print_opaq
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - matching_node
    - json_print_array_close
    - lyd_parent
    - json_print_inner
    - json_print_array_open
    - ly_print_
    - json_print_attributes
    - LY_CHECK_RET
    - json_print_member2
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_opaq(struct jsonpr_ctx *ctx, const struct lyd_node_opaq
      *node)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ly_should_print
      Src: /src/libyang/src/printer_json.c:815,1
    - Dst: is_open_array
      Src: /src/libyang/src/printer_json.c:816,1
    - Dst: json_print_array_close
      Src: /src/libyang/src/printer_json.c:817,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:823,1
    - Dst: json_print_opaq
      Src: /src/libyang/src/printer_json.c:823,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:830,1
    - Dst: json_print_container
      Src: /src/libyang/src/printer_json.c:830,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:833,1
    - Dst: json_print_leaf
      Src: /src/libyang/src/printer_json.c:833,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:837,1
    - Dst: json_print_leaf_list
      Src: /src/libyang/src/printer_json.c:837,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:841,1
    - Dst: json_print_container
      Src: /src/libyang/src/printer_json.c:841,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_json.c:844,1
    - Dst: matching_node
      Src: /src/libyang/src/printer_json.c:851,1
    - Dst: json_print_metadata_leaflist
      Src: /src/libyang/src/printer_json.c:852,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct jsonpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 812
    functionDepth: 7
    functionLinenumber: 812
    functionLinenumberEnd: 857
    functionName: json_print_node
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 3
    functionsReached:
    - matching_node
    - json_print_array_close
    - json_print_leaf
    - json_print_metadata_leaflist
    - LOGINT
    - LY_CHECK_RET
    - json_print_leaf_list
    - json_print_opaq
    - ly_should_print
    - json_print_container
    - is_open_array
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_node(struct jsonpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:867,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_json.c:868,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_json.c:876,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:879,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:883,1
    - Dst: json_print_node
      Src: /src/libyang/src/printer_json.c:883,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_json.c:890,1
    - Dst: assert
      Src: /src/libyang/src/printer_json.c:892,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/printer_json.c:893,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_json.c:895,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - out
    - root
    - options
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - uint32_t
    assertStmts:
    - condition: (!ctx.open.count)
      pos:
        line_end: 891
        line_start: 891
        source_file: /src/libyang/src/printer_json.c
    constantsTouched: []
    func_position:
      end: 897
      start: 859
    functionDepth: 8
    functionLinenumber: 859
    functionLinenumberEnd: 897
    functionName: json_print_data
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - LY_CHECK_RET
    - ly_print_flush
    - ly_set_erase
    - LYD_CTX
    - assert
    - json_print_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR json_print_data(struct ly_out *out, const struct lyd_node *root,
      uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_json.c:883,1
    - Dst: json_print_node
      Src: /src/libyang/src/printer_json.c:883,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 882
    functionDepth: 8
    functionLinenumber: 882
    functionLinenumberEnd: 887
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_json.c
    functionUses: 15
    functionsReached:
    - LY_CHECK_RET
    - json_print_node
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(root, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 29
    functionName: is_jsonws
    functionSourceFile: /src/libyang/src/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_jsonws(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: is_jsonstrchar
    functionSourceFile: /src/libyang/src/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_jsonstrchar(c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/hash_table.c:38,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:43,1
    - Dst: LOGARG
      Src: /src/libyang/src/hash_table.c:43,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:44,1
    - Dst: LOGARG
      Src: /src/libyang/src/hash_table.c:44,1
    - Dst: strncmp
      Src: /src/libyang/src/hash_table.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - UNUSED
    - cb_data
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 51
    functionName: lydict_val_eq
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - strncmp
    - LY_CHECK_ERR_RET
    - LOGARG
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lydict_val_eq(void *val1_p, void *val2_p, ly_bool UNUSED(mod),
      void *cb_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/hash_table.c:56,1
    - Dst: lyht_new
      Src: /src/libyang/src/hash_table.c:58,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:59,1
    - Dst: LOGINT
      Src: /src/libyang/src/hash_table.c:59,1
    - Dst: pthread_mutex_init
      Src: /src/libyang/src/hash_table.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 61
    functionName: lydict_init
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_ARG_RET
    - LOGINT
    - pthread_mutex_init
    - lyht_new
    linkageType: ''
    returnType: void
    signature: void lydict_init(struct dict_table *dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/hash_table.c:69,1
    - Dst: LOGWRN
      Src: /src/libyang/src/hash_table.c:81,1
    - Dst: free
      Src: /src/libyang/src/hash_table.c:84,1
    - Dst: lyht_free
      Src: /src/libyang/src/hash_table.c:90,1
    - Dst: pthread_mutex_destroy
      Src: /src/libyang/src/hash_table.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - dict
    argTypes:
    - struct dict_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 92
    functionName: lydict_clean
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - free
    - LOGWRN
    - pthread_mutex_destroy
    - lyht_free
    linkageType: ''
    returnType: void
    signature: void lydict_clean(struct dict_table *dict)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - hash
    - key_part
    - len
    argTypes:
    - uint32_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 118
    functionName: dict_hash_multi
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dict_hash_multi(uint32_t hash, const char *key_part, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dict_hash_multi
      Src: /src/libyang/src/hash_table.c:131,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/hash_table.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 133
    functionName: dict_hash
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - dict_hash_multi
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dict_hash(const char *key, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/hash_table.c:138,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:143,1
    - Dst: LOGARG
      Src: /src/libyang/src/hash_table.c:143,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:144,1
    - Dst: LOGARG
      Src: /src/libyang/src/hash_table.c:144,1
    - Dst: strcmp
      Src: /src/libyang/src/hash_table.c:148,1
    - Dst: lydict_val_eq
      Src: /src/libyang/src/hash_table.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - mod
    - cb_data
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 157
    functionName: lydict_resize_val_eq
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LOGARG
    - LY_CHECK_ARG_RET
    - strcmp
    - lydict_val_eq
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lydict_resize_val_eq(void *val1_p, void *val2_p, ly_bool mod,
      void *cb_data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGDBG
      Src: /src/libyang/src/hash_table.c:172,1
    - Dst: strlen
      Src: /src/libyang/src/hash_table.c:174,1
    - Dst: dict_hash
      Src: /src/libyang/src/hash_table.c:175,1
    - Dst: pthread_mutex_lock
      Src: /src/libyang/src/hash_table.c:181,1
    - Dst: lyht_set_cb_data
      Src: /src/libyang/src/hash_table.c:183,1
    - Dst: lyht_find
      Src: /src/libyang/src/hash_table.c:185,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/hash_table.c:188,1
    - Dst: LOGINT
      Src: /src/libyang/src/hash_table.c:188,1
    - Dst: lyht_remove_with_resize_cb
      Src: /src/libyang/src/hash_table.c:199,1
    - Dst: free
      Src: /src/libyang/src/hash_table.c:200,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/hash_table.c:201,1
    - Dst: LOGINT
      Src: /src/libyang/src/hash_table.c:201,1
    - Dst: LOGERR
      Src: /src/libyang/src/hash_table.c:204,1
    - Dst: LOGINT
      Src: /src/libyang/src/hash_table.c:206,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/hash_table.c:210,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 212
    functionName: lydict_remove
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 21
    functionsReached:
    - dict_hash
    - strlen
    - pthread_mutex_lock
    - LY_CHECK_ERR_GOTO
    - lyht_remove_with_resize_cb
    - LOGERR
    - LOGINT
    - free
    - LOGDBG
    - lyht_set_cb_data
    - lyht_find
    - pthread_mutex_unlock
    linkageType: ''
    returnType: API
    signature: API lydict_remove(const struct ly_ctx *ctx, const char *value)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGDBG
      Src: /src/libyang/src/hash_table.c:221,1
    - Dst: dict_hash
      Src: /src/libyang/src/hash_table.c:223,1
    - Dst: lyht_set_cb_data
      Src: /src/libyang/src/hash_table.c:225,1
    - Dst: lyht_insert_with_resize_cb
      Src: /src/libyang/src/hash_table.c:230,1
    - Dst: free
      Src: /src/libyang/src/hash_table.c:234,1
    - Dst: malloc
      Src: /src/libyang/src/hash_table.c:243,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:244,1
    - Dst: LOGMEM
      Src: /src/libyang/src/hash_table.c:244,1
    - Dst: memcpy
      Src: /src/libyang/src/hash_table.c:245,1
    - Dst: free
      Src: /src/libyang/src/hash_table.c:251,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 5
    argNames:
    - ctx
    - value
    - len
    - zerocopy
    - str_p
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - ly_bool
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 261
    functionName: dict_insert
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 17
    functionsReached:
    - dict_hash
    - lyht_insert_with_resize_cb
    - LY_CHECK_ERR_RET
    - malloc
    - free
    - LOGDBG
    - lyht_set_cb_data
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR dict_insert(const struct ly_ctx *ctx, char *value, size_t len,
      ly_bool zerocopy, const char **str_p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/hash_table.c:268,1
    - Dst: strlen
      Src: /src/libyang/src/hash_table.c:276,1
    - Dst: pthread_mutex_lock
      Src: /src/libyang/src/hash_table.c:279,1
    - Dst: dict_insert
      Src: /src/libyang/src/hash_table.c:280,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/hash_table.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - value
    - len
    - str_p
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 284
    functionName: lydict_insert
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 17
    functionsReached:
    - pthread_mutex_lock
    - strlen
    - LY_CHECK_ARG_RET
    - dict_insert
    - pthread_mutex_unlock
    linkageType: ''
    returnType: API
    signature: API lydict_insert(const struct ly_ctx *ctx, const char *value, size_t
      len, const char **str_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/hash_table.c:291,1
    - Dst: pthread_mutex_lock
      Src: /src/libyang/src/hash_table.c:298,1
    - Dst: dict_insert
      Src: /src/libyang/src/hash_table.c:299,1
    - Dst: strlen
      Src: /src/libyang/src/hash_table.c:299,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/hash_table.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - value
    - str_p
    argTypes:
    - struct ly_ctx*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 303
    functionName: lydict_insert_zc
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 6
    functionsReached:
    - pthread_mutex_lock
    - strlen
    - LY_CHECK_ARG_RET
    - dict_insert
    - pthread_mutex_unlock
    linkageType: ''
    returnType: API
    signature: API lydict_insert_zc(const struct ly_ctx *ctx, char *value, const char
      **str_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - recs
    - rec_size
    - idx
    argTypes:
    - unsigned char*
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 309
    functionName: lyht_get_rec
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct ht_rec
    signature: 'struct ht_rec *

      lyht_get_rec(unsigned char *recs, uint16_t rec_size, uint32_t idx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:317,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:318,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:319,1
    - Dst: malloc
      Src: /src/libyang/src/hash_table.c:325,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:326,1
    - Dst: LOGMEM
      Src: /src/libyang/src/hash_table.c:326,1
    - Dst: calloc
      Src: /src/libyang/src/hash_table.c:337,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:338,1
    - Dst: free
      Src: /src/libyang/src/hash_table.c:338,1
    - Dst: LOGMEM
      Src: /src/libyang/src/hash_table.c:338,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - size
    - val_size
    - val_equal
    - cb_data
    - resize
    argTypes:
    - uint32_t
    - uint16_t
    - lyht_value_equal_cb
    - void*
    - uint16_t
    assertStmts:
    - condition: (size && !(size & (size - 1)))
      pos:
        line_end: 316
        line_start: 316
        source_file: /src/libyang/src/hash_table.c
    - condition: (val_equal && val_size)
      pos:
        line_end: 317
        line_start: 317
        source_file: /src/libyang/src/hash_table.c
    - condition: (resize == 0 || resize == 1)
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 341
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 341
    functionName: lyht_new
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 4
    functionsReached:
    - assert
    - LY_CHECK_ERR_RET
    - malloc
    - free
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: struct hash_table
    signature: 'struct hash_table *

      lyht_new(uint32_t size, uint16_t val_size, lyht_value_equal_cb val_equal, void
      *cb_data, uint16_t resize)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ht
    - new_val_equal
    argTypes:
    - struct hash_table*
    - lyht_value_equal_cb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 351
    functionName: lyht_set_cb
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: lyht_value_equal_cb
    signature: lyht_value_equal_cb lyht_set_cb(struct hash_table *ht, lyht_value_equal_cb
      new_val_equal)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ht
    - new_cb_data
    argTypes:
    - struct hash_table*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 361
    functionName: lyht_set_cb_data
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      lyht_set_cb_data(struct hash_table *ht, void *new_cb_data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/hash_table.c:368,1
    - Dst: lyht_new
      Src: /src/libyang/src/hash_table.c:370,1
    - Dst: memcpy
      Src: /src/libyang/src/hash_table.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 379
    functionName: lyht_dup
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - memcpy
    - lyht_new
    linkageType: ''
    returnType: struct hash_table
    signature: 'struct hash_table *

      lyht_dup(const struct hash_table *orig)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/hash_table.c:385,1
    - Dst: free
      Src: /src/libyang/src/hash_table.c:386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ht
    argTypes:
    - struct hash_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 388
    functionName: lyht_free
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void lyht_free(struct hash_table *ht)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/hash_table.c:415,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:416,1
    - Dst: LOGMEM
      Src: /src/libyang/src/hash_table.c:416,1
    - Dst: lyht_get_rec
      Src: /src/libyang/src/hash_table.c:424,1
    - Dst: lyht_insert
      Src: /src/libyang/src/hash_table.c:426,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:427,1
    - Dst: free
      Src: /src/libyang/src/hash_table.c:433,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - ht
    - operation
    argTypes:
    - struct hash_table*
    - int
    assertStmts:
    - condition: (!ret)
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 435
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 435
    functionName: lyht_resize
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - assert
    - lyht_insert
    - LY_CHECK_ERR_RET
    - free
    - lyht_get_rec
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_resize(struct hash_table *ht, int operation)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lyht_get_rec
      Src: /src/libyang/src/hash_table.c:457,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:469,1
    - Dst: lyht_get_rec
      Src: /src/libyang/src/hash_table.c:472,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 3
    argNames:
    - ht
    - hash
    - rec_p
    argTypes:
    - struct hash_table*
    - uint32_t
    - struct ht_rec**
    assertStmts:
    - condition: (!rec_p || *rec_p)
      pos:
        line_end: 468
        line_start: 468
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 487
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 487
    functionName: lyht_find_first
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - lyht_get_rec
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_find_first(struct hash_table *ht, uint32_t hash, struct
      ht_rec **rec_p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:504,1
    - Dst: lyht_get_rec
      Src: /src/libyang/src/hash_table.c:511,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:515,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:527,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - ht
    - last
    - first
    argTypes:
    - struct hash_table*
    - struct ht_rec**
    - struct ht_rec*
    assertStmts:
    - condition: (last && *last)
      pos:
        line_end: 503
        line_start: 503
        source_file: /src/libyang/src/hash_table.c
    - condition: (empty)
      pos:
        line_end: 514
        line_start: 514
        source_file: /src/libyang/src/hash_table.c
    - condition: ((*last)->hits == 1)
      pos:
        line_end: 526
        line_start: 526
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 536
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 536
    functionName: lyht_find_collision
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - lyht_get_rec
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_find_collision(struct hash_table *ht, struct ht_rec **last,
      struct ht_rec *first)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lyht_find_first
      Src: /src/libyang/src/hash_table.c:567,1
    - Dst: struct hash_table*::val_equal
      Src: /src/libyang/src/hash_table.c:571,1
    - Dst: lyht_find_collision
      Src: /src/libyang/src/hash_table.c:587,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:588,1
    - Dst: struct hash_table*::val_equal
      Src: /src/libyang/src/hash_table.c:592,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 7
    argNames:
    - ht
    - val_p
    - hash
    - mod
    - crec_p
    - col
    - rec_p
    argTypes:
    - struct hash_table*
    - void*
    - uint32_t
    - ly_bool
    - struct ht_rec**
    - uint32_t*
    - struct ht_rec**
    assertStmts:
    - condition: (!r)
      pos:
        line_end: 587
        line_start: 587
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 606
      start: 551
    functionDepth: 2
    functionLinenumber: 551
    functionLinenumberEnd: 606
    functionName: lyht_find_rec
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 0
    functionsReached:
    - struct hash_table*::val_equal
    - lyht_find_collision
    - lyht_find_first
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyht_find_rec(struct hash_table *ht, void *val_p, uint32_t
      hash, ly_bool mod, struct ht_rec **crec_p, uint32_t *col,\n        struct ht_rec
      **rec_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyht_find_rec
      Src: /src/libyang/src/hash_table.c:613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ht
    - val_p
    - hash
    - match_p
    argTypes:
    - struct hash_table*
    - void*
    - uint32_t
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 608
    functionDepth: 3
    functionLinenumber: 608
    functionLinenumberEnd: 619
    functionName: lyht_find
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 7
    functionsReached:
    - lyht_find_rec
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_find(struct hash_table *ht, void *val_p, uint32_t hash,
      void **match_p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyht_find_rec
      Src: /src/libyang/src/hash_table.c:629,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/hash_table.c:631,1
    - Dst: lyht_find_collision
      Src: /src/libyang/src/hash_table.c:637,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:638,1
    - Dst: struct hash_table*::val_equal
      Src: /src/libyang/src/hash_table.c:641,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - ht
    - val_p
    - hash
    - match_p
    argTypes:
    - struct hash_table*
    - void*
    - uint32_t
    - void**
    assertStmts:
    - condition: (!r)
      pos:
        line_end: 637
        line_start: 637
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 652
      start: 621
    functionDepth: 3
    functionLinenumber: 621
    functionLinenumberEnd: 652
    functionName: lyht_find_next
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 1
    functionsReached:
    - lyht_find_collision
    - LOGINT_RET
    - lyht_find_rec
    - struct hash_table*::val_equal
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_find_next(struct hash_table *ht, void *val_p, uint32_t
      hash, void **match_p)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lyht_find_first
      Src: /src/libyang/src/hash_table.c:663,1
    - Dst: struct hash_table*::val_equal
      Src: /src/libyang/src/hash_table.c:665,1
    - Dst: lyht_find_collision
      Src: /src/libyang/src/hash_table.c:676,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:677,1
    - Dst: struct hash_table*::val_equal
      Src: /src/libyang/src/hash_table.c:680,1
    - Dst: lyht_find_collision
      Src: /src/libyang/src/hash_table.c:689,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:690,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:694,1
    - Dst: memcpy
      Src: /src/libyang/src/hash_table.c:700,1
    - Dst: LOGINT
      Src: /src/libyang/src/hash_table.c:708,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/hash_table.c:723,1
    - Dst: lyht_resize
      Src: /src/libyang/src/hash_table.c:727,1
    - Dst: lyht_find
      Src: /src/libyang/src/hash_table.c:730,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/hash_table.c:734,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 58
    argCount: 5
    argNames:
    - ht
    - val_p
    - hash
    - resize_val_equal
    - match_p
    argTypes:
    - struct hash_table*
    - void*
    - uint32_t
    - lyht_value_equal_cb
    - void**
    assertStmts:
    - condition: (!r)
      pos:
        line_end: 676
        line_start: 676
        source_file: /src/libyang/src/hash_table.c
    - condition: (r)
      pos:
        line_end: 689
        line_start: 689
        source_file: /src/libyang/src/hash_table.c
    - condition: (rec->hits < 1)
      pos:
        line_end: 693
        line_start: 693
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 739
      start: 654
    functionDepth: 4
    functionLinenumber: 654
    functionLinenumberEnd: 739
    functionName: lyht_insert_with_resize_cb
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 1
    functionsReached:
    - assert
    - lyht_find_collision
    - lyht_find_first
    - lyht_resize
    - LOGINT
    - lyht_find
    - struct hash_table*::val_equal
    - lyht_set_cb
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyht_insert_with_resize_cb(struct hash_table *ht, void *val_p,
      uint32_t hash, lyht_value_equal_cb resize_val_equal,\n        void **match_p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyht_insert_with_resize_cb
      Src: /src/libyang/src/hash_table.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ht
    - val_p
    - hash
    - match_p
    argTypes:
    - struct hash_table*
    - void*
    - uint32_t
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 741
    functionDepth: 5
    functionLinenumber: 741
    functionLinenumberEnd: 745
    functionName: lyht_insert
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 4
    functionsReached:
    - lyht_insert_with_resize_cb
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_insert(struct hash_table *ht, void *val_p, uint32_t hash,
      void **match_p)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/hash_table.c:756,1
    - Dst: lyht_find_first
      Src: /src/libyang/src/hash_table.c:756,1
    - Dst: LOGARG
      Src: /src/libyang/src/hash_table.c:756,1
    - Dst: struct hash_table*::val_equal
      Src: /src/libyang/src/hash_table.c:758,1
    - Dst: lyht_find_collision
      Src: /src/libyang/src/hash_table.c:766,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:767,1
    - Dst: struct hash_table*::val_equal
      Src: /src/libyang/src/hash_table.c:770,1
    - Dst: assert
      Src: /src/libyang/src/hash_table.c:777,1
    - Dst: memcpy
      Src: /src/libyang/src/hash_table.c:785,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/hash_table.c:800,1
    - Dst: lyht_resize
      Src: /src/libyang/src/hash_table.c:804,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/hash_table.c:807,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/hash_table.c:816,1
    - Dst: lyht_resize
      Src: /src/libyang/src/hash_table.c:820,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/hash_table.c:823,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 4
    argNames:
    - ht
    - val_p
    - hash
    - resize_val_equal
    argTypes:
    - struct hash_table*
    - void*
    - uint32_t
    - lyht_value_equal_cb
    assertStmts:
    - condition: (!r)
      pos:
        line_end: 766
        line_start: 766
        source_file: /src/libyang/src/hash_table.c
    - condition: (!first_matched)
      pos:
        line_end: 776
        line_start: 776
        source_file: /src/libyang/src/hash_table.c
    constantsTouched: []
    func_position:
      end: 828
      start: 747
    functionDepth: 2
    functionLinenumber: 747
    functionLinenumberEnd: 828
    functionName: lyht_remove_with_resize_cb
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 1
    functionsReached:
    - lyht_find_collision
    - LY_CHECK_ERR_RET
    - lyht_find_first
    - LOGARG
    - memcpy
    - lyht_resize
    - struct hash_table*::val_equal
    - lyht_set_cb
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_remove_with_resize_cb(struct hash_table *ht, void *val_p,
      uint32_t hash, lyht_value_equal_cb resize_val_equal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyht_remove_with_resize_cb
      Src: /src/libyang/src/hash_table.c:833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ht
    - val_p
    - hash
    argTypes:
    - struct hash_table*
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 830
    functionDepth: 3
    functionLinenumber: 830
    functionLinenumberEnd: 834
    functionName: lyht_remove
    functionSourceFile: /src/libyang/src/hash_table.c
    functionUses: 3
    functionsReached:
    - lyht_remove_with_resize_cb
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyht_remove(struct hash_table *ht, void *val_p, uint32_t hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - in
    argTypes:
    - struct ly_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: ly_in_type
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 4
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API ly_in_type(const struct ly_in *in)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:66,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/in.c:68,1
    - Dst: ly_mmap
      Src: /src/libyang/src/in.c:68,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:70,1
    - Dst: calloc
      Src: /src/libyang/src/in.c:74,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/in.c:75,1
    - Dst: LOGMEM
      Src: /src/libyang/src/in.c:75,1
    - Dst: ly_munmap
      Src: /src/libyang/src/in.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - fd
    - in
    argTypes:
    - int
    - struct ly_in**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 84
    functionName: ly_in_new_fd
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ERR_RET
    - LOGERR
    - LY_CHECK_ARG_RET
    - ly_munmap
    - LY_CHECK_RET
    - ly_mmap
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_in_new_fd(int fd, struct ly_in **in)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:93,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/in.c:98,1
    - Dst: ly_mmap
      Src: /src/libyang/src/in.c:98,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:100,1
    - Dst: ly_munmap
      Src: /src/libyang/src/in.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - in
    - fd
    argTypes:
    - struct ly_in*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 113
    functionName: ly_in_fd
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 1
    functionsReached:
    - LOGERR
    - LY_CHECK_ARG_RET
    - ly_munmap
    - LY_CHECK_RET
    - ly_mmap
    linkageType: ''
    returnType: API
    signature: API ly_in_fd(struct ly_in *in, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:118,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/in.c:120,1
    - Dst: ly_in_new_fd
      Src: /src/libyang/src/in.c:120,1
    - Dst: fileno
      Src: /src/libyang/src/in.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - f
    - in
    argTypes:
    - FILE*
    - struct ly_in**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 127
    functionName: ly_in_new_file
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - ly_in_new_fd
    - fileno
    linkageType: ''
    returnType: API
    signature: API ly_in_new_file(FILE *f, struct ly_in **in)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:134,1
    - Dst: fileno
      Src: /src/libyang/src/in.c:141,1
    - Dst: ly_in_fd
      Src: /src/libyang/src/in.c:142,1
    - Dst: fileno
      Src: /src/libyang/src/in.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - in
    - f
    argTypes:
    - struct ly_in*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 154
    functionName: ly_in_file
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 1
    functionsReached:
    - ly_in_fd
    - LY_CHECK_ARG_RET
    - fileno
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_in_file(struct ly_in *in, FILE *f)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:159,1
    - Dst: calloc
      Src: /src/libyang/src/in.c:161,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/in.c:162,1
    - Dst: LOGMEM
      Src: /src/libyang/src/in.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - str
    - in
    argTypes:
    - char*
    - struct ly_in**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 169
    functionName: ly_in_new_memory
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 42
    functionsReached:
    - LOGMEM
    - LY_CHECK_ARG_RET
    - LY_CHECK_ERR_RET
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_in_new_memory(const char *str, struct ly_in **in)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - in
    - str
    argTypes:
    - struct ly_in*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 186
    functionName: ly_in_memory
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 8
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_in_memory(struct ly_in *in, const char *str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - in
    argTypes:
    - struct ly_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 196
    functionName: ly_in_reset
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API ly_in_reset(struct ly_in *in)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:205,1
    - Dst: strndup
      Src: /src/libyang/src/in.c:208,1
    - Dst: strdup
      Src: /src/libyang/src/in.c:210,1
    - Dst: open
      Src: /src/libyang/src/in.c:213,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/in.c:214,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:214,1
    - Dst: strerror
      Src: /src/libyang/src/in.c:214,1
    - Dst: free
      Src: /src/libyang/src/in.c:214,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/in.c:217,1
    - Dst: ly_in_new_fd
      Src: /src/libyang/src/in.c:217,1
    - Dst: free
      Src: /src/libyang/src/in.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - filepath
    - len
    - in
    argTypes:
    - char*
    - size_t
    - struct ly_in**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 225
    functionName: ly_in_new_filepath
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 4
    functionsReached:
    - open
    - LY_CHECK_ERR_RET
    - strerror
    - LY_CHECK_ARG_RET
    - LOGERR
    - free
    - ly_in_new_fd
    - strdup
    - strndup
    linkageType: ''
    returnType: API
    signature: API ly_in_new_filepath(const char *filepath, size_t len, struct ly_in
      **in)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:233,1
    - Dst: strndup
      Src: /src/libyang/src/in.c:240,1
    - Dst: strdup
      Src: /src/libyang/src/in.c:242,1
    - Dst: open
      Src: /src/libyang/src/in.c:246,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/in.c:247,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:247,1
    - Dst: strerror
      Src: /src/libyang/src/in.c:247,1
    - Dst: free
      Src: /src/libyang/src/in.c:247,1
    - Dst: ly_in_fd
      Src: /src/libyang/src/in.c:251,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/in.c:252,1
    - Dst: free
      Src: /src/libyang/src/in.c:252,1
    - Dst: close
      Src: /src/libyang/src/in.c:256,1
    - Dst: free
      Src: /src/libyang/src/in.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - in
    - filepath
    - len
    argTypes:
    - struct ly_in*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 262
    functionName: ly_in_filepath
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 1
    functionsReached:
    - ly_in_fd
    - open
    - LY_CHECK_ERR_RET
    - strerror
    - LY_CHECK_ARG_RET
    - LOGERR
    - free
    - close
    - strdup
    - strndup
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_in_filepath(struct ly_in *in, const char *filepath, size_t len)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/in.c:274,1
    - Dst: realpath
      Src: /src/libyang/src/in.c:282,1
    - Dst: lydict_insert
      Src: /src/libyang/src/in.c:283,1
    - Dst: lydict_insert
      Src: /src/libyang/src/in.c:285,1
    - Dst: fcntl
      Src: /src/libyang/src/in.c:291,1
    - Dst: lydict_insert
      Src: /src/libyang/src/in.c:292,1
    - Dst: sprintf
      Src: /src/libyang/src/in.c:296,1
    - Dst: readlink
      Src: /src/libyang/src/in.c:297,1
    - Dst: lydict_insert
      Src: /src/libyang/src/in.c:298,1
    - Dst: LOGINT
      Src: /src/libyang/src/in.c:307,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - in
    - filepath
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 264
    functionDepth: 4
    functionLinenumber: 264
    functionLinenumberEnd: 311
    functionName: lys_parser_fill_filepath
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 0
    functionsReached:
    - realpath
    - LY_CHECK_ARG_RET
    - LOGINT
    - sprintf
    - lydict_insert
    - readlink
    - fcntl
    linkageType: ''
    returnType: void
    signature: void lys_parser_fill_filepath(struct ly_ctx *ctx, struct ly_in *in,
      const char **filepath)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT
      Src: /src/libyang/src/in.c:319,1
    - Dst: free
      Src: /src/libyang/src/in.c:325,1
    - Dst: ly_munmap
      Src: /src/libyang/src/in.c:327,1
    - Dst: fclose
      Src: /src/libyang/src/in.c:330,1
    - Dst: close
      Src: /src/libyang/src/in.c:332,1
    - Dst: free
      Src: /src/libyang/src/in.c:335,1
    - Dst: ly_munmap
      Src: /src/libyang/src/in.c:340,1
    - Dst: close
      Src: /src/libyang/src/in.c:343,1
    - Dst: free
      Src: /src/libyang/src/in.c:344,1
    - Dst: free
      Src: /src/libyang/src/in.c:348,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - in
    - destroy
    argTypes:
    - struct ly_in*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 349
    functionName: ly_in_free
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 47
    functionsReached:
    - ly_munmap
    - free
    - LOGINT
    - close
    - fclose
    linkageType: ''
    returnType: API
    signature: API ly_in_free(struct ly_in *in, ly_bool destroy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/libyang/src/in.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - in
    - buf
    - count
    argTypes:
    - struct ly_in*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 362
    functionName: ly_in_read
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_in_read(struct ly_in *in, void *buf, size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - in
    argTypes:
    - struct ly_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 368
    functionName: ly_in_parsed
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API ly_in_parsed(const struct ly_in *in)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - in
    - count
    argTypes:
    - struct ly_in*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 380
    functionName: ly_in_skip
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_in_skip(struct ly_in *in, size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_erase
      Src: /src/libyang/src/in.c:385,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/in.c:386,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/in.c:387,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/in.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - lydctx
    argTypes:
    - struct lyd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 389
    functionName: lyd_ctx_free
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 0
    functionsReached:
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: void lyd_ctx_free(struct lyd_ctx *lydctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parent
      Src: /src/libyang/src/in.c:404,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:416,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/in.c:416,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/in.c:417,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:420,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/in.c:420,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:424,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/in.c:424,1
    - Dst: LOGERR
      Src: /src/libyang/src/in.c:428,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/in.c:428,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 3
    argNames:
    - parent
    - int_opts
    - op
    argTypes:
    - struct lyd_node*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 435
    functionName: lyd_parser_find_operation
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 0
    functionsReached:
    - LOGERR
    - LYD_CTX
    - lyd_parent
    - lys_nodetype2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_parser_find_operation(const struct lyd_node *parent, uint32_t
      int_opts, struct lyd_node **op)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/in.c:442,1
    - Dst: LOGVAL
      Src: /src/libyang/src/in.c:445,1
    - Dst: LOGVAL
      Src: /src/libyang/src/in.c:480,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/in.c:481,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/in.c:481,1
    - Dst: LOGVAL
      Src: /src/libyang/src/in.c:487,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/in.c:487,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/in.c:492,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 2
    argNames:
    - lydctx
    - snode
    argTypes:
    - struct lyd_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 494
    functionName: lyd_parser_check_schema
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    - LOG_LOCBACK
    - LOG_LOCSET
    - lys_nodetype2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_parser_check_schema(struct lyd_ctx *lydctx, const struct
      lysc_node *snode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/in.c:502,1
    - Dst: lyd_create_term
      Src: /src/libyang/src/in.c:502,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/in.c:505,1
    - Dst: ly_set_add
      Src: /src/libyang/src/in.c:505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 9
    argNames:
    - lydctx
    - schema
    - value
    - value_len
    - dynamic
    - format
    - prefix_data
    - hints
    - node
    argTypes:
    - struct lyd_ctx*
    - struct lysc_node*
    - void*
    - size_t
    - ly_bool*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 496
    functionDepth: 3
    functionLinenumber: 496
    functionLinenumberEnd: 508
    functionName: lyd_parser_create_term
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_set_add
    - lyd_create_term
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parser_create_term(struct lyd_ctx *lydctx, const struct
      lysc_node *schema, const void *value, size_t value_len,\n        ly_bool *dynamic,
      LY_VALUE_FORMAT format, void *prefix_data, uint32_t hints, struct lyd_node **node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/in.c:523,1
    - Dst: lyd_create_meta
      Src: /src/libyang/src/in.c:523,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/in.c:527,1
    - Dst: ly_set_add
      Src: /src/libyang/src/in.c:527,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 12
    argNames:
    - lydctx
    - parent
    - meta
    - mod
    - name
    - name_len
    - value
    - value_len
    - dynamic
    - format
    - prefix_data
    - hints
    argTypes:
    - struct lyd_ctx*
    - struct lyd_node*
    - struct lyd_meta**
    - struct lys_module*
    - char*
    - size_t
    - void*
    - size_t
    - ly_bool*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 510
    functionDepth: 3
    functionLinenumber: 510
    functionLinenumberEnd: 536
    functionName: lyd_parser_create_meta
    functionSourceFile: /src/libyang/src/in.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyd_create_meta
    - ly_set_add
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parser_create_meta(struct lyd_ctx *lydctx, struct lyd_node
      *parent, struct lyd_meta **meta, const struct lys_module *mod,\n        const
      char *name, size_t name_len, const void *value, size_t value_len, ly_bool *dynamic,
      LY_VALUE_FORMAT format,\n        void *prefix_data, uint32_t hints)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/parser_lyb.c:47,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/parser_lyb.c:48,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/parser_lyb.c:50,1
    - Dst: lyht_free
      Src: /src/libyang/src/parser_lyb.c:51,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/parser_lyb.c:53,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 56
    functionName: lylyb_ctx_free
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - LY_ARRAY_FREE
    - free
    - lyht_free
    linkageType: ''
    returnType: void
    signature: void lylyb_ctx_free(struct lylyb_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_ctx_free
      Src: /src/libyang/src/parser_lyb.c:63,1
    - Dst: lylyb_ctx_free
      Src: /src/libyang/src/parser_lyb.c:64,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lydctx
    argTypes:
    - struct lyd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: lyd_lyb_ctx_free
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lylyb_ctx_free
    - lyd_ctx_free
    - free
    linkageType: ''
    returnType: void
    signature: void lyd_lyb_ctx_free(struct lyd_ctx *lydctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:83,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/parser_lyb.c:89,1
    - Dst: ly_in_read
      Src: /src/libyang/src/parser_lyb.c:106,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_lyb.c:108,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/parser_lyb.c:111,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:114,1
    - Dst: ly_in_read
      Src: /src/libyang/src/parser_lyb.c:125,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 3
    argNames:
    - buf
    - count
    - lybctx
    argTypes:
    - uint8_t*
    - size_t
    - struct lylyb_ctx*
    assertStmts:
    - condition: (lybctx)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/libyang/src/parser_lyb.c
    - condition: (lybctx->subtrees[u].written <= LYB_SIZE_MAX)
      pos:
        line_end: 113
        line_start: 113
        source_file: /src/libyang/src/parser_lyb.c
    constantsTouched: []
    func_position:
      end: 133
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 133
    functionName: lyb_read
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - ly_in_read
    - ly_in_skip
    - assert
    linkageType: ''
    returnType: void
    signature: void lyb_read(uint8_t *buf, size_t count, struct lylyb_ctx *lybctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:148,1
    - Dst: le64toh
      Src: /src/libyang/src/parser_lyb.c:151,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_lyb.c:167,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - num
    - num_size
    - bytes
    - lybctx
    argTypes:
    - void*
    - size_t
    - size_t
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 169
    functionName: lyb_read_number
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - le64toh
    - lyb_read
    - LOGINT
    linkageType: ''
    returnType: void
    signature: void lyb_read_number(void *num, size_t num_size, size_t bytes, struct
      lylyb_ctx *lybctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read_number
      Src: /src/libyang/src/parser_lyb.c:188,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:191,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:192,1
    - Dst: malloc
      Src: /src/libyang/src/parser_lyb.c:197,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_lyb.c:198,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_lyb.c:198,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:200,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:203,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:204,1
    - Dst: ly_realloc
      Src: /src/libyang/src/parser_lyb.c:210,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_lyb.c:211,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_lyb.c:211,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - str
    - with_length
    - lybctx
    argTypes:
    - char**
    - ly_bool
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 220
    functionName: lyb_read_string
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - lyb_read_number
    - malloc
    - lyb_read
    - ly_realloc
    - LYB_LAST_SUBTREE
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_read_string(char **str, ly_bool with_length, struct lylyb_ctx
      *lybctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:231,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/parser_lyb.c:232,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/parser_lyb.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lybctx
    argTypes:
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 237
    functionName: lyb_read_stop_subtree
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_DECREMENT
    - LYB_LAST_SUBTREE
    - LOGINT_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_read_stop_subtree(struct lylyb_ctx *lybctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_lyb.c:251,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/parser_lyb.c:253,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_lyb.c:257,1
    - Dst: ly_in_read
      Src: /src/libyang/src/parser_lyb.c:257,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/parser_lyb.c:259,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:260,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:261,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:262,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - lybctx
    argTypes:
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 265
    functionName: lyb_read_start_subtree
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - LYB_LAST_SUBTREE
    - LY_ARRAY_COUNT
    - ly_in_read
    - LY_CHECK_RET
    - LY_ARRAY_CREATE_RET
    - LY_ARRAY_INCREMENT
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_read_start_subtree(struct lylyb_ctx *lybctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:282,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:283,1
    - Dst: lyb_read_number
      Src: /src/libyang/src/parser_lyb.c:286,1
    - Dst: sprintf
      Src: /src/libyang/src/parser_lyb.c:295,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/src/parser_lyb.c:297,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/parser_lyb.c:300,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_lyb.c:301,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/parser_lyb.c:307,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_lyb.c:321,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_lyb.c:324,1
    - Dst: lyb_cache_module_hash
      Src: /src/libyang/src/parser_lyb.c:335,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:339,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 3
    argNames:
    - lybctx
    - parse_options
    - mod
    argTypes:
    - struct lylyb_ctx*
    - uint32_t
    - struct lys_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 341
    functionName: lyb_parse_model
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_cache_module_hash
    - lyb_read_number
    - LOGERR
    - strcmp
    - free
    - ly_ctx_get_module_implemented
    - ly_ctx_get_module_latest
    - lyb_read_string
    - sprintf
    - LY_CHECK_GOTO
    - ly_ctx_get_module
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_model(struct lylyb_ctx *lybctx, uint32_t parse_options,
      const struct lys_module **mod)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:360,1
    - Dst: lyb_read_start_subtree
      Src: /src/libyang/src/parser_lyb.c:364,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:365,1
    - Dst: lyb_parse_model
      Src: /src/libyang/src/parser_lyb.c:368,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:369,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:374,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:374,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:375,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:380,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:381,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:384,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:385,1
    - Dst: lyd_parser_create_meta
      Src: /src/libyang/src/parser_lyb.c:389,1
    - Dst: strlen
      Src: /src/libyang/src/parser_lyb.c:389,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_lyb.c:390,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:393,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:396,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:400,1
    - Dst: lyb_read_stop_subtree
      Src: /src/libyang/src/parser_lyb.c:403,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:404,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:408,1
    - Dst: lyd_free_meta_siblings
      Src: /src/libyang/src/parser_lyb.c:410,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 2
    argNames:
    - lybctx
    - meta
    argTypes:
    - struct lyd_lyb_ctx*
    - struct lyd_meta**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 350
    functionDepth: 5
    functionLinenumber: 350
    functionLinenumberEnd: 414
    functionName: lyb_parse_metadata
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_parser_create_meta
    - lyb_read_start_subtree
    - strlen
    - lyb_parse_model
    - lyd_free_meta_siblings
    - lyb_read
    - ly_strlen
    - free
    - lyb_read_stop_subtree
    - lyb_read_string
    - LY_CHECK_GOTO
    - LYB_LAST_SUBTREE
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_metadata(struct lyd_lyb_ctx *lybctx, struct lyd_meta
      **meta)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:435,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:441,1
    - Dst: ly_set_new
      Src: /src/libyang/src/parser_lyb.c:441,1
    - Dst: calloc
      Src: /src/libyang/src/parser_lyb.c:444,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:447,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:447,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:450,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:450,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:452,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_lyb.c:452,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_lyb.c:463,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/parser_lyb.c:470,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:472,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:473,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:474,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - lybctx
    - format
    - prefix_data
    argTypes:
    - struct lylyb_ctx*
    - LY_VALUE_FORMAT
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 424
    functionDepth: 4
    functionLinenumber: 424
    functionLinenumberEnd: 478
    functionName: lyb_parse_prefix_data
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - ly_free_prefix_data
    - lyb_read
    - ly_set_new
    - LOGINT
    - free
    - lyb_read_string
    - ly_set_add
    - LY_CHECK_GOTO
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_prefix_data(struct lylyb_ctx *lybctx, LY_VALUE_FORMAT
      format, void **prefix_data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:499,1
    - Dst: lyb_read_start_subtree
      Src: /src/libyang/src/parser_lyb.c:503,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:504,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:507,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:508,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:510,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:515,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:516,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:518,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:523,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:524,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:527,1
    - Dst: lyb_parse_prefix_data
      Src: /src/libyang/src/parser_lyb.c:530,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:531,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:534,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_lyb.c:535,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/parser_lyb.c:535,1
    - Dst: lyd_create_attr
      Src: /src/libyang/src/parser_lyb.c:539,1
    - Dst: strlen
      Src: /src/libyang/src/parser_lyb.c:539,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_lyb.c:539,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_lyb.c:540,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_lyb.c:540,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:541,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:543,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:545,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:547,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:549,1
    - Dst: lyb_read_stop_subtree
      Src: /src/libyang/src/parser_lyb.c:556,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:557,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:561,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:562,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:563,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:565,1
    - Dst: lyd_free_attr_siblings
      Src: /src/libyang/src/parser_lyb.c:568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 54
    argCount: 2
    argNames:
    - lybctx
    - attr
    argTypes:
    - struct lylyb_ctx*
    - struct lyd_attr**
    assertStmts:
    - condition: (!dynamic)
      pos:
        line_end: 548
        line_start: 548
        source_file: /src/libyang/src/parser_lyb.c
    constantsTouched: []
    func_position:
      end: 572
      start: 487
    functionDepth: 5
    functionLinenumber: 487
    functionLinenumberEnd: 572
    functionName: lyb_parse_attributes
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyb_read_start_subtree
    - strlen
    - ly_free_prefix_data
    - lyb_read
    - lyb_parse_prefix_data
    - free
    - lyb_read_stop_subtree
    - lyb_read_string
    - lyd_free_attr_siblings
    - LY_CHECK_GOTO
    - ly_strlen
    - assert
    - lyd_create_attr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_attributes(struct lylyb_ctx *lybctx, struct lyd_attr
      **attr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyb_get_hash
      Src: /src/libyang/src/parser_lyb.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - sibling
    - hash
    - hash_count
    argTypes:
    - struct lysc_node*
    - LYB_HASH*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 598
    functionName: lyb_is_schema_hash_match
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_get_hash
    linkageType: ''
    returnType: int
    signature: int lyb_is_schema_hash_match(struct lysc_node *sibling, LYB_HASH *hash,
      uint8_t hash_count)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:623,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/parser_lyb.c:633,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:642,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:645,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:647,1
    - Dst: lys_getnext_ext
      Src: /src/libyang/src/parser_lyb.c:654,1
    - Dst: lys_getnext
      Src: /src/libyang/src/parser_lyb.c:656,1
    - Dst: lyb_has_schema_model
      Src: /src/libyang/src/parser_lyb.c:662,1
    - Dst: lyb_is_schema_hash_match
      Src: /src/libyang/src/parser_lyb.c:663,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_lyb.c:671,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_lyb.c:674,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_lyb.c:677,1
    - Dst: lyd_parser_check_schema
      Src: /src/libyang/src/parser_lyb.c:681,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 4
    argNames:
    - lybctx
    - sparent
    - mod
    - snode
    argTypes:
    - struct lyd_lyb_ctx*
    - struct lysc_node*
    - struct lys_module*
    - struct lysc_node**
    assertStmts:
    - condition: (hash[j - 1] & (LYB_HASH_COLLISION_ID >> (j - 1)))
      pos:
        line_end: 644
        line_start: 644
        source_file: /src/libyang/src/parser_lyb.c
    - condition: (!(hash[j - 1] & (LYB_HASH_MASK << (LYB_HASH_BITS - (j - 1)))))
      pos:
        line_end: 646
        line_start: 646
        source_file: /src/libyang/src/parser_lyb.c
    constantsTouched: []
    func_position:
      end: 687
      start: 609
    functionDepth: 2
    functionLinenumber: 609
    functionLinenumberEnd: 687
    functionName: lyb_parse_schema_hash
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - LOGINT_RET
    - lys_getnext
    - lyb_read
    - lyd_parser_check_schema
    - LOGVAL
    - lyb_has_schema_model
    - lys_getnext_ext
    - lyb_is_schema_hash_match
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyb_parse_schema_hash(struct lyd_lyb_ctx *lybctx, const struct
      lysc_node *sparent, const struct lys_module *mod,\n        const struct lysc_node
      **snode)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_lyb.c:699,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:699,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:702,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:702,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lybctx
    argTypes:
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 694
    functionDepth: 2
    functionLinenumber: 694
    functionLinenumberEnd: 704
    functionName: lyb_skip_subtree
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_read
    - LYB_LAST_SUBTREE
    - ly_in_skip
    linkageType: ''
    returnType: void
    signature: void lyb_skip_subtree(struct lylyb_ctx *lybctx)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:733,1
    - Dst: lyb_read_start_subtree
      Src: /src/libyang/src/parser_lyb.c:733,1
    - Dst: lyb_parse_model
      Src: /src/libyang/src/parser_lyb.c:737,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:738,1
    - Dst: lyb_parse_schema_hash
      Src: /src/libyang/src/parser_lyb.c:741,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:742,1
    - Dst: lyb_parse_schema_hash
      Src: /src/libyang/src/parser_lyb.c:745,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:746,1
    - Dst: lyb_skip_subtree
      Src: /src/libyang/src/parser_lyb.c:751,1
    - Dst: lyb_parse_metadata
      Src: /src/libyang/src/parser_lyb.c:757,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:758,1
    - Dst: lyb_parse_attributes
      Src: /src/libyang/src/parser_lyb.c:760,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:761,1
    - Dst: lyb_read_number
      Src: /src/libyang/src/parser_lyb.c:765,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:769,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:770,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:773,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:774,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:777,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:778,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:781,1
    - Dst: lyb_parse_prefix_data
      Src: /src/libyang/src/parser_lyb.c:784,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:785,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:788,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_lyb.c:789,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/parser_lyb.c:789,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/parser_lyb.c:793,1
    - Dst: strlen
      Src: /src/libyang/src/parser_lyb.c:793,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_lyb.c:793,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_lyb.c:793,1
    - Dst: strlen
      Src: /src/libyang/src/parser_lyb.c:794,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:795,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:798,1
    - Dst: lyb_parse_subtree_r
      Src: /src/libyang/src/parser_lyb.c:799,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:800,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:804,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:805,1
    - Dst: lyd_parser_create_term
      Src: /src/libyang/src/parser_lyb.c:809,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_lyb.c:809,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:812,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:816,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/parser_lyb.c:819,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:820,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/parser_lyb.c:823,1
    - Dst: lyb_parse_subtree_r
      Src: /src/libyang/src/parser_lyb.c:824,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:825,1
    - Dst: lyd_validate_new
      Src: /src/libyang/src/parser_lyb.c:830,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_lyb.c:830,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:831,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/parser_lyb.c:834,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_lyb.c:834,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:836,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:845,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_lyb.c:848,1
    - Dst: lyb_read_string
      Src: /src/libyang/src/parser_lyb.c:853,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:854,1
    - Dst: ly_log_options
      Src: /src/libyang/src/parser_lyb.c:859,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/src/parser_lyb.c:862,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:864,1
    - Dst: ly_log_options
      Src: /src/libyang/src/parser_lyb.c:870,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/parser_lyb.c:878,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:879,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_lyb.c:888,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:889,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/parser_lyb.c:894,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_lyb.c:896,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:902,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:915,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_lyb.c:924,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_lyb.c:931,1
    - Dst: lyb_read_stop_subtree
      Src: /src/libyang/src/parser_lyb.c:937,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:938,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:941,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:942,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:943,1
    - Dst: free
      Src: /src/libyang/src/parser_lyb.c:945,1
    - Dst: lyd_free_meta_siblings
      Src: /src/libyang/src/parser_lyb.c:948,1
    - Dst: lyd_free_attr_siblings
      Src: /src/libyang/src/parser_lyb.c:949,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_lyb.c:950,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 154
    argCount: 4
    argNames:
    - lybctx
    - parent
    - first_p
    - parsed
    argTypes:
    - struct lyd_lyb_ctx*
    - struct lyd_node*
    - struct lyd_node**
    - struct ly_set*
    assertStmts:
    - condition: (!node->schema)
      pos:
        line_end: 914
        line_start: 914
        source_file: /src/libyang/src/parser_lyb.c
    - condition: (node)
      pos:
        line_end: 901
        line_start: 901
        source_file: /src/libyang/src/parser_lyb.c
    constantsTouched: []
    func_position:
      end: 952
      start: 714
    functionDepth: 6
    functionLinenumber: 714
    functionLinenumberEnd: 952
    functionName: lyb_parse_subtree_r
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 1
    functionsReached:
    - strlen
    - lyb_parse_subtree_r
    - lyd_new_implicit_r
    - lyd_free_meta_siblings
    - lyb_read_string
    - lyd_free_attr_siblings
    - lyd_parse_data_mem
    - LY_CHECK_GOTO
    - LY_CHECK_ERR_GOTO
    - lyb_read_number
    - lyb_parse_prefix_data
    - lyd_create_any
    - lyd_create_opaq
    - lydict_remove
    - lyb_parse_schema_hash
    - ly_log_options
    - lyd_insert_node
    - ly_strlen
    - assert
    - lyb_skip_subtree
    - lyb_parse_model
    - lyd_validate_new
    - lyd_free_tree
    - free
    - lyb_parse_attributes
    - LYB_LAST_SUBTREE
    - lyb_read_start_subtree
    - ly_free_prefix_data
    - lyb_read
    - LOGINT
    - lyb_parse_metadata
    - lyb_read_stop_subtree
    - lydict_insert_zc
    - lyd_node_child_p
    - lyd_parser_create_term
    - lyd_create_inner
    - ly_set_add
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_subtree_r(struct lyd_lyb_ctx *lybctx, struct lyd_node
      *parent, struct lyd_node **first_p, struct ly_set *parsed)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 911
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(meta, m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 916
    functionDepth: 0
    functionLinenumber: 916
    functionLinenumberEnd: 918
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(attr, a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read_number
      Src: /src/libyang/src/parser_lyb.c:968,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/parser_lyb.c:971,1
    - Dst: lyb_parse_model
      Src: /src/libyang/src/parser_lyb.c:975,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_lyb.c:976,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/parser_lyb.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - lybctx
    - parse_options
    argTypes:
    - struct lylyb_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 960
    functionDepth: 5
    functionLinenumber: 960
    functionLinenumberEnd: 982
    functionName: lyb_parse_data_models
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_parse_model
    - lyb_read_number
    - LY_CHECK_RET
    - LY_ARRAY_CREATE_RET
    - LY_ARRAY_INCREMENT
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_data_models(struct lylyb_ctx *lybctx, uint32_t parse_options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:995,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_lyb.c:997,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:1001,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_lyb.c:1003,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:1007,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_lyb.c:1009,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - lybctx
    argTypes:
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1014
    functionName: lyb_parse_magic_number
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_read
    - LOGERR
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_magic_number(struct lylyb_ctx *lybctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:1028,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_lyb.c:1031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - lybctx
    argTypes:
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1022
    functionDepth: 2
    functionLinenumber: 1022
    functionLinenumberEnd: 1037
    functionName: lyb_parse_header
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_read
    - LOGERR
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_parse_header(struct lylyb_ctx *lybctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:1048,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:1049,1
    - Dst: calloc
      Src: /src/libyang/src/parser_lyb.c:1051,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_lyb.c:1052,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_lyb.c:1052,1
    - Dst: calloc
      Src: /src/libyang/src/parser_lyb.c:1053,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_lyb.c:1054,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_lyb.c:1054,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_lyb.c:1076,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1084,1
    - Dst: lyd_parser_find_operation
      Src: /src/libyang/src/parser_lyb.c:1084,1
    - Dst: lyb_parse_magic_number
      Src: /src/libyang/src/parser_lyb.c:1087,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1088,1
    - Dst: lyb_parse_header
      Src: /src/libyang/src/parser_lyb.c:1091,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1092,1
    - Dst: lyb_parse_data_models
      Src: /src/libyang/src/parser_lyb.c:1095,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1096,1
    - Dst: lyb_parse_subtree_r
      Src: /src/libyang/src/parser_lyb.c:1100,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1101,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_lyb.c:1109,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_lyb.c:1114,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_lyb.c:1120,1
    - Dst: assert
      Src: /src/libyang/src/parser_lyb.c:1124,1
    - Dst: lyd_lyb_ctx_free
      Src: /src/libyang/src/parser_lyb.c:1128,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 69
    argCount: 10
    argNames:
    - ctx
    - ext
    - parent
    - first_p
    - in
    - parse_opts
    - val_opts
    - data_type
    - parsed
    - lydctx_p
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    - struct lyd_node*
    - struct lyd_node**
    - struct ly_in*
    - uint32_t
    - uint32_t
    - enum lyd_type
    - struct ly_set*
    - struct lyd_ctx**
    assertStmts:
    - condition: (!(parse_opts & ~LYD_PARSE_OPTS_MASK))
      pos:
        line_end: 1047
        line_start: 1047
        source_file: /src/libyang/src/parser_lyb.c
    - condition: "(!(parse_opts & LYD_PARSE_ONLY) || (!lybctx->node_types.count &&
        !lybctx->meta_types.count &&\n            !lybctx->node_when.count))"
      pos:
        line_end: 1124
        line_start: 1123
        source_file: /src/libyang/src/parser_lyb.c
    - condition: (!(val_opts & ~LYD_VALIDATE_OPTS_MASK))
      pos:
        line_end: 1048
        line_start: 1048
        source_file: /src/libyang/src/parser_lyb.c
    constantsTouched: []
    func_position:
      end: 1133
      start: 1039
    functionDepth: 7
    functionLinenumber: 1039
    functionLinenumberEnd: 1133
    functionName: lyd_parse_lyb
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 2
    functionsReached:
    - assert
    - LY_CHECK_ERR_GOTO
    - lyb_parse_magic_number
    - lyb_parse_header
    - ly_in_skip
    - LY_CHECK_ERR_RET
    - lyd_parser_find_operation
    - lyb_parse_subtree_r
    - lyd_lyb_ctx_free
    - LOGINT
    - LOGVAL
    - LY_CHECK_GOTO
    - lyb_parse_data_models
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parse_lyb(const struct ly_ctx *ctx, const struct lysc_ext_instance
      *ext, struct lyd_node *parent,\n        struct lyd_node **first_p, struct ly_in
      *in, uint32_t parse_opts, uint32_t val_opts, enum lyd_type data_type,\n        struct
      ly_set *parsed, struct lyd_ctx **lydctx_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_lyb.c:1148,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_lyb.c:1149,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_lyb.c:1149,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/src/parser_lyb.c:1150,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1151,1
    - Dst: lyb_parse_magic_number
      Src: /src/libyang/src/parser_lyb.c:1154,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1155,1
    - Dst: lyb_parse_header
      Src: /src/libyang/src/parser_lyb.c:1158,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1159,1
    - Dst: lyb_read_number
      Src: /src/libyang/src/parser_lyb.c:1162,1
    - Dst: lyb_read_number
      Src: /src/libyang/src/parser_lyb.c:1168,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:1171,1
    - Dst: lyb_read
      Src: /src/libyang/src/parser_lyb.c:1174,1
    - Dst: lyb_read_start_subtree
      Src: /src/libyang/src/parser_lyb.c:1179,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1180,1
    - Dst: lyb_skip_subtree
      Src: /src/libyang/src/parser_lyb.c:1183,1
    - Dst: lyb_read_stop_subtree
      Src: /src/libyang/src/parser_lyb.c:1186,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_lyb.c:1187,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_lyb.c:1191,1
    - Dst: ly_in_free
      Src: /src/libyang/src/parser_lyb.c:1196,1
    - Dst: lylyb_ctx_free
      Src: /src/libyang/src/parser_lyb.c:1197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 1
    argNames:
    - data
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1135
    functionDepth: 3
    functionLinenumber: 1135
    functionLinenumberEnd: 1200
    functionName: lyd_lyb_data_length
    functionSourceFile: /src/libyang/src/parser_lyb.c
    functionUses: 2
    functionsReached:
    - lylyb_ctx_free
    - lyb_parse_magic_number
    - lyb_parse_header
    - lyb_read_start_subtree
    - lyb_skip_subtree
    - LY_CHECK_ERR_RET
    - lyb_read_number
    - ly_in_skip
    - ly_in_free
    - lyb_read
    - ly_in_new_memory
    - lyb_read_stop_subtree
    - LY_CHECK_GOTO
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: API
    signature: API lyd_lyb_data_length(const char *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysc_extension_free
      Src: /src/libyang/src/schema_compile.c:61,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:65,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:66,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile.c:69,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:71,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:72,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile.c:74,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:76,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:77,1
    - Dst: lyplg_find
      Src: /src/libyang/src/schema_compile.c:80,1
    - Dst: lysc_ext_dup
      Src: /src/libyang/src/schema_compile.c:84,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:88,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 4
    argNames:
    - ctx
    - ext_mod
    - ext_p
    - ext
    argTypes:
    - struct lysc_ctx*
    - struct lys_module*
    - struct lysp_ext*
    - struct lysc_ext**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 92
    functionName: lys_compile_extension
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - lysc_ext_dup
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - lysc_extension_free
    - lysc_update_path
    - lyplg_find
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_extension(struct lysc_ctx *ctx, const struct lys_module
      *ext_mod, struct lysp_ext *ext_p, struct lysc_ext **ext)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:106,1
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/src/schema_compile.c:106,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:107,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:109,1
    - Dst: lysp_ext_find_definition
      Src: /src/libyang/src/schema_compile.c:109,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:110,1
    - Dst: lys_compile_extension
      Src: /src/libyang/src/schema_compile.c:110,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:113,1
    - Dst: lysp_ext_instance_resolve_argument
      Src: /src/libyang/src/schema_compile.c:113,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile.c:116,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:117,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:121,1
    - Dst: struct lysc_ext_instance*::def::plugin::compile
      Src: /src/libyang/src/schema_compile.c:123,1
    - Dst: lysc_ext_instance_free
      Src: /src/libyang/src/schema_compile.c:125,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:128,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:130,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:134,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 5
    argNames:
    - ctx
    - ext_p
    - ext
    - parent
    - ext_mod
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ext_instance*
    - struct lysc_ext_instance*
    - void*
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 138
    functionName: lys_compile_ext
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    - LY_STMT_IS_NODE
    - struct lysc_ext_instance*::def::plugin::compile
    - LY_CHECK_RET
    - lysc_update_path
    - lysp_ext_instance_resolve_argument
    - LY_CHECK_GOTO
    - lysp_ext_find_definition
    - lys_compile_extension
    - lysc_ext_instance_free
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_ext(struct lysc_ctx *ctx, struct lysp_ext_instance
      *ext_p, struct lysc_ext_instance *ext, void *parent,\n        const struct lys_module
      *ext_mod)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct lysc_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: lysc_ext_dup
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_ext
    signature: 'struct lysc_ext *

      lysc_ext_dup(struct lysc_ext *orig)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:152,1
    - Dst: LY_STMT_IS_DATA_NODE
      Src: /src/libyang/src/schema_compile.c:153,1
    - Dst: LY_STMT_IS_DATA_NODE
      Src: /src/libyang/src/schema_compile.c:154,1
    - Dst: LY_STMT_IS_OP
      Src: /src/libyang/src/schema_compile.c:157,1
    - Dst: LY_STMT_IS_OP
      Src: /src/libyang/src/schema_compile.c:158,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 4
    argNames:
    - ext
    - substmt
    - instance_p
    - cardinality_p
    argTypes:
    - struct lysc_ext_instance*
    - enum ly_stmt
    - void**
    - enum ly_stmt_cardinality*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 176
    functionName: lysc_ext_substmt
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - LY_STMT_IS_DATA_NODE
    - LY_STMT_IS_OP
    linkageType: ''
    returnType: API
    signature: API lysc_ext_substmt(const struct lysc_ext_instance *ext, enum ly_stmt
      substmt, void **instance_p, enum ly_stmt_cardinality *cardinality_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:181,1
    - Dst: lysp_qname_free
      Src: /src/libyang/src/schema_compile.c:183,1
    - Dst: free
      Src: /src/libyang/src/schema_compile.c:184,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/schema_compile.c:186,1
    - Dst: free
      Src: /src/libyang/src/schema_compile.c:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - r
    argTypes:
    - struct ly_ctx*
    - struct lysc_unres_dflt*
    assertStmts:
    - condition: (!r->dflt || !r->dflts)
      pos:
        line_end: 180
        line_start: 180
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: lysc_unres_dflt_free
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - lysp_qname_free
    - free
    - assert
    - FREE_ARRAY
    linkageType: ''
    returnType: void
    signature: void lysc_unres_dflt_free(const struct ly_ctx *ctx, struct lysc_unres_dflt
      *r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/libyang/src/schema_compile.c:232,1
    - Dst: snprintf
      Src: /src/libyang/src/schema_compile.c:234,1
    - Dst: snprintf
      Src: /src/libyang/src/schema_compile.c:237,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:247,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:248,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 3
    argNames:
    - ctx
    - parent_module
    - name
    argTypes:
    - struct lysc_ctx*
    - struct lys_module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 249
    functionName: lysc_update_path
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 2
    functionsReached:
    - LOG_LOCBACK
    - LOG_LOCSET
    - snprintf
    linkageType: ''
    returnType: void
    signature: void lysc_update_path(struct lysc_ctx *ctx, struct lys_module *parent_module,
      const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:261,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:276,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:279,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile.c:279,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:284,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile.c:287,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:289,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:290,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:291,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile.c:294,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:297,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:299,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - ctx_sc
    - ctx
    - parsed_mod
    - identities_p
    - identities
    argTypes:
    - struct lysc_ctx*
    - struct ly_ctx*
    - struct lysp_module*
    - struct lysp_ident*
    - struct lysc_ident**
    assertStmts:
    - condition: (ctx_sc || ctx)
      pos:
        line_end: 260
        line_start: 260
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 302
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 302
    functionName: lys_identity_precompile
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - LY_CHECK_RET
    - lys_eval_iffeatures
    - lysc_update_path
    - LY_ARRAY_NEW_RET
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_identity_precompile(struct lysc_ctx *ctx_sc, struct ly_ctx
      *ctx, struct lysp_module *parsed_mod,\n        struct lysp_ident *identities_p,
      struct lysc_ident **identities)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:279,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile.c:279,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:284,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile.c:287,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:289,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:290,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile.c:291,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile.c:294,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 298
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 8
    functionsReached:
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - LY_CHECK_RET
    - lys_eval_iffeatures
    - lysc_update_path
    - LY_ARRAY_NEW_RET
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(identities_p, u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:327,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:329,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile.c:334,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:335,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:340,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:342,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile.c:347,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:348,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:353,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - ident
    - derived
    argTypes:
    - struct lysc_ctx*
    - struct lysc_ident*
    - struct lysc_ident**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 355
    functionName: lys_compile_identity_circular_check
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - LOGVAL
    - ly_set_add
    - LY_CHECK_GOTO
    - ly_set_erase
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_identity_circular_check(struct lysc_ctx *ctx, struct
      lysc_ident *ident, struct lysc_ident **derived)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:366,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:368,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:369,1
    - Dst: strchr
      Src: /src/libyang/src/schema_compile.c:375,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_compile.c:379,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:386,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:389,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:396,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile.c:397,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:400,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:404,1
    - Dst: lys_compile_identity_circular_check
      Src: /src/libyang/src/schema_compile.c:404,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile.c:406,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile.c:410,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:419,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile.c:420,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:429,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:432,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 6
    argNames:
    - ctx
    - base_pmod
    - bases_p
    - ident
    - bases
    - enabled
    argTypes:
    - struct lysc_ctx*
    - struct lysp_module*
    - char**
    - struct lysc_ident*
    - struct lysc_ident***
    - ly_bool*
    assertStmts:
    - condition: ((ident && enabled) || bases)
      pos:
        line_end: 365
        line_start: 365
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 443
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 443
    functionName: lys_compile_identity_bases
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - lys_compile_identity_circular_check
    - LY_ARRAY_COUNT
    - strcmp
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL
    - strchr
    - LY_ARRAY_NEW_RET
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_identity_bases(struct lysc_ctx *ctx, const struct
      lysp_module *base_pmod, const char **bases_p,\n        struct lysc_ident *ident,
      struct lysc_ident ***bases, ly_bool *enabled)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/libyang/src/schema_compile.c:375,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_compile.c:379,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:386,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:389,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:396,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile.c:397,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:400,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:404,1
    - Dst: lys_compile_identity_circular_check
      Src: /src/libyang/src/schema_compile.c:404,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile.c:406,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile.c:410,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:419,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile.c:420,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:429,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:432,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 437
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 10
    functionsReached:
    - ly_resolve_prefix
    - lys_compile_identity_circular_check
    - strcmp
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - strchr
    - LOGVAL
    - LY_ARRAY_NEW_RET
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(bases_p, u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:459,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:462,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:464,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:470,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:470,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:475,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:476,1
    - Dst: lys_compile_identity_bases
      Src: /src/libyang/src/schema_compile.c:476,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:478,1
    - Dst: lysc_ident_free
      Src: /src/libyang/src/schema_compile.c:482,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/schema_compile.c:483,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:484,1
    - Dst: memmove
      Src: /src/libyang/src/schema_compile.c:485,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:485,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile.c:490,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:495,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile.c:496,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:505,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - idents_p
    - idents
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ident*
    - struct lysc_ident**
    assertStmts:
    - condition: (v < LY_ARRAY_COUNT(idents_p))
      pos:
        line_end: 469
        line_start: 469
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 507
      start: 453
    functionDepth: 3
    functionLinenumber: 453
    functionLinenumberEnd: 507
    functionName: lys_compile_identities_derived
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - LY_ARRAY_DECREMENT
    - lysc_ident_free
    - memmove
    - LY_CHECK_RET
    - LY_ARRAY_FREE
    - lysc_update_path
    - lys_compile_identity_bases
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_identities_derived(struct lysc_ctx *ctx, struct
      lysp_ident *idents_p, struct lysc_ident **idents)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - stmt
    - substmts
    argTypes:
    - enum ly_stmt
    - struct lysc_ext_substmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 518
    functionName: lys_compile_extension_instance_storage
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      lys_compile_extension_instance_storage(enum ly_stmt stmt, struct lysc_ext_substmt
      *substmts)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:533,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:538,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:539,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:554,1
    - Dst: lysp_stmt_parse
      Src: /src/libyang/src/schema_compile.c:579,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:580,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:586,1
    - Dst: lysp_stmt_parse
      Src: /src/libyang/src/schema_compile.c:590,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:591,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile.c:596,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:597,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:607,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile.c:615,1
    - Dst: lydict_insert
      Src: /src/libyang/src/schema_compile.c:617,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:618,1
    - Dst: lysp_stmt_parse
      Src: /src/libyang/src/schema_compile.c:624,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:625,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile.c:627,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/schema_compile.c:628,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:629,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:637,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:638,1
    - Dst: lysp_stmt_parse
      Src: /src/libyang/src/schema_compile.c:638,1
    - Dst: lys_compile_extension_instance_storage
      Src: /src/libyang/src/schema_compile.c:641,1
    - Dst: lys_compile_extension_instance_storage
      Src: /src/libyang/src/schema_compile.c:642,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:647,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile.c:655,1
    - Dst: lysp_stmt_parse
      Src: /src/libyang/src/schema_compile.c:659,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:660,1
    - Dst: lys_compile_type
      Src: /src/libyang/src/schema_compile.c:661,1
    - Dst: lysp_type_free
      Src: /src/libyang/src/schema_compile.c:663,1
    - Dst: free
      Src: /src/libyang/src/schema_compile.c:664,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile.c:665,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:671,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:680,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/schema_compile.c:681,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 127
    argCount: 3
    argNames:
    - ctx
    - ext_p
    - ext
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ext_instance*
    - struct lysc_ext_instance*
    assertStmts:
    - condition: (ext->substmts[u].cardinality < LY_STMT_CARD_SOME)
      pos:
        line_end: 636
        line_start: 636
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 690
      start: 520
    functionDepth: 4
    functionLinenumber: 520
    functionLinenumberEnd: 690
    functionName: lys_compile_extension_instance
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lys_compile_type
    - LY_ARRAY_COUNT
    - lysp_stmt_parse
    - free
    - LY_LIST_FOR
    - LY_ARRAY_NEW_GOTO
    - FREE_ARRAY
    - LY_ARRAY_FOR
    - LOGVAL
    - lydict_insert
    - lys_eval_iffeatures
    - ly_stmt2str
    - lysp_type_free
    - lys_compile_node
    - lys_compile_extension_instance_storage
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_extension_instance(struct lysc_ctx *ctx, const struct
      lysp_ext_instance *ext_p, struct lysc_ext_instance *ext)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/schema_compile.c:708,1
    - Dst: lysc_node_when
      Src: /src/libyang/src/schema_compile.c:727,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:737,1
    - Dst: lysc_node_when
      Src: /src/libyang/src/schema_compile.c:738,1
    - Dst: lyxp_atomize
      Src: /src/libyang/src/schema_compile.c:741,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:744,1
    - Dst: lyxp_set_scnode_contains
      Src: /src/libyang/src/schema_compile.c:753,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:755,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/schema_compile.c:769,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:775,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/schema_compile.c:783,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 2
    argNames:
    - set
    - node
    argTypes:
    - struct lyxp_set*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 699
    functionDepth: 1
    functionLinenumber: 699
    functionLinenumberEnd: 785
    functionName: lys_compile_unres_when_cyclic
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - memset
    - lyxp_set_scnode_contains
    - lysc_node_when
    - lyxp_set_scnode_merge
    - LOGVAL
    - LOG_LOCSET
    - lyxp_set_free_content
    - lyxp_atomize
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_unres_when_cyclic(struct lyxp_set *set, const struct
      lysc_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_atomize
      Src: /src/libyang/src/schema_compile.c:741,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:744,1
    - Dst: lyxp_set_scnode_contains
      Src: /src/libyang/src/schema_compile.c:753,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:755,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/schema_compile.c:769,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 770
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 11
    functionsReached:
    - lyxp_set_scnode_merge
    - lyxp_set_scnode_contains
    - LOGVAL
    - lyxp_atomize
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(when_list, u)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 7
    argNames:
    - ctx
    - flags1
    - mod1
    - name1
    - flags2
    - mod2
    - name2
    argTypes:
    - struct lysc_ctx*
    - uint16_t
    - void*
    - char*
    - uint16_t
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 807
    functionName: lysc_check_status
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysc_check_status(struct lysc_ctx *ctx, uint16_t flags1, void
      *mod1, const char *name1, uint16_t flags2, void *mod2,\n        const char *name2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:817,1
    - Dst: ly_strnchr
      Src: /src/libyang/src/schema_compile.c:826,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_compile.c:831,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:839,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/schema_compile.c:839,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 7
    argNames:
    - ctx
    - expr
    - format
    - prefix_data
    - implement
    - unres
    - mod_p
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool
    - struct lys_glob_unres*
    - struct lys_module**
    assertStmts:
    - condition: (implement || mod_p)
      pos:
        line_end: 816
        line_start: 816
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 851
      start: 809
    functionDepth: 1
    functionLinenumber: 809
    functionLinenumberEnd: 851
    functionName: lys_compile_expr_implement
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - ly_strnchr
    - LY_CHECK_RET
    - lys_set_implemented_r
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_expr_implement(const struct ly_ctx *ctx, const
      struct lyxp_expr *expr, LY_VALUE_FORMAT format,\n        void *prefix_data,
      ly_bool implement, struct lys_glob_unres *unres, const struct lys_module **mod_p)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:874,1
    - Dst: memset
      Src: /src/libyang/src/schema_compile.c:876,1
    - Dst: lysc_node_when
      Src: /src/libyang/src/schema_compile.c:879,1
    - Dst: lysc_node_musts
      Src: /src/libyang/src/schema_compile.c:880,1
    - Dst: lys_compile_expr_implement
      Src: /src/libyang/src/schema_compile.c:885,1
    - Dst: LOGWRN
      Src: /src/libyang/src/schema_compile.c:890,1
    - Dst: lyxp_atomize
      Src: /src/libyang/src/schema_compile.c:896,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:899,1
    - Dst: lysc_path
      Src: /src/libyang/src/schema_compile.c:904,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile.c:911,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:913,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/schema_compile.c:916,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:917,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:921,1
    - Dst: lys_compile_unres_when_cyclic
      Src: /src/libyang/src/schema_compile.c:929,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:930,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/schema_compile.c:932,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:936,1
    - Dst: lys_compile_expr_implement
      Src: /src/libyang/src/schema_compile.c:939,1
    - Dst: LOGWRN
      Src: /src/libyang/src/schema_compile.c:944,1
    - Dst: lyxp_atomize
      Src: /src/libyang/src/schema_compile.c:950,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:953,1
    - Dst: lysc_path
      Src: /src/libyang/src/schema_compile.c:958,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile.c:963,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:965,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/schema_compile.c:969,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/schema_compile.c:982,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:983,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 88
    argCount: 3
    argNames:
    - ctx
    - node
    - unres
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    - struct lys_glob_unres*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 985
    functionName: lys_compile_unres_xpath
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - lysc_path
    - LOG_LOCBACK
    - memset
    - LY_CHECK_GOTO
    - lys_compile_unres_when_cyclic
    - lysc_node_when
    - lysc_check_status
    - LY_ARRAY_FOR
    - LOGVAL
    - LOG_LOCSET
    - lys_compile_expr_implement
    - lysc_node_musts
    - LOGWRN
    - lysc_data_parent
    - lyxp_set_free_content
    - lyxp_atomize
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_unres_xpath(struct lysc_ctx *ctx, const struct lysc_node
      *node, struct lys_glob_unres *unres)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lys_compile_expr_implement
      Src: /src/libyang/src/schema_compile.c:885,1
    - Dst: LOGWRN
      Src: /src/libyang/src/schema_compile.c:890,1
    - Dst: lyxp_atomize
      Src: /src/libyang/src/schema_compile.c:896,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:899,1
    - Dst: lysc_path
      Src: /src/libyang/src/schema_compile.c:904,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile.c:911,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:913,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/schema_compile.c:916,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:917,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:921,1
    - Dst: lys_compile_unres_when_cyclic
      Src: /src/libyang/src/schema_compile.c:929,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:930,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/schema_compile.c:932,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 882
    functionDepth: 2
    functionLinenumber: 882
    functionLinenumberEnd: 933
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 12
    functionsReached:
    - lysc_path
    - lys_compile_unres_when_cyclic
    - lysc_check_status
    - LOGVAL
    - lys_compile_expr_implement
    - LY_CHECK_GOTO
    - LOGWRN
    - lysc_data_parent
    - lyxp_set_free_content
    - lyxp_atomize
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(whens, u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:1005,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:1008,1
    - Dst: ly_path_compile
      Src: /src/libyang/src/schema_compile.c:1008,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:1013,1
    - Dst: ly_path_free
      Src: /src/libyang/src/schema_compile.c:1014,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1017,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile.c:1018,1
    - Dst: lysc_path
      Src: /src/libyang/src/schema_compile.c:1024,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile.c:1025,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile.c:1026,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1035,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1046,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - ctx
    - node
    - lref
    - unres
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    - struct lysc_type_leafref*
    - struct lys_glob_unres*
    assertStmts:
    - condition: (node->nodetype & (LYS_LEAF | LYS_LEAFLIST))
      pos:
        line_end: 1004
        line_start: 1004
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 1055
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1055
    functionName: lys_compile_unres_leafref
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - lysc_path
    - strlen
    - lys_nodetype2str
    - LY_ARRAY_COUNT
    - ly_path_compile
    - LY_CHECK_RET
    - lysc_check_status
    - LOGVAL
    - ly_path_free
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_unres_leafref(struct lysc_ctx *ctx, const struct
      lysc_node *node, struct lysc_type_leafref *lref,\n        struct lys_glob_unres
      *unres)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/src/schema_compile.c:1078,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile.c:1078,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:1089,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1091,1
    - Dst: ly_err_free
      Src: /src/libyang/src/schema_compile.c:1092,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1094,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1096,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 7
    argNames:
    - ctx
    - node
    - type
    - dflt
    - dflt_pmod
    - storage
    - unres
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    - struct lysc_type*
    - char*
    - struct lysp_module*
    - struct lyd_value*
    - struct lys_glob_unres*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1102
    functionName: lys_compile_unres_dflt
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - strlen
    - LOG_LOCBACK
    - ly_err_free
    - LOGVAL
    - LOG_LOCSET
    - struct lysc_type*::plugin::store
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_unres_dflt(struct lysc_ctx *ctx, struct lysc_node
      *node, struct lysc_type *type, const char *dflt,\n        const struct lysp_module
      *dflt_pmod, struct lyd_value *storage, struct lys_glob_unres *unres)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:1119,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile.c:1127,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile.c:1128,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile.c:1128,1
    - Dst: lys_compile_unres_dflt
      Src: /src/libyang/src/schema_compile.c:1131,1
    - Dst: free
      Src: /src/libyang/src/schema_compile.c:1133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - leaf
    - dflt
    - unres
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node_leaf*
    - struct lysp_qname*
    - struct lys_glob_unres*
    assertStmts:
    - condition: (!leaf->dflt)
      pos:
        line_end: 1118
        line_start: 1118
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 1138
      start: 1113
    functionDepth: 2
    functionLinenumber: 1113
    functionLinenumberEnd: 1138
    functionName: lys_compile_unres_leaf_dlft
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - assert
    - lys_compile_unres_dflt
    - LY_CHECK_ERR_RET
    - free
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_unres_leaf_dlft(struct lysc_ctx *ctx, struct lysc_node_leaf
      *leaf, struct lysp_qname *dflt,\n        struct lys_glob_unres *unres)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:1157,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:1160,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/schema_compile.c:1163,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:1163,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile.c:1168,1
    - Dst: lys_compile_unres_dflt
      Src: /src/libyang/src/schema_compile.c:1169,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile.c:1171,1
    - Dst: free
      Src: /src/libyang/src/schema_compile.c:1171,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_compile.c:1172,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile.c:1175,1
    - Dst: lys_compile_unres_dflt
      Src: /src/libyang/src/schema_compile.c:1176,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile.c:1178,1
    - Dst: free
      Src: /src/libyang/src/schema_compile.c:1178,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_compile.c:1179,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile.c:1185,1
    - Dst: realtype::plugin::compare
      Src: /src/libyang/src/schema_compile.c:1187,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1188,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1189,1
    - Dst: realtype::plugin::print
      Src: /src/libyang/src/schema_compile.c:1190,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1191,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 5
    argNames:
    - ctx
    - llist
    - dflt
    - dflts
    - unres
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node_leaflist*
    - struct lysp_qname*
    - struct lysp_qname*
    - struct lys_glob_unres*
    assertStmts:
    - condition: (dflt || dflts)
      pos:
        line_end: 1156
        line_start: 1156
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 1199
      start: 1150
    functionDepth: 2
    functionLinenumber: 1150
    functionLinenumberEnd: 1199
    functionName: lys_compile_unres_llist_dflts
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - assert
    - lys_compile_unres_dflt
    - LY_CHECK_ERR_RET
    - LY_ARRAY_COUNT
    - realtype::plugin::print
    - free
    - realtype::plugin::compare
    - LOGVAL
    - lysc_update_path
    - LY_ARRAY_CREATE_RET
    - LY_ARRAY_INCREMENT
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_unres_llist_dflts(struct lysc_ctx *ctx, struct
      lysc_node_leaflist *llist, struct lysp_qname *dflt,\n        struct lysp_qname
      *dflts, struct lys_glob_unres *unres)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/schema_compile.c:1168,1
    - Dst: lys_compile_unres_dflt
      Src: /src/libyang/src/schema_compile.c:1169,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile.c:1171,1
    - Dst: free
      Src: /src/libyang/src/schema_compile.c:1171,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_compile.c:1172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1167
    functionDepth: 2
    functionLinenumber: 1167
    functionLinenumberEnd: 1173
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 12
    functionsReached:
    - lys_compile_unres_dflt
    - LY_CHECK_ERR_RET
    - free
    - LY_ARRAY_INCREMENT
    - calloc
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(dflts, u)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:1214,1
    - Dst: lys_recompile
      Src: /src/libyang/src/schema_compile.c:1217,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:1234,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:1236,1
    - Dst: lys_compile_unres_leafref
      Src: /src/libyang/src/schema_compile.c:1239,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:1241,1
    - Dst: lys_compile_unres_leafref
      Src: /src/libyang/src/schema_compile.c:1244,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1252,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:1265,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:1275,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1284,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/schema_compile.c:1286,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:1295,1
    - Dst: lys_compile_unres_xpath
      Src: /src/libyang/src/schema_compile.c:1297,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1298,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/schema_compile.c:1305,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:1314,1
    - Dst: lys_compile_unres_leaf_dlft
      Src: /src/libyang/src/schema_compile.c:1317,1
    - Dst: lys_compile_unres_llist_dflts
      Src: /src/libyang/src/schema_compile.c:1319,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1321,1
    - Dst: lysc_unres_dflt_free
      Src: /src/libyang/src/schema_compile.c:1328,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/schema_compile.c:1329,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/src/schema_compile.c:1334,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/schema_compile.c:1341,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1342,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1343,1
    - Dst: lysc_node_free
      Src: /src/libyang/src/schema_compile.c:1347,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 114
    argCount: 2
    argNames:
    - ctx
    - unres
    argTypes:
    - struct ly_ctx*
    - struct lys_glob_unres*
    assertStmts:
    - condition: (unres->recompile)
      pos:
        line_end: 1213
        line_start: 1213
        source_file: /src/libyang/src/schema_compile.c
    - condition: (node->nodetype & (LYS_LEAF | LYS_LEAFLIST))
      pos:
        line_end: 1235
        line_start: 1235
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 1351
      start: 1201
    functionDepth: 3
    functionLinenumber: 1201
    functionLinenumberEnd: 1351
    functionName: lys_compile_unres_glob
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 4
    functionsReached:
    - lys_compile_unres_leafref
    - LOG_LOCBACK
    - lys_compile_unres_glob
    - lys_compile_unres_leaf_dlft
    - lys_compile_unres_llist_dflts
    - lys_recompile
    - lys_compile_unres_xpath
    - lysc_unres_dflt_free
    - LY_ARRAY_FOR
    - LOGVAL
    - lysc_node_free
    - LOG_LOCSET
    - ly_set_rm_index
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_unres_glob(struct ly_ctx *ctx, struct lys_glob_unres
      *unres)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:1361,1
    - Dst: lys_precompile_augments_deviations_revert
      Src: /src/libyang/src/schema_compile.c:1365,1
    - Dst: ly_set_rm
      Src: /src/libyang/src/schema_compile.c:1372,1
    - Dst: lys_module_free
      Src: /src/libyang/src/schema_compile.c:1373,1
    - Dst: lys_recompile
      Src: /src/libyang/src/schema_compile.c:1378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - unres
    argTypes:
    - struct ly_ctx*
    - struct lys_glob_unres*
    assertStmts:
    - condition: (m->implemented)
      pos:
        line_end: 1360
        line_start: 1360
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 1380
      start: 1353
    functionDepth: 1
    functionLinenumber: 1353
    functionLinenumberEnd: 1380
    functionName: lys_compile_unres_glob_revert
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 1
    functionsReached:
    - lys_precompile_augments_deviations_revert
    - ly_set_rm
    - lys_recompile
    - lys_module_free
    - assert
    linkageType: ''
    returnType: void
    signature: void lys_compile_unres_glob_revert(struct ly_ctx *ctx, struct lys_glob_unres
      *unres)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1387,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1388,1
    - Dst: lysc_unres_dflt_free
      Src: /src/libyang/src/schema_compile.c:1390,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1392,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1393,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1394,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - unres
    argTypes:
    - struct ly_ctx*
    - struct lys_glob_unres*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1382
    functionDepth: 2
    functionLinenumber: 1382
    functionLinenumberEnd: 1396
    functionName: lys_compile_unres_glob_erase
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 4
    functionsReached:
    - ly_set_erase
    - lysc_unres_dflt_free
    linkageType: ''
    returnType: void
    signature: void lys_compile_unres_glob_erase(const struct ly_ctx *ctx, struct
      lys_glob_unres *unres)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1416,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1417,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1418,1
    - Dst: LYSP_MODULE_NAME
      Src: /src/libyang/src/schema_compile.c:1419,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1421,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1422,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1431,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1432,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile.c:1433,1
    - Dst: LYSP_MODULE_NAME
      Src: /src/libyang/src/schema_compile.c:1434,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1435,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1404
    functionDepth: 2
    functionLinenumber: 1404
    functionLinenumberEnd: 1443
    functionName: lys_compile_unres_mod
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    - LYSP_MODULE_NAME
    - lysc_update_path
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_unres_mod(struct lysc_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1456,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1457,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile.c:1461,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile.c:1461,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile.c:1462,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile.c:1462,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1464,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1465,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1466,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1467,1
    - Dst: lysc_augment_free
      Src: /src/libyang/src/schema_compile.c:1470,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1472,1
    - Dst: lysc_deviation_free
      Src: /src/libyang/src/schema_compile.c:1474,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1476,1
    - Dst: lysc_augment_free
      Src: /src/libyang/src/schema_compile.c:1478,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1480,1
    - Dst: lysc_refine_free
      Src: /src/libyang/src/schema_compile.c:1482,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile.c:1484,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - error
    argTypes:
    - struct lysc_ctx*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1451
    functionDepth: 1
    functionLinenumber: 1451
    functionLinenumberEnd: 1486
    functionName: lys_compile_unres_mod_erase
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - lysc_deviation_free
    - LOGINT
    - lysc_refine_free
    - lysc_augment_free
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: void lys_compile_unres_mod_erase(struct lysc_ctx *ctx, ly_bool error)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:1501,1
    - Dst: lys_compile_identities_derived
      Src: /src/libyang/src/schema_compile.c:1501,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1503,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:1504,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1507,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile.c:1508,1
    - Dst: lys_compile_identities_derived
      Src: /src/libyang/src/schema_compile.c:1508,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1509,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile.c:1512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1494
    functionDepth: 4
    functionLinenumber: 1494
    functionLinenumberEnd: 1515
    functionName: lys_compile_identities
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lys_compile_identities_derived
    - lysc_update_path
    - LY_ARRAY_FOR
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_identities(struct lysc_ctx *ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ly_log_options
      Src: /src/libyang/src/schema_compile.c:1532,1
    - Dst: lysc_module_free
      Src: /src/libyang/src/schema_compile.c:1540,1
    - Dst: lys_free_feature_iffeatures
      Src: /src/libyang/src/schema_compile.c:1545,1
    - Dst: lys_compile
      Src: /src/libyang/src/schema_compile.c:1557,1
    - Dst: LOGERR
      Src: /src/libyang/src/schema_compile.c:1560,1
    - Dst: lys_recompile
      Src: /src/libyang/src/schema_compile.c:1567,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1573,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/src/schema_compile.c:1573,1
    - Dst: ly_log_options
      Src: /src/libyang/src/schema_compile.c:1577,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/src/schema_compile.c:1579,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - ctx
    - log
    argTypes:
    - struct ly_ctx*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1517
    functionDepth: 4
    functionLinenumber: 1517
    functionLinenumberEnd: 1581
    functionName: lys_recompile
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 3
    functionsReached:
    - lys_compile
    - lys_compile_unres_glob
    - LOGERR
    - lys_free_feature_iffeatures
    - lys_recompile
    - lys_compile_unres_glob_erase
    - lysc_module_free
    - ly_log_options
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_recompile(struct ly_ctx *ctx, ly_bool log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:1594,1
    - Dst: lys_has_compiled_import_r
      Src: /src/libyang/src/schema_compile.c:1604,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - mod
    argTypes:
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1589
    functionDepth: 1
    functionLinenumber: 1589
    functionLinenumberEnd: 1610
    functionName: lys_has_compiled_import_r
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 1
    functionsReached:
    - LY_ARRAY_FOR
    - lys_has_compiled_import_r
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lys_has_compiled_import_r(struct lys_module *mod)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/schema_compile.c:1624,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile.c:1628,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1646,1
    - Dst: lys_precompile_augments_deviations
      Src: /src/libyang/src/schema_compile.c:1646,1
    - Dst: lys_has_compiled_import_r
      Src: /src/libyang/src/schema_compile.c:1650,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile.c:1663,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile.c:1664,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile.c:1664,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1668,1
    - Dst: lys_compile_identities
      Src: /src/libyang/src/schema_compile.c:1668,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1671,1
    - Dst: lys_precompile_own_augments
      Src: /src/libyang/src/schema_compile.c:1671,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1672,1
    - Dst: lys_precompile_own_deviations
      Src: /src/libyang/src/schema_compile.c:1672,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1675,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1676,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile.c:1676,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1680,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1681,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile.c:1681,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1685,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1686,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile.c:1686,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile.c:1690,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:1693,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1697,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile.c:1698,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1699,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1702,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile.c:1703,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1704,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1707,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile.c:1708,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1709,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile.c:1712,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1719,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1721,1
    - Dst: lys_compile_grouping
      Src: /src/libyang/src/schema_compile.c:1721,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1724,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1725,1
    - Dst: lysp_node_groupings
      Src: /src/libyang/src/schema_compile.c:1725,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1727,1
    - Dst: lys_compile_grouping
      Src: /src/libyang/src/schema_compile.c:1727,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile.c:1731,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1735,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1737,1
    - Dst: lys_compile_grouping
      Src: /src/libyang/src/schema_compile.c:1737,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1740,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile.c:1741,1
    - Dst: lysp_node_groupings
      Src: /src/libyang/src/schema_compile.c:1741,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1743,1
    - Dst: lys_compile_grouping
      Src: /src/libyang/src/schema_compile.c:1743,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1750,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile.c:1753,1
    - Dst: lys_compile_unres_mod
      Src: /src/libyang/src/schema_compile.c:1753,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/schema_compile.c:1756,1
    - Dst: lys_compile_unres_mod_erase
      Src: /src/libyang/src/schema_compile.c:1757,1
    - Dst: lys_precompile_augments_deviations_revert
      Src: /src/libyang/src/schema_compile.c:1759,1
    - Dst: lysc_module_free
      Src: /src/libyang/src/schema_compile.c:1760,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 101
    argCount: 3
    argNames:
    - mod
    - options
    - unres
    argTypes:
    - struct lys_module*
    - uint32_t
    - struct lys_glob_unres*
    assertStmts:
    - condition: (!unres->recompile)
      pos:
        line_end: 1627
        line_start: 1627
        source_file: /src/libyang/src/schema_compile.c
    constantsTouched: []
    func_position:
      end: 1764
      start: 1612
    functionDepth: 5
    functionLinenumber: 1612
    functionLinenumberEnd: 1764
    functionName: lys_compile
    functionSourceFile: /src/libyang/src/schema_compile.c
    functionUses: 3
    functionsReached:
    - lys_precompile_augments_deviations_revert
    - LY_CHECK_ERR_RET
    - lys_precompile_own_augments
    - LY_CHECK_GOTO
    - calloc
    - lys_has_compiled_import_r
    - lysp_node_groupings
    - lys_compile_identities
    - assert
    - LOG_LOCBACK
    - LY_CHECK_ARG_RET
    - COMPILE_EXTS_GOTO
    - LY_LIST_FOR
    - lys_compile_unres_mod_erase
    - lys_compile_node
    - LOGMEM
    - lys_compile_grouping
    - lys_precompile_augments_deviations
    - lys_precompile_own_deviations
    - lys_compile_unres_mod
    - LY_ARRAY_FOR
    - lysc_module_free
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile(struct lys_module *mod, uint32_t options, struct
      lys_glob_unres *unres)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - enum ly_stmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: ly_stmt2str
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 101
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_stmt2str(enum ly_stmt stmt)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:150,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:154,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:154,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:161,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:170,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - root
    - dfs_clb
    - data
    argTypes:
    - struct lysc_node*
    - lysc_dfs_clb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 178
    functionName: lysc_tree_dfs_full
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - dfs_clb
    - LYSC_TREE_DFS_END
    linkageType: ''
    returnType: API
    signature: API lysc_tree_dfs_full(const struct lysc_node *root, lysc_dfs_clb dfs_clb,
      void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:154,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:154,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:161,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:170,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 175
    functionName: LYSC_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - dfs_clb
    - LYSC_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYSC_TREE_DFS_BEGIN(root, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 17
    functionsReached:
    - LY_CHECK_RET
    - dfs_clb
    - LYSC_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lysc_node_actions(elem), action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:159,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: LYSC_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - dfs_clb
    - LYSC_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYSC_TREE_DFS_BEGIN(action, elem2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 172
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 17
    functionsReached:
    - LY_CHECK_RET
    - dfs_clb
    - LYSC_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lysc_node_notifs(elem), notif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: dfs_clb
      Src: /src/libyang/src/tree_schema.c:168,1
    - Dst: LYSC_TREE_DFS_END
      Src: /src/libyang/src/tree_schema.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 171
    functionName: LYSC_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - dfs_clb
    - LYSC_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYSC_TREE_DFS_BEGIN(notif, elem2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:185,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_schema.c:188,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:189,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/src/tree_schema.c:189,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_schema.c:193,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:194,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/src/tree_schema.c:194,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_schema.c:198,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:199,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/src/tree_schema.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - mod
    - dfs_clb
    - data
    argTypes:
    - struct lys_module*
    - lysc_dfs_clb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 203
    functionName: lysc_module_dfs_full
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - LY_LIST_FOR
    - lysc_tree_dfs_full
    linkageType: ''
    returnType: API
    signature: API lysc_module_dfs_full(const struct lys_module *mod, lysc_dfs_clb
      dfs_clb, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - first_case
    - last
    - next
    argTypes:
    - struct lysc_node_case*
    - struct lysc_node**
    - struct lysc_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 219
    functionName: lys_getnext_into_case
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lys_getnext_into_case(const struct lysc_node_case *first_case,
      const struct lysc_node **last, const struct lysc_node **next)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:255,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema.c:264,1
    - Dst: lysc_ext_substmt
      Src: /src/libyang/src/tree_schema.c:268,1
    - Dst: lysc_ext_substmt
      Src: /src/libyang/src/tree_schema.c:301,1
    - Dst: lysc_node_actions
      Src: /src/libyang/src/tree_schema.c:304,1
    - Dst: lysc_ext_substmt
      Src: /src/libyang/src/tree_schema.c:311,1
    - Dst: lysc_node_notifs
      Src: /src/libyang/src/tree_schema.c:314,1
    - Dst: lys_getnext_into_case
      Src: /src/libyang/src/tree_schema.c:339,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema.c:344,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema.c:346,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema.c:357,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema.c:361,1
    - Dst: lys_getnext_into_case
      Src: /src/libyang/src/tree_schema.c:364,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema.c:374,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema.c:383,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema.c:388,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 138
    argCount: 5
    argNames:
    - last
    - parent
    - module
    - ext
    - options
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    - struct lysc_module*
    - struct lysc_ext_instance*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 393
    functionName: lys_getnext_
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - lysc_node_actions
    - LY_CHECK_ARG_RET
    - LOGINT
    - lys_getnext_into_case
    - lysc_node_notifs
    - lysc_ext_substmt
    - lysc_node_child
    linkageType: ''
    returnType: struct lysc_node
    signature: "struct lysc_node *\nlys_getnext_(const struct lysc_node *last, const
      struct lysc_node *parent, const struct lysc_module *module,\n        const struct
      lysc_ext_instance *ext, uint32_t options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lys_getnext_
      Src: /src/libyang/src/tree_schema.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - last
    - parent
    - module
    - options
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    - struct lysc_module*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 395
    functionDepth: 3
    functionLinenumber: 395
    functionLinenumberEnd: 399
    functionName: lys_getnext
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 6
    functionsReached:
    - lys_getnext_
    linkageType: ''
    returnType: API
    signature: 'API *

      lys_getnext(const struct lysc_node *last, const struct lysc_node *parent, const
      struct lysc_module *module, uint32_t options)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lys_getnext_
      Src: /src/libyang/src/tree_schema.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - last
    - parent
    - ext
    - options
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    - struct lysc_ext_instance*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 401
    functionDepth: 3
    functionLinenumber: 401
    functionLinenumberEnd: 405
    functionName: lys_getnext_ext
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - lys_getnext_
    linkageType: ''
    returnType: API
    signature: 'API *

      lys_getnext_ext(const struct lysc_node *last, const struct lysc_node *parent,
      const struct lysc_ext_instance *ext, uint32_t options)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:413,1
    - Dst: lys_getnext_ext
      Src: /src/libyang/src/tree_schema.c:422,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/tree_schema.c:428,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:432,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 6
    argNames:
    - ext
    - module
    - name
    - name_len
    - nodetype
    - options
    argTypes:
    - struct lysc_ext_instance*
    - struct lys_module*
    - char*
    - size_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 407
    functionDepth: 4
    functionLinenumber: 407
    functionLinenumberEnd: 438
    functionName: lysc_ext_find_node
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 4
    functionsReached:
    - lys_getnext_ext
    - LY_CHECK_ARG_RET
    - ly_strncmp
    - strcmp
    linkageType: ''
    returnType: struct lysc_node
    signature: "struct lysc_node *\nlysc_ext_find_node(const struct lysc_ext_instance
      *ext, const struct lys_module *module, const char *name, size_t name_len,\n
      \       uint16_t nodetype, uint32_t options)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:446,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_schema.c:451,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/tree_schema.c:460,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:464,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 6
    argNames:
    - parent
    - module
    - name
    - name_len
    - nodetype
    - options
    argTypes:
    - struct lysc_node*
    - struct lys_module*
    - char*
    - size_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 440
    functionDepth: 4
    functionLinenumber: 440
    functionLinenumberEnd: 470
    functionName: lys_find_child
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 5
    functionsReached:
    - strcmp
    - LY_CHECK_ARG_RET
    - ly_strncmp
    - lys_getnext
    linkageType: ''
    returnType: API
    signature: "API *\nlys_find_child(const struct lysc_node *parent, const struct
      lys_module *module, const char *name, size_t name_len,\n        uint16_t nodetype,
      uint32_t options)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:481,1
    - Dst: memset
      Src: /src/libyang/src/tree_schema.c:489,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/tree_schema.c:492,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:493,1
    - Dst: lyxp_atomize
      Src: /src/libyang/src/tree_schema.c:496,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:497,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_schema.c:500,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:501,1
    - Dst: malloc
      Src: /src/libyang/src/tree_schema.c:504,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_schema.c:505,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:505,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:510,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:511,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/tree_schema.c:516,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema.c:517,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 5
    argNames:
    - ctx
    - ctx_node
    - xpath
    - options
    - set
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - uint32_t
    - struct ly_set**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 519
    functionName: lys_find_xpath_atoms
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyxp_expr_free
    - memset
    - malloc
    - LY_CHECK_ARG_RET
    - ly_set_new
    - LOGMEM
    - ly_set_add
    - LY_CHECK_GOTO
    - lyxp_expr_parse
    - lyxp_set_free_content
    - lyxp_atomize
    linkageType: ''
    returnType: API
    signature: "API lys_find_xpath_atoms(const struct ly_ctx *ctx, const struct lysc_node
      *ctx_node, const char *xpath, uint32_t options,\n        struct ly_set **set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:529,1
    - Dst: lyxp_atomize
      Src: /src/libyang/src/tree_schema.c:535,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:536,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_schema.c:539,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:540,1
    - Dst: malloc
      Src: /src/libyang/src/tree_schema.c:543,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_schema.c:544,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:544,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema.c:549,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:552,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:553,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/tree_schema.c:558,1
    - Dst: ly_set_free
      Src: /src/libyang/src/tree_schema.c:560,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 6
    argNames:
    - ctx_node
    - cur_mod
    - expr
    - prefixes
    - options
    - set
    argTypes:
    - struct lysc_node*
    - struct lys_module*
    - struct lyxp_expr*
    - struct lysc_prefix*
    - uint32_t
    - struct ly_set**
    assertStmts:
    - condition: "((xp_set.val.scnodes[i].in_ctx == LYXP_SET_SCNODE_ATOM_NODE) ||\n
        \                   (xp_set.val.scnodes[i].in_ctx == LYXP_SET_SCNODE_ATOM_VAL)
        ||\n                    (xp_set.val.scnodes[i].in_ctx == LYXP_SET_SCNODE_ATOM_CTX))"
      pos:
        line_end: 550
        line_start: 548
        source_file: /src/libyang/src/tree_schema.c
    constantsTouched: []
    func_position:
      end: 564
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 564
    functionName: lys_find_expr_atoms
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - malloc
    - LY_CHECK_ARG_RET
    - ly_set_new
    - ly_set_free
    - LOGMEM
    - ly_set_add
    - LY_CHECK_GOTO
    - lyxp_set_free_content
    - lyxp_atomize
    - assert
    linkageType: ''
    returnType: API
    signature: "API lys_find_expr_atoms(const struct lysc_node *ctx_node, const struct
      lys_module *cur_mod, const struct lyxp_expr *expr,\n        const struct lysc_prefix
      *prefixes, uint32_t options, struct ly_set **set)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:575,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/tree_schema.c:584,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:585,1
    - Dst: lyxp_atomize
      Src: /src/libyang/src/tree_schema.c:588,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:589,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_schema.c:592,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:593,1
    - Dst: malloc
      Src: /src/libyang/src/tree_schema.c:596,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_schema.c:597,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:597,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:602,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:603,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/tree_schema.c:608,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema.c:609,1
    - Dst: ly_set_free
      Src: /src/libyang/src/tree_schema.c:611,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 5
    argNames:
    - ctx
    - ctx_node
    - xpath
    - options
    - set
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - uint32_t
    - struct ly_set**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 615
    functionName: lys_find_xpath
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyxp_expr_free
    - malloc
    - LY_CHECK_ARG_RET
    - ly_set_new
    - ly_set_free
    - LOGMEM
    - ly_set_add
    - LY_CHECK_GOTO
    - lyxp_expr_parse
    - lyxp_set_free_content
    - lyxp_atomize
    linkageType: ''
    returnType: API
    signature: "API lys_find_xpath(const struct ly_ctx *ctx, const struct lysc_node
      *ctx_node, const char *xpath, uint32_t options,\n        struct ly_set **set)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:623,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:626,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_schema.c:626,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:630,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:630,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema.c:632,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:634,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:634,1
    - Dst: ly_set_free
      Src: /src/libyang/src/tree_schema.c:641,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - path
    - set
    argTypes:
    - struct ly_path*
    - struct ly_set**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 645
    functionName: lys_find_lypath_atoms
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_set_new
    - ly_set_free
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: API
    signature: API lys_find_lypath_atoms(const struct ly_path *path, struct ly_set
      **set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:630,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:630,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema.c:632,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:634,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 637
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 18
    functionsReached:
    - LY_ARRAY_FOR
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(path, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:656,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/tree_schema.c:663,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:663,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:664,1
    - Dst: ly_path_compile
      Src: /src/libyang/src/tree_schema.c:668,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:670,1
    - Dst: lys_find_lypath_atoms
      Src: /src/libyang/src/tree_schema.c:673,1
    - Dst: ly_path_free
      Src: /src/libyang/src/tree_schema.c:676,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema.c:677,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - ctx
    - ctx_node
    - path
    - output
    - set
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - ly_bool
    - struct ly_set**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 647
    functionDepth: 2
    functionLinenumber: 647
    functionLinenumberEnd: 679
    functionName: lys_find_path_atoms
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - strlen
    - lyxp_expr_free
    - ly_path_free
    - LY_CHECK_ARG_RET
    - ly_path_compile
    - lys_find_lypath_atoms
    - LY_CHECK_GOTO
    - lyxp_expr_parse
    linkageType: ''
    returnType: API
    signature: "API lys_find_path_atoms(const struct ly_ctx *ctx, const struct lysc_node
      *ctx_node, const char *path, ly_bool output,\n        struct ly_set **set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:690,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/tree_schema.c:697,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:697,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:698,1
    - Dst: ly_path_compile
      Src: /src/libyang/src/tree_schema.c:702,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:704,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_schema.c:707,1
    - Dst: ly_path_free
      Src: /src/libyang/src/tree_schema.c:710,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema.c:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - ctx
    - ctx_node
    - path
    - output
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 681
    functionDepth: 1
    functionLinenumber: 681
    functionLinenumberEnd: 713
    functionName: lys_find_path
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 3
    functionsReached:
    - strlen
    - lyxp_expr_free
    - ly_path_free
    - LY_ARRAY_COUNT
    - LY_CHECK_ARG_RET
    - ly_path_compile
    - LY_CHECK_GOTO
    - lyxp_expr_parse
    linkageType: ''
    returnType: API
    signature: 'API *

      lys_find_path(const struct ly_ctx *ctx, const struct lysc_node *ctx_node, const
      char *path, ly_bool output)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:724,1
    - Dst: strdup
      Src: /src/libyang/src/tree_schema.c:740,1
    - Dst: strdup
      Src: /src/libyang/src/tree_schema.c:741,1
    - Dst: snprintf
      Src: /src/libyang/src/tree_schema.c:750,1
    - Dst: asprintf
      Src: /src/libyang/src/tree_schema.c:752,1
    - Dst: snprintf
      Src: /src/libyang/src/tree_schema.c:757,1
    - Dst: asprintf
      Src: /src/libyang/src/tree_schema.c:759,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:762,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:763,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:772,1
    - Dst: strcpy
      Src: /src/libyang/src/tree_schema.c:776,1
    - Dst: strdup
      Src: /src/libyang/src/tree_schema.c:778,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 5
    argNames:
    - node
    - parent
    - pathtype
    - buffer
    - buflen
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    - LYSC_PATH_TYPE
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 789
    functionName: lysc_path_until
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - snprintf
    - strcpy
    - LY_CHECK_ARG_RET
    - free
    - asprintf
    - strdup
    linkageType: ''
    returnType: char
    signature: "char *\nlysc_path_until(const struct lysc_node *node, const struct
      lysc_node *parent, LYSC_PATH_TYPE pathtype, char *buffer,\n        size_t buflen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_path_until
      Src: /src/libyang/src/tree_schema.c:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - node
    - pathtype
    - buffer
    - buflen
    argTypes:
    - struct lysc_node*
    - LYSC_PATH_TYPE
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 791
    functionDepth: 3
    functionLinenumber: 791
    functionLinenumberEnd: 795
    functionName: lysc_path
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 5
    functionsReached:
    - lysc_path_until
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_path(const struct lysc_node *node, LYSC_PATH_TYPE pathtype, char *buffer,
      size_t buflen)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema.c:802,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/tree_schema.c:805,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema.c:807,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema.c:810,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:816,1
    - Dst: lys_enable_features
      Src: /src/libyang/src/tree_schema.c:816,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:825,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:825,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:831,1
    - Dst: lys_compile
      Src: /src/libyang/src/tree_schema.c:831,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - mod
    - features
    - unres
    argTypes:
    - struct lys_module*
    - char**
    - struct lys_glob_unres*
    assertStmts:
    - condition: (!mod->implemented)
      pos:
        line_end: 801
        line_start: 801
        source_file: /src/libyang/src/tree_schema.c
    - condition: (m != mod)
      pos:
        line_end: 806
        line_start: 806
        source_file: /src/libyang/src/tree_schema.c
    constantsTouched: []
    func_position:
      end: 837
      start: 797
    functionDepth: 6
    functionLinenumber: 797
    functionLinenumberEnd: 837
    functionName: lys_set_implemented_r
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 1
    functionsReached:
    - lys_compile
    - LOGERR
    - ly_ctx_get_module_implemented
    - LY_CHECK_RET
    - lys_enable_features
    - ly_set_add
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_set_implemented_r(struct lys_module *mod, const char **features,
      struct lys_glob_unres *unres)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:845,1
    - Dst: lys_set_features
      Src: /src/libyang/src/tree_schema.c:849,1
    - Dst: lys_recompile
      Src: /src/libyang/src/tree_schema.c:864,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/tree_schema.c:869,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/src/tree_schema.c:873,1
    - Dst: lys_compile_unres_glob_revert
      Src: /src/libyang/src/tree_schema.c:877,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/src/tree_schema.c:880,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - mod
    - features
    argTypes:
    - struct lys_module*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 839
    functionDepth: 7
    functionLinenumber: 839
    functionLinenumberEnd: 882
    functionName: lys_set_implemented
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 2
    functionsReached:
    - lys_compile_unres_glob
    - lys_set_features
    - LY_CHECK_ARG_RET
    - lys_recompile
    - lys_compile_unres_glob_revert
    - lys_compile_unres_glob_erase
    - lys_set_implemented_r
    linkageType: ''
    returnType: API
    signature: API lys_set_implemented(struct lys_module *mod, const char **features)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema.c:891,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:894,1
    - Dst: lys_load_module
      Src: /src/libyang/src/tree_schema.c:894,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema.c:894,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema.c:900,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema.c:900,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:904,1
    - Dst: lysp_load_submodules
      Src: /src/libyang/src/tree_schema.c:904,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - pctx
    - pmod
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 884
    functionDepth: 1
    functionLinenumber: 884
    functionLinenumberEnd: 909
    functionName: lys_resolve_import_include
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - lys_load_module
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGWRN
    - lysp_load_submodules
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_resolve_import_include(struct lys_parser_ctx *pctx, struct
      lysp_module *pmod)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:922,1
    - Dst: yin_parse_submodule
      Src: /src/libyang/src/tree_schema.c:926,1
    - Dst: yang_parse_submodule
      Src: /src/libyang/src/tree_schema.c:930,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema.c:934,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:938,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema.c:939,1
    - Dst: lysp_sort_revisions
      Src: /src/libyang/src/tree_schema.c:942,1
    - Dst: ly_ctx_get_submodule2_latest
      Src: /src/libyang/src/tree_schema.c:945,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:952,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:966,1
    - Dst: custom_check
      Src: /src/libyang/src/tree_schema.c:966,1
    - Dst: lys_parser_fill_filepath
      Src: /src/libyang/src/tree_schema.c:973,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:976,1
    - Dst: lys_resolve_import_include
      Src: /src/libyang/src/tree_schema.c:976,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_schema.c:979,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_schema.c:980,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/src/tree_schema.c:983,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/src/tree_schema.c:985,1
    - Dst: lysp_module_free
      Src: /src/libyang/src/tree_schema.c:991,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/src/tree_schema.c:993,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/src/tree_schema.c:995,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 62
    argCount: 6
    argNames:
    - ctx
    - in
    - format
    - main_ctx
    - check_data
    - submodule
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - LYS_INFORMAT
    - struct lys_parser_ctx*
    - void*
    - struct lysp_submodule**
    assertStmts:
    - condition: (submod)
      pos:
        line_end: 938
        line_start: 938
        source_file: /src/libyang/src/tree_schema.c
    constantsTouched: []
    func_position:
      end: 998
      start: 911
    functionDepth: 20
    functionLinenumber: 911
    functionLinenumberEnd: 998
    functionName: lys_parse_submodule
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - ly_ctx_get_submodule2_latest
    - yang_parse_submodule
    - lysp_sort_revisions
    - memcpy
    - custom_check
    - yang_parser_ctx_free
    - LY_CHECK_ARG_RET
    - LOGERR
    - strcmp
    - yin_parser_ctx_free
    - lys_parser_fill_filepath
    - lysp_module_free
    - LY_CHECK_GOTO
    - yin_parse_submodule
    - assert
    - lys_resolve_import_include
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_parse_submodule(struct ly_ctx *ctx, struct ly_in *in, LYS_INFORMAT
      format, struct lys_parser_ctx *main_ctx,\n        LY_ERR (*custom_check)(const
      struct ly_ctx *, struct lysp_module *, struct lysp_submodule *, void *),\n        void
      *check_data, struct lysp_submodule **submodule)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema.c:1017,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1018,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1018,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1019,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1019,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1020,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1020,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1027,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1028,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1028,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1029,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1029,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1030,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1030,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1035,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1037,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1037,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1038,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1038,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1039,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1039,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1044,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1046,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1046,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1047,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1047,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1048,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1048,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1053,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1055,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1055,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1056,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1056,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1057,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1057,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1062,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1064,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1064,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1065,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1065,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1066,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1066,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1071,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1073,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1073,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1074,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1074,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1075,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1075,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema.c:1083,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1084,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1084,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1085,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1085,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1086,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1086,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1093,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1094,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1094,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1095,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1095,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1096,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1096,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1101,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1103,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1103,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1104,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1104,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1105,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1105,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1110,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1112,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1112,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1113,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1113,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1114,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1114,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1121,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1123,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1123,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1124,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1124,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1125,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1125,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema.c:1134,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1135,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1135,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1136,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1136,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1137,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1137,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1144,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1145,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1145,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1146,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1146,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1147,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1147,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema.c:1153,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1155,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1155,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1156,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1156,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema.c:1159,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1161,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1161,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1162,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 124
    argCount: 1
    argNames:
    - mod
    argTypes:
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1007
    functionDepth: 4
    functionLinenumber: 1007
    functionLinenumberEnd: 1166
    functionName: lys_parsed_add_internal_ietf_netconf
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - lydict_insert
    - LY_ARRAY_NEW_RET
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_parsed_add_internal_ietf_netconf(struct lysp_module *mod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema.c:1183,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1186,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1186,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1187,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1187,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1188,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1188,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1195,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1196,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1196,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1197,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1197,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1198,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1198,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema.c:1204,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1206,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1206,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1207,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - mod
    argTypes:
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1175
    functionDepth: 4
    functionLinenumber: 1175
    functionLinenumberEnd: 1211
    functionName: lys_parsed_add_internal_ietf_netconf_with_defaults
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - lydict_insert
    - LY_ARRAY_NEW_RET
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_parsed_add_internal_ietf_netconf_with_defaults(struct lysp_module
      *mod)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema.c:1229,1
    - Dst: calloc
      Src: /src/libyang/src/tree_schema.c:1241,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1242,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1242,1
    - Dst: yin_parse_module
      Src: /src/libyang/src/tree_schema.c:1248,1
    - Dst: yang_parse_module
      Src: /src/libyang/src/tree_schema.c:1252,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema.c:1256,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1260,1
    - Dst: lysp_sort_revisions
      Src: /src/libyang/src/tree_schema.c:1263,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1265,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema.c:1265,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/tree_schema.c:1269,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1276,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1290,1
    - Dst: custom_check
      Src: /src/libyang/src/tree_schema.c:1290,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/src/tree_schema.c:1294,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/tree_schema.c:1296,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema.c:1298,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1308,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/tree_schema.c:1308,1
    - Dst: LOGVRB
      Src: /src/libyang/src/tree_schema.c:1313,1
    - Dst: LOGVRB
      Src: /src/libyang/src/tree_schema.c:1319,1
    - Dst: strrchr
      Src: /src/libyang/src/tree_schema.c:1327,1
    - Dst: strchr
      Src: /src/libyang/src/tree_schema.c:1333,1
    - Dst: strrchr
      Src: /src/libyang/src/tree_schema.c:1334,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:1337,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema.c:1338,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema.c:1340,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema.c:1344,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema.c:1345,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema.c:1357,1
    - Dst: lys_parser_fill_filepath
      Src: /src/libyang/src/tree_schema.c:1361,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1368,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1369,1
    - Dst: lys_parsed_add_internal_ietf_netconf
      Src: /src/libyang/src/tree_schema.c:1369,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1370,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1371,1
    - Dst: lys_parsed_add_internal_ietf_netconf_with_defaults
      Src: /src/libyang/src/tree_schema.c:1371,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1375,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:1375,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:1378,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1379,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1383,1
    - Dst: lys_resolve_import_include
      Src: /src/libyang/src/tree_schema.c:1383,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1386,1
    - Dst: lysp_check_dup_typedefs
      Src: /src/libyang/src/tree_schema.c:1386,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1388,1
    - Dst: lysp_check_dup_features
      Src: /src/libyang/src/tree_schema.c:1388,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1389,1
    - Dst: lysp_check_dup_identities
      Src: /src/libyang/src/tree_schema.c:1389,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1392,1
    - Dst: lys_compile_feature_iffeatures
      Src: /src/libyang/src/tree_schema.c:1392,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1395,1
    - Dst: lys_identity_precompile
      Src: /src/libyang/src/tree_schema.c:1395,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema.c:1396,1
    - Dst: lys_identity_precompile
      Src: /src/libyang/src/tree_schema.c:1398,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1399,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1404,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/tree_schema.c:1404,1
    - Dst: lys_module_free
      Src: /src/libyang/src/tree_schema.c:1411,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema.c:1416,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/tree_schema.c:1422,1
    - Dst: yang_parser_ctx_free
      Src: /src/libyang/src/tree_schema.c:1425,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/src/tree_schema.c:1427,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 161
    argCount: 8
    argNames:
    - ctx
    - in
    - format
    - need_implemented
    - check_data
    - features
    - unres
    - module
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - LYS_INFORMAT
    - ly_bool
    - void*
    - char**
    - struct lys_glob_unres*
    - struct lys_module**
    assertStmts:
    - condition: (ctx && in && (!features || need_implemented) && unres)
      pos:
        line_end: 1228
        line_start: 1228
        source_file: /src/libyang/src/tree_schema.c
    - condition: (mod_dup)
      pos:
        line_end: 1415
        line_start: 1415
        source_file: /src/libyang/src/tree_schema.c
    constantsTouched: []
    func_position:
      end: 1434
      start: 1213
    functionDepth: 20
    functionLinenumber: 1213
    functionLinenumberEnd: 1434
    functionName: lys_create_module
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 3
    functionsReached:
    - strlen
    - lysp_check_dup_identities
    - lysp_sort_revisions
    - LY_CHECK_ERR_RET
    - custom_check
    - lys_identity_precompile
    - LOGERR
    - lys_parser_fill_filepath
    - strchr
    - lydict_insert
    - strncmp
    - LY_CHECK_GOTO
    - ly_set_erase
    - LOGVRB
    - ly_ctx_get_module
    - lys_set_implemented_r
    - calloc
    - lys_resolve_import_include
    - yang_parser_ctx_free
    - yin_parser_ctx_free
    - lysp_check_dup_features
    - lys_compile_feature_iffeatures
    - lys_parsed_add_internal_ietf_netconf_with_defaults
    - yin_parse_module
    - assert
    - ly_ctx_get_module_implemented
    - lys_module_free
    - LOGMEM
    - lys_parsed_add_internal_ietf_netconf
    - strcmp
    - LOGINT
    - ly_ctx_get_module_latest
    - strrchr
    - LY_ARRAY_FOR
    - yang_parse_module
    - ly_set_add
    - LOGWRN
    - lysp_check_dup_typedefs
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_create_module(struct ly_ctx *ctx, struct ly_in *in, LYS_INFORMAT
      format, ly_bool need_implemented,\n        LY_ERR (*custom_check)(const struct
      ly_ctx *ctx, struct lysp_module *mod, struct lysp_submodule *submod, void *data),\n
      \       void *check_data, const char **features, struct lys_glob_unres *unres,
      struct lys_module **module)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:1442,1
    - Dst: isspace
      Src: /src/libyang/src/tree_schema.c:1445,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema.c:1448,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema.c:1451,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - in
    - format
    argTypes:
    - struct ly_in*
    - LYS_INFORMAT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1436
    functionDepth: 0
    functionLinenumber: 1436
    functionLinenumberEnd: 1457
    functionName: lys_parse_get_format
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - strlen
    - isspace
    - strncmp
    linkageType: ''
    returnType: LYS_INFORMAT
    signature: LYS_INFORMAT lys_parse_get_format(const struct ly_in *in, LYS_INFORMAT
      format)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:1468,1
    - Dst: lys_parse_get_format
      Src: /src/libyang/src/tree_schema.c:1470,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:1471,1
    - Dst: lys_create_module
      Src: /src/libyang/src/tree_schema.c:1476,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1477,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/src/tree_schema.c:1480,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1481,1
    - Dst: lys_compile_unres_glob_revert
      Src: /src/libyang/src/tree_schema.c:1485,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/src/tree_schema.c:1487,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 5
    argNames:
    - ctx
    - in
    - format
    - features
    - module
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - LYS_INFORMAT
    - char**
    - struct lys_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1459
    functionDepth: 21
    functionLinenumber: 1459
    functionLinenumberEnd: 1492
    functionName: lys_parse
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 4
    functionsReached:
    - lys_create_module
    - lys_compile_unres_glob
    - LY_CHECK_ARG_RET
    - lys_parse_get_format
    - lys_compile_unres_glob_revert
    - lys_compile_unres_glob_erase
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: API
    signature: API lys_parse(struct ly_ctx *ctx, struct ly_in *in, LYS_INFORMAT format,
      const char **features, const struct lys_module **module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:1500,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1502,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/src/tree_schema.c:1502,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema.c:1502,1
    - Dst: lys_parse
      Src: /src/libyang/src/tree_schema.c:1504,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_schema.c:1505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - data
    - format
    - module
    argTypes:
    - struct ly_ctx*
    - char*
    - LYS_INFORMAT
    - struct lys_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1494
    functionDepth: 22
    functionLinenumber: 1494
    functionLinenumberEnd: 1508
    functionName: lys_parse_mem
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 46
    functionsReached:
    - ly_in_free
    - LY_CHECK_ERR_RET
    - LY_CHECK_ARG_RET
    - LOGERR
    - lys_parse
    - ly_in_new_memory
    linkageType: ''
    returnType: API
    signature: API lys_parse_mem(struct ly_ctx *ctx, const char *data, LYS_INFORMAT
      format, const struct lys_module **module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:1516,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1518,1
    - Dst: ly_in_new_fd
      Src: /src/libyang/src/tree_schema.c:1518,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema.c:1518,1
    - Dst: lys_parse
      Src: /src/libyang/src/tree_schema.c:1520,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_schema.c:1521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - fd
    - format
    - module
    argTypes:
    - struct ly_ctx*
    - int
    - LYS_INFORMAT
    - struct lys_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1524
      start: 1510
    functionDepth: 22
    functionLinenumber: 1510
    functionLinenumberEnd: 1524
    functionName: lys_parse_fd
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - LY_CHECK_ERR_RET
    - LY_CHECK_ARG_RET
    - LOGERR
    - ly_in_new_fd
    - lys_parse
    linkageType: ''
    returnType: API
    signature: API lys_parse_fd(struct ly_ctx *ctx, int fd, LYS_INFORMAT format, const
      struct lys_module **module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:1532,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema.c:1534,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/src/tree_schema.c:1534,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema.c:1535,1
    - Dst: lys_parse
      Src: /src/libyang/src/tree_schema.c:1537,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_schema.c:1538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - path
    - format
    - module
    argTypes:
    - struct ly_ctx*
    - char*
    - LYS_INFORMAT
    - struct lys_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1526
    functionDepth: 22
    functionLinenumber: 1526
    functionLinenumberEnd: 1541
    functionName: lys_parse_path
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - ly_in_free
    - LY_CHECK_ERR_RET
    - LY_CHECK_ARG_RET
    - LOGERR
    - ly_in_new_filepath
    - lys_parse
    linkageType: ''
    returnType: API
    signature: API lys_parse_path(struct ly_ctx *ctx, const char *path, LYS_INFORMAT
      format, const struct lys_module **module)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema.c:1558,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema.c:1562,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_schema.c:1562,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:1564,1
    - Dst: get_current_dir_name
      Src: /src/libyang/src/tree_schema.c:1566,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1568,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:1573,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1574,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1581,1
    - Dst: strdup
      Src: /src/libyang/src/tree_schema.c:1585,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1587,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:1590,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1591,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1599,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1600,1
    - Dst: LOGVRB
      Src: /src/libyang/src/tree_schema.c:1605,1
    - Dst: closedir
      Src: /src/libyang/src/tree_schema.c:1608,1
    - Dst: opendir
      Src: /src/libyang/src/tree_schema.c:1610,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:1611,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema.c:1613,1
    - Dst: strerror
      Src: /src/libyang/src/tree_schema.c:1613,1
    - Dst: readdir
      Src: /src/libyang/src/tree_schema.c:1615,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1616,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1616,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1620,1
    - Dst: asprintf
      Src: /src/libyang/src/tree_schema.c:1621,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_schema.c:1622,1
    - Dst: stat
      Src: /src/libyang/src/tree_schema.c:1625,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema.c:1626,1
    - Dst: strerror
      Src: /src/libyang/src/tree_schema.c:1627,1
    - Dst: S_ISDIR
      Src: /src/libyang/src/tree_schema.c:1630,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_schema.c:1633,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema.c:1634,1
    - Dst: S_ISREG
      Src: /src/libyang/src/tree_schema.c:1639,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema.c:1645,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:1652,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1654,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema.c:1657,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema.c:1668,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema.c:1668,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1673,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1682,1
    - Dst: lysp_check_date
      Src: /src/libyang/src/tree_schema.c:1693,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema.c:1697,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1700,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1722,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1723,1
    - Dst: closedir
      Src: /src/libyang/src/tree_schema.c:1725,1
    - Dst: free
      Src: /src/libyang/src/tree_schema.c:1727,1
    - Dst: ly_set_free
      Src: /src/libyang/src/tree_schema.c:1728,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 143
    argCount: 6
    argNames:
    - searchpaths
    - cwd
    - name
    - revision
    - localfile
    - format
    argTypes:
    - char**
    - ly_bool
    - char*
    - char*
    - char**
    - LYS_INFORMAT*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1543
    functionDepth: 2
    functionLinenumber: 1543
    functionLinenumberEnd: 1731
    functionName: lys_search_localfile
    functionSourceFile: /src/libyang/src/tree_schema.c
    functionUses: 0
    functionsReached:
    - strlen
    - asprintf
    - ly_set_free
    - LY_CHECK_RET
    - strdup
    - strncmp
    - LY_CHECK_GOTO
    - LOGVRB
    - lysp_check_date
    - closedir
    - get_current_dir_name
    - stat
    - S_ISREG
    - LY_CHECK_ARG_RET
    - readdir
    - free
    - S_ISDIR
    - LOGMEM
    - strerror
    - ly_set_new
    - strcmp
    - ly_set_add
    - LOGWRN
    - opendir
    linkageType: ''
    returnType: API
    signature: "API lys_search_localfile(const char * const *searchpaths, ly_bool
      cwd, const char *name, const char *revision,\n        char **localfile, LYS_INFORMAT
      *format)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:64,1
    - Dst: struct lyd_meta*::value::realtype::plugin::free
      Src: /src/libyang/src/tree_data_free.c:65,1
    - Dst: free
      Src: /src/libyang/src/tree_data_free.c:66,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - meta
    - siblings
    argTypes:
    - struct lyd_meta*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 28
    functionDepth: 3
    functionLinenumber: 28
    functionLinenumberEnd: 68
    functionName: lyd_free_meta
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 0
    functionsReached:
    - lydict_remove
    - free
    - struct lyd_meta*::value::realtype::plugin::free
    linkageType: ''
    returnType: void
    signature: void lyd_free_meta(struct lyd_meta *meta, ly_bool siblings)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_meta
      Src: /src/libyang/src/tree_data_free.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - meta
    argTypes:
    - struct lyd_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: lyd_free_meta_single
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 2
    functionsReached:
    - lyd_free_meta
    linkageType: ''
    returnType: API
    signature: API lyd_free_meta_single(struct lyd_meta *meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_meta
      Src: /src/libyang/src/tree_data_free.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - meta
    argTypes:
    - struct lyd_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 4
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: lyd_free_meta_siblings
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 2
    functionsReached:
    - lyd_free_meta
    linkageType: ''
    returnType: API
    signature: API lyd_free_meta_siblings(struct lyd_meta *meta)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data_free.c:87,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_data_free.c:119,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:120,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:121,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:122,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:123,1
    - Dst: free
      Src: /src/libyang/src/tree_data_free.c:124,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - attr
    - siblings
    argTypes:
    - struct ly_ctx*
    - struct lyd_attr*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 126
    functionName: lyd_free_attr
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 0
    functionsReached:
    - lydict_remove
    - LY_CHECK_ARG_RET
    - free
    - ly_free_prefix_data
    linkageType: ''
    returnType: void
    signature: void lyd_free_attr(const struct ly_ctx *ctx, struct lyd_attr *attr,
      ly_bool siblings)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_attr
      Src: /src/libyang/src/tree_data_free.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - attr
    argTypes:
    - struct ly_ctx*
    - struct lyd_attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: lyd_free_attr_single
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 1
    functionsReached:
    - lyd_free_attr
    linkageType: ''
    returnType: API
    signature: API lyd_free_attr_single(const struct ly_ctx *ctx, struct lyd_attr
      *attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_attr
      Src: /src/libyang/src/tree_data_free.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - attr
    argTypes:
    - struct ly_ctx*
    - struct lyd_attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 4
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: lyd_free_attr_siblings
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 2
    functionsReached:
    - lyd_free_attr
    linkageType: ''
    returnType: API
    signature: API lyd_free_attr_siblings(const struct ly_ctx *ctx, struct lyd_attr
      *attr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data_free.c:151,1
    - Dst: lyd_free_subtree
      Src: /src/libyang/src/tree_data_free.c:158,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:161,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_free.c:161,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:162,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_free.c:162,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:163,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_free.c:163,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_free.c:164,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_free.c:164,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_data_free.c:165,1
    - Dst: lyht_free
      Src: /src/libyang/src/tree_data_free.c:168,1
    - Dst: lyd_free_subtree
      Src: /src/libyang/src/tree_data_free.c:173,1
    - Dst: lyd_any_copy_value
      Src: /src/libyang/src/tree_data_free.c:177,1
    - Dst: type::plugin::free
      Src: /src/libyang/src/tree_data_free.c:179,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_free.c:179,1
    - Dst: lyd_free_attr_siblings
      Src: /src/libyang/src/tree_data_free.c:183,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_free.c:183,1
    - Dst: lyd_free_meta_siblings
      Src: /src/libyang/src/tree_data_free.c:186,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/tree_data_free.c:191,1
    - Dst: free
      Src: /src/libyang/src/tree_data_free.c:194,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - node
    - top
    argTypes:
    - struct lyd_node*
    - ly_bool
    assertStmts:
    - condition: (node)
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/libyang/src/tree_data_free.c
    constantsTouched: []
    func_position:
      end: 195
      start: 145
    functionDepth: 5
    functionLinenumber: 145
    functionLinenumberEnd: 195
    functionName: lyd_free_subtree
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 1
    functionsReached:
    - lyd_unlink_tree
    - ly_free_prefix_data
    - lyd_free_meta_siblings
    - lyd_free_subtree
    - free
    - type::plugin::free
    - lyd_free_attr_siblings
    - lydict_remove
    - lyht_free
    - LYD_CTX
    - lyd_any_copy_value
    - assert
    linkageType: ''
    returnType: void
    signature: void lyd_free_subtree(struct lyd_node *node, ly_bool top)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_subtree
      Src: /src/libyang/src/tree_data_free.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 157
    functionDepth: 6
    functionLinenumber: 157
    functionLinenumberEnd: 159
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 0
    functionsReached:
    - lyd_free_subtree
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR_SAFE(lyd_child(node), next, iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_subtree
      Src: /src/libyang/src/tree_data_free.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 6
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 0
    functionsReached:
    - lyd_free_subtree
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR_SAFE(lyd_child(node), next, iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_subtree
      Src: /src/libyang/src/tree_data_free.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 6
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: lyd_free_tree
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 23
    functionsReached:
    - lyd_free_subtree
    linkageType: ''
    returnType: API
    signature: API lyd_free_tree(struct lyd_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parent
      Src: /src/libyang/src/tree_data_free.c:218,1
    - Dst: lyd_free_subtree
      Src: /src/libyang/src/tree_data_free.c:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - node
    - top
    argTypes:
    - struct lyd_node*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 207
    functionDepth: 6
    functionLinenumber: 207
    functionLinenumberEnd: 228
    functionName: lyd_free_
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 0
    functionsReached:
    - lyd_free_subtree
    - lyd_parent
    linkageType: ''
    returnType: void
    signature: void lyd_free_(struct lyd_node *node, ly_bool top)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_subtree
      Src: /src/libyang/src/tree_data_free.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 6
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 0
    functionsReached:
    - lyd_free_subtree
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR_SAFE(node, next, iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_
      Src: /src/libyang/src/tree_data_free.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 7
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: lyd_free_siblings
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 5
    functionsReached:
    - lyd_free_
    linkageType: ''
    returnType: API
    signature: API lyd_free_siblings(struct lyd_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_free_
      Src: /src/libyang/src/tree_data_free.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 236
    functionDepth: 7
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: lyd_free_all
    functionSourceFile: /src/libyang/src/tree_data_free.c
    functionUses: 109
    functionsReached:
    - lyd_free_
    linkageType: ''
    returnType: API
    signature: API lyd_free_all(struct lyd_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: lysc_ctx_get_ctx
    functionSourceFile: /src/libyang/src/plugins_exts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_ctx_get_ctx(const struct lysc_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: lysc_ctx_get_options
    functionSourceFile: /src/libyang/src/plugins_exts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_ctx_get_options(const struct lysc_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: lysc_ctx_get_path
    functionSourceFile: /src/libyang/src/plugins_exts.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_ctx_get_path(const struct lysc_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: lys_ypr_ctx_get_out
    functionSourceFile: /src/libyang/src/plugins_exts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API **

      lys_ypr_ctx_get_out(const struct lyspr_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lyspr_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: lys_ypr_ctx_get_options
    functionSourceFile: /src/libyang/src/plugins_exts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lys_ypr_ctx_get_options(const struct lyspr_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lyspr_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: lys_ypr_ctx_get_level
    functionSourceFile: /src/libyang/src/plugins_exts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lys_ypr_ctx_get_level(const struct lyspr_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - MODE
    - ','
    - OUT
    - ','
    - COUNTER
    - ','
    - LAST_ERROR
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: TRP_INIT_LY_OUT_CLB_ARG
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_INIT_LY_OUT_CLB_ARG(MODE, OUT, COUNTER, LAST_ERROR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TREE_CTX
    - ','
    - FP_PRINT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 172
    functionName: TRP_INIT_PCK_PRINT
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_INIT_PCK_PRINT(TREE_CTX, FP_PRINT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - WRAPPER
    - ','
    - INDENT_IN_NODE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 287
    functionName: TRP_INIT_PCK_INDENT
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_INIT_PCK_INDENT(WRAPPER, INDENT_IN_NODE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - NODE_NAME
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 377
    functionName: TRP_NODE_NAME_IS_EMPTY
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_NODE_NAME_IS_EMPTY(NODE_NAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - TYPE_OF_TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 420
    functionName: TRP_TRT_TYPE_IS_EMPTY
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_TRT_TYPE_IS_EMPTY(TYPE_OF_TYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - TYPE_OF_TYPE
    - ','
    - STRING
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 426
    functionName: TRP_INIT_TRT_TYPE
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_INIT_TRT_TYPE(TYPE_OF_TYPE, STRING)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - INDENT_IN_NODE
    - ','
    - NODE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 482
    functionName: TRP_INIT_PAIR_INDENT_NODE
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_INIT_PAIR_INDENT_NODE(INDENT_IN_NODE, NODE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - KEYWORD_TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 535
    functionName: TRP_KEYWORD_STMT_IS_EMPTY
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_KEYWORD_STMT_IS_EMPTY(KEYWORD_TYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - KEYWORD_TYPE
    - ','
    - STRING
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 541
    functionName: TRP_INIT_KEYWORD_STMT
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_INIT_KEYWORD_STMT(KEYWORD_TYPE, STRING)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 703
    functionName: TRP_TREE_CTX_GET_LYSP_NODE
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRP_TREE_CTX_GET_LYSP_NODE(CN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:743,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - str
    - len
    - out
    argTypes:
    - char*
    - size_t
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 747
    functionName: trg_print_substr
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: char
    signature: 'char *

      trg_print_substr(const char *str, size_t len, struct ly_out *out)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 758
    functionName: trg_charptr_has_data
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trg_charptr_has_data(const char *str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/libyang/src/printer_tree.c:777,1
    - Dst: strlen
      Src: /src/libyang/src/printer_tree.c:787,1
    - Dst: trg_word_is_present
      Src: /src/libyang/src/printer_tree.c:798,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 18
    argCount: 3
    argNames:
    - src
    - word
    - delim
    argTypes:
    - char*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 802
    functionName: trg_word_is_present
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 1
    functionsReached:
    - strstr
    - trg_word_is_present
    - strlen
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trg_word_is_present(const char *src, const char *word, char
      delim)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_write_
      Src: /src/libyang/src/printer_tree.c:825,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - user_data
    - buf
    - count
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 840
    functionName: trp_ly_out_clb_func
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_write_
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t trp_ly_out_clb_func(void *user_data, const void *buf, size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - first
    - second
    argTypes:
    - struct trt_indent_in_node
    - struct trt_indent_in_node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 848
    functionDepth: 0
    functionLinenumber: 848
    functionLinenumberEnd: 857
    functionName: trp_indent_in_node_are_eq
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trp_indent_in_node_are_eq(struct trt_indent_in_node first,
      struct trt_indent_in_node second)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - wr
    argTypes:
    - struct trt_wrapper
    assertStmts:
    - condition: (wr.actual_pos < 64)
      pos:
        line_end: 867
        line_start: 867
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 874
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 874
    functionName: trp_wrapper_set_shift
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct trt_wrapper
    signature: struct trt_wrapper trp_wrapper_set_shift(struct trt_wrapper wr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:885,1
    - Dst: trp_wrapper_set_shift
      Src: /src/libyang/src/printer_tree.c:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - wr
    argTypes:
    - struct trt_wrapper
    assertStmts:
    - condition: (wr.actual_pos < 64)
      pos:
        line_end: 884
        line_start: 884
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 888
      start: 882
    functionDepth: 2
    functionLinenumber: 882
    functionLinenumberEnd: 888
    functionName: trp_wrapper_set_mark
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_wrapper_set_shift
    - assert
    linkageType: ''
    returnType: struct trt_wrapper
    signature: struct trt_wrapper trp_wrapper_set_mark(struct trt_wrapper wr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trp_wrapper_set_shift
      Src: /src/libyang/src/printer_tree.c:900,1
    - Dst: trp_wrapper_set_mark
      Src: /src/libyang/src/printer_tree.c:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wr
    - last_one
    argTypes:
    - struct trt_wrapper
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 897
    functionDepth: 3
    functionLinenumber: 897
    functionLinenumberEnd: 901
    functionName: trp_wrapper_if_last_sibling
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_wrapper_set_mark
    - trp_wrapper_set_shift
    linkageType: ''
    returnType: struct trt_wrapper
    signature: struct trt_wrapper trp_wrapper_if_last_sibling(struct trt_wrapper wr,
      ly_bool last_one)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - first
    - second
    argTypes:
    - struct trt_wrapper
    - struct trt_wrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 917
    functionName: trp_wrapper_eq
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trp_wrapper_eq(struct trt_wrapper first, struct trt_wrapper
      second)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:937,1
    - Dst: trp_wrapper_eq
      Src: /src/libyang/src/printer_tree.c:939,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:946,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:948,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:952,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - wr
    - out
    argTypes:
    - struct trt_wrapper
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 924
    functionDepth: 1
    functionLinenumber: 924
    functionLinenumberEnd: 955
    functionName: trp_print_wrapper
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_wrapper_eq
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void trp_print_wrapper(struct trt_wrapper wr, struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRP_TRT_TYPE_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:966,1
    - Dst: TRP_NODE_NAME_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:967,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct trt_node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 972
    functionName: trp_node_is_empty
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_NODE_NAME_IS_EMPTY
    - TRP_TRT_TYPE_IS_EMPTY
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trp_node_is_empty(struct trt_node node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRP_TRT_TYPE_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:985,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct trt_node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 989
    functionName: trp_node_body_is_empty
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_TRT_TYPE_IS_EMPTY
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trp_node_body_is_empty(struct trt_node node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1001,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1004,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1007,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - status_type
    - out
    argTypes:
    - trt_status_type
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1012
    functionName: trp_print_status
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void trp_print_status(trt_status_type status_type, struct ly_out *out)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1024,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1027,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1030,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1033,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1036,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1039,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1042,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1045,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - flags_type
    - out
    argTypes:
    - trt_flags_type
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1019
    functionDepth: 1
    functionLinenumber: 1019
    functionLinenumberEnd: 1048
    functionName: trp_print_flags
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void trp_print_flags(trt_flags_type flags_type, struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags_type
    argTypes:
    - trt_flags_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1055
    functionDepth: 0
    functionLinenumber: 1055
    functionLinenumberEnd: 1059
    functionName: trp_get_flags_strlen
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t trp_get_flags_strlen(trt_flags_type flags_type)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: TRP_NODE_NAME_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:1079,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1093,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1096,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1099,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1102,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1105,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1108,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1111,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1114,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1117,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1120,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1123,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 2
    argNames:
    - node_name
    - out
    argTypes:
    - struct trt_node_name
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1066
    functionDepth: 1
    functionLinenumber: 1066
    functionLinenumberEnd: 1128
    functionName: trp_print_node_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - TRP_NODE_NAME_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trp_print_node_name(struct trt_node_name node_name, struct ly_out
      *out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TRP_NODE_NAME_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:1139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - node_name
    argTypes:
    - struct trt_node_name
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1151
    functionName: trp_mark_is_used
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_NODE_NAME_IS_EMPTY
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trp_mark_is_used(struct trt_node_name node_name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1170,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1172,1
    - Dst: struct trt_cf_print::pf
      Src: /src/libyang/src/printer_tree.c:1173,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - node_name
    - btw_name_opts
    - cf
    - out
    argTypes:
    - struct trt_node_name
    - int16_t
    - struct trt_cf_print
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1161
    functionDepth: 1
    functionLinenumber: 1161
    functionLinenumberEnd: 1175
    functionName: trp_print_opts_keys
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - struct trt_cf_print::pf
    linkageType: ''
    returnType: void
    signature: void trp_print_opts_keys(struct trt_node_name node_name, int16_t btw_name_opts,
      struct trt_cf_print cf, struct ly_out *out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TRP_TRT_TYPE_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:1185,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1191,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1194,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - type
    - out
    argTypes:
    - struct trt_type
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1182
    functionDepth: 1
    functionLinenumber: 1182
    functionLinenumberEnd: 1201
    functionName: trp_print_type
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - TRP_TRT_TYPE_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trp_print_type(struct trt_type type, struct ly_out *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1215,1
    - Dst: struct trt_cf_print::pf
      Src: /src/libyang/src/printer_tree.c:1216,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - iffeature_flag
    - cf
    - out
    argTypes:
    - ly_bool
    - struct trt_cf_print
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1211
    functionDepth: 1
    functionLinenumber: 1211
    functionLinenumberEnd: 1219
    functionName: trp_print_iffeatures
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - struct trt_cf_print::pf
    linkageType: ''
    returnType: void
    signature: void trp_print_iffeatures(ly_bool iffeature_flag, struct trt_cf_print
      cf, struct ly_out *out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trp_print_node_name
      Src: /src/libyang/src/printer_tree.c:1230,1
    - Dst: trp_print_status
      Src: /src/libyang/src/printer_tree.c:1234,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1235,1
    - Dst: trp_print_flags
      Src: /src/libyang/src/printer_tree.c:1240,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1241,1
    - Dst: trp_print_node_name
      Src: /src/libyang/src/printer_tree.c:1244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - node
    - out
    argTypes:
    - struct trt_node
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1226
    functionDepth: 2
    functionLinenumber: 1226
    functionLinenumberEnd: 1245
    functionName: trp_print_node_up_to_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_print_status
    - ly_print_
    - trp_print_node_name
    - trp_print_flags
    linkageType: ''
    returnType: void
    signature: void trp_print_node_up_to_name(struct trt_node node, struct ly_out
      *out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trp_get_flags_strlen
      Src: /src/libyang/src/printer_tree.c:1256,1
    - Dst: strlen
      Src: /src/libyang/src/printer_tree.c:1260,1
    - Dst: strlen
      Src: /src/libyang/src/printer_tree.c:1263,1
    - Dst: strlen
      Src: /src/libyang/src/printer_tree.c:1266,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - node
    - out
    argTypes:
    - struct trt_node
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1275
    functionName: trp_print_divided_node_up_to_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_print_
    - trp_get_flags_strlen
    linkageType: ''
    returnType: void
    signature: void trp_print_divided_node_up_to_name(struct trt_node node, struct
      ly_out *out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: trp_node_is_empty
      Src: /src/libyang/src/printer_tree.c:1293,1
    - Dst: trp_print_node_name
      Src: /src/libyang/src/printer_tree.c:1302,1
    - Dst: trp_print_node_up_to_name
      Src: /src/libyang/src/printer_tree.c:1305,1
    - Dst: trp_print_divided_node_up_to_name
      Src: /src/libyang/src/printer_tree.c:1307,1
    - Dst: trp_print_opts_keys
      Src: /src/libyang/src/printer_tree.c:1315,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1319,1
    - Dst: trp_print_type
      Src: /src/libyang/src/printer_tree.c:1323,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1327,1
    - Dst: trp_print_iffeatures
      Src: /src/libyang/src/printer_tree.c:1334,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - node
    - pck
    - indent
    - out
    argTypes:
    - struct trt_node
    - struct trt_pck_print
    - struct trt_indent_in_node
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1285
    functionDepth: 3
    functionLinenumber: 1285
    functionLinenumberEnd: 1335
    functionName: trp_print_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_print_iffeatures
    - trp_print_divided_node_up_to_name
    - trp_print_node_up_to_name
    - ly_print_
    - trp_print_type
    - trp_print_node_name
    - trp_node_is_empty
    - trp_print_opts_keys
    linkageType: ''
    returnType: void
    signature: void trp_print_node(struct trt_node node, struct trt_pck_print pck,
      struct trt_indent_in_node indent, struct ly_out *out)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1347,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1350,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1353,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1356,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1359,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1362,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1365,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1368,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - ks
    - out
    argTypes:
    - struct trt_keyword_stmt
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1342
    functionDepth: 1
    functionLinenumber: 1342
    functionLinenumberEnd: 1375
    functionName: trt_print_keyword_stmt_begin
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void trt_print_keyword_stmt_begin(struct trt_keyword_stmt ks, struct
      ly_out *out)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - type
    argTypes:
    - trt_keyword_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1403
    functionName: trp_keyword_type_strlen
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t trp_keyword_type_strlen(trt_keyword_type type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1433,1
    - Dst: trp_keyword_type_strlen
      Src: /src/libyang/src/printer_tree.c:1440,1
    - Dst: strchr
      Src: /src/libyang/src/printer_tree.c:1453,1
    - Dst: strlen
      Src: /src/libyang/src/printer_tree.c:1455,1
    - Dst: trg_print_substr
      Src: /src/libyang/src/printer_tree.c:1466,1
    - Dst: trg_print_substr
      Src: /src/libyang/src/printer_tree.c:1474,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1478,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1479,1
    - Dst: trg_print_substr
      Src: /src/libyang/src/printer_tree.c:1481,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 3
    argNames:
    - ks
    - mll
    - out
    argTypes:
    - struct trt_keyword_stmt
    - size_t
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1411
    functionDepth: 2
    functionLinenumber: 1411
    functionLinenumberEnd: 1486
    functionName: trt_print_keyword_stmt_str
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_print_
    - trg_print_substr
    - strchr
    - trp_keyword_type_strlen
    linkageType: ''
    returnType: void
    signature: void trt_print_keyword_stmt_str(struct trt_keyword_stmt ks, size_t
      mll, struct ly_out *out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1503,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ks
    - grp_has_data
    - out
    argTypes:
    - struct trt_keyword_stmt
    - ly_bool
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1496
    functionDepth: 1
    functionLinenumber: 1496
    functionLinenumberEnd: 1506
    functionName: trt_print_keyword_stmt_end
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void trt_print_keyword_stmt_end(struct trt_keyword_stmt ks, ly_bool
      grp_has_data, struct ly_out *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:1520,1
    - Dst: trt_print_keyword_stmt_begin
      Src: /src/libyang/src/printer_tree.c:1523,1
    - Dst: trt_print_keyword_stmt_str
      Src: /src/libyang/src/printer_tree.c:1524,1
    - Dst: trt_print_keyword_stmt_end
      Src: /src/libyang/src/printer_tree.c:1525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ks
    - mll
    - grp_has_data
    - out
    argTypes:
    - struct trt_keyword_stmt
    - size_t
    - ly_bool
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1517
    functionDepth: 3
    functionLinenumber: 1517
    functionLinenumberEnd: 1526
    functionName: trp_print_keyword_stmt
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trt_print_keyword_stmt_end
    - trt_print_keyword_stmt_begin
    - trt_print_keyword_stmt_str
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trp_print_keyword_stmt(struct trt_keyword_stmt ks, size_t mll,
      ly_bool grp_has_data, struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trp_print_wrapper
      Src: /src/libyang/src/printer_tree.c:1543,1
    - Dst: trp_print_node
      Src: /src/libyang/src/printer_tree.c:1544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - node
    - pck
    - indent
    - out
    argTypes:
    - struct trt_node
    - struct trt_pck_print
    - struct trt_pck_indent
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1540
    functionDepth: 4
    functionLinenumber: 1540
    functionLinenumberEnd: 1545
    functionName: trp_print_line
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_print_wrapper
    - trp_print_node
    linkageType: ''
    returnType: void
    signature: void trp_print_line(struct trt_node node, struct trt_pck_print pck,
      struct trt_pck_indent indent, struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trp_print_wrapper
      Src: /src/libyang/src/printer_tree.c:1557,1
    - Dst: trp_print_node_up_to_name
      Src: /src/libyang/src/printer_tree.c:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - node
    - wr
    - out
    argTypes:
    - struct trt_node
    - struct trt_wrapper
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1554
    functionDepth: 3
    functionLinenumber: 1554
    functionLinenumberEnd: 1559
    functionName: trp_print_line_up_to_node_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_print_wrapper
    - trp_print_node_up_to_name
    linkageType: ''
    returnType: void
    signature: void trp_print_line_up_to_node_name(struct trt_node node, struct trt_wrapper
      wr, struct ly_out *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: trp_print_wrapper
      Src: /src/libyang/src/printer_tree.c:1585,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1586,1
    - Dst: trp_print_divided_node_up_to_name
      Src: /src/libyang/src/printer_tree.c:1587,1
    - Dst: strlen
      Src: /src/libyang/src/printer_tree.c:1590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - node
    - wr
    - mll
    - out
    argTypes:
    - struct trt_node
    - struct trt_wrapper
    - size_t
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1591
      start: 1570
    functionDepth: 2
    functionLinenumber: 1570
    functionLinenumberEnd: 1591
    functionName: trp_leafref_target_is_too_long
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_print_wrapper
    - ly_print_
    - trp_print_divided_node_up_to_name
    - strlen
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trp_leafref_target_is_too_long(struct trt_node node, struct
      trt_wrapper wr, size_t mll, struct ly_out *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRP_TRT_TYPE_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:1610,1
    - Dst: trp_mark_is_used
      Src: /src/libyang/src/printer_tree.c:1611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct trt_node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1599
    functionDepth: 2
    functionLinenumber: 1599
    functionLinenumberEnd: 1622
    functionName: trp_default_indent_in_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_mark_is_used
    - TRP_TRT_TYPE_IS_EMPTY
    linkageType: ''
    returnType: struct trt_indent_in_node
    signature: struct trt_indent_in_node trp_default_indent_in_node(struct trt_node
      node)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - indent
    argTypes:
    - struct trt_indent_in_node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1635
    functionDepth: 0
    functionLinenumber: 1635
    functionLinenumberEnd: 1656
    functionName: trp_indent_in_node_place_break
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct trt_indent_in_node
    signature: struct trt_indent_in_node trp_indent_in_node_place_break(struct trt_indent_in_node
      indent)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TRP_INIT_PAIR_INDENT_NODE
      Src: /src/libyang/src/printer_tree.c:1671,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - node
    - indent
    argTypes:
    - struct trt_node
    - struct trt_indent_in_node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1668
    functionDepth: 1
    functionLinenumber: 1668
    functionLinenumberEnd: 1685
    functionName: trp_first_half_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_PAIR_INDENT_NODE
    linkageType: ''
    returnType: struct trt_pair_indent_node
    signature: struct trt_pair_indent_node trp_first_half_node(struct trt_node node,
      struct trt_indent_in_node indent)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TRP_INIT_PAIR_INDENT_NODE
      Src: /src/libyang/src/printer_tree.c:1701,1
    - Dst: TRP_TRT_TYPE_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:1709,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - node
    - indent
    argTypes:
    - struct trt_node
    - struct trt_indent_in_node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1698
    functionDepth: 1
    functionLinenumber: 1698
    functionLinenumberEnd: 1724
    functionName: trp_second_half_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_PAIR_INDENT_NODE
    - TRP_TRT_TYPE_IS_EMPTY
    linkageType: ''
    returnType: struct trt_pair_indent_node
    signature: struct trt_pair_indent_node trp_second_half_node(struct trt_node node,
      struct trt_indent_in_node indent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRP_INIT_PAIR_INDENT_NODE
      Src: /src/libyang/src/printer_tree.c:1743,1
    - Dst: trp_print_line
      Src: /src/libyang/src/printer_tree.c:1745,1
    - Dst: trp_indent_in_node_place_break
      Src: /src/libyang/src/printer_tree.c:1751,1
    - Dst: trp_first_half_node
      Src: /src/libyang/src/printer_tree.c:1754,1
    - Dst: trp_try_normal_indent_in_node_
      Src: /src/libyang/src/printer_tree.c:1757,1
    - Dst: TRP_INIT_PCK_INDENT
      Src: /src/libyang/src/printer_tree.c:1757,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 6
    argNames:
    - node
    - pck
    - indent
    - mll
    - cnt
    - out
    argTypes:
    - struct trt_node
    - struct trt_pck_print
    - struct trt_pck_indent
    - size_t
    - size_t*
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1740
    functionDepth: 5
    functionLinenumber: 1740
    functionLinenumberEnd: 1764
    functionName: trp_try_normal_indent_in_node_
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 1
    functionsReached:
    - trp_first_half_node
    - TRP_INIT_PCK_INDENT
    - trp_try_normal_indent_in_node_
    - trp_indent_in_node_place_break
    - trp_print_line
    - TRP_INIT_PAIR_INDENT_NODE
    linkageType: ''
    returnType: struct trt_pair_indent_node
    signature: struct trt_pair_indent_node trp_try_normal_indent_in_node_(struct trt_node
      node, struct trt_pck_print pck, struct trt_pck_indent indent, size_t mll, size_t
      *cnt, struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRP_INIT_PAIR_INDENT_NODE
      Src: /src/libyang/src/printer_tree.c:1785,1
    - Dst: trp_try_normal_indent_in_node_
      Src: /src/libyang/src/printer_tree.c:1793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - node
    - pck
    - indent
    - mll
    - out
    argTypes:
    - struct trt_node
    - struct trt_pck_print
    - struct trt_pck_indent
    - size_t
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1782
    functionDepth: 6
    functionLinenumber: 1782
    functionLinenumberEnd: 1797
    functionName: trp_try_normal_indent_in_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_PAIR_INDENT_NODE
    - trp_try_normal_indent_in_node_
    linkageType: ''
    returnType: struct trt_pair_indent_node
    signature: struct trt_pair_indent_node trp_try_normal_indent_in_node(struct trt_node
      node, struct trt_pck_print pck, struct trt_pck_indent indent, size_t mll, struct
      ly_out *out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trp_try_normal_indent_in_node
      Src: /src/libyang/src/printer_tree.c:1812,1
    - Dst: trp_print_line
      Src: /src/libyang/src/printer_tree.c:1819,1
    - Dst: TRP_INIT_PCK_INDENT
      Src: /src/libyang/src/printer_tree.c:1819,1
    - Dst: trp_indent_in_node_are_eq
      Src: /src/libyang/src/printer_tree.c:1820,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1823,1
    - Dst: trp_second_half_node
      Src: /src/libyang/src/printer_tree.c:1825,1
    - Dst: trp_print_divided_node
      Src: /src/libyang/src/printer_tree.c:1827,1
    - Dst: TRP_INIT_PCK_INDENT
      Src: /src/libyang/src/printer_tree.c:1827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - node
    - ppck
    - ipck
    - mll
    - out
    argTypes:
    - struct trt_node
    - struct trt_pck_print
    - struct trt_pck_indent
    - size_t
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1808
    functionDepth: 7
    functionLinenumber: 1808
    functionLinenumberEnd: 1831
    functionName: trp_print_divided_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 1
    functionsReached:
    - trp_indent_in_node_are_eq
    - TRP_INIT_PCK_INDENT
    - trp_try_normal_indent_in_node
    - ly_print_
    - trp_print_line
    - trp_print_divided_node
    - trp_second_half_node
    linkageType: ''
    returnType: void
    signature: void trp_print_divided_node(struct trt_node node, struct trt_pck_print
      ppck, struct trt_pck_indent ipck, size_t mll, struct ly_out *out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: trp_leafref_target_is_too_long
      Src: /src/libyang/src/printer_tree.c:1849,1
    - Dst: trp_try_normal_indent_in_node
      Src: /src/libyang/src/printer_tree.c:1854,1
    - Dst: trp_print_line
      Src: /src/libyang/src/printer_tree.c:1858,1
    - Dst: TRP_INIT_PCK_INDENT
      Src: /src/libyang/src/printer_tree.c:1862,1
    - Dst: trp_print_line
      Src: /src/libyang/src/printer_tree.c:1866,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1867,1
    - Dst: trp_second_half_node
      Src: /src/libyang/src/printer_tree.c:1870,1
    - Dst: TRP_INIT_PCK_INDENT
      Src: /src/libyang/src/printer_tree.c:1871,1
    - Dst: trp_wrapper_if_last_sibling
      Src: /src/libyang/src/printer_tree.c:1871,1
    - Dst: trp_print_divided_node
      Src: /src/libyang/src/printer_tree.c:1873,1
    - Dst: trp_print_line_up_to_node_name
      Src: /src/libyang/src/printer_tree.c:1876,1
    - Dst: trp_node_body_is_empty
      Src: /src/libyang/src/printer_tree.c:1878,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:1881,1
    - Dst: trp_second_half_node
      Src: /src/libyang/src/printer_tree.c:1883,1
    - Dst: TRP_INIT_PCK_INDENT
      Src: /src/libyang/src/printer_tree.c:1885,1
    - Dst: trp_wrapper_if_last_sibling
      Src: /src/libyang/src/printer_tree.c:1885,1
    - Dst: trp_print_divided_node
      Src: /src/libyang/src/printer_tree.c:1887,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 5
    argNames:
    - node
    - ppck
    - ipck
    - mll
    - out
    argTypes:
    - struct trt_node
    - struct trt_pck_print
    - struct trt_pck_indent
    - size_t
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1842
    functionDepth: 8
    functionLinenumber: 1842
    functionLinenumberEnd: 1891
    functionName: trp_print_entire_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_wrapper_if_last_sibling
    - trp_print_line_up_to_node_name
    - TRP_INIT_PCK_INDENT
    - trp_node_body_is_empty
    - trp_try_normal_indent_in_node
    - trp_leafref_target_is_too_long
    - ly_print_
    - trp_print_line
    - trp_print_divided_node
    - trp_second_half_node
    linkageType: ''
    returnType: void
    signature: void trp_print_entire_node(struct trt_node node, struct trt_pck_print
      ppck, struct trt_pck_indent ipck, size_t mll, struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1901
    functionDepth: 0
    functionLinenumber: 1901
    functionLinenumberEnd: 1905
    functionName: trop_nodetype
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t trop_nodetype(const void *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1911
    functionDepth: 0
    functionLinenumber: 1911
    functionLinenumberEnd: 1915
    functionName: trop_next
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      trop_next(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1921
    functionDepth: 0
    functionLinenumber: 1921
    functionLinenumberEnd: 1925
    functionName: trop_parent
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      trop_parent(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_child
      Src: /src/libyang/src/printer_tree.c:1934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1931
    functionDepth: 1
    functionLinenumber: 1931
    functionLinenumberEnd: 1935
    functionName: trop_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - lysp_node_child
    linkageType: ''
    returnType: void
    signature: 'void *

      trop_child(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_actions
      Src: /src/libyang/src/printer_tree.c:1944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1941
    functionDepth: 1
    functionLinenumber: 1941
    functionLinenumberEnd: 1945
    functionName: trop_actions
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - lysp_node_actions
    linkageType: ''
    returnType: void
    signature: 'void *

      trop_actions(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1955
      start: 1951
    functionDepth: 0
    functionLinenumber: 1951
    functionLinenumberEnd: 1955
    functionName: trop_action_input
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      trop_action_input(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1961
    functionDepth: 0
    functionLinenumber: 1961
    functionLinenumberEnd: 1965
    functionName: trop_action_output
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      trop_action_output(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_notifs
      Src: /src/libyang/src/printer_tree.c:1974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1971
    functionDepth: 1
    functionLinenumber: 1971
    functionLinenumberEnd: 1975
    functionName: trop_notifs
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - lysp_node_notifs
    linkageType: ''
    returnType: void
    signature: 'void *

      trop_notifs(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1981
    functionDepth: 0
    functionLinenumber: 1981
    functionLinenumberEnd: 1994
    functionName: trop_init_getters
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct tro_getters
    signature: struct tro_getters trop_init_getters()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 2000
    functionDepth: 0
    functionLinenumber: 2000
    functionLinenumberEnd: 2004
    functionName: troc_nodetype
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t troc_nodetype(const void *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 2010
    functionDepth: 0
    functionLinenumber: 2010
    functionLinenumberEnd: 2014
    functionName: troc_next
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      troc_next(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2020
    functionDepth: 0
    functionLinenumber: 2020
    functionLinenumberEnd: 2024
    functionName: troc_parent
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      troc_parent(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_child
      Src: /src/libyang/src/printer_tree.c:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2030
    functionDepth: 1
    functionLinenumber: 2030
    functionLinenumberEnd: 2034
    functionName: troc_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - lysc_node_child
    linkageType: ''
    returnType: void
    signature: 'void *

      troc_child(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_actions
      Src: /src/libyang/src/printer_tree.c:2043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2040
    functionDepth: 1
    functionLinenumber: 2040
    functionLinenumberEnd: 2044
    functionName: troc_actions
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - lysc_node_actions
    linkageType: ''
    returnType: void
    signature: 'void *

      troc_actions(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2054
      start: 2050
    functionDepth: 0
    functionLinenumber: 2050
    functionLinenumberEnd: 2054
    functionName: troc_action_input
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      troc_action_input(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2060
    functionDepth: 0
    functionLinenumber: 2060
    functionLinenumberEnd: 2064
    functionName: troc_action_output
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      troc_action_output(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_notifs
      Src: /src/libyang/src/printer_tree.c:2073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2074
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2074
    functionName: troc_notifs
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - lysc_node_notifs
    linkageType: ''
    returnType: void
    signature: 'void *

      troc_notifs(const void *node)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2080
    functionDepth: 0
    functionLinenumber: 2080
    functionLinenumberEnd: 2093
    functionName: troc_init_getters
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct tro_getters
    signature: struct tro_getters troc_init_getters()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2117,1
    - Dst: troc_init_getters
      Src: /src/libyang/src/printer_tree.c:2119,1
    - Dst: trop_init_getters
      Src: /src/libyang/src/printer_tree.c:2119,1
    - Dst: struct tro_getters::nodetype
      Src: /src/libyang/src/printer_tree.c:2121,1
    - Dst: struct tro_getters::next
      Src: /src/libyang/src/printer_tree.c:2122,1
    - Dst: struct tro_getters::parent
      Src: /src/libyang/src/printer_tree.c:2125,1
    - Dst: struct tro_getters::notifs
      Src: /src/libyang/src/printer_tree.c:2127,1
    - Dst: struct tro_getters::nodetype
      Src: /src/libyang/src/printer_tree.c:2131,1
    - Dst: struct tro_getters::parent
      Src: /src/libyang/src/printer_tree.c:2132,1
    - Dst: struct tro_getters::child
      Src: /src/libyang/src/printer_tree.c:2134,1
    - Dst: struct tro_getters::action_output
      Src: /src/libyang/src/printer_tree.c:2134,1
    - Dst: struct tro_getters::action_output
      Src: /src/libyang/src/printer_tree.c:2136,1
    - Dst: struct tro_getters::nodetype
      Src: /src/libyang/src/printer_tree.c:2147,1
    - Dst: struct tro_getters::nodetype
      Src: /src/libyang/src/printer_tree.c:2150,1
    - Dst: struct tro_getters::next
      Src: /src/libyang/src/printer_tree.c:2152,1
    - Dst: struct tro_getters::next
      Src: /src/libyang/src/printer_tree.c:2155,1
    - Dst: struct tro_getters::parent
      Src: /src/libyang/src/printer_tree.c:2158,1
    - Dst: struct tro_getters::actions
      Src: /src/libyang/src/printer_tree.c:2162,1
    - Dst: struct tro_getters::notifs
      Src: /src/libyang/src/printer_tree.c:2165,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 2
    argNames:
    - node
    - lysc_tree
    argTypes:
    - void*
    - ly_bool
    assertStmts:
    - condition: (node)
      pos:
        line_end: 2116
        line_start: 2116
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2179
      start: 2110
    functionDepth: 1
    functionLinenumber: 2110
    functionLinenumberEnd: 2179
    functionName: tro_next_sibling
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - assert
    - struct tro_getters::nodetype
    - trop_init_getters
    - struct tro_getters::parent
    - struct tro_getters::child
    - troc_init_getters
    - struct tro_getters::action_output
    - struct tro_getters::notifs
    - struct tro_getters::actions
    - struct tro_getters::next
    linkageType: ''
    returnType: void
    signature: 'void *

      tro_next_sibling(const void *node, ly_bool lysc_tree)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2199,1
    - Dst: troc_init_getters
      Src: /src/libyang/src/printer_tree.c:2201,1
    - Dst: trop_init_getters
      Src: /src/libyang/src/printer_tree.c:2201,1
    - Dst: struct tro_getters::nodetype
      Src: /src/libyang/src/printer_tree.c:2203,1
    - Dst: struct tro_getters::child
      Src: /src/libyang/src/printer_tree.c:2204,1
    - Dst: struct tro_getters::action_input
      Src: /src/libyang/src/printer_tree.c:2204,1
    - Dst: struct tro_getters::action_input
      Src: /src/libyang/src/printer_tree.c:2206,1
    - Dst: struct tro_getters::child
      Src: /src/libyang/src/printer_tree.c:2207,1
    - Dst: struct tro_getters::action_output
      Src: /src/libyang/src/printer_tree.c:2207,1
    - Dst: struct tro_getters::action_output
      Src: /src/libyang/src/printer_tree.c:2209,1
    - Dst: struct tro_getters::child
      Src: /src/libyang/src/printer_tree.c:2215,1
    - Dst: struct tro_getters::actions
      Src: /src/libyang/src/printer_tree.c:2220,1
    - Dst: struct tro_getters::notifs
      Src: /src/libyang/src/printer_tree.c:2222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - node
    - lysc_tree
    argTypes:
    - void*
    - ly_bool
    assertStmts:
    - condition: (node)
      pos:
        line_end: 2198
        line_start: 2198
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2231
      start: 2192
    functionDepth: 1
    functionLinenumber: 2192
    functionLinenumberEnd: 2231
    functionName: tro_next_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - struct tro_getters::nodetype
    - trop_init_getters
    - struct tro_getters::child
    - troc_init_getters
    - struct tro_getters::action_output
    - struct tro_getters::action_input
    - struct tro_getters::notifs
    - struct tro_getters::actions
    - assert
    linkageType: ''
    returnType: void
    signature: 'void *

      tro_next_child(const void *node, ly_bool lysc_tree)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ca
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2240
    functionDepth: 0
    functionLinenumber: 2240
    functionLinenumberEnd: 2270
    functionName: tro_parent_cache_for_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct trt_parent_cache
    signature: struct trt_parent_cache tro_parent_cache_for_child(struct trt_parent_cache
      ca, const struct trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2277
    functionDepth: 0
    functionLinenumber: 2277
    functionLinenumberEnd: 2283
    functionName: tro_flags2status
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: trt_status_type
    signature: trt_status_type tro_flags2status(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2296
      start: 2290
    functionDepth: 0
    functionLinenumber: 2290
    functionLinenumberEnd: 2296
    functionName: tro_flags2config
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: trt_flags_type
    signature: trt_flags_type tro_flags2config(uint16_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRP_TREE_CTX_GET_LYSP_NODE
      Src: /src/libyang/src/printer_tree.c:2309,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2316,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tc
    - out
    argTypes:
    - struct trt_tree_ctx*
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2322
      start: 2303
    functionDepth: 1
    functionLinenumber: 2303
    functionLinenumberEnd: 2322
    functionName: tro_print_features_names
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - TRP_TREE_CTX_GET_LYSP_NODE
    linkageType: ''
    returnType: void
    signature: void tro_print_features_names(const struct trt_tree_ctx *tc, struct
      ly_out *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2316,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2320
      start: 2314
    functionDepth: 1
    functionLinenumber: 2314
    functionLinenumberEnd: 2320
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 20
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(iffs, i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRP_TREE_CTX_GET_LYSP_NODE
      Src: /src/libyang/src/printer_tree.c:2341,1
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2343,1
    - Dst: trg_charptr_has_data
      Src: /src/libyang/src/printer_tree.c:2345,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - tc
    - out
    argTypes:
    - struct trt_tree_ctx*
    - struct ly_out*
    assertStmts:
    - condition: (list->nodetype & LYS_LIST)
      pos:
        line_end: 2342
        line_start: 2342
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2348
      start: 2335
    functionDepth: 1
    functionLinenumber: 2335
    functionLinenumberEnd: 2348
    functionName: tro_print_keys
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trg_charptr_has_data
    - ly_print_
    - TRP_TREE_CTX_GET_LYSP_NODE
    - assert
    linkageType: ''
    returnType: void
    signature: void tro_print_keys(const struct trt_tree_ctx *tc, struct ly_out *out)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2360,1
    - Dst: TRP_INIT_KEYWORD_STMT
      Src: /src/libyang/src/printer_tree.c:2378,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc)
      pos:
        line_end: 2359
        line_start: 2359
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2382
      start: 2357
    functionDepth: 1
    functionLinenumber: 2357
    functionLinenumberEnd: 2382
    functionName: tro_modi_get_rpcs
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_KEYWORD_STMT
    - assert
    linkageType: ''
    returnType: struct trt_keyword_stmt
    signature: struct trt_keyword_stmt tro_modi_get_rpcs(struct trt_tree_ctx *tc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2395,1
    - Dst: TRP_INIT_KEYWORD_STMT
      Src: /src/libyang/src/printer_tree.c:2413,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc)
      pos:
        line_end: 2394
        line_start: 2394
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2417
      start: 2392
    functionDepth: 1
    functionLinenumber: 2392
    functionLinenumberEnd: 2417
    functionName: tro_modi_get_notifications
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_KEYWORD_STMT
    - assert
    linkageType: ''
    returnType: struct trt_keyword_stmt
    signature: struct trt_keyword_stmt tro_modi_get_notifications(struct trt_tree_ctx
      *tc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2431,1
    - Dst: TRP_INIT_KEYWORD_STMT
      Src: /src/libyang/src/printer_tree.c:2463,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - tc
    - u
    argTypes:
    - struct trt_tree_ctx*
    - LY_ARRAY_COUNT_TYPE
    assertStmts:
    - condition: (tc)
      pos:
        line_end: 2430
        line_start: 2430
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2467
      start: 2428
    functionDepth: 1
    functionLinenumber: 2428
    functionLinenumberEnd: 2467
    functionName: tro_modi_next_yang_data
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_KEYWORD_STMT
    - assert
    linkageType: ''
    returnType: struct trt_keyword_stmt
    signature: struct trt_keyword_stmt tro_modi_next_yang_data(struct trt_tree_ctx
      *tc, LY_ARRAY_COUNT_TYPE u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2476,1
    - Dst: LYSP_MODULE_NAME
      Src: /src/libyang/src/printer_tree.c:2485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc)
      pos:
        line_end: 2475
        line_start: 2475
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2489
      start: 2473
    functionDepth: 1
    functionLinenumber: 2473
    functionLinenumberEnd: 2489
    functionName: tro_read_module_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - LYSP_MODULE_NAME
    - assert
    linkageType: ''
    returnType: struct trt_keyword_stmt
    signature: struct trt_keyword_stmt tro_read_module_name(const struct trt_tree_ctx
      *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trg_charptr_has_data
      Src: /src/libyang/src/printer_tree.c:2503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2504
      start: 2500
    functionDepth: 1
    functionLinenumber: 2500
    functionLinenumberEnd: 2504
    functionName: trop_list_has_keys
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trg_charptr_has_data
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trop_list_has_keys(const struct lysp_node *pn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2525
      start: 2511
    functionDepth: 0
    functionLinenumber: 2511
    functionLinenumberEnd: 2525
    functionName: trop_node_has_iffeature
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trop_node_has_iffeature(const struct lysp_node *pn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2523
      start: 2520
    functionDepth: 0
    functionLinenumber: 2520
    functionLinenumberEnd: 2523
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(iffs, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: trg_charptr_has_data
      Src: /src/libyang/src/printer_tree.c:2543,1
    - Dst: trg_word_is_present
      Src: /src/libyang/src/printer_tree.c:2544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - pn
    - ca_last_list
    argTypes:
    - struct lysp_node*
    - struct lysp_node_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2545
      start: 2534
    functionDepth: 2
    functionLinenumber: 2534
    functionLinenumberEnd: 2545
    functionName: trop_leaf_is_key
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trg_word_is_present
    - trg_charptr_has_data
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trop_leaf_is_key(const struct lysp_node *pn, const struct lysp_node_list
      *ca_last_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trg_charptr_has_data
      Src: /src/libyang/src/printer_tree.c:2555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2556
      start: 2552
    functionDepth: 1
    functionLinenumber: 2552
    functionLinenumberEnd: 2556
    functionName: trop_container_has_presence
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trg_charptr_has_data
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trop_container_has_presence(const struct lysp_node *pn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2562
    functionDepth: 0
    functionLinenumber: 2562
    functionLinenumberEnd: 2568
    functionName: trop_leaflist_refpath
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      trop_leaflist_refpath(const struct lysp_node *pn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2574
    functionDepth: 0
    functionLinenumber: 2574
    functionLinenumberEnd: 2580
    functionName: trop_leaflist_type_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      trop_leaflist_type_name(const struct lysp_node *pn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2592
      start: 2586
    functionDepth: 0
    functionLinenumber: 2586
    functionLinenumberEnd: 2592
    functionName: trop_leaf_refpath
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      trop_leaf_refpath(const struct lysp_node *pn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2604
      start: 2598
    functionDepth: 0
    functionLinenumber: 2598
    functionLinenumberEnd: 2604
    functionName: trop_leaf_type_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      trop_leaf_type_name(const struct lysp_node *pn)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: f
      Src: /src/libyang/src/printer_tree.c:2623,1
    - Dst: trg_charptr_has_data
      Src: /src/libyang/src/printer_tree.c:2624,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - flags
    - f
    - pn
    argTypes:
    - uint16_t
    - trt_get_charptr_func
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2628
      start: 2619
    functionDepth: 1
    functionLinenumber: 2619
    functionLinenumberEnd: 2628
    functionName: trop_node_charptr
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trg_charptr_has_data
    - f
    linkageType: ''
    returnType: char
    signature: 'char *

      trop_node_charptr(uint16_t flags, trt_get_charptr_func f, const struct lysp_node
      *pn)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tro_flags2status
      Src: /src/libyang/src/printer_tree.c:2643,1
    - Dst: tro_flags2status
      Src: /src/libyang/src/printer_tree.c:2649,1
    - Dst: tro_flags2status
      Src: /src/libyang/src/printer_tree.c:2652,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - nodetype
    - flags
    - ca_lys_status
    argTypes:
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2638
    functionDepth: 1
    functionLinenumber: 2638
    functionLinenumberEnd: 2654
    functionName: trop_resolve_status
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_flags2status
    linkageType: ''
    returnType: trt_status_type
    signature: trt_status_type trop_resolve_status(uint16_t nodetype, uint16_t flags,
      uint16_t ca_lys_status)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: tro_flags2config
      Src: /src/libyang/src/printer_tree.c:2683,1
    - Dst: tro_flags2config
      Src: /src/libyang/src/printer_tree.c:2685,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - nodetype
    - flags
    - ca_ancestor
    - ca_lys_config
    argTypes:
    - uint16_t
    - uint16_t
    - trt_ancestor_type
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 2666
    functionDepth: 1
    functionLinenumber: 2666
    functionLinenumberEnd: 2687
    functionName: trop_resolve_flags
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_flags2config
    linkageType: ''
    returnType: trt_flags_type
    signature: trt_flags_type trop_resolve_flags(uint16_t nodetype, uint16_t flags,
      trt_ancestor_type ca_ancestor, uint16_t ca_lys_config)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: trop_container_has_presence
      Src: /src/libyang/src/printer_tree.c:2706,1
    - Dst: trop_list_has_keys
      Src: /src/libyang/src/printer_tree.c:2708,1
    - Dst: trop_leaf_is_key
      Src: /src/libyang/src/printer_tree.c:2714,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 2
    argNames:
    - pn
    - ca_last_list
    argTypes:
    - struct lysp_node*
    - struct lysp_node_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2719
      start: 2695
    functionDepth: 3
    functionLinenumber: 2695
    functionLinenumberEnd: 2719
    functionName: trop_resolve_node_type
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trop_list_has_keys
    - trop_container_has_presence
    - trop_leaf_is_key
    linkageType: ''
    returnType: trt_node_type
    signature: trt_node_type trop_resolve_node_type(const struct lysp_node *pn, const
      struct lysp_node_list *ca_last_list)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: trop_node_charptr
      Src: /src/libyang/src/printer_tree.c:2730,1
    - Dst: TRP_INIT_TRT_TYPE
      Src: /src/libyang/src/printer_tree.c:2731,1
    - Dst: trop_node_charptr
      Src: /src/libyang/src/printer_tree.c:2732,1
    - Dst: TRP_INIT_TRT_TYPE
      Src: /src/libyang/src/printer_tree.c:2733,1
    - Dst: trop_node_charptr
      Src: /src/libyang/src/printer_tree.c:2734,1
    - Dst: TRP_INIT_TRT_TYPE
      Src: /src/libyang/src/printer_tree.c:2735,1
    - Dst: trop_node_charptr
      Src: /src/libyang/src/printer_tree.c:2736,1
    - Dst: TRP_INIT_TRT_TYPE
      Src: /src/libyang/src/printer_tree.c:2737,1
    - Dst: TRP_INIT_TRT_TYPE
      Src: /src/libyang/src/printer_tree.c:2739,1
    - Dst: TRP_INIT_TRT_TYPE
      Src: /src/libyang/src/printer_tree.c:2741,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - pn
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2725
    functionDepth: 2
    functionLinenumber: 2725
    functionLinenumberEnd: 2745
    functionName: trop_resolve_type
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trop_node_charptr
    - TRP_INIT_TRT_TYPE
    linkageType: ''
    returnType: struct trt_type
    signature: struct trt_type trop_resolve_type(const struct lysp_node *pn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2759,1
    - Dst: trop_resolve_status
      Src: /src/libyang/src/printer_tree.c:2765,1
    - Dst: trop_resolve_flags
      Src: /src/libyang/src/printer_tree.c:2769,1
    - Dst: trop_resolve_node_type
      Src: /src/libyang/src/printer_tree.c:2774,1
    - Dst: trop_resolve_type
      Src: /src/libyang/src/printer_tree.c:2783,1
    - Dst: trop_node_has_iffeature
      Src: /src/libyang/src/printer_tree.c:2786,1
    - Dst: tro_next_sibling
      Src: /src/libyang/src/printer_tree.c:2788,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ca
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->pn && tc->pn->nodetype != LYS_UNKNOWN)
      pos:
        line_end: 2758
        line_start: 2758
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2791
      start: 2753
    functionDepth: 4
    functionLinenumber: 2753
    functionLinenumberEnd: 2791
    functionName: trop_read_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trop_resolve_flags
    - trop_resolve_status
    - trop_resolve_type
    - trop_node_has_iffeature
    - tro_next_sibling
    - trop_resolve_node_type
    - assert
    linkageType: ''
    returnType: struct trt_node
    signature: struct trt_node trop_read_node(struct trt_parent_cache ca, const struct
      trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tro_next_sibling
      Src: /src/libyang/src/printer_tree.c:2801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2798
    functionDepth: 2
    functionLinenumber: 2798
    functionLinenumberEnd: 2802
    functionName: trop_read_if_sibling_exists
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_next_sibling
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trop_read_if_sibling_exists(const struct trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2824,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2829,1
    - Dst: trp_print_keyword_stmt
      Src: /src/libyang/src/printer_tree.c:2833,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2834,1
    - Dst: trp_print_wrapper
      Src: /src/libyang/src/printer_tree.c:2837,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - exts
    - mll
    - out
    argTypes:
    - struct lysp_ext_instance*
    - size_t
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2840
      start: 2813
    functionDepth: 4
    functionLinenumber: 2813
    functionLinenumberEnd: 2840
    functionName: trop_yang_data_sections
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_print_wrapper
    - ly_print_
    - trp_print_keyword_stmt
    linkageType: ''
    returnType: void
    signature: void trop_yang_data_sections(const struct lysp_ext_instance *exts,
      size_t mll, struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2829,1
    - Dst: trp_print_keyword_stmt
      Src: /src/libyang/src/printer_tree.c:2833,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2834,1
    - Dst: trp_print_wrapper
      Src: /src/libyang/src/printer_tree.c:2837,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:2838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2839
      start: 2828
    functionDepth: 4
    functionLinenumber: 2828
    functionLinenumberEnd: 2839
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 20
    functionsReached:
    - trp_print_wrapper
    - ly_print_
    - trp_print_keyword_stmt
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(exts, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2858,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->pn)
      pos:
        line_end: 2857
        line_start: 2857
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2866
      start: 2855
    functionDepth: 1
    functionLinenumber: 2855
    functionLinenumberEnd: 2866
    functionName: trop_modi_parent
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trop_modi_parent(struct trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2884,1
    - Dst: tro_next_child
      Src: /src/libyang/src/printer_tree.c:2886,1
    - Dst: trop_read_node
      Src: /src/libyang/src/printer_tree.c:2888,1
    - Dst: tro_parent_cache_for_child
      Src: /src/libyang/src/printer_tree.c:2888,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ca
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->pn)
      pos:
        line_end: 2883
        line_start: 2883
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2892
      start: 2879
    functionDepth: 5
    functionLinenumber: 2879
    functionLinenumberEnd: 2892
    functionName: trop_modi_next_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trop_read_node
    - tro_parent_cache_for_child
    - tro_next_child
    - assert
    linkageType: ''
    returnType: struct trt_node
    signature: struct trt_node trop_modi_next_child(struct trt_parent_cache ca, struct
      trt_tree_ctx *tc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2903,1
    - Dst: trop_modi_parent
      Src: /src/libyang/src/printer_tree.c:2905,1
    - Dst: trop_modi_next_child
      Src: /src/libyang/src/printer_tree.c:2906,1
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2935,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->pn && tc->pmod)
      pos:
        line_end: 2902
        line_start: 2902
        source_file: /src/libyang/src/printer_tree.c
    - condition: (0)
      pos:
        line_end: 2934
        line_start: 2934
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2938
      start: 2900
    functionDepth: 6
    functionLinenumber: 2900
    functionLinenumberEnd: 2938
    functionName: trop_modi_first_sibling
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trop_modi_parent
    - trop_modi_next_child
    - assert
    linkageType: ''
    returnType: void
    signature: void trop_modi_first_sibling(struct trt_tree_ctx *tc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2956,1
    - Dst: tro_next_sibling
      Src: /src/libyang/src/printer_tree.c:2958,1
    - Dst: trop_read_node
      Src: /src/libyang/src/printer_tree.c:2965,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ca
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->pn)
      pos:
        line_end: 2955
        line_start: 2955
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 2969
      start: 2951
    functionDepth: 5
    functionLinenumber: 2951
    functionLinenumberEnd: 2969
    functionName: trop_modi_next_sibling
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trop_read_node
    - assert
    - tro_next_sibling
    linkageType: ''
    returnType: struct trt_node
    signature: struct trt_node trop_modi_next_sibling(struct trt_parent_cache ca,
      struct trt_tree_ctx *tc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:2981,1
    - Dst: TRP_INIT_KEYWORD_STMT
      Src: /src/libyang/src/printer_tree.c:2996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc)
      pos:
        line_end: 2980
        line_start: 2980
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3000
      start: 2978
    functionDepth: 1
    functionLinenumber: 2978
    functionLinenumberEnd: 3000
    functionName: trop_modi_next_augment
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_KEYWORD_STMT
    - assert
    linkageType: ''
    returnType: struct trt_keyword_stmt
    signature: struct trt_keyword_stmt trop_modi_next_augment(struct trt_tree_ctx
      *tc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3012,1
    - Dst: TRP_INIT_KEYWORD_STMT
      Src: /src/libyang/src/printer_tree.c:3025,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc)
      pos:
        line_end: 3011
        line_start: 3011
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3029
      start: 3009
    functionDepth: 1
    functionLinenumber: 3009
    functionLinenumberEnd: 3029
    functionName: trop_modi_next_grouping
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - TRP_INIT_KEYWORD_STMT
    - assert
    linkageType: ''
    returnType: struct trt_keyword_stmt
    signature: struct trt_keyword_stmt trop_modi_next_grouping(struct trt_tree_ctx
      *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tro_next_sibling
      Src: /src/libyang/src/printer_tree.c:3041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3042
      start: 3038
    functionDepth: 2
    functionLinenumber: 3038
    functionLinenumberEnd: 3042
    functionName: troc_read_if_sibling_exists
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_next_sibling
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool troc_read_if_sibling_exists(const struct trt_tree_ctx *tc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: tro_flags2config
      Src: /src/libyang/src/printer_tree.c:3069,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - nodetype
    - flags
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3053
    functionDepth: 1
    functionLinenumber: 3053
    functionLinenumberEnd: 3071
    functionName: troc_resolve_flags
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_flags2config
    linkageType: ''
    returnType: trt_flags_type
    signature: trt_flags_type troc_resolve_flags(uint16_t nodetype, uint16_t flags)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 30
    argCount: 2
    argNames:
    - nodetype
    - flags
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3105
      start: 3081
    functionDepth: 0
    functionLinenumber: 3081
    functionLinenumberEnd: 3105
    functionName: troc_resolve_node_type
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: trt_node_type
    signature: trt_node_type troc_resolve_node_type(uint16_t nodetype, uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3119,1
    - Dst: tro_flags2status
      Src: /src/libyang/src/printer_tree.c:3125,1
    - Dst: troc_resolve_flags
      Src: /src/libyang/src/printer_tree.c:3129,1
    - Dst: troc_resolve_node_type
      Src: /src/libyang/src/printer_tree.c:3134,1
    - Dst: trop_resolve_type
      Src: /src/libyang/src/printer_tree.c:3143,1
    - Dst: TRP_TREE_CTX_GET_LYSP_NODE
      Src: /src/libyang/src/printer_tree.c:3143,1
    - Dst: trop_node_has_iffeature
      Src: /src/libyang/src/printer_tree.c:3146,1
    - Dst: TRP_TREE_CTX_GET_LYSP_NODE
      Src: /src/libyang/src/printer_tree.c:3146,1
    - Dst: tro_next_sibling
      Src: /src/libyang/src/printer_tree.c:3148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - ca
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->cn && tc->cn->priv)
      pos:
        line_end: 3118
        line_start: 3118
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3151
      start: 3112
    functionDepth: 3
    functionLinenumber: 3112
    functionLinenumberEnd: 3151
    functionName: troc_read_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_flags2status
    - TRP_TREE_CTX_GET_LYSP_NODE
    - trop_resolve_type
    - trop_node_has_iffeature
    - troc_resolve_flags
    - tro_next_sibling
    - troc_resolve_node_type
    - assert
    linkageType: ''
    returnType: struct trt_node
    signature: struct trt_node troc_read_node(struct trt_parent_cache ca, const struct
      trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->cn)
      pos:
        line_end: 3162
        line_start: 3162
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3171
      start: 3160
    functionDepth: 1
    functionLinenumber: 3160
    functionLinenumberEnd: 3171
    functionName: troc_modi_parent
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool troc_modi_parent(struct trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3181,1
    - Dst: tro_next_sibling
      Src: /src/libyang/src/printer_tree.c:3183,1
    - Dst: troc_read_node
      Src: /src/libyang/src/printer_tree.c:3189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ca
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->cn)
      pos:
        line_end: 3180
        line_start: 3180
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3193
      start: 3176
    functionDepth: 4
    functionLinenumber: 3176
    functionLinenumberEnd: 3193
    functionName: troc_modi_next_sibling
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - troc_read_node
    - assert
    - tro_next_sibling
    linkageType: ''
    returnType: struct trt_node
    signature: struct trt_node troc_modi_next_sibling(struct trt_parent_cache ca,
      struct trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3203,1
    - Dst: tro_next_child
      Src: /src/libyang/src/printer_tree.c:3205,1
    - Dst: troc_read_node
      Src: /src/libyang/src/printer_tree.c:3207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ca
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->cn)
      pos:
        line_end: 3202
        line_start: 3202
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3211
      start: 3198
    functionDepth: 4
    functionLinenumber: 3198
    functionLinenumberEnd: 3211
    functionName: troc_modi_next_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_next_child
    - assert
    - troc_read_node
    linkageType: ''
    returnType: struct trt_node
    signature: struct trt_node troc_modi_next_child(struct trt_parent_cache ca, struct
      trt_tree_ctx *tc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3219,1
    - Dst: troc_modi_parent
      Src: /src/libyang/src/printer_tree.c:3221,1
    - Dst: troc_modi_next_child
      Src: /src/libyang/src/printer_tree.c:3222,1
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3239,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (tc && tc->cn)
      pos:
        line_end: 3218
        line_start: 3218
        source_file: /src/libyang/src/printer_tree.c
    - condition: (0)
      pos:
        line_end: 3238
        line_start: 3238
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3242
      start: 3216
    functionDepth: 5
    functionLinenumber: 3216
    functionLinenumberEnd: 3242
    functionName: troc_modi_first_sibling
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - troc_modi_parent
    - troc_modi_next_child
    - assert
    linkageType: ''
    returnType: void
    signature: void troc_modi_first_sibling(struct trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/printer_tree.c:3258,1
    - Dst: trp_mark_is_used
      Src: /src/libyang/src/printer_tree.c:3265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - struct trt_node_name
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3268
      start: 3255
    functionDepth: 2
    functionLinenumber: 3255
    functionLinenumberEnd: 3268
    functionName: trb_strlen_of_name_and_mark
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_mark_is_used
    - strlen
    linkageType: ''
    returnType: int32_t
    signature: int32_t trb_strlen_of_name_and_mark(struct trt_node_name name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trb_strlen_of_name_and_mark
      Src: /src/libyang/src/printer_tree.c:3285,1
    - Dst: abs
      Src: /src/libyang/src/printer_tree.c:3291,1
    - Dst: abs
      Src: /src/libyang/src/printer_tree.c:3291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - name
    - max_len4all
    argTypes:
    - struct trt_node_name
    - int16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3295
      start: 3278
    functionDepth: 3
    functionLinenumber: 3278
    functionLinenumberEnd: 3295
    functionName: trb_calc_btw_opts_type
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_strlen_of_name_and_mark
    - abs
    linkageType: ''
    returnType: int16_t
    signature: int16_t trb_calc_btw_opts_type(struct trt_node_name name, int16_t max_len4all)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct trt_printer_ctx*::fp::read::node
      Src: /src/libyang/src/printer_tree.c:3313,1
    - Dst: trp_default_indent_in_node
      Src: /src/libyang/src/printer_tree.c:3314,1
    - Dst: trb_calc_btw_opts_type
      Src: /src/libyang/src/printer_tree.c:3318,1
    - Dst: trp_print_entire_node
      Src: /src/libyang/src/printer_tree.c:3321,1
    - Dst: TRP_INIT_PCK_PRINT
      Src: /src/libyang/src/printer_tree.c:3321,1
    - Dst: TRP_INIT_PCK_INDENT
      Src: /src/libyang/src/printer_tree.c:3322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 5
    argNames:
    - max_gap_before_type
    - wr
    - ca
    - pc
    - tc
    argTypes:
    - uint32_t
    - struct trt_wrapper
    - struct trt_parent_cache
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3323
      start: 3310
    functionDepth: 9
    functionLinenumber: 3310
    functionLinenumberEnd: 3323
    functionName: trb_print_entire_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_calc_btw_opts_type
    - TRP_INIT_PCK_INDENT
    - trp_default_indent_in_node
    - trp_print_entire_node
    - struct trt_printer_ctx*::fp::read::node
    - TRP_INIT_PCK_PRINT
    linkageType: ''
    returnType: void
    signature: void trb_print_entire_node(uint32_t max_gap_before_type, struct trt_wrapper
      wr, struct trt_parent_cache ca, struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct trt_fp_all::modify::parent
      Src: /src/libyang/src/printer_tree.c:3341,1
    - Dst: struct trt_fp_all::read::if_sibling_exists
      Src: /src/libyang/src/printer_tree.c:3342,1
    - Dst: struct trt_fp_all::modify::next_child
      Src: /src/libyang/src/printer_tree.c:3343,1
    - Dst: struct trt_fp_all::read::if_sibling_exists
      Src: /src/libyang/src/printer_tree.c:3346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fp
    - tc
    argTypes:
    - struct trt_fp_all
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3348
      start: 3338
    functionDepth: 0
    functionLinenumber: 3338
    functionLinenumberEnd: 3348
    functionName: trb_parent_is_last_sibling
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - struct trt_fp_all::modify::parent
    - struct trt_fp_all::read::if_sibling_exists
    - struct trt_fp_all::modify::next_child
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trb_parent_is_last_sibling(struct trt_fp_all fp, struct trt_tree_ctx
      *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct trt_printer_ctx*::fp::modify::first_sibling
      Src: /src/libyang/src/printer_tree.c:3368,1
    - Dst: struct trt_printer_ctx*::fp::read::node
      Src: /src/libyang/src/printer_tree.c:3370,1
    - Dst: trp_node_is_empty
      Src: /src/libyang/src/printer_tree.c:3371,1
    - Dst: struct trt_printer_ctx*::fp::modify::next_sibling
      Src: /src/libyang/src/printer_tree.c:3372,1
    - Dst: trb_strlen_of_name_and_mark
      Src: /src/libyang/src/printer_tree.c:3373,1
    - Dst: abs
      Src: /src/libyang/src/printer_tree.c:3374,1
    - Dst: abs
      Src: /src/libyang/src/printer_tree.c:3374,1
    - Dst: struct trt_printer_ctx*::fp::modify::first_sibling
      Src: /src/libyang/src/printer_tree.c:3376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ca
    - pc
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3378
      start: 3363
    functionDepth: 3
    functionLinenumber: 3363
    functionLinenumberEnd: 3378
    functionName: trb_maxlen_node_name
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - abs
    - struct trt_printer_ctx*::fp::modify::next_sibling
    - trb_strlen_of_name_and_mark
    - struct trt_printer_ctx*::fp::read::node
    - struct trt_printer_ctx*::fp::modify::first_sibling
    - trp_node_is_empty
    linkageType: ''
    returnType: int32_t
    signature: int32_t trb_maxlen_node_name(struct trt_parent_cache ca, struct trt_printer_ctx
      *pc, struct trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trb_maxlen_node_name
      Src: /src/libyang/src/printer_tree.c:3394,1
    - Dst: abs
      Src: /src/libyang/src/printer_tree.c:3399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ca
    - pc
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3400
      start: 3391
    functionDepth: 4
    functionLinenumber: 3391
    functionLinenumberEnd: 3400
    functionName: trb_max_btw_opts_type4siblings
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_maxlen_node_name
    - abs
    linkageType: ''
    returnType: int16_t
    signature: int16_t trb_max_btw_opts_type4siblings(struct trt_parent_cache ca,
      struct trt_printer_ctx *pc, struct trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trb_max_btw_opts_type4siblings
      Src: /src/libyang/src/printer_tree.c:3423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ca
    - pc
    - tc
    argTypes:
    - struct trt_parent_cache
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3424
      start: 3420
    functionDepth: 5
    functionLinenumber: 3420
    functionLinenumberEnd: 3424
    functionName: trb_try_unified_indent
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_max_btw_opts_type4siblings
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t trb_try_unified_indent(struct trt_parent_cache ca, struct
      trt_printer_ctx *pc, struct trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: trb_parent_is_last_sibling
      Src: /src/libyang/src/printer_tree.c:3449,1
    - Dst: trp_wrapper_set_shift
      Src: /src/libyang/src/printer_tree.c:3450,1
    - Dst: trp_wrapper_set_mark
      Src: /src/libyang/src/printer_tree.c:3450,1
    - Dst: trb_try_unified_indent
      Src: /src/libyang/src/printer_tree.c:3453,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3460,1
    - Dst: trb_print_entire_node
      Src: /src/libyang/src/printer_tree.c:3462,1
    - Dst: tro_parent_cache_for_child
      Src: /src/libyang/src/printer_tree.c:3464,1
    - Dst: struct trt_printer_ctx*::fp::modify::next_child
      Src: /src/libyang/src/printer_tree.c:3466,1
    - Dst: trp_node_is_empty
      Src: /src/libyang/src/printer_tree.c:3467,1
    - Dst: trb_print_nodes
      Src: /src/libyang/src/printer_tree.c:3471,1
    - Dst: struct trt_printer_ctx*::fp::modify::parent
      Src: /src/libyang/src/printer_tree.c:3473,1
    - Dst: struct trt_printer_ctx*::fp::modify::next_sibling
      Src: /src/libyang/src/printer_tree.c:3477,1
    - Dst: trp_node_is_empty
      Src: /src/libyang/src/printer_tree.c:3478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - wr
    - ca
    - pc
    - tc
    argTypes:
    - struct trt_wrapper
    - struct trt_parent_cache
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3482
      start: 3441
    functionDepth: 10
    functionLinenumber: 3441
    functionLinenumberEnd: 3482
    functionName: trb_print_nodes
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 1
    functionsReached:
    - struct trt_printer_ctx*::fp::modify::next_sibling
    - trp_wrapper_set_mark
    - tro_parent_cache_for_child
    - struct trt_printer_ctx*::fp::modify::parent
    - ly_print_
    - trb_try_unified_indent
    - struct trt_printer_ctx*::fp::modify::next_child
    - trp_wrapper_set_shift
    - trb_parent_is_last_sibling
    - trb_print_entire_node
    - trp_node_is_empty
    - trb_print_nodes
    linkageType: ''
    returnType: void
    signature: void trb_print_nodes(struct trt_wrapper wr, struct trt_parent_cache
      ca, struct trt_printer_ctx *pc, struct trt_tree_ctx *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: trp_wrapper_set_shift
      Src: /src/libyang/src/printer_tree.c:3500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3504
      start: 3489
    functionDepth: 2
    functionLinenumber: 3489
    functionLinenumberEnd: 3504
    functionName: trb_count_depth
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_wrapper_set_shift
    linkageType: ''
    returnType: struct trt_wrapper
    signature: struct trt_wrapper trb_count_depth(const struct lysc_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3521,1
    - Dst: trb_print_parents
      Src: /src/libyang/src/printer_tree.c:3527,1
    - Dst: trb_count_depth
      Src: /src/libyang/src/printer_tree.c:3531,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3534,1
    - Dst: trb_print_entire_node
      Src: /src/libyang/src/printer_tree.c:3535,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - node
    - pc
    - tc
    argTypes:
    - struct lysc_node*
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts:
    - condition: (pc && tc && tc->section == TRD_SECT_MODULE)
      pos:
        line_end: 3520
        line_start: 3520
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3536
      start: 3516
    functionDepth: 10
    functionLinenumber: 3516
    functionLinenumberEnd: 3536
    functionName: trb_print_parents
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 1
    functionsReached:
    - trb_count_depth
    - ly_print_
    - trb_print_entire_node
    - trb_print_parents
    - assert
    linkageType: ''
    returnType: void
    signature: void trb_print_parents(const struct lysc_node *node, struct trt_printer_ctx
      *pc, struct trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3549
      start: 3543
    functionDepth: 0
    functionLinenumber: 3543
    functionLinenumberEnd: 3549
    functionName: trb_tree_ctx_get_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'void *

      trb_tree_ctx_get_node(struct trt_tree_ctx *tc)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trb_tree_ctx_get_node
      Src: /src/libyang/src/printer_tree.c:3558,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/printer_tree.c:3563,1
    - Dst: lysp_node_child
      Src: /src/libyang/src/printer_tree.c:3565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3567
      start: 3555
    functionDepth: 1
    functionLinenumber: 3555
    functionLinenumberEnd: 3567
    functionName: trb_tree_ctx_get_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_tree_ctx_get_node
    - lysp_node_child
    - lysc_node_child
    linkageType: ''
    returnType: void
    signature: 'void *

      trb_tree_ctx_get_child(struct trt_tree_ctx *tc)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: trb_tree_ctx_get_child
      Src: /src/libyang/src/printer_tree.c:3576,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tc
    argTypes:
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3583
      start: 3573
    functionDepth: 2
    functionLinenumber: 3573
    functionLinenumberEnd: 3583
    functionName: trb_tree_ctx_set_child
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_tree_ctx_get_child
    linkageType: ''
    returnType: void
    signature: void trb_tree_ctx_set_child(struct trt_tree_ctx *tc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trb_tree_ctx_get_node
      Src: /src/libyang/src/printer_tree.c:3609,1
    - Dst: trb_print_entire_node
      Src: /src/libyang/src/printer_tree.c:3613,1
    - Dst: tro_parent_cache_for_child
      Src: /src/libyang/src/printer_tree.c:3615,1
    - Dst: struct trt_printer_ctx*::fp::modify::next_child
      Src: /src/libyang/src/printer_tree.c:3616,1
    - Dst: trp_node_is_empty
      Src: /src/libyang/src/printer_tree.c:3618,1
    - Dst: trb_print_nodes
      Src: /src/libyang/src/printer_tree.c:3620,1
    - Dst: struct trt_printer_ctx*::fp::modify::parent
      Src: /src/libyang/src/printer_tree.c:3622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - max_gap_before_type
    - wr
    - ca
    - pc
    - tc
    argTypes:
    - uint32_t
    - struct trt_wrapper
    - struct trt_parent_cache
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3624
      start: 3603
    functionDepth: 11
    functionLinenumber: 3603
    functionLinenumberEnd: 3624
    functionName: trb_print_subtree_nodes
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_tree_ctx_get_node
    - tro_parent_cache_for_child
    - struct trt_printer_ctx*::fp::modify::parent
    - struct trt_printer_ctx*::fp::modify::next_child
    - trb_print_entire_node
    - trp_node_is_empty
    - trb_print_nodes
    linkageType: ''
    returnType: void
    signature: void trb_print_subtree_nodes(uint32_t max_gap_before_type, struct trt_wrapper
      wr, struct trt_parent_cache ca, struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct trt_fp_modify_ctx::first_sibling
      Src: /src/libyang/src/printer_tree.c:3642,1
    - Dst: trp_node_is_empty
      Src: /src/libyang/src/printer_tree.c:3643,1
    - Dst: struct trt_fp_modify_ctx::next_sibling
      Src: /src/libyang/src/printer_tree.c:3643,1
    - Dst: struct trt_fp_modify_ctx::first_sibling
      Src: /src/libyang/src/printer_tree.c:3646,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fp
    - tc
    argTypes:
    - struct trt_fp_modify_ctx
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3648
      start: 3635
    functionDepth: 2
    functionLinenumber: 3635
    functionLinenumberEnd: 3648
    functionName: trb_get_number_of_siblings
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_node_is_empty
    - struct trt_fp_modify_ctx::next_sibling
    - struct trt_fp_modify_ctx::first_sibling
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t trb_get_number_of_siblings(struct trt_fp_modify_ctx fp, struct
      trt_tree_ctx *tc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: trb_tree_ctx_get_node
      Src: /src/libyang/src/printer_tree.c:3671,1
    - Dst: trb_get_number_of_siblings
      Src: /src/libyang/src/printer_tree.c:3676,1
    - Dst: trb_try_unified_indent
      Src: /src/libyang/src/printer_tree.c:3677,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3687,1
    - Dst: trb_print_subtree_nodes
      Src: /src/libyang/src/printer_tree.c:3688,1
    - Dst: struct trt_printer_ctx*::fp::modify::next_sibling
      Src: /src/libyang/src/printer_tree.c:3689,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - wr
    - pc
    - tc
    argTypes:
    - struct trt_wrapper
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3691
      start: 3664
    functionDepth: 12
    functionLinenumber: 3664
    functionLinenumberEnd: 3691
    functionName: trb_print_family_tree
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_tree_ctx_get_node
    - trb_get_number_of_siblings
    - struct trt_printer_ctx*::fp::modify::next_sibling
    - ly_print_
    - trb_print_subtree_nodes
    - trb_try_unified_indent
    linkageType: ''
    returnType: void
    signature: void trb_print_family_tree(struct trt_wrapper wr, struct trt_printer_ctx
      *pc, struct trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - module
    - out
    - max_line_length
    - pc
    - tc
    argTypes:
    - struct lys_module*
    - struct ly_out*
    - size_t
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3742
      start: 3708
    functionDepth: 0
    functionLinenumber: 3708
    functionLinenumberEnd: 3742
    functionName: trm_lysp_tree_ctx
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void trm_lysp_tree_ctx(const struct lys_module *module, struct ly_out
      *out, size_t max_line_length, struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - module
    - out
    - max_line_length
    - pc
    - tc
    argTypes:
    - struct lys_module*
    - struct ly_out*
    - size_t
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3791
      start: 3757
    functionDepth: 0
    functionLinenumber: 3757
    functionLinenumberEnd: 3791
    functionName: trm_lysc_tree_ctx
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void trm_lysc_tree_ctx(const struct lys_module *module, struct ly_out
      *out, size_t max_line_length, struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trm_lysc_tree_ctx
      Src: /src/libyang/src/printer_tree.c:3801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3802
      start: 3798
    functionDepth: 1
    functionLinenumber: 3798
    functionLinenumberEnd: 3802
    functionName: trm_reset_to_lysc_tree_ctx
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trm_lysc_tree_ctx
    linkageType: ''
    returnType: void
    signature: void trm_reset_to_lysc_tree_ctx(struct trt_printer_ctx *pc, struct
      trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trm_lysp_tree_ctx
      Src: /src/libyang/src/printer_tree.c:3812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3813
      start: 3809
    functionDepth: 1
    functionLinenumber: 3809
    functionLinenumberEnd: 3813
    functionName: trm_reset_to_lysp_tree_ctx
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trm_lysp_tree_ctx
    linkageType: ''
    returnType: void
    signature: void trm_reset_to_lysp_tree_ctx(struct trt_printer_ctx *pc, struct
      trt_tree_ctx *tc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:3838,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/printer_tree.c:3841,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/printer_tree.c:3843,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - pn
    - pmod
    argTypes:
    - struct lysp_node_augment*
    - struct lysp_module*
    assertStmts:
    - condition: (id[0] == '/')
      pos:
        line_end: 3837
        line_start: 3837
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 3850
      start: 3821
    functionDepth: 1
    functionLinenumber: 3821
    functionLinenumberEnd: 3850
    functionName: trm_nodeid_target_is_local
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - ly_parse_nodeid
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool trm_nodeid_target_is_local(const struct lysp_node_augment *pn,
      const struct lysp_module *pmod)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:3865,1
    - Dst: trp_print_keyword_stmt
      Src: /src/libyang/src/printer_tree.c:3869,1
    - Dst: trb_print_family_tree
      Src: /src/libyang/src/printer_tree.c:3871,1
    - Dst: trb_print_family_tree
      Src: /src/libyang/src/printer_tree.c:3873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ks
    - pc
    - tc
    argTypes:
    - struct trt_keyword_stmt
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3875
      start: 3862
    functionDepth: 13
    functionLinenumber: 3862
    functionLinenumberEnd: 3875
    functionName: trm_print_section_as_family_tree
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trp_print_keyword_stmt
    - trb_print_family_tree
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trm_print_section_as_family_tree(struct trt_keyword_stmt ks, struct
      trt_printer_ctx *pc, struct trt_tree_ctx *tc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:3891,1
    - Dst: trb_tree_ctx_get_child
      Src: /src/libyang/src/printer_tree.c:3896,1
    - Dst: trp_print_keyword_stmt
      Src: /src/libyang/src/printer_tree.c:3899,1
    - Dst: trb_tree_ctx_set_child
      Src: /src/libyang/src/printer_tree.c:3900,1
    - Dst: trb_print_family_tree
      Src: /src/libyang/src/printer_tree.c:3901,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ks
    - pc
    - tc
    argTypes:
    - struct trt_keyword_stmt
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3902
      start: 3886
    functionDepth: 13
    functionLinenumber: 3886
    functionLinenumberEnd: 3902
    functionName: trm_print_section_as_subtree
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_tree_ctx_get_child
    - trp_print_keyword_stmt
    - trb_tree_ctx_set_child
    - trb_print_family_tree
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trm_print_section_as_subtree(struct trt_keyword_stmt ks, struct
      trt_printer_ctx *pc, struct trt_tree_ctx *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trm_print_section_as_family_tree
      Src: /src/libyang/src/printer_tree.c:3912,1
    - Dst: struct trt_printer_ctx*::fp::read::module_name
      Src: /src/libyang/src/printer_tree.c:3912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3913
      start: 3909
    functionDepth: 14
    functionLinenumber: 3909
    functionLinenumberEnd: 3913
    functionName: trm_print_module_section
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trm_print_section_as_family_tree
    - struct trt_printer_ctx*::fp::read::module_name
    linkageType: ''
    returnType: void
    signature: void trm_print_module_section(struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: trm_reset_to_lysp_tree_ctx
      Src: /src/libyang/src/printer_tree.c:3929,1
    - Dst: trop_modi_next_augment
      Src: /src/libyang/src/printer_tree.c:3933,1
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:3934,1
    - Dst: trop_modi_next_augment
      Src: /src/libyang/src/printer_tree.c:3935,1
    - Dst: trm_nodeid_target_is_local
      Src: /src/libyang/src/printer_tree.c:3941,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3947,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3948,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3951,1
    - Dst: trm_print_section_as_subtree
      Src: /src/libyang/src/printer_tree.c:3954,1
    - Dst: trm_reset_to_lysc_tree_ctx
      Src: /src/libyang/src/printer_tree.c:3958,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3960
      start: 3921
    functionDepth: 14
    functionLinenumber: 3921
    functionLinenumberEnd: 3960
    functionName: trm_print_augmentations
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trop_modi_next_augment
    - trm_nodeid_target_is_local
    - trm_reset_to_lysp_tree_ctx
    - ly_print_
    - trm_reset_to_lysc_tree_ctx
    - trm_print_section_as_subtree
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trm_print_augmentations(struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tro_modi_get_rpcs
      Src: /src/libyang/src/printer_tree.c:3972,1
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:3974,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3975,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3976,1
    - Dst: trm_print_section_as_family_tree
      Src: /src/libyang/src/printer_tree.c:3977,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3979
      start: 3967
    functionDepth: 14
    functionLinenumber: 3967
    functionLinenumberEnd: 3979
    functionName: trm_print_rpcs
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - trm_print_section_as_family_tree
    - tro_modi_get_rpcs
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trm_print_rpcs(struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tro_modi_get_notifications
      Src: /src/libyang/src/printer_tree.c:3992,1
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:3994,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3995,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:3996,1
    - Dst: trm_print_section_as_family_tree
      Src: /src/libyang/src/printer_tree.c:3997,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3999
      start: 3987
    functionDepth: 14
    functionLinenumber: 3987
    functionLinenumberEnd: 3999
    functionName: trm_print_notifications
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - tro_modi_get_notifications
    - trm_print_section_as_family_tree
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trm_print_notifications(struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trop_modi_next_grouping
      Src: /src/libyang/src/printer_tree.c:4017,1
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:4018,1
    - Dst: trop_modi_next_grouping
      Src: /src/libyang/src/printer_tree.c:4019,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4021,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4022,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4025,1
    - Dst: trm_print_section_as_subtree
      Src: /src/libyang/src/printer_tree.c:4027,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4029
      start: 4007
    functionDepth: 14
    functionLinenumber: 4007
    functionLinenumberEnd: 4029
    functionName: trm_print_groupings
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - trop_modi_next_grouping
    - trm_print_section_as_subtree
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trm_print_groupings(struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_tree.c:4043,1
    - Dst: trop_yang_data_sections
      Src: /src/libyang/src/printer_tree.c:4057,1
    - Dst: tro_modi_next_yang_data
      Src: /src/libyang/src/printer_tree.c:4061,1
    - Dst: TRP_KEYWORD_STMT_IS_EMPTY
      Src: /src/libyang/src/printer_tree.c:4062,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4067,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4068,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4071,1
    - Dst: trm_print_section_as_family_tree
      Src: /src/libyang/src/printer_tree.c:4074,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4076
      start: 4037
    functionDepth: 14
    functionLinenumber: 4037
    functionLinenumberEnd: 4076
    functionName: trm_print_yang_data
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - tro_modi_next_yang_data
    - LY_ARRAY_COUNT
    - ly_print_
    - trop_yang_data_sections
    - trm_print_section_as_family_tree
    - TRP_KEYWORD_STMT_IS_EMPTY
    linkageType: ''
    returnType: void
    signature: void trm_print_yang_data(struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: trm_print_module_section
      Src: /src/libyang/src/printer_tree.c:4087,1
    - Dst: trm_print_augmentations
      Src: /src/libyang/src/printer_tree.c:4088,1
    - Dst: trm_print_rpcs
      Src: /src/libyang/src/printer_tree.c:4089,1
    - Dst: trm_print_notifications
      Src: /src/libyang/src/printer_tree.c:4090,1
    - Dst: trm_print_groupings
      Src: /src/libyang/src/printer_tree.c:4091,1
    - Dst: trm_print_yang_data
      Src: /src/libyang/src/printer_tree.c:4092,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - pc
    - tc
    argTypes:
    - struct trt_printer_ctx*
    - struct trt_tree_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4094
      start: 4084
    functionDepth: 15
    functionLinenumber: 4084
    functionLinenumberEnd: 4094
    functionName: trm_print_sections
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trm_print_module_section
    - trm_print_rpcs
    - trm_print_notifications
    - ly_print_
    - trm_print_yang_data
    - trm_print_augmentations
    - trm_print_groupings
    linkageType: ''
    returnType: void
    signature: void trm_print_sections(struct trt_printer_ctx *pc, struct trt_tree_ctx
      *tc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TRP_INIT_LY_OUT_CLB_ARG
      Src: /src/libyang/src/printer_tree.c:4107,1
    - Dst: LY_CHECK_ARG_RET3
      Src: /src/libyang/src/printer_tree.c:4109,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/src/printer_tree.c:4111,1
    - Dst: trm_lysc_tree_ctx
      Src: /src/libyang/src/printer_tree.c:4117,1
    - Dst: trm_lysp_tree_ctx
      Src: /src/libyang/src/printer_tree.c:4119,1
    - Dst: trm_print_sections
      Src: /src/libyang/src/printer_tree.c:4122,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_tree.c:4125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - out
    - module
    - UNUSED
    - line_length
    argTypes:
    - struct ly_out*
    - struct lys_module*
    - uint32_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4128
      start: 4100
    functionDepth: 16
    functionLinenumber: 4100
    functionLinenumberEnd: 4128
    functionName: tree_print_module
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_out_new_clb
    - trm_lysp_tree_ctx
    - LY_CHECK_ARG_RET3
    - trm_lysc_tree_ctx
    - trm_print_sections
    - ly_out_free
    - TRP_INIT_LY_OUT_CLB_ARG
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR tree_print_module(struct ly_out *out, const struct lys_module
      *module, uint32_t UNUSED(options), size_t line_length)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TRP_INIT_LY_OUT_CLB_ARG
      Src: /src/libyang/src/printer_tree.c:4138,1
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:4140,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/src/printer_tree.c:4146,1
    - Dst: trm_lysc_tree_ctx
      Src: /src/libyang/src/printer_tree.c:4151,1
    - Dst: trp_print_keyword_stmt
      Src: /src/libyang/src/printer_tree.c:4153,1
    - Dst: struct trt_printer_ctx::fp::read::module_name
      Src: /src/libyang/src/printer_tree.c:4153,1
    - Dst: trb_print_parents
      Src: /src/libyang/src/printer_tree.c:4154,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/printer_tree.c:4157,1
    - Dst: trb_count_depth
      Src: /src/libyang/src/printer_tree.c:4158,1
    - Dst: trb_print_family_tree
      Src: /src/libyang/src/printer_tree.c:4159,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_tree.c:4161,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_tree.c:4164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - out
    - node
    - options
    - line_length
    argTypes:
    - struct ly_out*
    - struct lysc_node*
    - uint32_t
    - size_t
    assertStmts:
    - condition: (out && node)
      pos:
        line_end: 4139
        line_start: 4139
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 4167
      start: 4130
    functionDepth: 13
    functionLinenumber: 4130
    functionLinenumberEnd: 4167
    functionName: tree_print_compiled_node
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - trb_print_family_tree
    - ly_out_new_clb
    - trp_print_keyword_stmt
    - trb_count_depth
    - ly_print_
    - struct trt_printer_ctx::fp::read::module_name
    - trm_lysc_tree_ctx
    - ly_out_free
    - lysc_node_child
    - trb_print_parents
    - TRP_INIT_LY_OUT_CLB_ARG
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR tree_print_compiled_node(struct ly_out *out, const struct lysc_node
      *node, uint32_t options, size_t line_length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRP_INIT_LY_OUT_CLB_ARG
      Src: /src/libyang/src/printer_tree.c:4176,1
    - Dst: assert
      Src: /src/libyang/src/printer_tree.c:4178,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_tree.c:4179,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/src/printer_tree.c:4181,1
    - Dst: trm_lysp_tree_ctx
      Src: /src/libyang/src/printer_tree.c:4186,1
    - Dst: trm_print_sections
      Src: /src/libyang/src/printer_tree.c:4191,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_tree.c:4194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - out
    - submodp
    - UNUSED
    - line_length
    argTypes:
    - struct ly_out*
    - struct lysp_submodule*
    - uint32_t
    - size_t
    assertStmts:
    - condition: (submodp)
      pos:
        line_end: 4177
        line_start: 4177
        source_file: /src/libyang/src/printer_tree.c
    constantsTouched: []
    func_position:
      end: 4197
      start: 4169
    functionDepth: 16
    functionLinenumber: 4169
    functionLinenumberEnd: 4197
    functionName: tree_print_parsed_submodule
    functionSourceFile: /src/libyang/src/printer_tree.c
    functionUses: 0
    functionsReached:
    - ly_out_new_clb
    - LY_CHECK_ARG_RET
    - TRP_INIT_LY_OUT_CLB_ARG
    - trm_print_sections
    - ly_out_free
    - trm_lysp_tree_ctx
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR tree_print_parsed_submodule(struct ly_out *out, const struct
      lysp_submodule *submodp, uint32_t UNUSED(options), size_t line_length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:47,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:48,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:52,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:53,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - imports
    - module_prefix
    - value
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_import*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 58
    functionName: lysp_check_prefix
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 2
    functionsReached:
    - LOGVAL_PARSER
    - strcmp
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_prefix(struct lys_parser_ctx *ctx, struct lysp_import
      *imports, const char *module_prefix, const char **value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:52,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 20
    functionsReached:
    - LOGVAL_PARSER
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(imports, struct lysp_import, i)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema_helpers.c:66,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:66,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema_helpers.c:67,1
    - Dst: LOGARG
      Src: /src/libyang/src/tree_schema_helpers.c:67,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:67,1
    - Dst: isdigit
      Src: /src/libyang/src/tree_schema_helpers.c:75,1
    - Dst: memset
      Src: /src/libyang/src/tree_schema_helpers.c:81,1
    - Dst: strptime
      Src: /src/libyang/src/tree_schema_helpers.c:82,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_schema_helpers.c:86,1
    - Dst: mktime
      Src: /src/libyang/src/tree_schema_helpers.c:87,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:98,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 4
    argNames:
    - ctx
    - date
    - date_len
    - stmt
    argTypes:
    - struct lys_parser_ctx*
    - char*
    - uint8_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 101
    functionName: lysp_check_date
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 4
    functionsReached:
    - isdigit
    - LY_CHECK_ERR_RET
    - LOGARG
    - memset
    - LY_CHECK_ARG_RET
    - mktime
    - LOGVAL_PARSER
    - memcpy
    - PARSER_CTX
    - strptime
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_date(struct lys_parser_ctx *ctx, const char *date,
      uint8_t date_len, const char *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_schema_helpers.c:109,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:110,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_schema_helpers.c:117,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_schema_helpers.c:118,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_schema_helpers.c:119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - revs
    argTypes:
    - struct lysp_revision*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 121
    functionName: lysp_sort_revisions
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 3
    functionsReached:
    - LY_ARRAY_COUNT
    - strcmp
    - memcpy
    linkageType: ''
    returnType: void
    signature: void lysp_sort_revisions(struct lysp_revision *revs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_typedefs
      Src: /src/libyang/src/tree_schema_helpers.c:129,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - name
    - node
    argTypes:
    - char*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 138
    functionName: lysp_type_match
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - lysp_node_typedefs
    - strcmp
    linkageType: ''
    returnType: struct lysp_tpdf
    signature: 'struct lysp_tpdf *

      lysp_type_match(const char *name, struct lysp_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 20
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(typedefs, u)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:146,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:148,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:151,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:155,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:159,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:161,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:166,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:169,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:171,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:173,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:176,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:179,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:183,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:187,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:192,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:199,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:201,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:203,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 87
    argCount: 2
    argNames:
    - name
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 212
    functionName: lysp_type_str2builtin
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: LY_DATA_TYPE
    signature: LY_DATA_TYPE lysp_type_str2builtin(const char *name, size_t len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:224,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:225,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:226,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:227,1
    - Dst: strchr
      Src: /src/libyang/src/tree_schema_helpers.c:230,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/tree_schema_helpers.c:232,1
    - Dst: lysp_type_str2builtin
      Src: /src/libyang/src/tree_schema_helpers.c:241,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema_helpers.c:241,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:247,1
    - Dst: lysp_type_match
      Src: /src/libyang/src/tree_schema_helpers.c:253,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:264,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:265,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:274,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:277,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 6
    argNames:
    - id
    - start_node
    - start_module
    - type
    - tpdf
    - node
    argTypes:
    - char*
    - struct lysp_node*
    - struct lysp_module*
    - LY_DATA_TYPE*
    - struct lysp_tpdf**
    - struct lysp_node**
    assertStmts:
    - condition: (id)
      pos:
        line_end: 223
        line_start: 223
        source_file: /src/libyang/src/tree_schema_helpers.c
    - condition: (tpdf)
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/libyang/src/tree_schema_helpers.c
    - condition: (node)
      pos:
        line_end: 226
        line_start: 226
        source_file: /src/libyang/src/tree_schema_helpers.c
    - condition: (start_module)
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 286
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 286
    functionName: lysp_type_find
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - strlen
    - lysp_type_match
    - strcmp
    - lysp_type_str2builtin
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - strchr
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_type_find(const char *id, struct lysp_node *start_node,
      const struct lysp_module *start_module,\n        LY_DATA_TYPE *type, const struct
      lysp_tpdf **tpdf, struct lysp_node **node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 282
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 21
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(typedefs, v)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:292,1
    - Dst: isspace
      Src: /src/libyang/src/tree_schema_helpers.c:294,1
    - Dst: isspace
      Src: /src/libyang/src/tree_schema_helpers.c:294,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:295,1
    - Dst: iscntrl
      Src: /src/libyang/src/tree_schema_helpers.c:300,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema_helpers.c:301,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:301,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - name
    - name_len
    argTypes:
    - struct lys_parser_ctx*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 309
    functionName: lysp_check_enum_name
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - iscntrl
    - LOGVAL_PARSER
    - isspace
    - LOGWRN
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_enum_name(struct lys_parser_ctx *ctx, const char
      *name, size_t name_len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:334,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:335,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema_helpers.c:338,1
    - Dst: lysp_type_str2builtin
      Src: /src/libyang/src/tree_schema_helpers.c:340,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:341,1
    - Dst: lysp_node_typedefs
      Src: /src/libyang/src/tree_schema_helpers.c:347,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:352,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:353,1
    - Dst: lysp_type_match
      Src: /src/libyang/src/tree_schema_helpers.c:359,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:360,1
    - Dst: dict_hash
      Src: /src/libyang/src/tree_schema_helpers.c:367,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_schema_helpers.c:369,1
    - Dst: lyht_find
      Src: /src/libyang/src/tree_schema_helpers.c:370,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:371,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_schema_helpers.c:375,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:376,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 5
    argNames:
    - ctx
    - node
    - tpdf
    - tpdfs_global
    - tpdfs_scoped
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_node*
    - struct lysp_tpdf*
    - struct hash_table*
    - struct hash_table*
    assertStmts:
    - condition: (ctx)
      pos:
        line_end: 333
        line_start: 333
        source_file: /src/libyang/src/tree_schema_helpers.c
    - condition: (tpdf)
      pos:
        line_end: 334
        line_start: 334
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 385
      start: 323
    functionDepth: 6
    functionLinenumber: 323
    functionLinenumberEnd: 385
    functionName: lysp_check_dup_typedef
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - dict_hash
    - strlen
    - lysp_node_typedefs
    - lysp_type_match
    - lyht_insert
    - strcmp
    - lysp_type_str2builtin
    - LOGVAL_PARSER
    - lyht_find
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_check_dup_typedef(struct lys_parser_ctx *ctx, struct lysp_node
      *node, const struct lysp_tpdf *tpdf,\n        struct hash_table *tpdfs_global,
      struct hash_table *tpdfs_scoped)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:352,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:353,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 356
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 21
    functionsReached:
    - LOGVAL_PARSER
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(typedefs, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - val1
    - val2
    - UNUSED
    - UNUSED(cb_data)
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 395
    functionName: lysp_id_cmp
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lysp_id_cmp(void *val1, void *val2, ly_bool UNUSED(mod), void
      *UNUSED(cb_data))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyht_new
      Src: /src/libyang/src/tree_schema_helpers.c:408,1
    - Dst: lyht_new
      Src: /src/libyang/src/tree_schema_helpers.c:409,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:410,1
    - Dst: lysp_check_dup_typedef
      Src: /src/libyang/src/tree_schema_helpers.c:411,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema_helpers.c:412,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:414,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:415,1
    - Dst: lysp_check_dup_typedef
      Src: /src/libyang/src/tree_schema_helpers.c:416,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema_helpers.c:417,1
    - Dst: lysp_node_typedefs
      Src: /src/libyang/src/tree_schema_helpers.c:421,1
    - Dst: lysp_check_dup_typedef
      Src: /src/libyang/src/tree_schema_helpers.c:423,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema_helpers.c:424,1
    - Dst: lyht_free
      Src: /src/libyang/src/tree_schema_helpers.c:429,1
    - Dst: lyht_free
      Src: /src/libyang/src/tree_schema_helpers.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - mod
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 397
    functionDepth: 7
    functionLinenumber: 397
    functionLinenumberEnd: 432
    functionName: lysp_check_dup_typedefs
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - lysp_check_dup_typedef
    - lysp_node_typedefs
    - LY_ARRAY_FOR
    - LY_CHECK_GOTO
    - lyht_free
    - lyht_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_dup_typedefs(struct lys_parser_ctx *ctx, struct lysp_module
      *mod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_check_dup_typedef
      Src: /src/libyang/src/tree_schema_helpers.c:423,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema_helpers.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 7
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 22
    functionsReached:
    - lysp_check_dup_typedef
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(typedefs, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - UNUSED
    - UNUSED(cb_data)
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 440
    functionName: ly_ptrequal_cb
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool ly_ptrequal_cb(void *val1_p, void *val2_p, ly_bool UNUSED(mod),
      void *UNUSED(cb_data))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lyht_new
      Src: /src/libyang/src/tree_schema_helpers.c:451,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:452,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:455,1
    - Dst: dict_hash
      Src: /src/libyang/src/tree_schema_helpers.c:456,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema_helpers.c:456,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_schema_helpers.c:457,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:459,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:469,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:470,1
    - Dst: dict_hash
      Src: /src/libyang/src/tree_schema_helpers.c:471,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema_helpers.c:471,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_schema_helpers.c:472,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:474,1
    - Dst: lyht_free
      Src: /src/libyang/src/tree_schema_helpers.c:485,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - mod
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 442
    functionDepth: 6
    functionLinenumber: 442
    functionLinenumberEnd: 487
    functionName: lysp_check_dup_features
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - dict_hash
    - strlen
    - lyht_insert
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL_PARSER
    - lyht_free
    - lyht_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_dup_features(struct lys_parser_ctx *ctx, struct lysp_module
      *mod)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lyht_new
      Src: /src/libyang/src/tree_schema_helpers.c:498,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:499,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:502,1
    - Dst: dict_hash
      Src: /src/libyang/src/tree_schema_helpers.c:503,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema_helpers.c:503,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_schema_helpers.c:504,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:506,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:516,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:517,1
    - Dst: dict_hash
      Src: /src/libyang/src/tree_schema_helpers.c:518,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema_helpers.c:518,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_schema_helpers.c:519,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:521,1
    - Dst: lyht_free
      Src: /src/libyang/src/tree_schema_helpers.c:532,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - mod
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 489
    functionDepth: 6
    functionLinenumber: 489
    functionLinenumberEnd: 534
    functionName: lysp_check_dup_identities
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - dict_hash
    - strlen
    - lyht_insert
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL_PARSER
    - lyht_free
    - lyht_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_dup_identities(struct lys_parser_ctx *ctx, struct
      lysp_module *mod)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:558,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema_helpers.c:559,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:565,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema_helpers.c:566,1
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:575,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:578,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:579,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:585,1
    - Dst: strrchr
      Src: /src/libyang/src/tree_schema_helpers.c:591,1
    - Dst: strlen
      Src: /src/libyang/src/tree_schema_helpers.c:598,1
    - Dst: strchr
      Src: /src/libyang/src/tree_schema_helpers.c:599,1
    - Dst: strrchr
      Src: /src/libyang/src/tree_schema_helpers.c:600,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:601,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema_helpers.c:603,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:608,1
    - Dst: LOGWRN
      Src: /src/libyang/src/tree_schema_helpers.c:609,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 4
    argNames:
    - ctx
    - mod
    - submod
    - data
    argTypes:
    - struct ly_ctx*
    - struct lysp_module*
    - struct lysp_submodule*
    - void*
    assertStmts:
    - condition: (info->submoduleof)
      pos:
        line_end: 574
        line_start: 574
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 615
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 615
    functionName: lysp_load_module_check
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - strlen
    - LOGERR
    - strcmp
    - strrchr
    - LOGVAL
    - strchr
    - strncmp
    - LOGWRN
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_load_module_check(const struct ly_ctx *ctx, struct lysp_module
      *mod, struct lysp_submodule *submod, void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:650,1
    - Dst: lys_search_localfile
      Src: /src/libyang/src/tree_schema_helpers.c:650,1
    - Dst: ly_ctx_get_searchdirs
      Src: /src/libyang/src/tree_schema_helpers.c:650,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema_helpers.c:654,1
    - Dst: LOGVRB
      Src: /src/libyang/src/tree_schema_helpers.c:660,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_schema_helpers.c:663,1
    - Dst: ly_in_new_filepath
      Src: /src/libyang/src/tree_schema_helpers.c:663,1
    - Dst: LOGERR
      Src: /src/libyang/src/tree_schema_helpers.c:664,1
    - Dst: lys_parse_submodule
      Src: /src/libyang/src/tree_schema_helpers.c:670,1
    - Dst: lys_create_module
      Src: /src/libyang/src/tree_schema_helpers.c:673,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_schema_helpers.c:677,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_schema_helpers.c:678,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_helpers.c:685,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 10
    argNames:
    - ctx
    - name
    - revision
    - features
    - need_implemented
    - main_ctx
    - main_name
    - required
    - unres
    - result
    argTypes:
    - struct ly_ctx*
    - char*
    - char*
    - char**
    - ly_bool
    - struct lys_parser_ctx*
    - char*
    - ly_bool
    - struct lys_glob_unres*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 638
    functionDepth: 21
    functionLinenumber: 638
    functionLinenumberEnd: 687
    functionName: lys_module_localfile
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lys_create_module
    - ly_in_free
    - LOGERR
    - ly_in_new_filepath
    - LOGVRB
    - free
    - LY_CHECK_RET
    - LY_CHECK_GOTO
    - lys_search_localfile
    - ly_ctx_get_searchdirs
    - lys_parse_submodule
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_module_localfile(struct ly_ctx *ctx, const char *name,
      const char *revision, const char **features,\n        ly_bool need_implemented,
      struct lys_parser_ctx *main_ctx, const char *main_name, ly_bool required,\n
      \       struct lys_glob_unres *unres, void **result)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:703,1
    - Dst: ly_ctx_get_module
      Src: /src/libyang/src/tree_schema_helpers.c:717,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/tree_schema_helpers.c:721,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/tree_schema_helpers.c:725,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/tree_schema_helpers.c:737,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:739,1
    - Dst: struct ly_ctx*::imp_clb
      Src: /src/libyang/src/tree_schema_helpers.c:753,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:755,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/src/tree_schema_helpers.c:755,1
    - Dst: lys_create_module
      Src: /src/libyang/src/tree_schema_helpers.c:758,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_schema_helpers.c:759,1
    - Dst: module_data_free
      Src: /src/libyang/src/tree_schema_helpers.c:761,1
    - Dst: lys_module_localfile
      Src: /src/libyang/src/tree_schema_helpers.c:772,1
    - Dst: LOGVRB
      Src: /src/libyang/src/tree_schema_helpers.c:783,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:792,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:798,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/tree_schema_helpers.c:810,1
    - Dst: lys_set_features
      Src: /src/libyang/src/tree_schema_helpers.c:817,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 100
    argCount: 7
    argNames:
    - ctx
    - name
    - revision
    - need_implemented
    - features
    - unres
    - mod
    argTypes:
    - struct ly_ctx*
    - char*
    - char*
    - ly_bool
    - char**
    - struct lys_glob_unres*
    - struct lys_module**
    assertStmts:
    - condition: (mod && unres)
      pos:
        line_end: 702
        line_start: 702
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 829
      start: 689
    functionDepth: 22
    functionLinenumber: 689
    functionLinenumberEnd: 829
    functionName: lys_load_module
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - lys_create_module
    - struct ly_ctx*::imp_clb
    - ly_in_free
    - lys_module_localfile
    - lys_set_features
    - LOGVRB
    - ly_ctx_get_module_latest
    - ly_ctx_get_module_implemented
    - ly_in_new_memory
    - LY_CHECK_RET
    - LOGVAL
    - module_data_free
    - ly_ctx_get_module
    - lys_set_implemented_r
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_load_module(struct ly_ctx *ctx, const char *name, const
      char *revision, ly_bool need_implemented,\n        const char **features, struct
      lys_glob_unres *unres, struct lys_module **mod)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_yangutf8char
      Src: /src/libyang/src/tree_schema_helpers.c:834,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - c
    argTypes:
    - struct lys_parser_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 831
    functionDepth: 1
    functionLinenumber: 831
    functionLinenumberEnd: 839
    functionName: lysp_check_stringchar
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - LOGVAL_PARSER
    - is_yangutf8char
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_stringchar(struct lys_parser_ctx *ctx, uint32_t c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_yangidentstartchar
      Src: /src/libyang/src/tree_schema_helpers.c:845,1
    - Dst: isprint
      Src: /src/libyang/src/tree_schema_helpers.c:846,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:847,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:849,1
    - Dst: is_yangidentchar
      Src: /src/libyang/src/tree_schema_helpers.c:862,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/tree_schema_helpers.c:863,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - c
    - first
    - prefix
    argTypes:
    - struct lys_parser_ctx*
    - uint32_t
    - ly_bool
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 841
    functionDepth: 1
    functionLinenumber: 841
    functionLinenumberEnd: 868
    functionName: lysp_check_identifierchar
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 3
    functionsReached:
    - is_yangidentchar
    - LOGVAL_PARSER
    - is_yangidentstartchar
    - isprint
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_check_identifierchar(struct lys_parser_ctx *ctx, uint32_t
      c, ly_bool first, uint8_t *prefix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:886,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:887,1
    - Dst: strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:891,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:892,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:892,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:904,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:904,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - pctx
    - inc
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_include*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 880
    functionDepth: 1
    functionLinenumber: 880
    functionLinenumberEnd: 912
    functionName: lysp_get_submodule
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - strcmp
    - LY_ARRAY_FOR
    - strncmp
    - LOGVAL
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_get_submodule(struct lys_parser_ctx *pctx, struct lysp_include
      *inc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:932,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:933,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/tree_schema_helpers.c:943,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:943,1
    - Dst: DUP_STRING_RET
      Src: /src/libyang/src/tree_schema_helpers.c:946,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:946,1
    - Dst: DUP_STRING_RET
      Src: /src/libyang/src/tree_schema_helpers.c:947,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:947,1
    - Dst: DUP_STRING_RET
      Src: /src/libyang/src/tree_schema_helpers.c:948,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:948,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_schema_helpers.c:950,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pctx
    - inc
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_include*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 924
    functionDepth: 1
    functionLinenumber: 924
    functionLinenumberEnd: 954
    functionName: lysp_inject_submodule
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - strcmp
    - LY_ARRAY_FOR
    - DUP_STRING_RET
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_inject_submodule(struct lys_parser_ctx *pctx, struct lysp_include
      *inc)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: PARSER_CTX
      Src: /src/libyang/src/tree_schema_helpers.c:960,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:962,1
    - Dst: lysp_get_submodule
      Src: /src/libyang/src/tree_schema_helpers.c:973,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:974,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:975,1
    - Dst: struct ly_ctx*::imp_clb
      Src: /src/libyang/src/tree_schema_helpers.c:988,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:991,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/src/tree_schema_helpers.c:991,1
    - Dst: lys_parse_submodule
      Src: /src/libyang/src/tree_schema_helpers.c:995,1
    - Dst: ly_in_free
      Src: /src/libyang/src/tree_schema_helpers.c:1001,1
    - Dst: submodule_data_free
      Src: /src/libyang/src/tree_schema_helpers.c:1003,1
    - Dst: lys_module_localfile
      Src: /src/libyang/src/tree_schema_helpers.c:1014,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:1036,1
    - Dst: lysp_inject_submodule
      Src: /src/libyang/src/tree_schema_helpers.c:1036,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:1040,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 58
    argCount: 2
    argNames:
    - pctx
    - pmod
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 956
    functionDepth: 22
    functionLinenumber: 956
    functionLinenumberEnd: 1047
    functionName: lysp_load_submodules
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - struct ly_ctx*::imp_clb
    - ly_in_free
    - lysp_get_submodule
    - lys_module_localfile
    - lysp_inject_submodule
    - ly_in_new_memory
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - submodule_data_free
    - LOGVAL
    - PARSER_CTX
    - lys_parse_submodule
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_load_submodules(struct lys_parser_ctx *pctx, struct lysp_module
      *pmod)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_when
      Src: /src/libyang/src/tree_schema_helpers.c:1059,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1067
    functionName: lysc_has_when
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 2
    functionsReached:
    - lysc_node_when
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_has_when(const struct lysc_node *node)'
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - nodetype
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1069
    functionDepth: 0
    functionLinenumber: 1069
    functionLinenumberEnd: 1100
    functionName: lys_nodetype2str
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lys_nodetype2str(uint16_t nodetype)'
  - BBCount: 16
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 1
    argNames:
    - nodetype
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1102
    functionDepth: 0
    functionLinenumber: 1102
    functionLinenumberEnd: 1137
    functionName: lys_nodetype2stmt
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lys_nodetype2stmt(uint16_t nodetype)
  - BBCount: 21
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 1
    argNames:
    - basetype
    argTypes:
    - LY_DATA_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1139
    functionDepth: 0
    functionLinenumber: 1139
    functionLinenumberEnd: 1184
    functionName: lys_datatype2str
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      lys_datatype2str(LY_DATA_TYPE basetype)'
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1186
    functionDepth: 0
    functionLinenumber: 1186
    functionLinenumberEnd: 1207
    functionName: lysp_node_typedefs
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lysp_node_typedefs(const struct lysp_node *node)'
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1209
    functionDepth: 0
    functionLinenumber: 1209
    functionLinenumberEnd: 1230
    functionName: lysp_node_groupings
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lysp_node_groupings(const struct lysp_node *node)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:1235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node)
      pos:
        line_end: 1234
        line_start: 1234
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 1249
      start: 1232
    functionDepth: 1
    functionLinenumber: 1232
    functionLinenumberEnd: 1249
    functionName: lysp_node_actions_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lysp_node_action
    signature: 'struct lysp_node_action **

      lysp_node_actions_p(struct lysp_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_actions_p
      Src: /src/libyang/src/tree_schema_helpers.c:1256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1251
    functionDepth: 2
    functionLinenumber: 1251
    functionLinenumberEnd: 1262
    functionName: lysp_node_actions
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - lysp_node_actions_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lysp_node_actions(const struct lysp_node *node)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:1267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node)
      pos:
        line_end: 1266
        line_start: 1266
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 1280
      start: 1264
    functionDepth: 1
    functionLinenumber: 1264
    functionLinenumberEnd: 1280
    functionName: lysp_node_notifs_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lysp_node_notif
    signature: 'struct lysp_node_notif **

      lysp_node_notifs_p(struct lysp_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_notifs_p
      Src: /src/libyang/src/tree_schema_helpers.c:1287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1282
    functionDepth: 2
    functionLinenumber: 1282
    functionLinenumberEnd: 1293
    functionName: lysp_node_notifs
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - lysp_node_notifs_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lysp_node_notifs(const struct lysp_node *node)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:1298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node)
      pos:
        line_end: 1297
        line_start: 1297
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 1320
      start: 1295
    functionDepth: 1
    functionLinenumber: 1295
    functionLinenumberEnd: 1320
    functionName: lysp_node_child_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lysp_node
    signature: 'struct lysp_node **

      lysp_node_child_p(struct lysp_node *node)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_child_p
      Src: /src/libyang/src/tree_schema_helpers.c:1331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1322
    functionDepth: 2
    functionLinenumber: 1322
    functionLinenumberEnd: 1337
    functionName: lysp_node_child
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 2
    functionsReached:
    - lysp_node_child_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lysp_node_child(const struct lysp_node *node)'
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1339
    functionDepth: 0
    functionLinenumber: 1339
    functionLinenumberEnd: 1366
    functionName: lysp_node_musts_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysp_restr
    signature: 'struct lysp_restr **

      lysp_node_musts_p(const struct lysp_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_musts_p
      Src: /src/libyang/src/tree_schema_helpers.c:1373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1368
    functionDepth: 1
    functionLinenumber: 1368
    functionLinenumberEnd: 1379
    functionName: lysp_node_musts
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - lysp_node_musts_p
    linkageType: ''
    returnType: struct lysp_restr
    signature: 'struct lysp_restr *

      lysp_node_musts(const struct lysp_node *node)'
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1381
    functionDepth: 0
    functionLinenumber: 1381
    functionLinenumberEnd: 1411
    functionName: lysp_node_when_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysp_when
    signature: 'struct lysp_when **

      lysp_node_when_p(const struct lysp_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_when_p
      Src: /src/libyang/src/tree_schema_helpers.c:1418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1413
    functionDepth: 1
    functionLinenumber: 1413
    functionLinenumberEnd: 1424
    functionName: lysp_node_when
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - lysp_node_when_p
    linkageType: ''
    returnType: struct lysp_when
    signature: 'struct lysp_when *

      lysp_node_when(const struct lysp_node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:1429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node)
      pos:
        line_end: 1428
        line_start: 1428
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 1438
      start: 1426
    functionDepth: 1
    functionLinenumber: 1426
    functionLinenumberEnd: 1438
    functionName: lysc_node_actions_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lysc_node_action
    signature: 'struct lysc_node_action **

      lysc_node_actions_p(struct lysc_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_actions_p
      Src: /src/libyang/src/tree_schema_helpers.c:1445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1451
      start: 1440
    functionDepth: 2
    functionLinenumber: 1440
    functionLinenumberEnd: 1451
    functionName: lysc_node_actions
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 3
    functionsReached:
    - lysc_node_actions_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_node_actions(const struct lysc_node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:1456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node)
      pos:
        line_end: 1455
        line_start: 1455
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 1465
      start: 1453
    functionDepth: 1
    functionLinenumber: 1453
    functionLinenumberEnd: 1465
    functionName: lysc_node_notifs_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lysc_node_notif
    signature: 'struct lysc_node_notif **

      lysc_node_notifs_p(struct lysc_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_notifs_p
      Src: /src/libyang/src/tree_schema_helpers.c:1472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1467
    functionDepth: 2
    functionLinenumber: 1467
    functionLinenumberEnd: 1478
    functionName: lysc_node_notifs
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 3
    functionsReached:
    - lysc_node_notifs_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_node_notifs(const struct lysc_node *node)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:1483,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node && !(node->nodetype & (LYS_RPC | LYS_ACTION)))
      pos:
        line_end: 1482
        line_start: 1482
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 1502
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1502
    functionName: lysc_node_child_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lysc_node
    signature: 'struct lysc_node **

      lysc_node_child_p(const struct lysc_node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_child_p
      Src: /src/libyang/src/tree_schema_helpers.c:1516,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1504
    functionDepth: 2
    functionLinenumber: 1504
    functionLinenumberEnd: 1523
    functionName: lysc_node_child
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 13
    functionsReached:
    - lysc_node_child_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_node_child(const struct lysc_node *node)'
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1525
    functionDepth: 0
    functionLinenumber: 1525
    functionLinenumberEnd: 1552
    functionName: lysc_node_musts_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_must
    signature: 'struct lysc_must **

      lysc_node_musts_p(const struct lysc_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_musts_p
      Src: /src/libyang/src/tree_schema_helpers.c:1559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1554
    functionDepth: 1
    functionLinenumber: 1554
    functionLinenumberEnd: 1565
    functionName: lysc_node_musts
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - lysc_node_musts_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lysc_node_musts(const struct lysc_node *node)'
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1567
    functionDepth: 0
    functionLinenumber: 1567
    functionLinenumberEnd: 1598
    functionName: lysc_node_when_p
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_when
    signature: 'struct lysc_when ***

      lysc_node_when_p(const struct lysc_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_when_p
      Src: /src/libyang/src/tree_schema_helpers.c:1605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1600
    functionDepth: 1
    functionLinenumber: 1600
    functionLinenumberEnd: 1611
    functionName: lysc_node_when
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 4
    functionsReached:
    - lysc_node_when_p
    linkageType: ''
    returnType: API
    signature: 'API **

      lysc_node_when(const struct lysc_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - mod
    argTypes:
    - struct ly_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1613
    functionDepth: 0
    functionLinenumber: 1613
    functionLinenumberEnd: 1622
    functionName: lysp_find_module
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      lysp_find_module(struct ly_ctx *ctx, const struct lysp_module *mod)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1655,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1656,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1660,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1665,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1666,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1671,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1672,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1675,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1677,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1683,1
    - Dst: IF_KW_PREFIX
      Src: /src/libyang/src/tree_schema_helpers.c:1684,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1685,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1688,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1694,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1695,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1697,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1703,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1704,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1708,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1709,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1712,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1713,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1717,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1722,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1723,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1726,1
    - Dst: IF_KW_PREFIX
      Src: /src/libyang/src/tree_schema_helpers.c:1727,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1728,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1735,1
    - Dst: IF_KW_PREFIX
      Src: /src/libyang/src/tree_schema_helpers.c:1736,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1737,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1748,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1749,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1753,1
    - Dst: IF_KW_PREFIX
      Src: /src/libyang/src/tree_schema_helpers.c:1754,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1755,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1761,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1762,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1766,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1771,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1772,1
    - Dst: IF_KW_PREFIX
      Src: /src/libyang/src/tree_schema_helpers.c:1774,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1775,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1785,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1786,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1790,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1791,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1795,1
    - Dst: IF_KW_PREFIX
      Src: /src/libyang/src/tree_schema_helpers.c:1796,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1797,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1803,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1804,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1807,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1808,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1811,1
    - Dst: IF_KW
      Src: /src/libyang/src/tree_schema_helpers.c:1812,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1819,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1822,1
    - Dst: MOVE_IN
      Src: /src/libyang/src/tree_schema_helpers.c:1825,1
    - Dst: isalnum
      Src: /src/libyang/src/tree_schema_helpers.c:1832,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 101
    argCount: 2
    argNames:
    - in
    - indent
    argTypes:
    - struct ly_in*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1624
    functionDepth: 1
    functionLinenumber: 1624
    functionLinenumberEnd: 1845
    functionName: lysp_match_kw
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - isalnum
    - IF_KW_PREFIX
    - MOVE_IN
    - IF_KW
    linkageType: ''
    returnType: enum ly_stmt
    signature: enum ly_stmt lysp_match_kw(struct ly_in *in, uint64_t *indent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - COUNT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1633
    functionDepth: 0
    functionLinenumber: 1633
    functionLinenumberEnd: 1638
    functionName: MOVE_IN
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MOVE_IN(COUNT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - STR
    - ','
    - LEN
    - ','
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1638
    functionDepth: 0
    functionLinenumber: 1638
    functionLinenumberEnd: 1643
    functionName: IF_KW
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_KW(STR, LEN, STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - STR
    - ','
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1643
    functionDepth: 0
    functionLinenumber: 1643
    functionLinenumberEnd: 1646
    functionName: IF_KW_PREFIX
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IF_KW_PREFIX(STR, LEN)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_schema_helpers.c:1856,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/tree_schema_helpers.c:1865,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/tree_schema_helpers.c:1868,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:1870,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:1873,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_helpers.c:1879,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:1880,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:1887,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 4
    argNames:
    - ctx
    - ext
    - ext_mod
    - ext_def
    argTypes:
    - struct ly_ctx*
    - struct lysp_ext_instance*
    - struct lys_module**
    - struct lysp_ext**
    assertStmts:
    - condition: (ext_def)
      pos:
        line_end: 1855
        line_start: 1855
        source_file: /src/libyang/src/tree_schema_helpers.c
    constantsTouched: []
    func_position:
      end: 1895
      start: 1847
    functionDepth: 1
    functionLinenumber: 1847
    functionLinenumberEnd: 1895
    functionName: lysp_ext_find_definition
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - ly_resolve_prefix
    - ly_parse_nodeid
    - strcmp
    - LY_ARRAY_FOR
    - LOGVAL
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_ext_find_definition(const struct ly_ctx *ctx, const struct
      lysp_ext_instance *ext, const struct lys_module **ext_mod,\n        struct lysp_ext
      **ext_def)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/tree_schema_helpers.c:1919,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/tree_schema_helpers.c:1920,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:1921,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/tree_schema_helpers.c:1929,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/tree_schema_helpers.c:1931,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/tree_schema_helpers.c:1932,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:1933,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_schema_helpers.c:1942,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_schema_helpers.c:1950,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_schema_helpers.c:1950,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_schema_helpers.c:1957,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - ext_p
    - ext_def
    argTypes:
    - struct ly_ctx*
    - struct lysp_ext_instance*
    - struct lysp_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1897
    functionDepth: 4
    functionLinenumber: 1897
    functionLinenumberEnd: 1963
    functionName: lysp_ext_instance_resolve_argument
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 1
    functionsReached:
    - ly_resolve_prefix
    - ly_strncmp
    - ly_parse_nodeid
    - strcmp
    - LY_CHECK_RET
    - LOGVAL
    - lydict_insert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_ext_instance_resolve_argument(struct ly_ctx *ctx, struct
      lysp_ext_instance *ext_p, struct lysp_ext *ext_def)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_schema_helpers.c:1968,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_schema_helpers.c:1970,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_schema_helpers.c:1976,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ext
    - index
    - substmt
    argTypes:
    - struct lysp_ext_instance*
    - LY_ARRAY_COUNT_TYPE
    - enum ly_stmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1977
      start: 1965
    functionDepth: 1
    functionLinenumber: 1965
    functionLinenumberEnd: 1977
    functionName: lysp_ext_instance_iter
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: LY_ARRAY_COUNT_TYPE
    signature: LY_ARRAY_COUNT_TYPE lysp_ext_instance_iter(struct lysp_ext_instance
      *ext, LY_ARRAY_COUNT_TYPE index, enum ly_stmt substmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - schema
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1979
    functionDepth: 0
    functionLinenumber: 1979
    functionLinenumberEnd: 1991
    functionName: lysc_data_node
    functionSourceFile: /src/libyang/src/tree_schema_helpers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_node
    signature: 'struct lysc_node *

      lysc_data_node(const struct lysc_node *schema)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ns
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: IS_YIN_NS
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_YIN_NS(ns)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: yin_attr2str
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: yin_attr2str(STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - kw
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: isdevsub
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isdevsub(kw)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/parser_yin.c:187,1
    - Dst: IS_YIN_NS
      Src: /src/libyang/src/parser_yin.c:189,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:197,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/src/parser_yin.c:197,1
    - Dst: lysp_match_kw
      Src: /src/libyang/src/parser_yin.c:199,1
    - Dst: ly_in_free
      Src: /src/libyang/src/parser_yin.c:201,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_yin.c:210,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 6
    argNames:
    - ctx
    - name
    - name_len
    - prefix
    - prefix_len
    - parent
    argTypes:
    - struct lys_yin_parser_ctx*
    - char*
    - size_t
    - char*
    - size_t
    - enum ly_stmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 216
    functionName: yin_match_keyword
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 2
    functionsReached:
    - ly_in_free
    - lysp_match_kw
    - ly_in_new_memory
    - LY_CHECK_RET
    - lyxml_ns_get
    - strncmp
    - IS_YIN_NS
    linkageType: ''
    returnType: enum ly_stmt
    signature: "enum ly_stmt yin_match_keyword(struct lys_yin_parser_ctx *ctx, const
      char *name, size_t name_len,\n        const char *prefix, size_t prefix_len,
      enum ly_stmt parent)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:232,1
    - Dst: READ_INC
      Src: /src/libyang/src/parser_yin.c:240,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:241,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:242,1
    - Dst: READ_INC
      Src: /src/libyang/src/parser_yin.c:247,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:248,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:249,1
    - Dst: READ_INC
      Src: /src/libyang/src/parser_yin.c:254,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:255,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:256,1
    - Dst: READ_INC
      Src: /src/libyang/src/parser_yin.c:261,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:262,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:263,1
    - Dst: READ_INC
      Src: /src/libyang/src/parser_yin.c:268,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:269,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:270,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:271,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:272,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:273,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:275,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:276,1
    - Dst: READ_INC
      Src: /src/libyang/src/parser_yin.c:281,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:282,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:283,1
    - Dst: READ_INC
      Src: /src/libyang/src/parser_yin.c:288,1
    - Dst: ARG_CHECK
      Src: /src/libyang/src/parser_yin.c:289,1
    - Dst: ARG_SET
      Src: /src/libyang/src/parser_yin.c:290,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 58
    argCount: 2
    argNames:
    - name
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 305
    functionName: yin_match_argument_name
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - ARG_CHECK
    - ARG_SET
    - READ_INC
    linkageType: ''
    returnType: enum yin_argument
    signature: enum yin_argument yin_match_argument_name(const char *name, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 235
    functionName: READ_INC
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: READ_INC(LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 236
    functionName: ARG_SET
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_SET(STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - STR
    - ','
    - LEN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 237
    functionName: ARG_CHECK
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ARG_CHECK(STR, LEN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - kw
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: IS_NODE_ELEM
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_NODE_ELEM(kw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - kw
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 313
    functionName: HAS_META
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HAS_META(kw)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HAS_META
      Src: /src/libyang/src/parser_yin.c:324,1
    - Dst: free
      Src: /src/libyang/src/parser_yin.c:325,1
    - Dst: free
      Src: /src/libyang/src/parser_yin.c:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - count
    - subelems
    argTypes:
    - size_t
    - struct yin_subelement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 330
    functionName: subelems_deallocator
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - free
    - HAS_META
    linkageType: ''
    returnType: void
    signature: void subelems_deallocator(size_t count, struct yin_subelement *subelems)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:348,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:349,1
    - Dst: va_start
      Src: /src/libyang/src/parser_yin.c:351,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:354,1
    - Dst: IS_NODE_ELEM
      Src: /src/libyang/src/parser_yin.c:356,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:358,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:359,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:361,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:365,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:366,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:367,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:368,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:372,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:373,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:374,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:375,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:379,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:380,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:382,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:385,1
    - Dst: va_arg
      Src: /src/libyang/src/parser_yin.c:388,1
    - Dst: va_end
      Src: /src/libyang/src/parser_yin.c:390,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:395,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:396,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 4
    argNames:
    - ctx
    - count
    - parent
    - result
    argTypes:
    - struct lys_yin_parser_ctx*
    - size_t
    - struct lysp_node*
    - struct yin_subelement**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 342
    functionDepth: 2
    functionLinenumber: 342
    functionLinenumberEnd: 398
    functionName: subelems_allocator
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - va_arg
    - va_start
    - va_end
    - LY_CHECK_GOTO
    - subelems_deallocator
    - LOGMEM
    - calloc
    - IS_NODE_ELEM
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR subelems_allocator(struct lys_yin_parser_ctx *ctx, size_t count,
      struct lysp_node *parent,\n        struct yin_subelement **result, ...)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:417,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:421,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/parser_yin.c:421,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:422,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:426,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/src/parser_yin.c:426,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:429,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/src/parser_yin.c:429,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:433,1
    - Dst: lysp_check_stringchar
      Src: /src/libyang/src/parser_yin.c:433,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:438,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_yin.c:438,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:444,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - val_type
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum yang_arg
    assertStmts:
    - condition: ((ctx->xmlctx->status == LYXML_ELEM_CONTENT) || (ctx->xmlctx->status
        == LYXML_ATTR_CONTENT))
      pos:
        line_end: 416
        line_start: 416
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 449
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 449
    functionName: yin_validate_value
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_RET
    - ly_getutf8
    - LOGINT
    - lysp_check_identifierchar
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - lysp_check_stringchar
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_validate_value(struct lys_yin_parser_ctx *ctx, enum yang_arg
      val_type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yin_match_argument_name
      Src: /src/libyang/src/parser_yin.c:474,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:477,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:477,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:479,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:479,1
    - Dst: yin_attr2str
      Src: /src/libyang/src/parser_yin.c:480,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:480,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:484,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:484,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:485,1
    - Dst: yin_validate_value
      Src: /src/libyang/src/parser_yin.c:485,1
    - Dst: INSERT_STRING_RET
      Src: /src/libyang/src/parser_yin.c:486,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:487,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:489,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:490,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:495,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:495,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:499,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:499,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:504,1
    - Dst: yin_attr2str
      Src: /src/libyang/src/parser_yin.c:505,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:505,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 5
    argNames:
    - ctx
    - arg_type
    - arg_val
    - val_type
    - current_element
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum yin_argument
    - char**
    - enum yang_arg
    - enum ly_stmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 463
    functionDepth: 5
    functionLinenumber: 463
    functionLinenumberEnd: 510
    functionName: yin_parse_attribute
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - yin_match_argument_name
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - INSERT_STRING_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - yin_validate_value
    - yin_attr2str
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_attribute(struct lys_yin_parser_ctx *ctx, enum yin_argument
      arg_type, const char **arg_val, enum yang_arg val_type,\n        enum ly_stmt
      current_element)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - type
    - array_size
    - array
    argTypes:
    - enum ly_stmt
    - LY_ARRAY_COUNT_TYPE
    - struct yin_subelement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 530
    functionName: get_record
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct yin_subelement
    signature: 'struct yin_subelement *

      get_record(enum ly_stmt type, LY_ARRAY_COUNT_TYPE array_size, struct yin_subelement
      *array)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:549,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:550,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - subelem_info
    - subelem_info_size
    - current_element
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct yin_subelement*
    - signed char
    - enum ly_stmt
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 556
    functionName: yin_check_subelem_mandatory_constraint
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_check_subelem_mandatory_constraint(struct lys_yin_parser_ctx
      *ctx, struct yin_subelement *subelem_info,\n        signed char subelem_info_size,
      enum ly_stmt current_element)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:576,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:577,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - subelem_info
    - subelem_info_size
    - current_element
    - exp_first
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct yin_subelement*
    - signed char
    - enum ly_stmt
    - struct yin_subelement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 583
    functionName: yin_check_subelem_first_constraint
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LOGVAL_PARSER
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_check_subelem_first_constraint(struct lys_yin_parser_ctx
      *ctx, struct yin_subelement *subelem_info,\n        signed char subelem_info_size,
      enum ly_stmt current_element,\n        struct yin_subelement *exp_first)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:601,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:601,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:602,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:602,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:607,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - ctx
    - kw
    - value
    - arg_type
    - arg_val_type
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - char**
    - enum yin_argument
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 597
    functionDepth: 6
    functionLinenumber: 597
    functionLinenumberEnd: 608
    functionName: yin_parse_simple_element
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_simple_element(struct lys_yin_parser_ctx *ctx, enum
      ly_stmt kw, const char **value,\n        enum yin_argument arg_type, enum yang_arg
      arg_val_type, struct lysp_ext_instance **exts)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:624,1
    - Dst: yin_parse_simple_element
      Src: /src/libyang/src/parser_yin.c:624,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/parser_yin.c:625,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:627,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - kw
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 618
    functionDepth: 7
    functionLinenumber: 618
    functionLinenumberEnd: 632
    functionName: yin_parse_path
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lydict_remove
    - yin_parse_simple_element
    - ly_path_parse
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_path(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      kw, struct lysp_type *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:648,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:649,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:649,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:650,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:650,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:651,1
    - Dst: malloc
      Src: /src/libyang/src/parser_yin.c:653,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:654,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:654,1
    - Dst: memmove
      Src: /src/libyang/src/parser_yin.c:655,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:656,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:659,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_yin.c:659,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:672,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 641
    functionDepth: 6
    functionLinenumber: 641
    functionLinenumberEnd: 673
    functionName: yin_parse_pattern
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - malloc
    - ly_sizeofarray
    - yin_parse_attribute
    - memmove
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert_zc
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - LOGMEM
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_pattern(struct lys_yin_parser_ctx *ctx, struct lysp_type
      *type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:689,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:689,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:690,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:690,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_yin.c:692,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:693,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:694,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yin.c:699,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:701,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:702,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:706,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:707,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:710,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:717,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:717,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 682
    functionDepth: 6
    functionLinenumber: 682
    functionLinenumberEnd: 718
    functionName: yin_parse_fracdigits
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strtoul
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_fracdigits(struct lys_yin_parser_ctx *ctx, struct
      lysp_type *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:732,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:734,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:734,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:735,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:735,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:736,1
    - Dst: lysp_check_enum_name
      Src: /src/libyang/src/parser_yin.c:736,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:736,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yin.c:737,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:737,1
    - Dst: CHECK_UNIQUENESS
      Src: /src/libyang/src/parser_yin.c:738,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:749,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 727
    functionDepth: 6
    functionLinenumber: 727
    functionLinenumberEnd: 750
    functionName: yin_parse_enum
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - CHECK_NONEMPTY
    - CHECK_UNIQUENESS
    - LY_ARRAY_NEW_RET
    - lysp_check_enum_name
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_enum(struct lys_yin_parser_ctx *ctx, struct lysp_type
      *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:764,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:766,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:766,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:767,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:767,1
    - Dst: CHECK_UNIQUENESS
      Src: /src/libyang/src/parser_yin.c:768,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:779,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 759
    functionDepth: 6
    functionLinenumber: 759
    functionLinenumberEnd: 780
    functionName: yin_parse_bit
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - CHECK_UNIQUENESS
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_bit(struct lys_yin_parser_ctx *ctx, struct lysp_type
      *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:800,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_yin.c:801,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:806,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:806,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:807,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:807,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:809,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - ctx
    - kw
    - values
    - arg_type
    - arg_val_type
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - char***
    - enum yin_argument
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 794
    functionDepth: 6
    functionLinenumber: 794
    functionLinenumberEnd: 810
    functionName: yin_parse_simple_elements
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_simple_elements(struct lys_yin_parser_ctx *ctx, enum
      ly_stmt kw, const char ***values, enum yin_argument arg_type,\n        enum
      yang_arg arg_val_type, struct lysp_ext_instance **exts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:828,1
    - Dst: yin_parse_simple_element
      Src: /src/libyang/src/parser_yin.c:828,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:831,1
    - Dst: yin_parse_simple_elements
      Src: /src/libyang/src/parser_yin.c:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - ctx
    - kw
    - subinfo
    - arg_type
    - arg_val_type
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct yin_subelement*
    - enum yin_argument
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 823
    functionDepth: 7
    functionLinenumber: 823
    functionLinenumberEnd: 836
    functionName: yin_parse_simple_elem
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - yin_parse_simple_elements
    - yin_parse_simple_element
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_simple_elem(struct lys_yin_parser_ctx *ctx, enum
      ly_stmt kw, struct yin_subelement *subinfo,\n        enum yin_argument arg_type,
      enum yang_arg arg_val_type, struct lysp_ext_instance **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:854,1
    - Dst: yin_parse_simple_elements
      Src: /src/libyang/src/parser_yin.c:854,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:858,1
    - Dst: yin_parse_simple_elements
      Src: /src/libyang/src/parser_yin.c:858,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_yin.c:861,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - parent
    - dest
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - void*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 847
    functionDepth: 7
    functionLinenumber: 847
    functionLinenumberEnd: 866
    functionName: yin_parse_base
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LOGINT
    - yin_parse_simple_elements
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_base(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      parent, void *dest, struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:884,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:884,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:885,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:885,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:886,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:888,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:889,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:891,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:894,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:896,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:896,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 875
    functionDepth: 6
    functionLinenumber: 875
    functionLinenumberEnd: 897
    functionName: yin_pasrse_reqinstance
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_pasrse_reqinstance(struct lys_yin_parser_ctx *ctx, struct
      lysp_type *type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:911,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:918,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:918,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:919,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:919,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:920,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:921,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:923,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:926,1
    - Dst: malloc
      Src: /src/libyang/src/parser_yin.c:929,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:929,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:930,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:930,1
    - Dst: strcpy
      Src: /src/libyang/src/parser_yin.c:931,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:932,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:936,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_yin.c:936,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:938,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - pat
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - char**
    - struct lysp_ext_instance**
    assertStmts:
    - condition: (**pat == 0x06)
      pos:
        line_end: 910
        line_start: 910
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 939
      start: 908
    functionDepth: 6
    functionLinenumber: 908
    functionLinenumberEnd: 939
    functionName: yin_parse_modifier
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - strcpy
    - malloc
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - lydict_insert_zc
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - LOGMEM
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_modifier(struct lys_yin_parser_ctx *ctx, const char
      **pat, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:951,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:962,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:962,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:963,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:963,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:966,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:966,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - restr_kw
    - restr
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct lysp_restr*
    assertStmts:
    - condition: (restr_kw == LY_STMT_MUST || restr_kw == LY_STMT_LENGTH || restr_kw
        == LY_STMT_RANGE)
      pos:
        line_end: 950
        line_start: 950
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 967
      start: 948
    functionDepth: 6
    functionLinenumber: 948
    functionLinenumberEnd: 967
    functionName: yin_parse_restriction
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_restriction(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      restr_kw, struct lysp_restr *restr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:980,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:981,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:981,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:982,1
    - Dst: yin_parse_restriction
      Src: /src/libyang/src/parser_yin.c:982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 977
    functionDepth: 7
    functionLinenumber: 977
    functionLinenumberEnd: 986
    functionName: yin_parse_range
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - yin_parse_restriction
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_range(struct lys_yin_parser_ctx *ctx, struct lysp_type
      *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:999,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:1000,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:1000,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1001,1
    - Dst: yin_parse_restriction
      Src: /src/libyang/src/parser_yin.c:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 996
    functionDepth: 7
    functionLinenumber: 996
    functionLinenumberEnd: 1005
    functionName: yin_parse_length
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - yin_parse_restriction
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_length(struct lys_yin_parser_ctx *ctx, struct lysp_type
      *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1020,1
    - Dst: yin_parse_restriction
      Src: /src/libyang/src/parser_yin.c:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - restrs
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_restr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1015
    functionDepth: 7
    functionLinenumber: 1015
    functionLinenumberEnd: 1022
    functionName: yin_parse_must
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_NEW_RET
    - yin_parse_restriction
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_must(struct lys_yin_parser_ctx *ctx, struct lysp_restr
      **restrs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1046,1
    - Dst: yin_parse_simple_element
      Src: /src/libyang/src/parser_yin.c:1049,1
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:1051,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1053,1
    - Dst: yin_parse_simple_element
      Src: /src/libyang/src/parser_yin.c:1055,1
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:1057,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1059,1
    - Dst: yin_parse_simple_element
      Src: /src/libyang/src/parser_yin.c:1061,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_yin.c:1066,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - kw
    - subinfo
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct yin_subelement*
    - struct lysp_ext_instance**
    assertStmts:
    - condition: (!(subinfo->flags & YIN_SUBELEM_UNIQUE))
      pos:
        line_end: 1050
        line_start: 1050
        source_file: /src/libyang/src/parser_yin.c
    - condition: (!(subinfo->flags & YIN_SUBELEM_UNIQUE))
      pos:
        line_end: 1056
        line_start: 1056
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 1068
      start: 1034
    functionDepth: 7
    functionLinenumber: 1034
    functionLinenumberEnd: 1068
    functionName: yin_parse_qname
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_NEW_RET
    - LOGINT
    - yin_parse_simple_element
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_qname(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      kw, struct yin_subelement *subinfo,\n        struct lysp_ext_instance **exts)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:1082,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1092,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1092,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1093,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1093,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1095,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1096,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:1096,1
    - Dst: strtol
      Src: /src/libyang/src/parser_yin.c:1103,1
    - Dst: INT64_C
      Src: /src/libyang/src/parser_yin.c:1104,1
    - Dst: INT64_C
      Src: /src/libyang/src/parser_yin.c:1104,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1105,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:1105,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yin.c:1109,1
    - Dst: UINT64_C
      Src: /src/libyang/src/parser_yin.c:1110,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1111,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:1111,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1117,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:1117,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1121,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:1121,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1130,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1137,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1137,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1140,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 3
    argNames:
    - ctx
    - kw
    - enm
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct lysp_type_enum*
    assertStmts:
    - condition: (kw == LY_STMT_POSITION || kw == LY_STMT_VALUE)
      pos:
        line_end: 1081
        line_start: 1081
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 1142
      start: 1079
    functionDepth: 6
    functionLinenumber: 1079
    functionLinenumberEnd: 1142
    functionName: yin_parse_value_pos
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strtoul
    - ly_sizeofarray
    - INT64_C
    - strcmp
    - yin_parse_attribute
    - strtol
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - UINT64_C
    - ly_stmt2str
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_value_pos(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      kw, struct lysp_type_enum *enm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1162,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1162,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1163,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1163,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1165,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1167,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1170,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1172,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - submod
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_submodule*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1153
    functionDepth: 6
    functionLinenumber: 1153
    functionLinenumberEnd: 1173
    functionName: yin_parse_belongs_to
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_belongs_to(struct lys_yin_parser_ctx *ctx, struct
      lysp_submodule *submod, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:1189,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1197,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1197,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1198,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1198,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1201,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - elem_type
    - value
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - char**
    - struct lysp_ext_instance**
    assertStmts:
    - condition: (elem_type == LY_STMT_ORGANIZATION || elem_type == LY_STMT_CONTACT
        || elem_type == LY_STMT_DESCRIPTION || elem_type == LY_STMT_REFERENCE)
      pos:
        line_end: 1188
        line_start: 1188
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 1202
      start: 1186
    functionDepth: 6
    functionLinenumber: 1186
    functionLinenumberEnd: 1202
    functionName: yin_parse_meta
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_meta(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      elem_type, const char **value, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1222,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1222,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1223,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1223,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1225,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - value
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - char**
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1213
    functionDepth: 6
    functionLinenumber: 1213
    functionLinenumberEnd: 1226
    functionName: yin_parse_err_msg
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_err_msg(struct lys_yin_parser_ctx *ctx, const char
      **value, struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:1243,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:1244,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:1244,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1253,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1274,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1274,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1275,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1275,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1276,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - parent
    - subinfo
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct yin_subelement*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1237
    functionDepth: 6
    functionLinenumber: 1237
    functionLinenumberEnd: 1277
    functionName: yin_parse_type
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - LOGMEM
    - calloc
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_type(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      parent, struct yin_subelement *subinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1300,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1300,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1301,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1301,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_yin.c:1302,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1303,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1304,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1308,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yin.c:1310,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1312,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1313,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1317,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1318,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1323,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1324,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1324,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - max
    - flags
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint32_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1289
    functionDepth: 6
    functionLinenumber: 1289
    functionLinenumberEnd: 1325
    functionName: yin_parse_maxelements
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strtoul
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_maxelements(struct lys_yin_parser_ctx *ctx, uint32_t
      *max, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1348,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1348,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1349,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1349,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1352,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1353,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_yin.c:1358,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1360,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1361,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1365,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1366,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1370,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1371,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1371,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - ctx
    - min
    - flags
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint32_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 1337
    functionDepth: 6
    functionLinenumber: 1337
    functionLinenumberEnd: 1372
    functionName: yin_parse_minelements
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strtoul
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_minelements(struct lys_yin_parser_ctx *ctx, uint32_t
      *min, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:1387,1
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:1388,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1412,1
    - Dst: yin_parse_maxelements
      Src: /src/libyang/src/parser_yin.c:1412,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1414,1
    - Dst: yin_parse_minelements
      Src: /src/libyang/src/parser_yin.c:1414,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - parent
    - current
    - dest
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - enum ly_stmt
    - void*
    assertStmts:
    - condition: (current == LY_STMT_MAX_ELEMENTS || current == LY_STMT_MIN_ELEMENTS)
      pos:
        line_end: 1386
        line_start: 1386
        source_file: /src/libyang/src/parser_yin.c
    - condition: (parent == LY_STMT_LEAF_LIST || parent == LY_STMT_REFINE || parent
        == LY_STMT_LIST || parent == LY_STMT_DEVIATE)
      pos:
        line_end: 1387
        line_start: 1387
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 1418
      start: 1384
    functionDepth: 7
    functionLinenumber: 1384
    functionLinenumberEnd: 1418
    functionName: yin_parse_minmax
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - yin_parse_minelements
    - yin_parse_maxelements
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_minmax(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      parent, enum ly_stmt current, void *dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1437,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1437,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1438,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1438,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1439,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1441,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1444,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1446,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1449,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1451,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1429
    functionDepth: 6
    functionLinenumber: 1429
    functionLinenumberEnd: 1452
    functionName: yin_parse_orderedby
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_orderedby(struct lys_yin_parser_ctx *ctx, uint16_t
      *flags, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1469,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1474,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1474,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1475,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1475,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1489,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - any_kw
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1463
    functionDepth: 6
    functionLinenumber: 1463
    functionLinenumberEnd: 1490
    functionName: yin_parse_any
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_any(struct lys_yin_parser_ctx *ctx, enum ly_stmt any_kw,
      struct tree_node_meta *node_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1506,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1511,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1511,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1512,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1512,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1530,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1500
    functionDepth: 6
    functionLinenumber: 1500
    functionLinenumberEnd: 1531
    functionName: yin_parse_leaf
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_leaf(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *node_meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1546,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1552,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1552,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1553,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1553,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1573,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1573,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1573,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1577,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1581,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1541
    functionDepth: 6
    functionLinenumber: 1541
    functionLinenumberEnd: 1586
    functionName: yin_parse_leaflist
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - yin_parse_content
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_leaflist(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *node_meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1602,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1605,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1605,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1606,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1606,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1619,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1619,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1619,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1624,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_yin.c:1624,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - typedef_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1596
    functionDepth: 6
    functionLinenumber: 1596
    functionLinenumberEnd: 1628
    functionName: yin_parse_typedef
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - ly_set_add
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_typedef(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *typedef_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1644,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1647,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1647,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1648,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1648,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yin.c:1649,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:1649,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1666,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - refines
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_refine**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1638
    functionDepth: 6
    functionLinenumber: 1638
    functionLinenumberEnd: 1667
    functionName: yin_parse_refine
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - CHECK_NONEMPTY
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_refine(struct lys_yin_parser_ctx *ctx, struct lysp_refine
      **refines)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1683,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1688,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1688,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1689,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1689,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1704,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1704,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1707
      start: 1677
    functionDepth: 6
    functionLinenumber: 1677
    functionLinenumberEnd: 1707
    functionName: yin_parse_uses
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_uses(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *node_meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1724,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1727,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1727,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1728,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1728,1
    - Dst: lysp_check_date
      Src: /src/libyang/src/parser_yin.c:1730,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:1730,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1731,1
    - Dst: memcpy
      Src: /src/libyang/src/parser_yin.c:1734,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1735,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1744,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - revs
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_revision**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1717
    functionDepth: 6
    functionLinenumber: 1717
    functionLinenumberEnd: 1745
    functionName: yin_parse_revision
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysp_check_date
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - memcpy
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_revision(struct lys_yin_parser_ctx *ctx, struct lysp_revision
      **revs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1761,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1764,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1764,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1765,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1765,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1769,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/parser_yin.c:1769,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1770,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1782,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1782,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - inc_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct include_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1755
    functionDepth: 6
    functionLinenumber: 1755
    functionLinenumberEnd: 1783
    functionName: yin_parse_include
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - ly_ctx_get_module_latest
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_include(struct lys_yin_parser_ctx *ctx, struct include_meta
      *inc_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1802,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1802,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1803,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1803,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:1804,1
    - Dst: lysp_check_date
      Src: /src/libyang/src/parser_yin.c:1804,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:1804,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1805,1
    - Dst: strcpy
      Src: /src/libyang/src/parser_yin.c:1807,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1808,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1810,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - rev
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - char*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1794
    functionDepth: 6
    functionLinenumber: 1794
    functionLinenumberEnd: 1811
    functionName: yin_parse_revision_date
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysp_check_date
    - LY_CHECK_ERR_RET
    - strcpy
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_revision_date(struct lys_yin_parser_ctx *ctx, char
      *rev, struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1830,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1830,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1831,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1831,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1832,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1834,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1837,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1839,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1842,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1844,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1844,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1822
    functionDepth: 6
    functionLinenumber: 1822
    functionLinenumberEnd: 1845
    functionName: yin_parse_config
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_config(struct lys_yin_parser_ctx *ctx, uint16_t *flags,
      struct lysp_ext_instance **exts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1864,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1864,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1865,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1865,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1866,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1868,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1871,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1873,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1876,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1878,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1878,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - version
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint8_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1856
    functionDepth: 6
    functionLinenumber: 1856
    functionLinenumberEnd: 1879
    functionName: yin_parse_yangversion
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_yangversion(struct lys_yin_parser_ctx *ctx, uint8_t
      *version, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:1895,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1906,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1906,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1907,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1907,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1908,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1908,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1908,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1910,1
    - Dst: lysp_check_prefix
      Src: /src/libyang/src/parser_yin.c:1910,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - imp_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct import_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1889
    functionDepth: 6
    functionLinenumber: 1889
    functionLinenumberEnd: 1913
    functionName: yin_parse_import
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - lysp_check_prefix
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_import(struct lys_yin_parser_ctx *ctx, struct import_meta
      *imp_meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1932,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1932,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1933,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1933,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1934,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1936,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1939,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1941,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1944,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1946,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1946,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1947
      start: 1924
    functionDepth: 6
    functionLinenumber: 1924
    functionLinenumberEnd: 1947
    functionName: yin_parse_mandatory
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_mandatory(struct lys_yin_parser_ctx *ctx, uint16_t
      *flags, struct lysp_ext_instance **exts)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1966,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:1966,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:1967,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:1967,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1968,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1970,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:1972,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:1975,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1977,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:1980,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:1982,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:1982,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1958
    functionDepth: 6
    functionLinenumber: 1958
    functionLinenumberEnd: 1983
    functionName: yin_parse_status
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_status(struct lys_yin_parser_ctx *ctx, uint16_t *flags,
      struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:1997,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:1998,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:1998,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2000,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:2001,1
    - Dst: free
      Src: /src/libyang/src/parser_yin.c:2001,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2003,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:2004,1
    - Dst: free
      Src: /src/libyang/src/parser_yin.c:2004,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2013,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2013,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - when_p
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_when**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 1991
    functionDepth: 6
    functionLinenumber: 1991
    functionLinenumberEnd: 2014
    functionName: yin_parse_when
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - ly_sizeofarray
    - free
    - yin_parse_attribute
    - yin_parse_content
    - LOGMEM
    - calloc
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_when(struct lys_yin_parser_ctx *ctx, struct lysp_when
      **when_p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2034,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2034,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2035,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2035,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:2036,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:2038,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:2041,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:2043,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:2046,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2048,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2048,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - flags
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2026
    functionDepth: 6
    functionLinenumber: 2026
    functionLinenumberEnd: 2049
    functionName: yin_parse_yin_element
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_yin_element(struct lys_yin_parser_ctx *ctx, uint16_t
      *flags, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2068,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2068,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2069,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2069,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2071,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - arg_meta
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct yin_argument_meta*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 2060
    functionDepth: 6
    functionLinenumber: 2060
    functionLinenumberEnd: 2072
    functionName: yin_parse_argument
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_argument(struct lys_yin_parser_ctx *ctx, struct yin_argument_meta
      *arg_meta, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2087,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2088,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2088,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2089,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2089,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2100,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - extensions
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_ext**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2082
    functionDepth: 6
    functionLinenumber: 2082
    functionLinenumberEnd: 2101
    functionName: yin_parse_extension
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_extension(struct lys_yin_parser_ctx *ctx, struct lysp_ext
      **extensions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2117,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2120,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2120,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2121,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2121,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2132,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - features
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_feature**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2133
      start: 2111
    functionDepth: 6
    functionLinenumber: 2111
    functionLinenumberEnd: 2133
    functionName: yin_parse_feature
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_feature(struct lys_yin_parser_ctx *ctx, struct lysp_feature
      **features)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2149,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2152,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2152,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2153,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2153,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2165,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - identities
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_ident**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2143
    functionDepth: 6
    functionLinenumber: 2143
    functionLinenumberEnd: 2166
    functionName: yin_parse_identity
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_identity(struct lys_yin_parser_ctx *ctx, struct lysp_ident
      **identities)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2184,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2189,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2189,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2190,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2190,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2193,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2193,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2219,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2220,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2221,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:2224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2229
      start: 2176
    functionDepth: 6
    functionLinenumber: 2176
    functionLinenumberEnd: 2229
    functionName: yin_parse_list
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - yin_parse_content
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_list(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *node_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2249,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2254,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2254,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2255,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2255,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2258,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2258,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2276,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2277,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - notif_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2239
    functionDepth: 6
    functionLinenumber: 2239
    functionLinenumberEnd: 2281
    functionName: yin_parse_notification
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_notification(struct lys_yin_parser_ctx *ctx, struct
      tree_node_meta *notif_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2301,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2306,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2306,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2307,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2307,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2310,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2310,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2327,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - gr_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2331
      start: 2291
    functionDepth: 6
    functionLinenumber: 2291
    functionLinenumberEnd: 2331
    functionName: yin_parse_grouping
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_grouping(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *gr_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2350,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2355,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2355,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2356,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2356,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2359,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2359,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2381,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2385
      start: 2341
    functionDepth: 6
    functionLinenumber: 2341
    functionLinenumberEnd: 2385
    functionName: yin_parse_container
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_container(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *node_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2404,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2409,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2409,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2410,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2410,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2413,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2413,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2428,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2432
      start: 2395
    functionDepth: 6
    functionLinenumber: 2395
    functionLinenumberEnd: 2432
    functionName: yin_parse_case
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_case(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *node_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2451,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2457,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2457,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2458,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2458,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2461,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2461,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2479,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - node_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2482
      start: 2442
    functionDepth: 6
    functionLinenumber: 2442
    functionLinenumberEnd: 2482
    functionName: yin_parse_choice
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_choice(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *node_meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2501,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yin.c:2501,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yin.c:2501,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2506,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2506,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2507,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2507,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2510,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2510,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2523,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2524,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2525,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:2528,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:2528,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - inout_kw
    - inout_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct inout_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2533
      start: 2493
    functionDepth: 6
    functionLinenumber: 2493
    functionLinenumberEnd: 2533
    functionName: yin_parse_inout
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_insert
    - yin_parse_content
    - LOGVAL_PARSER
    - ly_stmt2str
    - subelems_deallocator
    - PARSER_CTX
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_inout(struct lys_yin_parser_ctx *ctx, enum ly_stmt
      inout_kw, struct inout_meta *inout_meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2553,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2558,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2558,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2559,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2559,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2562,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2562,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2572,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2573,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2574,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2580,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yin.c:2580,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yin.c:2580,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2585,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yin.c:2585,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yin.c:2585,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - act_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2589
      start: 2543
    functionDepth: 6
    functionLinenumber: 2543
    functionLinenumberEnd: 2589
    functionName: yin_parse_action
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_insert
    - yin_parse_content
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - PARSER_CTX
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_action(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *act_meta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2609,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2614,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2614,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2615,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2615,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yin.c:2616,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:2616,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2619,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:2619,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2637,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:2638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - aug_meta
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct tree_node_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2599
    functionDepth: 6
    functionLinenumber: 2599
    functionLinenumberEnd: 2641
    functionName: yin_parse_augment
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - CHECK_NONEMPTY
    - subelems_deallocator
    - LY_LIST_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_augment(struct lys_yin_parser_ctx *ctx, struct tree_node_meta
      *aug_meta)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2663,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2663,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2664,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2664,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:2666,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:2668,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:2670,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:2672,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:2675,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:2677,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_yin.c:2680,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:2683,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:2684,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:2684,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2688,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2688,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:2691,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:2692,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:2692,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2707,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2707,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:2710,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:2711,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:2711,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2725,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2725,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:2728,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:2729,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:2729,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2738,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2738,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:2740,1
    - Dst: LY_LIST_INSERT
      Src: /src/libyang/src/parser_yin.c:2744,1
    - Dst: free
      Src: /src/libyang/src/parser_yin.c:2749,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 2
    argNames:
    - ctx
    - deviates
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_deviate**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2751
      start: 2651
    functionDepth: 6
    functionLinenumber: 2651
    functionLinenumberEnd: 2751
    functionName: yin_parse_deviate
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_LIST_INSERT
    - ly_sizeofarray
    - strcmp
    - free
    - yin_parse_attribute
    - LY_CHECK_RET
    - lydict_remove
    - LOGVAL_PARSER
    - yin_parse_content
    - LY_CHECK_GOTO
    - LOGMEM
    - calloc
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_deviate(struct lys_yin_parser_ctx *ctx, struct lysp_deviate
      **deviates)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:2767,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2770,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2770,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2771,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2771,1
    - Dst: CHECK_NONEMPTY
      Src: /src/libyang/src/parser_yin.c:2772,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:2772,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:2780,1
    - Dst: ly_sizeofarray
      Src: /src/libyang/src/parser_yin.c:2780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - deviations
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_deviation**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2781
      start: 2761
    functionDepth: 6
    functionLinenumber: 2761
    functionLinenumberEnd: 2781
    functionName: yin_parse_deviation
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_sizeofarray
    - yin_parse_attribute
    - LY_CHECK_RET
    - yin_parse_content
    - CHECK_NONEMPTY
    - LY_ARRAY_NEW_RET
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_deviation(struct lys_yin_parser_ctx *ctx, struct lysp_deviation
      **deviations)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT
      Src: /src/libyang/src/parser_yin.c:2842,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 3
    argNames:
    - ctx
    - kw
    - group
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - enum yang_module_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2847
      start: 2792
    functionDepth: 1
    functionLinenumber: 2792
    functionLinenumberEnd: 2847
    functionName: kw2kw_group
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - LOGINT
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR kw2kw_group(struct lys_yin_parser_ctx *ctx, enum ly_stmt kw,
      enum yang_module_stmt *group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:2863,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2866,1
    - Dst: kw2kw_group
      Src: /src/libyang/src/parser_yin.c:2866,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2867,1
    - Dst: kw2kw_group
      Src: /src/libyang/src/parser_yin.c:2867,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:2870,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:2870,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:2870,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:2870,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ctx
    - kw
    - next_kw
    - parrent
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - enum ly_stmt
    - enum ly_stmt
    assertStmts:
    - condition: (parrent == LY_STMT_MODULE || parrent == LY_STMT_SUBMODULE)
      pos:
        line_end: 2862
        line_start: 2862
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 2875
      start: 2860
    functionDepth: 2
    functionLinenumber: 2860
    functionLinenumberEnd: 2875
    functionName: yin_check_relative_order
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - kw2kw_group
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_check_relative_order(struct lys_yin_parser_ctx *ctx, enum
      ly_stmt kw, enum ly_stmt next_kw, enum ly_stmt parrent)
  - BBCount: 73
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2891,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2891,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2920,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2920,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2925,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2925,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2950,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2950,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2955,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2955,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2959,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2959,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2963,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2963,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2966,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2966,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2970,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2970,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2973,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2973,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2982,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:2982,1
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:2985,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:2987,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:2987,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:2990,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:2991,1
    - Dst: yin_match_keyword
      Src: /src/libyang/src/parser_yin.c:2996,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:2999,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3000,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3003,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3003,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3007,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3007,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3008,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3008,1
    - Dst: INSERT_STRING_RET
      Src: /src/libyang/src/parser_yin.c:3012,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3013,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3016,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3016,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_yin.c:3024,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 117
    argCount: 3
    argNames:
    - ctx
    - elem_type
    - arg
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - char**
    assertStmts:
    - condition: (ctx->xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 2984
        line_start: 2984
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 3029
      start: 2886
    functionDepth: 6
    functionLinenumber: 2886
    functionLinenumberEnd: 3029
    functionName: yin_parse_extension_instance_arg
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 0
    functionsReached:
    - yin_match_keyword
    - LOGINT
    - yin_parse_attribute
    - LY_CHECK_RET
    - INSERT_STRING_RET
    - LOGVAL_PARSER
    - ly_stmt2str
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_extension_instance_arg(struct lys_yin_parser_ctx *ctx,
      enum ly_stmt elem_type, const char **arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:3047,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:3050,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yin.c:3051,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:3051,1
    - Dst: asprintf
      Src: /src/libyang/src/parser_yin.c:3055,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:3057,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3061,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_yin.c:3061,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3064,1
    - Dst: ly_store_prefix_data
      Src: /src/libyang/src/parser_yin.c:3064,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:3064,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3067,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yin.c:3067,1
    - Dst: yin_match_keyword
      Src: /src/libyang/src/parser_yin.c:3070,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3076,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3077,1
    - Dst: yin_parse_extension_instance_arg
      Src: /src/libyang/src/parser_yin.c:3082,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3083,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3085,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3085,1
    - Dst: calloc::calloc
      Src: /src/libyang/src/parser_yin.c:3089,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yin.c:3090,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/parser_yin.c:3090,1
    - Dst: last::last
      Src: /src/libyang/src/parser_yin.c:3097,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3100,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yin.c:3100,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3104,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3104,1
    - Dst: INSERT_STRING_RET
      Src: /src/libyang/src/parser_yin.c:3106,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yin.c:3107,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3109,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3109,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3111,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3111,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3116,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3116,1
    - Dst: yin_parse_element_generic
      Src: /src/libyang/src/parser_yin.c:3119,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3120,1
    - Dst: assert::assert
      Src: /src/libyang/src/parser_yin.c:3127,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3130,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3130,1
    - Dst: INSERT_STRING_RET
      Src: /src/libyang/src/parser_yin.c:3135,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yin.c:3136,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3139,1
    - Dst: ly_store_prefix_data
      Src: /src/libyang/src/parser_yin.c:3139,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:3139,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3144,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3144,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 74
    argCount: 3
    argNames:
    - ctx
    - parent
    - element
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - struct lysp_stmt**
    assertStmts:
    - condition: (ctx->xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 3046
        line_start: 3046
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 3149
      start: 3040
    functionDepth: 7
    functionLinenumber: 3040
    functionLinenumberEnd: 3149
    functionName: yin_parse_element_generic
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 2
    functionsReached:
    - yin_parse_element_generic
    - strlen
    - asprintf
    - lydict_insert
    - LY_CHECK_GOTO
    - calloc
    - LY_CHECK_ERR_GOTO
    - yin_match_keyword
    - LOGMEM::LOGMEM
    - INSERT_STRING_RET
    - ly_stmt2str
    - assert
    - last::last
    - ly_store_prefix_data
    - LOGVAL_PARSER
    - LOGMEM
    - assert::assert
    - yin_parse_extension_instance_arg
    - calloc::calloc
    - lydict_insert_zc
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_element_generic(struct lys_yin_parser_ctx *ctx, enum
      ly_stmt parent, struct lysp_stmt **element)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:3169,1
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:3170,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_yin.c:3172,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3175,1
    - Dst: asprintf
      Src: /src/libyang/src/parser_yin.c:3181,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:3183,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3186,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_yin.c:3186,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3189,1
    - Dst: ly_store_prefix_data
      Src: /src/libyang/src/parser_yin.c:3189,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:3189,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3195,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3195,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:3200,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3209,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_yin.c:3209,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3210,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3211,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3211,1
    - Dst: INSERT_STRING_RET
      Src: /src/libyang/src/parser_yin.c:3213,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3215,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3217,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3217,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3220,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3220,1
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:3224,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3226,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3226,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3228,1
    - Dst: yin_parse_element_generic
      Src: /src/libyang/src/parser_yin.c:3228,1
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:3236,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3237,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3237,1
    - Dst: INSERT_STRING_RET
      Src: /src/libyang/src/parser_yin.c:3241,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3242,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3245,1
    - Dst: ly_store_prefix_data
      Src: /src/libyang/src/parser_yin.c:3245,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:3245,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3249,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3249,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 60
    argCount: 4
    argNames:
    - ctx
    - subelem
    - subelem_index
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - enum ly_stmt
    - LY_ARRAY_COUNT_TYPE
    - struct lysp_ext_instance**
    assertStmts:
    - condition: (ctx->xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 3223
        line_start: 3223
        source_file: /src/libyang/src/parser_yin.c
    - condition: (ctx->xmlctx->status == LYXML_ELEM_CLOSE)
      pos:
        line_end: 3235
        line_start: 3235
        source_file: /src/libyang/src/parser_yin.c
    - condition: (exts)
      pos:
        line_end: 3169
        line_start: 3169
        source_file: /src/libyang/src/parser_yin.c
    - condition: (ctx->xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 3168
        line_start: 3168
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 3255
      start: 3161
    functionDepth: 8
    functionLinenumber: 3161
    functionLinenumberEnd: 3255
    functionName: yin_parse_extension_instance
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 1
    functionsReached:
    - yin_parse_element_generic
    - strlen
    - asprintf
    - lydict_insert_zc
    - LY_CHECK_RET
    - ly_store_prefix_data
    - INSERT_STRING_RET
    - LOGVAL_PARSER
    - calloc
    - lydict_insert
    - LY_ARRAY_NEW_RET
    - LOGMEM
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_extension_instance(struct lys_yin_parser_ctx *ctx,
      enum ly_stmt subelem, LY_ARRAY_COUNT_TYPE subelem_index,\n        struct lysp_ext_instance
      **exts)"
  - BBCount: 82
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_yin.c:3278,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3282,1
    - Dst: lyxml_ctx_peek
      Src: /src/libyang/src/parser_yin.c:3282,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3289,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3289,1
    - Dst: yin_match_keyword
      Src: /src/libyang/src/parser_yin.c:3295,1
    - Dst: get_record
      Src: /src/libyang/src/parser_yin.c:3299,1
    - Dst: isdevsub
      Src: /src/libyang/src/parser_yin.c:3301,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3302,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3302,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3304,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3305,1
    - Dst: yin_check_relative_order
      Src: /src/libyang/src/parser_yin.c:3313,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3314,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3320,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3320,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3320,1
    - Dst: yin_check_subelem_first_constraint
      Src: /src/libyang/src/parser_yin.c:3325,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3326,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3331,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3331,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3331,1
    - Dst: yin_parse_extension_instance
      Src: /src/libyang/src/parser_yin.c:3342,1
    - Dst: yin_parse_action
      Src: /src/libyang/src/parser_yin.c:3347,1
    - Dst: yin_parse_any
      Src: /src/libyang/src/parser_yin.c:3351,1
    - Dst: yin_parse_argument
      Src: /src/libyang/src/parser_yin.c:3354,1
    - Dst: yin_parse_augment
      Src: /src/libyang/src/parser_yin.c:3357,1
    - Dst: yin_parse_base
      Src: /src/libyang/src/parser_yin.c:3360,1
    - Dst: yin_parse_belongs_to
      Src: /src/libyang/src/parser_yin.c:3363,1
    - Dst: yin_parse_bit
      Src: /src/libyang/src/parser_yin.c:3366,1
    - Dst: yin_parse_case
      Src: /src/libyang/src/parser_yin.c:3369,1
    - Dst: yin_parse_choice
      Src: /src/libyang/src/parser_yin.c:3372,1
    - Dst: yin_parse_config
      Src: /src/libyang/src/parser_yin.c:3375,1
    - Dst: yin_parse_meta
      Src: /src/libyang/src/parser_yin.c:3381,1
    - Dst: yin_parse_container
      Src: /src/libyang/src/parser_yin.c:3384,1
    - Dst: yin_parse_qname
      Src: /src/libyang/src/parser_yin.c:3387,1
    - Dst: yin_parse_simple_elem
      Src: /src/libyang/src/parser_yin.c:3392,1
    - Dst: yin_parse_deviate
      Src: /src/libyang/src/parser_yin.c:3395,1
    - Dst: yin_parse_deviation
      Src: /src/libyang/src/parser_yin.c:3398,1
    - Dst: yin_parse_enum
      Src: /src/libyang/src/parser_yin.c:3401,1
    - Dst: yin_parse_err_msg
      Src: /src/libyang/src/parser_yin.c:3404,1
    - Dst: yin_parse_extension
      Src: /src/libyang/src/parser_yin.c:3407,1
    - Dst: yin_parse_feature
      Src: /src/libyang/src/parser_yin.c:3410,1
    - Dst: yin_parse_fracdigits
      Src: /src/libyang/src/parser_yin.c:3413,1
    - Dst: yin_parse_grouping
      Src: /src/libyang/src/parser_yin.c:3416,1
    - Dst: yin_parse_identity
      Src: /src/libyang/src/parser_yin.c:3419,1
    - Dst: yin_parse_qname
      Src: /src/libyang/src/parser_yin.c:3423,1
    - Dst: yin_parse_simple_elem
      Src: /src/libyang/src/parser_yin.c:3426,1
    - Dst: yin_parse_import
      Src: /src/libyang/src/parser_yin.c:3429,1
    - Dst: LOGWRN
      Src: /src/libyang/src/parser_yin.c:3433,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_yin.c:3433,1
    - Dst: yin_parse_include
      Src: /src/libyang/src/parser_yin.c:3436,1
    - Dst: yin_parse_inout
      Src: /src/libyang/src/parser_yin.c:3440,1
    - Dst: yin_parse_leaf
      Src: /src/libyang/src/parser_yin.c:3443,1
    - Dst: yin_parse_leaflist
      Src: /src/libyang/src/parser_yin.c:3446,1
    - Dst: yin_parse_length
      Src: /src/libyang/src/parser_yin.c:3449,1
    - Dst: yin_parse_list
      Src: /src/libyang/src/parser_yin.c:3452,1
    - Dst: yin_parse_mandatory
      Src: /src/libyang/src/parser_yin.c:3455,1
    - Dst: yin_parse_minmax
      Src: /src/libyang/src/parser_yin.c:3459,1
    - Dst: yin_parse_modifier
      Src: /src/libyang/src/parser_yin.c:3462,1
    - Dst: yin_parse_must
      Src: /src/libyang/src/parser_yin.c:3465,1
    - Dst: yin_parse_simple_elem
      Src: /src/libyang/src/parser_yin.c:3468,1
    - Dst: yin_parse_notification
      Src: /src/libyang/src/parser_yin.c:3471,1
    - Dst: yin_parse_orderedby
      Src: /src/libyang/src/parser_yin.c:3474,1
    - Dst: yin_parse_path
      Src: /src/libyang/src/parser_yin.c:3477,1
    - Dst: yin_parse_pattern
      Src: /src/libyang/src/parser_yin.c:3480,1
    - Dst: yin_parse_value_pos
      Src: /src/libyang/src/parser_yin.c:3484,1
    - Dst: yin_parse_simple_elem
      Src: /src/libyang/src/parser_yin.c:3487,1
    - Dst: yin_parse_range
      Src: /src/libyang/src/parser_yin.c:3490,1
    - Dst: yin_parse_refine
      Src: /src/libyang/src/parser_yin.c:3493,1
    - Dst: yin_pasrse_reqinstance
      Src: /src/libyang/src/parser_yin.c:3496,1
    - Dst: yin_parse_revision
      Src: /src/libyang/src/parser_yin.c:3499,1
    - Dst: yin_parse_revision_date
      Src: /src/libyang/src/parser_yin.c:3502,1
    - Dst: yin_parse_status
      Src: /src/libyang/src/parser_yin.c:3505,1
    - Dst: yin_parse_type
      Src: /src/libyang/src/parser_yin.c:3508,1
    - Dst: yin_parse_typedef
      Src: /src/libyang/src/parser_yin.c:3511,1
    - Dst: yin_parse_uses
      Src: /src/libyang/src/parser_yin.c:3514,1
    - Dst: yin_parse_when
      Src: /src/libyang/src/parser_yin.c:3517,1
    - Dst: yin_parse_yangversion
      Src: /src/libyang/src/parser_yin.c:3520,1
    - Dst: yin_parse_yin_element
      Src: /src/libyang/src/parser_yin.c:3523,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3528,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3528,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3530,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3530,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3531,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3531,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:3533,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_yin.c:3536,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3539,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3542,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3542,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3545,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3549,1
    - Dst: yin_validate_value
      Src: /src/libyang/src/parser_yin.c:3549,1
    - Dst: INSERT_STRING_RET
      Src: /src/libyang/src/parser_yin.c:3551,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3552,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3555,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3555,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3559,1
    - Dst: yin_check_subelem_mandatory_constraint
      Src: /src/libyang/src/parser_yin.c:3559,1
    CyclomaticComplexity: 77
    EdgeCount: 77
    ICount: 257
    argCount: 6
    argNames:
    - ctx
    - subelem_info
    - subelem_info_size
    - current_element
    - text_content
    - exts
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct yin_subelement*
    - size_t
    - enum ly_stmt
    - char**
    - struct lysp_ext_instance**
    assertStmts:
    - condition: (ctx->xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 3277
        line_start: 3277
        source_file: /src/libyang/src/parser_yin.c
    constantsTouched: []
    func_position:
      end: 3563
      start: 3269
    functionDepth: 9
    functionLinenumber: 3269
    functionLinenumberEnd: 3563
    functionName: yin_parse_content
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 51
    functionsReached:
    - yin_parse_case
    - yin_parse_augment
    - yin_parse_revision_date
    - yin_parse_meta
    - yin_parse_qname
    - yin_parse_deviation
    - yin_parse_any
    - yin_parse_simple_elem
    - LY_CHECK_RET
    - yin_parse_length
    - yin_parse_notification
    - yin_parse_minmax
    - LY_CHECK_GOTO
    - get_record
    - yin_parse_refine
    - isdevsub
    - LOGWRN
    - yin_parse_argument
    - yin_parse_deviate
    - yin_match_keyword
    - yin_parse_inout
    - yin_parse_belongs_to
    - yin_parse_enum
    - yin_parse_status
    - yin_parse_typedef
    - yin_parse_choice
    - yin_parse_leaf
    - yin_parse_yangversion
    - INSERT_STRING_RET
    - yin_parse_must
    - yin_parse_content
    - ly_stmt2str
    - yin_parse_bit
    - yin_parse_range
    - assert
    - yin_check_subelem_mandatory_constraint
    - yin_parse_err_msg
    - yin_parse_container
    - yin_check_relative_order
    - yin_parse_mandatory
    - yin_parse_config
    - yin_parse_extension
    - yin_parse_base
    - yin_pasrse_reqinstance
    - yin_parse_identity
    - yin_parse_leaflist
    - yin_parse_orderedby
    - yin_parse_pattern
    - yin_parse_fracdigits
    - yin_parse_type
    - LOGVAL_PARSER
    - yin_parse_uses
    - yin_parse_yin_element
    - yin_parse_path
    - yin_parse_feature
    - yin_parse_import
    - yin_parse_value_pos
    - yin_validate_value
    - PARSER_CTX
    - yin_parse_revision
    - yin_parse_when
    - yin_parse_include
    - yin_parse_extension_instance
    - yin_check_subelem_first_constraint
    - LOGINT
    - lyxml_ctx_peek
    - yin_parse_grouping
    - yin_parse_action
    - yin_parse_modifier
    - yin_parse_list
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_content(struct lys_yin_parser_ctx *ctx, struct yin_subelement
      *subelem_info, size_t subelem_info_size,\n        enum ly_stmt current_element,
      const char **text_content, struct lysp_ext_instance **exts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3583,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3583,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3584,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:3584,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3585,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:3585,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:3615,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:3616,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3617,1
    - Dst: ly_ctx_get_submodule_latest
      Src: /src/libyang/src/parser_yin.c:3621,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - mod
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3628
      start: 3573
    functionDepth: 10
    functionLinenumber: 3573
    functionLinenumberEnd: 3628
    functionName: yin_parse_mod
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 1
    functionsReached:
    - ly_ctx_get_submodule_latest
    - subelems_allocator
    - yin_parse_attribute
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - yin_parse_content
    - subelems_deallocator
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_mod(struct lys_yin_parser_ctx *ctx, struct lysp_module
      *mod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3649,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_yin.c:3649,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3650,1
    - Dst: yin_parse_attribute
      Src: /src/libyang/src/parser_yin.c:3650,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3651,1
    - Dst: subelems_allocator
      Src: /src/libyang/src/parser_yin.c:3651,1
    - Dst: yin_parse_content
      Src: /src/libyang/src/parser_yin.c:3680,1
    - Dst: subelems_deallocator
      Src: /src/libyang/src/parser_yin.c:3681,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3682,1
    - Dst: ly_ctx_get_submodule_latest
      Src: /src/libyang/src/parser_yin.c:3686,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_yin.c:3687,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3688,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - submod
    argTypes:
    - struct lys_yin_parser_ctx*
    - struct lysp_submodule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3693
      start: 3639
    functionDepth: 10
    functionLinenumber: 3639
    functionLinenumberEnd: 3693
    functionName: yin_parse_submod
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 1
    functionsReached:
    - ly_ctx_get_submodule_latest
    - subelems_allocator
    - strcmp
    - yin_parse_attribute
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - yin_parse_content
    - subelems_deallocator
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_submod(struct lys_yin_parser_ctx *ctx, struct lysp_submodule
      *submod)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:3704,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:3705,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:3705,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3708,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/src/parser_yin.c:3708,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:3710,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yin.c:3711,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:3711,1
    - Dst: memcpy
      Src: /src/libyang/src/parser_yin.c:3717,1
    - Dst: memcpy
      Src: /src/libyang/src/parser_yin.c:3718,1
    - Dst: yin_match_keyword
      Src: /src/libyang/src/parser_yin.c:3721,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_yin.c:3724,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3728,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3728,1
    - Dst: yin_parse_submod
      Src: /src/libyang/src/parser_yin.c:3733,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3734,1
    - Dst: isspace
      Src: /src/libyang/src/parser_yin.c:3737,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yin.c:3739,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_yin.c:3741,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3744,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:3745,1
    - Dst: lysp_module_free
      Src: /src/libyang/src/parser_yin.c:3755,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/src/parser_yin.c:3756,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 5
    argNames:
    - yin_ctx
    - ctx
    - main_ctx
    - in
    - submod
    argTypes:
    - struct lys_yin_parser_ctx**
    - struct ly_ctx*
    - struct lys_parser_ctx*
    - struct ly_in*
    - struct lysp_submodule**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3760
      start: 3695
    functionDepth: 11
    functionLinenumber: 3695
    functionLinenumberEnd: 3760
    functionName: yin_parse_submodule
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 2
    functionsReached:
    - strlen
    - ly_in_skip
    - LY_CHECK_ERR_RET
    - yin_parse_submod
    - LOGERR
    - LY_CHECK_RET
    - LY_CHECK_GOTO
    - calloc
    - LY_CHECK_ERR_GOTO
    - yin_match_keyword
    - yin_parser_ctx_free
    - lysp_module_free
    - ly_stmt2str
    - LOGVAL_PARSER
    - LY_IN_NEW_LINE
    - LOGMEM
    - memcpy
    - isspace
    - lyxml_ctx_new
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR yin_parse_submodule(struct lys_yin_parser_ctx **yin_ctx, struct
      ly_ctx *ctx, struct lys_parser_ctx *main_ctx,\n        struct ly_in *in, struct
      lysp_submodule **submod)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:3770,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_yin.c:3771,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:3771,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_yin.c:3774,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/src/parser_yin.c:3774,1
    - Dst: calloc
      Src: /src/libyang/src/parser_yin.c:3776,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_yin.c:3777,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_yin.c:3777,1
    - Dst: yin_match_keyword
      Src: /src/libyang/src/parser_yin.c:3783,1
    - Dst: LOGERR
      Src: /src/libyang/src/parser_yin.c:3786,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3790,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_yin.c:3790,1
    - Dst: yin_parse_mod
      Src: /src/libyang/src/parser_yin.c:3796,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_yin.c:3797,1
    - Dst: isspace
      Src: /src/libyang/src/parser_yin.c:3800,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_yin.c:3802,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/parser_yin.c:3804,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_yin.c:3807,1
    - Dst: strlen
      Src: /src/libyang/src/parser_yin.c:3808,1
    - Dst: lysp_module_free
      Src: /src/libyang/src/parser_yin.c:3818,1
    - Dst: yin_parser_ctx_free
      Src: /src/libyang/src/parser_yin.c:3819,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 4
    argNames:
    - yin_ctx
    - in
    - mod
    - unres
    argTypes:
    - struct lys_yin_parser_ctx**
    - struct ly_in*
    - struct lys_module*
    - struct lys_glob_unres*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3823
      start: 3762
    functionDepth: 11
    functionLinenumber: 3762
    functionLinenumberEnd: 3823
    functionName: yin_parse_module
    functionSourceFile: /src/libyang/src/parser_yin.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - yin_match_keyword
    - ly_in_skip
    - LY_CHECK_ERR_RET
    - LOGERR
    - yin_parser_ctx_free
    - yin_parse_mod
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - isspace
    - LY_IN_NEW_LINE
    - ly_stmt2str
    - LY_CHECK_GOTO
    - lysp_module_free
    - lyxml_ctx_new
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_parse_module(struct lys_yin_parser_ctx **yin_ctx, struct
      ly_in *in, struct lys_module *mod, struct lys_glob_unres *unres)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - UNUSED(val1_p)
    - UNUSED(val2_p)
    - UNUSED
    - UNUSED(cb_data)
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 51
    functionName: lyb_hash_equal_cb
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyb_hash_equal_cb(void *UNUSED(val1_p), void *UNUSED(val2_p),
      ly_bool UNUSED(mod), void *UNUSED(cb_data))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - UNUSED
    - UNUSED(cb_data)
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 68
    functionName: lyb_ptr_equal_cb
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyb_ptr_equal_cb(void *val1_p, void *val2_p, ly_bool UNUSED(mod),
      void *UNUSED(cb_data))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyht_find
      Src: /src/libyang/src/printer_lyb.c:86,1
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:86,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/printer_lyb.c:91,1
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:95,1
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:95,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/printer_lyb.c:102,1
    - Dst: lyht_find_next
      Src: /src/libyang/src/printer_lyb.c:107,1
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:107,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/printer_lyb.c:109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - ht
    - sibling
    - ht_col_id
    - compare_col_id
    argTypes:
    - struct hash_table*
    - struct lysc_node*
    - LYB_HASH
    - LYB_HASH
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 80
    functionDepth: 4
    functionLinenumber: 80
    functionLinenumberEnd: 111
    functionName: lyb_hash_sequence_check
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyht_find
    - lyht_find_next
    - lyht_set_cb
    - lyb_get_hash
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_hash_sequence_check(struct hash_table *ht, struct lysc_node
      *sibling, LYB_HASH ht_col_id, LYB_HASH compare_col_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lyht_new
      Src: /src/libyang/src/printer_lyb.c:129,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_lyb.c:130,1
    - Dst: LOGMEM
      Src: /src/libyang/src/printer_lyb.c:130,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/printer_lyb.c:137,1
    - Dst: lys_getnext
      Src: /src/libyang/src/printer_lyb.c:141,1
    - Dst: lyb_hash_sequence_check
      Src: /src/libyang/src/printer_lyb.c:147,1
    - Dst: lyht_insert_with_resize_cb
      Src: /src/libyang/src/printer_lyb.c:157,1
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:157,1
    - Dst: lyb_hash_sequence_check
      Src: /src/libyang/src/printer_lyb.c:163,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/printer_lyb.c:165,1
    - Dst: lyht_insert
      Src: /src/libyang/src/printer_lyb.c:166,1
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:166,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_lyb.c:167,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/printer_lyb.c:168,1
    - Dst: lyht_free
      Src: /src/libyang/src/printer_lyb.c:169,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/printer_lyb.c:172,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_lyb.c:180,1
    - Dst: lyht_free
      Src: /src/libyang/src/printer_lyb.c:181,1
    - Dst: lyht_set_cb
      Src: /src/libyang/src/printer_lyb.c:187,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 2
    argNames:
    - sibling
    - ht_p
    argTypes:
    - struct lysc_node*
    - struct hash_table**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 120
    functionDepth: 6
    functionLinenumber: 120
    functionLinenumberEnd: 191
    functionName: lyb_hash_siblings
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyht_insert
    - lyht_insert_with_resize_cb
    - LY_CHECK_ERR_RET
    - lys_getnext
    - lyb_get_hash
    - LOGINT
    - lyb_hash_sequence_check
    - lyht_free
    - lysc_data_parent
    - LOGMEM
    - lyht_set_cb
    - lyht_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_hash_siblings(struct lysc_node *sibling, struct hash_table
      **ht_p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:208,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/printer_lyb.c:210,1
    - Dst: lyht_find
      Src: /src/libyang/src/printer_lyb.c:213,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/printer_lyb.c:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ht
    - node
    - hash_p
    argTypes:
    - struct hash_table*
    - struct lysc_node*
    - LYB_HASH*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 225
    functionName: lyb_hash_find
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_get_hash
    - LOGINT_RET
    - lyht_find
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_hash_find(struct hash_table *ht, struct lysc_node *node,
      LYB_HASH *hash_p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_lyb.c:248,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:263,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_lyb.c:263,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_lyb.c:265,1
    - Dst: assert
      Src: /src/libyang/src/printer_lyb.c:268,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:279,1
    - Dst: ly_write_skipped
      Src: /src/libyang/src/printer_lyb.c:279,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:286,1
    - Dst: ly_write_skip
      Src: /src/libyang/src/printer_lyb.c:286,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_lyb.c:291,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 4
    argNames:
    - out
    - buf
    - count
    - lybctx
    argTypes:
    - struct ly_out*
    - uint8_t*
    - size_t
    - struct lylyb_ctx*
    assertStmts:
    - condition: (lybctx->subtrees[u].written <= LYB_SIZE_MAX)
      pos:
        line_end: 267
        line_start: 267
        source_file: /src/libyang/src/printer_lyb.c
    constantsTouched: []
    func_position:
      end: 300
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 300
    functionName: lyb_write
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - ly_write_
    - ly_write_skipped
    - LOGINT
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - ly_write_skip
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_write(struct ly_out *out, const uint8_t *buf, size_t count,
      struct lylyb_ctx *lybctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/printer_lyb.c:315,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/printer_lyb.c:316,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:317,1
    - Dst: ly_write_skipped
      Src: /src/libyang/src/printer_lyb.c:317,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/printer_lyb.c:317,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/printer_lyb.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - out
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 321
    functionName: lyb_write_stop_subtree
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LY_ARRAY_DECREMENT
    - LYB_LAST_SUBTREE
    - ly_write_skipped
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_write_stop_subtree(struct ly_out *out, struct lylyb_ctx
      *lybctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_lyb.c:335,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/printer_lyb.c:337,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/printer_lyb.c:341,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/printer_lyb.c:342,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/printer_lyb.c:343,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_lyb.c:346,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_lyb.c:348,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:354,1
    - Dst: ly_write_skip
      Src: /src/libyang/src/printer_lyb.c:354,1
    - Dst: LYB_LAST_SUBTREE
      Src: /src/libyang/src/printer_lyb.c:354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - out
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 357
    functionName: lyb_write_start_subtree
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_INCREMENT
    - LY_ARRAY_COUNT
    - LOGINT
    - LY_CHECK_RET
    - LY_ARRAY_CREATE_RET
    - LYB_LAST_SUBTREE
    - ly_write_skip
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_write_start_subtree(struct ly_out *out, struct lylyb_ctx
      *lybctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htole64
      Src: /src/libyang/src/printer_lyb.c:372,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - num
    - bytes
    - out
    - lybctx
    argTypes:
    - uint64_t
    - size_t
    - struct ly_out*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 375
    functionName: lyb_write_number
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - htole64
    - lyb_write
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_write_number(uint64_t num, size_t bytes, struct ly_out *out,
      struct lylyb_ctx *lybctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_lyb.c:392,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_lyb.c:392,1
    - Dst: strlen
      Src: /src/libyang/src/printer_lyb.c:395,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_lyb.c:401,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:404,1
    - Dst: lyb_write_number
      Src: /src/libyang/src/printer_lyb.c:404,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:407,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - str
    - str_len
    - with_length
    - out
    - lybctx
    argTypes:
    - char*
    - size_t
    - ly_bool
    - struct ly_out*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 410
    functionName: lyb_write_string
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - strlen
    - lyb_write
    - LY_CHECK_ERR_RET
    - LOGINT
    - LY_CHECK_RET
    - lyb_write_number
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_write_string(const char *str, size_t str_len, ly_bool with_length,
      struct ly_out *out, struct lylyb_ctx *lybctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:427,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:427,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:429,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:429,1
    - Dst: atoi
      Src: /src/libyang/src/printer_lyb.c:436,1
    - Dst: atoi
      Src: /src/libyang/src/printer_lyb.c:442,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/printer_lyb.c:442,1
    - Dst: atoi
      Src: /src/libyang/src/printer_lyb.c:447,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/printer_lyb.c:447,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:451,1
    - Dst: lyb_write_number
      Src: /src/libyang/src/printer_lyb.c:451,1
    - Dst: lyb_cache_module_hash
      Src: /src/libyang/src/printer_lyb.c:455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - out
    - mod
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lys_module*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 420
    functionDepth: 4
    functionLinenumber: 420
    functionLinenumberEnd: 459
    functionName: lyb_print_model
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_write_string
    - lyb_cache_module_hash
    - lyb_write_number
    - LY_CHECK_RET
    - ly_strlen_const
    - atoi
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_model(struct ly_out *out, const struct lys_module
      *mod, struct lylyb_ctx *lybctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:479,1
    - Dst: ly_set_new
      Src: /src/libyang/src/printer_lyb.c:479,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_lyb.c:488,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:489,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_lyb.c:492,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_lyb.c:493,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:494,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_lyb.c:496,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_lyb.c:497,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:498,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:503,1
    - Dst: lyb_write_number
      Src: /src/libyang/src/printer_lyb.c:503,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:507,1
    - Dst: lyb_print_model
      Src: /src/libyang/src/printer_lyb.c:507,1
    - Dst: ly_set_free
      Src: /src/libyang/src/printer_lyb.c:511,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - out
    - root
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 469
    functionDepth: 5
    functionLinenumber: 469
    functionLinenumberEnd: 513
    functionName: lyb_print_data_models
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - ly_set_new
    - ly_set_free
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - lyb_print_model
    - ly_set_add
    - LY_CHECK_GOTO
    - lyb_write_number
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_data_models(struct ly_out *out, const struct lyd_node
      *root, struct lylyb_ctx *lybctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_lyb.c:488,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:489,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_lyb.c:492,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_lyb.c:493,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:494,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_lyb.c:496,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_lyb.c:497,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 500
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 18
    functionsReached:
    - LY_ARRAY_FOR
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(root, node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:527,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_lyb.c:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - out
    argTypes:
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 530
    functionName: lyb_print_magic_number
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_write_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_magic_number(struct ly_out *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:546,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_lyb.c:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - out
    argTypes:
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 549
    functionName: lyb_print_header
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_write_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_header(struct ly_out *out)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:573,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:573,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_lyb.c:577,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:582,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:582,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:589,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:589,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:592,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:592,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/printer_lyb.c:600,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - out
    - format
    - prefix_data
    - lybctx
    argTypes:
    - struct ly_out*
    - LY_VALUE_FORMAT
    - void*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 560
    functionDepth: 4
    functionLinenumber: 560
    functionLinenumberEnd: 604
    functionName: lyb_print_prefix_data
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_write
    - LOGINT_RET
    - lyb_write_string
    - LOGERR
    - LY_CHECK_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_prefix_data(struct ly_out *out, LY_VALUE_FORMAT format,
      const void *prefix_data, struct lylyb_ctx *lybctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:618,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:618,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:621,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:621,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:624,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:624,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:627,1
    - Dst: lyb_write_number
      Src: /src/libyang/src/printer_lyb.c:627,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:630,1
    - Dst: lyb_print_prefix_data
      Src: /src/libyang/src/printer_lyb.c:630,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:633,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - opaq
    - out
    - lybctx
    argTypes:
    - struct lyd_node_opaq*
    - struct ly_out*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 614
    functionDepth: 5
    functionLinenumber: 614
    functionLinenumberEnd: 636
    functionName: lyb_print_opaq
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyb_write_string
    - lyb_write_number
    - lyb_print_prefix_data
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_opaq(struct lyd_node_opaq *opaq, struct ly_out *out,
      struct lylyb_ctx *lybctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:664,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:664,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:668,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/src/printer_lyb.c:668,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:669,1
    - Dst: lyb_print_data
      Src: /src/libyang/src/printer_lyb.c:669,1
    - Dst: lyd_lyb_data_length
      Src: /src/libyang/src/printer_lyb.c:671,1
    - Dst: assert
      Src: /src/libyang/src/printer_lyb.c:672,1
    - Dst: lyd_lyb_data_length
      Src: /src/libyang/src/printer_lyb.c:675,1
    - Dst: assert
      Src: /src/libyang/src/printer_lyb.c:676,1
    - Dst: strlen
      Src: /src/libyang/src/printer_lyb.c:679,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:684,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:684,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_lyb.c:687,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 3
    argNames:
    - anydata
    - out
    - lybctx
    argTypes:
    - struct lyd_node_any*
    - struct ly_out*
    - struct lylyb_ctx*
    assertStmts:
    - condition: (len != -1)
      pos:
        line_end: 671
        line_start: 671
        source_file: /src/libyang/src/printer_lyb.c
    - condition: (len != -1)
      pos:
        line_end: 675
        line_start: 675
        source_file: /src/libyang/src/printer_lyb.c
    constantsTouched: []
    func_position:
      end: 689
      start: 646
    functionDepth: 4
    functionLinenumber: 646
    functionLinenumberEnd: 689
    functionName: lyb_print_anydata
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - strlen
    - lyb_write
    - lyb_write_string
    - lyd_lyb_data_length
    - lyb_print_data
    - ly_out_free
    - LY_CHECK_GOTO
    - ly_out_new_memory
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_anydata(struct lyd_node_any *anydata, struct ly_out
      *out, struct lylyb_ctx *lybctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:703,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/printer_lyb.c:703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - term
    - out
    - lybctx
    argTypes:
    - struct lyd_node_term*
    - struct ly_out*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 699
    functionDepth: 4
    functionLinenumber: 699
    functionLinenumberEnd: 704
    functionName: lyb_print_term
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyd_get_value
    - lyb_write_string
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_term(struct lyd_node_term *term, struct ly_out *out,
      struct lylyb_ctx *lybctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyd_is_default
      Src: /src/libyang/src/printer_lyb.c:724,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/printer_lyb.c:726,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_lyb.c:736,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:743,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:743,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:747,1
    - Dst: lyb_write_start_subtree
      Src: /src/libyang/src/printer_lyb.c:747,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:748,1
    - Dst: lyb_print_model
      Src: /src/libyang/src/printer_lyb.c:748,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:749,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:749,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:750,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:750,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:751,1
    - Dst: lyb_write_stop_subtree
      Src: /src/libyang/src/printer_lyb.c:751,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_lyb.c:755,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:757,1
    - Dst: lyb_write_start_subtree
      Src: /src/libyang/src/printer_lyb.c:757,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:760,1
    - Dst: lyb_print_model
      Src: /src/libyang/src/printer_lyb.c:760,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:763,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:763,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:766,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:766,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/printer_lyb.c:766,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:769,1
    - Dst: lyb_write_stop_subtree
      Src: /src/libyang/src/printer_lyb.c:769,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - out
    - node
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - struct lyd_lyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 714
    functionDepth: 5
    functionLinenumber: 714
    functionLinenumberEnd: 773
    functionName: lyb_print_metadata
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_write_stop_subtree
    - lyb_write
    - lyb_write_string
    - LOGERR
    - ly_ctx_get_module_latest
    - LY_LIST_FOR
    - lyd_is_default
    - LY_CHECK_RET
    - lyb_print_model
    - lyb_write_start_subtree
    - lyd_get_meta_value
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_metadata(struct ly_out *out, const struct lyd_node
      *node, struct lyd_lyb_ctx *lybctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOGERR
      Src: /src/libyang/src/printer_lyb.c:791,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:798,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:798,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_lyb.c:801,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:803,1
    - Dst: lyb_write_start_subtree
      Src: /src/libyang/src/printer_lyb.c:803,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:806,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:806,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:809,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:809,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:812,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:812,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:815,1
    - Dst: lyb_write_number
      Src: /src/libyang/src/printer_lyb.c:815,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:818,1
    - Dst: lyb_print_prefix_data
      Src: /src/libyang/src/printer_lyb.c:818,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:821,1
    - Dst: lyb_write_string
      Src: /src/libyang/src/printer_lyb.c:821,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:824,1
    - Dst: lyb_write_stop_subtree
      Src: /src/libyang/src/printer_lyb.c:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - out
    - node
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lyd_node_opaq*
    - struct lylyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 783
    functionDepth: 5
    functionLinenumber: 783
    functionLinenumberEnd: 828
    functionName: lyb_print_attributes
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_write_stop_subtree
    - lyb_write
    - lyb_write_string
    - LOGERR
    - LY_LIST_FOR
    - LY_CHECK_RET
    - lyb_write_start_subtree
    - lyb_print_prefix_data
    - lyb_write_number
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_attributes(struct ly_out *out, const struct lyd_node_opaq
      *node, struct lylyb_ctx *lybctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:851,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:851,1
    - Dst: lys_getnext
      Src: /src/libyang/src/printer_lyb.c:858,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/printer_lyb.c:858,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_lyb.c:860,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:870,1
    - Dst: lyb_hash_siblings
      Src: /src/libyang/src/printer_lyb.c:870,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/printer_lyb.c:873,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:881,1
    - Dst: lyb_hash_find
      Src: /src/libyang/src/printer_lyb.c:881,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:884,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:884,1
    - Dst: lyb_get_hash
      Src: /src/libyang/src/printer_lyb.c:895,1
    - Dst: assert
      Src: /src/libyang/src/printer_lyb.c:899,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:901,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:901,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 4
    argNames:
    - out
    - schema
    - sibling_ht
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lysc_node*
    - struct hash_table**
    - struct lylyb_ctx*
    assertStmts:
    - condition: (hash & (LYB_HASH_COLLISION_ID >> (i - 1)))
      pos:
        line_end: 898
        line_start: 898
        source_file: /src/libyang/src/printer_lyb.c
    constantsTouched: []
    func_position:
      end: 905
      start: 839
    functionDepth: 7
    functionLinenumber: 839
    functionLinenumberEnd: 905
    functionName: lyb_print_schema_hash
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 0
    functionsReached:
    - lyb_write
    - lys_getnext
    - lyb_get_hash
    - lyb_hash_siblings
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - lysc_data_parent
    - LY_ARRAY_NEW_RET
    - lyb_hash_find
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_schema_hash(struct ly_out *out, struct lysc_node *schema,
      struct hash_table **sibling_ht, struct lylyb_ctx *lybctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:922,1
    - Dst: lyb_write_start_subtree
      Src: /src/libyang/src/printer_lyb.c:922,1
    - Dst: lyd_parent
      Src: /src/libyang/src/printer_lyb.c:925,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:926,1
    - Dst: lyb_print_model
      Src: /src/libyang/src/printer_lyb.c:926,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/printer_lyb.c:927,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:928,1
    - Dst: lyb_print_model
      Src: /src/libyang/src/printer_lyb.c:928,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:932,1
    - Dst: lyb_print_schema_hash
      Src: /src/libyang/src/printer_lyb.c:932,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:936,1
    - Dst: lyb_print_metadata
      Src: /src/libyang/src/printer_lyb.c:936,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:938,1
    - Dst: lyb_print_attributes
      Src: /src/libyang/src/printer_lyb.c:938,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:942,1
    - Dst: lyb_write_number
      Src: /src/libyang/src/printer_lyb.c:942,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:946,1
    - Dst: lyb_print_opaq
      Src: /src/libyang/src/printer_lyb.c:946,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:950,1
    - Dst: lyb_print_term
      Src: /src/libyang/src/printer_lyb.c:950,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:952,1
    - Dst: lyb_print_anydata
      Src: /src/libyang/src/printer_lyb.c:952,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/printer_lyb.c:954,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:959,1
    - Dst: lyb_print_subtree
      Src: /src/libyang/src/printer_lyb.c:959,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:963,1
    - Dst: lyb_write_stop_subtree
      Src: /src/libyang/src/printer_lyb.c:963,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - out
    - node
    - sibling_ht
    - lybctx
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - struct hash_table**
    - struct lyd_lyb_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 916
    functionDepth: 8
    functionLinenumber: 916
    functionLinenumberEnd: 966
    functionName: lyb_print_subtree
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 1
    functionsReached:
    - lyb_write_stop_subtree
    - lyd_parent
    - LOGINT_RET
    - lyb_print_subtree
    - lyb_print_term
    - lyb_print_opaq
    - lyb_print_schema_hash
    - LY_CHECK_RET
    - lyb_print_model
    - lyb_write_start_subtree
    - lyb_print_metadata
    - lysc_data_parent
    - lyb_write_number
    - lyb_print_attributes
    - lyb_print_anydata
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_subtree(struct ly_out *out, const struct lyd_node
      *node, struct hash_table **sibling_ht, struct lyd_lyb_ctx *lybctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_lyb.c:959,1
    - Dst: lyb_print_subtree
      Src: /src/libyang/src/printer_lyb.c:959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 958
    functionDepth: 9
    functionLinenumber: 958
    functionLinenumberEnd: 960
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 20
    functionsReached:
    - LY_CHECK_RET
    - lyb_print_subtree
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(node), node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_lyb.c:976,1
    - Dst: calloc
      Src: /src/libyang/src/printer_lyb.c:978,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_lyb.c:979,1
    - Dst: LOGMEM
      Src: /src/libyang/src/printer_lyb.c:979,1
    - Dst: calloc
      Src: /src/libyang/src/printer_lyb.c:980,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_lyb.c:981,1
    - Dst: LOGMEM
      Src: /src/libyang/src/printer_lyb.c:981,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/printer_lyb.c:987,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_lyb.c:988,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:995,1
    - Dst: lyb_print_magic_number
      Src: /src/libyang/src/printer_lyb.c:995,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:998,1
    - Dst: lyb_print_header
      Src: /src/libyang/src/printer_lyb.c:998,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:1001,1
    - Dst: lyb_print_data_models
      Src: /src/libyang/src/printer_lyb.c:1001,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:1010,1
    - Dst: lyb_print_subtree
      Src: /src/libyang/src/printer_lyb.c:1010,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:1018,1
    - Dst: lyb_write
      Src: /src/libyang/src/printer_lyb.c:1018,1
    - Dst: lyd_lyb_ctx_free
      Src: /src/libyang/src/printer_lyb.c:1021,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - out
    - root
    - options
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 968
    functionDepth: 9
    functionLinenumber: 968
    functionLinenumberEnd: 1023
    functionName: lyb_print_data
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 1
    functionsReached:
    - lyb_write
    - lyd_lyb_ctx_free
    - LY_CHECK_ERR_RET
    - lyb_print_subtree
    - LOGERR
    - lyb_print_header
    - lyb_print_magic_number
    - lyb_print_data_models
    - LY_CHECK_GOTO
    - lysc_data_parent
    - LYD_CTX
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_print_data(struct ly_out *out, const struct lyd_node *root,
      uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/printer_lyb.c:1010,1
    - Dst: lyb_print_subtree
      Src: /src/libyang/src/printer_lyb.c:1010,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1003
    functionDepth: 9
    functionLinenumber: 1003
    functionLinenumberEnd: 1015
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_lyb.c
    functionUses: 20
    functionsReached:
    - lyb_print_subtree
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(root, root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/libyang/src/common.c:39,1
    - Dst: free
      Src: /src/libyang/src/common.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 45
    functionName: ly_realloc
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 6
    functionsReached:
    - realloc
    - free
    linkageType: ''
    returnType: void
    signature: 'void *

      ly_realloc(void *ptr, size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - s
    - c
    - len
    argTypes:
    - char*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: ly_strnchr
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_strnchr(const char *s, int c, size_t len)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/libyang/src/common.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - refstr
    - str
    - str_len
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 64
    functionName: ly_strncmp
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 9
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int ly_strncmp(const char *refstr, const char *str, size_t str_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MAX
    - ','
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: LY_OVERFLOW_ADD
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_OVERFLOW_ADD(MAX, X, Y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - MAX
    - ','
    - X
    - ','
    - Y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: LY_OVERFLOW_MUL
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_OVERFLOW_MUL(MAX, X, Y)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/libyang/src/common.c:81,1
    - Dst: LY_OVERFLOW_MUL
      Src: /src/libyang/src/common.c:84,1
    - Dst: LY_OVERFLOW_ADD
      Src: /src/libyang/src/common.c:89,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - nptr
    - len
    - ret
    argTypes:
    - char*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 102
    functionName: ly_strntou8
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 0
    functionsReached:
    - isdigit
    - LY_OVERFLOW_ADD
    - LY_OVERFLOW_MUL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_strntou8(const char *nptr, size_t len, uint8_t *ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/common.c:113,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/common.c:132,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/common.c:132,1
    - Dst: is_xmlqnamestartchar
      Src: /src/libyang/src/common.c:133,1
    - Dst: IS_AT_END
      Src: /src/libyang/src/common.c:133,1
    - Dst: IS_AT_END
      Src: /src/libyang/src/common.c:135,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/common.c:144,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/common.c:144,1
    - Dst: is_xmlqnamechar
      Src: /src/libyang/src/common.c:145,1
    - Dst: IS_AT_END
      Src: /src/libyang/src/common.c:145,1
    - Dst: IS_AT_END
      Src: /src/libyang/src/common.c:150,1
    - Dst: IS_AT_END
      Src: /src/libyang/src/common.c:155,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 36
    argCount: 5
    argNames:
    - str_begin
    - str_end
    - len
    - is_prefix
    - str_next
    argTypes:
    - char*
    - char*
    - uint32_t*
    - ly_bool*
    - char**
    assertStmts:
    - condition: (len && is_prefix && str_next)
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/libyang/src/common.c
    constantsTouched: []
    func_position:
      end: 169
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 169
    functionName: ly_value_prefix_next
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 2
    functionsReached:
    - is_xmlqnamestartchar
    - ly_getutf8
    - IS_AT_END
    - LY_CHECK_RET
    - is_xmlqnamechar
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_value_prefix_next(const char *str_begin, const char *str_end,
      uint32_t *len, ly_bool *is_prefix, const char **str_next)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - PTR
    - ','
    - STR_END
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: IS_AT_END
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IS_AT_END(PTR, STR_END)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/common.c:182,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 59
    argCount: 3
    argNames:
    - input
    - utf8_char
    - bytes_read
    argTypes:
    - char**
    - uint32_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 248
    functionName: ly_getutf8
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 9
    functionsReached:
    - LY_CHECK_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_getutf8(const char **input, uint32_t *utf8_char, size_t *bytes_read)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 3
    argNames:
    - dst
    - value
    - bytes_written
    argTypes:
    - char*
    - uint32_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 301
    functionName: ly_pututf8
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_pututf8(char *dst, uint32_t value, size_t *bytes_written)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - str
    - bytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 336
    functionName: ly_utf8len
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ly_utf8len(const char *str, size_t bytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 350
    functionName: LY_VCODE_INSTREXP_len
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t LY_VCODE_INSTREXP_len(const char *str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/common.c:359,1
    - Dst: assert
      Src: /src/libyang/src/common.c:360,1
    - Dst: assert
      Src: /src/libyang/src/common.c:361,1
    - Dst: fstat
      Src: /src/libyang/src/common.c:363,1
    - Dst: LOGERR
      Src: /src/libyang/src/common.c:364,1
    - Dst: strerror
      Src: /src/libyang/src/common.c:364,1
    - Dst: S_ISREG
      Src: /src/libyang/src/common.c:367,1
    - Dst: LOGERR
      Src: /src/libyang/src/common.c:368,1
    - Dst: sysconf
      Src: /src/libyang/src/common.c:375,1
    - Dst: mmap
      Src: /src/libyang/src/common.c:381,1
    - Dst: mmap
      Src: /src/libyang/src/common.c:390,1
    - Dst: mmap
      Src: /src/libyang/src/common.c:391,1
    - Dst: LOGERR
      Src: /src/libyang/src/common.c:394,1
    - Dst: strerror
      Src: /src/libyang/src/common.c:394,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 4
    argNames:
    - ctx
    - fd
    - length
    - addr
    argTypes:
    - struct ly_ctx*
    - int
    - size_t*
    - void**
    assertStmts:
    - condition: (length)
      pos:
        line_end: 358
        line_start: 358
        source_file: /src/libyang/src/common.c
    - condition: (addr)
      pos:
        line_end: 359
        line_start: 359
        source_file: /src/libyang/src/common.c
    - condition: (fd >= 0)
      pos:
        line_end: 360
        line_start: 360
        source_file: /src/libyang/src/common.c
    constantsTouched: []
    func_position:
      end: 399
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 399
    functionName: ly_mmap
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 2
    functionsReached:
    - sysconf
    - S_ISREG
    - fstat
    - strerror
    - LOGERR
    - mmap
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_mmap(struct ly_ctx *ctx, int fd, size_t *length, void **addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/libyang/src/common.c:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - addr
    - length
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 408
    functionName: ly_munmap
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 3
    functionsReached:
    - munmap
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_munmap(void *addr, size_t length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/libyang/src/common.c:417,1
    - Dst: vasprintf
      Src: /src/libyang/src/common.c:418,1
    - Dst: strlen
      Src: /src/libyang/src/common.c:419,1
    - Dst: ly_realloc
      Src: /src/libyang/src/common.c:422,1
    - Dst: va_end
      Src: /src/libyang/src/common.c:424,1
    - Dst: strcat
      Src: /src/libyang/src/common.c:427,1
    - Dst: free
      Src: /src/libyang/src/common.c:428,1
    - Dst: va_end
      Src: /src/libyang/src/common.c:433,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - dest
    - format
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 435
    functionName: ly_strcat
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 0
    functionsReached:
    - strlen
    - vasprintf
    - free
    - va_start
    - va_end
    - strcat
    - ly_realloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_strcat(char **dest, const char *format, ...)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/common.c:444,1
    - Dst: strndup
      Src: /src/libyang/src/common.c:447,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/common.c:448,1
    - Dst: strtoll
      Src: /src/libyang/src/common.c:452,1
    - Dst: isspace
      Src: /src/libyang/src/common.c:460,1
    - Dst: free
      Src: /src/libyang/src/common.c:470,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 6
    argNames:
    - val_str
    - val_len
    - min
    - max
    - base
    - ret
    argTypes:
    - char*
    - size_t
    - int64_t
    - int64_t
    - int
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 475
    functionName: ly_parse_int
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - strtoll
    - free
    - LY_CHECK_RET
    - isspace
    - strndup
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_parse_int(const char *val_str, size_t val_len, int64_t min,
      int64_t max, int base, int64_t *ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/common.c:484,1
    - Dst: strndup
      Src: /src/libyang/src/common.c:487,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/common.c:488,1
    - Dst: strtoull
      Src: /src/libyang/src/common.c:492,1
    - Dst: isspace
      Src: /src/libyang/src/common.c:500,1
    - Dst: free
      Src: /src/libyang/src/common.c:510,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - val_str
    - val_len
    - max
    - base
    - ret
    argTypes:
    - char*
    - size_t
    - uint64_t
    - int
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 515
    functionName: ly_parse_uint
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - free
    - strtoull
    - LY_CHECK_RET
    - isspace
    - strndup
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_parse_uint(const char *val_str, size_t val_len, uint64_t
      max, int base, uint64_t *ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/common.c:530,1
    - Dst: is_yangidentstartchar
      Src: /src/libyang/src/common.c:532,1
    - Dst: is_yangidentchar
      Src: /src/libyang/src/common.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - id
    argTypes:
    - char**
    assertStmts:
    - condition: (id && *id)
      pos:
        line_end: 529
        line_start: 529
        source_file: /src/libyang/src/common.c
    constantsTouched: []
    func_position:
      end: 541
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 541
    functionName: lys_parse_id
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 0
    functionsReached:
    - is_yangidentchar
    - is_yangidentstartchar
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_parse_id(const char **id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/common.c:546,1
    - Dst: assert
      Src: /src/libyang/src/common.c:547,1
    - Dst: assert
      Src: /src/libyang/src/common.c:548,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/common.c:555,1
    - Dst: lys_parse_id
      Src: /src/libyang/src/common.c:555,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/common.c:562,1
    - Dst: lys_parse_id
      Src: /src/libyang/src/common.c:562,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - id
    - prefix
    - prefix_len
    - name
    - name_len
    argTypes:
    - char**
    - char**
    - size_t*
    - char**
    - size_t*
    assertStmts:
    - condition: (id && *id)
      pos:
        line_end: 545
        line_start: 545
        source_file: /src/libyang/src/common.c
    - condition: (name && name_len)
      pos:
        line_end: 547
        line_start: 547
        source_file: /src/libyang/src/common.c
    - condition: (prefix && prefix_len)
      pos:
        line_end: 546
        line_start: 546
        source_file: /src/libyang/src/common.c
    constantsTouched: []
    func_position:
      end: 572
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 572
    functionName: ly_parse_nodeid
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 8
    functionsReached:
    - LY_CHECK_RET
    - lys_parse_id
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_parse_nodeid(const char **id, const char **prefix, size_t
      *prefix_len, const char **name, size_t *name_len)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/common.c:585,1
    - Dst: isspace
      Src: /src/libyang/src/common.c:591,1
    - Dst: isdigit
      Src: /src/libyang/src/common.c:593,1
    - Dst: isdigit
      Src: /src/libyang/src/common.c:603,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/common.c:619,1
    - Dst: isspace
      Src: /src/libyang/src/common.c:635,1
    - Dst: isspace
      Src: /src/libyang/src/common.c:646,1
    - Dst: isspace
      Src: /src/libyang/src/common.c:666,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 104
    argCount: 10
    argNames:
    - pred
    - limit
    - format
    - prefix
    - prefix_len
    - id
    - id_len
    - value
    - value_len
    - errmsg
    argTypes:
    - char**
    - size_t
    - LYD_FORMAT
    - char**
    - size_t*
    - char**
    - size_t*
    - char**
    - size_t*
    - char**
    assertStmts:
    - condition: (in[0] == '[')
      pos:
        line_end: 584
        line_start: 584
        source_file: /src/libyang/src/common.c
    constantsTouched: []
    func_position:
      end: 694
      start: 574
    functionDepth: 3
    functionLinenumber: 574
    functionLinenumberEnd: 694
    functionName: ly_parse_instance_predicate
    functionSourceFile: /src/libyang/src/common.c
    functionUses: 1
    functionsReached:
    - isdigit
    - isspace
    - ly_parse_nodeid
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_parse_instance_predicate(const char **pred, size_t limit,
      LYD_FORMAT format,\n        const char **prefix, size_t *prefix_len, const char
      **id, size_t *id_len, const char **value, size_t *value_len,\n        const
      char **errmsg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:40,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:41,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_schema_free.c:42,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:44,1
    - Dst: lysp_stmt_free
      Src: /src/libyang/src/tree_schema_free.c:45,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - stmt
    argTypes:
    - struct ly_ctx*
    - struct lysp_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 3
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: lysp_stmt_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 1
    functionsReached:
    - ly_free_prefix_data
    - free
    - lydict_remove
    - lysp_stmt_free
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysp_stmt_free(struct ly_ctx *ctx, struct lysp_stmt *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:57,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:58,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_schema_free.c:59,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:60,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:61,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:64,1
    - Dst: lysp_stmt_free
      Src: /src/libyang/src/tree_schema_free.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct ly_ctx*
    - struct lysp_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 51
    functionDepth: 4
    functionLinenumber: 51
    functionLinenumberEnd: 67
    functionName: lysp_ext_instance_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 3
    functionsReached:
    - ly_free_prefix_data
    - lysp_node_free
    - lydict_remove
    - lysp_stmt_free
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysp_ext_instance_free(struct ly_ctx *ctx, struct lysp_ext_instance
      *ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:73,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:74,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:75,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:76,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - import
    argTypes:
    - struct ly_ctx*
    - struct lysp_import*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 3
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: lysp_import_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysp_import_free(struct ly_ctx *ctx, struct lysp_import *import)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysp_module_free
      Src: /src/libyang/src/tree_schema_free.c:96,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:98,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:99,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:100,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - include
    - main_module
    argTypes:
    - struct ly_ctx*
    - struct lysp_include*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: lysp_include_free_
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - lysp_module_free
    linkageType: ''
    returnType: void
    signature: void lysp_include_free_(struct ly_ctx *ctx, struct lysp_include *include,
      ly_bool main_module)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_include_free_
      Src: /src/libyang/src/tree_schema_free.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - include
    argTypes:
    - struct ly_ctx*
    - struct lysp_include*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: lysp_include_free_submodule
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - lysp_include_free_
    linkageType: ''
    returnType: void
    signature: void lysp_include_free_submodule(struct ly_ctx *ctx, struct lysp_include
      *include)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_include_free_
      Src: /src/libyang/src/tree_schema_free.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - include
    argTypes:
    - struct ly_ctx*
    - struct lysp_include*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 4
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: lysp_include_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - lysp_include_free_
    linkageType: ''
    returnType: void
    signature: void lysp_include_free(struct ly_ctx *ctx, struct lysp_include *include)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:119,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:120,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - rev
    argTypes:
    - struct ly_ctx*
    - struct lysp_revision*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: lysp_revision_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysp_revision_free(struct ly_ctx *ctx, struct lysp_revision *rev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:127,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:128,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:129,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:130,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:131,1
    - Dst: lysc_extension_free
      Src: /src/libyang/src/tree_schema_free.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct ly_ctx*
    - struct lysp_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 135
    functionName: lysp_ext_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 2
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - lysc_extension_free
    linkageType: ''
    returnType: void
    signature: void lysp_ext_free(struct ly_ctx *ctx, struct lysp_ext *ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:140,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:141,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:142,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:143,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:144,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:145,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - feat
    argTypes:
    - struct ly_ctx*
    - struct lysp_feature*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: lysp_feature_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - LY_ARRAY_FREE
    linkageType: ''
    returnType: void
    signature: void lysp_feature_free(struct ly_ctx *ctx, struct lysp_feature *feat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:152,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:153,1
    - Dst: FREE_STRINGS
      Src: /src/libyang/src/tree_schema_free.c:154,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:155,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:156,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - ident
    argTypes:
    - struct ly_ctx*
    - struct lysp_ident*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 158
    functionName: lysp_ident_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - FREE_STRINGS
    linkageType: ''
    returnType: void
    signature: void lysp_ident_free(struct ly_ctx *ctx, struct lysp_ident *ident)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:163,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:164,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:165,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:166,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:167,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - restr
    argTypes:
    - struct ly_ctx*
    - struct lysp_restr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: lysp_restr_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysp_restr_free(struct ly_ctx *ctx, struct lysp_restr *restr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:174,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:175,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:176,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:177,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - item
    argTypes:
    - struct ly_ctx*
    - struct lysp_type_enum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 179
    functionName: lysp_type_enum_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysp_type_enum_free(struct ly_ctx *ctx, struct lysp_type_enum
      *item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:186,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:187,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:188,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:189,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:190,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:191,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema_free.c:192,1
    - Dst: FREE_STRINGS
      Src: /src/libyang/src/tree_schema_free.c:193,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:194,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:195,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct ly_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 199
    functionName: lysp_type_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 8
    functionsReached:
    - lyxp_expr_free
    - lysc_type_free
    - FREE_ARRAY
    - lydict_remove
    - FREE_MEMBER
    - FREE_STRINGS
    linkageType: ''
    returnType: void
    signature: void lysp_type_free(struct ly_ctx *ctx, struct lysp_type *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:204,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:205,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:206,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:207,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:208,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:209,1
    - Dst: lysp_type_free
      Src: /src/libyang/src/tree_schema_free.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - tpdf
    argTypes:
    - struct ly_ctx*
    - struct lysp_tpdf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: lysp_tpdf_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - lysp_type_free
    linkageType: ''
    returnType: void
    signature: void lysp_tpdf_free(struct ly_ctx *ctx, struct lysp_tpdf *tpdf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:220,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:221,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:222,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:224,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:225,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:227,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:228,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:230,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - grp
    argTypes:
    - struct ly_ctx*
    - struct lysp_node_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 233
    functionName: lysp_grp_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lysp_node_free
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysp_grp_free(struct ly_ctx *ctx, struct lysp_node_grp *grp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:238,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:239,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:240,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - when
    argTypes:
    - struct ly_ctx*
    - struct lysp_when*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: lysp_when_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 2
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysp_when_free(struct ly_ctx *ctx, struct lysp_when *when)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:249,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:250,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:252,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:253,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:255,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - augment
    argTypes:
    - struct ly_ctx*
    - struct lysp_node_augment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 258
    functionName: lysp_augment_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - lysp_node_free
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysp_augment_free(struct ly_ctx *ctx, struct lysp_node_augment
      *augment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - qname
    argTypes:
    - struct ly_ctx*
    - struct lysp_qname*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 3
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: lysp_qname_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 1
    functionsReached:
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysp_qname_free(struct ly_ctx *ctx, struct lysp_qname *qname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:274,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:281,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:282,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:283,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:284,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:287,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:288,1
    - Dst: lysp_qname_free
      Src: /src/libyang/src/tree_schema_free.c:289,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema_free.c:292,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - d
    argTypes:
    - struct ly_ctx*
    - struct lysp_deviate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 268
    functionDepth: 4
    functionLinenumber: 268
    functionLinenumberEnd: 295
    functionName: lysp_deviate_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 1
    functionsReached:
    - lysp_qname_free
    - LOGINT
    - FREE_ARRAY
    - lydict_remove
    - FREE_MEMBER
    linkageType: ''
    returnType: void
    signature: void lysp_deviate_free(struct ly_ctx *ctx, struct lysp_deviate *d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:302,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:303,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:304,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:305,1
    - Dst: lysp_deviate_free
      Src: /src/libyang/src/tree_schema_free.c:306,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:307,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - dev
    argTypes:
    - struct ly_ctx*
    - struct lysp_deviation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 297
    functionDepth: 5
    functionLinenumber: 297
    functionLinenumberEnd: 310
    functionName: lysp_deviation_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - free
    - FREE_ARRAY
    - lydict_remove
    - LY_LIST_FOR_SAFE
    - lysp_deviate_free
    linkageType: ''
    returnType: void
    signature: void lysp_deviation_free(struct ly_ctx *ctx, struct lysp_deviation
      *dev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:315,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:316,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:317,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:318,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:319,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:320,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:321,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ref
    argTypes:
    - struct ly_ctx*
    - struct lysp_refine*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: lysp_refine_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysp_refine_free(struct ly_ctx *ctx, struct lysp_refine *ref)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_musts
      Src: /src/libyang/src/tree_schema_free.c:329,1
    - Dst: lysp_node_when
      Src: /src/libyang/src/tree_schema_free.c:330,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:332,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:333,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:334,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:335,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:336,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:338,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:339,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:343,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:344,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:345,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:346,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:348,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:349,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:351,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:352,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:354,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:355,1
    - Dst: lysp_type_free
      Src: /src/libyang/src/tree_schema_free.c:359,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:360,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:361,1
    - Dst: lysp_type_free
      Src: /src/libyang/src/tree_schema_free.c:364,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:365,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:366,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:369,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:370,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:371,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:372,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:374,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:375,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:377,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:378,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:380,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:381,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:383,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:386,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:387,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:389,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:392,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:393,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:401,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:402,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:403,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:408,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:409,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:410,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:413,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:416,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:421,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:422,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:423,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:425,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:426,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:431,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:432,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:433,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:435,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:436,1
    - Dst: lysp_grp_free
      Src: /src/libyang/src/tree_schema_free.c:440,1
    - Dst: lysp_augment_free
      Src: /src/libyang/src/tree_schema_free.c:443,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema_free.c:446,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:449,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 114
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 325
    functionDepth: 4
    functionLinenumber: 325
    functionLinenumberEnd: 450
    functionName: lysp_node_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 29
    functionsReached:
    - lysp_node_free
    - LOGINT
    - free
    - FREE_ARRAY
    - lydict_remove
    - FREE_MEMBER
    - lysp_node_when
    - lysp_grp_free
    - LY_LIST_FOR_SAFE
    - lysp_augment_free
    - lysp_type_free
    - lysp_node_musts
    linkageType: ''
    returnType: void
    signature: void lysp_node_free(struct ly_ctx *ctx, struct lysp_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:463,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:464,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:466,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:467,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:468,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:469,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:470,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:471,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:472,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:474,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:475,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:477,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:478,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:480,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:481,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:483,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/tree_schema_free.c:484,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:486,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:487,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:492,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:493,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:494,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:495,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:496,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:497,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:498,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 452
    functionDepth: 5
    functionLinenumber: 452
    functionLinenumberEnd: 502
    functionName: lysp_module_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 7
    functionsReached:
    - lysp_node_free
    - free
    - FREE_ARRAY
    - lydict_remove
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysp_module_free(struct lysp_module *module)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:510,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:511,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:512,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 504
    functionDepth: 3
    functionLinenumber: 504
    functionLinenumberEnd: 515
    functionName: lysc_extension_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 2
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - free
    linkageType: ''
    returnType: void
    signature: void lysc_extension_free(struct ly_ctx *ctx, struct lysc_ext **ext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct lysc_ext_instance*::def::plugin::free
      Src: /src/libyang/src/tree_schema_free.c:521,1
    - Dst: lysc_extension_free
      Src: /src/libyang/src/tree_schema_free.c:524,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:526,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:527,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 517
    functionDepth: 4
    functionLinenumber: 517
    functionLinenumberEnd: 528
    functionName: lysc_ext_instance_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 1
    functionsReached:
    - FREE_ARRAY
    - lysc_extension_free
    - lydict_remove
    - struct lysc_ext_instance*::def::plugin::free
    linkageType: ''
    returnType: void
    signature: void lysc_ext_instance_free(struct ly_ctx *ctx, struct lysc_ext_instance
      *ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:533,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - UNUSED(ctx)
    - iff
    argTypes:
    - struct ly_ctx*
    - struct lysc_iffeature*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 535
    functionName: lysc_iffeature_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FREE
    - free
    linkageType: ''
    returnType: void
    signature: void lysc_iffeature_free(struct ly_ctx *UNUSED(ctx), struct lysc_iffeature
      *iff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema_free.c:543,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_schema_free.c:544,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:545,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:546,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:547,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - w
    argTypes:
    - struct ly_ctx*
    - struct lysc_when**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 537
    functionDepth: 3
    functionLinenumber: 537
    functionLinenumberEnd: 549
    functionName: lysc_when_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - lyxp_expr_free
    - ly_free_prefix_data
    - free
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysc_when_free(struct ly_ctx *ctx, struct lysc_when **w)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema_free.c:554,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_schema_free.c:555,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:556,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:557,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:558,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:559,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - must
    argTypes:
    - struct ly_ctx*
    - struct lysc_must*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 551
    functionDepth: 3
    functionLinenumber: 551
    functionLinenumberEnd: 561
    functionName: lysc_must_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - lyxp_expr_free
    - ly_free_prefix_data
    linkageType: ''
    returnType: void
    signature: void lysc_must_free(struct ly_ctx *ctx, struct lysc_must *must)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:566,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:567,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:568,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:569,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - ident
    argTypes:
    - struct ly_ctx*
    - struct lysc_ident*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 563
    functionDepth: 3
    functionLinenumber: 563
    functionLinenumberEnd: 571
    functionName: lysc_ident_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 1
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - LY_ARRAY_FREE
    linkageType: ''
    returnType: void
    signature: void lysc_ident_free(struct ly_ctx *ctx, struct lysc_ident *ident)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:576,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:577,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:578,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:579,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:580,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - range
    argTypes:
    - struct ly_ctx*
    - struct lysc_range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 573
    functionDepth: 3
    functionLinenumber: 573
    functionLinenumberEnd: 582
    functionName: lysc_range_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - LY_ARRAY_FREE
    linkageType: ''
    returnType: void
    signature: void lysc_range_free(struct ly_ctx *ctx, struct lysc_range *range)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pcre2_code_free
      Src: /src/libyang/src/tree_schema_free.c:590,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:591,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:592,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:593,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:594,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:595,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:596,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - pattern
    argTypes:
    - struct ly_ctx*
    - struct lysc_pattern**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 584
    functionDepth: 3
    functionLinenumber: 584
    functionLinenumberEnd: 598
    functionName: lysc_pattern_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    - free
    - pcre2_code_free
    linkageType: ''
    returnType: void
    signature: void lysc_pattern_free(struct ly_ctx *ctx, struct lysc_pattern **pattern)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:603,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:604,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:605,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - item
    argTypes:
    - struct ly_ctx*
    - struct lysc_type_bitenum_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 600
    functionDepth: 3
    functionLinenumber: 600
    functionLinenumberEnd: 607
    functionName: lysc_enum_item_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lydict_remove
    linkageType: ''
    returnType: void
    signature: void lysc_enum_item_free(struct ly_ctx *ctx, struct lysc_type_bitenum_item
      *item)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct ly_ctx*
    - struct lysc_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 613
    functionName: lysc_type2_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - lysc_type_free
    linkageType: ''
    returnType: void
    signature: void lysc_type2_free(struct ly_ctx *ctx, struct lysc_type **type)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:624,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:627,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:630,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:633,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:634,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:637,1
    - Dst: FREE_MEMBER
      Src: /src/libyang/src/tree_schema_free.c:647,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:650,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:653,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/tree_schema_free.c:656,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_schema_free.c:657,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:667,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:668,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 615
    functionDepth: 1
    functionLinenumber: 615
    functionLinenumberEnd: 669
    functionName: lysc_type_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 2
    functionsReached:
    - lyxp_expr_free
    - ly_free_prefix_data
    - free
    - FREE_ARRAY
    - LY_ARRAY_FREE
    - FREE_MEMBER
    linkageType: ''
    returnType: void
    signature: void lysc_type_free(struct ly_ctx *ctx, struct lysc_type *type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:676,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:677,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - inout
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_action_inout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 671
    functionDepth: 1
    functionLinenumber: 671
    functionLinenumberEnd: 680
    functionName: lysc_node_action_inout_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysc_node_action_inout_free(struct ly_ctx *ctx, struct lysc_node_action_inout
      *inout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:685,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:687,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - action
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_action*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 682
    functionDepth: 1
    functionLinenumber: 682
    functionLinenumberEnd: 692
    functionName: lysc_node_action_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lysc_node_free_
    linkageType: ''
    returnType: void
    signature: void lysc_node_action_free(struct ly_ctx *ctx, struct lysc_node_action
      *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:699,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:700,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:701,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - notif
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_notif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 704
    functionName: lysc_node_notif_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysc_node_notif_free(struct ly_ctx *ctx, struct lysc_node_notif
      *notif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:711,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:712,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:714,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:715,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:717,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:718,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:720,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_container*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 722
    functionName: lysc_node_container_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysc_node_container_free(struct ly_ctx *ctx, struct lysc_node_container
      *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:727,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:728,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:730,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:732,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::free
      Src: /src/libyang/src/tree_schema_free.c:734,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:735,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:736,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_leaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 724
    functionDepth: 3
    functionLinenumber: 724
    functionLinenumberEnd: 738
    functionName: lysc_node_leaf_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - free
    - lysc_type_free
    - FREE_ARRAY
    - lydict_remove
    - struct lysc_node_leaf*::dflt::realtype::plugin::free
    linkageType: ''
    returnType: void
    signature: void lysc_node_leaf_free(struct ly_ctx *ctx, struct lysc_node_leaf
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:745,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:746,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:748,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:750,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_free.c:751,1
    - Dst: realtype::plugin::free
      Src: /src/libyang/src/tree_schema_free.c:752,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:753,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:754,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:756,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_leaflist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 740
    functionDepth: 3
    functionLinenumber: 740
    functionLinenumberEnd: 757
    functionName: lysc_node_leaflist_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - free
    - lysc_type_free
    - FREE_ARRAY
    - lydict_remove
    - LY_ARRAY_FOR
    - realtype::plugin::free
    - LY_ARRAY_FREE
    linkageType: ''
    returnType: void
    signature: void lysc_node_leaflist_free(struct ly_ctx *ctx, struct lysc_node_leaflist
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:765,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:766,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:768,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:769,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_schema_free.c:771,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:772,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:774,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:776,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:777,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:779,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 782
    functionName: lysc_node_list_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - LY_ARRAY_FOR
    - LY_ARRAY_FREE
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysc_node_list_free(struct ly_ctx *ctx, struct lysc_node_list
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:789,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:790,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_choice*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 793
    functionName: lysc_node_choice_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysc_node_choice_free(struct ly_ctx *ctx, struct lysc_node_choice
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:800,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:801,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 804
    functionName: lysc_node_case_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysc_node_case_free(struct ly_ctx *ctx, struct lysc_node_case
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:809,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node_anydata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 811
    functionName: lysc_node_anydata_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - FREE_ARRAY
    linkageType: ''
    returnType: void
    signature: void lysc_node_anydata_free(struct ly_ctx *ctx, struct lysc_node_anydata
      *node)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:819,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:820,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:821,1
    - Dst: lysc_node_container_free
      Src: /src/libyang/src/tree_schema_free.c:826,1
    - Dst: lysc_node_leaf_free
      Src: /src/libyang/src/tree_schema_free.c:829,1
    - Dst: lysc_node_leaflist_free
      Src: /src/libyang/src/tree_schema_free.c:832,1
    - Dst: lysc_node_list_free
      Src: /src/libyang/src/tree_schema_free.c:835,1
    - Dst: lysc_node_choice_free
      Src: /src/libyang/src/tree_schema_free.c:838,1
    - Dst: lysc_node_case_free
      Src: /src/libyang/src/tree_schema_free.c:841,1
    - Dst: lysc_node_anydata_free
      Src: /src/libyang/src/tree_schema_free.c:845,1
    - Dst: lysc_node_action_free
      Src: /src/libyang/src/tree_schema_free.c:849,1
    - Dst: lysc_node_action_inout_free
      Src: /src/libyang/src/tree_schema_free.c:853,1
    - Dst: lysc_node_notif_free
      Src: /src/libyang/src/tree_schema_free.c:857,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema_free.c:860,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:863,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:866,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 813
    functionDepth: 4
    functionLinenumber: 813
    functionLinenumberEnd: 868
    functionName: lysc_node_free_
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 7
    functionsReached:
    - lysc_node_leaflist_free
    - lysc_node_action_inout_free
    - lysc_node_leaf_free
    - lysc_node_choice_free
    - LOGINT
    - lysc_node_action_free
    - free
    - FREE_ARRAY
    - lydict_remove
    - lysc_node_notif_free
    - lysc_node_case_free
    - lysc_node_list_free
    - lysc_node_anydata_free
    - lysc_node_container_free
    linkageType: ''
    returnType: void
    signature: void lysc_node_free_(struct ly_ctx *ctx, struct lysc_node *node)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_actions
      Src: /src/libyang/src/tree_schema_free.c:891,1
    - Dst: lysc_node_notifs
      Src: /src/libyang/src/tree_schema_free.c:893,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/tree_schema_free.c:895,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_schema_free.c:897,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema_free.c:897,1
    - Dst: lysc_node_actions_p
      Src: /src/libyang/src/tree_schema_free.c:912,1
    - Dst: lysc_node_notifs_p
      Src: /src/libyang/src/tree_schema_free.c:914,1
    - Dst: lysc_node_child_p
      Src: /src/libyang/src/tree_schema_free.c:916,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:931,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 3
    argNames:
    - ctx
    - node
    - unlink
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 870
    functionDepth: 5
    functionLinenumber: 870
    functionLinenumberEnd: 932
    functionName: lysc_node_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 1
    functionsReached:
    - lysc_node_actions
    - lysc_node_actions_p
    - LY_CHECK_ERR_RET
    - lysc_node_notifs_p
    - LOGINT
    - lysc_node_child_p
    - lysc_node_notifs
    - lysc_node_free_
    - lysc_node_child
    linkageType: ''
    returnType: void
    signature: void lysc_node_free(struct ly_ctx *ctx, struct lysc_node *node, ly_bool
      unlink)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:946,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:947,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:949,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:950,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:952,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:953,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:955,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:957,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct lysc_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 934
    functionDepth: 5
    functionLinenumber: 934
    functionLinenumberEnd: 958
    functionName: lysc_module_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 2
    functionsReached:
    - FREE_ARRAY
    - lysc_node_free_
    - free
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: void
    signature: void lysc_module_free(struct lysc_module *module)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysc_module_free
      Src: /src/libyang/src/tree_schema_free.c:967,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:968,1
    - Dst: lysp_module_free
      Src: /src/libyang/src/tree_schema_free.c:969,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:971,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:972,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:974,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:975,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:976,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:977,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:978,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:979,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:980,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:981,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:982,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:984,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 960
    functionDepth: 6
    functionLinenumber: 960
    functionLinenumberEnd: 985
    functionName: lys_module_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 10
    functionsReached:
    - free
    - FREE_ARRAY
    - lydict_remove
    - LY_ARRAY_FREE
    - lysc_module_free
    - lysp_module_free
    linkageType: ''
    returnType: void
    signature: void lys_module_free(struct lys_module *module)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:1011,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:1012,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:1029,1
    - Dst: FREE_STRINGS
      Src: /src/libyang/src/tree_schema_free.c:1036,1
    - Dst: lysc_iffeature_free
      Src: /src/libyang/src/tree_schema_free.c:1046,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:1047,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:1050,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:1060,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:1067,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema_free.c:1074,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_schema_free.c:1078,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 69
    argCount: 2
    argNames:
    - ctx
    - substmts
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_substmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 987
    functionDepth: 5
    functionLinenumber: 987
    functionLinenumberEnd: 1079
    functionName: lyplg_ext_instance_substatements_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 0
    functionsReached:
    - lysc_iffeature_free
    - free
    - LOGINT
    - lysc_type_free
    - FREE_ARRAY
    - lydict_remove
    - LY_ARRAY_FREE
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    - FREE_STRINGS
    linkageType: ''
    returnType: API
    signature: API lyplg_ext_instance_substatements_free(struct ly_ctx *ctx, struct
      lysc_ext_substmt *substmts)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/tree_schema_free.c:1011,1
    - Dst: lysc_node_free_
      Src: /src/libyang/src/tree_schema_free.c:1012,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_schema_free.c:1029,1
    - Dst: FREE_STRINGS
      Src: /src/libyang/src/tree_schema_free.c:1036,1
    - Dst: lysc_iffeature_free
      Src: /src/libyang/src/tree_schema_free.c:1046,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:1047,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:1050,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/tree_schema_free.c:1060,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/tree_schema_free.c:1067,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_schema_free.c:1074,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 992
    functionDepth: 5
    functionLinenumber: 992
    functionLinenumberEnd: 1076
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 34
    functionsReached:
    - lysc_iffeature_free
    - free
    - LOGINT
    - lysc_type_free
    - FREE_ARRAY
    - lydict_remove
    - lysc_node_free_
    - LY_LIST_FOR_SAFE
    - FREE_STRINGS
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(substmts, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:1085,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lys_yang_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1081
    functionDepth: 0
    functionLinenumber: 1081
    functionLinenumberEnd: 1087
    functionName: yang_parser_ctx_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 5
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void yang_parser_ctx_free(struct lys_yang_parser_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxml_ctx_free
      Src: /src/libyang/src/tree_schema_free.c:1093,1
    - Dst: free
      Src: /src/libyang/src/tree_schema_free.c:1094,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lys_yin_parser_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1089
    functionDepth: 2
    functionLinenumber: 1089
    functionLinenumberEnd: 1096
    functionName: yin_parser_ctx_free
    functionSourceFile: /src/libyang/src/tree_schema_free.c
    functionUses: 6
    functionsReached:
    - lyxml_ctx_free
    - free
    linkageType: ''
    returnType: void
    signature: void yin_parser_ctx_free(struct lys_yin_parser_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - STATUS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: JSON_PUSH_STATUS_RET
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_PUSH_STATUS_RET(CTX, STATUS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CTX
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: JSON_POP_STATUS_RET
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_POP_STATUS_RET(CTX)
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 32
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum LYJSON_PARSER_STATUS
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 67
    functionName: lyjson_token2str
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      lyjson_token2str(enum LYJSON_PARSER_STATUS status)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_jsonws
      Src: /src/libyang/src/json.c:73,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/json.c:75,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:77,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 84
    functionName: skip_ws
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - ly_in_skip
    - is_jsonws
    - JSON_PUSH_STATUS_RET
    - LY_IN_NEW_LINE
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR skip_ws(struct lyjson_ctx *jsonctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/json.c:92,1
    - Dst: free
      Src: /src/libyang/src/json.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - jsonctx
    - value
    - value_len
    - dynamic
    argTypes:
    - struct lyjson_ctx*
    - char*
    - size_t
    - ly_bool
    assertStmts:
    - condition: (jsonctx)
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/libyang/src/json.c
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: lyjson_ctx_set_value
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - free
    - assert
    linkageType: ''
    returnType: void
    signature: void lyjson_ctx_set_value(struct lyjson_ctx *jsonctx, const char *value,
      size_t value_len, ly_bool dynamic)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: is_jsonws
      Src: /src/libyang/src/json.c:107,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:110,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:111,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:111,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:115,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:116,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:116,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:122,1
    - Dst: lyjson_token2str
      Src: /src/libyang/src/json.c:123,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:123,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: lyjson_check_next
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - lyjson_token2str
    - lyjson_ctx_status
    - skip_ws
    - LY_CHECK_RET
    - LOGVAL
    - is_jsonws
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_check_next(struct lyjson_ctx *jsonctx)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/json.c:145,1
    - Dst: malloc
      Src: /src/libyang/src/json.c:162,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/json.c:163,1
    - Dst: LOGMEM
      Src: /src/libyang/src/json.c:163,1
    - Dst: ly_realloc
      Src: /src/libyang/src/json.c:173,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/json.c:174,1
    - Dst: LOGMEM
      Src: /src/libyang/src/json.c:174,1
    - Dst: memcpy
      Src: /src/libyang/src/json.c:180,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:224,1
    - Dst: isdigit
      Src: /src/libyang/src/json.c:226,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:238,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/json.c:244,1
    - Dst: ly_pututf8
      Src: /src/libyang/src/json.c:244,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:245,1
    - Dst: ly_realloc
      Src: /src/libyang/src/json.c:256,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/json.c:257,1
    - Dst: LOGMEM
      Src: /src/libyang/src/json.c:257,1
    - Dst: memcpy
      Src: /src/libyang/src/json.c:259,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/json.c:274,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/json.c:274,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:275,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/json.c:277,1
    - Dst: is_jsonstrchar
      Src: /src/libyang/src/json.c:277,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:278,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:288,1
    - Dst: LOGVAL_LINE
      Src: /src/libyang/src/json.c:289,1
    - Dst: free
      Src: /src/libyang/src/json.c:292,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:298,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:300,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 114
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts:
    - condition: (jsonctx)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/libyang/src/json.c
    constantsTouched: []
    func_position:
      end: 307
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 307
    functionName: lyjson_string_
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - isdigit
    - LY_CHECK_ERR_GOTO
    - LY_CHECK_ERR_RET
    - memcpy
    - malloc
    - lyjson_ctx_set_value
    - ly_getutf8
    - ly_pututf8
    - free
    - LOGVAL
    - LOGVAL_LINE
    - ly_realloc
    - LOGMEM
    - assert
    - is_jsonstrchar
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_string_(struct lyjson_ctx *jsonctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:316,1
    - Dst: lyjson_string_
      Src: /src/libyang/src/json.c:316,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:318,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:319,1
    - Dst: lyjson_check_next
      Src: /src/libyang/src/json.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 313
    functionDepth: 3
    functionLinenumber: 313
    functionLinenumberEnd: 322
    functionName: lyjson_string
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - JSON_PUSH_STATUS_RET
    - lyjson_check_next
    - lyjson_string_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_string(struct lyjson_ctx *jsonctx)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/libyang/src/json.c:338,1
    - Dst: isdigit
      Src: /src/libyang/src/json.c:340,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:346,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:348,1
    - Dst: isdigit
      Src: /src/libyang/src/json.c:355,1
    - Dst: isdigit
      Src: /src/libyang/src/json.c:358,1
    - Dst: isdigit
      Src: /src/libyang/src/json.c:368,1
    - Dst: isdigit
      Src: /src/libyang/src/json.c:371,1
    - Dst: strtol
      Src: /src/libyang/src/json.c:385,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:387,1
    - Dst: ly_strnchr
      Src: /src/libyang/src/json.c:392,1
    - Dst: labs
      Src: /src/libyang/src/json.c:399,1
    - Dst: labs
      Src: /src/libyang/src/json.c:405,1
    - Dst: labs
      Src: /src/libyang/src/json.c:418,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/json.c:428,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:428,1
    - Dst: malloc
      Src: /src/libyang/src/json.c:432,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/json.c:433,1
    - Dst: LOGMEM
      Src: /src/libyang/src/json.c:433,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:478,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:481,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:483,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:485,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:486,1
    - Dst: lyjson_check_next
      Src: /src/libyang/src/json.c:486,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 125
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 489
    functionName: lyjson_number
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - isdigit
    - ly_in_skip
    - LY_CHECK_ERR_RET
    - lyjson_check_next
    - malloc
    - lyjson_ctx_set_value
    - ly_strnchr
    - labs
    - strtol
    - LY_CHECK_RET
    - LOGVAL
    - JSON_PUSH_STATUS_RET
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_number(struct lyjson_ctx *jsonctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:495,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/json.c:495,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:499,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:501,1
    - Dst: lyjson_string_
      Src: /src/libyang/src/json.c:501,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:502,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:502,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:504,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/json.c:504,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:508,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:509,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 512
    functionName: lyjson_object_name
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - lyjson_string_
    - ly_in_skip
    - skip_ws
    - LY_CHECK_RET
    - LY_VCODE_INSTREXP_len
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_object_name(struct lyjson_ctx *jsonctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:517,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:517,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:521,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:522,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:523,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:527,1
    - Dst: lyjson_object_name
      Src: /src/libyang/src/json.c:527,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 514
    functionDepth: 4
    functionLinenumber: 514
    functionLinenumberEnd: 533
    functionName: lyjson_object
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - ly_in_skip
    - lyjson_object_name
    - lyjson_ctx_set_value
    - skip_ws
    - LY_CHECK_RET
    - JSON_PUSH_STATUS_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_object(struct lyjson_ctx *jsonctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:546,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:546,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:550,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:551,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:553,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 560
    functionName: lyjson_array
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - ly_in_skip
    - lyjson_ctx_set_value
    - skip_ws
    - LY_CHECK_RET
    - JSON_PUSH_STATUS_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_array(struct lyjson_ctx *jsonctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:565,1
    - Dst: strncmp
      Src: /src/libyang/src/json.c:569,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:569,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:571,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:571,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:572,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:572,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:573,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:574,1
    - Dst: lyjson_check_next
      Src: /src/libyang/src/json.c:574,1
    - Dst: strncmp
      Src: /src/libyang/src/json.c:576,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:576,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:578,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:578,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:579,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:579,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:580,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:581,1
    - Dst: lyjson_check_next
      Src: /src/libyang/src/json.c:581,1
    - Dst: strncmp
      Src: /src/libyang/src/json.c:583,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:583,1
    - Dst: lyjson_ctx_set_value
      Src: /src/libyang/src/json.c:585,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:586,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/json.c:586,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:587,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:588,1
    - Dst: lyjson_check_next
      Src: /src/libyang/src/json.c:588,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:592,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:593,1
    - Dst: lyjson_string
      Src: /src/libyang/src/json.c:593,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:597,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:598,1
    - Dst: lyjson_array
      Src: /src/libyang/src/json.c:598,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:602,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:603,1
    - Dst: lyjson_object
      Src: /src/libyang/src/json.c:603,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:607,1
    - Dst: lyjson_number
      Src: /src/libyang/src/json.c:607,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:611,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/json.c:611,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 562
    functionDepth: 5
    functionLinenumber: 562
    functionLinenumberEnd: 617
    functionName: lyjson_value
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - ly_in_skip
    - lyjson_string
    - lyjson_object
    - lyjson_check_next
    - lyjson_ctx_set_value
    - lyjson_ctx_status
    - LY_CHECK_RET
    - LY_VCODE_INSTREXP_len
    - strncmp
    - LOGVAL
    - ly_strlen_const
    - lyjson_number
    - JSON_PUSH_STATUS_RET
    - lyjson_array
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_value(struct lyjson_ctx *jsonctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/json.c:625,1
    - Dst: assert
      Src: /src/libyang/src/json.c:626,1
    - Dst: assert
      Src: /src/libyang/src/json.c:627,1
    - Dst: calloc
      Src: /src/libyang/src/json.c:630,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/json.c:631,1
    - Dst: LOGMEM
      Src: /src/libyang/src/json.c:631,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/src/json.c:635,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/json.c:638,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:638,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:639,1
    - Dst: lyjson_value
      Src: /src/libyang/src/json.c:644,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:646,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:647,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/src/json.c:653,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - in
    - jsonctx_p
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - struct lyjson_ctx**
    assertStmts:
    - condition: (ctx)
      pos:
        line_end: 624
        line_start: 624
        source_file: /src/libyang/src/json.c
    - condition: (in)
      pos:
        line_end: 625
        line_start: 625
        source_file: /src/libyang/src/json.c
    - condition: (jsonctx_p)
      pos:
        line_end: 626
        line_start: 626
        source_file: /src/libyang/src/json.c
    constantsTouched: []
    func_position:
      end: 658
      start: 619
    functionDepth: 6
    functionLinenumber: 619
    functionLinenumberEnd: 658
    functionName: lyjson_ctx_new
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 5
    functionsReached:
    - assert
    - LY_CHECK_ERR_RET
    - lyjson_ctx_status
    - skip_ws
    - lyjson_value
    - lyjson_ctx_free
    - LOGVAL
    - LY_CHECK_GOTO
    - LOG_LOCINIT
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_ctx_new(const struct ly_ctx *ctx, struct ly_in *in, struct
      lyjson_ctx **jsonctx_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/json.c:664,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:666,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 673
    functionName: lyjson_ctx_backup
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - free
    - lyjson_ctx_status
    linkageType: ''
    returnType: void
    signature: void lyjson_ctx_backup(struct lyjson_ctx *jsonctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/json.c:679,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 688
    functionName: lyjson_ctx_restore
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void lyjson_ctx_restore(struct lyjson_ctx *jsonctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/json.c:697,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:699,1
    - Dst: lyjson_value
      Src: /src/libyang/src/json.c:703,1
    - Dst: JSON_POP_STATUS_RET
      Src: /src/libyang/src/json.c:707,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:708,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:715,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:715,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:718,1
    - Dst: assert
      Src: /src/libyang/src/json.c:728,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:732,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/json.c:733,1
    - Dst: skip_ws
      Src: /src/libyang/src/json.c:733,1
    - Dst: lyjson_object_name
      Src: /src/libyang/src/json.c:737,1
    - Dst: lyjson_value
      Src: /src/libyang/src/json.c:740,1
    - Dst: ly_in_skip
      Src: /src/libyang/src/json.c:743,1
    - Dst: JSON_POP_STATUS_RET
      Src: /src/libyang/src/json.c:744,1
    - Dst: JSON_PUSH_STATUS_RET
      Src: /src/libyang/src/json.c:745,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:748,1
    - Dst: LY_VCODE_INSTREXP_len
      Src: /src/libyang/src/json.c:748,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:754,1
    - Dst: LOGVAL
      Src: /src/libyang/src/json.c:755,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/json.c:760,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 50
    argCount: 2
    argNames:
    - jsonctx
    - status
    argTypes:
    - struct lyjson_ctx*
    - enum LYJSON_PARSER_STATUS*
    assertStmts:
    - condition: (prev == LYJSON_OBJECT || prev == LYJSON_ARRAY)
      pos:
        line_end: 727
        line_start: 727
        source_file: /src/libyang/src/json.c
    - condition: (jsonctx)
      pos:
        line_end: 696
        line_start: 696
        source_file: /src/libyang/src/json.c
    constantsTouched: []
    func_position:
      end: 764
      start: 690
    functionDepth: 6
    functionLinenumber: 690
    functionLinenumberEnd: 764
    functionName: lyjson_ctx_next
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 3
    functionsReached:
    - ly_in_skip
    - lyjson_object_name
    - lyjson_ctx_status
    - lyjson_value
    - skip_ws
    - LY_CHECK_RET
    - LY_VCODE_INSTREXP_len
    - JSON_POP_STATUS_RET
    - LOGVAL
    - JSON_PUSH_STATUS_RET
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyjson_ctx_next(struct lyjson_ctx *jsonctx, enum LYJSON_PARSER_STATUS
      *status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/json.c:769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - jsonctx
    - index
    argTypes:
    - struct lyjson_ctx*
    - uint32_t
    assertStmts:
    - condition: (jsonctx)
      pos:
        line_end: 768
        line_start: 768
        source_file: /src/libyang/src/json.c
    constantsTouched: []
    func_position:
      end: 778
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 778
    functionName: lyjson_ctx_status
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 10
    functionsReached:
    - assert
    linkageType: ''
    returnType: enum LYJSON_PARSER_STATUS
    signature: enum LYJSON_PARSER_STATUS lyjson_ctx_status(struct lyjson_ctx *jsonctx,
      uint32_t index)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/json.c:787,1
    - Dst: free
      Src: /src/libyang/src/json.c:790,1
    - Dst: free
      Src: /src/libyang/src/json.c:793,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/json.c:796,1
    - Dst: free
      Src: /src/libyang/src/json.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 780
    functionDepth: 1
    functionLinenumber: 780
    functionLinenumberEnd: 799
    functionName: lyjson_ctx_free
    functionSourceFile: /src/libyang/src/json.c
    functionUses: 6
    functionsReached:
    - ly_set_erase
    - LOG_LOCBACK
    - free
    linkageType: ''
    returnType: void
    signature: void lyjson_ctx_free(struct lyjson_ctx *jsonctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: xml_print_data
      Src: /src/libyang/src/printer_data.c:33,1
    - Dst: json_print_data
      Src: /src/libyang/src/printer_data.c:36,1
    - Dst: lyb_print_data
      Src: /src/libyang/src/printer_data.c:39,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_data.c:42,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_data.c:42,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - out
    - root
    - format
    - options
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 26
    functionDepth: 10
    functionLinenumber: 26
    functionLinenumberEnd: 48
    functionName: lyd_print_
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 0
    functionsReached:
    - LOGINT
    - json_print_data
    - lyb_print_data
    - LYD_CTX
    - xml_print_data
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_print_(struct ly_out *out, const struct lyd_node *root,
      LYD_FORMAT format, uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_data.c:53,1
    - Dst: lyd_parent
      Src: /src/libyang/src/printer_data.c:61,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_data.c:69,1
    - Dst: lyd_print_
      Src: /src/libyang/src/printer_data.c:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - out
    - root
    - format
    - options
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 50
    functionDepth: 11
    functionLinenumber: 50
    functionLinenumberEnd: 72
    functionName: lyd_print_all
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - lyd_parent
    - lyd_print_
    linkageType: ''
    returnType: API
    signature: API lyd_print_all(struct ly_out *out, const struct lyd_node *root,
      LYD_FORMAT format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_data.c:77,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_data.c:83,1
    - Dst: lyd_print_
      Src: /src/libyang/src/printer_data.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - out
    - root
    - format
    - options
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 74
    functionDepth: 11
    functionLinenumber: 74
    functionLinenumberEnd: 86
    functionName: lyd_print_tree
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - lyd_print_
    linkageType: ''
    returnType: API
    signature: API lyd_print_tree(struct ly_out *out, const struct lyd_node *root,
      LYD_FORMAT format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_data.c:94,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_data.c:99,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/src/printer_data.c:99,1
    - Dst: lyd_print_
      Src: /src/libyang/src/printer_data.c:100,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_data.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - strp
    - root
    - format
    - options
    argTypes:
    - char**
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 88
    functionDepth: 11
    functionLinenumber: 88
    functionLinenumberEnd: 103
    functionName: lyd_print_mem
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 18
    functionsReached:
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - lyd_print_
    - ly_out_free
    - ly_out_new_memory
    linkageType: ''
    returnType: API
    signature: API lyd_print_mem(char **strp, const struct lyd_node *root, LYD_FORMAT
      format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_data.c:111,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_data.c:113,1
    - Dst: ly_out_new_fd
      Src: /src/libyang/src/printer_data.c:113,1
    - Dst: lyd_print_
      Src: /src/libyang/src/printer_data.c:114,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_data.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - fd
    - root
    - format
    - options
    argTypes:
    - int
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 11
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: lyd_print_fd
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - ly_out_new_fd
    - lyd_print_
    - ly_out_free
    linkageType: ''
    returnType: API
    signature: API lyd_print_fd(int fd, const struct lyd_node *root, LYD_FORMAT format,
      uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_data.c:125,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_data.c:127,1
    - Dst: ly_out_new_file
      Src: /src/libyang/src/printer_data.c:127,1
    - Dst: lyd_print_
      Src: /src/libyang/src/printer_data.c:128,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_data.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - f
    - root
    - format
    - options
    argTypes:
    - FILE*
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 119
    functionDepth: 11
    functionLinenumber: 119
    functionLinenumberEnd: 131
    functionName: lyd_print_file
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 0
    functionsReached:
    - ly_out_new_file
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - lyd_print_
    - ly_out_free
    linkageType: ''
    returnType: API
    signature: API lyd_print_file(FILE *f, const struct lyd_node *root, LYD_FORMAT
      format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_data.c:139,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_data.c:141,1
    - Dst: ly_out_new_filepath
      Src: /src/libyang/src/printer_data.c:141,1
    - Dst: lyd_print_
      Src: /src/libyang/src/printer_data.c:142,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_data.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - path
    - root
    - format
    - options
    argTypes:
    - char*
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 133
    functionDepth: 11
    functionLinenumber: 133
    functionLinenumberEnd: 145
    functionName: lyd_print_path
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_out_new_filepath
    - LY_CHECK_RET
    - lyd_print_
    - ly_out_free
    linkageType: ''
    returnType: API
    signature: API lyd_print_path(const char *path, const struct lyd_node *root, LYD_FORMAT
      format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_data.c:153,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_data.c:155,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/src/printer_data.c:155,1
    - Dst: lyd_print_
      Src: /src/libyang/src/printer_data.c:156,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_data.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - writeclb
    - user_data
    - root
    - format
    - options
    argTypes:
    - ly_write_clb
    - void*
    - struct lyd_node*
    - LYD_FORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 147
    functionDepth: 11
    functionLinenumber: 147
    functionLinenumberEnd: 159
    functionName: lyd_print_clb
    functionSourceFile: /src/libyang/src/printer_data.c
    functionUses: 0
    functionsReached:
    - ly_out_new_clb
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - lyd_print_
    - ly_out_free
    linkageType: ''
    returnType: API
    signature: API lyd_print_clb(ly_write_clb writeclb, void *user_data, const struct
      lyd_node *root, LYD_FORMAT format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - EACTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 86
    functionName: LY_ARRAY_NEW
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_NEW(CTX, ARRAY, EACTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - NEW_ITEM
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: LY_ARRAY_NEW_RET
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_NEW_RET(CTX, ARRAY, NEW_ITEM, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - NEW_ITEM
    - ','
    - RET
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 119
    functionName: LY_ARRAY_NEW_GOTO
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_NEW_GOTO(CTX, ARRAY, NEW_ITEM, RET, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - SIZE
    - ','
    - EACTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 158
    functionName: LY_ARRAY_CREATE
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_CREATE(CTX, ARRAY, SIZE, EACTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - SIZE
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: LY_ARRAY_CREATE_RET
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_CREATE_RET(CTX, ARRAY, SIZE, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - SIZE
    - ','
    - RET
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 191
    functionName: LY_ARRAY_CREATE_GOTO
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_CREATE_GOTO(CTX, ARRAY, SIZE, RET, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ARRAY
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: LY_ARRAY_INCREMENT
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_INCREMENT(ARRAY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ARRAY
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 213
    functionName: LY_ARRAY_DECREMENT
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_DECREMENT(ARRAY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ARRAY
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 226
    functionName: LY_ARRAY_DECREMENT_FREE
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_DECREMENT_FREE(ARRAY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ARRAY
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    functionName: LY_ARRAY_FREE
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_FREE(ARRAY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - LIST
    - ','
    - NEW_ITEM
    - ','
    - LINKER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 255
    functionName: LY_LIST_INSERT
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_LIST_INSERT(LIST, NEW_ITEM, LINKER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - LIST
    - ','
    - NEW_ITEM
    - ','
    - LINKER
    - ','
    - EACTION
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 277
    functionName: LY_LIST_NEW
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_LIST_NEW(CTX, LIST, NEW_ITEM, LINKER, EACTION)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - LIST
    - ','
    - NEW_ITEM
    - ','
    - LINKER
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 289
    functionName: LY_LIST_NEW_RET
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_LIST_NEW_RET(CTX, LIST, NEW_ITEM, LINKER, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - CTX
    - ','
    - LIST
    - ','
    - NEW_ITEM
    - ','
    - LINKER
    - ','
    - RET
    - ','
    - LABEL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 302
    functionName: LY_LIST_NEW_GOTO
    functionSourceFile: /src/libyang/src/tree_edit.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_LIST_NEW_GOTO(CTX, LIST, NEW_ITEM, LINKER, RET, LABEL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_ctx_free
      Src: /src/libyang/src/parser_xml.c:65,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/src/parser_xml.c:66,1
    - Dst: free
      Src: /src/libyang/src/parser_xml.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lydctx
    argTypes:
    - struct lyd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: lyd_xml_ctx_free
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - lyd_ctx_free
    - free
    - lyxml_ctx_free
    linkageType: ''
    returnType: void
    signature: void lyd_xml_ctx_free(struct lyd_ctx *lydctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:88,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:94,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:94,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:95,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:96,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:96,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/parser_xml.c:101,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:105,1
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/src/parser_xml.c:108,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:113,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:125,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:125,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:126,1
    - Dst: lyd_parser_create_meta
      Src: /src/libyang/src/parser_xml.c:129,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:131,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:134,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:134,1
    - Dst: lyd_free_meta_siblings
      Src: /src/libyang/src/parser_xml.c:139,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 2
    argNames:
    - lydctx
    - meta
    argTypes:
    - struct lyd_xml_ctx*
    - struct lyd_meta**
    assertStmts:
    - condition: (xmlctx->status == LYXML_ATTR_CONTENT)
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ATTR_CONTENT)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 143
      start: 70
    functionDepth: 5
    functionLinenumber: 70
    functionLinenumberEnd: 143
    functionName: lydxml_metadata
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - lyd_parser_create_meta
    - ly_ctx_get_module_implemented_ns
    - lyd_free_meta_siblings
    - LOGVAL
    - lyxml_ns_get
    - LY_CHECK_GOTO
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_metadata(struct lyd_xml_ctx *lydctx, struct lyd_meta
      **meta)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:156,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/parser_xml.c:163,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:165,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:182,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:182,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:183,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:187,1
    - Dst: ly_store_prefix_data
      Src: /src/libyang/src/parser_xml.c:187,1
    - Dst: lyd_create_attr
      Src: /src/libyang/src/parser_xml.c:191,1
    - Dst: strlen
      Src: /src/libyang/src/parser_xml.c:192,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:193,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:200,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:200,1
    - Dst: lyd_free_attr_siblings
      Src: /src/libyang/src/parser_xml.c:205,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 2
    argNames:
    - xmlctx
    - attr
    argTypes:
    - struct lyxml_ctx*
    - struct lyd_attr**
    assertStmts:
    - condition: (attr)
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ATTR_CONTENT)
      pos:
        line_end: 182
        line_start: 182
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 209
      start: 145
    functionDepth: 5
    functionLinenumber: 145
    functionLinenumberEnd: 209
    functionName: lydxml_attrs
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - strlen
    - lyd_create_attr
    - lyd_free_attr_siblings
    - ly_store_prefix_data
    - lyxml_ns_get
    - LOGVAL
    - LY_CHECK_GOTO
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_attrs(struct lyxml_ctx *xmlctx, struct lyd_attr **attr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:220,1
    - Dst: lys_getnext
      Src: /src/libyang/src/parser_xml.c:224,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_xml.c:225,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:226,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/parser_xml.c:236,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:240,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:240,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:244,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:244,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:245,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:246,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:246,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:249,1
    - Dst: lys_value_validate
      Src: /src/libyang/src/parser_xml.c:252,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/parser_xml.c:255,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:260,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:260,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:265,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:265,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:267,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:268,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:268,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:272,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:273,1
    - Dst: lyxml_ctx_peek
      Src: /src/libyang/src/parser_xml.c:273,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:275,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:275,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/parser_xml.c:285,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 2
    argNames:
    - xmlctx
    - list
    argTypes:
    - struct lyxml_ctx*
    - struct lysc_node*
    assertStmts:
    - condition: (xmlctx->status == LYXML_ATTR_CONTENT)
      pos:
        line_end: 244
        line_start: 244
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CLOSE)
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/libyang/src/parser_xml.c
    - condition: (list && (list->nodetype == LYS_LIST))
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CLOSE)
      pos:
        line_end: 271
        line_start: 271
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 287
      start: 211
    functionDepth: 5
    functionLinenumber: 211
    functionLinenumberEnd: 287
    functionName: lydxml_check_list
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - ly_strncmp
    - lys_value_validate
    - lys_getnext
    - lyxml_ctx_peek
    - ly_set_add
    - LY_CHECK_GOTO
    - ly_set_rm_index
    - ly_set_erase
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_check_list(struct lyxml_ctx *xmlctx, const struct lysc_node
      *list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:299,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:299,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:301,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:301,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:305,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:305,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:309,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:310,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - xmlctx
    argTypes:
    - struct lyxml_ctx*
    assertStmts:
    - condition: (xmlctx->status == LYXML_ELEM_CLOSE)
      pos:
        line_end: 308
        line_start: 308
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 313
      start: 289
    functionDepth: 5
    functionLinenumber: 289
    functionLinenumberEnd: 313
    functionName: lydxml_data_skip
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_data_skip(struct lyxml_ctx *xmlctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:344,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:344,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:345,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:345,1
    - Dst: lys_value_validate
      Src: /src/libyang/src/parser_xml.c:350,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:355,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:355,1
    - Dst: lydxml_check_list
      Src: /src/libyang/src/parser_xml.c:357,1
    - Dst: free
      Src: /src/libyang/src/parser_xml.c:366,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:376,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 2
    argNames:
    - lydctx
    - snode
    argTypes:
    - struct lyd_xml_ctx*
    - struct lysc_node**
    assertStmts:
    - condition: (xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 375
        line_start: 375
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 384
      start: 315
    functionDepth: 6
    functionLinenumber: 315
    functionLinenumberEnd: 384
    functionName: lydxml_data_check_opaq
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - free
    - lydxml_check_list
    - lys_value_validate
    - LY_CHECK_GOTO
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_data_check_opaq(struct lyd_xml_ctx *lydctx, const struct
      lysc_node **snode)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:415,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:421,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/parser_xml.c:430,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:432,1
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/src/parser_xml.c:436,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:439,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:445,1
    - Dst: lydxml_data_skip
      Src: /src/libyang/src/parser_xml.c:445,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:451,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:451,1
    - Dst: lysc_ext_find_node
      Src: /src/libyang/src/parser_xml.c:457,1
    - Dst: lys_find_child
      Src: /src/libyang/src/parser_xml.c:459,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:464,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:468,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:471,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:475,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:482,1
    - Dst: lydxml_data_skip
      Src: /src/libyang/src/parser_xml.c:482,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:487,1
    - Dst: lyd_parser_check_schema
      Src: /src/libyang/src/parser_xml.c:487,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:488,1
    - Dst: lydxml_data_check_opaq
      Src: /src/libyang/src/parser_xml.c:488,1
    - Dst: lydxml_metadata
      Src: /src/libyang/src/parser_xml.c:495,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:496,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:498,1
    - Dst: lydxml_attrs
      Src: /src/libyang/src/parser_xml.c:499,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:500,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:504,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:506,1
    - Dst: free
      Src: /src/libyang/src/parser_xml.c:511,1
    - Dst: ly_store_prefix_data
      Src: /src/libyang/src/parser_xml.c:519,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:521,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/parser_xml.c:525,1
    - Dst: strlen
      Src: /src/libyang/src/parser_xml.c:525,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:527,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:530,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:530,1
    - Dst: lydxml_subtree_r
      Src: /src/libyang/src/parser_xml.c:534,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_xml.c:534,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:535,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:539,1
    - Dst: lyd_parser_create_term
      Src: /src/libyang/src/parser_xml.c:539,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_xml.c:541,1
    - Dst: lyd_insert_get_next_anchor
      Src: /src/libyang/src/parser_xml.c:545,1
    - Dst: lyd_child
      Src: /src/libyang/src/parser_xml.c:545,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:548,1
    - Dst: LOGWRN
      Src: /src/libyang/src/parser_xml.c:552,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:558,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:558,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:562,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:570,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/parser_xml.c:577,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:578,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_xml.c:580,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:583,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:583,1
    - Dst: lydxml_subtree_r
      Src: /src/libyang/src/parser_xml.c:587,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_xml.c:587,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:588,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:593,1
    - Dst: lyd_parse_check_keys
      Src: /src/libyang/src/parser_xml.c:593,1
    - Dst: lyd_validate_new
      Src: /src/libyang/src/parser_xml.c:598,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_xml.c:598,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:599,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/parser_xml.c:602,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_xml.c:602,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:604,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:614,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_xml.c:622,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:625,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:625,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/parser_xml.c:628,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:629,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:632,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:632,1
    - Dst: lydxml_subtree_r
      Src: /src/libyang/src/parser_xml.c:640,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_xml.c:641,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/parser_xml.c:646,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:647,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:650,1
    - Dst: lyd_parse_set_data_flags
      Src: /src/libyang/src/parser_xml.c:654,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:658,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:659,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:659,1
    - Dst: lyd_insert_meta
      Src: /src/libyang/src/parser_xml.c:663,1
    - Dst: lyd_insert_attr
      Src: /src/libyang/src/parser_xml.c:665,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:669,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_xml.c:676,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_xml.c:679,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_xml.c:683,1
    - Dst: lyd_free_meta_siblings
      Src: /src/libyang/src/parser_xml.c:684,1
    - Dst: lyd_free_attr_siblings
      Src: /src/libyang/src/parser_xml.c:685,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:686,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 204
    argCount: 4
    argNames:
    - lydctx
    - parent
    - first_p
    - parsed
    argTypes:
    - struct lyd_xml_ctx*
    - struct lyd_node*
    - struct lyd_node**
    - struct ly_set*
    assertStmts:
    - condition: (lydctx->parse_opts & LYD_PARSE_OPAQ)
      pos:
        line_end: 497
        line_start: 497
        source_file: /src/libyang/src/parser_xml.c
    - condition: (lydctx->parse_opts & LYD_PARSE_OPAQ)
      pos:
        line_end: 505
        line_start: 505
        source_file: /src/libyang/src/parser_xml.c
    - condition: (parent || first_p)
      pos:
        line_end: 414
        line_start: 414
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 420
        line_start: 420
        source_file: /src/libyang/src/parser_xml.c
    - condition: (node)
      pos:
        line_end: 649
        line_start: 649
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CLOSE)
      pos:
        line_end: 657
        line_start: 657
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 503
        line_start: 503
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 688
      start: 396
    functionDepth: 7
    functionLinenumber: 396
    functionLinenumberEnd: 688
    functionName: lydxml_subtree_r
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 1
    functionsReached:
    - strlen
    - ly_ctx_get_module_implemented_ns
    - lyd_new_implicit_r
    - lyd_parse_check_keys
    - lyd_free_meta_siblings
    - lys_find_child
    - lyd_free_attr_siblings
    - lydxml_data_skip
    - lydict_insert
    - LY_CHECK_GOTO
    - LY_CHECK_ERR_GOTO
    - lyd_insert_get_next_anchor
    - lysc_ext_find_node
    - lyd_parse_set_data_flags
    - lydxml_attrs
    - lyd_create_any
    - lyd_create_opaq
    - lydxml_data_check_opaq
    - lyd_insert_node
    - assert
    - LOG_LOCBACK
    - lydxml_subtree_r
    - lydxml_metadata
    - lyd_validate_new
    - lyd_free_tree
    - free
    - lyd_insert_meta
    - lyd_parser_check_schema
    - ly_store_prefix_data
    - lyxml_ns_get
    - LOGVAL
    - lyd_node_child_p
    - lyd_parser_create_term
    - lyd_insert_attr
    - LOG_LOCSET
    - lyd_child
    - lyd_create_inner
    - LOGWRN
    - ly_set_add
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_subtree_r(struct lyd_xml_ctx *lydctx, struct lyd_node
      *parent, struct lyd_node **first_p, struct ly_set *parsed)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:711,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/parser_xml.c:712,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/parser_xml.c:719,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:721,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:723,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:728,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:728,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:732,1
    - Dst: lydxml_attrs
      Src: /src/libyang/src/parser_xml.c:732,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:735,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:737,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/parser_xml.c:744,1
    - Dst: strlen
      Src: /src/libyang/src/parser_xml.c:744,1
    - Dst: strlen
      Src: /src/libyang/src/parser_xml.c:744,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:746,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:753,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:753,1
    - Dst: lyd_free_attr_siblings
      Src: /src/libyang/src/parser_xml.c:756,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:758,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 5
    argNames:
    - xmlctx
    - name
    - uri
    - value
    - envp
    argTypes:
    - struct lyxml_ctx*
    - char*
    - char*
    - ly_bool
    - struct lyd_node**
    assertStmts:
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 710
        line_start: 710
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 734
        line_start: 734
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 762
      start: 702
    functionDepth: 7
    functionLinenumber: 702
    functionLinenumberEnd: 762
    functionName: lydxml_envelope
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_strncmp
    - lyd_free_tree
    - lydxml_attrs
    - strcmp
    - LY_CHECK_RET
    - lyd_create_opaq
    - lyxml_ns_get
    - LOGVAL
    - lyd_free_attr_siblings
    - LY_CHECK_GOTO
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_envelope(struct lyxml_ctx *xmlctx, const char *name,
      const char *uri, ly_bool value, struct lyd_node **envp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:780,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:783,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_xml.c:784,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:787,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:790,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:806,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - xmlctx
    - envp
    - int_opts
    - close_elem
    argTypes:
    - struct lyxml_ctx*
    - struct lyd_node**
    - uint32_t*
    - uint32_t*
    assertStmts:
    - condition: (envp && !*envp)
      pos:
        line_end: 779
        line_start: 779
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 810
      start: 774
    functionDepth: 8
    functionLinenumber: 774
    functionLinenumberEnd: 810
    functionName: lydxml_env_netconf_rpc
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyd_free_tree
    - lydxml_envelope
    - lyd_insert_node
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_env_netconf_rpc(struct lyxml_ctx *xmlctx, struct lyd_node
      **envp, uint32_t *int_opts, uint32_t *close_elem)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:828,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:831,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_xml.c:832,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:835,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:837,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_xml.c:841,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:844,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:851,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:852,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:857,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:857,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:865,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - xmlctx
    - envp
    - int_opts
    - close_elem
    argTypes:
    - struct lyxml_ctx*
    - struct lyd_node**
    - uint32_t*
    - uint32_t*
    assertStmts:
    - condition: (envp && !*envp)
      pos:
        line_end: 827
        line_start: 827
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 850
        line_start: 850
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 869
      start: 822
    functionDepth: 8
    functionLinenumber: 822
    functionLinenumberEnd: 869
    functionName: lydxml_env_netconf_notif
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyd_free_tree
    - lydxml_envelope
    - LOGVAL
    - LY_CHECK_GOTO
    - lyd_insert_node
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_env_netconf_notif(struct lyxml_ctx *xmlctx, struct lyd_node
      **envp, uint32_t *int_opts, uint32_t *close_elem)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:888,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/parser_xml.c:894,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:896,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:900,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:900,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_xml.c:904,1
    - Dst: lydxml_attrs
      Src: /src/libyang/src/parser_xml.c:904,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:908,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/parser_xml.c:909,1
    - Dst: strlen
      Src: /src/libyang/src/parser_xml.c:909,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:911,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:918,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:918,1
    - Dst: lydxml_opaq_r
      Src: /src/libyang/src/parser_xml.c:922,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:923,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:927,1
    - Dst: lyd_free_attr_siblings
      Src: /src/libyang/src/parser_xml.c:930,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 2
    argNames:
    - xmlctx
    - parent
    argTypes:
    - struct lyxml_ctx*
    - struct lyd_node*
    assertStmts:
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 887
        line_start: 887
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CONTENT)
      pos:
        line_end: 907
        line_start: 907
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 935
      start: 878
    functionDepth: 7
    functionLinenumber: 878
    functionLinenumberEnd: 935
    functionName: lydxml_opaq_r
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 1
    functionsReached:
    - strlen
    - lyd_free_tree
    - lydxml_attrs
    - LY_CHECK_RET
    - lyd_create_opaq
    - lyxml_ns_get
    - LOGVAL
    - lydxml_opaq_r
    - lyd_free_attr_siblings
    - LY_CHECK_GOTO
    - lyd_insert_node
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_opaq_r(struct lyxml_ctx *xmlctx, struct lyd_node *parent)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:954,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:964,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:975,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:986,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:997,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1006,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/parser_xml.c:1009,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1011,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1014,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1015,1
    - Dst: lydxml_opaq_r
      Src: /src/libyang/src/parser_xml.c:1022,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1023,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1034,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1044,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1045,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1050,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:1050,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:1053,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:1059,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 92
    argCount: 2
    argNames:
    - xmlctx
    - parent
    argTypes:
    - struct lyxml_ctx*
    - struct lyd_node*
    assertStmts:
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 1005
        line_start: 1005
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 1043
        line_start: 1043
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 1061
      start: 944
    functionDepth: 8
    functionLinenumber: 944
    functionLinenumberEnd: 1061
    functionName: lydxml_env_netconf_rpc_reply_error_info
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - lyd_free_tree
    - strcmp
    - lydxml_envelope
    - lydxml_opaq_r
    - LOGVAL
    - lyxml_ns_get
    - LY_CHECK_GOTO
    - lyd_insert_node
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_env_netconf_rpc_reply_error_info(struct lyxml_ctx *xmlctx,
      struct lyd_node *parent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1034,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1039
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 20
    functionsReached:
    - LOGVAL
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(parent), iter)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1080,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1090,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1093,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1093,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1093,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1093,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1094,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1109,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1112,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1112,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1112,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1113,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1113,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1114,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1114,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1114,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1115,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1115,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1115,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1116,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1116,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1116,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1117,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1117,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1117,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1118,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1118,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1119,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1134,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1137,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_xml.c:1137,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1138,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1153,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1164,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1175,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1184,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1187,1
    - Dst: lydxml_env_netconf_rpc_reply_error_info
      Src: /src/libyang/src/parser_xml.c:1187,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1196,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1197,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1209,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1219,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1220,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1225,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:1225,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:1228,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:1234,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 132
    argCount: 2
    argNames:
    - xmlctx
    - parent
    argTypes:
    - struct lyxml_ctx*
    - struct lyd_node*
    assertStmts:
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 1218
        line_start: 1218
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 1195
        line_start: 1195
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 1236
      start: 1070
    functionDepth: 9
    functionLinenumber: 1070
    functionLinenumberEnd: 1236
    functionName: lydxml_env_netconf_rpc_reply_error
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - lyxml_ctx_next
    - lyd_free_tree
    - strcmp
    - lydxml_envelope
    - LOGVAL
    - LY_CHECK_GOTO
    - lyd_insert_node
    - assert
    - lydxml_env_netconf_rpc_reply_error_info
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_env_netconf_rpc_reply_error(struct lyxml_ctx *xmlctx,
      struct lyd_node *parent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1206
    functionDepth: 1
    functionLinenumber: 1206
    functionLinenumberEnd: 1214
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 20
    functionsReached:
    - LOGVAL
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(parent), iter)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1255,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1258,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/parser_xml.c:1259,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1263,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1269,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:1272,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1276,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1277,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1282,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:1282,1
    - Dst: lydxml_envelope
      Src: /src/libyang/src/parser_xml.c:1294,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_xml.c:1303,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1306,1
    - Dst: lydxml_env_netconf_rpc_reply_error
      Src: /src/libyang/src/parser_xml.c:1306,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1309,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1310,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:1310,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1319,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1320,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_xml.c:1333,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 4
    argNames:
    - xmlctx
    - envp
    - int_opts
    - close_elem
    argTypes:
    - struct lyxml_ctx*
    - struct lyd_node**
    - uint32_t*
    - uint32_t*
    assertStmts:
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 1275
        line_start: 1275
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 1318
        line_start: 1318
        source_file: /src/libyang/src/parser_xml.c
    - condition: (envp && !*envp)
      pos:
        line_end: 1254
        line_start: 1254
        source_file: /src/libyang/src/parser_xml.c
    - condition: (xmlctx->status == LYXML_ELEM_CLOSE)
      pos:
        line_end: 1308
        line_start: 1308
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 1337
      start: 1248
    functionDepth: 10
    functionLinenumber: 1248
    functionLinenumberEnd: 1337
    functionName: lydxml_env_netconf_reply
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyd_free_tree
    - lydxml_envelope
    - LOGVAL
    - LY_CHECK_GOTO
    - lyd_insert_node
    - lydxml_env_netconf_rpc_reply_error
    - assert
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydxml_env_netconf_reply(struct lyxml_ctx *xmlctx, struct lyd_node
      **envp, uint32_t *int_opts, uint32_t *close_elem)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1349,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1350,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1351,1
    - Dst: calloc
      Src: /src/libyang/src/parser_xml.c:1354,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_xml.c:1355,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_xml.c:1355,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1356,1
    - Dst: lyxml_ctx_new
      Src: /src/libyang/src/parser_xml.c:1356,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1376,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1377,1
    - Dst: lydxml_env_netconf_rpc
      Src: /src/libyang/src/parser_xml.c:1377,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1380,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1381,1
    - Dst: lydxml_env_netconf_notif
      Src: /src/libyang/src/parser_xml.c:1381,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1384,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1385,1
    - Dst: lydxml_env_netconf_reply
      Src: /src/libyang/src/parser_xml.c:1385,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1391,1
    - Dst: lyd_parser_find_operation
      Src: /src/libyang/src/parser_xml.c:1391,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1395,1
    - Dst: lydxml_subtree_r
      Src: /src/libyang/src/parser_xml.c:1395,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1406,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1407,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_xml.c:1413,1
    - Dst: lyxml_ctx_next
      Src: /src/libyang/src/parser_xml.c:1413,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1418,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_xml.c:1423,1
    - Dst: assert
      Src: /src/libyang/src/parser_xml.c:1435,1
    - Dst: lyd_xml_ctx_free
      Src: /src/libyang/src/parser_xml.c:1439,1
    - Dst: lyxml_ctx_free
      Src: /src/libyang/src/parser_xml.c:1444,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 82
    argCount: 11
    argNames:
    - ctx
    - ext
    - parent
    - first_p
    - in
    - parse_opts
    - val_opts
    - data_type
    - envp
    - parsed
    - lydctx_p
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    - struct lyd_node*
    - struct lyd_node**
    - struct ly_in*
    - uint32_t
    - uint32_t
    - enum lyd_type
    - struct lyd_node**
    - struct ly_set*
    - struct lyd_ctx**
    assertStmts:
    - condition: (!(val_opts & ~LYD_VALIDATE_OPTS_MASK))
      pos:
        line_end: 1350
        line_start: 1350
        source_file: /src/libyang/src/parser_xml.c
    - condition: (!parent)
      pos:
        line_end: 1379
        line_start: 1379
        source_file: /src/libyang/src/parser_xml.c
    - condition: (lydctx->xmlctx->status == LYXML_ELEMENT)
      pos:
        line_end: 1405
        line_start: 1405
        source_file: /src/libyang/src/parser_xml.c
    - condition: (ctx && in && lydctx_p)
      pos:
        line_end: 1348
        line_start: 1348
        source_file: /src/libyang/src/parser_xml.c
    - condition: (!(parse_opts & ~LYD_PARSE_OPTS_MASK))
      pos:
        line_end: 1349
        line_start: 1349
        source_file: /src/libyang/src/parser_xml.c
    - condition: (parent)
      pos:
        line_end: 1383
        line_start: 1383
        source_file: /src/libyang/src/parser_xml.c
    - condition: "(!(parse_opts & LYD_PARSE_ONLY) || (!lydctx->node_types.count &&
        !lydctx->meta_types.count &&\n            !lydctx->node_when.count && !lydctx->node_exts.count))"
      pos:
        line_end: 1435
        line_start: 1434
        source_file: /src/libyang/src/parser_xml.c
    - condition: (!parent)
      pos:
        line_end: 1375
        line_start: 1375
        source_file: /src/libyang/src/parser_xml.c
    constantsTouched: []
    func_position:
      end: 1448
      start: 1339
    functionDepth: 11
    functionLinenumber: 1339
    functionLinenumberEnd: 1448
    functionName: lyd_parse_xml
    functionSourceFile: /src/libyang/src/parser_xml.c
    functionUses: 2
    functionsReached:
    - assert
    - lyd_xml_ctx_free
    - lydxml_subtree_r
    - LY_CHECK_ERR_RET
    - lyd_parser_find_operation
    - lydxml_env_netconf_notif
    - lydxml_env_netconf_reply
    - LOGVAL
    - lydxml_env_netconf_rpc
    - LY_CHECK_GOTO
    - lyxml_ctx_new
    - lyxml_ctx_free
    - LOGMEM
    - calloc
    - lyxml_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parse_xml(const struct ly_ctx *ctx, const struct lysc_ext_instance
      *ext, struct lyd_node *parent,\n        struct lyd_node **first_p, struct ly_in
      *in, uint32_t parse_opts, uint32_t val_opts, enum lyd_type data_type,\n        struct
      lyd_node **envp, struct ly_set *parsed, struct lyd_ctx **lydctx_p)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:54,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/validation.c:56,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/validation.c:57,1
    - Dst: lyd_list_pos
      Src: /src/libyang/src/validation.c:58,1
    - Dst: asprintf
      Src: /src/libyang/src/validation.c:62,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:63,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:63,1
    - Dst: strdup
      Src: /src/libyang/src/validation.c:68,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/validation.c:69,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:69,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:69,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:82,1
    - Dst: lyd_path_list_predicate
      Src: /src/libyang/src/validation.c:82,1
    - Dst: strdup
      Src: /src/libyang/src/validation.c:84,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/validation.c:85,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:85,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:85,1
    - Dst: strdup
      Src: /src/libyang/src/validation.c:90,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/validation.c:90,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/validation.c:91,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:91,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:91,1
    - Dst: strdup
      Src: /src/libyang/src/validation.c:93,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/validation.c:94,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:94,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:94,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:101,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/validation.c:101,1
    - Dst: lyd_diff_merge_all
      Src: /src/libyang/src/validation.c:104,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/validation.c:107,1
    - Dst: free
      Src: /src/libyang/src/validation.c:108,1
    - Dst: free
      Src: /src/libyang/src/validation.c:109,1
    - Dst: free
      Src: /src/libyang/src/validation.c:110,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 3
    argNames:
    - node
    - op
    - diff
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    - struct lyd_node**
    assertStmts:
    - condition: ((op == LYD_DIFF_OP_DELETE) || (op == LYD_DIFF_OP_CREATE))
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 112
      start: 44
    functionDepth: 7
    functionLinenumber: 44
    functionLinenumberEnd: 112
    functionName: lyd_val_diff_add
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 2
    functionsReached:
    - lysc_is_userordered
    - LY_CHECK_ERR_GOTO
    - lyd_free_tree
    - free
    - asprintf
    - lyd_diff_add
    - lysc_is_dup_inst_list
    - strdup
    - lyd_path_list_predicate
    - lyd_diff_merge_all
    - LY_CHECK_GOTO
    - lyd_list_pos
    - lyd_get_value
    - LYD_CTX
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_val_diff_add(const struct lyd_node *node, enum lyd_diff_op
      op, struct lyd_node **diff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:134,1
    - Dst: lysc_node_when
      Src: /src/libyang/src/validation.c:140,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:148,1
    - Dst: lyd_parent
      Src: /src/libyang/src/validation.c:149,1
    - Dst: memset
      Src: /src/libyang/src/validation.c:153,1
    - Dst: lyxp_eval
      Src: /src/libyang/src/validation.c:154,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:154,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/validation.c:156,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:159,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - tree
    - node
    - schema
    - disabled
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lysc_node*
    - struct lysc_when**
    assertStmts:
    - condition: (!node->schema || (node->schema == schema))
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/libyang/src/validation.c
    - condition: ((!when->context && !node->parent) || (when->context == node->parent->schema))
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 172
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 172
    functionName: lyd_validate_node_when
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - memset
    - lysc_node_when
    - LY_CHECK_RET
    - lyxp_set_cast
    - LYD_CTX
    - lyxp_eval
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_node_when(const struct lyd_node *tree, const struct
      lyd_node *node, const struct lysc_node *schema,\n        const struct lysc_when
      **disabled)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:148,1
    - Dst: lyd_parent
      Src: /src/libyang/src/validation.c:149,1
    - Dst: memset
      Src: /src/libyang/src/validation.c:153,1
    - Dst: lyxp_eval
      Src: /src/libyang/src/validation.c:154,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:154,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/validation.c:156,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:159,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: ((!when->context && !node->parent) || (when->context == node->parent->schema))
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 166
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 166
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 34
    functionsReached:
    - lyd_parent
    - memset
    - LY_CHECK_RET
    - lyxp_set_cast
    - LYD_CTX
    - lyxp_eval
    - assert
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(when_list, u)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:203,1
    - Dst: lyd_validate_node_when
      Src: /src/libyang/src/validation.c:206,1
    - Dst: lyd_del_move_root
      Src: /src/libyang/src/validation.c:212,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/validation.c:215,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:216,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/validation.c:218,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:221,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:221,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/validation.c:231,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:237,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:243,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 4
    argNames:
    - tree
    - mod
    - node_when
    - diff
    argTypes:
    - struct lyd_node**
    - struct lys_module*
    - struct ly_set*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 186
    functionDepth: 8
    functionLinenumber: 186
    functionLinenumberEnd: 245
    functionName: lyd_validate_unres_when
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - lyd_free_tree
    - lyd_del_move_root
    - lyd_val_diff_add
    - LOGVAL
    - LOG_LOCSET
    - LY_CHECK_GOTO
    - ly_set_rm_index
    - LYD_CTX
    - lyd_validate_node_when
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_unres_when(struct lyd_node **tree, const struct
      lys_module *mod, struct ly_set *node_when,\n        struct lyd_node **diff)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/validation.c:261,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/validation.c:262,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:262,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:262,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:266,1
    - Dst: free
      Src: /src/libyang/src/validation.c:268,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - node_exts
    - exts
    - node
    argTypes:
    - struct ly_set*
    - struct lysc_ext_instance*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 275
    functionName: node_ext_tovalidate_add
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - malloc
    - free
    - ly_set_add
    - LYD_CTX
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR node_ext_tovalidate_add(struct ly_set *node_exts, struct lysc_ext_instance
      *exts, struct lyd_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/validation.c:261,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/validation.c:262,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:262,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:262,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:266,1
    - Dst: free
      Src: /src/libyang/src/validation.c:268,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 272
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 34
    functionsReached:
    - LY_CHECK_ERR_RET
    - malloc
    - free
    - ly_set_add
    - LYD_CTX
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(exts, struct lysc_ext_instance, ext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:288,1
    - Dst: node_ext_tovalidate_add
      Src: /src/libyang/src/validation.c:288,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:292,1
    - Dst: node_ext_tovalidate_add
      Src: /src/libyang/src/validation.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node_exts
    - node
    argTypes:
    - struct ly_set*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 296
    functionName: lysc_node_ext_tovalidate
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_RET
    - node_ext_tovalidate_add
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysc_node_ext_tovalidate(struct ly_set *node_exts, struct lyd_node
      *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:310,1
    - Dst: lyd_validate_unres_when
      Src: /src/libyang/src/validation.c:310,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:315,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:325,1
    - Dst: struct node_ext*::ext::def::plugin::validate
      Src: /src/libyang/src/validation.c:326,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:327,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:328,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/validation.c:331,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:345,1
    - Dst: lyd_value_validate_incomplete
      Src: /src/libyang/src/validation.c:346,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:346,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:347,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:348,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/validation.c:351,1
    - Dst: lyd_value_validate_incomplete
      Src: /src/libyang/src/validation.c:365,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:365,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:366,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/validation.c:369,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 7
    argNames:
    - tree
    - mod
    - node_when
    - node_exts
    - node_types
    - meta_types
    - diff
    argTypes:
    - struct lyd_node**
    - struct lys_module*
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - struct lyd_node**
    assertStmts:
    - condition: (!node_when->count)
      pos:
        line_end: 314
        line_start: 314
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 374
      start: 298
    functionDepth: 9
    functionLinenumber: 298
    functionLinenumberEnd: 374
    functionName: lyd_validate_unres
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 2
    functionsReached:
    - LOG_LOCBACK
    - struct node_ext*::ext::def::plugin::validate
    - lyd_validate_unres_when
    - LY_CHECK_RET
    - LOG_LOCSET
    - lyd_value_validate_incomplete
    - ly_set_rm_index
    - LYD_CTX
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_unres(struct lyd_node **tree, const struct lys_module
      *mod, struct ly_set *node_when, struct ly_set *node_exts,\n        struct ly_set
      *node_types, struct ly_set *meta_types, struct lyd_node **diff)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:389,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/validation.c:392,1
    - Dst: lyht_find_next
      Src: /src/libyang/src/validation.c:399,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/validation.c:413,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:421,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 2
    argNames:
    - first
    - node
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    assertStmts:
    - condition: (node->flags & LYD_NEW)
      pos:
        line_end: 388
        line_start: 388
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 425
      start: 383
    functionDepth: 5
    functionLinenumber: 383
    functionLinenumberEnd: 425
    functionName: lyd_validate_duplicates
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyht_find_next
    - lysc_is_dup_inst_list
    - LOGVAL
    - lyd_compare_single
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_validate_duplicates(const struct lyd_node *first, const
      struct lyd_node *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:444,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/validation.c:446,1
    - Dst: lys_getnext_data
      Src: /src/libyang/src/validation.c:450,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:467,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:468,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:477,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:478,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:487,1
    - Dst: lys_getnext_data
      Src: /src/libyang/src/validation.c:494,1
    - Dst: lyd_del_move_root
      Src: /src/libyang/src/validation.c:495,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/validation.c:498,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:501,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/validation.c:501,1
    - Dst: lyd_del_move_root
      Src: /src/libyang/src/validation.c:505,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/validation.c:506,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 4
    argNames:
    - first
    - mod
    - choic
    - diff
    argTypes:
    - struct lyd_node**
    - struct lys_module*
    - struct lysc_node_choice*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 436
    functionDepth: 8
    functionLinenumber: 436
    functionLinenumberEnd: 510
    functionName: lyd_validate_cases
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lys_getnext_data
    - LOG_LOCBACK
    - lyd_free_tree
    - lyd_del_move_root
    - LY_LIST_FOR
    - LY_CHECK_RET
    - LOGVAL
    - lyd_val_diff_add
    - LOG_LOCSET
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_cases(struct lyd_node **first, const struct lys_module
      *mod, const struct lysc_node_choice *choic,\n        struct lyd_node **diff)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - schema
    argTypes:
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 543
    functionName: lyd_val_has_default
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lyd_val_has_default(const struct lysc_node *schema)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyd_del_move_root
      Src: /src/libyang/src/validation.c:560,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/validation.c:569,1
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/validation.c:572,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/validation.c:575,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 5
    argNames:
    - first
    - node
    - mod
    - next_p
    - diff
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lys_module*
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 554
    functionDepth: 8
    functionLinenumber: 554
    functionLinenumberEnd: 576
    functionName: lyd_validate_autodel_node_del
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_free_tree
    - lyd_del_move_root
    - lyd_val_diff_add
    linkageType: ''
    returnType: void
    signature: "void lyd_validate_autodel_node_del(struct lyd_node **first, struct
      lyd_node *node, const struct lys_module *mod,\n        struct lyd_node **next_p,
      struct lyd_node **diff)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_val_diff_add
      Src: /src/libyang/src/validation.c:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 568
    functionDepth: 8
    functionLinenumber: 568
    functionLinenumberEnd: 570
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 21
    functionsReached:
    - lyd_val_diff_add
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(node), iter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:593,1
    - Dst: lyd_val_has_default
      Src: /src/libyang/src/validation.c:595,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:596,1
    - Dst: LYD_LIST_FOR_INST_SAFE
      Src: /src/libyang/src/validation.c:597,1
    - Dst: lyd_validate_autodel_node_del
      Src: /src/libyang/src/validation.c:600,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 5
    argNames:
    - first
    - node
    - mod
    - next_p
    - diff
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lys_module*
    - struct lyd_node**
    - struct lyd_node**
    assertStmts:
    - condition: (node->flags & LYD_NEW)
      pos:
        line_end: 592
        line_start: 592
        source_file: /src/libyang/src/validation.c
    - condition: (node->schema->nodetype & (LYS_LEAF | LYS_LEAFLIST | LYS_CONTAINER))
      pos:
        line_end: 595
        line_start: 595
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 609
      start: 587
    functionDepth: 9
    functionLinenumber: 587
    functionLinenumberEnd: 609
    functionName: lyd_validate_autodel_dup
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_val_has_default
    - LYD_LIST_FOR_INST_SAFE
    - assert
    - lyd_validate_autodel_node_del
    linkageType: ''
    returnType: void
    signature: "void lyd_validate_autodel_dup(struct lyd_node **first, struct lyd_node
      *node, const struct lys_module *mod,\n        struct lyd_node **next_p, struct
      lyd_node **diff)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:628,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:636,1
    - Dst: lys_getnext_data
      Src: /src/libyang/src/validation.c:644,1
    - Dst: lyd_validate_autodel_node_del
      Src: /src/libyang/src/validation.c:653,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 5
    argNames:
    - first
    - node
    - mod
    - next_p
    - diff
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lys_module*
    - struct lyd_node**
    - struct lyd_node**
    assertStmts:
    - condition: (node->flags & LYD_DEFAULT)
      pos:
        line_end: 627
        line_start: 627
        source_file: /src/libyang/src/validation.c
    - condition: (choic->nodetype == LYS_CHOICE)
      pos:
        line_end: 635
        line_start: 635
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 655
      start: 620
    functionDepth: 9
    functionLinenumber: 620
    functionLinenumberEnd: 655
    functionName: lyd_validate_autodel_case_dflt
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_validate_autodel_node_del
    - lys_getnext_data
    - assert
    linkageType: ''
    returnType: void
    signature: "void lyd_validate_autodel_case_dflt(struct lyd_node **first, struct
      lyd_node *node, const struct lys_module *mod,\n        struct lyd_node **next_p,
      struct lyd_node **diff)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:664,1
    - Dst: lys_getnext
      Src: /src/libyang/src/validation.c:666,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:669,1
    - Dst: lyd_validate_cases
      Src: /src/libyang/src/validation.c:669,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/validation.c:673,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/validation.c:674,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:684,1
    - Dst: lyd_validate_autodel_dup
      Src: /src/libyang/src/validation.c:690,1
    - Dst: lyd_validate_duplicates
      Src: /src/libyang/src/validation.c:693,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/validation.c:694,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:694,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:700,1
    - Dst: lyd_validate_autodel_case_dflt
      Src: /src/libyang/src/validation.c:704,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - first
    - sparent
    - mod
    - diff
    argTypes:
    - struct lyd_node**
    - struct lysc_node*
    - struct lys_module*
    - struct lyd_node**
    assertStmts:
    - condition: (first && (sparent || mod))
      pos:
        line_end: 663
        line_start: 663
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 709
      start: 657
    functionDepth: 10
    functionLinenumber: 657
    functionLinenumberEnd: 709
    functionName: lyd_validate_new
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 2
    functionsReached:
    - lyd_owner_module
    - LOG_LOCBACK
    - LY_CHECK_ERR_RET
    - lys_getnext
    - LY_CHECK_RET
    - lyd_validate_autodel_dup
    - LOG_LOCSET
    - LY_LIST_FOR_SAFE
    - lyd_validate_autodel_case_dflt
    - lyd_validate_cases
    - assert
    - lyd_validate_duplicates
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_new(struct lyd_node **first, const struct lysc_node
      *sparent, const struct lys_module *mod,\n        struct lyd_node **diff)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parent
      Src: /src/libyang/src/validation.c:731,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/validation.c:733,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:735,1
    - Dst: lyd_new_opaq
      Src: /src/libyang/src/validation.c:740,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:741,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/validation.c:746,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:748,1
    - Dst: lyd_validate_node_when
      Src: /src/libyang/src/validation.c:754,1
    - Dst: LOGINT
      Src: /src/libyang/src/validation.c:757,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/validation.c:766,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 4
    argNames:
    - first
    - parent
    - snode
    - disabled
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lysc_node*
    - struct lysc_when**
    assertStmts:
    - condition: (!first || !first->prev->next)
      pos:
        line_end: 734
        line_start: 734
        source_file: /src/libyang/src/validation.c
    - condition: (!tree)
      pos:
        line_end: 747
        line_start: 747
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 768
      start: 720
    functionDepth: 7
    functionLinenumber: 720
    functionLinenumberEnd: 768
    functionName: lyd_validate_dummy_when
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - lyd_validate_node_when
    - lyd_free_tree
    - LOGINT
    - lyd_new_opaq
    - LY_CHECK_GOTO
    - lyd_insert_sibling
    - assert
    - lyd_first_sibling
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_dummy_when(const struct lyd_node *first, const
      struct lyd_node *parent, const struct lysc_node *snode,\n        const struct
      lysc_when **disabled)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lys_getnext_data
      Src: /src/libyang/src/validation.c:785,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:789,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/validation.c:791,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/validation.c:798,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:800,1
    - Dst: lyd_validate_dummy_when
      Src: /src/libyang/src/validation.c:800,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:806,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:808,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - first
    - parent
    - snode
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lysc_node*
    assertStmts:
    - condition: (snode->nodetype & (LYS_LEAF | LYS_CONTAINER | LYD_NODE_ANY))
      pos:
        line_end: 788
        line_start: 788
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 814
      start: 778
    functionDepth: 8
    functionLinenumber: 778
    functionLinenumberEnd: 814
    functionName: lyd_validate_mandatory
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lysc_has_when
    - lys_getnext_data
    - lyd_validate_dummy_when
    - lyd_find_sibling_val
    - LY_CHECK_RET
    - LOGVAL
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_validate_mandatory(const struct lyd_node *first, const struct
      lyd_node *parent, const struct lysc_node *snode)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:835,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:850,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:857,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/validation.c:860,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:862,1
    - Dst: lyd_validate_dummy_when
      Src: /src/libyang/src/validation.c:862,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:866,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:870,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:877,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 5
    argNames:
    - first
    - parent
    - snode
    - min
    - max
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lysc_node*
    - uint32_t
    - uint32_t
    assertStmts:
    - condition: (min || max)
      pos:
        line_end: 834
        line_start: 834
        source_file: /src/libyang/src/validation.c
    - condition: (count < min)
      pos:
        line_end: 856
        line_start: 856
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 879
      start: 826
    functionDepth: 8
    functionLinenumber: 826
    functionLinenumberEnd: 879
    functionName: lyd_validate_minmax
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lysc_has_when
    - LOG_LOCBACK
    - lyd_validate_dummy_when
    - LY_CHECK_RET
    - LOGVAL
    - LOG_LOCSET
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_minmax(const struct lyd_node *first, const struct
      lyd_node *parent, const struct lysc_node *snode,\n        uint32_t min, uint32_t
      max)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:850,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 837
    functionDepth: 1
    functionLinenumber: 837
    functionLinenumberEnd: 854
    functionName: LYD_LIST_FOR_INST
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 2
    functionsReached:
    - LOG_LOCSET
    linkageType: ''
    returnType: void
    signature: void LYD_LIST_FOR_INST(first, snode, iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_data_parent
      Src: /src/libyang/src/validation.c:897,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/validation.c:904,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:909,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/validation.c:910,1
    - Dst: lyd_child
      Src: /src/libyang/src/validation.c:910,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - uniq_leaf
    - list
    argTypes:
    - struct lysc_node_leaf*
    - struct lyd_node*
    assertStmts:
    - condition: (iter->nodetype & (LYS_CONTAINER | LYS_LEAF))
      pos:
        line_end: 908
        line_start: 908
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 915
      start: 889
    functionDepth: 7
    functionLinenumber: 889
    functionLinenumberEnd: 915
    functionName: lyd_val_uniq_find_leaf
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_find_sibling_val
    - lysc_data_parent
    - assert
    - lyd_child
    linkageType: ''
    returnType: struct lyd_node
    signature: 'struct lyd_node *

      lyd_val_uniq_find_leaf(const struct lysc_node_leaf *uniq_leaf, const struct
      lyd_node *list)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:934,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:940,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:941,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/validation.c:950,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/validation.c:954,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/validation.c:956,1
    - Dst: lyd_val_uniq_find_leaf
      Src: /src/libyang/src/validation.c:958,1
    - Dst: lyd_val_uniq_find_leaf
      Src: /src/libyang/src/validation.c:967,1
    - Dst: struct lyd_value*::realtype::plugin::compare
      Src: /src/libyang/src/validation.c:975,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/validation.c:980,1
    - Dst: lyd_path
      Src: /src/libyang/src/validation.c:982,1
    - Dst: lyd_path
      Src: /src/libyang/src/validation.c:983,1
    - Dst: malloc
      Src: /src/libyang/src/validation.c:987,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/validation.c:990,1
    - Dst: strcpy
      Src: /src/libyang/src/validation.c:992,1
    - Dst: lysc_path_until
      Src: /src/libyang/src/validation.c:995,1
    - Dst: strlen
      Src: /src/libyang/src/validation.c:1002,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:1004,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:1005,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1006,1
    - Dst: free
      Src: /src/libyang/src/validation.c:1008,1
    - Dst: free
      Src: /src/libyang/src/validation.c:1009,1
    - Dst: free
      Src: /src/libyang/src/validation.c:1010,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - UNUSED
    - cb_data
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts:
    - condition: (second && (second->schema == first->schema))
      pos:
        line_end: 940
        line_start: 940
        source_file: /src/libyang/src/validation.c
    - condition: (val1_p && val2_p)
      pos:
        line_end: 933
        line_start: 933
        source_file: /src/libyang/src/validation.c
    - condition: (first && (first->schema->nodetype == LYS_LIST))
      pos:
        line_end: 939
        line_start: 939
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 1023
      start: 924
    functionDepth: 8
    functionLinenumber: 924
    functionLinenumberEnd: 1023
    functionName: lyd_val_uniq_list_equal
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - strlen
    - LOG_LOCBACK
    - strcpy
    - lysc_path_until
    - LY_ARRAY_COUNT
    - malloc
    - free
    - LY_ARRAY_FOR
    - LOGVAL
    - LOG_LOCSET
    - lyd_path
    - struct lyd_value*::realtype::plugin::compare
    - lyd_val_uniq_find_leaf
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyd_val_uniq_list_equal(void *val1_p, void *val2_p, ly_bool
      UNUSED(mod), void *cb_data)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:1048,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1051,1
    - Dst: ly_set_new
      Src: /src/libyang/src/validation.c:1051,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1054,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1055,1
    - Dst: lyd_val_uniq_list_equal
      Src: /src/libyang/src/validation.c:1061,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/validation.c:1077,1
    - Dst: LOGINT
      Src: /src/libyang/src/validation.c:1077,1
    - Dst: malloc
      Src: /src/libyang/src/validation.c:1083,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/validation.c:1083,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/validation.c:1084,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:1084,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/validation.c:1085,1
    - Dst: lyht_new
      Src: /src/libyang/src/validation.c:1087,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/validation.c:1088,1
    - Dst: LOGMEM
      Src: /src/libyang/src/validation.c:1088,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/validation.c:1095,1
    - Dst: lyd_val_uniq_find_leaf
      Src: /src/libyang/src/validation.c:1096,1
    - Dst: struct lyd_value*::realtype::plugin::print
      Src: /src/libyang/src/validation.c:1109,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/validation.c:1110,1
    - Dst: free
      Src: /src/libyang/src/validation.c:1112,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/validation.c:1121,1
    - Dst: lyht_insert
      Src: /src/libyang/src/validation.c:1124,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1129,1
    - Dst: ly_set_free
      Src: /src/libyang/src/validation.c:1135,1
    - Dst: lyht_free
      Src: /src/libyang/src/validation.c:1141,1
    - Dst: free
      Src: /src/libyang/src/validation.c:1143,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 75
    argCount: 3
    argNames:
    - first
    - snode
    - uniques
    argTypes:
    - struct lyd_node*
    - struct lysc_node*
    - struct lysc_node_leaf***
    assertStmts:
    - condition: (uniques)
      pos:
        line_end: 1047
        line_start: 1047
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 1146
      start: 1033
    functionDepth: 9
    functionLinenumber: 1033
    functionLinenumberEnd: 1146
    functionName: lyd_validate_unique
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyht_insert
    - malloc
    - ly_set_free
    - LY_CHECK_RET
    - LY_CHECK_GOTO
    - lyht_free
    - lyht_new
    - LY_CHECK_ERR_GOTO
    - LY_ARRAY_COUNT
    - struct lyd_value*::realtype::plugin::print
    - assert
    - free
    - LOGMEM
    - ly_set_new
    - LOGINT
    - lyd_val_uniq_list_equal
    - dict_hash_multi
    - ly_set_add
    - lyd_val_uniq_find_leaf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_validate_unique(const struct lyd_node *first, const struct
      lysc_node *snode, const struct lysc_node_leaf ***uniques)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1054,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1052
    functionDepth: 1
    functionLinenumber: 1052
    functionLinenumberEnd: 1057
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 21
    functionsReached:
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(first, diter)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lys_getnext
      Src: /src/libyang/src/validation.c:1172,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:1177,1
    - Dst: lyd_validate_minmax
      Src: /src/libyang/src/validation.c:1183,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1184,1
    - Dst: lyd_validate_minmax
      Src: /src/libyang/src/validation.c:1189,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1190,1
    - Dst: lyd_validate_mandatory
      Src: /src/libyang/src/validation.c:1195,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1196,1
    - Dst: lyd_validate_unique
      Src: /src/libyang/src/validation.c:1203,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1204,1
    - Dst: lys_getnext_data
      Src: /src/libyang/src/validation.c:1211,1
    - Dst: lyd_validate_siblings_schema_r
      Src: /src/libyang/src/validation.c:1213,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1214,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1220,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1226,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 6
    argNames:
    - first
    - parent
    - sparent
    - mod
    - val_opts
    - int_opts
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lysc_node*
    - struct lysc_module*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1159
    functionDepth: 10
    functionLinenumber: 1159
    functionLinenumberEnd: 1228
    functionName: lyd_validate_siblings_schema_r
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 1
    functionsReached:
    - lyd_validate_minmax
    - lys_getnext_data
    - LOG_LOCBACK
    - lys_getnext
    - lyd_validate_siblings_schema_r
    - LOG_LOCSET
    - lyd_validate_mandatory
    - LY_CHECK_GOTO
    - lyd_validate_unique
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_siblings_schema_r(const struct lyd_node *first,
      const struct lyd_node *parent,\n        const struct lysc_node *sparent, const
      struct lysc_module *mod, uint32_t val_opts, uint32_t int_opts)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lys_getnext_data
      Src: /src/libyang/src/validation.c:1211,1
    - Dst: lyd_validate_siblings_schema_r
      Src: /src/libyang/src/validation.c:1213,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1210
    functionDepth: 11
    functionLinenumber: 1210
    functionLinenumberEnd: 1217
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 21
    functionsReached:
    - lys_getnext_data
    - lyd_validate_siblings_schema_r
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lysc_node_child(snode), scase)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/validation.c:1243,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1249
    functionName: lyd_validate_obsolete
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - LOGWRN
    linkageType: ''
    returnType: void
    signature: void lyd_validate_obsolete(const struct lyd_node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:1267,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:1268,1
    - Dst: LOGINT
      Src: /src/libyang/src/validation.c:1276,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1276,1
    - Dst: lysc_node_musts
      Src: /src/libyang/src/validation.c:1282,1
    - Dst: lyd_parent
      Src: /src/libyang/src/validation.c:1289,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/validation.c:1290,1
    - Dst: memset
      Src: /src/libyang/src/validation.c:1293,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1296,1
    - Dst: lyxp_eval
      Src: /src/libyang/src/validation.c:1296,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1296,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/validation.c:1300,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:1302,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - node
    - int_opts
    argTypes:
    - struct lyd_node*
    - uint32_t
    assertStmts:
    - condition: ((int_opts & (LYD_INTOPT_RPC | LYD_INTOPT_REPLY)) != (LYD_INTOPT_RPC
        | LYD_INTOPT_REPLY))
      pos:
        line_end: 1266
        line_start: 1266
        source_file: /src/libyang/src/validation.c
    - condition: ((int_opts & (LYD_INTOPT_ACTION | LYD_INTOPT_REPLY)) != (LYD_INTOPT_ACTION
        | LYD_INTOPT_REPLY))
      pos:
        line_end: 1267
        line_start: 1267
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 1308
      start: 1258
    functionDepth: 2
    functionLinenumber: 1258
    functionLinenumberEnd: 1308
    functionName: lyd_validate_must
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - memset
    - LOGINT
    - LY_CHECK_RET
    - LOGVAL
    - lysc_node_musts
    - lyxp_set_cast
    - LYD_CTX
    - lyxp_eval
    - assert
    - lyd_first_sibling
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_validate_must(const struct lyd_node *node, uint32_t int_opts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/validation.c:1293,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1296,1
    - Dst: lyxp_eval
      Src: /src/libyang/src/validation.c:1296,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1296,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/validation.c:1300,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:1302,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1292
    functionDepth: 1
    functionLinenumber: 1292
    functionLinenumberEnd: 1305
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 35
    functionsReached:
    - memset
    - LY_CHECK_RET
    - LOGVAL
    - lyxp_set_cast
    - LYD_CTX
    - lyxp_eval
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(musts, u)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/validation.c:1330,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:1335,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:1339,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1339,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1340,1
    - Dst: lyd_validate_obsolete
      Src: /src/libyang/src/validation.c:1357,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1360,1
    - Dst: lyd_validate_must
      Src: /src/libyang/src/validation.c:1360,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1364,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1368,1
    - Dst: lyd_validate_siblings_schema_r
      Src: /src/libyang/src/validation.c:1368,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1372,1
    - Dst: lyd_validate_final_r
      Src: /src/libyang/src/validation.c:1372,1
    - Dst: lyd_child
      Src: /src/libyang/src/validation.c:1372,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:1390,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1390,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1391,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 47
    argCount: 6
    argNames:
    - first
    - parent
    - sparent
    - mod
    - val_opts
    - int_opts
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lysc_node*
    - struct lys_module*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1321
    functionDepth: 11
    functionLinenumber: 1321
    functionLinenumberEnd: 1393
    functionName: lyd_validate_final_r
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 1
    functionsReached:
    - lyd_owner_module
    - LOG_LOCBACK
    - lyd_validate_final_r
    - lyd_validate_obsolete
    - lyd_validate_siblings_schema_r
    - LY_CHECK_RET
    - LOGVAL
    - lyd_validate_must
    - LOG_LOCSET
    - lyd_child
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_final_r(struct lyd_node *first, const struct lyd_node
      *parent, const struct lysc_node *sparent,\n        const struct lys_module *mod,
      uint32_t val_opts, uint32_t int_opts)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/validation.c:1330,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:1335,1
    - Dst: LOGVAL
      Src: /src/libyang/src/validation.c:1339,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1339,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1340,1
    - Dst: lyd_validate_obsolete
      Src: /src/libyang/src/validation.c:1357,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1360,1
    - Dst: lyd_validate_must
      Src: /src/libyang/src/validation.c:1360,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1364,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1365
      start: 1329
    functionDepth: 3
    functionLinenumber: 1329
    functionLinenumberEnd: 1365
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 17
    functionsReached:
    - lyd_owner_module
    - LOG_LOCBACK
    - lyd_validate_obsolete
    - LY_CHECK_RET
    - LOGVAL
    - lyd_validate_must
    - LOG_LOCSET
    - LYD_CTX
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR_SAFE(first, next, node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1372,1
    - Dst: lyd_validate_final_r
      Src: /src/libyang/src/validation.c:1372,1
    - Dst: lyd_child
      Src: /src/libyang/src/validation.c:1372,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1370
    functionDepth: 12
    functionLinenumber: 1370
    functionLinenumberEnd: 1385
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 21
    functionsReached:
    - LY_CHECK_RET
    - lyd_validate_final_r
    - lyd_child
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(first, node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1376
    functionDepth: 0
    functionLinenumber: 1376
    functionLinenumberEnd: 1380
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(node), next)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/validation.c:1415,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1418,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1418,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1424,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1424,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1427,1
    - Dst: lyd_validate_new
      Src: /src/libyang/src/validation.c:1427,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/validation.c:1427,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1430,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/validation.c:1430,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/validation.c:1430,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/validation.c:1433,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1435,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1435,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1437,1
    - Dst: lysc_node_ext_tovalidate
      Src: /src/libyang/src/validation.c:1437,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/validation.c:1439,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 7
    argNames:
    - root
    - node_when
    - node_exts
    - node_types
    - meta_types
    - impl_opts
    - diff
    argTypes:
    - struct lyd_node*
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1407
    functionDepth: 11
    functionLinenumber: 1407
    functionLinenumberEnd: 1443
    functionName: lyd_validate_subtree
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lysc_has_when
    - lyd_new_implicit_r
    - lyd_validate_new
    - LYD_TREE_DFS_END
    - LY_LIST_FOR
    - lysc_node_ext_tovalidate
    - LY_CHECK_RET
    - lyd_node_child_p
    - ly_set_add
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate_subtree(struct lyd_node *root, struct ly_set *node_when,
      struct ly_set *node_exts, struct ly_set *node_types,\n        struct ly_set
      *meta_types, uint32_t impl_opts, struct lyd_node **diff)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/validation.c:1415,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1418,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1418,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1424,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1424,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1427,1
    - Dst: lyd_validate_new
      Src: /src/libyang/src/validation.c:1427,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/validation.c:1427,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1430,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/validation.c:1430,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/validation.c:1430,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/validation.c:1433,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1435,1
    - Dst: ly_set_add
      Src: /src/libyang/src/validation.c:1435,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/validation.c:1437,1
    - Dst: lysc_node_ext_tovalidate
      Src: /src/libyang/src/validation.c:1437,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/validation.c:1439,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1414
    functionDepth: 11
    functionLinenumber: 1414
    functionLinenumberEnd: 1440
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 1
    functionsReached:
    - lysc_has_when
    - lyd_new_implicit_r
    - lyd_validate_new
    - LYD_TREE_DFS_END
    - LY_LIST_FOR
    - lysc_node_ext_tovalidate
    - LY_CHECK_RET
    - lyd_node_child_p
    - ly_set_add
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(root, node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:1456,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:1457,1
    - Dst: lyd_data_next_module
      Src: /src/libyang/src/validation.c:1470,1
    - Dst: lyd_mod_next_module
      Src: /src/libyang/src/validation.c:1472,1
    - Dst: lyd_validate_new
      Src: /src/libyang/src/validation.c:1485,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1486,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/validation.c:1490,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1492,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/validation.c:1495,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/validation.c:1495,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/validation.c:1501,1
    - Dst: lyd_validate_subtree
      Src: /src/libyang/src/validation.c:1502,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1504,1
    - Dst: lyd_validate_unres
      Src: /src/libyang/src/validation.c:1509,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1510,1
    - Dst: lyd_validate_final_r
      Src: /src/libyang/src/validation.c:1513,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1514,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1518,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1519,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1520,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1521,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 10
    argNames:
    - tree
    - module
    - ctx
    - val_opts
    - validate_subtree
    - node_when_p
    - node_exts_p
    - node_types_p
    - meta_types_p
    - diff
    argTypes:
    - struct lyd_node**
    - struct lys_module*
    - struct ly_ctx*
    - uint32_t
    - ly_bool
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - struct lyd_node**
    assertStmts:
    - condition: "((node_when_p && node_exts_p && node_types_p && meta_types_p) ||\n
        \           (!node_when_p && !node_exts_p && !node_types_p && !meta_types_p))"
      pos:
        line_end: 1457
        line_start: 1456
        source_file: /src/libyang/src/validation.c
    - condition: (tree && ctx)
      pos:
        line_end: 1455
        line_start: 1455
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 1523
      start: 1445
    functionDepth: 12
    functionLinenumber: 1445
    functionLinenumberEnd: 1523
    functionName: lyd_validate
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 2
    functionsReached:
    - lyd_validate_subtree
    - lyd_owner_module
    - lyd_mod_next_module
    - lyd_validate_new
    - lyd_new_implicit_r
    - lyd_data_next_module
    - lyd_validate_unres
    - lyd_validate_final_r
    - LY_LIST_FOR
    - LY_CHECK_GOTO
    - ly_set_erase
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_validate(struct lyd_node **tree, const struct lys_module
      *module, const struct ly_ctx *ctx, uint32_t val_opts,\n        ly_bool validate_subtree,
      struct ly_set *node_when_p, struct ly_set *node_exts_p,\n        struct ly_set
      *node_types_p, struct ly_set *meta_types_p, struct lyd_node **diff)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/validation.c:1528,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1530,1
    - Dst: lyd_validate
      Src: /src/libyang/src/validation.c:1536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - tree
    - ctx
    - val_opts
    - diff
    argTypes:
    - struct lyd_node**
    - struct ly_ctx*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1525
    functionDepth: 13
    functionLinenumber: 1525
    functionLinenumberEnd: 1537
    functionName: lyd_validate_all
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 14
    functionsReached:
    - LY_CHECK_ARG_RET
    - LYD_CTX
    - lyd_validate
    linkageType: ''
    returnType: API
    signature: API lyd_validate_all(struct lyd_node **tree, const struct ly_ctx *ctx,
      uint32_t val_opts, struct lyd_node **diff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/validation.c:1542,1
    - Dst: lyd_validate
      Src: /src/libyang/src/validation.c:1547,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - tree
    - module
    - val_opts
    - diff
    argTypes:
    - struct lyd_node**
    - struct lys_module*
    - uint32_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1539
    functionDepth: 13
    functionLinenumber: 1539
    functionLinenumberEnd: 1548
    functionName: lyd_validate_module
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ARG_RET
    - LYD_CTX
    - lyd_validate
    linkageType: ''
    returnType: API
    signature: API lyd_validate_module(struct lyd_node **tree, const struct lys_module
      *module, uint32_t val_opts, struct lyd_node **diff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parent
      Src: /src/libyang/src/validation.c:1574,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/validation.c:1583,1
    - Dst: lyd_child
      Src: /src/libyang/src/validation.c:1589,1
    - Dst: lyd_parent
      Src: /src/libyang/src/validation.c:1597,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:1601,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:1608,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 6
    argNames:
    - op_tree
    - op_node
    - tree
    - op_subtree
    - tree_sibling
    - tree_parent
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node**
    - struct lyd_node**
    - struct lyd_node**
    assertStmts:
    - condition: (op_iter)
      pos:
        line_end: 1600
        line_start: 1600
        source_file: /src/libyang/src/validation.c
    - condition: (match)
      pos:
        line_end: 1607
        line_start: 1607
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 1611
      start: 1560
    functionDepth: 6
    functionLinenumber: 1560
    functionLinenumberEnd: 1611
    functionName: lyd_val_op_merge_find
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - assert
    - lyd_find_sibling_first
    - lyd_parent
    - lyd_child
    linkageType: ''
    returnType: void
    signature: "void lyd_val_op_merge_find(const struct lyd_node *op_tree, const struct
      lyd_node *op_node, const struct lyd_node *tree,\n        struct lyd_node **op_subtree,
      struct lyd_node **tree_sibling, struct lyd_node **tree_parent)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/validation.c:1638,1
    - Dst: assert
      Src: /src/libyang/src/validation.c:1639,1
    - Dst: lyd_val_op_merge_find
      Src: /src/libyang/src/validation.c:1650,1
    - Dst: lyd_parent
      Src: /src/libyang/src/validation.c:1651,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/validation.c:1652,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/validation.c:1653,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/validation.c:1658,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/validation.c:1662,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/validation.c:1662,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1664,1
    - Dst: lyd_validate_subtree
      Src: /src/libyang/src/validation.c:1669,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1670,1
    - Dst: lyd_validate_subtree
      Src: /src/libyang/src/validation.c:1676,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1677,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1682,1
    - Dst: lyd_validate_unres
      Src: /src/libyang/src/validation.c:1682,1
    - Dst: lyd_validate_obsolete
      Src: /src/libyang/src/validation.c:1686,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1687,1
    - Dst: lyd_validate_must
      Src: /src/libyang/src/validation.c:1687,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1690,1
    - Dst: lyd_validate_final_r
      Src: /src/libyang/src/validation.c:1690,1
    - Dst: lyd_child
      Src: /src/libyang/src/validation.c:1690,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/validation.c:1693,1
    - Dst: lyd_unlink_tree
      Src: /src/libyang/src/validation.c:1695,1
    - Dst: lyd_insert_node
      Src: /src/libyang/src/validation.c:1697,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1700,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1701,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1702,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/validation.c:1703,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 10
    argNames:
    - op_tree
    - op_node
    - dep_tree
    - int_opts
    - validate_subtree
    - node_when_p
    - node_exts_p
    - node_types_p
    - meta_types_p
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_node*
    - uint32_t
    - ly_bool
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - struct ly_set*
    - struct lyd_node**
    assertStmts:
    - condition: (op_tree && op_node)
      pos:
        line_end: 1637
        line_start: 1637
        source_file: /src/libyang/src/validation.c
    - condition: "((node_when_p && node_exts_p && node_types_p && meta_types_p) ||\n
        \           (!node_when_p && !node_exts_p && !node_types_p && !meta_types_p))"
      pos:
        line_end: 1639
        line_start: 1638
        source_file: /src/libyang/src/validation.c
    constantsTouched: []
    func_position:
      end: 1705
      start: 1629
    functionDepth: 12
    functionLinenumber: 1629
    functionLinenumberEnd: 1705
    functionName: _lyd_validate_op
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 0
    functionsReached:
    - lyd_unlink_tree
    - lyd_validate_subtree
    - LOG_LOCBACK
    - lyd_parent
    - lyd_new_implicit_r
    - lyd_val_op_merge_find
    - lyd_validate_unres
    - lyd_validate_final_r
    - lyd_validate_obsolete
    - lyd_node_child_p
    - lyd_validate_must
    - LOG_LOCSET
    - lyd_child
    - LY_CHECK_GOTO
    - ly_set_erase
    - lyd_insert_node
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR _lyd_validate_op(struct lyd_node *op_tree, struct lyd_node
      *op_node, const struct lyd_node *dep_tree,\n        uint32_t int_opts, ly_bool
      validate_subtree, struct ly_set *node_when_p, struct ly_set *node_exts_p,\n
      \       struct ly_set *node_types_p, struct ly_set *meta_types_p, struct lyd_node
      **diff)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_validate_subtree
      Src: /src/libyang/src/validation.c:1669,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/validation.c:1670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1668
    functionDepth: 12
    functionLinenumber: 1668
    functionLinenumberEnd: 1671
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 24
    functionsReached:
    - lyd_validate_subtree
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(op_node), child)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/validation.c:1713,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/validation.c:1734,1
    - Dst: LOGERR
      Src: /src/libyang/src/validation.c:1738,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1738,1
    - Dst: LOGERR
      Src: /src/libyang/src/validation.c:1743,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/validation.c:1743,1
    - Dst: _lyd_validate_op
      Src: /src/libyang/src/validation.c:1749,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 4
    argNames:
    - op_tree
    - dep_tree
    - data_type
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - enum lyd_type
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1707
    functionDepth: 13
    functionLinenumber: 1707
    functionLinenumberEnd: 1750
    functionName: lyd_validate_op
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 4
    functionsReached:
    - LOGERR
    - LY_CHECK_ARG_RET
    - LYD_TREE_DFS_END
    - _lyd_validate_op
    - LYD_CTX
    linkageType: ''
    returnType: API
    signature: API lyd_validate_op(struct lyd_node *op_tree, const struct lyd_node
      *dep_tree, enum lyd_type data_type, struct lyd_node **diff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/validation.c:1734,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1727
    functionDepth: 1
    functionLinenumber: 1727
    functionLinenumberEnd: 1735
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/validation.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(op_tree, op_node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:81,1
    - Dst: realpath
      Src: /src/libyang/src/context.c:84,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:85,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:86,1
    - Dst: strerror
      Src: /src/libyang/src/context.c:86,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:88,1
    - Dst: LOGVRB
      Src: /src/libyang/src/context.c:89,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:91,1
    - Dst: access
      Src: /src/libyang/src/context.c:91,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:92,1
    - Dst: strerror
      Src: /src/libyang/src/context.c:92,1
    - Dst: free
      Src: /src/libyang/src/context.c:92,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:94,1
    - Dst: stat
      Src: /src/libyang/src/context.c:94,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:95,1
    - Dst: strerror
      Src: /src/libyang/src/context.c:95,1
    - Dst: free
      Src: /src/libyang/src/context.c:95,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:97,1
    - Dst: S_ISDIR
      Src: /src/libyang/src/context.c:97,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:98,1
    - Dst: free
      Src: /src/libyang/src/context.c:98,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:102,1
    - Dst: free
      Src: /src/libyang/src/context.c:103,1
    - Dst: ly_set_add
      Src: /src/libyang/src/context.c:107,1
    - Dst: free
      Src: /src/libyang/src/context.c:108,1
    - Dst: ly_ctx_reset_latests
      Src: /src/libyang/src/context.c:113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - search_dir
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 120
    functionName: ly_ctx_set_searchdir
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 26
    functionsReached:
    - realpath
    - LY_CHECK_ERR_RET
    - strerror
    - LOGERR
    - LY_CHECK_ARG_RET
    - strcmp
    - free
    - ly_ctx_reset_latests
    - access
    - ly_set_add
    - S_ISDIR
    - LOGVRB
    - stat
    linkageType: ''
    returnType: API
    signature: API ly_ctx_set_searchdir(struct ly_ctx *ctx, const char *search_dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:128,1
    - Dst: realloc::realloc
      Src: /src/libyang/src/context.c:132,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:134,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/context.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 142
    functionName: ly_ctx_get_searchdirs
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 3
    functionsReached:
    - LOGMEM::LOGMEM
    - LY_CHECK_ARG_RET
    - realloc::realloc
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: API
    signature: 'API * const *

      ly_ctx_get_searchdirs(const struct ly_ctx *ctx)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:147,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:158,1
    - Dst: LOGARG
      Src: /src/libyang/src/context.c:163,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/context.c:166,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/context.c:170,1
    - Dst: memset
      Src: /src/libyang/src/context.c:171,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: ly_ctx_unset_searchdir
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 2
    functionsReached:
    - LOGARG
    - memset
    - LY_CHECK_ARG_RET
    - strcmp
    - ly_set_rm_index
    - ly_set_erase
    linkageType: ''
    returnType: API
    signature: API ly_ctx_unset_searchdir(struct ly_ctx *ctx, const char *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:180,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:183,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/context.c:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - count
    argTypes:
    - struct ly_ctx*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 187
    functionName: ly_ctx_unset_searchdir_last
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_RET
    - ly_set_rm_index
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API ly_ctx_unset_searchdir_last(struct ly_ctx *ctx, uint32_t count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:196,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:198,1
    - Dst: lys_load_module
      Src: /src/libyang/src/context.c:198,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:201,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/src/context.c:201,1
    - Dst: lys_compile_unres_glob_revert
      Src: /src/libyang/src/context.c:205,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/src/context.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - name
    - revision
    - features
    argTypes:
    - struct ly_ctx*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 189
    functionDepth: 23
    functionLinenumber: 189
    functionLinenumberEnd: 210
    functionName: ly_ctx_load_module
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 30
    functionsReached:
    - lys_compile_unres_glob
    - lys_load_module
    - LY_CHECK_ARG_RET
    - lys_compile_unres_glob_revert
    - lys_compile_unres_glob_erase
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_load_module(struct ly_ctx *ctx, const char *name, const char *revision,
      const char **features)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:224,1
    - Dst: calloc
      Src: /src/libyang/src/context.c:226,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:227,1
    - Dst: LOGMEM
      Src: /src/libyang/src/context.c:227,1
    - Dst: lydict_init
      Src: /src/libyang/src/context.c:230,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:233,1
    - Dst: lyplg_init
      Src: /src/libyang/src/context.c:233,1
    - Dst: LOGINT
      Src: /src/libyang/src/context.c:233,1
    - Dst: pthread_key_create
      Src: /src/libyang/src/context.c:236,1
    - Dst: pthread_mutex_init
      Src: /src/libyang/src/context.c:239,1
    - Dst: strdup
      Src: /src/libyang/src/context.c:244,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:245,1
    - Dst: LOGMEM
      Src: /src/libyang/src/context.c:245,1
    - Dst: strchr
      Src: /src/libyang/src/context.c:247,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/src/context.c:249,1
    - Dst: ly_ctx_set_searchdir
      Src: /src/libyang/src/context.c:256,1
    - Dst: free
      Src: /src/libyang/src/context.c:262,1
    - Dst: ly_in_new_memory
      Src: /src/libyang/src/context.c:277,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:278,1
    - Dst: ly_in_memory
      Src: /src/libyang/src/context.c:282,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:283,1
    - Dst: lys_create_module
      Src: /src/libyang/src/context.c:283,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:288,1
    - Dst: lys_compile_unres_glob
      Src: /src/libyang/src/context.c:288,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:292,1
    - Dst: ly_ctx_compile
      Src: /src/libyang/src/context.c:292,1
    - Dst: ly_in_free
      Src: /src/libyang/src/context.c:296,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/src/context.c:297,1
    - Dst: ly_in_free
      Src: /src/libyang/src/context.c:302,1
    - Dst: lys_compile_unres_glob_erase
      Src: /src/libyang/src/context.c:303,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/src/context.c:304,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 3
    argNames:
    - search_dir
    - options
    - new_ctx
    argTypes:
    - char*
    - uint16_t
    - struct ly_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 212
    functionDepth: 21
    functionLinenumber: 212
    functionLinenumberEnd: 306
    functionName: ly_ctx_new
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 19
    functionsReached:
    - lys_create_module
    - ly_in_free
    - ly_ctx_destroy
    - LY_CHECK_ERR_RET
    - lydict_init
    - pthread_mutex_init
    - strdup
    - strchr
    - LY_CHECK_GOTO
    - calloc
    - LY_CHECK_ERR_GOTO
    - lys_compile_unres_glob
    - LY_CHECK_ARG_RET
    - ly_ctx_compile
    - ly_ctx_set_searchdir
    - free
    - LOGMEM
    - LOGINT
    - ly_in_new_memory
    - lys_compile_unres_glob_erase
    - ly_in_memory
    - pthread_key_create
    - lyplg_init
    linkageType: ''
    returnType: API
    signature: API ly_ctx_new(const char *search_dir, uint16_t options, struct ly_ctx
      **new_ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:320,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/src/context.c:320,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:332,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:333,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:334,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:335,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:336,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:337,1
    - Dst: ly_set_add
      Src: /src/libyang/src/context.c:337,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:338,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:339,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:339,1
    - Dst: malloc
      Src: /src/libyang/src/context.c:351,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:352,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:356,1
    - Dst: ly_set_clean
      Src: /src/libyang/src/context.c:359,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/src/context.c:362,1
    - Dst: free
      Src: /src/libyang/src/context.c:363,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:365,1
    - Dst: ly_set_free
      Src: /src/libyang/src/context.c:366,1
    - Dst: ly_set_clean
      Src: /src/libyang/src/context.c:372,1
    - Dst: ly_set_free
      Src: /src/libyang/src/context.c:373,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 2
    argNames:
    - ctx
    - yltree
    argTypes:
    - struct ly_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 308
    functionDepth: 24
    functionLinenumber: 308
    functionLinenumberEnd: 375
    functionName: ly_ctx_new_yl_legacy
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - LY_CHECK_ERR_GOTO
    - malloc
    - LOGERR
    - strcmp
    - free
    - ly_ctx_load_module
    - ly_set_free
    - LY_CHECK_RET
    - ly_set_add
    - LY_CHECK_GOTO
    - lyd_get_value
    - ly_set_clean
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_ctx_new_yl_legacy(struct ly_ctx *ctx, struct lyd_node *yltree)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/context.c:332,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:333,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:334,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:335,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:336,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:337,1
    - Dst: ly_set_add
      Src: /src/libyang/src/context.c:337,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:338,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:339,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:339,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 345
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 24
    functionsReached:
    - lyd_get_value
    - strcmp
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(module), node)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:395,1
    - Dst: ly_ctx_new
      Src: /src/libyang/src/context.c:395,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:396,1
    - Dst: ly_ctx_new
      Src: /src/libyang/src/context.c:396,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:398,1
    - Dst: ly_ctx_new
      Src: /src/libyang/src/context.c:398,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:402,1
    - Dst: parser_func
      Src: /src/libyang/src/context.c:402,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:410,1
    - Dst: lyd_find_xpath
      Src: /src/libyang/src/context.c:410,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:413,1
    - Dst: ly_ctx_new_yl_legacy
      Src: /src/libyang/src/context.c:413,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:425,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:426,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:427,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:428,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:429,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:430,1
    - Dst: ly_set_add
      Src: /src/libyang/src/context.c:430,1
    - Dst: malloc
      Src: /src/libyang/src/context.c:434,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:435,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:439,1
    - Dst: ly_set_clean
      Src: /src/libyang/src/context.c:442,1
    - Dst: ly_ctx_load_module
      Src: /src/libyang/src/context.c:445,1
    - Dst: free
      Src: /src/libyang/src/context.c:446,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:448,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/context.c:457,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:461,1
    - Dst: ly_ctx_compile
      Src: /src/libyang/src/context.c:461,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/context.c:469,1
    - Dst: ly_set_free
      Src: /src/libyang/src/context.c:470,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/context.c:471,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/src/context.c:472,1
    - Dst: ly_ctx_destroy
      Src: /src/libyang/src/context.c:475,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 65
    argCount: 5
    argNames:
    - search_dir
    - input
    - format
    - options
    - ctx
    argTypes:
    - char*
    - char*
    - LYD_FORMAT
    - int
    - struct ly_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 377
    functionDepth: 25
    functionLinenumber: 377
    functionLinenumberEnd: 480
    functionName: ly_ctx_new_yl_common
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - lyd_find_xpath
    - ly_ctx_destroy
    - malloc
    - LOGERR
    - ly_ctx_load_module
    - ly_set_free
    - LY_CHECK_GOTO
    - ly_set_erase
    - LY_CHECK_ERR_GOTO
    - lyd_free_all
    - parser_func
    - free
    - ly_ctx_compile
    - ly_ctx_new_yl_legacy
    - ly_ctx_new
    - strcmp
    - ly_set_add
    - lyd_get_value
    - ly_set_clean
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_ctx_new_yl_common(const char *search_dir, const char *input,
      LYD_FORMAT format, int options,\n        LY_ERR (*parser_func)(const struct
      ly_ctx *, const char *, LYD_FORMAT, uint32_t, uint32_t, struct lyd_node **),\n
      \       struct ly_ctx **ctx)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/context.c:425,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:426,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:427,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/context.c:428,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:429,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:430,1
    - Dst: ly_set_add
      Src: /src/libyang/src/context.c:430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 432
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 24
    functionsReached:
    - lyd_get_value
    - strcmp
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child(module), node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:485,1
    - Dst: ly_ctx_new_yl_common
      Src: /src/libyang/src/context.c:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - search_dir
    - path
    - format
    - options
    - ctx
    argTypes:
    - char*
    - char*
    - LYD_FORMAT
    - int
    - struct ly_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 482
    functionDepth: 26
    functionLinenumber: 482
    functionLinenumberEnd: 487
    functionName: ly_ctx_new_ylpath
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_ctx_new_yl_common
    linkageType: ''
    returnType: API
    signature: API ly_ctx_new_ylpath(const char *search_dir, const char *path, LYD_FORMAT
      format, int options, struct ly_ctx **ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:492,1
    - Dst: ly_ctx_new_yl_common
      Src: /src/libyang/src/context.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - search_dir
    - data
    - format
    - options
    - ctx
    argTypes:
    - char*
    - char*
    - LYD_FORMAT
    - int
    - struct ly_ctx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 489
    functionDepth: 26
    functionLinenumber: 489
    functionLinenumberEnd: 494
    functionName: ly_ctx_new_ylmem
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_ctx_new_yl_common
    linkageType: ''
    returnType: API
    signature: API ly_ctx_new_ylmem(const char *search_dir, const char *data, LYD_FORMAT
      format, int options, struct ly_ctx **ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:503,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:521,1
    - Dst: lys_recompile
      Src: /src/libyang/src/context.c:521,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 496
    functionDepth: 5
    functionLinenumber: 496
    functionLinenumberEnd: 532
    functionName: ly_ctx_compile
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 4
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - lys_recompile
    linkageType: ''
    returnType: API
    signature: API ly_ctx_compile(struct ly_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 539
    functionName: ly_ctx_get_options
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API ly_ctx_get_options(const struct ly_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:546,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:547,1
    - Dst: LOGARG
      Src: /src/libyang/src/context.c:547,1
    - Dst: lys_recompile
      Src: /src/libyang/src/context.c:552,1
    - Dst: ly_ctx_unset_options
      Src: /src/libyang/src/context.c:554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - option
    argTypes:
    - struct ly_ctx*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 541
    functionDepth: 5
    functionLinenumber: 541
    functionLinenumberEnd: 564
    functionName: ly_ctx_set_options
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 33
    functionsReached:
    - LY_CHECK_ERR_RET
    - LOGARG
    - LY_CHECK_ARG_RET
    - ly_ctx_unset_options
    - lys_recompile
    linkageType: ''
    returnType: API
    signature: API ly_ctx_set_options(struct ly_ctx *ctx, uint16_t option)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - node
    - UNUSED(data)
    - UNUSED(dfs_continue)
    argTypes:
    - struct lysc_node*
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 571
    functionName: lysc_node_clear_priv_dfs_cb
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysc_node_clear_priv_dfs_cb(struct lysc_node *node, void *UNUSED(data),
      ly_bool *UNUSED(dfs_continue))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysc_module_dfs_full
      Src: /src/libyang/src/context.c:583,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/src/context.c:600,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - mod
    argTypes:
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 573
    functionDepth: 3
    functionLinenumber: 573
    functionLinenumberEnd: 605
    functionName: lysc_node_clear_all_priv
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - lysc_module_dfs_full
    - lysc_tree_dfs_full
    linkageType: ''
    returnType: void
    signature: void lysc_node_clear_all_priv(struct lys_module *mod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/src/context.c:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 591
    functionDepth: 2
    functionLinenumber: 591
    functionLinenumberEnd: 603
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 35
    functionsReached:
    - lysc_tree_dfs_full
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(exts_p, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/src/context.c:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 598
    functionDepth: 2
    functionLinenumber: 598
    functionLinenumberEnd: 601
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 35
    functionsReached:
    - lysc_tree_dfs_full
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(substmts, v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:610,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:611,1
    - Dst: LOGARG
      Src: /src/libyang/src/context.c:611,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/context.c:618,1
    - Dst: lysc_node_clear_all_priv
      Src: /src/libyang/src/context.c:619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - option
    argTypes:
    - struct ly_ctx*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 607
    functionDepth: 4
    functionLinenumber: 607
    functionLinenumberEnd: 627
    functionName: ly_ctx_unset_options
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 32
    functionsReached:
    - LY_CHECK_ERR_RET
    - LOGARG
    - LY_CHECK_ARG_RET
    - ly_ctx_get_module_iter
    - lysc_node_clear_all_priv
    linkageType: ''
    returnType: API
    signature: API ly_ctx_unset_options(struct ly_ctx *ctx, uint16_t option)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 635
    functionName: ly_ctx_get_change_count
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 4
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API ly_ctx_get_change_count(const struct ly_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - clb
    - user_data
    argTypes:
    - struct ly_ctx*
    - ly_module_imp_clb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 637
    functionDepth: 1
    functionLinenumber: 637
    functionLinenumberEnd: 644
    functionName: ly_ctx_set_module_imp_clb
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 20
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API ly_ctx_set_module_imp_clb(struct ly_ctx *ctx, ly_module_imp_clb
      clb, void *user_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - user_data
    argTypes:
    - struct ly_ctx*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 655
    functionName: ly_module_imp_clb::ly_ctx_get_module_imp_clb
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API ly_module_imp_clb

      ly_ctx_get_module_imp_clb(const struct ly_ctx *ctx, void **user_data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:660,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - index
    argTypes:
    - struct ly_ctx*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 667
    functionName: ly_ctx_get_module_iter
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 8
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_module_iter(const struct ly_ctx *ctx, uint32_t *index)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/context.c:691,1
    - Dst: strncmp
      Src: /src/libyang/src/context.c:691,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - key
    - key_size
    - key_offset
    - index
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - size_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 699
    functionName: ly_ctx_get_module_by_iter
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strcmp
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_ctx_get_module_by_iter(const struct ly_ctx *ctx, const char *key, size_t
      key_size, size_t key_offset, uint32_t *index)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_by_iter
      Src: /src/libyang/src/context.c:716,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:723,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - key
    - key_offset
    - revision
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 731
    functionName: ly_ctx_get_module_by
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - ly_ctx_get_module_by_iter
    - strcmp
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_ctx_get_module_by(const struct ly_ctx *ctx, const char *key, size_t key_offset,
      const char *revision)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:736,1
    - Dst: ly_ctx_get_module_by
      Src: /src/libyang/src/context.c:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - ns
    - revision
    argTypes:
    - struct ly_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 738
    functionName: ly_ctx_get_module_ns
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached:
    - ly_ctx_get_module_by
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_module_ns(const struct ly_ctx *ctx, const char *ns, const char *revision)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:743,1
    - Dst: ly_ctx_get_module_by
      Src: /src/libyang/src/context.c:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - name
    - revision
    argTypes:
    - struct ly_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 740
    functionDepth: 2
    functionLinenumber: 740
    functionLinenumberEnd: 745
    functionName: ly_ctx_get_module
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 10
    functionsReached:
    - ly_ctx_get_module_by
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_module(const struct ly_ctx *ctx, const char *name, const char *revision)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_by_iter
      Src: /src/libyang/src/context.c:760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - key
    - key_offset
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 767
    functionName: ly_ctx_get_module_latest_by
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - ly_ctx_get_module_by_iter
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_ctx_get_module_latest_by(const struct ly_ctx *ctx, const char *key, size_t
      key_offset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:772,1
    - Dst: ly_ctx_get_module_latest_by
      Src: /src/libyang/src/context.c:773,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 769
    functionDepth: 2
    functionLinenumber: 769
    functionLinenumberEnd: 774
    functionName: ly_ctx_get_module_latest
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 12
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_ctx_get_module_latest_by
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_module_latest(const struct ly_ctx *ctx, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:779,1
    - Dst: ly_ctx_get_module_latest_by
      Src: /src/libyang/src/context.c:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - ns
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 776
    functionDepth: 2
    functionLinenumber: 776
    functionLinenumberEnd: 781
    functionName: ly_ctx_get_module_latest_ns
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_ctx_get_module_latest_by
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_module_latest_ns(const struct ly_ctx *ctx, const char *ns)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_by_iter
      Src: /src/libyang/src/context.c:797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - key
    - key_size
    - key_offset
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 791
    functionDepth: 1
    functionLinenumber: 791
    functionLinenumberEnd: 804
    functionName: ly_ctx_get_module_implemented_by
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - ly_ctx_get_module_by_iter
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_ctx_get_module_implemented_by(const struct ly_ctx *ctx, const char *key,
      size_t key_size, size_t key_offset)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:809,1
    - Dst: ly_ctx_get_module_implemented_by
      Src: /src/libyang/src/context.c:810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 811
    functionName: ly_ctx_get_module_implemented
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 16
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_ctx_get_module_implemented_by
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_module_implemented(const struct ly_ctx *ctx, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:816,1
    - Dst: ly_ctx_get_module_implemented_by
      Src: /src/libyang/src/context.c:817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - name
    - name_len
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 813
    functionDepth: 2
    functionLinenumber: 813
    functionLinenumberEnd: 818
    functionName: ly_ctx_get_module_implemented2
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_ctx_get_module_implemented_by
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_ctx_get_module_implemented2(const struct ly_ctx *ctx, const char *name, size_t
      name_len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:823,1
    - Dst: ly_ctx_get_module_implemented_by
      Src: /src/libyang/src/context.c:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - ns
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 820
    functionDepth: 2
    functionLinenumber: 820
    functionLinenumberEnd: 825
    functionName: ly_ctx_get_module_implemented_ns
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 6
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_ctx_get_module_implemented_by
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_module_implemented_ns(const struct ly_ctx *ctx, const char *ns)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:842,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/context.c:844,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:845,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:854,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 4
    argNames:
    - module
    - submodule
    - revision
    - latest
    argTypes:
    - struct lys_module*
    - char*
    - char*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 862
    functionName: _ly_ctx_get_submodule2
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - LY_CHECK_ARG_RET
    - strcmp
    linkageType: ''
    returnType: struct lysp_submodule
    signature: 'struct lysp_submodule *

      _ly_ctx_get_submodule2(const struct lys_module *module, const char *submodule,
      const char *revision, ly_bool latest)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:880,1
    - Dst: _ly_ctx_get_submodule2
      Src: /src/libyang/src/context.c:888,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - submodule
    - revision
    - latest
    argTypes:
    - struct ly_ctx*
    - char*
    - char*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 873
    functionDepth: 2
    functionLinenumber: 873
    functionLinenumberEnd: 895
    functionName: _ly_ctx_get_submodule
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - _ly_ctx_get_submodule2
    linkageType: ''
    returnType: struct lysp_submodule
    signature: 'struct lysp_submodule *

      _ly_ctx_get_submodule(const struct ly_ctx *ctx, const char *submodule, const
      char *revision, ly_bool latest)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ly_ctx_get_submodule
      Src: /src/libyang/src/context.c:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - submodule
    - revision
    argTypes:
    - struct ly_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 897
    functionDepth: 3
    functionLinenumber: 897
    functionLinenumberEnd: 901
    functionName: ly_ctx_get_submodule
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 2
    functionsReached:
    - _ly_ctx_get_submodule
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_submodule(const struct ly_ctx *ctx, const char *submodule, const
      char *revision)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ly_ctx_get_submodule
      Src: /src/libyang/src/context.c:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - submodule
    argTypes:
    - struct ly_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 903
    functionDepth: 3
    functionLinenumber: 903
    functionLinenumberEnd: 907
    functionName: ly_ctx_get_submodule_latest
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 5
    functionsReached:
    - _ly_ctx_get_submodule
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_submodule_latest(const struct ly_ctx *ctx, const char *submodule)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ly_ctx_get_submodule2
      Src: /src/libyang/src/context.c:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - module
    - submodule
    - revision
    argTypes:
    - struct lys_module*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 2
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: ly_ctx_get_submodule2
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 2
    functionsReached:
    - _ly_ctx_get_submodule2
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_submodule2(const struct lys_module *module, const char *submodule,
      const char *revision)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ly_ctx_get_submodule2
      Src: /src/libyang/src/context.c:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - module
    - submodule
    argTypes:
    - struct lys_module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 915
    functionDepth: 2
    functionLinenumber: 915
    functionLinenumberEnd: 919
    functionName: ly_ctx_get_submodule2_latest
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached:
    - _ly_ctx_get_submodule2
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_ctx_get_submodule2_latest(const struct lys_module *module, const char *submodule)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/context.c:932,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 939
    functionName: ly_ctx_reset_latests
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 2
    functionsReached:
    - LY_ARRAY_COUNT
    linkageType: ''
    returnType: API
    signature: API ly_ctx_reset_latests(struct ly_ctx *ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 953
    functionName: ly_ctx_internal_modules_count
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API ly_ctx_internal_modules_count(const struct ly_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/context.c:966,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:971,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:971,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/context.c:974,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/context.c:975,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:980,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:980,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - parent
    - pmod
    argTypes:
    - struct lyd_node*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 955
    functionDepth: 5
    functionLinenumber: 955
    functionLinenumberEnd: 985
    functionName: ylib_feature
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - lyd_new_term
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ylib_feature(struct lyd_node *parent, const struct lysp_module
      *pmod)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/context.c:998,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:1002,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1002,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:1004,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1004,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - parent
    - cur_mod
    - bis
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 987
    functionDepth: 5
    functionLinenumber: 987
    functionLinenumberEnd: 1010
    functionName: ylib_deviation
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - lyd_new_term
    - lyd_new_list
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ylib_deviation(struct lyd_node *parent, const struct lys_module
      *cur_mod, ly_bool bis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/context.c:1022,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:1026,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1026,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:1029,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1029,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:1032,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1032,1
    - Dst: asprintf
      Src: /src/libyang/src/context.c:1037,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:1038,1
    - Dst: LOGMEM
      Src: /src/libyang/src/context.c:1038,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1040,1
    - Dst: free
      Src: /src/libyang/src/context.c:1041,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/context.c:1042,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - parent
    - pmod
    - bis
    argTypes:
    - struct lyd_node*
    - struct lysp_module*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1012
    functionDepth: 5
    functionLinenumber: 1012
    functionLinenumberEnd: 1047
    functionName: ylib_submodules
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 0
    functionsReached:
    - lyd_new_term
    - LY_CHECK_ERR_RET
    - lyd_new_list
    - free
    - asprintf
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ylib_submodules(struct lyd_node *parent, const struct lysp_module
      *pmod, ly_bool bis)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/context.c:1061,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/context.c:1063,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/context.c:1064,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:1064,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:1066,1
    - Dst: strcmp
      Src: /src/libyang/src/context.c:1068,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:1071,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1075,1
    - Dst: lyd_new_inner
      Src: /src/libyang/src/context.c:1075,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1078,1
    - Dst: lyd_new_inner
      Src: /src/libyang/src/context.c:1078,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1079,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1079,1
    - Dst: LOGERR
      Src: /src/libyang/src/context.c:1085,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1092,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1092,1
    - Dst: asprintf
      Src: /src/libyang/src/context.c:1097,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:1098,1
    - Dst: LOGMEM
      Src: /src/libyang/src/context.c:1098,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1100,1
    - Dst: free
      Src: /src/libyang/src/context.c:1101,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1102,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1106,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1106,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1109,1
    - Dst: ylib_feature
      Src: /src/libyang/src/context.c:1109,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1112,1
    - Dst: ylib_deviation
      Src: /src/libyang/src/context.c:1112,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1115,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1115,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1119,1
    - Dst: ylib_submodules
      Src: /src/libyang/src/context.c:1119,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1127,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1127,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1130,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1130,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1133,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1133,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1138,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1138,1
    - Dst: asprintf
      Src: /src/libyang/src/context.c:1142,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:1143,1
    - Dst: LOGMEM
      Src: /src/libyang/src/context.c:1143,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1145,1
    - Dst: free
      Src: /src/libyang/src/context.c:1146,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1147,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1151,1
    - Dst: ylib_submodules
      Src: /src/libyang/src/context.c:1151,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1154,1
    - Dst: ylib_feature
      Src: /src/libyang/src/context.c:1154,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1157,1
    - Dst: ylib_deviation
      Src: /src/libyang/src/context.c:1157,1
    - Dst: va_start
      Src: /src/libyang/src/context.c:1162,1
    - Dst: vasprintf
      Src: /src/libyang/src/context.c:1163,1
    - Dst: va_end
      Src: /src/libyang/src/context.c:1164,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:1165,1
    - Dst: LOGMEM
      Src: /src/libyang/src/context.c:1165,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1166,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:1167,1
    - Dst: free
      Src: /src/libyang/src/context.c:1167,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:1171,1
    - Dst: lyd_new_list
      Src: /src/libyang/src/context.c:1171,1
    - Dst: free
      Src: /src/libyang/src/context.c:1171,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:1173,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1173,1
    - Dst: free
      Src: /src/libyang/src/context.c:1173,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/context.c:1176,1
    - Dst: lyd_new_term
      Src: /src/libyang/src/context.c:1176,1
    - Dst: free
      Src: /src/libyang/src/context.c:1176,1
    - Dst: free
      Src: /src/libyang/src/context.c:1178,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/context.c:1181,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/context.c:1187,1
    - Dst: lyd_validate_all
      Src: /src/libyang/src/context.c:1187,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/context.c:1193,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/context.c:1194,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 87
    argCount: 3
    argNames:
    - ctx
    - root_p
    - content_id_format
    argTypes:
    - struct ly_ctx*
    - struct lyd_node**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1049
    functionDepth: 14
    functionLinenumber: 1049
    functionLinenumberEnd: 1196
    functionName: ly_ctx_get_yanglib_data
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_ERR_RET
    - ylib_feature
    - LOGERR
    - lyd_new_list
    - vasprintf
    - asprintf
    - lyd_new_inner
    - ylib_deviation
    - LY_CHECK_GOTO
    - lyd_insert_sibling
    - lyd_new_term
    - LY_CHECK_ERR_GOTO
    - lyd_free_all
    - LY_CHECK_ARG_RET
    - free
    - ly_ctx_get_module_implemented
    - ylib_submodules
    - va_start
    - va_end
    - LOGMEM
    - lyd_validate_all
    - strcmp
    linkageType: ''
    returnType: API
    signature: API ly_ctx_get_yanglib_data(const struct ly_ctx *ctx, struct lyd_node
      **root_p, const char *content_id_format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lys_module_free
      Src: /src/libyang/src/context.c:1208,1
    - Dst: free
      Src: /src/libyang/src/context.c:1210,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/context.c:1213,1
    - Dst: ly_err_clean
      Src: /src/libyang/src/context.c:1216,1
    - Dst: pthread_key_delete
      Src: /src/libyang/src/context.c:1217,1
    - Dst: lydict_clean
      Src: /src/libyang/src/context.c:1220,1
    - Dst: pthread_mutex_destroy
      Src: /src/libyang/src/context.c:1223,1
    - Dst: lyplg_clean
      Src: /src/libyang/src/context.c:1226,1
    - Dst: free
      Src: /src/libyang/src/context.c:1228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1198
    functionDepth: 7
    functionLinenumber: 1198
    functionLinenumberEnd: 1229
    functionName: ly_ctx_destroy
    functionSourceFile: /src/libyang/src/context.c
    functionUses: 26
    functionsReached:
    - lydict_clean
    - lyplg_clean
    - free
    - pthread_key_delete
    - ly_err_clean
    - lys_module_free
    - ly_set_erase
    - pthread_mutex_destroy
    linkageType: ''
    returnType: API
    signature: API ly_ctx_destroy(struct ly_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lybctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: LYB_LAST_SUBTREE
    functionSourceFile: /src/libyang/src/lyb.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYB_LAST_SUBTREE(lybctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - list
    - pos
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: lysc_iff_getop
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t lysc_iff_getop(uint8_t *list, size_t pos)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lysc_iff_getop
      Src: /src/libyang/src/schema_features.c:55,1
    - Dst: lysc_iffeature_value_
      Src: /src/libyang/src/schema_features.c:64,1
    - Dst: lysc_iffeature_value_
      Src: /src/libyang/src/schema_features.c:67,1
    - Dst: lysc_iffeature_value_
      Src: /src/libyang/src/schema_features.c:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - iff
    - index_e
    - index_f
    argTypes:
    - struct lysc_iffeature*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 85
    functionName: lysc_iffeature_value_
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 1
    functionsReached:
    - lysc_iffeature_value_
    - lysc_iff_getop
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysc_iffeature_value_(const struct lysc_iffeature *iff, size_t
      *index_e, size_t *index_f)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/schema_features.c:92,1
    - Dst: lysc_iffeature_value_
      Src: /src/libyang/src/schema_features.c:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - iff
    argTypes:
    - struct lysc_iffeature*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: lysc_iffeature_value
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - lysc_iffeature_value_
    linkageType: ''
    returnType: API
    signature: API lysc_iffeature_value(const struct lysc_iffeature *iff)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_features.c:108,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_features.c:117,1
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - last
    - pmod
    - idx
    argTypes:
    - struct lysp_feature*
    - struct lysp_module*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 124
    functionName: lysp_feature_next
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 1
    functionsReached:
    - LY_ARRAY_COUNT
    - lysp_feature_next
    linkageType: ''
    returnType: API
    signature: 'API *

      lysp_feature_next(const struct lysp_feature *last, const struct lysp_module
      *pmod, uint32_t *idx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_features.c:143,1
    - Dst: ly_strnchr
      Src: /src/libyang/src/schema_features.c:145,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_features.c:147,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_features.c:148,1
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:161,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/schema_features.c:162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - pmod
    - name
    - len
    - prefixed
    argTypes:
    - struct lysp_module*
    - char*
    - size_t
    - ly_bool
    assertStmts:
    - condition: (pmod)
      pos:
        line_end: 142
        line_start: 142
        source_file: /src/libyang/src/schema_features.c
    constantsTouched: []
    func_position:
      end: 168
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 168
    functionName: lysp_feature_find
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - ly_strncmp
    - ly_strnchr
    - LY_CHECK_RET
    - lysp_feature_next
    - assert
    linkageType: ''
    returnType: struct lysp_feature
    signature: 'struct lysp_feature *

      lysp_feature_find(const struct lysp_module *pmod, const char *name, size_t len,
      ly_bool prefixed)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/schema_features.c:175,1
    - Dst: lysp_feature_find
      Src: /src/libyang/src/schema_features.c:178,1
    - Dst: strlen
      Src: /src/libyang/src/schema_features.c:178,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_features.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - module
    - feature
    argTypes:
    - struct lys_module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 170
    functionDepth: 3
    functionLinenumber: 170
    functionLinenumberEnd: 188
    functionName: lys_feature_value
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - strlen
    - lysp_feature_find
    linkageType: ''
    returnType: API
    signature: API lys_feature_value(const struct lys_module *module, const char *feature)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_realloc
      Src: /src/libyang/src/schema_features.c:212,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_features.c:213,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_features.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - stack
    - value
    argTypes:
    - struct iff_stack*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 217
    functionName: iff_stack_push
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - LOGMEM
    - ly_realloc
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR iff_stack_push(struct iff_stack *stack, uint8_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_features.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - stack
    argTypes:
    - struct iff_stack*
    assertStmts:
    - condition: (stack && stack->index)
      pos:
        line_end: 226
        line_start: 226
        source_file: /src/libyang/src/schema_features.c
    constantsTouched: []
    func_position:
      end: 231
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 231
    functionName: iff_stack_pop
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t iff_stack_pop(struct iff_stack *stack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/schema_features.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stack
    argTypes:
    - struct iff_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: iff_stack_clean
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void iff_stack_clean(struct iff_stack *stack)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_features.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - list
    - op
    - pos
    argTypes:
    - uint8_t*
    - uint8_t
    - size_t
    assertStmts:
    - condition: (op <= IFF_RECORD_MASK)
      pos:
        line_end: 256
        line_start: 256
        source_file: /src/libyang/src/schema_features.c
    constantsTouched: []
    func_position:
      end: 263
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 263
    functionName: iff_setop
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void iff_setop(uint8_t *list, uint8_t op, size_t pos)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_features.c:280,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:291,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_features.c:296,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_features.c:296,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_features.c:297,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_features.c:297,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_features.c:298,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_features.c:298,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:300,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:302,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:304,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:318,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:335,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:345,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:350,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:358,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/schema_features.c:364,1
    - Dst: calloc
      Src: /src/libyang/src/schema_features.c:365,1
    - Dst: malloc
      Src: /src/libyang/src/schema_features.c:366,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_features.c:367,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_features.c:367,1
    - Dst: iff_stack_push
      Src: /src/libyang/src/schema_features.c:375,1
    - Dst: iff_stack_pop
      Src: /src/libyang/src/schema_features.c:379,1
    - Dst: iff_setop
      Src: /src/libyang/src/schema_features.c:380,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:383,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:389,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_features.c:394,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_features.c:394,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:394,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_features.c:394,1
    - Dst: iff_stack_pop
      Src: /src/libyang/src/schema_features.c:397,1
    - Dst: iff_stack_push
      Src: /src/libyang/src/schema_features.c:401,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_features.c:403,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_features.c:403,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:403,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_features.c:403,1
    - Dst: iff_stack_pop
      Src: /src/libyang/src/schema_features.c:407,1
    - Dst: iff_setop
      Src: /src/libyang/src/schema_features.c:408,1
    - Dst: iff_stack_push
      Src: /src/libyang/src/schema_features.c:410,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_features.c:411,1
    - Dst: isspace
      Src: /src/libyang/src/schema_features.c:411,1
    - Dst: iff_stack_pop
      Src: /src/libyang/src/schema_features.c:413,1
    - Dst: iff_setop
      Src: /src/libyang/src/schema_features.c:414,1
    - Dst: iff_stack_push
      Src: /src/libyang/src/schema_features.c:416,1
    - Dst: iff_setop
      Src: /src/libyang/src/schema_features.c:421,1
    - Dst: lysp_feature_find
      Src: /src/libyang/src/schema_features.c:424,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:426,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_features.c:432,1
    - Dst: iff_stack_pop
      Src: /src/libyang/src/schema_features.c:437,1
    - Dst: iff_setop
      Src: /src/libyang/src/schema_features.c:438,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:443,1
    - Dst: iff_stack_clean
      Src: /src/libyang/src/schema_features.c:451,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 144
    argCount: 3
    argNames:
    - ctx
    - qname
    - iff
    argTypes:
    - struct ly_ctx*
    - struct lysp_qname*
    - struct lysc_iffeature*
    assertStmts:
    - condition: (c)
      pos:
        line_end: 279
        line_start: 279
        source_file: /src/libyang/src/schema_features.c
    constantsTouched: []
    func_position:
      end: 454
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 454
    functionName: lys_compile_iffeature
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - malloc
    - lysp_feature_find
    - iff_stack_pop
    - iff_stack_push
    - iff_stack_clean
    - strncmp
    - LOGVAL
    - ly_strlen_const
    - isspace
    - LY_ARRAY_CREATE_RET
    - calloc
    - iff_setop
    - LY_ARRAY_INCREMENT
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_iffeature(const struct ly_ctx *ctx, struct lysp_qname
      *qname, struct lysc_iffeature *iff)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_features.c:467,1
    - Dst: lys_compile_iffeature
      Src: /src/libyang/src/schema_features.c:467,1
    - Dst: lysc_iffeature_value
      Src: /src/libyang/src/schema_features.c:469,1
    - Dst: lysc_iffeature_free
      Src: /src/libyang/src/schema_features.c:470,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - iffeatures
    - enabled
    argTypes:
    - struct ly_ctx*
    - struct lysp_qname*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 456
    functionDepth: 4
    functionLinenumber: 456
    functionLinenumberEnd: 480
    functionName: lys_eval_iffeatures
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_RET
    - lysc_iffeature_value
    - lysc_iffeature_free
    - lys_compile_iffeature
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_eval_iffeatures(const struct ly_ctx *ctx, struct lysp_qname
      *iffeatures, ly_bool *enabled)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:496,1
    - Dst: assert
      Src: /src/libyang/src/schema_features.c:502,1
    - Dst: lysc_iffeature_value
      Src: /src/libyang/src/schema_features.c:503,1
    - Dst: LOGWRN
      Src: /src/libyang/src/schema_features.c:505,1
    - Dst: lys_check_features
      Src: /src/libyang/src/schema_features.c:510,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - pmod
    argTypes:
    - struct lysp_module*
    assertStmts:
    - condition: (f->iffeatures_c)
      pos:
        line_end: 501
        line_start: 501
        source_file: /src/libyang/src/schema_features.c
    constantsTouched: []
    func_position:
      end: 517
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 517
    functionName: lys_check_features
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 1
    functionsReached:
    - lysc_iffeature_value
    - lys_check_features
    - LOGWRN
    - lysp_feature_next
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_check_features(struct lysp_module *pmod)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/schema_features.c:530,1
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:532,1
    - Dst: lysp_feature_find
      Src: /src/libyang/src/schema_features.c:539,1
    - Dst: strlen
      Src: /src/libyang/src/schema_features.c:539,1
    - Dst: LOGERR
      Src: /src/libyang/src/schema_features.c:541,1
    - Dst: lys_check_features
      Src: /src/libyang/src/schema_features.c:552,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - pmod
    - features
    argTypes:
    - struct lysp_module*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 519
    functionDepth: 4
    functionLinenumber: 519
    functionLinenumberEnd: 553
    functionName: lys_enable_features
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 1
    functionsReached:
    - strlen
    - LOGERR
    - strcmp
    - lysp_feature_find
    - lys_check_features
    - lysp_feature_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_enable_features(struct lysp_module *pmod, const char **features)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:567,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_features.c:573,1
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:575,1
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:583,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_features.c:585,1
    - Dst: lys_check_features
      Src: /src/libyang/src/schema_features.c:608,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 2
    argNames:
    - pmod
    - features
    argTypes:
    - struct lysp_module*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 555
    functionDepth: 4
    functionLinenumber: 555
    functionLinenumberEnd: 609
    functionName: lys_set_features
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 2
    functionsReached:
    - lys_check_features
    - strcmp
    - lysp_feature_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_set_features(struct lysp_module *pmod, const char **features)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_features.c:635,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:637,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_features.c:641,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_features.c:642,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_features.c:647,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:649,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_features.c:653,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_features.c:654,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_features.c:659,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - feature
    - depfeatures
    argTypes:
    - struct ly_ctx*
    - struct lysp_feature*
    - struct lysp_feature**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 661
    functionName: lys_compile_feature_circular_check
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - LOGVAL
    - ly_set_add
    - LY_CHECK_GOTO
    - ly_set_erase
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_feature_circular_check(const struct ly_ctx *ctx,
      struct lysp_feature *feature, struct lysp_feature **depfeatures)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:670,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/schema_features.c:676,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_features.c:676,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_features.c:677,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_features.c:678,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_features.c:679,1
    - Dst: lys_compile_iffeature
      Src: /src/libyang/src/schema_features.c:679,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_features.c:681,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_features.c:682,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_features.c:685,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_features.c:689,1
    - Dst: lys_compile_feature_circular_check
      Src: /src/libyang/src/schema_features.c:689,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_features.c:692,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - pmod
    argTypes:
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 663
    functionDepth: 4
    functionLinenumber: 663
    functionLinenumberEnd: 699
    functionName: lys_compile_feature_iffeatures
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 1
    functionsReached:
    - lys_compile_feature_circular_check
    - LY_ARRAY_COUNT
    - lys_compile_iffeature
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL
    - LY_ARRAY_NEW_RET
    - LY_ARRAY_CREATE_RET
    - LY_ARRAY_INCREMENT
    - lysp_feature_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_feature_iffeatures(struct lysp_module *pmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysp_feature_next
      Src: /src/libyang/src/schema_features.c:707,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/schema_features.c:708,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_features.c:710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - pmod
    argTypes:
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 701
    functionDepth: 2
    functionLinenumber: 701
    functionLinenumberEnd: 713
    functionName: lys_free_feature_iffeatures
    functionSourceFile: /src/libyang/src/schema_features.c
    functionUses: 1
    functionsReached:
    - FREE_ARRAY
    - LY_ARRAY_FREE
    - lysp_feature_next
    linkageType: ''
    returnType: void
    signature: void lys_free_feature_iffeatures(struct lysp_module *pmod)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_hash_multi
      Src: /src/libyang/src/lyb.c:42,1
    - Dst: strlen
      Src: /src/libyang/src/lyb.c:42,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/lyb.c:43,1
    - Dst: strlen
      Src: /src/libyang/src/lyb.c:43,1
    - Dst: strlen
      Src: /src/libyang/src/lyb.c:47,1
    - Dst: strlen
      Src: /src/libyang/src/lyb.c:49,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/lyb.c:54,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/lyb.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - node
    - collision_id
    argTypes:
    - struct lysc_node*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 64
    functionName: lyb_generate_hash
    functionSourceFile: /src/libyang/src/lyb.c
    functionUses: 0
    functionsReached:
    - dict_hash_multi
    - strlen
    linkageType: ''
    returnType: LYB_HASH
    signature: LYB_HASH lyb_generate_hash(const struct lysc_node *node, uint8_t collision_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/lyb.c:70,1
    - Dst: lyb_generate_hash
      Src: /src/libyang/src/lyb.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - node
    - collision_id
    argTypes:
    - struct lysc_node*
    - uint8_t
    assertStmts:
    - condition: (node->hash[0])
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/libyang/src/lyb.c
    constantsTouched: []
    func_position:
      end: 79
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 79
    functionName: lyb_get_hash
    functionSourceFile: /src/libyang/src/lyb.c
    functionUses: 5
    functionsReached:
    - lyb_generate_hash
    - assert
    linkageType: ''
    returnType: LYB_HASH
    signature: LYB_HASH lyb_get_hash(const struct lysc_node *node, uint8_t collision_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyb_generate_hash
      Src: /src/libyang/src/lyb.c:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - node
    - UNUSED(data)
    - UNUSED(dfs_continue)
    argTypes:
    - struct lysc_node*
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 98
    functionName: lyb_cache_node_hash_cb
    functionSourceFile: /src/libyang/src/lyb.c
    functionUses: 0
    functionsReached:
    - lyb_generate_hash
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyb_cache_node_hash_cb(struct lysc_node *node, void *UNUSED(data),
      ly_bool *UNUSED(dfs_continue))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/libyang/src/lyb.c:104,1
    - Dst: lysc_module_dfs_full
      Src: /src/libyang/src/lyb.c:107,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/lyb.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mod
    argTypes:
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 111
    functionName: lyb_cache_module_hash
    functionSourceFile: /src/libyang/src/lyb.c
    functionUses: 2
    functionsReached:
    - pthread_mutex_lock
    - lysc_module_dfs_full
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void lyb_cache_module_hash(const struct lys_module *mod)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - node
    - models
    argTypes:
    - struct lysc_node*
    - struct lys_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 125
    functionName: lyb_has_schema_model
    functionSourceFile: /src/libyang/src/lyb.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyb_has_schema_model(const struct lysc_node *node, const struct
      lys_module **models)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 122
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/lyb.c
    functionUses: 40
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(models, u)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/printer_xml.c:70,1
    - Dst: strcmp
      Src: /src/libyang/src/printer_xml.c:79,1
    - Dst: strcmp
      Src: /src/libyang/src/printer_xml.c:85,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:94,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_xml.c:98,1
    - Dst: lydict_insert
      Src: /src/libyang/src/printer_xml.c:98,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_xml.c:100,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_xml.c:100,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_xml.c:101,1
    - Dst: ly_set_add
      Src: /src/libyang/src/printer_xml.c:101,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 4
    argNames:
    - ctx
    - ns
    - new_prefix
    - prefix_opts
    argTypes:
    - struct xmlpr_ctx*
    - char*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 105
    functionName: xml_print_ns
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - ly_print_
    - strcmp
    - LY_CHECK_RET
    - lydict_insert
    - ly_set_add
    linkageType: ''
    returnType: char
    signature: 'char *

      xml_print_ns(struct xmlpr_ctx *ctx, const char *ns, const char *new_prefix,
      uint32_t prefix_opts)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: xml_print_ns
      Src: /src/libyang/src/printer_xml.c:112,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/printer_xml.c:116,1
    - Dst: xml_print_ns
      Src: /src/libyang/src/printer_xml.c:118,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_xml.c:124,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - ctx
    - format
    - name
    - prefix_opts
    argTypes:
    - struct xmlpr_ctx*
    - LY_VALUE_FORMAT
    - struct ly_opaq_name*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 5
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: xml_print_ns_opaq
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - xml_print_ns
    - LOGINT
    - ly_ctx_get_module_latest
    linkageType: ''
    returnType: char
    signature: 'char *

      xml_print_ns_opaq(struct xmlpr_ctx *ctx, LY_VALUE_FORMAT format, const struct
      ly_opaq_name *name, uint32_t prefix_opts)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xml_print_ns
      Src: /src/libyang/src/printer_xml.c:151,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_xml.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - format
    - prefix_data
    - prefix_opts
    argTypes:
    - struct xmlpr_ctx*
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 139
    functionDepth: 5
    functionLinenumber: 139
    functionLinenumberEnd: 158
    functionName: xml_print_ns_prefix_data
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - xml_print_ns
    - LOGINT
    linkageType: ''
    returnType: void
    signature: void xml_print_ns_prefix_data(struct xmlpr_ctx *ctx, LY_VALUE_FORMAT
      format, void *prefix_data, uint32_t prefix_opts)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lyd_is_default
      Src: /src/libyang/src/printer_xml.c:183,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/printer_xml.c:185,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_xml.c:185,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:187,1
    - Dst: xml_print_ns
      Src: /src/libyang/src/printer_xml.c:187,1
    - Dst: strcmp
      Src: /src/libyang/src/printer_xml.c:193,1
    - Dst: strcmp
      Src: /src/libyang/src/printer_xml.c:194,1
    - Dst: strcmp
      Src: /src/libyang/src/printer_xml.c:194,1
    - Dst: struct lyd_meta*::value::realtype::plugin::print
      Src: /src/libyang/src/printer_xml.c:199,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_xml.c:199,1
    - Dst: xml_print_ns
      Src: /src/libyang/src/printer_xml.c:205,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/printer_xml.c:207,1
    - Dst: strcmp
      Src: /src/libyang/src/printer_xml.c:212,1
    - Dst: transform_json2xml
      Src: /src/libyang/src/printer_xml.c:214,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:221,1
    - Dst: free
      Src: /src/libyang/src/printer_xml.c:223,1
    - Dst: free
      Src: /src/libyang/src/printer_xml.c:224,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:226,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:231,1
    - Dst: xml_print_ns
      Src: /src/libyang/src/printer_xml.c:231,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_xml.c:238,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:240,1
    - Dst: free
      Src: /src/libyang/src/printer_xml.c:242,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 163
    functionDepth: 5
    functionLinenumber: 163
    functionLinenumberEnd: 245
    functionName: xml_print_meta
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - xml_print_ns
    - lyxml_dump_text
    - struct lyd_meta*::value::realtype::plugin::print
    - ly_print_
    - strcmp
    - ly_ctx_get_module_latest
    - free
    - lyd_is_default
    - transform_json2xml
    - ly_set_erase
    - LYD_CTX
    linkageType: ''
    returnType: void
    signature: void xml_print_meta(struct xmlpr_ctx *ctx, const struct lyd_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:259,1
    - Dst: xml_print_ns
      Src: /src/libyang/src/printer_xml.c:262,1
    - Dst: xml_print_meta
      Src: /src/libyang/src/printer_xml.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 255
    functionDepth: 6
    functionLinenumber: 255
    functionLinenumberEnd: 266
    functionName: xml_print_node_open
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - xml_print_ns
    - xml_print_meta
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void xml_print_node_open(struct xmlpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_xml.c:274,1
    - Dst: xml_print_ns_opaq
      Src: /src/libyang/src/printer_xml.c:278,1
    - Dst: xml_print_ns_prefix_data
      Src: /src/libyang/src/printer_xml.c:283,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:287,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_xml.c:288,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node_opaq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 268
    functionDepth: 6
    functionLinenumber: 268
    functionLinenumberEnd: 294
    functionName: xml_print_attr
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - lyxml_dump_text
    - xml_print_ns_opaq
    - ly_print_
    - LY_LIST_FOR
    - xml_print_ns_prefix_data
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xml_print_attr(struct xmlpr_ctx *ctx, const struct lyd_node_opaq
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:300,1
    - Dst: xml_print_ns_opaq
      Src: /src/libyang/src/printer_xml.c:303,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_xml.c:306,1
    - Dst: xml_print_attr
      Src: /src/libyang/src/printer_xml.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node_opaq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 296
    functionDepth: 7
    functionLinenumber: 296
    functionLinenumberEnd: 309
    functionName: xml_print_opaq_open
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - xml_print_ns_opaq
    - ly_print_
    - xml_print_attr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xml_print_opaq_open(struct xmlpr_ctx *ctx, const struct lyd_node_opaq
      *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xml_print_node_open
      Src: /src/libyang/src/printer_xml.c:326,1
    - Dst: type::plugin::print
      Src: /src/libyang/src/printer_xml.c:327,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_xml.c:327,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:333,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/printer_xml.c:335,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:338,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:340,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_xml.c:341,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:342,1
    - Dst: free
      Src: /src/libyang/src/printer_xml.c:345,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node_term*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 319
    functionDepth: 7
    functionLinenumber: 319
    functionLinenumberEnd: 347
    functionName: xml_print_term
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - lyxml_dump_text
    - ly_print_
    - free
    - xml_print_node_open
    - type::plugin::print
    - ly_set_erase
    - LYD_CTX
    linkageType: ''
    returnType: void
    signature: void xml_print_term(struct xmlpr_ctx *ctx, const struct lyd_node_term
      *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xml_print_node_open
      Src: /src/libyang/src/printer_xml.c:362,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_xml.c:364,1
    - Dst: ly_should_print
      Src: /src/libyang/src/printer_xml.c:365,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:371,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:376,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_xml.c:379,1
    - Dst: xml_print_node
      Src: /src/libyang/src/printer_xml.c:380,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_xml.c:381,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node_inner*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 356
    functionDepth: 7
    functionLinenumber: 356
    functionLinenumberEnd: 388
    functionName: xml_print_inner
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - ly_print_
    - LY_LIST_FOR
    - xml_print_node_open
    - ly_should_print
    - xml_print_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xml_print_inner(struct xmlpr_ctx *ctx, const struct lyd_node_inner
      *node)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: xml_print_node_open
      Src: /src/libyang/src/printer_xml.c:398,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:403,1
    - Dst: ly_log_options
      Src: /src/libyang/src/printer_xml.c:408,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/src/printer_xml.c:411,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_xml.c:411,1
    - Dst: free
      Src: /src/libyang/src/printer_xml.c:413,1
    - Dst: ly_log_options
      Src: /src/libyang/src/printer_xml.c:419,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:429,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_xml.c:430,1
    - Dst: xml_print_node
      Src: /src/libyang/src/printer_xml.c:431,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_xml.c:432,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:444,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_xml.c:445,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:452,1
    - Dst: LOGWRN
      Src: /src/libyang/src/printer_xml.c:457,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_xml.c:457,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:463,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:465,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node_any*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 390
    functionDepth: 7
    functionLinenumber: 390
    functionLinenumberEnd: 470
    functionName: xml_print_anydata
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - lyxml_dump_text
    - LY_CHECK_ERR_RET
    - ly_print_
    - free
    - LY_LIST_FOR
    - lyd_parse_data_mem
    - xml_print_node_open
    - xml_print_node
    - ly_log_options
    - LOGWRN
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xml_print_anydata(struct xmlpr_ctx *ctx, const struct lyd_node_any
      *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_xml.c:478,1
    - Dst: xml_print_opaq_open
      Src: /src/libyang/src/printer_xml.c:478,1
    - Dst: xml_print_ns_prefix_data
      Src: /src/libyang/src/printer_xml.c:483,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:486,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_xml.c:487,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:493,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_xml.c:497,1
    - Dst: xml_print_node
      Src: /src/libyang/src/printer_xml.c:498,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/printer_xml.c:499,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:503,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:505,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:508,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node_opaq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 472
    functionDepth: 8
    functionLinenumber: 472
    functionLinenumberEnd: 512
    functionName: xml_print_opaq
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 0
    functionsReached:
    - lyxml_dump_text
    - LY_CHECK_ERR_RET
    - ly_print_
    - xml_print_opaq_open
    - LY_LIST_FOR
    - LY_CHECK_RET
    - xml_print_ns_prefix_data
    - xml_print_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xml_print_opaq(struct xmlpr_ctx *ctx, const struct lyd_node_opaq
      *node)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ly_should_print
      Src: /src/libyang/src/printer_xml.c:527,1
    - Dst: xml_print_opaq
      Src: /src/libyang/src/printer_xml.c:536,1
    - Dst: xml_print_inner
      Src: /src/libyang/src/printer_xml.c:544,1
    - Dst: xml_print_term
      Src: /src/libyang/src/printer_xml.c:548,1
    - Dst: xml_print_anydata
      Src: /src/libyang/src/printer_xml.c:552,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_xml.c:555,1
    - Dst: lydict_remove
      Src: /src/libyang/src/printer_xml.c:563,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/printer_xml.c:564,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/printer_xml.c:565,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct xmlpr_ctx*
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 521
    functionDepth: 9
    functionLinenumber: 521
    functionLinenumberEnd: 569
    functionName: xml_print_node
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 3
    functionsReached:
    - xml_print_term
    - LOGINT
    - xml_print_inner
    - xml_print_opaq
    - lydict_remove
    - ly_should_print
    - ly_set_rm_index
    - xml_print_anydata
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xml_print_node(struct xmlpr_ctx *ctx, const struct lyd_node
      *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_xml.c:579,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/printer_xml.c:587,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_xml.c:591,1
    - Dst: xml_print_node
      Src: /src/libyang/src/printer_xml.c:591,1
    - Dst: assert
      Src: /src/libyang/src/printer_xml.c:598,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/printer_xml.c:599,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/printer_xml.c:600,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_xml.c:601,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - out
    - root
    - options
    argTypes:
    - struct ly_out*
    - struct lyd_node*
    - uint32_t
    assertStmts:
    - condition: (!ctx.prefix.count && !ctx.ns.count)
      pos:
        line_end: 597
        line_start: 597
        source_file: /src/libyang/src/printer_xml.c
    constantsTouched: []
    func_position:
      end: 603
      start: 571
    functionDepth: 10
    functionLinenumber: 571
    functionLinenumberEnd: 603
    functionName: xml_print_data
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 1
    functionsReached:
    - ly_print_
    - LY_CHECK_RET
    - xml_print_node
    - ly_print_flush
    - ly_set_erase
    - LYD_CTX
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xml_print_data(struct ly_out *out, const struct lyd_node *root,
      uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_xml.c:591,1
    - Dst: xml_print_node
      Src: /src/libyang/src/printer_xml.c:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 590
    functionDepth: 10
    functionLinenumber: 590
    functionLinenumberEnd: 595
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/printer_xml.c
    functionUses: 28
    functionsReached:
    - LY_CHECK_RET
    - xml_print_node
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(root, node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:56,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/parser_stmt.c:56,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:57,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:61,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/src/parser_stmt.c:61,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:64,1
    - Dst: lysp_check_identifierchar
      Src: /src/libyang/src/parser_stmt.c:64,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:68,1
    - Dst: lysp_check_stringchar
      Src: /src/libyang/src/parser_stmt.c:68,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - val_type
    - val
    argTypes:
    - struct lys_parser_ctx*
    - enum yang_arg
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 75
    functionName: lysp_stmt_validate_value
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - ly_getutf8
    - lysp_check_identifierchar
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - lysp_check_stringchar
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_validate_value(struct lys_parser_ctx *ctx, enum yang_arg
      val_type, const char *val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:94,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:94,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:97,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:97,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:97,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:105,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:105,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - stmt
    - insubstmt
    - insubstmt_index
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - enum ly_stmt
    - LY_ARRAY_COUNT_TYPE
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 88
    functionDepth: 4
    functionLinenumber: 88
    functionLinenumberEnd: 109
    functionName: lysp_stmt_ext
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LY_ARRAY_NEW_RET
    - lydict_insert
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_ext(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, enum ly_stmt insubstmt,\n        LY_ARRAY_COUNT_TYPE insubstmt_index,
      struct lysp_ext_instance **exts)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:129,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:129,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:133,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:133,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:134,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:134,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:134,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:139,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:139,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:142,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:142,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 6
    argNames:
    - ctx
    - stmt
    - substmt_index
    - value
    - arg
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint32_t
    - char**
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 124
    functionDepth: 5
    functionLinenumber: 124
    functionLinenumberEnd: 147
    functionName: lysp_stmt_text_field
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - lydict_insert
    - lysp_stmt_ext
    - ly_stmt2str
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_text_field(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, uint32_t substmt_index,\n        const char **value, enum yang_arg
      arg, struct lysp_ext_instance **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:166,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:166,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:169,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:169,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:170,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:170,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:170,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:176,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:176,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_stmt.c:176,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:179,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:179,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 5
    argNames:
    - ctx
    - stmt
    - qnames
    - arg
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_qname**
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 160
    functionDepth: 5
    functionLinenumber: 160
    functionLinenumberEnd: 184
    functionName: lysp_stmt_qnames
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_qnames(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt,\n        struct lysp_qname **qnames, enum yang_arg arg, struct lysp_ext_instance
      **exts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:203,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:203,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:206,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:206,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:207,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:207,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:207,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:212,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:212,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/parser_stmt.c:212,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:215,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:215,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - ctx
    - stmt
    - texts
    - arg
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - char***
    - enum yang_arg
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 197
    functionDepth: 5
    functionLinenumber: 197
    functionLinenumberEnd: 220
    functionName: lysp_stmt_text_fields
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_text_fields(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt,\n        const char ***texts, enum yang_arg arg, struct lysp_ext_instance
      **exts)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:238,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:242,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:242,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:243,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:244,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:244,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:246,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:246,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:248,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:248,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:251,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:258,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:258,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:261,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:261,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - ctx
    - stmt
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 232
    functionDepth: 5
    functionLinenumber: 232
    functionLinenumberEnd: 266
    functionName: lysp_stmt_status
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_status(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:284,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:288,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:288,1
    - Dst: calloc
      Src: /src/libyang/src/parser_stmt.c:290,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:291,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_stmt.c:291,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:291,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:294,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:294,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:294,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:299,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:299,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:302,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:302,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:305,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:305,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:308,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:308,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - stmt
    - when_p
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_when**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 277
    functionDepth: 6
    functionLinenumber: 277
    functionLinenumberEnd: 313
    functionName: lysp_stmt_when
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - PARSER_CTX
    - lydict_insert
    - lysp_stmt_ext
    - ly_stmt2str
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_when(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_when **when_p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:331,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:335,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:335,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:336,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:337,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:337,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:339,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:339,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:342,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:349,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:349,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:352,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:352,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - ctx
    - stmt
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 325
    functionDepth: 5
    functionLinenumber: 325
    functionLinenumberEnd: 358
    functionName: lysp_stmt_config
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_config(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:376,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:380,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:380,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:381,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:382,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:382,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:384,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:384,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:387,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:394,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:394,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:397,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:397,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - ctx
    - stmt
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 370
    functionDepth: 5
    functionLinenumber: 370
    functionLinenumberEnd: 403
    functionName: lysp_stmt_mandatory
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_mandatory(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:417,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:417,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:418,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:418,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:418,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:424,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:424,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:427,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:427,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:430,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:430,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:433,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:433,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:436,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:436,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:439,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:439,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:439,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - stmt
    - restr
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_restr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 414
    functionDepth: 6
    functionLinenumber: 414
    functionLinenumberEnd: 444
    functionName: lysp_stmt_restr
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_restr(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_restr *restr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:460,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:460,1
    - Dst: lysp_stmt_restr
      Src: /src/libyang/src/parser_stmt.c:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - stmt
    - restrs
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_restr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 455
    functionDepth: 7
    functionLinenumber: 455
    functionLinenumberEnd: 462
    functionName: lysp_stmt_restrs
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_restr
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_restrs(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_restr **restrs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:478,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:478,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:481,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:481,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:486,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:486,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:486,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:492,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:492,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:495,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:495,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:498,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:498,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:501,1
    - Dst: lysp_stmt_mandatory
      Src: /src/libyang/src/parser_stmt.c:501,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:504,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:504,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:507,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:507,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:510,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:510,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:513,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:513,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:516,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:516,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:519,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:519,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:520,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:520,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 473
    functionDepth: 8
    functionLinenumber: 473
    functionLinenumberEnd: 526
    functionName: lysp_stmt_any
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - LY_CHECK_RET
    - lysp_stmt_mandatory
    - lydict_insert
    - lysp_stmt_config
    - lysp_stmt_restrs
    - lysp_stmt_when
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_LIST_NEW_RET
    - lysp_stmt_qnames
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_any(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:549,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:549,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:554,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:554,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:556,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:558,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:559,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:559,1
    - Dst: strtol
      Src: /src/libyang/src/parser_stmt.c:565,1
    - Dst: INT64_C
      Src: /src/libyang/src/parser_stmt.c:566,1
    - Dst: INT64_C
      Src: /src/libyang/src/parser_stmt.c:566,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:567,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:567,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_stmt.c:571,1
    - Dst: UINT64_C
      Src: /src/libyang/src/parser_stmt.c:572,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:573,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:573,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:579,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:579,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:583,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:583,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:595,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:595,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:598,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:598,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:598,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 58
    argCount: 5
    argNames:
    - ctx
    - stmt
    - value
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - int64_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 539
    functionDepth: 5
    functionLinenumber: 539
    functionLinenumberEnd: 606
    functionName: lysp_stmt_type_enum_value_pos
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - strtoul
    - lysp_stmt_validate_value
    - INT64_C
    - strtol
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - lysp_stmt_ext
    - UINT64_C
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_type_enum_value_pos(struct lys_parser_ctx *ctx, const
      struct lysp_stmt *stmt, int64_t *value, uint16_t *flags,\n        struct lysp_ext_instance
      **exts)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:622,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:622,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:624,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:624,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:627,1
    - Dst: lysp_check_enum_name
      Src: /src/libyang/src/parser_stmt.c:627,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:627,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:630,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:630,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:630,1
    - Dst: CHECK_UNIQUENESS
      Src: /src/libyang/src/parser_stmt.c:631,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:631,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:636,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:636,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:639,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:639,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:640,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:640,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:643,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:643,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:646,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:646,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:649,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:649,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:649,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:650,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:651,1
    - Dst: lysp_stmt_type_enum_value_pos
      Src: /src/libyang/src/parser_stmt.c:651,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:654,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:654,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:654,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:655,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:656,1
    - Dst: lysp_stmt_type_enum_value_pos
      Src: /src/libyang/src/parser_stmt.c:656,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:659,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:659,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:662,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:662,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:662,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - stmt
    - enums
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_type_enum**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 617
    functionDepth: 6
    functionLinenumber: 617
    functionLinenumberEnd: 667
    functionName: lysp_stmt_type_enum
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_qnames
    - strlen
    - LY_CHECK_ERR_RET
    - lysp_stmt_type_enum_value_pos
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - PARSER_CHECK_STMTVER2_RET
    - LY_CHECK_RET
    - lydict_insert
    - PARSER_CTX
    - LOGVAL_PARSER
    - ly_stmt2str
    - CHECK_UNIQUENESS
    - lysp_stmt_ext
    - LY_ARRAY_NEW_RET
    - lysp_check_enum_name
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_type_enum(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, struct lysp_type_enum **enums)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:687,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:691,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:691,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:692,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_stmt.c:693,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:694,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_stmt.c:699,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:702,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:706,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:714,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:714,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:717,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:717,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 4
    argNames:
    - ctx
    - stmt
    - fracdig
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint8_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 679
    functionDepth: 5
    functionLinenumber: 679
    functionLinenumberEnd: 722
    functionName: lysp_stmt_type_fracdigits
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strlen
    - strtoul
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_type_fracdigits(struct lys_parser_ctx *ctx, const
      struct lysp_stmt *stmt, uint8_t *fracdig, struct lysp_ext_instance **exts)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:742,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:747,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:747,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:748,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:749,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:749,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:751,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:751,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:752,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:759,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:759,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:762,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:762,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - stmt
    - reqinst
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint8_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 735
    functionDepth: 5
    functionLinenumber: 735
    functionLinenumberEnd: 767
    functionName: lysp_stmt_type_reqinstance
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_type_reqinstance(struct lys_parser_ctx *ctx, const
      struct lysp_stmt *stmt, uint8_t *reqinst, uint16_t *flags,\n        struct lysp_ext_instance
      **exts)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:786,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:790,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:790,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:791,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:792,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:792,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:793,1
    - Dst: malloc
      Src: /src/libyang/src/parser_stmt.c:798,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:798,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:799,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_stmt.c:799,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:799,1
    - Dst: strcpy
      Src: /src/libyang/src/parser_stmt.c:800,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_stmt.c:801,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:801,1
    - Dst: assert
      Src: /src/libyang/src/parser_stmt.c:803,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:805,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_stmt.c:805,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:805,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:810,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:810,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:813,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:813,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - ctx
    - stmt
    - pat
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - char**
    - struct lysp_ext_instance**
    assertStmts:
    - condition: (buf[0] == LYSP_RESTR_PATTERN_ACK)
      pos:
        line_end: 802
        line_start: 802
        source_file: /src/libyang/src/parser_stmt.c
    constantsTouched: []
    func_position:
      end: 818
      start: 779
    functionDepth: 5
    functionLinenumber: 779
    functionLinenumberEnd: 818
    functionName: lysp_stmt_type_pattern_modifier
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - strcpy
    - malloc
    - lysp_stmt_validate_value
    - lydict_insert_zc
    - LY_CHECK_RET
    - lydict_remove
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - PARSER_CTX
    - lysp_stmt_ext
    - ly_stmt2str
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_type_pattern_modifier(struct lys_parser_ctx *ctx,
      const struct lysp_stmt *stmt, const char **pat, struct lysp_ext_instance **exts)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:836,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:836,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:837,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:837,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:838,1
    - Dst: malloc
      Src: /src/libyang/src/parser_stmt.c:841,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:842,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_stmt.c:842,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:842,1
    - Dst: memmove
      Src: /src/libyang/src/parser_stmt.c:843,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:846,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/parser_stmt.c:846,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:846,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:852,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:852,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:855,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:855,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:858,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:858,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:861,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:861,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:864,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:865,1
    - Dst: lysp_stmt_type_pattern_modifier
      Src: /src/libyang/src/parser_stmt.c:865,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:868,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:868,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:871,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:871,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - stmt
    - patterns
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_restr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 829
    functionDepth: 6
    functionLinenumber: 829
    functionLinenumberEnd: 876
    functionName: lysp_stmt_type_pattern
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - malloc
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - PARSER_CHECK_STMTVER2_RET
    - memmove
    - LY_CHECK_RET
    - LOGMEM
    - lydict_insert_zc
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - lysp_stmt_type_pattern_modifier
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_type_pattern(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, struct lysp_restr **patterns)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:895,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:899,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:899,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:900,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:900,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:900,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:906,1
    - Dst: lysp_stmt_text_fields
      Src: /src/libyang/src/parser_stmt.c:906,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:910,1
    - Dst: lysp_stmt_type_enum
      Src: /src/libyang/src/parser_stmt.c:910,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:914,1
    - Dst: lysp_stmt_type_enum
      Src: /src/libyang/src/parser_stmt.c:914,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:918,1
    - Dst: lysp_stmt_type_fracdigits
      Src: /src/libyang/src/parser_stmt.c:918,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:923,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:923,1
    - Dst: calloc
      Src: /src/libyang/src/parser_stmt.c:926,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:927,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_stmt.c:927,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:927,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:929,1
    - Dst: lysp_stmt_restr
      Src: /src/libyang/src/parser_stmt.c:929,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:933,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:933,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/parser_stmt.c:934,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:934,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_stmt.c:936,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:936,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:937,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:941,1
    - Dst: lysp_stmt_type_pattern
      Src: /src/libyang/src/parser_stmt.c:941,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:946,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:946,1
    - Dst: calloc
      Src: /src/libyang/src/parser_stmt.c:949,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:950,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_stmt.c:950,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:950,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:952,1
    - Dst: lysp_stmt_restr
      Src: /src/libyang/src/parser_stmt.c:952,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:956,1
    - Dst: lysp_stmt_type_reqinstance
      Src: /src/libyang/src/parser_stmt.c:956,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:960,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:960,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:961,1
    - Dst: lysp_stmt_type
      Src: /src/libyang/src/parser_stmt.c:961,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:965,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:965,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:968,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:968,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 74
    argCount: 3
    argNames:
    - ctx
    - stmt
    - type
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 887
    functionDepth: 7
    functionLinenumber: 887
    functionLinenumberEnd: 973
    functionName: lysp_stmt_type
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_type_reqinstance
    - lysp_stmt_type_enum
    - LY_ARRAY_NEW_RET
    - calloc
    - lysp_stmt_text_fields
    - ly_path_parse
    - lydict_remove
    - ly_stmt2str
    - lysp_stmt_text_field
    - lysp_stmt_type_fracdigits
    - LOGVAL_PARSER
    - LOGMEM
    - PARSER_CTX
    - lysp_stmt_validate_value
    - lysp_stmt_type
    - lysp_stmt_ext
    - lysp_stmt_type_pattern
    - lysp_stmt_restr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_type(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_type *type)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:990,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:990,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:993,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:993,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:998,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:998,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:998,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1004,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:1004,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1007,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1007,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1011,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1011,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1014,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1014,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1017,1
    - Dst: lysp_stmt_mandatory
      Src: /src/libyang/src/parser_stmt.c:1017,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1020,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:1020,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1023,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1023,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1026,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1026,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1029,1
    - Dst: lysp_stmt_type
      Src: /src/libyang/src/parser_stmt.c:1029,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1032,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1032,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1035,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:1035,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1038,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1038,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1041,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1041,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1048,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 985
    functionDepth: 8
    functionLinenumber: 985
    functionLinenumberEnd: 1053
    functionName: lysp_stmt_leaf
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_type
    - LY_CHECK_RET
    - lysp_stmt_mandatory
    - lydict_insert
    - lysp_stmt_config
    - lysp_stmt_restrs
    - lysp_stmt_when
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_LIST_NEW_RET
    - lysp_stmt_qnames
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_leaf(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1075,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1081,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1081,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:1082,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_stmt.c:1084,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1085,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:1089,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:1089,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_stmt.c:1091,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1094,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1098,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1111,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1111,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1114,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1114,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 5
    argNames:
    - ctx
    - stmt
    - max
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint32_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1066
    functionDepth: 5
    functionLinenumber: 1066
    functionLinenumberEnd: 1120
    functionName: lysp_stmt_maxelements
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strlen
    - strtoul
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_maxelements(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt,\n        uint32_t *max, uint16_t *flags, struct lysp_ext_instance
      **exts)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1142,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1148,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1148,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:1149,1
    - Dst: isdigit
      Src: /src/libyang/src/parser_stmt.c:1151,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1152,1
    - Dst: strtoul
      Src: /src/libyang/src/parser_stmt.c:1157,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1160,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1164,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1172,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1172,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1175,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1175,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 5
    argNames:
    - ctx
    - stmt
    - min
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint32_t*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1133
    functionDepth: 5
    functionLinenumber: 1133
    functionLinenumberEnd: 1181
    functionName: lysp_stmt_minelements
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strlen
    - strtoul
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - LOGVAL_PARSER
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_minelements(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt,\n        uint32_t *min, uint16_t *flags, struct lysp_ext_instance
      **exts)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1199,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1204,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1204,1
    - Dst: strlen
      Src: /src/libyang/src/parser_stmt.c:1205,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:1206,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:1206,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/parser_stmt.c:1208,1
    - Dst: strncmp
      Src: /src/libyang/src/parser_stmt.c:1208,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1211,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1218,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1218,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1221,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1221,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - ctx
    - stmt
    - flags
    - exts
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - uint16_t*
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1193
    functionDepth: 5
    functionLinenumber: 1193
    functionLinenumberEnd: 1227
    functionName: lysp_stmt_orderedby
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - strlen
    - lysp_stmt_validate_value
    - LY_CHECK_RET
    - strncmp
    - LOGVAL_PARSER
    - ly_strlen_const
    - lysp_stmt_ext
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_orderedby(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, uint16_t *flags, struct lysp_ext_instance **exts)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1244,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1244,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1247,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1247,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1252,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1252,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1252,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1258,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:1258,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1261,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1262,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1262,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1265,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1265,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1268,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1268,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1271,1
    - Dst: lysp_stmt_maxelements
      Src: /src/libyang/src/parser_stmt.c:1271,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1274,1
    - Dst: lysp_stmt_minelements
      Src: /src/libyang/src/parser_stmt.c:1274,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1277,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:1277,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1280,1
    - Dst: lysp_stmt_orderedby
      Src: /src/libyang/src/parser_stmt.c:1280,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1283,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1283,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1286,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1286,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1289,1
    - Dst: lysp_stmt_type
      Src: /src/libyang/src/parser_stmt.c:1289,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1292,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1292,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1295,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:1295,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1298,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1298,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1301,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1301,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1308,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1239
    functionDepth: 8
    functionLinenumber: 1239
    functionLinenumberEnd: 1313
    functionName: lysp_stmt_leaflist
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_config
    - LY_LIST_NEW_RET
    - lysp_stmt_orderedby
    - lysp_stmt_when
    - ly_stmt2str
    - lysp_stmt_qnames
    - lysp_stmt_maxelements
    - lysp_stmt_text_field
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_minelements
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_type
    - lysp_stmt_restrs
    - lysp_stmt_ext
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_leaflist(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1329,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1329,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1331,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1331,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1333,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1333,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1333,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1338,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:1338,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1341,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1341,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1344,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1344,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1347,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1348,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1348,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1351,1
    - Dst: lysp_stmt_maxelements
      Src: /src/libyang/src/parser_stmt.c:1351,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1354,1
    - Dst: lysp_stmt_minelements
      Src: /src/libyang/src/parser_stmt.c:1354,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1357,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:1357,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1360,1
    - Dst: lysp_stmt_mandatory
      Src: /src/libyang/src/parser_stmt.c:1360,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1363,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1363,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1366,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1366,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1369,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1369,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1372,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1372,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 3
    argNames:
    - ctx
    - stmt
    - refines
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_refine**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1324
    functionDepth: 8
    functionLinenumber: 1324
    functionLinenumberEnd: 1378
    functionName: lysp_stmt_refine
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_qnames
    - lysp_stmt_maxelements
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_minelements
    - LY_CHECK_RET
    - lysp_stmt_mandatory
    - lydict_insert
    - lysp_stmt_config
    - lysp_stmt_restrs
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_refine(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_refine **refines)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1395,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1395,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1397,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1397,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1399,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1399,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1399,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1405,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1405,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1409,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1409,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1412,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1412,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1415,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1415,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1418,1
    - Dst: lysp_stmt_type
      Src: /src/libyang/src/parser_stmt.c:1418,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1421,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1421,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1424,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1424,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1427,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1427,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1434,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1440,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_stmt.c:1440,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - typedefs
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_tpdf**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1390
    functionDepth: 8
    functionLinenumber: 1390
    functionLinenumberEnd: 1444
    functionName: lysp_stmt_typedef
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_type
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - ly_set_add
    - LY_ARRAY_NEW_RET
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_typedef(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_tpdf **typedefs)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1461,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1461,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1466,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1466,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1466,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1474,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1474,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1477,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:1477,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1480,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:1480,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1483,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:1483,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1486,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:1486,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1489,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:1489,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1492,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:1492,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1495,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:1495,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1498,1
    - Dst: lysp_stmt_typedef
      Src: /src/libyang/src/parser_stmt.c:1498,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1501,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1501,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1502,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:1502,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1505,1
    - Dst: lysp_stmt_grouping
      Src: /src/libyang/src/parser_stmt.c:1505,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1508,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1508,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1511,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1511,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1511,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1517,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1517,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 56
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - inout_p
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node_action_inout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1456
    functionDepth: 9
    functionLinenumber: 1456
    functionLinenumberEnd: 1522
    functionName: lysp_stmt_inout
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_leaf
    - lysp_stmt_container
    - lysp_stmt_choice
    - lysp_stmt_any
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_uses
    - LY_CHECK_RET
    - lysp_stmt_grouping
    - LOGVAL_PARSER
    - lydict_insert
    - lysp_stmt_leaflist
    - ly_stmt2str
    - lysp_stmt_restrs
    - lysp_stmt_ext
    - lysp_stmt_typedef
    - lysp_stmt_list
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysp_stmt_inout(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent,\n        struct lysp_node_action_inout *inout_p)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1539,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1539,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1541,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1541,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1543,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1543,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1543,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1550,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1550,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1553,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1553,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1556,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1556,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1559,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1559,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1563,1
    - Dst: lysp_stmt_inout
      Src: /src/libyang/src/parser_stmt.c:1563,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1566,1
    - Dst: lysp_stmt_inout
      Src: /src/libyang/src/parser_stmt.c:1566,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1570,1
    - Dst: lysp_stmt_typedef
      Src: /src/libyang/src/parser_stmt.c:1570,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1573,1
    - Dst: lysp_stmt_grouping
      Src: /src/libyang/src/parser_stmt.c:1573,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1576,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1576,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1579,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1579,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1588,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1588,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1588,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1593,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1593,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1593,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - actions
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node_action**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1534
    functionDepth: 10
    functionLinenumber: 1534
    functionLinenumberEnd: 1597
    functionName: lysp_stmt_action
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - LY_CHECK_RET
    - lysp_stmt_grouping
    - lydict_insert
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - lysp_stmt_typedef
    - LY_LIST_NEW_RET
    - lysp_stmt_qnames
    - PARSER_CTX
    - lysp_stmt_inout
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_action(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node_action **actions)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1614,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1614,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1616,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1616,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1618,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1618,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1618,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1625,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1625,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1628,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1628,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1631,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1631,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1634,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1634,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1638,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1641,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:1641,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1644,1
    - Dst: lysp_stmt_case
      Src: /src/libyang/src/parser_stmt.c:1644,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1647,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:1647,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1650,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:1650,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1653,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:1653,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1656,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:1656,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1659,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:1659,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1663,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1664,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:1664,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1667,1
    - Dst: lysp_stmt_typedef
      Src: /src/libyang/src/parser_stmt.c:1667,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1670,1
    - Dst: lysp_stmt_grouping
      Src: /src/libyang/src/parser_stmt.c:1670,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1673,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1673,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1676,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1676,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 62
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - notifs
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node_notif**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1609
    functionDepth: 9
    functionLinenumber: 1609
    functionLinenumberEnd: 1682
    functionName: lysp_stmt_notif
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_RET
    - lydict_insert
    - LY_LIST_NEW_RET
    - lysp_stmt_list
    - lysp_stmt_leaf
    - lysp_stmt_case
    - ly_stmt2str
    - lysp_stmt_typedef
    - lysp_stmt_qnames
    - lysp_stmt_text_field
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_uses
    - lysp_stmt_grouping
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_restrs
    - lysp_stmt_leaflist
    - lysp_stmt_ext
    - lysp_stmt_any
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_notif(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node_notif **notifs)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1699,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1699,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1701,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1701,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1703,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1703,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1703,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1710,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1710,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1713,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1713,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1716,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1716,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1720,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1723,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:1723,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1726,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:1726,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1729,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:1729,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1732,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:1732,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1735,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:1735,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1738,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:1738,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1741,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:1741,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1745,1
    - Dst: lysp_stmt_typedef
      Src: /src/libyang/src/parser_stmt.c:1745,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1748,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1749,1
    - Dst: lysp_stmt_action
      Src: /src/libyang/src/parser_stmt.c:1749,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1752,1
    - Dst: lysp_stmt_grouping
      Src: /src/libyang/src/parser_stmt.c:1752,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1755,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1756,1
    - Dst: lysp_stmt_notif
      Src: /src/libyang/src/parser_stmt.c:1756,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1759,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1759,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1762,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1762,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 63
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - groupings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node_grp**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1694
    functionDepth: 11
    functionLinenumber: 1694
    functionLinenumberEnd: 1768
    functionName: lysp_stmt_grouping
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 4
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_RET
    - lydict_insert
    - LY_LIST_NEW_RET
    - lysp_stmt_notif
    - lysp_stmt_list
    - lysp_stmt_leaf
    - ly_stmt2str
    - lysp_stmt_typedef
    - lysp_stmt_text_field
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_uses
    - lysp_stmt_grouping
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_choice
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_action
    - lysp_stmt_ext
    - lysp_stmt_leaflist
    - lysp_stmt_any
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_grouping(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, struct lysp_node *parent, struct lysp_node_grp **groupings)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1785,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1785,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1787,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1787,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1789,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1789,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1789,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1796,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1796,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1799,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1799,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1802,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1802,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1805,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1805,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1808,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:1808,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1812,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1815,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:1815,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1818,1
    - Dst: lysp_stmt_case
      Src: /src/libyang/src/parser_stmt.c:1818,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1821,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:1821,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1824,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:1824,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1827,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:1827,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1830,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:1830,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1833,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:1833,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1836,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:1836,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1840,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1841,1
    - Dst: lysp_stmt_action
      Src: /src/libyang/src/parser_stmt.c:1841,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1844,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1845,1
    - Dst: lysp_stmt_notif
      Src: /src/libyang/src/parser_stmt.c:1845,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1848,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1848,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1851,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1851,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - augments
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node_augment**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1780
    functionDepth: 11
    functionLinenumber: 1780
    functionLinenumberEnd: 1857
    functionName: lysp_stmt_augment
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 0
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_RET
    - lydict_insert
    - LY_LIST_NEW_RET
    - lysp_stmt_list
    - lysp_stmt_notif
    - lysp_stmt_leaf
    - lysp_stmt_case
    - lysp_stmt_when
    - ly_stmt2str
    - lysp_stmt_qnames
    - lysp_stmt_text_field
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_uses
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_choice
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_action
    - lysp_stmt_ext
    - lysp_stmt_leaflist
    - lysp_stmt_any
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_augment(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node_augment **augments)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1874,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1874,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1877,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1877,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1879,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1879,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1879,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1887,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1887,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1890,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1890,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1893,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1893,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1896,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1896,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1899,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:1899,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1903,1
    - Dst: lysp_stmt_refine
      Src: /src/libyang/src/parser_stmt.c:1903,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1906,1
    - Dst: lysp_stmt_augment
      Src: /src/libyang/src/parser_stmt.c:1906,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1909,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1909,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1912,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1912,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1869
    functionDepth: 12
    functionLinenumber: 1869
    functionLinenumberEnd: 1918
    functionName: lysp_stmt_uses
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 4
    functionsReached:
    - lysp_stmt_text_field
    - lysp_stmt_validate_value
    - lysp_stmt_refine
    - lysp_stmt_status
    - LY_CHECK_RET
    - lysp_stmt_when
    - lydict_insert
    - lysp_stmt_augment
    - lysp_stmt_ext
    - LOGVAL_PARSER
    - ly_stmt2str
    - LY_LIST_NEW_RET
    - lysp_stmt_qnames
    - PARSER_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_uses(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1935,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:1935,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:1938,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1938,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1940,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:1940,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:1940,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1948,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1948,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1951,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:1951,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1954,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:1954,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1957,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:1957,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1960,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:1960,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:1964,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1967,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:1967,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1970,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:1970,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1973,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:1973,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1976,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:1976,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1979,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:1979,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1982,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:1982,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1985,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:1985,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:1988,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:1988,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:1991,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:1991,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 55
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1930
    functionDepth: 13
    functionLinenumber: 1930
    functionLinenumberEnd: 1996
    functionName: lysp_stmt_case
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 2
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_RET
    - lydict_insert
    - LY_LIST_NEW_RET
    - lysp_stmt_list
    - lysp_stmt_leaf
    - lysp_stmt_when
    - ly_stmt2str
    - lysp_stmt_qnames
    - lysp_stmt_text_field
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_uses
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_choice
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_ext
    - lysp_stmt_leaflist
    - lysp_stmt_any
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_case(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2013,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:2013,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:2016,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:2016,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2018,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:2018,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:2018,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2026,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:2026,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2029,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2029,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2032,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:2032,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2035,1
    - Dst: lysp_stmt_mandatory
      Src: /src/libyang/src/parser_stmt.c:2035,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2038,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2038,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2041,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:2041,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2044,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:2044,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2047,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2047,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2051,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2054,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:2054,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2057,1
    - Dst: lysp_stmt_case
      Src: /src/libyang/src/parser_stmt.c:2057,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2060,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2061,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:2061,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2064,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:2064,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2067,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:2067,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2070,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:2070,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2073,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:2073,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2076,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:2076,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:2079,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:2079,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2008
    functionDepth: 14
    functionLinenumber: 2008
    functionLinenumberEnd: 2084
    functionName: lysp_stmt_choice
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 5
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_config
    - LY_LIST_NEW_RET
    - lysp_stmt_list
    - lysp_stmt_leaf
    - lysp_stmt_case
    - lysp_stmt_mandatory
    - lysp_stmt_when
    - ly_stmt2str
    - lysp_stmt_qnames
    - lysp_stmt_text_field
    - PARSER_CHECK_STMTVER2_RET
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_choice
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_ext
    - lysp_stmt_leaflist
    - lysp_stmt_any
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_choice(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2101,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:2101,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:2104,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:2104,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2106,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:2106,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:2106,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2114,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:2114,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2117,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2117,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2120,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:2120,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2123,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2123,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2126,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:2126,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2129,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:2129,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2132,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2132,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2135,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2138,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:2138,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2141,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:2141,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2144,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:2144,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2147,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:2147,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2150,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:2150,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2153,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:2153,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2156,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:2156,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2160,1
    - Dst: lysp_stmt_typedef
      Src: /src/libyang/src/parser_stmt.c:2160,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2163,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:2163,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2166,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2167,1
    - Dst: lysp_stmt_action
      Src: /src/libyang/src/parser_stmt.c:2167,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2170,1
    - Dst: lysp_stmt_grouping
      Src: /src/libyang/src/parser_stmt.c:2170,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2173,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2174,1
    - Dst: lysp_stmt_notif
      Src: /src/libyang/src/parser_stmt.c:2174,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2177,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:2177,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:2180,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:2180,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 78
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2186
      start: 2096
    functionDepth: 15
    functionLinenumber: 2096
    functionLinenumberEnd: 2186
    functionName: lysp_stmt_container
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 7
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_config
    - LY_LIST_NEW_RET
    - lysp_stmt_list
    - lysp_stmt_notif
    - lysp_stmt_leaf
    - lysp_stmt_when
    - ly_stmt2str
    - lysp_stmt_typedef
    - lysp_stmt_qnames
    - lysp_stmt_text_field
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_uses
    - lysp_stmt_grouping
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_choice
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_action
    - lysp_stmt_restrs
    - lysp_stmt_leaflist
    - lysp_stmt_ext
    - lysp_stmt_any
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_container(struct lys_parser_ctx *ctx, const struct
      lysp_stmt *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2203,1
    - Dst: lysp_stmt_validate_value
      Src: /src/libyang/src/parser_stmt.c:2203,1
    - Dst: LY_LIST_NEW_RET
      Src: /src/libyang/src/parser_stmt.c:2206,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:2206,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2208,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_stmt.c:2208,1
    - Dst: PARSER_CTX
      Src: /src/libyang/src/parser_stmt.c:2208,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2216,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:2216,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2219,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2219,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2222,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:2222,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2225,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2225,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2228,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:2228,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2231,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:2231,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2234,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2234,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2237,1
    - Dst: lysp_stmt_maxelements
      Src: /src/libyang/src/parser_stmt.c:2237,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2240,1
    - Dst: lysp_stmt_minelements
      Src: /src/libyang/src/parser_stmt.c:2240,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2243,1
    - Dst: lysp_stmt_orderedby
      Src: /src/libyang/src/parser_stmt.c:2243,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2246,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:2246,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2250,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2253,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:2253,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2256,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:2256,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2259,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:2259,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2262,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:2262,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2265,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:2265,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2268,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:2268,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2271,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:2271,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2275,1
    - Dst: lysp_stmt_typedef
      Src: /src/libyang/src/parser_stmt.c:2275,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2278,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:2278,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2281,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2282,1
    - Dst: lysp_stmt_action
      Src: /src/libyang/src/parser_stmt.c:2282,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2285,1
    - Dst: lysp_stmt_grouping
      Src: /src/libyang/src/parser_stmt.c:2285,1
    - Dst: PARSER_CHECK_STMTVER2_RET
      Src: /src/libyang/src/parser_stmt.c:2288,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2289,1
    - Dst: lysp_stmt_notif
      Src: /src/libyang/src/parser_stmt.c:2289,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2292,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:2292,1
    - Dst: LOGVAL_PARSER
      Src: /src/libyang/src/parser_stmt.c:2295,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/parser_stmt.c:2295,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 90
    argCount: 4
    argNames:
    - ctx
    - stmt
    - parent
    - siblings
    argTypes:
    - struct lys_parser_ctx*
    - struct lysp_stmt*
    - struct lysp_node*
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2198
    functionDepth: 16
    functionLinenumber: 2198
    functionLinenumberEnd: 2301
    functionName: lysp_stmt_list
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 8
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_RET
    - lydict_insert
    - lysp_stmt_config
    - LY_LIST_NEW_RET
    - lysp_stmt_list
    - lysp_stmt_notif
    - lysp_stmt_leaf
    - lysp_stmt_orderedby
    - lysp_stmt_when
    - ly_stmt2str
    - lysp_stmt_typedef
    - lysp_stmt_qnames
    - lysp_stmt_maxelements
    - lysp_stmt_text_field
    - lysp_stmt_minelements
    - PARSER_CHECK_STMTVER2_RET
    - lysp_stmt_uses
    - lysp_stmt_grouping
    - LOGVAL_PARSER
    - PARSER_CTX
    - lysp_stmt_choice
    - lysp_stmt_validate_value
    - lysp_stmt_status
    - lysp_stmt_action
    - lysp_stmt_restrs
    - lysp_stmt_leaflist
    - lysp_stmt_ext
    - lysp_stmt_any
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_list(struct lys_parser_ctx *ctx, const struct lysp_stmt
      *stmt, struct lysp_node *parent, struct lysp_node **siblings)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_stmt.c:2313,1
    - Dst: lysp_stmt_action
      Src: /src/libyang/src/parser_stmt.c:2318,1
    - Dst: lysp_stmt_any
      Src: /src/libyang/src/parser_stmt.c:2322,1
    - Dst: lysp_stmt_augment
      Src: /src/libyang/src/parser_stmt.c:2325,1
    - Dst: lysp_stmt_text_fields
      Src: /src/libyang/src/parser_stmt.c:2328,1
    - Dst: lysp_stmt_type_enum
      Src: /src/libyang/src/parser_stmt.c:2332,1
    - Dst: lysp_stmt_case
      Src: /src/libyang/src/parser_stmt.c:2335,1
    - Dst: lysp_stmt_choice
      Src: /src/libyang/src/parser_stmt.c:2338,1
    - Dst: lysp_stmt_config
      Src: /src/libyang/src/parser_stmt.c:2341,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2353,1
    - Dst: lysp_stmt_container
      Src: /src/libyang/src/parser_stmt.c:2356,1
    - Dst: lysp_stmt_qnames
      Src: /src/libyang/src/parser_stmt.c:2361,1
    - Dst: lysp_stmt_ext
      Src: /src/libyang/src/parser_stmt.c:2364,1
    - Dst: lysp_stmt_type_fracdigits
      Src: /src/libyang/src/parser_stmt.c:2367,1
    - Dst: lysp_stmt_grouping
      Src: /src/libyang/src/parser_stmt.c:2370,1
    - Dst: calloc
      Src: /src/libyang/src/parser_stmt.c:2376,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:2377,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_stmt.c:2377,1
    - Dst: lysp_stmt_inout
      Src: /src/libyang/src/parser_stmt.c:2378,1
    - Dst: lysp_stmt_leaf
      Src: /src/libyang/src/parser_stmt.c:2382,1
    - Dst: lysp_stmt_leaflist
      Src: /src/libyang/src/parser_stmt.c:2385,1
    - Dst: lysp_stmt_restrs
      Src: /src/libyang/src/parser_stmt.c:2390,1
    - Dst: lysp_stmt_list
      Src: /src/libyang/src/parser_stmt.c:2393,1
    - Dst: lysp_stmt_mandatory
      Src: /src/libyang/src/parser_stmt.c:2396,1
    - Dst: lysp_stmt_maxelements
      Src: /src/libyang/src/parser_stmt.c:2400,1
    - Dst: lysp_stmt_minelements
      Src: /src/libyang/src/parser_stmt.c:2404,1
    - Dst: lysp_stmt_type_pattern_modifier
      Src: /src/libyang/src/parser_stmt.c:2407,1
    - Dst: lysp_stmt_notif
      Src: /src/libyang/src/parser_stmt.c:2410,1
    - Dst: lysp_stmt_orderedby
      Src: /src/libyang/src/parser_stmt.c:2413,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_stmt.c:2418,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2418,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/parser_stmt.c:2419,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_stmt.c:2421,1
    - Dst: lysp_stmt_type_pattern
      Src: /src/libyang/src/parser_stmt.c:2425,1
    - Dst: lysp_stmt_type_enum_value_pos
      Src: /src/libyang/src/parser_stmt.c:2430,1
    - Dst: lysp_stmt_text_field
      Src: /src/libyang/src/parser_stmt.c:2433,1
    - Dst: lysp_stmt_refine
      Src: /src/libyang/src/parser_stmt.c:2436,1
    - Dst: lysp_stmt_type_reqinstance
      Src: /src/libyang/src/parser_stmt.c:2440,1
    - Dst: lysp_stmt_status
      Src: /src/libyang/src/parser_stmt.c:2443,1
    - Dst: calloc
      Src: /src/libyang/src/parser_stmt.c:2448,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_stmt.c:2449,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_stmt.c:2449,1
    - Dst: lysp_stmt_type
      Src: /src/libyang/src/parser_stmt.c:2450,1
    - Dst: lysp_stmt_typedef
      Src: /src/libyang/src/parser_stmt.c:2454,1
    - Dst: lysp_stmt_uses
      Src: /src/libyang/src/parser_stmt.c:2457,1
    - Dst: lysp_stmt_when
      Src: /src/libyang/src/parser_stmt.c:2460,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_stmt.c:2463,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_stmt.c:2467,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 150
    argCount: 4
    argNames:
    - ctx
    - stmt
    - result
    - exts
    argTypes:
    - struct lysc_ctx*
    - struct lysp_stmt*
    - void**
    - struct lysp_ext_instance**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2469
      start: 2303
    functionDepth: 17
    functionLinenumber: 2303
    functionLinenumberEnd: 2469
    functionName: lysp_stmt_parse
    functionSourceFile: /src/libyang/src/parser_stmt.c
    functionUses: 1
    functionsReached:
    - lysp_stmt_container
    - LY_CHECK_ERR_RET
    - lysp_stmt_refine
    - LY_CHECK_RET
    - lysp_stmt_config
    - lysp_stmt_type_reqinstance
    - lysp_stmt_type_enum
    - lysp_stmt_list
    - lysp_stmt_notif
    - calloc
    - lysp_stmt_leaf
    - lysp_stmt_orderedby
    - lysp_stmt_text_fields
    - lysp_stmt_case
    - ly_path_parse
    - lydict_remove
    - lysp_stmt_augment
    - lysp_stmt_mandatory
    - lysp_stmt_when
    - lysp_stmt_typedef
    - lysp_stmt_qnames
    - lysp_stmt_type_pattern_modifier
    - lysp_stmt_maxelements
    - LOG_LOCBACK
    - lysp_stmt_type_enum_value_pos
    - lysp_stmt_text_field
    - lysp_stmt_type_fracdigits
    - lysp_stmt_minelements
    - lysp_stmt_uses
    - lysp_stmt_grouping
    - LOGMEM
    - lysp_stmt_choice
    - lysp_stmt_status
    - LOGINT
    - lysp_stmt_type
    - lysp_stmt_action
    - lysp_stmt_ext
    - lysp_stmt_leaflist
    - LOG_LOCSET
    - lysp_stmt_restrs
    - lysp_stmt_type_pattern
    - lysp_stmt_any
    - lysp_stmt_inout
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_stmt_parse(struct lysc_ctx *ctx, const struct lysp_stmt
      *stmt, void **result, struct lysp_ext_instance **exts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - CUR_NODE
    - ','
    - CODE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: LOGVAL_P
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGVAL_P(CTX, CUR_NODE, CODE, ...)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:59,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:61,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/path.c:65,1
    - Dst: ly_set_new
      Src: /src/libyang/src/path.c:66,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:67,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:71,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/path.c:71,1
    - Dst: strnstr
      Src: /src/libyang/src/path.c:74,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:76,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:80,1
    - Dst: strncmp
      Src: /src/libyang/src/path.c:95,1
    - Dst: isalpha
      Src: /src/libyang/src/path.c:95,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:96,1
    - Dst: ly_set_add
      Src: /src/libyang/src/path.c:102,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:103,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:109,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:109,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:112,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:112,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:115,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:115,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:118,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:120,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:124,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:124,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:127,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:127,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:130,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:130,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:132,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:136,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:136,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/path.c:138,1
    - Dst: assert
      Src: /src/libyang/src/path.c:139,1
    - Dst: ly_set_new
      Src: /src/libyang/src/path.c:140,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:141,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:145,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/path.c:145,1
    - Dst: strnstr
      Src: /src/libyang/src/path.c:147,1
    - Dst: strncmp
      Src: /src/libyang/src/path.c:159,1
    - Dst: isalpha
      Src: /src/libyang/src/path.c:159,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:160,1
    - Dst: ly_set_add
      Src: /src/libyang/src/path.c:166,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:167,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:173,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:173,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:176,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/path.c:176,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/path.c:177,1
    - Dst: strncmp
      Src: /src/libyang/src/path.c:178,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/path.c:178,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:179,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:186,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:186,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:189,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:189,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:192,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:192,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:195,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:195,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:198,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:198,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:199,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:202,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:202,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:205,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:207,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:207,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:211,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:211,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:214,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:217,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/path.c:217,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:223,1
    - Dst: ly_set_free
      Src: /src/libyang/src/path.c:224,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:228,1
    - Dst: ly_set_free
      Src: /src/libyang/src/path.c:229,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 110
    argCount: 6
    argNames:
    - ctx
    - cur_node
    - exp
    - tok_idx
    - prefix
    - pred
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - struct lyxp_expr*
    - uint16_t*
    - uint8_t
    - uint8_t
    assertStmts:
    - condition: (prefix == LY_PATH_PREFIX_OPTIONAL)
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 231
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 231
    functionName: ly_path_check_predicate
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - lyxp_print_token
    - ly_set_new
    - ly_set_free
    - lyxp_next_token
    - LOGVAL
    - lyxp_check_token
    - strnstr
    - LOG_LOCSET
    - strncmp
    - LY_CHECK_GOTO
    - ly_set_add
    - ly_strlen_const
    - isalpha
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_check_predicate(const struct ly_ctx *ctx, const struct
      lysc_node *cur_node, const struct lyxp_expr *exp,\n        uint16_t *tok_idx,
      uint8_t prefix, uint8_t pred)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/path.c:242,1
    - Dst: assert
      Src: /src/libyang/src/path.c:243,1
    - Dst: assert
      Src: /src/libyang/src/path.c:244,1
    - Dst: assert
      Src: /src/libyang/src/path.c:246,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:248,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:251,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/path.c:251,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:256,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/path.c:260,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:260,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/path.c:264,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:264,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:267,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/path.c:272,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:272,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/path.c:277,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/path.c:277,1
    - Dst: strnstr
      Src: /src/libyang/src/path.c:283,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:284,1
    - Dst: strnstr
      Src: /src/libyang/src/path.c:291,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:292,1
    - Dst: strnstr
      Src: /src/libyang/src/path.c:301,1
    - Dst: strncmp
      Src: /src/libyang/src/path.c:303,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:304,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:318,1
    - Dst: ly_path_check_predicate
      Src: /src/libyang/src/path.c:318,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:321,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:325,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:332,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/path.c:336,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:337,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 71
    argCount: 9
    argNames:
    - ctx
    - ctx_node
    - str_path
    - path_len
    - begin
    - lref
    - prefix
    - pred
    - expr
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - size_t
    - uint8_t
    - uint8_t
    - uint8_t
    - uint8_t
    - struct lyxp_expr**
    assertStmts:
    - condition: ((pred == LY_PATH_PRED_KEYS) || (pred == LY_PATH_PRED_SIMPLE) ||
        (pred == LY_PATH_PRED_LEAFREF))
      pos:
        line_end: 245
        line_start: 245
        source_file: /src/libyang/src/path.c
    - condition: "((prefix == LY_PATH_PREFIX_OPTIONAL) || (prefix == LY_PATH_PREFIX_MANDATORY)
        ||\n            (prefix == LY_PATH_PREFIX_STRICT_INHERIT))"
      pos:
        line_end: 244
        line_start: 243
        source_file: /src/libyang/src/path.c
    - condition: ((lref == LY_PATH_LREF_TRUE) || (lref == LY_PATH_LREF_FALSE))
      pos:
        line_end: 242
        line_start: 242
        source_file: /src/libyang/src/path.c
    - condition: ((begin == LY_PATH_BEGIN_ABSOLUTE) || (begin == LY_PATH_BEGIN_EITHER))
      pos:
        line_end: 241
        line_start: 241
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 339
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 339
    functionName: ly_path_parse
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 9
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyxp_expr_free
    - LOG_LOCBACK
    - lyxp_next_token
    - LOGVAL
    - lyxp_check_token
    - strnstr
    - LOG_LOCSET
    - strncmp
    - LY_CHECK_GOTO
    - ly_path_check_predicate
    - lyxp_expr_parse
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_parse(const struct ly_ctx *ctx, const struct lysc_node
      *ctx_node, const char *str_path, size_t path_len,\n        uint8_t begin, uint8_t
      lref, uint8_t prefix, uint8_t pred, struct lyxp_expr **expr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/path.c:349,1
    - Dst: assert
      Src: /src/libyang/src/path.c:350,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:352,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:355,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/path.c:355,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:358,1
    - Dst: ly_path_check_predicate
      Src: /src/libyang/src/path.c:358,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:362,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:370,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/path.c:374,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:375,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 7
    argNames:
    - ctx
    - cur_node
    - str_path
    - path_len
    - prefix
    - pred
    - expr
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - size_t
    - uint8_t
    - uint8_t
    - struct lyxp_expr**
    assertStmts:
    - condition: ((prefix == LY_PATH_PREFIX_OPTIONAL) || (prefix == LY_PATH_PREFIX_MANDATORY))
      pos:
        line_end: 348
        line_start: 348
        source_file: /src/libyang/src/path.c
    - condition: ((pred == LY_PATH_PRED_KEYS) || (pred == LY_PATH_PRED_SIMPLE) ||
        (pred == LY_PATH_PRED_LEAFREF))
      pos:
        line_end: 349
        line_start: 349
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 377
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 377
    functionName: ly_path_parse_predicate
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 1
    functionsReached:
    - lyxp_expr_free
    - LOG_LOCBACK
    - LOGVAL
    - ly_path_check_predicate
    - LOG_LOCSET
    - LY_CHECK_GOTO
    - lyxp_expr_parse
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_parse_predicate(const struct ly_ctx *ctx, const struct
      lysc_node *cur_node, const char *str_path,\n        size_t path_len, uint8_t
      prefix, uint8_t pred, struct lyxp_expr **expr)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/path.c:406,1
    - Dst: strnstr
      Src: /src/libyang/src/path.c:409,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:418,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/path.c:420,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:422,1
    - Dst: ly_format2str
      Src: /src/libyang/src/path.c:423,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:428,1
    - Dst: assert
      Src: /src/libyang/src/path.c:433,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:434,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/path.c:434,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:440,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/path.c:446,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/path.c:453,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/path.c:462,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:478,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 64
    argCount: 13
    argNames:
    - ctx
    - cur_node
    - cur_mod
    - prev_ctx_node
    - expr
    - tok_idx
    - lref
    - format
    - prefix_data
    - unres
    - mod
    - name
    - name_len
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - struct lys_module*
    - struct lysc_node*
    - struct lyxp_expr*
    - uint16_t
    - uint8_t
    - LY_VALUE_FORMAT
    - void*
    - struct lys_glob_unres*
    - struct lys_module**
    - char**
    - size_t*
    assertStmts:
    - condition: (expr->tokens[tok_idx] == LYXP_TOKEN_NAMETEST)
      pos:
        line_end: 405
        line_start: 405
        source_file: /src/libyang/src/path.c
    - condition: (unres)
      pos:
        line_end: 432
        line_start: 432
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 480
      start: 396
    functionDepth: 7
    functionLinenumber: 396
    functionLinenumberEnd: 480
    functionName: ly_path_compile_prefix
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - ly_format2str
    - LOG_LOCBACK
    - LOGINT_RET
    - LOGVAL
    - strnstr
    - LOG_LOCSET
    - LY_CHECK_GOTO
    - lys_set_implemented_r
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_compile_prefix(const struct ly_ctx *ctx, const struct
      lysc_node *cur_node, const struct lys_module *cur_mod,\n        const struct
      lysc_node *prev_ctx_node, const struct lyxp_expr *expr, uint16_t tok_idx, uint8_t
      lref,\n        LY_VALUE_FORMAT format, void *prefix_data, struct lys_glob_unres
      *unres, const struct lys_module **mod,\n        const char **name, size_t *name_len)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/path.c:494,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:496,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:500,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:507,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:508,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:512,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:513,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/path.c:520,1
    - Dst: ly_path_compile_prefix
      Src: /src/libyang/src/path.c:520,1
    - Dst: lys_find_child
      Src: /src/libyang/src/path.c:522,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:524,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:528,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:528,1
    - Dst: assert
      Src: /src/libyang/src/path.c:539,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/path.c:540,1
    - Dst: assert
      Src: /src/libyang/src/path.c:544,1
    - Dst: assert
      Src: /src/libyang/src/path.c:548,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:549,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/path.c:550,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:553,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/path.c:554,1
    - Dst: assert
      Src: /src/libyang/src/path.c:561,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:565,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/path.c:569,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/path.c:572,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:574,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:575,1
    - Dst: ly_path_predicates_free
      Src: /src/libyang/src/path.c:576,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:584,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:585,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/path.c:593,1
    - Dst: assert
      Src: /src/libyang/src/path.c:596,1
    - Dst: assert
      Src: /src/libyang/src/path.c:599,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:601,1
    - Dst: lyd_value_store
      Src: /src/libyang/src/path.c:602,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:605,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/path.c:606,1
    - Dst: assert
      Src: /src/libyang/src/path.c:613,1
    - Dst: assert
      Src: /src/libyang/src/path.c:616,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:619,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:620,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:624,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:625,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/path.c:631,1
    - Dst: strtoull
      Src: /src/libyang/src/path.c:634,1
    - Dst: assert
      Src: /src/libyang/src/path.c:638,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:643,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 114
    argCount: 10
    argNames:
    - ctx
    - cur_node
    - cur_mod
    - ctx_node
    - expr
    - tok_idx
    - format
    - prefix_data
    - predicates
    - pred_type
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - struct lys_module*
    - struct lysc_node*
    - struct lyxp_expr*
    - uint16_t*
    - LY_VALUE_FORMAT
    - void*
    - struct ly_path_predicate**
    - enum ly_path_pred_type*
    assertStmts:
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_OPER_EQUAL)
      pos:
        line_end: 543
        line_start: 543
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_BRACK2)
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_NUMBER)
      pos:
        line_end: 615
        line_start: 615
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_LITERAL)
      pos:
        line_end: 598
        line_start: 598
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_BRACK2)
      pos:
        line_end: 637
        line_start: 637
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_OPER_EQUAL)
      pos:
        line_end: 595
        line_start: 595
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_BRACK2)
      pos:
        line_end: 560
        line_start: 560
        source_file: /src/libyang/src/path.c
    - condition: (ctx && ctx_node)
      pos:
        line_end: 493
        line_start: 493
        source_file: /src/libyang/src/path.c
    - condition: (*pred_type == LY_PATH_PREDTYPE_LIST)
      pos:
        line_end: 538
        line_start: 538
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_LITERAL)
      pos:
        line_end: 547
        line_start: 547
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 645
      start: 482
    functionDepth: 8
    functionLinenumber: 482
    functionLinenumberEnd: 645
    functionName: ly_path_compile_predicate
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 1
    functionsReached:
    - ly_path_compile_prefix
    - LY_CHECK_ERR_GOTO
    - LOG_LOCBACK
    - ly_path_predicates_free
    - lys_nodetype2str
    - LY_ARRAY_COUNT
    - lys_find_child
    - lyd_value_store
    - strtoull
    - LY_ARRAY_NEW_GOTO
    - lyxp_next_token
    - LY_CHECK_RET
    - LOGVAL
    - LOG_LOCSET
    - lysc_node_child
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_compile_predicate(const struct ly_ctx *ctx, const struct
      lysc_node *cur_node, const struct lys_module *cur_mod,\n        const struct
      lysc_node *ctx_node, const struct lyxp_expr *expr, uint16_t *tok_idx, LY_VALUE_FORMAT
      format,\n        void *prefix_data, struct ly_path_predicate **predicates, enum
      ly_path_pred_type *pred_type)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/path.c:671,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:673,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:679,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:680,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:684,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:685,1
    - Dst: ly_path_compile_prefix
      Src: /src/libyang/src/path.c:692,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:694,1
    - Dst: lys_find_child
      Src: /src/libyang/src/path.c:695,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:697,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:701,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:702,1
    - Dst: assert
      Src: /src/libyang/src/path.c:712,1
    - Dst: assert
      Src: /src/libyang/src/path.c:716,1
    - Dst: assert
      Src: /src/libyang/src/path.c:723,1
    - Dst: assert
      Src: /src/libyang/src/path.c:727,1
    - Dst: assert
      Src: /src/libyang/src/path.c:732,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:737,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/path.c:741,1
    - Dst: assert
      Src: /src/libyang/src/path.c:744,1
    - Dst: assert
      Src: /src/libyang/src/path.c:750,1
    - Dst: assert
      Src: /src/libyang/src/path.c:754,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/path.c:755,1
    - Dst: ly_path_compile_prefix
      Src: /src/libyang/src/path.c:755,1
    - Dst: lys_find_child
      Src: /src/libyang/src/path.c:757,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:759,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:769,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:770,1
    - Dst: assert
      Src: /src/libyang/src/path.c:779,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:783,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:786,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 87
    argCount: 7
    argNames:
    - ctx_node
    - cur_node
    - expr
    - tok_idx
    - format
    - prefix_data
    - unres
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    - struct lyxp_expr*
    - uint16_t*
    - LY_VALUE_FORMAT
    - void*
    - struct lys_glob_unres*
    assertStmts:
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_PAR1)
      pos:
        line_end: 722
        line_start: 722
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_OPER_PATH)
      pos:
        line_end: 749
        line_start: 749
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_FUNCNAME)
      pos:
        line_end: 715
        line_start: 715
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_OPER_EQUAL)
      pos:
        line_end: 711
        line_start: 711
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_OPER_PATH)
      pos:
        line_end: 731
        line_start: 731
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_BRACK2)
      pos:
        line_end: 778
        line_start: 778
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_PAR2)
      pos:
        line_end: 726
        line_start: 726
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_DDOT)
      pos:
        line_end: 743
        line_start: 743
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[*tok_idx] == LYXP_TOKEN_NAMETEST)
      pos:
        line_end: 753
        line_start: 753
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 788
      start: 659
    functionDepth: 8
    functionLinenumber: 659
    functionLinenumberEnd: 788
    functionName: ly_path_compile_predicate_leafref
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 0
    functionsReached:
    - ly_path_compile_prefix
    - LOG_LOCBACK
    - lys_nodetype2str
    - lys_find_child
    - lyxp_next_token
    - LY_CHECK_RET
    - LOGVAL
    - LOG_LOCSET
    - LY_CHECK_GOTO
    - lysc_data_parent
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_compile_predicate_leafref(const struct lysc_node *ctx_node,
      const struct lysc_node *cur_node,\n        const struct lyxp_expr *expr, uint16_t
      *tok_idx, LY_VALUE_FORMAT format, void *prefix_data,\n        struct lys_glob_unres
      *unres)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/path.c:804,1
    - Dst: assert
      Src: /src/libyang/src/path.c:805,1
    - Dst: assert
      Src: /src/libyang/src/path.c:806,1
    - Dst: assert
      Src: /src/libyang/src/path.c:807,1
    - Dst: assert
      Src: /src/libyang/src/path.c:808,1
    - Dst: LOG_LOCINIT
      Src: /src/libyang/src/path.c:817,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:834,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/path.c:840,1
    - Dst: assert
      Src: /src/libyang/src/path.c:844,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:856,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:857,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/path.c:863,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/path.c:863,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:866,1
    - Dst: ly_path_compile_prefix
      Src: /src/libyang/src/path.c:866,1
    - Dst: lysc_ext_find_node
      Src: /src/libyang/src/path.c:872,1
    - Dst: lys_find_child
      Src: /src/libyang/src/path.c:874,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:877,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/path.c:884,1
    - Dst: ly_path_compile_predicate_leafref
      Src: /src/libyang/src/path.c:889,1
    - Dst: ly_path_compile_predicate
      Src: /src/libyang/src/path.c:891,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/path.c:894,1
    - Dst: lyxp_next_token
      Src: /src/libyang/src/path.c:895,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:899,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/path.c:899,1
    - Dst: LOGVAL
      Src: /src/libyang/src/path.c:907,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/path.c:908,1
    - Dst: ly_path_free
      Src: /src/libyang/src/path.c:915,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/path.c:918,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 85
    argCount: 12
    argNames:
    - ctx
    - cur_mod
    - ctx_node
    - ext
    - expr
    - lref
    - oper
    - target
    - format
    - prefix_data
    - unres
    - path
    argTypes:
    - struct ly_ctx*
    - struct lys_module*
    - struct lysc_node*
    - struct lysc_ext_instance*
    - struct lyxp_expr*
    - uint8_t
    - uint8_t
    - uint8_t
    - LY_VALUE_FORMAT
    - void*
    - struct lys_glob_unres*
    - struct ly_path**
    assertStmts:
    - condition: ((lref == LY_PATH_LREF_FALSE) || ctx_node)
      pos:
        line_end: 804
        line_start: 804
        source_file: /src/libyang/src/path.c
    - condition: ((target == LY_PATH_TARGET_SINGLE) || (target == LY_PATH_TARGET_MANY))
      pos:
        line_end: 807
        line_start: 807
        source_file: /src/libyang/src/path.c
    - condition: (expr->tokens[tok_idx] == LYXP_TOKEN_OPER_PATH)
      pos:
        line_end: 843
        line_start: 843
        source_file: /src/libyang/src/path.c
    - condition: ((oper == LY_PATH_OPER_INPUT) || (oper == LY_PATH_OPER_OUTPUT))
      pos:
        line_end: 806
        line_start: 806
        source_file: /src/libyang/src/path.c
    - condition: (ctx)
      pos:
        line_end: 803
        line_start: 803
        source_file: /src/libyang/src/path.c
    - condition: ((lref == LY_PATH_LREF_TRUE) || (lref == LY_PATH_LREF_FALSE))
      pos:
        line_end: 805
        line_start: 805
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 920
      start: 790
    functionDepth: 9
    functionLinenumber: 790
    functionLinenumberEnd: 920
    functionName: ly_path_compile
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 6
    functionsReached:
    - assert
    - LY_CHECK_ERR_GOTO
    - ly_path_compile_prefix
    - ly_path_compile_predicate
    - LOG_LOCBACK
    - lys_nodetype2str
    - lysc_ext_find_node
    - ly_path_free
    - lyxp_print_token
    - lys_find_child
    - LY_ARRAY_NEW_GOTO
    - lyxp_next_token
    - LOGVAL
    - lyxp_check_token
    - LY_CHECK_GOTO
    - lysc_data_parent
    - ly_path_compile_predicate_leafref
    - LOG_LOCINIT
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_compile(const struct ly_ctx *ctx, const struct lys_module
      *cur_mod, const struct lysc_node *ctx_node,\n        const struct lysc_ext_instance
      *ext, const struct lyxp_expr *expr, uint8_t lref, uint8_t oper, uint8_t target,\n
      \       LY_VALUE_FORMAT format, void *prefix_data, struct lys_glob_unres *unres,
      struct ly_path **path)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/path.c:930,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/path.c:932,1
    - Dst: lyd_child
      Src: /src/libyang/src/path.c:934,1
    - Dst: lyd_parent
      Src: /src/libyang/src/path.c:938,1
    - Dst: LYD_LIST_FOR_INST
      Src: /src/libyang/src/path.c:950,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/path.c:959,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/path.c:959,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/path.c:960,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/path.c:961,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/path.c:965,1
    - Dst: lyd_create_list
      Src: /src/libyang/src/path.c:965,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/path.c:966,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/path.c:967,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/path.c:971,1
    - Dst: lyd_child
      Src: /src/libyang/src/path.c:984,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 67
    argCount: 4
    argNames:
    - path
    - start
    - path_idx
    - match
    argTypes:
    - struct ly_path*
    - struct lyd_node*
    - LY_ARRAY_COUNT_TYPE*
    - struct lyd_node**
    assertStmts:
    - condition: (path && start)
      pos:
        line_end: 929
        line_start: 929
        source_file: /src/libyang/src/path.c
    constantsTouched: []
    func_position:
      end: 1016
      start: 922
    functionDepth: 7
    functionLinenumber: 922
    functionLinenumberEnd: 1016
    functionName: ly_path_eval_partial
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 2
    functionsReached:
    - lyd_parent
    - lyd_free_tree
    - LYD_LIST_FOR_INST
    - lyd_create_term2
    - LY_CHECK_RET
    - lyd_create_list
    - lyd_find_sibling_val
    - lyd_child
    - lysc_data_parent
    - lyd_find_sibling_first
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_path_eval_partial(const struct ly_path *path, const struct
      lyd_node *start, LY_ARRAY_COUNT_TYPE *path_idx,\n        struct lyd_node **match)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LYD_LIST_FOR_INST
      Src: /src/libyang/src/path.c:950,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/path.c:959,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/path.c:959,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/path.c:960,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/path.c:961,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/path.c:965,1
    - Dst: lyd_create_list
      Src: /src/libyang/src/path.c:965,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/path.c:966,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/path.c:967,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/path.c:971,1
    - Dst: lyd_child
      Src: /src/libyang/src/path.c:984,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 945
    functionDepth: 7
    functionLinenumber: 945
    functionLinenumberEnd: 985
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 40
    functionsReached:
    - lyd_free_tree
    - LYD_LIST_FOR_INST
    - lyd_create_term2
    - LY_CHECK_RET
    - lyd_create_list
    - lyd_find_sibling_val
    - lyd_child
    - lyd_find_sibling_first
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(path, u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_path_eval_partial
      Src: /src/libyang/src/path.c:1024,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - path
    - start
    - match
    argTypes:
    - struct ly_path*
    - struct lyd_node*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1018
    functionDepth: 8
    functionLinenumber: 1018
    functionLinenumberEnd: 1039
    functionName: ly_path_eval
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 1
    functionsReached:
    - ly_path_eval_partial
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_path_eval(const struct ly_path *path, const struct lyd_node
      *start, struct lyd_node **match)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/path.c:1050,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/path.c:1050,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/path.c:1052,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/path.c:1055,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/path.c:1055,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/path.c:1057,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/path.c:1060,1
    - Dst: struct ly_path_predicate*::value::realtype::plugin::duplicate
      Src: /src/libyang/src/path.c:1070,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - path
    - dup
    argTypes:
    - struct ly_ctx*
    - struct ly_path*
    - struct ly_path**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1041
    functionDepth: 1
    functionLinenumber: 1041
    functionLinenumberEnd: 1081
    functionName: ly_path_dup
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - struct ly_path_predicate*::value::realtype::plugin::duplicate
    - LY_ARRAY_FOR
    - LY_ARRAY_CREATE_RET
    - LY_ARRAY_INCREMENT
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_path_dup(const struct ly_ctx *ctx, const struct ly_path *path,
      struct ly_path **dup)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/path.c:1052,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/path.c:1055,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/path.c:1055,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/path.c:1057,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/path.c:1060,1
    - Dst: struct ly_path_predicate*::value::realtype::plugin::duplicate
      Src: /src/libyang/src/path.c:1070,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1078
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 42
    functionsReached:
    - LY_ARRAY_COUNT
    - struct ly_path_predicate*::value::realtype::plugin::duplicate
    - LY_ARRAY_FOR
    - LY_ARRAY_CREATE_RET
    - LY_ARRAY_INCREMENT
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(path, u)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: value::realtype::plugin::free
      Src: /src/libyang/src/path.c:1101,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/path.c:1102,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/path.c:1107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - pred_type
    - predicates
    argTypes:
    - struct ly_ctx*
    - enum ly_path_pred_type
    - struct ly_path_predicate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1083
    functionDepth: 2
    functionLinenumber: 1083
    functionLinenumberEnd: 1108
    functionName: ly_path_predicates_free
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 2
    functionsReached:
    - value::realtype::plugin::free
    - LY_ARRAY_FREE
    - lysc_type_free
    linkageType: ''
    returnType: void
    signature: void ly_path_predicates_free(const struct ly_ctx *ctx, enum ly_path_pred_type
      pred_type, struct ly_path_predicate *predicates)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: value::realtype::plugin::free
      Src: /src/libyang/src/path.c:1101,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/path.c:1102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1092
    functionDepth: 2
    functionLinenumber: 1092
    functionLinenumberEnd: 1106
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 42
    functionsReached:
    - value::realtype::plugin::free
    - lysc_type_free
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(predicates, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_path_predicates_free
      Src: /src/libyang/src/path.c:1120,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/path.c:1122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - struct ly_ctx*
    - struct ly_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1110
    functionDepth: 3
    functionLinenumber: 1110
    functionLinenumberEnd: 1123
    functionName: ly_path_free
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 7
    functionsReached:
    - LY_ARRAY_FREE
    - ly_path_predicates_free
    linkageType: ''
    returnType: void
    signature: void ly_path_free(const struct ly_ctx *ctx, struct ly_path *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_path_predicates_free
      Src: /src/libyang/src/path.c:1120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1119
    functionDepth: 3
    functionLinenumber: 1119
    functionLinenumberEnd: 1121
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/path.c
    functionUses: 42
    functionsReached:
    - ly_path_predicates_free
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(path, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _1
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: GETMACRO1
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETMACRO1(_1, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: GETMACRO2
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETMACRO2(_1, _2, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: GETMACRO3
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETMACRO3(_1, _2, _3, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: GETMACRO4
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETMACRO4(_1, _2, _3, _4, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: GETMACRO5
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETMACRO5(_1, _2, _3, _4, _5, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - _3
    - ','
    - _4
    - ','
    - _5
    - ','
    - _6
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: GETMACRO6
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETMACRO6(_1, _2, _3, _4, _5, _6, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SCNODE
    - ','
    - DNODE
    - ','
    - PATH
    - ','
    - IN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: LOG_LOCINIT
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG_LOCINIT(SCNODE, DNODE, PATH, IN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SCNODE
    - ','
    - DNODE
    - ','
    - PATH
    - ','
    - IN
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: LOG_LOCSET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG_LOCSET(SCNODE, DNODE, PATH, IN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SCNODE_STEPS
    - ','
    - DNODE_STEPS
    - ','
    - PATH_STEPS
    - ','
    - IN_STEPS
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: LOG_LOCBACK
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG_LOCBACK(SCNODE_STEPS, DNODE_STEPS, PATH_STEPS, IN_STEPS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ctx
    - ','
    - errno
    - ','
    - str
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    functionName: LOGERR
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 57
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGERR(ctx, errno, str, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ctx
    - ','
    - str
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 150
    functionName: LOGWRN
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGWRN(ctx, str, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: LOGVRB
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGVRB(str, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - dbg_group
    - ','
    - str
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: LOGDBG
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGDBG(dbg_group, str, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CTX
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: LOGMEM
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 77
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGMEM(CTX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CTX
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: LOGINT
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGINT(CTX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - ARG
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: LOGARG
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGARG(CTX, ARG)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - CODE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 173
    functionName: LOGVAL
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 77
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGVAL(CTX, CODE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - LINE
    - ','
    - CODE
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: LOGVAL_LINE
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGVAL_LINE(CTX, LINE, CODE, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - ERRITEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 187
    functionName: LOGVAL_ERRITEM
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGVAL_ERRITEM(CTX, ERRITEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CTX
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: LOGMEM_RET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGMEM_RET(CTX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CTX
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 190
    functionName: LOGINT_RET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGINT_RET(CTX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CTX
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: LOGARG_RET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGARG_RET(CTX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - COND
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 196
    functionName: LY_CHECK_GOTO
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 104
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_GOTO(COND, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - COND
    - ','
    - ERR
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: LY_CHECK_ERR_GOTO
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 37
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ERR_GOTO(COND, ERR, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: LY_CHECK_RET1
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_RET1(RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - COND
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 199
    functionName: LY_CHECK_RET2
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_RET2(COND, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 200
    functionName: LY_CHECK_RET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 371
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_RET(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - COND
    - ','
    - ERR
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 201
    functionName: LY_CHECK_ERR_RET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 103
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ERR_RET(COND, ERR, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - ARG
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: LY_CHECK_ARG_GOTO1
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_GOTO1(CTX, ARG, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - ARG1
    - ','
    - ARG2
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: LY_CHECK_ARG_GOTO2
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_GOTO2(CTX, ARG1, ARG2, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - ARG1
    - ','
    - ARG2
    - ','
    - ARG3
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 205
    functionName: LY_CHECK_ARG_GOTO3
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_GOTO3(CTX, ARG1, ARG2, ARG3, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - CTX
    - ','
    - ARG1
    - ','
    - ARG2
    - ','
    - ARG3
    - ','
    - ARG4
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: LY_CHECK_ARG_GOTO4
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_GOTO4(CTX, ARG1, ARG2, ARG3, ARG4, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 209
    functionName: LY_CHECK_ARG_GOTO
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_GOTO(CTX, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - ARG
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    functionName: LY_CHECK_ARG_RET1
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_RET1(CTX, ARG, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - ARG1
    - ','
    - ARG2
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 212
    functionName: LY_CHECK_ARG_RET2
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_RET2(CTX, ARG1, ARG2, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - ARG1
    - ','
    - ARG2
    - ','
    - ARG3
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 213
    functionName: LY_CHECK_ARG_RET3
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_RET3(CTX, ARG1, ARG2, ARG3, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - CTX
    - ','
    - ARG1
    - ','
    - ARG2
    - ','
    - ARG3
    - ','
    - ARG4
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: LY_CHECK_ARG_RET4
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_RET4(CTX, ARG1, ARG2, ARG3, ARG4, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - CTX
    - ','
    - ARG1
    - ','
    - ARG2
    - ','
    - ARG3
    - ','
    - ARG4
    - ','
    - ARG5
    - ','
    - RETVAL
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 217
    functionName: LY_CHECK_ARG_RET5
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_RET5(CTX, ARG1, ARG2, ARG3, ARG4, ARG5, RETVAL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 219
    functionName: LY_CHECK_ARG_RET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 131
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_CHECK_ARG_RET(CTX, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - STRING
    - ','
    - LEN
    - ','
    - DYNAMIC
    - ','
    - TARGET
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 354
    functionName: INSERT_STRING_RET
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INSERT_STRING_RET(CTX, STRING, LEN, DYNAMIC, TARGET)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/common.h:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 410
    functionName: ly_strlen
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 3
    functionsReached:
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t ly_strlen(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 448
    functionName: ly_strlen
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ly_strlen(STR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STR
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 455
    functionName: ly_strlen_const
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ly_strlen_const(STR)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ARRAY
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 457
    functionName: ly_sizeofarray
    functionSourceFile: /src/libyang/src/common.h
    functionUses: 39
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ly_sizeofarray(ARRAY)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_ctx_free
      Src: /src/libyang/src/parser_json.c:73,1
    - Dst: lyjson_ctx_free
      Src: /src/libyang/src/parser_json.c:74,1
    - Dst: free
      Src: /src/libyang/src/parser_json.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lydctx
    argTypes:
    - struct lyd_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 67
    functionDepth: 2
    functionLinenumber: 67
    functionLinenumberEnd: 77
    functionName: lyd_json_ctx_free
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - lyd_ctx_free
    - free
    - lyjson_ctx_free
    linkageType: ''
    returnType: void
    signature: void lyd_json_ctx_free(struct lyd_ctx *lydctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/libyang/src/parser_json.c:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 7
    argNames:
    - value
    - value_len
    - name_p
    - name_len_p
    - prefix_p
    - prefix_len_p
    - is_meta_p
    argTypes:
    - char*
    - size_t
    - char**
    - size_t*
    - char**
    - size_t*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 128
    functionName: lydjson_parse_name
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: void
    signature: "void lydjson_parse_name(const char *value, size_t value_len, const
      char **name_p, size_t *name_len_p, const char **prefix_p,\n        size_t *prefix_len_p,
      ly_bool *is_meta_p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:149,1
    - Dst: lyd_parent
      Src: /src/libyang/src/parser_json.c:171,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:173,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 5
    argNames:
    - node
    - local_prefix
    - local_prefix_len
    - prefix_p
    - prefix_len_p
    argTypes:
    - struct lyd_node*
    - char*
    - size_t
    - char**
    - size_t*
    assertStmts:
    - condition: (prefix_p && prefix_len_p)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 176
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 176
    functionName: lydjson_get_node_prefix
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - ly_strlen
    - lyd_parent
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lydjson_get_node_prefix(struct lyd_node *node, const char *local_prefix,
      size_t local_prefix_len, const char **prefix_p,\n        size_t *prefix_len_p)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_json.c:204,1
    - Dst: ly_ctx_get_module_implemented2
      Src: /src/libyang/src/parser_json.c:208,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:214,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:221,1
    - Dst: lysc_ext_find_node
      Src: /src/libyang/src/parser_json.c:234,1
    - Dst: lys_find_child
      Src: /src/libyang/src/parser_json.c:236,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:242,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:245,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:249,1
    - Dst: lyd_parser_check_schema
      Src: /src/libyang/src/parser_json.c:261,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:266,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 8
    argNames:
    - lydctx
    - is_attr
    - prefix
    - prefix_len
    - name
    - name_len
    - parent
    - snode_p
    argTypes:
    - struct lyd_json_ctx*
    - ly_bool
    - char*
    - size_t
    - char*
    - size_t
    - struct lyd_node_inner*
    - struct lysc_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 193
    functionDepth: 5
    functionLinenumber: 193
    functionLinenumberEnd: 268
    functionName: lydjson_get_snode
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - lysc_ext_find_node
    - lys_find_child
    - ly_ctx_get_module_implemented2
    - lyd_parser_check_schema
    - LOGVAL
    - LOG_LOCSET
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lydjson_get_snode(const struct lyd_json_ctx *lydctx, ly_bool
      is_attr, const char *prefix, size_t prefix_len, const char *name,\n        size_t
      name_len, const struct lyd_node_inner *parent, const struct lysc_node **snode_p)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:281,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:285,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:285,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:293,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - jsonctx
    argTypes:
    - struct lyjson_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 275
    functionDepth: 7
    functionLinenumber: 275
    functionLinenumberEnd: 296
    functionName: lydjson_data_skip
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyjson_ctx_next
    - lyjson_ctx_status
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydjson_data_skip(struct lyjson_ctx *jsonctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:312,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:317,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:318,1
    - Dst: lys_getnext
      Src: /src/libyang/src/parser_json.c:322,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_json.c:323,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:324,1
    - Dst: lydjson_parse_name
      Src: /src/libyang/src/parser_json.c:337,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/parser_json.c:342,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:347,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:348,1
    - Dst: lys_value_validate
      Src: /src/libyang/src/parser_json.c:358,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:359,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/parser_json.c:362,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:366,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:367,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:371,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:372,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/parser_json.c:383,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 2
    argNames:
    - jsonctx
    - list
    argTypes:
    - struct lyjson_ctx*
    - struct lysc_node*
    assertStmts:
    - condition: (list && (list->nodetype == LYS_LIST))
      pos:
        line_end: 316
        line_start: 316
        source_file: /src/libyang/src/parser_json.c
    - condition: (status == LYJSON_OBJECT)
      pos:
        line_end: 317
        line_start: 317
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 385
      start: 308
    functionDepth: 7
    functionLinenumber: 308
    functionLinenumberEnd: 385
    functionName: lydjson_check_list
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - ly_strncmp
    - lys_value_validate
    - lys_getnext
    - lyjson_ctx_status
    - lyjson_ctx_next
    - lydjson_parse_name
    - ly_set_add
    - LY_CHECK_GOTO
    - ly_set_rm_index
    - ly_set_erase
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydjson_check_list(struct lyjson_ctx *jsonctx, const struct
      lysc_node *list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:404,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:404,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:405,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:407,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:407,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:408,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - lydctx
    - status_p
    - type_hint_p
    argTypes:
    - struct lyd_json_ctx*
    - enum LYJSON_PARSER_STATUS*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 397
    functionDepth: 7
    functionLinenumber: 397
    functionLinenumberEnd: 424
    functionName: lydjson_value_type_hint
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyjson_ctx_next
    - lyjson_ctx_status
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydjson_value_type_hint(struct lyd_json_ctx *lydctx, enum LYJSON_PARSER_STATUS
      *status_p, uint32_t *type_hint_p)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:448,1
    - Dst: lyjson_ctx_backup
      Src: /src/libyang/src/parser_json.c:457,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:458,1
    - Dst: lydjson_value_type_hint
      Src: /src/libyang/src/parser_json.c:466,1
    - Dst: lys_value_validate
      Src: /src/libyang/src/parser_json.c:471,1
    - Dst: lydjson_check_list
      Src: /src/libyang/src/parser_json.c:477,1
    - Dst: lyjson_ctx_restore
      Src: /src/libyang/src/parser_json.c:485,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:487,1
    - Dst: lydjson_value_type_hint
      Src: /src/libyang/src/parser_json.c:488,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - lydctx
    - snode
    - type_hint_p
    argTypes:
    - struct lyd_json_ctx*
    - struct lysc_node*
    - uint32_t*
    assertStmts:
    - condition: (snode)
      pos:
        line_end: 447
        line_start: 447
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 492
      start: 441
    functionDepth: 8
    functionLinenumber: 441
    functionLinenumberEnd: 492
    functionName: lydjson_data_check_opaq
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - lyjson_ctx_restore
    - lyjson_ctx_status
    - lydjson_check_list
    - lyjson_ctx_backup
    - lys_value_validate
    - lydjson_value_type_hint
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydjson_data_check_opaq(struct lyd_json_ctx *lydctx, const struct
      lysc_node *snode, uint32_t *type_hint_p)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/parser_json.c:515,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_json.c:528,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_json.c:533,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:534,1
    - Dst: lydict_insert
      Src: /src/libyang/src/parser_json.c:534,1
    - Dst: strcmp
      Src: /src/libyang/src/parser_json.c:544,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:549,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/parser_json.c:561,1
    - Dst: lyd_create_attr
      Src: /src/libyang/src/parser_json.c:565,1
    - Dst: strlen
      Src: /src/libyang/src/parser_json.c:565,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:566,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:567,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:567,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:569,1
    - Dst: lydjson_parse_name
      Src: /src/libyang/src/parser_json.c:577,1
    - Dst: strlen
      Src: /src/libyang/src/parser_json.c:577,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:579,1
    - Dst: lydjson_get_snode
      Src: /src/libyang/src/parser_json.c:580,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:581,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/parser_json.c:593,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/parser_json.c:599,1
    - Dst: lyd_parser_create_meta
      Src: /src/libyang/src/parser_json.c:601,1
    - Dst: strlen
      Src: /src/libyang/src/parser_json.c:602,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:602,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:604,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:606,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:608,1
    - Dst: lyd_parse_set_data_flags
      Src: /src/libyang/src/parser_json.c:614,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:624,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:627,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_json.c:636,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:639,1
    - Dst: lydict_remove
      Src: /src/libyang/src/parser_json.c:644,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:646,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 83
    argCount: 2
    argNames:
    - lydctx
    - first_p
    argTypes:
    - struct lyd_json_ctx*
    - struct lyd_node**
    assertStmts:
    - condition: (ret == LY_SUCCESS)
      pos:
        line_end: 580
        line_start: 580
        source_file: /src/libyang/src/parser_json.c
    - condition: (is_attr)
      pos:
        line_end: 578
        line_start: 578
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 648
      start: 505
    functionDepth: 7
    functionLinenumber: 505
    functionLinenumberEnd: 648
    functionName: lydjson_metadata_finish
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - strlen
    - lydict_insert
    - LY_CHECK_GOTO
    - lyd_create_attr
    - lyd_parse_set_data_flags
    - lydict_remove
    - ly_strlen
    - assert
    - lyd_parser_create_meta
    - LOG_LOCBACK
    - lyd_free_tree
    - lydjson_get_snode
    - LY_LIST_FOR
    - ly_ctx_get_module_implemented
    - LOGVAL
    - lydjson_parse_name
    - strcmp
    - LOG_LOCSET
    - LY_LIST_FOR_SAFE
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydjson_metadata_finish(struct lyd_json_ctx *lydctx, struct
      lyd_node **first_p)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/parser_json.c:544,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:549,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/parser_json.c:561,1
    - Dst: lyd_create_attr
      Src: /src/libyang/src/parser_json.c:565,1
    - Dst: strlen
      Src: /src/libyang/src/parser_json.c:565,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:566,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:567,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:567,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:569,1
    - Dst: lydjson_parse_name
      Src: /src/libyang/src/parser_json.c:577,1
    - Dst: strlen
      Src: /src/libyang/src/parser_json.c:577,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:579,1
    - Dst: lydjson_get_snode
      Src: /src/libyang/src/parser_json.c:580,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:581,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/parser_json.c:593,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/parser_json.c:599,1
    - Dst: lyd_parser_create_meta
      Src: /src/libyang/src/parser_json.c:601,1
    - Dst: strlen
      Src: /src/libyang/src/parser_json.c:602,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:602,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:604,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:606,1
    - Dst: ly_strlen
      Src: /src/libyang/src/parser_json.c:608,1
    - Dst: lyd_parse_set_data_flags
      Src: /src/libyang/src/parser_json.c:614,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ret == LY_SUCCESS)
      pos:
        line_end: 580
        line_start: 580
        source_file: /src/libyang/src/parser_json.c
    - condition: (is_attr)
      pos:
        line_end: 578
        line_start: 578
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 619
      start: 541
    functionDepth: 6
    functionLinenumber: 541
    functionLinenumberEnd: 619
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 30
    functionsReached:
    - lyd_parser_create_meta
    - strlen
    - lyd_parse_set_data_flags
    - strcmp
    - lydjson_get_snode
    - LY_LIST_FOR
    - ly_ctx_get_module_implemented
    - LOGVAL
    - lydjson_parse_name
    - LY_CHECK_GOTO
    - ly_strlen
    - assert
    - lyd_create_attr
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(start, node)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:678,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:683,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:684,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:691,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:697,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:698,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:702,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:705,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:708,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:725,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:735,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/parser_json.c:738,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:742,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_json.c:744,1
    - Dst: lydjson_parse_name
      Src: /src/libyang/src/parser_json.c:747,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:749,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:754,1
    - Dst: ly_ctx_get_module_implemented2
      Src: /src/libyang/src/parser_json.c:761,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:764,1
    - Dst: lydjson_data_skip
      Src: /src/libyang/src/parser_json.c:771,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:772,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:773,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:780,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:781,1
    - Dst: lyd_parser_create_meta
      Src: /src/libyang/src/parser_json.c:786,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:789,1
    - Dst: lyd_parse_set_data_flags
      Src: /src/libyang/src/parser_json.c:792,1
    - Dst: lydjson_get_node_prefix
      Src: /src/libyang/src/parser_json.c:798,1
    - Dst: lyd_create_attr
      Src: /src/libyang/src/parser_json.c:801,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:804,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:807,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:808,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:820,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:821,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:827,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/parser_json.c:829,1
    - Dst: lyjson_token2str
      Src: /src/libyang/src/parser_json.c:830,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:835,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 115
    argCount: 3
    argNames:
    - lydctx
    - snode
    - node
    argTypes:
    - struct lyd_json_ctx*
    - struct lysc_node*
    - struct lyd_node*
    assertStmts:
    - condition: (status == LYJSON_OBJECT)
      pos:
        line_end: 741
        line_start: 741
        source_file: /src/libyang/src/parser_json.c
    - condition: (snode || node)
      pos:
        line_end: 677
        line_start: 677
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 837
      start: 661
    functionDepth: 8
    functionLinenumber: 661
    functionLinenumberEnd: 837
    functionName: lydjson_metadata
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - lyd_parser_create_meta
    - lydjson_get_node_prefix
    - LOG_LOCBACK
    - LOGINT_RET
    - lys_nodetype2str
    - lyd_parse_set_data_flags
    - lyjson_token2str
    - lyjson_ctx_status
    - ly_ctx_get_module_implemented2
    - lyjson_ctx_next
    - lydjson_data_skip
    - LOGVAL
    - lydjson_parse_name
    - LOG_LOCSET
    - LY_CHECK_GOTO
    - assert
    - lyd_create_attr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydjson_metadata(struct lyd_json_ctx *lydctx, const struct lysc_node
      *snode, struct lyd_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyd_insert_node
      Src: /src/libyang/src/parser_json.c:851,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - parent
    - first_p
    - node_p
    argTypes:
    - struct lyd_node_inner*
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 846
    functionDepth: 3
    functionLinenumber: 846
    functionLinenumberEnd: 863
    functionName: lydjson_maintain_children
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - lyd_insert_node
    linkageType: ''
    returnType: void
    signature: void lydjson_maintain_children(struct lyd_node_inner *parent, struct
      lyd_node **first_p, struct lyd_node **node_p)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:906,1
    - Dst: lydjson_value_type_hint
      Src: /src/libyang/src/parser_json.c:906,1
    - Dst: lydjson_get_node_prefix
      Src: /src/libyang/src/parser_json.c:910,1
    - Dst: lyd_create_opaq
      Src: /src/libyang/src/parser_json.c:911,1
    - Dst: free
      Src: /src/libyang/src/parser_json.c:914,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:916,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:921,1
    - Dst: lydjson_subtree_r
      Src: /src/libyang/src/parser_json.c:921,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:921,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:922,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:932,1
    - Dst: lydjson_subtree_r
      Src: /src/libyang/src/parser_json.c:932,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:932,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:933,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:937,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:937,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:941,1
    - Dst: lydjson_maintain_children
      Src: /src/libyang/src/parser_json.c:942,1
    - Dst: lydjson_parse_opaq
      Src: /src/libyang/src/parser_json.c:943,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:949,1
    - Dst: lydjson_metadata_finish
      Src: /src/libyang/src/parser_json.c:949,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:949,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:952,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 10
    argNames:
    - lydctx
    - name
    - name_len
    - prefix
    - prefix_len
    - parent
    - status_p
    - status_inner_p
    - first_p
    - node_p
    argTypes:
    - struct lyd_json_ctx*
    - char*
    - size_t
    - char*
    - size_t
    - struct lyd_node_inner*
    - enum LYJSON_PARSER_STATUS*
    - enum LYJSON_PARSER_STATUS*
    - struct lyd_node**
    - struct lyd_node**
    assertStmts:
    - condition: (node_p)
      pos:
        line_end: 940
        line_start: 940
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 953
      start: 888
    functionDepth: 8
    functionLinenumber: 888
    functionLinenumberEnd: 953
    functionName: lydjson_parse_opaq
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 1
    functionsReached:
    - assert
    - lydjson_maintain_children
    - lydjson_subtree_r
    - free
    - lyjson_ctx_status
    - LY_CHECK_RET
    - lyd_create_opaq
    - lyd_node_child_p
    - lyjson_ctx_next
    - lydjson_metadata_finish
    - lydjson_parse_opaq
    - lydjson_value_type_hint
    - lydjson_get_node_prefix
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lydjson_parse_opaq(struct lyd_json_ctx *lydctx, const char
      *name, size_t name_len, const char *prefix, size_t prefix_len,\n        struct
      lyd_node_inner *parent, enum LYJSON_PARSER_STATUS *status_p,\n        enum LYJSON_PARSER_STATUS
      *status_inner_p, struct lyd_node **first_p, struct lyd_node **node_p)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:998,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:998,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1002,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1002,1
    - Dst: lydjson_parse_opaq
      Src: /src/libyang/src/parser_json.c:1013,1
    - Dst: lydjson_metadata
      Src: /src/libyang/src/parser_json.c:1020,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 11
    argNames:
    - lydctx
    - attr_node
    - snode
    - name
    - name_len
    - prefix
    - prefix_len
    - parent
    - status_p
    - first_p
    - node_p
    argTypes:
    - struct lyd_json_ctx*
    - struct lyd_node*
    - struct lysc_node*
    - char*
    - size_t
    - char*
    - size_t
    - struct lyd_node*
    - enum LYJSON_PARSER_STATUS*
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 973
    functionDepth: 9
    functionLinenumber: 973
    functionLinenumberEnd: 1024
    functionName: lydjson_parse_attribute
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lydjson_metadata
    - lydjson_parse_opaq
    - lyjson_ctx_next
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lydjson_parse_attribute(struct lyd_json_ctx *lydctx, struct
      lyd_node *attr_node, const struct lysc_node *snode,\n        const char *name,
      size_t name_len, const char *prefix, size_t prefix_len, struct lyd_node *parent,\n
      \       enum LYJSON_PARSER_STATUS *status_p, struct lyd_node **first_p, struct
      lyd_node **node_p)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lydjson_data_check_opaq
      Src: /src/libyang/src/parser_json.c:1054,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1056,1
    - Dst: lyd_parser_create_term
      Src: /src/libyang/src/parser_json.c:1059,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1062,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1065,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1066,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1069,1
    - Dst: lyd_create_inner
      Src: /src/libyang/src/parser_json.c:1071,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1072,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_json.c:1074,1
    - Dst: lydjson_subtree_r
      Src: /src/libyang/src/parser_json.c:1078,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:1078,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_json.c:1079,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:1079,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:1080,1
    - Dst: lydjson_metadata_finish
      Src: /src/libyang/src/parser_json.c:1084,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:1084,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_json.c:1085,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:1085,1
    - Dst: lyd_parse_check_keys
      Src: /src/libyang/src/parser_json.c:1089,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_json.c:1090,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:1090,1
    - Dst: lyd_validate_new
      Src: /src/libyang/src/parser_json.c:1095,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:1095,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_json.c:1096,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:1096,1
    - Dst: lyd_new_implicit_r
      Src: /src/libyang/src/parser_json.c:1099,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:1099,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_json.c:1101,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:1101,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:1104,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1107,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1108,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1111,1
    - Dst: lydjson_subtree_r
      Src: /src/libyang/src/parser_json.c:1121,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1122,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:1123,1
    - Dst: lydjson_metadata_finish
      Src: /src/libyang/src/parser_json.c:1130,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1131,1
    - Dst: lyd_create_any
      Src: /src/libyang/src/parser_json.c:1133,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1134,1
    - Dst: lydjson_parse_opaq
      Src: /src/libyang/src/parser_json.c:1138,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/parser_json.c:1140,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 64
    argCount: 10
    argNames:
    - lydctx
    - parent
    - first_p
    - snode
    - name
    - name_len
    - prefix
    - prefix_len
    - status
    - node
    argTypes:
    - struct lyd_json_ctx*
    - struct lyd_node_inner*
    - struct lyd_node**
    - struct lysc_node*
    - char*
    - size_t
    - char*
    - size_t
    - enum LYJSON_PARSER_STATUS*
    - struct lyd_node**
    assertStmts:
    - condition: (snode->nodetype & (LYD_NODE_TERM | LYD_NODE_INNER | LYD_NODE_ANY))
      pos:
        line_end: 1055
        line_start: 1055
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 1150
      start: 1044
    functionDepth: 11
    functionLinenumber: 1044
    functionLinenumberEnd: 1150
    functionName: lydjson_parse_instance
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - LOG_LOCBACK
    - lydjson_data_check_opaq
    - LY_CHECK_ERR_RET
    - lyd_parse_check_keys
    - lyd_validate_new
    - lyd_new_implicit_r
    - lydjson_subtree_r
    - lyjson_ctx_status
    - lyd_create_any
    - LY_CHECK_RET
    - lyjson_ctx_next
    - lyd_parser_create_term
    - lyd_node_child_p
    - lyd_create_inner
    - LOG_LOCSET
    - lydjson_metadata_finish
    - lydjson_parse_opaq
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lydjson_parse_instance(struct lyd_json_ctx *lydctx, struct
      lyd_node_inner *parent, struct lyd_node **first_p,\n        const struct lysc_node
      *snode, const char *name, size_t name_len, const char *prefix, size_t prefix_len,\n
      \       enum LYJSON_PARSER_STATUS *status, struct lyd_node **node)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:1165,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1175,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1176,1
    - Dst: lydjson_parse_name
      Src: /src/libyang/src/parser_json.c:1179,1
    - Dst: lydjson_get_snode
      Src: /src/libyang/src/parser_json.c:1183,1
    - Dst: lydjson_data_skip
      Src: /src/libyang/src/parser_json.c:1186,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1187,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:1188,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1192,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:1205,1
    - Dst: lydjson_parse_attribute
      Src: /src/libyang/src/parser_json.c:1213,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1215,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1218,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:1222,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1228,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1229,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1233,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1234,1
    - Dst: lydjson_parse_opaq
      Src: /src/libyang/src/parser_json.c:1240,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1242,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1247,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1248,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1260,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1263,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1264,1
    - Dst: lydjson_maintain_children
      Src: /src/libyang/src/parser_json.c:1268,1
    - Dst: lydjson_parse_instance
      Src: /src/libyang/src/parser_json.c:1270,1
    - Dst: lyjson_ctx_next
      Src: /src/libyang/src/parser_json.c:1280,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1281,1
    - Dst: lydjson_parse_instance
      Src: /src/libyang/src/parser_json.c:1302,1
    - Dst: lydjson_maintain_children
      Src: /src/libyang/src/parser_json.c:1320,1
    - Dst: ly_set_add
      Src: /src/libyang/src/parser_json.c:1324,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/parser_json.c:1331,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:1332,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/parser_json.c:1333,1
    - Dst: lyjson_token2str
      Src: /src/libyang/src/parser_json.c:1333,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/parser_json.c:1334,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/parser_json.c:1338,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 126
    argCount: 4
    argNames:
    - lydctx
    - parent
    - first_p
    - parsed
    argTypes:
    - struct lyd_json_ctx*
    - struct lyd_node*
    - struct lyd_node**
    - struct ly_set*
    assertStmts:
    - condition: (parent || first_p)
      pos:
        line_end: 1174
        line_start: 1174
        source_file: /src/libyang/src/parser_json.c
    - condition: (status == LYJSON_OBJECT)
      pos:
        line_end: 1175
        line_start: 1175
        source_file: /src/libyang/src/parser_json.c
    - condition: ((lydctx->parse_opts & LYD_PARSE_OPAQ) || (lydctx->int_opts))
      pos:
        line_end: 1217
        line_start: 1217
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 1340
      start: 1161
    functionDepth: 12
    functionLinenumber: 1161
    functionLinenumberEnd: 1340
    functionName: lydjson_subtree_r
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 2
    functionsReached:
    - lydjson_maintain_children
    - lydjson_parse_instance
    - LOG_LOCBACK
    - lydjson_parse_opaq
    - lys_nodetype2str
    - lyd_free_tree
    - lydjson_get_snode
    - lyjson_token2str
    - lyjson_ctx_status
    - lyjson_ctx_next
    - lydjson_data_skip
    - LOGVAL
    - lydjson_parse_attribute
    - ly_set_add
    - LOG_LOCSET
    - lydjson_parse_name
    - LY_CHECK_GOTO
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lydjson_subtree_r(struct lyd_json_ctx *lydctx, struct lyd_node
      *parent, struct lyd_node **first_p, struct ly_set *parsed)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1361,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1362,1
    - Dst: calloc
      Src: /src/libyang/src/parser_json.c:1365,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_json.c:1366,1
    - Dst: LOGMEM
      Src: /src/libyang/src/parser_json.c:1366,1
    - Dst: is_jsonws
      Src: /src/libyang/src/parser_json.c:1372,1
    - Dst: LY_IN_NEW_LINE
      Src: /src/libyang/src/parser_json.c:1375,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/parser_json.c:1379,1
    - Dst: lyjson_ctx_new
      Src: /src/libyang/src/parser_json.c:1379,1
    - Dst: free
      Src: /src/libyang/src/parser_json.c:1379,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:1380,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:1386,1
    - Dst: lyjson_token2str
      Src: /src/libyang/src/parser_json.c:1387,1
    - Dst: lyd_json_ctx_free
      Src: /src/libyang/src/parser_json.c:1389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 6
    argNames:
    - ctx
    - in
    - parse_opts
    - val_opts
    - lydctx_p
    - status
    argTypes:
    - struct ly_ctx*
    - struct ly_in*
    - uint32_t
    - uint32_t
    - struct lyd_json_ctx**
    - enum LYJSON_PARSER_STATUS*
    assertStmts:
    - condition: (lydctx_p)
      pos:
        line_end: 1360
        line_start: 1360
        source_file: /src/libyang/src/parser_json.c
    - condition: (status)
      pos:
        line_end: 1361
        line_start: 1361
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 1392
      start: 1353
    functionDepth: 7
    functionLinenumber: 1353
    functionLinenumberEnd: 1392
    functionName: lyd_parse_json_init
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 0
    functionsReached:
    - assert
    - LY_CHECK_ERR_RET
    - lyjson_ctx_new
    - free
    - lyjson_ctx_status
    - lyjson_token2str
    - LOGVAL
    - LY_IN_NEW_LINE
    - lyd_json_ctx_free
    - is_jsonws
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parse_json_init(const struct ly_ctx *ctx, struct ly_in
      *in, uint32_t parse_opts, uint32_t val_opts,\n        struct lyd_json_ctx **lydctx_p,
      enum LYJSON_PARSER_STATUS *status)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parse_json_init
      Src: /src/libyang/src/parser_json.c:1404,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1405,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1407,1
    - Dst: LOGINT
      Src: /src/libyang/src/parser_json.c:1423,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1431,1
    - Dst: lyd_parser_find_operation
      Src: /src/libyang/src/parser_json.c:1431,1
    - Dst: lydjson_subtree_r
      Src: /src/libyang/src/parser_json.c:1435,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1436,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:1438,1
    - Dst: lyjson_ctx_status
      Src: /src/libyang/src/parser_json.c:1446,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:1447,1
    - Dst: LOGVAL
      Src: /src/libyang/src/parser_json.c:1452,1
    - Dst: lydjson_metadata_finish
      Src: /src/libyang/src/parser_json.c:1458,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/parser_json.c:1458,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/parser_json.c:1459,1
    - Dst: assert
      Src: /src/libyang/src/parser_json.c:1463,1
    - Dst: lyd_json_ctx_free
      Src: /src/libyang/src/parser_json.c:1467,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 57
    argCount: 10
    argNames:
    - ctx
    - ext
    - parent
    - first_p
    - in
    - parse_opts
    - val_opts
    - data_type
    - parsed
    - lydctx_p
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    - struct lyd_node*
    - struct lyd_node**
    - struct ly_in*
    - uint32_t
    - uint32_t
    - enum lyd_type
    - struct ly_set*
    - struct lyd_ctx**
    assertStmts:
    - condition: (status == LYJSON_OBJECT)
      pos:
        line_end: 1406
        line_start: 1406
        source_file: /src/libyang/src/parser_json.c
    - condition: "(!(parse_opts & LYD_PARSE_ONLY) || (!lydctx->node_types.count &&
        !lydctx->meta_types.count &&\n            !lydctx->node_when.count))"
      pos:
        line_end: 1463
        line_start: 1462
        source_file: /src/libyang/src/parser_json.c
    constantsTouched: []
    func_position:
      end: 1472
      start: 1394
    functionDepth: 13
    functionLinenumber: 1394
    functionLinenumberEnd: 1472
    functionName: lyd_parse_json
    functionSourceFile: /src/libyang/src/parser_json.c
    functionUses: 2
    functionsReached:
    - lyd_parse_json_init
    - lyd_parser_find_operation
    - lydjson_subtree_r
    - LOGINT
    - lyjson_ctx_status
    - lyd_node_child_p
    - LOGVAL
    - lyd_json_ctx_free
    - lydjson_metadata_finish
    - LY_CHECK_GOTO
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_parse_json(const struct ly_ctx *ctx, const struct lysc_ext_instance
      *ext, struct lyd_node *parent,\n        struct lyd_node **first_p, struct ly_in
      *in, uint32_t parse_opts, uint32_t val_opts, enum lyd_type data_type,\n        struct
      ly_set *parsed, struct lyd_ctx **lydctx_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_err_last
      Src: /src/libyang/src/log.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 61
    functionName: ly_errcode
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - ly_err_last
    linkageType: ''
    returnType: API
    signature: API ly_errcode(const struct ly_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_err_last
      Src: /src/libyang/src/log.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: ly_vecode
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - ly_err_last
    linkageType: ''
    returnType: API
    signature: API ly_vecode(const struct ly_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/log.c:81,1
    - Dst: ly_err_last
      Src: /src/libyang/src/log.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 89
    functionName: ly_errmsg
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 7
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_err_last
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_errmsg(const struct ly_ctx *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/log.c:96,1
    - Dst: ly_err_last
      Src: /src/libyang/src/log.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 104
    functionName: ly_errpath
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_err_last
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_errpath(const struct ly_ctx *ctx)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/log.c:111,1
    - Dst: ly_err_last
      Src: /src/libyang/src/log.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 119
    functionName: ly_errapptag
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_err_last
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_errapptag(const struct ly_ctx *ctx)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/log.c:132,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:133,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:133,1
    - Dst: va_start
      Src: /src/libyang/src/log.c:150,1
    - Dst: vasprintf
      Src: /src/libyang/src/log.c:152,1
    - Dst: va_end
      Src: /src/libyang/src/log.c:158,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 6
    argNames:
    - err
    - ecode
    - vecode
    - path
    - apptag
    - err_msg
    argTypes:
    - struct ly_err_item**
    - LY_ERR
    - LY_VECODE
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 167
    functionName: ly_err_new
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - malloc
    - vasprintf
    - va_start
    - va_end
    - LOGMEM
    linkageType: ''
    returnType: API
    signature: API ly_err_new(struct ly_err_item **err, LY_ERR ecode, LY_VECODE vecode,
      char *path, char *apptag, const char *err_msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/log.c:172,1
    - Dst: pthread_getspecific
      Src: /src/libyang/src/log.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: ly_err_first
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - pthread_getspecific
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_err_first(const struct ly_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/log.c:182,1
    - Dst: pthread_getspecific
      Src: /src/libyang/src/log.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ly_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 186
    functionName: ly_err_last
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 5
    functionsReached:
    - LY_CHECK_ARG_RET
    - pthread_getspecific
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_err_last(const struct ly_ctx *ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/log.c:196,1
    - Dst: free
      Src: /src/libyang/src/log.c:197,1
    - Dst: free
      Src: /src/libyang/src/log.c:198,1
    - Dst: free
      Src: /src/libyang/src/log.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 201
    functionName: ly_err_free
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 9
    functionsReached:
    - free
    linkageType: ''
    returnType: API
    signature: API ly_err_free(void *ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_err_first
      Src: /src/libyang/src/log.c:208,1
    - Dst: assert
      Src: /src/libyang/src/log.c:215,1
    - Dst: ly_err_free
      Src: /src/libyang/src/log.c:219,1
    - Dst: ly_err_free
      Src: /src/libyang/src/log.c:222,1
    - Dst: pthread_setspecific
      Src: /src/libyang/src/log.c:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - eitem
    argTypes:
    - struct ly_ctx*
    - struct ly_err_item*
    assertStmts:
    - condition: (i)
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/libyang/src/log.c
    constantsTouched: []
    func_position:
      end: 225
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 225
    functionName: ly_err_clean
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 2
    functionsReached:
    - ly_err_free
    - pthread_setspecific
    - ly_err_first
    - assert
    linkageType: ''
    returnType: API
    signature: API ly_err_clean(struct ly_ctx *ctx, struct ly_err_item *eitem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - level
    argTypes:
    - LY_LOG_LEVEL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 234
    functionName: LY_LOG_LEVEL::ly_log_level
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API LY_LOG_LEVEL

      ly_log_level(LY_LOG_LEVEL level)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - opts
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: ly_log_options
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API ly_log_options(uint32_t opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - dbg_groups
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 257
    functionName: ly_log_dbg_groups
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API ly_log_dbg_groups(uint32_t dbg_groups)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - clb
    - path
    argTypes:
    - ly_log_clb
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 264
    functionName: ly_set_log_clb
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API ly_set_log_clb(ly_log_clb clb, ly_bool path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: ly_get_log_clb
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API ly_get_log_clb(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_add
      Src: /src/libyang/src/log.c:277,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:279,1
    - Dst: ly_set_add
      Src: /src/libyang/src/log.c:283,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:285,1
    - Dst: strdup
      Src: /src/libyang/src/log.c:289,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:290,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:290,1
    - Dst: ly_set_add
      Src: /src/libyang/src/log.c:291,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:293,1
    - Dst: ly_set_add
      Src: /src/libyang/src/log.c:297,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:299,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 6
    argNames:
    - scnode
    - dnode
    - path
    - in
    - line
    - reset
    argTypes:
    - struct lysc_node*
    - struct lyd_node*
    - char*
    - struct ly_in*
    - uint64_t
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 305
    functionName: ly_log_location
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - strdup
    - ly_set_add
    - ly_set_erase
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: "void ly_log_location(const struct lysc_node *scnode, const struct
      lyd_node *dnode,\n        const char *path, const struct ly_in *in, uint64_t
      line, ly_bool reset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/log.c:320,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:329,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:332,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:335,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/log.c:338,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 25
    argCount: 4
    argNames:
    - scnode_steps
    - dnode_steps
    - path_steps
    - in_steps
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 340
    functionName: ly_log_location_revert
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - ly_set_rm_index
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: "void ly_log_location_revert(uint32_t scnode_steps, uint32_t dnode_steps,\n
      \       uint32_t path_steps, uint32_t in_steps)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/log.c:347,1
    - Dst: pthread_getspecific
      Src: /src/libyang/src/log.c:349,1
    - Dst: assert
      Src: /src/libyang/src/log.c:352,1
    - Dst: malloc
      Src: /src/libyang/src/log.c:353,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/log.c:354,1
    - Dst: pthread_setspecific
      Src: /src/libyang/src/log.c:358,1
    - Dst: assert
      Src: /src/libyang/src/log.c:361,1
    - Dst: free
      Src: /src/libyang/src/log.c:368,1
    - Dst: assert
      Src: /src/libyang/src/log.c:375,1
    - Dst: free
      Src: /src/libyang/src/log.c:378,1
    - Dst: free
      Src: /src/libyang/src/log.c:379,1
    - Dst: free
      Src: /src/libyang/src/log.c:380,1
    - Dst: malloc
      Src: /src/libyang/src/log.c:384,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/log.c:385,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:402,1
    - Dst: free
      Src: /src/libyang/src/log.c:403,1
    - Dst: free
      Src: /src/libyang/src/log.c:404,1
    - Dst: free
      Src: /src/libyang/src/log.c:405,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 51
    argCount: 7
    argNames:
    - ctx
    - level
    - 'no'
    - vecode
    - msg
    - path
    - apptag
    argTypes:
    - struct ly_ctx*
    - LY_LOG_LEVEL
    - LY_ERR
    - LY_VECODE
    - char*
    - char*
    - char*
    assertStmts:
    - condition: (ctx && (level < LY_LLVRB))
      pos:
        line_end: 346
        line_start: 346
        source_file: /src/libyang/src/log.c
    - condition: (msg)
      pos:
        line_end: 351
        line_start: 351
        source_file: /src/libyang/src/log.c
    - condition: (path)
      pos:
        line_end: 360
        line_start: 360
        source_file: /src/libyang/src/log.c
    - condition: (0)
      pos:
        line_end: 374
        line_start: 374
        source_file: /src/libyang/src/log.c
    constantsTouched: []
    func_position:
      end: 407
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 407
    functionName: log_store
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - malloc
    - free
    - LOGMEM
    - pthread_getspecific
    - LY_CHECK_GOTO
    - pthread_setspecific
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR log_store(const struct ly_ctx *ctx, LY_LOG_LEVEL level, LY_ERR
      no, LY_VECODE vecode, char *msg, char *path, char *apptag)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/log.c:418,1
    - Dst: log_clb
      Src: /src/libyang/src/log.c:426,1
    - Dst: fprintf
      Src: /src/libyang/src/log.c:428,1
    - Dst: vfprintf
      Src: /src/libyang/src/log.c:429,1
    - Dst: fprintf
      Src: /src/libyang/src/log.c:431,1
    - Dst: fprintf
      Src: /src/libyang/src/log.c:433,1
    - Dst: free
      Src: /src/libyang/src/log.c:437,1
    - Dst: assert
      Src: /src/libyang/src/log.c:443,1
    - Dst: vasprintf
      Src: /src/libyang/src/log.c:444,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:445,1
    - Dst: free
      Src: /src/libyang/src/log.c:446,1
    - Dst: ly_vecode
      Src: /src/libyang/src/log.c:451,1
    - Dst: log_store
      Src: /src/libyang/src/log.c:453,1
    - Dst: vasprintf
      Src: /src/libyang/src/log.c:458,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:459,1
    - Dst: free
      Src: /src/libyang/src/log.c:460,1
    - Dst: log_clb
      Src: /src/libyang/src/log.c:469,1
    - Dst: fprintf
      Src: /src/libyang/src/log.c:471,1
    - Dst: fprintf
      Src: /src/libyang/src/log.c:473,1
    - Dst: free
      Src: /src/libyang/src/log.c:479,1
    - Dst: free
      Src: /src/libyang/src/log.c:480,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 7
    argNames:
    - ctx
    - level
    - 'no'
    - vecode
    - path
    - format
    - args
    argTypes:
    - struct ly_ctx*
    - LY_LOG_LEVEL
    - LY_ERR
    - LY_VECODE
    - char*
    - char*
    - va_list
    assertStmts:
    - condition: (format)
      pos:
        line_end: 442
        line_start: 442
        source_file: /src/libyang/src/log.c
    constantsTouched: []
    func_position:
      end: 482
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 482
    functionName: log_vprintf
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - log_store
    - vfprintf
    - vasprintf
    - free
    - ly_vecode
    - fprintf
    - log_clb
    - LOGMEM
    - assert
    linkageType: ''
    returnType: void
    signature: "void log_vprintf(const struct ly_ctx *ctx, LY_LOG_LEVEL level, LY_ERR
      no, LY_VECODE vecode, char *path,\n        const char *format, va_list args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT
      Src: /src/libyang/src/log.c:505,1
    - Dst: asprintf
      Src: /src/libyang/src/log.c:509,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:510,1
    - Dst: va_start
      Src: /src/libyang/src/log.c:514,1
    - Dst: log_vprintf
      Src: /src/libyang/src/log.c:515,1
    - Dst: va_end
      Src: /src/libyang/src/log.c:516,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - group
    - format
    argTypes:
    - uint32_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 486
    functionDepth: 3
    functionLinenumber: 486
    functionLinenumberEnd: 517
    functionName: ly_log_dbg
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - log_vprintf
    - LOGINT
    - asprintf
    - va_start
    - va_end
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: void ly_log_dbg(uint32_t group, const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/libyang/src/log.c:526,1
    - Dst: log_vprintf
      Src: /src/libyang/src/log.c:527,1
    - Dst: va_end
      Src: /src/libyang/src/log.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - level
    - 'no'
    - format
    argTypes:
    - struct ly_ctx*
    - LY_LOG_LEVEL
    - LY_ERR
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 521
    functionDepth: 3
    functionLinenumber: 521
    functionLinenumberEnd: 529
    functionName: ly_log
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - log_vprintf
    linkageType: ''
    returnType: void
    signature: void ly_log(const struct ly_ctx *ctx, LY_LOG_LEVEL level, LY_ERR no,
      const char *format, ...)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/libyang/src/log.c:541,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:542,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:542,1
    - Dst: lysc_path
      Src: /src/libyang/src/log.c:546,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:547,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:547,1
    - Dst: asprintf
      Src: /src/libyang/src/log.c:549,1
    - Dst: free
      Src: /src/libyang/src/log.c:550,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:551,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:551,1
    - Dst: lyd_path
      Src: /src/libyang/src/log.c:555,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:556,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:556,1
    - Dst: asprintf
      Src: /src/libyang/src/log.c:558,1
    - Dst: free
      Src: /src/libyang/src/log.c:559,1
    - Dst: free
      Src: /src/libyang/src/log.c:560,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:561,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:561,1
    - Dst: asprintf
      Src: /src/libyang/src/log.c:565,1
    - Dst: free
      Src: /src/libyang/src/log.c:566,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:567,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:567,1
    - Dst: asprintf
      Src: /src/libyang/src/log.c:572,1
    - Dst: free
      Src: /src/libyang/src/log.c:574,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:575,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:575,1
    - Dst: asprintf
      Src: /src/libyang/src/log.c:580,1
    - Dst: free
      Src: /src/libyang/src/log.c:581,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:582,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:582,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - struct ly_ctx*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 531
    functionDepth: 4
    functionLinenumber: 531
    functionLinenumberEnd: 587
    functionName: ly_vlog_build_path
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - lysc_path
    - LY_CHECK_ERR_RET
    - free
    - asprintf
    - strdup
    - lyd_path
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_vlog_build_path(const struct ly_ctx *ctx, char **path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_vlog_build_path
      Src: /src/libyang/src/log.c:596,1
    - Dst: va_start
      Src: /src/libyang/src/log.c:599,1
    - Dst: log_vprintf
      Src: /src/libyang/src/log.c:600,1
    - Dst: va_end
      Src: /src/libyang/src/log.c:602,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - code
    - format
    argTypes:
    - struct ly_ctx*
    - LY_VECODE
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 589
    functionDepth: 5
    functionLinenumber: 589
    functionLinenumberEnd: 603
    functionName: ly_vlog
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - log_vprintf
    - ly_vlog_build_path
    linkageType: ''
    returnType: void
    signature: void ly_vlog(const struct ly_ctx *ctx, LY_VECODE code, const char *format,
      ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/log.c:615,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:617,1
    - Dst: va_start
      Src: /src/libyang/src/log.c:621,1
    - Dst: log_vprintf
      Src: /src/libyang/src/log.c:622,1
    - Dst: strdup
      Src: /src/libyang/src/log.c:622,1
    - Dst: va_end
      Src: /src/libyang/src/log.c:623,1
    - Dst: free
      Src: /src/libyang/src/log.c:625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - ext
    - level
    - err_no
    - path
    - format
    argTypes:
    - struct lysc_ext_instance*
    - LY_LOG_LEVEL
    - LY_ERR
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 605
    functionDepth: 3
    functionLinenumber: 605
    functionLinenumberEnd: 626
    functionName: lyplg_ext_log
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 3
    functionsReached:
    - log_vprintf
    - free
    - asprintf
    - strdup
    - va_start
    - va_end
    - LOGMEM
    linkageType: ''
    returnType: API
    signature: API lyplg_ext_log(const struct lysc_ext_instance *ext, LY_LOG_LEVEL
      level, LY_ERR err_no, const char *path, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/log.c:637,1
    - Dst: strdup
      Src: /src/libyang/src/log.c:641,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/log.c:642,1
    - Dst: LOGMEM
      Src: /src/libyang/src/log.c:642,1
    - Dst: va_start
      Src: /src/libyang/src/log.c:645,1
    - Dst: log_vprintf
      Src: /src/libyang/src/log.c:646,1
    - Dst: va_end
      Src: /src/libyang/src/log.c:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - eitem
    - format
    argTypes:
    - struct ly_ctx*
    - struct ly_err_item*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 631
    functionDepth: 3
    functionLinenumber: 631
    functionLinenumberEnd: 648
    functionName: _ly_err_print
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_ARG_RET
    - log_vprintf
    - strdup
    - va_start
    - va_end
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: void _ly_err_print(const struct ly_ctx *ctx, struct ly_err_item *eitem,
      const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ly_err_print
      Src: /src/libyang/src/log.c:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - eitem
    argTypes:
    - struct ly_ctx*
    - struct ly_err_item*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 650
    functionDepth: 4
    functionLinenumber: 650
    functionLinenumberEnd: 655
    functionName: ly_err_print
    functionSourceFile: /src/libyang/src/log.c
    functionUses: 1
    functionsReached:
    - _ly_err_print
    linkageType: ''
    returnType: API
    signature: API ly_err_print(const struct ly_ctx *ctx, struct ly_err_item *eitem)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:42,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data_hash.c:42,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:43,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data_hash.c:43,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:48,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data_hash.c:48,1
    - Dst: struct lyd_node_term*::value::realtype::plugin::print
      Src: /src/libyang/src/tree_data_hash.c:56,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:57,1
    - Dst: free
      Src: /src/libyang/src/tree_data_hash.c:59,1
    - Dst: struct lyd_node_term*::value::realtype::plugin::print
      Src: /src/libyang/src/tree_data_hash.c:67,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:68,1
    - Dst: free
      Src: /src/libyang/src/tree_data_hash.c:70,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 78
    functionName: lyd_hash
    functionSourceFile: /src/libyang/src/tree_data_hash.c
    functionUses: 8
    functionsReached:
    - free
    - dict_hash_multi
    - strlen
    - struct lyd_node_term*::value::realtype::plugin::print
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_hash(struct lyd_node *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyd_compare_single
      Src: /src/libyang/src/tree_data_hash.c:103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - mod
    - UNUSED(cb_data)
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 85
    functionDepth: 5
    functionLinenumber: 85
    functionLinenumberEnd: 111
    functionName: lyd_hash_table_val_equal
    functionSourceFile: /src/libyang/src/tree_data_hash.c
    functionUses: 0
    functionsReached:
    - lyd_compare_single
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lyd_hash_table_val_equal(void *val1_p, void *val2_p, ly_bool
      mod, void *UNUSED(cb_data))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data_hash.c:126,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_data_hash.c:129,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/tree_data_hash.c:130,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_hash.c:130,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:137,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data_hash.c:137,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:138,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data_hash.c:138,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:139,1
    - Dst: lyht_remove
      Src: /src/libyang/src/tree_data_hash.c:143,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/tree_data_hash.c:144,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_hash.c:144,1
    - Dst: assert
      Src: /src/libyang/src/tree_data_hash.c:149,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_data_hash.c:152,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/tree_data_hash.c:153,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_hash.c:153,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 3
    argNames:
    - ht
    - node
    - empty_ht
    argTypes:
    - struct hash_table*
    - struct lyd_node*
    - ly_bool
    assertStmts:
    - condition: (ht && node && node->schema)
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/libyang/src/tree_data_hash.c
    - condition: (hash != node->hash)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/libyang/src/tree_data_hash.c
    constantsTouched: []
    func_position:
      end: 158
      start: 121
    functionDepth: 6
    functionLinenumber: 121
    functionLinenumberEnd: 158
    functionName: lyd_insert_hash_add
    functionSourceFile: /src/libyang/src/tree_data_hash.c
    functionUses: 0
    functionsReached:
    - lyht_insert
    - strlen
    - LOGINT_RET
    - lyht_remove
    - dict_hash_multi
    - LYD_CTX
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_insert_hash_add(struct hash_table *ht, struct lyd_node *node,
      ly_bool empty_ht)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data_hash.c:177,1
    - Dst: lyht_new
      Src: /src/libyang/src/tree_data_hash.c:184,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data_hash.c:185,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data_hash.c:187,1
    - Dst: lyd_insert_hash_add
      Src: /src/libyang/src/tree_data_hash.c:187,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data_hash.c:192,1
    - Dst: lyd_insert_hash_add
      Src: /src/libyang/src/tree_data_hash.c:192,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 160
    functionDepth: 7
    functionLinenumber: 160
    functionLinenumberEnd: 196
    functionName: lyd_insert_hash
    functionSourceFile: /src/libyang/src/tree_data_hash.c
    functionUses: 4
    functionsReached:
    - LY_CHECK_RET
    - lyd_insert_hash_add
    - LY_LIST_FOR
    - lyht_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_insert_hash(struct lyd_node *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lyht_remove
      Src: /src/libyang/src/tree_data_hash.c:209,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data_hash.c:210,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_hash.c:210,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:217,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data_hash.c:217,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:218,1
    - Dst: strlen
      Src: /src/libyang/src/tree_data_hash.c:218,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/tree_data_hash.c:219,1
    - Dst: lyht_remove
      Src: /src/libyang/src/tree_data_hash.c:222,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data_hash.c:223,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_hash.c:223,1
    - Dst: lyht_insert
      Src: /src/libyang/src/tree_data_hash.c:229,1
    - Dst: LOGINT
      Src: /src/libyang/src/tree_data_hash.c:230,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_hash.c:230,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 198
    functionDepth: 6
    functionLinenumber: 198
    functionLinenumberEnd: 235
    functionName: lyd_unlink_hash
    functionSourceFile: /src/libyang/src/tree_data_hash.c
    functionUses: 2
    functionsReached:
    - strlen
    - lyht_insert
    - LOGINT
    - lyht_remove
    - dict_hash_multi
    - LYD_CTX
    linkageType: ''
    returnType: void
    signature: void lyd_unlink_hash(struct lyd_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:47,1
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:48,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data_helpers.c:60,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/tree_data_helpers.c:61,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 5
    argNames:
    - last
    - sibling
    - slast
    - parent
    - module
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lysc_node**
    - struct lysc_node*
    - struct lysc_module*
    assertStmts:
    - condition: (parent || module)
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/libyang/src/tree_data_helpers.c
    - condition: (!last || (slast && *slast))
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/libyang/src/tree_data_helpers.c
    constantsTouched: []
    func_position:
      end: 70
      start: 40
    functionDepth: 7
    functionLinenumber: 40
    functionLinenumberEnd: 70
    functionName: lys_getnext_data
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 6
    functionsReached:
    - lyd_find_sibling_val
    - assert
    - lys_getnext
    linkageType: ''
    returnType: struct lyd_node
    signature: "struct lyd_node *\nlys_getnext_data(const struct lyd_node *last, const
      struct lyd_node *sibling, const struct lysc_node **slast,\n        const struct
      lysc_node *parent, const struct lysc_module *module)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (node)
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/libyang/src/tree_data_helpers.c
    constantsTouched: []
    func_position:
      end: 91
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 91
    functionName: lyd_node_child_p
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 13
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lyd_node
    signature: 'struct lyd_node **

      lyd_node_child_p(struct lyd_node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/tree_data_helpers.c:107,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 117
    functionName: lyd_child_no_keys
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 0
    functionsReached:
    - lyd_node_child_p
    linkageType: ''
    returnType: API
    signature: 'API *

      lyd_child_no_keys(const struct lyd_node *node)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/src/tree_data_helpers.c:133,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:133,1
    - Dst: ly_ctx_get_module_implemented
      Src: /src/libyang/src/tree_data_helpers.c:135,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 143
    functionName: lyd_owner_module
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 7
    functionsReached:
    - ly_ctx_get_module_implemented
    - LYD_CTX
    - ly_ctx_get_module_implemented_ns
    linkageType: ''
    returnType: API
    signature: 'API *

      lyd_owner_module(const struct lyd_node *node)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/tree_data_helpers.c:162,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data_helpers.c:170,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 5
    argNames:
    - tree
    - module
    - ctx
    - i
    - first
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - struct ly_ctx*
    - uint32_t*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 178
    functionName: lyd_mod_next_module
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 1
    functionsReached:
    - lyd_owner_module
    - ly_ctx_get_module_iter
    linkageType: ''
    returnType: struct lys_module
    signature: "struct lys_module *\nlyd_mod_next_module(struct lyd_node *tree, const
      struct lys_module *module, const struct ly_ctx *ctx, uint32_t *i,\n        struct
      lyd_node **first)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data_helpers.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 174
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 31
    functionsReached:
    - lyd_owner_module
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(tree, iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data_helpers.c:194,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data_helpers.c:195,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data_helpers.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - next
    - first
    argTypes:
    - struct lyd_node**
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 4
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: lyd_data_next_module
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 1
    functionsReached:
    - lyd_owner_module
    - LY_LIST_FOR
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      lyd_data_next_module(struct lyd_node **next, struct lyd_node **first)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:210,1
    - Dst: lyd_child
      Src: /src/libyang/src/tree_data_helpers.c:212,1
    - Dst: lys_getnext
      Src: /src/libyang/src/tree_data_helpers.c:213,1
    - Dst: LOGVAL
      Src: /src/libyang/src/tree_data_helpers.c:215,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts:
    - condition: (node->schema->nodetype == LYS_LIST)
      pos:
        line_end: 209
        line_start: 209
        source_file: /src/libyang/src/tree_data_helpers.c
    constantsTouched: []
    func_position:
      end: 223
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 223
    functionName: lyd_parse_check_keys
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 2
    functionsReached:
    - lys_getnext
    - LOGVAL
    - lyd_child
    - LYD_CTX
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_parse_check_keys(struct lyd_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lysc_has_when
      Src: /src/libyang/src/tree_data_helpers.c:231,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data_helpers.c:234,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data_helpers.c:234,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data_helpers.c:237,1
    - Dst: lysc_node_ext_tovalidate
      Src: /src/libyang/src/tree_data_helpers.c:237,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/tree_data_helpers.c:239,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data_helpers.c:240,1
    - Dst: strcmp
      Src: /src/libyang/src/tree_data_helpers.c:240,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/tree_data_helpers.c:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 5
    argNames:
    - node
    - when_check
    - exts_check
    - meta
    - options
    argTypes:
    - struct lyd_node*
    - struct ly_set*
    - struct ly_set*
    - struct lyd_meta**
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 225
    functionDepth: 5
    functionLinenumber: 225
    functionLinenumberEnd: 257
    functionName: lyd_parse_set_data_flags
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 4
    functionsReached:
    - lysc_has_when
    - strcmp
    - LY_LIST_FOR
    - lysc_node_ext_tovalidate
    - LY_CHECK_RET
    - ly_set_add
    - lyd_free_meta_single
    linkageType: ''
    returnType: void
    signature: "void lyd_parse_set_data_flags(struct lyd_node *node, struct ly_set
      *when_check, struct ly_set *exts_check, struct lyd_meta **meta,\n        uint32_t
      options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data_helpers.c:262,1
    - Dst: struct lyd_value*::realtype::plugin::print
      Src: /src/libyang/src/tree_data_helpers.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: lyd_value_get_canonical
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    - struct lyd_value*::realtype::plugin::print
    linkageType: ''
    returnType: API
    signature: 'API *

      lyd_value_get_canonical(const struct ly_ctx *ctx, const struct lyd_value *value)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data_helpers.c:277,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data_helpers.c:278,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/src/tree_data_helpers.c:291,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:291,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:292,1
    - Dst: lyd_print_mem
      Src: /src/libyang/src/tree_data_helpers.c:308,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:309,1
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:311,1
    - Dst: strdup
      Src: /src/libyang/src/tree_data_helpers.c:312,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:313,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:313,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:313,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/tree_data_helpers.c:320,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - any
    - value_str
    argTypes:
    - struct lyd_node*
    - char**
    assertStmts:
    - condition: (str)
      pos:
        line_end: 310
        line_start: 310
        source_file: /src/libyang/src/tree_data_helpers.c
    constantsTouched: []
    func_position:
      end: 323
      start: 268
    functionDepth: 12
    functionLinenumber: 268
    functionLinenumberEnd: 323
    functionName: lyd_any_value_str
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyd_print_mem
    - lyd_free_all
    - LY_CHECK_ARG_RET
    - strdup
    - lyd_parse_data_mem
    - LY_CHECK_GOTO
    - LYD_CTX
    - LOGMEM
    - assert
    linkageType: ''
    returnType: API
    signature: API lyd_any_value_str(const struct lyd_node *any, char **value_str)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data_helpers.c:330,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/tree_data_helpers.c:331,1
    - Dst: lyd_free_all
      Src: /src/libyang/src/tree_data_helpers.c:338,1
    - Dst: lydict_remove
      Src: /src/libyang/src/tree_data_helpers.c:343,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:343,1
    - Dst: free
      Src: /src/libyang/src/tree_data_helpers.c:346,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data_helpers.c:361,1
    - Dst: lyd_dup_siblings
      Src: /src/libyang/src/tree_data_helpers.c:361,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data_helpers.c:368,1
    - Dst: lydict_insert
      Src: /src/libyang/src/tree_data_helpers.c:368,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:368,1
    - Dst: lyd_lyb_data_length
      Src: /src/libyang/src/tree_data_helpers.c:373,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/tree_data_helpers.c:374,1
    - Dst: malloc
      Src: /src/libyang/src/tree_data_helpers.c:375,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/tree_data_helpers.c:376,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:376,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data_helpers.c:376,1
    - Dst: memcpy
      Src: /src/libyang/src/tree_data_helpers.c:377,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 3
    argNames:
    - trg
    - value
    - value_type
    argTypes:
    - struct lyd_node*
    - union lyd_any_value*
    - LYD_ANYDATA_VALUETYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 325
    functionDepth: 8
    functionLinenumber: 325
    functionLinenumberEnd: 383
    functionName: lyd_any_copy_value
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 4
    functionsReached:
    - lyd_free_all
    - LY_CHECK_ERR_RET
    - malloc
    - lyd_dup_siblings
    - LY_CHECK_ARG_RET
    - lyd_lyb_data_length
    - free
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert
    - LYD_CTX
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: API
    signature: API lyd_any_copy_value(struct lyd_node *trg, const union lyd_any_value
      *value, LYD_ANYDATA_VALUETYPE value_type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data_helpers.c:388,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data_helpers.c:398,1
    - Dst: lyd_owner_module
      Src: /src/libyang/src/tree_data_helpers.c:398,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/tree_data_helpers.c:400,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - root
    - to_del
    - mod
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 385
    functionDepth: 4
    functionLinenumber: 385
    functionLinenumberEnd: 402
    functionName: lyd_del_move_root
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 3
    functionsReached:
    - lyd_owner_module
    - lyd_first_sibling
    linkageType: ''
    returnType: void
    signature: void lyd_del_move_root(struct lyd_node **root, const struct lyd_node
      *to_del, const struct lys_module *mod)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/tree_data_helpers.c:420,1
    - Dst: free
      Src: /src/libyang/src/tree_data_helpers.c:421,1
    - Dst: ly_set_free
      Src: /src/libyang/src/tree_data_helpers.c:423,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_data_helpers.c:427,1
    - Dst: free
      Src: /src/libyang/src/tree_data_helpers.c:428,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/tree_data_helpers.c:430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - format
    - prefix_data
    argTypes:
    - LY_VALUE_FORMAT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 438
    functionName: ly_free_prefix_data
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 12
    functionsReached:
    - LY_ARRAY_FOR
    - LY_ARRAY_FREE
    - free
    - ly_set_free
    linkageType: ''
    returnType: void
    signature: void ly_free_prefix_data(LY_VALUE_FORMAT format, void *prefix_data)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:451,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:460,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/tree_data_helpers.c:460,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/tree_data_helpers.c:463,1
    - Dst: strdup
      Src: /src/libyang/src/tree_data_helpers.c:465,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:466,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:466,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/tree_data_helpers.c:469,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:474,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_data_helpers.c:474,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data_helpers.c:479,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:480,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:480,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:481,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data_helpers.c:481,1
    - Dst: strdup
      Src: /src/libyang/src/tree_data_helpers.c:484,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:485,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:485,1
    - Dst: strdup
      Src: /src/libyang/src/tree_data_helpers.c:487,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:488,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:488,1
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:494,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_data_helpers.c:501,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 4
    argNames:
    - ctx
    - format
    - prefix_data
    - prefix_data_p
    argTypes:
    - struct ly_ctx*
    - LY_VALUE_FORMAT
    - void*
    - void**
    assertStmts:
    - condition: (!*prefix_data_p)
      pos:
        line_end: 450
        line_start: 450
        source_file: /src/libyang/src/tree_data_helpers.c
    - condition: (!prefix_data)
      pos:
        line_end: 493
        line_start: 493
        source_file: /src/libyang/src/tree_data_helpers.c
    constantsTouched: []
    func_position:
      end: 505
      start: 440
    functionDepth: 2
    functionLinenumber: 440
    functionLinenumberEnd: 505
    functionName: ly_dup_prefix_data
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ly_free_prefix_data
    - LY_ARRAY_COUNT
    - ly_set_new
    - LY_ARRAY_CREATE_GOTO
    - strdup
    - LY_ARRAY_FOR
    - calloc
    - ly_set_add
    - LY_CHECK_GOTO
    - LY_ARRAY_INCREMENT
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_dup_prefix_data(const struct ly_ctx *ctx, LY_VALUE_FORMAT
      format, const void *prefix_data,\n        void **prefix_data_p)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:526,1
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:531,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:538,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/src/tree_data_helpers.c:538,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/tree_data_helpers.c:541,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/tree_data_helpers.c:543,1
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:545,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:547,1
    - Dst: strndup
      Src: /src/libyang/src/tree_data_helpers.c:550,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:551,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:551,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:562,1
    - Dst: ly_set_new
      Src: /src/libyang/src/tree_data_helpers.c:562,1
    - Dst: assert
      Src: /src/libyang/src/tree_data_helpers.c:567,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:574,1
    - Dst: ly_value_prefix_next
      Src: /src/libyang/src/tree_data_helpers.c:574,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/tree_data_helpers.c:577,1
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/tree_data_helpers.c:579,1
    - Dst: calloc
      Src: /src/libyang/src/tree_data_helpers.c:582,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:583,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:583,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:584,1
    - Dst: ly_set_add
      Src: /src/libyang/src/tree_data_helpers.c:584,1
    - Dst: strndup
      Src: /src/libyang/src/tree_data_helpers.c:586,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:587,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:587,1
    - Dst: strdup
      Src: /src/libyang/src/tree_data_helpers.c:588,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:589,1
    - Dst: LOGMEM
      Src: /src/libyang/src/tree_data_helpers.c:589,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/tree_data_helpers.c:602,1
    - Dst: ly_dup_prefix_data
      Src: /src/libyang/src/tree_data_helpers.c:602,1
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/tree_data_helpers.c:609,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 76
    argCount: 7
    argNames:
    - ctx
    - value
    - value_len
    - format
    - prefix_data
    - format_p
    - prefix_data_p
    argTypes:
    - struct ly_ctx*
    - void*
    - size_t
    - LY_VALUE_FORMAT
    - void*
    - LY_VALUE_FORMAT*
    - void**
    assertStmts:
    - condition: (*format_p == LY_VALUE_SCHEMA_RESOLVED)
      pos:
        line_end: 530
        line_start: 530
        source_file: /src/libyang/src/tree_data_helpers.c
    - condition: (*format_p == LY_VALUE_SCHEMA_RESOLVED)
      pos:
        line_end: 544
        line_start: 544
        source_file: /src/libyang/src/tree_data_helpers.c
    - condition: (*format_p == LY_VALUE_XML)
      pos:
        line_end: 566
        line_start: 566
        source_file: /src/libyang/src/tree_data_helpers.c
    constantsTouched: []
    func_position:
      end: 613
      start: 507
    functionDepth: 3
    functionLinenumber: 507
    functionLinenumberEnd: 613
    functionName: ly_store_prefix_data
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 4
    functionsReached:
    - ly_resolve_prefix
    - LY_CHECK_ERR_GOTO
    - ly_value_prefix_next
    - ly_free_prefix_data
    - ly_set_new
    - ly_dup_prefix_data
    - LY_ARRAY_NEW_GOTO
    - LY_ARRAY_CREATE_GOTO
    - strdup
    - lyxml_ns_get
    - calloc
    - ly_set_add
    - LY_CHECK_GOTO
    - strndup
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ly_store_prefix_data(const struct ly_ctx *ctx, const void *value,
      size_t value_len, LY_VALUE_FORMAT format,\n        const void *prefix_data,
      LY_VALUE_FORMAT *format_p, void **prefix_data_p)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - format
    argTypes:
    - LY_VALUE_FORMAT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 615
    functionDepth: 0
    functionLinenumber: 615
    functionLinenumberEnd: 636
    functionName: ly_format2str
    functionSourceFile: /src/libyang/src/tree_data_helpers.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_format2str(LY_VALUE_FORMAT format)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - START
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 186
    functionName: LYSC_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYSC_TREE_DFS_BEGIN(START, ELEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - START
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 208
    functionName: LYSC_TREE_DFS_END
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYSC_TREE_DFS_END(START, ELEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: LY_STMT_IS_OP
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_STMT_IS_OP(STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: LY_STMT_IS_DATA_NODE
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_STMT_IS_DATA_NODE(STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 291
    functionName: LY_STMT_IS_NODE
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_STMT_IS_NODE(STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - PMOD
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1381
    functionDepth: 0
    functionLinenumber: 1381
    functionLinenumberEnd: 1382
    functionName: LYSP_MODULE_NAME
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYSP_MODULE_NAME(PMOD)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lysc_node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1974
    functionDepth: 0
    functionLinenumber: 1974
    functionLinenumberEnd: 1976
    functionName: lysc_is_userordered
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lysc_is_userordered(lysc_node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lysc_node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1985
      start: 1983
    functionDepth: 0
    functionLinenumber: 1983
    functionLinenumberEnd: 1985
    functionName: lysc_is_key
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lysc_is_key(lysc_node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lysc_node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1992
    functionDepth: 0
    functionLinenumber: 1992
    functionLinenumberEnd: 1994
    functionName: lysc_is_np_cont
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lysc_is_np_cont(lysc_node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lysc_node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 2001
    functionDepth: 0
    functionLinenumber: 2001
    functionLinenumberEnd: 2004
    functionName: lysc_is_dup_inst_list
    functionSourceFile: /src/libyang/src/tree_schema.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lysc_is_dup_inst_list(lysc_node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: is_xmlws
    functionSourceFile: /src/libyang/src/xml.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_xmlws(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: is_xmlqnamestartchar
    functionSourceFile: /src/libyang/src/xml.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_xmlqnamestartchar(c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types.c:53,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types.c:60,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types.c:61,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - UNUSED(ctx)
    - prefix
    - prefix_len
    - prefix_data
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 69
    functionName: ly_schema_resolve_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - ly_strncmp
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_schema_resolve_prefix(const struct ly_ctx *UNUSED(ctx), const char *prefix,
      size_t prefix_len, const void *prefix_data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - UNUSED(ctx)
    - prefix
    - prefix_len
    - prefix_data
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 88
    functionName: ly_schema_resolved_resolve_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_strncmp
    linkageType: ''
    returnType: struct lys_module
    signature: "struct lys_module *\nly_schema_resolved_resolve_prefix(const struct
      ly_ctx *UNUSED(ctx), const char *prefix, size_t prefix_len,\n        const void
      *prefix_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 45
    functionsReached:
    - ly_strncmp
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(prefixes, u)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyxml_ns_get
      Src: /src/libyang/src/plugins_types.c:100,1
    - Dst: ly_ctx_get_module_implemented_ns
      Src: /src/libyang/src/plugins_types.c:105,1
    - Dst: ly_ctx_get_module_latest_ns
      Src: /src/libyang/src/plugins_types.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - prefix
    - prefix_len
    - prefix_data
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 93
    functionDepth: 3
    functionLinenumber: 93
    functionLinenumberEnd: 111
    functionName: ly_xml_resolve_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - lyxml_ns_get
    - ly_ctx_get_module_latest_ns
    - ly_ctx_get_module_implemented_ns
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_xml_resolve_prefix(const struct ly_ctx *ctx, const char *prefix, size_t prefix_len,
      const void *prefix_data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_implemented2
      Src: /src/libyang/src/plugins_types.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ctx
    - prefix
    - prefix_len
    - UNUSED(prefix_data)
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: ly_json_resolve_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_ctx_get_module_implemented2
    linkageType: ''
    returnType: struct lys_module
    signature: 'struct lys_module *

      ly_json_resolve_prefix(const struct ly_ctx *ctx, const char *prefix, size_t
      prefix_len, const void *UNUSED(prefix_data))'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:128,1
    - Dst: ly_schema_resolve_prefix
      Src: /src/libyang/src/plugins_types.c:132,1
    - Dst: ly_schema_resolved_resolve_prefix
      Src: /src/libyang/src/plugins_types.c:135,1
    - Dst: ly_xml_resolve_prefix
      Src: /src/libyang/src/plugins_types.c:138,1
    - Dst: ly_json_resolve_prefix
      Src: /src/libyang/src/plugins_types.c:143,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - ctx
    - prefix
    - prefix_len
    - format
    - prefix_data
    argTypes:
    - struct ly_ctx*
    - void*
    - size_t
    - LY_VALUE_FORMAT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 122
    functionDepth: 4
    functionLinenumber: 122
    functionLinenumberEnd: 148
    functionName: ly_resolve_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 12
    functionsReached:
    - ly_xml_resolve_prefix
    - LY_CHECK_ARG_RET
    - ly_schema_resolved_resolve_prefix
    - ly_schema_resolve_prefix
    - ly_json_resolve_prefix
    linkageType: ''
    returnType: struct lys_module
    signature: "struct lys_module *\nly_resolve_prefix(const struct ly_ctx *ctx, const
      void *prefix, size_t prefix_len, LY_VALUE_FORMAT format,\n        const void
      *prefix_data)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/plugins_types.c:155,1
    - Dst: ly_xml_resolve_prefix
      Src: /src/libyang/src/plugins_types.c:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 6
    argNames:
    - ctx
    - ctx_node
    - prefix
    - prefix_len
    - format
    - prefix_data
    argTypes:
    - struct ly_ctx*
    - struct lysc_node*
    - char*
    - size_t
    - LY_VALUE_FORMAT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 150
    functionDepth: 5
    functionLinenumber: 150
    functionLinenumberEnd: 174
    functionName: lyplg_type_identity_module
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - ly_xml_resolve_prefix
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_identity_module(const struct ly_ctx *ctx, const
      struct lysc_node *ctx_node,\n        const char *prefix, size_t prefix_len,
      LY_VALUE_FORMAT format, const void *prefix_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types.c:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - mod
    - prefix_data
    argTypes:
    - struct lys_module*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 201
    functionName: ly_schema_get_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_schema_get_prefix(const struct lys_module *mod, void *prefix_data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - mod
    - prefix_data
    argTypes:
    - struct lys_module*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 219
    functionName: ly_schema_resolved_get_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_schema_resolved_get_prefix(const struct lys_module *mod, void *prefix_data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(prefixes, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types.c:229,1
    - Dst: ly_set_add
      Src: /src/libyang/src/plugins_types.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - mod
    - prefix_data
    argTypes:
    - struct lys_module*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 231
    functionName: ly_xml_get_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_set_add
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_xml_get_prefix(const struct lys_module *mod, void *prefix_data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - mod
    - UNUSED(prefix_data)
    argTypes:
    - struct lys_module*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: ly_json_get_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_json_get_prefix(const struct lys_module *mod, void *UNUSED(prefix_data))'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ly_schema_get_prefix
      Src: /src/libyang/src/plugins_types.c:249,1
    - Dst: ly_schema_resolved_get_prefix
      Src: /src/libyang/src/plugins_types.c:252,1
    - Dst: ly_xml_get_prefix
      Src: /src/libyang/src/plugins_types.c:255,1
    - Dst: ly_json_get_prefix
      Src: /src/libyang/src/plugins_types.c:260,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - mod
    - format
    - prefix_data
    argTypes:
    - struct lys_module*
    - LY_VALUE_FORMAT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 265
    functionName: ly_get_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_json_get_prefix
    - ly_schema_get_prefix
    - ly_xml_get_prefix
    - ly_schema_resolved_get_prefix
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_get_prefix(const struct lys_module *mod, LY_VALUE_FORMAT format, void *prefix_data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_get_prefix
      Src: /src/libyang/src/plugins_types.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - mod
    - format
    - prefix_data
    argTypes:
    - struct lys_module*
    - LY_VALUE_FORMAT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 3
    functionLinenumber: 267
    functionLinenumberEnd: 271
    functionName: lyplg_type_get_prefix
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_get_prefix
    linkageType: ''
    returnType: API
    signature: 'API *

      lyplg_type_get_prefix(const struct lys_module *mod, LY_VALUE_FORMAT format,
      void *prefix_data)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 285
    functionName: lyplg_type_compare_simple
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_simple(const struct lyd_value *val1, const struct
      lyd_value *val2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types.c:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - UNUSED
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: lyplg_type_print_simple
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_simple(const struct ly_ctx *UNUSED(ctx), const
      struct lyd_value *value, LY_VALUE_FORMAT UNUSED(format),\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types.c:303,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types.c:303,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types.c:303,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types.c:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 4
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: lyplg_type_dup_simple
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - strlen
    - lydict_insert
    - memcpy
    linkageType: ''
    returnType: API
    signature: API lyplg_type_dup_simple(const struct ly_ctx *ctx, const struct lyd_value
      *original, struct lyd_value *dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 309
    functionDepth: 3
    functionLinenumber: 309
    functionLinenumberEnd: 314
    functionName: lyplg_type_free_simple
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - lydict_remove
    linkageType: ''
    returnType: API
    signature: API lyplg_type_free_simple(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:320,1
    - Dst: isspace
      Src: /src/libyang/src/plugins_types.c:325,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:328,1
    - Dst: ly_parse_int
      Src: /src/libyang/src/plugins_types.c:331,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:333,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 8
    argNames:
    - datatype
    - base
    - min
    - max
    - value
    - value_len
    - ret
    - err
    argTypes:
    - char*
    - int
    - int64_t
    - int64_t
    - char*
    - size_t
    - int64_t*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 339
    functionName: lyplg_type_parse_int
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_parse_int
    - isspace
    - ly_err_new
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_parse_int(const char *datatype, int base, int64_t min,
      int64_t max, const char *value, size_t value_len,\n        int64_t *ret, struct
      ly_err_item **err)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:345,1
    - Dst: isspace
      Src: /src/libyang/src/plugins_types.c:350,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:353,1
    - Dst: ly_parse_uint
      Src: /src/libyang/src/plugins_types.c:357,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:359,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:364,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 7
    argNames:
    - datatype
    - base
    - max
    - value
    - value_len
    - ret
    - err
    argTypes:
    - char*
    - int
    - uint64_t
    - char*
    - size_t
    - uint64_t*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 367
    functionName: lyplg_type_parse_uint
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - isspace
    - ly_parse_uint
    - ly_err_new
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_parse_uint(const char *datatype, int base, uint64_t
      max, const char *value, size_t value_len, uint64_t *ret,\n        struct ly_err_item
      **err)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/libyang/src/plugins_types.c:380,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:384,1
    - Dst: isdigit
      Src: /src/libyang/src/plugins_types.c:385,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:386,1
    - Dst: isdigit
      Src: /src/libyang/src/plugins_types.c:394,1
    - Dst: isdigit
      Src: /src/libyang/src/plugins_types.c:399,1
    - Dst: isdigit
      Src: /src/libyang/src/plugins_types.c:404,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:416,1
    - Dst: isspace
      Src: /src/libyang/src/plugins_types.c:429,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:431,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types.c:437,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:439,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types.c:444,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types.c:445,1
    - Dst: memset
      Src: /src/libyang/src/plugins_types.c:447,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types.c:449,1
    - Dst: memset
      Src: /src/libyang/src/plugins_types.c:451,1
    - Dst: lyplg_type_parse_int
      Src: /src/libyang/src/plugins_types.c:454,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types.c:454,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types.c:454,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types.c:455,1
    - Dst: free
      Src: /src/libyang/src/plugins_types.c:459,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 68
    argCount: 5
    argNames:
    - fraction_digits
    - value
    - value_len
    - ret
    - err
    argTypes:
    - uint8_t
    - char*
    - size_t
    - int64_t*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 462
    functionName: lyplg_type_parse_dec64
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - isdigit
    - memset
    - malloc
    - INT64_C
    - free
    - ly_err_new
    - isspace
    - memcpy
    - lyplg_type_parse_int
    linkageType: ''
    returnType: API
    signature: API lyplg_type_parse_dec64(uint8_t fraction_digits, const char *value,
      size_t value_len, int64_t *ret, struct ly_err_item **err)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:471,1
    - Dst: pcre2_match_data_create_from_pattern
      Src: /src/libyang/src/plugins_types.c:477,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:479,1
    - Dst: pcre2_match
      Src: /src/libyang/src/plugins_types.c:487,1
    - Dst: pcre2_match_data_free
      Src: /src/libyang/src/plugins_types.c:488,1
    - Dst: pcre2_get_error_message
      Src: /src/libyang/src/plugins_types.c:492,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:494,1
    - Dst: strdup
      Src: /src/libyang/src/plugins_types.c:497,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:500,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:503,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - patterns
    - str
    - str_len
    - err
    argTypes:
    - struct lysc_pattern**
    - char*
    - size_t
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 464
    functionDepth: 2
    functionLinenumber: 464
    functionLinenumberEnd: 509
    functionName: lyplg_type_validate_patterns
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - pcre2_match
    - LY_CHECK_ARG_RET
    - ly_err_new
    - pcre2_get_error_message
    - strdup
    - pcre2_match_data_create_from_pattern
    - pcre2_match_data_free
    linkageType: ''
    returnType: API
    signature: API lyplg_type_validate_patterns(struct lysc_pattern **patterns, const
      char *str, size_t str_len, struct ly_err_item **err)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pcre2_match_data_create_from_pattern
      Src: /src/libyang/src/plugins_types.c:477,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:479,1
    - Dst: pcre2_match
      Src: /src/libyang/src/plugins_types.c:487,1
    - Dst: pcre2_match_data_free
      Src: /src/libyang/src/plugins_types.c:488,1
    - Dst: pcre2_get_error_message
      Src: /src/libyang/src/plugins_types.c:492,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:494,1
    - Dst: strdup
      Src: /src/libyang/src/plugins_types.c:497,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:500,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:503,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 475
    functionDepth: 2
    functionLinenumber: 475
    functionLinenumberEnd: 507
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 46
    functionsReached:
    - pcre2_match
    - pcre2_get_error_message
    - ly_err_new
    - strdup
    - pcre2_match_data_create_from_pattern
    - pcre2_match_data_free
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(patterns, u)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types.c:521,1
    - Dst: strdup
      Src: /src/libyang/src/plugins_types.c:525,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:527,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:529,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types.c:535,1
    - Dst: strdup
      Src: /src/libyang/src/plugins_types.c:537,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:539,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:541,1
    - Dst: strdup
      Src: /src/libyang/src/plugins_types.c:548,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:550,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:552,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types.c:557,1
    - Dst: strdup
      Src: /src/libyang/src/plugins_types.c:559,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:561,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:563,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 6
    argNames:
    - basetype
    - range
    - value
    - strval
    - strval_len
    - err
    argTypes:
    - LY_DATA_TYPE
    - struct lysc_range*
    - int64_t
    - char*
    - size_t
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 570
    functionName: lyplg_type_validate_range
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - strdup
    - LY_ARRAY_FOR
    - LY_ARRAY_COUNT
    - ly_err_new
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_validate_range(LY_DATA_TYPE basetype, struct lysc_range
      *range, int64_t value, const char *strval,\n        size_t strval_len, struct
      ly_err_item **err)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:576,1
    - Dst: ly_store_prefix_data
      Src: /src/libyang/src/plugins_types.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - ctx
    - value
    - value_len
    - format
    - prefix_data
    - format_p
    - prefix_data_p
    argTypes:
    - struct ly_ctx*
    - void*
    - size_t
    - LY_VALUE_FORMAT
    - void*
    - LY_VALUE_FORMAT*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 572
    functionDepth: 4
    functionLinenumber: 572
    functionLinenumberEnd: 580
    functionName: lyplg_type_prefix_data_new
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_store_prefix_data
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_prefix_data_new(const struct ly_ctx *ctx, const void
      *value, size_t value_len, LY_VALUE_FORMAT format,\n        const void *prefix_data,
      LY_VALUE_FORMAT *format_p, void **prefix_data_p)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:585,1
    - Dst: ly_dup_prefix_data
      Src: /src/libyang/src/plugins_types.c:592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - format
    - orig
    - dup
    argTypes:
    - struct ly_ctx*
    - LY_VALUE_FORMAT
    - void*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 593
    functionName: lyplg_type_prefix_data_dup
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    - ly_dup_prefix_data
    linkageType: ''
    returnType: API
    signature: API lyplg_type_prefix_data_dup(const struct ly_ctx *ctx, LY_VALUE_FORMAT
      format, const void *orig, void **dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_free_prefix_data
      Src: /src/libyang/src/plugins_types.c:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - format
    - prefix_data
    argTypes:
    - LY_VALUE_FORMAT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 595
    functionDepth: 2
    functionLinenumber: 595
    functionLinenumberEnd: 599
    functionName: lyplg_type_prefix_data_free
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_free_prefix_data
    linkageType: ''
    returnType: API
    signature: API lyplg_type_prefix_data_free(LY_VALUE_FORMAT format, void *prefix_data)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - hints
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 616
    functionName: type_get_hints_base
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int type_get_hints_base(uint32_t hints)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:621,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:635,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:638,1
    - Dst: lys_datatype2str
      Src: /src/libyang/src/plugins_types.c:639,1
    - Dst: type_get_hints_base
      Src: /src/libyang/src/plugins_types.c:641,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:645,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:648,1
    - Dst: lys_datatype2str
      Src: /src/libyang/src/plugins_types.c:649,1
    - Dst: type_get_hints_base
      Src: /src/libyang/src/plugins_types.c:651,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:661,1
    - Dst: lys_datatype2str
      Src: /src/libyang/src/plugins_types.c:662,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:667,1
    - Dst: lys_datatype2str
      Src: /src/libyang/src/plugins_types.c:668,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:673,1
    - Dst: lys_datatype2str
      Src: /src/libyang/src/plugins_types.c:674,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/plugins_types.c:680,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 6
    argNames:
    - hints
    - value
    - value_len
    - type
    - base
    - err
    argTypes:
    - uint32_t
    - char*
    - size_t
    - LY_DATA_TYPE
    - int*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 684
    functionName: lyplg_type_check_hints
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LOGINT_RET
    - LY_CHECK_ARG_RET
    - type_get_hints_base
    - lys_datatype2str
    - ly_err_new
    linkageType: ''
    returnType: API
    signature: API lyplg_type_check_hints(uint32_t hints, const char *value, size_t
      value_len, LY_DATA_TYPE type, int *base, struct ly_err_item **err)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types.c:695,1
    - Dst: ly_path_parse
      Src: /src/libyang/src/plugins_types.c:714,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:717,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types.c:724,1
    - Dst: lys_compile_expr_implement
      Src: /src/libyang/src/plugins_types.c:724,1
    - Dst: ly_path_compile
      Src: /src/libyang/src/plugins_types.c:728,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types.c:731,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/plugins_types.c:737,1
    - Dst: ly_path_free
      Src: /src/libyang/src/plugins_types.c:739,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 10
    argNames:
    - ctx
    - value
    - value_len
    - options
    - format
    - prefix_data
    - ctx_node
    - unres
    - path
    - err
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - struct lysc_node*
    - struct lys_glob_unres*
    - struct ly_path**
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 686
    functionDepth: 10
    functionLinenumber: 686
    functionLinenumberEnd: 744
    functionName: lyplg_type_lypath_new
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - lyxp_expr_free
    - ly_path_free
    - LY_CHECK_ARG_RET
    - ly_err_new
    - ly_path_parse
    - ly_path_compile
    - lys_compile_expr_implement
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_lypath_new(const struct ly_ctx *ctx, const char *value,
      size_t value_len, uint32_t options,\n        LY_VALUE_FORMAT format, void *prefix_data,
      const struct lysc_node *ctx_node, struct lys_glob_unres *unres,\n        struct
      ly_path **path, struct ly_err_item **err)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_path_free
      Src: /src/libyang/src/plugins_types.c:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - struct ly_ctx*
    - struct ly_path*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 746
    functionDepth: 4
    functionLinenumber: 746
    functionLinenumberEnd: 750
    functionName: lyplg_type_lypath_free
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - ly_path_free
    linkageType: ''
    returnType: API
    signature: API lyplg_type_lypath_free(const struct ly_ctx *ctx, struct ly_path
      *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types.c:755,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/plugins_types.c:755,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mod
    - features
    - unres
    argTypes:
    - struct lys_module*
    - char**
    - struct lys_glob_unres*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 752
    functionDepth: 7
    functionLinenumber: 752
    functionLinenumberEnd: 762
    functionName: lyplg_type_make_implemented
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lys_set_implemented_r
    linkageType: ''
    returnType: API
    signature: API lyplg_type_make_implemented(struct lys_module *mod, const char
      **features, struct lys_glob_unres *unres)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types.c:769,1
    - Dst: lyplg_type_identity_isderived
      Src: /src/libyang/src/plugins_types.c:773,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - base
    - der
    argTypes:
    - struct lysc_ident*
    - struct lysc_ident*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 778
    functionName: lyplg_type_identity_isderived
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 1
    functionsReached:
    - LY_ARRAY_FOR
    - lyplg_type_identity_isderived
    linkageType: ''
    returnType: API
    signature: API lyplg_type_identity_isderived(const struct lysc_ident *base, const
      struct lysc_ident *der)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_eval
      Src: /src/libyang/src/plugins_types.c:791,1
    - Dst: struct lysc_type_leafref*::plugin::print
      Src: /src/libyang/src/plugins_types.c:795,1
    - Dst: asprintf
      Src: /src/libyang/src/plugins_types.c:796,1
    - Dst: struct lysc_type_leafref*::plugin::compare
      Src: /src/libyang/src/plugins_types.c:809,1
    - Dst: struct lysc_type_leafref*::plugin::print
      Src: /src/libyang/src/plugins_types.c:815,1
    - Dst: asprintf
      Src: /src/libyang/src/plugins_types.c:817,1
    - Dst: asprintf
      Src: /src/libyang/src/plugins_types.c:819,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/plugins_types.c:832,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/plugins_types.c:836,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 6
    argNames:
    - lref
    - node
    - value
    - tree
    - target
    - errmsg
    argTypes:
    - struct lysc_type_leafref*
    - struct lyd_node*
    - struct lyd_value*
    - struct lyd_node*
    - struct lyd_node**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 838
    functionName: lyplg_type_resolve_leafref
    functionSourceFile: /src/libyang/src/plugins_types.c
    functionUses: 0
    functionsReached:
    - asprintf
    - struct lysc_type_leafref*::plugin::print
    - lyxp_set_free_content
    - struct lysc_type_leafref*::plugin::compare
    - lyxp_eval
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_resolve_leafref(const struct lysc_type_leafref *lref,
      const struct lyd_node *node, struct lyd_value *value,\n        const struct
      lyd_node *tree, struct lyd_node **target, char **errmsg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 75
    functionName: print_set_type
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      print_set_type(struct lyxp_set *set)'
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 48
    argCount: 1
    argNames:
    - tok
    argTypes:
    - enum lyxp_token
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 127
    functionName: lyxp_print_token
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 2
    functionsReached:
    - LOGINT
    linkageType: ''
    returnType: char
    signature: 'char *

      lyxp_print_token(enum lyxp_token tok)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:145,1
    - Dst: sprintf
      Src: /src/libyang/src/xpath.c:147,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:147,1
    - Dst: sprintf
      Src: /src/libyang/src/xpath.c:150,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:150,1
    - Dst: sprintf
      Src: /src/libyang/src/xpath.c:152,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:152,1
    - Dst: strcat
      Src: /src/libyang/src/xpath.c:154,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:156,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - exp
    argTypes:
    - struct lyxp_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 159
    functionName: print_expr_struct_debug
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - sprintf
    - LOGDBG
    - strcat
    - lyxp_print_token
    linkageType: ''
    returnType: void
    signature: void print_expr_struct_debug(const struct lyxp_expr *exp)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:182,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:188,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:191,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:194,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:197,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:198,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/xpath.c:199,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:199,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:201,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/xpath.c:202,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:204,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:209,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:212,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/xpath.c:212,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:216,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:224,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:230,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:233,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:236,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:239,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:246,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:247,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:251,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:252,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:256,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:258,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:259,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:261,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:262,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:262,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:263,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:264,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:264,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:265,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:267,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:271,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:275,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:275,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:277,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:278,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 97
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 280
    functionName: print_set_debug
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - isnan
    - LOGINT
    - asprintf
    - free
    - signbit
    - strdup
    - LOGDBG
    - lyd_child
    - lyd_get_value
    - isinf
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: void print_set_debug(struct lyxp_set *set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOGERR
      Src: /src/libyang/src/xpath.c:300,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:305,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:306,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - ctx
    - needed
    - str
    - used
    - size
    argTypes:
    - struct ly_ctx*
    - uint16_t
    - char**
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 310
    functionName: cast_string_realloc
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LOGMEM
    - ly_realloc
    - LOGERR
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR cast_string_realloc(const struct ly_ctx *ctx, uint16_t needed,
      char **str, uint16_t *used, uint16_t *size)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: cast_string_realloc
      Src: /src/libyang/src/xpath.c:340,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:340,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:341,1
    - Dst: strcpy
      Src: /src/libyang/src/xpath.c:342,1
    - Dst: cast_string_realloc
      Src: /src/libyang/src/xpath.c:353,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:353,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:354,1
    - Dst: strcpy
      Src: /src/libyang/src/xpath.c:355,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:358,1
    - Dst: cast_string_recursive
      Src: /src/libyang/src/xpath.c:359,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:360,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/xpath.c:367,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:370,1
    - Dst: cast_string_realloc
      Src: /src/libyang/src/xpath.c:370,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:370,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:370,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:371,1
    - Dst: sprintf
      Src: /src/libyang/src/xpath.c:376,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:377,1
    - Dst: sprintf
      Src: /src/libyang/src/xpath.c:379,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:380,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:390,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:391,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:391,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:391,1
    - Dst: lyd_parse_data_mem
      Src: /src/libyang/src/xpath.c:397,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:397,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:399,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:410,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:411,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:411,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:411,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:414,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/src/xpath.c:414,1
    - Dst: lyd_print_all
      Src: /src/libyang/src/xpath.c:415,1
    - Dst: ly_out_free
      Src: /src/libyang/src/xpath.c:416,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:417,1
    - Dst: LOGERR
      Src: /src/libyang/src/xpath.c:420,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:420,1
    - Dst: strtok_r
      Src: /src/libyang/src/xpath.c:425,1
    - Dst: cast_string_realloc
      Src: /src/libyang/src/xpath.c:427,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:427,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:427,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:429,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:432,1
    - Dst: strcpy
      Src: /src/libyang/src/xpath.c:435,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:436,1
    - Dst: strcpy
      Src: /src/libyang/src/xpath.c:438,1
    - Dst: strtok_r
      Src: /src/libyang/src/xpath.c:440,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:442,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:446,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:446,1
    - Dst: cast_string_realloc
      Src: /src/libyang/src/xpath.c:450,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:450,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:451,1
    - Dst: strcpy
      Src: /src/libyang/src/xpath.c:452,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 98
    argCount: 7
    argNames:
    - node
    - fake_cont
    - root_type
    - indent
    - str
    - used
    - size
    argTypes:
    - struct lyd_node*
    - ly_bool
    - enum lyxp_node_type
    - uint16_t
    - char**
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 324
    functionDepth: 12
    functionLinenumber: 324
    functionLinenumberEnd: 459
    functionName: cast_string_recursive
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - LOGERR
    - LY_CHECK_RET
    - strdup
    - lyd_parse_data_mem
    - memset
    - cast_string_realloc
    - ly_out_free
    - cast_string_recursive
    - strcpy
    - free
    - sprintf
    - LYD_CTX
    - LOGMEM
    - LOGINT_RET
    - lyd_print_all
    - lyd_child
    - strtok_r
    - lyd_get_value
    - ly_out_new_memory
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR cast_string_recursive(const struct lyd_node *node, ly_bool
      fake_cont, enum lyxp_node_type root_type, uint16_t indent, char **str,\n        uint16_t
      *used, uint16_t *size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:476,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:477,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:477,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:477,1
    - Dst: cast_string_recursive
      Src: /src/libyang/src/xpath.c:482,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:484,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:489,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:490,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:490,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:490,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - node
    - fake_cont
    - root_type
    - str
    argTypes:
    - struct lyd_node*
    - ly_bool
    - enum lyxp_node_type
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 470
    functionDepth: 13
    functionLinenumber: 470
    functionLinenumberEnd: 493
    functionName: cast_string_elem
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - cast_string_recursive
    - LY_CHECK_ERR_RET
    - malloc
    - free
    - ly_realloc
    - LYD_CTX
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR cast_string_elem(struct lyd_node *node, ly_bool fake_cont, enum
      lyxp_node_type root_type, char **str)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:507,1
    - Dst: LOGMEM_RET
      Src: /src/libyang/src/xpath.c:509,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:517,1
    - Dst: cast_string_elem
      Src: /src/libyang/src/xpath.c:520,1
    - Dst: cast_string_elem
      Src: /src/libyang/src/xpath.c:523,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:525,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/xpath.c:525,1
    - Dst: LOGMEM_RET
      Src: /src/libyang/src/xpath.c:527,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:532,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - set
    - str
    argTypes:
    - struct lyxp_set*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 503
    functionDepth: 14
    functionLinenumber: 503
    functionLinenumberEnd: 533
    functionName: cast_node_set_to_string
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LOGINT_RET
    - strdup
    - LOGMEM_RET
    - lyd_get_meta_value
    - cast_string_elem
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR cast_node_set_to_string(struct lyxp_set *set, char **str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtold
      Src: /src/libyang/src/xpath.c:548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 553
    functionName: cast_string_to_number
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strtold
    linkageType: ''
    returnType: long double
    signature: long double cast_string_to_number(const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - val1_p
    - val2_p
    - UNUSED
    - UNUSED(cb_data)
    argTypes:
    - void*
    - void*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 579
    functionName: set_values_equal_cb
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool set_values_equal_cb(void *val1_p, void *val2_p, ly_bool UNUSED(mod),
      void *UNUSED(cb_data))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyht_new
      Src: /src/libyang/src/xpath.c:597,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:602,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:603,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:604,1
    - Dst: lyht_insert
      Src: /src/libyang/src/xpath.c:606,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:607,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:622,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:623,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:624,1
    - Dst: lyht_insert
      Src: /src/libyang/src/xpath.c:626,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:627,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - set
    - node
    - type
    argTypes:
    - struct lyxp_set*
    - struct lyd_node*
    - enum lyxp_node_type
    assertStmts:
    - condition: (!r)
      pos:
        line_end: 606
        line_start: 606
        source_file: /src/libyang/src/xpath.c
    - condition: (!r)
      pos:
        line_end: 626
        line_start: 626
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 630
      start: 588
    functionDepth: 6
    functionLinenumber: 588
    functionLinenumberEnd: 630
    functionName: set_insert_node_hash
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - dict_hash_multi
    - lyht_insert
    - assert
    - lyht_new
    linkageType: ''
    returnType: void
    signature: void set_insert_node_hash(struct lyxp_set *set, struct lyd_node *node,
      enum lyxp_node_type type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:650,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:651,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:652,1
    - Dst: lyht_remove
      Src: /src/libyang/src/xpath.c:654,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:655,1
    - Dst: lyht_free
      Src: /src/libyang/src/xpath.c:659,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - set
    - node
    - type
    argTypes:
    - struct lyxp_set*
    - struct lyd_node*
    - enum lyxp_node_type
    assertStmts:
    - condition: (!r)
      pos:
        line_end: 654
        line_start: 654
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 663
      start: 639
    functionDepth: 4
    functionLinenumber: 639
    functionLinenumberEnd: 663
    functionName: set_remove_node_hash
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyht_remove
    - dict_hash_multi
    - assert
    - lyht_free
    linkageType: ''
    returnType: void
    signature: void set_remove_node_hash(struct lyxp_set *set, struct lyd_node *node,
      enum lyxp_node_type type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:683,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:684,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:685,1
    - Dst: lyht_find
      Src: /src/libyang/src/xpath.c:687,1
    - Dst: lyht_find_next
      Src: /src/libyang/src/xpath.c:691,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - set
    - node
    - type
    - skip_idx
    argTypes:
    - struct lyxp_set*
    - struct lyd_node*
    - enum lyxp_node_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 674
    functionDepth: 4
    functionLinenumber: 674
    functionLinenumberEnd: 702
    functionName: set_dup_node_hash_check
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyht_find
    - dict_hash_multi
    - lyht_find_next
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR set_dup_node_hash_check(const struct lyxp_set *set, struct lyd_node
      *node, enum lyxp_node_type type, int skip_idx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/xpath.c:712,1
    - Dst: lyht_free
      Src: /src/libyang/src/xpath.c:713,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:715,1
    - Dst: lyht_free
      Src: /src/libyang/src/xpath.c:716,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:719,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 730
    functionName: lyxp_set_free_content
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 8
    functionsReached:
    - free
    - lyht_free
    linkageType: ''
    returnType: void
    signature: void lyxp_set_free_content(struct lyxp_set *set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:744,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 737
    functionDepth: 2
    functionLinenumber: 737
    functionLinenumberEnd: 746
    functionName: lyxp_set_free
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - free
    - lyxp_set_free_content
    linkageType: ''
    returnType: void
    signature: void lyxp_set_free(struct lyxp_set *set)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - new
    - set
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 768
    functionName: set_init
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_init(struct lyxp_set *new, const struct lyxp_set *set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:786,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:787,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:787,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:788,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:797,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:797,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:798,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:801,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:809,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:810,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:810,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:810,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:811,1
    - Dst: lyht_dup
      Src: /src/libyang/src/xpath.c:817,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:820,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:822,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:823,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:823,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:823,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 776
    functionDepth: 3
    functionLinenumber: 776
    functionLinenumberEnd: 828
    functionName: set_copy
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - set_init
    - malloc
    - free
    - lyxp_set_free
    - strdup
    - lyxp_set_scnode_insert_node
    - lyht_dup
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: struct lyxp_set
    signature: 'struct lyxp_set *

      set_copy(struct lyxp_set *set)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:840,1
    - Dst: strndup
      Src: /src/libyang/src/xpath.c:846,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - set
    - string
    - str_len
    argTypes:
    - struct lyxp_set*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 837
    functionDepth: 2
    functionLinenumber: 837
    functionLinenumberEnd: 847
    functionName: set_fill_string
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strndup
    - lyxp_set_free_content
    linkageType: ''
    returnType: void
    signature: void set_fill_string(struct lyxp_set *set, const char *string, uint16_t
      str_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - set
    - number
    argTypes:
    - struct lyxp_set*
    - long double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 855
    functionDepth: 2
    functionLinenumber: 855
    functionLinenumberEnd: 862
    functionName: set_fill_number
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyxp_set_free_content
    linkageType: ''
    returnType: void
    signature: void set_fill_number(struct lyxp_set *set, long double number)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - set
    - boolean
    argTypes:
    - struct lyxp_set*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 870
    functionDepth: 2
    functionLinenumber: 870
    functionLinenumberEnd: 877
    functionName: set_fill_boolean
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyxp_set_free_content
    linkageType: ''
    returnType: void
    signature: void set_fill_boolean(struct lyxp_set *set, ly_bool boolean)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/libyang/src/xpath.c:894,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:896,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:898,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:905,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:906,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:906,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:906,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:907,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:909,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:911,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:913,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:913,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:916,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:918,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:921,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:929,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:930,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:930,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:930,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:931,1
    - Dst: lyht_dup
      Src: /src/libyang/src/xpath.c:933,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 2
    argNames:
    - trg
    - src
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    assertStmts:
    - condition: (src->type == LYXP_SET_NODE_SET)
      pos:
        line_end: 920
        line_start: 920
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 938
      start: 886
    functionDepth: 3
    functionLinenumber: 886
    functionLinenumberEnd: 938
    functionName: set_fill_set
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - assert
    - strlen
    - LY_CHECK_ERR_RET
    - set_init
    - memset
    - malloc
    - set_fill_boolean
    - set_fill_number
    - free
    - lyht_dup
    - set_fill_string
    - ly_realloc
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: void
    signature: void set_fill_set(struct lyxp_set *trg, const struct lyxp_set *src)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - set
    - new_ctx
    argTypes:
    - struct lyxp_set*
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 946
    functionDepth: 0
    functionLinenumber: 946
    functionLinenumberEnd: 958
    functionName: set_scnode_clear_ctx
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_scnode_clear_ctx(struct lyxp_set *set, int32_t new_ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:970,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:971,1
    - Dst: set_remove_node_hash
      Src: /src/libyang/src/xpath.c:973,1
    - Dst: memmove
      Src: /src/libyang/src/xpath.c:977,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:980,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - set
    - idx
    argTypes:
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (set && (set->type == LYXP_SET_NODE_SET))
      pos:
        line_end: 969
        line_start: 969
        source_file: /src/libyang/src/xpath.c
    - condition: (idx < set->used)
      pos:
        line_end: 970
        line_start: 970
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 982
      start: 967
    functionDepth: 5
    functionLinenumber: 967
    functionLinenumberEnd: 982
    functionName: set_remove_node
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyxp_set_free_content
    - set_remove_node_hash
    - assert
    - memmove
    linkageType: ''
    returnType: void
    signature: void set_remove_node(struct lyxp_set *set, uint32_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:993,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:994,1
    - Dst: set_remove_node_hash
      Src: /src/libyang/src/xpath.c:997,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - set
    - idx
    argTypes:
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (set && (set->type == LYXP_SET_NODE_SET))
      pos:
        line_end: 992
        line_start: 992
        source_file: /src/libyang/src/xpath.c
    - condition: (idx < set->used)
      pos:
        line_end: 993
        line_start: 993
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1000
      start: 990
    functionDepth: 5
    functionLinenumber: 990
    functionLinenumberEnd: 1000
    functionName: set_remove_node_none
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_remove_node_hash
    - assert
    linkageType: ''
    returnType: void
    signature: void set_remove_node_none(struct lyxp_set *set, uint32_t idx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1014,1
    - Dst: memmove
      Src: /src/libyang/src/xpath.c:1038,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts:
    - condition: (set)
      pos:
        line_end: 1013
        line_start: 1013
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1043
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1043
    functionName: set_remove_nodes_none
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - assert
    - memmove
    linkageType: ''
    returnType: void
    signature: void set_remove_nodes_none(struct lyxp_set *set)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: set_dup_node_hash_check
      Src: /src/libyang/src/xpath.c:1060,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 4
    argNames:
    - set
    - node
    - node_type
    - skip_idx
    argTypes:
    - struct lyxp_set*
    - struct lyd_node*
    - enum lyxp_node_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1054
    functionDepth: 5
    functionLinenumber: 1054
    functionLinenumberEnd: 1074
    functionName: set_dup_node_check
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_dup_node_hash_check
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR set_dup_node_check(const struct lyxp_set *set, const struct
      lyd_node *node, enum lyxp_node_type node_type, int skip_idx)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 5
    argNames:
    - set
    - node
    - node_type
    - skip_idx
    - index_p
    argTypes:
    - struct lyxp_set*
    - struct lysc_node*
    - enum lyxp_node_type
    - int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1096
    functionName: lyxp_set_scnode_contains
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: "ly_bool lyxp_set_scnode_contains(struct lyxp_set *set, const struct
      lysc_node *node, enum lyxp_node_type node_type, int skip_idx,\n        uint32_t
      *index_p)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1103,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:1110,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:1116,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1117,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1117,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:1139,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:1144,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - set1
    - set2
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    assertStmts:
    - condition: ((set1->type == LYXP_SET_SCNODE_SET) && (set2->type == LYXP_SET_SCNODE_SET))
      pos:
        line_end: 1102
        line_start: 1102
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1146
      start: 1098
    functionDepth: 2
    functionLinenumber: 1098
    functionLinenumberEnd: 1146
    functionName: lyxp_set_scnode_merge
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 2
    functionsReached:
    - assert
    - LY_CHECK_ERR_RET
    - ly_realloc
    - lyxp_set_free_content
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: void
    signature: void lyxp_set_scnode_merge(struct lyxp_set *set1, struct lyxp_set *set2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1160,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:1166,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:1169,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1170,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1170,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:1182,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1183,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1183,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:1188,1
    - Dst: memmove
      Src: /src/libyang/src/xpath.c:1194,1
    - Dst: set_insert_node_hash
      Src: /src/libyang/src/xpath.c:1205,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 5
    argNames:
    - set
    - node
    - pos
    - node_type
    - idx
    argTypes:
    - struct lyxp_set*
    - struct lyd_node*
    - uint32_t
    - enum lyxp_node_type
    - uint32_t
    assertStmts:
    - condition: (set && (set->type == LYXP_SET_NODE_SET))
      pos:
        line_end: 1159
        line_start: 1159
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1207
      start: 1157
    functionDepth: 7
    functionLinenumber: 1157
    functionLinenumberEnd: 1207
    functionName: set_insert_node
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_insert_node_hash
    - LY_CHECK_ERR_RET
    - malloc
    - LOGINT
    - memmove
    - ly_realloc
    - LOGMEM
    - assert
    linkageType: ''
    returnType: void
    signature: void set_insert_node(struct lyxp_set *set, const struct lyd_node *node,
      uint32_t pos, enum lyxp_node_type node_type, uint32_t idx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1214,1
    - Dst: lyxp_set_scnode_contains
      Src: /src/libyang/src/xpath.c:1216,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:1220,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1221,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - set
    - node
    - node_type
    - index_p
    argTypes:
    - struct lyxp_set*
    - struct lysc_node*
    - enum lyxp_node_type
    - uint32_t*
    assertStmts:
    - condition: (set->type == LYXP_SET_SCNODE_SET)
      pos:
        line_end: 1213
        line_start: 1213
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1237
      start: 1209
    functionDepth: 1
    functionLinenumber: 1209
    functionLinenumberEnd: 1237
    functionName: lyxp_set_scnode_insert_node
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_RET
    - lyxp_set_scnode_contains
    - ly_realloc
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxp_set_scnode_insert_node(struct lyxp_set *set, const struct
      lysc_node *node, enum lyxp_node_type node_type, uint32_t *index_p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1251,1
    - Dst: set_remove_node_hash
      Src: /src/libyang/src/xpath.c:1254,1
    - Dst: set_insert_node_hash
      Src: /src/libyang/src/xpath.c:1260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - set
    - node
    - pos
    - node_type
    - idx
    argTypes:
    - struct lyxp_set*
    - struct lyd_node*
    - uint32_t
    - enum lyxp_node_type
    - uint32_t
    assertStmts:
    - condition: (set && (idx < set->used))
      pos:
        line_end: 1250
        line_start: 1250
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1262
      start: 1248
    functionDepth: 7
    functionLinenumber: 1248
    functionLinenumberEnd: 1262
    functionName: set_replace_node
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_insert_node_hash
    - set_remove_node_hash
    - assert
    linkageType: ''
    returnType: void
    signature: void set_replace_node(struct lyxp_set *set, const struct lyd_node *node,
      uint32_t pos, enum lyxp_node_type node_type, uint32_t idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1276,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts:
    - condition: (set->type == LYXP_SET_SCNODE_SET)
      pos:
        line_end: 1275
        line_start: 1275
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1293
      start: 1270
    functionDepth: 1
    functionLinenumber: 1270
    functionLinenumberEnd: 1293
    functionName: set_scnode_new_in_ctx
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int32_t
    signature: int32_t set_scnode_new_in_ctx(struct lyxp_set *set)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1315,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:1324,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/xpath.c:1348,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:1360,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/xpath.c:1360,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 6
    argNames:
    - node
    - node_type
    - root
    - root_type
    - prev
    - prev_pos
    argTypes:
    - struct lyd_node*
    - enum lyxp_node_type
    - struct lyd_node*
    - enum lyxp_node_type
    - struct lyd_node**
    - uint32_t*
    assertStmts:
    - condition: (prev && prev_pos && !root->prev->next)
      pos:
        line_end: 1314
        line_start: 1314
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1377
      start: 1307
    functionDepth: 1
    functionLinenumber: 1307
    functionLinenumberEnd: 1377
    functionName: get_node_pos
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyd_parent
    - LYD_TREE_DFS_END
    - LOGINT
    - LYD_CTX
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t get_node_pos(const struct lyd_node *node, enum lyxp_node_type
      node_type, const struct lyd_node *root,\n        enum lyxp_node_type root_type,
      const struct lyd_node **prev, uint32_t *prev_pos)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/xpath.c:1348,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1328
    functionDepth: 1
    functionLinenumber: 1328
    functionLinenumberEnd: 1355
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 33
    functionsReached:
    - LYD_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(root, top_sibling)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/xpath.c:1348,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1329
    functionDepth: 1
    functionLinenumber: 1329
    functionLinenumberEnd: 1349
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(top_sibling, elem)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:1400,1
    - Dst: get_node_pos
      Src: /src/libyang/src/xpath.c:1408,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - set
    - root
    - root_type
    argTypes:
    - struct lyxp_set*
    - struct lyd_node*
    - enum lyxp_node_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1387
    functionDepth: 2
    functionLinenumber: 1387
    functionLinenumberEnd: 1418
    functionName: set_assign_pos
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - get_node_pos
    - LOGINT_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR set_assign_pos(struct lyxp_set *set, const struct lyd_node *root,
      enum lyxp_node_type root_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - meta
    argTypes:
    - struct lyd_meta*
    assertStmts:
    - condition: (meta2)
      pos:
        line_end: 1435
        line_start: 1435
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1438
      start: 1426
    functionDepth: 1
    functionLinenumber: 1426
    functionLinenumberEnd: 1438
    functionName: get_meta_pos
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t get_meta_pos(struct lyd_meta *meta)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1466,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1469,1
    - Dst: get_meta_pos
      Src: /src/libyang/src/xpath.c:1476,1
    - Dst: get_meta_pos
      Src: /src/libyang/src/xpath.c:1479,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1485,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1492,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 34
    argCount: 2
    argNames:
    - item1
    - item2
    argTypes:
    - struct lyxp_set_node*
    - struct lyxp_set_node*
    assertStmts:
    - condition: (item2->type == LYXP_NODE_TEXT)
      pos:
        line_end: 1465
        line_start: 1465
        source_file: /src/libyang/src/xpath.c
    - condition: ((item1->type == LYXP_NODE_TEXT) && (item2->type == LYXP_NODE_ELEM))
      pos:
        line_end: 1468
        line_start: 1468
        source_file: /src/libyang/src/xpath.c
    - condition: ((item1->type == item2->type) && ((item1->type != LYXP_NODE_META)
        || (meta_pos1 == meta_pos2)))
      pos:
        line_end: 1484
        line_start: 1484
        source_file: /src/libyang/src/xpath.c
    - condition: (item2->type != LYXP_NODE_ELEM)
      pos:
        line_end: 1491
        line_start: 1491
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1509
      start: 1447
    functionDepth: 2
    functionLinenumber: 1447
    functionLinenumberEnd: 1509
    functionName: set_sort_compare
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - get_meta_pos
    - assert
    linkageType: ''
    returnType: int
    signature: int set_sort_compare(struct lyxp_set_node *item1, struct lyxp_set_node
      *item2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1523,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:1525,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:1528,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:1531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - trg
    - src
    - type
    - src_idx
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    - enum lyxp_set_type
    - uint32_t
    assertStmts:
    - condition: (src->type == LYXP_SET_NODE_SET)
      pos:
        line_end: 1522
        line_start: 1522
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1532
      start: 1520
    functionDepth: 8
    functionLinenumber: 1520
    functionLinenumberEnd: 1532
    functionName: set_comp_cast
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_init
    - lyxp_set_cast
    - set_insert_node
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR set_comp_cast(struct lyxp_set *trg, struct lyxp_set *src, enum
      lyxp_set_type type, uint32_t src_idx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:1566,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1567,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:1572,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/src/xpath.c:1576,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:1576,1
    - Dst: ly_err_free
      Src: /src/libyang/src/xpath.c:1578,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:1586,1
    - Dst: strtold
      Src: /src/libyang/src/xpath.c:1589,1
    - Dst: struct lysc_type*::plugin::print
      Src: /src/libyang/src/xpath.c:1589,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1590,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:1590,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:1592,1
    - Dst: struct lysc_type*::plugin::print
      Src: /src/libyang/src/xpath.c:1592,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/xpath.c:1594,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:1599,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 3
    argNames:
    - trg
    - src
    - xp_node
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    - struct lyxp_set_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1542
    functionDepth: 4
    functionLinenumber: 1542
    functionLinenumberEnd: 1601
    functionName: set_comp_canonize
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strtold
    - strlen
    - LY_CHECK_ERR_RET
    - set_init
    - struct lysc_type*::plugin::free
    - struct lysc_type*::plugin::print
    - LOGINT
    - asprintf
    - ly_err_free
    - strdup
    - struct lysc_type*::plugin::store
    - set_fill_set
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR set_comp_canonize(struct lyxp_set *trg, const struct lyxp_set
      *src, const struct lyxp_set_node *xp_node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:1628,1
    - Dst: set_assign_pos
      Src: /src/libyang/src/xpath.c:1632,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:1636,1
    - Dst: print_set_debug
      Src: /src/libyang/src/xpath.c:1637,1
    - Dst: set_sort_compare
      Src: /src/libyang/src/xpath.c:1646,1
    - Dst: set_sort_compare
      Src: /src/libyang/src/xpath.c:1648,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:1671,1
    - Dst: print_set_debug
      Src: /src/libyang/src/xpath.c:1672,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1676,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:1681,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:1682,1
    - Dst: dict_hash_multi
      Src: /src/libyang/src/xpath.c:1683,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:1685,1
    - Dst: lyht_find
      Src: /src/libyang/src/xpath.c:1685,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts:
    - condition: (set->ht)
      pos:
        line_end: 1675
        line_start: 1675
        source_file: /src/libyang/src/xpath.c
    - condition: (!lyht_find(set->ht, &hnode, hash, NULL))
      pos:
        line_end: 1684
        line_start: 1684
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 1690
      start: 1612
    functionDepth: 4
    functionLinenumber: 1612
    functionLinenumberEnd: 1690
    functionName: set_sort
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_sort_compare
    - lyd_parent
    - set_assign_pos
    - print_set_debug
    - LOGDBG
    - dict_hash_multi
    - lyht_find
    - assert
    linkageType: ''
    returnType: int
    signature: int set_sort(struct lyxp_set *set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_remove_node_none
      Src: /src/libyang/src/xpath.c:1708,1
    - Dst: set_remove_nodes_none
      Src: /src/libyang/src/xpath.c:1715,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1698
    functionDepth: 6
    functionLinenumber: 1698
    functionLinenumberEnd: 1717
    functionName: set_sorted_dup_node_clean
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_remove_nodes_none
    - set_remove_node_none
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR set_sorted_dup_node_clean(struct lyxp_set *set)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:1742,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:1743,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:1748,1
    - Dst: set_assign_pos
      Src: /src/libyang/src/xpath.c:1752,1
    - Dst: set_assign_pos
      Src: /src/libyang/src/xpath.c:1752,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:1757,1
    - Dst: print_set_debug
      Src: /src/libyang/src/xpath.c:1758,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:1759,1
    - Dst: print_set_debug
      Src: /src/libyang/src/xpath.c:1760,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:1768,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1769,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1769,1
    - Dst: set_sort_compare
      Src: /src/libyang/src/xpath.c:1777,1
    - Dst: set_insert_node_hash
      Src: /src/libyang/src/xpath.c:1798,1
    - Dst: memmove
      Src: /src/libyang/src/xpath.c:1802,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:1805,1
    - Dst: set_insert_node_hash
      Src: /src/libyang/src/xpath.c:1821,1
    - Dst: set_insert_node_hash
      Src: /src/libyang/src/xpath.c:1835,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:1839,1
    - Dst: print_set_debug
      Src: /src/libyang/src/xpath.c:1840,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:1843,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 79
    argCount: 2
    argNames:
    - trg
    - src
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1728
    functionDepth: 7
    functionLinenumber: 1728
    functionLinenumberEnd: 1845
    functionName: set_sorted_merge
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_sort_compare
    - set_insert_node_hash
    - lyd_parent
    - LY_CHECK_ERR_RET
    - set_assign_pos
    - print_set_debug
    - memmove
    - LOGDBG
    - ly_realloc
    - set_fill_set
    - lyxp_set_free_content
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR set_sorted_merge(struct lyxp_set *trg, struct lyxp_set *src)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:1863,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:1870,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:1870,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:1871,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - exp
    - tok_idx
    - want_tok
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t
    - enum lyxp_token
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1858
    functionDepth: 2
    functionLinenumber: 1858
    functionLinenumberEnd: 1877
    functionName: lyxp_check_token
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 3
    functionsReached:
    - lyxp_print_token
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxp_check_token(const struct ly_ctx *ctx, const struct lyxp_expr
      *exp, uint16_t tok_idx, enum lyxp_token want_tok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:1882,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:1882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - exp
    - tok_idx
    - want_tok
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    - enum lyxp_token
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1879
    functionDepth: 3
    functionLinenumber: 1879
    functionLinenumberEnd: 1888
    functionName: lyxp_next_token
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 5
    functionsReached:
    - LY_CHECK_RET
    - lyxp_check_token
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxp_next_token(const struct ly_ctx *ctx, const struct lyxp_expr
      *exp, uint16_t *tok_idx, enum lyxp_token want_tok)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:1897,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:1904,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:1904,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - ctx
    - exp
    - tok_idx
    - want_tok1
    - want_tok2
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t
    - enum lyxp_token
    - enum lyxp_token
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1891
    functionDepth: 2
    functionLinenumber: 1891
    functionLinenumberEnd: 1911
    functionName: exp_check_token2
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyxp_print_token
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR exp_check_token2(const struct ly_ctx *ctx, const struct lyxp_expr
      *exp, uint16_t tok_idx, enum lyxp_token want_tok1,\n        enum lyxp_token
      want_tok2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/libyang/src/xpath.c:1927,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1928,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1928,1
    - Dst: calloc
      Src: /src/libyang/src/xpath.c:1932,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:1933,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:1933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - exp
    - tok_idx
    - repeat_op_idx
    argTypes:
    - struct lyxp_expr*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1936
      start: 1920
    functionDepth: 1
    functionLinenumber: 1920
    functionLinenumberEnd: 1936
    functionName: exp_repeat_push
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LOGMEM
    - realloc
    - LY_CHECK_ERR_RET
    - calloc
    linkageType: ''
    returnType: void
    signature: void exp_repeat_push(struct lyxp_expr *exp, uint16_t tok_idx, uint16_t
      repeat_op_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:1953,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:1954,1
    - Dst: reparse_or_expr
      Src: /src/libyang/src/xpath.c:1957,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:1958,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:1960,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:1961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1948
    functionDepth: 3
    functionLinenumber: 1948
    functionLinenumberEnd: 1965
    functionName: reparse_predicate
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_check_token
    - reparse_or_expr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_predicate(const struct ly_ctx *ctx, struct lyxp_expr
      *exp, uint16_t *tok_idx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:1984,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:1985,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:1992,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:1993,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2008,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2009,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2011,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:2011,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2024,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2025,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2029,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2030,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2035,1
    - Dst: reparse_predicate
      Src: /src/libyang/src/xpath.c:2036,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2037,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2041,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:2041,1
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:2044,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 1979
    functionDepth: 4
    functionLinenumber: 1979
    functionLinenumberEnd: 2047
    functionName: reparse_relative_location_path
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - reparse_predicate
    - exp_check_token2
    - LY_CHECK_RET
    - LOGVAL
    - lyxp_check_token
    - lyxp_print_token
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_relative_location_path(const struct ly_ctx *ctx, struct
      lyxp_expr *exp, uint16_t *tok_idx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2064,1
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:2064,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2071,1
    - Dst: reparse_relative_location_path
      Src: /src/libyang/src/xpath.c:2080,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2081,1
    - Dst: reparse_relative_location_path
      Src: /src/libyang/src/xpath.c:2091,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2092,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2096
      start: 2059
    functionDepth: 5
    functionLinenumber: 2059
    functionLinenumberEnd: 2096
    functionName: reparse_absolute_location_path
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_check_token
    - reparse_relative_location_path
    - exp_check_token2
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_absolute_location_path(const struct ly_ctx *ctx, struct
      lyxp_expr *exp, uint16_t *tok_idx)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2116,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2117,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2121,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2124,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2130,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2133,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2136,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2139,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2145,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2148,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2151,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2154,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2157,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2163,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2166,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2169,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2175,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2178,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2181,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2187,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2190,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2193,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2199,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2202,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2208,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2211,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2214,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2220,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2226,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2232,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2235,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2241,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2244,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2250,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2256,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2263,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2269,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2270,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2275,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2276,1
    - Dst: reparse_or_expr
      Src: /src/libyang/src/xpath.c:2279,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2280,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2282,1
    - Dst: reparse_or_expr
      Src: /src/libyang/src/xpath.c:2286,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2287,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2291,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2292,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2296,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 196
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2108
    functionDepth: 3
    functionLinenumber: 2108
    functionLinenumberEnd: 2301
    functionName: reparse_function_call
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - reparse_or_expr
    - LY_CHECK_RET
    - strncmp
    - lyxp_check_token
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_function_call(const struct ly_ctx *ctx, struct lyxp_expr
      *exp, uint16_t *tok_idx)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2322,1
    - Dst: reparse_or_expr
      Src: /src/libyang/src/xpath.c:2331,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2332,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2334,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2335,1
    - Dst: reparse_relative_location_path
      Src: /src/libyang/src/xpath.c:2345,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2346,1
    - Dst: reparse_function_call
      Src: /src/libyang/src/xpath.c:2350,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2351,1
    - Dst: reparse_absolute_location_path
      Src: /src/libyang/src/xpath.c:2357,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2358,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2371,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:2371,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2379,1
    - Dst: reparse_predicate
      Src: /src/libyang/src/xpath.c:2380,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2381,1
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:2385,1
    - Dst: reparse_relative_location_path
      Src: /src/libyang/src/xpath.c:2390,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2391,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 61
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2395
      start: 2317
    functionDepth: 6
    functionLinenumber: 2317
    functionLinenumberEnd: 2395
    functionName: reparse_path_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - reparse_or_expr
    - reparse_predicate
    - exp_check_token2
    - reparse_function_call
    - reparse_absolute_location_path
    - reparse_relative_location_path
    - LY_CHECK_RET
    - LOGVAL
    - lyxp_check_token
    - lyxp_print_token
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_path_expr(const struct ly_ctx *ctx, struct lyxp_expr
      *exp, uint16_t *tok_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2416,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2418,1
    - Dst: reparse_path_expr
      Src: /src/libyang/src/xpath.c:2424,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2425,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2428,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2429,1
    - Dst: reparse_path_expr
      Src: /src/libyang/src/xpath.c:2432,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2408
    functionDepth: 7
    functionLinenumber: 2408
    functionLinenumberEnd: 2437
    functionName: reparse_unary_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_check_token
    - exp_repeat_push
    - reparse_path_expr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_unary_expr(const struct ly_ctx *ctx, struct lyxp_expr
      *exp, uint16_t *tok_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2465,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2467,1
    - Dst: reparse_unary_expr
      Src: /src/libyang/src/xpath.c:2473,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2474,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2477,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2479,1
    - Dst: reparse_unary_expr
      Src: /src/libyang/src/xpath.c:2482,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2483,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2488
      start: 2455
    functionDepth: 8
    functionLinenumber: 2455
    functionLinenumberEnd: 2488
    functionName: reparse_additive_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_check_token
    - exp_repeat_push
    - reparse_unary_expr
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_additive_expr(const struct ly_ctx *ctx, struct lyxp_expr
      *exp, uint16_t *tok_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:2516,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2517,1
    - Dst: reparse_additive_expr
      Src: /src/libyang/src/xpath.c:2523,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2524,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2527,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2528,1
    - Dst: reparse_additive_expr
      Src: /src/libyang/src/xpath.c:2531,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2537
      start: 2506
    functionDepth: 9
    functionLinenumber: 2506
    functionLinenumberEnd: 2537
    functionName: reparse_equality_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - exp_check_token2
    - exp_repeat_push
    - reparse_additive_expr
    - LY_CHECK_RET
    - lyxp_check_token
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_equality_expr(const struct ly_ctx *ctx, struct lyxp_expr
      *exp, uint16_t *tok_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2560,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2561,1
    - Dst: reparse_equality_expr
      Src: /src/libyang/src/xpath.c:2567,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2568,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:2571,1
    - Dst: exp_repeat_push
      Src: /src/libyang/src/xpath.c:2572,1
    - Dst: reparse_equality_expr
      Src: /src/libyang/src/xpath.c:2575,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2576,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - exp
    - tok_idx
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2581
      start: 2550
    functionDepth: 10
    functionLinenumber: 2550
    functionLinenumberEnd: 2581
    functionName: reparse_or_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 3
    functionsReached:
    - reparse_equality_expr
    - LY_CHECK_RET
    - lyxp_check_token
    - exp_repeat_push
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR reparse_or_expr(const struct ly_ctx *ctx, struct lyxp_expr *exp,
      uint16_t *tok_idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2596,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/xpath.c:2596,1
    - Dst: is_xmlqnamestartchar
      Src: /src/libyang/src/xpath.c:2597,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:2606,1
    - Dst: ly_getutf8
      Src: /src/libyang/src/xpath.c:2606,1
    - Dst: is_xmlqnamechar
      Src: /src/libyang/src/xpath.c:2607,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - ncname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2610
      start: 2589
    functionDepth: 2
    functionLinenumber: 2589
    functionLinenumberEnd: 2610
    functionName: parse_ncname
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_getutf8
    - is_xmlqnamechar
    - is_xmlqnamestartchar
    linkageType: ''
    returnType: long int
    signature: long int parse_ncname(const char *ncname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:2631,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:2635,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:2636,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2636,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:2637,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:2638,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2638,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:2639,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:2640,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2640,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 5
    argNames:
    - ctx
    - exp
    - token
    - tok_pos
    - tok_len
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - enum lyxp_token
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2622
    functionDepth: 1
    functionLinenumber: 2622
    functionLinenumberEnd: 2648
    functionName: exp_add_token
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LOGMEM
    - ly_realloc
    - LOGINT
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR exp_add_token(const struct ly_ctx *ctx, struct lyxp_expr *exp,
      enum lyxp_token token, uint16_t tok_pos, uint16_t tok_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/xpath.c:2659,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:2660,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:2661,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:2662,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:2665,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:2668,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:2669,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - expr
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2670
      start: 2650
    functionDepth: 3
    functionLinenumber: 2650
    functionLinenumberEnd: 2670
    functionName: lyxp_expr_free
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 17
    functionsReached:
    - lydict_remove
    - free
    linkageType: ''
    returnType: void
    signature: void lyxp_expr_free(const struct ly_ctx *ctx, struct lyxp_expr *expr)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:2682,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2685,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:2690,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2693,1
    - Dst: calloc
      Src: /src/libyang/src/xpath.c:2698,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2699,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2699,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:2700,1
    - Dst: lydict_insert
      Src: /src/libyang/src/xpath.c:2700,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:2703,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2704,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2704,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:2706,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2707,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2707,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:2709,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2710,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2710,1
    - Dst: is_xmlws
      Src: /src/libyang/src/xpath.c:2715,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2729,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2730,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2732,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2758,1
    - Dst: isdigit
      Src: /src/libyang/src/xpath.c:2764,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2786,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2787,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2796,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2797,1
    - Dst: isdigit
      Src: /src/libyang/src/xpath.c:2802,1
    - Dst: isdigit
      Src: /src/libyang/src/xpath.c:2805,1
    - Dst: isdigit
      Src: /src/libyang/src/xpath.c:2808,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2815,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2823,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2829,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2829,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2877,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2881,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2885,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:2885,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2890,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2895,1
    - Dst: parse_ncname
      Src: /src/libyang/src/xpath.c:2908,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2909,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2909,1
    - Dst: parse_ncname
      Src: /src/libyang/src/xpath.c:2918,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2919,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2919,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:2934,1
    - Dst: exp_add_token
      Src: /src/libyang/src/xpath.c:2934,1
    - Dst: is_xmlws
      Src: /src/libyang/src/xpath.c:2936,1
    - Dst: calloc
      Src: /src/libyang/src/xpath.c:2944,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2945,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2945,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2948,1
    - Dst: reparse_or_expr
      Src: /src/libyang/src/xpath.c:2948,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:2950,1
    - Dst: print_expr_struct_debug
      Src: /src/libyang/src/xpath.c:2957,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/xpath.c:2962,1
    CyclomaticComplexity: 72
    EdgeCount: 72
    ICount: 203
    argCount: 5
    argNames:
    - ctx
    - expr_str
    - expr_len
    - reparse
    - expr_p
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - ly_bool
    - struct lyxp_expr**
    assertStmts:
    - condition: (expr_p)
      pos:
        line_end: 2681
        line_start: 2681
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 2964
      start: 2672
    functionDepth: 11
    functionLinenumber: 2672
    functionLinenumberEnd: 2964
    functionName: lyxp_expr_parse
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 7
    functionsReached:
    - assert
    - LY_CHECK_ERR_GOTO
    - strlen
    - isdigit
    - reparse_or_expr
    - lyxp_expr_free
    - malloc
    - parse_ncname
    - print_expr_struct_debug
    - LOGVAL
    - lydict_insert
    - strncmp
    - exp_add_token
    - LY_CHECK_GOTO
    - is_xmlws
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxp_expr_parse(const struct ly_ctx *ctx, const char *expr_str,
      size_t expr_len, ly_bool reparse, struct lyxp_expr **expr_p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/xpath.c:2977,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2978,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2978,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:2980,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2981,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2981,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:2982,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:2984,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2985,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2985,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:2986,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:2988,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2989,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2989,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:2990,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:2992,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:2993,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:2993,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:3002,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:3003,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:3003,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:3004,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:3011,1
    - Dst: lydict_insert
      Src: /src/libyang/src/xpath.c:3011,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/xpath.c:3015,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 3
    argNames:
    - ctx
    - exp
    - dup_p
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - struct lyxp_expr**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 2966
    functionDepth: 4
    functionLinenumber: 2966
    functionLinenumberEnd: 3020
    functionName: lyxp_expr_dup
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyxp_expr_free
    - malloc
    - calloc
    - lydict_insert
    - LY_CHECK_GOTO
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxp_expr_dup(const struct ly_ctx *ctx, const struct lyxp_expr
      *exp, struct lyxp_expr **dup_p)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3054
      start: 3035
    functionDepth: 0
    functionLinenumber: 3035
    functionLinenumberEnd: 3054
    functionName: warn_get_scnode_in_ctx
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_node
    signature: 'struct lysc_node *

      warn_get_scnode_in_ctx(struct lyxp_set *set)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/xpath.c:3082,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3083,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3092,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - type
    argTypes:
    - struct lysc_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3096
      start: 3062
    functionDepth: 1
    functionLinenumber: 3062
    functionLinenumberEnd: 3096
    functionName: warn_is_numeric_type
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - warn_is_numeric_type
    - LY_ARRAY_FOR
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool warn_is_numeric_type(struct lysc_type *type)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/xpath.c:3120,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:3121,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:3130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - type
    argTypes:
    - struct lysc_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3134
      start: 3104
    functionDepth: 1
    functionLinenumber: 3104
    functionLinenumberEnd: 3134
    functionName: warn_is_string_type
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LY_ARRAY_FOR
    - warn_is_string_type
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool warn_is_string_type(struct lysc_type *type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/xpath.c:3154,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3155,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - type
    - base
    argTypes:
    - struct lysc_type*
    - LY_DATA_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3168
      start: 3143
    functionDepth: 1
    functionLinenumber: 3143
    functionLinenumberEnd: 3168
    functionName: warn_is_specific_type
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LY_ARRAY_FOR
    - warn_is_specific_type
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool warn_is_specific_type(struct lysc_type *type, LY_DATA_TYPE
      base)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/xpath.c:3190,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:3201,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - type
    - prev_type
    argTypes:
    - struct lysc_type*
    - struct lysc_type*
    assertStmts:
    - condition: (type == prev_type)
      pos:
        line_end: 3200
        line_start: 3200
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 3207
      start: 3177
    functionDepth: 1
    functionLinenumber: 3177
    functionLinenumberEnd: 3207
    functionName: warn_is_equal_type_next_type
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - assert
    linkageType: ''
    returnType: struct lysc_type
    signature: 'struct lysc_type *

      warn_is_equal_type_next_type(struct lysc_type *type, struct lysc_type *prev_type)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: warn_is_equal_type_next_type
      Src: /src/libyang/src/xpath.c:3222,1
    - Dst: warn_is_equal_type_next_type
      Src: /src/libyang/src/xpath.c:3230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - type1
    - type2
    argTypes:
    - struct lysc_type*
    - struct lysc_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3245
      start: 3216
    functionDepth: 2
    functionLinenumber: 3216
    functionLinenumberEnd: 3245
    functionName: warn_is_equal_type
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - warn_is_equal_type_next_type
    linkageType: ''
    returnType: int
    signature: int warn_is_equal_type(struct lysc_type *type1, struct lysc_type *type2)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3263,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3264,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3273,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3273,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3276,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3277,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3284,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3284,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3287,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3288,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3294,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3294,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3295,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3295,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3296,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:3296,1
    - Dst: warn_is_equal_type
      Src: /src/libyang/src/xpath.c:3297,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3298,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3304,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 37
    argCount: 6
    argNames:
    - ctx
    - set1
    - set2
    - numbers_only
    - expr
    - tok_pos
    argTypes:
    - struct ly_ctx*
    - struct lyxp_set*
    - struct lyxp_set*
    - ly_bool
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3306
      start: 3257
    functionDepth: 3
    functionLinenumber: 3257
    functionLinenumberEnd: 3306
    functionName: warn_operands
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - warn_is_numeric_type
    - lys_nodetype2str
    - warn_is_equal_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    linkageType: ''
    returnType: void
    signature: void warn_operands(struct ly_ctx *ctx, struct lyxp_set *set1, struct
      lyxp_set *set2, ly_bool numbers_only, const char *expr, uint16_t tok_pos)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3328,1
    - Dst: strndup
      Src: /src/libyang/src/xpath.c:3332,1
    - Dst: strndup
      Src: /src/libyang/src/xpath.c:3334,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:3337,1
    - Dst: strchr
      Src: /src/libyang/src/xpath.c:3341,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3342,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3344,1
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/src/xpath.c:3351,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:3351,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3358,1
    - Dst: ly_err_free
      Src: /src/libyang/src/xpath.c:3359,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3361,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3364,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/xpath.c:3368,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:3371,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 5
    argNames:
    - exp
    - set
    - val_exp
    - equal_exp
    - last_equal_exp
    argTypes:
    - struct lyxp_expr*
    - struct lyxp_set*
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3373
      start: 3317
    functionDepth: 1
    functionLinenumber: 3317
    functionLinenumberEnd: 3373
    functionName: warn_equality_value
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - struct lysc_type*::plugin::free
    - free
    - ly_err_free
    - struct lysc_type*::plugin::store
    - strchr
    - warn_get_scnode_in_ctx
    - LOGWRN
    - strndup
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: "void warn_equality_value(const struct lyxp_expr *exp, struct lyxp_set
      *set, uint16_t val_exp, uint16_t equal_exp,\n        uint16_t last_equal_exp)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3400,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3401,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3403,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3403,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3405,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3406,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3410,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3412,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3412,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:3414,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3415,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3418,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3423,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:3423,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:3426,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3427,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3429,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/xpath.c:3435,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:3436,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3437,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3445
      start: 3389
    functionDepth: 3
    functionLinenumber: 3389
    functionLinenumberEnd: 3445
    functionName: xpath_bit_is_set
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - warn_is_specific_type
    - set_fill_boolean
    - strcmp
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - warn_is_string_type
    - LOGVAL
    - print_set_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_bit_is_set(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3463,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:3467,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3468,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:3469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3472
      start: 3457
    functionDepth: 4
    functionLinenumber: 3457
    functionLinenumberEnd: 3472
    functionName: xpath_boolean
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_set_cast
    - set_fill_set
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_boolean(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3492,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3493,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3495,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3495,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3497,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3498,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3501,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:3505,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3506,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:3508,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:3510,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3514
      start: 3484
    functionDepth: 3
    functionLinenumber: 3484
    functionLinenumberEnd: 3514
    functionName: xpath_ceiling
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - warn_is_specific_type
    - set_fill_number
    - LY_CHECK_RET
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_ceiling(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3537,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3539,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3540,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:3541,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3542,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3546,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:3551,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:3553,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:3557,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:3557,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:3558,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:3558,1
    - Dst: strcpy
      Src: /src/libyang/src/xpath.c:3559,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:3560,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:3564,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3569
      start: 3526
    functionDepth: 2
    functionLinenumber: 3526
    functionLinenumberEnd: 3569
    functionName: xpath_concat
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - LY_CHECK_ERR_RET
    - strcpy
    - free
    - warn_is_string_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - ly_realloc
    - lyxp_set_cast
    - lyxp_set_free_content
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_concat(struct lyxp_set **args, uint16_t arg_count, struct
      lyxp_set *set, uint32_t options)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3589,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3591,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3591,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:3593,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3594,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3598,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3600,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3600,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:3602,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3603,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3606,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:3610,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3611,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:3612,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3613,1
    - Dst: strstr
      Src: /src/libyang/src/xpath.c:3615,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3616,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3618,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3622
      start: 3582
    functionDepth: 3
    functionLinenumber: 3582
    functionLinenumberEnd: 3622
    functionName: xpath_contains
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strstr
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - set_fill_boolean
    - LY_CHECK_RET
    - warn_is_string_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_contains(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3641,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3643,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3648,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:3648,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:3652,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3654
      start: 3634
    functionDepth: 3
    functionLinenumber: 3634
    functionLinenumberEnd: 3654
    functionName: xpath_count
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_scnode_clear_ctx
    - set_fill_number
    - LOGVAL
    - print_set_type
    - LOGWRN
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_count(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3670,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3675,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3677,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:3677,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:3679,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:3682,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3686
      start: 3666
    functionDepth: 8
    functionLinenumber: 3666
    functionLinenumberEnd: 3686
    functionName: xpath_current
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_scnode_clear_ctx
    - set_insert_node
    - LY_CHECK_RET
    - LOGVAL
    - lyxp_set_scnode_insert_node
    - lyxp_set_free_content
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_current(struct lyxp_set **args, uint16_t arg_count, struct
      lyxp_set *set, uint32_t options)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3713,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3714,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3716,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3716,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3718,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3718,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3719,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3723,1
    - Dst: ly_path_compile
      Src: /src/libyang/src/xpath.c:3729,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:3731,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/xpath.c:3734,1
    - Dst: ly_path_free
      Src: /src/libyang/src/xpath.c:3735,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3737,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:3737,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3744,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:3744,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:3748,1
    - Dst: lyplg_type_resolve_leafref
      Src: /src/libyang/src/xpath.c:3755,1
    - Dst: LOGERR
      Src: /src/libyang/src/xpath.c:3757,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:3758,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:3762,1
    - Dst: ly_path_eval
      Src: /src/libyang/src/xpath.c:3763,1
    - Dst: LOGERR
      Src: /src/libyang/src/xpath.c:3764,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/xpath.c:3765,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:3771,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (sleaf->type->basetype == LY_TYPE_INST)
      pos:
        line_end: 3761
        line_start: 3761
        source_file: /src/libyang/src/xpath.c
    - condition: (!rc)
      pos:
        line_end: 3730
        line_start: 3730
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 3776
      start: 3698
    functionDepth: 10
    functionLinenumber: 3698
    functionLinenumberEnd: 3776
    functionName: xpath_deref
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lys_nodetype2str
    - warn_is_specific_type
    - LOGERR
    - ly_path_eval
    - ly_path_compile
    - LY_CHECK_RET
    - print_set_type
    - warn_get_scnode_in_ctx
    - LY_ARRAY_COUNT
    - ly_path_free
    - assert
    - set_scnode_clear_ctx
    - free
    - LOGVAL
    - lyxp_set_free_content
    - lyplg_type_resolve_leafref
    - set_insert_node
    - lyxp_set_scnode_insert_node
    - LOGWRN
    - lyd_get_value
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_deref(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3796,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3797,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3799,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3799,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3801,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3802,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3806,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3808,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3808,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:3810,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3811,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3814,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3819,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:3819,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:3822,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3823,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:3827,1
    - Dst: moveto_resolve_model
      Src: /src/libyang/src/xpath.c:3828,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:3829,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3831,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/xpath.c:3837,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/xpath.c:3838,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3845,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3850,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3876,1
    - Dst: lyplg_type_identity_isderived
      Src: /src/libyang/src/xpath.c:3879,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3880,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 83
    argCount: 5
    argNames:
    - args
    - set
    - options
    - self_match
    - func
    argTypes:
    - struct lyxp_set**
    - struct lyxp_set*
    - uint32_t
    - ly_bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3890
      start: 3778
    functionDepth: 3
    functionLinenumber: 3778
    functionLinenumberEnd: 3890
    functionName: xpath_derived_
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_strncmp
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - warn_is_specific_type
    - set_fill_boolean
    - lyplg_type_identity_isderived
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - warn_is_string_type
    - LOGVAL
    - print_set_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    - moveto_resolve_model
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_derived_(struct lyxp_set **args, struct lyxp_set *set,
      uint32_t options, ly_bool self_match, const char *func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xpath_derived_
      Src: /src/libyang/src/xpath.c:3906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3907
      start: 3903
    functionDepth: 4
    functionLinenumber: 3903
    functionLinenumberEnd: 3907
    functionName: xpath_derived_from
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - xpath_derived_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_derived_from(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xpath_derived_
      Src: /src/libyang/src/xpath.c:3923,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3924
      start: 3920
    functionDepth: 4
    functionLinenumber: 3920
    functionLinenumberEnd: 3924
    functionName: xpath_derived_from_or_self
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - xpath_derived_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_derived_from_or_self(struct lyxp_set **args, uint16_t
      UNUSED(arg_count), struct lyxp_set *set, uint32_t options)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3945,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:3946,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3948,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:3948,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:3950,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:3951,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3954,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:3959,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:3959,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:3963,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:3968,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3973
      start: 3936
    functionDepth: 3
    functionLinenumber: 3936
    functionLinenumberEnd: 3973
    functionName: xpath_enum_value
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - warn_is_specific_type
    - set_fill_number
    - LOGVAL
    - print_set_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_enum_value(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:3989,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:3993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - UNUSED(args)
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3995
      start: 3985
    functionDepth: 3
    functionLinenumber: 3985
    functionLinenumberEnd: 3995
    functionName: xpath_false
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_fill_boolean
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_false(struct lyxp_set **UNUSED(args), uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4012,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4013,1
    - Dst: isfinite
      Src: /src/libyang/src/xpath.c:4014,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4015,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - UNUSED
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4019
      start: 4007
    functionDepth: 3
    functionLinenumber: 4007
    functionLinenumberEnd: 4019
    functionName: xpath_floor
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_set_cast
    - isfinite
    - set_fill_number
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_floor(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t UNUSED(options))
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4041,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4043,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4043,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4045,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4046,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4049,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4053,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4054,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4057,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4057,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4060,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4074,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:4079,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:4082,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:4082,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4094,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/xpath.c:4098,1
    - Dst: tolower
      Src: /src/libyang/src/xpath.c:4100,1
    - Dst: tolower
      Src: /src/libyang/src/xpath.c:4100,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4101,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4107,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4109,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 64
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4115
      start: 4031
    functionDepth: 3
    functionLinenumber: 4031
    functionLinenumberEnd: 4115
    functionName: xpath_lang
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - lyd_parent
    - set_fill_boolean
    - strcmp
    - LY_CHECK_RET
    - warn_is_string_type
    - LOGVAL
    - lyd_get_meta_value
    - print_set_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    - tolower
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_lang(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4131,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4136,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4136,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4139,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - UNUSED(args)
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4145
      start: 4127
    functionDepth: 3
    functionLinenumber: 4127
    functionLinenumberEnd: 4145
    functionName: xpath_last
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    - set_fill_number
    - set_scnode_clear_ctx
    - print_set_type
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_last(struct lyxp_set **UNUSED(args), uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4166,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4172,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4172,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4176,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:4181,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:4181,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4186,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4186,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4189,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:4194,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:4194,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:4201,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4205,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4208,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4208,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4211,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4211,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (!set_sort(args[0]))
      pos:
        line_end: 4180
        line_start: 4180
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set))
      pos:
        line_end: 4193
        line_start: 4193
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 4216
      start: 4157
    functionDepth: 5
    functionLinenumber: 4157
    functionLinenumberEnd: 4216
    functionName: xpath_local_name
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - set_scnode_clear_ctx
    - LOGINT_RET
    - set_sort
    - LOGVAL
    - print_set_type
    - set_fill_string
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_local_name(struct lyxp_set **args, uint16_t arg_count,
      struct lyxp_set *set, uint32_t options)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4237,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4243,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4243,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4246,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:4251,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:4251,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4256,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4256,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4259,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:4264,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:4264,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:4271,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:4288,1
    - Dst: ly_get_prefix
      Src: /src/libyang/src/xpath.c:4288,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:4289,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:4289,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4290,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4290,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:4291,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4293,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (!set_sort(args[0]))
      pos:
        line_end: 4250
        line_start: 4250
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set))
      pos:
        line_end: 4263
        line_start: 4263
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 4297
      start: 4228
    functionDepth: 5
    functionLinenumber: 4228
    functionLinenumberEnd: 4297
    functionName: xpath_name
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - set_scnode_clear_ctx
    - LOGINT_RET
    - LY_CHECK_ERR_RET
    - free
    - asprintf
    - set_sort
    - LOGVAL
    - print_set_type
    - set_fill_string
    - LOGMEM
    - assert
    - ly_get_prefix
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_name(struct lyxp_set **args, uint16_t arg_count, struct
      lyxp_set *set, uint32_t options)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4319,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4325,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4325,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4329,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:4334,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:4334,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4339,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4339,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4342,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:4347,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:4347,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:4354,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4358,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4369,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4369,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (!set_sort(args[0]))
      pos:
        line_end: 4333
        line_start: 4333
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set))
      pos:
        line_end: 4346
        line_start: 4346
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 4374
      start: 4309
    functionDepth: 5
    functionLinenumber: 4309
    functionLinenumberEnd: 4374
    functionName: xpath_namespace_uri
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - set_scnode_clear_ctx
    - LOGINT_RET
    - set_sort
    - LOGVAL
    - print_set_type
    - set_fill_string
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_namespace_uri(struct lyxp_set **args, uint16_t arg_count,
      struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4391,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:4396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - UNUSED(args)
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4399
      start: 4387
    functionDepth: 2
    functionLinenumber: 4387
    functionLinenumberEnd: 4399
    functionName: xpath_node
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - lyxp_set_free_content
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_node(struct lyxp_set **UNUSED(args), uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 543
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4423,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4425,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4425,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4427,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4428,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4431,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:4436,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4438,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4439,1
    - Dst: is_xmlws
      Src: /src/libyang/src/xpath.c:4443,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4457,1
    - Dst: malloc::malloc
      Src: /src/libyang/src/xpath.c:4457,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:4458,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/xpath.c:4458,1
    - Dst: is_xmlws
      Src: /src/libyang/src/xpath.c:4463,1
    - Dst: ly_realloc
      Src: /src/libyang/src/xpath.c:4483,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:4484,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/xpath.c:4484,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:4487,1
    - Dst: LY_SUCCESS::LY_SUCCESS
      Src: /src/libyang/src/xpath.c:4488,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4508,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4512,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4514,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4516,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4538,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4543,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4544,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:4545,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4547,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4548,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4568,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4573,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4573,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4576,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4580,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4607,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4609,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4609,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4610,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4611,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4615,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4617,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4617,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4618,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4619,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4622,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4626,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4627,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4628,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4629,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/xpath.c:4631,1
    - Dst: calloc
      Src: /src/libyang/src/xpath.c:4632,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/xpath.c:4633,1
    - Dst: lys_compile_type_pattern_check
      Src: /src/libyang/src/xpath.c:4634,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/xpath.c:4635,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/xpath.c:4637,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/xpath.c:4641,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4641,1
    - Dst: pcre2_code_free
      Src: /src/libyang/src/xpath.c:4642,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:4643,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/xpath.c:4644,1
    - Dst: ly_err_print
      Src: /src/libyang/src/xpath.c:4646,1
    - Dst: ly_err_free
      Src: /src/libyang/src/xpath.c:4647,1
    - Dst: ly_err_free
      Src: /src/libyang/src/xpath.c:4652,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4653,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4655,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4680,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4681,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4683,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4683,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:4685,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4686,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4689,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4693,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4694,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4698,1
    - Dst: xpath_floor
      Src: /src/libyang/src/xpath.c:4701,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4702,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4703,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4727,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4729,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4729,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4730,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4731,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4735,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4737,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4737,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4738,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4739,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4742,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4746,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4747,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4748,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4749,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:4751,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4751,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4752,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4754,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4776,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4781,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4782,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:4783,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4785,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4786,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4809,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4811,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4811,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4812,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4813,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4816,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4818,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4818,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4819,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4820,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4823,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4828,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4829,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4830,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4830,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4832,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4833,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4834,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4834,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4862,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4864,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4864,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4865,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4866,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4870,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4872,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4872,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:4873,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4874,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4879,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4881,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4881,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:4882,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4883,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4886,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4890,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4891,1
    - Dst: xpath_round
      Src: /src/libyang/src/xpath.c:4894,1
    - Dst: isfinite
      Src: /src/libyang/src/xpath.c:4897,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:4899,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:4899,1
    - Dst: xpath_round
      Src: /src/libyang/src/xpath.c:4907,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4908,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:4909,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:4909,1
    - Dst: isfinite
      Src: /src/libyang/src/xpath.c:4911,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4933,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4956,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4958,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4958,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4959,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4960,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4964,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4966,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4966,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4967,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4968,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4971,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4975,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4976,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4977,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4978,1
    - Dst: strstr
      Src: /src/libyang/src/xpath.c:4980,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4984,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5009,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5011,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5011,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5012,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5013,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5017,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5019,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5019,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5020,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5021,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5024,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5028,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5029,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5030,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5031,1
    - Dst: strstr
      Src: /src/libyang/src/xpath.c:5033,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:5035,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:5037,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5069,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5070,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:5071,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5072,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5077,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:5081,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5084,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5084,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:5090,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:5093,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:5094,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:5094,1
    - Dst: cast_node_set_to_string
      Src: /src/libyang/src/xpath.c:5102,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5103,1
    - Dst: cast_string_to_number
      Src: /src/libyang/src/xpath.c:5104,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:5105,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:5109,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5130,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5135,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5135,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:5142,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5154,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5184,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5186,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5186,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5187,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5188,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5192,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5194,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5194,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5195,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5196,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5200,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5202,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5202,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5203,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5204,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5207,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5211,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5212,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5213,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5214,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5215,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5216,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:5218,1
    - Dst: malloc::malloc
      Src: /src/libyang/src/xpath.c:5218,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:5219,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/xpath.c:5219,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:5229,1
    - Dst: ly_realloc::ly_realloc
      Src: /src/libyang/src/xpath.c:5250,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:5251,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/xpath.c:5251,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5255,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5276,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:5280,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5310,1
    - Dst: ly_strnchr
      Src: /src/libyang/src/xpath.c:5312,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/xpath.c:5315,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5319,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5347,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5372,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5373,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5373,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5377,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5399,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:5416,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5435,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:5440,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5462,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:5479,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5497,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5526,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5526,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5534,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:5542,1
    - Dst: moveto_node_check
      Src: /src/libyang/src/xpath.c:5546,1
    - Dst: set_replace_node
      Src: /src/libyang/src/xpath.c:5549,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5552,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5562,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5588,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5595,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5595,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5602,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5606,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:5612,1
    - Dst: lyd_create_list
      Src: /src/libyang/src/xpath.c:5612,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:5614,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/xpath.c:5614,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5621,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:5627,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/xpath.c:5632,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/xpath.c:5634,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:5638,1
    - Dst: set_replace_node
      Src: /src/libyang/src/xpath.c:5645,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5649,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/xpath.c:5654,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5682,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5682,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/xpath.c:5713,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:5716,1
    - Dst: moveto_scnode_check
      Src: /src/libyang/src/xpath.c:5717,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5718,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5718,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:5731,1
    - Dst: moveto_scnode_check
      Src: /src/libyang/src/xpath.c:5732,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5733,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5733,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5779,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5779,1
    - Dst: moveto_node
      Src: /src/libyang/src/xpath.c:5784,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5785,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:5788,1
    - Dst: moveto_node_check
      Src: /src/libyang/src/xpath.c:5794,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5797,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:5798,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:5810,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:5823,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:5828,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5837,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:5838,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5864,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5864,1
    - Dst: moveto_scnode_check
      Src: /src/libyang/src/xpath.c:5889,1
    - Dst: lyxp_set_scnode_contains
      Src: /src/libyang/src/xpath.c:5893,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5900,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5900,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/xpath.c:5909,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5960,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5960,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5985,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5994,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6015,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6015,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6015,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:6025,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:6027,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6032,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6032,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6032,1
    - Dst: set_sorted_merge
      Src: /src/libyang/src/xpath.c:6035,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6036,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6039,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6039,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6066,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6066,1
    - Dst: set_copy
      Src: /src/libyang/src/xpath.c:6073,1
    - Dst: moveto_node_alldesc
      Src: /src/libyang/src/xpath.c:6075,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6077,1
    - Dst: moveto_union
      Src: /src/libyang/src/xpath.c:6081,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6083,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6086,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6108,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:6117,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6146,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:6154,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6155,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:6161,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:6164,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:6175,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:6179,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6180,1
    - Dst: moveto_self_add_children_r
      Src: /src/libyang/src/xpath.c:6183,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6184,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6211,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6211,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:6221,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6224,1
    - Dst: moveto_self_add_children_r
      Src: /src/libyang/src/xpath.c:6232,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6235,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6243,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:6244,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6271,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6271,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/xpath.c:6307,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:6310,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6316,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:6316,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:6323,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6329,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:6329,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6358,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6358,1
    - Dst: moveto_self
      Src: /src/libyang/src/xpath.c:6364,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6365,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:6372,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:6378,1
    - Dst: set_remove_node_none
      Src: /src/libyang/src/xpath.c:6382,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:6387,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:6400,1
    - Dst: set_remove_node_none
      Src: /src/libyang/src/xpath.c:6401,1
    - Dst: set_replace_node
      Src: /src/libyang/src/xpath.c:6403,1
    - Dst: set_remove_nodes_none
      Src: /src/libyang/src/xpath.c:6407,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6408,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6408,1
    - Dst: set_sorted_dup_node_clean
      Src: /src/libyang/src/xpath.c:6408,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6435,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6435,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6441,1
    - Dst: moveto_scnode_self
      Src: /src/libyang/src/xpath.c:6441,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/xpath.c:6460,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6475,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:6475,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:6542,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:6543,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6552,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6555,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6558,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6561,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6564,1
    - Dst: set_comp_canonize
      Src: /src/libyang/src/xpath.c:6564,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6564,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:6567,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6568,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6569,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6569,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6573,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6582,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6585,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6588,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6591,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6594,1
    - Dst: set_comp_canonize
      Src: /src/libyang/src/xpath.c:6594,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6594,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:6597,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6598,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6599,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6599,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6603,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6610,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6617,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6618,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6620,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6621,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6622,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6623,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6626,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6627,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6628,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6629,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6632,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6641,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:6642,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6650,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:6651,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6654,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6672,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6674,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6696,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6697,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6699,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6703,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6705,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6706,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6707,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6708,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:6737,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:6772,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:6773,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6778,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6779,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6782,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6782,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:6794,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6795,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:6799,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:6800,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6810,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6812,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6824,1
    - Dst: set_remove_node_none
      Src: /src/libyang/src/xpath.c:6828,1
    - Dst: set_remove_nodes_none
      Src: /src/libyang/src/xpath.c:6831,1
    - Dst: set_scnode_new_in_ctx
      Src: /src/libyang/src/xpath.c:6848,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6859,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6860,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:6876,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6878,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6880,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6884,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6886,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6888,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6892,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:6893,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:6894,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:6912,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:6914,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:6917,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:6918,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6949,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/xpath.c:6956,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6957,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6963,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6968,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6974,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6987,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6992,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6998,1
    - Dst: ly_log_options
      Src: /src/libyang/src/xpath.c:7008,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7011,1
    - Dst: ly_path_parse_predicate
      Src: /src/libyang/src/xpath.c:7011,1
    - Dst: ly_path_compile_predicate
      Src: /src/libyang/src/xpath.c:7015,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7017,1
    - Dst: ly_log_options
      Src: /src/libyang/src/xpath.c:7023,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/xpath.c:7024,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7052,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/xpath.c:7059,1
    - Dst: lys_find_child
      Src: /src/libyang/src/xpath.c:7060,1
    - Dst: lys_find_child
      Src: /src/libyang/src/xpath.c:7073,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/xpath.c:7075,1
    - Dst: lys_find_child
      Src: /src/libyang/src/xpath.c:7082,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7137,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7138,1
    - Dst: moveto_resolve_model
      Src: /src/libyang/src/xpath.c:7154,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7155,1
    - Dst: eval_name_test_with_predicate_get_scnode
      Src: /src/libyang/src/xpath.c:7160,1
    - Dst: eval_name_test_try_compile_predicates
      Src: /src/libyang/src/xpath.c:7170,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7181,1
    - Dst: lydict_insert
      Src: /src/libyang/src/xpath.c:7181,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7188,1
    - Dst: moveto_attr_alldesc
      Src: /src/libyang/src/xpath.c:7191,1
    - Dst: moveto_attr
      Src: /src/libyang/src/xpath.c:7193,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7195,1
    - Dst: moveto_scnode_alldesc
      Src: /src/libyang/src/xpath.c:7202,1
    - Dst: moveto_scnode
      Src: /src/libyang/src/xpath.c:7204,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7206,1
    - Dst: lysc_path
      Src: /src/libyang/src/xpath.c:7214,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:7215,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:7217,1
    - Dst: moveto_node_alldesc
      Src: /src/libyang/src/xpath.c:7221,1
    - Dst: moveto_node_hash
      Src: /src/libyang/src/xpath.c:7225,1
    - Dst: moveto_node
      Src: /src/libyang/src/xpath.c:7227,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7230,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7235,1
    - Dst: eval_predicate
      Src: /src/libyang/src/xpath.c:7236,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7237,1
    - Dst: lydict_remove
      Src: /src/libyang/src/xpath.c:7242,1
    - Dst: ly_path_predicates_free
      Src: /src/libyang/src/xpath.c:7243,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7274,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7276,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7280,1
    - Dst: xpath_node
      Src: /src/libyang/src/xpath.c:7281,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7283,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7283,1
    - Dst: xpath_text
      Src: /src/libyang/src/xpath.c:7284,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7286,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7289,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7290,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7294,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7295,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7296,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7300,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7301,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7302,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7306,1
    - Dst: eval_predicate
      Src: /src/libyang/src/xpath.c:7307,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7308,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7341,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7344,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7345,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7353,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7354,1
    - Dst: moveto_scnode_self
      Src: /src/libyang/src/xpath.c:7365,1
    - Dst: moveto_self
      Src: /src/libyang/src/xpath.c:7367,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7369,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7370,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7371,1
    - Dst: moveto_scnode_parent
      Src: /src/libyang/src/xpath.c:7378,1
    - Dst: moveto_parent
      Src: /src/libyang/src/xpath.c:7380,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7382,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7383,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7384,1
    - Dst: eval_name_test_with_predicate
      Src: /src/libyang/src/xpath.c:7390,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7391,1
    - Dst: eval_node_type_with_predicate
      Src: /src/libyang/src/xpath.c:7396,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7397,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:7401,1
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:7403,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7426,1
    - Dst: moveto_root
      Src: /src/libyang/src/xpath.c:7426,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7433,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7434,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7437,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7446,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7446,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7456,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7457,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7460,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7460,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7490,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7492,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7497,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7499,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7501,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7503,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7508,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7510,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7512,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7514,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7516,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7521,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7523,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7525,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7530,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7532,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7534,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7539,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7541,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7543,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7548,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7550,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7555,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7557,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7559,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7564,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7569,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7574,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7576,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7581,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7583,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7588,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7593,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7600,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7605,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7606,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7610,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7611,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7612,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:7618,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:7619,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:7619,1
    - Dst: set_copy
      Src: /src/libyang/src/xpath.c:7621,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7627,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7628,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7630,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7631,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7634,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7635,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7636,1
    - Dst: realloc
      Src: /src/libyang/src/xpath.c:7641,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:7642,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:7642,1
    - Dst: set_copy
      Src: /src/libyang/src/xpath.c:7644,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7650,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7651,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7653,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7654,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7659,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7660,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7661,1
    - Dst: xpath_func
      Src: /src/libyang/src/xpath.c:7666,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7671,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:7672,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:7681,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:7683,1
    - Dst: strtold
      Src: /src/libyang/src/xpath.c:7704,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7706,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7707,1
    - Dst: strerror
      Src: /src/libyang/src/xpath.c:7708,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7711,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7712,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:7717,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7720,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7721,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7752,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7753,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7757,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7758,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7761,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7762,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7763,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7775,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7776,1
    - Dst: eval_function_call
      Src: /src/libyang/src/xpath.c:7782,1
    - Dst: eval_function_call
      Src: /src/libyang/src/xpath.c:7784,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7786,1
    - Dst: eval_absolute_location_path
      Src: /src/libyang/src/xpath.c:7794,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7795,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7802,1
    - Dst: eval_literal
      Src: /src/libyang/src/xpath.c:7804,1
    - Dst: eval_literal
      Src: /src/libyang/src/xpath.c:7806,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7816,1
    - Dst: eval_number
      Src: /src/libyang/src/xpath.c:7818,1
    - Dst: eval_number
      Src: /src/libyang/src/xpath.c:7820,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7822,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7828,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7828,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7836,1
    - Dst: eval_predicate
      Src: /src/libyang/src/xpath.c:7837,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7838,1
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:7842,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7851,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7852,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7855,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7856,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7881,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7883,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7884,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:7886,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7888,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7889,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7893,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7894,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7895,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7899,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7900,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:7904,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7905,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7906,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:7910,1
    - Dst: moveto_union
      Src: /src/libyang/src/xpath.c:7912,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7913,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:7918,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:7919,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7941,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7946,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7946,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7948,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7949,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7953,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7954,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:7958,1
    - Dst: moveto_op_math
      Src: /src/libyang/src/xpath.c:7960,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7961,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7992,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7994,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7995,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:7997,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7999,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8000,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8006,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8007,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8008,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8012,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8013,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8017,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8018,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8019,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8023,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8024,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8025,1
    - Dst: moveto_op_math
      Src: /src/libyang/src/xpath.c:8027,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8028,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8033,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8034,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8060,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8062,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8063,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8065,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8067,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8068,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8074,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8075,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8076,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8080,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8081,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8085,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8086,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8087,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8091,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8092,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8093,1
    - Dst: moveto_op_math
      Src: /src/libyang/src/xpath.c:8095,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8096,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8101,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8102,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8130,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8132,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8133,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8135,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8137,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8138,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8144,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8145,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8146,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8150,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8151,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8155,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8156,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8157,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8161,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8162,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8163,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:8165,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8166,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8171,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8172,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8197,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8199,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8200,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8202,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8204,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8205,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8211,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8212,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8213,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8217,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8218,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8222,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8223,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8224,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8228,1
    - Dst: warn_equality_value
      Src: /src/libyang/src/xpath.c:8229,1
    - Dst: warn_equality_value
      Src: /src/libyang/src/xpath.c:8230,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8231,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8232,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:8234,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8235,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8240,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8241,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8264,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8266,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8267,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8269,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8271,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8272,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8276,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8278,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8283,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8284,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8285,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8290,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8291,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8295,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8296,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8297,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8301,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8302,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8304,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8305,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8310,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8311,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8334,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8336,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8337,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8339,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8341,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8342,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8346,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8348,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8353,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8354,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8355,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8360,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8361,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8365,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8368,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8369,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8373,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8374,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8376,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8377,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8382,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8383,1
    - Dst: eval_or_expr
      Src: /src/libyang/src/xpath.c:8425,1
    - Dst: eval_and_expr
      Src: /src/libyang/src/xpath.c:8428,1
    - Dst: eval_equality_expr
      Src: /src/libyang/src/xpath.c:8431,1
    - Dst: eval_relational_expr
      Src: /src/libyang/src/xpath.c:8434,1
    - Dst: eval_additive_expr
      Src: /src/libyang/src/xpath.c:8437,1
    - Dst: eval_multiplicative_expr
      Src: /src/libyang/src/xpath.c:8440,1
    - Dst: eval_unary_expr
      Src: /src/libyang/src/xpath.c:8443,1
    - Dst: eval_union_expr
      Src: /src/libyang/src/xpath.c:8446,1
    - Dst: eval_path_expr
      Src: /src/libyang/src/xpath.c:8449,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8452,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/xpath.c:8507,1
    - Dst: LOGARG
      Src: /src/libyang/src/xpath.c:8509,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:8516,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/xpath.c:8518,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:8522,1
    - Dst: lyxp_get_root_type
      Src: /src/libyang/src/xpath.c:8524,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:8525,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/xpath.c:8537,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8540,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8542,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/xpath.c:8545,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:8560,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8567,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8570,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8571,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8574,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8575,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8578,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:8580,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8581,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8583,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8584,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8584,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8585,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8586,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8586,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8587,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8589,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8593,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8601,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:8602,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8605,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8608,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8611,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8614,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8617,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8620,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8623,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8626,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8629,1
    - Dst: xml_print_node
      Src: /src/libyang/src/xpath.c:8630,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8631,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8634,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8637,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8659,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8662,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:8670,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8671,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8672,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8672,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8674,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8675,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8675,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8676,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8676,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8677,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8678,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8678,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8679,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8679,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8680,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8681,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8681,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8683,1
    - Dst: LOGMEM_RET
      Src: /src/libyang/src/xpath.c:8684,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8688,1
    - Dst: LOGMEM_RET
      Src: /src/libyang/src/xpath.c:8689,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8696,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8698,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8700,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8700,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8704,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:8704,1
    - Dst: cast_node_set_to_string
      Src: /src/libyang/src/xpath.c:8706,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:8707,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8708,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8712,1
    - Dst: cast_string_to_number
      Src: /src/libyang/src/xpath.c:8721,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8722,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8733,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:8742,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8750,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8753,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8759,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8762,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8767,1
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/xpath.c:8783,1
    - Dst: LOGARG
      Src: /src/libyang/src/xpath.c:8785,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:8790,1
    - Dst: lyxp_get_root_type
      Src: /src/libyang/src/xpath.c:8792,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:8793,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:8793,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/xpath.c:8805,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8808,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/xpath.c:8810,1
    CyclomaticComplexity: 799
    EdgeCount: 799
    ICount: 2651
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (!set_sort(set1) && !set_sort(set2))
      pos:
        line_end: 6031
        line_start: 6031
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set) && !set_sorted_dup_node_clean(set))
      pos:
        line_end: 6407
        line_start: 6407
        source_file: /src/libyang/src/xpath.c
    - condition: (!strncmp(&exp->expr[exp->tok_pos[*tok_idx]], "text", 4))
      pos:
        line_end: 7282
        line_start: 7282
        source_file: /src/libyang/src/xpath.c
    - condition: (key_count)
      pos:
        line_end: 6956
        line_start: 6956
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_LOG)
      pos:
        line_end: 8352
        line_start: 8352
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set))
      pos:
        line_end: 8703
        line_start: 8703
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set1))
      pos:
        line_end: 6038
        line_start: 6038
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8129
        line_start: 8129
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_MATH)
      pos:
        line_end: 8005
        line_start: 8005
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tok_len[*tok_idx] == 4)
      pos:
        line_end: 7273
        line_start: 7273
        source_file: /src/libyang/src/xpath.c
    - condition: (scnode && (!(scnode->nodetype & (LYS_LIST | LYS_LEAFLIST)) || predicates))
      pos:
        line_end: 5587
        line_start: 5587
        source_file: /src/libyang/src/xpath.c
    - condition: (!parent)
      pos:
        line_end: 6145
        line_start: 6145
        source_file: /src/libyang/src/xpath.c
    - condition: (!lyxp_check_token(NULL, exp, *tok_idx, LYXP_TOKEN_OPER_MATH) &&
        (exp->expr[exp->tok_pos[*tok_idx]] == '-'))
      pos:
        line_end: 7945
        line_start: 7945
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_LOG)
      pos:
        line_end: 8282
        line_start: 8282
        source_file: /src/libyang/src/xpath.c
    - condition: (set1->type == LYXP_SET_STRING)
      pos:
        line_end: 6640
        line_start: 6640
        source_file: /src/libyang/src/xpath.c
    - condition: (!set->val.nodes[i].node)
      pos:
        line_end: 5533
        line_start: 5533
        source_file: /src/libyang/src/xpath.c
    - condition: ((exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_EQUAL) || (exp->tokens[*tok_idx]
        == LYXP_TOKEN_OPER_NEQUAL))
      pos:
        line_end: 8210
        line_start: 8210
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8059
        line_start: 8059
        source_file: /src/libyang/src/xpath.c
    - condition: ((set->type == LYXP_SET_NODE_SET) || (set->type == LYXP_SET_SCNODE_SET))
      pos:
        line_end: 5309
        line_start: 5309
        source_file: /src/libyang/src/xpath.c
    - condition: (set1->type == LYXP_SET_STRING)
      pos:
        line_end: 6649
        line_start: 6649
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR1)
      pos:
        line_end: 7609
        line_start: 7609
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 7991
        line_start: 7991
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set))
      pos:
        line_end: 6781
        line_start: 6781
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8263
        line_start: 8263
        source_file: /src/libyang/src/xpath.c
    - condition: (set1 && set2)
      pos:
        line_end: 6702
        line_start: 6702
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_UNI)
      pos:
        line_end: 7892
        line_start: 7892
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR1)
      pos:
        line_end: 7293
        line_start: 7293
        source_file: /src/libyang/src/xpath.c
    - condition: ((format == LY_VALUE_JSON) || moveto_mod)
      pos:
        line_end: 7051
        line_start: 7051
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 7880
        line_start: 7880
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_COMP)
      pos:
        line_end: 8143
        line_start: 8143
        source_file: /src/libyang/src/xpath.c
    - condition: (!set->val.nodes[i].node)
      pos:
        line_end: 5620
        line_start: 5620
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 7940
        line_start: 7940
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_BRACK2)
      pos:
        line_end: 6891
        line_start: 6891
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8333
        line_start: 8333
        source_file: /src/libyang/src/xpath.c
    - condition: (ctx_node->nodetype & (LYS_LIST | LYS_LEAFLIST))
      pos:
        line_end: 6948
        line_start: 6948
        source_file: /src/libyang/src/xpath.c
    - condition: (set1->type == LYXP_SET_NUMBER)
      pos:
        line_end: 6653
        line_start: 6653
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tok_len[*tok_idx] == 2)
      pos:
        line_end: 7340
        line_start: 7340
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_MATH)
      pos:
        line_end: 8073
        line_start: 8073
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR2)
      pos:
        line_end: 7299
        line_start: 7299
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8196
        line_start: 8196
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR2)
      pos:
        line_end: 7760
        line_start: 7760
        source_file: /src/libyang/src/xpath.c
    - condition: (target != LYXP_SET_NODE_SET)
      pos:
        line_end: 8658
        line_start: 8658
        source_file: /src/libyang/src/xpath.c
    - condition: (set1->type == set2->type)
      pos:
        line_end: 6631
        line_start: 6631
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR2)
      pos:
        line_end: 7658
        line_start: 7658
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8822
      start: 4412
    functionDepth: 15
    functionLinenumber: 4412
    functionLinenumberEnd: 8822
    functionName: xpath_normalize_space
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - moveto_self
    - lys_nodetype2str
    - isfinite
    - signbit
    - eval_multiplicative_expr
    - moveto_op_comp
    - warn_get_scnode_in_ctx
    - realloc
    - set_sorted_merge
    - memset
    - eval_relative_location_path
    - set_replace_node
    - lyd_create_list
    - lyd_create_term2
    - LOGMEM::LOGMEM
    - lyd_find_sibling_val
    - set_comp_canonize
    - moveto_scnode
    - eval_equality_expr
    - eval_union_expr
    - xml_print_node
    - LOG_LOCBACK
    - LY_CHECK_ARG_RET
    - moveto_node_alldesc
    - malloc::malloc
    - lyplg_type_validate_patterns
    - set_sort
    - eval_and_expr
    - eval_predicate
    - eval_absolute_location_path
    - set_fill_set
    - memcpy
    - ly_path_parse_predicate
    - LOGINT
    - set_copy
    - lyxp_check_token
    - LOGWRN
    - eval_literal
    - lyxp_get_root_type
    - LY_CHECK_ERR_RET
    - warn_is_specific_type
    - cast_node_set_to_string
    - strncmp
    - lydict_insert
    - ly_err_print
    - LY_CHECK_GOTO
    - ly_path_compile_predicate
    - eval_node_type_with_predicate
    - LY_CHECK_ERR_GOTO
    - eval_function_call
    - ly_realloc::ly_realloc
    - moveto_root
    - LOGMEM_RET
    - xpath_text
    - lysc_node_child
    - ly_log_options
    - moveto_op_math
    - moveto_resolve_model
    - strstr
    - lyd_parent
    - eval_name_test_with_predicate
    - moveto_parent
    - moveto_scnode_self
    - moveto_self_add_children_r
    - lysc_data_parent
    - lyxp_set_free_content
    - eval_additive_expr
    - lysc_path
    - LOGINT_RET
    - ly_path_predicates_free
    - set_comp_cast
    - set_fill_boolean
    - isnan
    - strcmp
    - set_insert_node
    - lyxp_set_free
    - LOGDBG
    - LOG_LOCSET
    - lyd_child
    - eval_expr_select
    - isinf
    - strlen
    - exp_check_token2
    - moveto_attr_alldesc
    - set_fill_number
    - lys_find_child
    - asprintf
    - LY_CHECK_RET
    - moveto_scnode_check
    - print_set_type
    - is_xmlws
    - LY_ARRAY_NEW_RET
    - warn_operands
    - set_dup_node_check
    - warn_equality_value
    - moveto_scnode_parent
    - set_sorted_dup_node_clean
    - assert
    - eval_name_test_with_predicate_get_scnode
    - set_scnode_clear_ctx
    - pcre2_code_free
    - set_init
    - lys_getnext
    - lyxp_set_scnode_contains
    - ly_print_
    - eval_name_test_try_compile_predicates
    - lyxp_set_scnode_merge
    - LOGVAL
    - cast_string_to_number
    - eval_relational_expr
    - xpath_func
    - warn_is_string_type
    - lyxp_print_token
    - ly_resolve_prefix
    - lysc_has_when
    - xpath_node
    - moveto_attr
    - malloc
    - strdup
    - LY_ARRAY_FREE
    - warn_is_numeric_type
    - LY_SUCCESS::LY_SUCCESS
    - lyd_find_sibling_first
    - eval_unary_expr
    - calloc
    - set_remove_node
    - LOGARG
    - set_remove_nodes_none
    - moveto_scnode_alldesc
    - lydict_remove
    - eval_path_expr
    - moveto_union
    - strtold
    - lyd_first_sibling
    - moveto_node_hash
    - lyxp_expr_free
    - xpath_round
    - eval_number
    - moveto_node_check
    - lyd_free_tree
    - lys_compile_type_pattern_check
    - moveto_node
    - ly_strnchr
    - free
    - ly_err_free
    - eval_or_expr
    - ly_realloc
    - lyxp_set_cast
    - LOGMEM
    - set_scnode_new_in_ctx
    - strerror
    - ly_ctx_get_module_iter
    - xpath_floor
    - lyxp_set_scnode_insert_node
    - set_remove_node_none
    - set_fill_string
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_normalize_space(struct lyxp_set **args, uint16_t arg_count,
      struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4508,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4512,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4514,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4520
      start: 4504
    functionDepth: 3
    functionLinenumber: 4504
    functionLinenumberEnd: 4520
    functionName: xpath_not
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_fill_boolean
    - lyxp_set_cast
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_not(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4538,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4543,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4544,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:4545,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4547,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4552
      start: 4532
    functionDepth: 4
    functionLinenumber: 4532
    functionLinenumberEnd: 4552
    functionName: xpath_number
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_set_cast
    - set_fill_set
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_number(struct lyxp_set **args, uint16_t arg_count, struct
      lyxp_set *set, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4568,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:4573,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:4573,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4576,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4580,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - UNUSED(args)
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4585
      start: 4564
    functionDepth: 3
    functionLinenumber: 4564
    functionLinenumberEnd: 4585
    functionName: xpath_position
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    - set_fill_number
    - set_scnode_clear_ctx
    - print_set_type
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_position(struct lyxp_set **UNUSED(args), uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4607,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4609,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4609,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4610,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4611,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4615,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4617,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4617,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4618,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4619,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4622,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4626,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4627,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4628,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4629,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/xpath.c:4631,1
    - Dst: calloc
      Src: /src/libyang/src/xpath.c:4632,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/xpath.c:4633,1
    - Dst: lys_compile_type_pattern_check
      Src: /src/libyang/src/xpath.c:4634,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/xpath.c:4635,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/xpath.c:4637,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/xpath.c:4641,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4641,1
    - Dst: pcre2_code_free
      Src: /src/libyang/src/xpath.c:4642,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:4643,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/xpath.c:4644,1
    - Dst: ly_err_print
      Src: /src/libyang/src/xpath.c:4646,1
    - Dst: ly_err_free
      Src: /src/libyang/src/xpath.c:4647,1
    - Dst: ly_err_free
      Src: /src/libyang/src/xpath.c:4652,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4653,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4655,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4659
      start: 4598
    functionDepth: 5
    functionLinenumber: 4598
    functionLinenumberEnd: 4659
    functionName: xpath_re_match
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - lys_nodetype2str
    - LY_CHECK_RET
    - LY_ARRAY_FREE
    - ly_err_print
    - warn_get_scnode_in_ctx
    - LY_ARRAY_NEW_RET
    - calloc
    - LOG_LOCBACK
    - set_scnode_clear_ctx
    - pcre2_code_free
    - lys_compile_type_pattern_check
    - free
    - ly_err_free
    - lyplg_type_validate_patterns
    - lyxp_set_cast
    - set_fill_boolean
    - warn_is_string_type
    - LOG_LOCSET
    - LOGWRN
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_re_match(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4680,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4681,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4683,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4683,1
    - Dst: warn_is_specific_type
      Src: /src/libyang/src/xpath.c:4685,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4686,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4689,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4693,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4694,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4698,1
    - Dst: xpath_floor
      Src: /src/libyang/src/xpath.c:4701,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4702,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4703,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4707
      start: 4672
    functionDepth: 4
    functionLinenumber: 4672
    functionLinenumberEnd: 4707
    functionName: xpath_round
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - warn_is_specific_type
    - set_fill_number
    - xpath_floor
    - LY_CHECK_RET
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_round(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4727,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4729,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4729,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4730,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4731,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4735,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4737,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4737,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4738,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4739,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4742,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4746,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4747,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4748,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4749,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:4751,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4751,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4752,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:4754,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4758
      start: 4720
    functionDepth: 3
    functionLinenumber: 4720
    functionLinenumberEnd: 4758
    functionName: xpath_starts_with
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - set_fill_boolean
    - LY_CHECK_RET
    - warn_is_string_type
    - strncmp
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_starts_with(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4776,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4781,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4782,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:4783,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4785,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4790
      start: 4770
    functionDepth: 4
    functionLinenumber: 4770
    functionLinenumberEnd: 4790
    functionName: xpath_string
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyxp_set_cast
    - set_fill_set
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_string(struct lyxp_set **args, uint16_t arg_count, struct
      lyxp_set *set, uint32_t options)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4809,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4811,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4811,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4812,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4813,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4816,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4818,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4818,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4819,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4820,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4823,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4828,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4829,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4830,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4830,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4832,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4833,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:4834,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4834,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4838
      start: 4802
    functionDepth: 3
    functionLinenumber: 4802
    functionLinenumberEnd: 4838
    functionName: xpath_string_length
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - set_fill_number
    - LY_CHECK_RET
    - warn_is_string_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_string_length(struct lyxp_set **args, uint16_t arg_count,
      struct lyxp_set *set, uint32_t options)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4862,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4864,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4864,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4865,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4866,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4870,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4872,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4872,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:4873,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4874,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4879,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4881,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4881,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:4882,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4883,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4886,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4890,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4891,1
    - Dst: xpath_round
      Src: /src/libyang/src/xpath.c:4894,1
    - Dst: isfinite
      Src: /src/libyang/src/xpath.c:4897,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:4899,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:4899,1
    - Dst: xpath_round
      Src: /src/libyang/src/xpath.c:4907,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4908,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:4909,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:4909,1
    - Dst: isfinite
      Src: /src/libyang/src/xpath.c:4911,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4933,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 70
    argCount: 4
    argNames:
    - args
    - arg_count
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4935
      start: 4853
    functionDepth: 5
    functionLinenumber: 4853
    functionLinenumberEnd: 4935
    functionName: xpath_substring
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - xpath_round
    - set_scnode_clear_ctx
    - warn_is_numeric_type
    - lys_nodetype2str
    - set_fill_string
    - isinf
    - isfinite
    - isnan
    - signbit
    - LY_CHECK_RET
    - warn_is_string_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_substring(struct lyxp_set **args, uint16_t arg_count,
      struct lyxp_set *set, uint32_t options)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4956,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4958,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4958,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4959,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4960,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:4964,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4966,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:4966,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:4967,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:4968,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:4971,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4975,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4976,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:4977,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:4978,1
    - Dst: strstr
      Src: /src/libyang/src/xpath.c:4980,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:4982,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:4984,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4988
      start: 4948
    functionDepth: 3
    functionLinenumber: 4948
    functionLinenumberEnd: 4988
    functionName: xpath_substring_after
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strstr
    - strlen
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - set_fill_string
    - LY_CHECK_RET
    - warn_is_string_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_substring_after(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5009,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5011,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5011,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5012,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5013,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5017,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5019,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5019,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5020,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5021,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5024,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5028,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5029,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5030,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5031,1
    - Dst: strstr
      Src: /src/libyang/src/xpath.c:5033,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:5035,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:5037,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5041
      start: 5001
    functionDepth: 3
    functionLinenumber: 5001
    functionLinenumberEnd: 5041
    functionName: xpath_substring_before
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strstr
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - set_fill_string
    - LY_CHECK_RET
    - warn_is_string_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_substring_before(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5069,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5070,1
    - Dst: warn_is_numeric_type
      Src: /src/libyang/src/xpath.c:5071,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5072,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5077,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:5081,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5084,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5084,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:5090,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:5093,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:5094,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:5094,1
    - Dst: cast_node_set_to_string
      Src: /src/libyang/src/xpath.c:5102,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5103,1
    - Dst: cast_string_to_number
      Src: /src/libyang/src/xpath.c:5104,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:5105,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:5109,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5112
      start: 5053
    functionDepth: 15
    functionLinenumber: 5053
    functionLinenumberEnd: 5112
    functionName: xpath_sum
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - cast_string_to_number
    - set_scnode_clear_ctx
    - warn_is_numeric_type
    - lys_nodetype2str
    - set_init
    - malloc
    - LY_CHECK_ERR_RET
    - set_fill_number
    - free
    - cast_node_set_to_string
    - LY_CHECK_RET
    - LOGVAL
    - print_set_type
    - LOGWRN
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_sum(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5130,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5135,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5135,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:5142,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5154,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - UNUSED(args)
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5160
      start: 5124
    functionDepth: 6
    functionLinenumber: 5124
    functionLinenumberEnd: 5160
    functionName: xpath_text
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_remove_node
    - LOGINT_RET
    - set_scnode_clear_ctx
    - LOGVAL
    - print_set_type
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_text(struct lyxp_set **UNUSED(args), uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5184,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5186,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5186,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5187,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5188,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5192,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5194,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5194,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5195,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5196,1
    - Dst: warn_get_scnode_in_ctx
      Src: /src/libyang/src/xpath.c:5200,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5202,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/xpath.c:5202,1
    - Dst: warn_is_string_type
      Src: /src/libyang/src/xpath.c:5203,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:5204,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5207,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5211,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5212,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5213,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5214,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:5215,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5216,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:5218,1
    - Dst: malloc::malloc
      Src: /src/libyang/src/xpath.c:5218,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:5219,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/xpath.c:5219,1
    - Dst: strlen
      Src: /src/libyang/src/xpath.c:5229,1
    - Dst: ly_realloc::ly_realloc
      Src: /src/libyang/src/xpath.c:5250,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:5251,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/xpath.c:5251,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5255,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 67
    argCount: 4
    argNames:
    - args
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5260
      start: 5174
    functionDepth: 2
    functionLinenumber: 5174
    functionLinenumberEnd: 5260
    functionName: xpath_translate
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - strlen
    - set_scnode_clear_ctx
    - lys_nodetype2str
    - LY_CHECK_ERR_RET
    - ly_realloc::ly_realloc
    - malloc::malloc
    - LY_CHECK_RET
    - LOGMEM::LOGMEM
    - warn_is_string_type
    - warn_get_scnode_in_ctx
    - LOGWRN
    - lyxp_set_cast
    - lyxp_set_free_content
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_translate(struct lyxp_set **args, uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5276,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:5280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - UNUSED(args)
    - UNUSED
    - set
    - options
    argTypes:
    - struct lyxp_set**
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5282
      start: 5272
    functionDepth: 3
    functionLinenumber: 5272
    functionLinenumberEnd: 5282
    functionName: xpath_true
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - set_fill_boolean
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR xpath_true(struct lyxp_set **UNUSED(args), uint16_t UNUSED(arg_count),
      struct lyxp_set *set, uint32_t options)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5310,1
    - Dst: ly_strnchr
      Src: /src/libyang/src/xpath.c:5312,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/xpath.c:5315,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5319,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5347,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 5
    argNames:
    - qname
    - qname_len
    - set
    - ctx_scnode
    - moveto_mod
    argTypes:
    - char**
    - uint16_t*
    - struct lyxp_set*
    - struct lysc_node*
    - struct lys_module**
    assertStmts:
    - condition: ((set->type == LYXP_SET_NODE_SET) || (set->type == LYXP_SET_SCNODE_SET))
      pos:
        line_end: 5309
        line_start: 5309
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 5354
      start: 5302
    functionDepth: 5
    functionLinenumber: 5302
    functionLinenumberEnd: 5354
    functionName: moveto_resolve_model
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 2
    functionsReached:
    - ly_resolve_prefix
    - LOGVAL
    - ly_strnchr
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR moveto_resolve_model(const char **qname, uint16_t *qname_len,
      const struct lyxp_set *set,\n        const struct lysc_node *ctx_scnode, const
      struct lys_module **moveto_mod)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:5372,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5373,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5373,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - set
    - options
    argTypes:
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5381
      start: 5364
    functionDepth: 8
    functionLinenumber: 5364
    functionLinenumberEnd: 5381
    functionName: moveto_root
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - set_insert_node
    - lyxp_set_scnode_insert_node
    - set_scnode_clear_ctx
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_root(struct lyxp_set *set, uint32_t options)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5399,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:5416,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5435,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:5440,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 35
    argCount: 6
    argNames:
    - node
    - ctx_node
    - set
    - node_name
    - moveto_mod
    - options
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - struct lyxp_set*
    - char*
    - struct lys_module*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5446
      start: 5395
    functionDepth: 2
    functionLinenumber: 5395
    functionLinenumberEnd: 5446
    functionName: moveto_node_check
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - lysc_has_when
    - strcmp
    - LOGINT
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR moveto_node_check(const struct lyd_node *node, const struct
      lyd_node *ctx_node, const struct lyxp_set *set,\n        const char *node_name,
      const struct lys_module *moveto_mod, uint32_t options)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5462,1
    - Dst: LOGINT
      Src: /src/libyang/src/xpath.c:5479,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:5497,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 5
    argNames:
    - node
    - ctx_scnode
    - set
    - node_name
    - moveto_mod
    argTypes:
    - struct lysc_node*
    - struct lysc_node*
    - struct lyxp_set*
    - char*
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5503
      start: 5458
    functionDepth: 1
    functionLinenumber: 5458
    functionLinenumberEnd: 5503
    functionName: moveto_scnode_check
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - strcmp
    - LOGINT
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR moveto_scnode_check(const struct lysc_node *node, const struct
      lysc_node *ctx_scnode, const struct lyxp_set *set,\n        const char *node_name,
      const struct lys_module *moveto_mod)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5526,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5526,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5534,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:5542,1
    - Dst: moveto_node_check
      Src: /src/libyang/src/xpath.c:5546,1
    - Dst: set_replace_node
      Src: /src/libyang/src/xpath.c:5549,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5552,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5562,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 4
    argNames:
    - set
    - moveto_mod
    - ncname
    - options
    argTypes:
    - struct lyxp_set*
    - struct lys_module*
    - char*
    - uint32_t
    assertStmts:
    - condition: (!set->val.nodes[i].node)
      pos:
        line_end: 5533
        line_start: 5533
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 5567
      start: 5514
    functionDepth: 8
    functionLinenumber: 5514
    functionLinenumberEnd: 5567
    functionName: moveto_node
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_remove_node
    - moveto_node_check
    - set_replace_node
    - set_insert_node
    - LOGVAL
    - print_set_type
    - lyd_child
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_node(struct lyxp_set *set, const struct lys_module *moveto_mod,
      const char *ncname, uint32_t options)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5588,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5595,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5595,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5602,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5606,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:5612,1
    - Dst: lyd_create_list
      Src: /src/libyang/src/xpath.c:5612,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:5614,1
    - Dst: lyd_create_term2
      Src: /src/libyang/src/xpath.c:5614,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:5621,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:5627,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/xpath.c:5632,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/xpath.c:5634,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:5638,1
    - Dst: set_replace_node
      Src: /src/libyang/src/xpath.c:5645,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5649,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/xpath.c:5654,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 58
    argCount: 4
    argNames:
    - set
    - scnode
    - predicates
    - options
    argTypes:
    - struct lyxp_set*
    - struct lysc_node*
    - struct ly_path_predicate*
    - uint32_t
    assertStmts:
    - condition: (scnode && (!(scnode->nodetype & (LYS_LIST | LYS_LEAFLIST)) || predicates))
      pos:
        line_end: 5587
        line_start: 5587
        source_file: /src/libyang/src/xpath.c
    - condition: (!set->val.nodes[i].node)
      pos:
        line_end: 5620
        line_start: 5620
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 5656
      start: 5579
    functionDepth: 8
    functionLinenumber: 5579
    functionLinenumberEnd: 5656
    functionName: moveto_node_hash
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_remove_node
    - lysc_has_when
    - set_replace_node
    - lyd_free_tree
    - lyd_create_list
    - lyd_create_term2
    - lyd_find_sibling_val
    - LOGVAL
    - print_set_type
    - lyd_child
    - LY_CHECK_GOTO
    - lyd_find_sibling_first
    - lyxp_set_free_content
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR moveto_node_hash(struct lyxp_set *set, const struct lysc_node
      *scnode, const struct ly_path_predicate *predicates,\n        uint32_t options)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5682,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5682,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/xpath.c:5713,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:5716,1
    - Dst: moveto_scnode_check
      Src: /src/libyang/src/xpath.c:5717,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5718,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5718,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:5731,1
    - Dst: moveto_scnode_check
      Src: /src/libyang/src/xpath.c:5732,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5733,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5733,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 59
    argCount: 4
    argNames:
    - set
    - moveto_mod
    - ncname
    - options
    argTypes:
    - struct lyxp_set*
    - struct lys_module*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5754
      start: 5667
    functionDepth: 4
    functionLinenumber: 5667
    functionLinenumberEnd: 5754
    functionName: moveto_scnode
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - lys_getnext
    - ly_ctx_get_module_iter
    - LY_CHECK_RET
    - LOGVAL
    - lyxp_set_scnode_insert_node
    - moveto_scnode_check
    - print_set_type
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_scnode(struct lyxp_set *set, const struct lys_module
      *moveto_mod, const char *ncname, uint32_t options)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5779,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5779,1
    - Dst: moveto_node
      Src: /src/libyang/src/xpath.c:5784,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5785,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:5788,1
    - Dst: moveto_node_check
      Src: /src/libyang/src/xpath.c:5794,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5797,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:5798,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:5810,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:5823,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:5828,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:5837,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:5838,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 4
    argNames:
    - set
    - moveto_mod
    - ncname
    - options
    argTypes:
    - struct lyxp_set*
    - struct lys_module*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5841
      start: 5766
    functionDepth: 9
    functionLinenumber: 5766
    functionLinenumberEnd: 5841
    functionName: moveto_node_alldesc
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_dup_node_check
    - lyd_parent
    - set_init
    - moveto_node_check
    - moveto_node
    - set_insert_node
    - LY_CHECK_RET
    - LOGVAL
    - print_set_type
    - lyd_child
    - lyxp_set_free_content
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_node_alldesc(struct lyxp_set *set, const struct lys_module
      *moveto_mod, const char *ncname, uint32_t options)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5864,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5864,1
    - Dst: moveto_scnode_check
      Src: /src/libyang/src/xpath.c:5889,1
    - Dst: lyxp_set_scnode_contains
      Src: /src/libyang/src/xpath.c:5893,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:5900,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:5900,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/xpath.c:5909,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 68
    argCount: 4
    argNames:
    - set
    - moveto_mod
    - ncname
    - options
    argTypes:
    - struct lyxp_set*
    - struct lys_module*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5939
      start: 5852
    functionDepth: 3
    functionLinenumber: 5852
    functionLinenumberEnd: 5939
    functionName: moveto_scnode_alldesc
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - lyxp_set_scnode_contains
    - LY_CHECK_RET
    - LOGVAL
    - lyxp_set_scnode_insert_node
    - moveto_scnode_check
    - print_set_type
    - lysc_node_child
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_scnode_alldesc(struct lyxp_set *set, const struct lys_module
      *moveto_mod, const char *ncname, uint32_t options)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:5960,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:5960,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:5985,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:5994,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 3
    argNames:
    - set
    - mod
    - ncname
    argTypes:
    - struct lyxp_set*
    - struct lys_module*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5999
      start: 5950
    functionDepth: 8
    functionLinenumber: 5950
    functionLinenumberEnd: 5999
    functionName: moveto_attr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_remove_node
    - LOGVAL
    - set_insert_node
    - print_set_type
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_attr(struct lyxp_set *set, const struct lys_module *mod,
      const char *ncname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6015,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6015,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6015,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:6025,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:6027,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6032,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6032,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6032,1
    - Dst: set_sorted_merge
      Src: /src/libyang/src/xpath.c:6035,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6036,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6039,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6039,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - set1
    - set2
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    assertStmts:
    - condition: (!set_sort(set1) && !set_sort(set2))
      pos:
        line_end: 6031
        line_start: 6031
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set1))
      pos:
        line_end: 6038
        line_start: 6038
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 6042
      start: 6009
    functionDepth: 8
    functionLinenumber: 6009
    functionLinenumberEnd: 6042
    functionName: moveto_union
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - assert
    - memset
    - LY_CHECK_RET
    - set_sort
    - LOGVAL
    - print_set_type
    - memcpy
    - set_sorted_merge
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_union(struct lyxp_set *set1, struct lyxp_set *set2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6066,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6066,1
    - Dst: set_copy
      Src: /src/libyang/src/xpath.c:6073,1
    - Dst: moveto_node_alldesc
      Src: /src/libyang/src/xpath.c:6075,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6077,1
    - Dst: moveto_union
      Src: /src/libyang/src/xpath.c:6081,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6083,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6086,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6108,1
    - Dst: set_remove_node
      Src: /src/libyang/src/xpath.c:6117,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 4
    argNames:
    - set
    - mod
    - ncname
    - options
    argTypes:
    - struct lyxp_set*
    - struct lys_module*
    - char*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6122
      start: 6054
    functionDepth: 10
    functionLinenumber: 6054
    functionLinenumberEnd: 6122
    functionName: moveto_attr_alldesc
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_remove_node
    - moveto_node_alldesc
    - set_insert_node
    - lyxp_set_free
    - set_copy
    - LOGVAL
    - moveto_union
    - print_set_type
    linkageType: ''
    returnType: int
    signature: int moveto_attr_alldesc(struct lyxp_set *set, const struct lys_module
      *mod, const char *ncname, uint32_t options)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6146,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:6154,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6155,1
    - Dst: lyd_child
      Src: /src/libyang/src/xpath.c:6161,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:6164,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:6175,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:6179,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6180,1
    - Dst: moveto_self_add_children_r
      Src: /src/libyang/src/xpath.c:6183,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6184,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 6
    argNames:
    - parent
    - parent_pos
    - parent_type
    - to_set
    - dup_check_set
    - options
    argTypes:
    - struct lyd_node*
    - uint32_t
    - enum lyxp_node_type
    - struct lyxp_set*
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (!parent)
      pos:
        line_end: 6145
        line_start: 6145
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 6189
      start: 6136
    functionDepth: 8
    functionLinenumber: 6136
    functionLinenumberEnd: 6189
    functionName: moveto_self_add_children_r
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 2
    functionsReached:
    - lysc_has_when
    - set_dup_node_check
    - LOGINT_RET
    - set_insert_node
    - LY_CHECK_RET
    - lyd_child
    - moveto_self_add_children_r
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR moveto_self_add_children_r(const struct lyd_node *parent, uint32_t
      parent_pos, enum lyxp_node_type parent_type,\n        struct lyxp_set *to_set,
      const struct lyxp_set *dup_check_set, uint32_t options)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:6175,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:6179,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6180,1
    - Dst: moveto_self_add_children_r
      Src: /src/libyang/src/xpath.c:6183,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6184,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6186
      start: 6168
    functionDepth: 9
    functionLinenumber: 6168
    functionLinenumberEnd: 6186
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 33
    functionsReached:
    - lysc_has_when
    - set_dup_node_check
    - set_insert_node
    - LY_CHECK_RET
    - moveto_self_add_children_r
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(first, iter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6211,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6211,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:6221,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6224,1
    - Dst: moveto_self_add_children_r
      Src: /src/libyang/src/xpath.c:6232,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6235,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6243,1
    - Dst: memcpy
      Src: /src/libyang/src/xpath.c:6244,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - set
    - all_desc
    - options
    argTypes:
    - struct lyxp_set*
    - ly_bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6247
      start: 6200
    functionDepth: 9
    functionLinenumber: 6200
    functionLinenumberEnd: 6247
    functionName: moveto_self
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_init
    - set_insert_node
    - LOGVAL
    - print_set_type
    - moveto_self_add_children_r
    - lyxp_set_free_content
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_self(struct lyxp_set *set, ly_bool all_desc, uint32_t
      options)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6271,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6271,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/xpath.c:6307,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:6310,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6316,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:6316,1
    - Dst: lys_getnext
      Src: /src/libyang/src/xpath.c:6323,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6329,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:6329,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 51
    argCount: 3
    argNames:
    - set
    - all_desc
    - options
    argTypes:
    - struct lyxp_set*
    - ly_bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6335
      start: 6258
    functionDepth: 4
    functionLinenumber: 6258
    functionLinenumberEnd: 6335
    functionName: moveto_scnode_self
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - lys_getnext
    - ly_ctx_get_module_iter
    - LY_CHECK_RET
    - LOGVAL
    - lyxp_set_scnode_insert_node
    - print_set_type
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_scnode_self(struct lyxp_set *set, ly_bool all_desc, uint32_t
      options)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6358,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6358,1
    - Dst: moveto_self
      Src: /src/libyang/src/xpath.c:6364,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6365,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:6372,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:6378,1
    - Dst: set_remove_node_none
      Src: /src/libyang/src/xpath.c:6382,1
    - Dst: lysc_has_when
      Src: /src/libyang/src/xpath.c:6387,1
    - Dst: set_dup_node_check
      Src: /src/libyang/src/xpath.c:6400,1
    - Dst: set_remove_node_none
      Src: /src/libyang/src/xpath.c:6401,1
    - Dst: set_replace_node
      Src: /src/libyang/src/xpath.c:6403,1
    - Dst: set_remove_nodes_none
      Src: /src/libyang/src/xpath.c:6407,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6408,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6408,1
    - Dst: set_sorted_dup_node_clean
      Src: /src/libyang/src/xpath.c:6408,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 46
    argCount: 3
    argNames:
    - set
    - all_desc
    - options
    argTypes:
    - struct lyxp_set*
    - ly_bool
    - uint32_t
    assertStmts:
    - condition: (!set_sort(set) && !set_sorted_dup_node_clean(set))
      pos:
        line_end: 6407
        line_start: 6407
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 6411
      start: 6346
    functionDepth: 10
    functionLinenumber: 6346
    functionLinenumberEnd: 6411
    functionName: moveto_parent
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - lysc_has_when
    - set_dup_node_check
    - moveto_self
    - lyd_parent
    - LOGINT_RET
    - set_replace_node
    - set_remove_nodes_none
    - LY_CHECK_RET
    - set_sort
    - LOGVAL
    - print_set_type
    - set_remove_node_none
    - set_sorted_dup_node_clean
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_parent(struct lyxp_set *set, ly_bool all_desc, uint32_t
      options)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:6435,1
    - Dst: print_set_type
      Src: /src/libyang/src/xpath.c:6435,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6441,1
    - Dst: moveto_scnode_self
      Src: /src/libyang/src/xpath.c:6441,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/xpath.c:6460,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6475,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:6475,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 3
    argNames:
    - set
    - all_desc
    - options
    argTypes:
    - struct lyxp_set*
    - ly_bool
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6491
      start: 6422
    functionDepth: 5
    functionLinenumber: 6422
    functionLinenumberEnd: 6491
    functionName: moveto_scnode_parent
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - moveto_scnode_self
    - LOGVAL
    - lyxp_set_scnode_insert_node
    - print_set_type
    - lysc_data_parent
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_scnode_parent(struct lyxp_set *set, ly_bool all_desc,
      uint32_t options)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/xpath.c:6542,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:6543,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6552,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6555,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6558,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6561,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6564,1
    - Dst: set_comp_canonize
      Src: /src/libyang/src/xpath.c:6564,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6564,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:6567,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6568,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6569,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6569,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6573,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6582,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6585,1
    - Dst: set_comp_cast
      Src: /src/libyang/src/xpath.c:6588,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6591,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6594,1
    - Dst: set_comp_canonize
      Src: /src/libyang/src/xpath.c:6594,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6594,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:6597,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6598,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:6599,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6599,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6603,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6610,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6617,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6618,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6620,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6621,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6622,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6623,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6626,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6627,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6628,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6629,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6632,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6641,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:6642,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6650,1
    - Dst: strcmp
      Src: /src/libyang/src/xpath.c:6651,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6654,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6672,1
    - Dst: set_fill_boolean
      Src: /src/libyang/src/xpath.c:6674,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 115
    argCount: 4
    argNames:
    - set1
    - set2
    - op
    - options
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    - char*
    - uint32_t
    assertStmts:
    - condition: (set1->type == LYXP_SET_NUMBER)
      pos:
        line_end: 6653
        line_start: 6653
        source_file: /src/libyang/src/xpath.c
    - condition: (set1->type == set2->type)
      pos:
        line_end: 6631
        line_start: 6631
        source_file: /src/libyang/src/xpath.c
    - condition: (set1->type == LYXP_SET_STRING)
      pos:
        line_end: 6640
        line_start: 6640
        source_file: /src/libyang/src/xpath.c
    - condition: (set1->type == LYXP_SET_STRING)
      pos:
        line_end: 6649
        line_start: 6649
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 6678
      start: 6503
    functionDepth: 9
    functionLinenumber: 6503
    functionLinenumberEnd: 6678
    functionName: moveto_op_comp
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ERR_RET
    - memset
    - set_comp_cast
    - set_fill_boolean
    - strcmp
    - LY_CHECK_RET
    - set_comp_canonize
    - moveto_op_comp
    - lyxp_set_cast
    - lyxp_set_free_content
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_op_comp(struct lyxp_set *set1, struct lyxp_set *set2,
      const char *op, uint32_t options)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6696,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6697,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:6699,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6703,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6705,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6706,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6707,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6708,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:6737,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - set1
    - set2
    - op
    argTypes:
    - struct lyxp_set*
    - struct lyxp_set*
    - char*
    assertStmts:
    - condition: (set1 && set2)
      pos:
        line_end: 6702
        line_start: 6702
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 6741
      start: 6689
    functionDepth: 3
    functionLinenumber: 6689
    functionLinenumberEnd: 6741
    functionName: moveto_op_math
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LOGINT_RET
    - LY_CHECK_RET
    - lyxp_set_free
    - lyxp_set_cast
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR moveto_op_math(struct lyxp_set *set1, struct lyxp_set *set2,
      const char *op)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:6772,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:6773,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6778,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6779,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6782,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:6782,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:6794,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:6795,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:6799,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:6800,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6810,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6812,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6824,1
    - Dst: set_remove_node_none
      Src: /src/libyang/src/xpath.c:6828,1
    - Dst: set_remove_nodes_none
      Src: /src/libyang/src/xpath.c:6831,1
    - Dst: set_scnode_new_in_ctx
      Src: /src/libyang/src/xpath.c:6848,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6859,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:6860,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:6876,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:6878,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6880,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:6884,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6886,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:6888,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6892,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:6893,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:6894,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 98
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - set
    - options
    - parent_pos_pred
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - struct lyxp_set*
    - uint32_t
    - ly_bool
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_BRACK2)
      pos:
        line_end: 6891
        line_start: 6891
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set))
      pos:
        line_end: 6781
        line_start: 6781
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 6898
      start: 6761
    functionDepth: 8
    functionLinenumber: 6761
    functionLinenumberEnd: 6898
    functionName: eval_predicate
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_new_in_ctx
    - lyd_parent
    - set_init
    - set_remove_nodes_none
    - set_insert_node
    - LY_CHECK_RET
    - LOGDBG
    - set_sort
    - eval_expr_select
    - set_remove_node_none
    - lyxp_print_token
    - lyxp_set_cast
    - set_fill_set
    - lyxp_set_free_content
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_predicate(const struct lyxp_expr *exp, uint16_t *tok_idx,
      struct lyxp_set *set, uint32_t options, ly_bool parent_pos_pred)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:6912,1
    - Dst: set_fill_string
      Src: /src/libyang/src/xpath.c:6914,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:6917,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:6918,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - exp
    - tok_idx
    - set
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6920
      start: 6907
    functionDepth: 3
    functionLinenumber: 6907
    functionLinenumberEnd: 6920
    functionName: eval_literal
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_fill_string
    - LOGDBG
    - lyxp_print_token
    linkageType: ''
    returnType: void
    signature: void eval_literal(const struct lyxp_expr *exp, uint16_t *tok_idx, struct
      lyxp_set *set)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6949,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/xpath.c:6956,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:6957,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6963,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6968,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6974,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6987,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6992,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:6998,1
    - Dst: ly_log_options
      Src: /src/libyang/src/xpath.c:7008,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7011,1
    - Dst: ly_path_parse_predicate
      Src: /src/libyang/src/xpath.c:7011,1
    - Dst: ly_path_compile_predicate
      Src: /src/libyang/src/xpath.c:7015,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7017,1
    - Dst: ly_log_options
      Src: /src/libyang/src/xpath.c:7023,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/xpath.c:7024,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 9
    argNames:
    - exp
    - tok_idx
    - ctx_node
    - cur_mod
    - cur_node
    - format
    - prefix_data
    - predicates
    - pred_type
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - struct lysc_node*
    - struct lys_module*
    - struct lysc_node*
    - LY_VALUE_FORMAT
    - void*
    - struct ly_path_predicate**
    - enum ly_path_pred_type*
    assertStmts:
    - condition: (ctx_node->nodetype & (LYS_LIST | LYS_LEAFLIST))
      pos:
        line_end: 6948
        line_start: 6948
        source_file: /src/libyang/src/xpath.c
    - condition: (key_count)
      pos:
        line_end: 6956
        line_start: 6956
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7026
      start: 6937
    functionDepth: 9
    functionLinenumber: 6937
    functionLinenumberEnd: 7026
    functionName: eval_name_test_try_compile_predicates
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - ly_path_compile_predicate
    - lyxp_expr_free
    - ly_path_parse_predicate
    - lysc_node_child
    - lyxp_check_token
    - LY_CHECK_GOTO
    - ly_log_options
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR eval_name_test_try_compile_predicates(const struct lyxp_expr
      *exp, uint16_t *tok_idx, const struct lysc_node *ctx_node,\n        const struct
      lys_module *cur_mod, const struct lysc_node *cur_node, LY_VALUE_FORMAT format,
      void *prefix_data,\n        struct ly_path_predicate **predicates, enum ly_path_pred_type
      *pred_type)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7052,1
    - Dst: ly_ctx_get_module_iter
      Src: /src/libyang/src/xpath.c:7059,1
    - Dst: lys_find_child
      Src: /src/libyang/src/xpath.c:7060,1
    - Dst: lys_find_child
      Src: /src/libyang/src/xpath.c:7073,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/xpath.c:7075,1
    - Dst: lys_find_child
      Src: /src/libyang/src/xpath.c:7082,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 8
    argNames:
    - ctx
    - node
    - name
    - name_len
    - moveto_mod
    - root_type
    - format
    - found
    argTypes:
    - struct ly_ctx*
    - struct lyd_node*
    - char*
    - uint16_t
    - struct lys_module*
    - enum lyxp_node_type
    - LY_VALUE_FORMAT
    - struct lysc_node**
    assertStmts:
    - condition: ((format == LY_VALUE_JSON) || moveto_mod)
      pos:
        line_end: 7051
        line_start: 7051
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7107
      start: 7043
    functionDepth: 5
    functionLinenumber: 7043
    functionLinenumberEnd: 7107
    functionName: eval_name_test_with_predicate_get_scnode
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - lysc_data_parent
    - lys_find_child
    - ly_ctx_get_module_iter
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR eval_name_test_with_predicate_get_scnode(const struct ly_ctx
      *ctx, const struct lyd_node *node, const char *name,\n        uint16_t name_len,
      const struct lys_module *moveto_mod, enum lyxp_node_type root_type, LY_VALUE_FORMAT
      format,\n        const struct lysc_node **found)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7137,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7138,1
    - Dst: moveto_resolve_model
      Src: /src/libyang/src/xpath.c:7154,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7155,1
    - Dst: eval_name_test_with_predicate_get_scnode
      Src: /src/libyang/src/xpath.c:7160,1
    - Dst: eval_name_test_try_compile_predicates
      Src: /src/libyang/src/xpath.c:7170,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7181,1
    - Dst: lydict_insert
      Src: /src/libyang/src/xpath.c:7181,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7188,1
    - Dst: moveto_attr_alldesc
      Src: /src/libyang/src/xpath.c:7191,1
    - Dst: moveto_attr
      Src: /src/libyang/src/xpath.c:7193,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7195,1
    - Dst: moveto_scnode_alldesc
      Src: /src/libyang/src/xpath.c:7202,1
    - Dst: moveto_scnode
      Src: /src/libyang/src/xpath.c:7204,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7206,1
    - Dst: lysc_path
      Src: /src/libyang/src/xpath.c:7214,1
    - Dst: LOGWRN
      Src: /src/libyang/src/xpath.c:7215,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:7217,1
    - Dst: moveto_node_alldesc
      Src: /src/libyang/src/xpath.c:7221,1
    - Dst: moveto_node_hash
      Src: /src/libyang/src/xpath.c:7225,1
    - Dst: moveto_node
      Src: /src/libyang/src/xpath.c:7227,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7230,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7235,1
    - Dst: eval_predicate
      Src: /src/libyang/src/xpath.c:7236,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7237,1
    - Dst: lydict_remove
      Src: /src/libyang/src/xpath.c:7242,1
    - Dst: ly_path_predicates_free
      Src: /src/libyang/src/xpath.c:7243,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 86
    argCount: 6
    argNames:
    - exp
    - tok_idx
    - attr_axis
    - all_desc
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - ly_bool
    - ly_bool
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7246
      start: 7124
    functionDepth: 11
    functionLinenumber: 7124
    functionLinenumberEnd: 7246
    functionName: eval_name_test_with_predicate
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - moveto_attr
    - moveto_attr_alldesc
    - LY_CHECK_RET
    - lydict_insert
    - LY_CHECK_GOTO
    - moveto_scnode_alldesc
    - moveto_scnode
    - lydict_remove
    - moveto_resolve_model
    - moveto_node_hash
    - eval_name_test_with_predicate_get_scnode
    - set_scnode_clear_ctx
    - moveto_node
    - moveto_node_alldesc
    - free
    - eval_name_test_try_compile_predicates
    - eval_predicate
    - lysc_path
    - ly_path_predicates_free
    - LOGDBG
    - lyxp_check_token
    - LOGWRN
    - lyxp_print_token
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR eval_name_test_with_predicate(const struct lyxp_expr *exp,
      uint16_t *tok_idx, ly_bool attr_axis, ly_bool all_desc,\n        struct lyxp_set
      *set, uint32_t options)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7274,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7276,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7280,1
    - Dst: xpath_node
      Src: /src/libyang/src/xpath.c:7281,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7283,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7283,1
    - Dst: xpath_text
      Src: /src/libyang/src/xpath.c:7284,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7286,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7289,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7290,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7294,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7295,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7296,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7300,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7301,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7302,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7306,1
    - Dst: eval_predicate
      Src: /src/libyang/src/xpath.c:7307,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7308,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 6
    argNames:
    - exp
    - tok_idx
    - attr_axis
    - all_desc
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - ly_bool
    - ly_bool
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tok_len[*tok_idx] == 4)
      pos:
        line_end: 7273
        line_start: 7273
        source_file: /src/libyang/src/xpath.c
    - condition: (!strncmp(&exp->expr[exp->tok_pos[*tok_idx]], "text", 4))
      pos:
        line_end: 7282
        line_start: 7282
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR2)
      pos:
        line_end: 7299
        line_start: 7299
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR1)
      pos:
        line_end: 7293
        line_start: 7293
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7312
      start: 7263
    functionDepth: 9
    functionLinenumber: 7263
    functionLinenumberEnd: 7312
    functionName: eval_node_type_with_predicate
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - xpath_node
    - set_scnode_clear_ctx
    - LY_CHECK_RET
    - LOGDBG
    - strncmp
    - xpath_text
    - lyxp_check_token
    - eval_predicate
    - lyxp_print_token
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR eval_node_type_with_predicate(const struct lyxp_expr *exp,
      uint16_t *tok_idx, ly_bool attr_axis, ly_bool all_desc,\n        struct lyxp_set
      *set, uint32_t options)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7341,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7344,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7345,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7353,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7354,1
    - Dst: moveto_scnode_self
      Src: /src/libyang/src/xpath.c:7365,1
    - Dst: moveto_self
      Src: /src/libyang/src/xpath.c:7367,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7369,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7370,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7371,1
    - Dst: moveto_scnode_parent
      Src: /src/libyang/src/xpath.c:7378,1
    - Dst: moveto_parent
      Src: /src/libyang/src/xpath.c:7380,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7382,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7383,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7384,1
    - Dst: eval_name_test_with_predicate
      Src: /src/libyang/src/xpath.c:7390,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7391,1
    - Dst: eval_node_type_with_predicate
      Src: /src/libyang/src/xpath.c:7396,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7397,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:7401,1
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:7403,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - all_desc
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - ly_bool
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tok_len[*tok_idx] == 2)
      pos:
        line_end: 7340
        line_start: 7340
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7406
      start: 7328
    functionDepth: 12
    functionLinenumber: 7328
    functionLinenumberEnd: 7406
    functionName: eval_relative_location_path
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - moveto_self
    - LOGINT_RET
    - eval_name_test_with_predicate
    - exp_check_token2
    - moveto_parent
    - moveto_scnode_self
    - LOGDBG
    - LY_CHECK_RET
    - moveto_scnode_parent
    - eval_node_type_with_predicate
    - lyxp_print_token
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR eval_relative_location_path(const struct lyxp_expr *exp, uint16_t
      *tok_idx, ly_bool all_desc, struct lyxp_set *set,\n        uint32_t options)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7426,1
    - Dst: moveto_root
      Src: /src/libyang/src/xpath.c:7426,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7433,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7434,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7437,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7446,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7446,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7456,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7457,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7460,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7460,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - exp
    - tok_idx
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7464
      start: 7419
    functionDepth: 13
    functionLinenumber: 7419
    functionLinenumberEnd: 7464
    functionName: eval_absolute_location_path
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - eval_relative_location_path
    - moveto_root
    - LY_CHECK_RET
    - LOGDBG
    - lyxp_check_token
    - lyxp_print_token
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_absolute_location_path(const struct lyxp_expr *exp, uint16_t
      *tok_idx, struct lyxp_set *set, uint32_t options)
  - BBCount: 57
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7490,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7492,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7497,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7499,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7501,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7503,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7508,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7510,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7512,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7514,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7516,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7521,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7523,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7525,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7530,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7532,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7534,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7539,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7541,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7543,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7548,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7550,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7555,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7557,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7559,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7564,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7569,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7574,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7576,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7581,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7583,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7588,1
    - Dst: strncmp
      Src: /src/libyang/src/xpath.c:7593,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7600,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7605,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7606,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7610,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7611,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7612,1
    - Dst: malloc
      Src: /src/libyang/src/xpath.c:7618,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:7619,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:7619,1
    - Dst: set_copy
      Src: /src/libyang/src/xpath.c:7621,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7627,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7628,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7630,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7631,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7634,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7635,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7636,1
    - Dst: realloc
      Src: /src/libyang/src/xpath.c:7641,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/xpath.c:7642,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:7642,1
    - Dst: set_copy
      Src: /src/libyang/src/xpath.c:7644,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7650,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7651,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7653,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7654,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7659,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7660,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7661,1
    - Dst: xpath_func
      Src: /src/libyang/src/xpath.c:7666,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7671,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:7672,1
    - Dst: lyxp_set_free
      Src: /src/libyang/src/xpath.c:7681,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:7683,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 203
    argCount: 4
    argNames:
    - exp
    - tok_idx
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR2)
      pos:
        line_end: 7658
        line_start: 7658
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR1)
      pos:
        line_end: 7609
        line_start: 7609
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7685
      start: 7477
    functionDepth: 4
    functionLinenumber: 7477
    functionLinenumberEnd: 7685
    functionName: eval_function_call
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - set_scnode_clear_ctx
    - malloc
    - free
    - xpath_func
    - lyxp_set_scnode_merge
    - LOGDBG
    - strncmp
    - LOGVAL
    - set_copy
    - eval_expr_select
    - lyxp_check_token
    - LY_CHECK_GOTO
    - lyxp_set_free
    - lyxp_print_token
    - realloc
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_function_call(const struct lyxp_expr *exp, uint16_t *tok_idx,
      struct lyxp_set *set, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtold
      Src: /src/libyang/src/xpath.c:7704,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7706,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7707,1
    - Dst: strerror
      Src: /src/libyang/src/xpath.c:7708,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7711,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7712,1
    - Dst: set_fill_number
      Src: /src/libyang/src/xpath.c:7717,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7720,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7721,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - exp
    - tok_idx
    - set
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - uint16_t*
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7724
      start: 7696
    functionDepth: 3
    functionLinenumber: 7696
    functionLinenumberEnd: 7724
    functionName: eval_number
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - strerror
    - set_fill_number
    - LOGDBG
    - LOGVAL
    - strtold
    - lyxp_print_token
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_number(struct ly_ctx *ctx, const struct lyxp_expr *exp,
      uint16_t *tok_idx, struct lyxp_set *set)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7752,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7753,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7757,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7758,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7761,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7762,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7763,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7775,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7776,1
    - Dst: eval_function_call
      Src: /src/libyang/src/xpath.c:7782,1
    - Dst: eval_function_call
      Src: /src/libyang/src/xpath.c:7784,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7786,1
    - Dst: eval_absolute_location_path
      Src: /src/libyang/src/xpath.c:7794,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7795,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7802,1
    - Dst: eval_literal
      Src: /src/libyang/src/xpath.c:7804,1
    - Dst: eval_literal
      Src: /src/libyang/src/xpath.c:7806,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:7816,1
    - Dst: eval_number
      Src: /src/libyang/src/xpath.c:7818,1
    - Dst: eval_number
      Src: /src/libyang/src/xpath.c:7820,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7822,1
    - Dst: LOGVAL
      Src: /src/libyang/src/xpath.c:7828,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7828,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7836,1
    - Dst: eval_predicate
      Src: /src/libyang/src/xpath.c:7837,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7838,1
    - Dst: exp_check_token2
      Src: /src/libyang/src/xpath.c:7842,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7851,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7852,1
    - Dst: eval_relative_location_path
      Src: /src/libyang/src/xpath.c:7855,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7856,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 84
    argCount: 4
    argNames:
    - exp
    - tok_idx
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_PAR2)
      pos:
        line_end: 7760
        line_start: 7760
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7860
      start: 7741
    functionDepth: 14
    functionLinenumber: 7741
    functionLinenumberEnd: 7860
    functionName: eval_path_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - eval_number
    - set_scnode_clear_ctx
    - eval_relative_location_path
    - eval_function_call
    - exp_check_token2
    - LY_CHECK_RET
    - LOGDBG
    - LOGVAL
    - lyxp_check_token
    - eval_expr_select
    - eval_absolute_location_path
    - eval_predicate
    - lyxp_print_token
    - eval_literal
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_path_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7881,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7883,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7884,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:7886,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7888,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7889,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7893,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7894,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7895,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7899,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7900,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:7904,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7905,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7906,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:7910,1
    - Dst: moveto_union
      Src: /src/libyang/src/xpath.c:7912,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:7913,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:7918,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:7919,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_UNI)
      pos:
        line_end: 7892
        line_start: 7892
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 7880
        line_start: 7880
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7921
      start: 7874
    functionDepth: 9
    functionLinenumber: 7874
    functionLinenumberEnd: 7921
    functionName: eval_union_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_init
    - lyxp_print_token
    - lyxp_set_scnode_merge
    - LOGDBG
    - moveto_union
    - LY_CHECK_GOTO
    - eval_expr_select
    - set_fill_set
    - lyxp_set_free_content
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_union_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      uint16_t repeat, struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7941,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7946,1
    - Dst: lyxp_check_token
      Src: /src/libyang/src/xpath.c:7946,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:7948,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:7949,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7953,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7954,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:7958,1
    - Dst: moveto_op_math
      Src: /src/libyang/src/xpath.c:7960,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:7961,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (repeat)
      pos:
        line_end: 7940
        line_start: 7940
        source_file: /src/libyang/src/xpath.c
    - condition: (!lyxp_check_token(NULL, exp, *tok_idx, LYXP_TOKEN_OPER_MATH) &&
        (exp->expr[exp->tok_pos[*tok_idx]] == '-'))
      pos:
        line_end: 7945
        line_start: 7945
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 7966
      start: 7935
    functionDepth: 4
    functionLinenumber: 7935
    functionLinenumberEnd: 7966
    functionName: eval_unary_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - lyxp_print_token
    - LY_CHECK_RET
    - LOGDBG
    - lyxp_check_token
    - moveto_op_math
    - eval_expr_select
    - warn_operands
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_unary_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      uint16_t repeat, struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:7992,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7994,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:7995,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:7997,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:7999,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8000,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8006,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8007,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8008,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8012,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8013,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8017,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8018,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8019,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8023,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8024,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8025,1
    - Dst: moveto_op_math
      Src: /src/libyang/src/xpath.c:8027,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8028,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8033,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8034,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_MATH)
      pos:
        line_end: 8005
        line_start: 8005
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 7991
        line_start: 7991
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8036
      start: 7983
    functionDepth: 4
    functionLinenumber: 7983
    functionLinenumberEnd: 8036
    functionName: eval_multiplicative_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_clear_ctx
    - set_init
    - lyxp_print_token
    - lyxp_set_scnode_merge
    - LOGDBG
    - LY_CHECK_GOTO
    - eval_expr_select
    - moveto_op_math
    - set_fill_set
    - lyxp_set_free_content
    - warn_operands
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR eval_multiplicative_expr(const struct lyxp_expr *exp, uint16_t
      *tok_idx, uint16_t repeat, struct lyxp_set *set,\n        uint32_t options)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8060,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8062,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8063,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8065,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8067,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8068,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8074,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8075,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8076,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8080,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8081,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8085,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8086,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8087,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8091,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8092,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8093,1
    - Dst: moveto_op_math
      Src: /src/libyang/src/xpath.c:8095,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8096,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8101,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_MATH)
      pos:
        line_end: 8073
        line_start: 8073
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8059
        line_start: 8059
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8104
      start: 8052
    functionDepth: 4
    functionLinenumber: 8052
    functionLinenumberEnd: 8104
    functionName: eval_additive_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_clear_ctx
    - set_init
    - lyxp_print_token
    - lyxp_set_scnode_merge
    - LOGDBG
    - LY_CHECK_GOTO
    - eval_expr_select
    - moveto_op_math
    - set_fill_set
    - lyxp_set_free_content
    - warn_operands
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_additive_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      uint16_t repeat, struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8130,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8132,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8133,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8135,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8137,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8138,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8144,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8145,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8146,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8150,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8151,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8155,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8156,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8157,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8161,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8162,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8163,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:8165,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8166,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8171,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_COMP)
      pos:
        line_end: 8143
        line_start: 8143
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8129
        line_start: 8129
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8174
      start: 8122
    functionDepth: 10
    functionLinenumber: 8122
    functionLinenumberEnd: 8174
    functionName: eval_relational_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_clear_ctx
    - set_init
    - lyxp_print_token
    - lyxp_set_scnode_merge
    - LOGDBG
    - moveto_op_comp
    - LY_CHECK_GOTO
    - eval_expr_select
    - set_fill_set
    - lyxp_set_free_content
    - warn_operands
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_relational_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      uint16_t repeat, struct lyxp_set *set, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8197,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8199,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8200,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8202,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8204,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8205,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8211,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8212,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8213,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8217,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8218,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8222,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8223,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8224,1
    - Dst: warn_operands
      Src: /src/libyang/src/xpath.c:8228,1
    - Dst: warn_equality_value
      Src: /src/libyang/src/xpath.c:8229,1
    - Dst: warn_equality_value
      Src: /src/libyang/src/xpath.c:8230,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8231,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8232,1
    - Dst: moveto_op_comp
      Src: /src/libyang/src/xpath.c:8234,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8235,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8240,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8241,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (repeat)
      pos:
        line_end: 8196
        line_start: 8196
        source_file: /src/libyang/src/xpath.c
    - condition: ((exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_EQUAL) || (exp->tokens[*tok_idx]
        == LYXP_TOKEN_OPER_NEQUAL))
      pos:
        line_end: 8210
        line_start: 8210
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8243
      start: 8189
    functionDepth: 10
    functionLinenumber: 8189
    functionLinenumberEnd: 8243
    functionName: eval_equality_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_clear_ctx
    - set_init
    - warn_equality_value
    - lyxp_print_token
    - lyxp_set_scnode_merge
    - LOGDBG
    - moveto_op_comp
    - LY_CHECK_GOTO
    - eval_expr_select
    - set_fill_set
    - lyxp_set_free_content
    - warn_operands
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_equality_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      uint16_t repeat, struct lyxp_set *set, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8264,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8266,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8267,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8269,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8271,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8272,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8276,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8278,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8283,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8284,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8285,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8290,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8291,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8295,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8296,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8297,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8301,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8302,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8304,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8305,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8310,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8311,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_LOG)
      pos:
        line_end: 8282
        line_start: 8282
        source_file: /src/libyang/src/xpath.c
    - condition: (repeat)
      pos:
        line_end: 8263
        line_start: 8263
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8313
      start: 8257
    functionDepth: 4
    functionLinenumber: 8257
    functionLinenumberEnd: 8313
    functionName: eval_and_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_clear_ctx
    - set_init
    - lyxp_print_token
    - lyxp_set_scnode_merge
    - LOGDBG
    - LY_CHECK_GOTO
    - eval_expr_select
    - lyxp_set_cast
    - set_fill_set
    - lyxp_set_free_content
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_and_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      uint16_t repeat, struct lyxp_set *set, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8334,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8336,1
    - Dst: set_init
      Src: /src/libyang/src/xpath.c:8337,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8339,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8341,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8342,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8346,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8348,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8353,1
    - Dst: LOGDBG
      Src: /src/libyang/src/xpath.c:8354,1
    - Dst: lyxp_print_token
      Src: /src/libyang/src/xpath.c:8355,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8360,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8361,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8365,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8368,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/xpath.c:8369,1
    - Dst: set_scnode_clear_ctx
      Src: /src/libyang/src/xpath.c:8373,1
    - Dst: lyxp_set_scnode_merge
      Src: /src/libyang/src/xpath.c:8374,1
    - Dst: lyxp_set_cast
      Src: /src/libyang/src/xpath.c:8376,1
    - Dst: set_fill_set
      Src: /src/libyang/src/xpath.c:8377,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8382,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8383,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - repeat
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - uint16_t
    - struct lyxp_set*
    - uint32_t
    assertStmts:
    - condition: (repeat)
      pos:
        line_end: 8333
        line_start: 8333
        source_file: /src/libyang/src/xpath.c
    - condition: (exp->tokens[*tok_idx] == LYXP_TOKEN_OPER_LOG)
      pos:
        line_end: 8352
        line_start: 8352
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8385
      start: 8327
    functionDepth: 4
    functionLinenumber: 8327
    functionLinenumberEnd: 8385
    functionName: eval_or_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached:
    - set_scnode_clear_ctx
    - set_init
    - lyxp_print_token
    - lyxp_set_scnode_merge
    - LOGDBG
    - LY_CHECK_GOTO
    - eval_expr_select
    - lyxp_set_cast
    - set_fill_set
    - lyxp_set_free_content
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR eval_or_expr(const struct lyxp_expr *exp, uint16_t *tok_idx,
      uint16_t repeat, struct lyxp_set *set, uint32_t options)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: eval_or_expr
      Src: /src/libyang/src/xpath.c:8425,1
    - Dst: eval_and_expr
      Src: /src/libyang/src/xpath.c:8428,1
    - Dst: eval_equality_expr
      Src: /src/libyang/src/xpath.c:8431,1
    - Dst: eval_relational_expr
      Src: /src/libyang/src/xpath.c:8434,1
    - Dst: eval_additive_expr
      Src: /src/libyang/src/xpath.c:8437,1
    - Dst: eval_multiplicative_expr
      Src: /src/libyang/src/xpath.c:8440,1
    - Dst: eval_unary_expr
      Src: /src/libyang/src/xpath.c:8443,1
    - Dst: eval_union_expr
      Src: /src/libyang/src/xpath.c:8446,1
    - Dst: eval_path_expr
      Src: /src/libyang/src/xpath.c:8449,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8452,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 5
    argNames:
    - exp
    - tok_idx
    - etype
    - set
    - options
    argTypes:
    - struct lyxp_expr*
    - uint16_t*
    - enum lyxp_expr_type
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8456
      start: 8397
    functionDepth: 15
    functionLinenumber: 8397
    functionLinenumberEnd: 8456
    functionName: eval_expr_select
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 12
    functionsReached:
    - LOGINT_RET
    - eval_relational_expr
    - eval_or_expr
    - eval_equality_expr
    - eval_multiplicative_expr
    - eval_path_expr
    - eval_and_expr
    - eval_union_expr
    - eval_unary_expr
    - eval_additive_expr
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR eval_expr_select(const struct lyxp_expr *exp, uint16_t *tok_idx,
      enum lyxp_expr_type etype, struct lyxp_set *set,\n        uint32_t options)"
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 3
    argNames:
    - ctx_node
    - ctx_scnode
    - options
    argTypes:
    - struct lyd_node*
    - struct lysc_node*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8497
      start: 8466
    functionDepth: 0
    functionLinenumber: 8466
    functionLinenumberEnd: 8497
    functionName: lyxp_get_root_type
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum lyxp_node_type
    signature: enum lyxp_node_type lyxp_get_root_type(const struct lyd_node *ctx_node,
      const struct lysc_node *ctx_scnode, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/xpath.c:8507,1
    - Dst: LOGARG
      Src: /src/libyang/src/xpath.c:8509,1
    - Dst: lyd_parent
      Src: /src/libyang/src/xpath.c:8516,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/xpath.c:8518,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:8522,1
    - Dst: lyxp_get_root_type
      Src: /src/libyang/src/xpath.c:8524,1
    - Dst: set_insert_node
      Src: /src/libyang/src/xpath.c:8525,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/xpath.c:8537,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8540,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8542,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/xpath.c:8545,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 9
    argNames:
    - ctx
    - exp
    - cur_mod
    - format
    - prefix_data
    - ctx_node
    - tree
    - set
    - options
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - struct lys_module*
    - LY_VALUE_FORMAT
    - void*
    - struct lyd_node*
    - struct lyd_node*
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8547
      start: 8499
    functionDepth: 16
    functionLinenumber: 8499
    functionLinenumberEnd: 8547
    functionName: lyxp_eval
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 6
    functionsReached:
    - LOG_LOCBACK
    - lyd_parent
    - LOGARG
    - memset
    - LY_CHECK_ARG_RET
    - set_insert_node
    - LOG_LOCSET
    - eval_expr_select
    - lyxp_set_free_content
    - lyxp_get_root_type
    - lyd_first_sibling
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyxp_eval(const struct ly_ctx *ctx, const struct lyxp_expr
      *exp, const struct lys_module *cur_mod,\n        LY_VALUE_FORMAT format, void
      *prefix_data, const struct lyd_node *ctx_node, const struct lyd_node *tree,\n
      \       struct lyxp_set *set, uint32_t options)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/xpath.c:8560,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8567,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8570,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8571,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8574,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8575,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8578,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:8580,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8581,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8583,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8584,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8584,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8585,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8586,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8586,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8587,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8589,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8593,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8601,1
    - Dst: free
      Src: /src/libyang/src/xpath.c:8602,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8605,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8608,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8611,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8614,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8617,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8620,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8623,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8626,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8629,1
    - Dst: xml_print_node
      Src: /src/libyang/src/xpath.c:8630,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8631,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8634,1
    - Dst: ly_print_
      Src: /src/libyang/src/xpath.c:8637,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 84
    argCount: 2
    argNames:
    - f
    - set
    argTypes:
    - FILE*
    - struct lyxp_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8643
      start: 8553
    functionDepth: 10
    functionLinenumber: 8553
    functionLinenumberEnd: 8643
    functionName: lyxp_set_print_xml
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached:
    - memset
    - isnan
    - ly_print_
    - free
    - asprintf
    - signbit
    - strdup
    - xml_print_node
    - isinf
    linkageType: ''
    returnType: void
    signature: void lyxp_set_print_xml(FILE *f, struct lyxp_set *set)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8659,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8662,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:8670,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8671,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8672,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8672,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8674,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8675,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8675,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8676,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8676,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8677,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8678,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8678,1
    - Dst: isinf
      Src: /src/libyang/src/xpath.c:8679,1
    - Dst: signbit
      Src: /src/libyang/src/xpath.c:8679,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8680,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8681,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8681,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8683,1
    - Dst: LOGMEM_RET
      Src: /src/libyang/src/xpath.c:8684,1
    - Dst: asprintf
      Src: /src/libyang/src/xpath.c:8688,1
    - Dst: LOGMEM_RET
      Src: /src/libyang/src/xpath.c:8689,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8696,1
    - Dst: strdup
      Src: /src/libyang/src/xpath.c:8698,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/xpath.c:8700,1
    - Dst: LOGMEM
      Src: /src/libyang/src/xpath.c:8700,1
    - Dst: assert
      Src: /src/libyang/src/xpath.c:8704,1
    - Dst: set_sort
      Src: /src/libyang/src/xpath.c:8704,1
    - Dst: cast_node_set_to_string
      Src: /src/libyang/src/xpath.c:8706,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:8707,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8708,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8712,1
    - Dst: cast_string_to_number
      Src: /src/libyang/src/xpath.c:8721,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8722,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8733,1
    - Dst: isnan
      Src: /src/libyang/src/xpath.c:8742,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8750,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8753,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8759,1
    - Dst: lyxp_set_free_content
      Src: /src/libyang/src/xpath.c:8762,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/xpath.c:8767,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 112
    argCount: 2
    argNames:
    - set
    - target
    argTypes:
    - struct lyxp_set*
    - enum lyxp_set_type
    assertStmts:
    - condition: (target != LYXP_SET_NODE_SET)
      pos:
        line_end: 8658
        line_start: 8658
        source_file: /src/libyang/src/xpath.c
    - condition: (!set_sort(set))
      pos:
        line_end: 8703
        line_start: 8703
        source_file: /src/libyang/src/xpath.c
    constantsTouched: []
    func_position:
      end: 8773
      start: 8647
    functionDepth: 15
    functionLinenumber: 8647
    functionLinenumberEnd: 8773
    functionName: lyxp_set_cast
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 30
    functionsReached:
    - cast_string_to_number
    - LOGINT_RET
    - LY_CHECK_ERR_RET
    - isnan
    - asprintf
    - cast_node_set_to_string
    - signbit
    - strdup
    - LOGMEM_RET
    - set_sort
    - LY_CHECK_RET
    - isinf
    - lyxp_set_free_content
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyxp_set_cast(struct lyxp_set *set, enum lyxp_set_type target)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/xpath.c:8783,1
    - Dst: LOGARG
      Src: /src/libyang/src/xpath.c:8785,1
    - Dst: memset
      Src: /src/libyang/src/xpath.c:8790,1
    - Dst: lyxp_get_root_type
      Src: /src/libyang/src/xpath.c:8792,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/xpath.c:8793,1
    - Dst: lyxp_set_scnode_insert_node
      Src: /src/libyang/src/xpath.c:8793,1
    - Dst: LOG_LOCSET
      Src: /src/libyang/src/xpath.c:8805,1
    - Dst: eval_expr_select
      Src: /src/libyang/src/xpath.c:8808,1
    - Dst: LOG_LOCBACK
      Src: /src/libyang/src/xpath.c:8810,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 8
    argNames:
    - ctx
    - exp
    - cur_mod
    - format
    - prefix_data
    - ctx_scnode
    - set
    - options
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - struct lys_module*
    - LY_VALUE_FORMAT
    - void*
    - struct lysc_node*
    - struct lyxp_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8812
      start: 8775
    functionDepth: 16
    functionLinenumber: 8775
    functionLinenumberEnd: 8812
    functionName: lyxp_atomize
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 7
    functionsReached:
    - LOG_LOCBACK
    - LOGARG
    - memset
    - LY_CHECK_ARG_RET
    - LY_CHECK_RET
    - lyxp_set_scnode_insert_node
    - LOG_LOCSET
    - eval_expr_select
    - lyxp_get_root_type
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyxp_atomize(const struct ly_ctx *ctx, const struct lyxp_expr
      *exp, const struct lys_module *cur_mod,\n        LY_VALUE_FORMAT format, void
      *prefix_data, const struct lysc_node *ctx_scnode, struct lyxp_set *set,\n        uint32_t
      options)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - struct lyxp_expr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8822
      start: 8814
    functionDepth: 0
    functionLinenumber: 8814
    functionLinenumberEnd: 8822
    functionName: lyxp_get_expr
    functionSourceFile: /src/libyang/src/xpath.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: 'API *

      lyxp_get_expr(const struct lyxp_expr *path)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - orig
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: lysc_ext_instance_dup
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_ext_instance
    signature: 'struct lysc_ext_instance *

      lysc_ext_instance_dup(struct ly_ctx *ctx, struct lysc_ext_instance *orig)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysp_qname_free
      Src: /src/libyang/src/schema_compile_node.c:79,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:80,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:86,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:87,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:87,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:90,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:90,1
    - Dst: malloc
      Src: /src/libyang/src/schema_compile_node.c:93,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:94,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:95,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_node.c:95,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:100,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - leaf
    - dflt
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node_leaf*
    - struct lysp_qname*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 103
    functionName: lysc_unres_leaf_dflt_add
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lysp_qname_free
    - LY_CHECK_ERR_RET
    - malloc
    - free
    - LY_CHECK_RET
    - ly_set_add
    - LY_CHECK_GOTO
    - lysp_qname_dup
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysc_unres_leaf_dflt_add(struct lysc_ctx *ctx, struct lysc_node_leaf
      *leaf, struct lysp_qname *dflt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysp_qname_free
      Src: /src/libyang/src/schema_compile_node.c:127,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:128,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/schema_compile_node.c:130,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:136,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:137,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:137,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:140,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:140,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_node.c:143,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - llist
    - dflts
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node_leaflist*
    - struct lysp_qname*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 113
    functionDepth: 4
    functionLinenumber: 113
    functionLinenumberEnd: 146
    functionName: lysc_unres_llist_dflts_add
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lysp_qname_free
    - DUP_ARRAY
    - LY_CHECK_ERR_RET
    - free
    - FREE_ARRAY
    - LY_CHECK_RET
    - ly_set_add
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysc_unres_llist_dflts_add(struct lysc_ctx *ctx, struct lysc_node_leaflist
      *llist, struct lysp_qname *dflts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - orig
    argTypes:
    - struct lysc_pattern*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: lysc_pattern_dup
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lysc_pattern
    signature: 'struct lysc_pattern *

      lysc_pattern_dup(struct lysc_pattern *orig)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:179,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/schema_compile_node.c:181,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:181,1
    - Dst: lysc_pattern_dup
      Src: /src/libyang/src/schema_compile_node.c:183,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_compile_node.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (orig)
      pos:
        line_end: 178
        line_start: 178
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 187
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 187
    functionName: lysc_patterns_dup
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lysc_pattern_dup
    - LY_ARRAY_COUNT
    - LY_ARRAY_CREATE_RET
    - LY_ARRAY_INCREMENT
    - assert
    linkageType: ''
    returnType: struct lysc_pattern
    signature: 'struct lysc_pattern **

      lysc_patterns_dup(struct ly_ctx *ctx, struct lysc_pattern **orig)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_pattern_dup
      Src: /src/libyang/src/schema_compile_node.c:183,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_compile_node.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 54
    functionsReached:
    - lysc_pattern_dup
    - LY_ARRAY_INCREMENT
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(orig, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:203,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:205,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:206,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:206,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/schema_compile_node.c:208,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:208,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:209,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:210,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:210,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:212,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:213,1
    - Dst: lysc_ext_instance_dup
      Src: /src/libyang/src/schema_compile_node.c:214,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - orig
    argTypes:
    - struct ly_ctx*
    - struct lysc_range*
    assertStmts:
    - condition: (orig)
      pos:
        line_end: 202
        line_start: 202
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 221
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 221
    functionName: lysc_range_dup
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - assert
    - lysc_ext_instance_dup
    - LY_CHECK_ERR_RET
    - LY_ARRAY_COUNT
    - DUP_STRING_GOTO
    - free
    - LY_ARRAY_CREATE_GOTO
    - memcpy
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: struct lysc_range
    signature: 'struct lysc_range *

      lysc_range_dup(struct ly_ctx *ctx, const struct lysc_range *orig)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:240,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:241,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:241,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:243,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/schema_compile_node.c:243,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:244,1
    - Dst: lyplg_type_prefix_data_new
      Src: /src/libyang/src/schema_compile_node.c:244,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:244,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:247,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:248,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 5
    argNames:
    - ctx
    - when_p
    - flags
    - ctx_node
    - when
    argTypes:
    - struct lysc_ctx*
    - struct lysp_when*
    - uint16_t
    - struct lysc_node*
    - struct lysc_when**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 233
    functionDepth: 12
    functionLinenumber: 233
    functionLinenumberEnd: 254
    functionName: lys_compile_when_
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - LY_CHECK_RET
    - lyplg_type_prefix_data_new
    - lyxp_expr_parse
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_when_(struct lysc_ctx *ctx, struct lysp_when *when_p,
      uint16_t flags, const struct lysc_node *ctx_node,\n        struct lysc_when
      **when)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:262,1
    - Dst: lysc_node_when_p
      Src: /src/libyang/src/schema_compile_node.c:265,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:268,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:271,1
    - Dst: lys_compile_when_
      Src: /src/libyang/src/schema_compile_node.c:271,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:286,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 6
    argNames:
    - ctx
    - when_p
    - flags
    - ctx_node
    - node
    - when_c
    argTypes:
    - struct lysc_ctx*
    - struct lysp_when*
    - uint16_t
    - struct lysc_node*
    - struct lysc_node*
    - struct lysc_when**
    assertStmts:
    - condition: (when_p)
      pos:
        line_end: 261
        line_start: 261
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 290
      start: 256
    functionDepth: 13
    functionLinenumber: 256
    functionLinenumberEnd: 290
    functionName: lys_compile_when
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_when_
    - LY_CHECK_RET
    - lysc_node_when_p
    - ly_set_add
    - LY_ARRAY_NEW_RET
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_when(struct lysc_ctx *ctx, struct lysp_when *when_p,
      uint16_t flags, const struct lysc_node *ctx_node,\n        struct lysc_node
      *node, struct lysc_when **when_c)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:305,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/schema_compile_node.c:305,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:306,1
    - Dst: lyplg_type_prefix_data_new
      Src: /src/libyang/src/schema_compile_node.c:306,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:306,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:308,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:309,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:310,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:311,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - must_p
    - must
    argTypes:
    - struct lysc_ctx*
    - struct lysp_restr*
    - struct lysc_must*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 299
    functionDepth: 12
    functionLinenumber: 299
    functionLinenumberEnd: 316
    functionName: lys_compile_must
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - strlen
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - LY_CHECK_RET
    - lyxp_expr_parse
    - lyplg_type_prefix_data_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_must(struct lysc_ctx *ctx, struct lysp_restr *must_p,
      struct lysc_must *must)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:339,1
    - Dst: isdigit
      Src: /src/libyang/src/schema_compile_node.c:341,1
    - Dst: isdigit
      Src: /src/libyang/src/schema_compile_node.c:349,1
    - Dst: isdigit
      Src: /src/libyang/src/schema_compile_node.c:353,1
    - Dst: strndup
      Src: /src/libyang/src/schema_compile_node.c:357,1
    - Dst: isdigit
      Src: /src/libyang/src/schema_compile_node.c:364,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:370,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:372,1
    - Dst: malloc
      Src: /src/libyang/src/schema_compile_node.c:382,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:383,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:383,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:387,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:388,1
    - Dst: memset
      Src: /src/libyang/src/schema_compile_node.c:389,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:391,1
    - Dst: memset
      Src: /src/libyang/src/schema_compile_node.c:392,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 52
    argCount: 6
    argNames:
    - ctx
    - basetype
    - frdigits
    - value
    - len
    - valcopy
    argTypes:
    - struct lysc_ctx*
    - LY_DATA_TYPE
    - uint8_t
    - char*
    - size_t*
    - char**
    assertStmts:
    - condition: (value)
      pos:
        line_end: 338
        line_start: 338
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (frdigits)
      pos:
        line_end: 369
        line_start: 369
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 396
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 396
    functionName: range_part_check_value_syntax
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - isdigit
    - LY_CHECK_ERR_RET
    - memcpy
    - memset
    - malloc
    - LOGVAL
    - strndup
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR range_part_check_value_syntax(struct lysc_ctx *ctx, LY_DATA_TYPE
      basetype, uint8_t frdigits, const char *value,\n        size_t *len, char **valcopy)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 4
    argNames:
    - unsigned_value
    - max
    - value
    - prev_value
    argTypes:
    - ly_bool
    - ly_bool
    - int64_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 420
    functionName: range_part_check_ascendancy
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR range_part_check_ascendancy(ly_bool unsigned_value, ly_bool
      max, int64_t value, int64_t prev_value)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: range_part_check_value_syntax
      Src: /src/libyang/src/schema_compile_node.c:447,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:448,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:452,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:457,1
    - Dst: ly_parse_int
      Src: /src/libyang/src/schema_compile_node.c:465,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:465,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:465,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:465,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:467,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:469,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:472,1
    - Dst: ly_parse_int
      Src: /src/libyang/src/schema_compile_node.c:477,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:477,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:477,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:477,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:480,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:482,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:485,1
    - Dst: ly_parse_int
      Src: /src/libyang/src/schema_compile_node.c:490,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:490,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:490,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:490,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:493,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:495,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:498,1
    - Dst: ly_parse_int
      Src: /src/libyang/src/schema_compile_node.c:504,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:504,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:504,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:504,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:504,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:507,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:509,1
    - Dst: INT64_C
      Src: /src/libyang/src/schema_compile_node.c:509,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:512,1
    - Dst: ly_parse_uint
      Src: /src/libyang/src/schema_compile_node.c:517,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:517,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:517,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:519,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:521,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:524,1
    - Dst: ly_parse_uint
      Src: /src/libyang/src/schema_compile_node.c:529,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:529,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:529,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:531,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:533,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:536,1
    - Dst: ly_parse_uint
      Src: /src/libyang/src/schema_compile_node.c:541,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:541,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:541,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:544,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:546,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:549,1
    - Dst: ly_parse_uint
      Src: /src/libyang/src/schema_compile_node.c:556,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:556,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:556,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:559,1
    - Dst: UINT64_C
      Src: /src/libyang/src/schema_compile_node.c:561,1
    - Dst: range_part_check_ascendancy
      Src: /src/libyang/src/schema_compile_node.c:564,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile_node.c:568,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:574,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:578,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:582,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:589,1
    CyclomaticComplexity: 53
    EdgeCount: 53
    ICount: 145
    argCount: 10
    argNames:
    - ctx
    - part
    - max
    - prev
    - basetype
    - first
    - length_restr
    - frdigits
    - base_range
    - value
    argTypes:
    - struct lysc_ctx*
    - struct lysc_range_part*
    - ly_bool
    - int64_t
    - LY_DATA_TYPE
    - ly_bool
    - ly_bool
    - uint8_t
    - struct lysc_range*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 591
    functionName: range_part_minmax
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - strlen
    - range_part_check_value_syntax
    - LY_ARRAY_COUNT
    - INT64_C
    - ly_parse_int
    - LOGINT
    - free
    - LOGVAL
    - UINT64_C
    - LY_CHECK_GOTO
    - ly_parse_uint
    - range_part_check_ascendancy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR range_part_minmax(struct lysc_ctx *ctx, struct lysc_range_part
      *part, ly_bool max, int64_t prev, LY_DATA_TYPE basetype,\n        ly_bool first,
      ly_bool length_restr, uint8_t frdigits, struct lysc_range *base_range, const
      char **value)"
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:615,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:616,1
    - Dst: isspace
      Src: /src/libyang/src/schema_compile_node.c:620,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:624,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:629,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:630,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_compile_node.c:638,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_compile_node.c:638,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:641,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_compile_node.c:647,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_node.c:649,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:650,1
    - Dst: range_part_minmax
      Src: /src/libyang/src/schema_compile_node.c:650,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:654,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_compile_node.c:662,1
    - Dst: isspace
      Src: /src/libyang/src/schema_compile_node.c:664,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:667,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:668,1
    - Dst: isdigit
      Src: /src/libyang/src/schema_compile_node.c:675,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:678,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:679,1
    - Dst: range_part_minmax
      Src: /src/libyang/src/schema_compile_node.c:679,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_node.c:682,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:683,1
    - Dst: range_part_minmax
      Src: /src/libyang/src/schema_compile_node.c:683,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:683,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_compile_node.c:689,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_compile_node.c:689,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_compile_node.c:690,1
    - Dst: isspace
      Src: /src/libyang/src/schema_compile_node.c:691,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:695,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:701,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:702,1
    - Dst: range_part_minmax
      Src: /src/libyang/src/schema_compile_node.c:702,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_node.c:705,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:706,1
    - Dst: range_part_minmax
      Src: /src/libyang/src/schema_compile_node.c:706,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:706,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:711,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile_node.c:737,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:741,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:800,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:809,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:810,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:810,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_node.c:815,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:816,1
    - Dst: lydict_insert
      Src: /src/libyang/src/schema_compile_node.c:816,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_node.c:819,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:820,1
    - Dst: lydict_insert
      Src: /src/libyang/src/schema_compile_node.c:820,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_node.c:823,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:824,1
    - Dst: lydict_insert
      Src: /src/libyang/src/schema_compile_node.c:824,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_node.c:827,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:828,1
    - Dst: lydict_insert
      Src: /src/libyang/src/schema_compile_node.c:828,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile_node.c:835,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 196
    argCount: 7
    argNames:
    - ctx
    - range_p
    - basetype
    - length_restr
    - frdigits
    - base_range
    - range
    argTypes:
    - struct lysc_ctx*
    - struct lysp_restr*
    - LY_DATA_TYPE
    - ly_bool
    - uint8_t
    - struct lysc_range*
    - struct lysc_range**
    assertStmts:
    - condition: (range)
      pos:
        line_end: 614
        line_start: 614
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (range_p)
      pos:
        line_end: 615
        line_start: 615
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 838
      start: 605
    functionDepth: 4
    functionLinenumber: 605
    functionLinenumberEnd: 838
    functionName: lys_compile_type_range
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - isdigit
    - LY_CHECK_ERR_RET
    - LY_ARRAY_COUNT
    - range_part_minmax
    - LOGINT
    - LY_ARRAY_NEW_GOTO
    - lydict_remove
    - LOGVAL
    - strncmp
    - isspace
    - ly_strlen_const
    - calloc
    - LY_CHECK_GOTO
    - lydict_insert
    - LY_ARRAY_FREE
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_type_range(struct lysc_ctx *ctx, struct lysp_restr
      *range_p, LY_DATA_TYPE basetype, ly_bool length_restr,\n        uint8_t frdigits,
      struct lysc_range *base_range, struct lysc_range **range)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:943,1
    - Dst: malloc
      Src: /src/libyang/src/schema_compile_node.c:951,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:952,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:952,1
    - Dst: ly_realloc
      Src: /src/libyang/src/schema_compile_node.c:966,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:967,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:967,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:983,1
    - Dst: strstr
      Src: /src/libyang/src/schema_compile_node.c:1004,1
    - Dst: strchr
      Src: /src/libyang/src/schema_compile_node.c:1007,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1009,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1010,1
    - Dst: ly_realloc
      Src: /src/libyang/src/schema_compile_node.c:1017,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:1017,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:1018,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:1018,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1018,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_compile_node.c:1023,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/schema_compile_node.c:1023,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:1024,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1029,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1030,1
    - Dst: memmove
      Src: /src/libyang/src/schema_compile_node.c:1045,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:1045,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:1046,1
    - Dst: memmove
      Src: /src/libyang/src/schema_compile_node.c:1048,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:1048,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:1049,1
    - Dst: pcre2_compile
      Src: /src/libyang/src/schema_compile_node.c:1054,1
    - Dst: pcre2_get_error_message
      Src: /src/libyang/src/schema_compile_node.c:1058,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1059,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1060,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1063,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1068,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 96
    argCount: 3
    argNames:
    - ctx
    - pattern
    - code
    argTypes:
    - struct ly_ctx*
    - char*
    - pcre2_code**
    assertStmts:
    - condition: (brack)
      pos:
        line_end: 982
        line_start: 982
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 1074
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 1074
    functionName: lys_compile_type_pattern_check
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 2
    functionsReached:
    - strstr
    - strlen
    - LY_CHECK_ERR_RET
    - memcpy
    - malloc
    - free
    - memmove
    - pcre2_get_error_message
    - strchr
    - LOGVAL
    - strncmp
    - ly_strlen_const
    - pcre2_compile
    - ly_realloc
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_type_pattern_check(struct ly_ctx *ctx, const char
      *pattern, pcre2_code **code)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysc_patterns_dup
      Src: /src/libyang/src/schema_compile_node.c:1095,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:1096,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:1096,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:1100,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1101,1
    - Dst: lys_compile_type_pattern_check
      Src: /src/libyang/src/schema_compile_node.c:1104,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1105,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1110,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1111,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1112,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1113,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1114,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - ctx
    - patterns_p
    - base_patterns
    - patterns
    argTypes:
    - struct lysc_ctx*
    - struct lysp_restr*
    - struct lysc_pattern**
    - struct lysc_pattern***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1085
    functionDepth: 2
    functionLinenumber: 1085
    functionLinenumberEnd: 1119
    functionName: lys_compile_type_patterns
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lysc_patterns_dup
    - LY_CHECK_ERR_RET
    - lys_compile_type_pattern_check
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - LY_CHECK_RET
    - LY_ARRAY_NEW_RET
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_type_patterns(struct lysc_ctx *ctx, struct lysp_restr
      *patterns_p,\n        struct lysc_pattern **base_patterns, struct lysc_pattern
      ***patterns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:1100,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1101,1
    - Dst: lys_compile_type_pattern_check
      Src: /src/libyang/src/schema_compile_node.c:1104,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1105,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1110,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1111,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1112,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1113,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1114,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1099
    functionDepth: 2
    functionLinenumber: 1099
    functionLinenumberEnd: 1116
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 54
    functionsReached:
    - lys_compile_type_pattern_check
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - LY_CHECK_RET
    - LY_ARRAY_NEW_RET
    - calloc
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(patterns_p, u)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1194,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile_node.c:1204,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1208,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1209,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_node.c:1222,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1224,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1238,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_node.c:1256,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1258,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1273,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1292,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1299,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1308,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile_node.c:1308,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:1314,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1315,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1316,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1317,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1324,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:1330,1
    - Dst: memmove
      Src: /src/libyang/src/schema_compile_node.c:1331,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:1332,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 110
    argCount: 5
    argNames:
    - ctx
    - enums_p
    - basetype
    - base_enums
    - bitenums
    argTypes:
    - struct lysc_ctx*
    - struct lysp_type_enum*
    - LY_DATA_TYPE
    - struct lysc_type_bitenum_item*
    - struct lysc_type_bitenum_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1182
    functionDepth: 5
    functionLinenumber: 1182
    functionLinenumberEnd: 1339
    functionName: lys_compile_type_enums
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - DUP_STRING_GOTO
    - strcmp
    - COMPILE_EXTS_GOTO
    - memmove
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL
    - lys_eval_iffeatures
    - LY_ARRAY_NEW_RET
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_type_enums(struct lysc_ctx *ctx, struct lysp_type_enum
      *enums_p, LY_DATA_TYPE basetype,\n        struct lysc_type_bitenum_item *base_enums,
      struct lysc_type_bitenum_item **bitenums)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile_node.c:1204,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1208,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1209,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_node.c:1222,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1224,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1238,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_node.c:1256,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1258,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1273,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1292,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1299,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1308,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile_node.c:1308,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:1314,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1315,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1316,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1317,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1324,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:1330,1
    - Dst: memmove
      Src: /src/libyang/src/schema_compile_node.c:1331,1
    - Dst: memcpy
      Src: /src/libyang/src/schema_compile_node.c:1332,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 102
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1199
    functionDepth: 5
    functionLinenumber: 1199
    functionLinenumberEnd: 1335
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 56
    functionsReached:
    - LY_ARRAY_COUNT
    - DUP_STRING_GOTO
    - strcmp
    - COMPILE_EXTS_GOTO
    - memmove
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL
    - lys_eval_iffeatures
    - LY_ARRAY_NEW_RET
    - memcpy
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(enums_p, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile_node.c:1204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1203
    functionDepth: 0
    functionLinenumber: 1203
    functionLinenumberEnd: 1207
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 56
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(base_enums, v)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1349,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1349,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1350,1
    - Dst: lys_compile_type
      Src: /src/libyang/src/schema_compile_node.c:1351,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1353,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1357,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1358,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1358,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1358,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_node.c:1361,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1366,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1367,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:1367,1
    - Dst: lyxp_expr_dup
      Src: /src/libyang/src/schema_compile_node.c:1371,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1372,1
    - Dst: lyplg_type_prefix_data_dup
      Src: /src/libyang/src/schema_compile_node.c:1376,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1378,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_compile_node.c:1386,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/schema_compile_node.c:1392,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/schema_compile_node.c:1395,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/schema_compile_node.c:1404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 44
    argCount: 6
    argNames:
    - ctx
    - ptypes
    - context_pnode
    - context_flags
    - context_name
    - utypes_p
    argTypes:
    - struct lysc_ctx*
    - struct lysp_type*
    - struct lysp_node*
    - uint16_t
    - char*
    - struct lysc_type***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1341
    functionDepth: 5
    functionLinenumber: 1341
    functionLinenumberEnd: 1408
    functionName: lys_compile_type_union
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lys_compile_type
    - LY_ARRAY_COUNT
    - lysc_type_free
    - LY_ARRAY_CREATE_GOTO
    - lyxp_expr_dup
    - LY_CHECK_GOTO
    - lyplg_type_prefix_data_dup
    - LY_ARRAY_INCREMENT
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_type_union(struct lysc_ctx *ctx, struct lysp_type
      *ptypes, struct lysp_node *context_pnode, uint16_t context_flags,\n        const
      char *context_name, struct lysc_type ***utypes_p)"
  - BBCount: 82
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1444,1
    - Dst: lys_compile_type_range
      Src: /src/libyang/src/schema_compile_node.c:1444,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1447,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1455,1
    - Dst: lys_compile_type_enums
      Src: /src/libyang/src/schema_compile_node.c:1455,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1463,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1465,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1477,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1479,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1488,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1492,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1502,1
    - Dst: lys_compile_type_range
      Src: /src/libyang/src/schema_compile_node.c:1502,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1505,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1514,1
    - Dst: lys_compile_type_range
      Src: /src/libyang/src/schema_compile_node.c:1514,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1517,1
    - Dst: lysc_range_dup
      Src: /src/libyang/src/schema_compile_node.c:1520,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1525,1
    - Dst: lys_compile_type_patterns
      Src: /src/libyang/src/schema_compile_node.c:1525,1
    - Dst: lysc_patterns_dup
      Src: /src/libyang/src/schema_compile_node.c:1528,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1536,1
    - Dst: lys_compile_type_enums
      Src: /src/libyang/src/schema_compile_node.c:1536,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1543,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1545,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1562,1
    - Dst: lys_compile_type_range
      Src: /src/libyang/src/schema_compile_node.c:1562,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1565,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1577,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1581,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1586,1
    - Dst: lys_compile_identity_bases
      Src: /src/libyang/src/schema_compile_node.c:1586,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1592,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1594,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1606,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1609,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1625,1
    - Dst: lyxp_expr_dup
      Src: /src/libyang/src/schema_compile_node.c:1625,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1626,1
    - Dst: lyplg_type_prefix_data_new
      Src: /src/libyang/src/schema_compile_node.c:1626,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:1626,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1629,1
    - Dst: lyxp_expr_dup
      Src: /src/libyang/src/schema_compile_node.c:1629,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1630,1
    - Dst: lyplg_type_prefix_data_dup
      Src: /src/libyang/src/schema_compile_node.c:1630,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1633,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1636,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1658,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1662,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:1668,1
    - Dst: lys_compile_type_union
      Src: /src/libyang/src/schema_compile_node.c:1668,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1674,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1676,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1691,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1695,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1699,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1703,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1707,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1718,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1722,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1726,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1730,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1734,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:1742,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:1742,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 253
    argCount: 9
    argNames:
    - ctx
    - context_pnode
    - context_flags
    - context_name
    - type_p
    - basetype
    - tpdfname
    - base
    - type
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - uint16_t
    - char*
    - struct lysp_type*
    - LY_DATA_TYPE
    - char*
    - struct lysc_type*
    - struct lysc_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1423
    functionDepth: 6
    functionLinenumber: 1423
    functionLinenumberEnd: 1746
    functionName: lys_compile_type_
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lysc_patterns_dup
    - lysc_range_dup
    - strlen
    - lys_compile_type_union
    - lys_compile_type_range
    - LY_CHECK_ERR_RET
    - COMPILE_EXTS_GOTO
    - LY_CHECK_RET
    - LOGMEM
    - LOGVAL
    - lyxp_expr_dup
    - lys_compile_identity_bases
    - lys_compile_type_patterns
    - lyplg_type_prefix_data_dup
    - lyplg_type_prefix_data_new
    - calloc
    - lys_compile_type_enums
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_type_(struct lysc_ctx *ctx, struct lysp_node *context_pnode,
      uint16_t context_flags, const char *context_name,\n        struct lysp_type
      *type_p, LY_DATA_TYPE basetype, const char *tpdfname, struct lysc_type *base,
      struct lysc_type **type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_find
      Src: /src/libyang/src/schema_compile_node.c:1762,1
    - Dst: lyplg_find
      Src: /src/libyang/src/schema_compile_node.c:1765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - mod
    - name
    - basetype
    argTypes:
    - struct lys_module*
    - char*
    - LY_DATA_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1756
    functionDepth: 1
    functionLinenumber: 1756
    functionLinenumberEnd: 1769
    functionName: lys_compile_type_get_plugin
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lyplg_find
    linkageType: ''
    returnType: struct lyplg_type
    signature: 'struct lyplg_type *

      lys_compile_type_get_plugin(struct lys_module *mod, const char *name, LY_DATA_TYPE
      basetype)'
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1790,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:1791,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:1791,1
    - Dst: lysp_type_find
      Src: /src/libyang/src/schema_compile_node.c:1792,1
    - Dst: lysp_type_find
      Src: /src/libyang/src/schema_compile_node.c:1794,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile_node.c:1801,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1803,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1803,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_node.c:1807,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1808,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1808,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/schema_compile_node.c:1822,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:1830,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1831,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1831,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1847,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1849,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1858,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1860,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:1867,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1868,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1868,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1873,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:1874,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:1874,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1876,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1881,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1884,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1888,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1891,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1894,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1897,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1900,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1903,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1906,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1909,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:1919,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1922,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1927,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:1927,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1929,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1931,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:1942,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1943,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1957,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:1962,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1971,1
    - Dst: lys_compile_type_get_plugin
      Src: /src/libyang/src/schema_compile_node.c:1973,1
    - Dst: lys_compile_type_
      Src: /src/libyang/src/schema_compile_node.c:1975,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1977,1
    - Dst: lyplg_find
      Src: /src/libyang/src/schema_compile_node.c:1987,1
    - Dst: lys_compile_type_
      Src: /src/libyang/src/schema_compile_node.c:1989,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1990,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:1993,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:1998,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_node.c:2001,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 179
    argCount: 8
    argNames:
    - ctx
    - context_pnode
    - context_flags
    - context_name
    - type_p
    - type
    - units
    - dflt
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - uint16_t
    - char*
    - struct lysp_type*
    - struct lysc_type**
    - char**
    - struct lysp_qname**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1771
    functionDepth: 7
    functionLinenumber: 1771
    functionLinenumberEnd: 2003
    functionName: lys_compile_type
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - DUP_STRING
    - LY_CHECK_ERR_RET
    - COMPILE_EXTS_GOTO
    - free
    - lys_compile_type_get_plugin
    - lysc_check_status
    - lysc_type_free
    - lys_compile_type_
    - LOGVAL
    - lysp_type_find
    - ly_set_add
    - LY_CHECK_GOTO
    - ly_set_erase
    - lyplg_find
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_type(struct lysc_ctx *ctx, struct lysp_node *context_pnode,
      uint16_t context_flags, const char *context_name,\n        struct lysp_type
      *type_p, struct lysc_type **type, const char **units, struct lysp_qname **dflt)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/schema_compile_node.c:2033,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2044,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2048,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - node_flags
    - parent_flags
    argTypes:
    - struct lysc_ctx*
    - uint16_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2055
      start: 2023
    functionDepth: 1
    functionLinenumber: 2023
    functionLinenumberEnd: 2055
    functionName: lys_compile_status
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LOGWRN
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_status(struct lysc_ctx *ctx, uint16_t *node_flags,
      uint16_t parent_flags)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2083,1
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2085,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2086,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2095,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/schema_compile_node.c:2101,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2105,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/schema_compile_node.c:2115,1
    - Dst: lysc_node_child
      Src: /src/libyang/src/schema_compile_node.c:2117,1
    - Dst: lys_getnext_ext
      Src: /src/libyang/src/schema_compile_node.c:2123,1
    - Dst: ly_set_contains
      Src: /src/libyang/src/schema_compile_node.c:2124,1
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2124,1
    - Dst: lys_getnext_ext
      Src: /src/libyang/src/schema_compile_node.c:2131,1
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2132,1
    - Dst: lys_getnext
      Src: /src/libyang/src/schema_compile_node.c:2139,1
    - Dst: ly_set_contains
      Src: /src/libyang/src/schema_compile_node.c:2140,1
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2140,1
    - Dst: lys_getnext
      Src: /src/libyang/src/schema_compile_node.c:2147,1
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2148,1
    - Dst: lysc_node_actions
      Src: /src/libyang/src/schema_compile_node.c:2155,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:2156,1
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2157,1
    - Dst: lysc_node_notifs
      Src: /src/libyang/src/schema_compile_node.c:2162,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:2163,1
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2164,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_node.c:2169,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_node.c:2173,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2174,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 84
    argCount: 4
    argNames:
    - ctx
    - parent
    - name
    - exclude
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    - char*
    - struct lysc_node*
    assertStmts:
    - condition: (parent->nodetype == LYS_CHOICE)
      pos:
        line_end: 2082
        line_start: 2082
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (!parent || (parent->nodetype != LYS_CHOICE))
      pos:
        line_end: 2094
        line_start: 2094
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 2178
      start: 2069
    functionDepth: 4
    functionLinenumber: 2069
    functionLinenumberEnd: 2178
    functionName: lys_compile_node_uniqness
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - ly_set_contains
    - lysc_node_actions
    - CHECK_NODE
    - lys_getnext
    - lys_getnext_ext
    - LY_LIST_FOR
    - LOGVAL
    - lysc_node_notifs
    - ly_set_add
    - lysc_node_child
    - lysc_data_parent
    - ly_set_erase
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_node_uniqness(struct lysc_ctx *ctx, const struct
      lysc_node *parent, const char *name,\n        const struct lysc_node *exclude)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - iter
    - ','
    - exclude
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2080
      start: 2079
    functionDepth: 0
    functionLinenumber: 2079
    functionLinenumberEnd: 2080
    functionName: CHECK_NODE
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_NODE(iter, exclude, name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_NODE
      Src: /src/libyang/src/schema_compile_node.c:2085,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2084
    functionDepth: 1
    functionLinenumber: 2084
    functionLinenumberEnd: 2089
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 34
    functionsReached:
    - LOGVAL
    - CHECK_NODE
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lysc_node_child(parent), iter)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2201,1
    - Dst: lysc_node_actions_p
      Src: /src/libyang/src/schema_compile_node.c:2212,1
    - Dst: lysc_node_notifs_p
      Src: /src/libyang/src/schema_compile_node.c:2214,1
    - Dst: lysc_node_child_p
      Src: /src/libyang/src/schema_compile_node.c:2216,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2218,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2225,1
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile_node.c:2251,1
    - Dst: lys_compile_node_uniqness
      Src: /src/libyang/src/schema_compile_node.c:2290,1
    - Dst: lysc_ext_substmt
      Src: /src/libyang/src/schema_compile_node.c:2298,1
    - Dst: lys_compile_node_uniqness
      Src: /src/libyang/src/schema_compile_node.c:2316,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 101
    argCount: 3
    argNames:
    - ctx
    - parent
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    - struct lysc_node*
    assertStmts:
    - condition: (parent->nodetype & (LYS_ACTION | LYS_RPC))
      pos:
        line_end: 2200
        line_start: 2200
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (children)
      pos:
        line_end: 2217
        line_start: 2217
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (node->module == parent->module)
      pos:
        line_end: 2224
        line_start: 2224
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 2322
      start: 2191
    functionDepth: 5
    functionLinenumber: 2191
    functionLinenumberEnd: 2322
    functionName: lys_compile_node_connect
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lysc_node_actions_p
    - lysc_node_notifs_p
    - lysc_node_child_p
    - strcmp
    - lys_compile_node_uniqness
    - lysc_ext_substmt
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_connect(struct lysc_ctx *ctx, struct lysc_node
      *parent, struct lysc_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2335,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2354,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    assertStmts:
    - condition: ((node->nodetype != LYS_CASE) || !(node->flags & LYS_CONFIG_MASK))
      pos:
        line_end: 2334
        line_start: 2334
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 2359
      start: 2331
    functionDepth: 1
    functionLinenumber: 2331
    functionLinenumberEnd: 2359
    functionName: lys_compile_config
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LOGVAL
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_config(struct lysc_ctx *ctx, struct lysc_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:2373,1
    - Dst: lys_compile_config
      Src: /src/libyang/src/schema_compile_node.c:2373,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:2377,1
    - Dst: lys_compile_status
      Src: /src/libyang/src/schema_compile_node.c:2377,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - node
    - uses_status
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2389
      start: 2369
    functionDepth: 2
    functionLinenumber: 2369
    functionLinenumberEnd: 2389
    functionName: lys_compile_node_flags
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lys_compile_status
    - lys_compile_config
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_flags(struct lysc_ctx *ctx, struct lysc_node
      *node, uint16_t uses_status)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2408,1
    - Dst: lys_compile_node_deviations_refines
      Src: /src/libyang/src/schema_compile_node.c:2408,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2418,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile_node.c:2418,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2420,1
    - Dst: lys_compile_node_flags
      Src: /src/libyang/src/schema_compile_node.c:2425,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2426,1
    - Dst: LOGVRB
      Src: /src/libyang/src/schema_compile_node.c:2431,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2442,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2443,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2444,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2447,1
    - Dst: lys_compile_node_connect
      Src: /src/libyang/src/schema_compile_node.c:2447,1
    - Dst: lysp_node_when
      Src: /src/libyang/src/schema_compile_node.c:2449,1
    - Dst: lys_compile_when
      Src: /src/libyang/src/schema_compile_node.c:2451,1
    - Dst: lysc_data_node
      Src: /src/libyang/src/schema_compile_node.c:2451,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2452,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2456,1
    - Dst: lys_compile_node_augments
      Src: /src/libyang/src/schema_compile_node.c:2456,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2459,1
    - Dst: node_compile_spec
      Src: /src/libyang/src/schema_compile_node.c:2459,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2462,1
    - Dst: lys_compile_mandatory_parents
      Src: /src/libyang/src/schema_compile_node.c:2465,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2470,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2470,1
    - Dst: lysc_node_free
      Src: /src/libyang/src/schema_compile_node.c:2476,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2479,1
    - Dst: lysp_dev_node_free
      Src: /src/libyang/src/schema_compile_node.c:2481,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 6
    argNames:
    - ctx
    - pnode
    - parent
    - uses_status
    - node
    - child_set
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    - uint16_t
    - struct lysc_node*
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2483
      start: 2391
    functionDepth: 14
    functionLinenumber: 2391
    functionLinenumberEnd: 2483
    functionName: lys_compile_node_
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_node_flags
    - lys_compile_node_deviations_refines
    - lys_compile_node_augments
    - lys_compile_node_connect
    - node_compile_spec
    - DUP_STRING_GOTO
    - COMPILE_EXTS_GOTO
    - lys_compile_mandatory_parents
    - lys_eval_iffeatures
    - LOGVAL
    - lysp_node_when
    - ly_set_add
    - lysc_data_node
    - LY_CHECK_GOTO
    - lysp_dev_node_free
    - lys_compile_when
    - LOGVRB
    - lysc_node_free
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_node_(struct lysc_ctx *ctx, struct lysp_node *pnode,
      struct lysc_node *parent, uint16_t uses_status,\n        LY_ERR (*node_compile_spec)(struct
      lysc_ctx *, struct lysp_node *, struct lysc_node *),\n        struct lysc_node
      *node, struct ly_set *child_set)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILE_ARRAY_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2503,1
    - Dst: COMPILE_EXTS_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2504,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:2507,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2508,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:2508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2493
    functionDepth: 1
    functionLinenumber: 2493
    functionLinenumberEnd: 2515
    functionName: lys_compile_node_action_inout
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - COMPILE_EXTS_GOTO
    - LY_LIST_FOR
    - COMPILE_ARRAY_GOTO
    - LY_CHECK_GOTO
    - lys_compile_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_action_inout(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:2543,1
    - Dst: lys_compile_node_
      Src: /src/libyang/src/schema_compile_node.c:2549,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:2550,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2551,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:2554,1
    - Dst: lys_compile_node_
      Src: /src/libyang/src/schema_compile_node.c:2560,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:2561,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2562,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2566,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2567,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2572
      start: 2525
    functionDepth: 15
    functionLinenumber: 2525
    functionLinenumberEnd: 2572
    functionName: lys_compile_node_action
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_node_
    - lysc_update_path
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_action(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPILE_ARRAY_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2590,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2593,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2594,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:2597,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:2598,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2604
      start: 2582
    functionDepth: 1
    functionLinenumber: 2582
    functionLinenumberEnd: 2604
    functionName: lys_compile_node_notif
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LY_LIST_FOR
    - COMPILE_ARRAY_GOTO
    - ly_set_add
    - LY_CHECK_GOTO
    - lys_compile_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_notif(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:2632,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:2633,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2634,1
    - Dst: COMPILE_ARRAY_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2637,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2640,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2641,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:2644,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:2645,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2646,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:2648,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:2649,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2650,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2655
      start: 2614
    functionDepth: 1
    functionLinenumber: 2614
    functionLinenumberEnd: 2655
    functionName: lys_compile_node_container
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LY_LIST_FOR
    - COMPILE_ARRAY_GOTO
    - ly_set_add
    - LY_CHECK_GOTO
    - lys_compile_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_container(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:2671,1
    - Dst: lys_compile_type
      Src: /src/libyang/src/schema_compile_node.c:2671,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:2676,1
    - Dst: lysc_unres_leaf_dflt_add
      Src: /src/libyang/src/schema_compile_node.c:2676,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:2681,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2681,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_node.c:2684,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:2687,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2687,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2692,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - context_node
    - type_p
    - leaf
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysp_type*
    - struct lysc_node_leaf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2665
    functionDepth: 8
    functionLinenumber: 2665
    functionLinenumberEnd: 2698
    functionName: lys_compile_node_type
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_type
    - lysc_unres_leaf_dflt_add
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL
    - ly_set_add
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_node_type(struct lysc_ctx *ctx, struct lysp_node
      *context_node, struct lysp_type *type_p,\n        struct lysc_node_leaf *leaf)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: COMPILE_ARRAY_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2715,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2718,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2719,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2722,1
    - Dst: lydict_insert
      Src: /src/libyang/src/schema_compile_node.c:2722,1
    - Dst: lys_compile_node_type
      Src: /src/libyang/src/schema_compile_node.c:2727,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2728,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:2732,1
    - Dst: lysc_unres_leaf_dflt_add
      Src: /src/libyang/src/schema_compile_node.c:2732,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2738,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2708
    functionDepth: 9
    functionLinenumber: 2708
    functionLinenumberEnd: 2745
    functionName: lys_compile_node_leaf
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_node_type
    - lysc_unres_leaf_dflt_add
    - COMPILE_ARRAY_GOTO
    - LY_CHECK_RET
    - LOGVAL
    - lydict_insert
    - ly_set_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_leaf(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: COMPILE_ARRAY_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2762,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:2765,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2766,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2769,1
    - Dst: lydict_insert
      Src: /src/libyang/src/schema_compile_node.c:2769,1
    - Dst: lys_compile_node_type
      Src: /src/libyang/src/schema_compile_node.c:2774,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2775,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2780,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:2785,1
    - Dst: lysc_unres_llist_dflts_add
      Src: /src/libyang/src/schema_compile_node.c:2785,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2803,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2808,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2815
      start: 2755
    functionDepth: 9
    functionLinenumber: 2755
    functionLinenumberEnd: 2815
    functionName: lys_compile_node_leaflist
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_node_type
    - COMPILE_ARRAY_GOTO
    - LOGVAL
    - lydict_insert
    - ly_set_add
    - lysc_unres_llist_dflts_add
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_leaflist(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2830,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2831,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2832,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2843,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:2845,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2853,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:2855,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/schema_compile_node.c:2861,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_compile_node.c:2863,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:2866,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2867,1
    - Dst: LYSP_MODULE_NAME
      Src: /src/libyang/src/schema_compile_node.c:2869,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/schema_compile_node.c:2882,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/schema_compile_node.c:2890,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2897,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/schema_compile_node.c:2901,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/schema_compile_node.c:2903,1
    - Dst: lys_find_child
      Src: /src/libyang/src/schema_compile_node.c:2911,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2916,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2934,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2948,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:2950,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 97
    argCount: 10
    argNames:
    - ctx
    - nodeid
    - nodeid_len
    - ctx_node
    - cur_mod
    - format
    - prefix_data
    - nodetype
    - target
    - result_flag
    argTypes:
    - struct lysc_ctx*
    - char*
    - size_t
    - struct lysc_node*
    - struct lys_module*
    - LY_VALUE_FORMAT
    - void*
    - uint16_t
    - struct lysc_node**
    - uint16_t*
    assertStmts:
    - condition: (target)
      pos:
        line_end: 2830
        line_start: 2830
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (result_flag)
      pos:
        line_end: 2831
        line_start: 2831
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (prefix)
      pos:
        line_end: 2865
        line_start: 2865
        source_file: /src/libyang/src/schema_compile_node.c
    - condition: (nodeid)
      pos:
        line_end: 2829
        line_start: 2829
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 2954
      start: 2817
    functionDepth: 5
    functionLinenumber: 2817
    functionLinenumberEnd: 2954
    functionName: lysc_resolve_schema_nodeid
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - strlen
    - ly_strncmp
    - LOGINT_RET
    - ly_parse_nodeid
    - lys_find_child
    - LOGVAL
    - LYSP_MODULE_NAME
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lysc_resolve_schema_nodeid(struct lysc_ctx *ctx, const char
      *nodeid, size_t nodeid_len, const struct lysc_node *ctx_node,\n        const
      struct lys_module *cur_mod, LY_VALUE_FORMAT format, void *prefix_data, uint16_t
      nodetype,\n        const struct lysc_node **target, uint16_t *result_flag)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:2977,1
    - Dst: strpbrk
      Src: /src/libyang/src/schema_compile_node.c:2980,1
    - Dst: isspace
      Src: /src/libyang/src/schema_compile_node.c:2983,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:2987,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:2991,1
    - Dst: lysc_resolve_schema_nodeid
      Src: /src/libyang/src/schema_compile_node.c:2992,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2996,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_node.c:2998,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3002,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3011,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3023,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3030,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile_node.c:3030,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 3
    argNames:
    - ctx
    - uniques
    - list
    argTypes:
    - struct lysc_ctx*
    - struct lysp_qname*
    - struct lysc_node_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3043
      start: 2963
    functionDepth: 6
    functionLinenumber: 2963
    functionLinenumberEnd: 3043
    functionName: lys_compile_node_list_unique
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - strlen
    - lys_nodetype2str
    - lysc_check_status
    - LY_CHECK_RET
    - LOGVAL
    - isspace
    - lysc_resolve_schema_nodeid
    - strpbrk
    - LY_ARRAY_NEW_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_list_unique(struct lysc_ctx *ctx, struct lysp_qname
      *uniques, struct lysc_node_list *list)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:2977,1
    - Dst: strpbrk
      Src: /src/libyang/src/schema_compile_node.c:2980,1
    - Dst: isspace
      Src: /src/libyang/src/schema_compile_node.c:2983,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:2987,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_node.c:2991,1
    - Dst: lysc_resolve_schema_nodeid
      Src: /src/libyang/src/schema_compile_node.c:2992,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:2996,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_node.c:2998,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3002,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3011,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3023,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3030,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile_node.c:3030,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3040
      start: 2975
    functionDepth: 6
    functionLinenumber: 2975
    functionLinenumberEnd: 3040
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 57
    functionsReached:
    - strlen
    - lys_nodetype2str
    - lysc_check_status
    - LY_CHECK_RET
    - LOGVAL
    - isspace
    - lysc_resolve_schema_nodeid
    - strpbrk
    - LY_ARRAY_NEW_RET
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(uniques, v)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3070,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3071,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3071,1
    - Dst: COMPILE_ARRAY_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3074,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3077,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:3077,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3082,1
    - Dst: strpbrk
      Src: /src/libyang/src/schema_compile_node.c:3094,1
    - Dst: isspace
      Src: /src/libyang/src/schema_compile_node.c:3097,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_node.c:3101,1
    - Dst: lys_find_child
      Src: /src/libyang/src/schema_compile_node.c:3105,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3107,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3113,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3117,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3120,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3126,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3133,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3141,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile_node.c:3141,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::free
      Src: /src/libyang/src/schema_compile_node.c:3146,1
    - Dst: lysc_type_free
      Src: /src/libyang/src/schema_compile_node.c:3147,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:3148,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3194,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3199,1
    - Dst: lys_compile_node_list_unique
      Src: /src/libyang/src/schema_compile_node.c:3199,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3202,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3203,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3204,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3206,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3207,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3208,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3213,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 117
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3220
      start: 3053
    functionDepth: 7
    functionLinenumber: 3053
    functionLinenumberEnd: 3220
    functionName: lys_compile_node_list
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - strlen
    - lys_compile_node_list_unique
    - lys_find_child
    - free
    - LY_LIST_FOR
    - COMPILE_ARRAY_GOTO
    - lysc_check_status
    - LY_CHECK_RET
    - struct lysc_node_leaf*::dflt::realtype::plugin::free
    - LOGVAL
    - lysc_type_free
    - isspace
    - ly_set_add
    - lysc_update_path
    - LY_CHECK_GOTO
    - strpbrk
    - lys_compile_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_list(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/libyang/src/schema_compile_node.c:3241,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_compile_node.c:3250,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3252,1
    - Dst: LYSP_MODULE_NAME
      Src: /src/libyang/src/schema_compile_node.c:3253,1
    - Dst: lys_find_child
      Src: /src/libyang/src/schema_compile_node.c:3260,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3262,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3268,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3273,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3280,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - dflt
    - ch
    argTypes:
    - struct lysc_ctx*
    - struct lysp_qname*
    - struct lysc_node_choice*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3286
      start: 3232
    functionDepth: 5
    functionLinenumber: 3232
    functionLinenumberEnd: 3286
    functionName: lys_compile_node_choice_dflt
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - lys_find_child
    - LY_LIST_FOR
    - strchr
    - LYSP_MODULE_NAME
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_choice_dflt(struct lysc_ctx *ctx, struct lysp_qname
      *dflt, struct lysc_node_choice *ch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3298,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3301,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3303,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3310,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/schema_compile_node.c:3315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 4
    argNames:
    - ctx
    - child_p
    - node
    - child_set
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3320
      start: 3288
    functionDepth: 5
    functionLinenumber: 3288
    functionLinenumberEnd: 3320
    functionName: lys_compile_node_choice_child
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_node
    - lysp_node_free
    - calloc
    - DUP_STRING_GOTO
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_node_choice_child(struct lysc_ctx *ctx, struct
      lysp_node *child_p, struct lysc_node *node,\n        struct ly_set *child_set)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:3339,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3341,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3342,1
    - Dst: lys_compile_node_choice_child
      Src: /src/libyang/src/schema_compile_node.c:3342,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3347,1
    - Dst: lys_compile_node_choice_dflt
      Src: /src/libyang/src/schema_compile_node.c:3347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts:
    - condition: (node->nodetype == LYS_CHOICE)
      pos:
        line_end: 3338
        line_start: 3338
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 3351
      start: 3331
    functionDepth: 6
    functionLinenumber: 3331
    functionLinenumberEnd: 3351
    functionName: lys_compile_node_choice
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lys_compile_node_choice_dflt
    - LY_LIST_FOR
    - LY_CHECK_RET
    - lys_compile_node_choice_child
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_choice(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: COMPILE_ARRAY_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3368,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:3371,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3372,1
    - Dst: LOGVRB
      Src: /src/libyang/src/schema_compile_node.c:3376,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/schema_compile_node.c:3377,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3381
      start: 3361
    functionDepth: 1
    functionLinenumber: 3361
    functionLinenumberEnd: 3381
    functionName: lys_compile_node_any
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - COMPILE_ARRAY_GOTO
    - ly_set_add
    - ly_stmt2str
    - LY_CHECK_GOTO
    - LOGVRB
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_any(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3407,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3408,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3408,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/schema_compile_node.c:3411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - pnode
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3415
      start: 3397
    functionDepth: 1
    functionLinenumber: 3397
    functionLinenumberEnd: 3415
    functionName: lys_compile_node_case
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lys_compile_node
    - LOGINT_RET
    - LY_LIST_FOR
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_case(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysc_node *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysc_node_child
      Src: /src/libyang/src/schema_compile_node.c:3429,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 2
    argNames:
    - parent
    - add
    argTypes:
    - struct lysc_node*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3439
      start: 3417
    functionDepth: 3
    functionLinenumber: 3417
    functionLinenumberEnd: 3439
    functionName: lys_compile_mandatory_parents
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 1
    functionsReached:
    - lysc_node_child
    linkageType: ''
    returnType: void
    signature: void lys_compile_mandatory_parents(struct lysc_node *parent, ly_bool
      add)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile_node.c:3454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - grps
    - name
    argTypes:
    - struct lysp_node_grp*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3460
      start: 3448
    functionDepth: 0
    functionLinenumber: 3448
    functionLinenumberEnd: 3460
    functionName: match_grouping
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct lysp_node_grp
    signature: 'struct lysp_node_grp *

      match_grouping(struct lysp_node_grp *grps, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/schema_compile_node.c:3454,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3457
      start: 3453
    functionDepth: 0
    functionLinenumber: 3453
    functionLinenumberEnd: 3457
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 41
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(grps, grp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3488,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/schema_compile_node.c:3488,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/schema_compile_node.c:3490,1
    - Dst: match_grouping
      Src: /src/libyang/src/schema_compile_node.c:3494,1
    - Dst: lysp_node_groupings
      Src: /src/libyang/src/schema_compile_node.c:3494,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_compile_node.c:3501,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3503,1
    - Dst: match_grouping
      Src: /src/libyang/src/schema_compile_node.c:3512,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_node.c:3516,1
    - Dst: match_grouping
      Src: /src/libyang/src/schema_compile_node.c:3517,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3525,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 4
    argNames:
    - ctx
    - uses_p
    - grp_p
    - grp_pmod
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node_uses*
    - struct lysp_node_grp**
    - struct lysp_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3538
      start: 3471
    functionDepth: 5
    functionLinenumber: 3471
    functionLinenumberEnd: 3538
    functionName: lys_compile_uses_find_grouping
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - ly_resolve_prefix
    - match_grouping
    - ly_strncmp
    - lysp_node_groupings
    - ly_parse_nodeid
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_uses_find_grouping(struct lysc_ctx *ctx, struct
      lysp_node_uses *uses_p, struct lysp_node_grp **grp_p,\n        struct lysp_module
      **grp_pmod)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3564,1
    - Dst: lys_compile_uses_find_grouping
      Src: /src/libyang/src/schema_compile_node.c:3564,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3568,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_node.c:3568,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3571,1
    - Dst: lysc_check_status
      Src: /src/libyang/src/schema_compile_node.c:3577,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3578,1
    - Dst: lys_precompile_uses_augments_refines
      Src: /src/libyang/src/schema_compile_node.c:3581,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3582,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3588,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3590,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3591,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3596,1
    - Dst: ly_set_merge
      Src: /src/libyang/src/schema_compile_node.c:3596,1
    - Dst: lys_compile_when
      Src: /src/libyang/src/schema_compile_node.c:3604,1
    - Dst: lysc_data_node
      Src: /src/libyang/src/schema_compile_node.c:3604,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3605,1
    - Dst: lysc_node_actions_p
      Src: /src/libyang/src/schema_compile_node.c:3612,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3614,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_node.c:3615,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_node.c:3616,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3620,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3622,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3623,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3628,1
    - Dst: lys_compile_when
      Src: /src/libyang/src/schema_compile_node.c:3629,1
    - Dst: lysc_data_node
      Src: /src/libyang/src/schema_compile_node.c:3629,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3630,1
    - Dst: lysc_node_notifs_p
      Src: /src/libyang/src/schema_compile_node.c:3638,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3640,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_node.c:3641,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_node.c:3642,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3647,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_node.c:3649,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3650,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_node.c:3655,1
    - Dst: lys_compile_when
      Src: /src/libyang/src/schema_compile_node.c:3656,1
    - Dst: lysc_data_node
      Src: /src/libyang/src/schema_compile_node.c:3656,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3657,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3669,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3673,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3682,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_node.c:3686,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/schema_compile_node.c:3693,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_node.c:3694,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_node.c:3696,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 88
    argCount: 4
    argNames:
    - ctx
    - uses_p
    - parent
    - child_set
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node_uses*
    - struct lysc_node*
    - struct ly_set*
    assertStmts:
    - condition: (ctx->groupings.count == grp_stack_count)
      pos:
        line_end: 3693
        line_start: 3693
        source_file: /src/libyang/src/schema_compile_node.c
    constantsTouched: []
    func_position:
      end: 3698
      start: 3551
    functionDepth: 14
    functionLinenumber: 3551
    functionLinenumberEnd: 3698
    functionName: lys_compile_uses
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - lysc_node_actions_p
    - lys_nodetype2str
    - ly_set_erase
    - lysc_node_notifs_p
    - LY_LIST_FOR
    - lysc_check_status
    - LY_CHECK_RET
    - ly_set_merge
    - LOGVAL
    - ly_set_rm_index
    - lys_precompile_uses_augments_refines
    - ly_set_add
    - lysc_data_node
    - LY_CHECK_GOTO
    - lys_compile_when
    - lys_compile_node
    - lys_compile_uses_find_grouping
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_uses(struct lysc_ctx *ctx, struct lysp_node_uses
      *uses_p, struct lysc_node *parent, struct ly_set *child_set)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3713,1
    - Dst: asprintf
      Src: /src/libyang/src/schema_compile_node.c:3713,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3716,1
    - Dst: asprintf
      Src: /src/libyang/src/schema_compile_node.c:3716,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_node.c:3719,1
    - Dst: asprintf
      Src: /src/libyang/src/schema_compile_node.c:3719,1
    - Dst: strdup
      Src: /src/libyang/src/schema_compile_node.c:3722,1
    - Dst: asprintf
      Src: /src/libyang/src/schema_compile_node.c:3728,1
    - Dst: asprintf
      Src: /src/libyang/src/schema_compile_node.c:3731,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:3733,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:3734,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:3738,1
    - Dst: strdup
      Src: /src/libyang/src/schema_compile_node.c:3741,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - node
    - path
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3745
      start: 3700
    functionDepth: 2
    functionLinenumber: 3700
    functionLinenumberEnd: 3745
    functionName: lys_compile_grouping_pathlog
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - free
    - asprintf
    - strdup
    linkageType: ''
    returnType: int
    signature: int lys_compile_grouping_pathlog(struct lysc_ctx *ctx, struct lysp_node
      *node, char **path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LOGWRN
      Src: /src/libyang/src/schema_compile_node.c:3774,1
    - Dst: lys_compile_grouping_pathlog
      Src: /src/libyang/src/schema_compile_node.c:3777,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:3779,1
    - Dst: strncpy
      Src: /src/libyang/src/schema_compile_node.c:3782,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_node.c:3784,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3786,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3787,1
    - Dst: lys_compile_uses
      Src: /src/libyang/src/schema_compile_node.c:3788,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3789,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3790,1
    - Dst: lysc_node_container_free
      Src: /src/libyang/src/schema_compile_node.c:3796,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - pnode
    - grp
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysp_node_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3799
      start: 3747
    functionDepth: 15
    functionLinenumber: 3747
    functionLinenumberEnd: 3799
    functionName: lys_compile_grouping
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 1
    functionsReached:
    - lys_compile_uses
    - free
    - lys_compile_grouping_pathlog
    - strncpy
    - lysc_update_path
    - LOGWRN
    - LOGMEM
    - lysc_node_container_free
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_grouping(struct lysc_ctx *ctx, struct lysp_node
      *pnode, struct lysp_node_grp *grp)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3812,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3814,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3815,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3820,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3824,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3828,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3832,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3836,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3840,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3845,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3851,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3856,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_node.c:3862,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_node.c:3867,1
    - Dst: lys_compile_uses
      Src: /src/libyang/src/schema_compile_node.c:3872,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3873,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3874,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile_node.c:3877,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_node.c:3880,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_node.c:3880,1
    - Dst: lys_compile_node_
      Src: /src/libyang/src/schema_compile_node.c:3882,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_node.c:3885,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 70
    argCount: 5
    argNames:
    - ctx
    - pnode
    - parent
    - uses_status
    - child_set
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    - uint16_t
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3887
      start: 3801
    functionDepth: 15
    functionLinenumber: 3801
    functionLinenumberEnd: 3887
    functionName: lys_compile_node
    functionSourceFile: /src/libyang/src/schema_compile_node.c
    functionUses: 9
    functionsReached:
    - LY_CHECK_ERR_RET
    - lys_compile_uses
    - LOGINT
    - LOGVAL
    - lys_compile_node_
    - lysc_update_path
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_node(struct lysc_ctx *ctx, struct lysp_node *pnode,
      struct lysc_node *parent, uint16_t uses_status,\n        struct ly_set *child_set)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/printer_yang.c:92,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_yang.c:111,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_yang.c:114,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_yang.c:117,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_yang.c:120,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_yang.c:123,1
    - Dst: ly_write_
      Src: /src/libyang/src/printer_yang.c:134,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 3
    argNames:
    - out
    - text
    - len
    argTypes:
    - struct ly_out*
    - char*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 135
    functionName: ypr_encode
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - strlen
    - ly_write_
    linkageType: ''
    returnType: void
    signature: void ypr_encode(struct ly_out *out, const char *text, ssize_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - out
    - flag
    argTypes:
    - struct ly_out*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: ypr_open
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_open(struct ly_out *out, ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:150,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: ypr_close
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_close(struct lys_ypr_ctx *ctx, ly_bool flag)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:162,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:164,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:167,1
    - Dst: strchr
      Src: /src/libyang/src/printer_yang.c:170,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:171,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:172,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:175,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:179,1
    - Dst: strlen
      Src: /src/libyang/src/printer_yang.c:179,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:181,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - name
    - text
    - singleline
    - closed
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - char*
    - ly_bool
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 188
    functionName: ypr_text
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - strchr
    - ly_print_
    - ypr_encode
    - strlen
    linkageType: ''
    returnType: void
    signature: void ypr_text(struct lys_ypr_ctx *ctx, const char *name, const char
      *text, ly_bool singleline, ly_bool closed)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:198,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:200,1
    - Dst: strchr
      Src: /src/libyang/src/printer_yang.c:202,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:203,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:204,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:207,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:211,1
    - Dst: strlen
      Src: /src/libyang/src/printer_yang.c:211,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:212,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:214,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:217,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:222,1
    - Dst: yprp_stmt
      Src: /src/libyang/src/printer_yang.c:223,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:226,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - stmt
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 228
    functionName: yprp_stmt
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 1
    functionsReached:
    - strlen
    - yprp_stmt
    - ly_print_
    - LY_LIST_FOR
    - strchr
    - ypr_encode
    linkageType: ''
    returnType: void
    signature: void yprp_stmt(struct lys_ypr_ctx *ctx, struct lysp_stmt *stmt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_yang.c:242,1
    - Dst: lysp_ext_find_definition
      Src: /src/libyang/src/printer_yang.c:256,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:261,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:264,1
    - Dst: lysp_ext_instance_resolve_argument
      Src: /src/libyang/src/printer_yang.c:265,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:266,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:267,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:269,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:274,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:279,1
    - Dst: yprp_stmt
      Src: /src/libyang/src/printer_yang.c:282,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:286,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:288,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 6
    argNames:
    - ctx
    - substmt
    - substmt_index
    - ext
    - flag
    - count
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - struct lysp_ext_instance*
    - ly_bool*
    - LY_ARRAY_COUNT_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 233
    functionDepth: 5
    functionLinenumber: 233
    functionLinenumberEnd: 291
    functionName: yprp_extension_instances
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_stmt
    - LY_ARRAY_COUNT
    - ly_print_
    - LY_LIST_FOR
    - ypr_open
    - ypr_encode
    - lysp_ext_instance_resolve_argument
    - lysp_ext_find_definition
    linkageType: ''
    returnType: void
    signature: "void yprp_extension_instances(struct lys_ypr_ctx *ctx, enum ly_stmt
      substmt, uint8_t substmt_index,\n        struct lysp_ext_instance *ext, ly_bool
      *flag, LY_ARRAY_COUNT_TYPE count)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lysp_ext_find_definition
      Src: /src/libyang/src/printer_yang.c:256,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:261,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:264,1
    - Dst: lysp_ext_instance_resolve_argument
      Src: /src/libyang/src/printer_yang.c:265,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:266,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:267,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:269,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:274,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:279,1
    - Dst: yprp_stmt
      Src: /src/libyang/src/printer_yang.c:282,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:286,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:288,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 244
    functionDepth: 5
    functionLinenumber: 244
    functionLinenumberEnd: 290
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 58
    functionsReached:
    - yprp_stmt
    - ly_print_
    - LY_LIST_FOR
    - ypr_open
    - ypr_encode
    - lysp_ext_instance_resolve_argument
    - lysp_ext_find_definition
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(ext, u)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:308,1
    - Dst: ypr_text
      Src: /src/libyang/src/printer_yang.c:310,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:320,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:322,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:326,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - ctx
    - substmt
    - substmt_index
    - text
    - ext
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 296
    functionDepth: 3
    functionLinenumber: 296
    functionLinenumberEnd: 327
    functionName: ypr_substmt
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - ypr_close
    - ly_print_
    - ypr_text
    - yprp_extension_instances
    linkageType: ''
    returnType: void
    signature: void ypr_substmt(struct lys_ypr_ctx *ctx, enum ly_stmt substmt, uint8_t
      substmt_index, const char *text, void *ext)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:320,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:322,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 58
    functionsReached:
    - yprp_extension_instances
    - yprc_extension_instances
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(ext, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/printer_yang.c:334,1
    - Dst: LOGMEM
      Src: /src/libyang/src/printer_yang.c:335,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:338,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:339,1
    - Dst: free
      Src: /src/libyang/src/printer_yang.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - ctx
    - substmt
    - substmt_index
    - exts
    - attr_value
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - void*
    - unsigned long int
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 341
    functionName: ypr_unsigned
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_substmt
    - free
    - asprintf
    - ypr_open
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: void ypr_unsigned(struct lys_ypr_ctx *ctx, enum ly_stmt substmt, uint8_t
      substmt_index, void *exts, unsigned long int attr_value, ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/printer_yang.c:348,1
    - Dst: LOGMEM
      Src: /src/libyang/src/printer_yang.c:349,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:352,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:353,1
    - Dst: free
      Src: /src/libyang/src/printer_yang.c:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - ctx
    - substmt
    - substmt_index
    - exts
    - attr_value
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - void*
    - signed long int
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 355
    functionName: ypr_signed
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_substmt
    - free
    - asprintf
    - ypr_open
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: void ypr_signed(struct lys_ypr_ctx *ctx, enum ly_stmt substmt, uint8_t
      substmt_index, void *exts, signed long int attr_value, ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:361,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:363,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:364,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:365,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:367,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - rev
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_revision*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 371
    functionName: yprp_revision
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_extension_instances
    - ly_print_
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void yprp_revision(struct lys_ypr_ctx *ctx, const struct lysp_revision
      *rev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:377,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - flags
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - uint16_t
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 380
    functionName: ypr_mandatory
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_open
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_mandatory(struct lys_ypr_ctx *ctx, uint16_t flags, void *exts,
      ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:386,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - flags
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - uint16_t
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 389
    functionName: ypr_config
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_open
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_config(struct lys_ypr_ctx *ctx, uint16_t flags, void *exts,
      ly_bool *flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:397,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:400,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:403,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - flags
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - uint16_t
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 408
    functionName: ypr_status
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_open
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_status(struct lys_ypr_ctx *ctx, uint16_t flags, void *exts,
      ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:414,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - dsc
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 417
    functionName: ypr_description
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_open
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_description(struct lys_ypr_ctx *ctx, const char *dsc, void
      *exts, ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:423,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - ref
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 426
    functionName: ypr_reference
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_open
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_reference(struct lys_ypr_ctx *ctx, const char *ref, void *exts,
      ly_bool *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:435,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:438,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:443,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - iffs
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_qname*
    - struct lysp_ext_instance*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 448
    functionName: yprp_iffeatures
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_extension_instances
    - ly_print_
    - ypr_open
    - ypr_close
    linkageType: ''
    returnType: void
    signature: void yprp_iffeatures(struct lys_ypr_ctx *ctx, struct lysp_qname *iffs,
      struct lysp_ext_instance *exts, ly_bool *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:435,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:438,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:443,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 447
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 58
    functionsReached:
    - yprp_extension_instances
    - ly_print_
    - ypr_open
    - ypr_close
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(iffs, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 444
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 58
    functionsReached:
    - yprp_extension_instances
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(exts, v)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:456,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:460,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:464,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:465,1
    - Dst: lysp_ext_instance_iter
      Src: /src/libyang/src/printer_yang.c:469,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_yang.c:469,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:470,1
    - Dst: lysp_ext_instance_iter
      Src: /src/libyang/src/printer_yang.c:474,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_yang.c:474,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:475,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:476,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:479,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:482,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:483,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:484,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:487,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 488
    functionName: yprp_extension
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_substmt
    - LY_ARRAY_COUNT
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_open
    - ypr_status
    - yprp_extension_instances
    - lysp_ext_instance_iter
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_extension(struct lys_ypr_ctx *ctx, const struct lysp_ext
      *ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:495,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:497,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:498,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:499,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:500,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:501,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - feat
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_feature*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 504
    functionName: yprp_feature
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_iffeatures
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_feature(struct lys_ypr_ctx *ctx, const struct lysp_feature
      *feat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:512,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:515,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:516,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:518,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:519,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:520,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:523,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:524,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:525,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - ident
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_ident*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 529
    functionName: yprp_identity
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_iffeatures
    - ypr_substmt
    - ypr_close
    - ly_print_
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_identity(struct lys_ypr_ctx *ctx, const struct lysp_ident
      *ident)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:537,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:540,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:542,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:543,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:545,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:547,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:551,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:552,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:553,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - ident
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_ident*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 557
    functionName: yprc_identity
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - ypr_close
    - ly_print_
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_status
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_identity(struct lys_ypr_ctx *ctx, const struct lysc_ident
      *ident)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:568,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:569,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/printer_yang.c:569,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:570,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:573,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:576,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:579,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:580,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:583,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:584,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:587,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:588,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:590,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:591,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:594,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - restr
    - stmt
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_restr*
    - enum ly_stmt
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 559
    functionDepth: 2
    functionLinenumber: 559
    functionLinenumberEnd: 595
    functionName: yprp_restr
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_substmt
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_open
    - ypr_encode
    - ly_stmt2str
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_restr(struct lys_ypr_ctx *ctx, const struct lysp_restr *restr,
      enum ly_stmt stmt, ly_bool *flag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:602,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:603,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:604,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:605,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:608,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:610,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:611,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:614,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:615,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:617,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:618,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - must
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_must*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 622
    functionName: yprc_must
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - ypr_substmt
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_open
    - ypr_encode
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_must(struct lys_ypr_ctx *ctx, const struct lysc_must *must,
      ly_bool *flag)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:634,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:635,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:636,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:638,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:642,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:644,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:648,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:650,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:654,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:657,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:659,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:660,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:663,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:664,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:666,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:667,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:670,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 4
    argNames:
    - ctx
    - range
    - basetype
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_range*
    - LY_DATA_TYPE
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 671
    functionName: yprc_range
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - ypr_substmt
    - ypr_close
    - ly_print_
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_range(struct lys_ypr_ctx *ctx, const struct lysc_range *range,
      LY_DATA_TYPE basetype, ly_bool *flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:678,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:679,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:680,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:681,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:684,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:687,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:688,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:691,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:692,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:695,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:696,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:698,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:699,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:702,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - pattern
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_pattern*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 673
    functionDepth: 2
    functionLinenumber: 673
    functionLinenumberEnd: 703
    functionName: yprc_pattern
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - ypr_substmt
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_open
    - ypr_encode
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_pattern(struct lys_ypr_ctx *ctx, const struct lysc_pattern
      *pattern, ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:713,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:715,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:716,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:717,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:720,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:721,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:722,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - when
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_when*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 725
    functionName: yprp_when
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_open
    - ypr_encode
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_when(struct lys_ypr_ctx *ctx, struct lysp_when *when, ly_bool
      *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:735,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:737,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:738,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:739,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:742,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:743,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:744,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - when
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_when*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 747
    functionName: yprc_when
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_open
    - ypr_encode
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_when(struct lys_ypr_ctx *ctx, struct lysc_when *when, ly_bool
      *flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:756,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:758,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:760,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:761,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:762,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:766,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:767,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:770,1
    - Dst: ypr_signed
      Src: /src/libyang/src/printer_yang.c:772,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:775,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:776,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:777,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:779,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - items
    - type
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_type_enum*
    - LY_DATA_TYPE
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 749
    functionDepth: 2
    functionLinenumber: 749
    functionLinenumberEnd: 781
    functionName: yprp_enum
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_iffeatures
    - ypr_close
    - ly_print_
    - ypr_signed
    - ypr_reference
    - ypr_open
    - ypr_encode
    - ypr_status
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_enum(struct lys_ypr_ctx *ctx, const struct lysp_type_enum
      *items, LY_DATA_TYPE type, ly_bool *flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:756,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:758,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:760,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:761,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:762,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:766,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:767,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:770,1
    - Dst: ypr_signed
      Src: /src/libyang/src/printer_yang.c:772,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:775,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:776,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:777,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:779,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 755
    functionDepth: 2
    functionLinenumber: 755
    functionLinenumberEnd: 780
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 61
    functionsReached:
    - yprp_iffeatures
    - ypr_close
    - ly_print_
    - ypr_signed
    - ypr_reference
    - ypr_open
    - ypr_encode
    - ypr_status
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(items, u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:789,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:792,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:794,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:795,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:796,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:797,1
    - Dst: yprp_enum
      Src: /src/libyang/src/printer_yang.c:799,1
    - Dst: yprp_enum
      Src: /src/libyang/src/printer_yang.c:800,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:803,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:804,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:807,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:808,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:811,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:813,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:814,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:815,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:817,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:818,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yang.c:819,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:823,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 783
    functionDepth: 1
    functionLinenumber: 783
    functionLinenumberEnd: 824
    functionName: yprp_type
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 1
    functionsReached:
    - ypr_substmt
    - ypr_close
    - ly_print_
    - yprp_type
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_unsigned
    - yprp_extension_instances
    - yprp_enum
    linkageType: ''
    returnType: void
    signature: void yprp_type(struct lys_ypr_ctx *ctx, const struct lysp_type *type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::realtype::plugin::print
      Src: /src/libyang/src/printer_yang.c:833,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:834,1
    - Dst: free
      Src: /src/libyang/src/printer_yang.c:836,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - ly_ctx
    - value
    - exts
    argTypes:
    - struct lys_ypr_ctx*
    - struct ly_ctx*
    - struct lyd_value*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 838
    functionName: yprc_dflt_value
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - free
    - struct lyd_value*::realtype::plugin::print
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: "void yprc_dflt_value(struct lys_ypr_ctx *ctx, const struct ly_ctx
      *ly_ctx, const struct lyd_value *value,\n        struct lysc_ext_instance *exts)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:846,1
    - Dst: lys_datatype2str
      Src: /src/libyang/src/printer_yang.c:846,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:849,1
    - Dst: yprc_range
      Src: /src/libyang/src/printer_yang.c:854,1
    - Dst: yprc_range
      Src: /src/libyang/src/printer_yang.c:866,1
    - Dst: yprc_range
      Src: /src/libyang/src/printer_yang.c:871,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:872,1
    - Dst: yprc_pattern
      Src: /src/libyang/src/printer_yang.c:873,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:881,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:885,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:886,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:887,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:888,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:891,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:892,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:894,1
    - Dst: ypr_signed
      Src: /src/libyang/src/printer_yang.c:895,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:897,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:898,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:899,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:901,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:911,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:912,1
    - Dst: yprc_range
      Src: /src/libyang/src/printer_yang.c:913,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:918,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:919,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:920,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:926,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:927,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:932,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:933,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:934,1
    - Dst: yprc_type
      Src: /src/libyang/src/printer_yang.c:935,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:940,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:941,1
    - Dst: yprc_type
      Src: /src/libyang/src/printer_yang.c:942,1
    - Dst: LOGINT
      Src: /src/libyang/src/printer_yang.c:947,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:951,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 90
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 952
    functionName: yprc_type
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 1
    functionsReached:
    - yprc_extension_instances
    - yprc_range
    - ypr_close
    - ypr_substmt
    - ly_print_
    - lys_datatype2str
    - LOGINT
    - ypr_signed
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_open
    - yprc_pattern
    - ypr_encode
    - ypr_unsigned
    - ypr_status
    - yprc_type
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_type(struct lys_ypr_ctx *ctx, const struct lysc_type *type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:957,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:960,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yang.c:962,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:965,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:968,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:971,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:972,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:973,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:976,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - tpdf
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_tpdf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 977
    functionName: yprp_typedef
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_substmt
    - ly_print_
    - yprp_type
    - ypr_reference
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_typedef(struct lys_ypr_ctx *ctx, const struct lysp_tpdf *tpdf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:994,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:997,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:998,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:999,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1000,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1002,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1003,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yang.c:1004,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1007,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1008,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yang.c:1009,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1012,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1013,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1014,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1017,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1018,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yang.c:1019,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1022,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1023,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yang.c:1024,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - grp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 984
    functionDepth: 1
    functionLinenumber: 984
    functionLinenumberEnd: 1029
    functionName: yprp_grouping
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 1
    functionsReached:
    - yprp_typedef
    - yprp_notification
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - yprp_action
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_status
    - ypr_open
    - yprp_grouping
    - yprp_extension_instances
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_grouping(struct lys_ypr_ctx *ctx, const struct lysp_node_grp
      *grp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1042,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1044,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1047,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1048,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1049,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1051,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yang.c:1052,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1054,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yang.c:1055,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1058,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1059,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1063,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - inout
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_action_inout*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1064
    functionName: yprp_inout
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_typedef
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_open
    - yprp_grouping
    - yprp_extension_instances
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_inout(struct lys_ypr_ctx *ctx, const struct lysp_node_action_inout
      *inout, ly_bool *flag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1076,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1078,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:1081,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yang.c:1081,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1082,1
    - Dst: yprc_must
      Src: /src/libyang/src/printer_yang.c:1083,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1087,1
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:1088,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1093,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - inout
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node_action_inout*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1066
    functionDepth: 3
    functionLinenumber: 1066
    functionLinenumberEnd: 1094
    functionName: yprc_inout
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - yprc_must
    - lys_nodetype2stmt
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - LY_ARRAY_FOR
    - yprc_node
    - ypr_open
    linkageType: ''
    returnType: void
    signature: void yprc_inout(struct lys_ypr_ctx *ctx, const struct lysc_node_action_inout
      *inout, ly_bool *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1104,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1107,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:1108,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1110,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1111,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1113,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1114,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1115,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1117,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1118,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yang.c:1119,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1122,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1123,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yang.c:1124,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1127,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1128,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1129,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - notif
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_notif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1096
    functionDepth: 1
    functionLinenumber: 1096
    functionLinenumberEnd: 1134
    functionName: yprp_notification
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 1
    functionsReached:
    - yprp_iffeatures
    - yprp_typedef
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_reference
    - ypr_status
    - ypr_open
    - yprp_grouping
    - yprp_extension_instances
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_notification(struct lys_ypr_ctx *ctx, const struct lysp_node_notif
      *notif)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1143,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:1146,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1148,1
    - Dst: yprc_must
      Src: /src/libyang/src/printer_yang.c:1149,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1151,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1152,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1153,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1156,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1157,1
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:1158,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - notif
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node_notif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1136
    functionDepth: 3
    functionLinenumber: 1136
    functionLinenumberEnd: 1164
    functionName: yprc_notification
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - yprc_must
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - ypr_reference
    - LY_ARRAY_FOR
    - yprc_node
    - ypr_status
    - ypr_open
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_notification(struct lys_ypr_ctx *ctx, const struct lysc_node_notif
      *notif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1173,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1176,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yang.c:1176,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:1177,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1178,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1179,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1180,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1182,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1183,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yang.c:1184,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1187,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1188,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yang.c:1189,1
    - Dst: yprp_inout
      Src: /src/libyang/src/printer_yang.c:1192,1
    - Dst: yprp_inout
      Src: /src/libyang/src/printer_yang.c:1193,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - action
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_action*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1166
    functionDepth: 1
    functionLinenumber: 1166
    functionLinenumberEnd: 1197
    functionName: yprp_action
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 1
    functionsReached:
    - yprp_iffeatures
    - lys_nodetype2stmt
    - yprp_typedef
    - yprp_inout
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_status
    - ypr_open
    - yprp_grouping
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_action(struct lys_ypr_ctx *ctx, const struct lysp_node_action
      *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1204,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:1207,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yang.c:1207,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1208,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1209,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1210,1
    - Dst: yprc_inout
      Src: /src/libyang/src/printer_yang.c:1212,1
    - Dst: yprc_inout
      Src: /src/libyang/src/printer_yang.c:1213,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - action
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node_action*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1199
    functionDepth: 4
    functionLinenumber: 1199
    functionLinenumberEnd: 1217
    functionName: yprc_action
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - lys_nodetype2stmt
    - ypr_close
    - ly_print_
    - yprc_inout
    - ypr_reference
    - ypr_status
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprc_action(struct lys_ypr_ctx *ctx, const struct lysc_node_action
      *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1222,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/printer_yang.c:1222,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1225,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yang.c:1225,1
    - Dst: yprp_when
      Src: /src/libyang/src/printer_yang.c:1226,1
    - Dst: lysp_node_when
      Src: /src/libyang/src/printer_yang.c:1226,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:1227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - node
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1219
    functionDepth: 2
    functionLinenumber: 1219
    functionLinenumberEnd: 1228
    functionName: yprp_node_common1
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_iffeatures
    - lys_nodetype2stmt
    - lys_nodetype2str
    - ly_print_
    - yprp_when
    - lysp_node_when
    - yprp_extension_instances
    linkageType: ''
    returnType: void
    signature: void yprp_node_common1(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node, ly_bool *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1236,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/printer_yang.c:1236,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:1239,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yang.c:1239,1
    - Dst: lysc_node_when
      Src: /src/libyang/src/printer_yang.c:1241,1
    - Dst: yprc_when
      Src: /src/libyang/src/printer_yang.c:1243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - node
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1230
    functionDepth: 3
    functionLinenumber: 1230
    functionLinenumberEnd: 1245
    functionName: yprc_node_common1
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - lys_nodetype2stmt
    - lys_nodetype2str
    - ly_print_
    - yprc_when
    - lysc_node_when
    linkageType: ''
    returnType: void
    signature: void yprc_node_common1(struct lys_ypr_ctx *ctx, const struct lysc_node
      *node, ly_bool *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprc_when
      Src: /src/libyang/src/printer_yang.c:1243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1242
    functionDepth: 3
    functionLinenumber: 1242
    functionLinenumberEnd: 1244
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 69
    functionsReached:
    - yprc_when
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(when, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - node
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1257
    functionDepth: 0
    functionLinenumber: 1257
    functionLinenumberEnd: 1261
    functionName: yprp_node_common2
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void yprp_node_common2(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node, ly_bool *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - node
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1263
    functionDepth: 0
    functionLinenumber: 1263
    functionLinenumberEnd: 1267
    functionName: yprc_node_common2
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void yprc_node_common2(struct lys_ypr_ctx *ctx, const struct lysc_node
      *node, ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1282,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1284,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1285,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1288,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1289,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yang.c:1292,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1294,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1295,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yang.c:1296,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1299,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1300,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yang.c:1301,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1304,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1305,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1306,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1309,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1310,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yang.c:1311,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1314,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1315,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yang.c:1316,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1271
    functionDepth: 0
    functionLinenumber: 1271
    functionLinenumberEnd: 1321
    functionName: yprp_container
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_node_common2
    - yprp_typedef
    - ypr_substmt
    - yprp_notification
    - ypr_close
    - LY_LIST_FOR
    - yprp_action
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_open
    - yprp_grouping
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_container(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node_common1
      Src: /src/libyang/src/printer_yang.c:1333,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1335,1
    - Dst: yprc_must
      Src: /src/libyang/src/printer_yang.c:1336,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1339,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1340,1
    - Dst: yprc_node_common2
      Src: /src/libyang/src/printer_yang.c:1343,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1346,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1347,1
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:1348,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1351,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1352,1
    - Dst: yprc_action
      Src: /src/libyang/src/printer_yang.c:1353,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1356,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1357,1
    - Dst: yprc_notification
      Src: /src/libyang/src/printer_yang.c:1358,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1323
    functionDepth: 5
    functionLinenumber: 1323
    functionLinenumberEnd: 1364
    functionName: yprc_container
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_must
    - ypr_substmt
    - ypr_close
    - LY_LIST_FOR
    - LY_ARRAY_FOR
    - yprc_node
    - ypr_open
    - yprc_node_common2
    - yprc_notification
    - yprc_action
    - yprc_node_common1
    linkageType: ''
    returnType: void
    signature: void yprc_container(struct lys_ypr_ctx *ctx, const struct lysc_node
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1373,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yang.c:1374,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1376,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1377,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1378,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1366
    functionDepth: 0
    functionLinenumber: 1366
    functionLinenumberEnd: 1383
    functionName: yprp_case
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_node_common2
    - ypr_close
    - LY_LIST_FOR
    - yprp_node_common1
    - ypr_open
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_case(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node_common1
      Src: /src/libyang/src/printer_yang.c:1391,1
    - Dst: yprc_node_common2
      Src: /src/libyang/src/printer_yang.c:1392,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1396,1
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:1397,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1402,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - cs
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node_case*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1385
    functionDepth: 4
    functionLinenumber: 1385
    functionLinenumberEnd: 1403
    functionName: yprc_case
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_close
    - yprc_node
    - ypr_open
    - yprc_node_common2
    - yprc_node_common1
    linkageType: ''
    returnType: void
    signature: void yprc_case(struct lys_ypr_ctx *ctx, const struct lysc_node_case
      *cs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1412,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1415,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1416,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yang.c:1419,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1421,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1422,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1423,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1405
    functionDepth: 0
    functionLinenumber: 1405
    functionLinenumberEnd: 1428
    functionName: yprp_choice
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_node_common2
    - ypr_substmt
    - ypr_close
    - LY_LIST_FOR
    - yprp_node_common1
    - ypr_open
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_choice(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node_common1
      Src: /src/libyang/src/printer_yang.c:1437,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1440,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1441,1
    - Dst: yprc_node_common2
      Src: /src/libyang/src/printer_yang.c:1444,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1447,1
    - Dst: yprc_case
      Src: /src/libyang/src/printer_yang.c:1448,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1430
    functionDepth: 5
    functionLinenumber: 1430
    functionLinenumberEnd: 1453
    functionName: yprc_choice
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_substmt
    - ypr_close
    - ypr_open
    - yprc_node_common2
    - yprc_case
    - yprc_node_common1
    linkageType: ''
    returnType: void
    signature: void yprc_choice(struct lys_ypr_ctx *ctx, const struct lysc_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1461,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yang.c:1463,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1464,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1465,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1466,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1468,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yang.c:1470,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1455
    functionDepth: 1
    functionLinenumber: 1455
    functionLinenumberEnd: 1474
    functionName: yprp_leaf
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_node_common2
    - ypr_substmt
    - ly_print_
    - yprp_type
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    linkageType: ''
    returnType: void
    signature: void yprp_leaf(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node_common1
      Src: /src/libyang/src/printer_yang.c:1482,1
    - Dst: yprc_type
      Src: /src/libyang/src/printer_yang.c:1484,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1485,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1486,1
    - Dst: yprc_must
      Src: /src/libyang/src/printer_yang.c:1487,1
    - Dst: yprc_dflt_value
      Src: /src/libyang/src/printer_yang.c:1491,1
    - Dst: yprc_node_common2
      Src: /src/libyang/src/printer_yang.c:1494,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1497,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1476
    functionDepth: 4
    functionLinenumber: 1476
    functionLinenumberEnd: 1498
    functionName: yprc_leaf
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_must
    - ypr_substmt
    - ly_print_
    - LY_ARRAY_FOR
    - yprc_node_common2
    - yprc_type
    - yprc_dflt_value
    - yprc_node_common1
    linkageType: ''
    returnType: void
    signature: void yprc_leaf(struct lys_ypr_ctx *ctx, const struct lysc_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1506,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yang.c:1508,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1509,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1510,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1511,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1513,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1514,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yang.c:1517,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1520,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1524,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1526,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1531,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1534,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1535,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1536,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1539,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1500
    functionDepth: 1
    functionLinenumber: 1500
    functionLinenumberEnd: 1540
    functionName: yprp_leaflist
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_config
    - ypr_substmt
    - ly_print_
    - yprp_type
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_status
    - ypr_reference
    - ypr_unsigned
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_leaflist(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node_common1
      Src: /src/libyang/src/printer_yang.c:1548,1
    - Dst: yprc_type
      Src: /src/libyang/src/printer_yang.c:1550,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1551,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1552,1
    - Dst: yprc_must
      Src: /src/libyang/src/printer_yang.c:1553,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1555,1
    - Dst: yprc_dflt_value
      Src: /src/libyang/src/printer_yang.c:1556,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yang.c:1559,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1561,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1563,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1565,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1568,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1570,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1571,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1572,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1576
      start: 1542
    functionDepth: 4
    functionLinenumber: 1542
    functionLinenumberEnd: 1576
    functionName: yprc_leaflist
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_config
    - yprc_must
    - ypr_substmt
    - ly_print_
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_status
    - ypr_unsigned
    - yprc_type
    - yprc_dflt_value
    - ypr_description
    - yprc_node_common1
    linkageType: ''
    returnType: void
    signature: void yprc_leaflist(struct lys_ypr_ctx *ctx, const struct lysc_node
      *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1589,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1591,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1592,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1595,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1596,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1598,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1599,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1600,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yang.c:1603,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1606,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1610,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1612,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1613,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1618,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1619,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1622,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1623,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1624,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1626,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1627,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yang.c:1628,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1631,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1632,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yang.c:1633,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1636,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1637,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1638,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1641,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1642,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yang.c:1643,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1646,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1647,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yang.c:1648,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1652,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 54
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1578
    functionDepth: 0
    functionLinenumber: 1578
    functionLinenumberEnd: 1653
    functionName: yprp_list
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_config
    - yprp_typedef
    - ypr_substmt
    - yprp_notification
    - ypr_close
    - LY_LIST_FOR
    - yprp_action
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_status
    - ypr_reference
    - ypr_unsigned
    - yprp_grouping
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_list(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node_common1
      Src: /src/libyang/src/printer_yang.c:1661,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1663,1
    - Dst: yprc_must
      Src: /src/libyang/src/printer_yang.c:1664,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1667,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1669,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1671,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1673,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1674,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1675,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1676,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1678,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yang.c:1681,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1683,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1685,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1687,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1690,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1692,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1693,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1694,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1701,1
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:1702,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1705,1
    - Dst: yprc_action
      Src: /src/libyang/src/printer_yang.c:1706,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1709,1
    - Dst: yprc_notification
      Src: /src/libyang/src/printer_yang.c:1710,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1715,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1655
    functionDepth: 5
    functionLinenumber: 1655
    functionLinenumberEnd: 1716
    functionName: yprc_list
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_config
    - yprc_must
    - ypr_close
    - ypr_substmt
    - ly_print_
    - LY_LIST_FOR
    - ypr_reference
    - LY_ARRAY_FOR
    - yprc_node
    - ypr_status
    - ypr_unsigned
    - yprc_notification
    - yprc_action
    - ypr_description
    - yprc_node_common1
    linkageType: ''
    returnType: void
    signature: void yprc_list(struct lys_ypr_ctx *ctx, const struct lysc_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1724,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1727,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:1728,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1730,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1731,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1732,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1736,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1737,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1740,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1741,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1742,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yang.c:1745,1
    - Dst: ypr_mandatory
      Src: /src/libyang/src/printer_yang.c:1746,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1749,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1750,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1753,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1755,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1757,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1761,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1762,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1765,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - refine
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_refine*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1718
    functionDepth: 1
    functionLinenumber: 1718
    functionLinenumberEnd: 1766
    functionName: yprp_refine
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_config
    - yprp_iffeatures
    - ypr_substmt
    - ypr_close
    - ly_print_
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_reference
    - ypr_open
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_mandatory
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_refine(struct lys_ypr_ctx *ctx, struct lysp_refine *refine)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1775,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1778,1
    - Dst: yprp_when
      Src: /src/libyang/src/printer_yang.c:1779,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yang.c:1780,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:1781,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1782,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1783,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1785,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:1786,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1789,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yang.c:1790,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1793,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yang.c:1794,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - aug
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_augment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1768
    functionDepth: 1
    functionLinenumber: 1768
    functionLinenumberEnd: 1799
    functionName: yprp_augment
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_iffeatures
    - yprp_notification
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - yprp_action
    - yprp_when
    - ypr_reference
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_augment(struct lys_ypr_ctx *ctx, const struct lysp_node_augment
      *aug)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1809,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yang.c:1810,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1812,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1813,1
    - Dst: yprp_refine
      Src: /src/libyang/src/printer_yang.c:1814,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1817,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1818,1
    - Dst: yprp_augment
      Src: /src/libyang/src/printer_yang.c:1819,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1801
    functionDepth: 0
    functionLinenumber: 1801
    functionLinenumberEnd: 1824
    functionName: yprp_uses
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_node_common2
    - yprp_refine
    - ypr_close
    - LY_LIST_FOR
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_open
    - yprp_augment
    linkageType: ''
    returnType: void
    signature: void yprp_uses(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yang.c:1833,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1835,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1836,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1837,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yang.c:1840,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1826
    functionDepth: 0
    functionLinenumber: 1826
    functionLinenumberEnd: 1844
    functionName: yprp_anydata
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_node_common2
    - ypr_close
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_open
    linkageType: ''
    returnType: void
    signature: void yprp_anydata(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node_common1
      Src: /src/libyang/src/printer_yang.c:1853,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1855,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:1856,1
    - Dst: yprc_must
      Src: /src/libyang/src/printer_yang.c:1857,1
    - Dst: yprc_node_common2
      Src: /src/libyang/src/printer_yang.c:1860,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:1863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1846
    functionDepth: 4
    functionLinenumber: 1846
    functionLinenumberEnd: 1864
    functionName: yprc_anydata
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_must
    - ypr_close
    - LY_ARRAY_FOR
    - ypr_open
    - yprc_node_common2
    - yprc_node_common1
    linkageType: ''
    returnType: void
    signature: void yprc_anydata(struct lys_ypr_ctx *ctx, const struct lysc_node *node)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: yprp_container
      Src: /src/libyang/src/printer_yang.c:1871,1
    - Dst: yprp_choice
      Src: /src/libyang/src/printer_yang.c:1874,1
    - Dst: yprp_leaf
      Src: /src/libyang/src/printer_yang.c:1877,1
    - Dst: yprp_leaflist
      Src: /src/libyang/src/printer_yang.c:1880,1
    - Dst: yprp_list
      Src: /src/libyang/src/printer_yang.c:1883,1
    - Dst: yprp_uses
      Src: /src/libyang/src/printer_yang.c:1886,1
    - Dst: yprp_anydata
      Src: /src/libyang/src/printer_yang.c:1890,1
    - Dst: yprp_case
      Src: /src/libyang/src/printer_yang.c:1893,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1866
    functionDepth: 0
    functionLinenumber: 1866
    functionLinenumberEnd: 1898
    functionName: yprp_node
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 8
    functionsReached:
    - yprp_anydata
    - yprp_choice
    - yprp_leaf
    - yprp_container
    - yprp_leaflist
    - yprp_uses
    - yprp_case
    - yprp_list
    linkageType: ''
    returnType: void
    signature: void yprp_node(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: yprc_container
      Src: /src/libyang/src/printer_yang.c:1905,1
    - Dst: yprc_choice
      Src: /src/libyang/src/printer_yang.c:1908,1
    - Dst: yprc_leaf
      Src: /src/libyang/src/printer_yang.c:1911,1
    - Dst: yprc_leaflist
      Src: /src/libyang/src/printer_yang.c:1914,1
    - Dst: yprc_list
      Src: /src/libyang/src/printer_yang.c:1917,1
    - Dst: yprc_anydata
      Src: /src/libyang/src/printer_yang.c:1921,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1900
    functionDepth: 6
    functionLinenumber: 1900
    functionLinenumberEnd: 1926
    functionName: yprc_node
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 5
    functionsReached:
    - yprc_list
    - yprc_leaflist
    - yprc_choice
    - yprc_container
    - yprc_leaf
    - yprc_anydata
    linkageType: ''
    returnType: void
    signature: void yprc_node(struct lys_ypr_ctx *ctx, const struct lysc_node *node)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1937,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1940,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yang.c:1941,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yang.c:1942,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:1944,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1945,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1948,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1951,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1953,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1958,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1961,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1962,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1963,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:1964,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1966,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1967,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:1969,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1970,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yang.c:1972,1
    - Dst: ypr_mandatory
      Src: /src/libyang/src/printer_yang.c:1973,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1975,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1979,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1981,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:1986,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:1989,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yang.c:1991,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1993,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:1994,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yang.c:1995,1
    - Dst: ypr_mandatory
      Src: /src/libyang/src/printer_yang.c:1996,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:1998,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yang.c:2002,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2004,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2009,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:2012,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2013,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2014,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yang.c:2015,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2017,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2018,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2020,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2021,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:2026,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:2030,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 90
    argCount: 2
    argNames:
    - ctx
    - deviation
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_deviation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2031
      start: 1928
    functionDepth: 1
    functionLinenumber: 1928
    functionLinenumberEnd: 2031
    functionName: yprp_deviation
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_config
    - ypr_substmt
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - yprp_type
    - ypr_reference
    - LY_ARRAY_FOR
    - yprp_restr
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_mandatory
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_deviation(struct lys_ypr_ctx *ctx, const struct lysp_deviation
      *deviation)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2038,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2043,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:2045,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2046,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2048,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2050,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2051,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2053,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2055,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2061,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:2063,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2065,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2067,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2068,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2070,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2072,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - modp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 2033
    functionDepth: 1
    functionLinenumber: 2033
    functionLinenumberEnd: 2075
    functionName: yang_print_parsed_linkage
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_extension_instances
    - LY_ARRAY_FOR
    - ly_print_
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void yang_print_parsed_linkage(struct lys_ypr_ctx *ctx, const struct
      lysp_module *modp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2087,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2088,1
    - Dst: yprp_extension
      Src: /src/libyang/src/printer_yang.c:2089,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2092,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:2093,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2096,1
    - Dst: yprp_feature
      Src: /src/libyang/src/printer_yang.c:2097,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2100,1
    - Dst: yprp_identity
      Src: /src/libyang/src/printer_yang.c:2101,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2104,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yang.c:2105,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2108,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yang.c:2109,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2112,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yang.c:2113,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2116,1
    - Dst: yprp_augment
      Src: /src/libyang/src/printer_yang.c:2117,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2120,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yang.c:2121,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2124,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yang.c:2125,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2128,1
    - Dst: yprp_deviation
      Src: /src/libyang/src/printer_yang.c:2129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - modp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2131
      start: 2077
    functionDepth: 1
    functionLinenumber: 2077
    functionLinenumberEnd: 2131
    functionName: yang_print_parsed_body
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_typedef
    - yprp_notification
    - ly_print_
    - LY_LIST_FOR
    - yprp_feature
    - yprp_action
    - LY_ARRAY_FOR
    - yprp_extension
    - yprp_augment
    - yprp_grouping
    - yprp_extension_instances
    - yprp_deviation
    - yprp_identity
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yang_print_parsed_body(struct lys_ypr_ctx *ctx, const struct lysp_module
      *modp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2140,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2145,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2148,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2149,1
    - Dst: yang_print_parsed_linkage
      Src: /src/libyang/src/printer_yang.c:2152,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2156,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2158,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2159,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2160,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2161,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2165,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2167,1
    - Dst: yprp_revision
      Src: /src/libyang/src/printer_yang.c:2168,1
    - Dst: yang_print_parsed_body
      Src: /src/libyang/src/printer_yang.c:2171,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2174,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_yang.c:2175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - out
    - modp
    - options
    argTypes:
    - struct ly_out*
    - struct lysp_module*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2133
    functionDepth: 2
    functionLinenumber: 2133
    functionLinenumberEnd: 2178
    functionName: yang_print_parsed_module
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yang_print_parsed_body
    - ypr_substmt
    - ly_print_
    - yprp_revision
    - LY_ARRAY_FOR
    - ly_print_flush
    - yang_print_parsed_linkage
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yang_print_parsed_module(struct ly_out *out, const struct lysp_module
      *modp, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2183,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yang.c:2185,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2186,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - submodp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_submodule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2189
      start: 2180
    functionDepth: 1
    functionLinenumber: 2180
    functionLinenumberEnd: 2189
    functionName: yprp_belongsto
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprp_extension_instances
    - ly_print_
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void yprp_belongsto(struct lys_ypr_ctx *ctx, const struct lysp_submodule
      *submodp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2200,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2205,1
    - Dst: yprp_belongsto
      Src: /src/libyang/src/printer_yang.c:2208,1
    - Dst: yang_print_parsed_linkage
      Src: /src/libyang/src/printer_yang.c:2211,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2215,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2217,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2218,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2219,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2220,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2224,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2226,1
    - Dst: yprp_revision
      Src: /src/libyang/src/printer_yang.c:2227,1
    - Dst: yang_print_parsed_body
      Src: /src/libyang/src/printer_yang.c:2230,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2233,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_yang.c:2234,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - out
    - submodp
    - options
    argTypes:
    - struct ly_out*
    - struct lysp_submodule*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2191
    functionDepth: 2
    functionLinenumber: 2191
    functionLinenumberEnd: 2237
    functionName: yang_print_parsed_submodule
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yang_print_parsed_body
    - ypr_substmt
    - ly_print_
    - yprp_revision
    - yprp_belongsto
    - LY_ARRAY_FOR
    - ly_print_flush
    - yang_print_parsed_linkage
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yang_print_parsed_submodule(struct ly_out *out, const struct
      lysp_submodule *submodp, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:2244,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_yang.c:2246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - out
    - node
    - options
    argTypes:
    - struct ly_out*
    - struct lysc_node*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2248
      start: 2239
    functionDepth: 7
    functionLinenumber: 2239
    functionLinenumberEnd: 2248
    functionName: yang_print_compiled_node
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_node
    - ly_print_flush
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yang_print_compiled_node(struct ly_out *out, const struct lysc_node
      *node, uint32_t options)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2257,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2261,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2262,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2268,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2270,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2271,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2272,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2273,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2277,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2282,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:2283,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2286,1
    - Dst: yprc_identity
      Src: /src/libyang/src/printer_yang.c:2287,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2295,1
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:2296,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2299,1
    - Dst: yprc_action
      Src: /src/libyang/src/printer_yang.c:2300,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2303,1
    - Dst: yprc_notification
      Src: /src/libyang/src/printer_yang.c:2304,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2309,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_yang.c:2310,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - out
    - module
    - options
    argTypes:
    - struct ly_out*
    - struct lys_module*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2313
      start: 2250
    functionDepth: 7
    functionLinenumber: 2250
    functionLinenumberEnd: 2313
    functionName: yang_print_compiled
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - yprc_extension_instances
    - yprc_identity
    - ypr_substmt
    - ly_print_
    - LY_LIST_FOR
    - LY_ARRAY_FOR
    - yprc_node
    - ly_print_flush
    - yprc_notification
    - yprc_action
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yang_print_compiled(struct ly_out *out, const struct lys_module
      *module, uint32_t options)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_yang.c:2325,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2339,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2341,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:2342,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2343,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2345,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:2349,1
    - Dst: def::plugin::sprinter
      Src: /src/libyang/src/printer_yang.c:2352,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:2356,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 6
    argNames:
    - ctx
    - substmt
    - substmt_index
    - ext
    - flag
    - count
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - struct lysc_ext_instance*
    - ly_bool*
    - LY_ARRAY_COUNT_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2318
    functionDepth: 2
    functionLinenumber: 2318
    functionLinenumberEnd: 2358
    functionName: yprc_extension_instances
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 14
    functionsReached:
    - yprc_extension_instances
    - def::plugin::sprinter
    - ypr_close
    - LY_ARRAY_COUNT
    - ly_print_
    - ypr_open
    - ypr_encode
    linkageType: ''
    returnType: void
    signature: "void yprc_extension_instances(struct lys_ypr_ctx *ctx, enum ly_stmt
      substmt, uint8_t substmt_index,\n        struct lysc_ext_instance *ext, ly_bool
      *flag, LY_ARRAY_COUNT_TYPE count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2339,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2341,1
    - Dst: ypr_encode
      Src: /src/libyang/src/printer_yang.c:2342,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2343,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yang.c:2345,1
    - Dst: yprc_extension_instances
      Src: /src/libyang/src/printer_yang.c:2349,1
    - Dst: def::plugin::sprinter
      Src: /src/libyang/src/printer_yang.c:2352,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yang.c:2356,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2357
      start: 2327
    functionDepth: 3
    functionLinenumber: 2327
    functionLinenumberEnd: 2357
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 87
    functionsReached:
    - yprc_extension_instances
    - def::plugin::sprinter
    - ypr_close
    - ly_print_
    - ypr_open
    - ypr_encode
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(ext, u)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yang.c:2366,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yang.c:2372,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2373,1
    - Dst: yprc_node
      Src: /src/libyang/src/printer_yang.c:2374,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2383,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2384,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2389,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2390,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yang.c:2398,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2403,1
    - Dst: yprc_type
      Src: /src/libyang/src/printer_yang.c:2404,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2409,1
    - Dst: yprc_type
      Src: /src/libyang/src/printer_yang.c:2410,1
    - Dst: LOGWRN
      Src: /src/libyang/src/printer_yang.c:2416,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/printer_yang.c:2417,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 3
    argNames:
    - ctx_generic
    - ext
    - flag
    argTypes:
    - struct lyspr_ctx*
    - struct lysc_ext_instance*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2421
      start: 2360
    functionDepth: 7
    functionLinenumber: 2360
    functionLinenumberEnd: 2421
    functionName: lysc_print_extension_instance
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 0
    functionsReached:
    - ypr_substmt
    - LY_LIST_FOR
    - LY_ARRAY_FOR
    - yprc_node
    - ypr_open
    - ypr_status
    - ly_stmt2str
    - LOGWRN
    - yprc_type
    linkageType: ''
    returnType: void
    signature: void lysc_print_extension_instance(struct lyspr_ctx *ctx_generic, const
      struct lysc_ext_instance *ext, ly_bool *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2389,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yang.c:2390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2388
    functionDepth: 0
    functionLinenumber: 2388
    functionLinenumberEnd: 2391
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 88
    functionsReached:
    - ypr_open
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(strings, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yang.c:2409,1
    - Dst: yprc_type
      Src: /src/libyang/src/printer_yang.c:2410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2411
      start: 2408
    functionDepth: 4
    functionLinenumber: 2408
    functionLinenumberEnd: 2411
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yang.c
    functionUses: 88
    functionsReached:
    - ypr_open
    - yprc_type
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(types, v)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/plugins.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - type
    - index
    argTypes:
    - enum LYPLG
    - uint32_t*
    assertStmts:
    - condition: (index)
      pos:
        line_end: 149
        line_start: 149
        source_file: /src/libyang/src/plugins.c
    constantsTouched: []
    func_position:
      end: 164
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 164
    functionName: plugins_iter
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: struct lyplg_record
    signature: 'struct lyplg_record *

      plugins_iter(enum LYPLG type, uint32_t *index)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/plugins.c:172,1
    - Dst: assert
      Src: /src/libyang/src/plugins.c:173,1
    - Dst: plugins_iter
      Src: /src/libyang/src/plugins.c:175,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins.c:176,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins.c:176,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins.c:177,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 4
    argNames:
    - type
    - module
    - revision
    - name
    argTypes:
    - enum LYPLG
    - char*
    - char*
    - char*
    assertStmts:
    - condition: (module)
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/libyang/src/plugins.c
    - condition: (name)
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/libyang/src/plugins.c
    constantsTouched: []
    func_position:
      end: 188
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 188
    functionName: lyplg_find
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 18
    functionsReached:
    - strcmp
    - plugins_iter
    - assert
    linkageType: ''
    returnType: void
    signature: 'void *

      lyplg_find(enum LYPLG type, const char *module, const char *revision, const
      char *name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins.c:210,1
    - Dst: ly_set_add
      Src: /src/libyang/src/plugins.c:210,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins.c:216,1
    - Dst: ly_set_add
      Src: /src/libyang/src/plugins.c:216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - type
    - recs
    argTypes:
    - enum LYPLG
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 221
    functionName: plugins_insert
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_set_add
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR plugins_insert(enum LYPLG type, const void *recs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlclose
      Src: /src/libyang/src/plugins.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - handle
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: lyplg_close_cb
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 0
    functionsReached:
    - dlclose
    linkageType: ''
    returnType: void
    signature: void lyplg_close_cb(void *handle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_erase
      Src: /src/libyang/src/plugins.c:237,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/plugins.c:238,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/plugins.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 240
    functionName: lyplg_clean_
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 0
    functionsReached:
    - ly_set_erase
    linkageType: ''
    returnType: void
    signature: void lyplg_clean_(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/libyang/src/plugins.c:245,1
    - Dst: lyplg_clean_
      Src: /src/libyang/src/plugins.c:246,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/plugins.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 248
    functionName: lyplg_clean
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - lyplg_clean_
    linkageType: ''
    returnType: void
    signature: void lyplg_clean(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dlsym
      Src: /src/libyang/src/plugins.c:268,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins.c:272,1
    - Dst: dlsym
      Src: /src/libyang/src/plugins.c:278,1
    - Dst: dlerror
      Src: /src/libyang/src/plugins.c:279,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins.c:280,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins.c:286,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:286,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - dlhandler
    - pathname
    - type
    argTypes:
    - void*
    - char*
    - enum LYPLG
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 290
    functionName: plugins_load
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 0
    functionsReached:
    - dlerror
    - plugins_insert
    - dlsym
    - LOGERR
    - LY_CHECK_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR plugins_load(void *dlhandler, const char *pathname, enum LYPLG
      type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlerror
      Src: /src/libyang/src/plugins.c:299,1
    - Dst: dlopen
      Src: /src/libyang/src/plugins.c:301,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins.c:303,1
    - Dst: dlerror
      Src: /src/libyang/src/plugins.c:303,1
    - Dst: ly_set_contains
      Src: /src/libyang/src/plugins.c:307,1
    - Dst: LOGVRB
      Src: /src/libyang/src/plugins.c:309,1
    - Dst: dlclose
      Src: /src/libyang/src/plugins.c:312,1
    - Dst: plugins_load
      Src: /src/libyang/src/plugins.c:321,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:322,1
    - Dst: plugins_load
      Src: /src/libyang/src/plugins.c:325,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:326,1
    - Dst: ly_set_add
      Src: /src/libyang/src/plugins.c:329,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:330,1
    - Dst: dlclose
      Src: /src/libyang/src/plugins.c:335,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/plugins.c:339,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/plugins.c:342,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - pathname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 292
    functionDepth: 3
    functionLinenumber: 292
    functionLinenumberEnd: 346
    functionName: plugins_load_module
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 0
    functionsReached:
    - dlerror
    - ly_set_contains
    - LOGERR
    - dlopen
    - ly_set_add
    - plugins_load
    - LY_CHECK_GOTO
    - ly_set_rm_index
    - LOGVRB
    - dlclose
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR plugins_load_module(const char *pathname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/libyang/src/plugins.c:357,1
    - Dst: opendir
      Src: /src/libyang/src/plugins.c:364,1
    - Dst: LOGWRN
      Src: /src/libyang/src/plugins.c:368,1
    - Dst: strerror
      Src: /src/libyang/src/plugins.c:369,1
    - Dst: readdir
      Src: /src/libyang/src/plugins.c:374,1
    - Dst: strlen
      Src: /src/libyang/src/plugins.c:379,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins.c:380,1
    - Dst: snprintf
      Src: /src/libyang/src/plugins.c:385,1
    - Dst: plugins_load_module
      Src: /src/libyang/src/plugins.c:387,1
    - Dst: closedir
      Src: /src/libyang/src/plugins.c:392,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum LYPLG
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 348
    functionDepth: 4
    functionLinenumber: 348
    functionLinenumberEnd: 396
    functionName: plugins_insert_dir
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 0
    functionsReached:
    - strlen
    - snprintf
    - strerror
    - readdir
    - strcmp
    - closedir
    - LOGWRN
    - plugins_load_module
    - opendir
    - getenv
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR plugins_insert_dir(enum LYPLG type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/libyang/src/plugins.c:403,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/plugins.c:407,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:412,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:412,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:413,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:413,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:414,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:414,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:415,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:415,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:416,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:416,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:417,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:417,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:418,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:418,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:419,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:419,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:420,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:420,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:421,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:421,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:422,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:422,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:423,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:423,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:426,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:426,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:427,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:427,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:428,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:428,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:429,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:429,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:430,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:430,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:431,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:431,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:434,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:434,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:435,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:435,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:438,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:438,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:439,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:439,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:440,1
    - Dst: plugins_insert
      Src: /src/libyang/src/plugins.c:440,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:443,1
    - Dst: plugins_insert_dir
      Src: /src/libyang/src/plugins.c:443,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins.c:446,1
    - Dst: plugins_insert_dir
      Src: /src/libyang/src/plugins.c:446,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/plugins.c:449,1
    - Dst: lyplg_clean_
      Src: /src/libyang/src/plugins.c:455,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/plugins.c:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 398
    functionDepth: 5
    functionLinenumber: 398
    functionLinenumberEnd: 463
    functionName: lyplg_init
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_lock
    - plugins_insert
    - plugins_insert_dir
    - lyplg_clean_
    - LY_CHECK_GOTO
    - pthread_mutex_unlock
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins.c:470,1
    - Dst: pthread_mutex_lock
      Src: /src/libyang/src/plugins.c:473,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/plugins.c:476,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins.c:477,1
    - Dst: plugins_load_module
      Src: /src/libyang/src/plugins.c:481,1
    - Dst: pthread_mutex_unlock
      Src: /src/libyang/src/plugins.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - pathname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 465
    functionDepth: 4
    functionLinenumber: 465
    functionLinenumberEnd: 486
    functionName: lyplg_add
    functionSourceFile: /src/libyang/src/plugins.c
    functionUses: 3
    functionsReached:
    - pthread_mutex_lock
    - LY_CHECK_ARG_RET
    - LOGERR
    - plugins_load_module
    - pthread_mutex_unlock
    linkageType: ''
    returnType: API
    signature: API lyplg_add(const char *pathname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:56,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:59,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:60,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:61,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - elem_name
    - attr_name
    - attr_value
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - char*
    - char*
    - int8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: ypr_open
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 46
    functionsReached:
    - lyxml_dump_text
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_open(struct lys_ypr_ctx *ctx, const char *elem_name, const
      char *attr_name, const char *attr_value, int8_t flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:71,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - elem_name
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - int8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: ypr_close
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 40
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_close(struct lys_ypr_ctx *ctx, const char *elem_name, int8_t
      flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - par_close_flag
    argTypes:
    - struct lys_ypr_ctx*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 89
    functionName: ypr_close_parent
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_close_parent(struct lys_ypr_ctx *ctx, int8_t *par_close_flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:94,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:95,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - arg
    - text
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: ypr_yin_arg
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - lyxml_dump_text
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_yin_arg(struct lys_ypr_ctx *ctx, const char *arg, const char
      *text)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:112,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:114,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:122,1
    - Dst: ypr_yin_arg
      Src: /src/libyang/src/printer_yin.c:127,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 5
    argNames:
    - ctx
    - substmt
    - substmt_index
    - text
    - ext
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 99
    functionDepth: 3
    functionLinenumber: 99
    functionLinenumberEnd: 132
    functionName: ypr_substmt
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 37
    functionsReached:
    - yprp_extension_instances
    - ypr_open
    - ypr_yin_arg
    - ypr_close
    linkageType: ''
    returnType: void
    signature: void ypr_substmt(struct lys_ypr_ctx *ctx, enum ly_stmt substmt, uint8_t
      substmt_index, const char *text, void *ext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 88
    functionsReached:
    - yprp_extension_instances
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(ext, u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/printer_yin.c:139,1
    - Dst: LOGMEM
      Src: /src/libyang/src/printer_yin.c:140,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:143,1
    - Dst: free
      Src: /src/libyang/src/printer_yin.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - ctx
    - substmt
    - substmt_index
    - exts
    - attr_value
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - void*
    - unsigned long int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 145
    functionName: ypr_unsigned
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 10
    functionsReached:
    - LOGMEM
    - free
    - asprintf
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_unsigned(struct lys_ypr_ctx *ctx, enum ly_stmt substmt, uint8_t
      substmt_index, void *exts, unsigned long int attr_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/printer_yin.c:152,1
    - Dst: LOGMEM
      Src: /src/libyang/src/printer_yin.c:153,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:156,1
    - Dst: free
      Src: /src/libyang/src/printer_yin.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - ctx
    - substmt
    - substmt_index
    - exts
    - attr_value
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - void*
    - signed long int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: ypr_signed
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 3
    functionsReached:
    - LOGMEM
    - free
    - asprintf
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_signed(struct lys_ypr_ctx *ctx, enum ly_stmt substmt, uint8_t
      substmt_index, void *exts, signed long int attr_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:164,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:166,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:167,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:168,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:170,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - rev
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_revision*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 174
    functionName: yprp_revision
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 2
    functionsReached:
    - yprp_extension_instances
    - ypr_open
    - ypr_close
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void yprp_revision(struct lys_ypr_ctx *ctx, const struct lysp_revision
      *rev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:180,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - flags
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - uint16_t
    - void*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 183
    functionName: ypr_mandatory
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 2
    functionsReached:
    - ypr_close_parent
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_mandatory(struct lys_ypr_ctx *ctx, uint16_t flags, void *exts,
      int8_t *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:189,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - flags
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - uint16_t
    - void*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 192
    functionName: ypr_config
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 6
    functionsReached:
    - ypr_close_parent
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_config(struct lys_ypr_ctx *ctx, uint16_t flags, void *exts,
      int8_t *flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:200,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:203,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:206,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - ctx
    - flags
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - uint16_t
    - void*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 211
    functionName: ypr_status
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 19
    functionsReached:
    - ypr_close_parent
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_status(struct lys_ypr_ctx *ctx, uint16_t flags, void *exts,
      int8_t *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:217,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - dsc
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - void*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 220
    functionName: ypr_description
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 26
    functionsReached:
    - ypr_close_parent
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_description(struct lys_ypr_ctx *ctx, const char *dsc, void
      *exts, int8_t *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:226,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - ref
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - char*
    - void*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 229
    functionName: ypr_reference
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 26
    functionsReached:
    - ypr_close_parent
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void ypr_reference(struct lys_ypr_ctx *ctx, const char *ref, void *exts,
      int8_t *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:238,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:241,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:246,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - iffs
    - exts
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_qname*
    - struct lysp_ext_instance*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 251
    functionName: yprp_iffeatures
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 9
    functionsReached:
    - yprp_extension_instances
    - ly_print_
    - ypr_close_parent
    linkageType: ''
    returnType: void
    signature: void yprp_iffeatures(struct lys_ypr_ctx *ctx, struct lysp_qname *iffs,
      struct lysp_ext_instance *exts, int8_t *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:238,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:241,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:246,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 250
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 88
    functionsReached:
    - yprp_extension_instances
    - ly_print_
    - ypr_close_parent
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(iffs, u)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 247
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 88
    functionsReached:
    - yprp_extension_instances
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(exts, v)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:259,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:263,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:264,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:268,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:269,1
    - Dst: lysp_ext_instance_iter
      Src: /src/libyang/src/printer_yin.c:274,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_yin.c:274,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:275,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:276,1
    - Dst: lysp_ext_instance_iter
      Src: /src/libyang/src/printer_yin.c:280,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_yin.c:280,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:281,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:282,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:285,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:288,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:289,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:290,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:293,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_ext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 294
    functionName: yprp_extension
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - ypr_substmt
    - LY_ARRAY_COUNT
    - ypr_close
    - ypr_reference
    - ypr_open
    - ypr_close_parent
    - ypr_status
    - yprp_extension_instances
    - lysp_ext_instance_iter
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_extension(struct lys_ypr_ctx *ctx, const struct lysp_ext
      *ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:301,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:303,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:304,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:305,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:306,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:307,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - feat
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_feature*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 310
    functionName: yprp_feature
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_iffeatures
    - ypr_close
    - ypr_reference
    - ypr_open
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_feature(struct lys_ypr_ctx *ctx, const struct lysp_feature
      *feat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:318,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:321,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:322,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:324,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:325,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:326,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:329,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:330,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:331,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - ctx
    - ident
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_ident*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 335
    functionName: yprp_identity
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_iffeatures
    - ypr_substmt
    - ypr_close
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_close_parent
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_identity(struct lys_ypr_ctx *ctx, const struct lysp_ident
      *ident)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:347,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/printer_yin.c:347,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:348,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:351,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:354,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:356,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:358,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:361,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:362,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:365,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:366,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:368,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:369,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:372,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/printer_yin.c:372,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - restr
    - stmt
    - attr
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_restr*
    - enum ly_stmt
    - char*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 373
    functionName: yprp_restr
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 10
    functionsReached:
    - lyxml_dump_text
    - ypr_substmt
    - ypr_close
    - ly_print_
    - ypr_reference
    - ypr_close_parent
    - ly_stmt2str
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_restr(struct lys_ypr_ctx *ctx, const struct lysp_restr *restr,
      enum ly_stmt stmt, const char *attr, int8_t *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:386,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:387,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:388,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:391,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:392,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:393,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - when
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_when*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 375
    functionDepth: 2
    functionLinenumber: 375
    functionLinenumberEnd: 396
    functionName: yprp_when
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 2
    functionsReached:
    - lyxml_dump_text
    - ypr_close
    - ly_print_
    - ypr_reference
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_when(struct lys_ypr_ctx *ctx, struct lysp_when *when, int8_t
      *flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:408,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:409,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:410,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:412,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:413,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:414,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:418,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:419,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:422,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:423,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:425,1
    - Dst: ypr_signed
      Src: /src/libyang/src/printer_yin.c:426,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:429,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:430,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:431,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 4
    argNames:
    - ctx
    - items
    - type
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_type_enum*
    - LY_DATA_TYPE
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 435
    functionName: yprp_enum
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - lyxml_dump_text
    - yprp_iffeatures
    - ypr_close
    - ly_print_
    - ypr_signed
    - ypr_reference
    - ypr_status
    - ypr_close_parent
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_enum(struct lys_ypr_ctx *ctx, const struct lysp_type_enum
      *items, LY_DATA_TYPE type, int8_t *flag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:408,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:409,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:410,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:412,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:413,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:414,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:418,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:419,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:422,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:423,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:425,1
    - Dst: ypr_signed
      Src: /src/libyang/src/printer_yin.c:426,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:429,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:430,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:431,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 434
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 89
    functionsReached:
    - lyxml_dump_text
    - yprp_iffeatures
    - ypr_close
    - ly_print_
    - ypr_signed
    - ypr_reference
    - ypr_status
    - ypr_close_parent
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(items, u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:447,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:450,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:453,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:455,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:456,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:457,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:458,1
    - Dst: yprp_enum
      Src: /src/libyang/src/printer_yin.c:460,1
    - Dst: yprp_enum
      Src: /src/libyang/src/printer_yin.c:461,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:464,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:465,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:468,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:469,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:472,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:473,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:475,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:476,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:477,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:479,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:480,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yin.c:481,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:485,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - type
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 486
    functionName: yprp_type
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 6
    functionsReached:
    - ypr_substmt
    - ypr_close
    - yprp_type
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_close_parent
    - ypr_unsigned
    - yprp_extension_instances
    - yprp_enum
    linkageType: ''
    returnType: void
    signature: void yprp_type(struct lys_ypr_ctx *ctx, const struct lysp_type *type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:491,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:494,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yin.c:496,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:499,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:502,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:505,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:506,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:507,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ctx
    - tpdf
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_tpdf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 511
    functionName: yprp_typedef
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 7
    functionsReached:
    - ypr_substmt
    - ypr_close
    - yprp_type
    - ypr_reference
    - ypr_open
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_typedef(struct lys_ypr_ctx *ctx, const struct lysp_tpdf *tpdf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:527,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:530,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:531,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:532,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:533,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:535,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:536,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yin.c:537,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:540,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:541,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yin.c:542,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:545,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:546,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:547,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:550,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:551,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yin.c:552,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:555,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:556,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yin.c:557,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - grp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_grp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 517
    functionDepth: 2
    functionLinenumber: 517
    functionLinenumberEnd: 562
    functionName: yprp_grouping
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 8
    functionsReached:
    - yprp_typedef
    - yprp_notification
    - ypr_close
    - LY_LIST_FOR
    - yprp_action
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_status
    - ypr_close_parent
    - yprp_grouping
    - yprp_extension_instances
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_grouping(struct lys_ypr_ctx *ctx, const struct lysp_node_grp
      *grp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:575,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:577,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:580,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yin.c:580,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:581,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:582,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:584,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yin.c:585,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:587,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yin.c:588,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:591,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:592,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - inout
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_action_inout*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 564
    functionDepth: 2
    functionLinenumber: 564
    functionLinenumberEnd: 597
    functionName: yprp_inout
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - lys_nodetype2stmt
    - yprp_typedef
    - ypr_close
    - LY_LIST_FOR
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_close_parent
    - yprp_grouping
    - yprp_extension_instances
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_inout(struct lys_ypr_ctx *ctx, const struct lysp_node_action_inout
      *inout, int8_t *flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:607,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:610,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:611,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:613,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:614,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:615,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:617,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:618,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:619,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:621,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:622,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yin.c:623,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:626,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:627,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yin.c:628,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:631,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:632,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:633,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - notif
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_notif*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 638
    functionName: yprp_notification
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 6
    functionsReached:
    - yprp_iffeatures
    - yprp_typedef
    - ypr_close
    - LY_LIST_FOR
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_reference
    - ypr_open
    - ypr_close_parent
    - ypr_status
    - yprp_grouping
    - yprp_extension_instances
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_notification(struct lys_ypr_ctx *ctx, const struct lysp_node_notif
      *notif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:647,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:650,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yin.c:650,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:651,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:652,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:653,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:654,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:656,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:657,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yin.c:658,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:661,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:662,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yin.c:663,1
    - Dst: yprp_inout
      Src: /src/libyang/src/printer_yin.c:666,1
    - Dst: yprp_inout
      Src: /src/libyang/src/printer_yin.c:667,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - action
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_action*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 671
    functionName: yprp_action
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 6
    functionsReached:
    - yprp_iffeatures
    - lys_nodetype2stmt
    - yprp_typedef
    - yprp_inout
    - ypr_close
    - LY_LIST_FOR
    - ypr_reference
    - LY_ARRAY_FOR
    - ypr_open
    - ypr_status
    - ypr_close_parent
    - yprp_grouping
    - yprp_extension_instances
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_action(struct lys_ypr_ctx *ctx, const struct lysp_node_action
      *action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:676,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/printer_yin.c:676,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:679,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/printer_yin.c:679,1
    - Dst: yprp_when
      Src: /src/libyang/src/printer_yin.c:680,1
    - Dst: lysp_node_when
      Src: /src/libyang/src/printer_yin.c:680,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - node
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 673
    functionDepth: 2
    functionLinenumber: 673
    functionLinenumberEnd: 682
    functionName: yprp_node_common1
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 8
    functionsReached:
    - yprp_iffeatures
    - lys_nodetype2stmt
    - lys_nodetype2str
    - yprp_when
    - ypr_open
    - lysp_node_when
    - yprp_extension_instances
    linkageType: ''
    returnType: void
    signature: void yprp_node_common1(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node, int8_t *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yin.c:687,1
    - Dst: ypr_mandatory
      Src: /src/libyang/src/printer_yin.c:689,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:691,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:692,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - node
    - flag
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    - int8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 694
    functionName: yprp_node_common2
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 6
    functionsReached:
    - ypr_config
    - ypr_reference
    - ypr_status
    - ypr_mandatory
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_node_common2(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node, int8_t *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:707,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:709,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:710,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:711,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:714,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:715,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yin.c:718,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:720,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:721,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yin.c:722,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:725,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:726,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yin.c:727,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:730,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:731,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:732,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:735,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:736,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yin.c:737,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:740,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:741,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yin.c:742,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 747
    functionName: yprp_container
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_node_common2
    - yprp_typedef
    - ypr_substmt
    - yprp_notification
    - ypr_close
    - LY_LIST_FOR
    - yprp_action
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_close_parent
    - yprp_grouping
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_container(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:756,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yin.c:757,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:759,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:760,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:761,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 749
    functionDepth: 2
    functionLinenumber: 749
    functionLinenumberEnd: 766
    functionName: yprp_case
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_node_common2
    - ypr_close
    - LY_LIST_FOR
    - yprp_node_common1
    - ypr_close_parent
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_case(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:775,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:778,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:779,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yin.c:782,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:784,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:785,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:786,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:790,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 768
    functionDepth: 2
    functionLinenumber: 768
    functionLinenumberEnd: 791
    functionName: yprp_choice
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_node_common2
    - ypr_substmt
    - ypr_close
    - LY_LIST_FOR
    - yprp_node_common1
    - ypr_close_parent
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_choice(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:801,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yin.c:803,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:804,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:805,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:806,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:808,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yin.c:810,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 814
    functionName: yprp_leaf
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_node_common2
    - ypr_substmt
    - ypr_close
    - yprp_type
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    linkageType: ''
    returnType: void
    signature: void yprp_leaf(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:823,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yin.c:825,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:826,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:827,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:828,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:830,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:831,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yin.c:834,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:837,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:841,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:843,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:848,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:851,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:852,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:853,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:856,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 857
    functionName: yprp_leaflist
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - ypr_config
    - ypr_substmt
    - ypr_close
    - yprp_type
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_status
    - ypr_reference
    - ypr_unsigned
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_leaflist(struct lys_ypr_ctx *ctx, const struct lysp_node
      *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:870,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:872,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:873,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:874,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:877,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:878,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:880,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:881,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:882,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yin.c:885,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:888,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:892,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:894,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:899,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:900,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:903,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:904,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:905,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:907,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:908,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yin.c:909,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:912,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:913,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yin.c:914,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:917,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:918,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:919,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:922,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:923,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yin.c:924,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:927,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:928,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yin.c:929,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:933,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 54
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 859
    functionDepth: 2
    functionLinenumber: 859
    functionLinenumberEnd: 934
    functionName: yprp_list
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - ypr_config
    - yprp_typedef
    - ypr_substmt
    - yprp_notification
    - ypr_close
    - LY_LIST_FOR
    - yprp_action
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_status
    - ypr_close_parent
    - ypr_reference
    - ypr_unsigned
    - yprp_grouping
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_list(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:942,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:945,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:946,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:948,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:949,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:950,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:954,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:955,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:958,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:959,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:960,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yin.c:963,1
    - Dst: ypr_mandatory
      Src: /src/libyang/src/printer_yin.c:964,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:967,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:968,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:971,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:973,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:975,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:979,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:980,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:983,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - refine
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_refine*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 936
    functionDepth: 2
    functionLinenumber: 936
    functionLinenumberEnd: 984
    functionName: yprp_refine
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - ypr_config
    - yprp_iffeatures
    - ypr_substmt
    - ypr_close
    - yprp_restr
    - LY_ARRAY_FOR
    - ypr_reference
    - ypr_open
    - ypr_close_parent
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_mandatory
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_refine(struct lys_ypr_ctx *ctx, struct lysp_refine *refine)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:993,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:996,1
    - Dst: yprp_when
      Src: /src/libyang/src/printer_yin.c:997,1
    - Dst: yprp_iffeatures
      Src: /src/libyang/src/printer_yin.c:998,1
    - Dst: ypr_status
      Src: /src/libyang/src/printer_yin.c:999,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:1000,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:1001,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1003,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:1004,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1007,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yin.c:1008,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1011,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yin.c:1012,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1016,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - aug
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node_augment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 986
    functionDepth: 0
    functionLinenumber: 986
    functionLinenumberEnd: 1017
    functionName: yprp_augment
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 2
    functionsReached:
    - yprp_iffeatures
    - yprp_notification
    - ypr_close
    - LY_LIST_FOR
    - yprp_action
    - yprp_when
    - ypr_reference
    - ypr_open
    - ypr_status
    - yprp_extension_instances
    - ypr_description
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yprp_augment(struct lys_ypr_ctx *ctx, const struct lysp_node_augment
      *aug)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:1027,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yin.c:1028,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1030,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1031,1
    - Dst: yprp_refine
      Src: /src/libyang/src/printer_yin.c:1032,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1035,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1036,1
    - Dst: yprp_augment
      Src: /src/libyang/src/printer_yin.c:1037,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1019
    functionDepth: 2
    functionLinenumber: 1019
    functionLinenumberEnd: 1042
    functionName: yprp_uses
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_node_common2
    - yprp_refine
    - ypr_close
    - LY_LIST_FOR
    - yprp_node_common1
    - LY_ARRAY_FOR
    - yprp_augment
    - ypr_close_parent
    linkageType: ''
    returnType: void
    signature: void yprp_uses(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: yprp_node_common1
      Src: /src/libyang/src/printer_yin.c:1051,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1053,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1054,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:1055,1
    - Dst: yprp_node_common2
      Src: /src/libyang/src/printer_yin.c:1058,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1061,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/printer_yin.c:1061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1062
    functionName: yprp_anydata
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_node_common2
    - lys_nodetype2str
    - ypr_close
    - yprp_restr
    - yprp_node_common1
    - LY_ARRAY_FOR
    - ypr_close_parent
    linkageType: ''
    returnType: void
    signature: void yprp_anydata(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: yprp_container
      Src: /src/libyang/src/printer_yin.c:1069,1
    - Dst: yprp_choice
      Src: /src/libyang/src/printer_yin.c:1072,1
    - Dst: yprp_leaf
      Src: /src/libyang/src/printer_yin.c:1075,1
    - Dst: yprp_leaflist
      Src: /src/libyang/src/printer_yin.c:1078,1
    - Dst: yprp_list
      Src: /src/libyang/src/printer_yin.c:1081,1
    - Dst: yprp_uses
      Src: /src/libyang/src/printer_yin.c:1084,1
    - Dst: yprp_anydata
      Src: /src/libyang/src/printer_yin.c:1088,1
    - Dst: yprp_case
      Src: /src/libyang/src/printer_yin.c:1091,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1064
    functionDepth: 0
    functionLinenumber: 1064
    functionLinenumberEnd: 1096
    functionName: yprp_node
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 17
    functionsReached:
    - yprp_anydata
    - yprp_choice
    - yprp_leaf
    - yprp_container
    - yprp_leaflist
    - yprp_uses
    - yprp_case
    - yprp_list
    linkageType: ''
    returnType: void
    signature: void yprp_node(struct lys_ypr_ctx *ctx, const struct lysp_node *node)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1107,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1110,1
    - Dst: ypr_description
      Src: /src/libyang/src/printer_yin.c:1111,1
    - Dst: ypr_reference
      Src: /src/libyang/src/printer_yin.c:1112,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1114,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1115,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1118,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1121,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1123,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1128,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1131,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1132,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1133,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:1134,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1136,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1137,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1139,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1140,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yin.c:1142,1
    - Dst: ypr_mandatory
      Src: /src/libyang/src/printer_yin.c:1143,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:1145,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:1149,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1151,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1156,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1159,1
    - Dst: yprp_type
      Src: /src/libyang/src/printer_yin.c:1161,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1163,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1164,1
    - Dst: ypr_config
      Src: /src/libyang/src/printer_yin.c:1165,1
    - Dst: ypr_mandatory
      Src: /src/libyang/src/printer_yin.c:1166,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:1168,1
    - Dst: ypr_unsigned
      Src: /src/libyang/src/printer_yin.c:1172,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1174,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1179,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1182,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1183,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1184,1
    - Dst: yprp_restr
      Src: /src/libyang/src/printer_yin.c:1185,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1187,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1188,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1190,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1191,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1196,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1200,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 90
    argCount: 2
    argNames:
    - ctx
    - deviation
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_deviation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1098
    functionDepth: 1
    functionLinenumber: 1098
    functionLinenumberEnd: 1201
    functionName: yprp_deviation
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - ypr_config
    - ypr_substmt
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - yprp_type
    - ypr_reference
    - LY_ARRAY_FOR
    - yprp_restr
    - ypr_open
    - ypr_unsigned
    - yprp_extension_instances
    - ypr_mandatory
    - ypr_description
    linkageType: ''
    returnType: void
    signature: void yprp_deviation(struct lys_ypr_ctx *ctx, const struct lysp_deviation
      *deviation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1206,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - module
    - indent
    argTypes:
    - struct lys_ypr_ctx*
    - struct lys_module*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1203
    functionDepth: 1
    functionLinenumber: 1203
    functionLinenumberEnd: 1208
    functionName: ypr_xmlns
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_xmlns(struct lys_ypr_ctx *ctx, const struct lys_module *module,
      uint16_t indent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1215,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - modp
    - indent
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_module*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1218
    functionName: ypr_import_xmlns
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - ly_print_
    linkageType: ''
    returnType: void
    signature: void ypr_import_xmlns(struct lys_ypr_ctx *ctx, const struct lysp_module
      *modp, uint16_t indent)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1232,1
    - Dst: ypr_yin_arg
      Src: /src/libyang/src/printer_yin.c:1233,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1235,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1241,1
    - Dst: yprp_stmt
      Src: /src/libyang/src/printer_yin.c:1242,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - stmt
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1220
    functionDepth: 3
    functionLinenumber: 1220
    functionLinenumberEnd: 1247
    functionName: yprp_stmt
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 4
    functionsReached:
    - yprp_stmt
    - ypr_close
    - LY_LIST_FOR
    - ypr_yin_arg
    - ypr_open
    linkageType: ''
    returnType: void
    signature: void yprp_stmt(struct lys_ypr_ctx *ctx, struct lysp_stmt *stmt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/printer_yin.c:1261,1
    - Dst: lysp_ext_find_definition
      Src: /src/libyang/src/printer_yin.c:1275,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1280,1
    - Dst: lysp_ext_instance_resolve_argument
      Src: /src/libyang/src/printer_yin.c:1284,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1287,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1293,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/printer_yin.c:1297,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1298,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:1299,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1300,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1302,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1307,1
    - Dst: yprp_stmt
      Src: /src/libyang/src/printer_yin.c:1308,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1311,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 6
    argNames:
    - ctx
    - substmt
    - substmt_index
    - ext
    - flag
    - count
    argTypes:
    - struct lys_ypr_ctx*
    - enum ly_stmt
    - uint8_t
    - struct lysp_ext_instance*
    - int8_t*
    - LY_ARRAY_COUNT_TYPE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1252
    functionDepth: 5
    functionLinenumber: 1252
    functionLinenumberEnd: 1313
    functionName: yprp_extension_instances
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 49
    functionsReached:
    - lyxml_dump_text
    - yprp_stmt
    - ly_parse_nodeid
    - ypr_close
    - LY_ARRAY_COUNT
    - ly_print_
    - LY_LIST_FOR
    - ypr_open
    - ypr_close_parent
    - lysp_ext_instance_resolve_argument
    - lysp_ext_find_definition
    linkageType: ''
    returnType: void
    signature: "void yprp_extension_instances(struct lys_ypr_ctx *ctx, enum ly_stmt
      substmt, uint8_t substmt_index,\n        struct lysp_ext_instance *ext, int8_t
      *flag, LY_ARRAY_COUNT_TYPE count)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lysp_ext_find_definition
      Src: /src/libyang/src/printer_yin.c:1275,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1280,1
    - Dst: lysp_ext_instance_resolve_argument
      Src: /src/libyang/src/printer_yin.c:1284,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1287,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1293,1
    - Dst: ly_parse_nodeid
      Src: /src/libyang/src/printer_yin.c:1297,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1298,1
    - Dst: lyxml_dump_text
      Src: /src/libyang/src/printer_yin.c:1299,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1300,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1302,1
    - Dst: ypr_close_parent
      Src: /src/libyang/src/printer_yin.c:1307,1
    - Dst: yprp_stmt
      Src: /src/libyang/src/printer_yin.c:1308,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1311,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1263
    functionDepth: 5
    functionLinenumber: 1263
    functionLinenumberEnd: 1312
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 103
    functionsReached:
    - lyxml_dump_text
    - yprp_stmt
    - ly_parse_nodeid
    - ypr_close
    - ly_print_
    - LY_LIST_FOR
    - ypr_open
    - ypr_close_parent
    - lysp_ext_instance_resolve_argument
    - lysp_ext_find_definition
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(ext, u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1320,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1325,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1327,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1328,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1330,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1332,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1333,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1335,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1337,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1343,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1345,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1347,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1349,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1350,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1352,1
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1354,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - modp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1315
    functionDepth: 1
    functionLinenumber: 1315
    functionLinenumberEnd: 1357
    functionName: yin_print_parsed_linkage
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - ypr_close
    - ypr_substmt
    - ly_print_
    - LY_ARRAY_FOR
    - ypr_open
    - yprp_extension_instances
    linkageType: ''
    returnType: void
    signature: void yin_print_parsed_linkage(struct lys_ypr_ctx *ctx, const struct
      lysp_module *modp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1369,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1370,1
    - Dst: yprp_extension
      Src: /src/libyang/src/printer_yin.c:1371,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1374,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1375,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1378,1
    - Dst: yprp_feature
      Src: /src/libyang/src/printer_yin.c:1379,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1382,1
    - Dst: yprp_identity
      Src: /src/libyang/src/printer_yin.c:1383,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1386,1
    - Dst: yprp_typedef
      Src: /src/libyang/src/printer_yin.c:1387,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1390,1
    - Dst: yprp_grouping
      Src: /src/libyang/src/printer_yin.c:1391,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1394,1
    - Dst: yprp_node
      Src: /src/libyang/src/printer_yin.c:1395,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1398,1
    - Dst: yprp_augment
      Src: /src/libyang/src/printer_yin.c:1399,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1402,1
    - Dst: yprp_action
      Src: /src/libyang/src/printer_yin.c:1403,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/printer_yin.c:1406,1
    - Dst: yprp_notification
      Src: /src/libyang/src/printer_yin.c:1407,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1410,1
    - Dst: yprp_deviation
      Src: /src/libyang/src/printer_yin.c:1411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - modp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1413
    functionName: yin_print_parsed_body
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - yprp_typedef
    - yprp_notification
    - ly_print_
    - LY_LIST_FOR
    - yprp_feature
    - yprp_action
    - LY_ARRAY_FOR
    - yprp_extension
    - yprp_augment
    - yprp_grouping
    - yprp_extension_instances
    - yprp_deviation
    - yprp_identity
    - yprp_node
    linkageType: ''
    returnType: void
    signature: void yin_print_parsed_body(struct lys_ypr_ctx *ctx, const struct lysp_module
      *modp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1422,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1423,1
    - Dst: ypr_xmlns
      Src: /src/libyang/src/printer_yin.c:1424,1
    - Dst: ypr_import_xmlns
      Src: /src/libyang/src/printer_yin.c:1425,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1426,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1432,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1434,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1435,1
    - Dst: yin_print_parsed_linkage
      Src: /src/libyang/src/printer_yin.c:1438,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1442,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1444,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1445,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1446,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1447,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1451,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1453,1
    - Dst: yprp_revision
      Src: /src/libyang/src/printer_yin.c:1454,1
    - Dst: yin_print_parsed_body
      Src: /src/libyang/src/printer_yin.c:1458,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1461,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_yin.c:1462,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - out
    - modp
    - options
    argTypes:
    - struct ly_out*
    - struct lysp_module*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1415
    functionDepth: 2
    functionLinenumber: 1415
    functionLinenumberEnd: 1465
    functionName: yin_print_parsed_module
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - ypr_xmlns
    - ypr_substmt
    - ypr_import_xmlns
    - ly_print_
    - yprp_revision
    - LY_ARRAY_FOR
    - yin_print_parsed_body
    - ly_print_flush
    - yin_print_parsed_linkage
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_print_parsed_module(struct ly_out *out, const struct lysp_module
      *modp, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ypr_open
      Src: /src/libyang/src/printer_yin.c:1470,1
    - Dst: yprp_extension_instances
      Src: /src/libyang/src/printer_yin.c:1472,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1473,1
    - Dst: ypr_close
      Src: /src/libyang/src/printer_yin.c:1475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - submodp
    argTypes:
    - struct lys_ypr_ctx*
    - struct lysp_submodule*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1467
    functionDepth: 0
    functionLinenumber: 1467
    functionLinenumberEnd: 1476
    functionName: yprp_belongsto
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 1
    functionsReached:
    - yprp_extension_instances
    - ypr_open
    - ypr_close
    - ypr_substmt
    linkageType: ''
    returnType: void
    signature: void yprp_belongsto(struct lys_ypr_ctx *ctx, const struct lysp_submodule
      *submodp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1484,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1485,1
    - Dst: ypr_xmlns
      Src: /src/libyang/src/printer_yin.c:1486,1
    - Dst: ypr_import_xmlns
      Src: /src/libyang/src/printer_yin.c:1487,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1488,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1494,1
    - Dst: yprp_belongsto
      Src: /src/libyang/src/printer_yin.c:1496,1
    - Dst: yin_print_parsed_linkage
      Src: /src/libyang/src/printer_yin.c:1499,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1503,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1505,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1506,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1507,1
    - Dst: ypr_substmt
      Src: /src/libyang/src/printer_yin.c:1508,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1512,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/printer_yin.c:1514,1
    - Dst: yprp_revision
      Src: /src/libyang/src/printer_yin.c:1515,1
    - Dst: yin_print_parsed_body
      Src: /src/libyang/src/printer_yin.c:1519,1
    - Dst: ly_print_
      Src: /src/libyang/src/printer_yin.c:1522,1
    - Dst: ly_print_flush
      Src: /src/libyang/src/printer_yin.c:1523,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - out
    - submodp
    - options
    argTypes:
    - struct ly_out*
    - struct lysp_submodule*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1478
    functionDepth: 2
    functionLinenumber: 1478
    functionLinenumberEnd: 1526
    functionName: yin_print_parsed_submodule
    functionSourceFile: /src/libyang/src/printer_yin.c
    functionUses: 0
    functionsReached:
    - ypr_xmlns
    - ypr_substmt
    - ypr_import_xmlns
    - ly_print_
    - yprp_revision
    - yprp_belongsto
    - LY_ARRAY_FOR
    - yin_print_parsed_body
    - ly_print_flush
    - yin_print_parsed_linkage
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yin_print_parsed_submodule(struct ly_out *out, const struct
      lysp_submodule *submodp, uint32_t options)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lyd_is_default
      Src: /src/libyang/src/out.c:48,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/out.c:63,1
    - Dst: assert
      Src: /src/libyang/src/out.c:73,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/out.c:74,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 2
    argNames:
    - node
    - options
    argTypes:
    - struct lyd_node*
    - uint32_t
    assertStmts:
    - condition: (elem->flags & LYD_DEFAULT)
      pos:
        line_end: 72
        line_start: 72
        source_file: /src/libyang/src/out.c
    constantsTouched: []
    func_position:
      end: 80
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 80
    functionName: ly_should_print
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 5
    functionsReached:
    - LYD_TREE_DFS_END
    - assert
    - lyd_is_default
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool ly_should_print(const struct lyd_node *node, uint32_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/out.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(node, elem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/out.c:73,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/out.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (elem->flags & LYD_DEFAULT)
      pos:
        line_end: 72
        line_start: 72
        source_file: /src/libyang/src/out.c
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 1
    functionsReached:
    - LYD_TREE_DFS_END
    - assert
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(node, elem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - out
    argTypes:
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: LY_OUT_TYPE::ly_out_type
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API LY_OUT_TYPE

      ly_out_type(const struct ly_out *out)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:92,1
    - Dst: calloc
      Src: /src/libyang/src/out.c:94,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/out.c:95,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - writeclb
    - user_data
    - out
    argTypes:
    - ly_write_clb
    - void*
    - struct ly_out**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: ly_out_new_clb
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 5
    functionsReached:
    - LOGMEM
    - LY_CHECK_ARG_RET
    - LY_CHECK_ERR_RET
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_out_new_clb(ly_write_clb writeclb, void *user_data, struct ly_out
      **out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - out
    - writeclb
    argTypes:
    - struct ly_out*
    - ly_write_clb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 118
    functionName: ly_write_clb::ly_out_clb
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API ly_write_clb

      ly_out_clb(struct ly_out *out, ly_write_clb writeclb)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - out
    - arg
    argTypes:
    - struct ly_out*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: ly_out_clb_arg
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_out_clb_arg(struct ly_out *out, void *arg)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:139,1
    - Dst: calloc
      Src: /src/libyang/src/out.c:141,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/out.c:142,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - out
    argTypes:
    - int
    - struct ly_out**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 147
    functionName: ly_out_new_fd
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 2
    functionsReached:
    - LOGMEM
    - LY_CHECK_ARG_RET
    - LY_CHECK_ERR_RET
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_out_new_fd(int fd, struct ly_out **out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:154,1
    - Dst: dup
      Src: /src/libyang/src/out.c:168,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:170,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:170,1
    - Dst: fdopen
      Src: /src/libyang/src/out.c:173,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:175,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:175,1
    - Dst: close
      Src: /src/libyang/src/out.c:176,1
    - Dst: fclose
      Src: /src/libyang/src/out.c:180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - out
    - fd
    argTypes:
    - struct ly_out*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 189
    functionName: ly_out_fd
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 1
    functionsReached:
    - strerror
    - LY_CHECK_ARG_RET
    - LOGERR
    - close
    - fclose
    - fdopen
    - dup
    linkageType: ''
    returnType: API
    signature: API ly_out_fd(struct ly_out *out, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:194,1
    - Dst: calloc
      Src: /src/libyang/src/out.c:196,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/out.c:197,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - f
    - out
    argTypes:
    - FILE*
    - struct ly_out**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: ly_out_new_file
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 6
    functionsReached:
    - LOGMEM
    - LY_CHECK_ARG_RET
    - LY_CHECK_ERR_RET
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_out_new_file(FILE *f, struct ly_out **out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - out
    - f
    argTypes:
    - struct ly_out*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 219
    functionName: ly_out_file
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_out_file(struct ly_out *out, FILE *f)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:224,1
    - Dst: calloc
      Src: /src/libyang/src/out.c:226,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/out.c:227,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - strp
    - size
    - out
    argTypes:
    - char**
    - size_t
    - struct ly_out**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 240
    functionName: ly_out_new_memory
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 10
    functionsReached:
    - LOGMEM
    - LY_CHECK_ARG_RET
    - LY_CHECK_ERR_RET
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_out_new_memory(char **strp, size_t size, struct ly_out **out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - out
    - strp
    - size
    argTypes:
    - struct ly_out*
    - char**
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 265
    functionName: ly_out_memory
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: char
    signature: 'char *

      ly_out_memory(struct ly_out *out, char **strp, size_t size)'
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:270,1
    - Dst: LOGINT
      Src: /src/libyang/src/out.c:274,1
    - Dst: lseek
      Src: /src/libyang/src/out.c:277,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:278,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:278,1
    - Dst: ftruncate
      Src: /src/libyang/src/out.c:281,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:282,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:282,1
    - Dst: fseek
      Src: /src/libyang/src/out.c:289,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:290,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:290,1
    - Dst: ftruncate
      Src: /src/libyang/src/out.c:293,1
    - Dst: fileno
      Src: /src/libyang/src/out.c:293,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:294,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:294,1
    - Dst: memset
      Src: /src/libyang/src/out.c:300,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 39
    argCount: 1
    argNames:
    - out
    argTypes:
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 311
    functionName: ly_out_reset
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 32
    functionsReached:
    - memset
    - strerror
    - LY_CHECK_ARG_RET
    - LOGERR
    - LOGINT
    - lseek
    - fileno
    - ftruncate
    - fseek
    linkageType: ''
    returnType: API
    signature: API ly_out_reset(struct ly_out *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:316,1
    - Dst: calloc
      Src: /src/libyang/src/out.c:318,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/out.c:319,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:319,1
    - Dst: fopen
      Src: /src/libyang/src/out.c:322,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:324,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:324,1
    - Dst: free
      Src: /src/libyang/src/out.c:325,1
    - Dst: strdup
      Src: /src/libyang/src/out.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - filepath
    - out
    argTypes:
    - char*
    - struct ly_out**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 331
    functionName: ly_out_new_filepath
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 5
    functionsReached:
    - fopen
    - LY_CHECK_ERR_RET
    - strerror
    - LY_CHECK_ARG_RET
    - LOGERR
    - free
    - strdup
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_out_new_filepath(const char *filepath, struct ly_out **out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/out.c:338,1
    - Dst: fopen
      Src: /src/libyang/src/out.c:346,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:348,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:348,1
    - Dst: fclose
      Src: /src/libyang/src/out.c:352,1
    - Dst: free
      Src: /src/libyang/src/out.c:353,1
    - Dst: strdup
      Src: /src/libyang/src/out.c:354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - out
    - filepath
    argTypes:
    - struct ly_out*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 357
    functionName: ly_out_filepath
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 2
    functionsReached:
    - fopen
    - strerror
    - LY_CHECK_ARG_RET
    - LOGERR
    - free
    - fclose
    - strdup
    linkageType: ''
    returnType: API
    signature: 'API *

      ly_out_filepath(struct ly_out *out, const char *filepath)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: clb_arg_destructor
      Src: /src/libyang/src/out.c:369,1
    - Dst: fclose
      Src: /src/libyang/src/out.c:373,1
    - Dst: close
      Src: /src/libyang/src/out.c:375,1
    - Dst: close
      Src: /src/libyang/src/out.c:380,1
    - Dst: fclose
      Src: /src/libyang/src/out.c:385,1
    - Dst: free
      Src: /src/libyang/src/out.c:390,1
    - Dst: free
      Src: /src/libyang/src/out.c:394,1
    - Dst: fclose
      Src: /src/libyang/src/out.c:395,1
    - Dst: LOGINT
      Src: /src/libyang/src/out.c:398,1
    - Dst: free
      Src: /src/libyang/src/out.c:401,1
    - Dst: free
      Src: /src/libyang/src/out.c:402,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - out
    - destroy
    argTypes:
    - struct ly_out*
    - ly_bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 403
    functionName: ly_out_free
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 26
    functionsReached:
    - LOGINT
    - free
    - close
    - fclose
    - clb_arg_destructor
    linkageType: ''
    returnType: API
    signature: API ly_out_free(struct ly_out *out, void (*clb_arg_destructor)(void
      *arg), ly_bool destroy)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: vdprintf
      Src: /src/libyang/src/out.c:414,1
    - Dst: vfprintf
      Src: /src/libyang/src/out.c:419,1
    - Dst: vasprintf
      Src: /src/libyang/src/out.c:422,1
    - Dst: ly_realloc
      Src: /src/libyang/src/out.c:426,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:431,1
    - Dst: memcpy
      Src: /src/libyang/src/out.c:437,1
    - Dst: free
      Src: /src/libyang/src/out.c:440,1
    - Dst: vasprintf
      Src: /src/libyang/src/out.c:443,1
    - Dst: struct ly_out*::method::clb::func
      Src: /src/libyang/src/out.c:446,1
    - Dst: free
      Src: /src/libyang/src/out.c:447,1
    - Dst: LOGINT
      Src: /src/libyang/src/out.c:450,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:455,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:455,1
    - Dst: lseek
      Src: /src/libyang/src/out.c:461,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 3
    argNames:
    - out
    - format
    - ap
    argTypes:
    - struct ly_out*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 469
    functionName: ly_vprint_
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 0
    functionsReached:
    - strerror
    - vfprintf
    - vasprintf
    - free
    - LOGINT
    - LOGERR
    - lseek
    - vdprintf
    - ly_realloc
    - struct ly_out*::method::clb::func
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_vprint_(struct ly_out *out, const char *format, va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/libyang/src/out.c:477,1
    - Dst: ly_vprint_
      Src: /src/libyang/src/out.c:478,1
    - Dst: va_end
      Src: /src/libyang/src/out.c:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - out
    - format
    argTypes:
    - struct ly_out*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 482
    functionName: ly_print_
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 130
    functionsReached:
    - va_start
    - va_end
    - ly_vprint_
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_print_(struct ly_out *out, const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/libyang/src/out.c:492,1
    - Dst: ly_vprint_
      Src: /src/libyang/src/out.c:493,1
    - Dst: va_end
      Src: /src/libyang/src/out.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - out
    - format
    argTypes:
    - struct ly_out*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 484
    functionDepth: 2
    functionLinenumber: 484
    functionLinenumberEnd: 497
    functionName: ly_print
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 6
    functionsReached:
    - va_start
    - va_end
    - ly_vprint_
    linkageType: ''
    returnType: API
    signature: API ly_print(struct ly_out *out, const char *format, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lseek
      Src: /src/libyang/src/out.c:505,1
    - Dst: fflush
      Src: /src/libyang/src/out.c:506,1
    - Dst: fflush
      Src: /src/libyang/src/out.c:510,1
    - Dst: fsync
      Src: /src/libyang/src/out.c:513,1
    - Dst: LOGINT
      Src: /src/libyang/src/out.c:520,1
    - Dst: free
      Src: /src/libyang/src/out.c:523,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - out
    argTypes:
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 525
    functionName: ly_print_flush
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 12
    functionsReached:
    - LOGINT
    - free
    - lseek
    - fsync
    - fflush
    linkageType: ''
    returnType: API
    signature: API ly_print_flush(struct ly_out *out)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ly_realloc
      Src: /src/libyang/src/out.c:536,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:540,1
    - Dst: memcpy
      Src: /src/libyang/src/out.c:546,1
    - Dst: ly_realloc
      Src: /src/libyang/src/out.c:558,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:562,1
    - Dst: memcpy
      Src: /src/libyang/src/out.c:567,1
    - Dst: write
      Src: /src/libyang/src/out.c:575,1
    - Dst: fwrite
      Src: /src/libyang/src/out.c:586,1
    - Dst: struct ly_out*::method::clb::func
      Src: /src/libyang/src/out.c:593,1
    - Dst: LOGINT
      Src: /src/libyang/src/out.c:602,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:611,1
    - Dst: strerror
      Src: /src/libyang/src/out.c:611,1
    - Dst: LOGERR
      Src: /src/libyang/src/out.c:614,1
    - Dst: lseek
      Src: /src/libyang/src/out.c:620,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 88
    argCount: 3
    argNames:
    - out
    - buf
    - len
    argTypes:
    - struct ly_out*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 628
    functionName: ly_write_
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 7
    functionsReached:
    - fwrite
    - write
    - strerror
    - LOGERR
    - LOGINT
    - lseek
    - ly_realloc
    - struct ly_out*::method::clb::func
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_write_(struct ly_out *out, const char *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_write_
      Src: /src/libyang/src/out.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - out
    - buf
    - len
    argTypes:
    - struct ly_out*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 630
    functionDepth: 2
    functionLinenumber: 630
    functionLinenumberEnd: 636
    functionName: ly_write
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 4
    functionsReached:
    - ly_write_
    linkageType: ''
    returnType: API
    signature: API ly_write(struct ly_out *out, const char *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - struct ly_out*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 642
    functionName: ly_out_printed
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 37
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API ly_out_printed(const struct ly_out *out)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ly_realloc
      Src: /src/libyang/src/out.c:650,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:654,1
    - Dst: ly_realloc
      Src: /src/libyang/src/out.c:673,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:677,1
    - Dst: LOGINT
      Src: /src/libyang/src/out.c:693,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 3
    argNames:
    - out
    - count
    - position
    argTypes:
    - struct ly_out*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 701
    functionName: ly_write_skip
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 2
    functionsReached:
    - ly_realloc
    - LOGINT
    - LOGMEM
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_write_skip(struct ly_out *out, size_t count, size_t *position)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/libyang/src/out.c:711,1
    - Dst: LOGMEM
      Src: /src/libyang/src/out.c:719,1
    - Dst: memcpy
      Src: /src/libyang/src/out.c:724,1
    - Dst: ly_write_
      Src: /src/libyang/src/out.c:732,1
    - Dst: LOGINT
      Src: /src/libyang/src/out.c:737,1
    - Dst: lseek
      Src: /src/libyang/src/out.c:743,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - out
    - position
    - buf
    - count
    argTypes:
    - struct ly_out*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 703
    functionDepth: 2
    functionLinenumber: 703
    functionLinenumberEnd: 746
    functionName: ly_write_skipped
    functionSourceFile: /src/libyang/src/out.c
    functionUses: 2
    functionsReached:
    - ly_write_
    - LOGINT
    - lseek
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ly_write_skipped(struct ly_out *out, size_t position, const
      char *buf, size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/set.c:27,1
    - Dst: calloc
      Src: /src/libyang/src/set.c:29,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/set.c:30,1
    - Dst: LOGMEM
      Src: /src/libyang/src/set.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - set_p
    argTypes:
    - struct ly_set**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 33
    functionName: ly_set_new
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 15
    functionsReached:
    - LOGMEM
    - LY_CHECK_ARG_RET
    - LY_CHECK_ERR_RET
    - calloc
    linkageType: ''
    returnType: API
    signature: API ly_set_new(struct ly_set **set_p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: destructor
      Src: /src/libyang/src/set.c:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 50
    functionName: ly_set_clean
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 5
    functionsReached:
    - destructor
    linkageType: ''
    returnType: API
    signature: API ly_set_clean(struct ly_set *set, void (*destructor)(void *obj))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_clean
      Src: /src/libyang/src/set.c:59,1
    - Dst: free
      Src: /src/libyang/src/set.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: ly_set_erase
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 46
    functionsReached:
    - free
    - ly_set_clean
    linkageType: ''
    returnType: API
    signature: API ly_set_erase(struct ly_set *set, void (*destructor)(void *obj))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_erase
      Src: /src/libyang/src/set.c:73,1
    - Dst: free
      Src: /src/libyang/src/set.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: ly_set_free
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 27
    functionsReached:
    - ly_set_erase
    - free
    linkageType: ''
    returnType: API
    signature: API ly_set_free(struct ly_set *set, void (*destructor)(void *obj))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/set.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - set
    - object
    - index_p
    argTypes:
    - struct ly_set*
    - void*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 95
    functionName: ly_set_contains
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_ARG_RET
    linkageType: ''
    returnType: API
    signature: API ly_set_contains(const struct ly_set *set, void *object, uint32_t
      *index_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/set.c:103,1
    - Dst: malloc
      Src: /src/libyang/src/set.c:105,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/set.c:106,1
    - Dst: LOGMEM
      Src: /src/libyang/src/set.c:106,1
    - Dst: malloc
      Src: /src/libyang/src/set.c:109,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/set.c:110,1
    - Dst: LOGMEM
      Src: /src/libyang/src/set.c:110,1
    - Dst: free
      Src: /src/libyang/src/set.c:110,1
    - Dst: duplicator
      Src: /src/libyang/src/set.c:113,1
    - Dst: memcpy
      Src: /src/libyang/src/set.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - set
    - (*duplicator)(void *obj)
    - newset_p
    argTypes:
    - struct ly_set*
    - void*
    - struct ly_set**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 121
    functionName: ly_set_dup
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 2
    functionsReached:
    - LY_CHECK_ERR_RET
    - duplicator
    - malloc
    - LY_CHECK_ARG_RET
    - free
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: API
    signature: API ly_set_dup(const struct ly_set *set, void *(*duplicator)(void *obj),
      struct ly_set **newset_p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/set.c:128,1
    - Dst: realloc::realloc
      Src: /src/libyang/src/set.c:145,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/set.c:146,1
    - Dst: LOGMEM::LOGMEM
      Src: /src/libyang/src/set.c:146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - set
    - object
    - list
    - index_p
    argTypes:
    - struct ly_set*
    - void*
    - ly_bool
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 158
    functionName: ly_set_add
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 76
    functionsReached:
    - LOGMEM::LOGMEM
    - LY_CHECK_ARG_RET
    - realloc::realloc
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: API
    signature: API ly_set_add(struct ly_set *set, void *object, ly_bool list, uint32_t
      *index_p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/set.c:166,1
    - Dst: duplicator
      Src: /src/libyang/src/set.c:175,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/set.c:179,1
    - Dst: ly_set_add
      Src: /src/libyang/src/set.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - trg
    - src
    - list
    - (*duplicator)(void *obj)
    argTypes:
    - struct ly_set*
    - struct ly_set*
    - ly_bool
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 183
    functionName: ly_set_merge
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 3
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - ly_set_add
    - duplicator
    linkageType: ''
    returnType: API
    signature: API ly_set_merge(struct ly_set *trg, const struct ly_set *src, ly_bool
      list, void *(*duplicator)(void *obj))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/set.c:188,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/set.c:189,1
    - Dst: LOGARG
      Src: /src/libyang/src/set.c:189,1
    - Dst: destructor
      Src: /src/libyang/src/set.c:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - set
    - index
    argTypes:
    - struct ly_set*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 205
    functionName: ly_set_rm_index
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 15
    functionsReached:
    - LY_CHECK_ARG_RET
    - destructor
    - LY_CHECK_ERR_RET
    - LOGARG
    linkageType: ''
    returnType: API
    signature: API ly_set_rm_index(struct ly_set *set, uint32_t index, void (*destructor)(void
      *obj))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/set.c:212,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/set.c:220,1
    - Dst: LOGARG
      Src: /src/libyang/src/set.c:220,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/set.c:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - set
    - object
    argTypes:
    - struct ly_set*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 223
    functionName: ly_set_rm
    functionSourceFile: /src/libyang/src/set.c
    functionUses: 3
    functionsReached:
    - ly_set_rm_index
    - LY_CHECK_ARG_RET
    - LY_CHECK_ERR_RET
    - LOGARG
    linkageType: ''
    returnType: API
    signature: API ly_set_rm(struct ly_set *set, void *object, void (*destructor)(void
      *obj))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - enum lyd_diff_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 55
    functionName: lyd_diff_op2str
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LOGINT
    linkageType: ''
    returnType: char
    signature: 'char *

      lyd_diff_op2str(enum lyd_diff_op op)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:62,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:62,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:65,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:65,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:68,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:68,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:71,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:71,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts:
    - condition: (!strcmp(str, "create"))
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/libyang/src/diff.c
    - condition: (!strcmp(str, "replace"))
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/libyang/src/diff.c
    - condition: (!strcmp(str, "delete"))
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/libyang/src/diff.c
    - condition: (!strcmp(str, "none"))
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 77
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 77
    functionName: lyd_diff_str2op
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - strcmp
    - LOGINT
    - assert
    linkageType: ''
    returnType: enum lyd_diff_op
    signature: enum lyd_diff_op lyd_diff_str2op(const char *str)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:88,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:91,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:94,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:95,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:96,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:97,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:100,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:101,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:102,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:103,1
    - Dst: lyd_parent
      Src: /src/libyang/src/diff.c:112,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/diff.c:120,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:128,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:132,1
    - Dst: lyd_dup_single
      Src: /src/libyang/src/diff.c:132,1
    - Dst: lyd_parent
      Src: /src/libyang/src/diff.c:137,1
    - Dst: lyd_parent
      Src: /src/libyang/src/diff.c:139,1
    - Dst: lyd_parent
      Src: /src/libyang/src/diff.c:144,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/diff.c:151,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/diff.c:153,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:157,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:158,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:158,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:162,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:162,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:162,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:166,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:166,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:166,1
    - Dst: lyd_diff_op2str
      Src: /src/libyang/src/diff.c:166,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:170,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:170,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:170,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:175,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:175,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:175,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:180,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:180,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:180,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:185,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:185,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:185,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:190,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:190,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:190,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:195,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:195,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:195,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:200,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:200,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:200,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 68
    argCount: 10
    argNames:
    - node
    - op
    - orig_default
    - orig_value
    - key
    - value
    - position
    - orig_key
    - orig_position
    - diff
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - struct lyd_node**
    assertStmts:
    - condition: "((node->schema->nodetype != LYS_LIST) || !(node->schema->flags &
        LYS_ORDBY_USER) || (op != LYD_DIFF_OP_CREATE) ||\n            (lysc_is_dup_inst_list(node->schema)
        && position) || key)"
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/libyang/src/diff.c
    - condition: "((node->schema->nodetype != LYS_LEAFLIST) || !(node->schema->flags
        & LYS_ORDBY_USER) ||\n            (op != LYD_DIFF_OP_CREATE) || (lysc_is_dup_inst_list(node->schema)
        && position) || value)"
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/libyang/src/diff.c
    - condition: (!strcmp(yang_mod->name, "yang"))
      pos:
        line_end: 157
        line_start: 157
        source_file: /src/libyang/src/diff.c
    - condition: ((node->schema->nodetype != LYS_LEAF) || (op != LYD_DIFF_OP_REPLACE)
        || (orig_default && orig_value))
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/libyang/src/diff.c
    - condition: "((node->schema->nodetype != LYS_LIST) || !(node->schema->flags &
        LYS_ORDBY_USER) || (op != LYD_DIFF_OP_REPLACE) ||\n            (lysc_is_dup_inst_list(node->schema)
        && position && orig_position) || (key && orig_key))"
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/libyang/src/diff.c
    - condition: (diff)
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/libyang/src/diff.c
    - condition: "((node->schema->nodetype != LYS_LEAFLIST) || !(node->schema->flags
        & LYS_ORDBY_USER) ||\n            (op != LYD_DIFF_OP_REPLACE) || (lysc_is_dup_inst_list(node->schema)
        && position && orig_position) ||\n            (value && orig_value))"
      pos:
        line_end: 103
        line_start: 101
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 204
      start: 79
    functionDepth: 7
    functionLinenumber: 79
    functionLinenumberEnd: 204
    functionName: lyd_diff_add
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 1
    functionsReached:
    - assert
    - lyd_new_meta
    - lyd_parent
    - lyd_diff_op2str
    - strcmp
    - lysc_is_dup_inst_list
    - LY_CHECK_RET
    - lyd_insert_sibling
    - lyd_find_sibling_first
    - LYD_CTX
    - lyd_dup_single
    - lyd_child_no_keys
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_add(const struct lyd_node *node, enum lyd_diff_op
      op, const char *orig_default, const char *orig_value,\n        const char *key,
      const char *value, const char *position, const char *orig_key, const char *orig_position,\n
      \       struct lyd_node **diff)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/diff.c:222,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/diff.c:229,1
    - Dst: LYD_LIST_FOR_INST
      Src: /src/libyang/src/diff.c:237,1
    - Dst: lyd_first_sibling
      Src: /src/libyang/src/diff.c:237,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/diff.c:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - first
    - schema
    - userord
    argTypes:
    - struct lyd_node*
    - struct lysc_node*
    - struct lyd_diff_userord**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 244
    functionName: lyd_diff_userord_get
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - LYD_LIST_FOR_INST
    - LY_ARRAY_NEW_RET
    - lyd_first_sibling
    linkageType: ''
    returnType: struct lyd_diff_userord
    signature: 'struct lyd_diff_userord *

      lyd_diff_userord_get(const struct lyd_node *first, const struct lysc_node *schema,
      struct lyd_diff_userord **userord)'
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:276,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:287,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:287,1
    - Dst: lyd_diff_userord_get
      Src: /src/libyang/src/diff.c:290,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:291,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/diff.c:295,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:300,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/diff.c:300,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/diff.c:314,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:340,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:343,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:343,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:344,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:344,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:346,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:347,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:347,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:352,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:355,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:355,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:356,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:356,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:358,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:359,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:359,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:364,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:368,1
    - Dst: lyd_path_list_predicate
      Src: /src/libyang/src/diff.c:368,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:370,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:371,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:371,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:376,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:380,1
    - Dst: lyd_path_list_predicate
      Src: /src/libyang/src/diff.c:380,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:382,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:383,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:383,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:388,1
    - Dst: asprintf
      Src: /src/libyang/src/diff.c:390,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:391,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:395,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:396,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:396,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:401,1
    - Dst: asprintf
      Src: /src/libyang/src/diff.c:403,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:404,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:408,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:409,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:409,1
    - Dst: LY_ARRAY_CREATE_RET
      Src: /src/libyang/src/diff.c:418,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/diff.c:419,1
    - Dst: memmove
      Src: /src/libyang/src/diff.c:420,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/diff.c:421,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/diff.c:423,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/diff.c:428,1
    - Dst: memmove
      Src: /src/libyang/src/diff.c:429,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/diff.c:430,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/diff.c:432,1
    - Dst: memmove
      Src: /src/libyang/src/diff.c:436,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 123
    argCount: 12
    argNames:
    - first
    - second
    - options
    - userord
    - op
    - orig_default
    - value
    - orig_value
    - key
    - orig_key
    - position
    - orig_position
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint16_t
    - struct lyd_diff_userord**
    - enum lyd_diff_op*
    - char**
    - char**
    - char**
    - char**
    - char**
    - char**
    - char**
    assertStmts:
    - condition: (lysc_is_userordered(schema))
      pos:
        line_end: 286
        line_start: 286
        source_file: /src/libyang/src/diff.c
    - condition: (first_pos < LY_ARRAY_COUNT(userord_item->inst))
      pos:
        line_end: 299
        line_start: 299
        source_file: /src/libyang/src/diff.c
    - condition: (first || second)
      pos:
        line_end: 275
        line_start: 275
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 442
      start: 266
    functionDepth: 5
    functionLinenumber: 266
    functionLinenumberEnd: 442
    functionName: lyd_diff_userord_attrs
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lysc_is_userordered
    - lyd_diff_userord_get
    - LY_CHECK_ERR_RET
    - LY_ARRAY_COUNT
    - LY_ARRAY_DECREMENT
    - asprintf
    - memmove
    - LY_CHECK_RET
    - lysc_is_dup_inst_list
    - strdup
    - lyd_path_list_predicate
    - LY_ARRAY_CREATE_RET
    - lyd_compare_single
    - lyd_get_value
    - LY_ARRAY_INCREMENT
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_userord_attrs(const struct lyd_node *first, const
      struct lyd_node *second, uint16_t options,\n        struct lyd_diff_userord
      **userord, enum lyd_diff_op *op, const char **orig_default, char **value,\n
      \       char **orig_value, char **key, char **orig_key, char **position, char
      **orig_position)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:464,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:470,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:470,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/diff.c:498,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:510,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:530,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:530,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:531,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:531,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:533,1
    - Dst: lyd_any_value_str
      Src: /src/libyang/src/diff.c:533,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 6
    argNames:
    - first
    - second
    - options
    - op
    - orig_default
    - orig_value
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint16_t
    - enum lyd_diff_op*
    - char**
    - char**
    assertStmts:
    - condition: (first || second)
      pos:
        line_end: 463
        line_start: 463
        source_file: /src/libyang/src/diff.c
    - condition: (!lysc_is_userordered(schema))
      pos:
        line_end: 469
        line_start: 469
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 538
      start: 458
    functionDepth: 13
    functionLinenumber: 458
    functionLinenumberEnd: 538
    functionName: lyd_diff_attrs
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lysc_is_userordered
    - LOGINT_RET
    - LY_CHECK_ERR_RET
    - lyd_any_value_str
    - strdup
    - LY_CHECK_RET
    - lyd_compare_single
    - lyd_get_value
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_attrs(const struct lyd_node *first, const struct lyd_node
      *second, uint16_t options, enum lyd_diff_op *op,\n        const char **orig_default,
      char **orig_value)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/diff.c:553,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/diff.c:560,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - first_inst
    - dup_inst_cache
    argTypes:
    - struct lyd_node*
    - struct lyd_diff_dup_inst**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 563
    functionName: lyd_diff_dup_inst_get
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - LY_ARRAY_NEW_RET
    - LYD_CTX
    linkageType: ''
    returnType: struct lyd_diff_dup_inst
    signature: 'struct lyd_diff_dup_inst *

      lyd_diff_dup_inst_get(const struct lyd_node *first_inst, struct lyd_diff_dup_inst
      **dup_inst_cache)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_free
      Src: /src/libyang/src/diff.c:576,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/diff.c:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dup_inst
    argTypes:
    - struct lyd_diff_dup_inst*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 570
    functionDepth: 3
    functionLinenumber: 570
    functionLinenumberEnd: 579
    functionName: lyd_diff_dup_inst_free
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FREE
    - ly_set_free
    linkageType: ''
    returnType: void
    signature: void lyd_diff_dup_inst_free(struct lyd_diff_dup_inst *dup_inst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ly_set_free
      Src: /src/libyang/src/diff.c:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 575
    functionDepth: 3
    functionLinenumber: 575
    functionLinenumberEnd: 577
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 109
    functionsReached:
    - ly_set_free
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(dup_inst, u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/diff.c:599,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/diff.c:602,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:605,1
    - Dst: lyd_diff_dup_inst_get
      Src: /src/libyang/src/diff.c:607,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:608,1
    - Dst: LOGMEM
      Src: /src/libyang/src/diff.c:608,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:608,1
    - Dst: lyd_find_sibling_dup_inst_set
      Src: /src/libyang/src/diff.c:612,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:613,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:620,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - siblings
    - target
    - defaults
    - dup_inst_cache
    - match
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - ly_bool
    - struct lyd_diff_dup_inst**
    - struct lyd_node**
    assertStmts:
    - condition: (dup_inst->inst_set->count && (dup_inst->inst_set->dnodes[0] == *match))
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/libyang/src/diff.c
    - condition: (dup_inst->used < dup_inst->inst_set->count)
      pos:
        line_end: 619
        line_start: 619
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 633
      start: 591
    functionDepth: 7
    functionLinenumber: 591
    functionLinenumberEnd: 633
    functionName: lyd_diff_find_match
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - lyd_find_sibling_val
    - lysc_is_dup_inst_list
    - lyd_diff_dup_inst_get
    - lyd_find_sibling_dup_inst_set
    - lyd_find_sibling_first
    - LYD_CTX
    - LOGMEM
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_find_match(const struct lyd_node *siblings, const
      struct lyd_node *target, ly_bool defaults,\n        struct lyd_diff_dup_inst
      **dup_inst_cache, struct lyd_node **match)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:692,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:699,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:699,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:702,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:706,1
    - Dst: lyd_diff_userord_attrs
      Src: /src/libyang/src/diff.c:706,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:710,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:711,1
    - Dst: free
      Src: /src/libyang/src/diff.c:713,1
    - Dst: free
      Src: /src/libyang/src/diff.c:714,1
    - Dst: free
      Src: /src/libyang/src/diff.c:715,1
    - Dst: free
      Src: /src/libyang/src/diff.c:716,1
    - Dst: free
      Src: /src/libyang/src/diff.c:717,1
    - Dst: free
      Src: /src/libyang/src/diff.c:718,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:719,1
    - Dst: lyd_diff_attrs
      Src: /src/libyang/src/diff.c:723,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:728,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:730,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:731,1
    - Dst: free
      Src: /src/libyang/src/diff.c:734,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:735,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:745,1
    - Dst: lyd_diff_siblings_r
      Src: /src/libyang/src/diff.c:745,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:745,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:745,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:761,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:768,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:768,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:771,1
    - Dst: lyd_diff_userord_attrs
      Src: /src/libyang/src/diff.c:773,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:778,1
    - Dst: free
      Src: /src/libyang/src/diff.c:781,1
    - Dst: free
      Src: /src/libyang/src/diff.c:782,1
    - Dst: free
      Src: /src/libyang/src/diff.c:783,1
    - Dst: free
      Src: /src/libyang/src/diff.c:784,1
    - Dst: free
      Src: /src/libyang/src/diff.c:785,1
    - Dst: free
      Src: /src/libyang/src/diff.c:786,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:787,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:795,1
    - Dst: lyd_diff_attrs
      Src: /src/libyang/src/diff.c:795,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:798,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:799,1
    - Dst: free
      Src: /src/libyang/src/diff.c:801,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:802,1
    - Dst: lyd_diff_dup_inst_free
      Src: /src/libyang/src/diff.c:811,1
    - Dst: lyd_diff_dup_inst_free
      Src: /src/libyang/src/diff.c:812,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/diff.c:814,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/diff.c:816,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 90
    argCount: 5
    argNames:
    - first
    - second
    - options
    - nosiblings
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint16_t
    - ly_bool
    - struct lyd_node**
    assertStmts:
    - condition: (match_second)
      pos:
        line_end: 729
        line_start: 729
        source_file: /src/libyang/src/diff.c
    - condition: (!(iter_second->schema->flags & LYS_KEY))
      pos:
        line_end: 760
        line_start: 760
        source_file: /src/libyang/src/diff.c
    - condition: (op == LYD_DIFF_OP_CREATE)
      pos:
        line_end: 797
        line_start: 797
        source_file: /src/libyang/src/diff.c
    - condition: (!(iter_first->schema->flags & LYS_KEY))
      pos:
        line_end: 691
        line_start: 691
        source_file: /src/libyang/src/diff.c
    - condition: (op == LYD_DIFF_OP_DELETE)
      pos:
        line_end: 709
        line_start: 709
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 818
      start: 676
    functionDepth: 14
    functionLinenumber: 676
    functionLinenumberEnd: 818
    functionName: lyd_diff_siblings_r
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 1
    functionsReached:
    - lysc_is_userordered
    - lyd_child_no_keys
    - lyd_diff_userord_attrs
    - free
    - lyd_diff_add
    - lyd_diff_attrs
    - lyd_diff_dup_inst_free
    - lyd_diff_siblings_r
    - LY_ARRAY_FREE
    - lyd_diff_find_match
    - LY_CHECK_GOTO
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_siblings_r(const struct lyd_node *first, const struct
      lyd_node *second, uint16_t options, ly_bool nosiblings,\n        struct lyd_node
      **diff)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:692,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:699,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:699,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:702,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:706,1
    - Dst: lyd_diff_userord_attrs
      Src: /src/libyang/src/diff.c:706,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:710,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:711,1
    - Dst: free
      Src: /src/libyang/src/diff.c:713,1
    - Dst: free
      Src: /src/libyang/src/diff.c:714,1
    - Dst: free
      Src: /src/libyang/src/diff.c:715,1
    - Dst: free
      Src: /src/libyang/src/diff.c:716,1
    - Dst: free
      Src: /src/libyang/src/diff.c:717,1
    - Dst: free
      Src: /src/libyang/src/diff.c:718,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:719,1
    - Dst: lyd_diff_attrs
      Src: /src/libyang/src/diff.c:723,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:728,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:730,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:731,1
    - Dst: free
      Src: /src/libyang/src/diff.c:734,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:735,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:745,1
    - Dst: lyd_diff_siblings_r
      Src: /src/libyang/src/diff.c:745,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:745,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:745,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (match_second)
      pos:
        line_end: 729
        line_start: 729
        source_file: /src/libyang/src/diff.c
    - condition: (!(iter_first->schema->flags & LYS_KEY))
      pos:
        line_end: 691
        line_start: 691
        source_file: /src/libyang/src/diff.c
    - condition: (op == LYD_DIFF_OP_DELETE)
      pos:
        line_end: 709
        line_start: 709
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 752
      start: 691
    functionDepth: 15
    functionLinenumber: 691
    functionLinenumberEnd: 752
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 78
    functionsReached:
    - lysc_is_userordered
    - lyd_child_no_keys
    - lyd_diff_userord_attrs
    - free
    - lyd_diff_add
    - lyd_diff_attrs
    - lyd_diff_siblings_r
    - lyd_diff_find_match
    - LY_CHECK_GOTO
    - assert
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(first, iter_first)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 757
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 109
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(userord, u)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:761,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:768,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:768,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:771,1
    - Dst: lyd_diff_userord_attrs
      Src: /src/libyang/src/diff.c:773,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:778,1
    - Dst: free
      Src: /src/libyang/src/diff.c:781,1
    - Dst: free
      Src: /src/libyang/src/diff.c:782,1
    - Dst: free
      Src: /src/libyang/src/diff.c:783,1
    - Dst: free
      Src: /src/libyang/src/diff.c:784,1
    - Dst: free
      Src: /src/libyang/src/diff.c:785,1
    - Dst: free
      Src: /src/libyang/src/diff.c:786,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:787,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:795,1
    - Dst: lyd_diff_attrs
      Src: /src/libyang/src/diff.c:795,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:798,1
    - Dst: lyd_diff_add
      Src: /src/libyang/src/diff.c:799,1
    - Dst: free
      Src: /src/libyang/src/diff.c:801,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:802,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!(iter_second->schema->flags & LYS_KEY))
      pos:
        line_end: 760
        line_start: 760
        source_file: /src/libyang/src/diff.c
    - condition: (op == LYD_DIFF_OP_CREATE)
      pos:
        line_end: 797
        line_start: 797
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 808
      start: 760
    functionDepth: 14
    functionLinenumber: 760
    functionLinenumberEnd: 808
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 78
    functionsReached:
    - lysc_is_userordered
    - lyd_diff_userord_attrs
    - free
    - lyd_diff_add
    - lyd_diff_attrs
    - lyd_diff_find_match
    - LY_CHECK_GOTO
    - assert
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(second, iter_second)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/diff.c:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 813
    functionDepth: 1
    functionLinenumber: 813
    functionLinenumberEnd: 815
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 109
    functionsReached:
    - LY_ARRAY_FREE
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(userord, u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/diff.c:825,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:828,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:830,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/diff.c:835,1
    - Dst: lysc_data_parent
      Src: /src/libyang/src/diff.c:835,1
    - Dst: LOGERR
      Src: /src/libyang/src/diff.c:836,1
    - Dst: lyd_diff_siblings_r
      Src: /src/libyang/src/diff.c:842,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 5
    argNames:
    - first
    - second
    - options
    - nosiblings
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint16_t
    - ly_bool
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 820
    functionDepth: 15
    functionLinenumber: 820
    functionLinenumberEnd: 843
    functionName: lyd_diff
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LOGERR
    - LY_CHECK_ARG_RET
    - lyd_diff_siblings_r
    - lysc_data_parent
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff(const struct lyd_node *first, const struct lyd_node
      *second, uint16_t options, ly_bool nosiblings, struct lyd_node **diff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_diff
      Src: /src/libyang/src/diff.c:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - first
    - second
    - options
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint16_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 845
    functionDepth: 16
    functionLinenumber: 845
    functionLinenumberEnd: 849
    functionName: lyd_diff_tree
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_diff
    linkageType: ''
    returnType: API
    signature: API lyd_diff_tree(const struct lyd_node *first, const struct lyd_node
      *second, uint16_t options, struct lyd_node **diff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_diff
      Src: /src/libyang/src/diff.c:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - first
    - second
    - options
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - uint16_t
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 851
    functionDepth: 16
    functionLinenumber: 851
    functionLinenumberEnd: 855
    functionName: lyd_diff_siblings
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 9
    functionsReached:
    - lyd_diff
    linkageType: ''
    returnType: API
    signature: API lyd_diff_siblings(const struct lyd_node *first, const struct lyd_node
      *second, uint16_t options, struct lyd_node **diff)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyd_parent
      Src: /src/libyang/src/diff.c:871,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:872,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:873,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:873,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:874,1
    - Dst: lyd_diff_str2op
      Src: /src/libyang/src/diff.c:879,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:887,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:887,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:887,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - diff_node
    - op
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 864
    functionDepth: 2
    functionLinenumber: 864
    functionLinenumberEnd: 890
    functionName: lyd_diff_get_op
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 5
    functionsReached:
    - lyd_parent
    - LY_CHECK_ERR_RET
    - strcmp
    - LOGINT
    - LY_LIST_FOR
    - lyd_diff_str2op
    - lyd_get_meta_value
    - LYD_CTX
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_get_op(const struct lyd_node *diff_node, enum lyd_diff_op
      *op)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:911,1
    - Dst: LOGERR
      Src: /src/libyang/src/diff.c:922,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:922,1
    - Dst: lyd_insert_child
      Src: /src/libyang/src/diff.c:926,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:929,1
    - Dst: lyd_parent
      Src: /src/libyang/src/diff.c:929,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:931,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/diff.c:933,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:938,1
    - Dst: atoi
      Src: /src/libyang/src/diff.c:939,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:940,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:940,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:940,1
    - Dst: LYD_LIST_FOR_INST
      Src: /src/libyang/src/diff.c:944,1
    - Dst: LOGERR
      Src: /src/libyang/src/diff.c:952,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:952,1
    - Dst: lyd_find_sibling_val
      Src: /src/libyang/src/diff.c:957,1
    - Dst: LOGERR
      Src: /src/libyang/src/diff.c:959,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:959,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:968,1
    - Dst: lyd_insert_after
      Src: /src/libyang/src/diff.c:968,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:969,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:975,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:983,1
    - Dst: lyd_insert_after
      Src: /src/libyang/src/diff.c:983,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:986,1
    - Dst: lyd_insert_before
      Src: /src/libyang/src/diff.c:986,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 63
    argCount: 4
    argNames:
    - first_node
    - parent_node
    - new_node
    - userord_anchor
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (new_node)
      pos:
        line_end: 910
        line_start: 910
        source_file: /src/libyang/src/diff.c
    - condition: (new_node->prev == anchor)
      pos:
        line_end: 968
        line_start: 968
        source_file: /src/libyang/src/diff.c
    - condition: (parent_node && (parent_node->schema->nodetype == LYS_LIST))
      pos:
        line_end: 974
        line_start: 974
        source_file: /src/libyang/src/diff.c
    - condition: (!(*first_node)->parent || (lyd_parent(*first_node) == parent_node))
      pos:
        line_end: 928
        line_start: 928
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 992
      start: 902
    functionDepth: 7
    functionLinenumber: 902
    functionLinenumberEnd: 992
    functionName: lyd_diff_insert
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_insert_child
    - lysc_is_userordered
    - lyd_insert_before
    - lyd_insert_after
    - lyd_parent
    - LY_CHECK_ERR_RET
    - LOGERR
    - LYD_LIST_FOR_INST
    - LOGINT
    - lysc_is_dup_inst_list
    - lyd_find_sibling_val
    - LY_CHECK_RET
    - lyd_insert_sibling
    - LYD_CTX
    - atoi
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_insert(struct lyd_node **first_node, struct lyd_node
      *parent_node, struct lyd_node *new_node,\n        const char *userord_anchor)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1015,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1018,1
    - Dst: lyd_diff_get_op
      Src: /src/libyang/src/diff.c:1018,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:1021,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1024,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:1024,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1025,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1025,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1028,1
    - Dst: lyd_dup_single
      Src: /src/libyang/src/diff.c:1028,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1032,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1039,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1040,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1040,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1041,1
    - Dst: lyd_diff_insert
      Src: /src/libyang/src/diff.c:1045,1
    - Dst: lyd_diff_insert
      Src: /src/libyang/src/diff.c:1047,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/diff.c:1051,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1063,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:1063,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1064,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1064,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:1075,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1076,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1082,1
    - Dst: lyd_dup_single
      Src: /src/libyang/src/diff.c:1082,1
    - Dst: lyd_insert_child
      Src: /src/libyang/src/diff.c:1087,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/diff.c:1089,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/diff.c:1092,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1099,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:1099,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1100,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1100,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1104,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/diff.c:1108,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1113,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1113,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1116,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:1116,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1117,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1117,1
    - Dst: lyd_change_term
      Src: /src/libyang/src/diff.c:1121,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:1121,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1123,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1127,1
    - Dst: lyd_any_copy_value
      Src: /src/libyang/src/diff.c:1127,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1134,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1140,1
    - Dst: diff_cb
      Src: /src/libyang/src/diff.c:1140,1
    - Dst: lyd_diff_apply_r
      Src: /src/libyang/src/diff.c:1146,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/diff.c:1146,1
    - Dst: lyd_diff_dup_inst_free
      Src: /src/libyang/src/diff.c:1152,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 102
    argCount: 6
    argNames:
    - first_node
    - parent_node
    - diff_node
    - diff_cb
    - cb_data
    - dup_inst
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lyd_node*
    - lyd_diff_cb
    - void*
    - struct lyd_diff_dup_inst**
    assertStmts:
    - condition: (!parent_node)
      pos:
        line_end: 1103
        line_start: 1103
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 1154
      start: 1005
    functionDepth: 9
    functionLinenumber: 1005
    functionLinenumberEnd: 1154
    functionName: lyd_diff_apply_r
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_RET
    - diff_cb
    - LY_CHECK_RET
    - lyd_insert_sibling
    - lyd_dup_single
    - lyd_insert_child
    - lysc_is_userordered
    - lysc_is_dup_inst_list
    - lyd_diff_get_op
    - lyd_any_copy_value
    - assert
    - lyd_child_no_keys
    - lyd_find_meta
    - lyd_free_tree
    - lyd_change_term
    - lyd_diff_insert
    - lyd_get_meta_value
    - lyd_diff_find_match
    - LYD_CTX
    - LOGINT_RET
    - LOGINT
    - lyd_diff_apply_r
    - lyd_diff_dup_inst_free
    - lyd_node_child_p
    - lyd_get_value
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_apply_r(struct lyd_node **first_node, struct lyd_node
      *parent_node, const struct lyd_node *diff_node,\n        lyd_diff_cb diff_cb,
      void *cb_data, struct lyd_diff_dup_inst **dup_inst)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_diff_apply_r
      Src: /src/libyang/src/diff.c:1146,1
    - Dst: lyd_node_child_p
      Src: /src/libyang/src/diff.c:1146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1145
    functionDepth: 10
    functionLinenumber: 1145
    functionLinenumberEnd: 1150
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 79
    functionsReached:
    - lyd_node_child_p
    - lyd_diff_apply_r
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child_no_keys(diff_node), diff_child)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/diff.c:1165,1
    - Dst: lyd_diff_apply_r
      Src: /src/libyang/src/diff.c:1171,1
    - Dst: lyd_diff_dup_inst_free
      Src: /src/libyang/src/diff.c:1177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 5
    argNames:
    - data
    - diff
    - mod
    - diff_cb
    - cb_data
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lys_module*
    - lyd_diff_cb
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1156
    functionDepth: 10
    functionLinenumber: 1156
    functionLinenumberEnd: 1179
    functionName: lyd_diff_apply_module
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_owner_module
    - lyd_diff_apply_r
    - lyd_diff_dup_inst_free
    linkageType: ''
    returnType: API
    signature: "API lyd_diff_apply_module(struct lyd_node **data, const struct lyd_node
      *diff, const struct lys_module *mod,\n        lyd_diff_cb diff_cb, void *cb_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/diff.c:1165,1
    - Dst: lyd_diff_apply_r
      Src: /src/libyang/src/diff.c:1171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1164
    functionDepth: 10
    functionLinenumber: 1164
    functionLinenumberEnd: 1175
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 79
    functionsReached:
    - lyd_owner_module
    - lyd_diff_apply_r
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(diff, root)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_diff_apply_module
      Src: /src/libyang/src/diff.c:1184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - diff
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1181
    functionDepth: 11
    functionLinenumber: 1181
    functionLinenumberEnd: 1185
    functionName: lyd_diff_apply_all
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 8
    functionsReached:
    - lyd_diff_apply_module
    linkageType: ''
    returnType: API
    signature: API lyd_diff_apply_all(struct lyd_node **data, const struct lyd_node
      *diff)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1210,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - diff_match
    - cur_op
    - src_diff
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1195
    functionDepth: 1
    functionLinenumber: 1195
    functionLinenumberEnd: 1214
    functionName: lyd_diff_merge_none
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LYD_CTX
    - LOGINT_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_merge_none(struct lyd_node *diff_match, enum lyd_diff_op
      cur_op, const struct lyd_node *src_diff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1227,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:1228,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:1228,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1229,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - node
    - name
    argTypes:
    - struct lyd_node*
    - char*
    assertStmts:
    - condition: (0)
      pos:
        line_end: 1233
        line_start: 1233
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 1235
      start: 1222
    functionDepth: 5
    functionLinenumber: 1222
    functionLinenumberEnd: 1235
    functionName: lyd_diff_del_meta
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lyd_free_meta_single
    - LY_LIST_FOR
    - assert
    linkageType: ''
    returnType: void
    signature: void lyd_diff_del_meta(struct lyd_node *node, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1250,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:1251,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:1251,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1252,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:1257,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1257,1
    - Dst: lyd_diff_op2str
      Src: /src/libyang/src/diff.c:1257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - node
    - op
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1245
    functionDepth: 5
    functionLinenumber: 1245
    functionLinenumberEnd: 1258
    functionName: lyd_diff_change_op
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_new_meta
    - lyd_diff_op2str
    - strcmp
    - LY_LIST_FOR
    - LYD_CTX
    - lyd_free_meta_single
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_change_op(struct lyd_node *node, enum lyd_diff_op op)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/diff.c:1278,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1278,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1279,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1289,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:1289,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1290,1
    - Dst: lyd_diff_del_meta
      Src: /src/libyang/src/diff.c:1298,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1299,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1300,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1300,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1300,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1301,1
    - Dst: lyd_dup_meta_single
      Src: /src/libyang/src/diff.c:1301,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/diff.c:1305,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1306,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1306,1
    - Dst: lyd_change_term
      Src: /src/libyang/src/diff.c:1310,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:1310,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1311,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1311,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1316,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1317,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1317,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1317,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1318,1
    - Dst: lyd_value_compare
      Src: /src/libyang/src/diff.c:1319,1
    - Dst: strlen
      Src: /src/libyang/src/diff.c:1319,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1322,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1323,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1323,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/diff.c:1333,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1335,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1335,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1340,1
    - Dst: lyd_any_copy_value
      Src: /src/libyang/src/diff.c:1340,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1343,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1343,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1348,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:1348,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1351,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1351,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1354,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1362,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1363,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1363,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1363,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1364,1
    - Dst: lyd_dup_meta_single
      Src: /src/libyang/src/diff.c:1364,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1366,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1367,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1367,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1367,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1368,1
    - Dst: lyd_dup_meta_single
      Src: /src/libyang/src/diff.c:1368,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1372,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1372,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 76
    argCount: 3
    argNames:
    - diff_match
    - cur_op
    - src_diff
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    - struct lyd_node*
    assertStmts:
    - condition: (lysc_is_userordered(diff_match->schema))
      pos:
        line_end: 1288
        line_start: 1288
        source_file: /src/libyang/src/diff.c
    - condition: (lysc_is_userordered(diff_match->schema) && (diff_match->schema->nodetype
        == LYS_LIST))
      pos:
        line_end: 1347
        line_start: 1347
        source_file: /src/libyang/src/diff.c
    - condition: (mod)
      pos:
        line_end: 1278
        line_start: 1278
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 1376
      start: 1268
    functionDepth: 9
    functionLinenumber: 1268
    functionLinenumberEnd: 1376
    functionName: lyd_diff_merge_replace
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - lyd_diff_change_op
    - lyd_compare_single
    - lyd_free_meta_single
    - lyd_dup_meta_single
    - lysc_is_userordered
    - lysc_is_dup_inst_list
    - lyd_any_copy_value
    - assert
    - lyd_find_meta
    - lyd_change_term
    - lyd_diff_del_meta
    - lyd_get_meta_value
    - LYD_CTX
    - LOGINT_RET
    - LOGINT
    - ly_ctx_get_module_latest
    - lyd_get_value
    - lyd_value_compare
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_merge_replace(struct lyd_node *diff_match, enum lyd_diff_op
      cur_op, const struct lyd_node *src_diff)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:1401,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1403,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1413,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1414,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1415,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1415,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1415,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:1419,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1419,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1419,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1421,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1421,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1424,1
    - Dst: lyd_dup_meta_single
      Src: /src/libyang/src/diff.c:1424,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1427,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1427,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1430,1
    - Dst: struct lysc_node_leaf*::dflt::realtype::plugin::compare
      Src: /src/libyang/src/diff.c:1438,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1441,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1441,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/diff.c:1442,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1444,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1444,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1447,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1447,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1450,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:1450,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1450,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:1451,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1454,1
    - Dst: lyd_change_term
      Src: /src/libyang/src/diff.c:1454,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:1454,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1458,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1458,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1463,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:1463,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1463,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1472,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:1472,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1473,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1473,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1478,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1478,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 4
    argNames:
    - diff_match
    - cur_op
    - src_diff
    - options
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    - struct lyd_node*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1387
    functionDepth: 6
    functionLinenumber: 1387
    functionLinenumberEnd: 1482
    functionName: lyd_diff_merge_create
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - lyd_diff_change_op
    - lyd_compare_single
    - lyd_free_meta_single
    - lyd_dup_meta_single
    - lysc_is_userordered
    - lysc_is_dup_inst_list
    - lyd_child_no_keys
    - lyd_find_meta
    - lyd_change_term
    - LY_LIST_FOR
    - lyd_get_meta_value
    - LYD_CTX
    - lyd_new_meta
    - LOGINT_RET
    - strcmp
    - LOGINT
    - struct lysc_node_leaf*::dflt::realtype::plugin::compare
    - lyd_get_value
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_merge_create(struct lyd_node *diff_match, enum lyd_diff_op
      cur_op, const struct lyd_node *src_diff, uint16_t options)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1500,1
    - Dst: lyd_compare_single
      Src: /src/libyang/src/diff.c:1500,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1500,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1500,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1505,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1505,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1509,1
    - Dst: lyd_new_meta
      Src: /src/libyang/src/diff.c:1509,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1509,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1511,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1514,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1514,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:1520,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1521,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1529,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1532,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1533,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1533,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1533,1
    - Dst: lyd_change_term
      Src: /src/libyang/src/diff.c:1534,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1534,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1535,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1535,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1539,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1540,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1540,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1540,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1545,1
    - Dst: lyd_diff_del_meta
      Src: /src/libyang/src/diff.c:1549,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1554,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1554,1
    - Dst: LY_LIST_FOR_SAFE
      Src: /src/libyang/src/diff.c:1557,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:1557,1
    - Dst: lyd_find_sibling_first
      Src: /src/libyang/src/diff.c:1558,1
    - Dst: lyd_child
      Src: /src/libyang/src/diff.c:1558,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/diff.c:1559,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1565,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1565,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 3
    argNames:
    - diff_match
    - cur_op
    - src_diff
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    - struct lyd_node*
    assertStmts:
    - condition: (diff_match->schema->nodetype == LYS_LEAF)
      pos:
        line_end: 1528
        line_start: 1528
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 1569
      start: 1492
    functionDepth: 7
    functionLinenumber: 1492
    functionLinenumberEnd: 1569
    functionName: lyd_diff_merge_delete
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - LY_CHECK_RET
    - lyd_diff_change_op
    - lyd_compare_single
    - lyd_find_sibling_first
    - lyd_free_meta_single
    - lysc_is_userordered
    - lysc_is_dup_inst_list
    - lyd_child_no_keys
    - assert
    - lyd_find_meta
    - lyd_free_tree
    - lyd_change_term
    - lyd_diff_del_meta
    - lyd_get_meta_value
    - LYD_CTX
    - lyd_new_meta
    - LOGINT_RET
    - LOGINT
    - LY_LIST_FOR_SAFE
    - lyd_child
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_merge_delete(struct lyd_node *diff_match, enum lyd_diff_op
      cur_op, const struct lyd_node *src_diff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1514,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1513
    functionDepth: 6
    functionLinenumber: 1513
    functionLinenumberEnd: 1515
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 82
    functionsReached:
    - LY_CHECK_RET
    - lyd_diff_change_op
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child_no_keys(diff_match), child)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:1586,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1588,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:1592,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/diff.c:1594,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1594,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1595,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1598,1
    - Dst: lyd_diff_get_op
      Src: /src/libyang/src/diff.c:1598,1
    - Dst: lysc_is_userordered
      Src: /src/libyang/src/diff.c:1600,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1602,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1614,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1615,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1616,1
    - Dst: lyd_compare_meta
      Src: /src/libyang/src/diff.c:1618,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1620,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1621,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1624,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1639,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1640,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1641,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:1644,1
    - Dst: strcmp
      Src: /src/libyang/src/diff.c:1644,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 1
    argNames:
    - diff
    argTypes:
    - struct lyd_node*
    assertStmts:
    - condition: (mod)
      pos:
        line_end: 1594
        line_start: 1594
        source_file: /src/libyang/src/diff.c
    - condition: (orig_val_meta && val_meta)
      pos:
        line_end: 1615
        line_start: 1615
        source_file: /src/libyang/src/diff.c
    - condition: (diff)
      pos:
        line_end: 1585
        line_start: 1585
        source_file: /src/libyang/src/diff.c
    - condition: (meta)
      pos:
        line_end: 1639
        line_start: 1639
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 1655
      start: 1577
    functionDepth: 6
    functionLinenumber: 1577
    functionLinenumberEnd: 1655
    functionName: lyd_diff_is_redundant
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - assert
    - lysc_is_userordered
    - lyd_find_meta
    - strcmp
    - ly_ctx_get_module_latest
    - lysc_is_dup_inst_list
    - LY_CHECK_RET
    - lyd_diff_get_op
    - lyd_get_meta_value
    - lyd_diff_change_op
    - lyd_compare_meta
    - LYD_CTX
    - lyd_free_meta_single
    - lyd_child_no_keys
    linkageType: ''
    returnType: int
    signature: int lyd_diff_is_redundant(struct lyd_node *diff)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1679,1
    - Dst: lyd_diff_get_op
      Src: /src/libyang/src/diff.c:1679,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1682,1
    - Dst: lyd_diff_find_match
      Src: /src/libyang/src/diff.c:1682,1
    - Dst: lyd_child_no_keys
      Src: /src/libyang/src/diff.c:1682,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1686,1
    - Dst: lyd_diff_get_op
      Src: /src/libyang/src/diff.c:1686,1
    - Dst: lyd_diff_merge_replace
      Src: /src/libyang/src/diff.c:1691,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1694,1
    - Dst: lyd_diff_merge_create
      Src: /src/libyang/src/diff.c:1699,1
    - Dst: lyd_diff_merge_delete
      Src: /src/libyang/src/diff.c:1702,1
    - Dst: assert
      Src: /src/libyang/src/diff.c:1706,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1706,1
    - Dst: lyd_diff_merge_none
      Src: /src/libyang/src/diff.c:1707,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/diff.c:1710,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1710,1
    - Dst: LOGERR
      Src: /src/libyang/src/diff.c:1713,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1713,1
    - Dst: lyd_diff_op2str
      Src: /src/libyang/src/diff.c:1713,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1719,1
    - Dst: diff_cb
      Src: /src/libyang/src/diff.c:1719,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:1727,1
    - Dst: lyd_diff_merge_r
      Src: /src/libyang/src/diff.c:1730,1
    - Dst: lyd_diff_dup_inst_free
      Src: /src/libyang/src/diff.c:1735,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1736,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1741,1
    - Dst: lyd_dup_single
      Src: /src/libyang/src/diff.c:1741,1
    - Dst: lyd_insert_sibling
      Src: /src/libyang/src/diff.c:1746,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1750,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1750,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1754,1
    - Dst: diff_cb
      Src: /src/libyang/src/diff.c:1754,1
    - Dst: lyd_diff_is_redundant
      Src: /src/libyang/src/diff.c:1762,1
    - Dst: lyd_free_tree
      Src: /src/libyang/src/diff.c:1766,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 63
    argCount: 7
    argNames:
    - src_diff
    - diff_parent
    - diff_cb
    - cb_data
    - dup_inst
    - options
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node*
    - lyd_diff_cb
    - void*
    - struct lyd_diff_dup_inst**
    - uint16_t
    - struct lyd_node**
    assertStmts:
    - condition: ((src_diff->schema->nodetype != LYS_LIST) || !lysc_is_dup_inst_list(src_diff->schema))
      pos:
        line_end: 1705
        line_start: 1705
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 1770
      start: 1669
    functionDepth: 10
    functionLinenumber: 1669
    functionLinenumberEnd: 1770
    functionName: lyd_diff_merge_r
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 1
    functionsReached:
    - lyd_diff_merge_none
    - lyd_diff_merge_replace
    - diff_cb
    - LOGERR
    - LY_CHECK_RET
    - lyd_diff_change_op
    - lyd_insert_sibling
    - lyd_dup_single
    - lysc_is_dup_inst_list
    - lyd_diff_get_op
    - lyd_diff_merge_delete
    - assert
    - lyd_child_no_keys
    - lyd_diff_merge_create
    - lyd_diff_op2str
    - lyd_free_tree
    - lyd_diff_find_match
    - LYD_CTX
    - lyd_diff_merge_r
    - LOGINT_RET
    - lyd_diff_dup_inst_free
    - lyd_diff_is_redundant
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyd_diff_merge_r(const struct lyd_node *src_diff, struct lyd_node
      *diff_parent, lyd_diff_cb diff_cb, void *cb_data,\n        struct lyd_diff_dup_inst
      **dup_inst, uint16_t options, struct lyd_node **diff)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_diff_merge_r
      Src: /src/libyang/src/diff.c:1730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1729
    functionDepth: 11
    functionLinenumber: 1729
    functionLinenumberEnd: 1734
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 82
    functionsReached:
    - lyd_diff_merge_r
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(lyd_child_no_keys(src_diff), child)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/diff.c:1781,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1787,1
    - Dst: lyd_diff_merge_r
      Src: /src/libyang/src/diff.c:1787,1
    - Dst: lyd_diff_dup_inst_free
      Src: /src/libyang/src/diff.c:1791,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - diff
    - src_diff
    - mod
    - diff_cb
    - cb_data
    - options
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lys_module*
    - lyd_diff_cb
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1793
      start: 1772
    functionDepth: 11
    functionLinenumber: 1772
    functionLinenumberEnd: 1793
    functionName: lyd_diff_merge_module
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_diff_dup_inst_free
    - lyd_owner_module
    - lyd_diff_merge_r
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: API
    signature: "API lyd_diff_merge_module(struct lyd_node **diff, const struct lyd_node
      *src_diff, const struct lys_module *mod,\n        lyd_diff_cb diff_cb, void
      *cb_data, uint16_t options)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_owner_module
      Src: /src/libyang/src/diff.c:1781,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1787,1
    - Dst: lyd_diff_merge_r
      Src: /src/libyang/src/diff.c:1787,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1780
    functionDepth: 11
    functionLinenumber: 1780
    functionLinenumberEnd: 1788
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 82
    functionsReached:
    - lyd_owner_module
    - lyd_diff_merge_r
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: void LY_LIST_FOR(src_diff, src_root)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_diff_merge_r
      Src: /src/libyang/src/diff.c:1806,1
    - Dst: lyd_diff_dup_inst_free
      Src: /src/libyang/src/diff.c:1807,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - diff_first
    - diff_parent
    - src_sibling
    - diff_cb
    - cb_data
    - options
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - struct lyd_node*
    - lyd_diff_cb
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1795
    functionDepth: 11
    functionLinenumber: 1795
    functionLinenumberEnd: 1809
    functionName: lyd_diff_merge_tree
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_diff_merge_r
    - lyd_diff_dup_inst_free
    linkageType: ''
    returnType: API
    signature: "API lyd_diff_merge_tree(struct lyd_node **diff_first, struct lyd_node
      *diff_parent, const struct lyd_node *src_sibling,\n        lyd_diff_cb diff_cb,
      void *cb_data, uint16_t options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_diff_merge_module
      Src: /src/libyang/src/diff.c:1814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - diff
    - src_diff
    - options
    argTypes:
    - struct lyd_node**
    - struct lyd_node*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1811
    functionDepth: 12
    functionLinenumber: 1811
    functionLinenumberEnd: 1815
    functionName: lyd_diff_merge_all
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 2
    functionsReached:
    - lyd_diff_merge_module
    linkageType: ''
    returnType: API
    signature: API lyd_diff_merge_all(struct lyd_node **diff, const struct lyd_node
      *src_diff, uint16_t options)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/diff.c:1826,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1828,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1829,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1829,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1829,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1832,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:1836,1
    - Dst: lyd_get_value
      Src: /src/libyang/src/diff.c:1836,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1838,1
    - Dst: lyd_any_value_str
      Src: /src/libyang/src/diff.c:1838,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1844,1
    - Dst: lyd_change_term
      Src: /src/libyang/src/diff.c:1844,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1847,1
    - Dst: lyd_any_copy_value
      Src: /src/libyang/src/diff.c:1847,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1850,1
    - Dst: lyd_change_meta
      Src: /src/libyang/src/diff.c:1850,1
    - Dst: free
      Src: /src/libyang/src/diff.c:1853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - node
    - mod
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    assertStmts:
    - condition: (node->schema->nodetype & (LYS_LEAF | LYS_ANYDATA))
      pos:
        line_end: 1825
        line_start: 1825
        source_file: /src/libyang/src/diff.c
    constantsTouched: []
    func_position:
      end: 1855
      start: 1817
    functionDepth: 13
    functionLinenumber: 1817
    functionLinenumberEnd: 1855
    functionName: lyd_diff_reverse_value
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_RET
    - lyd_find_meta
    - lyd_any_value_str
    - lyd_change_meta
    - lyd_change_term
    - LOGINT
    - free
    - strdup
    - LY_CHECK_RET
    - lyd_get_meta_value
    - LY_CHECK_GOTO
    - lyd_get_value
    - LYD_CTX
    - lyd_any_copy_value
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_reverse_value(struct lyd_node *node, const struct lys_module
      *mod)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1863,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1864,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1864,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1884,1
    - Dst: lyd_change_meta
      Src: /src/libyang/src/diff.c:1884,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - node
    - mod
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1857
    functionDepth: 2
    functionLinenumber: 1857
    functionLinenumberEnd: 1887
    functionName: lyd_diff_reverse_default
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_find_meta
    - LY_CHECK_ERR_RET
    - LOGINT
    - LY_CHECK_RET
    - lyd_change_meta
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_reverse_default(struct lyd_node *node, const struct
      lys_module *mod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1897,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1898,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1898,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1898,1
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1900,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1901,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1901,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1901,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1904,1
    - Dst: strdup
      Src: /src/libyang/src/diff.c:1907,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1907,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1910,1
    - Dst: lyd_change_meta
      Src: /src/libyang/src/diff.c:1910,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1911,1
    - Dst: lyd_change_meta
      Src: /src/libyang/src/diff.c:1911,1
    - Dst: free
      Src: /src/libyang/src/diff.c:1914,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 4
    argNames:
    - node
    - mod
    - name1
    - name2
    argTypes:
    - struct lyd_node*
    - struct lys_module*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1916
      start: 1889
    functionDepth: 2
    functionLinenumber: 1889
    functionLinenumberEnd: 1916
    functionName: lyd_diff_reverse_meta
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_find_meta
    - LY_CHECK_ERR_RET
    - LOGINT
    - free
    - strdup
    - lyd_get_meta_value
    - LY_CHECK_GOTO
    - LYD_CTX
    - lyd_change_meta
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_reverse_meta(struct lyd_node *node, const struct lys_module
      *mod, const char *name1, const char *name2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1932,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: lyd_diff_str2op
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1935,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/diff.c:1938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - diff
    - op
    argTypes:
    - struct lyd_node*
    - enum lyd_diff_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1925
    functionDepth: 5
    functionLinenumber: 1925
    functionLinenumberEnd: 1942
    functionName: lyd_diff_reverse_remove_op_r
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_find_meta
    - LY_CHECK_ERR_RET
    - LYD_TREE_DFS_END
    - LOGINT
    - lyd_diff_str2op
    - lyd_get_meta_value
    - LYD_CTX
    - lyd_free_meta_single
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyd_diff_reverse_remove_op_r(struct lyd_node *diff, enum lyd_diff_op
      op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_find_meta
      Src: /src/libyang/src/diff.c:1932,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: lyd_diff_str2op
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: lyd_get_meta_value
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1934,1
    - Dst: lyd_free_meta_single
      Src: /src/libyang/src/diff.c:1935,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/diff.c:1938,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1931
    functionDepth: 5
    functionLinenumber: 1931
    functionLinenumberEnd: 1939
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 1
    functionsReached:
    - lyd_find_meta
    - LY_CHECK_ERR_RET
    - LYD_TREE_DFS_END
    - LOGINT
    - lyd_diff_str2op
    - lyd_get_meta_value
    - LYD_CTX
    - lyd_free_meta_single
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(diff, elem)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/diff.c:1952,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/diff.c:1960,1
    - Dst: lyd_dup_siblings
      Src: /src/libyang/src/diff.c:1960,1
    - Dst: ly_ctx_get_module_latest
      Src: /src/libyang/src/diff.c:1963,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1963,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/diff.c:1964,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:1964,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:1964,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1966,1
    - Dst: lysc_is_key
      Src: /src/libyang/src/diff.c:1969,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1971,1
    - Dst: lyd_diff_get_op
      Src: /src/libyang/src/diff.c:1971,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1976,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1976,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1979,1
    - Dst: lyd_child
      Src: /src/libyang/src/diff.c:1979,1
    - Dst: lyd_diff_reverse_remove_op_r
      Src: /src/libyang/src/diff.c:1980,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1987,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1987,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1990,1
    - Dst: lyd_child
      Src: /src/libyang/src/diff.c:1990,1
    - Dst: lyd_diff_reverse_remove_op_r
      Src: /src/libyang/src/diff.c:1991,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2000,1
    - Dst: lyd_diff_reverse_value
      Src: /src/libyang/src/diff.c:2000,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2001,1
    - Dst: lyd_diff_reverse_default
      Src: /src/libyang/src/diff.c:2001,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2006,1
    - Dst: lyd_diff_reverse_value
      Src: /src/libyang/src/diff.c:2006,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2010,1
    - Dst: lyd_diff_reverse_default
      Src: /src/libyang/src/diff.c:2010,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:2011,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2012,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2012,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2014,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2014,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:2019,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2020,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2020,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2022,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2022,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:2026,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:2026,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2036,1
    - Dst: lyd_diff_reverse_default
      Src: /src/libyang/src/diff.c:2036,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/diff.c:2046,1
    - Dst: lyd_free_siblings
      Src: /src/libyang/src/diff.c:2052,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 81
    argCount: 2
    argNames:
    - src_diff
    - diff
    argTypes:
    - struct lyd_node*
    - struct lyd_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 1944
    functionDepth: 14
    functionLinenumber: 1944
    functionLinenumberEnd: 2056
    functionName: lyd_diff_reverse_all
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 0
    functionsReached:
    - lyd_diff_reverse_default
    - lyd_dup_siblings
    - LYD_TREE_DFS_END
    - LY_CHECK_RET
    - lyd_diff_change_op
    - LY_CHECK_GOTO
    - lyd_free_siblings
    - LY_CHECK_ERR_GOTO
    - lysc_is_key
    - lysc_is_dup_inst_list
    - lyd_diff_get_op
    - lyd_diff_reverse_remove_op_r
    - LY_CHECK_ARG_RET
    - lyd_diff_reverse_value
    - LY_LIST_FOR
    - LYD_CTX
    - lyd_diff_reverse_meta
    - LOGINT
    - ly_ctx_get_module_latest
    - lyd_child
    linkageType: ''
    returnType: API
    signature: API lyd_diff_reverse_all(const struct lyd_node *src_diff, struct lyd_node
      **diff)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: lysc_is_key
      Src: /src/libyang/src/diff.c:1969,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1971,1
    - Dst: lyd_diff_get_op
      Src: /src/libyang/src/diff.c:1971,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1976,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1976,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1979,1
    - Dst: lyd_child
      Src: /src/libyang/src/diff.c:1979,1
    - Dst: lyd_diff_reverse_remove_op_r
      Src: /src/libyang/src/diff.c:1980,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:1987,1
    - Dst: lyd_diff_change_op
      Src: /src/libyang/src/diff.c:1987,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/diff.c:1990,1
    - Dst: lyd_child
      Src: /src/libyang/src/diff.c:1990,1
    - Dst: lyd_diff_reverse_remove_op_r
      Src: /src/libyang/src/diff.c:1991,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2000,1
    - Dst: lyd_diff_reverse_value
      Src: /src/libyang/src/diff.c:2000,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2001,1
    - Dst: lyd_diff_reverse_default
      Src: /src/libyang/src/diff.c:2001,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2006,1
    - Dst: lyd_diff_reverse_value
      Src: /src/libyang/src/diff.c:2006,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2010,1
    - Dst: lyd_diff_reverse_default
      Src: /src/libyang/src/diff.c:2010,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:2011,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2012,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2012,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2014,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2014,1
    - Dst: lysc_is_dup_inst_list
      Src: /src/libyang/src/diff.c:2019,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2020,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2020,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2022,1
    - Dst: lyd_diff_reverse_meta
      Src: /src/libyang/src/diff.c:2022,1
    - Dst: LOGINT
      Src: /src/libyang/src/diff.c:2026,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/diff.c:2026,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/diff.c:2036,1
    - Dst: lyd_diff_reverse_default
      Src: /src/libyang/src/diff.c:2036,1
    - Dst: LYD_TREE_DFS_END
      Src: /src/libyang/src/diff.c:2046,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 1967
    functionDepth: 14
    functionLinenumber: 1967
    functionLinenumberEnd: 2047
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/diff.c
    functionUses: 1
    functionsReached:
    - lysc_is_key
    - lyd_diff_reverse_meta
    - lyd_diff_reverse_default
    - lyd_diff_reverse_value
    - LYD_TREE_DFS_END
    - LOGINT
    - LY_LIST_FOR
    - lysc_is_dup_inst_list
    - lyd_diff_get_op
    - lyd_diff_change_op
    - lyd_child
    - LY_CHECK_GOTO
    - LYD_CTX
    - lyd_diff_reverse_remove_op_r
    linkageType: ''
    returnType: void
    signature: void LYD_TREE_DFS_BEGIN(root, elem)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/schema_compile_amend.c:64,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_amend.c:64,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:66,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:78,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:89,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:94,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:99,1
    - Dst: lys_schema_node_get_module
      Src: /src/libyang/src/schema_compile_amend.c:104,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:106,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:114,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_amend.c:114,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:120,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 6
    argNames:
    - ctx
    - nodeid
    - abs
    - mod_set
    - expr
    - target_mod
    argTypes:
    - struct lysc_ctx*
    - char*
    - ly_bool
    - struct ly_set*
    - struct lyxp_expr**
    - struct lys_module**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 53
    functionDepth: 12
    functionLinenumber: 53
    functionLinenumberEnd: 130
    functionName: lys_nodeid_mod_check
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - lyxp_expr_free
    - LOGVAL
    - ly_set_add
    - LY_CHECK_GOTO
    - lys_schema_node_get_module
    - lyxp_expr_parse
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_nodeid_mod_check(struct lysc_ctx *ctx, const char *nodeid,
      ly_bool abs, struct ly_set *mod_set,\n        struct lyxp_expr **expr, struct
      lys_module **target_mod)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:156,1
    - Dst: lys_schema_node_get_module
      Src: /src/libyang/src/schema_compile_amend.c:160,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:162,1
    - Dst: lys_schema_node_get_module
      Src: /src/libyang/src/schema_compile_amend.c:163,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:165,1
    - Dst: strncmp
      Src: /src/libyang/src/schema_compile_amend.c:173,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - ctx
    - exp1
    - exp1_pmod
    - exp2
    - exp2_pmod
    argTypes:
    - struct ly_ctx*
    - struct lyxp_expr*
    - struct lysp_module*
    - struct lyxp_expr*
    - struct lysp_module*
    assertStmts:
    - condition: (exp1->tokens[i] == exp2->tokens[i])
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/libyang/src/schema_compile_amend.c
    - condition: (mod1)
      pos:
        line_end: 161
        line_start: 161
        source_file: /src/libyang/src/schema_compile_amend.c
    - condition: (mod2)
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/libyang/src/schema_compile_amend.c
    constantsTouched: []
    func_position:
      end: 180
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 180
    functionName: lys_abs_schema_nodeid_match
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - lys_schema_node_get_module
    - strncmp
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: "ly_bool lys_abs_schema_nodeid_match(const struct ly_ctx *ctx, const
      struct lyxp_expr *exp1, const struct lysp_module *exp1_pmod,\n        const
      struct lyxp_expr *exp2, const struct lysp_module *exp2_pmod)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:195,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:196,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:197,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:200,1
    - Dst: lys_nodeid_mod_check
      Src: /src/libyang/src/schema_compile_amend.c:200,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:203,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:204,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_amend.c:204,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:205,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_amend.c:205,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:213,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:214,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:217,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:218,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:219,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:222,1
    - Dst: lys_nodeid_mod_check
      Src: /src/libyang/src/schema_compile_amend.c:222,1
    - Dst: lys_abs_schema_nodeid_match
      Src: /src/libyang/src/schema_compile_amend.c:227,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:236,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:237,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_amend.c:237,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:238,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_amend.c:238,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:247,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:252,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:255,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:256,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:261,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:262,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:265,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:266,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 54
    argCount: 3
    argNames:
    - ctx
    - uses_p
    - ctx_node
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node_uses*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 182
    functionDepth: 13
    functionLinenumber: 182
    functionLinenumberEnd: 268
    functionName: lys_precompile_uses_augments_refines
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyxp_expr_free
    - LY_LIST_FOR
    - LY_ARRAY_NEW_GOTO
    - lys_nodeid_mod_check
    - LY_ARRAY_FOR
    - lysc_update_path
    - ly_set_add
    - LY_CHECK_GOTO
    - ly_set_erase
    - lys_abs_schema_nodeid_match
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_precompile_uses_augments_refines(struct lysc_ctx *ctx, struct
      lysp_node_uses *uses_p, const struct lysc_node *ctx_node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:276,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - ext
    - orig_ext
    argTypes:
    - struct ly_ctx*
    - struct lysp_ext_instance*
    - struct lysp_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: lysp_ext_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_ext_dup(const struct ly_ctx *ctx, struct lysp_ext_instance
      *ext, const struct lysp_ext_instance *orig_ext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:288,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:290,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:291,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:292,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:293,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - restr
    - orig_restr
    argTypes:
    - struct ly_ctx*
    - struct lysp_restr*
    - struct lysp_restr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 298
    functionName: lysp_restr_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    - DUP_ARRAY
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_restr_dup(const struct ly_ctx *ctx, struct lysp_restr *restr,
      const struct lysp_restr *orig_restr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - str
    - orig_str
    argTypes:
    - struct ly_ctx*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 308
    functionName: lysp_string_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_string_dup(const struct ly_ctx *ctx, const char **str,
      const char **orig_str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:319,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - qname
    - orig_qname
    argTypes:
    - struct ly_ctx*
    - struct lysp_qname*
    - struct lysp_qname*
    assertStmts:
    - condition: (orig_qname->mod)
      pos:
        line_end: 319
        line_start: 319
        source_file: /src/libyang/src/schema_compile_amend.c
    constantsTouched: []
    func_position:
      end: 324
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 324
    functionName: lysp_qname_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - DUP_STRING
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_qname_dup(const struct ly_ctx *ctx, struct lysp_qname *qname,
      const struct lysp_qname *orig_qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:331,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:332,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:333,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:335,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - enm
    - orig_enm
    argTypes:
    - struct ly_ctx*
    - struct lysp_type_enum*
    - struct lysp_type_enum*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 340
    functionName: lysp_type_enum_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    - DUP_ARRAY
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_type_enum_dup(const struct ly_ctx *ctx, struct lysp_type_enum
      *enm, const struct lysp_type_enum *orig_enm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:347,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:350,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_amend.c:351,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_amend.c:351,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:352,1
    - Dst: lysp_restr_dup
      Src: /src/libyang/src/schema_compile_amend.c:352,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:356,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/schema_compile_amend.c:357,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_amend.c:357,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:358,1
    - Dst: lysp_restr_dup
      Src: /src/libyang/src/schema_compile_amend.c:358,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:361,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:362,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:363,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:364,1
    - Dst: lyxp_expr_dup
      Src: /src/libyang/src/schema_compile_amend.c:364,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:365,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:366,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - type
    - orig_type
    argTypes:
    - struct ly_ctx*
    - struct lysp_type*
    - struct lysp_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 342
    functionDepth: 5
    functionLinenumber: 342
    functionLinenumberEnd: 378
    functionName: lysp_type_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_ARRAY
    - LY_CHECK_ERR_RET
    - DUP_STRING_GOTO
    - lysp_restr_dup
    - LY_CHECK_RET
    - lyxp_expr_dup
    - LY_CHECK_GOTO
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_type_dup(const struct ly_ctx *ctx, struct lysp_type *type,
      const struct lysp_type *orig_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:385,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:386,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:387,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - when
    - orig_when
    argTypes:
    - struct ly_ctx*
    - struct lysp_when*
    - struct lysp_when*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 391
    functionName: lysp_when_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    - DUP_ARRAY
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_when_dup(const struct ly_ctx *ctx, struct lysp_when *when,
      const struct lysp_when *orig_when)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:402,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:403,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:404,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:405,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - node
    - orig
    argTypes:
    - struct ly_ctx*
    - struct lysp_node*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 409
    functionName: lysp_node_common_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    - DUP_ARRAY
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_node_common_dup(const struct ly_ctx *ctx, struct lysp_node
      *node, const struct lysp_node *orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - ORIG
    - ','
    - NEW
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 417
    functionName: DUP_PWHEN
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUP_PWHEN(CTX, ORIG, NEW)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:443,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:447,1
    - Dst: lysp_node_common_dup
      Src: /src/libyang/src/schema_compile_amend.c:447,1
    - Dst: DUP_PWHEN
      Src: /src/libyang/src/schema_compile_amend.c:455,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:456,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:457,1
    - Dst: DUP_PWHEN
      Src: /src/libyang/src/schema_compile_amend.c:464,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:465,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:466,1
    - Dst: lysp_type_dup
      Src: /src/libyang/src/schema_compile_amend.c:466,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:467,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:468,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:468,1
    - Dst: DUP_PWHEN
      Src: /src/libyang/src/schema_compile_amend.c:474,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:475,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:476,1
    - Dst: lysp_type_dup
      Src: /src/libyang/src/schema_compile_amend.c:476,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:477,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:478,1
    - Dst: DUP_PWHEN
      Src: /src/libyang/src/schema_compile_amend.c:486,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:487,1
    - Dst: DUP_STRING
      Src: /src/libyang/src/schema_compile_amend.c:488,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:490,1
    - Dst: DUP_PWHEN
      Src: /src/libyang/src/schema_compile_amend.c:498,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:500,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:500,1
    - Dst: DUP_PWHEN
      Src: /src/libyang/src/schema_compile_amend.c:506,1
    - Dst: DUP_PWHEN
      Src: /src/libyang/src/schema_compile_amend.c:514,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:515,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:531,1
    - Dst: DUP_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:538,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/schema_compile_amend.c:542,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 81
    argCount: 3
    argNames:
    - ctx
    - node
    - orig
    argTypes:
    - struct ly_ctx*
    - struct lysp_node*
    - struct lysp_node*
    assertStmts:
    - condition: "(orig->nodetype & (LYS_CONTAINER | LYS_LEAF | LYS_LEAFLIST | LYS_LIST
        | LYS_CHOICE | LYS_CASE | LYS_ANYDATA |\n            LYS_RPC | LYS_ACTION
        | LYS_NOTIF))"
      pos:
        line_end: 443
        line_start: 442
        source_file: /src/libyang/src/schema_compile_amend.c
    constantsTouched: []
    func_position:
      end: 546
      start: 418
    functionDepth: 6
    functionLinenumber: 418
    functionLinenumberEnd: 546
    functionName: lysp_node_dup
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - DUP_STRING
    - LOGINT_RET
    - LY_CHECK_RET
    - lysp_node_common_dup
    - DUP_PWHEN
    - lysp_type_dup
    - lysp_qname_dup
    - DUP_ARRAY
    - assert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_node_dup(const struct ly_ctx *ctx, struct lysp_node *node,
      const struct lysp_node *orig)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:570,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:573,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:576,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:579,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:582,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:585,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:589,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:593,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:597,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:600,1
    - Dst: LOGINT_RET
      Src: /src/libyang/src/schema_compile_amend.c:603,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:605,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_amend.c:605,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:606,1
    - Dst: lysp_node_dup
      Src: /src/libyang/src/schema_compile_amend.c:606,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_amend.c:631,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 71
    argCount: 4
    argNames:
    - ctx
    - pnode
    - with_links
    - dup_p
    argTypes:
    - struct ly_ctx*
    - struct lysp_node*
    - ly_bool
    - struct lysp_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 557
    functionDepth: 7
    functionLinenumber: 557
    functionLinenumberEnd: 636
    functionName: lysp_dup_single
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - LOGINT_RET
    - free
    - lysp_node_dup
    - LY_CHECK_GOTO
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lysp_dup_single(const struct ly_ctx *ctx, const struct lysp_node
      *pnode, ly_bool with_links, struct lysp_node **dup_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - AMEND_STR
    - ','
    - OP_STR
    - ','
    - PROPERTY
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 643
    functionName: AMEND_WRONG_NODETYPE
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AMEND_WRONG_NODETYPE(AMEND_STR, OP_STR, PROPERTY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ARRAY
    - ','
    - MAX
    - ','
    - AMEND_STR
    - ','
    - PROPERTY
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 651
    functionName: AMEND_CHECK_CARDINALITY
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AMEND_CHECK_CARDINALITY(ARRAY, MAX, AMEND_STR, PROPERTY)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: AMEND_CHECK_CARDINALITY
      Src: /src/libyang/src/schema_compile_amend.c:673,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:675,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:676,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:676,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:680,1
    - Dst: FREE_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:686,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:688,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:689,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:690,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:690,1
    - Dst: AMEND_CHECK_CARDINALITY
      Src: /src/libyang/src/schema_compile_amend.c:694,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:696,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:697,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:697,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:700,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:706,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:707,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:712,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:713,1
    - Dst: LOGWRN
      Src: /src/libyang/src/schema_compile_amend.c:719,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:737,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:750,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:753,1
    - Dst: DUP_STRING_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:754,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:769,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:772,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:773,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:774,1
    - Dst: lysp_restr_dup
      Src: /src/libyang/src/schema_compile_amend.c:774,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:788,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:804,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:823,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:826,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:827,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:828,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:828,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 136
    argCount: 3
    argNames:
    - ctx
    - rfn
    - target
    argTypes:
    - struct lysc_ctx*
    - struct lysp_refine*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 660
    functionDepth: 3
    functionLinenumber: 660
    functionLinenumberEnd: 837
    functionName: lys_apply_refine
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - AMEND_CHECK_CARDINALITY
    - DUP_STRING_GOTO
    - lysp_restr_dup
    - LY_ARRAY_NEW_GOTO
    - FREE_ARRAY
    - lydict_remove
    - LOGVAL
    - LY_ARRAY_FOR
    - AMEND_WRONG_NODETYPE
    - LY_CHECK_GOTO
    - LOGWRN
    - lysp_qname_dup
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_apply_refine(struct lysc_ctx *ctx, struct lysp_refine *rfn,
      struct lysp_node *target)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - ','
    - PROPERTY
    - ','
    - VALUEMEMBER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 863
    functionName: DEV_CHECK_NONPRESENCE
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEV_CHECK_NONPRESENCE(TYPE, MEMBER, PROPERTY, VALUEMEMBER)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_musts_p
      Src: /src/libyang/src/schema_compile_amend.c:880,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:882,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:885,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:886,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:887,1
    - Dst: lysp_restr_dup
      Src: /src/libyang/src/schema_compile_amend.c:887,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - DUP_STRING_GOTO
    argTypes:
    - units
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 874
    functionDepth: 2
    functionLinenumber: 874
    functionLinenumberEnd: 889
    functionName: DEV_CHECK_NONPRESENCE
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - lysp_restr_dup
    - lysp_node_musts_p
    - LY_ARRAY_NEW_GOTO
    - LY_ARRAY_FOR
    - AMEND_WRONG_NODETYPE
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: void
    signature: "void DEV_CHECK_NONPRESENCE(struct lysp_node_leaf *, units, \"units\",
      units);\n        DUP_STRING_GOTO(ctx->ctx, d->units, ((struct lysp_node_leaf
      *)target)->units, ret, cleanup);\n    }\n\n    /* *must-stmt */\n    if (d->musts)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:1098,1
    - Dst: lysp_node_musts_p
      Src: /src/libyang/src/schema_compile_amend.c:1108,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:1110,1
    - Dst: DEV_DEL_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:1113,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:1122,1
    - Dst: DEV_DEL_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:1126,1
    - Dst: AMEND_CHECK_CARDINALITY
      Src: /src/libyang/src/schema_compile_amend.c:1133,1
    - Dst: DEV_CHECK_PRESENCE_VALUE
      Src: /src/libyang/src/schema_compile_amend.c:1134,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:1136,1
    - Dst: DEV_DEL_ARRAY
      Src: /src/libyang/src/schema_compile_amend.c:1141,1
    - Dst: AMEND_CHECK_CARDINALITY
      Src: /src/libyang/src/schema_compile_amend.c:1144,1
    - Dst: DEV_CHECK_PRESENCE_VALUE
      Src: /src/libyang/src/schema_compile_amend.c:1145,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:1147,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:1151,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 3
    argNames:
    - ctx
    - d
    - target
    argTypes:
    - struct lysc_ctx*
    - struct lysp_deviate_del*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1157
      start: 1045
    functionDepth: 3
    functionLinenumber: 1045
    functionLinenumberEnd: 1157
    functionName: lys_apply_deviate_delete
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - lysp_node_musts_p
    - DEV_DEL_ARRAY
    - lydict_remove
    - AMEND_WRONG_NODETYPE
    - AMEND_CHECK_CARDINALITY
    - DEV_CHECK_PRESENCE_VALUE
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_apply_deviate_delete(struct lysc_ctx *ctx, struct lysp_deviate_del
      *d, struct lysp_node *target)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - DEV_ARRAY
    - ','
    - ORIG_ARRAY
    - ','
    - DEV_MEMBER
    - ','
    - ORIG_MEMBER
    - ','
    - FREE_FUNC
    - ','
    - PROPERTY
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1077
    functionName: DEV_DEL_ARRAY
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEV_DEL_ARRAY(DEV_ARRAY, ORIG_ARRAY, DEV_MEMBER, ORIG_MEMBER, FREE_FUNC,
      PROPERTY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - ','
    - DEVTYPE
    - ','
    - PROPERTY
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1078
    functionDepth: 0
    functionLinenumber: 1078
    functionLinenumberEnd: 1090
    functionName: DEV_CHECK_PRESENCE_VALUE
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEV_CHECK_PRESENCE_VALUE(TYPE, MEMBER, DEVTYPE, PROPERTY, VALUE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - TYPE
    - ','
    - MEMBER
    - ','
    - DEVTYPE
    - ','
    - PROPERTY
    - ','
    - VALUE
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1173
    functionDepth: 0
    functionLinenumber: 1173
    functionLinenumberEnd: 1179
    functionName: DEV_CHECK_PRESENCE
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEV_CHECK_PRESENCE(TYPE, MEMBER, DEVTYPE, PROPERTY, VALUE)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DEV_CHECK_PRESENCE
      Src: /src/libyang/src/schema_compile_amend.c:1213,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:1215,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1216,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:1216,1
    - Dst: DEV_CHECK_PRESENCE
      Src: /src/libyang/src/schema_compile_amend.c:1219,1
    - Dst: lydict_remove
      Src: /src/libyang/src/schema_compile_amend.c:1221,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1222,1
    - Dst: lysp_qname_dup
      Src: /src/libyang/src/schema_compile_amend.c:1222,1
    - Dst: AMEND_WRONG_NODETYPE
      Src: /src/libyang/src/schema_compile_amend.c:1225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - DUP_STRING_GOTO
    argTypes:
    - replacing
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1204
    functionDepth: 3
    functionLinenumber: 1204
    functionLinenumberEnd: 1227
    functionName: DEV_CHECK_PRESENCE
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - DEV_CHECK_PRESENCE
    - lydict_remove
    - AMEND_WRONG_NODETYPE
    - LY_CHECK_GOTO
    - lysp_qname_dup
    linkageType: ''
    returnType: void
    signature: "void DEV_CHECK_PRESENCE(struct lysp_node_leaf *, units, \"replacing\",
      \"units\", d->units);\n        lydict_remove(ctx->ctx, ((struct lysp_node_leaf
      *)target)->units);\n        DUP_STRING_GOTO(ctx->ctx, d->units, ((struct lysp_node_leaf
      *)target)->units, ret, cleanup);\n    }\n\n    /* [default-stmt] */\n    if
      (d->dflt.str)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ly_strnchr
      Src: /src/libyang/src/schema_compile_amend.c:1344,1
    - Dst: ly_resolve_prefix
      Src: /src/libyang/src/schema_compile_amend.c:1346,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:1348,1
    - Dst: LYSP_MODULE_NAME
      Src: /src/libyang/src/schema_compile_amend.c:1350,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 6
    argNames:
    - ctx
    - nametest
    - nametest_len
    - mod
    - name
    - name_len
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - struct lysp_module*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1337
    functionDepth: 5
    functionLinenumber: 1337
    functionLinenumberEnd: 1367
    functionName: lys_schema_node_get_module
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 2
    functionsReached:
    - ly_resolve_prefix
    - LOGVAL
    - ly_strnchr
    - LYSP_MODULE_NAME
    linkageType: ''
    returnType: struct lys_module
    signature: "struct lys_module *\nlys_schema_node_get_module(const struct ly_ctx
      *ctx, const char *nametest, size_t nametest_len,\n        const struct lysp_module
      *mod, const char **name, size_t *name_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_strncmp
      Src: /src/libyang/src/schema_compile_amend.c:1388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - node
    - mod
    - name
    - name_len
    argTypes:
    - struct lysc_node**
    - struct lys_module*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1378
    functionDepth: 1
    functionLinenumber: 1378
    functionLinenumberEnd: 1396
    functionName: lysp_schema_nodeid_match_node
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - ly_strncmp
    linkageType: ''
    returnType: ly_bool
    signature: "ly_bool lysp_schema_nodeid_match_node(const struct lysc_node **node,
      const struct lys_module *mod, const char *name,\n        size_t name_len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lys_schema_node_get_module
      Src: /src/libyang/src/schema_compile_amend.c:1422,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:1423,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/schema_compile_amend.c:1427,1
    - Dst: lysp_schema_nodeid_match_node
      Src: /src/libyang/src/schema_compile_amend.c:1432,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:1440,1
    - Dst: lys_schema_node_get_module
      Src: /src/libyang/src/schema_compile_amend.c:1448,1
    - Dst: assert
      Src: /src/libyang/src/schema_compile_amend.c:1450,1
    - Dst: lysp_schema_nodeid_match_node
      Src: /src/libyang/src/schema_compile_amend.c:1453,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 6
    argNames:
    - exp
    - exp_pmod
    - ctx_node
    - parent
    - pnode
    - pnode_mod
    argTypes:
    - struct lyxp_expr*
    - struct lysp_module*
    - struct lysc_node*
    - struct lysc_node*
    - struct lysp_node*
    - struct lys_module*
    assertStmts:
    - condition: (exp->tokens[i] == LYXP_TOKEN_NAMETEST)
      pos:
        line_end: 1439
        line_start: 1439
        source_file: /src/libyang/src/schema_compile_amend.c
    - condition: (mod)
      pos:
        line_end: 1422
        line_start: 1422
        source_file: /src/libyang/src/schema_compile_amend.c
    - condition: (mod)
      pos:
        line_end: 1449
        line_start: 1449
        source_file: /src/libyang/src/schema_compile_amend.c
    constantsTouched: []
    func_position:
      end: 1467
      start: 1409
    functionDepth: 6
    functionLinenumber: 1409
    functionLinenumberEnd: 1467
    functionName: lysp_schema_nodeid_match
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - lys_schema_node_get_module
    - ly_strncmp
    - lysp_schema_nodeid_match_node
    - assert
    linkageType: ''
    returnType: ly_bool
    signature: "ly_bool lysp_schema_nodeid_match(const struct lyxp_expr *exp, const
      struct lysp_module *exp_pmod, const struct lysc_node *ctx_node,\n        const
      struct lysc_node *parent, const struct lysp_node *pnode, const struct lys_module
      *pnode_mod)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:1473,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_amend.c:1475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - aug
    argTypes:
    - struct ly_ctx*
    - struct lysc_augment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1469
    functionDepth: 4
    functionLinenumber: 1469
    functionLinenumberEnd: 1477
    functionName: lysc_augment_free
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - lyxp_expr_free
    - free
    linkageType: ''
    returnType: void
    signature: void lysc_augment_free(const struct ly_ctx *ctx, struct lysc_augment
      *aug)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:1483,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile_amend.c:1484,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile_amend.c:1485,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_amend.c:1487,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - dev
    argTypes:
    - struct ly_ctx*
    - struct lysc_deviation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1479
    functionDepth: 4
    functionLinenumber: 1479
    functionLinenumberEnd: 1489
    functionName: lysc_deviation_free
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - lyxp_expr_free
    - free
    - LY_ARRAY_FREE
    linkageType: ''
    returnType: void
    signature: void lysc_deviation_free(const struct ly_ctx *ctx, struct lysc_deviation
      *dev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:1495,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile_amend.c:1496,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_amend.c:1498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - rfn
    argTypes:
    - struct ly_ctx*
    - struct lysc_refine*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1491
    functionDepth: 4
    functionLinenumber: 1491
    functionLinenumberEnd: 1500
    functionName: lysc_refine_free
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - lyxp_expr_free
    - free
    - LY_ARRAY_FREE
    linkageType: ''
    returnType: void
    signature: void lysc_refine_free(const struct ly_ctx *ctx, struct lysc_refine
      *rfn)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lysp_node_free
      Src: /src/libyang/src/schema_compile_amend.c:1539,1
    - Dst: free
      Src: /src/libyang/src/schema_compile_amend.c:1540,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile_amend.c:1543,1
    - Dst: lysp_node_free
      Src: /src/libyang/src/schema_compile_amend.c:1547,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - dev_pnode
    argTypes:
    - struct ly_ctx*
    - struct lysp_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1502
    functionDepth: 5
    functionLinenumber: 1502
    functionLinenumberEnd: 1548
    functionName: lysp_dev_node_free
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - LOGINT
    - free
    - lysp_node_free
    linkageType: ''
    returnType: void
    signature: void lysp_dev_node_free(const struct ly_ctx *ctx, struct lysp_node
      *dev_pnode)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lysp_schema_nodeid_match
      Src: /src/libyang/src/schema_compile_amend.c:1571,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1578,1
    - Dst: lysp_dup_single
      Src: /src/libyang/src/schema_compile_amend.c:1578,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1586,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1588,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1589,1
    - Dst: lys_apply_refine
      Src: /src/libyang/src/schema_compile_amend.c:1592,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1593,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1594,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1595,1
    - Dst: lysc_refine_free
      Src: /src/libyang/src/schema_compile_amend.c:1599,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/schema_compile_amend.c:1600,1
    - Dst: lysp_schema_nodeid_match
      Src: /src/libyang/src/schema_compile_amend.c:1609,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1622,1
    - Dst: lysp_dup_single
      Src: /src/libyang/src/schema_compile_amend.c:1622,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1626,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1628,1
    - Dst: strcpy
      Src: /src/libyang/src/schema_compile_amend.c:1630,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1634,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1635,1
    - Dst: lys_apply_deviate_add
      Src: /src/libyang/src/schema_compile_amend.c:1639,1
    - Dst: lys_apply_deviate_delete
      Src: /src/libyang/src/schema_compile_amend.c:1642,1
    - Dst: lys_apply_deviate_replace
      Src: /src/libyang/src/schema_compile_amend.c:1645,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile_amend.c:1648,1
    - Dst: strcpy
      Src: /src/libyang/src/schema_compile_amend.c:1653,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_amend.c:1654,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1656,1
    - Dst: lysc_deviation_free
      Src: /src/libyang/src/schema_compile_amend.c:1662,1
    - Dst: ly_set_rm_index
      Src: /src/libyang/src/schema_compile_amend.c:1663,1
    - Dst: lysp_dev_node_free
      Src: /src/libyang/src/schema_compile_amend.c:1673,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 82
    argCount: 5
    argNames:
    - ctx
    - pnode
    - parent
    - dev_pnode
    - not_supported
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node*
    - struct lysc_node*
    - struct lysp_node**
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1550
    functionDepth: 8
    functionLinenumber: 1550
    functionLinenumberEnd: 1678
    functionName: lys_compile_node_deviations_refines
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - lys_apply_deviate_replace
    - strlen
    - lysp_dup_single
    - strcpy
    - lysc_deviation_free
    - lysp_dev_node_free
    - LOGINT
    - LY_LIST_FOR
    - lys_apply_deviate_add
    - LY_ARRAY_FOR
    - lysc_refine_free
    - lysc_update_path
    - lys_apply_deviate_delete
    - lysp_schema_nodeid_match
    - LY_CHECK_GOTO
    - lys_apply_refine
    - ly_set_rm_index
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lys_compile_node_deviations_refines(struct lysc_ctx *ctx, const
      struct lysp_node *pnode, const struct lysc_node *parent,\n        struct lysp_node
      **dev_pnode, ly_bool *not_supported)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:1707,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_amend.c:1709,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1722,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:1727,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_amend.c:1729,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_amend.c:1729,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1736,1
    - Dst: lys_compile_node_choice_child
      Src: /src/libyang/src/schema_compile_amend.c:1736,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1743,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_amend.c:1743,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1745,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_amend.c:1745,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1749,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile_amend.c:1749,1
    - Dst: lys_compile_mandatory_parents
      Src: /src/libyang/src/schema_compile_amend.c:1760,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:1761,1
    - Dst: lys_compile_when
      Src: /src/libyang/src/schema_compile_amend.c:1769,1
    - Dst: lysc_data_node
      Src: /src/libyang/src/schema_compile_amend.c:1769,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1770,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:1773,1
    - Dst: lysc_node_actions_p
      Src: /src/libyang/src/schema_compile_amend.c:1779,1
    - Dst: lysc_node_notifs_p
      Src: /src/libyang/src/schema_compile_amend.c:1780,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:1784,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_amend.c:1786,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1792,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1793,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_amend.c:1793,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1796,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile_amend.c:1796,1
    - Dst: lys_compile_when
      Src: /src/libyang/src/schema_compile_amend.c:1807,1
    - Dst: lysc_data_node
      Src: /src/libyang/src/schema_compile_amend.c:1807,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1808,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:1811,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:1819,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/schema_compile_amend.c:1821,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1827,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1828,1
    - Dst: lys_compile_node
      Src: /src/libyang/src/schema_compile_amend.c:1828,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1831,1
    - Dst: lys_eval_iffeatures
      Src: /src/libyang/src/schema_compile_amend.c:1831,1
    - Dst: lys_compile_when
      Src: /src/libyang/src/schema_compile_amend.c:1842,1
    - Dst: lysc_data_node
      Src: /src/libyang/src/schema_compile_amend.c:1842,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1843,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:1846,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:1854,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 107
    argCount: 3
    argNames:
    - ctx
    - aug_p
    - target
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node_augment*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1693
    functionDepth: 16
    functionLinenumber: 1693
    functionLinenumberEnd: 1857
    functionName: lys_compile_augment
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - lysc_node_actions_p
    - lys_nodetype2str
    - lys_compile_mandatory_parents
    - ly_set_erase
    - lysc_node_notifs_p
    - LY_LIST_FOR
    - lys_eval_iffeatures
    - LOGVAL
    - lys_compile_node_choice_child
    - lysc_data_node
    - LY_CHECK_GOTO
    - lys_compile_when
    - lys_compile_node
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_augment(struct lysc_ctx *ctx, struct lysp_node_augment
      *aug_p, struct lysc_node *target)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lysp_schema_nodeid_match
      Src: /src/libyang/src/schema_compile_amend.c:1873,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1880,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1881,1
    - Dst: lys_compile_augment
      Src: /src/libyang/src/schema_compile_amend.c:1885,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1886,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1887,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1888,1
    - Dst: ly_set_rm
      Src: /src/libyang/src/schema_compile_amend.c:1891,1
    - Dst: lysc_augment_free
      Src: /src/libyang/src/schema_compile_amend.c:1892,1
    - Dst: lysp_schema_nodeid_match
      Src: /src/libyang/src/schema_compile_amend.c:1899,1
    - Dst: strcpy
      Src: /src/libyang/src/schema_compile_amend.c:1906,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1910,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:1911,1
    - Dst: lys_compile_augment
      Src: /src/libyang/src/schema_compile_amend.c:1914,1
    - Dst: strcpy
      Src: /src/libyang/src/schema_compile_amend.c:1915,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_amend.c:1916,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1917,1
    - Dst: ly_set_rm
      Src: /src/libyang/src/schema_compile_amend.c:1920,1
    - Dst: lysc_augment_free
      Src: /src/libyang/src/schema_compile_amend.c:1921,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - node
    argTypes:
    - struct lysc_ctx*
    - struct lysc_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1859
    functionDepth: 17
    functionLinenumber: 1859
    functionLinenumberEnd: 1928
    functionName: lys_compile_node_augments
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - lys_compile_augment
    - strlen
    - ly_set_rm
    - strcpy
    - lysc_update_path
    - lysp_schema_nodeid_match
    - LY_CHECK_GOTO
    - lysc_augment_free
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_compile_node_augments(struct lysc_ctx *ctx, struct lysc_node
      *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/schema_compile_amend.c:1947,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_amend.c:1947,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1948,1
    - Dst: lys_schema_node_get_module
      Src: /src/libyang/src/schema_compile_amend.c:1950,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1951,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile_amend.c:1951,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:1958,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1959,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_amend.c:1959,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:1960,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_amend.c:1960,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:1968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - aug_p
    - pmod
    argTypes:
    - struct lysc_ctx*
    - struct lysp_node_augment*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1970
      start: 1938
    functionDepth: 12
    functionLinenumber: 1938
    functionLinenumberEnd: 1970
    functionName: lys_precompile_own_augment
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - lyxp_expr_free
    - LOGINT
    - ly_set_add
    - LY_CHECK_GOTO
    - lys_schema_node_get_module
    - lyxp_expr_parse
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_precompile_own_augment(struct lysc_ctx *ctx, struct lysp_node_augment
      *aug_p, const struct lysp_module *pmod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1977,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1982,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:1983,1
    - Dst: lys_precompile_own_augment
      Src: /src/libyang/src/schema_compile_amend.c:1983,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1987,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:1988,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:1989,1
    - Dst: lys_precompile_own_augment
      Src: /src/libyang/src/schema_compile_amend.c:1989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1972
    functionDepth: 13
    functionLinenumber: 1972
    functionLinenumberEnd: 1995
    functionName: lys_precompile_own_augments
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - lys_precompile_own_augment
    - LY_LIST_FOR
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_precompile_own_augments(struct lysc_ctx *ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/schema_compile_amend.c:2017,1
    - Dst: strlen
      Src: /src/libyang/src/schema_compile_amend.c:2017,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2018,1
    - Dst: lys_schema_node_get_module
      Src: /src/libyang/src/schema_compile_amend.c:2020,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2021,1
    - Dst: LOGINT
      Src: /src/libyang/src/schema_compile_amend.c:2021,1
    - Dst: lys_abs_schema_nodeid_match
      Src: /src/libyang/src/schema_compile_amend.c:2029,1
    - Dst: calloc
      Src: /src/libyang/src/schema_compile_amend.c:2038,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2039,1
    - Dst: LOGMEM
      Src: /src/libyang/src/schema_compile_amend.c:2039,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2040,1
    - Dst: ly_set_add
      Src: /src/libyang/src/schema_compile_amend.c:2040,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2047,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2049,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/schema_compile_amend.c:2053,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - dev_p
    - pmod
    argTypes:
    - struct lysc_ctx*
    - struct lysp_deviation*
    - struct lysp_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2055
      start: 2005
    functionDepth: 12
    functionLinenumber: 2005
    functionLinenumberEnd: 2055
    functionName: lys_precompile_own_deviation
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - lyxp_expr_free
    - LOGINT
    - LY_ARRAY_NEW_GOTO
    - ly_set_add
    - LY_CHECK_GOTO
    - lys_schema_node_get_module
    - lyxp_expr_parse
    - lys_abs_schema_nodeid_match
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_precompile_own_deviation(struct lysc_ctx *ctx, struct lysp_deviation
      *dev_p, const struct lysp_module *pmod)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2067,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2071,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:2072,1
    - Dst: lys_precompile_own_deviation
      Src: /src/libyang/src/schema_compile_amend.c:2072,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2076,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2077,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/schema_compile_amend.c:2078,1
    - Dst: lys_precompile_own_deviation
      Src: /src/libyang/src/schema_compile_amend.c:2078,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2089,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2090,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_amend.c:2100,1
    - Dst: LOGVAL
      Src: /src/libyang/src/schema_compile_amend.c:2101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2110
      start: 2057
    functionDepth: 13
    functionLinenumber: 2057
    functionLinenumberEnd: 2110
    functionName: lys_precompile_own_deviations
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - lys_precompile_own_deviation
    - LY_ARRAY_COUNT
    - LY_LIST_FOR
    - LY_CHECK_RET
    - LY_ARRAY_FOR
    - LOGVAL
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_precompile_own_deviations(struct lysc_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2126,1
    - Dst: LY_ARRAY_NEW_RET
      Src: /src/libyang/src/schema_compile_amend.c:2134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - mod
    - mod_array
    argTypes:
    - struct lysc_ctx*
    - struct lys_module*
    - struct lys_module***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2120
    functionDepth: 1
    functionLinenumber: 2120
    functionLinenumberEnd: 2138
    functionName: lys_array_add_mod_ref
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_FOR
    - LY_ARRAY_NEW_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_array_add_mod_ref(struct lysc_ctx *ctx, struct lys_module
      *mod, struct lys_module ***mod_array)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - mod_set
    argTypes:
    - struct ly_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2160
      start: 2146
    functionDepth: 0
    functionLinenumber: 2146
    functionLinenumberEnd: 2160
    functionName: lys_precompile_mod_set_all_implemented
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ly_bool
    signature: ly_bool lys_precompile_mod_set_all_implemented(const struct ly_set
      *mod_set)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2176,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2178,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2179,1
    - Dst: lys_nodeid_mod_check
      Src: /src/libyang/src/schema_compile_amend.c:2180,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2181,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2182,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2183,1
    - Dst: lys_array_add_mod_ref
      Src: /src/libyang/src/schema_compile_amend.c:2186,1
    - Dst: lys_precompile_mod_set_all_implemented
      Src: /src/libyang/src/schema_compile_amend.c:2187,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2188,1
    - Dst: ly_set_merge
      Src: /src/libyang/src/schema_compile_amend.c:2188,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:2190,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2193,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2195,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2196,1
    - Dst: lys_nodeid_mod_check
      Src: /src/libyang/src/schema_compile_amend.c:2197,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2198,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2199,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2200,1
    - Dst: lys_array_add_mod_ref
      Src: /src/libyang/src/schema_compile_amend.c:2203,1
    - Dst: lys_precompile_mod_set_all_implemented
      Src: /src/libyang/src/schema_compile_amend.c:2204,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2205,1
    - Dst: ly_set_merge
      Src: /src/libyang/src/schema_compile_amend.c:2205,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:2207,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2211,1
    - Dst: LY_LIST_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2213,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2214,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2215,1
    - Dst: lys_nodeid_mod_check
      Src: /src/libyang/src/schema_compile_amend.c:2216,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2217,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2218,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2219,1
    - Dst: lys_array_add_mod_ref
      Src: /src/libyang/src/schema_compile_amend.c:2221,1
    - Dst: lys_precompile_mod_set_all_implemented
      Src: /src/libyang/src/schema_compile_amend.c:2222,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2223,1
    - Dst: ly_set_merge
      Src: /src/libyang/src/schema_compile_amend.c:2223,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:2225,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/schema_compile_amend.c:2228,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2229,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2230,1
    - Dst: lys_nodeid_mod_check
      Src: /src/libyang/src/schema_compile_amend.c:2231,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2232,1
    - Dst: lysc_update_path
      Src: /src/libyang/src/schema_compile_amend.c:2233,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2234,1
    - Dst: lys_array_add_mod_ref
      Src: /src/libyang/src/schema_compile_amend.c:2236,1
    - Dst: lys_precompile_mod_set_all_implemented
      Src: /src/libyang/src/schema_compile_amend.c:2237,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2238,1
    - Dst: ly_set_merge
      Src: /src/libyang/src/schema_compile_amend.c:2238,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:2240,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/schema_compile_amend.c:2258,1
    - Dst: lys_set_implemented_r
      Src: /src/libyang/src/schema_compile_amend.c:2258,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:2275,1
    - Dst: ly_set_erase
      Src: /src/libyang/src/schema_compile_amend.c:2276,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 78
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct lysc_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2278
      start: 2162
    functionDepth: 13
    functionLinenumber: 2162
    functionLinenumberEnd: 2278
    functionName: lys_precompile_augments_deviations
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 1
    functionsReached:
    - lys_array_add_mod_ref
    - LY_LIST_FOR
    - lys_nodeid_mod_check
    - ly_set_merge
    - LY_ARRAY_FOR
    - lys_precompile_mod_set_all_implemented
    - lysc_update_path
    - LY_CHECK_GOTO
    - ly_set_erase
    - lys_set_implemented_r
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_precompile_augments_deviations(struct lysc_ctx *ctx)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_amend.c:2291,1
    - Dst: memmove
      Src: /src/libyang/src/schema_compile_amend.c:2296,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/schema_compile_amend.c:2298,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_amend.c:2302,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile_amend.c:2303,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_amend.c:2309,1
    - Dst: memmove
      Src: /src/libyang/src/schema_compile_amend.c:2314,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/schema_compile_amend.c:2316,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/schema_compile_amend.c:2320,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/schema_compile_amend.c:2321,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - mod
    argTypes:
    - struct ly_ctx*
    - struct lys_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2326
      start: 2280
    functionDepth: 1
    functionLinenumber: 2280
    functionLinenumberEnd: 2326
    functionName: lys_precompile_augments_deviations_revert
    functionSourceFile: /src/libyang/src/schema_compile_amend.c
    functionUses: 2
    functionsReached:
    - LY_ARRAY_COUNT
    - LY_ARRAY_DECREMENT
    - LY_ARRAY_FREE
    - memmove
    linkageType: ''
    returnType: void
    signature: void lys_precompile_augments_deviations_revert(struct ly_ctx *ctx,
      const struct lys_module *mod)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - START
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 417
    functionName: LYD_TREE_DFS_BEGIN
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_TREE_DFS_BEGIN(START, ELEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - START
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 440
    functionName: LYD_TREE_DFS_END
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_TREE_DFS_END(START, ELEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - START
    - ','
    - SCHEMA
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 470
    functionName: LYD_LIST_FOR_INST
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_LIST_FOR_INST(START, SCHEMA, ELEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - START
    - ','
    - SCHEMA
    - ','
    - NEXT
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 483
    functionName: LYD_LIST_FOR_INST_SAFE
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_LIST_FOR_INST_SAFE(START, SCHEMA, NEXT, ELEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 490
    functionName: LYD_CTX
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 79
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_CTX(node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - value
    - ','
    - type_val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 568
    functionName: LYD_VALUE_GET
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_VALUE_GET(value, type_val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - node
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 819
    functionName: LYD_NAME
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYD_NAME(node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 925
    functionName: lyd_parent
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: struct lyd_node
    signature: 'struct lyd_node *

      lyd_parent(const struct lyd_node *node)'
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 959
    functionName: lyd_child
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: struct lyd_node
    signature: 'struct lyd_node *

      lyd_child(const struct lyd_node *node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lyd_value_get_canonical
      Src: /src/libyang/src/tree_data.h:1046,1
    - Dst: LYD_CTX
      Src: /src/libyang/src/tree_data.h:1046,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct lyd_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1035
    functionDepth: 2
    functionLinenumber: 1035
    functionLinenumberEnd: 1050
    functionName: lyd_get_value
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 29
    functionsReached:
    - LYD_CTX
    - lyd_value_get_canonical
    linkageType: ''
    returnType: char
    signature: 'char *

      lyd_get_value(const struct lyd_node *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyd_value_get_canonical
      Src: /src/libyang/src/tree_data.h:1063,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - meta
    argTypes:
    - struct lyd_meta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1067
    functionName: lyd_get_meta_value
    functionSourceFile: /src/libyang/src/tree_data.h
    functionUses: 14
    functionsReached:
    - lyd_value_get_canonical
    linkageType: ''
    returnType: char
    signature: 'char *

      lyd_get_meta_value(const struct lyd_meta *meta)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - _1
    - ','
    - _2
    - ','
    - NAME
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: LY_ARRAY_SELECT
    functionSourceFile: /src/libyang/src/tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_SELECT(_1, _2, NAME, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ARRAY
    - ','
    - TYPE
    - ','
    - ITER
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: LY_ARRAY_FOR_ITER
    functionSourceFile: /src/libyang/src/tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_FOR_ITER(ARRAY, TYPE, ITER)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ARRAY
    - ','
    - INDEX
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: LY_ARRAY_FOR_INDEX
    functionSourceFile: /src/libyang/src/tree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_FOR_INDEX(ARRAY, INDEX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ARRAY
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    functionName: LY_ARRAY_COUNT
    functionSourceFile: /src/libyang/src/tree.h
    functionUses: 83
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_COUNT(ARRAY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ARRAY
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/tree.h
    functionUses: 117
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_ARRAY_FOR(ARRAY, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - START
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: LY_LIST_FOR
    functionSourceFile: /src/libyang/src/tree.h
    functionUses: 90
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_LIST_FOR(START, ELEM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - START
    - ','
    - NEXT
    - ','
    - ELEM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: LY_LIST_FOR_SAFE
    functionSourceFile: /src/libyang/src/tree.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_LIST_FOR_SAFE(START, NEXT, ELEM)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:32,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_schema.c:40,1
    - Dst: yang_print_parsed_module
      Src: /src/libyang/src/printer_schema.c:45,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_schema.c:49,1
    - Dst: yang_print_compiled
      Src: /src/libyang/src/printer_schema.c:54,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_schema.c:58,1
    - Dst: yin_print_parsed_module
      Src: /src/libyang/src/printer_schema.c:63,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_schema.c:67,1
    - Dst: tree_print_module
      Src: /src/libyang/src/printer_schema.c:71,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_schema.c:79,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 5
    argNames:
    - out
    - module
    - format
    - line_length
    - options
    argTypes:
    - struct ly_out*
    - struct lys_module*
    - LYS_OUTFORMAT
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 26
    functionDepth: 17
    functionLinenumber: 26
    functionLinenumberEnd: 85
    functionName: lys_print_module
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 4
    functionsReached:
    - LY_CHECK_ARG_RET
    - LOGERR
    - yang_print_parsed_module
    - yang_print_compiled
    - yin_print_parsed_module
    - tree_print_module
    linkageType: ''
    returnType: API
    signature: "API lys_print_module(struct ly_out *out, const struct lys_module *module,
      LYS_OUTFORMAT format, size_t line_length,\n        uint32_t options)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:93,1
    - Dst: yang_print_parsed_submodule
      Src: /src/libyang/src/printer_schema.c:100,1
    - Dst: yin_print_parsed_submodule
      Src: /src/libyang/src/printer_schema.c:103,1
    - Dst: tree_print_parsed_submodule
      Src: /src/libyang/src/printer_schema.c:106,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_schema.c:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - out
    - submodule
    - format
    - line_length
    - options
    argTypes:
    - struct ly_out*
    - struct lysp_submodule*
    - LYS_OUTFORMAT
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 87
    functionDepth: 17
    functionLinenumber: 87
    functionLinenumberEnd: 120
    functionName: lys_print_submodule
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 4
    functionsReached:
    - LY_CHECK_ARG_RET
    - LOGERR
    - yin_print_parsed_submodule
    - yang_print_parsed_submodule
    - tree_print_parsed_submodule
    linkageType: ''
    returnType: API
    signature: "API lys_print_submodule(struct ly_out *out, const struct lysp_submodule
      *submodule, LYS_OUTFORMAT format,\n        size_t line_length, uint32_t options)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:127,1
    - Dst: lys_print_module
      Src: /src/libyang/src/printer_schema.c:129,1
    - Dst: ly_out_free
      Src: /src/libyang/src/printer_schema.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - out
    - module
    - format
    - options
    argTypes:
    - struct ly_out*
    - struct lys_module*
    - LYS_OUTFORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 122
    functionDepth: 18
    functionLinenumber: 122
    functionLinenumberEnd: 133
    functionName: lys_print_
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 0
    functionsReached:
    - lys_print_module
    - LY_CHECK_ARG_RET
    - ly_out_free
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lys_print_(struct ly_out *out, const struct lys_module *module,
      LYS_OUTFORMAT format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:140,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_schema.c:145,1
    - Dst: ly_out_new_memory
      Src: /src/libyang/src/printer_schema.c:145,1
    - Dst: lys_print_
      Src: /src/libyang/src/printer_schema.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - strp
    - module
    - format
    - options
    argTypes:
    - char**
    - struct lys_module*
    - LYS_OUTFORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 135
    functionDepth: 19
    functionLinenumber: 135
    functionLinenumberEnd: 147
    functionName: lys_print_mem
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 10
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - ly_out_new_memory
    - lys_print_
    linkageType: ''
    returnType: API
    signature: API lys_print_mem(char **strp, const struct lys_module *module, LYS_OUTFORMAT
      format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:154,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_schema.c:156,1
    - Dst: ly_out_new_fd
      Src: /src/libyang/src/printer_schema.c:156,1
    - Dst: lys_print_
      Src: /src/libyang/src/printer_schema.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - fd
    - module
    - format
    - options
    argTypes:
    - int
    - struct lys_module*
    - LYS_OUTFORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 149
    functionDepth: 19
    functionLinenumber: 149
    functionLinenumberEnd: 158
    functionName: lys_print_fd
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_out_new_fd
    - LY_CHECK_ARG_RET
    - lys_print_
    linkageType: ''
    returnType: API
    signature: API lys_print_fd(int fd, const struct lys_module *module, LYS_OUTFORMAT
      format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:165,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_schema.c:167,1
    - Dst: ly_out_new_file
      Src: /src/libyang/src/printer_schema.c:167,1
    - Dst: lys_print_
      Src: /src/libyang/src/printer_schema.c:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - f
    - module
    - format
    - options
    argTypes:
    - FILE*
    - struct lys_module*
    - LYS_OUTFORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 19
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: lys_print_file
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - ly_out_new_file
    - LY_CHECK_ARG_RET
    - lys_print_
    linkageType: ''
    returnType: API
    signature: API lys_print_file(FILE *f, const struct lys_module *module, LYS_OUTFORMAT
      format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:176,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_schema.c:178,1
    - Dst: ly_out_new_filepath
      Src: /src/libyang/src/printer_schema.c:178,1
    - Dst: lys_print_
      Src: /src/libyang/src/printer_schema.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - path
    - module
    - format
    - options
    argTypes:
    - char*
    - struct lys_module*
    - LYS_OUTFORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 171
    functionDepth: 19
    functionLinenumber: 171
    functionLinenumberEnd: 180
    functionName: lys_print_path
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - ly_out_new_filepath
    - lys_print_
    linkageType: ''
    returnType: API
    signature: API lys_print_path(const char *path, const struct lys_module *module,
      LYS_OUTFORMAT format, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:187,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/printer_schema.c:189,1
    - Dst: ly_out_new_clb
      Src: /src/libyang/src/printer_schema.c:189,1
    - Dst: lys_print_
      Src: /src/libyang/src/printer_schema.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - writeclb
    - user_data
    - module
    - format
    - options
    argTypes:
    - ly_write_clb
    - void*
    - struct lys_module*
    - LYS_OUTFORMAT
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 182
    functionDepth: 19
    functionLinenumber: 182
    functionLinenumberEnd: 191
    functionName: lys_print_clb
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - LY_CHECK_ARG_RET
    - ly_out_new_clb
    - lys_print_
    linkageType: ''
    returnType: API
    signature: API lys_print_clb(ly_write_clb writeclb, void *user_data, const struct
      lys_module *module, LYS_OUTFORMAT format, uint32_t options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/printer_schema.c:198,1
    - Dst: yang_print_compiled_node
      Src: /src/libyang/src/printer_schema.c:205,1
    - Dst: tree_print_compiled_node
      Src: /src/libyang/src/printer_schema.c:213,1
    - Dst: LOGERR
      Src: /src/libyang/src/printer_schema.c:216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - out
    - node
    - format
    - line_length
    - options
    argTypes:
    - struct ly_out*
    - struct lysc_node*
    - LYS_OUTFORMAT
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 193
    functionDepth: 14
    functionLinenumber: 193
    functionLinenumberEnd: 222
    functionName: lys_print_node
    functionSourceFile: /src/libyang/src/printer_schema.c
    functionUses: 3
    functionsReached:
    - yang_print_compiled_node
    - LY_CHECK_ARG_RET
    - LOGERR
    - tree_print_compiled_node
    linkageType: ''
    returnType: API
    signature: API lys_print_node(struct ly_out *out, const struct lysc_node *node,
      LYS_OUTFORMAT format, size_t line_length, uint32_t options)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - IN
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: LY_IN_NEW_LINE
    functionSourceFile: /src/libyang/src/in_internal.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LY_IN_NEW_LINE(IN)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - TYPE
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: ly_devmod2str
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ly_devmod2str(TYPE)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - KW
    - ','
    - PARENT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: PARSER_CHECK_STMTVER2_RET
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARSER_CHECK_STMTVER2_RET(CTX, KW, PARENT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: is_yangidentstartchar
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_yangidentstartchar(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: is_yangidentchar
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_yangidentchar(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: is_yangutf8char
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: is_yangutf8char(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - MEMBER
    - ','
    - STMT
    - ','
    - IDENT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: CHECK_UNIQUENESS
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_UNIQUENESS(CTX, ARRAY, MEMBER, STMT, IDENT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - VALUE_LEN
    - ','
    - STMT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: CHECK_NONEMPTY
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_NONEMPTY(CTX, VALUE_LEN, STMT)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - CTX
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: PARSER_CTX
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 76
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARSER_CTX(CTX)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: LOGVAL_PARSER
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 179
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOGVAL_PARSER(CTX, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - ','
    - FUNC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 593
    functionName: FREE_ARRAY
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 80
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE_ARRAY(CTX, ARRAY, FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - MEMBER
    - ','
    - FUNC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 598
    functionName: FREE_MEMBER
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE_MEMBER(CTX, MEMBER, FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - CTX
    - ','
    - ARRAY
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 604
    functionName: FREE_STRINGS
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FREE_STRINGS(CTX, ARRAY)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - SCHEMA
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 775
    functionDepth: 0
    functionLinenumber: 775
    functionLinenumberEnd: 776
    functionName: lysc_data_parent
    functionSourceFile: /src/libyang/src/tree_schema_internal.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lysc_data_parent(SCHEMA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - ORIG
    - ','
    - DUP
    - ','
    - RET
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: DUP_STRING
    functionSourceFile: /src/libyang/src/schema_compile.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUP_STRING(CTX, ORIG, DUP, RET)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - CTX
    - ','
    - ORIG
    - ','
    - DUP
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: DUP_STRING_RET
    functionSourceFile: /src/libyang/src/schema_compile.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUP_STRING_RET(CTX, ORIG, DUP)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CTX
    - ','
    - ORIG
    - ','
    - DUP
    - ','
    - RET
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: DUP_STRING_GOTO
    functionSourceFile: /src/libyang/src/schema_compile.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUP_STRING_GOTO(CTX, ORIG, DUP, RET, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - CTX
    - ','
    - ORIG_ARRAY
    - ','
    - NEW_ARRAY
    - ','
    - DUP_FUNC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 111
    functionName: DUP_ARRAY
    functionSourceFile: /src/libyang/src/schema_compile.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DUP_ARRAY(CTX, ORIG_ARRAY, NEW_ARRAY, DUP_FUNC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - CTX
    - ','
    - ARRAY_P
    - ','
    - ARRAY_C
    - ','
    - PARENT
    - ','
    - FUNC
    - ','
    - USES_STATUS
    - ','
    - RET
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: COMPILE_OP_ARRAY_GOTO
    functionSourceFile: /src/libyang/src/schema_compile.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_OP_ARRAY_GOTO(CTX, ARRAY_P, ARRAY_C, PARENT, FUNC, USES_STATUS,
      RET, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - CTX
    - ','
    - ARRAY_P
    - ','
    - ARRAY_C
    - ','
    - FUNC
    - ','
    - RET
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: COMPILE_ARRAY_GOTO
    functionSourceFile: /src/libyang/src/schema_compile.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_ARRAY_GOTO(CTX, ARRAY_P, ARRAY_C, FUNC, RET, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - CTX
    - ','
    - EXTS_P
    - ','
    - EXT_C
    - ','
    - PARENT
    - ','
    - RET
    - ','
    - GOTO
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: COMPILE_EXTS_GOTO
    functionSourceFile: /src/libyang/src/schema_compile.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILE_EXTS_GOTO(CTX, EXTS_P, EXT_C, PARENT, RET, GOTO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type_val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 180
    functionName: LYPLG_TYPE_VAL_IS_DYN
    functionSourceFile: /src/libyang/src/plugins_types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYPLG_TYPE_VAL_IS_DYN(type_val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - storage
    - ','
    - type_val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 194
    functionName: LYPLG_TYPE_VAL_INLINE_PREPARE
    functionSourceFile: /src/libyang/src/plugins_types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYPLG_TYPE_VAL_INLINE_PREPARE(storage, type_val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type_val
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: LYPLG_TYPE_VAL_INLINE_DESTROY
    functionSourceFile: /src/libyang/src/plugins_types.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LYPLG_TYPE_VAL_INLINE_DESTROY(type_val)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/enumeration.c:49,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/enumeration.c:55,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/enumeration.c:61,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/enumeration.c:70,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/enumeration.c:76,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/enumeration.c:77,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/enumeration.c:80,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types/enumeration.c:81,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/enumeration.c:89,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/enumeration.c:100,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/enumeration.c:102,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/enumeration.c:104,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/enumeration.c:105,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/enumeration.c:110,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/enumeration.c:114,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 117
    functionName: lyplg_type_store_enum
    functionSourceFile: /src/libyang/src/plugins_types/enumeration.c
    functionUses: 0
    functionsReached:
    - ly_strncmp
    - memset
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lydict_insert_zc
    - LY_ARRAY_FOR
    - lydict_insert
    - LY_CHECK_GOTO
    - lyplg_type_free_simple
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_enum(const struct ly_ctx *ctx, const struct lysc_type
      *type, const void *value, size_t value_len,\n        uint32_t options, LY_VALUE_FORMAT
      format, void *UNUSED(prefix_data), uint32_t hints,\n        const struct lysc_node
      *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres *UNUSED(unres),\n
      \       struct ly_err_item **err)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/enumeration.c:136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 139
    functionName: lyplg_type_print_enum
    functionSourceFile: /src/libyang/src/plugins_types/enumeration.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_enum(const struct ly_ctx *UNUSED(ctx), const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/empty.c:46,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/empty.c:50,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/empty.c:51,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/empty.c:55,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/empty.c:61,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/empty.c:63,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/empty.c:65,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/empty.c:66,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/empty.c:71,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/empty.c:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - UNUSED
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 78
    functionName: lyplg_type_store_empty
    functionSourceFile: /src/libyang/src/plugins_types/empty.c
    functionUses: 0
    functionsReached:
    - memset
    - free
    - lyplg_type_check_hints
    - lydict_insert_zc
    - ly_err_new
    - lydict_insert
    - LY_CHECK_GOTO
    - lyplg_type_free_simple
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_empty(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT UNUSED(format), void *UNUSED(prefix_data), uint32_t hints,\n
      \       const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/binary.c:62,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/plugins_types/binary.c:63,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/binary.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 5
    argNames:
    - ctx
    - data
    - size
    - str
    - str_len
    argTypes:
    - struct ly_ctx*
    - char*
    - size_t
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 86
    functionName: binary_base64_encode
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 0
    functionsReached:
    - malloc
    - LOGMEM
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR binary_base64_encode(const struct ly_ctx *ctx, const char *data,
      size_t size, char **str, size_t *str_len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/binary.c:130,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/binary.c:131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - value
    - value_len
    - data
    - size
    argTypes:
    - char*
    - size_t
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 153
    functionName: binary_base64_decode
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 0
    functionsReached:
    - malloc
    - LY_CHECK_RET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR binary_base64_decode(const char *value, size_t value_len, void
      **data, size_t *size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/libyang/src/plugins_types/binary.c:187,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/binary.c:188,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/binary.c:190,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/binary.c:196,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/binary.c:202,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/binary.c:202,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 23
    argCount: 4
    argNames:
    - value
    - value_len
    - type
    - err
    argTypes:
    - char*
    - size_t
    - struct lysc_type_bin*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 206
    functionName: binary_base64_validate
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - lyplg_type_validate_range
    - isprint
    - ly_err_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR binary_base64_validate(const char *value, size_t value_len,
      const struct lysc_type_bin *type, struct ly_err_item **err)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/binary.c:219,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/binary.c:220,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/binary.c:221,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/binary.c:230,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/binary.c:231,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/binary.c:232,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/binary.c:243,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/binary.c:244,1
    - Dst: binary_base64_validate
      Src: /src/libyang/src/plugins_types/binary.c:248,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/binary.c:249,1
    - Dst: binary_base64_decode
      Src: /src/libyang/src/plugins_types/binary.c:253,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/binary.c:254,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/binary.c:258,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/binary.c:260,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/binary.c:262,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/binary.c:263,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/binary.c:268,1
    - Dst: lyplg_type_free_binary
      Src: /src/libyang/src/plugins_types/binary.c:272,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 208
    functionDepth: 4
    functionLinenumber: 208
    functionLinenumberEnd: 275
    functionName: lyplg_type_store_binary
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 0
    functionsReached:
    - lyplg_type_free_binary
    - LY_CHECK_ERR_GOTO
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - malloc
    - free
    - lyplg_type_check_hints
    - lydict_insert_zc
    - binary_base64_validate
    - lydict_insert
    - LY_CHECK_GOTO
    - binary_base64_decode
    - memcpy
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_binary(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n        const
      struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres
      *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/binary.c:286,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/binary.c:287,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/binary.c:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 293
    functionName: lyplg_type_compare_binary
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 0
    functionsReached:
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_binary(const struct lyd_value *val1, const struct
      lyd_value *val2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/binary.c:303,1
    - Dst: binary_base64_encode
      Src: /src/libyang/src/plugins_types/binary.c:316,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/binary.c:321,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/binary.c:322,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/binary.c:332,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 295
    functionDepth: 4
    functionLinenumber: 295
    functionLinenumberEnd: 335
    functionName: lyplg_type_print_binary
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 0
    functionsReached:
    - strlen
    - LYD_VALUE_GET
    - lydict_insert_zc
    - binary_base64_encode
    - LOGMEM
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_binary(const struct ly_ctx *ctx, const struct
      lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/binary.c:343,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/binary.c:343,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/binary.c:344,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/binary.c:346,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/binary.c:348,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/binary.c:352,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/binary.c:353,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/binary.c:355,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/binary.c:356,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/binary.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 337
    functionDepth: 4
    functionLinenumber: 337
    functionLinenumberEnd: 364
    functionName: lyplg_type_dup_binary
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 0
    functionsReached:
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - malloc
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - LYD_VALUE_GET
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert
    - ly_strlen
    - memcpy
    linkageType: ''
    returnType: API
    signature: API lyplg_type_dup_binary(const struct ly_ctx *ctx, const struct lyd_value
      *original, struct lyd_value *dup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/binary.c:371,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/binary.c:372,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/binary.c:374,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/binary.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 366
    functionDepth: 3
    functionLinenumber: 366
    functionLinenumberEnd: 377
    functionName: lyplg_type_free_binary
    functionSourceFile: /src/libyang/src/plugins_types/binary.c
    functionUses: 1
    functionsReached:
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - free
    - LYD_VALUE_GET
    linkageType: ''
    returnType: API
    signature: API lyplg_type_free_binary(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:67,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:68,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:69,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:75,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:81,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:88,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:89,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:94,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:94,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:95,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:99,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:100,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:104,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:105,1
    - Dst: inet_pton
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:111,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:112,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:117,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:119,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:123,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:127,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 130
    functionName: lyplg_type_store_ipv4_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address_no_zone.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ly_utf8len
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lyplg_type_validate_range
    - inet_pton
    - LY_CHECK_GOTO
    - strndup
    - lyplg_type_free_simple
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyplg_type_store_ipv4_address_no_zone(const struct ly_ctx *ctx,
      const struct lysc_type *type, const void *value,\n        size_t value_len,
      uint32_t options, LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t
      hints,\n        const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:144,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:145,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 151
    functionName: lyplg_type_compare_ipv4_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address_no_zone.c
    functionUses: 0
    functionsReached:
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_compare_ipv4_address_no_zone(const struct lyd_value
      *val1, const struct lyd_value *val2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:163,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:175,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:176,1
    - Dst: inet_ntop
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:179,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:180,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:181,1
    - Dst: strerror
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:181,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:186,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:187,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv4_address_no_zone.c:197,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 156
    functionDepth: 4
    functionLinenumber: 156
    functionLinenumberEnd: 200
    functionName: lyplg_type_print_ipv4_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address_no_zone.c
    functionUses: 0
    functionsReached:
    - strlen
    - malloc
    - strerror
    - LOGERR
    - free
    - LYD_VALUE_GET
    - lydict_insert_zc
    - LY_CHECK_RET
    - inet_ntop
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: "void *\nlyplg_type_print_ipv4_address_no_zone(const struct ly_ctx
      *ctx, const struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/libyang/src/plugins_types/decimal64.c:53,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/decimal64.c:54,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/decimal64.c:57,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/decimal64.c:63,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/decimal64.c:78,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - num
    - type
    - str
    argTypes:
    - int64_t
    - struct lysc_type_dec*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 83
    functionName: decimal64_num2str
    functionSourceFile: /src/libyang/src/plugins_types/decimal64.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - sprintf
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR decimal64_num2str(int64_t num, struct lysc_type_dec *type, char
      **str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/decimal64.c:97,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/decimal64.c:103,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/decimal64.c:112,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/decimal64.c:113,1
    - Dst: lyplg_type_parse_dec64
      Src: /src/libyang/src/plugins_types/decimal64.c:116,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/decimal64.c:117,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/decimal64.c:127,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/decimal64.c:129,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/decimal64.c:131,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/decimal64.c:132,1
    - Dst: decimal64_num2str
      Src: /src/libyang/src/plugins_types/decimal64.c:136,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/decimal64.c:137,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/decimal64.c:140,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/decimal64.c:141,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/decimal64.c:146,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/decimal64.c:147,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/decimal64.c:148,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/decimal64.c:153,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/decimal64.c:157,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 85
    functionDepth: 4
    functionLinenumber: 85
    functionLinenumberEnd: 160
    functionName: lyplg_type_store_decimal64
    functionSourceFile: /src/libyang/src/plugins_types/decimal64.c
    functionUses: 0
    functionsReached:
    - lyplg_type_parse_dec64
    - strlen
    - memset
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lydict_insert_zc
    - lydict_insert
    - lyplg_type_validate_range
    - LY_CHECK_GOTO
    - decimal64_num2str
    - lyplg_type_free_simple
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_decimal64(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n        const
      struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres
      *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 174
    functionName: lyplg_type_compare_decimal64
    functionSourceFile: /src/libyang/src/plugins_types/decimal64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_decimal64(const struct lyd_value *val1, const
      struct lyd_value *val2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/decimal64.c:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 196
    functionName: lyplg_type_print_decimal64
    functionSourceFile: /src/libyang/src/plugins_types/decimal64.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_decimal64(const struct ly_ctx *UNUSED(ctx),
      const struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ly_value_prefix_next
      Src: /src/libyang/src/plugins_types/xpath1.0.c:82,1
    - Dst: lyplg_type_identity_module
      Src: /src/libyang/src/plugins_types/xpath1.0.c:86,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:88,1
    - Dst: lyplg_type_get_prefix
      Src: /src/libyang/src/plugins_types/xpath1.0.c:93,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:95,1
    - Dst: realloc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:100,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:100,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:101,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:101,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/xpath1.0.c:103,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:104,1
    - Dst: realloc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:112,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:112,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:113,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:113,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/xpath1.0.c:115,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:116,1
    - Dst: realloc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:119,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:120,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:120,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/xpath1.0.c:122,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:131,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 48
    argCount: 11
    argNames:
    - token
    - tok_len
    - is_nametest
    - resolve_ctx
    - resolve_format
    - resolve_prefix_data
    - get_format
    - get_prefix_data
    - prev_prefix
    - token_p
    - err
    argTypes:
    - char*
    - uint16_t
    - ly_bool
    - struct ly_ctx*
    - LY_VALUE_FORMAT
    - void*
    - LY_VALUE_FORMAT
    - void*
    - char**
    - char**
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 66
    functionDepth: 6
    functionLinenumber: 66
    functionLinenumberEnd: 136
    functionName: xpath10_print_token
    functionSourceFile: /src/libyang/src/plugins_types/xpath1.0.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - ly_value_prefix_next
    - free
    - ly_err_new
    - lyplg_type_identity_module
    - sprintf
    - lyplg_type_get_prefix
    - realloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR xpath10_print_token(const char *token, uint16_t tok_len, ly_bool
      is_nametest, const struct ly_ctx *resolve_ctx,\n        LY_VALUE_FORMAT resolve_format,
      const void *resolve_prefix_data, LY_VALUE_FORMAT get_format,\n        void *get_prefix_data,
      const char **prev_prefix, char **token_p, struct ly_err_item **err)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:167,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:168,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:168,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/xpath1.0.c:170,1
    - Dst: xpath10_print_token
      Src: /src/libyang/src/plugins_types/xpath1.0.c:176,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:178,1
    - Dst: realloc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:181,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:181,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:182,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:182,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:182,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/xpath1.0.c:184,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:185,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:187,1
    - Dst: realloc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:193,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:193,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:194,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:194,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/xpath1.0.c:196,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:201,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 5
    argNames:
    - xp_val
    - format
    - prefix_data
    - str_value
    - err
    argTypes:
    - struct lyd_value_xpath10*
    - LY_VALUE_FORMAT
    - void*
    - char**
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 148
    functionDepth: 7
    functionLinenumber: 148
    functionLinenumberEnd: 206
    functionName: xpath10_print_value
    functionSourceFile: /src/libyang/src/plugins_types/xpath1.0.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - xpath10_print_token
    - free
    - ly_err_new
    - sprintf
    - LY_CHECK_GOTO
    - realloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR xpath10_print_value(const struct lyd_value_xpath10 *xp_val,
      LY_VALUE_FORMAT format, void *prefix_data,\n        char **str_value, struct
      ly_err_item **err)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/xpath1.0.c:220,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/xpath1.0.c:221,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:222,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/xpath1.0.c:226,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:227,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/xpath1.0.c:232,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/xpath1.0.c:232,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:233,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/xpath1.0.c:237,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:238,1
    - Dst: lyplg_type_prefix_data_new
      Src: /src/libyang/src/plugins_types/xpath1.0.c:241,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:242,1
    - Dst: lyxp_expr_parse
      Src: /src/libyang/src/plugins_types/xpath1.0.c:246,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:247,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:252,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:254,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/xpath1.0.c:256,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:257,1
    - Dst: xpath10_print_value
      Src: /src/libyang/src/plugins_types/xpath1.0.c:261,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:262,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/xpath1.0.c:264,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:265,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:270,1
    - Dst: lyplg_type_free_xpath10
      Src: /src/libyang/src/plugins_types/xpath1.0.c:274,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - prefix_data
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 208
    functionDepth: 12
    functionLinenumber: 208
    functionLinenumberEnd: 277
    functionName: lyplg_type_store_xpath10
    functionSourceFile: /src/libyang/src/plugins_types/xpath1.0.c
    functionUses: 0
    functionsReached:
    - lyplg_type_free_xpath10
    - LY_CHECK_ERR_GOTO
    - ly_utf8len
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - xpath10_print_value
    - free
    - lyplg_type_check_hints
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lyplg_type_validate_range
    - lydict_insert
    - LY_CHECK_GOTO
    - lyxp_expr_parse
    - lyplg_type_prefix_data_new
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_xpath10(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *prefix_data, uint32_t hints,\n        const struct
      lysc_node *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres
      *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/xpath1.0.c:287,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:295,1
    - Dst: xpath10_print_value
      Src: /src/libyang/src/plugins_types/xpath1.0.c:301,1
    - Dst: LOGVAL_ERRITEM
      Src: /src/libyang/src/plugins_types/xpath1.0.c:303,1
    - Dst: ly_err_free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:304,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:311,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - prefix_data
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 279
    functionDepth: 8
    functionLinenumber: 279
    functionLinenumberEnd: 314
    functionName: lyplg_type_print_xpath10
    functionSourceFile: /src/libyang/src/plugins_types/xpath1.0.c
    functionUses: 0
    functionsReached:
    - strlen
    - xpath10_print_value
    - ly_err_free
    - LYD_VALUE_GET
    - LOGVAL_ERRITEM
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_xpath10(const struct ly_ctx *ctx, const struct
      lyd_value *value, LY_VALUE_FORMAT format,\n        void *prefix_data, ly_bool
      *dynamic, size_t *value_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/xpath1.0.c:323,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/xpath1.0.c:326,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/xpath1.0.c:326,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:327,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/xpath1.0.c:329,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:330,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/xpath1.0.c:330,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/xpath1.0.c:333,1
    - Dst: lyxp_expr_dup
      Src: /src/libyang/src/plugins_types/xpath1.0.c:334,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:335,1
    - Dst: lyplg_type_prefix_data_dup
      Src: /src/libyang/src/plugins_types/xpath1.0.c:337,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/xpath1.0.c:338,1
    - Dst: lyplg_type_free_xpath10
      Src: /src/libyang/src/plugins_types/xpath1.0.c:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 316
    functionDepth: 5
    functionLinenumber: 316
    functionLinenumberEnd: 346
    functionName: lyplg_type_dup_xpath10
    functionSourceFile: /src/libyang/src/plugins_types/xpath1.0.c
    functionUses: 0
    functionsReached:
    - lyplg_type_free_xpath10
    - LY_CHECK_ERR_GOTO
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - LYD_VALUE_GET
    - lydict_insert
    - lyxp_expr_dup
    - LY_CHECK_GOTO
    - lyplg_type_prefix_data_dup
    - ly_strlen
    - LOGMEM
    linkageType: ''
    returnType: API
    signature: API lyplg_type_dup_xpath10(const struct ly_ctx *ctx, const struct lyd_value
      *original, struct lyd_value *dup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/xpath1.0.c:353,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/xpath1.0.c:354,1
    - Dst: lyxp_expr_free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:356,1
    - Dst: lyplg_type_prefix_data_free
      Src: /src/libyang/src/plugins_types/xpath1.0.c:357,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/xpath1.0.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 348
    functionDepth: 4
    functionLinenumber: 348
    functionLinenumberEnd: 361
    functionName: lyplg_type_free_xpath10
    functionSourceFile: /src/libyang/src/plugins_types/xpath1.0.c
    functionUses: 2
    functionsReached:
    - lyxp_expr_free
    - LYD_VALUE_GET
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - lyplg_type_prefix_data_free
    linkageType: ''
    returnType: API
    signature: API lyplg_type_free_xpath10(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct lysc_type*::plugin::store
      Src: /src/libyang/src/plugins_types/union.c:72,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/union.c:74,1
    - Dst: struct lyd_value_union*::value::realtype::plugin::validate
      Src: /src/libyang/src/plugins_types/union.c:78,1
    - Dst: struct lysc_type*::plugin::free
      Src: /src/libyang/src/plugins_types/union.c:81,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 8
    argNames:
    - ctx
    - type
    - subvalue
    - resolve
    - ctx_node
    - tree
    - unres
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - struct lyd_value_union*
    - ly_bool
    - struct lyd_node*
    - struct lyd_node*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 86
    functionName: union_store_type
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - struct lyd_value_union*::value::realtype::plugin::validate
    - struct lysc_type*::plugin::free
    - struct lysc_type*::plugin::store
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR union_store_type(const struct ly_ctx *ctx, struct lysc_type
      *type, struct lyd_value_union *subvalue,\n        ly_bool resolve, const struct
      lyd_node *ctx_node, const struct lyd_node *tree, struct lys_glob_unres *unres,\n
      \       struct ly_err_item **err)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/union.c:110,1
    - Dst: ly_log_options
      Src: /src/libyang/src/plugins_types/union.c:117,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/union.c:120,1
    - Dst: union_store_type
      Src: /src/libyang/src/plugins_types/union.c:121,1
    - Dst: ly_err_free
      Src: /src/libyang/src/plugins_types/union.c:126,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/union.c:130,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/union.c:131,1
    - Dst: ly_log_options
      Src: /src/libyang/src/plugins_types/union.c:136,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 8
    argNames:
    - ctx
    - types
    - subvalue
    - resolve
    - ctx_node
    - tree
    - unres
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type**
    - struct lyd_value_union*
    - ly_bool
    - struct lyd_node*
    - struct lyd_node*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 138
    functionName: union_find_type
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - ly_err_free
    - ly_err_new
    - union_store_type
    - ly_log_options
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR union_find_type(const struct ly_ctx *ctx, struct lysc_type
      **types, struct lyd_value_union *subvalue,\n        ly_bool resolve, const struct
      lyd_node *ctx_node, const struct lyd_node *tree, struct lys_glob_unres *unres,\n
      \       struct ly_err_item **err)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/union.c:153,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/union.c:154,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/union.c:155,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/union.c:161,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/union.c:166,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/union.c:167,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/union.c:168,1
    - Dst: calloc
      Src: /src/libyang/src/plugins_types/union.c:179,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/union.c:180,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/union.c:181,1
    - Dst: lyplg_type_prefix_data_new
      Src: /src/libyang/src/plugins_types/union.c:186,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/union.c:188,1
    - Dst: union_store_type
      Src: /src/libyang/src/plugins_types/union.c:194,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/union.c:195,1
    - Dst: union_find_type
      Src: /src/libyang/src/plugins_types/union.c:198,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/union.c:199,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/union.c:203,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/union.c:204,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/union.c:208,1
    - Dst: lyplg_type_free_union
      Src: /src/libyang/src/plugins_types/union.c:212,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - prefix_data
    - hints
    - ctx_node
    - storage
    - unres
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 140
    functionDepth: 5
    functionLinenumber: 140
    functionLinenumberEnd: 215
    functionName: lyplg_type_store_union
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - union_find_type
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - LY_ARRAY_COUNT
    - free
    - ly_err_new
    - union_store_type
    - lydict_insert
    - lyplg_type_free_union
    - LY_CHECK_GOTO
    - memcpy
    - lyplg_type_prefix_data_new
    - calloc
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_union(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *prefix_data, uint32_t hints, const struct lysc_node
      *ctx_node,\n        struct lyd_value *storage, struct lys_glob_unres *unres,
      struct ly_err_item **err)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value_union*::value::realtype::plugin::validate
      Src: /src/libyang/src/plugins_types/union.c:233,1
    - Dst: ly_err_free
      Src: /src/libyang/src/plugins_types/union.c:242,1
    - Dst: union_store_type
      Src: /src/libyang/src/plugins_types/union.c:248,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/union.c:249,1
    - Dst: union_find_type
      Src: /src/libyang/src/plugins_types/union.c:252,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/union.c:253,1
    - Dst: union_find_type
      Src: /src/libyang/src/plugins_types/union.c:257,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/union.c:258,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/union.c:261,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/union.c:262,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/union.c:262,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 6
    argNames:
    - ctx
    - type
    - ctx_node
    - tree
    - storage
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_value*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 217
    functionDepth: 4
    functionLinenumber: 217
    functionLinenumberEnd: 264
    functionName: lyplg_type_validate_union
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 0
    functionsReached:
    - union_find_type
    - ly_err_free
    - LY_CHECK_RET
    - lydict_remove
    - union_store_type
    - lydict_insert
    - struct lyd_value_union*::value::realtype::plugin::validate
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_validate_union(const struct ly_ctx *ctx, const struct
      lysc_type *type, const struct lyd_node *ctx_node,\n        const struct lyd_node
      *tree, struct lyd_value *storage, struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::subvalue::value::realtype::plugin::compare
      Src: /src/libyang/src/plugins_types/union.c:276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 277
    functionName: lyplg_type_compare_union
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 0
    functionsReached:
    - struct lyd_value*::subvalue::value::realtype::plugin::compare
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_union(const struct lyd_value *val1, const struct
      lyd_value *val2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::subvalue::value::realtype::plugin::print
      Src: /src/libyang/src/plugins_types/union.c:285,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/union.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - prefix_data
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 279
    functionDepth: 4
    functionLinenumber: 279
    functionLinenumberEnd: 292
    functionName: lyplg_type_print_union
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 0
    functionsReached:
    - lydict_insert
    - struct lyd_value*::subvalue::value::realtype::plugin::print
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_union(const struct ly_ctx *ctx, const struct
      lyd_value *value, LY_VALUE_FORMAT format,\n        void *prefix_data, ly_bool
      *dynamic, size_t *value_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/union.c:301,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/union.c:304,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/union.c:304,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/union.c:305,1
    - Dst: calloc
      Src: /src/libyang/src/plugins_types/union.c:307,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/union.c:308,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/union.c:308,1
    - Dst: struct lyd_value_union*::value::realtype::plugin::duplicate
      Src: /src/libyang/src/plugins_types/union.c:311,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/union.c:312,1
    - Dst: calloc
      Src: /src/libyang/src/plugins_types/union.c:314,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/union.c:315,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/union.c:315,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/union.c:316,1
    - Dst: lyplg_type_prefix_data_dup
      Src: /src/libyang/src/plugins_types/union.c:320,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/union.c:321,1
    - Dst: lyplg_type_free_union
      Src: /src/libyang/src/plugins_types/union.c:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 294
    functionDepth: 4
    functionLinenumber: 294
    functionLinenumberEnd: 328
    functionName: lyplg_type_dup_union
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - memset
    - struct lyd_value_union*::value::realtype::plugin::duplicate
    - lydict_insert
    - lyplg_type_free_union
    - LY_CHECK_GOTO
    - lyplg_type_prefix_data_dup
    - memcpy
    - ly_strlen
    - LOGMEM
    - calloc
    linkageType: ''
    returnType: API
    signature: API lyplg_type_dup_union(const struct ly_ctx *ctx, const struct lyd_value
      *original, struct lyd_value *dup)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/union.c:335,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/union.c:336,1
    - Dst: struct lyd_value_union*::value::realtype::plugin::free
      Src: /src/libyang/src/plugins_types/union.c:339,1
    - Dst: lyplg_type_prefix_data_free
      Src: /src/libyang/src/plugins_types/union.c:341,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/union.c:342,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/union.c:344,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 346
    functionName: lyplg_type_free_union
    functionSourceFile: /src/libyang/src/plugins_types/union.c
    functionUses: 2
    functionsReached:
    - free
    - LYD_VALUE_GET
    - lydict_remove
    - struct lyd_value_union*::value::realtype::plugin::free
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - lyplg_type_prefix_data_free
    linkageType: ''
    returnType: API
    signature: API lyplg_type_free_union(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/string.c:47,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/string.c:51,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/string.c:52,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/string.c:57,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/string.c:57,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/string.c:58,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/string.c:62,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/string.c:63,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/string.c:67,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/string.c:69,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/string.c:71,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/string.c:72,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/string.c:77,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/string.c:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - UNUSED
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 37
    functionDepth: 4
    functionLinenumber: 37
    functionLinenumberEnd: 84
    functionName: lyplg_type_store_string
    functionSourceFile: /src/libyang/src/plugins_types/string.c
    functionUses: 0
    functionsReached:
    - ly_utf8len
    - memset
    - free
    - lyplg_type_check_hints
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lyplg_type_validate_range
    - lydict_insert
    - LY_CHECK_GOTO
    - lyplg_type_free_simple
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_string(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT UNUSED(format), void *UNUSED(prefix_data), uint32_t hints,\n
      \       const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:77,1
    - Dst: inet_pton
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:82,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:83,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 5
    argNames:
    - value
    - value_len
    - options
    - addr
    - err
    argTypes:
    - char*
    - size_t
    - uint32_t
    - struct in6_addr*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 90
    functionName: ipv6addressnozone_str2ip
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address_no_zone.c
    functionUses: 0
    functionsReached:
    - strndup
    - inet_pton
    - free
    - ly_err_new
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ipv6addressnozone_str2ip(const char *value, size_t value_len,
      uint32_t options, struct in6_addr *addr, struct ly_err_item **err)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:106,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:112,1
    - Dst: LYPLG_TYPE_VAL_IS_DYN
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:117,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:123,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:124,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:127,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:135,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:136,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:139,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:140,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:145,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:145,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:146,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:150,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:151,1
    - Dst: ipv6addressnozone_str2ip
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:154,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:155,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:160,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:162,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:164,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:165,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:171,1
    - Dst: lyplg_type_free_ipv6_address_no_zone
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:175,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 178
    functionName: lyplg_type_store_ipv6_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address_no_zone.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - LYPLG_TYPE_VAL_IS_DYN
    - ly_utf8len
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lyplg_type_validate_range
    - lydict_insert
    - LY_CHECK_GOTO
    - lyplg_type_free_ipv6_address_no_zone
    - ipv6addressnozone_str2ip
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyplg_type_store_ipv6_address_no_zone(const struct ly_ctx *ctx,
      const struct lysc_type *type, const void *value,\n        size_t value_len,
      uint32_t options, LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t
      hints,\n        const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:192,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:193,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 199
    functionName: lyplg_type_compare_ipv6_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address_no_zone.c
    functionUses: 0
    functionsReached:
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_compare_ipv6_address_no_zone(const struct lyd_value
      *val1, const struct lyd_value *val2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:211,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:224,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:225,1
    - Dst: inet_ntop
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:228,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:229,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:230,1
    - Dst: strerror
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:230,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:235,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:236,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:246,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 204
    functionDepth: 4
    functionLinenumber: 204
    functionLinenumberEnd: 249
    functionName: lyplg_type_print_ipv6_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address_no_zone.c
    functionUses: 0
    functionsReached:
    - strlen
    - malloc
    - strerror
    - LOGERR
    - free
    - LYD_VALUE_GET
    - lydict_insert_zc
    - LY_CHECK_RET
    - inet_ntop
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: "void *\nlyplg_type_print_ipv6_address_no_zone(const struct ly_ctx
      *ctx, const struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:260,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:260,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:261,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:263,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:265,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:269,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 254
    functionDepth: 4
    functionLinenumber: 254
    functionLinenumberEnd: 274
    functionName: lyplg_type_dup_ipv6_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address_no_zone.c
    functionUses: 0
    functionsReached:
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - LYD_VALUE_GET
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert
    - ly_strlen
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_dup_ipv6_address_no_zone(const struct ly_ctx *ctx,
      const struct lyd_value *original, struct lyd_value *dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:284,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:285,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/ipv6_address_no_zone.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 287
    functionName: lyplg_type_free_ipv6_address_no_zone
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address_no_zone.c
    functionUses: 1
    functionsReached:
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - LYD_VALUE_GET
    linkageType: ''
    returnType: void
    signature: void lyplg_type_free_ipv6_address_no_zone(const struct ly_ctx *ctx,
      struct lyd_value *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_strnchr
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:74,1
    - Dst: ly_strntou8
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:75,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:78,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:79,1
    - Dst: inet_pton
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:82,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:83,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - value
    - value_len
    - addr
    - prefix
    - err
    argTypes:
    - char*
    - size_t
    - struct in_addr*
    - uint8_t*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 90
    functionName: ipv4prefix_str2ip
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_prefix.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ly_strnchr
    - free
    - ly_err_new
    - inet_pton
    - ly_strntou8
    - strndup
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ipv4prefix_str2ip(const char *value, size_t value_len, struct
      in_addr *addr, uint8_t *prefix, struct ly_err_item **err)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - addr
    - prefix
    argTypes:
    - struct in_addr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 113
    functionName: ipv4prefix_zero_host
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_prefix.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: void ipv4prefix_zero_host(struct in_addr *addr, uint8_t prefix)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:129,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:130,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:131,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:137,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:142,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:148,1
    - Dst: ipv4prefix_zero_host
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:151,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:158,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:159,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:164,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:164,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:165,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:169,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:170,1
    - Dst: ipv4prefix_str2ip
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:173,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:174,1
    - Dst: ipv4prefix_zero_host
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:177,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:182,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:184,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:186,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:187,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:193,1
    - Dst: lyplg_type_free_ipv4_prefix
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:197,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 118
    functionDepth: 4
    functionLinenumber: 118
    functionLinenumberEnd: 200
    functionName: lyplg_type_store_ipv4_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_prefix.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ipv4prefix_zero_host
    - ly_utf8len
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - ipv4prefix_str2ip
    - lyplg_type_validate_range
    - lydict_insert
    - lyplg_type_free_ipv4_prefix
    - LY_CHECK_GOTO
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyplg_type_store_ipv4_prefix(const struct ly_ctx *ctx, const
      struct lysc_type *type, const void *value, size_t value_len,\n        uint32_t
      options, LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n
      \       const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:214,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:215,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 221
    functionName: lyplg_type_compare_ipv4_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_prefix.c
    functionUses: 0
    functionsReached:
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_compare_ipv4_prefix(const struct lyd_value *val1,
      const struct lyd_value *val2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:233,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:246,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:247,1
    - Dst: inet_ntop
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:250,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:251,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:256,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:256,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:259,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:260,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:270,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 273
    functionName: lyplg_type_print_ipv4_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_prefix.c
    functionUses: 0
    functionsReached:
    - strlen
    - malloc
    - free
    - LYD_VALUE_GET
    - lydict_insert_zc
    - LY_CHECK_RET
    - inet_ntop
    - sprintf
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: "void *\nlyplg_type_print_ipv4_prefix(const struct ly_ctx *ctx, const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:284,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:284,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:285,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:287,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:289,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:293,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 278
    functionDepth: 4
    functionLinenumber: 278
    functionLinenumberEnd: 298
    functionName: lyplg_type_dup_ipv4_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_prefix.c
    functionUses: 0
    functionsReached:
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - LYD_VALUE_GET
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert
    - ly_strlen
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_dup_ipv4_prefix(const struct ly_ctx *ctx, const struct
      lyd_value *original, struct lyd_value *dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:308,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:309,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/ipv4_prefix.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 311
    functionName: lyplg_type_free_ipv4_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_prefix.c
    functionUses: 1
    functionsReached:
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - LYD_VALUE_GET
    linkageType: ''
    returnType: void
    signature: void lyplg_type_free_ipv4_prefix(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_strnchr
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:74,1
    - Dst: ly_strntou8
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:75,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:78,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:79,1
    - Dst: inet_pton
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:82,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:83,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - value
    - value_len
    - addr
    - prefix
    - err
    argTypes:
    - char*
    - size_t
    - struct in6_addr*
    - uint8_t*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 90
    functionName: ipv6prefix_str2ip
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_prefix.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ly_strnchr
    - free
    - ly_err_new
    - inet_pton
    - ly_strntou8
    - strndup
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR ipv6prefix_str2ip(const char *value, size_t value_len, struct
      in6_addr *addr, uint8_t *prefix, struct ly_err_item **err)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - addr
    - prefix
    argTypes:
    - struct in6_addr*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 115
    functionName: ipv6prefix_zero_host
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_prefix.c
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: void
    signature: void ipv6prefix_zero_host(struct in6_addr *addr, uint8_t prefix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:131,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:137,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:142,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:152,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:153,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:155,1
    - Dst: ipv6prefix_zero_host
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:159,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:166,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:167,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:170,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:171,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:176,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:176,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:177,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:181,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:182,1
    - Dst: ipv6prefix_str2ip
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:185,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:186,1
    - Dst: ipv6prefix_zero_host
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:189,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:194,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:196,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:198,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:199,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:205,1
    - Dst: lyplg_type_free_ipv6_prefix
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:209,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 58
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 212
    functionName: lyplg_type_store_ipv6_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_prefix.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - lyplg_type_free_ipv6_prefix
    - ly_utf8len
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lyplg_type_validate_range
    - lydict_insert
    - LY_CHECK_GOTO
    - ipv6prefix_zero_host
    - ipv6prefix_str2ip
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyplg_type_store_ipv6_prefix(const struct ly_ctx *ctx, const
      struct lysc_type *type, const void *value, size_t value_len,\n        uint32_t
      options, LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n
      \       const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:226,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:227,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: lyplg_type_compare_ipv6_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_prefix.c
    functionUses: 0
    functionsReached:
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_compare_ipv6_prefix(const struct lyd_value *val1,
      const struct lyd_value *val2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:245,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:258,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:259,1
    - Dst: inet_ntop
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:262,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:263,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:268,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:268,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:271,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:272,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:282,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 285
    functionName: lyplg_type_print_ipv6_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_prefix.c
    functionUses: 0
    functionsReached:
    - strlen
    - malloc
    - free
    - LYD_VALUE_GET
    - lydict_insert_zc
    - LY_CHECK_RET
    - inet_ntop
    - sprintf
    - LOGMEM
    linkageType: ''
    returnType: void
    signature: "void *\nlyplg_type_print_ipv6_prefix(const struct ly_ctx *ctx, const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:296,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:296,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:297,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:299,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:301,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:305,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 310
    functionName: lyplg_type_dup_ipv6_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_prefix.c
    functionUses: 0
    functionsReached:
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - LYD_VALUE_GET
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert
    - ly_strlen
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_dup_ipv6_prefix(const struct ly_ctx *ctx, const struct
      lyd_value *original, struct lyd_value *dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:320,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:321,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/ipv6_prefix.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 323
    functionName: lyplg_type_free_ipv6_prefix
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_prefix.c
    functionUses: 1
    functionsReached:
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - LYD_VALUE_GET
    linkageType: ''
    returnType: void
    signature: void lyplg_type_free_ipv6_prefix(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type_bits
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: BITS_LAST_BIT_POSITION
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITS_LAST_BIT_POSITION(type_bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - bitmap
    - ','
    - size
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: BITS_BITMAP_BYTE
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITS_BITMAP_BYTE(bitmap, size, idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - bitmap
    - ','
    - size
    - ','
    - idx
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: BITS_BITMAP_BYTE
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BITS_BITMAP_BYTE(bitmap, size, idx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_CHECK_ARG_RET
      Src: /src/libyang/src/plugins_types/bits.c:61,1
    - Dst: BITS_LAST_BIT_POSITION
      Src: /src/libyang/src/plugins_types/bits.c:64,1
    - Dst: BITS_LAST_BIT_POSITION
      Src: /src/libyang/src/plugins_types/bits.c:64,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/plugins_types/bits.c:65,1
    - Dst: LOGINT
      Src: /src/libyang/src/plugins_types/bits.c:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - type
    argTypes:
    - struct lysc_type_bits*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 82
    functionName: lyplg_type_bits_bitmap_size
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - BITS_LAST_BIT_POSITION
    - LY_CHECK_ARG_RET
    - LOGINT
    - LY_CHECK_ERR_RET
    linkageType: ''
    returnType: API
    signature: API lyplg_type_bits_bitmap_size(const struct lysc_type_bits *type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BITS_BITMAP_BYTE
      Src: /src/libyang/src/plugins_types/bits.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - bitmap
    - size
    - bit_position
    argTypes:
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 103
    functionName: lyplg_type_bits_is_bit_set
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - BITS_BITMAP_BYTE
    linkageType: ''
    returnType: API
    signature: API lyplg_type_bits_is_bit_set(const char *bitmap, size_t size, uint32_t
      bit_position)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BITS_BITMAP_BYTE
      Src: /src/libyang/src/plugins_types/bits.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - bitmap
    - size
    - bit_position
    argTypes:
    - char*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 128
    functionName: bits_bit_set
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - BITS_BITMAP_BYTE
    linkageType: ''
    returnType: void
    signature: void bits_bit_set(char *bitmap, size_t size, uint32_t bit_position)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/libyang/src/plugins_types/bits.c:150,1
    - Dst: isspace
      Src: /src/libyang/src/plugins_types/bits.c:159,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/bits.c:165,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types/bits.c:166,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/bits.c:174,1
    - Dst: lyplg_type_bits_is_bit_set
      Src: /src/libyang/src/plugins_types/bits.c:179,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:179,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/bits.c:180,1
    - Dst: bits_bit_set
      Src: /src/libyang/src/plugins_types/bits.c:184,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:184,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 5
    argNames:
    - value
    - value_len
    - type
    - bitmap
    - err
    argTypes:
    - char*
    - size_t
    - struct lysc_type_bits*
    - char*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 188
    functionName: bits_str2bitmap
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - ly_strncmp
    - lyplg_type_bits_is_bit_set
    - ly_err_new
    - LY_ARRAY_FOR
    - lyplg_type_bits_bitmap_size
    - isspace
    - bits_bit_set
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR bits_str2bitmap(const char *value, size_t value_len, struct
      lysc_type_bits *type, char *bitmap, struct ly_err_item **err)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/bits.c:203,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/bits.c:210,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_types/bits.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - position
    - type
    - items
    argTypes:
    - uint32_t
    - struct lysc_type_bits*
    - struct lysc_type_bitenum_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 212
    functionName: bits_add_item
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - LY_ARRAY_FOR
    - LY_ARRAY_INCREMENT
    linkageType: ''
    returnType: void
    signature: void bits_add_item(uint32_t position, struct lysc_type_bits *type,
      struct lysc_type_bitenum_item **items)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:224,1
    - Dst: BITS_BITMAP_BYTE
      Src: /src/libyang/src/plugins_types/bits.c:232,1
    - Dst: bits_add_item
      Src: /src/libyang/src/plugins_types/bits.c:236,1
    - Dst: BITS_LAST_BIT_POSITION
      Src: /src/libyang/src/plugins_types/bits.c:239,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - bitmap
    - type
    - items
    argTypes:
    - char*
    - struct lysc_type_bits*
    - struct lysc_type_bitenum_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 247
    functionName: bits_bitmap2items
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - BITS_LAST_BIT_POSITION
    - lyplg_type_bits_bitmap_size
    - BITS_BITMAP_BYTE
    - bits_add_item
    linkageType: ''
    returnType: void
    signature: void bits_bitmap2items(const char *bitmap, struct lysc_type_bits *type,
      struct lysc_type_bitenum_item **items)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/libyang/src/plugins_types/bits.c:266,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/bits.c:267,1
    - Dst: ly_realloc
      Src: /src/libyang/src/plugins_types/bits.c:272,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:272,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/bits.c:273,1
    - Dst: strcpy
      Src: /src/libyang/src/plugins_types/bits.c:274,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:276,1
    - Dst: ly_realloc
      Src: /src/libyang/src/plugins_types/bits.c:278,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:278,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/bits.c:279,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/bits.c:280,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - items
    - canonical
    argTypes:
    - struct lysc_type_bitenum_item**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 288
    functionName: bits_items2canon
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - strlen
    - strcpy
    - strdup
    - LY_CHECK_RET
    - sprintf
    - ly_realloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR bits_items2canon(struct lysc_type_bitenum_item **items, char
      **canonical)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_realloc
      Src: /src/libyang/src/plugins_types/bits.c:272,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:272,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/bits.c:273,1
    - Dst: strcpy
      Src: /src/libyang/src/plugins_types/bits.c:274,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:276,1
    - Dst: ly_realloc
      Src: /src/libyang/src/plugins_types/bits.c:278,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:278,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/bits.c:279,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/bits.c:280,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 284
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 120
    functionsReached:
    - strlen
    - strcpy
    - LY_CHECK_RET
    - sprintf
    - ly_realloc
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(items, u)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/bits.c:301,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/bits.c:302,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:303,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:308,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/bits.c:309,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:310,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/bits.c:319,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:320,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/bits.c:321,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:325,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/bits.c:325,1
    - Dst: bits_bitmap2items
      Src: /src/libyang/src/plugins_types/bits.c:326,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/bits.c:333,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:334,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/bits.c:337,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:337,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:338,1
    - Dst: memset
      Src: /src/libyang/src/plugins_types/bits.c:339,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:339,1
    - Dst: bits_str2bitmap
      Src: /src/libyang/src/plugins_types/bits.c:342,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:343,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:346,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/bits.c:346,1
    - Dst: bits_bitmap2items
      Src: /src/libyang/src/plugins_types/bits.c:347,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/bits.c:352,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:354,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/bits.c:356,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:357,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/bits.c:363,1
    - Dst: lyplg_type_free_bits
      Src: /src/libyang/src/plugins_types/bits.c:367,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 370
    functionName: lyplg_type_store_bits
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - bits_bitmap2items
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - malloc
    - LY_ARRAY_COUNT
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - LY_ARRAY_CREATE_GOTO
    - lyplg_type_bits_bitmap_size
    - bits_str2bitmap
    - lydict_insert_zc
    - lydict_insert
    - lyplg_type_free_bits
    - LY_CHECK_GOTO
    - memcpy
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_bits(const struct ly_ctx *ctx, const struct lysc_type
      *type, const void *value, size_t value_len,\n        uint32_t options, LY_VALUE_FORMAT
      format, void *UNUSED(prefix_data), uint32_t hints,\n        const struct lysc_node
      *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres *UNUSED(unres),\n
      \       struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/bits.c:382,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/bits.c:383,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/bits.c:385,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 389
    functionName: lyplg_type_compare_bits
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - lyplg_type_bits_bitmap_size
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_bits(const struct lyd_value *val1, const struct
      lyd_value *val2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/bits.c:399,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:404,1
    - Dst: bits_items2canon
      Src: /src/libyang/src/plugins_types/bits.c:412,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/bits.c:417,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/bits.c:418,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/bits.c:428,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 391
    functionDepth: 4
    functionLinenumber: 391
    functionLinenumberEnd: 431
    functionName: lyplg_type_print_bits
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - strlen
    - bits_items2canon
    - LYD_VALUE_GET
    - lydict_insert_zc
    - lyplg_type_bits_bitmap_size
    - LOGMEM
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_bits(const struct ly_ctx *ctx, const struct
      lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/bits.c:441,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/bits.c:444,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/bits.c:444,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:445,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/bits.c:448,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:449,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/bits.c:451,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/bits.c:454,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:454,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:455,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/bits.c:456,1
    - Dst: lyplg_type_bits_bitmap_size
      Src: /src/libyang/src/plugins_types/bits.c:456,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/plugins_types/bits.c:459,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/bits.c:459,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/bits.c:460,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_types/bits.c:461,1
    - Dst: lyplg_type_free_bits
      Src: /src/libyang/src/plugins_types/bits.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 433
    functionDepth: 4
    functionLinenumber: 433
    functionLinenumberEnd: 471
    functionName: lyplg_type_dup_bits
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - LY_ARRAY_INCREMENT
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - malloc
    - LY_ARRAY_COUNT
    - LYD_VALUE_GET
    - LY_ARRAY_CREATE_GOTO
    - lyplg_type_bits_bitmap_size
    - LY_ARRAY_FOR
    - lydict_insert
    - lyplg_type_free_bits
    - LY_CHECK_GOTO
    - ly_strlen
    - memcpy
    linkageType: ''
    returnType: API
    signature: API lyplg_type_dup_bits(const struct ly_ctx *ctx, const struct lyd_value
      *original, struct lyd_value *dup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/bits.c:478,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/bits.c:479,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/bits.c:481,1
    - Dst: LY_ARRAY_FREE
      Src: /src/libyang/src/plugins_types/bits.c:482,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/bits.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 485
    functionName: lyplg_type_free_bits
    functionSourceFile: /src/libyang/src/plugins_types/bits.c
    functionUses: 2
    functionsReached:
    - free
    - LYD_VALUE_GET
    - lydict_remove
    - LY_ARRAY_FREE
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    linkageType: ''
    returnType: API
    signature: API lyplg_type_free_bits(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/libyang/src/plugins_types/leafref.c:46,1
    - Dst: struct lysc_type_leafref*::realtype::plugin::store
      Src: /src/libyang/src/plugins_types/leafref.c:49,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/leafref.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - prefix_data
    - hints
    - ctx_node
    - storage
    - unres
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts:
    - condition: (type_lr->realtype)
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/libyang/src/plugins_types/leafref.c
    constantsTouched: []
    func_position:
      end: 63
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 63
    functionName: lyplg_type_store_leafref
    functionSourceFile: /src/libyang/src/plugins_types/leafref.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_RET
    - struct lysc_type_leafref*::realtype::plugin::store
    - assert
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_leafref(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *prefix_data, uint32_t hints, const struct lysc_node
      *ctx_node,\n        struct lyd_value *storage, struct lys_glob_unres *unres,
      struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_type_resolve_leafref
      Src: /src/libyang/src/plugins_types/leafref.c:81,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/leafref.c:82,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/leafref.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - type
    - ctx_node
    - tree
    - storage
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_value*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 88
    functionName: lyplg_type_validate_leafref
    functionSourceFile: /src/libyang/src/plugins_types/leafref.c
    functionUses: 0
    functionsReached:
    - lyplg_type_resolve_leafref
    - free
    - ly_err_new
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_validate_leafref(const struct ly_ctx *UNUSED(ctx),
      const struct lysc_type *type, const struct lyd_node *ctx_node,\n        const
      struct lyd_node *tree, struct lyd_value *storage, struct ly_err_item **err)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::realtype::plugin::compare
      Src: /src/libyang/src/plugins_types/leafref.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: lyplg_type_compare_leafref
    functionSourceFile: /src/libyang/src/plugins_types/leafref.c
    functionUses: 0
    functionsReached:
    - struct lyd_value*::realtype::plugin::compare
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_leafref(const struct lyd_value *val1, const
      struct lyd_value *val2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::realtype::plugin::print
      Src: /src/libyang/src/plugins_types/leafref.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - prefix_data
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: lyplg_type_print_leafref
    functionSourceFile: /src/libyang/src/plugins_types/leafref.c
    functionUses: 0
    functionsReached:
    - struct lyd_value*::realtype::plugin::print
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_leafref(const struct ly_ctx *ctx, const struct
      lyd_value *value, LY_VALUE_FORMAT format,\n        void *prefix_data, ly_bool
      *dynamic, size_t *value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::realtype::plugin::duplicate
      Src: /src/libyang/src/plugins_types/leafref.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: lyplg_type_dup_leafref
    functionSourceFile: /src/libyang/src/plugins_types/leafref.c
    functionUses: 0
    functionsReached:
    - struct lyd_value*::realtype::plugin::duplicate
    linkageType: ''
    returnType: API
    signature: API lyplg_type_dup_leafref(const struct ly_ctx *ctx, const struct lyd_value
      *original, struct lyd_value *dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct lyd_value*::realtype::plugin::free
      Src: /src/libyang/src/plugins_types/leafref.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: lyplg_type_free_leafref
    functionSourceFile: /src/libyang/src/plugins_types/leafref.c
    functionUses: 0
    functionsReached:
    - struct lyd_value*::realtype::plugin::free
    linkageType: ''
    returnType: API
    signature: API lyplg_type_free_leafref(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/boolean.c:48,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/boolean.c:54,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/boolean.c:64,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/boolean.c:65,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/boolean.c:72,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/boolean.c:73,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/plugins_types/boolean.c:76,1
    - Dst: strncmp
      Src: /src/libyang/src/plugins_types/boolean.c:76,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/plugins_types/boolean.c:76,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/plugins_types/boolean.c:78,1
    - Dst: strncmp
      Src: /src/libyang/src/plugins_types/boolean.c:78,1
    - Dst: ly_strlen_const
      Src: /src/libyang/src/plugins_types/boolean.c:78,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/boolean.c:81,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/boolean.c:89,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/boolean.c:91,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/boolean.c:93,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/boolean.c:94,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/boolean.c:99,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/boolean.c:103,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 38
    functionDepth: 4
    functionLinenumber: 38
    functionLinenumberEnd: 106
    functionName: lyplg_type_store_boolean
    functionSourceFile: /src/libyang/src/plugins_types/boolean.c
    functionUses: 0
    functionsReached:
    - memset
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lydict_insert_zc
    - strncmp
    - lydict_insert
    - ly_strlen_const
    - LY_CHECK_GOTO
    - lyplg_type_free_simple
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_boolean(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n        const
      struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres
      *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 119
    functionName: lyplg_type_compare_boolean
    functionSourceFile: /src/libyang/src/plugins_types/boolean.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_boolean(const struct lyd_value *val1, const
      struct lyd_value *val2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/boolean.c:138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 141
    functionName: lyplg_type_print_boolean
    functionSourceFile: /src/libyang/src/plugins_types/boolean.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_boolean(const struct ly_ctx *UNUSED(ctx),
      const struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/libyang/src/plugins_types/identityref.c:57,1
    - Dst: lyplg_type_get_prefix
      Src: /src/libyang/src/plugins_types/identityref.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - ident
    - format
    - prefix_data
    - str
    - str_len
    argTypes:
    - struct lysc_ident*
    - LY_VALUE_FORMAT
    - void*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 52
    functionDepth: 4
    functionLinenumber: 52
    functionLinenumberEnd: 66
    functionName: identityref_ident2str
    functionSourceFile: /src/libyang/src/plugins_types/identityref.c
    functionUses: 0
    functionsReached:
    - lyplg_type_get_prefix
    - asprintf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR identityref_ident2str(const struct lysc_ident *ident, LY_VALUE_FORMAT
      format, void *prefix_data, char **str, size_t *str_len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/identityref.c:103,1
    - Dst: lyplg_type_identity_module
      Src: /src/libyang/src/plugins_types/identityref.c:106,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/identityref.c:108,1
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types/identityref.c:115,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/identityref.c:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 8
    argNames:
    - value
    - value_len
    - format
    - prefix_data
    - ctx
    - ctx_node
    - ident
    - err
    argTypes:
    - char*
    - size_t
    - LY_VALUE_FORMAT
    - void*
    - struct ly_ctx*
    - struct lysc_node*
    - struct lysc_ident**
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 81
    functionDepth: 6
    functionLinenumber: 81
    functionLinenumberEnd: 130
    functionName: identityref_str2ident
    functionSourceFile: /src/libyang/src/plugins_types/identityref.c
    functionUses: 0
    functionsReached:
    - lyplg_type_identity_module
    - ly_strncmp
    - ly_err_new
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR identityref_str2ident(const char *value, size_t value_len,
      LY_VALUE_FORMAT format, void *prefix_data,\n        const struct ly_ctx *ctx,
      const struct lysc_node *ctx_node, struct lysc_ident **ident, struct ly_err_item
      **err)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ly_strncmp
      Src: /src/libyang/src/plugins_types/identityref.c:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 120
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/plugins_types/identityref.c
    functionUses: 121
    functionsReached:
    - ly_strncmp
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(identities, u)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/identityref.c:152,1
    - Dst: lyplg_type_identity_isderived
      Src: /src/libyang/src/plugins_types/identityref.c:153,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/identityref.c:160,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/identityref.c:163,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/identityref.c:165,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/identityref.c:165,1
    - Dst: ly_realloc
      Src: /src/libyang/src/plugins_types/identityref.c:166,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/identityref.c:167,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/identityref.c:167,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/identityref.c:172,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/identityref.c:176,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/identityref.c:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 5
    argNames:
    - ident
    - type
    - value
    - value_len
    - err
    argTypes:
    - struct lysc_ident*
    - struct lysc_type_identityref*
    - char*
    - size_t
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 185
    functionName: identityref_check_base
    functionSourceFile: /src/libyang/src/plugins_types/identityref.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_ARRAY_COUNT
    - lyplg_type_identity_isderived
    - free
    - ly_err_new
    - LY_ARRAY_FOR
    - sprintf
    - ly_realloc
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR identityref_check_base(const struct lysc_ident *ident, struct
      lysc_type_identityref *type, const char *value,\n        size_t value_len, struct
      ly_err_item **err)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/identityref.c:198,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/identityref.c:202,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:203,1
    - Dst: identityref_str2ident
      Src: /src/libyang/src/plugins_types/identityref.c:206,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:207,1
    - Dst: lyplg_type_make_implemented
      Src: /src/libyang/src/plugins_types/identityref.c:212,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:213,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/identityref.c:215,1
    - Dst: identityref_check_base
      Src: /src/libyang/src/plugins_types/identityref.c:223,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:224,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/identityref.c:232,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:234,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/identityref.c:236,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:237,1
    - Dst: identityref_ident2str
      Src: /src/libyang/src/plugins_types/identityref.c:241,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:242,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/identityref.c:244,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/identityref.c:245,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/identityref.c:250,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/identityref.c:254,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - prefix_data
    - hints
    - ctx_node
    - storage
    - unres
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 187
    functionDepth: 8
    functionLinenumber: 187
    functionLinenumberEnd: 257
    functionName: lyplg_type_store_identityref
    functionSourceFile: /src/libyang/src/plugins_types/identityref.c
    functionUses: 0
    functionsReached:
    - lyplg_type_make_implemented
    - memset
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lydict_insert_zc
    - lydict_insert
    - identityref_str2ident
    - LY_CHECK_GOTO
    - identityref_ident2str
    - lyplg_type_free_simple
    - identityref_check_base
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_identityref(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *prefix_data, uint32_t hints, const struct lysc_node
      *ctx_node,\n        struct lyd_value *storage, struct lys_glob_unres *unres,
      struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: lyplg_type_compare_identityref
    functionSourceFile: /src/libyang/src/plugins_types/identityref.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_identityref(const struct lyd_value *val1, const
      struct lyd_value *val2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/identityref.c:283,1
    - Dst: identityref_ident2str
      Src: /src/libyang/src/plugins_types/identityref.c:289,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - format
    - prefix_data
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 272
    functionDepth: 5
    functionLinenumber: 272
    functionLinenumberEnd: 294
    functionName: lyplg_type_print_identityref
    functionSourceFile: /src/libyang/src/plugins_types/identityref.c
    functionUses: 0
    functionsReached:
    - identityref_ident2str
    - strlen
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_identityref(const struct ly_ctx *UNUSED(ctx),
      const struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *prefix_data,
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_strnchr
      Src: /src/libyang/src/plugins_types/ipv6_address.c:79,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_address.c:82,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:83,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv6_address.c:90,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv6_address.c:102,1
    - Dst: inet_pton
      Src: /src/libyang/src/plugins_types/ipv6_address.c:108,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_address.c:109,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_address.c:119,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 7
    argNames:
    - value
    - value_len
    - options
    - ctx
    - addr
    - zone
    - err
    argTypes:
    - char*
    - size_t
    - uint32_t
    - struct ly_ctx*
    - struct in6_addr*
    - char**
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 121
    functionName: ipv6address_str2ip
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address.c
    functionUses: 0
    functionsReached:
    - ly_strnchr
    - free
    - ly_err_new
    - inet_pton
    - lydict_insert
    - LY_CHECK_GOTO
    - strndup
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ipv6address_str2ip(const char *value, size_t value_len, uint32_t
      options, const struct ly_ctx *ctx,\n        struct in6_addr *addr, const char
      **zone, struct ly_err_item **err)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/ipv6_address.c:139,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_address.c:140,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:141,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_address.c:147,1
    - Dst: isalnum
      Src: /src/libyang/src/plugins_types/ipv6_address.c:152,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv6_address.c:153,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_address.c:160,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_address.c:164,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:165,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/ipv6_address.c:175,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:176,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/ipv6_address.c:181,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/ipv6_address.c:181,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:182,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/ipv6_address.c:186,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:187,1
    - Dst: ipv6address_str2ip
      Src: /src/libyang/src/plugins_types/ipv6_address.c:190,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:191,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv6_address.c:196,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:198,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_address.c:200,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv6_address.c:201,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_address.c:207,1
    - Dst: lyplg_type_free_ipv6_address
      Src: /src/libyang/src/plugins_types/ipv6_address.c:211,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 214
    functionName: lyplg_type_store_ipv6_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ly_utf8len
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - lyplg_type_check_hints
    - isalnum
    - ly_err_new
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lydict_insert
    - lyplg_type_validate_range
    - lyplg_type_free_ipv6_address
    - LY_CHECK_GOTO
    - ipv6address_str2ip
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyplg_type_store_ipv6_address(const struct ly_ctx *ctx, const
      struct lysc_type *type, const void *value, size_t value_len,\n        uint32_t
      options, LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n
      \       const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:228,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:229,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/ipv6_address.c:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 236
    functionName: lyplg_type_compare_ipv6_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address.c
    functionUses: 0
    functionsReached:
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_compare_ipv6_address(const struct lyd_value *val1,
      const struct lyd_value *val2)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:249,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv6_address.c:262,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv6_address.c:263,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:264,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_address.c:266,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_address.c:267,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv6_address.c:279,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv6_address.c:280,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:281,1
    - Dst: inet_ntop
      Src: /src/libyang/src/plugins_types/ipv6_address.c:284,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_address.c:285,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins_types/ipv6_address.c:286,1
    - Dst: strerror
      Src: /src/libyang/src/plugins_types/ipv6_address.c:286,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/ipv6_address.c:292,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv6_address.c:292,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv6_address.c:296,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/ipv6_address.c:297,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv6_address.c:307,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 241
    functionDepth: 4
    functionLinenumber: 241
    functionLinenumberEnd: 310
    functionName: lyplg_type_print_ipv6_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address.c
    functionUses: 0
    functionsReached:
    - strlen
    - malloc
    - strerror
    - LOGERR
    - free
    - LYD_VALUE_GET
    - lydict_insert_zc
    - LY_CHECK_RET
    - inet_ntop
    - sprintf
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void *\nlyplg_type_print_ipv6_address(const struct ly_ctx *ctx, const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_address.c:321,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/ipv6_address.c:321,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:322,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv6_address.c:324,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_address.c:326,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:330,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv6_address.c:331,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv6_address.c:332,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_address.c:334,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv6_address.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 315
    functionDepth: 4
    functionLinenumber: 315
    functionLinenumberEnd: 341
    functionName: lyplg_type_dup_ipv6_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address.c
    functionUses: 0
    functionsReached:
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - LYD_VALUE_GET
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert
    - ly_strlen
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_dup_ipv6_address(const struct ly_ctx *ctx, const
      struct lyd_value *original, struct lyd_value *dup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_address.c:351,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv6_address.c:352,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv6_address.c:354,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/ipv6_address.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 346
    functionDepth: 3
    functionLinenumber: 346
    functionLinenumberEnd: 357
    functionName: lyplg_type_free_ipv6_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv6_address.c
    functionUses: 1
    functionsReached:
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - LYD_VALUE_GET
    linkageType: ''
    returnType: void
    signature: void lyplg_type_free_ipv6_address(const struct ly_ctx *ctx, struct
      lyd_value *value)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/libyang/src/plugins_types/date_and_time.c:71,1
    - Dst: atoi
      Src: /src/libyang/src/plugins_types/date_and_time.c:72,1
    - Dst: atoi
      Src: /src/libyang/src/plugins_types/date_and_time.c:73,1
    - Dst: atoi
      Src: /src/libyang/src/plugins_types/date_and_time.c:74,1
    - Dst: atoi
      Src: /src/libyang/src/plugins_types/date_and_time.c:75,1
    - Dst: atoi
      Src: /src/libyang/src/plugins_types/date_and_time.c:76,1
    - Dst: timegm
      Src: /src/libyang/src/plugins_types/date_and_time.c:78,1
    - Dst: isdigit
      Src: /src/libyang/src/plugins_types/date_and_time.c:85,1
    - Dst: strtol
      Src: /src/libyang/src/plugins_types/date_and_time.c:105,1
    - Dst: strtol
      Src: /src/libyang/src/plugins_types/date_and_time.c:107,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/date_and_time.c:121,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/date_and_time.c:122,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 3
    argNames:
    - value
    - time
    - fractions_s
    argTypes:
    - char*
    - time_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 127
    functionName: dat_str2time
    functionSourceFile: /src/libyang/src/plugins_types/date_and_time.c
    functionUses: 0
    functionsReached:
    - isdigit
    - strtol
    - LY_CHECK_RET
    - timegm
    - strndup
    - atoi
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR dat_str2time(const char *value, time_t *time, char **fractions_s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: tzset
      Src: /src/libyang/src/plugins_types/date_and_time.c:145,1
    - Dst: localtime_r
      Src: /src/libyang/src/plugins_types/date_and_time.c:148,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/date_and_time.c:162,1
    - Dst: asprintf
      Src: /src/libyang/src/plugins_types/date_and_time.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - time
    - fractions_s
    - str
    argTypes:
    - time_t
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 172
    functionName: dat_time2str
    functionSourceFile: /src/libyang/src/plugins_types/date_and_time.c
    functionUses: 0
    functionsReached:
    - sprintf
    - tzset
    - localtime_r
    - asprintf
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR dat_time2str(time_t time, const char *fractions_s, char **str)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/date_and_time.c:190,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/date_and_time.c:191,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:192,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/date_and_time.c:198,1
    - Dst: isdigit
      Src: /src/libyang/src/plugins_types/date_and_time.c:204,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/date_and_time.c:205,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/date_and_time.c:212,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/date_and_time.c:216,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:217,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/date_and_time.c:225,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:226,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/date_and_time.c:230,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:231,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/date_and_time.c:235,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:236,1
    - Dst: dat_str2time
      Src: /src/libyang/src/plugins_types/date_and_time.c:239,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:240,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/date_and_time.c:245,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:247,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/date_and_time.c:249,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:250,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/date_and_time.c:256,1
    - Dst: lyplg_type_free_date_and_time
      Src: /src/libyang/src/plugins_types/date_and_time.c:260,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 263
    functionName: lyplg_type_store_date_and_time
    functionSourceFile: /src/libyang/src/plugins_types/date_and_time.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - isdigit
    - dat_str2time
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - lyplg_type_check_hints
    - ly_err_new
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lyplg_type_free_date_and_time
    - lyplg_type_validate_range
    - lydict_insert
    - LY_CHECK_GOTO
    - strndup
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyplg_type_store_date_and_time(const struct ly_ctx *ctx, const
      struct lysc_type *type, const void *value, size_t value_len,\n        uint32_t
      options, LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n
      \       const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/date_and_time.c:277,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/date_and_time.c:278,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins_types/date_and_time.c:287,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 291
    functionName: lyplg_type_compare_date_and_time
    functionSourceFile: /src/libyang/src/plugins_types/date_and_time.c
    functionUses: 0
    functionsReached:
    - strcmp
    - LYD_VALUE_GET
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_compare_date_and_time(const struct lyd_value *val1,
      const struct lyd_value *val2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/date_and_time.c:303,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/date_and_time.c:307,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/date_and_time.c:307,1
    - Dst: LY_CHECK_ERR_RET
      Src: /src/libyang/src/plugins_types/date_and_time.c:308,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/date_and_time.c:308,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/date_and_time.c:312,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/date_and_time.c:314,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/date_and_time.c:315,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/date_and_time.c:315,1
    - Dst: dat_time2str
      Src: /src/libyang/src/plugins_types/date_and_time.c:329,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/date_and_time.c:334,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/date_and_time.c:335,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/date_and_time.c:345,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 296
    functionDepth: 4
    functionLinenumber: 296
    functionLinenumberEnd: 348
    functionName: lyplg_type_print_date_and_time
    functionSourceFile: /src/libyang/src/plugins_types/date_and_time.c
    functionUses: 0
    functionsReached:
    - strlen
    - LY_CHECK_ERR_RET
    - dat_time2str
    - malloc
    - LYD_VALUE_GET
    - lydict_insert_zc
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void *\nlyplg_type_print_date_and_time(const struct ly_ctx *ctx, const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/date_and_time.c:359,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/date_and_time.c:362,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/date_and_time.c:362,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:363,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/date_and_time.c:366,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:367,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/date_and_time.c:369,1
    - Dst: strdup
      Src: /src/libyang/src/plugins_types/date_and_time.c:376,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/date_and_time.c:377,1
    - Dst: lyplg_type_free_date_and_time
      Src: /src/libyang/src/plugins_types/date_and_time.c:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 353
    functionDepth: 4
    functionLinenumber: 353
    functionLinenumberEnd: 386
    functionName: lyplg_type_dup_date_and_time
    functionSourceFile: /src/libyang/src/plugins_types/date_and_time.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - memset
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - LYD_VALUE_GET
    - strdup
    - lyplg_type_free_date_and_time
    - lydict_insert
    - LY_CHECK_GOTO
    - ly_strlen
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_dup_date_and_time(const struct ly_ctx *ctx, const
      struct lyd_value *original, struct lyd_value *dup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/date_and_time.c:396,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/date_and_time.c:397,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/date_and_time.c:399,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/date_and_time.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 391
    functionDepth: 3
    functionLinenumber: 391
    functionLinenumberEnd: 402
    functionName: lyplg_type_free_date_and_time
    functionSourceFile: /src/libyang/src/plugins_types/date_and_time.c
    functionUses: 2
    functionsReached:
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - free
    - LYD_VALUE_GET
    linkageType: ''
    returnType: void
    signature: void lyplg_type_free_date_and_time(const struct ly_ctx *ctx, struct
      lyd_value *value)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:79,1
    - Dst: lyplg_type_get_prefix
      Src: /src/libyang/src/plugins_types/instanceid.c:79,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:81,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:83,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/instanceid.c:86,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:94,1
    - Dst: struct ly_path_predicate*::value::realtype::plugin::print
      Src: /src/libyang/src/plugins_types/instanceid.c:98,1
    - Dst: strchr
      Src: /src/libyang/src/plugins_types/instanceid.c:103,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:108,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:110,1
    - Dst: lyplg_type_get_prefix
      Src: /src/libyang/src/plugins_types/instanceid.c:110,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/instanceid.c:114,1
    - Dst: struct ly_path_predicate*::value::realtype::plugin::print
      Src: /src/libyang/src/plugins_types/instanceid.c:119,1
    - Dst: strchr
      Src: /src/libyang/src/plugins_types/instanceid.c:124,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:127,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/instanceid.c:129,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:134,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/instanceid.c:140,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 65
    argCount: 4
    argNames:
    - path
    - format
    - prefix_data
    - str
    argTypes:
    - struct ly_path*
    - LY_VALUE_FORMAT
    - void*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 145
    functionName: instanceid_path2str
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_GOTO
    - ly_strcat
    - free
    - LY_ARRAY_FOR
    - strchr
    - struct ly_path_predicate*::value::realtype::plugin::print
    - lyplg_type_get_prefix
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR instanceid_path2str(const struct ly_path *path, LY_VALUE_FORMAT
      format, void *prefix_data, char **str)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:79,1
    - Dst: lyplg_type_get_prefix
      Src: /src/libyang/src/plugins_types/instanceid.c:79,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:81,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:83,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/instanceid.c:86,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:94,1
    - Dst: struct ly_path_predicate*::value::realtype::plugin::print
      Src: /src/libyang/src/plugins_types/instanceid.c:98,1
    - Dst: strchr
      Src: /src/libyang/src/plugins_types/instanceid.c:103,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:108,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:110,1
    - Dst: lyplg_type_get_prefix
      Src: /src/libyang/src/plugins_types/instanceid.c:110,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/instanceid.c:114,1
    - Dst: struct ly_path_predicate*::value::realtype::plugin::print
      Src: /src/libyang/src/plugins_types/instanceid.c:119,1
    - Dst: strchr
      Src: /src/libyang/src/plugins_types/instanceid.c:124,1
    - Dst: ly_strcat
      Src: /src/libyang/src/plugins_types/instanceid.c:127,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/instanceid.c:129,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:134,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 75
    functionDepth: 4
    functionLinenumber: 75
    functionLinenumberEnd: 136
    functionName: LY_ARRAY_FOR
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 124
    functionsReached:
    - LY_CHECK_GOTO
    - ly_strcat
    - free
    - LY_ARRAY_FOR
    - strchr
    - struct ly_path_predicate*::value::realtype::plugin::print
    - lyplg_type_get_prefix
    linkageType: ''
    returnType: void
    signature: void LY_ARRAY_FOR(path, u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/instanceid.c:158,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/instanceid.c:162,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:163,1
    - Dst: lyplg_type_lypath_new
      Src: /src/libyang/src/plugins_types/instanceid.c:166,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:168,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/instanceid.c:176,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:178,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/instanceid.c:180,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:181,1
    - Dst: instanceid_path2str
      Src: /src/libyang/src/plugins_types/instanceid.c:185,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:186,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/instanceid.c:188,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:189,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/instanceid.c:194,1
    - Dst: lyplg_type_free_instanceid
      Src: /src/libyang/src/plugins_types/instanceid.c:198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - prefix_data
    - hints
    - ctx_node
    - storage
    - unres
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 147
    functionDepth: 11
    functionLinenumber: 147
    functionLinenumberEnd: 206
    functionName: lyplg_type_store_instanceid
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 0
    functionsReached:
    - lyplg_type_lypath_new
    - memset
    - lyplg_type_free_instanceid
    - free
    - lyplg_type_check_hints
    - lydict_insert_zc
    - instanceid_path2str
    - lydict_insert
    - LY_CHECK_GOTO
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_instanceid(const struct ly_ctx *ctx, const struct
      lysc_type *type, const void *value, size_t value_len,\n        uint32_t options,
      LY_VALUE_FORMAT format, void *prefix_data, uint32_t hints, const struct lysc_node
      *ctx_node,\n        struct lyd_value *storage, struct lys_glob_unres *unres,
      struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ly_path_eval
      Src: /src/libyang/src/plugins_types/instanceid.c:224,1
    - Dst: lyplg_type_print_instanceid
      Src: /src/libyang/src/plugins_types/instanceid.c:225,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/instanceid.c:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - ctx
    - UNUSED(type)
    - UNUSED(ctx_node)
    - tree
    - storage
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - struct lyd_node*
    - struct lyd_node*
    - struct lyd_value*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 208
    functionDepth: 9
    functionLinenumber: 208
    functionLinenumberEnd: 230
    functionName: lyplg_type_validate_instanceid
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 0
    functionsReached:
    - ly_path_eval
    - lyplg_type_print_instanceid
    - ly_err_new
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_validate_instanceid(const struct ly_ctx *ctx, const
      struct lysc_type *UNUSED(type),\n        const struct lyd_node *UNUSED(ctx_node),
      const struct lyd_node *tree, struct lyd_value *storage,\n        struct ly_err_item
      **err)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/instanceid.c:243,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/instanceid.c:243,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/instanceid.c:247,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/instanceid.c:252,1
    - Dst: LY_ARRAY_COUNT
      Src: /src/libyang/src/plugins_types/instanceid.c:252,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_types/instanceid.c:256,1
    - Dst: type::plugin::compare
      Src: /src/libyang/src/plugins_types/instanceid.c:272,1
    - Dst: type::plugin::compare
      Src: /src/libyang/src/plugins_types/instanceid.c:278,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 38
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 287
    functionName: lyplg_type_compare_instanceid
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 0
    functionsReached:
    - LY_ARRAY_COUNT
    - LY_ARRAY_FOR
    - type::plugin::compare
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_instanceid(const struct lyd_value *val1, const
      struct lyd_value *val2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/instanceid.c:300,1
    - Dst: instanceid_path2str
      Src: /src/libyang/src/plugins_types/instanceid.c:306,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/instanceid.c:311,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - format
    - prefix_data
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 289
    functionDepth: 5
    functionLinenumber: 289
    functionLinenumberEnd: 314
    functionName: lyplg_type_print_instanceid
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 1
    functionsReached:
    - strlen
    - instanceid_path2str
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_instanceid(const struct ly_ctx *UNUSED(ctx),
      const struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *prefix_data,
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/instanceid.c:321,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/instanceid.c:324,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/instanceid.c:324,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:325,1
    - Dst: ly_path_dup
      Src: /src/libyang/src/plugins_types/instanceid.c:328,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/instanceid.c:329,1
    - Dst: lyplg_type_free_instanceid
      Src: /src/libyang/src/plugins_types/instanceid.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 316
    functionDepth: 4
    functionLinenumber: 316
    functionLinenumberEnd: 337
    functionName: lyplg_type_dup_instanceid
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 0
    functionsReached:
    - ly_path_dup
    - memset
    - lyplg_type_free_instanceid
    - lydict_insert
    - LY_CHECK_GOTO
    - ly_strlen
    linkageType: ''
    returnType: API
    signature: API lyplg_type_dup_instanceid(const struct ly_ctx *ctx, const struct
      lyd_value *original, struct lyd_value *dup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/instanceid.c:342,1
    - Dst: ly_path_free
      Src: /src/libyang/src/plugins_types/instanceid.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 339
    functionDepth: 4
    functionLinenumber: 339
    functionLinenumberEnd: 344
    functionName: lyplg_type_free_instanceid
    functionSourceFile: /src/libyang/src/plugins_types/instanceid.c
    functionUses: 2
    functionsReached:
    - lydict_remove
    - ly_path_free
    linkageType: ''
    returnType: API
    signature: API lyplg_type_free_instanceid(const struct ly_ctx *ctx, struct lyd_value
      *value)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/integer.c:62,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/integer.c:68,1
    - Dst: LOGINT
      Src: /src/libyang/src/plugins_types/integer.c:88,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/integer.c:94,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:95,1
    - Dst: lyplg_type_parse_int
      Src: /src/libyang/src/plugins_types/integer.c:100,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:100,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:100,1
    - Dst: lyplg_type_parse_int
      Src: /src/libyang/src/plugins_types/integer.c:103,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:103,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:103,1
    - Dst: lyplg_type_parse_int
      Src: /src/libyang/src/plugins_types/integer.c:106,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:106,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:106,1
    - Dst: lyplg_type_parse_int
      Src: /src/libyang/src/plugins_types/integer.c:109,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:109,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:109,1
    - Dst: INT64_C
      Src: /src/libyang/src/plugins_types/integer.c:110,1
    - Dst: LOGINT
      Src: /src/libyang/src/plugins_types/integer.c:113,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:116,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/integer.c:140,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:142,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/integer.c:144,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:145,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:149,1
    - Dst: asprintf
      Src: /src/libyang/src/plugins_types/integer.c:149,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/integer.c:152,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:153,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/integer.c:158,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/integer.c:159,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:160,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/integer.c:165,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/integer.c:169,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 93
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 172
    functionName: lyplg_type_store_int
    functionSourceFile: /src/libyang/src/plugins_types/integer.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - memset
    - INT64_C
    - LOGINT
    - lyplg_type_check_hints
    - asprintf
    - ly_err_new
    - lydict_insert_zc
    - free
    - lydict_insert
    - lyplg_type_validate_range
    - LY_CHECK_GOTO
    - lyplg_type_free_simple
    - lyplg_type_parse_int
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_int(const struct ly_ctx *ctx, const struct lysc_type
      *type, const void *value, size_t value_len,\n        uint32_t options, LY_VALUE_FORMAT
      format, void *UNUSED(prefix_data), uint32_t hints,\n        const struct lysc_node
      *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres *UNUSED(unres),\n
      \       struct ly_err_item **err)"
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 206
    functionName: lyplg_type_compare_int
    functionSourceFile: /src/libyang/src/plugins_types/integer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_int(const struct lyd_value *val1, const struct
      lyd_value *val2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/integer.c:237,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 240
    functionName: lyplg_type_print_int
    functionSourceFile: /src/libyang/src/plugins_types/integer.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_int(const struct ly_ctx *UNUSED(ctx), const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/integer.c:255,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/integer.c:261,1
    - Dst: LOGINT
      Src: /src/libyang/src/plugins_types/integer.c:281,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/integer.c:287,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:288,1
    - Dst: lyplg_type_parse_uint
      Src: /src/libyang/src/plugins_types/integer.c:293,1
    - Dst: UINT64_C
      Src: /src/libyang/src/plugins_types/integer.c:293,1
    - Dst: lyplg_type_parse_uint
      Src: /src/libyang/src/plugins_types/integer.c:296,1
    - Dst: UINT64_C
      Src: /src/libyang/src/plugins_types/integer.c:296,1
    - Dst: lyplg_type_parse_uint
      Src: /src/libyang/src/plugins_types/integer.c:299,1
    - Dst: UINT64_C
      Src: /src/libyang/src/plugins_types/integer.c:299,1
    - Dst: lyplg_type_parse_uint
      Src: /src/libyang/src/plugins_types/integer.c:302,1
    - Dst: UINT64_C
      Src: /src/libyang/src/plugins_types/integer.c:302,1
    - Dst: LOGINT
      Src: /src/libyang/src/plugins_types/integer.c:305,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:308,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/integer.c:332,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:334,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/integer.c:336,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:337,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:341,1
    - Dst: asprintf
      Src: /src/libyang/src/plugins_types/integer.c:341,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/integer.c:344,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:345,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/integer.c:350,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/integer.c:351,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/integer.c:352,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/integer.c:357,1
    - Dst: lyplg_type_free_simple
      Src: /src/libyang/src/plugins_types/integer.c:361,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 93
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 364
    functionName: lyplg_type_store_uint
    functionSourceFile: /src/libyang/src/plugins_types/integer.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - strlen
    - memset
    - LOGINT
    - lyplg_type_check_hints
    - asprintf
    - ly_err_new
    - lydict_insert_zc
    - free
    - lydict_insert
    - lyplg_type_validate_range
    - UINT64_C
    - lyplg_type_parse_uint
    - LY_CHECK_GOTO
    - lyplg_type_free_simple
    linkageType: ''
    returnType: API
    signature: "API lyplg_type_store_uint(const struct ly_ctx *ctx, const struct lysc_type
      *type, const void *value, size_t value_len,\n        uint32_t options, LY_VALUE_FORMAT
      format, void *UNUSED(prefix_data), uint32_t hints,\n        const struct lysc_node
      *UNUSED(ctx_node), struct lyd_value *storage, struct lys_glob_unres *UNUSED(unres),\n
      \       struct ly_err_item **err)"
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 398
    functionName: lyplg_type_compare_uint
    functionSourceFile: /src/libyang/src/plugins_types/integer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: API
    signature: API lyplg_type_compare_uint(const struct lyd_value *val1, const struct
      lyd_value *val2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/integer.c:429,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 6
    argNames:
    - UNUSED(ctx)
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 432
    functionName: lyplg_type_print_uint
    functionSourceFile: /src/libyang/src/plugins_types/integer.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: API
    signature: "API *\nlyplg_type_print_uint(const struct ly_ctx *UNUSED(ctx), const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ly_strnchr
      Src: /src/libyang/src/plugins_types/ipv4_address.c:79,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv4_address.c:82,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:83,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv4_address.c:90,1
    - Dst: strndup
      Src: /src/libyang/src/plugins_types/ipv4_address.c:102,1
    - Dst: inet_pton
      Src: /src/libyang/src/plugins_types/ipv4_address.c:108,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_address.c:109,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_address.c:119,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 7
    argNames:
    - value
    - value_len
    - options
    - ctx
    - addr
    - zone
    - err
    argTypes:
    - char*
    - size_t
    - uint32_t
    - struct ly_ctx*
    - struct in_addr*
    - char**
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 121
    functionName: ipv4address_str2ip
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address.c
    functionUses: 0
    functionsReached:
    - ly_strnchr
    - free
    - ly_err_new
    - inet_pton
    - lydict_insert
    - LY_CHECK_GOTO
    - strndup
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR ipv4address_str2ip(const char *value, size_t value_len, uint32_t
      options, const struct ly_ctx *ctx,\n        struct in_addr *addr, const char
      **zone, struct ly_err_item **err)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/libyang/src/plugins_types/ipv4_address.c:139,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv4_address.c:140,1
    - Dst: LY_CHECK_ERR_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:141,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_address.c:147,1
    - Dst: isalnum
      Src: /src/libyang/src/plugins_types/ipv4_address.c:152,1
    - Dst: ly_err_new
      Src: /src/libyang/src/plugins_types/ipv4_address.c:153,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv4_address.c:160,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv4_address.c:164,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:165,1
    - Dst: lyplg_type_check_hints
      Src: /src/libyang/src/plugins_types/ipv4_address.c:175,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:176,1
    - Dst: lyplg_type_validate_range
      Src: /src/libyang/src/plugins_types/ipv4_address.c:181,1
    - Dst: ly_utf8len
      Src: /src/libyang/src/plugins_types/ipv4_address.c:181,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:182,1
    - Dst: lyplg_type_validate_patterns
      Src: /src/libyang/src/plugins_types/ipv4_address.c:186,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:187,1
    - Dst: ipv4address_str2ip
      Src: /src/libyang/src/plugins_types/ipv4_address.c:190,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:191,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv4_address.c:195,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:197,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv4_address.c:199,1
    - Dst: LY_CHECK_GOTO
      Src: /src/libyang/src/plugins_types/ipv4_address.c:200,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_address.c:205,1
    - Dst: lyplg_type_free_ipv4_address
      Src: /src/libyang/src/plugins_types/ipv4_address.c:209,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 55
    argCount: 12
    argNames:
    - ctx
    - type
    - value
    - value_len
    - options
    - format
    - UNUSED(prefix_data)
    - hints
    - UNUSED(ctx_node)
    - storage
    - UNUSED(unres)
    - err
    argTypes:
    - struct ly_ctx*
    - struct lysc_type*
    - void*
    - size_t
    - uint32_t
    - LY_VALUE_FORMAT
    - void*
    - uint32_t
    - struct lysc_node*
    - struct lyd_value*
    - struct lys_glob_unres*
    - struct ly_err_item**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 126
    functionDepth: 5
    functionLinenumber: 126
    functionLinenumberEnd: 212
    functionName: lyplg_type_store_ipv4_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address.c
    functionUses: 0
    functionsReached:
    - LY_CHECK_ERR_GOTO
    - ly_utf8len
    - memset
    - lyplg_type_free_ipv4_address
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - free
    - lyplg_type_check_hints
    - isalnum
    - ly_err_new
    - lyplg_type_validate_patterns
    - lydict_insert_zc
    - lydict_insert
    - lyplg_type_validate_range
    - LY_CHECK_GOTO
    - ipv4address_str2ip
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: "LY_ERR lyplg_type_store_ipv4_address(const struct ly_ctx *ctx, const
      struct lysc_type *type, const void *value, size_t value_len,\n        uint32_t
      options, LY_VALUE_FORMAT format, void *UNUSED(prefix_data), uint32_t hints,\n
      \       const struct lysc_node *UNUSED(ctx_node), struct lyd_value *storage,
      struct lys_glob_unres *UNUSED(unres),\n        struct ly_err_item **err)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:226,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:227,1
    - Dst: memcmp
      Src: /src/libyang/src/plugins_types/ipv4_address.c:230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - val1
    - val2
    argTypes:
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 234
    functionName: lyplg_type_compare_ipv4_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address.c
    functionUses: 0
    functionsReached:
    - LYD_VALUE_GET
    - memcmp
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_compare_ipv4_address(const struct lyd_value *val1,
      const struct lyd_value *val2)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:247,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv4_address.c:260,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv4_address.c:261,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:262,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv4_address.c:264,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv4_address.c:265,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv4_address.c:277,1
    - Dst: malloc
      Src: /src/libyang/src/plugins_types/ipv4_address.c:278,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:279,1
    - Dst: inet_ntop
      Src: /src/libyang/src/plugins_types/ipv4_address.c:282,1
    - Dst: free
      Src: /src/libyang/src/plugins_types/ipv4_address.c:283,1
    - Dst: LOGERR
      Src: /src/libyang/src/plugins_types/ipv4_address.c:284,1
    - Dst: strerror
      Src: /src/libyang/src/plugins_types/ipv4_address.c:284,1
    - Dst: sprintf
      Src: /src/libyang/src/plugins_types/ipv4_address.c:290,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv4_address.c:290,1
    - Dst: lydict_insert_zc
      Src: /src/libyang/src/plugins_types/ipv4_address.c:294,1
    - Dst: LOGMEM
      Src: /src/libyang/src/plugins_types/ipv4_address.c:295,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_types/ipv4_address.c:305,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 6
    argNames:
    - ctx
    - value
    - format
    - UNUSED(prefix_data)
    - dynamic
    - value_len
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - LY_VALUE_FORMAT
    - void*
    - ly_bool*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 239
    functionDepth: 4
    functionLinenumber: 239
    functionLinenumberEnd: 308
    functionName: lyplg_type_print_ipv4_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address.c
    functionUses: 0
    functionsReached:
    - strlen
    - malloc
    - strerror
    - LOGERR
    - free
    - LYD_VALUE_GET
    - lydict_insert_zc
    - LY_CHECK_RET
    - inet_ntop
    - sprintf
    - LOGMEM
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void *\nlyplg_type_print_ipv4_address(const struct ly_ctx *ctx, const
      struct lyd_value *value, LY_VALUE_FORMAT format,\n        void *UNUSED(prefix_data),
      ly_bool *dynamic, size_t *value_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv4_address.c:319,1
    - Dst: ly_strlen
      Src: /src/libyang/src/plugins_types/ipv4_address.c:319,1
    - Dst: LY_CHECK_RET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:320,1
    - Dst: LYPLG_TYPE_VAL_INLINE_PREPARE
      Src: /src/libyang/src/plugins_types/ipv4_address.c:322,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv4_address.c:324,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:328,1
    - Dst: memcpy
      Src: /src/libyang/src/plugins_types/ipv4_address.c:329,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_types/ipv4_address.c:330,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv4_address.c:332,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/ipv4_address.c:333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - original
    - dup
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 313
    functionDepth: 4
    functionLinenumber: 313
    functionLinenumberEnd: 339
    functionName: lyplg_type_dup_ipv4_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address.c
    functionUses: 0
    functionsReached:
    - LYPLG_TYPE_VAL_INLINE_PREPARE
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - LYD_VALUE_GET
    - LY_CHECK_RET
    - lydict_remove
    - lydict_insert
    - ly_strlen
    - memcpy
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR lyplg_type_dup_ipv4_address(const struct ly_ctx *ctx, const
      struct lyd_value *original, struct lyd_value *dup)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv4_address.c:349,1
    - Dst: LYD_VALUE_GET
      Src: /src/libyang/src/plugins_types/ipv4_address.c:350,1
    - Dst: lydict_remove
      Src: /src/libyang/src/plugins_types/ipv4_address.c:352,1
    - Dst: LYPLG_TYPE_VAL_INLINE_DESTROY
      Src: /src/libyang/src/plugins_types/ipv4_address.c:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - value
    argTypes:
    - struct ly_ctx*
    - struct lyd_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 344
    functionDepth: 3
    functionLinenumber: 344
    functionLinenumberEnd: 355
    functionName: lyplg_type_free_ipv4_address
    functionSourceFile: /src/libyang/src/plugins_types/ipv4_address.c
    functionUses: 1
    functionsReached:
    - lydict_remove
    - LYPLG_TYPE_VAL_INLINE_DESTROY
    - LYD_VALUE_GET
    linkageType: ''
    returnType: void
    signature: void lyplg_type_free_ipv4_address(const struct ly_ctx *ctx, struct
      lyd_value *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_ext_instance_substatements_free
      Src: /src/libyang/src/plugins_exts/yangdata.c:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 6
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: yangdata_free
    functionSourceFile: /src/libyang/src/plugins_exts/yangdata.c
    functionUses: 0
    functionsReached:
    - lyplg_ext_instance_substatements_free
    linkageType: ''
    returnType: void
    signature: void yangdata_free(struct ly_ctx *ctx, struct lysc_ext_instance *ext)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lysc_ctx_get_options
      Src: /src/libyang/src/plugins_exts/yangdata.c:46,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:50,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:50,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/plugins_exts/yangdata.c:52,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_exts/yangdata.c:59,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins_exts/yangdata.c:60,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:62,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:62,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/plugins_exts/yangdata.c:71,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/yangdata.c:72,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/yangdata.c:77,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/yangdata.c:82,1
    - Dst: lysc_ctx_get_options
      Src: /src/libyang/src/plugins_exts/yangdata.c:87,1
    - Dst: lys_compile_extension_instance
      Src: /src/libyang/src/plugins_exts/yangdata.c:88,1
    - Dst: lysc_ctx_get_options
      Src: /src/libyang/src/plugins_exts/yangdata.c:89,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/plugins_exts/yangdata.c:90,1
    - Dst: LY_ARRAY_DECREMENT
      Src: /src/libyang/src/plugins_exts/yangdata.c:91,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:100,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:100,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:105,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:105,1
    - Dst: lys_getnext
      Src: /src/libyang/src/plugins_exts/yangdata.c:112,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:115,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:115,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:121,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:121,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/plugins_exts/yangdata.c:123,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:130,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:130,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/plugins_exts/yangdata.c:132,1
    - Dst: yangdata_free
      Src: /src/libyang/src/plugins_exts/yangdata.c:136,1
    - Dst: lysc_ctx_get_ctx
      Src: /src/libyang/src/plugins_exts/yangdata.c:136,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/yangdata.c:144,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/yangdata.c:144,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 70
    argCount: 3
    argNames:
    - cctx
    - p_ext
    - c_ext
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ext_instance*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 38
    functionDepth: 7
    functionLinenumber: 38
    functionLinenumberEnd: 146
    functionName: yangdata_compile
    functionSourceFile: /src/libyang/src/plugins_exts/yangdata.c
    functionUses: 0
    functionsReached:
    - lysc_ctx_get_ctx
    - lys_nodetype2str
    - lyplg_ext_log
    - lys_getnext
    - LY_ARRAY_DECREMENT
    - strcmp
    - LY_ARRAY_CREATE_GOTO
    - LY_ARRAY_FOR
    - lysc_ctx_get_path
    - lysc_ctx_get_options
    - ly_stmt2str
    - lys_compile_extension_instance
    - yangdata_free
    - LY_ARRAY_INCREMENT
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yangdata_compile(struct lysc_ctx *cctx, const struct lysp_ext_instance
      *p_ext, struct lysc_ext_instance *c_ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_print_extension_instance
      Src: /src/libyang/src/plugins_exts/yangdata.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - ext
    - flag
    argTypes:
    - struct lyspr_ctx*
    - struct lysc_ext_instance*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 153
    functionDepth: 8
    functionLinenumber: 153
    functionLinenumberEnd: 158
    functionName: yangdata_schema_printer
    functionSourceFile: /src/libyang/src/plugins_exts/yangdata.c
    functionUses: 0
    functionsReached:
    - lysc_print_extension_instance
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR yangdata_schema_printer(struct lyspr_ctx *ctx, struct lysc_ext_instance
      *ext, ly_bool *flag)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_exts/nacm.c:41,1
    - Dst: LY_ARRAY_NEW_GOTO
      Src: /src/libyang/src/plugins_exts/nacm.c:50,1
    - Dst: lysc_ext_dup
      Src: /src/libyang/src/plugins_exts/nacm.c:52,1
    - Dst: lys_nodetype2stmt
      Src: /src/libyang/src/plugins_exts/nacm.c:54,1
    - Dst: lydict_insert
      Src: /src/libyang/src/plugins_exts/nacm.c:58,1
    - Dst: strlen
      Src: /src/libyang/src/plugins_exts/nacm.c:58,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/nacm.c:70,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - node
    - data
    - dfs_continue
    argTypes:
    - struct lysc_node*
    - void*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 30
    functionDepth: 4
    functionLinenumber: 30
    functionLinenumberEnd: 72
    functionName: nacm_inherit_clb
    functionSourceFile: /src/libyang/src/plugins_exts/nacm.c
    functionUses: 0
    functionsReached:
    - strlen
    - lys_nodetype2stmt
    - lysc_ext_dup
    - lyplg_ext_log
    - LY_ARRAY_NEW_GOTO
    - LY_ARRAY_FOR
    - lydict_insert
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR nacm_inherit_clb(struct lysc_node *node, void *data, ly_bool
      *dfs_continue)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/libyang/src/plugins_exts/nacm.c:91,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins_exts/nacm.c:93,1
    - Dst: LY_STMT_IS_NODE
      Src: /src/libyang/src/plugins_exts/nacm.c:100,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/nacm.c:101,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/nacm.c:101,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/plugins_exts/nacm.c:103,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/nacm.c:112,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/nacm.c:112,1
    - Dst: lys_nodetype2str
      Src: /src/libyang/src/plugins_exts/nacm.c:113,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_exts/nacm.c:122,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/nacm.c:128,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/nacm.c:128,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/nacm.c:131,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/nacm.c:131,1
    - Dst: lysc_tree_dfs_full
      Src: /src/libyang/src/plugins_exts/nacm.c:141,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 3
    argNames:
    - cctx
    - p_ext
    - c_ext
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ext_instance*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 144
    functionName: nacm_compile
    functionSourceFile: /src/libyang/src/plugins_exts/nacm.c
    functionUses: 0
    functionsReached:
    - lys_nodetype2str
    - lyplg_ext_log
    - strcmp
    - LY_STMT_IS_NODE
    - lysc_tree_dfs_full
    - LY_ARRAY_FOR
    - lysc_ctx_get_path
    - ly_stmt2str
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR nacm_compile(struct lysc_ctx *cctx, const struct lysp_ext_instance
      *p_ext, struct lysc_ext_instance *c_ext)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/metadata.c:52,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/metadata.c:52,1
    - Dst: ly_stmt2str
      Src: /src/libyang/src/plugins_exts/metadata.c:54,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/metadata.c:59,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/metadata.c:59,1
    - Dst: LY_ARRAY_FOR
      Src: /src/libyang/src/plugins_exts/metadata.c:67,1
    - Dst: strcmp
      Src: /src/libyang/src/plugins_exts/metadata.c:68,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/metadata.c:70,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/metadata.c:70,1
    - Dst: calloc
      Src: /src/libyang/src/plugins_exts/metadata.c:76,1
    - Dst: LY_ARRAY_CREATE_GOTO
      Src: /src/libyang/src/plugins_exts/metadata.c:80,1
    - Dst: lysc_ctx_get_ctx
      Src: /src/libyang/src/plugins_exts/metadata.c:80,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/metadata.c:82,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/metadata.c:87,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/metadata.c:92,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/metadata.c:97,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/metadata.c:102,1
    - Dst: LY_ARRAY_INCREMENT
      Src: /src/libyang/src/plugins_exts/metadata.c:107,1
    - Dst: lys_compile_extension_instance
      Src: /src/libyang/src/plugins_exts/metadata.c:112,1
    - Dst: lyplg_ext_log
      Src: /src/libyang/src/plugins_exts/metadata.c:116,1
    - Dst: lysc_ctx_get_path
      Src: /src/libyang/src/plugins_exts/metadata.c:116,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 3
    argNames:
    - cctx
    - p_ext
    - c_ext
    argTypes:
    - struct lysc_ctx*
    - struct lysp_ext_instance*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 118
    functionName: annotation_compile
    functionSourceFile: /src/libyang/src/plugins_exts/metadata.c
    functionUses: 0
    functionsReached:
    - lysc_ctx_get_ctx
    - lyplg_ext_log
    - strcmp
    - LY_ARRAY_CREATE_GOTO
    - LY_ARRAY_FOR
    - lysc_ctx_get_path
    - ly_stmt2str
    - lys_compile_extension_instance
    - LY_ARRAY_INCREMENT
    - calloc
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR annotation_compile(struct lysc_ctx *cctx, const struct lysp_ext_instance
      *p_ext, struct lysc_ext_instance *c_ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lysc_print_extension_instance
      Src: /src/libyang/src/plugins_exts/metadata.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - ext
    - flag
    argTypes:
    - struct lyspr_ctx*
    - struct lysc_ext_instance*
    - ly_bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 125
    functionDepth: 8
    functionLinenumber: 125
    functionLinenumberEnd: 131
    functionName: annotation_schema_printer
    functionSourceFile: /src/libyang/src/plugins_exts/metadata.c
    functionUses: 0
    functionsReached:
    - lysc_print_extension_instance
    linkageType: ''
    returnType: LY_ERR
    signature: LY_ERR annotation_schema_printer(struct lyspr_ctx *ctx, struct lysc_ext_instance
      *ext, ly_bool *flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lyplg_ext_instance_substatements_free
      Src: /src/libyang/src/plugins_exts/metadata.c:145,1
    - Dst: free
      Src: /src/libyang/src/plugins_exts/metadata.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - ext
    argTypes:
    - struct ly_ctx*
    - struct lysc_ext_instance*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 6
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: annotation_free
    functionSourceFile: /src/libyang/src/plugins_exts/metadata.c
    functionUses: 0
    functionsReached:
    - lyplg_ext_instance_substatements_free
    - free
    linkageType: ''
    returnType: void
    signature: void annotation_free(struct ly_ctx *ctx, struct lysc_ext_instance *ext)
Fuzzer filename: /src/frr/lib/libfrr.c
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- isisd/fabricd.h
- ospf6d.h
- ospf_ism.h
- bgp_addpath_types.h
- llvm-c/DebugInfo.h
- bgpd/bgp_filter.h
- zlog_5424.h
- ospfd/ospf_network.h
- stddef.h
- zapi_msg.h
- pathd/pathd.h
- atomic
- tree-inline.h
- atomlist.h
- lib/pbr.h
- bgpd/bgp_labelpool.h
- isis_spf_private.h
- lib/srte.h
- graph.h
- ospfd/ospf_bfd.h
- qpb/qpb.h
- smux.h
- pim_zlookup.h
- pbr_memory.h
- ospf6_interface.h
- lib/buffer.h
- pcep_msg_tools_test.h
- sharpd/sharp_vty_clippy.c
- regex.h
- bgpd/bgp_rpki_clippy.c
- lib/systemd.h
- pcep_msg_encoding.h
- mgmtd/mgmt_txn.h
- zlog.h
- if_rmap.h
- ldp_debug.h
- lib/if_rmap.h
- linux/socket.h
- pim_tlv.h
- bgpd/bgp_rpki.h
- linenoise.h
- isisd/isis_sr.h
- print-tree.h
- zebra/zebra_opaque.h
- isis_zebra.h
- imsg.h
- zebra_nb.h
- pim_oil.h
- bgp_flowspec_private.h
- zebra/zebra_vty_clippy.c
- lib/checksum.h
- netmpls/mpls.h
- zebra/zebra_rnh.h
- eigrpd/eigrp_types.h
- eigrpd/eigrp_snmp.h
- sys/file.h
- pbr.h
- tree-phinodes.h
- structmember.h
- zebra_ns.h
- pim_vxlan.h
- stdatomic.h
- mgmtd/mgmt_vty_clippy.c
- zebra/zapi_msg.h
- mgmtd/mgmt_ds.h
- bgpd/rfapi/rfapi_nve_addr.h
- babeld.h
- malloc_np.h
- zebra_errors.h
- sys/capability.h
- lib/version.h
- bgpd/bgp_community.h
- lib/queue.h
- pcre2.h
- lib/plist_clippy.c
- isis_dynhn.h
- lib/vlan.h
- lib/privs.h
- bgp_mac.h
- zlog_live.h
- zebra_script.h
- sys/prctl.h
- segment_routing.h
- tree_edit.h
- mlag/mlag.pb-c.h
- pim_assert.h
- pathd/path_pcep_cli_clippy.c
- lib/ferr.h
- isisd/isis_circuit.h
- bgpd/rfapi/bgp_rfapi_cfg.h
- iostream
- isisd/isis_spf_private.h
- vrrp_debug.h
- vnc_export_bgp_p.h
- zebra/zebra_ptm.h
- eigrp_structs.h
- ospfd/ospf_te.h
- opts.h
- zebra/rt.h
- cfgloop.h
- tree-cfg.h
- sys/futex.h
- babel_zebra.h
- eigrp_zebra.h
- inttypes.h
- id_alloc.h
- ospf6d/ospf6_flood.h
- rfapi_backend.h
- fabricd.h
- pcep_utils_counters_test.h
- net/bpf.h
- eigrpd/eigrp_vrf.h
- zebra/tc_netlink.h
- bgpd/bgp_snmp_bgp4v2.h
- ripngd/ripngd.h
- kernel.h
- zebra/rule_netlink.h
- bgpd/bgp_dump.h
- bgpd/bgp_nexthop.h
- bgpd/rfapi/rfapi_import.h
- util.h
- isisd/isisd.h
- netinet6/ip6.h
- ospfd/ospf_vty.h
- tools/config.h
- fpm/fpm.pb-c.h
- lib/md5.h
- netinet/tcp.h
- watchfrr.h
- watchfrr_errors.h
- zebra/zebra_dplane.h
- netlink.h
- bgp_vnc_types.h
- sysrepo/values.h
- isis_tlvs.h
- control.h
- pcep_socket_comm_mock.h
- ripngd/ripng_debug.h
- sys/umtx.h
- vici.h
- linux/if_ether.h
- cmocka.h
- signal.h
- ospf6d/ospf6_gr_clippy.c
- pceplib/pcep_session_logic.h
- zebra/dpdk/zebra_dplane_dpdk_vty_clippy.c
- zclient.h
- babel_main.h
- ifaddrs.h
- lttng/tracepoint-event.h
- ospfd/ospf_ti_lfa.h
- libyang/user_types.h
- bgpd/bgpd.h
- netpacket/packet.h
- ospf6_asbr.h
- pcep_utils_memory.h
- stdarg.h
- except.h
- pim_int.h
- lib/openbsd-tree.h
- pceplib/pcep_utils_counters.h
- pim_neighbor.h
- lib/route_types.h
- monotime.h
- pcep_utils_ordered_list.h
- openbsd-queue.h
- pw.h
- zebra_router.h
- pim_util.h
- alloc-pool.h
- vrrp.h
- bgpd/bgp_vpn.h
- ospf_apiclient.h
- bgpd/bgp_mac.h
- fpm/fpm.h
- tree-eh.h
- hash-map.h
- tree.h
- isisd/isis_route.h
- eigrpd/eigrp_dump.h
- lib/prefix.h
- gcc-common.h
- linux/if_tunnel.h
- bgpd/bgp_attr_evpn.h
- openssl/hmac.h
- pathd/path_pcep_controller.h
- bgpd/rfapi/vnc_export_bgp.h
- set.h
- lib/affinitymap.h
- zebra/dpdk/zebra_dplane_dpdk_private.h
- bgp_script.h
- bgpd/bgp_debug_clippy.c
- pimd/pim6_cmd_clippy.c
- netinet6/nd6.h
- vrrpd/vrrp_vty_clippy.c
- pimd/pim6_mld.h
- linux/mroute.h
- pimd/pim6_mld_clippy.c
- lib/srcdest_table.h
- bgpd/bgp_memory.h
- sys/resource.h
- linux/types.h
- zebra/zebra_evpn_neigh.h
- asm/types.h
- plist_int.h
- sys/endian.h
- diagnostic.h
- bgpd/bgp_addpath.h
- zebra/zebra_routemap_clippy.c
- bgp_evpn_private.h
- bgpd/bgp_addpath_types.h
- lib/linklist.h
- mpls.h
- net/if_media.h
- c-common.h
- ospf6d/ospf6_lsa.h
- sys/param.h
- plist.h
- lib/northbound.h
- parser_schema.h
- isisd/isis_lfa.h
- llvm/IR/DebugInfo.h
- lib/admin_group.h
- stdlib.h
- zebra/zebra_l2.h
- config.h
- ospfd/ospf_flood.h
- lib/hash.h
- bgp_attr.h
- stdbool.h
- tree-dump.h
- sharpd/sharp_zebra.h
- zebra/zebra_pw.h
- bgpd/rfapi/rfapi_rib.h
- lib/zclient.h
- schema_compile.h
- frrlua.h
- isisd/isis_affinitymap.h
- lyb.h
- metadata.h
- linux/sched.h
- memory.h
- pimd/pimd.h
- netinet/icmp6.h
- pim_msg.h
- sys/thr.h
- systemd.h
- lib/frrevent.h
- zbuf.h
- eigrpd/eigrp_filter.h
- ospf_dump_api.h
- linux/neighbour.h
- cspf.h
- pcep_timers.h
- vrrp_packet.h
- ospfd/ospf_gr_clippy.c
- rfp_internal.h
- zebra/zebra_mlag_vty_clippy.c
- trace.h
- isisd/isis_constants.h
- lauxlib.h
- checksum.h
- isis_mt.h
- ospfd/ospf_gr.h
- ares_version.h
- lib/vxlan.h
- gimplify.h
- bgpd/bgp_evpn_mh.h
- zebra/zebra_evpn_mac.h
- ripd/rip_interface.h
- pim_igmp_join.h
- pathd/path_pcep.h
- tree_data.h
- ospfd/ospf_ext.h
- mgmt_memory.h
- lib/routemap.h
- sys/pfmod.h
- sys/un.h
- tree_schema.h
- linux/seg6_iptunnel.h
- sha256.h
- ripd/rip_nb.h
- rfptest.h
- mgmtd/mgmt_be_adapter.h
- pathd.h
- pimd/pim6_mld_protocol.h
- sys/socket.h
- pimd/pim_util.h
- plugin-version.h
- json-c/json.h
- stmt.h
- bfdctl.h
- lib/frrscript.h
- zebra/zebra_vrf.h
- pbr_zebra.h
- bgpd/bgp_trace.h
- libyang/libyang.h
- attribs.h
- lib/bfd.h
- zebra/zserv.h
- zebra/zebra_nhg.h
- ospf6_intra.h
- vrrp_arp.h
- pbr_vrf.h
- ctype.h
- darr.h
- zebra/zebra_tc.h
- srte.h
- zebra/zebra_routemap_nb.h
- ospfd/ospf_ia.h
- linux/mpls_iptunnel.h
- bgp_flowspec_util.h
- pim6_cmd.h
- vrrp_zebra.h
- isis_lfa.h
- langhooks.h
- arpa/telnet.h
- lwp.h
- pim6_mld.h
- pim_bfd.h
- json-c/json_object.h
- sys/ksym.h
- bgp_ecommunity.h
- ospfd/ospfd.h
- zebra/irdp.h
- vrrp_ndisc.h
- printer_schema.h
- bgp_regex.h
- net/ethernet.h
- lib/zlog.h
- parser_internal.h
- sys/queue.h
- ipa-utils.h
- rfapi_rib.h
- bgpd/rfapi/rfapi_backend.h
- zebra/zebra_nb.h
- bgpd/bgp_conditional_adv.h
- pim_errors.h
- hash_table.h
- mtracebis_netlink.h
- substring-locations.h
- tm.h
- resolver.h
- sys/sockio.h
- isis_flex_algo.h
- qpb_allocator.h
- base64.h
- libfrr_trace.h
- tests/helpers/c/prng.h
- pcep_timer_internals.h
- context.h
- ospfd/ospf_routemap_nb.h
- isis_circuit.h
- eigrp_errors.h
- bgpd/rfapi/vnc_import_bgp.h
- pim_cmd_common.h
- sbuf.h
- mgmtd/mgmt_history.h
- if.h
- rfapi.h
- netinet6/in6_var.h
- wchar.h
- zebra/zebra_srv6_vty.h
- ospf_bfd.h
- isisd/isis_events.h
- bgpd/bgp_attr.h
- zlog_targets.h
- sqlite3.h
- eigrpd/eigrp_cli_clippy.c
- in_internal.h
- bgpd.h
- lib/pw.h
- bgpd/rfapi/vnc_export_table.h
- ospfd/ospf_dump_clippy.c
- sockopt.h
- lib/ringbuf.h
- isisd/isis_zebra.h
- pcep_socket_comm_internals.h
- pcep_utils_memory_test.h
- lib/if_rmap_clippy.c
- bgpd/rfapi/rfapi_encap_tlv.h
- eigrpd/eigrp_network.h
- pim_jp_agg.h
- grpcpp/create_channel.h
- eigrp_interface.h
- pcep_session_logic_internals.h
- ripngd/ripng_nexthop.h
- mgmt_msg.h
- pathd/path_pcep_debug.h
- lib/mgmt_fe_client_clippy.c
- rte_ethdev.h
- ospfd/ospf_zebra.h
- test_typelist.h
- bgp_table.h
- bgp_labelpool.h
- sys/lwp.h
- lib/id_alloc.h
- ospf6_network.h
- ospf6d/ospf6_route.h
- linux/kernel.h
- isisd/isis_routemap.h
- diff.h
- grpcpp/grpcpp.h
- gcc-rich-location.h
- bgp_errors.h
- zebra/connected.h
- zebra/zebra_trace.h
- zebra/zebra_srte.h
- fcntl.h
- flex_algo.h
- linenoise/linenoise.h
- zebra/redistribute.h
- zebra/zebra_l2_bridge_if.h
- lib/sha256.h
- libospf.h
- isisd/isis_dynhn.h
- workqueue.h
- static_nb.h
- srv6.h
- ripngd/ripng_nb.h
- netinet/ip.h
- pcep.h
- pbr_nht.h
- pbrd/pbr_memory.h
- inet/nd.h
- rfapi_import.h
- lib/ptm_lib.h
- staticd/static_debug.h
- lib/compiler.h
- ospfd/ospf_errors.h
- zebra/zebra_vxlan_if.h
- eigrpd/eigrp_const.h
- errno.h
- zebra.h
- net/route.h
- bgpd/bgp_pbr.h
- function.h
- bgpd/bgp_keepalives.h
- bgpd/rfapi/vnc_import_bgp_p.h
- bgpd/bgp_network.h
- vtysh/vtysh_daemons.h
- c-pragma.h
- bgp_route.h
- pullwr.h
- ospf6_routemap_nb.h
- ptm_lib.h
- kernel_netlink.h
- zebra/zebra_ptm_redistribute.h
- coretypes.h
- sharpd/sharp_globals.h
- compiler.h
- nexthop_group_private.h
- syslog.h
- vrf.h
- ospfd/ospf_route.h
- tree-cfgcleanup.h
- babel_errors.h
- lib/event_clippy.c
- pcreposix.h
- llvm/Support/raw_ostream.h
- zebra_dplane_dpdk.h
- rip_errors.h
- message.h
- bgpd/bgp_encap_tlv.h
- lib/nexthop_group_clippy.c
- pcep_msg_tlvs_test.h
- route_opaque.h
- frrevent.h
- ospf6_flood.h
- agg_table.h
- tree-vrp.h
- vtysh/vtysh_user.h
- libunwind.h
- ringbuf.h
- frrstr.h
- libyang.h
- vrf_int.h
- pcre2posix.h
- bgpd/bgp_snmp.h
- routing_nb.h
- pim_igmp_mtrace.h
- zebra_neigh.h
- plugins_exts_compile.h
- pbrd/pbr_nht.h
- pcep_msg_objects_test.h
- lib_errors.h
- schema_compile_amend.h
- time.h
- lib/yang_translator.h
- ospfd/ospf_ase.h
- schema_features.h
- lib/sockopt.h
- fpm/fpm_pb.h
- lib/yang_wrappers.h
- pim_rpf.h
- netdb.h
- bgpd/bgp_snmp_bgp4.h
- security/pam_appl.h
- pceplib/pcep_timers.h
- completion.h
- bgpd/rfapi/vnc_debug.h
- zebra/zebra_ns.h
- ldp_sync.h
- pcep_socket_comm_test.h
- bgp_updgrp.h
- sys/sysctl.h
- plugins_exts/metadata.h
- tree-ssa-alias.h
- babeld/babeld_clippy.c
- toplev.h
- expr.h
- vector.h
- in.h
- nexthop_group.h
- sockunion.h
- staticd/static_nb.h
- lib/bitfield.h
- vtysh/vtysh.h
- md5.h
- pbrd/pbr_vty.h
- ospf6d/ospf6_route_clippy.c
- linux/sockios.h
- sys/types.h
- bgpd/bgp_clist.h
- sharp_zebra.h
- fuzz.h
- security/openpam.h
- zebra_vxlan_if.h
- ripngd/ripng_cli_clippy.c
- pimd/pim_memory.h
- interface.h
- lib/vty.h
- zebra/rt_netlink.h
- isis_misc.h
- path_errors.h
- tree_schema_internal.h
- libfrr.h
- zebra/zebra_vxlan.h
- zebra_evpn.h
- isisd/isis_tlvs.h
- ospf6d/ospf6_gr_helper_clippy.c
- bgp_nexthop.h
- llvm-c/BitReader.h
- linux/if_bridge.h
- path.h
- bgp_encap_tlv.h
- ospf6d/ospf6_area_clippy.c
- seqlock.h
- pim_sock.h
- zebra/zebra_router.h
- ospf6d/ospf6_asbr.h
- pim_nht.h
- stdio.h
- bgpd/bgp_ecommunity.h
- lib/typesafe.h
- vnc_zebra.h
- ospf6_bfd.h
- grpcpp/client_context.h
- bgp_memory.h
- zebra/kernel_netlink.h
- lib/nexthop_group_private.h
- lib/affinitymap_cli_clippy.c
- link.h
- pim_instance.h
- bfddp_packet.h
- zserv.h
- pim_time.h
- bgp_evpn.h
- net/if_types.h
- printer_data.h
- prng.h
- zebra/zebra_affinitymap.h
- mgmtd/mgmt_defines.h
- ucontext.h
- babel_filter.h
- frrcu.h
- isisd/isis_mt.h
- c-objc.h
- netinet/in.h
- bgpd/bgp_debug.h
- lib/sigevent.h
- predict.h
- lib/northbound_cli.h
- northbound_cli.h
- schema_compile_node.h
- isisd/isis_te.h
- pcep_utils_queue_test.h
- rfapi_monitor.h
- dict.h
- timevar.h
- security/pam_misc.h
- lib/vrf.h
- lib/mpls.h
- sys/time.h
- pcep_timers_test.h
- lib/libfrr.h
- net-snmp/agent/net-snmp-agent-includes.h
- isisd.h
- ns.h
- lib/northbound_db.h
- static_vty.h
- sys/wait.h
- eigrpd/eigrp_macros.h
- frr_zmq.h
- zebra/zebra_nhg_private.h
- llvm/IR/Module.h
- zebra/zebra_srv6_vty_clippy.c
- pim_igmpv3.h
- eigrpd/eigrp_errors.h
- vty.h
- linux/ethtool.h
- sysrepo.h
- lib/mgmt.pb-c.h
- pim_igmp.h
- nhrpd.h
- sharp_globals.h
- bfd.h
- zebra_routemap_nb.h
- zebra/zebra_evpn.h
- table_manager.h
- net/pfkeyv2.h
- bgpd/bgp_damp.h
- isisd/isis_adjacency.h
- lib/qobj.h
- ospf_ldp_sync.h
- pcep_utils_logging.h
- mtracebis_routeget.h
- net/if.h
- tests/ospf6d/test_lsdb_clippy.c
- bgpd/bgp_updgrp.h
- pcep_msg_tlvs.h
- grpcpp/channel.h
- sys/dlpi.h
- lib/workqueue.h
- sys/sdt.h
- pim_pim.h
- zebra/dpdk/zebra_dplane_dpdk.h
- parser_data.h
- zebra/zebra_evpn_mh.h
- rlfa.h
- lib/csv.h
- pim_join.h
- pbrd/pbr_zebra.h
- net/if_arp.h
- ssa-iterators.h
- pbrd/pbr_debug_clippy.c
- zebra/kernel_socket.h
- ripd/rip_bfd.h
- ospfd/ospf_ldp_sync.h
- queue.h
- pim_msdp_socket.h
- bgp_pbr.h
- frr-format.h
- zebra/zebra_mlag.h
- tree_data_internal.h
- ../../src/common.h
- tree-into-ssa.h
- lib/nexthop_group.h
- lib/if.h
- plugins_exts_print.h
- frr-llvm-debuginfo.h
- ospf6d/ospf6d.h
- isisd/isis_lsp.h
- eigrpd/eigrp_zebra.h
- confd_dp.h
- gimple-fold.h
- pcep_msg_object_error_types.h
- bgpd/rfapi/rfapi_vty.h
- ldp_vty.h
- ospfd/ospf_ism.h
- zebra/zebra_srv6.h
- ../models/yang@2021-04-07.h
- ospfd/ospf_apiserver.h
- bgpd/bgp_route_clippy.c
- stringpool.h
- Python.h
- lib/frr_pthread.h
- ggc.h
- zebra_vxlan_private.h
- static_zebra.h
- readline/readline.h
- pcep_session_logic_loop_test.h
- netinet/in_var.h
- bgpd/bgp_table.h
- map
- string.h
- tests_config.h
- isis_flags.h
- lttng/tracelog.h
- hash.h
- math.h
- pathd/path_zebra.h
- zebra/rib.h
- netinet/in6_var.h
- is-a.h
- bgpd/bgp_io.h
- linux/seg6.h
- nexthop.h
- pass_manager.h
- prefix.h
- staticd/static_zebra.h
- routemap.h
- lib/zlog_5424_cli_clippy.c
- assert.h
- plugins_types.h
- malloc.h
- gcc-plugin.h
- lib/ldp_sync.h
- eigrpd/eigrp_metric.h
- pwd.h
- pim_bsm.h
- lib/if_clippy.c
- northbound_db.h
- pim_nb.h
- zebra/router-id.h
- defaults.h
- hard-reg-set.h
- ospf6d/ospf6_top_clippy.c
- llvm/IR/Value.h
- sigevent.h
- gelf.h
- gimple-expr.h
- bgp_aspath.h
- lib/libospf.h
- zebra/zebra_script.h
- ospf6_message.h
- zebra/zebra_vxlan_private.h
- stdint.h
- lib/agg_table.h
- bitfield.h
- lib/lib_vty.h
- isis_lsp.h
- bgpd/bgp_lcommunity.h
- gimple.h
- eigrpd/eigrp_vty_clippy.c
- linear_allocator.h
- lib/json.h
- yang_translator.h
- ospf6_top.h
- zebra/ipforward.h
- builtins.h
- source.h
- filter.h
- ospfd/ospf_abr.h
- ripngd/ripng_route.h
- ripd/ripd.h
- mach/mach.h
- ospf6_lsa.h
- tree-ssa.h
- lib/yang.h
- lib/openbsd-queue.h
- pathd/path_debug.h
- validation.h
- zebra/zebra_errors.h
- linux/ip.h
- lib/sockunion.h
- valgrind/memcheck.h
- zebra/interface.h
- linux/fib_rules.h
- isisd/isis_common.h
- tree-flow.h
- qpb/linear_allocator.h
- os.h
- eigrpd/eigrp_yang.h
- lib/routing_nb.h
- bgpd/rfapi/rfapi_monitor.h
- openssl/des.h
- xpath.h
- lib/asn.h
- vlan.h
- nhrp_errors.h
- pim_memory.h
- pointer-set.h
- spf_backoff.h
- mach/mach_traps.h
- zebra_pbr.h
- net/netopt.h
- mlag.h
- pcep_msg_messages.h
- varasm.h
- linux/lwtunnel.h
- table.h
- asm/byteorder.h
- pathd/path_cli_clippy.c
- linux/if_addr.h
- vnc_import_bgp.h
- pthread.h
- lib/ipaddr.h
- pcep_socket_comm.h
- pcep_session_logic_states_test.h
- zebra_netns_notify.h
- llvm/IR/DebugInfoMetadata.h
- linux/netfilter/nfnetlink_log.h
- keychain.h
- confd_cdb.h
- resend.h
- bgpd/bgp_community_alias.h
- pathd/path_pcep_cli.h
- bgpd/bgp_errors.h
- tree-pretty-print.h
- line-map.h
- affinitymap.h
- linux/netlink.h
- bgpd/bgp_vnc_types.h
- ospfd/ospf_nsm.h
- lib/distribute.h
- isisd/iso_checksum.h
- netinet/igmp.h
- lib/command.h
- ospf6d/ospf6_zebra.h
- pcep_msg_object_error_types_test.h
- rfapi_private.h
- ospfd/ospf_ri.h
- lib/stream.h
- rtl.h
- zebra/rtadv_clippy.c
- sys/ioctl.h
- pthread_np.h
- netinet/if_ether.h
- bgpd/bgpd.c
- ospf6d/ospf6_network.h
- bfdd/bfdd_vty_clippy.c
- emit-rtl.h
- sys/conf.h
- isisd/isis_csm.h
- pbrd/pbr_map.h
- tests.h
- lib/zlog_targets.h
- bgpd/bgp_advertise.h
- ../models/ietf-yang-metadata@2016-08-05.h
- zebra/zebra_netns_notify.h
- ldpd/ldpd.h
- ../../src/tree_schema_internal.h
- eigrpd/eigrp_neighbor.h
- bgp_io.h
- ospfd.h
- rfp.h
- mgmt_pb.h
- lib/ns.h
- buffer.h
- pceplib/pcep_msg_objects.h
- pimd/pim6_cmd.h
- frr_pthread.h
- pimd.h
- sys/uio.h
- rt.h
- bgpd/bgp_mplsvpn_snmp.h
- zebra/zebra_mroute.h
- lib/memory.h
- ospf_nsm.h
- lib/vty_clippy.c
- ospf6d/ospf6_neighbor.h
- pbrd/pbr_debug.h
- ospf_errors.h
- sys/stat.h
- zebra_fpm_private.h
- ospf_lsdb.h
- pcep_msg_messages_test.h
- eigrpd/eigrp_cli.h
- vrrp_vty.h
- linklist.h
- termtable.h
- eigrp_cli.h
- admin_group.h
- ospf6_route.h
- linux/in6.h
- pcep_msg_objects.h
- lib/log_vty_clippy.c
- bgpd/bgp_packet.h
- tests/lib/cli/common_cli.h
- pim_zebra.h
- mgmtd/mgmt.h
- lib/jhash.h
- pcep_msg_tools.h
- output.h
- openssl/evp.h
- ioctl.h
- zebra/zebra_neigh.h
- lib_vty.h
- zmq.h
- rfapi_vty.h
- lib/monotime.h
- pathd/path_ted.h
- llvm/IR/Type.h
- memmodel.h
- jhash.h
- lib/vector.h
- eigrpd/eigrp_interface.h
- out_internal.h
- typerb.h
- lib/table.h
- ospf6_neighbor.h
- pceplib/pcep_utils_logging.h
- lib/filter_cli_clippy.c
- zebra/zebra_pbr.h
- ospf6d/ospf6_lsdb.h
- ospfd/ospf_packet.h
- ospfd/ospf_asbr.h
- google/protobuf-c/protobuf-c.h
- zebra_mlag_vty.h
- netinet/ip6.h
- pbr_map.h
- babeld/babel_interface_clippy.c
- command_graph.h
- ldpd.h
- static_nht.h
- isisd/isis_dr.h
- ldp.h
- c-pretty-print.h
- gimple-pretty-print.h
- isisd/isis_misc.h
- ospfd/ospf_dump.h
- northbound.h
- bgpd/rfapi/vnc_zebra.h
- lib/hook.h
- lib/trace.h
- linux/filter.h
- eigrpd/eigrp_vty.h
- pbr_debug.h
- zebra/table_manager.h
- lib/sbuf.h
- isisd/isis_tx_queue.h
- lib/printfrr.h
- sharpd/sharp_vty.h
- memory
- log.h
- pathd/path_pcep_lib.h
- ../models/ietf-inet-types@2013-07-15.h
- bgpd/rfapi/rfapi_ap.h
- route.h
- lib/link_state.h
- lib/frrstr.h
- linux/seg6_local.h
- pcep_utils_double_linked_list_test.h
- pcep_utils_queue.h
- sys/select.h
- pcep_utils_counters.h
- libgen.h
- zebra/label_manager.h
- linux/net_namespace.h
- lib/xref.h
- csv.h
- static_routes.h
- zebra_mlag.h
- ospf6_auth_trailer.h
- bgpd/bgp_regex.h
- lib/module.h
- limits.h
- zebra_nhg.h
- zebra/zebra_vrf_clippy.c
- ../models/ietf-datastores@2018-02-14.h
- linux/pkt_cls.h
- iana_afi.h
- target.h
- pimd/pim_nht.h
- tm_p.h
- elf.h
- pathd/path_pcep_pcc.h
- ospf6_area.h
- ospf6d/ospf6_interface_clippy.c
- endian.h
- path_ted.h
- distribute.h
- CUnit/TestDB.h
- pim_addr.h
- termios.h
- pim_macro.h
- mach/mach_time.h
- linux/if.h
- eigrpd/eigrpd.h
- dlfcn.h
- lib/graph.h
- pim_cmd.h
- linux/pkt_sched.h
- isisd/isis_flags.h
- ares.h
- zebra/rtadv.h
- redistribute.h
- flags.h
- ospf6_nssa.h
- bgp_addpath.h
- ospf6_lsdb.h
- ospf_api.h
- llvm-c/BitWriter.h
- iso_checksum.h
- readline/history.h
- isis_errors.h
- ospf6d/ospf6_message.h
- lib/plist.h
- basic-block.h
- rib.h
- lib/frratomic.h
- tree-ssanames.h
- vxlan.h
- isis_route.h
- lib/termtable.h
- unistd.h
- lttng/tracepoint.h
- bgpd/rfapi/rfapi_private.h
- netinet/ip_icmp.h
- lib/debug.h
- staticd/static_vty.h
- linux/if_packet.h
- bgpd/bgp_mplsvpn.h
- pim_igmp_stats.h
- babel_interface.h
- bgpd/bgp_route.h
- bgpd/bgp_aspath.h
- bgpd/bgp_mpath.h
- bgp_encap_types.h
- pbrd/pbr_vty_clippy.c
- net-snmp/net-snmp-includes.h
- bgpd/bgp_open.h
- isisd/isis_spf.c
- net-snmp/net-snmp-config.h
- qpb/qpb.pb-c.h
- pim_mlag.h
- c-tree.h
- zebra_dplane.h
- qobj.h
- lib/mgmt_be_client_clippy.c
- lib/log.h
- net.h
- ferr.h
- net/if_var.h
- printflocal.h
- pim_ifchannel.h
- pim_vxlan_instance.h
- qpb/qpb_allocator.h
- isis_csm.h
- iso.h
- utests.h
- xml.h
- typesafe.h
- ospfd/ospf_api.h
- debug.h
- plugins.h
- pim_vty.h
- command.h
- ospf6_zebra.h
- pim_iface.h
- pim_msdp.h
- pimd/pim_instance.h
- bgpd/bgp_evpn.h
- sys/mount.h
- linux/rtnetlink.h
- bgp_debug.h
- lib/lib_errors.h
- pcep_pcc_api_test.h
- zebra_netns_id.h
- neighbour.h
- grpcpp/security/credentials.h
- lua.h
- zebra/debug.h
- ospf_interface.h
- zebra/zebra_evpn_vxlan.h
- bgpd/bgp_script.h
- ospf_lsa.h
- pimd/pim_nb.h
- plugins_internal.h
- ipaddr.h
- out.h
- lib/northbound_cli_clippy.c
- pimd/pim_cmd_clippy.c
- bgpd/bgp_label.h
- zebra_tc.h
- bgpd/rfapi/vnc_export_bgp_p.h
- isisd/isis_lsp.c
- bversion.h
- zebra/zebra_mpls.h
- zebra_vxlan.h
- CUnit/CUnit.h
- json.h
- eigrpd/eigrp_routemap.h
- c-family/c-common.h
- zebra/zebra_routemap.h
- printfcommon.h
- ospfd/ospf_vty_clippy.c
- compat.h
- lib/spf_backoff.h
- ospf_asbr.h
- sharp_nht.h
- ospfd/ospf_lsa.h
- pim_hello.h
- lib/zebra.h
- bgpd/bgp_bmp.h
- ospf_neighbor.h
- bfdd/bfdd_cli_clippy.c
- isisd/isis_spf.h
- mgmt_be_client.h
- mgmtd/mgmt_fe_adapter.h
- ospf6d/ospf6_lsa_clippy.c
- ospf6_proto.h
- lib/frrlua.h
- malloc/malloc.h
- configuration.h
- ospf_dump.h
- yang.h
- ospfd/ospf_lsdb.h
- sharp_vty.h
- bgpd/bgp_flowspec.h
- pcep_timers_event_loop_test.h
- sys/syscall.h
- db.h
- ospfd/ospf_opaque.h
- bgp_rpki.h
- bgp_fsm.h
- xroute.h
- float.h
- ../models/ietf-yang-types@2013-07-15.h
- ospf6_abr.h
- linux/if_link.h
- ospf6_spf.h
- netinet/in_systm.h
- CUnit/Basic.h
- selftest-diagnostic.h
- ospf6d/ospf6_asbr_clippy.c
- frratomic.h
- zebra_trace.h
- input.h
- isisd/isis_bfd.h
- pathd/path_ted_clippy.c
- grp.h
- pathd/path_nb.h
- pcep_timers_event_loop.h
- lib/mlag.h
- selftest.h
- ospf_memory.h
- internal-fn.h
- bgpd/bgp_zebra.h
- sharpd/sharp_nht.h
- lualib.h
- stor-layout.h
- lib/routemap_clippy.c
- eigrpd/eigrp_packet.h
- execinfo.h
- connected.h
- pim_static.h
- pimd/pim_cmd_common.h
- pim_ssmpingd.h
- bgpd/bgp_routemap_clippy.c
- static_debug.h
- zebra/zebra_netns_id.h
- isisd/isis_network.h
- pim_msdp_packet.h
- sysrepo/xpath.h
- plugin.h
- bgp_attr_evpn.h
- bgpd/bgp_vty.h
- staticd/static_vty_clippy.c
- linux/nexthop.h
- isis_common.h
- link_state.h
- pim_rp.h
- tests/lib/cli/test_cli_clippy.c
- wheel.h
- dirent.h
- test_common.h
- isis_constants.h
- vnc_export_bgp.h
- lib/plist_int.h
- isisd/isis_pdu.h
- path_zebra.h
- bgpd/rfapi/rfapi.h
- lib/srv6.h
- bgpd/bgp_rd.h
- pcep_socket_comm_loop.h
- bgpd/rfapi/rfapi_descriptor_rfp_utils.h
- lib/command_match.h
- vtysh/vtysh_clippy.c
- bgp_clist.h
- test_fuzz_isis_tlv_tests.h
- llvm-c/Core.h
- lib/nexthop.h
- ospfd/ospf_ldp_sync_clippy.c
- pathd/path_errors.h
- ospf_routemap_nb.h
- linux/netconf.h
- zebra/zebra_mlag_vty.h
- static_vrf.h
- ospf6d/ospf6_gr.h
- bgpd/bgp_encap_types.h
- yang_wrappers.h
- ldpe.h
- hook.h
- ./linenoise/linenoise.h
- pim_register.h
- ../models/ietf-yang-library@2019-01-04.h
- bgpd/bgp_fsm.h
- isisd/isis_pdu_counter.h
- gimple-iterator.h
- ospfd/ospf_interface.h
- zebra/netconf_netlink.h
- staticd/static_routes.h
- pcep_socket_comm_loop_test.h
- tc.h
- lib/typerb.h
- confd_maapi.h
- lib/command_graph.h
- zebra_evpn_mac.h
- sys/inotify.h
- bgpd/bgp_flowspec_util.h
- stdalign.h
- ospf_vty.h
- ospfd/ospf_spf.h
- grpc/grpc.h
- ldpd/ldp_vty.h
- plugins_exts.h
- lde.h
- sys/mman.h
- frrscript.h
- setjmp.h
- isis_pdu.h
- err.h
- pimd/pim_tib.h
- log_vty.h
- pathd/path_pcep_config.h
- getopt.h
- net-snmp/agent/snmp_vars.h
- linux/mroute6.h
- arpa/inet.h
- isisd/isis_ldp_sync.h
- bgp_trace.h
- string
- test_schema.h
- isisd/isis_cli_clippy.c
- lib/wheel.h
- printfrr.h
- tree-ssa-operands.h
- ospf6d/ospf6_intra.h
- zebra/if_netlink.h
- privs.h
- bgpd/bgp_bfd.h
- pim_ssm.h
- ospf6d/ospf6_area.h
- version.h
- lib/routemap_cli_clippy.c
- xref.h
- stropts.h
- confd_lib.h
- bgpd/bgp_evpn_private.h
- pim_tib.h
- bgpd/bgp_routemap_nb.h
- pcep_pcc_api.h
- bfdd_nb.h
- gimple-ssa.h
- params.h
- isisd/isis_errors.h
- lib/keychain.h
- skiplist.h
- bgpd/bgp_evpn_vty.h
- znl.h
- isisd/isis_nb.h
- isis_spf.h
- sys/utsname.h
- netinet/udp.h
- eigrp_network.h
- pim_upstream.h
- printer_internal.h
- linux/futex.h
- intl.h
- pbr_vty.h
- pcep_session_logic_test.h
- zebra_vrf.h
- mgmtd/mgmt_memory.h
- ospfd/ospf_memory.h
- isisd/isis_redist.h
- eigrpd/eigrp_structs.h
- isis_routemap.h
- lib/ntop.c
- lib/filter.h
- module.h
- sys/cdefs.h
- pimd/pim_iface.h
- pim_mroute.h
- openbsd-tree.h
- path_nb.h
- ../utests.h
- linux/const.h
- freebsd-queue.h
- pim_signals.h
- poll.h
- eigrpd/eigrp_fsm.h
- mgmt_fe_client.h
- ospfd/ospf_neighbor.h
- ripd/rip_debug.h
- lib/imsg.h
- lib/skiplist.h
- bgpd/bgp_nht.h
- pcep_session_logic.h
- ospf6_gr.h
- common_cli.h
- bgp_rfapi_cfg.h
- isis_adjacency.h
- sched.h
- srcdest_table.h
- lib/zlog_5424.h
- libelf.h
- ospf6d/ospf6_interface.h
- ospfd/ospf_sr.h
- stream.h
- lib/route_opaque.h
- network.h
- asn.h
- rtrlib/rtrlib.h
- isisd/isis_flex_algo.h
- cgraph.h
- clippy.h
- ldpd/ldp_vty_cmds_clippy.c
- eigrpd.h
- netinet6/in.h
- eigrpd/eigrp_topology.h
- sstream
- grpc/frr-northbound.grpc.pb.h
- pcep_utils_double_linked_list.h
- ripd/rip_cli_clippy.c
- nhrp_protocol.h
- net/if_dl.h
- pcep_utils_ordered_list_test.h
- lib/log_vty.h
- cmd.h
- pceplib/pcep_pcc_api.h
- system.h
- bgpd/bgp_flowspec_private.h
- watchfrr/watchfrr_vty_clippy.c
- ospf6d/ospf6_spf.h
- strings.h
- staticd/static_vrf.h
- tree-pass.h
- bgp_advertise.h
- command_match.h
- ripd/rip_errors.h
- pim_str.h
- common.h
- pim_igmpv2.h
- bgpd/bgp_labelpool_clippy.c
- zebra/debug_clippy.c
- lib/network.h
- zebra/zebra_fpm_private.h
- ospf6d/ospf6_nssa_clippy.c
report: name
sources:
- function_names: []
  source_file: /src/frr/version.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/watchfrr/watchfrr.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MIN
  - JITTER
  - FUZZY
  - IS_UP
  - watchfrr_set_ignore_daemon
  - printhelp
  - run_background
  - time_elapsed
  - restart_kill
  - find_child
  - sigchild
  - run_job
  - SET_READ_HANDLER
  - SET_WAKEUP_DOWN
  - SET_WAKEUP_UNRESPONSIVE
  - SET_WAKEUP_ECHO
  - wakeup_down
  - wakeup_init
  - restart_done
  - daemon_restarting_operational
  - daemon_down
  - handle_read
  - daemon_send_ready
  - daemon_up
  - check_connect
  - wakeup_connect_hanging
  - try_connect
  - phase_hanging
  - set_phase
  - phase_check
  - try_restart
  - wakeup_unresponsive
  - wakeup_no_answer
  - wakeup_send_echo
  - check_all_up
  - watchfrr_status
  - sigint
  - valid_command
  - translate_blanks
  - startup_timeout
  - netns_create
  - netns_setup
  - netns_setup
  - watchfrr_start_config
  - watchfrr_end_config
  - watchfrr_init
  - main
  source_file: /src/frr/watchfrr/watchfrr.c
  types:
    enum:
    - enumerators:
      - name: PHASE_NONE
        value: '0'
      - name: PHASE_WAITING_DOWN
      - name: PHASE_STOPS_PENDING
      - name: PHASE_INIT
      - name: PHASE_ZEBRA_RESTART_PENDING
      - name: PHASE_WAITING_ZEBRA_UP
      item_type: enum
      name: restart_phase
      pos:
        line_end: 67
        line_start: 60
        source_file: /src/frr/watchfrr/watchfrr.c
    - enumerators:
      - name: DAEMON_INIT
      - name: DAEMON_UNRESPONSIVE
      - name: DAEMON_CONNECTING
      - name: DAEMON_DOWN
      - name: DAEMON_UP
      item_type: enum
      name: daemon_state
      pos:
        line_end: 136
        line_start: 130
        source_file: /src/frr/watchfrr/watchfrr.c
    preproc_defs:
    - item_type: preproc_def
      name: DEFAULT_PERIOD
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '5'
    - item_type: preproc_def
      name: DEFAULT_TIMEOUT
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '90'
    - item_type: preproc_def
      name: DEFAULT_RESTART_TIMEOUT
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '20'
    - item_type: preproc_def
      name: DEFAULT_LOGLEVEL
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: LOG_INFO
    - item_type: preproc_def
      name: DEFAULT_MIN_RESTART
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '60'
    - item_type: preproc_def
      name: DEFAULT_MAX_RESTART
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '600'
    - item_type: preproc_def
      name: DEFAULT_OPERATIONAL_TIMEOUT
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '60'
    - item_type: preproc_def
      name: DEFAULT_RESTART_CMD
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: WATCHFRR_SH_PATH " restart %s"
    - item_type: preproc_def
      name: DEFAULT_START_CMD
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: WATCHFRR_SH_PATH " start %s"
    - item_type: preproc_def
      name: DEFAULT_STOP_CMD
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: WATCHFRR_SH_PATH " stop %s"
    - item_type: preproc_def
      name: PING_TOKEN
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '"PING"'
    - item_type: preproc_def
      name: PHASE_TIMEOUT
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: (3*gs.restart_timeout)
    - item_type: preproc_def
      name: STARTUP_TIMEOUT
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: 55 * 1000
    - item_type: preproc_def
      name: OPTION_MINRESTART
      pos:
        line_end: 168
        line_start: 167
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '2000'
    - item_type: preproc_def
      name: OPTION_MAXRESTART
      pos:
        line_end: 169
        line_start: 168
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '2001'
    - item_type: preproc_def
      name: OPTION_DRY
      pos:
        line_end: 170
        line_start: 169
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '2002'
    - item_type: preproc_def
      name: OPTION_NETNS
      pos:
        line_end: 171
        line_start: 170
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '2003'
    - item_type: preproc_def
      name: OPTION_MAXOPERATIONAL
      pos:
        line_end: 172
        line_start: 171
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '2004'
    - item_type: preproc_def
      name: NETNS_RUN_DIR
      pos:
        line_end: 1131
        line_start: 1130
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '"/var/run/netns"'
    - item_type: preproc_def
      name: DEPRECATED_OPTIONS
      pos:
        line_end: 1361
        line_start: 1360
        source_file: /src/frr/watchfrr/watchfrr.c
      type_or_value: '"aAezR:"'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*what'
        type: char
      - name: pid
        type: pid_t
      - name: time
        type: struct timeval
      - name: interval
        type: long
      - name: '*t_kill'
        type: struct event
      - name: kills
        type: int
      item_type: struct
      name: restart_info
      pos:
        line_end: 90
        line_start: 82
        source_file: /src/frr/watchfrr/watchfrr.c
    - fields:
      - name: phase
        type: enum restart_phase
      - name: '*t_phase_hanging'
        type: struct event
      - name: '*t_startup_timeout'
        type: struct event
      - name: '*t_operational'
        type: struct event
      - name: '*vtydir'
        type: char
      - name: period
        type: long
      - name: timeout
        type: long
      - name: restart_timeout
        type: long
      - name: reading_configuration
        type: bool
      - name: min_restart_interval
        type: long
      - name: max_restart_interval
        type: long
      - name: operational_timeout
        type: long
      - name: '*daemons'
        type: struct daemon
      - name: '*restart_command'
        type: char
      - name: '*start_command'
        type: char
      - name: '*stop_command'
        type: char
      - name: restart
        type: struct restart_info
      - name: loglevel
        type: int
      - name: '*special'
        type: struct daemon
      - name: numdaemons
        type: int
      - name: numpids
        type: int
      - name: numdown
        type: int
      item_type: struct
      name: global_state
      pos:
        line_end: 115
        line_start: 92
        source_file: /src/frr/watchfrr/watchfrr.c
    - fields:
      - name: '*name'
        type: char
      - name: state
        type: enum daemon_state
      - name: fd
        type: int
      - name: echo_sent
        type: struct timeval
      - name: connect_tries
        type: unsigned int
      - name: '*t_wakeup'
        type: struct event
      - name: '*t_read'
        type: struct event
      - name: '*t_write'
        type: struct event
      - name: '*next'
        type: struct daemon
      - name: restart
        type: struct restart_info
      - name: ignore_timeout
        type: bool
      item_type: struct
      name: daemon
      pos:
        line_end: 165
        line_start: 145
        source_file: /src/frr/watchfrr/watchfrr.c
    typedefs: []
    union: []
- function_names:
  - watchfrr_error_init
  source_file: /src/frr/watchfrr/watchfrr_errors.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/watchfrr/watchfrr_errors.h
  types:
    enum:
    - enumerators:
      - name: EC_WATCHFRR_CONNECTION
        value: WATCHFRR_FERR_START
      - name: EC_WATCHFRR_UNEXPECTED_DAEMONS
      item_type: enum
      name: watchfrr_log_refs
      pos:
        line_end: 15
        line_start: 12
        source_file: /src/frr/watchfrr/watchfrr_errors.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - integrated_write_sigchld
  - watchfrr_vty_init
  source_file: /src/frr/watchfrr/watchfrr_vty.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nhrp_vc_key
  - nhrp_vc_cmp
  - nhrp_vc_alloc
  - nhrp_vc_free
  - nhrp_vc_get
  - nhrp_vc_check_delete
  - nhrp_vc_update
  - nhrp_vc_ipsec_reset
  - nhrp_vc_ipsec_updown
  - nhrp_vc_notify_add
  - nhrp_vc_notify_del
  - nhrp_vc_iterator
  - nhrp_vc_foreach
  - nhrp_vc_init
  - nhrp_vc_reset
  - nhrp_vc_terminate
  source_file: /src/frr/nhrpd/nhrp_vc.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: id
        type: uint32_t
      - name: '*vc'
        type: struct nhrp_vc
      - name: childlist_entry
        type: struct childlist_item
      item_type: struct
      name: child_sa
      pos:
        line_end: 23
        line_start: 19
        source_file: /src/frr/nhrpd/nhrp_vc.c
    - fields:
      - name: (*cb)(struct nhrp_vc *, void *)
        type: void
      - name: '*ctx'
        type: void
      item_type: struct
      name: nhrp_vc_iterator_ctx
      pos:
        line_end: 176
        line_start: 173
        source_file: /src/frr/nhrpd/nhrp_vc.c
    typedefs: []
    union: []
- function_names:
  - nhrp_reqid_key
  - nhrp_reqid_cmp
  - nhrp_reqid_alloc
  - nhrp_reqid_free
  - nhrp_reqid_lookup
  source_file: /src/frr/nhrpd/reqid.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/nhrpd/os.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/nhrpd/nhrp_protocol.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ETH_P_NHRP
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x2001'
    - item_type: preproc_def
      name: NHRP_VERSION_RFC2332
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: NHRP_PACKET_RESOLUTION_REQUEST
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: NHRP_PACKET_RESOLUTION_REPLY
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: NHRP_PACKET_REGISTRATION_REQUEST
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: NHRP_PACKET_REGISTRATION_REPLY
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: NHRP_PACKET_PURGE_REQUEST
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: NHRP_PACKET_PURGE_REPLY
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: NHRP_PACKET_ERROR_INDICATION
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: NHRP_PACKET_TRAFFIC_INDICATION
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: NHRP_PACKET_MAX
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: NHRP_EXTENSION_FLAG_COMPULSORY
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: NHRP_EXTENSION_END
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0'
    - item_type: preproc_def
      name: NHRP_EXTENSION_PAYLOAD
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0'
    - item_type: preproc_def
      name: NHRP_EXTENSION_RESPONDER_ADDRESS
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: NHRP_EXTENSION_FORWARD_TRANSIT_NHS
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: NHRP_EXTENSION_REVERSE_TRANSIT_NHS
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: NHRP_EXTENSION_AUTHENTICATION
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: NHRP_EXTENSION_VENDOR
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: NHRP_EXTENSION_NAT_ADDRESS
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '9'
    - item_type: preproc_def
      name: NHRP_ERROR_UNRECOGNIZED_EXTENSION
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: NHRP_ERROR_LOOP_DETECTED
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: NHRP_ERROR_PROTOCOL_ADDRESS_UNREACHABLE
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: NHRP_ERROR_PROTOCOL_ERROR
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: NHRP_ERROR_SDU_SIZE_EXCEEDED
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: NHRP_ERROR_INVALID_EXTENSION
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '9'
    - item_type: preproc_def
      name: NHRP_ERROR_INVALID_RESOLUTION_REPLY
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '10'
    - item_type: preproc_def
      name: NHRP_ERROR_AUTHENTICATION_FAILURE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '11'
    - item_type: preproc_def
      name: NHRP_ERROR_HOP_COUNT_EXCEEDED
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '15'
    - item_type: preproc_def
      name: NHRP_CODE_SUCCESS
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0'
    - item_type: preproc_def
      name: NHRP_CODE_ADMINISTRATIVELY_PROHIBITED
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: NHRP_CODE_INSUFFICIENT_RESOURCES
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: NHRP_CODE_NO_BINDING_EXISTS
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '11'
    - item_type: preproc_def
      name: NHRP_CODE_BINDING_NON_UNIQUE
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '13'
    - item_type: preproc_def
      name: NHRP_CODE_UNIQUE_ADDRESS_REGISTERED
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '14'
    - item_type: preproc_def
      name: NHRP_FLAG_RESOLUTION_SOURCE_IS_ROUTER
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: NHRP_FLAG_RESOLUTION_AUTHORATIVE
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x4000'
    - item_type: preproc_def
      name: NHRP_FLAG_RESOLUTION_DESTINATION_STABLE
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x2000'
    - item_type: preproc_def
      name: NHRP_FLAG_RESOLUTION_UNIQUE
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x1000'
    - item_type: preproc_def
      name: NHRP_FLAG_RESOLUTION_SOURCE_STABLE
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x0800'
    - item_type: preproc_def
      name: NHRP_FLAG_RESOLUTION_NAT
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x0002'
    - item_type: preproc_def
      name: NHRP_FLAG_REGISTRATION_UNIQUE
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: NHRP_FLAG_REGISTRATION_NAT
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x0002'
    - item_type: preproc_def
      name: NHRP_FLAG_PURGE_NO_REPLY
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: NHRP_AUTHENTICATION_PLAINTEXT
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/frr/nhrpd/nhrp_protocol.h
      type_or_value: '0x00000001'
    structs:
    - fields:
      - name: afnum
        type: uint16_t
      - name: protocol_type
        type: uint16_t
      - name: snap[5]
        type: uint8_t
      - name: hop_count
        type: uint8_t
      - name: packet_size
        type: uint16_t
      - name: checksum
        type: uint16_t
      - name: extension_offset
        type: uint16_t
      - name: version
        type: uint8_t
      - name: type
        type: uint8_t
      - name: src_nbma_address_len
        type: uint8_t
      - name: src_nbma_subaddress_len
        type: uint8_t
      - name: src_protocol_address_len
        type: uint8_t
      - name: dst_protocol_address_len
        type: uint8_t
      - name: flags
        type: uint16_t
      - name: u
        type: "union {\n\t\tuint32_t request_id;\n\t\tstruct {\n\t\t\tuint16_t code;\n\t\t\tuint16_t
          offset;\n\t\t} error;\n\t}"
      item_type: struct
      name: nhrp_packet_header
      pos:
        line_end: 102
        line_start: 77
        source_file: /src/frr/nhrpd/nhrp_protocol.h
    - fields:
      - name: code
        type: uint8_t
      - name: prefix_length
        type: uint8_t
      - name: unused
        type: uint16_t
      - name: mtu
        type: uint16_t
      - name: holding_time
        type: uint16_t
      - name: nbma_address_len
        type: uint8_t
      - name: nbma_subaddress_len
        type: uint8_t
      - name: protocol_address_len
        type: uint8_t
      - name: preference
        type: uint8_t
      item_type: struct
      name: nhrp_cie_header
      pos:
        line_end: 114
        line_start: 104
        source_file: /src/frr/nhrpd/nhrp_protocol.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      item_type: struct
      name: nhrp_extension_header
      pos:
        line_end: 119
        line_start: 116
        source_file: /src/frr/nhrpd/nhrp_protocol.h
    - fields:
      - name: type
        type: uint32_t
      - name: secret[8]
        type: uint8_t
      item_type: struct
      name: nhrp_cisco_authentication_extension
      pos:
        line_end: 124
        line_start: 121
        source_file: /src/frr/nhrpd/nhrp_protocol.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/nhrpd/vici.h
  types:
    enum:
    - enumerators:
      - name: VICI_START
        value: '0'
      - name: VICI_SECTION_START
        value: '1'
      - name: VICI_SECTION_END
        value: '2'
      - name: VICI_KEY_VALUE
        value: '3'
      - name: VICI_LIST_START
        value: '4'
      - name: VICI_LIST_ITEM
        value: '5'
      - name: VICI_LIST_END
        value: '6'
      - name: VICI_END
        value: '7'
      item_type: enum
      name: vici_type_t
      pos:
        line_end: 10
        line_start: 1
        source_file: /src/frr/nhrpd/vici.h
    - enumerators:
      - name: VICI_CMD_REQUEST
        value: '0'
      - name: VICI_CMD_RESPONSE
      - name: VICI_CMD_UNKNOWN
      - name: VICI_EVENT_REGISTER
      - name: VICI_EVENT_UNREGISTER
      - name: VICI_EVENT_CONFIRM
      - name: VICI_EVENT_UNKNOWN
      - name: VICI_EVENT
      item_type: enum
      name: vici_operation_t
      pos:
        line_end: 21
        line_start: 12
        source_file: /src/frr/nhrpd/vici.h
    preproc_defs:
    - item_type: preproc_def
      name: VICI_MAX_MSGLEN
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/nhrpd/vici.h
      type_or_value: (512*1024)
    structs: []
    typedefs: []
    union: []
- function_names:
  - ERRNO_IO_RETRY
  - zbuf_alloc
  - zbuf_init
  - zbuf_free
  - zbuf_reset
  - zbuf_reset_head
  - zbuf_remove_headroom
  - zbuf_read
  - zbuf_write
  - zbuf_recv
  - zbuf_send
  - zbuf_may_pull_until
  - zbufq_init
  - zbufq_reset
  - zbufq_queue
  - zbufq_write
  - zbuf_copy
  - zbuf_copy_peek
  source_file: /src/frr/nhrpd/zbuf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/nhrpd/netlink.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ZNL_ALIGN
  - znl_push
  - znl_pull
  - znl_nlmsg_push
  - znl_nlmsg_complete
  - znl_nlmsg_pull
  - znl_rta_push
  - znl_rta_push_u32
  - znl_rta_nested_push
  - znl_rta_nested_complete
  - znl_rta_pull
  - znl_open
  source_file: /src/frr/nhrpd/znl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - debugf
  source_file: /src/frr/nhrpd/debug.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NHRP_DEBUG_COMMON
      pos:
        line_end: 3
        line_start: 2
        source_file: /src/frr/nhrpd/debug.h
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: NHRP_DEBUG_KERNEL
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/frr/nhrpd/debug.h
      type_or_value: (1 << 1)
    - item_type: preproc_def
      name: NHRP_DEBUG_IF
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/frr/nhrpd/debug.h
      type_or_value: (1 << 2)
    - item_type: preproc_def
      name: NHRP_DEBUG_ROUTE
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/frr/nhrpd/debug.h
      type_or_value: (1 << 3)
    - item_type: preproc_def
      name: NHRP_DEBUG_VICI
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/frr/nhrpd/debug.h
      type_or_value: (1 << 4)
    - item_type: preproc_def
      name: NHRP_DEBUG_EVENT
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/frr/nhrpd/debug.h
      type_or_value: (1 << 5)
    - item_type: preproc_def
      name: NHRP_DEBUG_ALL
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/frr/nhrpd/debug.h
      type_or_value: (0xFFFF)
    structs: []
    typedefs: []
    union: []
- function_names:
  - NOTIFIER_LIST_INITIALIZER
  - notifier_init
  - notifier_add
  - notifier_del
  - notifier_call
  - notifier_active
  source_file: /src/frr/nhrpd/nhrpd.h
  types:
    enum:
    - enumerators:
      - name: NOTIFY_INTERFACE_ADDRESS_CHANGED
      - name: NOTIFY_INTERFACE_MTU_CHANGED
      - name: NOTIFY_VC_IPSEC_UPDATE_NBMA
      - name: NOTIFY_CACHE_UP
      - name: NOTIFY_INTERFACE_DOWN
      - name: NOTIFY_PEER_UP
      - name: NOTIFY_PEER_NBMA_CHANGING
      - name: NOTIFY_CACHE_DOWN
      - name: NOTIFY_PEER_DOWN
      - name: NOTIFY_CACHE_USED
      - name: NOTIFY_INTERFACE_NBMA_CHANGED
      - name: NOTIFY_INTERFACE_IPSEC_CHANGED
      - name: NOTIFY_CACHE_BINDING_CHANGE
      - name: NOTIFY_CACHE_DELETE
      - name: NOTIFY_INTERFACE_UP
      - name: NOTIFY_INTERFACE_CHANGED
      - name: NOTIFY_VC_IPSEC_CHANGED
      - name: NOTIFY_PEER_IFCONFIG_CHANGED
      - name: NOTIFY_PEER_MTU_CHANGED
      item_type: enum
      name: nhrp_notify_type
      pos:
        line_end: 135
        line_start: 112
        source_file: /src/frr/nhrpd/nhrpd.h
    - enumerators:
      - name: NHRP_ROUTE_BLACKHOLE
      - name: NHRP_ROUTE_NBMA_NEXTHOP
      - name: NHRP_ROUTE_OFF_NBMA
      - name: NHRP_ROUTE_LOCAL
      item_type: enum
      name: nhrp_route_type
      pos:
        line_end: 157
        line_start: 152
        source_file: /src/frr/nhrpd/nhrpd.h
    - enumerators:
      - name: NHRP_CACHE_INVALID
        value: '0'
      - name: NHRP_CACHE_DYNAMIC
      - name: NHRP_CACHE_NEGATIVE
      - name: NHRP_CACHE_CACHED
      - name: NHRP_CACHE_INCOMPLETE
      - name: NHRP_CACHE_NHS
      - name: NHRP_CACHE_STATIC
      - name: NHRP_CACHE_LOCAL
      - name: NHRP_CACHE_NUM_TYPES
      item_type: enum
      name: nhrp_cache_type
      pos:
        line_end: 209
        line_start: 199
        source_file: /src/frr/nhrpd/nhrpd.h
    preproc_defs:
    - item_type: preproc_def
      name: NHRPD_DEFAULT_HOLDTIME
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '7200'
    - item_type: preproc_def
      name: NHRP_VTY_PORT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '2610'
    - item_type: preproc_def
      name: NHRP_DEFAULT_CONFIG
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '"nhrpd.conf"'
    - item_type: preproc_def
      name: NHRP_ERR_MAX
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: (__NHRP_ERR_MAX - 1)
    - item_type: preproc_def
      name: MAX_ID_LENGTH
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '64'
    - item_type: preproc_def
      name: MAX_CERT_LENGTH
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '2048'
    - item_type: preproc_def
      name: NHRP_IFF_SHORTCUT
      pos:
        line_end: 308
        line_start: 307
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '0x0001'
    - item_type: preproc_def
      name: NHRP_IFF_REDIRECT
      pos:
        line_end: 309
        line_start: 308
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '0x0002'
    - item_type: preproc_def
      name: NHRP_IFF_REG_NO_UNIQUE
      pos:
        line_end: 310
        line_start: 309
        source_file: /src/frr/nhrpd/nhrpd.h
      type_or_value: '0x0100'
    structs:
    - fields:
      - name: notifier_entry
        type: struct notifier_list_item
      - name: action
        type: notifier_fn_t
      item_type: struct
      name: notifier_block
      pos:
        line_end: 43
        line_start: 40
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: head
        type: struct notifier_list_head
      item_type: struct
      name: notifier_list
      pos:
        line_end: 49
        line_start: 47
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: notifier_list
        type: struct notifier_list
      - name: ipsec
        type: uint32_t
      - name: ike_uniqueid
        type: uint32_t
      - name: updating
        type: uint8_t
      - name: abort_migration
        type: uint8_t
      - name: local
        type: "struct nhrp_vc_peer {\n\t\tunion sockunion nbma;\n\t\tchar id[MAX_ID_LENGTH];\n\t\tuint16_t
          certlen;\n\t\tuint8_t cert[MAX_CERT_LENGTH];\n\t}"
      item_type: struct
      name: nhrp_vc
      pos:
        line_end: 150
        line_start: 137
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: nbma
        type: union sockunion
      - name: id[MAX_ID_LENGTH]
        type: char
      - name: certlen
        type: uint16_t
      - name: cert[MAX_CERT_LENGTH]
        type: uint8_t
      item_type: struct
      name: nhrp_vc_peer
      pos:
        line_end: 149
        line_start: 144
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: ref
        type: unsigned int
      - name: online
        type: unsigned
      - name: requested
        type: unsigned
      - name: fallback_requested
        type: unsigned
      - name: prio
        type: unsigned
      - name: notifier_list
        type: struct notifier_list
      - name: '*ifp'
        type: struct interface
      - name: '*vc'
        type: struct nhrp_vc
      - name: '*t_fallback'
        type: struct event
      - name: vc_notifier
        type: struct notifier_block
      - name: '*t_timer'
        type: struct event
      item_type: struct
      name: nhrp_peer
      pos:
        line_end: 171
        line_start: 159
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*ifp'
        type: struct interface
      - name: '*if_ad'
        type: struct nhrp_afi_data
      - name: '*peer'
        type: struct nhrp_peer
      - name: '*pkt'
        type: struct zbuf
      - name: payload
        type: struct zbuf
      - name: extensions
        type: struct zbuf
      - name: '*hdr'
        type: struct nhrp_packet_header
      - name: route_type
        type: enum nhrp_route_type
      - name: route_prefix
        type: struct prefix
      - name: src_nbma
        type: union sockunion
      item_type: struct
      name: nhrp_packet_parser
      pos:
        line_end: 184
        line_start: 173
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*reqid_hash'
        type: struct hash
      - name: next_request_id
        type: uint32_t
      item_type: struct
      name: nhrp_reqid_pool
      pos:
        line_end: 189
        line_start: 186
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: request_id
        type: uint32_t
      - name: (*cb)(struct nhrp_reqid *, void *)
        type: void
      item_type: struct
      name: nhrp_reqid
      pos:
        line_end: 194
        line_start: 191
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*ifp'
        type: struct interface
      - name: remote_addr
        type: union sockunion
      - name: type
        type: enum nhrp_cache_type
      - name: nbma
        type: union sockunion
      item_type: struct
      name: nhrp_cache_config
      pos:
        line_end: 219
        line_start: 214
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*ifp'
        type: struct interface
      - name: remote_addr
        type: union sockunion
      - name: map
        type: unsigned
      - name: used
        type: unsigned
      - name: route_installed
        type: unsigned
      - name: nhrp_route_installed
        type: unsigned
      - name: peer_notifier
        type: struct notifier_block
      - name: newpeer_notifier
        type: struct notifier_block
      - name: notifier_list
        type: struct notifier_list
      - name: eventid
        type: struct nhrp_reqid
      - name: '*t_timeout'
        type: struct event
      - name: '*t_auth'
        type: struct event
      - name: cur
        type: "struct {\n\t\tenum nhrp_cache_type type;\n\t\tunion sockunion remote_nbma_natoa;\n\t\tunion
          sockunion remote_nbma_claimed;\n\t\tstruct nhrp_peer *peer;\n\t\ttime_t
          expires;\n\t\tuint32_t mtu;\n\t\tint holding_time;\n\t}"
      item_type: struct
      name: nhrp_cache
      pos:
        line_end: 246
        line_start: 221
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*p'
        type: struct prefix
      - name: addr
        type: union sockunion
      - name: reqid
        type: struct nhrp_reqid
      - name: '*t_timer'
        type: struct event
      - name: type
        type: enum nhrp_cache_type
      - name: holding_time
        type: unsigned int
      - name: route_installed
        type: unsigned
      - name: expiring
        type: unsigned
      - name: '*cache'
        type: struct nhrp_cache
      - name: cache_notifier
        type: struct notifier_block
      item_type: struct
      name: nhrp_shortcut
      pos:
        line_end: 262
        line_start: 248
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*ifp'
        type: struct interface
      - name: nhslist_entry
        type: struct nhrp_nhslist_item
      - name: hub
        type: unsigned
      - name: afi
        type: afi_t
      - name: proto_addr
        type: union sockunion
      - name: '*nbma_fqdn'
        type: char
      - name: '*t_resolve'
        type: struct event
      - name: dns_resolve
        type: struct resolver_query
      - name: reglist_head
        type: struct nhrp_reglist_head
      item_type: struct
      name: nhrp_nhs
      pos:
        line_end: 280
        line_start: 268
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*ifp'
        type: struct interface
      - name: mcastlist_entry
        type: struct nhrp_mcastlist_item
      - name: afi
        type: afi_t
      - name: nbma_addr
        type: union sockunion
      item_type: struct
      name: nhrp_multicast
      pos:
        line_end: 289
        line_start: 284
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: reglist_entry
        type: struct nhrp_reglist_item
      - name: '*t_register'
        type: struct event
      - name: '*nhs'
        type: struct nhrp_nhs
      - name: reqid
        type: struct nhrp_reqid
      - name: timeout
        type: unsigned int
      - name: mark
        type: unsigned
      - name: proto_addr
        type: union sockunion
      - name: '*peer'
        type: struct nhrp_peer
      - name: peer_notifier
        type: struct notifier_block
      item_type: struct
      name: nhrp_registration
      pos:
        line_end: 303
        line_start: 293
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: '*ifp'
        type: struct interface
      - name: enabled
        type: unsigned
      - name: '*ipsec_profile'
        type: char
      - name: nbma
        type: union sockunion
      - name: nat_nbma
        type: union sockunion
      - name: link_idx
        type: unsigned int
      - name: link_vrf_id
        type: unsigned int
      - name: i_grekey
        type: uint32_t
      - name: o_grekey
        type: uint32_t
      - name: '*peer_hash'
        type: struct hash
      - name: '*cache_config_hash'
        type: struct hash
      - name: '*cache_hash'
        type: struct hash
      - name: notifier_list
        type: struct notifier_list
      - name: '*nbmaifp'
        type: struct interface
      - name: nbmanifp_notifier
        type: struct notifier_block
      - name: afi[AFI_MAX]
        type: "struct nhrp_afi_data {\n\t\tunsigned flags;\n\t\tunsigned short configured
          : 1;\n\t\tunion sockunion addr;\n\t\tuint32_t network_id;\n\t\tshort configured_mtu;\n\t\tunsigned
          short mtu;\n\t\tunsigned int holdtime;\n\t\tstruct nhrp_nhslist_head nhslist_head;\n\t\tstruct
          nhrp_mcastlist_head mcastlist_head;\n\t}"
      item_type: struct
      name: nhrp_interface
      pos:
        line_end: 344
        line_start: 311
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: flags
        type: unsigned
      - name: configured
        type: unsigned short
      - name: addr
        type: union sockunion
      - name: network_id
        type: uint32_t
      - name: configured_mtu
        type: short
      - name: mtu
        type: unsigned short
      - name: holdtime
        type: unsigned int
      - name: nhslist_head
        type: struct nhrp_nhslist_head
      - name: mcastlist_head
        type: struct nhrp_mcastlist_head
      item_type: struct
      name: nhrp_afi_data
      pos:
        line_end: 343
        line_start: 333
        source_file: /src/frr/nhrpd/nhrpd.h
    - fields:
      - name: ifindex
        type: ifindex_t
      - name: vtep_ip
        type: struct in_addr
      - name: vtep_ip_remote
        type: struct in_addr
      - name: ikey
        type: uint32_t
      - name: okey
        type: uint32_t
      - name: ifindex_link
        type: ifindex_t
      - name: vrfid_link
        type: vrf_id_t
      item_type: struct
      name: nhrp_gre_info
      pos:
        line_end: 356
        line_start: 346
        source_file: /src/frr/nhrpd/nhrpd.h
    typedefs:
    - item_type: typedef
      name: (*notifier_fn_t)(struct notifier_block *, unsigned long)
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/frr/nhrpd/nhrpd.h
      type: void
    union: []
- function_names:
  - parse_arguments
  - nhrp_sigusr1
  - nhrp_request_stop
  - main
  source_file: /src/frr/nhrpd/nhrp_main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - family2proto
  - proto2family
  - nhrp_packet_push
  - nhrp_packet_pull
  - nhrp_packet_calculate_checksum
  - nhrp_packet_complete
  - nhrp_cie_push
  - nhrp_cie_pull
  - nhrp_ext_push
  - nhrp_ext_complete
  - nhrp_ext_pull
  - nhrp_ext_request
  - nhrp_ext_reply
  - nhrp_packet_recvraw
  - nhrp_packet_init
  source_file: /src/frr/nhrpd/nhrp_packet.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nhrp_multicast_send
  - nhrp_multicast_forward_nbma
  - nhrp_multicast_forward_cache
  - nhrp_multicast_forward
  - netlink_mcast_log_handler
  - netlink_mcast_log_recv
  - netlink_mcast_log_register
  - netlink_mcast_set_nflog_group
  - nhrp_multicast_free
  - nhrp_multicast_add
  - nhrp_multicast_del
  - nhrp_multicast_interface_del
  - nhrp_multicast_foreach
  source_file: /src/frr/nhrpd/nhrp_multicast.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ifp'
        type: struct interface
      - name: '*pkt'
        type: struct zbuf
      item_type: struct
      name: mcast_ctx
      pos:
        line_end: 35
        line_start: 32
        source_file: /src/frr/nhrpd/nhrp_multicast.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/nhrpd/nhrp_errors.h
  types:
    enum:
    - enumerators:
      - name: EC_NHRP_SWAN
        value: NHRP_FERR_START
      item_type: enum
      name: nhrp_log_refs
      pos:
        line_end: 14
        line_start: 12
        source_file: /src/frr/nhrpd/nhrp_errors.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nhrp_error_init
  source_file: /src/frr/nhrpd/nhrp_errors.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nhrp_route_update_get
  - nhrp_route_update_put
  - nhrp_route_update_zebra
  - nhrp_zebra_register_neigh
  - nhrp_route_update_nhrp
  - nhrp_route_announce
  - nhrp_route_read
  - nhrp_route_get_nexthop
  - nhrp_route_address
  - nhrp_zebra_connected
  - nhrp_zebra_init
  - nhrp_table_node_cleanup
  - nhrp_send_zebra_configure_arp
  - nhrp_send_zebra_gre_source_set
  - nhrp_send_zebra_nbr
  - nhrp_send_zebra_gre_request
  - nhrp_zebra_terminate
  - nhrp_gre_update
  source_file: /src/frr/nhrpd/nhrp_route.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: via
        type: union sockunion
      - name: '*ifp'
        type: struct interface
      - name: '*nhrp_ifp'
        type: struct interface
      item_type: struct
      name: route_info
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/frr/nhrpd/nhrp_route.c
    typedefs: []
    union: []
- function_names:
  - nhrp_gre_info_key
  - nhrp_gre_info_cmp
  - nhrp_interface_gre_alloc
  - nhrp_gre_info_alloc
  - nhrp_if_new_hook
  - nhrp_if_delete_hook
  - nhrp_interface_init
  - nhrp_interface_update_mtu
  - nhrp_interface_update_source
  - nhrp_interface_interface_notifier
  - nhrp_interface_update_nbma
  - nhrp_interface_update_address
  - nhrp_ifp_create
  - nhrp_ifp_destroy
  - interface_config_update_nhrp_map
  - nhrp_interface_update_cache_config
  - nhrp_ifp_up
  - nhrp_ifp_down
  - nhrp_interface_address_add
  - nhrp_interface_address_delete
  - nhrp_interface_notify_add
  - nhrp_interface_notify_del
  - nhrp_interface_set_protection
  - nhrp_interface_set_source
  source_file: /src/frr/nhrpd/nhrp_interface.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: family
        type: int
      - name: enabled
        type: bool
      item_type: struct
      name: map_ctx
      pos:
        line_end: 395
        line_start: 392
        source_file: /src/frr/nhrpd/nhrp_interface.c
    typedefs: []
    union: []
- function_names:
  - nhrp_vty_return
  - toggle_flag
  - nhrp_config_write
  - cmd_to_afi
  - afi_to_cmd
  - show_ip_nhrp_cache
  - show_ip_nhrp_nhs
  - show_ip_nhrp_shortcut
  - show_ip_opennhrp_cache
  - show_dmvpn_entry
  - clear_nhrp_cache
  - clear_nhrp_shortcut
  - interface_config_write_nhrp_map
  - interface_config_write
  - FOR_ALL_INTERFACES
  - nhrp_config_init
  source_file: /src/frr/nhrpd/nhrp_vty.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NHRP_DEBUG_FLAGS_CMD
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/frr/nhrpd/nhrp_vty.c
      type_or_value: '"<all|common|event|interface|kernel|route|vici>"'
    - item_type: preproc_def
      name: NHRP_DEBUG_FLAGS_STR
      pos:
        line_end: 34
        line_start: 26
        source_file: /src/frr/nhrpd/nhrp_vty.c
      type_or_value: "\"All messages\\n\"                                                       \\\n\t\"Common
        messages (default)\\n\"                                          \\\n\t\"Event
        manager messages\\n\"                                             \\\n\t\"Interface
        messages\\n\"                                                 \\\n\t\"Kernel
        messages\\n\"                                                    \\\n\t\"Route
        messages\\n\"                                                     \\\n\t\"VICI
        messages\\n\""
    - item_type: preproc_def
      name: IP_STR
      pos:
        line_end: 186
        line_start: 185
        source_file: /src/frr/nhrpd/nhrp_vty.c
      type_or_value: '"IP information\n"'
    - item_type: preproc_def
      name: IPV6_STR
      pos:
        line_end: 187
        line_start: 186
        source_file: /src/frr/nhrpd/nhrp_vty.c
      type_or_value: '"IPv6 information\n"'
    - item_type: preproc_def
      name: AFI_CMD
      pos:
        line_end: 188
        line_start: 187
        source_file: /src/frr/nhrpd/nhrp_vty.c
      type_or_value: '"<ip|ipv6>"'
    - item_type: preproc_def
      name: AFI_STR
      pos:
        line_end: 189
        line_start: 188
        source_file: /src/frr/nhrpd/nhrp_vty.c
      type_or_value: IP_STR IPV6_STR
    - item_type: preproc_def
      name: NHRP_STR
      pos:
        line_end: 190
        line_start: 189
        source_file: /src/frr/nhrpd/nhrp_vty.c
      type_or_value: '"Next Hop Resolution Protocol functions\n"'
    structs:
    - fields:
      - name: '*vty'
        type: struct vty
      - name: afi
        type: afi_t
      - name: count
        type: int
      - name: '*json'
        type: struct json_object
      item_type: struct
      name: info_ctx
      pos:
        line_end: 690
        line_start: 685
        source_file: /src/frr/nhrpd/nhrp_vty.c
    - fields:
      - name: '*vty'
        type: struct vty
      - name: '*json'
        type: struct json_object
      item_type: struct
      name: dmvpn_cfg
      pos:
        line_end: 995
        line_start: 992
        source_file: /src/frr/nhrpd/nhrp_vty.c
    - fields:
      - name: '*vty'
        type: struct vty
      - name: family
        type: int
      - name: '*aficmd'
        type: char
      item_type: struct
      name: write_map_ctx
      pos:
        line_end: 1110
        line_start: 1106
        source_file: /src/frr/nhrpd/nhrp_vty.c
    typedefs: []
    union: []
- function_names:
  - nhrp_cache_protocol_key
  - nhrp_cache_protocol_cmp
  - nhrp_cache_alloc
  - nhrp_cache_free
  - nhrp_cache_config_protocol_key
  - nhrp_cache_config_protocol_cmp
  - nhrp_cache_config_alloc
  - nhrp_cache_config_free
  - nhrp_cache_config_get
  - do_nhrp_cache_free
  - do_nhrp_cache_config_free
  - nhrp_cache_interface_del
  - nhrp_cache_get
  - nhrp_cache_do_free
  - nhrp_cache_do_timeout
  - nhrp_cache_update_route
  - nhrp_cache_peer_notifier
  - nhrp_cache_reset_new
  - nhrp_cache_update_timers
  - nhrp_cache_authorize_binding
  - nhrp_cache_do_auth_timeout
  - nhrp_cache_newpeer_notifier
  - nhrp_cache_update_binding
  - nhrp_cache_set_used
  - nhrp_cache_iterator
  - nhrp_cache_config_iterator
  - nhrp_cache_foreach
  - nhrp_cache_config_foreach
  - nhrp_cache_notify_add
  - nhrp_cache_notify_del
  source_file: /src/frr/nhrpd/nhrp_cache.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: (*cb)(struct nhrp_cache *, void *)
        type: void
      - name: '*ctx'
        type: void
      item_type: struct
      name: nhrp_cache_iterator_ctx
      pos:
        line_end: 527
        line_start: 524
        source_file: /src/frr/nhrpd/nhrp_cache.c
    - fields:
      - name: (*cb)(struct nhrp_cache_config *, void *)
        type: void
      - name: '*ctx'
        type: void
      item_type: struct
      name: nhrp_cache_config_iterator_ctx
      pos:
        line_end: 532
        line_start: 529
        source_file: /src/frr/nhrpd/nhrp_cache.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/nhrpd/znl.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ZNL_BUFFER_SIZE
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/frr/nhrpd/znl.h
      type_or_value: '8192'
    structs: []
    typedefs: []
    union: []
- function_names:
  - nhrp_shortcut_check_use
  - nhrp_shortcut_do_expire
  - nhrp_shortcut_cache_notify
  - nhrp_shortcut_update_binding
  - nhrp_shortcut_delete
  - nhrp_shortcut_do_purge
  - nhrp_shortcut_get
  - nhrp_shortcut_recv_resolution_rep
  - nhrp_shortcut_send_resolution_req
  - nhrp_shortcut_initiate
  - nhrp_shortcut_init
  - nhrp_shortcut_terminate
  - nhrp_shortcut_foreach
  - nhrp_shortcut_purge
  - nhrp_shortcut_purge_prefix
  - nhrp_shortcut_prefix_change
  source_file: /src/frr/nhrpd/nhrp_shortcut.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*p'
        type: struct prefix
      - name: deleted
        type: int
      item_type: struct
      name: purge_ctx
      pos:
        line_end: 497
        line_start: 494
        source_file: /src/frr/nhrpd/nhrp_shortcut.c
    typedefs: []
    union: []
- function_names:
  - ERRNO_IO_RETRY
  - blob_equal
  - blob2buf
  - vici_zbuf_puts
  - vici_connection_error
  - vici_parse_message
  - parse_sa_message
  - parse_cmd_response
  - vici_recv_sa
  - vici_recv_message
  - vici_read
  - vici_write
  - vici_submit
  - vici_submit_request
  - vici_register_event
  - vici_get_charon_filepath
  - vici_reconnect
  - vici_init
  - vici_terminate
  - vici_terminate_vc_by_profile_name
  - vici_terminate_vc_by_ike_id
  - vici_request_vc
  - sock_open_unix
  source_file: /src/frr/nhrpd/vici.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ptr'
        type: char
      - name: len
        type: int
      item_type: struct
      name: blob
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/frr/nhrpd/vici.c
    - fields:
      - name: '*t_reconnect'
        type: struct event
      - name: ibuf
        type: struct zbuf
      - name: obuf
        type: struct zbuf_queue
      - name: fd
        type: int
      - name: ibuf_data[VICI_MAX_MSGLEN]
        type: uint8_t
      item_type: struct
      name: vici_conn
      pos:
        line_end: 51
        line_start: 45
        source_file: /src/frr/nhrpd/vici.c
    - fields:
      - name: '*sections[8]'
        type: char
      - name: nsections
        type: int
      item_type: struct
      name: vici_message_ctx
      pos:
        line_end: 56
        line_start: 53
        source_file: /src/frr/nhrpd/vici.c
    - fields:
      - name: msgctx
        type: struct vici_message_ctx
      - name: event
        type: int
      - name: child_ok
        type: int
      - name: kill_ikesa
        type: int
      - name: child_uniqueid
        type: uint32_t
      - name: local
        type: "struct {\n\t\tunion sockunion host;\n\t\tstruct blob id, cert;\n\t}"
      item_type: struct
      name: handle_sa_ctx
      pos:
        line_end: 147
        line_start: 137
        source_file: /src/frr/nhrpd/vici.c
    typedefs: []
    union: []
- function_names:
  - nhrp_peer_check_delete
  - nhrp_peer_notify_up
  - __nhrp_peer_check
  - nhrp_peer_vc_notify
  - nhrp_peer_ifp_notify
  - nhrp_peer_key
  - nhrp_peer_cmp
  - nhrp_peer_create
  - do_peer_hash_free
  - nhrp_peer_interface_del
  - nhrp_peer_get
  - nhrp_peer_ref
  - nhrp_peer_unref
  - nhrp_peer_request_timeout
  - nhrp_peer_defer_vici_request
  - nhrp_peer_check
  - nhrp_peer_notify_add
  - nhrp_peer_notify_del
  - nhrp_peer_send
  - nhrp_process_nat_extension
  - nhrp_handle_resolution_req
  - nhrp_handle_registration_request
  - parse_ether_packet
  - nhrp_peer_send_indication
  - nhrp_handle_error_ind
  - nhrp_handle_traffic_ind
  - nhrp_peer_forward
  - nhrp_packet_debug
  - proto2afi
  - nhrp_peer_recv
  source_file: /src/frr/nhrpd/nhrp_peer.c
  types:
    enum:
    - enumerators:
      - name: PACKET_UNKNOWN
        value: '0'
      - name: PACKET_REQUEST
      - name: PACKET_REPLY
      - name: PACKET_INDICATION
      item_type: enum
      name: packet_type_t
      pos:
        line_end: 862
        line_start: 857
        source_file: /src/frr/nhrpd/nhrp_peer.c
    preproc_defs: []
    structs:
    - fields:
      - name: priority_version
        type: uint8_t
      - name: flow_lbl[3]
        type: uint8_t
      - name: payload_len
        type: uint16_t
      - name: nexthdr
        type: uint8_t
      - name: hop_limit
        type: uint8_t
      - name: saddr
        type: struct in6_addr
      - name: daddr
        type: struct in6_addr
      item_type: struct
      name: ipv6hdr
      pos:
        line_end: 31
        line_start: 23
        source_file: /src/frr/nhrpd/nhrp_peer.c
    - fields:
      - name: type
        type: enum packet_type_t
      - name: '*name'
        type: char
      - name: (*handler)(struct nhrp_packet_parser *)
        type: void
      item_type: struct
      name: "packet_types[] = {[0] =\n\t\t\t    {\n\t\t\t\t    .type = PACKET_UNKNOWN,\n\t\t\t\t
        \   .name = \"UNKNOWN\",\n\t\t\t    },\n\t\t    [NHRP_PACKET_RESOLUTION_REQUEST]
        =\n\t\t\t    {\n\t\t\t\t    .type = PACKET_REQUEST,\n\t\t\t\t    .name = \"Resolution-Request\",\n\t\t\t\t
        \   .handler = nhrp_handle_resolution_req,\n\t\t\t    },\n\t\t    [NHRP_PACKET_RESOLUTION_REPLY]
        =\n\t\t\t    {\n\t\t\t\t    .type = PACKET_REPLY,\n\t\t\t\t    .name = \"Resolution-Reply\",\n\t\t\t
        \   },\n\t\t    [NHRP_PACKET_REGISTRATION_REQUEST] =\n\t\t\t    {\n\t\t\t\t
        \   .type = PACKET_REQUEST,\n\t\t\t\t    .name = \"Registration-Request\",\n\t\t\t\t
        \   .handler = nhrp_handle_registration_request,\n\t\t\t    },\n\t\t    [NHRP_PACKET_REGISTRATION_REPLY]
        =\n\t\t\t    {\n\t\t\t\t    .type = PACKET_REPLY,\n\t\t\t\t    .name = \"Registration-Reply\",\n\t\t\t
        \   },\n\t\t    [NHRP_PACKET_PURGE_REQUEST] =\n\t\t\t    {\n\t\t\t\t    .type
        = PACKET_REQUEST,\n\t\t\t\t    .name = \"Purge-Request\",\n\t\t\t    },\n\t\t
        \   [NHRP_PACKET_PURGE_REPLY] =\n\t\t\t    {\n\t\t\t\t    .type = PACKET_REPLY,\n\t\t\t\t
        \   .name = \"Purge-Reply\",\n\t\t\t    },\n\t\t    [NHRP_PACKET_ERROR_INDICATION]
        =\n\t\t\t    {\n\t\t\t\t    .type = PACKET_INDICATION,\n\t\t\t\t    .name
        = \"Error-Indication\",\n\t\t\t\t    .handler = nhrp_handle_error_ind,\n\t\t\t
        \   },\n\t\t    [NHRP_PACKET_TRAFFIC_INDICATION] = {\n\t\t\t    .type = PACKET_INDICATION,\n\t\t\t
        \   .name = \"Traffic-Indication\",\n\t\t\t    .handler = nhrp_handle_traffic_ind,\n\t\t
        \   }}"
      pos:
        line_end: 868
        line_start: 864
        source_file: /src/frr/nhrpd/nhrp_peer.c
    - fields:
      - name: local
        type: int
      - name: '*ifp'
        type: struct interface
      - name: '*vc'
        type: struct nhrp_vc
      item_type: struct
      name: nhrp_route_info
      pos:
        line_end: 1111
        line_start: 1107
        source_file: /src/frr/nhrpd/nhrp_peer.c
    typedefs: []
    union: []
- function_names:
  - os_socket
  - os_sendmsg
  - os_recvmsg
  - linux_configure_arp
  - linux_icmp_redirect_off
  - os_configure_dmvpn
  source_file: /src/frr/nhrpd/linux.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - zbuf_size
  - zbuf_used
  - zbuf_tailroom
  - zbuf_headroom
  - zbuf_set_rerror
  - zbuf_set_werror
  - __zbuf_pull
  - zbuf_pull
  - zbuf_pulln
  - zbuf_may_pull
  - zbuf_may_pulln
  - zbuf_get
  - zbuf_get8
  - zbuf_get32
  - zbuf_get_be16
  - zbuf_get_be32
  - __zbuf_push
  - zbuf_push
  - zbuf_pushn
  - zbuf_may_push
  - zbuf_may_pushn
  - zbuf_put
  - zbuf_put8
  - zbuf_put_be16
  - zbuf_put_be32
  source_file: /src/frr/nhrpd/zbuf.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: queue_entry
        type: struct zbuf_queue_item
      - name: allocated
        type: unsigned
      - name: error
        type: unsigned
      - name: '*buf'
        type: uint8_t
      - name: '*head'
        type: uint8_t
      item_type: struct
      name: zbuf
      pos:
        line_end: 23
        line_start: 17
        source_file: /src/frr/nhrpd/zbuf.h
    - fields:
      - name: queue_head
        type: struct zbuf_queue_head
      item_type: struct
      name: zbuf_queue
      pos:
        line_end: 29
        line_start: 27
        source_file: /src/frr/nhrpd/zbuf.h
    - fields:
      - name: value
        type: uint32_t
      item_type: struct
      name: unaligned32
      pos:
        line_end: 112
        line_start: 110
        source_file: /src/frr/nhrpd/zbuf.h
    - fields:
      - name: value
        type: uint16_t
      item_type: struct
      name: unaligned16
      pos:
        line_end: 124
        line_start: 122
        source_file: /src/frr/nhrpd/zbuf.h
    - fields:
      - name: value
        type: uint16_t
      item_type: struct
      name: unaligned16
      pos:
        line_end: 172
        line_start: 170
        source_file: /src/frr/nhrpd/zbuf.h
    - fields:
      - name: value
        type: uint32_t
      item_type: struct
      name: unaligned32
      pos:
        line_end: 183
        line_start: 181
        source_file: /src/frr/nhrpd/zbuf.h
    typedefs: []
    union: []
- function_names:
  - netlink_update_binding
  - netlink_log_register
  - netlink_log_indication
  - netlink_log_recv
  - netlink_set_nflog_group
  - nhrp_neighbor_operation
  source_file: /src/frr/nhrpd/netlink_arp.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nhrp_reg_reply
  - nhrp_reg_timeout
  - nhrp_reg_peer_notify
  - nhrp_reg_send_req
  - nhrp_reg_delete
  - nhrp_reg_by_nbma
  - nhrp_nhs_resolve_cb
  - nhrp_nhs_resolve
  - nhrp_nhs_add
  - nhrp_nhs_del
  - nhrp_nhs_free
  - nhrp_nhs_interface_del
  - nhrp_nhs_terminate
  - FOR_ALL_INTERFACES
  - nhrp_nhs_foreach
  - nhrp_nhs_match_ip
  source_file: /src/frr/nhrpd/nhrp_nhs.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - evmgr_connection_error
  - evmgr_recv_message
  - evmgr_read
  - evmgr_write
  - evmgr_hexdump
  - evmgr_put
  - evmgr_submit
  - evmgr_reconnect
  - evmgr_init
  - evmgr_set_socket
  - evmgr_terminate
  - evmgr_notify
  source_file: /src/frr/nhrpd/nhrp_event.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*t_reconnect'
        type: struct event
      - name: ibuf
        type: struct zbuf
      - name: obuf
        type: struct zbuf_queue
      - name: fd
        type: int
      - name: ibuf_data[4 * 1024]
        type: uint8_t
      item_type: struct
      name: event_manager
      pos:
        line_end: 27
        line_start: 21
        source_file: /src/frr/nhrpd/nhrp_event.c
    typedefs: []
    union: []
- function_names:
  - test_find_topology
  - sort_paths
  - print_route_table
  - inject_sr_db_entry
  - topology_load
  source_file: /src/frr/tests/ospfd/common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/tests/ospfd/common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_ADJACENCIES
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/frr/tests/ospfd/common.h
      type_or_value: '8'
    - item_type: preproc_def
      name: MAX_NODES
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/frr/tests/ospfd/common.h
      type_or_value: '12'
    structs:
    - fields:
      - name: hostname[256]
        type: char
      - name: network[256]
        type: char
      - name: metric
        type: uint32_t
      - name: label
        type: mpls_label_t
      item_type: struct
      name: ospf_test_adj
      pos:
        line_end: 11
        line_start: 6
        source_file: /src/frr/tests/ospfd/common.h
    - fields:
      - name: hostname[256]
        type: char
      - name: '*router_id'
        type: char
      - name: label
        type: mpls_label_t
      - name: adjacencies[MAX_ADJACENCIES + 1]
        type: struct ospf_test_adj
      item_type: struct
      name: ospf_test_node
      pos:
        line_end: 18
        line_start: 13
        source_file: /src/frr/tests/ospfd/common.h
    - fields:
      - name: nodes[MAX_NODES + 1]
        type: struct ospf_test_node
      item_type: struct
      name: ospf_topology
      pos:
        line_end: 22
        line_start: 20
        source_file: /src/frr/tests/ospfd/common.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/tests/ospfd/topologies.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_init
  - test_run_spf
  - test_run
  - vty_do_exit
  - usage
  - main
  source_file: /src/frr/tests/ospfd/test_ospf_spf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - zserv_find_client_session
  - zsend_label_manager_connect_response
  - zsend_assign_label_chunk_response
  - test_client_connect
  - test_client_disconnect
  - lm_get_chunk_pi
  - lm_release_chunk_pi
  - lp_plugin_init
  - lp_plugin_cleanup
  - test_lp_plugin
  - main
  source_file: /src/frr/tests/zebra/test_lm_plugin.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - parse_test
  - main
  source_file: /src/frr/tests/bgpd/test_capability.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VT100_RESET
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '"\x1b[0m"'
    - item_type: preproc_def
      name: VT100_RED
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '"\x1b[31m"'
    - item_type: preproc_def
      name: VT100_GREEN
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '"\x1b[32m"'
    - item_type: preproc_def
      name: VT100_YELLOW
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '"\x1b[33m"'
    - item_type: preproc_def
      name: CAPABILITY
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '0'
    - item_type: preproc_def
      name: DYNCAP
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '1'
    - item_type: preproc_def
      name: OPT_PARAM
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '2'
    - item_type: preproc_def
      name: SHOULD_PARSE
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '0'
    - item_type: preproc_def
      name: SHOULD_ERR
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '-1'
    - item_type: preproc_def
      name: VALID_AFI
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '1'
    - item_type: preproc_def
      name: INVALID_AFI
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '0'
    - item_type: preproc_def
      name: RANDOM_FUZZ
      pos:
        line_end: 813
        line_start: 812
        source_file: /src/frr/tests/bgpd/test_capability.c
      type_or_value: '35'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*desc'
        type: char
      - name: data[1024]
        type: uint8_t
      - name: len
        type: int
      - name: parses
        type: int
      - name: peek_for
        type: as_t
      - name: validate_afi
        type: int
      - name: afi
        type: iana_afi_t
      - name: safi
        type: iana_safi_t
      - name: afi_valid
        type: int
      item_type: struct
      name: test_segment
      pos:
        line_end: 55
        line_start: 38
        source_file: /src/frr/tests/bgpd/test_capability.c
    typedefs: []
    union: []
- function_names:
  - TEST_ASSERT
  - TEST_ASSERT_EQ
  - TEST_HANDLER
  - TEST_HANDLER_DECL
  - TEST_ATTR_HANDLER_DECL
  - TEST_STR_ATTR_HANDLER_DECL
  - TEST_SU_ATTR_HANDLER_DECL
  - str_from_afi
  - str_from_attr_type
  - is_attr_type_global
  - test_log
  - test_execute
  - test_config
  - test_config_present
  - test_config_absent
  - test_initialize
  - test_new
  - test_finish
  - test_af_filter
  - test_custom
  - test_process
  - test_peer_attr
  - bgp_startup
  - bgp_shutdown
  source_file: /src/frr/tests/bgpd/test_peer_attr.c
  types:
    enum:
    - enumerators:
      - name: TEST_SUCCESS
      - name: TEST_CONFIG_ERROR
      - name: TEST_COMMAND_ERROR
      - name: TEST_SKIPPING
      - name: TEST_ASSERT_ERROR
      - name: TEST_CUSTOM_ERROR
      - name: TEST_INTERNAL_ERROR
      item_type: enum
      name: test_state
      pos:
        line_end: 118
        line_start: 110
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
    - enumerators:
      - name: PEER_AT_AF_FLAG
        value: '0'
      - name: PEER_AT_AF_FILTER
        value: '1'
      - name: PEER_AT_GLOBAL_FLAG
        value: '3'
      - name: PEER_AT_GLOBAL_CUSTOM
        value: '4'
      - name: PEER_AT_AF_CUSTOM
        value: '2'
      item_type: enum
      name: test_peer_attr_type
      pos:
        line_end: 126
        line_start: 120
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
    preproc_defs:
    - item_type: preproc_def
      name: OUT_SYMBOL_INFO
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
      type_or_value: '"\u25ba"'
    - item_type: preproc_def
      name: OUT_SYMBOL_OK
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
      type_or_value: '"\u2714"'
    - item_type: preproc_def
      name: OUT_SYMBOL_NOK
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
      type_or_value: '"\u2716"'
    - item_type: preproc_def
      name: TEST_HANDLER_MAX
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
      type_or_value: '5'
    structs:
    - fields:
      - name: state
        type: enum test_state
      - name: '*desc'
        type: char
      - name: '*error'
        type: char
      - name: '*log'
        type: struct list
      - name: '*vty'
        type: struct vty
      - name: '*bgp'
        type: struct bgp
      - name: '*peer'
        type: struct peer
      - name: '*group'
        type: struct peer_group
      - name: o
        type: "struct {\n\t\tbool use_ibgp;\n\t\tbool use_iface_peer;\n\t}"
      item_type: struct
      name: test
      pos:
        line_end: 143
        line_start: 128
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
    - fields:
      - name: local_asn
        type: int
      - name: peer_asn
        type: int
      - name: '*peer_address'
        type: char
      - name: '*peer_interface'
        type: char
      - name: '*peer_group'
        type: char
      item_type: struct
      name: test_config
      pos:
        line_end: 151
        line_start: 145
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
    - fields:
      - name: afi
        type: afi_t
      - name: safi
        type: safi_t
      item_type: struct
      name: test_peer_family
      pos:
        line_end: 156
        line_start: 153
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
    - fields:
      - name: '*cmd'
        type: char
      - name: '*peer_cmd'
        type: char
      - name: '*group_cmd'
        type: char
      - name: type
        type: enum test_peer_attr_type
      - name: u
        type: "union {\n\t\tuint64_t flag;\n\t\tstruct {\n\t\t\tuint64_t flag;\n\t\t\tsize_t
          direct;\n\t\t} filter;\n\t}"
      - name: o
        type: "struct {\n\t\tbool invert_peer;\n\t\tbool invert_group;\n\t\tbool use_ibgp;\n\t\tbool
          use_iface_peer;\n\t\tbool skip_xfer_cases;\n\t}"
      - name: afi
        type: afi_t
      - name: safi
        type: safi_t
      - name: families[AFI_MAX * SAFI_MAX]
        type: struct test_peer_family
      - name: "(*handlers[TEST_HANDLER_MAX])(struct test *test,\n\t\t\t\t\t   struct
          test_peer_attr *pa,\n\t\t\t\t\t   struct peer *peer,\n\t\t\t\t\t   struct
          peer *group, bool peer_set,\n\t\t\t\t\t   bool group_set)"
        type: void
      item_type: struct
      name: test_peer_attr
      pos:
        line_end: 188
        line_start: 158
        source_file: /src/frr/tests/bgpd/test_peer_attr.c
    typedefs: []
    union: []
- function_names:
  - add_node
  - prefix_in_array
  - check_lookup_result
  - do_test
  - test_range_lookup
  - main
  source_file: /src/frr/tests/bgpd/test_bgp_table.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prefix_str'
        type: char
      item_type: struct
      name: test_node_t
      pos:
        line_end: 31
        line_start: 24
        source_file: /src/frr/tests/bgpd/test_bgp_table.c
    typedefs: []
    union: []
- function_names:
  - EXPECT_TRUE
  - bgp_create_fake
  - FOREACH_AFI_SAFI
  - setup_bgp_cfg_maximum_paths
  - run_bgp_cfg_maximum_paths
  - FOREACH_AFI_SAFI
  - cleanup_bgp_cfg_maximum_paths
  - setup_bgp_mp_list
  - run_bgp_mp_list
  - cleanup_bgp_mp_list
  - setup_bgp_path_info_mpath_update
  - run_bgp_path_info_mpath_update
  - cleanup_bgp_path_info_mpath_update
  - global_test_init
  - global_test_cleanup
  - display_result
  - setup_test
  - cleanup_test
  - run_tests
  - main
  source_file: /src/frr/tests/bgpd/test_mpath.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VT100_RESET
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: '"\x1b[0m"'
    - item_type: preproc_def
      name: VT100_RED
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: '"\x1b[31m"'
    - item_type: preproc_def
      name: VT100_GREEN
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: '"\x1b[32m"'
    - item_type: preproc_def
      name: VT100_YELLOW
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: '"\x1b[33m"'
    - item_type: preproc_def
      name: OK
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: VT100_GREEN "OK" VT100_RESET
    - item_type: preproc_def
      name: FAILED
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: VT100_RED "failed" VT100_RESET
    - item_type: preproc_def
      name: TEST_PASSED
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: '0'
    - item_type: preproc_def
      name: TEST_FAILED
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type_or_value: '-1'
    structs:
    - fields:
      - name: '*desc'
        type: char
      - name: '*test_data'
        type: void
      - name: '*verify_data'
        type: void
      - name: '*tmp_data'
        type: void
      - name: setup
        type: test_setup_func
      - name: run
        type: test_run_func
      - name: cleanup
        type: test_cleanup_func
      item_type: struct
      name: testcase_t__
      pos:
        line_end: 60
        line_start: 52
        source_file: /src/frr/tests/bgpd/test_mpath.c
    typedefs:
    - item_type: typedef
      name: testcase_t
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type: testcase_t__
    - item_type: typedef
      name: (*test_setup_func)(testcase_t *)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type: int
    - item_type: typedef
      name: (*test_run_func)(testcase_t *)
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type: int
    - item_type: typedef
      name: (*test_cleanup_func)(testcase_t *)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/frr/tests/bgpd/test_mpath.c
      type: int
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/bgpd/test_packet.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - validate
  - parse_test
  - main
  source_file: /src/frr/tests/bgpd/test_ecommunity.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*shouldbe'
        type: char
      item_type: struct
      name: test_spec
      pos:
        line_end: 25
        line_start: 23
        source_file: /src/frr/tests/bgpd/test_ecommunity.c
    - fields:
      - name: '*name'
        type: char
      - name: '*desc'
        type: char
      - name: data[1024]
        type: uint8_t
      - name: len
        type: int
      - name: sp
        type: struct test_spec
      item_type: struct
      name: test_segment
      pos:
        line_end: 35
        line_start: 29
        source_file: /src/frr/tests/bgpd/test_ecommunity.c
    typedefs: []
    union: []
- function_names:
  - handle_result
  - parse_test
  - main
  source_file: /src/frr/tests/bgpd/test_mp_attr.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VT100_RESET
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '"\x1b[0m"'
    - item_type: preproc_def
      name: VT100_RED
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '"\x1b[31m"'
    - item_type: preproc_def
      name: VT100_GREEN
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '"\x1b[32m"'
    - item_type: preproc_def
      name: VT100_YELLOW
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '"\x1b[33m"'
    - item_type: preproc_def
      name: CAPABILITY
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '0'
    - item_type: preproc_def
      name: DYNCAP
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '1'
    - item_type: preproc_def
      name: OPT_PARAM
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '2'
    - item_type: preproc_def
      name: SHOULD_PARSE
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '0'
    - item_type: preproc_def
      name: SHOULD_ERR
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '-1'
    - item_type: preproc_def
      name: RANDOM_FUZZ
      pos:
        line_end: 1005
        line_start: 1004
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
      type_or_value: '35'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: '*desc'
        type: char
      - name: data[1024]
        type: uint8_t
      - name: len
        type: int
      - name: parses
        type: int
      item_type: struct
      name: test_segment
      pos:
        line_end: 51
        line_start: 43
        source_file: /src/frr/tests/bgpd/test_mp_attr.c
    typedefs: []
    union: []
- function_names:
  - make_aspath
  - printbytes
  - validate
  - empty_get_test
  - parse_test
  - prepend_test
  - empty_prepend_test
  - as4_reconcile_test
  - aggregate_test
  - cmp_test
  - handle_attr_test
  - attr_test
  - main
  source_file: /src/frr/tests/bgpd/test_aspath.c
  types:
    enum:
    - enumerators:
      - name: AS4_DATA
      - name: AS2_DATA
      item_type: enum
      name: as4
      pos:
        line_end: 561
        line_start: 558
        source_file: /src/frr/tests/bgpd/test_aspath.c
    preproc_defs:
    - item_type: preproc_def
      name: VT100_RESET
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '"\x1b[0m"'
    - item_type: preproc_def
      name: VT100_RED
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '"\x1b[31m"'
    - item_type: preproc_def
      name: VT100_GREEN
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '"\x1b[32m"'
    - item_type: preproc_def
      name: VT100_YELLOW
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '"\x1b[33m"'
    - item_type: preproc_def
      name: OK
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: VT100_GREEN "OK" VT100_RESET
    - item_type: preproc_def
      name: FAILED
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: VT100_RED "failed" VT100_RESET
    - item_type: preproc_def
      name: NOT_ALL_PRIVATE
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '0'
    - item_type: preproc_def
      name: ALL_PRIVATE
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '1'
    - item_type: preproc_def
      name: NULL_ASN
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '0'
    - item_type: preproc_def
      name: COMMON_ATTRS
      pos:
        line_end: 551
        line_start: 548
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: "BGP_ATTR_FLAG_TRANS, BGP_ATTR_ORIGIN, 1, BGP_ORIGIN_EGP,               \\\n\t\tBGP_ATTR_FLAG_TRANS,
        BGP_ATTR_NEXT_HOP, 4, 192, 0, 2, 0"
    - item_type: preproc_def
      name: COMMON_ATTR_SIZE
      pos:
        line_end: 552
        line_start: 551
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '11'
    - item_type: preproc_def
      name: CMP_RES_YES
      pos:
        line_end: 961
        line_start: 960
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '1'
    - item_type: preproc_def
      name: CMP_RES_NO
      pos:
        line_end: 962
        line_start: 961
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: '0'
    - item_type: preproc_def
      name: CMP_TESTS_MAX
      pos:
        line_end: 1290
        line_start: 1289
        source_file: /src/frr/tests/bgpd/test_aspath.c
      type_or_value: (sizeof(left_compare) / sizeof(struct compare_tests))
    structs:
    - fields:
      - name: '*shouldbe'
        type: char
      - name: '*shouldbe_delete_confed'
        type: char
      - name: hops
        type: unsigned int
      - name: confeds
        type: unsigned int
      - name: private_as
        type: int
      - name: does_loop
        type: as_t
      - name: doesnt_loop
        type: as_t
      - name: first
        type: as_t
      item_type: struct
      name: test_spec
      pos:
        line_end: 47
        line_start: 33
        source_file: /src/frr/tests/bgpd/test_aspath.c
    - fields:
      - name: '*name'
        type: char
      - name: '*desc'
        type: char
      - name: asdata[1024]
        type: uint8_t
      - name: len
        type: int
      - name: sp
        type: struct test_spec
      - name: asnotation
        type: enum asnotation_mode
      item_type: struct
      name: test_segment
      pos:
        line_end: 58
        line_start: 51
        source_file: /src/frr/tests/bgpd/test_aspath.c
    - fields:
      - name: '*desc'
        type: char
      - name: '*segment'
        type: struct test_segment
      - name: '*shouldbe'
        type: char
      - name: as4
        type: "enum as4 {\n\t\tAS4_DATA,\n\t\tAS2_DATA\n\t}"
      - name: result
        type: int
      - name: cap
        type: int
      - name: attrheader[1024]
        type: char
      - name: len
        type: size_t
      - name: '*old_segment'
        type: struct test_segment
      item_type: struct
      name: aspath_tests
      pos:
        line_end: 567
        line_start: 554
        source_file: /src/frr/tests/bgpd/test_aspath.c
    - fields:
      - name: '*test1'
        type: struct test_segment
      - name: '*test2'
        type: struct test_segment
      - name: sp
        type: struct test_spec
      item_type: struct
      name: tests
      pos:
        line_end: 801
        line_start: 797
        source_file: /src/frr/tests/bgpd/test_aspath.c
    - fields:
      - name: test_index1
        type: int
      - name: test_index2
        type: int
      - name: shouldbe_cmp
        type: char
      - name: shouldbe_confed
        type: char
      item_type: struct
      name: compare_tests
      pos:
        line_end: 964
        line_start: 957
        source_file: /src/frr/tests/bgpd/test_aspath.c
    typedefs: []
    union: []
- function_names:
  - setup_test_vertices
  - cleanup_test_vertices
  - test_ordered
  - main
  source_file: /src/frr/tests/isisd/test_isis_vertex_queue.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/tests/isisd/test_common.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_HOSTNAME
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/frr/tests/isisd/test_common.h
      type_or_value: '16'
    - item_type: preproc_def
      name: MAX_NETWORKS
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/frr/tests/isisd/test_common.h
      type_or_value: '8'
    - item_type: preproc_def
      name: MAX_ADJACENCIES
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/frr/tests/isisd/test_common.h
      type_or_value: '8'
    - item_type: preproc_def
      name: MAX_NODES
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/frr/tests/isisd/test_common.h
      type_or_value: '12'
    - item_type: preproc_def
      name: SRGB_DFTL_LOWER_BOUND
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/frr/tests/isisd/test_common.h
      type_or_value: '16000'
    - item_type: preproc_def
      name: SRGB_DFTL_RANGE_SIZE
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/tests/isisd/test_common.h
      type_or_value: '8000'
    - item_type: preproc_def
      name: F_ISIS_TEST_NODE_SR
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/frr/tests/isisd/test_common.h
      type_or_value: '0x01'
    structs:
    - fields:
      - name: hostname[MAX_HOSTNAME]
        type: char
      - name: pseudonode_id
        type: uint8_t
      - name: metric
        type: uint32_t
      item_type: struct
      name: isis_test_adj
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/frr/tests/isisd/test_common.h
    - fields:
      - name: hostname[MAX_HOSTNAME]
        type: char
      - name: sysid[ISIS_SYS_ID_LEN]
        type: uint8_t
      - name: pseudonode_id
        type: uint8_t
      - name: level
        type: int
      - name: protocols
        type: "struct {\n\t\tbool ipv4;\n\t\tbool ipv6;\n\t}"
      - name: '*router_id'
        type: char
      - name: srgb
        type: "struct {\n\t\tuint32_t lower_bound;\n\t\tuint32_t range_size;\n\t}"
      - name: '*networks[MAX_NETWORKS + 1]'
        type: char
      - name: adjacencies[MAX_ADJACENCIES + 1]
        type: struct isis_test_adj
      - name: flags
        type: uint8_t
      item_type: struct
      name: isis_test_node
      pos:
        line_end: 44
        line_start: 27
        source_file: /src/frr/tests/isisd/test_common.h
    - fields:
      - name: number
        type: uint16_t
      - name: nodes[MAX_NODES + 1]
        type: struct isis_test_node
      item_type: struct
      name: isis_topology
      pos:
        line_end: 50
        line_start: 47
        source_file: /src/frr/tests/isisd/test_common.h
    typedefs: []
    union: []
- function_names:
  - test_run_spf
  - test_run_lfa
  - test_run_rlfa
  - test_run_ti_lfa
  - test_run
  - vty_do_exit
  - usage
  - main
  source_file: /src/frr/tests/isisd/test_isis_spf.c
  types:
    enum:
    - enumerators:
      - name: TEST_SPF
        value: '1'
      - name: TEST_REVERSE_SPF
      - name: TEST_LFA
      - name: TEST_TI_LFA
      - name: TEST_RLFA
      item_type: enum
      name: test_type
      pos:
        line_end: 32
        line_start: 26
        source_file: /src/frr/tests/isisd/test_isis_spf.c
    preproc_defs:
    - item_type: preproc_def
      name: F_DISPLAY_LSPDB
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/frr/tests/isisd/test_isis_spf.c
      type_or_value: '0x01'
    - item_type: preproc_def
      name: F_IPV4_ONLY
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/frr/tests/isisd/test_isis_spf.c
      type_or_value: '0x02'
    - item_type: preproc_def
      name: F_IPV6_ONLY
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/frr/tests/isisd/test_isis_spf.c
      type_or_value: '0x04'
    - item_type: preproc_def
      name: F_LEVEL1_ONLY
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/frr/tests/isisd/test_isis_spf.c
      type_or_value: '0x08'
    - item_type: preproc_def
      name: F_LEVEL2_ONLY
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/frr/tests/isisd/test_isis_spf.c
      type_or_value: '0x10'
    structs: []
    typedefs: []
    union: []
- function_names:
  - isis_sock_init
  - test_topology_find_node
  - test_topology_find
  - test_find_adjacency
  - test_topology_node_ldp_label
  - lsp_add
  - LSP_FRAGMENT
  - lsp_add_ip_reach
  - lsp_add_reach
  - lsp_add_router_capability
  - lsp_add_mt_router_info
  - lsp_add_protocols_supported
  - topology_load_node_level
  - topology_load_node
  - test_topology_load
  source_file: /src/frr/tests/isisd/test_common.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/tests/isisd/test_topologies.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - show_meminfo_at_exit
  - comp_line
  - sortlines
  - test
  source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TEST_STREAM_SIZE
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/frr/tests/isisd/test_fuzz_isis_tlv.c
      type_or_value: '1500'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_lsp_build_list_nonzero_ht
  - main
  source_file: /src/frr/tests/isisd/test_isis_lspdb.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - func1
  - func2
  - func3
  - threadfunc
  - main
  source_file: /src/frr/tests/lib/test_segv.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - heavy_wq_add
  - slow_func_del
  - slow_func
  - clear_something
  - heavy_wq_init
  - test_init
  source_file: /src/frr/tests/lib/test_heavy_wq.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*str'
        type: char
      - name: i
        type: int
      item_type: struct
      name: heavy_wq_node
      pos:
        line_end: 35
        line_start: 32
        source_file: /src/frr/tests/lib/test_heavy_wq.c
    typedefs: []
    union: []
- function_names:
  - usage
  - main
  - PRIV_STATE
  - (&test_privs)
  - (&test_privs)
  source_file: /src/frr/tests/lib/test_privs.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/lib/fuzz_zlog.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: out1_debug
        type: uint16_t
      - name: out2_debug
        type: uint16_t
      - name: out3_warn
        type: uint16_t
      - name: fmt
        type: uint8_t
      - name: dst
        type: uint8_t
      item_type: struct
      name: input_opts
      pos:
        line_end: 17
        line_start: 11
        source_file: /src/frr/tests/lib/fuzz_zlog.c
    typedefs: []
    union: []
- function_names:
  - print_stream
  - main
  source_file: /src/frr/tests/lib/test_stream.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - str_append
  - str_appendf
  - nexthop_chain_new
  - nexthop_chain_add_top
  - add_string_representation
  - start_recursive_chain
  - nexthop_chain_add_recursive
  - nexthop_chain_add_recursive_level
  - nexthop_clear_recursive
  - nexthop_chain_clear
  - nexthop_chain_free
  - nexthop_chain_verify_iter
  source_file: /src/frr/tests/lib/test_nexthop_iter.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: head
        type: struct nexthop_group
      - name: '*current_top'
        type: struct nexthop
      - name: '*current_recursive'
        type: struct nexthop
      - name: '*repr'
        type: char
      item_type: struct
      name: nexthop_chain
      pos:
        line_end: 57
        line_start: 48
        source_file: /src/frr/tests/lib/test_nexthop_iter.c
    typedefs: []
    union: []
- function_names:
  - validate_state
  - main
  source_file: /src/frr/tests/lib/test_ringbuf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_zlog_hexdump
  - main
  source_file: /src/frr/tests/lib/test_zlog.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAXDATA
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/frr/tests/lib/test_zlog.c
      type_or_value: '16384'
    structs: []
    typedefs: []
    union: []
- function_names:
  - msg_buf_free
  - recv_delim
  - send_delim
  - run_client
  - recv_id_and_delim
  - send_id_and_delim
  - serverwritefn
  - serverpartfn
  - serverfn
  - sigchld
  - run_server
  - main
  source_file: /src/frr/tests/lib/test_zmq.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/lib/test_ntop.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - writestr
  - thr1func
  - main
  source_file: /src/frr/tests/lib/test_seqlock.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_yang_modules_set
  - test_init
  source_file: /src/frr/tests/lib/test_plist.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - func_for_bt
  - main
  source_file: /src/frr/tests/lib/test_assert.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/lib/test_prefix2str.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - reduce_ospfd
  - reduce_ospfd1
  - reduce_isisd
  - reduce_isisd_yfix
  - reduce_isisd_mod
  - reduce_isisd_mody
  - ospfd_checksum
  - iso_csum_create
  - verify
  - in_cksum_optimized
  - in_cksum_rfc
  - main
  source_file: /src/frr/tests/lib/test_checksum.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MODX
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: 4102U
    - item_type: preproc_def
      name: x
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->x
    - item_type: preproc_def
      name: y
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->y
    - item_type: preproc_def
      name: c0
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c0
    - item_type: preproc_def
      name: c1
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c1
    - item_type: preproc_def
      name: x
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->x
    - item_type: preproc_def
      name: y
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->y
    - item_type: preproc_def
      name: c0
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c0
    - item_type: preproc_def
      name: c1
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c1
    - item_type: preproc_def
      name: x
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->x
    - item_type: preproc_def
      name: y
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->y
    - item_type: preproc_def
      name: c0
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c0
    - item_type: preproc_def
      name: c1
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c1
    - item_type: preproc_def
      name: x
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->x
    - item_type: preproc_def
      name: y
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->y
    - item_type: preproc_def
      name: c0
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c0
    - item_type: preproc_def
      name: c1
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c1
    - item_type: preproc_def
      name: x
      pos:
        line_end: 160
        line_start: 159
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->x
    - item_type: preproc_def
      name: y
      pos:
        line_end: 161
        line_start: 160
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->y
    - item_type: preproc_def
      name: c0
      pos:
        line_end: 162
        line_start: 161
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c0
    - item_type: preproc_def
      name: c1
      pos:
        line_end: 163
        line_start: 162
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c1
    - item_type: preproc_def
      name: x
      pos:
        line_end: 195
        line_start: 194
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->x
    - item_type: preproc_def
      name: y
      pos:
        line_end: 196
        line_start: 195
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->y
    - item_type: preproc_def
      name: c0
      pos:
        line_end: 197
        line_start: 196
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c0
    - item_type: preproc_def
      name: c1
      pos:
        line_end: 198
        line_start: 197
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: vals->a.c1
    - item_type: preproc_def
      name: MAXDATALEN
      pos:
        line_end: 452
        line_start: 451
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: '60017'
    - item_type: preproc_def
      name: BUFSIZE
      pos:
        line_end: 453
        line_start: 452
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: MAXDATALEN + sizeof(uint16_t)
    - item_type: preproc_def
      name: EXERCISESTEP
      pos:
        line_end: 456
        line_start: 455
        source_file: /src/frr/tests/lib/test_checksum.c
      type_or_value: '257'
    structs:
    - fields:
      - name: c0
        type: int
      - name: c1
        type: int
      item_type: struct
      name: acc_vals
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/frr/tests/lib/test_checksum.c
    - fields:
      - name: a
        type: struct acc_vals
      - name: x
        type: int
      - name: y
        type: int
      item_type: struct
      name: csum_vals
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/frr/tests/lib/test_checksum.c
    - fields:
      - name: '*name'
        type: char
      - name: (*f)(struct csum_vals *, testsz_t, testoff_t)
        type: uint16_t
      item_type: struct
      name: reductions_t
      pos:
        line_end: 228
        line_start: 225
        source_file: /src/frr/tests/lib/test_checksum.c
    typedefs:
    - item_type: typedef
      name: testsz_t
      pos:
        line_end: 28
        line_start: 28
        source_file: /src/frr/tests/lib/test_checksum.c
      type: size_t
    - item_type: typedef
      name: testoff_t
      pos:
        line_end: 29
        line_start: 29
        source_file: /src/frr/tests/lib/test_checksum.c
      type: uint16_t
    union: []
- function_names:
  - dummy_func
  - main
  source_file: /src/frr/tests/lib/test_timer_performance.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SCHEDULE_TIMERS
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/tests/lib/test_timer_performance.c
      type_or_value: '1000000'
    - item_type: preproc_def
      name: REMOVE_TIMERS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/tests/lib/test_timer_performance.c
      type_or_value: '500000'
    structs: []
    typedefs: []
    union: []
- function_names:
  - rel
  - compare
  - main
  source_file: /src/frr/tests/lib/test_versioncmp.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - icmp
  - deftestrun
  - thr1func
  - clear_list
  - run_tr
  - dump
  - basic_tests
  - basic_tests
  - main
  source_file: /src/frr/tests/lib/test_atomlist.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NITEM
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/frr/tests/lib/test_atomlist.c
      type_or_value: '10000'
    - item_type: preproc_def
      name: NTHREADS
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/frr/tests/lib/test_atomlist.c
      type_or_value: '4'
    - item_type: preproc_def
      name: NOCLEAR
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/frr/tests/lib/test_atomlist.c
      type_or_value: '-1'
    - item_type: preproc_def
      name: endtestrun
      pos:
        line_end: 103
        line_start: 99
        source_file: /src/frr/tests/lib/test_atomlist.c
      type_or_value: "thr[offset].counter = i; \\\n\tthr[offset].nullops = n; \\\n}"
    structs:
    - fields:
      - name: val1
        type: uint64_t
      - name: chain
        type: struct alist_item
      - name: sortc
        type: struct asort_item
      - name: val2
        type: uint64_t
      item_type: struct
      name: item
      pos:
        line_end: 39
        line_start: 34
        source_file: /src/frr/tests/lib/test_atomlist.c
    - fields:
      - name: pt
        type: pthread_t
      - name: sqlo
        type: struct seqlock
      - name: counter
        type: size_t
      item_type: struct
      name: testthread
      pos:
        line_end: 65
        line_start: 61
        source_file: /src/frr/tests/lib/test_atomlist.c
    - fields:
      - name: '*next'
        type: struct testrun
      - name: lineno
        type: int
      - name: '*desc'
        type: char
      - name: prefill
        type: ssize_t
      - name: sorted
        type: bool
      - name: (*func)(unsigned int offset)
        type: void
      item_type: struct
      name: testrun
      pos:
        line_end: 74
        line_start: 67
        source_file: /src/frr/tests/lib/test_atomlist.c
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/lib/test_ttable.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - printcmp
  - printchk
  - test_va
  - main
  source_file: /src/frr/tests/lib/test_printfrr.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - format_srcdest
  - log_key
  - log_cmp
  - log_free
  - log_alloc
  - test_state_new
  - test_state_free
  - test_state_add_route
  - test_state_del_route
  - verify_log
  - dump_log
  - test_dump
  - test_failed
  - test_state_verify
  - get_rand_prefix
  - get_rand_prefix_pair
  - test_state_add_rand_route
  - test_state_del_rand_route
  - test_state_del_one_route
  - run_prng_test
  - main
  source_file: /src/frr/tests/lib/test_srcdest_table.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: s6_addr32
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/tests/lib/test_srcdest_table.c
      type_or_value: __u6_addr.__u6_addr32
    structs:
    - fields:
      - name: '*src_table'
        type: struct route_table
      item_type: struct
      name: srcdest_rnode
      pos:
        line_end: 36
        line_start: 31
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    - fields:
      - name: '*table'
        type: struct route_table
      - name: '*log'
        type: struct hash
      item_type: struct
      name: test_state
      pos:
        line_end: 41
        line_start: 38
        source_file: /src/frr/tests/lib/test_srcdest_table.c
    typedefs: []
    union: []
- function_names:
  - resolver_result
  - test_setup
  - test_init
  source_file: /src/frr/tests/lib/test_resolver.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - terminate_test
  - timer_func
  - cmp_timeval
  - main
  source_file: /src/frr/tests/lib/test_timer_correctness.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SCHEDULE_TIMERS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/tests/lib/test_timer_correctness.c
      type_or_value: '800'
    - item_type: preproc_def
      name: REMOVE_TIMERS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/tests/lib/test_timer_correctness.c
      type_or_value: '200'
    - item_type: preproc_def
      name: TIMESTR_LEN
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/tests/lib/test_timer_correctness.c
      type_or_value: strlen("4294967296.999999")
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_int
  - test_struct
  - darr_foreach_i
  - main
  source_file: /src/frr/tests/lib/test_darr.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: a
        type: long long
      - name: b
        type: long long
      item_type: struct
      name: st
      pos:
        line_end: 152
        line_start: 149
        source_file: /src/frr/tests/lib/test_darr.c
    typedefs: []
    union: []
- function_names:
  - add_node
  - add_nodes
  - print_subtree
  - print_table
  - clear_table
  - verify_next_by_iterating
  - verify_next
  - test_get_next
  - verify_prefix_iter_cmp
  - test_prefix_iter_cmp
  - verify_iter_with_pause
  - test_iter_pause
  - run_tests
  - main
  source_file: /src/frr/tests/lib/test_table.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*prefix_str'
        type: char
      item_type: struct
      name: test_node_t_
      pos:
        line_end: 25
        line_start: 18
        source_file: /src/frr/tests/lib/test_table.c
    typedefs: []
    union: []
- function_names:
  - slow_func
  - clear_something
  - slow_vty_init
  - test_init
  source_file: /src/frr/tests/lib/test_heavy.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - slow_func
  - clear_something
  - test_init
  source_file: /src/frr/tests/lib/test_heavy_thread.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*vty'
        type: struct vty
      - name: '*str'
        type: char
      - name: i
        type: int
      item_type: struct
      name: work_state
      pos:
        line_end: 37
        line_start: 33
        source_file: /src/frr/tests/lib/test_heavy_thread.c
    typedefs: []
    union: []
- function_names:
  - _concat
  - concat
  - _str
  - str
  - _PREDECL
  - PREDECL
  - _DECLARE
  - DECLARE
  - _T_TYPE
  - IS_SORTED
  - IS_UNIQ
  - IS_HASH
  - IS_HEAP
  - IS_ATOMIC
  - IS_REVERSE
  - ts_start
  - ts_ref
  - ts_end
  - main
  source_file: /src/frr/tests/lib/test_typelist.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: T_SORTED
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: T_UNIQ
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (1 << 1)
    - item_type: preproc_def
      name: T_HASH
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (1 << 2)
    - item_type: preproc_def
      name: T_HEAP
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (1 << 3)
    - item_type: preproc_def
      name: T_ATOMIC
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (1 << 4)
    - item_type: preproc_def
      name: T_REVERSE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (1 << 5)
    - item_type: preproc_def
      name: _T_LIST
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (0)
    - item_type: preproc_def
      name: _T_DLIST
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (0                 | T_REVERSE)
    - item_type: preproc_def
      name: _T_ATOMLIST
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (0                 | T_ATOMIC)
    - item_type: preproc_def
      name: _T_HEAP
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED          | T_HEAP)
    - item_type: preproc_def
      name: _T_SORTLIST_UNIQ
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED | T_UNIQ)
    - item_type: preproc_def
      name: _T_SORTLIST_NONUNIQ
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED)
    - item_type: preproc_def
      name: _T_HASH
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED | T_UNIQ | T_HASH)
    - item_type: preproc_def
      name: _T_SKIPLIST_UNIQ
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED | T_UNIQ)
    - item_type: preproc_def
      name: _T_SKIPLIST_NONUNIQ
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED)
    - item_type: preproc_def
      name: _T_RBTREE_UNIQ
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED | T_UNIQ | T_REVERSE)
    - item_type: preproc_def
      name: _T_RBTREE_NONUNIQ
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED          | T_REVERSE)
    - item_type: preproc_def
      name: _T_ATOMSORT_UNIQ
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED | T_UNIQ | T_ATOMIC)
    - item_type: preproc_def
      name: _T_ATOMSORT_NONUNIQ
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: (T_SORTED          | T_ATOMIC)
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: LIST
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: DLIST
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: ATOMLIST
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: HEAP
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: SORTLIST_UNIQ
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: SORTLIST_NONUNIQ
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: HASH
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: HASH_collisions
    - item_type: preproc_def
      name: REALTYPE
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: HASH
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: SKIPLIST_UNIQ
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: SKIPLIST_NONUNIQ
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: RBTREE_UNIQ
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: RBTREE_NONUNIQ
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: ATOMSORT_UNIQ
    - item_type: preproc_def
      name: TYPE
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/frr/tests/lib/test_typelist.c
      type_or_value: ATOMSORT_NONUNIQ
    structs: []
    typedefs: []
    union: []
- function_names:
  - graph_custom_print_cb
  - main
  source_file: /src/frr/tests/lib/test_graph.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NUMNODES
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/frr/tests/lib/test_graph.c
      type_or_value: '32'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_debug
  - _err_print
  - static_startup
  - static_shutdown
  - NorthboundClient::NorthboundClient
  - NorthboundClient::Commit
  - NorthboundClient::CreateCandidate
  - NorthboundClient::DeleteCandidate
  - NorthboundClient::EditCandidate
  - NorthboundClient::Get
  - NorthboundClient::GetCapabilities
  - NorthboundClient::LoadToCandidate
  - NorthboundClient::ListTransactions
  - NorthboundClient::_throw_if_not_ok
  - grpc_client_test_stop
  - find_first_diff
  - assert_no_diff
  - assert_config_same
  - grpc_client_run_test
  - grpc_client_test_start
  - grpc_thread_start
  - grpc_thread_stop
  - get_binpath
  - main
  source_file: /src/frr/tests/lib/test_grpc.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/lib/test_buffer.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - XMALLOC
  - XCALLOC
  - XREALLOC
  - XFREE
  - main
  source_file: /src/frr/tests/lib/test_memory.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TIMES
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/tests/lib/test_memory.c
      type_or_value: '10'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_logcall
  - check_xref
  - test_lookup
  - main
  source_file: /src/frr/tests/lib/test_xref.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_encode_decode
  - main
  source_file: /src/frr/tests/lib/test_frrlua.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/lib/test_idalloc.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IDS_PER_PAGE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/frr/tests/lib/test_idalloc.c
      type_or_value: (1<<(IDALLOC_OFFSET_BITS + IDALLOC_WORD_BITS))
    structs: []
    typedefs: []
    union: []
- function_names:
  - sl_debug
  - scramble
  - sl_test
  - main
  source_file: /src/frr/tests/lib/test_skiplist.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: sampleSize
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/tests/lib/test_skiplist.c
      type_or_value: '65536'
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_run_first
  - main
  source_file: /src/frr/tests/lib/test_nexthop.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tests/lib/test_frrscript.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - sighup
  - sigusr1
  - sigusr2
  - main
  source_file: /src/frr/tests/lib/test_sig.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - list_hash
  - list_cmp
  - ts_hash_head
  - frr_each
  - ts_hash
  - ts_hashx
  - ts_hash_headx
  - ts_hash
  - ts_hashx
  - ts_hash_headx
  - frr_each
  - frr_each
  - frr_rev_each
  source_file: /src/frr/tests/lib/test_typelist.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: item
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(item_, TYPE)
    - item_type: preproc_def
      name: itm
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(itm_, TYPE)
    - item_type: preproc_def
      name: itmswap
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(itmswap_, TYPE)
    - item_type: preproc_def
      name: head
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(head_, TYPE)
    - item_type: preproc_def
      name: list
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, )
    - item_type: preproc_def
      name: list_head
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _head)
    - item_type: preproc_def
      name: list_item
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _item)
    - item_type: preproc_def
      name: list_cmp
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _cmp)
    - item_type: preproc_def
      name: list_hash
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _hash)
    - item_type: preproc_def
      name: list_init
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _init)
    - item_type: preproc_def
      name: list_fini
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _fini)
    - item_type: preproc_def
      name: list_const_first
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _const_first)
    - item_type: preproc_def
      name: list_first
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _first)
    - item_type: preproc_def
      name: list_const_next
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _const_next)
    - item_type: preproc_def
      name: list_next
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _next)
    - item_type: preproc_def
      name: list_next_safe
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _next_safe)
    - item_type: preproc_def
      name: list_const_last
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _const_last)
    - item_type: preproc_def
      name: list_last
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _last)
    - item_type: preproc_def
      name: list_const_prev
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _const_prev)
    - item_type: preproc_def
      name: list_prev
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _prev)
    - item_type: preproc_def
      name: list_prev_safe
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _prev_safe)
    - item_type: preproc_def
      name: list_count
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _count)
    - item_type: preproc_def
      name: list_add
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _add)
    - item_type: preproc_def
      name: list_add_head
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _add_head)
    - item_type: preproc_def
      name: list_add_tail
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _add_tail)
    - item_type: preproc_def
      name: list_add_after
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _add_after)
    - item_type: preproc_def
      name: list_find
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _find)
    - item_type: preproc_def
      name: list_find_lt
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _find_lt)
    - item_type: preproc_def
      name: list_find_gteq
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _find_gteq)
    - item_type: preproc_def
      name: list_member
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _member)
    - item_type: preproc_def
      name: list_anywhere
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _anywhere)
    - item_type: preproc_def
      name: list_del
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _del)
    - item_type: preproc_def
      name: list_pop
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _pop)
    - item_type: preproc_def
      name: list_swap_all
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(TYPE, _swap_all)
    - item_type: preproc_def
      name: ts_hash_head
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: concat(ts_hash_head_, TYPE)
    - item_type: preproc_def
      name: REALTYPE
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: TYPE
    - item_type: preproc_def
      name: NITEM
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: '10000'
    - item_type: preproc_def
      name: NITEM_SWAP
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/frr/tests/lib/test_typelist.h
      type_or_value: '100 '
    structs:
    - fields:
      - name: val
        type: uint64_t
      - name: itm
        type: struct list_item
      - name: scratchpad
        type: int
      item_type: struct
      name: item
      pos:
        line_end: 52
        line_start: 48
        source_file: /src/frr/tests/lib/test_typelist.h
    - fields:
      - name: val_upper
        type: uint32_t
      item_type: struct
      name: "hashitem = {\n\t\t\thtonl(item->val >> 32),\n\t\t\thtonl(item->val &
        0xFFFFFFFFULL),\n\t\t\thtonl(i),\n\t\t}"
      pos:
        line_end: 113
        line_start: 111
        source_file: /src/frr/tests/lib/test_typelist.h
    typedefs: []
    union: []
- function_names:
  - foocmp
  - main
  source_file: /src/frr/tests/lib/cxxcompat.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: dummy
        type: int
      - name: item
        type: struct footree_item
      item_type: struct
      name: foo
      pos:
        line_end: 98
        line_start: 95
        source_file: /src/frr/tests/lib/cxxcompat.c
    typedefs: []
    union: []
- function_names:
  - test_init
  source_file: /src/frr/tests/lib/cli/test_cli.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dump_args
  - vty_do_exit
  - main
  source_file: /src/frr/tests/lib/cli/common_cli.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_callback
  - test_load
  - test_init
  - test_terminate
  - test_run
  - main
  source_file: /src/frr/tests/lib/cli/test_commands.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REALLY_NEED_PLAIN_GETOPT
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/frr/tests/lib/cli/test_commands.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - DUMMY_DEFUN
  source_file: /src/frr/tests/lib/cli/common_cli.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DUMMY_HELPSTR
      pos:
        line_end: 35
        line_start: 31
        source_file: /src/frr/tests/lib/cli/common_cli.h
      type_or_value: "\"00\\n01\\n02\\n03\\n04\\n05\\n06\\n07\\n08\\n09\\n\"                             \\\n\t\"10\\n11\\n12\\n13\\n14\\n15\\n16\\n17\\n18\\n19\\n\"
        \                            \\\n\t\"20\\n21\\n22\\n23\\n24\\n25\\n26\\n27\\n28\\n29\\n\""
    structs: []
    typedefs: []
    union: []
- function_names:
  - frr_test_module_vrfs_vrf_get_next
  - frr_test_module_vrfs_vrf_get_keys
  - frr_test_module_vrfs_vrf_lookup_entry
  - interface_delete
  - route_delete
  - vrf_delete
  - delete_data
  - vty_do_exit
  - main
  source_file: /src/frr/tests/lib/northbound/test_oper_data.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: prefix
        type: struct prefix_ipv4
      - name: nexthop
        type: struct in_addr
      - name: ifname[IFNAMSIZ]
        type: char
      - name: metric
        type: uint8_t
      - name: active
        type: bool
      item_type: struct
      name: troute
      pos:
        line_end: 24
        line_start: 18
        source_file: /src/frr/tests/lib/northbound/test_oper_data.c
    - fields:
      - name: name[32]
        type: char
      - name: '*interfaces'
        type: struct list
      - name: '*routes'
        type: struct list
      item_type: struct
      name: tvrf
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/frr/tests/lib/northbound/test_oper_data.c
    typedefs: []
    union: []
- function_names:
  - lsa_check_resize
  - lsa_show_oneline
  - test_init
  source_file: /src/frr/tests/ospf6d/test_lsdb.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/tests/helpers/c/tests.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_timer
  - test_timer_init
  - test_vty_init
  - usage
  - main
  source_file: /src/frr/tests/helpers/c/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - prng_new
  - prng_rand
  - prng_fuzz
  - prng_free
  source_file: /src/frr/tests/helpers/c/prng.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: state
        type: uint64_t
      item_type: struct
      name: prng
      pos:
        line_end: 22
        line_start: 20
        source_file: /src/frr/tests/helpers/c/prng.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/tests/helpers/c/prng.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/fpm/fpm_pb.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fpm_msg_align
  - COMPILE_ASSERT
  - fpm_data_len_to_msg_len
  - fpm_msg_data
  - fpm_msg_len
  - fpm_msg_data_len
  - fpm_msg_next
  - fpm_msg_hdr_ok
  - fpm_msg_ok
  source_file: /src/frr/fpm/fpm.h
  types:
    enum:
    - enumerators:
      - name: FPM_MSG_TYPE_NONE
        value: '0'
      - name: FPM_MSG_TYPE_NETLINK
        value: '1'
      - name: FPM_MSG_TYPE_PROTOBUF
        value: '2'
      item_type: enum
      name: fpm_msg_type_e_
      pos:
        line_end: 122
        line_start: 108
        source_file: /src/frr/fpm/fpm.h
    preproc_defs:
    - item_type: preproc_def
      name: FPM_DEFAULT_IP
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/frr/fpm/fpm.h
      type_or_value: (htonl (INADDR_LOOPBACK))
    - item_type: preproc_def
      name: FPM_DEFAULT_PORT
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/frr/fpm/fpm.h
      type_or_value: '2620'
    - item_type: preproc_def
      name: FPM_MAX_MSG_LEN
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/frr/fpm/fpm.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: FPM_PROTO_VERSION
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/frr/fpm/fpm.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FPM_MSG_ALIGNTO
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/frr/fpm/fpm.h
      type_or_value: '4'
    - item_type: preproc_def
      name: FPM_MSG_HDR_LEN
      pos:
        line_end: 148
        line_start: 147
        source_file: /src/frr/fpm/fpm.h
      type_or_value: (sizeof(fpm_msg_hdr_t))
    - item_type: preproc_def
      name: TCP_MAX_PORT
      pos:
        line_end: 264
        line_start: 263
        source_file: /src/frr/fpm/fpm.h
      type_or_value: '65535'
    - item_type: preproc_def
      name: TCP_MIN_PORT
      pos:
        line_end: 267
        line_start: 266
        source_file: /src/frr/fpm/fpm.h
      type_or_value: '1'
    structs:
    - fields:
      - name: version
        type: uint8_t
      - name: msg_type
        type: uint8_t
      - name: msg_len
        type: uint16_t
      item_type: struct
      name: fpm_msg_hdr_t_
      pos:
        line_end: 97
        line_start: 81
        source_file: /src/frr/fpm/fpm.h
    typedefs: []
    union: []
- function_names:
  - fpm__route_key__create
  source_file: /src/frr/fpm/fpm_pb.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: fpm_route_key_create
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/frr/fpm/fpm_pb.h
      type_or_value: fpm__route_key__create
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_router_id_update_zebra
  - eigrp_zebra_route_notify_owner
  - eigrp_zebra_connected
  - eigrp_zebra_init
  - eigrp_zebra_read_route
  - eigrp_interface_address_add
  - eigrp_interface_address_delete
  - eigrp_zebra_route_add
  - eigrp_zebra_route_delete
  - eigrp_is_type_redistributed
  - eigrp_redistribute_set
  - eigrp_redistribute_unset
  source_file: /src/frr/eigrpd/eigrp_zebra.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_error_init
  source_file: /src/frr/eigrpd/eigrp_errors.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_snmp_nbr_lookup
  - eigrp_snmp_nbr_lookup_next
  - eigrpNbrLookup
  - eigrpVpnEntry
  - eigrp_neighbor_count
  - eigrpTopologyEntry
  - eigrpPeerEntry
  - eigrpInterfaceEntry
  - eigrp_snmp_init
  source_file: /src/frr/eigrpd/eigrp_snmp.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EIGRPMIB
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: 1,3,6,1,4,1,9,9,449,1
    - item_type: preproc_def
      name: EIGRPVPNID
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRPVPNNAME
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRPASNUMBER
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRPNBRCOUNT
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRPHELLOSSENT
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '3'
    - item_type: preproc_def
      name: EIGRPHELLOSRCVD
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '4'
    - item_type: preproc_def
      name: EIGRPUPDATESSENT
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '5'
    - item_type: preproc_def
      name: EIGRPUPDATESRCVD
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '6'
    - item_type: preproc_def
      name: EIGRPQUERIESSENT
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '7'
    - item_type: preproc_def
      name: EIGRPQUERIESRCVD
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '8'
    - item_type: preproc_def
      name: EIGRPREPLIESSENT
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '9'
    - item_type: preproc_def
      name: EIGRPREPLIESRCVD
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '10'
    - item_type: preproc_def
      name: EIGRPACKSSENT
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '11'
    - item_type: preproc_def
      name: EIGRPACKSRCVD
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '12'
    - item_type: preproc_def
      name: EIGRPINPUTQHIGHMARK
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '13'
    - item_type: preproc_def
      name: EIGRPINPUTQDROPS
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '14'
    - item_type: preproc_def
      name: EIGRPSIAQUERIESSENT
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '15'
    - item_type: preproc_def
      name: EIGRPSIAQUERIESRCVD
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '16'
    - item_type: preproc_def
      name: EIGRPASROUTERIDTYPE
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '17'
    - item_type: preproc_def
      name: EIGRPASROUTERID
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '18'
    - item_type: preproc_def
      name: EIGRPTOPOROUTES
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '19'
    - item_type: preproc_def
      name: EIGRPHEADSERIAL
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '20'
    - item_type: preproc_def
      name: EIGRPNEXTSERIAL
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '21'
    - item_type: preproc_def
      name: EIGRPXMITPENDREPLIES
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '22'
    - item_type: preproc_def
      name: EIGRPXMITDUMMIES
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '23'
    - item_type: preproc_def
      name: EIGRPDESTNETTYPE
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRPDESTNET
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRPDESTNETPREFIXLEN
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '4'
    - item_type: preproc_def
      name: EIGRPACTIVE
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '5'
    - item_type: preproc_def
      name: EIGRPSTUCKINACTIVE
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '6'
    - item_type: preproc_def
      name: EIGRPDESTSUCCESSORS
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '7'
    - item_type: preproc_def
      name: EIGRPFDISTANCE
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '8'
    - item_type: preproc_def
      name: EIGRPROUTEORIGINTYPE
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '9'
    - item_type: preproc_def
      name: EIGRPROUTEORIGINADDRTYPE
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '10'
    - item_type: preproc_def
      name: EIGRPROUTEORIGINADDR
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '11'
    - item_type: preproc_def
      name: EIGRPNEXTHOPADDRESSTYPE
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '12'
    - item_type: preproc_def
      name: EIGRPNEXTHOPADDRESS
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '13'
    - item_type: preproc_def
      name: EIGRPNEXTHOPINTERFACE
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '14'
    - item_type: preproc_def
      name: EIGRPDISTANCE
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '15'
    - item_type: preproc_def
      name: EIGRPREPORTDISTANCE
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '16'
    - item_type: preproc_def
      name: EIGRPHANDLE
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRPPEERADDRTYPE
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRPPEERADDR
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '3'
    - item_type: preproc_def
      name: EIGRPPEERIFINDEX
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '4'
    - item_type: preproc_def
      name: EIGRPHOLDTIME
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '5'
    - item_type: preproc_def
      name: EIGRPUPTIME
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '6'
    - item_type: preproc_def
      name: EIGRPSRTT
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '7'
    - item_type: preproc_def
      name: EIGRPRTO
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '8'
    - item_type: preproc_def
      name: EIGRPPKTSENQUEUED
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '9'
    - item_type: preproc_def
      name: EIGRPLASTSEQ
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '10'
    - item_type: preproc_def
      name: EIGRPVERSION
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '11'
    - item_type: preproc_def
      name: EIGRPRETRANS
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '12'
    - item_type: preproc_def
      name: EIGRPRETRIES
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '13'
    - item_type: preproc_def
      name: EIGRPPEERCOUNT
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '3'
    - item_type: preproc_def
      name: EIGRPXMITRELIABLEQ
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '4'
    - item_type: preproc_def
      name: EIGRPXMITUNRELIABLEQ
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '5'
    - item_type: preproc_def
      name: EIGRPMEANSRTT
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '6'
    - item_type: preproc_def
      name: EIGRPPACINGRELIABLE
      pos:
        line_end: 124
        line_start: 123
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '7'
    - item_type: preproc_def
      name: EIGRPPACINGUNRELIABLE
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '8'
    - item_type: preproc_def
      name: EIGRPMFLOWTIMER
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '9'
    - item_type: preproc_def
      name: EIGRPPENDINGROUTES
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '10'
    - item_type: preproc_def
      name: EIGRPHELLOINTERVAL
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '11'
    - item_type: preproc_def
      name: EIGRPXMITNEXTSERIAL
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '12'
    - item_type: preproc_def
      name: EIGRPUMCASTS
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '13'
    - item_type: preproc_def
      name: EIGRPRMCASTS
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '14'
    - item_type: preproc_def
      name: EIGRPUUCASTS
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '15'
    - item_type: preproc_def
      name: EIGRPRUCASTS
      pos:
        line_end: 133
        line_start: 132
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '16'
    - item_type: preproc_def
      name: EIGRPMCASTEXCEPTS
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '17'
    - item_type: preproc_def
      name: EIGRPCRPKTS
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '18'
    - item_type: preproc_def
      name: EIGRPACKSSUPPRESSED
      pos:
        line_end: 136
        line_start: 135
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '19'
    - item_type: preproc_def
      name: EIGRPRETRANSSENT
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '20'
    - item_type: preproc_def
      name: EIGRPOOSRCVD
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '21'
    - item_type: preproc_def
      name: EIGRPAUTHMODE
      pos:
        line_end: 139
        line_start: 138
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '22'
    - item_type: preproc_def
      name: EIGRPAUTHKEYCHAIN
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: '23'
    - item_type: preproc_def
      name: COUNTER
      pos:
        line_end: 143
        line_start: 142
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_COUNTER
    - item_type: preproc_def
      name: INTEGER
      pos:
        line_end: 144
        line_start: 143
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_INTEGER
    - item_type: preproc_def
      name: GAUGE
      pos:
        line_end: 145
        line_start: 144
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_GAUGE
    - item_type: preproc_def
      name: TIMETICKS
      pos:
        line_end: 146
        line_start: 145
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_TIMETICKS
    - item_type: preproc_def
      name: IPADDRESS
      pos:
        line_end: 147
        line_start: 146
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_IPADDRESS
    - item_type: preproc_def
      name: STRING
      pos:
        line_end: 148
        line_start: 147
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_OCTET_STR
    - item_type: preproc_def
      name: IPADDRESSPREFIXLEN
      pos:
        line_end: 149
        line_start: 148
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_INTEGER
    - item_type: preproc_def
      name: IPADDRESSTYPE
      pos:
        line_end: 150
        line_start: 149
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_INTEGER
    - item_type: preproc_def
      name: INTERFACEINDEXORZERO
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_INTEGER
    - item_type: preproc_def
      name: UINTEGER
      pos:
        line_end: 152
        line_start: 151
        source_file: /src/frr/eigrpd/eigrp_snmp.c
      type_or_value: ASN_UNSIGNED
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_bandwidth_to_scaled
  - eigrp_scaled_to_bandwidth
  - eigrp_delay_to_scaled
  - eigrp_scaled_to_delay
  - eigrp_calculate_metrics
  - eigrp_calculate_total_metrics
  - eigrp_metrics_is_same
  source_file: /src/frr/eigrpd/eigrp_metric.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_siareply_receive
  - eigrp_send_siareply
  source_file: /src/frr/eigrpd/eigrp_siareply.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_structs.h
  types:
    enum:
    - enumerators:
      - name: EIGRP_PACKET_PART_NA
      - name: EIGRP_PACKET_PART_LAST
      - name: EIGRP_PACKET_PART_FIRST
      item_type: enum
      name: Packet_part_type
      pos:
        line_end: 206
        line_start: 202
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - enumerators:
      - name: EIGRP_GR_MANUAL
      - name: EIGRP_GR_FILTER
      item_type: enum
      name: GR_type
      pos:
        line_end: 422
        line_start: 422
        source_file: /src/frr/eigrpd/eigrp_structs.h
    preproc_defs: []
    structs:
    - fields:
      - name: delay
        type: uint32_t
      - name: bandwidth
        type: uint32_t
      - name: mtu[3]
        type: uint8_t
      - name: hop_count
        type: uint8_t
      - name: reliability
        type: uint8_t
      - name: load
        type: uint8_t
      - name: tag
        type: uint8_t
      - name: flags
        type: uint8_t
      item_type: struct
      name: eigrp_metrics
      pos:
        line_end: 33
        line_start: 24
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: orig
        type: uint32_t
      - name: as
        type: uint32_t
      - name: tag
        type: uint32_t
      - name: metric
        type: uint32_t
      - name: reserved
        type: uint16_t
      - name: protocol
        type: uint8_t
      - name: flags
        type: uint8_t
      item_type: struct
      name: eigrp_extdata
      pos:
        line_end: 43
        line_start: 35
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: vrf_id
        type: vrf_id_t
      - name: AS
        type: uint16_t
      - name: vrid
        type: uint16_t
      - name: k_values[6]
        type: uint8_t
      - name: variance
        type: uint8_t
      - name: max_paths
        type: uint8_t
      - name: '*name'
        type: char
      - name: router_id
        type: struct in_addr
      - name: router_id_static
        type: struct in_addr
      - name: '*eiflist'
        type: struct list
      - name: passive_interface_default
        type: uint8_t
      - name: fd
        type: int
      - name: maxsndbuflen
        type: unsigned int
      - name: sequence_number
        type: uint32_t
      - name: '*ibuf'
        type: struct stream
      - name: '*oi_write_q'
        type: struct list
      - name: '*t_write'
        type: struct event
      - name: '*t_read'
        type: struct event
      - name: '*t_distribute'
        type: struct event
      - name: '*networks'
        type: struct route_table
      - name: '*topology_table'
        type: struct route_table
      - name: serno
        type: uint64_t
      - name: serno_last_update
        type: uint64_t
      - name: '*topology_changes_internalIPV4'
        type: struct list
      - name: '*topology_changes_externalIPV4'
        type: struct list
      - name: '*neighbor_self'
        type: struct eigrp_neighbor
      - name: dmetric[ZEBRA_ROUTE_MAX + 1]
        type: struct eigrp_metrics
      - name: redistribute
        type: int
      - name: '*list[EIGRP_FILTER_MAX]'
        type: struct access_list
      - name: '*prefix[EIGRP_FILTER_MAX]'
        type: struct prefix_list
      - name: '*routemap[EIGRP_FILTER_MAX]'
        type: struct route_map
      - name: route_map[ZEBRA_ROUTE_MAX]
        type: "struct {\n\t\tchar *name;\n\t\tstruct route_map *map;\n\t\tint metric_config;\n\t\tuint32_t
          metric;\n\t}"
      - name: '*distribute_ctx'
        type: struct distribute_ctx
      item_type: struct
      name: eigrp
      pos:
        line_end: 114
        line_start: 45
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: passive_interface
        type: uint8_t
      - name: v_hello
        type: uint32_t
      - name: v_wait
        type: uint16_t
      - name: type
        type: uint8_t
      - name: bandwidth
        type: uint32_t
      - name: delay
        type: uint32_t
      - name: reliability
        type: uint8_t
      - name: load
        type: uint8_t
      - name: '*auth_keychain'
        type: char
      - name: auth_type
        type: int
      item_type: struct
      name: eigrp_if_params
      pos:
        line_end: 129
        line_start: 117
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: params
        type: struct eigrp_if_params
      - name: member_allrouters
        type: bool
      - name: '*eigrp'
        type: struct eigrp
      - name: '*ifp'
        type: struct interface
      - name: '*obuf'
        type: struct eigrp_fifo
      - name: curr_bandwidth
        type: uint32_t
      - name: curr_mtu
        type: uint32_t
      - name: multicast_memberships
        type: uint8_t
      - name: type
        type: uint8_t
      - name: address
        type: struct prefix
      - name: '*nbrs'
        type: struct list
      - name: '*t_hello'
        type: struct event
      - name: '*t_distribute'
        type: struct event
      - name: on_write_q
        type: int
      - name: hello_in
        type: uint32_t
      - name: update_in
        type: uint32_t
      - name: query_in
        type: uint32_t
      - name: reply_in
        type: uint32_t
      - name: hello_out
        type: uint32_t
      - name: update_out
        type: uint32_t
      - name: query_out
        type: uint32_t
      - name: reply_out
        type: uint32_t
      - name: siaQuery_in
        type: uint32_t
      - name: siaQuery_out
        type: uint32_t
      - name: siaReply_in
        type: uint32_t
      - name: siaReply_out
        type: uint32_t
      - name: ack_out
        type: uint32_t
      - name: ack_in
        type: uint32_t
      - name: crypt_seqnum
        type: uint32_t
      - name: '*list[EIGRP_FILTER_MAX]'
        type: struct access_list
      - name: '*prefix[EIGRP_FILTER_MAX]'
        type: struct prefix_list
      - name: '*routemap[EIGRP_FILTER_MAX]'
        type: struct route_map
      item_type: struct
      name: eigrp_interface
      pos:
        line_end: 196
        line_start: 136
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: '*ei'
        type: struct eigrp_interface
      - name: state
        type: uint8_t
      - name: recv_sequence_number
        type: uint32_t
      - name: init_sequence_number
        type: uint32_t
      - name: retrans_counter
        type: uint8_t
      - name: src
        type: struct in_addr
      - name: os_rel_major
        type: uint8_t
      - name: os_rel_minor
        type: uint8_t
      - name: tlv_rel_major
        type: uint8_t
      - name: tlv_rel_minor
        type: uint8_t
      - name: K1
        type: uint8_t
      - name: K2
        type: uint8_t
      - name: K3
        type: uint8_t
      - name: K4
        type: uint8_t
      - name: K5
        type: uint8_t
      - name: K6
        type: uint8_t
      - name: v_holddown
        type: uint16_t
      - name: '*t_holddown'
        type: struct event
      - name: '*t_nbr_send_gr'
        type: struct event
      - name: '*retrans_queue'
        type: struct eigrp_fifo
      - name: '*multicast_queue'
        type: struct eigrp_fifo
      - name: crypt_seqnum
        type: uint32_t
      - name: '*nbr_gr_prefixes'
        type: struct list
      - name: '*nbr_gr_prefixes_send'
        type: struct list
      - name: nbr_gr_packet_type
        type: enum Packet_part_type
      item_type: struct
      name: eigrp_neighbor
      pos:
        line_end: 257
        line_start: 209
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: '*next'
        type: struct eigrp_packet
      - name: '*previous'
        type: struct eigrp_packet
      - name: '*s'
        type: struct stream
      - name: dst
        type: struct in_addr
      - name: '*t_retrans_timer'
        type: struct event
      - name: retrans_counter
        type: uint8_t
      - name: sequence_number
        type: uint32_t
      - name: length
        type: uint16_t
      - name: '*nbr'
        type: struct eigrp_neighbor
      item_type: struct
      name: eigrp_packet
      pos:
        line_end: 284
        line_start: 262
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: '*head'
        type: struct eigrp_packet
      - name: '*tail'
        type: struct eigrp_packet
      - name: count
        type: unsigned long
      item_type: struct
      name: eigrp_fifo
      pos:
        line_end: 291
        line_start: 286
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: version
        type: uint8_t
      - name: opcode
        type: uint8_t
      - name: checksum
        type: uint16_t
      - name: flags
        type: uint32_t
      - name: sequence
        type: uint32_t
      - name: ack
        type: uint32_t
      - name: vrid
        type: uint16_t
      - name: ASNumber
        type: uint16_t
      - name: '*tlv[0]'
        type: char
      item_type: struct
      name: eigrp_header
      pos:
        line_end: 304
        line_start: 293
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: value[0]
        type: uint8_t
      item_type: struct
      name: eigrp_tlv_hdr_type
      pos:
        line_end: 320
        line_start: 316
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: K1
        type: uint8_t
      - name: K2
        type: uint8_t
      - name: K3
        type: uint8_t
      - name: K4
        type: uint8_t
      - name: K5
        type: uint8_t
      - name: K6
        type: uint8_t
      - name: hold_time
        type: uint16_t
      item_type: struct
      name: TLV_Parameter_Type
      pos:
        line_end: 332
        line_start: 322
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: auth_type
        type: uint16_t
      - name: auth_length
        type: uint16_t
      - name: key_id
        type: uint32_t
      - name: key_sequence
        type: uint32_t
      - name: Nullpad[8]
        type: uint8_t
      - name: digest[EIGRP_AUTH_TYPE_MD5_LEN]
        type: uint8_t
      item_type: struct
      name: TLV_MD5_Authentication_Type
      pos:
        line_end: 344
        line_start: 334
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: auth_type
        type: uint16_t
      - name: auth_length
        type: uint16_t
      - name: key_id
        type: uint32_t
      - name: key_sequence
        type: uint32_t
      - name: Nullpad[8]
        type: uint8_t
      - name: digest[EIGRP_AUTH_TYPE_SHA256_LEN]
        type: uint8_t
      item_type: struct
      name: TLV_SHA256_Authentication_Type
      pos:
        line_end: 356
        line_start: 346
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: addr_length
        type: uint8_t
      - name: '*addresses'
        type: struct in_addr
      item_type: struct
      name: TLV_Sequence_Type
      pos:
        line_end: 363
        line_start: 358
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: multicast_sequence
        type: uint32_t
      item_type: struct
      name: TLV_Next_Multicast_Sequence
      pos:
        line_end: 369
        line_start: 365
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: vender_major
        type: uint8_t
      - name: vender_minor
        type: uint8_t
      - name: eigrp_major
        type: uint8_t
      - name: eigrp_minor
        type: uint8_t
      item_type: struct
      name: TLV_Software_Type
      pos:
        line_end: 378
        line_start: 371
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: forward
        type: struct in_addr
      - name: metric
        type: struct eigrp_metrics
      - name: prefix_length
        type: uint8_t
      - name: destination
        type: struct in_addr
      item_type: struct
      name: TLV_IPv4_Internal_type
      pos:
        line_end: 391
        line_start: 380
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: next_hop
        type: struct in_addr
      - name: originating_router
        type: struct in_addr
      - name: originating_as
        type: uint32_t
      - name: administrative_tag
        type: uint32_t
      - name: external_metric
        type: uint32_t
      - name: reserved
        type: uint16_t
      - name: external_protocol
        type: uint8_t
      - name: external_flags
        type: uint8_t
      - name: metric
        type: struct eigrp_metrics
      - name: prefix_length
        type: uint8_t
      - name: destination_part[4]
        type: unsigned char
      - name: destination
        type: struct in_addr
      item_type: struct
      name: TLV_IPv4_External_type
      pos:
        line_end: 411
        line_start: 393
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: length
        type: uint16_t
      - name: unknown
        type: uint8_t
      - name: neighbor_ip
        type: uint32_t
      item_type: struct
      name: TLV_Peer_Termination_type
      pos:
        line_end: 419
        line_start: 414
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: '*entries'
        type: struct list
      - name: fdistance
        type: uint32_t
      - name: rdistance
        type: uint32_t
      - name: distance
        type: uint32_t
      - name: reported_metric
        type: struct eigrp_metrics
      - name: nt
        type: uint8_t
      - name: state
        type: uint8_t
      - name: af
        type: uint8_t
      - name: req_action
        type: uint8_t
      - name: '*destination'
        type: struct prefix
      - name: '*extTLV'
        type: struct TLV_IPv4_External_type
      - name: serno
        type: uint64_t
      item_type: struct
      name: eigrp_prefix_descriptor
      pos:
        line_end: 447
        line_start: 427
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: type
        type: uint16_t
      - name: afi
        type: uint16_t
      - name: '*prefix'
        type: struct eigrp_prefix_descriptor
      - name: '*adv_router'
        type: struct eigrp_neighbor
      - name: nexthop
        type: struct in_addr
      - name: reported_distance
        type: uint32_t
      - name: distance
        type: uint32_t
      - name: reported_metric
        type: struct eigrp_metrics
      - name: total_metric
        type: struct eigrp_metrics
      - name: metric
        type: struct eigrp_metrics
      - name: extdata
        type: struct eigrp_extdata
      - name: flags
        type: uint8_t
      - name: '*ei'
        type: struct eigrp_interface
      item_type: struct
      name: eigrp_route_descriptor
      pos:
        line_end: 471
        line_start: 450
        source_file: /src/frr/eigrpd/eigrp_structs.h
    - fields:
      - name: packet_type
        type: uint8_t
      - name: '*eigrp'
        type: struct eigrp
      - name: '*adv_router'
        type: struct eigrp_neighbor
      - name: '*entry'
        type: struct eigrp_route_descriptor
      - name: '*prefix'
        type: struct eigrp_prefix_descriptor
      - name: data_type
        type: msg_data_t
      - name: metrics
        type: struct eigrp_metrics
      - name: change
        type: enum metric_change
      item_type: struct
      name: eigrp_fsm_action_message
      pos:
        line_end: 491
        line_start: 482
        source_file: /src/frr/eigrpd/eigrp_structs.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_interface.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_pkt_tlv1.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_distribute_update
  source_file: /src/frr/eigrpd/eigrp_filter.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_vrf.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_cli_show_header
  - eigrp_cli_show_end_header
  - eigrp_cli_show_router_id
  - eigrp_cli_show_passive_interface
  - eigrp_cli_show_active_time
  - eigrp_cli_show_variance
  - eigrp_cli_show_maximum_paths
  - eigrp_cli_show_metrics
  - eigrp_cli_show_network
  - eigrp_cli_show_neighbor
  - eigrp_cli_show_redistribute
  - eigrp_cli_show_delay
  - eigrp_cli_show_bandwidth
  - eigrp_cli_show_hello_interval
  - eigrp_cli_show_hold_time
  - eigrp_cli_show_summarize_address
  - eigrp_cli_show_authentication
  - eigrp_cli_show_keychain
  - eigrp_config_write
  - eigrp_cli_init
  source_file: /src/frr/eigrpd/eigrp_cli.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_vty.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_yang.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CONF_DEBUG_NEI_ON
  - CONF_DEBUG_NEI_OFF
  - TERM_DEBUG_NEI_ON
  - TERM_DEBUG_NEI_OFF
  - DEBUG_NEI_ON
  - DEBUG_NEI_OFF
  - CONF_DEBUG_PACKET_ON
  - CONF_DEBUG_PACKET_OFF
  - TERM_DEBUG_PACKET_ON
  - TERM_DEBUG_PACKET_OFF
  - DEBUG_PACKET_ON
  - DEBUG_PACKET_OFF
  - CONF_DEBUG_TRANSMIT_ON
  - CONF_DEBUG_TRANSMIT_OFF
  - TERM_DEBUG_TRANSMIT_ON
  - TERM_DEBUG_TRANSMIT_OFF
  - DEBUG_TRANSMIT_ON
  - DEBUG_TRANSMIT_OFF
  - CONF_DEBUG_ON
  - CONF_DEBUG_OFF
  - TERM_DEBUG_ON
  - TERM_DEBUG_OFF
  - DEBUG_ON
  - DEBUG_OFF
  - IS_DEBUG_EIGRP_PACKET
  - IS_DEBUG_EIGRP_TRANSMIT
  - IS_DEBUG_EIGRP_NEI
  - IS_DEBUG_EIGRP
  source_file: /src/frr/eigrpd/eigrp_dump.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EIGRP_TIME_DUMP_SIZE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '16'
    - item_type: preproc_def
      name: EIGRP_DEBUG_EVENT
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_DEBUG_DETAIL
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EIGRP_DEBUG_TIMERS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EIGRP_DEBUG_NEI
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_DEBUG_UPDATE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_DEBUG_REQUEST
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EIGRP_DEBUG_QUERY
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EIGRP_DEBUG_REPLY
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x08'
    - item_type: preproc_def
      name: EIGRP_DEBUG_HELLO
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x10'
    - item_type: preproc_def
      name: EIGRP_DEBUG_PROBE
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x40'
    - item_type: preproc_def
      name: EIGRP_DEBUG_ACK
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x80'
    - item_type: preproc_def
      name: EIGRP_DEBUG_SIAQUERY
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x200'
    - item_type: preproc_def
      name: EIGRP_DEBUG_SIAREPLY
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x400'
    - item_type: preproc_def
      name: EIGRP_DEBUG_STUB
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x800'
    - item_type: preproc_def
      name: EIGRP_DEBUG_PACKETS_ALL
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0xfff'
    - item_type: preproc_def
      name: EIGRP_DEBUG_SEND
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_DEBUG_RECV
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EIGRP_DEBUG_SEND_RECV
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x03'
    - item_type: preproc_def
      name: EIGRP_DEBUG_PACKET_DETAIL
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EIGRP_DEBUG_ZEBRA_INTERFACE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_DEBUG_ZEBRA_REDISTRIBUTE
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EIGRP_DEBUG_ZEBRA
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: '0x03'
    - item_type: preproc_def
      name: IS_DEBUG_EIGRP_EVENT
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/frr/eigrpd/eigrp_dump.h
      type_or_value: IS_DEBUG_EIGRP(event, EVENT)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_filter.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_update_prefix_apply
  - remove_received_prefix_gr
  - eigrp_update_receive_GR_ask
  - eigrp_update_receive
  - eigrp_update_send_init
  - eigrp_update_place_on_nbr_queue
  - eigrp_update_send_to_all_nbrs
  - eigrp_update_send
  - eigrp_update_send_all
  - eigrp_update_send_GR_part
  - eigrp_update_send_GR_thread
  - eigrp_update_send_GR
  - eigrp_update_send_interface_GR
  - eigrp_update_send_process_GR
  source_file: /src/frr/eigrpd/eigrp_update.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - sighup
  - sigint
  - sigusr1
  - main
  source_file: /src/frr/eigrpd/eigrp_main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_topology_new
  - eigrp_prefix_descriptor_new
  - eigrp_route_descriptor_cmp
  - eigrp_route_descriptor_new
  - eigrp_topology_free
  - eigrp_prefix_descriptor_add
  - eigrp_route_descriptor_add
  - eigrp_prefix_descriptor_delete
  - eigrp_topology_get_successor_max
  - eigrp_route_descriptor_lookup
  - eigrp_neighbor_prefixes_lookup
  - eigrp_topology_update_distance
  - eigrp_topology_update_all_node_flags
  - eigrp_topology_update_node_flags
  - eigrp_update_routing_table
  source_file: /src/frr/eigrpd/eigrp_topology.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_zebra.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_if_rmap_update
  - eigrp_route_match_add
  - eigrp_route_match_delete
  - eigrp_route_set_add
  - eigrp_route_set_delete
  - eigrp_route_map_update
  - route_match_metric
  - route_match_metric_compile
  - route_match_metric_free
  - route_match_interface
  - route_match_interface_compile
  - route_match_interface_free
  - route_match_ip_next_hop
  - route_match_ip_next_hop_compile
  - route_match_ip_next_hop_free
  - route_match_ip_next_hop_prefix_list
  - route_match_ip_next_hop_prefix_list_compile
  - route_match_ip_next_hop_prefix_list_free
  - route_match_ip_address
  - route_match_ip_address_compile
  - route_match_ip_address_free
  - route_match_ip_address_prefix_list
  - route_match_ip_address_prefix_list_compile
  - route_match_ip_address_prefix_list_free
  - route_match_tag
  - route_match_tag_compile
  - route_match_tag_free
  - route_set_metric
  - route_set_metric_compile
  - route_set_metric_free
  - route_set_ip_nexthop
  - route_set_ip_nexthop_compile
  - route_set_ip_nexthop_free
  - route_set_tag
  - route_set_tag_compile
  - route_set_tag_free
  - eigrp_route_map_init
  source_file: /src/frr/eigrpd/eigrp_routemap.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MATCH_STR
      pos:
        line_end: 783
        line_start: 782
        source_file: /src/frr/eigrpd/eigrp_routemap.c
      type_or_value: '"Match values from routing table\n"'
    - item_type: preproc_def
      name: SET_STR
      pos:
        line_end: 784
        line_start: 783
        source_file: /src/frr/eigrpd/eigrp_routemap.c
      type_or_value: '"Set values in destination routing protocol\n"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_hello_timer
  - eigrp_hello_parameter_decode
  - eigrp_hello_authentication_decode
  - eigrp_sw_version_decode
  - eigrp_peer_termination_decode
  - eigrp_peer_termination_encode
  - eigrp_hello_receive
  - eigrp_sw_version_initialize
  - eigrp_sw_version_encode
  - eigrp_tidlist_encode
  - eigrp_sequence_encode
  - eigrp_hello_send_ack
  - eigrp_hello_send
  source_file: /src/frr/eigrpd/eigrp_hello.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_network.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_router_id_update
  - eigrp_master_init
  - eigrp_new
  - eigrp_get
  - eigrp_terminate
  source_file: /src/frr/eigrpd/eigrpd.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_sock_init
  - (&eigrpd_privs)
  - eigrp_adjust_sndbuflen
  - eigrp_if_ipmulticast
  - eigrp_if_add_allspfrouters
  - eigrp_if_drop_allspfrouters
  - eigrp_network_set
  - FOR_ALL_INTERFACES
  - eigrp_network_match_iface
  - eigrp_network_run_interface
  - eigrp_if_update
  - eigrp_network_unset
  - eigrp_external_routes_refresh
  source_file: /src/frr/eigrpd/eigrp_network.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_topology.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_cli.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_neighbor.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_vrf_new
  - eigrp_vrf_enable
  - eigrp_vrf_disable
  - eigrp_vrf_delete
  - eigrp_vrf_init
  source_file: /src/frr/eigrpd/eigrp_vrf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_metric.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EIGRP_BANDWIDTH_MIN
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: "0x1ull\t\t  "
    - item_type: preproc_def
      name: EIGRP_BANDWIDTH_SCALER
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: "10000000ull\t  "
    - item_type: preproc_def
      name: EIGRP_BANDWIDTH_MAX
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '0xffffffffffffffffull '
    - item_type: preproc_def
      name: EIGRP_DELAY_MIN
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '0x1ull '
    - item_type: preproc_def
      name: EIGRP_DELAY_PICO
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: 1000000ull
    - item_type: preproc_def
      name: EIGRP_DELAY_MAX
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '0xffffffffffffffffull '
    - item_type: preproc_def
      name: EIGRP_MAX_LOAD
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '256'
    - item_type: preproc_def
      name: EIGRP_MAX_HOPS
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '100'
    - item_type: preproc_def
      name: EIGRP_INACCESSIBLE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: 0xFFFFFFFFFFFFFFFFull
    - item_type: preproc_def
      name: EIGRP_METRIC_MAX
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '0xffffffffffffffffull '
    - item_type: preproc_def
      name: EIGRP_METRIC_MAX_CLASSIC
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '0xffffffff'
    - item_type: preproc_def
      name: EIGRP_METRIC_SCALER
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: "65536\t       "
    - item_type: preproc_def
      name: EIGRP_CLASSIC_MAX
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '0xffffffff '
    - item_type: preproc_def
      name: EIGRP_CLASSIC_SCALER
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/eigrpd/eigrp_metric.h
      type_or_value: '256     '
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_retrans_count_exceeded
  - eigrp_make_md5_digest
  - eigrp_check_md5_digest
  - eigrp_make_sha256_digest
  - eigrp_check_sha256_digest
  - eigrp_write
  - eigrp_read
  - eigrp_recv_packet
  - eigrp_fifo_new
  - eigrp_fifo_free
  - eigrp_fifo_reset
  - eigrp_packet_new
  - eigrp_send_packet_reliably
  - eigrp_packet_checksum
  - eigrp_packet_header_init
  - eigrp_fifo_push
  - eigrp_fifo_next
  - eigrp_packet_delete
  - eigrp_packet_free
  - eigrp_verify_header
  - eigrp_check_network_mask
  - eigrp_unack_packet_retrans
  - eigrp_unack_multicast_packet_retrans
  - eigrp_fifo_pop
  - eigrp_packet_duplicate
  - eigrp_IPv4_InternalTLV_new
  - eigrp_read_ipv4_tlv
  - eigrp_add_internalTLV_to_stream
  - eigrp_add_authTLV_MD5_to_stream
  - eigrp_add_authTLV_SHA256_to_stream
  - eigrp_authTLV_MD5_new
  - eigrp_authTLV_MD5_free
  - eigrp_authTLV_SHA256_new
  - eigrp_authTLV_SHA256_free
  - eigrp_IPv4_InternalTLV_free
  - eigrp_SequenceTLV_new
  source_file: /src/frr/eigrpd/eigrp_packet.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EIGRP_WRITE_IPHL_SHIFT
      pos:
        line_end: 326
        line_start: 325
        source_file: /src/frr/eigrpd/eigrp_packet.c
      type_or_value: '2'
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_send_reply
  - eigrp_reply_receive
  source_file: /src/frr/eigrpd/eigrp_reply.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_routemap.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_if_new
  - eigrp_if_delete_hook
  - eigrp_ifp_create
  - eigrp_ifp_up
  - eigrp_ifp_down
  - eigrp_ifp_destroy
  - eigrp_if_init
  - eigrp_del_if_params
  - eigrp_mtu_convert
  - eigrp_if_up
  - eigrp_if_down
  - eigrp_if_stream_set
  - eigrp_if_stream_unset
  - eigrp_if_is_passive
  - eigrp_if_set_multicast
  - eigrp_default_iftype
  - eigrp_if_free
  - eigrp_if_reset
  - eigrp_if_lookup_by_local_addr
  source_file: /src/frr/eigrpd/eigrp_interface.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_fsm.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - config_write_debug
  - eigrp_neighbor_packet_queue_sum
  - eigrp_ip_header_dump
  - eigrp_header_dump
  - eigrp_if_name_string
  - show_ip_eigrp_interface_header
  - show_ip_eigrp_interface_sub
  - show_ip_eigrp_interface_detail
  - show_ip_eigrp_neighbor_header
  - show_ip_eigrp_neighbor_sub
  - show_ip_eigrp_topology_header
  - show_ip_eigrp_prefix_descriptor
  - show_ip_eigrp_route_descriptor
  - eigrp_debug_init
  source_file: /src/frr/eigrpd/eigrp_dump.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IF_NAME
  - EIGRP_PACKET_MTU
  - EIGRP_FSM_EVENT_SCHEDULE
  source_file: /src/frr/eigrpd/eigrp_macros.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EIGRP_IF_STRING_MAXLEN
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/frr/eigrpd/eigrp_macros.h
      type_or_value: '40'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrpd.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EIGRP_MAJOR_VERSION
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/frr/eigrpd/eigrpd.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_MINOR_VERSION
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/frr/eigrpd/eigrpd.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRP_TLV_32B_VERSION
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/frr/eigrpd/eigrpd.h
      type_or_value: '1 '
    - item_type: preproc_def
      name: EIGRP_TLV_64B_VERSION
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/frr/eigrpd/eigrpd.h
      type_or_value: '2 '
    - item_type: preproc_def
      name: EIGRP_TLV_MTR_VERSION
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/frr/eigrpd/eigrpd.h
      type_or_value: '3 '
    - item_type: preproc_def
      name: EIGRP_TLV_SAF_VERSION
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/eigrpd/eigrpd.h
      type_or_value: '4 '
    - item_type: preproc_def
      name: EIGRP_MASTER_SHUTDOWN
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/frr/eigrpd/eigrpd.h
      type_or_value: '(1 << 0) '
    structs:
    - fields:
      - name: '*eigrp'
        type: struct list
      - name: '*master'
        type: struct event_loop
      - name: '*iflist'
        type: struct list
      - name: start_time
        type: time_t
      - name: options
        type: uint8_t
      item_type: struct
      name: eigrp_master
      pos:
        line_end: 49
        line_start: 32
        source_file: /src/frr/eigrpd/eigrpd.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_types.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: eigrp_bandwidth_t
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/frr/eigrpd/eigrp_types.h
      type: uint64_t
    - item_type: typedef
      name: eigrp_delay_t
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/frr/eigrpd/eigrp_types.h
      type: uint64_t
    - item_type: typedef
      name: eigrp_metric_t
      pos:
        line_end: 13
        line_start: 13
        source_file: /src/frr/eigrpd/eigrp_types.h
      type: uint64_t
    - item_type: typedef
      name: eigrp_scaled_t
      pos:
        line_end: 14
        line_start: 14
        source_file: /src/frr/eigrpd/eigrp_types.h
      type: uint32_t
    - item_type: typedef
      name: eigrp_system_metric_t
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/frr/eigrpd/eigrp_types.h
      type: uint32_t
    - item_type: typedef
      name: eigrp_system_delay_t
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/frr/eigrpd/eigrp_types.h
      type: uint32_t
    - item_type: typedef
      name: eigrp_system_bandwidth_t
      pos:
        line_end: 18
        line_start: 18
        source_file: /src/frr/eigrpd/eigrp_types.h
      type: uint32_t
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_packet.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_nbr_new
  - eigrp_nbr_add
  - eigrp_nbr_get
  - eigrp_nbr_lookup_by_addr
  - eigrp_nbr_lookup_by_addr_process
  - eigrp_nbr_hard_restart
  - eigrp_nbr_split_horizon_check
  source_file: /src/frr/eigrpd/eigrp_neighbor.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_vty_display_prefix_entry
  - eigrp_interface_helper
  - eigrp_neighbors_helper
  - eigrp_vty_show_init
  - eigrp_vty_init
  source_file: /src/frr/eigrpd/eigrp_vty.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_errors.h
  types:
    enum:
    - enumerators:
      - name: EC_EIGRP_PACKET
        value: EIGRP_FERR_START
      - name: EC_EIGRP_CONFIG
      item_type: enum
      name: eigrp_log_refs
      pos:
        line_end: 15
        line_start: 12
        source_file: /src/frr/eigrpd/eigrp_errors.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - packet_type2str
  - prefix_state2str
  - fsm_state2str
  - change2str
  - eigrp_get_fsm_event
  - eigrp_fsm_event
  - eigrp_fsm_event_nq_fcn
  - eigrp_fsm_event_q_fcn
  - eigrp_fsm_event_keep_state
  - eigrp_fsm_event_lr
  - eigrp_fsm_event_dinc
  - eigrp_fsm_event_lr_fcs
  - eigrp_fsm_event_lr_fcn
  - eigrp_fsm_event_qact
  source_file: /src/frr/eigrpd/eigrp_fsm.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: (*func)(struct eigrp_fsm_action_message *)
        type: int
      item_type: struct
      name: "NSM[EIGRP_FSM_STATE_MAX][EIGRP_FSM_EVENT_MAX] = {\n\t{\n\t\t// PASSIVE
        STATE\n\t\t{eigrp_fsm_event_nq_fcn},     /* Event 0 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 1 */\n\t\t{eigrp_fsm_event_q_fcn},      /* Event 2 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 3 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 4 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 5 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 6 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 7 */\n\t},\n\t{\n\t\t// Active 0 state\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 0 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 1 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 2 */\n\t\t{eigrp_fsm_event_lr_fcs},     /* Event 3 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 4 */\n\t\t{eigrp_fsm_event_qact},       /* Event 5 */\n\t\t{eigrp_fsm_event_lr_fcn},
        \    /* Event 6 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 7 */\n\t},\n\t{\n\t\t//
        Active 1 state\n\t\t{eigrp_fsm_event_keep_state}, /* Event 0 */\n\t\t{eigrp_fsm_event_lr},\t
        /* Event 1 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 2 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 3 */\n\t\t{eigrp_fsm_event_dinc},       /* Event 4 */\n\t\t{eigrp_fsm_event_qact},
        \      /* Event 5 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 6 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 7 */\n\t},\n\t{\n\t\t// Active 2 state\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 0 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 1 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 2 */\n\t\t{eigrp_fsm_event_lr_fcs},     /* Event 3 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 4 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 5 */\n\t\t{eigrp_fsm_event_lr_fcn},
        \    /* Event 6 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 7 */\n\t},\n\t{\n\t\t//
        Active 3 state\n\t\t{eigrp_fsm_event_keep_state}, /* Event 0 */\n\t\t{eigrp_fsm_event_lr},\t
        /* Event 1 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 2 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 3 */\n\t\t{eigrp_fsm_event_dinc},       /* Event 4 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 5 */\n\t\t{eigrp_fsm_event_keep_state}, /* Event 6 */\n\t\t{eigrp_fsm_event_keep_state},
        /* Event 7 */\n\t},\n}"
      pos:
        line_end: 101
        line_start: 99
        source_file: /src/frr/eigrpd/eigrp_fsm.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_snmp.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEFAULT_ROUTE_TYPE
  source_file: /src/frr/eigrpd/eigrp_const.h
  types:
    enum:
    - enumerators:
      - name: METRIC_DECREASE
      - name: METRIC_SAME
      - name: METRIC_INCREASE
      item_type: enum
      name: metric_change
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/frr/eigrpd/eigrp_const.h
    - enumerators:
      - name: EIGRP_FSM_STATE_PASSIVE
      - name: EIGRP_FSM_STATE_ACTIVE_3
      - name: EIGRP_FSM_STATE_ACTIVE_2
      - name: EIGRP_FSM_STATE_ACTIVE_1
      - name: EIGRP_FSM_STATE_ACTIVE_0
      item_type: enum
      name: eigrp_fsm_states
      pos:
        line_end: 125
        line_start: 119
        source_file: /src/frr/eigrpd/eigrp_const.h
    - enumerators:
      - name: EIGRP_FSM_EVENT_NQ_FCN
      - name: EIGRP_FSM_EVENT_LR_FCS
      - name: EIGRP_FSM_EVENT_Q_FCN
      - name: EIGRP_FSM_EVENT_LR
      - name: EIGRP_FSM_EVENT_DINC
      - name: EIGRP_FSM_EVENT_QACT
      - name: EIGRP_FSM_EVENT_LR_FCN
      - name: EIGRP_FSM_KEEP_STATE
      item_type: enum
      name: eigrp_fsm_events
      pos:
        line_end: 162
        line_start: 132
        source_file: /src/frr/eigrpd/eigrp_const.h
    preproc_defs:
    - item_type: preproc_def
      name: EIGRP_NEIGHBOR_DOWN
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0'
    - item_type: preproc_def
      name: EIGRP_NEIGHBOR_PENDING
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_NEIGHBOR_UP
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRP_NEIGHBOR_STATE_MAX
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '3'
    - item_type: preproc_def
      name: EIGRP_PACKET_RETRANS_TIME
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2 '
    - item_type: preproc_def
      name: EIGRP_PACKET_RETRANS_MAX
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '16 '
    - item_type: preproc_def
      name: PLAINTEXT_LENGTH
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '81'
    - item_type: preproc_def
      name: EIGRP_VARIANCE_DEFAULT
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_MAX_PATHS_DEFAULT
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '4'
    - item_type: preproc_def
      name: MSG_OK
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0'
    - item_type: preproc_def
      name: MSG_NG
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_HEADER_VERSION
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2'
    - item_type: preproc_def
      name: IPPROTO_EIGRPIGP
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '88'
    - item_type: preproc_def
      name: EIGRP_AUTH_MD5_TLV_SIZE
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '40'
    - item_type: preproc_def
      name: EIGRP_AUTH_SHA256_TLV_SIZE
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '56'
    - item_type: preproc_def
      name: EIGRP_MD5_BASIC_COMPUTE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '44'
    - item_type: preproc_def
      name: EIGRP_MD5_UPDATE_INIT_COMPUTE
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '40'
    - item_type: preproc_def
      name: EIGRP_AUTH_BASIC_HELLO_FLAG
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_AUTH_TID_HELLO_FLAG
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EIGRP_AUTH_UPDATE_INIT_FLAG
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EIGRP_AUTH_UPDATE_FLAG
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x08'
    - item_type: preproc_def
      name: EIGRP_AUTH_EXTRA_SALT_FLAG
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x10'
    - item_type: preproc_def
      name: EIGRP_NEXT_SEQUENCE_TLV_SIZE
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '8'
    - item_type: preproc_def
      name: EIGRP_IP_TTL
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_VTY_PORT
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2613'
    - item_type: preproc_def
      name: EIGRP_DEFAULT_CONFIG
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '"eigrpd.conf"'
    - item_type: preproc_def
      name: EIGRP_HELLO_INTERVAL_DEFAULT
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '5'
    - item_type: preproc_def
      name: EIGRP_HOLD_INTERVAL_DEFAULT
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '15'
    - item_type: preproc_def
      name: EIGRP_BANDWIDTH_DEFAULT
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '100000'
    - item_type: preproc_def
      name: EIGRP_DELAY_DEFAULT
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '10'
    - item_type: preproc_def
      name: EIGRP_RELIABILITY_DEFAULT
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '255'
    - item_type: preproc_def
      name: EIGRP_LOAD_DEFAULT
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_MULTICAST_ADDRESS
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0xe000000A '
    - item_type: preproc_def
      name: EIGRP_MAX_METRIC
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0xffffffffU    '
    - item_type: preproc_def
      name: DEFAULT_ROUTE
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: ZEBRA_ROUTE_MAX
    - item_type: preproc_def
      name: INTERFACE_DOWN_BY_ZEBRA
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: INTERFACE_DOWN_BY_VTY
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2'
    - item_type: preproc_def
      name: INTERFACE_DOWN_BY_FINAL
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '3'
    - item_type: preproc_def
      name: EIGRP_HELLO_NORMAL
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x00'
    - item_type: preproc_def
      name: EIGRP_HELLO_GRACEFUL_SHUTDOWN
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_HELLO_ADD_SEQUENCE
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EIGRP_HELLO_GRACEFUL_SHUTDOWN_NBR
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EIGRP_IFTYPE_NONE
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0'
    - item_type: preproc_def
      name: EIGRP_IFTYPE_POINTOPOINT
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_IFTYPE_BROADCAST
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRP_IFTYPE_LOOPBACK
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '3'
    - item_type: preproc_def
      name: EIGRP_IFTYPE_MAX
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '4'
    - item_type: preproc_def
      name: EIGRP_IF_ACTIVE
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0'
    - item_type: preproc_def
      name: EIGRP_IF_PASSIVE
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_TOPOLOGY_TYPE_CONNECTED
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: 0 // Connected network
    - item_type: preproc_def
      name: EIGRP_TOPOLOGY_TYPE_REMOTE
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: 1 // Remote internal network
    - item_type: preproc_def
      name: EIGRP_TOPOLOGY_TYPE_REMOTE_EXTERNAL
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: 2 // Remote external network
    - item_type: preproc_def
      name: EIGRP_ROUTE_DESCRIPTOR_SUCCESSOR_FLAG
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (1 << 0)
    - item_type: preproc_def
      name: EIGRP_ROUTE_DESCRIPTOR_FSUCCESSOR_FLAG
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (1 << 1)
    - item_type: preproc_def
      name: EIGRP_ROUTE_DESCRIPTOR_INTABLE_FLAG
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (1 << 2)
    - item_type: preproc_def
      name: EIGRP_ROUTE_DESCRIPTOR_EXTERNAL_FLAG
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (1 << 3)
    - item_type: preproc_def
      name: EIGRP_FSM_STATE_MAX
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '5'
    - item_type: preproc_def
      name: EIGRP_FSM_EVENT_MAX
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '16'
    - item_type: preproc_def
      name: EIGRP_FSM_NEED_UPDATE
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_FSM_NEED_QUERY
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2'
    - item_type: preproc_def
      name: NULL_PROTID
      pos:
        line_end: 168
        line_start: 167
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "0\t\t"
    - item_type: preproc_def
      name: IGRP_PROTID
      pos:
        line_end: 169
        line_start: 168
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "1\t\t"
    - item_type: preproc_def
      name: EIGRP_PROTID
      pos:
        line_end: 170
        line_start: 169
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "2\t\t"
    - item_type: preproc_def
      name: STATIC_PROTID
      pos:
        line_end: 171
        line_start: 170
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "3\t\t"
    - item_type: preproc_def
      name: RIP_PROTID
      pos:
        line_end: 172
        line_start: 171
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "4\t\t"
    - item_type: preproc_def
      name: HELLO_PROTID
      pos:
        line_end: 173
        line_start: 172
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "5\t\t"
    - item_type: preproc_def
      name: OSPF_PROTID
      pos:
        line_end: 174
        line_start: 173
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "6\t\t"
    - item_type: preproc_def
      name: ISIS_PROTID
      pos:
        line_end: 175
        line_start: 174
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "7\t\t"
    - item_type: preproc_def
      name: EGP_PROTID
      pos:
        line_end: 176
        line_start: 175
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "8\t\t"
    - item_type: preproc_def
      name: BGP_PROTID
      pos:
        line_end: 177
        line_start: 176
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "9\t\t"
    - item_type: preproc_def
      name: IDRP_PROTID
      pos:
        line_end: 178
        line_start: 177
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "10\t\t"
    - item_type: preproc_def
      name: CONN_PROTID
      pos:
        line_end: 179
        line_start: 178
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "11\t\t"
    - item_type: preproc_def
      name: EIGRP_K1_DEFAULT
      pos:
        line_end: 184
        line_start: 183
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "1\t\t//!< unweighed inverse bandwidth"
    - item_type: preproc_def
      name: EIGRP_K2_DEFAULT
      pos:
        line_end: 185
        line_start: 184
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "0\t\t//!< no loading term"
    - item_type: preproc_def
      name: EIGRP_K3_DEFAULT
      pos:
        line_end: 186
        line_start: 185
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "1\t\t//!< unweighted delay"
    - item_type: preproc_def
      name: EIGRP_K4_DEFAULT
      pos:
        line_end: 187
        line_start: 186
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "0\t\t//!< no reliability term"
    - item_type: preproc_def
      name: EIGRP_K5_DEFAULT
      pos:
        line_end: 188
        line_start: 187
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "0\t\t//!< no reliability term"
    - item_type: preproc_def
      name: EIGRP_K6_DEFAULT
      pos:
        line_end: 189
        line_start: 188
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: "0\t\t//!< do not add in extended metrics"
    - item_type: preproc_def
      name: EIGRP_HEADER_LEN
      pos:
        line_end: 194
        line_start: 193
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: 20U
    - item_type: preproc_def
      name: EIGRP_PACKET_MAX_LEN
      pos:
        line_end: 195
        line_start: 194
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '65535U   '
    - item_type: preproc_def
      name: EIGRP_TLV_HDR_LENGTH
      pos:
        line_end: 197
        line_start: 196
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '4'
    - item_type: preproc_def
      name: EIGRP_OPC_UPDATE
      pos:
        line_end: 202
        line_start: 201
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1       '
    - item_type: preproc_def
      name: EIGRP_OPC_REQUEST
      pos:
        line_end: 203
        line_start: 202
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2       '
    - item_type: preproc_def
      name: EIGRP_OPC_QUERY
      pos:
        line_end: 204
        line_start: 203
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '3       '
    - item_type: preproc_def
      name: EIGRP_OPC_REPLY
      pos:
        line_end: 205
        line_start: 204
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '4       '
    - item_type: preproc_def
      name: EIGRP_OPC_HELLO
      pos:
        line_end: 206
        line_start: 205
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '5       '
    - item_type: preproc_def
      name: EIGRP_OPC_IPXSAP
      pos:
        line_end: 207
        line_start: 206
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '6       '
    - item_type: preproc_def
      name: EIGRP_OPC_PROBE
      pos:
        line_end: 208
        line_start: 207
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '7       '
    - item_type: preproc_def
      name: EIGRP_OPC_ACK
      pos:
        line_end: 209
        line_start: 208
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '8       '
    - item_type: preproc_def
      name: EIGRP_OPC_SIAQUERY
      pos:
        line_end: 210
        line_start: 209
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '10      '
    - item_type: preproc_def
      name: EIGRP_OPC_SIAREPLY
      pos:
        line_end: 211
        line_start: 210
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '11      '
    - item_type: preproc_def
      name: EIGRP_TLV_RANGEMASK
      pos:
        line_end: 224
        line_start: 223
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0xfff0          '
    - item_type: preproc_def
      name: EIGRP_TLV_GENERAL
      pos:
        line_end: 225
        line_start: 224
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0000'
    - item_type: preproc_def
      name: EIGRP_TLV_IPv4
      pos:
        line_end: 232
        line_start: 231
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0100          '
    - item_type: preproc_def
      name: EIGRP_TLV_ATALK
      pos:
        line_end: 233
        line_start: 232
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0200          '
    - item_type: preproc_def
      name: EIGRP_TLV_IPX
      pos:
        line_end: 234
        line_start: 233
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0300          '
    - item_type: preproc_def
      name: EIGRP_TLV_IPv6
      pos:
        line_end: 235
        line_start: 234
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0400          '
    - item_type: preproc_def
      name: EIGRP_TLV_MP
      pos:
        line_end: 241
        line_start: 240
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0600          '
    - item_type: preproc_def
      name: EIGRP_TLV_PARAMETER
      pos:
        line_end: 247
        line_start: 246
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '(EIGRP_TLV_GENERAL | 0x0001)    '
    - item_type: preproc_def
      name: EIGRP_TLV_PARAMETER_LEN
      pos:
        line_end: 248
        line_start: 247
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (12U)
    - item_type: preproc_def
      name: EIGRP_TLV_AUTH
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '(EIGRP_TLV_GENERAL | 0x0002)    '
    - item_type: preproc_def
      name: EIGRP_TLV_SEQ
      pos:
        line_end: 250
        line_start: 249
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '(EIGRP_TLV_GENERAL | 0x0003)    '
    - item_type: preproc_def
      name: EIGRP_TLV_SEQ_BASE_LEN
      pos:
        line_end: 251
        line_start: 250
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (5U)
    - item_type: preproc_def
      name: EIGRP_TLV_SW_VERSION
      pos:
        line_end: 252
        line_start: 251
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '(EIGRP_TLV_GENERAL | 0x0004)    '
    - item_type: preproc_def
      name: EIGRP_TLV_SW_VERSION_LEN
      pos:
        line_end: 253
        line_start: 252
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (8U)
    - item_type: preproc_def
      name: EIGRP_TLV_NEXT_MCAST_SEQ
      pos:
        line_end: 254
        line_start: 253
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '(EIGRP_TLV_GENERAL | 0x0005)    '
    - item_type: preproc_def
      name: EIGRP_TLV_PEER_TERMINATION
      pos:
        line_end: 255
        line_start: 254
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '(EIGRP_TLV_GENERAL | 0x0007)    '
    - item_type: preproc_def
      name: EIGRP_TLV_PEER_TERMINATION_LEN
      pos:
        line_end: 256
        line_start: 255
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (9U)
    - item_type: preproc_def
      name: EIGRP_TLV_PEER_TIDLIST
      pos:
        line_end: 257
        line_start: 256
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '(EIGRP_TLV_GENERAL | 0x0008)    '
    - item_type: preproc_def
      name: EIGRP_TLV_PEER_MTRLIST
      pos:
        line_end: 261
        line_start: 260
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (EIGRP_TLV_GENERAL | 0x00f5)
    - item_type: preproc_def
      name: EIGRP_TLV_REQUEST
      pos:
        line_end: 266
        line_start: 265
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0001'
    - item_type: preproc_def
      name: EIGRP_TLV_INTERNAL
      pos:
        line_end: 267
        line_start: 266
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0002'
    - item_type: preproc_def
      name: EIGRP_TLV_EXTERNAL
      pos:
        line_end: 268
        line_start: 267
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0003'
    - item_type: preproc_def
      name: EIGRP_TLV_COMMUNITY
      pos:
        line_end: 269
        line_start: 268
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0004'
    - item_type: preproc_def
      name: EIGRP_TLV_TYPEMASK
      pos:
        line_end: 270
        line_start: 269
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x000f'
    - item_type: preproc_def
      name: EIGRP_TLV_IPv4_REQ
      pos:
        line_end: 272
        line_start: 271
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (EIGRP_TLV_IPv4 | EIGRP_TLV_REQUEST)
    - item_type: preproc_def
      name: EIGRP_TLV_IPv4_INT
      pos:
        line_end: 273
        line_start: 272
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (EIGRP_TLV_IPv4 | EIGRP_TLV_INTERNAL)
    - item_type: preproc_def
      name: EIGRP_TLV_IPv4_EXT
      pos:
        line_end: 274
        line_start: 273
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (EIGRP_TLV_IPv4 | EIGRP_TLV_EXTERNAL)
    - item_type: preproc_def
      name: EIGRP_TLV_IPv4_COM
      pos:
        line_end: 275
        line_start: 274
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (EIGRP_TLV_IPv4 | EIGRP_TLV_COMMUNITY)
    - item_type: preproc_def
      name: EIGRP_TLV_IPV4_SIZE_GRT_24_BIT
      pos:
        line_end: 277
        line_start: 276
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x001D'
    - item_type: preproc_def
      name: EIGRP_TLV_IPV4_SIZE_GRT_16_BIT
      pos:
        line_end: 278
        line_start: 277
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x001C'
    - item_type: preproc_def
      name: EIGRP_TLV_IPV4_SIZE_GRT_8_BIT
      pos:
        line_end: 279
        line_start: 278
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x001B'
    - item_type: preproc_def
      name: EIGRP_TLV_IPV4_SIZE_GRT_0_BIT
      pos:
        line_end: 280
        line_start: 279
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x001A'
    - item_type: preproc_def
      name: EIGRP_TLV_MAX_IPV4_BYTE
      pos:
        line_end: 281
        line_start: 280
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: EIGRP_TLV_IPV4_SIZE_GRT_24_BIT
    - item_type: preproc_def
      name: EIGRP_TLV_MAX_IPv4
      pos:
        line_end: 284
        line_start: 283
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '25'
    - item_type: preproc_def
      name: EIGRP_OPAQUE_EXT
      pos:
        line_end: 290
        line_start: 289
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x01    '
    - item_type: preproc_def
      name: EIGRP_OPAQUE_CD
      pos:
        line_end: 291
        line_start: 290
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x02    '
    - item_type: preproc_def
      name: EIGRP_AF_IPv4
      pos:
        line_end: 299
        line_start: 298
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1       '
    - item_type: preproc_def
      name: EIGRP_AF_IPv6
      pos:
        line_end: 300
        line_start: 299
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2       '
    - item_type: preproc_def
      name: EIGRP_AF_IPX
      pos:
        line_end: 301
        line_start: 300
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '11      '
    - item_type: preproc_def
      name: EIGRP_AF_ATALK
      pos:
        line_end: 302
        line_start: 301
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '12      '
    - item_type: preproc_def
      name: EIGRP_SF_COMMON
      pos:
        line_end: 303
        line_start: 302
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '16384   '
    - item_type: preproc_def
      name: EIGRP_SF_IPv4
      pos:
        line_end: 304
        line_start: 303
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '16385   '
    - item_type: preproc_def
      name: EIGRP_SF_IPv6
      pos:
        line_end: 305
        line_start: 304
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '16386   '
    - item_type: preproc_def
      name: EIGRP_AUTH_TYPE_NONE
      pos:
        line_end: 310
        line_start: 309
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0'
    - item_type: preproc_def
      name: EIGRP_AUTH_TYPE_TEXT
      pos:
        line_end: 311
        line_start: 310
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_AUTH_TYPE_MD5
      pos:
        line_end: 312
        line_start: 311
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRP_AUTH_TYPE_MD5_LEN
      pos:
        line_end: 313
        line_start: 312
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '16'
    - item_type: preproc_def
      name: EIGRP_AUTH_TYPE_SHA256
      pos:
        line_end: 314
        line_start: 313
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '3'
    - item_type: preproc_def
      name: EIGRP_AUTH_TYPE_SHA256_LEN
      pos:
        line_end: 315
        line_start: 314
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '32'
    - item_type: preproc_def
      name: EIGRP_OPAQUE_SRCWD
      pos:
        line_end: 320
        line_start: 319
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x01    '
    - item_type: preproc_def
      name: EIGRP_OPAQUE_ACTIVE
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x04    '
    - item_type: preproc_def
      name: EIGRP_OPAQUE_REPL
      pos:
        line_end: 322
        line_start: 321
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x08    '
    - item_type: preproc_def
      name: EIGRP_PRIV_DEFAULT
      pos:
        line_end: 327
        line_start: 326
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x00    '
    - item_type: preproc_def
      name: EIGRP_PRIV_LOW
      pos:
        line_end: 328
        line_start: 327
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_PRIV_MEDIUM
      pos:
        line_end: 329
        line_start: 328
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EIGRP_PRIV_HIGH
      pos:
        line_end: 330
        line_start: 329
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x07'
    - item_type: preproc_def
      name: EIGRP_INIT_FLAG
      pos:
        line_end: 337
        line_start: 336
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_CR_FLAG
      pos:
        line_end: 347
        line_start: 346
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EIGRP_RS_FLAG
      pos:
        line_end: 356
        line_start: 355
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EIGRP_EOT_FLAG
      pos:
        line_end: 365
        line_start: 364
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x08'
    - item_type: preproc_def
      name: EIGRP_VRID_MASK
      pos:
        line_end: 391
        line_start: 390
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8001'
    - item_type: preproc_def
      name: EIGRP_VRID_AF_BASE
      pos:
        line_end: 392
        line_start: 391
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0000'
    - item_type: preproc_def
      name: EIGRP_VRID_MCAST_BASE
      pos:
        line_end: 393
        line_start: 392
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0001'
    - item_type: preproc_def
      name: EIGRP_VRID_SF_BASE
      pos:
        line_end: 394
        line_start: 393
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: EIGRP_ATTR_HDRLEN
      pos:
        line_end: 397
        line_start: 396
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (2)
    - item_type: preproc_def
      name: EIGRP_ATTR_MAXDATA
      pos:
        line_end: 398
        line_start: 397
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: (512)
    - item_type: preproc_def
      name: EIGRP_ATTR_NOOP
      pos:
        line_end: 400
        line_start: 399
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0       '
    - item_type: preproc_def
      name: EIGRP_ATTR_SCALED
      pos:
        line_end: 401
        line_start: 400
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1       '
    - item_type: preproc_def
      name: EIGRP_ATTR_TAG
      pos:
        line_end: 402
        line_start: 401
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2       '
    - item_type: preproc_def
      name: EIGRP_ATTR_COMM
      pos:
        line_end: 403
        line_start: 402
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '3       '
    - item_type: preproc_def
      name: EIGRP_ATTR_JITTER
      pos:
        line_end: 404
        line_start: 403
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '4       '
    - item_type: preproc_def
      name: EIGRP_ATTR_QENERGY
      pos:
        line_end: 405
        line_start: 404
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '5       '
    - item_type: preproc_def
      name: EIGRP_ATTR_ENERGY
      pos:
        line_end: 406
        line_start: 405
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '6       '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_SOO_ASFMT
      pos:
        line_end: 411
        line_start: 410
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0003 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_SOO_ADRFMT
      pos:
        line_end: 412
        line_start: 411
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x0103 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_EIGRP
      pos:
        line_end: 417
        line_start: 416
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8800 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_DAD
      pos:
        line_end: 418
        line_start: 417
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8801 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_VRHB
      pos:
        line_end: 419
        line_start: 418
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8802 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_SRLM
      pos:
        line_end: 420
        line_start: 419
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8803 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_SAR
      pos:
        line_end: 421
        line_start: 420
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8804 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_RPM
      pos:
        line_end: 422
        line_start: 421
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8805 '
    - item_type: preproc_def
      name: EIGRP_EXTCOMM_VRR
      pos:
        line_end: 423
        line_start: 422
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x8806 '
    - item_type: preproc_def
      name: EIGRP_FILTER_IN
      pos:
        line_end: 428
        line_start: 427
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0'
    - item_type: preproc_def
      name: EIGRP_FILTER_OUT
      pos:
        line_end: 429
        line_start: 428
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EIGRP_FILTER_MAX
      pos:
        line_end: 430
        line_start: 429
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EIGRP_HSROLE_DEFAULT
      pos:
        line_end: 435
        line_start: 434
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: EIGRP_HSROLE_SPOKE
    - item_type: preproc_def
      name: EIGRP_HSROLE_HUB
      pos:
        line_end: 436
        line_start: 435
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EIGRP_HSROLE_SPOKE
      pos:
        line_end: 437
        line_start: 436
        source_file: /src/frr/eigrpd/eigrp_const.h
      type_or_value: '0x02'
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_query_send_all
  source_file: /src/frr/eigrpd/eigrp_query.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - eigrp_siaquery_receive
  - eigrp_send_siaquery
  source_file: /src/frr/eigrpd/eigrp_siaquery.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - redistribute_get_metrics
  - eigrp_interface_lookup
  - eigrpd_instance_router_id_destroy
  - eigrpd_instance_passive_interface_create
  - eigrpd_instance_passive_interface_destroy
  - eigrpd_instance_active_time_modify
  - eigrpd_instance_variance_modify
  - eigrpd_instance_variance_destroy
  - eigrpd_instance_maximum_paths_modify
  - eigrpd_instance_maximum_paths_destroy
  - eigrpd_instance_metric_weights_K1_modify
  - eigrpd_instance_metric_weights_K1_destroy
  - eigrpd_instance_metric_weights_K2_modify
  - eigrpd_instance_metric_weights_K2_destroy
  - eigrpd_instance_metric_weights_K3_modify
  - eigrpd_instance_metric_weights_K3_destroy
  - eigrpd_instance_metric_weights_K4_modify
  - eigrpd_instance_metric_weights_K4_destroy
  - eigrpd_instance_metric_weights_K5_modify
  - eigrpd_instance_metric_weights_K5_destroy
  - eigrpd_instance_metric_weights_K6_modify
  - eigrpd_instance_metric_weights_K6_destroy
  - eigrpd_instance_network_create
  - eigrpd_instance_network_destroy
  - eigrpd_instance_neighbor_create
  - eigrpd_instance_neighbor_destroy
  - eigrpd_instance_redistribute_create
  - eigrpd_instance_redistribute_destroy
  - eigrpd_instance_redistribute_route_map_modify
  - eigrpd_instance_redistribute_route_map_destroy
  - eigrpd_instance_redistribute_metrics_bandwidth_modify
  - eigrpd_instance_redistribute_metrics_bandwidth_destroy
  - eigrpd_instance_redistribute_metrics_delay_modify
  - eigrpd_instance_redistribute_metrics_delay_destroy
  - eigrpd_instance_redistribute_metrics_reliability_modify
  - eigrpd_instance_redistribute_metrics_reliability_destroy
  - eigrpd_instance_redistribute_metrics_load_modify
  - eigrpd_instance_redistribute_metrics_load_destroy
  - eigrpd_instance_redistribute_metrics_mtu_modify
  - eigrpd_instance_redistribute_metrics_mtu_destroy
  - lib_interface_eigrp_delay_modify
  - lib_interface_eigrp_bandwidth_modify
  - lib_interface_eigrp_hello_interval_modify
  - lib_interface_eigrp_hold_time_modify
  - lib_interface_eigrp_split_horizon_modify
  - lib_interface_eigrp_instance_create
  - lib_interface_eigrp_instance_destroy
  - lib_interface_eigrp_instance_summarize_addresses_create
  - lib_interface_eigrp_instance_summarize_addresses_destroy
  - lib_interface_eigrp_instance_authentication_modify
  - lib_interface_eigrp_instance_keychain_modify
  - lib_interface_eigrp_instance_keychain_destroy
  source_file: /src/frr/eigrpd/eigrp_northbound.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/eigrpd/eigrp_pkt_tlv2.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/frr/tools/frr-llvm-debuginfo.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - replace_hyphens_by_underscores
  - generate_callback_name
  source_file: /src/frr/tools/gen_northbound_callbacks.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REALLY_NEED_PLAIN_GETOPT
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/frr/tools/gen_northbound_callbacks.c
      type_or_value: '1'
    structs:
    - fields:
      - name: operation
        type: int
      - name: optional
        type: bool
      - name: return_type[32]
        type: char
      - name: return_value[32]
        type: char
      - name: arguments[128]
        type: char
      item_type: struct
      name: nb_callback_info
      pos:
        line_end: 30
        line_start: 24
        source_file: /src/frr/tools/gen_northbound_callbacks.c
    typedefs: []
    union: []
- function_names:
  - DEFUN
  - DEFUN_HIDDEN
  - DEFUN_NOSH
  - DEFPY
  - DEFPY_HIDDEN
  - DEFPY_NOSH
  - ALL_LIST_ELEMENTS_RO
  - ALL_LIST_ELEMENTS
  - LIST_ENTRY
  - STREAM_GETC
  - STREAM_GETW
  - STREAM_GETL
  - STREAM_GETF
  - STREAM_GETQ
  - STREAM_GET
  - AF_FOREACH
  - FOREACH_AFI_SAFI
  - FOREACH_SAFI
  - frr_with_privs
  - frr_with_mutex
  - ALL_LSDB_TYPED_ADVRTR
  - ALL_LSDB_TYPED
  - ALL_LSDB
  source_file: /src/frr/tools/cocci.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ENABLE_BGP_VNC
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/frr/tools/cocci.h
      type_or_value: '1'
    - item_type: preproc_def
      name: QOBJ_FIELDS
      pos:
        line_end: 124
        line_start: 123
        source_file: /src/frr/tools/cocci.h
      type_or_value: struct qobj_node qobj_node;
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/frr/tools/permutations.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: USAGE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/frr/tools/permutations.c
      type_or_value: '"usage: permutations <cmdstr>"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dbginfo_load
  - dbginfo_struct_member
  source_file: /src/frr/tools/frr-llvm-debuginfo.cpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: finder
        type: llvm::DebugInfoFinder
      - name: tab
        type: std::map<std::string, llvm::DICompositeType *>
      item_type: struct
      name: dbginfo
      pos:
        line_end: 23
        line_start: 20
        source_file: /src/frr/tools/frr-llvm-debuginfo.cpp
    typedefs: []
    union: []
- function_names:
  - dbgloc_add
  - js_get_or_make
  - try_struct_fptr
  - walk_const_fptrs
  - is_thread_sched
  - _check_val
  - check_val
  - get_string
  - handle_yang_module
  - handle_daemoninfo
  - process_call
  - process_fn
  - help
  - main
  source_file: /src/frr/tools/frr-llvm-cg.c
  types:
    enum:
    - enumerators:
      - name: FN_GENERIC
        value: '0'
      - name: FN_NONAME
      - name: FN_INSTALL_ELEMENT
      - name: FN_THREAD_ADD
      item_type: enum
      name: called_fn
      pos:
        line_end: 139
        line_start: 134
        source_file: /src/frr/tools/frr-llvm-cg.c
    preproc_defs:
    - item_type: preproc_def
      name: thread_prefix
      pos:
        line_end: 272
        line_start: 271
        source_file: /src/frr/tools/frr-llvm-cg.c
      type_or_value: '"_"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - generate_yang_deviation
  - main
  source_file: /src/frr/tools/gen_yang_deviations.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REALLY_NEED_PLAIN_GETOPT
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/frr/tools/gen_yang_deviations.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - tvselector_sec
  - tvselector_usec
  - TVCALC_ELEM
  - TVCALC
  - fatal
  - xmalloc
  - xgettimeofday
  - push
  - clear
  - next_dirname
  - add_namespace
  - set_namespaces
  - set_namespaces
  - do_help
  - badusage
  - parse_integer
  - parse_signal
  - parse_schedule_item
  - parse_schedule
  - parse_options
  - pid_is_exec
  - pid_is_user
  - pid_is_cmd
  - check
  - do_pidfile
  - do_procinit
  - do_findprocs
  - do_stop
  - set_what_stop
  - run_stop_schedule
  - main
  source_file: /src/frr/tools/start-stop-daemon.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: VERSION
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/frr/tools/start-stop-daemon.c
      type_or_value: '"1.9.18"'
    - item_type: preproc_def
      name: MIN_POLL_INTERVAL
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/frr/tools/start-stop-daemon.c
      type_or_value: '20000 '
    structs:
    - fields:
      - name: '*next'
        type: struct pid_list
      - name: pid
        type: pid_t
      item_type: struct
      name: pid_list
      pos:
        line_end: 98
        line_start: 95
        source_file: /src/frr/tools/start-stop-daemon.c
    - fields:
      - name: type
        type: enum { sched_timeout, sched_signal, sched_goto, sched_forever }
      - name: value
        type: int
      item_type: struct
      name: schedule_item
      pos:
        line_end: 107
        line_start: 103
        source_file: /src/frr/tools/start-stop-daemon.c
    - fields:
      - name: (namespace)
        type: LIST_ENTRY
      - name: '*path'
        type: char
      - name: nstype
        type: int
      item_type: struct
      name: namespace
      pos:
        line_end: 119
        line_start: 114
        source_file: /src/frr/tools/start-stop-daemon.c
    - fields:
      - name: '*name'
        type: char
      - name: signal
        type: int
      item_type: struct
      name: sigpair
      pos:
        line_end: 355
        line_start: 352
        source_file: /src/frr/tools/start-stop-daemon.c
    typedefs:
    - item_type: typedef
      name: tvselector(const struct timeval *)
      pos:
        line_end: 157
        line_start: 157
        source_file: /src/frr/tools/start-stop-daemon.c
      type: long
    union: []
- function_names: []
  source_file: /src/frr/tools/gcc-plugins/frr-format.h
  types:
    enum:
    - enumerators:
      - name: FMT_LEN_none
      - name: FMT_LEN_h
      - name: FMT_LEN_ll
      - name: FMT_LEN_hh
      - name: FMT_LEN_l
      - name: FMT_LEN_L
      - name: FMT_LEN_z
      - name: FMT_LEN_t
      - name: FMT_LEN_j
      - name: FMT_LEN_H
      - name: FMT_LEN_D
      - name: FMT_LEN_MAX
      - name: FMT_LEN_DD
      item_type: enum
      name: format_lengths
      pos:
        line_end: 25
        line_start: 10
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - enumerators:
      - name: STD_C89
      - name: STD_EXT
      - name: STD_C94
      - name: STD_C9L
      - name: STD_C99
      item_type: enum
      name: format_std_version
      pos:
        line_end: 36
        line_start: 29
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    preproc_defs:
    - item_type: preproc_def
      name: NOARGUMENTS
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN,
        BADLEN }'
    - item_type: preproc_def
      name: BADLEN
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, NULL }'
    - item_type: preproc_def
      name: NOLENGTHS
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN,
        BADLEN }'
    - item_type: preproc_def
      name: T_I
      pos:
        line_end: 274
        line_start: 273
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&integer_type_node'
    - item_type: preproc_def
      name: T89_I
      pos:
        line_end: 275
        line_start: 274
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_I }'
    - item_type: preproc_def
      name: T_L
      pos:
        line_end: 276
        line_start: 275
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&long_integer_type_node'
    - item_type: preproc_def
      name: T89_L
      pos:
        line_end: 277
        line_start: 276
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_L }'
    - item_type: preproc_def
      name: T_LL
      pos:
        line_end: 278
        line_start: 277
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&long_long_integer_type_node'
    - item_type: preproc_def
      name: T9L_LL
      pos:
        line_end: 279
        line_start: 278
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C9L, NULL, T_LL }'
    - item_type: preproc_def
      name: TEX_LL
      pos:
        line_end: 280
        line_start: 279
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, NULL, T_LL }'
    - item_type: preproc_def
      name: T_U64
      pos:
        line_end: 281
        line_start: 280
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&local_uint64_t_node'
    - item_type: preproc_def
      name: TEX_U64
      pos:
        line_end: 282
        line_start: 281
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, "uint64_t", T_U64 }'
    - item_type: preproc_def
      name: T_S64
      pos:
        line_end: 283
        line_start: 282
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&local_int64_t_node'
    - item_type: preproc_def
      name: TEX_S64
      pos:
        line_end: 284
        line_start: 283
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, "int64_t", T_S64 }'
    - item_type: preproc_def
      name: T_S
      pos:
        line_end: 285
        line_start: 284
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&short_integer_type_node'
    - item_type: preproc_def
      name: T89_S
      pos:
        line_end: 286
        line_start: 285
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_S }'
    - item_type: preproc_def
      name: T_UI
      pos:
        line_end: 287
        line_start: 286
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&unsigned_type_node'
    - item_type: preproc_def
      name: T89_UI
      pos:
        line_end: 288
        line_start: 287
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_UI }'
    - item_type: preproc_def
      name: T_UL
      pos:
        line_end: 289
        line_start: 288
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&long_unsigned_type_node'
    - item_type: preproc_def
      name: T89_UL
      pos:
        line_end: 290
        line_start: 289
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_UL }'
    - item_type: preproc_def
      name: T_ULL
      pos:
        line_end: 291
        line_start: 290
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&long_long_unsigned_type_node'
    - item_type: preproc_def
      name: T9L_ULL
      pos:
        line_end: 292
        line_start: 291
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C9L, NULL, T_ULL }'
    - item_type: preproc_def
      name: TEX_ULL
      pos:
        line_end: 293
        line_start: 292
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, NULL, T_ULL }'
    - item_type: preproc_def
      name: T_US
      pos:
        line_end: 294
        line_start: 293
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&short_unsigned_type_node'
    - item_type: preproc_def
      name: T89_US
      pos:
        line_end: 295
        line_start: 294
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_US }'
    - item_type: preproc_def
      name: T_F
      pos:
        line_end: 296
        line_start: 295
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&float_type_node'
    - item_type: preproc_def
      name: T89_F
      pos:
        line_end: 297
        line_start: 296
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_F }'
    - item_type: preproc_def
      name: T99_F
      pos:
        line_end: 298
        line_start: 297
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, NULL, T_F }'
    - item_type: preproc_def
      name: T_D
      pos:
        line_end: 299
        line_start: 298
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&double_type_node'
    - item_type: preproc_def
      name: T89_D
      pos:
        line_end: 300
        line_start: 299
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_D }'
    - item_type: preproc_def
      name: T99_D
      pos:
        line_end: 301
        line_start: 300
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, NULL, T_D }'
    - item_type: preproc_def
      name: T_LD
      pos:
        line_end: 302
        line_start: 301
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&long_double_type_node'
    - item_type: preproc_def
      name: T89_LD
      pos:
        line_end: 303
        line_start: 302
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_LD }'
    - item_type: preproc_def
      name: T99_LD
      pos:
        line_end: 304
        line_start: 303
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, NULL, T_LD }'
    - item_type: preproc_def
      name: T_C
      pos:
        line_end: 305
        line_start: 304
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&char_type_node'
    - item_type: preproc_def
      name: T89_C
      pos:
        line_end: 306
        line_start: 305
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_C }'
    - item_type: preproc_def
      name: T_SC
      pos:
        line_end: 307
        line_start: 306
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&signed_char_type_node'
    - item_type: preproc_def
      name: T99_SC
      pos:
        line_end: 308
        line_start: 307
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, NULL, T_SC }'
    - item_type: preproc_def
      name: T_UC
      pos:
        line_end: 309
        line_start: 308
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&unsigned_char_type_node'
    - item_type: preproc_def
      name: T99_UC
      pos:
        line_end: 310
        line_start: 309
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, NULL, T_UC }'
    - item_type: preproc_def
      name: T_V
      pos:
        line_end: 311
        line_start: 310
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&void_type_node'
    - item_type: preproc_def
      name: T89_G
      pos:
        line_end: 312
        line_start: 311
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, &local_gimple_ptr_node }'
    - item_type: preproc_def
      name: T89_T
      pos:
        line_end: 313
        line_start: 312
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, &local_tree_type_node }'
    - item_type: preproc_def
      name: T89_V
      pos:
        line_end: 314
        line_start: 313
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C89, NULL, T_V }'
    - item_type: preproc_def
      name: T_W
      pos:
        line_end: 315
        line_start: 314
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&wchar_type_node'
    - item_type: preproc_def
      name: T94_W
      pos:
        line_end: 316
        line_start: 315
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C94, "wchar_t", T_W }'
    - item_type: preproc_def
      name: TEX_W
      pos:
        line_end: 317
        line_start: 316
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, "wchar_t", T_W }'
    - item_type: preproc_def
      name: T_WI
      pos:
        line_end: 318
        line_start: 317
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&wint_type_node'
    - item_type: preproc_def
      name: T94_WI
      pos:
        line_end: 319
        line_start: 318
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C94, "wint_t", T_WI }'
    - item_type: preproc_def
      name: TEX_WI
      pos:
        line_end: 320
        line_start: 319
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, "wint_t", T_WI }'
    - item_type: preproc_def
      name: T_ST
      pos:
        line_end: 321
        line_start: 320
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&local_size_t_node'
    - item_type: preproc_def
      name: T99_ST
      pos:
        line_end: 322
        line_start: 321
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, "size_t", T_ST }'
    - item_type: preproc_def
      name: T_SST
      pos:
        line_end: 323
        line_start: 322
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&local_ssize_t_node'
    - item_type: preproc_def
      name: T99_SST
      pos:
        line_end: 324
        line_start: 323
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, "ssize_t", T_SST }'
    - item_type: preproc_def
      name: T_PD
      pos:
        line_end: 325
        line_start: 324
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&ptrdiff_type_node'
    - item_type: preproc_def
      name: T99_PD
      pos:
        line_end: 326
        line_start: 325
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, "ptrdiff_t", T_PD }'
    - item_type: preproc_def
      name: T_UPD
      pos:
        line_end: 327
        line_start: 326
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&unsigned_ptrdiff_type_node'
    - item_type: preproc_def
      name: T99_UPD
      pos:
        line_end: 328
        line_start: 327
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, "unsigned ptrdiff_t", T_UPD }'
    - item_type: preproc_def
      name: T_IM
      pos:
        line_end: 329
        line_start: 328
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&intmax_type_node'
    - item_type: preproc_def
      name: T99_IM
      pos:
        line_end: 330
        line_start: 329
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, "intmax_t", T_IM }'
    - item_type: preproc_def
      name: T_UIM
      pos:
        line_end: 331
        line_start: 330
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&uintmax_type_node'
    - item_type: preproc_def
      name: T99_UIM
      pos:
        line_end: 332
        line_start: 331
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_C99, "uintmax_t", T_UIM }'
    - item_type: preproc_def
      name: T_D32
      pos:
        line_end: 333
        line_start: 332
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&dfloat32_type_node'
    - item_type: preproc_def
      name: TEX_D32
      pos:
        line_end: 334
        line_start: 333
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, "_Decimal32", T_D32 }'
    - item_type: preproc_def
      name: T_D64
      pos:
        line_end: 335
        line_start: 334
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&dfloat64_type_node'
    - item_type: preproc_def
      name: TEX_D64
      pos:
        line_end: 336
        line_start: 335
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, "_Decimal64", T_D64 }'
    - item_type: preproc_def
      name: T_D128
      pos:
        line_end: 337
        line_start: 336
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '&dfloat128_type_node'
    - item_type: preproc_def
      name: TEX_D128
      pos:
        line_end: 338
        line_start: 337
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
      type_or_value: '{ STD_EXT, "_Decimal128", T_D128 }'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: index
        type: enum format_lengths
      - name: std
        type: enum format_std_version
      - name: '*double_name'
        type: char
      - name: double_index
        type: enum format_lengths
      - name: double_std
        type: enum format_std_version
      - name: scalar_identity_flag
        type: int
      item_type: struct
      name: format_length_info
      pos:
        line_end: 90
        line_start: 72
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - fields:
      - name: '*suffix'
        type: char
      - name: type_code
        type: tree_code
      - name: ptrlevel
        type: int
      - name: t_const
        type: bool
      - name: t_unsigned
        type: bool
      - name: t_signed
        type: bool
      - name: warned
        type: bool
      - name: '*type_str'
        type: char
      - name: (())
        type: GTY
      - name: type
        type: tree
      - name: origin_loc
        type: location_t
      item_type: struct
      name: kernel_ext_fmt
      pos:
        line_end: 109
        line_start: 93
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - fields:
      - name: std
        type: enum format_std_version
      - name: '*name'
        type: char
      - name: '*type'
        type: tree
      item_type: struct
      name: format_type_detail
      pos:
        line_end: 125
        line_start: 114
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - fields:
      - name: '*format_chars'
        type: char
      - name: pointer_count
        type: int
      - name: std
        type: enum format_std_version
      - name: types[FMT_LEN_MAX]
        type: format_type_detail
      - name: '*flag_chars'
        type: char
      - name: '*flags2'
        type: char
      - name: '*chain'
        type: struct format_char_info
      - name: '*kernel_ext'
        type: struct kernel_ext_fmt
      item_type: struct
      name: format_char_info
      pos:
        line_end: 176
        line_start: 136
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - fields:
      - name: flag_char
        type: int
      - name: predicate
        type: int
      - name: skip_next_char
        type: int
      - name: quoting
        type: bool
      - name: '*name'
        type: char
      - name: '*long_name'
        type: char
      - name: std
        type: enum format_std_version
      item_type: struct
      name: format_flag_spec
      pos:
        line_end: 206
        line_start: 180
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - fields:
      - name: flag_char1
        type: int
      - name: flag_char2
        type: int
      - name: ignored
        type: int
      - name: predicate
        type: int
      item_type: struct
      name: format_flag_pair
      pos:
        line_end: 224
        line_start: 211
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - fields:
      - name: '*name'
        type: char
      - name: '*length_char_specs'
        type: format_length_info
      - name: '*conversion_specs'
        type: format_char_info
      - name: '*flag_chars'
        type: char
      - name: '*modifier_chars'
        type: char
      - name: '*flag_specs'
        type: format_flag_spec
      - name: '*bad_flag_pairs'
        type: format_flag_pair
      - name: flags
        type: int
      - name: width_char
        type: int
      - name: left_precision_char
        type: int
      - name: precision_char
        type: int
      - name: suppression_char
        type: int
      - name: length_code_char
        type: int
      - name: alloc_char
        type: int
      - name: '*width_type'
        type: tree
      - name: '*precision_type'
        type: tree
      item_type: struct
      name: format_kind_info
      pos:
        line_end: 271
        line_start: 228
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    - fields:
      - name: '*named_attr_src'
        type: char
      - name: '*named_attr_dst'
        type: char
      item_type: struct
      name: target_ovr_attr
      pos:
        line_end: 349
        line_start: 343
        source_file: /src/frr/tools/gcc-plugins/frr-format.h
    typedefs: []
    union: []
- function_names:
  - test
  source_file: /src/frr/tools/gcc-plugins/format-test.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: x
        type: int
      item_type: struct
      name: other
      pos:
        line_end: 15
        line_start: 13
        source_file: /src/frr/tools/gcc-plugins/format-test.c
    typedefs:
    - item_type: typedef
      name: mytype
      pos:
        line_end: 6
        line_start: 6
        source_file: /src/frr/tools/gcc-plugins/format-test.c
      type: unsigned long
    - item_type: typedef
      name: mysize
      pos:
        line_end: 7
        line_start: 7
        source_file: /src/frr/tools/gcc-plugins/format-test.c
      type: size_t
    - item_type: typedef
      name: not_in_addr_t
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/frr/tools/gcc-plugins/format-test.c
      type: unsigned int
    - item_type: typedef
      name: yes_in_addr_t
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/frr/tools/gcc-plugins/format-test.c
      type: in_addr_t
    - item_type: typedef
      name: in_addr_s
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/frr/tools/gcc-plugins/format-test.c
      type: in_addr
    union: []
- function_names:
  - format_warning_at_char
  - valid_stringptr_type_p
  - handle_frr_format_arg_attribute
  - check_format_string
  - FOREACH_FUNCTION_ARGS
  - get_constant
  - decode_format_attr
  - C_STD_NAME
  - ADJ_STD
  - format_name
  - format_flags
  - decode_format_type
  - check_function_format
  - init_dollar_format_checking
  - maybe_read_dollar_number
  - avoid_dollar_number
  - finish_dollar_format_checking
  - get_flag_spec
  - check_format_info
  - check_format_arg
  - length_modifier
  - length_modifier
  - flag_chars_t::flag_chars_t
  - flag_chars_t::has_char_p
  - flag_chars_t::add_char
  - flag_chars_t::validate
  - flag_chars_t::get_alloc_flag
  - flag_chars_t::assignment_suppression_p
  - argument_parser::argument_parser
  - argument_parser::read_any_dollar
  - argument_parser::read_format_flags
  - argument_parser::read_any_format_width
  - argument_parser::read_any_format_left_precision
  - argument_parser::read_any_format_precision
  - argument_parser::handle_alloc_chars
  - argument_parser::read_any_length_modifier
  - argument_parser::read_any_other_modifier
  - argument_parser::find_format_char_info
  - argument_parser::validate_flag_pairs
  - argument_parser::give_y2k_warnings
  - argument_parser::parse_any_scan_set
  - argument_parser::handle_conversions
  - argument_parser::check_argument_type
  - check_format_info_main
  - type_normalize
  - decl_deref
  - check_format_types
  - check_kef_type
  - deref_n_times
  - get_modifier_for_format_len
  - selftest::test_get_modifier_for_format_len
  - selftest::test_get_modifier_for_format_len
  - matching_type_p
  - get_format_for_type_1
  - get_format_for_type
  - get_corrected_substring
  - indirection_suffix::indirection_suffix
  - indirection_suffix::get_buffer_size
  - indirection_suffix::fill_buffer
  - frr_range_label_for_type_mismatch::frr_range_label_for_type_mismatch
  - print_type
  - label_borrow
  - label_take
  - label_borrow
  - label_take
  - frr_range_label_for_type_mismatch::get_text
  - range_label_for_format_type_mismatch::range_label_for_format_type_mismatch
  - range_label_for_format_type_mismatch::OVERRIDE
  - format_type_warning
  - format_warning_at_substring
  - format_warning_at_substring
  - find_char_info_specifier_index
  - find_length_info_modifier_index
  - convert_format_name_to_system_name
  - handle_frr_format_attribute
  - selftest::get_info
  - selftest::assert_format_for_type_streq
  - ASSERT_FORMAT_FOR_TYPE_STREQ
  - selftest::test_get_format_for_type_printf
  - selftest::test_get_format_for_type_scanf
  - selftest::test_type_mismatch_range_labels
  - selftest::c_format_c_tests
  - selftest::get_info
  - selftest::assert_format_for_type_streq
  - ASSERT_FORMAT_FOR_TYPE_STREQ
  - selftest::test_get_format_for_type_printf
  - selftest::test_get_format_for_type_scanf
  - selftest::test_type_mismatch_range_labels
  - selftest::c_format_c_tests
  - register_attributes
  - cb_walk_tree_fn
  - setup_type
  - handle_finish_parse
  - handle_pragma_printfrr_ext
  - register_pragma_printfrr_ext
  - define_vars
  - plugin_init
  source_file: /src/frr/tools/gcc-plugins/frr-format.c
  types:
    enum:
    - enumerators:
      - name: frr_printf_format_type
      - name: format_type_error
        value: '-1'
      item_type: enum
      name: format_type
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/frr/tools/gcc-plugins/frr-format.c
    - enumerators:
      - name: CF_KIND_FORMAT
      - name: CF_KIND_FIELD_WIDTH
      - name: CF_KIND_FIELD_PRECISION
      item_type: enum
      name: format_specifier_kind
      pos:
   